pax_global_header00006660000000000000000000000064131632356030014514gustar00rootroot0000000000000052 comment=36bd17dda869775b1aed91e39767bb4e7359a983 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/000077500000000000000000000000001316323560300177675ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/.flake8000066400000000000000000000000341316323560300211370ustar00rootroot00000000000000[flake8] ignore = E129,W293 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/.gitignore000066400000000000000000000001561316323560300217610ustar00rootroot00000000000000*.pyc doc/build/ /dist MANIFEST .DS_Store */.DS_Store *.traj /build /ase.egg-info #editor backup files *.py~ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/.gitlab-ci.yml000066400000000000000000000025331316323560300224260ustar00rootroot00000000000000 python_2_7_tests: script: - apt-get update -qy - apt-get install -qy python-pip python-numpy python-scipy pyflakes libhdf5-dev libnetcdf-dev cython - pip install --upgrade setuptools - pip install --user netCDF4 - pwd - echo $HOME - cd .. - echo $PWD # using 'install from source' instructions - export PATH=$PATH:$CI_PROJECT_DIR/bin - echo $PATH - export PYTHONPATH=$CI_PROJECT_DIR - echo $PYTHONPATH # tests - python --version - ase info - ase test # pyflakes code check - cd $CI_PROJECT_DIR - PYTHONPATH=$PWD python ase/test/__init__.py python_3_tests: script: - apt-get update -qy - apt-get install -qy python3-pip python3-numpy python3-scipy pyflakes gettext libhdf5-dev libnetcdf-dev cython3 - pip3 install --upgrade setuptools - pip3 install --user netCDF4 # install ase into current python environment to ensure # any shebang lines in scripts point to python3 - pip3 install --user . # script path when installing with --user - export PATH=$HOME/.local/bin:$PATH # Running from a temporary directory to avoid import errors - mkdir -p /tmp/test/ && cd /tmp/test && echo $PWD # Run tests - python3 --version - ase info - ase test -v # pyflakes code check - cd $CI_PROJECT_DIR - python3 ase/test/__init__.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/CHANGELOG.rst000066400000000000000000000001521316323560300220060ustar00rootroot00000000000000Changelog ========= See what's new in ASE here: https://wiki.fysik.dtu.dk/ase/releasenotes.html ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/CONTRIBUTING.rst000066400000000000000000000001721316323560300224300ustar00rootroot00000000000000Contributing ============ See how to contribute here: https://wiki.fysik.dtu.dk/ase/development/contribute.html ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/COPYING000066400000000000000000000432541316323560300210320ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/COPYING.LESSER000066400000000000000000000636421316323560300220310ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. 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. 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. 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. 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. 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. 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. 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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! ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/LICENSE000066400000000000000000000011401316323560300207700ustar00rootroot00000000000000ASE 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. ASE 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 ASE. If not, see . ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/MANIFEST.in000066400000000000000000000005611316323560300215270ustar00rootroot00000000000000include MANIFEST.in include COPYING* LICENSE README.rst CONTRIBUTING.rst CHANGELOG.rst include requirements.txt include ase/spacegroup/spacegroup.dat include ase/collections/*.json include ase/db/static/* include ase/db/templates/* include ase/gui/po/ag.pot include ase/gui/po/Makefile include ase/gui/po/??_??/LC_MESSAGES/ag.po include ase/gui/po/??/LC_MESSAGES/ag.po ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/README.rst000066400000000000000000000035421316323560300214620ustar00rootroot00000000000000Atomic Simulation Environment ============================= ASE is a set of tools and Python modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations. Webpage: http://wiki.fysik.dtu.dk/ase Requirements ------------ * Python_ 2.7, 3.4-3.6 * NumPy_ (base N-dimensional array package) Optional: * SciPy_ (library for scientific computing) * For ASE's GUI: Matplotlib_ (2D Plotting) Installation ------------ Add ``~/ase`` to your $PYTHONPATH environment variable and add ``~/ase/bin`` to $PATH (assuming ``~/ase`` is where your ASE folder is). Testing ------- Please run the tests:: $ ase test # takes 1 min. and send us the output if there are failing tests. Contact ------- * Mailing list: ase-users_ * IRC_: #ase on freenode.net Please send us bug-reports, patches, code, ideas and questions. Example ------- Geometry optimization of hydrogen molecule with NWChem: >>> from ase import Atoms >>> from ase.optimize import BFGS >>> from ase.calculators.nwchem import NWChem >>> from ase.io import write >>> h2 = Atoms('H2', positions=[[0, 0, 0], [0, 0, 0.7]]) >>> h2.calc = NWChem(xc='PBE') >>> opt = BFGS(h2, trajectory='h2.traj') >>> opt.run(fmax=0.02) BFGS: 0 19:10:49 -31.435229 2.2691 BFGS: 1 19:10:50 -31.490773 0.3740 BFGS: 2 19:10:50 -31.492791 0.0630 BFGS: 3 19:10:51 -31.492848 0.0023 >>> write('H2.xyz', h2) >>> h2.get_potential_energy() # ASE's units are eV and Ang -31.492847800329216 :: $ ase gui h2.traj .. _Python: http://www.python.org/ .. _NumPy: http://docs.scipy.org/doc/numpy/reference/ .. _SciPy: http://docs.scipy.org/doc/scipy/reference/ .. _Matplotlib: http://matplotlib.org/ .. _ase-users: https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users .. _IRC: http://webchat.freenode.net/?randomnick=0&channels=ase ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/appveyor.yml000066400000000000000000000033031316323560300223560ustar00rootroot00000000000000environment: matrix: # For Python versions available on Appveyor, see # http://www.appveyor.com/docs/installed-software#python # Use Anaconda as SciPy is a headache with Windows. # 2.7 - PYTHON: "C:\\Miniconda" # 2.7 64-bit - PYTHON: "C:\\Miniconda-x64" # 3.4 - PYTHON: "C:\\Miniconda3" # 3.4 64-bit - PYTHON: "C:\\Miniconda3-x64" # 3.5 - PYTHON: "C:\\Miniconda35" # 3.5 64-bit - PYTHON: "C:\\Miniconda35-x64" # 3.6 - PYTHON: "C:\\Miniconda36" # 3.6 64-bit - PYTHON: "C:\\Miniconda36-x64" install: # Prepend chosen Python to the PATH of this build - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" # Check that we have the expected version and architecture for Python - "python --version" - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" # Install the conda supplied packages; msvc_runtime needed for py34 - "conda update -y conda" - "conda install -y pip wheel numpy scipy pyflakes msvc_runtime" # install ase into the current python - "echo %cd%" - "where pip" - "pip install ." build: off test_script: # run tests from temp dir so source tree doesn't interfere - "cd %TEMP%" - "ase info" - "ase test" after_test: # This step builds distribution. - "cd %APPVEYOR_BUILD_FOLDER%" # use pip as distutils doesn't implemet bdist_wheel - "pip wheel -w dist --no-deps ." artifacts: # bdist_wheel puts your built wheel in the dist directory - path: dist\* #on_success: # You can use this step to upload your artifacts to a public website. # See Appveyor's documentation for more details. Or you can simply # access your wheels from the Appveyor "artifacts" tab for your build. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/000077500000000000000000000000001316323560300205375ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/__init__.py000066400000000000000000000012121316323560300226440ustar00rootroot00000000000000# Copyright 2008, 2009 CAMd # (see accompanying license files for details). """Atomic Simulation Environment.""" from distutils.version import LooseVersion import numpy as np from ase.atom import Atom from ase.atoms import Atoms __all__ = ['Atoms', 'Atom'] __version__ = '3.15.0' # import ase.parallel early to avoid circular import problems when # ase.parallel does "from gpaw.mpi import world": import ase.parallel # noqa ase.parallel # silence pyflakes if LooseVersion(np.__version__) < '1.9': # Make isinstance(x, numbers.Integral) work also for np.intxx: import numbers numbers.Integral.register(np.integer) del numbers ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/__main__.py000066400000000000000000000000451316323560300226300ustar00rootroot00000000000000from ase.cli.main import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/atom.py000066400000000000000000000143211316323560300220520ustar00rootroot00000000000000"""This module defines the Atom object.""" import numpy as np from ase.data import atomic_numbers, chemical_symbols, atomic_masses from ase.utils import basestring # Singular, plural, default value: names = {'position': ('positions', np.zeros(3)), 'number': ('numbers', 0), 'tag': ('tags', 0), 'momentum': ('momenta', np.zeros(3)), 'mass': ('masses', None), 'magmom': ('initial_magmoms', 0.0), 'charge': ('initial_charges', 0.0)} def atomproperty(name, doc): """Helper function to easily create Atom attribute property.""" def getter(self): return self.get(name) def setter(self, value): self.set(name, value) def deleter(self): self.delete(name) return property(getter, setter, deleter, doc) def abcproperty(index): """Helper function to easily create Atom ABC-property.""" def getter(self): spos = self.atoms.get_scaled_positions() return spos[self.index][index] def setter(self, value): spos = self.atoms.get_scaled_positions() spos[self.index][index] = value self.atoms.set_scaled_positions(spos) return property(getter, setter, doc='ABC'[index] + '-coordinate') def xyzproperty(index): """Helper function to easily create Atom XYZ-property.""" def getter(self): return self.position[index] def setter(self, value): self.position[index] = value return property(getter, setter, doc='XYZ'[index] + '-coordinate') class Atom(object): """Class for representing a single atom. Parameters: symbol: str or int Can be a chemical symbol (str) or an atomic number (int). position: sequence of 3 floats Atomic position. tag: int Special purpose tag. momentum: sequence of 3 floats Momentum for atom. mass: float Atomic mass in atomic units. magmom: float or 3 floats Magnetic moment. charge: float Atomic charge. """ __slots__ = ['data', 'atoms', 'index'] def __init__(self, symbol='X', position=(0, 0, 0), tag=None, momentum=None, mass=None, magmom=None, charge=None, atoms=None, index=None): self.data = d = {} if atoms is None: # This atom is not part of any Atoms object: if isinstance(symbol, basestring): d['number'] = atomic_numbers[symbol] else: d['number'] = symbol d['position'] = np.array(position, float) d['tag'] = tag if momentum is not None: momentum = np.array(momentum, float) d['momentum'] = momentum d['mass'] = mass if magmom is not None: magmom = np.array(magmom, float) d['magmom'] = magmom d['charge'] = charge self.index = index self.atoms = atoms def __repr__(self): s = "Atom('%s', %s" % (self.symbol, list(self.position)) for name in ['tag', 'momentum', 'mass', 'magmom', 'charge']: value = self.get_raw(name) if value is not None: if isinstance(value, np.ndarray): value = value.tolist() s += ', %s=%s' % (name, value) if self.atoms is None: s += ')' else: s += ', index=%d)' % self.index return s def cut_reference_to_atoms(self): """Cut reference to atoms object.""" for name in names: self.data[name] = self.get_raw(name) self.index = None self.atoms = None def get_raw(self, name): """Get name attribute, return None if not explicitely set.""" if name == 'symbol': return chemical_symbols[self.get_raw('number')] if self.atoms is None: return self.data[name] plural = names[name][0] if plural in self.atoms.arrays: return self.atoms.arrays[plural][self.index] else: return None def get(self, name): """Get name attribute, return default if not explicitely set.""" value = self.get_raw(name) if value is None: if name == 'mass': value = atomic_masses[self.number] else: value = names[name][1] return value def set(self, name, value): """Set name attribute to value.""" if name == 'symbol': name = 'number' value = atomic_numbers[value] if self.atoms is None: assert name in names self.data[name] = value else: plural, default = names[name] if plural in self.atoms.arrays: array = self.atoms.arrays[plural] if name == 'magmom' and array.ndim == 2: assert len(value) == 3 array[self.index] = value else: if name == 'magmom' and np.asarray(value).ndim == 1: array = np.zeros((len(self.atoms), 3)) elif name == 'mass': array = self.atoms.get_masses() else: default = np.asarray(default) array = np.zeros((len(self.atoms),) + default.shape, default.dtype) array[self.index] = value self.atoms.new_array(plural, array) def delete(self, name): """Delete name attribute.""" assert self.atoms is None assert name not in ['number', 'symbol', 'position'] self.data[name] = None symbol = atomproperty('symbol', 'Chemical symbol') number = atomproperty('number', 'Atomic number') position = atomproperty('position', 'XYZ-coordinates') tag = atomproperty('tag', 'Integer tag') momentum = atomproperty('momentum', 'XYZ-momentum') mass = atomproperty('mass', 'Atomic mass') magmom = atomproperty('magmom', 'Initial magnetic moment') charge = atomproperty('charge', 'Initial atomic charge') x = xyzproperty(0) y = xyzproperty(1) z = xyzproperty(2) scaled_position = atomproperty('scaled_position', 'ABC-coordinates') a = abcproperty(0) b = abcproperty(1) c = abcproperty(2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/atoms.py000066400000000000000000002043171316323560300222430ustar00rootroot00000000000000# Copyright 2008, 2009 CAMd # (see accompanying license files for details). """Definition of the Atoms class. This module defines the central object in the ASE package: the Atoms object. """ import numbers import warnings from math import cos, sin, pi import copy import numpy as np import ase.units as units from ase.atom import Atom from ase.constraints import FixConstraint, FixBondLengths from ase.data import atomic_numbers, chemical_symbols, atomic_masses from ase.utils import basestring, formula_hill, formula_metal from ase.geometry import (wrap_positions, find_mic, cellpar_to_cell, cell_to_cellpar, complete_cell, is_orthorhombic) class Atoms(object): """Atoms object. The Atoms object can represent an isolated molecule, or a periodically repeated structure. It has a unit cell and there may be periodic boundary conditions along any of the three unit cell axes. Information about the atoms (atomic numbers and position) is stored in ndarrays. Optionally, there can be information about tags, momenta, masses, magnetic moments and charges. In order to calculate energies, forces and stresses, a calculator object has to attached to the atoms object. Parameters: symbols: str (formula) or list of str Can be a string formula, a list of symbols or a list of Atom objects. Examples: 'H2O', 'COPt12', ['H', 'H', 'O'], [Atom('Ne', (x, y, z)), ...]. positions: list of xyz-positions Atomic positions. Anything that can be converted to an ndarray of shape (n, 3) will do: [(x1,y1,z1), (x2,y2,z2), ...]. scaled_positions: list of scaled-positions Like positions, but given in units of the unit cell. Can not be set at the same time as positions. numbers: list of int Atomic numbers (use only one of symbols/numbers). tags: list of int Special purpose tags. momenta: list of xyz-momenta Momenta for all atoms. masses: list of float Atomic masses in atomic units. magmoms: list of float or list of xyz-values Magnetic moments. Can be either a single value for each atom for collinear calculations or three numbers for each atom for non-collinear calculations. charges: list of float Initial atomic charges. cell: 3x3 matrix or length 3 or 6 vector Unit cell vectors. Can also be given as just three numbers for orthorhombic cells, or 6 numbers, where first three are lengths of unit cell vectors, and the other three are angles between them (in degrees), in following order: [len(a), len(b), len(c), angle(b,c), angle(a,c), angle(a,b)]. First vector will lie in x-direction, second in xy-plane, and the third one in z-positive subspace. Default value: [0, 0, 0]. celldisp: Vector Unit cell displacement vector. To visualize a displaced cell around the center of mass of a Systems of atoms. Default value = (0,0,0) pbc: one or three bool Periodic boundary conditions flags. Examples: True, False, 0, 1, (1, 1, 0), (True, False, False). Default value: False. constraint: constraint object(s) Used for applying one or more constraints during structure optimization. calculator: calculator object Used to attach a calculator for calculating energies and atomic forces. info: dict of key-value pairs Dictionary of key-value pairs with additional information about the system. The following keys may be used by ase: - spacegroup: Spacegroup instance - unit_cell: 'conventional' | 'primitive' | int | 3 ints - adsorbate_info: Information about special adsorption sites Items in the info attribute survives copy and slicing and can be stored in and retrieved from trajectory files given that the key is a string, the value is JSON-compatible and, if the value is a user-defined object, its base class is importable. One should not make any assumptions about the existence of keys. Examples: These three are equivalent: >>> d = 1.104 # N2 bondlength >>> a = Atoms('N2', [(0, 0, 0), (0, 0, d)]) >>> a = Atoms(numbers=[7, 7], positions=[(0, 0, 0), (0, 0, d)]) >>> a = Atoms([Atom('N', (0, 0, 0)), Atom('N', (0, 0, d))]) FCC gold: >>> a = 4.05 # Gold lattice constant >>> b = a / 2 >>> fcc = Atoms('Au', ... cell=[(0, b, b), (b, 0, b), (b, b, 0)], ... pbc=True) Hydrogen wire: >>> d = 0.9 # H-H distance >>> h = Atoms('H', positions=[(0, 0, 0)], ... cell=(d, 0, 0), ... pbc=(1, 0, 0)) """ def __init__(self, symbols=None, positions=None, numbers=None, tags=None, momenta=None, masses=None, magmoms=None, charges=None, scaled_positions=None, cell=None, pbc=None, celldisp=None, constraint=None, calculator=None, info=None): atoms = None if hasattr(symbols, 'get_positions'): atoms = symbols symbols = None elif (isinstance(symbols, (list, tuple)) and len(symbols) > 0 and isinstance(symbols[0], Atom)): # Get data from a list or tuple of Atom objects: data = [[atom.get_raw(name) for atom in symbols] for name in ['position', 'number', 'tag', 'momentum', 'mass', 'magmom', 'charge']] atoms = self.__class__(None, *data) symbols = None if atoms is not None: # Get data from another Atoms object: if scaled_positions is not None: raise NotImplementedError if symbols is None and numbers is None: numbers = atoms.get_atomic_numbers() if positions is None: positions = atoms.get_positions() if tags is None and atoms.has('tags'): tags = atoms.get_tags() if momenta is None and atoms.has('momenta'): momenta = atoms.get_momenta() if magmoms is None and atoms.has('initial_magmoms'): magmoms = atoms.get_initial_magnetic_moments() if masses is None and atoms.has('masses'): masses = atoms.get_masses() if charges is None and atoms.has('initial_charges'): charges = atoms.get_initial_charges() if cell is None: cell = atoms.get_cell() if celldisp is None: celldisp = atoms.get_celldisp() if pbc is None: pbc = atoms.get_pbc() if constraint is None: constraint = [c.copy() for c in atoms.constraints] if calculator is None: calculator = atoms.get_calculator() if info is None: info = copy.deepcopy(atoms.info) self.arrays = {} if symbols is None: if numbers is None: if positions is not None: natoms = len(positions) elif scaled_positions is not None: natoms = len(scaled_positions) else: natoms = 0 numbers = np.zeros(natoms, int) self.new_array('numbers', numbers, int) else: if numbers is not None: raise ValueError( 'Use only one of "symbols" and "numbers".') else: self.new_array('numbers', symbols2numbers(symbols), int) if cell is None: cell = np.zeros((3, 3)) self.set_cell(cell) if celldisp is None: celldisp = np.zeros(shape=(3, 1)) self.set_celldisp(celldisp) if positions is None: if scaled_positions is None: positions = np.zeros((len(self.arrays['numbers']), 3)) else: assert self.number_of_lattice_vectors == 3 positions = np.dot(scaled_positions, self._cell) else: if scaled_positions is not None: raise RuntimeError('Both scaled and cartesian positions set!') self.new_array('positions', positions, float, (3,)) self.set_constraint(constraint) self.set_tags(default(tags, 0)) self.set_masses(default(masses, None)) self.set_initial_magnetic_moments(default(magmoms, 0.0)) self.set_initial_charges(default(charges, 0.0)) if pbc is None: pbc = False self.set_pbc(pbc) self.set_momenta(default(momenta, (0.0, 0.0, 0.0)), apply_constraint=False) if info is None: self.info = {} else: self.info = dict(info) self.set_calculator(calculator) def set_calculator(self, calc=None): """Attach calculator object.""" self._calc = calc if hasattr(calc, 'set_atoms'): calc.set_atoms(self) def get_calculator(self): """Get currently attached calculator object.""" return self._calc def _del_calculator(self): self._calc = None calc = property(get_calculator, set_calculator, _del_calculator, doc='Calculator object.') @property def number_of_lattice_vectors(self): """Number of (non-zero) lattice vectors.""" return self._cell.any(1).sum() def set_constraint(self, constraint=None): """Apply one or more constrains. The *constraint* argument must be one constraint object or a list of constraint objects.""" if constraint is None: self._constraints = [] else: if isinstance(constraint, list): self._constraints = constraint elif isinstance(constraint, tuple): self._constraints = list(constraint) else: self._constraints = [constraint] def _get_constraints(self): return self._constraints def _del_constraints(self): self._constraints = [] constraints = property(_get_constraints, set_constraint, _del_constraints, 'Constraints of the atoms.') def set_cell(self, cell, scale_atoms=False): """Set unit cell vectors. Parameters: cell: 3x3 matrix or length 3 or 6 vector Unit cell. A 3x3 matrix (the three unit cell vectors) or just three numbers for an orthorhombic cell. Another option is 6 numbers, which describes unit cell with lengths of unit cell vectors and with angles between them (in degrees), in following order: [len(a), len(b), len(c), angle(b,c), angle(a,c), angle(a,b)]. First vector will lie in x-direction, second in xy-plane, and the third one in z-positive subspace. scale_atoms: bool Fix atomic positions or move atoms with the unit cell? Default behavior is to *not* move the atoms (scale_atoms=False). Examples: Two equivalent ways to define an orthorhombic cell: >>> atoms = Atoms('He') >>> a, b, c = 7, 7.5, 8 >>> atoms.set_cell([a, b, c]) >>> atoms.set_cell([(a, 0, 0), (0, b, 0), (0, 0, c)]) FCC unit cell: >>> atoms.set_cell([(0, b, b), (b, 0, b), (b, b, 0)]) Hexagonal unit cell: >>> atoms.set_cell([a, a, c, 90, 90, 120]) Rhombohedral unit cell: >>> alpha = 77 >>> atoms.set_cell([a, a, a, alpha, alpha, alpha]) """ cell = np.array(cell, float) if cell.shape == (3,): cell = np.diag(cell) elif cell.shape == (6,): cell = cellpar_to_cell(cell) elif cell.shape != (3, 3): raise ValueError('Cell must be length 3 sequence, length 6 ' 'sequence or 3x3 matrix!') if scale_atoms: M = np.linalg.solve(self.get_cell(complete=True), complete_cell(cell)) self.positions[:] = np.dot(self.positions, M) self._cell = cell def set_celldisp(self, celldisp): """Set the unit cell displacement vectors.""" celldisp = np.array(celldisp, float) self._celldisp = celldisp def get_celldisp(self): """Get the unit cell displacement vectors.""" return self._celldisp.copy() def get_cell(self, complete=False): """Get the three unit cell vectors as a 3x3 ndarray.""" if complete: return complete_cell(self._cell) else: return self._cell.copy() def get_cell_lengths_and_angles(self): """Get unit cell parameters. Sequence of 6 numbers. First three are unit cell vector lengths and second three are angles between them:: [len(a), len(b), len(c), angle(a,b), angle(a,c), angle(b,c)] in degrees. """ return cell_to_cellpar(self._cell) def get_reciprocal_cell(self): """Get the three reciprocal lattice vectors as a 3x3 ndarray. Note that the commonly used factor of 2 pi for Fourier transforms is not included here.""" rec_unit_cell = np.linalg.pinv(self.get_cell()).transpose() return rec_unit_cell def set_pbc(self, pbc): """Set periodic boundary condition flags.""" if isinstance(pbc, int): pbc = (pbc,) * 3 self._pbc = np.array(pbc, bool) def get_pbc(self): """Get periodic boundary condition flags.""" return self._pbc.copy() def new_array(self, name, a, dtype=None, shape=None): """Add new array. If *shape* is not *None*, the shape of *a* will be checked.""" if dtype is not None: a = np.array(a, dtype, order='C') if len(a) == 0 and shape is not None: a.shape = (-1,) + shape else: if not a.flags['C_CONTIGUOUS']: a = np.ascontiguousarray(a) else: a = a.copy() if name in self.arrays: raise RuntimeError for b in self.arrays.values(): if len(a) != len(b): raise ValueError('Array has wrong length: %d != %d.' % (len(a), len(b))) break if shape is not None and a.shape[1:] != shape: raise ValueError('Array has wrong shape %s != %s.' % (a.shape, (a.shape[0:1] + shape))) self.arrays[name] = a def get_array(self, name, copy=True): """Get an array. Returns a copy unless the optional argument copy is false. """ if copy: return self.arrays[name].copy() else: return self.arrays[name] def set_array(self, name, a, dtype=None, shape=None): """Update array. If *shape* is not *None*, the shape of *a* will be checked. If *a* is *None*, then the array is deleted.""" b = self.arrays.get(name) if b is None: if a is not None: self.new_array(name, a, dtype, shape) else: if a is None: del self.arrays[name] else: a = np.asarray(a) if a.shape != b.shape: raise ValueError('Array has wrong shape %s != %s.' % (a.shape, b.shape)) b[:] = a def has(self, name): """Check for existence of array. name must be one of: 'tags', 'momenta', 'masses', 'initial_magmoms', 'initial_charges'.""" # XXX extend has to calculator properties return name in self.arrays def set_atomic_numbers(self, numbers): """Set atomic numbers.""" self.set_array('numbers', numbers, int, ()) def get_atomic_numbers(self): """Get integer array of atomic numbers.""" return self.arrays['numbers'].copy() def get_chemical_symbols(self): """Get list of chemical symbol strings.""" return [chemical_symbols[Z] for Z in self.arrays['numbers']] def set_chemical_symbols(self, symbols): """Set chemical symbols.""" self.set_array('numbers', symbols2numbers(symbols), int, ()) def get_chemical_formula(self, mode='hill'): """Get the chemial formula as a string based on the chemical symbols. Parameters: mode: str There are three different modes available: 'all': The list of chemical symbols are contracted to at string, e.g. ['C', 'H', 'H', 'H', 'O', 'H'] becomes 'CHHHOH'. 'reduce': The same as 'all' where repeated elements are contracted to a single symbol and a number, e.g. 'CHHHOCHHH' is reduced to 'CH3OCH3'. 'hill': The list of chemical symbols are contracted to a string following the Hill notation (alphabetical order with C and H first), e.g. 'CHHHOCHHH' is reduced to 'C2H6O' and 'SOOHOHO' to 'H2O4S'. This is default. 'metal': The list of checmical symbols (alphabetical metals, and alphabetical non-metals) """ if len(self) == 0: return '' if mode == 'reduce': numbers = self.get_atomic_numbers() n = len(numbers) changes = np.concatenate(([0], np.arange(1, n)[numbers[1:] != numbers[:-1]])) symbols = [chemical_symbols[e] for e in numbers[changes]] counts = np.append(changes[1:], n) - changes formula = '' for s, c in zip(symbols, counts): formula += s if c > 1: formula += str(c) elif mode == 'hill': formula = formula_hill(self.get_atomic_numbers()) elif mode == 'all': numbers = self.get_atomic_numbers() symbols = [chemical_symbols[n] for n in numbers] formula = '' for s in symbols: formula += s elif mode == 'metal': formula = formula_metal(self.get_atomic_numbers()) else: raise ValueError("Use mode = 'all', 'reduce' or 'hill'.") return formula def set_tags(self, tags): """Set tags for all atoms. If only one tag is supplied, it is applied to all atoms.""" if isinstance(tags, int): tags = [tags] * len(self) self.set_array('tags', tags, int, ()) def get_tags(self): """Get integer array of tags.""" if 'tags' in self.arrays: return self.arrays['tags'].copy() else: return np.zeros(len(self), int) def set_momenta(self, momenta, apply_constraint=True): """Set momenta.""" if (apply_constraint and len(self.constraints) > 0 and momenta is not None): momenta = np.array(momenta) # modify a copy for constraint in self.constraints: if hasattr(constraint, 'adjust_momenta'): constraint.adjust_momenta(self, momenta) self.set_array('momenta', momenta, float, (3,)) def set_velocities(self, velocities): """Set the momenta by specifying the velocities.""" self.set_momenta(self.get_masses()[:, np.newaxis] * velocities) def get_momenta(self): """Get array of momenta.""" if 'momenta' in self.arrays: return self.arrays['momenta'].copy() else: return np.zeros((len(self), 3)) def set_masses(self, masses='defaults'): """Set atomic masses. The array masses should contain a list of masses. In case the masses argument is not given or for those elements of the masses list that are None, standard values are set.""" if isinstance(masses, basestring) and masses == 'defaults': masses = atomic_masses[self.arrays['numbers']] elif isinstance(masses, (list, tuple)): newmasses = [] for m, Z in zip(masses, self.arrays['numbers']): if m is None: newmasses.append(atomic_masses[Z]) else: newmasses.append(m) masses = newmasses self.set_array('masses', masses, float, ()) def get_masses(self): """Get array of masses.""" if 'masses' in self.arrays: return self.arrays['masses'].copy() else: return atomic_masses[self.arrays['numbers']] def set_initial_magnetic_moments(self, magmoms=None): """Set the initial magnetic moments. Use either one or three numbers for every atom (collinear or non-collinear spins).""" if magmoms is None: self.set_array('initial_magmoms', None) else: magmoms = np.asarray(magmoms) self.set_array('initial_magmoms', magmoms, float, magmoms.shape[1:]) def get_initial_magnetic_moments(self): """Get array of initial magnetic moments.""" if 'initial_magmoms' in self.arrays: return self.arrays['initial_magmoms'].copy() else: return np.zeros(len(self)) def get_magnetic_moments(self): """Get calculated local magnetic moments.""" if self._calc is None: raise RuntimeError('Atoms object has no calculator.') return self._calc.get_magnetic_moments(self) def get_magnetic_moment(self): """Get calculated total magnetic moment.""" if self._calc is None: raise RuntimeError('Atoms object has no calculator.') return self._calc.get_magnetic_moment(self) def set_initial_charges(self, charges=None): """Set the initial charges.""" if charges is None: self.set_array('initial_charges', None) else: self.set_array('initial_charges', charges, float, ()) def get_initial_charges(self): """Get array of initial charges.""" if 'initial_charges' in self.arrays: return self.arrays['initial_charges'].copy() else: return np.zeros(len(self)) def get_charges(self): """Get calculated charges.""" if self._calc is None: raise RuntimeError('Atoms object has no calculator.') try: return self._calc.get_charges(self) except AttributeError: from ase.calculators.calculator import PropertyNotImplementedError raise PropertyNotImplementedError def set_positions(self, newpositions, apply_constraint=True): """Set positions, honoring any constraints. To ignore constraints, use *apply_constraint=False*.""" if self.constraints and apply_constraint: newpositions = np.array(newpositions, float) for constraint in self.constraints: constraint.adjust_positions(self, newpositions) self.set_array('positions', newpositions, shape=(3,)) def get_positions(self, wrap=False): """Get array of positions. If wrap==True, wraps atoms back into unit cell. """ if wrap: scaled = self.get_scaled_positions() return np.dot(scaled, self._cell) else: return self.arrays['positions'].copy() def get_potential_energy(self, force_consistent=False, apply_constraint=True): """Calculate potential energy. Ask the attached calculator to calculate the potential energy and apply constraints. Use *apply_constraint=False* to get the raw forces. When supported by the calculator, either the energy extrapolated to zero Kelvin or the energy consistent with the forces (the free energy) can be returned. """ if self._calc is None: raise RuntimeError('Atoms object has no calculator.') if force_consistent: energy = self._calc.get_potential_energy( self, force_consistent=force_consistent) else: energy = self._calc.get_potential_energy(self) if apply_constraint: for constraint in self.constraints: if hasattr(constraint, 'adjust_potential_energy'): energy += constraint.adjust_potential_energy(self) return energy def get_potential_energies(self): """Calculate the potential energies of all the atoms. Only available with calculators supporting per-atom energies (e.g. classical potentials). """ if self._calc is None: raise RuntimeError('Atoms object has no calculator.') return self._calc.get_potential_energies(self) def get_kinetic_energy(self): """Get the kinetic energy.""" momenta = self.arrays.get('momenta') if momenta is None: return 0.0 return 0.5 * np.vdot(momenta, self.get_velocities()) def get_velocities(self): """Get array of velocities.""" momenta = self.arrays.get('momenta') if momenta is None: return None m = self.arrays.get('masses') if m is None: m = atomic_masses[self.arrays['numbers']] return momenta / m.reshape(-1, 1) def get_total_energy(self): """Get the total energy - potential plus kinetic energy.""" return self.get_potential_energy() + self.get_kinetic_energy() def get_forces(self, apply_constraint=True, md=False): """Calculate atomic forces. Ask the attached calculator to calculate the forces and apply constraints. Use *apply_constraint=False* to get the raw forces. For molecular dynamics (md=True) we don't apply the constraint to the forces but to the momenta.""" if self._calc is None: raise RuntimeError('Atoms object has no calculator.') forces = self._calc.get_forces(self) if apply_constraint: # We need a special md flag here because for MD we want # to skip real constraints but include special "constraints" # Like Hookean. for constraint in self.constraints: if not md or hasattr(constraint, 'adjust_potential_energy'): constraint.adjust_forces(self, forces) return forces def get_stress(self, voigt=True): """Calculate stress tensor. Returns an array of the six independent components of the symmetric stress tensor, in the traditional Voigt order (xx, yy, zz, yz, xz, xy) or as a 3x3 matrix. Default is Voigt order. """ if self._calc is None: raise RuntimeError('Atoms object has no calculator.') stress = self._calc.get_stress(self) shape = stress.shape if shape == (3, 3): warnings.warn('Converting 3x3 stress tensor from %s ' % self._calc.__class__.__name__ + 'calculator to the required Voigt form.') stress = np.array([stress[0, 0], stress[1, 1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1]]) else: assert shape == (6,) if voigt: return stress else: xx, yy, zz, yz, xz, xy = stress return np.array([(xx, xy, xz), (xy, yy, yz), (xz, yz, zz)]) def get_stresses(self): """Calculate the stress-tensor of all the atoms. Only available with calculators supporting per-atom energies and stresses (e.g. classical potentials). Even for such calculators there is a certain arbitrariness in defining per-atom stresses. """ if self._calc is None: raise RuntimeError('Atoms object has no calculator.') return self._calc.get_stresses(self) def get_dipole_moment(self): """Calculate the electric dipole moment for the atoms object. Only available for calculators which has a get_dipole_moment() method.""" if self._calc is None: raise RuntimeError('Atoms object has no calculator.') return self._calc.get_dipole_moment(self) def copy(self): """Return a copy.""" atoms = self.__class__(cell=self._cell, pbc=self._pbc, info=self.info) atoms.arrays = {} for name, a in self.arrays.items(): atoms.arrays[name] = a.copy() atoms.constraints = copy.deepcopy(self.constraints) return atoms def __len__(self): return len(self.arrays['positions']) def get_number_of_atoms(self): """Returns the global number of atoms in a distributed-atoms parallel simulation. DO NOT USE UNLESS YOU KNOW WHAT YOU ARE DOING! Equivalent to len(atoms) in the standard ASE Atoms class. You should normally use len(atoms) instead. This function's only purpose is to make compatibility between ASE and Asap easier to maintain by having a few places in ASE use this function instead. It is typically only when counting the global number of degrees of freedom or in similar situations. """ return len(self) def __repr__(self): tokens = [] N = len(self) if N <= 60: symbols = self.get_chemical_formula('reduce') else: symbols = self.get_chemical_formula('hill') tokens.append("symbols='{0}'".format(symbols)) if self.pbc.any() and not self.pbc.all(): tokens.append('pbc={0}'.format(self._pbc.tolist())) else: tokens.append('pbc={0}'.format(self._pbc[0])) if self._cell.any(): if is_orthorhombic(self._cell): cell = self._cell.diagonal().tolist() else: cell = self._cell.tolist() tokens.append('cell={0}'.format(cell)) for name in sorted(self.arrays): if name in ['numbers', 'positions']: continue tokens.append('{0}=...'.format(name)) if self.constraints: if len(self.constraints) == 1: constraint = self.constraints[0] else: constraint = self.constraints tokens.append('constraint={0}'.format(repr(constraint))) if self._calc is not None: tokens.append('calculator={0}(...)' .format(self._calc.__class__.__name__)) return '{0}({1})'.format(self.__class__.__name__, ', '.join(tokens)) def __add__(self, other): atoms = self.copy() atoms += other return atoms def extend(self, other): """Extend atoms object by appending atoms from *other*.""" if isinstance(other, Atom): other = self.__class__([other]) n1 = len(self) n2 = len(other) for name, a1 in self.arrays.items(): a = np.zeros((n1 + n2,) + a1.shape[1:], a1.dtype) a[:n1] = a1 if name == 'masses': a2 = other.get_masses() else: a2 = other.arrays.get(name) if a2 is not None: a[n1:] = a2 self.arrays[name] = a for name, a2 in other.arrays.items(): if name in self.arrays: continue a = np.empty((n1 + n2,) + a2.shape[1:], a2.dtype) a[n1:] = a2 if name == 'masses': a[:n1] = self.get_masses()[:n1] else: a[:n1] = 0 self.set_array(name, a) return self __iadd__ = extend def append(self, atom): """Append atom to end.""" self.extend(self.__class__([atom])) def __getitem__(self, i): """Return a subset of the atoms. i -- scalar integer, list of integers, or slice object describing which atoms to return. If i is a scalar, return an Atom object. If i is a list or a slice, return an Atoms object with the same cell, pbc, and other associated info as the original Atoms object. The indices of the constraints will be shuffled so that they match the indexing in the subset returned. """ if isinstance(i, numbers.Integral): natoms = len(self) if i < -natoms or i >= natoms: raise IndexError('Index out of range.') return Atom(atoms=self, index=i) elif isinstance(i, list) and len(i) > 0: # Make sure a list of booleans will work correctly and not be # interpreted at 0 and 1 indices. i = np.array(i) import copy conadd = [] # Constraints need to be deepcopied, but only the relevant ones. for con in copy.deepcopy(self.constraints): if isinstance(con, (FixConstraint, FixBondLengths)): try: con.index_shuffle(self, i) conadd.append(con) except IndexError: pass atoms = self.__class__(cell=self._cell, pbc=self._pbc, info=self.info, # should be communicated to the slice as well celldisp=self._celldisp) # TODO: Do we need to shuffle indices in adsorbate_info too? atoms.arrays = {} for name, a in self.arrays.items(): atoms.arrays[name] = a[i].copy() atoms.constraints = conadd return atoms def __delitem__(self, i): from ase.constraints import FixAtoms for c in self._constraints: if not isinstance(c, FixAtoms): raise RuntimeError('Remove constraint using set_constraint() ' 'before deleting atoms.') if isinstance(i, list) and len(i) > 0: # Make sure a list of booleans will work correctly and not be # interpreted at 0 and 1 indices. i = np.array(i) if len(self._constraints) > 0: n = len(self) i = np.arange(n)[i] if isinstance(i, int): i = [i] constraints = [] for c in self._constraints: c = c.delete_atoms(i, n) if c is not None: constraints.append(c) self.constraints = constraints mask = np.ones(len(self), bool) mask[i] = False for name, a in self.arrays.items(): self.arrays[name] = a[mask] def pop(self, i=-1): """Remove and return atom at index *i* (default last).""" atom = self[i] atom.cut_reference_to_atoms() del self[i] return atom def __imul__(self, m): """In-place repeat of atoms.""" if isinstance(m, int): m = (m, m, m) for x, vec in zip(m, self._cell): if x != 1 and not vec.any(): raise ValueError('Cannot repeat along undefined lattice ' 'vector') M = np.product(m) n = len(self) for name, a in self.arrays.items(): self.arrays[name] = np.tile(a, (M,) + (1,) * (len(a.shape) - 1)) positions = self.arrays['positions'] i0 = 0 for m0 in range(m[0]): for m1 in range(m[1]): for m2 in range(m[2]): i1 = i0 + n positions[i0:i1] += np.dot((m0, m1, m2), self._cell) i0 = i1 if self.constraints is not None: self.constraints = [c.repeat(m, n) for c in self.constraints] self._cell = np.array([m[c] * self._cell[c] for c in range(3)]) return self def repeat(self, rep): """Create new repeated atoms object. The *rep* argument should be a sequence of three positive integers like *(2,3,1)* or a single integer (*r*) equivalent to *(r,r,r)*.""" atoms = self.copy() atoms *= rep return atoms __mul__ = repeat def translate(self, displacement): """Translate atomic positions. The displacement argument can be a float an xyz vector or an nx3 array (where n is the number of atoms).""" self.arrays['positions'] += np.array(displacement) def center(self, vacuum=None, axis=(0, 1, 2), about=None): """Center atoms in unit cell. Centers the atoms in the unit cell, so there is the same amount of vacuum on all sides. vacuum: float (default: None) If specified adjust the amount of vacuum when centering. If vacuum=10.0 there will thus be 10 Angstrom of vacuum on each side. axis: int or sequence of ints Axis or axes to act on. Default: Act on all axes. about: float or array (default: None) If specified, center the atoms about . I.e., about=(0., 0., 0.) (or just "about=0.", interpreted identically), to center about the origin. """ # Find the orientations of the faces of the unit cell cell = self.get_cell(complete=True) dirs = np.zeros_like(cell) for i in range(3): dirs[i] = np.cross(cell[i - 1], cell[i - 2]) dirs[i] /= np.sqrt(np.dot(dirs[i], dirs[i])) # normalize if np.dot(dirs[i], cell[i]) < 0.0: dirs[i] *= -1 if isinstance(axis, int): axes = (axis,) else: axes = axis # if vacuum and any(self.pbc[x] for x in axes): # warnings.warn( # 'You are adding vacuum along a periodic direction!') # Now, decide how much each basis vector should be made longer p = self.arrays['positions'] longer = np.zeros(3) shift = np.zeros(3) for i in axes: p0 = np.dot(p, dirs[i]).min() if len(p) else 0 p1 = np.dot(p, dirs[i]).max() if len(p) else 0 height = np.dot(cell[i], dirs[i]) if vacuum is not None: lng = (p1 - p0 + 2 * vacuum) - height else: lng = 0.0 # Do not change unit cell size! top = lng + height - p1 shf = 0.5 * (top - p0) cosphi = np.dot(cell[i], dirs[i]) / np.sqrt(np.dot(cell[i], cell[i])) longer[i] = lng / cosphi shift[i] = shf / cosphi # Now, do it! translation = np.zeros(3) for i in axes: nowlen = np.sqrt(np.dot(cell[i], cell[i])) if vacuum is not None or self._cell[i].any(): self._cell[i] = cell[i] * (1 + longer[i] / nowlen) translation += shift[i] * cell[i] / nowlen self.arrays['positions'] += translation # Optionally, translate to center about a point in space. if about is not None: for vector in self.cell: self.positions -= vector / 2.0 self.positions += about def get_center_of_mass(self, scaled=False): """Get the center of mass. If scaled=True the center of mass in scaled coordinates is returned.""" m = self.get_masses() com = np.dot(m, self.arrays['positions']) / m.sum() if scaled: return np.linalg.solve(self._cell.T, com) else: return com def get_moments_of_inertia(self, vectors=False): """Get the moments of inertia along the principal axes. The three principal moments of inertia are computed from the eigenvalues of the symmetric inertial tensor. Periodic boundary conditions are ignored. Units of the moments of inertia are amu*angstrom**2. """ com = self.get_center_of_mass() positions = self.get_positions() positions -= com # translate center of mass to origin masses = self.get_masses() # Initialize elements of the inertial tensor I11 = I22 = I33 = I12 = I13 = I23 = 0.0 for i in range(len(self)): x, y, z = positions[i] m = masses[i] I11 += m * (y ** 2 + z ** 2) I22 += m * (x ** 2 + z ** 2) I33 += m * (x ** 2 + y ** 2) I12 += -m * x * y I13 += -m * x * z I23 += -m * y * z I = np.array([[I11, I12, I13], [I12, I22, I23], [I13, I23, I33]]) evals, evecs = np.linalg.eigh(I) if vectors: return evals, evecs.transpose() else: return evals def get_angular_momentum(self): """Get total angular momentum with respect to the center of mass.""" com = self.get_center_of_mass() positions = self.get_positions() positions -= com # translate center of mass to origin return np.cross(positions, self.get_momenta()).sum(0) def rotate(self, a, v=None, center=(0, 0, 0), rotate_cell=False): """Rotate atoms based on a vector and an angle, or two vectors. Parameters: a = None: Angle that the atoms is rotated around the vecor 'v'. 'a' can also be a vector and then 'a' is rotated into 'v'. v: Vector to rotate the atoms around. Vectors can be given as strings: 'x', '-x', 'y', ... . center = (0, 0, 0): The center is kept fixed under the rotation. Use 'COM' to fix the center of mass, 'COP' to fix the center of positions or 'COU' to fix the center of cell. rotate_cell = False: If true the cell is also rotated. Examples: Rotate 90 degrees around the z-axis, so that the x-axis is rotated into the y-axis: >>> from math import pi >>> atoms = Atoms() >>> atoms.rotate(90, 'z') >>> atoms.rotate(90, (0, 0, 1)) >>> atoms.rotate(-90, '-z') >>> atoms.rotate('x', 'y') """ if not isinstance(a, (float, int)): # old API maybe? warning = ('Please use new API: ' 'atoms_obj.rotate(a, v) ' 'where v is a vector to rotate around and ' 'a is the angle in degrees.') if isinstance(v, (float, int)): warnings.warn(warning) a, v = v * 180 / pi, a elif v is None: warnings.warn(warning) v = a a = None else: assert a is not None a, v = v, a else: assert a is not None norm = np.linalg.norm v = string2vector(v) if a is None: a = norm(v) * 180 / pi # old API if isinstance(a, (float, int)): a *= pi / 180 v /= norm(v) c = cos(a) s = sin(a) else: v2 = string2vector(a) v /= norm(v) v2 /= norm(v2) c = np.dot(v, v2) v = np.cross(v, v2) s = norm(v) # In case *v* and *a* are parallel, np.cross(v, v2) vanish # and can't be used as a rotation axis. However, in this # case any rotation axis perpendicular to v2 will do. eps = 1e-7 if s < eps: v = np.cross((0, 0, 1), v2) if norm(v) < eps: v = np.cross((1, 0, 0), v2) assert norm(v) >= eps elif s > 0: v /= s if isinstance(center, basestring): if center.lower() == 'com': center = self.get_center_of_mass() elif center.lower() == 'cop': center = self.get_positions().mean(axis=0) elif center.lower() == 'cou': center = self.get_cell().sum(axis=0) / 2 else: raise ValueError('Cannot interpret center') else: center = np.array(center) p = self.arrays['positions'] - center self.arrays['positions'][:] = (c * p - np.cross(p, s * v) + np.outer(np.dot(p, v), (1.0 - c) * v) + center) if rotate_cell: rotcell = self.get_cell() rotcell[:] = (c * rotcell - np.cross(rotcell, s * v) + np.outer(np.dot(rotcell, v), (1.0 - c) * v)) self.set_cell(rotcell) def rotate_euler(self, center=(0, 0, 0), phi=0.0, theta=0.0, psi=0.0): warnings.warn( 'Please use this method instead: ' 'euler_rotate(phi=0, theta=0, psi=0, center=(0, 0, 0)) ' 'where the angles are given in degrees') self.euler_rotate(phi * 180 / pi, theta * 180 / pi, psi * 180 / pi, center) def euler_rotate(self, phi=0.0, theta=0.0, psi=0.0, center=(0, 0, 0)): """Rotate atoms via Euler angles (in degrees). See e.g http://mathworld.wolfram.com/EulerAngles.html for explanation. Parameters: center : The point to rotate about. A sequence of length 3 with the coordinates, or 'COM' to select the center of mass, 'COP' to select center of positions or 'COU' to select center of cell. phi : The 1st rotation angle around the z axis. theta : Rotation around the x axis. psi : 2nd rotation around the z axis. """ if isinstance(center, basestring): if center.lower() == 'com': center = self.get_center_of_mass() elif center.lower() == 'cop': center = self.get_positions().mean(axis=0) elif center.lower() == 'cou': center = self.get_cell().sum(axis=0) / 2 else: raise ValueError('Cannot interpret center') else: center = np.array(center) phi *= pi / 180 theta *= pi / 180 psi *= pi / 180 # First move the molecule to the origin In contrast to MATLAB, # numpy broadcasts the smaller array to the larger row-wise, # so there is no need to play with the Kronecker product. rcoords = self.positions - center # First Euler rotation about z in matrix form D = np.array(((cos(phi), sin(phi), 0.), (-sin(phi), cos(phi), 0.), (0., 0., 1.))) # Second Euler rotation about x: C = np.array(((1., 0., 0.), (0., cos(theta), sin(theta)), (0., -sin(theta), cos(theta)))) # Third Euler rotation, 2nd rotation about z: B = np.array(((cos(psi), sin(psi), 0.), (-sin(psi), cos(psi), 0.), (0., 0., 1.))) # Total Euler rotation A = np.dot(B, np.dot(C, D)) # Do the rotation rcoords = np.dot(A, np.transpose(rcoords)) # Move back to the rotation point self.positions = np.transpose(rcoords) + center def get_dihedral(self, a1, a2=None, a3=None, a4=None, mic=False): """Calculate dihedral angle. Calculate dihedral angle (in degrees) between the vectors a1->a2 and a3->a4. Use mic=True to use the Minimum Image Convention and calculate the angle across periodic boundaries. """ if a2 is None: # Old way - use radians warnings.warn( 'Please use new API (which will return the angle in degrees): ' 'atoms_obj.get_dihedral(a1,a2,a3,a4)*pi/180 instead of ' 'atoms_obj.get_dihedral([a1,a2,a3,a4])') assert a3 is None and a4 is None a1, a2, a3, a4 = a1 f = pi / 180 else: f = 1 # vector 1->2, 2->3, 3->4 and their normalized cross products: a = self.positions[a2] - self.positions[a1] b = self.positions[a3] - self.positions[a2] c = self.positions[a4] - self.positions[a3] if mic: a, b, c = find_mic([a, b, c], self._cell, self._pbc)[0] bxa = np.cross(b, a) bxa /= np.linalg.norm(bxa) cxb = np.cross(c, b) cxb /= np.linalg.norm(cxb) angle = np.vdot(bxa, cxb) # check for numerical trouble due to finite precision: if angle < -1: angle = -1 if angle > 1: angle = 1 angle = np.arccos(angle) * 180 / pi if np.vdot(bxa, c) > 0: angle = 360 - angle return angle * f def _masked_rotate(self, center, axis, diff, mask): # do rotation of subgroup by copying it to temporary atoms object # and then rotating that # # recursive object definition might not be the most elegant thing, # more generally useful might be a rotation function with a mask? group = self.__class__() for i in range(len(self)): if mask[i]: group += self[i] group.translate(-center) group.rotate(diff * 180 / pi, axis) group.translate(center) # set positions in original atoms object j = 0 for i in range(len(self)): if mask[i]: self.positions[i] = group[j].position j += 1 def set_dihedral(self, a1, a2=None, a3=None, a4=None, angle=None, mask=None, indices=None): """Set the dihedral angle (degrees) between vectors a1->a2 and a3->a4 by changing the atom indexed by a4 if mask is not None, all the atoms described in mask (read: the entire subgroup) are moved. Alternatively to the mask, the indices of the atoms to be rotated can be supplied. example: the following defines a very crude ethane-like molecule and twists one half of it by 30 degrees. >>> from math import pi >>> atoms = Atoms('HHCCHH', [[-1, 1, 0], [-1, -1, 0], [0, 0, 0], ... [1, 0, 0], [2, 1, 0], [2, -1, 0]]) >>> atoms.set_dihedral(1, 2, 3, 4, 210, mask=[0, 0, 0, 1, 1, 1]) """ if isinstance(a1, int): angle *= pi / 180 else: warnings.warn( 'Please use new API: ' 'atoms_obj.set_dihedral(a1,a2,a3,a4,angle) ' 'where angle is given in degrees') if angle is None: angle = a2 if mask is None: mask = a3 if indices is None: indices = a4 else: assert a2 is None and a3 is None and a4 is None a1, a2, a3, a4 = a1 # if not provided, set mask to the last atom in the # dihedral description if mask is None and indices is None: mask = np.zeros(len(self)) mask[a4] = 1 elif indices: mask = [index in indices for index in range(len(self))] # compute necessary in dihedral change, from current value current = self.get_dihedral(a1, a2, a3, a4) * pi / 180 diff = angle - current axis = self.positions[a3] - self.positions[a2] center = self.positions[a3] self._masked_rotate(center, axis, diff, mask) def rotate_dihedral(self, a1, a2=None, a3=None, a4=None, angle=None, mask=None): """Rotate dihedral angle. Complementing the two routines above: rotate a group by a predefined dihedral angle, starting from its current configuration """ if isinstance(a1, int): start = self.get_dihedral(a1, a2, a3, a4) self.set_dihedral(a1, a2, a3, a4, angle + start, mask) else: warnings.warn( 'Please use new API: ' 'atoms_obj.rotate_dihedral(a1,a2,a3,a4,angle) ' 'where angle is given in degrees') if angle is None: angle = a2 if mask is None: mask = a3 else: assert a2 is None and a3 is None and a4 is None start = self.get_dihedral(a1) self.set_dihedral(a1, angle + start, mask) def get_angle(self, a1, a2=None, a3=None, mic=False): """Get angle formed by three atoms. calculate angle in degrees between the vectors a2->a1 and a2->a3. Use mic=True to use the Minimum Image Convention and calculate the angle across periodic boundaries. """ if a2 is None: # old API (uses radians) warnings.warn( 'Please use new API (which will return the angle in degrees): ' 'atoms_obj.get_angle(a1,a2,a3)*pi/180 instead of ' 'atoms_obj.get_angle([a1,a2,a3])') assert a3 is None a1, a2, a3 = a1 f = 1 else: f = 180 / pi # normalized vector 1->0, 1->2: v10 = self.positions[a1] - self.positions[a2] v12 = self.positions[a3] - self.positions[a2] if mic: v10, v12 = find_mic([v10, v12], self._cell, self._pbc)[0] v10 /= np.linalg.norm(v10) v12 /= np.linalg.norm(v12) angle = np.vdot(v10, v12) angle = np.arccos(angle) return angle * f def set_angle(self, a1, a2=None, a3=None, angle=None, mask=None): """Set angle (in degrees) formed by three atoms. Sets the angle between vectors a2->a1 and a2->a3. Same usage as in set_dihedral().""" if not isinstance(a1, int): # old API (uses radians) warnings.warn( 'Please use new API: ' 'atoms_obj.set_angle(a1,a2,a3,angle) ' 'where angle is given in degrees') if angle is None: angle = a2 if mask is None: mask = a3 a1, a2, a3 = a1 else: assert a2 is None and a3 is None angle *= 180 / pi # If not provided, set mask to the last atom in the angle description if mask is None: mask = np.zeros(len(self)) mask[a3] = 1 # Compute necessary in angle change, from current value current = self.get_angle(a1, a2, a3) diff = (angle - current) * pi / 180 # Do rotation of subgroup by copying it to temporary atoms object and # then rotating that v10 = self.positions[a1] - self.positions[a2] v12 = self.positions[a3] - self.positions[a2] v10 /= np.linalg.norm(v10) v12 /= np.linalg.norm(v12) axis = np.cross(v10, v12) center = self.positions[a2] self._masked_rotate(center, axis, diff, mask) def rattle(self, stdev=0.001, seed=42): """Randomly displace atoms. This method adds random displacements to the atomic positions, taking a possible constraint into account. The random numbers are drawn from a normal distribution of standard deviation stdev. For a parallel calculation, it is important to use the same seed on all processors! """ rs = np.random.RandomState(seed) positions = self.arrays['positions'] self.set_positions(positions + rs.normal(scale=stdev, size=positions.shape)) def get_distance(self, a0, a1, mic=False, vector=False): """Return distance between two atoms. Use mic=True to use the Minimum Image Convention. vector=True gives the distance vector (from a0 to a1). """ R = self.arrays['positions'] D = np.array([R[a1] - R[a0]]) if mic: D, D_len = find_mic(D, self._cell, self._pbc) else: D_len = np.array([np.sqrt((D**2).sum())]) if vector: return D[0] return D_len[0] def get_distances(self, a, indices, mic=False, vector=False): """Return distances of atom No.i with a list of atoms. Use mic=True to use the Minimum Image Convention. vector=True gives the distance vector (from a to self[indices]). """ R = self.arrays['positions'] D = R[indices] - R[a] if mic: D, D_len = find_mic(D, self._cell, self._pbc) else: D_len = np.sqrt((D**2).sum(1)) if vector: return D return D_len def get_all_distances(self, mic=False): """Return distances of all of the atoms with all of the atoms. Use mic=True to use the Minimum Image Convention. """ L = len(self) R = self.arrays['positions'] D = [] for i in range(L - 1): D.append(R[i + 1:] - R[i]) D = np.concatenate(D) if mic: D, D_len = find_mic(D, self._cell, self._pbc) else: D_len = np.sqrt((D**2).sum(1)) results = np.zeros((L, L), dtype=float) start = 0 for i in range(L - 1): results[i, i + 1:] = D_len[start:start + L - i - 1] start += L - i - 1 return results + results.T def set_distance(self, a0, a1, distance, fix=0.5, mic=False): """Set the distance between two atoms. Set the distance between atoms *a0* and *a1* to *distance*. By default, the center of the two atoms will be fixed. Use *fix=0* to fix the first atom, *fix=1* to fix the second atom and *fix=0.5* (default) to fix the center of the bond.""" R = self.arrays['positions'] D = np.array([R[a1] - R[a0]]) if mic: D, D_len = find_mic(D, self._cell, self._pbc) else: D_len = np.array([np.sqrt((D**2).sum())]) x = 1.0 - distance / D_len[0] R[a0] += (x * fix) * D[0] R[a1] -= (x * (1.0 - fix)) * D[0] def get_scaled_positions(self, wrap=True): """Get positions relative to unit cell. If wrap is True, atoms outside the unit cell will be wrapped into the cell in those directions with periodic boundary conditions so that the scaled coordinates are between zero and one.""" fractional = np.linalg.solve(self.get_cell(complete=True).T, self.positions.T).T if wrap: for i, periodic in enumerate(self.pbc): if periodic: # Yes, we need to do it twice. # See the scaled_positions.py test. fractional[:, i] %= 1.0 fractional[:, i] %= 1.0 return fractional def set_scaled_positions(self, scaled): """Set positions relative to unit cell.""" self.positions[:] = np.dot(scaled, self.get_cell(complete=True)) def wrap(self, center=(0.5, 0.5, 0.5), pbc=None, eps=1e-7): """Wrap positions to unit cell. Parameters: center: three float The positons in fractional coordinates that the new positions will be nearest possible to. pbc: one or 3 bool For each axis in the unit cell decides whether the positions will be moved along this axis. By default, the boundary conditions of the Atoms object will be used. eps: float Small number to prevent slightly negative coordinates from being wrapped. See also the :func:`ase.geometry.wrap_positions` function. Example: >>> a = Atoms('H', ... [[-0.1, 1.01, -0.5]], ... cell=[[1, 0, 0], [0, 1, 0], [0, 0, 4]], ... pbc=[1, 1, 0]) >>> a.wrap() >>> a.positions array([[ 0.9 , 0.01, -0.5 ]]) """ if pbc is None: pbc = self.pbc self.positions[:] = wrap_positions(self.positions, self.cell, pbc, center, eps) def get_temperature(self): """Get the temperature in Kelvin.""" dof = len(self) * 3 for constraint in self._constraints: dof -= constraint.removed_dof ekin = self.get_kinetic_energy() return 2 * ekin / (dof * units.kB) def __eq__(self, other): """Check for identity of two atoms objects. Identity means: same positions, atomic numbers, unit cell and periodic boundary conditions.""" if not isinstance(other, Atoms): return False a = self.arrays b = other.arrays return (len(self) == len(other) and (a['positions'] == b['positions']).all() and (a['numbers'] == b['numbers']).all() and (self._cell == other.cell).all() and (self._pbc == other.pbc).all()) def __ne__(self, other): """Check if two atoms objects are not equal. Any differences in positions, atomic numbers, unit cell or periodic boundary condtions make atoms objects not equal. """ eq = self.__eq__(other) if eq is NotImplemented: return eq else: return not eq __hash__ = None def get_volume(self): """Get volume of unit cell.""" if self.number_of_lattice_vectors != 3: raise ValueError( 'You have {0} lattice vectors: volume not defined' .format(self.number_of_lattice_vectors)) return abs(np.linalg.det(self._cell)) def _get_positions(self): """Return reference to positions-array for in-place manipulations.""" return self.arrays['positions'] def _set_positions(self, pos): """Set positions directly, bypassing constraints.""" self.arrays['positions'][:] = pos positions = property(_get_positions, _set_positions, doc='Attribute for direct ' + 'manipulation of the positions.') @property def adsorbate_info(self): """Return the adsorbate information set by one of the surface builder functions. This function is only supplied in order to give a warning if this attribute (atoms.adsorbate_info) is asked for. The dictionary with adsorbate information has been moved to the info dictionary, i.e. atoms.info['adsorbate_info'].""" warnings.warn("The adsorbate_info dictionary has been moved" + " inside the info dictionary, i.e. atoms." + "info['adsorbate_info']", FutureWarning) return self.info['adsorbate_info'] @adsorbate_info.setter def adsorbate_info(self, dct): warnings.warn("The adsorbate_info dictionary has been moved" + " inside the info dictionary, i.e. atoms." + "info['adsorbate_info']", FutureWarning) self.info['adsorbate_info'] = dct def _get_atomic_numbers(self): """Return reference to atomic numbers for in-place manipulations.""" return self.arrays['numbers'] numbers = property(_get_atomic_numbers, set_atomic_numbers, doc='Attribute for direct ' + 'manipulation of the atomic numbers.') def _get_cell(self): """Return reference to unit cell for in-place manipulations.""" return self._cell cell = property(_get_cell, set_cell, doc='Attribute for direct ' + 'manipulation of the unit cell.') def _get_pbc(self): """Return reference to pbc-flags for in-place manipulations.""" return self._pbc pbc = property(_get_pbc, set_pbc, doc='Attribute for direct manipulation ' + 'of the periodic boundary condition flags.') def write(self, filename, format=None, **kwargs): """Write atoms object to a file. see ase.io.write for formats. kwargs are passed to ase.io.write. """ from ase.io import write write(filename, self, format, **kwargs) def _images_(self): yield self def edit(self): """Modify atoms interactively through ASE's GUI viewer. Conflicts leading to undesirable behaviour might arise when matplotlib has been pre-imported with certain incompatible backends and while trying to use the plot feature inside the interactive GUI. To circumvent, please set matplotlib.use('gtk') before calling this method. """ from ase.gui.images import Images from ase.gui.gui import GUI images = Images([self]) gui = GUI(images) gui.run() def string2symbols(s): """Convert string to list of chemical symbols.""" n = len(s) if n == 0: return [] c = s[0] if c.isdigit(): i = 1 while i < n and s[i].isdigit(): i += 1 return int(s[:i]) * string2symbols(s[i:]) if c == '(': p = 0 for i, c in enumerate(s): if c == '(': p += 1 elif c == ')': p -= 1 if p == 0: break j = i + 1 while j < n and s[j].isdigit(): j += 1 if j > i + 1: m = int(s[i + 1:j]) else: m = 1 return m * string2symbols(s[1:i]) + string2symbols(s[j:]) if c.isupper(): i = 1 if 1 < n and s[1].islower(): i += 1 j = i while j < n and s[j].isdigit(): j += 1 if j > i: m = int(s[i:j]) else: m = 1 symbol = s[:i] if symbol not in atomic_numbers: raise ValueError return m * [symbol] + string2symbols(s[j:]) else: raise ValueError def symbols2numbers(symbols): if isinstance(symbols, basestring): symbols = string2symbols(symbols) numbers = [] for s in symbols: if isinstance(s, basestring): numbers.append(atomic_numbers[s]) else: numbers.append(s) return numbers def string2vector(v): if isinstance(v, basestring): if v[0] == '-': return -string2vector(v[1:]) w = np.zeros(3) w['xyz'.index(v)] = 1.0 return w return np.array(v, float) def default(data, dflt): """Helper function for setting default values.""" if data is None: return None elif isinstance(data, (list, tuple)): newdata = [] allnone = True for x in data: if x is None: newdata.append(dflt) else: newdata.append(x) allnone = False if allnone: return None return newdata else: return data ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/autoneb.py000066400000000000000000000564111316323560300225550ustar00rootroot00000000000000# -*- coding: utf-8 -*- from ase.io import Trajectory from ase.io import read from ase.neb import NEB from ase.optimize import BFGS from ase.optimize import FIRE from ase.calculators.singlepoint import SinglePointCalculator import ase.parallel as mpi import numpy as np import shutil import os import types from math import log from math import exp class AutoNEB(object): """AutoNEB object. The AutoNEB algorithm streamlines the execution of NEB and CI-NEB calculations following the algorithm described in: E. L. Kolsbjerg, M. N. Groves, and B. Hammer, J. Chem. Phys, 145, 094107, 2016. (doi: 10.1063/1.4961868) The user supplies at minimum the two end-points and possibly also some intermediate images. The stages are: 1) Define a set of images and name them sequentially. Must at least have a relaxed starting and ending image User can supply intermediate guesses which do not need to have previously determined energies (probably from another NEB calculation with a lower level of theory) 2) AutoNEB will first evaluate the user provided intermediate images 3) AutoNEB will then add additional images dynamically until n_max is reached 4) A climbing image will attempt to locate the saddle point 5) All the images between the highest point and the starting point are further relaxed to smooth the path 6) All the images between the highest point and the ending point are further relaxed to smooth the path Step 4 and 5-6 are optional steps! Parameters: attach_calculators: Function which adds valid calculators to the list of images supplied. prefix: string All files that the AutoNEB method reads and writes are prefixed with this string n_simul: int The number of relaxations run in parallel. n_max: int The number of images along the NEB path when done. This number includes the two end-points. Important: due to the dynamic adding of images around the peak n_max must be updated if the NEB is restarted. climb: boolean Should a CI-NEB calculation be done at the top-point fmax: float or list of floats The maximum force along the NEB path maxsteps: int The maximum number of steps in each NEB relaxation. If a list is given the first number of steps is used in the build-up and final scan phase; the second number of steps is used in the CI step after all images have been inserted. k: float The spring constant along the NEB path method: str (see neb.py) Choice betweeen three method: 'aseneb', standard ase NEB implementation 'improvedtangent', published NEB implementation 'eb', full spring force implementation (defualt) optimizer: str Which optimizer to use in the relaxation. Valid values are 'BFGS' and 'FIRE' (defualt) space_energy_ratio: float The preference for new images to be added in a big energy gab with a preference around the peak or in the biggest geometric gab. A space_energy_ratio set to 1 will only considder geometric gabs while one set to 0 will result in only images for energy resolution. The AutoNEB method uses a fixed file-naming convention. The initial images should have the naming prefix000.traj, prefix001.traj, ... up until the final image in prefix00N.traj Images are dynamically added in between the first and last image until n_max images have been reached. When doing the i'th NEB optimization a set of files prefixXXXiter00i.traj exists with XXX ranging from 000 to the N images currently in the NEB. The most recent NEB path can always be monitored by: $ ase-gui -n -1 neb???.traj """ def __init__(self, attach_calculators, prefix, n_simul, n_max, iter_folder='AutoNEB_iter', fmax=0.025, maxsteps=10000, k=0.1, climb=True, method='eb', optimizer='FIRE', remove_rotation_and_translation=False, space_energy_ratio=0.5, world=None, parallel=True, smooth_curve=False, interpolate_method='idpp'): self.attach_calculators = attach_calculators self.prefix = prefix self.n_simul = n_simul self.n_max = n_max self.climb = climb self.all_images = [] self.parallel = parallel self.maxsteps = maxsteps self.fmax = fmax self.k = k self.method = method self.remove_rotation_and_translation = remove_rotation_and_translation self.space_energy_ratio = space_energy_ratio if interpolate_method not in ['idpp', 'linear']: self.interpolate_method = 'idpp' print('Interpolation method not implementet.', 'Using the IDPP method.') else: self.interpolate_method = interpolate_method if world is None: world = mpi.world self.world = world self.smooth_curve = smooth_curve if optimizer == 'BFGS': self.optimizer = BFGS elif optimizer == 'FIRE': self.optimizer = FIRE else: raise Exception('Optimizer needs to be BFGS or FIRE') self.iter_folder = iter_folder if not os.path.exists(self.iter_folder) and self.world.rank == 0: os.makedirs(self.iter_folder) def execute_one_neb(self, n_cur, to_run, climb=False, many_steps=False): '''Internal method which executes one NEB optimization.''' self.iteration += 1 # First we copy around all the images we are not using in this # neb (for reproducability purposes) if self.world.rank == 0: for i in range(n_cur): if i not in to_run[1: -1]: filename = '%s%03d.traj' % (self.prefix, i) t = Trajectory(filename, mode='w', atoms=self.all_images[i]) t.write() filename_ref = self.iter_folder + \ '/%s%03diter%03d.traj' % (self.prefix, i, self.iteration) if os.path.isfile(filename): shutil.copy2(filename, filename_ref) if self.world.rank == 0: print('Now starting iteration %d on ' % self.iteration, to_run) # Attach calculators to all the images we will include in the NEB self.attach_calculators([self.all_images[i] for i in to_run[1: -1]]) neb = NEB([self.all_images[i] for i in to_run], k=[self.k[i] for i in to_run[0:-1]], method=self.method, parallel=self.parallel, remove_rotation_and_translation=self .remove_rotation_and_translation, climb=climb) # Do the actual NEB calculation qn = self.optimizer(neb, logfile=self.iter_folder + '/%s_log_iter%03d.log' % (self.prefix, self.iteration)) # Find the ranks which are masters for each their calculation if self.parallel: nneb = to_run[0] nim = len(to_run) - 2 n = self.world.size // nim # number of cpu's per image j = 1 + self.world.rank // n # my image number assert nim * n == self.world.size traj = Trajectory('%s%03d.traj' % (self.prefix, j + nneb), 'w', self.all_images[j + nneb], master=(self.world.rank % n == 0)) filename_ref = self.iter_folder + \ '/%s%03diter%03d.traj' % (self.prefix, j + nneb, self.iteration) trajhist = Trajectory(filename_ref, 'w', self.all_images[j + nneb], master=(self.world.rank % n == 0)) qn.attach(traj) qn.attach(trajhist) else: num = 1 for i, j in enumerate(to_run[1: -1]): filename_ref = self.iter_folder + \ '/%s%03diter%03d.traj' % (self.prefix, j, self.iteration) trajhist = Trajectory(filename_ref, 'w', self.all_images[j]) qn.attach(seriel_writer(trajhist, i, num).write) traj = Trajectory('%s%03d.traj' % (self.prefix, j), 'w', self.all_images[j]) qn.attach(seriel_writer(traj, i, num).write) num += 1 if isinstance(self.maxsteps, (list, tuple)) and many_steps: steps = self.maxsteps[1] elif isinstance(self.maxsteps, (list, tuple)) and not many_steps: steps = self.maxsteps[0] else: steps = self.maxsteps if isinstance(self.fmax, (list, tuple)) and many_steps: fmax = self.fmax[1] elif isinstance(self.fmax, (list, tuple)) and not many_steps: fmax = self.fmax[0] else: fmax = self.fmax qn.run(fmax=fmax, steps=steps) # Remove the calculators and replace them with single # point calculators and update all the nodes for # preperration for next iteration neb.distribute = types.MethodType(store_E_and_F_in_spc, neb) neb.distribute() def run(self): '''Run the AutoNEB optimization algorithm.''' n_cur = self.__initialize__() while len(self.all_images) < self.n_simul + 2: if isinstance(self.k, (float, int)): self.k = [self.k] * (len(self.all_images) - 1) if self.world.rank == 0: print('Now adding images for initial run') # Insert a new image where the distance between two images is # the largest spring_lengths = [] for j in range(n_cur - 1): spring_vec = self.all_images[j + 1].get_positions() - \ self.all_images[j].get_positions() spring_lengths.append(np.linalg.norm(spring_vec)) jmax = np.argmax(spring_lengths) if self.world.rank == 0: print('Max length between images is at ', jmax) # The interpolation used to make initial guesses # If only start and end images supplied make all img at ones if len(self.all_images) == 2: n_between = self.n_simul else: n_between = 1 toInterpolate = [self.all_images[jmax]] for i in range(n_between): toInterpolate += [toInterpolate[0].copy()] toInterpolate += [self.all_images[jmax + 1]] neb = NEB(toInterpolate) neb.interpolate(method=self.interpolate_method) tmp = self.all_images[:jmax + 1] tmp += toInterpolate[1:-1] tmp.extend(self.all_images[jmax + 1:]) self.all_images = tmp # Expect springs to be in equilibrium k_tmp = self.k[:jmax] k_tmp += [self.k[jmax] * (n_between + 1)] * (n_between + 1) k_tmp.extend(self.k[jmax + 1:]) self.k = k_tmp # Run the NEB calculation with the new image included n_cur += n_between # Determine if any images do not have a valid energy yet energies = self.get_energies() n_non_valid_energies = len([e for e in energies if e != e]) if self.world.rank == 0: print('Start of evaluation of the initial images') while n_non_valid_energies != 0: if isinstance(self.k, (float, int)): self.k = [self.k] * (len(self.all_images) - 1) # First do one run since some energie are non-determined to_run, climb_safe = self.which_images_to_run_on() self.execute_one_neb(n_cur, to_run, climb=False) energies = self.get_energies() n_non_valid_energies = len([e for e in energies if e != e]) if self.world.rank == 0: print('Finished initialisation phase.') # Then add one image at a time until we have n_max images while n_cur < self.n_max: if isinstance(self.k, (float, int)): self.k = [self.k] * (len(self.all_images) - 1) # Insert a new image where the distance between two images # is the largest OR where a higher energy reselution is needed if self.world.rank == 0: print('****Now adding another image until n_max is reached', '({0}/{1})****'.format(n_cur, self.n_max)) spring_lengths = [] for j in range(n_cur - 1): spring_vec = self.all_images[j + 1].get_positions() - \ self.all_images[j].get_positions() spring_lengths.append(np.linalg.norm(spring_vec)) total_vec = self.all_images[0].get_positions() - \ self.all_images[-1].get_positions() tl = np.linalg.norm(total_vec) fR = max(spring_lengths) / tl e = self.get_energies() ed = [] emin = min(e) enorm = max(e) - emin for j in range(n_cur - 1): delta_E = (e[j + 1] - e[j]) * (e[j + 1] + e[j] - 2 * emin) / 2 / enorm ed.append(abs(delta_E)) gR = max(ed) / enorm if fR / gR > self.space_energy_ratio: jmax = np.argmax(spring_lengths) t = 'spring length!' else: jmax = np.argmax(ed) t = 'energy difference between neighbours!' if self.world.rank == 0: print('Adding image between {0} and'.format(jmax), '{0}. New image point is selected'.format(jmax + 1), 'on the basis of the biggest ' + t) toInterpolate = [self.all_images[jmax]] toInterpolate += [toInterpolate[0].copy()] toInterpolate += [self.all_images[jmax + 1]] neb = NEB(toInterpolate) neb.interpolate(method=self.interpolate_method) tmp = self.all_images[:jmax + 1] tmp += toInterpolate[1:-1] tmp.extend(self.all_images[jmax + 1:]) self.all_images = tmp # Expect springs to be in equilibrium k_tmp = self.k[:jmax] k_tmp += [self.k[jmax] * 2] * 2 k_tmp.extend(self.k[jmax + 1:]) self.k = k_tmp # Run the NEB calculation with the new image included n_cur += 1 to_run, climb_safe = self.which_images_to_run_on() self.execute_one_neb(n_cur, to_run, climb=False) if self.world.rank == 0: print('n_max images has been reached') # Do a single climb around the top-point if requested if self.climb: if isinstance(self.k, (float, int)): self.k = [self.k] * (len(self.all_images) - 1) if self.world.rank == 0: print('****Now doing the CI-NEB calculation****') to_run, climb_safe = self.which_images_to_run_on() assert climb_safe, 'climb_safe should be true at this point!' self.execute_one_neb(n_cur, to_run, climb=True, many_steps=True) if not self.smooth_curve: return self.all_images # If a smooth_curve is requsted ajust the springs to follow two # gaussian distributions e = self.get_energies() peak = self.get_highest_energy_index() k_max = 10 d1 = np.linalg.norm(self.all_images[peak].get_positions() - self.all_images[0].get_positions()) d2 = np.linalg.norm(self.all_images[peak].get_positions() - self.all_images[-1].get_positions()) l1 = -d1 ** 2 / log(0.2) l2 = -d2 ** 2 / log(0.2) x1 = [] x2 = [] for i in range(peak): v = (self.all_images[i].get_positions() + self.all_images[i + 1].get_positions()) / 2 - \ self.all_images[0].get_positions() x1.append(np.linalg.norm(v)) for i in range(peak, len(self.all_images) - 1): v = (self.all_images[i].get_positions() + self.all_images[i + 1].get_positions()) / 2 - \ self.all_images[0].get_positions() x2.append(np.linalg.norm(v)) k_tmp = [] for x in x1: k_tmp.append(k_max * exp(-((x - d1) ** 2) / l1)) for x in x2: k_tmp.append(k_max * exp(-((x - d1) ** 2) / l2)) self.k = k_tmp # Roll back to start from the top-point if self.world.rank == 0: print('Now moving from top to start') highest_energy_index = self.get_highest_energy_index() nneb = highest_energy_index - self.n_simul - 1 while nneb >= 0: self.execute_one_neb(n_cur, range(nneb, nneb + self.n_simul + 2), climb=False) nneb -= 1 # Roll forward from the top-point until the end nneb = self.get_highest_energy_index() if self.world.rank == 0: print('Now moving from top to end') while nneb <= self.n_max - self.n_simul - 2: self.execute_one_neb(n_cur, range(nneb, nneb + self.n_simul + 2), climb=False) nneb += 1 return self.all_images def __initialize__(self): '''Load files from the filesystem.''' if not os.path.isfile('%s000.traj' % self.prefix): raise IOError('No file with name %s000.traj' % self.prefix, 'was found. Should contain initial image') # Find the images that exist index_exists = [i for i in range(self.n_max) if os.path.isfile('%s%03d.traj' % (self.prefix, i))] n_cur = index_exists[-1] + 1 if self.world.rank == 0: print('The NEB initially has %d images ' % len(index_exists), '(including the end-points)') if len(index_exists) == 1: raise Exception('Only a start point exists') for i in range(len(index_exists)): if i != index_exists[i]: raise Exception('Files must be ordered sequentially', 'without gaps.') if self.world.rank == 0: for i in index_exists: filename_ref = self.iter_folder + \ '/%s%03diter000.traj' % (self.prefix, i) if os.path.isfile(filename_ref): try: os.rename(filename_ref, filename_ref + '.bak') except IOError: pass filename = '%s%03d.traj' % (self.prefix, i) try: shutil.copy2(filename, filename_ref) except IOError: pass # Wait for file system on all nodes is syncronized self.world.barrier() # And now lets read in the configurations for i in range(n_cur): if i in index_exists: filename = '%s%03d.traj' % (self.prefix, i) newim = read(filename) self.all_images.append(newim) else: self.all_images.append(self.all_images[0].copy()) self.iteration = 0 return n_cur def get_energies(self): """Utility method to extract all energies and insert np.NaN at invalid images.""" energies = [] for a in self.all_images: try: energies.append(a.get_potential_energy()) except RuntimeError: energies.append(np.NaN) return energies def get_energies_one_image(self, image): """Utility method to extract energy of an image and return np.NaN if invalid.""" try: energy = image.get_potential_energy() except RuntimeError: energy = np.NaN return energy def get_highest_energy_index(self): """Find the index of the image with the highest energy.""" energies = self.get_energies() valid_entries = [(i, e) for i, e in enumerate(energies) if e == e] highest_energy_index = max(valid_entries, key=lambda x: x[1])[0] return highest_energy_index def which_images_to_run_on(self): """Determine which set of images to do a NEB at. The priority is to first include all images without valid energies, secondly include the highest energy image.""" n_cur = len(self.all_images) energies = self.get_energies() # Find out which image is the first one missing the energy and # which is the last one missing the energy first_missing = n_cur last_missing = 0 n_missing = 0 for i in range(1, n_cur - 1): if energies[i] != energies[i]: n_missing += 1 first_missing = min(first_missing, i) last_missing = max(last_missing, i) highest_energy_index = self.get_highest_energy_index() nneb = highest_energy_index - 1 - self.n_simul // 2 nneb = max(nneb, 0) nneb = min(nneb, n_cur - self.n_simul - 2) nneb = min(nneb, first_missing - 1) nneb = max(nneb + self.n_simul, last_missing) - self.n_simul to_use = range(nneb, nneb + self.n_simul + 2) while self.get_energies_one_image(self.all_images[to_use[0]]) != \ self.get_energies_one_image(self.all_images[to_use[0]]): to_use[0] -= 1 while self.get_energies_one_image(self.all_images[to_use[-1]]) != \ self.get_energies_one_image(self.all_images[to_use[-1]]): to_use[-1] += 1 return to_use, (highest_energy_index in to_use[1: -1]) class seriel_writer: def __init__(self, traj, i, num): self.traj = traj self.i = i self.num = num def write(self): if self.num % (self.i + 1) == 0: self.traj.write() def store_E_and_F_in_spc(self): """Collect the energies and forces on all nodes and store as single point calculators""" # Make sure energies and forces are known on all nodes self.get_forces() images = self.images if self.parallel: energy = np.empty(1) forces = np.empty((self.natoms, 3)) for i in range(1, self.nimages - 1): # Determine which node is the leading for image i root = (i - 1) * self.world.size // (self.nimages - 2) # If on this node, extract the calculated numbers if self.world.rank == root: energy[0] = images[i].get_potential_energy() forces = images[i].get_forces() # Distribute these numbers to other nodes self.world.broadcast(energy, root) self.world.broadcast(forces, root) # On all nodes, remove the calculator, keep only energy # and force in single point calculator self.images[i].set_calculator( SinglePointCalculator(self.images[i], energy=energy[0], forces=forces)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/000077500000000000000000000000001316323560300216365ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/__init__.py000066400000000000000000000030571316323560300237540ustar00rootroot00000000000000from ase.build.rotate import minimize_rotation_and_translation from ase.build.surface import ( add_adsorbate, add_vacuum, bcc100, bcc110, bcc111, diamond100, diamond111, fcc100, fcc110, fcc111, fcc211, hcp0001, hcp10m10, mx2) from ase.build.bulk import bulk from ase.build.general_surface import surface from ase.build.molecule import molecule from ase.build.root import (hcp0001_root, fcc111_root, bcc111_root, root_surface, root_surface_analysis) from ase.build.tube import nanotube from ase.build.ribbon import graphene_nanoribbon from ase.build.tools import (cut, stack, sort, minimize_tilt, niggli_reduce, rotate) from ase.build.supercells import ( get_deviation_from_optimal_cell_shape, find_optimal_cell_shape, find_optimal_cell_shape_pure_python, make_supercell) __all__ = ['minimize_rotation_and_translation', 'add_adsorbate', 'add_vacuum', 'bcc100', 'bcc110', 'bcc111', 'diamond100', 'diamond111', 'fcc100', 'fcc110', 'fcc111', 'fcc211', 'hcp0001', 'hcp10m10', 'mx2', 'bulk', 'surface', 'molecule', 'hcp0001_root', 'fcc111_root', 'bcc111_root', 'root_surface', 'root_surface_analysis', 'nanotube', 'graphene_nanoribbon', 'cut', 'stack', 'sort', 'minimize_tilt', 'niggli_reduce', 'rotate', 'get_deviation_from_optimal_cell_shape', 'find_optimal_cell_shape', 'find_optimal_cell_shape_pure_python', 'make_supercell'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/__main__.py000077500000000000000000000000461316323560300237330ustar00rootroot00000000000000from ase.cli.build import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/adsorb.py000066400000000000000000000150241316323560300234640ustar00rootroot00000000000000from optparse import OptionParser import numpy as np from ase.atoms import Atoms, string2symbols from ase.build import (molecule, fcc111, hcp0001, bcc110, bcc100, diamond111, add_adsorbate) from ase.data import reference_states, atomic_numbers, covalent_radii from ase.io import write from ase.visualize import view def build(): p = OptionParser(usage='%prog [options] [ads@]surf [output file]', version='%prog 0.1', description='Example ads/surf: fcc-CO@2x2Ru0001') p.add_option('-l', '--layers', type='int', default=4, help='Number of layers.') p.add_option('-v', '--vacuum', type='float', default=5.0, help='Vacuum.') p.add_option('-x', '--crystal-structure', help='Crystal structure.', choices=['sc', 'fcc', 'bcc', 'hcp']) p.add_option('-a', '--lattice-constant', type='float', help='Lattice constant in Angstrom.') p.add_option('--c-over-a', type='float', help='c/a ratio.') p.add_option('--height', type='float', help='Height of adsorbate over surface.') p.add_option('--distance', type='float', help='Distance between adsorbate and nearest surface atoms.') p.add_option('-M', '--magnetic-moment', type='float', default=0.0, help='Magnetic moment.') p.add_option('-G', '--gui', action='store_true', help="Pop up ASE's GUI.") p.add_option('-P', '--python', action='store_true', help="Write Python script.") opt, args = p.parse_args() if not 1 <= len(args) <= 2: p.error("incorrect number of arguments") if '@' in args[0]: ads, surf = args[0].split('@') else: ads = None surf = args[0] if surf[0].isdigit(): i1 = surf.index('x') n = int(surf[:i1]) i2 = i1 + 1 while surf[i2].isdigit(): i2 += 1 m = int(surf[i1 + 1:i2]) surf = surf[i2:] else: n = 1 m = 1 if surf[-1].isdigit(): if surf[1].isdigit(): face = surf[1:] surf = surf[0] else: face = surf[2:] surf = surf[:2] else: face = None Z = atomic_numbers[surf] state = reference_states[Z] if opt.crystal_structure: x = opt.crystal_structure else: x = state['symmetry'] if opt.lattice_constant: a = opt.lattice_constant else: a = estimate_lattice_constant(surf, x, opt.c_over_a) script = ['from ase.build import ', 'vac = %r' % opt.vacuum, 'a = %r' % a] if x == 'fcc': if face is None: face = '111' slab = fcc111(surf, (n, m, opt.layers), a, opt.vacuum) script[0] += 'fcc111' script += ['slab = fcc111(%r, (%d, %d, %d), a, vac)' % (surf, n, m, opt.layers)] r = a / np.sqrt(2) / 2 elif x == 'bcc': if face is None: face = '110' if face == '110': slab = bcc110(surf, (n, m, opt.layers), a, opt.vacuum) elif face == '100': slab = bcc100(surf, (n, m, opt.layers), a, opt.vacuum) script[0] += 'bcc' + face script += ['slab = bcc%s(%r, (%d, %d, %d), a, vac)' % (face, surf, n, m, opt.layers)] r = a * np.sqrt(3) / 4 elif x == 'hcp': if face is None: face = '0001' if opt.c_over_a is None: c = np.sqrt(8 / 3.0) * a else: c = opt.c_over_a * a slab = hcp0001(surf, (n, m, opt.layers), a, c, opt.vacuum) script[0] += 'hcp0001' script += ['c = %r * a' % (c / a), 'slab = hcp0001(%r, (%d, %d, %d), a, c, vac)' % (surf, n, m, opt.layers)] r = a / 2 elif x == 'diamond': if face is None: face = '111' slab = diamond111(surf, (n, m, opt.layers), a, opt.vacuum) script[0] += 'diamond111' script += ['slab = diamond111(%r, (%d, %d, %d), a, vac)' % (surf, n, m, opt.layers)] r = a * np.sqrt(3) / 8 else: raise NotImplementedError magmom = opt.magnetic_moment if magmom is None: magmom = {'Ni': 0.6, 'Co': 1.2, 'Fe': 2.3}.get(surf, 0.0) slab.set_initial_magnetic_moments([magmom] * len(slab)) if magmom != 0: script += ['slab.set_initial_magnetic_moments([%r] * len(slab))' % magmom] slab.pbc = 1 script += ['slab.pbc = True'] name = '%dx%d%s%s' % (n, m, surf, face) if ads: site = 'ontop' if '-' in ads: site, ads = ads.split('-') name = site + '-' + ads + '@' + name symbols = string2symbols(ads) nads = len(symbols) if nads == 1: script[:0] = ['from ase import Atoms'] script += ['ads = Atoms(%r)' % ads] ads = Atoms(ads) else: script[:0] = ['from ase.build import molecule'] script += ['ads = molecule(%r)' % ads] ads = molecule(ads) add_adsorbate(slab, ads, 0.0, site) d = opt.distance if d is None: d = r + covalent_radii[ads[0].number] / 2 h = opt.height if h is None: R = slab.positions y = ((R[:-nads] - R[-nads])**2).sum(1).min()**0.5 h = (d**2 - y**2)**0.5 else: assert opt.distance is None slab.positions[-nads:, 2] += h script[1] += ', add_adsorbate' script += ['add_adsorbate(slab, ads, %r, %r)' % (h, site)] if len(args) == 2: write(args[1], slab) script[1:1] = ['from ase.io import write'] script += ['write(%r, slab)' % args[1]] elif not opt.gui: write(name + '.traj', slab) script[1:1] = ['from ase.io import write'] script += ['write(%r, slab)' % (name + '.traj')] if opt.gui: view(slab) script[1:1] = ['from ase.visualize import view'] script += ['view(slab)'] if opt.python: print('\n'.join(script)) def estimate_lattice_constant(name, crystalstructure, covera): from ase.build import bulk atoms = bulk(name, crystalstructure, 1.0, covera) v0 = atoms.get_volume() v = 0.0 for Z in atoms.get_atomic_numbers(): r = covalent_radii[Z] v += 4 * np.pi / 3 * r**3 * 1.5 return (v / v0)**(1.0 / 3) if __name__ == '__main__': build() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/bulk.py000066400000000000000000000214411316323560300231470ustar00rootroot00000000000000from __future__ import division from math import sqrt from ase.atoms import Atoms, string2symbols from ase.data import reference_states, atomic_numbers, chemical_symbols from ase.utils import plural def bulk(name, crystalstructure=None, a=None, c=None, covera=None, u=None, orthorhombic=False, cubic=False): """Creating bulk systems. Crystal structure and lattice constant(s) will be guessed if not provided. name: str Chemical symbol or symbols as in 'MgO' or 'NaCl'. crystalstructure: str Must be one of sc, fcc, bcc, hcp, diamond, zincblende, rocksalt, cesiumchloride, fluorite or wurtzite. a: float Lattice constant. c: float Lattice constant. covera: float c/a ratio used for hcp. Default is ideal ratio: sqrt(8/3). u: float Internal coordinate for Wurtzite structure. orthorhombic: bool Construct orthorhombic unit cell instead of primitive cell which is the default. cubic: bool Construct cubic unit cell if possible. """ if covera is not None and c is not None: raise ValueError("Don't specify both c and c/a!") xref = None ref = {} if name in chemical_symbols: Z = atomic_numbers[name] ref = reference_states[Z] if ref is not None: xref = ref['symmetry'] structures = {'sc': 1, 'fcc': 1, 'bcc': 1, 'hcp': 1, 'diamond': 1, 'zincblende': 2, 'rocksalt':2, 'cesiumchloride':2, 'fluorite': 3, 'wurtzite': 2} if crystalstructure is None: crystalstructure = xref if crystalstructure not in structures: raise ValueError('No suitable reference data for bulk {}.' ' Reference data: {}' .format(name, ref)) if crystalstructure not in structures: raise ValueError('Unknown structure: {}.' .format(crystalstructure)) # Check name: n = len(string2symbols(name)) n0 = structures[crystalstructure] if n != n0: raise ValueError('Please specify {} for {} and not {}' .format(plural(n0, 'atom'), crystalstructure, n)) if a is None: if xref != crystalstructure: raise ValueError('You need to specify the lattice constant.') try: a = ref['a'] except KeyError: raise KeyError('No reference lattice parameter "a" for "{}"' .format(name)) if crystalstructure in ['hcp', 'wurtzite']: cubic = False if c is not None: covera = c / a elif covera is None: if xref == crystalstructure: covera = ref['c/a'] else: covera = sqrt(8 / 3) if orthorhombic and crystalstructure != 'sc': return _orthorhombic_bulk(name, crystalstructure, a, covera, u) if cubic and crystalstructure in ['bcc', 'cesiumchloride']: return _orthorhombic_bulk(name, crystalstructure, a, covera) if cubic and crystalstructure != 'sc': return _cubic_bulk(name, crystalstructure, a) if crystalstructure == 'sc': atoms = Atoms(name, cell=(a, a, a), pbc=True) elif crystalstructure == 'fcc': b = a / 2 atoms = Atoms(name, cell=[(0, b, b), (b, 0, b), (b, b, 0)], pbc=True) elif crystalstructure == 'bcc': b = a / 2 atoms = Atoms(name, cell=[(-b, b, b), (b, -b, b), (b, b, -b)], pbc=True) elif crystalstructure == 'hcp': atoms = Atoms(2 * name, scaled_positions=[(0, 0, 0), (1 / 3, 2 / 3, 0.5)], cell=[(a, 0, 0), (-a / 2, a * sqrt(3) / 2, 0), (0, 0, covera * a)], pbc=True) elif crystalstructure == 'diamond': atoms = bulk(2 * name, 'zincblende', a) elif crystalstructure == 'zincblende': s1, s2 = string2symbols(name) atoms = bulk(s1, 'fcc', a) + bulk(s2, 'fcc', a) atoms.positions[1] += a / 4 elif crystalstructure == 'rocksalt': s1, s2 = string2symbols(name) atoms = bulk(s1, 'fcc', a) + bulk(s2, 'fcc', a) atoms.positions[1, 0] += a / 2 elif crystalstructure == 'cesiumchloride': s1, s2 = string2symbols(name) atoms = bulk(s1, 'sc', a) + bulk(s2, 'sc', a) atoms.positions[1, :] += a / 2 elif crystalstructure == 'fluorite': s1, s2, s3 = string2symbols(name) atoms = bulk(s1, 'fcc', a) + bulk(s2, 'fcc', a) + bulk(s3, 'fcc', a) atoms.positions[1, :] += a / 4 atoms.positions[2, :] += a * 3 / 4 elif crystalstructure == 'wurtzite': u = u or 0.25 + 1 / 3 / covera**2 atoms = Atoms(2 * name, scaled_positions=[(0, 0, 0), (1 / 3, 2 / 3, 0.5 - u), (1 / 3, 2 / 3, 0.5), (0, 0, 1 - u)], cell=[(a, 0, 0), (-a / 2, a * sqrt(3) / 2, 0), (0, 0, a * covera)], pbc=True) else: raise ValueError('Unknown crystal structure: ' + crystalstructure) return atoms def _orthorhombic_bulk(name, crystalstructure, a, covera=None, u=None): if crystalstructure == 'fcc': b = a / sqrt(2) atoms = Atoms(2 * name, cell=(b, b, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0.5, 0.5)]) elif crystalstructure == 'bcc': atoms = Atoms(2 * name, cell=(a, a, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0.5, 0.5)]) elif crystalstructure == 'hcp': atoms = Atoms(4 * name, cell=(a, a * sqrt(3), covera * a), scaled_positions=[(0, 0, 0), (0.5, 0.5, 0), (0.5, 1 / 6, 0.5), (0, 2 / 3, 0.5)], pbc=True) elif crystalstructure == 'diamond': atoms = _orthorhombic_bulk(2 * name, 'zincblende', a) elif crystalstructure == 'zincblende': s1, s2 = string2symbols(name) b = a / sqrt(2) atoms = Atoms(2 * name, cell=(b, b, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0, 0.25), (0.5, 0.5, 0.5), (0, 0.5, 0.75)]) elif crystalstructure == 'rocksalt': s1, s2 = string2symbols(name) b = a / sqrt(2) atoms = Atoms(2 * name, cell=(b, b, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0.5, 0), (0.5, 0.5, 0.5), (0, 0, 0.5)]) elif crystalstructure == 'cesiumchloride': atoms = Atoms(name, cell=(a, a, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0.5, 0.5)]) elif crystalstructure == 'wurtzite': u = u or 0.25 + 1 / 3 / covera**2 atoms = Atoms(4 * name, cell=(a, a * 3**0.5, covera * a), scaled_positions=[(0, 0, 0), (0, 1 / 3, 0.5 - u), (0, 1 / 3, 0.5), (0, 0, 1 - u), (0.5, 0.5, 0), (0.5, 5 / 6, 0.5 - u), (0.5, 5 / 6, 0.5), (0.5, 0.5, 1 - u)], pbc=True) else: raise RuntimeError return atoms def _cubic_bulk(name, crystalstructure, a): if crystalstructure == 'fcc': atoms = Atoms(4 * name, cell=(a, a, a), pbc=True, scaled_positions=[(0, 0, 0), (0, 0.5, 0.5), (0.5, 0, 0.5), (0.5, 0.5, 0)]) elif crystalstructure == 'diamond': atoms = _cubic_bulk(2 * name, 'zincblende', a) elif crystalstructure == 'zincblende': atoms = Atoms(4 * name, cell=(a, a, a), pbc=True, scaled_positions=[(0, 0, 0), (0.25, 0.25, 0.25), (0, 0.5, 0.5), (0.25, 0.75, 0.75), (0.5, 0, 0.5), (0.75, 0.25, 0.75), (0.5, 0.5, 0), (0.75, 0.75, 0.25)]) elif crystalstructure == 'rocksalt': atoms = Atoms(4 * name, cell=(a, a, a), pbc=True, scaled_positions=[(0, 0, 0), (0.5, 0, 0), (0, 0.5, 0.5), (0.5, 0.5, 0.5), (0.5, 0, 0.5), (0, 0, 0.5), (0.5, 0.5, 0), (0, 0.5, 0)]) else: raise RuntimeError return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/general_surface.py000066400000000000000000000066721316323560300253500ustar00rootroot00000000000000import numpy as np from numpy.linalg import norm, solve from ase.utils import gcd, basestring from ase.build import bulk def surface(lattice, indices, layers, vacuum=None, tol=1e-10): """Create surface from a given lattice and Miller indices. lattice: Atoms object or str Bulk lattice structure of alloy or pure metal. Note that the unit-cell must be the conventional cell - not the primitive cell. One can also give the chemical symbol as a string, in which case the correct bulk lattice will be generated automatically. indices: sequence of three int Surface normal in Miller indices (h,k,l). layers: int Number of equivalent layers of the slab. vacuum: float Amount of vacuum added on both sides of the slab. """ indices = np.asarray(indices) if indices.shape != (3,) or not indices.any() or indices.dtype != int: raise ValueError('%s is an invalid surface type' % indices) if isinstance(lattice, basestring): lattice = bulk(lattice, cubic=True) h, k, l = indices h0, k0, l0 = (indices == 0) if h0 and k0 or h0 and l0 or k0 and l0: # if two indices are zero if not h0: c1, c2, c3 = [(0, 1, 0), (0, 0, 1), (1, 0, 0)] if not k0: c1, c2, c3 = [(0, 0, 1), (1, 0, 0), (0, 1, 0)] if not l0: c1, c2, c3 = [(1, 0, 0), (0, 1, 0), (0, 0, 1)] else: p, q = ext_gcd(k, l) a1, a2, a3 = lattice.cell # constants describing the dot product of basis c1 and c2: # dot(c1,c2) = k1+i*k2, i in Z k1 = np.dot(p * (k * a1 - h * a2) + q * (l * a1 - h * a3), l * a2 - k * a3) k2 = np.dot(l * (k * a1 - h * a2) - k * (l * a1 - h * a3), l * a2 - k * a3) if abs(k2) > tol: i = -int(round(k1 / k2)) # i corresponding to the optimal basis p, q = p + i * l, q - i * k a, b = ext_gcd(p * k + q * l, h) c1 = (p * k + q * l, -p * h, -q * h) c2 = np.array((0, l, -k)) // abs(gcd(l, k)) c3 = (b, a * p, a * q) surf = build(lattice, np.array([c1, c2, c3]), layers, tol) if vacuum is not None: surf.center(vacuum=vacuum, axis=2) return surf def build(lattice, basis, layers, tol): surf = lattice.copy() scaled = solve(basis.T, surf.get_scaled_positions().T).T scaled -= np.floor(scaled + tol) surf.set_scaled_positions(scaled) surf.set_cell(np.dot(basis, surf.cell), scale_atoms=True) surf *= (1, 1, layers) a1, a2, a3 = surf.cell surf.set_cell([a1, a2, np.cross(a1, a2) * np.dot(a3, np.cross(a1, a2)) / norm(np.cross(a1, a2))**2]) # Change unit cell to have the x-axis parallel with a surface vector # and z perpendicular to the surface: a1, a2, a3 = surf.cell surf.set_cell([(norm(a1), 0, 0), (np.dot(a1, a2) / norm(a1), np.sqrt(norm(a2)**2 - (np.dot(a1, a2) / norm(a1))**2), 0), (0, 0, norm(a3))], scale_atoms=True) surf.pbc = (True, True, False) # Move atoms into the unit cell: scaled = surf.get_scaled_positions() scaled[:, :2] %= 1 surf.set_scaled_positions(scaled) surf.cell[2] = 0.0 return surf def ext_gcd(a, b): if b == 0: return 1, 0 elif a % b == 0: return 0, 1 else: x, y = ext_gcd(b, a % b) return y, x - y * (a // b) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/molecule.py000066400000000000000000000163061316323560300240230ustar00rootroot00000000000000from ase.atoms import Atoms from ase.collections import g2 def molecule(name, vacuum=None, **kwargs): if name in extra: kwargs.update(extra[name]) mol = Atoms(**kwargs) else: mol = g2[name] if kwargs: mol = Atoms(mol, **kwargs) if vacuum is not None: mol.center(vacuum=vacuum) return mol extra = { 'Be2': { 'symbols': 'BeBe', 'positions': [[0, 0, 1.0106], [0, 0, -1.0106]]}, 'C7NH5': { 'symbols': 'C7NH5', 'positions': [[-1.593581, -1.142601, 0.], [-2.235542, 0.095555, 0.], [-0.204885, -1.210726, 0.], [0.549645, -0.025355, 0.], [1.976332, -0.085321, 0.], [-0.099258, 1.220706, 0.], [-1.488628, 1.273345, 0.], [3.136871, -0.128138, 0.], [-2.177996, -2.060896, 0.], [-3.323594, 0.141242, 0.], [0.301694, -2.173705, 0.], [0.488716, 2.136782, 0.], [-1.987765, 2.240495, 0.]]}, 'BDA': { # 1,4-Benzodiamine # aka p-Aminoaniline; p-Benzenediamine; p-Diaminobenzene; # p-Phenylenediamine; Paraphenylen-diamine # PBE-gpaw relaxed 'symbols': 'C6H4N2H4', 'positions': [[0.004212, 1.406347, 0.061073], [1.193490, 0.687096, 0.029481], [1.190824, -0.690400, -0.028344], [0.000295, -1.406191, -0.059503], [-1.186974, -0.685668, -0.045413], [-1.185376, 0.690203, 0.009452], [2.147124, 1.219997, 0.064477], [2.141593, -1.227477, -0.054266], [-2.138408, -1.222814, -0.095050], [-2.137740, 1.226930, 0.023036], [-0.006314, 2.776024, 0.186278], [-0.007340, -2.777839, -0.159936], [0.844710, -3.256543, 0.110098], [-0.854965, -3.253324, 0.130125], [0.845826, 3.267270, -0.055549], [-0.854666, 3.254654, -0.092676]]}, 'biphenyl': { # PBE-gpaw relaxed 'symbols': 'C6H5C6H5', 'positions': [[-0.74081, -0.00000, -0.00003], [-1.46261, -1.20370, -0.00993], [-2.85531, -1.20350, -0.00663], [-3.55761, -0.00000, -0.00003], [-2.85531, 1.20350, 0.00667], [-1.46261, 1.20370, 0.00997], [-0.92071, -2.14850, 0.00967], [-3.38981, -2.15110, -0.00083], [-4.64571, -0.00000, -0.00003], [-3.38981, 2.15110, 0.00077], [-0.92071, 2.14850, -0.00963], [3.55849, -0.00000, -0.00003], [2.85509, -0.86640, -0.83553], [1.46289, -0.87000, -0.83153], [0.73969, -0.00000, -0.00003], [1.46289, 0.87000, 0.83157], [2.85509, 0.86640, 0.83547], [4.64659, -0.00000, -0.00003], [3.39189, -1.53770, -1.50253], [0.91869, -1.53310, -1.50263], [0.91869, 1.53310, 1.50267], [3.39189, 1.53770, 1.50257]]}, 'C60': { # Buckminsterfullerene, I*h symm. # The Buckyball has two degrees of freedom, the C-C bond, and the # C=C bond. This is an LDA-gpaw relaxed structure with bond lengths # 1.437 and 1.385. # Experimentally, the two bond lengths are 1.45 and 1.40 Angstrom. 'symbols': 'C60', 'positions': [[2.2101953, 0.5866631, 2.6669504], [3.1076393, 0.1577008, 1.6300286], [1.3284430, -0.3158939, 3.2363232], [3.0908709, -1.1585005, 1.2014240], [3.1879245, -1.4574599, -0.1997005], [3.2214623, 1.2230966, 0.6739440], [3.3161210, 0.9351586, -0.6765151], [3.2984981, -0.4301142, -1.1204138], [-0.4480842, 1.3591484, 3.2081020], [0.4672056, 2.2949830, 2.6175264], [-0.0256575, 0.0764219, 3.5086259], [1.7727917, 1.9176584, 2.3529691], [2.3954623, 2.3095689, 1.1189539], [-0.2610195, 3.0820935, 1.6623117], [0.3407726, 3.4592388, 0.4745968], [1.6951171, 3.0692446, 0.1976623], [-2.1258394, -0.8458853, 2.6700963], [-2.5620990, 0.4855202, 2.3531715], [-0.8781521, -1.0461985, 3.2367302], [-1.7415096, 1.5679963, 2.6197333], [-1.6262468, 2.6357030, 1.6641811], [-3.2984810, 0.4301871, 1.1204208], [-3.1879469, 1.4573895, 0.1996030], [-2.3360261, 2.5813627, 0.4760912], [-0.5005210, -2.9797771, 1.7940308], [-1.7944338, -2.7729087, 1.2047891], [-0.0514245, -2.1328841, 2.7938830], [-2.5891471, -1.7225828, 1.6329715], [-3.3160705, -0.9350636, 0.6765268], [-1.6951919, -3.0692581, -0.1976564], [-2.3954901, -2.3096853, -1.1189862], [-3.2214182, -1.2231835, -0.6739581], [2.1758234, -2.0946263, 1.7922529], [1.7118619, -2.9749681, 0.7557198], [1.3130656, -1.6829416, 2.7943892], [0.3959024, -3.4051395, 0.7557638], [-0.3408219, -3.4591883, -0.4745610], [2.3360057, -2.5814499, -0.4761050], [1.6263757, -2.6357349, -1.6642309], [0.2611352, -3.0821271, -1.6622618], [-2.2100844, -0.5868636, -2.6670300], [-1.7726970, -1.9178969, -2.3530466], [-0.4670723, -2.2950509, -2.6175105], [-1.3283500, 0.3157683, -3.2362375], [-2.1759882, 2.0945383, -1.7923294], [-3.0909663, 1.1583472, -1.2015749], [-3.1076090, -0.1578453, -1.6301627], [-1.3131365, 1.6828292, -2.7943639], [0.5003224, 2.9799637, -1.7940203], [-0.3961148, 3.4052817, -0.7557272], [-1.7120629, 2.9749122, -0.7557988], [0.0512824, 2.1329478, -2.7937450], [2.1258630, 0.8460809, -2.6700534], [2.5891853, 1.7227742, -1.6329562], [1.7943010, 2.7730684, -1.2048262], [0.8781323, 1.0463514, -3.2365313], [0.4482452, -1.3591061, -3.2080510], [1.7416948, -1.5679557, -2.6197714], [2.5621724, -0.4853529, -2.3532026], [0.0257904, -0.0763567, -3.5084446]]}} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/ribbon.py000066400000000000000000000103301316323560300234600ustar00rootroot00000000000000from __future__ import print_function from math import sqrt import numpy as np from ase.atoms import Atoms def graphene_nanoribbon(n, m, type='zigzag', saturated=False, C_H=1.09, C_C=1.42, vacuum=None, magnetic=False, initial_mag=1.12, sheet=False, main_element='C', saturate_element='H'): """Create a graphene nanoribbon. Creates a graphene nanoribbon in the x-z plane, with the nanoribbon running along the z axis. Parameters: n: int The width of the nanoribbon. m: int The length of the nanoribbon. type: str The orientation of the ribbon. Must be either 'zigzag' or 'armchair'. saturated: bool If true, hydrogen atoms are placed along the edge. C_H: float Carbon-hydrogen bond length. Default: 1.09 Angstrom. C_C: float Carbon-carbon bond length. Default: 1.42 Angstrom. vacuum: None (default) or float Amount of vacuum added to non-periodic directions, if present. magnetic: bool Make the edges magnetic. initial_mag: float Magnitude of magnetic moment if magnetic. sheet: bool If true, make an infinite sheet instead of a ribbon (default: False) """ b = sqrt(3) * C_C / 4 arm_unit = Atoms(main_element + '4', pbc=(1, 0, 1), cell=[4 * b, 0, 3 * C_C]) arm_unit.positions = [[0, 0, 0], [b * 2, 0, C_C / 2.], [b * 2, 0, 3 * C_C / 2.], [0, 0, 2 * C_C]] zz_unit = Atoms(main_element + '2', pbc=(1, 0, 1), cell=[3 * C_C / 2.0, 0, b * 4]) zz_unit.positions = [[0, 0, 0], [C_C / 2.0, 0, b * 2]] atoms = Atoms() if type == 'zigzag': edge_index0 = np.arange(m) * 2 + 1 edge_index1 = (n - 1) * m * 2 + np.arange(m) * 2 if magnetic: mms = np.zeros(m * n * 2) for i in edge_index0: mms[i] = initial_mag for i in edge_index1: mms[i] = -initial_mag for i in range(n): layer = zz_unit.repeat((1, 1, m)) layer.positions[:, 0] -= 3 * C_C / 2 * i if i % 2 == 1: layer.positions[:, 2] += 2 * b layer[-1].position[2] -= b * 4 * m atoms += layer if magnetic: atoms.set_initial_magnetic_moments(mms) if saturated: H_atoms0 = Atoms(saturate_element + str(m)) H_atoms0.positions = atoms[edge_index0].positions H_atoms0.positions[:, 0] += C_H H_atoms1 = Atoms(saturate_element + str(m)) H_atoms1.positions = atoms[edge_index1].positions H_atoms1.positions[:, 0] -= C_H atoms += H_atoms0 + H_atoms1 atoms.cell = [n * 3 * C_C / 2, 0, m * 4 * b] elif type == 'armchair': for i in range(n): layer = arm_unit.repeat((1, 1, m)) layer.positions[:, 0] -= 4 * b * i atoms += layer if saturated: arm_right_saturation = Atoms(saturate_element + '2', pbc=(1, 0, 1), cell=[4 * b, 0, 3 * C_C]) arm_right_saturation.positions = [ [- sqrt(3) / 2 * C_H, 0, C_H * 0.5], [- sqrt(3) / 2 * C_H, 0, 2 * C_C - C_H * 0.5]] arm_left_saturation = Atoms(saturate_element + '2', pbc=(1, 0, 1), cell=[4 * b, 0, 3 * C_C]) arm_left_saturation.positions = [ [b * 2 + sqrt(3) / 2 * C_H, 0, C_C / 2 - C_H * 0.5], [b * 2 + sqrt(3) / 2 * C_H, 0, 3 * C_C / 2.0 + C_H * 0.5]] arm_right_saturation.positions[:, 0] -= 4 * b * (n - 1) atoms += arm_right_saturation.repeat((1, 1, m)) atoms += arm_left_saturation.repeat((1, 1, m)) atoms.cell = [b * 4 * n, 0, 3 * C_C * m] atoms.set_pbc([sheet, False, True]) atoms.set_scaled_positions(atoms.get_scaled_positions() % 1.0) if not sheet: atoms.cell[0] = 0.0 if vacuum: atoms.center(vacuum, axis=1) if not sheet: atoms.center(vacuum, axis=0) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/root.py000066400000000000000000000205631316323560300232010ustar00rootroot00000000000000from math import atan2, ceil, cos, sin, log10 import numpy as np from ase.build import hcp0001, fcc111, bcc111 def hcp0001_root(symbol, root, size, a=None, c=None, vacuum=None, orthogonal=False): """HCP(0001) surface maniupulated to have a x unit side length of *root* before repeating. This also results in *root* number of repetitions of the cell. The first 20 valid roots for nonorthogonal are... 1, 3, 4, 7, 9, 12, 13, 16, 19, 21, 25, 27, 28, 31, 36, 37, 39, 43, 48, 49""" atoms = hcp0001(symbol=symbol, size=(1, 1, size[2]), a=a, c=c, vacuum=vacuum, orthogonal=orthogonal) atoms = root_surface(atoms, root) atoms *= (size[0], size[1], 1) return atoms def fcc111_root(symbol, root, size, a=None, vacuum=None, orthogonal=False): """FCC(111) surface maniupulated to have a x unit side length of *root* before repeating. This also results in *root* number of repetitions of the cell. The first 20 valid roots for nonorthogonal are... 1, 3, 4, 7, 9, 12, 13, 16, 19, 21, 25, 27, 28, 31, 36, 37, 39, 43, 48, 49""" atoms = fcc111(symbol=symbol, size=(1, 1, size[2]), a=a, vacuum=vacuum, orthogonal=orthogonal) atoms = root_surface(atoms, root) atoms *= (size[0], size[1], 1) return atoms def bcc111_root(symbol, root, size, a=None, vacuum=None, orthogonal=False): """BCC(111) surface maniupulated to have a x unit side length of *root* before repeating. This also results in *root* number of repetitions of the cell. The first 20 valid roots for nonorthogonal are... 1, 3, 4, 7, 9, 12, 13, 16, 19, 21, 25, 27, 28, 31, 36, 37, 39, 43, 48, 49""" atoms = bcc111(symbol=symbol, size=(1, 1, size[2]), a=a, vacuum=vacuum, orthogonal=orthogonal) atoms = root_surface(atoms, root) atoms *= (size[0], size[1], 1) return atoms def root_surface(primitive_slab, root, swap_alpha=False, eps=1e-8): """Creates a cell from a primitive cell that repeats along the x and y axis in a way consisent with the primitive cell, that has been cut to have a side length of *root*. *primitive cell* should be a primitive 2d cell of your slab, repeated as needed in the z direction. *root* should be determined using an analysis tool such as the root_surface_analysis function, or prior knowledge. It should always be a whole number as it represents the number of repetitions. *swap_alpha* swaps the alpha angle of the cell.""" logeps = int(-log10(eps)) atoms = primitive_slab.copy() xscale = np.linalg.norm(atoms.cell[0][0:2]) xx, xy = atoms.cell[0][0:2] / xscale yx, yy = atoms.cell[1][0:2] / xscale cell_vectors = [[xx, xy], [yx, yy]] # Make (0, 0) corner's angle flip from acute to obtuse or # obtuse to acute with a small trick if swap_alpha: cell_vectors[1][0] *= -1 # Manipulate the cell vectors to find the best search zone and # cast to numpy array. cell_vectors = np.array(cell_vectors) cell_vectors_mag = [np.linalg.norm(x) for x in cell_vectors] cell_search = [int(ceil(float(root * 1.2) / float(x))) for x in cell_vectors_mag] # Make these variables in function scope # x, y = Raw grid point # tx, ty = Transformed grid point x, y, tx, ty = 0, 0, 0, 0 # Calculate square distances and break when appropriate for x in range(cell_search[0]): for y in range(cell_search[1]): if x == 0 or y == 0: continue vect = (cell_vectors[0] * x) + (cell_vectors[1] * y) dist = round((vect ** 2).sum(), logeps) if dist == root: tx, ty = vect break else: continue break else: # A root cell could not be found for this combination raise RuntimeError("Can't find a root cell of {0} in [{1}, {2}]". format(root, cell_vectors[0], cell_vectors[1])) tmag = np.linalg.norm((tx, ty)) root_angle = -atan2(ty, tx) cell_scale = tmag / cell_vectors_mag[0] root_rotation = [[cos(root_angle), -sin(root_angle)], [sin(root_angle), cos(root_angle)]] cell = [np.dot(x, root_rotation) * cell_scale for x in cell_vectors] def pretrim(atoms): cell = atoms.cell pos = atoms.positions vertices = np.array([[0, 0], cell[0][0:2], cell[1][0:2], cell[0][0:2] + cell[1][0:2]]) mins = vertices.min(axis=0) maxs = vertices.max(axis=0) out = np.where(np.logical_not((pos[:, 0] >= mins[0] - eps * 10) & (pos[:, 0] <= maxs[0] + eps * 10) & (pos[:, 1] >= mins[1] - eps * 10) & (pos[:, 1] <= maxs[1] + eps * 10))) del atoms[out] def remove_doubles(atoms, shift=True): shift_vector = np.array([eps * 100, eps * 200, eps * 300]) if shift: atoms.translate(shift_vector) atoms.set_scaled_positions(atoms.get_scaled_positions()) valid = [0] for x in range(len(atoms)): for ypos, y in enumerate(valid): xa = atoms[x].position ya = atoms[y].position if np.linalg.norm(xa - ya) < eps: break else: valid.append(x) del atoms[[i for i in range(len(atoms)) if i not in valid]] if shift: atoms.translate(shift_vector * -1) atoms_cell_mag = [np.linalg.norm(x) for x in np.array(atoms.cell[0:2, 0:2])] cell_vect_mag = [np.linalg.norm(x) for x in np.array(cell_vectors)] cell_scale = np.divide(atoms_cell_mag, cell_vect_mag) atoms *= (cell_search[0], cell_search[1], 1) atoms.cell[0:2, 0:2] = cell * cell_scale atoms.center() pretrim(atoms) remove_doubles(atoms, shift=False) remove_doubles(atoms, shift=True) def rot(vector, angle): return [(vector[0] * cos(angle)) - (vector[1] * sin(angle)), (vector[0] * sin(angle)) + (vector[1] * cos(angle))] angle = -atan2(atoms.cell[0][1], atoms.cell[0][0]) atoms.cell[0][0:2] = rot(atoms.cell[0][0:2], angle) atoms.cell[1][0:2] = rot(atoms.cell[1][0:2], angle) for atom in atoms: atom.position[0:2] = rot(atom.position[0:2], angle) atoms.center() atoms.positions = np.around(atoms.positions, decimals=logeps) ind = np.lexsort( (atoms.positions[:, 0], atoms.positions[:, 1], atoms.positions[:, 2],)) return atoms[ind] def root_surface_analysis(primitive_slab, root, allow_above=False, eps=1e-8): """A tool to analyze a slab and look for valid roots that exist, up to the given root. This is useful for generating all possible cells without prior knowledge. *primitive slab* is the primitive cell to analyze. *root* is the desired root to find, and all below. *allow_above* allows you to also include cells above the given *root* if found in the process. Otherwise these are trimmed off.""" logeps = int(-log10(eps)) atoms = primitive_slab # Normalize the x axis to a distance of 1, and use the cell # We ignore the z axis because this code cannot handle it xscale = np.linalg.norm(atoms.cell[0][0:2]) xx, xy = atoms.cell[0][0:2] / xscale yx, yy = atoms.cell[1][0:2] / xscale cell_vectors = [[xx, xy], [yx, yy]] # Manipulate the cell vectors to find the best search zone and # cast to numpy array. cell_vectors = np.array(cell_vectors) cell_vectors_mag = [np.linalg.norm(x) for x in cell_vectors] cell_search = [int(ceil(float(root * 1.2) / float(x))) for x in cell_vectors_mag] # Returns valid roots that are found in the given search # space. To find more, use a higher root. valid = set() for x in range(cell_search[0]): for y in range(cell_search[1]): if x == y == 0: continue vect = (cell_vectors[0] * x) + (cell_vectors[1] * y) dist = round((vect ** 2).sum(), logeps) # Only integer roots make sense logically if dist.is_integer(): if dist <= root or allow_above: valid.add(int(dist)) return sorted(list(valid)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/rotate.py000066400000000000000000000046301316323560300235110ustar00rootroot00000000000000import numpy as np def rotation_matrix_from_points(m0, m1): """Returns a rigid transformation/rotation matrix that minimizes the RMSD between two set of points. m0 and m1 should be (3, npoints) numpy arrays with coordinates as columns:: (x1 x2 x3 ... xN y1 y2 y3 ... yN z1 z2 z3 ... zN) The centeroids should be set to origin prior to computing the rotation matrix. The rotation matrix is computed using quaternion algebra as detailed in:: Melander et al. J. Chem. Theory Comput., 2015, 11,1055 """ v0 = np.copy(m0) v1 = np.copy(m1) # compute the rotation quaternion R11, R22, R33 = np.sum(v0 * v1, axis=1) R12, R23, R31 = np.sum(v0 * np.roll(v1, -1, axis=0), axis=1) R13, R21, R32 = np.sum(v0 * np.roll(v1, -2, axis=0), axis=1) f = [[R11 + R22 + R33, R23 - R32, R31 - R13, R12 - R21], [R23 - R32, R11 - R22 - R33, R12 + R21, R13 + R31], [R31 - R13, R12 + R21, -R11 + R22 - R33, R23 + R32], [R12 - R21, R13 + R31, R23 + R32, -R11 - R22 + R33]] F = np.array(f) w, V = np.linalg.eigh(F) # eigenvector corresponding to the most # positive eigenvalue q = V[:, np.argmax(w)] # Rotation matrix from the quaternion q R = quaternion_to_matrix(q) return R def quaternion_to_matrix(q): """Returns a rotation matrix. Computed from a unit quaternion Input as (4,) numpy array. """ q0, q1, q2, q3 = q R_q = [[q0**2 + q1**2 - q2**2 - q3**2, 2 * (q1 * q2 - q0 * q3), 2 * (q1 * q3 + q0 * q2)], [2 * (q1 * q2 + q0 * q3), q0**2 - q1**2 + q2**2 - q3**2, 2 * (q2 * q3 - q0 * q1)], [2 * (q1 * q3 - q0 * q2), 2 * (q2 * q3 + q0 * q1), q0**2 - q1**2 - q2**2 + q3**2]] return np.array(R_q) def minimize_rotation_and_translation(target, atoms): """Minimize RMSD between atoms and target. Rotate and translate atoms to best match target. For more details, see:: Melander et al. J. Chem. Theory Comput., 2015, 11,1055 """ p = atoms.get_positions() p0 = target.get_positions() # centeroids to origin c = np.mean(p, axis=0) p -= c c0 = np.mean(p0, axis=0) p0 -= c0 # Compute rotation matrix R = rotation_matrix_from_points(p.T, p0.T) atoms.set_positions(np.dot(p, R.T) + c0) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/supercells.py000066400000000000000000000303541316323560300243760ustar00rootroot00000000000000"""Helper functions for creating supercells.""" import numpy as np def get_deviation_from_optimal_cell_shape(cell, target_shape='sc', norm=None): """Calculate the deviation of the given cell metric from the ideal cell metric defining a certain shape. Specifically, the function evaluates the expression `\Delta = || Q \mathbf{h} - \mathbf{h}_{target}||_2`, where `\mathbf{h}` is the input metric (*cell*) and `Q` is a normalization factor (*norm*) while the target metric `\mathbf{h}_{target}` (via *target_shape*) represent simple cubic ('sc') or face-centered cubic ('fcc') cell shapes. Parameters: cell: 2D array of floats Metric given as a (3x3 matrix) of the input structure. target_shape: str Desired supercell shape. Can be 'sc' for simple cubic or 'fcc' for face-centered cubic. norm: float Specify the normalization factor. This is useful to avoid recomputing the normalization factor when computing the deviation for a series of P matrices. """ if target_shape in ['sc', 'simple-cubic']: target_metric = np.eye(3) elif target_shape in ['fcc', 'face-centered cubic']: target_metric = 0.5 * np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) if not norm: norm = (np.linalg.det(cell) / np.linalg.det(target_metric))**(-1.0 / 3) return np.linalg.norm(norm * cell - target_metric) def find_optimal_cell_shape(cell, target_size, target_shape, lower_limit=-2, upper_limit=2, verbose=False): """Returns the transformation matrix that produces a supercell corresponding to a certain number of unit cells (*target_size*) based on a primitive metric (*cell*) that most closely approximates a desired shape (*target_shape*). Note: This implementation uses inline-C via `scipy.weave `_ to achieve a significant speed-up (about two orders of magnitude) compared to the pure python implementation in the :func:`~ase.build.find_optimal_cell_shape_pure_python` function. Parameters: cell: 2D array of floats Metric given as a (3x3 matrix) of the input structure. target_size: integer Size of desired super cell in number of unit cells. target_shape: str Desired supercell shape. Can be 'sc' for simple cubic or 'fcc' for face-centered cubic. lower_limit: int Lower limit of search range. upper_limit: int Upper limit of search range. verbose: bool Set to True to obtain additional information regarding construction of transformation matrix. """ # Inline C code that does the heavy work. # It iterates over all possible matrices and finds the best match. code = """ #include // The code below will search over a large number of matrices // that are generated from a set of integer numbers between // imin and imax. int imin = search_range[0]; int imax = search_range[1]; // For the sake of readability the input cell metric is copied // to a set of double variables. double h11 = norm_cell[0]; // [3 * 0 + 0]; double h12 = norm_cell[1]; // [3 * 0 + 1]; double h13 = norm_cell[2]; // [3 * 0 + 2]; double h21 = norm_cell[3]; // [3 * 1 + 0]; double h22 = norm_cell[4]; // [3 * 1 + 1]; double h23 = norm_cell[5]; // [3 * 1 + 2]; double h31 = norm_cell[6]; // [3 * 2 + 0]; double h32 = norm_cell[7]; // [3 * 2 + 1]; double h33 = norm_cell[8]; // [3 * 2 + 2]; double det_P; // will store determinant of P matrix double m; // auxiliary variable double current_score; // l2-norm of (QPh - h_opt) for (int dxx=imin ; dxx<=imax ; dxx++) for (int dxy=imin ; dxy<=imax ; dxy++) for (int dxz=imin ; dxz<=imax ; dxz++) for (int dyx=imin ; dyx<=imax ; dyx++) for (int dyy=imin ; dyy<=imax ; dyy++) for (int dyz=imin ; dyz<=imax ; dyz++) for (int dzx=imin ; dzx<=imax ; dzx++) for (int dzy=imin ; dzy<=imax ; dzy++) for (int dzz=imin ; dzz<=imax ; dzz++) { // P matrix int xx = starting_P[0] + dxx; int xy = starting_P[1] + dxy; int xz = starting_P[2] + dxz; int yx = starting_P[3] + dyx; int yy = starting_P[4] + dyy; int yz = starting_P[5] + dyz; int zx = starting_P[6] + dzx; int zy = starting_P[7] + dzy; int zz = starting_P[8] + dzz; // compute determinant det_P = 0; det_P += xx*yy*zz; det_P += xy*yz*zx; det_P += xz*yx*zy; det_P -= xx*yz*zy; det_P -= xy*yx*zz; det_P -= xz*yy*zx; if (det_P == target_size[0]) { // compute l2-norm squared (taking the square root // is unnecessary and just consumes computer time) current_score = 0.0; current_score += pow(xx * h11 + xy * h21 + xz * h31 - target_metric[0], 2); // 1-1 current_score += pow(xx * h12 + xy * h22 + xz * h32 - target_metric[1], 2); current_score += pow(xx * h13 + xy * h23 + xz * h33 - target_metric[2], 2); current_score += pow(yx * h11 + yy * h21 + yz * h31 - target_metric[3], 2); current_score += pow(yx * h12 + yy * h22 + yz * h32 - target_metric[4], 2); // 2-2 current_score += pow(yx * h13 + yy * h23 + yz * h33 - target_metric[5], 2); current_score += pow(zx * h11 + zy * h21 + zz * h31 - target_metric[6], 2); current_score += pow(zx * h12 + zy * h22 + zz * h32 - target_metric[7], 2); current_score += pow(zx * h13 + zy * h23 + zz * h33 - target_metric[8], 2); // 3-3 if (current_score < best_score[0]) { best_score[0] = current_score; optimal_P[0] = xx; // [3 * 0 + 0]; optimal_P[1] = xy; // [3 * 0 + 1]; optimal_P[2] = xz; // [3 * 0 + 2]; optimal_P[3] = yx; // [3 * 1 + 0]; optimal_P[4] = yy; // [3 * 1 + 1]; optimal_P[5] = yz; // [3 * 1 + 2]; optimal_P[6] = zx; // [3 * 2 + 0]; optimal_P[7] = zy; // [3 * 2 + 1]; optimal_P[8] = zz; // [3 * 2 + 2]; } } } """ # Set up target metric if target_shape in ['sc', 'simple-cubic']: target_metric = np.eye(3) elif target_shape in ['fcc', 'face-centered cubic']: target_metric = 0.5 * np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]], dtype=float) if verbose: print('target metric (h_target):') print(target_metric) # Normalize cell metric to reduce computation time during looping norm = (target_size * np.linalg.det(cell) / np.linalg.det(target_metric))**(-1.0 / 3) norm_cell = norm * cell if verbose: print('normalization factor (Q): %g' % norm) # Approximate initial P matrix ideal_P = np.dot(target_metric, np.linalg.inv(norm_cell)) if verbose: print('idealized transformation matrix:') print(ideal_P) starting_P = np.array(np.around(ideal_P, 0), dtype=int) if verbose: print('closest integer transformation matrix (P_0):') print(starting_P) # Prepare run. # Weave expects all input/output variables to be numpy arrays. best_score = np.array([100000.0]) optimal_P = np.zeros((3, 3)) search_range = np.array([lower_limit, upper_limit], dtype=int) target_size = np.array(target_size, dtype=int) # Execute the inline C code. from scipy import weave weave.inline(code, ['search_range', 'norm_cell', 'best_score', 'optimal_P', 'target_metric', 'target_size', 'starting_P']) # This is done to satisfy pyflakes/pep8. search_range -= 1 # Finalize. if verbose: print('smallest score (|Q P h_p - h_target|_2): %f' % best_score) print('optimal transformation matrix (P_opt):') print(optimal_P) print('supercell metric:') print(np.round(np.dot(optimal_P, cell), 4)) print('determinant of optimal transformation matrix: %d' % np.linalg.det(optimal_P)) return optimal_P def find_optimal_cell_shape_pure_python(cell, target_size, target_shape, lower_limit=-2, upper_limit=2, verbose=False): """Returns the transformation matrix that produces a supercell corresponding to *target_size* unit cells with metric *cell* that most closely approximates the shape defined by *target_shape*. Note: This pure python implementation of the is much slower than the inline-C version provided in :func:`~ase.build.find_optimal_cell_shape`. Parameters: cell: 2D array of floats Metric given as a (3x3 matrix) of the input structure. target_size: integer Size of desired super cell in number of unit cells. target_shape: str Desired supercell shape. Can be 'sc' for simple cubic or 'fcc' for face-centered cubic. lower_limit: int Lower limit of search range. upper_limit: int Upper limit of search range. verbose: bool Set to True to obtain additional information regarding construction of transformation matrix. """ # Set up target metric if target_shape in ['sc', 'simple-cubic']: target_metric = np.eye(3) elif target_shape in ['fcc', 'face-centered cubic']: target_metric = 0.5 * np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]], dtype=float) if verbose: print('target metric (h_target):') print(target_metric) # Normalize cell metric to reduce computation time during looping norm = (target_size * np.linalg.det(cell) / np.linalg.det(target_metric))**(-1.0 / 3) norm_cell = norm * cell if verbose: print('normalization factor (Q): %g' % norm) # Approximate initial P matrix ideal_P = np.dot(target_metric, np.linalg.inv(norm_cell)) if verbose: print('idealized transformation matrix:') print(ideal_P) starting_P = np.array(np.around(ideal_P, 0), dtype=int) if verbose: print('closest integer transformation matrix (P_0):') print(starting_P) # Prepare run. from itertools import product best_score = 1e6 optimal_P = None for dP in product(range(lower_limit, upper_limit + 1), repeat=9): dP = np.array(dP, dtype=int).reshape(3, 3) P = starting_P + dP if int(np.linalg.det(P)) != target_size: continue score = get_deviation_from_optimal_cell_shape( np.dot(P, norm_cell), target_shape=target_shape, norm=1.0) if score < best_score: best_score = score optimal_P = P if optimal_P is None: print('Failed to find a transformation matrix.') return None # Finalize. if verbose: print('smallest score (|Q P h_p - h_target|_2): %f' % best_score) print('optimal transformation matrix (P_opt):') print(optimal_P) print('supercell metric:') print(np.round(np.dot(optimal_P, cell), 4)) print('determinant of optimal transformation matrix: %d' % np.linalg.det(optimal_P)) return optimal_P def make_supercell(prim, P): """Generate a supercell by applying a general transformation (*P*) to the input configuration (*prim*). The transformation is described by a 3x3 integer matrix `\mathbf{P}`. Specifically, the new cell metric `\mathbf{h}` is given in terms of the metric of the input configuraton `\mathbf{h}_p` by `\mathbf{P h}_p = \mathbf{h}`. Internally this function uses the :func:`~ase.build.cut` function. Parameters: prim: ASE Atoms object Input configuration. P: 3x3 integer matrix Transformation matrix `\mathbf{P}`. """ from ase.build import cut return cut(prim, P[0], P[1], P[2]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/surface.py000066400000000000000000000412031316323560300236400ustar00rootroot00000000000000"""Helper functions for creating the most common surfaces and related tasks. The helper functions can create the most common low-index surfaces, add vacuum layers and add adsorbates. """ from __future__ import division from math import sqrt from operator import itemgetter import numpy as np from ase.atom import Atom from ase.atoms import Atoms from ase.data import reference_states, atomic_numbers from ase.lattice.cubic import FaceCenteredCubic from ase.utils import basestring def fcc100(symbol, size, a=None, vacuum=None, orthogonal=True): """FCC(100) surface. Supported special adsorption sites: 'ontop', 'bridge', 'hollow'.""" if not orthogonal: raise NotImplementedError("Can't do non-orthogonal cell yet!") return _surface(symbol, 'fcc', '100', size, a, None, vacuum, orthogonal) def fcc110(symbol, size, a=None, vacuum=None, orthogonal=True): """FCC(110) surface. Supported special adsorption sites: 'ontop', 'longbridge', 'shortbridge', 'hollow'.""" if not orthogonal: raise NotImplementedError("Can't do non-orthogonal cell yet!") return _surface(symbol, 'fcc', '110', size, a, None, vacuum, orthogonal) def bcc100(symbol, size, a=None, vacuum=None, orthogonal=True): """BCC(100) surface. Supported special adsorption sites: 'ontop', 'bridge', 'hollow'.""" if not orthogonal: raise NotImplementedError("Can't do non-orthogonal cell yet!") return _surface(symbol, 'bcc', '100', size, a, None, vacuum, orthogonal) def bcc110(symbol, size, a=None, vacuum=None, orthogonal=False): """BCC(110) surface. Supported special adsorption sites: 'ontop', 'longbridge', 'shortbridge', 'hollow'. Use *orthogonal=True* to get an orthogonal unit cell - works only for size=(i,j,k) with j even.""" return _surface(symbol, 'bcc', '110', size, a, None, vacuum, orthogonal) def bcc111(symbol, size, a=None, vacuum=None, orthogonal=False): """BCC(111) surface. Supported special adsorption sites: 'ontop'. Use *orthogonal=True* to get an orthogonal unit cell - works only for size=(i,j,k) with j even.""" return _surface(symbol, 'bcc', '111', size, a, None, vacuum, orthogonal) def fcc111(symbol, size, a=None, vacuum=None, orthogonal=False): """FCC(111) surface. Supported special adsorption sites: 'ontop', 'bridge', 'fcc' and 'hcp'. Use *orthogonal=True* to get an orthogonal unit cell - works only for size=(i,j,k) with j even.""" return _surface(symbol, 'fcc', '111', size, a, None, vacuum, orthogonal) def hcp0001(symbol, size, a=None, c=None, vacuum=None, orthogonal=False): """HCP(0001) surface. Supported special adsorption sites: 'ontop', 'bridge', 'fcc' and 'hcp'. Use *orthogonal=True* to get an orthogonal unit cell - works only for size=(i,j,k) with j even.""" return _surface(symbol, 'hcp', '0001', size, a, c, vacuum, orthogonal) def hcp10m10(symbol, size, a=None, c=None, vacuum=None, orthogonal=True): """HCP(10m10) surface. Supported special adsorption sites: 'ontop'. Works only for size=(i,j,k) with j even.""" if not orthogonal: raise NotImplementedError("Can't do non-orthogonal cell yet!") return _surface(symbol, 'hcp', '10m10', size, a, c, vacuum, orthogonal) def diamond100(symbol, size, a=None, vacuum=None, orthogonal=True): """DIAMOND(100) surface. Supported special adsorption sites: 'ontop'.""" if not orthogonal: raise NotImplementedError("Can't do non-orthogonal cell yet!") return _surface(symbol, 'diamond', '100', size, a, None, vacuum, orthogonal) def diamond111(symbol, size, a=None, vacuum=None, orthogonal=False): """DIAMOND(111) surface. Supported special adsorption sites: 'ontop'.""" if orthogonal: raise NotImplementedError("Can't do orthogonal cell yet!") return _surface(symbol, 'diamond', '111', size, a, None, vacuum, orthogonal) def add_adsorbate(slab, adsorbate, height, position=(0, 0), offset=None, mol_index=0): """Add an adsorbate to a surface. This function adds an adsorbate to a slab. If the slab is produced by one of the utility functions in ase.build, it is possible to specify the position of the adsorbate by a keyword (the supported keywords depend on which function was used to create the slab). If the adsorbate is a molecule, the atom indexed by the mol_index optional argument is positioned on top of the adsorption position on the surface, and it is the responsibility of the user to orient the adsorbate in a sensible way. This function can be called multiple times to add more than one adsorbate. Parameters: slab: The surface onto which the adsorbate should be added. adsorbate: The adsorbate. Must be one of the following three types: A string containing the chemical symbol for a single atom. An atom object. An atoms object (for a molecular adsorbate). height: Height above the surface. position: The x-y position of the adsorbate, either as a tuple of two numbers or as a keyword (if the surface is produced by one of the functions in ase.build). offset (default: None): Offsets the adsorbate by a number of unit cells. Mostly useful when adding more than one adsorbate. mol_index (default: 0): If the adsorbate is a molecule, index of the atom to be positioned above the location specified by the position argument. Note *position* is given in absolute xy coordinates (or as a keyword), whereas offset is specified in unit cells. This can be used to give the positions in units of the unit cell by using *offset* instead. """ info = slab.info.get('adsorbate_info', {}) pos = np.array([0.0, 0.0]) # (x, y) part spos = np.array([0.0, 0.0]) # part relative to unit cell if offset is not None: spos += np.asarray(offset, float) if isinstance(position, basestring): # A site-name: if 'sites' not in info: raise TypeError('If the atoms are not made by an ' + 'ase.build function, ' + 'position cannot be a name.') if position not in info['sites']: raise TypeError('Adsorption site %s not supported.' % position) spos += info['sites'][position] else: pos += position if 'cell' in info: cell = info['cell'] else: cell = slab.get_cell()[:2, :2] pos += np.dot(spos, cell) # Convert the adsorbate to an Atoms object if isinstance(adsorbate, Atoms): ads = adsorbate elif isinstance(adsorbate, Atom): ads = Atoms([adsorbate]) else: # Assume it is a string representing a single Atom ads = Atoms([Atom(adsorbate)]) # Get the z-coordinate: if 'top layer atom index' in info: a = info['top layer atom index'] else: a = slab.positions[:, 2].argmax() if 'adsorbate_info' not in slab.info: slab.info['adsorbate_info'] = {} slab.info['adsorbate_info']['top layer atom index'] = a z = slab.positions[a, 2] + height # Move adsorbate into position ads.translate([pos[0], pos[1], z] - ads.positions[mol_index]) # Attach the adsorbate slab.extend(ads) def add_vacuum(atoms, vacuum): """Add vacuum layer to the atoms. Parameters: atoms: Atoms object Most likely created by one of the surface functions. vacuum: float The thickness of the vacuum layer (in Angstrom). """ uc = atoms.get_cell() normal = np.cross(uc[0], uc[1]) costheta = np.dot(normal, uc[2]) / np.sqrt(np.dot(normal, normal) * np.dot(uc[2], uc[2])) length = np.sqrt(np.dot(uc[2], uc[2])) newlength = length + vacuum / costheta uc[2] *= newlength / length atoms.set_cell(uc) def _surface(symbol, structure, face, size, a, c, vacuum, orthogonal=True): """Function to build often used surfaces. Don't call this function directly - use fcc100, fcc110, bcc111, ...""" Z = atomic_numbers[symbol] if a is None: sym = reference_states[Z]['symmetry'] if sym != structure: raise ValueError("Can't guess lattice constant for %s-%s!" % (structure, symbol)) a = reference_states[Z]['a'] if structure == 'hcp' and c is None: if reference_states[Z]['symmetry'] == 'hcp': c = reference_states[Z]['c/a'] * a else: c = sqrt(8 / 3.0) * a positions = np.empty((size[2], size[1], size[0], 3)) positions[..., 0] = np.arange(size[0]).reshape((1, 1, -1)) positions[..., 1] = np.arange(size[1]).reshape((1, -1, 1)) positions[..., 2] = np.arange(size[2]).reshape((-1, 1, 1)) numbers = np.ones(size[0] * size[1] * size[2], int) * Z tags = np.empty((size[2], size[1], size[0]), int) tags[:] = np.arange(size[2], 0, -1).reshape((-1, 1, 1)) slab = Atoms(numbers, tags=tags.ravel(), pbc=(True, True, False), cell=size) surface_cell = None sites = {'ontop': (0, 0)} surf = structure + face if surf == 'fcc100': cell = (sqrt(0.5), sqrt(0.5), 0.5) positions[-2::-2, ..., :2] += 0.5 sites.update({'hollow': (0.5, 0.5), 'bridge': (0.5, 0)}) elif surf == 'diamond100': cell = (sqrt(0.5), sqrt(0.5), 0.5 / 2) positions[-4::-4, ..., :2] += (0.5, 0.5) positions[-3::-4, ..., :2] += (0.0, 0.5) positions[-2::-4, ..., :2] += (0.0, 0.0) positions[-1::-4, ..., :2] += (0.5, 0.0) elif surf == 'fcc110': cell = (1.0, sqrt(0.5), sqrt(0.125)) positions[-2::-2, ..., :2] += 0.5 sites.update({'hollow': (0.5, 0.5), 'longbridge': (0.5, 0), 'shortbridge': (0, 0.5)}) elif surf == 'bcc100': cell = (1.0, 1.0, 0.5) positions[-2::-2, ..., :2] += 0.5 sites.update({'hollow': (0.5, 0.5), 'bridge': (0.5, 0)}) else: if orthogonal and size[1] % 2 == 1: raise ValueError(("Can't make orthorhombic cell with size=%r. " % (tuple(size),)) + 'Second number in size must be even.') if surf == 'fcc111': cell = (sqrt(0.5), sqrt(0.375), 1 / sqrt(3)) if orthogonal: positions[-1::-3, 1::2, :, 0] += 0.5 positions[-2::-3, 1::2, :, 0] += 0.5 positions[-3::-3, 1::2, :, 0] -= 0.5 positions[-2::-3, ..., :2] += (0.0, 2.0 / 3) positions[-3::-3, ..., :2] += (0.5, 1.0 / 3) else: positions[-2::-3, ..., :2] += (-1.0 / 3, 2.0 / 3) positions[-3::-3, ..., :2] += (1.0 / 3, 1.0 / 3) sites.update({'bridge': (0.5, 0), 'fcc': (1.0 / 3, 1.0 / 3), 'hcp': (2.0 / 3, 2.0 / 3)}) elif surf == 'diamond111': cell = (sqrt(0.5), sqrt(0.375), 1 / sqrt(3) / 2) assert not orthogonal positions[-1::-6, ..., :3] += (0.0, 0.0, 0.5) positions[-2::-6, ..., :2] += (0.0, 0.0) positions[-3::-6, ..., :3] += (-1.0 / 3, 2.0 / 3, 0.5) positions[-4::-6, ..., :2] += (-1.0 / 3, 2.0 / 3) positions[-5::-6, ..., :3] += (1.0 / 3, 1.0 / 3, 0.5) positions[-6::-6, ..., :2] += (1.0 / 3, 1.0 / 3) elif surf == 'hcp0001': cell = (1.0, sqrt(0.75), 0.5 * c / a) if orthogonal: positions[:, 1::2, :, 0] += 0.5 positions[-2::-2, ..., :2] += (0.0, 2.0 / 3) else: positions[-2::-2, ..., :2] += (-1.0 / 3, 2.0 / 3) sites.update({'bridge': (0.5, 0), 'fcc': (1.0 / 3, 1.0 / 3), 'hcp': (2.0 / 3, 2.0 / 3)}) elif surf == 'hcp10m10': cell = (1.0, 0.5 * c / a, sqrt(0.75)) assert orthogonal positions[-2::-2, ..., 0] += 0.5 positions[:, ::2, :, 2] += 2.0 / 3 elif surf == 'bcc110': cell = (1.0, sqrt(0.5), sqrt(0.5)) if orthogonal: positions[:, 1::2, :, 0] += 0.5 positions[-2::-2, ..., :2] += (0.0, 1.0) else: positions[-2::-2, ..., :2] += (-0.5, 1.0) sites.update({'shortbridge': (0, 0.5), 'longbridge': (0.5, 0), 'hollow': (0.375, 0.25)}) elif surf == 'bcc111': cell = (sqrt(2), sqrt(1.5), sqrt(3) / 6) if orthogonal: positions[-1::-3, 1::2, :, 0] += 0.5 positions[-2::-3, 1::2, :, 0] += 0.5 positions[-3::-3, 1::2, :, 0] -= 0.5 positions[-2::-3, ..., :2] += (0.0, 2.0 / 3) positions[-3::-3, ..., :2] += (0.5, 1.0 / 3) else: positions[-2::-3, ..., :2] += (-1.0 / 3, 2.0 / 3) positions[-3::-3, ..., :2] += (1.0 / 3, 1.0 / 3) sites.update({'hollow': (1.0 / 3, 1.0 / 3)}) else: 2 / 0 surface_cell = a * np.array([(cell[0], 0), (cell[0] / 2, cell[1])]) if not orthogonal: cell = np.array([(cell[0], 0, 0), (cell[0] / 2, cell[1], 0), (0, 0, cell[2])]) if surface_cell is None: surface_cell = a * np.diag(cell[:2]) if isinstance(cell, tuple): cell = np.diag(cell) slab.set_positions(positions.reshape((-1, 3))) slab.set_cell([a * v * n for v, n in zip(cell, size)], scale_atoms=True) slab.cell[2] = 0.0 if vacuum is not None: slab.center(vacuum, axis=2) if 'adsorbate_info' not in slab.info: slab.info.update({'adsorbate_info': {}}) slab.info['adsorbate_info']['cell'] = surface_cell slab.info['adsorbate_info']['sites'] = sites return slab def fcc211(symbol, size, a=None, vacuum=None, orthogonal=True): """FCC(211) surface. Does not currently support special adsorption sites. Currently only implemented for *orthogonal=True* with size specified as (i, j, k), where i, j, and k are number of atoms in each direction. i must be divisible by 3 to accommodate the step width. """ if not orthogonal: raise NotImplementedError('Only implemented for orthogonal ' 'unit cells.') if size[0] % 3 != 0: raise NotImplementedError('First dimension of size must be ' 'divisible by 3.') atoms = FaceCenteredCubic(symbol, directions=[[1, -1, -1], [0, 2, -2], [2, 1, 1]], miller=(None, None, (2, 1, 1)), latticeconstant=a, size=(1, 1, 1), pbc=True) z = (size[2] + 1) // 2 atoms = atoms.repeat((size[0] // 3, size[1], z)) if size[2] % 2: # Odd: remove bottom layer and shrink cell. remove_list = [atom.index for atom in atoms if atom.z < atoms[1].z] del atoms[remove_list] dz = atoms[0].z atoms.translate((0., 0., -dz)) atoms.cell[2][2] -= dz atoms.cell[2] = 0.0 atoms.pbc[2] = False if vacuum: atoms.center(vacuum, axis=2) # Renumber systematically from top down. orders = [(atom.index, round(atom.x, 3), round(atom.y, 3), -round(atom.z, 3), atom.index) for atom in atoms] orders.sort(key=itemgetter(3, 1, 2)) newatoms = atoms.copy() for index, order in enumerate(orders): newatoms[index].position = atoms[order[0]].position.copy() return newatoms def mx2(formula='MoS2', kind='2H', a=3.18, thickness=3.19, size=(1, 1, 1), vacuum=None): """Create three-layer 2D materials with hexagonal structure. For metal dichalcogenites, etc. The kind argument accepts '2H', which gives a mirror plane symmetry and '1T', which gives an inversion symmetry.""" if kind == '2H': basis = [(0, 0, 0), (2 / 3, 1 / 3, 0.5 * thickness), (2 / 3, 1 / 3, -0.5 * thickness)] elif kind == '1T': basis = [(0, 0, 0), (2 / 3, 1 / 3, 0.5 * thickness), (1 / 3, 2 / 3, -0.5 * thickness)] else: raise ValueError('Structure not recognized:', kind) cell = [[a, 0, 0], [-a / 2, a * 3**0.5 / 2, 0], [0, 0, 0]] atoms = Atoms(formula, cell=cell, pbc=(1, 1, 0)) atoms.set_scaled_positions(basis) if vacuum is not None: atoms.center(vacuum, axis=2) atoms = atoms.repeat(size) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/tools.py000066400000000000000000000554531316323560300233640ustar00rootroot00000000000000import numpy as np from ase.utils import basestring def cut(atoms, a=(1, 0, 0), b=(0, 1, 0), c=None, clength=None, origo=(0, 0, 0), nlayers=None, extend=1.0, tolerance=0.01, maxatoms=None): """Cuts out a cell defined by *a*, *b*, *c* and *origo* from a sufficiently repeated copy of *atoms*. Typically, this function is used to create slabs of different sizes and orientations. The vectors *a*, *b* and *c* are in scaled coordinates and defines the returned cell and should normally be integer-valued in order to end up with a periodic structure. However, for systems with sub-translations, like fcc, integer multiples of 1/2 or 1/3 might also make sence for some directions (and will be treated correctly). Parameters: atoms: Atoms instance This should correspond to a repeatable unit cell. a: int | 3 floats The a-vector in scaled coordinates of the cell to cut out. If integer, the a-vector will be the scaled vector from *origo* to the atom with index *a*. b: int | 3 floats The b-vector in scaled coordinates of the cell to cut out. If integer, the b-vector will be the scaled vector from *origo* to the atom with index *b*. c: None | int | 3 floats The c-vector in scaled coordinates of the cell to cut out. if integer, the c-vector will be the scaled vector from *origo* to the atom with index *c*. If *None* it will be along cross(a, b) converted to real space and normalised with the cube root of the volume. Note that this in general is not perpendicular to a and b for non-cubic systems. For cubic systems however, this is redused to c = cross(a, b). clength: None | float If not None, the length of the c-vector will be fixed to *clength* Angstroms. Should not be used together with *nlayers*. origo: int | 3 floats Position of origo of the new cell in scaled coordinates. If integer, the position of the atom with index *origo* is used. nlayers: None | int If *nlayers* is not *None*, the returned cell will have *nlayers* atomic layers in the c-direction. extend: 1 or 3 floats The *extend* argument scales the effective cell in which atoms will be included. It must either be three floats or a single float scaling all 3 directions. By setting to a value just above one, e.g. 1.05, it is possible to all the corner and edge atoms in the returned cell. This will of cause make the returned cell non-repeatable, but is very useful for visualisation. tolerance: float Determines what is defined as a plane. All atoms within *tolerance* Angstroms from a given plane will be considered to belong to that plane. maxatoms: None | int This option is used to auto-tune *tolerance* when *nlayers* is given for high zone axis systems. For high zone axis one needs to reduce *tolerance* in order to distinguise the atomic planes, resulting in the more atoms will be added and eventually MemoryError. A too small *tolerance*, on the other hand, might result in inproper splitting of atomic planes and that too few layers are returned. If *maxatoms* is not None, *tolerance* will automatically be gradually reduced until *nlayers* atomic layers is obtained, when the number of atoms exceeds *maxatoms*. Example: >>> import ase >>> from ase.spacegroup import crystal >>> # Create an aluminium (111) slab with three layers # # First an unit cell of Al >>> a = 4.05 >>> aluminium = crystal('Al', [(0,0,0)], spacegroup=225, ... cellpar=[a, a, a, 90, 90, 90]) >>> # Then cut out the slab >>> al111 = cut(aluminium, (1,-1,0), (0,1,-1), nlayers=3) >>> # Visualisation of the skutterudite unit cell # # Again, create a skutterudite unit cell >>> a = 9.04 >>> skutterudite = crystal( ... ('Co', 'Sb'), ... basis=[(0.25,0.25,0.25), (0.0, 0.335, 0.158)], ... spacegroup=204, ... cellpar=[a, a, a, 90, 90, 90]) >>> # Then use *origo* to put 'Co' at the corners and *extend* to # include all corner and edge atoms. >>> s = cut(skutterudite, origo=(0.25, 0.25, 0.25), extend=1.01) >>> ase.view(s) # doctest: +SKIP """ atoms = atoms.copy() cell = atoms.cell if isinstance(origo, int): origo = atoms.get_scaled_positions()[origo] origo = np.array(origo, dtype=float) scaled = (atoms.get_scaled_positions() - origo) % 1.0 scaled %= 1.0 # needed to ensure that all numbers are *less* than one atoms.set_scaled_positions(scaled) if isinstance(a, int): a = scaled[a] - origo if isinstance(b, int): b = scaled[b] - origo if isinstance(c, int): c = scaled[c] - origo a = np.array(a, dtype=float) b = np.array(b, dtype=float) if c is None: metric = np.dot(cell, cell.T) vol = np.sqrt(np.linalg.det(metric)) h = np.cross(a, b) H = np.linalg.solve(metric.T, h.T) c = vol * H / vol**(1. / 3.) c = np.array(c, dtype=float) if nlayers: # Recursive increase the length of c until we have at least # *nlayers* atomic layers parallel to the a-b plane while True: at = cut(atoms, a, b, c, origo=origo, extend=extend, tolerance=tolerance) scaled = at.get_scaled_positions() d = scaled[:, 2] keys = np.argsort(d) ikeys = np.argsort(keys) tol = tolerance while True: mask = np.concatenate(([True], np.diff(d[keys]) > tol)) tags = np.cumsum(mask)[ikeys] - 1 levels = d[keys][mask] if (maxatoms is None or len(at) < maxatoms or len(levels) > nlayers): break tol *= 0.9 if len(levels) > nlayers: break c *= 2 at.cell[2] *= levels[nlayers] return at[tags < nlayers] newcell = np.dot(np.array([a, b, c]), cell) if nlayers is None and clength is not None: newcell[2, :] *= clength / np.linalg.norm(newcell[2]) # Create a new atoms object, repeated and translated such that # it completely covers the new cell scorners_newcell = np.array([[0., 0., 0.], [0., 0., 1.], [0., 1., 0.], [0., 1., 1.], [1., 0., 0.], [1., 0., 1.], [1., 1., 0.], [1., 1., 1.]]) corners = np.dot(scorners_newcell, newcell * extend) scorners = np.linalg.solve(cell.T, corners.T).T rep = np.ceil(scorners.ptp(axis=0)).astype('int') + 1 trans = np.dot(np.floor(scorners.min(axis=0)), cell) atoms = atoms.repeat(rep) atoms.translate(trans) atoms.set_cell(newcell) # Mask out atoms outside new cell stol = 0.1 * tolerance # scaled tolerance, XXX maskcell = atoms.cell * extend sp = np.linalg.solve(maskcell.T, (atoms.positions).T).T mask = np.all(np.logical_and(-stol <= sp, sp < 1 - stol), axis=1) atoms = atoms[mask] return atoms class IncompatibleCellError(ValueError): """Exception raised if stacking fails due to incompatible cells between *atoms1* and *atoms2*.""" pass def stack(atoms1, atoms2, axis=2, cell=None, fix=0.5, maxstrain=0.5, distance=None, reorder=False, output_strained=False): """Return a new Atoms instance with *atoms2* stacked on top of *atoms1* along the given axis. Periodicity in all directions is ensured. The size of the final cell is determined by *cell*, except that the length alongh *axis* will be the sum of *atoms1.cell[axis]* and *atoms2.cell[axis]*. If *cell* is None, it will be interpolated between *atoms1* and *atoms2*, where *fix* determines their relative weight. Hence, if *fix* equals zero, the final cell will be determined purely from *atoms1* and if *fix* equals one, it will be determined purely from *atoms2*. An ase.geometry.IncompatibleCellError exception is raised if the cells of *atoms1* and *atoms2* are incopatible, e.g. if the far corner of the unit cell of either *atoms1* or *atoms2* is displaced more than *maxstrain*. Setting *maxstrain* to None, disable this check. If *distance* is not None, the size of the final cell, along the direction perpendicular to the interface, will be adjusted such that the distance between the closest atoms in *atoms1* and *atoms2* will be equal to *distance*. This option uses scipy.optimize.fmin() and hence require scipy to be installed. If *reorder* is True, then the atoms will be reordred such that all atoms with the same symbol will follow sequensially after each other, eg: 'Al2MnAl10Fe' -> 'Al12FeMn'. If *output_strained* is True, then the strained versions of *atoms1* and *atoms2* are returned in addition to the stacked structure. Example: >>> import ase >>> from ase.spacegroup import crystal >>> # Create an Ag(110)-Si(110) interface with three atomic layers # on each side. >>> a_ag = 4.09 >>> ag = crystal(['Ag'], basis=[(0,0,0)], spacegroup=225, ... cellpar=[a_ag, a_ag, a_ag, 90., 90., 90.]) >>> ag110 = cut(ag, (0, 0, 3), (-1.5, 1.5, 0), nlayers=3) >>> >>> a_si = 5.43 >>> si = crystal(['Si'], basis=[(0,0,0)], spacegroup=227, ... cellpar=[a_si, a_si, a_si, 90., 90., 90.]) >>> si110 = cut(si, (0, 0, 2), (-1, 1, 0), nlayers=3) >>> >>> interface = stack(ag110, si110, maxstrain=1) >>> ase.view(interface) # doctest: +SKIP >>> # Once more, this time adjusted such that the distance between # the closest Ag and Si atoms will be 2.3 Angstrom (requires scipy). >>> interface2 = stack(ag110, si110, ... maxstrain=1, distance=2.3) # doctest:+ELLIPSIS Optimization terminated successfully. ... >>> ase.view(interface2) # doctest: +SKIP """ atoms1 = atoms1.copy() atoms2 = atoms2.copy() if (np.sign(np.linalg.det(atoms1.cell)) != np.sign(np.linalg.det(atoms2.cell))): raise IncompatibleCellError('*atoms1* amd *atoms2* must both either ' 'have a lefthanded or a righanded cell.') c1 = np.linalg.norm(atoms1.cell[axis]) c2 = np.linalg.norm(atoms2.cell[axis]) if cell is None: cell1 = atoms1.cell.copy() cell2 = atoms2.cell.copy() cell1[axis] /= c1 cell2[axis] /= c2 cell = cell1 + fix * (cell2 - cell1) cell[axis] /= np.linalg.norm(cell[axis]) cell1 = cell.copy() cell2 = cell.copy() cell1[axis] *= c1 cell2[axis] *= c2 if maxstrain: strain1 = np.sqrt(((cell1 - atoms1.cell).sum(axis=0)**2).sum()) strain2 = np.sqrt(((cell2 - atoms2.cell).sum(axis=0)**2).sum()) if strain1 > maxstrain or strain2 > maxstrain: raise IncompatibleCellError( '*maxstrain* exceeded. *atoms1* strained %f and ' '*atoms2* strained %f.' % (strain1, strain2)) atoms1.set_cell(cell1, scale_atoms=True) atoms2.set_cell(cell2, scale_atoms=True) if output_strained: atoms1_strained = atoms1.copy() atoms2_strained = atoms2.copy() if distance is not None: from scipy.optimize import fmin def mindist(pos1, pos2): n1 = len(pos1) n2 = len(pos2) idx1 = np.arange(n1).repeat(n2) idx2 = np.tile(np.arange(n2), n1) return np.sqrt(((pos1[idx1] - pos2[idx2])**2).sum(axis=1).min()) def func(x): t1, t2, h1, h2 = x[0:3], x[3:6], x[6], x[7] pos1 = atoms1.positions + t1 pos2 = atoms2.positions + t2 d1 = mindist(pos1, pos2 + (h1 + 1.0) * atoms1.cell[axis]) d2 = mindist(pos2, pos1 + (h2 + 1.0) * atoms2.cell[axis]) return (d1 - distance)**2 + (d2 - distance)**2 atoms1.center() atoms2.center() x0 = np.zeros((8,)) x = fmin(func, x0) t1, t2, h1, h2 = x[0:3], x[3:6], x[6], x[7] atoms1.translate(t1) atoms2.translate(t2) atoms1.cell[axis] *= 1.0 + h1 atoms2.cell[axis] *= 1.0 + h2 atoms2.translate(atoms1.cell[axis]) atoms1.cell[axis] += atoms2.cell[axis] atoms1.extend(atoms2) if reorder: atoms1 = sort(atoms1) if output_strained: return atoms1, atoms1_strained, atoms2_strained else: return atoms1 def rotation_matrix(a1, a2, b1, b2): """Returns a rotation matrix that rotates the vectors *a1* in the direction of *a2* and *b1* in the direction of *b2*. In the case that the angle between *a2* and *b2* is not the same as between *a1* and *b1*, a proper rotation matrix will anyway be constructed by first rotate *b2* in the *b1*, *b2* plane. """ a1 = np.asarray(a1, dtype=float) / np.linalg.norm(a1) b1 = np.asarray(b1, dtype=float) / np.linalg.norm(b1) c1 = np.cross(a1, b1) c1 /= np.linalg.norm(c1) # clean out rounding errors... a2 = np.asarray(a2, dtype=float) / np.linalg.norm(a2) b2 = np.asarray(b2, dtype=float) / np.linalg.norm(b2) c2 = np.cross(a2, b2) c2 /= np.linalg.norm(c2) # clean out rounding errors... # Calculate rotated *b2* theta = np.arccos(np.dot(a2, b2)) - np.arccos(np.dot(a1, b1)) b3 = np.sin(theta) * a2 + np.cos(theta) * b2 b3 /= np.linalg.norm(b3) # clean out rounding errors... A1 = np.array([a1, b1, c1]) A2 = np.array([a2, b3, c2]) R = np.linalg.solve(A1, A2).T return R def rotate(atoms, a1, a2, b1, b2, rotate_cell=True, center=(0, 0, 0)): """Rotate *atoms*, such that *a1* will be rotated in the direction of *a2* and *b1* in the direction of *b2*. The point at *center* is fixed. Use *center='COM'* to fix the center of mass. If *rotate_cell* is true, the cell will be rotated together with the atoms. Note that the 000-corner of the cell is by definition fixed at origo. Hence, setting *center* to something other than (0, 0, 0) will rotate the atoms out of the cell, even if *rotate_cell* is True. """ if isinstance(center, basestring) and center.lower() == 'com': center = atoms.get_center_of_mass() R = rotation_matrix(a1, a2, b1, b2) atoms.positions[:] = np.dot(atoms.positions - center, R.T) + center if rotate_cell: atoms.cell[:] = np.dot(atoms.cell, R.T) def minimize_tilt_ij(atoms, modified=1, fixed=0, fold_atoms=True): """Minimize the tilt angle for two given axes. The problem is underdetermined. Therefore one can choose one axis that is kept fixed. """ orgcell_cc = atoms.get_cell() pbc_c = atoms.get_pbc() i = fixed j = modified if not (pbc_c[i] and pbc_c[j]): raise RuntimeError('Axes have to be periodic') prod_cc = np.dot(orgcell_cc, orgcell_cc.T) cell_cc = 1. * orgcell_cc nji = np.floor(- prod_cc[i, j] / prod_cc[i, i] + 0.5) cell_cc[j] = orgcell_cc[j] + nji * cell_cc[i] # sanity check def volume(cell): return np.abs(np.dot(cell[2], np.cross(cell[0], cell[1]))) V = volume(cell_cc) assert(abs(volume(orgcell_cc) - V) / V < 1.e-10) atoms.set_cell(cell_cc) if fold_atoms: atoms.set_scaled_positions(atoms.get_scaled_positions()) def minimize_tilt(atoms, order=range(3), fold_atoms=True): """Minimize the tilt angles of the unit cell.""" pbc_c = atoms.get_pbc() for i1, c1 in enumerate(order): for c2 in order[i1 + 1:]: if pbc_c[c1] and pbc_c[c2]: minimize_tilt_ij(atoms, c1, c2, fold_atoms) class _gtensor(object): """The G tensor as defined in Grosse-Kunstleve.""" def __init__(self, cell): self.cell = cell self.epsilon = 1e-5 * abs(np.linalg.det(cell))**(1. / 3.) self.a = np.dot(cell[0], cell[0]) self.b = np.dot(cell[1], cell[1]) self.c = np.dot(cell[2], cell[2]) self.x = 2 * np.dot(cell[1], cell[2]) self.y = 2 * np.dot(cell[0], cell[2]) self.z = 2 * np.dot(cell[0], cell[1]) self._G = np.array([[self.a, self.z / 2., self.y / 2.], [self.z / 2., self.b, self.x / 2.], [self.y / 2., self.x / 2., self.c]]) def update(self, C): """Procedure A0 as defined in Krivy.""" self._G = np.dot(C.T, np.dot(self._G, C)) self.a = self._G[0][0] self.b = self._G[1][1] self.c = self._G[2][2] self.x = 2 * self._G[1][2] self.y = 2 * self._G[0][2] self.z = 2 * self._G[0][1] def get_new_cell(self): """Returns new basis vectors""" a = np.sqrt(self.a) b = np.sqrt(self.b) c = np.sqrt(self.c) ad = self.cell[0] / np.linalg.norm(self.cell[0]) Z = np.cross(self.cell[0], self.cell[1]) Z /= np.linalg.norm(Z) X = ad - np.dot(ad, Z) * Z X /= np.linalg.norm(X) Y = np.cross(Z, X) alpha = np.arccos(self.x / (2 * b * c)) beta = np.arccos(self.y / (2 * a * c)) gamma = np.arccos(self.z / (2 * a * b)) va = a * np.array([1, 0, 0]) vb = b * np.array([np.cos(gamma), np.sin(gamma), 0]) cx = np.cos(beta) cy = (np.cos(alpha) - np.cos(beta) * np.cos(gamma)) \ / np.sin(gamma) cz = np.sqrt(1. - cx * cx - cy * cy) vc = c * np.array([cx, cy, cz]) abc = np.vstack((va, vb, vc)) T = np.vstack((X, Y, Z)) return np.dot(abc, T) def niggli_reduce_cell(cell): C = np.eye(3, dtype=int) cell = np.asarray(cell, dtype=float) G = _gtensor(cell) def lt(x, y, epsilon=G.epsilon): return x < y - epsilon def gt(x, y, epsilon=G.epsilon): return lt(y, x, epsilon) def eq(x, y, epsilon=G.epsilon): return not (lt(x, y, epsilon) or gt(x, y, epsilon)) # Once A2 and A5-A8 all evaluate to False, the unit cell will have # been fully reduced. for count in range(10000): if gt(G.a, G.b) or (eq(G.a, G.b) and gt(np.abs(G.x), np.abs(G.y))): # Procedure A1 A = np.array([[0, -1, 0], [-1, 0, 0], [0, 0, -1]]) G.update(A) C = np.dot(C, A) if gt(G.b, G.c) or (eq(G.b, G.c) and gt(np.abs(G.y), np.abs(G.z))): # Procedure A2 A = np.array([[-1, 0, 0], [0, 0, -1], [0, -1, 0]]) G.update(A) C = np.dot(C, A) continue if gt(G.x * G.y * G.z, 0, G.epsilon**3): # Procedure A3 i = -1 if lt(G.x, 0) else 1 j = -1 if lt(G.y, 0) else 1 k = -1 if lt(G.z, 0) else 1 else: # Procedure A4 i = -1 if gt(G.x, 0) else 1 j = -1 if gt(G.y, 0) else 1 k = -1 if gt(G.z, 0) else 1 if i * j * k == -1: if eq(G.z, 0): k = -1 elif eq(G.y, 0): j = -1 elif eq(G.x, 0): i = -1 else: raise RuntimeError('p unassigned and i*j*k < 0!') A = np.array([[i, 0, 0], [0, j, 0], [0, 0, k]]) G.update(A) C = np.dot(C, A) if (lt(G.b, np.abs(G.x)) or (eq(G.x, G.b) and lt(2 * G.y, G.z)) or (eq(G.x, -G.b) and lt(G.z, 0))): # Procedure A5 A = np.array([[1, 0, 0], [0, 1, -np.sign(G.x)], [0, 0, 1]], dtype=int) G.update(A) C = np.dot(C, A) elif (lt(G.a, np.abs(G.y)) or (eq(G.y, G.a) and lt(2 * G.x, G.z)) or (eq(G.y, -G.a) and lt(G.z, 0))): # Procedure A6 A = np.array([[1, 0, -np.sign(G.y)], [0, 1, 0], [0, 0, 1]], dtype=int) G.update(A) C = np.dot(C, A) elif (lt(G.a, np.abs(G.z)) or (eq(G.z, G.a) and lt(2 * G.x, G.y)) or (eq(G.z, -G.a) and lt(G.y, 0))): # Procedure A7 A = np.array([[1, -np.sign(G.z), 0], [0, 1, 0], [0, 0, 1]], dtype=int) G.update(A) C = np.dot(C, A) elif (lt(G.x + G.y + G.z + G.a + G.b, 0) or (eq(G.x + G.y + G.z + G.a + G.b, 0) and gt(2 * (G.a + G.y) + G.z, 0))): # Procedure A8 A = np.array([[1, 0, 1], [0, 1, 1], [0, 0, 1]]) G.update(A) C = np.dot(C, A) else: break else: raise RuntimeError('Niggli did not converge \ in {n} iterations!'.format(n=count)) return G.get_new_cell(), C def niggli_reduce(atoms): """Convert the supplied atoms object's unit cell into its maximally-reduced Niggli unit cell. Even if the unit cell is already maximally reduced, it will be converted into its unique Niggli unit cell. This will also wrap all atoms into the new unit cell. References: Niggli, P. "Krystallographische und strukturtheoretische Grundbegriffe. Handbuch der Experimentalphysik", 1928, Vol. 7, Part 1, 108-176. Krivy, I. and Gruber, B., "A Unified Algorithm for Determining the Reduced (Niggli) Cell", Acta Cryst. 1976, A32, 297-298. Grosse-Kunstleve, R.W.; Sauter, N. K.; and Adams, P. D. "Numerically stable algorithms for the computation of reduced unit cells", Acta Cryst. 2004, A60, 1-6. """ assert all(atoms.pbc), 'Can only reduce 3d periodic unit cells!' new_cell, C = niggli_reduce_cell(atoms.cell) scpos = np.dot(atoms.get_scaled_positions(), np.linalg.inv(C).T) scpos %= 1.0 scpos %= 1.0 atoms.set_cell(new_cell) atoms.set_scaled_positions(scpos) def sort(atoms, tags=None): """Return a new Atoms object with sorted atomic order. The default is to order according to chemical symbols, but if *tags* is not None, it will be used instead. A stable sorting algorithm is used. Example: >>> from ase.build import bulk >>> # Two unit cells of NaCl: >>> a = 5.64 >>> nacl = bulk('NaCl', 'rocksalt', a=a) * (2, 1, 1) >>> nacl.get_chemical_symbols() ['Na', 'Cl', 'Na', 'Cl'] >>> nacl_sorted = sort(nacl) >>> nacl_sorted.get_chemical_symbols() ['Cl', 'Cl', 'Na', 'Na'] >>> np.all(nacl_sorted.cell == nacl.cell) True """ if tags is None: tags = atoms.get_chemical_symbols() else: tags = list(tags) deco = sorted([(tag, i) for i, tag in enumerate(tags)]) indices = [i for tag, i in deco] return atoms[indices] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/tube.py000066400000000000000000000074141316323560300231550ustar00rootroot00000000000000from __future__ import print_function from math import sqrt import numpy as np from ase.atoms import Atoms from ase.utils import gcd def nanotube(n, m, length=1, bond=1.42, symbol='C', verbose=False, vacuum=None): if n < m: m, n = n, m sign = -1 else: sign = 1 nk = 6000 sq3 = sqrt(3.0) a = sq3 * bond l2 = n * n + m * m + n * m l = sqrt(l2) nd = gcd(n, m) if (n - m) % (3 * nd) == 0: ndr = 3 * nd else: ndr = nd nr = (2 * m + n) // ndr ns = -(2 * n + m) // ndr nn = 2 * l2 // ndr ichk = 0 if nr == 0: n60 = 1 else: n60 = nr * 4 absn = abs(n60) nnp = [] nnq = [] for i in range(-absn, absn + 1): for j in range(-absn, absn + 1): j2 = nr * j - ns * i if j2 == 1: j1 = m * i - n * j if j1 > 0 and j1 < nn: ichk += 1 nnp.append(i) nnq.append(j) if ichk == 0: raise RuntimeError('not found p, q strange!!') if ichk >= 2: raise RuntimeError('more than 1 pair p, q strange!!') nnnp = nnp[0] nnnq = nnq[0] if verbose: print('the symmetry vector is', nnnp, nnnq) lp = nnnp * nnnp + nnnq * nnnq + nnnp * nnnq r = a * sqrt(lp) c = a * l t = sq3 * c / ndr if 2 * nn > nk: raise RuntimeError('parameter nk is too small!') rs = c / (2.0 * np.pi) if verbose: print('radius=', rs, t) q1 = np.arctan((sq3 * m) / (2 * n + m)) q2 = np.arctan((sq3 * nnnq) / (2 * nnnp + nnnq)) q3 = q1 - q2 q4 = 2.0 * np.pi / nn q5 = bond * np.cos((np.pi / 6.0) - q1) / c * 2.0 * np.pi h1 = abs(t) / abs(np.sin(q3)) h2 = bond * np.sin((np.pi / 6.0) - q1) ii = 0 x, y, z = [], [], [] for i in range(nn): x1, y1, z1 = 0, 0, 0 k = np.floor(i * abs(r) / h1) x1 = rs * np.cos(i * q4) y1 = rs * np.sin(i * q4) z1 = (i * abs(r) - k * h1) * np.sin(q3) kk2 = abs(np.floor((z1 + 0.0001) / t)) if z1 >= t - 0.0001: z1 -= t * kk2 elif z1 < 0: z1 += t * kk2 ii += 1 x.append(x1) y.append(y1) z.append(z1) z3 = (i * abs(r) - k * h1) * np.sin(q3) - h2 ii += 1 if z3 >= 0 and z3 < t: x2 = rs * np.cos(i * q4 + q5) y2 = rs * np.sin(i * q4 + q5) z2 = (i * abs(r) - k * h1) * np.sin(q3) - h2 x.append(x2) y.append(y2) z.append(z2) else: x2 = rs * np.cos(i * q4 + q5) y2 = rs * np.sin(i * q4 + q5) z2 = (i * abs(r) - (k + 1) * h1) * np.sin(q3) - h2 kk = abs(np.floor(z2 / t)) if z2 >= t - 0.0001: z2 -= t * kk elif z2 < 0: z2 += t * kk x.append(x2) y.append(y2) z.append(z2) ntotal = 2 * nn X = [] for i in range(ntotal): X.append([x[i], y[i], sign * z[i]]) if length > 1: xx = X[:] for mnp in range(2, length + 1): for i in range(len(xx)): X.append(xx[i][:2] + [xx[i][2] + (mnp - 1) * t]) transvec = t numatom = ntotal * length diameter = rs * 2 chiralangle = np.arctan((sq3 * n) / (2 * m + n)) / np.pi * 180 cell = [[0, 0, 0], [0, 0, 0], [0, 0, length * t]] atoms = Atoms(symbol + str(numatom), positions=X, cell=cell, pbc=[False, False, True]) if vacuum: atoms.center(vacuum, axis=(0, 1)) if verbose: print('translation vector =', transvec) print('diameter = ', diameter) print('chiral angle = ', chiralangle) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/build/voids.py000066400000000000000000000064121316323560300233370ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase import Atom, Atoms from ase.calculators.calculator import Calculator from ase.optimize import FIRE from ase.data import atomic_numbers from ase.data.vdw import vdw_radii class RepulsivePotential(Calculator): """Purely repulsive potential (Gaussian)""" implemented_properties = ['energy', 'forces'] def calculate(self, atoms, properties, changes): radii_a = np.array([ vdw_radii[atomic_numbers[a.symbol]] for a in atoms]) self.radii_a = radii_a # last atom is the moving one energy = 0.0 forces = np.zeros((len(atoms), 3)) for a in range(len(atoms) - 1): d_c = atoms.get_distance(a, -1, mic=True, vector=True) d = np.linalg.norm(d_c) sigma2 = radii_a[a]**2 / (2 * np.log(2)) pre = np.exp(- d**2 / (2 * sigma2)) energy += pre forces[-1] += pre * d_c / sigma2 self.results['energy'] = energy self.results['forces'] = forces def voids(atoms_in): """Find location and size of voids in a given structure. Returns the voids as 'X' atoms. The atoms' charge is misused to contain the voids' radius. """ trials = 6 # XXX do not hardwire atoms = atoms_in.copy() # append moving atom atoms.append(Atom('X')) atoms.set_calculator(RepulsivePotential()) voids_a = Atoms() voids_a.set_cell(atoms.get_cell()) voids_a.set_pbc(atoms.get_pbc()) positions = atoms.get_positions() for pos in positions[:-1]: for c in range(trials): positions[-1] = pos + 0.1 * np.random.uniform(-1, 1, size=3) atoms.set_positions(positions) # XXX do not hardwire relax = FIRE(atoms, logfile=None ) # XXX do not hardwire relax.run(fmax=0.001, steps=100) # get minimal distance Rmin = 100000 for b in range(len(atoms) - 1): R = atoms.get_distance(b, -1, mic=True) if R < Rmin: Rmin = R # check if new or better voids_a.append(Atom('X', atoms.get_positions()[-1], charge=Rmin)) voids_a.set_positions(voids_a.get_positions(wrap=True)) remove = [] last = len(voids_a) - 1 for ia, a in enumerate(voids_a[:-1]): d = voids_a.get_distance(ia, -1, mic=True) if d < a.charge or d < Rmin: if a.charge > Rmin: remove.append(last) else: remove.append(ia) remove.sort() if last not in remove: p = voids_a.get_positions()[-1] print('found new void at [%g,%g,%g], R=%g' % (p[0], p[1], p[2], Rmin)) for a in remove[::-1]: if a != last: p = voids_a.get_positions()[a] print('removing void at [%g,%g,%g], R=%g' % (p[0], p[1], p[2], voids_a[a].charge)) voids_a.pop(a) return voids_a ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/000077500000000000000000000000001316323560300230535ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/__init__.py000066400000000000000000000001001316323560300251530ustar00rootroot00000000000000"""Interfaces to different ASE compatible force-calculators.""" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/abinit.py000066400000000000000000000576431316323560300247120ustar00rootroot00000000000000"""This module defines an ASE interface to ABINIT. http://www.abinit.org/ """ import os from glob import glob from os.path import join import numpy as np from ase.data import atomic_numbers from ase.units import Bohr, Hartree, fs from ase.data import chemical_symbols from ase.io.abinit import read_abinit from ase.calculators.calculator import FileIOCalculator, Parameters, kpts2mp, \ ReadError keys_with_units = { 'toldfe': 'eV', 'tsmear': 'eV', 'paoenergyshift': 'eV', 'zmunitslength': 'Bohr', 'zmunitsangle': 'rad', 'zmforcetollength': 'eV/Ang', 'zmforcetolangle': 'eV/rad', 'zmmaxdispllength': 'Ang', 'zmmaxdisplangle': 'rad', 'ecut': 'eV', 'pawecutdg': 'eV', 'dmenergytolerance': 'eV', 'electronictemperature': 'eV', 'oneta': 'eV', 'onetaalpha': 'eV', 'onetabeta': 'eV', 'onrclwf': 'Ang', 'onchemicalpotentialrc': 'Ang', 'onchemicalpotentialtemperature': 'eV', 'mdmaxcgdispl': 'Ang', 'mdmaxforcetol': 'eV/Ang', 'mdmaxstresstol': 'eV/Ang**3', 'mdlengthtimestep': 'fs', 'mdinitialtemperature': 'eV', 'mdtargettemperature': 'eV', 'mdtargetpressure': 'eV/Ang**3', 'mdnosemass': 'eV*fs**2', 'mdparrinellorahmanmass': 'eV*fs**2', 'mdtaurelax': 'fs', 'mdbulkmodulus': 'eV/Ang**3', 'mdfcdispl': 'Ang', 'warningminimumatomicdistance': 'Ang', 'rcspatial': 'Ang', 'kgridcutoff': 'Ang', 'latticeconstant': 'Ang'} class Abinit(FileIOCalculator): """Class for doing ABINIT calculations. The default parameters are very close to those that the ABINIT Fortran code would use. These are the exceptions:: calc = Abinit(label='abinit', xc='LDA', ecut=400, toldfe=1e-5) """ implemented_properties = ['energy', 'forces', 'stress', 'magmom'] command = 'abinit < PREFIX.files > PREFIX.log' default_parameters = dict( xc='LDA', smearing=None, kpts=None, charge=0.0, raw=None, pps='fhi') def __init__(self, restart=None, ignore_bad_restart_file=False, label='abinit', atoms=None, scratch=None, **kwargs): """Construct ABINIT-calculator object. Parameters ========== label: str Prefix to use for filenames (label.in, label.txt, ...). Default is 'abinit'. Examples ======== Use default values: >>> h = Atoms('H', calculator=Abinit(ecut=200, toldfe=0.001)) >>> h.center(vacuum=3.0) >>> e = h.get_potential_energy() """ self.scratch = scratch self.species = None self.ppp_list = None FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) # Ignore boundary conditions: if 'pbc' in system_changes: system_changes.remove('pbc') return system_changes def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms, properties=None, system_changes=None): """Write input parameters to files-file.""" FileIOCalculator.write_input(self, atoms, properties, system_changes) if ('numbers' in system_changes or 'initial_magmoms' in system_changes): self.initialize(atoms) fh = open(self.label + '.files', 'w') fh.write('%s\n' % (self.prefix + '.in')) # input fh.write('%s\n' % (self.prefix + '.txt')) # output fh.write('%s\n' % (self.prefix + 'i')) # input fh.write('%s\n' % (self.prefix + 'o')) # output # XXX: # scratch files #scratch = self.scratch #if scratch is None: # scratch = dir #if not os.path.exists(scratch): # os.makedirs(scratch) #fh.write('%s\n' % (os.path.join(scratch, prefix + '.abinit'))) fh.write('%s\n' % (self.prefix + '.abinit')) # Provide the psp files for ppp in self.ppp_list: fh.write('%s\n' % (ppp)) # psp file path fh.close() # Abinit will write to label.txtA if label.txt already exists, # so we remove it if it's there: filename = self.label + '.txt' if os.path.isfile(filename): os.remove(filename) param = self.parameters param.write(self.label + '.ase') fh = open(self.label + '.in', 'w') inp = {} inp.update(param) for key in ['xc', 'smearing', 'kpts', 'pps', 'raw']: del inp[key] smearing = param.get('smearing') if 'tsmear' in param or 'occopt' in param: assert smearing is None if smearing is not None: inp['occopt'] = {'fermi-dirac': 3, 'gaussian': 7}[smearing[0].lower()] inp['tsmear'] = smearing[1] inp['natom'] = len(atoms) if 'nbands' in param: inp['nband'] = param.nbands del inp['nbands'] # ixc is set from paw/xml file. Ignore 'xc' setting then. if param.get('pps') not in ['pawxml']: if 'ixc' not in param: inp['ixc'] = {'LDA': 7, 'PBE': 11, 'revPBE': 14, 'RPBE': 15, 'WC': 23}[param.xc] magmoms = atoms.get_initial_magnetic_moments() if magmoms.any(): inp['nsppol'] = 2 fh.write('spinat\n') for n, M in enumerate(magmoms): fh.write('%.14f %.14f %.14f\n' % (0, 0, M)) else: inp['nsppol'] = 1 for key in sorted(inp.keys()): value = inp[key] unit = keys_with_units.get(key) if unit is None: fh.write('%s %s\n' % (key, value)) else: if 'fs**2' in unit: value /= fs**2 elif 'fs' in unit: value /= fs fh.write('%s %e %s\n' % (key, value, unit)) if param.raw is not None: for line in param.raw: if isinstance(line, tuple): fh.write(' '.join(['%s' % x for x in line]) + '\n') else: fh.write('%s\n' % line) fh.write('#Definition of the unit cell\n') fh.write('acell\n') fh.write('%.14f %.14f %.14f Angstrom\n' % (1.0, 1.0, 1.0)) fh.write('rprim\n') if atoms.number_of_lattice_vectors != 3: raise RuntimeError('Abinit requires a 3D cell, but cell is {}' .format(atoms.cell)) for v in atoms.cell: fh.write('%.14f %.14f %.14f\n' % tuple(v)) fh.write('chkprim 0 # Allow non-primitive cells\n') fh.write('#Definition of the atom types\n') fh.write('ntypat %d\n' % (len(self.species))) fh.write('znucl') for n, Z in enumerate(self.species): fh.write(' %d' % (Z)) fh.write('\n') fh.write('#Enumerate different atomic species\n') fh.write('typat') fh.write('\n') self.types = [] for Z in atoms.numbers: for n, Zs in enumerate(self.species): if Z == Zs: self.types.append(n + 1) n_entries_int = 20 # integer entries per line for n, type in enumerate(self.types): fh.write(' %d' % (type)) if n > 1 and ((n % n_entries_int) == 1): fh.write('\n') fh.write('\n') fh.write('#Definition of the atoms\n') fh.write('xangst\n') for pos in atoms.positions: fh.write('%.14f %.14f %.14f\n' % tuple(pos)) if 'kptopt' not in param: mp = kpts2mp(atoms, param.kpts) fh.write('kptopt 1\n') fh.write('ngkpt %d %d %d\n' % tuple(mp)) fh.write('nshiftk 1\n') fh.write('shiftk\n') fh.write('%.1f %.1f %.1f\n' % tuple((np.array(mp) + 1) % 2 * 0.5)) fh.write('chkexit 1 # abinit.exit file in the running directory terminates after the current SCF\n') fh.close() def read(self, label): """Read results from ABINIT's text-output file.""" FileIOCalculator.read(self, label) filename = self.label + '.txt' if not os.path.isfile(filename): raise ReadError('ABINIT output file '+filename+' is missing.') self.atoms = read_abinit(self.label + '.in') self.parameters = Parameters.read(self.label + '.ase') self.initialize(self.atoms) self.read_results() def read_results(self): filename = self.label + '.txt' text = open(filename).read().lower() for line in iter(text.split('\n')): if line.rfind('error') > -1 or line.rfind('was not enough scf cycles to converge') > -1: raise ReadError(line) if line.rfind('natom ') > -1: natoms = int(line.split()[-1]) lines = iter(text.split('\n')) # Stress: # Printed in the output in the following format [Hartree/Bohr^3]: # sigma(1 1)= 4.02063464E-04 sigma(3 2)= 0.00000000E+00 # sigma(2 2)= 4.02063464E-04 sigma(3 1)= 0.00000000E+00 # sigma(3 3)= 4.02063464E-04 sigma(2 1)= 0.00000000E+00 for line in lines: if line.rfind( 'cartesian components of stress tensor (hartree/bohr^3)') > -1: stress = np.empty(6) for i in range(3): entries = next(lines).split() stress[i] = float(entries[2]) stress[i + 3] = float(entries[5]) self.results['stress'] = stress * Hartree / Bohr**3 break else: raise RuntimeError # Energy [Hartree]: # Warning: Etotal could mean both electronic energy and free energy! etotal = None efree = None if 'PAW method is used'.lower() in text: # read DC energy according to M. Torrent for line in iter(text.split('\n')): if line.rfind('>>>>> internal e=') > -1: etotal = float(line.split('=')[-1])*Hartree # second occurrence! for line in iter(text.split('\n')): if line.rfind('>>>> etotal (dc)=') > -1: efree = float(line.split('=')[-1])*Hartree else: for line in iter(text.split('\n')): if line.rfind('>>>>> internal e=') > -1: etotal = float(line.split('=')[-1])*Hartree # first occurrence! break for line in iter(text.split('\n')): if line.rfind('>>>>>>>>> etotal=') > -1: efree = float(line.split('=')[-1])*Hartree if efree is None: raise RuntimeError('Total energy not found') if etotal is None: etotal = efree # Energy extrapolated to zero Kelvin: self.results['energy'] = (etotal + efree) / 2 self.results['free_energy'] = efree # Forces: for line in lines: if line.rfind('cartesian forces (ev/angstrom) at end:') > -1: forces = [] for i in range(natoms): forces.append(np.array( [float(f) for f in next(lines).split()[1:]])) self.results['forces'] = np.array(forces) break else: raise RuntimeError # self.width = self.read_electronic_temperature() self.nband = self.read_number_of_bands() self.niter = self.read_number_of_iterations() self.nelect = self.read_number_of_electrons() self.results['magmom'] = self.read_magnetic_moment() def initialize(self, atoms): numbers = atoms.get_atomic_numbers().copy() self.species = [] for a, Z in enumerate(numbers): if Z not in self.species: self.species.append(Z) self.spinpol = atoms.get_initial_magnetic_moments().any() if 'ABINIT_PP_PATH' in os.environ: pppaths = os.environ['ABINIT_PP_PATH'].split(':') else: pppaths = [] self.ppp_list = [] if self.parameters.xc != 'LDA': xcname = 'GGA' else: xcname = 'LDA' pps = self.parameters.pps if pps not in ['fhi', 'hgh', 'hgh.sc', 'hgh.k', 'tm', 'paw','pawxml']: raise ValueError('Unexpected PP identifier %s' % pps) for Z in self.species: symbol = chemical_symbols[abs(Z)] number = atomic_numbers[symbol] names = [] for s in [ symbol, symbol.lower() ]: for xcn in [ xcname, xcname.lower() ]: if pps == 'fhi': names.append('%02d-%s.%s.fhi' % (number, s, xcn)) names.append('%02d[.-_]%s*.fhi' % (number, s)) names.append('%02d%s*.fhi' % (number, s)) names.append('%s[.-_]*.fhi' % s) elif pps in ['paw']: hghtemplate = '%s-%s-%s.paw' # E.g. "H-GGA-hard-uspp.paw" names.append(hghtemplate % (s, xcn, '*')) names.append('%s[.-_]*.paw' % s) elif pps in ['pawxml']: hghtemplate = '%s.%s%s.xml' # E.g. "H.GGA_PBE-JTH.xml" names.append(hghtemplate % (s, xcn, '*')) names.append('%s[.-_]*.xml' % s) elif pps in ['hgh.k']: hghtemplate = '%s-q%s.hgh.k' # E.g. "Co-q17.hgh.k" names.append(hghtemplate % (s, '*')) names.append('%s[.-_]*.hgh.k' % s) names.append('%s[.-_]*.hgh' % s) elif pps in ['tm']: hghtemplate = '%d%s%s.pspnc' # E.g. "44ru.pspnc" names.append(hghtemplate % (number, s, '*')) names.append('%s[.-_]*.pspnc' % s) elif pps in ['hgh', 'hgh.sc']: hghtemplate = '%d%s.%s.hgh' # E.g. "42mo.6.hgh" # There might be multiple files with different valence # electron counts, so we must choose between # the ordinary and the semicore versions for some elements. # # Therefore we first use glob to get all relevant files, # then pick the correct one afterwards. names.append(hghtemplate % (number, s, '*')) names.append('%d%s%s.hgh' % (number, s, '*')) names.append('%s[.-_]*.hgh' % s) found = False for name in names: # search for file names possibilities for path in pppaths: # in all available directories filenames = glob(join(path, name)) if not filenames: continue if pps == 'paw': # warning: see download.sh in # abinit-pseudopotentials*tar.gz for additional # information! filenames[0] = max(filenames) # Semicore or hard elif pps == 'hgh': filenames[0] = min(filenames) # Lowest valence electron count elif pps == 'hgh.k': filenames[0] = max(filenames) # Semicore - highest electron count elif pps == 'tm': filenames[0] = max(filenames) # Semicore - highest electron count elif pps == 'hgh.sc': filenames[0] = max(filenames) # Semicore - highest electron count if filenames: found = True self.ppp_list.append(filenames[0]) break if found: break if not found: raise RuntimeError('No pseudopotential for %s !' % symbol) def get_number_of_iterations(self): return self.niter def read_number_of_iterations(self): niter = None for line in open(self.label + '.txt'): if line.find(' At SCF step') != -1: # find the last iteration number niter = int(line.split()[3].rstrip(',')) return niter def get_electronic_temperature(self): return self.width * Hartree def read_electronic_temperature(self): width = None # only in log file! for line in open(self.label + '.log'): # find last one if line.find('tsmear') != -1: width = float(line.split()[1].strip()) return width def get_number_of_electrons(self): return self.nelect def read_number_of_electrons(self): nelect = None # only in log file! for line in open(self.label + '.log'): # find last one if line.find('with nelect') != -1: nelect = float(line.split('=')[1].strip()) return nelect def get_number_of_bands(self): return self.nband def read_number_of_bands(self): nband = None for line in open(self.label + '.txt'): # find last one if line.find(' nband') != -1: # nband, or nband1, nband* nband = int(line.split()[-1].strip()) return nband def get_kpts_info(self, kpt=0, spin=0, mode='eigenvalues'): return self.read_kpts_info(kpt, spin, mode) def get_k_point_weights(self): return self.get_kpts_info(kpt=0, spin=0, mode='k_point_weights') def get_bz_k_points(self): raise NotImplementedError def get_ibz_k_points(self): return self.get_kpts_info(kpt=0, spin=0, mode='ibz_k_points') def get_spin_polarized(self): return self.spinpol def get_number_of_spins(self): return 1 + int(self.spinpol) def read_magnetic_moment(self): magmom = None if not self.get_spin_polarized(): magmom = 0.0 else: # only for spinpolarized system Magnetisation is printed for line in open(self.label + '.txt'): if line.find('Magnetisation') != -1: # last one magmom = float(line.split('=')[-1].strip()) return magmom def get_fermi_level(self): return self.read_fermi() def get_eigenvalues(self, kpt=0, spin=0): return self.get_kpts_info(kpt, spin, 'eigenvalues') def get_occupations(self, kpt=0, spin=0): return self.get_kpts_info(kpt, spin, 'occupations') def read_fermi(self): """Method that reads Fermi energy in Hartree from the output file and returns it in eV""" E_f=None filename = self.label + '.txt' text = open(filename).read().lower() assert 'error' not in text for line in iter(text.split('\n')): if line.rfind('fermi (or homo) energy (hartree) =') > -1: E_f = float(line.split('=')[1].strip().split()[0]) return E_f*Hartree def read_kpts_info(self, kpt=0, spin=0, mode='eigenvalues'): """ Returns list of last eigenvalues, occupations, kpts weights, or kpts coordinates for given kpt and spin. Due to the way of reading output the spins are exchanged in spin-polarized case. """ # output may look like this (or without occupation entries); 8 entries per line: # # Eigenvalues (hartree) for nkpt= 20 k points: # kpt# 1, nband= 3, wtk= 0.01563, kpt= 0.0625 0.0625 0.0625 (reduced coord) # -0.09911 0.15393 0.15393 # occupation numbers for kpt# 1 # 2.00000 0.00000 0.00000 # kpt# 2, nband= 3, wtk= 0.04688, kpt= 0.1875 0.0625 0.0625 (reduced coord) # ... # assert mode in ['eigenvalues', 'occupations', 'ibz_k_points', 'k_point_weights'], mode if self.get_spin_polarized(): spin = {0: 1, 1: 0}[spin] if spin == 0: spinname = '' else: spinname = 'SPIN UP'.lower() # number of lines of eigenvalues/occupations for a kpt nband = self.get_number_of_bands() n_entries_float = 8 # float entries per line n_entry_lines = max(1, int((nband - 0.1) / n_entries_float) + 1) filename = self.label + '.txt' text = open(filename).read().lower() assert 'error' not in text lines = text.split('\n') text_list = [] # find the beginning line of last eigenvalues contains_eigenvalues = 0 for n, line in enumerate(lines): if spin == 0: if line.rfind('eigenvalues (hartree) for nkpt') > -1: #if line.rfind('eigenvalues ( ev ) for nkpt') > -1: #MDTMP contains_eigenvalues = n else: if (line.rfind('eigenvalues (hartree) for nkpt') > -1 and line.rfind(spinname) > -1): # find the last 'SPIN UP' contains_eigenvalues = n # find the end line of eigenvalues starting from contains_eigenvalues text_list = [lines[contains_eigenvalues]] for line in lines[contains_eigenvalues + 1:]: text_list.append(line) # find a blank line or eigenvalues of second spin if (not line.strip() or line.rfind('eigenvalues (hartree) for nkpt') > -1): break # remove last (blank) line text_list = text_list[:-1] assert contains_eigenvalues, 'No eigenvalues found in the output' n_kpts = int(text_list[0].split('nkpt=')[1].strip().split()[0]) # get rid of the "eigenvalues line" text_list = text_list[1:] # join text eigenvalues description with eigenvalues # or occupation numbers for kpt# with occupations contains_occupations = False for line in text_list: if line.rfind('occupation numbers') > -1: contains_occupations = True break if mode == 'occupations': assert contains_occupations, 'No occupations found in the output' if contains_occupations: range_kpts = 2*n_kpts else: range_kpts = n_kpts values_list = [] offset = 0 for kpt_entry in range(range_kpts): full_line = '' for entry_line in range(n_entry_lines+1): full_line = full_line+str(text_list[offset+entry_line]) first_line = text_list[offset] if mode == 'occupations': if first_line.rfind('occupation numbers') > -1: # extract numbers full_line = [float(v) for v in full_line.split('#')[1].strip().split()[1:]] values_list.append(full_line) elif mode in ['eigenvalues', 'ibz_k_points', 'k_point_weights']: if first_line.rfind('reduced coord') > -1: # extract numbers if mode == 'eigenvalues': full_line = [Hartree*float(v) for v in full_line.split(')')[1].strip().split()[:]] #full_line = [float(v) for v in full_line.split(')')[1].strip().split()[:]] #MDTMP elif mode == 'ibz_k_points': full_line = [float(v) for v in full_line.split('kpt=')[1].strip().split('(')[0].split()] else: full_line = float(full_line.split('wtk=')[1].strip().split(',')[0].split()[0]) values_list.append(full_line) offset = offset+n_entry_lines+1 if mode in ['occupations', 'eigenvalues']: return np.array(values_list[kpt]) else: return np.array(values_list) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/aims.py000066400000000000000000000614441316323560300243670ustar00rootroot00000000000000"""This module defines an ASE interface to FHI-aims. Felix Hanke hanke@liverpool.ac.uk Jonas Bjork j.bjork@liverpool.ac.uk """ import os import numpy as np from ase.units import Hartree from ase.io.aims import write_aims, read_aims from ase.data import atomic_numbers from ase.calculators.calculator import FileIOCalculator, Parameters, kpts2mp, \ ReadError, PropertyNotImplementedError from ase.utils import basestring float_keys = [ 'charge', 'charge_mix_param', 'default_initial_moment', 'fixed_spin_moment', 'hartree_convergence_parameter', 'harmonic_length_scale', 'ini_linear_mix_param', 'ini_spin_mix_parma', 'initial_moment', 'MD_MB_init', 'MD_time_step', 'prec_mix_param', 'set_vacuum_level', 'spin_mix_param', ] exp_keys = [ 'basis_threshold', 'occupation_thr', 'sc_accuracy_eev', 'sc_accuracy_etot', 'sc_accuracy_forces', 'sc_accuracy_rho', 'sc_accuracy_stress', ] string_keys = [ 'communication_type', 'density_update_method', 'KS_method', 'mixer', 'output_level', 'packed_matrix_format', 'relax_unit_cell', 'restart', 'restart_read_only', 'restart_write_only', 'spin', 'total_energy_method', 'qpe_calc', 'xc', 'species_dir', 'run_command', ] int_keys = [ 'empty_states', 'ini_linear_mixing', 'max_relaxation_steps', 'max_zeroin', 'multiplicity', 'n_max_pulay', 'sc_iter_limit', 'walltime', ] bool_keys = [ 'collect_eigenvectors', 'compute_forces', 'compute_kinetic', 'compute_numerical_stress', 'compute_analytical_stress', 'distributed_spline_storage', 'evaluate_work_function', 'final_forces_cleaned', 'hessian_to_restart_geometry', 'load_balancing', 'MD_clean_rotations', 'MD_restart', 'override_illconditioning', 'override_relativity', 'restart_relaxations', 'squeeze_memory', 'symmetry_reduced_k_grid', 'use_density_matrix', 'use_dipole_correction', 'use_local_index', 'use_logsbt', 'vdw_correction_hirshfeld', ] list_keys = [ 'init_hess', 'k_grid', 'k_offset', 'MD_run', 'MD_schedule', 'MD_segment', 'mixer_threshold', 'occupation_type', 'output', 'cube', 'preconditioner', 'relativistic', 'relax_geometry', ] class Aims(FileIOCalculator): command = 'aims.version.serial.x > aims.out' implemented_properties = ['energy', 'forces', 'stress', 'dipole', 'magmom'] def __init__(self, restart=None, ignore_bad_restart_file=False, label=os.curdir, atoms=None, cubes=None, radmul=None, tier=None, **kwargs): """Construct FHI-aims calculator. The keyword arguments (kwargs) can be one of the ASE standard keywords: 'xc', 'kpts' and 'smearing' or any of FHI-aims' native keywords. Additional arguments: cubes: AimsCube object Cube file specification. radmul: int Set radial multiplier for the basis set of all atomic species. tier: int or array of ints Set basis set tier for all atomic species. """ try: self.outfilename = kwargs.get('run_command').split()[-1] except: self.outfilename = 'aims.out' FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, command=kwargs.get('run_command'), **kwargs) self.cubes = cubes self.radmul = radmul self.tier = tier def set_label(self, label): self.label = label self.directory = label self.prefix = '' self.out = os.path.join(label, self.outfilename) def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) # Ignore unit cell for molecules: if not atoms.pbc.any() and 'cell' in system_changes: system_changes.remove('cell') return system_changes def set(self, **kwargs): xc = kwargs.get('xc') if xc: kwargs['xc'] = {'LDA': 'pw-lda', 'PBE': 'pbe'}.get(xc, xc) changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() return changed_parameters def write_input(self, atoms, scaled = False, properties=None, system_changes=None, ghosts=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) have_lattice_vectors = atoms.pbc.any() have_k_grid = ('k_grid' in self.parameters or 'kpts' in self.parameters) if have_lattice_vectors and not have_k_grid: raise RuntimeError('Found lattice vectors but no k-grid!') if not have_lattice_vectors and have_k_grid: raise RuntimeError('Found k-grid but no lattice vectors!') write_aims(os.path.join(self.directory, 'geometry.in'), atoms, scaled, ghosts) self.write_control(atoms, os.path.join(self.directory, 'control.in')) self.write_species(atoms, os.path.join(self.directory, 'control.in')) self.parameters.write(os.path.join(self.directory, 'parameters.ase')) def write_control(self, atoms, filename): output = open(filename, 'w') for line in ['=====================================================', 'FHI-aims file: ' + filename, 'Created using the Atomic Simulation Environment (ASE)', '', 'List of parameters used to initialize the calculator:', '=====================================================']: output.write('#' + line + '\n') assert not ('kpts' in self.parameters and 'k_grid' in self.parameters) assert not ('smearing' in self.parameters and 'occupation_type' in self.parameters) for key, value in self.parameters.items(): if key == 'kpts': mp = kpts2mp(atoms, self.parameters.kpts) output.write('%-35s%d %d %d\n' % (('k_grid',) + tuple(mp))) dk = 0.5 - 0.5 / np.array(mp) output.write('%-35s%f %f %f\n' % (('k_offset',) + tuple(dk))) elif key == 'species_dir' or key == 'run_command': continue elif key == 'smearing': name = self.parameters.smearing[0].lower() if name == 'fermi-dirac': name = 'fermi' width = self.parameters.smearing[1] output.write('%-35s%s %f' % ('occupation_type', name, width)) if name == 'methfessel-paxton': order = self.parameters.smearing[2] output.write(' %d' % order) output.write('\n' % order) elif key == 'output': for output_type in value: output.write('%-35s%s\n' % (key, output_type)) elif key == 'vdw_correction_hirshfeld' and value: output.write('%-35s\n' % key) elif key in bool_keys: output.write('%-35s.%s.\n' % (key, repr(bool(value)).lower())) elif isinstance(value, (tuple, list)): output.write('%-35s%s\n' % (key, ' '.join(str(x) for x in value))) elif isinstance(value, basestring): output.write('%-35s%s\n' % (key, value)) else: output.write('%-35s%r\n' % (key, value)) if self.cubes: self.cubes.write(output) output.write( '#=======================================================\n\n') output.close() def read(self, label): FileIOCalculator.read(self, label) geometry = os.path.join(self.directory, 'geometry.in') control = os.path.join(self.directory, 'control.in') for filename in [geometry, control, self.out]: if not os.path.isfile(filename): raise ReadError self.atoms = read_aims(geometry) self.parameters = Parameters.read(os.path.join(self.directory, 'parameters.ase')) self.read_results() def read_results(self): converged = self.read_convergence() if not converged: os.system('tail -20 ' + self.out) raise RuntimeError('FHI-aims did not converge!\n' + 'The last lines of output are printed above ' + 'and should give an indication why.') self.read_energy() if ('compute_forces' in self.parameters or 'sc_accuracy_forces' in self.parameters): self.read_forces() if ('compute_numerical_stress' in self.parameters or 'compute_analytical_stress' in self.parameters): self.read_stress() if ('dipole' in self.parameters.get('output', []) and not self.atoms.pbc.any()): self.read_dipole() def write_species(self, atoms, filename='control.in'): self.ctrlname = filename species_path = self.parameters.get('species_dir') if species_path is None: species_path = os.environ.get('AIMS_SPECIES_DIR') if species_path is None: raise RuntimeError( 'Missing species directory! Use species_dir ' + 'parameter or set $AIMS_SPECIES_DIR environment variable.') control = open(filename, 'a') symbols = atoms.get_chemical_symbols() symbols2 = [] for n, symbol in enumerate(symbols): if symbol not in symbols2: symbols2.append(symbol) if self.tier is not None: if isinstance(self.tier, int): self.tierlist = np.ones(len(symbols2), 'int') * self.tier elif isinstance(self.tier, list): assert len(self.tier) == len(symbols2) self.tierlist = self.tier for i, symbol in enumerate(symbols2): fd = os.path.join(species_path, '%02i_%s_default' % (atomic_numbers[symbol], symbol)) reached_tiers = False for line in open(fd, 'r'): if self.tier is not None: if 'First tier' in line: reached_tiers = True self.targettier = self.tierlist[i] self.foundtarget = False self.do_uncomment = True if reached_tiers: line = self.format_tiers(line) control.write(line) if self.tier is not None and not self.foundtarget: raise RuntimeError( "Basis tier %i not found for element %s" % (self.targettier, symbol)) control.close() if self.radmul is not None: self.set_radial_multiplier() def format_tiers(self, line): if 'meV' in line: assert line[0] == '#' if 'tier' in line and 'Further' not in line: tier = line.split(" tier")[0] tier = tier.split('"')[-1] current_tier = self.translate_tier(tier) if current_tier == self.targettier: self.foundtarget = True elif current_tier > self.targettier: self.do_uncomment = False else: self.do_uncomment = False return line elif self.do_uncomment and line[0] == '#': return line[1:] elif not self.do_uncomment and line[0] != '#': return '#' + line else: return line def translate_tier(self, tier): if tier.lower() == 'first': return 1 elif tier.lower() == 'second': return 2 elif tier.lower() == 'third': return 3 elif tier.lower() == 'fourth': return 4 else: return -1 def set_radial_multiplier(self): assert isinstance(self.radmul, int) newctrl = self.ctrlname +'.new' fin = open(self.ctrlname, 'r') fout = open(newctrl, 'w') newline = " radial_multiplier %i\n" % self.radmul for line in fin: if ' radial_multiplier' in line: fout.write(newline) else: fout.write(line) fin.close() fout.close() os.rename(newctrl, self.ctrlname) def get_dipole_moment(self, atoms): if ('dipole' not in self.parameters.get('output', []) or atoms.pbc.any()): raise PropertyNotImplementedError return FileIOCalculator.get_dipole_moment(self, atoms) def get_stress(self, atoms): if ('compute_numerical_stress' not in self.parameters and 'compute_analytical_stress' not in self.parameters): raise PropertyNotImplementedError return FileIOCalculator.get_stress(self, atoms) def get_forces(self, atoms): if ('compute_forces' not in self.parameters and 'sc_accuracy_forces' not in self.parameters): raise PropertyNotImplementedError return FileIOCalculator.get_forces(self, atoms) def read_dipole(self): "Method that reads the electric dipole moment from the output file." for line in open(self.out, 'r'): if line.rfind('Total dipole moment [eAng]') > -1: dipolemoment = np.array([float(f) for f in line.split()[6:9]]) self.results['dipole'] = dipolemoment def read_energy(self): for line in open(self.out, 'r'): if line.rfind('Total energy corrected') > -1: E0 = float(line.split()[5]) elif line.rfind('Total energy uncorrected') > -1: F = float(line.split()[5]) self.results['free_energy'] = F self.results['energy'] = E0 def read_forces(self): """Method that reads forces from the output file. If 'all' is switched on, the forces for all ionic steps in the output file will be returned, in other case only the forces for the last ionic configuration are returned.""" lines = open(self.out, 'r').readlines() forces = np.zeros([len(self.atoms), 3]) for n, line in enumerate(lines): if line.rfind('Total atomic forces') > -1: for iatom in range(len(self.atoms)): data = lines[n + iatom + 1].split() for iforce in range(3): forces[iatom, iforce] = float(data[2 + iforce]) self.results['forces'] = forces def read_stress(self): lines = open(self.out, 'r').readlines() stress = None for n, line in enumerate(lines): if (line.rfind('| Analytical stress tensor') > -1 or line.rfind('Numerical stress tensor') > -1): stress = [] for i in [n + 5, n + 6, n + 7]: data = lines[i].split() stress += [float(data[2]), float(data[3]), float(data[4])] # rearrange in 6-component form and return self.results['stress'] = np.array([stress[0], stress[4], stress[8], stress[5], stress[2], stress[1]]) def read_convergence(self): converged = False lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('Have a nice day') > -1: converged = True return converged def get_number_of_iterations(self): return self.read_number_of_iterations() def read_number_of_iterations(self): niter = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('| Number of self-consistency cycles') > -1: niter = int(line.split(':')[-1].strip()) return niter def get_electronic_temperature(self): return self.read_electronic_temperature() def read_electronic_temperature(self): width = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('Occupation type:') > -1: width = float(line.split('=')[-1].strip().split()[0]) return width def get_number_of_electrons(self): return self.read_number_of_electrons() def read_number_of_electrons(self): nelect = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('The structure contains') > -1: nelect = float(line.split()[-2].strip()) return nelect def get_number_of_bands(self): return self.read_number_of_bands() def read_number_of_bands(self): nband = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('Number of Kohn-Sham states') > -1: nband = int(line.split(':')[-1].strip()) return nband def get_k_point_weights(self): return self.read_kpts(mode='k_point_weights') def get_bz_k_points(self): raise NotImplementedError def get_ibz_k_points(self): return self.read_kpts(mode='ibz_k_points') def get_spin_polarized(self): return self.read_number_of_spins() def get_number_of_spins(self): return 1 + self.get_spin_polarized() def get_magnetic_moment(self, atoms=None): return self.read_magnetic_moment() def read_number_of_spins(self): spinpol = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('| Number of spin channels') > -1: spinpol = int(line.split(':')[-1].strip()) - 1 return spinpol def read_magnetic_moment(self): magmom = None if not self.get_spin_polarized(): magmom = 0.0 else: # only for spinpolarized system Magnetisation is printed for line in open(self.out, 'r').readlines(): if line.find('N_up - N_down') != -1: # last one magmom = float(line.split(':')[-1].strip()) return magmom def get_fermi_level(self): return self.read_fermi() def get_eigenvalues(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'eigenvalues') def get_occupations(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'occupations') def read_fermi(self): E_f = None lines = open(self.out, 'r').readlines() for n, line in enumerate(lines): if line.rfind('| Chemical potential (Fermi level) in eV') > -1: E_f = float(line.split(':')[-1].strip()) return E_f def read_kpts(self, mode='ibz_k_points'): """ Returns list of kpts weights or kpts coordinates. """ values = [] assert mode in ['ibz_k_points', 'k_point_weights'] lines = open(self.out, 'r').readlines() kpts = None kptsstart = None for n, line in enumerate(lines): if line.rfind('| Number of k-points') > -1: kpts = int(line.split(':')[-1].strip()) for n, line in enumerate(lines): if line.rfind('K-points in task') > -1: kptsstart = n # last occurrence of ( assert not kpts is None assert not kptsstart is None text = lines[kptsstart + 1:] values = [] for line in text[:kpts]: if mode == 'ibz_k_points': b = [float(c.strip()) for c in line.split()[4:7]] else: b = float(line.split()[-1]) values.append(b) if len(values) == 0: values = None return np.array(values) def read_eigenvalues(self, kpt=0, spin=0, mode='eigenvalues'): """ Returns list of last eigenvalues, occupations for given kpt and spin. """ values = [] assert mode in ['eigenvalues', 'occupations'] lines = open(self.out, 'r').readlines() # number of kpts kpts = None for n, line in enumerate(lines): if line.rfind('| Number of k-points') > -1: kpts = int(line.split(':')[-1].strip()) break assert not kpts is None assert kpt + 1 <= kpts # find last (eigenvalues) eigvalstart = None for n, line in enumerate(lines): # eigenvalues come after Preliminary charge convergence reached if line.rfind('Preliminary charge convergence reached') > -1: eigvalstart = n break assert not eigvalstart is None lines = lines[eigvalstart:] for n, line in enumerate(lines): if line.rfind('Writing Kohn-Sham eigenvalues') > -1: eigvalstart = n break assert not eigvalstart is None text = lines[eigvalstart + 1:] # remove first 1 line # find the requested k-point nbands = self.read_number_of_bands() sppol = self.get_spin_polarized() beg = ((nbands + 4 + int(sppol) * 1) * kpt * (sppol + 1) + 3 + sppol * 2 + kpt * sppol) if self.get_spin_polarized(): if spin == 0: beg = beg end = beg + nbands else: beg = beg + nbands + 5 end = beg + nbands else: end = beg + nbands values = [] for line in text[beg:end]: # aims prints stars for large values ... line = line.replace('**************', ' 10000') line = line.replace('***************', ' 10000') line = line.replace('****************', ' 10000') b = [float(c.strip()) for c in line.split()[1:]] values.append(b) if mode == 'eigenvalues': values = [Hartree * v[1] for v in values] else: values = [v[0] for v in values] if len(values) == 0: values = None return np.array(values) class AimsCube: "Object to ensure the output of cube files, can be attached to Aims object" def __init__(self, origin=(0, 0, 0), edges=[(0.1, 0.0, 0.0), (0.0, 0.1, 0.0), (0.0, 0.0, 0.1)], points=(50, 50, 50), plots=None): """parameters: origin, edges, points: Same as in the FHI-aims output plots: what to print, same names as in FHI-aims """ self.name = 'AimsCube' self.origin = origin self.edges = edges self.points = points self.plots = plots def ncubes(self): """returns the number of cube files to output """ if self.plots: number = len(self.plots) else: number = 0 return number def set(self, **kwargs): """ set any of the parameters ... """ # NOT IMPLEMENTED AT THE MOMENT! def move_to_base_name(self, basename): """ when output tracking is on or the base namem is not standard, this routine will rename add the base to the cube file output for easier tracking """ for plot in self.plots: found = False cube = plot.split() if (cube[0] == 'total_density' or cube[0] == 'spin_density' or cube[0] == 'delta_density'): found = True old_name = cube[0] + '.cube' new_name = basename + '.' + old_name if cube[0] == 'eigenstate' or cube[0] == 'eigenstate_density': found = True state = int(cube[1]) s_state = cube[1] for i in [10, 100, 1000, 10000]: if state < i: s_state = '0' + s_state old_name = cube[0] + '_' + s_state + '_spin_1.cube' new_name = basename + '.' + old_name if found: os.system('mv ' + old_name + ' ' + new_name) def add_plot(self, name): """ in case you forgot one ... """ self.plots += [name] def write(self, file): """ write the necessary output to the already opened control.in """ file.write('output cube ' + self.plots[0] + '\n') file.write(' cube origin ') for ival in self.origin: file.write(str(ival) + ' ') file.write('\n') for i in range(3): file.write(' cube edge ' + str(self.points[i]) + ' ') for ival in self.edges[i]: file.write(str(ival) + ' ') file.write('\n') if self.ncubes() > 1: for i in range(self.ncubes() - 1): file.write('output cube ' + self.plots[i + 1] + '\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/amber.py000066400000000000000000000317741316323560300245270ustar00rootroot00000000000000"""This module defines an ASE interface to Amber16. Usage: (Tested only with Amber16, http://ambermd.org/) Before usage, input files (infile, topologyfile, incoordfile) """ import os import subprocess import numpy as np from ase.calculators.calculator import Calculator, FileIOCalculator import ase.units as units from scipy.io import netcdf class Amber(FileIOCalculator): """Class for doing Amber classical MM calculations. Example: mm.in:: Minimization with Cartesian restraints &cntrl imin=1, maxcyc=200, (invoke minimization) ntpr=5, (print frequency) &end """ implemented_properties = ['energy', 'forces'] def __init__(self, restart=None, ignore_bad_restart_file=False, label='amber', atoms=None, command=None, amber_exe='sander -O ', infile='mm.in', outfile='mm.out', topologyfile='mm.top', incoordfile='mm.crd', outcoordfile='mm_dummy.crd', **kwargs): """Construct Amber-calculator object. Parameters ========== label: str Name used for all files. May contain a directory. atoms: Atoms object Optional Atoms object to which the calculator will be attached. When restarting, atoms will get its positions and unit-cell updated from file. label: str Prefix to use for filenames (label.in, label.txt, ...). amber_exe: str Name of the amber executable, one can add options like -O and other paramaters here infile: str Input filename for amber, contains instuctions about the run outfile: str Logfilename for amber topologyfile: str Name of the amber topology file incoordfile: str Name of the file containing the input coordinates of atoms outcoordfile: str Name of the file containing the output coordinates of atoms this file is not used in case minisation/dynamics is done by ase. It is only relevant if you run MD/optimisation many steps with amber. """ self.out = 'mm.log' self.positions = None self.atoms = None self.set(**kwargs) self.amber_exe = amber_exe self.infile = infile self.outfile = outfile self.topologyfile = topologyfile self.incoordfile = incoordfile self.outcoordfile = outcoordfile if command is not None: self.command = command else: self.command = (self.amber_exe + ' -i ' + self.infile + ' -o ' + self.outfile + ' -p ' + self.topologyfile + ' -c ' + self.incoordfile + ' -r ' + self.outcoordfile) FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms=None, properties=None, system_changes=None): """Write updated coordinates to a file.""" FileIOCalculator.write_input(self, atoms, properties, system_changes) self.write_coordinates(atoms) def read_results(self): """ read energy and forces """ self.read_energy() self.read_forces() def write_coordinates(self, atoms, filename=''): """ write amber coordinates in netCDF format, only rectangular unit cells are allowed""" if filename == '': filename = self.incoordfile fout = netcdf.netcdf_file(filename, 'w') # dimension fout.Conventions = 'AMBERRESTART' fout.ConventionVersion = "1.0" fout.title = 'Ase-generated-amber-restart-file' fout.application = "AMBER" fout.program = "ASE" fout.programVersion = "1.0" fout.createDimension('cell_spatial', 3) fout.createDimension('label', 5) fout.createDimension('cell_angular', 3) fout.createDimension('time', 1) time = fout.createVariable('time', 'd', ('time',)) time.units = 'picosecond' fout.createDimension('spatial', 3) spatial = fout.createVariable('spatial', 'c', ('spatial',)) spatial[:] = np.asarray(list('xyz')) # spatial = 'xyz' natom = len(atoms) fout.createDimension('atom', natom) coordinates = fout.createVariable('coordinates', 'd', ('atom', 'spatial')) coordinates.units = 'angstrom' coordinates[:] = atoms.get_positions()[:] if atoms.get_velocities() is not None: velocities = fout.createVariable('velocities', 'd', ('atom', 'spatial')) velocities.units = 'angstrom/picosecond' velocities[:] = atoms.get_velocities()[:] # title cell_angular = fout.createVariable('cell_angular', 'c', ('cell_angular', 'label')) cell_angular[0] = np.asarray(list('alpha')) cell_angular[1] = np.asarray(list('beta ')) cell_angular[2] = np.asarray(list('gamma')) # title cell_spatial = fout.createVariable('cell_spatial', 'c', ('cell_spatial',)) cell_spatial[0], cell_spatial[1], cell_spatial[2] = 'a', 'b', 'c' # data cell_lengths = fout.createVariable('cell_lengths', 'd', ('cell_spatial',)) cell_lengths.units = 'angstrom' cell_lengths[0] = atoms.get_cell()[0, 0] cell_lengths[1] = atoms.get_cell()[1, 1] cell_lengths[2] = atoms.get_cell()[2, 2] cell_angles = fout.createVariable('cell_angles', 'd', ('cell_angular',)) box_alpha, box_beta, box_gamma = 90.0, 90.0, 90.0 cell_angles[0] = box_alpha cell_angles[1] = box_beta cell_angles[2] = box_gamma cell_angles.units = 'degree' fout.close() def read_coordinates(self, atoms, filename=''): """Import AMBER16 netCDF restart files. Reads atom positions and velocities (if available), and unit cell (if available) This may be usefull if you have run amber many steps and want to read new positions and velocities """ if filename == '': filename = self.outcoordfile from scipy.io import netcdf import numpy as np import ase.units as units fin = netcdf.netcdf_file(filename, 'r') atoms.set_positions(fin.variables['coordinates'][:]) if 'velocities' in fin.variables: atoms.set_velocities( fin.variables['velocities'][:] / (1000 * units.fs)) if 'cell_lengths' in fin.variables: a = fin.variables['cell_lengths'][0] b = fin.variables['cell_lengths'][1] c = fin.variables['cell_lengths'][2] alpha = fin.variables['cell_angles'][0] beta = fin.variables['cell_angles'][1] gamma = fin.variables['cell_angles'][2] if (all(angle > 89.99 for angle in [alpha, beta, gamma]) and all(angle < 90.01 for angle in [alpha, beta, gamma])): atoms.set_cell( np.array([[a, 0, 0], [0, b, 0], [0, 0, c]])) atoms.set_pbc(True) else: raise NotImplementedError('only rectangular cells are' ' implemented in ASE-AMBER') else: atoms.set_pbc(False) def read_energy(self, filename='mden'): """ read total energy from amber file """ lines = open(filename, 'r').readlines() self.results['energy'] = \ float(lines[16].split()[2]) * units.kcal / units.mol def read_forces(self, filename='mdfrc'): """ read forces from amber file """ f = netcdf.netcdf_file(filename, 'r') forces = f.variables['forces'] self.results['forces'] = forces[-1, :, :] \ / units.Ang * units.kJ / units.mol f.close() def set_charges(self, selection, charges, parmed_filename=None): """ Modify amber topology charges to contain the updated QM charges, needed in QM/MM. Using amber's parmed program to change charges. """ qm_list = list(selection) fout = open(parmed_filename, 'w') fout.write('# update the following QM charges \n') for i, charge in zip(qm_list, charges): fout.write('change charge @' + str(i + 1) + ' ' + str(charge) + ' \n') fout.write('# Output the topology file \n') fout.write('outparm ' + self.topologyfile + ' \n') fout.close() parmed_command = ('parmed -O -i ' + parmed_filename + ' -p ' + self.topologyfile + ' > ' + self.topologyfile + '.log 2>&1') olddir = os.getcwd() try: os.chdir(self.directory) errorcode = subprocess.call(parmed_command, shell=True) finally: os.chdir(olddir) if errorcode: raise RuntimeError('%s returned an error: %d' % (self.label, errorcode)) def map(atoms, top): p = np.zeros((2, len(atoms)), dtype="int") elements = atoms.get_chemical_symbols() unique_elements = np.unique(atoms.get_chemical_symbols()) for i in range(len(unique_elements)): idx = 0 for j in range(len(atoms)): if elements[j] == unique_elements[i]: idx += 1 symbol = unique_elements[i] + np.str(idx) for k in range(len(atoms)): if top.atoms[k].name == symbol: p[0, k] = j p[1, j] = k break return p try: import sander have_sander = True except ImportError: have_sander = False class SANDER(Calculator): """ Interface to SANDER using Python interface Requires sander Python bindings from http://ambermd.org/ """ implemented_properties = ['energy', 'forces'] def __init__(self, atoms=None, label=None, top=None, crd=None, mm_options=None, qm_options=None, permutation=None, **kwargs): if not have_sander: raise RuntimeError("sander Python module could not be imported!") Calculator.__init__(self, label, atoms) self.permutation = permutation if qm_options is not None: sander.setup(top, crd.coordinates, crd.box, mm_options, qm_options) else: sander.setup(top, crd.coordinates, crd.box, mm_options) def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) if system_changes: if 'energy' in self.results: del self.results['energy'] if 'forces' in self.results: del self.results['forces'] if 'energy' not in self.results: if self.permutation is None: crd = np.reshape(atoms.get_positions(), (1, len(atoms), 3)) else: crd = np.reshape(atoms.get_positions() [self.permutation[0, :]], (1, len(atoms), 3)) sander.set_positions(crd) e, f = sander.energy_forces() self.results['energy'] = e.tot * units.kcal / units.mol if self.permutation is None: self.results['forces'] = (np.reshape(np.array(f), (len(atoms), 3)) * units.kcal / units.mol) else: ff = np.reshape(np.array(f), (len(atoms), 3)) * \ units.kcal / units.mol self.results['forces'] = ff[self.permutation[1, :]] if 'forces' not in self.results: if self.permutation is None: crd = np.reshape(atoms.get_positions(), (1, len(atoms), 3)) else: crd = np.reshape(atoms.get_positions()[self.permutation[0, :]], (1, len(atoms), 3)) sander.set_positions(crd) e, f = sander.energy_forces() self.results['energy'] = e.tot * units.kcal / units.mol if self.permutation is None: self.results['forces'] = (np.reshape(np.array(f), (len(atoms), 3)) * units.kcal / units.mol) else: ff = np.reshape(np.array(f), (len(atoms), 3)) * \ units.kcal / units.mol self.results['forces'] = ff[self.permutation[1, :]] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/ase_qmmm_manyqm.py000077500000000000000000001676751316323560300266370ustar00rootroot00000000000000from __future__ import print_function """QM/MM interface with QM=FHI-aims, MM=gromacs QM could be something else, but you need to read in qm-atom charges from the qm program (in method 'get_qm_charges') One can have many QM regions, each with a different calculator. There can be only one MM calculator, which is calculating the whole system. Non-bonded interactions: ------------------------ Generally: Within the same QM-QM: by qm calculator MM-MM: by MM calculator QM-MM: by MM using MM vdw parameters and QM charges. Different QM different QM: by MM using QM and MM charges and MM-vdw parameters The Hirschfeld charges (or other atomic charges) on QM atoms are calculated by QM in a H terminated cluster in vacuum. The charge of QM atom next to MM atom (edge-QM-atom) and its H neighbors are set as in the classical force field. The extra(missing) charge results from: 1) linkH atoms 2) The edge-QM atoms, and their qm-H neighbors, have their original MM charges. 3) and the fact that the charge of the QM fraction is not usually an integer when using the original MM charges. It is added equally to all QM atoms (not being linkH and not being edge-QM-atom or its H neighbor) so that the total charge of the MM-fragment involving QM atoms will be the same as in the original MM-description. Vdw interactions are calculated by MM-gromacs for MM and MM-QM inteactions. The QM-QM vdw interaction s could be done by the FHI-aims if desired (by modifying the imput for QM-FHI-aims input accordingly. Bonded interactions:: E= E_qm(QM-H) ; qm energy of H terminated QM cluster(s) + E_mm(ALL ATOMS) ; mm energy of all atoms, ; except for terms in which all MM-interacting atoms are ; in the same QM region Forces do not act on link atoms but they are positioned by scaling. Forces on link atoms are given to their QM and MM neighbors by chain rule. (see J. Chem. Theory Comput. 2011, 7, 761-777). The optimal edge-qm-atom-linkH bond length is calculated by QM in 'get_eq_qm_atom_link_h_distances' or they are read from a file. Questions & Comments markus.kaukonen@iki.fi I'm especially interested in cases when we need two or more QM regions. For instance two redox centers in a protein, cathode and anode of a fuel cell ... you name it! Some things to improve: 1) Water topology issue (at the moment water cannot be in QM), Its topology should be put into the main topology file, not in a separate file. 2) point charges and periodicity (if desired) to the QM calculation (now in vacuum) 3) Eichinger type of link atom treatment with fitted force constants for linkH-QMedge (bond strecth) linkH-QMedge-QMnextTOedge (angle terms) 4) file io using unformatted formats (.trr) instead of g96 This is not easily possible without loading extra stuff from ftp://ftp.gromacs.org/pub/contrib/xd...e-1.1.1.tar.gz. 5) Utilize gromacs-python wrapper: (just found this today 31.12.2012...) http://orbeckst.github.com/GromacsWrapper/index.html# """ import sys import numpy as np def get_neighbor_list(system): """ Makes a neighbor list of a system (ase Atoms). See https:\ //wiki.fysik.dtu.dk/ase/ase/calculators/calculators.html#module-calculators """ from ase.neighborlist import NeighborList from ase.data import covalent_radii import os import pickle NEIGHBOR_FILE = 'neighbor_list_for_ase_qmmm.txt' if os.path.exists(NEIGHBOR_FILE): print('Reading qm/mm neighbor list from file:') print('neighbor_list_for_ase_qmmm.txt') myfile = open(NEIGHBOR_FILE, 'rb') neighbor_list = pickle.load(myfile) else: cut = [covalent_radii[atom.number] for atom in system] skin = [0.2 for atom in system] neighbor_list = NeighborList(cut, skin, \ self_interaction=False, bothways=True) neighbor_list.update(system) file = open(NEIGHBOR_FILE, 'wb') pickle.dump(neighbor_list, file) file.close() return neighbor_list def get_qm_atoms(indexfilename='index.ndx'): """ Read the indexes of all QM atoms (there may be many QM regions) """ infile = open(indexfilename,'r') lines = infile.readlines() infile.close() qms = [] for iline, line in enumerate(lines): if (('[ QM' in line) or ('[ qm' in line) or ('[ Qm' in line)) \ or (('[QM' in line) or ('[qm' in line) or ('[Qm' in line)): qm = [] for checkline in lines[iline+1:]: if ('[') in checkline: break else: qm = qm + [int(float(s)-1.0) for s in \ checkline.split() if s.isdigit()] qm = list(set(qm)) qms.append(qm) return qms class LinkAtom: """ Class for information about a single link-atom (it terminates a QM cluster) qm_region_index and link_atom_index refer to the following indexing system: [[QM0 link atoms indexes from 0],[QM1 link atoms indexes from 0],...] So above the second link atom in second qm region would have qm_region_index=1, link_atom_index=1 link_atom_index_in_qm tells which index in qm system the link atom has for instance qm_region_index=1, link_atom_index_in_qm=20 means that link atom is 21'st atom in the second qm system """ def __init__(self, atom, qm_region_index, link_atom_index): """ set initial values to a link atom object """ self.atom = atom self.qm_region_index = qm_region_index self.link_atom_index = link_atom_index self.link_atom_index_in_qm = None self.qm_neighbor = None self.mm_neighbor = None self.qm2_neighbors = [] self.qm3_neighbors = [] self.mm2_neighbors = [] self.set_qm2_neighbors = set([]) self.set_qm3_neighbors = set([]) self.set_mm2_neighbors = set([]) self.force_constant = 0.0 self.equilibrium_distance_xh = 0.0 self.equilibrium_distance_xy = 0.0 def set_link_atom(self, atom): """ set an ase-atom to be the link atom """ self.atom = atom def set_link_atom_qm_region_index(self, qm_region_index): """ set to which qm region the link atom belongs to """ self.qm_region_index = qm_region_index def set_link_atom_index_in_qm(self, link_atom_index_in_qm): """ set what is my link atom index in this qm region """ self.link_atom_index_in_qm = link_atom_index_in_qm def set_link_atom_qm_neighbor(self, qm_neighbor): """ set what index does my qm neighbor have""" self.qm_neighbor = qm_neighbor def set_link_atom_mm_neighbor(self, mm_neighbor): """ set what index does my mm neighbor have""" self.mm_neighbor = mm_neighbor def set_link_atom_qm2_neighbors(self, qm2_neighbors): """ set what index does my second qm neighbor have""" self.qm2_neighbors = qm2_neighbors def set_link_atom_qm3_neighbors(self, qm3_neighbors): """ set what index does my third qm neighbor have""" self.qm3_neighbors = qm3_neighbors def set_link_atom_mm2_neighbors(self, mm2_neighbors): """ set what index does my second mm neighbor have""" self.mm2_neighbors = mm2_neighbors def set_force_constant(self, force_constant): """ set the force constant of bond edge-qm -- linkH (not used)""" self.force_constant = force_constant def set_equilibrium_distance_xh(self, equilibrium_distance_xh): """ set the equilibrium edge-qm -- linkH distance """ self.equilibrium_distance_xh = equilibrium_distance_xh def set_equilibrium_distance_xy(self, equilibrium_distance_xy): """set the equilibrium edge-qm -- edge-mm distance (by MM-force field)""" self.equilibrium_distance_xy = equilibrium_distance_xy def get_link_atom(self): """ get an ase-atom to be the link atom """ return self.atom def get_link_atom_qm_region_index(self): """ get to which qm region the link atom belongs to """ return self.qm_region_index def get_link_atom_index_in_qm(self): """ get what is my link atom index in this qm region """ return self.link_atom_index_in_qm def get_link_atom_qm_neighbor(self): """ get what index does my qm neighbor have""" return self.qm_neighbor def get_link_atom_mm_neighbor(self): """ get what index does my mm neighbor have""" return self.mm_neighbor def get_link_atom_qm2_neighbors(self): """ get what index does my second qm neighbor have""" return self.qm2_neighbors def get_link_atom_qm3_neighbors(self): """ get what index does my third qm neighbor have""" return self.qm3_neighbors def get_link_atom_mm2_neighbors(self): """ get what index does my second mm neighbor have""" return self.mm2_neighbors def get_force_constant(self): """ get the force constant of bond edge-qm -- linkH (not used)""" return self.force_constant def get_equilibrium_distance_xh(self): """ get the equilibrium edge-qm -- linkH distance """ return self.equilibrium_distance_xh def get_equilibrium_distance_xy(self): """get the equilibrium edge-qm -- edge-mm distance (by MM-force field)""" return self.equilibrium_distance_xy class AseQmmmManyqm: """ This is a qm/mm interface with qm=FHI-aims, mm=gromacs. We can have many QM regions, each with a different calculator. There can be only one MM calculator, which is calculating the whole system. Numeration of atoms starts from 0. (in qms, mms) In qm calculations link atom(s) come(s) last. For any qm region, the optimal bond lengths for all edge_atom-link_atom pairs are optimized by QM simultaneously at the beginning of the run when the flag link_info='byQM' is used (by method . The positions of other a """ def __init__(self, nqm_regions, \ qm_calculators, mm_calculator, \ link_info='byQM'): """ Set initial values to each qm and mm calculator. Additionally set information for the qm/mm interface. The information about qm and mm indexes is read from a file 'index.ndx' Which can be generated with a gromacs tool 'make_ndx' http://www.gromacs.org/Documentation/Gromacs_Utilities/make_ndx Parameters ========== nqm_regions: int how many qm regions qm_calculators: list members of a Class defining a Calculator ase-qm calculator for each qm region mm_calculator: a member of a Class defining a Calculator ase-mm calculator for mm (the whole system) link_info: str can be either 'byQM': the edge_qm_atom-link_h_atom distances are calculated by QM 'byFile':the edge_qm_atom-link_h_atom distances are read from a file """ from ase.io import write import os, glob # clean files = glob.glob('test-*') for file in files: try: os.remove(file) except OSError: pass self.atoms = None self.positions = None self.neighbor_list = None self.link_atoms = [] self.energy = None self.e_delta_stretch = None self.nqm_regions = nqm_regions self.qm_calculators = qm_calculators self.mm_calculator = mm_calculator self.qmatom_types = [] self.mmatom_types = [] #det unique name for each qm region # (the output file of each qm calculation) #for i in range(len(self.qm_calculators)): # self.qm_calculators[i].set(output_template = 'aims'+str(i)) self.link_systems = None self.equilibrium_distances_xy = [] self.equilibrium_distances_xh = [] self.force_constants = [] # get the sets of qm atoms self.qms = get_qm_atoms() self.set_qms = set(sum(self.qms, [])) print('qmsystem(s), indexing from 0:') print('') for index_out in self.qms: index_str = '' for index in index_out: index_str += str(index) + ' ' print('%s' % index_str) print('') if len(self.qms) != nqm_regions: print('Number of set of QM atoms does not match with nqm_regions') print('self.qms %s' % str(self.qms)) print('nqm_regions %s' % str(nqm_regions)) sys.exit() if len(self.qms) != len(qm_calculators): print('Number of set of QM atoms does not match with') print('the number of QM calculators') sys.exit() #read the actual structure to define link atoms and their neighbors system_tmp = mm_calculator.atoms self.positions = system_tmp.get_positions() #get neighbor lists self.neighbor_list = get_neighbor_list(system_tmp) #get the mm-atoms next to link atoms for all qm regions (self.mms_edge, self.qms_edge, self.set_mms_edge, self.set_qms_edge) = \ self.get_edge_qm_and_mm_atoms(self.qms, system_tmp) #get the mm atoms being second neighbors to any qm atom (self.second_mms, self.set_second_mms) = \ self.get_next_neighbors(self.mms_edge, self.set_qms) #get the qm atoms being second neighbors to link atom (self.second_qms, self.set_second_qms) = \ self.get_next_neighbors(self.qms_edge, \ self.set_mms_edge) #get the qm atoms being neighbors to link atom (edge-qm atoms) # and their neighbors which have only single neighbor # (for example edge-QM(C)-H or edge-QM(C)=O; for charge exclusion) self.constant_charge_qms = \ self.get_constant_charge_qms\ (self.set_qms_edge, self.set_second_qms) #get the qm atoms being third neighbors to link atom (self.third_qms, self.set_third_qms) = \ self.get_next_neighbors\ (self.second_qms, self.set_qms_edge) print('self.qms %s' % self.qms) print('QM edge, MM edge %s' % str(self.qms_edge)+' '+ str(self.mms_edge)) print('MM second N of Link %s' % str(self.second_mms)) print('QM second N of Link %s' % str(self.second_qms)) print('QM third N of Link %s' % str(self.third_qms)) #check that MM topology exists: if not(os.path.exists(mm_calculator.topology_filename)): print('NO TOPOLOGY FILE:', mm_calculator.topology_filename) print('use: CALC_MM.generate_topology_and_g96file()') sys.exit() #check that MM run file (.tpr) exists: if not(os.path.exists(mm_calculator.label+'.tpr')): print('NO MM run file FILE:', mm_calculator.label + '.tpr') print('use: CALC_MM.write_input(atoms)') print('use: CALC_MM.generate_gromacs_run_file()') sys.exit() #check that force field files exist if 'GMXDATA' in os.environ: gromacs_home = os.environ['GMXDATA'].split(':')[0] else: gromacs_home = '/usr/local/gromacs/share/gromacs/' ff_filename = gromacs_home+ '/top/' \ + mm_calculator.force_field + '.ff/ffbonded.itp' if not(os.path.exists(mm_calculator.topology_filename)): print('NO force field file:', ff_filename) print('use: GMXDATA environmental variable') sys.exit() if link_info == 'byFILE': self.read_eq_distances_from_file() else: #get QM-MM bond lengths self.get_eq_distances_xy(\ topfilename=mm_calculator.topology_filename,\ force_field= mm_calculator.force_field) #get QM-linkH distances by QM for all link atoms self.get_eq_qm_atom_link_h_distances(system_tmp) # write current link-info data to file (it can be later used, # so XH bondconstants are already calculated by QM # Also one can manually change the XY bond lengths self.write_eq_distances_to_file(\ self.qms_edge) #get target charge of each qm-region self.classical_target_charge_sums = \ self.get_classical_target_charge_sums\ (self.mm_calculator.topology_filename, self.qms) #get a list of link H atoms self.link_atoms = self.get_link_atoms(\ self.qms_edge, self.mms_edge,\ self.force_constants,\ self.equilibrium_distances_xh, \ self.equilibrium_distances_xy) self.qmsystems = self.define_QM_clusters_in_vacuum(system_tmp) for iqm, qm in enumerate(self.qmsystems): write('test-qm-'+str(iqm)+'.xyz', qm) #attach calculators to qm regions for iqm, qm in enumerate(self.qmsystems): self.qmsystems[iqm].set_calculator(self.qm_calculators[iqm]) #attach calculators to the mm region (the whole system) self.mm_system = system_tmp self.mm_system.set_calculator(self.mm_calculator) #initialize total energy and forces of qm regions #and the mm energy self.qm_energies = [] self.qm_forces = [] self.qm_charges = [] self.sum_qm_charge = [] for iqm, qm in enumerate(self.qmsystems): self.qm_energies.append(0.0) self.qm_forces.append(None) self.qm_charges.append(None) self.sum_qm_charge.append(None) self.mm_energy = None #set initial zero forces self.forces = np.zeros((len(self.positions), 3)) self.charges = np.zeros((len(self.positions), 1)) try: os.remove(self.mm_calculator.topology_filename+'.orig') except: pass print('%s' % str(self.mm_calculator.topology_filename)) os.system('cp ' + self.mm_calculator.topology_filename + ' ' +\ self.mm_calculator.topology_filename + '.orig') #remove some classical bonded interaction in the topology file # this need to be done only once, because the bond topology # is unchanged during a QM/MM run #(QM charges can be updated in the topology, however) # the original topology is generated when calling Gromacs( # in the main script setting up QM, MM and minimization if (self.mm_calculator.name == 'Gromacs'): self.kill_top_lines_containing_only_qm_atoms\ (self.mm_calculator.topology_filename, self.qms, \ self.mm_calculator.topology_filename) else: print('Only Gromacs MM-calculator implemented in ASE-QM/MM') sys.exit() #exclude qm-qm non-bonded interactions in MM-gromacs self.add_exclusions() #generate input file for gromacs run self.mm_calculator.generate_gromacs_run_file() ######### end of Init ##################################### def get_forces(self, atoms): """get forces acting on all atoms except link atoms """ self.update(atoms) return self.forces def get_potential_energy(self, atoms): """ get the total energy of the MM and QM system(s) """ self.update(atoms) return self.energy def update(self, atoms): """Updates and does a check to see if a calculation is required""" if self.calculation_required(atoms): # performs an update of the atoms and qm systems self.atoms = atoms.copy() self.positions = atoms.get_positions() self.mm_system = atoms.copy() #get the positions of link H atoms self.link_atoms = self.get_link_atoms(\ self.qms_edge, self.mms_edge,\ self.force_constants,\ self.equilibrium_distances_xh, \ self.equilibrium_distances_xy) #get QM systens self.qmsystems = self.define_QM_clusters_in_vacuum(\ self.atoms) self.calculate(atoms) def calculation_required(self, atoms): """Checks if a calculation is required""" if ((self.positions is None) or (self.atoms != atoms) or (self.energy is None)): return True return False def calculate_mm(self): """ Calculating mm energies and forces """ import os mm = self.atoms mm.set_calculator(self.mm_calculator) if (self.mm_calculator.name == 'Gromacs'): try: os.remove(self.mm_calculator.label+'.log') except: pass self.mm_calculator.update(mm) #self.mm_calculator.run() #self.mm_calculator.calculate(atoms=mm, properties=['energy', 'forces']) self.mm_energy = 0 self.mm_energy += mm.get_potential_energy() self.forces += mm.get_forces() def calculate_qms(self): """ QM calculations on all qm systems are carried out """ for iqm, qm in enumerate(self.qmsystems): qm.set_calculator(self.qm_calculators[iqm]) self.qm_energies[iqm] = qm.get_potential_energy() self.qm_forces[iqm] = np.zeros((len(qm), 3)) self.qm_forces[iqm] = qm.get_forces() (self.sum_qm_charge[iqm], self.qm_charges[iqm]) = \ self.get_qm_charges(iqm, number_of_link_atoms =\ len(self.qms_edge[iqm])) if (len(self.qms[iqm]) != len(self.qm_charges[iqm])): print('Problem in reading charges') print('len(self.qms[iqm]) %s' % str(len(self.qms[iqm]))) print('len(self.qm_charges[iqm]) %s' % str(len(self.qm_charges[iqm]))) print('Check the output of QM program') print('iqm, qm %s' % str(iqm)+ ' '+ str(qm)) print('self.qm_charges[iqm] %s' % str(self.qm_charges[iqm])) sys.exit() def calculate_single_qm(self, myqm, mycalculator): """ Calculate the qm energy of a single qm region (for X-H bond length calculations) """ myqm.set_calculator(mycalculator) return myqm.get_potential_energy() def run(self, atoms): """Runs QMs and MM""" self.forces = np.zeros((len(atoms), 3)) self.calculate_qms() # update QM charges to MM topology file self.set_qm_charges_to_mm_topology() #generate gromacs run file (.tpr) base on new topology self.mm_calculator.generate_gromacs_run_file() self.calculate_mm() def calculate(self, atoms): """gets all energies and forces (qm, mm, qm-mm and corrections)""" self.run(atoms) self.energy = sum(self.qm_energies)+self.mm_energy #map the forces of QM systems to all atoms #loop over qm regions for qm, qm_force in zip(self.qms, self.qm_forces): #loop over qm atoms in a qm region #set forces to the all-atom set (the all atom set does not # have link atoms) for iqm_atom, qm_atom in enumerate(qm): self.forces[qm_atom] = self.forces[qm_atom] + \ qm_force[iqm_atom] self.get_link_atom_forces(action = 'QM') def get_link_atoms(self, qm_links, mm_links, \ force_constants,\ equilibrium_distances_xh, equilibrium_distances_xy): """ QM atoms can be bonded to MM atoms. In this case one sets an extra H atom (a link atom). The positions of the all link H atoms in all qm regions are set along QM-MM and bond with length defined by: J. Chem. Theory Comput 2011, 7, 761-777, Eq 1 r_XH = r_XY_current*(r_XH_from_qm_calculation /r_XY_from_forceField) """ import math from ase import Atom link_hs = [] for i_qm_region, (qm0, mm0) in enumerate (zip( qm_links, mm_links)): for i_link_atom, (qmatom, mmatom) in enumerate (zip(qm0, mm0)): dx = (self.positions[mmatom, 0] - self.positions[qmatom, 0]) dy = (self.positions[mmatom, 1] - self.positions[qmatom, 1]) dz = (self.positions[mmatom, 2] - self.positions[qmatom, 2]) d = math.sqrt(dx* dx+ dy* dy+ dz* dz) unit_x = dx/ d unit_y = dy/ d unit_z = dz/ d xh_bond_length = \ d*\ self.equilibrium_distances_xh[i_qm_region][i_link_atom]/\ self.equilibrium_distances_xy[i_qm_region][i_link_atom] posh_x = self.positions[qmatom, 0] + unit_x* xh_bond_length posh_y = self.positions[qmatom, 1] + unit_y* xh_bond_length posh_z = self.positions[qmatom, 2] + unit_z* xh_bond_length tmp_link_h = (Atom('H', position=(posh_x, posh_y, posh_z))) link_h = LinkAtom(atom=tmp_link_h, \ qm_region_index = i_qm_region,\ link_atom_index = i_link_atom) link_h.set_link_atom_qm_neighbor(qmatom) link_h.set_link_atom_mm_neighbor(mmatom) link_h.set_force_constant(\ force_constants[i_qm_region][i_link_atom]) link_h.set_equilibrium_distance_xh(equilibrium_distances_xh\ [i_qm_region][i_link_atom]) link_h.set_equilibrium_distance_xy(equilibrium_distances_xy\ [i_qm_region][i_link_atom]) link_hs.append(link_h) return (link_hs) def get_link_atom_forces(self, action): """ Add forces due to link atom to QM atom and to MM atom next to each link atom. Top Curr Chem (2007) 268: 173-290 QM/MM Methods for Biological Systems Hans Martin Senn and Walter Thiel Eqs. 10(p192), 12(p193), 16a, 16b(p 194) """ for link_atom in self.link_atoms: i_qm_atom = link_atom.qm_neighbor i_mm_atom = link_atom.mm_neighbor i_qm_region = link_atom.qm_region_index link_atom_index_in_qm = link_atom.get_link_atom_index_in_qm() if (action == 'QM'): force_of_h = self.qm_forces[i_qm_region][link_atom_index_in_qm] elif (action == 'MM'): force_of_h = link_atom.mm_force else: print('not implemented in get_link_atom_forces') sys.exit() g = link_atom.equilibrium_distance_xh/\ link_atom.equilibrium_distance_xy self.forces[i_mm_atom, 0] = self.forces[i_mm_atom, 0] +\ force_of_h[0] * g self.forces[i_mm_atom, 1] = self.forces[i_mm_atom, 1] +\ force_of_h[1] * g self.forces[i_mm_atom, 2] = self.forces[i_mm_atom, 2] +\ force_of_h[2] * g self.forces[i_qm_atom, 0] = self.forces[i_qm_atom, 0] +\ force_of_h[0] * (1.0 - g) self.forces[i_qm_atom, 1] = self.forces[i_qm_atom, 1] +\ force_of_h[1] * (1.0 - g) self.forces[i_qm_atom, 2] = self.forces[i_qm_atom, 2] +\ force_of_h[2] * (1.0 - g) def add_energy_exclusion_group(self, indexfilename='index.ndx'): """ Add energy exclusions for MM calculations. This is the way to block non-bonded MM (coulomb&vdW) interactions within a single QM region. """ infile = open(indexfilename,'r') lines = infile.readlines() infile.close() qm_region_names = [] for line in lines: if (('QM' in line) or ('Qm' in line) or ('qm' in line)): qm_region_names.append(line.split()[1]) infile = open(self.mm_calculator.label+'.mdp','r') lines = infile.readlines() infile.close() outfile = open(self.mm_calculator.label+'.mdp','w') for line1 in lines: outfile.write(line1) outfile.write(';qm regions should not MM-interact with themselves \n') outfile.write(';but separate qm regions MM-interact with each other \n') outfile.write('energygrps = ') for name in qm_region_names: outfile.write(name + ' ') outfile.write('\n') outfile.write('energygrp_excl = ') for name in qm_region_names: outfile.write(name + ' ' + name + ' ') outfile.write('\n') outfile.close() return def add_exclusions(self): """ Add energy exclusions for MM calculations. This is the way to block non-bonded MM (coulomb&vdW) interactions within a single QM region. """ infile = open(self.mm_calculator.topology_filename,'r') lines = infile.readlines() infile.close() outfile = open(self.mm_calculator.topology_filename,'w') for line in lines: if '[ angle' in line: outfile.write('\n') outfile.write('[ exclusions ] \n') outfile.write(\ '; qm regions should not MM-interact with themselves \n') outfile.write(\ '; but separate qm regions MM-interact with each other \n') for qm_region in self.qms: for qm_atom1 in qm_region: outfile.write(str(qm_atom1 + 1) + ' ') for qm_atom2 in qm_region: if qm_atom1 != qm_atom2: outfile.write(str(qm_atom2 + 1) + ' ') outfile.write('\n') outfile.write('\n') outfile.write(line) outfile.close() return def get_qm_charges(self, i_current_qm, calculator='Aims', number_of_link_atoms = 0): """ Get partial charges on QM atoms. The charges at link atoms are not returned. """ if calculator == 'Aims': infile = open('aims'+str(i_current_qm)+'.out','r') lines = infile.readlines() infile.close() qm_charges = [] for line in lines: if ('Hirshfeld charge ' in line): qm_charges.append(float(line.split()[4])) sum_qm_charges = sum(qm_charges) #delete charges of link atoms if (number_of_link_atoms > 0): del qm_charges[-number_of_link_atoms:] return sum_qm_charges, qm_charges def get_topology_lines(self, lines): """ Get lines including charges of atoms (ok_lines) also comments in these lines (comment_lines) and lines before and after these lines (lines_before and lines_after) """ lines_before = [] lines_change = [] lines_after = [] do_lines_before = True do_lines_change = False for line in lines: if (' bonds ') in line: do_lines_change = False if do_lines_before: lines_before.append(line) elif do_lines_change: lines_change.append(line) else: lines_after.append(line) if (' atoms ') in line: do_lines_before = False do_lines_change = True #kill comments and empty lines, #get the charge in the topology file comment_lines = [] lines_ok = [] for iline in range(len(lines_change)): if lines_change[iline].startswith(';'): comment_lines.append(lines_change[iline]) elif not lines_change[iline].strip(): pass else: try: #new charge = float(lines_change[iline].split()[6]) #new charge_orig = charge_orig + charge #top_charge.append(charge) lines_ok.append(lines_change[iline]) except: print('error in reading gromacs topology') print('line is') print('%s' % lines_change[iline]) sys.exit() return lines_before, comment_lines, lines_ok, lines_after def set_qm_charges_to_mm_topology(self): """ Set qm charges to qm atoms of MM topology based on a QM calculation. 1) The charges of link atoms are neglected. 2) The charge of a qm atom next to the link atom is set to be the same value as in the original topology file. (trying to avoid the artificial polarization due to qmAtom-linkH). 3) the total charge of the system (all QM and MM atoms) should be the same as in the original classical system. Therefore, all the QM atoms will gain/loose an equal amount of charge in the MM topology file. """ infile = open(self.mm_calculator.topology_filename,'r') lines = infile.readlines() infile.close() (lines_before, comment_lines, lines_ok, lines_after) = \ self.get_topology_lines(lines) #check that the atom numering is ok for iline in range(len(lines_ok)): atom_nr = iline + 1 if int(lines_ok[iline].split()[0]) != atom_nr: print('2: error in reading gromacs topology') print('line is') print('%s' % lines_ok[iline]) sys.exit() # get the total charge of non-link H atoms in the current qm system # The charges of edge atoms and their H neighbors # are taken from topology # (they are unchanged, it is not from QM calculations) for iqm, qm in enumerate(self.qms): charges = self.qm_charges[iqm] charges_ok = charges qm_charge_no_link_edge_mm = 0.0 n_qm_charge_atoms = 0 for qm_atom, charge in zip(qm, charges): if qm_atom not in self.constant_charge_qms: qm_charge_no_link_edge_mm = \ qm_charge_no_link_edge_mm + charge n_qm_charge_atoms = n_qm_charge_atoms + 1 # correct the total charge to be equal the original one # in the topology file by # adding/ subtracting missing/extra charge on # non-edge and non-single neighbor next neib QM atoms change_charge = \ ( self.classical_target_charge_sums[iqm] - \ qm_charge_no_link_edge_mm)/\ float(n_qm_charge_atoms) for iqmatom, qmatom in enumerate(qm): if qmatom not in self.constant_charge_qms: charges_ok[iqmatom] = charges[iqmatom] + change_charge # set qm charges to the lines of gromacs topology file for iqmatom, qmatom in enumerate(qm): if qmatom not in self.constant_charge_qms: lines_ok[qmatom] = \ lines_ok[qmatom][0:45]\ +str(round((charges_ok[iqmatom]),5)).rjust(11)+\ lines_ok[qmatom][56:70] # write out the new topology file sum_charge = 0.0 for iline in range(len(lines_ok)): sum_charge = sum_charge + float(lines_ok[iline][46:56]) comment = '; qtot '+str(round(sum_charge,4))+'\n'.ljust(12) outfile = open(self.mm_calculator.topology_filename, 'w') for line in lines_before: outfile.write(line) for line in comment_lines: outfile.write(line) sum_charge = 0.0 for line in lines_ok: sum_charge = sum_charge + float(line[46:56]) comment = '; qtot '+str(round(sum_charge,4)).ljust(11)+'\n' outfile.write(line[0:70]+comment) outfile.write('\n') for line in lines_after: outfile.write(line) outfile.close() #------------------------------------------------------------------ #------Below the stuff needed for initializing the QM/MM system --- #------Setting up link atoms, defining QM and MM regions ---------- #------------------------------------------------------------------ def get_edge_qm_and_mm_atoms(self, qms, system): """ Get neighbors of QM atoms (MM-link-atoms) that are not in QM (there may be many QM regions) edge-QM atom can NOT be neighbored by H atom(s) also get edge-QM atoms """ masses = system.get_masses() mms1 = [] qms1 = [] setmms1 = set([]) setqms1 = set([]) for qm in qms: link_mm_atoms = [] link_qm_atoms = [] for qm_atom in qm: indices, offsets = self.neighbor_list.get_neighbors(qm_atom) for neib_atom in indices: if neib_atom not in qm: link_mm_atoms.append(neib_atom) #take unique atoms of flattened list link_mm_atoms = list(set(link_mm_atoms)) # Kill MM atoms that are H atoms in the neighborlist oklink_mm_atoms = [] for index in link_mm_atoms: if masses[index] > 1.5: oklink_mm_atoms.append(index) else: print('WARNING:') print('qm system cannot be bond to H atoms') print('problem atom index is (numbering from 1): %s' % str(index+1)) print('if this is water H you should consider including it') print('in QM') #sys.exit() #get indexes of QM edge atoms, # one qm atom can be more then one time an edge atom # (then this QM atom will have more than one link atoms) for link_mm_atom in oklink_mm_atoms: indices, offsets = \ self.neighbor_list.get_neighbors(link_mm_atom) for neib_atom in indices: if neib_atom in qm: link_qm_atoms.append(neib_atom) mms1.append(oklink_mm_atoms) qms1.append(link_qm_atoms) setmms1 |= set(oklink_mm_atoms) setqms1 |= set(link_qm_atoms) return mms1, qms1, setmms1, setqms1 def get_next_neighbors(self, atom_indexes, prohibited_set): """ Get neighbors of all atoms in 'atom_indexes' that are not in 'prohibited_set'. 'atom_indexes' is a list of list in which atom indexes belonging of each QM region is a separate list, that is [[QM1 atom_indexes], [QM2 atom_indexes], ...] """ list_neibs = [] set_list_neibs = set([]) for current_atoms in atom_indexes: neibs = [] set_current_atoms = set(current_atoms) for current_atom in current_atoms: indices, offsets = \ self.neighbor_list.get_neighbors(current_atom) setneib = set(indices) neibs += list(setneib - set_current_atoms-prohibited_set) list_neibs.append(neibs) set_list_neibs |= set(neibs) return list_neibs, set_list_neibs def get_constant_charge_qms(self, set_qms_edge, set_second_qms): """ get indices of all qm atoms whose charge in MM calculations is taken from the original MM-topology (not from the QM calculation). These atoms are edge QM atoms and their neighbors in QM which have only one neighbor. At least C(edge-qm)-H(second-edge-qm) and C(edge-qm)=O(second-edge-qm) """ set_charge_exclusion = set_qms_edge for second_qms in set_second_qms: indices, offsets = self.neighbor_list.get_neighbors(second_qms) if len(indices)== 1: set_charge_exclusion.add(second_qms) return set_charge_exclusion def get_eq_distances_xy(\ self, topfilename = 'gromos.top', force_field = 'oplsaa'): """ The link atom is positioned as in J. Chem. Theory Comput 2011, 7, 761-777, Eq 1 For this purpose we need the equilibrium length of each QM-MM covalent bond. Those are obtained here from the files of the force field. """ import os print('in get_eq_distances_xy, topfilename=') print('%s' % topfilename) for qm in self.qms_edge: equilibrium_distance_xy = [] for iqm in qm: equilibrium_distance_xy.append(0.0) self.equilibrium_distances_xy.append(equilibrium_distance_xy) #get the version of the topology file where one sees the bond # force constants (file is named as gromacs.top.dump) try: os.remove(self.mm_calculator.label+'.tpr.dump') except OSError: pass os.system('gmxdump -s '+ self.mm_calculator.label\ +'.tpr > ' + \ self.mm_calculator.label+ \ '.tpr.dump 2>/dev/null') if 'GMXDATA' in os.environ: gromacs_home = os.environ['GMXDATA'].split(':')[0] else: gromacs_home = '/usr/local/gromacs/share/gromacs/' #read the bonded force constants of this force field in order to #get an estimate for X-Y bond constant linesff = open(gromacs_home+ '/top/'+ force_field+ \ '.ff/ffbonded.itp', 'r').readlines() oklinesff = [] start = False for line in linesff: if 'bondtypes' in line: start = True elif '[' in line: break if start and (line.strip()): oklinesff.append(line) #lines for getting oplsaa atom dual-types if 'opls' in force_field: lines_for_dual_types = open(gromacs_home+ '/top/'+ force_field+ \ '.ff/ffnonbonded.itp', 'r').readlines() #read the types of interaction for bond stretching lines_tpr = open(self.mm_calculator.label+\ '.tpr.dump', 'r').readlines() #read the topology file to get QM atom type lines_top = open(topfilename, 'r').readlines() oklines_top = [] start = False for line in lines_top: if start and ('[' in line): break if start: if (not line.startswith(';')) or (not line.strip()): oklines_top.append(line) if '[ atoms' in line: start = True #get force constant and bond eq distance for all QM-MM bonds # ok_equilibrium_distances_xy = [] ok_qmatom_types = [] ok_mmatom_types = [] for qm0, mm0, eqsxy in zip( self.qms_edge, self.mms_edge, \ self.equilibrium_distances_xy): ok_eqxy = [] ok_qmatom_type = [] ok_mmatom_type = [] for qmatom, mmatom, eqxy in \ zip(qm0, mm0, eqsxy): #find qm-mm bond in topology file (indexes from 0) # get the index for interaction interaction = 'empty' for line in lines_tpr: if (' type' in line) and ('BONDS' in line): if (qmatom == int(line.split()[3])) and \ (mmatom == int(line.split()[4])): interaction = line.split()[1].lstrip('type=') break if (qmatom == int(line.split()[4])) and \ (mmatom == int(line.split()[3])): interaction = line.split()[1].lstrip('type=') break if interaction == 'empty': print('QM-MM bond not found in topology') print('atoms are: QM, MM: (from 1 indexing) %s' % str(qmatom + 1) + ' ' + str(mmatom + 1)) sys.exit() for line in lines_tpr: if ('functype['+interaction+']=BONDS') in line: r_xy0 = float(line.split()[2].rstrip(',')) #get type of the QM atom qmatom_type = 'empty' for line in oklines_top: if (int(line.split()[0] ) == qmatom+ 1): qmatom_type = line.split()[1] #oplsaa atom type has a double name, #the other one is used in file ffbonded.itp break if (qmatom_type == 'empty'): print('problem in QM atom type') sys.exit() if 'opls' in force_field: found = False for line in lines_for_dual_types: if (qmatom_type == line.split()[0]): qmatom_type = line.split()[1] found = True break if not found: print('problem in QM atom type') print('with OPLSAA force field dual atom types') sys.exit() #get type of the true link-MM atom mmatom_type = 'empty' for line in oklines_top: if (int(line.split()[0] ) == mmatom+ 1): mmatom_type = line.split()[1] #oplsaa atom type has a double name, #the other one is used in file ffbonded.itp break if (mmatom_type == 'empty'): print('problem in MM atom type') sys.exit() if 'opls' in force_field: found = False for line in lines_for_dual_types: if (mmatom_type == line.split()[0]): mmatom_type = line.split()[1] found = True break if not found: print('problem in MM atom type') print('with OPLSAA force field dual atom types') sys.exit() ok_qmatom_type.append(qmatom_type) ok_mmatom_type.append(mmatom_type) if (eqxy != 0.0): #use eq constant given by the user ok_eqxy.append(eqxy) else: ok_eqxy.append(r_xy0) ok_equilibrium_distances_xy.append(ok_eqxy) ok_qmatom_types.append(ok_qmatom_type) ok_mmatom_types.append(ok_mmatom_type) outfile = open('qm-mm-linkAtomsInfo.txt','w') outfile.write(\ '=======================================================\n') outfile.write('Information about QM-MM boundary(ies) \n') outfile.write(\ 'Created using the Atomic Simulation Environment (ASE) \n') outfile.write(\ '=======================================================\n') qmregion_count = 0 # ADD qm-mm-linkAtomsInfo.txt for qm, mm, eqs_xy, eqs_xh, qmtypes, mmtypes in zip\ (self.qms_edge, self.mms_edge, ok_equilibrium_distances_xy,\ self.equilibrium_distances_xh,\ ok_qmatom_types, ok_mmatom_types): outfile.write(\ '=======================================================\n') qmregion_count = qmregion_count+ 1 outfile.write('Parameters related to QM region number '+\ str(qmregion_count)+'\n') for qmatom, mmatom, eq_xy, eq_xh, qmtype, mmtype in zip\ (qm, mm, eqs_xy, eqs_xh,\ qmtypes, mmtypes): outfile.write('qm-link-atom-index (from 1): '+str(qmatom)+'\n') outfile.write('qm-link-atom-type: '+str(qmtype)+'\n') outfile.write('mm-link-atom-index (from 1): '+str(mmatom)+'\n') outfile.write('mm-link-atom-type: '+str(mmtype)+'\n') outfile.write('qm-mm(notH)-equilibrium-distance: '\ +str(eq_xy)+' nm\n') outfile.write('qm-H-equilibrium-distance(calculated by QM): '\ +str(eq_xh)+' nm\n') outfile.close() self.equilibrium_distances_xy = ok_equilibrium_distances_xy self.qmatom_types = ok_qmatom_types self.mmatom_types = ok_mmatom_types return def write_eq_distances_to_file( self, qm_links, filename='linkDATAout.txt'): """ Write classical bond equilibrium lengths for XY (X in QM, Y in MM) Write QM calculated XH(link atom) bond length (X in QM, H link atom) """ outfile = open(filename, 'w') for iqm_region, qmlink in enumerate (qm_links): for ilink, dummy in enumerate (qmlink): data = self.equilibrium_distances_xy[iqm_region][ilink] outfile.write(str(data)+' ') outfile.write('\n') data = self.equilibrium_distances_xh[iqm_region][ilink] outfile.write(str(data)+' ') outfile.write('\n') data = self.force_constants[iqm_region][ilink] outfile.write(str(data)+' ') outfile.write('\n') data = self.qmatom_types[iqm_region][ilink] outfile.write(str(data)+' ') outfile.write('\n') data = self.mmatom_types[iqm_region][ilink] outfile.write(str(data)+' ') outfile.write('\n') outfile.close() return def read_eq_distances_from_file(self, filename='linkDATAin.txt'): """ Read classical bond equilibrium lengths for XY (X in QM, Y in MM) or XH (X in QM, H link atom) """ myfile = open(filename, 'r') self.equilibrium_distances_xy = [] self.equilibrium_distances_xh = [] self.force_constants = [] self.qmatom_types = [] self.mmatom_types = [] print('Reading X-H and other data from file: %s' % filename) for qm in self.qms_edge: equilibrium_distance_xy = [] equilibrium_distance_xh = [] force_constant = [] qmatom_type = [] mmatom_type = [] for iqm, dum in enumerate(qm): line = myfile.readline() equilibrium_distance_xy.append(float(line.split()[0])) line = myfile.readline() equilibrium_distance_xh.append(float(line.split()[0])) line = myfile.readline() force_constant.append(float(line.split()[0])) line = myfile.readline() qmatom_type.append(line.split()[0]) line = myfile.readline() mmatom_type.append(line.split()[0]) self.equilibrium_distances_xy.append(equilibrium_distance_xy) self.equilibrium_distances_xh.append(equilibrium_distance_xh) self.force_constants.append(force_constant) self.qmatom_types.append(qmatom_type) self.mmatom_types.append(mmatom_type) myfile.close() return def get_eq_qm_atom_link_h_distances(self, system_tmp): """ get equilibrium QMatom-linkH distances for all linkH:s by QM """ #import matplotlib #matplotlib.use('Agg') #import matplotlib.pyplot as plt from scipy.optimize import fmin def qm_bond_energy_function(x, system_tmp, i_qm_region): """ get the qm energy of a single qm system with a given edge-qm-atom---link-h-atom distances of that qm region The qm region is i_qm_region, all edge-qm-atom---link-h-atom distance in this qm_region are optimized simultaneously """ for index_x, current_x in enumerate(x): self.equilibrium_distances_xh\ [i_qm_region][index_x] = current_x print('current X-H bond lengths [nm]') print('%s' % str(x)) self.link_atoms = self.get_link_atoms(\ self.qms_edge, self.mms_edge,\ self.force_constants,\ self.equilibrium_distances_xh, \ self.equilibrium_distances_xy) self.qmsystems = \ self.define_QM_clusters_in_vacuum(system_tmp) #try: single_qm_energy = self.calculate_single_qm(\ self.qmsystems[i_qm_region],\ self.qm_calculators[i_qm_region]) #except RuntimeError: # single_qm_energy = BIG_VALUE return single_qm_energy print('=====================================================') print('Calculating X-H bond lengths and bond force constants') print('by QM in one shot for each QM region.') print('In later calculations you can: ') print('cp linkDATAout.txt linkDATAin.txt') print("and set link_info = 'byFILE'") print('=====================================================') self.equilibrium_distances_xh = [] self.force_constants = [] for qm_edges in self.qms_edge: force_constants = [] equilibrium_distances_xh = [] for qm_edge in qm_edges: force_constants.append(0.0) equilibrium_distances_xh.append(0.11) self.force_constants.append(force_constants) self.equilibrium_distances_xh.append(equilibrium_distances_xh) #loop over qm regions. To get optimal simultaneous # edgeQMatom-linkH distance(s) in [nm] in that qm region for i_qm_region in range(len(self.qms_edge)): print('NOW running : ') print('QM region for optimising edge-linkH distances %s' % str(i_qm_region)) x = self.equilibrium_distances_xh[i_qm_region][:] xopt = fmin(qm_bond_energy_function, \ x,\ args=(system_tmp, i_qm_region),\ xtol=0.0001, ftol=0.0001) for index_xopt, current_xopt in enumerate(xopt): self.equilibrium_distances_xh\ [i_qm_region][index_xopt] = current_xopt print('i_qm_region, i_link_atom, optimal X-H bond[nm] %s' \ % (str(i_qm_region) + ' ' + str(index_xopt) \ + ' ' + str(current_xopt))) def define_QM_clusters_in_vacuum(self, system): """ Returns Each QM system as an Atoms object We get a list of these Atoms objects (in case we have many QM regions). """ from ase import Atoms qmsystems = [] for qm0 in self.qms: tmp_system = Atoms() for qmatom in qm0: tmp_system += system[qmatom] qmsystems.append(tmp_system) for link_atom in self.link_atoms: tmp_atom = link_atom.get_link_atom() qm_region = link_atom.get_link_atom_qm_region_index() link_atom_index_in_qm = len(qmsystems[qm_region]) qmsystems[qm_region].append(tmp_atom) link_atom.set_link_atom_index_in_qm(link_atom_index_in_qm) return qmsystems def kill_top_lines_containing_only_qm_atoms(self, \ intopfilename, \ qms, outtopfilename): """ Delete all lines in the topology file that contain only qm atoms in bonded sections (bonds, angles or dihedrals) and in pairs section (1-4 interactions) """ # get an index of all qm atoms in all qm regions qm = set() for qm_tmp in qms: qm = qm.union(set(qm_tmp)) infile = open(intopfilename,'r') lines = infile.readlines() infile.close() outfile = sys.stdout oklines = [] accept = True check = '' for line in lines: if (('[ bonds' in line)): oklines.append(line) accept = False check = 'bond' elif (('[ angles' in line)): oklines.append(line) accept = False check = 'angle' elif (('[ dihedrals' in line)): oklines.append(line) accept = False check = 'dihedral' elif (('[ pairs' in line)): oklines.append(line) accept = False check = 'pair' elif ('[' in line): oklines.append(line) accept = True check = '' elif line in ['\n']: oklines.append(line) accept = True check = '' elif accept: oklines.append(line) else: indexes = [int(float(s)-1.0) \ for s in line.split() if s.isdigit()] indexes1 = [int(s) for s in line.split() if s.isdigit()] if indexes == []:# this takes comment line #after bond, angle, dihedral oklines.append(line) elif check == 'bond': bondedatoms = set(indexes[0:2]) #set empty bond intereaction for qm-qm bonds (type 5) #(this way LJ and electrostatics is not messed up) if (bondedatoms.issubset(qm)): newline = str(indexes1[0]).rjust(8)+\ str(indexes1[1]).rjust(8)+\ ('5').rjust(8) + '\n' oklines.append(newline) else: oklines.append(line) elif check == 'angle': bondedatoms = set(indexes[0:3]) if (bondedatoms.issubset(qm)): pass else: oklines.append(line) elif check == 'dihedral': bondedatoms = set(indexes[0:4]) if (bondedatoms.issubset(qm)): pass else: oklines.append(line) elif check == 'pair': bondedatoms = set(indexes[0:2]) if (bondedatoms.issubset(qm)): pass else: oklines.append(line) outfile = open(outtopfilename,'w') for line in oklines: outfile.write(line) outfile.close() return def get_classical_target_charge_sums(self, intopfilename, qms): """ get sum of MM charges of the charged changed by QM these are qm atoms that are not link-atoms or edge-qm atoms xxx this has a problem: Water is in .itp files, not in topology... """ infile = open(intopfilename,'r') lines = infile.readlines() infile.close() (lines_before, comment_lines, ok_lines, lines_after) = \ self.get_topology_lines(lines) classical_target_charge_sums = [] for iqm, qm in enumerate(qms): classical_target_charge_sum = 0.0 for line in ok_lines: atom_index = int(line.split()[0])-1 if (atom_index in qm) and \ (not(atom_index in self.constant_charge_qms)): classical_target_charge_sum = \ classical_target_charge_sum + \ float(line.split()[6]) classical_target_charge_sums.\ append(classical_target_charge_sum) return classical_target_charge_sums ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/calculator.py000066400000000000000000000542141316323560300255640ustar00rootroot00000000000000import os import copy import subprocess from math import pi, sqrt import numpy as np from ase.dft.kpoints import bandpath, monkhorst_pack class ReadError(Exception): pass class PropertyNotImplementedError(NotImplementedError): pass all_properties = ['energy', 'forces', 'stress', 'dipole', 'charges', 'magmom', 'magmoms', 'free_energy'] all_changes = ['positions', 'numbers', 'cell', 'pbc', 'initial_charges', 'initial_magmoms'] # Recognized names of calculators sorted alphabetically: names = ['abinit', 'aims', 'amber', 'asap', 'castep', 'cp2k', 'demon', 'dftb', 'dmol', 'eam', 'elk', 'emt', 'espresso', 'exciting', 'fleur', 'gaussian', 'gpaw', 'gromacs', 'gulp', 'hotbit', 'jacapo', 'lammps', 'lammpslib', 'lj', 'mopac', 'morse', 'nwchem', 'octopus', 'onetep', 'siesta', 'tip3p', 'turbomole', 'vasp'] special = {'cp2k': 'CP2K', 'dmol': 'DMol3', 'eam': 'EAM', 'elk': 'ELK', 'emt': 'EMT', 'fleur': 'FLEUR', 'gulp': 'GULP', 'lammps': 'LAMMPS', 'lammpslib': 'LAMMPSlib', 'lj': 'LennardJones', 'mopac': 'MOPAC', 'morse': 'MorsePotential', 'nwchem': 'NWChem', 'tip3p': 'TIP3P'} def get_calculator(name): """Return calculator class.""" if name == 'asap': from asap3 import EMT as Calculator elif name == 'gpaw': from gpaw import GPAW as Calculator elif name == 'hotbit': from hotbit import Calculator else: classname = special.get(name, name.title()) module = __import__('ase.calculators.' + name, {}, None, [classname]) Calculator = getattr(module, classname) return Calculator def equal(a, b, tol=None): """ndarray-enabled comparison function.""" if isinstance(a, np.ndarray): b = np.array(b) if a.shape != b.shape: return False if tol is None: return (a == b).all() else: return np.allclose(a, b, rtol=tol, atol=tol) if isinstance(b, np.ndarray): return equal(b, a, tol) if isinstance(a, dict) and isinstance(b, dict): if a.keys() != b.keys(): return False return all(equal(a[key], b[key], tol) for key in a.keys()) if tol is None: return a == b return abs(a - b) < tol * abs(b) + tol def kptdensity2monkhorstpack(atoms, kptdensity=3.5, even=True): """Convert k-point density to Monkhorst-Pack grid size. atoms: Atoms object Contains unit cell and information about boundary conditions. kptdensity: float Required k-point density. Default value is 3.5 point per Ang^-1. even: bool Round up to even numbers. """ recipcell = atoms.get_reciprocal_cell() kpts = [] for i in range(3): if atoms.pbc[i]: k = 2 * pi * sqrt((recipcell[i]**2).sum()) * kptdensity if even: kpts.append(2 * int(np.ceil(k / 2))) else: kpts.append(int(np.ceil(k))) else: kpts.append(1) return np.array(kpts) def kpts2mp(atoms, kpts, even=False): if kpts is None: return np.array([1, 1, 1]) if isinstance(kpts, (float, int)): return kptdensity2monkhorstpack(atoms, kpts, even) else: return kpts def kpts2sizeandoffsets(size=None, density=None, gamma=None, even=None, atoms=None): """Helper function for selecting k-points. Use either size or density. size: 3 ints Number of k-points. density: float K-point density in units of k-points per Ang^-1. gamma: None or bool Should the Gamma-point be included? Yes / no / don't care: True / False / None. even: None or bool Should the number of k-points be even? Yes / no / don't care: True / False / None. atoms: Atoms object Needed for calculating k-point density. """ if size is None: if density is None: size = [1, 1, 1] else: size = kptdensity2monkhorstpack(atoms, density, even) offsets = [0, 0, 0] if gamma is not None: for i, s in enumerate(size): if atoms.pbc[i] and s % 2 != bool(gamma): offsets[i] = 0.5 / s return size, offsets def kpts2ndarray(kpts, atoms=None): """Convert kpts keyword to 2-d ndarray of scaled k-points.""" if kpts is None: return np.zeros((1, 3)) if isinstance(kpts, dict): if 'path' in kpts: return bandpath(cell=atoms.cell, **kpts)[0] size, offsets = kpts2sizeandoffsets(atoms=atoms, **kpts) return monkhorst_pack(size) + offsets if isinstance(kpts[0], int): return monkhorst_pack(kpts) return np.array(kpts) class EigenvalOccupationMixin: """Define 'eigenvalues' and 'occupations' properties on class. eigenvalues and occupations will be arrays of shape (spin, kpts, nbands). Classes must implement the old-fashioned get_eigenvalues and get_occupations methods.""" @property def eigenvalues(self): return self.build_eig_occ_array(self.get_eigenvalues) @property def occupations(self): return self.build_eig_occ_array(self.get_occupation_numbers) def build_eig_occ_array(self, getter): nspins = self.get_number_of_spins() nkpts = len(self.get_ibz_k_points()) nbands = self.get_number_of_bands() arr = np.zeros((nspins, nkpts, nbands)) for s in range(nspins): for k in range(nkpts): arr[s, k, :] = getter(spin=s, kpt=k) return arr class Parameters(dict): """Dictionary for parameters. Special feature: If param is a Parameters instance, then param.xc is a shorthand for param['xc']. """ def __getattr__(self, key): if key not in self: return dict.__getattribute__(self, key) return self[key] def __setattr__(self, key, value): self[key] = value @classmethod def read(cls, filename): """Read parameters from file.""" file = open(os.path.expanduser(filename)) parameters = cls(eval(file.read())) file.close() return parameters def tostring(self): keys = sorted(self) return 'dict(' + ',\n '.join( '{}={!r}'.format(key, self[key]) for key in keys) + ')\n' def write(self, filename): file = open(filename, 'w') file.write(self.tostring()) file.close() class Calculator: """Base-class for all ASE calculators. A calculator must raise PropertyNotImplementedError if asked for a property that it can't calculate. So, if calculation of the stress tensor has not been implemented, get_stress(atoms) should raise PropertyNotImplementedError. This can be achieved simply by not including the string 'stress' in the list implemented_properties which is a class member. These are the names of the standard properties: 'energy', 'forces', 'stress', 'dipole', 'charges', 'magmom' and 'magmoms'. """ implemented_properties = [] 'Properties calculator can handle (energy, forces, ...)' default_parameters = {} 'Default parameters' def __init__(self, restart=None, ignore_bad_restart_file=False, label=None, atoms=None, **kwargs): """Basic calculator implementation. restart: str Prefix for restart file. May contain a directory. Default is None: don't restart. ignore_bad_restart_file: bool Ignore broken or missing restart file. By default, it is an error if the restart file is missing or broken. label: str Name used for all files. May contain a directory. atoms: Atoms object Optional Atoms object to which the calculator will be attached. When restarting, atoms will get its positions and unit-cell updated from file. """ self.atoms = None # copy of atoms object from last calculation self.results = {} # calculated properties (energy, forces, ...) self.parameters = None # calculational parameters if restart is not None: try: self.read(restart) # read parameters, atoms and results except ReadError: if ignore_bad_restart_file: self.reset() else: raise self.label = None self.directory = None self.prefix = None self.set_label(label) if self.parameters is None: # Use default parameters if they were not read from file: self.parameters = self.get_default_parameters() if atoms is not None: atoms.calc = self if self.atoms is not None: # Atoms were read from file. Update atoms: if not (equal(atoms.numbers, self.atoms.numbers) and (atoms.pbc == self.atoms.pbc).all()): raise RuntimeError('Atoms not compatible with file') atoms.positions = self.atoms.positions atoms.cell = self.atoms.cell self.set(**kwargs) if not hasattr(self, 'name'): self.name = self.__class__.__name__.lower() def set_label(self, label): """Set label and convert label to directory and prefix. Examples: * label='abc': (directory='.', prefix='abc') * label='dir1/abc': (directory='dir1', prefix='abc') Calculators that must write results to files with fixed names can overwrite this method so that the directory is set to all of label.""" self.label = label if label is None: self.directory = None self.prefix = None else: self.directory, self.prefix = os.path.split(label) if self.directory == '': self.directory = os.curdir def get_default_parameters(self): return Parameters(copy.deepcopy(self.default_parameters)) def todict(self, skip_default=True): defaults = self.get_default_parameters() dct = {} for key, value in self.parameters.items(): if hasattr(value, 'todict'): value = value.todict() if skip_default: default = defaults.get(key, '_no_default_') if default != '_no_default_' and equal(value, default): continue dct[key] = value return dct def reset(self): """Clear all information from old calculation.""" self.atoms = None self.results = {} def read(self, label): """Read atoms, parameters and calculated properties from output file. Read result from self.label file. Raise ReadError if the file is not there. If the file is corrupted or contains an error message from the calculation, a ReadError should also be raised. In case of succes, these attributes must set: atoms: Atoms object The state of the atoms from last calculation. parameters: Parameters object The parameter dictionary. results: dict Calculated properties like energy and forces. The FileIOCalculator.read() method will typically read atoms and parameters and get the results dict by calling the read_results() method.""" self.set_label(label) def get_atoms(self): if self.atoms is None: raise ValueError('Calculator has no atoms') atoms = self.atoms.copy() atoms.calc = self return atoms @classmethod def read_atoms(cls, restart, **kwargs): return cls(restart=restart, label=restart, **kwargs).get_atoms() def set(self, **kwargs): """Set parameters like set(key1=value1, key2=value2, ...). A dictionary containing the parameters that have been changed is returned. Subclasses must implement a set() method that will look at the chaneged parameters and decide if a call to reset() is needed. If the changed parameters are harmless, like a change in verbosity, then there is no need to call reset(). The special keyword 'parameters' can be used to read parameters from a file.""" if 'parameters' in kwargs: filename = kwargs.pop('parameters') parameters = Parameters.read(filename) parameters.update(kwargs) kwargs = parameters changed_parameters = {} for key, value in kwargs.items(): oldvalue = self.parameters.get(key) if key not in self.parameters or not equal(value, oldvalue): changed_parameters[key] = value self.parameters[key] = value return changed_parameters def check_state(self, atoms, tol=1e-15): """Check for system changes since last calculation.""" if self.atoms is None: system_changes = all_changes[:] else: system_changes = [] if not equal(self.atoms.positions, atoms.positions, tol): system_changes.append('positions') if not equal(self.atoms.numbers, atoms.numbers): system_changes.append('numbers') if not equal(self.atoms.cell, atoms.cell, tol): system_changes.append('cell') if not equal(self.atoms.pbc, atoms.pbc): system_changes.append('pbc') if not equal(self.atoms.get_initial_magnetic_moments(), atoms.get_initial_magnetic_moments(), tol): system_changes.append('initial_magmoms') if not equal(self.atoms.get_initial_charges(), atoms.get_initial_charges(), tol): system_changes.append('initial_charges') return system_changes def get_potential_energy(self, atoms=None, force_consistent=False): energy = self.get_property('energy', atoms) if force_consistent: if 'free_energy' not in self.results: name = self.__class__.__name__ raise PropertyNotImplementedError( 'Force consistent/free energy ("free_energy") ' 'not provided by {0} calculator'.format(name)) return self.results['free_energy'] else: return energy def get_forces(self, atoms=None): return self.get_property('forces', atoms) def get_stress(self, atoms=None): return self.get_property('stress', atoms) def get_dipole_moment(self, atoms=None): return self.get_property('dipole', atoms) def get_charges(self, atoms=None): return self.get_property('charges', atoms) def get_magnetic_moment(self, atoms=None): return self.get_property('magmom', atoms) def get_magnetic_moments(self, atoms=None): """Calculate magnetic moments projected onto atoms.""" return self.get_property('magmoms', atoms) def get_property(self, name, atoms=None, allow_calculation=True): if name not in self.implemented_properties: raise PropertyNotImplementedError('{} property not implemented' .format(name)) if atoms is None: atoms = self.atoms system_changes = [] else: system_changes = self.check_state(atoms) if system_changes: self.reset() if name not in self.results: if not allow_calculation: return None self.calculate(atoms, [name], system_changes) if name == 'magmom' and 'magmom' not in self.results: return 0.0 if name == 'magmoms' and 'magmoms' not in self.results: return np.zeros(len(atoms)) if name not in self.results: # For some reason the calculator was not able to do what we want, # and that is OK. raise PropertyNotImplementedError('{} not present in this ' 'calculation'.format(name)) result = self.results[name] if isinstance(result, np.ndarray): result = result.copy() return result def calculation_required(self, atoms, properties): assert not isinstance(properties, str) system_changes = self.check_state(atoms) if system_changes: return True for name in properties: if name not in self.results: return True return False def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): """Do the calculation. properties: list of str List of what needs to be calculated. Can be any combination of 'energy', 'forces', 'stress', 'dipole', 'charges', 'magmom' and 'magmoms'. system_changes: list of str List of what has changed since last calculation. Can be any combination of these six: 'positions', 'numbers', 'cell', 'pbc', 'initial_charges' and 'initial_magmoms'. Subclasses need to implement this, but can ignore properties and system_changes if they want. Calculated properties should be inserted into results dictionary like shown in this dummy example:: self.results = {'energy': 0.0, 'forces': np.zeros((len(atoms), 3)), 'stress': np.zeros(6), 'dipole': np.zeros(3), 'charges': np.zeros(len(atoms)), 'magmom': 0.0, 'magmoms': np.zeros(len(atoms))} The subclass implementation should first call this implementation to set the atoms attribute. """ if atoms is not None: self.atoms = atoms.copy() def calculate_numerical_forces(self, atoms, d=0.001): """Calculate numerical forces using finite difference. All atoms will be displaced by +d and -d in all directions.""" from ase.calculators.test import numeric_force return np.array([[numeric_force(atoms, a, i, d) for i in range(3)] for a in range(len(atoms))]) def calculate_numerical_stress(self, atoms, d=1e-6, voigt=True): """Calculate numerical stress using finite difference.""" stress = np.zeros((3, 3), dtype=float) cell = atoms.cell.copy() V = atoms.get_volume() for i in range(3): x = np.eye(3) x[i, i] += d atoms.set_cell(np.dot(cell, x), scale_atoms=True) eplus = atoms.get_potential_energy(force_consistent=True) x[i, i] -= 2 * d atoms.set_cell(np.dot(cell, x), scale_atoms=True) eminus = atoms.get_potential_energy(force_consistent=True) stress[i, i] = (eplus - eminus) / (2 * d * V) x[i, i] += d j = i - 2 x[i, j] = d x[j, i] = d atoms.set_cell(np.dot(cell, x), scale_atoms=True) eplus = atoms.get_potential_energy(force_consistent=True) x[i, j] = -d x[j, i] = -d atoms.set_cell(np.dot(cell, x), scale_atoms=True) eminus = atoms.get_potential_energy(force_consistent=True) stress[i, j] = (eplus - eminus) / (4 * d * V) stress[j, i] = stress[i, j] atoms.set_cell(cell, scale_atoms=True) if voigt: return stress.flat[[0, 4, 8, 5, 2, 1]] else: return stress def get_spin_polarized(self): return False def band_structure(self): """Create band-structure object for plotting.""" from ase.dft.band_structure import get_band_structure # XXX This calculator is supposed to just have done a band structure # calculation, but the calculator may not have the correct Fermi level # if it updated the Fermi level after changing k-points. # This will be a problem with some calculators (currently GPAW), and # the user would have to override this by providing the Fermi level # from the selfconsistent calculation. return get_band_structure(calc=self) class FileIOCalculator(Calculator): """Base class for calculators that write/read input/output files.""" command = None 'Command used to start calculation' def __init__(self, restart=None, ignore_bad_restart_file=False, label=None, atoms=None, command=None, **kwargs): """File-IO calculator. command: str Command used to start calculation. """ Calculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) if command is not None: self.command = command else: name = 'ASE_' + self.name.upper() + '_COMMAND' self.command = os.environ.get(name, self.command) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): Calculator.calculate(self, atoms, properties, system_changes) self.write_input(self.atoms, properties, system_changes) if self.command is None: raise RuntimeError( 'Please set ${} environment variable ' .format('ASE_' + self.name.upper() + '_COMMAND') + 'or supply the command keyword') command = self.command.replace('PREFIX', self.prefix) errorcode = subprocess.call(command, shell=True, cwd=self.directory) if errorcode: raise RuntimeError('{} in {} returned an error: {}' .format(self.name, self.directory, errorcode)) self.read_results() def write_input(self, atoms, properties=None, system_changes=None): """Write input file(s). Call this method first in subclasses so that directories are created automatically.""" if self.directory != os.curdir and not os.path.isdir(self.directory): os.makedirs(self.directory) def read_results(self): """Read energy, forces, ... from output file(s).""" pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/castep.py000066400000000000000000002770031316323560300247150ustar00rootroot00000000000000# -*- coding: utf-8 -*- from __future__ import print_function """This module defines an interface to CASTEP for use by the ASE (Webpage: http://wiki.fysik.dtu.dk/ase) Authors: Max Hoffmann, max.hoffmann@ch.tum.de Joerg Meyer, joerg.meyer@ch.tum.de Contributors: Juan M. Lorenzi, juan.lorenzi@tum.de Georg S. Michelitsch, georg.michelitsch@tch.tum.de Reinhard J. Maurer, reinhard.maurer@yale.edu Simon P. Rittmeyer, simon.rittmeyer@tum.de """ from copy import deepcopy import difflib import numpy as np import os import re import shutil import subprocess import sys import tempfile import time import ase import ase.units as units from ase.calculators.general import Calculator from ase.constraints import FixCartesian from ase.parallel import paropen from ase.utils import basestring __all__ = [ 'Castep', 'CastepCell', 'CastepParam', 'create_castep_keywords'] contact_email = 'simon.rittmeyer@tum.de' # A convenient table to avoid the previously used "eval" _tf_table = { '': True, # Just the keyword is equivalent to True 'True': True, 'False': False} def _self_getter(getf): # A decorator that makes it so that if no 'atoms' argument is passed to a # getter function, self.atoms is used instead def decor_getf(self, atoms=None, *args, **kwargs): if atoms is None: atoms = self.atoms return getf(self, atoms, *args, **kwargs) return decor_getf class Castep(Calculator): r""" CASTEP Interface Documentation Introduction ============ CASTEP_ [1]_ W_ is a software package which uses density functional theory to provide a good atomic-level description of all manner of materials and molecules. CASTEP can give information about total energies, forces and stresses on an atomic system, as well as calculating optimum geometries, band structures, optical spectra, phonon spectra and much more. It can also perform molecular dynamics simulations. The CASTEP calculator interface class offers intuitive access to all CASTEP settings and most results. All CASTEP specific settings are accessible via attribute access (*i.e*. ``calc.param.keyword = ...`` or ``calc.cell.keyword = ...``) Getting Started: ================ Set the environment variables appropriately for your system. >>> export CASTEP_COMMAND=' ... ' >>> export CASTEP_PP_PATH=' ... ' Note: alternatively to CASTEP_PP_PATH one can set PSPOT_DIR as CASTEP consults this by default, i.e. >>> export PSPOT_DIR=' ... ' Running the Calculator ====================== The default initialization command for the CASTEP calculator is .. class:: Castep(directory='CASTEP', label='castep') To do a minimal run one only needs to set atoms, this will use all default settings of CASTEP, meaning LDA, singlepoint, etc.. With a generated castep_keywords.py in place all options are accessible by inspection, *i.e.* tab-completion. This works best when using ``ipython``. All options can be accessed via ``calc.param.`` or ``calc.cell.`` and documentation is printed with ``calc.param. ?`` or ``calc.cell. ?``. All options can also be set directly using ``calc.keyword = ...`` or ``calc.KEYWORD = ...`` or even ``ialc.KeYwOrD`` or directly as named arguments in the call to the constructor (*e.g.* ``Castep(task='GeometryOptimization')``). All options that go into the ``.param`` file are held in an ``CastepParam`` instance, while all options that go into the ``.cell`` file and don't belong to the atoms object are held in an ``CastepCell`` instance. Each instance can be created individually and can be added to calculators by attribute assignment, *i.e.* ``calc.param = param`` or ``calc.cell = cell``. All internal variables of the calculator start with an underscore (_). All cell attributes that clearly belong into the atoms object are blocked. Setting ``calc.atoms_attribute`` (*e.g.* ``= positions``) is sent directly to the atoms object. Arguments: ========== ========================= ==================================================== Keyword Description ========================= ==================================================== ``directory`` The relative path where all input and output files will be placed. If this does not exist, it will be created. Existing directories will be moved to directory-TIMESTAMP unless self._rename_existing_dir is set to false. ``label`` The prefix of .param, .cell, .castep, etc. files. ========================= ==================================================== Additional Settings =================== ========================= ==================================================== Internal Setting Description ========================= ==================================================== ``_castep_command`` (``=castep``): the actual shell command used to call CASTEP. ``_check_checkfile`` (``=True``): this makes write_param() only write a continue or reuse statement if the addressed .check or .castep_bin file exists in the directory. ``_copy_pspots`` (``=False``): if set to True the calculator will actually copy the needed pseudo-potential (\*.usp) file, usually it will only create symlinks. ``_link_pspots`` (``=True``): if set to True the calculator will actually will create symlinks to the needed pseudo potentials. Set this option (and ``_copy_pspots``) to False if you rather want to access your pseudo potentials using the PSPOT_DIR environment variable that is read by CASTEP. *Note:* This option has no effect if ``copy_pspots`` is True.. ``_export_settings`` (``=True``): if this is set to True, all calculator internal settings shown here will be included in the .param in a comment line (#) and can be read again by merge_param. merge_param can be forced to ignore this directive using the optional argument ``ignore_internal_keys=True``. ``_force_write`` (``=True``): this controls wether the \*cell and \*param will be overwritten. ``_prepare_input_only`` (``=False``): If set to True, the calculator will create \*cell und \*param file but not start the calculation itself. If this is used to prepare jobs locally and run on a remote cluster it is recommended to set ``_copy_pspots = True``. ``_castep_pp_path`` (``='.'``) : the place where the calculator will look for pseudo-potential files. ``_rename_existing_dir`` (``=True``) : when using a new instance of the calculator, this will move directories out of the way that would be overwritten otherwise, appending a date string. ``_set_atoms`` (``=False``) : setting this to True will overwrite any atoms object previously attached to the calculator when reading a \.castep file. By de- fault, the read() function will only create a new atoms object if none has been attached and other- wise try to assign forces etc. based on the atom's positions. ``_set_atoms=True`` could be necessary if one uses CASTEP's internal geometry optimization (``calc.param.task='GeometryOptimization'``) because then the positions get out of sync. *Warning*: this option is generally not recommended unless one knows one really needs it. There should never be any need, if CASTEP is used as a single-point calculator. ``_track_output`` (``=False``) : if set to true, the interface will append a number to the label on all input and output files, where n is the number of calls to this instance. *Warning*: this setting may con- sume a lot more disk space because of the additio- nal \*check files. ``_try_reuse`` (``=_track_output``) : when setting this, the in- terface will try to fetch the reuse file from the previous run even if _track_output is True. By de- fault it is equal to _track_output, but may be overridden. Since this behavior may not always be desirable for single-point calculations. Regular reuse for *e.g.* a geometry-optimization can be achieved by setting ``calc.param.reuse = True``. ``_pedantic`` (``=False``) if set to true, the calculator will inform about settings probably wasting a lot of CPU time or causing numerical inconsistencies. ========================= ==================================================== Special features: ================= ``.dryrun_ok()`` Runs ``castep_command seed -dryrun`` in a temporary directory return True if all variables initialized ok. This is a fast way to catch errors in the input. Afterwards _kpoints_used is set. ``.merge_param()`` Takes a filename or filehandler of a .param file or CastepParam instance and merges it into the current calculator instance, overwriting current settings ``.keyword.clear()`` Can be used on any option like ``calc.param.keyword.clear()`` or ``calc.cell.keyword.clear()`` to return to the CASTEP default. ``.initialize()`` Creates all needed input in the ``_directory``. This can then copied to and run in a place without ASE or even python. ``.set_pspot('')`` This automatically sets the pseudo-potential for all present species to *_.usp*. Make sure that ``_castep_pp_path`` is set correctly. ``print(calc)`` Prints a short summary of the calculator settings and atoms. ``ase.io.castep.read_seed('path-to/seed')`` Given you have a combination of seed.{param,cell,castep} this will return an atoms object with the last ionic positions in the .castep file and all other settings parsed from the .cell and .param file. If no .castep file is found the positions are taken from the .cell file. The output directory will be set to the same directory, only the label is preceded by 'copy_of\_' to avoid overwriting. Notes/Issues: ============== * Currently *only* the FixAtoms *constraint* is fully supported for reading and writing. There is some experimental support for the FixCartesian constraint. * There is no support for the CASTEP *unit system*. Units of eV and Angstrom are used throughout. In particular when converting total energies from different calculators, one should check that the same CODATA_ version is used for constants and conversion factors, respectively. .. _CASTEP: http://www.castep.org/ .. _W: http://en.wikipedia.org/wiki/CASTEP .. _CODATA: http://physics.nist.gov/cuu/Constants/index.html .. [1] S. J. Clark, M. D. Segall, C. J. Pickard, P. J. Hasnip, M. J. Probert, K. Refson, M. C. Payne Zeitschrift für Kristallographie 220(5-6) pp.567- 570 (2005) PDF_. .. _PDF: http://goo.gl/wW50m End CASTEP Interface Documentation """ # Class attributes ! # keys set through atoms object atoms_keys = [ 'charge', 'ionic_constraints', 'lattice_abs', 'lattice_cart', 'positions_abs', 'positions_abs_final', 'positions_abs_intermediate', 'positions_frac', 'positions_frac_final', 'positions_frac_intermediate'] atoms_obj_keys = [ 'dipole', 'energy_free', 'energy_zero', 'fermi', 'forces', 'nbands', 'positions', 'stress'] internal_keys = [ '_castep_command', '_check_checkfile', '_copy_pspots', '_link_pspots', '_directory', '_export_settings', '_force_write', '_label', '_prepare_input_only', '_castep_pp_path', '_rename_existing_dir', '_set_atoms', '_track_output', '_try_reuse', '_pedantic'] def __init__(self, directory='CASTEP', label='castep', castep_command=None, check_castep_version=False, castep_pp_path=None, **kwargs): self.__name__ = 'Castep' # initialize the ase.calculators.general calculator Calculator.__init__(self) from ase.io.castep import write_cell self._write_cell = write_cell castep_keywords = import_castep_keywords(castep_command) self.param = CastepParam(castep_keywords) self.cell = CastepCell(castep_keywords) ################################### # Calculator state variables # ################################### self._calls = 0 self._castep_version = castep_keywords.castep_version # collects warning from .castep files self._warnings = [] # collects content from *.err file self._error = None # warnings raised by the ASE interface self._interface_warnings = [] # store to check if recalculation is necessary self._old_atoms = None self._old_cell = None self._old_param = None ################################### # Internal keys # # Allow to tweak the behavior # ################################### self._opt = {} self._castep_command = get_castep_command(castep_command) self._castep_pp_path = get_castep_pp_path(castep_pp_path) self._check_checkfile = True self._copy_pspots = False self._link_pspots = True self._directory = os.path.abspath(directory) self._export_settings = True self._force_write = True self._label = label self._prepare_input_only = False self._rename_existing_dir = True self._set_atoms = False self._track_output = False self._try_reuse = False # turn off the pedantic user warnings self._pedantic = False # will be set on during runtime self._seed = None ################################### # (Physical) result variables # ################################### self.atoms = None # initialize result variables self._forces = None self._energy_total = None self._energy_free = None self._energy_0K = None # dispersion corrections self._dispcorr_energy_total = None self._dispcorr_energy_free = None self._dispcorr_energy_0K = None # spins and hirshfeld volumes self._spins = None self._hirsh_volrat = None self._number_of_cell_constraints = None self._output_verbosity = None self._stress = None self._unit_cell = None self._kpoints = None # pointers to other files used at runtime self._check_file = None self._castep_bin_file = None # check version of CASTEP options module against current one if check_castep_version: local_castep_version = get_castep_version(self._castep_command) if not hasattr(self, '_castep_version'): print('No castep version found') return if not local_castep_version == self._castep_version: print(('The options module was generated from version %s\n' 'while your are currently using CASTEP version %s') % (self._castep_version, get_castep_version(self._castep_command))) self._castep_version = local_castep_version # processes optional arguments in kw style for keyword, value in kwargs.items(): # first fetch special keywords issued by ASE CLI if keyword == 'kpts': self.__setattr__('kpoint_mp_grid', '%s %s %s' % tuple(value)) elif keyword == 'xc': self.__setattr__('xc_functional', str(value)) elif keyword == 'ecut': self.__setattr__('cut_off_energy', str(value)) else: # the general case self.__setattr__(keyword, value) def _castep_find_last_record(self, castep_file): """Checks wether a given castep file has a regular ending message following the last banner message. If this is the case, the line number of the last banner is message is return, otherwise False. returns (record_start, record_end, end_found, last_record_complete) """ if isinstance(castep_file, basestring): castep_file = paropen(castep_file, 'r') file_opened = True else: file_opened = False record_starts = [] while True: line = castep_file.readline() if 'Welcome' in line and 'CASTEP' in line: record_starts = [castep_file.tell()] + record_starts if not line: break if record_starts == []: print('Could not find CASTEP label in result file: %s' % castep_file) print('Are you sure this is a .castep file?') return # search for regular end of file end_found = False # start to search from record beginning from the back # and see if record_end = -1 for record_nr, record_start in enumerate(record_starts): castep_file.seek(record_start) while True: line = castep_file.readline() if not line: break if 'warn' in line.lower(): self._warnings.append(line) # HOTFIX: This string appears twice from CASTEP 7 on and thus # prevents reading forces. So, better go for another keyword # to indicate the regular end of a run. # 'Initialization time' seems to do the job. # if 'Writing analysis data to' in line: # if 'Writing model to' in line: if 'Initialisation time' in line: end_found = True record_end = castep_file.tell() break if end_found: break if file_opened: castep_file.close() if end_found: # record_nr == 0 corresponds to the last record here if record_nr == 0: return (record_start, record_end, True, True) else: return (record_start, record_end, True, False) else: return (0, record_end, False, False) def read(self, castep_file=None): """Read a castep file into the current instance.""" _close = True if castep_file is None: if self._castep_file: castep_file = self._castep_file out = paropen(castep_file, 'r') else: print('No CASTEP file specified') return if not os.path.exists(castep_file): print('No CASTEP file found') elif isinstance(castep_file, basestring): out = paropen(castep_file, 'r') else: # in this case we assume that we have a fileobj already, but check # for attributes in order to avoid extended EAFP blocks. out = castep_file # look before you leap... attributes = ['name', 'seek', 'close', 'readline', 'tell'] for attr in attributes: if not hasattr(out, attr): raise TypeError( '"castep_file" is neither str nor valid fileobj') castep_file = out.name _close = False if self._seed is None: self._seed = os.path.splitext(os.path.basename(castep_file))[0] err_file = '%s.0001.err' % self._seed if os.path.exists(err_file): err_file = paropen(err_file) self._error = err_file.read() err_file.close() # we return right-away because it might # just be here from a previous run # look for last result, if several CASTEP # run are appended record_start, record_end, end_found, _\ = self._castep_find_last_record(out) if not end_found: print('No regular end found in %s file' % castep_file) print(self._error) if _close: out.close() return # we return here, because the file has no a regular end # now iterate over last CASTEP output in file to extract information # could be generalized as well to extract trajectory from file # holding several outputs n_cell_const = 0 forces = [] # HOTFIX: # we have to initialize the _stress variable as a zero array # otherwise the calculator crashes upon pickling trajectories # Alternative would be to raise a NotImplementedError() which # is also kind of not true, since we can extract stresses if # the user configures CASTEP to print them in the outfile # stress = [] stress = np.zeros([3, 3]) hirsh_volrat = [] # Two flags to check whether spin-polarized or not, and whether # Hirshfeld volumes are calculated spin_polarized = False calculate_hirshfeld = False positions_frac_list = [] out.seek(record_start) while True: # TODO: add a switch if we have a geometry optimization: record # atoms objects for intermediate steps. try: # in case we need to rewind back one line, we memorize the bit # position of this line in the file. # --> see symops problem below _line_start = out.tell() line = out.readline() if not line or out.tell() > record_end: break elif 'output verbosity' in line: iprint = int(line.split()[-1][1]) if int(iprint) != 1: self.param.iprint = iprint elif 'treating system as spin-polarized' in line: spin_polarized = True elif 'treating system as non-spin-polarized' in line: spin_polarized = False elif 'Unit Cell' in line: lattice_real = [] lattice_reci = [] while True: line = out.readline() fields = line.split() if len(fields) == 6: break for i in range(3): lattice_real.append([float(f) for f in fields[0:3]]) lattice_reci.append([float(f) for f in fields[3:7]]) line = out.readline() fields = line.split() elif 'Cell Contents' in line: while True: line = out.readline() if 'Total number of ions in cell' in line: n_atoms = int(line.split()[7]) if 'Total number of species in cell' in line: int(line.split()[7]) fields = line.split() if len(fields) == 0: break elif 'Fractional coordinates of atoms' in line: species = [] custom_species = None # A CASTEP special thing positions_frac = [] # positions_cart = [] while True: line = out.readline() fields = line.split() if len(fields) == 7: break for n in range(n_atoms): spec_custom = fields[1].split(':', 1) elem = spec_custom[0] if len(spec_custom) > 1 and custom_species is None: # Add it to the custom info! custom_species = list(species) species.append(elem) if custom_species is not None: custom_species.append(fields[1]) positions_frac.append([float(s) for s in fields[3:6]]) line = out.readline() fields = line.split() positions_frac_list.append(positions_frac) elif 'Files used for pseudopotentials' in line: while True: line = out.readline() if 'Pseudopotential generated on-the-fly' in line: continue fields = line.split() if (len(fields) >= 2): elem, pp_file = fields self.cell.species_pot = (elem, pp_file) else: break elif 'k-Points For BZ Sampling' in line: # TODO: generalize for non-Monkhorst Pack case # (i.e. kpoint lists) - # kpoints_offset cannot be read this way and # is hence always set to None while True: line = out.readline() if not line.strip(): break if 'MP grid size for SCF calculation' in line: # kpoints = ' '.join(line.split()[-3:]) # self.kpoints_mp_grid = kpoints # self.kpoints_mp_offset = '0. 0. 0.' # not set here anymore because otherwise # two calculator objects go out of sync # after each calculation triggering unnecessary # recalculation break elif 'Symmetry and Constraints' in line: # this is a bit of a hack, but otherwise the read_symops # would need to re-read the entire file. --> just rewind # back by one line, so the read_symops routine can find the # start of this block. out.seek(_line_start) self.read_symops(castep_castep=out) elif 'Number of cell constraints' in line: n_cell_const = int(line.split()[4]) elif 'Final energy' in line: self._energy_total = float(line.split()[-2]) elif 'Final free energy' in line: self._energy_free = float(line.split()[-2]) elif 'NB est. 0K energy' in line: self._energy_0K = float(line.split()[-2]) # Add support for dispersion correction # filtering due to SEDC is done in get_potential_energy elif 'Dispersion corrected final energy' in line: self._dispcorr_energy_total = float(line.split()[-2]) elif 'Dispersion corrected final free energy' in line: self._dispcorr_energy_free = float(line.split()[-2]) elif 'dispersion corrected est. 0K energy' in line: self._dispcorr_energy_0K = float(line.split()[-2]) # remember to remove constraint labels in force components # (lacking a space behind the actual floating point number in # the CASTEP output) elif '******************** Forces *********************'\ in line or\ '************** Symmetrised Forces ***************'\ in line or\ '************** Constrained Symmetrised Forces ****'\ '**********'\ in line or\ '******************** Constrained Forces **********'\ '**********'\ in line or\ '******************* Unconstrained Forces *********'\ '**********'\ in line: fix = [] fix_cart = [] forces = [] while True: line = out.readline() fields = line.split() if len(fields) == 7: break for n in range(n_atoms): consd = np.array([0, 0, 0]) fxyz = [0, 0, 0] for (i, force_component) in enumerate(fields[-4:-1]): if force_component.count("(cons'd)") > 0: consd[i] = 1 fxyz[i] = float(force_component.replace( "(cons'd)", '')) if consd.all(): fix.append(n) elif consd.any(): fix_cart.append(FixCartesian(n, consd)) forces.append(fxyz) line = out.readline() fields = line.split() # add support for Hirshfeld analysis elif 'Hirshfeld / free atomic volume :' in line: # if we are here, then params must be able to cope with # Hirshfeld flag (if castep_keywords.py matches employed # castep version) calculate_hirshfeld = True hirsh_volrat = [] while True: line = out.readline() fields = line.split() if len(fields) == 1: break for n in range(n_atoms): hirsh_atom = float(fields[0]) hirsh_volrat.append(hirsh_atom) while True: line = out.readline() if 'Hirshfeld / free atomic volume :' in line or\ 'Hirshfeld Analysis' in line: break line = out.readline() fields = line.split() elif '***************** Stress Tensor *****************'\ in line or\ '*********** Symmetrised Stress Tensor ***********'\ in line: stress = [] while True: line = out.readline() fields = line.split() if len(fields) == 6: break for n in range(3): stress.append([float(s) for s in fields[2:5]]) line = out.readline() fields = line.split() elif ('BFGS: starting iteration' in line or 'BFGS: improving iteration' in line): if n_cell_const < 6: lattice_real = [] lattice_reci = [] species = [] positions_frac = [] forces = [] # HOTFIX: # Same reason for the stress initialization as before # stress = [] stress = np.zeros([3, 3]) elif 'BFGS: Final Configuration:' in line: break elif 'warn' in line.lower(): self._warnings.append(line) except Exception as exception: print(line, end=' ') print('|-> line triggered exception: ' + str(exception)) raise # get the spins in a separate run over the file as we # do not want to break the BFGS-break construct # probably one can implement it in a more convenient # way, but this constructon does the job. if spin_polarized: spins = [] out.seek(record_start) while True: try: line = out.readline() if not line or out.tell() > record_end: break elif 'Atomic Populations' in line: # skip the separating line line = out.readline() # this is the headline line = out.readline() if 'Spin' in line: # skip the next separator line line = out.readline() while True: line = out.readline() fields = line.split() if len(fields) == 1: break spins.append(float(fields[-1])) break except Exception as exception: print(line + '|-> line triggered exception: ' + str(exception)) raise else: # set to zero spin if non-spin polarized calculation spins = np.zeros(len(positions_frac)) if _close: out.close() positions_frac_atoms = np.array(positions_frac) forces_atoms = np.array(forces) spins_atoms = np.array(spins) if calculate_hirshfeld: hirsh_atoms = np.array(hirsh_volrat) else: hirsh_atoms = np.zeros_like(spins) if self.atoms and not self._set_atoms: # compensate for internal reordering of atoms by CASTEP # using the fact that the order is kept within each species # positions_frac_ase = self.atoms.get_scaled_positions(wrap=False) atoms_assigned = [False] * len(self.atoms) # positions_frac_castep_init = np.array(positions_frac_list[0]) positions_frac_castep = np.array(positions_frac_list[-1]) # species_castep = list(species) forces_castep = np.array(forces) hirsh_castep = np.array(hirsh_volrat) spins_castep = np.array(spins) # go through the atoms position list and replace # with the corresponding one from the # castep file corresponding atomic number for iase in range(n_atoms): for icastep in range(n_atoms): if (species[icastep] == self.atoms[iase].symbol and not atoms_assigned[icastep]): positions_frac_atoms[iase] = \ positions_frac_castep[icastep] forces_atoms[iase] = np.array(forces_castep[icastep]) if iprint > 1 and calculate_hirshfeld: hirsh_atoms[iase] = np.array(hirsh_castep[icastep]) if spin_polarized: # reordering not necessary in case all spins == 0 spins_atoms[iase] = np.array(spins_castep[icastep]) atoms_assigned[icastep] = True break if not all(atoms_assigned): not_assigned = [i for (i, assigned) in zip(range(len(atoms_assigned)), atoms_assigned) if not assigned] print('%s atoms not assigned.' % atoms_assigned.count(False)) print('DEBUGINFO: The following atoms where not assigned: %s' % not_assigned) else: self.atoms.set_scaled_positions(positions_frac_atoms) else: # If no atoms, object has been previously defined # we define it here and set the Castep() instance as calculator. # This covers the case that we simply want to open a .castep file. # The next time around we will have an atoms object, since # set_calculator also set atoms in the calculator. if self.atoms: constraints = self.atoms.constraints else: constraints = [] atoms = ase.atoms.Atoms(species, cell=lattice_real, constraint=constraints, pbc=True, scaled_positions=positions_frac, ) if custom_species is not None: atoms.new_array('castep_custom_species', np.array(custom_species)) if self.param.spin_polarized: # only set magnetic moments if this was a spin polarized # calculation atoms.set_initial_magnetic_moments(magmoms=spins_atoms) atoms.set_calculator(self) self._forces = forces_atoms # stress in .castep file is given in GPa: self._stress = np.array(stress) * units.GPa self._hirsh_volrat = hirsh_atoms self._spins = spins_atoms if self._warnings: print('WARNING: %s contains warnings' % castep_file) for warning in self._warnings: print(warning) # reset self._warnings = [] def read_symops(self, castep_castep=None): # TODO: check that this is really backwards compatible # with previous routine with this name... """Read all symmetry operations used from a .castep file.""" if castep_castep is None: castep_castep = self._seed + '.castep' if isinstance(castep_castep, basestring): if not os.path.isfile(castep_castep): print('Warning: CASTEP file %s not found!' % castep_castep) f = paropen(castep_castep, 'a') _close = True else: # in this case we assume that we have a fileobj already, but check # for attributes in order to avoid extended EAFP blocks. f = castep_castep # look before you leap... attributes = ['name', 'readline', 'close'] for attr in attributes: if not hasattr(f, attr): raise TypeError('read_castep_castep_symops: castep_castep ' 'is not of type str nor valid fileobj!') castep_castep = f.name _close = False while True: line = f.readline() if not line: return if 'output verbosity' in line: iprint = line.split()[-1][1] # filter out the default if int(iprint) != 1: self.param.iprint = iprint if 'Symmetry and Constraints' in line: break if self.param.iprint is None or self.param.iprint < 2: self._interface_warnings.append( 'Warning: No symmetry' 'operations could be read from %s (iprint < 2).' % f.name) return while True: line = f.readline() if not line: break if 'Number of symmetry operations' in line: nsym = int(line.split()[5]) # print "nsym = %d" % nsym # information about symmetry related atoms currently not read symmetry_operations = [] for _ in range(nsym): rotation = [] displacement = [] while True: if 'rotation' in f.readline(): break for _ in range(3): line = f.readline() rotation.append([float(r) for r in line.split()[1:4]]) while True: if 'displacement' in f.readline(): break line = f.readline() displacement = [float(d) for d in line.split()[1:4]] symop = {'rotation': rotation, 'displacement': displacement} self.symmetry_ops = symop self.symmetry = symmetry_operations print('Symmetry operations successfully read from %s' % f.name) print(self.cell.symmetry_ops) break # only close if we opened the file in this routine if _close: f.close() def get_hirsh_volrat(self): """ Return the Hirshfeld volumes. """ return self._hirsh_volrat def get_spins(self): """ Return the spins from a plane-wave Mulliken analysis. """ return self._spins def set_label(self, label): """The label is part of each seed, which in turn is a prefix in each CASTEP related file. """ self._label = label def set_pspot(self, pspot, elems=None, notelems=None, clear=True, suffix='usp'): """Quickly set all pseudo-potentials: Usually CASTEP psp are named like _. so this function function only expects the . It then clears any previous pseudopotential settings apply the one with for each element in the atoms object. The optional elems and notelems arguments can be used to exclusively assign to some species, or to exclude with notelemens. Parameters :: - elems (None) : set only these elements - notelems (None): do not set the elements - clear (True): clear previous settings - suffix (usp): PP file suffix """ if clear and not elems and not notelems: self.cell.species_pot.clear() for elem in set(self.atoms.get_chemical_symbols()): if elems is not None and elem not in elems: continue if notelems is not None and elem in notelems: continue self.cell.species_pot = (elem, '%s_%s.%s' % (elem, pspot, suffix)) @_self_getter def get_forces(self, atoms): """Run CASTEP calculation if needed and return forces.""" self.update(atoms) return np.array(self._forces) @_self_getter def get_total_energy(self, atoms): """Run CASTEP calculation if needed and return total energy.""" self.update(atoms) return self._energy_total @_self_getter def get_free_energy(self, atoms): """Run CASTEP calculation if needed and return free energy. Only defined with smearing.""" self.update(atoms) return self._energy_free @_self_getter def get_0K_energy(self, atoms): """Run CASTEP calculation if needed and return 0K energy. Only defined with smearing.""" self.update(atoms) return self._energy_0K @_self_getter def get_potential_energy(self, atoms, force_consistent=False): # here for compatibility with ase/calculators/general.py # but accessing only _name variables """Return the total potential energy.""" self.update(atoms) if force_consistent: # Assumption: If no dispersion correction is applied, then the # respective value will default to None as initialized. if self._dispcorr_energy_free is not None: return self._dispcorr_energy_free else: return self._energy_free else: if self._energy_0K is not None: if self._dispcorr_energy_0K is not None: return self._dispcorr_energy_0K else: return self._energy_0K else: if self._dispcorr_energy_total is not None: return self._dispcorr_energy_total else: return self._energy_total @_self_getter def get_stress(self, atoms): """Return the stress.""" self.update(atoms) return self._stress @_self_getter def get_unit_cell(self, atoms): """Return the unit cell.""" self.update(atoms) return self._unit_cell @_self_getter def get_kpoints(self, atoms): """Return the kpoints.""" self.update(atoms) return self._kpoints @_self_getter def get_number_cell_constraints(self, atoms): """Return the number of cell constraints.""" self.update(atoms) return self._number_of_cell_constraints def set_atoms(self, atoms): """Sets the atoms for the calculator and vice versa.""" atoms.pbc = [True, True, True] self.__dict__['atoms'] = atoms.copy() self.atoms._calc = self def update(self, atoms): """Checks if atoms object or calculator changed and runs calculation if so. """ if self.calculation_required(atoms): self.calculate(atoms) def calculation_required(self, atoms, _=None): """Checks wether anything changed in the atoms object or CASTEP settings since the last calculation using this instance. """ # SPR: what happens with the atoms parameter here? Why don't we use it? # from all that I can tell we need to compare against atoms instead of # self.atoms # if not self.atoms == self._old_atoms: if not atoms == self._old_atoms: return True if self._old_param is None or self._old_cell is None: return True if not self.param._options == self._old_param._options: return True if not self.cell._options == self._old_cell._options: return True return False def calculate(self, atoms): """Write all necessary input file and call CASTEP.""" self.prepare_input_files(atoms, force_write=self._force_write) if not self._prepare_input_only: self.run() self.read() # we need to push the old state here! # although run() pushes it, read() may change the atoms object # again. # yet, the old state is supposed to be the one AFTER read() self.push_oldstate() def push_oldstate(self): """This function pushes the current state of the (CASTEP) Atoms object onto the previous state. Or in other words after calling this function, calculation_required will return False and enquiry functions just report the current value, e.g. get_forces(), get_potential_energy(). """ # make a snapshot of all current input # to be able to test if recalculation # is necessary self._old_atoms = self.atoms.copy() self._old_param = deepcopy(self.param) self._old_cell = deepcopy(self.cell) def initialize(self, *args, **kwargs): """Just an alias for prepar_input_files to comply with standard function names in ASE. """ self.prepare_input_files(*args, **kwargs) def prepare_input_files(self, atoms=None, force_write=None): """Only writes the input .cell and .param files and return This can be useful if one quickly needs to prepare input files for a cluster where no python or ASE is available. One can than upload the file manually and read out the results using Castep().read(). """ if self.param.reuse.value is None: if self._pedantic: print('You have not set e.g. calc.param.reuse = True') print('Reusing a previous calculation may save CPU time!\n') print( 'The interface will make sure by default, a .check exists') print( 'file before adding this statement to the .param file.\n') if self.param.num_dump_cycles.value is None: if self._pedantic: print('You have not set e.g. calc.param.num_dump_cycles = 0.') print('This can save you a lot of disk space. One only needs') print('*wvfn* if electronic convergence is not achieved.\n') from ase.io.castep import write_param if atoms is None: atoms = self.atoms else: self.atoms = atoms if force_write is None: force_write = self._force_write # if we have new instance of the calculator, # move existing results out of the way, first if (os.path.isdir(self._directory) and self._calls == 0 and self._rename_existing_dir): if os.listdir(self._directory) == []: os.rmdir(self._directory) else: # rename appending creation date of the directory ctime = time.localtime(os.lstat(self._directory).st_ctime) os.rename(self._directory, '%s.bak-%s' % (self._directory, time.strftime('%Y%m%d-%H%M%S', ctime))) # create work directory if not os.path.isdir(self._directory): os.makedirs(self._directory, 0o775) # we do this every time, not only upon first call # if self._calls == 0: self._fetch_pspots() cwd = os.getcwd() os.chdir(self._directory) # if _try_reuse is requested and this # is not the first run, we try to find # the .check file from the previous run # this is only necessary if _track_output # is set to true if self._try_reuse and self._calls > 0: if os.path.exists(self._check_file): self.param.reuse = self._check_file elif os.path.exists(self._castep_bin_file): self.param.reuse = self._castep_bin_file self._seed = self._build_castep_seed() self._check_file = '%s.check' % self._seed self._castep_bin_file = '%s.castep_bin' % self._seed self._castep_file = os.path.abspath('%s.castep' % self._seed) # write out the input file self._write_cell('%s.cell' % self._seed, self.atoms, castep_cell=self.cell, force_write=force_write) if self._export_settings: interface_options = self._opt else: interface_options = None write_param('%s.param' % self._seed, self.param, check_checkfile=self._check_checkfile, force_write=force_write, interface_options=interface_options,) os.chdir(cwd) def _build_castep_seed(self): """Abstracts to construction of the final castep with and without _tracking_output. """ if self._track_output: return '%s-%06d' % (self._label, self._calls) else: return '%s' % (self._label) def run(self): """Simply call castep. If the first .err file contains text, this will be printed to the screen. """ # change to target directory cwd = os.getcwd() os.chdir(self._directory) self._calls += 1 # run castep itself stdout, stderr = shell_stdouterr('%s %s' % (self._castep_command, self._seed)) if stdout: print('castep call stdout:\n%s' % stdout) if stderr: print('castep call stderr:\n%s' % stderr) # shouldn't it be called after read()??? # self.push_oldstate() # check for non-empty error files err_file = '%s.0001.err' % self._seed if os.path.exists(err_file): err_file = open(err_file) self._error = err_file.read() err_file.close() os.chdir(cwd) if self._error: raise RuntimeError(self._error) def __repr__(self): """Returns generic, fast to capture representation of CASTEP settings along with atoms object. """ expr = '' expr += '-----------------Atoms--------------------\n' if self.atoms is not None: expr += str('%20s\n' % self.atoms) else: expr += 'None\n' expr += '-----------------Param keywords-----------\n' expr += str(self.param) expr += '-----------------Cell keywords------------\n' expr += str(self.cell) expr += '-----------------Internal keys------------\n' for key in self.internal_keys: expr += '%20s : %s\n' % (key, self._opt[key]) return expr def __getattr__(self, attr): """___getattr___ gets overloaded to reroute the internal keys and to be able to easily store them in in the param so that they can be read in again in subsequent calls. """ if attr in self.internal_keys: return self._opt[attr] if attr in ['__repr__', '__str__']: raise AttributeError elif attr not in self.__dict__: raise AttributeError else: return self.__dict__[attr] def __setattr__(self, attr, value): """We overload the settattr method to make value assignment as pythonic as possible. Internal values all start with _. Value assigment is case insensitive! """ if attr.startswith('_'): # internal variables all start with _ # let's check first if they are close but not identical # to one of the switches, that the user accesses directly similars = difflib.get_close_matches(attr, self.internal_keys, cutoff=0.9) if attr not in self.internal_keys and similars: print('Warning: You probably tried one of: %s' % similars) print('but typed %s' % attr) if attr in self.internal_keys: self._opt[attr] = value if attr == '_track_output': if value: self._try_reuse = True if self._pedantic: print('You switched _track_output on. This will') print('consume a lot of disk-space. The interface') print('also switched _try_reuse on, which will') print('try to find the last check file. Set') print('_try_reuse = False, if you need') print('really separate calculations') elif '_try_reuse' in self._opt and self._try_reuse: self._try_reuse = False if self._pedantic: print('_try_reuse is set to False, too') else: self.__dict__[attr] = value return elif attr in ['atoms', 'cell', 'param']: if value is not None: if attr == 'atoms' and not isinstance(value, ase.atoms.Atoms): raise TypeError( '%s is not an instance of ase.atoms.Atoms.' % value) elif attr == 'cell' and not isinstance(value, CastepCell): raise TypeError('%s is not an instance of CastepCell.' % value) elif attr == 'param' and not isinstance(value, CastepParam): raise TypeError('%s is not an instance of CastepParam.' % value) # These 3 are accepted right-away, no matter what self.__dict__[attr] = value return elif attr in self.atoms_obj_keys: # keywords which clearly belong to the atoms object are # rerouted to go there self.atoms.__dict__[attr] = value return elif attr in self.atoms_keys: # CASTEP keywords that should go into the atoms object # itself are blocked print('Ignoring setings of "%s", since this has to be set\n' 'through the atoms object' % attr) return attr = attr.lower() if attr not in (list(self.cell._options.keys()) + list(self.param._options.keys())): # what is left now should be meant to be a castep keyword # so we first check if it defined, and if not offer some error # correction similars = difflib.get_close_matches( attr, self.cell._options.keys() + self.param._options.keys()) if similars: raise UserWarning('Option "%s" not known! You mean "%s"?' % (attr, similars[0])) else: raise UserWarning('Option "%s" is not known!' % attr) # here we know it must go into one of the component param or cell # so we first determine which one if attr in self.param._options.keys(): comp = 'param' elif attr in self.cell._options.keys(): comp = 'cell' else: raise UserWarning('Programming error: could not attach ' 'the keyword to an input file') self.__dict__[comp].__setattr__(attr, value) def merge_param(self, param, overwrite=True, ignore_internal_keys=False): """Parse a param file and merge it into the current parameters.""" INT_TOKEN = 'ASE_INTERFACE' if isinstance(param, CastepParam): for key, option in param._options.items(): if option.value is not None: self.param.__setattr__(key, option.value) return elif isinstance(param, basestring): param_file = open(param, 'r') _close = True else: # in this case we assume that we have a fileobj already, but check # for attributes in order to avoid extended EAFP blocks. param_file = param # look before you leap... attributes = ['name', 'close' 'readlines'] for attr in attributes: if not hasattr(param_file, attr): raise TypeError('"param" is neither CastepParam nor str ' 'nor valid fileobj') param = param_file.name _close = False # ok, we need to load the file beforehand into memory, seems like the # easiest way to do the BLOCK handling. lines = param_file.readlines() i = 0 while i < len(lines): line = lines[i].strip() # note that i will point to the next line from now on i += 1 # remove comments for comment_char in ['#', ';', '!']: if comment_char in line: if INT_TOKEN in line: # This block allows to read internal settings from # a *param file iline = line[line.index(INT_TOKEN) + len(INT_TOKEN):] if (iline.split()[0] in self.internal_keys and not ignore_internal_keys): value = ' '.join(iline.split()[1:]) if value in _tf_table: self._opt[iline.split()[0]] = _tf_table[value] else: self._opt[iline.split()[0]] = value line = line[:line.index(comment_char)] # if nothing remains if not line.strip(): continue if line == 'reuse': self.param.reuse.value = 'default' continue if line == 'continuation': self.param.continuation.value = 'default' continue # here comes the handling of the devel block (the only block so far # I know to be in the param file) if line.upper() == '%BLOCK DEVEL_CODE': key = 'devel_code' value = '' while True: line = lines[i].strip() i += 1 if line.upper() == '%ENDBLOCK DEVEL_CODE': break value += '\n{0}'.format(line) value = value.strip() if (not overwrite and getattr(self.param, key).value is not None): continue self.__setattr__(key, value) continue try: # we go for the regex split here key, value = [s.strip() for s in re.split(r'[:=]+', line)] except: print('Could not parse line %s of your param file: %s' % (i, line)) raise UserWarning('Seems to me malformed') if not overwrite and getattr(self.param, key).value is not None: continue self.__setattr__(key, value) if _close: param_file.close() def dryrun_ok(self, dryrun_flag='-dryrun'): """Starts a CASTEP run with the -dryrun flag [default] in a temporary and check wether all variables are initialized correctly. This is recommended for every bigger simulation. """ from ase.io.castep import write_param temp_dir = tempfile.mkdtemp() curdir = os.getcwd() self._fetch_pspots(temp_dir) os.chdir(temp_dir) self._fetch_pspots(temp_dir) seed = 'dryrun' self._write_cell('%s.cell' % seed, self.atoms, castep_cell=self.cell) # This part needs to be modified now that we rely on the new formats.py # interface if not os.path.isfile('%s.cell' % seed): print('%s.cell not written - aborting dryrun' % seed) return write_param('%s.param' % seed, self.param, ) stdout, stderr = shell_stdouterr(('%s %s %s' % (self._castep_command, seed, dryrun_flag))) if stdout: print(stdout) if stderr: print(stderr) result_file = open('%s.castep' % seed) txt = result_file.read() ok_string = r'.*DRYRUN finished.*No problems found with input files.*' match = re.match(ok_string, txt, re.DOTALL) try: self._kpoints_used = int( re.search( r'Number of kpoints used = *([0-9]+)', txt).group(1)) except: print('Couldn\'t fetch number of kpoints from dryrun CASTEP file') err_file = '%s.0001.err' % seed if match is None and os.path.exists(err_file): err_file = open(err_file) self._error = err_file.read() err_file.close() result_file.close() os.chdir(curdir) shutil.rmtree(temp_dir) # re.match return None is the string does not match return match is not None # this could go into the Atoms() class at some point... def _get_number_in_species(self, at, atoms=None): """Return the number of the atoms within the set of it own species. If you are an ASE commiter: why not move this into ase.atoms.Atoms ?""" if atoms is None: atoms = self.atoms numbers = atoms.get_atomic_numbers() n = numbers[at] nis = numbers.tolist()[:at + 1].count(n) return nis def _get_absolute_number(self, species, nic, atoms=None): """This is the inverse function to _get_number in species.""" if atoms is None: atoms = self.atoms ch = atoms.get_chemical_symbols() ch.reverse() total_nr = 0 assert nic > 0, 'Number in species needs to be 1 or larger' while True: if ch.pop() == species: if nic == 1: return total_nr nic -= 1 total_nr += 1 def _fetch_pspots(self, directory=None): """Put all specified pseudo-potentials into the working directory. """ # should be a '==' right? Otherwise setting _castep_pp_path is not # honored. if (not os.environ.get('PSPOT_DIR', None) and self._castep_pp_path == os.path.abspath('.')): # By default CASTEP consults the environment variable # PSPOT_DIR. If this contains a list of colon separated # directories it will check those directories for pseudo- # potential files if not in the current directory. # Thus if PSPOT_DIR is set there is nothing left to do. # If however PSPOT_DIR was been accidentally set # (e.g. with regards to a different program) # setting CASTEP_PP_PATH to an explicit value will # still be honored. return if directory is None: directory = self._directory if not os.path.isdir(self._castep_pp_path): print('PSPs directory %s not found' % self._castep_pp_path) pspots = {} if self.cell.species_pot.value is not None: for line in self.cell.species_pot.value.split('\n'): line = line.split() if line: pspots[line[0]] = line[1] for species in self.atoms.get_chemical_symbols(): if not pspots or species not in pspots.keys(): if self._pedantic: print('Warning: you have no PP specified for %s.' % species) print('CASTEP will now generate an on-the-fly potentials.') print('For sake of numerical consistency and efficiency') print('this is discouraged.') if self.cell.species_pot.value: for (species, pspot) in pspots.items(): orig_pspot_file = os.path.join(self._castep_pp_path, pspot) cp_pspot_file = os.path.join(directory, pspot) if (os.path.exists(orig_pspot_file) and not os.path.exists(cp_pspot_file)): if self._copy_pspots: shutil.copy(orig_pspot_file, directory) elif self._link_pspots: os.symlink(orig_pspot_file, cp_pspot_file) else: if self._pedantic: print("""\ Warning: PP files have neither been linked nor copied to the working directory. Make sure to set the evironment variable PSPOT_DIR accordingly!""") def get_castep_version(castep_command): """This returns the version number as printed in the CASTEP banner. For newer CASTEP versions ( > 6.1) the --version command line option has been added; this will be attempted first. """ temp_dir = tempfile.mkdtemp() jname = 'dummy_jobname' stdout, stderr = '', '' fallback_version = 16. # CASTEP 16.0 and 16.1 report version wrongly try: stdout, stderr = subprocess.Popen( castep_command.split() + ['--version'], stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd=temp_dir).communicate() if 'CASTEP version' not in stdout: stdout, stderr = subprocess.Popen( castep_command.split() + [jname], stderr=subprocess.PIPE, stdout=subprocess.PIPE, cwd=temp_dir).communicate() except: msg = '' msg += 'Could not determine the version of your CASTEP binary \n' msg += 'This usually means one of the following \n' msg += ' * you do not have CASTEP installed \n' msg += ' * you have not set the CASTEP_COMMAND to call it \n' msg += ' * you have provided a wrong CASTEP_COMMAND. \n' msg += ' Make sure it is in your PATH\n\n' msg += stdout msg += stderr raise Exception(msg) if 'CASTEP version' in stdout: output_txt = stdout.split('\n') version_re = re.compile(r'CASTEP version:\s*([0-9\.]*)') else: output = open(os.path.join(temp_dir, '%s.castep' % jname)) output_txt = output.readlines() output.close() version_re = re.compile(r'(?<=CASTEP version )[0-9.]*') shutil.rmtree(temp_dir) for line in output_txt: if 'CASTEP version' in line: try: return float(version_re.findall(line)[0]) except ValueError: # Fallback for buggy --version on CASTEP 16.0, 16.1 return fallback_version def create_castep_keywords(castep_command, filename='castep_keywords.py', force_write=True, path='.', fetch_only=None): """This function allows to fetch all available keywords from stdout of an installed castep binary. It furthermore collects the documentation to harness the power of (ipython) inspection and type for some basic type checking of input. All information is stored in two 'data-store' objects that are not distributed by default to avoid breaking the license of CASTEP. """ # Takes a while ... # Fetch all allowed parameters # fetch_only : only fetch that many parameters (for testsuite only) code = {} suffixes = ['cell', 'param'] for suffix in suffixes: code[suffix] = '' if os.path.exists(filename) and not force_write: print('CASTEP Options Module file exists.') print('You can overwrite it by calling') print('python castep.py -f [CASTEP_COMMAND].') return False # Not saving directly to file her to prevent half-generated files # which will cause problems on future runs from StringIO import StringIO fh = StringIO() fh.write('"""This file is generated by') fh.write('ase/calculators/castep.py\n') fh.write('and is not distributed with ASE to avoid breaking') fh.write('CASTEP copyright\n"""\n') fh.write('class Opt:\n') fh.write(' """"A CASTEP option"""\n') fh.write(""" def __init__(self): self.keyword = None self.level = None self.value = None self.type = None def clear(self): \"\"\"Reset the value of the option to None again\"\"\" self.value = None\n""") fh.write(' def __repr__(self):\n') fh.write(' expr = \'\'\n') fh.write(' if self.value:\n') fh.write(' expr += \'Option: %s(%s, %s):\\n%s\\n\'' + '% (self.keyword, self.type, self.level, self.value)\n') fh.write(' else:\n') fh.write(' expr += \'Option: %s[unset]\' % self.keyword\n') fh.write(' expr += \'(%s, %s)\' % (self.type, self.level)\n') fh.write(' return expr\n\n') fh.write("""class ComparableDict(dict): \"\"\"Extends a dict to make to sets of options comparable\"\"\" def __init__(self): dict.__init__(self) def __ne__(self, other): return not self.__eq__(other) def __eq__(self, other): if not isinstance(other, ComparableDict): return False if set(self) - set(other): return False for key in sorted(self): if self[key].value != other[key].value: return False return True\n""") code['cell'] += '\n\nclass CastepCellDict(object):\n' code['param'] += '\n\nclass CastepParamDict(object):\n' types = [] levels = [] for suffix in suffixes: code[suffix] += ' """A flat object that holds %s options"""\n'\ % suffix code[suffix] += ' def __init__(self):\n' code[suffix] += ' object.__init__(self)\n' code[suffix] += ' self._options = ComparableDict()\n' castep_version = get_castep_version(castep_command) help_all, _ = shell_stdouterr('%s -help all' % castep_command) # Filter out proper keywords try: # The old pattern does not math properly as in CASTEP as of v8.0 there # are some keywords for the semi-empircal dispersion correction (SEDC) # which also include numbers. if castep_version < 7.0: pattern = r'((?<=^ )[A-Z_]{2,}|(?<=^)[A-Z_]{2,})' else: pattern = r'((?<=^ )[A-Z_\d]{2,}|(?<=^)[A-Z_\d]{2,})' raw_options = re.findall(pattern, help_all, re.MULTILINE) except: print('Problem parsing: %s' % help_all) raise processed_options = 0 for option in raw_options[:fetch_only]: doc, _ = shell_stdouterr('%s -help %s' % (castep_command, option)) # Stand Back! I know regular expressions (http://xkcd.com/208/) :-) match = re.match(r'(?P.*)Type: (?P.+?)\s+' + r'Level: (?P[^ ]+)\n\s*\n' + r'(?P.*?)(\n\s*\n|$)', doc, re.DOTALL) if match is not None: match = match.groupdict() processed_options += 1 # JM: uncomment lines in following block to debug issues # with keyword assignment during extraction process from CASTEP suffix = None if re.findall(r'PARAMETERS keywords:\n\n\s?None found', doc): suffix = 'cell' if re.findall(r'CELL keywords:\n\n\s?None found', doc): suffix = 'param' if suffix is None: print('%s -> not assigned to either' ' CELL or PARAMETERS keywords' % option) sys.stdout.write('.') sys.stdout.flush() code[suffix] += ' opt_obj = Opt()\n' code[suffix] += (' opt_obj.keyword = \'%s\'\n' % option.lower()) if 'type' in match: code[suffix] += (' opt_obj.type = \'%s\'\n' % match['type']) if match['type'] not in types: types.append(match['type']) else: raise Exception('Found no type for %s' % option) if 'level' in match: code[suffix] += (' opt_obj.level = \'%s\'\n' % match['level']) if match['level'] not in levels: levels.append(match['level']) else: raise Exception('Found no level for %s' % option) if 'doc' in match: code[suffix] += (' opt_obj.__doc__ = """%s\n"""\n' % match['doc']) else: raise Exception('Found no doc string for %s' % option) code[suffix] += (' opt_obj.value = None\n') code[suffix] += (' self._options[\'%s\'] = opt_obj\n\n' % option.lower()) code[suffix] += (' self.__dict__[\'%s\'] = opt_obj\n\n' % option.lower()) else: sys.stdout.write(doc) sys.stdout.flush() raise Exception('create_castep_keywords: Could not process %s' % option) # write classes out for suffix in suffixes: fh.write(code[suffix]) fh.write('types = %s\n' % types) fh.write('levels = %s\n' % levels) fh.write('castep_version = %s\n\n' % castep_version) fh_disk = open(os.path.join(path, filename), 'w') fh_disk.write(fh.getvalue()) fh.close() fh_disk.close() print('\nCASTEP v%s, fetched %s keywords' % (castep_version, processed_options)) return True class CastepParam(object): """CastepParam abstracts the settings that go into the .param file""" def __init__(self, castep_keywords): object.__init__(self) castep_param_dict = castep_keywords.CastepParamDict() self._options = castep_param_dict._options self.__dict__.update(self._options) def __repr__(self): expr = '' if [x for x in self._options.values() if x.value is not None]: for key, option in sorted(self._options.items()): if option.value is not None: expr += ('%20s : %s\n' % (key, option.value)) else: expr += 'Default\n' return expr def __setattr__(self, attr, value): if attr.startswith('_'): self.__dict__[attr] = value return if attr not in self._options.keys(): similars = difflib.get_close_matches(attr, self._options.keys()) if similars: raise UserWarning(('Option "%s" not known! You mean "%s"?') % (attr, similars[0])) else: raise UserWarning('Option "%s" is not known!' % attr) attr = attr.lower() opt = self._options[attr] if not opt.type == 'Block' and isinstance(value, basestring): value = value.replace(':', ' ') if opt.type in ['Boolean (Logical)', 'Defined']: if False: pass else: try: value = _tf_table[str(value).title()] except: raise ConversionError('bool', attr, value) self._options[attr].value = value elif opt.type == 'String': if attr == 'reuse': if self._options['continuation'].value: print('Cannot set reuse if continuation is set, and') print('vice versa. Set the other to None, if you want') print('this setting.') else: if value is True: self._options['reuse'].value = 'default' else: self._options['reuse'].value = str(value) elif attr == 'continuation': if self._options['reuse'].value: print('Cannot set continuation if reuse is set, and') print('vice versa. Set the other to None, if you want') print('this setting.') else: if value is True: self._options['continuation'].value = 'default' else: self._options['continuation'].value = str(value) else: try: value = str(value) except: raise ConversionError('str', attr, value) self._options[attr].value = value elif opt.type == 'Integer': if False: pass else: try: value = int(value) except: raise ConversionError('int', attr, value) self._options[attr].value = value elif opt.type == 'Real': try: value = float(value) except: raise ConversionError('float', attr, value) self._options[attr].value = value # Newly added "Vector" options elif opt.type == 'Integer Vector': # crashes if value is not a string if isinstance(value, basestring): if ',' in value: value = value.replace(',', ' ') if isinstance(value, basestring) and len(value.split()) == 3: try: [int(x) for x in value.split()] except: raise ConversionError('int vector', attr, value) opt.value = value else: print('Wrong format for Integer Vector: expected I I I') print('and you said %s' % value) elif opt.type == 'Real Vector': if ',' in value: value = value.replace(',', ' ') if isinstance(value, basestring) and len(value.split()) == 3: try: [float(x) for x in value.split()] except: raise ConversionError('float vector', attr, value) opt.value = value else: print('Wrong format for Real Vector: expected R R R') print('and you said %s' % value) elif opt.type == 'Physical': # Usage of the CASTEP unit system is not fully implemented # for now. # We assume, that the user is happy with setting/getting the # CASTEP default units refer to http://goo.gl/bqYf2 # page 13, accessed Apr 6, 2011 # However if a unit is present it will be dealt with # this crashes if non-string types are passed if isinstance(value, basestring): if len(value.split()) > 1: value = value.split(' ', 1)[0] try: value = float(value) except: raise ConversionError('float', attr, value) self._options[attr].value = value elif opt.type in ['Block']: self._options[attr].value = value else: raise RuntimeError('Caught unhandled option: %s = %s' % (attr, value)) class CastepCell(object): """CastepCell abstracts all setting that go into the .cell file""" def __init__(self, castep_keywords): object.__init__(self) castep_cell_dict = castep_keywords.CastepCellDict() self._options = castep_cell_dict._options self.__dict__.update(self._options) def __repr__(self): expr = '' if [x for x in self._options.values() if x.value is not None]: for key, option in sorted(self._options.items()): if option.value is not None: expr += ('%20s : %s\n' % (key, option.value)) else: expr += 'Default\n' return expr def __setattr__(self, attr, value): if attr.startswith('_'): self.__dict__[attr] = value return if attr not in self._options.keys(): similars = difflib.get_close_matches(attr, self._options.keys()) if similars: raise UserWarning(('Option "%s" not known! You mean "%s"?') % (attr, similars[0])) else: raise UserWarning('Option "%s" is not known!' % attr) return attr = attr.lower() # Handling the many cases where kpoint_ and kpoints_ are treated # equivalently if 'kpoint_' in attr: if attr.replace('kpoint_', 'kpoints_') in self._options: attr = attr.replace('kpoint_', 'kpoints_') # CASTEP < 16 lists kpoints_mp_grid as type "Integer" -> convert to # "Integer Vector" if attr == 'kpoints_mp_grid': self._options[attr].type = 'Integer Vector' opt = self._options[attr] if not opt.type == 'Block' and isinstance(value, basestring): value = value.replace(':', ' ') if opt.type in ['Boolean (Logical)', 'Defined']: try: value = _tf_table[str(value).title()] except: raise ConversionError('bool', attr, value) self._options[attr].value = value elif opt.type == 'String': if False: pass else: try: value = str(value) except: raise ConversionError('str', attr, value) self._options[attr].value = value elif opt.type == 'Integer': try: value = int(value) except: raise ConversionError('int', attr, value) self._options[attr].value = value elif opt.type == 'Real': try: value = float(value) except: raise ConversionError('float', attr, value) self._options[attr].value = value # Newly added "Vector" options elif opt.type == 'Integer Vector': if ',' in value: value = value.replace(',', ' ') if isinstance(value, basestring) and len(value.split()) == 3: try: [int(x) for x in value.split()] except: raise ConversionError('int vector', attr, value) opt.value = value else: print('Wrong format for Integer Vector: expected I I I') print('and you said %s' % value) elif opt.type == 'Real Vector': if ',' in value: value = value.replace(',', ' ') if isinstance(value, basestring) and len(value.split()) == 3: try: [float(x) for x in value.split()] except: raise ConversionError('float vector', attr, value) opt.value = value else: print('Wrong format for Real Vector: expected R R R') print('and you said %s' % value) elif opt.type == 'Physical': # Usage of the CASTEP unit system is not fully implemented # for now. # We assume, that the user is happy with setting/getting the # CASTEP default units refer to http://goo.gl/bqYf2 # page 13, accessed Apr 6, 2011 # However if a unit is present it will be dealt with # this crashes if non-string types are passed if isinstance(value, basestring): if len(value.split()) > 1: value = value.split(' ', 1)[0] try: value = float(value) except: raise ConversionError('float', attr, value) self._options[attr].value = value elif opt.type == 'Block': if attr == 'species_pot': if not isinstance(value, tuple) or len(value) != 2: print('Please specify pseudopotentials in python as') print('a tuple, like:') print('(species, file), e.g. ("O", "path-to/O_OTFG.usp")') print('Anything else will be ignored') else: if self.__dict__['species_pot'].value is None: self.__dict__['species_pot'].value = '' self.__dict__['species_pot'].value = \ re.sub(r'\n?\s*%s\s+.*' % value[0], '', self.__dict__['species_pot'].value) if value[1]: self.__dict__['species_pot'].value += '\n%s %s' % value # now sort lines as to match the CASTEP output pspots = self.__dict__['species_pot'].value.split('\n') # throw out empty lines pspots = [x for x in pspots if x] # sort based on atomic numbers pspots.sort(key=lambda x: ase.data.atomic_numbers[ re.split('[\s:]', x, 1)[0]]) # rejoin; the first blank-line # makes the print(calc) output look prettier self.__dict__['species_pot'].value = \ '\n' + '\n'.join(pspots) return # probably we will support this at some point... # elif attr == 'nonlinear_constraints': # if type(value) is not str: # print("Please specify nonlinear constraint in python as " # "a string") # print("Anything else will be ignored") # else: # if self.__dict__['nonlinear_constraints'].value is None: # self._options['nonlinear_constraints'].value = '' # self.__dict__['nonlinear_constraints'].value = ( # str(self.__dict__['nonlinear_constraints'].value) + # ' \n') # self._options[attr].value += value # return elif attr == 'symmetry_ops': if not isinstance(value, tuple) \ or not len(value) == 2 \ or not value[0].shape[1:] == (3, 3) \ or not value[1].shape[1:] == (3,) \ or not value[0].shape[0] == value[1].shape[0]: print('Invalid symmetry_ops block, skipping') return # Now on to print... text_block = '' for op_i, (op_rot, op_tranls) in enumerate(zip(*value)): text_block += '\n'.join([' '.join([str(x) for x in row]) for row in op_rot]) text_block += '\n' text_block += ' '.join([str(x) for x in op_tranls]) text_block += '\n' value = text_block elif attr in ['positions_abs_intermediate', 'positions_abs_product']: if not isinstance(value, ase.atoms.Atoms): raise UserWarning('castep.cell.%s expects Atoms object' % attr) target = self.__dict__[attr] target.value = '' for elem, pos in zip(value.get_chemical_symbols(), value.get_positions()): target.value += ('%4s %9.6f %9.6f %9.6f\n' % (elem, pos[0], pos[1], pos[2])) return else: # For generic, non-implemented blocks all we want is to # store the lines and reprint them without any changes later value = '\n'.join(value) self._options[attr].value = value else: raise RuntimeError('Caught unhandled option: %s = %s' % (attr, value)) class ConversionError(Exception): """Print customized error for options that are not converted correctly and point out that they are maybe not implemented, yet""" def __init__(self, key_type, attr, value): Exception.__init__(self) self.key_type = key_type self.value = value self.attr = attr def __str__(self): return 'Could not convert %s = %s to %s\n' \ % (self.attr, self.value, self.key_type) \ + 'This means you either tried to set a value of the wrong\n'\ + 'type or this keyword needs some special care. Please feel\n'\ + 'to add it to the corresponding __setattr__ method and send\n'\ + 'the patch to %s, so we can all benefit.' % (contact_email) def get_castep_pp_path(castep_pp_path=''): """Abstract the quest for a CASTEP PSP directory.""" if castep_pp_path: return os.path.abspath(os.path.expanduser(castep_pp_path)) elif 'CASTEP_PP_PATH' in os.environ: return os.environ['CASTEP_PP_PATH'] else: return os.path.abspath('.') def get_castep_command(castep_command=''): """Abstract the quest for a castep_command string.""" if castep_command: return castep_command elif 'CASTEP_COMMAND' in os.environ: return os.environ['CASTEP_COMMAND'] else: return 'castep' def shell_stdouterr(raw_command): """Abstracts the standard call of the commandline, when we are only interested in the stdout and stderr """ stdout, stderr = subprocess.Popen(raw_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True).communicate() return stdout.strip(), stderr.strip() def import_castep_keywords(castep_command=''): try: # Adapt import path to give local versions of castep_keywords # a higher priority, assuming that personal folder will be # standardized at ~/.ase, watch [ase-developers] sys.path[:0] = ['', os.path.expanduser('~/.ase'), os.path.join(ase.__path__[0], 'calculators')] import castep_keywords except ImportError: print(""" Generating castep_keywords.py ... hang on. The castep_keywords.py contains abstractions for CASTEP input parameters (for both .cell and .param input files), including some format checks and descriptions. The latter are extracted from the internal online help facility of a CASTEP binary, thus allowing to easily keep the calculator synchronized with (different versions of) the CASTEP code. Consequently, avoiding licensing issues (CASTEP is distributed commercially by accelrys), we consider it wise not to provide castep_keywords.py in the first place. """) create_castep_keywords(get_castep_command(castep_command)) print("""\n\n Stored castep_keywords.py in %s. Copy castep_keywords.py to your ASE installation under ase/calculators for system-wide installation """ % os.path.abspath(os.path.curdir)) print("""\n\n Using a *nix OS this can be a simple as\nmv %s %s""" % (os.path.join(os.path.abspath(os.path.curdir), 'castep_keywords.py'), os.path.join(os.path.dirname(ase.__file__), 'calculators'))) import castep_keywords finally: del sys.path[:3] return castep_keywords if __name__ == '__main__': print('When called directly this calculator will fetch all available') print('keywords from the binarys help function into a castep_keywords.py') print('in the current directory %s' % os.getcwd()) print('For system wide usage, it can be copied into an ase installation') print('at ASE/calculators.\n') print('This castep_keywords.py usually only needs to be generated once') print('for a CASTEP binary/CASTEP version.') import optparse parser = optparse.OptionParser() parser.add_option( '-f', '--force-write', dest='force_write', help='Force overwriting existing castep_keywords.py', default=False, action='store_true') (options, args) = parser.parse_args() if args: opt_castep_command = ''.join(args) else: opt_castep_command = '' generated = create_castep_keywords(get_castep_command(opt_castep_command), force_write=options.force_write) if generated: try: exec(compile(open('castep_keywords.py').read(), 'castep_keywords.py', 'exec')) except Exception as e: print(e) print('Ooops, something went wrong with the CASTEP keywords') else: print('Import works. Looking good!') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/checkpoint.py000066400000000000000000000245071316323560300255640ustar00rootroot00000000000000"""Checkpointing and restart functionality for scripts using ASE Atoms objects. Initialize checkpoint object: CP = Checkpoint('checkpoints.db') Checkpointed code block in try ... except notation: try: a, C, C_err = CP.load() except NoCheckpoint: C, C_err = fit_elastic_constants(a) CP.save(a, C, C_err) Checkpoint code block, shorthand notation: C, C_err = CP(fit_elastic_constants)(a) Example for checkpointing within an iterative loop, e.g. for searching crack tip position: try: a, converged, tip_x, tip_y = CP.load() except NoCheckpoint: converged = False tip_x = tip_x0 tip_y = tip_y0 while not converged: ... do something to find better crack tip position ... converged = ... CP.flush(a, converged, tip_x, tip_y) The simplest way to use checkpointing is through the CheckpointCalculator. It wraps any calculator object and does a checkpoint whenever a calculation is performed: calc = ... cp_calc = CheckpointCalculator(calc) atoms.set_calculator(cp_calc) e = atoms.get_potential_energy() # 1st time, does calc, writes to checkfile # subsequent runs, reads from checkpoint """ import numpy as np import ase from ase.db import connect from ase.calculators.calculator import Calculator class NoCheckpoint(Exception): pass class DevNull: def write(str, *args): pass class Checkpoint(object): _value_prefix = '_values_' def __init__(self, db='checkpoints.db', logfile=None): self.db = db if logfile is None: logfile = DevNull() self.logfile = logfile self.checkpoint_id = [0] self.in_checkpointed_region = False def __call__(self, func, *args, **kwargs): checkpoint_func_name = str(func) def decorated_func(*args, **kwargs): # Get the first ase.Atoms object. atoms = None for a in args: if atoms is None and isinstance(a, ase.Atoms): atoms = a try: retvals = self.load(atoms=atoms) except NoCheckpoint: retvals = func(*args, **kwargs) if isinstance(retvals, tuple): self.save(*retvals, atoms=atoms, checkpoint_func_name=checkpoint_func_name) else: self.save(retvals, atoms=atoms, checkpoint_func_name=checkpoint_func_name) return retvals return decorated_func def _increase_checkpoint_id(self): if self.in_checkpointed_region: self.checkpoint_id += [1] else: self.checkpoint_id[-1] += 1 self.logfile.write('Entered checkpoint region ' '{0}.\n'.format(self.checkpoint_id)) self.in_checkpointed_region = True def _decrease_checkpoint_id(self): self.logfile.write('Leaving checkpoint region ' '{0}.\n'.format(self.checkpoint_id)) if not self.in_checkpointed_region: self.checkpoint_id = self.checkpoint_id[:-1] assert len(self.checkpoint_id) >= 1 self.in_checkpointed_region = False assert self.checkpoint_id[-1] >= 1 def _mangled_checkpoint_id(self): """ Returns a mangled checkpoint id string: check_c_1:c_2:c_3:... E.g. if checkpoint is nested and id is [3,2,6] it returns: 'check3:2:6' """ return 'check'+':'.join(str(id) for id in self.checkpoint_id) def load(self, atoms=None): """ Retrieve checkpoint data from file. If atoms object is specified, then the calculator connected to that object is copied to all returning atoms object. Returns tuple of values as passed to flush or save during checkpoint write. """ self._increase_checkpoint_id() retvals = [] with connect(self.db) as db: try: dbentry = db.get(checkpoint_id=self._mangled_checkpoint_id()) except KeyError: raise NoCheckpoint data = dbentry.data atomsi = data['checkpoint_atoms_args_index'] i = 0 while (i == atomsi or '{0}{1}'.format(self._value_prefix, i) in data): if i == atomsi: newatoms = dbentry.toatoms() if atoms is not None: # Assign calculator newatoms.set_calculator(atoms.get_calculator()) retvals += [newatoms] else: retvals += [data['{0}{1}'.format(self._value_prefix, i)]] i += 1 self.logfile.write('Successfully restored checkpoint ' '{0}.\n'.format(self.checkpoint_id)) self._decrease_checkpoint_id() if len(retvals) == 1: return retvals[0] else: return tuple(retvals) def _flush(self, *args, **kwargs): data = dict(('{0}{1}'.format(self._value_prefix, i), v) for i, v in enumerate(args)) try: atomsi = [isinstance(v, ase.Atoms) for v in args].index(True) atoms = args[atomsi] del data['{0}{1}'.format(self._value_prefix, atomsi)] except ValueError: atomsi = -1 try: atoms = kwargs['atoms'] except KeyError: raise RuntimeError('No atoms object provided in arguments.') try: del kwargs['atoms'] except KeyError: pass data['checkpoint_atoms_args_index'] = atomsi data.update(kwargs) with connect(self.db) as db: try: dbentry = db.get(checkpoint_id=self._mangled_checkpoint_id()) del db[dbentry.id] except KeyError: pass db.write(atoms, checkpoint_id=self._mangled_checkpoint_id(), data=data) self.logfile.write('Successfully stored checkpoint ' '{0}.\n'.format(self.checkpoint_id)) def flush(self, *args, **kwargs): """ Store data to a checkpoint without increasing the checkpoint id. This is useful to continously update the checkpoint state in an iterative loop. """ # If we are flushing from a successfully restored checkpoint, then # in_checkpointed_region will be set to False. We need to reset to True # because a call to flush indicates that this checkpoint is still # active. self.in_checkpointed_region = False self._flush(*args, **kwargs) def save(self, *args, **kwargs): """ Store data to a checkpoint and increase the checkpoint id. This closes the checkpoint. """ self._decrease_checkpoint_id() self._flush(*args, **kwargs) def atoms_almost_equal(a, b, tol=1e-9): return (np.abs(a.positions - b.positions).max() < tol and (a.numbers == b.numbers).all() and np.abs(a.cell - b.cell).max() < tol and (a.pbc == b.pbc).all()) class CheckpointCalculator(Calculator): """ This wraps any calculator object to checkpoint whenever a calculation is performed. This is particularily useful for expensive calculators, e.g. DFT and allows usage of complex workflows. Example usage: calc = ... cp_calc = CheckpointCalculator(calc) atoms.set_calculator(cp_calc) e = atoms.get_potential_energy() # 1st time, does calc, writes to checkfile # subsequent runs, reads from checkpoint file """ implemented_properties = ase.calculators.calculator.all_properties default_parameters = {} name = 'CheckpointCalculator' property_to_method_name = { 'energy': 'get_potential_energy', 'energies': 'get_potential_energies', 'forces': 'get_forces', 'stress': 'get_stress', 'stresses': 'get_stresses'} def __init__(self, calculator, db='checkpoints.db', logfile=None): Calculator.__init__(self) self.calculator = calculator if logfile is None: logfile = DevNull() self.checkpoint = Checkpoint(db, logfile) self.logfile = logfile def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) try: results = self.checkpoint.load(atoms) prev_atoms, results = results[0], results[1:] try: assert atoms_almost_equal(atoms, prev_atoms) except AssertionError: raise AssertionError('mismatch between current atoms and ' 'those read from checkpoint file') self.logfile.write('retrieved results for {0} from checkpoint\n' .format(properties)) # save results in calculator for next time if isinstance(self.calculator, Calculator): if not hasattr(self.calculator, 'results'): self.calculator.results = {} self.calculator.results.update(dict(zip(properties, results))) except NoCheckpoint: if isinstance(self.calculator, Calculator): self.logfile.write('doing calculation of {0} with new-style ' 'calculator interface\n'.format(properties)) self.calculator.calculate(atoms, properties, system_changes) results = [self.calculator.results[prop] for prop in properties] else: self.logfile.write('doing calculation of {0} with old-style ' 'calculator interface\n'.format(properties)) results = [] for prop in properties: method_name = self.property_to_method_name[prop] method = getattr(self.calculator, method_name) results.append(method(atoms)) _calculator = atoms.get_calculator() try: atoms.set_calculator(self.calculator) self.checkpoint.save(atoms, *results) finally: atoms.set_calculator(_calculator) self.results = dict(zip(properties, results)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/cp2k.py000066400000000000000000000541571316323560300243000ustar00rootroot00000000000000# -*- coding: utf-8 -*- """This module defines an ASE interface to CP2K. http://www.cp2k.org Author: Ole Schuett """ from __future__ import print_function import os import os.path from warnings import warn from subprocess import Popen, PIPE import numpy as np import ase.io from ase.units import Rydberg from ase.calculators.calculator import Calculator, all_changes, Parameters class CP2K(Calculator): """ASE-Calculator for CP2K. CP2K is a program to perform atomistic and molecular simulations of solid state, liquid, molecular, and biological systems. It provides a general framework for different methods such as e.g., density functional theory (DFT) using a mixed Gaussian and plane waves approach (GPW) and classical pair and many-body potentials. CP2K is freely available under the GPL license. It is written in Fortran 2003 and can be run efficiently in parallel. Check http://www.cp2k.org about how to obtain and install CP2K. Make sure that you also have the CP2K-shell available, since it is required by the CP2K-calulator. The CP2K-calculator relies on the CP2K-shell. The CP2K-shell was originally designed for interactive sessions. When a calculator object is instantiated, it launches a CP2K-shell as a subprocess in the background and communications with it through stdin/stdout pipes. This has the advantage that the CP2K process is kept alive for the whole lifetime of the calculator object, i.e. there is no startup overhead for a sequence of energy evaluations. Furthermore, the usage of pipes avoids slow file- system I/O. This mechanism even works for MPI-parallelized runs, because stdin/stdout of the first rank are forwarded by the MPI-environment to the mpiexec-process. The command used by the calculator to launch the CP2K-shell is ``cp2k_shell``. To run a parallelized simulation use something like this: >>> CP2K.command="env OMP_NUM_THREADS=2 mpiexec -np 4 cp2k_shell.psmp" Arguments: auto_write: bool Flag to enable the auto-write mode. If enabled the ``write()`` routine is called after every calculation, which mimics the behavior of the ``FileIOCalculator``. Default is ``False``. basis_set: str Name of the basis set to be use. The default is ``DZVP-MOLOPT-SR-GTH``. basis_set_file: str Filename of the basis set file. Default is ``BASIS_MOLOPT``. Set the environment variable $CP2K_DATA_DIR to enabled automatic file discovered. charge: float The total charge of the system. Default is ``0``. command: str The command used to launch the CP2K-shell. If ``command`` is not passed as an argument to the constructor, the class-variable ``CP2K.command``, and then the environment variabel ``$ASE_CP2K_COMMAND`` are checked. Eventually, ``cp2k_shell`` is used as default. cutoff: float The cutoff of the finest grid level. Default is ``400 * Rydberg``. debug: bool Flag to enable debug mode. This will print all communication between the CP2K-shell and the CP2K-calculator. Default is ``False``. force_eval_method: str The method CP2K uses to evaluate energies and forces. The default is ``Quickstep``, which is CP2K's module for electronic structure methods like DFT. inp: str CP2K input template. If present, the calculator will augment the template, e.g. with coordinates, and use it to launch CP2K. Hence, this generic mechanism gives access to all features of CP2K. Note, that most keywords accept ``None`` to disable the generation of the corresponding input section. max_scf: int Maximum number of SCF iteration to be performed for one optimization. Default is ``50``. poisson_solver: str The poisson solver to be used. Currently, the only supported values are ``auto`` and ``None``. Default is ``auto``. potential_file: str Filename of the pseudo-potential file. Default is ``POTENTIAL``. Set the environment variable $CP2K_DATA_DIR to enabled automatic file discovered. pseudo_potential: str Name of the pseudo-potential to be use. Default is ``auto``. This tries to infer the potential from the employed XC-functional, otherwise it falls back to ``GTH-PBE``. stress_tensor: bool Indicates whether the analytic stress-tensor should be calculated. Default is ``True``. uks: bool Requests an unrestricted Kohn-Sham calculations. This is need for spin-polarized systems, ie. with an odd number of electrons. Default is ``False``. xc: str Name of exchange and correlation functional. Accepts all functions supported by CP2K itself or libxc. Default is ``LDA``. print_level: str PRINT_LEVEL of global output. Possible options are: DEBUG Everything is written out, useful for debugging purposes only HIGH Lots of output LOW Little output MEDIUM Quite some output SILENT Almost no output Default is 'LOW' """ implemented_properties = ['energy', 'free_energy', 'forces', 'stress'] command = None default_parameters = dict( auto_write=False, basis_set='DZVP-MOLOPT-SR-GTH', basis_set_file='BASIS_MOLOPT', charge=0, cutoff=400 * Rydberg, force_eval_method="Quickstep", inp='', max_scf=50, potential_file='POTENTIAL', pseudo_potential='auto', stress_tensor=True, uks=False, poisson_solver='auto', xc='LDA', print_level='LOW') def __init__(self, restart=None, ignore_bad_restart_file=False, label='cp2k', atoms=None, command=None, debug=False, **kwargs): """Construct CP2K-calculator object.""" self._debug = debug self._force_env_id = None self._shell = None self.label = None self.parameters = None self.results = None self.atoms = None # Several places are check to determine self.command if command is not None: self.command = command elif CP2K.command is not None: self.command = CP2K.command elif 'ASE_CP2K_COMMAND' in os.environ: self.command = os.environ['ASE_CP2K_COMMAND'] else: self.command = 'cp2k_shell' # default Calculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) self._shell = Cp2kShell(self.command, self._debug) if restart is not None: try: self.read(restart) except: if ignore_bad_restart_file: self.reset() else: raise def __del__(self): """Release force_env and terminate cp2k_shell child process""" if self._shell: self._release_force_env() del(self._shell) def set(self, **kwargs): """Set parameters like set(key1=value1, key2=value2, ...).""" changed_parameters = Calculator.set(self, **kwargs) if changed_parameters: self.reset() def write(self, label): 'Write atoms, parameters and calculated results into restart files.' if self._debug: print("Writting restart to: ", label) self.atoms.write(label + '_restart.traj') self.parameters.write(label + '_params.ase') open(label + '_results.ase', 'w').write(repr(self.results)) def read(self, label): 'Read atoms, parameters and calculated results from restart files.' self.atoms = ase.io.read(label + '_restart.traj') self.parameters = Parameters.read(label + '_params.ase') results_txt = open(label + '_results.ase').read() self.results = eval(results_txt, {'array': np.array}) def calculate(self, atoms=None, properties=None, system_changes=all_changes): """Do the calculation.""" if not properties: properties = ['energy'] Calculator.calculate(self, atoms, properties, system_changes) if self._debug: print("system_changes:", system_changes) if 'numbers' in system_changes: self._release_force_env() if self._force_env_id is None: self._create_force_env() # enable eV and Angstrom as units self._shell.send('UNITS_EV_A') self._shell.expect('* READY') n_atoms = len(self.atoms) if 'cell' in system_changes: cell = self.atoms.get_cell() self._shell.send('SET_CELL %d' % self._force_env_id) for i in range(3): self._shell.send('%.18e %.18e %.18e' % tuple(cell[i, :])) self._shell.expect('* READY') if 'positions' in system_changes: self._shell.send('SET_POS %d' % self._force_env_id) self._shell.send('%d' % (3 * n_atoms)) for pos in self.atoms.get_positions(): self._shell.send('%.18e %.18e %.18e' % tuple(pos)) self._shell.send('*END') max_change = float(self._shell.recv()) assert max_change >= 0 # sanity check self._shell.expect('* READY') self._shell.send('EVAL_EF %d' % self._force_env_id) self._shell.expect('* READY') self._shell.send('GET_E %d' % self._force_env_id) self.results['energy'] = float(self._shell.recv()) self.results['free_energy'] = self.results['energy'] self._shell.expect('* READY') forces = np.zeros(shape=(n_atoms, 3)) self._shell.send('GET_F %d' % self._force_env_id) nvals = int(self._shell.recv()) assert nvals == 3 * n_atoms # sanity check for i in range(n_atoms): line = self._shell.recv() forces[i, :] = [float(x) for x in line.split()] self._shell.expect('* END') self._shell.expect('* READY') self.results['forces'] = forces self._shell.send('GET_STRESS %d' % self._force_env_id) line = self._shell.recv() self._shell.expect('* READY') stress = np.array([float(x) for x in line.split()]).reshape(3, 3) assert np.all(stress == np.transpose(stress)) # should be symmetric # Convert 3x3 stress tensor to Voigt form as required by ASE stress = np.array([stress[0, 0], stress[1, 1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1]]) self.results['stress'] = -1.0 * stress # cp2k uses the opposite sign if self.parameters.auto_write: self.write(self.label) def _create_force_env(self): """Instantiates a new force-environment""" assert self._force_env_id is None label_dir = os.path.dirname(self.label) if len(label_dir) > 0 and not os.path.exists(label_dir): print('Creating directory: ' + label_dir) os.makedirs(label_dir) # cp2k expects dirs to exist inp = self._generate_input() inp_fn = self.label + '.inp' out_fn = self.label + '.out' self._write_file(inp_fn, inp) self._shell.send('LOAD %s %s' % (inp_fn, out_fn)) self._force_env_id = int(self._shell.recv()) assert self._force_env_id > 0 self._shell.expect('* READY') def _write_file(self, fn, content): """Write content to a file""" if self._debug: print('Writting to file: ' + fn) print(content) if self._shell.version < 2.0: f = open(fn, 'w') f.write(content) f.close() else: lines = content.split('\n') if self._shell.version < 2.1: lines = [l.strip() for l in lines] # save chars self._shell.send('WRITE_FILE') self._shell.send(fn) self._shell.send('%d' % len(lines)) for line in lines: self._shell.send(line) self._shell.send('*END') self._shell.expect('* READY') def _release_force_env(self): """Destroys the current force-environment""" if self._force_env_id: if self._shell.isready: self._shell.send('DESTROY %d' % self._force_env_id) self._shell.expect('* READY') else: msg = "CP2K-shell not ready, could not release force_env." warn(msg, RuntimeWarning) self._force_env_id = None def _generate_input(self): """Generates a CP2K input file""" p = self.parameters root = parse_input(p.inp) root.add_keyword('GLOBAL', 'PROJECT ' + self.label) if p.print_level: root.add_keyword('GLOBAL', 'PRINT_LEVEL ' + p.print_level) if p.force_eval_method: root.add_keyword('FORCE_EVAL', 'METHOD ' + p.force_eval_method) if p.stress_tensor: root.add_keyword('FORCE_EVAL', 'STRESS_TENSOR ANALYTICAL') root.add_keyword('FORCE_EVAL/PRINT/STRESS_TENSOR', '_SECTION_PARAMETERS_ ON') if p.basis_set_file: root.add_keyword('FORCE_EVAL/DFT', 'BASIS_SET_FILE_NAME ' + p.basis_set_file) if p.potential_file: root.add_keyword('FORCE_EVAL/DFT', 'POTENTIAL_FILE_NAME ' + p.potential_file) if p.cutoff: root.add_keyword('FORCE_EVAL/DFT/MGRID', 'CUTOFF [eV] %.18e' % p.cutoff) if p.max_scf: root.add_keyword('FORCE_EVAL/DFT/SCF', 'MAX_SCF %d' % p.max_scf) root.add_keyword('FORCE_EVAL/DFT/LS_SCF', 'MAX_SCF %d' % p.max_scf) if p.xc: if p.xc.startswith("XC_"): root.add_keyword('FORCE_EVAL/DFT/XC/XC_FUNCTIONAL/LIBXC', 'FUNCTIONAL ' + p.xc) else: root.add_keyword('FORCE_EVAL/DFT/XC/XC_FUNCTIONAL', '_SECTION_PARAMETERS_ ' + p.xc) if p.uks: root.add_keyword('FORCE_EVAL/DFT', 'UNRESTRICTED_KOHN_SHAM ON') if p.charge and p.charge != 0: root.add_keyword('FORCE_EVAL/DFT', 'CHARGE %d' % p.charge) # add Poisson solver if needed if p.poisson_solver == 'auto' and not any(self.atoms.get_pbc()): root.add_keyword('FORCE_EVAL/DFT/POISSON', 'PERIODIC NONE') root.add_keyword('FORCE_EVAL/DFT/POISSON', 'PSOLVER MT') # write coords syms = self.atoms.get_chemical_symbols() atoms = self.atoms.get_positions() for elm, pos in zip(syms, atoms): line = '%s %.18e %.18e %.18e' % (elm, pos[0], pos[1], pos[2]) root.add_keyword('FORCE_EVAL/SUBSYS/COORD', line, unique=False) # write cell pbc = ''.join([a for a, b in zip('XYZ', self.atoms.get_pbc()) if b]) if len(pbc) == 0: pbc = 'NONE' root.add_keyword('FORCE_EVAL/SUBSYS/CELL', 'PERIODIC ' + pbc) c = self.atoms.get_cell() for i, a in enumerate('ABC'): line = '%s %.18e %.18e %.18e' % (a, c[i, 0], c[i, 1], c[i, 2]) root.add_keyword('FORCE_EVAL/SUBSYS/CELL', line) # determine pseudo-potential potential = p.pseudo_potential if p.pseudo_potential == 'auto': if p.xc and p.xc.upper() in ('LDA', 'PADE', 'BP', 'BLYP', 'PBE',): potential = 'GTH-' + p.xc.upper() else: msg = 'No matching pseudo potential found, using GTH-PBE' warn(msg, RuntimeWarning) potential = 'GTH-PBE' # fall back # write atomic kinds subsys = root.get_subsection('FORCE_EVAL/SUBSYS').subsections kinds = dict([(s.params, s) for s in subsys if s.name == "KIND"]) for elem in set(self.atoms.get_chemical_symbols()): if elem not in kinds.keys(): s = InputSection(name='KIND', params=elem) subsys.append(s) kinds[elem] = s if p.basis_set: kinds[elem].keywords.append('BASIS_SET ' + p.basis_set) if potential: kinds[elem].keywords.append('POTENTIAL ' + potential) output_lines = ['!!! Generated by ASE !!!'] + root.write() return '\n'.join(output_lines) class Cp2kShell(object): """Wrapper for CP2K-shell child-process""" def __init__(self, command, debug): """Construct CP2K-shell object""" self.isready = False self.version = 1.0 # assume oldest possible version until verified self._child = None self._debug = debug # launch cp2k_shell child process assert 'cp2k_shell' in command if self._debug: print(command) self._child = Popen(command, shell=True, universal_newlines=True, stdin=PIPE, stdout=PIPE, bufsize=1) self.expect('* READY') # check version of shell self.send('VERSION') line = self.recv() if not line.startswith('CP2K Shell Version:'): raise RuntimeError('Cannot determine version of CP2K shell. ' 'Probably the shell version is too old. ' 'Please update to CP2K 3.0 or newer.') shell_version = line.rsplit(":", 1)[1] self.version = float(shell_version) assert self.version >= 1.0 self.expect('* READY') # enable harsh mode, stops on any error self.send('HARSH') self.expect('* READY') def __del__(self): """Terminate cp2k_shell child process""" if self.isready: self.send('EXIT') rtncode = self._child.wait() assert rtncode == 0 # child process exited properly? else: warn("CP2K-shell not ready, sending SIGTERM.", RuntimeWarning) self._child.terminate() self._child = None self.version = None self.isready = False def send(self, line): """Send a line to the cp2k_shell""" assert self._child.poll() is None # child process still alive? if self._debug: print('Sending: ' + line) if self.version < 2.1 and len(line) >= 80: raise Exception('Buffer overflow, upgrade CP2K to r16779 or later') assert(len(line) < 800) # new input buffer size self.isready = False self._child.stdin.write(line + '\n') def recv(self): """Receive a line from the cp2k_shell""" assert self._child.poll() is None # child process still alive? line = self._child.stdout.readline().strip() if self._debug: print('Received: ' + line) self.isready = line == '* READY' return line def expect(self, line): """Receive a line and asserts that it matches the expected one""" received = self.recv() assert received == line class InputSection(object): """Represents a section of a CP2K input file""" def __init__(self, name, params=None): self.name = name.upper() self.params = params self.keywords = [] self.subsections = [] def write(self): """Outputs input section as string""" output = [] for k in self.keywords: output.append(k) for s in self.subsections: if s.params: output.append('&%s %s' % (s.name, s.params)) else: output.append('&%s' % s.name) for l in s.write(): output.append(' %s' % l) output.append('&END %s' % s.name) return output def add_keyword(self, path, line, unique=True): """Adds a keyword to section.""" parts = path.upper().split('/', 1) candidates = [s for s in self.subsections if s.name == parts[0]] if len(candidates) == 0: s = InputSection(name=parts[0]) self.subsections.append(s) candidates = [s] elif len(candidates) != 1: raise Exception('Multiple %s sections found ' % parts[0]) key = line.split()[0].upper() if len(parts) > 1: candidates[0].add_keyword(parts[1], line, unique) elif key == '_SECTION_PARAMETERS_': if candidates[0].params is not None: msg = 'Section parameter of section %s already set' % parts[0] raise Exception(msg) candidates[0].params = line.split(' ', 1)[1].strip() else: old_keys = [k.split()[0].upper() for k in candidates[0].keywords] if unique and key in old_keys: msg = 'Keyword %s already present in section %s' raise Exception(msg % (key, parts[0])) candidates[0].keywords.append(line) def get_subsection(self, path): """Finds a subsection""" parts = path.upper().split('/', 1) candidates = [s for s in self.subsections if s.name == parts[0]] if len(candidates) > 1: raise Exception('Multiple %s sections found ' % parts[0]) if len(candidates) == 0: s = InputSection(name=parts[0]) self.subsections.append(s) candidates = [s] if len(parts) == 1: return candidates[0] return candidates[0].get_subsection(parts[1]) def parse_input(inp): """Parses the given CP2K input string""" root_section = InputSection('CP2K_INPUT') section_stack = [root_section] for line in inp.split('\n'): line = line.split('!', 1)[0].strip() if len(line) == 0: continue if line.upper().startswith('&END'): s = section_stack.pop() elif line[0] == '&': parts = line.split(' ', 1) name = parts[0][1:] if len(parts) > 1: s = InputSection(name=name, params=parts[1].strip()) else: s = InputSection(name=name) section_stack[-1].subsections.append(s) section_stack.append(s) else: section_stack[-1].keywords.append(line) return root_section ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/dacapo.py000066400000000000000000000155251316323560300246640ustar00rootroot00000000000000import numpy as np from ase.old import OldASEListOfAtomsWrapper try: import Numeric as num except ImportError: pass def np2num(a, typecode=None): if num.__version__ > '23.8': return num.array(a, typecode) if typecode is None: typecode = num.Float b = num.fromstring(a.tostring(), typecode) b.shape = a.shape return b def restart(filename, **kwargs): calc = Dacapo(filename, **kwargs) atoms = calc.get_atoms() return atoms, calc class Dacapo: def __init__(self, filename=None, stay_alive=False, stress=False, **kwargs): self.kwargs = kwargs self.stay_alive = stay_alive self.stress = stress if filename is not None: from Dacapo import Dacapo self.loa = Dacapo.ReadAtoms(filename, **kwargs) self.calc = self.loa.GetCalculator() else: self.loa = None self.calc = None self.pps = [] def set_pp(self, Z, path): self.pps.append((Z, path)) def set_txt(self, txt): if self.calc is None: self.kwargs['txtout'] = txt else: self.calc.SetTxtFile(txt) def set_nc(self, nc): if self.calc is None: self.kwargs['out'] = nc else: self.calc.SetNetCDFFile(nc) def update(self, atoms): from Dacapo import Dacapo if self.calc is None: if 'nbands' not in self.kwargs: n = sum([valence[atom.symbol] for atom in atoms]) self.kwargs['nbands'] = int(n * 0.65) + 4 magmoms = atoms.get_initial_magnetic_moments() if magmoms.any(): self.kwargs['spinpol'] = True self.calc = Dacapo(**self.kwargs) if self.stay_alive: self.calc.StayAliveOn() else: self.calc.StayAliveOff() if self.stress: self.calc.CalculateStress() for Z, path in self.pps: self.calc.SetPseudoPotential(Z, path) if self.loa is None: from ASE import Atom, ListOfAtoms numbers = atoms.get_atomic_numbers() positions = atoms.get_positions() magmoms = atoms.get_initial_magnetic_moments() self.loa = ListOfAtoms([Atom(Z=numbers[a], position=positions[a], magmom=magmoms[a]) for a in range(len(atoms))], cell=np2num(atoms.get_cell()), periodic=tuple(atoms.get_pbc())) self.loa.SetCalculator(self.calc) else: self.loa.SetCartesianPositions(np2num(atoms.get_positions())) self.loa.SetUnitCell(np2num(atoms.get_cell()), fix=True) def get_atoms(self): atoms = OldASEListOfAtomsWrapper(self.loa).copy() atoms.set_calculator(self) return atoms def get_potential_energy(self, atoms): self.update(atoms) return self.calc.GetPotentialEnergy() def get_forces(self, atoms): self.update(atoms) return np.array(self.calc.GetCartesianForces()) def get_stress(self, atoms): self.update(atoms) stress = np.array(self.calc.GetStress()) if stress.ndim == 2: return stress.ravel()[[0, 4, 8, 5, 2, 1]] else: return stress def calculation_required(self, atoms, quantities): if self.calc is None: return True if atoms != self.get_atoms(): return True return False def get_number_of_bands(self): return self.calc.GetNumberOfBands() def get_k_point_weights(self): return np.array(self.calc.GetIBZKPointWeights()) def get_number_of_spins(self): return 1 + int(self.calc.GetSpinPolarized()) def get_eigenvalues(self, kpt=0, spin=0): return np.array(self.calc.GetEigenvalues(kpt, spin)) def get_fermi_level(self): return self.calc.GetFermiLevel() def get_magnetic_moment(self): return self.calc.GetMagneticMoment() def get_number_of_electrons(self): return self.calc.GetValenceElectrons() def get_number_of_grid_points(self): return np.array(self.get_pseudo_wave_function(0, 0, 0).shape) def get_pseudo_density(self, spin=0): return np.array(self.calc.GetDensityArray(spin)) def get_pseudo_wave_function(self, band=0, kpt=0, spin=0, pad=True): kpt_c = self.get_bz_k_points()[kpt] state = self.calc.GetElectronicStates().GetState(band=band, spin=spin, kptindex=kpt) # Get wf, without bloch phase (Phase = True doesn't do anything!) wave = state.GetWavefunctionOnGrid(phase=False) # Add bloch phase if this is not the Gamma point if np.all(kpt_c == 0): return wave coord = state.GetCoordinates() phase = coord[0] * kpt_c[0] + coord[1] * kpt_c[1] + coord[2] * kpt_c[2] return np.array(wave) * np.exp(-2.j * np.pi * phase) # sign! XXX #return np.array(self.calc.GetWaveFunctionArray(n, k, s)) # No phase! def get_bz_k_points(self): return np.array(self.calc.GetBZKPoints()) def get_ibz_k_points(self): return np.array(self.calc.GetIBZKPoints()) def get_wannier_localization_matrix(self, nbands, dirG, kpoint, nextkpoint, G_I, spin): return np.array(self.calc.GetWannierLocalizationMatrix( G_I=G_I.tolist(), nbands=nbands, dirG=dirG.tolist(), kpoint=kpoint, nextkpoint=nextkpoint, spin=spin)) def initial_wannier(self, initialwannier, kpointgrid, fixedstates, edf, spin): # Use initial guess to determine U and C init = self.calc.InitialWannier(initialwannier, self.atoms, np2num(kpointgrid, num.Int)) states = self.calc.GetElectronicStates() waves = [[state.GetWaveFunction() for state in states.GetStatesKPoint(k, spin)] for k in self.calc.GetIBZKPoints()] init.SetupMMatrix(waves, self.calc.GetBZKPoints()) c, U = init.GetListOfCoefficientsAndRotationMatrices( (self.calc.GetNumberOfBands(), fixedstates, edf)) U = np.array(U) for k in range(len(c)): c[k] = np.array(c[k]) return c, U valence = { 'H': 1, 'B': 3, 'C': 4, 'N': 5, 'O': 6, 'Li': 1, 'Na': 1, 'K': 9, 'Mg': 8, 'Ca': 10, 'Sr': 10, 'Al': 3, 'Ga': 13, 'Sc': 11, 'Ti': 12, 'V': 13, 'Cr': 14, 'Mn': 7, 'Fe': 8, 'Co': 9, 'Ni': 10, 'Cu': 11, 'Zn': 12, 'Y': 11, 'Zr': 12, 'Nb': 13, 'Mo': 6, 'Ru': 8, 'Rh': 9, 'Pd': 10, 'Ag': 11, 'Cd': 12, 'Ir': 9, 'Pt': 10, 'Au': 11, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/demon/000077500000000000000000000000001316323560300241555ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/demon/__init__.py000066400000000000000000000001021316323560300262570ustar00rootroot00000000000000from ase.calculators.demon.demon import Demon __all__ = ['Demon'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/demon/demon.py000066400000000000000000000646421316323560300256450ustar00rootroot00000000000000from __future__ import print_function """This module defines an ASE interface to deMon. http://www.demon-software.com """ import os import os.path as op import subprocess import pickle import shutil import numpy as np from ase.units import Bohr, Hartree import ase.data from ase.calculators.calculator import FileIOCalculator, ReadError from ase.calculators.calculator import Parameters, all_changes from ase.calculators.calculator import equal import ase.io m_e_to_amu = 1822.88839 class Parameters_deMon(Parameters): """Parameters class for the calculator. Documented in Base_deMon.__init__ The options here are the most important ones that the user needs to be aware of. Further options accepted by deMon can be set in the dictionary input_arguments. """ def __init__( self, label='rundir', atoms=None, command=None, restart=None, basis_path=None, ignore_bad_restart_file=False, deMon_restart_path='.', title='deMon input file', scftype='RKS', forces=False, dipole=False, xc='VWN', guess='TB', print_out='MOE', basis={}, ecps={}, mcps={}, auxis={}, augment={}, input_arguments=None): kwargs = locals() kwargs.pop('self') Parameters.__init__(self, **kwargs) class Demon(FileIOCalculator): """Calculator interface to the deMon code.""" implemented_properties = ( 'energy', 'forces', 'dipole', 'eigenvalues') def __init__(self, **kwargs): """ASE interface to the deMon code. Parameters: label : str. relative path to the run directory atoms : The Atoms onject command : str. Command to run deMon. If not present the environment varable DEMON_COMMAND will be used restart : str. Relative path to ASE restart directory for parameters and atoms object and results basis_path : str. Relative path to the directory containing BASIS, AUXIS, ECPS, MCPS and AUGMENT ignore_bad_restart_file : bool. Ignore broken or missing ASE restart files By default, it is an error if the restart file is missing or broken. deMon_restart_path : str. Relative path to the deMon restart dir title : str. Title in the deMon input file. scftype : str. Type of scf forces : bool. If True a force calculation will be enforced. dipole : bool. If True a dipole calculation will be enforced xc : str. xc-functional guess : str. guess for initial density and wave functions print_out : str|list. Options for the printing in deMon basis : dict. Definition of basis sets. ecps : dict. Definition of ECPs. mcps : dict. Definition of MCPs. auxis : dict. Definition of AUXIS, augment : dict. Definition of AUGMENT. input_arguments: dict. Explicitly given input arguments. The key is the input keyword and the value is either a str, a list of str (will be written on the same line as the keyword), or a list of lists of str (first list is written on the first line, the others on following lines.) """ parameters = Parameters_deMon(**kwargs) # Setup the run command command = parameters['command'] if command is None: command = os.environ.get('DEMON_COMMAND') if command is None: mess = 'The "DEMON_COMMAND" environment is not defined.' raise ValueError(mess) else: parameters['command'] = command # Call the base class. FileIOCalculator.__init__( self, **parameters) def __getitem__(self, key): """Convenience method to retrieve a parameter as calculator[key] rather than calculator.parameters[key] Parameters: key : str, the name of the parameters to get. """ return self.parameters[key] def set(self, **kwargs): """Set all parameters. Parameters: kwargs : Dictionary containing the keywords for deMon """ # Put in the default arguments. kwargs = self.default_parameters.__class__(**kwargs) if 'parameters' in kwargs: filename = kwargs.pop('parameters') parameters = Parameters.read(filename) parameters.update(kwargs) kwargs = parameters changed_parameters = {} for key, value in kwargs.items(): oldvalue = self.parameters.get(key) if key not in self.parameters or not equal(value, oldvalue): changed_parameters[key] = value self.parameters[key] = value return changed_parameters def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): """Capture the RuntimeError from FileIOCalculator.calculate and add a little debug information from the deMon output. See base FileIocalculator for documentation. """ if atoms is not None: self.atoms = atoms.copy() self.write_input(self.atoms, properties, system_changes) if self.command is None: raise RuntimeError('Please set $%s environment variable ' % ('DEMON_COMMAND') + 'or supply the command keyword') command = self.command # .replace('PREFIX', self.prefix) olddir = os.getcwd() # basis path basis_path = self.parameters['basis_path'] if basis_path is None: basis_path = os.environ.get('DEMON_BASIS_PATH') if basis_path is None: raise RuntimeError('Please set basis_path keyword,' + ' or the DEMON_BASIS_PATH' + ' environment variable') try: # link restart file value = self.parameters['guess'] if value.upper() == 'RESTART': value2 = self.parameters['deMon_restart_path'] if op.exists(self.directory + '/deMon.rst')\ or op.islink(self.directory + '/deMon.rst'): os.remove(self.directory + '/deMon.rst') abspath = op.abspath(value2) if op.exists(abspath + '/deMon.mem') \ or op.islink(abspath + '/deMon.mem'): shutil.copy(abspath + '/deMon.mem', self.directory + '/deMon.rst') else: raise RuntimeError( "{0} doesn't exist".format(abspath + '/deMon.rst')) # link basis abspath = op.abspath(basis_path) if op.exists(self.directory + '/BASIS')\ or op.islink(self.directory + '/BASIS'): os.remove(self.directory + '/BASIS') if op.exists(abspath + '/BASIS')\ or op.islink(abspath + '/BASIS'): os.symlink(abspath + '/BASIS', self.directory + '/BASIS') else: raise RuntimeError( "{0} doesn't exist".format(abspath + '/BASIS')) # link auxis if op.exists(self.directory + '/AUXIS')\ or op.islink(self.directory + '/AUXIS'): os.remove(self.directory + '/AUXIS') if op.exists(abspath + '/AUXIS')\ or op.islink(abspath + '/AUXIS'): os.symlink(abspath + '/AUXIS', self.directory + '/AUXIS') else: raise RuntimeError( "{0} doesn't exist".format(abspath + '/AUXIS')) # link ecps if op.exists(self.directory + '/ECPS')\ or op.islink(self.directory + '/ECPS'): os.remove(self.directory + '/ECPS') if op.exists(abspath + '/ECPS')\ or op.islink(abspath + '/ECPS'): os.symlink(abspath + '/ECPS', self.directory + '/ECPS') else: raise RuntimeError( "{0} doesn't exist".format(abspath + '/ECPS')) # link mcps if op.exists(self.directory + '/MCPS')\ or op.islink(self.directory + '/MCPS'): os.remove(self.directory + '/MCPS') if op.exists(abspath + '/MCPS')\ or op.islink(abspath + '/ECPS'): os.symlink(abspath + '/MCPS', self.directory + '/MCPS') else: raise RuntimeError( "{0} doesn't exist".format(abspath + '/MCPS')) # go to directory and run calculation os.chdir(self.directory) errorcode = subprocess.call(command, shell=True) finally: os.chdir(olddir) if errorcode: raise RuntimeError('%s returned an error: %d' % (self.name, errorcode)) try: self.read_results() except: with open(self.directory + '/deMon.out', 'r') as f: lines = f.readlines() debug_lines = 10 print('##### %d last lines of the deMon.out' % debug_lines) for line in lines[-20:]: print(line.strip()) print('##### end of deMon.out') raise RuntimeError def set_label(self, label): """Set label directory """ self.label = label # in our case self.directory = self.label self.directory = self.label if self.directory == '': self.directory = os.curdir def write_input(self, atoms, properties=None, system_changes=None): """Write input (in)-file. See calculator.py for further details. Parameters: atoms : The Atoms object to write. properties : The properties which should be calculated. system_changes : List of properties changed since last run. """ # Call base calculator. FileIOCalculator.write_input( self, atoms=atoms, properties=properties, system_changes=system_changes) if system_changes is None and properties is None: return filename = self.label + '/deMon.inp' add_print = '' # Start writing the file. with open(filename, 'w') as f: # write keyword argument keywords value = self.parameters['title'] self._write_argument('TITLE', value, f) f.write('#\n') value = self.parameters['scftype'] self._write_argument('SCFTYPE', value, f) value = self.parameters['xc'] self._write_argument('VXCTYPE', value, f) value = self.parameters['guess'] self._write_argument('GUESS', value, f) # obtain forces through a single BOMD step # only if forces is in properties, or if keyword forces is True value = self.parameters['forces'] if 'forces' in properties or value: self._write_argument('DYNAMICS', ['INT=1', 'MAX=0', 'STEP=0'], f) self._write_argument('TRAJECTORY', 'FORCES', f) self._write_argument('VELOCITIES', 'ZERO', f) add_print = add_print + ' ' + 'MD OPT' # if dipole is True, enforce dipole calculation. # Otherwise only if asked for value = self.parameters['dipole'] if 'dipole' in properties or value: self._write_argument('DIPOLE', '', f) # print argument, here other options could change this value = self.parameters['print_out'] assert(type(value) is str) value = value + add_print if not len(value) == 0: self._write_argument('PRINT', value, f) f.write('#\n') # write general input arguments self._write_input_arguments(f) f.write('#\n') # write basis set, ecps, mcps, auxis, augment basis = self.parameters['basis'] if 'all' not in basis: basis['all'] = 'DZVP' self._write_basis(f, atoms, basis, string='BASIS') ecps = self.parameters['ecps'] if not len(ecps) == 0: self._write_basis(f, atoms, ecps, string='ECPS') mcps = self.parameters['mcps'] if not len(mcps) == 0: self._write_basis(f, atoms, mcps, string='MCPS') auxis = self.parameters['auxis'] if not len(auxis) == 0: self._write_basis(f, atoms, auxis, string='AUXIS') augment = self.parameters['augment'] if not len(augment) == 0: self._write_basis(f, atoms, augment, string='AUGMENT') # write geometry self._write_atomic_coordinates(f, atoms) # write pickle of Parameters pickle.dump(self.parameters, open(self.label + '/deMon_parameters.pckl', 'wb')) # write xyz file for good measure. ase.io.write(self.label + '/deMon_atoms.xyz', self.atoms) def read(self, restart_path): """Read parameters from directory restart_path.""" self.set_label(restart_path) if not op.exists(restart_path + '/deMon.inp'): raise ReadError('The restart_path file {0} does not exist' .format(restart_path)) parameters = pickle.load(open(restart_path + '/deMon_parameters.pckl', 'rb')) self.parameters = parameters self.atoms = self.deMon_inp_to_atoms(restart_path + '/deMon.inp') self.read_results() def _write_input_arguments(self, f): """Write directly given input-arguments.""" input_arguments = self.parameters['input_arguments'] # Early return if input_arguments is None: return for key, value in input_arguments.items(): self._write_argument(key, value, f) def _write_argument(self, key, value, f): """Write an argument to file. key : a string coresponding to the input keyword value : the arguemnts, can be a string, a number or a list f : and open file """ # for only one argument, write on same line if not isinstance(value, (tuple, list)): line = key.upper() line += ' ' + str(value).upper() f.write(line) f.write('\n') # for a list, write first argument on the first line, # then the rest on new lines else: line = key if not isinstance(value[0], (tuple, list)): for i in range(len(value)): line += ' ' + str(value[i].upper()) f.write(line) f.write('\n') else: for i in range(len(value)): for j in range(len(value[i])): line += ' ' + str(value[i][j]).upper() f.write(line) f.write('\n') line = '' def _write_atomic_coordinates(self, f, atoms): """Write atomic coordinates. Parameters: - f: An open file object. - atoms: An atoms object. """ f.write('#\n') f.write('# Atomic coordinates\n') f.write('#\n') f.write('GEOMETRY CARTESIAN ANGSTROM\n') for i in range(len(atoms)): xyz = atoms.get_positions()[i] chem_symbol = atoms.get_chemical_symbols()[i] chem_symbol += str(i + 1) # if tag is set to 1 then we have a ghost atom, # set nuclear charge to 0 if(atoms.get_tags()[i] == 1): nuc_charge = str(0) else: nuc_charge = str(atoms.get_atomic_numbers()[i]) mass = atoms.get_masses()[i] line = '{0:6s}'.format(chem_symbol).rjust(10) + ' ' line += '{0:.5f}'.format(xyz[0]).rjust(10) + ' ' line += '{0:.5f}'.format(xyz[1]).rjust(10) + ' ' line += '{0:.5f}'.format(xyz[2]).rjust(10) + ' ' line += '{0:5s}'.format(nuc_charge).rjust(10) + ' ' line += '{0:.5f}'.format(mass).rjust(10) + ' ' f.write(line) f.write('\n') # routine to write basis set inormation, including ecps and auxis def _write_basis(self, f, atoms, basis={}, string='BASIS'): """Write basis set, ECPs, AUXIS, or AUGMENT basis Parameters: - f: An open file object. - atoms: An atoms object. - basis: A dictionary specifying the basis set - string: 'BASIS', 'ECP','AUXIS' or 'AUGMENT' """ # basis for all atoms line = '{0}'.format(string).ljust(10) if 'all' in basis: default_basis = basis['all'] line += '({0})'.format(default_basis).rjust(16) f.write(line) f.write('\n') # basis for all atomic species chemical_symbols = atoms.get_chemical_symbols() chemical_symbols_set = set(chemical_symbols) for i in range(chemical_symbols_set.__len__()): symbol = chemical_symbols_set.pop() if symbol in basis: line = '{0}'.format(symbol).ljust(10) line += '({0})'.format(basis[symbol]).rjust(16) f.write(line) f.write('\n') # basis for individual atoms for i in range(len(atoms)): if i in basis: symbol = str(chemical_symbols[i]) symbol += str(i + 1) line = '{0}'.format(symbol).ljust(10) line += '({0})'.format(basis[i]).rjust(16) f.write(line) f.write('\n') # Analysis routines def read_results(self): """Read the results from output files.""" self.read_energy() self.read_forces(self.atoms) self.read_eigenvalues() self.read_dipole() self.read_xray() def read_energy(self): """Read energy from deMon's text-output file.""" with open(self.label + '/deMon.out', 'r') as f: text = f.read().upper() lines = iter(text.split('\n')) for line in lines: if line.startswith(' TOTAL ENERGY ='): self.results['energy'] = float(line.split()[-1]) * Hartree break else: raise RuntimeError def read_forces(self, atoms): """Read the forces from the deMon.out file.""" natoms = len(atoms) filename = self.label + '/deMon.out' if op.isfile(filename): with open(filename, 'r') as f: lines = f.readlines() # find line where the orbitals start flag_found = False for i in range(len(lines)): if lines[i].rfind('GRADIENTS OF TIME STEP 0 IN A.U.') > -1: start = i + 4 flag_found = True break if flag_found: self.results['forces'] = np.zeros((natoms, 3), float) for i in range(natoms): line = [s for s in lines[i + start].strip().split(' ') if len(s) > 0] f = -np.array([float(x) for x in line[2:5]]) self.results['forces'][i, :] = f * (Hartree / Bohr) def read_eigenvalues(self): """Read eigenvalues from the 'deMon.out' file.""" assert os.access(self.label + '/deMon.out', os.F_OK) # Read eigenvalues with open(self.label + '/deMon.out', 'r') as f: lines = f.readlines() # try PRINT MOE eig_alpha, occ_alpha = self.read_eigenvalues_one_spin( lines, 'ALPHA MO ENERGIES', 6) eig_beta, occ_beta = self.read_eigenvalues_one_spin( lines, 'BETA MO ENERGIES', 6) # otherwise try PRINT MOS if len(eig_alpha) == 0 and len(eig_beta) == 0: eig_alpha, occ_alpha = self.read_eigenvalues_one_spin( lines, 'ALPHA MO COEFFICIENTS', 5) eig_beta, occ_beta = self.read_eigenvalues_one_spin( lines, 'BETA MO COEFFICIENTS', 5) self.results['eigenvalues'] = np.array([eig_alpha, eig_beta]) * Hartree self.results['occupations'] = np.array([occ_alpha, occ_beta]) def read_eigenvalues_one_spin(self, lines, string, neigs_per_line): """Utility method for retreiving eigenvalues after the string "string" with neigs_per_line eigenvlaues written per line """ eig = [] occ = [] skip_line = False more_eigs = False # find line where the orbitals start for i in range(len(lines)): if lines[i].rfind(string) > -1: ii = i more_eigs = True break while more_eigs: # search for two empty lines in a row preceeding a line with # numbers for i in range(ii + 1, len(lines)): if len(lines[i].split()) == 0 and \ len(lines[i + 1].split()) == 0 and \ len(lines[i + 2].split()) > 0: ii = i + 2 break # read eigenvalues, occupations line = lines[ii].split() if len(line) < neigs_per_line: # last row more_eigs = False if line[0] != str(len(eig) + 1): more_eigs = False skip_line = True if not skip_line: line = lines[ii + 1].split() for l in line: eig.append(float(l)) line = lines[ii + 3].split() for l in line: occ.append(float(l)) ii = ii + 3 return eig, occ def read_dipole(self): """Read dipole moment.""" dipole = np.zeros(3) with open(self.label + '/deMon.out', 'r') as f: lines = f.readlines() for i in range(len(lines)): if lines[i].rfind('DIPOLE') > -1: dipole[0] = float(lines[i + 1].split()[3]) dipole[1] = float(lines[i + 2].split()[3]) dipole[2] = float(lines[i + 3].split()[3]) # debye to e*Ang self.results['dipole'] = dipole * 0.2081943482534 break def read_xray(self): """Read deMon.xry if present.""" filename = self.label + '/deMon.xry' if op.isfile(filename): with open(filename, 'r') as f: lines = f.readlines() mode = lines[0].split()[0] ntrans = int(lines[0].split()[1]) E_trans = [] osc_strength = [] trans_dip = [] for i in range(1, ntrans + 1): E_trans.append(float(lines[i].split()[0])) osc_strength.append( float(lines[i].split()[1].replace('D', 'e'))) dip1 = float(lines[i].split()[3].replace('D', 'e')) dip2 = float(lines[i].split()[4].replace('D', 'e')) dip3 = float(lines[i].split()[5].replace('D', 'e')) trans_dip.append([dip1, dip2, dip3]) xray_results = {'xray_mode': mode, 'ntrans': ntrans, 'E_trans': np.array(E_trans) * Hartree, 'osc_strength': np.array(osc_strength), # units? 'trans_dip': np.array(trans_dip)} # units? self.results['xray'] = xray_results def deMon_inp_to_atoms(self, filename): """Routine to read deMon.inp and convert it to an atoms object.""" with open(filename, 'r') as f: lines = f.readlines() # find line where geometry starts for i in range(len(lines)): if lines[i].rfind('GEOMETRY') > -1: if lines[i].rfind('ANGSTROM'): coord_units = 'Ang' elif lines.rfind('Bohr'): coord_units = 'Bohr' ii = i break chemical_symbols = [] xyz = [] atomic_numbers = [] masses = [] for i in range(ii + 1, len(lines)): try: line = lines[i].split() for symbol in ase.data.chemical_symbols: found = None if line[0].upper().rfind(symbol.upper()) > -1: found = symbol break if found is not None: chemical_symbols.append(found) else: break xyz.append([float(line[1]), float(line[2]), float(line[3])]) if len(line) > 4: atomic_numbers.append(int(line[4])) if len(line) > 5: masses.append(float(line[5])) except: raise RuntimeError if coord_units == 'Bohr': xyz = xyz * Bohr natoms = len(chemical_symbols) # set atoms object atoms = ase.Atoms(symbols=chemical_symbols, positions=xyz) # if atomic numbers were read in, set them if(len(atomic_numbers) == natoms): atoms.set_atomic_numbers(atomic_numbers) # if masses were read in, set them if(len(masses) == natoms): atoms.set_masses(masses) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/dftb.py000066400000000000000000000333611316323560300243520ustar00rootroot00000000000000"""This module defines an ASE interface to DftbPlus http://http://www.dftb-plus.info// http://www.dftb.org/ markus.kaukonen@iki.fi The file 'geom.out.gen' contains the input and output geometry and it will be updated during the dftb calculations. If restart == None it is assumed that a new input file 'dftb_hsd.in' will be written by ase using default keywords and the ones given by the user. If restart != None it is assumed that keywords are in file restart The keywords are given, for instance, as follows:: Hamiltonian_SCC ='YES', Hamiltonian_SCCTolerance = 1.0E-008, Hamiltonian_MaxAngularMomentum = '', Hamiltonian_MaxAngularMomentum_O = '"p"', Hamiltonian_MaxAngularMomentum_H = '"s"', Hamiltonian_InitialCharges_ = '', Hamiltonian_InitialCharges_AllAtomCharges_ = '', Hamiltonian_InitialCharges_AllAtomCharges_1 = -0.88081627, Hamiltonian_InitialCharges_AllAtomCharges_2 = 0.44040813, Hamiltonian_InitialCharges_AllAtomCharges_3 = 0.44040813, """ import os import numpy as np from ase.calculators.calculator import FileIOCalculator, kpts2mp class Dftb(FileIOCalculator): """ A dftb+ calculator with ase-FileIOCalculator nomenclature """ if 'DFTB_COMMAND' in os.environ: command = os.environ['DFTB_COMMAND'] + ' > PREFIX.out' else: command = 'dftb+ > PREFIX.out' implemented_properties = ['energy', 'forces', 'charges', 'stress'] def __init__(self, restart=None, ignore_bad_restart_file=False, label='dftb', atoms=None, kpts=None, run_manyDftb_steps=False, **kwargs): """Construct a DFTB+ calculator. run_manyDftb_steps: Logical True: many steps are run by DFTB+, False:a single force&energy calculation at given positions --------- Additional object (to be set by function embed) pcpot: PointCharge object An external point charge potential (only in qmmm) """ from ase.dft.kpoints import monkhorst_pack if 'DFTB_PREFIX' in os.environ: slako_dir = os.environ['DFTB_PREFIX'] else: slako_dir = './' # to run Dftb as energy and force calculator use # Driver_MaxSteps=0, if run_manyDftb_steps: # minimisation of molecular dynamics is run by native DFTB+ self.default_parameters = dict( Hamiltonian_='DFTB', Hamiltonian_SlaterKosterFiles_='Type2FileNames', Hamiltonian_SlaterKosterFiles_Prefix=slako_dir, Hamiltonian_SlaterKosterFiles_Separator='"-"', Hamiltonian_SlaterKosterFiles_Suffix='".skf"', Hamiltonian_MaxAngularMomentum_='') else: # using ase to get forces and energy only # (single point calculation) self.default_parameters = dict( Hamiltonian_='DFTB', Driver_='ConjugateGradient', Driver_MaxForceComponent='1E-4', Driver_MaxSteps=0, Hamiltonian_SlaterKosterFiles_='Type2FileNames', Hamiltonian_SlaterKosterFiles_Prefix=slako_dir, Hamiltonian_SlaterKosterFiles_Separator='"-"', Hamiltonian_SlaterKosterFiles_Suffix='".skf"', Hamiltonian_MaxAngularMomentum_='') self.pcpot = None self.lines = None self.atoms = None self.atoms_input = None self.outfilename = 'dftb.out' FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) self.kpts = kpts # kpoint stuff by ase if self.kpts is not None: mpgrid = kpts2mp(atoms, self.kpts) mp = monkhorst_pack(mpgrid) initkey = 'Hamiltonian_KPointsAndWeights' self.parameters[initkey + '_'] = '' for i, imp in enumerate(mp): key = initkey + '_empty' + str(i) self.parameters[key] = str(mp[i]).strip('[]') + ' 1.0' def write_dftb_in(self, filename): """ Write the innput file for the dftb+ calculation. Geometry is taken always from the file 'geo_end.gen'. """ outfile = open(filename, 'w') outfile.write('Geometry = GenFormat { \n') outfile.write(' <<< "geo_end.gen" \n') outfile.write('} \n') outfile.write(' \n') # --------MAIN KEYWORDS------- previous_key = 'dummy_' myspace = ' ' for key, value in sorted(self.parameters.items()): current_depth = key.rstrip('_').count('_') previous_depth = previous_key.rstrip('_').count('_') for my_backsclash in reversed( range(previous_depth - current_depth)): outfile.write(3 * (1 + my_backsclash) * myspace + '} \n') outfile.write(3 * current_depth * myspace) if key.endswith('_'): outfile.write(key.rstrip('_').rsplit('_')[-1] + ' = ' + str(value) + '{ \n') elif key.count('_empty') == 1: outfile.write(str(value) + ' \n') else: outfile.write(key.rsplit('_')[-1] + ' = ' + str(value) + ' \n') if self.pcpot is not None and ('DFTB' in str(value)): outfile.write(' ElectricField = { \n') outfile.write(' PointCharges = { \n') outfile.write( ' CoordsAndCharges [Angstrom] = DirectRead { \n') outfile.write(' Records = ' + str(len(self.pcpot.mmcharges)) + ' \n') outfile.write( ' File = "dftb_external_charges.dat" \n') outfile.write(' } \n') outfile.write(' } \n') outfile.write(' } \n') previous_key = key current_depth = key.rstrip('_').count('_') for my_backsclash in reversed(range(current_depth)): outfile.write(3 * my_backsclash * myspace + '} \n') # output to 'results.tag' file (which has proper formatting) outfile.write('Options { \n') outfile.write(' WriteResultsTag = Yes \n') outfile.write('} \n') outfile.write('ParserOptions { \n') outfile.write(' IgnoreUnprocessedNodes = Yes \n') outfile.write('} \n') outfile.close() def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() return changed_parameters def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) # Ignore unit cell for molecules: if not atoms.pbc.any() and 'cell' in system_changes: system_changes.remove('cell') if self.pcpot and self.pcpot.mmpositions is not None: system_changes.append('positions') return system_changes def write_input(self, atoms, properties=None, system_changes=None): from ase.io import write FileIOCalculator.write_input( self, atoms, properties, system_changes) self.write_dftb_in(os.path.join(self.directory, 'dftb_in.hsd')) write(os.path.join(self.directory, 'geo_end.gen'), atoms) # self.atoms is none until results are read out, # then it is set to the ones at writing input self.atoms_input = atoms self.atoms = None if self.pcpot: self.pcpot.write_mmcharges('dftb_external_charges.dat') def read_results(self): """ all results are read from results.tag file It will be destroyed after it is read to avoid reading it once again after some runtime error """ from ase.units import Hartree, Bohr myfile = open(os.path.join(self.directory, 'results.tag'), 'r') self.lines = myfile.readlines() myfile.close() self.atoms = self.atoms_input charges = self.read_charges() self.results['charges'] = charges energy = 0.0 forces = None energy = self.read_energy() forces = self.read_forces() self.results['energy'] = energy self.results['forces'] = forces self.mmpositions = None # stress stuff begins sstring = 'stress' have_stress = False stress = list() for iline, line in enumerate(self.lines): if sstring in line: have_stress = True start = iline + 1 end = start + 3 for i in range(start, end): cell = [float(x) for x in self.lines[i].split()] stress.append(cell) if have_stress: stress = -np.array(stress) * Hartree / Bohr**3 elif not have_stress: stress = np.zeros((3, 3)) self.results['stress'] = stress # stress stuff ends # calculation was carried out with atoms written in write_input os.remove(os.path.join(self.directory, 'results.tag')) def read_energy(self): """Read Energy from dftb output file (results.tag).""" from ase.units import Hartree # Energy line index for iline, line in enumerate(self.lines): estring = 'total_energy' if line.find(estring) >= 0: index_energy = iline + 1 break try: return float(self.lines[index_energy].split()[0]) * Hartree except: raise RuntimeError('Problem in reading energy') def read_forces(self): """Read Forces from dftb output file (results.tag).""" from ase.units import Hartree, Bohr # Force line indexes for iline, line in enumerate(self.lines): fstring = 'forces ' if line.find(fstring) >= 0: index_force_begin = iline + 1 line1 = line.replace(':', ',') index_force_end = iline + 1 + \ int(line1.split(',')[-1]) break try: gradients = [] for j in range(index_force_begin, index_force_end): word = self.lines[j].split() gradients.append([float(word[k]) for k in range(0, 3)]) return np.array(gradients) * Hartree / Bohr except: raise RuntimeError('Problem in reading forces') def read_charges(self): """Get partial charges on atoms in case we cannot find charges they are set to None """ infile = open(os.path.join(self.directory, 'detailed.out'), 'r') lines = infile.readlines() infile.close() qm_charges = [] for n, line in enumerate(lines): if ('Atom' and 'Net charge' in line): chargestart = n + 1 break else: # print('Warning: did not find DFTB-charges') # print('This is ok if flag SCC=NO') return None lines1 = lines[chargestart:(chargestart + len(self.atoms))] for line in lines1: qm_charges.append(float(line.split()[-1])) return np.array(qm_charges) def get_charges(self, atoms): """ Get the calculated charges this is inhereted to atoms object """ if 'charges' in self.results: return self.results['charges'] else: return None def embed(self, mmcharges=None, directory='./'): """Embed atoms in point-charges (mmcharges) """ self.pcpot = PointChargePotential(mmcharges, self.directory) return self.pcpot class PointChargePotential: def __init__(self, mmcharges, directory='./'): """Point-charge potential for DFTB+. """ self.mmcharges = mmcharges self.directory = directory self.mmpositions = None self.mmforces = None def set_positions(self, mmpositions): self.mmpositions = mmpositions def set_charges(self, mmcharges): self.mmcharges = mmcharges def write_mmcharges(self, filename='dftb_external_charges.dat'): """ mok all write external charges as monopoles for dftb+. """ if self.mmcharges is None: print("DFTB: Warning: not writing exernal charges ") return charge_file = open(os.path.join(self.directory, filename), 'w') for [pos, charge] in zip(self.mmpositions, self.mmcharges): [x, y, z] = pos charge_file.write('%12.6f %12.6f %12.6f %12.6f \n' % (x, y, z, charge)) charge_file.close() def get_forces(self, calc, get_forces=False): """ returns forces on point charges if the flag get_forces=True """ if get_forces: return self.read_forces_on_pointcharges() else: return np.zeros_like(self.mmpositions) def read_forces_on_pointcharges(self): """Read Forces from dftb output file (results.tag).""" from ase.units import Hartree, Bohr infile = open(os.path.join(self.directory, 'detailed.out'), 'r') lines = infile.readlines() infile.close() external_forces = [] for n, line in enumerate(lines): if ('Forces on external charges' in line): chargestart = n + 1 break else: raise RuntimeError( 'Problem in reading forces on MM external-charges') lines1 = lines[chargestart:(chargestart + len(self.mmcharges))] for line in lines1: external_forces.append( [float(i) for i in line.split()]) return np.array(external_forces) * Hartree / Bohr ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/dftd3.py000066400000000000000000000460561316323560300244440ustar00rootroot00000000000000import os from warnings import warn import subprocess import numpy as np from ase.calculators.calculator import (Calculator, FileIOCalculator, all_changes, PropertyNotImplementedError) from ase.units import Bohr, Hartree from ase.io.xyz import write_xyz from ase.io.vasp import write_vasp from ase.parallel import paropen, world, broadcast class DFTD3(FileIOCalculator): """Grimme DFT-D3 calculator""" name = 'DFTD3' dftd3_implemented_properties = ['energy', 'forces', 'stress'] damping_methods = ['zero', 'bj', 'zerom', 'bjm'] default_parameters = {'xc': None, # PBE if no custom damping parameters 'grad': True, # calculate forces/stress 'abc': False, # ATM 3-body contribution 'cutoff': 95 * Bohr, # Cutoff for 2-body calcs 'cnthr': 40 * Bohr, # Cutoff for 3-body and CN calcs 'old': False, # use old DFT-D2 method instead 'damping': 'zero', # Default to zero-damping 'tz': False, # 'triple zeta' alt. parameters 's6': None, # damping parameters start here 'sr6': None, 's8': None, 'sr8': None, 'alpha6': None, 'a1': None, 'a2': None, 'beta': None} dftd3_flags = ('grad', 'pbc', 'abc', 'old', 'tz') def __init__(self, label='ase_dftd3', # Label for dftd3 output files command=None, # Command for running dftd3 dft=None, # DFT calculator atoms=None, **kwargs): self.dft = None FileIOCalculator.__init__(self, restart=None, ignore_bad_restart_file=False, label=label, atoms=atoms, command=command, dft=dft, **kwargs) # If the user is running DFTD3 with another DFT calculator, such as # GPAW, the DFT portion of the calculation should take much longer. # If we only checked for a valid command in self.calculate, the DFT # calculation would run before we realize that we don't know how # to run dftd3. So, we check here at initialization time, to avoid # wasting the user's time. if self.command is None: raise RuntimeError("Don't know how to run DFTD3! Please " 'set the ASE_DFTD3_COMMAND environment ' 'variable, or explicitly pass the path ' 'to the dftd3 executable to the D3 calculator!') if isinstance(self.command, str): self.command = self.command.split() def set(self, **kwargs): changed_parameters = {} # Convert from 'func' keyword to 'xc'. Internally, we only store # 'xc', but 'func' is also allowed since it is consistent with the # CLI dftd3 interface. if kwargs.get('func'): if kwargs.get('xc') and kwargs['func'] != kwargs['xc']: raise RuntimeError('Both "func" and "xc" were provided! ' 'Please provide at most one of these ' 'two keywords. The preferred keyword ' 'is "xc"; "func" is allowed for ' 'consistency with the CLI dftd3 ' 'interface.') if kwargs['func'] != self.parameters['xc']: changed_parameters['xc'] = kwargs['func'] self.parameters['xc'] = kwargs['func'] # dftd3 only implements energy, forces, and stresses (for periodic # systems). But, if a DFT calculator is attached, and that calculator # implements more properties, we will expose those properties too. if 'dft' in kwargs: dft = kwargs.pop('dft') if dft is not self.dft: changed_parameters['dft'] = dft if dft is None: self.implemented_properties = self.dftd3_implemented_properties else: self.implemented_properties = dft.implemented_properties self.dft = dft # If the user did not supply an XC functional, but did attach a # DFT calculator that has XC set, then we will use that. Note that # DFTD3's spelling convention is different from most, so in general # you will have to explicitly set XC for both the DFT calculator and # for DFTD3 (and DFTD3's will likely be spelled differently...) if self.parameters['xc'] is None and self.dft is not None: if self.dft.parameters.get('xc'): self.parameters['xc'] = self.dft.parameters['xc'] # Check for unknown arguments. Don't raise an error, just let the # user know that we don't understand what they're asking for. unknown_kwargs = set(kwargs) - set(self.default_parameters) if unknown_kwargs: warn('WARNING: Ignoring the following unknown keywords: {}' ''.format(', '.join(unknown_kwargs))) changed_parameters.update(FileIOCalculator.set(self, **kwargs)) # Ensure damping method is valid (zero, bj, zerom, bjm). if self.parameters['damping'] is not None: self.parameters['damping'] = self.parameters['damping'].lower() if self.parameters['damping'] not in self.damping_methods: raise ValueError('Unknown damping method {}!' ''.format(self.parameters['damping'])) # d2 only is valid with 'zero' damping elif self.parameters['old'] and self.parameters['damping'] != 'zero': raise ValueError('Only zero-damping can be used with the D2 ' 'dispersion correction method!') # If cnthr (cutoff for three-body and CN calculations) is greater # than cutoff (cutoff for two-body calculations), then set the former # equal to the latter, since that doesn't make any sense. if self.parameters['cnthr'] > self.parameters['cutoff']: warn('WARNING: CN cutoff value of {cnthr} is larger than ' 'regular cutoff value of {cutoff}! Reducing CN cutoff ' 'to {cutoff}.' ''.format(cnthr=self.parameters['cnthr'], cutoff=self.parameters['cutoff'])) self.parameters['cnthr'] = self.parameters['cutoff'] # If you only care about the energy, gradient calculations (forces, # stresses) can be bypassed. This will greatly speed up calculations # in dense 3D-periodic systems with three-body corrections. But, we # can no longer say that we implement forces and stresses. if not self.parameters['grad']: for val in ['forces', 'stress']: if val in self.implemented_properties: self.implemented_properties.remove(val) # Check to see if we're using custom damping parameters. zero_damppars = {'s6', 'sr6', 's8', 'sr8', 'alpha6'} bj_damppars = {'s6', 'a1', 's8', 'a2', 'alpha6'} zerom_damppars = {'s6', 'sr6', 's8', 'beta', 'alpha6'} all_damppars = zero_damppars | bj_damppars | zerom_damppars self.custom_damp = False damping = self.parameters['damping'] damppars = set(kwargs) & all_damppars if damppars: self.custom_damp = True if damping == 'zero': valid_damppars = zero_damppars elif damping in ['bj', 'bjm']: valid_damppars = bj_damppars elif damping == 'zerom': valid_damppars = zerom_damppars # If some but not all damping parameters are provided for the # selected damping method, raise an error. We don't have "default" # values for damping parameters, since those are stored in the # dftd3 executable & depend on XC functional. missing_damppars = valid_damppars - damppars if missing_damppars and missing_damppars != valid_damppars: raise ValueError('An incomplete set of custom damping ' 'parameters for the {} damping method was ' 'provided! Expected: {}; got: {}' ''.format(damping, ', '.join(valid_damppars), ', '.join(damppars))) # If a user provides damping parameters that are not used in the # selected damping method, let them know that we're ignoring them. # If the user accidentally provided the *wrong* set of parameters, # (e.g., the BJ parameters when they are using zero damping), then # the previous check will raise an error, so we don't need to # worry about that here. if damppars - valid_damppars: warn('WARNING: The following damping parameters are not ' 'valid for the {} damping method and will be ignored: {}' ''.format(damping, ', '.join(damppars))) # The default XC functional is PBE, but this is only set if the user # did not provide their own value for xc or any custom damping # parameters. if self.parameters['xc'] and self.custom_damp: warn('WARNING: Custom damping parameters will be used ' 'instead of those parameterized for {}!' ''.format(self.parameters['xc'])) if changed_parameters: self.results.clear() return changed_parameters def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): # We don't call FileIOCalculator.calculate here, because that method # calls subprocess.call(..., shell=True), which we don't want to do. # So, we reproduce some content from that method here. Calculator.calculate(self, atoms, properties, system_changes) # If a parameter file exists in the working directory, delete it # first. If we need that file, we'll recreate it later. localparfile = os.path.join(self.directory, '.dftd3par.local') if os.path.isfile(localparfile): os.remove(localparfile) # Write XYZ or POSCAR file and .dftd3par.local file if we are using # custom damping parameters. self.write_input(self.atoms, properties, system_changes) command = self._generate_command() # Finally, call dftd3 and parse results. with paropen(self.label + '.out', 'w') as f: if world.rank == 0: # DFTD3 does not run in parallel # so we only need it to run on 1 core errorcode = subprocess.call(command, cwd=self.directory, stdout=f) else: errorcode = None world.barrier() # Wait for the call() to complete on the master node errorcode = broadcast(errorcode, root=0) if errorcode: raise RuntimeError('%s returned an error: %d' % (self.name, errorcode)) self.read_results() def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties=properties, system_changes=system_changes) # dftd3 can either do fully 3D periodic or non-periodic calculations. # It cannot do calculations that are only periodic in 1 or 2 # dimensions. If the atoms object is periodic in only 1 or 2 # dimensions, then treat it as a fully 3D periodic system, but warn # the user. pbc = False if any(atoms.pbc): if not all(atoms.pbc): warn('WARNING! dftd3 can only calculate the dispersion energy ' 'of non-periodic or 3D-periodic systems. We will treat ' 'this system as 3D-periodic!') pbc = True if pbc: fname = os.path.join(self.directory, '{}.POSCAR'.format(self.label)) write_vasp(fname, atoms) else: fname = os.path.join(self.directory, '{}.xyz'.format(self.label)) write_xyz(fname, atoms, plain=True) # Generate custom damping parameters file. This is kind of ugly, but # I don't know of a better way of doing this. if self.custom_damp: damppars = [] # s6 is always first damppars.append(str(float(self.parameters['s6']))) # sr6 is the second value for zero{,m} damping, a1 for bj{,m} if self.parameters['damping'] in ['zero', 'zerom']: damppars.append(str(float(self.parameters['sr6']))) elif self.parameters['damping'] in ['bj', 'bjm']: damppars.append(str(float(self.parameters['a1']))) # s8 is always third damppars.append(str(float(self.parameters['s8']))) # sr8 is fourth for zero, a2 for bj{,m}, beta for zerom if self.parameters['damping'] == 'zero': damppars.append(str(float(self.parameters['sr8']))) elif self.parameters['damping'] in ['bj', 'bjm']: damppars.append(str(float(self.parameters['a2']))) elif self.parameters['damping'] == 'zerom': damppars.append(str(float(self.parameters['beta']))) # alpha6 is always fifth damppars.append(str(int(self.parameters['alpha6']))) # last is the version number if self.parameters['old']: damppars.append('2') elif self.parameters['damping'] == 'zero': damppars.append('3') elif self.parameters['damping'] == 'bj': damppars.append('4') elif self.parameters['damping'] == 'zerom': damppars.append('5') elif self.parameters['damping'] == 'bjm': damppars.append('6') damp_fname = os.path.join(self.directory, '.dftd3par.local') with paropen(damp_fname, 'w') as f: f.write(' '.join(damppars)) def read_results(self): # parse the energy outname = os.path.join(self.directory, self.label + '.out') with open(outname, 'r') as f: for line in f: if line.startswith(' program stopped'): if 'functional name unknown' in line: raise RuntimeError('Unknown DFTD3 functional name ' '"{}". Please check the dftd3.f ' 'source file for the list of ' 'known functionals and their ' 'spelling.' ''.format(self.parameters['xc'])) raise RuntimeError('dftd3 failed! Please check the {} ' 'output file and report any errors ' 'to the ASE developers.' ''.format(outname)) if line.startswith(' Edisp'): e_dftd3 = float(line.split()[3]) * Hartree self.results['energy'] = e_dftd3 self.results['free_energy'] = e_dftd3 break else: raise RuntimeError('Could not parse energy from dftd3 output, ' 'see file {}'.format(outname)) # FIXME: Calculator.get_potential_energy() simply inspects # self.results for the free energy rather than calling # Calculator.get_property('free_energy'). For example, GPAW does # not actually present free_energy as an implemented property, even # though it does calculate it. So, we are going to add in the DFT # free energy to our own results if it is present in the attached # calculator. TODO: Fix the Calculator interface!!! if self.dft is not None: try: efree = self.dft.get_potential_energy( force_consistent=True) self.results['free_energy'] += efree except PropertyNotImplementedError: pass if self.parameters['grad']: # parse the forces forces = np.zeros((len(self.atoms), 3)) forcename = os.path.join(self.directory, 'dftd3_gradient') with open(forcename, 'r') as f: for i, line in enumerate(f): forces[i] = np.array([float(x) for x in line.split()]) self.results['forces'] = -forces * Hartree / Bohr if any(self.atoms.pbc): # parse the stress tensor stress = np.zeros((3, 3)) stressname = os.path.join(self.directory, 'dftd3_cellgradient') with open(stressname, 'r') as f: for i, line in enumerate(f): stress[i] = np.array([float(x) for x in line.split()]) stress *= Hartree / Bohr / self.atoms.get_volume() stress = np.dot(stress, self.atoms.cell.T) self.results['stress'] = stress.flat[[0, 4, 8, 5, 2, 1]] def get_property(self, name, atoms=None, allow_calculation=True): dft_result = None if self.dft is not None: dft_result = self.dft.get_property(name, atoms, allow_calculation) dftd3_result = FileIOCalculator.get_property(self, name, atoms, allow_calculation) if dft_result is None and dftd3_result is None: return None elif dft_result is None: return dftd3_result elif dftd3_result is None: return dft_result else: return dft_result + dftd3_result def _generate_command(self): command = self.command if any(self.atoms.pbc): command.append(self.label + '.POSCAR') else: command.append(self.label + '.xyz') if not self.custom_damp: xc = self.parameters.get('xc') if xc is None: xc = 'pbe' command += ['-func', xc.lower()] for arg in self.dftd3_flags: if self.parameters.get(arg): command.append('-' + arg) if any(self.atoms.pbc): command.append('-pbc') command += ['-cnthr', str(self.parameters['cnthr'] / Bohr)] command += ['-cutoff', str(self.parameters['cutoff'] / Bohr)] if not self.parameters['old']: command.append('-' + self.parameters['damping']) return command ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/dmol.py000066400000000000000000000534661316323560300243760ustar00rootroot00000000000000"""This module defines an ASE interface to DMol3. Contacts -------- Adam Arvidsson Erik Fransson Anders Hellman DMol3 environment variables ---------------------------- DMOL_COMMAND should point to the RunDmol script and specify the number of cores to prallelize over export DMOL_COMMAND="./RunDmol.sh -np 16" Example -------- >>> from ase.build import bulk >>> from ase.calculators import DMol3 >>> atoms = bulk('Al','fcc') >>> calc = DMol3() >>> atoms.set_calculator(calc) >>> print 'Potential energy %5.5f eV' % atoms.get_potential_energy() DMol3 calculator functionality ------------------------------- This calculator does support all the functionality in DMol3. Firstly this calculator is limited to only handling either fully periodic structures (pbc = [1,1,1]) or non periodic structures (pbc=[0,0,0]). Internal relaxations are not supported by the calculator, only support for energy and forces is implemented. Reading eigenvalues and kpts are supported. Be careful with kpts and their directions (see internal coordinates below). Outputting the full electron density or specific bands to .grd files can be acheived with the plot command. The .grd files can be converted to the cube format using grd_to_cube(). DMol3 internal coordinates --------------------------- DMol3 may change the atomic positions / cell vectors in order to satisfy certain criterion ( e.g. molecule symmetry axis along z ). Specifically this happens when using Symmetry on/auto. This means the forces read from .grad will be in a different coordinates system compared to the atoms object used. To solve this the rotation matrix that converts the dmol coordinate system to the ase coordinate system is found and applied to the forces. For non periodic structures (pbc=[0,0,0]) the rotation matrix can be directly parsed from the .rot file. For fully periodic structures the rotation matrix is found by reading the cell vectors and positions used by dmol and then solving the matrix problem DMol_atoms * rot_mat = ase_atoms DMol3 files ------------ The supported DMol3 file formats are: car structure file - Angstrom and cellpar description of cell. incoor structure file - Bohr and cellvector describption of cell. Note: incoor file not used if car file present. outmol outfile from DMol3 - atomic units (Bohr and Hartree) grad outfile for forces from DMol3 - forces in Hartree/Bohr grd outfile for orbitals from DMol3 - cellpar in Angstrom """ from __future__ import print_function import os import re import numpy as np from ase import Atoms from ase.io import read from ase.io.dmol import write_dmol_car, write_dmol_incoor from ase.units import Hartree, Bohr from ase.calculators.calculator import FileIOCalculator, Parameters, ReadError class DMol3(FileIOCalculator): """ DMol3 calculator object. """ implemented_properties = ['energy', 'forces'] default_parameters = {'functional': 'pbe', 'symmetry': 'on'} if 'DMOL_COMMAND' in os.environ: command = os.environ['DMOL_COMMAND'] + ' PREFIX > PREFIX.out' else: command = None def __init__(self, restart=None, ignore_bad_restart_file=False, label='dmol_calc/tmp', atoms=None, **kwargs): """ Construct DMol3 calculator. """ FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) # tracks if DMol transformed coordinate system self.internal_transformation = False def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms, properties=None, system_changes=None): if not (np.all(atoms.pbc) or not np.any(atoms.pbc)): raise RuntimeError('PBC must be all true or all false') self.clean() # Remove files from old run self.internal_transformation = False self.ase_positions = atoms.positions.copy() self.ase_cell = atoms.cell.copy() FileIOCalculator.write_input(self, atoms, properties, system_changes) if np.all(atoms.pbc): write_dmol_incoor(self.label + '.incoor', atoms) elif not np.any(atoms.pbc): write_dmol_car(self.label + '.car', atoms) self.write_input_file() self.parameters.write(self.label + '.parameters.ase') def write_input_file(self): """ Writes the input file. """ f = open(self.label + '.input', 'w') f.write('%-32s %s\n' % ('calculate', 'gradient')) # if no key about eigs f.write('%-32s %s\n' % ('print', 'eigval_last_it')) for key, value in self.parameters.items(): if isinstance(value, str): f.write('%-32s %s\n' % (key, value)) elif isinstance(value, (list, tuple)): for val in value: f.write('%-32s %s\n' % (key, val)) else: f.write('%-32s %r\n' % (key, value)) def read(self, label): FileIOCalculator.read(self, label) geometry = self.label + '.car' output = self.label + '.outmol' force = self.label + '.grad' for filename in [force, output, geometry]: if not os.path.isfile(filename): raise ReadError self.atoms = read(geometry) self.parameters = Parameters.read(self.label + 'parameters.ase') self.read_results() def read_results(self): finished, message = self.finished_sucessfully() if not finished: raise RuntimeError('DMol3 run failed, see outmol file for' ' more info\n\n%s' % message) self.find_dmol_transformation() self.read_energy() self.read_forces() def finished_sucessfully(self): """ Reads outmol file and checks if job completed or failed. Returns ------- finished (bool): True if job completed, False if something went wrong message (str): If job failed message contains parsed errors, else empty """ finished = False message = "" for line in open(self.label + '.outmol', 'r'): if line.rfind('Message: DMol3 job finished successfully') > -1: finished = True if line.startswith('Error'): message += line return finished, message def find_dmol_transformation(self, tol=1e-4): """Finds rotation matrix that takes us from DMol internal coordinates to ase coordinates. For pbc = [False, False, False] the rotation matrix is parsed from the .rot file, if this file doesnt exist no rotation is needed. For pbc = [True, True, True] the Dmol internal cell vectors and positions are parsed and compared to self.ase_cell self.ase_positions. The rotation matrix can then be found by a call to the helper function find_transformation(atoms1, atoms2) If a rotation matrix is needed then self.internal_transformation is set to True and the rotation matrix is stored in self.rotation_matrix Parameters ---------- tol (float): tolerance for check if positions and cell are the same """ if np.all(self.atoms.pbc): # [True, True, True] dmol_atoms = self.read_atoms_from_outmol() if (np.linalg.norm(self.atoms.positions - dmol_atoms.positions) < tol) and (np.linalg.norm(self.atoms.cell - dmol_atoms.cell) < tol): self.internal_transformation = False else: R, err = find_transformation(dmol_atoms, self.atoms) if abs(np.linalg.det(R) - 1.0) > tol: raise RuntimeError('Error: transformation matrix does' ' not have determinant 1.0') if err < tol: self.internal_transformation = True self.rotation_matrix = R else: raise RuntimeError('Error: Could not find dmol' ' coordinate transformation') elif not np.any(self.atoms.pbc): # [False,False,False] try: data = np.loadtxt(self.label + '.rot') except IOError: self.internal_transformation = False else: self.internal_transformation = True self.rotation_matrix = data[1:].transpose() def read_atoms_from_outmol(self): """ Reads atomic positions and cell from outmol file and returns atoms object. If no cell vectors are found in outmol the cell is set to np.eye(3) and pbc 000. Formatting for cell in outmol : translation vector [a0] 1 5.1 0.0 5.1 translation vector [a0] 2 5.1 5.1 0.0 translation vector [a0] 3 0.0 5.1 5.1 Formatting for positions in outmol: df ATOMIC COORDINATES (au) df x y z df Si 0.0 0.0 0.0 df Si 1.3 3.5 2.2 df binding energy -0.2309046Ha Returns ------- atoms (Atoms object): read atoms object """ lines = open(self.label + '.outmol', 'r').readlines() found_cell = False cell = np.zeros((3, 3)) symbols = [] positions = [] pattern_translation_vectors = re.compile(r'\s+translation\s+vector') pattern_atomic_coordinates = re.compile(r'df\s+ATOMIC\s+COORDINATES') for i, line in enumerate(lines): if pattern_translation_vectors.match(line): cell[int(line.split()[3]) - 1, :] = \ np.array([float(x) for x in line.split()[-3:]]) found_cell = True if pattern_atomic_coordinates.match(line): for ind, j in enumerate(range(i + 2, i + 2 + len(self.atoms))): flds = lines[j].split() symbols.append(flds[1]) positions.append(flds[2:5]) atoms = Atoms(symbols=symbols, positions=positions, cell=cell) atoms.positions *= Bohr atoms.cell *= Bohr if found_cell: atoms.pbc = [True, True, True] atoms.wrap() else: atoms.pbc = [False, False, False] return atoms def read_energy(self): """ Find and return last occurrence of Ef in outmole file. """ energy_regex = re.compile(r'^Ef\s+(\S+)Ha') found = False for line in open(self.label + '.outmol', 'r'): match = energy_regex.match(line) if match: energy = float(match.group(1)) found = True if not found: raise RuntimeError('Could not read energy from outmol') self.results['energy'] = energy * Hartree def read_forces(self): """ Read forces from .grad file. Applies self.rotation_matrix if self.internal_transformation is True. """ lines = open(self.label + '.grad', 'r').readlines() forces = [] for i, line in enumerate(lines): if line.startswith('$gradients'): for j in range(i + 1, i + 1 + len(self.atoms)): # force = - grad(Epot) forces.append(np.array( [-float(x) for x in lines[j].split()[1:4]])) forces = np.array(forces) * Hartree / Bohr if self.internal_transformation: forces = np.dot(forces, self.rotation_matrix) self.results['forces'] = forces def get_eigenvalues(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'eigenvalues') def get_occupations(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'occupations') def get_k_point_weights(self): return self.read_kpts(mode='k_point_weights') def get_bz_k_points(self): raise NotImplementedError def get_ibz_k_points(self): return self.read_kpts(mode='ibz_k_points') def get_spin_polarized(self): return self.read_spin_polarized() def get_fermi_level(self): return self.read_fermi() def get_energy_contributions(self): return self.read_energy_contributions() def get_xc_functional(self): return self.parameters['functional'] def read_eigenvalues(self, kpt=0, spin=0, mode='eigenvalues'): """Reads eigenvalues from .outmol file. This function splits into two situations: 1. We have no kpts just the raw eigenvalues ( Gamma point ) 2. We have eigenvalues for each k-point If calculation is spin_restricted then all eigenvalues will be returned no matter what spin parameter is set to. If calculation has no kpts then all eigenvalues will be returned no matter what kpts parameter is set to. Note DMol does usually NOT print all unoccupied eigenvalues. Meaning number of eigenvalues for different kpts can vary. """ assert mode in ['eigenvalues', 'occupations'] lines = open(self.label + '.outmol', 'r').readlines() pattern_kpts = re.compile(r'Eigenvalues for kvector\s+%d' % (kpt + 1)) for n, line in enumerate(lines): # 1. We have no kpts if line.split() == ['state', 'eigenvalue', 'occupation']: spin_key = '+' if self.get_spin_polarized(): if spin == 1: spin_key = '-' val_index = -2 if mode == 'occupations': val_index = -1 values = [] m = n + 3 while True: if lines[m].strip() == '': break flds = lines[m].split() if flds[1] == spin_key: values.append(float(flds[val_index])) m += 1 return np.array(values) # 2. We have kpts if pattern_kpts.match(line): val_index = 3 if self.get_spin_polarized(): if spin == 1: val_index = 6 if mode == 'occupations': val_index += 1 values = [] m = n + 2 while True: if lines[m].strip() == '': break values.append(float(lines[m].split()[val_index])) m += 1 return np.array(values) return None def read_kpts(self, mode='ibz_k_points'): """ Returns list of kpts coordinates or kpts weights. """ assert mode in ['ibz_k_points', 'k_point_weights'] lines = open(self.label + '.outmol', 'r').readlines() values = [] for n, line in enumerate(lines): if line.startswith('Eigenvalues for kvector'): if mode == 'ibz_k_points': values.append([float(k_i) for k_i in lines[n].split()[4:7]]) if mode == 'k_point_weights': values.append(float(lines[n].split()[8])) if values == []: return None return values def read_spin_polarized(self): """Reads, from outmol file, if calculation is spin polarized.""" lines = open(self.label + '.outmol', 'r').readlines() for n, line in enumerate(lines): if line.rfind('Calculation is Spin_restricted') > -1: return False if line.rfind('Calculation is Spin_unrestricted') > -1: return True raise IOError('Could not read spin restriction from outmol') def read_fermi(self): """Reads the Fermi level. Example line in outmol: Fermi Energy: -0.225556 Ha -6.138 eV xyz text """ lines = open(self.label + '.outmol', 'r').readlines() pattern_fermi = re.compile(r'Fermi Energy:\s+(\S+)\s+Ha') for line in lines: m = pattern_fermi.match(line) if m: return float(m.group(1)) * Hartree return None def read_energy_contributions(self): """Reads the different energy contributions.""" lines = open(self.label + '.outmol', 'r').readlines() energies = dict() for n, line in enumerate(lines): if line.startswith('Energy components'): m = n + 1 while not lines[m].strip() == '': energies[lines[m].split('=')[0].strip()] = \ float(re.findall( r"[-+]?\d*\.\d+|\d+", lines[m])[0]) * Hartree m += 1 return energies def clean(self): """ Cleanup after dmol calculation Only removes dmol files in self.directory, does not remove the directory itself """ file_extensions = ['basis', 'car', 'err', 'grad', 'input', 'inatm', 'incoor', 'kpoints', 'monitor', 'occup', 'outmol', 'outatom', 'rot', 'sdf', 'sym', 'tpotl', 'tpdensk', 'torder', 'out', 'parameters.ase'] files_to_clean = ['DMol3.log', 'stdouterr.txt', 'mpd.hosts'] files = [os.path.join(self.directory, f) for f in files_to_clean] files += [''.join((self.label, '.', ext)) for ext in file_extensions] for f in files: try: os.remove(f) except OSError: pass # Helper functions # ------------------ def find_transformation(atoms1, atoms2, verbose=False, only_cell=False): """ Solves Ax = B where A and B are cell and positions from atoms objects. Uses numpys least square solver to solve the problem Ax = B where A and B are cell vectors and positions for atoms1 and atoms2 respectively. Parameters ---------- atoms1 (Atoms object): First atoms object (A) atoms2 (Atoms object): Second atoms object (B) verbose (bool): If True prints for each i A[i], B[i], Ax[i] only_cell (bool): If True only cell in used, otherwise cell and positions. Returns ------- x (np.array((3,3))): Least square solution to Ax = B error (float): The error calculated as np.linalg.norm(Ax-b) """ if only_cell: N = 3 elif atoms1.get_number_of_atoms() != atoms2.get_number_of_atoms(): raise RuntimeError('Atoms object must be of same length') else: N = atoms1.get_number_of_atoms() + 3 # Setup matrices A and B A = np.zeros((N, 3)) B = np.zeros((N, 3)) A[0:3, :] = atoms1.cell B[0:3, :] = atoms2.cell if not only_cell: A[3:, :] = atoms1.positions B[3:, :] = atoms2.positions # Solve least square problem Ax = B lstsq_fit = np.linalg.lstsq(A, B) x = lstsq_fit[0] error = np.linalg.norm(np.dot(A, x) - B) # Print comparision between A, B and Ax if verbose: print('%17s %33s %35s %24s' % ('A', 'B', 'Ax', '|Ax-b|')) for a, b in zip(A, B): ax = np.dot(a, x) loss = np.linalg.norm(ax - b) print('(', end='') for a_i in a: print('%8.5f' % a_i, end='') print(') (', end='') for b_i in b: print('%8.5f ' % b_i, end='') print(') (', end='') for ax_i in ax: print('%8.5f ' % ax_i, end='') print(') %8.5f' % loss) return x, error def grd_to_file(atoms, grd_file, new_file): """ Reads grd_file and converts data to cube format and writes to cube_file. Note: content of grd_file and atoms object are assumed to match with the same orientation. Parameters ----------- atoms (Atoms object): atoms object grd_file data is for grd_file (str): filename of .grd file new_file (str): filename to write grd-data to, must be ASE format that supports data argument """ from ase.io import write atoms_copy = atoms.copy() data, cell, origin = read_grd(grd_file) atoms_copy.cell = cell atoms_copy.positions += origin write(new_file, atoms_copy, data=data) def read_grd(filename): """ Reads .grd file Notes ----- origin_xyz is offset with half a grid point in all directions to be compatible with the cube format Periodic systems is not guaranteed to be oriented correctly """ from ase.geometry.cell import cellpar_to_cell lines = open(filename, 'r').readlines() cell_data = np.array([float(fld) for fld in lines[2].split()]) cell = cellpar_to_cell(cell_data) grid = [int(fld) + 1 for fld in lines[3].split()] data = np.empty(grid) origin_data = [int(fld) for fld in lines[4].split()[1:]] origin_xyz = cell[0] * (-float(origin_data[0])-0.5) / (grid[0] - 1) + \ cell[1] * (-float(origin_data[2])-0.5) / (grid[1] - 1) + \ cell[2] * (-float(origin_data[4])-0.5) / (grid[2] - 1) # Fastest index describes which index ( x or y ) varies fastest # 1: x , 3: y fastest_index = int(lines[4].split()[0]) assert fastest_index in [1, 3] if fastest_index == 3: grid[0], grid[1] = grid[1], grid[0] dummy_counter = 5 for i in range(grid[2]): for j in range(grid[1]): for k in range(grid[0]): # Fastest index if fastest_index == 1: data[k, j, i] = float(lines[dummy_counter]) elif fastest_index == 3: data[j, k, i] = float(lines[dummy_counter]) dummy_counter += 1 return data, cell, origin_xyz if __name__ == '__main__': from ase.build import molecule atoms = molecule('H2') calc = DMol3() atoms.set_calculator(calc) # ~ 60 sec calculation print('Potential energy %5.5f eV' % atoms.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/eam.py000066400000000000000000000763461316323560300242070ustar00rootroot00000000000000"""Calculator for the Embedded Atom Method Potential""" # eam.py # Embedded Atom Method Potential # These routines integrate with the ASE simulation environment # Paul White (Oct 2012) # UNCLASSIFIED # License: See accompanying license files for details import os import numpy as np from ase.test import NotAvailable from ase.neighborlist import NeighborList from ase.calculators.calculator import Calculator, all_changes from scipy.interpolate import InterpolatedUnivariateSpline as spline from ase.units import Bohr, Hartree from ase.utils import basestring class EAM(Calculator): r""" EAM Interface Documentation Introduction ============ The Embedded Atom Method (EAM) [1]_ is a classical potential which is good for modelling metals, particularly fcc materials. Because it is an equiaxial potential the EAM does not model directional bonds well. However, the Angular Dependent Potential (ADP) [2]_ which is an extended version of EAM is able to model directional bonds and is also included in the EAM calculator. Generally all that is required to use this calculator is to supply a potential file or as a set of functions that describe the potential. The files containing the potentials for this calculator are not included but many suitable potentials can be downloaded from The Interatomic Potentials Repository Project at http://www.ctcms.nist.gov/potentials/ Theory ====== A single element EAM potential is defined by three functions: the embedded energy, electron density and the pair potential. A two element alloy contains the individual three functions for each element plus cross pair interactions. The ADP potential has two additional sets of data to define the dipole and quadrupole directional terms for each alloy and their cross interactions. The total energy `E_{\rm tot}` of an arbitrary arrangement of atoms is given by the EAM potential as .. math:: E_\text{tot} = \sum_i F(\bar\rho_i) + \frac{1}{2}\sum_{i\ne j} \phi(r_{ij}) and .. math:: \bar\rho_i = \sum_j \rho(r_{ij}) where `F` is an embedding function, namely the energy to embed an atom `i` in the combined electron density `\bar\rho_i` which is contributed from each of its neighbouring atoms `j` by an amount `\rho(r_{ij})`, `\phi(r_{ij})` is the pair potential function representing the energy in bond `ij` which is due to the short-range electro-static interaction between atoms, and `r_{ij}` is the distance between an atom and its neighbour for that bond. The ADP potential is defined as .. math:: E_\text{tot} = \sum_i F(\bar\rho_i) + \frac{1}{2}\sum_{i\ne j} \phi(r_{ij}) + \frac{1}{2} \sum_{i,\alpha} (\mu_i^\alpha)^2 + \frac{1}{2} \sum_{i,\alpha,\beta} (\lambda_i^{\alpha\beta})^2 - \frac{1}{6} \sum_i \nu_i^2 where `\mu_i^\alpha` is the dipole vector, `\lambda_i^{\alpha\beta}` is the quadrupole tensor and `\nu_i` is the trace of `\lambda_i^{\alpha\beta}`. Running the Calculator ====================== EAM calculates the cohesive atom energy and forces. Internally the potential functions are defined by splines which may be directly supplied or created by reading the spline points from a data file from which a spline function is created. The LAMMPS compatible ``.alloy`` and ``.adp`` formats are supported. The LAMMPS ``.eam`` format is slightly different from the ``.alloy`` format and is currently not supported. For example:: from ase.calculators.eam import EAM mishin = EAM(potential='Al99.eam.alloy') mishin.write_potential('new.eam.alloy') mishin.plot() slab.set_calculator(mishin) slab.get_potential_energy() slab.get_forces() The breakdown of energy contribution from the indvidual components are stored in the calculator instance ``.results['energy_components']`` Arguments ========= ========================= ==================================================== Keyword Description ========================= ==================================================== ``potential`` file of potential in ``.alloy`` or ``.adp`` format (This is generally all you need to supply) ``elements[N]`` array of N element abbreviations ``embedded_energy[N]`` arrays of embedded energy functions ``electron_density[N]`` arrays of electron density functions ``phi[N,N]`` arrays of pair potential functions ``d_embedded_energy[N]`` arrays of derivative embedded energy functions ``d_electron_density[N]`` arrays of derivative electron density functions ``d_phi[N,N]`` arrays of derivative pair potentials functions ``d[N,N], q[N,N]`` ADP dipole and quadrupole function ``d_d[N,N], d_q[N,N]`` ADP dipole and quadrupole derivative functions ``skin`` skin distance passed to NeighborList(). If no atom has moved more than the skin-distance since the last call to the ``update()`` method then the neighbor list can be reused. Defaults to 1.0. ``form`` the form of the potential ``alloy`` or ``adp``. This will be determined from the file suffix or must be set if using equations ========================= ==================================================== Additional parameters for writing potential files ================================================= The following parameters are only required for writing a potential in ``.alloy`` or ``.adp`` format file. ========================= ==================================================== Keyword Description ========================= ==================================================== ``header`` Three line text header. Default is standard message. ``Z[N]`` Array of atomic number of each element ``mass[N]`` Atomic mass of each element ``a[N]`` Array of lattice parameters for each element ``lattice[N]`` Lattice type ``nrho`` No. of rho samples along embedded energy curve ``drho`` Increment for sampling density ``nr`` No. of radial points along density and pair potential curves ``dr`` Increment for sampling radius ========================= ==================================================== Special features ================ ``.plot()`` Plots the individual functions. This may be called from multiple EAM potentials to compare the shape of the individual curves. This function requires the installation of the Matplotlib libraries. Notes/Issues ============= * Although currently not fast, this calculator can be good for trying small calculations or for creating new potentials by matching baseline data such as from DFT results. The format for these potentials is compatible with LAMMPS_ and so can be used either directly by LAMMPS or with the ASE LAMMPS calculator interface. * Supported formats are the LAMMPS_ ``.alloy`` and ``.adp``. The ``.eam`` format is currently not supported. The form of the potential will be determined from the file suffix. * Any supplied values will override values read from the file. * The derivative functions, if supplied, are only used to calculate forces. * There is a bug in early versions of scipy that will cause eam.py to crash when trying to evaluate splines of a potential with one neighbor such as caused by evaluating a dimer. .. _LAMMPS: http://lammps.sandia.gov/ .. [1] M.S. Daw and M.I. Baskes, Phys. Rev. Letters 50 (1983) 1285. .. [2] Y. Mishin, M.J. Mehl, and D.A. Papaconstantopoulos, Acta Materialia 53 2005 4029--4041. End EAM Interface Documentation """ implemented_properties = ['energy', 'forces'] default_parameters = dict( skin=1.0, potential=None, header=[b'EAM/ADP potential file\n', b'Generated from eam.py\n', b'blank\n']) def __init__(self, restart=None, ignore_bad_restart_file=False, label=os.curdir, atoms=None, **kwargs): if 'potential' in kwargs: self.read_potential(kwargs['potential']) Calculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) valid_args = ('potential', 'elements', 'header', 'drho', 'dr', 'cutoff', 'atomic_number', 'mass', 'a', 'lattice', 'embedded_energy', 'electron_density', 'phi', # derivatives 'd_embedded_energy', 'd_electron_density', 'd_phi', 'd', 'q', 'd_d', 'd_q', # adp terms 'skin', 'form', 'Z', 'nr', 'nrho', 'mass') # set any additional keyword arguments for arg, val in self.parameters.items(): if arg in valid_args: setattr(self, arg, val) else: raise RuntimeError('unknown keyword arg "%s" : not in %s' % (arg, valid_args)) def set_form(self, fileobj): """set the form variable based on the file name suffix""" extension = os.path.splitext(fileobj)[1] if extension == '.eam': self.form = 'eam' elif extension == '.alloy': self.form = 'alloy' elif extension == '.adp': self.form = 'adp' else: raise RuntimeError('unknown file extension type: %s' % extension) def read_potential(self, fileobj): """Reads a LAMMPS EAM file in alloy or adp format and creates the interpolation functions from the data """ if isinstance(fileobj, basestring): f = open(fileobj) self.set_form(fileobj) else: f = fileobj def lines_to_list(lines): """Make the data one long line so as not to care how its formatted """ data = [] for line in lines: data.extend(line.split()) return data lines = f.readlines() if self.form == 'eam': # single element eam file (aka funcfl) self.header = lines[:1] data = lines_to_list(lines[1:]) # eam form is just like an alloy form for one element self.Nelements = 1 self.Z = np.array([data[0]], dtype=int) self.mass = np.array([data[1]]) self.a = np.array([data[2]]) self.lattice = [data[3]] self.nrho = int(data[4]) self.drho = float(data[5]) self.nr = int(data[6]) self.dr = float(data[7]) self.cutoff = float(data[8]) n = 9 + self.nrho self.embedded_data = np.array([np.float_(data[9:n])]) self.rphi_data = np.zeros([self.Nelements, self.Nelements, self.nr]) effective_charge = np.float_(data[n:n + self.nr]) # convert effective charges to rphi according to # http://lammps.sandia.gov/doc/pair_eam.html self.rphi_data[0, 0] = Bohr * Hartree * (effective_charge**2) self.density_data = np.array( [np.float_(data[n + self.nr:n + 2 * self.nr])]) else: self.header = lines[:3] i = 3 data = lines_to_list(lines[i:]) self.Nelements = int(data[0]) d = 1 self.elements = data[d:d + self.Nelements] d += self.Nelements self.nrho = int(data[d]) self.drho = float(data[d + 1]) self.nr = int(data[d + 2]) self.dr = float(data[d + 3]) self.cutoff = float(data[d + 4]) self.embedded_data = np.zeros([self.Nelements, self.nrho]) self.density_data = np.zeros([self.Nelements, self.nr]) self.Z = np.zeros([self.Nelements], dtype=int) self.mass = np.zeros([self.Nelements]) self.a = np.zeros([self.Nelements]) self.lattice = [] d += 5 # reads in the part of the eam file for each element for elem in range(self.Nelements): self.Z[elem] = int(data[d]) self.mass[elem] = float(data[d + 1]) self.a[elem] = float(data[d + 2]) self.lattice.append(data[d + 3]) d += 4 self.embedded_data[elem] = np.float_( data[d:(d + self.nrho)]) d += self.nrho self.density_data[elem] = np.float_(data[d:(d + self.nr)]) d += self.nr # reads in the r*phi data for each interaction between elements self.rphi_data = np.zeros([self.Nelements, self.Nelements, self.nr]) for i in range(self.Nelements): for j in range(i + 1): self.rphi_data[j, i] = np.float_(data[d:(d + self.nr)]) d += self.nr self.r = np.arange(0, self.nr) * self.dr self.rho = np.arange(0, self.nrho) * self.drho self.set_splines() if (self.form == 'adp'): self.read_adp_data(data, d) self.set_adp_splines() def set_splines(self): # this section turns the file data into three functions (and # derivative functions) that define the potential self.embedded_energy = np.empty(self.Nelements, object) self.electron_density = np.empty(self.Nelements, object) self.d_embedded_energy = np.empty(self.Nelements, object) self.d_electron_density = np.empty(self.Nelements, object) for i in range(self.Nelements): self.embedded_energy[i] = spline(self.rho, self.embedded_data[i], k=3) self.electron_density[i] = spline(self.r, self.density_data[i], k=3) self.d_embedded_energy[i] = self.deriv(self.embedded_energy[i]) self.d_electron_density[i] = self.deriv(self.electron_density[i]) self.phi = np.empty([self.Nelements, self.Nelements], object) self.d_phi = np.empty([self.Nelements, self.Nelements], object) # ignore the first point of the phi data because it is forced # to go through zero due to the r*phi format in alloy and adp for i in range(self.Nelements): for j in range(i, self.Nelements): self.phi[i, j] = spline( self.r[1:], self.rphi_data[i, j][1:] / self.r[1:], k=3) self.d_phi[i, j] = self.deriv(self.phi[i, j]) if j != i: self.phi[j, i] = self.phi[i, j] self.d_phi[j, i] = self.d_phi[i, j] def set_adp_splines(self): self.d = np.empty([self.Nelements, self.Nelements], object) self.d_d = np.empty([self.Nelements, self.Nelements], object) self.q = np.empty([self.Nelements, self.Nelements], object) self.d_q = np.empty([self.Nelements, self.Nelements], object) for i in range(self.Nelements): for j in range(i, self.Nelements): self.d[i, j] = spline(self.r[1:], self.d_data[i, j][1:], k=3) self.d_d[i, j] = self.deriv(self.d[i, j]) self.q[i, j] = spline(self.r[1:], self.q_data[i, j][1:], k=3) self.d_q[i, j] = self.deriv(self.q[i, j]) # make symmetrical if j != i: self.d[j, i] = self.d[i, j] self.d_d[j, i] = self.d_d[i, j] self.q[j, i] = self.q[i, j] self.d_q[j, i] = self.d_q[i, j] def read_adp_data(self, data, d): """read in the extra adp data from the potential file""" self.d_data = np.zeros([self.Nelements, self.Nelements, self.nr]) # should be non symmetrical combinations of 2 for i in range(self.Nelements): for j in range(i + 1): self.d_data[j, i] = data[d:d + self.nr] d += self.nr self.q_data = np.zeros([self.Nelements, self.Nelements, self.nr]) # should be non symmetrical combinations of 2 for i in range(self.Nelements): for j in range(i + 1): self.q_data[j, i] = data[d:d + self.nr] d += self.nr def write_potential(self, filename, nc=1, numformat='%.8e'): """Writes out the potential in the format given by the form variable to 'filename' with a data format that is nc columns wide. Note: array lengths need to be an exact multiple of nc """ f = open(filename, 'wb') assert self.nr % nc == 0 assert self.nrho % nc == 0 for line in self.header: f.write(line) f.write('{0} '.format(self.Nelements).encode()) f.write(' '.join(self.elements).encode() + b'\n') f.write(('%d %f %d %f %f \n' % (self.nrho, self.drho, self.nr, self.dr, self.cutoff)).encode()) # start of each section for each element # rs = np.linspace(0, self.nr * self.dr, self.nr) # rhos = np.linspace(0, self.nrho * self.drho, self.nrho) rs = np.arange(0, self.nr) * self.dr rhos = np.arange(0, self.nrho) * self.drho for i in range(self.Nelements): f.write(('%d %f %f %s\n' % (self.Z[i], self.mass[i], self.a[i], str(self.lattice[i]))).encode()) np.savetxt(f, self.embedded_energy[i](rhos).reshape(self.nrho // nc, nc), fmt=nc * [numformat]) np.savetxt(f, self.electron_density[i](rs).reshape(self.nr // nc, nc), fmt=nc * [numformat]) # write out the pair potentials in Lammps DYNAMO setfl format # as r*phi for alloy format for i in range(self.Nelements): for j in range(i, self.Nelements): np.savetxt(f, (rs * self.phi[i, j](rs)).reshape(self.nr // nc, nc), fmt=nc * [numformat]) if self.form == 'adp': # these are the u(r) or dipole values for i in range(self.Nelements): for j in range(i + 1): np.savetxt(f, self.d_data[i, j]) # these are the w(r) or quadrupole values for i in range(self.Nelements): for j in range(i + 1): np.savetxt(f, self.q_data[i, j]) f.close() def update(self, atoms): # check all the elements are available in the potential self.Nelements = len(self.elements) elements = np.unique(atoms.get_chemical_symbols()) unavailable = np.logical_not( np.array([item in self.elements for item in elements])) if np.any(unavailable): raise RuntimeError('These elements are not in the potential: %s' % elements[unavailable]) # cutoffs need to be a vector for NeighborList cutoffs = self.cutoff * np.ones(len(atoms)) # convert the elements to an index of the position # in the eam format self.index = np.array([self.elements.index(el) for el in atoms.get_chemical_symbols()]) self.pbc = atoms.get_pbc() # since we need the contribution of all neighbors to the # local electron density we cannot just calculate and use # one way neighbors self.neighbors = NeighborList(cutoffs, skin=self.parameters.skin, self_interaction=False, bothways=True) self.neighbors.update(atoms) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): """EAM Calculator atoms: Atoms object Contains positions, unit-cell, ... properties: list of str List of what needs to be calculated. Can be any combination of 'energy', 'forces' system_changes: list of str List of what has changed since last calculation. Can be any combination of these five: 'positions', 'numbers', 'cell', 'pbc', 'initial_charges' and 'initial_magmoms'. """ Calculator.calculate(self, atoms, properties, system_changes) # we shouldn't really recalc if charges or magmos change if len(system_changes) > 0: # something wrong with this way self.update(self.atoms) self.calculate_energy(self.atoms) if 'forces' in properties: self.calculate_forces(self.atoms) # check we have all the properties requested for property in properties: if property not in self.results: if property is 'energy': self.calculate_energy(self.atoms) if property is 'forces': self.calculate_forces(self.atoms) # we need to remember the previous state of parameters # if 'potential' in parameter_changes and potential != None: # self.read_potential(potential) def calculate_energy(self, atoms): """Calculate the energy the energy is made up of the ionic or pair interaction and the embedding energy of each atom into the electron cloud generated by its neighbors """ pair_energy = 0.0 embedding_energy = 0.0 mu_energy = 0.0 lam_energy = 0.0 trace_energy = 0.0 self.total_density = np.zeros(len(atoms)) if (self.form == 'adp'): self.mu = np.zeros([len(atoms), 3]) self.lam = np.zeros([len(atoms), 3, 3]) for i in range(len(atoms)): # this is the atom to be embedded neighbors, offsets = self.neighbors.get_neighbors(i) offset = np.dot(offsets, atoms.get_cell()) rvec = (atoms.positions[neighbors] + offset - atoms.positions[i]) # calculate the distance to the nearest neighbors r = np.sqrt(np.sum(np.square(rvec), axis=1)) # fast # r = np.apply_along_axis(np.linalg.norm, 1, rvec) # sloow nearest = np.arange(len(r))[r <= self.cutoff] for j_index in range(self.Nelements): use = self.index[neighbors[nearest]] == j_index if not use.any(): continue pair_energy += np.sum(self.phi[self.index[i], j_index]( r[nearest][use])) / 2. density = np.sum( self.electron_density[j_index](r[nearest][use])) self.total_density[i] += density if self.form == 'adp': self.mu[i] += self.adp_dipole( r[nearest][use], rvec[nearest][use], self.d[self.index[i], j_index]) self.lam[i] += self.adp_quadrupole( r[nearest][use], rvec[nearest][use], self.q[self.index[i], j_index]) # add in the electron embedding energy embedding_energy += self.embedded_energy[self.index[i]]( self.total_density[i]) components = dict(pair=pair_energy, embedding=embedding_energy) if self.form == 'adp': mu_energy += np.sum(self.mu ** 2) / 2. lam_energy += np.sum(self.lam ** 2) / 2. for i in range(len(atoms)): # this is the atom to be embedded trace_energy -= np.sum(self.lam[i].trace() ** 2) / 6. adp_result = dict(adp_mu=mu_energy, adp_lam=lam_energy, adp_trace=trace_energy) components.update(adp_result) self.positions = atoms.positions.copy() self.cell = atoms.get_cell().copy() energy = 0.0 for i in components.keys(): energy += components[i] self.energy_free = energy self.energy_zero = energy self.results['energy_components'] = components self.results['energy'] = energy def calculate_forces(self, atoms): # calculate the forces based on derivatives of the three EAM functions self.update(atoms) self.results['forces'] = np.zeros((len(atoms), 3)) for i in range(len(atoms)): # this is the atom to be embedded neighbors, offsets = self.neighbors.get_neighbors(i) offset = np.dot(offsets, atoms.get_cell()) # create a vector of relative positions of neighbors rvec = atoms.positions[neighbors] + offset - atoms.positions[i] r = np.sqrt(np.sum(np.square(rvec), axis=1)) nearest = np.arange(len(r))[r < self.cutoff] d_embedded_energy_i = self.d_embedded_energy[ self.index[i]](self.total_density[i]) urvec = rvec.copy() # unit directional vector for j in np.arange(len(neighbors)): urvec[j] = urvec[j] / r[j] for j_index in range(self.Nelements): use = self.index[neighbors[nearest]] == j_index if not use.any(): continue rnuse = r[nearest][use] density_j = self.total_density[neighbors[nearest][use]] scale = (self.d_phi[self.index[i], j_index](rnuse) + (d_embedded_energy_i * self.d_electron_density[j_index](rnuse)) + (self.d_embedded_energy[j_index](density_j) * self.d_electron_density[self.index[i]](rnuse))) self.results['forces'][i] += np.dot(scale, urvec[nearest][use]) if (self.form == 'adp'): adp_forces = self.angular_forces( self.mu[i], self.mu[neighbors[nearest][use]], self.lam[i], self.lam[neighbors[nearest][use]], rnuse, rvec[nearest][use], self.index[i], j_index) self.results['forces'][i] += adp_forces def angular_forces(self, mu_i, mu, lam_i, lam, r, rvec, form1, form2): # calculate the extra components for the adp forces # rvec are the relative positions to atom i psi = np.zeros(mu.shape) for gamma in range(3): term1 = (mu_i[gamma] - mu[:, gamma]) * self.d[form1][form2](r) term2 = np.sum((mu_i - mu) * self.d_d[form1][form2](r)[:, np.newaxis] * (rvec * rvec[:, gamma][:, np.newaxis] / r[:, np.newaxis]), axis=1) term3 = 2 * np.sum((lam_i[:, gamma] + lam[:, :, gamma]) * rvec * self.q[form1][form2](r)[:, np.newaxis], axis=1) term4 = 0.0 for alpha in range(3): for beta in range(3): rs = rvec[:, alpha] * rvec[:, beta] * rvec[:, gamma] term4 += ((lam_i[alpha, beta] + lam[:, alpha, beta]) * self.d_q[form1][form2](r) * rs) / r term5 = ((lam_i.trace() + lam.trace(axis1=1, axis2=2)) * (self.d_q[form1][form2](r) * r + 2 * self.q[form1][form2](r)) * rvec[:, gamma]) / 3. # the minus for term5 is a correction on the adp # formulation given in the 2005 Mishin Paper and is posted # on the NIST website with the AlH potential psi[:, gamma] = term1 + term2 + term3 + term4 - term5 return np.sum(psi, axis=0) def adp_dipole(self, r, rvec, d): # calculate the dipole contribution mu = np.sum((rvec * d(r)[:, np.newaxis]), axis=0) return mu # sign to agree with lammps def adp_quadrupole(self, r, rvec, q): # slow way of calculating the quadrupole contribution r = np.sqrt(np.sum(rvec ** 2, axis=1)) lam = np.zeros([rvec.shape[0], 3, 3]) qr = q(r) for alpha in range(3): for beta in range(3): lam[:, alpha, beta] += qr * rvec[:, alpha] * rvec[:, beta] return np.sum(lam, axis=0) def deriv(self, spline): """Wrapper for extracting the derivative from a spline""" def d_spline(aspline): return spline(aspline, 1) return d_spline def plot(self, name=''): """Plot the individual curves""" try: import matplotlib.pyplot as plt except ImportError: raise NotAvailable('This needs matplotlib module.') if self.form == 'eam' or self.form == 'alloy': nrow = 2 elif self.form == 'adp': nrow = 3 else: raise RuntimeError('Unknown form of potential: %s' % self.form) if hasattr(self, 'r'): r = self.r else: r = np.linspace(0, self.cutoff, 50) if hasattr(self, 'rho'): rho = self.rho else: rho = np.linspace(0, 10.0, 50) plt.subplot(nrow, 2, 1) self.elem_subplot(rho, self.embedded_energy, r'$\rho$', r'Embedding Energy $F(\bar\rho)$', name, plt) plt.subplot(nrow, 2, 2) self.elem_subplot(r, self.electron_density, r'$r$', r'Electron Density $\rho(r)$', name, plt) plt.subplot(nrow, 2, 3) self.multielem_subplot(r, self.phi, r'$r$', r'Pair Potential $\phi(r)$', name, plt) plt.ylim(-1.0, 1.0) # need reasonable values if self.form == 'adp': plt.subplot(nrow, 2, 5) self.multielem_subplot(r, self.d, r'$r$', r'Dipole Energy', name, plt) plt.subplot(nrow, 2, 6) self.multielem_subplot(r, self.q, r'$r$', r'Quadrupole Energy', name, plt) plt.plot() def elem_subplot(self, curvex, curvey, xlabel, ylabel, name, plt): plt.xlabel(xlabel) plt.ylabel(ylabel) for i in np.arange(self.Nelements): label = name + ' ' + self.elements[i] plt.plot(curvex, curvey[i](curvex), label=label) plt.legend() def multielem_subplot(self, curvex, curvey, xlabel, ylabel, name, plt): plt.xlabel(xlabel) plt.ylabel(ylabel) for i in np.arange(self.Nelements): for j in np.arange(i + 1): label = name + ' ' + self.elements[i] + '-' + self.elements[j] plt.plot(curvex, curvey[i, j](curvex), label=label) plt.legend() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/elk.py000066400000000000000000000411021316323560300241760ustar00rootroot00000000000000import os import numpy as np from ase.units import Bohr, Hartree from ase.io.elk import read_elk from ase.calculators.calculator import (FileIOCalculator, Parameters, kpts2mp, ReadError, PropertyNotImplementedError, EigenvalOccupationMixin) elk_parameters = {'swidth': Hartree} class ELK(FileIOCalculator, EigenvalOccupationMixin): command = 'elk > elk.out' implemented_properties = ['energy', 'forces'] def __init__(self, restart=None, ignore_bad_restart_file=False, label=os.curdir, atoms=None, **kwargs): """Construct ELK calculator. The keyword arguments (kwargs) can be one of the ASE standard keywords: 'xc', 'kpts' and 'smearing' or any of ELK' native keywords. """ FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def set_label(self, label): self.label = label self.directory = label self.prefix = '' self.out = os.path.join(label, 'INFO.OUT') def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) # Ignore boundary conditions (ELK always uses them): if 'pbc' in system_changes: system_changes.remove('pbc') return system_changes def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) self.initialize(atoms) self.parameters.write(os.path.join(self.directory, 'parameters.ase')) if 'xctype' in self.parameters: if 'xc' in self.parameters: raise RuntimeError("You can't use both 'xctype' and 'xc'!") if self.parameters.get('autokpt'): if 'kpts' in self.parameters: raise RuntimeError("You can't use both 'autokpt' and 'kpts'!") if 'ngridk' in self.parameters: raise RuntimeError("You can't use both 'autokpt' and 'ngridk'!") if 'ngridk' in self.parameters: if 'kpts' in self.parameters: raise RuntimeError("You can't use both 'ngridk' and 'kpts'!") if self.parameters.get('autoswidth'): if 'smearing' in self.parameters: raise RuntimeError("You can't use both 'autoswidth' and 'smearing'!") if 'swidth' in self.parameters: raise RuntimeError("You can't use both 'autoswidth' and 'swidth'!") fd = open(os.path.join(self.directory, 'elk.in'), 'w') # handle custom specifications of rmt # (absolute or relative to default) in Bohr # rmt = {'H': 0.7, 'O': -0.2, ...} if self.parameters.get('rmt', None) is not None: self.rmt = self.parameters['rmt'].copy() assert len(self.rmt.keys()) == len(list(set(self.rmt.keys()))), 'redundant rmt definitions' self.parameters.pop('rmt') # this is not an elk keyword! else: self.rmt = None inp = {} inp.update(self.parameters) if 'xc' in self.parameters: xctype = {'LDA': 3, # PW92 'PBE': 20, 'REVPBE': 21, 'PBESOL': 22, 'WC06': 26, 'AM05': 30, 'mBJLDA': (100, 208, 12)}[self.parameters.xc] inp['xctype'] = xctype del inp['xc'] if 'kpts' in self.parameters: mp = kpts2mp(atoms, self.parameters.kpts) inp['ngridk'] = tuple(mp) vkloff = [] # is this below correct? for nk in mp: if nk % 2 == 0: # shift kpoint away from gamma point vkloff.append(0.5) else: vkloff.append(0) inp['vkloff'] = vkloff del inp['kpts'] if 'smearing' in self.parameters: name = self.parameters.smearing[0].lower() if name == 'methfessel-paxton': stype = self.parameters.smearing[2] else: stype = {'gaussian': 0, 'fermi-dirac': 3, }[name] inp['stype'] = stype inp['swidth'] = self.parameters.smearing[1] del inp['smearing'] # convert keys to ELK units for key, value in inp.items(): if key in elk_parameters: inp[key] /= elk_parameters[key] # write all keys for key, value in inp.items(): fd.write('%s\n' % key) if isinstance(value, bool): fd.write('.%s.\n\n' % ('false', 'true')[value]) elif isinstance(value, (int, float)): fd.write('%s\n\n' % value) else: fd.write('%s\n\n' % ' '.join([str(x) for x in value])) # cell fd.write('avec\n') for vec in atoms.cell: fd.write('%.14f %.14f %.14f\n' % tuple(vec / Bohr)) fd.write('\n') # atoms species = {} symbols = [] for a, (symbol, m) in enumerate( zip(atoms.get_chemical_symbols(), atoms.get_initial_magnetic_moments())): if symbol in species: species[symbol].append((a, m)) else: species[symbol] = [(a, m)] symbols.append(symbol) fd.write('atoms\n%d\n' % len(species)) #scaled = atoms.get_scaled_positions(wrap=False) scaled = np.linalg.solve(atoms.cell.T, atoms.positions.T).T for symbol in symbols: fd.write("'%s.in' : spfname\n" % symbol) fd.write('%d\n' % len(species[symbol])) for a, m in species[symbol]: fd.write('%.14f %.14f %.14f 0.0 0.0 %.14f\n' % (tuple(scaled[a])+ (m,))) # species species_path = self.parameters.get('species_dir') if species_path is None: species_path = os.environ.get('ELK_SPECIES_PATH') if species_path is None: raise RuntimeError( 'Missing species directory! Use species_dir ' + 'parameter or set $ELK_SPECIES_PATH environment variable.') # custom species definitions if self.rmt is not None: fd.write("\n") sfile = os.path.join(os.environ['ELK_SPECIES_PATH'], 'elk.in') assert os.path.exists(sfile) slines = open(sfile, 'r').readlines() # remove unused species for s in self.rmt.keys(): if s not in species.keys(): self.rmt.pop(s) # add undefined species with defaults for s in species.keys(): if s not in self.rmt.keys(): # use default rmt for undefined species self.rmt.update({s: 0.0}) # write custom species into elk.in skeys = list(set(self.rmt.keys())) # unique skeys.sort() for s in skeys: found = False for n, line in enumerate(slines): if line.find("'" + s + "'") > -1: begline = n - 1 for n, line in enumerate(slines[begline:]): if not line.strip(): # first empty line endline = n found = True break assert found fd.write("species\n") # set rmt on third line rmt = self.rmt[s] assert isinstance(rmt, (float,int)) if rmt <= 0.0: # relative # split needed because H is defined with comments newrmt = float(slines[begline + 3].split()[0].strip()) + rmt else: newrmt = rmt slines[begline + 3] = '%6s\n' % str(newrmt) for l in slines[begline: begline + endline]: fd.write('%s' % l) fd.write("\n") else: # use default species # if sppath is present in elk.in it overwrites species blocks! fd.write("sppath\n'%s'\n\n" % os.environ['ELK_SPECIES_PATH']) def read(self, label): FileIOCalculator.read(self, label) totenergy = os.path.join(self.directory, 'TOTENERGY.OUT') eigval = os.path.join(self.directory, 'EIGVAL.OUT') kpoints = os.path.join(self.directory, 'KPOINTS.OUT') for filename in [totenergy, eigval, kpoints, self.out]: if not os.path.isfile(filename): raise ReadError('ELK output file '+filename+' is missing.') # read state from elk.in because *.OUT do not provide enough digits! self.atoms = read_elk(os.path.join(self.directory, 'elk.in')) self.parameters = Parameters.read(os.path.join(self.directory, 'parameters.ase')) self.initialize(self.atoms) self.read_results() def read_results(self): converged = self.read_convergence() if not converged: raise RuntimeError('ELK did not converge! Check ' + self.out) self.read_energy() if self.parameters.get('tforce'): self.read_forces() self.width = self.read_electronic_temperature() self.nbands = self.read_number_of_bands() self.nelect = self.read_number_of_electrons() self.niter = self.read_number_of_iterations() self.magnetic_moment = self.read_magnetic_moment() def initialize(self, atoms): if 'spinpol' not in self.parameters: # honor elk.in settings self.spinpol = atoms.get_initial_magnetic_moments().any() else: self.spinpol = self.parameters['spinpol'] def get_forces(self, atoms): if not self.parameters.get('tforce'): raise PropertyNotImplementedError return FileIOCalculator.get_forces(self, atoms) def read_energy(self): fd = open(os.path.join(self.directory, 'TOTENERGY.OUT'), 'r') e = float(fd.readlines()[-1]) * Hartree self.results['free_energy'] = e self.results['energy'] = e def read_forces(self): lines = open(self.out, 'r').readlines() forces = [] for line in lines: if line.rfind('total force') > -1: forces.append(np.array([float(f) for f in line.split(':')[1].split()])) self.results['forces'] = np.array(forces) * Hartree / Bohr def read_convergence(self): converged = False text = open(self.out).read().lower() if ('convergence targets achieved' in text and 'reached self-consistent loops maximum' not in text): converged = True return converged # more methods def get_electronic_temperature(self): return self.width*Hartree def get_number_of_bands(self): return self.nbands def get_number_of_electrons(self): return self.nelect def get_number_of_iterations(self): return self.niter def get_number_of_spins(self): return 1 + int(self.spinpol) def get_magnetic_moment(self, atoms=None): return self.magnetic_moment def get_magnetic_moments(self, atoms): # not implemented yet, so # so set the total magnetic moment on the atom no. 0 and fill with 0.0 magmoms = [0.0 for a in range(len(atoms))] magmoms[0] = self.get_magnetic_moment(atoms) return np.array(magmoms) def get_spin_polarized(self): return self.spinpol def get_eigenvalues(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'eigenvalues') def get_occupation_numbers(self, kpt=0, spin=0): return self.read_eigenvalues(kpt, spin, 'occupations') def get_ibz_k_points(self): return self.read_kpts(mode='ibz_k_points') def get_k_point_weights(self): return self.read_kpts(mode='k_point_weights') def get_fermi_level(self): return self.read_fermi() def read_kpts(self, mode='ibz_k_points'): """ Returns list of kpts weights or kpts coordinates. """ values = [] assert mode in ['ibz_k_points' , 'k_point_weights'], 'mode not in [\'ibz_k_points\' , \'k_point_weights\']' kpoints = os.path.join(self.directory, 'KPOINTS.OUT') lines = open(kpoints).readlines() kpts = None for line in lines: if line.rfind(': nkpt') > -1: kpts = int(line.split(':')[0].strip()) break assert not kpts is None text = lines[1:] # remove first line values = [] for line in text: if mode == 'ibz_k_points': b = [float(c.strip()) for c in line.split()[1:4]] else: b = float(line.split()[-2]) values.append(b) if len(values) == 0: values = None return np.array(values) def read_number_of_bands(self): nbands = None eigval = os.path.join(self.directory, 'EIGVAL.OUT') lines = open(eigval).readlines() for line in lines: if line.rfind(': nstsv') > -1: nbands = int(line.split(':')[0].strip()) break if self.get_spin_polarized(): nbands = nbands // 2 return nbands def read_number_of_electrons(self): nelec = None text = open(self.out).read().lower() # Total electronic charge for line in iter(text.split('\n')): if line.rfind('total electronic charge :') > -1: nelec = float(line.split(':')[1].strip()) break return nelec def read_number_of_iterations(self): niter = None lines = open(self.out).readlines() for line in lines: if line.rfind(' Loop number : ') > -1: niter = int(line.split(':')[1].split()[0].strip()) # last iter return niter def read_magnetic_moment(self): magmom = None lines = open(self.out).readlines() for line in lines: if line.rfind('total moment :') > -1: magmom = float(line.split(':')[1].strip()) # last iter return magmom def read_electronic_temperature(self): width = None text = open(self.out).read().lower() for line in iter(text.split('\n')): if line.rfind('smearing width :') > -1: width = float(line.split(':')[1].strip()) break return width def read_eigenvalues(self, kpt=0, spin=0, mode='eigenvalues'): """ Returns list of last eigenvalues, occupations for given kpt and spin. """ values = [] assert mode in ['eigenvalues' , 'occupations'], 'mode not in [\'eigenvalues\' , \'occupations\']' eigval = os.path.join(self.directory, 'EIGVAL.OUT') lines = open(eigval).readlines() nstsv = None for line in lines: if line.rfind(': nstsv') > -1: nstsv = int(line.split(':')[0].strip()) break assert not nstsv is None kpts = None for line in lines: if line.rfind(': nkpt') > -1: kpts = int(line.split(':')[0].strip()) break assert not kpts is None text = lines[3:] # remove first 3 lines # find the requested k-point beg = 2 + (nstsv + 4) * kpt end = beg + nstsv if self.get_spin_polarized(): # elk prints spin-up and spin-down together if spin == 0: beg = beg end = beg + nstsv // 2 else: beg = beg + nstsv // 2 end = end values = [] for line in text[beg:end]: b = [float(c.strip()) for c in line.split()[1:]] values.append(b) if mode == 'eigenvalues': values = [Hartree * v[0] for v in values] else: values = [v[1] for v in values] if len(values) == 0: values = None return np.array(values) def read_fermi(self): """Method that reads Fermi energy in Hartree from the output file and returns it in eV""" E_f = None text = open(self.out).read().lower() for line in iter(text.split('\n')): if line.rfind('fermi :') > -1: E_f = float(line.split(':')[1].strip()) E_f = E_f * Hartree return E_f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/emt.py000066400000000000000000000204221316323560300242120ustar00rootroot00000000000000"""Effective medium theory potential.""" from math import sqrt, exp, log import numpy as np from ase.data import chemical_symbols, atomic_numbers from ase.units import Bohr from ase.neighborlist import NeighborList from ase.calculators.calculator import Calculator, all_changes parameters = { # E0 s0 V0 eta2 kappa lambda n0 # eV bohr eV bohr^-1 bohr^-1 bohr^-1 bohr^-3 'Al': (-3.28, 3.00, 1.493, 1.240, 2.000, 1.169, 0.00700), 'Cu': (-3.51, 2.67, 2.476, 1.652, 2.740, 1.906, 0.00910), 'Ag': (-2.96, 3.01, 2.132, 1.652, 2.790, 1.892, 0.00547), 'Au': (-3.80, 3.00, 2.321, 1.674, 2.873, 2.182, 0.00703), 'Ni': (-4.44, 2.60, 3.673, 1.669, 2.757, 1.948, 0.01030), 'Pd': (-3.90, 2.87, 2.773, 1.818, 3.107, 2.155, 0.00688), 'Pt': (-5.85, 2.90, 4.067, 1.812, 3.145, 2.192, 0.00802), # extra parameters - just for fun ... 'H': (-3.21, 1.31, 0.132, 2.652, 2.790, 3.892, 0.00547), 'C': (-3.50, 1.81, 0.332, 1.652, 2.790, 1.892, 0.01322), 'N': (-5.10, 1.88, 0.132, 1.652, 2.790, 1.892, 0.01222), 'O': (-4.60, 1.95, 0.332, 1.652, 2.790, 1.892, 0.00850)} beta = 1.809 # (16 * pi / 3)**(1.0 / 3) / 2**0.5, preserve historical rounding class EMT(Calculator): """Python implementation of the Effective Medium Potential. Supports the following standard EMT metals: Al, Cu, Ag, Au, Ni, Pd and Pt. In addition, the following elements are supported. They are NOT well described by EMT, and the parameters are not for any serious use: H, C, N, O The potential takes a single argument, ``asap_cutoff`` (default: False). If set to True, the cutoff mimics how Asap does it; most importantly the global cutoff is chosen from the largest atom present in the simulation, if False it is chosen from the largest atom in the parameter table. True gives the behaviour of the Asap code and older EMT implementations, although the results are not bitwise identical. """ implemented_properties = ['energy', 'forces'] nolabel = True default_parameters = {'asap_cutoff': False} def __init__(self, **kwargs): Calculator.__init__(self, **kwargs) def initialize(self, atoms): self.par = {} self.rc = 0.0 self.numbers = atoms.get_atomic_numbers() if self.parameters.asap_cutoff: relevant_pars = {} for symb, p in parameters.items(): if atomic_numbers[symb] in self.numbers: relevant_pars[symb] = p else: relevant_pars = parameters maxseq = max(par[1] for par in relevant_pars.values()) * Bohr rc = self.rc = beta * maxseq * 0.5 * (sqrt(3) + sqrt(4)) rr = rc * 2 * sqrt(4) / (sqrt(3) + sqrt(4)) self.acut = np.log(9999.0) / (rr - rc) if self.parameters.asap_cutoff: self.rc_list = self.rc * 1.045 else: self.rc_list = self.rc + 0.5 for Z in self.numbers: if Z not in self.par: sym = chemical_symbols[Z] if sym not in parameters: raise NotImplementedError('No EMT-potential for {0}' .format(sym)) p = parameters[sym] s0 = p[1] * Bohr eta2 = p[3] / Bohr kappa = p[4] / Bohr x = eta2 * beta * s0 gamma1 = 0.0 gamma2 = 0.0 for i, n in enumerate([12, 6, 24]): r = s0 * beta * sqrt(i + 1) x = n / (12 * (1.0 + exp(self.acut * (r - rc)))) gamma1 += x * exp(-eta2 * (r - beta * s0)) gamma2 += x * exp(-kappa / beta * (r - beta * s0)) self.par[Z] = {'E0': p[0], 's0': s0, 'V0': p[2], 'eta2': eta2, 'kappa': kappa, 'lambda': p[5] / Bohr, 'n0': p[6] / Bohr**3, 'rc': rc, 'gamma1': gamma1, 'gamma2': gamma2} self.ksi = {} for s1, p1 in self.par.items(): self.ksi[s1] = {} for s2, p2 in self.par.items(): self.ksi[s1][s2] = p2['n0'] / p1['n0'] self.forces = np.empty((len(atoms), 3)) self.sigma1 = np.empty(len(atoms)) self.deds = np.empty(len(atoms)) self.nl = NeighborList([0.5 * self.rc_list] * len(atoms), self_interaction=False) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): Calculator.calculate(self, atoms, properties, system_changes) if 'numbers' in system_changes: self.initialize(self.atoms) positions = self.atoms.positions numbers = self.atoms.numbers cell = self.atoms.cell self.nl.update(self.atoms) self.energy = 0.0 self.sigma1[:] = 0.0 self.forces[:] = 0.0 natoms = len(self.atoms) for a1 in range(natoms): Z1 = numbers[a1] p1 = self.par[Z1] ksi = self.ksi[Z1] neighbors, offsets = self.nl.get_neighbors(a1) offsets = np.dot(offsets, cell) for a2, offset in zip(neighbors, offsets): d = positions[a2] + offset - positions[a1] r = sqrt(np.dot(d, d)) if r < self.rc_list: Z2 = numbers[a2] p2 = self.par[Z2] self.interact1(a1, a2, d, r, p1, p2, ksi[Z2]) for a in range(natoms): Z = numbers[a] p = self.par[Z] try: ds = -log(self.sigma1[a] / 12) / (beta * p['eta2']) except (OverflowError, ValueError): self.deds[a] = 0.0 self.energy -= p['E0'] continue x = p['lambda'] * ds y = exp(-x) z = 6 * p['V0'] * exp(-p['kappa'] * ds) self.deds[a] = ((x * y * p['E0'] * p['lambda'] + p['kappa'] * z) / (self.sigma1[a] * beta * p['eta2'])) self.energy += p['E0'] * ((1 + x) * y - 1) + z for a1 in range(natoms): Z1 = numbers[a1] p1 = self.par[Z1] ksi = self.ksi[Z1] neighbors, offsets = self.nl.get_neighbors(a1) offsets = np.dot(offsets, cell) for a2, offset in zip(neighbors, offsets): d = positions[a2] + offset - positions[a1] r = sqrt(np.dot(d, d)) if r < self.rc_list: Z2 = numbers[a2] p2 = self.par[Z2] self.interact2(a1, a2, d, r, p1, p2, ksi[Z2]) self.results['energy'] = self.energy self.results['free_energy'] = self.energy self.results['forces'] = self.forces def interact1(self, a1, a2, d, r, p1, p2, ksi): x = exp(self.acut * (r - self.rc)) theta = 1.0 / (1.0 + x) y1 = (0.5 * p1['V0'] * exp(-p2['kappa'] * (r / beta - p2['s0'])) * ksi / p1['gamma2'] * theta) y2 = (0.5 * p2['V0'] * exp(-p1['kappa'] * (r / beta - p1['s0'])) / ksi / p2['gamma2'] * theta) self.energy -= y1 + y2 f = ((y1 * p2['kappa'] + y2 * p1['kappa']) / beta + (y1 + y2) * self.acut * theta * x) * d / r self.forces[a1] += f self.forces[a2] -= f self.sigma1[a1] += (exp(-p2['eta2'] * (r - beta * p2['s0'])) * ksi * theta / p1['gamma1']) self.sigma1[a2] += (exp(-p1['eta2'] * (r - beta * p1['s0'])) / ksi * theta / p2['gamma1']) def interact2(self, a1, a2, d, r, p1, p2, ksi): x = exp(self.acut * (r - self.rc)) theta = 1.0 / (1.0 + x) y1 = (exp(-p2['eta2'] * (r - beta * p2['s0'])) * ksi / p1['gamma1'] * theta * self.deds[a1]) y2 = (exp(-p1['eta2'] * (r - beta * p1['s0'])) / ksi / p2['gamma1'] * theta * self.deds[a2]) f = ((y1 * p2['eta2'] + y2 * p1['eta2']) + (y1 + y2) * self.acut * theta * x) * d / r self.forces[a1] -= f self.forces[a2] += f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/espresso.py000066400000000000000000000042731316323560300252760ustar00rootroot00000000000000"""Quantum ESPRESSO Calculator export ASE_ESPRESSO_COMMAND="/path/to/pw.x -in PREFIX.pwi > PREFIX.pwo" Run pw.x jobs. """ from ase import io from ase.calculators.calculator import FileIOCalculator class Espresso(FileIOCalculator): """ """ implemented_properties = ['energy', 'forces', 'stress', 'magmoms'] command = 'pw.x -in PREFIX.pwi > PREFIX.pwo' def __init__(self, restart=None, ignore_bad_restart_file=False, label='espresso', atoms=None, **kwargs): """ All options for pw.x are copied verbatim to the input file, and put into the correct section. Use ``input_data`` for parameters that are already in a dict, all other ``kwargs`` are passed as parameters. Accepts all the options for pw.x as given in the QE docs, plus some additional options: input_data: dict A flat or nested dictionary with input parameters for pw.x pseudopotentials: dict A filename for each atomic species, e.g. ``{'O': 'O.pbe-rrkjus.UPF', 'H': 'H.pbe-rrkjus.UPF'}``. A dummy name will be used if none are given. kspacing: float Generate a grid of k-points with this as the minimum distance, in A^-1 between them in reciprocal space. If set to None, kpts will be used instead. kpts: Number of kpoints in each dimension for automatic kpoint generation. koffset: (int, int, int) Offset of kpoints in each direction. Must be 0 (no offset) or 1 (half grid offset). Setting to True is equivalent to (1, 1, 1). .. note:: Set ``tprnfor=True`` and ``tstress=True`` to calculate forces and stresses. """ FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) io.write(self.label + '.pwi', atoms, **self.parameters) def read_results(self): output = io.read(self.label + '.pwo') self.results = output.calc.results ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/exciting.py000066400000000000000000000137471316323560300252530ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np import xml.etree.ElementTree as ET from ase.io.exciting import atoms2etree from ase.units import Bohr, Hartree from ase.calculators.calculator import PropertyNotImplementedError from ase.utils import basestring from xml.dom import minidom class Exciting: def __init__(self, dir='calc', paramdict=None, speciespath=None, bin='excitingser', kpts=(1, 1, 1), autormt=False, tshift=True, **kwargs): """Exciting calculator object constructor dir: string directory in which to execute exciting paramdict: dict Dictionary containing XML parameters. String values are translated to attributes, nested dictionaries are translated to sub elements. A list of dictionaries is translated to a list of sub elements named after the key of which the list is the value. Default: None speciespath: string Directory or URL to look up species files bin: string Path or executable name of exciting. Default: ``excitingser`` kpts: integer list length 3 Number of k-points autormt: bool Bla bla? kwargs: dictionary like list of key value pairs to be converted into groundstate attributes """ self.dir = dir self.energy = None self.paramdict = paramdict if speciespath is None: speciespath = os.environ['EXCITINGROOT'] + '/species' self.speciespath = speciespath self.converged = False self.excitingbinary = bin self.autormt = autormt self.tshift = tshift self.groundstate_attributes = kwargs if ('ngridk' not in kwargs.keys() and (not (self.paramdict))): self.groundstate_attributes['ngridk'] = ' '.join(map(str, kpts)) def update(self, atoms): if (not self.converged or len(self.numbers) != len(atoms) or (self.numbers != atoms.get_atomic_numbers()).any()): self.initialize(atoms) self.calculate(atoms) elif ((self.positions != atoms.get_positions()).any() or (self.pbc != atoms.get_pbc()).any() or (self.cell != atoms.get_cell()).any()): self.calculate(atoms) def initialize(self, atoms): self.numbers = atoms.get_atomic_numbers().copy() self.write(atoms) def get_potential_energy(self, atoms): """ returns potential Energy """ self.update(atoms) return self.energy def get_forces(self, atoms): self.update(atoms) return self.forces.copy() def get_stress(self, atoms): raise PropertyNotImplementedError def calculate(self, atoms): self.positions = atoms.get_positions().copy() self.cell = atoms.get_cell().copy() self.pbc = atoms.get_pbc().copy() self.initialize(atoms) syscall = ('cd %(dir)s; %(bin)s;' % {'dir': self.dir, 'bin': self.excitingbinary}) print(syscall) assert os.system(syscall) == 0 self.read() def write(self, atoms): if not os.path.isdir(self.dir): os.mkdir(self.dir) root = atoms2etree(atoms) root.find('structure').attrib['speciespath'] = self.speciespath root.find('structure').attrib['autormt'] = str(self.autormt).lower() root.find('structure').attrib['tshift'] = str(self.tshift).lower() def prettify(elem): rough_string = ET.tostring(elem, 'utf-8') reparsed = minidom.parseString(rough_string) return reparsed.toprettyxml(indent="\t") if(self.paramdict): self.dicttoxml(self.paramdict, root) fd = open('%s/input.xml' % self.dir, 'w') fd.write(prettify(root)) fd.close() else: groundstate = ET.SubElement(root, 'groundstate', tforce='true') for key, value in self.groundstate_attributes.items(): if key == 'title': root.findall('title')[0].text = value else: groundstate.attrib[key] = str(value) fd = open('%s/input.xml' % self.dir, 'w') fd.write(prettify(root)) fd.close() def dicttoxml(self, pdict, element): for key, value in pdict.items(): if (isinstance(value, basestring) and key == 'text()'): element.text = value elif (isinstance(value, basestring)): element.attrib[key] = value elif (isinstance(value, list)): for item in value: self.dicttoxml(item, ET.SubElement(element, key)) elif (isinstance(value, dict)): if(element.findall(key) == []): self.dicttoxml(value, ET.SubElement(element, key)) else: self.dicttoxml(value, element.findall(key)[0]) else: print('cannot deal with', key, '=', value) def read(self): """ reads Total energy and forces from info.xml """ INFO_file = '%s/info.xml' % self.dir try: fd = open(INFO_file) except IOError: raise RuntimeError("output doesn't exist") info = ET.parse(fd) self.energy = float(info.findall( 'groundstate/scl/iter/energies')[-1].attrib['totalEnergy']) * Hartree forces = [] forcesnodes = info.findall( 'groundstate/scl/structure')[-1].findall('species/atom/forces/totalforce') for force in forcesnodes: forces.append(np.array(list(force.attrib.values())).astype(np.float)) self.forces = np.reshape(forces, (-1, 3)) * Hartree / Bohr if str(info.find('groundstate').attrib['status']) == 'finished': self.converged = True else: raise RuntimeError('calculation did not finish correctly') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/ff.py000066400000000000000000000153261316323560300240270ustar00rootroot00000000000000from __future__ import division import numpy as np from ase.calculators.calculator import Calculator from ase.utils import ff class ForceField(Calculator): implemented_properties = ['energy', 'forces'] nolabel = True def __init__(self, morses=None, bonds=None, angles=None, dihedrals=None, vdws=None, coulombs=None, **kwargs): Calculator.__init__(self, **kwargs) if (morses is None and bonds is None and angles is None and dihedrals is None and vdws is None and coulombs is None): raise ImportError("At least one of morses, bonds, angles, dihedrals," "vdws or coulombs lists must be defined!") if morses is None: self.morses = [] else: self.morses = morses if bonds is None: self.bonds = [] else: self.bonds = bonds if angles is None: self.angles = [] else: self.angles = angles if dihedrals is None: self.dihedrals = [] else: self.dihedrals = dihedrals if vdws is None: self.vdws = [] else: self.vdws = vdws if coulombs is None: self.coulombs = [] else: self.coulombs = coulombs def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) if system_changes: for name in ['energy', 'forces', 'hessian']: self.results.pop(name, None) if 'energy' not in self.results: energy = 0.0 for morse in self.morses: i, j, e = ff.get_morse_potential_value(atoms, morse) energy += e for bond in self.bonds: i, j, e = ff.get_bond_potential_value(atoms, bond) energy += e for angle in self.angles: i, j, k, e = ff.get_angle_potential_value(atoms, angle) energy += e for dihedral in self.dihedrals: i, j, k, l, e = ff.get_dihedral_potential_value( atoms, dihedral) energy += e for vdw in self.vdws: i, j, e = ff.get_vdw_potential_value(atoms, vdw) energy += e for coulomb in self.coulombs: i, j, e = ff.get_coulomb_potential_value(atoms, coulomb) energy += e self.results['energy'] = energy if 'forces' not in self.results: forces = np.zeros(3 * len(atoms)) for morse in self.morses: i, j, g = ff.get_morse_potential_gradient(atoms, morse) limits = get_limits([i, j]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] for bond in self.bonds: i, j, g = ff.get_bond_potential_gradient(atoms, bond) limits = get_limits([i, j]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] for angle in self.angles: i, j, k, g = ff.get_angle_potential_gradient(atoms, angle) limits = get_limits([i, j, k]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] for dihedral in self.dihedrals: i, j, k, l, g = ff.get_dihedral_potential_gradient( atoms, dihedral) limits = get_limits([i, j, k, l]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] for vdw in self.vdws: i, j, g = ff.get_vdw_potential_gradient(atoms, vdw) limits = get_limits([i, j]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] for coulomb in self.coulombs: i, j, g = ff.get_coulomb_potential_gradient(atoms, coulomb) limits = get_limits([i, j]) for gb, ge, lb, le in limits: forces[gb:ge] -= g[lb:le] self.results['forces'] = np.reshape(forces, (len(atoms), 3)) if 'hessian' not in self.results: hessian = np.zeros((3 * len(atoms), 3 * len(atoms))) for morse in self.morses: i, j, h = ff.get_morse_potential_hessian(atoms, morse) limits = get_limits([i, j]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] for bond in self.bonds: i, j, h = ff.get_bond_potential_hessian(atoms, bond) limits = get_limits([i, j]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] for angle in self.angles: i, j, k, h = ff.get_angle_potential_hessian(atoms, angle) limits = get_limits([i, j, k]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] for dihedral in self.dihedrals: i, j, k, l, h = ff.get_dihedral_potential_hessian( atoms, dihedral) limits = get_limits([i, j, k, l]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] for vdw in self.vdws: i, j, h = ff.get_vdw_potential_hessian(atoms, vdw) limits = get_limits([i, j]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] for coulomb in self.coulombs: i, j, h = ff.get_coulomb_potential_hessian(atoms, coulomb) limits = get_limits([i, j]) for gb1, ge1, lb1, le1 in limits: for gb2, ge2, lb2, le2 in limits: hessian[gb1:ge1, gb2:ge2] += h[lb1:le1, lb2:le2] self.results['hessian'] = hessian def get_hessian(self, atoms=None): return self.get_property('hessian', atoms) def get_limits(indices): gstarts = [] gstops = [] lstarts = [] lstops = [] for l, g in enumerate(indices): g3, l3 = 3 * g, 3 * l gstarts.append(g3) gstops.append(g3 + 3) lstarts.append(l3) lstops.append(l3 + 3) return zip(gstarts, gstops, lstarts, lstops) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/fleur.py000066400000000000000000000500411316323560300245420ustar00rootroot00000000000000from __future__ import print_function """This module defines an ASE interface to FLAPW code FLEUR. http://www.flapw.de """ import os from subprocess import Popen, PIPE import re import numpy as np from ase.units import Hartree, Bohr from ase.calculators.calculator import PropertyNotImplementedError class FLEUR: """Class for doing FLEUR calculations. In order to use fleur one has to define the following environment variables: FLEUR_INPGEN path to the input generator (inpgen.x) of fleur FLEUR path to the fleur executable. Note that fleur uses different executable for real and complex cases (systems with/without inversion symmetry), so FLEUR must point to the correct executable. The initialize_density step can be performed in parallel only if run on one compute node. FLEUR_SERIAL is used for this step. It is probable that user needs to tune manually the input file before the actual calculation, so in addition to the standard get_potential_energy function this class defines the following utility functions: write_inp generate the input file *inp* initialize_density creates the initial density after possible manual edits of *inp* calculate convergence the total energy. With fleur, one specifies always only the number of SCF-iterations so this function launches the executable several times and monitors the convergence. relax Uses fleur's internal algorithm for structure optimization. Requires that the proper optimization parameters (atoms to optimize etc.) are specified by hand in *inp* """ def __init__(self, xc='LDA', kpts=None, nbands=None, convergence=None, width=None, kmax=None, mixer=None, maxiter=None, maxrelax=20, workdir=None, equivatoms=True, rmt=None, lenergy=None): """Construct FLEUR-calculator object. Parameters ========== xc: str Exchange-correlation functional. Must be one of LDA, PBE, RPBE. kpts: list of three int Monkhost-Pack sampling. nbands: int Number of bands. (not used at the moment) convergence: dictionary Convergence parameters (currently only energy in eV) {'energy' : float} width: float Fermi-distribution width in eV. kmax: float Plane wave cutoff in a.u. If kmax is set then: gmax = 3.0 * kmax gmaxxc = int(2.5 * kmax * 10)/10. (from set_inp.f) mixer: dictionary Mixing parameters imix, alpha, spinf {'imix' : int, 'alpha' : float, 'spinf' : float} maxiter: int Maximum number of SCF iterations (name in the code: itmax) maxrelax: int Maximum number of relaxation steps workdir: str Working directory for the calculation equivatoms: bool If False: generate inequivalent atoms (default is True). Setting to False allows one for example to calculate spin-polarized dimers. See http://www.flapw.de/pm/index.php?n=User-Documentation.InputFileForTheInputGenerator. rmt: dictionary rmt values in Angstrom., e.g: {'O': 1.1 * Bohr, 'N': -0.1} Negative number with respect to the rmt set by FLEUR. lenergy: float Lower energy in eV. Default -1.8 * Hartree. """ self.xc = xc self.kpts = kpts self.nbands = nbands self.width = width self.kmax = kmax self.itmax_step_default = 9 # SCF steps per run (default) self.itmax_step = 5 # SCF steps per run assert self.itmax_step_default <= 9 assert self.itmax_step <= self.itmax_step_default self.itmax_default = 40 if maxiter is None: self.itmax = self.itmax_default else: self.itmax = maxiter self.maxrelax = maxrelax self.mixer = mixer if convergence: self.convergence = convergence self.convergence['energy'] /= Hartree else: self.convergence = {'energy' : 0.0001} self.start_dir = None self.workdir = workdir if self.workdir: self.start_dir = os.getcwd() if not os.path.isdir(workdir): os.mkdir(workdir) else: self.workdir = '.' self.start_dir = '.' self.equivatoms = equivatoms self.rmt = rmt self.lenergy = lenergy self.converged = False def run_executable(self, mode='fleur', executable='FLEUR'): assert executable in ['FLEUR', 'FLEUR_SERIAL'] executable_use = executable if executable == 'FLEUR_SERIAL' and not os.environ.get(executable, ''): executable_use = 'FLEUR' # use FLEUR if FLEUR_SERIAL not set try: code_exe = os.environ[executable_use] except KeyError: raise RuntimeError('Please set ' + executable_use) p = Popen(code_exe, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE) stat = p.wait() out = p.stdout.read() err = p.stderr.read() print(mode, ': stat= ', stat, ' out= ', out, ' err=', err) # special handling of exit status from density generation and regular fleur.x if mode in ['density']: if '!' in err: os.chdir(self.start_dir) raise RuntimeError(executable_use + ' exited with a code %s' % err) else: if stat != 0: os.chdir(self.start_dir) raise RuntimeError(executable_use + ' exited with a code %d' % stat) def update(self, atoms): """Update a FLEUR calculation.""" if (not self.converged or len(self.numbers) != len(atoms) or (self.numbers != atoms.get_atomic_numbers()).any()): self.initialize(atoms) self.calculate(atoms) elif ((self.positions != atoms.get_positions()).any() or (self.pbc != atoms.get_pbc()).any() or (self.cell != atoms.get_cell()).any()): self.converged = False self.initialize(atoms) self.calculate(atoms) def initialize(self, atoms): """Create an input file inp and generate starting density.""" self.converged = False self.initialize_inp(atoms) self.initialize_density(atoms) def initialize_inp(self, atoms): """Create a inp file""" os.chdir(self.workdir) self.numbers = atoms.get_atomic_numbers().copy() self.positions = atoms.get_positions().copy() self.cell = atoms.get_cell().copy() self.pbc = atoms.get_pbc().copy() # create the input self.write_inp(atoms) os.chdir(self.start_dir) def initialize_density(self, atoms): """Creates a new starting density.""" os.chdir(self.workdir) # remove possible conflicting files files2remove = ['cdn1', 'fl7para', 'stars', 'wkf2', 'enpara', 'kpts', 'broyd', 'broyd.7', 'tmat', 'tmas'] if 0: # avoid STOP bzone3 error by keeping the kpts file files2remove.remove('kpts') for f in files2remove: if os.path.isfile(f): os.remove(f) # generate the starting density os.system("sed -i -e 's/strho=./strho=T/' inp") self.run_executable(mode='density', executable='FLEUR_SERIAL') os.system("sed -i -e 's/strho=./strho=F/' inp") os.chdir(self.start_dir) # generate spin-polarized density # http://www.flapw.de/pm/index.php?n=User-Documentation.Magnetism if atoms.get_initial_magnetic_moments().sum() > 0.0: os.chdir(self.workdir) # generate cdnc file (1 SCF step: swsp=F - non-magnetic) os.system("sed -i -e 's/itmax=.*,maxiter/itmax= 1,maxiter/' inp") self.run_executable(mode='cdnc', executable='FLEUR') sedline = "'s/itmax=.*,maxiter/itmax= '" sedline += str(self.itmax_step_default) + "',maxiter/'" os.system("sed -i -e " + sedline + " inp") # generate spin polarized density (swsp=T) os.system("sed -i -e 's/swsp=./swsp=T/' inp") self.run_executable(mode='swsp', executable='FLEUR_SERIAL') # restore swsp=F os.system("sed -i -e 's/swsp=./swsp=F/' inp") os.chdir(self.start_dir) def get_potential_energy(self, atoms, force_consistent=False): self.update(atoms) if force_consistent: return self.efree * Hartree else: # Energy extrapolated to zero Kelvin: return (self.etotal + self.efree) / 2 * Hartree def get_number_of_iterations(self, atoms): self.update(atoms) return self.niter def get_forces(self, atoms): self.update(atoms) # electronic structure is converged, so let's calculate forces: # TODO return np.array((0.0, 0.0, 0.0)) def get_stress(self, atoms): raise PropertyNotImplementedError def get_dipole_moment(self, atoms): """Returns total dipole moment of the system.""" raise PropertyNotImplementedError def calculate(self, atoms): """Converge a FLEUR calculation to self-consistency. Input files should be generated before calling this function FLEUR performs always fixed number of SCF steps. This function reduces the number of iterations gradually, however, a minimum of five SCF steps is always performed. """ os.chdir(self.workdir) self.niter = 0 out = '' err = '' while not self.converged: if self.niter > self.itmax: os.chdir(self.start_dir) raise RuntimeError('FLEUR failed to convergence in %d iterations' % self.itmax) self.run_executable(mode='fleur', executable='FLEUR') # catenate new output with the old one os.system('cat out >> out.old') self.read() self.check_convergence() if os.path.exists('out.old'): os.rename('out.old', 'out') # After convergence clean up broyd* files os.system('rm -f broyd*') os.chdir(self.start_dir) return out, err def relax(self, atoms): """Currently, user has to manually define relaxation parameters (atoms to relax, relaxation directions, etc.) in inp file before calling this function.""" nrelax = 0 relaxed = False while not relaxed: # Calculate electronic structure self.calculate(atoms) # Calculate the Pulay forces os.system("sed -i -e 's/l_f=./l_f=T/' inp") while True: self.converged = False out, err = self.calculate(atoms) if 'GEO new' in err: os.chdir(self.workdir) os.rename('inp_new', 'inp') os.chdir(self.start_dir) break if 'GEO: Des woas' in err: relaxed = True break nrelax += 1 # save the out and cdn1 files os.system('cp out out_%d' % nrelax) os.system('cp cdn1 cdn1_%d' % nrelax) if nrelax > self.maxrelax: os.chdir(self.start_dir) raise RuntimeError('Failed to relax in %d iterations' % self.maxrelax) self.converged = False def write_inp(self, atoms): """Write the *inp* input file of FLEUR. First, the information from Atoms is written to the simple input file and the actual input file *inp* is then generated with the FLEUR input generator. The location of input generator is specified in the environment variable FLEUR_INPGEN. Finally, the *inp* file is modified according to the arguments of the FLEUR calculator object. """ fh = open('inp_simple', 'w') fh.write('FLEUR input generated with ASE\n') fh.write('\n') if atoms.pbc[2]: film = 'f' else: film = 't' fh.write('&input film=%s /' % film) fh.write('\n') for vec in atoms.get_cell(): fh.write(' ') for el in vec: fh.write(' %21.16f' % (el/Bohr)) fh.write('\n') fh.write(' %21.16f\n' % 1.0) fh.write(' %21.16f %21.16f %21.16f\n' % (1.0, 1.0, 1.0)) fh.write('\n') natoms = len(atoms) fh.write(' %6d\n' % natoms) positions = atoms.get_scaled_positions() if not atoms.pbc[2]: # in film calculations z position has to be in absolute # coordinates and symmetrical cart_pos = atoms.get_positions() cart_pos[:, 2] -= atoms.get_cell()[2, 2]/2.0 positions[:, 2] = cart_pos[:, 2] / Bohr atomic_numbers = atoms.get_atomic_numbers() for n, (Z, pos) in enumerate(zip(atomic_numbers, positions)): if self.equivatoms: fh.write('%3d' % Z) else: # generate inequivalent atoms, by using non-integer Z # (only the integer part will be used as Z of the atom) # see http://www.flapw.de/pm/index.php?n=User-Documentation.InputFileForTheInputGenerator fh.write('%3d.%04d' % (Z, n)) # MDTMP don't think one can calculate more that 10**4 atoms for el in pos: fh.write(' %21.16f' % el) fh.write('\n') # avoid "STOP read_record: ERROR reading input" fh.write('&end /') fh.close() try: inpgen = os.environ['FLEUR_INPGEN'] except KeyError: raise RuntimeError('Please set FLEUR_INPGEN') # rename the previous inp if it exists if os.path.isfile('inp'): os.rename('inp', 'inp.bak') os.system('%s < inp_simple' % inpgen) # read the whole inp-file for possible modifications fh = open('inp', 'r') lines = fh.readlines() fh.close() window_ln = -1 for ln, line in enumerate(lines): # XC potential if line.startswith('pbe'): if self.xc == 'PBE': pass elif self.xc == 'RPBE': lines[ln] = 'rpbe non-relativi\n' elif self.xc == 'LDA': lines[ln] = 'mjw non-relativic\n' del lines[ln+1] else: raise RuntimeError('XC-functional %s is not supported' % self.xc) if line.startswith('Window'): # few things are set around this line window_ln = ln # kmax if self.kmax and ln == window_ln: line = '%10.5f\n' % self.kmax lines[ln+2] = line # lower energy if self.lenergy is not None and ln == window_ln: l0 = lines[ln+1].split()[0] l = lines[ln+1].replace(l0, '%8.5f' % (self.lenergy / Hartree)) lines[ln+1] = l # gmax cutoff for PW-expansion of potential & density ( > 2*kmax) # gmaxxc cutoff for PW-expansion of XC-potential ( > 2*kmax, < gmax) if self.kmax and line.startswith('vchk'): gmax = 3. * self.kmax line = ' %10.6f %10.6f\n' % (gmax, int(2.5 * self.kmax * 10)/10.) lines[ln-1] = line # Fermi width if self.width and line.startswith('gauss'): line = 'gauss=F %7.5ftria=F\n' % (self.width / Hartree) lines[ln] = line # kpts if self.kpts and line.startswith('nkpt'): line = 'nkpt= nx=%2d,ny=%2d,nz=%2d\n' % (self.kpts[0], self.kpts[1], self.kpts[2]) lines[ln] = line # itmax if self.itmax < self.itmax_step_default and line.startswith('itmax'): # decrease number of SCF steps; increasing is done by 'while not self.converged:' lsplit = line.split(',') if lsplit[0].find('itmax') != -1: lsplit[0] = 'itmax=' + ('%2d' % self.itmax) lines[ln] = ",".join(lsplit) # Mixing if self.mixer and line.startswith('itmax'): imix = self.mixer['imix'] alpha = self.mixer['alpha'] spinf = self.mixer['spinf'] line_end = 'imix=%2d,alpha=%6.2f,spinf=%6.2f\n' % (imix, alpha, spinf) line = line[:21] + line_end lines[ln] = line # jspins and swsp if atoms.get_initial_magnetic_moments().sum() > 0.0: assert not self.equivatoms, 'equivatoms currently not allowed in magnetic systems' if line.find('jspins=1') != -1: lines[ln] = line.replace('jspins=1', 'jspins=2') if line.startswith('swsp=F'): # setting initial magnetic moments for all atom types lines[ln] = 'swsp=F' for m in atoms.get_initial_magnetic_moments(): lines[ln] += (' %5.2f' % m) lines[ln] += '\n' # inpgen produces incorrect symbol 'J' for Iodine if line.startswith(' J 53'): lines[ln] = lines[ln].replace(' J 53', ' I 53') # rmt if self.rmt is not None: for s in list(set(atoms.get_chemical_symbols())): # unique if s in self.rmt: # set the requested rmt for ln, line in enumerate(lines): ls = line.split() if len(ls) == 7 and ls[0].strip() == s: rorig = ls[5].strip() if self.rmt[s] < 0.0: r = float(rorig) + self.rmt[s] / Bohr else: r = self.rmt[s] / Bohr print(s, rorig, r) lines[ln] = lines[ln].replace(rorig, ("%.6f" % r)) # write everything back to inp fh = open('inp', 'w') for line in lines: fh.write(line) fh.close() def read(self): """Read results from FLEUR's text-output file `out`.""" lines = open('out', 'r').readlines() # total energies self.total_energies = [] pat = re.compile('(.*total energy=)(\s)*([-0-9.]*)') for line in lines: m = pat.match(line) if m: self.total_energies.append(float(m.group(3))) self.etotal = self.total_energies[-1] # free_energies self.free_energies = [] pat = re.compile('(.*free energy=)(\s)*([-0-9.]*)') for line in lines: m = pat.match(line) if m: self.free_energies.append(float(m.group(3))) self.efree = self.free_energies[-1] # TODO forces, charge density difference... def check_convergence(self): """Check the convergence of calculation""" energy_error = np.ptp(self.total_energies[-3:]) self.converged = energy_error < self.convergence['energy'] # TODO check charge convergence # reduce the itmax in inp lines = open('inp', 'r').readlines() pat = re.compile('(itmax=)([ 0-9]*)') fh = open('inp', 'w') for line in lines: m = pat.match(line) if m: itmax = int(m.group(2)) self.niter += itmax itmax_new = itmax // 2 itmax = max(self.itmax_step, itmax_new) line = 'itmax=%2d' % itmax + line[8:] fh.write(line) fh.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/gaussian.py000066400000000000000000000227471316323560300252530ustar00rootroot00000000000000""" Gaussian calculator for ASE written by: Glen R. Jenness University of Wisconsin - Madison Based off of code written by: Glen R. Jenness Kuang Yu Torsten Kerber, Ecole normale superieure de Lyon (*) Paul Fleurat-Lessard, Ecole normale superieure de Lyon (*) Martin Krupicka (*) This work is supported by Award No. UK-C0017, made by King Abdullah University of Science and Technology (KAUST), Saudi Arabia. See accompanying license files for details. """ import os from ase.calculators.calculator import FileIOCalculator, Parameters, ReadError """ Gaussian has two generic classes of keywords: link0 and route. Since both types of keywords have different input styles, we will distinguish between both types, dividing each type into str's, int's etc. For more information on the Link0 commands see: http://www.gaussian.com/g_tech/g_ur/k_link0.htm For more information on the route section keywords, see: http://www.gaussian.com/g_tech/g_ur/l_keywords09.htm """ link0_keys = ['chk', 'mem', 'rwf', 'int', 'd2e', 'lindaworkers', 'kjob', 'subst', 'save', 'nosave', 'nprocshared', 'nproc'] # This one is a little strange. Gaussian has several keywords where you just # specify the keyword, but the keyword itself has several options. # Ex: Opt, Opt=QST2, Opt=Conical, etc. # These keywords are given here. route_self_keys = ['opt', 'force', 'freq', 'complex', 'fmm', 'genchk', 'polar', 'prop', 'pseudo', 'restart', 'scan', 'scrf', 'sp', 'sparse', 'stable', 'population', 'volume', 'densityfit', 'nodensityfit'] route_keys = [# int keys # Multiplicity and charge are not really route keywords, # but we will put them here anyways 'cachesize', 'cbsextrapolate', 'constants', # str keys 'functional', 'maxdisk', 'cphf', 'density', 'ept', 'field', 'geom', 'guess', 'gvb', 'integral', 'irc', 'ircmax', 'name', 'nmr', 'oniom', 'output', 'punch', 'scf', 'symmetry', 'td', 'units', # Float keys 'pressure', 'scale', 'temperature'] class Gaussian(FileIOCalculator): """ Gaussian calculator """ name = 'Gaussian' implemented_properties = ['energy', 'forces', 'dipole'] command = 'g09 < PREFIX.com > PREFIX.log' default_parameters = {'charge': 0, 'method': 'hf', 'basis': '6-31g*', 'force': 'force'} def __init__(self, restart=None, ignore_bad_restart_file=False, label='g09', atoms=None, scratch=None, ioplist=list(), basisfile=None, extra=None, addsec=None, **kwargs): """Constructs a Gaussian-calculator object. extra: any extra text to be included in the input card addsec: a list of strings to be included as "additional sections" """ FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) if restart is not None: try: self.read(restart) except ReadError: if ignore_bad_restart_file: self.reset() else: raise self.ioplist = ioplist self.scratch = scratch self.basisfile = basisfile # store extra parameters self.extra = extra self.addsec = addsec def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() return changed_parameters def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) ignore = ['cell', 'pbc'] for change in system_changes: if change in ignore: system_changes.remove(change) return system_changes def write_input(self, atoms, properties=None, system_changes=None): """Writes the input file""" FileIOCalculator.write_input(self, atoms, properties, system_changes) magmoms = atoms.get_initial_magnetic_moments().tolist() self.parameters.initial_magmoms = magmoms self.parameters.write(self.label + '.ase') # Set default behavior if ('multiplicity' not in self.parameters): tot_magmom = atoms.get_initial_magnetic_moments().sum() mult = tot_magmom + 1 else: mult = self.parameters['multiplicity'] filename = self.label + '.com' inputfile = open(filename, 'w') link0 = str() route = '#p %s/%s' % (self.parameters['method'], self.parameters['basis']) for key, val in self.parameters.items(): if key.lower() in link0_keys: link0 += ('%%%s=%s\n' % (key, val)) elif key.lower() in route_self_keys: if (val.lower() == key.lower()): route += (' ' + val) else: if ',' in val: route += ' %s(%s)' % (key, val) else: route += ' %s=%s' % (key, val) elif key.lower() in route_keys: route += ' %s=%s' % (key, val) # include any other keyword(s) if self.extra is not None: route += ' ' + self.extra if self.ioplist: route += ' IOp(' route += ', '.join(self.ioplist) route += ')' inputfile.write(link0) inputfile.write(route) inputfile.write(' \n\n') inputfile.write('Gaussian input prepared by ASE\n\n') inputfile.write('%i %i\n' % (self.parameters['charge'], mult)) symbols = atoms.get_chemical_symbols() coordinates = atoms.get_positions() for i in range(len(atoms)): inputfile.write('%-10s' % symbols[i]) for j in range(3): inputfile.write('%20.10f' % coordinates[i, j]) inputfile.write('\n') inputfile.write('\n') if 'gen' in self.parameters['basis'].lower(): if self.basisfile is None: raise RuntimeError('Please set basisfile.') elif not os.path.isfile(self.basisfile.rstrip('/N').lstrip('@')): error = 'Basis file %s does not exist.' % self.basisfile raise RuntimeError(error) elif self.basisfile[0] == '@': inputfile.write(self.basisfile + '\n\n') else: f2 = open(self.basisfile, 'r') inputfile.write(f2.read()) f2.close() if atoms.get_pbc().any(): cell = atoms.get_cell() line = str() for v in cell: line += 'TV %20.10f%20.10f%20.10f\n' % (v[0], v[1], v[2]) inputfile.write(line) # include optional additional sections if self.addsec is not None: inputfile.write('\n\n'.join(self.addsec)) inputfile.write('\n\n') inputfile.close() def read(self, label): """Used to read the results of a previous calculation if restarting""" FileIOCalculator.read(self, label) from ase.io.gaussian import read_gaussian_out filename = self.label + '.log' if not os.path.isfile(filename): raise ReadError self.atoms = read_gaussian_out(filename, quantity='atoms') self.parameters = Parameters.read(self.label + '.ase') initial_magmoms = self.parameters.pop('initial_magmoms') self.atoms.set_initial_magnetic_moments(initial_magmoms) self.read_results() def read_results(self): """Reads the output file using GaussianReader""" from ase.io.gaussian import read_gaussian_out filename = self.label + '.log' quantities = ['energy', 'forces', 'dipole'] with open(filename, 'r') as fileobj: for quant in quantities: self.results[quant] = read_gaussian_out(fileobj, quantity=quant) self.results['magmom'] = read_gaussian_out(fileobj, quantity='multiplicity') self.results['magmom'] -= 1 def clean(self): """Cleans up from a previous run""" extensions = ['.chk', '.com', '.log'] for ext in extensions: f = self.label + ext try: if (self.directory is not None): os.remove(os.path.join(self.directory, f)) else: os.remove(f) except OSError: pass def get_version(self): return self.read_output(self.label + '.log', 'version') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/general.py000066400000000000000000000033531316323560300250460ustar00rootroot00000000000000from ase.calculators.calculator import PropertyNotImplementedError class Calculator: "Deprecated!!!!" def __init__(self): return def set_atoms(self, atoms): self.atoms = atoms.copy() def get_atoms(self): atoms = self.atoms.copy() atoms.set_calculator(self) return atoms def get_name(self): """Return the name of the calculator (string). """ return self.name def get_version(self): """Return the version of the calculator (string). """ raise NotImplementedError def get_potential_energy(self, atoms, force_consistent=False): self.update(atoms) if force_consistent: return self.energy_free else: return self.energy_zero def get_forces(self, atoms): self.update(atoms) return self.forces def get_stress(self, atoms): self.update(atoms) if self.stress is not None: return self.stress else: raise PropertyNotImplementedError def initialize(self, atoms): """Prepare the input files required to start the program (calculator). """ raise NotImplementedError def read(self, atoms): self.positions = atoms.get_positions() self.energy_free, self.energy_zero = self.read_energy() self.forces = self.read_forces(atoms) self.dipole = self.read_dipole() self.fermi = self.read_fermi() self.atoms = atoms.copy() try: self.nbands = self.read_nbands() except (NotImplementedError, AttributeError): pass try: self.stress = self.read_stress() except PropertyNotImplementedError: self.stress = None ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/gromacs.py000066400000000000000000000423711316323560300250670ustar00rootroot00000000000000"""This module defines an ASE interface to GROMACS. http://www.gromacs.org/ It is VERY SLOW compared to standard Gromacs (due to slow formatted io required here). Mainly intended to be the MM part in the ase QM/MM Markus.Kaukonen@iki.fi To be done: 1) change the documentation for the new file-io-calculator (test works now) 2) change gromacs program names -now: hard coded -future: set as dictionary in params_runs """ import os from glob import glob import numpy as np from ase.calculators.calculator import FileIOCalculator, all_changes def do_clean(name='#*'): """ remove files matching wildcards """ myfiles = glob(name) for myfile in myfiles: try: os.remove(myfile) except OSError: pass class Gromacs(FileIOCalculator): """Class for doing GROMACS calculations. Before running a gromacs calculation you must prepare the input files separately (pdb2gmx and grompp for instance.) Input parameters for gromacs runs (the .mdp file) are given in self.params and can be set when initializing the calculator or by method set_own. for example:: CALC_MM_RELAX = Gromacs() CALC_MM_RELAX.set_own_params('integrator', 'steep', 'use steepest descent') Run command line arguments for gromacs related programs: pdb2gmx, grompp, mdrun, g_energy, g_traj. These can be given as:: CALC_MM_RELAX = Gromacs() CALC_MM_RELAX.set_own_params_runs('force_field', 'oplsaa') """ implemented_properties = ['energy', 'forces'] command = 'mdrun < PREFIX.files > PREFIX.log' default_parameters = dict( define='-DFLEXIBLE', integrator='cg', nsteps='10000', nstfout='10', nstlog='10', nstenergy='10', nstlist='10', ns_type='grid', pbc='xyz', rlist='1.15', coulombtype='PME-Switch', rcoulomb='0.8', vdwtype='shift', rvdw='0.8', rvdw_switch='0.75', DispCorr='Ener') def __init__(self, restart=None, ignore_bad_restart_file=False, label='gromacs', atoms=None, do_qmmm=False, freeze_qm=False, clean=True, water_model='tip3p', force_field='oplsaa', **kwargs): """Construct GROMACS-calculator object. Parameters ========== label: str Prefix to use for filenames (label.in, label.txt, ...). Default is 'gromacs'. do_qmmm : bool Is gromacs used as mm calculator for a qm/mm calculation freeze_qm : bool In qm/mm are the qm atoms kept fixed at their initial positions clean : bool Remove gromacs backup files and old gormacs.* files water_model: str Water model to be used in gromacs runs (see gromacs manual) force_field: str Force field to be used in gromacs runs """ self.do_qmmm = do_qmmm self.freeze_qm = freeze_qm self.water_model = water_model self.force_field = force_field self.clean = clean self.params_doc = {} # add comments for gromacs input file self.params_doc['define'] = \ 'flexible/ rigid water' self.params_doc['integrator'] = \ 'md: molecular dynamics(Leapfrog), \n' + \ '; md-vv: molecular dynamics(Velocity Verlet), \n' + \ '; steep: steepest descent minimization, \n' + \ '; cg: conjugate cradient minimization \n' self.positions = None self.atoms = None # storage for energy and forces #self.energy = None #self.forces = None FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) self.set(**kwargs) # default values for runtime parameters # can be changed by self.set_own_params_runs('key', 'value') self.params_runs = {} self.params_runs['index_filename'] = 'index.ndx' self.params_runs['init_structure'] = self.label + '.pdb' self.params_runs['water'] = self.water_model self.params_runs['force_field'] = self.force_field self.params_runs['extra_mdrun_parameters'] = ' -nt 1 ' self.params_runs['extra_pdb2gmx_parameters'] = ' ' self.params_runs['extra_grompp_parameters'] = ' ' self.params_runs['extra_editconf_parameters'] = ' ' self.params_runs['extra_genbox_parameters'] = ' ' # these below are required by qm/mm self.topology_filename = self.label + '.top' self.name = 'Gromacs' # clean up gromacs backups if self.clean: do_clean('gromacs.???') # write input files for gromacs program g_energy self.write_g_energy_files() # a possible prefix for gromacs programs if 'GMXCMD_PREF' in os.environ: self.prefix = os.environ['GMXCMD_PREF'] else: self.prefix = '' # a possible postfix for gromacs programs if 'GMXCMD_POST' in os.environ: self.postfix = os.environ['GMXCMD_POST'] else: self.postfix = '' if self.do_qmmm: self.parameters['integrator'] = 'md' self.parameters['nsteps'] = '0' def generate_g96file(self): """ from current coordinates (self.structure_file) write a structure file in .g96 format """ from ase.io.gromos import write_gromos # generate structure file in g96 format write_gromos(self.label + '.g96', self.atoms) def run_editconf(self): """ run gromacs program editconf, typically to set a simulation box writing to the input structure""" command = 'editconf' + ' ' os.system(command + ' -f ' + self.label + '.g96' + ' -o ' + self.label + '.g96' + ' ' + self.params_runs.get('extra_editconf_parameters') + ' > /dev/null 2>&1') def run_genbox(self): """Run gromacs program genbox, typically to solvate the system writing to the input structure as extra parameter you need to define the file containing the solvent for instance:: CALC_MM_RELAX = Gromacs() CALC_MM_RELAX.set_own_params_runs( 'extra_genbox_parameters', '-cs spc216.gro') """ command = 'genbox' + ' ' os.system(command + \ ' -cp ' + self.label + '.g96' + \ ' -o ' + self.label + '.g96' + \ ' -p ' + self.label + '.top' + \ ' ' + self.params_runs.get('extra_genbox_parameters') +\ ' > /dev/null 2>&1') def run(self): """ runs a gromacs-mdrun with the current atom-configuration """ from ase.io.gromos import read_gromos # clean up gromacs backups if self.clean: do_clean('#*') command = 'mdrun' if self.do_qmmm: os.system(command \ + ' -s ' + self.label + '.tpr' \ + ' -o ' + self.label + '.trr ' \ + ' -e ' + self.label + '.edr ' \ + ' -g ' + self.label + '.log -ffout ' \ + ' -rerun ' + self.label + '.g96 ' \ + self.params_runs.get('extra_mdrun_parameters') \ + ' > mm.log 2>&1') else: os.system(command \ + ' -s ' + self.label + '.tpr ' \ + ' -o ' + self.label + '.trr ' \ + ' -e ' + self.label + '.edr ' \ + ' -g ' + self.label + '.log -ffout ' \ + ' -c ' + self.label + '.g96 ' \ + self.params_runs.get('extra_mdrun_parameters') \ + ' > MM.log 2>&1') atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy() def generate_topology_and_g96file(self): """ from coordinates (self.label.+'pdb') and gromacs run input file (self.label + '.mdp) generate topology (self.label+'top') and structure file in .g96 format (self.label + '.g96') """ from ase.io.gromos import read_gromos #generate structure and topology files # In case of predefinded topology file this is not done command = 'pdb2gmx' + ' ' os.system(command + \ ' -f ' + self.params_runs.get('init_structure') + \ ' -o ' + self.label + '.g96' + \ ' -p ' + self.label + '.top' + \ ' -ff ' + self.params_runs.get('force_field') + \ ' -water ' + self.params_runs.get('water') + \ ' ' + \ self.params_runs.get('extra_pdb2gmx_parameters') +\ ' > /dev/null 2>&1') # ' > debug.log 2>&1') # print command + \ # ' -f ' + self.params_runs.get('init_structure') + \ # ' -o ' + self.label+'.g96' + \ # ' -p ' + self.label+'.top' + \ # ' -ff ' + self.params_runs.get('force_field') + \ # ' -water ' + self.params_runs.get('water') + \ # ' ' + self.params_runs.get('extra_pdb2gmx_parameters') +\ # ' > /dev/null 2>&1' atoms = read_gromos(self.label + '.g96') self.atoms = atoms.copy() def generate_gromacs_run_file(self): """ Generates input file for a gromacs mdrun based on structure file and topology file resulting file is self.label + '.tpr """ #generate gromacs run input file (gromacs.tpr) try: os.remove(self.label + '.tpr') except: pass command = 'grompp ' os.system(command + \ ' -f ' + self.label + '.mdp' + \ ' -c ' + self.label + '.g96' + \ ' -p ' + self.label + '.top' + \ ' -o ' + self.label + '.tpr -maxwarn 100' + \ ' ' + self.params_runs.get('extra_grompp_parameters') +\ ' > /dev/null 2>&1') # print command + \ # ' -f ' + self.label + '.mdp' + \ # ' -c ' + self.label + '.g96' + \ # ' -p ' + self.label + '.top' + \ # ' -o ' + self.label + '.tpr -maxwarn 100' + \ # ' ' + self.params_runs.get('extra_grompp_parameters') +\ # ' > /dev/null 2>&1' def write_g_energy_files(self): """write input files for gromacs force and energy calculations for gromacs program g_energy""" filename = 'inputGenergy.txt' output = open(filename, 'w') output.write('Potential \n') output.write(' \n') output.write(' \n') output.close() filename = 'inputGtraj.txt' output = open(filename, 'w') output.write('System \n') output.write(' \n') output.write(' \n') output.close() def set_own_params(self, key, value, docstring=""): """Set own gromacs parameter with doc strings.""" self.parameters[key] = value self.params_doc[key] = docstring def set_own_params_runs(self, key, value): """Set own gromacs parameter for program parameters Add spaces to avoid errors """ self.params_runs[key] = ' ' + value + ' ' def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms=None, properties=None, system_changes=None): """Write input parameters to input file.""" FileIOCalculator.write_input(self, atoms, properties, system_changes) #print self.parameters myfile = open(self.label + '.mdp', 'w') for key, val in self.parameters.items(): if val is not None: if (self.params_doc.get(key) == None): docstring = '' else: docstring = self.params_doc[key] myfile.write('%-35s = %s ; %s\n' \ % (key, val, ';' + docstring)) myfile.close() if self.freeze_qm: self.add_freeze_group() def update(self, atoms): """ set atoms and do the calculation """ from ase.io.gromos import write_gromos # performs an update of the atoms self.atoms = atoms.copy() #must be g96 format for accuracy, alternatively binary formats write_gromos(self.label + '.g96', atoms) # does run to get forces and energies self.calculate() def calculate(self, atoms=None, properties=['energy', 'forces'], system_changes=all_changes): """ runs a gromacs-mdrun and gets energy and forces rest below is to make gromacs calculator compactible with ase-Calculator class atoms: Atoms object Contains positions, unit-cell, ... properties: list of str List of what needs to be calculated. Can be any combination of 'energy', 'forces' system_changes: list of str List of what has changed since last calculation. Can be any combination of these five: 'positions', 'numbers', 'cell', 'pbc', 'initial_charges' and 'initial_magmoms'. """ from ase import units self.run() if self.clean: do_clean('#*') # get energy try: os.remove('tmp_ene.del') except: pass command = 'g_energy' + ' ' os.system(command + \ ' -f ' + self.label + '.edr -dp ' + \ ' -o ' + self.label + \ 'Energy.xvg < inputGenergy.txt' + \ ' > /dev/null 2>&1') os.system('tail -n 1 ' + self.label + \ 'Energy.xvg > tmp_ene.del') line = open('tmp_ene.del', 'r').readline() energy = float(line.split()[1]) #We go for ASE units ! #self.energy = energy * units.kJ / units.mol self.results['energy'] = energy * units.kJ / units.mol # energies are about 100 times bigger in Gromacs units # when compared to ase units #get forces try: os.remove('tmp_force.del') except: pass #os.system('gmxdump_d -f gromacs.trr > tmp_force.del 2>/dev/null') command = 'g_traj' + ' ' os.system(command +\ ' -f ' + self.label + '.trr -s ' \ + self.label + '.tpr -of ' \ + ' -fp ' + self.label \ + 'Force.xvg < inputGtraj.txt ' \ + ' > /dev/null 2>&1') lines = open(self.label + 'Force.xvg', 'r').readlines() forces = [] forces.append( np.array([float(f) for f in lines[-1].split()[1:]])) #We go for ASE units !gromacsForce.xvg #self.forces = np.array(forces)/ units.nm * units.kJ / units.mol #self.forces = np.reshape(self.forces, (-1, 3)) tmp_forces = np.array(forces) / units.nm * units.kJ / units.mol tmp_forces = np.reshape(tmp_forces, (-1, 3)) self.results['forces'] = tmp_forces #self.forces = np.array(forces) def add_freeze_group(self): """ Add freeze group (all qm atoms) to the gromacs index file and modify the 'self.base_filename'.mdp file to adopt for freeze group. The qm regions are read from the file index.ndx This is useful if one makes many moves in MM and then only a few with both qm and mm moving. qse-qm/mm indexing starts from 0 gromacs indexing starts from 1 """ from ase.calculators.ase_qmmm_manyqm import get_qm_atoms index_filename = self.params_runs.get('index_filename') qms = get_qm_atoms(index_filename) infile = open(index_filename, 'r') lines = infile.readlines() infile.close() outfile = open(index_filename, 'w') found = False for line in lines: if ('freezeGroupQM' in line): found = True outfile.write(line) if not found: outfile.write('[ freezeGroupQM ] \n') for myqm in qms: for qmindex in myqm: outfile.write(str(qmindex + 1) + ' ') outfile.write('\n') outfile.close() infile = open(self.label + '.mdp', 'r') lines = infile.readlines() infile.close() outfile = open(self.label + '.mdp', 'w') for line in lines: outfile.write(line) outfile.write('freezegrps = freezeGroupQM \n') outfile.write('freezedim = Y Y Y \n') outfile.close() return def get_command(self): """Return command string for gromacs mdrun. """ command = None if 'GMXCMD' in os.environ: command = self.prefix + os.environ['GMXCMD'] + self.postfix return command ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/gulp.py000066400000000000000000000243021316323560300243750ustar00rootroot00000000000000"""This module defines an ASE interface to GULP. Written by: Andy Cuko Antoni Macia EXPORT ASE_GULP_COMMAND="/path/to/gulp < PREFIX.gin > PREFIX.got" Keywords Options """ import os import re import numpy as np from ase.units import eV, Ang from ase.calculators.calculator import FileIOCalculator, ReadError class GULPOptimizer: def __init__(self, atoms, calc): self.atoms = atoms self.calc = calc def todict(self): return {'type': 'optimization', 'optimizer': 'GULPOptimizer'} def run(self, fmax=None, steps=None, **gulp_kwargs): if fmax is not None: gulp_kwargs['gmax'] = fmax if steps is not None: gulp_kwargs['maxcyc'] = steps self.calc.set(**gulp_kwargs) self.atoms.calc = self.calc self.atoms.get_potential_energy() self.atoms.positions[:] = self.calc.get_atoms().positions class GULP(FileIOCalculator): implemented_properties = ['energy', 'forces'] command = 'gulp < PREFIX.gin > PREFIX.got' default_parameters = dict( keywords='conp gradients', options=[], shel=[], library="ffsioh.lib", conditions=None ) def get_optimizer(self, atoms): gulp_keywords = self.parameters.keywords.split() if 'opti' not in gulp_keywords: raise ValueError('Can only create optimizer from GULP calculator ' 'with "opti" keyword. Current keywords: {}' .format(gulp_keywords)) opt = GULPOptimizer(atoms, self) return opt #conditions=[['O', 'default', 'O1'], ['O', 'O2', 'H', '<', '1.6']] def __init__(self, restart=None, ignore_bad_restart_file=False, label='gulp', atoms=None, optimized=None, Gnorm=1000.0, steps=1000, conditions=None, **kwargs): """Construct GULP-calculator object.""" FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) self.optimized = optimized self.Gnorm = Gnorm self.steps = steps self.conditions = conditions self.library_check() self.atom_types = [] def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) p = self.parameters # Build string to hold .gin input file: s = p.keywords s += '\ntitle\nASE calculation\nend\n\n' if all(self.atoms.pbc): cell_params = self.atoms.get_cell_lengths_and_angles() s += 'cell\n{0} {1} {2} {3} {4} {5}\n'.format(*cell_params) s += 'frac\n' coords = self.atoms.get_scaled_positions() else: s += 'cart\n' coords = self.atoms.get_positions() if self.conditions is not None: c = self.conditions labels = c.get_atoms_labels() self.atom_types = c.get_atom_types() else: labels = self.atoms.get_chemical_symbols() for xyz, symbol in zip(coords, labels): s += ' {0:2} core {1} {2} {3}\n'.format(symbol, *xyz) if symbol in p.shel: s += ' {0:2} shel {1} {2} {3}\n'.format(symbol, *xyz) s += '\nlibrary {0}\n'.format(p.library) if p.options: for t in p.options: s += '%s\n' % t with open(self.prefix + '.gin', 'w') as f: f.write(s) def read_results(self): FileIOCalculator.read(self, self.label) if not os.path.isfile(self.label + '.got'): raise ReadError with open(self.label + '.got') as f: lines = f.readlines() cycles = -1 self.optimized = None for i, line in enumerate(lines): m = re.match(r'\s*Total lattice energy\s*=\s*(\S+)\s*eV', line) if m: energy = float(m.group(1)) self.results['energy'] = energy self.results['free_energy'] = energy elif line.find('Optimisation achieved') != -1: self.optimized = True elif line.find('Final Gnorm') != -1: self.Gnorm = float(line.split()[-1]) elif line.find('Cycle:') != -1: cycles += 1 elif line.find('Final Cartesian derivatives') != -1: s = i + 5 forces = [] while(True): s = s + 1 if lines[s].find("------------") != -1: break if lines[s].find(" s ") != -1: continue g = lines[s].split()[3:6] G = [-float(x) * eV / Ang for x in g] forces.append(G) forces = np.array(forces) self.results['forces'] = forces elif line.find('Final cartesian coordinates of atoms') != -1: s = i + 5 positions = [] while True: s = s + 1 if lines[s].find("------------") != -1: break if lines[s].find(" s ") != -1: continue xyz = lines[s].split()[3:6] XYZ = [float(x) * Ang for x in xyz] positions.append(XYZ) positions = np.array(positions) self.atoms.set_positions(positions) self.steps = cycles def get_opt_state(self): return self.optimized def get_opt_steps(self): return self.steps def get_Gnorm(self): return self.Gnorm def library_check(self): if self.parameters['library'] is not None: if 'GULP_LIB' not in os.environ: raise RuntimeError("Be sure to have set correctly $GULP_LIB " "or to have the force field library.") class Conditions: """Atomic labels for the GULP calculator. This class manages an array similar to atoms.get_chemical_symbols() via get_atoms_labels() method, but with atomic labels in stead of atomic symbols. This is useful when you need to use calculators like GULP or lammps that use force fields. Some force fields can have different atom type for the same element. In this class you can create a set_rule() function that assigns labels according to structural criteria.""" def __init__(self, atoms): self.atoms = atoms self.atoms_symbols = atoms.get_chemical_symbols() self.atoms_labels = atoms.get_chemical_symbols() self.atom_types = [] def min_distance_rule(self, sym1, sym2, ifcloselabel1=None, ifcloselabel2=None, elselabel1=None, max_distance=3.0): """Find pairs of atoms to label based on proximity. This is for, e.g., the ffsioh or catlow force field, where we would like to identify those O atoms that are close to H atoms. For each H atoms, we must specially label one O atom. This function is a rule that allows to define atom labels (like O1, O2, O_H etc..) starting from element symbols of an Atoms object that a force field can use and according to distance parameters. Example: atoms = read('some_xyz_format.xyz') a = Conditions(atoms) a.set_min_distance_rule('O', 'H', ifcloselabel1='O2', ifcloselabel2='H', elselabel1='O1') new_atoms_labels = a.get_atom_labels() In the example oxygens O are going to be labeled as O2 if they are close to a hydrogen atom othewise are labeled O1. """ if ifcloselabel1 is None: ifcloselabel1 = sym1 if ifcloselabel2 is None: ifcloselabel2 = sym2 if elselabel1 is None: elselabel1 = sym1 #self.atom_types is a list of element types used instead of element #symbols in orger to track the changes made. Take care of this because # is very important.. gulp_read function that parse the output # has to know which atom_type it has to associate with which # atom_symbol # # Example: [['O','O1','O2'],['H', 'H_C', 'H_O']] # this beacuse Atoms oject accept only atoms symbols self.atom_types.append([sym1, ifcloselabel1, elselabel1]) self.atom_types.append([sym2, ifcloselabel2]) dist_mat = self.atoms.get_all_distances() index_assigned_sym1 = [] index_assigned_sym2 = [] for i in range(len(self.atoms_symbols)): if self.atoms_symbols[i] == sym2: dist_12 = 1000 index_assigned_sym2.append(i) for t in range(len(self.atoms_symbols)): if (self.atoms_symbols[t] == sym1 and dist_mat[i, t] < dist_12 and t not in index_assigned_sym1): dist_12 = dist_mat[i, t] closest_sym1_index = t index_assigned_sym1.append(closest_sym1_index) for i1, i2 in zip(index_assigned_sym1, index_assigned_sym2): if dist_mat[i1, i2] > max_distance: raise ValueError('Cannot unambiguously apply minimum-distance ' 'rule because pairings are not obvious. ' 'If you wish to ignore this, then increase ' 'max_distance.') for s in range(len(self.atoms_symbols)): if s in index_assigned_sym1: self.atoms_labels[s] = ifcloselabel1 elif s not in index_assigned_sym1 and self.atoms_symbols[s] == sym1: self.atoms_labels[s] = elselabel1 elif s in index_assigned_sym2: self.atoms_labels[s] = ifcloselabel2 def get_atom_types(self): return self.atom_types def get_atoms_labels(self): labels = np.array(self.atoms_labels) return labels ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/interface.py000066400000000000000000000110351316323560300253650ustar00rootroot00000000000000"""Class for demonstrating the ASE-calculator interface.""" import numpy as np class Calculator: """ASE calculator. A calculator should store a copy of the atoms object used for the last calculation. When one of the *get_potential_energy*, *get_forces*, or *get_stress* methods is called, the calculator should check if anything has changed since the last calculation and only do the calculation if it's really needed. Two sets of atoms are considered identical if they have the same positions, atomic numbers, unit cell and periodic boundary conditions.""" def get_potential_energy(self, atoms=None, force_consistent=False): """Return total energy. Both the energy extrapolated to zero Kelvin and the energy consistent with the forces (the free energy) can be returned.""" return 0.0 def get_forces(self, atoms): """Return the forces.""" return np.zeros((len(atoms), 3)) def get_stress(self, atoms): """Return the stress.""" return np.zeros(6) def calculation_required(self, atoms, quantities): """Check if a calculation is required. Check if the quantities in the *quantities* list have already been calculated for the atomic configuration *atoms*. The quantities can be one or more of: 'energy', 'forces', 'stress', 'charges' and 'magmoms'. This method is used to check if a quantity is available without further calculations. For this reason, calculators should react to unknown/unsupported quantities by returning True, indicating that the quantity is *not* available.""" return False class DFTCalculator(Calculator): """Class for demonstrating the ASE interface to DFT-calculators.""" def get_number_of_bands(self): """Return the number of bands.""" return 42 def get_xc_functional(self): """Return the XC-functional identifier. 'LDA', 'PBE', ...""" return 'LDA' def get_bz_k_points(self): """Return all the k-points in the 1. Brillouin zone. The coordinates are relative to reciprocal latice vectors.""" return np.zeros((1, 3)) def get_number_of_spins(self): """Return the number of spins in the calculation. Spin-paired calculations: 1, spin-polarized calculation: 2.""" return 1 def get_spin_polarized(self): """Is it a spin-polarized calculation?""" return False def get_ibz_k_points(self): """Return k-points in the irreducible part of the Brillouin zone. The coordinates are relative to reciprocal latice vectors.""" return np.zeros((1, 3)) def get_k_point_weights(self): """Weights of the k-points. The sum of all weights is one.""" return np.ones(1) def get_pseudo_density(self, spin=None, pad=True): """Return pseudo-density array. If *spin* is not given, then the total density is returned. Otherwise, the spin up or down density is returned (spin=0 or 1).""" return np.zeros((40, 40, 40)) def get_effective_potential(self, spin=0, pad=True): """Return pseudo-effective-potential array.""" return np.zeros((40, 40, 40)) def get_pseudo_wave_function(self, band=0, kpt=0, spin=0, broadcast=True, pad=True): """Return pseudo-wave-function array.""" return np.zeros((40, 40, 40)) def get_eigenvalues(self, kpt=0, spin=0): """Return eigenvalue array.""" return np.arange(42, float) def get_occupation_numbers(self, kpt=0, spin=0): """Return occupation number array.""" return np.ones(42) def get_fermi_level(self): """Return the Fermi level.""" return 0.0 def initial_wannier(self, initialwannier, kpointgrid, fixedstates, edf, spin, nbands): """Initial guess for the shape of wannier functions. Use initial guess for wannier orbitals to determine rotation matrices U and C. """ raise NotImplementedError def get_wannier_localization_matrix(self, nbands, dirG, kpoint, nextkpoint, G_I, spin): """Calculate integrals for maximally localized Wannier functions.""" def get_magnetic_moment(self, atoms=None): """Return the total magnetic moment.""" return self.occupation.magmom def get_number_of_grid_points(self): """Return the shape of arrays.""" return self.gd.N_c ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/interfacechecker.py000066400000000000000000000145761316323560300267270ustar00rootroot00000000000000from __future__ import print_function import traceback import numpy as np from ase import Atoms # This module the InterfaceTester class which tests the extent to # which an object behaves like an ASE calculator. # # It runs the ASE interface methods and performs a few very basic checks # on the returned objects, then writes a list of errors. # # Future improvements: Check that arrays are padded correctly, verify # more information about shapes, maybe do some complicated state # changes and check that the calculator behaves properly. class Args: # This class is just syntantical sugar to pass args and kwargs # easily when testing many methods after one another. def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs def unpack(self): return self.args, self.kwargs args = Args class Error: def __init__(self, code, error, methname): self.code = code self.error = error self.methname = methname self.txt = traceback.format_exc() self.callstring = None class InterfaceChecker: def __init__(self, obj): self.obj = obj self.returnvalues = {} self.errors = [] def _check(self, methname, args=args(), rtype=None): args, kwargs = args.unpack() try: meth = getattr(self.obj, methname) except AttributeError as err: return Error('MISSING', err, methname) try: value = meth(*args, **kwargs) except NotImplementedError as err: return Error('not implemented', err, methname) except Exception as err: return Error(err.__class__.__name__, err, methname) else: self.returnvalues[methname] = value if rtype is not None: if not isinstance(value, rtype): return Error('TYPE', TypeError('got %s but expected %s' % (type(value), rtype)), methname) return None def check(self, methname, args=args(), rtype=None): pargs, kwargs = args.unpack() def get_string_repr(obj): if isinstance(obj, Atoms): return '' else: return repr(obj) pargsstrs = [get_string_repr(obj) for obj in pargs] kwargsstrs = ['%s=%s' % (key, get_string_repr(kwargs[key])) for key in sorted(kwargs)] pargskwargsstr = ', '.join(pargsstrs + kwargsstrs) err = self._check(methname, args, rtype) callstring = '%s(%s)' % (methname, pargskwargsstr) if err is None: status = 'ok' else: status = err.code err.callstring = callstring self.errors.append(err) print('%16s : %s' % (status, callstring)) def check_interface(calc): tester = InterfaceChecker(calc) c = tester.check system = calc.get_atoms() # Methods specified by ase.calculators.interface.Calculator c('get_atoms', rtype=Atoms) c('get_potential_energy', rtype=float) c('get_potential_energy', args(atoms=system), rtype=float) c('get_potential_energy', args(atoms=system, force_consistent=True), rtype=float) c('get_forces', args(system), np.ndarray) c('get_stress', args(system), np.ndarray) c('calculation_required', args(system, []), rtype=bool) # Methods specified by ase.calculators.interface.DFTCalculator c('get_number_of_bands', rtype=int) c('get_xc_functional', rtype=str) c('get_bz_k_points', rtype=np.ndarray) c('get_number_of_spins', rtype=int) c('get_spin_polarized', rtype=bool) c('get_ibz_k_points', rtype=np.ndarray) c('get_k_point_weights', rtype=np.ndarray) for meth in ['get_pseudo_density', 'get_effective_potential']: c(meth, rtype=np.ndarray) c(meth, args(spin=0, pad=False), rtype=np.ndarray) spinpol = tester.returnvalues.get('get_spin_polarized') if spinpol: c(meth, args(spin=1, pad=True), rtype=np.ndarray) for pad in [False, True]: c('get_pseudo_density', args(spin=None, pad=pad), rtype=np.ndarray) for meth in ['get_pseudo_density', 'get_effective_potential']: c(meth, args(spin=0, pad=False), rtype=np.ndarray) spinpol = tester.returnvalues.get('get_spin_polarized') if spinpol: c(meth, args(spin=1, pad=True), rtype=np.ndarray) nbands = tester.returnvalues.get('get_number_of_bands') if nbands is not None and isinstance(nbands, int) and nbands > 0: c('get_pseudo_wave_function', args(band=nbands - 1), rtype=np.ndarray) c('get_pseudo_wave_function', args(band=nbands - 1, kpt=0, spin=0, broadcast=False, pad=False), rtype=np.ndarray) c('get_eigenvalues', args(kpt=0, spin=0), rtype=np.ndarray) c('get_occupation_numbers', args(kpt=0, spin=0), rtype=np.ndarray) c('get_fermi_level', rtype=float) # c('initial_wanner', ........) what the heck? # c('get_wannier_localization_matrix', ...) No. c('get_magnetic_moment', args(atoms=system), rtype=float) # c('get_number_of_grid_points', rtype=tuple) # Hmmmm. Not for now... # Optional methods sometimes invoked by ase.atoms.Atoms c('get_magnetic_moments', rtype=np.ndarray) c('get_charges', rtype=np.ndarray) c('get_potential_energies', rtype=np.ndarray) c('get_stresses', rtype=np.ndarray) c('get_dipole_moment', rtype=np.ndarray) real_errs = [err for err in tester.errors if not isinstance(err.error, NotImplementedError)] if len(real_errs) > 0: print() print('Errors') print('======') for err in tester.errors: print('%s: %s' % (err.code, err.callstring)) print(err.txt) print() return tester.errors def main_gpaw(): from gpaw import GPAW from ase.build import molecule system = molecule('H2') system.center(vacuum=1.5) system.pbc = 1 calc = GPAW(h=0.3, mode='lcao', txt=None) system.set_calculator(calc) system.get_potential_energy() check_interface(calc) def main_octopus(): from octopus import Octopus from ase.build import molecule system = molecule('H2') system.center(vacuum=1.5) system.pbc = 1 calc = Octopus() system.set_calculator(calc) system.get_potential_energy() check_interface(calc) if __name__ == '__main__': main_gpaw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/000077500000000000000000000000001316323560300243105ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/ChangeLog000066400000000000000000000077501316323560300260730ustar00rootroot000000000000002010-07-08 John Tester * jacapo.py (Jacapo.get_psp): added a line to return None when sym and z is None, that probably means nothing is being asked for, but that must be caught. 2010-06-16 John Tester * jacapo.py (Jacapo.set_nbands): added code to delete the number_of)bands nc dimension. if you change the number of bands in a calculator, you need to delete this so that the new dimension can be fixed. (valid_kpts): changed ot (str(x.dtype)[0:5] to make sure the string comparison works. (valid_kpts): fixed to [0:7] 2010-06-02 John Tester * jacapo.py (ados_changed): fixed error in the comparison. it used to return True if ados was None and x is not None. I added cases for each possibility. (calculate_stress_changed): added. (xc_changed): added. 2009-12-21 John Tester * jacapo.py (get_dipole_moment): fixed code to actually calculate the dipole moment. 2009-12-08 John Tester * jacapo.py: fixed get_forces for when atoms is None, e.g. when the calculator itself tries to get the forces, not the atoms. (Jacapo.get_pseudopotentials): added this function. (Jacapo.get_ncoutput): added this function. (Jacapo.get_debug): added this function. (_set_electronic_minimization): added all the _set_kw methods 2009-04-14 John Tester * jacapo.py (Jacapo.get_spin_polarized): added variable existence check so that __str__ works if spin-polarization or nbands has not been defined. (read_only_atoms): added reading the constraints from the netcdf file (Jacapo.set_atoms): added support for saving a pickled string of the constraints to the netcdf file. 2009-04-02 Lars C Grabow * jacapo.py (Jacapo.initial_wannier): uses wannier.py instead of legacyASE2.py (Jacapo.get_wannier_localization_matrix): uses wannier.py instead of legacyASE2.py (Jacapo.get_pseudo_wave_function): new implementation without legacyASE2.py (Jacapo.get_wave_function): new implementation without legacyASE2.py (Jacapo.get_fftgrid): closed open nc file. (Jacapo.set_atoms): fixed the frame pointer bug (Jacapo.calculate): fixed the frame pointer bug (Jacapo.__init__): fixed the frame pointer bug (Jacapo.get_effective_potential): using get_fftgrid() to get hardgrid (Jacapo.get_electrostatic_potential): using get_fftgrid() to get hardgrid (Jacapo.get_charge_density): using get_fftgrid() to get hardgrid * utils/wannier.py: added. * legacyASE2.py: removed. * version.py: changed version number to 0.6.7 2009-03-24 Lars C Grabow * jacapo.py (__init__, __del__, _set_frame_number, _increment_frame, calculate, execute_external_dynamics, write_nc): stay_alive support was added using a new variable self._frame. (Jacapo.get_potential_energy): Now raises a runtime error if fortran executable didn't finish correctly. 2009-02-05 John Tester * jacapo.py (Jacapo.get_charge_density): I had not divided the density array by the volume before. this is fixed now. 2009-02-04 John Tester * jacapo.py (Jacapo.get_nbands): v.NumberOfBands was returning a list for some reason. I changed it to return a number (Jacapo.set_fftgrid): fixed error in delete_ncattdimvar. ncfile arg was missing. 2009-02-03 John Tester * jacapo.py (Jacapo.read_only_atoms): new ase suggests use set_initial_magnetic moments instead. 2009-02-02 John Tester * jacapo.py (Jacapo.set_fixmagmom): fixed spelling error in FixedMagneticMoment attribute (Jacapo.set_kpts): added capability to specify a list of kpts for band structure calculations. * 0.6.4 fixed error in placement of set_psp_database. 2009-02-01 John Tester * jacapo.py (Jacapo.get_magnetic_moment): added. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/__init__.py000066400000000000000000000002031316323560300264140ustar00rootroot00000000000000import Scientific assert [int(x) for x in Scientific.__version__.split('.')] >= [2, 8] from ase.calculators.jacapo.jacapo import * ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/changed.py000066400000000000000000000136151316323560300262610ustar00rootroot00000000000000from __future__ import print_function import numpy as np import logging log = logging.getLogger('Jacapo') import ase.dft.kpoints from ase.utils import basestring ''' provides functions to determine if an input parameter has changed. ''' ####################################################################### #### changed functions def kpts_changed(calc, x): ''' check if kpt grid has changed. we have to take care to generate the right k-points from x if needed. if a user provides (4,4,4) we need to generate the MP grid, etc... Since i changed the MP code in set_kpts, there is some incompatibility with old jacapo calculations and their MP grids. ''' #chadi-cohen if isinstance(x, basestring): listofkpts = getattr(ase.dft.kpoints, x) #monkhorst-pack grid elif np.array(x).shape == (3,): from ase.dft.kpoints import monkhorst_pack N1, N2, N3 = x listofkpts = monkhorst_pack((N1, N2, N3)) #user-defined list is provided elif len(np.array(x).shape) == 2: listofkpts = np.array(x) else: raise Exception('apparent invalid setting for kpts') grid = calc.get_kpts() if grid.shape != listofkpts.shape: return True if (abs(listofkpts - grid) < 1e-6).all(): return False else: return True def electronic_minimization_changed(calc, x): myx = calc.get_electronic_minimization() for key in myx: if myx[key] != x[key]: print(key, myx[key], ' changed to ', x[key]) return True return False def spinpol_changed(calc, x): if x != calc.get_spinpol(): return True else: return False def symmetry_changed(calc, x): if x != calc.get_symmetry(): return True else: return False def xc_changed(calc, x): if x != calc.get_xc(): return True return False def calculate_stress_changed(calc, x): if x != calc.get_calculate_stress(): return True return False def ados_changed(calc, x): ados = calc.get_ados() #ados may not be defined, and then None is returned if ados is None and x is None: return False elif ados is None and x is not None: return True elif ados is not None and x is None: return True #getting here means ados and x are not none so we compare them for key in x: try: if x[key] != ados[key]: return True except ValueError: if (x[key] != ados[key]).all(): return True return False def convergence_changed(calc, x): conv = calc.get_convergence() for key in x: if x[key] != conv[key]: return True return False def charge_mixing_changed(calc, x): cm = calc.get_charge_mixing() if x is None and cm is None: return False else: return True for key in x: if x[key] != cm[key]: return True return False def decoupling_changed(calc, x): pars = calc.get_decoupling() for key in x: if x[key] != pars[key]: return True return False def dipole_changed(calc, x): pars = calc.get_dipole() #pars stored in calculator # pars = False if no dipole variables exist # XXX fix the "logic" below. "if not pars and not x" # or can it be very different types? This is very difficult to read if (pars is False and x is False): return False #no change elif (pars is False and x is not False): return True # both x and pars is a dictionary # XXX wtf? type(dict) == dict. If x is a dict then type(x) is at least if (isinstance(pars, type(dict)) and isinstance(pars, type(x))): for key in x: if key == 'position': # dipole layer position is never written to the nc file print('need to do something special') continue if x[key] != pars[key]: return True #nothing seems to have changed. return False def extpot_changed(calc, x): extpot = calc.get_extpot() if (x == extpot).all(): return False return True def fftgrid_changed(calc, x): validkeys = ['soft', 'hard'] myx = calc.get_fftgrid() if (myx['soft'] == x['soft'] and myx['hard'] == x['hard']): return False else: return True def ncoutput_changed(calc, x): ncout = calc.get_ncoutput() for key in x: if x[key] != ncout[key]: return True return False def nbands_changed(calc, x): if calc.get_nbands() == x: return False else: return True def occupationstatistics_changed(calc, x): if calc.get_occupationstatistics() == x: return False else: return True def pw_changed(calc, x): if calc.get_pw() == x: return False else: return True def dw_changed(calc, x): if calc.get_dw() == x: return False else: return True def ft_changed(calc, x): if calc.get_ft() == x: return False else: return True def mdos_changed(calc,x): myx = calc.get_mdos() log.debug('myx = %s' % str(myx)) log.debug('x = %s' % str(x)) if x is None and myx is None: return False elif ((x is None and myx is not None) or (x is not None and myx is None)): return True else: for key in x: if x[key] != myx[key]: return True return False def pseudopotentials_changed(calc,x): mypsp = calc.get_pseudopotentials() if len(mypsp) != len(x): return True for key in x: if key not in mypsp: return True if mypsp[key] != x[key]: return True for key in mypsp: if key not in x: return True if mypsp[key] != x[key]: return True return False def status_changed(calc,x): if calc.get_status() != x: return True return False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/jacapo.py000066400000000000000000004465021316323560300261320ustar00rootroot00000000000000from __future__ import print_function ''' python module for ASE2-free and Numeric-free dacapo U{John Kitchin} December 25, 2008 This module supports numpy directly. * ScientificPython2.8 is required - this is the first version to use numpy by default. see https://wiki.fysik.dtu.dk/stuff/nc/ for dacapo netcdf variable documentation ''' __docformat__ = 'restructuredtext' import sys import exceptions, glob, os, pickle, string from Scientific.IO.NetCDF import NetCDFFile as netCDF import numpy as np import subprocess as sp from ase.calculators.calculator import PropertyNotImplementedError from ase.utils import basestring from . import validate from . import changed try: from uuid import uuid1 except ImportError: #probably an old python before 2.5 import random, time def uuid1(): t = time.asctime() host = os.environ.get('HOSTNAME', 'localhost') random.seed(host + str(t)) s = host + '-' + t + '-'+str(random.random()) return s.replace(' ','-') import logging log = logging.getLogger('Jacapo') import ase.dft.kpoints handler = logging.StreamHandler() if sys.version_info < (2,5): # no funcName in python 2.4 formatstring = ('%(levelname)-10s ' 'lineno: %(lineno)-4d %(message)s') else: formatstring = ('%(levelname)-10s function: %(funcName)s ' 'lineno: %(lineno)-4d %(message)s') formatter = logging.Formatter(formatstring) handler.setFormatter(formatter) log.addHandler(handler) from ase.calculators.jacapo.validate import get_dacapopath class DacapoRunning(exceptions.Exception): """Raised when ncfile.status = 'running'""" pass class DacapoAborted(exceptions.Exception): """Raised when ncfile.status = 'aborted'""" pass class DacapoInput(exceptions.Exception): ''' raised for bad input variables''' pass class DacapoAbnormalTermination(exceptions.Exception): """Raised when text file does not end correctly""" pass class DacapoDryrun(exceptions.Exception): """Raised when text file does not end correctly""" pass def read(ncfile): '''return atoms and calculator from ncfile >>> atoms, calc = read('co.nc') ''' calc = Jacapo(ncfile) atoms = calc.get_atoms() #this returns a copy return (atoms, calc) class Jacapo: ''' Python interface to the Fortran DACAPO code ''' __name__ = 'Jacapo' __version__ = '0.4' #dictionary of valid input variables and default settings default_input = {'atoms':None, 'pw':350, 'dw':350, 'xc':'PW91', 'nbands':None, 'ft':0.1, 'kpts':(1,1,1), 'spinpol':False, 'fixmagmom':None, 'symmetry':False, 'calculate_stress':False, 'dipole':{'status':False, 'mixpar':0.2, 'initval':0.0, 'adddipfield':0.0, 'position':None}, 'status':'new', 'pseudopotentials':None, 'extracharge':None, 'extpot':None, 'fftgrid':None, 'ascii_debug':'Off', 'ncoutput':{'wf':'Yes', 'cd':'Yes', 'efp':'Yes', 'esp':'Yes'}, 'ados':None, 'decoupling':None, 'external_dipole':None, 'convergence':{'energy':0.00001, 'density':0.0001, 'occupation':0.001, 'maxsteps':None, 'maxtime':None}, 'charge_mixing':{'method':'Pulay', 'mixinghistory':10, 'mixingcoeff':0.1, 'precondition':'No', 'updatecharge':'Yes'}, 'electronic_minimization':{'method':'eigsolve', 'diagsperband':2}, 'occupationstatistics':'FermiDirac', 'fftgrid':{'soft':None, 'hard':None}, 'mdos':None, 'psp':None } def __init__(self, nc='out.nc', outnc=None, deletenc=False, debug=logging.WARN, stay_alive=False, **kwargs): ''' Initialize the Jacapo calculator :Parameters: nc : string output netcdf file, or input file if nc already exists outnc : string output file. by default equal to nc deletenc : Boolean determines whether the ncfile is deleted on initialization so a fresh run occurs. If True, the ncfile is deleted if it exists. debug : integer logging debug level. Valid kwargs: atoms : ASE.Atoms instance atoms is an ase.Atoms object that will be attached to this calculator. pw : integer sets planewave cutoff dw : integer sets density cutoff kpts : iterable set chadi-cohen, monkhorst-pack kpt grid, e.g. kpts = (2,2,1) or explicit list of kpts spinpol : Boolean sets whether spin-polarization is used or not. fixmagmom : float set the magnetic moment of the unit cell. only used in spin polarize calculations ft : float set the Fermi temperature used in occupation smearing xc : string set the exchange-correlation functional. one of ['PZ','VWN','PW91','PBE','RPBE','revPBE'], dipole boolean turn the dipole correction on (True) or off (False) or: dictionary of parameters to fine-tune behavior {'status':False, 'mixpar':0.2, 'initval':0.0, 'adddipfield':0.0, 'position':None} nbands : integer set the number of bands symmetry : Boolean Turn symmetry reduction on (True) or off (False) stress : Boolean Turn stress calculation on (True) or off (False) debug : level for logging could be something like logging.DEBUG or an integer 0-50. The higher the integer, the less information you see set debug level (0 = off, 10 = extreme) Modification of the nc file only occurs at calculate time if needed >>> calc = Jacapo('CO.nc') reads the calculator from CO.nc if it exists or minimally initializes CO.nc with dimensions if it does not exist. >>> calc = Jacapo('CO.nc', pw=300) reads the calculator from CO.nc or initializes it if it does not exist and changes the planewave cutoff energy to 300eV >>> atoms = Jacapo.read_atoms('CO.nc') returns the atoms in the netcdffile CO.nc, with the calculator attached to it. >>> atoms, calc = read('CO.nc') ''' self.debug = debug log.setLevel(debug) self.pars = Jacapo.default_input.copy() self.pars_uptodate = {} log.debug(self.pars) for key in self.pars: self.pars_uptodate[key] = False self.kwargs = kwargs self.set_psp_database() if deletenc and os.path.exists(nc): os.unlink(nc) self.set_nc(nc) #assume not ready at init, rely on code later to change this self.ready = False # need to set a default value for stay_alive self.stay_alive = stay_alive # for correct updating, we need to set the correct frame number # before setting atoms or calculator self._set_frame_number() if os.path.exists(nc): self.atoms = self.read_only_atoms(nc) #if atoms object is passed to #__init__ we assume the user wants the atoms object # updated to the current state in the file. if 'atoms' in kwargs: log.debug('Updating the atoms in kwargs') atoms = kwargs['atoms'] atoms.set_cell(self.atoms.get_cell()) atoms.set_positions(self.atoms.get_positions()) atoms.calc = self #update the parameter list from the ncfile self.update_input_parameters() self.ready = True #change output file if needed if outnc: self.set_nc(outnc) if len(kwargs) > 0: if 'stress' in kwargs: raise DacapoInput('stress keyword is deprecated. ' 'you must use calculate_stress instead') #make sure to set calculator on atoms if it was in kwargs #and do this first, since some parameters need info from atoms if 'atoms' in kwargs: #we need to set_atoms here so the atoms are written to #the ncfile self.set_atoms(kwargs['atoms']) kwargs['atoms'].calc = self del kwargs['atoms'] #so we don't call it in the next #line. we don't want to do that #because it will update the _frame #counter, and that should not be #done here. self.set(**kwargs) #if nothing changes, nothing will be done def get(self, *args): ''' get values for args. e.g. calc.get('nbands') ''' if len(args) == 0: return None elif len(args) == 1: return self.pars[args[0]] else: return [self.pars[arg] for arg in args] def set(self, **kwargs): '''set a parameter parameter is stored in dictionary that is processed later if a calculation is need. ''' if 'DACAPO_NOSET' in os.environ: #it is probably a bug that this is detected so we raise an exception raise Exception('DACAPO_NOSET detected, nothing is being set') for key in kwargs: if key not in self.default_input: raise DacapoInput('%s is not valid input' % key) if kwargs[key] is None: continue #now check for valid input validf = getattr(validate, 'valid_%s' % key) valid = validf(kwargs[key]) if not valid: s = 'Warning invalid input detected for key "%s" %s' log.warn(s % (key, kwargs[key])) raise DacapoInput(s % (key, kwargs[key])) #now see if key has changed if key in self.pars: changef = getattr(changed, '%s_changed' % key) if os.path.exists(self.get_nc()): notchanged = not changef(self, kwargs[key]) else: notchanged = False log.debug('%s notchanged = %s' % (key, notchanged)) if notchanged: continue log.debug('setting: %s. self.ready = False ' % key) # psp's are not stored in self.pars, everything else is if key == 'psp': self.psp[kwargs[key]['sym']] = kwargs[key]['psp'] else: self.pars[key] = kwargs[key] self.pars_uptodate[key] = False self.ready = False log.debug('exiting set function') def write_input(self): '''write out input parameters as needed you must define a self._set_keyword function that does all the actual writing. ''' log.debug('Writing input variables out') log.debug(self.pars) if 'DACAPO_READONLY' in os.environ: raise Exception('DACAPO_READONLY set and you tried to write!') if self.ready: log.debug('self.ready = %s' % self.ready) log.debug('detected everything is ready, not writing input out') return # Only write out changed parameters. this function does not do # the writing, that is done for each variable in private # functions. for key in self.pars: if self.pars_uptodate[key] is False: setf = getattr(self, 'set_%s' % key) #setf = 'set_%s' % key if self.pars[key] is None: continue log.debug('trying to call: %s' % setf) log.debug('self.%s(self.pars[key])' % setf) log.debug('key = %s' % str(self.pars[key])) if isinstance(self.pars[key], dict): setf(**self.pars[key]) else: setf(self.pars[key]) self.pars_uptodate[key] = True #update the changed flag log.debug('wrote %s: %s' % (key, str(self.pars[key]))) #set Jacapo version ncf = netCDF(self.get_nc(), 'a') ncf.Jacapo_version = Jacapo.__version__ ncf.sync() ncf.close() def update_input_parameters(self): '''read in all the input parameters from the netcdfile''' log.debug('Updating parameters') for key in self.default_input: getf = getattr(self, 'get_%s' % key) log.debug('getting key: %s' % key) self.pars[key] = getf() self.pars_uptodate[key] = True return self.pars def write(self, new=False): '''write out everything to the ncfile : self.get_nc() new determines whether to delete any existing ncfile, and rewrite it. ''' nc = self.get_nc() if new: if os.path.exists(nc): os.unlink(nc) self.ready = False for key in self.pars_uptodate: self.pars_uptodate[key] = False if not os.path.exists(nc): self.initnc() self.write_input() self.write_nc() def initnc(self, ncfile=None): '''create an ncfile with minimal dimensions in it this makes sure the dimensions needed for other set functions exist when needed.''' if ncfile is None: ncfile = self.get_nc() else: self.set_nc(ncfile) log.debug('initializing %s' % ncfile) base = os.path.split(ncfile)[0] if base is not '' and not os.path.isdir(base): os.makedirs(base) ncf = netCDF(ncfile, 'w') #first, we define some dimensions we always need #unlimited ncf.createDimension('number_ionic_steps', None) ncf.createDimension('dim1', 1) ncf.createDimension('dim2', 2) ncf.createDimension('dim3', 3) ncf.createDimension('dim4', 4) ncf.createDimension('dim5', 5) ncf.createDimension('dim6', 6) ncf.createDimension('dim7', 7) ncf.createDimension('dim20', 20) #for longer strings ncf.status = 'new' ncf.history = 'Dacapo' ncf.uuid = str(uuid1()) ncf.Jacapo_version = Jacapo.__version__ ncf.close() self.ready = False self._frame = 0 def __del__(self): '''If calculator is deleted try to stop dacapo program ''' if hasattr(self, '_dacapo'): if self._dacapo.poll()==None: self.execute_external_dynamics(stopprogram=True) #and clean up after Dacapo if os.path.exists('stop'): os.remove('stop') #remove slave files txt = self.get_txt() if txt is not None: slv = txt + '.slave*' for slvf in glob.glob(slv): os.remove(slvf) def __str__(self): ''' pretty-print the calculator and atoms. we read everything directly from the ncfile to prevent triggering any calculations ''' s = [] if self.nc is None: return 'No netcdf file attached to this calculator' if not os.path.exists(self.nc): return 'ncfile (%s) does not exist yet' % self.nc nc = netCDF(self.nc, 'r') s.append(' ---------------------------------') s.append(' Dacapo calculation from %s' % self.nc) if hasattr(nc, 'uuid'): s.append(' uuid = %s' % nc.uuid) if hasattr(nc, 'status'): s.append(' status = %s' % nc.status) if hasattr(nc, 'version'): s.append(' version = %s' % nc.version) if hasattr(nc, 'Jacapo_version'): s.append(' Jacapo version = %s' % nc.Jacapo_version[0]) energy = nc.variables.get('TotalEnergy', None) if energy and energy[:][-1] < 1E36: # missing values get # returned at 9.3E36 s.append(' Energy = %1.6f eV' % energy[:][-1]) else: s.append(' Energy = None') s.append('') atoms = self.get_atoms() if atoms is None: s.append(' no atoms defined') else: uc = atoms.get_cell() #a, b, c = uc s.append(" Unit Cell vectors (angstroms)") s.append(" x y z length") for i, v in enumerate(uc): L = (np.sum(v**2))**0.5 #vector length s.append(" a%i [% 1.4f % 1.4f % 1.4f] %1.2f" % (i, v[0], v[1], v[2], L)) stress = nc.variables.get('TotalStress', None) if stress is not None: stress = np.take(stress[:].ravel(), [0, 4, 8, 5, 2, 1]) s.append(' Stress: xx, yy, zz, yz, xz, xy') s1 = ' % 1.3f % 1.3f % 1.3f % 1.3f % 1.3f % 1.3f' s.append(s1 % tuple(stress)) else: s.append(' No stress calculated.') s.append(' Volume = %1.2f A^3' % atoms.get_volume()) s.append('') z = " Atom, sym, position (in x,y,z), tag, rmsForce and psp" s.append(z) #this is just the ncvariable forces = nc.variables.get('DynamicAtomForces', None) for i, atom in enumerate(atoms): sym = atom.symbol pos = atom.position tag = atom.tag if forces is not None and (forces[:][-1][i] < 1E36).all(): f = forces[:][-1][i] # Lars Grabow: this seems to work right for some # reason, but I would expect this to be the right # index order f=forces[-1][i][:] # frame,atom,direction rmsforce = (np.sum(f**2))**0.5 else: rmsforce = None st = " %2i %3.12s " % (i, sym) st += "[% 7.3f%7.3f% 7.3f] " % tuple(pos) st += " %2s " % tag if rmsforce is not None: st += " %4.3f " % rmsforce else: st += ' None ' st += " %s" % (self.get_psp(sym)) s.append(st) s.append('') s.append(' Details:') xc = self.get_xc() if xc is not None: s.append(' XCfunctional = %s' % self.get_xc()) else: s.append(' XCfunctional = Not defined') pw = self.get_pw() if pw is None: pw = 'default (350eV)' s.append(' Planewavecutoff = %s eV' % pw) dw = self.get_dw() if dw: s.append(' Densitywavecutoff = %i eV' % int(self.get_dw())) else: s.append(' Densitywavecutoff = None') ft = self.get_ft() if ft is not None: s.append(' FermiTemperature = %f kT' % ft) else: s.append(' FermiTemperature = not defined') try: nelectrons = self.get_valence() except: nelectrons = None if nelectrons is not None: s.append(' Number of electrons = %1.1f' % nelectrons) else: s.append(' Number of electrons = N/A') s.append(' Number of bands = %s' % self.get_nbands()) s.append(' Kpoint grid = %s' % str(self.get_kpts_type())) s.append(' Spin-polarized = %s' % self.get_spin_polarized()) # if self.get_spin_polarized(): # s.append(' Unit cell magnetic moment = %1.2f bohr-magnetons' % \ # self.get_magnetic_moment()) s.append(' Dipole correction = %s' % self.get_dipole()) s.append(' Symmetry = %s' % self.get_symmetry()) s.append(' Constraints = %s' % str(atoms._get_constraints())) s.append(' ---------------------------------') nc.close() return string.join(s, '\n') #todo figure out other xc psp databases def set_psp_database(self, xc=None): ''' get the xc-dependent psp database :Parameters: xc : string one of 'PW91', 'PBE', 'revPBE', 'RPBE', 'PZ' not all the databases are complete, and that means some psp do not exist. note: this function is not supported fully. only pw91 is imported now. Changing the xc at this point results in loading a nearly empty database, and I have not thought about how to resolve that ''' if xc == 'PW91' or xc is None: from .pw91_psp import defaultpseudopotentials else: log.warn('PW91 pseudopotentials are being used!') #todo build other xc psp databases from .pw91_psp import defaultpseudopotentials self.psp = defaultpseudopotentials def _set_frame_number(self, frame=None): '''set framenumber in the netcdf file this is equal to the number of ionic steps dimension''' if frame is None: if os.path.exists(self.nc): nc = netCDF(self.nc, 'r') # nc.dimensions['number_ionic_steps'] is None if 'TotalEnergy' in nc.variables: number_ionic_steps = nc.variables['TotalEnergy'].shape[0] else: number_ionic_steps = nc.variables['DynamicAtomPositions'].shape[0] frame = number_ionic_steps - 1 nc.close() else: if hasattr(self,'atoms'): frame = 1 else: #when atoms are set, the frame will be incremented frame = 0 ## if 'TotalEnergy' in nc.variables: ## frame = nc.variables['TotalEnergy'].shape[0] ## # make sure the last energy is reasonable. Sometime ## # the field is empty if the calculation ran out of ## # walltime for example. Empty values get returned as ## # 9.6E36. Dacapos energies should always be negative, ## # so if the energy is > 1E36, there is definitely ## # something wrong and a restart is required. ## if nc.variables.get('TotalEnergy', None)[-1] > 1E36: ## log.warn("Total energy > 1E36. NC file is incomplete. \ ## calc.restart may be required") ## #self.restart() log.info("Current frame number is: %i" % (frame - 1)) self._frame = frame - 1 #netCDF starts counting with 1 def _increment_frame(self): 'increment the framenumber' log.debug('incrementing frame') self._frame += 1 def set_pw(self, pw): '''set the planewave cutoff. :Parameters: pw : integer the planewave cutoff in eV this function checks to make sure the density wave cutoff is greater than or equal to the planewave cutoff.''' nc = netCDF(self.nc, 'a') if 'PlaneWaveCutoff' in nc.variables: vpw = nc.variables['PlaneWaveCutoff'] vpw.assignValue(pw) else: vpw = nc.createVariable('PlaneWaveCutoff', 'd', ('dim1',)) vpw.assignValue(pw) if 'Density_WaveCutoff' in nc.variables: vdw = nc.variables['Density_WaveCutoff'] dw = vdw.getValue() if pw > dw: vdw.assignValue(pw) #make them equal else: vdw = nc.createVariable('Density_WaveCutoff', 'd', ('dim1',)) vdw.assignValue(pw) nc.close() self.restart() #nc dimension change for number_plane_Wave dimension self.set_status('new') self.ready = False def set_dw(self, dw): '''set the density wave cutoff energy. :Parameters: dw : integer the density wave cutoff The function checks to make sure it is not less than the planewave cutoff. Density_WaveCutoff describes the kinetic energy necessary to represent a wavefunction associated with the total density, i.e. G-vectors for which $\vert G\vert^2$ $<$ 4*Density_WaveCutoff will be used to describe the total density (including augmentation charge and partial core density). If Density_WaveCutoff is equal to PlaneWaveCutoff this implies that the total density is as soft as the wavefunctions described by the kinetic energy cutoff PlaneWaveCutoff. If a value of Density_WaveCutoff is specified (must be larger than or equal to PlaneWaveCutoff) the program will run using two grids, one for representing the wavefunction density (softgrid_dim) and one representing the total density (hardgrid_dim). If the density can be reprensented on the same grid as the wavefunction density Density_WaveCutoff can be chosen equal to PlaneWaveCutoff (default). ''' pw = self.get_pw() if pw > dw: log.warn('Planewave cutoff %i is greater \ than density cutoff %i' % (pw, dw)) ncf = netCDF(self.nc, 'a') if 'Density_WaveCutoff' in ncf.variables: vdw = ncf.variables['Density_WaveCutoff'] vdw.assignValue(dw) else: vdw = ncf.createVariable('Density_WaveCutoff', 'i', ('dim1',)) vdw.assignValue(dw) ncf.close() self.restart() #nc dimension change self.set_status('new') self.ready = False def set_xc(self, xc): '''Set the self-consistent exchange-correlation functional :Parameters: xc : string Must be one of 'PZ', 'VWN', 'PW91', 'PBE', 'revPBE', 'RPBE' Selects which density functional to use for exchange-correlation when performing electronic minimization (the electronic energy is minimized with respect to this selected functional) Notice that the electronic energy is also evaluated non-selfconsistently by DACAPO for other exchange-correlation functionals Recognized options : * "PZ" (Perdew Zunger LDA-parametrization) * "VWN" (Vosko Wilk Nusair LDA-parametrization) * "PW91" (Perdew Wang 91 GGA-parametrization) * "PBE" (Perdew Burke Ernzerhof GGA-parametrization) * "revPBE" (revised PBE/1 GGA-parametrization) * "RPBE" (revised PBE/2 GGA-parametrization) option "PZ" is not allowed for spin polarized calculation; use "VWN" instead. ''' nc = netCDF(self.nc, 'a') v = 'ExcFunctional' if v in nc.variables: nc.variables[v][:] = np.array('%7s' % xc, 'c') else: vxc = nc.createVariable('ExcFunctional', 'c', ('dim7',)) vxc[:] = np.array('%7s' % xc, 'c') nc.close() self.set_status('new') self.ready = False def set_nbands(self, nbands=None): '''Set the number of bands. a few unoccupied bands are recommended. :Parameters: nbands : integer the number of bands. if nbands = None the function returns with nothing done. At calculate time, if there are still no bands, they will be set by: the number of bands is calculated as $nbands=nvalence*0.65 + 4$ ''' if nbands is None: return self.delete_ncattdimvar(self.nc, ncdims=['number_of_bands'], ncvars=[]) nc = netCDF(self.nc, 'a') v = 'ElectronicBands' if v in nc.variables: vnb = nc.variables[v] else: vnb = nc.createVariable('ElectronicBands', 'c', ('dim1',)) vnb.NumberOfBands = nbands nc.sync() nc.close() self.set_status('new') self.ready = False def set_kpts(self, kpts): ''' set the kpt grid. Parameters: kpts: (n1,n2,n3) or [k1,k2,k3,...] or one of these chadi-cohen sets: * cc6_1x1 * cc12_2x3 * cc18_sq3xsq3 * cc18_1x1 * cc54_sq3xsq3 * cc54_1x1 * cc162_sq3xsq3 * cc162_1x1 (n1,n2,n3) creates an n1 x n2 x n3 monkhorst-pack grid, [k1,k2,k3,...] creates a kpt-grid based on the kpoints defined in k1,k2,k3,... There is also a possibility to have Dacapo (fortran) create the Kpoints in chadi-cohen or monkhorst-pack form. To do this you need to set the KpointSetup.gridtype attribute, and KpointSetup. KpointSetup = [3,0,0] KpointSetup.gridtype = 'ChadiCohen' KpointSetup(1) Chadi-Cohen k-point set 1 6 k-points 1x1 2 18-kpoints sqrt(3)*sqrt(3) 3 18-kpoints 1x1 4 54-kpoints sqrt(3)*sqrt(3) 5 54-kpoints 1x1 6 162-kpoints 1x1 7 12-kpoints 2x3 8 162-kpoints 3xsqrt 3 or KpointSetup = [4,4,4] KpointSetup.gridtype = 'MonkhorstPack' we do not use this functionality. ''' #chadi-cohen if isinstance(kpts, basestring): listofkpts = getattr(ase.dft.kpoints, kpts) gridtype = kpts #stored in ncfile #uc = self.get_atoms().get_cell() #listofkpts = np.dot(ccgrid,np.linalg.inv(uc.T)) #monkhorst-pack grid if np.array(kpts).shape == (3,): from ase.dft.kpoints import monkhorst_pack N1, N2, N3 = kpts listofkpts = monkhorst_pack((N1, N2, N3)) gridtype = 'Monkhorst-Pack %s' % str(tuple(kpts)) #user-defined list is provided if len(np.array(kpts).shape) == 2: listofkpts = kpts gridtype = 'user_defined_%i_kpts' % len(kpts) #stored in ncfile nbzkpts = len(listofkpts) #we need to get dimensions stored temporarily so #we can delete all dimensions and variables associated with #kpoints before we save them back out. nc2 = netCDF(self.nc, 'r') ncdims = nc2.dimensions nc2.close() if 'number_BZ_kpoints' in ncdims: self.delete_ncattdimvar(self.nc, ncdims=['number_plane_waves', 'number_BZ_kpoints', 'number_IBZ_kpoints']) # now define dim and var nc = netCDF(self.nc, 'a') nc.createDimension('number_BZ_kpoints', nbzkpts) bv = nc.createVariable('BZKpoints', 'd', ('number_BZ_kpoints', 'dim3')) bv[:] = listofkpts bv.gridtype = gridtype nc.sync() nc.close() log.debug('kpts = %s' % str(self.get_kpts())) self.set_status('new') self.ready = False def atoms_are_equal(self, atoms): ''' comparison of atoms to self.atoms using tolerances to account for float/double differences and float math. ''' TOL = 1.0e-6 #angstroms a = self.atoms.arrays b = atoms.arrays #match number of atoms in cell lenmatch = len(atoms) == len(self.atoms) if lenmatch is not True: return False #the next two comparisons fail in this case. #match positions in cell posmatch = (abs(a['positions'] - b['positions']) <= TOL).all() #match cell cellmatch = (abs(self.atoms.get_cell() - atoms.get_cell()) <= TOL).all() if lenmatch and posmatch and cellmatch: return True else: return False def set_atoms(self, atoms): '''attach an atoms to the calculator and update the ncfile :Parameters: atoms ASE.Atoms instance ''' log.debug('setting atoms to: %s' % str(atoms)) if False in atoms.pbc: msg = ('Non-periodic boundary conditions encountered in one or' ' more dimensions. Dacapo only supports periodic boundary' ' conditions. Use atoms.set_pbc(True).') raise NotImplementedError(msg) if hasattr(self, 'atoms') and self.atoms is not None: #return if the atoms are the same. no change needs to be made if self.atoms_are_equal(atoms): log.debug('No change to atoms in set_atoms, returning') return # some atoms already exist. Test if new atoms are # different from old atoms. # this is redundant if atoms != self.atoms: # the new atoms are different from the old ones. Start # a new frame. log.debug('atoms != self.atoms, incrementing') self._increment_frame() self.atoms = atoms.copy() self.ready = False log.debug('self.atoms = %s' % str(self.atoms)) def set_ft(self, ft): '''set the Fermi temperature for occupation smearing :Parameters: ft : float Fermi temperature in kT (eV) Electronic temperature, corresponding to gaussian occupation statistics. Device used to stabilize the convergence towards the electronic ground state. Higher values stabilizes the convergence. Values in the range 0.1-1.0 eV are recommended, depending on the complexity of the Fermi surface (low values for d-metals and narrow gap semiconducters, higher for free electron-like metals). ''' nc = netCDF(self.nc, 'a') v = 'ElectronicBands' if v in nc.variables: vnb = nc.variables[v] else: vnb = nc.createVariable('ElectronicBands', 'c', ('dim1',)) vnb.OccupationStatistics_FermiTemperature = ft nc.sync() nc.close() self.set_status('new') self.ready = False def set_status(self, status): '''set the status flag in the netcdf file :Parameters: status : string status flag, e.g. 'new', 'finished' ''' nc = netCDF(self.nc, 'a') nc.status = status nc.sync() nc.close() log.debug('set status to %s' % status) def get_spinpol(self): 'Returns the spin polarization setting, either True or False' nc = netCDF(self.nc, 'r') v = 'ElectronicBands' if v in nc.variables: vnb = nc.variables[v] if hasattr(vnb, 'SpinPolarization'): spinpol = vnb.SpinPolarization else: spinpol = 1 else: spinpol = 1 nc.close() if spinpol == 1: return False else: return True def set_spinpol(self, spinpol=False): '''set Spin polarization. :Parameters: spinpol : Boolean set_spinpol(True) spin-polarized. set_spinpol(False) no spin polarization, default Specify whether to perform a spin polarized or unpolarized calculation. ''' nc = netCDF(self.nc, 'a') v = 'ElectronicBands' if v in nc.variables: vnb = nc.variables[v] else: vnb = nc.createVariable('ElectronicBands', 'c', ('dim1',)) if spinpol is True: vnb.SpinPolarization = 2 else: vnb.SpinPolarization = 1 nc.sync() nc.close() self.set_status('new') self.ready = False def set_fixmagmom(self, fixmagmom=None): '''set a fixed magnetic moment for a spin polarized calculation :Parameters: fixmagmom : float the magnetic moment of the cell in Bohr magnetons ''' if fixmagmom is None: return nc = netCDF(self.nc,'a') v = 'ElectronicBands' if v in nc.variables: vnb = nc.variables[v] else: vnb = nc.createVariable('ElectronicBands', 'c', ('dim1',)) vnb.SpinPolarization = 2 #You must want spin-polarized vnb.FixedMagneticMoment = fixmagmom nc.sync() nc.close() self.set_status('new') self.ready = False def get_fixmagmom(self): 'returns the value of FixedMagneticMoment' nc = netCDF(self.nc,'r') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] if hasattr(v,'FixedMagneticMoment'): fixmagmom = v.FixedMagneticMoment else: fixmagmom = None else: fixmagmom = None nc.close() return fixmagmom def set_calculate_stress(self, stress=True): '''Turn on stress calculation :Parameters: stress : boolean set_calculate_stress(True) calculates stress set_calculate_stress(False) do not calculate stress ''' nc = netCDF(self.get_nc(),'a') vs = 'NetCDFOutputControl' if vs in nc.variables: v = nc.variables[vs] else: v = nc.createVariable('NetCDFOutputControl', 'c', ('dim1',)) if stress is True: v.PrintTotalStress = 'Yes' else: v.PrintTotalStress = 'No' nc.sync() nc.close() self.set_status('new') self.ready = False def set_nc(self, nc='out.nc'): ''' set filename for the netcdf and text output for this calculation :Parameters: nc : string filename for netcdf file if the ncfile attached to the calculator is changing, the old file will be copied to the new file if it doesn not exist so that all the calculator details are preserved. Otherwise, the if the ncfile does not exist, it will get initialized. the text file will have the same basename as the ncfile, but with a .txt extension. ''' #the first time this is called, there may be no self.nc defined if not hasattr(self, 'nc'): self.nc = nc #check if the name is changing and if so, copy the old ncfile #to the new one. This is necessary to ensure all the #calculator details are copied over. if the file already #exists we use the contents of the existing file if nc != self.nc and not os.path.exists(nc): log.debug('copying %s to %s' % (self.nc, nc)) #import shutil #shutil.copy(self.nc,nc) base = os.path.split(nc)[0] if not os.path.isdir(base) and base is not '': os.makedirs(base) status = os.system("cp '%s' '%s'" % (self.nc, nc)) if status != 0: raise Exception('Copying ncfile failed.') self.nc = nc elif os.path.exists(nc): self._set_frame_number() self.set_psp_database() self.atoms = self.read_only_atoms(nc) self.nc = nc self.update_input_parameters() #I always want the text file set based on the ncfile #and I never want to set this myself. base = os.path.splitext(self.nc)[0] self.txt = "%s.txt" % base def set_pseudopotentials(self, pspdict): '''Set all the pseudopotentials from a dictionary. The dictionary should have this form:: {symbol1: path1, symbol2: path2} ''' for key in pspdict: self.set_psp(sym=key, psp=pspdict[key]) def set_psp(self, sym=None, z=None, psp=None): ''' set the pseudopotential file for a species or an atomic number. :Parameters: sym : string chemical symbol of the species z : integer the atomic number of the species psp : string filename of the pseudopotential you can only set sym or z. examples:: set_psp('N',psp='pspfile') set_psp(z=6,psp='pspfile') ''' log.debug(str([sym, z, psp])) if (sym, z, psp) == (None, None, None): return if (sym is None and z is not None): from ase.data import chemical_symbols sym = chemical_symbols[z] elif (sym is not None and z is None): pass else: raise Exception('You can only specify Z or sym!') if not hasattr(self, 'psp'): self.set_psp_database() #only make change if needed if sym not in self.psp: self.psp[sym] = psp self.ready = False self.set_status('new') elif self.psp[sym] != psp: self.psp[sym] = psp self.ready = False self.set_status('new') if not self.ready: #now we update the netcdf file ncf = netCDF(self.nc, 'a') vn = 'AtomProperty_%s' % sym if vn not in ncf.variables: if 'dim20' not in ncf.dimensions: ncf.createDimension('dim20', 20) p = ncf.createVariable(vn, 'c', ('dim20',)) else: p = ncf.variables[vn] ppath = self.get_psp(sym=sym) p.PspotFile = ppath ncf.close() def get_pseudopotentials(self): 'get pseudopotentials set for atoms attached to calculator' if self.atoms is None: return None psp = {} for atom in self.atoms: psp[atom.symbol] = self.psp[atom.symbol] return {'pspdict':psp} def get_symmetry(self): '''return the type of symmetry used''' nc = netCDF(self.nc, 'r') if 'UseSymmetry' in nc.variables: sym = string.join(nc.variables['UseSymmetry'][:],'').strip() else: sym = None nc.close() if sym in ['Off', None]: return False elif sym == 'Maximum': return True else: raise Exception('Type of symmetry not recognized: %s' % sym) def set_symmetry(self, val=False): '''set how symmetry is used to reduce k-points :Parameters: val : Boolean set_sym(True) Maximum symmetry is used set_sym(False) No symmetry is used This variable controls the if and how DACAPO should attempt using symmetry in the calculation. Imposing symmetry generally speeds up the calculation and reduces numerical noise to some extent. Symmetry should always be applied to the maximum extent, when ions are not moved. When relaxing ions, however, the symmetry of the equilibrium state may be lower than the initial state. Such an equilibrium state with lower symmetry is missed, if symmetry is imposed. Molecular dynamics-like algorithms for ionic propagation will generally not break the symmetry of the initial state, but some algorithms, like the BFGS may break the symmetry of the initial state. Recognized options: "Off": No symmetry will be imposed, apart from time inversion symmetry in recipical space. This is utilized to reduce the k-point sampling set for Brillouin zone integration and has no influence on the ionic forces/motion. "Maximum": DACAPO will look for symmetry in the supplied atomic structure and extract the highest possible symmetry group. During the calculation, DACAPO will impose the found spatial symmetry on ionic forces and electronic structure, i.e. the symmetry will be conserved during the calculation. ''' if val: symval = 'Maximum' else: symval = 'Off' ncf = netCDF(self.get_nc(), 'a') if 'UseSymmetry' not in ncf.variables: sym = ncf.createVariable('UseSymmetry', 'c', ('dim7',)) else: sym = ncf.variables['UseSymmetry'] sym[:] = np.array('%7s' % symval, 'c') ncf.sync() ncf.close() self.set_status('new') self.ready = False def set_extracharge(self, val): '''add extra charge to unit cell :Parameters: val : float extra electrons to add or subtract from the unit cell Fixed extra charge in the unit cell (i.e. deviation from charge neutrality). This assumes a compensating, positive constant backgound charge (jellium) to forge overall charge neutrality. ''' nc = netCDF(self.get_nc(), 'a') if 'ExtraCharge' in nc.variables: v = nc.variables['ExtraCharge'] else: v = nc.createVariable('ExtraCharge', 'd', ('dim1',)) v.assignValue(val) nc.sync() nc.close() def get_extracharge(self): 'Return the extra charge set in the calculator' nc = netCDF(self.get_nc(), 'r') if 'ExtraCharge' in nc.variables: v = nc.variables['ExtraCharge'] exchg = v.getValue() else: exchg = None nc.close() return exchg def get_extpot(self): 'return the external potential set in the calculator' nc = netCDF(self.get_nc(), 'r') if 'ExternalPotential' in nc.variables: v = nc.variables['ExternalPotential'] extpot = v[:] else: extpot = None nc.close() return extpot def set_extpot(self, potgrid): '''add external potential of value see this link before using this https://listserv.fysik.dtu.dk/pipermail/campos/2003-August/000657.html :Parameters: potgrid : np.array with shape (nx,ny,nz) the shape must be the same as the fft soft grid the value of the potential to add you have to know both of the fft grid dimensions ahead of time! if you know what you are doing, you can set the fft_grid you want before hand with: calc.set_fftgrid((n1,n2,n3)) ''' nc = netCDF(self.get_nc(), 'a') if 'ExternalPotential' in nc.variables: v = nc.variables['ExternalPotential'] else: # I assume here you have the dimensions of potgrid correct # and that the soft and hard grids are the same. # if softgrid is defined, Dacapo requires hardgrid to be # defined too. s1, s2, s3 = potgrid.shape if 'softgrid_dim1' not in nc.dimensions: nc.createDimension('softgrid_dim1', s1) nc.createDimension('softgrid_dim2', s2) nc.createDimension('softgrid_dim3', s3) nc.createDimension('hardgrid_dim1', s1) nc.createDimension('hardgrid_dim2', s2) nc.createDimension('hardgrid_dim3', s3) v = nc.createVariable('ExternalPotential', 'd', ('softgrid_dim1', 'softgrid_dim2', 'softgrid_dim3',)) v[:] = potgrid nc.sync() nc.close() self.set_status('new') self.ready = False def set_fftgrid(self, soft=None, hard=None): ''' sets the dimensions of the FFT grid to be used :Parameters: soft : (n1,n2,n3) integers make a n1 x n2 x n3 grid hard : (n1,n2,n3) integers make a n1 x n2 x n3 grid >>> calc.set_fftgrid(soft=[42,44,46]) sets the soft and hard grid dimensions to 42,44,46 >>> calc.set_fftgrid(soft=[42,44,46],hard=[80,84,88]) sets the soft grid dimensions to 42,44,46 and the hard grid dimensions to 80,84,88 These are the fast FFt grid numbers listed in fftdimensions.F data list_of_fft /2, 4, 6, 8, 10, 12, 14, 16, 18, 20, & 22,24, 28, 30,32, 36, 40, 42, 44, 48, & 56,60, 64, 66, 70, 72, 80, 84, 88, 90, & 96,108,110,112,120,126,128,132,140,144,154, & 160,168,176,180,192,198,200, & 216,240,264,270,280,288,324,352,360,378,384,400,432, & 450,480,540,576,640/ otherwise you will get some errors from mis-dimensioned variables. this is usually automatically set by Dacapo. ''' if soft is not None: self.delete_ncattdimvar(self.nc, ncdims=['softgrid_dim1', 'softgrid_dim2', 'softgrid_dim3' ], ncvars=[]) nc = netCDF(self.get_nc(), 'a') nc.createDimension('softgrid_dim1', soft[0]) nc.createDimension('softgrid_dim2', soft[1]) nc.createDimension('softgrid_dim3', soft[2]) nc.sync() nc.close() if hard is None: hard = soft if hard is not None: self.delete_ncattdimvar(self.nc, ncdims=['hardgrid_dim1', 'hardgrid_dim2', 'hardgrid_dim3' ], ncvars=[]) nc = netCDF(self.get_nc(),'a') nc.createDimension('hardgrid_dim1', hard[0]) nc.createDimension('hardgrid_dim2', hard[1]) nc.createDimension('hardgrid_dim3', hard[2]) nc.sync() nc.close() self.set_status('new') self.ready = False def get_ascii_debug(self): 'Return the debug settings in Dacapo' nc = netCDF(self.get_nc(), 'r') if 'PrintDebugInfo' in nc.variables: v = nc.variables['PrintDebugInfo'] debug = string.join(v[:], '') else: debug = None nc.close() return debug def set_ascii_debug(self, level): '''set the debug level for Dacapo :Parameters: level : string one of 'Off', 'MediumLevel', 'HighLevel' ''' nc = netCDF(self.get_nc(), 'a') if 'PrintDebugInfo' in nc.variables: v = nc.variables['PrintDebugInfo'] else: if 'dim20' not in nc.dimensions: nc.createDimension('dim20', 20) v = nc.createVariable('PrintDebugInfo', 'c', ('dim20',)) v[:] = np.array('%20s' % level, dtype='c') nc.sync() nc.close() self.set_status('new') self.ready = False def get_ncoutput(self): 'returns the control variables for the ncfile' nc = netCDF(self.get_nc(), 'r') if 'NetCDFOutputControl' in nc.variables: v = nc.variables['NetCDFOutputControl'] ncoutput = {} if hasattr(v, 'PrintWaveFunction'): ncoutput['wf'] = v.PrintWaveFunction if hasattr(v, 'PrintChargeDensity'): ncoutput['cd'] = v.PrintChargeDensity if hasattr(v, 'PrintEffPotential'): ncoutput['efp'] = v.PrintEffPotential if hasattr(v, 'PrintElsPotential'): ncoutput['esp'] = v.PrintElsPotential else: ncoutput = None nc.close() return ncoutput def set_ncoutput(self, wf=None, cd=None, efp=None, esp=None): '''set the output of large variables in the netcdf output file :Parameters: wf : string controls output of wavefunction. values can be 'Yes' or 'No' cd : string controls output of charge density. values can be 'Yes' or 'No' efp : string controls output of effective potential. values can be 'Yes' or 'No' esp : string controls output of electrostatic potential. values can be 'Yes' or 'No' ''' nc = netCDF(self.get_nc(), 'a') if 'NetCDFOutputControl' in nc.variables: v = nc.variables['NetCDFOutputControl'] else: v = nc.createVariable('NetCDFOutputControl', 'c', ()) if wf is not None: v.PrintWaveFunction = wf if cd is not None: v.PrintChargeDensity = cd if efp is not None: v.PrintEffPotential = efp if esp is not None: v.PrintElsPotential = esp nc.sync() nc.close() self.set_status('new') self.ready = False def get_ados(self, **kwargs): ''' attempt at maintaining backward compatibility with get_ados returning data Now when we call calc.get_ados() it will return settings, and calc.get_ados(atoms=[],...) should return data ''' if len(kwargs) != 0: return self.get_ados_data(**kwargs) nc = netCDF(self.get_nc(),'r') if 'PrintAtomProjectedDOS' in nc.variables: v = nc.variables['PrintAtomProjectedDOS'] ados = {} if hasattr(v, 'EnergyWindow'): ados['energywindow'] = v.EnergyWindow if hasattr(v, 'EnergyWidth'): ados['energywidth'] = v.EnergyWidth[0] if hasattr(v, 'NumberEnergyPoints'): ados['npoints'] = v.NumberEnergyPoints[0] if hasattr(v, 'CutoffRadius'): ados['cutoff'] = v.CutoffRadius[0] else: ados = None nc.close() return ados def set_ados(self, energywindow=(-15,5), energywidth=0.2, npoints=250, cutoff=1.0): ''' setup calculation of atom-projected density of states :Parameters: energywindow : (float, float) sets (emin,emax) in eV referenced to the Fermi level energywidth : float the gaussian used in smearing npoints : integer the number of points to sample the DOS at cutoff : float the cutoff radius in angstroms for the integration. ''' nc = netCDF(self.get_nc(), 'a') if 'PrintAtomProjectedDOS' in nc.variables: v = nc.variables['PrintAtomProjectedDOS'] else: v = nc.createVariable('PrintAtomProjectedDOS', 'c', ()) v.EnergyWindow = energywindow v.EnergyWidth = energywidth v.NumberEnergyPoints = npoints v.CutoffRadius = cutoff nc.sync() nc.close() self.set_status('new') self.ready = False def get_mdos(self): 'return multicentered projected dos parameters' nc = netCDF(self.get_nc(),'r') mdos = {} if 'MultiCenterProjectedDOS' in nc.variables: v = nc.variables['MultiCenterProjectedDOS'] mdos['energywindow'] = v.EnergyWindow mdos['energywidth'] = v.EnergyWidth mdos['numberenergypoints'] = v.NumberEnergyPoints mdos['cutoffradius'] = v.CutoffRadius # XXXXX avoid eval() #mdos['mcenters'] = eval(v.mcenters) nc.close() return mdos def get_mdos_data(self, spin=0, cutoffradius='infinite'): '''returns data from multicentered projection returns (mdos, rotmat) the rotation matrices are retrieved from the text file. I am not sure what you would do with these, but there was a note about them in the old documentation so I put the code to retrieve them here. the syntax for the return value is: rotmat[atom#][label] returns the rotation matrix for the center on the atom# for label. I do not not know what the label refers to. ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(),'r') icut = 1 #short if cutoffradius == "infinite": icut = 0 #var = nc.variables['MultiCenterProjectedDOS'] integrated = nc.variables['MultiCenterProjectedDOS_IntegratedDOS'][:] tz = 'MultiCenterProjectedDOS_EnergyResolvedDOS' energyresolved = nc.variables[tz][:] energygrid = nc.variables['MultiCenterProjectedDOS_EnergyGrid'][:] number_of_multicenters = integrated.shape[0] #number_of_cutoff = integrated.shape[1] #number_of_spin = integrated.shape[2] multicenterprojections = [] for multicenter in range(number_of_multicenters): #orbitals = var[multicenter] energyresolveddata = energyresolved[multicenter, icut, spin, :] #integrateddata = integrated[multicenter, icut, spin] multicenterprojections.append([energygrid, energyresolveddata]) log.info('Found %d multicenters' % len(multicenterprojections)) nc.close() #now parse the text file for the rotation matrices rot_mat_lines = [] txt = self.get_txt() if os.path.exists(txt): f = open(txt,'r') for line in f: if 'MUL: Rmatrix' in line: rot_mat_lines.append(line) f.close() rotmat = [] for line in rot_mat_lines: fields = line.split() novl = int(fields[2]) ncen = int(fields[3]) row = [float(x) for x in fields[4:]] try: rotmat[novl-1][ncen-1].append(row) except IndexError: try: rotmat[novl-1].append([]) rotmat[novl-1][ncen-1].append(row) except IndexError: rotmat.append([]) rotmat[novl-1].append([]) rotmat[novl-1][ncen-1].append(row) else: rotmat = None return (multicenterprojections, rotmat) def set_mdos(self, mcenters=None, energywindow=(-15,5), energywidth=0.2, numberenergypoints=250, cutoffradius=1.0): '''Setup multicentered projected DOS. mcenters a list of tuples containing (atom#,l,m,weight) (0,0,0,1.0) specifies (atom 0, l=0, m=0, weight=1.0) an s orbital on atom 0 (1,1,1,1.0) specifies (atom 1, l=1, m=1, weight=1.0) a p orbital with m = +1 on atom 0 l=0 s-orbital l=1 p-orbital l=2 d-orbital m in range of ( -l ... 0 ... +l ) The direction cosines for which the spherical harmonics are set up are using the next different atom in the list (cyclic) as direction pointer, so the z-direction is chosen along the direction to this next atom. At the moment the rotation matrices is only given in the text file, you can use grep'MUL: Rmatrix' out_o2.txt to get this information. adapated from old MultiCenterProjectedDOS.py ''' if mcenters is None: return nc = netCDF(self.get_nc(), 'a') _listofmcenters_ = mcenters # get number of multi centers ncenters = len(_listofmcenters_) # get max number of orbitals any center max_orbitals = max(map(len, _listofmcenters_)) mmatrix = np.zeros([ncenters, max_orbitals, 4], np.float) ncenter = 0 for multicenter in _listofmcenters_: norbital = 0 for orbital in multicenter: mmatrix[ncenter, norbital] = orbital norbital = norbital + 1 # signal that this multicenter contains less than # max_orbital orbitals if len(multicenter) < max_orbitals: mmatrix[ncenter, len(multicenter):max_orbitals] = (-1.0, 0, 0, 0) ncenter = ncenter + 1 nc.createDimension('max_orbitals', max_orbitals) nc.createDimension('number_of_multicenters', ncenters) if 'MultiCenterProjectedDOS' in nc.variables: v = nc.variables['MultiCenterProjectedDOS'] else: v = nc.createVariable('MultiCenterProjectedDOS', 'd', ('number_of_multicenters', 'max_orbitals', 'dim4')) v.EnergyWindow = energywindow v.EnergyWidth = energywidth v.NumberEnergyPoints = numberenergypoints v.CutoffRadius = cutoffradius #this is kind of hacky, but it is needed for get_mdos so you #can tell if the input is changed. v.mcenters = str(mcenters) v[:] = mmatrix nc.sync() nc.close() def set_debug(self, debug): ''' set debug level for python logging debug should be an integer from 0-100 or one of the logging constants like logging.DEBUG, logging.WARN, etc... ''' self.debug = debug log.setLevel(debug) def get_debug(self): 'Return the python logging level' return self.debug def get_decoupling(self): 'return the electrostatic decoupling parameters' nc = netCDF(self.get_nc(), 'r') if 'Decoupling' in nc.variables: v = nc.variables['Decoupling'] decoupling = {} if hasattr(v,'NumberOfGaussians'): decoupling['ngaussians'] = v.NumberOfGaussians if hasattr(v,'ECutoff'): decoupling['ecutoff'] = v.ECutoff if hasattr(v,'WidthOfGaussian'): decoupling['gausswidth'] = v.WidthOfGaussian else: decoupling = None nc.close() return decoupling def set_decoupling(self, ngaussians=3, ecutoff=100, gausswidth=0.35): ''' Decoupling activates the three dimensional electrostatic decoupling. Based on paper by Peter E. Bloechl: JCP 103 page7422 (1995). :Parameters: ngaussians : int The number of gaussian functions per atom used for constructing the model charge of the system ecutoff : int The cut off energy (eV) of system charge density in g-space used when mapping constructing the model change of the system, i.e. only charge density components below ECutoff enters when constructing the model change. gausswidth : float The width of the Gaussians defined by $widthofgaussian*1.5^(n-1)$ $n$=(1 to numberofgaussians) ''' nc = netCDF(self.get_nc(), 'a') if 'Decoupling' in nc.variables: v = nc.variables['Decoupling'] else: v = nc.createVariable('Decoupling', 'c', ()) v.NumberOfGaussians = ngaussians v.ECutoff = ecutoff v.WidthOfGaussian = gausswidth nc.sync() nc.close() self.set_status('new') self.ready = False def set_external_dipole(self, value, position=None): ''' Externally imposed dipole potential. This option overwrites DipoleCorrection if set. :Parameters: value : float units of volts position : float scaled coordinates along third unit cell direction. if None, the compensation dipole layer plane in the vacuum position farthest from any other atoms on both sides of the slab. Do not set to 0.0. ''' var = 'ExternalDipolePotential' nc = netCDF(self.get_nc(), 'a') if var in nc.variables: v = nc.variables[var] else: v = nc.createVariable('ExternalDipolePotential', 'd', ()) v.assignValue(value) if position is not None: v.DipoleLayerPosition = position nc.sync() nc.close() self.set_status('new') self.ready = False def get_external_dipole(self): 'return the External dipole settings' var = 'ExternalDipolePotential' nc = netCDF(self.get_nc(),'r') if var in nc.variables: v = nc.variables[var] value = v.getValue() if hasattr(v, 'DipoleLayerPosition'): position = v.DipoleLayerPosition else: position = None ed = {'value':value, 'position':position} else: ed = None nc.close() return ed def set_dipole(self, status=True, mixpar=0.2, initval=0.0, adddipfield=0.0, position=None): '''turn on and set dipole correction scheme :Parameters: status : Boolean True turns dipole on. False turns Dipole off mixpar : float Mixing Parameter for the the dipole correction field during the electronic minimization process. If instabilities occur during electronic minimization, this value may be decreased. initval : float initial value to start at adddipfield : float additional dipole field to add units : V/ang External additive, constant electrostatic field along third unit cell vector, corresponding to an external dipole layer. The field discontinuity follows the position of the dynamical dipole correction, i.e. if DipoleCorrection:DipoleLayerPosition is set, the field discontinuity is at this value, otherwise it is at the vacuum position farthest from any other atoms on both sides of the slab. position : float scaled coordinates along third unit cell direction. If this attribute is set, DACAPO will position the compensation dipole layer plane in at the provided value. If this attribute is not set, DACAPO will put the compensation dipole layer plane in the vacuum position farthest from any other atoms on both sides of the slab. Do not set this to 0.0 calling set_dipole() sets all default values. ''' if status == False: self.delete_ncattdimvar(self.nc, ncvars=['DipoleCorrection']) return ncf = netCDF(self.get_nc(), 'a') if 'DipoleCorrection' not in ncf.variables: dip = ncf.createVariable('DipoleCorrection', 'c', ()) else: dip = ncf.variables['DipoleCorrection'] dip.MixingParameter = mixpar dip.InitialValue = initval dip.AdditiveDipoleField = adddipfield if position is not None: dip.DipoleLayerPosition = position ncf.sync() ncf.close() self.set_status('new') self.ready = False def set_stay_alive(self, value): 'set the stay alive setting' self.delete_ncattdimvar(self.nc, ncvars=['Dynamics']) if (hasattr(self,'parent') or hasattr(self,'children')) and value == True: log.debug("This is a parent/child calculator and stay_alive must be false.") value = False if value in [True, False]: self.stay_alive = value #self._dacapo_is_running = False else: log.debug("stay_alive must be boolean. Value was not changed.") def get_stay_alive(self): 'return the stay alive settings' return self.stay_alive def get_fftgrid(self): 'return soft and hard fft grids' nc = netCDF(self.nc, 'r') soft = [] hard = [] for d in [1, 2, 3]: sd = 'softgrid_dim%i' % d hd = 'hardgrid_dim%i' % d if sd in nc.dimensions: soft.append(nc.dimensions[sd]) hard.append(nc.dimensions[hd]) nc.close() if soft == []: soft = None if hard == []: hard = None return ({'soft':soft, 'hard':hard}) def get_kpts_type(self): 'return the kpt grid type' nc = netCDF(self.nc, 'r') if 'BZKpoints' in nc.variables: bv = nc.variables['BZKpoints'] if hasattr(bv, 'gridtype'): kpts_type = bv.gridtype #string saved in jacapo else: #no grid attribute, this ncfile was created pre-jacapo kpts_type = '%i kpts' % len(bv[:]) else: kpts_type = 'BZKpoints not defined. [[0,0,0]] used by default.' nc.close() return kpts_type def get_kpts(self): 'return the BZ kpts' nc = netCDF(self.nc, 'r') if 'BZKpoints' in nc.variables: bv = nc.variables['BZKpoints'] kpts = bv[:] else: kpts = np.array(([0, 0, 0])) #default Gamma point used in Dacapo when #BZKpoints not defined nc.close() return kpts def get_nbands(self): 'return the number of bands used in the calculation' nc = netCDF(self.nc, 'r') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] if hasattr(v, 'NumberOfBands'): nbands = int(v.NumberOfBands[0]) else: nbands = None else: nbands = None nc.close() return nbands def get_ft(self): 'return the FermiTemperature used in the calculation' nc = netCDF(self.nc, 'r') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] if hasattr(v, 'OccupationStatistics_FermiTemperature'): ft = v.OccupationStatistics_FermiTemperature else: ft = None else: ft = None nc.close() return ft def get_dipole(self): 'return dictionary of parameters if the DipoleCorrection was used' nc = netCDF(self.get_nc(), 'r') pars = {} if 'DipoleCorrection' in nc.variables: v = nc.variables['DipoleCorrection'] pars['status'] = True if hasattr(v, 'MixingParameter'): pars['mixpar'] = v.MixingParameter if hasattr(v, 'InitialValue'): pars['initval'] = v.InitialValue if hasattr(v, 'AdditiveDipoleField'): pars['adddipfield'] = v.AdditiveDipoleField if hasattr(v, 'DipoleLayerPosition'): pars['position'] = v.DipoleLayerPosition else: pars = False nc.close() return pars def get_pw(self): 'return the planewave cutoff used' ncf = netCDF(self.nc, 'r') if 'PlaneWaveCutoff' in ncf.variables: pw = ncf.variables['PlaneWaveCutoff'].getValue() else: pw = None ncf.close() if (isinstance(pw, int) or isinstance(pw, float) or isinstance(pw, np.int32)): return pw elif pw is None: return None else: return pw[0] def get_dw(self): 'return the density wave cutoff' ncf = netCDF(self.nc, 'r') if 'Density_WaveCutoff' in ncf.variables: dw = ncf.variables['Density_WaveCutoff'].getValue() else: dw = None ncf.close() #some old calculations apparently store ints, while newer ones #are lists if (isinstance(dw, int) or isinstance(dw, float) or isinstance(dw, np.int32)): return dw else: if dw is None: return None else: return dw[0] def get_xc(self): '''return the self-consistent exchange-correlation functional used returns a string''' nc = netCDF(self.nc, 'r') v = 'ExcFunctional' if v in nc.variables: xc = nc.variables[v][:].tostring().strip() else: xc = None nc.close() return xc def get_number_of_iterations(self): niter = None if self.calculation_required(): self.calculate() txt = self.get_txt() if os.path.exists(txt): f = open(txt,'r') for line in f: if 'Number of iterations =' in line: niter = int(line.split('=')[1]) break f.close() return niter def get_potential_energy(self, atoms=None, force_consistent=False): ''' return the potential energy. ''' if self.calculation_required(atoms): log.debug('calculation required for energy') self.calculate() else: log.debug('no calculation required for energy') nc = netCDF(self.get_nc(), 'r') try: if force_consistent: e = nc.variables['TotalFreeEnergy'][-1] else: e = nc.variables['TotalEnergy'][-1] nc.close() return e except (TypeError, KeyError): raise RuntimeError('Error in calculating the total energy\n' + 'check %s for error messages' % self.get_txt()) def get_forces(self, atoms=None): """Calculate atomic forces""" if atoms is None: atoms = self.atoms if self.calculation_required(atoms): self.calculate() nc = netCDF(self.get_nc(), 'r') forces = nc.variables['DynamicAtomForces'][-1] nc.close() return forces def get_atoms(self): 'return the atoms attached to a calculator()' if hasattr(self, 'atoms'): if self.atoms is None: return None atoms = self.atoms.copy() #it is not obvious the copy of atoms should have the same #calculator atoms.set_calculator(self) else: atoms = None return atoms def get_nc(self): 'return the ncfile used for output' return self.nc def get_txt(self): 'return the txt file used for output' if hasattr(self,'txt'): return self.txt else: return None def get_psp(self, sym=None, z=None): '''get the pseudopotential filename from the psp database :Parameters: sym : string the chemical symbol of the species z : integer the atomic number of the species you can only specify sym or z. Returns the pseudopotential filename, not the full path. ''' if sym is None and z is None: return None if (sym is None and z is not None): from ase.data import chemical_symbols sym = chemical_symbols[z] elif (sym is not None and z is None): pass else: raise Exception('You can only specify Z or sym!') psp = self.psp[sym] return psp def get_spin_polarized(self): 'Return True if calculate is spin-polarized or False if not' #self.calculate() #causes recursion error with get_magnetic_moments nc = netCDF(self.nc, 'r') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] if hasattr(v, 'SpinPolarization'): if v.SpinPolarization == 1: spinpol = False elif v.SpinPolarization == 2: spinpol = True else: spinpol = False else: spinpol = 'Not defined' nc.close() return spinpol def get_magnetic_moments(self, atoms=None): '''return magnetic moments on each atom after the calculation is run''' if self.calculation_required(atoms): self.calculate() nc = netCDF(self.nc, 'r') if 'InitialAtomicMagneticMoment' in nc.variables: mom = nc.variables['InitialAtomicMagneticMoment'][:] else: mom = [0.0]*len(self.atoms) nc.close() return mom def get_status(self): '''get status of calculation from ncfile. usually one of: 'new', 'aborted' 'running' 'finished' None ''' nc = netCDF(self.nc, 'r') if hasattr(nc, 'status'): status = nc.status else: status = None nc.close() return status def get_calculate_stress(self): 'return whether stress is calculated or not' nc = netCDF(self.get_nc(), 'r') if 'TotalStress' in nc.variables: calcstress = True else: calcstress = False nc.close() return calcstress def get_stress(self, atoms=None): '''get stress on the atoms. you should have set up the calculation to calculate stress first. returns [sxx, syy, szz, syz, sxz, sxy]''' if self.calculation_required(atoms): self.calculate() nc = netCDF(self.get_nc(), 'r') if 'TotalStress' in nc.variables: stress = nc.variables['TotalStress'][:] #ase expects the 6-element form stress = np.take(stress.ravel(), [0, 4, 8, 5, 2, 1]) else: #stress will not be here if you did not set it up by #calling set_stress() or in the __init__ stress = None nc.close() if stress == None: raise PropertyNotImplementedError( 'For stress in Jacapo, first set ' 'calculate_stress=True on ' 'initialization.') return stress def get_psp_valence(self, psp): ''' get the psp valence charge on an atom from the pspfile. ''' from struct import unpack dacapopath = get_dacapopath() if os.path.exists(psp): #the pspfile may be in the current directory #or defined by an absolute path fullpsp = psp else: #or, it is in the default psp path fullpsp = os.path.join(dacapopath, psp) if os.path.exists(fullpsp.strip()): f = open(fullpsp) # read past version numbers and text information buf = f.read(64) # read number valence electrons buf = f.read(8) fmt = ">d" nvalence = unpack(fmt, buf)[0] f.close() else: raise Exception("%s does not exist" % fullpsp) return nvalence def get_psp_nuclear_charge(self, psp): ''' get the nuclear charge of the atom from the psp-file. This is not the same as the atomic number, nor is it necessarily the negative of the number of valence electrons, since a psp may be an ion. this function is needed to compute centers of ion charge for the dipole moment calculation. We read in the valence ion configuration from the psp file and add up the charges in each shell. ''' from struct import unpack dacapopath = get_dacapopath() if os.path.exists(psp): #the pspfile may be in the current directory #or defined by an absolute path fullpsp = psp else: #or, it is in the default psp path fullpsp = os.path.join(dacapopath, psp) if os.path.exists(fullpsp.strip()): f = open(fullpsp) unpack('>i', f.read(4))[0] for i in range(3): f.read(4) for i in range(3): f.read(4) f.read(8) f.read(20) f.read(8) f.read(8) f.read(8) nvalps = unpack('>i', f.read(4))[0] f.read(4) f.read(8) f.read(8) wwnlps = [] for i in range(nvalps): f.read(4) wwnlps.append(unpack('>d', f.read(8))[0]) f.read(8) f.close() else: raise Exception("%s does not exist" % fullpsp) return np.array(wwnlps).sum() def get_valence(self, atoms=None): '''return the total number of valence electrons for the atoms. valence electrons are read directly from the pseudopotentials. the psp filenames are stored in the ncfile. They may be just the name of the file, in which case the psp may exist in the same directory as the ncfile, or in $DACAPOPATH, or the psp may be defined by an absolute or relative path. This function deals with all these possibilities. ''' from struct import unpack #do not use get_atoms() or recursion occurs if atoms is None: if hasattr(self, 'atoms'): atoms = self.atoms else: return None dacapopath = get_dacapopath() totval = 0.0 for sym in atoms.get_chemical_symbols(): psp = self.get_psp(sym) if os.path.exists(psp): #the pspfile may be in the current directory #or defined by an absolute path fullpsp = psp #let's also see if we can construct an absolute path to a #local or relative path psp. abs_path_to_nc = os.path.abspath(self.get_nc()) base = os.path.split(abs_path_to_nc)[0] possible_path_to_psp = os.path.join(base, psp) if os.path.exists(possible_path_to_psp): fullpsp = possible_path_to_psp else: #or, it is in the default psp path fullpsp = os.path.join(dacapopath, psp) if os.path.exists(fullpsp.strip()): f = open(fullpsp) # read past version numbers and text information buf = f.read(64) # read number valence electrons buf = f.read(8) fmt = ">d" nvalence = unpack(fmt, buf)[0] f.close() totval += float(nvalence) else: print("%s does not exist" % fullpsp) totval = None return totval def calculation_required(self, atoms=None, quantities=None): ''' determines if a calculation is needed. return True if a calculation is needed to get up to date data. return False if no calculation is needed. quantities is here because of the ase interface. ''' # first, compare if the atoms is the same as the stored atoms # if anything has changed, we need to run a calculation log.debug('running calculation_required') if self.nc is None: raise Exception('No output ncfile specified!') if atoms is not None: if not self.atoms_are_equal(atoms): log.debug('found that atoms != self.atoms') tol = 1.0e-6 #tolerance that the unit cell is the same new = atoms.get_cell() old = self.atoms.get_cell() #float comparison of equality if not np.all(abs(old-new) < tol): #this often changes the number of planewaves #which requires a complete restart log.debug('restart required! because cell changed') self.restart() else: log.debug('Unitcells apparently the same') self.set_atoms(atoms) #we have to update the atoms in any case return True #if we make it past the atoms check, we look in the #nc file. if parameters have been changed the status #will tell us if a calculation is needed #past this point, atoms was None or equal, so there is nothing to #update in the calculator log.debug('atoms tested equal') if os.path.exists(self.nc): nc = netCDF(self.nc, 'r') if hasattr(nc, 'status'): if nc.status == 'finished' and self.ready: nc.close() return False elif nc.status == 'running': nc.close() raise DacapoRunning('Dacapo is Running') elif nc.status == 'aborted': nc.close() raise DacapoAborted('Dacapo aborted. see txt file!') else: log.debug('ncfile exists, but is not ready') nc.close() return True else: #legacy calculations do not have a status flag in them. #let us guess that if the TotalEnergy is there #no calculation needs to be run? if 'TotalEnergy' in nc.variables: runflag = False else: runflag = True nc.close() log.debug('Legacy calculation') return runflag #if no status run calculation nc.close() #default, a calculation is required return True def get_scratch(self): '''finds an appropriate scratch directory for the calculation''' import getpass username = getpass.getuser() scratch_dirs = [] if 'SCRATCH' in os.environ: scratch_dirs.append(os.environ['SCRATCH']) if 'SCR' in os.environ: scratch_dirs.append(os.environ['SCR']) scratch_dirs.append('/scratch/'+username) scratch_dirs.append('/scratch/') scratch_dirs.append(os.curdir) for scratch_dir in scratch_dirs: if os.access(scratch_dir, os.W_OK): return scratch_dir raise IOError("No suitable scratch directory and no write access \ to current dir.") def set_parent(self,parent): if hasattr(self,'children'): raise RuntimeError("Cannot create grandparents.") self.parent = parent def attach_child(self,child): if hasattr(self,'parent'): raise RuntimeError("Cannot create grandchildren!") if not hasattr(self,'children'): self.children = [] self.children.append(child) child.set_parent(self) def calculate(self): '''run a calculation. you have to be a little careful with code in here. Use the calculation_required function to tell if a calculation is required. It is assumed here that if you call this, you mean it.''' #provide a way to make no calculation get run if os.environ.get('DACAPO_DRYRUN', None) is not None: raise DacapoDryrun('$DACAPO_DRYRUN detected, and a calculation \ attempted') if hasattr(self,'children'): # We are a parent and call execute_parent_calculation self.execute_parent_calculation() return if hasattr(self,'parent'): # we're a child and call the parent log.debug("I'm a child. Calling parent instead.") self.parent.calculate() # call the parent process to calculate all images return # hack: use the default psp path (see validate.get_dacapopath) # export DACAPOPATH to the environment env = os.environ env['DACAPOPATH'] = get_dacapopath() if not self.ready: log.debug('Calculator is not ready.') if not os.path.exists(self.get_nc()): self.initnc() log.debug('writing atoms out') log.debug(self.atoms) self.write_nc() #write atoms to ncfile log.debug('writing input out') self.write_input() #make sure input is uptodate #check that the bands get set if self.get_nbands() is None: nelectrons = self.get_valence() nbands = int(nelectrons * 0.65 + 4) self.set_nbands(nbands) log.debug('running a calculation') nc = self.get_nc() txt = self.get_txt() scratch = self.get_scratch() if self.stay_alive: self.execute_external_dynamics(nc, txt) self.ready = True self.set_status('finished') else: # if Dynamics:ExternalIonMotion_script is set in the .nc file from a previous run # and stay_alive is false for the continuation run, the Fortran executable continues # taking steps of size 0 and ends in an infinite loop. # Solution: remove the Dynamics variable if present when not running with stay_alive # self.delete_ncattdimvar(self.nc,ncvars=['Dynamics']) cmd = "dacapo.run '%(innc)s' -out '%(txt)s' -scratch %(scratch)s" cmd = cmd % {'innc':nc, 'txt':txt, 'scratch':scratch} log.debug(cmd) # using subprocess instead of commands subprocess is more # flexible and works better for stay_alive self._dacapo = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE, shell=True) status = self._dacapo.wait() [stdout, stderr] = self._dacapo.communicate() output = stdout+stderr if status is 0: #that means it ended fine! self.ready = True self.set_status('finished') else: log.debug('Status was not 0') log.debug(output) self.ready = False # directory cleanup has been moved to self.__del__() del self._dacapo #Sometimes dacapo dies or is killed abnormally, and in this #case an exception should be raised to prevent a geometry #optimization from continuing for example. The best way to #detect this right now is actually to check the end of the #text file to make sure it ends with the right line. The #line differs if the job was run in parallel or in serial. f = open(txt, 'r') lines = f.readlines() f.close() if 'PAR: msexit halting Master' in lines[-1]: pass #standard parallel end elif ('TIM' in lines[-2] and 'clexit: exiting the program' in lines[-1]): pass #standard serial end else: # text file does not end as expected, print the last # 10 lines and raise exception log.debug(string.join(lines[-10:-1], '')) s = 'Dacapo output txtfile (%s) did not end normally.\n' s += ''.join(lines[-10:-1]) raise DacapoAbnormalTermination(s % txt) def execute_parent_calculation(self): ''' Implementation of an extra level of parallelization, where one jacapo calculator spawns several dacapo.run processes. This is used for NEBs parallelized over images. ''' # hack: use the default psp path (see validate.get_dacapopath) # export DACAPOPATH to the environment env = os.environ env['DACAPOPATH'] = get_dacapopath() nchildren = len(self.children) log.debug("I'm a parent and start a calculation for ",nchildren," children.") self._dacapo = nchildren*[None] # export the number of children to the environment env = os.environ env['JACAPO_NIMAGES'] = str(nchildren) # start a dacapo.run instance for each child for i,child in enumerate(self.children): nc = child.get_nc() txt= child.get_txt() scratch = child.get_scratch() if not os.path.exists(nc): child.initnc() child.write_nc() #write atoms to ncfile child.write_input() #make sure input is uptodate #check that the bands get set if child.get_nbands() is None: nelectrons = child.get_valence() nbands = int(nelectrons * 0.65 + 4) child.set_nbands(nbands) env['JACAPO_IMAGE'] = str(i) cmd = "dacapo.run '%(innc)s' -out '%(txt)s' -scratch %(scratch)s" cmd = cmd % {'innc':nc, 'txt':txt, 'scratch':scratch} log.debug(cmd) self._dacapo[i] = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE,shell=True,env=env) print('now waiting for all children to finish') # now wait for all processes to finish for i,child in enumerate(self.children): status = self._dacapo[i].wait() [stdout,stderr] = self._dacapo[i].communicate() output = stdout+stderr if status is 0: #that means it ended fine! child.ready = True child.set_status('finished') else: log.debug('Status was not 0') log.debug(output) child.ready = False # could also check the end of the output .txt file to make sure everything was fine. del self._dacapo def execute_external_dynamics(self, nc=None, txt=None, stoppfile='stop', stopprogram=None): ''' Implementation of the stay alive functionality with socket communication between dacapo and python. Known limitations: It is not possible to start 2 independent Dacapo calculators from the same python process, since the python PID is used as identifier for the script[PID].py file. ''' from socket import socket, AF_INET, SOCK_STREAM, timeout import tempfile if hasattr(self, "_dacapo"): msg = "Starting External Dynamics while Dacapo is running: %s" msg = msg % str(self._dacapo.poll()) log.debug(msg) else: log.debug("No dacapo instance has been started yet") log.debug("Stopprogram: %s" % stopprogram) if not nc: nc = self.get_nc() if not txt: txt = self.get_txt() tempfile.tempdir = os.curdir if stopprogram: # write stop file stfile = open(stoppfile, 'w') stfile.write('1 \n') stfile.close() # signal to dacapo that positions are ready # let dacapo continue, it is up to the python mainloop # to allow dacapo enough time to finish properly. self._client.send('ok too proceed') # Wait for dacapo to acknowledge that netcdf file has # been updated, and analysis part of the code has been # terminated. Dacapo sends a signal at the end of call # clexit(). log.info("waiting for dacapo to exit...") self.s.settimeout(1200.0) # if dacapo exits with an # error, self.s.accept() # should time out, # but we need to give it # enough time to write the # wave function to the nc # file. try: self._client, self._addr = self.s.accept() # Last # mumble # before # Dacapo # dies. os.system("sleep 5") # 5 seconds of silence # mourning # dacapo. except timeout: print('''Socket connection timed out.''') print('''This usually means Dacapo crashed.''') # close the socket s self.s.close() self._client.close() # remove the script???? file ncfile = netCDF(nc, 'r') vdyn = ncfile.variables['Dynamics'] os.system("rm -f '"+vdyn.ExternalIonMotion_script+"'") ncfile.close() os.system('rm -f '+stoppfile) if self._dacapo.poll()==None: # dacapo is still not dead! # but this should do it! sp.Popen("kill -9 "+str(self._dacapo.pid), shell=True) #if Dacapo dies for example because of too few #bands, subprocess never returns an exitcode. #very strange, but at least the program is #terminated. print self._dacapo.returncode del self._dacapo return if hasattr(self, '_dacapo') and self._dacapo.poll()==None: # returns None if dacapo is running self._dacapo_is_running: # calculation_required already updated the positions in # the nc file self._client.send('ok too proceed') else: # get process pid that will be used as communication # channel pid = os.getpid() # setup communication channel to dacapo from sys import version from string import split effpid = (pid)%(2**16-1025)+1025 # This translate pid # [0;99999] to a number # in [1025;65535] (the # allowed socket # numbers) self.s = socket(AF_INET, SOCK_STREAM) foundafreesocket = 0 while not foundafreesocket: try: if split(version)[0] > "2": # new interface self.s.bind(("", effpid)) else: # old interface self.s.bind("", effpid) foundafreesocket = 1 except: effpid = effpid + 1 # write script file that will be used by dacapo scriptname = 'script%s.py' % str(pid) scriptfile = open(scriptname, 'w') scriptfile.write( """#!/usr/bin/env python from socket import * from sys import version from string import split s = socket(AF_INET,SOCK_STREAM) # tell python that dacapo has finished if split(version)[0] > "2": # new interface s.connect(("",%(effpid)s)) else: # old interface s.connect("",%(effpid)s) # wait for python main loop s.recv(14) """ % {'effpid':str(effpid)}) scriptfile.close() os.system('chmod +x ' + scriptname) # hack: use the default psp path (see validate.get_dacapopath) # export DACAPOPATH to the environment env = os.environ env['DACAPOPATH'] = get_dacapopath() # setup dynamics as external and set the script name ncfile = netCDF(nc, 'a') if 'Dynamics' not in ncfile.variables: vdyn = ncfile.createVariable('Dynamics', 'c', ()) else: vdyn = ncfile.variables['Dynamics'] vdyn.Type = "ExternalIonMotion" vdyn.ExternalIonMotion_script = './'+ scriptname ncfile.close() # dacapo is not running start dacapo non blocking scratch_in_nc = tempfile.mktemp() os.system('mv '+nc+' '+scratch_in_nc) os.system('rm -f '+stoppfile) scratch = self.get_scratch() cmd = "dacapo.run" cmd += " '%(innc)s' '%(outnc)s' -out '%(txt)s' -scratch %(scratch)s" cmd = cmd % {'innc':scratch_in_nc, 'outnc':nc, 'txt':txt, 'scratch':scratch} log.debug(cmd) self._dacapo = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE, shell=True) self.s.listen(1) # wait for dacapo self._client, self._addr = self.s.accept() def write_nc(self, nc=None, atoms=None): ''' write out atoms to a netcdffile. This does not write out the calculation parameters! :Parameters: nc : string ncfilename to write to. this file will get clobbered if it already exists. atoms : ASE.Atoms atoms to write. if None use the attached atoms if no atoms are attached only the calculator is written out. the ncfile is always opened in 'a' mode. note: it is good practice to use the atoms argument to make sure that the geometry you mean gets written! Otherwise, the atoms in the calculator is used, which may be different than the external copy of the atoms. ''' log.debug('writing atoms to ncfile with write_nc') #no filename was provided to function, use the current ncfile if nc is None: nc = self.get_nc() if nc != self.nc: #this means we are writing a new file, and we should copy #the old file to it first. this makes sure the old #calculator settings are preserved new = nc old = self.nc log.debug('Copying old ncfile to new ncfile') log.debug("cp '%s' '%s'" % (old, new)) os.system("cp '%s' '%s'" % (old, new)) if atoms is None: atoms = self.get_atoms() log.debug('self.atoms = %s' % str(self.atoms)) log.debug('atoms = %s' % str(atoms)) if atoms is not None: #there may still be no atoms attached log.debug('about to write to %s' % nc) ncf = netCDF(nc, 'a') if 'number_of_dynamic_atoms' not in ncf.dimensions: ncf.createDimension('number_of_dynamic_atoms', len(atoms)) else: # number of atoms is already a dimension, but we might # be setting new atoms here # check for same atom symbols (implicitly includes # a length check) symbols = np.array(['%2s' % s for s in atoms.get_chemical_symbols()], dtype='c') ncsym = ncf.variables['DynamicAtomSpecies'][:] if (symbols.size != ncsym.size) or (np.any(ncsym != symbols)): # the number of atoms or their order has changed. # Treat this as a new calculation and reset # number_of_ionic_steps and # number_of_dynamic_atoms. ncf.close() #nc file must be closed for #delete_ncattdimvar to work correctly self.delete_ncattdimvar(nc, ncattrs=[], ncdims=['number_of_dynamic_atoms', 'number_ionic_steps']) ncf = netCDF(nc, 'a') ncf.createDimension('number_of_dynamic_atoms', len(atoms)) ncf.createDimension('number_ionic_steps', None) self._set_frame_number(0) ncf.close() #nc file must be closed for restart to #work correctly self.restart() ncf = netCDF(nc, 'a') #now, create variables if 'DynamicAtomSpecies' not in ncf.variables: sym = ncf.createVariable('DynamicAtomSpecies', 'c', ('number_of_dynamic_atoms', 'dim2',)) else: sym = ncf.variables['DynamicAtomSpecies'] #note explicit array casting was required here symbols = atoms.get_chemical_symbols() sym[:] = np.array(['%2s' % s for s in symbols], dtype='c') if 'DynamicAtomPositions' not in ncf.variables: pos = ncf.createVariable('DynamicAtomPositions', 'd', ('number_ionic_steps', 'number_of_dynamic_atoms', 'dim3')) else: pos = ncf.variables['DynamicAtomPositions'] spos = atoms.get_scaled_positions() if pos.typecode() == 'f': spos = np.array(spos, dtype=np.float32) pos[self._frame, :] = spos if 'UnitCell' not in ncf.variables: uc = ncf.createVariable('UnitCell', 'd', ('number_ionic_steps', 'dim3', 'dim3')) else: uc = ncf.variables['UnitCell'] cell = atoms.get_cell() if uc.typecode() == 'f': cell = np.array(cell, dtype=np.float32) uc[self._frame, :] = cell if 'AtomTags' not in ncf.variables: tags = ncf.createVariable('AtomTags', 'i', ('number_of_dynamic_atoms',)) else: tags = ncf.variables['AtomTags'] tags[:] = np.array(atoms.get_tags(), np.int32) if 'InitialAtomicMagneticMoment' not in ncf.variables: mom = ncf.createVariable('InitialAtomicMagneticMoment', 'd', ('number_of_dynamic_atoms',)) else: mom = ncf.variables['InitialAtomicMagneticMoment'] #explain why we have to use get_initial_magnetic_moments() moms = atoms.get_initial_magnetic_moments() if mom.typecode() == 'f': moms = np.array(moms, dtype=np.float32) mom[:] = moms #finally the atom pseudopotentials for sym in atoms.get_chemical_symbols(): vn = 'AtomProperty_%s' % sym if vn not in ncf.variables: p = ncf.createVariable(vn, 'c', ('dim20',)) else: p = ncf.variables[vn] ppath = self.get_psp(sym=sym) p.PspotFile = ppath ncf.sync() ncf.close() #store constraints if they exist constraints = atoms._get_constraints() if constraints != []: nc = netCDF(self.get_nc(), 'a') if 'constraints' not in nc.variables: if 'dim1' not in nc.dimensions: nc.createDimension('dim1', 1) c = nc.createVariable('constraints', 'c', ('dim1',)) else: c = nc.variables['constraints'] #we store the pickle string as an attribute of a #netcdf variable because that way we do not have to #know how long the string is. with a character #variable you have to specify the dimension of the #string ahead of time. c.data = pickle.dumps(constraints) nc.close() else: # getting here means there where no constraints on the # atoms just written we should check if there are any # old constraints left in the ncfile # from a previous atoms, and delete them if so delete_constraints = False nc = netCDF(self.get_nc()) if 'constraints' in nc.variables: delete_constraints = True nc.close() if delete_constraints: log.debug('deleting old constraints') self.delete_ncattdimvar(self.nc, ncvars=['constraints']) def read_atoms(filename): '''read atoms and calculator from an existing netcdf file. :Parameters: filename : string name of file to read from. static method example:: >>> atoms = Jacapo.read_atoms(ncfile) >>> calc = atoms.get_calculator() this method is here for legacy purposes. I used to use it alot. ''' calc = Jacapo(filename) atoms = calc.get_atoms() return atoms read_atoms = staticmethod(read_atoms) def read_only_atoms(self, ncfile): '''read only the atoms from an existing netcdf file. Used to initialize a calculator from a ncfilename. :Parameters: ncfile : string name of file to read from. return ASE.Atoms with no calculator attached or None if no atoms found ''' from ase import Atoms nc = netCDF(ncfile, 'r') #some ncfiles do not have atoms in them if 'UnitCell' not in nc.variables: log.debug('no unit cell found in ncfile') nc.close() return None cell = nc.variables['UnitCell'][:][-1] sym = nc.variables['DynamicAtomSpecies'][:] symbols = [x.tostring().strip() for x in sym] spos = nc.variables['DynamicAtomPositions'][:][-1] pos = np.dot(spos, cell) atoms = Atoms(symbols=symbols, positions=pos, cell=cell, pbc=True) if 'AtomTags' in nc.variables: tags = nc.variables['AtomTags'][:] atoms.set_tags(tags) if 'InitialAtomicMagneticMoment' in nc.variables: mom = nc.variables['InitialAtomicMagneticMoment'][:] atoms.set_initial_magnetic_moments(mom) #update psp database for sym in symbols: vn = 'AtomProperty_%s' % sym if vn in nc.variables: var = nc.variables[vn] pspfile = var.PspotFile self.psp[sym] = pspfile #get constraints if they exist c = nc.variables.get('constraints', None) if c is not None: constraints = pickle.loads(c.data) atoms.set_constraint(constraints) nc.close() return atoms def delete_ncattdimvar(self, ncf, ncattrs=None, ncdims=None, ncvars=None): ''' helper function to delete attributes, dimensions and variables in a netcdffile this functionality is not implemented for some reason in netcdf, so the only way to do this is to copy all the attributes, dimensions, and variables to a new file, excluding the ones you want to delete and then rename the new file. if you delete a dimension, all variables with that dimension are also deleted. ''' if ncattrs is None: ncattrs = [] if ncdims is None: ncdims = [] if ncvars is None: ncvars = [] log.debug('beginning: going to delete dims: %s' % str(ncdims)) log.debug('beginning: going to delete vars: %s' % str(ncvars)) oldnc = netCDF(ncf, 'r') #h,tempnc = tempfile.mkstemp(dir='.',suffix='.nc') tempnc = ncf+'.temp' newnc = netCDF(tempnc, 'w') for attr in dir(oldnc): if attr in ['close', 'createDimension', 'createVariable', 'flush', 'sync']: continue if attr in ncattrs: continue #do not copy this attribute setattr(newnc, attr, getattr(oldnc, attr)) #copy dimensions for dim in oldnc.dimensions: if dim in ncdims: log.debug('deleting %s of %s' % (dim, str(ncdims))) continue #do not copy this dimension size = oldnc.dimensions[dim] newnc.createDimension(dim, size) # we need to delete all variables that depended on a deleted dimension for v in oldnc.variables: dims1 = oldnc.variables[v].dimensions for dim in ncdims: if dim in dims1: s = 'deleting "%s" because it depends on dim "%s"' log.debug(s %(v, dim)) ncvars.append(v) #copy variables, except the ones to delete for v in oldnc.variables: if v in ncvars: log.debug('vars to delete: %s ' % ncvars) log.debug('deleting ncvar: %s' % v) continue #we do not copy this v over ncvar = oldnc.variables[v] tcode = ncvar.typecode() #char typecodes do not come out right apparently if tcode == " ": tcode = 'c' ncvar2 = newnc.createVariable(v, tcode, ncvar.dimensions) try: ncvar2[:] = ncvar[:] except TypeError: #this exception occurs for scalar variables #use getValue and assignValue instead ncvar2.assignValue(ncvar.getValue()) #and variable attributes #print dir(ncvar) for att in dir(ncvar): if att in ['assignValue', 'getValue', 'typecode']: continue setattr(ncvar2, att, getattr(ncvar, att)) oldnc.close() newnc.close() s = 'looking for .nfs files before copying: %s' log.debug(s % glob.glob('.nfs*')) #ack!!! this makes .nfsxxx files!!! #os.close(h) #this avoids the stupid .nfsxxx file #import shutil #shutil.move(tempnc,ncf) #this seems to avoid making the .nfs files os.system("cp '%s' '%s'" % (tempnc, ncf)) os.system("rm '%s'" % tempnc) s = 'looking for .nfs files after copying: %s' log.debug(s % glob.glob('.nfs*')) def restart(self): ''' Restart the calculator by deleting nc dimensions that will be rewritten on the next calculation. This is sometimes required when certain dimensions change related to unitcell size changes planewave/densitywave cutoffs and kpt changes. These can cause fortran netcdf errors if the data does not match the pre-defined dimension sizes. also delete all the output from previous calculation. ''' log.debug('restarting!') if not os.path.exists(self.nc): return ncdims = ['number_plane_waves', 'number_IBZ_kpoints', 'softgrid_dim1', 'softgrid_dim2', 'softgrid_dim3', 'hardgrid_dim1', 'hardgrid_dim2', 'hardgrid_dim3', 'max_projectors_per_atom', 'atomdos_energygrid_size', 'atomdos_angular_channels', 'atomdos_radial_orbs'] ncvars = ['TotalEnergy', 'TotalFreeEnergy', 'EvaluateTotalEnergy', 'DynamicAtomForces', 'FermiLevel', 'EnsembleXCEnergies', 'AtomProjectedDOS_IntegratedDOS', 'AtomProjectedDOS_OrdinalMap', 'NumberPlaneWavesKpoint', 'AtomProjectedDOS_EnergyResolvedDOS', 'AtomProjectedDOS_EnergyGrid', 'EvaluateCorrelationEnergy', 'DynamicAtomVelocities', 'KpointWeight', 'EvaluateExchangeEnergy', 'EffectivePotential', 'TotalStress', 'ChargeDensity', 'WaveFunction', 'WaveFunctionFFTindex', 'NumberOfNLProjectors', 'NLProjectorPsi', 'TypeNLProjector1', 'NumberofNLProjectors', 'PartialCoreDensity', 'ChargeDensity', 'ElectrostaticPotential', 'StructureFactor', 'EigenValues', 'OccupationNumbers'] self.delete_ncattdimvar(self.nc, ncattrs=[], ncdims=ncdims, ncvars=ncvars) self.set_status('new') self.ready = False def get_convergence(self): 'return convergence settings for Dacapo' nc = netCDF(self.get_nc(), 'r') vname = 'ConvergenceControl' if vname in nc.variables: v = nc.variables[vname] convergence = {} if hasattr(v, 'AbsoluteEnergyConvergence'): convergence['energy'] = v.AbsoluteEnergyConvergence[0] if hasattr(v, 'DensityConvergence'): convergence['density'] = v.DensityConvergence[0] if hasattr(v, 'OccupationConvergence'): convergence['occupation'] = v.OccupationConvergence[0] if hasattr(v, 'MaxNumberOfSteps'): convergence['maxsteps'] = v.MaxNumberOfSteps[0] if hasattr(v, 'CPUTimeLimit'): convergence['cputime'] = v.CPUTimeLimit[0] else: convergence = None nc.close() return convergence def set_convergence(self, energy=0.00001, density=0.0001, occupation=0.001, maxsteps=None, maxtime=None ): '''set convergence criteria for stopping the dacapo calculator. :Parameters: energy : float set total energy change (eV) required for stopping density : float set density change required for stopping occupation : float set occupation change required for stopping maxsteps : integer specify maximum number of steps to take maxtime : integer specify maximum number of hours to run. Autopilot not supported here. ''' nc = netCDF(self.get_nc(), 'a') vname = 'ConvergenceControl' if vname in nc.variables: v = nc.variables[vname] else: v = nc.createVariable(vname, 'c', ('dim1',)) if energy is not None: v.AbsoluteEnergyConvergence = energy if density is not None: v.DensityConvergence = density if occupation is not None: v.OccupationConvergence = occupation if maxsteps is not None: v.MaxNumberOfSteps = maxsteps if maxtime is not None: v.CPUTimeLimit = maxtime nc.sync() nc.close() def get_charge_mixing(self): 'return charge mixing parameters' nc = netCDF(self.get_nc(), 'r') vname = 'ChargeMixing' if vname in nc.variables: v = nc.variables[vname] charge_mixing = {} if hasattr(v, 'Method'): charge_mixing['method'] = v.Method if hasattr(v, 'UpdateCharge'): charge_mixing['updatecharge'] = v.UpdateCharge if hasattr(v, 'Pulay_MixingHistory'): charge_mixing['mixinghistory'] = v.Pulay_MixingHistory[0] if hasattr(v, 'Pulay_DensityMixingCoeff'): charge_mixing['mixingcoeff'] = v.Pulay_DensityMixingCoeff[0] if hasattr(v, 'Pulay_KerkerPrecondition'): charge_mixing['precondition'] = v.Pulay_KerkerPrecondition else: charge_mixing = None nc.close() return charge_mixing def set_charge_mixing(self, method='Pulay', mixinghistory=10, mixingcoeff=0.1, precondition='No', updatecharge='Yes'): '''set density mixing method and parameters :Parameters: method : string 'Pulay' for Pulay mixing. only one supported now mixinghistory : integer number of iterations to mix Number of charge residual vectors stored for generating the Pulay estimate on the self-consistent charge density, see Sec. 4.2 in Kresse/Furthmuller: Comp. Mat. Sci. 6 (1996) p34ff mixingcoeff : float Mixing coefficient for Pulay charge mixing, corresponding to A in G$^1$ in Sec. 4.2 in Kresse/Furthmuller: Comp. Mat. Sci. 6 (1996) p34ff precondition : string 'Yes' or 'No' * "Yes" : Kerker preconditiong is used, i.e. q$_0$ is different from zero, see eq. 82 in Kresse/Furthmuller: Comp. Mat. Sci. 6 (1996). The value of q$_0$ is fix to give a damping of 20 of the lowest q vector. * "No" : q$_0$ is zero and mixing is linear (default). updatecharge : string 'Yes' or 'No' * "Yes" : Perform charge mixing according to ChargeMixing:Method setting * "No" : Freeze charge to initial value. This setting is useful when evaluating the Harris-Foulkes density functional ''' if method == 'Pulay': nc = netCDF(self.get_nc(), 'a') vname = 'ChargeMixing' if vname in nc.variables: v = nc.variables[vname] else: v = nc.createVariable(vname, 'c', ('dim1',)) v.Method = 'Pulay' v.UpdateCharge = updatecharge v.Pulay_MixingHistory = mixinghistory v.Pulay_DensityMixingCoeff = mixingcoeff v.Pulay_KerkerPrecondition = precondition nc.sync() nc.close() self.ready = False def set_electronic_minimization(self, method='eigsolve', diagsperband=2): '''set the eigensolver method Selector for which subroutine to use for electronic minimization Recognized options : "resmin", "eigsolve" and "rmm-diis". * "resmin" : Power method (Lennart Bengtson), can only handle k-point parallization. * "eigsolve : Block Davidson algorithm (Claus Bendtsen et al). * "rmm-diis : Residual minimization method (RMM), using DIIS (direct inversion in the iterate subspace) The implementaion follows closely the algorithm outlined in Kresse and Furthmuller, Comp. Mat. Sci, III.G/III.H :Parameters: method : string should be 'resmin', 'eigsolve' or 'rmm-diis' diagsperband : int The number of diagonalizations per band for electronic minimization algorithms (maps onto internal variable ndiapb). Applies for both ElectronicMinimization:Method = "resmin" and "eigsolve". default value = 2 ''' nc = netCDF(self.get_nc(), 'a') vname = 'ElectronicMinimization' if vname in nc.variables: v = nc.variables[vname] else: log.debug('Creating ElectronicMinimization') v = nc.createVariable(vname, 'c', ('dim1',)) log.debug('setting method for ElectronicMinimization: % s' % method) v.Method = method log.debug('setting DiagonalizationsBand for ElectronicMinimization') if diagsperband is not None: v.DiagonalizationsPerBand = diagsperband log.debug('synchronizing ncfile') nc.sync() nc.close() def get_electronic_minimization(self): '''get method and diagonalizations per band for electronic minimization algorithms''' log.debug('getting electronic minimization parameters') nc = netCDF(self.get_nc(), 'r') vname = 'ElectronicMinimization' if vname in nc.variables: v = nc.variables[vname] method = v.Method if hasattr(v, 'DiagonalizationsPerBand'): diagsperband = v.DiagonalizationsPerBand[0] else: diagsperband = None else: method = None diagsperband = None nc.close() return {'method':method, 'diagsperband':diagsperband} def get_occupationstatistics(self): 'return occupation statistics method' nc = netCDF(self.get_nc(), 'r') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] if hasattr(v, 'OccupationStatistics'): occstat = v.OccupationStatistics else: occstat = None else: occstat = None nc.close() return occstat def set_occupationstatistics(self, method): ''' set the method used for smearing the occupations. :Parameters: method : string one of 'FermiDirac' or 'MethfesselPaxton' Currently, the Methfessel-Paxton scheme (PRB 40, 3616 (1989).) is implemented to 1th order (which is recommemded by most authors). 'FermiDirac' is the default ''' nc = netCDF(self.get_nc(), 'a') if 'ElectronicBands' in nc.variables: v = nc.variables['ElectronicBands'] v.OccupationStatistics = method nc.sync() nc.close() def get_fermi_level(self): 'return Fermi level' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') ef = nc.variables['FermiLevel'][-1] nc.close() return ef def get_occupation_numbers(self, kpt=0, spin=0): '''return occupancies of eigenstates for a kpt and spin :Parameters: kpt : integer index of the IBZ kpoint you want the occupation of spin : integer 0 or 1 ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') occ = nc.variables['OccupationNumbers'][:][-1][kpt, spin] nc.close() return occ def get_xc_energies(self, *functional): """ Get energies for different functionals self-consistent and non-self-consistent. :Parameters: functional : strings some set of 'PZ','VWN','PW91','PBE','revPBE', 'RPBE' This function returns the self-consistent energy and/or energies associated with various functionals. The functionals are currently PZ,VWN,PW91,PBE,revPBE, RPBE. The different energies may be useful for calculating improved adsorption energies as in B. Hammer, L.B. Hansen and J.K. Norskov, Phys. Rev. B 59,7413. Examples: get_xcenergies() #returns all the energies get_xcenergies('PBE') # returns the PBE total energy get_xcenergies('PW91','PBE','revPBE') # returns a # list of energies in the order asked for """ if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') funcenergies = nc.variables['EvaluateTotalEnergy'][:][-1] xcfuncs = nc.variables['EvalFunctionalOfDensity_XC'][:] nc.close() xcfuncs = [xc.tostring().strip() for xc in xcfuncs] edict = dict(zip(xcfuncs, funcenergies)) if len(functional) == 0: #get all energies by default functional = xcfuncs return [edict[xc] for xc in functional] # break of compatibility def get_ados_data(self, atoms, orbitals, cutoff, spin): '''get atom projected data :Parameters: atoms list of atom indices (integers) orbitals list of strings ['s','p','d'], ['px','py','pz'] ['d_zz', 'dxx-yy', 'd_xy', 'd_xz', 'd_yz'] cutoff : string cutoff radius you want the results for 'short' or 'infinite' spin : list of integers spin you want the results for [0] or [1] or [0,1] for both returns (egrid, ados) egrid has the fermi level at 0 eV ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') omapvar = nc.variables['AtomProjectedDOS_OrdinalMap'] omap = omapvar[:] #indices c = omapvar.AngularChannels channels = [x.strip() for x in c.split(',')] #channel names #this has dimensions(nprojections, nspins, npoints) ados = nc.variables['AtomProjectedDOS_EnergyResolvedDOS'][:] #this is the energy grid for all the atoms egrid = nc.variables['AtomProjectedDOS_EnergyGrid'][:] nc.close() #it is apparently not necessary to normalize the egrid to #the Fermi level. the data is already for ef = 0. #get list of orbitals, replace 'p' and 'd' in needed orbs = [] for o in orbitals: if o == 'p': orbs += ['p_x', 'p_y', 'p_z'] elif o == 'd': orbs += ['d_zz', 'dxx-yy', 'd_xy', 'd_xz', 'd_yz'] else: orbs += [o] orbinds = [channels.index(x) for x in orbs] cutdict = {'infinite':0, 'short':1} icut = cutdict[cutoff] ydata = np.zeros(len(egrid), np.float) for atomind in atoms: for oi in orbinds: ind = omap[atomind, icut, oi] for si in spin: ydata += ados[ind, si] return (egrid, ydata) def get_all_eigenvalues(self, spin=0): '''return all the eigenvalues at all the kpoints for a spin. :Parameters: spin : integer which spin the eigenvalues are for''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') ev = nc.variables['EigenValues'][:][-1][:, spin] nc.close() return ev def get_eigenvalues(self, kpt=0, spin=0): '''return the eigenvalues for a kpt and spin :Parameters: kpt : integer index of the IBZ kpoint spin : integer which spin the eigenvalues are for''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') ev = nc.variables['EigenValues'][:][-1][kpt, spin] nc.close() return ev def get_k_point_weights(self): 'return the weights on the IBZ kpoints' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') kw = nc.variables['KpointWeight'][:] nc.close() return kw def get_magnetic_moment(self, atoms=None): 'calculates the magnetic moment (Bohr-magnetons) of the supercell' if not self.get_spin_polarized(): return None if self.calculation_required(): self.calculate() nibzk = len(self.get_ibz_kpoints()) ibzkw = self.get_k_point_weights() spinup, spindn = 0.0, 0.0 for k in range(nibzk): spinup += self.get_occupation_numbers(k, 0).sum()*ibzkw[k] spindn += self.get_occupation_numbers(k, 1).sum()*ibzkw[k] return (spinup - spindn) def get_number_of_spins(self): 'if spin-polarized returns 2, if not returns 1' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') spv = nc.variables['ElectronicBands'] nc.close() if hasattr(spv, 'SpinPolarization'): return spv.SpinPolarization else: return 1 def get_ibz_kpoints(self): 'return list of kpoints in the irreducible brillouin zone' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') ibz = nc.variables['IBZKpoints'][:] nc.close() return ibz get_ibz_k_points = get_ibz_kpoints def get_bz_k_points(self): 'return list of kpoints in the Brillouin zone' nc = netCDF(self.get_nc(), 'r') if 'BZKpoints' in nc.variables: bz = nc.variables['BZKpoints'][:] else: bz = None nc.close() return bz def get_effective_potential(self, spin=1): ''' returns the realspace local effective potential for the spin. the units of the potential are eV :Parameters: spin : integer specify which spin you want, 0 or 1 ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') efp = np.transpose(nc.variables['EffectivePotential'][:][spin]) nc.close() fftgrids = self.get_fftgrid() hardgrid = fftgrids['hard'] x, y, z = self.get_ucgrid(hardgrid) return (x, y, z, efp) def get_electrostatic_potential(self, spin=0): '''get electrostatic potential Netcdf documentation:: double ElectrostaticPotential(number_of_spin, hardgrid_dim3, hardgrid_dim2, hardgrid_dim1) ; ElectrostaticPotential: Description = "realspace local effective potential" ; unit = "eV" ; ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') esp = np.transpose(nc.variables['ElectrostaticPotential'][:][spin]) nc.close() fftgrids = self.get_fftgrid() x, y, z = self.get_ucgrid(fftgrids['hard']) return (x, y, z, esp) def get_charge_density(self, spin=0): ''' return x,y,z,charge density data x,y,z are grids sampling the unit cell cd is the charge density data netcdf documentation:: ChargeDensity(number_of_spin, hardgrid_dim3, hardgrid_dim2, hardgrid_dim1) ChargeDensity:Description = "realspace charge density" ; ChargeDensity:unit = "-e/A^3" ; ''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') cd = np.transpose(nc.variables['ChargeDensity'][:][spin]) #I am not completely sure why this has to be done #it does give units of electrons/ang**3 vol = self.get_atoms().get_volume() cd /= vol nc.close() grids = self.get_fftgrid() x, y, z = self.get_ucgrid(grids['hard']) return x, y, z, cd def get_ucgrid(self, dims): '''Return X,Y,Z grids for uniform sampling of the unit cell dims = (n0,n1,n2) n0 points along unitcell vector 0 n1 points along unitcell vector 1 n2 points along unitcell vector 2 ''' n0, n1, n2 = dims s0 = 1.0/n0 s1 = 1.0/n1 s2 = 1.0/n2 X, Y, Z = np.mgrid[0.0:1.0:s0, 0.0:1.0:s1, 0.0:1.0:s2] C = np.column_stack([X.ravel(), Y.ravel(), Z.ravel()]) atoms = self.get_atoms() uc = atoms.get_cell() real = np.dot(C, uc) #now convert arrays back to unitcell shape RX = np.reshape(real[:, 0], (n0, n1, n2)) RY = np.reshape(real[:, 1], (n0, n1, n2)) RZ = np.reshape(real[:, 2], (n0, n1, n2)) return (RX, RY, RZ) def get_number_of_grid_points(self): 'return soft fft grid' # needed by ase.dft.wannier fftgrids = self.get_fftgrid() return np.array(fftgrids['soft']) def get_wannier_localization_matrix(self, nbands, dirG, kpoint, nextkpoint, G_I, spin): 'return wannier localization matrix' if self.calculation_required(): self.calculate() if not hasattr(self, 'wannier'): from .utils.wannier import Wannier self.wannier = Wannier(self) self.wannier.set_bands(nbands) self.wannier.set_spin(spin) locmat = self.wannier.get_zi_bloch_matrix(dirG, kpoint, nextkpoint, G_I) return locmat def initial_wannier(self, initialwannier, kpointgrid, fixedstates, edf, spin): 'return initial wannier' if self.calculation_required(): self.calculate() if not hasattr(self, 'wannier'): from .utils.wannier import Wannier self.wannier = Wannier(self) self.wannier.set_data(initialwannier) self.wannier.set_k_point_grid(kpointgrid) self.wannier.set_spin(spin) waves = [[self.get_reciprocal_bloch_function(band=band, kpt=kpt, spin=spin) for band in range(self.get_nbands())] for kpt in range(len(self.get_ibz_k_points()))] self.wannier.setup_m_matrix(waves, self.get_bz_k_points()) #lfn is too keep line length below 78 characters lfn = self.wannier.get_list_of_coefficients_and_rotation_matrices c, U = lfn((self.get_nbands(), fixedstates, edf)) U = np.array(U) for k in range(len(c)): c[k] = np.array(c[k]) return c, U def get_dipole_moment(self,atoms=None): ''' return dipole moment of unit cell Defined by the vector connecting the center of electron charge density to the center of nuclear charge density. Units = eV*angstrom 1 Debye = 0.208194 eV*angstrom ''' if self.calculation_required(): self.calculate() if atoms is None: atoms = self.get_atoms() #center of electron charge density x, y, z, cd = self.get_charge_density() n1, n2, n3 = cd.shape nelements = n1*n2*n3 voxel_volume = atoms.get_volume()/nelements total_electron_charge = -cd.sum()*voxel_volume electron_density_center = np.array([(cd*x).sum(), (cd*y).sum(), (cd*z).sum()]) electron_density_center *= voxel_volume electron_density_center /= total_electron_charge electron_dipole_moment = electron_density_center*total_electron_charge electron_dipole_moment *= -1.0 #we need the - here so the two #negatives don't cancel # now the ion charge center psps = self.get_pseudopotentials()['pspdict'] ion_charge_center = np.array([0.0, 0.0, 0.0]) total_ion_charge = 0.0 for atom in atoms: Z = self.get_psp_nuclear_charge(psps[atom.symbol]) total_ion_charge += Z pos = atom.position ion_charge_center += Z*pos ion_charge_center /= total_ion_charge ion_dipole_moment = ion_charge_center*total_ion_charge dipole_vector = (ion_dipole_moment + electron_dipole_moment) return dipole_vector def get_reciprocal_bloch_function(self, band=0, kpt=0, spin=0): '''return the reciprocal bloch function. Need for Jacapo Wannier class.''' if self.calculation_required(): self.calculate() nc = netCDF(self.get_nc(), 'r') # read reciprocal bloch function npw = nc.variables['NumberPlaneWavesKpoint'][:] bf = nc.variables['WaveFunction'][kpt, spin, band] wflist = np.zeros(npw[kpt], np.complex) wflist.real = bf[0:npw[kpt], 1] wflist.imag = bf[0:npw[kpt], 0] nc.close() return wflist def get_reciprocal_fft_index(self, kpt=0): '''return the Wave Function FFT Index''' nc = netCDF(self.get_nc(), 'r') recind = nc.variables['WaveFunctionFFTindex'][kpt, :, :] nc.close() return recind def get_ensemble_coefficients(self): 'returns exchange correlation ensemble coefficients' # adapted from ASE/dacapo.py # def GetEnsembleCoefficients(self): # self.Calculate() # E = self.GetPotentialEnergy() # xc = self.GetNetCDFEntry('EnsembleXCEnergies') # Exc = xc[0] # exc_c = self.GetNetCDFEntry('EvaluateCorrelationEnergy') # exc_e = self.GetNetCDFEntry('EvaluateExchangeEnergy') # exc = exc_c + exc_e # if self.GetXCFunctional() == 'RPBE': # Exc = exc[-1][-1] # # E0 = xc[1] # Fx = 0 # # diff0 = xc[2] # - Exc # diff1 = xc[3] # - Exc # diff2 = xc[4] # - Exc # coefs = (E + E0 - Exc,diff0-E0 ,diff1-E0,diff2-E0) # print 'ensemble: (%.9f, %.9f, %.9f, %.9f)'% coefs # return num.array(coefs) if self.calculation_required(): self.calculate() E = self.get_potential_energy() nc = netCDF(self.get_nc(), 'r') if 'EnsembleXCEnergies' in nc.variables: v = nc.variables['EnsembleXCEnergies'] xc = v[:] EXC = xc[0] if 'EvaluateCorrelationEnergy' in nc.variables: v = nc.variables['EvaluateCorrelationEnergy'] exc_c = v[:] if 'EvaluateExchangeEnergy' in nc.variables: v = nc.variables['EvaluateExchangeEnergy'] exc_e = v[:] exc = exc_c + exc_e if self.get_xc() == 'RPBE': EXC = exc[-1][-1] E0 = xc[1] # Fx = 0 diff0 = xc[2] # - Exc diff1 = xc[3] # - Exc diff2 = xc[4] # - Exc coefs = (E + E0 - EXC, diff0-E0, diff1-E0, diff2-E0) log.info('ensemble: (%.9f, %.9f, %.9f, %.9f)'% coefs) return np.array(coefs) def get_pseudo_wave_function(self, band=0, kpt=0, spin=0, pad=True): '''return the pseudo wavefunction''' # pad=True does nothing here. if self.calculation_required(): self.calculate() ibz = self.get_ibz_kpoints() #get the reciprocal bloch function wflist = self.get_reciprocal_bloch_function(band=band, kpt=kpt, spin=spin) # wflist == Reciprocal Bloch Function recind = self. get_reciprocal_fft_index(kpt) grids = self.get_fftgrid() softgrid = grids['soft'] # GetReciprocalBlochFunctionGrid wfrec = np.zeros((softgrid), np.complex) for i in range(len(wflist)): wfrec[recind[0, i]-1, recind[1, i]-1, recind[2, i]-1] = wflist[i] # calculate Bloch Function wf = wfrec.copy() dim = wf.shape for i in range(len(dim)): wf = np.fft.fft(wf, dim[i], axis=i) #now the phase function to get the bloch phase basis = self.get_atoms().get_cell() kpoint = np.dot(ibz[kpt], basis) #coordinates of relevant #kpoint in cartesian #coordinates def phasefunction(coor): 'return phasefunction' pf = np.exp(1.0j*np.dot(kpoint, coor)) return pf # Calculating the Bloch phase at the origin (0,0,0) of the grid origin = np.array([0., 0., 0.]) blochphase = phasefunction(origin) spatialshape = wf.shape[-len(basis):] gridunitvectors = np.array(list(map(lambda unitvector, shape:unitvector/shape, basis, spatialshape))) for dim in range(len(spatialshape)): # Multiplying with the phase at the origin deltaphase = phasefunction(gridunitvectors[dim]) # and calculating phase difference between each point newphase = np.fromfunction(lambda i, phase=deltaphase:phase**i, (spatialshape[dim],)) blochphase = np.multiply.outer(blochphase, newphase) return blochphase*wf def get_wave_function(self, band=0, kpt=0, spin=0): '''return the wave function. This is the pseudo wave function divided by volume.''' pwf = self.get_pseudo_wave_function(band=band, kpt=kpt, spin=spin, pad=True) vol = self.get_atoms().get_volume() fftgrids = self.get_fftgrid() softgrid = fftgrids['soft'] x, y, z = self.get_ucgrid((softgrid)) return x, y, z, pwf/np.sqrt(vol) def strip(self): '''remove all large memory nc variables not needed for anything I use very often. ''' self.delete_ncattdimvar(self.nc, ncdims=['max_projectors_per_atom'], ncvars=['WaveFunction', 'WaveFunctionFFTindex', 'NumberOfNLProjectors', 'NLProjectorPsi', 'TypeNLProjector1', 'NumberofNLProjectors', 'PartialCoreDensity', 'ChargeDensity', 'ElectrostaticPotential', 'StructureFactor']) # shortcut function names Jacapo.get_cd = Jacapo.get_charge_density Jacapo.get_wf = Jacapo.get_wave_function Jacapo.get_esp = Jacapo.get_electrostatic_potential Jacapo.get_occ = Jacapo.get_occupation_numbers Jacapo.get_ef = Jacapo.get_fermi_level Jacapo.get_number_of_bands = Jacapo.get_nbands Jacapo.get_electronic_temperature = Jacapo.get_ft Jacapo.get_number_of_electrons = Jacapo.get_valence ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/lda_psp.py000066400000000000000000000002241316323560300263020ustar00rootroot00000000000000# Copyright (C) 2005 jrk """ Default pseudopotential paths are defined here """ __docformat__ = 'reStructuredText' defaultpseudopotentials = {} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/mayavis.py000066400000000000000000000035471316323560300263440ustar00rootroot00000000000000''' mayavi interface to plot atoms, unit cells, and volumetric data ''' import numpy as np from enthought.mayavi import mlab mlab.figure(1, bgcolor=(1,1,1), size=(350, 350)) mlab.clf() def plot_cylinder(start,end,tube_radius=0.1,color=(0,0,0)): mlab.plot3d([start[0],end[0]],[start[1],end[1]],[start[2],end[2]], tube_radius=tube_radius,color=color) def plot_atoms(atoms): for atom in atoms: pos = atom.position mlab.points3d([pos[0]],[pos[1]],[pos[2]], scale_factor=4, resolution=20, color=(1,0,0), #this should get species specifuc scale_mode='none') (u0,u1,u2) = atoms.get_cell() origin = np.array([0.0,0.0,0.0]) plot_cylinder(origin,u0) plot_cylinder(origin,u1) plot_cylinder(origin,u2) plot_cylinder(u0,u0+u1) plot_cylinder(u0,u0+u2) plot_cylinder(u1,u1+u0) plot_cylinder(u1,u1+u2) plot_cylinder(u2,u2+u0) plot_cylinder(u2,u2+u1) plot_cylinder(u0+u1,u0+u1+u2) plot_cylinder(u1+u2,u0+u1+u2) plot_cylinder(u0+u2,u0+u1+u2) mlab.show() if __name__ == '__main__': from ase.lattice.cubic import * from ase.lattice.bravais import cross import numpy as np a = np.array([0.5,0,0]) c = np.array([0,1,0],dtype=np.float) b1 = c - a a = np.array([0,1,0],np.float) c = np.array([0,0.5,0.5]) b2 = c - a a3 = np.array([2,1,1],np.float) a1 = cross(b1,a3) a2 = cross(b2,a3) v211 = FaceCenteredCubic(directions=[a1,a2,a3], miller=(None,None,[2,1,1]), symbol='Pd', size=(1,1,2), debug=0) uc = v211.get_cell() uc[2][2] += 10.0 v211.set_cell(uc) plot_atoms(v211.repeat((2,2,1))) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/pbe_psp.py000066400000000000000000000004641316323560300263160ustar00rootroot00000000000000# Copyright (C) 2005 jrk """ Default pseudopotential paths are defined here """ __docformat__ = 'reStructuredText' defaultpseudopotentials = {'O':'008-O-gpbe-rc_1_3_nlc.uspp', 'Pd':'046-Pd-gpe-n-6projectors-floc.uspp', 'Ag':'047-Ag-gpe-n-floc.uspp'} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/pw91_psp.py000066400000000000000000000066731316323560300263600ustar00rootroot00000000000000""" Default pseudopotential paths are defined here """ __docformat__ = 'reStructuredText' defaultpseudopotentials = {'H':'ch_e9g4.pseudo', # H 'Li':'Li_us_cc.pseudo', # Li 'Be':'Be_us_cc.pseudo', # Be 'B':'B_us_cc.pseudo', # B 'C':'C_us_gga.pseudo', # C 'N':'N_us.pseudo', # N 'O':'co_gef_e13_gga.pseudo', # O 'F':'F_pw91_us_7.3.4.pseudo', # F 'Na':'Na_tm_lda_cc.pseudo', # Na 'Mg':'mg_us_gga.pseudo', # Mg 'Al':'Al_us_gga_org.pseudo', # Al 'Si':'csi_e8ag4.pseudo', # Si 'P':'P_us.pseudo', # P 'S':'S_tm.pseudo', # S 'Cl':'Cl_us_gga.pseudo', # Cl 'K':'k_us_gga.pseudo', # K 'Ca':'Ca_us_cc_pw91.pseudo', # Ca 'Sc':'Sc_us_cc_pw91.pseudo', # Sc 'Ti':'ti_us_gga.pseudo', # Ti 'V':'V_us_pw91_13elec.pseudo', # V 'Cr':'Cr_us_pw91_14elec.pseudo', # Cr 'Mn':'Mn_us_gga.pseudo', # Mn 'Fe':'Fe_us_gga_d2.1.8.pseudo', # Fe 'Co':'Co_us_gga.pseudo', # Co 'Ni':'Ni_us_gga.pseudo', # Ni 'Cu':'Cu_us_gga.pseudo', # Cu 'Zn':'zn_us_gga.pseudo', # Zn 'Ga':'ga_pw91_us_13elec.pseudo', # Ga 'Ge':'ge_pw91_us_14elec.pseudo', # Ge 'As':'as_pw91_us_15elec.pseudo', # As 'Br':'Br_us.pseudo', # Br 'Kr':'Kr_us_gga.pseudo', # Kr 'Sr':'Sr_us_cc_pw91.pseudo', # Sr 'Y':'Y_us_cc_pw91.pseudo', # Y 'Zr':'Zr_us_gga.pseudo', # Zr 'Nb':'Nb_us_pw91_13elec.pseudo', # Nb 'Mo':'Mo_us.pseudo', # Mo 'Ru':'Ru_us_gga.pseudo', # Ru 'Rh':'Rh_us_gga_fl.pseudo', # Rh 'Pd':'pd_us_gga.pseudo', # Pd 'Ag':'ag_us.pseudo', # Ag 'Cd':'Cd_us_gga.pseudo', # Cd 'Sn':'sn_us_f.pseudo', # Sn 'Sb':'sb_us_gga.pseudo', # Sb 'Te':'te_tm.pseudo', # Te 'I':'I_us.pseudo', # I 'Xe':'Xe_us_gga.pseudo', # Xe 'Cs':'cs_tm_7el.pseudo', # Cs 'Ba':'Ba_us_cc_pw91.pseudo', # Ba 'La':'La_us_cc_pw91.pseudo', # La 'Ta':'Ta_us_pw91_13elec.pseudo', # Ta 'W':'W_us_pw91_6elec.pseudo', # W 'Re':'re_us_gga_7elec.pseudo', # Re 'Os':'os_us_gga_7elec_7.3.4.pseudo', # Os 'Ir':'ir_us_gga_flocal.pseudo', # Ir 'Pt':'pt_us_gga.pseudo', # Pt 'Au':'Au_us_gga.pseudo', # Au 'Bi':'Bi_us_gga.pseudo'} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/setup.py000066400000000000000000000017711316323560300260300ustar00rootroot00000000000000from distutils.core import setup from glob import glob from os.path import join import os import sys long_description = """\ Jacapo is a python package providing an interface to Dacapo that is compatible with the open source Atomic Simulation Environment in the python scripting language.""" if sys.version_info < (2, 3, 0, 'final', 0): raise SystemExit('Python 2.3 or later is required!') packages = ['Jacapo'] tools = ['tools/ncsum', 'tools/plotnetcdf', 'tools/pysub', 'tools/qn_relax', 'tools/stripnetcdf'] # Get the current version number: exec(compile(open('version.py').read(), 'version.py', 'exec')) setup(name = 'python-Jacapo', version=version, description='Jacapo - ase + Dacapo', url='http://www.fysik.dtu.dk/Campos/ase', maintainer='John Kitchin', maintainer_email='jkitchin@andrew.cmu.edu', license='LGPL', platforms=['linux'], packages=packages, scripts=tools, long_description=long_description) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/000077500000000000000000000000001316323560300254505ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/dacapo.run000077500000000000000000000136321316323560300274350ustar00rootroot00000000000000#!/usr/bin/env python ''' This script runs dacapo in either serial or parallel depending on the existence of an environment variable from a queue system. Three queue systems are currently supported: PBS PBS_NODEFILE Sun grid engine PE_HOSTFILE LoadLeveler LOADL_STEP_TYPE If one of these is found, then the parallel environement is set up for lam-mpi and the job run otherwise a serial job is run dacapo executables are found from one of these environment variables: DACAPOEXE_SERIAL default serial executable DACAPOEXE_PARALLEL default parallel executable You can trick it into running in parallel at the command line like this: env PBS_NODEFILE=pbs.nodes mydacapo.run CO.nc CO.nc -out CO.txt env PE_HOSTFILE=sge.nodes mydacapo.run CO.nc CO.nc -out CO.txt where pbs.nodes is a pbs-style nodefile and sge.nodes is a sun grid engine style nodefile python scripts as a rule tend to return zero I have found, even if you tell it to return something else with sys.exit(5) for example. The only thing I have been able to get to work is to return zero or not zero. sys.exit('anystring') makes the script return non-zero if an error occurs. That is why there are so many of these types of commands here. I use the non-zero status to know if an error has occurred during the calculation. John Kitchin 05/22/05 ''' import os,string,sys from subprocess import * ARGS = string.join(sys.argv[1:],' ') def RunSerialDacapo(ARGS): DACAPOEXE = os.environ.get('DACAPOEXE_SERIAL') if DACAPOEXE is None: raise Exception, 'DACAPOEXE_SERIAL was not found in your environment' cmd = string.join([DACAPOEXE,ARGS],' ') status = os.system(cmd) if status != 0: sys.exit('"%s" failed' % cmd) ### check if LoadLeveler ''' the loadleveler I am familiar with does not use a nodefile that the user needs to know aobut. it uses the poe command which does this stuff for you. according to an old note in the original dacapo.run shell script the nodelist can be found in $LOADL_PROCESSOR_LIST ''' if 'LOADL_STEP_TYPE' in os.environ.keys(): LL_type = os.environ.get('LOADL_STEP_TYPE') if LL_type == 'PARALLEL': os.environ['OMP_NUM_THREADS'] = '1' MPICMD = 'poe' DACAPOEXE = os.environ.get('DACAPOEXE_PARALLEL') parcmd = string.join([MPICMD,DACAPOEXE,ARGS],' ') status = os.system(parcmd) if status != 0: sys.exit('"%s" failed' % parcmd) elif LL_type == 'SERIAL': RunSerialDacapo(ARGS) ### next check for PBS or SGE elif ('PBS_NODEFILE' in os.environ.keys() or 'PE_HOSTFILE' in os.environ.keys()): #print 'PBS_NODEFILE = ',os.environ.get('PBS_NODEFILE') if 'PBS_NODEFILE' in os.environ.keys(): MACHINEFILE = os.environ.get('PBS_NODEFILE') NPROCS = len(open(MACHINEFILE,'r').readlines()) JOBID = os.environ.get('PBS_JOBID') import shutil nodefile = 'pbs.%s.nodes' % JOBID # i make a copy here for debugging purposes # it is deleted after the job if finished # and the PBS_NODEFILE is temporary somewhere anyway shutil.copy(MACHINEFILE,nodefile) # if its not PBS here it must be SGE, but # I check again anyway elif 'PE_HOSTFILE' in os.environ.keys(): ''' here is the typical contents of the PE_HOSTFILE n14.bc.rzg.mpg.de 2 all.q@n14.bc.rzg.mpg.de UNDEFINED o06.bc.rzg.mpg.de 2 all.q@o06.bc.rzg.mpg.de UNDEFINED n11.bc.rzg.mpg.de 2 all.q@n11.bc.rzg.mpg.de UNDEFINED below, I parse the contents of this file to create the nodefile for lam-mpi: n14.bc.rzg.mpg.de n14.bc.rzg.mpg.de o06.bc.rzg.mpg.de o06.bc.rzg.mpg.de n11.bc.rzg.mpg.de n11.bc.rzg.mpg.de ''' MACHINEFILE = os.environ.get('PE_HOSTFILE') JOBID = os.environ.get('JOB_ID') NPROCS = 0 nodefile = 'sge.%s.nodes' % JOBID nf = open(nodefile,'w') for line in open(MACHINEFILE,'r'): # nodename = fields[0] # ncpus = fields[1] # queue = fields[2] # UNDEFINED = fields[3] fields = string.split(line) if __debug__: print fields nodename = fields[0] nprocs = int(fields[1]) if __debug__: print nodename,nprocs for n in range(nprocs): nodeline = '%s\n' % (fields[0]) nf.write(nodeline) NPROCS += nprocs nf.close() if __debug__: print 'SGE_O_WORKDIR = ',os.environ.get('SGE_O_WORKDIR') print 'NHOSTS = ',os.environ.get('NHOSTS') print 'NSLOTS = ',os.environ.get('NSLOTS') if NPROCS > 1: # now construct the mpirun command MPICMD = 'mpirun -np %i' % NPROCS DACAPOEXE = os.environ.get('DACAPOEXE_PARALLEL') parcmd = string.join([MPICMD,DACAPOEXE,ARGS],' ') if __debug__: print parcmd print 'Running "%s"' % parcmd p = Popen(parcmd, shell=True, stdin=PIPE, stdout=PIPE, close_fds=True, cwd=os.getcwd()) p_pid = p.pid status = p.wait() if status != 0: (sout,serr) = p.communicate() print 'stdout = ',sout print 'stderr = ',serr all_is_ok = False print '**** the command failed ****' if not all_is_ok: sys.exit('"%s" failed' % parcmd) print print 'One iteration from parallel run complete' print '*******************************************************' print else: RunSerialDacapo(ARGS) else: # serial job, no parallel environment found. RunSerialDacapo(ARGS) #remove the nodefile try: if os.path.exists(nodefile): os.remove(nodefile) except: pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/ncsum000077500000000000000000000022461316323560300265270ustar00rootroot00000000000000#!/usr/bin/env python from optparse import OptionParser from ase.visualize import view from ase.calculators.jacapo import * from Scientific.IO.NetCDF import NetCDFFile as NetCDF import os os.environ['DACAPO_READONLY'] = 'On' parser = OptionParser(usage='ncsum', version='0.1') parser.add_option('-e', nargs=0, help = 'print only the energy') parser.add_option('-p', nargs=0, help='view atoms') parser.add_option('-r', nargs=1, help='repeat plotted atoms in n1,n2,n3 times') options,args = parser.parse_args() for arg in args: calc = Jacapo(arg) atoms = calc.get_atoms() if options.e is not None: nc = netCDF(arg,'r') energy = nc.variables.get('TotalEnergy',None) if energy is not None: print energy[:][-1] else: print None nc.close() else: print calc if options.p is not None: if options.r is not None: n1,n2,n3 = [int(x) for x in options.r.split(',')] else: n1,n2,n3 = (1,1,1) view(atoms.repeat([n1,n2,n3])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/plotnetcdf000077500000000000000000000021451316323560300275420ustar00rootroot00000000000000#!/usr/bin/env python from optparse import OptionParser import os, tempfile from ase.calculators.jacapo import * from ase.io.pdb import * parser = OptionParser(usage='%prog [-r R1 R2 R3]] ncfile', version='%prog 0.1') parser.add_option('-r', '--repeat', type='int', nargs=3, help='Repeat R1, R2, R3 times along the three axes', metavar='R1 R2 R3') parser.add_option('-t', '--time', type='int', nargs=1, help='sleep for t seconds', metavar='t') options, args = parser.parse_args() ncfile = args[0] if options.repeat is None: options.repeat = (1,1,1) atoms = Jacapo.read_atoms(ncfile) handle,tempfilename = tempfile.mkstemp() write_pdb(tempfilename,atoms.repeat(options.repeat)) script = '''\ zap load %s script %s/.rasmolrc select all spacefill #rotate x 180 #rotate z 180 ''' % (tempfilename,os.environ['HOME']) handle,tempscriptname = tempfile.mkstemp() f = open(tempscriptname,'w') f.write(script) f.close() os.system('rasmol -script %s' % tempscriptname) os.remove(tempfilename) os.remove(tempscriptname) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/printlocalsetup000077500000000000000000000167401316323560300306360ustar00rootroot00000000000000#!/usr/bin/env python import os,string,sys # tell me about the architecture print 'Running as user: ', os.environ['USER'] print 'In directory: ',os.getcwd() try: import platform print '------------- system information ---------------' print 'Hostname = ',os.environ['HOST'] print 'Architecture = ',platform.architecture() print 'distribution = ',platform.dist() print 'libc version = ',platform.libc_ver() print 'Machine type = ',platform.machine() print 'Platform = ',platform.platform() print 'processor type = ',platform.processor() print 'system = ',platform.system() print 'system version = ',platform.version() print print '------------- Python information --------' print 'python was compiled with: ',platform.python_compiler() print 'python version = ',platform.python_version() print 'python was built: ',platform.python_build() except: print '*** you have an older version of python' print '*** you missed some important system information because of that' print '*** consider upgrading to version 2.3 or greater' print 'python version = ',sys.version print 'uname = ' os.system('uname -a') print '-------------- User ---------------------' shell = os.environ.get('SHELL') print 'SHELL = ',shell print try: import Numeric print 'Numeric version = ',Numeric.__version__ except: print '*** Numeric is not installed.' print '*** Get it from http://sourceforge.net/projects/numpy' try: import numarray print 'numarray version = ',numarray.__version__ except: print '*** numarray is not installed.' print '*** Get it from http://sourceforge.net/projects/numpy' try: import numpy print 'numpy version = ', numpy.__version__ except: print '*** numpy is not installed' try: import Scientific print 'Found Scientific' try: import Scientific.IO.NetCDF print 'Found Scientific.IO.NetCDF' except: print 'Scientific.IO.NetCDF appears broken.' print 'Is netcdf installed?' print 'did you set $NETCDF_PREFIX when you installed Scientific?' except: print '*** Scientific not installed' print '*** Get it at http://starship.python.net/~hinsen/ScientificPython/' try: import ASE print 'Found ASE at ', ASE.__file__ except Exception,error: print error print '*** No ASE found. Did you install it?' try: import ase print 'Found an ase version: "%s"' % ase.__version__ print 'at :',ase.__file__ except: print '*** No ase found. Did you install it?' try: import Dacapo print 'Found Dacapo python modules' except: print '*** No Dacapo modules found, did you install them?' print ' Get them at dcwww.fysik.dtu.dk/campos' try: import Gnuplot print 'Found Gnuplot python module' except: print '*** No Gnuplot module found' try: import matplotlib print 'Found matplotlib version: ',matplotlib.__version__ except: print 'no matplotlib found' libs = ['cblas', 'lapack', 'f77blas', 'atlas', 'fftw', 'netcdf', 'lamf77mpi'] libpaths = ['/lib', '/usr/lib', '/usr/local/lib', os.path.join(os.environ['HOME'],'lib'), ] if 'LD_LIBRARY_PATH' in os.environ: for libpath in os.environ['LD_LIBRARY_PATH'].split(':'): libpaths.append(libpath) print print '------------------ libraries ------------------' for lib in libs: found = False for path in libpaths: if os.path.exists(os.path.join(path,'lib%s.a' % lib)): found = True print 'found %s in %s' % ('lib%s.a' % lib,path) if not found: print '*** Could not find lib%s.a' % lib def IsOnPath(file): if os.path.isabs(file): if os.path.exists(file): return file else: return False else: path = string.split(os.environ['PATH'],':') for dir in path: if os.path.isdir(dir): if file in os.listdir(dir): return os.path.join(dir,file) return False def FileIsExecutable(file): if file is not None: return os.access(file,os.X_OK) else: return False print print '------------------- compilers -----------------' c = ['pgf90','pgf77', 'ifort','ifc', 'g95', 'gcc','g77','f77', 'f90', 'mpif77','mpf90', 'xlf_r','xlf90_r','mpxlf_r' ] for compiler in c: if IsOnPath(compiler): print '%s found' % compiler else: print '*** %s not found' % compiler print print '-------------- Check for ASE and Dacapo tools -------------' dacapo_tools = ['dacapo.run', 'stripnetcdf' ] for exe in dacapo_tools: f = IsOnPath(exe) if f: if FileIsExecutable(f): print '%s found at %s' % (exe,f) else: print '%s found, but it is not executable' % exe else: print '%s not found' % exe print 'Dacapo/Tools is not on your executable path' ase_executables = ['plottrajectory'] for exe in ase_executables: f = IsOnPath(exe) if f: if FileIsExecutable(f): print '%s found at %s' % (exe,f) else: print '%s found, but it is not executable' % exe else: print '*** %s not found' % exe print 'ASE/Tools is not on your executable path' print print '-------- Location of dacapo executables ------------' exe = os.environ.get('DACAPOEXE_SERIAL',None) f = IsOnPath(exe) if f: if FileIsExecutable(f): print 'default serial executable is: %s' % (exe) else: print '%s found, but it is not executable' % exe else: print '*** %s not found' % exe print 'No default serial dacapo executable found' exe = os.environ.get('DACAPOEXE_PARALLEL',None) f = IsOnPath(exe) if f: if FileIsExecutable(f): print 'default parallel executable is: %s' % (exe) else: print '%s found, but it is not executable' % exe else: print '*** %s not found' % exe print 'No default parallel dacapo executable found' psp = os.environ.get('DACAPOPATH', '/usr/share/dacapo-psp') if os.path.isdir(psp): print 'Pseudopotential database = ',psp else: print '*** "%s" is not a directory, please check $DACAPOPATH' print print '-----------miscellaneous utilities-------------' for exe in ['rasmol','gnuplot','vmd','vtk', 'rsync','ssh','scp']: f = IsOnPath(exe) if f: if FileIsExecutable(f): print '%s found at %s' % (exe,f) else: print '%s found, but it is not executable' % exe else: print '*** %s not found on your path' % exe print print '--------------- mpi ------------------' for exe in ['recon','lamboot','mpirun','lamhalt']: f = IsOnPath(exe) if f: if FileIsExecutable(f): print '%s found at %s' % (exe,f) else: print '%s found, but it is not executable' % exe else: print '*** %s not found' % exe print 'maybe you do not have lam-mpi installed' print print '---------- PYTHON environment variables -------------' print 'PYTHONSTARTUP = ',os.environ.get('PYTHONSTARTUP') print 'PYTHONOPTIMIZE = ',os.environ.get('PYTHONOPTIMIZE') print 'PYTHONPATH:' for x in sys.path: print '"%s"' % x print print '----------- system path --------------------' path = os.environ.get('PATH') for x in string.split(path,':'): print '"%s"' % x ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/pysub000077500000000000000000000027231316323560300265440ustar00rootroot00000000000000#!/usr/bin/env python ''' this is pure laziness to submit python scripts to PBS without the usual cd $PBS_O_WORKDIR stuff ''' import os,sys, tempfile from optparse import OptionParser parser = OptionParser(usage='pysub', version='0.1') parser.add_option('-q', nargs=1, help = 'submit job to the queue with options to qsub') parser.add_option('-n', nargs=1, help='number of nodes to ask for') options,args = parser.parse_args() qdict = {'short':' -l cput=24:00:00,mem=500mb -j oe', 'long':' -l cput=168:00:00,mem=500mb -j oe', 'hogs':' -l cput=24:00:00,mem=2500mb -j oe', 'hogl':' -l cput=168:00:00,mem=2800mb -j oe',} for pyscript in args: h,fname = tempfile.mkstemp() cmd ='''\ #!/bin/tcsh cd $PBS_O_WORKDIR python %s #end''' % pyscript f = open(fname,'w') f.write(cmd) f.close() if options.q is None: qsub_options = '-l cput=24:00:00,mem=2500mb -j oe' elif options.q in qdict: qsub_options = qdict[options.q] else: qsub_options = options.q if options.n is not None: qsub_options += ' -l nodes=%i' % int(options.n) cmd = 'qsub -N %(name)s %(options)s %(script)s' % {'name':pyscript, 'options':qsub_options, 'script':fname} print cmd os.system(cmd) os.close(h) os.remove(fname) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/qn_relax000077500000000000000000000051221316323560300272070ustar00rootroot00000000000000#!/usr/bin/env python from torque import * from ase import * from ase.optimize import QuasiNewton from ase.constraints import FixAtoms from ase.calculators.jacapo import * import os, string, sys, tempfile from optparse import OptionParser ''' qn_relax -q "-l cput=168:00:00,mem=2000mb -l nodes=3 -j oe" relax atoms tagged with 5 and 6 qn_relax -t 5,6 ''' parser = OptionParser(usage='qn_relax', version='0.1') parser.add_option('-q', nargs=1, help = 'submit job to the queue with options to qsub') parser.add_option('-n', nargs=1, help = 'number of nodes to ask for') parser.add_option('-t', nargs=1, help = 'specify which tags to relax, comma-separated list') options,args = parser.parse_args() for ncfile in args: base,ext = os.path.splitext(ncfile) atoms = Jacapo.read_atoms(ncfile) if options.t is None: freetags = [1] elif options.t == 'all': freetags = atoms.get_tags() else: freetags = [int(x) for x in options.t.split(',')] #True means fixed mask = [atom.get_tag() not in freetags for atom in atoms] #if False not in mask: # raise Exception, 'No free atoms found!' atoms.set_constraint(FixAtoms(mask=mask)) if options.q is None: calc = atoms.get_calculator() calc.stay_alive = True qn = QuasiNewton(atoms,trajectory=base+'.traj') qn.run(fmax=0.05) else: h,fname = tempfile.mkstemp() script = '''\ #!/bin/tcsh cd $PBS_O_WORKDIR qn_relax -t %(tags)s %(ncfile)s #end''' % {'ncfile':ncfile, 'tags':string.join([str(t) for t in freetags],',')} print script f = open(fname,'w') f.write(script) f.close() qdict = {'short':'-l cput=24:00:00,mem=500mb -j oe', 'long':'-l cput=168:00:00,mem=500mb -j oe', 'hogs':'-l cput=24:00:00,mem=2500mb -j oe', 'hogl':'-l cput=168:00:00,mem=2800mb -j oe', } if options.q in qdict: qsub_options = qdict[options.q] else: qsub_options = options.q if options.n is not None: qsub_options += ' -l nodes=%i' % int(options.n) cmd = 'qsub -N %(name)s %(options)s %(script)s' % {'name':ncfile, 'options':qsub_options, 'script':fname} print cmd os.system(cmd) os.close(h) os.remove(fname) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/tools/stripnetcdf000077500000000000000000000010711316323560300277220ustar00rootroot00000000000000#!/usr/bin/env python from optparse import OptionParser from ase.calculators.jacapo import * from Scientific.IO.NetCDF import NetCDFFile as NetCDF parser = OptionParser(usage='stripnetcdf', version='0.1') options,args = parser.parse_args() for arg in args: #check if it is a dacapo file nc = NetCDF(arg,'r') if hasattr(nc,'history'): if nc.history != 'Dacapo': nc.close() continue else: nc.close() continue calc = Jacapo(arg) calc.strip() print 'stripped %s' % arg ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/000077500000000000000000000000001316323560300254505ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/__init__.py000066400000000000000000000007071316323560300275650ustar00rootroot00000000000000from __future__ import print_function import Scientific try: if Scientific.__version__ < 2.8: print('your ScientifPython version is: ',Scientific.__version__) print('ScientificPython 2.8 or greater required for numpy support in NetCDF') raise Exception except AttributeError: print('It appears your ScientificPython has no version.') print('That probably means it is not 2.8, which is required') raise Exception ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/bader.py000066400000000000000000000151171316323560300271040ustar00rootroot00000000000000from __future__ import print_function import os, string, tempfile, shutil, subprocess from ase.io import write from ase.units import Bohr class Bader: '''class for running bader analysis and extracting data from it. The class runs bader, extracts the charge density and outputs it to a cube file. Then you call different functions of the class to extract the charges, volumes, etc... ACF.dat contains the coordinates of each atom, the charge associated with it according to Bader partitioning, percentage of the whole according to Bader partitioning and the minimum distance to the surface. This distance should be compared to maximum cut-off radius for the core region if pseudo potentials have been used. BCF.dat contains the coordinates of each Bader maxima, the charge within that volume, the nearest atom and the distance to that atom. AtomVolumes.dat contains the number of each volume that has been assigned to each atom. These numbers correspond to the number of the BvAtxxxx.dat files. The options for the executable are:: bader [ -c bader | voronoi ] [ -n bader | voronoi ] [ -b neargrid | ongrid ] [ -r refine_edge_iterations ] [ -ref reference_charge ] [ -p all_atom | all_bader ] [ -p sel_atom | sel_bader ] [volume list] [ -p atom_index | bader_index ] [ -i cube | chgcar ] [ -h ] [ -v ] chargefile References: G. Henkelman, A. Arnaldsson, and H. Jonsson, A fast and robust algorithm for Bader decomposition of charge density, Comput. Mater. Sci. 36 254-360 (2006). E. Sanville, S. D. Kenny, R. Smith, and G. Henkelman An improved grid-based algorithm for Bader charge allocation, J. Comp. Chem. 28 899-908 (2007). W. Tang, E. Sanville, and G. Henkelman A grid-based Bader analysis algorithm without lattice bias, J. Phys.: Condens. Matter 21 084204 (2009). ''' def __init__(self, atoms): ''' ''' self.atoms = atoms #get density and write cube file calc = atoms.get_calculator() ncfile = calc.get_nc() base, ext = os.path.splitext(ncfile) x, y, z, density = calc.get_charge_density() cubefile = base + '_charge_density.cube' self.densityfile = cubefile if not os.path.exists(cubefile): write(cubefile, atoms, data=density * Bohr ** 3) #cmd to run for bader analysis. check if output exists so we #don't run this too often. acf_file = base + '_ACF.dat' if not os.path.exists(acf_file): #mk tempdir tempdir = tempfile.mkdtemp() cwd = os.getcwd() abscubefile = os.path.abspath(cubefile) os.chdir(tempdir) cmd = 'bader %s' % abscubefile status = subprocess.call(cmd, shell=True) if status != 0: print(" '%s' not successful" %cmd) shutil.copy2('ACF.dat', os.path.join(cwd, acf_file)) os.chdir(cwd) shutil.rmtree(tempdir) self.charges = [] self.volumes = [] #now parse the output f = open(acf_file, 'r') #skip 2 lines f.readline() f.readline() for i, atom in enumerate(self.atoms): line = f.readline() fields = line.split() n = int(fields[0]) x = float(fields[1]) y = float(fields[2]) z = float(fields[3]) chg = float(fields[4]) mindist = float(fields[5]) vol = float(fields[6]) self.charges.append(chg) self.volumes.append(vol) f.close() def get_bader_charges(self): return self.charges def get_bader_volumes(self): 'return volumes in Ang**3' return [x * Bohr ** 3 for x in self.volumes] def write_atom_volume(self, atomlist): '''write bader atom volumes to cube files. atomlist = [0,2] #for example -p sel_atom Write the selected atomic volumes, read from the subsequent list of volumes. ''' alist = string.join([str(x) for x in atomlist], ' ') cmd = 'bader -p sel_atom %s %s' % (alist, self.densityfile) print(cmd) os.system(cmd) def write_bader_volume(self, atomlist): """write bader atom volumes to cube files. :: atomlist = [0,2] # for example -p sel_bader Write the selected Bader volumes, read from the subsequent list of volumes. """ alist = string.join([str(x) for x in atomlist], ' ') cmd = 'bader -p sel_bader %s %s' % (alist, self.densityfile) print(cmd) os.system(cmd) def write_atom_index(self): ''' -p atom_index Write the atomic volume index to a charge density file. ''' cmd = 'bader -p atom_index %s' % (self.densityfile) print(cmd) os.system(cmd) def write_bader_index(self): ''' -p bader_index Write the Bader volume index to a charge density file. ''' cmd = 'bader -p bader_index %s' % (self.densityfile) print(cmd) os.system(cmd) def write_all_atom(self): ''' -p all_atom Combine all volumes associated with an atom and write to file. This is done for all atoms and written to files named BvAtxxxx.dat. The volumes associated with atoms are those for which the maximum in charge density within the volume is closest to the atom. ''' cmd = 'bader -p all_atom %s' % (self.densityfile) print(cmd) os.system(cmd) def write_all_bader(self): ''' -p all_bader Write all Bader volumes (containing charge above threshold of 0.0001) to a file. The charge distribution in each volume is written to a separate file, named Bvolxxxx.dat. It will either be of a CHGCAR format or a CUBE file format, depending on the format of the initial charge density file. These files can be quite large, so this option should be used with caution. ''' cmd = 'bader -p all_bader %s' % (self.densityfile) print(cmd) os.system(cmd) if __name__ == '__main__': from ase.calculators.jacapo import Jacapo atoms = Jacapo.read_atoms('ethylene.nc') b = Bader(atoms) print(b.get_bader_charges()) print(b.get_bader_volumes()) b.write_atom_volume([3, 4]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/bandstructure.py000066400000000000000000000157371316323560300307240ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np import matplotlib.pyplot as plt from ase.calculators.jacapo import * from ase.dft.dos import DOS class BandStructure: '''outline of class to facilitate band structure calculations ''' def __init__(self, atoms, BZpath=[], npoints=10, outnc='harris.nc'): """Headline here ... XXX. atoms is an ase.Atoms object with calculator attached. Presumably the self-consistent charge density has already been calculated, otherwise, it will be. BZpath is a list of tuples describing the path through the Brillouin zone. The tuples have the form (label, kpt), e.g. :: [('$\Gamma$',[0.0, 0.0, 0.0]), ('X',[0.0, 0.5, 0.5]), ('L',[0.5, 0.0, 0.0]), ('$\Gamma$',[0.0, 0.0, 0.0])] the label is used in the figure and can include latex markup. npoints is the number of points on each segment. It can either be a constant, which is used for every segment, or a list of integers that is an integer for each segment. """ self.atoms = atoms self.calc = atoms.get_calculator() #first, we make sure the charge density is up to date. self.calc.get_charge_density() self.ef = self.calc.get_ef() #self-consistent fermi level self.labels = [x[0] for x in BZpath] self.kpt_path = [np.array(x[1],dtype=np.float) for x in BZpath] self.npoints = npoints #first, setup the kpt path kpts = [] #start at second kpt and go to second to last segment nsegments = len(self.kpt_path) - 1 for i in range(nsegments-1): #get number of points on path. this counts the first point try: i_npt = npoints[i] except TypeError: i_npt = npoints #this is the vector connecting the two endpoint kpts of a segment kdiff = self.kpt_path[i+1] - self.kpt_path[i] #make a vector of evenly spaced intervals, one longer than needed #because we chop off the last entry. for j in np.linspace(0,1,i_npt+1)[0:-1]: k = self.kpt_path[i] + j*kdiff #shift by small random amount to break symmetry and #prevent time-inversion reduction krand = (1. + np.random.random(3))/1.e4 k += krand kpts.append(k) #now fill in the last segment, and end on the last point try: i_npt = npoints[-1] except TypeError: i_npt = npoints kdiff = self.kpt_path[-1] - self.kpt_path[-2] for j in np.linspace(0,1,i_npt+1)[1:]: k = self.kpt_path[-2] + j*kdiff #shift by small random amount to break symmetry and #prevent time-inversion reduction krand = (1. + np.random.random(3))/1.e4 k += krand kpts.append(k) #these are now the points needed for the Harris calculation. self.kpts = kpts self.dos = DOS(self.calc) self.dos_energies = self.dos.get_energies() self.dos_dos = self.dos.get_dos() #try to avoid rerunning the calculation if it is already done! if os.path.exists(outnc): self.calc = Jacapo(outnc) else: print('calculation of harris required') self.calc.set_nc(outnc) #self.calc.debug=10 #save some time by not calculating stress self.calc.set_stress(False) #this seems to be necessary sometimes self.calc.delete_ncattdimvar(outnc, ncdims=['number_plane_waves']) #this has to come after removing number_of_planewaves self.calc.set_kpts(self.kpts) #freeze charge density self.calc.set_charge_mixing(updatecharge='No') #and, run calculation self.calc.calculate() def plot(self): ''' Make an interactive band-structure plot. clicking on a band will make it thicker and print which band was selected. ''' kpoints = self.calc.get_ibz_kpoints() eigenvalues = self.calc.get_all_eigenvalues() - self.ef #eigenvalues = np.array([self.calc.get_eigenvalues(kpt=i)-self.ef # for i in range(len(kpoints))]) self.handles = [] #used to get band indexes from plot fig = plt.figure() #plot DOS in figure ax = fig.add_subplot(122) ax.plot(self.dos_dos,self.dos_energies) plt.title('self-consistent Total DOS') ax.set_xticks([]) ax.set_yticks([]) ax.set_ylim([-20,20]) ax = fig.add_subplot(121) ax.set_title('Band structure') def onpick(event): 'make picked line bolder, set oldline back to regular thickness' self.lastartist.set_linewidth(1) self.lastartist = thisline = event.artist thisline.set_linewidth(5) plt.draw() #needed to update linewidth print('Band %i selected' % self.handles.index(thisline)) #you could insert code here to plot wavefunction, etc... fig.canvas.mpl_connect('pick_event',onpick) #we use indices for x. the tick labels are not shown and the distance #appears unimportant xdata = list(range(len(eigenvalues))) nkpts, nbands = eigenvalues.shape for i in range(nbands): #eigenvalues has shape(nkpts,nbands) #note the comma after line_handle line_handle, = ax.plot(xdata,eigenvalues[:,i],'.-',ms=1,picker=2) self.handles.append(line_handle) self.lastartist = self.handles[-1] #plot Fermi level ax.plot([0,len(self.kpts)],[0,0],'k--',label='$E_f$') plt.xlabel('|k|') plt.ylabel('$E-E_f$ (eV)') #set xtick locations and labels xtick_locs = np.zeros(len(self.kpt_path)) try: #this means the npoints is a list i_npt = self.npoints[0] for j,npt in enumerate(1,self.npoints): xtick_locs[j] = xtick_locs[j-1] + npt except TypeError: #npoints is a single number for j in range(1,len(self.labels)): xtick_locs[j] = xtick_locs[j-1] + self.npoints #the last location is off by one, so we fix it. xtick_locs[-1] -= 1 ax.set_xlim([xtick_locs[0],xtick_locs[-1]]) ax.set_xticks(xtick_locs) ax.set_xticklabels(self.labels) #this seems reasonable to avoid very deep energy states and high energy states ax.set_ylim([-20,20]) plt.show() return fig ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/bee.py000066400000000000000000000025371316323560300265640ustar00rootroot00000000000000''' adapted from ASE/Utilities/BEE.py ''' from math import sqrt import numpy as num import numpy.random as ra """Bayesian Error Estimation For details, see: "Bayesian Error Estimation in Density Functional Theory", J. J. Mortensen, K. Kaasbjerg, S. L. Frederiksen, J. K. Norskov, J. P. Sethna, K. W. Jacobsen, Phys. Rev. Lett. 95, 216401 (2005).""" # T # cost(c) = cost0 + 0.5 * (c - c0) H (c - c0) # # Cost function minimum value: cost0 = 3.4660625596 # Best fit parameters: c0 = num.array([1.000787451, 0.1926284063, 1.896191546]) # Hessian: # H = num.array([[ 1.770035168e+03, -3.732470432e+02, -2.105836167e+02], # [-3.732470432e+02, 1.188857209e+02, 6.054102443e+01], # [-2.105836167e+02, 6.054102443e+01, 3.211200293e+01]]) # # 0.5 * np * T = cost0 (np=3: number of parameters) T = cost0 * 2 / 3 def MakeEnsemble(N=1000, seed=117): ra.seed(seed) M = num.array([(0.066, -0.812, 1.996), (0.055, 0.206, 0.082), (-0.034, 0.007, 0.004)]) alpha = ra.normal(0.0, 1.0, (N, 3)) return c0 + num.dot(alpha, M) c = MakeEnsemble() def GetEnsembleEnergies(atoms, c=c): if hasattr(atoms, 'get_calculator'): coefs = atoms.get_calculator().get_ensemble_coefficients() else: coefs = atoms return coefs[0] + num.dot(c, coefs[1:]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/findsym.py000077500000000000000000000060441316323560300275020ustar00rootroot00000000000000from __future__ import print_function #!/usr/bin/env python ''' isotropy http://stokes.byu.edu/isolinux.html http://stokes.byu.edu/iso.tar.gz You will need to create a directory to unzip the above tarfile in, cd mkdir iso cd iso wget http://stokes.byu.edu/iso.tar.gz tar xvzf iso.tar.gz #put this in your .cshrc setenv ISODATA $HOME/iso/ set path=($HOME/iso $path) ''' import math,os,re,string from Scientific.Geometry import Vector class FINDSYM: def __init__(self,atoms,outfile=None): unitcell = atoms.get_cell() A = Vector(unitcell[0]) B = Vector(unitcell[1]) C = Vector(unitcell[2]) # lengths of the vectors a = A.length()#*angstroms2bohr b = B.length()#*angstroms2bohr c = C.length()#*angstroms2bohr # angles between the vectors rad2deg = 360./(2.*math.pi) alpha = B.angle(C)*rad2deg beta = A.angle(C)*rad2deg gamma = A.angle(B)*rad2deg scaledpositions = atoms.get_scaled_positions() chemicalsymbols = [atom.get_symbol() for atom in atoms] input = '' input += 'title \n' input += '0 tolerance\n' input += '2 lattice parameters in lengths and angles\n' input += '%1.3f %1.3f %1.3f %1.3f %1.3f %1.3f\n' % (a,b,c, alpha,beta,gamma) input += '1 3 basis vectors for unit cell\n' input += '1.00 0.00 0.00\n' input += '0.00 1.00 0.00\n' input += '0.00 0.00 1.00\n' input += '%i number of atoms\n' % len(atoms) types = '' for atom in atoms: types += str(atom.get_atomic_number()) + ' ' input += types + '\n' for i,atom in enumerate(atoms): input += '%1.3f %1.3f %1.3f\n' % tuple(scaledpositions[i]) pin,pout = os.popen2('findsym') pin.writelines(input) pin.close() self.output = pout.readlines() pout.close() if outfile: f = open(outfile,'w') f.writelines(self.output) f.close() if os.path.exists('findsym.log'): os.remove('findsym.log') def __str__(self): return string.join(self.output) def get_space_group(self): regexp = re.compile('^Space Group') for line in self.output: if regexp.search(line): return line if __name__ == '__main__': from ase.calculators.jacapo import * from optparse import OptionParser parser = OptionParser(usage='findsym.py ncfile', version='0.1') parser.add_option('-f', nargs=0, help = 'print full output') parser.add_option('-o', nargs=1, help = 'save output in filename') options,args = parser.parse_args() for ncfile in args: sg = FINDSYM(Jacapo.read_atoms(ncfile),outfile=options.o) print(sg.get_space_group()) if options.f is not None: print(sg) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/isotropy.tar.gz000066400000000000000000161617511316323560300305110ustar00rootroot00000000000000‹ÅK¼šPœuzÇßv¹MXâꀢn’åúŽÅ‘L79¢´¥=oÕ%¯kKç¸TÔÍͦE³9ײ7òÊ’2Óu.Ó¡SbRàtµt\éò/. ±$—8I=ÎÁ6I7J,±˜Ð–«}žçûî/s­^Æ×Ïûçùý~Ï¿ßóû½ïòðïÜõÐNå«üç¤wlu7ó|½ùvg¹ÜÿFyùÖolÙªlvnÙR¾õö;Êo§û›7Ó‰âp~¥Zÿvíô?ø”á|ßÿÈNÿ/‘{üAÿÎÿ:4úµþ{ö®ª»UUM_ç(¹Š\=g²”; ä>…C1)¥J±R¤¤¥ƒ&  oX>Ì|Ϧày¿UQî¾ÖÂGðGŠ’üëuJžñÜDˆñAmùpð8 îóqÿ9ýjº~-K†º‘qî¹ïCo¬Ãú¹–9Kò.:Mvñÿ6nËWŽYÕþÍ¿§Ðrv¾Úûm_ÙÎ|‹oú©|ËýìKýÉŸ^ÌS::¨¿?J²ðwž;ò­Ú¥º­…ŒS~˜ðç|6ÑöÝ¥cGD†Æ þ^ðçdó®[÷[Èî6ÛOùoÐ/·$Løú³SéÛ»>zËÌ¢ê±#úe´ÝßH×Ôçõq´ÌY}|󳉖1²Ê¿äm¯ä)ÏÍÚUE¯Õšt¿æ×Z³Þ¨âÏ’Ct“–TH¤-¬Y¦ ±õFK[D ñEÑ_„´Vº80Nç<´Öf_V”AŸG´³t/¦é!-IçC¹&“EïÔæ^Ñy`X–åAÇŠrh-÷Ó"tNíã[yA¹Õù†Hu^ ôÏTÖ¨—pˆ4rQã(ßêÔúa-Äa ŒãÀ `0½"¦Z^嬌NÍí bÀ8 ˜‚^ÓŒ6•fÑõY ÌóÀà Èè½) £ûÒu3‚@hâP~Ê' ü4N†ºÀ4Æè=‚Ñ÷¡ëN  8ôQÀÒ/Í­ýÒÜÖ/Í ûá3À8 (áº%FLSÅu¦Fñ‹°6 (ì€Ѐ>X HzÅaÑ0ÔMcÀ8p˜¦€i`˜‡“oRêÕéÃÚ"<½7*Q °VÀÅ€pP ”Á©Î~± N­€Ç*à<@P x`ž á2«Gµ{‘0d¦ºÉfÀNeÌ,€°óýè_$ æpEŒ¤üú,€°u{¤ú=Ò‡o&úoü@3‚ÆÍ¨4D¥y0*ÍCð]+:€°nR¹y‚1¬5I Ž7¡0À0 ̳ÀY ÌóÀ‚ÑÌœØ#qœ‚™Ó°a˜ÎI`Îð4°,Qh—> Û¥ÏâvéÓÞŽd4 (œ@9PTí^•>µWÅŸ¥¯JŸe¯¢PT•€ p£¹çUQ© Í«ñÌ Ôµ@Pø€F Éa·Äȵ[bäÞ-1òì·VÕ€¨j: ð@à7z?½ðg üY ¿Ôõ€hš?Ð Œ+(Ø-U-åC¯@Øt]ÀAãœÜ 'wÁÉá¬^ ô1   ` Ð=K=Ë=Ëxå@P ¸7઀j`zÎ@ÏYèyã%9`X%@y 5ðBÏèY =ë0^=à&À4 L îSˆû4â>ƒøÍg$0Ì À"°X^“>­¯IŸ¶×¤ÏBØP Ø ¥@àÊe¯ôiÚ+}ZöJŸÖ½¨@!P Ø ¥@€?ÇàÏqøó„á`ʈ&0Ìg$0g\=/}Î=/› ùçe%_x^ž-K€ÒŠM`\p®óÀuUpAµ‘@ P Ôõ€haæÌTêÅLS=†¬€ (Š;à4À‰p”#G%ÜêÜ€¨ª/PÔØ„í!ØÞ Â@ö@p謭b»0D– ïÊZÅÅp¸pP ”N ¨*xnÀTÕFgõ¢BY½”p'Ü_7V•€ p  ¨¼@ P Ô­]™×•0Óh„yS‰j‘.8 躀ƒ@/ú€†PúˆXSöˆd»ó±´üØT.À x€é.”›.É.‰ÿYtæ€y`X–e?Š$`ÙÒ°_`Û/}âY1`€”e€(*€JÀ¸1Ua j<ó5@-PÔ> hü@3}2ÐXŸ 4Þ'è“gÀ0 ̳ÀY ÌóÀ°aQˆA¯Ã°( %:€°èºÏ£’ UJ2T?*Éà} Ôu@=଺4·éR2 ui^¬c–@J2À ”@%àÜ€¨ªƒ°½ÑŒÂö>âÀ°` NÀ0 Ìá¿á ñqx¨øôà§óÁ›0—›éü#%.W£·…åZ?yéÇRú‡¹iªOxt“Ö>¬ø" ™I_~Í’üÅ›yJ; ÒqõÃö;?#Iá§tX“¿ûòqDº>~¯1hÉ©ä}ô|»ÿ%~3Tô‹*×ôÔE®µ´†µµä¼!þZÒN•šÛj;>Kn›3‘ºdJ–v0:µ¡­Èq÷µ}²å’ªoùD-9å7_°“¶ñ †›´r`°Ð¦*#ò‹QT[¢ó”£ôyK?:ú‹WN—$ùgØ0^‹§·ëɆD®:ªJgËÄŠåyÃÅ\êÎÎçôªs´áâ}\MŽxÈßÔO¢Á~‰6¬á/ßtλ›:~1!]Ú7)·ßhÍQÒÓy¾pÉ£„É7jWr:ìt8èàwÊR:Êèpr­É`Ýp%Ÿ¡Å‰,wÒhq±<¤UðÈb9M_¶üÈèo¼òNÉ4=ó„ñžÎøÉèÓlùaÒ|KŸ]Üxe¢äuçåçãôgPFvzxˆÿDBŸ^Þkˆ4ül 5­—¦ÔaÃÏ4}B’&SBŒ£Ûõ ÇrÕã$Äïÿ0ŸNòG~>JùE;#»F=> >8¹}™ø>C| ÃɈkêñ‘kVI•ƒ"ÒpQ£¦½Éç™FB{â!ãÿ%Gäï|'"à)ÃÆÓdÈ1vâ§iÄ»TD›~]IgÁìë©/'·KðvåTÉB]¶ð:rd‚ý!òàè]zyÀiºÄFðÖp_IɃ¸øàèöeâ–Ä×ðˈk$¾nñBC\㹓éNJÉEN—ƒ¨‘½1L-þÍ®CE®[6HX¹ä·¢2µ~AezßOƒÛ0¸Ý'[sùJKçÔè6õØ¡ó«ø œ³ê-õ2ÿN§©…ÙáãÔ®ûÍ 1¾Ø'kcµµá{YãǺem\îί^ŒËÜZaþ ö縚 é‰n Cœ]TvëšURUúºÅxÆjư“Òʆ´šFZIɘÍ*ËêÅCæTa~ÆsÂÎKˆñ FÁ¥…b-ÜK‡DÙÎZ2l-ÿ)B²…ÿ‚uF²åÌm†·¦*S_*ÎoYz2Þ²õd{ ;‰ÕÐÑÃ+©zŠßü{¤\óÚž§'Õ‰•»‰2å‡Í)ç²K˜ÃN/7¬¢käudLeOfX{ذÒß&ønšzdƒÄX­´ýÉSTÚl(m.Ÿ”6©ž¬ÒF†_¥¸ÕpfÃj³ œ›ónë×ï§ñ¹ºUú¤À0V«n?}ÒL»º¿½Á"/¸•ZêK³|†Ì1©9òÑîžÌdŒ»'“1U=Jº ª—GίRkÙôÓêE^O¹¥èIK·øižFVÙ.¾Œ V+„¿•5¾/kü¦«ÌŒêAÆžÜqñ‡ô’zI¾"iÃ=¨r"Ó:²ò¶QÔöy[ß#yËX-o››2y[ïSÓyÛèS¯6Ë1Ìò`Vx}Osü»4>Oô:¾Œ ø'Œ•éµø¹Í·µJzE—ެñWM®.~%Ï9,‰õP‘X!$V(+±²Gþ_æ®?*®êÎσŠl‰ÁS"C3g7žD˶¤&nºK]Ö’dL±I÷D—ZÔl†ué–uSFl8§™3 9[6ËîA5Õex¤.Iˆ‚‘$„‚b$ÆlQcv0‰bÌ•š½ßïç¾wïÞ$ÔÆ³ýƒó˜÷î{ßûýy¿¿Þ}5ÈḬ́:òVaŽìêz6QÌe³…ˆœQ|€L&¨ ¢Ò”@TÜä^ ò€Ùãy ÇŸ“Ž^pŸÇÞ^=NÖ¤mì ž"ÿ昔êBJ”±xÜt¯”êLµ'ÁTï|@Mõ¤6Õ3úTY8â¦êŽÀF‘bL¤»ß”DŠr4ä_ÿ­‚œQ³# òv†çÞ.äEtQr„€¾0.ÌÇ £È:Âú@'}(`w¤B "dÇëx Ë"¦^å¨ O¯`—Oê[l¿Aâša+K'+;U%¬l*¬ìZÂPªAMÁî•>Üö0´:ÂÓ«‰¸Ì0´XQ¦iK-]ï§‹Mþ:z>Kƒ°Ë4­Å?8"x2,Tf ˆ³F#Žn‹WV)ât°±qº-e^ïg@OË•“ÙÅâ‰ß Ä‘ô4’@O• Œ )ãåʽ…ï'Ñr^¨N–³Û4FP2Þÿ%Cp†4÷G„®g4\§5\¡¤q§W0™†ñzŒ½p‘ã28ÙÈz¨PúŠóç™>ž˜¤O ô‰% Ï‹•šÕe‹¦(x¿ NE[¡(Û4m`mùELªh}„U”N*ºLƒÜ¡AîÖUôjÎ ò t¥‹¾³8F¨è+Š3#šŠŽë*zµƒW…ŠžØ1VÑ×c–ŠAE‡¨èª ¥¢g4ÖUÔmª¨æ´¥·ÁˆµñŒ(/qHøm¶!Ù|M\"_ßç1í¸Úåš‘ýñËÁ1xAt¹Lüžæã;1iÙc`^Lcž®Ë”+æù+”Z-ªPj:jÏ6,«`*¤9)Âe!Å)l+¦1ð†åœ,¨ ä©ÓÒ9ñU°ÒÁ‰ÓGîWœÎoSœ^Ò¦¥§ÆíÞtq£hs!· üÂ÷x¡ñùu=¯µmìI´‘Tì ½Âù£Em,tp’Š%÷+©XS¡ü—Ò ås®O³ÙUìbUWÈÔ¡ð'QG^o¨°\èZú·Û¿–H6çQžU –hÔ¹ü¯ëË4 –k„{EAÉ^ðtpÈXÛ¦òºë˜4çNKÇ®´‹ttprìr×+ùªoSÆ¡¡MËç¶çÔZÚx¢­t œš±Ï8MŽKüFx»žmÊ·ÙÌ3<ú‘œafX§ÍP—®‡ÿÆãÚŵDáwëRÀº† `÷¥¨eWSØ– d`)kc63c.|$SÆÔ%`ŒKßá–Ñ51&ŒéÕÓ÷~²#vbÙ†µØö0æm³1£ vAl»ˆí£ë¸ð!ÅOcº,ŧ¤£ðù¿›Ðá€vá™qÃY¶ÞDõm@|[þ‚€ 0‘ÕŸ ™Ž.ßÅ"óáªÛB1@Ý+`Ä g¤\ìí;žLKÖ–a1v ÊE.Ì4?§ï*<¹Úµpž’ñ—bž!2úŒiôÑgyÏ}‹Tñ“>™í.‹>}ÉŽ‰½_{ˆ¦×í÷·+ÕIo'Óü˳fÈÝŽ»Ýø±{=VÝ~HÌ1ͦO%3ú‚=û!Tò:V¡ª Qðg„ùóþoö³d ‚?ƒ ó~|W´b¡,´»4­HƒÓ§Eíð2Ó(?Ð΂™O¨Îñ~*µbA;/ítpþÁ=*-iW±¶]× 7ÒqZQÞ­ Ö“*_CÐ<÷|1×ԊЯkEP€7ûcáϳ£Vìˆsj%zÅ+™ÚgØ<ïËMå´ñÉ NÓÁ Þ'ežðj4Z×Z´&F{Ø»µ3ºARš|€-@vá–‘òÕ\“ÑÕ uuZoÀw¤ÖYbö&­s*Uä<•ÖsÜÁ“ZT Ï5MŒÏæÙ•„ù³¾ÌJ.¿ÒÁ)Ãwñ‡b}HÃú°¤R™¡ÂJÝ ™°û%ôÌQ!…´èü2‚æyz¡ßgw[PÉy:8ÿ:Ÿ ð¥øuqà“‘ß3ƒ5ôÔ”¶6`e/ãÉ‚\Ó®­d=£ƒ“¼x·Z™ë4òoÖÈß÷~²cz¹¹¥ßðõLþ[ä¯ùk¿înµ½ÍtEa ü¿ÂÜÂ1ÿÉUñ˜4É¡´Ö4KT(+gT¾ù­\¬ve e™FJÝOß…&¹Z¿;»‹Úd_涬^n 4ß©˜îÒ;]ÏóI7©8¤?ÏÅIÍw­"´“qjöÌ{СÙ3“¼Aê LØìùâOe³gÇW5{¾úŽÍž·ªfÏ®¯¸â›=Y–¨Ù3Ólöô=2»fÏì‡õfÏݹz³g_®ÞìÙŸ«7{îÉÕš=rs@¢Ö~QuDnsq›' ×ó«Í“ÎQ›ç6)ï¸LÉ—½ÍsMÈИ·6dhmž¥!È2q·0U©Lü²µy2SâÚ<ËñœÝ˜z•øeº‹Õxf HÜji€Dªêq،ÚqhÅ!‚C=8ôâÁ„IÚmëT›çkuz›§gòÅÿO—gá/ÑåyëR—§”ýuÑß~×ãŠF‡“]'RÐ_ü9÷zR—Ùë©z¼F—÷´}‰×{-¨Ã˳ûƒk¸NNwx5 Ã+À™Š®—éÈ4òБý>¦ÔFm V¡}ÿŠ]ÿ1su]‚B»ÞvãºÅ_²õn8t€ÍìûþlŠí;Ù¦¤Ø tÀ5‹í{Œ#´L9»C\gŸwìXVªq@œu®³Û»ß¦Ö¨êa·VïîµÕ»ÓÜ\l5ö‘ÿ¤Û=]dzLwŒ‹í(¶;¸c5ðBΰxq¹¡ÿq*G!šÌ^dJ:×v3b^ð2 ¿,A–ýÂjE÷"­l°•Í{Š?œésÕåGªÚRóU”æ:—eúÀ\²mBÉÖÁ®]=›&ƒíéD)¢Ÿ1;À‚û²ƒHôÇ… Üb Â…lòµZ·xÖ]‹|ÕØ4–€M¿'"óTDæñ¥RËó! µ¨­h1Úqtγo^ ¥ì©OÐr×÷´"ˆ–jŸŽhéC7gޛ鎸~…›Ÿ/èpLë @á÷‘•s‘zïA_@O‚¾€²Åù“Ï)ΟÑó%ŸÉym¹p£ÈB…_s¹à¯çâýs!æ\øí@á×!q|ü»—+ü¾qûvZ ì:¦—}»Qöõä–Ï5M —};PöuЭi@ 4 Ët d…ì@Z (ú^ür¶ 4@ó^¥ìÏ:ÍîV•ëA±Õ»¸•»/Ð4RÕFãÅz¡Ú²õ™[/Ðá”f|x•Ф:4{Ò­uö ÿ À¢ ,Wsç|'éºTa k®ç6¡ž»f¦MIY¥HMœIꪠZmàÉÄ5vÕbK:àù'Sä:ÿîr£x÷€9ôJ¤ÃX@ã²MA•V `δ)ÌeÜOˆ!KàÎéô¼ñv¥2]ÝJez4')§½öÈtNÌÙôœlœvŠßÇdÏ3%—ǹ·ZŒ¢~é#Æ%&-@àîlÙNŽNm4Š5»âcÙ“r(7“w»T397,þqòuË;àEuؽ(ÕÿHœÊĶ1^"=°«Ñøu€š1ÔÂ)¡išWÎjzÞ̸Îêj¤p«µn6ÈJ17æÑ¬Í£µ]NAx¬;Ò¥nõá`0»hØiäºå-ýÁ×ò…£1á«Ù¨Mzù#"²vµ¸·pæûÙ¯±^±hjçE‰¦^è3ÿp…ʼ»‚²Û¿<(zÜåÂÂ߀÷ìäž[žá“M84ãÐ"_-¤_éþè?­õèÑéGÜ««ñ¯®¾œŒˆC ÇÄÀì7‡d™ÅHù縋嫫 þñ\Z–h{5àöñç‹Ä_¾@¿@ü©×Å·— (Šþè6 z¢Ë²Û‹E>F‘Z>~ÑAˆD'Í+T\‚_'ÊM&èTcÆšbŽ()\kÌàÇîa$8¼¡ÛJTx9–Šu˜¢Ì·Ö¥PSš0УJÄ܉¯á0†ÙØÑ[œÃÙ¬0fFÄ5‰#®âª?Œ‰« ’,ŒIÍ£=ßö8ïdòeƒâ;ï"wDiãCˆÈ{†â×ë¡xs± Å3¶àÇ@<áãGxD#÷%ŠË‹Ìh\½ð\Š}`Ò™B%²ÂÝ _ T© T© ”E¿¸:€« Ä•Eâ/ß|1ZÅæa £’~™Iš"í!–›ðQÒ…7å£Åw¡Ü o¿´}²„_ìã¤oå×—,·ö£×üÖãÿ¾o‡ˆ14.=…qƒ·s4ï5ïcɆK¾ÆÇ›ÅCN×ÒT’´²¥D·S C—Ý´¿DX¤ÙҘЈ„–; r}xÔÛ96ÑI°PÿBœåí÷ô½—÷vö}b,mgˆ¹¹Ó˜(üt¿5šõ-4ðyû¼ÿÝÅ‹OP®ŒŸ?R¨ÐZësÉí{è?ýãói¬±å„t1„àãÈ‹Ñ/·ðƒòRå>³Gnº`þ…aË\Ù}0Þ.6÷Á+–û`Ì[ýÏüßgÜÃ|›·(:çÏ<Ü]ësÜs(mòU½-ðO´¹Žf¶åæ:ØLGLξ〆¾ÿÉ<ßr»ìå3°ÓÐasÛŽjÿ“«q¶(zó·»jÖ§É' ×EÃÆ¤u¥÷þ~hxM4ª—15Ä$§}Kú]WVúlü‰XˆµÎDì³IŸ×”¾ùSFlóÇö>¹-C«1§{–»Z˜®ýv€4•j„IbHq£Ëeìo\1MkHŸ¥ñû}9§W%‹ð6•À$z—PØŠt”–CŸj}ØpCSQ#Û oKÿ¦w0ìF¸¥N?ú %H¼ÿÞ·éãªýŠ¥§®0Km²ú÷’}ដ0·b1f²üwãÝÓœNÌX?/ÿ&ƒe®´Àa%¾;çÃÓâ|3Þ øÑmK™@untsÊ/Û©å}9ëvß×Si£úÚÏQkÏ[Â}Ìî­—¥Ž¸B³ Ik\Ì$âÂYq¡THÁ%7#J™:¡ôa§×¤TÀ_¼“)Uêˆk(/¿= ãË¢K˜tõζÚ3yݶo63P¿Â¤TõŠ?xJýùÍL©ÍdWÌú\L1Þ®L²úSª”Iƶ9œF"ÌNÿQˆ(Ek€ªÿKŒ_Í¥ˆðŒfÝÂÓmðñí¼eáä ‡Cƒ2ƒù å6Ú©Šµq£P¾NýReD¤gŒ ÿKصA.^º¤]³½œ”ìrcG¡§—ZÉåo—Ž[ ¢8:ˆÓƒí¦¯ÄÐ_ûÇŸš¦O¶!z§zò è~3¸ÙBW’BgÑ®0ºgà¿9br´>ý¼ˆézšŸ¾&õð¾·&=ñ$Ã{(Å»UPºqÓ·÷‰=›Þ3èþnÜ6ߘ²îïR÷ójòPêVïÏwoÝtÜΛÒíGŸ§±}V) M»ï=}¶ …a¾ ½¼R†÷«ºáe–“á]XÀœj"Ãë}¶oTg^ˆ¸¢žÿæ™\ýéÅ‹æX¼™%ö»‚úó2Ó§WÒ'}¥iX¦-òOÒ Q{7k—8°œê1¼ƒËa¤Š×JrDoøS ÙÇcá»pÔ¥fŸ^y5û¯¯[?5{@=è„ã…OÛm¿-ªÖl¿Œ¬Q’d²Ûþn°H„´Û¯WîSã⪕rÿˌҕœcYи˜YTã/4Û•”ˆ¦kbg$[á°ô w2ŸJu>=ú'Œl‹Ï¾ÙkèÄ Bã’Y,fyû™³EZ 3“¥‹E{Øä‡Fÿ#× ö\óþì!HÎä\w¾õ0Û¥¶"ºfdf[D¿„ƒ;²ÎP.¨œYnHT*˜Rª;¸?ù†–÷¢L`9”¨Õç²Ò_”Äëµ¥ÀŒH>Æ`L½ÌàS9°€Úz °Á•fþ®w¥ÌßeL 9¢ð–‹à€ãcÖÔ)Xåâl‘8«y¦i_c̶%r¯>t}Žî•?`EÁÓ N8¹WŒºå¦_.°4ñŸéJ)"t"xnb"DX\%Õ7ý/¥8: îvÓåa©&}ð! – %µçÜë¡ñùõ8Sïð%sYàÏAð-{Ï ÅÔ-ôª_~uÛOsvÉi´Ãç+Z9£¢B(vn$´w>GkÈrn¶_0³yûñÞ~ü¥$¨›¾¹TÚ•ü¥ŒÕ·&oÁÖä3)±'x$E\¥Ë|Þ]\|þˆÕ¨Ùè6¢ Ðg­àÖâÛVBöé#YÔ{âZq"äöcIR-ºÃãš|!˜xHÏZÚÿˆgòßÒØ¢ò~ÛžqY¯=зEä8N‚roÛáù 8#?:Ò„Ž4ñGGÐ,Ò‚/ô™Í`Sêú‰`á|Ø$ò á-êMmà}ê[°O}ö©çF½Á®>õÚ¹Þ4n޷ĤAUaÛ3q÷/J(•j¡³|Fª´ÃÇOëò±Ù~lJÜxÂØb¦?»aõy*Ÿ•ßlâK”L¤$,K} ¤zœºöx;˦‡…sáæñ—Nbty¯·s*4nÄÄ£I¬Ã9†ù$&¾$.·%ô{;GÕ“ˆÚâIümõ¤~S7Çàü¬6? ‰Ÿ¹FõÙǿɉÑK’§äÙ-ÉsÚÿݤÏÝ ú êôÐèÙß(¥}8Ý eœARÍËÒ'é3ÐgÀ¢DbТÏàìé3$†¢j*.À>{|‘Z«Æ„·sé¶îÉjN¯›Nó¸UsT~Û¢ŸIß Lm ô=¦ÓwB£/Y,ZžÒé+fM§äôðÂn¶]aùá„_õýORè‚·sØ8 ÄÅ€ ¨Æ—Žº¯»•6R[žTµïÝ$A}LtVLÁm›íÆg+Ž ÊëÓ¶p;f‘ý˜${.òõjúÞæ›)@yä|üõOÁ¢]†+™_¨ží€ëK6:›ñ5¡œçucëÃHºAX 8`äÒ¼r;¿[UµÞ°,"«w=P»E“ß!Á—pŠp˜±¨Ù,¢¼Å¾¨UãK(Í8Œî=8苵¶„¦Î††Å¢6¦-jòËOb³µEÍ4×,.MXÔœ ÎXÔšôEM zhÿ|,-ÔA–BÉΧzVÁ ë¹Û‚¨iúŒ]+.c’£Ð†“ÒæÄ\zA*©‰B#ΘžILÓ¶-°ÖÆÙFŒ[6B³6Ò›)ºÏÙ;ÛõË®‡¤ÌÇ,™—³?cÉü)óKaj¾ÐØýG„è%¨sÔ™–Ô™´QÇ•ÇÏ?ê¸ó$uèô¥©s êH¶êR*¨ãlÕG,«nRÇœœ5{š6¨CÿiÔ¹YRó.aˆ3ó”!Nσ!¾Ófˆ³òzŠxXvžNÔL‹Òà÷™DÍшƒõcÿE7ÀôXÓ³…”ŸÝ±ÛW¶¦}e[ÞÄÊ©Û×r˜øêöUöî,l²ðT5=ìíÜê7ö‡aôŽædZùõLŸoŒ_=#†Â)ýG…Ó¹fá4ËbQh‘m±([²èW0Äòù=¶"Ç ð-º·Ñž/¿b4Ÿu|†ÏZìáúY¨o‚ûëÏ‹Kô¯È{íaÏäOy_–’Ñä_F.Ê“µsþMD¢3Ô"ƒG|N5¦Æ9u¹szFM@&IšÐ€°FEá‰ÊL(/™Ñ·£íâ†údÁéùqu¦wæsœ–ŸÇ3b0ü‡‚<<_œ¬¿ûÝRÅÙó.tˆUù3wdÁSΊ†rÜD¨Hù’<6ôËÀg&³ÜP|‰NæB¹d®Ço×"KºøbmÈò¾Øà>ÖÉoº¸¶^“ºt´&éÄ\qÏ2Kîö‰›¤ÃOൾˆ5vcÒ‰'é³5¶K£@7n:oÔ¦N~L™¯¯djÅ–¿ÍXi‰€™–HÚ*?þR0¯‚üƒLÎÚ »=œ -¢úçõÌÅâ<•L±'Rzm½DÝN½D-HŸÌK½ýúÚ2w¾Ìsá7µ@Ô{ι÷ÝûÞîJ+!pÜ¿öíÛ÷ÞÞ{ßù>¿s.¡gD%q‰:Ü€1èj|^3÷xOƈVDüÅ1îÿøz^Õì¯Éöy(s# 6b|(`[àJĶЙ¬MÍ´=õ.;9ñ!€˜WSOÿMúù5´MS1_µÚÍÎA™WÑÍ¿šºù×ðnþ¸*Õ\µÑ`Ã8Jb¬R…ÿ²„«W)àk,KÖ&¾ö~9^&´yŽÍ%Ĉ[/øQº|€ŸQ„6r:Ú›ÒpBµª4©#iR/„vÚõ†Ð.§(H?¬ Úeç»lÄpÍ2¹FÚ©"¸?B £pA7™<`Ó rîä¥ðR¹¬óØbý6œ\ )KX‰…½ 3c­ œÔüvÓh#W@ÕܰœvåbJ,[,B‰ó×]e-Ó?ù:j€ ÷·+\HôGÊ«öNžšÿ0ž‰/(©ÉÙJ(-itFÈè´º¡ü%á=6l½¡{ê‘ÃW§Çš¯Ž­måĈ6P4З­•nÈûÄ:”þrÏ8ÜnNUºéª:~•¸xŽÝ o¯ÂÝãà8¸?—È=Έ½êfkAúuÚhZ£3vΖ<›£(´ˆU¡mGúˆZš)á–¹v±Ph-‹ãZÑøY›‰ÚÞ¯RIQh“B‹˜Z4‘Bë&…ö½Ã0ºnRhßë£/¨ÐºI¡•øÙ Ð;P¡5&Sh»* mŸí`ð)´ƒì–26a1WU¡àN“Bë¢çš!Ÿ{$ä³7ȧ¡Ð~}aŸ€•žûW»‰Ú;8t'<³sV:c‹m08d­ ã&’Zùê¬% f6{‰ÄÌfþt„!«Ú> €Eòþ¤…­ñÚFÚ3 d™ZÎ*̓~i챘FÊ–ÔH¶ÒXx_¿‡(—*\«ý•[¥y ˜Ë¶ãaZïþ&ýÇL~©jA Ôg÷¼(K­Ò‚g˜ŸiÛ œrg¹Èy<’ÄÓ†‹Æ•Á< ±¹Â³ØY›ŽÙ[=.þo­m͆z=7ó·Gîp-<öœ3°XÁG2 ÷/ ó]©‘AµJ• ~92¨ùÎ$È ¥ŠJ ­’@œ'&Ž8Ÿ˜ æŽCsn'øÁŒ_Ú•ø‹¿N¶ÈK§s‘7¨‹Ü®.r÷dùrñÕ"ß9Î"ïÌ! ,òƵv²ŸqŒýqöv ÙÛmÜÞÔÐzçÑZ²¶[ÈÚ竜þUšö^3~´Ò•¦à8TL6ƒaT$ ­ä@ªÁ¸`­áŸòц #ÌÃ*‹D4‹ˆ riùšÑîmÈCM1{þ›ÌLþ• ßžO’ÉN–U„ViƒEáwmÀoÚeçþq2³«‰†DfƒêCᙇÛpbÿõÂÐeƒLõ©¦µÁ~DàY’j°Âó(ÀÜJ!döcÖ¦s¶³Rä5ÐÊhš2c¾Ò_f€rÝŠ©úº‡(NØ#~¤W¡i«‰T^Ì!O¥z÷m x9¼úÝF)~²Ò7!­ ÒZ팽|ml zFàlê±sÿã”m­ŒM>Õ]~rØãš&awgÓ@,)PtðÇ¢r¬ß;µ‘AÍpñà*BŒmu⟧ Te7´Ó0o£ù†ïÝ?a¸=òîžÀY¯{œ??z¨!|$dˆ°Í^¨u>j; ; ù TÞI†tÚ©6£ KD‡: Vè ‹œ±?g¼ ®Ãµåø2çQ& Qv¥çyqÊ20|¿µ„ñ·¬Wg®Ã–*ÿƒßœÇà[³ÿUü–ùÞ:l°ò°‚÷ø:Üãq3‰BÚ£±™yœ.ÜŒ·y? ?ØBð!ýÁVúƒ!úƒmô'è¾nºï$Ý·8Ÿœ 3g‹Ùª¸B*N ¶Qå*ÃÐ\×*^¼ ¸$;™}R eþYzù‡&ã½ÈvÍÄvð7ÁÌbˆlal†äc¯«?%Á†a dCò*›òH-íºô§uh±MNM„›.9„Ç"C«&­9…Ê>‘„¢ÐêðZ} ­zÓÖñM)KƯé›ÈcñÌD‘°SñX&]Î×E˂¥lLTùZG_P¹w‘r/†Ý@K¾^%|¬„Kö½ŠÇ²×ö¶ì9Ö`.ç›LNêýD!8QÎ7žÇ›KµÔú[-vð‹¢ŠÇ&zITá7PPðÒ3«zJäÅ4$ Órã*xìïÞñˆ€ÕÛ@h¦I5õœ°ƒÚâȰ‘¤zd›‡¨%1®1‘ip[@p?qãJô‘é5ôH¯Ð#W™¡M¥D0–Ô·>Ø™¢Ÿ„Óá|JR½«™Ð$©ûI°¿Ÿ¯&©Tû‡®ÄÓªvVƒZ†ªRÄ„)¨5iÛGük˜FÚŒC$ÿ>·}‹ú:CÑŒk)tÕTqºéc']¹‡¾õÒG}ôÓÇaú8JïÓÇ} Ó‡^€àa6Ty‚qÛŒT m ì‹Ð7öñ¸D W<ŽYø8×ÖÐÍí Ì¨Œ¯‹îêòG^Â6¼„,±æ%<ÙL7ÔÀ‡õ†Z8ñ×=ÿPñþC ݰ±QSÖ‡|”«‚¥k$òkDbmkÄÕm{A,857v Ò?÷9µãÎ:zmg xf†z¦YM¦¡ñØjæ}×l²ï4A+ ðo>ªÀ§Ùéwã™ì‡ŠÇ-æ¬#Vî,Gt P)>¼ŸJ4 Gùo>÷o<…S‡ÁãâðÁã±uð. ~½iðÙ4xø‘ý›Ç—Ü8ŇBŒnA ÎÌPLTxÇs3pðb rðòøƒzp@Ͻ ñGbP³|ø‘ë3šã7±!F þíäî‡\ÿoñADyƒqhJ«Df­¸*®M|¥yÀˆð¿t 9=æ@üàš åÑÚû}T¥‘ñ$8IËj^ý.1~¿dopð {ÊÔÖæ`¡ÿÍ%¾o­â†‹¨ÉÖGæ¦Óß‚øÍgeÚ©Å!'Z•eh¼Á£…ñÖ_aëŒÞÁ<aêiê©RûTb Ú­0'Ý2:a¬Ša¸Ä0Üú+–N¨çûLè'Bñ± ú‰=^¦£Ý›«ÈéÏ. Gÿç‹vyG)_O~I'É«§fJ ÝEz žè¸|=ëÕ´~`¾máî•ùS›)Žòß\¹[À‹ñAô %õS( "?úßH—]ÐwÛ‚ÇÈ8`·T4—ÑÊ-Za°3TŸè ¦çdº6éB™ Ídv©tÛ +-W“F½"iÔz¬„-˜þ³¿·›Ý‘$Ä3ä%d†–Ô˜aÜ‘`†e£s€è£œJ‰Êf(S˜¡,EfHªj*¹–Ì ¶Šc†<Á ¹þÈ ã·@™3lº€ï¶Ba†.3t™˜!’ˆ¢Ä ÷"3D‰¢Ä E~vIf“0Ãæ¯)Ì»i[Õ3f Vw¼|êÌ0ÑBM‰V V Ìð·O[˜az‰¡¥J׫Dp½P×ãÈ„„‘­ÆVd6]ýÅó8Ç*…( ’¸+®’¸+®’8b­$Ôá6fsÔ˜ÍB9›9›Ô'"kfÕ‰î¯ÔÉ| ‡Óc'4è¡u£*‡K.sñÃ"„‚ïÑXˆÜÍë-N<ícgqÚ+|”¥™ƒµ-LwìS |7ÄWܰAĘÿZcþ åü[Äü'jU5NClÁ©ÓüÏàü«iþ±Ë=šÀ>†œÂÂþÊ Qú^æŸxhÒUr'b/špc~¸*ëÕlfR–>¤³A:»ð³'Ãx+¹?p”¿sånÀÑó¤¿óŸ3LþŽIjÈU wÇ/y@›‰I»©(X8¸¸€è‚†áVi ¤37®‹V EXZQx^ªgŸWT(T8Œã*´†Th­¢BkZ›¢ '§nQJ©iQ&´'“c'MX…©©Ðúß#µÕ)ÒrÊÈJT¡Y©‚){-`Ê*te¶¢B÷™ƒL9:ÑBMI…~÷w¸`õ Bï®·Kô #œçœ±Ùvd:%r61­\¹Ù1ž¹©b[’ãZ ^>í0ãZNs^yŠx¥Aá•…WRä•éMß'27“gíM¾çÔx¥ô¾úg^™rNy…çôÕ4~¯%Ÿ€We*¼²×önðñʻ얀¹+oê¼2ÑBM‰W²>Ãk^9_g·6cœ^ryX˜hŸ?,L´¿‘$&ÚDÀŽqHãNÕàä½l*õ¹1œå‹Á38£qgwœÁÉéÃxD̦â1›Ur6r6©ODZ^êDd“–'ÒœØàtÆ:l©hþø §É_åÛï¢×OAÎÎGDsã#¢|_“LpÙ×å/$~}?ýgÝâÃ1Ñ‹0ü…0½¾€ôÚèõUJ: !q!Ó½LÌF[&f³JΦCÎ&ÙDÆ3ïT Gãõ½ô N¤ æ±Ý¯iX¿(LÇõd:ÞOø·@†4K¼Òt\‘A¥™^Ôb “éˆ÷ÒYf:Έ Z†`:‘j:ƒxýÉ ´/…ù8?]x¥11Ǧ]WÓn(u‚!q%ôyúŒûgi®I@Ÿ'îÓmU²ƒo%9¯‚÷Ù90Œos-ÈÎ×~2q«ÄAÜvß8†Ä$ãV¿þÔ·zþSnHl Cb#7$|Œ<6rC*x7rCb¦Ÿ7Û·Þ¤ð•û¦„¯ÎœÄWÜñ%‡¯.9¾*á«'pÁ¢À¿©±ƒ,R¹>“nš^„Dý2¨^Æ ¢ë©Q!» Y§Á IŠ[¡™¡æ†ÆF``çÚ™X»biš¥>}zã?}ËDü£{™ˆDeüç|ñŸj…ÈøÇ‡8ñ.ÿèTâý¤Äf¢È‡ü™PbÏÌ”J¬[C%WA ®fRb T gyün%%GªÃÑ󤫹CQ`Î/Uý…íXÝö¾ÇÍÀ¬¨æŽrV‹à¨i$ƒ¹Ì°hÓIƦªå×OX¡ »ǯTþ'U½ä8Ϊf•W­‚•±;1G8îôÅïï°Ó€PÇÍ”Dî± 儜Z;Rw5E÷J•è^Ý+£è^5E÷JÍѽjŠî•Rt¯Šôè^%º‚ú“2%¼—vê¾VÙñª3ðõôœ°Ûöó|µ§ã¿5-ö¤åO«xÙã“ÿ:Ý[‘¿óYg¬„""{|šÀ)3êõáû|\Á÷ < œ™D}¾¶4A±C 7]éÖûoœ Ð[N}ñSN¶çDšAŸ=CvÜ#Çvã|ŸNKP‰ïŒÍMS°¬–Q¸ý;<ÜxÐÃW–-ƒ5õä¾/ƒ­W?N[Ýþ×íáÝŸ²Ã âf{Ûs\‰ÿð[­*iúKa90¿ ö Š3u>£‹op»5‡ν%Ç¡DôçéPzO;”Fü±{4Ú׳Ĩ·ÏÞz§ØÛ¸Œß$ÈßeTÃh´ø­‰¢4‹zfùÎDñà(Ò4µÔ_v95ýÂrÞÔ Ï@Mõù8²ïÊ•±1¶È²MÇñˆÚNÎ=a<Êgõ-±—/ÿ Šý:81)µ¸|q|\^0o•h‘­r¯Çg0‚O¾gñ{û ®"š»Hñ˜ñ8>ø˜ŽÎÂÚ›á-ßoa×»HZÙE_®·p`Äùñ^ø_\0OäŠÒÚ®B`=c„ªÒG²Ð–lEobž¤ò§¢“äÂ<='íìÛfÐ_ˆæO¥Œ(Qz+®„èOZÒ[yG9×Ì"®ÉU¸&WášÜÄ\sóÒ[y7%½@ÈS˜æËHo­»àüФ·ªßÁóÓ”>¬0ÍñæÃ`wÉý/8þ!=ëW°_FpPtBºcЩý­¼1‚7ª}H‘;ôg¿H`ßjzêQF¸q°ì «õò™mðHÓ¾ ö Ø/‰/±UûiXs¾´ÈàÞo·cA0 †Ïù¦…a\#]?o{  .µt±ÖjlsèØ^HòÒ½¥ÛKAzuz)\h6ý¥0›¢þóñj—x‚Logo)WúUÜR™þˆG—'bÄßV¬‘Qf"¸6"«-ż†SùŠ]ÝÎô4ŒºïsâÓÆoA£Î6j¶XÉžC"{YŽ:“Æd¦ÐnHôë¦|A]€GØ3kè¨Êv)xL9°/¡ TÈãT©È²Ôfš@­DNÐÊÉ}¡w…ôÔÍaÊôDâ2=‘¸LOtüM ºŒÙlä³ e>ÝÎ7)hC>»«™ì.¬6$Ù™ljÒwoP$å–Ùt¶ŒU2O¾MVk9ŽÙUnÌ UÊy¹éšìrc^Ùt§ÜN.UÅ Ê,—$™*¼¿¥»¿qâ饑8ñ&ñPÅ“0O¤x¨1I©zUJá€ÿý÷‰%)e’Br°Aˆvfà Ésá"kf]»Q^€ÂŠäñö zsÙ[¾ï2r¿3xìÁà!h ¢–0–ø¥šuèLòÊ”žVäU4Å"Óf7Îð£XÏà9Ûè¨0x´ÂvFn)_†ÕfÒJ´‘0¯63ø™ñH©þûIe—“A”uߨÔ̌Æ%3£Öd¦˜„ELí¸K“&Pæ`çÌþG'!¦È6M4#)¦ªŠ)ÓN*;ßĉZÄT4NLE­bJXèÙtÚSÎM¨nSÞÀc<Ûî-{Œ‹)ï ÄBL ßMBêHhùfoÝ©ÍKVÝÜ­ÌKl T©ë½8¯¢rLÜf¼ˆö(¼3_A4û+(óZ a@½§J¯, ©£X`Áõj3L$ÔžÎò¸•bp¤ÔQú>dÉ>·É#¸$óéÅMKÉÝ,$·àÑý师%åÒ#Âcîáñÿÿ’U{‘ØJË¥Gôe4ëίHɃoà‚•±Óï+Hp Ô°=£¡ÿêiøIHμšó†…3÷<&™›é¹½íFzîÌ4À³½ ÉôÜw÷PÍE2‹êCmzgmÞÔy¹˜µgùMuùn*œ Ýy‹¦Éþ~˜ÿû«ÊÍ=¶‚‡aãµ¼¯‚ŸyŸº6€DÑŠr^ï‹ß¡cœQºßÚ;³ó8J¢|ÇШÓÈw8cÏ;PIy,ým£Ò_µƒ$–þr"ÎÍÿ æ2z‡­f3wLTTkîþûß`š£uîûdîò§£µo6w÷7ÌWÔ–ã8TsWqÔ<Ï)R[~Ç-ÀAðZÏ‘× ;”Ê?‹V ùú+§œ×_N B°f¹€<µ\@r˜…Ñ…oe^½“n|'=Ÿ¦emº¼f§¢öÐwa€] p™•.5&»1Q—‚¸­ê *W ½•þ`“F®Ö+wÜyuü.׌€ÌþÓŽÄrI_r·@`ú '­žÒ¦ÝN¨…eGù/ú{Ñÿv›pžyš{I ‹MCÙ|+îo ÍÕEdÓ )/‰ ®á­;E æŸNq²ùìÁøÞ'ÿGÞµ‡GU]û™É <¢ ¢Æu¨Pðïõqñ‹½óµDó˜~7¶¡  \cKª#FÉÕ`F›¹ÉH¼_c+­¨RýD¢&A+?S|ô ¡-•Dî^kí½Ï>gfòSÚ?ø8sr{ï³ÖÚ¿õN#KÀƒÁa ™HÂî”v‡»**{5=@$ÓD$eOúNƈd.GYØ^.\b¥2 LïýNdÜaIÆ­’Œ[’ |$™K_§0i"<ؚ͡?CÅ à]ƒq¥ê6ÃÌÎÞ\©eð>‹Ç+ÄtðÅê)ÝÙ•ú¯½¸Ra¿ÿ0È•Z é#Œ+uFÐav¥6“+µÌdu“®Ôb\©ú ¦·r¾Ò Ë>ùÔ=ìQ˜/3?Ÿ»R‘ÈÊLDÖ·+ÕMD¦c²&šŠÚÞ­ ¿ j?ì²[´çnä®TÜ+Q#t¥þ¶]©¸*®3ª{±çN9ùGê('?–¶nÐ¥’ië.‰Õ‹>ä‘Bå&­È…¡±‰/O˜“>:;ë Ó«ªñV^o3 lx ÇÓ‚â%ó÷¾u Ä_Hüø#øÍ‹PQ™©TTÃ*ð€Šs6¼ þ,*j2ñ=µ™< Ã._‹Ä˜£Zœê£áÁ¤F¾“†Ñ_uÂâ‚÷ƒˆGÿ4?1òq]>(||ÅGQäã ’>®>>Ž}?U½ÂÇ«þÄøøÈõœ‘D©®q&òq\ðÆ³²>R-Ñ2Ryu¦àfÝNª×´¿æƒg+Ñf‹¼s«õäh"åì›öo<ƒDuðŸÿŠÓ´«Ú‘ÈŸCƒ®,K5VgÂWŒ ]„:È'qÄ@SC‰²ÜZÄðQIN ‘ù ]©ìÒ^ªJWÅ À—‡6ò^ê ÓˆýUS~×É-Ü4²!“Æ–©›Fð˜›Fðx$ó»¤i$ªù]…/Qxq¦n‰ü®;ßs\ ù]ßn¢e¶`ÚÅÿfÌ…d¼kSÍ!5Ñ4‡—¢¬3_`åÝ0Pà ’Õ `'’”N¤e…³l¤¬ÆVd¬‚³ØwÉsæ³ÿ µËGáË™êÜAʨ© EóÄ2äÍëß2ôC Ô2$¿HÑ¿(±ƒ•`{h œN…»©@™.YKt »C’®@êv×~ón½«â÷£S5ÃsO$qHÝîðI'¯jÕŒpÙZ¬‹O·;yÌF ±á›Ä†\}d_øpÉ73i“¯GŽHa”@ 7~ÙUEï»ý·ßÈn?À$†Žy±}ž°@ôp „ï/Ó›è£4ÓGÑðYT㮵Áø¯"p’Ñø0©ãC‹Ð$woF"Ú™ÔÒ’©ï\ÙöËø ;t“÷š¿æîŠ·G1¾‡=Ãqv¾@ÚÑCGž… ömÐ9¶$¤Ýøê¢}¡=Ñ4ѸûO4Ž÷9Ñœ¢é1(NW³Œ¢ñ!ëGB’¤ýÈ,IØöœ<=B2g|g~D’!ã…ØÂ+!¶ý3>xÂ’ŒG%$øÿŠð[³7!âF.CqìLR(Gw츟ÅE8–=î¬ ?³ŽÿñW:ëåqÖdz­³cqmDg'x­VQDUõ šâÒM:›v˜M:*Þr0Æ9B*(öÅ z†¨h7Ȳ›ßã­˜7Mü:B+ˆ„ÐÒCÞFAhé/迃¨nßl{ÀAt”l2ïž>àkŸ4¡4˜¤¯=Š6™RIÅ!$á;)¶Ü&Úru{¿²åž-×Û`ï5ÉÃl¹eê–[&·Ün±åNû Ó—´åvgë{Ô3¢´¸à7¥ý0V+Þ«9ØÞlÉé «Ýϱš='Œ£(«YC^CX É'"V uÍkï«Ý¶;ŠX혤™Ã!43P¬†K]¬Ÿ çøÓH8crpð4Çj?Ýgçù“ˆØN{,zHÔäµÕB+X§‡D½iÑC¢ÊÙyÌï«Æ+ÙóËâ aQ-tœåaQp;Ù!áH ‹‚‡UÑ3…eptð~òG5‚üñQ]â£^¿– ‚¾ŠÎñ}Àˆ ¶\Jg3´û~… ŸvÓ‹þŸEÆ7Dmï ÈùÕ†Îopí„/å„§­yŠR¥r,J~.”¨× xFÐr½¾M!­MY¬a°…ThÎr÷`QŠ,©ƒ-§øÍòX} £ƒùcP¾ SFgx 5@uˆ†¢¡ÊÎßOfŸµñî+•>üþ—°1•-ïÍõĈLµªÚêSì2ÄQ_ÿŠˆœ2ïôéAQН€¦ü¥ÍŒ0Mw5\(4ý[uš^=†Ç/•ÎåT<¹åAGpÖÙóçIã¬æù ‚è1òÚHûå(Ñê!¥ž¶}:¦ÔM¤ÊR¥¯#q3o@Éÿkð ×B6J×°ÛuþêR«MÚ¹õíYÚ2«MÒhâ›—Y y¤B ðâȘ«è×ôþw³/ÀGذBU•<£Oùé3üdëG¶ª&Lë§vëIvŒýó™Ö“>ojC&'›Š­«²¿ó`¤{|™ -L$h,ÇͪH~˜"ñaövë†êÒNJY²J;OÆôìLui#j„î±5ì\âæíàTÀa&>¶×‚±ÐPksHiÈÁ¥¬ËQ{ÌÈç`WÖçðIr,z)P8Þ×ú‘Ýz­®Îû3á8¾…M 8ñ¾6ë_ Ùó‚á ³õWÔËy×㼪C8Z+±fÞˆJ3Íf•ëüùó¼c<ž`í1w ßêñxÍê¶Š#V@ép ÈÈÙ %LíL©ŽZ´Eܲ±ˆ7è.¿Ýåÿ…3^àŽq[ç'&k?yÑ!úÅÕ]¶ 3kË£¿Zz»Ì ½=I´)?J¤ª ’EûÉ#T}#—‰‘{ŒqÁ¯Xj\ð'ù‚ÏÌ5,xþà¼Áym.Êâ1¯N1/ø³h§IÖzå‚ß•k‘¥vÊØ‚ŸÛÅP”fiZh¦…`жh¯õTPÙ{Xðl\nJ6)$ñ0*¸òÔùó5b¤Øò|XC( sµ/sí–f”×IKj´hÉ[¿nHó©Ê~b¹æöþÔ„’;ù¹ Å Fvö¯¤Ô’\Õ…Š—&Ü”‹õá B@8A.ó'<¹NŠút2²ÍëEo[FsmJ{íyŒËá §æèÓ.Áy™XjwéEAC¹Ë8›èỿ—k…pù ¾]ßMyŒ¶Û÷™µÇ·‹Â´ -Õ]ç.Ü:àføioFëNªbLq#×ÇAs™±Íþ¥‰î6éZu9åaä"j@ˆk„sKX/Öˆ²}¶ow.*ÞéûÃwá÷Ñi;؉vcT“›-ÝÃÏ9dWîöŠV_0†2QœÍøí(Õë ¦@ÀoR <øò_?P•èåͶþ[1ãž¡mN:x}6­•m´{Z»'úZO·c¨–³×Î<ëPoåƒ Š ¾fgK®‚+  {® äü|üØåW€©)´ý“ÊÞÚiGl á4û(>P^­¨ø3­{˜ÆkQÚ B|K—ïÚ ⢴ɤÄÛºæûÝO$‰¦ç¸$¢éyºoÛ­¾íÖ‡lŸ=‡øaÛ´}æ² =ÝèPo¤¥¡"ÒÈ!XD·/Á>:wþü+vl2›ðLÿ¾ ±õ;Ó¶±•èÐqY xm1 ÃLq7VtÇÜ;ª«ü›þ„î'†ãu§ž ó:èê%ºCdG˜_z‡Ì/¸6¤~öðî¥S …`M-”{)h985Ì®Áñ+Ù5}§Þ˜jŒiëÊãߌ´´GsñÊy–pž}¸ Å<%”Ð^\óÜžËkè üGG¨`|ØÃ €š_„(Õg)gÉ£ÑÉõ%¬ðc‹îѨ§ž"¤Œ!…t}€B §0Òƒ[‰ôàHõhÔ‹ø/z¦î ‹£rAäÔ°zFÒ©Ñø;vjüî~Ê ¹¦ÛFàBù^_‡¡|M|ƒÊwÌ¢ÇÔm„eÿœ­?\Çž¼Á̧ÑâdŸ˜cA`p¤óm$ÇèF%otðYÌŸ—|üaÁáU£Ã…B5Ú_(›ûÖqÇfj?¿³Tÿß%Ćš«—xO$IÒMI2i¡$ (ºoÝâ_/¡³Ú}÷áÄö£èúc,:ítíTSq¥KÒƒÅÃÎÓþõ/ÈËYbìÄRM‘™%zŸåÙ‰¥ÆÔ‰ÅCROJdú™peé§h¡ Ÿ‚…‚~,ë‡L?ã–S.ÞˆÐÏFI?õ’~pNÃ@?7Ü‹;Lô“mEi Ã×7€Û£ú' -ÔtÂÇô͸ \to7‹î&Ñ FWmÊšˆnÖ˜ŒGrE77ÜVqq–Ó©[g¥wP‚|§äGïÁÅìA¾ëòàh('û»Së¯ ë‘1(´`Á˜Jë¯SÄ’ ´MÃU K6P” œåñÙ²õW£©õ<ˆÇ÷ž²èlé6^ŒÖ ŒG†xDµ…ÕÕ‚j‡ÖÂ*U°åýwS¢$,øüÏld·¤"DàKüÖˆá’Ú¿c¼qóÏ([VíªãlÕ(>3º‘Çr-ÃI1ÊcФøÛ=<’âx.‘|®IÇ<’ÿñ#)-ÃÜ;²þ·¥_(þ·k~JyÀ)¶E=>Ûâê3ô+>»§ÄŸ­•pf°»ð“ŒqéñÙxÌã³ñøŸ$>Ûå¦41—Î#Ÿ=ï± %>{âRÊ;cóÑbŽÚxZ+̤æ¿t¯nþ&ÝŒ]° OÒE›P@±¶Î¶Ó{}{®ôÒ¯³xÞäÞ„ œN¿jÙ£ýôFÍd©È€z««ìDžxTœƒÇ£w‚“ðäÕ¤ZëLvQšü­5¦G f¸Žé4ê¿lª |°íìÖ .0)&>vÆ‚{ Mu’ ÑR21•Ó¥úg§ÒËààsq+e¾-üm¶pjÒâZØ xáö*1z‹¯m:@RøÃ6È\ïHÜ܆\X+”=_ƒOGK! €l5pØeè€e7ãóÑ–ÊçãtY¸%ÕIÓ^u•pÖF Î\$ô™©‹„>sKßȰ7D8V Â;Š)Ã5ŠšGNÌ:±Á)jsÊ[ë±˜š€¬¡ÅÔš_L­Áe饘šŒzž"Š©Å{û.¦6æáa(¦F~ö<£ßáêBà 7㥫óéhªïoÙÖ³¾¿R°ÒYv¦ï`%s_aÔ8­?¤¨ƒ< ¶ÉƒU~ôQ»E;x€k4õÜà@´„L/œeàF”h Ö%Cba'(¦½Å+ä]ùÚ ž¶ÈÒâ[CÍ(U;à‚m “C]mEUÉ ˜0ås”M"%ŸÚîë`i˜>Aííñ ktÀt"ÖÞ¾óÞóëpQ‘E˜ž_w•†/ºÝ™gé¥èöE‚Œ.dôÖJÑžãÜú$ÑÛVöïNsnO 6î ìŠ[¦÷‹­Z¦[4dhdž ØY[é[öÐ@"ð©ã¼Î ×ÉÂÏN-þ7m dš´ÿ¦Mõ}˜k=í;Gç!œ~À‚Œ€Óµ{óOå[¤Íç‹ F‹Ùû0m§Ýùº(l¢ptðÖ¿«¢ ¤0ü2…¡eÏŸeÇS üà$ÉÆɆÝ0B§]ƒ©(<›ÚË-F\ÇÇw« D­iŠ]´jUAõDÖÆîÀç¥7©ô:UüÀÔ›ôî¯Ó<¤†1ót,s,‡sÁN² V ¨7©\G%‹å]ë6ù ¢Ú®tç÷É5O÷AD»Ò÷\(íJ×»ÈÅL{h7ßYópg#¶³Œ .þòüy•?çpöþ­E€ ¤¿O{ðî0$'²¯˜ ŽØIòâ‡ø®2È"%%`'¡»Ê%!¯¡N’©ó,½t’äÍšã_( /[º7ÈdÞEréýQÜ4¹!tó†P”C5‚æëBð¿Ù†ö.ßj¤~U#,/DËKµT¯(ˆ>8w¢br¹.€&—r2¹“‹W1¹Ô“É¥œL.£É¥œL.Ýäâ•&¯ÉäRO&—zƒÉåÁD]—kަÉeÆarq.&—[ƒ5¹\%L.ogQ…¡ù#ar)Y"s–Hÿ\`H&—«„Éå/·R…¡ùªÉåÅäòÿä=P]Uz÷Â#b|)¨$Òâ½¶ì&ZT\I—±XѲwY¥-Ý὇"´Å.1ÙJ&ÌäÍNÞ¼G»¯nÜânXÓ™lòˆ/%J#DÌUŒK"DVSçQ2JÆTc$Ðó}ß9çžsßå‡1éÎNÿzïÞ{î¹ç|ç;ßù~™/Ûñ‹ |øfYt×û26Ë~€ñ—ðªûÄ?è‡mZaàÕZ›<„Ëø(H {d]–Ò§@A‚Ÿà ’rB²ÂGÆ URéClÅ6A«ÊÇå?ê4žË®Ùƒl| h@`¼šVß@RÌû†Ni×Uá6ürŒ(:ŸµÏ†OαäÐúù£÷χܶä¿Xí3l;f M¨Ö'ø³(ÝÅ}­üzó"M›<çT s²bv=.¬˜±ÇS¬˜Däó´Ò½È§Ç "ÄݲdþCÇž¬‡H]éSO ¶…¨­¨ÂH«ʇ åºðo#ÙQ’®Í #(j+Ž­I{¸-µ¡…Ú ¡—(7{×pô°ädOÞØ[©*Ü*p×{“Ƹ ÛPhP8ÓM£ÒŠÓI¥€·«’tÙ"F8'yãýé 2ÔûÜ+P·¥á@ëU_·K­ßˆ¨¥Uc +1¤DÁ1óB蓾ÂDËÃÞ\”rÒHÊADS+JÿI½S[pxãëBïl|};¾Zá»'ÄÓˆ+vÑ·šyYé ÏE3‘ZVúUn¸’ ÍDót¸rÀ•ë®,}’k& f¢B×LYž½¯€+3„fâlÓŒ©U­ÄG{1”®LN1ý+}ü=óTèSFè>gÉ©9…-:+†2 -M¾"Û&X¸’ë~ÄíåiºkÕ4 ƒKN…V¨"d’jÓ!Átdoö\ÙnŠ€”\Ùÿð€C°ú®ˆ]Þâ#EÀM7ä#EÀ"àÂ}¤˜/ò3ý?Süû½d{ðývÕWü®¨"¥°­>ˆ¯x«j9'Ĩh>÷?¨h®ÑXÀ1s‹@¡vŸÆ¦¦¡He3ƒRMgºÚ´R˜®ZV¦˜®äV“Ì ›éÊ)7Ù¦«ëïsxi¥Ùæ`ÿ¾˜AtÍ€¤­Ukÿ±IѾÈ"ajŸmka¯5ªdW”*,Ç çG)SBõêŒË¹+unz`¥à¦ûVÎÁ'Ð €NŸ@d¤ÿó^‡Ùï m½íÊÜÁ쇰9»O!Ï7oôÐäÔÔ–1cty–<½Û2žjÇ0®óÄ¥&”ØÜ Ããê‚èhâ‚Ø–¡fBÏ=Oo%ìøÜ C`5üSƒ¹º(>·K‹Ï½ãE“Ä•T ä¬'¦w•P „/Y-Às3•%ã%”Hç·¢¨^%Ô•«„Z üõÔ·Ñ]†{ß¡8šZ`«âAŸ·Ë¡`òz¨÷fi¾ÍgÏiãG-kžž]øf;8ËG°3M7PWËuð*êàB7€ÿº8Õ ®ˆªn ‹ä÷8éº}jò±§ ã½ þ0¬Ä¾Á ¢ ùè¥ôå0 \S»Â†ó²ñÈï’„š©[ráݤ)xå{UYÐãª,Ƚ@þÎ=ª|ØG“ëòaŸû§SLãï,œì¾¢’`Û*AÖ¢«RÈqñË$só©ã,¦Ü8B¼,K~Yâ(„þß´“ŽÎAIÐNÁÙ²ÑÊN–¬r* ºLJ‚›VdCõ×ÐL©ú™õêú§õë\¬ÿàåÔÜÓôUô²nzò:…1&óÝÂÖfhF™ï½•\æqÓ¤Ê|ïÿµ»Ì‡úie¾TýÀÝ+¸ä6 ú“º~€<Ë“w>zE¶ÓòZuyE¶eߦ`bEdÛó8Ù<{¥~`PR¦AWýÀñýÀìTå²Hz U$= ²s’ô¡c¨?‘u{¡ìHz[ФfC1—ô’´ÃÎøl“ïŸmò=ã›Æäû ]ÆÓDaQbNØP"®n'ÙÕeF^ƒ"^‰Â²“ëp}i"ÞÉ;©6©"âÅ4/¦‰xÝn"^‚D¼»PÄKˆ— Î„³ŠG’š¸‹xþ…"â4ßE&⽂J†%–˜üWñfÔ%‰x¿¾ƒ|9@ÄkÛÃE¼~)âõ ïÛçQÄëÓE?f7o]QÇU+P8+؃CÚ\gËsøì<ýLteÙíÒÒ³›t xµŒú,hsi¹¬ ŸÒO9Ô£‹»`þÞ¾™o­ˆUÒ†ýf·á»…Ôoæzvì“ó¼ ïz|š½ž,Ê-ˆE{ÑŽÀP‚¡¼íaœG™~Ca³½~ì×|@·á}D)ñ‰ð”Ëöc×9~®ÄÅk°ˆÀÛi|V·aÁV{’…ßçîÕ”9‡µüpKÚX¶ðÙ â=ü\ }“A®bX¯ø¾7›ë·ëcäùSêcÀ-š4t«‘ï×ëcäûÕ“HV ýlj³ûŠà2G1Šbáà³X$Ü"(n§Z¦›0×x¶)‚ϲ^Zx®¢Ö-xµø$\µ[€WïÁUÐúC?P•aè’á²ûŠQ¯v¹x˜^+ ×NÑkßÄ«ïÓç¾EŸ¡Ï-¥Ïý†Þ[Fï}@ïÝêGtÈÅùS1„rÄ]*†€²NŒd=ÉzvÂÁG ]‹•CT³ÌÊMÞVœ.¡Å úeT¶¶…ˆ[ ö…öäHŽPåÌ1²kxÏkždÿa¤ ïYLt‰äÔ>fÀW@Œ¯H{AO®Am2Õg(<ÃÙæK„Ëwö¢}”pÍ mŠhS¤¡6Ý UlOEìb‰Ì|SÀ;˯¹jô 4ùLœ^Àí zWâ·ë_À•À•ȯ#ƒü¶-¶á˜×|;Lû¤á˜ÿ½,nídòq„ƒß/TÙð™7tÂ<«€úDˆÞ•5NÙ ‹ÙæÔb ÜbjyÕèùÉ©)6?-¹kX@ïAWì³cÒ¹ àÕ3¸P?ÿ ¨€Ñiãm0Rø´iðéBj\õ£‰d·C!å@ñ¢§Õzžäo¥d±IoÃ!ˆÀ÷1±î ÕjçÍMvç´1pŒlc$_ÊH—d i ¯æPê—ÕF•J…¦xD¬2ÏÂt…AIeòlwvÇí×Ùþ@oG{ÑÂQO)(Ÿƒ_áÄ߆¨&ñöAXôAs\YôÁ½ý]>t³{‚-yJùœ BŠv •v¸Œèߣa( Ê£?<Yˆ«×Ï›k®ó¢Jò;ÿšF‘''O ÎÔ q8¨sÅÁ²UËŒvÏÕ†kúîrhžúŒDØ©år§B;·Õ¬p¬f…¶šJæe ŸÍ²ºÌD ̵`Ùã9™ÍL^¼3}Æ¢X­#D¯Ÿ]+ù“ë1˜î2Ùž íþõЉ2ç%«F²úqV¿JW°¿•³J5‚uu©ÊY,äOÆ´ 3vEò,dW+]½þ…4GMY^åÇ W²®·ëq¡§ÆOþntœ×ÂJ{xýn| lû{G$Ñ<§ì˜úNŽz5’6óîjå.©Åoˆs÷9BrŽT(o¿è¨F‚ߟ¶"I?µ"I£_T$©÷“Q„ Û(ÐD£ª£I6ûU£À:â!‰ùhñÛûwßEIš8=ôš½¼S¯Á8ð1»Ý½v_-r’-8É ÿ†Pj’Pâãi–Pj¦aÿã*‡ôP~ ·Ø*×ÇÞ­Ún”õ£<\…žÖa$ l"ð?f"Bƒ ¶ø9ÁƒÛ¼IPûÏ·!?!¾j‹¤T[Rmè³kÖp~!ØB2CDe&£4¦>R]dš*3Õ˜ÉÖ˜Ég5fòg*3¹•¦q”ô)^Se&·jÌäs3ùs™ü™lטÉçý(›`m$é8 }ÜJL$h¹qûðr„ÔU*çxîV(Ä1íjmãl6­–Ï^­´ZÛ8Ï,Vk‡²Zýœ-Ü!j-TL.TŒê ;´M/~w°uq­²-òUQ+¡ðoâ8Oˆãã¡ÒM‡J'¶­±í#âÖM˜Û/Ø“>:M°Úi•žqj=ÁÙÿ;Ó~¨&ï¸_.k?-¿âgK«$»­âly÷‚³ÒkW.Û•‹væLXï.~µé¯”¿JÄÎ#(W"o3¡rÔTŸ/€ Õç#~}õ±Ò {žäLÔ3¥LšŽèš_¦ ¦2 zI›3à×96.ÝaâæðKªÂ0›dÐOõ"tf0¨ XaPxu Y®Ò¿1¬ýy Û?¹̱¼®„> !¿{üö‡D †ÔЀN ã9­sþ3‡W­X~ 9mìVR‡IT åX}¨Ç€(E©ŠÉéYËPët†’ÞNؽ| yÞØ5È¿úç¿OKbyZðßß'…͈F 9Jìصe Ç%&sT”À+cÈ’µ?gÁ£µ7fŠGƒ9¶ÔÇ÷VäÌ Syíh 0ONƒ1Š™Oª0?C00‡kF}ášÉØðzóPB0öø¡DÇ÷šwͧs2yõº¥ŒP¯@]hûÁ<@“ì¼À•ã˜U þ‹=ú84i~ÌÚZìFº÷îЛßkõÖÒnTÂ5¨4ÿƒµf½øku£J”uÖ*:ûÄeQZ”¥æ8rëçM{PÎ~>fýeeí÷Þõj٠ʼ@™Ê>zSç¼@‰Êº}©6/Ôœzï NñìDg²t}B:¥³bÏÃü'h¡¡W{þæ›ìô.ºÆxvò¼_¨ƒ––]ƒB6µã" ¾5¬£cTÉznç3 GˆYØk7õêöÃ>5@liyÃõŽù„VìøõކÁüÌó«D •ø5PÈ˽vT쵟^pȺœÿŒÆT² QùYð¿3?Ë9?%YyÆï ­çqDçèD3’ݦSÙ9¸(¯7t!ÐV×åͶùã 9?þèfÿÛõs΃U¬{÷Ô'ã2Ó ;õIf÷»7À) ^ý•ÊPÔz ƒZo8 ذÞùèòC˜;PS eŒ¹›¶c$ê"X[6ÈÍ䬉Ïá£9AóØk~€Ÿ¿y¢I>6IP[%6!N¹«ÓPbìðØîNü°ö2„ÍЂtbô«Ô-m×z;È6Ih<ëÅבue»icö‰ù©9öšË3„ ɧΠFœg¾aQ@»¯P }G^¸ˆô´%©ùv`±%A¨däjP6Ô€8Yàž,»édAøÁNȳWÇN&dpÇé´(¸ŸÐÄ2”ÓbY;( ÷ŸZa@?¡Ù¢ÄiQº´E!¾I®Y;­™3bù²­YÚXº`êȳ_E\óÞÆÝPBýˆBÙ@[ß H" å. puz™eߥ:~( *pùœƒ¨Û…E]>°æòçÓd‰o<Ïå†ÅÒ¿™Ä½–DfÅý-!>4c¸Š}ùÔaUòg×RÚWE=gF·¶rǯÄ^¯ÀÞû¿DìÍÔ(– Ÿ1;XhË/nø=ak%ý¨npµ_iÕ¼Ò”²iw‡mÑèaÿEؾ|Üßa¸Û.Â{óè½j{¼ßtåpñy¬íP­\ö²}%Zuó…ÕÕiüµvcÏô³l7~ p·«…´h7Ê™”²z9Ôns:Ô^—ºBi*f#âÚÛ°X ¬|$ÊùÉ’€;?Y’NÜ„J!Ji”‰ýQ*(D™¤šŽØÍè&õ¼`åY¶2Ü9Ê ‹oCä,Û‘³Ôé’Là/ч ”0¹¶&ñ´IŽ÷¿‘&m'LH ¸;fæ“Wd9GYÜÕD+¤?]¦8Ç*µ­vÖ +eדMßÜζ&¯|Êù‰ø#Á¡ö·Œòxî„Æ¡ÁAÆ#¢õ#B˜”cÚ~±5´TʉÕÏM’”Ì®?×ÔÁÓµ BqD)»3ÒÜL=´@oÝ>›õâ‘Ðëæ‘Ð £¦e°7°`/Ï]ɆNãRgtkGußNãKVã_¢¢§RR©JA¥®£3¶Bî©2*ã Yÿ1wþèL\ü_©¶ÆÄ&K1%×5icW% si³X0Å‹gÂæ€Q9öΫ¡tÈÄÑ)öFUÀÖWt›Mµœ´oÔR×tKo­4؇Ùài¯×t•`½„B]@)Ž YÁ5‰q—ic?–*Ž? ÙÆE/»[…#ðTm6T›&¸ôáØ¢žêÍRÍ€v?@nH^ {¶šCŽYüü&ùóµÎ¤“§^N½^¬é=lFÂ"V'ø«ZÙ®V´´ÛÕˆv6(«E»¨Ò®J´ãD¦‘øgdzÁ•dÇMØ®‰Èl´)Þc¯á6ì¶Ê7ÉÉ,ûQ \±UÒk?~-axìPŒÃKÀ%Ãè_áf"l{ð¥èîÔ†[wã£vúÙ¶ÛFŸí¢5‘%ï@  ùµìÆI•R§Ö&Óñì?ÒOá&Š6¡™®˜n–ÀÖk)tE”Q£røIX޶'Že±F•›ÐýÉKý–Ñ0²ëœýæÔa_¹ô“W‡]æ§4³ê°·óäLUN½ ÆCqðHožŽ;’ŒÛ Âj4Nož‹;W°·áÐ<¶äçãÞ8¾T±— Ö.œ-KþàVt†4ŒIä´Ý`¹á Üòجä¡·½Æ^ÜFâVùp»wd§mìS`l…+k•—Ü9]ÆÖ°9ã;µ[…ªÂv8˜WÀ><´ ôW×fž˜ŠädîMéàüœ;˜tïÀØeLÉ£N7s—v«0,ÊÁ³ääk£ôf§~${׌£ÌU:˜ŽGêgO:5Êæçø4 N…À©/ãÊݕҺì×Úqüƒý§F·sùíýBÔP²f¢dWþT4Ò¾è,ߊL#×…¯£FêÁáZV¿R}‰Õ" bûjÑ×ðòâýûåÒ'äÒwÌiéÓÙÒ'!±#[úó¸ô³™ÅFI55¾zƒXú ué+ØÒWYÕBÉPËnԉжþ&®ÿXT/þy£7™céJùïW5Èœû ¿c€Ë5(IƒØ8A¹q‚´qæ~"ä}÷°ÆÛ+•å7~=¦3Ä(ûŽZ…÷O°A‚{™ w;ðT£ìd¾ûæÑˆ²6pÊžq´£8 Úì{ƒQy*í„¶‘΂›E{ªdûÿæÍÑ&ú,µ/‹^A}Ö+Ì*«"yd2Ýè@ìëU°/sôsÖšÉ_m\ñT6+ÍÊ4Û†ƒ†E8{¨7ÕÈñ/áP&’tµ«p`«ƒË’ ŒY6É2GB/âÅA¹Wc•w!0Ê0ö_/†ð­áø™¾¢ .y§WqÊ–\ýe:ô‚Îa8„#ß rǾ‹à;²½Y±ë§C0â^q` SN?ÇD”¢Eù>ö&Óá+A+Ax2ÖtX$AÊn÷ãmPxà7­ÐöPŲW.Àà'J;QÉMC”îe3Ó ‚ÂòFfdy§;Î5Šé´ ‹ñIè `AöóÌd8E5RÔ-Q:”æjQy´ÿeï}àãªÊüá™dRÒvjRI1@€Tæ§©»Qƒ›ºÙ݈AFŒ»qn\Rˆn$i›Ò´MÛ@#$ÃL ê¨Õ1@\» bÄ’6Bh+¤P!…´D­:!YM¡KÓÚ÷<Ï÷œsϽ3“¦´Uw÷m?ùÜ™;çž{Îsžóüž£Wå¹£ÉÔ ÌKŽ傜°d-ꢔAÿ¯’©ÖO¸ôU³Y‘ÕGyEzNmEn]‘œ£ÉˆÔI+ÚKûé¹Rí@Æõ0…^ÃѢΠÒAܦ€&:|Ê hÚ N/Ì_C×püŒZã½àx¾Fù•i}³„¡mTÿO%Gk² íØË´§¶/“ƒ»å·w¿Ðr˾'¹öˆ&PòE£Út7ÊöÃÍßdʲW›¨å€‡µl0̤5펫plG¯bÓ‚œù&KC°ðÝqü82ââÅHtHÝõå'EæÇ¨Í!äH4™ü-ûã„ÍúîIœ´ÑõIE×'õ˜:Ñu[PB¹'ËÏ †9?DZ H¤Îaï]•¸_ eôýP[>ƒá0å,Ø;9ptÄï‰ÞiÅ?žl°‚ÕPs¼P\äãéTÜfB/ëÄ52>ò?Ž'ŒŒêÖQÕëUǼ‰ÚÔíªv“B[SkÍ!IVþ™›pø‹¿ñ9dÅZŽ«µÑ<í~¾õêDßfÞY'z-±üM!ø›¸± ƃZ‡H= l Ò5M4îñÚB±'Jy2vÊGÅÏ%ˆ—á'òA¿ê>ÄTŒ=Pó˜æR/¦GE÷¿°+¥®ÙÕ{~l2~äÞÙB½{­§Gë?–LâyË5ÚF´?²{øÞ3`XHd†©X¡„„âJH•&™•C#3Ì›afkX°ÕÀxø=Jh¯3-0uÐ#«Ÿ ÕèÍW™çLÅ×)SÆ»ÏbJøÁŠƒ­P|tÖ*%CëL¨”ïy *åÏ1ܦ•JÉÈåßKȵ?¥BèûžzqìåÑ;YÝ8/íktÎ#ûç÷)áˆ~:k)8óï‹“Líišn˜†<.Tê« ØÆ*nXýã+Lås««¸híW\à‰ï§©Kš=>6O¡Òy ``^ ´ê©ß{>âèß;[ \6k ¤‘5yãa`70°A—Oƒ¿^$1ðE``^ Ì7@úì¹g¶ÀÚŦ ºu•D[V)A”1P¢V8»Ž'w?ÈÔûÀÕâ;Oä0ð¸¸MhÙ¶a`e\ ¬41°Rc`¾ÂÀQÆÀ` ­ýø;<¤ß¢&¦$é!þ$t©¹cyÇàŸ JoÄÙ³À-þ¸í’¸Žs!UñÍ’*K`)­’ú™,5ɵ+«b†T^e.,GË2£eZV:ZV¢eE•Ë5CšYZUcî«,‹L ¤¨*t^W•¸È'µÜÙ[ö™«[Ã%öWÐ×U)ÙŽ>-îÛüS•«X-éËJ­¯Òöm­¨güW…)Ä«Kª´²>(ù …{K¾àV(„rÆßôe¶ªfx`T9i”ð˜4þA«Ÿ [?‰úQçÔë©×óÔ…þÿ.©ìë°(i2çv¥ß °¬uç.Ñ:¨ …8xJ|o¬bÑ–-±Äš4¾P´á¦ÀIÊO Ix|•j|èú…Êf­Ëuëò*)¤_û¦•U¦Ú•êv¥ª]ºÑ®Dâ¿´~ZÞ©ÇEyÅßc0D³rõ|÷¥”F>0<(¡ž:ph_J©øåÀSûÞÛ,T¥—"¾½+÷½÷fñ…lr›}›«`¸3Ê7$—“C‡^åñE´ÔxU•ùª“½#„w„øH~'hFÚO bˆš’Æ/ Êà4ÊŸI{ ZíÔO É5™öÀÁ€U¸|“U­ªbG|UâR…"%ôhà9¶½^Á7¡Ûnb·x ZÖ‰ ¬=_=Ýzžϸ´››×¾žLAPâ>ð¾‰ã¸¢~0!Ö>gçÜÅ#ʽK1Ö§<8t)F/šåÝ¥Läݾ|´-À“…ñyºöõ9¢mâ¹Sñ² ¼ºXà 3pèÈžÀÓr¬¢uÉCÜeéCü‚2|+§ËÑÍ­‡Ü}Cø÷Ÿû÷?à€4‚qÀ<›úïÎñXFÕ8IýUÎüðÈý@ùøU*˹ÊÊï¸C• ÒŒ$\l«r©Dþ*+?œÊDÐ()Кg&‹4óg'íãý  µeˆmÇø,s´vùgˆíò‘*m€_`3À·ƒ®…Aî;lä~ÞÁ<;-úì†Ú#ÚøÍdHÛÆS–c¡è^þÁHê)S§—³Í˜î±^ޤZ»ýY󀯌Y§¦7U0´/W†övÍ9ä ;ª¿ï¨‚¡}‘:;Œ½A#ªãz>W²îÆŸØÐ…UämF“¥½؃ðùÖÀòõð ]Í›˜¸œC²q„9Žñ­ðjí¡´ºÜfºQÞÞ…m7Pe®ä æÙƒ•ÜmgÜ€W/Vr¯ÂØr5¢!†–˜B9êú0¡1cè«TËAÕ² -kt˧ÓxU¿×)èÐxYf®É"Zƒ²´ML4G:´ÜHÖÓ+,G¼W¯ð^¹ÂW¨Ô+,g¾[¯ðn¹Âo—§¥÷é](!8 wá@NKÿ µE~ …)͘)™ÜŽüÙ¹‡1Ô¼»$V3™”ÛŸc¶ã(¶£xʧžÊ6žÊŽÿÔAko¶mâ(0Œ¥Ÿ°-ý$F7Š¥?\e¢Ó€qè4]%ãßãûϲ@¦ ÐñCrv,dÉU-'UË\´Ì×- d|“1 F–¤'w0…¸Äþ,7ä—)½ rÓzA§å‚~ˆâÇ(©$,k¤:,‘jü¸Dª¨F* Ó T©îqøç̨8×r»޾c˜ˆZóõ± ¸ÔîwRMª¤´0 kb}ùü†<×eœßàY®ã䨂rêøe}ZAÍî2ÓØ0h¬•ÈÐÏLX# ¬ÎD&­·] ãúUrýÙ]ìçaXÕ[ßn)ëZARÈÆM·y‘’h—3D¼Ë¹+ý– qªÓ… þËÒ0JÇ#Ë¥a-]5ÉX.7‰ì´¤ÊÈüá·e.ç÷gám¬C Ê÷ýÞ—¥:ËÔïËFo>õ¾lÕħޗ‰e1ïËÁûrñ¾ ó}›Ó¹q®ê,G¿/½å«÷å©&ùê}9hÁýí¼o{`hÉ |ù²ÁµÉãå„ÿ%UZìùëÀÎ%Û¥ërÙöµIãKƒÌ%­úfè_²G®Þ²=b5¿›æR–PF³)wZ¸˯ÜòbEAƒxZl•‡ç’ß¶Âh1wxq?ãÇ'Ò\6mŠsT® B›ØrÔö=êAl¤0î0+Òç¥1ÔT£05 b¥Å[¿ÁcŠ`/¥}£o˨{nÿâì_zém†‹ûʘõ¬QárNù©ôC‘¿¢åüάeñò™ã¨õþÈ€TwCü¤‚ûñs2ei9Où©I&HÙSáS%Ëuøšž\ŠÛ T¦¶+ýíÃõß¹·‡GBk¡»ãh³‘8ê/b¤q’£FBÞLîcÄxjßü6Õ×*ð˜¬ÀBˆ/¡¢—<îe ¶Y f9‹ÐçŒÍ¥l§×OYÿ½@+iRí•CØr4 ˜’X &óŸŠ/ÿè§TˆG:ø!Lf4òEy}Ñ^¡2ñùz,üÜ“ÐUó©`ˆ!MÕÿM߇ôìIO¯ä}Ï<¹D¼ “Ö¥Œ½|N ÷ØÙD3a² `æ§½"îŠõI,ð-T# Ä#‚…ãèºóŒ´;!3H»ú—¢šÁŸ$^µÜeÛð*½÷Œ¾b¹ËJï­­¯RÜ Rqº7Ž+8ƒ LàÔüÄPs6¡ZÝc‡jXBµPMûy Çÿ:ÀÊ4¶f¹AÈø°WuNYݵä¹Å/Ý”:¶E?Ï¿òqï äGH‚®ÌÌë̘A¦s w½óªUYΔŠ:±Ä‡¤T‰Ëª/ºC*§x‡‚®Ô„uq÷öýY g`q€EÓr”b¡£E-k3¤H£ ?ÃÇa~ßEX»¹©´€ 5 ¡åÒ”Ñ"6GobJÏz¢™ â+¹dPŒ†ø y†ÝS&6±bbÅОÔL*ýæÍD™9 iÀ{3K,-š_¶àÇ8Nh¹©-jŠk…œ˜ê.fÌ^Ìøêl&K9½›8`‰gêLŸõL™Vý-\´ñCZ¸à© =ä#'¤rË Éð)g¿'ê9‘lEgÇ´Ú° ÂÑío3°e§ûYJ]˜Ú¦0cL²Â˜ÚãÌ"6ŒiÔÚ€1 cÚ ŒaeQšaLŒšcX; ±vGÖ=™=XÌ­€uV›®ÏJæ! ßv´éÐðíð-døj;šIØu(‚~€¡lü6ÏÍÜ«çƼãæÚç0ù6À8síÍIÛríÕ¤åj³˜×GÞDœx³{:õB ‡¬N7@nž?ö‹cú|#IHûìcŽÆ"Å8Ÿí}Að5Y¦v¹ô¯½ã¨ö¯UJ̰ ~_#Cé_ƒNVè%Ž[åÁ Ä1U µ?Ë(ÎP޽É;Ü,ÎÉ{©4¹Gx‡Ç/ÎpR:&µ4o&ìñû]éæ·êúbüFª/V…‡˜¦Øë‹ñ;¹¶›ñN{Võ¼y8lózU/^E^Ú£êU¿XÚi¾J4í_¸ŸQ¯¡Ÿ×?³Žê-Ð$9=ž5HlÞcše+DÑ­…™â…‰‹èψ¡ŽÆ ºxe©ûì»KK*PTĚ䢯|³/H*q‰‰Ño©¢·:•·Øå¡™I¿%FÔQ˜æÒñœ¯wcþrY¸âgäÊHl0 ™%¤W»ì|šú–Ëü´ þ¨êg„`Ø ½›½Ë.?DÂg>#>ñÃE¨µ.2¬×hûlD“¬‘å2\Äÿô”Ñåö¤–Q=×8I--Üâë¸õ38,$ÊLFAÙlg•Àì–ÇÉ(«â$£ÐÓ±É(ÊZGÉ(”8bYë…ÉßpÊAE¿þÑ8 EŸp2ª)ɨj÷fÌ ' %þ(Vhb9$þ_¸l"@? *wx¹TŠèö~?›;/fð÷œ„Ã'æð3‰²“z&g‡5–üi‰À– Q~Ç£'­e,ÅJㆎÓWë³H­ïÕXÛ»\Ƽ4¼aUÆ–lDŒÛõ¨v8Ýåþ²MèbkBÑëîåô›.Ûi$·gQìJèî…©#!N*ï©Æ#f4ñSˆn9pt–o_ʶ»e‚ñÍ¿õ¸F.ë¡g Ó͈oj9UúÿÄ\éßu-XŽj[$:_„Î{æAã[Äð¡i/(]ˤa.¢Möašõ<Ì:„>ðÜâ¾µbq¸sÁ).Ðq_²eR[Þ-oæ2e^«Ëöð"Ñw딕ÖE×ÝÉ'd]ËoLws{éXöè à çò|Æ+jöмË[Re32ÞRÚJúyº±øÙµƒbàYrà ÔÀÇ;ã ü œnµ.X x.<ËÀµ,Ô¡¯[HºEዌ!Ñ=5Áøù0ß !)-¼ 'ºÉA”ÿˆoVàRù#6ÅÉTýÈzs5ÔàRK#.͸øq áÆ%‚K.¸tãÒƒ·Ñ€Èð÷Ò2H¼•´êD¼2p¨ª pât7r^ó {âtÌñ¶Ñ¿Œ ù×òãìã{cÉk:Yúx@忦Ý.=i_T‡ç$kbÁ‡çì÷{§º]rKQDÛ5Œ!é²nÊ“(y·ûg|0Ï€dú ›‚ÈÕ•§Ÿb8·6œ°èÌ´x-;8w뇗ì²Í†FH³ùŠËðjï2*+ö¸÷©Çƒ³H=~½WÃQôįM=žêV|ŒGñlÚ­u¹8S üO«³qÛùîŠ^\k—ø 4 /<í”q#*Ú@¶“eéÏàx!ŸKtÏ£<¯Âkùq–Pö-Ó‰àoÈö”KË#ñNdƒ”iÈf—HF HQZTâ徊ýÄøYªñó$+œa >h$—óµåL.O»õoâ®ð“èÎXÞÀ^)—–s[/væÀÆÖg8휋K°ä¸ÍÙ@3&k+å‹2áÿÎû+÷FÇæ¹PÜ©¸\ëÒÉÿ;‘]ôÓ$8ŽåÔYØ)….½VJ~üO»Öu*GhZ‰ÿõ’Çqâûž-ýçP¶„‡4î6Q¶Äˆ¥/¿–²%6Þy6²%®¦áÅÉ–¨¸ÖeË–8˜ã}ø•-Ñ}K¨x[Ý|''ÉÑ1g×|‘›¥é­éÍ÷€pšut£|’jèÔ, P˜êžÅ‡d®Í›ªèâÀ^–$¯ùµçŒæþÄ¥õ2O½J¹˜–)HŸàñéÅ'Ëì%ÎfKŸvb2u¾¢héOyQë®gâÅë¼çw\¢8F›°Tm ož8”hi$Dœ¥=˜°HÚ¬·¤ýœgyOa´â!žsýõ¦«Zen¸Þ^”…Š?.³’®wY…Нç 4]¯Ê§]/ÙÝykì'AΤ%ë˜à1k’ü?³»6 HX.ÅYÂtú“:Èâ5>•“k±çÏW¦'¦çF•'u"pj¢Þ©üLÔõ†kóõ<.ffe“7 †v¿‹j‹Áþ¯ÉƒQÚ>ÖÕÜ‹Ã;¸`³a7e"B›¹uº<§VžÑC­¼7ú¯Ýz„âE ¹]²ŒñM„Ôá®v¿xá“ ¼Ùÿæ%G~¹ø‚ºM‹_/»Oˆ®V·ëqÑ.[|ŽŠÛ­½E÷ltüóg²š±X¦nû¸Ÿ¥‚›¨àY¬‚;ÙÉë4x=?Ά֣ ÜW\ö¨³À³¾Õ´„ÓQ Ç& XNì±5$áð¡Þù8=ËÙd‘¤,QÖ:KYâíÖìLY¢²Dg"Y⼸²ÄÏïÕñŠhYb@ɇ!KôiìÔ%£z4!è¹^žû¦u>B·M,°‰ë¹ q8÷w÷Œò¨U²äg—5x/¸õNÔë’ããó¡ {XkkHÒ Dh3¬Ç4$ipŠçJ;¡¼îèO~ÈðØ}=¿.7äˆ»Éæqåe» XtóGÑ&m2Ä óѦm2éxº³(ÍÆw²¡ÅŒå Ø 0´¡ë‘¯x )B©dþˆ^rMGZ:Úd  >¶.Z ; ¨mþOÚ^l8¶ý mò‹œê‚í­ë‹œÚÙK.½8ã¦gÜDsKÐj%3uÈ7 Z…L•-^þÈù õâñºD‹´‡Ò‹ZplþÔ6îÀÏ7÷±éœ{Ûë|eêúÆÉLç?€éüHw\‘E‚äÏ혇¸«EðÖÎ3LçtLçÔ¦s~>Ì7Èt%§Ó×g3üˆoâ²Æl9€¡YoÞ‹øŒâÅe—øLãây/^\2pÉÂŇK΃ü¶>i:o\V lúz‰rü‘\3µ@9eƧïâ¶·µ®íÁíTÜÎD5¦§Mv)ßÎ2dQª:Øî’U@§A}†þ ­0V#”ªL†…Ñ/ˆ£lTu%ZN;‰bë½µ ÎôZ>ý·!‹1µœÕNL”>MnðÈ M©X°”±ÇϰÐLÿ  ¦KÆ]ªâm¸[ýõ÷ysfˆÉDŸð%©üÙK ¶)~8`îØ©«ˆÓ¸¸nã‹G\„\O-)u}Ý#ºß~ÿî¾v˰áGqt»ðè¾”6NfWÏDÔ3ì>c¾CŸ˜ï´ŒS‚‹°bDôÖž¸Wf­dO½¶"\ã™®¸érÙµöt9ún¥Ëµ.¸[ßTi‡×lPl¾žè clΠí‹l^Hº /$5Eâ>ðœôBrç¦3ï⯞Œ"õcXïð&¡&ú &ÒoBݣ߄b¸ýNV ßÏßí¸“Ãð·‹Ð2-Ž–—‰o»`äñÞf¢Dúm|ÜJ.™·1õæ!õ6먘l4ðá’‹K>.…¸áR‚K.¸TáRƒK=. x ˆx…÷¡dSa‡Ç™»¯w¶åÏ$\Qþ¬¤^•?+ªWåÏžTüÛÜ‘TÅ©IìÈ&±#›ÄNlJ¸/V;±ân…©u½EOd¢Ï’ :=‘ËrÒiÉF'sG>pü"µ.åŽTœãû$ϰ/Ïz}pÖ„yñ~Ó®;‹ïÅ+ªµ{ñèûézñ~– –>ƒ¦cšQO^Õ9VÉ™y׺´Ñs,n9ç´Û‡\i^¼«¿§ª^f¡Ý©û$û¤ZÈ+åsüèy1õoϪ'á-xóT™:.}fyó.ÂäJjMo^©µ?áÍ›7–çVöm?~VV‡20ŠòZOÚµ’åÑMË«w&Ïö1KB¹Ný)+Èé?UgYQ‚¾XÖ÷QA¯Îw˜{åh„aTQËØŽIÑê—×J+Uê ¶R•iÿ?Ó´ó¬¬ãFªªçFú(l=Uµ.ËÖS ¶]S«*¿ÖJúWó–éß)¹‘”ËÇt#=­Ž&—&/ ÿ´LVÇ“÷ÂàÅ¥ÞÜt\:›»rߦhª$¦È07Ì ÛÒ†‹>ü¸$ky\’¢î‹KQÿÓåú{²¬Á¾é™oëÎp‚¢D ,>K߯ÀêÃX1“©¾6¾© ¤úZ—åAj¨eæÛX+mà Š5Úvä_ŒiêjÓÔTßú8šÌÍÕŒÍåWnV›Ë¯7—ÍÔÈLÁØ‘cs µÔš¤@­é@º­Öt k Rßåå‘äÚH¡ZÓÔZk:n¯5HwÔš¤¶ZÓôÕÚ“;xbð¨ð€à@Jìz!XŸ­é¹á¿pÒ«/ÿ_w U}ƒÉM¸Öžßã×ò™_Ég{¦üžfM´7©±V‰„ô‰Cлßà$¤×"cÜçz[} ‚}{3p·šû6‚}Û®ö-'ßn£ƒ­°\Ûô¶N,¤ÔÙ-j“dê^ãyüpªN–ÃËDû¡:!!¼Ðº¹KKçeÄÉR¹3ùãgºhÊÔ"~DD_}È£Rg¯ <é~!p µ¿^º^1pÈ\ºJfƒÞ@/=ˆP$Â5âø˜™P5”fi+ž'Ìã#Õ8Úôu^ãЄv½Níjî?ÎëqJÖ¾°9 á«Û¹/H6§€it?]§@û×à­å×±S Ôr „á(·œ!8J-§@NrË)p†,ï)Zg­Ë°¼Ø,µïÆe—½°¼HËûýÿA–÷ßÁòÞ…MêåÇI£xä\"¯—p_íß<Øß©¶¿çIû;µ„µ‹»ñó iï’Ö®s•æ–wÓ,íï;ÀÓvÃþ¾Í°¿Áú¶ ö÷ݦý}›´¿iûûnØß‡ö÷¼Mû{>Lá¸Â".Pô õæb4(Á¥ — \ªp©Æ¥—\špñãÂ%ŒËV¼Dö÷ì{’m.ŸN§ËGÙß½¸ŽÛZIq8”¹(㊙ìï£\.þLØßû5‡ý}ïפý}àÜkØß÷ö÷½ûû±3c_ˆ»ÅÑkoç-:Lö÷.˜ÉþÞd3¶6ÃâîÇ¥—ìïÔ’ìï¯ßmÚ߇›Nf·ìî²m¶–ü³ke}¤CQ®ä´¼ó‘81•üiÚçȲ4²ŽúܱËÄmš5mâúF„Hòyñž?ptßèþ°o´Öfl8³ÇX„µׯí¸Þï%<ÒŽ–¶ä$+SB°Øºèx ’¨•æŸq» Î看yèœ «Zx1ª…#m®ØWýp(Ù5ž¿‚÷h­:{¤ g4%v|L:ä«n›ÿã¢Ôøþ)‡ÿcÊæÿrEKDZOã¤o?ã×NÒ½óÒ0î„}Ó?4ŠÞË‹I‡”“|kôÒ[k•î«eT¨åçkÝN4îW±á×jÄÞMÈ£ ‡jyçt ƒm²¸Ec›® :+aø>ú®ÞÒ1­øéRb8…÷É´)%ºêø¥ž:)%òwR.èŽ%Üè8¡yªCªXE˜£ !ô¬Çú¡ÇÆ-'QE·Ì¦èRNãìôؼ¢$WðÌF¥ÖÅS†çx¬øÚÔ:f^À,½Î¥ë“{ØÒ5ؤeŠåZiP±¡Åœ¸ ê…%†-ÎôOÅçwfÝËûîuÀÀs/¬2‹£0¾‡•mfBêýYéRô^*óCù4§ †ò™87õŒ+ «÷$Í”`•ɬCú9Ñ!:OòÔ¬:ž7L¢næüê¬:—.¶Ó‹mÌ›:nÑÞçÞ»1Egh'S¡U³S?âQ@» OTgu¥L——﫳ûw|Û¨•2CJ#OŽÂOu¤ ÝàòÐ9z8ÊÏJà5&ªkiñ$©–OÒIµ´¨*MÑ“. Lûe%û!€<*ã@¸jJÜC#!>ð@ÿ™HV:)â9uÒTþ¦‘öÄGúѳ€Ü•¦Üîû΃ þ“®›§×Iý~Ž©ß{5Dµ~ïÑ+ë©“zcäë.i·ˆkmŸ>.Ñ¿ÄÕ´JM^çÖV)A%åÖ%*)1¨¤A­IüíºNí§):]*ÚùJ’!im».†E%ˆtØ—Ru=âž}„ÙjØ7òEçx8⥌Gò„GMl¥âŸø!Ë|SZÅžR*ößL9«ŽÁ&"‡qQ¹ËNÁ!¯ÎåŠÖgA]8(°o‚¿Xp„´Ç2|lùÅ© _Ãþüûyï`£„¼÷q¿…uñ9ì9pNšÜ¢4©XqØ"Å*Šmh@‡Ef¨×ö驾dr2ýE+ÜŠ3Yã Q†¾Ô×FÚÂì¢óSyo®§‚ Œ4°<Ö>ëkMq}PüÌ83"q†ì¯}ʧ#à¿Ô—-D”³²·'º¢ž{§ï[¦Ük“ÆÏ‰~Ε„M]¬7u±ÚÔK` *ŠÝÔ €{슸ñM+ˆi‘”¶:K™?vá9XðïÆuKê¬üM §K4N³À ¾æ/l5u)Fa¿¯´.þ m?Á+•×:~y$žüK°08¬0ïÚ¾ M¯¾ô,£°<„ÂÁŒÖÂw]œjÕ0~‡–[e4DˆÆ‰:úšÚ–×ÉÈA9 ÃÙi ¾ô¤DE‚mù5é s[Vb[V©mY©¶eUÜm ¡Ì±-ƒÞ[hN|,Ì9ÑËŽ»ÑU•^÷*¬{ÒøAùƸþ'> ò@D‘÷y©„¨ð#v›JsŠ)ÝeªQ+Q­;¯CëzšXŠòŸ×©võÜ.ozKëvN´ôMY²¹^ï†z솤ñ¯ÓèùeBš¯«ÓèÅ€)Ñ€)Q¢èMgdœÀvÖb¢‚Y¨ Jˆž<,lÕ}|«—8$·qµ/Cà `{ý}¬FãÛ˜SC+ìbËÝ\0€TçÒ! ý@¤[àk0©“lRˆÔ¨©É©Ae€y4ÇÕ7RÆŽy4›ûÑy‹êܯ:o±éK3úÜ z67=×eycåùâz–ä‰85êx Vš,2cÖLŠë©jR+Ùƒ)}¸¹•a›}á¶$༄nÈ ?Ažt3b‡LúÓ\ +úÓ¦°9¬±žËK Ö‰y«†[½ÒÃÑa¯#hØUY@$¨Ê®¦k SÎIJþ†Ô±¯?äøf6G“Åöú´æ³äv3®ÇwBE¬¿Ï¡ÝßgÉõîñ5A5ó+%LQMû-…­ÓñCõŠ,ѱ,bœ´å?{TÒ¶°ÞÂaµ…k³{½Í¶²~‹~i‹³?ˆh¬ÄܤÉIS̯êœF~U£ƒ»ZEÅ" ˜ïä¥o‡VÅ'C éšÞ¶:¹JÔˆ‘¬3ÊKÞ¡ð¨Ý;P­«Î.ÿwª–]Š~¶£á6¼¾HÝ]ga^k[[^Iæ7^€7vs?[Æ’ñ¶^tÒ§»W½¦_³e{2eW1¤¶D“Ȭdìšòk¬]ú=w?`îšAt¾[u>¨:ß­gK]l9æ–Ù‡/õ³ "ȼwlîïÝ.«þ ¿+ä›èTOaÞ=€ð^¼ª’ÏS_²G³ùcOüÎíÒúÑ^E·†ôBƒ´(Ò6¬šŒ(ö1„Ô+Õ2„uvÈä9c>ñ®¯Z‰ñMvÊÎx¼Œ]£Àˆôuã­¦Ÿw.ÙΰÛÿ[†ÝAžQ ž(¦5¡ UM&Œ¢E5Ã19Ž)cþ-S†j ðp'ƒƒ†+¡·l;&¶¬_>2ŽóÇR«à'XUÛyL£?zÕ÷„É:£`™ÀôI½»øH@ù„Œ°9\§Ë½ñ­‡m;’o™¤QŸ#%éJ0Žvr¹tg1×ÝÃüFE#¨u*"úFw=IAgu¸Ú—¼îþŒ¡Ù (£ˆÌÕFmI0Ô,Käü¹ÝÑãŽZa”ß'¨õ˜á‹®þ£d:Ù=à“%Rƾó¦ñô=бl{Ü1± .Êgµ[ð…Z¨ÑIà>r”ë†Uü†u\ù&!løéÌ{دÒMR¤Þ÷O¬HE€6S äÕqlš)S˜»VȹO«íBwL1#ÄÔÛÏsH_#ÀcaC›ø|ânÆO]Ò00"ÚpŸè¶ (œÄõГõðhx¢E×%)+§ $kSÆ>õkYãºRŽ™IÿZœŽ•ãi°[ŽÒóÊ !äYB½hE?k¥®`y„ø;AÈ;3„RÆþÞßtˆÛé+,¿ï„AA{9ì\ÙnçW’0‰Œ<¼Ìr.üOÆáléK XêhF0ìu­vë%ÐZ³XÃ’Nz»ëc)îjŠÅú¤~&Ée­«À;þE†ÚE_ùgVayõ ©µµ«º7/·©º)c_ejÅ#gNLŸXͽô«¹<¹þ-ýI+–¡í]¡ö"}{qîXãqYŸZ®¡û0†D4/ O_>I@™ÔÖ³v¼GÖ÷ÎÈñ‹p·8Z¶š=¢Yb~c£& û·Ýá,%¹!-TH2[<ÆÜÚV0(äË!p±”öùVà::ÞªŸ»æcà|Þ ³Îjþ @ð²@áe>¯j¬ÒãdŒõrN¢Y$øÒ Yˆ›G¿«ö%Ÿ{8öP\³ÑÇåÖK ô./à]¾ù›po¯P[\4OcTæsQtu~­yƒ… 'àŠWðÑmd^[[ÿ/\&J0ºB€ t…Y ³lÓê‚D &XíG0–Iˆ‘ùºd6p¦{çþHFNÛ&–i#{/×Û¡œ·Ãæï¢ú”†Ÿa©†_é {NE‚*0ÎÊö"¾• BÛ“TVXòa5 Ç2ÎËЪªV¸,ù°×­Ò §®ëô ©‹8 !;뮸¥dëW˜²Eý )HÔk|€­i©½ú©)[T¬0e £š¿S¶(ÀOEÆODõï"§WRpoª>ý7ø’†Gü  .õ+¤@rÈH@ûö£ù¾cAµrt•\/Aù3ÝCû#žÔ:¦ÄuzßÔ)Jü)k4ÊU+ŽW©ñ R½~×›Öë+T»t"0׿’•šLæÚBÓ¤ºhTÌµÉÆ\•!‚Yœa„5í%#àB,)9ØÚûÊfbkç–ÍŽ­Ýû¹¤™‰Js\¢Ò¢‰Š_•_ÛˆJ[¶D¥m…ÓÆÖoÁ¾ÚªÏ„JÈW¢nÏíÝŒxiødSØSû”W ÔÜ;‘Œ² )P…5¤å‹¶êåÞ óM”)ÑÛW¸MÓ˜6Ic®™£õ3ö.H›?œ¾‘q¯Iã^“½$à^£mÑ!vÔ¥Œ==‡÷ÆÕj(ôéŒ$ þn1ßÎl½,s5Jºµ^6…2o¹âg~cƒ¯X|$>,>–%¨1éu¹Pc²Î—úX5¾˜±¢ü‹Ã%*}¢UᣜÁ@ÂC¯D\K£ÿø%޲¥ÊOb´»–ŒëäB³Dá“¢š\aTÎ-~qÑ£U\ô¦¦ U#UéM$BzÙÁ;‰·Ö¤™’¨O"¡­e¥_|·†kÓñ;É^ÇýêtgEÑõ·ýE×P“¤a«¡zqÜÄÅ÷Ôh81ð"ŠÕªÁ·oó°X™" sbRákÙY(ZG =‘9±¬Þ sbj)û0óQ–¿}…=sCáL¿Eo BÞacC­ ¾ÿ…ÊPù;cÐùÁ§dOŠòÛ~yÌЇ–ô“…Ó:(ªÑÇÑÈW=æ£R;ê¬z}ÛVØMÛôæá¼ I·Xed¸ˆ³­Eæ©ëEæºZ+\ˆ6«Æ:§GßåKýn9š¼vÎx5ÑŸÖESß”õñŠ ²~^~•{H¨´E‹€˜»–ìà¬M‹Y8öFjóŒói‚jNDb¶­þñù'œù‰ÐÛ[S~@P‡¾ù;{ÌŽ“øI#Úóá˾;–<'ÖA]ÊkÞh&At M=iüógfÚßoÚlóÓsîX!ܯ½é¨°Êôÿ¬…wN¬feÆ×zÑ(>刦ŒC‚H©´‰än ÞVî2q<(Ǫr—Zá‰ÖT#8›8ʂ슷QÁt+™26|†•¶‹Íy–Ü æYxéÍóTËzF›¯ãyv­0ì¿c7îqÛœ´lŸ£:vÒÿšèœ€nH =Æ®µT^0ðnH }Jﵤwª—”ÿ.Ì¿Ï{¡OõiÞÜǼys߸k†íð¦A©KÔ-¥g7º€ˆ7¤D<º-í‹aÏ}RÜ­…‹Ý.†ô.‚øóqרç’íôX™)÷®°›)÷Úèq0ävÊ_âKå8‡y¦C©øææwj©<¨=‚Ã+â»ß†! ›Rï@2ª@Âß)‡fTƒ],sÈ#Øà,Žxô,T*ÁSê€Î¤ñ«äˆ¥<¸lhmÊØ?Íä}T¯ý¨’˪`±±ëüƒ >|‡x„=ÅúÔŒ`8ÄPOx~ƒå7<É¡ŒÖÉ×vˆ\¡É¿µ‚ôÓL*[f½â ÒPùXè(žœX!±¿zLðBÈóÒŒþÏôJxÖx¯—H‰ ÎU¿`£ø„Fü Eþ?û&R~yp…˲YÇY ×}<¢½zM÷bMçýrZÖ³ŸJ€ ê@þÐô¹ÃxÕ”RͨÛ-ÝÍ«}XAoRo»iP(×J àiÕ„î°t8‰Ô©µoãï¶“umóJ­k»û­Ã%êàLm°¹–ƒ8`)˜á¥  ?Ó÷ ƒü„N®¥ópY¡n’9:Ò§¯?½îe; Ò¨rÏ\»‹gBÓ£óµb|L)cEV ’Ú?ÂÃ÷sŒ‚g%/eê} £Ô•¼ Þ•Å©“–7vòCü;ÇV¯TÛ4}%÷š±RiæªI7øãA êÔ!ËÄJˆÊk/¸Ó§î¹wZ6#Ã¥:køWžQøßý™¦×Ç—2Ölµ ŸÈ :i}­wìKO¹ü-†¹Àãb™’Žý‘‰‡dÔ^@™­`œ®öÇ…xÿΆû•jøÐoŽÚ>Õ$GíL´ Nÿ2öGõ]Ÿ]OòL²y}’ã­Ï>é6=”iÏóø³±3x¹†ÒÂò¼yZ¦eÏ¥…åyó$8^ÿ¤nOJ,I¼ÀçÜ•v*Wï 3ðYÖ\É[iÚ éƒ>O¯êlý›Sq'òo&¹Nÿ٥ý›4¦ÄþMž%«×¹ª]ÿfŸôo~õïíþÍTåßL~‚ÁÌ~L>]ÕôcòqÔtÙ‰ò?wë0à Pÿü•öØÙ|<[š¬4bW¸tý„Ê$~UÁJ-%‹%À¶)R«Pm¬"½JÔEüL"âÐñÄËâ•Z¼$?õDt±X#‹.sôÖÓb1!†ÒÂ[‡Q:NÐ}#0éž²DŠYœŸœÅ›«Ïü›G|™1Æi®¨AË9c{ŽS~œ½~ež†ÅXWÁ¢Ï»(~{ßH·— ÔûÃèÜÁséhÅ6zÓ¾F”ò§ø™$qãÄôiߢXI¿{æîcZð¯;I‹4Ú)´%<€%Ê3¡í—@P aþJi¸úM§ýöïxu³Jä¥Ä†13$œ”‚¥”­„½ø—.Ó^\X T¯P¨^.'A/rž„:$í|ÁT!:+×é˜&Ž=+'H`že™‡gaê~Ç@ôH+4+0¡;>q²# +€ª¸¨F·•@@õìÀ[!1’Þ2Šp D´F ÆÑg‰FË’•2¿t盜_jsïPÒò.iЫ O0u¥«¦ÿúnR\êU·Ò®Ów«”Õ~ÿîTуÜjR?Áf›“ö->æÕÙ°Ùjø¨lø51Â~KûÃãnâÏëôÜê0·ùck´ýÎ>¿xÑèõþPoñlû2JX؂كX3륊uNd½PjÈÇdo½dè“CŒ·ÚòBˆÿ…ÀÿØ ´\G°ùñ"¯Ò£Í}±ý†ÍVÒˆ3g,gŽ‹ã{dèGÃJG°”ä`'R`\49X#°ºIau£â`Mv9Ãúµ²eÊÝ0즗ß%ÇoXö3‚!{Ñd,ˆ•‘•áŠñ›ÍOR†_Ó' ½Ð2ªóŒ™l+#@ßôIVª[Páßz\qcÌšøÙ¬ç©Og…?äó`äÜ Æ ›Áè7ÁØ0†[Cº{êByMê _sÛJ¬¿upi›ÞÐ0 Ï댜ӈuމìeC”©!WK‘»Ëö4$B‡Ù$ËÜYÝiF!Š ¯#g&Am+¥Y!ë„eUvÆèÒãËúצŒý5BÓCz#‡ïüâs[4lǽ4ë·5«·]èLƒãœIh¸á•ñ“FºpðVXöÆoÙ ‰>²Rv±U©Å=i )ju)ä]ÖŸv'‘(¡žP:Ö²W¿•ö½¾omù½{ñâ§ï‘Þ°ìù´ï’:Á'o Ïb%$)I[ÿ‘¾z÷ÌÓfL7‡£súê}:p:Æ€ÈÁÓn¥¾lO‹0yp÷BîâΑýIüD‹Ÿ¸Û^ÄcSI·7¯¹ßf¿lé"Ÿ`)RDËjÕò¸øÉßÊ?q'èä·â§?Ž»ÿÌŸhÎ Ôño¦Eú¾¹åwîůÍ}qöÃ2z×Ã"˜Î܉ÿ$¼¹-ž¹›–™@ä=_´ %pÙ¾´/ïŽÅ»Cs‡UBTÒø%jßÇ*cTœ1e¡# ¡›p¾UÓÃŽÖ¤ÙKÓJiJ}’4µh˜îú Àܱw¥¡>„ègø §é9Lm .I²*,Ñ/fµß„.pËIb+Áj zœA(¼d;5ñd5qÿý*vr´¯tÙNˆÄœ ‰9 3æd€^y2@û ²JÅ‚­7°W5§uÑûe• :-v`< vïÆÝâè¯D1&бã‰|NÖq½Û]g¶~ŠÍñtP;žF”ãé¢÷ï¤5Ufª¥ònÜ-Žž‡‰m[ ì:kNÂÜ5jÙkÔ>'ç bÌ­ô•µ^ôïßá›T!Ä*ÝÏ9(K­šµbfà‘bq·DEJ”Š/åâ× q­ŠúJàC\™À‡xØu}ˆ †¶Y‚!#acøËß".ú\Œ+•Xi¤æ™ÌÝ+-ýÆAòlt[ m¿=ˆ¬¢H ªG=bHÕò' ÀOŽø‰Á÷èp«2´.Xõ=[PÁ¡“J}øÌ×ÝVÏÇ6Ê|æá/kâ7ÎHÄʺ¢ˆ• gÜ«gÜ«füMgÄÊÙcDe Š7œåh•G>Ì›w §Ùs69M§žgû)Îó”£Už-‘W+¥Ã [kÝJû{ü¨3Áú¬åVxת‰O«‰_´^²Ø3]Ü5=aq×Ò“QteX>ʰ¬Œûÿ)Æ]î+ÍÊ¢kÿçg1pïb,ê7DϹcËÜÿÏšøY§Z¹ö-ô™3Гì¿Ç’ xØ‘Óhƒh¹¨ïïqê×ʳJf5Ðz5оk z,½“Šï Kbe¼GÞ!ex’ñT\miôŠ¿ÃÉa‰4•—Ϧ¦â[§f¹îO:ëO¢$¤"ACœcÝ0ì«ÿ©òWÇÉlÀþÆ^xßܬ¹Ÿ×ºŽDžX‚6ª°‹¯ú<25¥Œý£›y.}_ü¬`”Äh“Ø…ƒtzëÙÆ¹5'wßÈp ¼då%­‚ñÿxm2F*ËdQ¯ª¿¡{,ûÖ^Ñé£Àx/Áe”Å’¨ž8ò|`òRY´Æï;H?D|Q4›lnßdüGØoßí;\ÏCåiº‡ßðF~uôFþ6Ë$]ö¨Ã݇¬WFë©™v£õð=LÄiV¶²Kÿ~M2v`D›Í;ïÁ ÊaQ¹ú1Éè'™Ö¶l—Ãù¸²¶ðS~ßH\³`êXfê …¶ ŽÂ2xp¥?<ªŒƒmÆA•Eëñ!ˆl)Ö%ÁZA,B:¥u¡ ±zÓÔxQˆ¿Qñë~%X›Ñ1ÄASFÉŠÀ+Bà&ÐS„½:nñ;Z F¡±E ú\Ä05ú«éŒxQvªîå’j“²š):ëFöhQçÒ£µ/(±Ú3§bv·,„1>˦mŽ-Ãónòg¬·Ìwa¢ZÂ<¨$Ì‹³ùmÔa~³9mº$öYá¼Êa^eÄð9Ö7n|ÓPã°5ä ¼ÈX–Ûå¸zmA˳W?ä6ü—Q *“#?|D+ØÀ7ž¤11}V6ðI…æ‡mh>£¿çS#P°"ðfÙ²´“.L¢ Î{„I‡g|D^À:>§KÍäjúÐÍs\6/)ÚaéñCwfN¹V©Ì©ié~ÝeØ/$8=«Oê*gþ”wãu&Z§ëß)¾k•Kç¾P73æOa›’Û­¹Ö“µ}B?s÷"^™MFŒüÚ¿¦`ú´øÙÍ-F|¿“_™ºJIÚôiq_Ú”žbY5¼‘ÚW÷‰ó“,_…‘.—(OΖ—.¶¨¢… ,éF_Íd|è댋{3-|àŸèɲû¯½ÔÌî˜Qãqî ŒUÖV@L¶B‘lµÊØ ™XÕ¬Ur+ðwÚ Y«ÔV°„À—»œ1`Ù«ìAÙzMÌ0{Øç[eáŸåôéwY;Y~h'\v!vÙ%öèñ iÑÂ\l‰Î#?_öÕn0ÇsUP=M@Åï«_%¶øÙ›æ}Qû×U|¯ÔÓ1SYt•ôJ¤ˆÖªv·2´|ù-8á¢ÚFCŸ‚&… ƒÂ ŠÏ°Ç{“Ëȵ4Š»žÕª.Á„$:ì:#$[ðá${·!Ït½Š"“#B­ŒRüŒÇýN6§uòW¯/:~ WqõXÆS’³Š×;wsµ=Îáß…\åÒçñ/á¿`«ÊpØUûRg°Oß(a–§Q@ö–¿J±¬|~áæ.éì1=ñ´ÖAÉèV äÙýeß6 >ÝÞßÍÉšlkîú‡$ç zÜöMé€`Å%6þçÅIV~JB@…«@“à2ƒsŠ0ý³x•„OÑÉ Ùûe£% )»*Ö,VD~ÿû‚Øø ˜Y«d}ˆ×ßÐõ!2mD`\¹§kqâ°'šbqbÒ!Ne!k;a_ †µ¹â KL|’£&˶¯Mû·M9Sg†: #½ÎÓÁ`¥ívp·©¤ ~ò=y>F¾ïg¬}ÕźIgäÌ|øfÏû!¿G_ú+Ö¹JW¹l‡xôÆâÑsˆGwÌ!yˆGÔä[ß#ï“ bôo1¾21¾è%÷¹ÕjfPaM(/ý¯\†2êbš¿€Õˆ{x¬^œÒ;*•—V^˃÷ðv¨º‘±5Š–l&ÐÒu;·œDËè­¬LF˽¨C;…–}²¸;Z¦>Ä}º:¸eM÷é逅°ûLíà–]MÜÒ‹–“÷rËt´q*Y¯üS²’ox~‚Ï%ã}b’*°&'`Õ³Í ðÐò,Ézô¿äÈó—vã›X@ñÛcò8Ô4/ ðd‹èò2[/íåæµ'æ$(F«¶4^«ÚÉtvm€mA¼½¾®y¨QZ[{ñÛ–e—í<ø©x-§‰õb{}Ýè³ñÆ8-› ¸7ßÈðR÷úzð@[gœ •[;ùƆ^_/ȼ‡”¤ÈÆÅw{œ^rÐ2÷vî…±¨×ׇ^\-NX‰ß<- ÎÔ#Z¯oLÔÆy`Øw¸–`\ìõ âáë`ZJŽârðº8½DÑ’*4‹^‡{}»ÑKöCq&æ{ˆ'–óOŒÑ\¬hnŠó€¸ßÒÄðNÃÅí팫íÜdöEg{œ^ºÚ5»Ñ¤ôÆ´jÒ™Ùâ]¼Ïz}Ãx× öÙn g¨‰oî7b:úC¼k#îˆGÐK*ÊDxA$Ò+U+½ag¬ž2;¹§,4Ë—ªGD9 tkŸisáG„¸>‡ ÛÉÛŸ‰X?×Љã,£Ó’«9ç~c›SÆv¹™ý¸êœ1iüS‚2ùœD•Ò)‰<(¡ƒ#¦Pl»ç^á4ZN:ë™þÛ'“©þ½ê°ý6·×ÓëÜj@°KíÀ‰¸CEòÝ.?ˆø2ëxYunÅ2O8hR65y^ݤ>ܯ‹Û¾:6$óº}âýê`¬"1Ç=`²Å8~±—Rºü’ÍÖ—vb8¾²jÆör4©ó“G^L©õðû*é׆¦Ž žkËOO‘z(XG5ï›ô´ gÐ Ý«æß/ëÆò#Ûîå©ßë2àÜ sc;Îí¦ˆ–hY©´&2U%[SYÒz–JŠëÌ .‡¾ÉÄšO ¦{ð>Øò†|•49yÞ@>÷bþ@Þ^ æÏN-½Š5rz&G=ã3žñÅ{¦ÏP¤ü*ä SX•'\ƒ—Cª¬Óú¹’(ë!oUb5bôûF¨ÎUЛôïªÿfô_þý1ý›Å™ÔļšYv\ ž*~È 8 ¹æ©–ªeZè–O§=ðj`Ø=Ihµ.4Žº ;”OP¶(Ž,QíjT»´+³·#fªŽhÖF9W¿ÖôüùilF 4­ÞJ¸5i ºIšvmÝ¿\o)¶X„-‹7@ú¿cÝqîXŽ—!´N¢Nâ=ÇÍú0ñâSZ ýÚJ^kÑc¦¶/ظ’G „ žNá‡L£AP%¬ŒmÊh¶é A]1{ÛýÜïÖUñOrý;Äqo•f D€®íJŠ($i×p’¥Qìu•ÂKÃɆ‰<ç~—+þé­¹÷#…á~Wlæeêý*ÜT'B"—hÎÒ•nnöGW°›e«À$5x‚Ž ³¤•áŽÂݱÊL¢oœ Õa³¤à _¤ 8Ó”ô”‘w1t—mF“<#}\ð^d(ÄËPêйQú¥lôõôo¾TÛÝGaàÚ ¼Ž—š†~çKÉôfÚ3ÊôËü¼ý‘:¸›¬c•ô ÿ™r7:~›ZÆžm{Ì ¬ì­ݬ23;™Â‹g:õ3ÎsY| -¹xÇ¡˜ÔÌ8EF£ˆ…hPìh Šš” IYl¦_|¶ F“ P™Äp’ ae7Æ!ÕÔx$4À‡ÂèsF!žÙð°Ÿóçž4Αé\%-Ÿpž#cÔÿÛ¦Éí¶U2ÿìPLþÇòq8ç·Gј]j~!ÌϨT ÀRˆ_xb†Ä$%Pyb±Žš¼6×â v=úv5Ù׎±™%b£LÚ[„•qòZ„L·i2¢3X%¡”fò°¤}W¦h·è~ZT??>ê8ôEÛOªÔ¶tÞ»Àf¬Q‡^:5Nc Aõ:5êä5œ¶×´NÅ17¬SqÌ´Ë8æB#ʇFfɃ#ùÀH¡áH¿j@qô!ôÓa¸éŒ1ÜtÆnz†›‡/ƨ}ݧGÝoÔ‰RôÈÛ•g]µ{ Â&ïïaêõ3þFîÒ€×7‹lV4#Ä¡×^d³¢Yî¶c¤®ç‰ùZM¯“Ç .xo;ŒV­2ìµ\à|¾·k7b±ñJL;_° ãZª4®QøݰúBBï™°´Ù¬z½Z°ŠõjÁÞ+¬Ur³RžÍ©MäÑTÌÝ1‘mðDú J–@®pˆbÄÞ AlÀÄñÀn%ˆ *Al·Ãp{öÂzÖ«—îõ:ª®PFÕñQÍ(#’œtâ ÁRüÄ2ìQVâIr„å¥Ö )L[ÅT¥¶Z1Uéâ³xÓÐùMÄÛ~¨¼M–vƒˆ÷2O{ ÊÇ/>qE *”J¡Wý\låìVV9}­ÜRV…cÂ…Œ,?ä±åÁð–ƒ–ùø–‹oø–×Ê1&yx<ãñB4ÉÇEøV€oÅøVˆoÕx.½äãÛz)AË"´,Å·b|+÷?Ö,>{[9p,¹fÃnŸ§••~º²S.4e‹f&H'`$qµPEÏ«X¤²èø;8¶êLc˜-„ª¨QaXnãÿaÿ·0,°±{оíÖÑn%Íyƒ%¢A-1Á“þÇ-Ìô¬’þÝ‘)íßµcw½LvÁ¥³Qq”ŽFÅQ>¨D€“0E„W †"þ Á%E ._Ê@”ߙ烓zÔÑx£ž‰ùÑX-Á%E .?;—Ç:"8xct‹ˆº >7oìŠdu¾«?+fwÌ.ºÊŠO;¨ø]Tó»?A}Ç‚ š"mЩM‹ÍFSÏO\.$E|^ñYlŒH­ Ü óG”/=òI'ÕÈú #UöO8¯S&Ÿð‚â"¾µÃrëM~v!¤ìœŸðÀsé–¸SDG¸ÿ„Ÿ©ºéžûMqËõxS¨q“Øð³;Ã. pl^É×òJNœ]ºß¬¡ÜðÊ­ép7(ÚÕ´/ªhß±i¦}íÚ ÒÕÊx}\l-L4åX’Þ?ìøèÛœ2ö,Þ•%°ñN`§{…›vº)Øé¦•nJÙé¦m£2ÏSY ®zÓÜBߨÜ´‰†o™&d³ ” Í”nYb”¶ñç”Á¡fbYVKº¤*nÔ'Q…ªÔó«Éa¾Z#,) / y4òÅÝS|¿0 ™¯º¯,Ýx«ˈO…2íðù¼¨@E@`3×þ3enQ;Ž$ãúä×þÊ$ªûÓr=ã~gò’Óf|ßË'ò’™oZóÈiðÈsÆ.ãúCA¹¸fÁž7ÚlË €²{8c~P{<õ–†Š¸Ì-¯$±BÓœŒ>Zîþ-cI ß©õŒÞz‰öüËöÑy²‚œNéõñÍÖ‡u•^o0 tYúbø|‡KËч=Ö¹} rðÛÂržyA£x”ÙT…D[1®¼då:pQ`môa†ûÊ×íø«àB8ášU¯«3`vÙõ.…ÆR;Æ ¹ØµÙj®Yõ^ÿª¹ï«gØåÔKÓ}'÷d)~ಟ{’CxTEæ]Å¿OàDèõ†µ c^(ñZÁ2‚F¼Ûög´÷ÓˆhæfÍLý23J3°47êF#Þ?Œ÷ä¨Ýò·'¸¨†O š<Y`Æ-loøÞØ"ú‰FD 7;#Ыn´v7s¼QÕ–xª«h4$¿×\ô“ì" “Y¯(?}bÊ_„â šTêjj£\%7[ðº§Ùˆ½„ÜV}BGkœ8–CzHù³ÓCš @æÕ£jþW\lZwaóå×óúåb¨í‹N“ñ»îZü°µÓCŠAg‚òüÝ|=¿| {ž[ÏmsDÂHR›Âú•P\ð ™ä C-VC-Â+Š*Ö/×G–˜ëoò!^O·1çg¶¡ùÉJ¬$Pùâzym3yžë]¦ k̪$Á¬¾†Y•˜³*ŬÊÔ¬Jý,³uÏèÇC a¨&Íá¡zæÉseEš†Ë4ðËêeѧ;õl§NHCVy}¼“Lλn½D]չĥ²Þ¥Ï_®1ªTĨÒ>M7" DZöIºÈ8?h4kôiªºG&eœO'Ž„¹kžR‹xaEì”8”‚ÉIHÀŸÛ¤ xD¡숦˜H€Ï¶@‚Æ78ø«ëáà»ÛtðסÃ*À§^ÁG‰Û R vgc½Ó¿o:}äø| …2æ„ÃIL/)&Jç×K>'CM|u¦#00ÄîÍ©ZËŸÞ`í ½QcN#fxÇ5ÊŸ^§A] R_¯x{=Íçªbo!Ä’P)Ö„1g)âNbJ«7*¡B“àøfÁŸaþzšQ¬ž)2ž)Š÷LK½ Íh–+w«[ûGÔò…ƒ&,_›^µ~aŒÔõÛ³~À¥»]ÿTƒJFÔé¬F4Pµƒ§•ª–aÕ²-Ë«ÅTÁ Ì!µóèºj[EíÈcMܨó£WSŽº]¯f»\M:mPÙgÂz?K lÕ¬nk=â#^Wñ!T m©Ú$RýÐ!áßæáóšÛê2jÔƒÔmnOãVÛd§ü¢.,Iw½”ºìº-wè‰ô0Ä’Cþ² O?†}½t‰øúð)Óð’!~ù õ©þ{uÿ ÂÀ:È#_Šd•f$/ÕSÅÁ‘®ŸX"#튫 "|ÊÀ@TBÔAÒÁzy¸{[P$Y„é¡öÿI}qw}|}qÁÛxZ»M˜¡Ÿ½jBCjÎ{mì–¤CžênJf‹Ë§° ^Ì_?‚1”b¶]Õß41XP|U 5‚–©pˆ;]6(ë&/Fµ²¿^ÀïíÑxEîd…E|zõ|ìÈa<²Ù‰×[Mä¦åí\-¿ŽbÝŠ‹\õM^~ߨ‚Àˆ†@L( EU“ µ²ÓƒòÍ÷‘0üÒI Ãa¼tŠÑ…_;wl@Œ[®ßaÕï¤~õ4zt­–¯žVMèJϣŔDˆ˜W{Vó«SW󫽫õ«…*2ŸóOÔ'7åצ¯æÞ2VõcC¸K 3ÔË=hG½ bò .IFñ£*¿¹fžKoŒfÄ)¾<úrDCKå¨9Åð3A¬Œä!áÛÎ%Ûep»ÉÿšøßçtŽH ô/Ù#}êËö4ÌûÝ\À×.™f®Ž¯¨>4±«]– —Ðe¯–2瀦ՊÌ'ƒ 8¨BÞ´9T!ïÅ(äý®¹Yaúº—R+ܤ›Ù„Z®ÛžXÚ­äGLÓ“ý¿O L¥=ð„{‡¸ÅÛI(HèvÙ¹åvêLoöñ­6êC’²¶ZîhŸÆ†“~ ŸMÃO0쯻ßå˜9Ðü3Y¤ÈDä—&"ŽÖ!*MÀbUð'ÎÂÚþ燈sÙND!ÏOü‹¶I›‚. ¼‚ºû:gµK²$ƒ'6R§R„{êå‘íç#b:WahŽÆÐ< q¾"$yj/Ó¶&ä¬vYÖ)Ó+ëÜq°YúŒ°ôi$`OIûôuG]].gاJþ cÒ“•% ˆC/lJ?7¨Jªp/±‹?(Zð ™)Ð'Vªsp¸ Ï‚ƒ­é°|ÃR ½Gp¯°ä^¶÷¡€%±«šâ1øÕI’(ö½ø©µ)cW§X—XMP·-ÀºáÔJ¦ÆÒ³¢vl+©L†I­KÁj—a*ÂlŠWKý‡¿óa4<_yÆKÁjwJO¤Nh!ÄXǘ K¬¦Û 73ú³•¢f묩‘¡bû³êS—b4ƒŒ¹t5$öEL­UÙjDbXmH/ÎðñÞùç6É—LÜmJ2¨ÄK°ÊÕZ>óO!ž5 ææ¦èÅó„ÿiAjcDògÒ8.Dò)ÓØÈ’xˆ%ñ˜8J’Ç)Ž’S¡Ñ¼73#áñ@ÙÆ•rÍýü‰Äóêó•(Sa‰1?Õ²ûÊz]0㫳˜óR(e‚ò„ñ²³žp #“7G…&=4­üǤ%Ø Ê¿Â»Ð±)´uSO0 t‘Ø~úÑ”i‰\B½G6Ì€ÕeJ&†¥=þPï¼ ¬GUuœ—ƒ.Y"ÊœU¿9öÔ²*L´Zn í.[6Р »¡N‘¾í“ Êö¥ªÊü“ÜД~áùä^òc&ÆŒ žyJ?Á`€ï5@â:ïuß«¤qÞz½³•¿ñu¦òYº§B}ÏÐf¬–ù³Åÿ­ógYZe% ›ñ©.¡®Õ2>5pXã—Ë“µTNâ¦õ|êw¢^âçÓ¯ø9¢´Ã(Ôƒ¶çÁ:Táܤñ¿ BµAÃõ¢Çžù–d_Æ0Û«ŸØ[/ýGÿïUé?е£ukƒ@w½dDwO²Ñ¾KëЬ÷Œ ¹\†]¿:¾tZÕ›tÀݨè e£’4µ¤i7ívÄ¥Y7à¹ÀÔ:vÄ¥¹T4ƒI·qµ4é¶Ð×$I7ö#O‘…³I/»—?;Å›°‰šA½nßâ2Åý rM`ï-JÌB§Éø]wMJW‹Ã³D’صbËpÖ‹­ì»E£g aó÷Æ0û€Ü¦ÞC©´‡(SS x)¿“„DúÅâÒÞÏió­Z1ÜI7:±8‡£{îäÒCŽ}{:ñEz«-N®ƒ’¿÷¯n—£{™wj '!%¿ò["ü؉©rgYÌAï<2L­VQ`ûT‡îí#Uô|P°+"~_dµéioÇê•TQÓ¥ù,~ýÆÔ±KÿÅ-ë3µ«aEôÒtêÛjw¨&Û­‰ E Ü…ö4{Ú,–·º{e3BjI«‘CÊ<âc™EÝÏr/~)í¤jª¬¸¿nîŠØ0Î.^ ¼ê~1è%ç pÙXv³Îø_Ÿu›ü7¤dSÓØçÜIÖQÃÐQeãYKå<†ò+è0íà´J-h˜ŽÔ1\btŸü,ØnÕ,vü')c~–Ûl•ÊdC×ðuáf™êo+ӎ猬póù]jþš`uczÔ~ïVMzVK^щÔ+™Žl!ú÷»\Æn¨@~T•3?Jïçâ©ÝÀëï'ˆ/üû$Áš¥6éÓlFà®üÜ•aFèfÌ b¬Ë¶Ks΋‹wòX;?ãvYçm]­1‚N síqBwÐцÛ&sÄç?ã¶ÁÃâ{²úßÞC+­È¾+ŧ.ì A”¼!†5ol‘è§MÙw,<=Ê"_™5Ï:FÊ$§†Ø;#9-C'$¯\jnû#çðàÚ@zW»l§¹©£VŸA«^¥ßîŠ(9®O‘†-iý}Fï8gw ®ŽBØîÕf}cãöný-+Ç$“Ê\´AfÃòbÏE“åyØ_B1ö—}Lé`R¶5¤K ©«U~BÅÉü'ÃZf™ÓbƒÞXê š$%hħŠì&» Y»•`úôq«ôÎ’a•C«ã˜Ó‡DË!)æ2AÙ r1¬Ê^EP†5Íac#VOrA¶aÒñ[/l3¥¿'Å.¬)ÛßÈjGý'ÑÁˆ’ÊFlR™öqL—w¢cú‚áŒ20Ls#~$±ù%°úZ`$Y-]_·S†~@‡?=à’Á‰†Ëj^f“,}~Ò&Y=ú±÷&éPà Ÿ¸Û‰vÜ?Ù>škÙßÂÐì»TžÃ¦‚…¾nÚ—ààæQÛ¾Uûft–ûÆA½ ÆØ4õAõêõ"´=Øç>*¸ w~Lnœ"þ»¯¹wžVØ/“ä4 4)Aƒ2G½ÏW;qŸ˜„bÙ†Ð(å ¹æ|T9`Or`‡@'H3ž2Tq¦žbãÖo¢]„'}@QY4FK‡• lÈŒ6â´ bj<ꬋQaF¯CJüŠ¥k‡„b‰À¸<_Û"Äh¬•0ù•›üÇdår˜ž·Q/Ùg²RölÒ1‹¦UIš6ªhÚûßtÒ4±u*ô&­ùBÜMªòO¯/s £w/±mÒ^µIk¾ 7é]9æ&®Ž¿Im}Iã—ÍV4TJ×ØÎ«ÝJ‹Ö–‡aŒz¤oîµ[h£h£ÃÀj©C/ŸbºOë ‹µÂ©E*GCf’‡2 Õ ÙŸ2u÷ÂÔýYéñŽôš\mFêN*‚=© v½ÒùEx ÏÅÅßI+švÖQ³y÷{’¥LýìvÞVõ ù´Å„3ÁÙ6 <wûMi¼žs ^f8› ’T3¿ÙîQÜ2õ,Ä%¦qáÝJÒ¸ŒsÕig± “}YlelÄ+'Á+çŽ-:û•ýl³xÕ&3ZXu&kTå4£µÏ–´úÁd¹djØmAëðÁ<*œÓî’e5‡hç­ÓóĆä_¹Ü!Ÿ£`æHÌä=ïÇž/¶r Œ=tÖèýÿ‹ûÖ[ç°Ú:…'¥øçhû›˜§ÌÇR¹Õ”)0OC`vÝ ÷ê´6ÃÜðæ3¤“ÅæJè`×ðL<7Ä3¨ÍeeAÚO=µ9ÏWÿ–u¾:ëJÉ„:šø{'UBÔÆ¹Ê~´KÑÃåOãß;¡v·»b#ÀΗ¢&*éÐí&ñ Ã Ø­BµPù0’Óbãï>ŸÙxžfãyŠÿ÷qwÅçFZþù"w¹àóÛz—K`ñggÌF„÷â³ñu—ù‚’xâÜ&ä+½ñ™ñë;rïä½.¹A‚î¯ò.‡Ó|•3 *уßåç—¥ €Í_•åÝ«¿(óSª¾håÙðggžMÙ <øòŽö-—™ŽVqcD¦]yCx’¯ê‹*¥äI_éŽø¡æ‹úZòEJq™gœ?Q¡I˜|_¥¦ž•<¬ÍÁñ²g•Cö¬²Éžñ˜qµÅŒáœµÓO®ØÎÃâ}GKìÄ6é¶m©%ž|±ö{ÒÖÜ Y½õfY€X?¥”c÷Ñ:\E¾/ÂïS?î÷¤ŠWÔ¤ÅÙ ¯Æâå’¥Œýg·j”€gx4‘›•Þ¤V¶ÙÆï,ßC|ÿBtî7;oAç!Õy‹ê&2a‹Éž'U1?KôÞèÒ"/”9s¡•-͉¤jÑß?9“o>]XÔ;a1'íkv mãŸõ vRd$ƒ¼hÍ1&¯ŠÌLÁˆ$@çJ¤¶„·¿îƒ·¾çË ÖˆmÓ;Mú3“zwçŸÇ” 8[1I76I•‰‡Lª<'§žgecjÊXûŸš ?dB´>µsiØ[‰qSµ©+ÒÔkóô*m¤WÛ2´.ÏEK˜8SQuGĦ4Èš t°¬iµc* ²ªU0ædgðÖIFjw&ŸÅ‘ŽøÔH¥xC¯b$_Ÿ©œ ‘äõ ð¥_“,‚ZpÿŒ—„¦7òI’ИÅR‡~µïWÊñbôÍ•%Â\YÂZ_ª*áYÈLycÒš”±—¸m.fQafQú!fOü6zÅL =ߤÑÍp°0·3:w§2èæÉ€¨.­äw)%ÿ§GYÉï´ñËv礽qC›|Øw¹šÌqœ’ w™Ùæ'ƒS>¹´×ÖÝÏ DÓxri_¿{J¼„ `Fr`R /8èLgÄòqg^‘ۥ˵ý÷–ÔƒÍÙ¦csÚ”„prëThµ™.·Ènç¬9tY§ö$[aOqƒ®Ë2:8äžÏí}[ÛqUŒí·ÀvF­e÷„ѰrÄîì¾Ôrd7mÈVzéaÛÜ­å¾ÝÌÞ7ÿÔ^Ña(®ˆ=wì[É:~fÈ”¯÷bLÃZ¾öã±íaM19¼wfWL:”íTuÑ-˜}º „³g©-G!–ÙÇËZ"àIWD?N`àÈ f` }C$·†åIORÉa)ß?›?INw²bx;–¨ŠžXBnŸ£âÞj…‡$%DŸré‰,5Úý~u‹Ö­ã·¢à·¢ò8±?Ký1CPÀƒ,Ð%,€*CŸÎX<'ª á#H¦Qœï;o:T¨$®7¬õ§a¥?ý‡•ŸÂþ2ò/ã¹UFm2̨’aFõ£FŒÃKØüŽu –#XF¡¦Žÿ8ÁùÑ2çïà ñ«%=SýASщ‚ÎM(E'ª »¢/f×¶5'ÕÖœœýÖ<+˜®‘k¤ãÏŽéûUÆI…g¿ˆñ[¬Kä:p»ÕÇ9$"êįD)ó‡Aû§€"ÿÆô_±¥i°›Ã0î»Öõ#¦Ù´—x”Ø£Õn0 imv˜»£‡dÐÆv;îPþ‰«V³zÖ¸,îj/Hè¥Î¶£¬]êø‹Ãn“‘¦¯áSˆ¶ÆLKÎ\Ãûˆ;ñû²ÖHÄ¥Û •ËL]v|ä,Äk~Ø:„б3°ÊÀ ô€HÁ·ÂâÉôlš´ø´13mÙ=¹?+Ù6 ‚ dPúDÅ)žW•@g¬Q’HÖãŽÛQén†‹Þd¯‰Ooš<Ü*{Ao|X¶µlü`£ÇdÑ W35.8‡ÝC3’ ¾‡-v$c[“_LˆÐìØQ|bi܃!̓¸Ê}UB©Ø—m}ÁíO,‘ærykð —­8îhßkx ÖÀççû‚ãó;ú¨©(›î,«‹xdÀ¤”e3)I?pX†hqüÚÑA¸FÅÆI®ôç–ü3_¯j>0­@cZÄ´–õ1âÅÿ®±âÿùDNälÖßcÅï¸w¶^åˆÞ±’âÌ€u¤†3 ¦;& ÇnDŸÿo·>›Êëw;ÑN%ôEyØí 5MÓìë Áín+B’mù»"ðwYöv±1¤WéHh‚V–ë,תú,,×çÇnž×U[`ÏÜ}\ÛŽ£ìNÃŽ}ݧëT(ÔĪp:w%&\)ºv9ªÝOq>‹ÏF?˜ÿYD„C-ýˆÚ4qQ›™b$EkLŠV²ÆrÍ€¢m‰&1M‡´Sˆ¸å•$¼²{³LQµREÕ莀¬.ˆ=›RÍLžÜ”ñ¿Aýbz`öi®“ê3d–i–)RÙ"ј‡=´¥/ÉÌøe—ÀS›SƊݦ®>£=„_X>$•Ùª5‰Êô¿Á¸Š‡¥ËôWƒ”Õ(V+ÖÄ©9¤j4~ÍÌÅÛòMxÎnz Ï ÏÀóœ±Ò\ŸFÎÂQ‹f×Aº©_£Í)„mkâG!m™s˜”Ãp>0:hZ#ÅHþNƒoZã2¼F¨d{‡ÏqÊéÐ’AÆëI$nû”›õvjn‡ÔB´¨&!n’ìG[Ä-3ÄÛ ¡ Sgˆ{Ç>žbùÑJËaô³uå «—mÕã•Õ–Ô%]¹ ¾L¢2 œ+~¯'¾Yc*0‘5R[‰èWŽm!)±mÁýk[x«FI™ï§ HFuùŽQ@Ò¬ïdËW\Û‘zû(¯U$&õ6“†‘ñ¯p›©·•z«2(¢ïú/·‘6Áù)é÷,L*ù½3„Sƪ­W§„>Åìvfµ+Ìj?c˜ušªñÿ“U\œjW8ÕîÄ){"wl:åj ûÆÝq«-hl~%!6EØäHçæì7 #Ö€;0ݪ¥ä­kdBÅ‘¬Ö¤½S%k‡´nbÝ@ðŸOcþÂϱÇ-`§œámÔ‡kÒ¼«i¬G‡ñêüÔF»T¥yWJt%÷º-Óúûó¹Õ6“iu‚ùt)¦Õ©˜V—iIýÊh“ûÛxA¡>Û•‰ ó=xA¯zAzA¯~­µ$sQŒ7Z‘Câî$NN™²œ"#õwßÈ‘ú^Ÿ–jû2ˆšÝä’‰|TìQÜ™¾‘ñ)5:ù#·Ël y¼7ñ@é¢eŸ’)¢×Én¯³J¸ñgg ·¬ÄÈu2ª}ø:˜ ¹l8––¢Gž#ŽHÅpÖСƒäÌ€eàv—Û´° Ap;Þ»Æ\øa¼n7ÐiDwXwX1lºCæÎëñSUË!Õò ZNè–Æ9}×9êÿëE”#ÑØ?ÍøŽFýÿ!­0ÊIíÕ¿s¿ãêð1æ&)ÑìmréÔþìTÆG¡.ìn’Ûk°É¥àÀg›Å+ʯƒÐ{oO³Y¼&Ðá(wr¹‡1ô(ÖcjkÆó7Õ$óT…r8/èÿ`Ĉ`–b)èålûØ‹žþÁqþFW“KŸ¿qX“…Ã÷”&XSkçoLè›ÀŠMê›\sþ†TÀ¦ãJ)c¡¹üºiSlt50\< ª@aƒD,ºcÉŒñøtjƒaTJmPè‚ÌüýmÖ¯‘” I*ñMNà8jw1(ŠE‘•3ÀÛ›K÷ؼáÕ¯—eœe‚«iÆÞ#–%ˆT~Boˆ‚Ô>ë£ÏÞ¢ ·3¥FÖØv)M5©3‘´±o¦¢â‡âòï}Š{癉ԖƒfÉ,mÚ(0…JØAµWÉÅáv•F;{}P aÒ,„ᢸa&áóHo0&“©&C!L¦Fê"Âd5üSšê–â6¢ã­X‚˜æìc>އ8És²Þ„§y*Š4Ë}í‰d„î5!σ1<¦ov4–晿’­o(Áù•-ñœ³d‚ó‡¤È¶e*ymÒxƒxi–^Ϭ™¿0 ëÄø¯¸fºŠ,࣡öeI/ Ž(k"àåH›È°-š=¢"Òe“™÷„Á{œ¶Nâ=Á ÷âg×ÒH>™e d‡:ž¤®cW”» ¡[{¬ uð,”³Ö'8èïÌÐ!ñ /ol}$cSª]Ãg‘ÈlÜ3¡–¾±LĘ”3}’ù™þYñ‹À,~a’3\Ûçå²,êˆo>úeK5 Êêòýj«À࿦·a·×ô¶b Nµßˆ×ͶbòMiÆì›4üvL« Ÿ®Û 2ŸˆÎÊÊÓñèì zÒIè¬ožÚ¨!lT¯/úáf¢¶”-qžu<€€y.Í祆”ñ…†°O™v|z¯úí­yÓA{ã’Å<þæÙðW=!ÈoöÅÿòÿËÇÿ´LEâœÓ¾Ç;î9%¹t³äbÔëBö»ê‰žTìðéÚ×½}¨RFüó%§AÇÁMùáU*γc߉™e/OdÏI7{NŒAÏ„üŽÙø5Çþ+ùKF¼óíÉÖætÍT)že³´°’Ù¼ [Æ×v'¾ÒFæea¼ÎSíJâù£=ºGµëxýÑ.½B:E¿vÛCÚŸ:Ö*ñGaÔ~,hp`,­}-Q-ÄÇI40J5(×@ƒDª";vhËrqƒýÕù›[›— óRÕy‰ê¼Ô6±xae Vv,!k™ Çù–!hkžÀ#Ò²u²µ'KšòB*|kéñzÊfuÆô¤5Mrb›0¾ùÆòö·5Åçí劷S™ò2͆ËÀ†/{l¸HãLpæ½cÿ·Ju»R´;¬±…¶õ¿²M¯ÍÜqj®©Á’¶õÁcÃ:gìªT—‹úïÐÊIT.>M¦›š]ÑÀӨĬ7ØÎG¬j`D«€XYÝ ã+Bø)b3À *=ò+wÕ¾”á„=M·ÈñUéÙËîª5¨«ù¥›»¤–jÚv™ñ„û¤[§4ÀKßM²ÆÀÚ8Ӫôê1­k,³ƒ¨Ãœ•¨L·…xK"fhcƒ–Áø¹? ÏcdôÙ¼Ãtñ65XÛªÙ 9^ôŠS+fDÔ¡:~‹Ï³‚š’YÒoSôÄxš4[f±N’h”׌0PÄ#Y¡[@úÅ]O\±„ ‹ “z­‰_I¡«N8NGâˆW½vͪÝF;ï"Á‚Œfƽ·8 ÒbÛJd£~zªe'Ùª•èÒ*Iã ?ø`?âyžG’½{IÅ :´K¸8¸>¾pÑá"uü£:ÿÞ¶eªšeù å1¯!!%f èô|ÁÂuþEÀáó_ ÑJTð7Á¯®Nxû .›Æ­l„Íbà .ËF¸hi4e+°=¢‘ˆCÍ£hj°D‚0ëRÐj# òx×.ÑÑV›  +-§ÕÓ±9M zÕƒXiL EéG)ýHFâ djÅ|d3ë5 .mzl»Å¥M|·EÁøínîÈÅq'Ÿþ.8ôurç'kï±úN»Ó>A‘J Zš`.ÜR0—¯ÞÄBÆ}<¡vƒc34$ǾHÓnrìpìmŠcw(޽M¯Q“ñú¾LjÂL—íJÜrA¼•OË>'ºîm’ˆmÓœi[ƒ,!uRÛ{d„6¿²¿ö©ŒV:cÐò1- "ö?ð¼UM©½ßsS I¾çñE+­9{%Dw:„èNÛ‹¥.·¸omêx–Ž?íÐv7ú4¶"O§&? ²>õ6íÑç×4°®î–çûÁ?°å˜[Ö¹\Ñ«íʽÊEÕü{Œz´­T–×…ó«Ö¥Ü;¯þŽÝ;v'{ÏSÏ×ÁÇ­b°ÂüéËÇ¢b,bó<í²êÇQýRÉÈqN²~)¼¥J_†b9Ûp»·3#9/ݾh`ÃÂTq××zQ/>å´^TØÎŸŠôqni)ð]üe‰¿lñ—+þòÀ­Ê}ùâ¯àá9Íܲð‘LÜ-ަ„’8×R::6ÏmóOõÙêý×yLÊè¦<\!eì¡C<Γíå_ ̦d³ŠÛ††hh›~ ß÷3ž`˜`“˜`“˜`“˜`“Pô›|9â/Wü剿üèßy6Ý ü–Ül=úHµ³õHè£h“6p–6h“)ÞO[¤n\H…¡|­‹\ô©\€Áû¿Ç÷ŠÄèâ Œ”òïVÞÆcí!ò² û£¢?>·Bû»éà-#tNùœ0 9CçEs¢ÔÅ&J•nT(U¼Q¡ωP*ÇÃoËQvQüe‰¿lñ—+þò@>KÅÄJ}ðÄÊ}…¿w‹£xb½’`ŸÉ9ضEXÏ¡EÏáÓr[ˆ‡êðPÙI§“$§£ÌZ¬GS]ÜG±¸["Ú%ÑÝÒèžž`­Ü"^¹=†>gìW.ªñr©mé&õ´Î8퓆$‰žj9­¥|$U⨸kLûÅ[yÚŸÏÚ²–nRó+Ú¤æ÷¯Öü(’ît—õ]æ²&{<©<¿c_áù Æ_Ö”±—Ï0·­ê6=ëÈŒ³>U}—¹ªzÖÌz·’Æu‚ýî³ÈÒÝœwláÿYvpæjÖÞgšõi¬kfÜu½üfžõˆÚÁ2Ðt´!^\PêØó^؇ÑBkå¡•G•þ/~ç[¤pDµFÍ‚1Û×Z(¦dÇÄŠÛ{,qOÅnÃíNܶcÏ‚ÐRܺ¨FÂ1h䱚ýÚ¶ª*¡ÇîvHU¯’åa·ýD<·/í¡Ч]É_›øÐ:Ÿ„9yîß•§“»}©dc8Da'Ïy!phñQ’mÄ wÿÐåRbëàyÜtɲ–õ1†GƒXÛ±¶ bmÄÚ6µRM•G¿ÒÌk7ÑÀ®…ÝèOÈôC9gº-¾ók†“ýø°\Ž¿ú!rRöºX>G`ñRû15¦–¨£¬ãçEi÷mœXT¾'h0°=î°Ö$:¦AÆ ùTÝn¡U{H­óF¿µ9IÏ„"w aY”ÇÝó„Yã9=•vkî‰'”rº[YèÄBwk@ž^r 0Yx¼A!:݀ǣPÇ •çÒˆ°¼Í'¯>¬3sŒDö˜ÓŒQÔÄÍwÍ€#vÍz“X{µZ+'Í,#á,—…`ÒtoÍKë8ó´gQÛGõùûÔçºøV2FŠ•Þá ^Ÿ"ÔLجU¿ëF^u^´ØU§õªóʉUÿ(Õ_RË^ÞêÖË^ÚêN¸ìeâ7Zöj·ÌÏWð™Á#œ0rö4<Â(ŽU¨ÜEq+7Ï”Ðvh¦tÈ£qéøæ =Ù®-…>Æ]”‡yQï‹z›,Êd÷$Ëã"n—ñmö8xÅÚ|ÿ¸¬ßeøðŠÆ}d“î‘òßÀ€ÉR lÞ±wÏÑùg’˜|xAõMŠÝô¿ž|t#Ã|êÿÿøÌ†ÿŸüßãË×ÿÿüã/Žì^kQž3Ã?6Z=¢þqTû„¢ ²þÇ_3êÔ>i¯Ê­a²NÿÛSöšœ'TDߪØÒ´R¬w¹Ü=ÙåÒêüÙ¡îZËŒvIŒ=Hd„:>Û"ÔS׺\*.|„û¦`~ú°ëãLø³PÀvõ¿qI`X†x×R&Eµ{Ö"ªý›n+>WWsÀPhDTÍa­ÒßtE‡µ¼‹x~_–þ]Í>{-¯$½ŒBÓôïñË. «ÓcHƒèBl}—Ëöƒ ˜™p¥Q“’á—w»\½ñΖS©Ô\¸Rrá<•âæD@0¨ÈC‰$týØ[ å{‘9Ð(ôòUe°³Oµi#S•#PWKQ³V¢lµÂ¦Û[Ìl[å{¨[kJ¬ÓøÂ µ)ê¾s‡"¡6ñÕšoÐ6hÂC´nÐ ¶gЛ¾ø©µ)cïL1“|}x*×)zk[C]Ðâ¶ãE)ÑCq¼÷ZÔ3(‹7W󶇘jõžåÔ0äTs?kø°xxš>“vY.uŽ’iº-¯ÜiõkÍÐÚz%åÖkÔ–¡µ`Æhck陂´QKOŠš˜ò³½ Ò“.cVùe•wñ˪ïŠ÷²tTXg:hVìâKPÁn¦‚FÕ\¦ždî æ.Jý]‰GÛ€&M±MŠï²¶•ÀkßâÕuž0¶Ye¤2olãGY0ÊÀ0³`Ýõ$92½žâÂÓªËJ'M¥~­ ûÑ›q£ÿÔ¸îI8EY¤Ì%1E=&ƒÄ$že2pà蟅0¯ÓÌªŽ™ÕMçŒerý¬ãktËšµ2nñ‘£·X­Y³(Ä—*¹4Ã'„Æû\*|¸ºPjôÂË9f“âF,¨:bŒ¿y¯J6ýÄñÓHcE„q³hÌúªtäGG?Æ1·ü+ÇCË—z¢_ùGš»å˜›s;×üšiL±µ5 “±S[ü¼ë#æòç]Bgkb)¶B‚r—ÍÊ´BÙRúªÛLþ÷Cjh€Ô²VåÇI™0„÷7Á·ÅØGÂÖšÁÙ·žÄ>^k‰æ‰ 졵%3Ë¢vK („Uº8ààœ~ù" ¨S 1(KçË’aÍh€ÆVl[¥ •«J „4¶…0õ6-;µIAuô¸4ª¨Q„e?ƒF•iT K I¼D#Ì-³vDSJ_2ÿ¼}mü‚K¡!¶›br›î;”†¸ÍÆlÍÒß:F|­‘n„ŠÛd7õ Ó!:[b[ßxIøƒÀeí¬± u'0øÊ,Ç8߸¾ã¨“ÙšA]q>;ìÎÖùìÕ÷¹b+œÔ.>CEƒ„…®f5`UÖà4 Å>ÄøvyKj‰c#ߟ5¹&]Šú¾Û¨Œ ©´fU1‡K†gϤ†ûÌÎð¬ÊfiÚÄì΂V,»ãEVÇ$ÆÍHש졘ZŽ3ÕÀDK Šñ=‚gx:Y4NMs:•¾V;m%<êøýmºÝ6´KK¥â묭o˧húQ¢Ôo8Ja‚¿&,Ý NÐ4©µM/Hk7MßZ[Õ›RB-÷Gd†_ˆ¿c ½ £}z˜}‡Amæm8!ý«1œiRcä¤â`—œ°8˜,1—¨öà?Õ­¶¼£®u<Ì)P=Ï:m?ôóO²þµ fr¯à …ŸõóC fôIP3Ô·Oˆ1©ëøÍ^n|S•µgÓÑÿ.ô™uræt[6ÜÇ­ÏgI_§#“ '€ôI Çv9òŠÝNÉ\gÇ‘Ìu&ŽØÌxÕè$kÒ/ø!IÖº8Hò’¢“»iåd᎛Nš,l•øéßÚË „UÉ u²¬À2I·LU š³4¨FÃ%ƒÖI4ù”‘Ìè¤óƒ$f~03ƒ°ŸôE- qI“uñànvÁ/»N¯tÈ—ƒåÍ]'yxV•¾3¼r5¼ä™_Ùz€ÈRñ}Þ¹ëŒüà½ìº¬AžÖoå~ÎÃ2502×Éüà4G~0ö Í„Y” y©ØÅˆ_˜nˆ¿y˜`þ:ø "6Df›.T8\ 'ЧƒxŠ„ ü9¶r~ÀÿBÿ…Àÿ¯Œ›~†XªP$šISñ.¡¾¤â]¼ŠwIœø„Òu<™"À¤LÓrÀ£ð¨°èKˆÒÊt<³¥&'20—Ê.ö(x–?©&U'1|+µÀãc¡ “¬ÐèTˆÜñA¥U—êµ(ÅZ”éµ([­úhÊstüK¢U©¬ªðÜíí.3š¥Ýs›°¯fòDÈ÷Ó\M“®V]¬±,ð}_uKÝ”³ddµž—|qžW pìæ“àXfS/gó.ÔRói@·u˜O£ÉŒ9•àx²2ÛÑšÖœÊqvˆèœ9›lsjÐs’/oÔsjœÝœšÖ%<ŸÅoì›f¹oÞi3Xµ™š°cBëLêцÝâÌÂëÌ•·Ëm9g2y¶È‰îr˜¨mþ[kÌÖæÙ¦ ¸nX aÐÄ;JNÈÓRZô’Óé=’{Èåðîù}[×Å;»-eì¾yüº­òu<„§]mþN@i·ñrâBÄI{Ü{ůf¤šjqô6¢é-í™û™;ŒöDŒ“½é˜I½SX’sÖÖ£¨X‡FrP¿{ºÿמ ?#‚"7)c7¹ K¿q\˜º‡øyF(±!ÙÙ¡Ã/~Ôè7Y÷[ûT¦{çþHFY¥ŸÔÛæ âkñxÞíý~F8½C¡ä”ÃŒ>Îи<+wÙÝ…ó”GõšŒòšÜ4g,@1ì6“$‘B8Re̬çq†v¯#¿8UœƒSýN-æ¸N{^%"ÓÇèÂån;?êõEkµ­½í0o9Î C– mgB?!Ïtë§ÿ7Ét²W&5KöIšÔ.÷s­%Ýöß–Æ/>6¹Ž‹Í{Â¥âs5=õ0-l0Èä~¿‚.Â#úG“5ÞÔ>›ééö”áÄjÍq†!ŽjùÓyrÚA6!–ý)§$ ^f3¡7î„¢ÿ½ýO1é?ŽïÔí£ë¤éäsñ|Díº]»j·å¿Ù“±4‹ó¨ñc¼Ý(­c¥ëóJê\#q=âL×WGn8æŸÄäï¹Fdo¥æ²Ä_6¥²SòœøËœ{}á#²{x="9‘‰‰HîtF$‹÷s0ò"W3‡ ûZL!,9§u×¢)÷‰ÑYÙòöÑaT ¾|ñ¯ ÍRŒuŠHk¼b\_çl(nVÅ ›cêë¼µ’MºpÐ?^ΛV"gÍyj'לwKv„ô”šõ”ö[õ jðÐiÕ7˜+§h¯;sí‡y¾®õ®³YMhBOoDOï÷rz¡åÁÛõ(g@E|ô™§pàj÷ë>ù±À›ýo^rä—‹ÿ(0{ZüxÙ}B|tµº¹DV6‘mq»µ×—þ–ÃÜGÄ­QºÕÍÈ¥'+Š¡ÁGy 2ä*}…^êréz¢YYô½E 4ÏziÔ‡ð¸@Nzb^Ž\‰Çæ€"!W¢äË* ðË*à_­<®ZS.p¢Ð÷è|ŒÐ¨“ª“ª“ª“ª›±ÒGW­‘i=\ó¢XàÄÕÿÀÓK]o/ôÕSè«3¦ÐWoL¡¯n™±MÏf«žÍü»ôlêålZ\€›•­ò8ªr_˜bÂÙyÎîÑ·ëö(c|¥•òp*¬7ªÅ5ÑÏü=OÛ»>.MóŽýÞeåWŸ-Ò–{³Ú(Ù7ÿIéÀçþŽ'Ÿ¾>q~y¡ÛšÿÙ*Òóoºù¡ð2T3˜PÜÅ0íÿÓ͉j`Žh`þIÊ^-ø[žvæg*¶é•lQÓ+Ø¢¦ÇÓ«—Ók½èܬ¤n¸YwÒòHgެ¸>ÄÀÈZï²U{É}ʼnÝ4}4’2Xç.ãÉfǧ¡©c¿qq}¤³†ò9~5ñ,ÿŸ¶þWOÜ·þl×ÿòë6êþiêý Ï0'þÒžeR6ªg½wÆYŸùú_Dšè)’2KÔ³-ª¥%>2·!êÝ¢„£¼[”pt©%©”Ñ`HúI2>‘ý©‹SÉ–0¯uQÚñ‹Séð×IjÂë2,0@§ÝÅã Õâ—šÔM¦–>Áß.z™¾E|Wó·”Qúæ÷}’¿-øž+Ãs¿ÆsŸZïú“¤æÓÑÂõ|´pºx´}–ILѳ‘=Å™T?ãVn@èåë¹A¶h0|+7 ]‡ ÷àž£¯~ÀmÙêÙõ‡bAvy.°gñ>ôÈvv(oG ňT­WÅV®G Ø .ÿ®6]5€SU¨Ñ룺‡PO½Q¤Áz§ÿËžÚQÇ´ŽêÙrÌ4·ÈZnÂ6jÙ5õ  }ZÜ'ý[!tÆ€AÖ¬wI‡N ¦¤ý[ñB×ÖÛýã üž¡ëëí‘Fýî8ΰ¦õf´.}c—H“~Æt‰04T BíK™ò ÇÎÅ*„—~Q!¼Eõ Bx©uN¦hŠ­[ûR‰ûÅ‘PFß]®¿·Êò]Å}íþ7AL#–}ùF/{#<¶úUXL¸I°˜þ êEŒPÜH~„[Sp·f‚âõ7®—qùmÇqùجÛ5¨v{Ü‘—¡ó ¥È9è}Œw)”û#»‡[ÜF› J­¬}6Ol²áM.é–"y(úIª·èŸ _ÑÎþMÈëûÙÖùRUIso´úÓÉ.«Õl‰~õÉ\/Â~`žçÛÌ“èÔR?·ü4­‹¾ÿùf?wT‡ç]~•{ˆ‚ýR Á™shI?…¥X>îr®óçî*O¶ÎqT§™ Azüüëí\¿5h•Ç—±ÿ‘çVìóà°Zµž^w?Í^¯â$D‹Îyq–Q±/=úá{5öo9JG‰~¾uÑÔ7g1Cyhê’F`Ѳbf@ÞèØ?%ÔÙñA5>Úi½ x»qd“ô±¦ü€À\¬XæKMØñqª AÙóáËeüÕ’çÜû¬È:â‚TL®úŸ’Íýò(VÆ"f{Îø€Ÿgdʯÿc¼)Kÿv³žuózéßþö›Nÿ¶Ž/>;f˜ƒZ¾VòET© Z¸:¹38Òâ’#/,>Î%}N¢ÇªZ•ZàŠ~çÝ,B´/ˆwàÅž³)Gµ¨yæ·œÚø.žgúø¢ÊªôhµTß9GQ¥§ËlTIH²Ñ7JLªÔº€i åþÈqïùpàé«éMz่ï?ãi¼²d§¸»ÇŽùuâ×—Y˜¯KtÚbJÚ,ù@³Ò6+m•$Šó‘x bL‚*1‰«‡MFˆ;霼È~Xýíh–¸åhK o´ÓÜÖ­ŸŒ³­mÊÿJNŽ9fö §W¾uÁxöݾë#w¿HµHw^þáÇyo,ÙE¼Ø>„&1„yŸŒ_¡m×(s³qmenáj˜hw½]!4n}Y>刦¼ ¾¢Àñ«ÝO£úì/Žü2phñX€ªÏfDQj¨Üd¢òï/eT'2¡¼p6Á)½e'NqËž2i:ñNžçVþaLë$á°[ˆÛ§•`áT¤¢ÿw%ô©‰k¯}о’=¸¯¬sëõ=ΓiJ!â±\<çI.º³Š¬wDC¿&0x¸(¶pÀe¥¢Kñ“….!~æÊSÖá&˜ ªN¯R®™>>Ân/¢i?\¬_4jö"EHerÍ^Þ<ŠgÓnÝx‚ós¡¢z}x‰ ŸÑÏYý»Û⹪"î3ºn6‹Þe=¹ál H‹Þe¼nb¿òvòº!¸¦>YøJX¼:cñ>­‹£uÙ<ÛöõÜí%ãzÝÞ4Öí+gvÝ^½D¿ùT×-vѾoufFèw8¹ êïâgoœ?¶ „óþ ¢‘ŽÓï„ÛµÞ’Ÿøq¨.Í¡¸/ÍÒbV>[IÏF¾‡-ˆr=¨> µáZßýºÖ7Á€k}Sjæ¯äÛ\ëÛ&Ò{•îñ)Þ—+aÖ†èɃ& 7ŒtNìÒ1nI•ÓB"žÅèÉT‚ —L“-J¸?a²2K©Øõqf]B`ؾe{²*XO#©ˆ°¬ÄÐH¶ô'+‘!bºšw·M\@˜œ.A†–‘Ø¿Ô^œÌ9¹mj–'³*ŽÏ®8Ùœ±%Ñ?‹|åpU%m'áþØããñ¸?IWÞÅãþ‹ª•ô‡Ž·lOúpÜîO¹÷F{>jô¹¥?éÌÉ<–Á¢÷DèOoy"õÃè’ÁÀ!wàéþã—y~ñ!¶s]–q›/¤ÞÆt/7(•ÒC*]£éY~Hâ³ ÈDÆX¯´ú©sÑ–klt›­øç'èÍ‚s¶ÆÛ”¼âUòJóqâá>æáå œâ¯P¥.ŠþÍ…8So½Ë„[ª^;õÕà…øë+â.›<ºµÉ£[™<þ8Ç4";ƒ«_2¬¼MI†e·ÅH† [G>é~&pT‰‡Gg)ÊXKK<<'ý%‡Ï¦xØs›;o;Ëâáh&ü[oÏoêÒú{—Òß¿xT×'—,‹ ý¶õ*W+#JùñA¡ŒH“§Q_Äf†’žØC>í™®?ÀÜs)~´Ì£ûýÒúHßFü{]M–ÏޝK8ä5¹dñõ²ˆÃ·>ÇÆ8¥š¶P!_T\àªv”RÛñ ®g5± É%ÕļN@;ú±/±Q/çÄF§þUþöéæ÷gùö§dß³0u¿—¢ÿñ·Ébdœß¯ÆÅÍ;¤ ¹Cš<3Ñ?ucUOàé²)uh½LÿILV÷Ù±º¤î¦•Wçú»N+<Ø‹»ÅÑœ‡cÞœ‘ŸgV‹© *-¦4xvµ˜ëáP·Ùi17m²â÷µ@l³WÌBþc†~çìEàõ¡Xñ÷?¬ŽâG×Õ(ônfgÍvŸ‹SçÎì+gSs…”26ü(c/¿';zRe즆Ó»õÖ{NïþÊêÈT»ÆU»RÆ~}Ѓ¦Â…Â5¡ºˆ*I|↶µéoÿgi[»>4mkRé¿Fa¢¿p…+…ü>:ÙkO‚o~¯Îñî†Ú€Ú{¯ªó¹&ñÓ”ñ“!jÍžke»:u’Wõ¹+Á^ôK§á ¼ê>öçºJe¤=㨜c#žsãÔ#/%z= SJÏ8© 4c¯RaÁù§¬‹b?¼O]!WbsÁ[ÑEãvGªíû ΘªJ"–ºƒøV`×–Bè>¡Ò97Gž[¼5Ћ*C’y-( I Tâ´O!S«ÀIï3i ÔùöjÊüËzi2p‰s+¦œ­|6ÄQ>…&$þ åó/’ãÞ¢ò™ü~0±ò9©•ÏÉõ²¾áoÞ€ýôϦv(Þ|ÙÖÐÙÕ?Kæ#ÅïÏ¢ºZ•pu8t–õϪyÈøsèŸZÿœPúgù”¡FcõÏ.:MGÃçWbB­)×ݹ0U€ÃÕÈsžÇ’B÷"Ás^#(›B·‚höPzQËBÙìÃA4!<ÔÏÓÅ}kUÇB8Y „“/¿ncP*î%xWˆµ‹Õ4¤°oA#ßËws³t±‘» X—›gH·ÄȨAÚCó.oI à^QMHLÂϤq»IZZ;¨"Ÿ2: ä 2;øf.Ù¼Aä|Ö›sÐ —|\ q)Æ¥—2\*p©Â¥—z\qiÂÛh@¤¯¾0é «n—XûÓ”Ž-Áø1FȆY¤ï=‰3.% 㥻âËÃAm`%ü²ž»ÛøÀR} ’‹¡ä ‰"(¬Ãæ®/¥"4Xªè±?¡@4èûÈÊ·Ê¥æct†y< N~¼iC›ŒŸzërüs4‚ÆÁ…v9ž.äaó‹ãÊñ_´:kÉj´‡Ñw3ƒÄ¾¿¥¼ˆ¸Ñ÷ó·/!nô.+053èC`êA[`j~£˜zY£˜úÁF30õoÍÀÔ‚F30uY#º8ö†®F`%¾7òÒ@¸š>Ux(ö¥cÝ(éBƇfFßþv÷[Üî¶]+qÃÜî ëy»wcå'Ôƒc·ûo“ëÞèÒ±ho,yͶm”ò‡.6 ‡bËÂÌXOV@ŒIBù̇‚Z$¡Ô˜¢ ±çO2eØcžû/'ž?y,I÷ˆúY™³e}á¯Oǯ/|&ã–.1¤ ¡eC¢˜!‰ÊÍQñH.ô#Øø_ã,“ ³2¦H ³BUãY”޶œp³„Dß³|¼² þšÏúFo¤Oì' ¾É%RJ ÎØy¶Ú:g™Á¥dPúDš !È$³‡'¼eásâö¬B •ý¯PùD…ÑÖã<õÊF6Èqaa׿¹‰˜ÜÇ&¶Ø½J{ϱ-.ÕÞÇ4¿è>ždö}<Ï¿±c…»¼”b·º}UÜœÿíñ9cwѧœsWc×û›o‘PQcƒ¹Ê¶ïLXVÛþfq¾ Ç:¾DîMnø‡l‰ ÔUŽ¡+rCG0Ê.<óT|ù4=_‚ÛôÝôm;Õ)rÒÅ1{)úöi^þºFG%ññ¡Yw» †*gê89o'€N‡N—ã”n6¸Êó+ؼAW6o¤&Y>ÍX%§ðF_{CíTë¿R¼v Oý«36BÔh–ZÓ(å_“ÏÙ«¶ñÓh]ß¿šç{=°¶2rJ£u¶ÆFÙç|[÷–ÐÆÌÀ¨ài•ŽÂÆr˜ƒµ%‰Uà(cd>Fb L=ŒšSQš°‘™i$# ÅœF3¦áWÓhVÓðëip,®’ž[°y!=GmÒs‹MzؤçÛlÒsДžCž‡ =OؤçMznµIÏ·Û¤ç;lÒs›MzþªSzn±¤ç”žÜ”9”εI™ÜûWbsáàt®>µ‘UJÛzÐ13úû¹c M­ ŽÓ˜ ÚEa/“øeJ›y%Mcû!É3œfÈÕGéü†s/wŸaW³ÁÉgQä™S)HR–° Iá ’Q™Ó¼õh„Ôq£(úå#L$ Ûýr+Ý9djšËeò>0ÊeÕÆ¾Jnz!)ÌóˆÆmzóÇΰ>µÜuBºÌä/Œ6¾Î€Ø Ò+ù}Ä)¤§Œ½–zeòïv€ƒ·+þÝa3ðLæ¥f9=æ¥ÞLªÆxUpSÇ>"^Žós¶IУº0èE—~·èe]öeóœEþlsþzðù”m\“‡yºaãâ¤Á£KÆè|ݘØÛ(L­ÊµUG}k¼òÅ&×Öå‹•s+Ï‚c½óùñáeÍÚ¨~Ì칬U SéñõfÍÞ3¬¹™ì½ì½3{ÏŒËÞŸ|MwÆì½K³÷.ÅÞƒ½wÚé× -¯”XËöë¾iدÛ5ÚÈÃI¤ ì‡¹4g“µÀŒK7IsÉE޾|~’¹ã…(ìįnçf·¹7,{ÊÏ.¡²Ã­Pꊄðd…´4°ç-Küe“냜â/Wü%¤àŠ–W|=.[!î˜BÝ1…"1…:e!ÀˆÂ‘Õ[Úâ¡õ6òKR¯Ð@¤b Þ+4é£h“Ž64´t´É@}l]´@w²¡)Ã*Gi呃1þCëÃîdó}·ïàƒ¦1?ú ßœÀe—Ãò8©%YÙßHø± ž†\ËøñI!í<|>ˆÊÈ"ÆÅIø@¨ö4Ð=ò4Px†!-Ñ ò4ˆ HçÇùÊ¢ëß2çÇ0¤ýR†—›Qe3T겤úÝc¢zLtÆDm0&î Ì7hLJIÙ¼m|3ŒËVl09‚H‡õêv4èÀ¥—n\zqéÃe—!\†qÅ%ŠË$.‡ñ¶ô~¬IJ¢M_/wC'$å¶»Aybè;UÃÀmÍ<¸ŠÛš9¤âvî¥|;‹Œµ@Ï"삌u>F•W;åfؤÅ\l`e´g¥ûC¯Ê¹QÀn¢‘ÏójÈ"w}žJjH§Ò²œmÚàá¤a‰Õ™7ös—´¿µØÃïѧÅ}›ûfé=ÏŘ¢°ÿMÙì¹Lûß{7˜ö¿¿Ú`ÚÿþzƒaÿËÃ4&!ÑNÛìyLûßû6˜ö¿÷o0íØ`Úÿò7˜ö¿Ë68ì< XÇøí³òžï}õ­î¤?÷ü 6¸Nê=ïtý)½ço³vªÞsU*ÆðÈotŸðŸgjtÎÜ ýç_ùŸê?ßÿkž\áÓ^´ÁåôŸç¹-ÿyÑ—eŸ+Æ-Ù`Ùçøè¦áœ8;_K…NôS61¥ÿTF¿*¨ì¤XÖ·Ç0·pÛÎä4Œþè0âI1ö”lVÜÔlÅåyvc³.OŸ f©¹øb¯°Þ°+íœ¸ÚÆR$¬°!Ål¸Ö„GyÂeØRÊ•¿¦;\N'î!D°çRy"`ÈæÄÕ–,×÷!ÞÀ’ÅúäS؉[¾Á¥¸¯ÂmIbnÿ(·Q$ÁÊ ÒÎßÉmTiG°Yx¿¬ÙØû÷Ë–0;'îáo¼%'î_¸ÿöé¼òUþòü·°†vúþÛßí×±¢R“ôÊ ÒÀ†·Â†b¦ÿ¶Ú)BÚý·Õ&׃ë×( ®;e >CþÛü¯›þÛzlÄ8þÛzs ˜F£šFƒšF£ž†ÍÛæ0ùÍ5ߔߚlòÛ6ùí&›ü¶Ù”ßš!¿¹ B{æ›ò[³M~û²M~»Ù&¿m±Éo~›üv‹S~k²ä·f)¿aÿí»/úËóßþ“ïÿºÿ¶‰…ír+ÝMÿmƒæüÚ‹}•Üô6ÿm]1Ó<Öó}F<æš~_*¸&Ý´©‚/ŸàSŒ#ŸçV¡D¨6ô¹{Û°{ÃJƒãïœ1È"ŽƒG²‰,0!*qœÉ&ªø±Ìݾ¾T¡^âYíSe¢ýP˜ãÓ­ëº$³wIïHåÎäWw«*S¬J0ñst÷±$9AÌ'ÜÏsìØ‘g?OÆ2UAÜ.ìT ¥ªÉ—.Ö…C"5q|ÌL$ )ŸŒ¶m“Á3EÑŸ¾6ôø°^Úðy~Úýúü4ô6ÇúJÀiŸpv t;tÊx3K'ð ~±_>Ï3Œl°»ì"1.»HŒË®3Æe'O@[T.»\ßi íCZ;X›ë">ï÷Mã]ú÷ùf.™¸day±¢¿y…j©þIA`L©xïy¼†t+ˆ:)ˆîQR÷<—L âçý|C&qÇb»ž«¶kÝöYúÅ~ŠÝ™ ¿X‰áóy¡x`Kg›n±éói·X6Üb>‡[¬ë6·áëßÄÍ\zoc{£@Ÿø¦Þ<€ƒ¸ á2ŒË(.q™Àå0.Ó¸x‚|ñâ’KfßF"·Xåïá¹Â¥Üb©phxá`Ðn1‡;V1™tÜÎÀm-g\qÜbù/8Üb—¾ Ýb€ÝàË-ÆŸ¥[Œ?ǺÅRƈdœ5ØÝ'/‰Ø#f÷M?ô,ïÁÝbÑï|ŠƒâøÁê~lnÊúóÍ\qi‚©›ZÒ¦¼ú÷î·æéðMž]ÿ×¶–÷ikùýgÁÿµ„{&ÿ×þІ?‡ÿ«ø]`öåÿºÿ,ø¿4û¿† {Y|ûgŸËÊñ9/u39ÎñZ9že št+ˆšœÓ="çÔä\>O7$9–ä\{¯¾Û;KïÕoAÒÑÌ;ßô^ývƒé½úÝÓ{õû ¦÷*ºÁô^m°¼W>Ìù>ßÌÅ%œï·€Jþ÷-ïUâRŒK).å¸TàR…K .õ¸4âÒŒK .!¼Í'ùlðWgÇ{Õu‡ÚÛî8ÓÞ«~Á¨5±á/Ý{õWè¤Sê?+Þ«þÝúe§ç½j´:Šï½:¼Aû,ÿÕa»}2ÿÕ°}zƒÓåÚˆš0x6Jí‡nÇ÷_Ñ/x1?æg`¢O§à¿JÝÈ-2!&¦Ûìô›eÿ˜»Ñ´ÌÛhÚ?æo4ìÞÜW6!Ãfÿðn4í 6šö·m4íiMûGúFÓþ±p£ÃþÁ³€u€ß>+ÿUÆð_°ÿê÷OÁºÑõ濺ÚØó_Ô}ÂuX;ÿ÷_]„Éen4ýWY]3ù¯²6º,ÿU6¶¨o£å¿â[d¥›ÿ üWGŸ`åF<)Æúdú¯xÞÿüW©˜pîFË•ŒIBœµÿÊä1rRñûWÜ,hmt%ð_ñ/Êð–¿‘û)Ø( ‰üÌævûSú¯ò­*šÿ‹üWo€;{ã_žÿjÍ=´Ó÷_½ËêŒ ZB)Øh÷_åÛPÌô_mœÑUdbp10¸Dap±Âà’SÆà3ä¿¢$(ËUŠÇUjN£ Ó(WÓ(SÓ(×Ó°ù¯*Àr ¿eÚä· ›üöY›üö9›üö/¦üV ù-ò[–M~«´ÉoŸ·Éoÿj“ß®±ÉoU6ùm¹S~«°ä·J)¿aÿÕ¿%ýåù¯¾>÷ÿºÿÊý8‰j…íår+ÝMÿU™æüÚ…}•Üô6ÿU±Öìþ«É'‘ºŸ ;/Ý$“Kš„¢—üÖm®Šâ†Pq 6gˆe°9C ߥ §á A)ébŠÿÿC¯f# ÉÙ.˜3¤G$H©å Ã#RnyDBðˆ”jÈ#íÀ@S}q v«®U$…Sö™H¢0:¯ÃÀuŠS$&Å)“âÔ“âÔ+Sœ^ºK»šN6¬ø)Nêüçâèõ½<¾zƒýP}pUu»Ñë@¤¹A“f®"þ'I°´W×½øqÇ£<µÆ.]O7~‚åM7é¢-8OM|6Ͻ§õÔ5¹Èzã)Øhn޵Ñì}Dwd M „„ M&wmwõ«.šwõŸ²ßY³ö”…„OÖ›BB‹¡îK!áj -æ4B˜F›šFHM£-¾†P!!Û&$„mBÂ7lBÂ7mB·L!a+„„"¬¢Ï&$lµ ß¶ ß± ÿn"6!á»N!!l [Ï€Ç"tù1Uì¾ß^+×Zv} §*ra!Á®ßÕ™™ªîlˆå{¥^Æ–RšÏ8V:Ÿ¥ª®üy·ûì™=f!5¼p¦¤†YšUˆl)Ò\@ì'ºë!¸Ûú·i©¡MI ¿‡Ô²K )ª¾ _‹þ2>âoñÍù!¢/ÏWUú˱£'N(ºmœA¤âó èŽöÃT›‘°ÔaZy¶av*}i›2ñtÚIÓ,C_lü$qè˳:ôåy }Á;Ä]GèËó­ÿÜEëU¦ÖK†¾ìyá/ ô¥·›Ñ¡ ¦S/mçFY¿ŠB_¨¾¶cQÏZÐË»ÎDЋ%ç½ôcäúo<“‘/¿ºët#_êÄЊ0´ž3*Éýöt%9 tí"™ Ó™Ígf³¸ã‚ËIÍ#Ÿ™ÒhkÏ\ÐP †Ö»€  Û|¦[&Á¥—83ÃÒ™yÿFÐЈH Ï1‚†J™4¨úÅ9ˆ¢v–³YÆ•žç’ÎæÈ tC:›¹3v(ïÎYƽ‘%±CåFìPb‡ÊáÏ5c‡ÊeìPžŽÊEìPž#v(/hÆå#Œ§—BhyrEA+v¨ Jp)Ã¥—*\ªq©Ã¥—&\ü¸„p ã²o˃NÍÞÁ;¸Ñ¥b‡b«D!ÁèØ¡(nOà¶V&p{·µ:0¹ñ,ÄM=èˆúýƒ2vè0`7µ±CÙä«ÜˆØ¡ ’m6"v(õeþgÆ­»Ÿ·ã´˜KôsïM?ä·Åµ b(„K.aÄùeüÐÛv¼Åø¡ýˆàéð6qëèZ?0vʦuÃÄÞ°¢_wòš¸6%+zÕuÊêÛTXQUÛŸ7¬è¥{ †ñ¤Àë2µ¾ÛH­÷Ž=•fÑw‰mCiøY8ÛD¼;™ógÿÍ­ËKM‘ÞݯÊö/ÞGñ âÌt‚)ÞË5Šó¤|ÿÆV´ÞZ· &V!QŠÏ¢Ý@-ÿ2HÕÝâaŠÇw–±$Cµ\γä 3Y‹•y=áKµz_—½èf.ÊYd£èf ìÞýÑ3¤ËQKŸ ï÷¥ ø±m+ïò¥SÈ év[»‰T½ý ›x\Ý36!Ôv¿¦o?ðÆ¾¢“aÂSÃûvxEüí;&F0ú€qÎi¼ôñ :×;wU‘$ïÃ.íö!—¹ry±+GÞFð/µzX6ê† *úw…æê¢5ÎösÏþÚ§2Ý;÷G2š[ÜØ±Ü„Ùuá&—Ô)éÓâ>±ºb“À£ñ@2_ãA>ærÇ?ËõU;™$/u˜a°Û`i˜¿ÛÊyDZf%<š›ª,L.Å€‹‹²MRó¦Û²‰Ÿ#”d|B©~a) S¦ñ³Œñsóöq#Ð*Ôjù8ýÁÒÊæ)¡¸–cD¹óñbX Ã^D¿¥=´hìEŸæo½;Ó?ó·”—`gúÌ&EÙtöU`ùó!Šr—íÇcxìû,[ð2^÷9¼n¯û¼îWx®ÏýÏ}~+6]y}â•< xºùíðts|I…¥†ËʲFQX²‚Û†º}UŽ…­Òp擪$*ÈŠrÕ›ô¶ âŸVY­Ÿ‘%ç”Ý)Y«ÿ‚*Éû„ÏnXûR¦ûEù9‰p˜QÄî'Èh~€; Å„ 8:â÷TµpZ¿n;6 ¯øÑ5YÍ!¤&WÊ¡³çïɷ챦ÅûÃyóv¨Ú$ë×ý^ç·¨öÒQ„í€ÖEªßÑi«_ì µ«åYe2Ú¢f“˶ÃPŠ1e¬6…[ÕlÒûÈ﫪ÖoRùU›ä*ÕÛ¶Ÿ…¼qÏBsÄP ˆ³e„ Çr6í’ÌRÁ2gÈÜHì“ÍÑ©ÊZJú]Ÿå!Ìü¼®PIòTæx*çŒ-öP}4ü®áÒ¸4m²êS6*Ð4Ù8(ÜbÊÇ aŒªGÙqàCœ`|ˆpàCŒ1Ö<í.ë^~ï^—Ýõë¹—Î2›§Ï]’p$~!È’†ög¥[§± ãL+¶›%=í–b¸“í«hmå3n'¾l|ÆSHš!Ìø%k$MZÅ·* ¬§ËŠávé¦E®$M—D²Ð‘ gNC–äD±X$Æ,‰‡û³Üãf§~ &Ä£ I9g¥äƒŠR•PjNÛ&û-mšS+Ø´#𽈨ðSQ̰¢˜a= jªjŽR‡ÆD& &¹ci“ôc’OPÑÐI:íl;•ߤ)zÈJî÷ï-ù7í4H#J‘Æ‘“ÆýgêåYéDÊÎ5È,½fuM6ÛÐnÎØ‘m³Ñcv±é†MªÃLØßmÛÛ²¿×ëe¬ß$íﻎö÷:½PÚþÎ*Í:¥R*Ë!èt$] @YJ) C_!ÿЉ˜¬¥¹¦G¿ãqkm¨7~"ìë‚q»ëûf]~ë„á &c ˜x‹¾ª”·/¥êY1/¯.nÆÐ,,Ó³Rí¶)Õ~o›Rí£³VíœGµÏ=©jÎw‘¯šHµ?r6UûН*Õ¾ä«JµžÕ^ƒ!¡jïŠ ©u“q¾ï©L2íõ+ht¦œYhØŒh½‹î–†µÄN:žx|ûûÃé¸[Íþw¸êh™ãxVaNýšš˜ëk1{k‡0§ãnqôcßá‰u(M¨dsŸm›â#ŒÁ‹¿MRJp:¡‡t©.ø;qÇ.­ýÅD9ƒêœF<‰4Å0€.+ûš:˹økò,çn Ûy˜³<Žõ”sæ¸R± ¢~þ«MÜ‹/‰Šzÿ§ËRIÈù™ ¡/ûöxE½}…͵õ–U¹]·»fW•û¦­zp§ôú™¸A¯ï³:W?´eÒmí仵—\¡¶lœÿšñüÏD¿U#|H!¼Ì1¨Tç"#æ=–bUÓŽGÛÔáŸ:xýãß‚Óo“K«$ÈLùKg¦°Œ›‰˶Å.K­SüìƒOëÉçɾHg²&‡±–ó‡É£}¼Ñ¿©f†ñûÃJÃp†¥ÝúY±–±áF_°:ãíÙ¥¥œ.%å| RN§Ã¼bíXÑßÅE‹þz3 e%Ur£»ZXrHmqÈÉÑ[Ý* '…ŸžÕ.i(¢O|ðÙçêî«å$»Wó{ʪtíÕm«Õ€éËo¾ï?Aù5îOè«™lш4ÿ‘z"Ñw#] M÷FŸ¶u ªömœ†À?‘DÚx#C¸ùF—]·ª¢ûžy¤E¬Öý'¹ã BˆôÎãg]8;Õv¶hC°•Ìš‡E=7íúúxzi7úè-⓪Oˆ»ü|'žÿ­¸û‡Àq÷YïWÄ+‚ø|d¢x4kн+è¹€,׸\Ë7§Œå¸]F´²9x¬!w熃¬Jñ,²ÜboÊø¸³x>á,<ï «÷ó¶^Æ#‘úlÐë¦:‚.ÛsSÒø§­ Iƒ’Ûp'Á‡¦[“ˆÑ i"Ò³é«z‹ûΫ~S(Iã.ìÈ4ö w?{â…9+ÕÖ¡O¼u.ýÞ:™+åÖñ­ä­“½RùW¨´ûJ…îôIlž¹c¥—?!ã{<+åþI_ÉûÇ»Ò.¿‰¯TT†> gîXèòy¿orõ.ØÌô &ÿS+ìχ}ujØôI {îØõÈçC¾Ñ:9ôh½ú§ü8R§ÆOŸxü·ž¯Ç?T'Ç?\Ç㯼Æ9þÝujüô‰Ç¿-S{'ý¬ü9à>=à¾: ç 2νÜÕ–íɤCÕ)jªÇ×¥ÆçúŸál9?Xdq¼Ä.[V¦¥™GdÓÑâZŽŸ!k‹d˜hu››^Èñ6Åì»wÆUwÆÄU÷"ÞÆx›b_&UY¦; F a‘êõ5©z¥¼ÿ{âS±F }qFÄ#Iôn— .ßq’â$TÝä GÞó ‘7Ý2ò&ûëR?LÉü:-§uÁ»î–Ñ.³d²Xh¥\ WzÔ®å)¬SºõÏVÙ½ØTv«ÕdU~])» qg¾b±¦š%þ²Å_®øK4£w«•ÜîN$áýìlÎi›žS»ž/Ð[Ÿ“^¥†V7Ó?õF²§¨Ñ÷Âö!lú¾Ï7pÄe7Œ%Ô’"_λ›eÜëØ#ü«KçzåŠIÿWAÀ=¬ö"TÂÛH;b+¶ÂÚÒñcFÚ⻸ómhI…’ö‚–ô¸ÍýûÅ»A½*ZÁ*/¬&zÉ–)zk¾:Ä&Îã2x)òÿw9Ý x QþôöM=Žu‰˜ÆØ%Bð¡¾TBI{Ÿ¦DXZQ„!µ# Ó%Ÿ~Pz½dJv@#¿‡ûòûöÊrj÷ò‡νßwÌñæå+ j¶9ίfû,CWV@©ü:i7à9ŒÒm=€g:2Â{Ñr²‰!Ò‡–ô¸ "©?Hâ½+&%&IìÑD;°r…òX‰ûùME€}Óqßù#·®Ÿ@ÎÔÛcׯNÌ+…7ˆ ±ºû+@ž Å x[`¿CË)@ -É”N–ÛœkõÎɵ*ÞäÄÜ9ãåìÿeË¡`±X¯ÂMü®Q¬Wê]<ªƒ(”— ¼ˆ¢åˆ³PÞC]ò]¥÷ÅâE‹¬U1B±VNÜ¿žúòHù` Þ‰b}æõa zë*%X­Ý7òHK±ZÅÿ怊·ËX!œ°1ÎOãžÏ‘r- Ÿ¬ÅvÝ Ö¢ oÝ–<Ã!´ta}÷¢%‰õ¢å0Zî…}v-û°¾£h™ ˜DËš&î3Š–-íÜç„Ä„ cÏ¿ë¹ç]uîü.{„×]<µªEɬmN5è0° ç^~ÏZÒ¶÷èFÿ¹SÛ!k€.{–.8(Ĺ-G oL[…äþaÝcľӿÂAȘ»AÈ\HEÃ!4Ô†ÿ!ÜÞ‹ÛÚðOß[S¦!ãûZ/šüº4¦´ß#U’“þán-Âd±ØN*Iî’ö£ÔåPÑ=tÝ2Uxãܱ0½çk ‚jÝÎ9ŸNç|”p<„†{Ñ0³gÄSþ>ËcÁY·k¹Y Æ{ilÒL@àþò±ô·¹\›SÆ>âvéQz}*ö—¾FOüžÖO-èÂÀßÑ M|]º6Xp»y”ƒ¥Vx–X*©ìÆt†Ð0Ñ,•WmÑÝ÷œTÜ÷‘æv±ÿ%ößøe7…5ýðkvqXÓ½÷pXÓ>þ–Òy‡5½ÈßÜw‡C½„AÒÄÜŠ5üç¿‹Í“:>g\m¡2±}*Äö©üòmŒŸüöËÔž}l‚Ǹ]6çO _Ûéêv5n×à¶ÆðÜ®Ãm +úÞº`ð¥t÷Ý#Õ¥UÐgUz’¢â©©ŠQg©;ÙêN®ºc9¾´÷Ór½wŠ£ïlFð-†Øà˜gn7:æÙˆÛMŽy6áv³cžÍçnù¬[\’Z>›”öÐ?&·|ŠªÀµ€Zj—M´üÛ$JùV Í—>—y¢ô7a‚sZYû/˜J<ÆÅàÝ|?U `©üù’ÿÞ¼60ve`ç‘¿ ¼°ä£Göv¹_#»6v§Ÿ.ƒß>òFÚ;– ®½<ˆ)$ÁþKN°·&Å-2¸úyq‹º÷|ì›·;Ár}Á^ÿ&Num‘‹õXú»]ä—óF³ª—㢠wCeë‚>,µ'øiJ²æåX·]Kžs?äÈÐâì­##Q¹/7úü’\A"æŸàD~¼¬Y¾ŒßÓ}‹`.8`†ØÂ™b g}y€`;3Ôü®£&_€!U­£ÕOM{,cÁòª‹Å5wÑÁ?^L9¼ZǽŸøÃ?^œxfËÝ·üWÚí?¦n^ IÐÞX²}ËvwÃìÿµ‡Ò7 ;Ü­Þâ¶èîµf´õpAÉ'¶ô»·l÷~™ÜéK%ü\äúàù©ÜϤ=vkN®P(¯ˆnyÒ½åçž-po—úößÀ§ |ÏötùÆ ´%ê–CK»c½UßLÀ,OÀ,_À¬@À¬P’=>…î¸øÉ‡ÔùYÊÆFL¥(<ì£^lâV@QÆzõao¦FŸú,›ïùû?øÃÕi¡cÔìØå)’qèþ!r*Ò‡qòbÜ+Eƒµ¹ØøN¯PØ>ñêÀRÛć%;ÉMMP…þæ~ny6-´Ú ·¶ yZÔ+ŒÆýi+žè’äÊØ($uS÷´ÀíÔ½ÎO£‡néK ý;†z£Ô4jÄèàrïS{YïÍQk¹H±ÖŠ4´ ¡åZ¶I¸vò£”öD²C43À[1:TÃ=L`¯­-¦°0zpáå…{<À1‰`% ÑÜÓ3[žô?3øô„ø Ðëê͇¬ùшŠ$î|<íŽÂ\‰¦ÇŠch›«$ŒÒîøY¿½K>ß…)Ñ"])+íŽÊãì•”]q ¯1ÿ½oÏ’=äM¤§Þ¾lgCJ´~J´Ùㄟ'“rgÚÿMYŒßõ¿~7 6)!hôBÝÙXƒƒâó#™4•°/*>?šBŠˆoâBn:‰Ëa\¦p™ÆÅ•Å.©¸xqi¸{o¤3)=âkŸc?± öèÁK .!\Úp ã’žÅed16eÒ¥Û—…—dãâÃ%—\\òpÉÇ¥—Bùç£KÄ—s!÷™‹÷åá’K.…¸áRŒÇK.ä!•âñ2üVŽK.•¸TáRK .u¸Ôã²}F$¼š)×w Á6\:qéÂ¥—\zqéÃe—A\vã2„Ë^\†q‘³¤‹é@º+Ã¥— \*q©Â¥—\견àN±ä8žxq–UD…î‹ïŸø;넼¶åçnÁt6ÿŽè¿|J†æŠá {¬@üÝâ³ÊÙŸ$dsI¿¨!ioOjךñedg<ÁwA1’CxHL^ ðs÷//$÷úZÄ ƒŸœ¤@Ç&ºÿ I?ˆ=ýÞŠÏ/¡§aOá;ø%ôJ°,úD>>º±ÒhùSé{Q…&æEŸÒ˜Wãð-ì›ZmûŒ†¢ £¥5óXAN}  N©€Ó€‡GE?‹V. ÐÍVÏm€ìÓ,?&ã±-}ÄϚ鵿pÿœlBôñI÷ ÁON>1iàlî㹑(Ї ê)âÅ öô–W葞ó5bÎrf âO2j´®ÓØ꜠A„:éF‰ ¿¡ó+e¥j¹ºÍY 5â%ô©œ9³OLQ†ÙÍw!:¥ú=ìy§ú¢¿ü¬ ¼w:‰ðL’çÇØø'ˆÔ;@²¬|&.—ˆË/P‡ã”팭CT¦UR.AãÞÁ߸3e¾“8zóV~WÞEûZÕVíyêÁ¥¢—ܤÍ-&Í3 ûFŃ^¾çÕªä›!Þø 9†ðïþNìþስ $màüÇ”aÙ9¥Œ}æ[¼Â²RWã®ó¹£© -y) .Ž€ w‚ ‡™ “„Þ=çÔç;zŸC½RrTe2æ$ ÁhKíða–a*\=,nÞþÉÞìô5@¡ð„tL‘"ØãŒ\ƒ$ê‰ïKúA;©… æc°íô}…ÎmâãÒ†/pÞû œô§Ònß‚~#ü+n‰ve;1CAl<Žƒ óÜÏ%Gx:­ç’¹Õ#Ÿ¤=ľâ'Ÿ£l‰ ™;Ѷ⒇ܯÓ ¯¿J"¡ÝÃtƒ¶ Gìôò¸é0 qùmØ¥ÜqÚãîÿ¦-O´æaú#º§¥¢x£n_—‡¹kLÑ›%_ÛÍ?ð?!>]\2¹¥E ýöDÿïæˆûM4¿×hûÑMÎ6à·ïs¿è>–¬wr5Ûï~s)d7½“ú%¹)eTŠ¢­ ·‚:Tƒ¨S÷Tʉ‰+ƒ‰NÔqk:ë©aV‡¢M0ŽÌS¤˜•$ëýøÜ÷šJ;™z€h3÷à’J«"KZôC›Ì(5^3:ý£è¤Ö,‚5£uÜåÞ#`I@ZÚ ÊØ‹ä+÷QÁìiµÄ…¦Ø:—²¿üjW2a{â_¬s.rçbñ"¥IÐì§‚XÔ¥ £â…# g^{”ñD\¼~Y…Ä4¦Pç“ä-¤Œ& 5“(¢þxàe®Ö”KùãÒ^žjÚÇÜGÝzáöÜútr7ÏD’÷1÷vñVþñØ­„úô£›„§f`/u'å#É_‰/Íc¾ÔúÉ." ­ç™KúMäòã—÷R*;¯Z²eKW-sÿ…Ù³\uhéôØ–'Ó)#†°ð ÷Ê:£›cDYXƒ¢Ò„{`I”Ò§å¨lþ&–5HEi²ÐrK©_5:xw'ã%â‹•®†ì#‘™v]2]â»x²G¨‡GtΛBƒÈó…–!;õ°:1¬v-µãÛxXnIÖ‚ gx¤Dµå·û†˜§ÏOä/—L T2Oš\s$%þ«?ˆFŸv¥=–µècË/N%íÌcÅ…dãU%½üj¹Tty(™[…ÑŠÉ5áD¢áé×¥ø5ðsZÁÿBýj>`Ÿ,;òl[qIGLÒ˜DfÒýWHüñp$1Qô ôAÞ²ÛÅCYU_=Ä݉]œ®!”S‚Õgb³7¢QAϼ[úÒnÉEáœlý ‹œ-…Þ›´l0­Uº\½Ê‡@ßÅ{Àò¨B}$a2ƒ>CÕU ïäâô¸P\:nè{뢢ÿ.€|ßÏæ+³…½ðYôrTŽ.€<ðââèÆ/±—7$–*‰äB3ÉBÐ8é£P>”!†H)–Oe’ÀL$(°)ßw²‘ÙóGd wat¬ÆíŠîý=—íÊ`n/‡…½0‹w:€Ö;ðŒ R$í \&1Xÿè~EP"ÜåEÊ}‡ÊXmKæŽÒçð·¾¹ cJzigÀ&®G—Ø‚âÅ¢YaÞc2ˆžwh7ø3Ø‘d“¡“<éÑDY¼@jÅ.ØÎ†[y’Œ#ÉŒ†{/´sü£þõV uaLà\*} ævÁd‘ŠŒ$ëèÃbšú$†zH2.JO–G»X½]ê—b„Ÿ§àNƈąßþsÉ¡ƒŸ{´á:Š\§!P0°TŠF"v$…'÷ò0‚ž4¢Iž´¥0HP"ú…ªØ¨5˜i½š©`3AiäÈO_$šóH~AºW‹ä[žp S„W¬iZ1Ó´ÿ'hºƒt–0‘MJ m˜Ãð÷í'È|⑊½œ9Qd5º~¢ÒÉ&—'}+Ë(yD.¥À/^CÆ:ÁÛú’yJ…–”8.„–MÁ"Í¥=.î ˆ'“J^_•Rj’ &óÈ|ŠzúA=C.¹Ü-É–dNBû°2_”‘·gK?ÊmÉ4=RG:“-£†Ô6tD¿-]2w맦Éþ›¬e¿¯;YRÆ$JÑìI–lÀ&.}¸ÐìØ²Á’`ú)$Iny"]XšÕÎÆ…[îØ²#]ŠI¤A&[òBˆ9ä».©3´žÃµ®žä\žËxôP0)ð‘ið—ûÑ-Þ¹;Y÷LFÖd…?ôió×)ÿ7evP™€Ý˜ç£ìÆ®ÕÌK£SŸ² [õ’¬í~ô7¤öóÞdý^®p²\×añaÉ Xz#j„>To¬] WŒó¼d;ã¬.E«jüZ 2C)ê8‘Á$gùÀ·*²¯áñAÈ CZo¡d ¼§Þ c†”J-Š’\0’de¯Û§Ñ‰Ê¶P}|e>(N¶äGÓjósJš“X˜\*À¥z©27'[høs÷/ÏHÔ ¦?=±lÏÚs©Ü ¡Ì“Òäô»ñl¢"ÉJT+ôÒîøÁñ'Æ/ß²ƒÄÏ |f%«ûÓë`™*ltG ÜÃ{)ý<ñ8-$:ZŽ1:êÍŠ5xss²VHèµøa'>] Ã8 :YŠØ’ËKË2º¥¯á“AÝS gå.ªÑEî½SCf©žsÉ™LÙ* çD—ŽŠüs× Ôè2 N£w?wà—4c‰Æ‰µÙy[]»Šì>%Kç½3Ô?êiÍh ú3¦iý¡^ÁáÇÿÝ^î§a½û‡y-¾-ëÇïMV²44zÕËìŸÙ¦7hôN,6‘ZV˘ýû16¬ÅPîý©Ûa_–{,S*-ò-}7•‰Žévà¹À˳Ÿì[r4ð AÍX~UöÉp'M,9ÿ¥ç§*û$‰Ä”‡1|6dýñó#ÙÌõmÆpÏ}uŸ=?uÙdÃ%ÊþðbëÁèGhÿS˜Å]Á£  )†ãb`êes˜7)a0Ig˜ÜxXt´€¼°´`š}‡ùÇß½&~LᡘY#í±üßá¼TÊZ"=ãDÚíç¿]ô~,%'Š|›-€YÄ7IüîEì¤6H¤~¨þg|â×3R¿Üò_nòÂyØËxûÖ…ŒŠ-ŠÁF±CÐæ&°´mI–w'1V`÷ñÜÕaßï>rYa«G±&4ÞLoëNŸHµz´ø¤ZIä˜ÂãÃ`†{Ù‹i· §ÇpëÚ•w(êÆ:ÙZòH²e>n'*›Ž=IÖ=?Í»7­Ä…º$b«<í"²Ê§ô½"ôŽ'Ý/¤=vÇOÿËß„vÃYM)d§[ë•#åïAŒó`þí<”àÌA h2Í[ñŸá“à—{}Ñ\em!O’ ×ðžzvò‰if[’¹p“´þ–g. àƒ$µ×éS Ûß+šŒ§Ò´Ä&xAH›4@ôºMŸ6·ÛÜ~ …_™tÃZÈ Â”+ôGq›ß .¢œiw$¥18gT9Ús!£VÏͤ1aEe‡à èn„¢?/æÉ´2ã<2&i2BJ/¾uJ-ß"øÅ·mrrø6ˆwtàohÁnðm+Zn÷0¾u'Yj´˜)¾µã[aQ™L2JÂ%)ͽÛw8H Yòªø­%É„•ê™ÏPéüƤf:qS©IýÃK¦Ø,øCÿï’-§4±'âû¤ió;ýu)°Ú0F…¼´Ã¿}äh«÷~¡úftð’PD›ï‰Tâj? HùH)IŒr¼ŽÞùAÕÙ·ÅMZÒ#oâÂBÔû×­·1ao[²CLžfˆäO{b&ØBx{"@›’$¹oÆÏ~Ž;‰Üµ`±BX‚ê %oÃ(iñ—JÏf7LGì¡ $)KMmÛѶÔ€œ·ÐT«-ºÐ¢-z̽â‹éW¡|ôˆ¯/‰Î'–LbuÆ—ÂÿJ¥vþ(è-¯àpàþß$'Kc– VI*~΢t/8W°–h”×Ó†dÌ]\:qéM2·Ù×ðÉr‚K'.ÜÎ;×þQkí§±ö´ÿÁ»’ôH€Û‘*rÚÕ$qÉøÇ$%±IqžÖÓ€±ÖØ|siÑ´à‘Œý ³5Ú6É:IJª¢OiwDIjý¾©Ä«À/Òˆ’SŒ@<”ìYJÒc ï[#0ÁWú<ª‚Š ú?G] '[ãq,[ãa}4øÒ{Α—ÔHbº±Äe8í™)¾¼ä™´ñà½Ð¦˜cJª–ìù+’kâ§“¸±ÝM•tªRèüÇJ‹’,C{çÙ›>”÷ž‘ú “†ÖŒûÝ/ *0 uæ–—“Í­þ+ÙÖ†?í iéZõ¥O›o“ÃØáM67îVhï†h@2©S¡'™€]êI–Èš‘,ÏAfµCÊã­ÞCr~aK?Å@Ñ_$w²ˆÐfÕ×½¢SJà“ZÏЖú´ù~‡@Å4T¨sO'k’Ê|¶œ> ö&·z[²ð¸ÀÄþßÍYBŽî|tÀB }/à& ݺn,j‘‰ »Ûï+¡Žø2“-…3“×RIvPw³H `é@Í´­/ýÚê¹-Oˆ}ÜÊà úÔÚ”èΧySä€ÚO{tÁpˆØI¹ôäÁZ3¾*¾æaóåãu<Ÿâ… SÀT™Ír)Ï"I˜Ÿ3.âñ[fz ÊÃ(1Ý„7 ¿¯”ÛLîÿõœ%ÄôÊèÆ“K¦HÁ"÷¯Å«Œ¶Ò#ö@¿{(°#9„’óƒ˜oeó[™v“<tJŸe˜¯V¹{+P\äçe~´Á0(ÁơܶÀ+ 2~@¦4½ó–§nüP`LÍ’Öf°ýQÆÔ—¦Šª4xÅÖ@ÿ‘}Ol•ú‡ ÖÝ€ –”.ãÍJRiYhN’Ò‚±°ŒGP3Y~磖ۈñØ]Z¢Á 'ð4é9ÉPH,½dH?;„—æémŸÇï(zlÙúÕÙ|»åU~u™Þqe|û¾C'¸~P…6`T€ÒmÕÏo冇0t­ù—C-KÕöžT¶÷|ð¿~B?>Á÷ýlDdnˆ>½‹q¿M»»¥IgR›•&¹§óô#$ÒÁŒHæ¢@ÒãR×ë+:Ÿi{:‚K‹Ïg>A7mÕß¹†7ÓÏ: Å ¦f1q»c7p»¾ó͸²ó™·ÐMÒ±©\† RØ…æ® Ì`1ÏàUðdsJ†ˆFмè3¬ø„‹^`öNI ÑhÞŒæÅhîGïͶ޽Ôüï娩A/ ¶½¾Ú„„N¢NFÒ+ms[¼Ð–¶iC{S‹ :á•ðP¢$Á¨´ž0QR0’ß^}ÎL>zï÷õÿüõCΜsöÙµ×Z{íµÖ^kyO'M–u~æ¨ö0ÈéÿÈ`Jàðbè‘‚öµŸˆ-Ø–ÈŸQy2Ö®Ë:œ À}ÃIÞH±u½\¶ öÇ/½ÂSs øMÁøº(*B‰XÁù„x²Û¸ÚCÆû“úÑðNÄM¸¬Ï­ŸpQ-»"8ŽLîkßÕ~²3?›ow™Yy<Ök·üû¡î|î­}Ð7pñ‡«¶êÛý©nûË·H¶YçoÜŽAÏß Å¡Á‰=[ jd/;ÇBýÏ'…$U{NÍ@×j„-* És(¢ÆÔaÛ$ähÛè‚߀2×ÏP82†zÅ}Ê!¿öܨ],KÑ.RY£àª¾šhh(û \ÕgPÅÄGÛR›"î`"À–À2¿é–G?èäâð@„žQ«#ÇB{9v3I“å~/íKý>ó‰8QOdÖª²—«çQí)ªÖ‡Ïû™¥w ¾ž"!&=>îÔj§’_ÞGûe?Êxž=†d!#Ê›v²pÀÌt¥ët°Ti³½ ¢„ÉP â[LD‘ù}r–X3Œmˆ}×ÅÇqÁrËWaö™“DÊzÁY+2}#f±Ü5DN/«v ’À©GBâ‹Ð9&ewdJ`]øÐ¯HqTÆð3[nGþN_ŠIäáÔ rÀÂ_;òõ9¬>kšûpš/aGvÚdº‡ZÔƒœÊr_Œ¿lþ®ã‚ó+´BˆíC†Í$Tñûé~p$ .Ãößó@™óð\°Añ[ºáù üûT>3ÃVÍgAù>*Ÿ e8J§ÊœƒçBF =g§èš1ºæ­ò¡¤JÔ÷êÝg€ÁÌ?…RN@L$\±a=Ý &~’Ïãöï:¤»W…%r›•w‰*¿ 'xyN'³¤t÷-m+o#c~ƺuv6c  )=”J‘ij€VÿE–ð¿*ŸÛeNïåðÍà NÞ›nóÄ' ))¸*šº¡º%¬;¾æ ® ³ÂÐîޜȨìü+ÜßV.%pÃÉÓÈm«u:| "©¥[IÓã‚|`Ù¦¾Tûâûœ¸»i¥¤“ý棑¢6MD|€Ý€½ÔÛdZÄWG–,ù)!ú—Fãð;l«ŽÛBÏÓìÑ8"|‹§ýª(Ü9²:©M¦öœ¯øW'¯vƒ¾d -¿EJrÍ¢E\³¹ò³X+ÜC\4óá­ýý(7gƒ[Ä;bóÿþyûüb¤Áü)·Y@UõýTf©Ô¸ƒöU0IÉSU`(|BÅe4ߟ H`¤°[|UÞCs›¨%tˆ}|ŽCúö¥Ãö@= 5y æ˜qÉ3aVŒµôxFÁ¥}:m˜p´4Ô»è´]Ð’M¡“Väa%!ª-›,/Úôòaß“„A€'¼1seÕHs,6Wy ¢õ*¶vI£®4¾ÂÇÆW°I*`?~‚m°¯J,”2·F.ŸNžç Åïç²:©ŸÆ5¦©¡|¨upåø¦DÂÈÉ•Àɾ˜’Ÿá XVÌþ$úýUýpÎ9ýe9Îäú#êŸÄþ Ƭ7ÔÊ–hÌ1©^„rRõeüЇHÛÖ(£†ƒô+UhÓ ]*ûn[þá&Ç®:9xè/èÇsWÓO¶Z ¹æ»à.înçdÞUO[£ñ¤ÑXC{¢Râµw_å6/êíªn>]ƺ¬m•تÂÆ¬k3Ö%øë-p’YTÓ“·_«1³Ðž{ »Ê¢H·æ­ Nx/h5Ï“ûC5‘rÆúÞ«³L¢ÊAuñd„•jt]‰°6õYUíT"ô؆Leì‘´“·Å&ÛE„Ñð´#ãhþ'Ic s‚¤ær›‡¦!m¬`Š òWƒòðëP2fM³ô›‹¨‘ Ą̂£úÝÜüZ ’1v›ý°_m6«]—LÜ…G°˜)¯åEO¢N1R™¨BLÔ\~Ö÷l)Í\º…¡7¼-¹Ã—È)¼À ‹DÈB—<à„ߤ†&ÉõÖ)$*ËY”Ä?ácéÏ•MP‡‹ÌŸTþÝTVËFM˜³-$½ù圶¿ÆV Àh¸ÔˆºÂ¨VÒ†Š|¼µp®@q/H™2¦cÏŸ¤žEEWƒ¢i䵆®ë¸~¸ùupã€6p¦lÕ|åžd‚o2¸ÔŠA]´y€aYrZ#–}©’ B®i$"Õ¡óè£å $À ØY›Éø»˜U\ò>èd ”Hp³bÁ™t~' ¤gu†ËƤƒ5¼œs\?$6,òlîNJò·”Êúþià¹ú>d¸¼l4l¶öÔxÝ1¯e[˜Ðe1©€›YçÓªsX´Üí¿{W”˜$¨\õmb jê”JÇ.§Ü|±Þ>âÉ—üsp/qæ=1q.ÖÜ6ùª sjS-º¥Ö6Á¨ôÅ (JZQ;Qã\>Ó aç‡Í6¿ÅòG’¤¾ºêÍ;©U?o¦}]:!178H¨S¤í4êOÆl†Ýjm=‚×ãƒÄµ¡ãiQ"¼vl§¥Îê¤þt¡>[Ñùúb‘QŒ, ¤ BËBä.IÎ_S’4«IoFÁg ‹¼6íWÍá×”šÚã[ï+5»µê|§õ'0AcâAµœº–j½Dƒß+µÑ%4ûÕ¨“-ŠhxE¤æíK‰“j˜O]Âá)Yõ}BH‡ÞòT@  ÚörÍ ±åuk¯=;¤þôÔ«ëí[r“ƒÛ­Í¯§GÔ­.2ÁÖÁw–¶zœL7äks Lw£F`¼6®ÿ¢çØÕÕÕ0•bT ¡Ùpf‹UÚ;ÄÏFÉÝÞBë|XV#Z®nšD^)>¤Úª› áøTʵ¿ªåróò¹˜: ¡H¨…ºÄËüòS£$ýzj«vŸG9°È©"šLÔ™" jCÄù&¥/qJV•Ÿ4¥-T,4bS à϶ðŠ †»”šv­¦Tº­ÔbÙ~­v¥ÏÞÛ¹A4™:ÄBÍȘ•0k(a(˜“éø"nÛáLŸD/Ú—ô—€::H‘&Èðp¨’ºÖ<7TJ™ÓxËï(V§´ðZAìî‰ñý¸j.oR°ãïÚ4ÌÆzÚü¡q±YåfÁOÕâìäì¡~kŸV ðDñK“yÑb&ƒëiÑ[,ILu¸…}D!žc‹bTܯá1P0ÛÉc ‘ÙÕ˜èki°á éÚHL޼޸vG¦P*’µNBcùj$ ”eÆ/‡4 Ib.Xd%‡n!÷øQÅZªñEÄ“jy%é¬Fû€«èøÝ»Zy1Pl·i°QÈýJ“bŸ¹ß¬àüÂà—o†AõˆøJ]™Ä2ãsu/ômMÀ^…­võNôBz¿Ðüw'Z¸¡7ϺQ/£Ü} •ºÒÉóg¬ž4~:4÷_.2’Á±7¸¬VkãÓkàæP'c:‘Ãùà±µ¡3:Ýéo‡ §ÿ·¹—73(:™üi›€_•:H|Š:6Ï„~"*ëôÛ à^^6Y5ÑG+PÚÒ/ƒ `ÔR2„_P€•|ËëBT‘&Ÿ(}µ>Œâ‡Îó°3È»„>ÝHŸ6YTÐä´P.Üœ-Qt5â2[N|¦½ä£º’ɧŽãë!ÙbæI4¯’jŽ dxÖo£(zA4à»ä CÍ[Ë&èoëgô^¹Í¥•ž?kØì±–ù¿ë'mAçŸÙc²dQhÎ-y¤¨æMÒ,A?à k­Sš70Ö:“B¦½Jæ’Kûùhµ?¡\O’ò¡µ´ð’;ÍËʽ›hÊEµƒ€õŠò"ó8ã`o5ÑÐåÀâv"‹;z÷§äøXc@àªP4šiFÕo9§•Vý>1©±+ˆãXj~<ÍØbág„’IA'ÐãIôØ: ÷‘´ÖßRÀÆquŒ©G|X<] ž"¸øC><,XpADG?¤þ±R:©´™´#¾Y'á° ¤ô’©`(¥Wå²×EæX±½Œ{õÃ.kbXü_kg-Íé‹Ù +Õ!A[¥Ò²ëq \ØöËÈK!Ádª®Êo8¥ëA\ú!ãû€æ•wo>ò<ÍtYâxVê–¡”ªÇe٠᨜dy/%Dé~PÒ¹{0Ò1ˆjjv…Æ Áõà ¨C~ Á™³ÆêÕ ]†íô©ýggβxΤöWÒ¿ôÚð°VÎçµòFZ+ç˵r”>&‘™Ï"³lbB¾¤Uñ†1)–Û€oµÚJ¤bª€íØ>9@õAllúÊþxô¥9yýgúàm<@ó[,s4!B°NÆ`×¥5k -ô[A"M8D\f›Þ&¦ä…í´}§ò"ë·pjÃ~î jb¿Š3¢ìAø§tû€ Dè¨+¥_°Yw‚%©c³×½RG‡¹7Ïô‹éªù*H¸æÏÎôëÛÎáoac³x2’Žð ÁHœ t,q +®(2âWt–O§ï5Š÷‚ƒøÉ! û°¢OÉó·xØmŠM §Û@}÷Z÷:-ùžN)¨Ý4bNU¶N¿@³d}¸Ô)#Ý*eŽØQ|•ì=ËSÐ)õnAÑŽÛUžTCóYów\qò6ˆàµíyxDJuDáÍí úš]å¹ßU)ÀYˆïV#Ëf—gÅÔkU8ÅŸÎå ]cPYLµ-¦S鿦=Xò*®¶®ˆo¹rœÉÛ¯AE²p\ì\ï!Ð*B…!0-¡åNi•fù|kÿ!·Œúpš…Ô¤ùIö@ÅAöÀïÒN5¦h:úÒQçàð†#•À‹Ôö“}§ùM ,9gö(ïñª,æ»2H6Èm•J6êdë¹½7Y/üàQl eHì/ú É–0O#øîhhžÙcÙÚÆç9’ÔÄfà2Zg[¼`‡Ø;h‡ZåL–@„üN#û+üÒåÎ ý–÷[i–õ®+ͽ»\5»–ÝŠ›sÕ*¼í9ÆD<´O? ú靖 iý+–ÆÔ^^lâJå>ŠÿÆ[¤$³œ„è²Û¸w‚èP¿XõöKm €â)xQÙÉS 5~­ÏVå×I8¹Pù=`¶Ù?ßšmpYFÚ†r•µ§ð¢I,°K!BIÕS€ÂŽ©'‰>¹Lª„ƒøëË€h7nÒÐ{°c*Ì:èTaoê"ùTR÷ëiPáãà™P¤SùZhƒw–ë{¿ÞGÔÝÃÌ2 ý)Hz­WIšºµHÖNÏî°z*+•¡,ß ­<ç&Å Nö ÊËÆã eDÔçÄרd5Ž*—÷ÊøVÿòˆ;Ý€{ v½£Gogp˜/pÕ‡¡ŸyOüH üê}ÙðÔÄ‘£¶ ¡º4ABÞZ|¾#kéŒ`ù¶VßzzÖgÂ_(´ËCˆŠÜáÂ/mÕk´5‹¦æ,ÍÖé—ø°k‚MOÁ°Îâ]uÈ»N¿ŸÊ»À*?pÕFAHÆ·ä j’ƒ0x2‰,n pÊ-w\O–¦¥¥Ìl’–lËyf„8$‡íƒvL¶då\²­WKGÛÕ´ic;þŒ•áNÌKgX¼µæ@ðòPâ1¿LòfEb·²ƒÐrÁÀÞ¼YŸä3Œ= ¾ˆaéãý¦OÈ2Ý«kËÂŽ˜D¶YÖn+ w[¾w“íÿ=Ëë¡ tÝôœçÞ¤{_§óÓxŸÏ#Z£‚MNø¬+4Ržœ„Ýw¾ŽL_&ÒB#)0=•îΛÁ—熄FÒ–Jw_÷::ûŒ¥é¶Âª%‰~< ã /È××N¥:`[-nP¾¹í·˜7_ÏJÚ5§æ öãLs¾àÁ!oÊ¥O ÌË?©8L瓨ÿ¹ÀÓü>,>4x%tÛÊîb¨¥“aÁYJòJðy“¾HÇd™\rßÓw *Šæ9„ p ù†7Ó7=t‰ÂÅÌg—AlOpZÊæ „-›©v,ŽÜÛiikå6Ú‰À[±Þæ.ˆ²_޻ˣ·(û„x…Žf¯6¿éTÎê”ýcOƒ«`œ†i§þ€ïã½<Ê!ñ øé!CîrØ2¸KËm‘Þë©/Ð^^wp8!Ë;º"0»òUÉ` ”¹èWtþEBq­Ã:=,kƒGyÿ ªy1üþ-ù=<7ý¾ßHâÐzêDqŸs†<›úÉÑ‹c7¯¥Â …„Ï:C—+»íL»]h¯ÃÚ ÃzAäuÀ ¿7#Œ%_„(`ÈlÃWK†õ昰8pоØí³À`ÜÇÂh&0Ïx"OÔn7 h#Üá º¨}˜™ì÷©­z„40í…숨­z‹ €ià®z –¿dŒÎ€8¦„­ùŒµŒŽ3q Bäڪϊ¯·¸¨ òPßä@`”|39%c,IÄÇ|"—. ©ÞÍ.“M`ÐR>E-ö&!bÏ)GªÅõ[ºj¾Þ Y‹ƒäöNOg‰-í¿àédöåïhwzŠàÝÇ0ƒke•a ðØý‘ÛŠ¯ŸÂžgSH•ƒ÷.èÅ©‡„hç]yFîŠJýKÐ9w“;î_œŒýr]b‹/cË ^ÐÝr^^Ök3?[ñy8êZÒ,™!ðoIec]ÄÊdaq"ÌUÀí“ï!Æ`mó'Ù]Z*{³PfŽ_拉Àš]Eþ…®ÿ"™¢àeŠŒ”.8H‡Ö8»×Š”<«òm£Ô¿0¼,\ñWÄEtr)tri哿nVìÇHáX–6ÊÞúrS¹‰QÛ@îÏÖWãOÁŽ ôÃ.Mò›Û<(nÿ;÷[TDpxé1Ñ?£`̽àÓ=âçìÊ“GQ ú¬lçü¦æ;y}Ø<`þ±—+YŒŒ}oŰ—J…îB¹¾ ¨Ð¸ üKžö0À \‹}²;!Ñ»¢' Ã;=CÛUî_¤'\D¶èÔŽM}¯Wk\Ú«¼+¸†ÀŸ™ü#ôêRê¬D\D£‹¹ ñvI!´]ù¸(°æJå¹Z o–j«æ‘N«M„àŒ‹§1©'Y=FP]ª½âçŒÊ“lßÝ&@ìBEÁÊ©nò›Ù>ÜCÁê hLéx-–Öµa¤»c׫ݱöÒC„·—_¤¢‹äa`Íñê/iwdßËÒÏhûrÞÓ¯0Võ÷µÆ»³µÆï¹sþ)~yrâðVkœãÎ9$~eŠ-sûGJÇaÉ%¢ýR+©ŒÑì=]óVÅ|öFüýêÿTƒÕ´ÊP\@7Ÿ˜çþœf¥YßÓüÞ5g^º¶Í0PÌ·Y3ÕéÀ‰$ŸAIÈ#Y/Üb5á‘>.R æ<&ä ùˆžýìL &ªÓMè¸Îù;À|n$J{D-Ú xIL÷Š'^Ú²ùGJê(¸Äš© ôœµøw2ïÂß¡ eLÄ [ †,™’J±©øÝO§±d Àf‹~ñY,ðOÿ&I}f¾yƒh³S ÁϾ4Ï ¨ƒÓGšÞÖœ¸Fo>³ÿZ`€ ô2ÚG"ÐU?:ßÃ×Sr^ÓßÑ|öÁ}\ûtÆôMmUP†%1Ñv–¥Iß°¼gÁàøžbÍ–þBάá×6ó¹ ^Ô´ÇXöë!>G )}ñbÎ ý…€ÞŠ+ºE¼”ÓwŒØ¤Þ­t$‡Ñ6 ¦îH†ã÷”ÆFž<æ¸ÙN¡Y°ËI*9Jý=᪔º=æ*éL¿uVåyÍ¢[9@ Ÿù|‚%I>ÁSg•ŠKy—Áq`»‡¥g!a1.xj¤öÔUnÑpÞáÐMò€FB ]Ê[ÚŒì†ÀrVtñ<®Y‡e  Æ2¢y@aG.Ñeù4½¼ñU›ø‹ý 9ÝJk¡~HiÑOkO}!|~lùððù¼ÊôéÅ•ïÄ/5’ÝkÝÝ3\HnÂe+ø¨›ã8dPO$žZ"ž¤\S^Å’R`g$Ö´Ñf·ÄÀã¸%f˜ØßÐ=þg<4uda$à§ø‡[$°lBj)ÔR!¨åi'U©ˆÌ%â-–éæÔû&Ÿ\4!ä KIvt˜0 IÄFÄ‘7ŠG´jÖ;Ó ðDž@[ ƒîs²@¥Qû-ªpø”M°ÉTïý6¬ˆO [,ØÁf€A 1*†`¨b¿!S½èŸãDþv2tc`Ú­³+·‰†¡µ úBgèc¾Ýel`Ï­ Qú«9ï”OÔùBüÝ‘c*Í30Ò`ô`”ŠþnÒ`e/ˆÊ žˆ© å*Øö4¤û(InfÈɼ=‰+{ù¼¸29¨Ñ4ºÙ!±£9'…Wa ÙH¥ÊR ÙŸlfBRÞ»/ä¯ >Œ¿Ö¶þÓîÑxÄ즙gêúûIÑ ¢nå“ä3£à/}‚%Üã) 2’¾äÏ}qiÑÏȺ ¶ôÅ}««Ì“·Ù½tK_üxÝ´[+7_((Ô[‚ÂEúWOuN¥þÍý3nõÔìÂð&Y(ÿ釵T#ÐG ûP„í€õß]ˆÇFß3ƒ±V.<¿Éù¯ŽÓÄŒN£kÞZ6B2Nˆµ¿\H,#žé§ÓPø$Íüóªþ~iYͶý€û³€%,Á”åMïõ%œä’™f¬æHée½úê&è!ŽèMÎ ÞæaÏyجÁµr#êÿ9} †'ÜÚrÚ,žÃ¨ß˜ñ’æ ³©¼¾Òvܪ"BFÊÅàYŽä+kd÷iDûd÷ËTSÕØýjì³èÅn¿“ÔíZ¬–8¸Vnâí·ÁÙ°¼Îu‚ô"øÁ'faU8©fWE>îi`{…ûœ…úKÏáæí´ÜëôÒ!Ï%›‹{p×TF{žÞðNï­b¯¢où ¼_„{÷gõÁŸÍƒéÇ ðÜOù·U`°@ÌwpVhëie½CN3lÑYANghB¬wX¶#<”¤ÅqYÑ–ßKBõKŸ“׬­ú¢j}G~Ø\Œ\üä[ Õ|A±ŠMÑ­øF+¨,´˜¬öe‡¥ÉÑ÷LeU–@—WÑ|/ŽÛMaÌ*hL¬?Xt»ï“`Æ6(³†å¡QâÄÃIì6j‹VÐÀŽ—w‡ B±3z<…™ …8\VmJ«hf«OДQ®z‰v‚‹CmÕhV+ôZõfÍÜL•øçi¼k$àkeÀÉxÐß¹»ýq‰ÿçÅ‚Ë âwg¤ƒ}D·*»Mø§¦/Åy •`5M'xeè­ œ¥sáÛÿxAÀc•„QMÊq£œÕ«‡Ã“œ­Hl«'ާ#ç~q[àåsÕÔÑÞ`p`ž‡À0dv¿eE̤èÐŽ-åS1V*=従±äçŸbWçõ…[T²WÆ…`ÒÊZ@fªpÞç{5¢ŸK‰‚rº'뻉h]ô ¶WP©üJˆlƬ>}ÚÝvª4P¨ŸÐC¢‰A$oO9R1\¸j«¶¼oeá›ÂØiÛW’Ï÷ó÷}ç½ÁròmVìõ{Á üO®+£AŒË&Ä…¤Oc¼Z1ɸ-Aï¸ñ$KN Ë$º°ŸU]È«·„†‚ùCõm×]ñ4†Ò iI>è .HLF±¥ÛëŠ1™IÕ…$ø¦;Xãå¼züÈîûnR¬U³En&SójNkíæÝ‹*\àïI,h7kH;2J€è&0ò  3Ž1‡ ty\žÏ“¹ýˆIÌ€ø[ÕtÏ^[›è®‰ªh°ùK^›¶êóªÅŒÙûß(XÙñ—&)VÀÑ6S-ÌØÛìf‰A«ÝJ•¢>mÛTƒK§¸«º¨?@¾ue!±t¬nn_Í—øy<~·_ ÌÿL£%µ¥þJÎI½ L8L¿€#„mzÃÚ勵ë3 žîÓ ~×§—>Ýdž(—Y•íñ¯é®ãZÃx¾Æ†R¾m¿`€&× ‹ˆËÊÕ wÝŸ'û!¦@U.¸6þ„6op‹|¼^ãH¬L±»ÙH‘³2‹aL°R@ ¸¹—,`+¨3ÖÁ™pâ¸ÚæàTà)ªëŒ»š­Zk%b­góˆqÙÍbµàÈ^4³P‹Sòr@?n5†ÌV^Îà«<3x+¯?6–‚]lER·Jëú´ÆÒM}`Œ4J×ô¹dº¥Ò}b 16GìŸ6õ~9ÀS)¡]“:þ‹ œSwÕõ2ÿë²yÖ‚Ê“”PT‘ø^ÈéÖ_œfõºEÙ—Û„,Ck|W`óh¤›gúôtî”r´¸òmƒÌ+¤õM[KÕ\_)Ê^Ηhý °ut‚Ø•©=áöí6“{"ÛO×E”£ÜhŸpÆÂ–¯Fò½oc$¯³yÊd6åÄ“f2oÒV-~ϲ¯Ë¨ª§ñÕ£¾Gf÷U“ò¤ýøF,œM¥ü´¯Æ;Ÿßüóg”A$åÝŸ¦–윃£ óÀÔºu³†ÏÊ?©“ÑX”D  6gU~ ƒÿ< uö‹á³ÂÍÅ.Ëv'É'”)ŠäHFô¤ÿCÕßA"Æ M/®Ü(ù5͆¼š…WAvÃê÷TK©>7L{ì{ ’›å@el/  å!ƒTI“¥ª)É‹yr[ÛÑÿ¥œ¸Ü ÃLé¼­¼lú"€TŸ¤Ð!ýµƒÕ%VPÒéôØ+Ñô(°ÊKu‰›{è±å³€Ê•›Ûÿ€> þHÆvêÌèÈÍù äÇ 68BFyæBúiÝF¬ãýÀ›ò…/ðg‰Ùâß )´DHƒKüžE‡þIÏ^çÀ`ý3Ç* —är,œÖüŸy_o©é×7#î.û†õ˺Yè²*x9ÝZÎqå8©Æ· ¼8 î8´±Sý2TŒt"ö˜ÛØ\ÔíÙ¡Ü‚~úYÔðdùIjžŸ‹‚IP·iO•‚YílE–å$â¦ÇlpÈ|ÖGàífä*øð x‘x=“|ˆŸN@C‡ñOHwÅ ¶¼¥-›ûûqî`Ò. á…ÿƒþ·~Ç…&ÏŸNÔü"u ©päL}d÷Ïi·Ók³”§ç¾uM ^q÷2¼õÏèê°CoÉy‡ãüwØFÿç-¶ÑÅlŽ Ã·‡s©I±ºw3>#—Ò }ás¾eßfý¾{¦Ër|WÃÍ—ÊAðR±í#×6#2uß»Ëç"—1Ê óœðÎmÞ7Úé7ôÅç×%ùÌpY.aª~xfJ#[QM¬¿xæ•kO¢Í¼7ês‘£øÃ pøˆÍ¸Í Ñxé Ôlâa|$kngH…a< œ~ùn.>Èbdù ŒæQ,ìcá›bU3ãù,ª½¶"v ðle"™„CÀ¡{ÏËèR¡ï”¶Ÿß°ÒÙ{"£Ö6Zã°äå¼îÐ"£¢é-·<»S­‡n{Íq@wKˆðDø*×7K ò߯·Â×[yíò|`ÕæŸ®w:ìn°I^o³² ¶ÑòyûÞJ½)Ò·Ò ‰%~r=Úˆ‹ôéÜ¢òâ­Úª¾X90@—ã_JC/ðWÇФ‰2fKGm’‡ôB2s8XŒ(=4‚wFÑŸúôÚ8TaeÊak+sN)®ynBe ÖM^â‘@Ÿöù“ G ¡Ü€´Ùà§CÜL:ëKW3,Ïʰ –ªÐÿ*°üÆi¯±ŒP`$¦#ZLå t?ívX’#ŽAv݈úódw‘ó‚ •é%weìN‹rȘݣ÷Ú´ýËÂ/0 ;>tYdÜE”™io&ïC‚xѯÊ`ŽAVX>ÑE‘äúЪ™ µš>RÂàc§ ;<ø* ¹§ bŠºàÌßwôš70·m\„ƒ”Y,÷P?™é¤Õ]êô&Á®3 víkW.Y9)GèÒù*¶ï%Ùôpù_ÏsYâÏÇ\†ãƒ¸W1ØžD¹·¨ßnó2ȵ8À²üAöoôOåX¹pÎ.SÁsl¡1 =­õÕ(ý¨²Àþñ£À¿HÙÊ.Üzéïú³+cÆ\Öx»G*€J<ÐÿÚ`zó½û(òäÁåŒGc©çÓÌ;B1 å|²›üEKÿЧ¯nÀ¥b‚½%ãsæàI×È}Œøè 6P\Ž xkÀâlêÒé“gÅâ$YbJÌ)Ä(<0fK¡_bu®ºPÐ&Ò ±hpG² çWo‘±E‘¬˜ÞAÝI9~2DGV­èÈRþAÒ>å]ñ.Üì!ÒEú‚êr¦O,“Ù§4Ést18|.®¬«c„¥| ë†øX_ðþü•§êR=B/Ä‹ìHþ7œwG18^ÇË_ äû8˜4¿ðÑ@À‘BšÏ²¸‡98´4†ˆ'Õ(„0Åèli%› ˜Oêí|%Ç„Tj ÄkÚ R‘$š-ø¾—?¹KŽ2ýºsXOÚA¡ße\ÆÍ²âhˆŽäýs]ŒÅŽ'=°”goøy¼À~ûøl¥€!Û›0/¼ ió¬ÀŒI~ëŒe✸”~`‰5­nóð9Š,§P ‰šÕ´Å†ÊåYqÀÖ§³©›¸Æˆ°:ÔqIyP¦È‰öÆß  â°}XGÒ)ìcΊúì)½œâˆó1If@¥"7î¿\¬'gQ„FÇao@»öô¦·ÍÁgå‘tÊÃTÈ!NóJI»ùðSd•xJE¸ ¡ÈíCú-û˜ÔÒ)ÄjÄ å„#œCeHÒ.2{®Æ$»à–T'DHŒ«O7í.Æyƒo¬öàyÏÕÈ li9iø"%6Q' ÃýR'í—þCP§Ø·±´O‘ßG-þgyµ-äíä:ôÛË*xÞXtè2X±Ó¦9añ‡Ê‰¹K¾œó‚V»±Í9x3‚ü îs‰M¹R>e†Í<ìåUÔÏc´îÈd 2y¨¬–µö?Äâô€{ɇç˜7ïu¹»Ùf†hî†NÜ+™=Õë1Œzü!+brâŠDÅuà‘ǦÏ@.N)ã¥öR‚µ©+SÁ³R.zQkÑó£ð…ér§gêeÉK^|ŒÞfOs|ÂǃM²ôÖAzõ$žÓj/N„ѼěV &~úWø4Íqî˜÷ô`o³ÂnY¨(Pfl°Ç~›­7­&ƒQJTõº'12tÛPðÄ0Û†Z{u1pƒ?-[̧„AVÍ+€ùÌ?.v$EòýO<Ÿ?b¸Y½}WE9-½2UZsЯ‡¼2Ï“WæI)©šÌEÁÌD¾hÙÅ»# ?á©ËÊ4”[(µí¬àeŸnÌÉ ïÁeÇPe|DªÕE4ÞüšÓE®/‘9 °ª¿· %µÇ!x§X…jnU¬FÁÜŸpXLHòDœ9[™×iµGï&—ž*É¥'¹éd§Ô`ÌÅ><È}ÀÀ¡ÑÐð@x§{v呸ýz”âZ#T~œ{§D™7ˆ½’stÀLs¯²ýƒ ½XÁ†DŒ(*V°)[ nlJâA£ÊžU¹?>Ý}XCÎR!@~Š}‚Ež®Iâ¡.f t×½$)¿›á¬ùãÓ½ô•Jûj´¸îž)Çà²N¥,¤|8„ºD¬^º!PœÜÇœVÊ—²ÎKß=…Y0:Œ D±-Æ–—W„`ÙK¡ÁfH .^{fbÏ& ‹Ð³‰€c±v—•ÿ§ï©3FKižÃ\½ÅŽ3æQ©ü4ÈÖLAž ŒØÅ=œE—Ü gëÞG(¤šÏZxzÐ~´[«ÎV,9\ßã’vÐd Âçä4Œ.ì3pºúÜND¾Õûª¦ƒ¦ ìÖ­èý˜ZÃÝT›ìÄn9€WÍB½EkÜlïòbÁYÌÀžîVÎñ²³‰g‰iýQ¢JB0—¥‚ -Ž<šÐÛ-WZ;‹MíŽ-x"!^/µçc€,-_0HÛë =#ÉìwŒzM.X™0HG˜Ï*Fv7;u«(€q&ŸýÑV=Fr=Lb¾-Õ8òíE Èi¦–§üXÇ„A}<Éqç¢ö+Œ¹âàdÊjRß©vÔ“|¹¥=°Í>àF„”1sA0ˆÔSø_¦ð”Ú‡\6¥ô³Æó_2•ú p¤zÌX$Ä1÷C§øx¯Ñ-E) #~Un‘òŸ2Ž"½Ž…¤r·ÇÆ*f-–V—ùí˼çËÊ F WkŒ*;eÀ$i@“^€z/oO¥ Ì‘”g`úd5Ä_¹ÿãm8ÑWK+,ÃsIk“\=~+䦿gùD6:àÃÚ\Fž „”iƒŽYyIúîð2Ñî2K„‚ ùf§ÊûkÜ`6VO‚)pñLLëï9Zn\©ìà“#d7%BÎúTyqŸÖ¸KyÑ‚Kª'—M“–h¥@Nî!^ €qðóhɘÞ§O’Tè8â‹£!4‰Ñð‹~+´n’Q"e† wÔ¯w:,fÉáÜñû¹¤O3­9vDõa}˜°>¤pO ù=yŸ)ѱ/ÝÕÿbÈV# B÷¼­A+Š+TÁ€<ÌçÏ ÿ©F2Æyh°×_øŒ‡?ê³óUqVà2éü8ûFgßÀ`¾Ò'Å 3/zûy¹Q—é/ìhÒaÁÔw[ ˆâöÐW.n5¸ðü:ËûÈû«˜ç‹Å=H 7`4ÚžÍÙ§'òc[‹¶ ±b'$Þë•ãÿùË{ÊI—z>¹Þ_[6øî¦!è1Ågû2\w©n%Ò¬&Øû ØŠ¬§òÈÉVÇëfÆà¹™6ðÊ’3 燞É&$i¿7eã ÷ô¨oðƒ’.ÛéÒJ—½ti£ËAº´Ó¥“.*%quS¿=i(sx©×>ºdÒ%‹.Ù ºŒ¦Ë&]¨XçBë\¤b‹©½%tYJ— ]¢K9]ªèRM—té¢:Á¥=ÀŸÅãõ~“êï¡r½t9E—]úèâ î§!O !O¢!çÓ»ºÒ¥ˆ.%t)¥Ë|$]Ò¥–ºWGÝ[M]ZCÍÖÓe-]ÖÓe]Ä%ï¼A#ªªoÆQñ!250ÇV¥RbáPñ$®Óv냙†}O«@=UMóÞ@óÞ@ó^Mó^ó!ÔéÄ"8·' ÷ŸÙí 9Í 4Í ƒL³ qF“ªÀ©<+=Œ ÒCÔ|9]ªBÕtYA½X@½è¡*ÔCJ섳%Zá‰ï%t†m'å<ÁàŒKÙÅÆp‹53òG‡#)ºµ«–cqM"iÅËÒlÍ£åéšO 豫î#£òÿL±j?j(ZéRiæ_A`®e¯8æÝe¸˜ƒ08y0£ñå0–þÏ ão/‹aüg)ë¯ÛÉú ÍÆà'Î3#—®“-0ý…k_6Y ‹eq¦e¸+Ì¥k>j%3õ–k÷éǵÆC Èí-ix:…˜78 H_YÄ‘Ð9Ÿ¢îëû "Ê“ ™5—v££9„¨SÎåœÓÛt 諟48~}‹‹jÍ¥‹Öø’‹‹À©X §:=äPb³+lU#/!êe;TÒ<\+mÍv’ë›þòµ/”4Zl(mO}ßµ-z·Ö¸6?{ Ã@aì Á±¦)£¹ÁiZ`ÓVB‹ Âm—’vól&8¼éL£tƒB#PQNÉÙ¯ïÑ_%Aæ n·ônåKƒÅ«`eŸÞKÉH`«M(Q @¯›]Ùæjž‰]àê0´RÈ­U>i07B›1„®*‡•È@R몴B{Õ æ EþL@\³¯‡×Gvf'OYÌÜÍÌ¥ërrÝsæ%ýе¯.oP)Ìqƒ‹Ä+Íÿp’‡|»ÒšÓª5îDGäEw:”Òã,¡.³6çõŸŽ((š`µg} ¼¸´·ð\¼ |iÎnØQƒŸþRÎ6s F¬U%pA] ñüû1Ä&h<¡«aoÚGª Ž \[L8LVQ,ÅÔ“øv’ Ã`bFVzιG_›eAm£ÑܳUiFÕ@Ú!@²ý¾OÙ0(’´²sv冕GëÊ;Œ%—`oЊ ˜·OkLp“Ƙ/Õ¼Ìâ(ääÌ{5Bnöÿ’øª=-Ǫîc¥Oëô$©4\€ä †¨¶jÏy´3(@È÷båU¦.ù¥(&78u½°b±¾ÔÒä¶%® ÑÒvçßóOxùaì‘&ÎDȹ£F_º‰ú¸D"Rží]JÓ \¶mªœ /ý‚ `Z&81úbn1Å3Zã9}wÎVý­ñ]}On=avBéeÊ1|˜¼¡O'#Æ6ƒ$'Q¢æ@–Éú4;XË¿{±ÿ ¨Ã˜Ë¨mÙÛÁ„ÇG§° Ïš0€C®Ù•±®xƒjU*˜Ëß®Í[0ä©Åڪϓ¯f/Øš‡Óä”φîêà]æŒ#jM¡ÀgkE1¤WÚ ý¸¾à§}³+Owg{p*qÊÃàÃÖäOsp†6#mjšNÙ!A%a Q(›P¡––'?Å·Áüw¾$1ä[ÿ´@ àÜ&¬‡2&ÊÍ_ù‚B1)úsÌêêA„ÍAvÉ® ÉÀ>žî ¨§ù„´Ä´aœ—½+õ×â)û-þ…ÑjËõ²™‹jbˆ®M´_ø'¤ái à¶þ¥âƒ‡¨×x¬áËb%ÁÓ»â•ÞÁ ÁpÉMþ* $‰Æ(·¯d‡ÀºÔ+(ýÊ99Eoã•_§ ½£tʤïϰa=ø°d[xø’$‰zÌÐ#øç|⟧³ÛPW!S*ÙÓŽˆ­UkTŒ¡Ò®}»ã°è§-'>m³YðØNÅb‚†g˜ng†á Ê'Ç8ðG0e·ìOÖHÒ$§è¥â í6N¡ %ÇÔwNÓ[g(Bœ=©£†ù¯KÊ£·BÿaJ~ÆÞZgÎB½f=a½8óžàòo¦ˆwæàí*/W>eP—1ŒU «i¾Û¨ƒ0ˆÉºI ìâØÇœÂª¡ƒ*NúärŠ>©e‘¨y÷lP­4!Õó„èéâÄ›‘ásJh! <Ü€ô¼­¨?d¹ßJFáá½”ÂNM¢mD>!ðÅde ŸX²òZ[V¶ò–c©¬ÁM]$ ¯%0?²[Ìß›º <Ó9h­@²**d@Ï`,Ò©ö $SãJµZî8!µ¦±U)‚Õ§Þß~ ,]y¸'ƒÐnœª„B Vdç‹Ò4!!ƒ¾ýFÁ†¡ÓÃ$Ø.B¦*Ôâû‰Õ§Ym¢cMêb"¬Çö’Î ›N] 9K–-‰£ÿï °îÁ‡Äÿ*®{¹¼™‹_/¾[?Øâ7Ö¨õV‰Vˆ¸)žL@ €õ«A• #½4˜­ûàX?ƒ`˜˜÷jKôQPôljqe-ÅO‹bCËn&Ye‡ÁŠVŠÀœbyÒ&½àGb%zƒ¾— ™K²ÂDwPð£©ÀO l•Ó)ÆÈð9m"˜/fÎôsèÈ™lq ½é´%’J1;.Ÿÿ<%_ß–ó³z3oÕô‡Áw¸yßšKè)êC ÿ|Zx@?IùR¦XënÂÚPXí5š˜Éhê)—•A«eØ›r•™ç~ƒ”@È÷ Ë\€ ŒL–9j±O¬CDùÃ3<—Ûzb®oˆ’©Œ:¯@\ûñÈQ}Wˆ²ÐWi¸OÿX7ƒãH±„9Õ 8ÀÜÆÐ¸Æ2sƒ«nz(…ìZêN[Ñô1r >¤væ|ͽô?ú*|±œ*Â\Ã8ñd>d:å =@ö…«¶êî˜?ÙNŸ4ñ'Mô à§‹M§;ƒBߦø7öÙ2tUŠTMü¦ŠøuS§Pæ×zPÊA¶¶v [cq޲dŠ ªSë)¥u£Kà!¯Kd·3(šÈðÔúÚ‹´>æ82OhÌ:s*ä»äH÷[ÔkIEBžîK×ke D¼LpþCº{Ø5$uR†4 b€|P8àAð!ÀlcÀ×#¿œlQ±NYs JŠS³ ÏÇnTŠßï Àƒv‚À'ÀáD Î4c^ŸÞ+ˆ­=¶è£âÊ.ÞŽHÿ´3wÞH#[ÏûmLU·êÞ~Tý"oþs#L‘vVÑã 8aè¤Ѐ“&‚dѵeDpwkå%ŽAö¤Q;X« U£$ÓµvcqÆ[!]ÅÜsÂ,ÈýŠN!iÕs]¶ž­ y²A¢äN¬‰.û¾!³{²èLk'Rì´øð&Ôa ÜÐ+I;»DÒúvb ÿ )S4Ñ– *)®ì䪀¯iéÙ¢sSýÔ.ÙòŽk‘¿8’X†£bQí@±H¦òéq=¶Òÿ¡X”ÖögJÿ'öAÏ ç½†þÙýd.®ñ)ù¸žCŸ˜ßmü•|ÛnÌòxƒµKÙ¢$íRXlê(mZà#ÑSÔË@¨-È ¡¶^â…Nklçôi¸Ù8ˆšE…Õ n X[]G]¨"ŽYMÈ€Ó£÷èC´Ê/b¶¿B±‘¦CÇÇE•Ab¨߃+ÑK‚ðqeû‡¸iÂÆ5ƒË¦rR`<¬r‘a¸½¼n"BÅ+”æÖ=}Ec”®VkYMݰÂqlï*;i[€ùc)-£pO wG"Å•od§ç ª:ÝÁY·@RÇ Naævæ7Û‘ß< 8O±RQEcŽ cI Ö¯ÉŒhX¥µÀ¤6ÛzˆáwÑf°—軋蛂˂Äkþ{1 ÷O×4¿¶ Ÿ•;oÙÆÓÚ£’øÌ¹§ðóßýÝö_¨uM³yà‘ä,¡$»É&Ó„ŸêÈNªã®¿S~¶tÜëS±‚”† Õd{Fé›ÐÀJˆ•@æÓwù¤5§ÁªvÁÁùò´ H\ôü¼æŽ£ÍF‰ l'Þ.OÁsà_ â¤ÓÓ>û€‰;õ¨z¦aGÃ6ì0Øæ Ø·—ßó»ç˜ªÁÈÿl¶ÃÁ9fÉ»1[ºoó'¥Wô iþ~Ã:émX!J¬cIm©çÙ“;j°7ë€#å™ìŸDÎÉvÌéÅ~Wîîï_E‡‡Zôræ„ CãòŒ~"æK‡L¯í‰þøèÉc€1‚P†ù0VÝÐ/ñÿúÐù&ƒÎ$J,­ê/#Ýb¹AßÚ›€æ×]˜No½x›œho=ÚnvV¾ë@üí8÷Á§ÎRíëì `ÙÖciQhnײOsÌOvUìMë'D^Ô{ɸ^´-q´9FåÉX‡´ªxŒûÁý7%¿‡ÝÀÓù„› O?ƒÞÕ(L?íRT)­Š¢‹êìý^õÍ Aݸ\Àåæ+P°¼î =¦¼•JN¹‡*ØÈt(¡.™ÇÃÈq4(r*‰°¯³Ï)ÿúªha{Iƒ¢žCØ¡×ÎîXšã¿F‚Wl¡"W-vÜÂÝØÒËìOèü븞PhHýþÜZ#ÕŠ®w€X.«KQ‡-ÿÁïØ%ìÐ#P'(i¡•{r-õöGl _‚=ÑjÞ ÆÔ+sL½y²åÔ r(4×üš ­¼*“çÓ‰ÎYÂ;ÝìW\ùF,ëJCæÜ±HF,£VXžÏèÈŒž:ìG £žÉŽ7ÚªO º‰µ[ÞO)šße&éÁS(%i¶Séf@ïÎ9!6‹<ª˜:Œ·Ë±¬æÙ•¯~@,‹Ú!fŒWÃ`Ñvxóï9>F¬å=ì ŸÇò³;¢…ù±ü p}ôxÇ®N·øWèå»ñ>*Ì<ºU¼îØ-^Ѓ±G›—oϤÁãÇÒ– ŒÕãÙDÉ™AÝÓ$©@pÞG£8VKt^¿¾ŽáHˆè$Oæš7@°æXÚCPP|™*´'Àsèîà|=Æi‚bïÈÚJßù(õîûNr½ï¤Ôú½A]%¿éŸÑQi |¶•G(8(~Ý_ÿTûqô§á(úþð ¥æDpŽÕ9_ëRÎEîK`7Ó°s ÞIèãSêž„uËJ¹K?n¿¦„O*5»C[§ò6’޽'å?‚ÕCé®úÕùÁü/)ò…ó‡GXQKÉǼŽLñð©@”§ü°<ƒ·%·£Ê zrì8ìQIv0˜poÒ:Sz…G,¶ß4(nŸœOð™é#W{ø(­~4¼|À°âŒRž íØyÀqdr_û®ö“ù‰Ø|xnVgVµÇÚ-ÿy¨[Æ…å”BDx<ßîOORtèÿO¬o.„ßRHÙ"à÷ÀÿrXçHaù@n]‚ñ}–’@á6¥Þ¥(SG6ãŠ!ÄÓ‡ˆ=€FF«~Ò²¦å†*´ ú_ÊL~4† *nÜ~ 6`r„q¿Y¸Á£`J¤–9oäXø­‰–߯Ò4„œQPî@A¼=g§rF?ïéL”-àûæ7]ú9ß„ˆŒèŠ-¸¬+Üœ)[a¥)õ7PG>o& 6«±y ’ÔŒ±8áêÌXDÏL¶b±±pP[U|8òA!n…|¯]|Û0ÂÞßnA`Yø{»iÝL—(]¶Ó¥•.{éÒF—ƒti§K']ºèrlÒ—_sX¶€aâqÏÖÀˆ èa;RŸsç„ç ª¡. /*]Ütñh¸qÀâ GØ[i(E±ØÁ ×caATÐ4­GàC¦×?æ6Bí¥×0ÂgÆÒ#¦¤Úé5޵Çú4nÇjqÀ¢•jeñ\‘ oðörÃÛ`µè”p˜³ºø%?X>mc¡ç&›Ížƒru:¡ª“ci½0JR•À>å>ßÄÕáÙý#ø†¡˜­­úªè$%Ä"ªÁl íË&®%ä"èà4¶ÿãK<žLÎR…ØVŠÇÁ\uƒºQÃ7€¤A§€zB’u²¼çœ˜¬¿Øü'D̆a²šüÅðPÞg{¸o½7šéªö!Ô„…%·Vb˜ÜÄçXmòn` šƒ­_PŸ Ã@Ëzd$/1 Ùpb^÷utSÃoGòBVü_‘P‰:õf6sE¦˜l÷’šÀsƒ—ŒÄ/còjD[öBó ºAˆA§‹½tA9#ÔöïV¥ SR4P¥ëi•ŒÌŽâ¼Ëðô]Ó HÝžÍ;¥Ä†ù"Øž€Æ0î¸ÑÅEcgɆítÄ¥…O!+ÇZ¶73RlÆ)ÿÇÏ·çõùݼ ò**>c .¯ìvŠˆPKˆ ýa¶ŒIÃÀ‹å7h¾•­j²«ð²ÞÍNÍ–üñU_NÕƒ1T>ꙊÞ0ìÁK¿ÎÛÀãºå oE§ðñŽú6cWSÉ%¡š;è…Š_v9dšŸ…WJF(Í r–üY¢XbRÞîÐe†%Aë`‘냇Ê1:0a—v+Íbi„js›ñÅzŠxõ¦xyF¥0&2¾  ©N*; ÚÏäÒ¢5¶(Ç"#±6“dJ8¾}©Ÿµä²j~y·` Ìõ`Ã#™È"‹3žÖ)FÙ*Àáò0/ËGÕ}àLÛñšWäOäSŸÒßU÷ÀƒöæŽ(¼oßF¯î{;V/`ýŸ>«r³°¶9y£WÈVÄÊG’ã#Rx”Λ—ztØ\6[…¹\œÄóy»Ç¹J¬õÌäE7P¢S°A Ì®|›™zg5žœ.²õÑŠ½û,Lj†U´ùŠ%aYñS“›¢{º«©ÑÔ”ILÝLh¶ÕÔ6\ÍX§É³|ÊUÔÙ…Ÿö8ìîgS^§½ü«9‰ç'PÝ"ꈑ˜&×\…^í~ÐÛ± „âØÿØû3bþ±±öymÅڧݪ­ú.â‡\3²‰aôùö¾£×˜Bd8G“֘ъµΗΨ´ÇG·p,?ýÂ5i>—g rù –/éCWš¥Ìå–âÃ¥‘.gÜBÕЪGÞ³ö?Äåf0·ÓVyÄ+ ÊŽ$%¦* ­Z”üÕp·™—Íþ$Æ@‘M´² ŸµôÍz*¼¤œµ$å˜W¼ˆÀG§¾ ´Œ ~°}W²òk„ý½U¿Öp3¼™V»/ cü”ù¸tÃjû„í\¢“{Bd^&Ú)i‰9JŽ} ú¬ù *d*Ç¢-õŸóà½7ÂyaUx¿D±–¨2ƒ¨7‰z:ïwwÞïeù¥¢Ìmþt§âèÌÈþ«¾š¡©£FðW9Rzg|ííüœøXú&¸Í;’>ÎŽ°¶ Âz3Ø…®•MýêøœèCJ£’ê=H\Håb³ÀúßTÛ-h}Ð8™çdÆQ3c $3†û%Já˜ëIC±úçOà§ùØíˆ9WSŒ°‰~-aà¶ÍÜ÷\ªµòÃT±ͯؕÄ|¡2¤:7NNµ(wŠ˜eWk¢Zí‹Deµô‰ôN¢2P4’ÂWµEDLpóνý™ÒÞ±Gy5ý.Î7Çɱ¬ð€²‹p¹ÝäsHÕr^·”9dþÖÆÇJ‡u”­-Ï ^Î=k~Í¥œM*k„[2ÃÛ`·¾Â!µ)ðkVå 2Ð ÈöeÂÃ0N±ïÕé£ãL&.mÕ‹70,ïéËp êCFT`¬nŸ Ž‚AXÝ#äjpOŠ;æù©ÌëÊ Ô“‘~2Ío~Ã)º´ç&eüúÐenšÒ@h:§[Ž]¸ù7í}¸Ÿä|üB@ÐßZÇ5GÈçã^²Y¸e“(Ë&æwopØŒ¯ ½*é¸Ì'š Gب›7À?$#™ãBüSX!Š©Xë‹q`ÊÞ{Lr•úÑB` ;{97G7+<º™V5Gaüýð¦Ë{¤¿Å".‡Lç•nk²²ÓmM–~£&KÐs:C—±tO— t™D—|ºÐ¥.Et)¡K)]zÈ“ª7’ ¸O‘gf" ôÑÅAÅUº¸éâ¡‹—.>ºd¦ÛY±À)\*±Æ§Ûªè­”±ËõØeL5r&ª‚®Ë„H…Tû_ý¿7 L† h$‹ž/J#ÝTšÃJ<þÝ-¸|W‘ôÝ(³Ž‡a30¹«òP3^ªF£@2èÙ*Õt> «äÃ!C· Uü)!›¤m;ÞíÌȇ»Õèv&âœT»Èµ0Û‚@1¥#Ú9#»sF~l28'ÌÝ9cìÑ­±É^¸Éìœ1áè¶Ž=øxÂÑãø$ÿ¨øñ›±‚7­Æ±´Â§`Ckà!¦Â£Ž.Ñ F‡8ÍO:3J g»:3æ‹ëѳB¸Š¥-„NBèáGŵGÉ ÂH€fQ%F• Pƒàõ˜³_oAG:àêøþÞ]°vžrávWζ;.ª±öjÞR^!ùn’ç8 §ès¡Ø sNG9‹è°L6{u–OŸJ‡¨vß{ ÐÖE9é¨Ûî¡Z›4 ™„jt8`ýÅ´¡üÍøt:o ]pч.ònD7À3Pf¤ƒ®|tWç¢ ]±«ÉÜhÐGÊ‹·VÆ êCx«ìAþ’ñ‡zì ¡CÇa_WmÕ˜v«M¾j ÷_ô ô˜äøfH.^BÅaŠ€¢ƒêªªó¸U$lv6!"Œ{“³c“Á„È7:6yüœp4Þ±»ý@V,2pmllrfÇîå0ÄŽvc8(¾ ‹îl|èíØÚ9à X½­s†ÈL·”—P‘Ë1óA§‡è¹SiC2àGíråLqåYtêÏÈWˆUƒ<‰h :<“;®­ú&¸‚u€ùŒE¬ÑDð–.kØí­ÄÑ(o^‹|n#Ü5‹ÿwuœÀk“Šñs`>:öˆ 8×± ßí*WJü¿ IÓ 8¢©x„ÖEqI­õ—C¯‘Â`A.úŽ31H0¦Õ~¸ðYâ1ú݇kÑáu‡Û]öWÍ9`eïgd\‹axiKŸB>Ïíhœ6Ø 'Ãz JÚH)¢AuÔìÒj'¸Â-Ð :ʬFjq‰RÓÐŒÞ|\‡Ú\ɰUvo •ÙL­E´V@­µrk—Pk­ØHõK¡Œi/T ºç6jzñ†EtwpÍû\5>Ê£2Э¼Ö`Aï— x[•¥Iï—¦¾×jn'ýÔC. >Ûq¤ ïqå:“V×"x´+¶ºÜYOÙEÛ:Flöè"_t˜­}J‹ÀABGªÀ ½sv×Ñf±çsϪ|+V•Ô‘üˆ¿ÁoÌ*Eç-"ØBO ¹GÚªÒ×c‡åù^Kø¬k<5®…à”õ§E*jiˆ[‰^;nêü?~t—XÜû:ÅšÜÑÛIkÿû±ŽŽ›ŽÑ'@A‚žàKàs4+€ÛÀe†‘³ ¢:px|¥Þeó•Ñ[Ç`18zGòÃBf7ùTõhªº–µîc˜Â\ˆFc]ÖB+$…Ö¢;Þ5p… ù½ðÐ ñ`’ õTÈ¢@¾™\Nè¨<,Ã/ä6ðâ{\à°›VVb]/*gÅzÊg¡ ù Å”  £Úh=ÞÉÝhE†Þ` OXŠ =Äþæ¿SØ¡¼:«òXAˆsÁ¥£¿0‰ÃC›ÎØ•à×îB”OwŒ&Q3….«‡ —vÛ,@ *¢=€mâô!€ØÐúds„ „ƒù\8Ÿ Ãú_œG—ÜÕÈᣵôÑ"þh}´—?Ú‹]Ý—äåFñUéSMÆ{æ€Ò´˜=œd„P1-4þ>§T~VÌØX›ÑBóY$3”³¬RŽkÇýç,ÿ¤XÚC6 ëÄYœP8Á…«\lk‰Å¦%­{hÛwµïæµâTGW±˜@Z-:h|´L‹I…*¥Ž«Ï‰—LXNÐãS2«v¯ê°ã {SÖŒ=ª\3Ò4ûhÍh—L¹ÁeEkF§¤Âv¢ÙƒD|í’_7¤¬̯g¿îäi]Oܸ‹.¨¨W‡MruØ(;R <Ê 𢹠šãåa#7·ƒPo£µ<Ì—ËC“\6QÛ%T²äÂå¡D²wè/¥Iì¿tÀ{Xæ'½ŸŸú^«‚¥EÖ^¸xO(ýYü¸†t®¹`]S£‹4u ñÀÖiÀjI«Áx°4úAùiŒ ˜4àZù ’PÈ@kêwøÝÈs&ñ\¯œí½ÎäíL£…‹´¦Nb/ÙòQs>*ƒ<#d5EΙI/‘ÇR„¡,b>¨Žl— ^Ô ånf>z^lªá˜iîjÚ~‹]…Ó²t“ÿ`ð¥‹Ï’JÖ)˜&€¬s,›È6ßŠÑ L±\à­=² ª.ð[×ÕxLl-ÄD[‰`äymLø¡kxÒkv…|¸×ªÇm(°Þxng­¬¥—\-zÉÕÂ\P‚kd”^šT·Ç†QÂiÁY Ö»dy¿Ø+JLUÀFÕdÁáS`S˜U€‹¤“ØY+UÇ@É$°ž–àOôI6sÐlä «)B©—½—&|/²—>ÉbžEv!óì…XÃót¼„ùA ¡C·Ò„eîêÃV6ð‡ðáÙ÷ðÃvÆåv|zý“äæ™!6¼KH4•7é§£È$Fäå­¢—|o«£¿,8:¡¢!â Æ®r9UF¥0U®–» <8 ìN] þµu ,§ðö%)_Áp¨¤òPw<ÔŸ›nOèGÙ¶KJ¦;RO*¬z m gñI¹D¹T §ÞWPƒ”GVÙmÆŒ2à±Íú.(÷¹Ü09q¡¡RÇø(ÕÜE5›Óþ<˜-4•íü‹ôM\K g°¡Ïzz ÊRqýDXðT°B´ºíÏÙ­·ås£ô‘¾š¡¡ù3*ßê>CR+>/z¤í"Ÿrv³áF:HUQ£Pk¸ÛY^!Ó½w«~RïÐ_…pµá¨“ó·rùòö h€Ý©¦?x³A?›û¯Ñßÿ\þÎy¢09PºEãÓ;ËFˆŸ+H= OD/ÿ v'×)ñ›-gèoHµ § kÑ~”…jZçHhÛ —C6¸­—÷`€Â&hNƒdlÅ"ÖÚ(øN·®Aˆ/û:ÛìÄú%=¢¹êÉÊuoˆƒð!wx›:£òxü&®¦®³+ÊH Õ—‹,pÔB\âó¸úšè²Ïs£x:ºž&¸ •l9íùà{¶_iFøLÆà“ûÂÍê­•' ÂàìU)(½õb§xþõÿ–÷”“Qe }Ž]ž8z ;.¡×ÃHí¹ñ£þmáÕní9ÏÍë{1 3[ÊVam,Ù_Xï<N«úIs a&5(í©QUé^AF I;€O§9˜ŽWlM9šwÚ•hij&2ê;_¼"ÃßsN*N²“ÌKûÈóí©€hEC·s%¯542ü¶:.u'ìûAN¡›(ÿ4H.çð«r…t…ÆÍO9¬ýûýº•]½¼ûFQökÏ«oß& ³#üT ‚Ø9ß#P¡)8(k7Ð 6?½ǶJZ Vq)Á£¨q™O ¬?”” ómS"¾_°•Í ƒaD]N€|1¼U‘VÑç< 2òP{nÕè1iL•¦pxó8Ÿï~iO}V{*­ZÌRÞÎÐÃÃÆC| [M= MI(.< í Xc·ï ©1Á_=ð¶3ÙÊí4^+ÚÐÇ™mõ¢?Œál¶¯‹Gè™åON>K)(mºãiN›Î,Ìc~ý¿ȵøeƒbP@6´ì9bÝ|Ê—±1ûq½Ù-¾É;ºJ¶]è5|‘¬\%“ vã¹ô§>'˜¯çid¾W±[¢1Çk¨÷» {°èŸåožûELCÞ.ÎhÒÈ Kn'žtP T­rüª)âûr’²C#øB Æ^²õ¿à¨>DZ„eP-wG •­z÷Ý»¢ÆšôZðŠ5˜ø%|éqóï‰óýÒ¿…²«…ÒÌ6ñ0 ÐO¾ˆ—óôÇ ž ƒgìýxÿýïÊÌQ8 ò#añ"iš ™ó„~ä¤Èy¹¶•YÊ/¤F–1›Ô §¨‚µ] L¢-Lû“PB#ž¾‚¾€ñŒgn¡RpWǨAn»6H<•6‡ã㩈eûÅâ‚ÙywÐ# SrÉxÜî¡Ëå‚êÁsÄú­ ²~³, ç¤× œDy]@è`“­„«ÐÓæ÷®ÑŸ9ÀÞ‡z®œŸ@ß#|td5ùÛ²‹>Ç'õ ÄlÊÍ>ì üfÒŽ·@ ¿ÈžG²/^,-ú4*XzåSÄ=ð’C·°sŒTH9@9­ù|B0ׂîX+Ô[ìûKFÇã20@²éði¼ƒŠ¥KÃOëɳ¯ž0 ’Á›Ó1™i‚\µÆÃÊ6ÌÖ²®ØEn ïXÂ…KÌËò) ý—KòÅœlnêv”úËýÒÛØåƒ`˜ 7ÚÞÕ_RÞ5ðòÁñDPÐ[àœi0'KÙI'™8¤.zÚl¢*¢fôÜéæ*4B9R¤¡%»cŽPÜågz¥ž_t£@q oÜ ‚m¾íj™êX_$m<hÜä·§½ õÄŠo q7ÑNÈQ/uÈÕh#t<3–|4ÒÀ |êO-3RN¹f"€8«»¤z…—†j4J,+ ,Tø’ÓÛ!}õt½èkƒ> *ÀdvfÖXé_ÓÅ("ˆÞžoW[K|šÔ[]ØY°Vø Χ‡„ ŠÙÑ»ëHQZX‹ýÕVÍD=r RZ `/õQ/0°Œ ,`ðëÉ~æÃzœNr’óŽ`¤u. €„”‹C7¾¯·ä$øP€XsvtbúýmåôO»×ËTÈõX*ç0$m‰ç"hbXB˜\E9Zh*Ž_q}½ ¬Ñ±‚å ƒbæb-ð]‰-0!ÑTïtŠJ×``J‹ÅU`ÔPxvåobíRnÓiO/"AÄ“%4'޸ɮ††c–‚‚Åêñ¨ÁŸÖß™­w‡›ÏkµWÑRl¢ír+ˆÝóKS)ý#äžÉºKÙžIX”# ‹©2LNcaI)NgùÀLJ(°€ðdARéf8"Fçb眃œ|b“ köX/Ô I•©R쟯mˆ·Plvå«< t¶%N[:¢V ¯%N«SèvHà‚ŽYi>u Ú¢Åo1_ÊÅ᪭ºp5Íû šü’Á°]«9H² °üEÈÝEÀå™ûºÈÜg›4Vü øhD˜õm¦!ä¸Ê-ü J~Ni!¥üTóhb>œ7¼Ø"ÞåÆAÀ4‡jÅg¹“…Ï à…s=Rk<À`GÈAëèÙTŒ{-ìÀƒ‹ † óÒYV£äãæ“E᳌%ÍDÑa†\Ì üR¹2ZO€à]‚:`v_N‹V»l6ç@Ô(¤)* ¬‰ @ê~()jnÅ`æ(ì†I…äB  rS!õ‹±ðPDo=¨¦•O¢í™“<—ˆîgä„H( Ž¥Ñaµ’]¶¦jÖ ÔìÌÈ$ˆÃàÃgÕew”èAr‚6Qª#Ú¾(4‘kdÿ¶XÁîä· =hS,ÎÆ$°`y¢û„kðæc$ vìBô|d·ËêsR %¤ÀØ‹ÝÍØàvøÀ ÌìZ+X™@§ÆÝ¡K:šÛOðÐø|ŠíÌ(½j?‰öÄøC öè4ëÆ^tœ;ºµcW{újO¬À¿8F"òýÞ-%k9t¨ŸˆZ¶wœkïmPž‹¥±Uí@”…½¿âÁ X5Aù?d6ˆoÇÔáí¯Å²†FÀŒ‹zÕKcY—vïØÍކ±ÍÀ±÷b+û±û©ðã*]™Ð›)¨È-Îwì.ÿ®A¹•ô6‰o¢Q_5ö9F9— p¾ÅÌÙàÓ+øCÒ1 àîé„´Ì{ÛÇü!†^ræ=Ú ‰šÃ;œáç¬Ê}¼X¶³Üé%Fæ#V½S‹iµ+h;7ùÒwóWÊ®‹vNÙª·ÙÜ÷e‡2}ÌŽºðkììîl-FœµÌOPí¨“£‰ôÇi¡2ØÑë(œ>Ïvr‚ì+„[‚}ÑØßS¥ UÙ‚½%ò‡¨›?tØÌh7£˜ƒÈßêÁ€>¾’srЧ+—2UÁïEÇžáŽ=Ãûý€Ž=cÍu+wh³!¸"<÷òä3MÃäOÑ­ôm0[.žCºcvÕJ±€1ÚÁ:èÃ,n'‹>ñóâdžìѼVrfÒ±ÖZÉL±ˆ‹áZùÊ9ˆß@)P\ĽíE9Ÿ…À|,Ú}Öi‰Ò)˜>ÉÕ„#iöÕˆº7uìXÚD䎞FU–”£¿ªïÉé€Ã~Ý9BÜݱ!H˜Ûù„‹×ÝÊ‹±ôÎ!±Ë,Ј]P^1(ƒ’ÒrkåQì,iô c#ƒc#ŽaýiŒ1¡Õ“#£7‘€ñÚ)†üŒp ì¤Èè›éq”[‘Ñá>’–ýÌÿHdôOÒ§f™Íü7Î÷oBÙ¢Zæ¤ZB;ÎIUG›Ñ$–d“Xb­s <ú"Q¦.jÆØnV^çÅÍLM5F—É¥Kã1m ¾©XêTôI=7¤åŽ¥Eå6IU(Ù`x›¢·Sp98Ø wà*Ù“¥þ,áFÁÏûÄ×ázØœ€CP]AG‚W„cÔ L XiPm¹”ì[§<Îåßhˆ©w*b3€ozc¤ó¤Tá·p.†®b(*è† E…TšpÏ+x,Ñ93q´;¼ÕíâÔã¦Rùw+~ WújwpˆNvG~bP@–Ø‚ö™¹1ƒ4ßãLä˜A…ù„­°"øÐ)Î㨬¡#Ô "9H…ðÞÞÚ/vÂ@ ©˜ÙN,²OÚ#ºàǶœv©[ç½Íg:XíbÍo­ äK@o•@ÏÛ­=¡J[­Îs"mø×80›”ß9Ä,pc‘üFykp¸cߺ•ò® —jîf=[ÃÇX䡌²ß ØoÜ\gpeBâ!NÔ!£×᯸¢­2?È`}¡~fú‘ñ=¢ 'F:D.#±€àÏ y±ž6 inqƒj íÛØ¶$]Qa28%:va;`D}ÇE#•ººxŒ(BvSfVà¿—-ÿlNÙõEE{1”öp*QÄn¶h¾@²ÄÖŠD9A4¯k„Õ$#©šmoÍeKÙ ªŽ‰­ÿqgª€üL ãÖ%©Í2\ .ì¸õ‘ÅóÕîû‡Ä(Rj¬]|í"ƒJø-¥’ã#Â!yè%ÔaËšÇoþ} DAÕ‡ØÏ5BW0©PÖÓXf÷ËéÖù_g“E¬Ù rq&–¾¡£ÌVK#\õ xð:9Ðâ¤äH} BBLÅ·ÒyïÌIðrïÜ`Á4y|(àä¤Ó ñ¯EÛ ïÇ\‚ïÑ;¨ƒåhx[¿TC„3ŒñµGp#ÎýÚ¯z2umE»Y±ØrúðÖó:›€Hñˆ[âÍ {îÖ“\wŽÑ¶ooÇnØ7vì28 ™x:>±ß$)»Cfƒ¬r§3zÑŽ¯V/ï1¨lô7Rˈˆ/)Gô—•6®šÖ«(„ŽZ!Ѷ–*â #„M+aÝ™O CÁšhù}…Ö‰‘V’Õ´T†b˜³béGàî~ Xðù!åU±N¼¨ìü£šÛÙ”è,Ú(Ö!uB™ðN'`i7³B%wnÁJ±Š;I•Zmw‘`¼‚Ê×ZóPK_PÈ=j#®ÜËÄC)…TOÄ&ú|3N„`¥µ÷ÑçQš Îóµ}ÀT,0‹åT´ÒTlsÕ“¥ô0" DÇëlÕÉ.U´Y(Á•c…~®šåK ÎÓâÝb €vI È»uðƒ½>‡´&öÖ;…ä.g÷õ¿Ô—\u8?Z-'?¹[¥+@‡SÛ‰Û-ŠgqœG°¹Æf<ÛÀG{©Å–R…"·G×`D.‡­83½ä]EÐÙkOO^›Vm8¬M›Xu¾ÁZÔ†£ÿ!lá1‰Ø´“ãN¨Oa¿Ž\Œ+vÂ<±†M0o|¡¸(X¯_éèâÖcÕÛ'ØJ.fv™¸ˆT€ýÒÉaÆTh³Á50è·$^‡Ü{b¥[{ ‹·á›ƒË:¶w·Àì?¤Xû}ì ]DŠóÅLjM*ÆÊž|›qÜñóÛ—’Ô¢P¶‚/¦¼Üí,NÄîLp(æ^ÜS×[¤To3%"¥µ6["&¸žZ]d}ÂA¿aÄ.¦º3˜w"n¦Ï¢Š\ X»¹Ðji!}rÐBNqÚnµÔNŸtYÈÓEŸ³ZaÛo¦µâ hÕ£çø„³ø_T€‹ÆƒÈÎ2.ïÉLþùäÁ ~Œ`Š`82’4WÀœÉð° <‹nõ¸úË𰧈-%è’”|œ%=E¡Sì8òǃQ.òaŠ÷ZèÉMPÈ87êtÎ^²¾ÇaҨĮ§(‹åþc"ÄQÐ7þÌ¡ëà}ƒ6KeE`¥™úHÁiG°FP¦D¯§®Æ©Í¸ÌÔNS!ŒÖ)_]„׿,?Ç­‡Ùø°Ã:r<ªB\yÍFÌaAEšùðKçûá3xg^sÅ0ó®—¤ÿLJĬ¶¢p‘x‘äð§¿píýl²ÿ‡àn|Apïé§1ȾAõ}RcÃ|³À Òßᄢ˜‰å¯«Þ€­—¾`eßìÊS®&ñ ÊÏæï*÷KO6Øýë—‚’éàt‡2õ«Î©H¹'ÛdàÀÀ H3ú.åm }¸©ôrÝö”£³+ÿaíO ž)܆å”!ƒ"‚¦:+q¿Æ—…({7‰– 5‰¨v¾[À„‰ÝAÐ{H‚IˆÌî @/õ?d© ( Jµ‡@¬}ƒ£ u†Šâˆr  *ÂðñIM3xZõ@ÉðSÃ:£•©ð¡j&s¢ÌB€A‚ý¤ªR™ €?«o9×XVzVÂ@Ÿ¹çFf.˜^í±·éPØ9‚,¢ö¬€»\òûHš/ÔMâFpAààvFržÔ Ã]ž©U°(ªn»h7ÊA–PA-` 6ÕÙd6ñ§ˆìØUÑØiϤJÓ4Zê-QÒÌ>6äÁ”pXª»ß}4cË,å‰AÉyÀ^+¨‚An² têϽ-_j!„À¹/—¸%x±ôâÖ ¹ ÈŸ8¤¢M}úö!‡ ¾oÊø±Ô­)¶>º šY<°*ÐOÛ–TÀºFK`λóŽ@"´ „à—Ìi!}æ‹£àT¢s³ÜÕ;E•£wˆëÞ=%!ë³ ÛKŸô¦@öA6dê !k6ð°ME!{!»rn-Csr" Ê-è*"ä GR(xš’BHrH½€öRw| PtÔ› Pãrƒ,qìU¸…uO[¢OžÍ,G…f{.tÜ9M'§}Vû ~9ÁàB¬¬ä½ÌÖOXx¯t§¢|MV_`v%hø Nà;p­ü™AçS$ÝŧÛùO€ròíó~æW~îrŠy 4;“}¶´Ucû,ÿ§MœQ#{I„m‡ ¼—®ô¶ ˜¿s+®ïˆ-°AÊÙª¿4Uß?“HœÄ™qý£åwœÝ¹V:¢G{»¾s( e> ÑM‡ÙGÁ—•Ê>6Å y© ©Ò }º -!NC™é³*N5.È0†çšQU3,ªÿ¡Ï])@8F@è" ˜?~È1ˆtÖJoÿ?›ïñ¥ŽÌ}öÿŸÏñÿl~¼{Åì^4?ÞÊãcåÇÿÒ±ùkþËüÍÿkó_†{ l b(«90Ä…¥‚ëI< {‘ b7ˆÿ§ä`“”ü ‘’?@Þ-È(ZÅCÐ)%]ÚéÒI{´lr\BÅÕDqÑb>’¼àìÆ'ƒ\ß/ÕIñÆfïg²‰7€0±7 ä@D°”ûHv#*¤K]Ø-­”.óé²€. 鲈.èÉŽ äKGÉäuöÓ$¿E2Ÿë½¢š\ )†„ÎFàj2úRئS&ÕÙCïzérŠ. ºôÑÅAÎI*]ÜtñÐe1í$ÁZþ4N y¨ÉP™Aªá!º”Ó¥Š.lBÞÆÄÊ¡¬W›ÌXa­ï«iÖÄ–†GGœòLQÂvE[Å”qÆèÕé‚tAz5Az5B:Bs*÷ö ͳ`ÎhÛЄl¶aÀFȽ”M¢ï œiOˆ*z%Ž ƒÀ‚mQ*yzhû.EMˆ»+cµ—ÊUQ9„$9ÈŠª'mî­\*6S{ýnMئ#þ‹mºù£?D˜‰“4u#øYQ[à‡Ôœ5•¿Iö/p^¨R@<™tHJo¹ö5zˆy€†ÎÒ:9tÖÝ7H—u2 ’v8]ÂcŸøðÀdöhM>ÎfçX‚OBß&dŽOlpγCúiÔI‰Í(]Þ‡4$Q3è쌰ñ)³+Û„¸ºêI÷IíÌäö*Åò3[Aè¬2ŒØXº†°r’"}ÃÒZ„Kkí5!ð–ù͸ØX0Åv»(úÎ Èr“"³|GKëb['³gf”ý9ûµÆqj¸ceåŸbj1DÒ÷qQøL<%Š¡û–&©VC^ôPëÖœ­Zã+xnøA]Rµl²AUÅmUìuHUÁqëPí(@+Â1ÙQ—Ô&uqpæ ­«0&AZãá\+˜OƒS†q‘f»9f¾Þ’»Yis— •cIá‚P!¨ý&'‘Ùç²t{0 GÔa(wƲ2…è9½XÚWáô’ÓÒæ-u2›gY÷e­±[t’šÈí¼>± Ä‹‰¥-f©®ôz8¿K÷j.È/OhODŸ¿©ÔÐVCBÜ¡û‚sôWcêg¸ßgR+³r?˜C ²fYÙgì4¿šTÕîÐß,ývü¤A&pì»uÎásXÙ¹DçÄ“>ð°zÈü½*7JýÄÔK“3‹&‡&jN§±UHÈǯê ÅŒŒ…ÎS¯²>£÷›_óSG{“:úcî(Õ²?´‡»ˆ•؇}¾œ¥Ö\ö©o"ÆIå„ܦz„ì©Õ0þð ÌîëÐö½z[ø ¥æˆVóºdÅUÔ•gp™§­g„e 2êÚ+¦I gy©GI^Ó{©äf*yJIÙÇîë`÷÷vüû¥¸_p%#v‰3™¡i[ñ)Xd¡»ÒÎzÍ#ªóèÙ\r`ßü®Ù e™bbAõ°Ab:½ \µUa =`ƒÂ¯ÁÂQÜ/‚º™)_Í êeóêx—µCŠ•¶‚|ŽŒO:’4ç¼9•ÆA A©sŠËzÁN}gnÅãÚŒR †œ=!- `=ÀC¥/=D*…Ä|´9kÌ•ÔP)–ºŽµQø$óÝgøHz‰]´‰­hÃù‹hV¥‡,¼ÌWK)'=…$8ùôÔƒÞLã· ù€ (VpB¢=#ô:n/“Bã2)4÷˜ã»ºTŒ±z¼fW¾ž]ÊÉ-îâã–ZS7šÝÏ*¡Ï\A_Àƒ¸gÓ-›Ü,è$Ùš•Ôh¬Çàƒø¬œN9מi§-ñ`$Œ6#0 CèmZDØ‘ Π 8qþkGlL’suA’.(–õ¶(ròB•`Š*„ó/-ñg=YÛ š­zr°.qמÑ+þvÔSL¥ŒcQÁÔÐÍÏ0yz‘ª`™AÃo>"zµnmL`ø(Ïóâ#Ÿ_jë >ÆD‚ûhYÂb®[¥3ª·È&ÆÈ&ÆQcdé¡ô†x5Aci«¡ÑÎ ºKÀÝ.мÝÑÕq®£+vÕÆÅö7›1*·|×#ñïDg†c«퉣Ý׻ůØU›Äí˜àª¨øE¸5 ña>+íXÔŽ¹<.¥­m¶ò|vå»4¨*)¦öè §CfÄìx-ÆéÙW$mC3U¦ýð·È&¢ôu>}ÿÕüe{´óæÕ8`øâèkܨõA¡lî‡o*VsípP~t^¿:ZB̯„˜O1$ß³‡ §®tÉ~ ⵳ؙ_h”+Ë÷¥½5FR¨5šÖhVàh65£¯Ü|ìBnnn¼#ˆØ‘ ²#?rZ-AˆiÿÖ CL{·ÊÓÙ0à£g¡Û0¿á~‚Õ/®*Fâ/… ÿ0¹Ÿ ?TˆØØÃõ²‡ï(ÿc=loÆ·8ç£ ¯:×ˬnp‰_Âþ‡í6ÊqÞ·äœ_ÍuŒØEhü°bBä¦|чó{Vƒ÷Gë´§Ê—OŸúg„ÂõÁÉÃ~ÕüÓ,1ûQçÉ…â3”ŒçªÂSÌtã,4(”Þœo‹µAÖ06OÛŽt -…©Ö_k§Š:ȚŔ¥Ï®…8Öíd=¦NJÛ¼ÖÐ#7•P×AMût=µßë©ßOã  Ô‰bàùp~‘S«½¤·ÿKÁõ·Ÿà¸N>DÒªþó ·ÒY­²% S¬ÇQ#UUµͲæNBÏÆ ÛÛ)KâÄ*[û-േÙÕAÛ8è–“G`Þˆת­m+[·(d“4ùó˧‚Ï< £ã xäá´œ¯1’ Ús|þ‚m¶sûÍüÖ·x—ÛÀû›N1×ÌøQMú?´k'Âù9Æ­ÝI’ª3r!€òÙ€äKÙ§ƒ±OeÑ=2 ! —“å1»¾eCÒŠ(dARž±b©Áu.¶ I #£Ž»#3ÏA×p„{Ö¶‚ƒZ¯Æ„®ŽëÿÈ?Öp6w á³wïBP¶FF!(·F~ˆ`C•b-Ë ‘#xKñ„œÇ|%cKö!ñ¹µ§F!ñí×jû6¥ @"&¾¤CMÛNÝ÷Cèp»E­Ðá'îBd]Œñ‡ˆOUƒàS4ŸöOøèÇŽ>œÿ±UˆÅ v;©#´¨ÚJ”**‰Þ0ní9…è#ž”LÀxMˆ¨%­ÇQH¼6Šþ4F/úƒ cÖMûÇgÒlXéY~³ç 1âñË¡NžIÈ4aoñ6¤<,¥j Äò'üBëó›ûÿ;d!*YÇB®”Ý>ðôXâÑÀâ™ÏŒ£váͦB*Å +''·Y~NÞ&[tÛÀh‚#¿Iäø;B6†×ó¾bŠ)˜5Šb ¦µò±œ¨ò µÚnÃ!—/,H&¸ Õ›0¯êà ¨¼,¡«þÂæõjÕ9N:Ç%€üz†Kˆ:¬µ‡øÄÈîQNò/gw+¢ª½HU¡e†Å|“{Å^D†åÓ$}íIéU;¸)Ù½òü" æÐª¢Ø½²:¥ŸÆþðiLÝÛ½L᥻‹Én,tˆû­4 ’a:nàtÒ­•J“DLüQ$‚.âÊ@ç®í‚žùo4ëíéÑ­0í)€ÀSŒß•+õ:G@ r–¹{û>büÅuQéhÎy¤êfs—SiUÚ"çœ0Ü~º`­ê`—”¼­Á;ð ™ À‹1™òDÆgËsuQy®Žu?älN§?{è¤|'ÏÆ]nù‡ò¹œ9ÞÉaRý'’ö/8 éGÁê’çà"ç²ÓO„›!`‘Ák)¸7žWqQyæBÉ]3/‰ Û Lûú¡ë&@ÚHàlâl`¢Û”Mè00á&'ÍÆã3 t®¦,x G\¶Ó¥•.{éÒFŽ@xŠ$Oô>‡}Ô™6‘ßÛçÑaÿ§×}V<ÿļÖeiæè_Ÿïg·58–tçí®H33àÕ¥{Í).Ør¦ÜÉ %1A/± ¡…„ ®s±Æ]·Ž­b§÷£ =Š,IñÄ ´²†chœÍ]È­yKT»P{ìßàM7ëª ðA§Ið$@µÕI©‘jeg6HÖDÆ…ø«Ùµ,ÄnŽHBÁ¢´$A‡Ñòç) ‚á,kúÎi`Å–Z”C¹M8*­ñ]åºpñ‘6T^—>ݧ_梘¾èŠkPöšè²°ÿ$º¬f‘øzýí£‹–¸ù 4«¯L?Eß!eŸhF‘Ô‹^+†AæË!x´Õ r°Æ 8T TÈÐÒV½BqâÑ÷²²\€)yç³-­ÔפІÆfj™œ$?%gF­é~š ÐnæÈ “Ôö®·¹{R®n¸lñ…’yUãç¹Õ2FúÃp‹äòîj ‹™kûk³a2B·â/28t4å(¨9Ì6(È1nê>Gsàld ÈÛ_qÝ ïuÎ"ÐàßH Ô6…‡„ö:¯Ÿœ4¢—ÆXÍùÊ6:,)B| ÏÛ­UW<Ú°ì²û¤<½›—áÜ”Y@ !9Hx#¦¡ÔÄ 8!¸D)É]Íxò’­„| _Ž¡æéjŽîËSb'çÒôö¸(Í;6Õ%È@k<.¦ªÊ9+…½‚&É0c•êðšhÅî¸ ¹›ä"Ú&¨÷¸)çç´AšÇf=¦¼PÞâò¡Íè'X\ ŸS´ê!dìƒîä³T!Rä“Ó¬ÕþeÙä°ö‚,wäÒùi…’Ã…‡(GŒFƒ2ˆ£bˆn²‘ó¡{±&ŒÑ)»`ëoën`'{=Bh\ëx%º[6Và4oõYÞq «~ 1V!ÞÁ|œ8”¨ºÊá ÆdψŸ9‹¶Ro»êI" çZÖ35Ê¥´6…ŘJ ˆ‡z2jl×°jF±ö·ƒÚsIÂ,±r§ò ã7õk4 ÂZ£olÎ~Ý3Z ” ‚W ƒòmG*J}l"‚ É#/œÇý £{ÿ{È—6Ù„T¶ÉfÀÂz¨jà7`ËD–UOPb!<>‡é}¾à5í“èèoÅ©mf'e:y¶"Ú?`Øbí°‚¿RN5%•$ñîÃLãÒ_ÀÀ®Iœú$€žl€J‹þŠäP—ñ™H½t7€"Àµé(¸‰”¼rýr¼õK´¤¦.'`Î}¼¤ÙËØƒŽóëEÏPW|ÜŠŽAКÁPÓVí“¶e„ wJË»aEø l²ËÜ7 ®¥RèÖÆNp¿ùÃŽîô¢ò% 1il­øÚÃXÁ`Ü1I§Ãv¬@ÇÎ`$•±z )Œô‘­%°£ê¼íŒ]zKó›*}É ´2ÆXv­: ïp5ÿÝ©¼/eÜ%£{ôÖ „è¥ènÔ ú@Á»«NÒN*yŠJº¨ä?©¤J%OSÉ4*™ ’éTò,•B%ÏQI7•죒C©äûTr•ƒ¹„Gõ‰ŸÄ2/_㎤yv Ž½Ÿà².(^lr;ê:ø3Ь;eùMSðyþ¾eô@ÝȯF™TÆ >33ïÝåRöE¾ áŒa[* ™›{‡2$¤s¼Àu^Ž”QŒêŸ‹·OÁÚ±^5¥^ú&2ǃe¿“RSd*¨ÍùžªøtJÊS´ò}F<2¨SÆLßòæ%CPd@ý,p2À_ðq}lþ:CA9€‰M¦¥¬#LVay“.æ„ç/,¦·ÄŸ¯ñóq XÀžÇºËýnò VÌ^ ‹óJh’›‚CìxÙ|\>bý¡‹×ÿL~jýû¿À(ð/Ϩ'Å:™ˆñ[í[ï÷‹EáƒÞÿ™ßÐïô¹ê7ûÕ¡È-ÉX»ƒ¡à\3”¦‚Ô¾KDçßÿ2Ηc(ŽKJ…A,íæÒO;T4fOSÐ GÛz"·(¼Þ)Q*¤FêýÛUì‘óQ)ªƒÎ¦Þ7Y!·3&¯A‡ªCÑù`žx{Ô­´ê;Šasà*¾L2´“w8x­˜„x!ï1 DÇõÞ|®"ß}¡^ ³Í†ŸA9¡T£Ô¿­ üK`0æÓçë…ówÑïþ ï9ÿ¬ß„b !ÔÎÌõŸp/¨ÅP«1ôYk¡üpc¦ªßª—è·“ÍÕNl4-üøÑ‡àÏ÷ÇŸN7â8áM­¿ËM¨Ð@Y‚¨pÌ= ,TpìDTX ¯Æ*¬•¨ dJ•ˆ$£R¿÷i…^úÌo|™ña’ßLsóq·¬­ùë”ó)ž<~Ló¼fF?zÚµâXyŸ3à=I†‚ý—ìEö߆/Œâ½ÙžüÁ…óonJz_¦ÿ=Ü“=oîíFÈmTxÆiIƒªjIƒ@QàWv»|6Úúµñeù«‰ÓTñA ú¨’||é/EƒýœÁ‘Uð<»%m|¨‡Teü]<¬ /ó8h{¦ ?µ*ã ñF­Ê€Ž¨Æ4Ï:XÕŒiÞu°¤µ¤ÁjE»·9düˆ3-°~hÕ ·z±StIжñŽUÏõè£übd†“š˜¢b§§¸=ÁtñW ~3è+‰âß)ñ¯·ä6sáMpLÎW M3‰uЛpÅ)Gp‚èÅjÖØâ9Ü–ì<³% ®0þ”n¸Ãå¿ô:‚WVe¼&î¼FÁ/½ëÔ—a ›Ä_—(às½U¯sߺzhµü—™Ž 9BCÍü2—ô–´‡xnºçÁ>è´(š%À“«¨À²,£æœâ›,üÆ(ýe¶> ¾›ªo+SV:Õ¶IC8£J­q¥sJuT«î?ûñ!>½Ûý΃ça9‚¼‹ Œ.&]zh¨ñÒ_f ØcóöPÂ~À^«þÌo GÀÝÿމ]þ]¹¨«A%W ¿ Ws¿kº°®u€­ñ…04ÃWÅþû¢£‰Gÿ©”‘pçâׄ+¼JÈCðUœÔH,’-þûÁ™4^§¯+u¼jJgãYôTIyjLqcÕ€§€lGÁx ,Îk‘ù×µPgÿÍð÷ïß•ÄO‹ÝÆ8c™‡ù s=q¾U{ª=üž˜Û'qnÿ£PÌ­žÒ·-ÇôžK¿ õž"û3{ ØŸ™Üëåä^’4¹^—Aç÷ {~/ÖòG™ã¿×Ûy’sΠ’:Ék,~M½ƒÄ©¾ïâIžîë$X¼IÓ=æëcÌ÷4•æ;¦ûŠºó½ã—¢ç°ðŸž¬*Áôp³[/î Wô9´x빪séZ5(¥VN5Ó´§Úô²®'q'è5–ei·@c‘¯e†Ï)Á¯…Ï9C£ô„Ö8Õ=qªO«™†j´xãáŠ.GhÊñ/ŒÛ%¸Y¡èÉk®¸±.â›Q¬ .uk—ª‘ÒK=zÙ±‰SÜZM:~ÿ}uòÄâžòCá~eÙ7YÙbÕI¡@×#"*™cb 78$>bbqoh¨X#±µ úž ?pÒ¯ýgg*zõÀ)£¬WklË;¬Õü>«køœÜÐeƒ‘w<‡^gÈש¤ è%gaÜiã*ÞùŠÙoïnÇi0žþ6=ow‹5w¬8¥5buâ‚ßo›–w¾ü…øeF™ç6þ¢¯d®‰j ±FK†«ŸtJ®°@ªeî•ShÆZõâ -5‰•5îH^~WÜ 5°ª~µ¹Ë ¬ºÔ›©ûÆ™¹³ô¢±*=ÌÖKǺ§N¼sCùÁqýB¨ ïÌwdbÅ-òWø¼¸A,ÁµÂã# OZãÝ-ª —?¢Šó ObºÇ ¡\ùeª²ìþˆ§ÎcFŠ Œz™ñ8Ô¡«#2ŠF¨F ¼Ó‹¼ª¥—¹ lJ/u»§ÇÇòúðêšˆï«ØVç¹Ìðæì6°n­±t„[y cÐjK¡‚Š b( …zÍq›×R1>rgS$´Qð£ˆZ©×”@5¾°Öè{$2[ѱOuÆD_84Lß7q |UþrMÿ²¯a0¼÷*¯_#}‰žÅµFÏOõâSóÞ[övNÅ,%š¯ø4ÀÝóU1ôˆzMD…DÙ†o¬îg”Ž»üqªQ0Ö­Œ#€¿®Øàj l@Êl¤KÛ~È£h5ÿâQ‰[/[#ÚÕ‹×·Ö%8²ìÆMˆîkôÀZ­1°&¯][ݬ=Õ¬VÃÏô4w{–¿†rÖ¥5"ŠèûD ®‡|FÙ½ÄÝ’ïE–rç†[Ãï¥kö¨Èê VßRSÎØeDà×Äâ„Ù«Zñ϶,[U(³ýøÊ–Åø¤¿)«žXÖ¥Eà„Å+۲߮À·Å+&Ô"ž$þ¾e)¾¯Åúvà“ >©£úê&–mÖ"@ËX_¸bµ#8Å(öêûÞÞ¹¾âFhÖZ+ñÇÛ¿ÔWb”ùúèz$E­Æ£Bã^å{>1ëËÇoÒÏÓ×~ñ¾Ô7wà‡‹v…š°x§˜7!äµÀ£Šh Î(®›X¼Y«ý.ʧ  P|aÇ]{ûµF vb U«ý •piÕ:–XŠ%Úû+Œ²ËjµïǪVým,±KëTÅÕ‹»´Ú§©DEù2Ü®ŠÞþ@•¨šèÑj¦‚»_‡%a‰¾~œJãqœÆ²„VûeQ®t—ŒMÀ&'sS=°Æ(Û¨—YXW3Ÿ‘A¬ËÆ ÄK-ŸÂ}mt ®»š&Ü~ØãËÞdb¹“½Äo Ý3Ä‹|b¶ùôÂk‹xõ™î–)ˆ¢áŠ5®G[‡ ƒã—Èôí¥.QܸÍ™ôC ›¯v"6W l®í¾Ä ‘XÝ}B€Å Åø£Ô ŠÍ¡d|MÂçî”ÌóyËaá6wÿŽH`p~2ß%1äÑAñ‚%ãïg%þæ\¯Ä/šgR^Äo…+ê…$àT €Îh;D%#“Ì&z«gaö~,¶×‚öã0m@òâÚ‰ÅÉ3-$G÷†@»]x©,¼‚i¿öÆ÷àŒÀ1»àYÐBû3ÚoÛU»àbY°Ê(®’„V;ƒ±?(`Ñg\ĉ,^Vë[k >òkè6®¶({YÇP쉨z$k`åÄ«ü;Gº—ݾe´¸:‚#úo†æ*Ô,ª÷8n7LjŸëࡎe ,©WôUݨҔ3;QS VÍvåŸÙ‰ÛÙ!Fq_Õ —è½Ç¨èû–>[ÕÛk¢®pÔÕœpâ£ééãŽèçÃ;Ýïôh‘ïÐ܇'ýL ý[DýuôîTÓ£¢÷[-_rƒU?â«!ŠóêH½àKjÕ¤‘é¡QFÁHU܉½$Üø’§{à²ú X×*|Féb™Úéîî—øJ-9µšu à2 åÔËWæ[H"¹N»vÛáò‘ª#8µªèKneÜà=‘ÿpP»;=âCS@\«8Ÿ䩆Z'ªÒÕ'¦ˆòåoÆ¿‹ýÁ¯+¾)¿<Ý¢"%a™wã·ÖQ]¡Éß/š_wíT/s‰Þ\æLsD&}µùM'ö)Ïpè—©ð#_@CðKÀã2þòˆ_Þ©mÄ:F‘»Ž!jÔ!nxnðI°ÌÓÍ‚z~/~£gN¹TOBÖÖ÷é/þd¡ø*dâU“n ß’/ñ~˜³/±ð§g¤ÀŸ|Ä(+¨÷I¸[gÂñÂ;}Æ­}zñ©þbÏħâJˆŸqÂïÂÛÔiÆÔ>]])Þ”w‹[,š;ñ–v.½ü+~oòÆõ³4¹S0Z(.ä^(¤ÕE¾æªs<>BòäŒÈ$Ĭ‰7áÁŒ•ƒæGò`æš×À`ࡎeÅ`Œ ¼-î›xËxþz‚ü~˜òëyæk‚ᯃ‡:–…¯±ð¸ÓC@S£Ÿ†Ní4¤«†Mõg"êŒúôJW/ç— ¸<=°îÝñ<ñexÒŸ¡Oˆï«ÛûtßþQ:D¢2®'â{@VúÄ4щòå4ýÁëîQŒâSsúo†©0çÇûû ¾vÜáX o÷Z  ƒ/êœ# *þ¹ç˜Æ{B Û9îˆ(5ñÎDÅ]»WìtOrý¦OR‚ÃâE“Ò,\þôâºaÃÝŒý%æo÷÷Ç/I}vco?·éŽû’÷ÿ‚Rºÿ&˜(ÿvÝü÷+t uù›ïZ]V÷ Ê„¾CeCC¹lðÎð-¨a æôß jÈþ›áÖl¹J,´ô³\S’Ô°áíÁ3ñ‹LÁ3¡ÀW±Àh«€Jø©Hšr‡Q‡Î‰‚OB³‘»Ì4(‰ïñí€Z%r‹½ÙG¡¾ý#,êûΈÁ©ïÔ Ô—Eë¹ ¿SH ‹þú> ý%þ»ôçaÑ߯2>6ýmϰèïß2þߣ?˜ ³ýMIËÄŽy]BÒ_âbô7<ñÑéÏÛ?̦µÓÇ‘þRžý¾GÐ_bú»YL`÷o¡¿D2ý½ñšÕeAˆ2¡;múòÁ"I™LnžTrS’[Ïð È­oPr3DMO&’È u©ôö[‹ÞÊ<ŸÞþm¸Eoç‡ NoŽ£Doðöâô¦e*» õi§4,¨Õ¼ö/SÚša¥Ý<ìcSÚW†Y”vfèRÚ£1},:›‘Dg·H:»æâtvÉ{¡5±«¹YÒ›“è ¦Â\|LÒÛˆ¼W¤7pÕôö‹S)ôö ém† ·À…ôöÈ›ÒÛ»½Q›îøÈdý§. ‰í—Œã7q§$±=pÔꯚJÕbJž„7’ Èæ‘J¿²è xèǧƒ;Üœ28¸¡ƒËÜHIWÖ}þ{þÛø?ÄÆÿ!ÿ‡ØøŸþÿ*þ»ÿ_“øÿ.O‰ÿž‹âÿ‰Žÿ)²Ý#Ç.”÷¾øÿžÁðÿ‘Áðß“‚ÿÝV⿘’'=ƒà?î‹+™u!<݃òç?º>>~Úiv®spÀf`ìdz?9a,~YŠ|b3æ‰{œ/þò±yñ‹ŠÅ‹ïU>Wþk¼øRæO女{Rxé·l^š‹¼tD¼XðÒñÏ“=`qö˜$Ùáó¯‚K–;~cêã7»èñ¥‚ÿÚü4$vX¯Cµý‡Œ©žuà%Þ!_¬|cªw‡iÆTß:¯øM~/Š15sÏz•µ._½A¯²×eY¯üë²ñU½½Îo½³n´U¡èáØuc¬æÁ&Û˜:~ÝX«ô„uã­ŠDéI몭WùëVà+øÊmL-XWk½*\Wg}å4¦–®k³^Í_w_ý^­k·^•¬ë´^‰¶¬Û`½Z¸®_£.ZWnuú tà™ºxãYzÉ:õ(ý=Mdú‰½ü6ú½ò<8FwöIüµçûÛçÌ·ãÃ|û’æ;iR¹¿Evß_|`ßéùŸÄóg»’{ó!½¿ÝüÉËð·â}°Šö¡MÀ†Ã×ßÿøp Q{mpįAySÅFgO*:“;x5’]ì’!å»R™ë&¤<ª*˜”‚À*PB~Ê#'Dõè5ªkôºÂ$¢(²º• Da“ÒøTRš°®Äz5i]©Eù@ó­WëX_y l,J%À’u ­W¥ëY¯Ü@+‹­W Ö-±ð qÙ.Z·4eˆH6%/I¥ä¥I”L¥ä‡’(¹<…’ÃkÅÄHb¾Äƒõ+…žÃàG$IZâªÃ^a]—U¬ŽëŽYÜFìŒëL«ˆ‹ëz¬^# æu½V0»®;eÈ6ÂpN÷†³¼’GˆÏàÈA2›0Âà•°ÎýŠü ž:‰îXj`ñ9‹Q› Dc„<ôö†snô«$Õ ³©F¿Iâô $®ð:‚#m^& jú`ÝÉ g¸H'¾ú5É'RûYyöÿX?;÷Ùýt\ØÏp*zê©9²lÈ&ô¥KÃè>%‹×¶inóÞnX×Ýâ­çöþÛü*Ýï œö-#p¾Éñ-=pþ%8_b~¹[ÊÆ¿k—@7QÁ€x ápuŽŽœù?6G+–Øs´àLÒ‘|î™OöArçÁý“µ§æxô²S+'[¾v=U{ÒCÆ U/>¦¿¿ ÎÛ–¹û<Ío{–ÿ}*λôÍg]¢Ø÷{*îÂ[³ô²&Qe¸9[/ÞhTôÌf7¯b±!kÒ=^~m4|^½lƒQÜd¨î¼÷*FA é@C¤à«.£¸A¼ŸèùaÈ“÷^H3ÊŽå•m7 8ø êžò# v$½ºÛøŒ²„îÕOL}lͮбUA§wG7xÁŒë7Ê<èíÐ̺G™kúÿ ÇjûCÃ7ù„üÜý+Q²ö8y5§µêUà™"{›‹®8•®ÕàéïŠ>ðBÉ3=…áDºö(xÁôûk6€G1î—ö<÷Š'Î\¤E¦ÁY§ŠM-6zц/æk‘éè¿Q±¹%pÞÄ7EZdx’ÿFE´%ÐNïÛñ}¾ÙåHz¿½%ÐIï;ñýxRHYï[Ù]Ü(îÂ÷£+f3†Yq½~Z@ö¶¹°a1/y|L)ƒº¾—Þîp6Ëc኱W­t"<\ßÓèu‰ŠÊÿ&^9µjnT´âÛ ýNÑèFmúYô¸´ê)Xb;–(è´‹±À@j¿D%T­“ UD±DIà €€¢¶%zÒ´êóàWP±K,è´ HkŸ¡éZ5¦®­Ø„%÷öŠI€¨]nDàý)ðwÜéqQr8îÔ¬i\KŽáÛÁ£Œ¦c |Ø ËÉëÆDeô29iÝ.ôveä4¡§6–‘Ó]ãà2r*â·bš…kÙ]ýÛ4Ä·ìˆú8RšõâœWiÞ':5fŒa‡S%°æ‚æµü÷4/;s'pM®@«E~ˆ¹qOœ#æf‰57¿‘Õpµ®Àv,Þnc\m.OTðXs‰Us‹ Ì=ˆ5‹{›g,X‚µ.°jÝŒEÛl ¨ý3O]ðz¬u±Uë&,*Hh/Ö*æ0(ŠŽ‹FîªOÖ¥¢³©G{j¦G:œ ¶Õ+xpÕ2Á¹ÒŒ¹ªØþ†<Æ\OóqÏòבcK\ ß[áÖO ÷–Ÿƒ2dé¡Ñ½¬O/K„Ï ‚Çà)âÕçõÐA#ÐK˜RGßÿ€CgH€Ê3ñ>AïK‘qÔË¢’0ÔCž‰sÉßÔCÛ%Q†ºð;Aô÷æ4~ÙÊG;9â—‚äaRQ‡¯÷ò™#dâׂäëä{ø¾ ¥ÆgÖðtÉDùo“Àó·‡b9ES…Ç¡=%g±ð¿÷)Ú<ßèïå6<­®œêŽšÎp—+œP‚îpÂÿb]Õ­ngüs§§º•àM  ŽÂiË/ƒ@¡U[_‘ª€ÅðÔ|ñßQè­úàP#Y 1îWó‰R?½rªG=;IyÐ-5¿íŠkÆý)Ò–@÷VNv·"ðæ¸†³"·féÅØÿ®ˆz›QÑ©5ŽtÊIJ®ò^!ñLµëÂqÝ€IÎþã°¯— ˜ÂOüÛŒ)ý…7æÕÔ_1Bâ4*L}¢QܣߪƇ|ÄÅpéS½Íÿpé÷ûú§ˆáçqà˜/å1š= ;·%óò™³ÚžŸ³Ù¸þ'Í—Ä$5x üÐ&¥‡ÂŒIîÐxìÓ(œ¨[`¢®·é7eü·àø—Øóu­èÎ×p½Ø4~ ê½‘ñïã’~#éoåü ó‡¥â#‰z…™<©“wUòäÕ œ½¼û}Á±¿Ã†_‚Éz(¥—ðÈ|è^ÚZzÄ”Ì33ݨB­ú¦û¼ø÷¾XeÁKA0öÂôÑù<~“×2Õ¿­Ùû³={){.Üq{ö>Êܵÿð¹+ŒÞ>êüÝðAó÷µ{þ¯›¿ï_8›î–ów©˜¿þO™‡Åª`ÎQ/œÆ)Ó˜þ3Øx±œÖýqéÏÓýŠþ~¹øÿºù„þß–ó7‚çïÊ7/œº‘)S7äÇþV¼9€þÀ¦É'#ÙÿéMÜ h»Ï sö¶rßÝ j/xFÅ%k\…P`¸ŒÛU!þƆ+üŸh¸Äls EÂF@!(ß>(N ÝÿëAþíI±ÑûØwýΧ9S0îçâCãú½pJñÎSЉeɽژ¥êÅ}ñËVN£)n\Íè!põ=ð€01}%ïó¯ÁÓäW\¸ÄMü/q§¥«¾å>ïžæÆ¡zõ/q–çóÂâ>]Ÿ†Š‡Y>œS—x[s$8A4—wkWeš1µ+î2§"%.½­ÙtFJúk”{åù_õ'ºúÄ̇ÏÜn†œZmÓßL]rNIÏ%ªaÜï5~à ÿÀ-0°ÿ~·ù*FiPûï÷™›„\©¿Kj£OÈúï÷«ÿ8†uëïÖ õèKÑU…o©CÓÚ¨þ›á‡©Ã¡´:Û Fç§Ÿ„'`˜è z*ÒŒ|wü„‘ï‰÷Xö PãµÁy­m5GèðEø^Gðz‡ñU¯1Õ«OöBPÅÿЪÝÀG0FRõÃñËŒÛ=áïƒ+ òÿÛÜp:ƒÒŒ™nÌ™žš]ÁtcŠªOVÃßWÅŠßKÜ¡4½Ð-vxâE¡'> åó èrÞá`8LλôÕ˜êѧx¬UŸÖŽ+ů‰óÝ¡az‰;~)'ïJ<ñt}Ô™šwŽ‹Úúbš•e94igÞäòÜnNsØ·ão€ÆMâ œj—|þ °Ý„,TÿÛVAž{ 1×üùy€,ÎphrdÚ×ü]y½÷«ãŽÄGÞã(1¾­¢B5ä«ézÿU,÷8ÌE}'2"S¯ñwéó}úØÈülО’øu»ДGæwµäSü€üº ï·Ë@Ô^¥ï7”‰.Á¯]nóÄ»Å,Å‘¿ã­ª˜›O®‰JÈ~Ø Üj²W°}¾ªßá_ o– ÕïðÄ5,‡[÷*¨[Žwyœ¯ƒQ<†C¯…fKM&Ÿj©É²~eË“~nãQˆH{:ß·0è·ø:´C,%/ Á×óŒ-¨}ÐÝÿ jîŽ.ÞbÀc»ÿÂÏo&Ã7¿’üðèÓð¨vŸ/‰l ؽôPÝébÚrƒxp‹V z€Þè[çe¼6z=Z«¹6«5>ÐÍNpj5S†B=„¯æEpT%¶ î HI$°¢„>î_ê1[ýÐý,8&uJô ¼« BòÀqÀøÁƉüu<#*^Á WŸÎÔ–ºU½t¬*®nyƒÝëw]6 Ö¬_X7_ì€CK­ú§GjV£‡æNF€gLWå±Þq»òþ /+r"ÿ1©ÏZ2Q¹yjxk¶1)SkœäÕÏé¾ÌÉy'Êc¢£U«À5U•³×ÿWÀþ¿B£‘šñu¨až¹êRèf÷ðŠÃš­zBÇ+i&ß³)0F¢¡Gî­»|H} ÏC€%u‘hÖ `[‰ÀO?S‚×ãoè¸3tEÛ+™g®#é5Ôºä”iªª8•fúäú8•tžVAz oñÒà|q÷o“)"íUýÚ{o ùm†À·%M•34Õ¬XÁÜH\ƒÅ@ûÿ ì#¥š$nõ2:3>MÖ¦3“(DSl|ûA½ºj¤^õ ˆ*ü+”?ÿ­ù(ü@ØÿŠŒ'ÅX8ó°ðÓ„…´þüë¨xC¢¡¢tZ&àÅ œ¤ QnßiyÔR= ‚½¶~±~í—±ãýDïôËÿeß@ÔK´¤só‹N{è’¤~U×&P½÷kó<Ÿ~åýj¦`»©cÉâžÓ“…ÊÏ3¿µLÒÜÈnÌWð(RÔ£L|Ü.H=„Щ©Ä¥¡sëƒtêQ†‡wŸ ¥þÐf±ã*fýÒãðˆ'%'%}%Öµÿjϵ­T?‡o‡jÏ©Ÿà‰«ð#ok(72U™ðT^§o‹`§J¸æ\ÖÞFC¿Ú‰²ápw ØÇ¨ÙZÍ'û‰Bˆ‚¤s¦^ˆ¶ãTÏsŒ3U{ô²`ù‰~àL —Ñ þÐÃ[§0VàK¯34L<@oÌ:qïÆ{ z宿†‚ePxra•*<ÂÈV¿hXÒ«~ᬮl ôªTC‘NA«ø½Ho½î”7¶jÎ`À61Çe8¸uÉ.¨vâ>Æ$GS0|Hâ}bQ}ý!/ 43] úàõ%‹cŽÍñH˜vVOµ•bî%ÐÓµGýô ô¶ÁûŠ ÿ”ÕWøåÞÖ÷!ðNù@ÂÛmooÊ‚÷ÅÆð¯À{² ðV¸ã¾:A«óÈ]}çm¢»`þw ïpÅáæ,’wn3*L!à,×+Ì)y‡ËßWœ‚€,)Oe„.IÅ–øPý47:îˆêçŠñ‘Š^½â˜X”3à»#š7*ŽÍ31Ýq ‡ˆN3½Z£ør'ú[0=‘»Ú“uq·øRûÛRgd¾»æô²»VºÄÂx:ðgÄg‹Eñ±(~.¨›±²úï÷˜_Û‘ø§íûߊýšàqÖý:kGØ÷ŸpÈupXx›wVÍéÊ_€UóÔÀ3®Ïñ‘XcŽ 1`‹ûÆ!߇÷X¿aHÐù~8CœûbPfOÍ{©üÔ¸#yïVä}Íï¸ NÚ6—ŸŠ½sJpá½DtHl8¨iSóÞ-?ZL>^eË\ ·5f{@œšíB—`©Õ3ˆâUªÃ— «2@Št |®Z¿ÎÜj˜® æ;ÈO‡á¡74Ô0XÚ ŸV9ævØ»ôÁ(îcN X,ù‘Î ~¾rXø¼¼ £“†ÏתWáVý >,½u·Ïíÿn´kÅ£Çp­;å¨Hï7T"·ß3LtßaœÕ„Á~ÿ;w,˜s{$ÌÂÞ=9¦ÿ.«èqXpHïÄ¿ 㥑zãŸeyívîÿ1Ôaxâ—ÀÈùÙRŠp%zòV pT‰å“íëà¾RB(3©#cÌ_,’"ò]†¦÷ŠN+Ëf˲ӌŸ@ÑÜ2Óƒ<<±dü2ïí‹‹€Øî˜-Èc,¬·?WV:qÊøe#oñÏü÷ä4¼¿¸G«¹™ê©z{ ©éM]nÄùJ÷£?Ì`ŒÚÃ̯û0NG¯Ÿÿën¥'n|¤Üý±!`‚Ý¿¿Èjãaî×­Sa`€Ý(ÿ\°Ö\msGﻃámsGÿ›ø/®7(ãÊ"„›§¸F%ù®=·•%œçzŒÉðÀ5ÈÅÈG‘YÅ‚ôà©‹·c ÏõÈhˆíVä×c]ÿÏ­GŽ»9>Êz”<'©ëQò|ü«ë‘cÀz„s0 ×£t¹eñzôù"Žä)öáWDæòz4C¬b=ú¡XE&çuðz4”± ׊…h£.·ëô´á]ÁÏF¾–]'ã8ґؘ\^tkê•pÖl2Í%N[^³XxDo`æûC™F…o­V‚ë›CÐy#þð¸ÓÆ}CÇ*¾Ëû/XÞºDÁˆz *}á/ ¼rMGñf:¢VÊ(åOc/àò¹`À ]/õAYb,×e]‘¬ˆ¹‡ñ»îìš&š+˜2Ú£½×‚eÑg-‹ÚcW—ÆOãÒxIü!±4NKã¬øw¨¿ó`Á1Š=spM|lYÞø¬y`­£çbW(Þ …Õr¼À‡”òá~*õ<»´q»GP\8šYr›yƒƒÕ¡ËÅ*‡5T,¦Úª»H|æ D;¸A10Wm>îÒË6´Ô,”:‹@\VÎíNÀ…ëÅН+r" ¯õÎ¥c3ußqÉÒK'¨âš-®n d£ˆ•w®§$‘²:Åúªh‚ï1£ކ:‚c?ŠuÙçÎ}~Sɲ*ŒIù8›XäUƒD¦¬ŠtSÆŸÄZŠ.ƒÈž¢”[”*õº ¬\÷åaw3õÀÚ–@=ްf1UPÔ2Áß›"Yè’¥·;p&´AÔUÆë)RÝAŽT¼^òOŠ<AÐZ俜Bάî>ÎWš?q´s`üDˆTxP‹¼«Xñè·ž/°£Õý.Éߎ߯ÁúæÃ :‘ çA×j‘1 9˳[¬X¼†®@xTuo{Ð[uV ~²»Û!ãEVapM58~¤ïëÆÔ]¬£,ó6±U:æ`Ð;iBXÄ@JŠÿe”eÝÈœ) ù”öñ»Ì :ì/œ=¥Î(Îo2!ürXTçíÿžÇüC_rEŸJmìÇ=npúûv9åÁ›»g ·cÖmvƒb‰¾ÍüJr…‚rD³§—9\5. Ĥ6õBìÝ l›°ª=ˆë­ÓuA¬=ÀŽ—º”–~´¸CíÕS)§VžÎjJ[ f”]m”­žXÖªÕ~ʺ´êŸcÙv»ìC\–BøÔj/¡²jð> ´'˹\­QV Á k÷¾åÒ‚31Ξ,·”ËQ Ê­öÇT.=øI ³'Ë-árÕ,1¡Õ£!`ùõøÔ½µ[Ê»^ãAJˆ^¹Õaá?oœÐ¡{¶%o¢äÕ‘ðlõð•˜Ói«Ï%|ë7@Ñ~Õ­•—Ý~’òç¿Í›­Î„ŸÅL{ OQ”~ü&òXH ÞT9</‹ÿÊ߉áÁ1á„'8)>î¡Â/Ì59(9Ưò©ø~®¹àFzà¹^ÿþF©›Ëêþ9·ϯε$VˆJ„#/GægA˜GÆã4¿EþVqO]’|®k¾ëAwÜéúÂé0aâ8ØûÜnÞù”=?)ß\.Þ„¿èiýbêÊye}Zí¯Y$í‘kÐòž.âßLý- Ä$ܧóÝžà'Ä_%4Ê(˾mq),ðexĪû߇`™•…ÄÔ÷CôК ¥ÅÎÀ‘ŸƒH¹°þ#†¢@ÉÔÕq”xdÆÊŇÙ.w}ùAŽNÜñ‰·?ˆÜ¾¹rq¦¶®ãþqHCü¦ë£®Ìcxœ¹‘ Èï‹ÒÝJ:Ñ T~PHåÂåN!óOO_줅ÁŽ_,Ö"÷…!Œ‹=¢ïr=€(Ʋò"î„£$Oô¥GäúÒÅâ#:ƒ!jµ7×ë; ?¬*Ú*HÑ[ûÕ†U®*|õ:õwµŽ\fu^;D«ô…ó—êxªŒ’d×|—Öˆé‡D ®‡=ÖÂó×4\xÖ¿2œ4ÅUëÎãiÖz”œ>õFçÀ𩆳K‹$PŸ?5P=1 VŸg“×—äø©Ae`üT)ºY‹¬ýoEXk x¤~^0äðòKÄÀ³ô‘ñaàß¿Z°wÝ+´LvÊM¼S,To:(Ÿ!}“aªÊ ÁÙõ™žx:|±Ô˜)Þ0–s„ä ¬a&ñS£¤:´šZˆ\–}ú‡lÖ)WqÙP¯ìtÝY/Ú*ÿE¼‚N­­âŒ8‚™ÆU9 í”xŒnÝ)ãSÓ«“»l²K"en›ƒy•ìnhV7Ò0€q6¯9ZÍ?­ðÄkËkiy]†'¦àÃbe‰Ú+KRðá½’§‹õ¤ÊZOÖ'n—QXÅ*RÄ«ˆVýäàÃÇdða±~ £iZõ¤àý©Á‡ÅúÑÂë‡V=Ë-ìç ÅÌQâ³®åºG¹xþf+ƒb¶.&dÛ’—ªø¬²ì³ª8õƒð¹¤XÅ6%ñ„+V»ôÒIÔ¿Bà²2;Öp–q›c 3!-! n³ $ê¯EMÝpH«n ýø E8'½O&¥²*Œ7üt2½$ÑS÷·•ÁÄA!ÁÝdËwÉò` ÇUç~æaÓÆ“ðeH q¨^¢ÈQæ¼D2öýH‘Ø÷(Ê6Ù§«û$)I¹Ïƒølüv‰ÿ3¡ïyl„VSªü’Uåx%¡1Ëu  ÀïÄJŸ W¬å<øà·Sq\¯˜„ê—÷KT?"…¨‹„ XßnaýŸ¤u‘0Ä‚",ÇÂÇ.ŠXÐÂ,¦…àü”˜Åƒ†"$Ñ/EªÔÈÅ eñ”±$«ÀšÈ¯}ý©¶ÛÐcöŸõè!ÓJdÓE—Nº´Óå ]6“˜Å‡(3é4AK J,,ÆÓÅžû+á–l½b/ž=ÍÒ‹[ÅópK¦^±Ý(޲)]¼;µb^ª¸áÔ¢o‚ø¥ÅÛÅ–Kl¶uß~1kÅnRûÓÖ<-Nì±É 7x·D Ö¼wZÒóN0 ¾{SèªpE›@…o;±ÃÔïÍ0ÜîáâÑÊÀ»`îÓ]ŽÈ~ÐÛðNGh„¥ÎéDRaF|ÏkÏÞ”–´éef÷‹@3áŠvGðLh1tÜi2(ñ=…ƒ%mÝa}Ǩí‚YOħÛõõÐùFÑá/†fa­~èŒVó{¬@ÜûìQìl mŽgJ{tÅf­±¢G¯è¤\03Ý9hY}7[«¾†~ ÕªGѯ1ÁaâoŽV3Kvы㸠†/¸,>÷épîÖÞ # Ò¹Cï¸V‘9t¦$ºººÂB ÞÔØ 3ªþ(þI!Ò=p7iyÜWÇûs!Ä—NÈ„§> ^ƒ ©06YÄ“;~È4=8Dûäqeñ•; ¢tˆŠ½‰ š²Á‚¹±=!–=êvhµÕÉøËØ|,Û“°y*£á}ô{Z9ÝÆ·m¡›@kcaÙï¿"¿wŠçU_¼i\Tøàÿ“=/®BAò^\šYGàéâ2¸_÷£)p>¸)àE4•C¢ pQT8ž*1A͹kã>en49ŒÛ%Í =AM{*ÐCòÁ伿ò÷ª¾ïIÂÝWTýξøPãû**úŒ)™`*˜˜Ó¢W˜˜ðÒ²T°Æ«"/ò•,pîÞš©—õjOÝùž~gO¤`ÆûFÅ)0[D|3 õ'FEo®ú¤%˜˜å°q§˜…;Á £\ckªë>°ßC¡ßÿ—õXêÖa¯ù,òÄ£vèt8Oà›‡&pñA÷ƒ“òÞ­œ¹µèk¶ª÷æ´çëÓÝ-C£Á(Åç8ʆy—,tåÊ2H©°Â+P„å7`.û¼}À€ñ–â\èòÍy¸nSñù”òU=&=@>üÑòÿðÅMº»ÎWŽëÔûÃyW¤Çç‰ûìà âïÐ൑;£zEÃtÛƒ<\–G¸_pÊ ²Ÿ!ß\ìç³s­~‚ DZÙYð™(ÀùžNéB¶¤¦šÓˉ~å=ìÍŽ„¢zhƒãÁÝÙËhƒöÜPÛeC³\6.‹¸ÇþCûÐccxl ‰ 4yû‹7/Ke=ºløܯ†>îŸqz<ÌÏN‰Çeå*8ýÈ–ù¡¡sÍ¿þ4ŒG`ýò'<ŠŽ¿NOS¼Á›ÂÏ—T}Nóï„ôRôÀ&| œ—ÉNóä$Ú?uZ ú‘A©êÀõ1ÐWµðò7NçûòƒŸ ?Tè¨ôj5# ÈC핊„ó úÃ%…ýݧPhë3ò}׋º¯½þ„2«f)ιæû£Ê|KyŸª<ŠÿÇ(>¥0¤U}cÔ«z[UᨪîTÇéüQÙÁφóýJ¸d´2Î5£P†½Ÿ¢@Ú¦¢)nñÙÂQ¯â§!ù©O ÅŸàà>JHr_ƒÇùnÁ¿Œn=×üªb¸Pü|ôG‘Š^è|Ù)#ß»²ÀÛ¿BØ_|J~‘cqüŒ+÷ïÇÆ.ËzÐ8PyÍJàT8Ú—€ôTšQ‚"w&¤}s®ùšÃªýkKœzèñe˜ÿà‚ûúmj¹Ñþö>ñÑ+0Ë.»Ú(î3&{EW8û¿˜öÏÖ‘îàçùmåßkŽ„r¨†—5„¾†‡x.èNMœâ ¹úESG‚ ωSé`f›¢R°œ_1o¿@‡ÊÆÜþ¥™æ—? èTõ@¿°åcìÝ‚s=g ¦r/¯úö¨3sÌY3…<Ò ^F»´ÜL÷óF‡£ýábûk^™ø{JchàTp¡(ûôé~}@©éžŸéZHœ¹«Gߦ¿bÙ¹±¸WyÑÛÐÆ²>å•{soŸgþl­Ã1Ï<$þVÍå5*Å¥]ɱ¥‰mŠýo5y嶺Þo‚Na%]P%0 úgT:¨ú+üÛ¹}ã´rÿEx²ñÿ/Ãë Tßì ¸¸¾®eJIBè%$Bq‘:ëAê?Yí‘ߊԞßÒÒ7¿£³œÃ3°|VþŒé¢òZyŠÉó}å¯×Ê?{qù£ZyQ~ÔÀò£xùÀˆú¥_ॾÁêràhWÔólŸ¦EVÍ4ULSJº„½¶a0V0Ô>ìÎ V`äèå7øŽ™Ò÷omšiUŸ¬¹K{RdÌE@„ª1G&¼JßÚ×yC¡ÙÕ‹ZlàjΟÞPe´ï –ljÚ^IÀAúqLy òk8›¤+̪m4“;ÍR"ÎçB°K²¢O€¤BH*äÛ“Š70cn'åÄ·)’Eó|oƒ'2»Õ›‡CµÙ¨²„^ = ¥ÄéFB]™¨ –Ëñ³îi̳…^Àf«,›ÔPKxˆ¹Næª(qÊ}vi§û2{ ¦ž|šŠ Ô;“ ×Ý¥G‘íùùeÉê¾Lýë<,?*ìõÓBœ«WJ Œåô ¡y0fçrEYÈùê¯3û¡Øï. ›êá»7#Ú›MÒjy/^LÏ ‡ÊÉE¾mCÒR»Åñ:ŠâPÿÓáñ¨P½@±[ýY–vdB;/ Ï6œ>ë2KÁŠRžÀ|5 Ò Ûå½´v±õFŸÛ̳däOß:¬H}È¡ \Á‹ki'tèäÿ»› Ýï ºÇ$ÞÎfMO¾zw8ºÄåh¬˜.AÓÃ|ˆ³Ã oH¸ïhñ=Lîh…ç hV]^LÚ3I7áYbvbö#ýa Ejkœî¾^ ˆƒbS€Wô {ÍùêÉõ^þYD¡ÉEê3F¡…i'°ni¸VüF©©9!WïR@ö~ÚÀF“6|Óaˆ¸ƒ&|'yL±ñî:ë6”Çù¡ÈÛä8çY<*­lÄ: ³ˆ¶ÙK¤1E™fƒîÅ;ÚõýÏmºphÞ†cgy/Ÿ¹â‹°B5õE+–÷&Ðð æÛÃX{çëÃ|;bÅhøëbP´ ¤ÁË JЇQ…«6e¤y`$¤ÄQú`)>œn]‰g¥£­{±eH ? Ô½tªt§V³˜ª<òþ>0Æé”s³çèÌãÇX`‰[ÇDðÝ4uü£×-Ö0Ç÷«ý£-=°r¼ÏuqCþûQÛẖE*ð©X‚Ë“é&O¢¤Pxc6ñÕ™ Ê¢ˆÚûœ&ýÜ¡ÏÒ¯Òiê}Z›”'ˆ–G­Ô: öˆÈæýLËšÀ‚Ào ŸÖøÕjÚl£µ ßB;°ª²i´ÌGö¶÷j´jŽxâŠÔn§vN“G˜ÃÍž ÍžÙ2U0*É< e/gptA¾Fy%\¤Ê<ßê _òo$’xCâ=ëêlÍØ+Â3 ÝÜ£<Œ¼ñ2oÅ…˜˜JmfûQ/.d²@ݦJïëšóün¯{–§QØ»/_ýt1B ª¸þ7©çHKj7'\£ ¹;F´÷íÅ ލrVdMw¨çôIwùÖtcGôü4õç³ô¯ù|¤ 8]Œ5Ð+P_2Ê_½”íí"½žFûÃøÜd³\"F†"Üá?lâE¾É6šcpv‰Áñé+E7¹Bs6øëâžoDŒs;çSqTÄ@ÆÓ¤8y³Í$E¥AßH0ŸÒJÅËP^r“£ëë°Ê\ˆ½dȧMO’“ ±îˆL€²þ%8Jƒaå†+<$¿vkòËMòëççI~¥vn¶wžjrõMÅ6õMV ѵï;Ö2™Ð`û&?à€ßM›%›7X¹XÞÎÝ2zƒãR_Â\\-É%† É»IHmuU‡¾€J+båÝÃZ1]ý¬b³T&…då¦×Š@TSàrÔC±£y²¹r¨[Ý„G*7„çg7ðw–Ãv; ŽÊÇAô¬5÷CjL„»ñ4uÊLƒÝ'˜#UpÎð·(1g;{÷ý&BE)(›Ø ÏÑŠx¨™éFÙƒ¦pwÞ`|Ù½„ݘsi•p檀~¥“JݺïMÀ¡¯",W¨«ªÞ™¦é´žIŒ®Ë ÕÚ3ëòúà/ZÓ§¶é:oÚвQñÉÌF…÷‚ÑH­MwÎÄÕ¯Žþ1Y`ÃÞàV{uˆAr¦Ç쉢&PõU¤ÞÕG E·.’:%ÜÞô‘YäíÀ2¡ÉP·ú®A‰ôÐ}c eóÇ©š¿ï}´J§Ÿ¿¡¹Sáó8ô½ ù@§îŠÖ>n‡¨-Z¿;ÞpÚÄP(rE\V)ÚâX?†zàò­Ç*þBî± 5¿ÅæíÅŒ!»”ÄM,5­Ýó{YKc÷xZú cj™Gk‰í™wkþ¤üS!äÜBúA8²7"V¿üy˜ÿêùWDæÒ/–ŒŸ`j²áRG1†+ô—|]DJH;¡-4 )RŸ‹ÃÞ¯.*‹*Rg“r2ÆRò•œwk•8 ž”œýÁt­4óxú=˜Ôu ofÕÌd±»jf¬ømÕÌ«%s¦|Á.]]5s9L‚3EvZ¸ì@ønà)ª%I\㱋Su?òÁ‘gÙÆ›¥ô^ ›:t* Æ'j1Q¾Ñä‰ÛEc7ûg¶,­a-YÝ »­K·þ:_î»qtC=€ƒòKô¥a—ìI0U^Qr`Ö‰ÒÔ@¢ž?1"y²?9¬#ès꥾zÌSú;R ì*õ³«p`ñ±ÀSxŒ Ú²•g™¶Æ·qø±Ê6,3?ÍR[7 3q9}’Ö_Eîü²¨õ/4ùázµ`˜ûÅê“ÃWRc/Ïëjf¦ø+\0’ºOYà07f<@—C¡_0·Ñ?™´°Ô€¤Ã ’.S}E¯U)U·ìuè+†öD+ߤ^L2ˆA«]̉2‹ x¼ ÕÈb5ûaœÞl¸ÿ³çgSÅ•ŠŒS7“ñbaï´=Èô×âG¿L-¾Xðc´P5V¡,u&^`v…(Tn©m·^(ZHN!Ûÿ&÷cÕ_ÌbŒ,ã‰$‡¢àò¯ÛÒØfŸh ÁãŽsl 3kX(P. n5óGJgÙvŠ¡¥É'‚šoãò&º¶eÚyÛB V-®ã5ŸÜ¡ÈÆþ`¨Êê/º5Ñ%÷ÿÜJq¿ÕRï ôL¦ºÄQ¸ïMp ©fj( •!ŠœdÑ©° {;ðŠ‹Ãµ.7ÃCØnæQííGaˆð.¦ñöø6…Ønì a¯³ñ´½ú4'Å|sì!öæ”,Z­ZgA=¤|Ñ+² ÿ>°3˲DžË=öhÉÑLÙЧ20ž?Ó1Ðaòn*. ≜Œh»Ú¿˜:òÿ&¶—¬Gî‹#¾8Â_S“àE]EKÓöÁR*Çœ„¥lKY—¨þ þ…ì´üe—Rx¡$£Ð¿Z¸õ<`ä‰6òÐÔ1ˬ#ân˜„þqæðøú÷Éuq6špõlh°b¤v<Ÿïý«IG€{ÜèÈÛÎíèvCxã{çÀÍÿb5Œ¤ƒ¹Eãè\(×ÿ‹…#Ü¥ãÑA lj/C'!› b‰Ý0`}“Ï_ctYå ÒKŽnšå“qêyqWÓïGÕùéÚ„"]ö#ÎÞsùm~‚`ÈÖ í·R!ô`Á&Sræ"éB¿9¥Ð.ï¢^«, Zìâà`64Ö^ žý8àVî¡î©C)cg³Í\1HɲkçwåÆóuÎ̪îJñ³ªî )ˆ@ï w;*¢ªºÇHqd rüÈÕ–ëŒdë¦ù ;Ä÷Z›lvSUz²S•+ ýMÁÔìªYÉâùªY±â×U ˆJê,³'ƒ­?U²Öe›gÿ\t€éoŸ½’î’2øbîtÍþ‚‚QPPÇÏ~™ÅxoPŠm2O 8?Ug©5gA5&éMæ‹õKÐWi'ø>¾Â…s¾MØžÀ-×*jUé“¡žô©’%k‘÷„pºK"üº!Y<ü’°mЮݼú~Î ¡æð«ç3 Ûÿ‚ù¤¯(RA=~ÿ[Ä÷a;Ó¾?¬÷E|-wRø§¨r»æX²H:øe$~Ué ÄÕUé?‹«Ò—ˆUéw‰yÞ 8¾˜Ë«º]⸪î¹âȪîÛÄ„ªî[E¡ªûjqPU7‚êâgœE¥Éÿ!B€^ØÀÝwEÞI 4$êÕ ²`2À—B úMTu/áQʪº.Ô ¥‡»„:Gê±Ëo‚Á‰¥YAi'pI)a\-Ԡ鸿>Û\ž€ ˆqÙ᤮ga‰„œ,Z„ Ĺºèe1&Ì‚ëpÝéU¬l²Ô•ˤ^o°2F3ç° ´Y‘áꪰ*PÔܺɱ nPµ ÂüÍç›ÌWgA®íeð¼“Áœj¨©õ70^ÔÚŽæ{*¿2ƒ¨M"ú_ðºÕ!„n+…¨E‘ÖÙi‡¡6Z01hÜÆ¹Àœs"sri¼Þ®Xngæ@:ÌàæÀuςƖmƒ·‰d@:„Œ“= s!$%”^AñoãøÆLø^LŠÖ‹tZ}Ëñ†#¨/˜csŠ1¬c (85 žoã1P_à+á KÀ¯XŸéûûZý÷4}f`ýƒÝ¼öÎA¨YÔëñŽûùâpö ¬y›¹ÕW·ro3Ú‰ æ˜âuònî%6XÉ!/±Ë´ùq·î+–cøŠåD¸~ºÕÆè&é/Ðñ}í —Oii¯¯U‹Ì·z]{(Tõ3Ó3@'„óí,ßæ="Æ£ƒ è]—a]õ!©WíÝÌýHç'&Ë´”ƒ­ìÒïS«nÇÃé\³Þ£5²@=²…{‰AWknq6FOxóv‚*˜eµ‰‹ˆõ}®šüeª]oàõàžS¿ƒï<î«FÙ”ÌL̼¸(PÈê+7ô ìóUS”…ÓÛñôŒöct¬-'0¤^¦CÚ ôç„(CUF²Ð%9qvç¤XÛƒGe©¨où¨££I °¥!>r =ãœàÇÊïY‹²«Wðª8ʈ¯´HɜƼ˜Uy… n1ƒ’N ³¬Ò¸%âxItÖ˜WgÎb”0³E< SB\øs<’!3™*‘žD‰#5J•v‡IXã+¬e…5¬¥9s Ò§93ÿˆD- H ,p‡¤õÑÆ†R(Uе“"ãØä®ÝvÐ ÓtŒV¿©Û̲ØÄ(%k5›€)Ê¥d¯`IôÉœ)Ú•¬[•Â*æÄ¹à4ŒÄÉb2¡>JöTÌ Ý}gèîRÀ:´nšz•ˆ e1‹ÙÐü˜ÝÖ÷{`"‘3!SŒÙï‰ô¾Îï øµ;~ ‚ÐÝ™¡»g»Õ¹œâL€¿»D@`´~¾S‡×y”ÊŸ?ª•ߺ{“[µ…Ëg[2Å€ƒ¥ÅƒÕËŸçå;õòbèîunõͨpy³]œséòÉ—·=B/ ¹ÕŠ(V 5#†CI Ѐî%µ`NK•ÌŽ¶ˆ‹±µ·MØáÆ ã?{LØøÈ…®­+Õ H)þÕIÉP’'™ÃÉhPEYµÎµXDÐÁÖ*…5ÊP­„%쾬ŘT0ÒnG? AùM½Æ­™s3ž9 šmâ áfYÃýœR{÷dÞÏÓ°Ÿ í¡õËCëA ®¶iŽ€ÈZáò@¦|&îî›xù\½üüÐú¹nuLDù(‹8•ò° +ä×FC/vY?·F”²‰7A)ySé•Rìî¬eÌ_”ràQÂëý™V§‹à<4Ü<^;¶¶4Ìõ#ìðþ«pkFØà]äP{tìþLPŸ%¨ó#±³‹iœ&f1Ž·‰î/ · #ª†^D;À­Ž,éÔ¨‘p)j8¨”JµZ"J%‹×R§&ÐQVé⢤¾è¤¢‡‹š-â¼~%»·¼7`¼`?zyËëtzþZþWjù’L¢Í:þH¯z^ê½ʼnz1™H2Jg ¾{ͺô¶ˆIJ5®;òy׿ÞöÿC‘ÿ‰ÒeƒÙýx“g1VÉ^ÛŒŠEˆZf‡q¹TŠL­þÙ!lâÕÃ8?òïµæ0QlXtyèî|þé—EaFFv<ϱÈIÑ‘¡ˆ>/üÕÈpUàÝ‘‘ÉsØÍýÆÀ Þy¿{SýÜÉ0ÂüPŠ<©¾iêǃƒøì“‘ã‘0’F˜1xŽ*žÃçªMwÕ€ò Äž*}qŠÓå׸ê«d¥°îZ'è3Ð…¯qÅi0$ÞÎfêñY±¿²SØL¢K¦èÄk#vò5"-~½êºOúskûÇC±i~¤y˜ø Þ#ž„Î#,¯7+àð©[g­5çd-Ì­Ê0I_Cî/6™“³zTvâv…'†u *£{JÔGìá¢9¨_·–Ú“Q:Ÿ_ ®¹ rWï Ö‘vB÷¿È!‡ã eQ¥Oa%ÝM{oCà§,¦ô?0)ên*¿;–È–Tå9bpm ]p竟¯36’Â÷ÇóÞqŠb Ã`*üR‚¼;‰–MãB/ლ[‰ Iú¢Tø÷êvìPãæŽbõY>‡çAåV÷JŠÙEžÑCªûnà¯7`agå7xÆ(óR û†ów €š}ç DÁ/sc2Åäf K*Ìv}§¢šbv#k¦S… ›·O²ò%ΜeÖúßÇûYp'-5Ãú䓘·XY _é[E‘µìâee&õ':à­ŠEj%=ÿer’R½o[G+P¢kAyb™Y-§ ÏRæ¡—™M‘á'”x?$V7aæ"u<¥x8œàöÓ¸. x/ÇåŠ'~S“× ?ÉÊvm­TIð>Ò4ľ;Œ)¯¾f×4ˆC|>ÌŸ i¶Á }ûÔgÀ"µ5Wcò®Ïár 繈ÿ#²ù¨²|õeŠœmγÙÄkÒ‚Oµ#ú¶ëŸÂO9à…ˆòÅtß,³ƒ8/)@ñç%)&P&¥¸&ŽÄU¹”Ró4 ÷ãø úóŸÒp¯š=Î$ƲÖܪÙÑÀð™&[ô”\øsuÿ?ƒr‹òÕxŽfèU<‰z«÷rßÛ9yÌÒ ²hõÚƒÔ‡e!õ) {ö–B:!õšCtþÀ÷Üù¾ˆ1Ïù7úSž¶]êÌœÒY@¡ýúlH´ÊÂöë[eÃSA¾ú‹_C=Ž!ê#Çž[ÝØËKÚ­BC03À„!ÃM@LAk²8¥Y6x\6xüÇwÒ~×Pݨ‡¢ºïšÐÎÄpÎõ@ ÅÍ“°°Ýo¤"“îÇý6 V+ -ÙföK!Ûw²}:²8Ôo—·ØLžé?Œ.­dÆÒ0D]Ž}œ»E†úÛ m¾ÏèàóqU- Ç|ÜÅ]׃ÄÕâcó¾+Ðw¯ %õ¾CþÏBþ™ÙfÓ²|õï¿w]?Øi”Épêû ”E@€c8Ã8¼¤AY¸Ñ¿ÈOèÀ't#zŒYÓçüTip™Ùí+ùV=Ã#TíÄsT`ÿJ1ósÐ ¾jôÁ2mkŸpKÒdºÇ¾ïijò† *“ï!üaáÊKm¤:,@—.|V‡âk/°˜¯$ *—Cc„íéq¸¹§¯ÑeƒT™2Œ2‡ZN/Ï‹Û?kº¨Ûw/{¨?›ÔbúœŠõQRÚˆûiCoÙ`u&}Ƹ6E*ÆÊ/Ô‰”ô,qüfr™SF)Ÿ}‡™Žb¦!ª “ü‡b/ªï‹A˜÷µïÂõ- ×çTÐçߨZ,1T}…’&õ VŸ¡‰2ý 3 Së1É¿*–ˆ$Ó÷ÂïnhC¯ú<–%¨¿ ô9áô+¨Ù*¡qó$ªó(O EL)®Þ@ï±á2g¿ —yËŒP‡QžÏðpÒuþ;£ôù­,I½‹_Þ¢/êΈ’«¿£øyþ ŽñaÊ÷L¯QËlÌ{äUúÂz±­±º‘䛘ïwFQÉßÑ÷Ÿ‡KZ¾‹ çfúºˆJ§GTÿQ¯‘i”ºœ2]A‚2ôˆ|¯ô£Õi”ÇB€:z þ¡1„ÅúüiÅÖ^ ÿN;~9؃_ To†ç²1j+}þŠŽq¤ø×Ù Ú~J|( íjÚ_èË‚†m.«>LIÂ>¹lœºÞˆþqœH)¹ap§zŒÖW‹èë$9<Á]‚ýOŸcy ÀËÝÎö@±€“²î¦Ž~7üÝÿM”aÏ*þ̶»Û@e9wª‡)ý^¼Ó’Õ=”v]oØõoô¾¿ æÂ­A€÷(¥ý" ÏÆáUSº;œ>;å6H.»\-¡<×tsN¿LÍ£÷-á2öˆ2Å2)j*åéâB1ô²$ç?Ý´së)çµ|nמ·_éŽÑeQjs4}ôÞm´@—~‹z÷g•.Bån#õ]Hu«?AÔ&ÒºV¾úú‹ajŒº)Zç/]Ü܈È_¡®¡>úpž>Œ4àn$ É áYàoŠâû9ÿzÛ” hÉwQXû]Ø’=Ç/))éòÚ^ ?¤¤<½FŽãï»ÇÝôÍ߯Qº ãx”R AuÍ…pGY ÒÿD.6ˆ…]F§~Ú!ÝWÑ×)]ˆÏ¨ $¸çQÒž®°tŸA)1”é[DìJõ2Lò·[©ŠDúþE§QEUW„ê´Ñøï¤ñß1þÒ$µ•>õ­AQ`ÅTu¥>H…î‰(t¡Uv•ú4eØ@~‘!ª‹èè¿’ü=ô×n»®Ì®®$8“;±Fvýßæ6+â«N£Œ·t†ù¨ “Ìh5¾ÕÁ{Ùd5†^޳æÎ°ðóù[¥8–»‚±ÜXl Ý…š¯þ1œ®„˪×tÒ€ý+婇—v"¦ÿÔI#t;eZ é<ÇiV*Cuƒ;è{:¤–Å««è¥6ˆºž,£.J9âÔ™<î&åèåM˜HIß5ׇ‘øR˦ªÊ2-œ¾'nÍO‚š,MÆ/Ïc‰«é€6À>h!Ýâ[’ƒßÒt÷ ¦ù+y†?S†_‡+®äVÌê¥,/…³dFT~æÛÈʯÅÓüƒÌdŸøTvt¸ìË•X̘˜Y® ,]ç,¿áY>‡”²kÕúì!?š$ÿ“ë³fL|3\¦$\Ãc9˜3(Ëwá,u߆±¾ºÖ[±Äô@1Ê*õ‹p)[p!f›A±—@ÿ gI‹üþùHÀ—c‰ëÕ¹Tbýyj–5"÷ŸÈ¹=A?õ¤¬sðšp=ïCjÙ jЄYRÂé? ?¾xŽ¡™j åê;GuÞDõ8·B ¯Ò®á²ó†tIW¥¯¿8‡£måù0¦ß£>KÝDžÓf…yŽQ¢\TÔwÿ ؆ԚÝ&÷‹ðÙ(XµRµÌ[݈L?Ù|éôÞïI·Àôþþœ´¨ÃÎq_ã…›bÁµfå,ÜÜÉ:úù! •\WÂ3%Õ™³f¶ŠÖ…›ƒÞ#[ù²B²¯úÝëB×<ÖH%\­™µps·‘Gn·ñ%·h¥ãtŒ¼¯Gî6 7;Z‚96›Xá="–ù^*Å]7©—u4g&ÈèœæNbùNÅ=›3)j§:÷:üïêeùc”œäGñf㬶lf;Àò§Ë»ÑÅÄ^¹Õ[3¸#þ“&ív [7$«Îš3³EüXã¼Ès,yè†Zµ5.”, Zþô*v¥©³ÎŠ–†e§W;}=m£fÙ®ÿ™Ö~Hr`šð`E‰<aÓ©]—g¯Í yƒâºÀ„R˜ä¡ v â?i˜ãà᦯¬Î±ã7ÖaͱeäØ=ïË}f)ƒúçØð8žÃʱRÐɨ]ÿ%P;¹ƒ—åCkŽ#_ý;Xæ x­s†µÂ¬Fçk㚹̖1Ä“¨d9ê0˜s­3”eã„"‡‰È3¬Ç]'^Ðú¤Hq€Ì¬x<|#n–CféN%מ‘ëÀCèÎeêÜÑñ'J‘Ò5¼sí¡\[`$(·8R÷³®ôS€]+ÛïæØçÚ­¹Î|õ,hðæ[ìæ[@Â;Ò{Kž—’‹'…(¼Ô~ökí¼#…¹Î³Â.v\x¾x’¹°K™—BÑ »”’óŠÔH~ïF"ïå–0Já¡èŠÕgà¡êŽÄfmÐäQ™d"Ÿ§Áxé@hc’zösè…Æ~wF9µxC §–×EÏüÖ§|æC,Ëfãî"rÅ$ Ñ6÷"+RLÂ6ôm…„·dV$׃Ü£,¯ ¦aK åâ-‘‹ð{å'r.4¼hRߤÑèè÷TªsM¦dȈÞogýx|€êù³àýo3¯gãcþgp¿‚Nõ­Rn™Éx„½3»všØ©Œ’Ž «âA¬—cªnZ ¢_X8µ+\mæ~%8Ê;óÕg`xû³Âû)¹ “Áü˜ƒ¤úiÁÛå èÐ8*6Æš’׌ÌåÁÙzóÕÓqº?Ѳ2¥¼×kTŸ¢UŠ÷Lj;ÃßìÚ7^Êû Ø81A¯Üz|¥ïEÏŠe¨ÓLg˜æcÄÖæu†\]ÐU¦‰WU:«.L]U¦ŠÃ)ÿßÓ™†ñŒìÑ¡ÝjÕîµ¢ùãÌ¢Ô­¡-ökŽ¿GOŸÌM´ˆã°Ÿ¤¡4ô{qD‰qdŒ¡¾˜FÍm®Ö×Ö›«õõöpx·ˆ¸„èNˆ¼©ÜÏ/‘=Þ(«Ú 4ð(ÛÉew%Èpྠîü"uÉÏøMfôúÀÃŒ@˜Ÿ¤œy畬”¸¬IÒÐb5é èþ5–ð~9~t0Ú•“³€Y—M …îv„îv©õ¨ÆÓws–“ß„÷`°ä•Å¡»§© ¬<€`¼E5ƒòw›ùú%F°˜à¥à{YÐ«Ëæ›Š5αX£Šû9ÆÁ,ƒÑp=­¤—·œI˜×á=X1qY~ˆªæýÔ €˜Å}e¾Ÿò?‰»‹Ô?XŒjpTèµ×Xx#0n! M“zù4Ðê:ŽŽqxÿÒnåõUžžXÁû0§¤¼yŒI¨A[~É磛Ç(YcØþÔ£m3!‘A*’&¢·bûOŒVHÃ5$®9M0×j*M* o%ÁIm57/\Á‚xÞ¥Jg`$ÉÏ:WÏ,š–ÄØÚèÜÐö‹0˜Þƒ¨ŸD0Ò·`ò ¬Ïú*–ò¹zò‹Õ^“îé8„ªÁ!#x¿ÔîÅ0â’n´Ú%·Û'AS×G[Öù¡—0^Qè%tWT‡ÝÎkN€̯îö‹ƒµmî5k‰Â;ÝЗ#>å`C½"Ó^ôE‘¡g¬ƒ¶­ìnuõO1²WäqßSð™N©4ËS,úÖ×4ãiºñ¤ŸäáGWô!{±¯7íÆåØ3rlRr‘[/‰Ûk Ïþ,ñëªE‰ÉEêcŸÊ÷²Ö% ×-è}9ög’ìÉ"(K½.¤] $x·YqÖ´˜ÅñPwŠPs­…¢*\!ÔLâO×H‚¬ö(Ô,µÒÓiFp¨™âeüÌéaø&Ú‡Óà_¡jF¡l™…íߘ(éJ ›ºLð~‚æ˜y}ü{ ÆD]^ß̼˜ÄËâ™òÐ}tÒ~;·×õ°= È¿â¬Q%ÞÕå¦>ùð¬Þ'0 ¦åY°¹¸<ãð“ÂqêpÄ×ýe ût@‚÷gè¬K‡k3å½üú"/º†ñ~Àwg3º]×?BqÂ}ÿä-Ÿ$x?5i=Rf‚þxæ;yôP¡Ûµ:ø^å¦HV3éØˆÇÚUÒ¼´†´Äž‰Z}>G¬„¡}sç·4Ù†%çd<™¶žfÛ0uW±ú4^ôAó‘ÖâVâÄrâÄuÄÓ‘30*tè Œ 1‰ƒæA¥šlN Y‹ÿzCÄ|âU©ûb‡ÞКÉxo€ÝÈÏ{÷"¸ˆ Ö+Md°õ½ÁþǤ!îàÁ@8 "7ºÎ)ó×ܒɶá¢2?Á +©‚ ÔØÑ€,Ýô¤#¥#+ÝIý{:t¦ŠT_Pà'7bôpéo U¡<Œ°Ð?$oÜ×ÃT„ªƒÐÖu’3üŒƒCYå@­*ÛÁV³ ÜgÛØJ›2J13 ©¬²ãM›Ùv¶Òn¬­q!!W:†àZÎ Zÿ92}-$™+VÀß(±þZÄÅÊš„´`ÆF§'$±ÜðÜ5hc¦ø £ÒNG¾Ýo ŒÁõ1nî·iñ±ÝêBz‡À– ¶îí7ÐETæ:gm¾¹Ö®µ ÓìuùÖZgí|+~Í·àçù–ˆïóc°LL-˱—™òUÛ m•;0m'ª¹h?»íEvÏxÈI« jÖŠˆ÷9%šYñ¢Í[¨Ü*w`¾¾äŠŠ>÷FøÌ9”½tu­Ç^ ­ãçáò5‡(uó—x9•ñàŒ H]·KgºT…²ƒ)vóÇÌ|Õe|ó̬ÿyýþ¾MÆÚªä gF)LÙ ½G*†Ô ®Í åÒ(Úf¿v´;\!ŒFÐomɘk£ŒñœÂC—ð‰ B`<’=ÊV |!ãýhï†î§Èù$èq_&Í­+ Õöù¤P ¶¾®°ofaHj-*& øtæ£og´Ëä‹TáŸú;@s“÷. `u3i÷ï).Rýíz®³¬5ì‰q^gŒæÈH1*ƒ™ kEgQéå8@†|ÒcJ+OP(—EÉ`ø¶¤„ƒñ•vÀ˜PKþižGqRÌ0‰Óy|ˆˆx•ÃꬴÈi•÷µ¨{F‘Û-Ø3Ã$.R·ï4N;/Es {¡&Í¢ËÃ~±A·„A\Ž:gOÕM&ñšï¯rQ8?^8©U©g·–žÅ¦ü¶ÝÈ„7°(K¡ÉíÊÒ),OÅ›¯}HÜûø‚Æ-￾ϸÿšâÉt…6NRÛöðγË=ƒ*§Ñm×S”¼öejÞ!£’Ÿ£Xî$ά„±cÆù1Ô Ü'ÔÔÓƒC¨ùšCxa ¹Ýß1î?DÀ£]xM5ŠðÂëIô=w‡QE4Vˆ ÷¡ó1>àS@úžYF7^_û¥‘ïlæø:°‘yËœ;õxz ÎýY³ÐÅeþÿ0ó¹óJõcX™â'ée‹ÿ¢æ_…óÿ·ž_Z¥a(%ê_§¨õÆ×ÙÊÒs^{(O¼äµ|‡í#YnÎåuÞ÷ÑIïØ¨Ò vìk(#´kÞ9ß'py l?ÄÍÙ~Ô{Àö§²Þ­î0ëñžjÖ¡ò2…ÔH#þÆ‹vÝj]LøÂ’µ[£î²žvP…ø½¤çã*&èa0’\9އM L¼Ä‘ÒyuØ·ÆÆÁ5®ˆÄC7fX¿›»~v 'WÚñŠÈaŸ×ãýWãý¹ÕúýRG‘šò*çžñP¶Š©³vò”x7eàãû7%r½«¢ïçvÝ[gÒÚvÞ¶ñ—¾*2£‹71F¿%—K£¬`ÄX­R‡Nµš?C¯ê7C^£A QSÝÝtuÁl³n F¹ÛÖqX^§pÙ–Ò$É8yfŸôó´#(¦_^[µÖ6(›ÄÁyŸ«\X òÕ†l]î!ÒéZ¼›àC@á¶Ï`ì¿DFŒñ†x ŸëT>¿è㈮EKR•çÔâMð7Ez+pC]á©7†œªuö¶hÌ.ìµÊ mËÁš¾Oš€¨OÌ1ô¯Sùªå ]Ì¿Øä:• ïŠ|*YðÎ qÚ´„u©êöÅ|>nö¾ ”CvjöâÝc¤(xß3žZŒ§·ûôk3›½ôç`³÷M#GƒöĤ™ï$Æœð~ óÑOž¨ðö7ë̵á¼øù q8HãùÃ5‚w7-9ªW£ŒÜ`*\‹t„½. Ý:êè³íCaoƒÜ5DØþ{Ñ ò@‹†ãP&ºg+§ùí¯#ÿ¢=DÁ»Jú:ƒN*”Ex~?³½˜‹”Щ¸æƒ=øfò AÍ–_Xów©c8E1ÌåN3*egãsÚ Þ´TÁ{%Ú¡{¨ÄD ¢po'Nq#—óŽÂâ—À‰½‚}“ì‡Ûrý¾c¬#Ytñ‡Xq¶B}Ä|;áoï°º‡ð›ÆñÄñúþ"ÑJÙƒ¹kctê“ù Ô?ûµA}4ysï<*ƒ qG3‚5p1f;Ëuɾ)iñ‚ !P¨Áì8/'콉!´ñãã?á}6ÔHé:Þ:µA .ד-ìM׊ò+qÞÖ®ÄiÿÁ‹Ô™gYÄÔ%¾=„U'ïÏ'\jð°_ZÈKW9–ù¿Da°eÑñ8ªîG¶´!‹>Ï=:»ð›ûö`?¤o™&ò£²Së00¨Ÿ<+|{° ٞב Mg>DV·W^!±BÅÊ"™Ä© =°t%'™O1ÖÏË6B†SÕÛx¢2!(³~¥*¨úîëç ¡ë£ó¢ Ô) å³…MÎ'XsE<Ï@‘Až€îî&^¾âŸ´Í08pws4 ;x| ²Ç `†-VíŒP {æÑzÕÌ9â»U3'I#øxÓ¾MÀ0²©â¨À×U3¯}ø\[5ó2Q®š9E¨ù50Yf6Ϻu±]¯Ÿ7Ÿ­Ÿ5jö&ukbF“·&#੎ ºün¿ KbÕx:c<µiO7ÁŒžÃWÿõ«\,W¹\­_å«]å2¶þ‡îr‘÷’; †Ü9’;NØ0>̳šÅË|§úúE/­‡B¥s¿F“zÂ)®*'(ÑÑJd^d”lxúZ¿¤Æ› I`õ¼’oýÚv¬¾©ff0 5 ;™×Ôý'Ô—•Uœ¾l+(FW£-bÔ®ïð@I´ žPäó<N¡f/Íãä·Biå?uþSÒ‡iàä$ëY¤Ïü¨æÊ{q“x•¼ÇDØÔ\aÔZ7-TÿŸ¢–}ll{°K‹T÷#x «©[ïª1ðd¥'§‘æÀ§d|²wÓUÙìí5:7Aˇ;µz娹)>j|ž/eWYBÁjtÉt0‚­å\°˜ùìá¯óª?ÁPṀui¯VxÅ ›½]L~¿ì¿8ôŠPó\pó!P«Î-;è(çôHRŸ…Î/]L<óÏ“!-&Ú¥Ë(åÄI]ZUZD)”ù¥7SÊ«FÊõ¥k)å9#%¥ôJyÀHZz'¥Të)¢n¡v––CŸ1ÍWWéÙï1ÈPº%âÛˆ¡îxÈïZü˜³sòöª Õo§ê-—.MB«ôþˆ²­'Âe¦²MzŠ8,Œºün\`1öWé³(þAÏ*Ô ‰Ö™W5Æ>æ‡qœ¬ÓÀL_Ì«ü®5˜kK Œ{›zìöØÙãÐc/*'ô»¡ôõˆz/7¾²¨t:ŠùG›`ι&å† ÄTp›hňöêwAl™Ñø[eÂÁ›eÈ”å¡ò|µk;Dµýã¸^Û¨Òw)e÷q½ž8ÿ´(~ÿλÎ`´Y¨yÇ·)3T>[™9#f–¾GÅ·êÅXùÝÌ€Dô;ÑŽ›uøbÔ\&sN·™9,Xz:¢³&ø$•~EUŒ4RFøïCi.ÑN•%º³MÜÌK60ž*Ÿ«Öƒ¶_ 8‡ém/*êcøÚ1Ãáò»É›“K¹=·4Ì¡¯€^Í™]„.OF‘.Ô¼oÒÇ«½¿tïnl†w 69:6¢Síº¾tTD}£ ìz>³)PNs„ž§³UÏ3HaÆ•*rå»ãMà˜ïìayb…¾«­t\G˜à»Z ò–^A¨ýÙHüc­úl‰$ æZìBM]_ì 3ç;ð̹:[w‚h}[«Þºá—ìõ…¥WG´ñ†Öˆ6ê20pEéuy†µãY°ìˆS²XÂû@Ì2KÐþTjÿ~l?pÉ]¬Àą·³9; 2Ú,ú ²‰1ÏáG‹Ö•é åå3@`²–:RÞCâ»àCø1ÿñ]®£ ÇșÕm ÀÄËÊ÷~€öùT4| 6Ö%·­•»’¥DÀÈ, òRW(— å¿]\j䙡¢l{ %ÍÌdç©z^» ÕUê䇲`QéUÿj`ûu4é™â`eÛ›’8ÿÝl¢ÇèU °½ÍÔÜ WgcÜÿÞ«®f]Xü_êŠ`§_| 3Ï$mZi¤Œ-*MGLÞmLn‹Ö×/9¬Ë‹x—Ö?@â|Ìú,fÁp`ÆPÿë}@m¡vþ}}p_Vº„RN¿¯W;ª¨tÂZ°¾Š2iÊ!M¯¹ÑæM‘ v`$u)Âæ3Í#ì‰Úd¸Í€=\»g¯·`ÿV—Ÿae£ iLú‘’ƒÊF:ÍR‘BºFÆ¢éÒ"…¸$#ÇQ™©Ž‘±h±4²OD #]šÈß­ðŽCYJTBù2¡[!eãòœ„ô}" s5"ó+D&Ê8ßgè,ò'Ö-ŸNˆ=Ìæ'P;Ø>0õ‘ü,»;@¨y£ ì!‰‰¼hÕüÿ_mýáU­ñÿw( -T ‡ß¼^ŒòC"”çgóׇÛÅX¶OÉMb–@¼†WQˆyˆ^¨u±]qÔj–P½Gç^:„3p™žf3IA49õg»Ž8ÉÂáG6Öl¼ÕМÎf4˜Ä¼Ò“H1MÜ܉!m@ë‡!ih‘ššEhš:ä  îŸhéó²Óz_ÃÁö¿;³w—®+ÒxJÓr§©[x)EQ±;ô ¦¨wáû˜Àˆ"®k–hèÞƒLܤÊõP–µXÞC¶‹$É{H¨KÉZÁeSõ(Mâʈ©¢¸¾z>¿HÓµ¼Ãy'iiy±&SQé4d «÷Bß´hñÚõòV“4(œ6—)$/ò2,–iíéI%‡Tí-kª¶/£!Ñ7&SŠ—÷‰,Ùª&Vñò¯“`¢xÃD$ÔZàP‡dD¢æä^þãu:NŽ1èèx8wNp?Ô¨‰okhµ‰%;aâôÂÃ?Òù×™èÝ“-ÿz¶©|¶´ çúÉSdƒŒœæ¨4VËœH™=óg|‰;Ü1IY•¤U¢18´ºn7ÆG_+úÜÛú¯ƒdÒÝØ¨Gøú6»ÚùN-@ü]±2ñ* ã( (ÍóI-Oò¹z™KÕïã7Úã6üB'çx»ÎfW UÅÓZkr½=yZåµ÷­é®áØuø'!a«×· DÛ£Ìu’¶YKN“ڔ·}ˇØXáÛ²«Ý,v`xIežMnèMßW1-}cfeŒ”š¾fvy ú7‘«UE*¡tÎOƒÎ¬µ°…ïéë3…ûÝÐÉRlúªÙÂöù8°f¥ƒu‘[Ê=[)È,ÈWÿ²8Œ»YA>~k/ä|ç§ÌÕ ßS Ï Ï`†O—ð|ÙóžâjQ ß+àž__OŠ@gèqÚ¾V l«Ø®¸Ú•Â6o.+žß<3ÿ@²î’¢€¬_ˆUGäÍ®¯=éË;CŠÔY1úž…%¤¹.J©H DÁt§Ì5Õ)Æ•^ƒ—Ø£'¨ÏÛÛI³f¡ÕØ([@ë"˜Îf6g& UÚ—¡Hƒ«æ'$“†hƒámã‹UÉbBQ™)ô P£¯&¹H®‡¹ÇÔsO±"ß­å8ÿrܬˆÔªÈj‹#dN˜heŠÑUó‡gâÌŠYá¹JõÙúü!ÅìÄÙ µgèk¾–§p¢^vÞ6•>ÆmYþ-´.)€÷8i/õ¾ë¹"*h"Hƒ)Ù¶~§›ŒûJt¨÷Z ñôËWC!ßsº«ÃÀû "ÖBùåé-f£þƒ­—ÜTóõÆq1MÕjˆƒZ<²^–¤~yeød’ÑŒ5Ú–Ò@ìé“ WÍÙ&‹‰1p¹V’-,÷|'ÅÂ7Z[\hà}íc(þf¿ÓÛÙÿ|—~×9rxœÜáø­#‹›ü*òpŽUîrl\Œw1€‚¼c=n¤õ 2‚,RZĽÌQâˆÀcÿ."{Ìn\ DíÆ•B_°€¥|°VMµ6Ð:!p«7=Iüeø\¡`Þx‘¼¬OÝЧ/ù-¦»á˾S×IéHŒQŠ« †R·še|¥½AEêä.!XLø@‰v6¬Ì\¶I9=|jMpó.œÿ 4¤›³o¥±ž½–ÿ¬æ?+øÏÔw»±I^žÎîÉ›’Mb,4 ¤N–Ÿˆfà7#ãêÀÜ‘þ{ü&ÅáÚ(…éù·ø›¾*Y±˜ ¿R~ÍN–·81ØÖ§zò:>ȶL£„iê[z­”p«º‹'¸Õ®ÓBq/$k¾Ÿóæ*Åóû_µ>Söt;Hú7~©Izþ=\¢È _}ëøW¼’}Þt˜£ÚXáÅÕ†“@ÞížwT8sÞy¥°fƒó8c^Š„—ÓgO’ç%‚Q§cÉÅw^O‡fb‹Õ8îF4Sêõ³ÝQÒ¯ÈÕ·‘åHÊ fùˆ)\õ'0ó²ÂvE‚ª¿1KíTõQsa{±ú)t5÷Qš^ÒsdJzžZ>¾y×'çq}¯s«Ù§tWññq1=¢]¬¢¦ÆOáDULÓïEêÆÿ‚W2Í›JaÞ§÷ámêâõ8.3™ú Ã…ºÿw ·öýí„0èzÝO°Ä²#Xõ)í÷\ßd½½)Çü«¦Ëú¦«Ø”c»šÇáʉÊ/PÏ 7™è-Ñ&qIfÕì$ŒHíj²æB©¥Pª ÔJ¹­{探ÜQxG ÏÝdKº:þÌÅ?Yøg9þ1e·-#Ïq¢Üµá=ÓxCºÜ¡ eqq³Lglèqè(½X£;B©Xb³Ü«SK»ýxÔ†ÿ‚Âñ¯äöRîq"b(áòþÛ@Q|¨y›îvѼm’ñ¤_1ÐL‡µø“ÝxÒo_£-¤©ú’]ÛBóC;HJôD³ôŒqモÑÌõîÿì3ÙéÔ˜ç:@ŒŸvŸzH@=‚Á3qÌIñÿÿŠüiþ¡jS‚É3kb4i,£Šøaç1˜ ]H¿}ƒK+…Î_s/5 2—+Û^GŒMÙ‹+ ‚˰äéç¡d5V@å™&¬ûJüÔŒŸn'†Gô¢²¬¹lÙü¢ôˆzMz&ÇÔ°GÖ%©uÏsÇ™!õE¥Úf„–DªW`…N»¾’ÇÜ¡chU¿¨›÷‡B¥µ´>´o¿¾˜uÝír…Íä¬f#œ4„ÓÂÛT%Â|Ÿ©£1o%bÁ´´Ò{qÍËõX¾úëýÆúiQéLÌÚñßõ~“á¤ÅbF¢Í*=¥¥uÁÌfq²÷ekGôé·CVä«Ëô&q~Q¾ú$ dÉ=f)ÁÌanÎä“Tæ ny„ó¥×#½þôÚ>&oq ‘F»K§àÇgð#y׫Ë_ÐΑ)”-N¼zÝ!냸æþ[^ðœÉù>g2ºæ6½c8“õ„ɤ¡Úµhü0¿³xÚæêE€ëdOïXñF7ÆIw>h°ì+f-<;f7=b@¡{zø;/>é'½®]£"Å*9v~ }M nõC;]C¡w>ÝXƒ78à¥NÈÐ1´zû–z Rr…Û!wÛ+³ ÜeGV‚þfcÉèú640r \Æ‚»ðj+xÇ+¸p½X‹fŸúWÔÁÛk/(R§þ†€Ê9`^î2s Ïd÷¸QpSý?ý µ4°À—݃ÉCн?üÏýxXˆî[$xÕã1ví½H½J+7¤ FIÏüF?`1,PÆsMÿ­®®„n3¨Ëgè]>ñÒ>v¶ðž×ü}¸§uƒ;>$ Þ'A›]*x_üŽ{„EÜaKqû9Ø.m˜ˆ®ŽšrUd0ÃKÍWþCØ?ÖÁ”™Ô÷2Xwà€ F‰ˆ¹^úÁ\(ÝÜêéßë^žûð°›~ví™T>qiNœ gn¢HŽÃ”°âL=†c#Ä3¡ÐѰú~‹.{bÝùêåÿ‰½ôÃñµ«tÿúÈcFúÑ#~‡œBþë©ûÒéÊûŠ©ºwõ³4 CmK£‹¸HøÛ_ Ö_÷OR/±£t±]E4¿àN?0âæ°5yõó7ÈõàZ¼T»2%­!½Õ3ŽŸ©šíœ"ÅãYF%}+Ì™é­[O›Ÿè—Ý%ïkˆ¡°ø6þïk¸b·Ñ‘{y›„šÿ2ñ+´{øZZÿ»’øÝ ëúÝÝ@*to0Ôëx·º£Aç‰Ûùr rÎOF˜¸™™Â§IüÇÎlüg.ÿ™O»6!ônè 4»aBQšyãÜ8ó:ÿLëkÏhëkú5‘ö5†Dñì|\Œ¼S±ê>Šd«<Ö^€‡˜v˜1²©Cª–˜-Eê½ ›ÊÛh•ÈÜœÌ¦Ž ‹a"ÿŸó€Nt‘ºç ¾ –“ШZA T-ž ´þ<‘/Þœ síC!,XÚµ««ùÙ(y/Ùv’ªY”â`m}yµ¶È±×¤ o~%§ë d쵋wO&MËp)"­ᎠmÀµo`ª|õÅ$>PA1¯#è“.ù`4£çæ{ åòC‘¼ÇP.ïqOºê̦HØ»tÿ¤lbÊËëéò$%Kšé|ªË®dê:& 0¨úGÕH +P_y“ûÙ ›¼³¬\Õ¤µ½;vjNüø/¡"}s”/ï‘e´Ü÷a{Äw¼¸‹+P_ xé\{*â<¸¦yާƒõšò™úd"B#ýÓ·Ådè%`× 5šô(ëNÎGJéæŒœÅq¤~úgZxó~KÊç,P¡é‚Ô?ýxh—ôY»RE%¬åQÐE¹ Š•£ú—ŽˆÖ\k ë¡c°5¬1tw’ÿÍÊ€,j¢þ7u={„™ßŸ¢úéww¿eÀÆíÇàÏÚþ6p4ð]Dy ‰+oI1•@E9+EY6I·êëYáƒxƒk=±‚ëA­¼’f©«†Ö*®úÎÛjXûP)¬ž/¬5¨äÕÏç=h~W¹ÙÎZµ|V©f˜§VØ›<0þ†œ¶[´Ï¬ƒuOvÕŒ.¬-3Y#ų9›„ÚÜN ×!„k¶53%$çO“û‘æLZH¡Ð*' £KXY-ÞHçaûƒ9ëlÒ`í`–&¦xpøLqg¦µ"pRÉZ‰Z>ÝvAŠþ ¤è׿ оýTô½ªùÑÁø¿¾Ôñ¦·ï{Õp_Ò”êÀxý>èHÒä¯x‹29çõ ºƒsBAõ>ºá’ÎÜÄÐxðÐ?vî˜]Å‹¼p“q b…E^÷ÁOÖÎþ› ïÕôï­Qº;>XŠÁ»)uKBg&×Àc›]gÃ@ < ØÁÍ¡æ§(:*@iN,âgøîú#¨n×Fé÷-W8ÌÂ}sx¦(¡æ:þdjRqÞ eT8Ÿ%ÿSÉÕÎ÷ ÛqéL'MØaml³7¹þiŠuµ×å˜k]íò~ ÀªË±Â›°#ÇÎoæÆ6g“ë+þ…“š\_ã ž ¼­.'†—‰îW&*²LŽ-\È•ºñ0Ÿ°Ãmi årgp [·ÔrÁÎɵÃ#áJ°PNÈÜÉý#Ÿ·bÌ0«Ö7`^’Asä)€÷°•ú5mgÂ׸ŠÉúq©Tô× ýû/˜ñ—xö–.HWÅ÷«~©S© Ãai¤Ï¥æah£Ý2[åŸj¥ö9Ô;jÑ^Q1†»v’hŽ¢Ùj €²¤Žg‚Ñ­ª}÷ºI­/hPoT âÐ%ÕQ¶‹:VÚ¡5£ŽEkF'G–Gòã]å0ï~Ðp‚§€ŽX1 þ‚!ñöÇ G¼4¿HÎN†ô«¤;§¹îÈoFN Ù«Ê `WD•GÖ7ŠÛ+µ;d¥èÈã_P‚KÏ›‰—g/cC©ÓÏç«_þŠP£PýÚø/BûfcRQá¾gÏP`ÖÆ·w„mÓ±9ÖøbÉ"0w4Ð÷k Q"a•ty¶ÚXiÐe>GÚ.Ôæð9´)gúRÕ?½d”(1GÑü›¸ÿ­vîQ¦õÌ"2üòˆV]r—YØöŒ•œKvà¤JíÀQþ‡¾Óâ£=8Ú¿ ^yû¹a8˜›…1`ƙ„OÚXD|‰È›óGØÿúpóÎnâ;ìW„“¾Þ“†i牬Mwë\:’lkd2ú·^?´ÇGršÇ€*ŠwG¾Í•Ö[ìøÝ…¼Vq“ÎÕ×scra—£ùÓ…ûwõ¢O?‡”‘=½bH‘’×¶LÝò¦¾t ÆF}/óö;ÛZb×M¿¢6ýRÇŽ\1þa °Yž­ßØK `´æÒÏ"\˜©ŸwÐ Ã×·#pº¹Ÿa¸°Ò³xέ¼÷’†aÝè~†!èÏ“ÝêÊWŒÅL´L3ní‡^Âlêm~tm¢/¨Ï¢E-R^"#²i³%-¨Ì»ÓJ‰ó¦W8Ý\b}ñ(ÉŒüæywòFdp«§^Ö±¼ƒ½Ä“Pvùæ…Ñùût.ÆèÃ0áVË=dã¥ý0e/ꈈï+/Ä™XÉÃû\†7™¦– *Tj:ôûŒe™ù¬¥³5?à'å¨+Máû¬Ë’Ë,¸ÁW’œÚ=ò³LšÍSWfÇo™áoãŒoö2'~s†¿Yôoáøy iÁôw78Ù´#R¨›ycÒß]ß¡”8…'&—€êlüô¸EÞ† —¶é¨MˆÎe%½‹Ð²¬ü:0õÅiPFo˜únß>ÙUÕ^a­Úw¥ž_¯Á{PzÒšlѦȘ"zœ^§è=虄tDyiG[<4äÖ?¹‘XìPg«|ÄÔy¼ ?0‚ð)Yz·)¼_U–©ÑMÕ ¿<¾ _]dÒïa-Îéxqž+Ãyœ=/Êc5òhû¤yIJÉ-š^`¼"%³ÎÆÐxÔq 0äæïVð]¯Fv4”—’QâØxRŠÊȳo|_ñ$TžƒŠ”’ÚÉ<½JaR¿k)} E!Çç=_ö¨¼ GnO‚¾%?‘7¸5D‹OÚú-0ƒ°×ÎÞjìŸÉ\vùÂT:I+_˜,ýT÷LI„‡!PŽv ]½DŸõýR°+„g÷²k1w ÁGÐtÍrC Zd`h™ßr ÆŠ°wU—Í íì;®e }STP6Ú¥WdOGlùóŠ««ósmW³°—öQÛ!Mx¾Ùì‚U)l÷Ýv2¼&içËlœu´ÆòmÌ~ؘ 9Îwv…½ƒ ™Ü0&Þ#Ày‡°Çþ‡¥ÁnŒ“KÕqY}x¿*Þú¿¨(f@EÆxì_ T+ì~˜ß ócÞ#•1`Tve–;hs·ñ |4ÄŸ[àØ_ñB¶ÆÏmH} c cÓ€bÇ’O›ÂŽ'¿ßËbËâ‰oè‰^ùBTy•Ž´>¸´;l3?¾)×+– ³£${Hç ab0;Ñ"ÇÍ1q˜ük›IV Ž? ¼Gô+PñsÍ?`,A9!^ÌBciQk0†Ú‡¸Õ/1àX´[½ÚÌçmZÃú "†m)ÞÉ¢>ÙŽ·¿hë–‘¨æý5¿(%{J`©bF/Ë+£é@_†Ü-^cKœ¸:yß—×xê×>íõ9:ÏäêýN{ßwâ8¹dý/Y¿ôÉWòسËYc’ZC ýYõˆÊdDåŠÀt­¾Þõ÷EÖ—Ç—ŽŒ»I±ÅœB ÅËã±CxìÐŒõGFÍ¥Øc™´¯¯ùD¤(ÅÆz 9=Àp½­ƒ|"ò`æ7¿£vÏöš?`%]LêÅ™~,=Ïþ¨ÙÕ5¤°·Ì¤{^«oã:\2ÆË€ÞN"÷ˆ¡ÅG72Ȩ®±¿ÿÒZmûΙ¬ö8ȹ÷eFÇ!æ€"’Ž#E† %ÅïÔ¤;éßtŸR|&ü \Ïõ3ÒÛ"ÅSæžytY4úœÜt\*`ç÷0áýÆÈ«¢µêmgQ>æÙØJ®gäyÌr¦4çp?W4YΟë)È5¥Ìª^þ¡ QºövÙów“ÇVµhMö$àYW×ÛJa Ë™ÍÜ кõ†)êûm4ÙV6J}¨˜Ž+ä$us¸w^N&éÇ·=ž—JìXns«áŸ«®¦‚¸ …ñH…T‡˜>‘ozd¾Èye-†GÇV¬Ÿ­xô}Þ^&ñߦûÌ"øŸ„&h¨'•8ÝËð`ãÞ¬æ8ÐKÔ·Š¨¢XM€úr“Â1x¡ NlIH§ÙÖ$–ckÎáKöœÂZ¼ZuK‘F™ˆyaØ4£[5©·Ë[0¦©[lâ­˜`€´EB¤^Ñh8n„Ë^µ6±W¤²ÁJ¹ƒ„Q>i£E²+ ¦;`ðœa…ªâ:)·§pwž3Âó¹“Ìû•BUx¾(Å|T)·QÖvVØaÍkVÒଠg[•I.<½•qRTz^×FäçT÷2$.Pô¡›|:­97iò•ÜÙÌÞœI¸³zH.#¹n]fQ>D©K}ª¥™US8-²Ÿ‘[¥÷È«lHÐõB²ÇEt¤|™Ó£-$]Uš|V°«Wܬ»a ù* †BÏà瀃›£ð ©üt×pÌýõE½æ+ A;±5èr`ÒcEÙŒ{è@ ºš¼fø¹«É‹×‰M^+üÜÖäµÁÏú&oüü¼ÉͳÄÀÏM^;ü$ãu±ðE¾vcY/žùÇkëô{Æzµ{ë@~ Oª?ÞÛ¾c¬ºhìPKû¥“ É«ð˜Ò!$.V/| t ¡ô¦ ï—xI;-ÏYÑ:Þn]‰øP1gW&”î”bØ s æ]U—üt|‚Ü–>‰U?·Ò¨Z¨AÙSu“I¨yÀ.xr«ƒ^Ñw‡ˆ;åf§_Æ\q¥ ”ëÌËz®D#W²Üç/áûe±¥oSÆÝ/_ Î.7Çú1š'Ø<P®‡Œ\Ã\6¹y°…¯×@ÎO(ç/ŒœS0ç&›É3¬ìÚRÓ9hÝußñ=ì&¼O ÐáÏÀN*_zÝ9,?Ù(59šÛ@ÿ(›QºËŸã· "?å¡éñ~¼ašþ0Að¿tq‹,Øt\b†vÿ‘rí7r%°lØnŒ@ÂО¿R¾?ù#ŸÙð5÷*eÙddid í~Œü¨ßGSÚ@™™Ç6‘3w|řԅ»f¹9Æÿ/p€ ŒX`/Ï X°F£tZxû_4üK/Uj°V• .=F¹w¿Ø¿}圃7¤1ìÖP_aƧŒ©µ Ÿ— )Òy_IU“mܠܲäRÓyè–ÕxŸ—[-$O''šP_uS²[uS¬à>˵û¯ùΈaì!:¤|Ï­ EžqYáÔîíØôÜ©Ïkê…è†ÄA_cl¼p¦‚Ê?rý §j¶¯—Yš‰(þ£ú+ªt3>7â™&xÔïeü`)­ÄÆóo&—†Q0ÒçFv"ýœ'Ñ÷æOËWgVkËÈI?·õÖê{îü×ýÏeÜÊái/Nþ7W+æôéMRaéo°¦½…tÎ'qÒÇ$U@Ÿœêsý9¿$è[oztÈΉ¦\LAÔ…ù‰›Lê/ž7™žéåRIžC„Úm‹/ìx¤´a‡:4»»êV<…eoù PúÙ ˜;âü×;KÜ„üˆ¿òmg_µõ†Ð5âÒG~=ü_ôµ”CVjø/¼ë’ÓŸ§b¶#<Fþ‹Äè­Î£¾PFŸU¿Å‰‘•ø6œ'O³z%_wÞqûí·wú»-¬ð)v¨±{¼ây*õCæyÊg{ÃÜÚXÕ8 ª®uÜÈsNÅB[™C¡ñ©ÝnN®ÜUñŸ  [‚þ{C¤Ÿ)ҳܩ-©ŠÂ¿;ÿñöÛow~Òø¥Õ7û·æPê–÷Të)Ub»‘ÎY"÷ÄT´ªÿÈCœ›iÓº´ À”îùDM{·þ°ÿzBâ–¯ÞX{x ϧíhGv´<·7»¾Ä]-¥ÐÑœÍu‹fV¢ùý¶xåIwÕ±â·ÂÞqкÉb”Ü3UrâmÓ¡ŠY€_~.M5÷¸ìÀôªJ´¶œw¾ú ÉÔQ©Å‹•{–`±»¤_FE¹p_cƒü‡Ì‘ñб¼öÆnöÿ%¼Qè¨þµíÑGYru†²V¹M Cj ÝYoGl}9´6rXî¹Zº-P.µq‘Ü3MJ™ÈÑàå9ª7ó/ƒËLËÔ6 •×`–zC•ŸDÔj*P÷Y"jzÜ—ó¤Ü5rctõ§´6“ó:z÷Û8妊v ¬4.T=beUÉk÷Ù˜ü©à³å€Îé30¾4‰ÖÎ’vÅÕnu9Í®\ºSï¶rýÜÓa—ú\]ä«’’©YWùŠ«ÃÛà±t¶æãùµgÿxM‚Ƀ©ËÔv´t#<|/PD3‡‚îëŽØe¶ˆ^JñåuæP²m“Ç:í2õ ntƒÑ–ç`æÀpìož’,,Û†',ýc葞\h—=I7É!!X„ä¶aȪgPaˆá˜á[/‡† )ö|[ã…„êOB1´EW}¤å™À‚ ·¸èZ £)fIÓ<óOšæY–†q{;ÏÑd^Дe^Ò”eÉÅh§û­{‡„çÓ&krÎé‚q~Fö´™¤ÑooªÏÁ&ë4üÞdM×UÓ@ªÓ8«vµ¡Þ©¸ÚÛlVW›âióÙš}¶xmìr2W[Õm¡JЃáÞ!d3º¨#_]1Të¢6SŤæ!º”c/%òøÉ×ÐÒ‡#äjóvùÀ@Ȇ Ķup»@ͱà­&mt/|—²ÎÖØ—Pý9Ò©z-Q©j~´³º ‘õ+®dûõñ¶ÈæKÈã3iW£:>vsÛoë2/ñ+OÓ-.g¼A˜V<]Ìsï8©dAÓRÛ´ZkNõO:rÐ{Ó¾D:±“h×4Y:#Æ„ öy&Ù·1V¤CEQ†ëL… !¶ºÎ·zVˆbØEÉ]éã ˜/›â+-ê³Ve¤W8 e¾t¶Éš†­ô$ "nŠ—œ…g¤8%ï vÿ\!4 ˆ¬Û< •¹)¶Lð×~Ò%í¯_¦,N±+ËlŠY[¹´š‡-³i‹…VÈ„G,Ìl™m%äu+«SŠUqÛän“´IN»FØs@¾ N^Ÿ%ûÈ(þ¶ï¨ZÝ8 FSã' ‘$±ÀFeÃ`ŒÜ p()Þdš–…–+mÊ@2 €ÎcGÛªýX´óX¿ÂF6€!ì9„U.^”þÖrôËêÆëxmÕ§©Ä!è8fź¦ðÜ>{v`.€É“ªV9ŒE#é5M§×€õsÚÜ?^þ´Í­¾ÿ3ÍГ†«¯ŒFEhÿÏøù#0R'âù\^ïqïUÞg…YU¤9 6ÚJç ;•1óæð^ð‹ÕåƧ´‘¢¶™¾r»íǶ¦XKÅt;³¥›’r;¼Y„W,ìÎæemrƒ]nœt³bKyf LâØÆg¦ñû3Óùƒã™™üÁùÌlÔ{ÚdÕ‘ÒÆÞ|¿COãg%ŸžÍìO#ˆü§bþþˆ³çg —ƒ¯M~ˆáw'âã“ íUMü ž*«â÷}0´é7mÕ=ÕQÀJ5x}Aå‚ê½ýß&U÷`,¡ WÆW÷¼oâ~¼Ô½º§_nó7ÓK%•BÊÊŸRH¹êIâÖÊ”êžmøôSp>-ó?@¶ãËr PUÝ£àË-[ «{îŧ’ÀúE¸¬@ñwfáãm;³ñçÜ™ƒ…;çâÏxwáƒkgî•<ÞáÎyø0cç|ü¹ÞàÃÄ ñg¼/‡Ä+ðg0¼ãCÔÎLø!¢å««…´µÝ>ýºó~û•.»R[ºò¾VWLà¢Dÿ=kGZHÞM·IT QdtÓã—QøG›#ï™ð;h+—®©ÈMàY„Ñ`¦Ÿ®”»ÇˆwW r÷hq”ÿ¤I÷'êËÃ;Ó‹,¢›*äÝø7A¸ªñbcdïp(tõ…’ëd푦NþHU²l»ÿ×§¨Lh¾öVÐã”l;Ç-°&¤ p±˜Ã>X¢ÈÜjÆ­<„Iþ´±œ³ÆH¼¿72>[•϶MkÇF7Ë_TâòÞW ïr[¥ðF‚+ùà;¹äI¾üÜ$l¿ƒJz µõ\;Ȱ‰{îûqZГæàÉÑ,ënš ŠôË­äÚ´7t! ÜY߿䈒ÚüþÅ9†rWŒ8¤.×Ü Zèr:&;¨SÈ{TÔL¯ÄŠ3/É^B&ÁN"æà'°¿y&IA)²£8…ª°…û‘8MÞ7ŒÛ§¿´±Â^Ÿí·>q[#6 ¤t` \A÷)ŽGo×¶„B “”›XK`„Rn‡©a¿„°C VØÿŽ O©E> ‘7ÛÌQÊ2ÐóåÆó02„"Æñ n*ï£Å³úc|̽ci½<Š–øtnRx_*-ØìR5ÅÙçXÀòN‚6¯ÁV8‰>?`¯æ\¦¾‡‘Ešq±<$ÅQ¸xÿ;ÚcyN–°†@GA5Ò^5Ûž,~ÃŸëÆØ!½ªg’8hçH,gGFõ7Äúšæô§í%4¹>«@3ƒÐMU&º*ß®-ùйß_sm«^·/X¬mvsïü9}•ÀÛo¡ºiás0ÔNQ0Þ¿¿!Äx‚¨¯o×¶Öî·}Láfg ÛoááfMß v]µÝX‘+ìp}fbn«wFküç9úA4š ªPSME*sý‹¢I^\Ÿ{ÿû#k[j÷UuƒeVÕ½Jše8ØJ€ÉÒ ™”ëïŠ"à#s)Pv^¤g‰æ@*¿¥'›Þ-Ú}GU=Kéݪí‡Ã£m`{ÐÊ蜗¢õ}X­ïÃpGX¸7 =Ðå;ÐäZþ=ýÏWKW„ЪèÈç†ÎÍ:\¡¦‹„:äWðTç:ÏqéðãÔU=¹ÔÞ¨€]Ã7æb|hÎ[¢ô] Ï»õ·¿c {â<ÞAÔ“+xïæÖ¶&ŒþTõ̼ Æ­²ÕÿËìé’®¤ö¶‡Ñ*2šE m÷¿A—iÜhÉõOæñÙªz\Ò²±TMäG~­êqK±M®ÈÔ¤ªž%ô‹oƒà!/Ä;1è"*Út*‰›1„Ý Ù‰?þÕö¨y}¶yc&Ð Èé91ïâ;1Žª;kl:OØ9É>«Î¿ -PÖ×å¨uÜ8°£ûw Ò¯ÒBô‹ûAîÐoO3º»26À´¶B©o5À´ö¤íFÇ{Ff¸|òÑ€wE‚Ãè/¤_ãÀ-0"±¶äS¥qP`òSÀ²:=¯K¸ÿ?ÈFìR³J>•Ú aæ»x㛸º¬®Þ —C¸¿ÚB÷°âÛÉõ“Jé†íÅêÚó\¶;P;À`3Õ úé+Èvhà° ¤ëz§þ†¤÷|jˆAÇ@B¾¬/¯Wz? 5èŠêÿ…±þà‡äúÑ7Ïxwæúÿa¼#=¤\H“ëŸiÖÞ¯‡÷Q¹þIúûð>:—\Qáih®’—ÌŠ2 ^¯A¨AZ³M/ÕñCòþb~­ê)pŒ@ B`hUÏbým00­íÆøÜ~sÔ_ÍÆØ]ðõt$ñX%ös:áüØàuZür}üÆ@•#ƒê«zòI>Ï ŒäòzŠ[Õ“*xÐ&×#¾oŽ„ç)ÔA²G5‰Ù¾ÜA_˜u¾˜6‚/ì]œ/Ì_hB RÄ@µLè‡ ·ã•å)v¹Ýñ‘‰ÁÃGcRÔ¯qÎMIÚ ]ÏmýcIØ|>fhí_üOn_­,N¹•-NÉð¥y.]Ëì:—Í·Éo®þA¼üZæHâ·Bq›úê-(FúÍÅßøÎV§85lÊjÈ -û Uö}¸®‡0þs5üçøÏÿ×ðg[S’Ø)c Ü­ìò¶&*[SÖ {×È’Å(¦fìyž¯iþ$)¡jòéÿByh"S¹áËŸl( 4öŒgªÜ`fLJœ ,˜ç9ÞJGb))²šíý×€7;ó‡SmOˆ?ÓŸÊoÅU< h’ÒzNv Ñ¯-ÒVû1ŠðÖ˪/Œ‡ÏžQ´¦%º«/$âkÜ.|=úå„}bæ±oŽ5ë=é¨ÇÔ}÷ѱýµ~ÔzL%TÖ;v°õÖ·ÁÉQ o±Ó÷¢2ÿÈßcRN¬N±«Cø¨ß?ÖRݨŠ7VZ:km¹ì˜zìàá/Ÿ –“Oð#óãƒÔ¤J`óÍþzzñDV­!ö=ÿªÛqß÷£š ÒðQÔÚCCìù‘Z㔚¼àTn°0þ oûè±”ûGÒC=TTCOE•êe°µŽüè“c!qcô±ÆÖ¹EmÂ|_BÒúIʽ¼ŽF»W«£õtkcëA¨«»µA¯Møè˜N@"ÖuìXÃÉø*€s2ªþ¶<U¯ý>¢ý>E¿ÇOFýŸŒú»ö»Sûm€ßƒ¼ðéÂÉ{©¶“Z{xݵêt芶Óý£)Þ§2ãtyØá¿6ø/ =cš)+ΞÿiÔ ü䣨Ä÷Y^½³ öýX[à&í‘Ór\e$¶bâDJLü(ª-¾LÕobOîÄÿ[DöǘI¸¨FQ,¦­û|7ëß?ûÎø¾Xr-Jã€ÛNƛޭ×Õúzüߪhð±õÎøÿõwƒ¿ñð.4ñ)bÉÌ·4ý(jþ[ÈåÉÈrÇæÜŠoS×Â_›kMÅw´qð}ß÷Gά~ë¸ô(«nÇé(µÊkR“ çcÓ`KÓúàäDÄ ÛñæP JÎá?ƮڱÇR0bKà ÎÉ(½Àásq¶ë_h„oʃü Щ~Ûч‰'tÁí{ýÊý ßÛœ]ÎþýóßGfÌq¿7‚Œòáï¿ú‘ï÷‡.ñ}+ÍŸ÷ò>¦lx5ÛϳVvˆÏŸ[¿WÄñþ¿h úk F½V^'¶HÿÈógÎúk…{žà„ÂðüÌo>œ~Aئp¢­M?êLÓ/LaÜþ† ùVœ ÍÿÀïæSLy´bâîd©/kYSíšÐÒ%éTvjŸÙËTê1÷òšßY2á P”F_aGa(¯¶8´”u,™Ð uPœ6Ò8ÞY¢A™pP\¢ãÛ2„5>M8"¦k„y&W­0]©‰ ÏÀLh&Ágéd¼!õá<1q/µâ¯ôùáZ—éa×R©sàDüý#çÿHÂß™² Ý …KÓû@ì 5ÎZW(Ç.ÀdŒ/y!6ÅP§ ´J;Ôkq1ý¢É_ã~uÔ¤ÔóÎÌ ¿³>ëË”íÀSÖé_Uưs´^À¬oÉ„8ù5ðë„éþJüåky'GÌ£> ò|ìРÙƒôL¬åýÉš0Û‚p6-tÔt\Ì‚`8è˜yì`ÍsB?N8=©n½XñÑ9þ{ùû¯¼ìÇôï„û ªŠ|Ë.€x¸“ô) o©ÂE#ûæÏà³þm-jj*¦AK3Ù»üˤÁíO=‡û|È\ÂŽóÒK¶ÜE•_Xn-ŠôR,i­-™ÑXš ”ZçÒ¹3ý@Å=õ\m¼4;QüâïkߟyOÅ(.Œ‹™ Gõð9²À; go†Û§¦ü§:T¼MÈ¿_¯Sú„F2i0(´ü@ƒ©ß ÷ uíüH;«V×â”Òú´ºZVÊþ¡#ñ!Ÿr›H‡+õq’°#f^ú¾rÁpFv¢¡p';¸Rßïò-¤~š›rç|ÀáNϽSÿ~iÒ± &?ÿEúÍŠ ßcõÕýé÷§ßj _íw¸Æ‹/g²þŒ òÏOjT¾Ÿ€ÿèGõc|¤ï¥¯8øcô»Ø¾#‘"Ë¡&d§Í½|Öºäüs)ùôW> sþµÇ°°¯ák&û.2ÌÝ:^y™Ä/ÛÕ̶4Ïs?b>2šä\'z0'¬˜øÌg-aÁE·íG’qñÔ:OeÀ†|ß+Q~X~o"tž`åQ~9®ÓMïë"­Ïß>ŽxfhS¹|Á¬ŸV¸½Á‡³¹Í,Æð¥ŒåüK—ׄ#zæYä¼035@ì¨ü©¹±Û YbÙáyÀDŒ·‡²Xx¾‘ÑÏÁÀº® )8oðñÑ{©ñQ“‚WVƒ~“ϸÏ:áŸ[c¨L`Ð䫇òiBH»”èeRÆa˜à%:NHÑrŸY´×óQT¦'5‚xÏ¿ãŸÉ=!)Jî ‰1r·æ½IBWþÂ̾”O›¤¸ !)fe³ï1sþ€!,Év‘ãî·ETñ-<†¹Ýÿ9µÃÛ“ÔÀZ#ñÃÇú׌w˜H<˜‚÷ÛQâCÀ“hõt˜îmH5ÝšÑT+G Ö¶«j4%S©÷½ÿ„túhd„PAPŠèñ¾`Zý+¯„´šƒ¢+,‰ìú2—#…›klL $bàj‹z£ÇhŠ‹S¦@I¨1úÛL¤á<˃äÑæ@ƒ¨hîäÜ)ÅþåM0•åÀPn ÕЛæw/½L8¨!€©öI=³44t45":R¸ÛÔßÅбS¿^ê2¤æ„På7TÁ4M”Ðxt¿._&ËÝÉšt‰¢±1ÿkÚ2–OWµ¶J?Ü'£Ô›ÄѪH†ê5J5óú5©Ø¯~Þ^ —ÃvŒ™,÷`ý$÷ø>v 5(b5H:Æ’~LÏÄϳhøýŸÏ_`:ŸÐPiP€Š}ÿúæEå_£òž»üf*_ño—O§ò[ÿíòz±¼ôï·ŸÊ‹—׿O,/ìóÛ%”í;·|?Ij¼„Õ"h?¶º¹>­þ&t =$BÿîE…CBÐW‚¸%{p ÂW$$-Ú×L|œ¯ ¸‘9G±crcÛÑÓøÉ(˜Ióß `|œÚ¥A¤ß&ÏŽ±Ž~Žª;v´,HöMê±£_ƶ`&2pÄk¼ûCöûÿÿÿµ:þ·öÃÿKü¤—¼5ÿ*Ž?vð\ÿ¯ Î[5ŒÿiÂí¿‹ÿƒÿî› %ˆkÅtÖŠQóªÄ‘t: ŽHûÑ¡NÓï ý±ó?Lå“¥T†ûZá8½ð­Ízv ‰¶þ²m*; Íg­G»ˆbÇ«Oór$MˆYa‚]?áH˜"«5ŠL€‰æã£}D‘ÃaŠfÇŒ&tžÅÙÑÒ~lêôw†Ø?rÙOMM¾P¾Ñù4¾(‰“௣žš:ÅøºÞùôú: ¿â¡·S³SGÛ±;SìÕo"ô½ ¾S¿´¯áú—ƒÈ%Ùá»×Þµ¸£ÐßD—î –·?šQ膲FÅå„Ç)¦Óï_nÚ|@`Ÿú¥óョ¦Î ·o©©™áö üq­ þ±&\eÆùBCërBÈù=hÿ`þ6÷Ÿ¿¡÷Ðï$ò5rGˆñ74ïpû›ùfêÝ}Ù cà×HÉ…“<?è™ ¹Ã!,~6„EðQ²giߨ>¹Ã (;ÚpVŠ— R‚L„Nf¤ËЪ/Û?Wmd®{9Ô€ƒ¸¨Åu)\»jÎFájJc·ÓÈŽ« :C¤üàâ<ü<Æ+Â"Ž5?·’rN+B!gõ”¯w¡›­zÑÂÛËÜf:+<Ï 0 ©ÈP·ã_Qó Ç.Ïß˳žžçMaï˜?ÖtXö΄«?§±6˜ôhÆûW¥€Y:N8†×B–Dm)0KË¥Íï<ŸF­cŸ8ÙQó[LÓNx«úÓþ –Ô´Cºš|¬óð„CÚˆ tÁïØ‰“¸?4š²½LMU8â_99e´¤Æ/œf\B# ¼ÌÕRþˆìßè„঩¶ŒÈ­ØÚ2ÿ^¢ŒO;ÆŽFÐC@Mh²cX)ïœ;ûbÈ€b+ˆ;ÒBÐ9‰¡9²Ø.håNÞ‚×ûµò^£•^ÜÊGþ/¶R£Ù7ýZùÁ„w4h5o|Ú!öqçÎíº`yž7C‰õÀsA䃯ñ´ÓÊ­"—üWD‡+#ZÉûׇ;m}ÄmàCè ÑÄ~tœ¬Ÿ¿?¬pS«óÈ„ÃßOÓ†ð`ÿÇPô<—"~ÈÒ2hb˜ ¡¢LáìÐø¹Ó|ÎúÏù7áùxŒ¿àì|¯ÁΘN7%ÁG׉8Ç ’¼e> ßÞ¦Ç Gz"I Ñâí¥¡„(¾ÛpøKuPKÿJè/ã¸ü"œZ~'žÃ`,>O±Òt@²ü PCñã/%Ëß3EÈòVÓÿeF<Ù¿—¢úÉ¥úÉÿ'xòÇ9°­VáDÅvœ½Õ0㨆ºš?‹Ôü Ûߨc£V~¤ÁÐ nœpƒ»85a\øx:› ÐÌ'°¥ãåÏÍÉܰ°2 µHk Úoêxèšë5 ìïMqǼ ÿk­ÍÖ~%{¦ž¥_ûtŒéûÜ#¾¿h¹Ayf#…*ñ˜5ô OÔ,^áS&Ã4ÁG))Sû\ÏËêä4ÜÉÐÅlÒ¤ RжŽFbGý¿ª´†i®~”PÔ›ìèœPh¼©"—~„ûdÞ“DÌw¿2³æÆ/Ƴob/Éû̸à dSæÊõ¾Ö˜ðh`¾¾¹z`"r†4S#$;NëO E‚ðkýÆhÆpšÄÏÙ½úú:gÅà)LÆv ¼1±ìxã鳕”^{Hãm­q—è.M¿ û¯hKTçaƒ¬Z4p²>¥“u ér ëxjW˜¢Ïš oºŸ„S”w‘¨|)'ë¶ßD  Ú8ˆÅqÐÇ'ëÆµkmÃFƒ‡ô äéû(}çh‹ýKC!#}ÉŽÐèû&Á3Çh0ûYx)JG4Z§´æ~ƒë ÅErû4tÅu9•Âo¨ÙÕ†”7NµòŸ“ü§…ÿ¼ÇxŒeÉÎnºÍ{dÓ¹ÝQ4ÛC’Z\¤nÄ yçå7“½Å‘¬±óÆDõdy-¢y>s½§â埾ۺÈ7œ¡³ð<Ëk¥<'•Â“Š«•Wx’}yòÚ©]è<æ j‡DDó–wRÏÿH0ÚV˜€¡¥¨…Þ#ý>i§³´CQÌõ6+<ðç¤à¥íÑ®ò|ŒÙ¨µ¸S‚ mÌÕªä%A{F+ðR¨j¥14(\¤ÃÐJ!dzv°¼ó †$L£6*ÒÛÞ W æ¾ Õ*ØÈ3þ$ÅÕfTx€üªO¦»Î”C[’° ­½ >Ä$•á­¨ªâJRòÚ™“Í·ù·âÜö¸Î°&98^*øé…'7Ú•¼·ÓóÚÖÏ&¢¶,Äc²ëíÑÐr¼(R“¼ p¡f:]{צ ^H"/" ïíL†ŸÔ†×·žaß=ØæµUc÷ÁÛmHNx…ÂG¿T<'!é €Å34ãù.èLé Tzô6lkçmog@EÍsáGœÝ“ÿÄ¥ÌóˆŸßV ¡Ãè‘7.æÿ„׸u"âÿVEjÕù¿Ýàÿ“ „ö¯ùÿøÿÿãÿ‹ù_nOÐ#kë¼áøÆÿïxEJòÿ]^ñ¼í ý»¼‚<úÿšW8?þÿ#¯¹«ÛñæLÒ·\±ížûî{ÚAï 0½fà3Œã(2O2‹ß ),qþÓÐ:ã[*£ä}6ï ©“µ¨«A¥R1ž£‚¶ˆO_ °Ì'ý™½’Oê¨*¶³A¨©¤,x±gû·‚]íõ’l¿PShÆ+2CTÊ­ójÅX“p_:‡íVÿVËôÝÄ:*¢vÞ˜6ÍôgS³×Ù‡†! ô8–¯æ[Ø’ªº»q~}N]œ/«EØ{vv¬¯¨…½³q úl¿Íag! ¾-Ïmï³cÙ;åjãöÁŠý0§êÂÕÒ ‚pÊ_“÷`º¥ÒùޱÉ>|küÄzô‹êÍb1mŒ Kc‚аÿrÂpš“pl¼Ö‡¼!1J•ï?ß©”ŒÁ;~òùM\cTyµ¦84iÌǰ: ©êJâ—’8Ý­d@Ë+Æõþ½½H$ü©ó*ðefŒ‰¶ ºCm™o`h¡æ2­ãÌefuÉ6B$s¯…>áÝ–ü“E½.ò“h§+©aЫ_`ñ™±¬Yjß½0I;¾¡ëaÿQ5ÃÁmÌĈ³3}Rm~Q™¥ÌªFWk/]®x©þƒ·U‡LÉx£Ròg%ï¯ì@õ9+€m9ø®³•iÎ ¯° ºQ¯OðþÒ.]çÜùÒ>OmA1 nUÔ¹TJU k즓Ö(ÔÄ‘|éWï P/2 Ö몼ÿèÓ*fØÙ~ç@%³}…µË ð†ôðø®Tò©þ„j¾@5Çš¥¿²ŽpÍå–êUòj˜™Wý<öáÎó.¦ŸMÅŸ"wc—%íDúþ NÖÄ‚¡„Ç15'ýÜúóê»ñB”—r~o>Œ?» ߪ¿Ä¿…:î3ï·oU(_„AHü¯¬¶™êµ2ìø"ïélàsÇ[I¼÷ ” RÌΧ¾À(§jͽÀþU(ößЦr¡÷ûÌ-.*³©¥ðíf¶_±Ã'(V%Ï~»2f¾ü©]xu?…;¡Þ#â Wd^¥8•…)Õä¥xûéóÀþ/w¯ØY )À·GÀaÀ» #Ê\¢ŠVå¢*jUÔó:^®؆g•K·Ár© 6^\Áµa®ò=m°_º ÿË6`mußS‡åÒuü½î_ÇÖï«£ ¬ÛKÔ±øß¨#éûêȼt;Tö¿ïï—Ù¥ûÛv© ¶_\Áõ÷rö=mH¾tRþ—mÀ::j¿§ó¥ëh¨ýß×qï÷Õá¼t«ÿ…:´\¾@r‚F­bãdÈ(2B2M©y”NæSÐ$ç‹zÖøêGaÝ~¾s%˜ô½0"Ûz´õ©íá¶Æh·QD¶­jûEm;Ö¿moÖ÷‡­.þ˜St˜“¦eÌ[/3JíÚöÃ0[·éä»ÌÕf!÷ðùÌ{P)´‹±ýÏ@!Ð Ô…ñ®7CêÙq 6·:Ŷs"Íìè3Ì‚‚üSf¬W¹qÊìi ¬3=õiÔi€þ—×!F× ¯9"ÅaÌ®RÔWU˜MÒµ· ;ÝÎò¾RfÞ^÷•iŽ4IñØíJáW·gŒãäý6%̯ÿã›g ìCýuæíÊ8ù—¹Éâ ÝÎJ¾‚bÁÛ•<(#ˆ–‰ký]©=p?̉RG‘¯ØR ž(ÖÏÔMÕÖ™–9ÒQ%¯Ã77Ýê¿-„ŠT¡ÿæ;8 {Ò¹xñNT²lЄCâMXw¶m>˶Ñe&Nº‰ÙæsÛ7Ž¥x—ƒ¢PT­·… l¨è,e%(Ûìô¦2ú/“Äá Ð-S?¼ X’ò òpPzxwÛh˜­{ÎÀß —Õ‡†ACøÛús¡õ4ðWŒ—Ѭ·~@ŠÔ%“ ðæ^^Ÿ¥a†ãJ3?bWÔ—(c±PZqï&-¨¸mélHô娻÷ X%P.Wnp¦°þ+¹{¼° ÃD)£Á>8ZЍÔW0´À* ñå aϜ͙èUlzßÒ‚¸‰dkž‡ÎÛ& 5 òƒPwZãç6ßòq O¾#ŽÂk%$´aš-Ègl¡­·³UãÚÞ´##¾…fö[„ÆÊïýwa¥ ÈE¨0µ³à¥Ûü±Ùæ)—ló=ýÛ\~µ÷CÞÞÿ@÷{O¬S´ökΡö²±?Þà52oð`lðÜqv½5 o#Z³'ð J÷Îê÷ù” ºÓ ­+Ž•he7¨×‚„s³&õ*Db?ëP Q—`—–¢Á2ØDÝ$<¸Oر/p†Çw ›cˆø/E³×‹öƒÙd¬ìijíÍ6Ü®0Íß ·åïŸ@[¸ç|ç%ñ¯ðœÍèg!h¯@#`¹hù~ùnñí9zmµëÁ›óÔW¾ …ŠÁö¼¯ß§G©mÖwܽ!á¡FaÇøõþÕ´õØæmÀXm5~jŽï•×ámÓäú2SQèü¢þ÷ÝzPh¶_¤.…Zä™6ñãŒÇñ³8¨Ù‹EðBö™´=/oPÇvO52H<6g z&‚A[Õ6¯ð4`°ÒdH.³²fõ— XaRl³4¢ 舭tC¶Ÿ6ês"ª@À‚jœ€è«.õÄCïÁ{:>Þ²Æ †O×+W<öfï›ðy#ti³O¥ý í=o÷aïµh²zìÕ·èÍçCÔ–•Y¨½ê>B;Ú=r:û«€7WqKÓ÷8Vã.]E! ¨” ¨[V©ú×áY–‡¢¥s«â û{dÒWhµ šFÔØzco«Bºr6AA‡â¸ÄÏ„L+¹Cý—¸2.ÜŠ¨7ˆ áŽ8eÕ_3 £}^¡tß+ÈÂ`bªïïÕ:`Ó•¢`4êi[ñ0K”V’BÔÇçø¯ÿç|–î?õ^ލÍkxüÏ­.üÉþúú,ç¯ÏtíÆJ å.Çé$q6»ì˜Œ¬Å•¸lЋ}¯·uä^ê?­¡q„uR ÑˆMêVc6"ÿ¯/SI$Š<¢ r«vú¼J  |køi¬Óü뎜€Ù¡…â”70Z®Q÷€ùl3…­ØAæ¦Ô} k>À<Ö+~‹í¯Tÿyô=ÇW䎪ǽêĚϡÉÉsi€îË}‹œ,Ηsç.¼<°že:X¦]n°/Ü|¬ÞÓ@›¼`’E¹{’ü¹E~g»{’oÙj¶l¹â¶³ßˆ¸»÷›uwƒ0Ï8Àå¶ßo6a ШÔ}¾»Ï6.µE>`†¹ʱ(ç8;#õÁ”„i x‡3N ažN<ß5%ihs¾aè÷+£Tßææ¨6ø@B0ê=Hxð…8-ð´é%|j…§gïÁ§“ð4wGœ]Ü£Äßú!Îä³Y«|À²f/+Wf.ÝŠ‚÷£‘Bø=vÕl¼ó~CöÊíÉÀdÆš­PóÍÁ¯Jÿ;¼”"¹Ô«<ÀL.{LX2 Þ*BÝ.Àÿ3`œ~T¸çoxLê°5~¾¿%È£ƒÝ[g‚\È:å/º|¶ñé6Ü(‡„òôàÜñ6³x­ü¹YðNЦ­%·ë/X4†KmL?¼5A¹Û&ÞåKœ~\¨±ð|®'£t\+¶"ã{T ôGôÅ*Q—#° r×)æj+OTw~ òÊ„NÊa…OÁH¸ ¸…ÝèÂ\ÅöËŸvésAM®U¯aÌVœv\j0Ó¦_™y!ã¸N‘ÞKí1÷Éo™õ›è³[lÀ¯ ›†‡¤¶dçm}p$®Úw€°1¼øÇa[pú(é 6¯y…–;d¿:Œ•OwÁè ä/c3 åX}0YrT÷á Q>Eñt4Ùf…ª¿ÄWȰñv Qkô[Ó(x/£Ö6еú×ÔÚ£W•8 @í˜Yc,(Ezfsbhù7bs[ü£P¥¡°e6ë¡3Û]6†Âë8޼§±¿žM=à¯ÁÕÊãê…X Q‚ZìwàJæ’ÞôcëãpOêðwcyOK’ÞÓ¬zW!2ZãijžŽèé‡ô4nRO÷4k”?‰¹™¹Nâöõ ÝÔÙo±’V¥°5¢»OBw/Åî¾ÑݬÙâ3–xÖÝÒÏ&s¾sd(ž““KZ­žÖpgÏ¡Î^Ã;{(t6ïÌ\zzÅ* >v§•‚¢®‚^0Õ¡Þ´—ŒUõ¿7ÿ?ñþ³–À£—;­o?IëU­-¨åQ¿!5ü;zAgޤÎGú80G…õ°\ÓãX>µ G7 PÈNnñ|¸ÇNø¡á–¦Wó{ÛÅÃ팻‹z ›}Øo¸ù—‡Û¡þÃíÌ÷7¡öw(G=Žyż…{ãM¦U+™a-ÿŠ'ÿi#4œ´Å=Ð3‹º"G™Kec؇“=ŽjÒÂʯh²Š`gØ¡Æ/i€Ròµ #at™TmËU.lS8°^ ª@}Ú ¿ÄGÖ5ýFÖù …-ŠY›_jd=Úׯ·çââ,s÷lvN~ËÂVÎFQó€X¦&¼cLTëa¢rp_áÉý`ÄXÇhˆì8zêÅ5~i•›¡=u¶ñÂŽÂŽ#é‡Åñh@}tHt·=½S¸ç<¦¾Ës¤–>él©µg%ª¿>Ô«ÿ ¥o~”‰ ðºê…ÂVîrŠYrW²8[îÊo˜ƒS8m.¨ˆ©t]²xÙ\ÚGÏÁÕQ1a.6‰ñsB`°ÛnÁȼhÕ±å/¬rm$)×±S©Þ ‚wfø'ļ‡ïÔ ‘mZÚ¯EBÍ4 U1áVõvõo•]‹ ™HÔ^ Yê5.‚©ÐB%RxýmÝ¿=„FëC¨Ø|ñjÿ¾!Ôþ/¡—û¡öB5ý‡Ð–Aý‡Ðjž|«h ¡Ø®‹†Ðµ| ÛÞG™1Ž„mÇ)lcäXjó?`¼¼1^žI;P`°¸~d°,zçRƒåùþƒe“Ç^âº.èλ›«ŒøU]<zæ¦,×â¹b´€ÑsÚ‰øižûH2–É‘{bËÏê‰5äÓÝ6”n-ÿZYêdñØÍQ+´æózÄSNoЗð~ãr–8XŠU–¢¼š„ÚõŒ*h‡ò»Ô±Ÿƒ)‰Ô«c‘O”û˜þ;¼j†7*÷'Ós=æI¬Å”'§`žW'aúX‘òL§<÷âó<›ò»™TRVy2“2϶‘}ø 1ÐcTáSð·âeû\ú&&)sPùö†¤AÊX$6ØJwà^š2ƒÒƒâµ\)7‘zÞb<µO'§6M¿×Ùp('ÿGwúýMÌóOõ$ƒ# ßôÜT¾AYBÚèDÑ ˆ„íGQmh˜™Þ*ÎjM•ŧœÍYœ@ôà'Eve.¼ÄÓK–»ƒÍÀÿ¾øm~$೨ô_h­·Ð¶ÐÁŠ ü]fgÇØÇò'ãwa×6~uôtlÂ+«¡Yþ©¨3ŒX¹+ac”Üps`¾‚ö<_ï ü¾ r— _7Ãסr—_·|rOE ëÔa€}v³\ˆC%0ria$HÙHZ˜ R¶úU ÑÕSá?Ý‚‰£¾77D|ÁY©‰ØñŠÓ|˜}–Ú²,_}âNí¾C°‡Øþb%ãéG Ã|_¼·EtÚ:[ÊÌšH‘ù²Ô7ËëPGþ’6TÓŽ`äåÉìlj·oLŒ|ÈÂܶ§þdW‡¹## ¹ë|/zŸÙq¦¬E¿ƒìiä¥â"oÞ+I¶âP‹>”¡›CV}öWç;YÓJojâÌc 5ƒá¥H­ï¸ÂæýšÌ`ÝWŠÝê]xäëŠUâc]Ì­Cæ¬#ð[~Jà|uYÆ?Óó¸Õë0¾dp=çÞñ˜¦ÉÙaúæ5š–ÆšÄJ<ÁÕ‡;$pP«êoi òœ;qp6ÌŸˆßY·zè£A¸”Ëkxá.°0P`„p±NÅhâ¬iÅ*ÿµ¡~ƒç$ëfêöÐè¦ ÿ”hµ_6G'tôÑÜc—Wpµ+¼'ðôIšo¸“èÄ( wA½Üg¶ý §º>acÔ^§)‚꙼[âGô*iGL£#;c°¸ÕÀ/µŽùRï˜'¡rõNAˉ+BG@÷j0ˆ…[ÝýKœ¡ó: ì ˜"¸€ uÏr½;nâªÇ¬ÅEôÂ×Õ† `ŠñµøB{‡½ûð|w5­2*cqìÛb!z\Acç(kº§ø 8¸¸ †DìM„-ë¸hL·Pçåß1¦Ð‡Dc¡æKSÓîÔºî-³>¦”EËAo(–?ïr3©¥Aœ…s¥ü·ÔíçKíA¡æQHö-éR–Ù:÷áB뼿@ÁÖ"·ueäuˆw˪íküÒ"wÇn¼Eî¶5GÓ’kã?Ôg¶-¡;º9×Á“‹`±úx'/z¬Œæ@y÷ØBd» ­ÀsM×2`:Ïû·2¾cñŽø8+Äh7(×­ë/ÞŠ@à0o–áø'yQ|1æÄ¾ò"¡Ÿ¼hƒy;õwhˆ|ÀºÒŽtQ9ÞŽ ¸ë> ¯#ù1GÄÚZ’âràµl]§XaGy¢:÷£‹×œä†8¹KhvµÓ’S4ðyv( '¥çµoBåpÀ|\Y•â=ÁJΈñÊ";[˜övƒ=°«ÚÓŽ»%Âöop¡KjoüÊ e}«Ï.W9Ò¡ßbÞ1 äÈx3ò&@§]^l±™Ù[c¯öth«¡óm6ÈøÏõ༠tä†ÕÌÕ¦HÊ’R¥¤ €åá·ðÔãE`›ÑfЪW–96‚êÜ&ÔÜ@ëmŠ«-ÃÓÎÜ¥, ³«8žwãHéC4]¾åË•Uvö (ä«y´ 7öE)ž¶ÌÁ9bk^]¥=ô×”¦Ÿc í@Á‹"I«½ürtÌ” Õh­†& Ê;.}M6Ó 'è:š¹—Ë·©ãÕ(åÁj„¾«®ËS™ëäÑÏÛì˜i¶9ýƒ6oïí8YÝŒvŸì9i¶ÿª¸®“H–·ai`链5Ë ˆ÷¬{øsy¿Ý{VìÔQ‘ưsG'GÕ’“ìÁG¨EoA®ÃŸU¤3J’’]˜œ×Î:ä ^g½ÁÁn±o$/ޱ™ýEÈž…g¬…íHZO›Önæ¾)ük;ûµc£•¹W ù³Þ§ÑôÅÞQJÎÈï˜ñž4Ç¶Þæo${AÛlCŽø¢KÞçLÿ°Ýp=àÌœd–óUÄ 4ªVæRWø;  ð0a,²ú7ãñŒ!`ý†·)¶CS“Í$ÅËu\“ƒ„ÉB›¯šå\”~jC²ÔJ·D‘uJάo˜Ò¥ÜbïOaÛ§‘$á„ÂppŠp©æÿ–Æz×u}ëf–gà *œ¾u7—_/¨kúÖÝU>_PÍô­ÛXž€/¨aîÅ„Q¾u[ñ^>àÙogÓ 5s1Üð»f%Û‘±É¶1–eûüÓ -c‹mCl½r³Öw)n)¢ÐvÅco¼Mï!¡¦MÈE6›¿¯7,éÈX´BðîÁg _£3ý]aZ™¼¡œAxŸ»WøãÉk¸]SâG€}$b¼™ü^êð_Û«å«è'é=¬£¿Mïa%ýuzÇf7»TjøßPY.B¦9 T TV¯ã3†²ëb­­éÂvtuVæMJß¿q|cÀê›þ¤rKŠÜ֘͛ˤèRùD(xñ>VŸ-” %Ó†Mhë’O›AJÔ¢®ÔÃJ–]¹Ûa>ÊÖ9X.hÅË…šéfâÌà\§ Zœ@‡2•L‡†Q¶ƒåÛ­%í¾âÕÊz;Ê‘»í(5ŽË‡Ìl Ø466&®º5aF^Λdjèh1¬8J™·œoåpté¬ÔAöd¨“ÖN•56hsÆX4b…{&áDÞªÌA«ar[óuÚv 4‹%Âó0AÞg¡]T¾Ü¡$"óñô–5è>úðhçÇEü›¶ü±RºVÏÚGÍ~È“Ú,ÔìÆßù-³B ©|›á›ÿ}´"{¨XÅ8`+üÓP'¸MíC©'u°\›?9€.`Ï4¸ÛÆ–.§Ñó\E—/a|ên$q ‡xž1Ľ&ríGŒë>5×@éÀuXž/émžÍºÑZ6»¨ô8-èåì2ô~m,èö©ÖghGç©Üè̞ĕÍ6Ô‡q_mh}ò¾Õ(} Ïø–W§ÈSX!ê[(JÉM¢UœÓaNÊÂódJ– 7mº}Óã@¬:§»ä63+l“†*C™€“”e“@­ë—‹?Q Û‚s¯µ™¥¥ pX2Û&›gG‡ûSÀC0Èð Øg³Mc©1qJž Êì6ÜòpuØ2òÚïO)œU‚Æãò}¬ÂxÕZÒ† W+mJ‰-ZhB¥`ßê×p„ñÅyŸ}ÁæóÕ;1`­¦ã¦Cî$i@lhÉPGQñr0¦ƒ:íÆÐ©$`P1”‡Pcåb_àl]§Ê‡«ÿxïbµ£þ’z‡oC—²ÄÆÙ:IQ¢¦Ûwp¼yÚÓ»ÙnR<ÈRVÏ¥hyú‡BÍ*ô6œ;Ç#†ÑmnÊÚ…{ê𠨹ÆÁV8XŽ›\Ò.÷SÙ¹-&¶CŸ±¬ò  óƒ¼xœÍ œ :Ž!/À(Þ­®ö¸ÂöpþC6,²ÑàÖ“£ð-Šå«Í òqûbv^ýøOœî¾Œ)À¤Â @v\y‹"$-¶æc~‚ï`~Ÿ~嵉¿‚ÉIöÛýùBlùÈ^AÙ’$_€©*©üeËöë1Ê¢d¶09ð' ¯Ô‚¥6?F7ç”%râüÖàLoZ?ƒ(çjïG:PaÞ I–ÍêiG Æù¦ål£µúm úÊ»]ò»ì–.%E]`îò‰f[çá ïàJÃ5­éygX«PóÌ]eæ"Üûè.Hõ¨!IUǬ6.š!çµZÌ]Ч•m²áé–ŽÉ®3Ö(” «¶V¨’V@üïô‘!7ÙÒ¥3¬ääzÀà¤ÿÖïø¬çY†dÝužºf:´AÝò—ö ÷Iõµ40¬0Çh¤‘¿5ÛÕÁ\†¸ÚržäeÌŒ~+é§·nˆ>Ü–Þº¾K÷©òjÅ዇ ú²/¥ÇíÎ"Äã ôi¼íà±™¦‡sÞ#¾Í]¢‡}Üù±on\hB‡o]ö€Ü-l´˜?†®gûØ9÷§»Rƒ‡YWv¡ˆLï˵ó3H-Z_¾E¸—ƒD#Þ‰‰md6ÏF$žÜ ­d7Cž¿Ðæü|¶4f”˜ûéÇËÓ'ƒ¬mÁž2 û7êdÙhŒ‰ƒ‰vn&Òˆú°3æ¡ožLÌz˜CôñŸ¥µ¸Ä3ÜwñH‘›4f”XµŸD®©à<Ì;«ÁìãG¡A½µÓÅÅѯ ¥xÿÞ)@æoüÉÓ´ŒÝfq‰Ï¤+¿ »DÂk¤€.›¼ [·#8Ä•ÝÓXÇ-ä{a6ª Ê ìߨÀî´ <Ž¥™k‹KÐA»4ÙMϰ±¸ø#_¸üž‘Nø­¾_EÖäL\ Qÿ0CºK磗HwoÀe…•\©1ègl×ü÷Íç;WñÇ· Ïšsøêr­pU‚¹ÍVÜ hΡ«;›sh%€VmW¼†+Ä8?¢ÍŠ´fs:a&„Ÿ„l¹Ñ.wWV|Âw¸Sp]ž=@«ð‰Ø ö@=cã•øJI¦$ Sp_‰¯¥ôI”N«­J ¥‹”N«ó ­ÚÇÓ¼2“žŸ¢zIåPp™žûü>@kõ•D\Co–§i{ì\§×Ò\…K˜Ü·8r!½ZF4‚†’ÅŸØÓ7Zȧñé¾öWb…dsãºy,² °Ê9_N—’¯-ÙH…òi›¸€tAeš¾šqM‘* î"õÄyÍ»îfï‘â`²–ÿ«•ç;ùrNài¾¾haÁ½´Rúª–§È)ŸO·k’%1Q+ µ°}áÅãzô+Â.Þ ¸Ik†è€Œïæ[ÒŽÞóåF ¿‘ÏæÈ'éÈ_åV ·•EnuÜy¸ú‡X·šV^ÕlŸç v÷wÖ{ÕÿPAõ{”<@ùøNƒÔ.í¾Š.[ò']rÏ)–×^îT¿­KL?*H|”6»:4Qyº Ä0—A’Üf^ý!z“¾_¬þe ªã7³¸Ì¤þnú º‹Šid«íAœÞ ŠB±º ?+…ª]›c¨l.è5ÇPsžƒšóZ´]j÷¡¨QP|Œü}vÿ}}Úœº];+Èò0ÌUiÌñžX!Ô”‘!ÚŽóq4˜©ö ÜÌ%D\Ã|úLÄ¿Pûb¤¸Ã•AhÌ¡bcRü‰ÞìuEê‹Å´ú(åÑÊãUÁœIfqFqhNÜn¾{åÞp\êV« Äšðrg½Öƒÿt«÷aóù²ÛšˆÀègjA2.‚ûv¸÷ˆtZãQ¼óõ¯ÛI~H |]~ý m …Ût[D›>.âmZF­¹I¡ÆÆ‹o u¶Nh\V¤5lIW¸aCÜ꟠ØlHlh˜Ö®¯ÜêŽsØ®Ð.Ú¸ñ-Ÿ‡­Ú:žZõjÓçßÓ¦˜~m‚±§µš´·ãêˆv,xk‘:\k‡‹úfJHr–Y}RLövæéÐq÷0T•¨ nõta¿Þ1Ö$ÐG„ç?Ä÷#ÄÿíªÁ`_è¸?jà¾q×}Ëq*åþ‪\Fµ@Gue‘ú‹BŽê„ê$DU‹$êVßjlB$xpZgÒÞ& uú ”–õrŽß+:~ÚšiàY¿@Ð’ äSú§Ë)Ý Ÿ¼”õ¨j³o&çÙ•±ØƒiGV€6ôu'1†oEHxž’½'*F4m=›¿I?´xMÚ Ý‹7‰Cÿõrtø¾í±îêö—i"§)ð¡Èáf W–`@՞ēAÜ g6k’ß±0o>æÛ0»Ù»6Ä]®›½«ñ 2v0À«H_Ádõçn‡ô¬Ü²¤äã™!ôbÏGÐ>|æ…ÈoöÎ7€.ÖžÒN(T²ü‘)ÀT#•…äæX`Qf³3ÂPû‚ÜŽ*>Ìl}S‰lrãêze™#ý8¤ȃ&Mcž¹)ýÔ‘ƒZHOeù)å¡ùÔ|\–a{ÐQŸI5ʪ÷ItÈM=ÇJª”û×:†BÛøÊãXóÝJ¥q€½"âßÇQAV¼Ô¾M¶]‰—\]ž…B½ÌSË|›pBò<Ès¿ísÏÁ“ô Ïóæ¹çB¯ mK;ƒ‚=4©¯nø í&…¤7K-Fj‰žÚV::œ:ï/Úž‰"½©”´Aó+Ø­æÇWp×ÿŒæ®uÏ¡eØ=D3åÜ©î#Õ•¾Šq!êeÿ可CÐËÊÌ¥Ó¡2ÕôW²ÅB;«æ?s¬^Áê"ûoíà ÔÂJ„?<¤@•¬ô§á[ÿŒ+_Ä#ßÅ®ÁÅÃk–ø‚/iÜW¨´s¦É_ÎÂNð×£GÊç`)n¢TÕ¶ëu9\Ýþ|¤IÝ{ŽÔŒmhÆæÓA Þƒ¤P1ßrbë›pIâqE䤩±õjƒ­õQl½ü ÎÐSCc63e1ú˜Õ·Vgå½ärQäH?ÛŸ—ÓÏ"/7q^æü«ù÷ 3g•FŒ~Œ‹P™—3ü¥Ù—åÕ(^jÊ|îYŒÌK¬ÌòjÙdà^à`οÀ½%ÀºÀÂì;|î9].NäûéRdßáÔ ÕHô]}éÝ?ggQò}eM;[›0žµÒRAm »0é ½OPè½ÞoÌþd^9—ySB†ü%ÏM\ýÇK›øm™7ך]´á65ü°ÏsÛuŸa:ßE“ÀEK3Èsvýå|/ÔO"Nœ}¾ÕBÆn‘·ãÊâyÎreîs’¸«ö8H¿*i‡6"ßQ°G¡¦E^¡=õ8ö®Ô¡®Èæ¡y;Bó½'” »P‹þPæý-öûÕ(œl^+…¢î[`&õ¢oRdOíVòf~þî;BsÔšƒ¯›ìê˜qË?dž(ʘ)CÆ{åÑŒ~1yÑre¥ æ@^nr¦Ÿ[?‹µÒZš}2h; ƒa$ éM"ÿ„»üVn;®´±l›/+Wèþ׃*௧UèdíÀáóqä"·O¨¹‹, \®3ïF¤Ø:›²Î®üÊ)ïs‚!)ÿ²ÝÉÖÛ˜{9Æ0K’»˜;šçZÐIдq,íúÛÙ!hŸ|Ȭ¸ÚȤÅIvÿ”s-6< ¿vd)m‹«ÁžïVׂ¢sË:¯Z_fuûÆÜàVÕ,í é.V‚÷´˜ÕÊ–€yMì 2ÏgË`®VÙÓ*h=ÊLe¡²kËL`$+%­¾„ë ÔÕ+)“@I¯ù—ÒŽÝ:‰ŒÂx‹ï§d ìÑÕÙâsŒgû'¼Å\ïUÄé£ÛufD÷@k~²NÞ•“*MÄ uÇ*ÒF}¨òTó#HÕttAšˆE$‡’;‰¯·ƒF8äJzáážOɎɤÅ$H‚ã€EaÂÌÎN.T C'FŒ‡¼¤Ÿ¶Y¥6èÅuÆ\ØfnµºÚ|cb./y/u¿¹¤ Æi˸;%nÒÏ[ýBÉ;‰m¸êN•N*ž“VO0nWØØèð6Ej7?€U¢jr#:;È·µw^ÐÐåƒ Ë¶ÐÖ<שu¶Ó¿Â¶Áب¿ƒïòÿFkš¡fºN®ð£KTŒ‡Êñ1pZ)<‰Ã Ïd+žvPaýoô’R Eë6 £«Ý7= x‰n‚icÔn %vaÛZ#.Æ*3©ËÈŸ2Iî# Oó@¿š[¡z9žÀù§ È?!"ÿŸzPGr…É­xÚ|ŽÖÊÒSé¸^–íi”K™Qhž>ƒÏQÏà3ùU›[ûm+º{õmޏ½ÆZ»Âëèɸ7î!×QW;ºy(®ŒèR•’$¡¦ÁÌwÊE<Øá=ˆû¨%­šˆët©4Ù‘/²…Eß7?±ÏwJ ÏçÁø²óÏ·ÚrA™R¶9ª^;à.VÏ|ˆ`ôa%Ì?Gn+}«ºøÉT¨Š{ÄÐÝ2´#<´OØqH)lõñÍö!"b1°É´ƒ¬ð=¿9ж֌¼÷˜­NœJÃKJB,muÍ]Ú9Ö}¸ÆÞÛb3õóѬÀÿÄv²-6Åe(ìÀŸ>Û¨Ôbû|óí ¼@:³¿ÅU¹“²ß¶¬ÌT î¡µL… M;˜‘×aDûmãó@9­ªWxõåC÷·¡|’]mÎÀWtÄPœ‚^{¶WâPœ!Mõ°ªNbù*T»¼'ýN~Mv} «¯~ ­ôO×ÖÚÑæ ÐP¯@wû2&å ÿ¾–~{,|s%ò0‡~„CÅùLÛ‚AÛ•6_ЉxàþK­éÿtÿåÈM|ÿå‰ãö_^ƒk¾ÿåŠwqÿÅ­î‚ß[ü?Ce3(v\jï¥åEcïåösïeêM÷^FßÔoï}`#÷^zoD³Põ¿ý¯î½T¼3`ïå·÷^ªiïåäK;âm¸=…îŠØ{ÉWŸÂ=½»ÔØwhûeiŸÖß'‡úZ?šC±HX :1âî[Ç»ZÜ[’Ú²ë¦ØðJÔƒIjh8[LúÀ6ÃS­‘V¥=©…éšé©Ì@SÆÒ‚F<1Ê‘ghÇcÆÛt©ÿÆ¿G²³¶ÒOöwÒÏý'¼g£Ôgçœï4ŽÄN°R„Rh•9©Cë¢æ(rå'ýŸää^úwTVn‡L+o6‡÷ëö0ôç¢9ØŸ»l¹ˆhC‰øTPúæÛqöÒü3PŸ›ÃCs(ñoÓ¦-¢®ÌyV³0bdÚ L3ÛÁ± lâϤVñtñ+ÆbA†UÍÌã~÷ò>~“¾R¤÷¼AiÆí¨³Ö4HÔ7÷†BO¿ÍgZw)Á7óÙðŸÂÞV90Í]Ö£þþT(´fEàŠç½º˜´#5 â°ÙsD![É{¯Î6^m³çHß(®÷ªf[æ´ìÆ•T@2VàËsyïÑR {§Ù¥níì½oà_vøÜÞ òâ+8–™ä¦Ø"5‡Í/ëSÇžÂAìAûIVØö!J¶îX)$-j;½4¿· çtÖâÓKð½ü}üB„¿oPúr¿7ðŒ\Á»“”¯Vtºÿ[GWÐÐm»ŸÀݯoŒüxòIúø¤Qׯú×å,Pçëu}GÇ}é£?6;‹ÕÉúÇ(‘-ZðNÑÚ­µ§ÝÞƒuà_^GÍïÉûcü&®sVm2g ^^ª6Y Þ(z²ÂSÏwød[*x¿¡§¨Áû=E¯¼¡ÂÔ\j%È,ÿûßiç]Q¬¯ïìïÐDú»6ßú‡~yÀÿqo„o>û5©/Ìó9?ä³Ý0'T‰ÎéhÑî5UÁ þà铦óÈ„¼ »I7ö¾…}Ù¯.³‚Àf×둺³ öðÂW})ªNnuÁõd/¨õ¨ •^–ÉǪ)™Î ]¯ëDb–ïÔ¸0|GˆJm–Æù ë(x S/,+P/®+Väâ|õ+x\¹‚g |Ô¾áÿŽÛ@ i €°PƒKÌû±¡æ&\Ç]Á;·_¹|µ|†ŽÛH#£P3 rÿ…—FþÕr—"BDšUþÏ y&oŒeMþ7Hî¦5T÷a’°ýxß‹þçúÂrvŒ’vF3¥)¯Cnt²Âötx¦iVB~‡5xe‹‰´zÆú&KíJÉßÜë¾Æ°Îg|ëBÂóÒ™´† éÌV7;§žºT¶`tnZoÞPÑàTÀ–sXYÞÉjÏIÄ‚LŠ©¨~Iã—šÚ™úwÚZâ¶Ú»f¼" ÂƯ«Õc"YÝVWG¾úÀôH£JÚÚLOËÀ¦ ü77ë*»Ü#°’“¼’?趨;EÖ’“nuèôHKª–X-ƒ@F¢_ë&›²lÔtÐ 'ƒj` w‰ö­³Këuìlê!°ãª÷a[ÐIüpÏq’ªRM6s^Çä,;:òW¹ñØ²É ašÁv¸º‘ôûxìcq!u(zo=Ô[̱™W0O‡4xòhôË-î ‹û …*;ÆJÚØªålƒ ­ÔýÎôcB žv¦C a® ü'õ³·Á͚؇B :{)àÆ*ÜÛ"×eï £R¯çǬ¸g÷0gú9é¸Þå;øåÓØ“<§hc绌Ùì-ã{åõx N=ùªîYµF,7&MtM@³ddZy‹¾îZ!•æ]Os ¦æüÌ­^ º4¿ Ó”8Á²—Iý(ÒXLy®Þä—¤sOX&¾äϤíÔ”ºÇ4%¯†5\"ÄXZˆ¯O&þýsÛf|§Ið—«z[lÞ–Ø<²5 ›ß Þ'°§xÕ‡ôæ&r="Ëí$azS¿uÉÀ—´½æ¯Õu*¥=ĵ%çƒþAoéVèðµæ÷iH¼Ì—Ý…s0žãš7 ÷ȼ‚.FgcŸþÿ1÷7€QUGã8¼›ÝÀî"ƒ [V°%$Ø|°!$k>$Ø>–RZ[%wù‰»+99^M[i‹Ê£TÛÚÖªÕ‚B³©†@!|QS½ëF  IHBîfÎÝ€¶Ïóû½ÿ÷}iÍÞ{îù˜3gΜ9sæÌ覂õ…Né1ô¡¢˜WBcýË™ h¾ºúˆk”ÉêC3Ñ1 ‘‘¸âúèHiŒä°ƒA,,|=ð Èõì{ rÍ\ÞUÉâ¹6åk`RÔk±í2ÝDB¬B8éŸÑÆÀ?ȶƒFH:`tT=¤›‡ Ú,lª¯›äÈ BN2‚ìÔ]ê8 yªS­ÁÜCúûIøÒ9¡jÕ Ýà±lA~¦_#ÕF‚(_}|†p÷!cg Dù?‚qN±ŽÛ©O‘`v„(0(¦¾}û¼†!eÝ:¬û†ÀZ9ÄvÇÝ 4â¾ä.îw>Õ­H“sƒNÒSD+Ko˜Ü׋4f¸×Tºu¬a:"&調ØktÍ%y‘ŸéúôÒ[ÿ­_ §O êÓ#ýiàÙ!éÓ;CúôN[ì‚Î+¯r ä­_Ê|{®Ð§?ƒ5„]uAm¦ŠÎ¯q ÔŠëãúeJ™Q?(šâCý jÍ–șʆ^¾Íî?ìu%g¡ÊüÂÚ‰8—Ú/Võ“Îüæ&sLPg~aÝǬuæ_˜’úªcG³æðQ!»8¥­Ú8‹jó:­Å_ò4äVþurôÈ\Ö+ŽÁh Þ1îÁ£ö@H7.Z>iä)y‘¾q¯.‹½úì ¥›§Ã.‹5¹5ÙLO-RGCòRg‘zêˆÿY%ò¤ YÙ"tþÛ¾ì©[á°Í¸¾nÔí¦~/¶ÄÖ ¥½M|#nüñéýîKÝ–mñ7ðf´Ã x¯“îiu]rû£Xw-=ÍÓZ=ÆÕÍ=_ží-xzÖ]•ᩯ6G~| gAòìWj:Ž kÁÙo¹M|öΖ““PÕñmØæÝå»:zÕaØP¬’@âWGÜùÇ*\ËšAD¼Xó°Áh³,®Æš{>aÍ<§¹ÁobŽ®stoæprËÚ(Ö’«¹Z0,ÂM¤å³AeɇYCù$Åñ¥o¸Õ‘S1óÌ\˜§Þn$Át¸H*j[Ó<£†»CBct®ýütÀ„?Øoî²9“êa«ÒM‹]_ÐqäÑeeö#¬yEpœ9:Y/µI»Öwÿȵ7³††,#Ø¡†l# /Æ r`²¿sñOxÂuñÏîLìäÅ?é¶—dëf+r÷G¯4Üe]{-Â"ÍŸ‡êüQçn7±x/c½Øzm­^Ž®D/d'DÉ#ÿ®d‹7ŒÎj#N„zzë ž¿ª²m’E¤þÉ €ÇñÝ%²•ÝÀzCS}"¶øœu:#î½Y$¯&¼ KžÅÆH_½f( ¾6•*«ú±§0íÕÍdøö ¼ábŒ1¦œJAW¾’Ó™W¨Ý©~ûZaÆyZþÊBOÄC¹»]sù¸ÙŸ î¦þ&Ú²šOêNnÙ4"¹¹"Z\ưîêÄÕ»<¡áãhåW‰-œÂØØÂD'/O„ÝWa‘úí¹C", Æ”+@6LE&Þ'¼O-5ozZ{*ðð½Ì,äËœâ‡ùíËL¤åõéZ`AEª¯#¸³ŽK:­þÑÝSúoÒeaglÕþŸ3­KÀ&ÑgF8) “ûÕ£;Pù‰¦CIõäU•u‡ý”!^| !Y½Ñtþgà§/Éîèê²×Ü‚3"Oý„k€œBÈø8†"¬Žë‚¿WÔÔõ}ϸ;Ý}èUƒG$çÆKŒ&X¥½ ½’ÛÕ+±š²NS¬'ÐÁc]Rõ2HmèR¬¶7'yy¬«'ÀŽ6 Njèf9mö‹öÒ¶†¾áö ¨é:jiôWšû”2ó—Šõ¢2í› ö³ ÇMb†ÙÝk 9<<즇(ùZØ•N} Öô€=ÇÖÇ»$ÒÈ&ì!Òwݼç>š½³£Û{úaSmÛSkŒ|±~”ØÆCJüÏ¡©•|Ezýˆñè‘V²œVéu>ìŸÁÆ>ž)æíJ|CÃGQöw>n<«”Œ`mÛYNû¨Âî¹”±Ò]Ñ…×@û×™”Zv:}„jè›Ôp)Ú~Q“£*Ö_4|Åöwkš[­,ºf°î‡+W®ìñ³ÀYÃ¥Iöfïi%ÖÄÚ¤j(‘f4OÉgCC_/U-G>²·¥mc8µŽ"žõ¼žne ö#ëïÜH¯çÆY`òQVp¦ü^Ð!½þ°A²Y¦:ÚY·’7BåMµ°ý^ÉZ¥×O*æ§”X·b>ŠŸÚ J%~úJ÷¥åµÊ—5é‘T¼^LC%yñx.8\G¶c‡\±Ááï’ÏÙY?*æ”ùQþBÏ–Ôí?~9Â'Kg Gà2®×ž¡uÉg8›£1™f„÷YRê7–Iž_ÁÂ\9ÛàŠ~³ òQ™2Gò¬‹!ÃR¬G“ÇAò˜"§ºö„à»’óÂÖ ç±è4ý z# 1¸ß[eVkäç°6õö}2 _Ëä]ªO¬L1È“êúõ}ì,ó½:ÒÔW~ËleD/ö%!ô4/C¢þ´Ò=áá–àÔàâàÂàC6=ø¢sC5M=ÝzšzB>­ÑÖqvèiyèkªþ”Ôú˜t:eV"mkì9Å&~I§ÿ¾C{> ;•T¯3£sl²£vÅ(e©Æzð‘X]Ï‘äF%O[kaml"&$ï_;‚{QÄæ I7iè,ëìVŸïŠ97 7æ¢MG>±®«geÃ5èý“û€rO¢”çþ°Ë™¯ª=tv”»jôÂÉíê›hÈ–Çðq3iÅÂÊ„k׊v±€³.Q£æÖ¢Ö¶i®v5®WÓŒýÏaÖš±žÖ¥Õ'$ÏW0m+û¦Ê™•}·Jž_ðîÓ/«Íj^"Þ˜(Á["’‡#§ÝWq‚[Ég®¯úÍÅVâBŠA++N@K°ÆŠS%cxp¸ Åq!W©è*R\Ÿ®ŠÃ®¨%i1F:þHGC‰l 1Ⱦ’V4ø{þòœ 0_çK\½'3G×Jwïikó0 `Ò¬¤Þ­Ì|[±¾º’;>‡/×òYØ®´u}oQRÿI¬üDÃ'ÑFøcVÌ’ôrÓs˜)I íÝ0Œº\vmcÐáäù6¤ÕŒ”ö5ðñÐçŒPŸ«sNȦÌ@£[3®Q Àyz¢ †ùˆî—a¹&W¸™´ÂÑ:Gè_s™Æ),jõÁ3þ™R¡b5ã!1¾’çq`J5¦jÇ @ÄYì‰ £èª&¬<¹Ú$Ï a|<'¤ÅË0QG¶Ý(ÆŽ:¢aü }9bì²#ÆnTN¬Azb?ÞS.2/€¥•öØ«c”5ß©>ó Êý*FĨhK>µ’Í·JžÍБ•sï7J[e<{Øb†ÕqrŒ£x,PËÖÔÛdKê4Éë„ ð|+,³¾4[B<4­9ÎrW¬Vg¾¬x:BØ:í2Ê$‹žLÀ£ä‰Cöšs!ˆ§àó|x&nOÞ‹Í–‡¦>2D’O’Ò}ýÊ@x©˜`yÅ× .Žì!ÙhY9™FuôzÅçÊÌËDHƒÒë9]0ÆA%önŒ‘ú źÆç‚ñ<¢p‰Í=ö p 2¤Kôä+BÏŒTé!]öaäÿj<7ê5IÞ;Pcœ‰ó™óŸñNºm@ vD.„NÔ%ˆÁ éI™Ò¾”+'¥Màü'ûÃ>NEü›ôÍmá…ÛvW !ˆÀ_€räø «È“ýx}¿m.Rœ/îÎÊ×á¸ù²,1€à¬˜hü ²‡ø N[bðæ Ë7†ÿ'tƒ½MA78m¾tªËí³æCmEî¦øTèn°ä­J¤ñ»N?llŒC ÚVò âà ï0Ë­ÒÖþ>xâ1”üy%GK[;èé!ë0iëÉ>têÑáÿÑåpl‡I€† “Dd¡‡Bh¨ sÚÐ,Ðñ¡“})¾ý Mhz"'®`°ëbÄ÷Bø^¨¾|-ÎøSê­+$Ϩ?uª0©KqÄŠ ExNq|ž«uöÚ QÝ ñRz|£¹¢' m.™DÛF ÏÝ3”u”ýÜ ¬ëIH«+í;Š|Á'Ö5 †yŽüQø«¸.@^yleÌÙjÀr%4.y7Ó6‹à&¾ªÑZ©Í¢ÍÅL+Š(B”°¡[PbXþT†dWqe¾O_ý§{qb(A%†y꜈ÃÂó«öÓ`Œ'â×Ã<±n1ÿãua]æ×¬ ã9õ`ݤo^ü¿G‘®êL£!Ð¥Ôƒýq (О\ÏL½•‚³Rî¡éÜü´«Éô›€Ì"{tÝÕ=Ú})Ô#ÑŸ§ÐYqUežÑàÿ>RƒþäK‚x¢Ñ/Ãu½hÏ‘IkëûADר(ÿ‹ð!¨²EzþcW /òh> «Vb›yŽQâgðqXa‘2ó…«Ú,lJ}…‘Dr›äý‡‡©[M'—ÖIn;BBããW´Û<>¹Yr? ²’Ï2WÝ¿’©¡½T| Ûßða”iÖŽºÒ:~»–S‰ÒÛÝŸbL¦½±ähæØÇÒú}èÏ7§Ì·Hîg1Öän[›ov÷iò°ê±™‹]âZy£9œkud.n†‘—·:>QS}O£9˜qF8cJÁóÒÖ÷ѹ_N(ã;Ñ|–Àf}ÄH±ØwÓSĸ˜/ú*Ò\Ï#þåêÕ„¿Çó’÷Q*fR¢ízß$÷NêØ[C:ö”é›:v7Â4«šÀ¨ã9oAÉZcÖãCêÉøÆzŒä?ú&ªz+²G÷\4g¥ÌB a䤇Ñü18ìŽg“uåwë?Y¿äù3º&m áLÚ6ïaÜõlzòy@Κƒ‚L`8ËãzÂfÓ¼ãÃtúÉH>Ä êÖt„{›lléÝjlœÞØ¡á¼ôétôB8¤±ë¨£¢±‹Ã зDßÖ|\”¤©»j0¤Ì} <&eÒûA÷žöEw†¬áºô'VZ'Oªå£B$;z'±{y‹™§îÀ2(»ßAžÛê¼õ®>‘O _Æ|Tʺ¬|\XaÆÏ«`wRÛõ®»ø\¢¹;Ù¬Jú›µ EØþV~ÝöW°pq]ְ줃IÐÊÐ6z“þ3š^Êgüÿ妳Á•ÆS[HÅæb XqBN‚QƒN{[]ðÛÕM´ ÂÚIÖ d/ ßñ¹aäÜ®\þ+ŸÙB$ѧÀN}ª8üšö¢¢Ä–ai÷¦–hÓ\üT¤Úá)míg™™ËcI{ëm‰ 5JþƒÂ¶$H»]ˆ6ÂâyYª_Õ41îËpàOúoDcÚ=?D-½„ß~Á`(aûýÏ^Æ· ðÆö/õßLo#õo¯ ›ª"µïâsÙ~eþ¦~|;KoeþÇÑü»»H}÷¢ðR{‰(ý_ ­ÒƒG;ìœ~¸ó‚ß°ìÁ%š5 - ;qñ÷’ç9Xã÷àúÈ]–7pÉB²ÿÉ^º/ç°`±š‰´¾?Fi¹ê°=¸þÏì Ú!9¹Ãê­G<~峈̺a- ~œ2GRZŒÈ¤ø8š=-’{Ñ*&{GU›–ÜR>¼rS#ʗŃ¢”øVÚÅ'u¶¦LÔ¹¿ç´·›M$Å̸/‰>¿f2]”“j RR™!í–˜¥ÝóŽDëzº;g –E€hÙÙ)Žx=>ZŽh.†¹4‹æi{¸«KÚ]hæ¥qÌ™ í^¤õÌLjþ8–9-lÌ™X̱° ŠKÝëDX»mà&ðqÈ'SROmú‚/:eæ. oañÚžÅ2{µÍßá9±>£PŸ"¿:§ùC½ó“縎ò5YÉkÌ03±šÁý©ea Ë§’åSæ-Í×ôy0÷c}Óë6Ecz®šhVÚÏ3ó.1 1 Ê„372MñL… Sd4Jûä®ò˜”Ô‡7E§%w­:ºÓ‚ùRô;Í Öá¬þ—bµ9Ñ~q޵ÈÃk3àÁÕÇŽÚSHI¶v˜P–Ó^szYX§o}SÐ4ÐØ;I!Ïr:y…ŸÙ»¼ SÉéê9žg¼¿ê×…|#¨ºl•Ǻ‰×]–FƒH.$z€ž•B“–tZ]Ö: Ú”BL›×ðEcMäJÏ*/Â;ž:™$ޤ¤¶Ô™«cGVnnÀ`á*Ûs¹rË0M·ÓB+¦ÇTb¤Fó“™ÒnX”DSuÍŸt0±j6 §Às˜³i~´A0#^jkÊ0DŽšœÎê%£ØubM‚‚M™V#Ë´è¬~Þ)°ðkÏic‹-b"©Kq 1éê€ãEgCç†Ä†Í‹±añŸ{.Æ´4¸&;ù=‰6¾(Ñ ù-uÃ)ÿ2=ûµ˜]½{nC¶XÈfƒlÖ`¶­æDõÇðµXÏÿÉ5T}d\ܱ« ïaü 7Oú]öº(C(ÞkD_}ŽžÓê7F$Ú tô”(÷•_FøAC9ZÝ µŽx­nä*1ún|âÁF¨µñáp­þÚпºX*Ðô½€V*èwR3J<ããþF'Ž®|…ÜLðR+;_×Ñ ¹#‘¶Ò½srÓ¼9…5|ȺÕ̇1Rà·\Ÿú¢ÿ¦/Ë ì¨ºÕWV·îú`U®=šËVX¤¶ †­ÖÀÕÞ*Më¡ï"‹óQ)êÆ™§wYôþŸAºÚ.¤P!K¸mÉÑ/2žå¦ PØåGßë=gÕJ¨‚MßBapž§‘¸¾¯.Ål>>ëŠ@”´=õ ‰í~ÙN·u`¦,-N^j•Gñ­ìÁb_úòЧÓoŒ§ûÝo¹ZÙH[‹x»ië&ÀŽâ”ëv÷y.DúGüÆÞWû=ml¸r‰Þ&¾¡Û*Ã}øûÿ{}øÉ¿ëÃ_£#û`úæ>ÔFüû†ù=d>Ï—p>oqÕ|ŽÏç§F„çóµÍgÂURwÚùœ² Ö¾PLÜ;ªr¬h?3¦"» ×"#Ý~È(yK©Lõ¢€ð¯/<‚õª#žÀ(Þ·9\ü“P¯×ݰ¡Œ®t4öôqh#—2XB°¯[Â}œ1šúø ø3 Áßpª5ÙrþLaü-‹¨ûĨ »ý¦úÍCêÿæWO¿ª~s¸þþááú×…ëˆ>y(*òGEÆOàãê½WØ`g!ðÞW÷~$Þ¥­/áÙa÷úëi‚°†ÚX!øX§/ºN'gw…Õ*yöŸ}^<–G=%/2³£ ý“Øt®:ßÌ‹,ìlÒñ¤æM®‰|•]Äç™ë ŸoåE¶àGyœ*U  ÃB¨D;F:\ɯ]É Ž­äK¢øŠØ•,ç8B^ÚîöW ŽAGêî4èñbƒÝxd®à_õ›B”ã¿…x¹ÞkQ"ðê " U‡B+âVDBÜ9bÉ» `ÇJ¾"Š/K?f9]JAÇÑB™¥·¤í¹ wIÞ§éjKÇJv'Þ‡u¨+yÁÇ앬( ÚÚŽn¬ç›À²ÄÊVØØºX4ê ßÙê§ÃóáµZH8Nðw0tn·“fªíÌØœE…jàr8~–[.G»µÑ®ÕåÑxm³9ºÔƒ—Éþ ž¶"Gê ´Dð}ÚÅ ¥µc‚©Ÿ2ô{SŒN‹Üa)*t÷AK Wˆ¿šäkÕk6 Xhðõu”/6K¯ßµ’<2´X ÿZØÂ8¾8–-œÆœ6xÍR˜3^z}s /‰:Û /6¶1oŽggòÅ lál^˜È7OaÎT¶1/žÆ §û2EÐa–­LÁVæ1g6/œÉœ‹|™¹âû=øc@¾ôÞÀ…ìÜÅß:EŸ¨G°4”ZŸÐ›q꼇†ô†¤éõ±l ^sȳ²¼béu§…åôΖà:!1~F³<è‰ÓÆò¸3–åMãÎ8–7“;ãYÞlîL`yiÜ™Èòæqç_º€?]l«ÄZäKO?SÄÏtñ“JBT^6wNcy‹8 )/—;g²¼{ _xlèøTè]¯nØpõÀÔòkù 3)Ñ×÷ºå|E1»0âÔJEòRì˜9â|†a‚ÉÁÆòuq¬<ŽÅó% |]"Œ~]˜ÀÊyŒæ4}Äœäó§ñ¢é!öñ-¾n6_2“JLgå3õ‰ÉçÏæE©!>bS}ëƒ|ÄáANäKÒøŠylÁlV’Ê×eó%‹Øš4¶`_‘Ë×ÝÃJ²ÙšE¾ 1ØÁÁ¾&X¶˜-°ò kR+;’t>©mDƒëi¢XˆÅˉ÷¶á¦šÃÇmºñkWÔ¹ï‘2œìÖ[õ|ݰê$‡¼-äU‰½!_ 9{ZÔI% ®88W[»3äûo=û—+º¹ óóX>q&|¥¨+6h¹v#¬ Ë•»v\=¼“[XN:ªîÇ+2êö‡ѺûðJVLØ;/hwÏù–ësT€ç´³ ¾h¬ž45ݰ)AŽ”t|†£ð«þpÝŠÔQæ°’öªô?÷.ô§ / ™ÓùC] JDÀ$ˆ?)ë÷Ã"øGp=[6”‡ÆX£ªÀ[õo°q” mÅ™Ôt:I²»aµM}ì(`’×ÖO0/ßÂì³0§•N(Ó0K“1ßg°2³oX>ίŸfMÃ÷»Ø:³oø|œ‹ Áƒ1½ÅHŒ!­€šðM+sªàg©úž Do|A>g¬1ê‹èAßV=Û'YÔ#á¹Ê ˜[h½ƒ§QÛ¤ÝGV½Ù¸vÔ— K™: ¤¤UuX俩Ȳˆ"xˆxjÕ,2±‹l¤,K¯¨õüªÌ2ë f)¦,%‘µ4ð‰x¢ÍÞ`Ü—KžštZ›¹ãHÍT¿“2+Ö~¶Ú°ª!1w$e’wù!cLYBó_t»®=YÕ…yÕ Ôž¼^71eMIx'Ò ”v9 ÕÇ–Ð)ÅÜAüÒ(m}ƒh¡+ù¸äy g͸ntM”§^¶¤~Gòâ¶W7 UÐ~þèG#J;+çäxô¬¬1®}ŽWtÂ@Ï/ãb‘KÍ%ø4yìP‹öQ‡!™OTñãi_4fŽŠ2È7'µòYfxK¾P>µ%dÝU³óþ%ß'Íp×'¸’/¬ù,äÏaÓÈ867F;õúÃÚ*#Z¤_Ì2–úOërQ¡“íçÔŒ'u¾n¬u«& cÓ½‹W<ÃLRëÞo¡+ÚçÜ—$ÙŒ÷sÐ Úe*Ž&ÅÄs8^¾èKÎ`QìIà>!ô=3JÌîƒÆÀ«ôøÓŒ5ðkü–~-'1çÓ¨ÓDߊÏuaéGà‰tE¤e'[p_ô!~-<ýõ]¤u¬ÃWtnX‹þ籤pš+G“o[õí¿ã«•ð“ÔÜ(Ú'TñØRàŒjk¢ÏGàsr£ë£ÀÇ¡yôÆ<Èáî„Ð{P˜ÁÃ,K|¦{º¢Éýº·•ÑÚ'ßÎæ&b㳦à߉x^EYZ]‰f°z»¬÷E Ž µP¹ôú¸â–1–|uJ Qdà Á÷`«{ç†î²|=,£w(õW‚2ãk@Açêéþ¯åÐ?q½‹„åé9–:ß÷´åª«ÀpZÖôõ†Ü ãÿ„«a#Œ\‹,¬‘Ç5ÅD¦ÇsuÓãÇlºé±d-WÏ´° j3j‚ê);àËi J:è>`YVFWDžç5RXdšÝ½’äy–¤èÑòƒ<vÓêVüØ€‘ºcÖÕuO‡É ½ü^`7u;Ï/êOG¿U¬Éö÷Ø¥À¯“ß“~Q/ín(ðôëúÀ—ðó«úÀgðóËúÀÇðóD}àül«´±n¯¦O9Øeätú Pd"LÔ ùSøLóãÌI¦í2úä #üœ.£DÖAQrÖKÞJ7ƒðs^8[É–¼Ý¸gZh¡— ÿMeÈÜ=â®ÁtØåáå-ɳ“\ÈÅ[¥­e&z&yîbûžÐ‚ñÿú/b J:lXf¦ðÊ!„ž#Áì÷Gö3Šœ›®<e¥0.ŸåSǾ‹úgÄâaíÊ2¯:<ÚjYuæa¡zø2- Jòn㣦#O[`‘<­„šðSÔOC9¶¢tÊ·b`ŠFš4¨EF阼çS<𬗪OGQì;4c9®£>‡:±†âyü®„É6 ;źÔ/p³ä8@â HôÌÇ·nµ±sìü…—xA[Ïe^Ìxwû€ýZUä£l4«`‡UÏ‹Vz¥Ïp›!-Wí&¯öß¹ÿg `¾`uî†kÜ ¸Xí‡A¢“Üuñœ5c*ûæHžTO«¸œ ì¤cT=Fsàj¢Ò=õÕûesêW Éh^5P[}›Sí~»[¶ÂõJeJ¦+†l—<xid9ú[8ûjuôó±•Fò„ÇsƒìèPÕ5rTÖ$yPW†WFHUÜ©þœp² +gÙÐ5G3‘ã%§+] åXÕûƒy$/ZiiŽf^ÑÌçíƒì®6Ý©×R%œQçû<ç ŸÀçN'I]#±ŒÛ– ”X5í'¸hg°ŠÅ#Ô ÍŸNu ½HuŽŽà:¦¹ºH2ƒ<‰úLGGà0¯8†Íž§ÖUëRü|R 3._]þ’_Û|f‚$K®êÁwG¼ 5§ƒÐ-$°`S¹16L¡Nõ[ÍH¡‰‚B-Éq’g¾F¾gv £¡"Ÿf.?bócœí ?M~#À¿T]öc´lg¯½Ý*yÐÓ©»"Îâ·ˆ– ©þñðÛdÊlÊ4üßçMH j®ê/ú[Ї…à%ä½LòLº,|,m4W~÷6aò9dZæ´¨ïêøf” eîhQ6Å]2ºvØ%BQ8óYªöÔãÈ®(qÝê¾ëFW ;yį,Ÿh¾¢WS{ W8jã…ÎÈÕ©­5#_WÕgÿd0¬( ΉïÿÑ`XVFñìX…ê߀!è\±Þn×Hžaƒ±óB6µÀGmM, «ÿ[˜0ÑЂ>,þ_÷GúhZÄ‹Íh$ÓÁ éœ3’çYX#9-â.24y#GN3`:ßM±Š6Éû#´,鿥mÉgË—"µÂ÷"+7²‚¿ñ qÌñJ­bžÁsþvDžá8&yìhÿ1ÏgްN29^ÉÅCÿ^¿P=@as,wËJ>»æ­Ì Ò¶UzLr×#3€²­°í<…ï¹ñÜqŒoÚÕ¿gixφ?ÊÌIÌÕ‚ÜõGTäßac•ÉJcHÜf  ôÙ’'s•¶§dZäñЀª®1Žuâ0äÍîÍ©šäù Éesš[ü—Rôˆ}Ó\Ǹùu\I^0†\À?§¬ó¿Â1õε¸Ìèƒ#§3Iã³ê!Í=h’¶ž¦Òc»áw>ëmh·Øá9W›ÕŒg|˜O½ó)}B‚lÍ)f£šÉtDþŽRnf³¨ ª•ÃîÏÍ LƱŒÒØÄf²ê p_ô[!©®^ºìÚ//ö,õXäNANíñ1yŒêW¥'ÑM:Ó^Õ%+Ã'uƒGÓÈ98k ¼ÏK›yfªÉÕ‰›¥lêtÂîØ”£*0[òn3bˆø î^³‹†¸ÞHÒS‰šQk9!fïØ*`˜ØDúú4û:‡­ÚO±ãîM4ÁŒçÝÒ}–Ljn½qG¨vCVûº’aæ×1G Å~\mæ… Æ‚6ÍÕ¦{Pž•¶÷3ÙÏ^w|Yèo]{›4 }—I$h$e¨íP+8L7{€fxa<0TÓò>ñÿÉ|ÿ¤O­hãeSø=ýfVÐÂcûïðÒc~3~w¼Â Ž™æ0ûO ÓÁHt7L–s@½k:yÉ4VZŸÔ ‚YN}ÏE  ëöG¡•QŒ3pTPÇ‹§ó¢™¬àEVúÆÙ|çÅâz/ðøW"æš y Ñ…)¥m’›bË–ò0~vÁßäûqê­ãÖsV`)9Öܼ­Ü"gò{Ι#- Í14Ë ÏÁ–x¡<;ê§:ê’›Ê-&W-Ù›ÄåAèþ8ŒKÍšMóΙ>Ÿ8Xý“Íç0&t–Ûù‰S Ú€‡'§¶¬}M“[ÌXýÎß‚¸÷ ʺС×é4Q}Ø™Z„œÆ‹-ß–t]ò‰ä›ùx¯uD&Ÿ÷ Š"~ÖÖ NÊžÜFâ»À¢Î#æþŒ-ðÖÍzç0m:¤~_¨¾+„›¶YÊUoÙIš€zo÷ ¹ŽnÖVt)9jžRÐÏíE…ê' xéøŒæêé„ì/TÍÕž‹~©ÎEZÏëRwë¹̃z—jÔ:RÆW ‘NÂKæ¹ä5Ô1ò&/TçoÓ´’Ç1á“=àáGÒ64jº‰xÈÇQzgß@/,½ê|xü*4ñÔ½ƒxƒòÙ„ÑUs:¡£,}¶/=+ô¥§‘>¤+ÿ ºÀuJ½¿WwÎS¯ùý*WMyVˆ£èývùo³$$È4i_=:äNt÷Ž'Á^K¾.½Æ<¾\£‰Á/ÑðÅõ±²a¬Nd¼öqW~!su¨O6è›0ˆ ì…ÐË®+i•ŒÚ‹[W<û—ÉÃj,žƒ®øÐ5%x«Ç¤nú™gw.¯‰Ù×:Ú†Îà·Áþ­·á“ç ;ª;¬”¯©‰ªÍL)J2âE$O½ë<ðmyÒ8aT-„w(Pz†eGåëk¢X·´¯eç¦3@ªç¹¹6³ÚXcÊ‚r~wE»qÝ·›†ÝÆíY0fñuØ.¼g¡ª(·PõÕ£f=v7 C)F÷w‰·d[u Ð*À"o!8¾šZÚ¡,ûØDÀ6v žV6¥ä 5¦o„¡Í¸NB Ú²€€ÌØ<¶…~…SYßj>Ϩ߽‘V±^Ñ雟*vCjØFCs´‘ß ÍÑî÷êÆõ1-›½÷ñ8”̪YÇçÅ´H§™ô£›ÇO‰)ìàslŸ´uÚ(]$”‚'ò‹ð¾Ê91à › â Ð[eÒižS °5 /ž³â¦µò6é‘ZñWÑê(œŽ•« êß02——yô±%y¬õë§ÝLÚb0Ãæž½Æ¼Mò¢çÕ‹ÔŸm"ªò¢·žÉó5«9ˆá®J \šmæ""Ç–¤Öª*¾m?¬òš€wÁ.yJÂ9œ ‹¸ñ(§h+Šu/é_+ó%ŸwžN—îö®ä½æË‹/¹aæ¾H9eãÛ¨ÖM‘"º±3íÇL e2¿îÆöãuÐM6Í y_‡Ç|u &eV°-f~ƒoCÐæ'Ÿ(fô¡|4ßF°ÆJ‡ùü+6†'…úЬ˜!öûÙŒï‚y$ˆò¤O‹åf1€ŒBׄ£ÝðÓ8¹ºlø(*™RÅ #Hr'àÝ-ïl}†ø(b’AÇÒ÷ð– …ïÁëáßîá}„”7"7M4ý`5ëVrÍ0Å1ó‚ȹ.¯Æ:ý¸_™3„ž0ù&gDîÂðHnv Q€ävâgÂ+O­Â+㑪seùH ¡À³¢ÔszÒa¯gË·=*ߘQ#’¡}xi­©ôQ=èáEÓ)Q–¼ Ÿ¥‡Q=*â35|`q´Œ rêv-#èKKLPœ4§ÑI3Ïñè£í¨V×ãÍ$…Þ(ÍÝíÞ?O5BÚƒâ5©¬ÜèÁJðR …M‚%Œ5ûçDEl/EÌJ· ›9žC=dlÅÛÙîŒ|W6‘îc@º6ÖfoIn(7>±7> Ö†ÅMű™z¬»ø}Ä\’EG¼õ\/a~ÒçÏzÒ£>˜/íF†%BÊMƒé?O±t:ZgöŸï4Æ<ÎÿÒernç»(aX$nw=š¸ëb™f²xRîp½-RöaÊkbpvÉ»ZÀÝ+àˆ éÉ-"ˆFDýQ?AÔOõDSÑdz Õÿ{ø@aâ]:D1¦LÓ!Bè"Ö 0AU‡…ÿyHÇ`—þ½Â1ýí’÷¡_\Æ;‡â€ñHèºËò¯àÕ‡¯eèƒ4:äý_~2FØ1:ßD‡\²I‰7(±h{nÈ×fÁ»æUd£$,%åQÏ!s/éF!k¡ÙS;Ä÷­MÙ-úí.ÙºªÕ?=}±§¬vg>³ŠNÉû¢M9QB&ÛôQi-èÆ©2Ù Ï­LžÃšåÕ5FO={G¾.uŽ<žu³CéŒ2Õd)†ÂWgò;kfç{a'¦WÎ6°W#¼ÿ&|rHŸ?…Ç3a“ý$;ÄÚÔ¨al ìCÿhÆZ¢Æa5JnTåCð+»g9jàÅUOßbµ¬¶ä ´(ùêýñäJħ²íVJª:Ñ )d•°zôª@éùî»r Õ¬¿ˆûqê\x g…êhöÑ+è†í@¬0’˜.†¢´]˜¨z0*è6|,뎲ÁÆzP™+$ïÀTjE¶Uè®LñÞ¹êßïÖ½JžÃèˆ8FÙ{ݰÎÈøu™´­QÚýSrQ³6ȺCΖ˜ÉÕIÝÉ‹=¬±„E½‡i5ã1PÊJ¿¤ê#Cú99]½-ŠË¦¬@}å^|:›‡lŽ^n’5a3Îå2Ö°x¢ã ¡ÙK³äH÷Ž.>É6rØú¸Nº;‰¹Ú.„B£Á4Ãô|õÏBÂÅtf¾h%²eS6꥘¨’<>—jŸˆ-©k  ›wÎ {)ÈgœK%£ñ“FÔí>ûa|”'H(_ò`L }R<þÜåbfïéb×hNå‚Ó\Ÿ±õKçf¿¿NXýsÈ|ѧŶ¬ WÑŸ¯Ž)RcÑ}¯ T ä$µ&_`»0ä˜ä>J6Ä ß³ûŒ©G›Žš3R¶‰¯o¢Ö»ø ¯~LW½}¤ð "7Æ ÐFS–1ÆúrØÃÍ«Mêìã{Jøl^ôp3¶f˜˜>þ-—ƒ>gνIgî»<Ô;ÎÀ?/ö¬RÖ1äwéQ¦m ìàÛkþ'žYÌæK‚nFÖŒÓÛÿ³+Ú»g`h{RÙgO)þwû#ü ‰R ÚV éÏ ûX¿¬ÀrÐÿFŒ Ÿ×Å&µÒ;^WÝ¢ßZæ6åIëqÄâí VЂLzv’WÄÓ÷Òv%v$|&Z×ðŠ„!º¹Øø$Ž­ŠP×R‘ùÙx„å´'µÒ”¬náÓôùep“¥äÁ´¥bSÄŒ±¶É¢)óæ˜rU |ÍšÐ5y·¸¥¹`3`-Týƒ¦­žƒW ÕÕ :ߦXg4¥k·i®¸üNùœØ#}U ›1ìTÕ‡‡ N6ôEU}0c†H=ÙpɬĬúH’p˜.YŒ'¶+ñ^¼ìëT+ÿ ƒ÷!ˆ¸VYÁ@\·ëíõW£®¦$ ¾ %çðÝ«±³/C?ݹ„‰EV €beK¬¢¬n­¤ÖAÙeó V JžÌìR½Ýë·ðŠØž¬¢÷$ÞRÕµ*©›uÓ 0Ï#˜­Ôj*µ%Ÿ]ó“ä¶ ­“ñ|å¸<Ïx¦i®)š+Qs%h®xCÍ¥òÒNvBst9LF£=õ62vèbó¶ÛܦÑÙ»–£nàâƒoÞÃt\ÃZüµt¶µÚP¨ó¢}_Z`+ú;=í®°¤'§vSUDjiÉfÕOÚÀ ŸÄJ¬ìZ?Æãà®X÷Ç&´‘ñÃ){-0„e'EB©£7Ò @;wx°5ÿ+—1í;Ð/H»Ò–­ð?LK€´Ñ"ßO)môÒúÜ”/‡,8Ú•y·Gù¿D›«‚vÿ.Ô–ÀïƒCì?mIÝ)8:Y¼Hnèn8ªÆV±Ô¦K­ ¹$ž£¨‰…eüPuÁ'|,¬· ÜYp±M#)Bst¡ 1V”ŽŠ,}؈ 5”‚UÚš[õ.‹+ÕðÔÂÉç² éáš8ÚFŽaºÜõæ\õ£{ʼnsg™äQt¹è~<¡0ü¨üg0y:Ý>õ§üg!Q&ÓHT¶D@@ŠÄ«àyÁ,ä…µTšU¨óÑpqu´š.-ßÈÇJ»ŸpëüT­‰Ð®ùyÓp4Ä»"¸²œLxxËEám:0}»Æâ~×:¬:ç“À.ÁŠ?xs9Z³ï »àmy/Üb‚´;ç“Lc0n­)ý¤zÒ|²^ 2}lï×ï]ê‚m¬è)t3ðz°=òxø\°=\+î¥bŽÔFúO ^µVà¦Ðìÿ5yUèJó¯ û¼ ª™puëÁÞú-¡úΊÚ>‹pNˆ0œy÷*~uù*6\ûdËÃ[Ö¥±Èj ¬Â‚'áz—Æ‹À â•E±†CR7úÇO]!_Ÿš&_›úyl:îid+$Y Éœú×gÉ1ìàËP¨Æ˜šöjš,¥®<ª÷Wö}GΨìK“oÁvqtp—ã2¹?îçÃ#Þ.#-ˆkݵM& [&‹C7ÃÍîw-FHÊd“èŒ Öfͤçhxv}É%÷»QÉ'åßàÖë—ì”ýP~žºçoN<3–,ÍÕîÄ»§?ج C1îw5cé¾%Ú}$—£‚åsÖÝd4dâ ¤ëjòŒPùõûxlmŒh-¨É/È–’†ÀòÔ*Ñð­¸$ðÇàjŠcŠ2d…ªÎ™¤²gÛº@hbJgž¶ ïÉf: ú²O?õ÷ö ìSTtå³ sù+XR‘c“{V²IÒÃ~Ènïˆ6¿j/æ¾ Íï=ƒO[«`«úl˜B¥×ƈ¶0%T¥(3mʦ;bíÊ¢D‰½ ›;¶­ ëðÌ¥£I¬ïÈ'EÚ.l¼í=?jÕ3¨*Älîz“»}@‰ƽ˜³¡è…QÞ;Áwa?.þN϶á+ß…•(›FŠÏÊ¢éœÐ"êTdÛ èý—Ü×!ë{ûo×§]–,Uƒ†JØÔäº÷ž$ÏCtЉ/À [oUô)m¹¯­Å §Ò¾ÚzØ¿»g­³Io?z‡aP²`xù=Ñ¢~ÔRO+ºj{û‰;Ú$ ÛÖÞ§ŸâMUð‘ï@ ÜƒVË×MÐwýjáb¤PLy€—Z0 öÌÜðQ§Rv*uäû{n/>™E5ÐêMÐÊJ.±±ÒÛ Øj1@¡ÄÛÜý³ÖŬL~ôz„RxŸ¾#¾¸}QþO/cɧ¯¯„÷ÀçCb«‰jyfwöò‘°[B1Õ;ÿn›Ý–Ì8Ç=;0€³pÃ…Õ±jC ©FÐ…Ï`"5´t‘ûQÊÍ=iܬ…í'ЬIEÛ”…Î'ÕÃ.A‡ —_ÏvL£æ§`Ã$õ<±ŸqÝ.Φ†—AÓ¹B™³­>C”€@¢“',À2,GD ªA}ÝL Nèä¹½ö†‰ÔÏ„ˆæDs·‰æN. öó¾ƒ2‡›MÍaÀãÁ¶ðM](ÚòÓùö6jnÁS‡ˆAïleo-nIà˜hñ Ç¿w!]qþ.í›|Ôu4"›±n6ˆ Cìφ܉ěq¬cÉË®j‡ñÈU[d¼c³J…'sœQëeòä8³Ì[_&/ôjò|·oàs’ç´<3´£û«vD?m¼ò¤î’v¿òŸ ûÊžhRœ-•}#Ö^Ç+:¸£Ý7Ïg Å{@vi—³H]sðàZÑ%·à×¥BeFwÓð"æRÕ×¾¹ÿ†·ÇJ;ØØÀ[Á3xýÛ÷£®*ÒstÍ$’h…ôÿ/áÃy‰¦ËþèܬÆD‘œoªmøÐ,ík6bG2a7i0tÉ#Xsƒ—´?é™Íž…ñg"tÞXj9YÑÇÚVòœ¾ªê»4íæï =¢a%Ëé;y_wô3èOžÊN±¶ª1Hº»}®ôRé— šxΗ íë>ØR¥i#ö8Âr¾”^*ø’h½î/<­-®[GA»X4¢#Wвäyyh ##9e/Ý»[cx°né²Ù»U˜ËìþÀÌváI_]û\«Å]§Â#ƒ…Ê'Õ mD½² õ Ù“÷ïC’¬{Éé;k±ˆG6Ç{zýè£CÁ¼ ”Ǹ}feš°…šßÕFŠî3˜áUeFά:€}`m4ä=§Õ_Ì ;ÜúmmÒAyø¼…6£¢ÓÞƒèA¢À*Ó\¶|§Ú_±'H8hßÔª»¥œÃÈžð òÿ*6²a/†c{ s؉o†Äk#v x¨™ÆÃ Ôq2Ý ù:ɱlŽ—‡À1 ÑIØœQ˧¢,MV ¼òLwo—ã}»7ß¾ØS¼³W¸¼í‹Æ'’™·uâñí$\Íä3#{C7Þ©0ºü’ ¢?o؉PYºT}­¸K-yê ©P^_Êt÷FË7»{‡É£Ý½Ã%Ï(õî/—É›¡hŸ¾ ´¯&^‘Sª«gÃZA•¿¤däªjÑw ‘ú‡UèAdµAÙÃåyŸª[~Nùh Ô$`g)Ô'4(´Tê—Ãñc”áP„û^ý2Xa5û.ö,[=L=t§¦- jIôo?…o%dÐ!ÊᓺWë ÈæÔØ{ Ñ3?ž¯Þ"¾a+ꦗÂ>ò`í²éð%Wt­±&µ†ÝÜñÒ.cÿ‘lÅ¥—Â2<ÈxÝØiq= ~ýàî6ÿ#“•vaéwõì\à«pLìtKÅ ºÐ{&”ÑŒèY}بëbÂ6ú a§¤—³^žÓe*è°ìm°b0G+8C÷Q: ¨#ØIô«'i®6¼Œô(.Ë9ªû@‚{ÐÌr:D,R<´å9mÞƒ®ïi×d¼þUÚ%½<È]*« Ÿ¥!Ÿ·×‚ñòÙ\h£]su¨7Öb3¶À¡Zè3Ýi× :©Ï›íy…â¶ŒzàqÔ9wá-§ ?ž–·ÓÝ×ÁÀ£À'r õêž fl_8ÑãèÁ«P¾AMºõämÈUp½ºÅ©°4r¼è Íósœ1»÷ãERŒ(~s°°Ëç‡ÏŽvʺ3¶›ÿŒÐ™Â¤¶J/—ÚªúQÒ”Áx{|Ô€p½:©•µõÌ2¨Ùu]¶úÃÛ+ŸídMꋸ–ËS!•Ý•«¹b…†•Ó1â¬Ù©º¾GCc{×l#7 vô±º@ÝçÆ3sÈœõ‚ ÏØIÔ¯¿¾7ôF­¾ÒÕ_A¾ç, gCÐúó4Ò{Žû¢ñÞ¶X·âÄ ÁöcìC¨!HË?¢©—àÿ/-"æWÜýÌ´"9 t7 6§Sß ñ×ÕˆPw‹ªîÁ‹Ýs§“g› ÓƒüN@nÕ}ØÞ©ž~T¿âÅs:+S“æJžÕÈÀ|f~'jš»]Gñt$Þ‹óÒ©ÍJÀªÿ~¯8Zm\!y¾E‡+6‰JÈ-O³ÖòYØj e–GÃŒiø j•=ç€õãQÀ/iß"a°‰˜-|+€ŸŠÀ‡=ìpW§É¥*›ñæûA‡}¯èÐCw¼îOº(äñGQa?ú“–«=[U÷ŠÕ²*^EÞû)Ⱥ쨗£¸ ú}¬Ûu{V¡úáÝâðvu°ƒšRX”«¾ 5„‹sW—6ó5õ!ŠFÇÐAwÉIÐRߟ†óćòŒ!؃½q±§ ² ‚°…‚í|&2dC†evÜŽ²¡6Ðû£®©Ðùe‹¸qK囑säªxdת§Zïu;IŽáÁÔ“Íu¨]†ohrU«Ãøï¿áó݇ŸÊÙyôê¹¹ê“?áå8õ™©Cüx…Ƽ4=T¸''ú¾€Îé ¶l®C$µñgSñÌ ¯Z´;Ti{ŒleꄹòMî&3Fƒ~·]Aqo¼Ã;âJvuó‡Ìl²0Íõeà]a÷'¢EM3ôÀ©¶­Ô•ÄãÔ÷oêfEVòÅ£ãToÀMZ„_â`“Y¯£ÐAS%š¦Jbh¹ÅDC5]ÿ:Í\‹“m¹êKË1–ÂlÅ¿‡xÆL¢$Ÿã éÄ•7Éûb4¾`L+Iië­ Ñåað7qó8õú[Âq;ÓÎÛ‹ÚÐyÏŠhÚÝÔîŽ0 ¹!šLNö]er’ÓˆF2hr2ÿ.ݪ³ ÉÓfFÿƩ’§Q¦&þvˆfÇGEâÁ…Ñè6%ôkc*é‘Z"hÄ`,Ïé¨1Ç Aa'~x „¾ }#læ8¶ ‘RpƒÌ ŽI»ûyÔJn]:ü•ç…"0VbÙaê{¯bÙ–¼ ‹Éð@åx| 4¥ÔVaÓÐLGÍ€•nDiè EÊBÕ@n}:jni§º´Ñÿ@„] bôWu;ÿ<§… <¥cÔçh¡Ax8Xd"™ûêPÓèã¿54>Ç1‰QZpuœÜÁ&_K’‡ä}U€òBcž2ènû_Ãç½ß–öeqžTËÃkÆW4öº›¢ (eÔÜ€ýA•ed|»gÿ*€[2¥ªèidà!óãwY5£ßùo' ȧTÕíOèz [¬*| ûv_ˆØ`n‰sØ}ábK¡Ø Tì3/›ÆJ ÞEzl:äIÝ"y¦ô…{û-È{á´„Ê6ùÃÆ¤r°~+#ŠåÀ)3ì´øy×Õ†°º r Ñ}ýz²þ߯'ïÜôŸ×“©b=I{%b=ùÔüŸ×t¹ž<ZO­'Mÿy=Éû¿[Oâ¿v=AûvZOþeøwëÉܫדqhïÓJ Ç!±p4âÂQucpá’äK$+Òê°“8°:µÂ²dó” ÊW‡Ï^(âXh|†;õ1\rÐYíÿ¯¯]r®à¦¿}ièlfc¯\hm¸F²6ÏÚÿãµá;/ý‡µaÏkÃå¿|ÃÚPvEoŽýå³6üþ/ÿ»µ!~ðÿ|mxèÿskÃ/þŸ¯ ¯½øµ6 ¥]äÚðükÃ=/þ¯×†É/þ_® ¦ðÚÐsÅÚpàÏÿ»µáõ+ÖÏŸÿ‡kÃʫֆ{®X’ÿ|ÕÚpñkÖ†^±6Dýùêµá>}mX~ÅÚpüOW­ ikí}ÿimð_¹6 ^Œ€f• ’¸ÀrwröjÒ#¿4á”Rt϶&s±Ú†§˜¯«É ÌÎÖä±ø¹Ýß‘ïcádÒe«)4zZßv¬e¨˜P£sl’7ÞÒ1GlR¶§ÕÕ Å×4ðœXànÒ¾1ö³J†1¹I¶+‹®ƒ_–cÝbb¥V  ’¶ÞOÓÖšâ°”›`[Êl!+íd§X÷|<Ô©.ýÔ5lITóieŧ[ØQy üÖoH)°°‚Ž5S“VV ò÷1Ž««Æ¦Ì›¡±î96×¼˜º°K¸£ÃÞ&ís}šÜ½“ÃØÄ¬d/íöå|šœÓ¡85y+¬¬ÂêÇ~žVùáã7ÄÖ˜Àgð&=Œ2·Þòw#[†v®hª”Üt?ôBn‡:UªsŸ02ƒÜãŸzZ%¯¸ijÂŸÂø*¶|}Ø?ÿ©Ñ@ñ•"ÒN™ †pÌ%lŽ»3 ’wŽ㨎Mê^ém]?:ÈM£ÉÅ+†ýÃÅ>I -“¸é¸¾K^Ôó¹ÛÈÙè¥%ü—O 728µ|KñJwŠ¡Dbÿ­—G<_¸Ü{póõiÀËï]r*¼õTye%ª•Ÿ@®¬\Úâ«åŸèû|Êsò”¤L\~öÛS&Þ‹¿ãR&Þ‡¿£„A›SÍÍÑ´b¡fî%?ó™‰À!:ÕkçÁ6­¾vµAAvçÅöJütݿ۩^˜eXê/D5¼šîã}KýÓõo»áÛ ÿHü¶jÓ³£-èÞHu@y÷+à‹¢)a¾aé°›÷ã‡vã–îŒT£|Sw”E¾/Àn_ï{±“vdŒ…/(öUÕé/è»[|º·æîGt&·ê'€wuØx,‚žƒ—Ê(¿DÕóªJôÿçÌV~‰¡òÑO”S-»úîscÏBjÙ· áÉïTOŒG%Ð@Djw&AeB¨2—{ë7ß ŠT #¡j#eˆøJ€µ;ÕÓÇ Éá\β;‚p–Èëœ":ÎÝÙt) ©S}í[x¦‘ˆTw ‹Rs#Á%Ú‰×Yì{øß€[ëT×|‰OTçĨ":ÖÏbL —Mz¹máyilÐÑQ)Œ)¹ÎZ×Û‚¤Ñ3d+’sdÓMeà ƒ.«/ï£k$å¥Éw!Ýo¸ $ø—ìj‡é.çŽö¤ÖžÐIÒai‡S½ü<Òaà$ÀúSG”aY ™Sð$Ä©åÆ3G;ôy¾¾“î?‚÷>¢ÃÕ¡sàªÎgiÂÿ´U(G¡ÛüNŸãyšVÓçt_ÃH몄 ¤Þ—Gž<ƒk†SýîÇFƒ¸6ö‡…ú‰aWF¢œ¾¸˜SÒÍÒÃÁõ=ËÌ ïIÉ6Û&=¼…„Âxô_hf…Vo«ë˜àx“î6øT¨–¥Ͱ”gób´·)Œc…±¬Ð溆§%`ô\¨n‡*—õ ‹‚Òò=|Îÿ¤Ó+Ýs ëG×Êh2çAgx[ ¿I ƒfó9UŸTC¹*­oDy‡¾Î6Šü7P5@/¼¬˜gÆ1z1Ê4³ÌXôÆšiMÒŠùb /L`ÝöCü¿qòó 5çlRT²ýÒch·o,´ <÷[$”Å‹xY.kžÜ–&b-Û c޲ŋXY.¶àœÆNg g3çL|-4+  yZy¼VnVrÎäik-ùîÆiNÍÕÆsÚ´ïú/„Á ;¢Ç‰wÄÁŠ×=ßh”oçš““Ê'«/HA!õíób-+Ø¡ƒEêÙRG‘zK2]RÌÓ1+ŠeE6VÇŠ¬¬ˆ¢¥ÛXº•¥Ç²t 3²ts±{Ð(yv¡ïþAãæîAàìß3éÝâÔyÉCÎÊ—,bʽ˜¸"—oÇɧ2ØŽû(ÃXn‰Õ{)PÂL˜ÔÓˆ{~ÉûgäžÔÓ©^,Éè/ßF¨o¹~Öbofô˼«àïv¶í'ø•^Œz~LC™¸‚a¶T£¯ÎdJ“Ç»[\Á\Éô}“5™JJ[íøeÂÆ—Ä›|¶$–-±±%€"3â-o6OŸÉWÜÃÒ§±¼éð¶íQXXŒâ­…·\%ç‰<Åû=*ø=O[gÖvárj§æ´¢=L¯qÝ|^dN¦*`öñÅ|I./·¸¿ý`j/Z´~ ß*v…yùEZnšZD`Þ¿WO)AÄÆÎ€.lð.üªíœXŒgû'_€ÍCk”gQ°bh„­XÄÖå†) Hèº|ƒ…%³ f¶ÁÆ6XÙ†XvŠ÷;/ÓºåþÈìzœÏO˜:?ž5õœeçùl©áÒ¤Éuð€ÉïÚO @'œgÛ6á¨%aJ%b~zò6üÝbIö⇵ ¢QÐGi‚ê+ƒT¯#¢Ð)z„›œnÖžERõßȵH:8’Ú“Ì•õDü×Oèfcô\m]|‘–?{;†/¦R¬aKÊ&K 5^žÄwl"€ðK:#èA'[íD«ˆ>išú+Pä¼RYc ›oVÌcØ| k&ôêˆÝnlsÍ_ÄŠrý⤒JPØØZ>ÉÊm !ÑÙ<èi6]êõN$µõóUºðþnL$¯…¬&ê¹ë€‘ÀCà%uû—""€RwÈð$‡B Ë6ÏA Ë4O53—^nØÙ 6 >vtò;™’çeg# ä¾ÀŸqL˜ºÔ"fAC”˜NmE[g…zIJÜ%Ó4Ä¿Z~_aU¬ql Íž1 V™%ûI{kÞnWÂ-YªrÕ£© £~eÔbÿ᫚—‡µJÞ×èFŽ#áúù¾[¡4¿©À@länxtꦒ§H\Ëäy(¦±‚^òÂ1{#7Þlˆ1 sñWò±6hÝ~#m—vâNèFº\ª¢ú™œ×ž¯G–Ý,Ôþöf<z‡/¾‡55 F±œvý:2š—’k÷ëøZaqû@è;C¶g¸Ã¢= =¢_È}¯å9‡®ßØKóñôX\Ä[róóÔš‘úž#–ð6\Â›Ä ž +ø<˜>Geô–Äs‹O¡ŒíÄ@,¸Ž¿a‡%väSÃ7SÑÂxW³èi ž½Ç例ãÿÕ NñSKÁ°Á8I/Dêϱ)æÇ“{¥GæâæC5»gÇÈ#’{×}éGg;ö^è³RlŠ Ê‰º¯@ý¯°qç=^ O‡ :e×ù åË”Ÿ:tù =u[÷å¦Üû§åSè“Ϋå'‡ªZcô^/ PÜ¥Ú}Þn9Æ]¡]10ü;îz†góÜ ô”ka6–kf¹ð±ž™rcëtÑ ¶ËaKP!?}Á¶ä]~‚±wªˆŸ$/ÚaFÄ/¤Q Ò¥~Þ'=‚aøºå°izìe#Qê:½ßa0U®àóãRÐMðУ,9íµh¹.A[«¸@¶T •™îB§Ø“tÀj°_,ŠåK‚¸)bMêy‹NòŒ¥)"N˜8Ýòðź|yv,$_}m'pãz†ã®Dº+‚£†nÜ¡‚˜© Ìì ×wE§&öÍG”i¾ùäz‘;:-ÐåB­fÉæ4éå6ÖÆ_GV¼}µ1žÂ´É-°ð¤É˜’ù 3Jl…%ð²ú^4º`›(=Ñ(í>ºh ¦TPjÊ,‹ˆv ä|˜¤ý,kFi¿ˆÌS/üÉ$TÑdB×b2í9°²,…YE3„gB²úØpÝ͉ÿ+¡SÅ«Í@ì&]ÕBúd¡€*·r[( f-¬)™^~äÆñh£/‚ë¾|–bÖY‚A 0¦”æŠU{¿C#“ܬK†þ<,ˆ617sa›n2¸Ë¶y¿µ¹?:ÇnXm\£,IÒeq·'PœàŠ»¢PLá fòzP7rz· ©p¤ «áÈÒ.vCH/ ,MækÉ‰È ô‰qCàLDÌ.KR·{Ãl £ÒØÐg^° ´/ÊÝ»F˜-àÃã&zøžF_=¾¡Ø7š¨šâB#G^gƸæÎbv'›oóeW`èŸAèxÜûS™óž}õ0noÜ€¸>qñwPxA HkÃ%H[1ŽY\m|s±Û7=”êËÈMu±’E ¬°¹¾Œ{E™ûD™åTF/°Ê—!Ï~Èä-¾,ñÅÑæÿœ|:aȇœæ, ³»7_ôÿ}t9šÝÍ&˜Ëè5fØmYþŸ ƒ ¤3ißQØÆ×fUOð¡*ŒNéV›VGQx-7—ÒØ4ÉûSØ­¨µƒƒ¸|â¥Ý2xדŠxÉV}rûh!Ä¢Ÿ×²2Ðr «:ˆÌ`Hð‡Fé‘@?ݧšµê7¡ümÔ`T¨˜­úÄ ˜”«Øk¸{ï—Ǹ{×KÞµxëöÝJdkç0¼xvªÑÿ}¼ KÏQþåT»wä½Ô²bÝ”œ¡4’ÕC;Bü6Ù_à¥`±Ù`IrªèÔO•‘ÜpMhâË÷ƒ10Ä3npä;LAî™BXyí š¶"§V˜ÊšVòÌyx˜ ÕìívÁмœgÆÃŽ(ÓJ'1q³y,ÏL`™qao"Ðw!xºÔÀG¬»Pz½¥hA¾ºþ6X2W2ª4ð*ÐïB J™GäGì‡ØqqÐÖ08iµ±0߉ûñ#lÿäf˜XIÝiòo™s[˜ëGó´&¢¨ „ñ=ûAò$÷¡6^Ý108T…O+%ÊùYæ”,‹ôð?‘úC'\±úéW4Ý Ü`_õ!gå=Î ¾‡Ž³¾0¬Žb…1UÐqÖ%qœõûÐ×ZÊïz¨P};‘æY öf¶ØÌ[Ùb [ÇDzÅ6q€•«`áÞzÿæYtxU'“Ûq|¾ù+Ë,í6á†Lu¶öÓIQàM<ØTjb5°£ä|õ—SðxÜÊ?<&Ê ¥S¦ÅSÂÇD×kC‰ Ô|µukä1Ñt(ôý[ƒ‡BÅþuŸmDr|lÏ~ý¬j¬úe_p öŠ„ÅžýbU¸— §ÍÛê*pª‰CªeX›PóY1ßB3/OH>/îcc8úr +7c„Ä^¾œb`cº0–-´1“ôØ«87èÄåçÄcSœ òâšku nºL¤sg¬kÂ#ŽY¬Òî«?_?g êŒ× “Ò³ëŒÿöàwØól¾™—ó,ÛÔ,¼ä”«­µ:Õ£çE~ÉcÚçÀ#!½üT¼ßða¤¦~zÆÚïpIÇG’'Í ÆQ0Gl'3^Ÿ‹ ~ôÌ ]ŸZnvªu7bÏS3ã“»–®b]öý|,ùøÂùgC á¯h´òëÁà“ªÎZ¡+¹‘<Ê‹,¨•.²²œZt'äŠó9*…./&ò"ŸQÇÒÜð9¥uÀu’[tò„"õíÉtɃÔjúr*žw-Á¹ømX°p.æ›P«| aÿ:}r±»ß(yþEÁ³7™Yò<‘[º9šS+yÚŠ±múfI®ðˆ>ùÝ,FAGôX¨5–*ô ÐIW-i@sj'œgÔ}æToº!¹ zKt²Ã³6òBŸÃ#†¡šêÿ¬æ|–$¬ê¤ƒ# <’M„xNeXù?Ñ gA5kØ"oŠNqxÊïç¥îªNg¥2W­<ÌîxtBA-E‘úê´ °>ÁþþÑ«4È7!„ÕÇK¬°sŨô!}ù)v>òHõ¢ÏÿP)*ˆ#ð6”ðS¤‰ñœ.ð*æëØ +[ËVØØŠ8áîÝýñ°ïŸofw®o bNøc׈˜tyàµüZÝIýwu]ÒpF£è¿í4®¿NãJÒ6„ŒŽGÇ”Ö&öO:q ½©óÍÛ&uejËäf`BϧŽ)é¨õÖoxG}þ«Á«Î€hšãÝTõзÊЧhîÓ¼MÞ/yÓȪ³’”Y3"c˜â}aŒûÆCÎ÷ä$®ÆñÜX– ¤ò´Õ5ž'i­“o¢ñD‚…üÔ‚õ1µ5êYé 6ôà©×’X¨Ý~¯DZg Í6{oäÞ’?\›œÖ´e%òY\F&L]ï¾´…Ut®¥¼îµ·0ôŒØ «Åõ^MÞÅEJütй<€èC‰ã¿ƒ:Â/»a6cRŠ£sMuà(3A{ÚšXõ}'*É®;=Öx¥oÔ¾–&Ø’ŽÂ£Ž0)¹Kzíв+gÇÈ1)뺯üý€ã©+)ÉH•"‘Eâ´À†Ý/èBÎÁØ9®kø|’EÐì øßDƒ¡˜;ɃžDø Ÿo¶7&—BƒéšØà1 äEµ"Tæm•Gó% ö#É9]ÒÃ8ñ¡î«Ïa\]ò5” ¸ÖºƒöãüÝÊ©³(hB³y_²ˆ¯Èe‡&Ÿ2::펮 y¤9–,b+rñÒg½p9Ï+ºì6Ààð‘"Ù»¥„ÀEê> $¿e®Ã©%× e´›Ê…öÔÕùxaºÓ^Úe\aF„K£x]ôÕ“'¡]Æufq$=¹job˜¢ eaËP¶j¤5 侘€;?ÚàEIJ°{#nLoÅuclÕ‡¸1MÒ`j’‚ÊK§úºq{M0¯Ây¬©˜ÌÌJ¤ÇªÄ†Š/Húý©Ø :ÕwgF¡L±á3Òßt±'L»Àt±QL²9Õ¥q¸m¥¨€shG¼ÝŬËÅÂóéîIBû3lö»×Glrõ¯€@lyCû`ÚÉhp˜€2ÊfÛÔÍÖ-ªˆd”Ûü$£0Ÿpp¨å»¨ÇW(î×tÚbR¾™;aϾy*ÑòlSó¬ }Qù°›uª§Tª´Û”&g0R«ØDô/›L¾ÄDÿyÅ÷ñ=¢a6\?d“…†»ÀG€ªã%ï$ùîü *Á¾ô€¸ ×ÏB¦rë­ú597[QCÊœ0çuΚÙlú±¨o\‹UKØw¯ŠÜnæ…¶›®#êÍ]úVSþ;»8d£iNª¼ELôÛÜ\òRëýe“ônmzΪ§@”fÓÉŸ09ŽŠßázè Μ³ùX÷‡Ý‡ÒØØ+vrnR#GÒuã©ëuÖØ%ê&†¤ÕL¿>|¯ùZ¹ã@Æ@ãAÙVâ=f†Ú}† H…(š ?¿î?W ¼+F¯Ç}¡^¡¡*$ Øv¨h"Ø&©”ËGÀ®GE:ÕaÑ$`/¥ok:Ü#mD¥÷C„e ‰8«¹±âxBð¾\`|´L»Æ\±DËßåóq¢LóÑzŽ}ãëŠ};*ÊCq[„ß‘1hå9xA={gÄQy—÷à–¿‚Xh©B§^†u¿ã+qxÚ&w¥É1Éïn¶åÉG×=Fê­u³aüŒš«~µA5gá}Z÷xXþBÊ'º-R¹ÔÓkLŽó"’Î&ážyD“œ€_]µêøZV<ô\ÂoÒíjƒ© >r©ƒãQ2Fh&Ÿ‡ Ò]x”A,c~®˜©°(× jAd„˜ðœz¶Â â&4 ;Öu±0lŽÇ1ãKŠÃèoź[ƒ#øPŒ…ØÂ\Ï„~òþµÓ…eqئ¦‹½²_wè÷ÐekäöÏŸ3-®8 &6zèD`]Sµœ[rZ^ð¸e'â ¬UØ9(ÎYöK»)j]µöýY}òs %¼vçÄLŒ>À`±‹uÝDç« ¢©éf@ÝvX-í Ž°SúÅ rdó²ù^ܱ )ã ä¸Úk'´‚«Š óP(.@¿Ö(¡·Â¢Hb©šÖÿ‰$¯:ZÇ]ã¼±¡Rò¹M·o1'7­†~Ñó¬Ü¡¢SÌt3Ð :ÑÃÂ\æ\ä¾é vžõûË„°0ž;éPýE9Žz‚Xäâñgi1_6;’CÃÃuÃthûÁˆ¶ý⎀“—|]<”i‘‚|„»`3åäVØì;,ˆW~a‘X}÷Ç:Á®¿ÃÞdôy»·œF”–äÚ¡Ôi¾`Ñú±°†1ßvã%´9aA „–„À!À »Ä.Ô™¯ÂâsØüX Ǻ}Á@æÈâ„z©ðYÜOøâ^o? KíÝk`à7//öj%¾,Ϭxñ#Ä‹,!^d‘x±ùfß#!¶XXæÿC<¥ÖŠLÄO FÅJkG¼Ãr•=¼¢æÃ㺗¶3ëGUU<ŠìQÚúHSà*îcJŠÕ=-I­ŒB¸™J[Pë£ w$I5bD ܵBFÏä“"þÝä±ùç… |q¼P Ø1G%£PL‘c•E×j7åx’K+¥ÇÑî&k²Ð¸QÇÄú€Q.¸©Àc?’g¢(ˆùjƒˆ¨xFñMõlsÂÒe<Ë25ËŒªºÍ Ûy0Ö;᨜8•nù±Bëöd}¨¥Çq6Y’$7íº)‡)kÛl™Jõ²~˜ã,Ë,b¨ò¬ÜÚc2Š¡Æ mY²É’BáØÊ¸Q½6ªø®­­6êxYÂÔ²xv®A›Äö†C¨Š‡I'fxñ — ŸƒJÃzJ}Û(…öc…‹ØâÜÀ¿X¯Pâ °þ¡Ã c¾‘?ùdxP˜²*¤±+ª}lø6‘F.Ò`’NßDÌ’É ×¦ù[,ÉTÃÚ¹bVo¢½;pÓnÁ½»Äø;0f ‡"+FCÄ õÿˆ¬:ê"þ#Åde þüÁÍúUáëÍ)ë-2ÈñS×dzÞíùEd 3[­ønA,0=øf3+íb—¦O}‡åxxµÛ3Ô²xÄÔ ô¸unÀ{'ìèb…¸ƒ]ngÃ1¶A0~šü»–¹bC­Ø/&÷—ÿÅm±^À´ß@ë@oÏœ3Áäè ¼á,ÌW7¢¥25 æŽ¢8û9¾ÆÌK,h©`#ÇŸÿAF[ºìj–Ig…›§GÈh+@Š Éh¯ëGQ‘V˜æKa9íÝ9 d´-‰Óv^-§=rZÍUrÚòÔ9mÕrÚŒûÿœvä'èÌô 9íæ«ä´ÂQÿIN«ç9µl‰ÕXZkÂürîªG‹9˜£9¼§Q°n[2TN ´$§½{…œéã“d5@uèšé›2ˆîåaýÍHqkBN%ýºMÚúcŒDBr%O6ª^˧°rkÕZ E±à¶`dR«^Ý_AÌà -ÉÍåô¿EÙÃôG¬BžÊ˧±…ÓøÂÄ›5Ú£Z“Ï3+·°…°«Hd ÍXÆèÿ1âoãt¼ë^{|Èàêâ ­ÜÕ…Nçšíï²>¾À’|¾"Š½Ë¯~‰ÉÞ`?xx+(‘¨öCä’¯§tÂ>® cý…Âi.wt(3-4OÚ½ƒ^õÉ1µö ÕÖƒvCâ Ç{}SlEŠlte­½*:Œ]J¬”›¯þ:­Oð À-àgYOϹ"^¡{Š”Ô˜"uNjç;L¡Óöèä·/Ì/R‹°üF*_Ñ؇ÑrïË÷9:0J›z7læ½õ+h¼˜Oòˆ˜Üë¿k*GÇWJÚ}ÀOgÔk°’ÌDáïiÏ9cD”[Ùlc"sµ³K´䪮±š¶4p‘YÐ…";ßs2ÏT>­Pyà¾Bæ:£>ž¦‡-{âÎD¼Œu Ñ ã$øÑJÃ#¸ÐÂ`dak9ÍZy¢: Ú)öeŠˆ™â°;Sî$ãS`¹Ñ*=‚6¦ Òûÿp9x˜¹Zsj…Ö4=äy¿Œ’ô?xyŸù?§ëŸEÐõ¢ÿ-][¥Ý¶4<Ài <]û¿£í1Jº1pàÿ_hût$mÇú_EÛoÞõ? í²‰ßHÛïúw´}ÿÿˆ¶ï¸ëHÛÛmÿ‰¶_›«ÓöŸæþ_Ðv´Sö?¢í?ë´ýÜ7Òö3!Ú¾?‚¶…—VtÎÜ*mkvÑã,¶“pVpFò^¦ý¨vãö7àúê…áð‰Å'ÆX`«2+ݪÝ‚:›8cðZ­ÄþfÐo‘K¡þ ­N³­ÉÙ¶µt™‹@ŠÆŒ(B’‡ÑÜÿÚ‰•&7ù¢§èÞ×älÑ kòžv=@…äP¥Téø<i…<<Ó-òïÂ×eeqX63ð&ê˜Õß@=é¤O´%v¾ØÂû½˜îO£%zUº<°ŠNµýÁ°ßÔD”É›y™5ù$Hj¬´MzäYœéãÅ)´k”´{ƒ–Ra•<‘èGÓP¿TöxÀ'z²œcäoò˜P8Õæç`Ÿß"Ûjy¶%ùÌÓ÷8^ù¤yzÒ~‰å¨|ñ4Ö<ÕÑ™ìP¥­§p’:T/zÕírTïA×Ïxé1˜¥¦ÒŽ©Ž6¨±lŠ<’u_=O]wñ²DìÊxVz¬–ožÆË,U‡Èˆã[œÈÆãEʲi,ËŠBê%%O«)‘Õ\½T“v‡å@`Šu’æRMyùê¹9¸3±òÍ8³Ð‘kÅ1èžÿ‡8ûzNå+ñ”pšð¾êÆ do*L|Úû8ÅÏ9¯c¬ÍâûœÁ9½½g4êôzq¯¶>Í´æ´ sºæt‹ú}j\ŸÓ×ñœ äì²D¨«hƒž’³™\õ€m>ßç‹õIÍúò8ÓæiEÊúûŠXE‹z6YŸÔÿ„‡ÀfVU"(£Öè=½B·Æ@ß’Ê/ñ+œÆ §°0Vý¿gë›a”*ŽI^44Ô!!lý NéÍ ð*±ß͇¹§îî†zíKyN»÷ ^÷oèÆ™"{¿©´Ôñ•h¶»Öªš­äó78gp„ÊÌ4ZS@ d'ýòÆ ËŸ§ŸGŽ÷?pYìq‚¦é•8gq^]Ý`@« èâÕpbp²uý&ÎT1å%F.#FG8¸äø(œÃÐߨä6¹TÉÉÓfÂ8t1J¯ºi €N“}¶îV)b²ëÍ0lÆÛí®«óp2«…êH^º,ð©SíˆÆü6ϜɢÒ¿sª¯a‚MÄÔÍQóÔôˆ©‹Š«+ú¼~=u­jdå½V®îuß}Cz½á{¢ÇZ4vˆÒÎdÄ¥6ÌùÆ>í‚J–AŸB¶ºz§v܇·µ~à?£©W{‰G}hÆç_Ásd‡¸Ot ýªØ2¦O]€*P๖äCÀ3ŽžÁš…ÿxÜe[xî44ûÏžÆs%W%ДkeÙ‰,×Ü+¢îªá­ØÊr1s•… "²-˜¹8Ãs þ+BçF‚Ϻ¹$ áBwÏœÂ2¿AäÑÕú<“V²LëÚ6Tº½buvÔGÑæ… ïüà:z#ˆJº 4 Ñi<ÓŠ¢‹“ä¡L”‡p)ýØ‚ú¿¯YIƒ¶ØdAºœ™e„'ŒŸ`GˆÖOºï}±÷”¡ª°ä)èZl!úÚa ÈZXåþp žW¸çi}I°ªÚûEîMQG¡”ᦎ ì‰8»B+ºz×$lBN'qB§Œ3ÓJ"eα’R>_Ù˜-[t°®K:+Jy<Û˜ xÿ`ÝËW_H9²´iÆ~¯‰<à mÚcøB3™é€ÝÈxͼÂVˆ6PÈ*ß+lPóbyz\ò~mšìÇ“×F±A÷`ìºE K\ËŽ° töoª6fÒÙ…-ˆµ÷Àš/í6aù¿ÒÞÙ ­™KÓÊdÓ’À†˜°îBg¾š6“çñdþ"ïÑiƵ&¼½Ï×ò‚þtPQï²’šÞÌó,É-ãQ{cr?ÀØïî]—ê= 0žZÀFcõ°ô,„ÑÇ k³&“1¥(L+q½>ô»Ö™[¨¾8ƒ´ä¬ÉX‚ê’À¡È³e«âÄ@Ë^’Ôš&ß h± ;-Òÿ›¸3ÞÝk¶Ißhw»QÎÅ%[ÜT÷Mƒú±í•g¹ú¯~ÜKÚYv*|•is¤1°ŸÎÔìGªˆ$>@’€eûÞåH'øHvÈýáe hg¼·UI½S®r`QtüÏuTÐIž–Ÿ¡oBÏ&«o\mZ…NˆV£ÒYýh™°£s÷ O,òt²»TÞĨ÷•âZ§/§Á±&m)Àž•-`÷ÖóŠX6þÿWƒýöòˆÁ~u90váËqÕ‡ñ_N»›÷4+[¾¾˜m.FsʯåáÿG#Ì^¯‹]À:ºŽ”…h†Ë#ºMFÉ3ÅþÌéx]†uë°H’¸HNº$/êï¹hA{]ÊWO-"É‘ú¦ñßÊ‘/@‰’ÿ÷åÈôe_+GÞÉeÅ(G>Ýo*Gþ®’#/•„åÈ\õqCH¬(óŽRÈ×pÒñEWž=—øŸÕÏêBÚ¤m`b]=;W“'Š•ÍÞã––¸{5Ùä¾é‹ |‘Í2a)ÞO¾ C2˜9Åi];AY 1\§3´!…aù j | bgãu%vdò¡µ×T¬{AZå¼ÞzhÝW°êÛôD«ê¾/à!:›.:÷áòÎt•ªÀÛKAê½Be0ŸuG=Ú¥‘¡U©îѺzkáÕÊ€”eÀ›Wh'î¦ÊÐ1R„  ¢£HM]J»?îÿ›ÅþÿŽúÎ}‘9‹KÕNu5|[êÿI$t䩽łnÐô»« ê+ŸÃÈë=cMÅäTß\cn¶Øð€ß‚©¯ÓUˆ€ÞFÆí]ú=ƒ°Ê™†ÃQýܧÔÊG;êEØÛÉßÑí{u1;[ˆÙCìCU’Ð=–bÄ\× kù, +Ÿâ™ú¡}GX eñ—®ÅÑ“ âÕ|dàOÁ3y³{ÿtòcjMn–Ílà·°˜\[“©é–¡û³®vÇtgòX¾ÀùydZç;‘:¯ÈGc33´/ÔÃ>c'ÐLŠ)¶Iu\ýíó‚à·úÈþåmuæÊ7+¥½NõHX©¯Sä߇j]­Õbßµ§3áC¥ßlÆ낋Ã(ŸÃ‚…ú«!?«ö}…sõýˆó&”K’êùxº¯ñD½¸DÂ]ò5°B!/ÚŸ’ÇiXñz啯ȩV­ÍõtX”ÁRas TlÁÞ™Q\³°²XÔûHÚ¾\qÞn ðeseàŽkajäQú5›mõÒî®,X3ÝZä±b£45ݺ<ÇÒÞתة™¶@ –®øÇòù°båQ°/òzÈjïíi2Ša!¸»Ý] RÆãvEl”¼Ñ{zýì䜮M3s2n™2Ìä¶všCÏG»Âf÷ÇQ²‹ÉiTä;P$ŠTŒ ÏRß/Cç6ã!Da3;å_ˆ˜st‘)͘£&üže³;:ñ¾¾å²m ȶ<ÃlïÅx4/lE…ÞzqËÚ"/U¬Ó“Z“ÏK¿Þ¯<¤x-³œj;z!qÄŠ»Yå6¼[Tn–'óœX¼W´1Ž-´øÜH=† Æ‚•Dzò8¶ý_®6ªÓ†¡7SX}^mØ’ºû¥gŠî.qˆÚ «\¬Xç$Õ'_’~]¯k#Þ墨P] ÄfÛŒZZ9ãgˆÔ|\ ëòc›ã€ÄÔâ}Õ` ±¬„5þø 0T"î€ámÄ»>å‰Ï10§0PÛhCvͲ]ߘBWƒ›Ò2Ü#-‘øØHØ*·À,GXâ–¥e¬)°3xW hpi,pøä‹k£ÙR ;Ëǰ–›q^ÏÅ?ò8XŒ’/A”›¤ÝQbmÓ×AX âØR3Ë‹ ´÷®é¨¡€­?Ð+vˆ/vGá”à rš<"ÄO™ÃJÖg5dSNÚ9dfy¢.Ý]a¿üÔ—âž…öKœ«Å“µ¡E|^¢…ß“h­>ÎŽ4|h[ɽ`’ÕXf’<ó`Ö þ1ð›ɳDò­z2zÀÇäDòx=o¤F(» »õ6nI:ò¶688h|OrãuĤ÷ªÞÃ÷ù’à D|}aè×íØlsD†ŸÍðpdñòûC_\ßçÙáVË—…?ä†Sï §ÎàÙÖð{øÃ áT)Ü®¯$Õ¯ht×›Åÿ=åëf‘ižÏä1³ÿ)˜Öà·Ab4$O[Ñô¯€fÑÝ5ÆšëÒ3<õ³M¾ ín‘v¿c?Dñ5¥ÝG{N¾ÔטlΤúÖ£;Ûfïôuª“Ï j%d®ã,ÌU£nÄ+xa¥Jxm²`ŒµÝ#½šä• j3€ñÊ;JSÉÍ®.i÷F#ƵQÊ£ðSr¯œÂSTì¢÷fõ¸?Ï.UäqQJŒ¬´dz#Ã:nX;¢8§]]®‘µ¬Å}ÀB“ ³^á»Ss ¯ ,i7L‡’Û\G!ñĉòñÀ[ íë¦\Vv¦¾ý|òvnÍTwßðµ×²“='ݘì‡.>äê¸ø;÷‡&vßÛ‚sØx2+©×­½™]¢ÜK_¾øü;âþÂäþÜÅ._üÝ€ÛgFÇFš–,fGð{`/̘f¾(Ñbo¨RÍD¿æšXKµÍÓ*'ÖÜc1Vçá1£ªs£àÑ ¦ê\“§Õu4---ì3½P°JàPƒò²Úëþ×P”Vgæ„ýѯ•vãci¯Â­cÌ·.yä±Eä™,íF±·´kþÔø*vÊ5¼ft–ç ëÖd^‘Þê/B_ñ6¾`zÈ[ýÛº·zô/¿Ö¿áw‹ôÓƒÁèt,Â'=–ñçh˜³ö?ñûl›äùÎâñå7ú‹„/_àš_IG`†ÝžwKaÚ‡?d‡?Ì…‰þ0-üa2Láð[øC4° Ào"gª„³4& ¶-Í qzþÏøaªÎáfå‡7ëÉCøáh=y˜ñßðÃw†2´·†òÿ ýúßWñC™Áµ9Ì­Ê髆ð¢ð‡EáÔôpêCxáÍá×}=/D¯¦WòÁñA>8*‚u>| vúI§_JLêÀu÷„ˆÿÖ…!î†yc/s‰rÏ#«°º>Ôçv(&,†Té%O®™÷/#¢ öÆvÊØ´ÐÝg\ºvdM­z|Và#¨7x¾å~`‹‚µ0>[æ(Íwg"³·Ã¦â>ô¿ýnÔ‚å´Ãª Öë€á[mSÿ|O{™ãL™ä)¥évþ@<Ï]îíf®6vÔç@ïg Õÿ>ֵ޶¡JÏ6ÜÊùD°„¤zêËi©‰òàùXfêm’çǃ,Ÿ·å®eÓ ãÜŸ ˆ¸‡5QîOº<õl•' ÿ”r3ÁÎssmfµ±Æ”åüîŠcÆuס£Š‚cY°»—ð±´- oáa ¦a%§kµ!õ)9uIñ6‹ºôŒ6â­§X4€4i+J¸Èctz””ÀL}’”xŸ^ÉéØƒEY¯,<†¨PxÝJ^q†YÑ=\ z­gyGWægXV¬/Ëvø «%¬u#4ßž hû˜FX0ráÛŸÁêØ÷¥Çž$ò|³zv«Áø€;:Ôc[C¡|ÂQ ò³úöÖPÿ]dGв Ghã:ý‚•¿[œ9kŽc~…±µPö…,–ÐÍœXŸóðNUN¯z‡Wï¥ `/­xÂ]îEüÜÑ«fS³½‹:dZèdMò½ÀWsæ£Æ)¶(ÀÃg²Çó¥è>šƒè›ª(¾Ý—Ye“–[ Ǩ&--x2[ÕßÞn³¼¸X›š‰V4™±×X·àÎ;CúSìÁ—y¬F›F™WôèÍ ¾ÄN¬Ã ö~ˆ•§ãÈvÂȪbd»ÔŒˆì˜}&sZÉ'sZäëùHt8ˆZ$ ÐY´~"î¸@µ&õŽGÐ-8w¨ê´G7ä”ö¯kaºt©q”F·$i£Còkq,H·øÒ„Ò8Í&tVŒy¯zñë=ëEõóAmé>ægãf)†5o³2Ïhèé7€åè’ª_ ýÝHÛ<¦êSü¦9ºD–/XË›¶ÑÃöž~Øy¢o‚–·Q!¿½Gc™f€ûöp‘„}“ªR ©ÎW‡ã4éòv¯OíqtŠà¹‰hkãèÜþ&š…ôôjÆâëµ€ŸžKÈCÐ5BUEÞ¤—Ë%îÑõ&¾Jª©áÓIö¬Beç–ÔMòòz¾`GX/{§¡wRCßð†þhû~{£WÃèõ½Ru²t¥¨XwÍõÙa Ç¡ˆëðö}È ½ô0$òÒÃÆS¼T]Hõ²‚öž…¾:â•£¹áÕßmo¶ÑÃqŒ´±6©}±ý }QŠy5qÒÞÐàŸrj+8°½g»ŽÙ]°Çã~VPt2µ S™ÙªX/(fÆo±¶íoúÙ^Po‚š{¹ë-ãñíPSO¿ý]Àíùõq¼ ÝTÐa?bGWÍ*stúŸ6*¥í¦Ò45º¨l©±Š.ôN£ºë£üß§}²£ŸéÖzEgÕ?Á±)Àh¯IõÁaŲŒx×MC‡GÂ×}Ù 2ð)©#Œï)ño(^oléõ¼ñÉ]0ä#ácE òtµÝ¹’ǦK¯_Hvumú~í®.€ÚR‚ÆÓqÓ¹Àê>0{YÍ`n+yÞøÀ1ØVtaô ÿ%4[0½dü í_´œ®ªýH¢ë¿òg_û¹˜.\SáñZ< FÏKVæÍ&U‚…)hƳm|},ZÄoC»lž›Àšy¼¡5Ò>+‘ð`ÝŸÿô§[Ø´lgÛЬ—íñ³ãìБÁ†¾I  ûY¶}{Ø¥ªÄ$Û…M’º{(¾7]‡À«Glï4ä°“aνM…â o!zw‰ 0JêÆ%vŸ2ózãYÅúªIÁ¦¥×ßøå^_‘gk|ÝÌ jç±]SʉA}ŠôØ›8½Lª¹›{ñirƒûR £+›c|tÍ#‡+ièê¡ÜÑ–E?ÁNwLæs?í¤‰øÍiT¾S~s ×nš~ºÒÐg²÷)3¡Xw³sö÷¾˜dïcÇE+ö£0ÿÜj–òÖŒ›pm™Y¯Äw)3Ÿ2š¨JüZ® ʕؓJj¾2óm®dSú_•ØeJê/Ä 8 D¾#á½í ;5t†íÀ»>ïLMÜT©UrºJ“¯XÉO›÷¢Ôóá0tå|/ïœ{1Ý«éá”âŒ_‹š¡ýæTSù'c{1–µä-G…Ð¥†KQÊ‘ØÙ†´|þe'‘‰ šìï*±»ë/Ø)bF”Ó~å¡Eü6 ^/^™·QgÞÍíM¬«AdßÏŽÛû°ì=û ÀñT/BØÏÛûÍ©Ó\9FXŠï@lO]o4žå{ãS7XûÊÌsJìZ¾7›RÌJü/”™Ï(©kù.÷·§&)ÖÿFO+[Ñs9ááäTâÅc¢\q+‹Hné2ôV¦ c‚;¹âoBÖ¨F÷^ükÚ2šÓ /¶ k <Åé2£:9µ1uÒ;þx^p yÎi9_Ìm¾Çg*M꤃^Í5ÂÝ—*y>hÍFž’s O â½—@$Ôˆ!{c7|>íE&vÊ‹¬íÔÚÎŒš ¬ç±ž3£Òàùýèlø{òà)/Nü"¹œ…_åäçïûϵwp¸î{?:‹ŠWÉ3y0ȲòÍ‘Soà \/ðVëÀÅ߉Þú{Qh‹@‰ÃsQŠ´õdx?ºX­~C“×?1ò5s÷}î¾Bs×ñÂ…,‚qùÐp&¿I+~Whºê‘Ö|“ýÌU\§Ïö^v䊬x·³ž‚Éœ«O±~{#k£¹j‡ {O€7ÕñL×þ(œ¨'íƒJ@÷‚;D×–Gtí vöâï(j/ë†]ð·ýÉÛfÒ? ý[ûв¸ÃzÜFLÄÏ=ÔKÏ%d 4ž:#‘<ã/!‰ú¼ñú‰ü¯“¤LIƒŽËÐñï±¶©”p¤×D¿Ì‹r`š“,T¤ì q¡ÎBÄŠ8À,ß…»€Ý'A†)XY äTz ¢âY¾ƒßÓ0èSÞ¿ªé>žØ»nyÛ žnY‡=ÿ¨Äó„:Ÿ!tc{íçîÞS.¿/³"ó ¯Z.)\îàÿ¦ÜmárÍÿ›r·‡Ëú÷åp/‰o‡e.nW䑹êdƒ~€MN¾`k\c¤:ŒPÇ„zw{T6ŤÃ2¸˜®®%zï¬öüiˆ³*ÜïÃÖ>ÊøjÏ'ÀfŸôHÃAÿ T¨FÂPÃö p¼ùèAÿWV@¸ÿåÛaýÿ/®~Š…ÞØƒòW÷à gàÏ{ iðóüAÿç1X“J³âßçG¡‰R|öîù‰#±‡ül>ˆOä`Õ³¨o¨ô—âS¦9ñ wÐþ»ñ ·ÔþïâÓ|š…O•(›LÅ' ý“©Hô_Ki˜o=Á£ßD_m¸eAidÉ‘"be‹ÿ_øDk^®ÚóÊ(“Á$|göЫ3ú’r%ÍSŸùãàU±¢Q!`#Ë™³Ö{©º×ÃC {ùusI_±ÞY̬+ÐD1‘e‹·Ûuž >Ó\]EêD˜%¬i)ù=€/Ï©kªâÀ¯Ô[ ÑžRܤ1 4†ø Þ&>ù÷AùŠÑZXHXÊÚ ýSÝ­CrÛs÷•S;^@Ðq?EGqd’Tè¡X™½@yù«‡«E¦( 8ÒëMºªhˆ¾œÂÓ¾<Ñ\WJM°£D’û§#üÕOœyržÂ¦Ò{Ï ˆÉ|[äãê=·°œ ‚Ôîq/Ô5„ñ¶î><6Œqˆ ú*hwÏù–ësŽêv6ÁÕÓ©x7«+éø Gçˆ&9VíùCpœ„BåÁ£Ç ‹^¥¿|T”¡§»ÚÙ0‘é1ê_³°ˆß“8z9­‡La])Ò‹‡¬ ~«ëvöOèx,|Šƒ,ñ\NLà›ëê îeËJa^Ë×Q¤­Qw>0±îS¤Ù‹2ò”{Sb¼Á5¡®g4 ‘ð'ò·B†FvTäþû±ŒÈ_a)úX:ístL oüØËN>/É ìõ[Và> FS›ŽæÞ6Ýש¼‚çt$ç´ËÓQ©Yq˜Å¿žåv´˜™«H|†Rf†¥¶Ì‚'5®†0m#ÎiqÐe?Œêâœvw}lÃQÜu˜9:üQì“‹¿ ä&žmIÅÕ…žâr-’ç|”8/òãî·¢ û,ÊL!d§XÅæ:†õ»:’]í’ç7”­;³Ø:^p†GñÌóÝŽcfo7«h—-¨Órœ ¼äÃ+T^dÆÊ‹(2s;n-¦Ð©ÏéLÎQåÌ2‰»:Ù Ü¡v§Y’—"t`üré±çuEnw~øâ Ææ—× ð<Ëœ¼o¡yÀ0‹<«&Íú‚QþŽ»}°:ÝZ¹ØjäK¸A8lÇkBZ©wƒ…YÁrÚXA;^XZje4¦;3Ô~º#H @®¹•w[ì‚–ÓN=Ø| vȃOPy~L#Ù\ù}ë »od©÷D ).ÏÁjî¬)´ÖdZÝ6¾Ñ2¢¥:ÍÐûNž…-4s€¦ÜÂ&T®´ꎓZÕ5YÖš¥Vع?ÑX½ÔŠßyµGº]ê•«°ñŨÙU“~%"ò̼¢ ­p4#:$^zØÝ`fÖ_†a¡~³Fä<Зç|dnìшèö¨Ð‚¡ý6˜ÙB õÈÌ&“¥¯ïÇKå±fVFpa?„³µtK`sÅa.oà£y©š²Ô"[XžÙ¿ì<‹7 ßEÿNÝOdαÿ<üw]¦pþe—#ýÆs—5IêkŽu=¿®[Ö$.…|z‚®¼ÄE¹Œu£Lpƒ6#r6;Tq®A:ÿ" tâê„õ PE}žhH€åf­»ÑÂGˆMà]8/ÏBOY^f¥?àÝ…Nëj›ú‹·5Q±OžÀLh9d«Ì¶}iÂÐD.'_”ã°A#µ§b{N#(Bk,≻ѨfmÏ"줬°  V€.›| AË7²FäS3Š´ã¢õSòoýúk•L GÛ—£®ö¤Öˆ«™æ }.¯ãù™UNÆ7—ì ]B©/‰È»Úqži¦z]³r!ÅH)‘2S¢œÔpð|6«ì‚º eœs¬;ø^Œï{Yw1Þ©½¢}h*üYPº®Çy:C;ÎJ-¡šý/D‚ªª°ª3âمχžï¡Ý@Å]oD;Í=‘˜*t—%ú)oÆ9"¯G&!¯aÝÈDBTCÜ…íð5eÖîF£¼•ÊsDtGœôÌ~¨ñ¡š‘³Ýï«Ë¬•K¬ÆÊïA¥±°å˜Má„[Šs‡­0³ èç„I¯8íÊ£h Ààó:œ•sx1çVE·¸ÖˆNf7›ÍhDW„÷){k¡OþyZøþ¯•à¹Ð7ÖÈÞ…qÌÅq\’[ˆÃx"4Œ·çâ(žâ¸üBÄ„êÐz¥,6²>õ·¸ ŸÏ¿Âçý¹y0|Gt(ÖÈÓ!wM#7!8rñ‰ê È€a¿æ0V±‚³ð¬¾Oÿ­Ëæ]ÎU¼_žC¥T×9¡”R÷™hÝh’üd°ŸOèýÌÄ~ŽöSûPØW×׎þS¯AA¥žüA¢nQ4À|ì¼8îÖòD zÍä»?êrª¿<£ie+rÕ‘—‘}Z©Nõ¤²¥Ë 2vãÛÉçL¨µCû±g{°ßU¶ažüU…ÐBðóŒ*úœí:¨&ÜŒ³ýë¿Ë÷bƆ¾ÖËŽoïdT¹S½2¯à;ðÅݲ3zÉfê'O£<ü-ÜÌù«ök´› ñç‡ [ú€›u§n¾èÄÍÞ‡‡âæîßü[Üü÷o®ÂÍ#psme7æÄÿ„›Á-HŽ_‹›wžú7¸qwN[µì‚Ͳj´Ì-¬ FoÀ½ÒRÖX&y~A“úýkìw-Ænuµ(Çòên£Û=Ž»Î¼]…d­“é ^òQ³S]fÀP9ÍÞƒuÓ!ƒ|«æjV÷´!Ò½­ÅÜÑ,_Ï'¶Ã~Ç{Úu#‡O QÔ»FíÄÇàËW3ÿ[ÆOéÜ.pN@þT¨> l Í®‹K$/n²¿ØÙ3µíÆ]Ñux ¦ßc‚UÍÛí”oä7À¿ú6§úä'FÚÊãÒž[›I>ž»~ƒ×&bbÀaS>E„$BW^ oÄÖ˜Xwj¢<­:*3Ã«É 5¦Ô9ò5žz×§M\&ľ1îkLù¬õÀQ2u1‰¹:šçàCêFv²ÚqVò¼³¶Æ˜Ô='ú0tPòTÓ{eÅ9¥VÁsj…¾G’<ã¢tÁ_.'wẋ»ôì _ç®P59Dš|µž0^l¼¸Ô¾ò܃Ƶ³Ѹ…tJž%¤¼sM¨ÍÄ$Éó]z—ϧÎq}æÿ¼ÀC9”‚>4E%fø1†[eÅY€¹Éq Ùb }”€^h@ã·©Ft›šlë]myng;š®-ˆ¨ë=ƒõ#ê:ƒ$³ëyÏ ¯À:È4D¾–»ZP9VCsµ²ù‡ÃóÝî¦("Ÿhæj œª1FSN艆e„^:°viÉ òiø¨Ü08Çõ/Ø|uCÖÆÔÛä·!õŸÐß#èãÒ&dA5sAP$o94£ÛIÁ’êýÿ?´QYh$ÅN sµùÇ£O0Äê0„bÇàAãŸðM%0>$¹ ²¿pÔAò€ã—"á ôzŸÔáÀãx€ã—ƒÇ ‚C_#ÜÑ!i÷·]þ@ˆ†ü{/= ÔfŽV€ãÝ¡pmzW^Öá(½LpbàÇ9‚cöå°ûF*ÞÑstñq‡aÈW¥Á ¾zPÕjës³!Aýð5TûxµçæÁ[±äÁ°|"–TÌ;¾:¿>|¸çC´/5+±Œ¨ ËWÿ„å†óqX Í•ÊöTÆ"Êb×Ðða”/:[¿öœ ø k€½ÊЃ¤nQ?oÀ¯ ¬Ì»žG–˜nSæÙŒ°çOªg’ÛgNnó¥›;à‹îž›åYËGùæU‘uLZrÛš‹Yèó(ø'~¢>{ò~6Æ»*˜l —ç¾èEÐ.åâ’¦lá]•s ®|ÑÓá ©¯Æ€ãzÛÂìHªIYʆk„šœ(åå»?î*dGÕ_(hª1QT/RýÉ’[“j\gÌÈFlŠuîwòÔ¯¢½ÜsØâR”¼xµaÕ }’E#Ö´ªz™[¨Îc0ìÄ\<Î} CÎù¢gêhôãyi®ú¢–˜ìų{ž‡úò“&µÖ¡FN}oùç®Çä½m®ù½Æ¼H–lÛ1ü«´À_ySÍVÜ>¼Uí}Þ]? hŘA-lÅ•p™ôÄþ2º.ÊWÄJÞ顽$\‘í6ʆ8ÉØ¯–>O‘éHÞßÀs7ÕÛs+^…ÙbæçéŽnœ§IÞ7apVߦW¸¶E,í°QÁ£Õm3ˆ•“W'ê ZÐh 䑼qQÂÃ>Ú%Õó½˜a`ˆ…¸öJÐBü§¨ W=}Æn?ú¿iUËÛ~YwÕ(ß§ìè€g®ê™Œ—‹VÀ _,g(ÛÎ`81ºNoÑv!DÚ.,¥(˜=ÏÉgÕCODõlfV—Œ ]ëØo5ˆìêçÔÊ N×_Hq+yЪ¿;úޱ‰C`'ƒ=˜‹=`û1. lÓû2ËÅA]¤ÉázDC«>;Ÿv >Ù^Y£å«Ä­h3N¥J ú…ƒTY“ÕÌzý…ЛU€Š’Š ˆãjÕþ_€PÝñ…ÔŸ- ú"9. ìù /q¢®ž#¼Żܔ‘ÄV€+=%OÛ‰I\òp«Ã¥—Ûø^Ì©È)ÆBuÉË86ØÙ¥’§ 8ëjc¾è³è¦ú!EZ³ù3·^U+ò°»‚P@ |›—ÿ¨fMÌ[weп]ÖcHOÄÙ–Åv¼‚ÌS«¼k#;/ntÀêw:¸ü¿«áÖ‹ëò.’ʾ ùû€éDªR¬ÓW'æ©ÿøM2Öäú=ßÈQjVá¢Q¨íÂæÕ[­«N·3߯¿É üönwc÷"lý?Zc‰KÈÛ4«Ä:2˜>ž|ðmXAFòùxðó¿h)9ø;®i­òß*ûn“_~l®ì›ãj <#Ö» ™5±#çüR¬)cpm…5yJR«ß?T 6½þ#Æ9ÄÅÔ52¥ù2Æ|„3•†ÇÛ-fR¬ ^÷(5/yßCüï¥,š¼€oÅ &I­î^Myå¯à¢®kyÑ=x‚úSzAÀoDj­H»£Ñ÷küm 9å2Ù¯Äßäx(ÉóäPôäkaûûBàœ5ÔhnÍãHòîL•—¢äŒFžã~›Ú“/Næ\eNU§ Æ©…H¯™þÒôZš€¬AxËpq÷\bÆòmÊ6,ž¯ìÅâE«(õêÂñ…%/ b\!¤”szù¯[ ùª¦blî>M¶{[Iw%ˆüç„ZÀJ'$ûªZ‚˜ªÂõ¾`$LIÞOÈ6©…†FònÆMÉ…›ˆKx ¶„ + èÞúdâÀÙÀ)i±Îµ]˜ ®ˆ§Î,‘³øÞ$’„Øï»=Ç ÕÊ?§ó ÙV(Êå«%ŸëÌK0_ù~5•¬µtɇÿF…  “¹(nh’'¬÷" EŠ‚åóVÍûzl¿tƒŽm?ftø½S½]Ò9~YÀëóÖÃ7”M|Þ·tF1ÀéqÊ%Üú0'°ù^̘|ðâïå©|Û[4T˜bš¹ óed¹ûŒŒR}]»Ç߈ÖÕ„6fÿä³ð?Àܦn‰¨¡mh Çù½1È}N ^Ñ¥N Á¹A?ërˆV”–s†çt°¡FÒò˜CU'„[)8£·"欿uàk[y}X°Ï@è\mJ× o}…VÚ•¤ÁnµÚñ ë†N¶×ŒLꮼ´±:ç Éó(΂‚öš¨¤ƒsŸHž{‚ïìÒæ­ðšÔZ!yŽ)e—« W|±ê‘<5†K뺗uÆ!à¥QÁ%ƒ^AjDt¬€´tª@^‡…å©XP6ç+Ö88—7 vÈaRiAkÚ^ b 6½ QIÝÞnß ü»ÚkÌI çI¤ƒ#ÁÑœÔx¶¿Éíò)a8Ò +7ƒÐøQ 9¬ c¹%uŽëpàÏB^ŒOGðÌcæT µÌ=B-ã§»ü ‘’mw¦‘¶ÀýhˆÔpö®ýp†àº& ×ð¤n~ÓA;&>ù¡Áʇ´vò‰evl°ØšÏ_ ›PÕ¬Ôaû©PÕügÍB¶œvŠ(`£Û<Üø\ßå áMÀFßþ°¼6!j?yY‡íçB}Ss×ÿÄÝÒáð+ìJ´ÔÜe“<#¶(ÃäÕbk"/Û’hâb´s(ˆƒÎà¶¡Sllüÿaî]࣪®ÅáLf’ 0p$j„PiKDk¢¨Œ‰ æÁ$¼¶×Rško-ÌT‚3#ÙÙŒ-ñÑÅ{iK[Z D!˜JÂC R‰Ê'Õð0 !ä|k­}æ@Ûûÿ¿ß÷ù“Ìyì³k¯½^{íµdô'†WšVüî1Oµ_qÿ2'»ÿIÚÂùàG¥€rµ¨+T‰QSø8øçR¨ãç¤'Ø9(—‚þÒ ¤”?Õúį0Óá%v<”|ð<#ò@žj­8ëÎ% Ì8ž’Y'H‰Î¶NæôÖZrÔœ·EìÖ9î1˜PyÞ’¯~¯µÈb»9õ l®)D×<:UTvQX@>L‰‰ÄÀ×÷ÈAwW0iV}£Aduw´K¾ñ±×o¨="'À ¶Âty=-†åƒaê*­¬Ý'ùï‹ ‰£Ýèh)Z©ÝçŽßsŸæh!ðI~J‡{§U0õ¡´çßbŸs؃«ü€ÀÜ™„¾öŸàORô‘HEø£h £pÞ°[”÷ÍUÇmÒ!#ùÞÂú$#ÝÌwml†E“[4¹=[= ºÑëÌ—ø š¾Ø2ëòxF—ÜÓ^ôØ}" ˆŸ§=Òb?¸¬›ü ÛDûÁ¥Ü‘„aHª1\F†&·*$&MNRf' ÍQ7Cý ·L-ÂfÄO¦a4X–´aÌfàç(óŠ9 žÐ}H®J’Ï[zìØñK¿•üä¨qZò}IË4ÝѶlTgOzÑŸ‰Ù/ÂÉ?IœhzÅ’*§2O[ Ž,ªä±OcÚ…Â; {Ц [Ð#t•i&±Ï‰G/Ó-~ÒÝ·sg3;e´)x7Á{Å€'øÍËO«¡2ìÛ'—~+Ÿ ×û @éÅxb›í¢U‰0çŸ.#]ðX¸£­Î´KGèñ’"2š„lréö(›œ·m ßÛ‰2W›¿÷Ç*s ŠŒ©p¦RüYUÄÆå4×Vaò´õ5p ³WCûÖ\·” Ÿf©×ZBÖ­cþÓ•–¡0êï—ÓøÐ/bô“ñÜ­ü•bSp¦rÔ¦ra žãN%¯ saÌ’¹°¬òsÕ¿ôà¶×ïöâøY:,DCLĶeŠ©ÄÁfEFëëoB°<­#ÜWý(3s6r§Êép¨wsÑ2”]â¦Æ!G£â6òÔ¡‹i§1›£Ï#²ÈYEUþ!ÂWZ0ƒ»Ô?F6!ÊÖ‘9èsYü‹à§¸_”VÇRǦ‚À ú±çÙ!ˆF›ƒö sP;šƒÞ ›ƒò€‚×ÍJÒ¸ÂQ¹jÍ.ÝT'ÿ‘4föF‚òaªßíÖw¥åa+½zá~7ø'AÈ›tBþ+AÈëVUW½@ÐòÓzÚT9„´ü¤åï‡^5 5?üýMì>£CvŸÂî“?â´ÚòrÊð¸íÀå֒ᬶ$¦¸àØ#Žc 6ºçrOk‰ä; ›¡îïBïîB(ÙÑ07ŽRp3/†£ÌThP‹ßì%€I>Úq¶3Æ$×ýy"Ô÷›‰“JbKŒ«—ß„o/_‹Î•¥¸6rUÏ]]çÇäOx•£É–B£úókº}A*þh°|(©XG™«ÔýC_:_%S/ˆ,Ñ"ÕQw–ò—#u][ûzGÒ.¤5õ«‘¿/ÖVã‹—÷á_*Ÿvä?~ݯFò}q•òé _*W¤Uw:’E†è™ñhâÕ-ÝúC×™XÁzMN.€'v6õ‹4²Å8Jwí£}m3®ç ¡VöËiÐèb¾ðiç,ëböË™Ø9gÜÝSóisúxfXVÆZÓ–ÖMÅ&&?bbŽbî(•vVbqeì%é«[ CkÏÁrŽaï` ½”f^P\s>Ž5)3GI†.ï§íö½u”ò ·KD:¨:Êa…ÀÝïÇÝ·˜e™ŒNIðŠ%BàFoW5‰YD¶¶}& lVdܵ`(.¯û5Ê^Ç­ðÇPŠ«+¼@ŸÔ¿›aNÃS†><­Ža­¼û1žŒ·{¤ôR«žY^ñÖ˜ùm óž’H nC|Æ\ñ á¦€Â£Ð—~ZÆû³$‰L7N²'Lz [r äy¨ÏŒ¦¼0X4–™>¤²M†&ÅF×ðI ˳Lày¶Pñ)ÿ²¸ Š'†ŠKÿ²x"O oŠýWÅAµÉ›*þö¿,>Š//ü—ÅLà¯ì#’ø"¿xÄ8ÏÄ2¨ "~X’(¿gÁr¥_hç+e¯a*ï¹X·‘åeÇ¿ÃâøhŽ·ÅŒ¿OrŠÂ†Ñ2y– 0½Šöt¾Ð Ò{‚>ïX‹C¦­Ÿ7…2:—•gÏA6ùk2Y•vx±l²;žÝiA98&^}½BLdhpÕΣìMd&#)Cyµ·wé%Upq  Èä4þ`#`'èÑ``ËU)ÏÍ‚1q°Û6©O_Ô4Œ:1J:› ͌خ"D|¿hð/¬>Žâ.üe;üMÊŽ…&µñ¨i•²µshíÍÛ5®–N<‚C|}2’Œr43sÝÚúNb¾F‰ê¼ûMyê¤ J„ÆŽñ÷·“+d#Ðäû ãjP_Œ~¹d$ÃeÀË÷ˆ^¿‡¤êÄõÇu‰O°ñgÌsýóå„,uË–^m@¢£—~‘Û¢mCÒ –ÂóE»vÃHYÐçRÃÿNï<:òxžú7!Œ‡÷Þƒ±9¢ÈÈö,õa1 ÂjžÁv_ÐÛåË.YaÊãù&ãàµH¯d|—¦hƒËëè½ÑÀÖ"¦>¶ñÇ~&`ĺ6ÞbbIx_ ÷Á/0u±©{ÍçFö„y1{uíIÜ}x»Å®<Žq·ˆ³ì’Ÿò²>oyC§yÞäï–üiJ`‡Ö²Ney"ËSù$«qR(öeäT&ÇjGFÖ³)m|†Õ8ÃÌfµCŒ¹f–w™ÏHz\#ÙªóÈ]3LÞ*¼4°Y]Ëoá$hا¶¹„Ìeà3½Ÿ&Ô|û~æ²—ëöž•X¾-°¥FÖ‚PÃ=Ü]‰Ãt·,ÖáíJpßöhö?ÜOIþ:Ð’šÈªºÜ(Ó…æ]/áÔ1FrÍDÿNüÈåóÖÞ¸•Ò¨{3O1¦ X¯-OB\ô p6¯¿w™P"ÝáÛõ[¢«¿‚ÖÞïDnm^2º¦>ü=Ú3ºzYpð­­ä¦Í½”½ØQÈÀ…´»´¶³}i,f30ë±*Ô.¢Ù¸aQæ<‘°YÍ^ŠUXð'¬–ZÓ ÜÊ@ÛË\ûÔŸ_B2‚ ɼ]0ƒ´áY°÷}ðç(W_É b¾Ïû¬Í ùß·ØûÜ-Fɦü¬Þ.¸ù¾^ì]}w²äß@Bç¾Å< ôS°è@tT2pÙ’>^Z—†DsAˆüÕÒ΃¼  2ö6û¥eC½é&÷Ò΋5ŸÅpl”«í—–¹#ÅÎû¼5Y>ã}>ɸü$Ï5)Ï%S+deòý Þ×sWý•8'zШâî§w$¸…ÔK;&ÙjZÌÒŽç ]\®§ëYI|¡ÕPï?-âCm¤¹¹½vÙ:–z;ÀUûz±¢¨YçhÀ5?‡XÂ,3a!ù !Fñ4&çãÝÃiÚ½]ɲ™yꩨZûŒ8‘w˜PGgzOy?k÷^ÑØ wB¶ú§ ƨ§~ j=‰‚ŽÃè3?h4lÙ-k?ëÑ‹I¹¬Ì%ÆdCSÞ³íÌU­v0ÄäRÎõý Ô¸½ t% <ÿžÀ«(Á>Ø,*½«t¢" ày¨Ò]•¸FЙXÖ>oZã˜9Eþ@­h¥ &½ ­Œ3¸ûïjÅ‚ˆ7ï+Z¬‰ð½3/ŠžKˆGÇWï yª0ã£/ðºRìÊb»nÇë‹b ÈÀhýÕ»î%uÏŒÒqш9Ê$üÎL2ZŒw’O¶)3oá·z?íMVxýâ©s¬ÇYªs“.ìðÑ8ßÎSu‡ˆ:G‘Ð’Wê‹Ä˜^m¹U[nÉWË>B» ® ÏzMˆ B®I'O=É‹†'ïª71Bp ™R1Ñ :ŽüN™ø@º{R« YÞñQ¯HÌ•ñ®Ò¢O܆œ3hñhrR¾:ç;ÖÏá“ß´´!Ãö%ßxÜ.„Gˆ€•ø‡4È$”-à½{ž=*¢N¢/ü8`½¯/ QƧòR^¾’”L÷­êÿèˆõ¸û{»Ò9fy´×QjJ©óýœ>Ü+”üudpôù5·t}ÌH!&à lux X 6k©jâ&Àä`°T“‹ÔÒ4¾q9‘ÅûÎqKð,?G-üÉÓú໚¼^­ø¢W næɶ*æ.Àð®Ð¨žhÓy¢Ü¿ÃñÈlè»ëÕÕð™>Õê~Z¢s„7^„AßI)ŠšsãþÉh1ÙùPkU0TëPîÜŒ¹(ôv&ª“/¡­޲œð(ÁPK27UßhÌ͘ÕN1ÙÅŒŒ’Ï·ñ¡ˆ Æ¡ˆ‚Q°wPv±Pd G±÷\;Ÿbf”'ZdŽÙ±ëèh?6·d6tÇh!HPX 2?Ûç˜Üs8}òù#\Á«"{ŒüÝ(·,¸dVqù»´­Ê©;±ƒômð¤^êgXê£ï" ždµÚR+ù­ÍÚÏ,"·ºî®>Ñ *³ÆÉ‹ñu1¾}`ð®zÍfp?­ã¾û¤I_cOiçA}ìA\Ï^ë^-´ô öz÷’ý5=û·ˆ–â?ZùtMŽ«|M©êꢀ©Ô›IöcK‹¼Ôa/§nñ¨‚ä;‰³‚˜°ŽþFŽ"OÀî“•ý±1Áõa¿úµmH+BN\Žvɹ?)&ÿý(sK¾sýÈñÈS sý;˜¦·g‹­vÝŸš9%ß ÔÍåbãƒs<=ŠîÅ)ûý“›Ý#Ó:v=yE2çæ«·è^¾Ç üïÞ8o¯qõg"©Ef:Âïià®Ãw¹&º‡—8¦•Þ©=Öâý4“¤Uc1WfOœa{\ßÖ±;Û˜S•^ºC'ƒ•uÕ¨# uG4eìîlä“/ŒMw43O«ä=ƒQsЈ]€1ßÐI·Øñ’ä{ÝDœ¾xoIÿR%·¡¨ö9ðLÉ׸a¯9ê¥=—4Ç>i†ŠSV7(ËJ• EWúŸZ1‚â)B™SŠå`Ìʪ %·‡^/o…úKú+2ú\q'Ư<•)¦Š{Bð޳þrù?ì’ÿo ­ûЯQoÏ1h4å0ê™þ£+ã®ÖéÌ¥òÕ^Ð&mˆƒ"úL¢~ØÖÉãÿ Mn+ùýQ„÷çžVÜF B/[q®¡Š/Q¡›Ã] æ]LrbÑx’÷#o#¨¨†º"ÏK1ÌY-ù†BKn+‘Â0kŽÀ ð-æý"UsTC÷™¼›»ªf”©h£0®Ýn…bú•²`BŤÞ»£ ÷I‰Ûmc*¼c*B-übùçvy·ä<ö:˜]Iéö•‡jN€~«÷8̬úzàðÐÓ€63Gcç eA{*óle´†Ð4LDÎ^ÐʕҔ0y¦‰ ñsâÜ‚„k»äÛ èZr{ ži Á¢ØÅO Xl'XlãŽí!ü‰†Å¶hXlç®í¬`ÛÿÛD¬Óa!ùÑ^v%¿ßÛkp'Ã:tß¡9Z¹¬ziĉv¹UÚ€G%¿Ã’• û¤{š—âÎ&ÿ·9ýÁ™@wåCo“äXþô•ö‰–ïó‚ÃÇlurG%Ÿfãs¬ÌécE¼À·öŒ?&í;Õï {¸iMP<íP¿&ù…´kà[~çç›Arú:ÝUPÄêû5IDžFÑ*óÀ“YHÛêþ%0‰V>ÏB+ðßå®m)6-‹£¿°OhDp©‘[Ž;$Ü"ÄSa"JK¤ÀÇäÐ^2®Ý UáÞ„¨ê]l2ªLí‹õüéÕPO5ÕóüµH=hk`ÝPÍÄžP5ãÐg%ºžïöˆz†¡UÅQ4u8©‚î«tTiGbIÿÀ%Œ%4%5P‡±<Å|…E±-Wf¾je|)°NS>¶Ëm˜Tã"mŒQòw£+©ë5ëíBÂÖ¥66¢Åî†ô Ѐ%å×ø,sº ›§ Ó[ò¡Hbì ò£³ÅÞÀœMòwô¸Rôð”®‹Á—i%c¬«èuŒÀÆuŒ¢'t~*—j%ƒYè°˜g‘Þøƒüp° 'ÉîÑõ¤ëôi ѧM@W6]EŸ$¢O›¡&C˜>uöô¥Oçuºr‚èʨg ÕóAO¤ž]pM›ï#õ¨œÚ­ÚšDþ˜BR—|u¤†âkïUëòÿx_D=û Šö°#—~+g ¡œ?ky‹dÎb6¥HÅRV ÃAoMªýŠÒãR;þÁ"øô=<Âué·’ïW_"7[?ÍXÿ¤ w–÷jêòûvaI^èËvMrýofÓ·âß`ƒ'¢>¢‘HªÑ‡ê¨@¯6!èǤ&Çe…š»¾X‚£^âÆ¡¿~GLÌ¢9ŽËÑ170bSI¢ï4&ªG¢PÒæK_›¢–€Òw ´Áhﻆ—‚`Ñg ´õ]íÑk>KóîàâïµÚäÛq ¸£ÖešZª« °ôK¥j'–7;$ÉiŸŠó¸Ü«»D î~!BçwÝw¢3m¢€^–<ɰ`ÈXæˆÄdºC#;Ùþ’˜4ÍWí^!íè*™b€«Ÿ°«ÒŽú’)±5çL> Pꞯ?1†Ÿ<®?1…Ÿ< ÷ìjÉ”¸ÐeVœû[¬»æ¬IÚѤd aÝkÏBÚ'¤(1Ô|ž˜vÂW-Ÿ¡œGü‘P„÷Ù½¥¸Í‰N_ðç ì bž–šŸ§Î¤7£@îçÝkÂOåF˜ÿivRòM¢­àF>]ÃÅÁW©dÞ@ï9cÑU£:ÖÑ€Šk-aÆ~IÛø>Ö=¡“¤pô±–‡á¹FÐ>äv6˜ÇGƒÀž)ž¶|4¢@€c»ZêWðP§ÃгæÞb¼zVÂM˜g/’¸F^‰aøþ:¿Çbpÿ'B€:Ü, ÐBý¾»Ð¿³DûlÞŸµ³nõx¬W c4çžfÜa»—Dß&;º¨’„ìhD^ô4ÄÀ ®úâéU“ý纑|¹Ú0Æ À‹è…5E’ª›jÝý@rD'×a„,¦ïJ²,ÕŸ›Šºc%ª¡ ¤Ô9Z_„%Xç¨'ů#ítâjå7…=ó¸§~Š2YÒ¼µ&]™£~y‹·úoKOʾmº+­C)hÕÈš¢NÀà{Mó èÜåÿäòá¢ñ1ò÷ø@² ưÌï¿ æ¿·þ¦U«¥™§h¿ ö¦‰=ü$„ïÉxZÕÙÒ~ëJbÐÓmÒŽX %S÷e˜ ÂØzÃAzˆÉ ž8l8EO@étÏ¢'톋ôðÝŸÀCý«8XOĹ¿ ÓËK^b§ú§CÜ?64•@‹r3Ž2ó[û®Ë–´Óv³{ë˜×vËkr'b„¥0ó6iiŠ£- ƒcõg]Ðkõ3¡… 3’C}Ó0! ÆÂº‹lâm8õ tÙŒ&=ÃÎå@ïYcQ7,fÚ(m„•yýJ(hFAbO­3ô¤£ë(r[áv3Æ{êR·&ÀB8ÌãÓç˜tßAÝoéB蓌±ƒ`$0 ‡¸£9—›qet©Ý :nCÑAБ&.·â±ubQ-öUò=IÜŒŸÀŒb9Jå¢×˜›¥8Z³°ÃD•ÿ-ªÜ,‚1Š'Ko'ŠWÈ·Q-vH›æPŸS’'a‚~ÅCmG¿ëœY™Ã\Û˜sëÿhén÷jšâ‡!z ¤t7Œm+‘Ò˜uRÊj× FW«»cÑËÇ„ÔH>н ª‰¨n4jË Du½Þ‚{é>"ªÕ%%ÑÇôú ’s7Ö$W³¢j…¾mD{GÈ´4A ”‹â™ržÁßÉÛÔ Dûžýƒ&ۢȪ^ú'HV‡±¬$¨L®:ü\¡£êÃLn¨s¼A$ö´8À{´‡¯*ßWÜ€x‘ƾ1‰hìU#s¼±¼5L`ÅÖ kO;­¹Ë÷eMR?-Ó´yPlîò/¸sšdÇð;‰¸ ×¼´@YOKØÉ­bgV‹ƒ(ë¦à§Ü³ ¹Äf½çŽm|Ž ÔBXeû¨çMÀÑB=—@rpoWX¼Ý½Ä3ÚÎÂ}eüqÇU¾„QUÚoÒÇUå71áë†X cl„1^ÛHcLÀ1l.J‘“n` yÄ@Èäy°=·­•@Ô¦›ˆq4éx ªÖŸ—©³±d"®ôÀ¡#|¢‘{ æ±(Â*ópFL£`éQ²+À>¼5ÀAÜ£¸§±æ<}ÝZñi'h¹O`žFÁ>Ö¿Žw$p§5Â;\V»Mç¸br¹Ç¬=¬8Û²u×ȇÕwbuîá$î‘MÜÔ²whµ Oø ¤Ëf ®¦ ¤utà,iÜ ~Mî»äå6ä À=Ò"܃ä(Z†HkÃì;‚I%`Éß„„øÇ½:ÿ°ŠeüŒ¨™Kú@š }9Èqƒ,!¢ßb÷Y sXÅmÌÓ˜©³O4ÿ KD;¨‡†Ä¤[ˆ!5“<4 ¼¤ÝOñ‚Ã=iÕìL$öDö(ÜVùLl©dkòáÂ[–àÒ¦àH§þªoµ »Š‹‘So@Ò\Zˆ9$ùZØe.7×Åë«ñ÷´›‚Í¡é%Âiôäb"ä`è áòqàÛ¡ýJa|6åò/°ºŸäÎDÿ¬Ê[n£$øÉÂЭÓL|‚~&TtÐ…‘8¦„¶r0ˆL%v7kÉ=ðÚ8Ú=T{`É]øhÈ 4acãZ[Œ8àæÛJYC°ú¢ÉIšœMÞ³s²Ô|ÀÚDÝÿæe†ÅF•©á™£…>Ä3MÜê­6³µBA1•²—1‚[‹ˆ¥%è9Ư„‘Š\£8‹‚ö(Áœ$Gžñ®»_ºg”ØÑìt`¨Ñ÷àðÑt<øvH4Kþ|\6‹Rù2Ð<žP ÈßZìÄÞðØ9VГ^Á”y­’?³S@¸¬ŽóY ˹—-ö®#÷ƒV åÿ(™b)®ñ~*ê;N¬ÈM—­nwµo ä¨³7ˆùqäe~§#Yx þžD½–ÅÜ6ùbøäÅÞ+†åöÅþ£+-š£Ùëi6¸× í݉€âIo"ƒÇ8¤i§ñT¶w—›F~âNÄN8NTÿäP*Ç 4ߌÆÚÛ4G÷´Ù=IÒ ¢"á¡—ÑSרØìy“¤ ÷gÍ€›c©l¥)¸#‘¡ë†žÆ²ñùÔëÏ(Ëæ%³Ñ6 ”½½Ñ¶€±_;Ç‘Y]õµ³úƒèYý;eE*Ï3áNκõä7|ŸkJÃìk0Á}'¶•&Vøº°ŽëæUœ”s;PŸ[ɹ|´µÞ³¨ZÅŽ3+Öˆùu¶!Ò«îõúü.â‰$º•8Ë2²•° %æÚÇ]É|¢i1º-ÀÍK8HûäÁ&欗|$…$óiú$îÜÇõ|¶ãhZìõŽ‘ž¾FÑç´üU‘Õî‰Ú S–úw®ž©Y(í¸@gä @îÄÐ¥Õê®÷z¬~ÄAõœƒß$Úƒ cÍ‚>X#3_àóMÁÃÕ?9ƒÈv‘mºø—": $¼:p=^Uq—÷G] =»Ÿ=g LÔ(çR²–ÊõÚØÁêh:ªN)Ê¿·îï'pëÚµ0n±ý¹×Õ~œËvό䆛Ÿª·žºØ9‡¿ò ²‘£rÎéê€{ð|&í+Ö="UQÿªå$| ¦ZÊ.©"%·|¬dC”ˆ=Ø{Ьy±VF…‚Û;^Ä_³ü%‹šußÎ74áÜ(’ŽÅÞä~i"7½ 4û2ã§µ×ò ˜qÇ2Éžô²äû1ibº«}é…·éüEµ8 K<“Âß|N·ò¼¦Ãp/"ÿEÛ‚—” X5‘ªM*žÀÄý/ôNM½ùnû®'÷ îñYá@B<5f-qã, ž‰³@Ûä\Œ àxkLZÑ3ú­|!økou£^Õ´À$îÀ®¨»V÷ŠC·3ê[¤Û/ +m`b=óªú×ÁOYÇduÌÅ‘ó‰ì„ &Ì©öQhP^IB/6uÁ¢M3p>W3FÒ|Ť–µuV:ºÜÌž³å­­ÅҚܖ£^ŘýS)¢90{žðÐÛ‹X–­6•¼Žs_âP½-F﹞~{‹éfÑ:ÈÖâáŵµ›pÃ猽Œ¼ukÑõ—RÀÀÙÂýMVKÓè¶à™*q-wbƒÑ€åYÙRËÚ½äjüÊvšÂáódž @õ(|éÌüEЇ æu6ó"q+_Bú¦‰1“×r::t›J`Ðkk³„A‚½LÑŠd¨•|¿B"¹?tª™v)ºz±Å·°¦‚VÝJ–Öá åæ©ÁU8Ÿ‹æ¹G²3c<­ùYl¿:i-h ÆsåÁê…ÇAÐ÷-÷ÇÜÑt⹌ýè+¦Ýx`Ús_&›kÏR¿#¡ŒuL+wŸÜmow߆§2 šÙ»¥ÔÏæÈÙ9eŠ!x6O=þ|¯F Ëüà‰luæbJ¯¹®¼•1f½Ç¬¬Ãñ4:ˆØÌ Ì=€£ù7ñÀoz£òy®mC¹ƒQr!‘ŸƒQŸ:ÊPƒÃ׆>1ÍÞ6‹R–Jж€ÊQ³6ÆÄèßåÇ…Õ”ã[ ±;Ã`•a•z–"O+¯ ³µ&t=6^„Ý“`.§ŠÒª9å4óvG¾d¤Õlü4Ny„xõzüÈ<_O’ ÇÓB;•è¦âoÅô)‡DÞP}0ôrªäÃd¥(ºcŒ- ö‚aŒð5ÅÖê<”fÚ5‡Bmqz4œÌVëž …²žbr§äç³ÔÂÿ¦©Õ*° V•e©   /s”Õæ|uÈ/O¤A@›¸¨Ð»¾Y‚KM©P¯b– |¯¦½ƒ Û¸‚w(]oÒ56†¬E Ä÷Dz•å?-ºÇNºS²C´DìøzÉGð·0Vý{,Ùp רÚÞ^í½äÛ­æ`ÕÜ-~ÖØüXÞ¶"†Õ9Ìgáóëä绺,ô¶5È×üØö1Fý…å-ù‘d½½ý‹ªÝ‰9yâaØ ¹ øáï`åÔk°ˆ'xãÄ>¡O웡‰/1;ø 1µ¼ ¿gJþ=™ß¦ÈüžÿAÔüÞ óKMf©ëÞѧ¸)jŠÿNhŠÞl‚#ÜH¼Ðœ«Þÿ2:‰7Ff÷å›Í.¾Ws#f—*òk×Í.uŒ+4Áö÷z+0!Ë@tñ'¹+&4É·×^7É•âÇ5Å¿¦˜EØ&M²GК:ˆ;¹² k×Q3wI,Ô§. 6’·AñÊÛ±…OÂ<Î"Øð9}.]íÈ=•?Š•²½:½ŠwJ?Àè]X|)¥Ü"ÔõAÓ~pŠ8hþ¢¸ÚQï4ýëóΚ£o™ÕgèED¦ª0&‹g×9J“ÔÑûˆµ³½sWÞ…N™Y…Fuò^Ýyre?‰—m¹êûÄ)”H¼ú˜ÜÂØü¬Âõ燑cãñÄàñH[ì‡-kÛ £S³÷l;Æ9wU÷UKøpÙ"ƒ³X«ïæŽ&D¡ÜXÁÑÕŠ§µnòž˜c¦0¹¹d1 ß÷]EW¾íŽ¡0\-ë p”îßv÷ów¸/dô—ÿYŠŒ®Í1Îj¿ÆV1¹ûsG#3™È\PÖ0§èJ÷] ºøWµÂ eá‹JŒPüaÿaKhäé V8š¹«Z›\ÛCbù¤’Á}$|T³¤ÎºÉt¶û<3i¿ãXrã0mÇ:êñ[„•= ]¹[d/ºò=É7„.žJqÑ•yB„”öÔx»d·þ¬ù©·ëÛî,o×2™£ þˆè%Ë8’VíuØLQa<'±¯yÁë©×ØäMî[Òõ˨¯ Øä#&Ð]”KÔÙ sÍ’êë&×S×'0gsà;ȵºVJþ;‰&éóè­µp ô$l0íhÑ••ÒÆÚé޳݅1ÞZD¾}Àz¤¬lõO/“M´"t ½”¥”štçauz‰óXqîÙ—r"ÝsxU;Ù¼ªS\û˜ícP¹ØìMç M+ EÏî–üçÈzcÆv™§Þ»7ÞˆO6>˜žºã7Û(\í±T¼þ~¥¿Dáî—0ÐÖö ¾6ÆöW\_ä¶½ž“¥Æ@o¹:lo_Þä{ûþ˜ä]û_<²ßñe? w%o`î¢%øG©ºü%z;2¼òKŒZÞÞÕ?.¢7óÝO‚êµúŽ¢Ý£/Áí}îÁ¥3¼W «ûíCäv%×£N*‚Ð<÷wáµû%WËÉÏR[ߢ8P)b kG\\s_LðK!/© /=ÚF&=pc8WaÿÍVæjjpÆnõwÌqœ«=ˆóÔ— R%Ï€.¿ Ëã)¬G4|cÜwÐýWÁ/ÂcÅ3Gâ”;Þù OùIú”ùŸìEÿyÔ‹}wÎ%ßÔ“þ—·áxÊ'… sþ¹>¿ó õ ÿt‹<&ýN¬Ó$hø$xœSmú©–xlÐÑh½]åKJÈ)ZŽZ´‹ŽyÉÎ]³èJÅgðô=Ü¡êag.ýV~HQþÙ‹~Òðxß*=(ˈ’2|\ÔºÚVÔm_#•ø¿€ûŒï¹ýEÝiî[Ô+ãÑÑO¯V⟠7ã¾ÕŸgØ×|VT…a;¾'ÿ=@9?;–@[†œ<µ©.t¤‹bZ«•ãÅÐn•(©äþ8‰A@.  Þ"œÎ1Ø5áRåSP$:¯ufá}YÔ­9bH×MÈá¶”ÑV}ä9†Á=\É2Þ—£¦< ™ä0©h¥!FòcXöÂû0½º…^.\äNÂÔkÏŠÀ³îX*ü¿ÅC³Ž”ã àá}r~ÑÊØ9[WÑ%ßóX™Q]zðbçÌÏnÁRŸõˆiÙÀõssÔŸ¿ŠcZ ò=šUb3± s gGJ&|ÕJŽÁ-MÄW.*„ÑÁ™«Ý€}$ù~ R4¡õ’£ƒ¬À‰Ž°>ûGëWeµ{XéÚ•Ö–Ÿ4K>”nõ¼3òçÞ¶T] Aû®LvÂúÒê&šŸa»n"ÆZŒ©›Hߺg²\:.A?ÝSoêãè£;Q„m õœ°»xOÔb·N¤¯¯«Aâ þúð§Jˆb OÞŽcƒ¸\Ï öaƹjÂ/+O‡Å9–T‹ˆ`í7Ã¥?ð‚jÿiv¿û5”IJLdŽÁÀb(µPI9±s-d¯×ûxVD•£p‚—°ýÞ6«·uBg{¥™ö26 Œ=޹#l@ÊÜV™üŠó²2g›;Ž\˜•;ÚKµ’´ƒÐi,×âŽç’ÿ€<ŸÏ2i?³©‡Ë 1… óy`úk'æçy¹€BÈW›òµ|*ŨÅÝR;Œ!¥dTóÙ{̰–š"Ûœ¬3éM1±‚VíèPêj#äÚ%·çó…&M†eškƒz½]&¶W~›³»Tv7ÅdÌ•îj_^äQú˜£c8ENv>˜¹To™¯ÀÔ”@—. º´Ü*OÏUù1Ð¥ K|ªùw´oa5廼u£0ëÓÌ9ôǨ ¹Tˆè}à!#Ú.{–ôjóàËàý‰ø:wZø`>sY°uóÀùe¡ó¾0MLj÷yÛlþ£˜øèp³¤iæ@ó’§1kiïÅÎ9óçevе«±‹ÈPêËe=È’Ê (:ƒ­8Û²YA›ºç¡ü/S¹•OÄÔV±¬O¹Öl&·ª¯„ËÝ¡—c¡d-,õ©Ð?#—ƒ¯¤U?ƒïó¡O«"<-Q,³8|„v¯À-²wÄŽë"Ë꘳Eò½jè3¦ÔZSĈŸ½RïÀ‡!/•v(ä3 é@$È3#÷PáŽPá/j.v.Œ 9¦ôíqdu—ïø€Jj¡’û ä"±·q$ m¹LnSþs-$Á}†KÃLÞ{ÍÑ[s™§Uýq¤à,håóL¢6ò´Ê-ì;˜uQ_Õ½d¸AYLt$» k¬Iò;Ä>îZK÷J;öR“¼|õ㟅N=¤‰LÂy¹êûá‡â,O3ÀL†òÕMá7 š1„[;ð*Wõ‡^ù!E;O´"ít`šŽG DJ#óú4”Q2°Ï¼Î í xu[ÂÛ³#×¹<Ë<2e™å<3¦ ‰ì2ñ”‚·T}ë)¨‘\ )·]ð<Óœ›ÝÂ'Yì5ÒúkÐøõHt‡5ÌM€sN]ˆ€®fáøU¨?Á-ÇnÌ&éh‚Î;¶Ow™ñTA3z=€° “7£'šËÊæ±q&obŽ7¸g ÐÄü÷lÀë<®¬J³æ3çkêš™´·Doª²ÒÊÆåiò–|uäKÂÊ,¿¦É›³Ôéâ–»6qç ñ²\3›a‰¬“\µ‹‡8ôtw` FtWßú~¯6?ø%à˜ý9³¤ ÀN¹ê)U5®§UøùÔˆ¶ #Ú6ߨL¢mäŽs/^ kB5N»‰5ÊÓŒ^y8fÀyã3fÃ!¤é[óUûÓ¤hÏs‡õŒH‰iˆÐßH~RŸ êa¾ïÀùÎWMO‡h3¥ œÓ*ŸGLÖñô‘è¤;3ttÙŠý,h`'B¨¸ÔÚ›neólÜUÏò™§lÕøã•qŸŠL€M5t‚Ñü,Aš´lõ4³&ïãòV&W?F´i_ÿä÷¹g«ýyóê¿â˜] ܹ•M²²\[«Ýü62þÈ@q«íέž_ð‚FÛ01¶Ñÿ©›Tžã ~ݸ`ÜsV×Vl†6ÏYfl©™M´²ab=È%Ÿzh³·K~òumµç𥠷QÐÙ +{Þ&:óŸ„éáFc˜›if¾ÒÂ'âý-°slÆif£þDnô¢$úzfIòíA¼€/—YaAg™ùDÄBãKºs›d^u+ü‚¬Jßœ”BétGµçKoÕÁó¥¬.pˆÎ—Vc•  iÌ=h(½  ÀÙİ£Þ>Îf˜ê& ê"¢ÆÖMÔe’Müà4z÷&²‚ÃW®êüs§Z€Ž€¤ñºåǺWÈ@ŒR²Ü¤¾úc”×B‰åt9 ʦi|–Åþñ²Ÿñùv ª«Íð‹Ô9s*ÐeûÇKUm©EÍ\zužEÉÈá³ÌJÒšûõFu æ¤YnVï‚_&›u#$ ¼ƒáIi–ºô@,o£Í¾-yÎÁ rµ-mÊS7-  ?¨É­b³Y0O‘üs‰¸LM½³ˆw|Xðý,udiD Ù¤ç’ëÁ“@åø86s81÷UÃMþ|¥™†Ã£$¸O†á2J> ð7[=ý’‡ó<<‰|Z¶]&³åÆ0À'"ò¥Èc=E||à€ÃˆJ« )+ÜÍ ü¸W§àæ>|WoHG¢´³Lö>Wä‘ìŸn-²ß«Ó= þ%‰š¬#G}n>&rlS÷£e¼Iä=¨Ëp5 „A7ê![*ÐÛhè“"0PRDÇ ·%!QýðÎÁRPñŸ€ö¤Uð#PÿûMÈb‚®«Kðy­.(FK;,@})æúÖ… ~úú .DÖYK;Jî;•ûA·aJá#옒cÈQg<¥[wkåsJÒW4½€‚®Ö‰xèaŠ&ý¹ÖЩ¸Ç™óÔ®ÉáµCk®ö4ÍT™ù€¹.nªRòõ&œG`cЉœL8ÇJ&EL8ð ƒ!„M8ÌÒ[”~Ÿ{¨He­N[‡ö±ý1÷M€áåf«•‹ZÕÌ/zV»oŽÛ´ßpßV?ÆÔ›N²É½¦åq¿ÁËý:O;ajÆ#îÅÔòíQ-ÀxºS#†™Óò‹þŽ:S/ j¡eßÜc`ÿgOòeJ©ê³sAܳëaƒ§ÉŽóž°“<â¾|™l'÷i!Û < `®Ö@#¿ð¤?ÝBAq“ØEQ²5åYÉ[3’ÌmÌÓ†F´B‰¦8Ç{¾íhÌÓ®>ò"îÔ< ÈÌRï…4]¨ê*´å© ­² ÅMzdhÜf úø[&^§<ý Fº—¹ZÔ9NÒú‚NÁŒ!Œ|ûIÝͬ§ØšÖ(<xß‚v+höîMöžëIiæí”evÐ’åÐ]Z)ósÕ ~Ý—ÚŠ«=Gq¶±¦lP›œÍ*ƺ˜BÕó$D\˜€ß¥u(žÖ´Ó¬#¢s^Ô4Ø r_«:ÃØNÁ–{,?±gaÕ,n«ˆ9Úωž¨ná,ƒ«(Ëàùö|õ¿.%¶e©À§süóäõ©o÷b²–J’žâÅ6ÓŽªèkü…ú-´‹bOÝQgŒÐ-¿d¸´ç*ênl^Ì-Ï­ý4&S3@f ½ìóX2¹½$ÞWÍ:ÝS¥=Õðrbä僬ãíUP“´ç»Â“J§ßV2|*ú_aÔYiÏÞpC‘Üâ{´æLÙŸG›´gP¨XÒôµç°ØÔÅ(Š2¥Ô§½}› úN»3¥=‡"@yù{ ³cgØUn*™Rl,‰Ÿ (QÚSÏïÕÛf¬=+Ju³{ÚÜVè(Äê1àSQ¬ïã÷Ž‘ÛÉEg_&íoì]ä>R{»2Íœ­nò"ìÛSä6f4:Ú@VÌ~®šC‰„1sº=ÑýGVª5pÙÕ«• Œ×¢r–˜Yn¢% ¸Ž×îÑl¯ö€ö°zâIÚbŸÌsñW¯áÝ›Ä Úç#É=$ŸÙ€¥‡$¼{mÁ3èÿú|û«'… .IH[aRKžÔ¥SIÉKäËýÌÕ& îâùf>Ål¯]•d¯Å„í@ëÿ¯Nq!Ïø5?ö| ðõ<_˜Äg%Bó,߯%±'A• ø1Rbæ,æRù‡÷£5 ³½„I>¤ô˜±ùÕá()¶Ì툵Ηü(H”Õ(ì¯8Û³ñh¢ú_óôlǬN*ÆÀª…wÁsÕ¼…T÷<4 ¢º·¨ñiO-(f:cÂÚób¦5÷­¥“è]Ÿ§rÐ~É=ÍwH‚û^iÏE@ŽŸ…‘C¾#ä/q‹´§¾ËŽÔv÷ š½WâÜ?D÷‰f¯ïþ8F«ØíÄÈýfcPÃõD\8]9J;róÇkDvŽùšëùÀg€gƒ:Ñ%ùZA(cM*:‚ÀèjþàÛÃCIž1¾Ÿ¼Ž¤Ý\õÛ°Èçξ ˜F­ÔúK~ô}ÝŸ d¼½7bG )Ül¿{¤ž£h¡ÀaW¹0ë6¡iŸEk·TV‹3k ™tÅà?¢óWcÒVgK ¬ù+¡e;ö¹µŸ ø ]á=Þöyt¤ ™@:AÚÓÕ÷Õ}: ¹À-ÛŠLBçɇAoáÑÛú|>™#øúðz¿1fFq*h’ö¤ß„¤I¾ÿŒ%y÷¦ýñѾË©™hab7Æ£/ëiÏþ öŒ[^ážúIš£¾XÂÎáw÷ŠïB­F}íþöo 0O^fbF*vs¸€ UºÙGî±ÜYÏ.ž0‰9ëEKîä¯i¥}r\´Y¯¢Îq˜®LJfFl6KÕ<(Ü7Žq5ÍÑä¦,µÍC|Ôgî´"™í`µ Ä¢*;É*årcŠ\¯Éõy9j u6`¸ûñGq¨l¥ˆ•ëë¹nPMH+¶$·,õež3#øž˜:r…‘Ûó2saÕW(Ùª5½ 7Ë}z)ÝÝK JZK2KÉ€Ào¯…i;;‘ÖâyÉw7µݮÆÏ×ip?’P8§XHfM¹Pói,ÿËV VŒâ¯oÆ‹E6þú6ºÍ_Þ{è.?‘Ïdbù÷ðƒà]jÝÔ$¢¯S“é'A܈¬wSÇ’ÒíC§ŸUr˜qÆeñVgxkFuL4xA2Šd˜ ïC´eÙ@ÊÂs+hcßÊ=‰ †á&ªäŸ+,®·Û¢ôì£øó&ÿQæir¯Àç³lü6vÊ{6Á½„{lvO3RòöGWÓnãŠá¥%1Å“›¸ÇÊ2YÂÄt‡M¢€Ùðvù9>¾$;¡xüÌ/^d(ÉŽãËscñ±©8ßè7yGv¥SÀýÑäµ`EÖÆ ÚSj¡¬†;šRšì ¬ ‘}²:süJÅ>ô?¯«ÑbÓNÛ¯.»³t7°‹‹kêÍ5õVüñî7ykLö«,vi+æ›ïÏ6ìý²0ª)ÝÙ$½‚ëIq?Ç:¹#{p;)Ò>/ÙÚmš‰FdÉÿ).¢ùVÊõã²h-cÉ_CaìíËÓy4¦9ÛÔ²µDwnç%Ñžž8ÔØJ®-bWÏ-“bÓn?"ÿÓ´€à >‚§{Èš7 d£þ‘4^-A¾Àe+¿5í@ºË¶, ´ç’Ûù3¶âi&4•'Nb‰Ò lìŒæ 8|¬·¥«_=‹ V¦„OSn –y{ã䟣☦±‚öà‹ÜÙŽ)Ú8U„]q¿V¤– wùrM˜QòZ¯¼*1ø‡=ˆŒ¬é­6ÜøÛm”ÖYñâ\W¿cì¶JÄÜÀwh,‰|pàíkBžeº¯ž5/M똂€¼E¬]u.u`T.Nì‹êpcu¹ÀçÂ_™¬#{¯Eä᱿çÌb%ˆeÐI-ÑBh¥ðYMú®OË¡—ƒíØWG"„Ö›FÉ?Á20âѶ¤ ºÐñx´ ¤¥‚z@~î5R®G1¯A„Ä)„쀵{[šÉÑ0Êj¹Ãfw4*ž6É»U_5ßx—Š'1¤¹!“ĺY/Þ³šåŸ=o*’Öåãâ”JrŠó‡Krã‹ó ð;#®xV,>6g½ &þ€÷³.ö¬£ýˆ®c ¢30°•f>ˆr ‚òà £)´À–r(¥Ö~ F Ë Ã-c¤dv¼¦—Ó¥e£½çcñ›Á‹kškZñKá±6fõV›&áÚº´ôh€ BWIG›}¼8oÓ ´²)“ûÅ1G5—«)™™äKëÛÂáêºE_[×¢Ö–Ó¢M°tL@”h þwØîj[þ¿ w TÕ¾ºïÚjCö$ˆ¾† qm C&&rµÁúú š 0Lª¨HÜ.+ÖÌû*ÁDâVsÄíÐÛ‹ë (а>ël%¬3ûë ¼ÒÆ‡yÏvõ;Ȇ+f¡¥VâõTÇÉ/b‘qi˜æJ8ݶáðaѹ’ØCÿÀó¨?d©?ðà°Ú4ù0´¡¥Âú‹¬»O{õïÙˆ@”¯¤ÅGFW=nŒUÇ–õR¢ÝþðT‹%o"|ú{˜¢À2!KzksªÓÑDÇ?)a®÷‡ûƸökHR‰þ‚üÖõRñ¾«¼÷ìcébq¿L¶áD8Ö#2g=qÝâî蘊3YN†‹fuÕª·>ql?.n9J¿ý<í/}xZÞÁä$r”Ž?–üè,-žì‰£øRñîGá’¹|Ò:µ]IäòG¦¹Ü/ù¿¥,P7'˜v8J™¼¾”¬ç2̵֫½Î±‰(gAºæ~"ùî@?ÇJž ƸK÷TJÞ9H•o%Êy& x˜ª›Ü¢Ë=ÍÐù 1KEéRÞ¤ ŒtÃ4S޽©Ís*·Û Ú–Oæhr5ó4ªo?}=Ùt5â9Y˜o › ›Ž7$_;Iøé ɯÉ?ãò€­wÃà  S,2ó4V€@ T8ÿ/‹½Ü³e%;®0çv>ÑŒ862Ïaæl`½"ë,ûXYˆliÅ·Ò=¯-»“€ºâ!(Èi‡  ‡;#@“ÿ2t;æú Ø‹ö„%p'ñ~ÿÑ•ÿQçÀÀ1»0à6….*>y¬Åßà¶hfPñøâ–ŸçNŸb²§;^cWWü¾]6Žu'pÙgf1ÙW|ÄûécÜãó(*¶Œ¨ù<þ æñÉó…³smóÕÅèkb=LW< ¬±ÔîBCÌ«~Œ'ǺPL»õŠ£+—þ¯`[ °Û¶Í[èç׃·²YÌ&b7U=:0àöz¢¹¢‚û#MlåÇD·¿ ØÌ±)Ä?â´BVðÙ=ä Š¢ê¬x©øÑ6܈ÑÐî¡èïM‘¢D”ï$c\s`h±@aI&·ß´;|îû€J]JØžKH)ð`[,hE]¾ -D æŽ-DJk¹Ù¢¼•'Œ‘}@HSöãBwm5¤Ù]¾eMÜá+1Ï#·LÇ“ìÇE{KÿÜós\¸Gä¯+Ïq‰³˜&¹ÿ¯£8ÎÛ·\Μ› Ò•+îeôIæÎÍŃÜ: s ?æ­/¦A0½³ä6ó`Jö]¦¹½#´Œà˜Û~úBúrãñÀwþHÌ*1Òä­Š£% ¥vÿM¸ñÙâÆr Œà/âS’o+I<»Åܾ…:±Ãg"mŸ† &Ài= ;qù«qïù²Ãj¿ÈR—ÝqÜlQpüùWWHâÃý®|£–üf7²æjõÔâX³NÂ…–¼¼;:§ÝúÁP¯cÏe”̵/Ä¡˜3¬ÑMêÌ´bçÔ™xPP(Ósßùö]«‰ì¿8-3ø³&V°]‘[€!Œ”·û 'ôìÖmj’ﻺÒñŒÇÿ޲ËÛ$ß`$å®Í 4ïm:^Öt›ù ÷TK;šJ^øb„Ñ;ZYÇtû©e–âz%Å“ïn­ Ä{» +Η¸`4õ;È.¤œœ"P±«UZ÷û~È·7“ø´‰{vÛ=›ˆ«¯XUrkñì;ñ‹IS¼Wã`‚Ø)Û–ªŠÜª˜vÀB¹ºµ ¬µ—0(Ã?ˆ?o–ÌäÍ PÊM€_ö$_)  ¥¤§|ä=ŸÒËÕ† ܵ™v^B+ÍÕ¬ûÂ:¶™âÝr\rª™? çi çw¯ìÂ’²ýs‚°ó‰Îî4^°#ƒjw ¸°´Î¦†Ðci]:”šÊU&r`ÐwÊ£öwm„^`O¢_“üñ¦(‰"ÊF}ÀxSÛiØ]Í˧¡ù¡e çS}eŠf¥ 1÷zUÌQ,ù&u™¢Ð_ò%£ÖÝHÄÎá O~XKí:nÒø…‘øæ@h“µ¡•^¤ÎÂ6iÇí) ,AÙ…._^íÎYP2Ãs#”‰ÒDA'UžÐ– 'Õ®DŽÇjÎÅK;ªûíˆ"—õqV–žU,ùT¤©;v®æ¼¹ß86ÇDû@ìäÚOQè\{QZîÿ‘ê—‚o²3kÏcПµZ»xC¡ÛÎ%}øM}ƒïåÄÑ#¥íü žn ¿ç Œæ0çVBŽJ@èÀ.YdÜã8ý"8}öC"™ÎŠo XñØT‘cP€^ˆêÑZ©Ð»G0R²§Ò~Eò/žÏÚ,K` Ò/å¿î;¥uxÄä½ Ç‚DfúE‰ýV¡t|gŽæôJ»x©ÏiàÒüSkÏÒ´v‹i}/4­øªí¥j{ÄËÐ4#gI;0A±ÙQ.–Jn÷ž«.ºZ$Çy¯˜Vc|t¥ÍëêýãX݉À£š.§½rÚ¾!§%‚œVШ ᦙ¶-[xAfø[Ó~ÿ$.ÑfPN…|C&"ªÝBâJ"Bi¸£çþ«›Í½¼~ÅòÐÄ'c®¤¾s?û†¹$jî¿Gs”LðmÌ®ÝIdOŒ4ïj &n}àþ«„ûƒïF¡Àœ L‹FÙuWpUG…pcWºû6èŽ ES·@ŠÝˆ;K¯[äœèÐg–p¢÷:œ8ùM8±»W`áÄ•ëpâ­áaÜÝ0¾ÕMØ1V#Ÿ‹×HBÔ-ä9ÉÿÒÅÞ±-¥“[½gØÕ”cì”ÑU„sˆ´c¸˜o.oƒ)gãWLÛ£O8w5MLwmUf”дìvîi*IÔrª´£¡ß±ÇÓ=['/ýLÐJÇ6 ”Ÿ™û¥"¡¼íÊ„rOˆPþö:öß"”ë‘„ô4½=!èýº¸'­¾¦ñ YPê|#„©®VvÄè|#…dÌò¢LºçeÉÒŽÙ÷µbDbÂÖš"y‘ÀÖ©ýŽÁû¥-^ϱË3¹ã efQeÓt”ÕEÍþ” }Ÿ€ý5L—-·zÓ@6ÐŒ xb”ß|܉$÷¥·°c“Ò ¶R?–ÙJ,üŸV])’ûMU’†Á‹¥mŠ£ÕÐ•îØ Í$PÍ¿ÁÜè®íQ2îËQ ûðµg;ÛÏMZB@î¼Þ$„µŸëˆI@ïn½á-fÞ»òø:û­7b.¾Íºã¥ˆ#h€ö&†±·Û´ú3JÈšލQìéà;N«yŸÇŠ`’´£êS^OÒf §¡ ÑÓ±• _áÜE}>Œ¡3t •›JâCÏÇOA =ñx:ž7ŒÆÐó5çÌýÙJ“¼ehŸ]]{ŽÀvU é.Úy)ø6Fï‚Xÿ]¯ó Áu¬wíg¬^¦»Tç”ázæ¼!P ós‡Ž_þFÑ~d§°ºió¾ÖêF¢ý•Ž>ùÙ§Ý(ØwÖF6À€Á3W£¾;Rý36JõGŒ}¤zkäÿ«QÈææˆå «Ç8 R ÚGÔû;Èñ¨º#ü°–DJ£äk!uwÚ{nñcW— S\Ÿãžôä4S±i0ŸEí5K¿dÝ)½µ±d“¨ýÝdJ®ä®»«RˆêËáãc±©ÿ„IÞ+Ó lðå1xŠéö-æP÷ 1£cb?ª%H/þ “î¬å®Ý¸ïP‰VȽ±PØ~LòMA³Ø VŸr ܽŠ-å@Ïnï§]Ìê®§ !AH§L)PƉ¡³Í ”I´»n¥î6û'´´ó:÷cÞ³±ÌµM™ ú‡´½ƒ•E¦ô‚iž7_Ìoî(î}K;/²‡Ùö| ×!M~@بôÝíiÑ%!_¬Á†›ÊçHÜs·J&ðÁ¨.®VõsnØlÍ%i Es5E¶J( hP´UòSöæ‰aƒ Ê žofέƒÚ.¹Aï»Y‚Ö¾ØâÉvLOÀÓ§²ô°µïz‡,Ö2{]Í—# ]Gºp·1žÈ{=ÛãDºµ° ÓFîÃhòAʉ‚Îm§…VmþuûÞ[#Bî%²nÜqFmèð-Lœ J¾ˆ¶ÿ¬ØþfT°„v·Ký¾¸&ºáB#€§ØëÿàN†c¿8kJSJƒb—^°|$o%¼,R<{iÒxºô9+÷u{êÒÃFAó©6 (O§²ï×±Øe#5Ù–^ôkµNäë¾]ù¶>&ýyÉ¡ýõ&uSÞ äEGA^îŽÚ_Ïúú=Ð}ÿb45®/yÙ æw½Á€ÈËj /•!¯±Ê<Õaòe0 ò‚2éÛ¡@_T¤/3 ÿ °¿ï~èS¤ð¶zëbÓ=Õïã¼JëÐiÿë7¡hß ^cš—í|ðÚn â,­+„¬ïnjִµšs!½ø˜‘ª^̆Aí Ú  Úœ’|Ÿ!ÙÎΤAóÀa‰sÒ•3¼A5œ0×}ÇÐ+ÈŒFë‚-è¹™;6ë{ ]@ÒB»´Úk€õû|,í5O™ußÇs‹bÓ ª¥u˜¡9Òó×&½€=Tt£B¯Q¿<Ã.0gR¢H‰ày} F‚Ý}s?¢ÿ7îÙþÈÉnô³y”§ë¶‚‘³oð m̾aÛ·Ùô-Û²†½Bçš…C¨g”_û÷é#&±a‡ÐœlŽ´Ù –Ò^íúˆmy¹:­Ù­ÓšÍZóÏ^Ýö|»ïÆìGïþK]@‹îï^„Û¨]Ý¥½ú†`øãBýtò¾öësÄÞ®°_í®nFÈ~íökÜÕÙÕݳ"•HȦ@öjñ£À9±…Kä°9j;·áš°e×뛫’ÿ~¢]ÛùxD÷ú”.˜CBºs»äMDš8¸xö𾛬´1½»*ùjz¢$ÅíРƄ! - ðnîé­—ˆüU¢œ©íÕõã•ô/]{X}'[ߟuµæàþ,Z„ Z+BÐÙŸ}ˆ¯±†Eögdž|)ÑýJêÑA%vY-þ¨CÓBµÚ¯°Gľìð¾û²ïجá}ÙÏ»Ãû²×Qoâë¶kB8<›õÍÂa[O´Ëÿ©lxìf²áöÿ#Ùð«ëeÃÖÿSÙpð×ɆÏýkÙýâ£Å®7¾A>œú¿–ïøßȇ“úʇFɇB>¼¾³7Ȉ{ÑŠyÿÿŒ(ü' ¿~+hUÙ¬ÜiZóÿ]Ð`´èò¡î*'ù®~³|x½H_ùðm©z÷ǦË!ùð¥-ò4’ñL"îól—Ö)(¾Bòa·³ž ÖªdÅâyÞ‹¸Î3k)±‰Ïö H‰Ÿ%„ܘ®—G„¥Ä{#|°z‘É[¸c F!/h³×³‚h)Ä»ZÉç'’ÝÊR!&F‰‰èæÇû¯½"ÄÄ7‘4­ñÔëRâ¡Å5‡ ÷·3L¥‹ž­¦­]\Þ*c¢ÅŨ½¥ÿ¼xáñt×÷–n&/†ôÖE"[Ëÿ¥¾úoÉ‹Â-[È‹ÑÞº¼øÇÃò¢ð•ØrsyÅ1wb§c3å2“Â!q#ÑÉæVHX{Eˆ?n aq„…ŧ{£' FòâÙ(yñt”¼ø±./Ö…åÅѺ¼x½Cžä¤Ë‹×9å:zô¾ ¡Ü"”$üþ¨ ‹.cå(,~‘°¶W@«¸' -]X\¥ ‹Ï„œùVNýañfÎ|]ïÌwoONߊ‡†…Å8]X4RÉoôá²bÿ°¬øÉ7ËŠ‰º¬¸cÊ7ËŠí!Y±Äi)ºR$í¨¹í@ç‘~õö†èû8: ´=ý;&Šˆ~õé‹óAØy3³£ò€§;ô`§’¯S„M?…æòTú–oÀ¬‹@´0ë‡âýާ)v;}Æ_ÆØ‚~ 4YÉ÷ñþ•§1캕"!ñ÷G(„©§Iò=+Þ/‡÷ 1JÞ8œéø?8½Ü¸<‘;’쎩l¯´ã˜29ÇréÕs£Û ƒÐ*ycè(ÿacAý‘ ¦1ûKV°/ ϯ³‹Àδ‹4ÛMïÊC&rÓ/ •© ðwÙOZzFºáçD²š¹å¯(„&‡»}èýjy “®›8ëÀ­¼­tì­Q±³zX ™ÞGbØ^ù+ŒJn*aŽ6ÌâgÅ3Ý.³¶Ô¦^›,B Æ( s:³Ûk9âl²ˆHkÖ²EÐáx èþ1HÁgšJüÕ²±by:¹LâIïsG³=i›¢12¶}SÐÎYow–^@¿›ðÔâÁ9€jòêS;VŸZ%&jj7‰BW qê)j.ÿ•<À\0ÒåâýéBœ:à÷r¢·ÎÄÍéž$Ï_‡]HeŽÝËpW’ÝÕ@‡Ó´tOµ'…°_Xqkú2ÓŠÁ¬=¥>íhç2<Ëêãæö–ö›êÝk‚«Nì¢Î@ÏÎÇPcÿUˆxÊ÷Ücü <×úJ¾JQèñBDÆDŒï¦ d”[…@ ïShDž†pw_ÇÚ Ÿr’]n #–ÜCg%= tþ¤ð,yÔ|ÅöfŽð4¢)ò˜µüð¹ïÂów¨PK` §I.àÑð`}ÚÑàYq”37eýÄÕ”ðÕ0Ú¥Û©`aaºF±4-6­:0ÏŠŽ¡² ÃW÷‘¹dóÔŒ(”B_@%l§ 5%©Š "™×0B‹‡®œ+e‡O^££@¶Á¯%ѵóQþp øùá«´ðUBøªéjD^ÔcžY1B/oeÀ’×0¼Ù–À.Éøå@ó’uóE»Ä4OJ<ó;eÆ´ÈtG—ü"!Ò¨Ža0®ÐZ/4hË“Õ# 1á°+lÊ(#hÿÓƒŸaÇ/½£MüÃ’¯FXÍÚòQêcÅî!Ê,K¶2Ëœ­=¤5ˆˆðÀR(0‡ê«›‚q¥b‚[—ôKÇê³)V÷±%Cõ§mÐ |–nä”þĶä;z™zz’v”MIª›B©Dé qiZ5O±äbx)@>G§KÕ£¶I>Ô¼Õ´|÷¨ÆteEmVðTÝ#‚‹PD>.«Æ1æ`¢23õ¾lu~ç5Êó²Hò‰T¯=ï¡ßë¼ôeõ=l<žŒ| _m³÷jlJ2”âp CXžWÐ’EBÝ”dìFdöòÔ}…TûóId¡ÉÌ@¿ªR{çfèmš6w^–ªØ1fH«ˆ_ó½e?³7$óºÙ jÑ Œ˜ŽÓ¸=ð,¹6~"öÚÄYê³™ÿb·f^?‹›Ã³˜‘y³YüNæõ³h˼~c3o˜ÅéÐ/5~›¦‘Jxóìÿqk(Ÿ²Ý'—<Õ©ß9s2>ü£ý½0Gž¹k¼bÉòñaÑ£1í°¾öJëè@ÿUJ¹¿«¸^ËÉ¢fšÊŸS¾ÏÛ%­JdæÃ"*Ž8„ù³ …†¬Â˜ßlÇ¥4óû½Úo¶aÞ±}‰™"n˜þŠ×>2ÊhH–Ó¥óL| ~b?´ì^¸‹‡ßo/æÍ‹ÌIÒÎje¬×þÑŠ[àUxÕ_Ú¹Ô’vÔþÑrßÛ•"#Ý·µ±FÕÙ¿W«‹Ã‡8sëâ¶é—”0X{Ñ‹~ôd¯6g^°YSZ»ÝXÐÊYê¦ZÓ’¬f= kÝTŠš*휦(sBÍ#Ûß<³¡ÞphΫ‰„ld?¬ÄÔ#'D¤E^°ñqæ,Å ‘–;K•Ùƒn §.Ñã‡gSÔÅÝùjÝXB°1 HmH=ÈçXt0±¹6‚ÔR›¾R2¨+›üø7ãÁt³“v4p²GßÕÅÀãêù8Œmµ)PKºT£Z÷–¦?+ÍVK솖1JËOšÇ›‚;ÒΩ&¿ÑѪnª€b[±‚ßRÛk{0 íìðW ™c{ Ÿ4nÀÅ fø äqõGða`<–v>o1>Š‹Øpb1Ÿª)ùÚb Kã¶K;›”ŒùÒÎÏõعïTÚ9B±ÍW’òóI±Jn¬^R’vv)Ik¤«æõØ?–ƒ˜¿˜ãKɇ^{ÒÎ%)Gû+À†šÏbÙàJ¤"PØSñÏ0gÆU‹ôÒ:OSü?p¹§ÔCÍýf&(ÌêSD. yŸýffX¬Ù»äÖ‘ÀÊÉÑ•V)9ãã•Ú¿A?×ݯhpÈǨ‘xÉ÷`È …-i⨠è‡Oa¶•©ó@?TĉŠ2:-@糓ê¶8ýŒ'Iõ®LÔ@­ÉÄìØP?xtûY«Ù=4Ký¼?öTT¹|»ha`úä73iþ±êÈ߃¿V<Ûó ãÕ·  =P—xò-OÍ¢ybðýBÉ ¦=p†ì>–¾+õP×îQšª¼Ÿµç©Sî&æYø(£ŒsZþU—Äëùaü˜O«Î?G°»æ· ïâÝ#8½Cßñ2|˜n*{ -ùðÌ™F_‰Ò–ÕÄÅ@÷“\ÁÏ&¦s*Àfú·g«qÄYºûaWRç#­†Z”ðÄO^ÛgWlwßÚ·…“ïã™Óu×kZ]Ì­ˆG[ÉÅiX<£,º×c¯f5—~+ùñÀM¡¨Ð¢|…f*¯ð)n§0ÈiG‘N/: YÒßæç©Ö;¢^9áU`µhCàhà‘«!º4-+­C·ˆ5¶Àë1¥JC«fÀ)) ·ODç+QžÕ¸¥i¸â?­¸ÓbW'sg;¨W·án~ZŽzo¼¾@Ê0Ùô‘®vB“×…afÞÄ# „ZªjŒ×Ó³]²Êí!õ‹¸PæŽJ,bÚÊ"C®:ñH_¹çâ釳ԑ£ I‚'“ÿOžú-xÏö§Uû;æ»÷³v}¥áØÜ“`\î‡y V37 ,—|ãðéñ´ÑÊ—ó-SŒHÌ#§Pλéf"bµnKDù6ÜÜŒ˜QçhÂ*PÁÔ•ÕÖtŽäk2¢SÞMáŠ7‰ö~§WS<ß>³Á).5ý/”‚–Ü,õ”Ã÷kc+®¬¶UMn™¬ ÜeTµÉg{ÕDŠ <™ÒÃJ¾FòЗüfÚ{näÓLH¿ˆAQæ–§ñ‰VLt)ùh#Ë„V÷?áå4€—l™„Zêä·0{ÍY¸dS­x‡ÈOM\"O¬‹còÉÇ£3*b¾ˆ6{ר¾X0†Î ô=öIÉí¾Óì„;—uô bïýÔŒq¥ý ˜-é*ÈZ½¼¸Wò}Eß“|mtqä;G÷I¾}¸UÝ1µd˜ïhñ1ùÏÜsXs~BÚðKx¾?ž‚lž¹i·ôÌA®úPœ–3%w@·Ž»gã9§›õë>ƒÞ¯ï„úug¨_¶P¿„ú…1ÙûôkŸæØýÂ0ìØ/¹]ÂñßÊRlÓËìÌ”I¾êâùs.׳K¥_óý/êÕ‡7àA ¤J¯ýG1‰Ë…÷Ái÷«/6Ä,š§diEÏi÷¹û±Žéx!_IiÈÊQ·ZAò5·I^ˆÑ­ &RrÔ,u«Q§ u“’Èš<)ÑÛum…)“MJd§Èólü}ܹo éñÕ—Å.½ž}FɇqcáõÊoÎ_pAä/…}¾? ߯ï1ž;\z=‡áûGzõïG÷Þä{tcdÕ$rm d Ñ”nªÊ„.H/lŽÁÜCx0F™n¶Ÿ”¼?§ËQÙê4Y×ξpÔ½@ÏR§'Ùª›Hñ²ù,›gN;m?Ä–šôtvlzò²{øÌ7ÍéÓÍ+&ù59Î{Õ±b 7UÅ<½¯Å¹‡§›ØÌ_Žš”>/yi#k1«Î´i€Þ0ÑÄM6ù—£‚͘{§÷Ò5M­¨ KÕÁ£ôæ•<£·¸Ö×9|d¹È4"°I;p½u][¡ÅKJqlÌBÛú–ÌP¾õbŠ)êÚ¼ölL;ŠÉ y%©@ø84¯ÇšÉÕ…1ÌSÌö«ÁÇñcX?«s?®ÛÖA¢¾‹;«1]äzïÁüßÎe/(©qÙ3Pp#á©|ù"Tš¯î†êæÍ þÃ;þ;ò_á ‹´¤U‡é¨óksÜogEG«BŸ¹Õ÷ŠÀÜUTiŒëþÓü«G¤ÈEðÆPEüG×Sÿ³ IÅÌÈB)I}ë"ˆ‹Ü½ëtŠYuT‡à<_Úù‰ú ܳT2·„6œ¥< ‡¡=-×zÌy˜Ab£²@J¤p÷S‘?òµ±~\Ù”[]ý½ÐÂ}¹ssôû3M‹¼ÕqYªsMÅõó¶bÎzô)òÆ<œ³ËãCsÆð,%é<­*„múÁÃpï‰ÜSô“R‘[”6.å©|’ÅÛeGkËÌÚ2“š9 w#èa¬…ï×sÕUðCê7^sHð,½žÎ AÝúh°"¤/S¬þ…ÃAGBV¶ÿ*¸]¤þnÌÒƒO@té`~Ì,TçÏ@ˆÛAî1|¡É^Ž%ßg€¼¹Z}5¤'Dzà)Èß!ÿOá÷ô—º{…d¿×-•d22ÝfpŒÝˆéÑÜgЄCi]޵¿]Eßµšß‹)Òã!…@ìÇÀ.Òº'ñËò{hÑš•cÿ¤b; T1Ðq­øåG ü™’‚øƒ©4*~ç=ð»r ¿CÚ5튉Iî*X%®œ\X7åèz¨~ëV4$Ñ‘|?Äj²¬h˜Ì2+–¿ògF)¶åL…"É´Dã4›b:Êó“•±/Ø?bÈ:<ñLÁ_îÇBv¿þÌ/ž¥†ŸIëâãQ{½´_ä ¾{»ºêÎ5&{ÍÒabÈ:^GfE”d"ÜØÀ6øËéÚ¯±ªdš©?™"ñ*œ¨¼‹D.»h6ùcÖÔö“öd'ºí‡–¶¥±¬¬†xœ—a5ý>æó¬¬<‰ÇÒŽvVÐÕ1^†¿ÞÏcÙz|W`鉯åfV6“νÏǸt³ãIÌ» ºbψwßf,Ç—éTßÒÓcè7x }öüÞp$[ÇžÊ+½BøPɘÏ'ï¡ 2( ÖÔù§õ†ì5“õ+ÅuÙ[…7ñîx^ðULìý¼ZpÁÌ~IçåÿŠ‘ë^hÖ¿Ò¨&o­U£ŠD –ÕKÖW 4Zµ |­(ûzÑö:z=†pƒ¼ ß½ÝB{˜V{>gþ,ú‹r…¤ü»%_fèÇÆËñ!n§”áR¬˜MØ@oš00f)öOɸÍXŠ]¶ŸXq·ø„ϰø°rªX¡Š}¹XÃ\Ü åí'–çeT9@›ü_ʨÚ*úûW¬mí—èŽb¿$­Co*>Õ¤ØR™ßJsu›½VœmÆ|AUXñá”O¸‚o™û|læÿ èðruÚj/ÇGÒúQ¤—gPó+rZ™:Âf¨'BJh:%d)/û$íxZ}¿ý’Ÿ¢Šß9 ©q9žG—ü‹ñIùú «|;†>3õùlª¦BxÄüí9ThAt!Æ‘%ï*Öüg„ÿg¢>_—‰zÑ¥…öcœxusѪAÒKH±ì5Ò:.².^F9‰ñr,ËŽÆ*«n×:?ÙYhȆVE -[ŠbhþõW É—&\E.(½x¹ |TuÇ5­“8Wð/3×û¥^®†“ 3sÕÚÎ^mîB¶?哼\æ‡-œ†)cþ±p‰óˆ¿(žK¾×{p‚µ |¢NªO„lå >)ÊBl[§ž…°‡W‰/Å–ïãL1ÓjÄĶ/;9†$îÇ7ŠÍÜy\Ypë-áäEZ…™@‚Õ輄öñJ‡êÙÿÖÁ,¬1Ký+Üè]{@…Ù ^ p Ìè~"‰ÃÂΆiÎc¹Ó2ÆÊŒëm4¦òi£ÖÖ {§’5Š ÜŽO¦[à žXI·&² ‹g Ùýƒ Ü Ï%:ûj&N¼Øù(V5×mÂ=”½ý?´±ºB“Ú1ábçœy¡çéÚƒø}a¼ú <Ÿ;'ô|ˆö ¶W§î§òÁ¿âÞ>b40÷»éþ)¼ß÷ÛéþI¼“u¬}é°3ä´WJu»°Óntõ'Pñ—Íœj7:ÌJRš}/ó†»å± Y)÷Ûϰ*$Ò‹[¡ßé²Ù=Oî\`— )1'žð„|‰S)£Çš^…¬xšõ²o›yŒlÍË×\6J¨·ò £lµ÷º1¬¯¡‹ía¿Êü(¾,½¯”ã²– °_,V(ÇÉ¥ƒJ1Î-;Ïí—]šQâÇö«Å†eGy~&ÚZ¾1œ¶Àj€þâ«àß¡ñ¨–-Ð5û™åŸìHåzƒíÜßL\!r¢l=¢ÂÒŸV#=ÓvYÌ,%TTŒ±Ÿ¡œVA+šû¼¬!ù¿3º¬¼ŠÀ^†4qŒÇõQcÔGÏ€Y6(ø(Ø eòõB¡×qðið¼½ HÞ qj¨œÄÅ+‘˜3@íå „+¨~Û«Äõ—1ô•NéÔ+{#u°.t?"ÁŠÑé1T"½Šž¥{ÿˆ˜cæ~ŠKNhÄy¶‰•v•áJ•J_Û„ìäU4@QE¬ Os*:† ’^†•/ŸioX=š—S86„=òqé½fFo˜BßÿŠWˆ4™%è)Í»ßÌè £ÎĶ5L“'RÊ,(”š>~ÿe«¡—UèsDÇP¾$G(X]Ó$ ìèƒ,¾ï‡-×øÇµQà¿¡€¾¦ ¢â §â™`E/˜f†±­¬’¯œâý4mjµš¹Ë¦dä(c«êÏZÍÞn3åÅ@¥· ÅÉw¶Ï;Àœ‡™£Aòý‘6ˆsÏ>ûT³´ÎKÛD+ÌÌQ_çh¤4|Žf¼wµqW=½hÅüššÈq1¹¬5­ýHqÝØX ÷4Í(1=2Å ØÈêåf€©vê—ö<gÿÈ3èÛŒýFʾ)Òž¬8ûñUí\n­üÞ}©º3Çä-‡¹¼¯Nœúë\®·,æžfæi…ç䧸œ¶IZ`<A›r6ï!Oæzo‹™=W0ù;Šk>gǽŸI¢{ãk>7åîj~Æ-´‘‹ô×+HˆT`ŒT`¨ù,¶ß…#ŸËIì ëÀ' ÜUZâk>7ÿ ÐÕÔŠ½Øü;6ЄNJ Vá‡ñWqÙüG‘É`³RpY8ë×9Zp"½Z· VÌöjf÷#Оèļr-3Jl±ß!rPq^=ùÔ2‰u”ô‡*&šb?µôHúÑ®Rö±÷|wÁG¦a0v½W³Ê‚:á~'@²õ‚€Þ´ͨüððáÃÅC:?Åx‰Îf¨‡9šäf:sŠÁ,qpèÛ«ûGxÛ’59C«»zB5 ¬êƒßÜÙãÝgvT» hzÿâáÉ$ûÁ¥—X™ˆB|OC¥yÎÕú5‰ïK˜-ŧª?7²ãŧ€$Unb«0ìÝq|ÇNèã½ç ¬b¥þ†%°*7ÞŸ¡WÏÀ¥´ãbñ©†ÏYÕìZ6À*ž¦oJfKáMƒ·ÅÀüO£â&¬Deu¬â),^Å¡*>y©úóXqϪà_ÿ,‘1ˆ¾½™n¤dö + P¸–’É’¹Ø? ï'J°¸ì‰nœàiú»G+¶L^µK˜^E›Ê “T\@– ëªA&ÐðŠÖ"”FA9½›<ÕJ÷%#“WP–=ìãÎ5_Žx¢ßÇ,cˆÞ5Ñiº¶wybY—·:ùQ&zõý]½k€w ð.íô£1V< Œ»D» bå.Õ‹*T´ŠÖ{«ï÷¶ô¤ìS&’x½-Ç·Þ–vû)(pJY›ÌÊcK‚7\teÞŠdiO9Ádl¹ÀÑŠ¢üТ dãy¤ŒØA ÝÜ´ã Gî}‘ (ú-ŠÙæc÷" «å*k2«Â†ƒþ,uÖ@<í±Pòa¤ÑÀÜhòJ.^0È‚ð®ó#öç]׋“¢/r¼¨À Õ '¯isgq;ñÛ¹êvr2çÍu ì¦3–‚*`J¾•á@؉’[Šˆ‹u*í©•^| ÊWކá–àq«A<ÈϾ‚Võ âƒúŠî,VÄw5Ò‹_<¸¨‘ ;†qÄ·±‹OêÍ•‹ÏöJ/~… xI/êÞ ƒÞÌ­}ˆG§´-=H ¨Üc¾÷t©•ÔÀ]¨—z«ˆ52Gç»nã V§Ì5„û‘m`8úÙ\P`·Þgç˜ÄQÏ£AÁT º„—/Ý'÷ž1ñÕ÷0ª¿$ÁWí–2Ö¸p╸yúšàJø}p== ?[€?+Oõƒ)•Wqù¼jª·«ûx…“†,žæ¼Ÿ§z»û)åxÏjVÜɇ(c™´#V™ùLƒ²ÔÀv,5x¿Hõöö[~Ž:PÑ¢ôQ’ÏHŽøVnð:¬&ôDÊ-ˆC*ÇkïÞäµWÏãºzbíU\Au~U_çÒºŸÇ„î‰ù•á•ÿ(°0…>­¹?Úk‚SÝŠ;1™UÐòqãÜ®«¸Mæc΃¸bëF·¸†Mâ"É7Ë•Q…«bõe![ð¿sÕ´þtJ$* øÄMbhaæB¸ÀPĵmÖx@$ÑÑ0BT†¹ØvüÑ™ˆTkøOŸ@h ¹L”È@N<=d ÆŠ”¤Ç‘éTaUö*|"½@‘ðˈà–m¿ÝGÎ*–` Þ+Î 4¨ _x?k7œ±÷Â*$ª_H¾óh:Yˆí„šW`ÑKïtî%ËuÅpç6/~G\uî%ÜNàt·Y|•Rý’ï—x·¢<¥ •/:f8•£Uàp5ZbjNCLŒÆá‘M5‚Ȍ޽©EöÉOY @¼?°Ã¼¿ËâYùkDX_#N«Ì° gyïùvVµç»0&_=gè…1aŶx°b)Ãwݯ޿YŸÀfâmíöòÍĺkHÞ_Ð+1]6½¨wï=|Òeä/y¶Sgz‘ª˜Ô.–‰‡/ÐCte¸šäûOâ\ø†OêRL/òÜf>°õäs–ö€àhÆ l!O³½ ÝÔ¨gbÒ^j=Õ®àÓ¥EQý&`Øé~Y»ÊËè;?ðMoWœ{üY³ ÷h‡ÂŸ5‹0œ‹·ËàNø] ˆÇn;WP¶åi^?þšØzÛT³w¯ET¾ô"; (Yè×AØ;IxWïé`­·ËèÞêí2ß|­îÁô³æ.oW¼;ÎÛ• ó*jp…‰K¢M3À–™‚ëEƒ$€ ¦œ.×ÜûhFòãqÐÐWfþ„‰ZØ6ÃÄ–™ÓèèI`Ù²ù².žÛijýE„q=~ä ÃEþ×µ!v­½ë^<¥âéBœ/ãïÅCÝ×bsÆÉÿDOH/À™¡ó¿Áñ³•uç“vH‚ùI;VèTT™Û°âۜփ’Æ+¦_‰2Ê‚© ÒŽÕï—©^­ßòÓ¬ Å$ŸŒ¨éê1iÉ!+–QP]Á%÷~qèV;¬seæÉB"ô¬$!èô|¸*&!Ø«&g֭̓ïBŠIO‡p‰<Ÿœ¯NØ!’s%_<”Qfõê‚ÎRãHjp¯ • ‰œhàûX0ÄäK¦2îŽaÒŽjÁs¤uxXFY+­´ã9}ˆŠ`Èu€Íܪd0eæs  цÃ9¦\&¼ì"ŒÇëÕN^~9Ä_HnËHÓ‡‘ÖánR>ù¼ŠÊÕÝö?DfR•™ÃûÂJ ɺ”±î‡¦“QR²”šKÈR†ìŠ@ ©¦$I¢Ú0Ì€™´uf‚VlŠÑ$´BšÔ¥C`ÂLÀ™+ †|Úz˜o ñémÿĈO+X´ÈŽóEX¢†Ÿ>ͨŸû}o¨7$Ûýªã ç„zFò—˜ÒÛC¬TÁl×Íè@Èâc21*@æ¿/&­.R ~ǼÁ䢫!Áo]ªà`¤‚"¬`ñE]Œ¨Š!QÒ†‡ûÒÅøwÕ‡ñƒì¸ã"îÆz"˜z»¨@ô‹Ö-ÿ*¼*‚ wÃþPæÎ—|á X^ÊËqÀþÓuþQðÛŸd·0oˆÇÊóMì8`¤¹æ‹S‘Œ/|‹é­ ¢èF~…U&âcª°¤¨Æš‘\Á7°š†ñ Tüîz•’/++£Êð£ê¦èWMpÄ ¡5ŒýÄÜ1èªIËMkåÔfJÒ4 Sø’$ZÒë·‚„F[ ÿQÙÆË­H¹?¯J¤YvÇk$)U@$:öqªPU|”»-‚4×iîÅH*BHÝNê:_ê­»$zj ¢ËE7;VߦÑUaª&›Õµ(ÌaE ·èAí€ü/ˆPùÁMUydªê’ü¾Â&rR ÷pÙÌý1©xÊw¢{Ì<_ïcz~¢¾$—ÝY o€«hSm™0—á©"ôГv4åæ«÷Ö’[`Kaj®:®3çm΀’ÁßÞ›«ª%-Uò¥À#‘¹¸ŒÀzÔ=[jKŸš¸lÐþ˜1Ð/m’-p Mecòƒ ]òáÁx´ÎO´¥O¤²ÉÆ7ÅÀ8§…É9Á×oW2‚+çX¸"F.Jèêý#ÞÆ0 )È0ú¤K¾Y´ùcæSléS`S b©obìxÙh1ŠaᙌàÑ $Ëž–ÓÜîgž¢èý´å‰ýóÑèxìÄY̳˜¯Ïa“ä~ÒŸDièê†ç°3úpóÕF×Xˆ­†Á›‹MC »nh¢³Ã= &Z¦‰ž‚íù24Ñ!0}æ»+?[}´ºW[¸(x²05_M«Ö'w&|üMá½yêp|„GìH´Ò&’UÀgxŸ9ƒák¦ês8&滂æ»CòmêÆRšoZCçi¾sƒ¯k •ˆÀþØÔÀy¢&I:¾¬G:vq:¯§h©UÚé¢*ìiã^ð(‚Þdú{ýÅ U?ÿN—…ÀhCoH¬Ã}/'YgµŠ9´gSh Ru÷h$ðÔ/’Ô"Ć bÉÿѪV(ÏGÎI É*šQ“SŸ§þý2J;-(*(-¤ 4w ,¡Fíô•µ’bê'ýŸ”X•é EWú‰xÓÒž‹º‹€²°Á½ äëߎÄŠ3Rø¸µŸârà³_…§ì£ŽMPbµ)uþjen¯{`‰eû¤Ø’>Ãß!_bôNï“¿™ÄÒàž'?°VêŽ!`êIè4¥•F‹‡«•庭™äÙ_£´ä²òXVƒòRM`Sˆ7Å¢`txrcÔýë’<9´åGnÆ„ü¿¸~LÒ>MÌ¡Ç2xRªc‡ Ñbžêü˜¯wpÓ¯qC&4¡¾ã¸ý§ß¬{;|ŒŠ²Íã>¡«áUø1îßáöÜÊY(·ƒô"t¾ðõèUð0zU´ XøvuE¡×ŸºúrTå‰[ú‚)?Ü$…@’«®ÆøþšÊ†>ˆUÞ@3Ø…X ±æ5]í'ò’î&íéöw(‹b9G€â¦<ŸÂÍkÏ ÄzïfˆÕø ˆÕî /ÃÎÚË"ˆUŽoÜ{;ÈÅ:4¥‘Pÿ[ƒ{ľœ_Ü–€[sCäϬ—l‡‚BûÑŸŒ}„û–¡™/öé> w ØªuX ÄtÿŒb#íÖu~Êʬ´ ñ/îØù-p!7¾–î «ñtLD‹ˆe©Woܲ mè¸ïDëžÿÌ„bš“ѧÀÔwH¶Åè.¸?½Ãˆ«%p ãL”™Ä„b^=§øN«´“Œ…w{BÝAóÅ©·Vê,‚¾|ßUŸ ýëØ™K ó×Ã󮬖žÛ:òé’¬ûÕ a±DAéºæÓXoË%V†•”ካ9kìW߯¡DI¤×&oËÇ%e6z'^XéfT))³Ð‹|QLíqjDÚSAòù¼üÕ¬½²cHÌBÒñ:[ñûa¤VÑŠ/•Š´áR¨Â'JҬ¿9¹È}¿ÿm‹>+[ÝRILy·~.˜½SТœ)°4ÿz\Æñü9ÞZ=`в Bv¹Ma$ܬ_eryÏ·c10×®³%Ý“ÔzŠ?¾\y-,7y?MH9DYó¢QÇx¦Û¡9­=ì ÙÞÀ?zCѧ÷†¦¥'­š“¡K`½ëJ…Æ©) 4åÅ4]ëÃÓUª_IÅ¿‰ÁóÖk GÈH¸*´Qé Át O?ðIb‘¢¬§Á  «ÏÓ{{Û§è áÝgõ^"ƒnÌ‹çB#R‡lA–-ºµHò5Ã~í Ù:¶è¥þÑ#Ì_2Ú1þ“È:6˜[£ø±±¬Âu[ ÅÑ—ô¨IYiâôZ +ÃÞ­¯”?×Âib7­{÷X%wˆ '3a|Ÿ¶3Z` Á*+_©Â*tC-¾¥á¹®ÿôÓÚwÕùê·h ݯK0¡Xƒ¨(ãEÜj[}ÜbåÀ ô#F‹Ï_²šÓNº(7B•Å6™û‘§òd4íKF'ö“V´2ðâW(_a«&QÿìÏ­æ5ýëcä ¼yÛTˆÉçñ2âÔGå‡y±f´8kO!دÅlx`Ç?‰GÇ/ =fÛþ)ˆ× ’páâÛ%ÿy¾€Û cÂ#¯Sù–o ü^.A»¬Rf‚ÑçhèÆ£žø,ëHWQ?D òFvÿ ,¾ë_ÿÁâûÕ#“ïÃâÅŠ 3zEgôUûH"v¯»ŸˆNhoÙ}Y»¯ vO€Rµ…žàß|b÷eÂ'ÃZiwȰöLwȰ¶²;dXÃÏ‹ª ’o±¼RÑœïÛÿ†aMÝî_Õ2¬QëhXÞ„'‡è&YŠðJ˜aF×Üܰ†°Öð¦a-ï“°aí±Óÿ®a N®7¬ üä&†µÆ?E kõÒ kçþ2¬UüI·½4ü]7¬QN_‚ì×ÙÖtÛZmî’oï×ÙÖ6ë¶µWn€1úŽúØÖæè|"0•lkxè¯ÛÖJ»ÿ}Ûšp*îÖmkå4™§£P)Ú¶FÓSAhhžR¦÷3d[ËýàklkøY”mí¥fDõ9ÝaÛÚiiÃOO"ÛÃÍWûE×È=yƒmLY7ÚÖh®Ñ¶æ¤¹ž€s=²9b[`¶µö¼lõÓ­4åd[ûŸ­ú”·ŸÙÖj·êSþ÷ÓaÛÚ3Ýÿžmæûß´­X‰ m­•Hô*})2š%*A«cBj@FÚ‘v ¨ w‘%BÏ\õ“O=S R»ûØçR ÆF!fj÷¿¶ÏýqÀ¿eŸû ˆ96Ü^†µ—¥F³ß ¸VõµÏ¥ÙÄ¿Qö9ðìs‚ÊGÛçô™ùzûø_Øç«‚²ZŠU±VÅØù!Ø¡¤Q„D@^FBáÑ:H„ÒðLøj¥~å~R÷(¶Í§´´‚ŽäîÄÕÓŸ?'Lz„¾¬ Ibà‹¯Â=X…=XÃË… í»|Õ»&QH|ØKE¯w¿5ƒ6‘—=)ø¥¢±´CXÿ¾Ö?å)±ò¡6OÏ)ƒgUÚ)Œ‡ï('/d §­»õº‡DÈ„´h%o÷SuÕòQ¥lËîÃ^í3Ë^Fì4•Ž ~$`JöÇÿî ˜ì¯‘VNã3­©i1éÞlµ’ÿ!ôd!U…5DTiOÙ,Z¨”(8A%e¨M”P'½Ÿ€ö{[ GZú,QÐoº_-<,!F†*ÌÙKð¶¦Åˆ¯WF^»»… söcz×ï`¿ÚšmºÇ$Þ%ÊÓT(¡_-÷cÃý ÿ`!)I{”'º£uT”Š©oºãü·5˜"zRÖ`¶YÃK/ D ñØ7(3ï E…» £^ÁŒ*–]J9ÕªàßÜœàN^åHé÷#®+îîˆs×Í¥¿®ŠhÑêæhù}蘴ƒ¸†Œ®·vÃÎÀ#ÖÎÎ#"º´!ðqD Ckç²²v¾ÿaíÔ±pÕBµ W7KKõÄìÑøÌ7Zì~vÐT¾zNØ0Sæ¾²ƒºÃ•úUÎÍFæ=ߎ¦B4†q³òÕW>¼ÁHJLñ‡!)äÓ£}!ù§íÿÒHÊéd0‡ª4RȪþÓh$å©?êS ;ð‡úZÈèá¬Åz“=Û|ÝoßôJ`¬2’n܄əä¿jŒºÎòˆc£iuTwÈ´ŠYáyáÖQÉOñÔˆƒçJ¾ Ä‹qÉÀä0D¥~ù«˜©˜84­&zŸGÓ*9YBª$• ÓjrX>HiVªžÆnÎ%1Š Xç:<“ÏèWù99J¾ô~Šr¶ÿãiué™KöùÿI¦U¬öÓ*¶˜B€—Š)òl™»[7­Þt…ÿë¿§|ÜÒ1­º»u+¸¾ú"œ¯¾Ø§¾ªQbÉúêã !ä™ßáé€ð-¹•QÍeéÇ– ¹ß|6¬®?, «O‡U)aXµ^gXÅ‘†ÂvhÆDkßÚ«Vχ «3{CJV±pȰZÛ’…^áï`e h®ž ÏÕSW¯·«bùëíªâpÇÞÈ‘òA&yŠêʽT¬^öÕšCÑvÕÑ®úËBRwýE-êÚU‹hÙŒêŽØU©”rú»j6˜W£ÐXr cÔ9‡¢íª}$쪴8t»ª"†Ô±«&éMqº&+›v¹Ïdø«¸.³²™x[~ø É(g„<\çÇJME¼ ÒÊ™ÜRW ¨¯îÑ“]Rú:3ݔձ²dìËO{Ócž]È+°%N-¥€ä±úvî¥(9¹ºÚ×.m¬•v|¼ßÇôÅ]Üßû«åÖxLÑFAKacçŒ&p>WòFhÌUï„‹…Á×sŬÀryêV(‡  /±Às­¬&åRŠ]ð]Œ|?î eŠq_†%í¨k‡µÃ*`N +Ï Ü»±dÂuØýìœ|è>ŸaK©a3ð>«¾Ž·„´)ÉX|¤:‹Ö=åï¶Ö96›ÄÏkâg£ø)?-â§Zü`àÿ&Kþ5ÉQž9K’I}¬é¸Ð¹O3ñgG1ÏÖðÛLñö7̳ᷩ¨SÉD ÖzZ"É÷ üí˜8ÐêàˆpþGÉw|}¼>žË³L|â=Ìñ—ß(‰÷UK¶ÂÛŒ5’oó4–ckÓG„ˆ3T5lD”’#ªºªZ„ý˜0–96qg1Æ5?9¡´ õì¿ 'KB¸KeØz'Ü @¡ã6;°¬ •É*ó´©gŽ„ŒC>)‰BœŠ ¦]w@s&uëW:Ù^Šø,ùÞ¿ƒ*å«Íܸ˜[V®ýb¨qßú;hæ}ޱæ7>M?uî| ß—Ò~@5ÆÊ9ÊçšäøŽ –,·“¨{ƒÆŽ)–dù!ÿéÕ÷ë`@Þ—+tâY›©ƒö&·DË0²YÁzJŠ$ù^F–æ)F0ýu6óì9|¢5}¢Mò¦c<ž˜{qyU›ØD«æXO`Û#òSÈ×Fî(!»G»6ºWЬ^ŲùÌ,> ù0Ö»uÌQ»º}w‚¾'SÜ#õ~¿ò½ß’2|cÀή§¸¾zÀ¯1×J7ê†?`ÒŒÌà¦È†ÜÀb3ÜÀÒ&Ú‚ÿv\ÉÏQ;K{µà îy :+í‘0å¯ç5÷#}ú:<ª¯‚+Ü×úÀš¦ÔzsÿææŠ©¹Â{³Õ/~dyéþ®ëwïÕw,éÞõ üðc˜kYÜã »Àj–eêbƠ䵄ØXðW‘ ã@¢ þží@F–MR¸ïBCW^Ô÷ÉøýèÞ/O‹îq=LŸQ˜L’!Ð!î?{>û=eÍmòk¬[*®OİãÞêRq\ÖtÅ)?Ö.Ng‡w[R³‚}týY;!×b™ÜÀ 04Q 6Ä¥RCwgí¢8>AxŠ,BQÕÂÆB¸²Ú›YC“ü.ü°à0;ùøÊ{e§Q(•œ² aø²{m¢[67zƒ¦Ç™é•g?…¸£ÔÐ%LJ^'2ŒÓTšv@1Ç JRñ¹!ðª;Î~Ä34Ô™pŸ'fBð,fWó›4ÜP¦Îp§—á•qºùqûÇ«¦ð*|‹ÞÙPŸgⱊ¥œ–´gŸ2ÖÿdÜ`sOM öÒ;Üq°ü¥†[bbà×Wq Ž¥‘•ã÷š³hmV›9d°yy€<¸WàNá¾EÞì ¯Ó"¬çýÓPƒ½3\?¯šdi*û>hÙ ÜR êô®à·RÕ‚’ö‰·c„äï²"}\=Õ§t¥¶ï÷$rËû¬?—'1j(¥–µýÒ*|*…†•v ¥›ÓðíG˜£Ñ3 ³$½ÏnÇ2ŸLŸ\XÕ–r•]qêø9ô©*‹ú¸ð\Þ¾JÖBf̹ЩÂ8õ¿Ú‘zÎãÞaEÐYІ?À›ñ—‚$,Eeƒþ¥DŸ¤Ã'óAIGb–'!݆‹%ß¡Aâóć?¢dþѨãô¯£_²´øO3 9ETº)½ ßHJ&ܹÊ@>8Ū2à጑åøÃ•Ñ4øwŒ‚O¼uquŽæÅÈ*•T¤vUi$õŽI³´„“ ³x¾ÙË*Æ4Fé#çŽ7p?H“ßÐ*°.µô6.AÆàÇzrú};¬å¥z°–´£Ày6Ö‚èS6™–Åãi—ƒÅŸ(dhãs&mlÓ_g‹·Öì?¢v÷¸»¿×Ó  Z("NrN—g¹FÓÆ*0«w¿ J/º‹bl4É·/]‡•j%Å7…ýõìôrƒúáBJ¯ ¯q[(P[³¬ÓàÂÙ¢LJå¤UX¿½œÚJXUBüÜbPÂqʃx ÏcÉpÖ¶°á˜:ÛOí„Q’r/¼)Õè&ÒјáŽ~Ø?ª£sú÷íè¨oî(‹‡æ¼]  ~Ù17Ô3^E=¨ÂFWyyβ½ ï<üžÃé%´abúô¸Ÿ±°OßJú…û6§_Tßæ¾}Ã(A7ítÌÛ5võto׃ì¢äÈ\ã_ħô¤;¶(y=îÁÞ.»äK€·ðÀmÌd±¼œJØ2]ë[ì±’ï^¼Œ‚èêÞÕ=©Ê”É÷9Fg׿‘aUuLµ˜e‰;·ØgõP‰âBÈyW¢…á.ü® —s?1Dý¯Â_á¸gkZu;¢ÇëIt7§‘÷÷lÖß`–)p“å5”ˈ11–áWÒŸë”V›0ë‡ÌÞØ /G8Ù/qº[–Ì€*’oj,âÌ&Éw7\” (î?Ñ»XÃÒè­ÿ4¯Â°Æ0äÊ¥1TEÍÕØŒ ëcL=ëEI›ì(B\ˆž!˜fÎ=•S”&!…©ft/ùh›4JP“¼¸a%¬ø C«4¡ù=^>Y`çbÉ’¯ 7ó‰ûà™Ž?ã\ìïpO̯öŒ•d»×ûÌðË¡6€ôù|$Jcò-ñÁ@q ~¨UàØÕï¿rQU5.ç/ ‘ÄøOP²ÍË ¸úÈX}„ƳÀòrÔÜAökdŸÌ@õç! !«‚ -ÀE ªw]ŽûGd'¡f—oú—‚*¶yÆOr±\ öwðWé  ­Ð\9ž"ök9bC‹pPò¿{‰¤òÀËù y»mÒ´«ßeÇÆ”ã£@ï5Ü6‘7ç¨k1’D-*Ãu˜©§ÂFTakð\‰ÂK%Œ—æØ\µl%†NŸÇ¨¢]_:ºŸò'-`À­ ÷„„Ü{Åô辈¯ö™ËkC`ð¬`bÝè¿4x¥õÌ·tiý0|˜Ûó5Ò:†BAiýmIëÂR™éNÒzòM¥õxüf 4|ý:ý÷ °¿‹ûÅ«¡±ÜP ì{¯’LÞ“®—ÖK£hVMzˆÂW•?Z¼xqg ¦;–b]5WG°#)'_ï¼¢¬Leã‘æ^éÏN0WӚ㊠´?ðþthÄCËÌŒí—6ô\ G†Ùãþ{à Ü€ðl±?×£LòÿkXÐé„A¬vé<†8ÎÓødŒ¥f`:·°à|îÙÜÕ‰2ûÖÒÛ2™£‰“Äa$”Nbš´áGè™V7†D.ÅR…Ä1å£â¹ØGÓ´à^^>:,E¸ïðþ«7 ºVgÄ6„0,½ª"ÂãÚ†y¿4Õ%¤Åè–‹™Ñ+¹˜™Þ.º¥×6ÙkN¥úLÄßÈê`PDž¬&¿.ï’ ûû…&õ•!uÌòÝh-À'šóŒ kÏ ‹€FrâÉÞs-Þ½?dÍÌÅŠç3¬Ð¨æBó¸•O×£¡³ÁÿqßEuý¿›l` ³@€€¢¢Ñ–*kІ„y€m•"U«°+` $î®äfŒ-ñŸØ¢¥J+Aƒ PH•—òJx(3l$ᕲÿsΙݵýý>ÿŸ¿þÈìÌ}œ{ï9çž{î÷žËÑ_§7Rpñ·Jª#hVB†e‹’ƒˆ -¡Ajþ‡&ø©N)5“ מZ³à[ƒ/Òvy.™]ɰHA#æ¥&Bïî&²l$˳âÔVм½ xøß}‚w=~„7`ºÕMx1cSÐ ò>ß„‘HÇ4›ý0ÿº·g‚•3×po•͓̠õw Éß/¦me–Á<¢ëuÅ~̹ ñ·»Å‰O·‚ÒëvÞ–o­âbxpý‚ ª1ªë.BŸnäÕÂ*oÆ ­s»ŒÏÌÍ•GLÁJvc³¶ÚÙèg[•1YÚAiT ±ìb'¬ÎÞÀ£Š39¶z7>}Ý(ÊEÀ7”[P+.áAf!Í`ÝÚ¤_¤ýOšäÜ…³yæE½Ih5§Õ*¿¿ØAÃfe…7ìÞ‹¸—œ}PJÁ–í¥–Ý†˜&™æ¹ ¹*Hâ12Y7\0˜¬ƒÊ8¬­Lk±ï‚–r>¦„ÜÖÏc˜ò×H Û?ñÞþwχ·óùŽÚŸÞþRLÍŸ`y±„g}8$ÓyOZ ¹W³6ÖV=– uÚAÏ6»ò}§…Ôð DÒåÈ—ŸP§¦‰Á©é:( £¥Ëû>Á&L"¿ÃI$þä´‰¤ÁÄrüwœg[gŒzMŒSíÐï`-ʿϒŰ+<×£Š/R "s– ¼K[[iÒ`,Ìݵ|i‰ m¾´Ä\ðßRÃòé:1ï 4ÁÌ5:£E«4º£•¢²ð,GC¨òTFøk«‰T¤Àÿ‚vB<¨¢íµg›Ä4Ûtñ +(¤§†V“˜¤6hˆÔSñBevƒN8s14š“?”s ûãžsâ¨7:j„²§”imÕnçíÝY‹ÎæZ6ׇÑòW îaû5Ò]´£·[´m>ûd§– Žƒùl‹/à>&_ÖYÇ!áÙÝä¨ÀcÜôŽî”u”á¿KÕ»€¹ƒØé E²õÉÈ”ã³ËM{ż]<¥9{B ð{ÿ^…‚‘½+á2zo\nõl÷5ºÍãYö.åã3ZÁÜùà “£V#MìÓ %,Åòv%´ðÏbÚîÔ,iJ÷ÖÌŒ„üýò¯õòݻőÏcñ×[)þ×sîý ¢ð?ù› fŒº¬­4¿˜€+Íx\i Þ;ÎààW›Ê 3TôÙÇÊWmEýsÅŽ3s—øÂ‰ªÇ‹åíoó·‹î­ÜᕽŸÓ¶WŠ*\ϵz&4‘£8­ÀS?jß VŠ­dùÞè2ôr)ë°nÕ㦜ªãçnÊéâ˜I‘!Þ+ÅT̉êaÍä}N Ú*o…ˆeätÞ&¦Z"QÙÄø¥©m‚Ï‹ÅL½¢,®Ã€*½ñoå@土ÿýÜOPI”¦Ê…¹UÍQlKÕ‰¨ºh:PNÿºwIi2¤‘ÏäÊo‡áÅ€ñäS\x=¤t¢âÁ d—à}ÇOº‘ٞƾ{×á?„ÿ¬b¾ÀÂ_BF)nD–ZhŽœ>ž4%°³l„LwÝDP'åÝ:¬¼“æmÈÊ Þ÷Í¯ËæîR¼¤rg$m3jBç.³ hl:JåÕ’ðšÙj÷ü’‹þIZd–cð|qLáÀ5è‡ø $ õxº˜(Ùʱ¯3°‹dºw±jž—5DB&èdèÛ6w$t0;šÐC-:· _lõœ˜ð¥´` !åF:¾fte´àÆàšc#Û„åxÅÃ6ÁûŠ]û]Xe§÷êauõÉåÙ4Z1`«aS^öÓ1ë3A/ÉVù74Ï„IZ'|ÚT):'›—Dáy?“csþxÅ./‰úFò| 7+Yø«qª‹ÅÕ/nµ¼–Êòvy$¬Ïì_†ù´rÒyË}”ÁPÌÞ*Y^ǵ2º¿Zt®sTÍëï¨|ÃèçZQ¢;®G5 žëP]4S7áPìû>š.’÷Ы[tGàöÄ ¬£DK1Óì©ÀÞèz\øtx1Ì’Âgè)BoMKGl Ÿty·£aé€ô„ϳ$Kq:Òø4 ›±ÕýBGÍ>O 1º¸Õÿ­zqwFV&µ¬Ù$Í7#ëÁÈŽþ°Õ¿ƒ}›ðEµoŠÊgŽò)¤ž·˜Ô€Ýä3Ѩпv‘Ò²˜g’ÅRLå¡÷$Ë$|Ä(×"D½Òƒìï­Š‚¦é¥¸¥×}Œ÷Š!Â>AоãÕε¤O²×){0Àe¼ÞöܹRÚÚŒ žâj'Þmj’mci\°Áo@†t‘_h+,CÎÅÖ*wb$ÿ”{•ÔS@Óa%ñZ/Îä{q‹áò‡“ê3Ly8Á|u7$‡ŠKÁc¦ 憓Á  pÅ /rs²ä‡ÊõB  ïbüFX â>n\ ¤ãZà)ÚŒ[Xx‚¯j\ @Ío85ËáÏ¡35ž<´ã°r´6qGãV'¬XZ¥²÷‘=›'|þø¿R½ã´b¸îNŠFšý%ÆíQÁR~e®”w0 :Ô½!Gž F$(°ªÚ(ü+æ,Á«š~U‰½ß_Û •sÖT,Ü"Q+V71].hè›õ­P×=¸ :‰7t\°¡½B·@•Àñv#Q¯´©[5á ŽLõÁV½²z†`ŇHÈz—¬ +ñ® þ=tæþR»³†–XÔ§0ó³¼J¢üÔàríG(7 ‘â<>ÊíðÊ8Ï8KB *ÜF”kO¹”W ãq™;{C¦|8=8Ãi,b•šc(5oàrdÂ1¬‚íh+kS~…« F˜”ëŽiá¶Ú`öB¬1ÒíâÓ¸ §|W«1²Ÿ<»ÝÌî›4º1ù¡¯Ïò¨Ýc3ç*åã`rMBìêï±u íâØ¡þƒüûYu_]™ÐH\\Õö‚\ù”kœ]5\é©|†'ÞtTËöüÑ` æàù?" *˽•e¯)¸Ûäî¯QœŸo¦RÓ-â¼A̽F«ï:øÒíkDsÚ™íešY^‚6Ö̵ÎA^—üoŸ¤ÄS§Q®ŠÂÍâ˜QþM†e"AlblD)nʧw+ÚC{µ”oW®iÐ_s›~µ†þ´µM‹°J·~ùÞìmš,ëMè+û‘ÆYˆGÄŒA J[1µwOpd²2ÿPÐÕ|ÆC$‹¹È÷!¥ûmÌU¡"ë>Ð&ßs½L&œîÓ^¹Òõyáá^4/ÌÛÇ•!GârGsƒàõ÷¤»D rÒ?Ô`TA-Z?Æ Ö‰•¢»îüßD …´ß[Ël´J«ü“P zN˜YÙI:Q€â*~nÐ=jÐû¾âTÄž$ö'Ôêx÷_Í’á"u,öæŠ üäËB ~ÒYò²­÷….ËÂ=€m8ÊtÕVû§v0”¹á0PQ¢eü eÒýW>ºRŤÐ+õˆîñ;ƒÍv–—‹ˆ4tÊ-к›4Ú\7«-»X Tð(€™$Rn¥O@‡©¤@2ÿrÇŸ*âîø•¬ñ*ù92é±¶€ÿ+>¼*\…Þ¸î iÂu†&¼ÔÚ„Oô;RåsÕÊ—\¥î“¼î½BÝ_£|D‘êOÅ&-¿je¾ŠZy 3~‰ë2 ¸’Äi¿*veÇ®”†¹Âÿ ïÖ¢+| .¥"®_i¸¢ÁWhEê¿?@ñ_£| äyòpÆ5 ¾q£ß-'î(üzÙý…˜}21}€náp@ÆoesÚk< ­£0å\»”½53'W¾×ôt)!~ßÁ¿WeÀ÷¼“Yð½ÇŸ1]]ˆ³õ`¥}òæÏßñÁ"Jø'@—Šeø¯£ªÚŒŽ§m‘Cž-ºOÏ®:cÚ:{—Vz*‡ú‹|®•5 ¾¿àþ>]:‡çdª Î-ðg\Q|ÖF±¶(IàË€ RÚIO~åPɹ•Iu$7wÓa¨XáG•YG›:DiÜüœÞÝÅóGÜë>e zSé>bÈ÷¢xq¦Š£ìI£ 8o˜‹eO¼ÿ¸¤±"/7§(Jª‘Êqb|wFu4x¶PU+‚W²h{Ï£Ô)ƒo< ÞÉ–ð-ç[-!r‰¶]‰ÜyýL,ÛÅm.BEI‰¿X¾‹D|1•c˼†TŸí&á݇'€–KéºI•ÁS“½¼–ÈpzŽE„ÐóJs(=ú—Ü¢u‰à}R«QZOñ¹«Að͆Læò­\…‰ã¬œšËÏ0š'š0N$Ê /b©md¥éQüŠvÔ¦[ èrR>„|´ö2z%xך –L!/h ë#® âï( ‘j'TÏø¬Ê¦°âææ ˆ»~Ée“¶VÏ- ÍkpS‹¾òUÎ4¡§PO~$÷I³ñ‘šéHãRf àèd„ òÛDù0 ›º¤à±N|KÓ«™O7†6úS¥“fd!3gYðãOBˆ@f–|ƒJø¤”Ũ˜¤Q˜Å®F0º ÞgfÈË)=Õpv)Õ |yåÇšz(+SÎÅLûUí²¦ê©WT2×,åÕöýÑBÐ~éù¡¿Z(JkƒÁŒ‚þk°áÇû+óbxý³U%䆥ªõãØßåÛ¿„c?vµüé¹°x«W]¡`+'Ýh IáB8é¿kQIŸ³äg‘¾ç·H:¹ã•¯.“+á]‚w`~ù2Æq•ãxYÊ—ÃØ@X¿™ÇÀFËÉŸÆâö‹4¢š.„i¨:Ñш¯r‡HÓ¿Ïk2ÈMkå«Kš4ñô² Ä鋌,ùÙ|NL饟¦‹¿AbæÍï‡<3“gÁ<‰û7`Nc€&5º”ÒåÖ–%Š¿D«øú|Õ*¾ 3nhËxo½òz3ZÅY²‡2rw ™Äª:¾ŠIü›f2‰_ –Š™Ô\ó\ 2°™¬^ºSH/…ìá_s{øw½ÉÀxc>äz÷ü完:_ɤm~[ñ4[QÚ,ž0þ÷àÆ}ÔŸ_Œq|-,ÿ„\&KrÙ·æ/Š'áIQr ›>¦[»ïêZ̾³Õ°˜}oAÚ4)€KÙáã ¿Çkšf#"ìœm(#ôÏ,>¿c€¾7.â™T4 h‘ ‹|ÐʛέÊKk,}+^ɳIÂÔº“ÎÊ×ʾWÌ´Ú÷M¾¨ÍÅÎËQÛ†\rI‰ìlcäÙ{Í„,>¶ålÓL¶M섵˜¨ßF>,|HXñN=¤Y¶Yz ËqÒ®¶¼†ÖÓ„E/T E~ÒEw;`\5(ú™-z\ X"¾+»´kýR^Å­uº3ÚW³^™]±`EO_ ˜éªñ¯à<¼W~!è²Fwãõ[ÎRŽIC «hO´«¿Ts7Òmõ…4àÖ¢2ªïV¬L—6K$oLÀòt"ë‰ûú·‚ÎLtˆoÝŒ¥7-ÜL¥÷Q¾iÓâ›hÇ•âpïi)–Çl/Ã3u‘m˜ÿ-ì‘u(UmÈXúl­ôAP:Ú½”~maîö6ºìîSnÕù`>¹êµ¸93£¸®èÅ”ðrpÊÁXAÛ_¯ô?±’dK€VMž…­C]g•C0¼¶xZYuç€ëˆw-£”c¦° bKzª°>o”Îi£g&G¼KhfÕÊ8«åú”µÁŠ4ú Z“6D7ÃòSX¿ß½æYD+Rx• ‹Î´“°è|Õ«-:íi[ñûœ{´E«„Û¡°(Å´OÞ¤.Ci<¶uª-QËðc[u$rò‚ÃÂGiu¼‘ìËâˆå-<€i‘¯KÝ·Št鸯1ØVÁ·è¬±™Ÿ™“¡éÅ øÚ/øq\H† ôîJ¹ºfë®.r­ÛúƒoÂýÿJ<§l+žl›^$Ñm¨˜äÖ…ñÎ u8æºÀ¯ä;3 Ÿñ”ÊŒŽwfqr¦ëäÐÉ-ºqž„q]Å_Â43õ4¸á?¬Ñ{ÐûÌg½3; ×ï Ù¦Á­ý1 ï—¨ï¾|™à&³`ÉŸs²äWø‹û]ãôÏòfõS›5 *ŸˆÍšÇ›õx°Y;r(Šyr• RãïxüG5Ç:¶hÝ&ÜS€%ò$›Ú¢bn°EE!-zBßxë´ö´à4íñkeÞ e>°‰;ëiœÄI·Â,#‘5„»©TáB»¸l7m1œÖw%øŸê’Ð3‘ÙxM9ËöŠ3`€Uí,àÎâУFüéýi¢þ4N­?%ëO#õ§áúÓPõ)ô’ïî×xnÖF“ÅÕSþ|(:Ù£5'»ÿ[‘ÒȦ…y†ã/sóÈ?=²‚Ÿ”TÜ Bß^ÿOpM…êÀÎÌJq'ºàn /M¦<×UàKÐÄxÔe§o£ó-‚ïÔ ZXÍöüÊ$°/f੬5Ô ¾#[é­tý¾hKã–ÁWy?¢!‘Ì‚–/ê4ý&Æ´&\ù)0á¶ébw¤ý=¼½z}‹Ø ì…`Äs{À›fÖ:‘Ÿ­À‹ÏÝ/ˆ¥ø»¡M:#P¯jÅh§–¤1VÁs•Ïz`]k2“’jÑÓ~ˆ…†D•|F?o‰*ÿƒ³ò4±+ˆÈ "D\[ò´\v<šÛCë‚_ã‰v¨z¶ç^Ó¢ëø ^ï, xsMRöÉLù•tpXÉ‘»ÍÀƒÃ_·—lä”a3sYˆ¤ày6yÃ/®€8± äG% Å]¾cR¨|¤~¦‚‡g䕘†P@lè&l®Bm­é×EpWÏ(KÒ(è&º—rý0]“%a)ÁnÚcÆÑ\L[ûôþM†n¢0N4 `™ÍnÄÛ@¡ßÿ„r§Û0yw^ ô(Ã@o4áë¦!,¤!DiMftÀŽÒhsMãt©?Ýh¶ÇaZ4BtÇ€vë$:c“³n v²ÿµyßD½‡ýòø•`_,ÖÏ‚‚\ì¨àL”vE'ÌÕSXO$ŠBrif[`Úý…y1ž®êöBÑ¿ S¦rìJˆîCÓåÁQ÷L—îÊZƒ}EÌQJ3>”4´¨•v*õ‚rÝò ÓL¦©þcòü[¡C±ˆrCF÷h˜ 5q:YSòdL#Q+­¤}S[¨Eõï ¨n¬â"aïU†µ†‘۪穦™\ „¼ós‰Ý`PwäâV)~`ðˆ÷å—Þ³Äù_÷ƒÌÌ4ÊÙ|£§9KX–I·Á1hU²vÒ oS,I)ЪwMWUo®%¨6×(aýy‡:àÅUÂzÒ<™(¾w)S§‹Ù1 @Ê<Ý#Tµ#uÂp;Êõä4¡©äЃڣ’¬›•G1˜,ä`´ˆc²0t€•‘”)Ob%òœqA9Äcrõà 2çr˜ÿ”4»!Ù=„³!î@àÞ«èôzœ^ –K‡ÈLA2Ò# ckè$Á­[W´†±?|µI@ÄhCîUz4‰ÕøGÊ{»˜Š(Ê~;'qGP¡´j®ù¾¬ˆ¬ ùé§ÔÈmm‚¯ÜÈ–tžY#mþRdÉ|%ÇꃗªÿE£Ú·hsq‚>Ûåü›Ñšš‚âƒÍºö.´ÿ±yÑÔŽ_ÈÙ7s‰!íÿF†üÕmHfùŸ–ïº98~qœàCXK@r4¼¨‡:Üâ«\’¬‘ú(/·$µÎϺZs†„J—o¹¡ï|—á&®sðWþçMwåÊ·ë$N÷¿/¯¼É0AmÔú%?Æ#XtnÅUJ†‚ûþòC7LŠþ4w¹ð"­‰å_ å|HarÒbÀ|á¡Î?BQ F Uú6Ñ?òæxÑi¼ã¬Xiᆲ̼ÊÃðgò¬xZ4ÕŠ<=Éäi;?ܬmôö€sJÌšåý j¼¼!LÁ:1Œ™ü|…oŒ4pÚÛ‘!ª¢€LÑ¡dm”‡Z‚7#ò*Bн…àE=ˆ Áœô©ÇÎMÞ7ÿaðRíAÙK%®ã&놥à{ >¥½ å½`”œœ0Ñ» (:+ƒ¢ãZä³ß\Ïîá3W×bJuú%RWªYbÑìý¢O }¹Ê·ð¯œ4ÈÀv¹òÆÔ d¼._‹_é³û?ÉxúŠ. "Åe(<Ž—d^æÃE&$‡X/±«"Dk_Í’q¡ú<¨©ÞU­úŽÚ¶$L†ž “¡õèU¦>Äè^ÐoU– ßqu)x_ÀøÌ;9 éÃöUµD$•%Ó§ÅïN¹kÿ˜+/LÜIù-Åt–¯¹!Ø?¤Ï3äSÂôyÓõA»ŠÀp‡Î@V`U'"DÁ|ÈÁ‰ññ½.:ô<23p—\’­ž<ÁïÓ0r))y ÖÅ|ˆ·bÏ;tšã5tóL°d@¾©áùè×É:›ò~ d6:x¾¼«z n½™PíÜw‘.ƒÃ†ä§æ[¦à‡BI Ößoçk³µóµ5 G)×AoÄ2Ò+ÊÛØ½òìQÁ[ÂûuËuAÎâº?€F£Ë%ÑY–ã題¨6O®×|÷\ÑŒ×t~`íßú6mǨàW3ïIºë†ˆtZï ¨„—…tBí¨×ÖÙ1@$ ¡:'p´èPAõ暤B^´¹–›ßž­¶‚–<ЈÐμMðŽë¤-ù½5E‡ÁmÄÅžk}ý6 v'?U´Íb6kV·1Ë»<‹ûßhë¾Ú¨‰-ïÓØ ÎË‘ïª zÇ ~u—šÔxõ xñ&Ó0#öÔÙE\uSŒ«âRì6Q®«ú1VÁÛ?Â8°‚÷³>ík:k¢^êéPµãê:Kð¾l 'ÊGSËLŽÛ¹æÑ$j·à]ÞªÑNâ1:áYAm³Q£ñ£ŸÞᆎDú¬Gˆ>ÙD9)•^jþ2íbcRåFŠé*`ÐiÓI§m½'(¡w wÜ€iÈ~`#”TÒiEÎu’³(}®YÊ[— 6•K×§-o%Ëç† ÁÆq¥kS¸b”4Åè0uTpÅXªå騆Yª`ü„bLU#'PŽt£z¼m—5Ëù**ÒŒ>"Wé„»FÁ5¾ª…ɸÒWî }nŒjë9xú f%¯=8ûL&0Aåš8C_OÃÃóòÔ‘Á¾Žëòâ ÆÝ;%!r!xgD„X4Iªo'M_ü,[{iøÈ).#þ÷qHñœYðV™C["?1Y$Œ5ð½rõQÏôS×Gvq|ÉצWàׇ.ØJÄçóh˜ à9wM4þz&T4và™+ )Úf62Îó)ý¸Y¾]ç;%ù¸H¼„gV•Øfâý ×ü@Å™òçwëöŽò0ò-×C™Ð8vω¬Àíòwi*GN$޼Y¤ÎOœu«vóÏŒò)u¦OÍâý唥›Ns P÷ Ì»šÙÍ;½õ¯çÁ/Ä$3ChnåÅK¨úÉ,UáçXމàSY±_ ÝßnÖg÷›µOt!ZØäþas ÃɽÄÈQ¯êÊùÈ5G·Ƈ¯OhŒÑ89æÆÜ “xåÈ1¤R"ùˆNå|᫤2ñ•ˆwÅrª§ÑÝð¶§ÑÞjH~ZM~¼Ä0wúö×¥Â=„»µ†~Êâ+à¼9Q¥ûãFƒVø‹9d6ó™¹€æéjð«ç\ÍW0 =’7 ]Ð!ÊDð-'oÈeµKDO= Þ;l*çÓá—ʹŒ™§ƒÆ®êjÀ[H]i)Þç-ýÌàˆ!Áz‰êRü)/âêÆ.y”¡It>sñ"­f_'(¾‘8·@ð^B¶¥£ž8­û‰‰¹±-–M%~=ŽqÆèÐgqaýå$uàùèàkï^Á׋~SÖK:1~¾˜G^¡ÓñŠ·%xK¬Zì-îbãVjQLW‘ÜÊ©¸•Iáº:qÖû(Ùb%´âHÆ’»¯,ÜÝ×йCvu×åÁ÷ 1DNÜMö9þ;áå ±Þ‘3·ÙI[eåÔªrÞªîto ÙT ¨~U;ðƒ¦c(8Dz&þ*'wÂ÷è ”ãØHy%Y™réb¼ä€‚r•N¡±X0:“òKï¤BM„¿àQFb{l”YWJX­ë]½Ôg AHäç_“Ø|‹òp]ˆÎ>¢*áý¼ <$ìºCŸvú ¢=³Ù0eph'Õލ â®SÒG+`„y¬¯"ûCò§æÿF,£<5ÁYC'¨!N#/–†Þ‹„ÀŽQ³kî-V†aO„w6L2™¼äR(ù~‘B`z¶ÅàÑSÈ+.þpHÁ•E ƒékd‹¥uKnæïæÂpQÌLWé:ù$¨£džŠ–ÖMš:Ý}T$ľuÄ?ÚBãÆN&,0¼è,%]±Î±åÉ{4&¼¾½>ånB9”òä¥ë&8¶Ë–“?‰31/j®)àªX'g#9 Š{¿'=“Ñ7aÅYšªðlY´*ÀѳÃ×ÔöåkçÐeÎG¦ÿj™ãz,¸ÿ9å*Ë×­z'~‰;ƒT8ÈoEäv¼’ïël²Ïså7½—‡tSˆþ÷ÿçÚ02`І…³¹”iä겓ö°ôe§ …-;±ÑÁ²ó9“qÙé¾Fß} Yr*h ªÞ>çþÕ{̓êž)¼ÜNá^ºË¨p•Ytך°âÿNã&þ÷5î‰6ƒÆE«4î—hܪq+5îÀ¨ö·öƒÅäû)‹)\Ý^1ªÛ…rFuuGx}Tc’(±ðìË­ë"1ÅFªÓ¨&v&Iœ1¾7q5A÷yÕ„ãGÔÄmw¶¦q-1KU & ë{qã4–Ä5–´N¾}4j¬2®±ÊÖ¥Îò´DOee\QL14aÅ=Øë{[Èf áyÓm Sy’ Óõ?§o'ØD·à®i–¾Ë£Õ3*[YLû»˜ ƒ@ÛT.rmÔd-BW!¿¿Ì µ#.º) a‰Fíë{‡ˆ^ûv,ý³ò2g¦?ß¹>Âà \—+ÿáú fy^Þ¶ãí¡šHCg[P°†ùÍámYS'{gÁQïÒ3ôââwfˆÆn™Jq~EŠæ…²øïKj¿l¹z¿t,]Wë»Ú/»ù梛ÞGVB¿Ü‰úe úÿåæ 6û%÷º Æäyùcs¸”½À ¬iFÖ·k=TÔ¬%p4óõ¬ªÜµ)øð¼ß™¯¦mô¹Ÿ'|ÇâGóšùòÓ­÷†Á–¶ðÓ´-Ÿñ\#Ù9Ïé‚ÂË|x­q؉¯‘ «Ñí&}5ºÐu­XFÞQ0…äÓš—.ùþº5觯RsÚMA—¨oÕiW¨1Æ5-8¼¿ºJƒ\}Û¯’¥ÉƒLÅX›+¯dåÍr'S8+o1.i–-o·”ê[Ò\nÓªUÚPh .V^oÃÅÊÐAO8^´#?‹iÔ­9¾˜ZÜö3V±äj‘âÊI'i79 èåêä|r&×ɛѫâÑü“I«¢¨¿æšægô¯kÝž Ý®ÏY¿ºÚ^BGݾ]†þ½­5¸;Y›)ß6ÀØíÏâ×IÙRXgG,ùˆðöfϱ_¥÷!ñ6âþ\Sz†lQÛw;¼Õfèó~2.`?½6¸záÎÿ˜F]Àn¤>obÚ ððGsªþVŸò\yÅÖðšÇBÍŽKP«æÿï°Öš\Çw\ëòÝüé ßþC“:\} A“:G¾qWo—‹,ϺÔt’=OØ›#±AØè KºœS”¥äßûÉ å'V{µ(úóTNÑ[­d³¨œëŠS!9å’†‰GÌŠAapU¯nùrÔä0Ø4…xÎhškÅ ú0â-h.Ág¸+k±%Äí>‚ÔÌv‘ÁU±ŒB¤Q`9aÅûð¥ â÷\ѬŒÄ a„õg“¨â¢‚wW-(|Ä`Îâ^Þ½®!FùsýJõ7«º£û˜TîoƤî¯t‹Í&RÄ:FF WŽfå•– 3HÿÑúj__¹žæÝž‘+ÇåR·ƒ Še«Ël‘–¼®_>IR[ê¾R:ƒSeéleqç Oqú<7„ÎT¡æ: ^EUàèÎ(¸:ê}ê©ZoÜÒ÷ª½QÁ{ã^½7ºzwítïÓÝ+> Ã>Ø'ÊŠËÿÓÎðè!ähñˆAÝzŸ#ìNøð–Á„ÿuÑÇI|¿Ÿbªò â;‚=›ïmn^¸-ŸYWA¨¹î C§­¥e1`°2ÚŠ¦—°Æz"Õɾ”ee¦Ü«wÐ2zKv_ ZFÊ ¤Ž5 !wŠc· `­mĈî®ãt@N¤˜äØùo@ÿqçà Ã!¿%AûùÁ«-G†"ïoâM Y0îh öÜÒ—„ÞÃ@ G_þìBkp]´1WþULp]T&¿‰_5ìý®¢ÊR,‰¢'÷Pæ‘_€"£ãâ(µ5t"tý’³žùŠâÈùO•8nœ˜•ë›ÿ‡ZØõ']߽ŷ‚ Œ ‚' x¬Šœà‚à×-a ‚1-ú‚ ½E·5sjˆàûþr¨IîºN]ÞI|%FM´uVIJîcüÔž+¹(%[µjWØž«ëu}¿õß™¼U’ñ°äKUwr0hô³a‘\¡ôG–¶s [ƒyTŸ¶â¿¾š…tñ†ÒV^QW•ç‚K°à"BNÚž4ÿ"¤üGW²º§)(ï°‹tÔ£h;W¸“ø ·x‰a…‹`t0@-ÿ„®à«¿n­aPovVmÒsá;¨§—ÂÿáíB›-bâ&öã®GõFâÙ«ÁKÚÙ+ãJ#ˆýš}‡ôìýð(ßy6¸òïÊ‘×Ûõ•§ÿ}9ölk(ËÿAȲKÕ»Æe—êîÀðsÍé¹²”έtfY(/Ÿ¯”'w;ÿ¾ÛùÏàJ7>eÖ\#*¿jC°q'Þ™tÚK~¨!¨;øJ]‹?“ê•Wh±˜+˜Ì©ö\ ·w»"¨ž:•Ïm}µÕ€‘åÍMÿ`×íÔ®ü`VËcÁÓµŒùÕÍÈÄA˱.†ÐÎ.|ý·Ø°ZŽX­ašôa27w°– ¶þ‹ƒUÅ9ͬ B-a!ùo}û£CdïÃèÁÕy£Û5/îß:ÈÎ_ Á2¢ Њ»£©yCþh¯VkØòv¶àÛ»«ƒæ… Þc?q&xߪ3Æð+µð•'õ­}Á‹7š†xË ¾¿o ³L¯û1'“ò‹3ÿsø‰«L7Gcî㆛h¼Nê”[r¼NjL lÖÐg]:ÕK1øJ¿"ÿt‰5èKÀuŒ\/g]¥|óÏj·@‡—]Å—aônŒÇçãÂ0S}Ýüz¬yC ·Q{†)+áK‹®èíÁé\N• ¾‘È7RÙ9 jký¨YvßÌoŒž6–SŸÖ‡ õÓ\ñe¸ÜëBøâàPpqpeß©àÊIñP†õ3[þ7¨ß|Ù@ýçc8õ¿Ú÷¯Ìo‡W›r9ŒzÇeúÔËÿáûÖ࡜—úÑ‚Ôoºô365~Â5è’vA¥]¸ =;:¯Ý>MIsíîfö¥ð(wýÞ š2W.Š Ò~Ae§¾k žÌ;ýÓ‹ËŸhÌd#˜,ÅÉswS¨)Ý“cŒ‡¨k k̶F½1»1æÂ½ßóx#šÒ-ÁÆLÀ4ý¿ ZÿŠ{K˜­’j´¢U¢7^$Û?G~n4'ø½0,Õ¯ŸàËÇŒ`ïg\ #øÎ‹:ÁɈ“NlÿÚ ¸cÓÅ@ðF\Ì<|Òà yè£0‚ù­Ð!—r‚1B$˜ý™rm*'øš ¡=¼öqŽT4,VŽ}ÞÃß{øûðɺ5B_5pµß#¸\5ô0®òùYKͬ^ýc; ‹ÚOÔÿªê`¢cD ÿ’OÔûÿ`˜¨ÏšÃ¦±_ ¾?VýÔD…«S4ß&œn]ñUþr}“±yÁEÑ-æ9ÛÙbj×¼eåØÔ¸«¬Û!ÿà³ôÅÇ‚¼!M;r–"QShóEðMG‡Ð±ÂK¡•®â²ùTßI8Ô¥O³.´¹Š«9Tó<ô˜zßVPçÏŸ'g`вðÜ1ƒÎ¿D0ßîæà ¼?|{uNÇ;rA43åÆdÎéΰ`ÛEN·ŠO'Ôºð uOpB­Á õ\­¼?^A]òSP4s®ülÍqˆâ˜æÈUÉÛÞJÞͶÓ}O„‘×zœc$8…‘'tgba%í§"·Û> áÁ#9æéÄm4ýÛŠ1Çš×)é˜&¸Ò?1‘r˱èrúšV~ÅŽîø$N÷â§Àþìÿ7‚{pߎ{¯ÝÁqqÍ:ã§] ܓ꽾&4wõÄÒUJÿ¹¬{¡Ú¾5xʶeÊ˯\ÑÝð«å3ß'~ÿ.Ži«“­¹s¹ñm`Þ'Ã]^÷]^…E¨2—#‚ “йpÑ<ÍcW´ @úuô£m¡ÖgÍÃá÷Í)“¯„9qé~Ïo s…5y¶Uo¼‚B+Ÿ9bÐ}¢qô{=Íýʹo!ÍÎ#­aˆû ßjp¤K»-ôDÛþ5Úo:•¤Ÿ»Öpj Ç‘ Õc-TÄ›kB6^¿U7^¿þñlCEºœu6 <Z@ǧ·´£dúI,+YÀ•øÐü?rz+¶¸óõRêþÖqž’ *ˆ¶P†üKë4‚B‘ãøRð{ð‚vÅü¯Ð#¾iå!ǧ6†sù5a xÿ ¾øKëcÆùSlôÈÌý8ìøÇM­j\ fæÇÀgñóϘú† *sGè§Õ?â+ 5a ™¹ÿÐåJ=ëd‘»ÿΠw»\=$Õ^sXࢳ¨ûCHzåêãðÓï‘}_ Þ€)ˆCÕc<©JÎb›)¤‘‹%[w±õÐSa8¡°÷Ý€zŽ}[gS»à‚wÃ?¡¸f\aH„öá­â5·Ë‰6-²SÉ?úA}ÅóOŠ‘tȰx*€b½¡9(²ÓPéõ=dÀü›«‡„¸KÞÛ‹Ÿ¢ÜÊ¡“y{HHˆM†ÿ©kX0êzQ ;@%ÜnnãâÿTÌ<5s[r€b9mYß‘+tfr…® Ó¡§äÖ—aj_»XNxÖI¾ö ¡wþHGœ^nºbÔÈ—´†E‘›zÅ(É‚÷³Vý|ú:Ú§TÑ*1† Ø8eWkˆ 0Äc WšZŒ’¯È-¡ëò`خܽʄ¿‡…0 /äQ@·g„Eðu…_ʟ߃W¿8`Ðñ§Öàqü¿5›»ÞÈ]æ¸O’E²(”4½XË•_9¸PÐ2ß[Ð’åêUÐr¿«û$¦¾WZþ¦ç"IùñРZVå )DúÑ¿ å—'0+ŸÁ‡~‘!YÜ_yO/!R Þ¡<ÿ7œø‚7”™­Hÿ.5ÎFñÀ‚–[o_3F~ºYðv§‡ûx,7}™ôƒ‰ÌßcˆúWSh˜g5ÌjgNE2u` ú ]ó „ß«% ðÕà}r< Hû`­‚„«Éö™4cünŒP¶®1žêûÕƒ¤¹ÿõ”·ÿ9u=äºR+¿V íLQ½¿~Ðå(g´yJ„M[´à®·¸ÆÀ?Koó4ßìŠ Æv½ÅU}çúú͵G©Ö-ÿAOó}î}êXÃÜ믻œ÷‘տѸ*šükn‹LT¸…( Üönëö|7Ôœºæ×¼í†<«W‡å‘V£¾Ab¥´5‰•­ì(ÝžEW™edɽI½µ’mV„ÄíD£:Žã©«’™ÎPÉÕø2¿ÊÅÅÝe‚¯féKÊ¥·Æ0KòûQ¹FÕ,¿µÏ`i¾“!_^Ä™þe²w_øžl‘&*JÆÛhxÍÒg)7Á3”“±}Z~vûØ tdõØ8"!Š‚¤_°ƒ‚÷–‘æ‚ßu»B­˜êiþ4NXAa‹×þ€+X ’æ^¼ z B¼ï¿¢S},׊É}xF\̵J)Ÿyšïª{+™¦ËRÌTÈ#gìV¼^È,xߦnŒ’]âY:(àZ Æsoà§ñ,7–å ڠ_1fe“cŠÍÞJö¹Ë9òF×(\ÿ;cy„èÆÈ×êÂ'ÝõKÐÇfPDÇÀ¼©Yò;׫`IOóŠýoy£{3›ë/+IõÿÀÕÉ^qì­Ø—ËÎmc ™ °[mqÙLèrÖ¬Žà¿¡Óg¯”kÛ-B(­dc+ÃiÌãjFÌŸ‘(Ð=<“ÑnW3ÙÌÝ}heTgxí¯Â2a¼<ˆÏQ˜ô;þŒ÷â*‡ðt'-ðÊ–ÂË8 Ï–àx-^O,Æüyd)jÃɃ3æšs{ÙØ[¡õ0ö’¸ur· )ªÜÅŸ-4¸¾›õ„6³ÿ[`ŠËþƒØßyÖ ðV±jŸš«/˜ \ý ŸJs¿«_5uÈÕùÀÕú=&®9ëÖûƒw$þ<~®dwaF_ =Z{|zø<þB®+¥º3ucWCÆk!ã»”1Ï2…*÷Â&t¿IS#€ïQ3ä[ÐŒ‡¦ÿm°ñ†@ÓÝ7гâðŠ¢‘ÈpN'æLfN[ÀÙ€½ü8‹×{Vä=kì£)?¯>…Îþ3 í ·(M °69Nµc÷ü¶SY'¬sÆn|eZ»n\rŃ;Ú}s§uÔ}­maÝwŒÇ80šCÛU¥ÜÒÒ;Ö­%´¾ËS;ªïãËaõ½vYÍ–êÛAƒ% Þëù`m˜j¬cW¬Áâ¬x¬ÊËê`Å‹y2Ìm(ÓØ{…o%áã5uê5^%êx©ãßáxý.l¼ü¹?c¼4‰Ãþû$Wí¿Ë.…×·\?X•î—è¡@‰âÉJk3=Ä+ç›iÇ{—”Sô²dlÆëhÒT3›<ˆ5¨ÒÕv°NÊÛaÞó›ÛµAÕ¾~»1,Ó¹À×`(þ»)¬ÿÄ  `—äàÅð8€šw¥À\r/ðbu'm"q¨”ã%¿˜œHfÄiIoÃDò/é¡fvðþ™;¶¤úO—ð*¿(¡z±›·iK îÏAV7ðµUtÆá`Wº…e7À9㸑 «qê Üw<ËW¨Nì éVqž%ἯfÉ"G˼Ök½˜ù‰}<êÜ·dåÜ òC7bZÍÓ-漆„£Ôî`äqÚ´~€ñÊo»vH¾ ­\ØUÌŽ 8ë|{—˜Sy)±”´:@6É"Y’ü[K2åã'¯À>0Ý•œäŒLZC‘yKk˜ì €ÜÝ¡ØbgLQç±,¿Á/Šy±¾šE^ }1MWpe:{BL‹C÷Çl²‚ãª;qŸ¯É3èÃ=×±T„¶zĨ¬°øÓú2¯ôkô4Ç‹ùV¦‰õv« –PCáy>Çlpêl,=ää„E—`ÌXv­˜g÷´Ko€í%.C==Z›H3oƒ.ÃŽb ÔUüó\»ñ»§Ùî®ñø©Œ£þOtZF‡Ð²¶ HËÚJ#-xÜŸhYDz×vHËÚŸ eíOÒ‚Ç-ÄSÅ«£;+<3uÂÀ&š¹@¢s-¦”@’Ó&x£Ñ—MïéÐIÖ';‹£â}•îGÅŒx˜Çï)üœ¶¬û°â$‹8s°¸$žÍ´°IƒÙ+ˉgÄÒ„VÐ5¬;ûc+071ÛMtÏA­(>ŠŠ`ÝîæªÚØ˜ø(Ú3˜$ô¿ÌšeÄ#ú*)ðí‚©h—‰£¬ó‚2ñ K¶ª¶)æ"ÊJ&Ë®“}Tèt)îNælàEûrðã´†„óyV)î¥,ù †Î\05ð¤UÞƒgB [ò€ðÈü:6€-±°™ƒ@»+_^`“-¤©¡ÞtÃ"Ÿg D1' tÌ£%‡Ð€Æ1fXŒb 1qÒTÑ,N³8Îï%ÒUÞfœÙnu~ìô.ÈrcWRƒÙ´Áâ´xÖɱšÇ2,lš•ŠgýæG‹½¤T ¬:Åœ¡ Á@2_»;Ÿð`¾‹a›ý«räf¼šE!kƒŒ÷—iÝVäßÏsä»á{òtz%øÐoI‡—æšsäá]L¦qÓ§¹ºÐGZoŠ930ÈËmjŠž¤u€.‡Æö¢¶ÿ½ýžÐöwízÓµvßü“íŽ{ù·—hmž4È·ÃÐf;´ùo9ò×&¼ŒLm3ÞŸ¦µùYÞæ1&C›q¥A¨±EÉÑ!mžl³CM1 šÚ|‹Þf4áĬ©âx›c¼}AŠØµ‰ŒW× 1eK±Š)v°pÐà‹`)1,ÅÆº&î‹3¯•d5%–§IJ±<¹Ÿ¥Xü_–ˆOo@ù €YfKž®J¿¡ ÿÛ%Z}‘¼»&Â[Þcã-,RL %°ñƒÅ”xq¼•‡²YD`^¼l: 5µ:ýA¦ê”ÁüÏ šMä=¨aoé†8Ñ]'¦Oó†Ì³Š ’“ínvÉÕóL³:ÎçG°oÅhˆ³â8«˜W—ð9K“ÅqƒÅäøª––v2¡*á|Õ¥ÇçÌY+,ÃH) ‡`­švda.°ì/Dçqz¼4Ü#:놤X«š±†yƒ Šè„QV*¹)±R›— ý²dûæm0+¤‘%¹ò€hé4 o!gª¸d¨ÿïì|SMÕ÷bþÉ,sS.û²êT„˜Vk¾”!÷Ä´ÎqêT1»nH–µêrDf`¾5òñ M¹ò~;}ûÛ¼p¨‚RÖƒ,û`ÕñˆL°ªhòŽšÖ«ö¦nàV?=½p|–?ªéÇY ¯'NJÌÒ- F/=†“‹géVf×ÓfAâÂ.¤æÓ-8ÈS­,³qL95žYŸA<=× òÓ`’‡EgŸ¦Íh•º‹y66-&56-Ž_„ÔÍs¼õQW %žfÿY¤9#.á0 Qáf4Äqm‚Q“žˆ•kœW0ÐÝÇÿOZKér ¥E5Fš]YbêPh»×TÉäû¤–Ÿ' Ö¸A„%Á^—][¼uΔï¼ïlÓ4X¢D(WŽ_  èüë Xi©$)SýŸ‹)q Û£ôKz`^¬<h!áŠãRKi§ù ‚tyøŒnWÕŽ«»8a,Íì°ªtùÎF,e‹U%˜kÎ’_…¦L›ê?Îå4 ¬ÃÄJ: ]°Vç7›O•’°¤ÏW¦ã’Û-O‚Aèi‰Y:,ˆØáñ¬j¡ú§3{¶Y7r.çâáùýX”nÁEi‹º()Nž J6 '—÷‹}U2oÿ˜–† TJg¥½‘Ò¾áëV¤WQå°C’³Rˆä¾þ¿•d0" &µ4Û“QŽq­®k‚n†ØéÓ`màŠôÜPÏùÝ#[`^ÜNuòwIo}²¯4ª•Eˆ£ZC²ÏRq4?Byþc¨—ÒlÕ.żäØù¤Àv—xN[)f³+µ«}Hººl™„Ý|Þ§w_‘+ ÁLKRžÕÕ•rÓ”ˆ“¬¾ Gióý0m¾‡É~ºEÄ™Þʦ†Ù“0ÝÊRâaÉ< dÉ* –ÝžX ¬ÓI½Z€ûæn䓊$î&õ½Ð ¾­¨ÀÆcÀÆ3aM'²NþOøØà¢3¬.Wçê䡤LÇ¡">aNëeVSÈú5Ö9°xͳ E=ÈJ«„õ{pa•Š¢ï,9(jq£¨‰ÙµxJ¼@õÒ¤‘` ° SªÇÐ6Cõ^é‹8ÆCÀîecìÕ£†Ó·Q#ðä<) ­W›*ô€…Í‘ÖÀÛóïˆù²EáZÿ$ËÌd¦?CͼF϶[Ù#«G£zÀô_4L–‘^=êžáAža†1ÜêQ®ß@}œ*.#ÝÀÙÓ rŠ?™¥NdYé°rs…¥ÎêX{’‘‰ UîiÑÛqâütZh¾˜~“¬©lœÀ“1ò¹kPêñVä ™¸ì‘Ò2¤¬)™9œV%º¡ÛX'1uŠgë 1oçX†®¾ðgi˜åºoˆ:äX#0ÈyÏ¥(W”çRg÷I’~ÿqÍ–ÏàÔ°¬)0Eãç@t|Ñ1—Óa–Ò. JBŠt"°f¨ÿ’÷Py¬¼7ÎñÆÊK î zÝßñºOhu‡öÅ ê‹ÁZ_ÜÊ&ŒD¾ïßa_ n׃ÿ‡}A³á qÜpÈÅCB¡lŽ”4n0]ø½yÜuÛýuÛ™ú lçìX0¥yvv*áÆ‚6yŽaSÌ{Ø„[¡1Ø6Þ˜~zcÔÆd×ez¶ ÎÂÆ eì´³V{4]‹ŒÁH;üN¬Ôl.0@«åÈCL¸T‘ÒÍ™l‹üôîÖÀôĽ0™wßf‰4eå¤Ë³z¡/S_ƒq=š“¸2ûvdIq‰®ß;Î÷Û½¯ ã!™Xƒ«[ÁXt$¿‹?ÝçÙæù÷–ˆ·™á?ÏfË»ðŸë&i|kÁS­&¶Ýu]Á"³IJ¹âŠ-Xm.¡`Q$<\‡ÙÁy[Á0rÎq"Jø¹9‰•¢kMœ8È^ôo¶³ê˜}6ÛÃé¼…ðoqŸ{ܬÁºWðb,¹1ü£kŽñÃï &?dâÿHô5Ÿ±ðÿ5m&[«»4FðLJ¼ ˜ÜQÒ˜îþ.Ò›·Ñ)éæÙfû|hkk3<‡!gâÂ/ñ÷XÁ÷9þÜ©~ÿšþÅý®˜cÑ3½šéÏÆL‚Oà¾R”Ï«Væì`™÷2ÝšéÊdÓ2ý"˜éC&KH&ïõ¨’Ð׆f!ýoÄNì5ï^Wüˆ/°ñfo£«wÕi;¼‡_ð¡3ÿ9s–6~9¹âh½)ƒì0Š1ž6‹ðô8èò¢¯Ùžªã0”;WG ÞC“GØ9Blê1æÏÂzó¨!1¶Û=5Ž)Èo2¹ú÷)ʆ›ÅþÙub:©òàZo¬Ej `ׄ컺 pòîu_ *]Â6:Ö ½í¤uù^—¿¾¸ëˆ=ì ë›ÄJ ú€°i³4Áœž!_<}%P6Þ¿2²ä‡?„çuû4ib%;Úª"¬ØM_{ÚÌ ÀrHtÇð=u^zâÞ —1G~êsÜÓ°ãžÆôOl¨ޱª’â^¦ËIù6×íE=F¥¹ga'æÅ°aþÏ y Q®Àƒ'N˜íü¾@ê? 5& Ov+X=Üy›ÙäßÄ'é>V0K;¢³»‘*°6Ñj>›MàvùûZuße:zB‰È½8W8$[gÖˆ´nFçzOV)æ^\P÷ò¿FZ’ÕHË·HËan›Ús«ŽEä Ç×mk­R"ο3ÒÏRǯê!{Ä¥WÝÕ†–@ÇA:w¨Ï5ÉHÒºáA…ö?µ¹. ‘Ò*qŸÂÆÒÖ¹"™s]×WíÜMåÜOv“s?x†×2øÌy°ÚyÒDoŽ£|9×1ÝҳūçV–·]ðâ†ÖÜHùUî}ÆŠ©t  VmÐ )Îáh»žˆÁiŠåo÷õ„¢º£õ%e óh–”·!KÊÞš¸3f´éžf‹+ÁÓåäiîŒw\vù¥5­ÚÓá]ÃèàV*~²×9²·ºlâí¾Fw'XGž„ñÊÛÐâ¯)l©­µ[7én· ^BÉ”õ°¾LQîÇ= xã÷:JÙ•,{Ýg=ÎÛ­ÕN;ÁoôT²áèOå4ºÕ>¥m_OÝHß^,öÐÁû†™Ç?ñÏq‰ïÙÜÓs¼5a?¿‚‘â'°:îï©íúûN³~tåo¼ýyéwPq‘S9 Ä–„N:„3|úŽ0ÂGê Ø`àgZócält®Í´B÷ƒ]X©Ù…ØûOZY¼ûÙf—`8,%{.[\7x.G¹ÈýþÒÿâC‚CP"æm…þö—ˆî­Û:™έþª ,ÒIV–ý) ¿\ƒ>¶IVø¼Ê¬¹¸Ó I¦”÷i–F@F îÜò?2lwóa{ú>l 4V|Üì†ç“´gÇT;QLʧô{ƒ Çîµ¶`º™†q,¬Ç÷[Q6¬WžW‚ø_ã=ÅÇäí;}§ZÕ»OÝ`Û@7݆'(ܶél³Øišä*±KÀxH¶0~0Äò§_’H¥R¹È±–Ü[ÁXĤm[BŽÏ^×/qPnA˜7Loüe—ÿøn+ÏJ‡¾ßT° ¤Ý €ð‚p“i’+ÈG¶ ôXÎz\HÙfŠwIŸ±ˆÙ™´]Œw³òuˆ»‘°Åy VAZ^‰ÿ¦LldÙÛ¥Š­Ø™ÐlÂ¥îj$¼ß=ï×ÅÂ$•ŽcŒmÓ¶&\2-ùVÃm}‚ Ë ¾›Ñ¸AÁä°sÀ{mÄ~ίh˜Å OãßߦíÉÖ¤MøXNÐAWÖh„T‚"ËŽ)6Ò´@ïåðzõ4[¤y:2Ķñq†ÁÿËpwmð»ñÁ¼Å´pŽÁŽù: »çp7­{*µîÙ@»Ðú0ƒì$´UµEhR8 ¥ð0Îqœûã8Ã`w†Á^ñ×Áf:ö±DœñQ«¯Æ½F•O±“ü›pî*åoeå4„ùÛùÈ!îÝ=q>$.]#N*Å™RÚÖ uìØf¶=¡¹ª9w-!]@`4Ð&ø2ќ֊kÆâN¼7dóAܨðAÜÇëçãø1Éç'^É9š|›Xéq ž‚zá–dÏÈB“ë†ñ®xþÔo¼«Æ»lÉãéÑâÛëþ7!д&îŒAÖ ½ #þ]pÿ=æRLVÚÐGx+Ù×®5#op­öí•*ðk Û]lǻã]Ö‚ËÑ®Èd¿BVrgtŒÅFaxLv¶8bä Á›d™GG¤@qçݧ$Ó_¤@yìsÅ ›"w,*GIŠéÇÔT®kÙ/ Þs ®GÆ»:„:GùýxÕ/Zô%|`{ؾb3ÖÙ~E¦›Gaxó,WŠ1|¨ÒíW©ôˆ«Tút„±Ò­æ°J© 46ö²'¬¡•âêŸ*ý£ù*•¢Ôa¥w˜ƒ•ºž2TxF­Ð‰>ns§‚ªh6»†Â?K®UeQW1ˆ–I—Ý_Sýu¾J÷Qƒê1vîF´U¡5ÎOe L’éž-ö¬9æ»5S¾åä,»¬’†rœ&4žÎóà×Ãøk¶ök<þšÊÍpÝŽ¿Æó_‰R+X1LðÝIO‘à †°-rFª§*’`Âð<*UéÇS&º×BªÛÝïm‹ìâ?B/žƒ‰nq[d´ÿsŒ¡»( ù=/n¨àû5ïÿ¾mB+V9º4q{ƒw£„M–~0"®F ×YB9ñ†« »¥Íذ¸6cú·fjÓÖxEkXÝ­a¸3§5ìЭa_^ù9 {…ÚõˆÞ®ß¨íZ«·kÅj×o¯tØ®AWÂÛõM«±]_¶ÛUÕjlׇ­Z»ÞmÕÚõz«Ö®ÒÖ`»–·jízºõ«]£Z©]}Z;l×`ø‚§ŒízN}ÃÛåÑ~Q»Üü—Ú®ßñ_Юᇢ7‘å¶¿¸h™s®#A}GÚ+%‚:Ý{7üƒ ÜÇD÷AcÊÍ<%nýcÊ"³!åcÊ&ž²†¤wŸÉ²VMÙ Tb¨Ä»@÷ ã_¸å€ûdÀ]p ¸ÜûçDƒªÊ’_ˆ¾âªÓƒ^ o¥k7;À‰•xÈM)áâ(¡•}­†aÙµ%Å ¢T¨è#»¸úAe¶¢ˆâî)c¼;Ü'ý+¶EÌHÿ÷ÿÀ†Âÿ'Âÿßî?ú"ÑÿyðÅpüëÿu;*¹P* òNÇ~Š#0VDÇ #èˆ:„ tºE#åt8)‡ÂIÙNÊGHÊ43$V¶ê§þ$ 'd«¡Cþ(Ãþèø×•ŸCÇþ¥£ðÊÿŒ]6Ð1u´5±2HKFÀSÕËs¬•}ÏÃÙdfyN5äÊ/]n Ì®6ýÖDWý®E4ÏJººÌH—Ï=ÍìBÐ)À÷$}•®Îéò…%WÓhˆÞçæ€Ü„Dïîê”y…ÇaõV]êNs\Óî„×í6”›mSKsÊPÊDwš Hk`UÂgÙ M‡x%ÑHÑžãÑ›7´@YAkìÆó»ãT§òvînÙJ>ßÁÎ&Sb#9«Ú<ùv³«ü;hI_yûó¼>±Rõ¶«Ç7ÓÖ±´ý%zð.‘ŸÓqƒ!ä/ÄÍ_WÜYØ´½È¹QŒœ-ÆÓC{¸¢ÎuþMùM‚÷F<­š¿ñ6õl±à½Ü‰^ ¼µü Lª$ ‚‹Dº;W;í`!±èìÌ9ê¹î[–¿_ð½mÁ–‘? ¿”™>70V¹lŸü»g[q©•Ko ó²ëäûO›LÅi÷2çÉ¢´Z`7¹í,±± ¿}QXsœp„ŠÜíp®¼X~±³Æ#áºÙ0{+¬—nNÜ›”½u~_Äû@Ómw‹yÛGØú»;¥Àëyuðà­4±<I¸Î_öeŠk•_C=¶zÌÂ{l¦žë1ÌÕIÞaÌ5”r¥ÕˆIÅ–g=ò]EÎa}vMR¶=ÿÆ$w¥àI£Ã*váƒo¥áý¡óil¼•˜ŽÂ\0÷õ”Œ˜¿ß‘­\aRÏʸ@tÖ¡Ôô£ÓLîT1¿ÁpÍ)ÌÇô ¬óºyò˜žì¬úîD÷._£ûZ1­Á·¡©Ùµ‚wL‡M={MM‡•b4Žß¯l ˆy զ뉿|5ؼ0áá# Âü–*Ï`8²|Äy,õ¿¦žÜy Ãväï’o¼d°#éaè‘âƒôn³÷ ›ÆÄaž‘+¦ººán¿ÓƬÊP̽¿à©¶¡îÓìÀdœ_“”þa§N‰G·ñ1w°ýÉÿ¾vüîAÅΫsäÕ.¸ytºìpYp­˜_ 6ö°üºan9ºIðað‰¤´“Â3dFeåC .…ïðû& Ö‚hù™: x‡/„‚;ûÆ@Yÿ ÞSÞÊß ·[SM o7n@X€Ž^t½EHMƒ1R Hs«416ŠS) 7Û5ë’=÷>°cÓžûXö,mëü”NËÝbÚö–.Fõá¹ }aÙ½{‹€«¼(Ϋñø‡´“ (w@»;*`þº©åÌà¹ÖÀ ouÌ ®{´fçd\«_æÃS‹qEÿ]Iyöü^çn¬»/§DäÜÛîÝ÷:Ù7VAx~¨Ù¢¼…Ö(yçâÔ )ƒµ‹þ—C$ïãiÑ­qí¢%…6oóí@þµ0cØ]}Ål;žHØx 9ÏNw~p)xšöwÐÈGâtåê £!lk»zFNuuÁÁŠÒ6ú?òTG°üuPúªŠbsf_ eáâÂË¿6¤9¯¢I¶B‰ŠÃá:ש'‘qŠ{eoT.5‡Æúâõ:†``$c@Ü´€¸ZžÈóò5(ã,â·¢¾Vt†#—‚Vh ´c7AÂ'®ÁM“t ŒËß^ð+°¾mž"»AÙ­Æ­áþwDjÒâŽü¨Ý±òªvGúŠŸiwŒåvGeƒÝýóíŽZs˜Ý±^·;^Õ펦¨Ÿcw̺ªÝQÿL{»ãıÿÿvÇߌvÇJnw,ëg° r~ÒÛÆ\u?awXÿC»Ã•nst`MÈkâÅÿZŽ,ƒ¦àÇAénL'y©>4š šT Éàå3Ú0˜=n‡¦ÉA“!›L»â1¾ž„&Ã0eV˜Éàˆå× ŠëÿƒÉ°Í`2|b2¼ªóÇíþøy6ÃËá6ÃŒ¾?Çfp´µ·®ïû3ltWÿ´Í°M³* 6C]˜ÍðÏ>ÿ¹Í°¤Ïc3ŒëÓÎf8n3|f3Äôig3, ·ig3lýÙ sÿ·m†É½ÿS›áÚÞÿ½Í1·Íðb˜Í°)æ?±Jbþ{›!`°·٠#bþK›á½0›¡¾×b3LéØf¸çR¨Íðr¯v6Ãþp›áã0›av¯0›a‚j3¤6‡Ú ÷ôjg3àemšÍÓü6ÞP›¡°.Ö¬N»ÕÎWqÒ­¦ý ,Ìu¿ÎŽÓ®#”GeO¤òq‹8óVF·Ub<%ÃG.u ÕâIK{"РŒÁ~ÌS¹ ®ÂÀ yèŒ~ô-rÎÌÓvk޼¨DÝîqï;µ.²‡õ]6îÙYpï`W 7 ¢Ð.H,äª+bþ ìºŠZ ÉÌy(j >*WB :Ñ;b q´…ÇÑž‰ÊÄ–`°Å«´)Ì«¯†¹K˜{¹àí…ï(jq_Ö¨&u%€À€Q®Á éôÑ\2‚„Ï—ª&·$Øœî*"Qñ£Ú[é:S\J’sz(²\Oþ«vÁ;¯l,©vzÉzo,–(2´àH×éXèJÇb5j  îäñGpé}¾Ýmæ¾&U%ÉÒ·ÇwâzÃÿk„úëÅŠ9~¹ö½ÐÌóâɯþð(Ç 9 “èr¹ço #áØÆ6 Þæž&S’zä=”Ìï­È¡ áÇ}•Ùø”]âØÌ¶©-™ß³¸ ołȀӛâ87çeyÕN“ Z„±‚dfÛ˜Ñ^жí~Í@Ü,?µǶÕÅ,¾J—›Çf.îU<Á,ºKFôÁµY‰ÿ‚wÇFLè©«¶±˜ânTi{¢Jãoil¾ç1Å#yÈÙ´ÞÅÿFmöê!³›e¯é!!ÛË?Õ 'ÊÕÀ e͸çxH(z¿uãìчï»—D°ÝfgAB•è.0ái»™I”8mµð,ÆÛ÷TàÏýùvùõ¥ÚêCL —¼¼ñUŒ´Hã Ë²<Ø~þê\)mU†”½?3à.¸Kä†8¢Æ³5r–pš„¨V%÷:ɹŸ‡Tf¾t4[±s>KîÕÃê+Çt®ù‰ôW,¥gY<þlpö*Çaay•ÍdÊ;K6ßœ¨ÖŒÌ@y:Q‚åÉñ‹€K«Dç*óAÜ)ÜÁœ«Ü–qð¯(a*5@tÞj^1“xdhª†þÝó½§ÚŽhÂy¤×9ÊÒifŽ÷Χ­b;… —´»êx”§q`Â9–½Ò³¹€}¹Ä.ÿa‰Þ_ˆ,ð䯌Vd*t¥çt¬o/,ŠZ´­ª-Š­:Åö%|.øúàžQN€•Ž#ñ®öaèéhDK©ÐAó¼Æý¸8º|?.¯òöc"D#ºcô,òûöƒüÕÁ 'V:² w%,Ö!á×ü(Ú MðøØø%àªØ/æ­ ¸ß˜%¹×äÈM ¬Ê2L8¾`å”1SÌ_5¹Ú‡¡ãQ P`섲‘4ökÔº§øöÚwZí;X,á§}µÑ›Y_•> eî©¶8JñçâÏE")á,̱Ïb J‘jÂFB!²ÒÇ¥)Td|ï\é©ì¬¸xÑáô Þ¢M¦ªc’{?\BοóY oHþJɹ˜‘ÚiSNvv6kf¥XMÓv‰•ÖB9U—Šô°H^ôT„£¥šðÈŠÌw„Xöz¼\2¿@šqwËóòC¸QŠ™†×T;_ä–Öpõ£nUuÁÂãÅaôÍô=Qb©|0ìØ¹ðE¡bbéZö9ˆ¤çüÀ%·fAâu¹¹òn ´JJÛŸ‘!vã嬫˜·Š.ÛŸÊòV‰î•žüÍ̽Zð>Õ uþ‹`´!>2ïEqtÙÑU¶vHÞ*,fbÙ:Rü‚dš5èk9í X•qˆÍXš¯ª]J{Ç),{üL ¥—(êÿ‹bÚÊ„Ý ¼>¶wÅt3>WˆŠÌ[éi‰že¶foµs U±gI‘RK1Vq†´û>È=£tÿÒÓb©‰ ÚÇîünÕ£}Te²c÷âóUïà—(Q2‘–] ]„R d­#íÙ…g‡¡tŽ7KO$ç&á•Û¬âB›LÙqþ3¢ßˆùлÙá¦FVŠŒ5»éTÿ½‡mžYÅ™Ëñ÷dý™78© “Í7ß7„’$|½à0ÿ뎆ÞHšáÛµ`Gn k”%åíÏ’¿]J£ŠÓ t¤Ëž)e¯ËÌÊ’sþ`2M¦“Å/Š¥H©8Ñ·ÔÏDß~öù’nâÄÒÝlbéþñ¾½KσnÂàûd0~‚¢íê$Tðœø1Éùö„Ý Ù«=ͱK–x6Ç&ìatm7»¼ï4Ë^SíC7…»Šž s®V¼f¿ˆý|Û÷wa·ñ¢ ~4º-¾½‹Îó«ßp{ /äJécÔxéCè ïŒ\˜æ@#]“«< ê´é°gs<Ë_ÃJ±&ÿ ÒñX#U½Ô ß(z$ç: ¶mK rµÛÌ…SHVð×\s€"½óåÛçØbN6P¤ÐíÐÑ=ÈoÂGQð¹yë’F—î–%Âå·mVë©À.ÉÒ. _8šm©j‰b‡@õóûÏvfÎ5_¥ƒÐ¬É×€€0˜¶ìã„"tÄIS|kø±2Ïi˸E”ñxCzå@ÿGü¶z˜¦VÜu%Ø$,)]žýT®½BP\ )®‹8… Æ”²Ÿ/ i«•ãˆæØ4wŒ,¤ü ߸7xòW™«}1mÍi׌¨üu¬<–ÄxΆîƒ0ƒÑìøì4Ò@ªlØ¿<‘÷1œ"²sMô¤†Êl:žf[_,°:¾p_ Öx¿H ¿ƒ¸#-žoMIôb~MâÞ„Ãýβ}ì Ð"¨v1Œ³Hé|;8w*Jñw|þ[•Ï‘|‘ý(¯ h7‘a¸·•x¼ÆÅyz#çé2,++PŽ…)×£—÷°HB–vj,ýW ÖSï¹Ë$bé®<¤ð‹¼;‰½œ+|œ8ü‡d.qµ]åjýÂåÐ¹ÚØ‘ú›s6Ý—lgùÐáó{&\JÜ˾`ûÌ-ž¯Mtïµ/ÀÚ\æI¬¥©FY@Óñ~GüèÄF¶EJnΕ¾š%Ùðdz%´óÒ^š^Î[ɶ%Ö(]IFôF ŒID˜oÇ’Z8¿õñ0Tã¯À¹çL«aÖ’°Eš`‰ÙwV˜Ð4/H•³62{5; 6³çt†ŸZ-¬ø‚ôò>7Uâ¯rüUõ}DLd&Šþy¥!è}{™Ü¨%Â&kxÛ¢ÅRZ1g·SË xÂXÀ´*+)î"lÚS$QËBc] Þ—LZˤYfOKä’)Òä+ûŽGO¹c§Þ"ïÄ’î:ýì>š èW`Ioà ‘†Mg`§ “ºW+Óp§ ÏF&\bûöù¥É×Fϸc;ãž3–º0šamÕqþÜõš„×·d͘éߤyĦ͒_lÕæê+lâ­‰cŠ€tÏé\Ã=hûxËH?=ä81­¤ØÌyÅ¿I½€…\Pþ÷Œ ¿Ô27y6´…¹ÚËÚBÃ^·´´Ë“žg°ÁY7TÝÒ r> «SÁËùÁ;xƒAG¹ãö²ô§´—ðž+Ñ]¤<|…º·‚Î*1d¼¨ü_¦^_m W}J¿ðm¼,Sã…LŠ9A6½†âqÁ;¶Mål߆V¼Ûº5t'zx»züÿÒŽÔê?Œ›Âw[ú´†QÕÒÚ’½¯¡_~ =ž;S•ŒbiÕµc¤2¬ã‚Óîüúð”ájFŒ÷žQWV®ÇC•ðÌØSÁ-¦4H;öb°ƒúP¢Ù²ëOqÝïU0¹ÖZì›Ø‹á­õï é›õÆvž¾Ð®ÂÚ™04 7ß±üçƒw€v¹¢¾û%<èºøÝ`ZË÷ žÀ Ij†×ñÀ˜°b0r5ŸÌ|—æ^3ߥé²Ó„·å;?ÎÂS’»Ä5\W­¼‹íÆ †¢Ijׂ‘…Àb´"¼ï§w8?T¹÷žoÐÐn®,}³¸`äÓ ­—|‡‹   ¹Ç}Wp[mw(eÙq ÊYâê‚Ûp”…Çy]¢ÓêþAðËÆ›}¾c‚#&GLy2ÊœwœçÓ¹aІ:`JÔ]ée{[(@æü9^‚A$i3ÜBE¤‡I÷&Ê4BÌ Jw§ð]Kÿò‡«}Ê]'ƒ{†¾_œ$3W®sÊ5'ƒtÍn¿ÿ\P.…Mc8²c¡à+9>íWév×mÅ}ŠHkÊN„ªˆçÂ;x¡‰Á+´Ç(øfÖ‚øŽ¯ 2Ÿ_Ñ7"•εX-†µ1gýsGC;ó/gÃç&¥ìh˜uõ´öB ?þV{zç[ŠÛ¦85f|‹@ -æ&žÌɶãf~v†8tÆŠÙqž–§ ‘VGhÇ“‚„ñÃ>{ÕøQO vI¬ü‡qÿç:x„à\‰)N“÷˜àË«sYOØÂòd°ñèóÝü3,‚»‹qσƢòRüǨv+:>Þ—­Vä °f¡è ~Ú\u9ŠíÆ/%Te°C {2$Ëóé9ò yˆ•Ab<9†¨çulOBUõèú!Å_»±¦°:¬¥ÞsÊì&fŸDÿ1ŰWÃ8»»}†öšì˯sõRÌïÂO3ëäÎô´º~UØ‚“Þ’¢»ï²S7Ëwbu·Áó%8ÍÎ`ÜVµ;•¸ß›LPXÉõÉFìzÿ‡S('GÞ7ÃdJ-쎟ðäü«ˆ ìã÷Jc*·£7þ¶ ½0vŽ_hã÷‚ÓÖSil€FÊ¥ò<3¸ •ð÷B·ä×U;e\|ó~M¬,©¶<ƒ½’ì«\r"ý‡ÆyŒÁHdÄF¾üعhË®¸«”A˜Ž¾b6Öé*:Ým¼õ.2/¾¸k Í&lª_ŠYŸ:Ö·Cr¥ï^Z)¦ÅŠ=ÐÛ‡ªL²Ýí¹-<‹~ûÏâ¡Ï„†¿ Æ<+æÇò,È·f_%^Vgg·W›qD‚g$3Ó ¤d—řȭÃfVÑií¬Z²Üî©¶ˆÜuìfXÛüÄû\=ÅÎÉðšu¢ÈÏî÷¹ÏgÄì¬sýUÌŠº,ÅÎþRG›«gâÞû;󻊖˜åùÇÎÅ+ý_Š1H/ƒUœlöò3Юw[ú»»¦ˆiƒŠ-]`Úi@]''ÌûW€ðaèŠìÚ~}­ ­ŽÀÜØÑÊ*H5Ç´óå$­qïçaã04­ËÓ¸×*µq zãþëÍ×ù,¤}»t¬×  ëåÃkí8ÜkN[;¸WÕ„ÄÚSׄ{=ØÖ!Ük9OúHªÃ½°Dî¥^í{°- î5Žç|¤®!÷z¼­c¸×#ä©]¥öªþT¢>…à¾Ð,x¿Dk ®u AÜ×ëƒÈ wq{ܾ¾Mðþf®ð¬ÆBp¦á¾† Òq_½¶Ã}!ܣᾎq_ÿâVÔ#~ÂpÇ}qò8î+&Âà »Â ©Æ<Ÿu€ûÊ'ÜWR¸¯Â¹:î뛨9–ÖoÊf´uŒûúƇ_÷5µ­cÜ×ÝœœwO7q_—MFÜ×­zڃܨÊWÓöE>{Ñö©%eˆýzQÅ~a•ÊcŽý’Ê0p‡X/þeû’ÿÊñ5«bû®Ã£¦‚‰à„GWS†æ‹»sâ`:«‰-<… ¿ÄC¥¬b f–0É7>ú—z‚.rÃ9R5¿áµ]ihðJ „!¼Pksý©£\ÇÚÂrmk …aÍÏÕUnaE¶paÌÑqaû;Æ…Is:Â…•£·tý&*ø@Ù™¿‰šŠÛ aÛå†phXNøš.‰ a ¸· ÷ÆQø}5¬|9vty åüR_Šû–¨é5|صøM¢oˆÃo„£7|~0àÃHÂ8>¬›§ôºo¬_Nz£@Õ%Å¥Uqb×"´HMÿZœFXtw‰¤Ã4¨˜¾•hX1NL+FÄüEÊ=Ègpïßû@q¥X1N¯÷Ahă´µ‹ùsÔríHbì)H”äã½”CÏH½ŽªãÆn¢;Ññ#AÇôæÍï­£Ç:è-Èüb>²²ÅÔ Û:€‘U¡w?)` hAnx¹aC ]䌀 3—‘Æ#@õñˆ>.k€èõŸÑaeÏôÖ5çX5!Ëfö&dÙãú¨ž%,=’Ô¼YZNnu\®ÁBJQó)ÅDŒžEzN Ö“®ÁÀŠe«8Ó•áÉ„›Ñ•&”pH)vèÃ/*è̇oªÄrükþ¢°°På•°$áÙ|xSXoГ”o—¯™¦cª^Åø+æÅüØHÒ(?Bÿb¥ ,'Wò½Ñ†ÁÿJÑ‹ž  Ô'òÝ×its`õ#o€°Õ¦Äc–M¡=®dú:º-¡F©)ܨ8Ë’H?=þ±k©AŽÃj“–g áXµÑD –,»2 «Fäjp5úáî<Ž?ˆT¹(%So®"-:šˆ"Ò¨ÅRü—ãÖÀGЭT†­pPfÁ[Þe‹c_ ëWuŠlM…t+:«À¹}‰]~/Wïð±b£÷w+æáÄWZBÒ‡²MÒ¡lç«ND± Gß/5(ÛHbòj߈6Ê6ý‘¥­Yq9mö0i5¶Í[Ž^`æ£H´‹’XRbK×ÑX€ò¼ JÈZ‰•bƒÅÖ¤2¬&jA„ïëhïE,+¡ÎFA›%QMòc b”ÉxñgFÀñ5;Ÿ?‹@µw²A/šÆñ¤ C©“‡S·ïÆ®^ÉãÒ¾Ó¢—üÖŦA ›H)RYO•%©,˜gñNv8áÜxáY r¹ÔdEPìÐr$Xù’h§–û-‹¶e6ÔA*d®+¡Ýp'‘z®Uª@*Ï¿ÃÉ÷4›… !ͦ»  Cʱ,“ ÂFBÁùâ‘°VŠq¶šü¬ô Êßùª–"=&æjU-Í‹p4UûbÛ4DÜ~”È®&•6Éuw+/ ÞÔ¦ââH !%8„D«Ú·²M3"·i9|r%‹~F¿¬÷‹‰Tc(F®“…ÀäâÛ8Lsz(ÂäþÊ[ë(§NÛÝ¡¢ Í–)U`ÇåŠDªD,“ž@ÔÊ ‚J#êZd~¬_¨XN¡RuݽYPöqn®|& qtåX¤Dxòá4 M#–‘rHeôK¤QòT`ÙfVN*Ã{¼3Εø*Bð¶ Ä®l%‰H Ç:2ІP~µ¶å$îªÂ«ö5_Ñpw­xŽð«û‚¸»X®¦ª½¥Úžr ㊋˜(‰FJ~cÑš,JHbÂfPM¥hôëpÛFÂçªcQ‘ôÙséáÙ_DjjF,[M£Éˆâjßjuô—ĉ„§GˆÞ«¤†Œô*‘²ô¤Hås<’½Ú«oz#$©¡êüÅë5S¥œ>UEAƒÖ©µˆ¼@áÙǃÐ="IµÈì'ñ__Õ zï1±‚wq‚ ǬŽ>ìBÄðÑoÂðá}yærü=ÙAæý"© “†’$|>üëDêÖ¤W |¼`Kn )áZ:‹O6Yr÷©ZŸ£ÂÈÕ+S¢†!°/¬ ì£ÒÄRl‡¸œpÌ ’—S‡±Ï—ô——R3–SÒúënœ¾1ýÔÄÂÓ ÿyôüm¾Á1ÈM„ø+]M£‰gSs°Ÿé R3Ò[Š÷õAQ‡Ä1Æ·w¡}¼¸ŽÿæÀ±lPÛU€X]F.·C¸êŸÉ5]®’|YØTÓDAþLÉ%ÉO †B"ž°ŒñÃÑÆnϲJío ' ©ÚgÕ§‹&ì¤}Y¹80.dIˆDšf¿<»M;• ðXnÏ@¹8Ø#Ø«èlˆß~UÁ†ø"lH,„SÝ7MIxCüÝ¡°-yX4 ± ¦ûÂv7킪rt5à!–S©¼×ʇDGˆù‚ä7ƒ€ˆw0‰ÄçZ‘ˆáYY) åQf“a-ÄÄDZý% ï)$Dø …ÈDRÿÊ›Æ1·†–‹4@\0Þ¯ŠNÄø_8:Ñ׊NC”’  1X(7}5Kæó'‚)Þ±tooTp¢â0JIðů„4T•V"›šæk\²Gk¤.Dß8IˆüÿPûT‰ç«ÿ´íTÓ Ó&8ð‰ùbˆ;*r%ýþZÓÞˆjÄFWE5ê,5IzꎄKiüqFZ®2‘ظ‰(¡-'K™×Î-3pÌû(ܘ…K©ýÏ|†]7„$ïx¹j.²„Xÿ•ÿ6Ze N»(ÙuV +d+jp:.ùs¼¦KXIåÄó‘ýØéˆF¯Ü6Z·m*0ìH¸£ïÈS)RFFesËYñ]ÔL^ìÅŠ?½:ÿ( /`^l*¡ omã(H<¼I(H|(ÈÁ[‰Úùr¯¥oˆÀ _†ú:‡µ¨¶qbÂçA5¿, 9qïnõ"²«â\×!(’&Ñ@9Ö©4ƒ2ŸªË݈µð*>ç•ðI6]Šy=S~*¡û‡Hj- î½4¨KÞe—Ùv#¬Íÿ]™¥¡$?-Çd”$®>ÿ'ÕQ%HUæ<†šÌ0ÌÜ”ƒm|ýC•ëãM"‚Ê_ž¥u=®nøÉ¿4`§£-¯A(—ÕC“ êq¨ÆµñuÇgØËºcãaϵÈY_6¯kÑŽ%Ë_EQÖ_i¢Ô\0åøã4”Op eË~C¹7F’Jk7T”T¨h)5Y8–’ ©4Á¼ï8wœpU •0×ZRÌ?"¹£†üP¯¬dG¹ïFXq‚ÔÕ8RBÝ¢WŽ¿ª¾Ð‰íAÄNÚo@táµ"QÓÌÒ&–’ûˆcz_¾À‘–÷ö¦‘߀ú’ƒ-;lýV“¡õ*ÞòQŽ·\y2 B.©É¼°Žé®7Š §™~–ÄJê\…¿;À^ª²@ lâÓÅ_߈ù*Õªb1±¤…S)©ŽSž ÖÉ:(óƒ{ÖÜ(Ù´/ˆ¹ê/lâ '\&µ‘ŒxÄ͈Gü÷ÞF#ˆd$¢31»ƒ†G¤õUF·ñs{U„A0ÞS²)þp[(À O«/¸‘žçÌ•`P‘ Y {ƒˆhV9ODgêͺÇÐÄf5îQa–Áf©ÒÖ,£ù¶Vß`Èüñžp(¥Ú'=ŠH’ȬáùqŠŸå¶¥*Je”˜£51½ë”’†ÖÌiW…r¥%¬Ž£_¶|!¾6I8§Ôœæ€ÍGá¯òöi®³¸¿6ÕìÿNÅlÿ΀Ùü çè°Mr¤0ò²Š>ʬ"7§E‘›Ü‡«#7‡F!róµ)Èp£qìÉyš³ÖeØ ;Ø¿Þmöµ–àV˜ ßœˆšþa]¶½<×݆Ͱ1ßĤß¼[ÛcˆöT`k®î',~R¦£¬<ļÙþƒ*­¬™Vð>cDsþ£9?øÒPwbd͉WåpŽƒ|7Kìb)Ãa"£¯D Œ–¬ š!³ð—êÉX†lprWg B’Yä„ ®ÇEÖÓ!Ðó>zFÈš®Éòã®±QÉKJœ¼Ù5!>ð_žâpx!)›Oa2LL¦¶‘kßø"‚${@C’q |ÔIq¼“ÚCAï „BAïú¢t«mŠ8Pµ=¼¡Ô÷•O›ÊwŠ46|ï#@hpSIXv«Ù°QtFíû/iÃÞ*Ü<Ç“úJ‡R÷‘ëiжáL/U|h°{5QáÑ X6ÆÓj:Ä?+å´üæ¼;A.K6 DGˆ¥´_³×ußÄkm9¦EÏÓö÷T hå­qãû<þÍ|f±€ôÜph”rÍcœ'¤˜ŠÛQ(}=ô—„¥­˜ËÒŸÐi¯\Ć’Ä(­­*t”¤ìÝ6#t”^=¦û½«ttM8Hó9t4$ð¶]AÞ AG¯m JŒo¢GC6~Þ=º9ö~Èþççíöd_G‚.C®ü¼ªò¶ð<=9z”:cjs®§#•.«z{ÿýú üïx„–û<8ëÍÑ”Â3·ŸnE§CÚΟ{©Ÿ†ív‚𣤔¡'B!¤_íl!­é ýëÎvklVÀІ›8øá; ¶¨¬BH±!í ¤Ujp¯1ÃÓ*„”2¨RëqwêFB:Ù! î9„´æ˜O¾8†.œš @R+¯¶z‡¡Ú¦ †D’þÉP×wÌ`€þ™Ö3;‚XÒ:…cI³1Öuèî0¹ø70ÂI‡~‹žp"OE”øV¯A¥§Túq {ìh*õ†€J ÓßµÛÛJ{…#A¡|Ô ƒ|}{;Léýmá˜Ò_…‰ýÜíí0¥ÃчUL)(‘µA°ïòÑ ¦_¹Î)§Ž¹ù÷ÈÿÛƒ“Ìp”&yF.[(ørâ:ŒúФÃJ± `Iv4tòù¤Z|‚ºcMˆh¼ˆ¶Pļ0»&È*¦”„ýo5Xê_VJïÿ\ÚŸ“«ÛÁJï­ ›PoÐ^(ëkOóô§{à©Äˆ+m8ÔWjÅ q¥vº54®0ÇŠW*ºc ZÚ†v¾Nhñ´Ü±¤·sw{h),ÙY‚YÊ*¬´åÁÛW’-…§p÷c‚ +Ý«ÂJóÄá˘[Fè Û÷–ðïïé¸ÒˆuY¢BK¿ýD­ q¥jM`´ŠÅ^ª® D±ËUÇ£Rú .¸2.gŠi ’åãô Ù1LE—ò,·ëõôeªY3PT=z]*–â¯=ü™™ÂÊP¡ßsÂ,x—áäÏa¦2>ºt¤©@3!ke×oX£”bó<[,P½c73o"·Ä¡ùýá·8Ê’Ì>÷l±Âêx”…Ÿ4=äŠurÅ$îä8—ß xÞògfy.ÅqnñEžã]“)ÞäžV@¢\©|³|I¼˜_ýÓMóÌ%Û[…óäµ!v5¯Èdyv–o„¯¾“LðU»Éµþ3^ÿsÍs#22ä˜Û±‰ c Ç[ð3ú Wâ0Ø•[hXJHØ%ü+ÒßÊ$õïMÜr]Wë!щ0ºYs#îøŸüI"0Á|ôß(ocè¼™–'“¯)±ùÁ¶ •F5ﱪK¬,Zª-¸Go¢W ÊïÚþñ­Â¦ª[Ø ¦SêX_åá[+ÿ{|ë߆ýà[+ÿ?á[¿¸ýÿß:´‡Žo-ª×ð­SëÛá[ÿÍ¡§g« øÖ)õâ[_äI·Uð­X¢ŠoÕ ¯öM©÷Ná9—Wð­ÔwŒoAîÀ•zaËõ§‚úð­¿«ÇU‹Âñ­Cª ¾­¿q|+&èߊ¯o¼¾Àr'‹ð­H˜†o½+ˆoÈñ­ôµ¾õ2á[± ß*ñ­{¸‰·¼Ò°Dþ3Ç·rò8¾5Þˆoæy¦ó|þá[ßü•Žo­¹-9ª‡µ¦b\}ÇøÖš¿ãÄ·Ž®ïß:†[;>3à[;™;Æ·žä†^Ùg|ë*ÓUñ­X¥ßúöH¾D|ë­«T|+¾Å·–²ÑÕÕ¾U:‡¬æOÀókê´É©"^MÉì(b]M¬Ázþ­ù;ýK½Bׄa]lêµzW µŠAŒ¹þÒQ®¯ÚÂraØdãºêñð\]•žma–_ÓÖuË=:Öu{ÇX×7ïé늅XךÛìÀ Þ;Us[<>~†u=RÑë:>Üý%a]‘‹u¬+*ĺ.ÆŽ._XĺâºRúP¬+}C¬+~#¬+½1`]ñƒëJÒ¦c]QÉéX׍C¯×±®”6몦çXW¢˜°®TgGXWNLëJÄèX×)õF¬+Vĺâ·@9æ‡Õ ö†|¡G;¬+ï%ŽuEêu¬ë ëÚŸ°®ø‘c]µæ…b]ñ­ŠuÅGVöõÅœúް®D(a]9SÞòä†¡È k늃XWÒ~늄p¬+>µÃºRʱj:#ÖõzÖK$•o–0¡>.늳ÀRLÄèY¤çê`=)Ǻ®äLWväŒëú8€] úð‹†uÅ7ˆuÅ¿ˆuuöB¬+å•°$ ëŠoÞ«#¬ë/¡C/KëŠyƒXש4Ê3è_l¢TåäJ¾’zºîo¢=±G(6U¾÷:nëJòB б®XPfeåÃéëˆúP¬+¥b]ñ'a]±V‘„XWjRX×D –,Ý̱®˜QǺâºRqT¹( §Þ\IZtE¤QÿŠ¥øo8ÖY–2kXW,Žc]ñbÖ5C8Ï/±Ë›n úâûd ëZ@ÒŸü3°®Cë9ÖõÖú¬ë­õ!XWêdéÅzºb\æ{•&"üĺâ/ŽuEÖB¬+Ž(b]±š ÖõVê$|XçÃLbYu6 b]±&뚊u-!T¯c]1iBÅ êäÁÔí[ÏÖ•hæXW¤¸XÂ4ëŠ)4¬k0O8ÖU- ˆuE‚U¬+u°|]ëŠ uÊźb!­RR‰XW$?ˆuM1!ÖË’|ÄÍ$*Ö5¦žc]íõëºëŒŽuÅGĺ’SÕ*ÖÕV¯a]·Ÿ b])a]§Þ‹­×°®T)Á!$ZÕ>o½f.ÄÕkXW|B¬+~F¿‚XW¬1 ëŠÉB°®1õëŠ9=”Cźbk¥1õA¬k;EAš-SªÀŽË‰T‰X&=¨”?TÑ„uÅú ëZßëZOX׈ëŠEJ–«Ø3×°®$œRýi”<X¶™•“ÊP±®øJǺzë9Öµžc]©cKˆ@ªm9‰{†ªðª}ug4S<ÉÊ€¬+ñº—Ò’‹qÅEL”D#¥a]©Z IäXWùLëŠÏ„u¥\JÖ°®\k½Xϱ®¯g¼Xĺb>ŽuE5ı®H "æð[1§¨"æðc¯×L•rúT…X×zëŠYC±®/’<îGf¯8ˆÿúNž Áºò.®@¢8ÖY±®Ø…ˆu¥ß¬+þžì ?ˆuÅd„uŇ$ _#Öÿ"Ö‹OzÕ·«Iź"%\KgñÉ&K¾þ6­Ï9Ößr¬k=Ǻ>§a]‰ØRl‡¸Ü‡$Ö•4 ǺR3–S*Ö{é§±®436'kX×d„à!7q¬ë‹4š»á÷¯±Ÿé R3Ò[Ö•hãC`ĺr%®a]c믊uÅêëºRW݈uŪC°®¯ÖkXWÚR¤EźG"ô (Ã׈uåã™x늕%c[8—Så"µ8ˆuÅ_ˆÉB†áÿÊ}ê0=­wD ¿±®¤+U¬+ ¿·‡?ëª×Oã“@5{*ð_º!aXW|§b]±!‚âóÚÓÚa]iÀ®‚u¥²u¬+o¤Zdº|ç€öXW’\ºj’Ëgß)¹$ù dÃtˆu gY ëJ2NRµ¯õŒ64ŸÑ±®8¦å¦ú Öõ MýXf¿¨XWÎP@yÖ#ÖµõLÇXWüð«ŠuÅ¡Xׂz#Ö“±®ø»CaC¬+ Z31¦ûÂÆ±®ª] ëŠ%”„EêXW¢#D‚|A B¬+‰b]“™Dâs­HÄ𬬔„ˆò¨X×f‰‰´ú-JÍgŒX×fUˆ.á¿òÞk‚€qCËE vXWüøó±®d„b]itëJ D¬k2b]yãC'*^£”¬«ÞPUZ‰ljǺ6‡ ÑÙþ:Ö•ªD¬+޹†u%CÓ"Ö•*ôY‰K½†u¥ß_kÚû§±®KM’žJÖ°®?ÊHˆuU™è§±®:Ç”8æýnLˆÂ¥Ôþg>îB‚uµ¢ÇåÏú…a]-õ¡XWÔ£A¬k}ÖÕKåÄÍBöc{¬+½rÏþºmSéB°®øZźòI–Ê£ŒŒÊæ–³Šu­źjü£b]±©„u¯úÆ×s¬ë@ ë:`éÃÔçF¬+ÙvĉëÊÕü+±Öµ¤>늟;ƺ.§žÁ:U¬ë1 ëŠE Ö+á“,Ǻ>«c]ÕZëŠ ~Ö“q¬+–‹XW,$ˆuÅïb]9#°®%Æñ&1`]quÛ늶|Xבõ*Ö{9ëú»÷Úa]ÑòW±®'Îtˆu%LyA~¾ ÖUx¯=Ö•J»*Ö -¥•:Ö•–qëJ.R%Z s­EXWrÔJǺÒbBÅºŽ¬7b]ñWX×ß¼ÛëŠÔtŒu%÷9ÆÂ±®×¼ÛëJ}ɱ®¶^ǺbÂp¬+2 a]×Ûȱ®j£T¬+ý"¬+Ÿ«FÖwŒuå²€#Ÿ^늟T¬+–DXW¢Ä€u%gàÕ°®1«C±®œ‰ëJN·°®ÇþÚëJ]gæ<øcX×wþúŸc]ŸøëŽu½ç¯¡XW>ž„uÕšŽuíò×öXW.]aÍêëú￴ǺRæE$I?‚u%Q*£ÄëŠé;ÀºÎmWÅÕ°®sêU¬+²ÏU±®äl5`]¿6b]wÖ•üX:Öõ’å9Ķ”¹C¬+÷á†a]g¨ýˆžqĺwÃëʵb]Ýï´ÇºÒ¶˜ŠuM®ïëú«w:ÀºbR ëÊ÷¢=غbS `‚ŸT¬kÐCÌ›XW¢••»ê¯†uݲêG±®ä)#ß b]±#Ö•¾-Öõñz#Ö•{²5¬«êäîëzϪ¬+Öó“XWR\dùqר¨€ä"%NÞìšxGXWLÜëºîíÿëZðvÖ•ˆÿI¬ë„·ÖÕUl(õ}XW¾ḵ®êæ/Ǻ7•4¬«:¡XWì­Âͼ‹úJǺR÷‘런®ÄÆôRź»W•°®´.åXWλäôźÒ~Í^×M|¯=Öµ^Ǻ~wLÛßÓ°®”·ÆuŽïó ÖkB, =7º—Žuå)¦YÙðç8aãÅ…­8«1Dió—c³{5/,[ïýe 7‘dqÊ H}è¿°{ ¾°=Ï&>o¿è<Œ*wn+½±¤4»dù‡”Þ,æÅŠ,ÐÛ ÄL‹8б“¥É,o+ŒÂ¼^ ,Žƒóº©:Ĺõšl˜BZ<à °^ø[0ïî:aùÛjw&Áw“[f{˜swÓC[Å<»˜Äò÷—8v.ˆvìt÷Irî²GdšHÛ åy›’ÒäùÇaRÝ»A²áÅüý Õýö°f¶3V·¨ ZÁr@ò”6Ô ¶ÇžjçnÚÊ7$m+È·Šlgµåuü ï5ù«Äì­ <ÍãEçÖ¦ƒäv„fó»¸ÈćnÂiñ1èzæ—šò”WP“dÇ¢>è/N\Ûê84/:áÚx#{>èÝ ¬ÉSÁ²­ {c'[6±MçÙ°O˜å“É‹üÖ› ù˜zòÂ^‰l'k0¦¨GÕdU†à”¦²@!ØA!Ä€Bˆ…ç9cãžO¬Þ98Þõ‹ôÆÍfw/vPZwiñ¸çá=³¼0f^á-,î…ñîÓûjYç©À'[ö`ñï•/-~¡Uþ|Óa^Ëߦ¸S-ÝØÁ,ÿïX~ –ÿw,?Ê—µòýjùA-Í óP¾Ušòl«'?v ˜k³h)«!fÁu?¨±ç²YX†KŽñ®'+“œöünÕ–e4aÂÅ g $fy–L P½Iy±ù×] yc^ƒÌ +Ç»úòD©<ÁâcšxTÙrseŒñ‰ÖÀÐc™ê[yÙm&“_IÜ›”mÏïþµ‰q%Ø2x±ø¬ß«'DØ"NüÄ;îX)î"ÚÞ G¤‰ƒϱ† ìL"#?EѹcwªŽG$8aþˆ10gƒº± ËËx¶íDË;Y‚=#<‹˜IÄÉ{Rf¼BzwÈÿæq#”(‚uBU'ÅÝóhónÔîXO•…Ez¶X»O5x±“\}KD0EÔ/·Æ…ø$÷iøF(Ü·Ýü¥9 „×.Ðà ¨¾w4Ìt=#ï8Y¾†ÞÁ/Ès‰ú¹i²ù,‘u¯˜]':Ì—=[áì •÷B².Ïï;ɵ:„wÔ$÷ÿJÇç®~NЉ#Ÿc#ÿL§¤”Ed¯9>¼“p£j?°-Ÿc5ÆàZB:¯™´~ ö¯ó{62| 0<1»8cP¼4òYiøŠ¦C‰?àù¬M'Ì2ð¨ öÕ(÷&ߟÇ%†ó4N=€áÐ#,{šxvNb¥£9¿[IµÅC<ëh^|!±’Ÿ³lĆ·åÀ¹'— ¿& ¿ÆŒÑ¾.þNãÕ’\ ?+K>ÛÄYõH&½Ý\z&q¯ãrþ;8o‰ÃKØphþåÅçü+Õ4×xžgt»²ÉCÖÒS )“’lËØ¹ÑÁ’€saÈÆ»Ï£¡—f57AÆ)Q!âÊ´là›¼[ïã$Ô1Ô»±RÌÚÌL¹1 Ä‹VýP3'Ë—\ʃü…e9q‘Þš·¸’aÒlŸˆ=$Ki‘WfÌ]Ç. Ôªìü–WçºyÛ¨f eþMì›´:· ,t.¿ê¹XÐsÐ@Tu Eõ’M~lŽùËÜÈ4kF†ü{^/zbh¹ƒËÉö¡èrÍì¼ã²ô„…õ€UaüÁ{Žû::%ƒY¬Öë¶NpŸQa$̳‚£’ÓÒP¶ñ´#Ÿg#ùúPY‡‰. Þ¤êÔt“HþÉfVÓ ð)9-F²§«=—)GS¿Å([H3ig[ øËXl¡ƒhàÀPÅx2iÄmeäfÉ_´ò¬x…,HxžUå¡Iák k–¥rõH qŠ”â»B*PŠS{ úhndžÊÐYÒÈ¢\Ù¥–|˺†ô‡-¨?ìÿ¹þ°ý\ýñó¡úãÍ›~Z|s9LØšœv²tòm®ß'21'ûâVnz“êÈFiyaðVfk€¨4²ä›oâZÃÞ±ÖˆáÅ1Uw}Õ¨úâ\JòïX3IE¬'Ù´å@}eÉ3ÎëR~Å(—tÃ󤨌\º`Hcä§x^’k0ݲÁ¦/‘âÖ¢\›a2ÒåÚ «7`¸§q9è´gÁ‹í3oÉÊ‚¹MÎ=,‰6ñX ç±ë#¸LÇS­·1Xg'^g05è×\9æœ&ΣÄì4l/„J´Œ]¡I´ìêWÒ¡<ËFy޹Š<Çåù•³ºÇulvŒ+ÉsyàÒ>™Y9òÍ”Tz¨W²xÿ³å+2ë¶J£Á>«mH§dï5óùì@ fí– ¯†pÛü[%ϱK3ñëÇxþú/%áöü²¾ÿnap} _ß_£­ï¯ÑÖ÷×hëûk´õý5Úúþm}ÍÕÖ÷?Óc(A7‰üªIô]åDZ|“†*y Œ‹óªü1 £ OÐ¥’]'‰tèVñdSº­…Çðò0]}5¬›dáü üu­o‡»°eu'>µ[ïŸIx(~ו¸Äâ ¸î*ŽzÎôø»ûì;ÅAn‡Øî}rtuÑ!¶ÄB§ß÷O8Š ‚>Ìá_Ï…Š˜©¥Ë’biÂÅ}Ça!É«ÙôCK ð-l˜_ïý¸+/ðò¾ÓÒ„ÞûNáŠó^ÿ!ÖX¸Ï½ÊoÐ5¬sòâaÞ-Îþ¡òtg˜@Y>¬Ûã„õ—±?`$|”W½± ‘|²ÔÀŒÎ“¬XÍÐ “,îè€xè€8½Ð¸ÕÚ3-PR °òÌ´¸† ûØOÓ@W»½qBƒüAo°KÑ[ ™3-¬Ïr7c#ýkÄN¾JW¡¢ò±K°>£öĆãŸÛ@÷ÀòV›0£²€š‹íMGQʶ>„Hç¥UÇz6/Nk-<Ž{ôviAÕqX‰Y£³[ÅðJ¡Ó®KMðæ³u­ÉéiƒŠ 7"M¦ªÚ¸¥êxÌÀÑ»™³J{ˆ£,bZëtÛË1“©!]Ų›YZë7Îf­,}{Ñæb祪ã=µK£w9/QñÍPü¯€°ãØ÷7%èݳ™³™Jƽƒ ˾PóhÃŽ ï©Š+óì#dfØ|{YZ-”/xÿnÆéÿ`eLÔ"ÒÈLixÅöãv«ç²•maî­‚÷\±]†¤s×&îð52÷.–¶[ð®%—Á.1«c¬UX†·{%îmZ`eÎíÕÎý‘ôõþ†•Sövúp’eË´ýbö~qtéÉÄFÜ…<î˜dózüP¤cÀÎŒdÛݧĴý¾®Á¢s«°iaX }J EuäPš¶Ž6åF9¾^ìÝû}îÕž­CUï.T+f#]@ò™^µßŸàÞ“ÉÃ&µPáN×]bÚ‘M¸ÕÀ¶{j f‘³¬J±@“#—ÊÀ”§ÑITßPuÚ†¹ý~&fñŸµWwMÇBº¨…t6©òµç{3,,£Ïî9íÈvÿã«Îj¹¶µU§#YW·_ù9ÄèåÈ"–ä?„õì‡ÁЇÁ¢XAYu[g‹}³}{v×öó¢h Èp?¯Mž &LÚ/e¦çÈo]k2]·;±ô¿§9 ”n™0Ûs¯iÑHÝ%è#Ÿk’ÒNfÈ64Mî?U’#¾.˜æ?4çÈïÃóýþÕø½Â!ùÕ¾ W´sëÔ§ù7ˆ×ÆheGYÙ„ØeU%ž»Í‚·®e7Ç;vÎkïË0«4z`¤XŽÅyj[Ímžï[Ù–„óìðžÓÌ·W]¥«ðßÞo(=¬úüRÌýMÇÙž*%Ês)±:ªÞc¥ìŽuðÄ®ÝÿVG} ÿ¢n¨Žª„'œX·5ð´ Kuþ½Þ¼‰÷à ù¤°ÿðOøTU 4a½’-YZ¼"™ùÞ ˜zkáßÖÄÊ£p®£KaÏÿ/Jؘ*SoqÁ ëä‘ge3¨Ÿ0õïýÃc‰5Õ¾…Ôwf“¼3Ï`àmÓ­Õ¾Ñ/üÐoÿÀ¯}ìÁùЧx‘)6ovµïqzÜæ›‡·ùC?_¬À±):ÈΞ{Ÿ}.Þ³Ÿ›ö4퓦tíï9Þš°_óÜ•½Jû1G–¼û—WÛL¿œ='½wkràÌš. ¯gÎJ—Ó[sÖÈÏI6Ë’«oÅcÓ PX5ÌУRÞʬtàÈhU÷4zˆi«`Êk€ùë’©ÀdrÝ#Ïmh ˆCsåyO´¤Š­Póœ(47G¶O¢lér¤jÎ4 bn„Üö·+ME÷V1¯’‹> kuôOú°û_b¥ q,|.ìu>'6ˆåø+ñÛèÁ‡AŽæšrçšçFÊ1Ç\“üáÂVȱŽÌìØdÁû;H“+mKéíæ¬÷«0ø‘ÄgÒt‹g3ðÒ‹ÈQ½—ÿ@Ë,+ŸÊèfÁW-h+0#ç„râ„wD _±/«GÅ5XË>Œ Ÿ©¼êÔVTÝsÍ"1vd)rV¦œ ´Þ^ß§ù*ï¼£ãØ ³íLZ‰'P¢Öªœ.vÃrÄ~bod×HãØ÷öjø1?÷PYñkÁKg­¯EaØsâMl‡“ÉÊ–cÏ݃陯™<®”èõÛD ‹SúYØn˜¸Ë)eo¬˜íIaô –bóaæ{ó¥Hb)9[´¤Ìf£¿´Lâog3[Šû¯¢„‚<¤ ¨xv°ãËù$îeÛ›šîAžf[Èw° ç=ÈëOÞÒhFcã<Û– ¹Üñý‹c$÷ˆEÁFÁ§i~^x …âÉžUõÐa³‰mÙ€;œþ«ŽYýu›°@ÿ‡b9ÜqŒZÏÿÅ=D$ÆÆÀ9€mól‹å¡µÉ2…]Äù­“/n¸‹e˜ÔWãêÅY+@Ê®'[S§sRùy+ð³2?þî.x¬•3¿$¡däÈÝ&„ˆÀ|ÌÒ i®œ iï÷?'vC5*=ѵâ;/B¢„ ’k“¦çû†yôD*`®‰ëÛ Mûn(C²²råÂ1´ÚKv{ã·ñ7”âX³ÊÏ?F¹P”·¸»ÈÕu-ϋ뀯faW‘jQ>*ä÷ë8áë —Ý)ãC_Îe7FYÍïà8lÞÜÒ­Äá³ ¸ÀP9VÍ›5g5¶× )KSbar8~yX'n¹®…•-FÙH‰i‘FGB×£š½®ÙAŸæÛDúËèmMBÂ3o^BÅ€ÏÊóÈÆ1ÚíÂ1šÓÌi}þ¯Ws—Êç´q ƒÄÞÈU¾½b¾Uð¢DìÜ—p@¤yÅq´ßŽ„lÛu_:òl‚'¿w«$í`ÛwæM”V)îñÙâ0°A…¶É˜'»&Šw¬¦ÛÀ"èá¸,xÿ2[̲€åæP"|´SŠûb¶8~ƒ¡*xëž'šÍîb¢£Mð •¾ao’äwCñc‡˜s?æø¥üTŽ³Ì½[𼥋= ýžœÜ“Î;‚>ƒ¸L1»Vý²­s0™V;ëÈqÆeÖð?ܱó7°Zvl¼hÐf#,üöc’¼ZÉr_Šdñ0Ë×bØÉA¤‚øÚ‚Ï,&u#jÙN1o¿é¨rE'Áââé§Èþ•g‹ÖÙxj²†–ûÅîì¼x§ã )ØM,­²I4{ <§mg^K´æÕ᎒»AŠëô&‘ê®s4¸h9Áo1[3›Ý>[ì/|´OË}RÜ×Uµ"©wÉfgDg-ްTŽàE×ÙÕ©0Ï¢°ž*«èÀñ“f™]½´ÒëX£gë n5öK¬ô×1" ž¼¬Wb¥2*Àñ¥ÔRá£*¥žüÈZ*eÅñTzìý‘M›qmŪñ\©àMš4kÑ͙ †žü¡-qü-¥m—²·²¼]bžåãå¢`•œ•,;ðËÃæ•_yàØ˜óS¹’] ´/ð7¼@Útvw…±Ó'á´ƒ`#Þ-¾”Žl9LÜ„¨(÷Š…SàÙ±y~Oö-¾#ŸO ,ïŽÃóαíògVÄ4lå6ÐÄÊVn£€]bë©ãK×=Ò|ôXÂö}zVfŽ|q,ÌÇέ@Ç=ég·ºl@^ºüûþ¨0T1»2'q‡Àö°³ÅŒ}Ùt@š=•vOmCÂVö}F.”öW(MŠƲ+ýïAf¶yÎ } Ówlè÷ªõ÷p´a1ÐEœi™;Ø),zù­®pÇ#»¬ŒÂ#&¨=»!±HZ&(;Xu§`§%â2e;)€dHq‰Å|Ôq`ÁôÄ̱©œ÷Ä©€á‹ŸÁVÛ݃<ÛíEôC¼–²¥ZÄ^løÓÉ ²e±)ëør^U‰˜& )š‚v‡»­—§ §ÇÌÀòÌ~­¼¯\7F^‹$qR¤?ZY'¨ÝCï¨QÊCè6‡‘¢¦ÆÌ¹‡DìµÁ†Lº­ì úZ)säL‹4ÁŠÃÖ sW‹È¿Ðê¹U¼‡¨žlAøÍ]xBU£Eoóe)>KÕ5b4Õ(,9ÞïÃõl`-íq=n™³ª—§¼I#M¤Ä¼:hZ!ž›+ÈJÜ‘¸w.vŸüïxôHÈÓx¡Ž/ªpÍtÿüÁjÿn þÍ>)Z^×.V}>†)ržt¤œW#¦ÕyŽE&ÖÜ'xSѲsËâ°˜]ÝAl“1d\”ÕHCb¼!Q’[vE‰OÚý Ô­V©Rvr~’˜'‹R½Î“bÜ3⟱U)žËfFOOö,þì½ |EÞÿßIB`„CD”#á’p(!L ‹„+@H&$Ë9¸ $A†&]ÖE5 @VPЈ:!¬Feÿç[õí¤3L÷xžçõÿ1ðΧ»º»ºªºî£û²¬øx@ÑyYè°kÞG°zú‡RPµì†ªÚ® ý…Gô/0«‹ÊØÉò(âÔˆ×Ê)æ†=U'GF†¢“5J]ä²ü~ ?$'L R`N×" Þ‘ñòi_ñR>ᑵƒˆ—#ëãedø¶íäÆ`EqàtUÙdÁG²>h*I¯gs§z^OÚÎOzæÓòI÷¥Ã±îbyÆšwÊ‚:è#t_wYû‹Ú¨CUCD.›j”nr5£H}.RÓÇ—9ÚÞk(‹÷ж½•:Ûî¦;Ë0#¢nߺ¨ÛR‹º~u?¡øøÈf ÿÒ ÎÈ×ᔲ-lᵦ’ýŠXá¨ú{,G¨4R©>²‰Žv-—š‡Dq"Òô›wCªé]jTF V¥º»x.°%Ÿ¢\¡–k ÖQÒ`QÕàz˲s¦’äyÎçö“óϪSç|ÿÑÎþŠ=1Ϧú9ªKR²u?Ñ‹Æìݪ*‚r¶x¥Ê[5ÕxQ]X+^ImäusèÑÈÀc«L¥?‰LTùŒl­´U€ZǵƒW­€¶ Á«Ä‡ÅïÑi³ƒJÏ8¿QcÑ:×?‹ÊË1õrQ4:{<‡þE›ew#Œð‰û·ñÈãv¬Û·ÓLºZ»¿«¶ØÝÌô×ýª¥ªl²0Úéݹ¾&_Ó ÞcîõQ"Ö V¨ìÔVÛaš½¦>œQ‘x÷<Õ+ÂÎÔ<ê¾ ÊÒ uá1×ýä ÇIÙf/¥n¢š/\–cÕñT";‰¡,²j'ì¨yUןl¤!ÑØZ™¯•Ò uGœh¡©E"ÿÙe¿«\í¼åL±HAŽægŠ)É]htñiŠc/ªA‹é=!A‹M%+èR³‹éê¨ð]¶4Qáþd{…#<ìŒútÙû¥½g¹²I]&¬Xxjpü9{ :ò´:diøaÇ5Q8!¨îÊšOËë*)¨F^T;/SzÔÕy©£u—?FVÖ|¦ÂYn³¨qR¨««Å‘—Qw;”DÇ ¢£Xušêñžó'Ÿ)>}ËU3L¥GšÉ¬·\Tˆá}Ö¬n ¸ãšºŠUóÜÚ³8¬gÒ`xkÕybÙ"wþ* èGgbΞe£SO¸Äë‹´¥°õµ´m³D-MóöØDÔ¹){;EÙ›ú¸ˆ(² ¨yŠ£WÈ3êâ#¢DB-ÅTâi*в²×L”w¯Uoè~Ðå<v!g­u¡yr§¸¾.W ¯¨KÉ*×&z® W£Ô WJ÷8¿õ´P§JÊá~\ LœÁÁ3‹D(™J«D¹Q«m1`“©ôC2 yE]&bÔWÊ1WìG÷Ôˈn9hSNƒiGÔ GØ6Ä®EZìzŒ\²ýkjz é˜9¤“©¤)ù)ö˜|tËAØc{ž¤ µ‹9Ž­´ìèã"¢¥í·ß%æ'ìWC–ª‹ÉÚÁ–SöveA¥â,ƒ)|¿Ë²ÏT2³ Y¹Ÿ.hUg_M%®R [èMŸ¦RŠ=7ˆ<çÈUÓj+-DîqFMÙ ¢²k ¹5–ÝÎ6ËÊõEòM´†VœÓNMÙ½lY}œ0•Ü Úª±»‘Ë»D-L ê@#()\çœk+›ìFvEýœîuÝeQÝQ¸£ÒÑK5lÒâ&ªýÎyï¥kÖ—ãª($brµó€´I´R»‹¡ dpm©¢àt»«[‰¼¿z_h7ÎG!Gï]mpÜ€& š²ƒ“ŒöfE Ú+ŽeóQøVá®÷œ_‰Z{•§û9Ø¡ÆV©A²Zm©r¬«y Ã*÷JÊŸ“ 5ïGØšÕ ·©b¡ò¢ÛŸ¦ 8ɳ…ÄÝÜ {Ri~;¥¹"ñA®ÑAjì6ul§å6Qýp4U'»&ŠFÃÂmž-T'sßDNy"5'Îy¸}ÑBúŽnù ˆ-hReK8}›ÇfpW·$·oS'„à<×u®±Ô£NB5m#%У(wÓN„§ms„ˆší6Ï&JpîW[ÖÙ›¶mQ%²²<?/îœè~ˆÏHÛ&3Ð"çhºÍ"ÑÞ¯s߬z{îßßàÈØ–ZËÈãÜæŽÔÎsWÓgøÈôUj°»o“jž-W]+w«Åœl‘ï–EÞ N“»ÔGÉЕÜÅè ê³ õÁ*?YssY×»b7¡òë¦ “ ·¹b·ºR6Ê€S[k)i£U™­á!÷;:«–õ»Ft V"é͈i›lŸ«ië]iUÕOQõf!ŽÝìWs¡¦Î r ¥Ò·:ŒÉê_ª¡Ì ú&š» œÑáFç?‡£ZˆfgDz qÌõ^€Iõˆ{ ñù³'Þ ^­«.¹ *›)†-;"óžØ ×nSÉ:2J0”¯:qÜæÚ4FyÂ¥êý§EË6‡2›ÇPL•¬Axê– ç—H©Ð²K êbQcµ×›¢†¶‡Üf‡p™0s ˆÚ¥¨¿µ)®0¨Áhd×Ѓ¯¹ŠÝ½h»¬mvu¨ùùÆ Ù’®¹ßu†‹SéÇ<YNø›J©sSMÛÍ/DÅE¢GÂÑ‘^÷ýÈR ²ÁêD H|6¹ö=êÂÝêÈÔ³ÕØê²F~A]D·FXÆ£^âŠÝ‰öÞîÁ޶‘ôr– ¶)¥Zn.ìmË‚V«~‘Ü; âlµ•Ã/Š|åaÊNW¹¨ ¾¯Ž7Üàù¤æAOÈÓÒgªg‹*‡‘Z_¦(´="ëä¡rž ÊŒ#½5'Äèù­È®«çŸ—ñÙ¹¯,ö´{½â+ö˜Œë²˜¯/ê?8g,ÑÎX(θ_”çßR×"¼A:^+¼&W% µ-pÙ¹êêsôÊ¿êãç¨?R4jŒ¦’k±W]vN¶Y a{²oî@õ-w§õ\ñüÜ⊟ïù(Å Cü“äÅUgðì܃_ðT*ÔCñ&U·ÒŸúqI5¥#­AWã'—î™›XºçÞkÕ‘ãÕ3 [Ã*?Ç­0¿6Õ}±½Ç3^½Ÿª]rŽñ¸¤TOB—š×RÝ¿z.zj¾>3ÒÏÏñIéžûÚ«#·4<Öý½kÕìPS» f¾Vóœ{þ³=õkCàÄ,µCVééP®Í Öê;Í`" rmwN¦1é1uwv·–“k³ŠïBZuš×EŒ§;[ÊÁh×ObàL¥lá‰T÷gÓÅxô‰òT÷ègjÍ'H“©îë±=^¼;+µ~<úÅé<Ý¡¦¬\Ì›Ztj­¨Œ£ —šJ~}š NRŸ®©”f4|\㺮û4í1-ØÕŸŽ¹®+¡¿-—â¯{Ûø”ÉX)úr‚ËVÒÜVZ/W^iXLdÔ¼3ÙUÔkø;næµî€u<&žÚ܈ì\XU¶r¼ø›æÑH3=r!j¢ú$ªed0Óßõäx1dHã„î¥Ýiú!ÍïríŸBÃô®™þî‚îüvñ¹×Àî/[Ë76¹nÂÕâö5;Ö W8 aj^«·¡§fƒtåuÖ ñ|RŽ-¹ÃaaõèT-#no"‚fûöêüv|îlW #ÓÆýÁƒ›P(¢vÞ’.Íò"äÜš±°®– á ¢õE1Ï6íTÒLE©Ö[i9-÷Ή;?Ø ¥<Íp—vë!‹wv «@}ùÞ­[‡ 7)®O;{¡f£6FM}^e)¢¯Úi䎓JËjQ üd*}’jOš¡Ô2lOñ½sÓÊíÑ7ÆËÔl*-¤%Wq…(ΚJk‰q=Ô)TnP#ZxÊ1HEµÍÑWÒuu¸jдl~kÉ9ÊÕß¡q<— ¥RUNÁ+ÃÁo™ŒjÔdj±”¾;&e¿”}¢0©£ ®Ø}ê½ÓP•v¥íW£²a}`ñ\CkSI.Ùd)—j¹.;]–zD?BU/ƒÉeYª6uYJÔá´ Õ¹Üõ©$ ­Á±Kí=ÕØÓëI†€Åç›™JR+eÕ9ÙD)íH{ Kü‹ß3N[jûÄc)/^Xîwï£jT?ròféÈmR6IÙ¨sòFuÜ@+®´MõNnf*)¢éíu][eC†•ż}Z»U·­¬s8YÆsñq]uJ¨ë51×r‰(ËÆÂŽÒ;Øè«çŽäÑ[ÿò /¸>>ûkÿvw@ø‘Ùþ®#e!ÃÑi¥lÈCŽ~ò“æbáǪáC§9ü{gä“âˆ*¾pMÀXcñö ð_\mmߪKމrÒT2™"È(Ãà·eÚ_¢/¾“Ša<‘#ÛÝFU˜e©!r6Öö*ƒ*œgÚrÀoûöãU¼n; œ*—òÙÍ\¥£èŒ×ß+>‡ôZW)½ºÎTrX _Ó6ÝzÅѲaØ[Tá6Ð+^ƃ ¦’iø‹Hû6ßÌ´b»Üjb*¹KXC¢ˆ|À@Ó?–Ð%hð³liGu®U›Îô`9E«b×¢åí>s÷¯×v1ƒo­ëj2¸Ê¨ùïZä/½¼‘½¹að+¢ù ™éþ jRu)-êH}qFyL}Rü]I>uu*® ’ahZLK”=âÙ¿MýLüHÕ°…4²:²H´x ªs5šÍëÛîÎÕžÙFÏlƒg€;f‚6• Hôº,«‡k¾xw Ýê?Ê>Ç(z£òuœUó™wíà‹¥°z¼7I}Š6)ÊßÍì@=œý¨IK…›lÝrM0Ý(!yáJU ¾sÑóîjœXó)Ù=Õè§ó\÷•b[T xeWØu¥x¡xöîŒ@ùµ³âe ô`Ô F$Ëð÷æô³usíP#Œá;sw$z^#[<¯‘½î ÞŸpoõÛteÿ‹¢/Ëñ¡´–=¾¹™;]}nÐ>1!{g‘¡ï_ö+ßV¬]‹;×,SÓÖª3•±‰uÀõ“{¸óWOõšé°Ç¿ú š+QQ¿x«‰*b”ã¦ðݦ҅ôÜ ¸X¬.F<|1G¹x·¿˜'¦6­©V㜌ê“"J´¨¦Lr¤(®!›¿>Û^mÜþ•A]IIÈo/"˜Z&ÒŒ‰’JÊWÙ@‘9ô ¦ÅÊ2ڦॼ޵’êˆËFUTJöÈ·˜ ^% µÃ¿ÝOzh‡ÜB‚™#j¹jY¨È(\«D’©ÌÑrAæ¥})ý:×P¢© ³5”h¶ç#x‘db׸dÈ)¥¥䥽¨w5GÊó&2ÉÌIDrYKÉ%Õè·RœY&þ>)¼×¢\—^¾¡Ï®}@MJZò\:«;_A]×Ôü"y¨zɯâ%DÛ¤‡T›‘â×®9a¶®HÛˆuÛÕ¶õ¼ÖCD5²Ê½®‡ÕjJÕëD<;êøXí/bØJÛšª£{ ž­‹gO’ímëãYöRÄk¡ÏRÖ¨QÆš25m ųęJ] !¢}fCD«¤öç^ÿêE¿ÉˆÖ¯.¢‰ç¢®âˆ¶ßTj¡ø¿JdB2ŒDPˆ÷ˆˆ†ü¼•K‰\“ªE¸`Ô¶Õ­É`”ßh£18Ñrߤ.Üèw8ü#G´QÕ83üGËVS¶¹,Õ Ô˜bH2¸R6UÇ^¹k÷íK¨D/²Ø^}u~Ñ0tÕV·¿(Ú&SBÕ%T>"AŠ¢*¥H”S®s¢xrí¥ŠK§Î;סFŽÚ>üs{›r”¹ƒTKIñ£_3´P¨/†&ÏÐ4^êZ¹@$˜lÜZ4¸vl?iTß^ Ê  ÔE_QdÚ²‡ÒÐÂåŠRöFIäz{®ˆ€çRŠŠ=HML%ÿð“oÚ(ÒÍxY6\+lvêÒΙvdº¡4“!Š3‡Hzœb´B&B2]DzÙÐ ½l ôòÐ,N/8¥p¾A×8±Œ6ø‰›¸ßœXO—·+(¥¬k8…\dÕÄ´øJ“ϊ׵‰”A‡ýÂkþ®ŠÙsÝ…­òR¿àš=åa{\çUËòêìó"lUËÈ ê|‘F*/M#…"Uî…ÝëÒÈ"u¨H#¤ËrN&£zÐt]ó½ôñÈRø\L+ dtM¹jÙ ¢:›XWo@úx£éã0§•2}È´Ñ0]äÔ§ Y\§lp‰s´tÑTnõZ:î5ÊPô3U¿FËH) ‹;ž½k®ÃÛ0nÿÕÕ"¿_M¯Ÿ È»Þ%fšJ¾â(󺨟PÛfÙØ Š“†~/”V?™ïeÒÉ`*šN^‘¦>›½ND›õ ¢ÍzŠ6sêê&뵺If]ÝDW1É”Çt?½W‘§Š"8U4W y‚(Pnø'•ÓâðÛtد"8±ûJa*.õ ¬Ùƒ;¼¯®$׫óDñ-ãKƒâ;SĺÚ{k]|y ®ìñEÜ…²àW_²½âK‡bŠ/ÙZÁ½^ƨ_ƒ u="ÌÒãÜ_={hó„¢Í³NÌ}CåÊeYáÞ@CP“=¦"š!KžâìŽrç:O_s…ûEqxâ§Y›Å„ Û×õ¶ÓbµþFê|›ê$CM•iË4Y}Šz3·Õ¤,äšðOLÅ1?‰1šâÁ~Žëù,~Ïðþë¬íxõ-8ëLdGç1uŒÑµ7 )dM‡+>e.Köœ=BÓénÜ~㚇²×5Îps¤µø¦3È/î·â´ é­ê˜ŽÅ_5Ûþ•ÿ›Ã¦µr^]¸ºø¸É5Îèº7Èå\Mu9êÜz7˜"ešÑ]øþj7¤"_úIUÜÕ ~¥ï`—Ý:g f´þ9ؘ€ÚCÑ@Q¿ˆ9þ Ù#pÔýnѯZqüÚÜ òÝ)ó¢íÊ5­cËœ]ŸŒsUº¤žÏ·Ÿ4À5Ë–)~ÁÆâ¯MKÖ©´½Ô¸k˜Ÿ¢¦Æ…í «pg+´q>ׇeAÑ‹N-§Ô~¸,¤¬mX·ÕÏN«EYY št±µª…^ž¤¦Õ–%¹’ŒjJ…6^ñtñ3O [*Œ¸éîÜd­ÆnR;?¨Æž*3D£Q¿½Ê¿Ò ÞäÚRëšh°Ô–%¹ŒÚ„…§‹÷šË"ü\–SK…‰Ç² 6Ù^WSN•uNÜþµ¿ë³€ØÚÊÑåV[\äJÛìö¼‡(_¢:kKϸn䑘JËnqGçVSI˜xÓÁV”Ü<}báVœš¶¾Ò²VžºFH3ò3\Ue§±³·ê¬ÿÙÑ-K-¦Ñk>;›¶œ+ y»Bëu.zLŠ.äÖªiëÕÈÎhvtTU·è$s¶R_­RäÜvâÆëÕ©=hi«“¦ íAs¶,Õ5e+I¯Fús-ÜçJYáJ+GîLcçüL¥!¢_ކSÀC¥…žŸ2³Ë8÷÷¿]¤Tç:;ÑTú%‰¥,§1’f´Ù’Fº©›‚¢‡]zä"‚#Ï=û±º•FE¢i¤w©©¤&éSy0 ò¼¥GÄ0öX¹ßo÷wíÃÖÈL.-‹ئø«‹Ý÷‘÷]–å™JÒ8s½ûÛ[åèõ@…† 4ÑæAÁ“°Sl)Gb)ïû+½òß”µô*9ղ͙JÃ"òÛ°²!ï‹ü–5©î¯¾DsoÊ×ñdŒ7•4¡Gº†fó¥­wmwu*›fæZšVðósê«t^Ù‚¦†°ÛÝ(ûKüüœÃ?ë¹0ÊöýÖãù«wÐ3ùNÌÙªFR§Še+ª;´.äÕÑìÑg¶#r!‘A:7Ò›òQ»t Tc+Ô‡¤3m–=&¢ï×EüQ‹¢Á=Dú¿‘ÓÝÝánšÍ^,N¯˜h*¡ÅÙâÕ1®w¨“º,y+2ÚZÜ|U‚HC¢¯Œ\r§+ž]u€ˆ®hz -Ò¼F1>ïê¼&Ê…ý‰†¢gÉO«¨òN@Mß•¶Õ¹ãL“å ½n ‘ŽúrHK¯i›\OR¡dï'2æðÃöëèüb1ºÓù$åÁAô£Éa‡m§2Uq®´íãá¸>Ñ´•yRTSDTI”õÙ€7h§¸ÒêÞõ+M{ÄI£"ÜhM´¬´‹ ž¡øÅ\!(RNU§Ò‰Z Š÷*»>éQiÈh°¨UØCÊB¶ª#]£iFš¡Õ!49·ëMzìdÍ)§\´:T¼„¬bpKƒs´¦¸x"¦UBëd¡xޱôÔêžÝ%ƒ¢]ñ:áþ­rȽ…h1•ÒÄ%õQ‘0•Ò›ÚÔ-œ–Šþù” õqáé´"×àer™âúR½_ѳxmÙRqÆìÊÆíÏ,&“ir%}äº-ÒëIz=WÑö þaÐôêH¡$2 µ_ùð¢çEâ@Ì]ô¤H]eÔ¾*Þnë^ú92vûDÇes.4îªâ zÕ¹lJ³ïPðo–/Ý«)'F§\…›—=.s¼§‹?0{PZ‹]äÛÔes}²Ñ¹FM[ë y™Óšêàóâ»~hAbóO\iªŸ'“ÕÐüvçÜ#g-­çYKßñ¬¥8X󹘢D-¼°Šê§.ò¼°÷¦¾ä9”8ÕÁ8Þ=Ÿ£ÅPð}¦RZ @¥dÚꀩ†™]’ܽè ;3‘>0ÁTJï-¤\_LÞj'JÇÎÕa•‹%¦’{ü¹\œå¯•‹<½ëÒrV‚2§Mñw»_äuö3•±IT&0×—‰Îª³|ÑÂåmµ¢±ä›sORõ`z១“ðøçÕb–IJù¢At.ž¢©d‘Ÿ®4¥ôX»o,nݳ}îndCi»Q ì0•.s:«ÎTJ«í©šÒV½×àºÇ Æ]cŒêµxþ¥¹²UaG0=À…Ux¢®!/Ó3Äñe"~l˜æ:l*y…ÂN—Ÿ™J¨ö>×à¸M¹a4øô“ÚW]á Sï1¸æÔ$£k¬±ºÅ9êwœ€3\SDÓّܲ¡]wÕø`ÑÔ䊠Y#êè ±o vÝLûvƒzo°k¾Øcp4ÛÑÔ• ®ˆÝŒ»…ã®óƒh¶ÜŠê'è³!i›k~vÅn®Y ÇÖ,*®zZ]¸¢x7EY×TãRá!q;ºý2uxÿ¢¦j”Wå<5;Ã}£SÔΫ—ÿ¦Èû9”-Ü—*C>e7~·B>%+S }¦HÌh7•´ Ï ºW×\ðŒ¯öPܪ‰|îªÆ]¦Ñ]Þrˆ»Ô<$ò$ÕA¢æŠ$’²ÞUéZ,É7Õ¹b}[‚ûùP‘vUwûU¾‡V¼Fµ{ìF­­¬«/Ý]\ ½’²‰koññ€D5ÀõSØ÷‚›‘D†ð‹%´±_Wp]%ßUYVh“É'#C×ÕeÈmË9óptÐrãï»ÿ¶ý7ÿI®Z9~lð9*}û-©ù‚Ö'ŒMT“»«#º¹{ÀI'Üoè‚‚µœßGÇcÄ»Þä9'tçhcÓfê'GCMj¼íRu¾]PG…nÿÚ0ÁàÚ…ö®¿ßn—Ž,²¥ð?µl>7•RÍYë‰CÁ2ޥݣu´mß^eX"zÙæÐDTgúùÅžšé'§£–ÅÖ¢ag9å~b<­¨um« Ï{»v 7¨ý‰^gz›m@ÝXÇ ™ ,Yx*ÁËŽgÓ~õÔ¼‰K# 5ºwwQWÓh†ë-Ge2èõšÝåŠu›J©²E]SðaÚ u”#àn Œí5F×gjBèö¯ £ Ë"ØÃ¸Ñ^S©˜‡y‡ ÉÃSxø~ááBœ>Fzø<¼EsìyÕrÂýBªð0ååðî{ ë„o+àÛ·«2¹Sî?ï´%û„ÇÓN$xÛ5~¸¡æºù§Õë‚hîQ—¥Ö…J¬[ÝJ#»ê&jœ™J×ÊŽªRz}Zµ9È+‡‰îZعJ ‚ÕªKÄ´œÊQȾ-UŽª¦ÕÊåjßX&fÏl0:oYº£x¯Q¶6‘iºìS“F!÷SïY€ÐSM«òÄV•unQž¨$†­»ÑÍ›ŒøHŽŸk•CçÌþÎX0@MZ€ÀzWUÅ ñ oÿÞ?ìhÀ|CøÏö å â?n„›'äéHšü³­¦¦\µú&Ö;D³¸6Ÿ‚óô=RnQV(g&ªy©šºìb©ZGŸŠ£r޾‡®Ž3l?éïJ©2•ìªËºü½Äkƒáš9†ÁiU¦âp,U碧ÈE8b;Yý ¿C8ÊWÈ\ë:ጀ„ìgÉM¥3j6–×nW_»¾.pÛß³@qš*›ñDñFcÍmi8#R†Þj±½Qj^ˆ©#hòø¥ ;:8í˜}[}0ª–#žÕÒÝÇlßÕ¬SGZè‚òcräŸ|åð‚º \ÄA9…‚’†ƒËËÕ–;áДÒ=®oœ]ÕvT[®l² )ú=»–½·«†tžRa2n¥£bâwƒ÷vÌu¡î<¬‡+ecØjño¨´¬—+¤ˆI¦’/ý„¿QӦѸ´MêR~ˆù‡{\±k\)«eO¾ºp tÜá÷SVñ ?WÊrSi[1b­»\óë" ”"–:&xæ<Î¥îëk©ßÀ´b‡éõŸ&”ž™¤N 1•Rì§VS9uÙ-uŸÿΙ0ÑTº ñ]Ìž¢ú{¹8Ëy”¶Åù/ åOªs“ú”\ÄþwWZ‰=‡zÄL3—¥Hu¡1‰R‰,^',ž2QÞ¾ôŒ: 7á/nÞUÞû^qÊDTÚêï}ƒý½Ûb{äà…%¶gÃP‘Þ@eÿPÓ–L2R]zŽFÆP¬5•¼G.Ù•…èX\åoÚ²1ccªÚåÓ§þ´8sLS™+6·¬GÆ8زbv€Ë²B¤5;¿÷j^¢ÐŒ ½@¿í®ØåòÅ« W—z·£ÆIF,›‚³‚}+³×]u¶ˆ‹ÁoG ê++J÷ Q™²^ä®ýb.ûŠ™Á‘IîŽ_€›\"GžB¯™j*©]q›\Íͯc¢¹½Ù>Ž?¶œŠãI4,w! ÜuÈu!`ª±Õ}(˸Ÿ›Jô3ñ9Tþ‹Ô!o‰U.åê$Cõû¿Š.åêQkšXûÝØ]–ïP†˜¶ôIWiÙw-2€7΋¢ÿu7Ҿ˹¿Ò²s£eß!·§@uüN :êÕàg_.P8uÑ3gNpý8ûÂÕa•ƆU ýœõ«GŽ%j…v¢E²šcåa5ß©±píÒJKÉáÌåäZWl9²çË8¸ä_qp |'<gN¥XP.ŸÙ.V—»> ¤Š1â€Ö‰ãÜÙ'9W,I¤Âé¾ß8J§NÜe9,¢t_ŠÒëE”þö"Eéõh ‰(‚fãZ¥)r¯½¶QÏlöéÿK<#{ \ç„g6Ã3w×\ôL¡(íúÅt?ͨù–?‰ö¬È*‹*-'N ¡»hmã©Ëç‰+tAƒàغin)Üí»Ï•rÂ嬢–~)Mç?7;Á…Z3Ï+<ëÄ UTrv,=㸠XWŠ›¯¦o)Xh†¾ËÏ…Ú@Ê5ö ÈBN‹ýŸ.Þ*æÜª ÷¡¸n)V³Ó›öá¶âíZ'„õÇh4ÂRUw«šGÄz×cá–³CqÒ=¼,‘ÝäXI/‚¤ï$¸ém­È°‚]£ ¢5Mï³³œpí*>sƒ3ö‡§›cTc÷…ÇVÙ†ÐDoKì"wÜnÙw-|n©’/4£`:(kAâ[–*•ÜåF³@¼ ž]Psp«Ò½ÖeÙëé‹%ªeß²XzÇÞìY)8±‹‹?9Ikã~üä;Ø%O¨D »Î¹~<ë<›~b%¿žµîŒUΉ‚8†À?uS:M%/ˆ¾Rrt÷s×|L5ѽdÓq×p7Ý‘ÞC–âþÄ]ý=} ÜR5û]Oì‘Û’Ïj6‹8“”¸nò­ÅçíiC¡©~Š¿bnh$ÊÁ~Ð5(Ð8¬eÎ0…-›@p«@c(gŠÚ³Á80tMÁWmÃÛà tMÁ·íûÀ`NJŽO0+J»ÆðõÆ÷À³À Á£áÆÀ0ŒQ /P†À]ƒ‡Àë`5X¦-C¯‚gA1°ƒ$0 Ü¢˜‡šsoQŒ‡9(•À0ç‚÷ÀipÇÄ@£”3…SÛA-¸c*ü¦ÁP*!~c~Ê„ŸÁ.°¬óÀ4P8 þQàМ™h<^É4>–‚Ù`Ì`ŒÅ’ Œ°ÄX’-JB9ì0# 4î„Öò6a¡ÕïÃÀÚÆÍ Š¹u%®ÓmëiÌ œY¯c«ŽCà4»*ÐhYU¿mî¦(Á3tôi„Œÿš}}oÈW¼Fò/ÊÁw`èùäï£Ùg|á ¦"°<·ö€ã`+«F…×þ~Ðî<;0ôgÕ浟ââ• –$%%nL\|jt„%*:Î2Bh‰LV’#â’"-qÉJ’el 4:"F™hIŒWâRbb”¨øÄ؈äd\1<:."q¬¨7ŠHˆOJNŒOeQƦÄ#úÅÅÇY”DKjt&E'ጠ¶-#R£“-bK‘›°‡n¯ÄD'%SÒ‹Êɵš•Á昜|(.‹ŠŽ±(ºË¢ãƦÀÙJdL|’E‰‡ÍÊðˆÈ1pdÝ]»¥ÄE'ũɖÄ8ødHÜÊŠW‘'€[6#ÍókÆQ`10¾Žôž¡[ðl@ÈVÄ}°î ¤ß7‘6@Ø[xVà8 ¶ïûÁÏàÖ·q-PÞAøïºelºÃ–3לn›á̳æ;ìfG›3[úNÈ·çd`ßjÎ/p˜3 ò³ lyéÓs­Š›k‘žk¶¥çÏ2ÃØœ×ÐBöÙÙBqÿDg¾#'ÏjγæØæ™Óss 2Ò9ùæ¬ôœ\»k¡gë âÞŽt\mÎÇ]9³­l+Ù™iõQwN(€¬63\Æv“»ù*òMºÝ^‘“î°fêαfj××݆­ÀYhÎ,°ÚÅeðfF¶9Ãi³‘'¥ãÄ)^÷·Ì-´få·õ]p;sVŽÍŸd§ÛÒ3Èij ½©»¾1ÿç9s9…ð‰ôy¦ô‘ýRÿGŒj¶Ã 9Y98‹îå”ÏA®ÊÊÉõj>î?;Ý–#‚.?Ë:7ÃjÍ„3Òçæä9ó̹ÖüŽìË]/.˱›s ògÀÓŽìô|»lÖŒ[¦k"FŒ‹ˆ‹´xû!3WàáedXívóe<“¼B çØrxòu÷º"‡ŒC†ŸØ :§Ä!m©À™••“‘CÇg§ç:­ºÇ4*"ÁÂÑžh‘&‰ùV[Ùž3_{x>Ã?ÑjÇ“6d™E®eI4ÏÉqd#š“¢' {ìyˆµu>)pÚ2t49ÛjŽOaièáŠDqu7pq'fá‰úë“\gÁ•!ëáeâ]ŸŸQP˜ƒtÓÐ –ˆ+°$%¿.IšÅs·ë¬ ÖB˜`–æäßíÌA.’åÌÏ <ä2á_ïíú¬Dçíúç‡çC¡ŸŸ’i¹4aUƒð×ÝO\¯å#¢c\앹6~)ù³ò æä›3‘q™ó ­:ïÚ8ïÌÍ™nK·ùŽ?Ñ”û! e‘vy]g¶Úl¶Fî‘ï#ßÌF.–žk³¦gÎ3O·Zó/Í6ë~‘éù”]ްDÄÄÄGF$#lÌ…6‘Ã#Xb¶œ9äÂú¼ÿ²×7Œ…õù»SUê€%>QŸwˆ´£å)T ¡DtÙ´¨"ókÊV9„Jotìкð÷yŽvƒù…'=]‡ÙšŸIÃyQN>R{~ÏôÌÙéù9ù3ÌѽãëŸÏï^ßhÔÒ‡/*6Ñq”*f[md,•-Î ‡Óf½´\Ñ~–üÌ]j…ãðè‘SÙFx6&:99ÆÂÊp8’ÏÖ zœ3''?³`ŽûcSE6e³RÒæÜ)Ía⦓Ó.ï=%² //Á!ŠzD9u…`ŽC¤§ß¹>É»ØÍ·ÆYRoõ*ƒàmëÜ»ƒI£å(‡oN^a.JGî}PRYd¦*(ž’Èkòœv¯ÚJÈÍ)ÈœóóenÒJD-¦>Vy›ZmT†Ézš×A¸Ç÷U™9³Ñ04OŸ'J„¨¹M'÷××ùzdBnµ[s)ÉdÀ}uÕN²JÒ<;b±Ü¤u‘˜µ¦;GŠç‡héÌË›§ëQ¨?‚椊^ý!*Ú3­Y9ùTg£ý9éT‚à!Ëý'ˆÄQàVˆV?å…—z ¹ÞË ¢'ÃÛ!ÒЗý”$hä$Ä‹î3 [Ît'Ê1ü¶ˆ>“:›ÒëÎÔZ)—õ—;|\M·©+²Óe};ÇÛŸ³P²ÊÙû&º#—†}FÉ)å†ÿ¼>™œA=N¨>Éò§®Åe’.J2ÎbÄ3ͱkÖ&{?îK"¨îd_÷÷q½W4¾¬—Æ7œ=™€Ck1ÒÓºä$܅̽î$žFºÙŽðL·)2ÄáV.a›]D½ ÃB‰ðò›° Ñد(û|¸T4ì©Ê­EÄË$”Ë>ÿHý£çK{G$%¥ÄZFÔ5¶½"ÄpŸˆÚ²'³‘ð#gÓ]㒻ŧ$w§ò€w£ãÈಮGýBÞ'!Ñ’„kDbå[Rò…›.{½×ó©Oš9 Óic?ïçÙ˜ Š;¹‹$_P_½¼¬û"¹38?Ã*Ëïö;¿Hïìà¦O_×ÿ¡ôé+9^’G5’¯Ìý¾¢eƒû§s%Cë_¡Â˜ÓxŽè˜óŽðÔ¹Á‡äΈÆn©Ï1Ìu a¾ÌŒ_xÄ;–è®O÷îs³ÛqªÛÙé…š{/ó|é^ :f.éL2_z­Su2ÔÕDÀ ò¤ˆ¨Uÿlêz¤•$çtÎý."„«.Éûĉ¢âÌ'êâé¥îr˜sŸV‚eÙ òÌT§Ñ!e#ÏOÿ$ÐX–m»H§ËuÛ]ä¸n€ÚöE ñPU ÑMÃxŸýâÊ(I‘‰É‘£”áñÉ£äh—}MŠgQ’R†ÇF'Ëá,Ÿ^ ‰ÈÎꆽxÄV^Õ[¿¥S´ú¾¥aÇNýðãñ0[#£yú!;Å«7ˆ³¤*ñ14D—CãhÚP¡¾Ó†ò.çÊŠ2ñl ‘Úñ¶ž8¢Û7º(ß(-ŒzÎú Á¯…q-Øÿìò«·O»T‹ÆtphÛ+uz^·Ý¦UCj} ÊM-ŒÏƒ7ÿM4ûR±©cÎÀn=d§–$G §.Z%%6"iŒü%9›2¸Bê]“­9Qß,È+¤65~D/]¡è:´R¿8+°îz4¹ìÜ1Ý^…¢ÚV`F w ËTp÷ø¨ä©‰ÉS£b"F&)=QaHwæ:2Åä¤Ï°*=©_ˆl¡Ð¡ôœ>—z6ìJOg~޶9=g†Ut’úÌSÓmÔʤ¹Ù,šT²n „4ºg7×Û¨ôÌÍq8r­—±ô_°_o'n‘_‹–«h8ö´Y3P¶õí¿†‡æçZç:ìtu†+=óÒ3¬¹˜»Pò¹ØÈ¶Îê,DÓU4(×}ÞƒìÄßóŸÖîoމžˆ|ÄÜSvɈÇ|ÑOd†MZ¬hœ¢…‹Må.³’>Ýž@¿ñâ§$Ç& ÿRhâMFh ãl°©è˜vÎ{aR7Cä™/6ëØÒÕÄ÷p©™­íÛÂXÑ·ÞLOp¸osŸ lüXîó5ߣu¸A§f\7¬_ý¹}ï¨ß&ó ¯b»·Â=¼Ü´`ý¹šÿz#dô¶Ï³÷žeµå[s{Øm¨PôˆŠHŽˆd–æ(ì ̹™”Jù@†ìFÏ´¢àÏ£"Y»âô¨ôδÎîïÌÍU”¿Îoa$Ö€s@¹§…Ñ:;T陡ôžž“ßÛNµÚÏtH¿¡æ®a¡Î@%'_t6_z@¶I»åägäö2çå¥vDŽ™+¶Í6ë 1 ]w@³HÈ%{â¦&DŒ˜ªÄÆF$L?…utìÔäQ4´‰ò—èö•϶0~ŽƒŸÀy°d­ÓHö-5Ø3+#c“•䉔ìè‘¥ç*½­ŽŒÞTÌ¥ô®¤$G*]'M íÞãöžiJ×lç F‰ÅŸ^L×|¥·ÓnÃD«¿÷ü‚|kêmJ¯^½a;%\[†RX`Ï™ksоþ¬B§Ìçód¤M)ä<Éa—c¯yvÙ•Z˜.Íóx=cî@¡é…r6,T^o·Ê™y›¸°p†v]º¼.¯`¶´Ï¡Ý¯ïRα3r³rˆ…}ؾL‡ìHMÏ(ÌöäÍûYs¥Ãìì^h©òºlî¹wäIÍIÐOÜoº1zdt\ÝîËð”‘SÑÒMHI–WÆ‹)P##ããÆÉ³F¡"‘„: ÒÆŒˆˆŽ£mqª\\L’0D”Š7•® «¢È`j|Brt|\’– Ë'Jw€.q©0Ô|‚_ _ñˆd ~¤Èm=×ÃüÐ àsò»ô\"æ¸MjDbœ¯€B­uÄTTKuÛ"„FLˆ‹ˆŽœšj‰#c¹Ý™“ÙSä/ÂÙ¢17uŒ%1ΣNä(K䘩 ²µ Õ;êv}L ôÅ€ ã+`Ø>ƒ£à8¨µà,@9z¼72%b¤E¡–“ÝêªÈ‡‰[F$&Y’•h%77ä€àsÁx…ïÚ ùWºO×àçÿ;¿@úÓÄ¿•Éû@ý ø½ËþZ6Ø3ü±‹ÿ+?¿¦ÍŒÍ[в[ûüG³—›(ºþ0ñóšµ_ %Pœ×ü’Ú -ø P °¡©ÒL¡J±?¹Fi"ô¬ç¬G)RŠÎznR”¢b¿þŸRÔQ¹U¹®ë¤üê‘gµSú+t…\ÓØTÌ®n&îÒJø¢ÒV ÁYíq¿æpY ¸¢%ŽuR:ò–ÉëÑÁˬ~KÓk/ñ"|MgÄͽìÐûœÂ¦o™¼ŽA^fõ[õ׿Þ/ȸôìdü+¸~@± ßd|´d| |ƒŒƒÀ®ÁAÆš+àJÏûWX䵿´"·ç2ëÀŸùøë¬ï€±WÈ\öÃà[pÍþ[~úoó¯ºÂµòI®Åˆm›¯« küçÇh¿Â\§-=w¨’/7ìC½Î ëÓ·_ÿw OŸžÆåŒìœ™³róò ï¶ÙÎÙsæÎ›Ÿä”£Øñ4(ZEb0ŸjÂ4ÃFñìNÄ£VOÝØwm^ݪx“ b6UO©OÖ;©g æ…NG遼ùë†Å¥¨VçdkÓ33mdI„ÖK(FV©®NS)Ë\k†6+­¨× WÃÚŒìœÜLÍI(åxŠŒÖGÈS•òŸ]4Î3­ù4 …ìÓ1'ÏÒ§MRFÔ9'‰™æéNû<90+&ëPÈúx†­ÀnïÉ6äæäÏòò2v¢gR Ìh{Ã]¶§®78¹€FSóu³kÄ|ξŽ*ÉhK˪w¥OØiΡ9/æ\k–Ã,‚A¸«nJ™Õ:KID3½§˜¾"§!xÝŒü…À²ÌÂM s a«œÛ †ÐåÔR])M7•Á– {E§Ï. ùÅ<¶MMêº'Gš1 Á2;='WŒ¢Di£’Ú¤'Ñ¿LOF 7q„¦DˆØÉUÑknµ‹^1)+:“¦ìˆ e6D‡Ù°!2ñCî›nàìëlé#ì¶ÏËÏȶäÓÄZ>ÐלV†n—æÁ8”ŽOëlŽ‚Œ‚\s&‰È9médÙ2µE&E×ÏxÒù^sßM‹!Ö¹¨z‘½šÅW«½Á4 Ÿc΢&,_yézC{nC&²‚|ŽG2ýié@ŽÀÁ¥Öô<²SL"­wn2Ú]6­wL‰—! ϶×% » S“[·’c$ùVÇœÛ,%#=AñÀó‘ORG¹?}&Í%÷ò VÖ4–&æ‹ÚPtψLšn˜S—Û&Ùòä,±Gs÷œùZÇžlGÐÅù™õHžKÓá³ÑO—ómh>GTRݬ]†Ä1N‰½C4"aKk^Šj˜gQ"žN³iNRùGˇÌò©e*Il”Æønu‰­x›Ï„¦ J¿hW×e\±œêÒVÿÄ3¬{d ŒíÎBšJKwG2´ÊùŒ^G–õæue¥çåäÎó:ÁîÓ&ùÊ®%N˜@SuûÎ|œ‰À GFÊ…tS‘Ш¶Ðj™ÿt9ýFflõþÒ]B½™”Ú“d*£ ìŽúÛ˜m4µÁQ`ÎÆguGA3Ãæ]|Îip$ ±ÖjŽC„‰4nJªKáùbJRF®5ú*¹`o‰‹/rDCÓ¹à&yÀnÍK/Ì. ‘õÞEˆ÷%£¨SFœ9öYbrVzýD7‘Wfæ8óx R*r¸š‘È2ë½—AƒX¹rÚf]†NÉ¢À–n£‡í̯w’BsÄÓ …6}3çd8råè˜,otEFÝ!g—™4K‹ì¨/q(´‹œd^Þô‚\$>YÑ\Ä\§®€ã{ȹ%uóÛ1gVF{9Y2]ëÄmÏÌúéîâ8õØ¥kÝn>ÎR”^ØÆó1 Ï=½WXJÃWhsôÈ"Ä$r-åÐ|ÔÀœú ‹•*<é^÷ã Bî<®2ŸYõ¿çZ©zCYõřżçLÝp³¢4VCÃ] œ¨5‰9µÈˆô©¾ îÁÈ™âva®Ô§ñ9"²Ô;Ԏk©ÜW Ò,_¯(uó˜ÓÞ3òµâÈZ_Ó²‚LÄ£B˜gÔ§]-€{³shYF:%fý9éÓqWPÛÉ 4IRNd˩χêæ*7r/OãsØÍT^ð|bÇ¥WÙ³ŽL9Ϻ.Û´ag{]ϳ| ctñ 6ö#À–€ÇÀ«`/8jÁ´æÁÆÿ`c'Ð q ØÀrðø x|ªA ®ûl¼ôÃÀ8`ëqünèƒàÏ`ø¸Án#w^ÄvC°ñ6¦‚|°¬¯€¿càÀØ$ØØÜú5‘vD@Ç™`XžÛÁaà¿VMƒÁ@0LyàÜ2º¼ BƒC@&(›Á1ÜîÆñ£`¶OB›5 6NÆvGho¦¹`ÌWA7@_„¾ vcû8ˆí€à ¸LËA3#Üzƒ! Ì¥à °ì߃¸;tÁhp/£GFÚsqIÑSÇ÷íÕ¯gXø€½{‹ñî˜èdE©:ÜZ¼Ï|Dªïß Ê`e¢2WyTyM9¨ü¬´ö õ‹óËó£#C”IʸÇ7WxŒ¶‰Û±]ªÛ ÛâûifÄ[àEpÏ©›A¶3ù\2f}L]›¹»áþ¿‚æî»%oñ}áý=Œ·5öƒCà8¾[úÙ ýa·´ÃWXyß›ýÁ]n-÷HwôlnçpÐΡí¤=2¬4ûf`ûn«R/¼ïïí&_aøï„­v­>~\î>Ù“y™g¦í‹1D%£Ð©ôÆ1öÃ= ¨8õÎ³æ £Xkž$dîŠBsÖp2ˆ²Y­uû¢[>Ï‘>]\-w³ì´_o”å½ew·Ø¢žVê?ìÕ[¹ÏåG/l§·es_Ïȸ‘úäȉ’‘LSY”˜èáÔ¡¯ðÙ­é6ê‹Iwd+ƒ+‰´Ž”BÄß,šŠÇuˆ¡]íƒùlÔI•@ª& C­&„¹«=PÉðê9Ís^õ5H;š!f·±}b© 1Aá§) ¹p8ð!Y6'Ç$‰Š™f,V0È)µ‹´ZPh÷)%y^|’9bx´6ZoN†ÚÔ í`Ý’Y ÖÆMéšlÜÕ£,­ƒµ!TÌ(Ïçi«¯†R€èÃx¨Ò¼y·®v9gK\ÙÕÞ=PBu#h )ƒšø<¾þaù Hq„'ßyׇDƒ•|žèjx–\ ÒÐŽ½Eü@­¦PÔeåbª§Òã³[gˆê¸ðcÃG€ŸÎrÑôÎ/0gÎCA•œkÃu÷´Ê% T¥uÊÉy²ÇW5t)·XEØ5<Â6¡†š™K^ìÖZ f햃̡s»†Þ–;׌ƴݪÛ3žyâÜ@é3ët§fgÚìæ;óá¼®·9/Mü.zŒ¢‰—ž§E ú0–-|&Ute€èã;Ö¢USž© ŸaKçÈ “OEØE±W\œÁ ¹ÂÜ» +‹šÆrYUáséí¨\ËvÛ¥×Ñ199“.Ají©^Ÿ=̰拶҄hÆ Ž*u©îV;BŽF3ÌÉ1‰Q{A™Â_Ô•hI¦AL1]›–ñ–H±ª–œ$X—’µTÜÈ› ò­õçŠFêÕ™äB:YN;êY?—é{s¨'ðr¶Ëy™½ì½DòUÄvϰ^wô UfЀjOÝѰ^au¹„0ù-¢‘íPÙhdV†PËV‹?w*6kÝz!™=õ¨s¡"¯1+õ3Ê­bÕ®ðOÓCLlªk\(ænˆ5š-Ò{w…##B9Ÿ:óró¤®ö4!œŽ2BËî™Q&Ð-l± ¦uµßJéRìÉ‘[P0ËY¨¹Fx¶±òÄÜMçÉL+’0‚>c^w¤0nîsÏ<…Ž–°D‘Ãs·îT¤sí_ ÂÃáæ˜è¸1–Dóð”‘7Þx£Bëïsòð%/‚T»Ô,3è,D–\EöúÍÉ&/SäK<¼ä<±Èš›ÕiTéÓ«_¯>a=•^–%zd\|¢¥¾0ŸAKœñ·g^A¦˜$‚È¡ Õ^ÎÒóNg†½Ÿ2”þö¼³î•-)‘I=ûÅXz÷ö>™ÁP©º³õç8²â üÕÇ}9G”¡éöŒœß'ˆCÒu£Ú»qý Òõ½{›£“â{†…è7 7Lúõ–æÃ->ŽD& ½ô@ýþ¥Çâ“¢BCCÃðÏוõGû_ö¨/›Si²ÂÔd:R÷D’£6<“ ȸ§/sÚND­¯ƒtóþ¸5àËÊȤ>Þnê#Ï—y½OB/{4ì²G}Ù\×ÔÄ1ïf§æÁƒ-=S’|LIê‘íóÂá±}ÜáëHdBc’µM„XÌ%ÑM KSâ¢#ãGX†GÄ2…*rþ‰".è6(,Üû!Š8Òð¸0»ôœÏå’‡Mý:wôžÂž©¸¨Wtâ8º_˜¯³´‡Ú'Ô§%ìU9ÞG üÿñWQU{î¢È~§ŠÎ¸©TXç:™~{jN~NƒƒSiô‡rlÝ4üfð½dð\/Ðeýz[ɾ˜È©‘É,´—kIŒŽ¤ÍäèXaƒ6ØŒ³$ÓbÚ¶$%EŒ¤Io‘S#bbH",‰Â–yiĈ‰8MØf‰±$Œ¢åâÚˆ¤”DK,­ŠÀnôZAàêfÎ)Ês°ñAð8x¼Þïƒ}àSðpƒÃÁ ÞñE;TwhÆÚ‚iÊÇ4sšiÔ ´öz^kÞnyÉ;Ãþȯî¹è¦ŒétOj_Så>ÙS‘mkúù³;ƒØŒÚÚ&@3Ú´ë“ùœÐôbûèÀþkÉfd_°×ý›°½F/ô?ïcM|˜5Ö¿§·Ï[õ¿¦ŒÁ‡›šèð»B|¹±1þˆWJca¦ùAûyßàÛø”Ë»R;ÃÛ?Íy/s³÷Øò|ïðoÚȶæ¿Kç(ÖÿþÕcÿÉó‹ãºmíù6g.—&®4j¿ËÙs¥éN‹Ç¾â×±C?«WþÌÒSô=jïd£s)žke†¾¼ ü”òí@nì:Îàz`7.€>`F_T¾ зÍ(¯¦éï4¡&­Óüxšm? w‚a`8  ÞQ€ÊÄÑ Ä¨Èr`&‚É` ˜¨S—ú,²­û˜ hP“ÊšÅOýBÔaFöiÖý|°ÐOX èS>K}w` ¥= ÈÈ? èëD«}“ëq@_å¢p®Ïú:Ñó€>¾ü ˆ¼è ¢ôÑÀÍ€>0´U‘oӦ*À°ìôÕæ½`øì½†ÿ Wÿè;8_‚*pÐwâ¾ôžå“€>Šð= Wyÿèƒ gÀ9pЗ¤Iü©¿44èÓb­@0hB@{ÐtÁõÀ nò£qR<Ð Üz€^ ôýÀ0 CÀ`èûåQ` èÛæôÕiú€R" O+ãÁD0ÐX¦é dl0äI£ÄÚ}Šk6 ¯Íô}ž{AX JÀ@Ÿ£O¼Ð—…ôÑÁ‡Á ° ¬ƒ5à)°<ÖƒçÁðØ^ôàW}îu@ž onó“ßuª;ÀN° ì{Á>ð!Ø€ƒà F|ŽúFV8è{Åß78 èÓä߃Zð8 ΀sà<¸~”øý} ¼)0‚@Z`Є€ö #è:ƒëܺ€[}î6Ðô¡ èúžÕ 0Ü †á€¾FÑ Ä’Á80L“Á0 L™ô+ f‚\ 8Àl0Ì À½ ,%` X –åàP+}eo5x¬Oµà°<6€ÀFðØ^›Áë`+xˆoŠ °ì»Àn°ìô5¢ýà8#àsp | ªÀqp| Üà$8¾µà'pœçÀypü¨àñÐA ­@0hB@{ÐtÁõÀ n]À- ¸ ô½@(èú` †€;Á00ŒQ` b@H‰ ŒãÁD0LÓÀt ²@v} ÏäƒB`0ÌóÁp/(‹A X–‚e`9x”ƒ‡Á ° ¬ƒ5à)°<ÖƒçÁðØ^›À+`3xlo‚màPv€`Ø ö‚}àC°Á!p|Ž/A8N€oœ§À÷ üNƒ3à8@óEðüüþÀš#A m@h:‚N 3¸˜ÁM  ¸t· }@?0 ƒ} þN0 Ч F€(0 Œ1 $€D Æñ`"˜ ¦€i`:ÈY ̹ p€Ù`.˜€{AX JÀ°,ËÁ < V€U`5x¬Oµà°<6€}ûú%° ¼6ƒ×ÁVð&ØÞ`Ø vÝ`/Ø>ûÁpGÀçàøTãàø¸ÁIp |jÁOà48Îóà"ø PEÕ@S` ´Á  íAGÐ t×3¸ t·€nà6Ðô¡ è€`îÃÀp0DQ`4ˆq $‚d0ŒÁd0LÓA&ÈÙ`&Èù ؚЧñüÁ\0,÷‚"°”€%`)X–ƒ@9x¬«Àjð8XžkÁ3`=xl/€à%° ¼6ƒ×ÁVð&ØÞ`Ø vÝ`/Ø>ûÁpGÀçàøTãàø¸ÁIp |jÁOàtúr6ž?8.‚ßUúý4F‚@+ Ú€Ðt@gp=0ƒ›@p èn=@/ ú€~`!àN0 #@Fƒ@"HãÀx0LSÀ40d‚, f‚\ 8Àl0Ì À½ ,%` X –åàP+À*°<Ö€§ÀZð XžÀ `#x l¯€Íàu°¼ ¶w@Øv‚]`7Ø öÁ~p‡Àð98¾Uà88¾npœ߃Zð8 ΀sà<¸~Ôñá  )0‚@Z`Є€ö #è:ƒëܺ€[@7pèzPÐôÀ@0 w‚a`8¢À(0Ä€8A2ƃ‰`2˜¦é dl0ä‚|PlÀfƒ¹`>XîE`1(KÀR° ,€rð0XVÕàq°<Ö‚gÀzð<Ø^ÁK`xl¯ƒ­àM° ¼*À°ì»Á^°|öƒà 8Ž€ÏÁ1ð%¨ÇÁ ð-pƒ“àøÔ‚ŸÀipœçÁEð ¿?0€¦Àè+A  Þæ6 ´A'Ð\Ìà&ÐܺÛ@Ð „‚> ‚A`¸ ÃÁFÑ Ä’Á80L“Á0 L™ dƒ™ äƒB`0ÌóÁp/(‹A X–‚e`9x”ƒ‡Á ° ¬ƒ5à)°<Öƒçôõg<°¼6WÀfð:Ø ÞÛÀ; ì;Á.°ìûÀ‡`?8‚Càø_‚*pœß78 NïA-ø œgÀ9p\¿êXóÐA ­@0hB@{ÐtÁõÀ n]À- ¸ ô½@(èú` †€;Á00ŒQ` b@H‰ ŒãÁD0LÓÀt ²@6˜ rA>(6à³Á\0,÷‚"°”€%`)X–ƒ@9x¬«Àjð8XžkÁ3`=xl/€à%° ¼6ƒ×ÁVð&ØÞ`Ø vÝ`/Ø>ûÁpGÀçàøTãàøÐW8O‚Sà{P ~§ÁpœÁoÔ©ˆç  )0ÒüZ`Є€ö #è:ƒëܺ€[@7pèzPÐôÀ@0 w‚a`8¢À(0Ä€8A2HŸÊÂó“Á0 Lô2™, f‚\@¯¢ùQ6à³Á\0,÷‚"°”€%`)X–ƒeÿýþÌúÖY_b}u+ë[¬ÛXßf}‡uëaÖ¿³~ËJ}fôëËÍšè¥I^zk%ënÖ=¬{Y?`ÝÇú#ëO¬?³R?…p/ënÖXÿƺŸõ«¿Yj«µ kSV#ksÖ@Ö¬Á¬­YÛ°¶e amÇÚ‘õÖN¬×²vf½ŽõzÖXͬ7±vaíÊz koÖþ¬Xï` gÄ:„u$ë(ÖhÖ©¬ÓXÓY§³f°n`ÝȪÜ(ÅÕŸµ kSÖ@Ö¬A¬-Y[±³¶fmÃÚ–µk{ÖkX;±^ËÚ™õ:ÖYobíÂz k7Ö¬=Y{±öf e cíËÚ5œÕÂÅ:’uk4kk2k ë8ÖTÖñ¬X'²NbÌšÆ:…u*ë4ÖtÖ鬬™¬VÖ,Ö¬Ù¬9¬3Yg±æ²æ±æ³°²ÞÍjcµ³:X¬³Yç°ÎeÇ:ŸõÖ¬ Yïe½µœõaÖ¬ûY°ÔâÝMRÛ±¶gíÀz3ëÖ!¬™¬VÖ™¬³X°~Æ*®ðócõg `5°6amÊÚŒÕÈÚœ5µkkKÖV¬&Ö`ÖÖ¬mXÛ²†°¶cmÏÚµ#ë5¬X¯eíÌzëõ¬7°šYod½™µ ë4ÖtÖ鬬™¬VÖ,Ö¬Ù¬9¬3Yg±æ²æ±æ³°²ÞÍjcµ³:X¬³Yç°ÎeÇ:ŸõÖ¬ Yïe½µˆuëbÖbÖÖRÖ%¬÷³.eu±.cUY—³–±>Àú k9ëC¬³>º‚u%ë*ÖGYW³>Æú8ë¬kXŸd}ŠõiÖµ¬ëXŸa}–u=ës¬Ï³þ‰uëŸY_`ý ëFÖY_bý+ë&Ö—Y_a}•u3ëk¬¯³naÝÊú뛬o±nc}›õÖwY+X·³î`}u'ëû¬»X+Yw³îaÝËúë>Ö¿±~Èúë~ÖY°~ÂzõSÖC¬‡Y°~Æú9ëQÖc¬_°~ÉúwÖ*Ö¯X³~Íz‚õÖoY¿cu³V³ždUºJñg b f aíÈÚ™µ kÖ~¬CX¿euÜ&ÕÉ:›Uá÷ñ­eÛGj"kk2k ë8ÖTÖñ¬X'²NbÌšÆ:…u*ëˬ¯°¾Êº™õ5Ö×Y·°ne}ƒõMÖ·X·±¾Íú뻬w÷•jcµ³:X¬³Y‹X±.f-f-a-e]Âz?ëRVë2V•u9k묲–³>Äú0ë#¬+XW²®b}”u5ëc¬³>Áº†õIÖ§XŸf]˺ŽõÖgY׳>Çú<ëŸX7°þ™õÖ¿°nd}‘õ%Ö¿²nb}™õÖWY7³¾Æú:ëÖ­¬o°¾Éúë6Ö·Yßa}—uë{¬;YßgÝÅZɺ›uë^ÖX÷±þõCÖX÷³~Ìz€õÖƒ¬Ÿ²b=Ìz„õ3ÖÏY²cý‚U¹ ÅÕŸ5€ÕÀÚ”µ;«œ<ƒëXýYX ¬MX›²6c5²6g dmÁÄÚ’µ«‰5–5Ž5ž55‘5™5…uk*ëÖ‰¬“X'³NeÆšÎ:5ƒ5“ÕʚŚ͚Ã:“u«G GTÖVkÖ¦¬ÍX¬ÍYY[°±¶dmÅjb fmÍÚ†µ-kk;Öö¬X;²^ÃÚ‰õZÖάױ^Ïz«™õFÖ›XofíÂÚ•õÖ[Y»±vg½õvÖ¬=Y{±öf e cíÃÚ—µkÖ¬w°d gÄ:˜uëPÖ;YïbÆÁ:œ5’u«…5Šu$ë(ÖhÖѬcXcXcYãXãYXDz&²&±&³¦°ŽcMeÏ:u"ë$Öɬi¬SXÅ„.üüXýYX ¬MX›²6c5²6g dmÁÄÚ’µ«‰5˜µ5kÖ¶¬!¬íXÛ³v`íÈz k'ÖkY;³^Çz=ë ¬fÖYob½™µ kWÖ[XoeíÆÚõ6ÖÛY{°ödíÅÚ›5”5Œµk_Ö~¬ýY°ÞÁ:5œuë`Ö!¬CYïd½‹ukëpÖHÖ¬Ö(Ö‘¬£X£YG³ŽaaecgM`˚ȚĚÌ:Ž5•u<ëÖ‰¬“X'³¦±NaÊ:5u:kk&«•5‹uk6këLÖY¬¹¬y¬ù¬¬…¬w³ÚXí¬V'ëlÖ9¬sYç±Îg½‡uëBÖ{Yïc-b]ĺ˜µ˜µ„µ”u ëý¬KY]¬ËXUÖå¬e¬°>ÈZÎúëì°®`]ɺŠõQÖÕ¬±>ÎúëÖ§XŸf}†õ9ÖçYÿÌúë_X7²¾ÄúWÖM¬/³¾Âú*ëfÖ×X_gݺ•õ Ö·Xßf}‡õ]Ö Ö¬ï±¾Ïº‹µ’u7ëÖ½¬°îcý뇬±îgý˜õë'¬Y?e=Äz˜õëg¬Ÿ³e=Æúë—¬g­býŠõ8ë׬'X¿aý–õ;V7k5ëIÖÖS¬ÿ`ýžõÖZÖYbý™õ4ë?Yϰže=Çú ëyÖ ¬YeýÕê|*ÕÕŸ5€ÕÀÚ„µ«‘µ9k kKÖV¬&Ö`ÖÖ¬mXÛ²†°¶gíÀÚ‘õÖN¬×²vf½žõV3ë¬7±ÞÌÚ…µ+ë-¬·²vcíÎzëí¬=X{²öbíÍÊÆÚ‡µ/k?Öþ¬Xï`ÈÎ:˜uëPÖ;Y‡±F°gdÁÅ:šu k k,kkÀú k9ëC¬³>º‚u%ë*ÖGYW³>Æú8ë¬kXŸd}ŠõiÖµ¬ëXŸa}–u=ës¬Ï³þ‰uëŸY_`ý ëFÖY_bý+ë&Ö—Y_a}•u3ëk¬¯³naÝÊú뛬o±nc}›õÖwY+X·³î`}u'ëû¬»X+Yw³îaÝËúë>Ö¿±~Èúë~ÖY°~ÂzõSÖC¬‡Y°~Æú9ëQÖc¬_°~ÉúwÖ*Ö¯X³~Íz‚õÖoY¿cu³V³žd­a=ÅúÖïY`­eý‘õ'ÖŸYO³þ“õ ëYÖs¬¿°žg½Àz‘õWÖßX=¬b~~¬þ¬¬Ö&¬MY›±Y›³²¶` bmÉÚŠÕÄÌÚšµ k[ÖÖv¬íY;°vd½†µ뵬Y¯c½žõV3ë¬7±ÞÌÚ…µ+ë-¬·²vcíÎzëí¬=X{²öbíÍÊÆÚ‡µ/k?Öþ¬Xï`ÈÎ:ˆu0ëÖ¡¬w²ÞÅ:Œ5‚u8k$ëV këHÖQ¬Ñ¬£YǰưƲƱƳ&°ŽeMdMbMfMaÇšÊ:žuëDÖI¬“YÓX§°NeÆšÎ:5ƒ5“ÕÊšÅ:ƒ5›5‡u&ë,Ö\Ö<Ö|ÖÖBÖ»Ym¬vV«“u6ëÖ¹¬óXç³Þú€u!뽬÷±±.b]ÌZÌZÂZʺ„õ~Ö¥¬.Öe¬*ërÖ2ÖXd-g}ˆõaÖGXW°®d]Åú(ëjÖÇXg}‚u 듬O±>ͺ–uë3¬Ï²~xXêG¬ûY?f=Àú ëAÖOY±f=Âúëç¬GY±~Áú%ëßY«X¿b=Îú5ë ÖoX¿eýŽÕÍZÍz’µ†õë?X¿gýµ–õGÖŸXf=ÍúOÖ3¬gYϱþÂzžõëEÖ_Ycõ°Ò–ÙÑTkZSOï7¡µô¹ŽžÖÐÓ5­—§!©;¹>žÖÆWäšxZOkái<­§õï´ö=XA ÏÃÝ èkxô"É…`(UäšvU‘ëÙRäZöG¹ŽýIEÎq}V‘ë×iž+­]ÿ«R¿n}‹"׬ÓÖ E®U¯Tä:õ¿)rú'Š\ŸþøB‘ëÒ¿Vä|ÖjðE®Cÿ§"× ÓúsñžUÐ ´&Ðtðó½ÆœÖ—ßî'×”÷÷“kɇúÉõã?¹v|ŒŸ\7>ÖO®Oõ“ëÅÓüäZqZ'>ÃO®§w0Óúp»Ÿ\NëÁùÉuà.?¹üA?¹þ{¥Ÿ\ûý„Ÿ\÷½ÎO®ùþ“Ÿ\ïý¢Ÿ\ëýªŸ\ß½ÝOνýÈOVY¾ð“k´küäÛ_(zøÃïþr­µ ´õ—ë«imõ àf¹žšÖQÓêþ Ü_®›Žð—k¦GúËõÒ±`¬¿\#Më£Ó@:¯‰ÎåuÐv0‡×>ßÇëžKyÍór^ë¼<žäuÍÏñšæ¿ðzæ—y-óðx¼*yÍòǼNù(¯Mþ†×#ÿÀk¿?$Š& 9h Zƒvà^W|3¯%îÉë‡ïà5üN˜ÖÇóºàñ¼x¯¦5Ày¼ö—ÖýÎ㵾ż¾·Œ×ô>Êëx×?з÷ðüÀà]ð>ø| ƒ/À×¼Æö¼®ö,¯¥õ3Èõ³- rÍ,­•¥5²´6–ÖÄÒZXZKk_iÍ+­u¥5®´¶•ÖµÒšVZÏJkYi+­a¥õ«´v•Ö­ÞckUK r}ꃹ&õ1ƒ\‡ú¬A®=}Ñ ×›n1È5¦Û r]é¹–ôSƒ\?úwƒ\3ZmëD6ȵ¡¿äzÐfMäÐÖMäºÏk›Èµž]›Èõ½›È5Ἆ3’×nÆòzÍT^£™Îë2gñZL'¯¿¼×\ºxå#¼¶òI^Où'^Cù2¯›|‹×J¾Ïë#?â5‘Ÿñ:ȯyíã?x½ãY^ãè×T®klÑT®elÇëoà5‹Ýyb_^›8˜×%FðšÄ‘¼1–×"&ñ:Ä ¼1XyÍa¯7œÍë ózÂxýàã¼^ðy^ø ¯|‡×ÿíåõ~‡x}ßq^Ï÷=¯ß;Ïëõšòú¼6¼ïz^×ôa¼Ön¯±ÎkëFóšºD^K7‘×Ðe€îN0,‹@)¯‰{×Á=žëÀsàÏàEð2x ¼ÞÛA%ø¯a;ÂkÖh­Z5ø×¥]žfr Zs^wÖ–×™Ý n·ƒÞ /¸ wH0Œñ ¤‚I`*È9 Ü œà^÷UÂë½–ó:¯¼¾k ¯ëZÏë¹^/ƒ×xíÖ»à=°‡×hàµYŸóš¬ã¼‹ÖaýÀk¯hÝÕð+ð¿æ¨€& hZ€–ÀZƒ¶ è®×6—k®nl.×[ÝÚ\®µêÙ\®³êÛ\®± o.×WÝÅk«,¼®j ¯©Ëë©Ry-U¯£ÊЭ¡šÅë§îæµSsxÝÔB^3UÌë¥\¼VêA^'µ’×H=Áë£ÖñÚ¨?ñº¨yMÔ«¼ê ^ õ.¯ƒzŸ×@}ÀëŸ>æµO‡yÝÓ¼æék^ïTÍk~àuNÿä5Nx}“¯mjÆëšZò𦶼žé^Ët¯cêÊk˜nçõKa¼vé^·4”×,Eòz¥h^«Ïë”RxÒ$^Ÿ”Îk“fðº¤<^“dçõHóx-Ò}¼©”× ©¼þè!°< OÒš$ð,xül¯€×ÀVðxl;A%Ø þöƒOÀ!ð8þŽƒo€Ô€ïÁà48 ΃_½`04ômÔ `m@;Ð\ ®7‚.àVpè BA_0„ƒ!à.0XÀ(0ı ¤‚‰ L ä€\PlÀ æ‚{À½`(÷ƒe  ”ƒGÀ*ðXžÏ€çÀððxl[À›àmPÞ»À°|€OÁp| ¾'Àwà$ø¨?ƒ3àpx€?M€´­@k:€Nà:`7ƒ[@wÐô}@0 w‚0Œ£A,HI`˜&ƒ©`:°‚l0 䃻ÌóÁBPŠÁàËÁƒàa°¬O€§À:°ü ¼^›À«àuðØÞ;Àû`7ø|>Áað9øT¯Á· œ?€ŸÀ?Á9püüZ"ýƒf ´Á -h®Á à&Ðt·ƒ^ ôw€A`("Aˆ1 $‚0LS@:È3ÀL ÌóÀpX JÁR ‚ÀC`x<žkÁ³àyðg°ü¼^[Á[à°ì•`/øØ>‡Àgàø;8¾nP¾?‚Óà,8~¥—m¶BúMAsL  h:‚kÁõàFÐÜ n=A(è €p0܆ Æ€80$ƒT0¤i d € 8Á\p¸,%à~° ”rðXkÀÓàðØþ^/ƒÍ` x¼ *À{`ØöÀð)8Ž‚/ÁWàøœÿµàgpü.ð7!ý#hZÖ tÀuÀ n·€î è ú€þ`  î` FƒX’À80LSÁt`Ù`Èw˜情 ƒ%À–ƒÁÃ`%X žOu`=øx¼6WÁëà ° ¼ v€÷Ánðø| ‚Ãàsð¨_ƒoA58~?‚sàø ø#ýƒf ´Á -h®Á à&Ðt·ƒ^ ôw€A`("Aˆ1 $‚0LS@:È3ÀL ÌóÀpX JÁR ‚ÀC`x<žkÁ³àyðg°ü¼^[Á[à°ì•`/øØ>‡Àgàø;8¾nP¾?‚Óà,8~¥B¶FúMAsL  h:‚kÁõàFÐÜ n=A(è €p0܆ Æ€80$ƒT0¤i d € 8Á\p¸,%à~° ”rðXkÀÓàðØþ^/ƒÍ` x¼ *À{`ØöÀð)8Ž‚/ÁWàøœÿµàgpü.ðoƒôŒ hZƒÐt×3¸Üºƒ 7èúƒ`0¸D€`$ bAHãÀ0LÓdƒY Ü `˜‚"P –Xƒ•`5x<ÖõàOàð"Ø^¯·‘ïÕ~Ý@$è®3Âh¿ž^ç'zïÔm÷ÐmßÉh?ºo ·°÷SºC¬c}¹.XtûsuÛvFûi}·Ú/Z‘ý¼ÚútgêöoUäûLµ_¼×½¼÷ ¼ì÷Þ×»%ÆëÞ1^÷ÎõÚó:?Îëx¾×þEöYë÷çëö3½öoÕmOiÄ|šn{ªn{nû^ݶù¿¼­ýzþ Û»µ‘í˜ßÔÈv¯kôÇn×mè¶{ymûÚ×›™uÛÓ¼¶}íëÍôé[ŸFoTê^o ~w1úý½Î××»é÷~”èÓ¥¥6×~”f)Ýgø0Ó_©ÛÎàã>ÌôyÕ Ýö¨+ØÎÖmG7²£ÛÎÕmÇymëÝ– Û«ÛN¼‚mzG³Åë¾ÝØ¥ÛŽÕmëýœ£Û¡ÛÎlÄ~ýùú|άԗ}•KóŠ>—9¦]×ÿ2×ù:Ö÷2Çú]æ˜v¿>Žõ¿Ì1íº—q‹¯cý/sìŽËÓî§ý¼ãº¯}o³qº}ïíhû™yÛ;^·ï½íc¿±´©Óúø§¯9^Û¾ö½Ífëö½·s|ì7fæm¯¾^ã½ãc_o¦Ï‡ôù¨>­éó*¼ËÇ;}÷6ªÛÚÈq½™þúø6Y·}›n{n»±:‡·;îôÚ÷®Ûz×Q‡\æýy”‡SY¥SIŠÌWGy™Q^¬«–FÌâÙ\oF÷Ñ— Tߥ¸;Fg6\¹´ Î÷Ö~£¼ì¦sõùô8¯ãQ^ÇéžúrGó«~_ŸÖFð=,^fdO˜³>>Ìúú0ë§3£°¡ðЇ¹c‚Ò°¼ÕÂÛ»L‹ðqž>ý“])^×YØ\ŸD) Ãz¤×~¢×~Š×>mëë#”KŸ§¾¾§\ZÞS˜v÷2ëã쯳~>Ìúû0àÃìf}˜…û0#7‡6bîË?aø)¬…5â·°FüÖˆÃñgX#~ kÄ¿}.ãß«ÏîRóÿëÏŽÎÕ·Çúxí÷õÚïçµßßk€×þ^û½öýöµgâmæíNíYx›y»W{ÞfÞîÖÂÞÛÌÛýZ˜{›yûC k½=j÷y?—é>Ì2|˜eú0³ú0Ëòa6ÇY¶³f3}˜Íòa–ëÃ,χY¾³f…>Ìîöafóaf÷aæðaæôa6Û‡Ùfs}˜Íóa6߇Y„³á>̼û5Él„3‹³(f#}˜òaíÃl´³1>Ìb|˜y·ãÉ,·Y¼³fc}˜y÷é’Y’³df)>ÌÆù0Kõa6Þ‡Ùf}˜]Í®ædæ].ëÛ•ú6ãíÿƒÛú¾®AŒwûØ×¾ÞÌìu\ûiõ‘Æê¾êYd櫞Eæ¾êYdEæ¾êYdEæ¾êYdEnôU¯ìÛˆû6âß¾ø·o#þíÛˆû6â_mÝ€/s_þíÛˆû5âß~ø·_#þí׈û5âß~øWûf /s_þí׈û5âßþ>üKy'•Sé:³L¯}*óStûÓù¸MgFiNß×Hy^†×~„n?ßkß鵟çµ?ËkŸÊo}ß@¬×þH¯ý v³¾?nV#æäV}ÿK¾×¾ÓǾ~<#Ïk–réxÇ|¯ãÞf±>ÌFú0KöaæôòOž×~¦ri8è÷³”†}’ù^ûN¯ý<¯ý ¯ýYœOc}|\çmîËlÖeÎÕÌõ}X˜û2›u™s½Ç¾ôfÞnñNW³|˜Åú0éÃÌÆû™˜y»Ë×1o÷z]“ïµïôáWý>]¯Oóù^ûN¯ý<¯ýY^û±Ê¥yHª—ýú}§×~ž×þ,¯ýX¯} Ÿ^|¾½KùÆÝºý ¥a^FÛúç@mÞÊ¥éœÌ ¼ìÎT.ͧæéö³•†ÏÒ¶¾’êµúyc”†}°´­ïG%79tû”Îó¼öó½ö ¼üAfúqº~º×~ŽrižSàe– 4쟧çë+ü˜X/3}8ÅC}ùCí%ý˜Oª—³ý~Ž×¾wèëïóÈúðÕ×Cÿ·S¯`[?OBÿ ë¶õã=úùú¹ÝtÛúúÅ=ºí…ºí›uÛ·è¶õcNú°Ô·+›?¡¯§ëDZºè¶»ê¶‡)—þô~ÒÏÑ»·1ûôþÐÏSi,ló«þ™èý­>ú1»Pݶ~|GŸ×ëË1ý8NÝöÝöºíºípݶ>^èã‹þùxj?}<¦ÛÖ×ñ›¡3nlîÃHݶ>ωÖmëçtéóPýøŽ>ÒWéÇß®d‰~ÌI?Ö§¯WëË>}9¥«œ ÛÖÏ™¤ÛÖÇý4ݶ~n™>˜¦ÛÖ—=úü³±±ký<}þª/?²uÛúüT?—d–nÛ»Ñ~úrJ߯/ÔmëËm}ù ¯·èókýœ$}ù1G·­/ûôeµ¾Î­ÏçôýúE~sçCð‘"¿½ó18 ÈoðÈ8Ä·xd<â›<Ÿƒ£à˜"¿Ïó%ø»"¿Óó8®Èïõœß(ò»=ß·"¿ßsÔ€SŠü–Ï÷àP ~Tä·}~§ùŸ3à¬"¿õó 8.(ò»?¿‚߀?ˆÂŸÂßI2€&€?u!¾›ÔðkçÅ7”øÔâ[Jü:Z¥ h«Èo+µíù¥ŽàE~kéZÐ\§Èï.Ý Èu­4Çæ¶ÓœvšËNsØiî:ÍY§¹ê4Gæ¦Óœtš‹NsÐiî9Í9§:¥ö m='Õ©ŽHuCªR]æ†Óœpý»§hÎ÷0E¶s©}KíZí};Ô~ÕÖ·Q;•Ú§Ô.¥ö(µC©ýIíNjoR;S{¯µ'©IíGj7R{‘Ú‰Ô>¤9Ñ4šæ@ÓÜgšó<íðþ4'˜æÓ`šû{Ÿr5ýW(ÿ§åêó¯Pþ~þWó‘ÿSõÓië(©?Žúá¨ÿúݨ¿úÙ´uÉÔŸFýhÔFýfÔ_FýdÚÚ;ê£~0êÿ¢~/êï¢~®Æòÿÿ©û_Íÿ¯¦ïü_ûýæ¡/€]ú#CÊš²ù˜ù2×ùúù:÷÷쿜ۼíþWìo캆?O@cG4{›ò¾fç+¸Vo?¥Ç{}Ñܯ90À‡ý]+~wÊëû]Öý¿sm ê÷ýQ÷_îZí÷Û¿aÿå®?ÿ#|~çZúie,ÿŠþˆûïZí÷›G¹;Îù5fù]ûïZ/~/}].~^.i×7ákoPêÓ§öÓÖ+W!<þ'h<þ¸ûõk­ÍÿCü+î7ð¶‰Ý¯¥Œò·õ4üùyý(……V›’[0Ós ³Ó•Ìœ9e®{az†U)´åä;”¶ôÂleznzþ,%#ßaËU ù\–ïDuÇQ írHÛê›}ùK¸I‘íase°Ñü¡<Ï|uï¥×-¨ 6îf@×nƒÝæýàP°‘Úã‰VygLF[Ç`cȵÁÆM‚«:“qî80œÀþÄãÒŽÉÐL `(ËÁ °¬Wjç•Öwé[°ko 6V ?gÀ ¤{6êÂkØçÁƵ@9lœ*€ùX°±Ta_à8P¾Äq°–ôïÁÆþ¸Û¸‹6ž§åiãxÚž6~§ÝiãvژǴ±:m ~¤’Ÿ=^‰ˆKŠž:¾o¯~=ÃÂè÷t?ú†µHt”?Ò6 ]{ð#?Ê›MÒ›"ŸF£e¥}Ç(ÑСFLð»‹èÈ~hÔ<ºæ¨SlòùdO ´‡µ?5€ö>>X$plßž§.§í’ë®!;ý±}cðÓ¡ôb?2ß~&Uûðø¢'v¬&ó™+¼}·ÅÙQ\‹í¢m »ø5‘Û÷dìOçøÑùÃÆÄ9m_—?q––P‹¾Ú¸BÛžQüã^Ú6ˆB*³Ý—¶ÇŽ.k%܉ía/å´!{h;ú¡´m%øÎt­?¶å¸YÛ¶Á~»p¶#ÛÏ¿å+Â'@nor>FaóaGÚN&%®yí¡<á÷¦2œ}?9ù ëÓ·_ÿw 9Â5rTôè11±qñ c“’SÆ¥ŽŸ0ñr×wËwæævoü¸¾|6°¶bmª;FA­†ðc?Ê×WÀå~X¯am«ƒ~×éÎ ºŒ=í|˜µamy÷§¶¹Éëþl¦•×ÔÆ§üŸÚîÔ®o¯sÝŸÚðÁàþÝü[C÷µ4fƒÕà#ð+èø·–ÆM ß'-7litÚÒØýPKãˆÃ-3¡‹ ´4¾ÿUKäƒ-Àþº¥qø7-ê[7ƒ>'alj–Ætèk¸îG ûô÷ÿ=þÓ÷';ÿÈý‰ÿíû÷:ܲÁ¾¯û{_C÷o̾?zb„Î ÿŠÿÿÝûÿžÿÿ•ûÁö¿ÂÝ-Κ–Æ¢¶4<ÓÒø5ø dŸCÜ8ßÒøêo-“<-ËœÿKKã[JÃë½ÓáÁgƒŒ“­Œ'ž 2Ö‚ GƒŒŸ 2î σ×G<d܇óB±]þç ãàø³4+Ö…i~²Ü¸ˆ8%?=_‰Ž‹Rrò©¿Jûƒ67ú¨Ò•ú9gÑ|L›¨½;L?çí?ùû~M+£ÿ“ÿYæ^ÆÎ¢QR7ò9>ÎÕ»©m#öùÛÑ­Œ}cÿçHuJÝ8º~_ãØSèÃìðõÛ/ÿÝ[OO¾ôþV]z͘í|´•ñ‹GëÍš­f{žhxÿ{×µ2–3yê·‰Ù^û÷ñþRùC^çü7x÷H_0ü˜ñ/^çxFjïÇú8'ý îCæÛžÅ³«Y·é8ýXïÃìg~ÿ:í>›ø|ïûû²ã#6?ª3ûÎÇù´möú…zý|åAæ“ÐÅÜ5“þ+]íæúÿd¨LÍÌZPhÍŸš]P0K=“à ;)ÎÊ—[8×&6p ®qÚhc4Šü(ët%6ݦDÚ 0ÃF;s•ç %ÉZ¨Äg8”¸‚ÙÊkïL·Í£klbfdÓ¥9¹t¡•®œG—:íºÚaÍ›nµ‘¤°GÀ2¹«$Ä*]ÓÍ]§›»ZÍ]G ê;¨k’¹ë¥k^ï®™½»ÎS4C¥k´v´m<Úƒ>.œH×Êù4v¦ÕWhžEn?™kóõSy;Sw<[©ŸOõê«Òæë“ýTrèöµûiï¸ÖæÆëïí}Lï»ãzwå_æ<½{mœ£÷ƒ÷1½4;¼Ï­4¬F±{´u±JÃwwSý±P·¯×Û§FÚ~®îzýû¯“ø~Úúš3“¡Ô?íû›Úº…|¾¶VCï~§Î­úðÑückä½É^m-‡Þ¯ú÷Õêýhõ2ËÕÙ«÷«önd}ÜÒüíàmí=¹V¥>|õáQàã¸>|³Cf¡Ô¯ßÑ¿K·+‡™·§ë¶­ºmêwÄÛ±ºí$Ý9tvjïÁ¦íLÝö<Ý9—³S;'ú î[¨;ÿ?å—‰>üåë÷{å=»‹(”Ÿ‚`A „€Žàp è‚0 Œ)`HéÀ r@¸8Á<°,.ð0XÍç?žÀ_Á`;Ø >‡Àgà{p(?Kÿø*Ë5ó`ˆ“A.X–ƒ5`+8NƒÎ§ƒÃÀdPÊÁZ° T€ý  ÔåŸ`¡`˜JÀšÊó7Cwƒcà{çL°¬kÿ?öž,Æíý ¦1jH(-_2DÍמRi™#**¡,Ó,55Íd–vd+%E·)©üJˆÈ•T–²ÄER$nirÛõ?ßÌD]ÝËýýžçÞÿóÜ{žç­s¾óîç=gÎ÷ž3 Àô. '€õ/¾<ÐmA‘Z惸NbßdĦ.ñ>é[ã‹ä*ç¢Å÷|bQ@ôà€ùíø@òž=£ïDü¨DG"€°{ô}zò@ƒL"†BDWP£GóMùHÞв÷÷÷o¿§—&‘!Ÿäìјÿ ùÈþ´¦÷kþßKäŒ Š‹“6Å– éêA,]cdgC&“ø ÊÁ¦C.,.‡Ïà ü@Ë’î'zÃt?”¦!¤¯«§G224зôõ Å-À¥ ë tMLæ“tõHz`S?$g±+YWÛ…¬§§ín¯§‘ GÀàq¨—Ce³BE Y› ¯¹ø `h1—çÍàð!+6›kA6$]#]CÈl¼8>Ô@´…X±7ù/jÿñw ù߯Ée³ûÀzÓæ0rö @~Ÿ8JúFÆÇUЮ`Ù?2VF-è1R˜±ãÆc¥qðed “&ËM‘Ÿ:mº‚â %eUHm¦ú,âì9sçij‘`í/ç! LÍÌZXþþ±ˆ‡çšµëÖS½htÓÛ‡åëÇöçp6ðøa`PpHhXøÆM›#¶lݶ}GdÔÎè˜]±»ãâ÷ìMø!1)9eßþ?ýþZ¬/Hì7Eˆ&þ‘H4ÊÒZ‘ "èùDZ¢³ÿ?(CkØÐ:60߇%¿“D{#$Ó¢dDZìïÔoôÒ!¾Ž!=#Ä¿ºGMçýÿÓ8{ð7íßj1¢Uò­[a¸aõáÛ0üo ¶~.¥Ü÷‘Ãÿ‹X ßæîð°ò'µ¢8ZÕ÷2½Í˜Ó–’õ¸³Ç¢YÊé··ä†á.L‚¥÷?“0–—Õ~)Poýx÷¶sõñ©Ê"…Íú™R³U›ÿÄW?Ñáð>¨żÔÚš(mùÉ×ëý8‹ïÊÖ$=älÈŸ}ŠyýÄ,#yåÕ¬Íd\i%|·ÛÓÞö0Þk¹u•×EÔµq:ï¼­[×å2öÛ¾W§nv¿7ï}P]R<7%yMJÌ‚ÂZE•+rc¯ÚÙ»¿N, Œ®)Ú˜ò»5.§)ÿGíÁ€7w‰*3µóá¾eEkœž'ç¶½œç~PÏeCÿ/Iãú¯ÌR8¾c-m]OCÜžü—'r~˜ÇgÊyQe<ŠY¹'Éü-EûOÙ)gÙ.Ja¥KñOÅÊ©NˆI‰É‰­5¾_Z%o@Sú¶ÚYAw(Ìåiz|ôP çD¦–©D9*íß©xMÞðnŠ¢ÊÆ% 5Z·elîÉ´0£ûØÏ7ªþJVÙ¸íNêAMeõr·…êÖ×1v©-ë4¸ç©¹Šv#õ¢f‚nbSÖøy©©«YÅ^W­ q‚PL£r±â±™51“®ü4¶`JÍ™z‹ËS¯Å%žnm÷ÿ8à×§ëÀè<7ÕH‘З$ôûd¯XQqìØ¥ˆ­Ð¦l‹îÕø~‚¾oʦ0ß1F>Ï 4šÝñ²ŽK_vTxãÜ)ö6á* FnLãŠ+™9½†Gúö —·]MA)Ú¹x’åT«ÔZõ»Ý*ãê³(.×øó.½Î§d–&L·KyrßÂP%í•G1!“®í4H\£S5V±º–ø·³ÿ)Ý /Çð‘n´Xº1ÿîî5{¸Õµ1ª}»pܹ‹1»Œö¦½:ææÿæm°¾çü&÷ùe‡µ ö=v®xW͉œ¬e E I(cuß_ ïeÆ”o mÏroYî¦~»ms_ƒRä‡ç!cÊY¹t©A½+;ö Fv™y‘ô~«=(ˆh†£7—¸ï²«U4²Ï\ M¶œ"¿º­où~•³rW¤_ŸœšQ”®ºuÒ»³ôÉ}‚?íÍ©.¯6\G¾¤`ÃX‘y•à¶ÖÇh‰›~J$%ç“Ú¥‰Ê”OfÌ Ò¾¬%on…á'Žñ»bäÚ:X¦f»MçqE3H–ŸsÚÝ7³kù#¯º¬¨A[ÛÄõ¦¥vFiКù¹7Þ>b6u$Ù vÄZoIöëO ßûHÁ¬#̪Eßco—¼ûº˜g‰­o÷v=Ä]z§2³8á‚joTæÐãÜ+÷gp-¼Njœjw ÞSMYXSw­×1GQþ¿ØÊ ¦BÜYlNÝh_ìÙWæÌL¬~U~­ÑÜ•éÙþÞìu†frË$¥üEÉi·4ï¸nè2Ð).S8:ûUîÜÆØû‚Åõ]ê Î4I;èþ-ÿˆ‚.ñž·Û‘WõK觸=*º§Yaߺ.kp]vñ´ÜÜ&?gÞé¹}Žîû_ÙQw¯IFº³]a£T7ÖÄïýSçŒÄäiù)™ÂÒ Î¹ ·ÌÆz5 RSô²­—¿yöäæ¶–®‡~aµCfÓ|p*¡Ôz:‚À,ö´_cú‚Z~Lk­÷SÂäó´“»* ëcã[2šÎ~„~Ö²©ò^Ô%ÓëA¯øÊ{fÃSëÖJÏH­Xµf [Õ\h¼l®&Îdº¶|±¶†´°f{Ž =©z¸”亴í炞Vá¯Äg8³kiyx“ªôù1poÅ&½-js Ã8v©Pì\XõÃÊ šº93Õ5U‰lê7y]Ž.ÌK*Äž›·)8¸ãL}dNh;·“ÿÃŰ­s6Ôt¥ú¦÷ßo˜ߒ{vÃw+O7|÷áʆšþì”Ä+ùµV:¥&7”î^Åξ\~ïÜ&_=ó× 'Û×½‹ÓÔ¡µ§ø"­TN!^5S~î;P°;§bþ›ÃA}¸æ» 7÷h6v®3ÚZüÉ™Œ‘ç‘qoÆyƒ‚V ¼­Öwã+Ðã»Í™w:MÆDm ,Jzr -¦-álvfnR-»r©³úŒ»óN7õÅy+Þ^Ðb¼í(éÊißÉ}Ù–Gì>z´Í²¿Ó< X¼¤F'O’I®-­nIoáæ$†›ªs#ÖO¦ð„ÅíÝë°¿gßý£&ÃÁzÿãº?NJ.ªè·Ûâöõ>&Qã—­…<ÓÔÀjsAæÎý¨è Ëu¾³«¬’óf¸F;Ž7Hš$5ÑÒeõ£‰q¶ú¯N(ÄŠ¢w\odXÑ4M6›‡‘ãÚrS˜Õ·Ê°nZ¬"FìäyùW§=ÏÒwì?üôDªÉýšµz+W/(½j¬z×){€T²Óí+s¤´= ·!ðþëNƒ²¬ÛèCïÍýÝ»ki%ÁÉ5¿ašæFOÜyʧÈ+‹ùÏ.&Ù¨ ¸7m(÷UÜŸŒ±±ÿ)cë›MœÃeyÆ­Q ÇP¦úíyZ/™ƒD¿Ó_ÏJÕí ¹T^[¸Úѧ f+ MLw’B«Ó®Üd~Š»_ÐÜ㜫պ|ñ¡§E(ÒÓ¸qõî†Ý«Ê­.T­0y/íš•Vc69G–pî…ZØBS¯Ýpú¡¤„ uG‹ŽIá!÷³ý†/¯Ÿ›¡qÁ±ËuÂs5åÛQ\ bi7]˜ïS“|öþ®Nš›Òǃ²€fŸîAUùžô—ayíú“æÌ¬•½¨G!KRq™ôJ‚-z®Ž×ï¬]Cï™CuÆKž“´‘œ$ò(-i#ùFä /ÁCr‚Hž ¡ú߬S%4HÞÉã¨Jpþ^z3Ñâ<#’³tL¥Ä9@$¯x 0I'Ι!9¹ÅQ(û‰â| ’ûITD¡ö¨C#xÓ¹Aˆ@ç%®Ëm— ]¢AAÃ*Ò‘¡• %Ú|Æu ñ÷â²E£ ùPùÅd2xˆ:|V(2´Ð3´@”pø,ºHG°Øè€ûb“?Õï‹AA<–€ê%‰‘Iâ“CHƒM ™‹Â}y†èLcð/#ÞÇ畲£²ØK鲨#àw™Jž!0?SÛzL;=S\GÀFò Ïã²XC¶ÇÅu|L•ÒæåÈb·æ|éßê.rÁÀ!À3"+ AˆTÏßuÖœÿ5ŽÄ_HèÑD‘.>¹Å&Žx”‹ ‚/ ¾0 €ËCر>Лu®Ë­È¶ëœÁ¸R(Žö_ó¤3@¼ÑA¤†ˆJúÙ\*¢ ƒYl„’hè½4ªÏ@Âè;gÏoçÿ&²v#B™"ƒ>˜JÀ1„`€g^!Có 7„ÿEÉo|žÈZ$™ŸŸðÃí§@àd$y QèÓ(lQ`â u±8 †ýÅ¡J ¤²Ø¢¸Ö@”añĺ¾> šŸhñ>D)r/K¼ðBý‡H$Ïp Z¾Œï! Œ ‡!Š1°:Óq¨ Õï kÔQlˆ§ùHe$ÄtSB ìžuKK€¹ æ€"f•²Ø•bäXrW[€…ÇN‘Ä2:t9 ŽEÏÀc0;ÑâÏN$'Y·¸w9ûAYÉ`wŒ±ž8Ö6%5ÆÆ[Ã2<… O·‚•¬`Èá#Ÿ‡ÛzeÆü–FÌSt§liï`ǨNÀ~@Á³ë!:;FÎã»&`— ãccÄ.0Ö Æ[Á òÔ3aŒ¨Ž¨$¹_xWYᱞ¨¯d`‚Øw®H,Yã±»¿ÖcÌ2ãã‡p#N •ý7&¬‡! L³†}²/ v²Gá»ÆrEc‚øp Œu‚1`< ”XN ™² ÍéC1>ð`¦CØî'E÷Ìh¸€¥ Àý?ö®<Š*KW:”R Q3Qg Ÿà4e $Â+„@‚€¼ì¤+Ia¿ÒÝyJqÀUtpUÄuÐñ3;ÊSâê*~Â.®º£¬3Ãìî7Ÿ»êÊè¨Ñ/êþçÖ£«º*„„t0÷S’Üó¸çžsî9çÞ®ê; ¸ôù~!pÃ7 üìúpÝ!ñ³ [˜#¹ÀFTW†¿}‰ÀOHµã—BôWáŠ$†%εHâAX)ñó˜ËTz“$6JB­¤Ö±ûÀëØr_ë¶ñJ½*E1rêígšúüÝÌ_ÛA{sµÀ?<Äæ³ßúG௖2–“_f¤^šÒŸK¼ :p5H™a¦WòÍBÌ££óqÙepǘ7áÕoü-ÿ¥ƒžJ$±h¬VßL1Ã/ðí6^©Náq&ÓZJ™1¢#;¤¸]âzua©6K"ÐKî[S´VÚ/†Þcµq1MŒêý,ü, ¼ˆ]Ž$aäöJ<žëi‰«—ÜRÆ*É% +͇{,‚ÊsR¤Ì¹’6^ø=Õ °çíMã-$ùI?ðƒ&øTu<£¬£õBúÙ ¼íÿK“~¦±yÂÕ\wu¡Ímˆÿ +oø§Rô³dÛ@ö€ä¦çM20ߎ?Ëm÷ ,“Ô )˜]‰$„Õeð|¢Zâ–þPz÷m?ßÁ~XÀSíÕ ¼Ekþf;^$Z ‰(ºR|t“þvW«À±êo Ììø€ÏJ±éÏ'¹CRF¸"}a‘ $g;ðÇþXàWZùy)S𠇤X bÏü(ð>µÛñüVrƒLDaK»åv¿ÉÊóVCõƒ0pŽ'ߊ3‹ôBðÍ€{Ö |½M.¾“ä¼È _@z \{ðÿüN»^Ë$žŒ½Lºd-l¾VÁî¡ë'¿=qí`†.¤çJZ;šŸf7sƒÀ_ì`ß›¡Þ&M‹€—½QàK͹æöÔy’PÃtAùu pÖç<Î,E°Û ØL0¤QÆûÛX¹Us$¾ÞÈ™ïÇs§`É™SHJ‹˜ä¢J~C½¼Ùs7ôåú-âðƒøù ÒËÀ?~·Àße÷‡¥„C6ªΚMV1}bžc€·þÏv,º#L!ẙ=îÆ{si‹Ç‚k‰Ù ”ÞMÖfÇ!&—¤°\䊅ué«ðG «;x¢Í8ó»Oàßs Õ-ÉZ ÚC÷ |¡IÖÙ*-r3R&OA ‚Â[ƒ°%× z·ø5‡ñþ†²Îl°•l0¬vbî -OïíÛ üg\B, 1<~#Õò?pnø#‰¸õlIP¢®Ò×X&6—løZ«¡vá|,à믴Âëi ’ïVþ.à—›àK4Ú0`€-Oà=pòÛÍ€/}Dà7Ø}ƒâ"º*ã.àÑ{Ù?JŒ#nÍÿi/ð÷šáR™k—å˜,{"db ð²LxåZξ0zß»Å. ™}‰ŠGï‚¿aÇCÊpÝK2?ðè½ñKMx ¤L5ÿFï‘ÿ­Ç|) Ë•Wí¸xû€—kó®M’1 ÂÈEï÷øcÿ¼­&¸KrÏ`a^˜ÇŽÇþ ž÷˜x²w$õÝøÕ¶üK¥ÑNÝéÊ$·L"3[ù@só?Éj«%º-×þ(àã­ð€®·í€»ŸxÁ<->´¡30ξæ°L]·Kü|V `ÍP)ÆbØ_‰ûÀêD½La&NVâp¶Ùt·Þ˜×Dàÿ`_'S!ɽðc€Ó3µ%/N2]ƒ5Öᣱ·–õK“>¦“=R§3£¡ª!ú]À)Î8gfÚxL®·‰þ UŸÈ=³Éˆ´÷ý+Ñ^aÒ+¤#'ø=Nû8-Wfçƒø‡ü‡­Š— ôŒÕ’Hü–÷£#‚e¿¥á.ÓóI+p ßD Ÿ¨ç*)£YÒöÀiÎÂDp£Í’4?<á-ØÇCÁÜÄr#³?ðZ75‘ßB)ƒ6zTgf G^|ËZgêu öØæ‚Þ²Š< ÛPl¾FWºð;°«])C.cÈ+%®ŠBÉDtAw÷¿wŽìѺ¿øcö9/dQ†”(Õés€ËLãÛs m*¦°£ÔˆS¤Ìb)k;Ž(’®˜`5;Y˜¢ŸV k…~Ö€ßë¬ÄÓ¥¬ÐüÛ<#KÜRÉ=ÉLrÄ`{ß…iüR9^ÕÂN|“æuÅØæáWêx†¼à›‰¸H'¶c’ÃгΣí¢4þ-‡½èc]ëã}ö†@ËLg/øSqTɇL%Óu•à_×.kÉFuèƒç"\šÆÿŸƒŽþMÊÐÑlCG†H3õ™21¼Õ&â"ƒ¸LWÒ4)£˜æC‡+èw²ïb+#•F}>¿Åëz‘¾W%.çŒÛQ›QÚÀîn!<0§I| Í–ÃF¿D[g­ Ï™Æ4ç=ë1–q4ÝÏ”´õ² tc»IG±ï8èΨ7)NòçcèÿO‡¸ö&3Ñ &ºëØ Ó˜^8õbÐÖ]žÆßä`«ÃfÚMúÅìhiªØ@ ÑþXl€ÎL¶ƒÿ+W¦ñ_˜÷®ÄIz¦ä.gj ³Éɾ•Üót!cûŽƒ×¢i¼à°¿=„ L6Í„¢Ê•Îå  lüØ¡_ஈù´Â±K1©ô¥O§ócè©`Ñ‘–Û[»æ™tþb“çIYlo² °Ï¦[ò”Îg³ä®aÓ“)üªuÌ!ໟK翱åìT¸ÓqåMzÕN¸¿NçÿbÃ]cÁ¥|z6aíÀ %äùÅZM[ xÝoÒy¯Õ÷æ>À¾×a; z¶À¾'¦Ö[€Ÿù|ºeo®Ê¶Õ„³ 8­ÀI8uIî&]î÷“õB:­CLðÀgžpÄjlVÿ^€X ø‡ú·^âÃFý ¼ì]éüýxóµ}áùwx[ðšX¡¦âmžow:ÿs;^jáÕúüöϽ'=±®\fÌðbÀêJÒaà;¯°é™ƒ1ÿ/D ·7mÂñjþ60ÏmÃ-rjv K™¶©òjç(uÀ¶ ç7áN7΄áq™%T83Ü-ÀÝ Ü_ÙùÞ*eú ¾4¯6à–îεãºüZÈ¥@fÙË´„¥'vÚÚQû†;žI®3ÑV±ˆ4›‘é |ôï³³~–BOeÐ[dÿtÇ·ß±]VaºP”žQ”žY”žUFÿf î Ñ¹&”ù ¥³ÏiHGdßQ÷}û{#ÀP¨5ÌÑ>ÿ *×éóÎZÝïÏíô=Åæ–UÜ(ïhÑI1¾3;±ïRsGk {_gG²ò¸~ühQƒ<¬<;›ûÎÖúÕÐáb¿gÔÜZõy!²œÅu$Ÿ,×ÕLÆvWýÙ>öô:|ÿ,7û^ùÓÀ_É}ê:´ð¤ïy?)Û—›úãÍ Ë#¯&'[çð-ÔñõNo>²xšÔD>ˆI5Ÿ^[¿žÚñR^§zq’‡ŠTíkÓ9çcÄÆAÞvÞ4_ XÞ´ðs{’ÿiëvNgüãù¿ù'I¼ÉE¹èQºœ§^²×Ö[ø·º,¶SñRçþ1fÍ8Ò©ë{H§cQÇÔU7t¥ØÙx]ùýM’.âd_óöx»sœø[õçvÓ¢«Ók­Ôõ9rŸò>…=„™¿µ†êþ^&™ä ÃݟH}|Ng²# e¨g#þ9 æ=£;>—ÅimœeõÇäe úãàYC_æåÚœ\i¬§›¼hÎä‡êýÓsw|öK›»’Gs¹Íž¼Ä'<7IuèSÏ)¬Ï¤©}n;"Ij"Ç;ð;ÛŽ×:Ì_šÃ3#é\ûàN/ðð(c{xn§~'`÷Ï OëxßësBOK"=¨ Œ˜ þö3÷éâÏ>èïo§Ï:ÛsôïäYÛr?¨Œ£ ‘Wƒ¤9¾‹1t~CúÔóÈø3äk,·ì¹d¨+úiÜdñ—±J—kÙºMasu<—é->É¢—Þúã7€÷8ƒ¼Oï<ì.j®ÇÏöK7}S¯yÔøà²È1”AÜ–}ƒêÃCíx­¼OÛ_Xù9í/†s_Ùó:³ŸH¢¸?®‡±¹óg-O[}ß—ñB}n¨‹gj»ÒÍÉ>7d>£èì¬}Ð>fÙ“Î>5TÞˆÓ]ŸIœl¬¶¼»ªÙÝê Îg·I&GNóVŠI†îäɾ<ó8cæ2PÏä*ïþ&"fWy^G•7õ%êa`Ÿ÷J-ÛÇ>0dô£NùvÃFìq’î~jyN¤»Ÿ‡ö˘ƒºÔÕà˜ýë½ñýƒÏÒ'33üôŠîæþ–>§ï p±ÜgçÉqE\u(@—HIþP­þ»Ç¸ú(WÊõˆEáˆâs³³Çq3¼‘ß'VJbÝ?½AŸXŠ(Þ 8GgxcÕuqJD©­óÄÅ¡†`­¸ ¨0v±nfÅÜâ¢Ê"Nä¦E"¡H¾(j=¢lT"¡ »Ï¬Ñ ~tï]ºä“k” ìãè–¼Ѱ·Z–ª” 7·´X䔕Ì?§¨²rZ±Î0ñ>Q%lj©¾%TSÃHK”H”n¾k‰Æ¼þ|®B®aÆßºdúµzlL±6j‹Á†@•9Q¬ˆ÷æ‹6¿7S{#Þ€SIJ;£ùÔ]¦ò Õˆ U!ÅpÊ‚ö >Rç­£ 55JµBR‚aº¦.(ú¡›|0Ñ›ŽÍn@Ko, [±´Ù™®±2uæp^nU|u º0Ú…iŠ6–Øž.´SnŽE¼ê-‡qX8à¹j%5p;ÎÃEA|Kã¢-Á˜·Y”UÎ\œß%¨¢JEÞfk»g/¡ÅÉ}5¸†ì÷›98Àªà2ÑDfSa29Ò(‹*$~9X«ÃhTŒÕa¨„¹ „ºÑB!1à ¶0zxrTŽr×$ŠlÂgÆe–æâ†eR¨ª«ÆˆµìnAMHÄX×D@Èa<1({ézDb cÍV…"Q.î:Ô€™´gÎXª#šëà¦~«¦M2é`ŒÍ±ûÛ8¹…àJÃ2>>JwÅUɱ&«šfM‚\©’ƒmu¢]¹JÖÉ®–$Õc*Ú5“œ¶2s,èZ§Å,ÝýiÓ<¢£ ̲ŸîzÔaQRm~«­–zcÈß0ÉÈùV6@­¶(Á$ÕWe.é("Bp(ƒªC]\«dzti„(°”Ë1§ õáø[`)ýžÂX~çè¹cc`[Ÿì“lXÏЗÏi¢r£¸Ñ\¨!F1É*³U¢窘SªãÁÎYá2`aºñO i #ßP@`Ä| C?÷ ÇÕþ¶SHÒ#þmPïÒ$qx4Zíõ%¹ *‹S‹ŠÉZX+J€n:”ƒr¤ë؉(p !318[Ãe|U{8vŸ¤LW»Â<,€Ð\tÌ`HŒŠÌ÷9£&N5JD®òúý6I @ÂÂE ]Ÿì§ÜÈÀhD]ðñ)„8¹cŠäxª-àâSUÿ‰r3ò¦îoÕu¡(%rØÂ𻦈‘¼ã‰7"ƒe†ž¡¡]RaÔpÔ!Q½9% é*V•6…t^渧R(t[ªP_#ø›—(]ßȖ浉‰Vë§QTW½ì‹¯pt—i!Ö9ÌY8šü#Êr]—K‘´VÆ\ /‹ûJÀÛ­ A]š:9úc4ÜdÕXV- ˆ¦¿˜—Kˆ2QhTެà¤XsŒ»žËá²µ0QG'Çä@˜Q™LÓ—Cãjªˆ™Z°°‚ ‘Ø×P­^Ÿ©Õ›@'2DKƒî´\9ó†y¸8½Ü /mÖFÕG4@XcN®!G´ØüÓ<Ö*(Áj% ųx Æ>5‡ÅàÀ¬ü@HµÙ#sÄI¢“'a¦Ô5q7ò…dõÆY¹¾Hä zƒkMˆ.Mf÷½ÖÉ, Ý"·4Ñ=£åzàŒÅ©º«LÅQÃ!àÞFÙ¤¢9Z4Õ½oŒ‘ƒ 7ôúCt£«—åô.s¾3ªݵt€©`¦u½E sF.9mO‰°oYEÊ×njFqÁT«K†YÕla¬ÍV“ŒÔ—ÏÍE²ÃÚ䮞„”+BlP|ájRl´ æKˆjb» šE|’A¾Ñä§U'"Ó=”¹Ù\þËã²¥q\ÞõT!Å"J»Ç—äžc´/¦ä„lè eŽ{ùóQšGké˜ã&<2ÿñ’?Þ[0æ«; 9®­@­?ÕÄLû¿—?ŸQ¨ïåÇ‹´ã½Ž3r Ã(,¨»÷½"óþ‘•_ŒÏŽÉFgkMáÑèC[ÝŸÓåÉ1RІ’ÇÚgê_‹ õÌÌ»u½Tô§¯_›¯gÙ„úž™¾®@·4ý½€µw ¨H7JIƒÃñ5±Y›j1ŽÛúµÝW6-pÚëmíמ×\â`q™â•èOÆ3s«¬S¢zqÌ.&¯ !ù8¹YélJÝjמ:‹ï}#›veîšP$¬ÊMúIj&ätTcÓ3å†$k유[ʉQºlºü·xöÓ°‡â[ÏX–3&c'ÿ}h›>þí£_¾ºsò‰1û¦R:ÿÞg§÷$œÞ¯êŠÿ˜S”OäÔzª|[ÿ4ÿçdgòæóŒÏö:½ÌÇ%æòËúÔŸnö"‰Ïyuv¶Om¡7D©˜/Nc§°¦£&¥6ˆ¢/_<…ÙiwövÑNû©7Ä_ÿqá~–c° ¶ž´þ®z‹ŸF…üò ¹>º"ò­ M¾(#¡¦kí{BüÜîàW‡üÝÂÿ¼ä­ÅÏÜvÜ88÷Ǭ{èúI‰ýµþðÖ*Õ+ôãèæ€7¦Å¯â—{c§¡Ÿ3õŒúøžŽÛþRõˆ÷Ÿ(-ì)}_7küî/Ê(´þÍšú éüLý»=A>]^Cî>Ç f<»oë§¿[¥ïß ?™ðõ·S¤?'ÐétÞkÏÇÿ]ž°õo£;ÙkÇþkÚ#"Ü|NµÅ÷»%ÆÅ…ƇØ+½Õ¡*E„Oñ±3¤êP°QŽÔÊ*¦zÞýºFl€æµžÇÏ˧Ü'<¶íµzSšÁvâÖÝúÛÚú¿þ¢s—e¯|Ë÷æsÚ÷½’5qØÚþ¼}õ|¸àÙŸ)õÏ/]:ñêêžñ%ž}[^Ùÿ³ Ó„‰Ÿ/Ï¿ü·î½rØíº!vÎCl_ðÔÞ÷?Ï]³ûî¸îÉ£×öm>4íÃçÜpUf³|q›´wû{—ù]»‡ß°lêE«rÇ÷\óŰy…ç¿™lHø÷çynϪ‹ö¿8÷‰ûò>µcËÇ[¢{,=*=V™?éê—®xæÐ¸=#+ÊŽÊ#.Ì?<ù§­{6µïö½4üõŸ\stÂê›7þ|ïî/WÏþòþO™pôºû†åe¶î¾-òÿì xEÚÇ+aÄÊÌ$™‘³Ñ Á “IH Ž †K.‘Kø@˜IBLÑ0*peE×å0 "‡º å0²,‡"f1Ër;Áavà Š¾Mw§k*#"êê>›Êó§ú×ï[oUWw×T7==o›1,-¹Ãàw_önʃ‹CçÞû›Å;^ÿâôK·†LHyæõˆˆEuÜñGWBuô¡ ½?ýô÷ùŸݳ}ì'îyfYï¡C—.3·xhûÜVû{FÞÛ»&&²_íИíŸ;ró¿ÐÞÅá'?ZWU³­o· ’qw¯\¼´{IäÊmKï¿´~øù’^:¿¾œ½mf^—…[: îõÊÝovô¡eÛÒ7FÚ¿ßwíé?ö¦ÌŠxg@ÕÃsÄù¸oîÌæÐß•¤>.©oüÍtfeøø.Ž¿/1ÿT¡|_ûq¼Èìß>µýß[ÑÏ”ØÜ=3ò¿>”–Oú;ÓÉдBÒ§ ùL2hZ>”KúL›LF: È=.2lêC¤¯3ƒŒ„mèÔ|2jš“ÜçÌ$£²§‘þ…9ddš‹ñiÜÄD‚Ô<ˆ)ypsdó_-:ÝϺ}ÒÏýçOöèÛ;K¹9éY±Y9Sc3ò]9“3²§X2B’­kˆ5.6Þ›œ(Y“m ‰¶ÄnõåNV†ÓJèchô>Tm„Þ>ª§ •ÐSЃÐ¨d…äý,œ–BH‚¼§Âéh9ä†ìy«à9 òzÃéjÈ Ù!y>CvÈ{þ’ ó'`‡Ü"÷8Ú ½¹!$AÞc( 9 òCH‚¼GÀ’ ïa0ä€$Èû70ä€$È{ 9 "篨zéópZ å@ƒ¡xèè[ôM5ô–߀Êþ‰~„–@ó¡™P>4õƒb vòžCP ä€@6¨=D ÏYÔÙ!yþNçAH‚¼GyÈIЙ3ð^ƒBnÈõ€,÷4ü!” I÷ ¬ƒž„¦@ä© §‹ ' $AáÐUlc5ôÛV|Ȇê¯ýÌ’2’`r3iJB%7=ƃï›g:ÒŒ˜IsIn%­HKÒ #á$”´¾‘ó#'6#;­06+Ù:)×™?ÉU˜“'Ÿ%q!Ön±q ì,‰ïjëš`‹‹ûñÊØ?$íí1;kYiå>ž·~žálW³aÛàš’Ïf¶eõèÊÕ1‡S=OU껽ùÊ{ºÞ¶jôÄžö%ßäŸ>ØÝSÐfÜ‹œL·\5¦îÀ‰éžÔMíL÷4{ؾîoz{J2=‘]úŽºÒáLŠ’ïóo¾s~ðÓÞßm8™Ýî×}ÿñן<³¿ß§ö;}®úÒ¿®Ã}Íø(\üýõ_ºŽ6þ÷&¹¯ªÛèN ¼î—JŽ“f:¤Â@Už±Ã@—@O¿/¯c e×Vg¾Æg t=1#?6S&IQ´"fË>l¦»·÷-³œÅfïŠPß+èêêWÿŒŸë›pu9œªÏÞx½&ê9o¢Þ¯M´4ØL=µ&ꀘ¯çä—MÔ ‘+&j‡È·&*í…A&Zvê‡Ë­lKW®¯?ĤnÓZ”gÛ m"&ºŸÈmŸÝ$°ÿw¥„ÇÔ;ÑHWŒ7ÒÈ?†Ñu£uÙF:v¶‘:2ŒÔTj¤µO©5×H]k¨už‘ÆÌ7ÒG_‚B+Vé:èZñ£ó¿;~ÌœÀñWý€øÒÔÿzÛ?||B?,5RãKFª+–ã×ÍÔú§ ÄH—¬¾ñø¥süã{iÄ\­ýµO7Œ½ýÃâW ñçý1hñhûÈó³?öYÛ_SrWÈçð<éí+?&Ž:ö4SeL—çÅŸ˜oh\`©ô/æÞGÿ-Iíÿ97Ðÿô­Ú'j­ôïwecÿ_+©ý_rýoÿ«™+Ëjþ«püúqýïAy¶ŸY]žëˆeüÆÂ5ïÞ‘ÇÇjäm–é^h×Zy|ìûª‘î_ŽÏ,/\ÍÆI|–¬–×ÍY}íñ—ÍÕv†™h\|þg„ÒýÏisu.¢#êoˆ.ÏʲÇþóµœø}!µ/Í_š(SeB¨¯~¾,ãüÖ&ª|eö¼Vþvfc>ª}Q«†åWµÒìï vfãËï PþyÎ~H°3_¾F°W ö¯įâìM[ûÛ“Ûú—oѺayæ£Ú; vs;ÿòIÊ3Õ~`œC‹ õP ü‡@aùPbt‚lнPTÀgò­Ð'Ðy(mí ‚ž‡—ç´ËYÐPô*´:‡½:‡å›Û™»ìx°Ž‘7 v,$Œ lcÇîþÀ6v œØÆö¿qŠ¿õ{ßÛ÷« åsG]§ú°ý>§X.¬Hµ±}î}Ü?¦êÃö·z>ŠçÛ×ê¹&ÚØ~.¸>ß>^¸>1yoÃ>ŠBû 7– ò%wÈûaòrÈ Et2ÑhÈÞÉý×/â6Ø·…Ñ hÈö0zrï£*€lòO’¼Ï…6ˆí>F¥£aÔ±ªãß5ï5HMµIцî,uµÄ[º²÷ uµ&Zã¥èÎLöÆ#iHNþ´²µKB·Îÿ™2É(“ÚT²•½Í%ßÅÞÚÐÈÜÈü_ËÑiYÝ»K kç·Ì¥ÎÉE]â-Éq–nݤ¸äädk׸„Xy$öã,q–xögZ‘³±pcáÆÂ… 7n,|ÂÑ}RS³œRwK¢£²Ò0§kzN¦SêSTäÌKÏuJVKrÒµmJ$ùÓü‡Ÿ~3nä ï½ »2&à 3iFN#O"ìE–,Ò-ˆ]ß›ƒ¼‹(í³˜Ò¦¾{››‚l±ÙSóœ±E¾gÇæMMŸ9Œ î“^45ËEØÃÍðç@¾‘ÌÃ¿í »WÔŒœðſ랡wùÅ"ì–N3²ù XZNL꯳;6t41ÕgOCŸpÕG­øˆ¯bþ¦–ücwÄÆî[ Zù^ ûÛ&õK:ßÒE"¿äêÕÊÜ«W‡«¿Ö ßy²Æ[⬤q]ãºÆuë×5®û®‹³Xã×5®û¥ÖýšÎ…_á:b)š™çJKGî*”ólu)'?ÇE,.ç ™4)7'=cRV¡ÓYè,š”•O,Y0KáTö3ª½hZºâ¢®IsùÞjqf£pZž“X|þùõÓ–L9{ £X&O…_zQ‘XY‹¹°×%;óá‘éLŸ6™X؋͉%ªËiés×Ý]\i“e"×›Z+=ÁþO¸Ò­£•È[rvõ¹ŠœyLç›Âwd¨÷³+y'Î/êÃp5Ø@¼ÜÃêb2ç§«§ºá¿ï¨~)Š»¢à'Áï¹ÁAõ~’’àüÊZ›iÙb£ß;ØÔxã8?/ü¼ðÓð›ÌùUï~¦V ýTü|ö7S²ÑH&¼¤ù©ý2ó›pÂL' ­?ùxÅœ_&ü2¿ÃïIÎ/~¹ð ´Oq~ð+€ŸIðcz†ÈgósÃÏ ¿áu¡ ¶ãyίâH{Ÿ_¤¥UJ½jb~sÏZ«¶õ‚ŸîþPßõ¬o“àw~6ŽUÛv"_6úŽÏeD;FøxûIýå¥/Ý11”DëÆc_Ûä –J¨W=VÔäÍEßÍ’Ï¥ÅÁr½¬ßC„xÞ/BÉÅô†ñ%v~_yÅë1•åšÙù&³\;¯d–·ZªgùÍì<‘¹©Ü–z–{¦ºž•#°¿Ê¾_SôÇ2Ë—YÏò¸[ÏFÔ³|\¹ë9ÌÇìx’Ùÿ¡ü&~G,c³ÀòUÊêû§¹`ø[ÜÒ×ÃQJÿã¯QGÎ_mÃm¶ÿNnûÙ7­’ˆÖAè¿Á\¡?Æ"§ýU!”þòqÉF>«Ÿ s®Ñvž;¸ö°!(›kÏ äµ‰Z{ÞÚÃÎúAx}üJ!þIäÚ3Lnïg¬½ËÍT§´ÿ\ìóûÁÞ4ÈŸÛ ÜU`¬4S£¯Ÿ`-ðäåÝojí&Ø‹ž'ð³âyW™)Uâ½,ØKø;V›i_Å`÷¼Oàƒ¸Zà³_ ÐÏZ3ÍVÚÓ4¸¡½ô-õx !m{wíx’ÀYç ìxŽÀ/ \*ð:7 ¼_àÏ>/ðe›4ñgƒÀ· -pwS%ðDxºÀ%/øU°w£™²‘ŸíßU‚}½À;®ø¨ÀU_8HçÏ-–î,pW|Àÿ'pºÀSv ü¢À¾ñd›™¶ÑÉý· ¹´SëÏ•àRŒ¯ÑDÏß{O¨ãEÙ(ÄûPà¿ \-ð×ënòg£À·¸£ÀNܬW&Ád8j·6¾f£9ž Žáøw`+ǯƒ8ÞNâø#pOŽOí¥´çÉ&òçWvÄ%½žî ’Ùöõt¥boÎ6éiîÍ2wW¶ÔÓÖÁ2wŸ>¡Æ#6ðYŽk9¾Àq6«Ÿãà:Žç³夯/‚u¯SŽß9þØÄq8‚c/8’ãsà6 –8Ö£¤=mIäí¿•›«û»6FÛßÑì¦nš=vöUÙ?=Åë­ù„}!·?G€×Ý­§™J{ÒÁƒôôi…‹Àeôt¢ÂÅà¤zÚAáùà à*¼$@ý¥ƒ´ú×À~xŒž6QŽ—-¬=Úñ²‡Åwéé•xŸ€kÁ뮯˜¦§ƒ”ò_2ûCzZ¢0›BGfèi{2œ¨§³{[ð®IzºP9þîJ×Ó?)ñ»OÂö(þýÁÇïÓÓ1 'ŒÓS£R> lú•òùà½`·ÂnVÿ=ýV)ÿ 8i²ž–*¼|8[O7*çÇÚ°ÿÜ3´þÛÀnzD³o`_÷¨fÿ3•y‚Ò¾Êþ/hþ'µçuÍþE»c¹f?À^ú–fÿ†Êü¨Ò#.y¤·õ´Â·ƒíÖæï1àKëµö'‚G½«§ýî ^ªððYð…‡‡4lÏáíZ{ÆÁ¾‰«/||Æyà:ާƒu{5vˆoߡşÀn=¤ÙŸ`¯¨Òì‹a7þ[OW)ÇÏ{à²/õôEeûö(oúJ+0€]ªÓìGµOg¨·Ÿ `/¸I³Ÿ `w7ÕìçÕßL³ÀNnÑìAú†öᑚ= ö ·èA¥?Zð¯h¥ùß{í^mÎåø4ØÅ1ko’Ð^»ÐÞ^Á•g·°j8Öƒ›Ü§qØÀq{pùd S>}ü€?ŸÎÕ8Æ(¿‚}Á“O `;8’Èœ Ž~Ô@Û(ó‘T°Ûkö͇˜} XªÒx(ø­*íügñÖUiñÆ‚ûº õãód£üþ‰Ûžfï¢PçóÀì½ÑŠýV™Æ(ñ–1ÿ?¨[ñ“ݨ9e¦3t²ý]ðÞ­=ålûhãÁ>p5gÿìåø"øùõZ­ÄE{ß3ÐýJÿ…‚Wxý'~Cý? ø§o–:ÇÉxÎÞmáJ (¼UÊôExp=ðÁMÀ VùùÀÃVyðà„à‹¨½Ü \>'è*ã¹ xòÙAg¢ÐÓÕwxô~[;‘btšú{NГ¯_ÞkašßåÛõüù¾ŽòýÖ|Ü\97è|VÞ÷}à7­ò‡¨¿{ ~xÂ^³^O‡¬òßOÙ[H_£cè«ô5$ôµæû±YöãÄ#ˆ—²=Iø,`úÆÏ~™ŸÀôMžr-ŸwåƒÎ#‚sÀô›Ÿþ0}ãæ3‚×Ó7jôxï¦ïÕhûõIà­Ÿ :g½ï¾û—fþþ <Õß¡G¢wÞtfH{ǩ⇪üpß‚#Õ·Yt{ Ü“-‚W©¾¢Ë¯¦o‡èòÏ©¾má­'=ÿ”)¿‹Úz¢3Gð½À¡ÿ¸Ü^Oêï#A§[æcðä_×4>ôôƒ7©?ÀM‚‹Aˆ•G”‰þ{¨ïà[Ÿ:»¥üTàÝÖþ¬^‡úeRðF`GpðÀ‡îžcõw9pƒ…/®·ðeÀÍ{ ÿþ(p›Uþê¯Uþ5à)¯/ˆ<¼øN¼¿HÞ/ðf«¿?¬÷÷SÀ{|ÅΟåùç÷½tþPøÀ;_:·É|PˆuÇ!ÅÎÅ¢ù7ý%è4½¼öÏAç+RÿLàN«ÿ5À=>x©…çbr™s¤ôoµwR±ó¼¬¯K8Tìù 3À[O-vþ&å9Šø}±ç/ü<ðÀ)ÅÎE2¾o×Zå÷/·Þ¿øÖ³Šç¤þÓÀ+öùù_ÀQ«þËÀéFL€"–°Ê‹€‡Šfô•­cøÉð“+„Ÿ‹úÖóg¿9¯ØÓßÎ=šü£ÅN£ôop9ð•R¾xk±GßÀýÇ•9¥2Ÿ^¬åßç×gèaðŒgÍAj<›H±|v¢sµŒo8mõï1àœÅOw_eÑ'÷‘1ãóX©è§‡øöÐû;‹/iÿ*ðÔöbç‹‚ßÞÜQì<*ã zï*vZ<¬ùÉë èo§ôÿ4”ï;±Œåë{'×Zý= ås®/öäñ9Àë¬ñµßmáàM^¼Ù©cÈ_Yì|ßgÖ{Û˜ñ/Åø«düFýáæýŸÞbµ·ŽúƒòeR~ðèù´}LûW¡ý¥ý»iüxþTyþ!à '•9µ2ÏO½½Øq2ýÝ1¦½;ÐÞ>iï% $œlžÿ'pƒ…'bbé»m‚Ϙ¬¾é1Yô•&šø©eÎf)¿˜¾÷1Yð0ÕÞ"õ?LßÿÐúÂí“Õw@‚‚¦o‚LÑã¡çO3ýy˜¾¢Ÿ/ÅDÓwC4¿>˜¾!Ò ¸b×Dy¾Èw ð”Ÿ(åÀ+þhæ? ¼ÛZ+€÷— þµ‡ú+øªó~dy¼퇎Ríxtú3]áQz¾ß”o]^æì9_áÝôþ=eÎáÒ¿?Pý?”9 ™¿¿Rÿÿ«Ì–r)†/\rÙO¡ò½ŸAåžMå4x•[x1pùá%N¥ÐÓpú°ç>oxÎ!%N­ì×µÔÞ‹eN<ÿ%àåN‰³Ògž¿|z‰ó5Á··½bäÙ&ªoa*_óŠYO*µð½ÀÛ¾WâÜ/ý{˜¾×òYiÿ `úvˈàgé}˜òÝÀôM—Ó¿DïûQ‰s¸à·€é[/‚?ã.|pô†?¾81çÆàËÇ൞ ÜöœÉŸ¡ý»sÌþm{¢Ô¹Löo5êoy¶Ä9^ú3“]ât ^¼åU‚QÞ°¯Œ¿WFó™:žìƒ2Î%SêL”xà,à ×”:Å–<Ø5†žFŸPöÑÓÔßýGãŸìN¼høßRàË_´ä%ð Ç×Z8 |¥…/¾ãÆR§Fèï3Äè5ë÷*¿¯”ù+û'€µâNà¶ûKgßðÌ×ùš~NTß½Tê'¨>è}¹Œÿ#À ‡ûy?SýOï¬Äy@ê_ ¼»/àì¢òƒö]¼>dyCõ¿|ëOü|þ€ç xô¿ŠœŸÊ|Þ¼âà"gÞ¡ ?rb!½î^sA€ýyTþ p"]ÊþfÂE¨ôèõzÁÇïnñ;ß|2á9÷ ½ž|ëÃAg¦ô¿¸áÄ"§èpUÞ¼i_€å+á%ôümA¾bÀ“ ²¿Œž~íˆRçß§ªò¯xÚÐÓ'èù¦€s”<u¨p|_Ã_Áõ¥Î7¤ünàmµ~o<÷çNð;IéÿCÀ;:Ÿ+VøÉÙOD/»€é{œŸ–ç_¾ü ÓŸ¢“Ìúñ|¯=êýzÒI*绲>gœdøwðRðƒ:©?xôå"gì‡ ·ì4ôy1pú  ïG*ÏPûÓlß~é/g«àÓw˜»äý_®ÿN)çW¾¸ö¶§_ðfzÿ!~¯½ÏQñÂOïÞ^äÄÿ xý‘o¿<|å=%ÎYš¾€éû¥‡ Æ }ô è2þ’“Ép–JùÑÀ;ö”8S…§ß‘3ôÙ ¼ïo¼ðäÂõ_¼îå¡òϹ¿ÄùºÔÿ =¿ºÔyYðMÜÞDÖ—i=ïžü¤ßY+åoøµ‘7¿ó¾Wé;Ö_–ñŒ‰Øþ2(Ï€éûIÊ×ï4ü²žê—²?€ÇG囃ì%¼xÛ?N•¬_?ðŽëÎ…ÒÞeÀWBž#ïN[ûñ#À+â¥lñøO1òŠð:\„6œµ"?o¢ö®õ;÷ ýmí xüj3ð$<ÿiÿ'ÔÞ ¥ü~*ß¼ýù¸àß7ÜXä$ýÝ \~v1çÞ¼ñ¦€s´·x÷]*žÂôE¾»¹\úŽb¿]#ååÀ[Þ{^Ú?¸òj¿’ö/^ðÅ€sÏÁªýž©êûý—Hy˜¾Á;"í}xÅ/Šœ3_Iõw–°=ÍóÜù¦’ïÔÞ À£Ð¯öž8ïÏ;[ûõ‡À ‹Þü?Lå§ØÂóš/üžä½¿#à<-ýÛ¼û$eý½ <çübçzoñ©…úÓÑÀ ,þt 9*þiô­ªS¾Äó¼&`Ë3`úüñ‚W¯û;èMú7¼í耼 xÅ%EÎËÒŸË·ÏVñŸ§çaïh~õàZ§Ø9Mäù·GÁµ¾ôàÐëFÞþ˜ú{|À“ïÓós‚žþñð´;·¨ú¯oÂzêõúpå›FÞŠŽ¤O\\nÉÿ©À›­õ«ŽÞpÖKý.à¥Vý>ØCoIà5¿+r~+ò%¼½9è<"óóñÓÔoJ8òüzà«¡_ý\Úÿ&0}ÿÁwQ×”²>CãÛ|šÊÒôó(½¯1àÉÓ§ò§}À ÎVñh*xà ½þô~Œ÷ñçœÃTy)ðnØkGÈûŽ!lñ“Gt–H{Ó¯þžÒ7 ×OøŸã/„ÏÞø³ û+X¾Ñó‹N\p'pî– 7¿+èùV¼Oú“Bþh}yxGcõ)Þ¯À+N+réý ¼ëÇ~Ž·ð~®ÿ~Ð)–þø¥Ç'Êüùn^po Ǩþw£ÐWæJýÓ7¾¯•ú?žrF‰“–ú{€;? âµTÿ%à©àçší§ù]ôø‰‚4ô„ã'ôr4ðò7”ü¦çOžfô%§¬/v^}î\à5Ïy´ x´)è”J{. êgJ¼ý4\{WÀ¹XÏpÙÍAö/ðüOþ•Ê×$ü5àÎA/B¿wNSùÅÂ<¼ó/òb+õöÑ ‘×O×[ûãEàÄÔ Çïß ò•A¶Yß„¡Fçí&ÈxÊ€;¿UâüCÚ?xô5ÃNž³Éï§ xÏWƒŽ_Ó×é…ôß|ù†ç}R¥÷ýú¡ìÇAà¥×;ß“þ­^aí¯kè}wœH¾JÏ[úÝF`úÖô:™¯Ÿo³øÇSÀû¿[⤤þŸéù7Îg!ü7ï“o¿O˜}ÈÒ?¾j§ÑÏNÞjÙ{åÀwWãdþÏžNúK€÷+á¹ÀkÎxý½xìñ“d>¯ýp©ó¢”G€÷ýÝðË0}§þ ‚?Lí5~såt:ÃYêñƒ/o¶ÖÿÛÓÍyÉ2ß_þýS*¿«Ø™)óÿÔt•½YðàÑ{‚ž<{8}Qóg¨üŸÀôüGc`nRöác1ö`xé7Š=ú¨¦ò ž}YÜRâÔÊzÌ®ÿf±3Uð"à¶VcºÀ“æwvJ¨=è#z>/Þ÷½bOŸýð^ìÿó¥½ë€·[ôq+0ý®Ì‡eÝF¡}þè…ôüð&Ø¿_Ôü¸ò+ÅN@èïŸÀ;×ÿÆ¡å…Ï|Õ×ýÿ=8˜7ò|:ðkÐﺄޫ ·˜õk¾v°”óïYÿ^ní¯Pù¿ÀϤ< \oÉ!à­Cöw1=¯™Rä|Nꯀ¾ éu}¹™zþà²÷™ýr7ðöËÌÿ©ü~à†£þ¼Üì*ß1f>öÓïÏTIý¿Sù÷M#Æý­€óª”O"¼Ý쿳€+-zožvu€ýôü|à¶×üÎ÷e=×?§òéù~à]ký&×¼jø]8{Yïÿ+CüÎJmÏ~¸Ì¡£ÌÄ?ïžô˜Zzþ{ÀµVÿnÞnÞÿ<ð:èC+¤ý?G¾-ëqpE¡~Y ¼WÎ=LÞP[ä¸"Ÿ*{`¿´H{ ê÷P´üì¦ïýOzMÑó–½¹ 8ô‹€óºÞ?À ÛçL©ÿEàXŸ ôïfàÝд¾w'ðØGIï^š/åüG*„ú?9à|Xê?EàÃýž¼ü ðæ’2ῇú^ þ[ì<)ï?†íšÓ‹œ™6t 8ò|)•[úv¸òXÛO5À£–ÿ²xòe¥žüpéyÌ·¶·óÀ{DÅËiþ>¼ïQ¿óŒ”_}V!=ß Úz8Lµÿ#à¿yô,³žôü³ÀK½ùzx‚œ·žxp‘ïàôK=}þPRD·–xü£xÅÑEÎdÑ×Nv°µ>88ôŒñœWiÎÓý,Þ|Ùï«€ëWÁ|ð„CŒ¿èÓÀ «‹øü Ëàò¬±¯nÞ÷m㯹˜~?ë° j|Û€Ëö+ùFø—•*Ÿ~±´÷,ðµú}™Æ;»ÈãÏoTÎ÷d0ç¾ ³Kèëä*s>ŸÆw.ðå÷•p¾<•_\_îw¾#¸¸§ú‘Ì_˜~fºôçãUt~Z‡ þ~¶ÊøÛ¨üËÀ×®2üûFàÑóž¿ä&à ëüž~ûà;~qðæ}Ê¿ÀöVUáøž¦ß›-ïÿcU!¿x¸!t²ÿ«¦|¦ëßìßÞ°ÍðËãª>ÅôÜó9¿·ßk€wZôz>ðå?õ;7ÈüöoYt¾§ç¯Z}ó°MÊû+Ÿ0ãKÓooL’úk«=Eø³Àô;;Ú?õ5à¿”õƒýUmôO*ÿaµ±Wi|Óó¿ 8³¤|ðÀ[*˜ð+ÀÏ)vž’ñVSèŸ+¦ßWë<µ¦pþ›ÇàeÀwL p> Õï€>Çòþàƒ}+÷m³ôàú›ΓZ¿N|Å÷ð†Ÿyq Õ/ 8¿Öþy*¿²Ø¹Dèÿ!ài»üγ‚·o\äýJÏ?ScæŸÖû÷Àû¡oh~û§cSý}À;ïò{úÃ?€G·ûì°Z£ŸRý#€;÷{i2ðhOÀySž?xû¦bç‚g7œ`ú%ÜüÒ~¿Ó+ãkÞöƒ W~ á„还Ïà5ÿF’M³ñ‡oøM™s«ðó/ÖÒùeÃß¿<­!èÜ!ï»ø5k~­Uç³´þùpüc²ÐÿKÀõ„¾)ï{£–âÇ~Ï~<mÓK÷‰þ?ø§Ä¹è$áÇ3Œ½Kûa*ð §È¹\Ú;c凛ýV?;ƒÎc;ÛEþ}xßÉç»òüƒ3Ì÷\Ž€ÑúpïËX¤ùý=0ý––^×7|¸ˆãM¬Óï4Î’÷ê||^îÁG/·ã?ÀÍ'œ{äù³é7·´=¸xäý^Á‹€×ÅKs¥ÿ½u…úGxN‡‘¯éºBþùarü[ñ²Ïo¸¥Èi/Qå×_ }EËëÛ€s“Š}Òÿû댿•ÚxÅ?JE¿;Ô÷«:㟡òßï{Üï¼(ýÝ œ1ñÊW¨þ+f¾ì”Ͻ ÁC¿M¦í©£G-ýëDàiù;O›iìjoöL£_±þ|íc~Ž'ó|Î,Ô¿\àÝ}&è}ëŠœËø³À——:»¤«©û=,í}x\¼UÎë¿ÞgçvàÐÏ¡?MPýû1pý†ý’ï~Ç™,üïà=?/q~.ãÛCý-ñäÛKÔ^·‰Ï¼üÚpÀé\ÅÒeçÇRÿàÑÇr~·x·åX¼~“‰Oto†~và>à¼ïVÁéúBÿ÷P}¡=þÙzã ú×ßñP‰çϺ¹žô73ÿÓouêøÛ/ê)Þt‚]_(¯þ üÚ·”~Fí A¹ãœR'pšª?¸¡ÑÐ_h–ñ/²ÿ xŸΕ2?³é7V÷ neô#ÂKgQ~Y‘çK—Ý_êÑçGgöïZà×ê¿ókÀ+¾èw¾)õoeìQ*ÿÎ,³¾„ïž3ÅøW¤þ®õ{òòQà©ÓK<À.à[Ëÿäà=Vüìêÿ›EÎéÿ?gúÃéc^£(rî•òc€Cë‹<ä”ÙÆIøTªÿo‡óµYßZóU¼â·F~uÞjü'ËgêSQz_¹¡çK¯št¾+ãšMùÜ&>pç’ §}b¶á74žÏÌ.\o7Ì p¾Õ¿xö·Ž÷=¼æi¯{j¶úmE-¿ÿ€‹Ý;Nt†QôúgêïF?{x`{Ày¿à7©ÿAçá'GœMùç­Ï/}Îð纳=ÂùÀÎY&_¢x£ÅOâÀ Ðe½.;ÛøÛéùo}2èÜ.åŸ>ÛØï„¿x6ùG'r~ ½ÿÀ»o,åï=Pù÷ C½_ð÷Xüòçä¸zB}_‚žšðh©'Ï^¦ß «ý':ÿ†õ à =ù0ýŽå,ϦòéEž=X <-r{æ`ú]H=ËæúGzçP~ 䫎gG?bäÿjÏŠ÷˜sYÞ=pÙ-AOÿ¸xÁ9Æ>º{ŽúžÁ ¢×ZúÍÏèù AO~x7úÛ&ýqNa|ò/s(¹È9LæëÔŸíê÷F©½Ã!¨é·ò÷ïèò;“d|uÀåW”rþ%á9$ØßRôHí7S˜Ò|G>ÈùêTðØsZÿJÓoFß.óù±s ýçW/ßXÌç—¨þ7€G¯7üåvjÏò‡n¢ò}Æñà9”ïâ÷æÿ1àÍÓƒÎ/DØ \ÿ=¿³AâyžûLËŸ7Õïé›þsÁÿ¾ôü«G¯¸;èÅOžöŒßùà3¯ýŽÑ?ë€éw¦ïñ-.{°Ä¹ApTì1òopÛ·Kœ3¥½KÏ-ä7Ÿ^¿¡Äù²ÐÇõÀÁ+üÎ…2¾›7ýÕØkß^nå£lŽ>Tìl“ö~i{㥮¼¿Ôã‡;ß<Áø/÷'¾t>ªùð®Wמ•ÿrp‘ï¨ó ûêy¤¿zéo=pÑ9?ŒÖ¯84/àüSÚë8â{ç:éïÅÀwXü" \9§˜¿‡Bå—ï„þYªùð‚‡K¼|£¯ŽéÏ=çÑyÞ 7Þ-À;Í|= ¼ßÒg¶ÓóÑúýÁ¾§Ï3ß$ýä%à 7Yby|ìW_1¡òõ® Ÿwbý8zcÀ˧› |Õé~>ÏÃôÕ ¾Ïó²ôZƒ‰gž ¼ü[ç+µo€|Õù4¨ïyÌ.S¸§A}¿BÛ}ôüMAOÞö¥ Ó í_ì«;ÖyäÆÃx¾o ç¯Âþûèàô¢ ³[êÿ x÷A&âׄ»ÔùsÂϯ?K}…ùyCa¼ì%àÊu~/ßçÀ¡@‘ó†ÈëÓ÷MN•rbü»-l)pÂZ¿SH0¬)rÊkÿ#àÅcæ¯-/æïCñü4ÒG XÇK¨|5ð¤ýž~ôñFÊ÷6üæjz~®±/®¾|¤Ô9XæçNà7-ÿ×½&~Dxk#_3þÞmÀô;¦š¿=×hôöo¯ÃïÉÇ×Ûª‚N¿öß@±JÔú=û-ýA‰Çϧ—ý¬ÄÙ!ü¨b®‘wÌï×ø‹¼xwpè_ŽÓ¨ó/æÎW¸Á’WÞ:;à|Dž¿øª§ Èû®£úg9ÿ–ù¿¸ùÖ çÝ<×È3žŸ¹&ÞGÏ? ¼b:ÏÇþQà k>ð"õ÷0C¡öï+ñâÿškö;íï)hhãwUüŽÚ{?ð6ØëÇHýÀ{<û¢Ô×Ö¤¾õS¡Ï%ÀS>]ê¤u>J“‰çr~%=þ}JëOÀk,ÏWš ý§_o2þ0·ïßQâ+ûï{4ð]Æ¿ðx“É`þMíC^%ï{8ô×"gTÓKS¡ýðf“ïKíOlVßgÑúâ)À ¿0úì¹À›ž4þ°ùͤïùså}Ï™æwÚ/.ßZêùÓÍä(õôÝ7S< ଖú×4«ïMiÿùzàÄÖç©ÿཛŒ>}/ðæ9F¿} xÒÎ_? üÒi¦?ÏÓxî/rúEž¾<ú“οàùi6ùˆl¶@¾ï0þÁIÀ+ Ïj{ý8àQè:î4àÝ›üÃ3€'Ü_âåOžCõÁ/6ž×Rhï/Þ´­„óÝ9þ ¼“É/‰¯µô÷|‹ÉW$üIà×øOiþÜÐpfÊøo¤þÿÒ¬çfàÊ3ü}5*xùWKù<áGsûJùSÀÛL>àóˆø#çöößk-êûWš_þ‹úƒñêx|Ñ<è3ûT¼•ýñÀQË; xø¿—Ospèq?ªž´³„ù=?—žÿ¶ßyZøK+ðž¬á¿ΣøžÉ÷½hžñ'ŽSû“ÔùGjÿCóèü°ã MU埢çÁ¯&Jý¯O¶òn½ à¬ümàU炾²ºØù“¦Wà×­øÙ³À»ÏÅ~Ôþšy…üö-བ>tØ|¬çGü/ÞýV‘ó¢ð§£¾Wâù›Ê÷Xùóæ›üAz_ç|’ÆŸt1𕛊½ó©ù&ˆð‡èýçœ_½\Iï¾ÌÙxš¿ë€¯²ò¹¾;ßÄïYÿî<ÊØ»¯]dúd~¼ï`3ß{×l€~ Ï¿Aïû»±Š˜|&Î#Åç £oL!|©Ö‚Âü¹ áóÀ »&:9™ÅÀiè/íÒŸð䫃ί„ÞRÀ+æú¥^·¨ØËï^¿ p=ïÞ™ xã}xA¡½ý =^±ç/ù3ð¾—ŒÿöïÀw*ùÏç)Æ´l+úcù¯N86ÀçwWwþÓè7³©ü€ó°àf`üOï÷…ÔÞŠœ¹Ò¿žVï¢÷_¼Üò¯„[}Þ÷Ái~[Mþ•ßmÑó§s÷–xùx7Wbþ$_ÿàè“?<¼ï«FŸ}øÚ_}÷wä˜yÈïåwþ±ÕäÛ1ý’ã„D?ø|`èû¿;r‚’ÀÖ”:¯‹½},ðKVOÞïgú òêó ÿf}êüÂxÛRà]%&_6 \yL€ÏRù½?XÆþCò/¯n,rnò«ò/žoÎo°þ|íס?ÊzÜCýVä<)å÷‡ÊŠœÓ¤ÿ?žcÅo'ü#cÿ8ý+£¯½ \öo¿3MæçoÀë>ôÖÏÆ}XÇϼÀÈ+λ 0ïdà}Öü ¼üÈbç%yþ\r—ªó¼l^`ìMæOÀåûÞù’‹/ |«Rç5‰G\vAá~þè&›ý ÎïµTßêÏmT¾ÁqV¨ö~pñ“_þð„ï–8ü(pbô]/Fã»&è<#ø7˜üÂ/7T9Kd=Þ¤öþtvH}? ¥´•ïtD›úžà1²¾Ç·ÊÇÓÚ ó›ªGSäå«Í¾ûù2ñÿê»°­PßX|í Aÿ^ ÜPtþ¢ý¥À{¬óׯ͚ü‡ë©þ ŽÑþàÉ·›|·ï°Æóê¯5ß¿o£ïœÈñÎÇl+ÌW} Çó`ÏMQ϶Ðħ8ßgaa<ù(àÞPþrïéÀß^}ïƒõàzè«úüÚà†_=ý®xÍÅæüÆRàË¿SâåF}ƒõYà«¡?ë|®oÞdüaŸž|¯™¿ëè}ƒ&ñfÂoyt?½ÿߎ3]Ê |åyÆ?ùÊ’ÿ‚<úð­àßZ¿x8´$àL×߀×~«Ø9Xç?´ë À“?ðôÅSÚMþ0Íçœvcð|µS~†Y¿Àw[ñ—a*yùøWï³ô¿OïXôÎw­¾tþ.íoj7ùØœ¼úÖ? ÁkÍ×/€§½eân¶âo7üÆÄ»î€=ýâ©"°þ}#||§vÿÅðãj`?Býi^ÑdôŸó;ˆž>%ü+¿³MÊsÀWÏó{þįþ©ý…k¯ü±ß›¯Ïuæ~¥Ãä«Pù×L2ç-¿Ûaò_ÿ”êlâ#Û:L¾µ÷4õ?tnzø£5~â—ÃP[_bâMEÀ±gÉúœ¼ü¾YÆóþÎÂó‡uÀ£XÿIùÜNão ÜNíßVâüJú× Ü|¤9_u)Š_†>)ügU'—SßÃ`þ\ú†ŠÐzÞ ¼Â¢¿û: õÍ_Rù¡íŪþ3ÔßûJ¼øæ‹†2¿ž|S±”ùùðëüÂáX¨+w½õ?xÂ]/þDàÊ+ƒž¿ëLà¨å­½ÎÛyp6ð¨åßn¼ÐÄ3Ø zÎØûà«ýç&é_‚Ú;Öï|LŸç çç˜üèïþªãÜ"òà:*·ìù[o>V}†Ú¿ïBcÿq¾µ?Åè§?'B•ü:*ÿðÚCüý%*ßuaa<âyàk±Ÿ´¾õç åóÁ Ô†9>-ÿº =žÔeÎçP{Çu{‘å_—‘¼_q1¥Æð÷zj¿ËÌïy]ÆÿËú=ðÔf?„õ‰®Bý¥À/âwÞ’þe€7XñžË ¿ûWžÿl—¯ ÿðZà}wÕ‚ïé2ñMj õßòŸm^q’ÑöoÁøKý?_ûÉRg­ôço]Fþ>„]öÓbOÿôw›óáìßé.ä—åÝ…ú{]·É?d} xÍ÷Køü á®nÚoæüÆJà»·ú½üã|·9oHøJà§<ë—º Ï+ÜØm탋|·>}WÎ{ßœ†ý¦ã‡?n³òž¦þEм|£=Tð–±'_¾ ò¬ýhÑ·ºÍyD–‡ ìý–<›ÜcÎ;Pÿ¦_nÉß³7þ)àœ*ãië1ù(„{€'€¿èùïl+vÚ¤yàܳ%^þæZÚX Œæê£Ðû¿ Lß·¯ÕFà+[ý^>Ñ·©}ôOÛÿ?éQßãÖçïwô}ý Àk¾RäüKúÿjñ¯Qù!`LëŸô{ñŸ ðî ¿óÍï€÷ÿ]}žð”Eêûâ—ö¦OxÃï­ÿìE&žBôݲ¨0¿f)ðè_Œ™ßç™|–4—:›øùC|-6ç=¨´1ߴ΋O^lüT=­È‹—Jx½ãéó³ÆïZ€+ÓÆ?z!ðš×M>ÂÒÅæ¼•‡7ì1ó—[\hop±ÉŸ¥ú^ûe¿—öà¥OL{°ÈwðnÐÏd© ð”õ&¿ÿÅæ÷¿&úŠ};€C_-òÎKý×âÂüû?ï ùCE>½ ¼«±Ä‰]¢ð¿›ø1/Ÿò'ÅÎsz> C^ê|Ú—Kœu’?X¼ñ ¿=x Þ_+û¹{‰‰7Sù àæ Æ2ý†ñ_±¤Ð¿ò‰%êûê:¿÷ ÀSŒü¹xóïÎK⟸eIa¼îî%¤”8oIý.1ß üðãï#ü$ß7ë»g‰É"ü×%F~c‰É—¦õ›EjÇœbçq)?øÚcü}2ÖïCw©ß¿ \³Ôă™¿¯yÂø»wÞôâ«aà7-~9<õ¬bÏ¿1¼b)Ÿß#zü )v–~ö奤_OJý›¨ý/ø÷ËøïÞ;½ØY/øAà ÖóÛ¨ÿ‡û½xÛ/—šó‚´^»€ï¾-àå÷ým)}?­Èù/Ñ'‹–Ñù†‰üý*ß±À+²êûðôütà¨5¾ËŒ?ŽÊ»«?à—n0ç'?¼|µ™ïo·âÉŸ[FgzŒý}=ð„‹‹½²¾[–™óÛÌÏ·mó{ñ“Ç7¬,òâI;—™ü5–wÀ»"oþ^#|M±Ó.ã÷_dâ]„¹ÈøCh½Î¼HýÞ‚ö/Ô]då@>7O‚> ýOç_Dß[0ú¤{‘‰Ð|E€¯†<ý¬ÔOR¹•¿±¸úÊŸæˆþDíÿ Èß‹#üuà¥ÖzlÞ´¾Ôù–”oN<è÷Îÿm¾Ãtü ðzËøýE…ç‹_^3þŒ¿Ò|XþÿÃ`Xçn/ñο¼ó!¿÷ý€©À›¬þU‡,ý­ù…úîà-Ï«ï3Ry 8hÑSö zþ…+€·Åü=>Ê÷þäÈôÎó\üÒyAO^ÜBýy ˜ç—ðô|*èù' þXñ†Gé}ç9Y)ÿðK¿úà ϧ¾ ½Òï” ? xªu>6¸Üä¿SùËMþË?à¶Ïû=R^ < ö\‘<¿=ß/rÎ’ú‹–S¾™Ÿ0•yçËâÀû“°Ïdÿ|py¡ècÀ»3ç§>½¼ðüÚç—Ó~7ûó–åô= cÞ ì ~¿e¹Éwd}xÊcFþ<¹ÜÈÖ'–›ïÐûþ°\ýžÅ:Ñ7^Þ²!èTËxÞ¤÷M 8”祃Äõ;ËøJ¶Øù¹Ø3..ŒŸÍ^c}Ïh p™5Qàž÷ý? ¼¢-à}däb_gþu±9?Áûóbo`ýëâÂxõô¼õý ô>ëý÷oµÎ³<üæWü^<≋ ýÇÏ/ýìqá_{€fûîÅ‹M~áƒÈ±3Oï·"_É%æû!T~ð¤˜óp—7áóèù7ÌúλÄ|ó·€ëð÷©|pî6#/½Äœ' œ»Äèo,€·`>&É||âó}*ÿð¦;KøûÆ„ï þ.0ß{ºx·uþäà³ý^¾÷¯.)äç/ÑóÖüÿx©å8œVþ„ðßñ®ù~ µ7Ý5ùl„\Ò¯L>I·k¾çEø*·ìí˜kη^ ¼g ô‰g\<úƒÏpM¾Í÷]n!ÿ|x«eß?æî¯']ó½¦àá£L>Òn×ä£ðþÞ{¶Éoþ—[o8|…ú=*­ ²ò}Ný‡‘gåÀ“§ýkðŽë‚ž}¼€ê^äÜ ¸ƒ•5_‹€Ëךïi] Ücù>µ¢P¹ŽÞg­ï·€76ƽÀÎ0ùß?~%è<,ûýW+ÈTäåûR{W˜ï1p|x;ìA¿à ›ü:¶Âô½IÓ¿Â…çßNÚCgZùä3Ãæ|áFàm·™|ýà)Öø–‡ ý'1à]–~•n¿ß ÷[Ø|oˆð'Ã…úÆÕÔŸ§Ìùß a#oÞ~E©7žÍTúž¶GwP`ýÇ~þ3á_o}Ÿñ§ÿ1l¾OGøàá[ƒ^~Ó›À»-~}Lo¡ÿl ð@Èœÿ®m xþë9½Fþ³¿xß׃žþ¹Øgå{Ä{ ÷ûp¯ù½iÚ_×_ùRç·?¸™ê¿eèûà†Þ€ói¡¯mÀ î.všÅ_óÇ^ã¯áó‘p"áö¦’n6Îä|‘L.›Ë÷õUD|®ÛÔÓÑå¶µv÷¸.PsjYàÎëj\ØâÎm™ßÚηÎoòÊÓ•¾Hj0ˆåbÑŠ*FSn"ÕN¸Ñ\*“uÃùa__&<s£ùÁÁý¶–öfó2 Ô‹4¢×èkÓjÄkïÍæ{³}(ï®æ¿êgÕ£C½©Á^ÜÅ[#¹88OöãN,Ë„s17›Gbn&•Oó휛Œ ¹úp"k݉¬La¢ú|Ñ(Ýv‡GVK )u1½¸ºè’nw0œ‹'Wyµêj0‘ÃE22˜ŽÒ¿ÑÃü`o,czš‰…£^Gó‘*}Q­/jôµI ¥Òú_ª’¥Ã<Ü¡T&š=à†‹  Ómé²'û1;±\Nu#— '³Ôöªp”z»*FÓ`½UjP«2)þ ⚨t?Þ‚zYƒc‰Ø`,Éw¢^W“q¬G"Œö"1ÂQi#›J¬Š¹±Ë²î`*êÆ“9ÕOù½ˆFW%bÉþÜ€ºŽrg¢ÃÒ¹(fšæku,“rs)7•ŒÑÝÂ% ÷Ç#´ áxR—öcÑè: gbÙœÎð¤0ÜáÞª÷VÛT+zÞÖòbgc~I4–È'1 ÇþEÀU5³@º}aš`¡-!WÐ;7…I‹çFÜTÚ£#Z™d„šN³z¸‡qªÞcxãL˜GŽ—†#©Þ¸ÜRD›ŒçÜd*3ˆ]ׇx 2—ÖDË<dz4±tc¼5‹ŽÿþX¦/"ûwFOÿÖªëª*ªi”>D7iùÒjÛ˜!‚˜ÜXd –À–—þJ]TÀ^¤%ïKä³jŠc<Ò¸dG²¹ÕÔgÎtã)w(NƒMöG"Õ´eÒñX/’Ïd°"¨ˆƒ(²ñÕ±±÷cƒæZÎ…ûÇÔ“›c+Æ“}©kò]»j$— û…5õM®È݈'ã9h2 œ¡«h*ÃVö1¿‰‚3¯òI—¹.šàf+jj}}qðC„ŸÇÊ×ÌðEãĘbx(œ WÔÔÙµgÖ®­S»¶Êª];¦íÚvaý˜ÂYVáŒêÂÂ5vaݘ™Va]%ŠEÌc¢zGr±,¯1„‰^äH&<âæsqH€ˆoQ÷ÂÖfu ì=Á-KùܾY•a—¶id Ÿ\)˜ËÇÞЗñdT.cÃ9âíªw’4ÿôÔR’É¥»¼pr‘L<ó¡,6ì†3è’\cóhHÝ’º,Dp!QB< ¢TP?M7E𵦠«¦ˆÀa¦dˆ'_*Ÿ3O) “"õœ ÔëÔUáL<Ü›ˆ©—x(™°±7YÉâ™V#ÙcÑ8M $]ÊMgbLe"»´PTœŒâUŒ'/ËÇ3|•Še2¤Ü e°ôô@ÌMº‰x’Vƒ jPŽ .•ñ­Ä„f+ªë}no [2Ûïs!ôÔÞ .âTqˆ€~¢‘>ïÇ®öeäj†wUïc‰^QU…úÒWk¥1sIê¡"Ç|’x$`, Òdõý1wSYiˆ4þgýÆE6—"æáÒÔ­ÊÅÃêßpÿ&⽋fÎÌæÓT áY$FèK¤†XBî)A4SùÁpv¥/‡ˆ#þR1³žûF îW?Ë—ŽG+fUúrÑx¦bV½ÇöR#˜ÎxŸZ¿p"ÞŸ¬Èª† <؇܀ô{j%‘¿Ì—l?5bYvðöt¤çÝtÝH:—ê‹DI+Ì¥¢m³¼«jïªÊ»ªó®êMi¥¾Œ%¥¸÷LÜkW5ÞU­w5ûª3ÏšGêõ•j»›Û`x”ã §biŪ\:#¿U_W[×5æZ5HD ÈÒ+PmU/1˜—w¨«jïªF_©Šùh|Äu4^ë#'|¼:ÄEX,âv.ãÃöÊa9A‹}‘p2K¸ÑÑViù¤;J­$QBDZxÄÁDaÝI»Lw±pσ3€P’aÿ­¤Ø@,²ÒUª0J–šråU\èËgÁñ n,¨"œ™.u¯òº$0œ>˜OÎIƒ,$UÿÀ!yJã½7—º ÛÚ:šXÚy¯O%¡Åq+æË.ëæ ‚$>è¤àíª@µ»26âcÌ‹ÀûÇš[¹aÏ¥ºÅƒ4Pͤ<Èv­‘~LßÐì7È|’^M‚¯z¼›æžw‡[Ÿâ¡ñn—áv¯¬€\÷æ¡e­V’Ê¥Bt…ðÀm¢Ø3(ŽÉøÕ%0–dt3ù„7icù\LtD¬C,ÑGš¢++aH/…& ­5C˜X•úÒ—JDÝÜjh£}ah ¸$žV©ŒŸ8Q]V)š#é˜\)I`ÄY•»ñè°ºÊúVÃÂ`žõ© º»¹ÕÌIÁ|47 ÞÝ×§®³¹(]c(«R+c$°VºCáL’ç)æ b'3"ŸŠ\šEWEש¢y…(bM'ò¨A±U4cÔaXœÐ‘SëùXÖ²‚ÏE…|LWO€xòiÞûdŽ`Š0ChX®X×ĸA¼vn’„U…jI{8˪G4–Æ‚ôóÔ«÷`}ÃYו>¨$Yù 蘔Af܇0fD•¦Ã°6ª|´•q¬nSCªIVÍAu>!*Ö! ±Â´##<–mÏ‘‘LýU¿ˆPŸ/úS¹®ÒêFZ êðȈâ.ñ‚ˆd™‰Ø0æë„¿S¤}b ›.æfr _aPð`6•9J†W«•¡‘÷Çhù_šý*(<«x_$Âàñ 8ãÊdj(©&9;>ý`=HÒª%{» 09ÑûÖwHiI2Ò˜áÒÔ[é©bbäєҹ¸.WÎb.’¦¾™IFÆÜÒõL{¦6Ÿl~«Œþr5³¦`~In.žzÔ»ƒÙ%âÏÃ0L+ûÏ`O&óé™az‡fÔŽÔ%O¶(÷©Ò¼hˆ•W0}·² JÕxUª ªTW ³¡¿{ÕF ›ÔÅ §¾t*¦Õ‚l!#—æ$›†ÝGºød6Ú"/ŸÉÆ ¢Æ2©Wß ½=:á]J¼½|ƒ¬pr’ù.aÖ¾§K’¥9D :SË‘ÐvÕ%—ª›™˜j6ÎDT+T ¬ÿ¢¨–_ªéóüîFl8‹(w¢¾t“©±v!º½ùÈÊŒQÖ ÝU±L¼oÄçF¤+º©ÞKclY¥ݾ(‰°WU“[ƈQÀ®·‘ŽÏì˜| ü,†‚R“P]±‘MD-¦¬hJ³Kzy4Ö›ïw{¡c+e¹]p?ð·X2¢ºgê{WÔû,äH,ZXúU‹Å­—¬Š¦ÁÅr}¾dŠLÅ¡l[+ÂFv¥O J%§”ÂíT5e^bçÆW…YŸR\ÃÜÈú̵ÇRûc¤-Ä Â”-oW24%q ýß“¡ý LµÀ>uI”Ê[™ZuO=GÆ0äVžÔMy˜Y;0î³9#ÁÌ Ä1˜Î("¢ÍªÄ‚÷^~ܧ6„´.æˆ@¨b"ŽÕf#OÅ“d÷hÑo$Š"c6ûU01ÈÀ,bQúÖŒgY†@fY·§D%AÇøÜìXO#¥MÛå¤^‘õd68GÍ0ÇUMf.On$… OúRt˜|iöc¤¬°'„o³¬`µÆmkr›:ÚÚ{ZÆ+éYÖ9Þý…í-=]ËÆ)j_´°¥«µiœ’žÖ…ã¶ÕÒÝÝ8¿¥{œ¢ÎÆÎ–®ñÞÑ8nKÍÍ]hl¼W·´µt.@§Ç}c÷¢®–…-í=ã”¶6ã~ë¼Ö¦ÆžÖŽö1°×A}<÷t%ËK—l¼FIÙ’È¢[ØÊì{ðeHg%LéqáYD.…wr½ s\ª 0•'aóù.ÍØb­ëNûµÒ¥[YìBU‚ªU ªaTX«`¯À kÕ ™¤möA»Žº«ú„!‰ãŠ£>uš“?‹¸XÖ¼jÀ¾‘Z¥” _o"œ\™e'}L$Ó†È-¤g*ÏÞLhÁñ>¾Œ'éo°ÙTT_áÄP˜t™mQæ¶ì®¦+’C‚<ƒ‚}AÌ_YN°EnÒAu•„d$¶ón¨ vRCÓXŽ'X)Œ¤HW¿ ²[® Ë]èºdã@âá~²7žËò2e؃NB7Ï“2œ$OO.Ÿof–Ǽª ihä¬IC-ËäÛá쀎¡¬ß-¸AÔƒ—ÁP-ù’ ÀlšÅT‹,W j¢³ªÔ§'af[ô™•¤eaHæ§Ð4ýCÚH†è*L±?<«/ÒOI‰°ÇêF&†ì ÿ†ŽÛ_1‹'›˜|ÔeíUñVÓ0Œc±Õƒä¼#4Î cÚ{SŠ6ÞͺÿRl¥l.IøÂ½ÙTT8RŽi=¢cêC¡ Ãbúôå{÷©=Þ³Ìíè„R8¥\š’ËblÆûeÞ]7žM†“襛Vî.OƒÌ§a: ö²¦„¥§Î²æ§å¦Rñ`“óýÖö µvµøš·µ´ÏïYPÍ“‡)F{´Þ¢ê&ÉŸB¾§ð ñÛ‰á ÑX¾×8¼ ÐÕ±ÄmiZÐÒÖÑîÎëèZhézccxT“Þ›ˆfÓ= --mMòËÍkëhìq6.¶óìÇ£‡ô`!%ãÔ}¼KùxHÅÜ!;N“ŸÀm‚yùÝ|®¯Þtž\^ñ”Šâ@C À&FÿÈ…åܸô$èNX ­ÔÿL?Ó‡9"" Çsé8{҄Ĩ·¢’¹bêi#E§pôÐêÁkXìam3jCâýñUÑx W&¯JX›Î>Wyg}ÍMÝ-‹Û|]-ÍoR’Ç£¨Á<¸@8ö!ê=õû–}J.17N ænÒí…ÁBm)žžÜævYüÝ%Ëš.è˜7¯¶™:ÚQw/š;¿«cQ§Û´ ±}~‹ÛÝÒÓÓÚ>_í žmd)7•$.y½s*ö§l”ضÛêÆãÑd2gƒÝALJbâ)íÙÎÆEÝÕn#Æ?Ïs2èyòèÜ&)³sµž.ÖĈ cÒ˜ÌBÌoéii_ ²áY ýgÌvw‰™Qˆý.÷t0‡$EÒÓ5æ¦{öÓÀ™@>z1Ñ ¶4¤K]-wÓs°ÓÆI 1öb`¤LÐ Iy$ †˜˜×¶¨{Ï7«ÒÅæw{ºZºõ.XAsGO¹„{Õ*ÄÈ0¤Y’5%dhšÝx{ÔôBAw°v“!ìe›t4ÿ±M ÄX«Eø´›]O{«Ë½“èm+¬Zž¤¦q.ˆ~ÐÇA:fãó”áh¼?ž»+ŒEÍ)oFêyfư“p6Û3@ÜÂŒg#ÒÙl¾×%Ö:ÉöÂ. GŽËª…,oMµÀ¸¸éuÉ(¤™óÌ@¨!R÷p¥ø¿°&ö”)k¢âÔâcÐûWs*ËAjˆöt•Z½$µÔÑIT âÔƒ£8wlŒDÕx<4’­¶Çœ‹P:ø‰"mªXÃîœHÃlßpÇÅâ^Éê,˜wl8É+Ÿ˜M~"ÑZ»/jéê oK2:ˆ·R4„ë>·©©c!L Í~f\v Ÿ‹²>ér”öæUéú­â;dT|ÃæåJÊõY*‚²+\­`šÉËåuá—Bõ™‚"J …ic.]¼°­Ç¸•ó96œÖ‚lÒØ~ÔÞ·/…O¸˜8ÓÄdÓÖ´¨·‘òÞZ®þœR¯µ:!„J•ãE¥¹b>j<.´ µdJ ƒX–M³rdÙ<(«oÙøâ‰–Œ °§–®y°ý˜ps)ÏCÉ|R bq ±ó§_´{b}ØjDÙ`²³cDª.ä(ÍC¢ÕǬ+ éDö' Y˜çêVòš<›žsZi+jW y[s¨w¶MÇä\f2¦D9=¢ƒŒÏ£kyÝôpñ†t‚Chƒ¼;h‡ÅÉ."118ÌDŒÔ”Ööż=×qF Ô¶`<`G¤Ò  n)e wáE!¢Ìa·Øb¬j Ñ'I7Pr sO®Ãý•žcô>¢Í„2Ý Ã)ÔɨÝTúÀ žQ{gA§‹Ô(Y© ]^…ðT¡XŽu^š¶|’ö´¯‰s·@FÈŠ¹‰~‰a_Þ«¡´3öבZ¦”g·¯Wå¤Ð«I0z½î¬½™¢]«'‚8å¨@#Ðz¬·£<¶GNajƒ’/Â…ôÃÞ#Å%­– Õ$E¬˜âqq’rdž÷b‘»‚Í•X$RXØŠìi›ì“P¢#àaq‰ŽcIëÁnåF»[:» \»K:ºš»]ø,ãŠ_ycã5kAò<Li=6ÑêáX¦·"Še0I¨Ç´9¨Œ$òŒJÖœ±” †¢Ál?9N™Ïù´Ðƒ^œˆG0·ìâ¥C×3îSŽšó´lOáaÏUõIp& ót0<Ö¡+V¢lÄÚš»²DÖ’¿?E1‰ùÑïê𰥎ÛJ8æÈS{ ö—ާsè_sWÇ’ŽÎj£ëâu}‘œ-† 2ŒÃª¼˜ñ, ±)ÁZ7ØRñÈØ2¯Pl’µÖVÈöH*+òù@cD{vh›Beë^ÖÝÓ²Ðõ™¸åÛ›"¾Å]b2…ãfÞ=g1é²*áŠ2ÙS1žÐëGáÀæ5éBH¢x²8oéjir»[/jqY‰Pª½šv3Cœ@‘‰*£¥ð¥zÿ0ãWÞ0͌ˋ-8R‹²):k#•”ô@ìÖ°˜{dHnG±‰‰•ô%=7›ÑVN¥#p~Èx,¹@±BÉrHe{û'#ìíˆÝúš‰æCByy3‘lžy„E3J±¢ÉI%#(ܾÌ`4Ž)IhsNtÔ8ñwÊ‹ðµ·6µ¸m==øoëƒK§Ò^ØÝ%o%I³±C,ØÔ…pôÒéhNÎ\°s֕Γ¨ãÄAïÜöÜŽ…s}FÕÑ›¢ 2°Õ†×j‹f¸"¤9˜M¢âUº[¬šÙÖ•;#U(#¬—òDȵ¡òÑ …µÇ¤|…ÎK‹y¤§x%D¹›Ê @ÉVwÀ^ìrãM$D©nžÓçj|Â…½þ«Yó„ðÖ§ â‚NkÞÆ6ÏĈƒÙÊ™4 ÉÄ%ZÎ(ß®7åýJËX¥}b}uµ4/jRÎu²‰)ç@¿A…4a%-Ž*=A‡be.âY픢c/PÈ̈íÅ’z{§è[+ V?˜VÉ^È\äÆx“&ïn“&•¸/OøÚ»[š,Rëâ˜?±­´õ6atW›ÝÞž³vk|°7Óþ ‘2Xy¨=J]&’ÛRš Ã!"<¿±©cn«–äÆ6Ì£OÙµŸvrQÉp}ge}–¡ž€Z’&3ï]_^M&Kå;ˆVgDmÚVåK`Ÿ;¹ÇòeŒˆva-P<™áã¶Þ¡ûå›×H'ÜP z´½ê]šWŬ‰u„±ùëg*WÙó½0ì“ã®pMõÜXl<¨ëÙ$+ì¬4ex2ZÅyè*’ÔZ„«d’¹o3LFÙ(t)Ì|SãÜîŽy=®ÛØ5Ÿ”‚põJÇGÄhŒ§Œ-`ô íÀ%”™‰v U•ZEw=’|!Š#¹‰qw›Kº2{Ù=IÇò0š“Œc­Œ:cU ñå‹ßÇv (°Ü?¹Õü!kÿˆëœ»¨Eùâ>Í86>Bnè’lwÇø<”ÕMm´Ä}j»_3¬Xƒ²ˆ2âØä×bʲ´1†ú<îÁù›ÌÑ((ÑDä ƒŠ¬ÖqŠöE ÕŸV¼Çt´}~S3ÿìkjonéÑÔªÊxü[tR¨ƒØu>ãÞƒ `]/®•=Í­öéìÞ›c×+—QlۅȈ{>C\cCÄäL!xã³=ƒƒêµaE[Šgªclþ“ìÔ!ÃÖò¸cÍr‰,S$‚1ZëØx¨)t, ¤†`(ïx–¬ímd}D&ÅÞmßñ±:)Ã÷ÂÝ™ØeyN³ ?â‹áÕD 1Ó¢Øë–DÞÞ.Ó:˜„È•KX4!šCOAYܽh.h~+l—ž®ÆÖö¿­ÒÏ"‹‡döLj¯K’¬Š„v¨rÐÁ“. 0ÛÓgåW*—Ô€ìÄ,å µtÍ_fŒEñM‘ÂÁ90nD›V†ÒuÂ-l•þ˜Êë׎à>Edr fû)ô&Še‡ÃEÌųb#¹–SÛ –x2YglÒ$‹ˆe%‘§'«C! H<åC§É°ެ„ èLYÛ'a»¨Öç1ÔqGM¾ h%Ž'íŸÝÜÜð*s®·s>†•¤›»¦\¥Ø 2öŒ7Æ'á…ì˜pᘠ­âÐ÷|üCJ$ëÏ„‰Ù¯¢¡2— “<+Fõ؇D´°Ç"ðák‰nGÀƒúAu+½”A_AhœžYG<{ –¤Z‘Ô’¢û*<>®©§ýE&pé…ådt>“  Ó´³ÐÊ*³ŽZŠ0(̾(èsç`€y&óƒú¸K£;oI»•¼EÜ$oyЉí+ŸäÍDÇÐ&w¦Æ#rL±ò˜rPg¢¬(FZxÂ;~8lŒ Jj÷5·-jnZH©{C^ÒƒQ5”å+‰à`pl¾‘“ÍÇœETY54cˆP¼] ÉbÃFQ©µMÒ…yHÊF±=pÊzÈ$´¤c×!á®7=pæ•âÊ&´’y>vçk:„×Ë&aGb«J²æ3Ð|l™´Qe!0è@q†Î6I‡Æ:žÊj5VZ£àD"=@sâ ¿BŽ­^Wœì˜ÈRj™Î$+Øáqs ceOÇ…6­uaãœrŒLdö«7-èb·ºvy`>€¢l²ÎÈ—:$Ó‘\AšwòãJz±òZp?ûP¢Ïä®xn5v¡&:%TÇú\;´«çÀë3œR¥™ ½Œ'è45q8ú8MHEâÈÝÒk:[Ø×Ç©o鲋0FõÊ*¢Ð¤Æ3“åÀ}*X±‚àŸR5ôŽäÖ0ÌT丹3AÔsc§Û³>^˜#*Š»VãÕøÄŽÏéDTÉ€´³JW/Lã7ú§2‰˜:õÝp0/,¨…|TéšËÇÕ7 ¸£z@ì@PÞ$ŸúŒ u ‘óioéxÄļºJê°i4oLÖ>¬=ÍÛ5Ëklë£ú+qœ‡¦Û§?K¤µþ>“ÇÎ&’çNòEäSê  fŒüi–€‘ë­®¤ ¥èc^éÜÆ¦ ع»Œ¥ÏåXÍna+“F¾7mX ~G¡´?Ÿó‰é4žVÔ ÜþñüuÆk¹Êx–U2x_"ÜŸs¢•¿I-;«b' +•GM¸}û½£YJ©ВȦ—\›o[§– 3†ä3:–˜-ÜÂâ'&þ !¦ô%“s¡|’DtÝ [{¸í] Ûä(–ÉgÅCÅôz9š×lgó‚™hOµÛàüx}ÁóÑ“ÁÀ§ò óCˆ±juDL>_Š~XtQ}þkÈlvï¶ž~}DÒ²y}JŠz>gö¶Ó~™×ÕÒRè>µÓ7ÈéMÚ9ôš­#š'‘óúeW·ï§‚rb@•ljë sEÔ·ã9ý)Îà­²Ž»»–ÓõÀH°wh@<8$ùoÈËþóüéL]üAò/â:Q©–ñ¬ î£ù¹Pt´ŽTð­6½(05ã36yZV6,kW:}HŒ·ÅÍÍ>™¼å˜uÅ`7.y“X^å G"ìîs%ÓS‘ì4ðŒÈ˜¨’ÁOeYæEMïJŸ«Ö3ÉŸy£/zùÌîü¶Ž¹ØPˆ¡Šº=dyÓ©—±ú©ŠM“Ch‘bf}ÂÌÈl2)àÜWúªâñâÄ€x´–¨C¥ªë¼cÎ0áåSª»RýTLÇ{ÑsTÉ:e^æ““FPà™•.*»K²ˆlç;´~Ñ­“u–»ã€ìVe,kÙ«ù!…%ØÎOk[m5‡Û(¸ïr¼Ÿ£*ì’ô2¬Lf;ÇzG”½½Ú”Ò_¨ÐY«°ï¨þX,‹9‹˜±BAÆÝ.ÞvvâÖ&¾+$z=6SpJEÍ…Á8º¨Rv) Œ‘óùšLëFÆ¢ÎNmdØ\““é0´k›:â§4çråôn_:ÿ޶?§ÿÓ¶““R0ð9KÅË¡4мçÀû1yeôQÐŒŠ®Øþn˵h¿•È-—$ufH©ÊcÝÄÔ3E^úƒ^¶£¿êÀ›QÓ„vƒÕ©¿®x`â©—qk‡!1Їí(œ6¾=>qéS Ž©¦ˆ#²#y}·WÊcPáÀ<‰›ÕÊ*«dd Mz±ºx ^JˆW—¢ä‚t>ÂFžÊ Ôꎥ{•A©ô<Â~zÐYÖ˜í0ÙéIÏfЛÜ5Bµå ÂC˜[µ—ô2Ò£>94àx²gÆqav|sÛ¢¹tÏÕ[…ãòD’s›™&K›pDÉÅqØÙPY E‡Û:•Û%~Ž&ZG[á![{þÆÂQ_¥Äµ>°H`²kƒ\…ñ û'ŸÆc]yh %Š…ÏJÇcÂÉÂuµÀ°TÔ.G¸I|ËñÆÂÈ* AmÂj·eŸ+Ë­ñ[X'_åK;ìþ$9fr*òüíÜ•J´pv¶èTî ãÍ÷T°}øï™gÄÉ‹¢>Èe™—ê}Ue•Bi>ÐÃ7öô¡Òùë}^ªMeˆ‹7îi]Ì™DõbgM«—®­÷bR§ƒYá/¯Ì'9Õ‡ÓÔâð)p#Íy²'|&Ç<<ÁI¯é^ýa„ÂãÞé ·OÎcs›ÄÌ"1Ÿd²ˆØTîÇw€QOyÈKÈßõ² ­&` V ”:ÑdŒ&àZ?2áª@㜪èKŽý^[”¾.æõtì÷–¼t›¨|Ë:X§>’$&϶•ÿ÷Ï»þ#¿¥áªÏøT@lÿ÷ÿ©ÄŸºÚJü[Eÿ'\UWYË÷麪ªÚWUY]];£nf-–¯²ª¦®ªÆªü /üɆB¾Kéøá;Ôƒf‘…½÷ÿ·?íá¦ÄìPÈ|Ø6”K…š²M‰JÂÍgbþêê¡“Bœyb/wZÚ`,— ¥úB‘ ¸]8ª M³X™ 'r§ûk+êkCæ¯Ð¬JùÿI!ù±ý" ´ž —÷–GÊ™5•÷Æráòþ0˜Š¿ÕÕa~zÑõƒ!p™õ·‡C•ô??º[Y1Cÿ‡W½‹W‡¦Ñ@O÷WW̪™¿þgûJ’$Ds‚iHÿ$ -C$–H„81 ¶•_ý6 ž© Uá¿“Bœ[™ …“Ñ}gœ®¥);õ'cñþÞTãþ©29Ó»ÓI Ïxë çÐv4‚pñgò}}‰^I4 _C¿„Ðãé&™¾—êÿ›’ÿ÷Ïòg ÿO¤úÿûßñÎü¿ªº¶¶f,ÿŸ9sæÿòÿÿ‰?²þå!1›À)*ËC I« UWVÖø„3ÐûB=¡nص±,³›æT&N†V„½Pš›G †–¥òÉþТdœ›Ëø»ÁLÒW…ªªfWÍœ]Y­Ú ùßè™GͱgûC¡nÃÔg‡H0Í<³f0DPÚ6¿Æ’A••ã]̪¬ <ðµ¿=7§V«©J¸ü€Bz§j¦rÜ+<Ù”çÉ^yr†Wì•¿›œæÑw˜‘ªP绘tÜðÿŸ›‘…"Y¢kÏfÑI]ªò/Ô’q¼âjó4 ÎÙ¡Š:n=dž“È\)'<Ù %`(K²PÔ³ ÷7ñA&ÇZˆ‚¾IVúÍDòC$~aËAþcߘhWª»ïýÁjõàbJËEOÑCÍ¢SµU3ß¶RµTª©¨®A”ñ6ã?°ñêŠZšwÿXµ<6£¾²lâÌw÷Çß­5'ZõNXÆ‘x­©ïâÓŒÈbPö@*Ãï¨Â€ª¬¡[UÕ鞎£%…)ý,DÎ 32PD'’µžíQ<è`–±§Ù”êêB]zÒ–æ_8³Ú´³‰dÏ¡áxûxvhZÕYÕå•ågâŸÓ˧©‹rά*çÿŸŽúœÚ‡ê•¨\yúÛs‚ ¢ºÖ¾¨¯¨©§é8€TUN…yφzÇëõ;ô]¬Bʧáïò*þ÷=wº¶¢ºª¶Ö¾˜QQUW5ãÝwºÑ踳ßirfÖÕ×Ùuuõµïarþ#ú­~ô[YQ?Óû÷½ÐoM]ý;ÓoýŒºé74c„Ì`òÝÒouÁúWêå·éøL Ù„€µåü×;“ƒˆõˆù¥–)Zýþs0Ι3Ô=Z3}¯šïý©{ì舾egY+:¯,§Föž¨ü] ikX3* ÜwIÿµ3ªªgò|ÖWÖUóEÕ¬ª÷Ѓ:šÅ1=¨R÷þ“Qó®wFíŒê‚1³¦þ½ìŒêú™ï´3ª*ª Ü¡™¡ÎH(ôŸíŒ·Ýj³T»=êU¥ú÷ÄâgT̪žYo-ÞŒZLÐŒºWqØÐLyhÄì•òjâõõjÏxÛÚŠßó–ª´7o­ê·ßQï4ª½˜‰ºw·£Æ™ (Æv¦GÕo7UúQ{_¼[)TU[9þ˜Q mK¡™ÄË­}§^ó«u¯+ ½ÓúÕÏœa­ŸªýŸìÜÚÿ)™VùÎ;·fFÍ8;·¦.Ô4©v«þ3™&$z¦¡ÑªqHÔH¸ÿ^K•—z„´úíwç8þ£ YeoȪñ7$nñ~¬yÇý8ž÷n÷£Í;lÁ›ôßû®ódŸw1Š1]¼Û¾ÕÌ|Û6búûß°·füOÙ;ÿǽU[?žT¬!§Dò?Ü[cì[y+éÎ;kŠž<@e|W‹úÎÒoĨ…Þãþò,$›­œ9?9ó½h‘žÌÓwÞígØ[¨zÆC6{Ló—÷n_ÕϘUeÝy·}«³·Ðxû¿Ê–vïU󌦒±ÿ6Äÿ[‘~'ç÷ÿ½?´loïÿ'¿ÿŒ1þZ¦ÿõÿÿOü‘³¢þwåç÷7ǰsî#^Ö90’GTÍFúrI258òö±€òPg&µ*UZ” øcg†ã‰ÙRô¶†Þ‘|E,š÷û{âÙä †(9Kîàl¼7cQ” åÂ+cÉPïˆq†CœL®âxŸ?=ÎÆ¬ÐBE(ÄíâÿáåA'âÙX”éSŸÁW±Mpæ‹/¿_,Jshl(âf³hÌï_lâ%!úÊýø)f"§\¹Uh:œèÇìåCCñÈ€©4¾4•ñÓW ù“ hmÍdE¨+¶ª"47T7£<þ\UU{fÕ™UÕ¡iÕØ$§‡¢1ú-ø^¬ zã7­÷AbKg²Àç‡BÍÞ û¬çgÕTáCÇýü^»QŠûÒ@c(ä1c²¢©Hž–»Â! F §ó»ÕuˆJsé|Ž.)A(Ë5rÖŠ¢!!¹ç’ç(•'¤¿Jgµ•ÑúK‹¹”©¢nUøCÑ<}™™sIõRI}ZìD6¢RhAh-P9u­\†bžèÕÜX"5Tne3„M˜%TÎbBCò¼ŸbâCf€ù¬Z,LÅã‰È²JPú™ Üp;­*ONø{ø—h¨^“êD"ÅçwGfûý ÏT$OÆ#³ÉéYªÚ0FÛ[®Üÿ‘ Û*f 5Ø›¡gÂØj±áp?5ŽÚ±¬_þÖ•Ag,­éñ¤&„ªvºÿÝ Íw)Z±ÏccWœrÔ¢@­LåÁŽdÓ΢ŸÎNQª/zˆÙhOå°a¢˜‘}(! Úöpèý'½ßéU:ËÄü9>.„-åýŠWl6H¼?™ÊÄ¢XØiU§‡rñ¨ÎýjžB×ÿ{O#ÉqUuíÞWß~ÌìíûJ2œíóîÝîÞôçôœãóÝ­í\ÉÞØq"‚‚nfwî<ÉÎîyföÎçðá$ ¢ÄÁQ ‚RAÂq‰HüA ’àHHˆ(üA–¼WU]]ÕÓ=Ó³_÷á~sÛ7ÕõêÕ{¯^½÷ªúcÐÖ–Ö®6„°nƒ³¥:7DöRÙëÍNÃäÐõ ^4/¦a’g¸ÉÆš³ÈÍig&áþ”XV|³Ê,¸$p&«e2"'üÇñ¤¿ i_k,u×€0ûTT&V²—¹¬ S•×fK¬'”‘j«WV¢ë£fñ„ŽbÊKA! þÇ8M&Åñê0çñ|‡ !ŒérãJ»Áüósø$æ|B©PÊZ»Þ„˜Ð¾ÚvgúݯSZ[ZZgã©Æ©Y$àÍ”C,Õê0ä¥F \}ÏeÌiv‘Àà`u¹ ÍÌóp§ÒY‚ R€0¶Ê \KøÆ”n‰½²ÿÚ ÷DìU©&÷² Æ(Ó ^œ½1û4kƹ zB]kC´ƒþÙ8Cz+†Û”2²™r>_š®«=•Ôžfc&{eç6Øè.ÍÏÌJæÄ25$Çx5C¿ V,z&%×Çöz:áÚÔ\hI¸Pló¡3`"ÒmÌ2 ðÇfÍ&ªeóÈ*o ®6ËåÙûA¨ÆŸª”p\Ðå‹hþà™l+3¹2h&Ûi3; 6aÈ6¨f6dtå™ÒãÌš¹›À'O¹_@ƒî(¹PéSø¬ðÜ|UÌ•É\h#ÊïD 6[Á³ã5û3¬—Ä{ÝÄ}îE/‚£MÈ;êð×Õ]¼wºzéAWÝÁ^6™=à\ᣠ¶Àl]oB£:F8wµÝèò Pç^UpËdâŠÚãs UFt]u Ìí„÷#¤µDÅ€ŒøÕÞÍ!S¤1ÑQ2oØ5,²}Ö…5ïá6‘΂²g$ÆZøjqÏa)lÖá»JfÙ ,½0§—Øa.% ã*º_±Ã¦ê#ÜR”tbȘ²h5jHâ–͸eÔJÇ—ø,[hÕ:ã¡ ¾°_¹½•:vI@Lúãäƒk˜æ2ZVúpð̈+ážQ |]_ŠŒSÌ|è^zº1Cep[G…ÃGöçz«tgaq2çΘIùO.b ¸[aFq,–j˜=Må<äcÚ›«Ì$&'jgf¦Îz›F>òŠ•³Ó`5»ÔZÍ…Ñ›ù2¦¡squ¤ÊLŒkÝû)dšÚ³,à ‘—Â{Ñ +Æ_,íD ž ãü o1—QxšG¦f;æ‡0}úØóÂ]‡\Å'_ j…=Þ?›‡Y‘fMœìòrÄ`vbË´Vm¹±²¾zå øtà£{x æ_£}å¿Å-ÔŸ¼ñýùÚÊå¹ëµ¦Ž’BKR4Ëd_Ü.ͬ¡kWRºn&†º§…F1‘2£Õ+Û?Z=H,%gžŸ o 4Õ¤ ‘W]¶¾"F —Ë€úµmèíL‘å$,\"§—¦bTÌó0‚³,8° &J ¡FÖ}¯ËµkkmÌÕKËëL}æÛMX9scr¾QCÏ®¯|P¬“ð- lA³Ì7‘.¯·q©Íö0:Ýæ6'ç·x÷¢gÿBì8a2Ö7€R·.ð7ø0‚8ë]¬v§>CÊ'ÐCóÚÎ/|B#¶%îJ4º¼ïõ côá©.ItaPLñ+óêÇ,î…àWk·g·&ã†E:fHgðNFn,èÕå{r°¼O\ l+.›¢ྭ‹Ã[?Ç©†ÃƲTeàºk&¦ëíFïð=Ïv«Ä³õå‡X¡C,—nцBÇY—¬YÆrðZ6‹ò¬iÕlrÕK±L®-á´[i,_i„—LẸ±Ê^#….[XªÌÊvLê*• W$l½`2› ÷Nñ­Tؾ#·[xú¯[®ÈÅšŸÅïho[_ó€;‡íÁŠ"«!‚‰ îàš~yBŒÃ” _Àúì!gÑÌ›µ«`èxM¦‹©_ã…u&åÓáFêl4ID›ÎºXÁhf´¿ËlÕn(üÃz8QpD}Ÿ‘Kç¹U¦³ÆÞ&f 5ãæjÈTm¥Ñî*ó9T{ofo®°a™`]ãY.±7=pŠ"§Rò,¡olgFk¶Ôˆ$“M¸ÃÈÍQ$Ôò‚ÔÕg’6Âl*ÚTS„Å6ǤÆü]]r-¢U¶×ºb!€)·²69Õ `d©ß€ÉíbXm]­5•yÅgu¸aj[)W€°·å™¾+%ýÆhИQ–c«ñ%Š~÷Ëts¦TÒSª;\Ö ›e_Ç!fIÂÀu±Å»kò¸¸z§Ë‚4¥«HÅC/Î9×b2ë‘FcèúólÏ‚%«D•å±×ŽÞ˵pТ.Ïpdu†s&ƒå0«¼¢Ûɪ%,i”¶ZW!ÑávnÚgÒÊ.ƒÅ4°ùtŸkÖí¢5ËQÏCì¬_m´ÇhÔó¤WMàå"LˆÕ}0–͆Î2šÊQb“f­Þ¸ÑQQänaݪ.×[ÀÂk½Üíè°¤:@ÆÓ\ÕºáÚ}m]\ÒT·HÄjÚÊŽŸd ŸÔTÂ·î•æy¾ýlv?Æ._Öq1Ö‚xi+f-”Ù=‹«<$Å¥.üqC•áNqªïhÛ©!º~ß¡¸’÷-¤±Ûsˆ¿?Yˆ¶Ðjð—îÌåH¸Ò™…iÆ×üü¾ˆ«ê6Wty¢qiFDI¾yO²*ëtvÁh­„q×j¸Ã„9 Û¼û ¨rN¾»Ú¯&t¡œrë_·ÒúLIßz÷B¢V¢%´rˆÓ+ëË žÄ¶›üÆhtï·d 7öñ,Á‹„›ÚÑu°øf~ìVQ–táeáv#Û©ì2fAìv ¼wøÔ@…¿ø–Ó¼ˆ¸áðy]ˆØcEÑú\&èH³ ӽ袻ñN@67ç! ÝÆ>úßÿWö\ßRîÿsðþ?«lå÷ÿíà]Û%ùvp ›ÝÕÝS‡ùQÉ-ɧ°µºÓx7sÉçÏnø~ÙöܲS \שB*ôB» ñ‡ãüɬrÅ*û•À²ßscsK<ë]©8^Ùö«VPõm{”‡?ée{=œ¸XËùtìªR¶m)œ0έã9žç8Õ²WuìŠ+{a0Xœ[0ÖªS­ø¾íy¾ë@2»Ö™¶íyóks~­ªå¸VÅò­Ä÷ ·æªŠÅ9¶\ßuACUäG©À— ¬¨_›ó¤òvZ¶Bl.‰_îÁvu<.Ç‹8@½8\?ˆée¶B.Ù=øŽ(މrÇ0]ñäíTl×ñüªW©ºáxðÇE10¤^Å ¿¶Zˆ2žÅIra‚ (WœÄ©T,|X Û§Bt±]!”]©úNø­V=ψŸÒ‰»\2׫VÊåÌ((W'">§çÒY`vPsu@³n2çÌ\.ªëÂ$óö«AàyA"ïŸËêXN5°<Ë+WAÚJ2÷¬Çŵíjà•]z(»U;‘ŽÏå-W¶“® ³PI6J— ]ÇÔ¬ƒcúìùׂþaÄaärÈ:Ù 8Ç.{eHÏÌ:Ítö kÞ‰{•i‰Äeð¹ßê¡¥PâÏC¦aœbT„öô&æ,Ñ›ðc)´æÐ[VRüX¨|q8×–ç‚¥y`È•ª£aŸÔ°\þ¤M\—‘&+\Û=^yÅgAîž:¤ð‡CzêÐÈ›ß[çcç¨'8L;×bÕ÷@šÀöí ZFé mpæd¨ÓSìEA Vs{°«Õ²XeÈê|_º4Ö…‹XœY/N¤*ˆ„ ¨cU`N8eÏ‹daHa´ÕõªäÕv‰¿å@À!#2“;e!¶L?Àz`è!ƒÑM;sªs±DˆM›€sŒ–в€ý€…U­*¨CàL[s2˜9¾K–ÀF-‡ëÞÓ„è^³¢¨í)­í\¬­°ïjP…øêW çHõ€-“ÖoT¦üñ˲]@„€±˺՚*„X[1ÇmbžaL$¨(¹âˆÀ. p\¸-+™àˆÐlÇ=‰uÚÃZ[Äß…õÑÏ©T¤Iœ¶9 þ¨›ƒI•U†yî,r'àŸv’ðì:`?Ö†ƒ§P…Ú»m È^½Ü¼Úh7×`Ù=_߆7€âöyÿŒ“[ÿ¹þòõßNÀîC„±sIåw;Îÿôk£žGÜ8Ýb:Yx¾ÓpP¶P?ø?MÁ1beFØy ÿï&{ˆIÆáÛ(ÙÅJ{¡¼ŸŒÁ¹ R E2Eî!‡ás>GÉ1ø¼‡¼—¼”Èýäyˆœ&±‰ø¤Bªäarž,‘“gÉsä'ÉÇÉY&käÒ!ëäÓägÉÏ“ÏWÈkäWÉWÉ7È7Éëä[ä ò]òäMòùSògäÏ£Àò3\$÷’CÀÃ1èý8ô|’ÌC¿>9CÎ’ ä ò$yŠ ½ý4©“Ëä“d•´É5òù,ùeò*ù:ôò{äÉŸï‘¿&GÞ&ÿLþ•üù1y‡PÃ4¦Œ#Æqã¤aŒgŒºÑ6ÖOŸ1~Ñø¢ñšñ›Æïooiüñãßÿ6öÓ1:N'è$-Ð)zÞCï¥÷ÑCô0=BÑ÷Ò=N 'è4=Igé<-S›ºÔ§=CßOÏÒsô}Œ>A/Òѧè‡éGèÇèÇé'è%ºD/Ó&]¡-ºJ¯Ò6íÒkôEúýúsôeúYúyúKô ôKôúeú*ý ý*ýý:ýý&ý ú[ôuú-úmú5(G :2:ºk×ÈüÿìØ£Á^ö™û÷OLŠSSV+h܆<–ßFå·cü˜Ø1½ö°^+Îix#²v$~GÙ7øJÆÎI¼Ãʹ ë#éñseC¶5´¶TˆäEò4â[PI`t@[8I㘬`ü±¶ÇÉCòGâúƒbìÜ(6;¢kmDž‹ÆcyVÏ1<$Å*t½1b}°¶š®Re;¢ØAØGŒ^LW‡uRÇ¢qÃèlÁGPŠp$‰vt8b7êWêyT·ˆ#1ÝK¼¨ó郞?f£‘5Eª‹tÅj9)CPæVÇIiºÙÕa]푬ËÈ&bµ~zL/‘ž‡)/ÐQ]Þ=V;‡IýÜ <<”†y8’ŸÀäß$¼˜ã:ùBšžÇ#ò^‘JÄÃtžnzâa:¿u¦ÓÆMÁÓéERtþ’ôǤ,è&5¼þ’l#QŽ ô’æªÔÚ <(ò&èE¡ÇdKš3©úË`Is&‹œ¼„â#xxçj<œÁÃûj+x¨âáá„Ú<<އ$Ô>†‡'ðpqp¿1&û·qk›Ä•- ¸’ŠŸ@ù,ÎááÂà¶ÈÊfç3¶­HT¥"ÖG!µí‚ÔÐãRMȨ瘀ýG0¦çXÛ¤1Ú ¼ý5Ù_Þ(Ydóè˜ÌP¢$0 #2n±ÃQzÊs‡•äNžS¶V+òm&‹Õ5aá)X”x)é‘I S+vŽ“i?úƒ¨í¨¬÷µÐ¹b"ÐH¶¨–{Ç0 Š Q¥vN¥ÖhL9R\§QNÕJ7§fZ†–xá9ÚòÛaé,£Z*ÏQyŽé`Bêå„$zBâ±sy®ÑÓ;8úˆØˆjiÅŽ4tGÎGÚ³#MùQ‰÷¨Ä³å„°åü°%ž-Ûž•çÎêmÙ¹G \ÈŽò]|9'@]Aª¥À.8wáÀ!C.NÙÿ‰0¢€Š¤–Åÿ#‹ìy!,ΩÅEÛRŠ‹-­T×JöéVIž€R])ñË9J)j¸¯ki¥ZIÅÔëJØ¥R²ÂâBoÝ階Y ù´ÕÞm[á J £ 1Ì–ÊK«¥Öµl…íÅzK¥Y¯ëTùk•Z]m·ªµ[ÕhÚuUKg g z¨¢ðK5Qª±Òj Ç0,µ¸z±È1-ÑP`¶¸R•º,±ó¼¶c¥og  / /È™[R`qN-.º§[ZiU-i#æÚŠ¡-ºÚø¹uµ4çÚ-­Ù”B©®ÒÔôéJ ¶Â:KyÔ £Ë§mv8¶:㜖VÒfÇœ£L¤É¦'/ùzjqÑ×ôékô5Íùš&|Ug¾ª‰§ŸY|fáÙÅ‹‹x% ‡w°ëÍþ¤å¶\ûCè{ýÏu<˶c×ÿ`*Ùùõ¿€'ÏPò¦¸ˆb øS¡ßù¤r¿kBýÚ ê?Þ>Ž›ô=‰~Zû~|¥AýAºJã7 ·~øýxã%ÉV¤ß~ºÎ2ÎÃô?È~ûA–v¡?È~²ö97Ëüé×wV™A¿ñߊñVWj]~úõ±ÕºwÙʱÜ?i¿vœÆÃ°þ Ï­¢—ÅÞõ—&ãFy¶»ÏŒü\Rý°sd³2m÷¸l„öNÙÌFû¸Ýìz+hl„Þfõ—D'©œÖçvñ¸Óc»]ý줷r¾îļËÂÃNAZß›ÑÏ Ü¬}Üc´Ó°]2ot܆ñ­›õáY}õ°¾|XÛÞ û¶Ï´ºaùOÛ»iþÝ ž·¢¯,ãÇé7~ÛÍçNÏAõ·jŒ·£ßíœýt¹°ÝºÛ š;5Æõ·w‚ÿÍáö€´ÜŽß}p;÷ílC[¥“ÍÄû[5熕ùnò#[Áë Üaô’F'+ýí‚8ý´>‡•i3¼ï¤ß¦açI©ß,·ûÜË ;í[îd]Ý uL³ø ’‚£â’>õixi~n36Ù¯]¿>†¥Ÿö=îß“Ú ÓÏF|åféeám;a£ñ!Ëù4œ­ÐÛVÌ•4û¶Ÿ¬´¶ ’äÜȘf«¤¹w§Çì6ƒlæv7ÃÀFæG?ß±Õ²ò¿·; ÃÿNØÌ Ø±YÚÃÚF?ýäpë`³ón+Æ1·rȖdzÙlýòä$:ýÊ9ì,lfLãþ÷Vä/9äC9äC9äCw+ ZƒÅñ²¬±³ì º¶±™}ø|m˜C·dÝ;´ß—Å7dÝË¿Ûöü‡½î·¹‡ñÉYpï”k­ÃÂvË}+ô¶•ýÝc~;ðC9ìõí©ßzcê;Sh!Ç@ñÇÉ{ÀRöƒÌ€Mü?{×[ŕ޿y܇_øy1llà0á×À ŽmÀ!$qx$cɲ‰¼„diÖMéU4¥+oŠ*´¥-ŠhK+Ôµ"ѬQ‰ni„¶V‹¶4¥)MÙ•håªüÑsç>fæ¼æœ™¹CÃèÞ™9ß÷ý¾ÇùÎs暥0fÃ<˜ê: P ÐÖÃè€U°–@!Ê£L‡bXuÐhÔüKðÄ¡ª Ê` 4Ã2X m°á[0Z¡žƒíð,‡(< +áqXjy=< OÀnØáhлàEØ[àeØ ð&|†`tÃ~胷 Õ^9TÀLˆÁc(cÁVxåY5¬…çaì€Wa¾Ga¾ ½ð:< oÀ¯Àûð¼›a'¼ ß#ð.„ÃðÊúdK "¯ò‘ÓzŠH=ò¬ ùC~µ#ß;‘½È®>„ÐìDò‡eG‘¶p NÃY8áŒÃU¸7àÜ{pt¥@)Wj•F%®¬W:•ÍÊ6e»Ò¯ (•7”aå=eDù¾rRùrZù‘ò'Ê'ÊçÊÊÏ•¯•ÿVTµH­Vç«ËÕVµK}NÝ­¾®Q?P?TOýXý õ3õºú•:©æk5ÚR­]ÛªíÑÞÖŽkiçµOµkÚ—Ú=-¨Gô&½Sïׇõ“ú9ýsý–”"Ú@4ЈÚÞ@_ ?08 œ ŒÎÎ.ÆWÛÉ@8 FQKé öƒÃÁãÁÑà¹àXðJp"x;8 ‡"¡h(ê õ…Cáã¡ÑйÐXèJh"t;4 ‡#áh8î ÷…ÃÃáãáQÔÊÆÂWÂáÛáÉp8/’Í‹åuæõå æËͲț̋äÇòûò‡óGóÇò'ò'ó#ÓbÓú¦ O66mbÚä´HA¬ ¯`¸`´`¬`¢`² R+,T|´øxñ©â3Åç‹ÇНß.†’HISIgIÉpÉÉ’s¨ÕN öF-46½wúàôc¨=^˜~eúÍé“ÓKJ£¥í¥}¥‡J—ž)+½Vz»Ê"eMeeýeÃe'ËΕ].›(»[.¯-•÷––+-¿P~¥üfùdyIE´¢½¢¯âPÅñŠ3c×*nW@e¤²©²³²¿r¸òdå¹ÊË••w+ÃUµU±ªÞªÁªcU£Uª®Tݬš¬*‰D#푾ȡÈñÈ™ÈXäZä^$2#>£ÆÈŒs3®Î¸;£¼:V½³úXõÙê+ÕwªKf6Ïì›ytæ™™ã3oÏ,¨iªÙV3\sºærÍ­šð¬ÆY½³†fκ4ëæ,}vtvÏìC³OÍ›}c6Ìi˜Ó9çàœ“s.Ι˜sNmmGí`í‰Ú µ×k'kkêÚëöÔ¯;_w­î^]dn|îÁ¹§ç^{ncýÎúõ—êïÔ×4ô4m8ßp£¡`^|ÞÁy§ç]w^ãüóOÌ¿4ÿÎüš= Ž.8¿àÆ‚‚hÙ<Ñ\»rpå…•“+Û?þøµÇ#«úW[uwU,v,v%V³úèê«ãkN¯¹¿fh­oˆwÄ÷ÄGâgããñ[q½¥¡¥£eOËHËÙ–ñ–[-zkGëHëx«ÞÖÑ6Ò6Þ¦·w´´·ëë:Ö¬_§¯ïX?²~|½¾¡cÃȆñ zGGÇH‡þÄÈú“#OêG6ê#úS#Ot]ìºÕUÞÝÑ=Ô}¶ûz·ÞÓܳ§g¼§aÓȦ[›:6ŸÝ¬oÙ³e|KCïHï­ÞާÏ>­oݳu|ë¶gn=3´MöÔ³ Ï]|nèùæ¾{}_ÚÞ¼ãÞŽ‹;‡vzñâK×ûï½<ôÊŽ—÷~±÷ç{¿Þ«T,èØ=pdàÃ>øj ßÒ}[÷½½ï£}Ÿîûr_éàúÁ74øÅ ºùþ#û?ÛŸ`ëÚ EE‡bô¾É#f¹7Ïiª’*SlwÖr{‰B ™³T3ÎÁ¡e´ª¶CK}'ÎkRô8úާìO~44¶©hÌÓ¨ö(¶ë=Y¢*…®2ùñ{Í3Æé{CS8¥ãf½×0͆³è¡Qt ºZcÜ­Mé‹£‘?ɸqŸ˜µ&îÃh6Ç»Çt~’NrÛ³‰žexL¬bÆ\³Iª™|Â<>*šÿXµveâ–άäu⼚’;øÞ:! ­5ñÊñVEËh–B+ÅsÛ_¼\£–›uAfi=“Yù`-×l–ÒZ¶já²—Ûíæá¨ŒrÓ/2?Óm*YžhWìZÉ ²~y\dÏG¿wâ çM;Ó­ºøúØù†ûNïEÄyH{ÌÜããhç9û%£Qõ½4½†ì~ÇžtŽ&ó5,”«4 Îüö6Èö×)†¼;Z¬Èúŵ;啸µü;/Ò^ô²qØmÍ.¯x´~+)‹Ç›6WÒ×Gûh`µÇŒ y¯¥ê\#ôÑgšíNÅî5[9ùIÒÛÑ‘˜•®µÅ/`=š_9÷ˆ8o6ÎGH6ž£xްÆzÝZNö¯¸~6>žˆ´`2ßdu“ùÈŽ›n÷Ó#F£k\º½œÌ•*IÒñ9Žm÷F×tk)Ÿ®¹Òk­a–^ÂK¯_’Êê_H>Õ®yµ÷_tl>ݤÒ|T?Í6›”¶× —$U#xéöãíÌ^¦k 0åÍ2>~(X ›®ú5DìV3‘"Ç3;.®QñM¿5Û]úŠ•ãÖ;c_1Î!ƒBW‰û :·¢csª¶ÛС û¤}›Œ«cÜ\ƒŽžÌÚ‘‰OGÆ·xêHÇ&±wÑbì[°{W¼wP9å¬6ÎêYEKD¸y|tÛÄ˼ȳc#æK^&*Nó§2q^ÜŠt¾ˆó’|äú#].f“Œ<Ë~<È^­œlYŸŒ<¹2Ã÷ŒHyÒtOI^¶ý,ýtyÞS™ú“é¯ð2k„Ș9—Èpk”nœ6¶ý¸rMçáå.‘=¿”ÉŸ¤ÿ­DyâHŒ¹º¥,*3K£m%ŠÉhôdîís4ÜÓdY+¤ë!Mo%æÅ=©û¶Œ¥=bìëeÜ—dß©„>nѹyô^ÑÙKœBf'yǺfKÓ8é’NgÓWÞº‡=>Òö“œ¯ÙûKdüÉ6N»£ øx—ž…ãþ©Ø=9ǦÅÁ*k÷‰\§Y篢öšÆA_ÿ8_Û×£¬k [?Z4 /ùÈý<²<)וñĺ楕Ûù5°ëÇËÓzðLf·0v)›ÆãëÃøt'~^?#"!ÂÏï—œd|„Üy WZ/$æ©h|dj˜ŒºxüYcß"ñø›=‹‡>±ùÅÖq<1~çýj…Ï/²âëb×™è:‡M^+N—°Ÿç±ó–žl~reáÓ>Kpæ§ß‰óÓö³œz?±<õÖnDÛ»}"Æo΋èÙEÚÅk›ôø‹òÓöËã/ÇÏ·GÆ£%Sνº}Þè4‚Y£©R(4I[øüäó:Úüœ‡Ïçg=ï²û¯aô³-’᧸»ßrâçï¡Ø‘TI~ë ÃiŒ$×ü¶nÝïà·_’&ÊO>Æï'Ó^°ëÕúT¯'^[`Õ¦3¿µUðùµ ?ŸŽ„—Z¥iÑÕ,ßdýYå­´t_E_“Z=Âeyü¸,k+‚Oãçá;Ù/˯œý²þšøôgŽö˜X×÷Nüö}{>¨6>œF›?ÐøÌöNÿí—þüšÎOî·X?´çÒ<|‰O{—•´™´ÊÚRqMlI]‰#œúäg¾ý8t¥lH¾ÁÝ•9'ËT[Y—ñ­¦hv‰DYwJS7:Ògœ?YÞEðwgðÌÞÎÔѱ§+…Ý•yçœ×ºÅ)ln9ºW“‡Ï)®ÇNš‡×«‹`°F7öÐ,’ÇQ}Ä!Ÿ|ÉÛ,fŽÌºŒï¹ÜzŠ%2'C‘©/|tµFÐ G~ýëIž‘Z¥ûh—–Ááífɵ œÓ-n9Ú‘ÚÄ(þá8í ±{^'{Üḷ‡&çùtÜí?82öðÖîq¬TÖ›r87}DÀëD¬u±û r—‡‡C÷ÚüˆŽ;NÙ}EüZ¥ÈŠì7âMGÆ7ÙýL–o²ûœ,ßðü i$i*ØqÍu%nÏF+ͺ¿$³Å¢³G ÒíØY o$ÇÁ[˜‰M¡Õ‡8^ì!óÙöo]y5à·8d(ŽÃ‹{<>Îû~bñq‡Ã.ÀÇáÇÇ-ŽÓzGœæŽ&a¹¿çï}'rŽcÏQz¨D hs%•BÅ÷š÷]”œ'}³cZié6!†CF/Y"n]‚iM‡´(=NÐ<&¼RÜ 8Qñ¾Æ ¾¨÷øb²¢~ºõÁ}”Å4xÅwÒà%þ|Ýç¿Þ‹¹‘v–S™HöžÐ­ì¶&FqÒ*‚Iö§ÙÅ—ÑÁó\üÎ|žýlýÁg¿!æ>Ö9›î´Þãkp–ïè¹EŒ=÷Øý“s„œdù0O·_σèt‘çM,›éý®×üäQüÉÞøåŸ÷æ©íËøðÛ¯÷øðñyÏU½ã»¿\

Áßäz¦ìÿ׃õ~éÌË6ã]h³`´e8¿—ÑÐ7{õÃY<1lÙþEœK4çÅõËá‰ñËõo2xνŽÜ!‹'Æ/㿞l¿ï7Ÿ ¿Ìø"Š'^»²ã“§¿Ìø&†ç<‘›aÉâ‰ð‹g¿<žì¸ï7Ÿ ¿ÌüBOœ_n~"Š'Ã/3¿Åsî‡äz*Y.k—û§ãnôùc§ü<ȉ“Œ‚{^òÂ]oçF£¿hW"ò¿ù’‘âÛ"¾q“U¹^#ÎÚÝKðv"åâÆÒ—‹GçAÅáÿûüçQ[x™¸Õ55ýÊÕüùÑZO¹_…¹]ù9—÷oª ÈËúO-ü™{ËìM:é´SE×~d†Êøv£Q„2•×/SWÏT·Oü7»4MßHdGbj[÷èILuû¾‘øFâ‰GW‚þ÷pÈ2뜼Ölšœ¬áëÄùYo÷Ñgúä»Í*‡)ÛLŸê™EQ)W&]K}Óì§ÅÝî[úo)Ùý±îj¶·eÝþÍo—l½³èÞq4_phñäéójŽ“M¼¿9•Î@§™»Ój@fý˦ö9Sd´óñ½îbóûC÷4MšÏ­n·ñ•wÓÿÈÈd;?eå²Ï4 = ÒãMvóSV.Ûù,‡©ÁÃñ/i«‹¡š ž‚ Zžƒ>x ûá¼Oi}Z¿ö.ìÖ>€?Ò>צATB5‡P?€YP à‡°L)…à4| epš•ŸjO*ŸÀ_B—²]¹ _hÊOàgÚ_ÃkÊuø'¸¥PÎ*·ákøSåÇÊ'ÊÀ/á3ågÊ]ø…ö©þKåßõÿÔÿK»¯ý¯R¡þ€^¯4¥N֫ϨJ‘²W}S=¬¾£¾¯þ¦Z¦Ô(¿«þX]¡oí ¼˜«´é£~¸­*Ú\íL` Ô¡¯n 6(‡õ¿ þ0tJÿóÐÌÐÚÐëõ ý[è¡ÉP8<7¼4Ü~?œ¨Ç ŠŽŽ¾ç€qñJ|3ÔäA>ŠHâœø÷ÓR%Ó2e°æÀBX„Î…PŒ"7ª ‚Êj¡æ£F êb =M³J¤Ë¢ˆw¢DSÔD¹É™¼kNé\ 5¨–êï2XŽî–gø’xõÞBJ)oEwI?qNð!Þ2(‡ ƒ®º–´¤UI=sRÚŠÐUáCÔð›®„¦´¿VCðÁG³hâOZ4láOr'1÷Z"7þÞ|-¡ó‘`;âK €W-ºßÎȤ%ü»Œ˜ eb@l±Dl3lAÈÛR1~)eå´Dîp&É:Ú‚w‘yÕà²Ôe¿5¥›ºÛbÃzØð<™‰ù‹ðíLܧ2dWÆ—†f}lA£A²N^%´&%´„¿voûl¾¢‘å5[–°cNÆ;fËÞtÞ¾ÉÚ=©X~ Ë^½Zµ|‡ÛΔ/¸¶„GRõ’ÆÀãDFc‡-ûŒˆÌÄä°‘©×àïÑ(ù¯ðÜßBãêïÃ@b4ý+ø üþþþþ¾ÌPÿ0UzÉÝwà(¼ ïÁwá¼߃øUø~ ~¾¿'̇ðÛp ~çÿØ7ø8ŠëïÝÉ',ˆ$Û„@¸€M±u»Wé¶ä,¶Œ$Û¸`Šé`¦CÁ¦ãÐ{ÿÃ?ZèáJH ¡C6½†È÷ÍîUŒ|ò+gwg~ófæ½™Ù½ãà ~†³ ç8ç:ç9ç;8‹l[;—8—:—ñ<¿Â¹Ò¹Þ¹gúMôà7Îmôâ·ÎÎôåî°7:;O8OÚ^=ëMùó¶Lý¢{›Ú¯|Npÿ:÷9SK½¼”;½RoÏsŽ §ó­¯NtNrNvN¡fÐ×EÎ5%¾¸ÜíÜçÜom£¡ÄBeÍ íÅ6JAÔŠ}*ìãïœ{éÉÒÏõ?µ|f·Ø][-U1R§'ö4N¥£=±ÊHoÄÆŒðç÷Î#vŒÚû¬÷JûWìÏY…ˆ^Æó1çO¶Å ZWÒ‡gðôÎUÎÿ0Ú‰‚zþ5;æ7y üØùÄ©“dUYMVç½n Y[Ê ,ëÊz²© Ê!2O•ŸÊò39RŽ’Ûå·r‡Ü-÷Èïä^y…WÛˆ‰šfbÖ7«É†âÉ”•¹ÓyÛyÇy×ùÔùÌé¶³š‰£KÈ6hçÈ1r¬­aÌ ¦ŸÑzkÊpÉÊX/;Èd™%såNùƒ<*É‹ò7yK>—Z3u¦¯i2kšu̺f¨mí-ç}ç#;.GŒ”­¹ltëËf²­l'¾l/ûËA_1ÎûäÕp¤kÛqýË÷mŸ²Þ}Ó~­UÒ³Ày´0òùrQaÔÅ«Í] #~LžÀæKvÄ:^µÚŒÕ¡fXhõçCçÎŽH¯ÿ@¤Qš¤Ÿô§½5e-lWR’– ­l$Ë&2JZ¥MF[/o)[ÉÙšÖ,;ÊNòÙE&Ñ“v™"Óe7™!3éÓ²§ì%{Ó·Ãäp9Z~.ÇË r¢œ$'Ë)rªüB~)§ÉÙrŽœ+çÉùr\"—Êer¹\!WÊUrµ\#×Êur½Ü 7ÊMr3ŸGnaœwÉò <úðqù£<Éç“?ËbyJž–gå…0êïÈ»òž¼/ȇò‘ü]>–OäSù ßüC¾Àë} sâ‡f³ªYͬn~dÖ(™!¥^îyV5™…:ëUñsTj¥¯Ô[?÷ÎÇãªz¶SºdªL£'³í,Ê{µÔ›§Ë¯ä YPæÕ_óy®ÜsËïåù¿2.Æw‘gðßsò|èÃ×d‰,•×å y;ô[Ñ1×›ÍJ挼ż}Ëy5õwÖÔ—¬©ˆcdeù¡¬bçr~×"ë°®†Ê0»sl&›Ë2QrvuȾ²«L÷]iÁ:ÓU¶PΔ³äV>•þFn ל®·—ÙYþZXs ¦‘u—ßcòkécv•ωI‰v–v•$kkgö•ƒí¾rœ\lWËÌî.¥{RŸ²z#eŒÝ´Þ|j.²ëó~y³°3 ¦ö&f¤g¶6Ívf{³ƒù±™d&›]ÍfC3ÜŒ0-&n\㙄Iš”I›ŒÉšÌÆÔÛÔlf67[P”i5mf´cÆbk¼ÙÒle&`s¬æÌ¶XöCÛ;šŸ˜m ífJE+Ý­Žµ=ÛÎÖÜÉìB½]M‡é4]fª™f¦›ÝÌ 3ÓÌ2³ÍîfŽÙÃìiö2{›¹|ºß×ìgöç3þæ s0Ÿôç™CÍOÍaæpsŸú4G™£ÍÏÍ1f¾9ÖgŽ7'˜ÍIædsŠ9ÕŒ-|¾Ø¾ìóOðö¿ƒ}Ï]öæ_ú ¢Ã¾×þÒÌíöÎ[ú&·ïr¿0Eu`Q[Ê?qÎ5·ËFŸ:ו͒âìh‘æ,³œmæ3+.²óâs©¹’ZWÛÙqMYM}ff´þ馸äú•9ÃèJÏ?ÁÔâ9FŸbçšóÍæYd~mŽ• ÍE&°™¹Ü\QÖʵö)w]ÕÙ´˜o/h-˜Õ ÌB£sôL;Ї¶{°œWhWgí…†o•Œï~¹œÖ¯2oÚUPÚ‡Á¶ßÍ7bâß|Fœ§ŽOðµö[²Z'fÿX®ûò©>ƹŽOUõ|¶Ù:[ ¿!Šð'NÔÖ]‰Z56·Éæëu5U݇ܕ°¸Ôñ· gýÖQ[‹Ùï5û“WÇõúô%æüˆg5ê¬à¬M­Õ)k ¿Ño©V²-ôÁúŠ”Ô¢_™ëzl4ÚòÕ©«ß¢¬Í{µÇß꼿õuÖp¶$wU'î4c³¶õ›­¾ôr5ê®ÁìzÇÁê°ÐWã¹Ð^-±iÅÃxª+Dî2#¶ŽÃj¬Ò_#Ωöîº0ﱚm# #·Fôú©È0óIDëç-ŒjzW´ŽôE®‡Õޝ JfÚó񼯿’H+^_¦Õ¨÷b´<ÚÃäÁ:Õ=ØwIßÒ3ë+ïf®Œ°çFôˆÙ“&±X,Â_̘šž ‘šššHmXZ«Djk#œb.cµö>̬¯­¯Ålq½Þeaq¬¡¾^ ¸­oˆé5§U‚ šÇ!N‡±á“@u©æšBQÄ”%°"…Òj ²4OÔ55þé3Ku‡±î½‰÷Fj¢üTÑ Í×?T[ª5¢5%2ÖÔsMMPÍ^G¢QusQ,•VìåQ»<ŽØ·~Ô|“£á_9VùºG°N{>Ê×+(XEÒí0Uæx¯tÅ5Qv³?­íÞÚ²,õâøŠÅW«ÞârïGo{û^ï5Ë8¢_½Éô± …úÊôl´¸]4,C^¹‡Ùõ±ŠNÃnN*©Q6wu×`±‹ýÇ­ÑÓMÙÞ…AiþÊù¶‚±u$_ÛVJmN~IØ:…jÅS o§ü««ã³`Tøpeo¸ó"{-,u;+ Z¸×牞õ&š¿ˆ„76‰FKË£ùòa(/ä.Ë ¢Åòh±<" Šm‰Þ4446(*ˆæ[Ô~—ŽCûŽC¯óùdE$V\nuü#«0Þ¢¢Ý¶’žò´¥Ê|ÛÎ×È+µQÍ^µ>”ö»§ëeõ!ßN‘÷dB"%';‹òúH±b˜Q°Ì2)±)³-ÕG¤õ¢.¸¨+ókå”û^§©/£‘º’ÆJ*ÇJÏRWe Ïç…çrßGmK…ûü\­˜Çv1K°jœBÑnþîmœ"y‰&R5Nùc`CãÀjçÒ£aРÆjg=b%aˆÞ)j¬2•ûÓÀÆÆA¥úÆEÛvm÷"½‰é×Ùªå}Ý= 2Ïó¹xtŠžó×zeó0Dõv=S}J¾==kÝ6®ÿ¶ŒžwYÿ¿=~yñ}Á÷½)èá%gï>ß×ø¾F!{d¼£¹¹y¤«é¨„M3š¶i<ÕEê¹AÚIšJp=Æ^ÊtšN[ÚaK;ìõ4Jã©àzªÕ¥\±ÒNk'È×ë¸K›m6ÕëNÕÐÖ(ÏöJinuµnk\k²i›§£RAoµÓ­ ›ºj“T{n•£Ú]jÙÞÚþ¤mß<;F7¡}¶öÉ'gt6¥½M«~´µ‰fª-í´¥6í´ù]VätYŽ1žÀ\["ƒåÑñ¬«£³9¶î˜À‚—Á(µ¦Y;A+ýÝl»AOf5«N›N ¬u5N§¬ÇÔòÒÎæ±ätÙÒÝšÇZûcmþÛ«1vDZ:]mNo¶u;mÝk­ËZlvÙü gª­¤Ó´]¶'µjm†íçl›Î ògÚt–ŽW{nû ­tÚü Ý©ÍãlëcmþØÀKçm-õù¤ö:HuŒIb8Ö¦ãlþ˜@©96íj+äwùSÇYÍka«ÀBÁ~0Þé6¦£˜Œb¶MçØtÛú4ÛÏ.[kªM§ÙþOcf6ÛYjÓDîO÷†Sâ¦4MifxK¼9ãj­Mݬ-µi¦EK“®^·fÔN2­×^Ü–Z›ÝL¼h3ÞRr´âÙ4¥éö3lä§Ô~ÊÚlõôÚ³×ÍTM'Z¥k[Ÿoi¶+QkÙf2š¦š&ì5¥ÊÚÒ ÙÊ~&‚ZÉÊQ$•9Ùx1']RoÑ›¬µ°u¢›ýìpצU½Z³±˜)æÄ[40[{=×)?&¤Këfµ®þ·$?ÞRµlÒ6¦¤nEi¼²Î„d7 ½èg6³,LHm}µx<©£ë…²û‘‹‡0Æ}Î%šíZ)ÍÓ{]9~mŽ‘çðVoçˆV.«šˆƒ $ )HC¦`Sg½®ÇÖd0÷[ÓÁzkÍj»-·s¹;­ØiÅN+vZ±Ójíd±Óbûæë¬j‹/—>.ïþµºè\t®§Ï¾B}ìûØ÷±ïcßǾ}?«þÖqÅÁ´^R† dí˜m.x€$¤š“ä'ÉO-'ŸhÜr´—c<9Æ“Óñü›ýÔê¢sѹè\t.:‡ÎCç¡óÐyè1ð‰O |bàŸøÄÀ'>1ð‰O |bàŸøÄÀ'>1ð‰O |bàŸøÄÀ'>1ð‰O |bàŸøÄÀ'¾®QbàŸøÄÀ'>1ð‰ŸJ'k—¶Ðyè{¡Ï^è³úì…~ÚŽ §Ošñ¤i&ÍxÒŒ'Í\òæ“ǘ¼ÌW¿å òšGÙª?MÞö†¹°L6]0¦Á ˜ GÀ•p\ê¦À®ÐÒÖ s`/˜ ûÀ¾!ûÁp`ÈAp0b‚>)úCiý9smÈ  ?Rn‚•a5XÖ„µ Ö†0ÃX'd=ØF@\ð É`3£ý¸ãl[Ã60r°-lún§] ¦À®Ð2fÀ,˜ »Ã°gÈ^¡ÿÕ÷ûÃp ‡À¼CC‡£`>'À‰pœ §À©pÜ÷À½p?<ú‹ö‡àaXÌDx^‚Wa)¼oÁ»ð>|ÂGÌ…é°[Éœ˜Æúp~ü,äh˜'À)p,€…p&œgÃ9p.œ².†KàRü&ýò+Âù§sï:¸n„›àfX ¯Ã!oÂ[0œ 5Z`3 m0ÆÀXè„é0æÀ^°7Ì…}`_Øö‡çáex–›ð¼ ïÀ»ð¼ò!|ŸÃ—áä0PÂA!gÀXr&$XiØ6‹ÿ·@+´ÁhKY$oÀ»ð!|ŸÂçð…. >´ ÇgS m0ÆÁxض‚ýêgÈp0ó`1<OÃ3ð</À‹ðRÈ+ð,¥ð:lÑ—v᥎óWxÞà#ø>ƒÀðå€`^ ‡ÁááÓXßwÁ}ð<Âãð'X OÃ3ð</À‹ð¼ ¯Âk°$œ;:W>„ÏáK0Ä*1XV‚h„&èýa¬²*¬Í0†ÀPXÖ‡ `Ú`Nz„ l›À¦áÕyv( §Àép\—õp=Ü ·ÀmpÜ÷Âð0<€ÇáIø3,†§àiø <ÏÂsáÜndέ ëÂú0\HÂF°9´Áx˜9ðaØv‚a´Ã®ÐÐ2 fÁØæÂ>°/씬‹yp GÃ10Ž 9þÉÞ½X1ýŸÙ­¶÷–EØRY,Bi)$Å" aB±I²!„Â"„°!„Â"„°R É"äBèÿýíÌqÏž™;sïîöøÏÞ>Í{gÎÌœ9¯9ó¸ã\WãZ”â܈›Ü|%yiÄÃxOà)È9/⼊×0 oâ-¼ƒ÷ð>*ðë|‡Ÿñ+þÀ¿h@žlŠÖØ¢: ›"_îôÁÖØ]Ð <ÿ ~À2üŽ?±ÿº£ d¢âtœ‰‹q)Æâ:Ü‚Û1 ÷a ÓxÏb^ÀKxåx¯ã ¼‰ÙxËõ>À<,À'XŒÏQ‰/ñ–4rî`’2ê8Ê ¡8 b,®Â͘„{ñÁ4<x ¯à ¼ƒwQ¹øó±Ÿ`ãsTâ |‰<ʠͰ:£+vÂÎè‰]Qˆ=±ú`ì‹ý°¿ë‚Ã0G£'àd Å)†á8 #p:Îh┯R–ŽÆŒÅ•¸ ×àZ\p#&àfÜ⺷ávט„;]wãLÆýMœûÃt=„©xOâiÌÀóx3ñ"^r•ã5¼·0ï£`.>Ä<·nrþü,m-‘ƒvèˆÍ°:c{tÇ.èBì>è‹}°/öÃþèqŠp°kŽÃ)8gã\\„Ëp®Áµ¸¥¸ ·`"îÀ$܉»p7ö¤žÚ‡` ޯɳq.ÎÇ%¸Wâ*\ëp&àfLÄ현»Q†{p/îÿ°›[V6ÖA[l†­°5¶ÇÎØ {`oôþ8ã†#qáã8—ÜéW‚ó1—ãFÜ{1â<†§ñf¢¯âM¼‹÷Q0óñ>ƧXŒÏQ‰/ð¥ë{ü‰F-Ø^¬‡MÑ ]Ð » }°?Æ@ Ʊ8'ád ÃpœŽ31çâ<\€ q.ƘN»½ãê¶ã¥Í|nÆ­¸wá܇ûñÄ<„‡ñˆë1<§ð4žÁ³˜ázÎmsÏçøË,çîÄ,ä`Cl†.èŽ]±'úáŠÃqã8 ÁI8§âtœ…sq.Æe¸Wâ\›p+îÀݸ÷áLÁÃxÓðžÁs˜‰—ñ ^Ãëx³ñÞÆ;˜ƒwñÞG>À\|ˆy¶süñ»{0š…–ÈÁFh‹M­° :£+¶ÇèŽÑ½° ±öF?ì‡ýÑà@„"×!€ÃqâÈ çØVÚˆ_àK·­(ÇÛ¡«Ûv“ã†}°?ÄÁ8 q$ŽÂÑ„Á8Æ=Î6C4A3´@Kd£U§ý%mú¾ØýqBÆ Ô¥'b(NÁ0œŠá®Ó0ÂmH»? Ͱ:`stBg`tÃŽrŒ€žØ {`/ôE?ìƒp0Åa8Gâh Â`ƒcQœåÔùr\q Á@ Æ18ÇᜄSp*NÃé(ÁrL‚³;eó=¸âa<ŠÇñžÄS˜Ž§›:Ç»£{4sÊõW[“Vñ>ã+ü‚?`¯C» ­±: Ð]Ñ ;¢z¢7öÀÞØà`†#p$ŽÆ1(Æñ8C1 §átœ³p6ÎÅ(œ‡óqFãB\„‹1fç©ñú¤!lˆØ[a[tFWtÃÎØ…Ø }±/öÇ8E8‡c ŽÄQ8ƒ0·´¡.ýxa:fày¼ˆ—ñ ^Ãx ïà]¼¹˜Xˆñ >Å"ì±!눾è‡}±öwõÇ8¡ãŠºùçáB\ŒKp)®Áu¸ ·áN܇ð¦a:žÇËx³ðÞÄ[xsð.ÞGæb>âc|‚O:wõWâ |‰¯°_»í|i»g¡)š#­Ðë¸6À&ØÛ`{ì„]± ±'öF?ìpÆ¡8Gàh Æ18ÅÒ6Çñœ²EÚË_ã',Ç_øȃ­°ÖÅúÈÅÆØùØ Û`[tAW`{tÃŽØ ;7vú#$__‰»pÄ#xcžÄS˜‰—ñ:ÞÁû˜‹O°_ák|‡_ð+~Çøá¬„M5 ÐHÚ«h‚¦hŽÈÆ:Xë£ 6@.Úac´GtÄ&MœãŒ·({æ`a ~ÄÏX†ß°c%lÊ¥,4AS4GK´Â:Xëa}´qµÃ&ÈÇVØ]ÐÛ£;vB삞ؽš9}1Òö|àiÌÀËx ˜‹°Ÿb1*!O“ø?ãü†ß±bþÆ?nÛVÚ]Wâ&LÁ+hÐ’mDgì}q` .ÁM¸ “p7îÃxâi<‡7°Ÿâ[üŒ¿Ñ ›:íÐ ;¡{ao€ÃpŽÅ)(Á•¸â)¼ˆ71Ÿâ+ü€eøá¬„ÝŠæ   šc¬ Ñí± :¡+ºagôD/ôA‚#p ŽÇ‰ŠS1%8#qFá|ŒÆE¸×âFÜ‚‰¸ wàN”á^܇)xã)<‹ð^Á,¼‰·ðæàÌÃ|ŒEø_b ¾Åwø?áüŠßð;þÄßø+aSÿf  ÑYhŒ&hŠfhŽ–ÈF+´níÔ…—áZLÀ­¸ãQ<Ž'ð,fâeÌÂl¼ƒ9x`.æc>Æ'X„ϰØõ ~GfùÇàd\‰ëq3&â<€™˜9¨À‡øŸâ+,ÅÏXÑz]Ò ¶C!Âq8c<®Ç­(Ãc˜r¼Ž·1Ÿb1–à[|Ÿð ~Åïø™´#š 56@[tÀ–Ø;bWôÁ8‡á(ãDœŒS1gà,œƒsqFã"\б‡kpJq3&âvLÂݸ÷á<„©x Óð$¦ãyÌÄ‹x ¯bÞÀ›x ocÞÅûøsñ!æa>`!>Á"|†Åë9ýÕÒp=&`Êp/&ãa<Ž'ð4žÅ ¼€Y˜wñbã+|‹± â_9ÉE;¨!²Ð -VXë£ 6D[lŒØ›b3äcKl…­±-º +¶G7ìˆÑ½±›´¿°'ú /öA?ì‹ý°?ú㈃P„k6 ¼Á$Ü‹0c:žÆsx/ἆ7ðÞÁ{¨À\ÌÃGøŸb>Ãb|ŽJ|/ñ•ë{,Ç?°i6F6r°>6@.6Fl†Í±¶Æ¶ØØ;b'쌞è…ÞØ »£pC§½*ÇÏ⼈—ñ ^ÃëxobvS§} åÖØÛ +vÅ臃p8ã Åpœ‘8£0á\†+q ®ÇM¸wàNÜ{1à!<‚Gñ8žÀSxÏâ9<0/â%¼Œr¼ÒÚ9ž’}8á Åœ…s0 çãB\ŒK0Wâ*I7¸×ã܈›07·qŽ9丠¿ã_ÉìßÖhƒÐ£ò.Ø=Ð…ØûbŒ#pŽÁ ‚“0Ã0#p:Jp&FâŒÂh\„Kp.Ǹãp®ÞÀÉò×Ðís—c‰¿p—ûÜ®ÜgQ]á>zd߆N߃þ×»3üHÎù¹Ç3ò÷õÖvïl9Ï|…ÝÛòøëÝÏ·ôúŠ„a÷–s×¾ræa8ƒqNÄ•+gÊbÏéHy|QâI[ͤóŒz{[é3»o“e;2Rµ™§¶´.nmõnûëÊ™'œcõ>µµCÖóÚ†VïËw²{_N¸_þûc4n˜™XVëXUÛpŸM4£j>ï@Xƒ™WÎÕK­2¬Þwv±{ˬ÷ïh÷–¨ú`™3Í);ؽóÞìQæ!_õ–ÏdZ5Z–šW†0íO™VïÓ˜w§?Ø2ï.Íu¾|3Ïg|öÇÕVï_/lÐX¶!Ë{ùN–)Ëù¬ÔêµCb{žšÑ[âdÝõ¬ªå<´­]µ¯Ö+x2þ¯m÷þ¡ÔY×}·±{KüÉúviƒÆB–-Û¸÷ŽUó7œê¬›LÿÓ®VoÙ3æÄß‹nº‘ùdh»qö5ß÷F|ö¶{Ëþ“ù·ÿ}åÌ~;8aõnoõú×Ê™Þ …¿½Ó—ü5òû"É_Íg·5Jò}²ùëçoâwVo!ñv6qØüy«÷ö¤ Yû3—ϯúcåÌÞ]íÞ?¯°­­ÿ\9óW÷š E¦•y.Û ñº|ÿÆVï e?èË’ï%­IÚRiÉýª÷Ç,k>>€¤ùP]7³ƒF¿NF˵1ùî¸|·¶tÇe:¹n¦“;¾¹ûýVîx¾6m~ËWËÞAû.hÞcþ«úúXÕ×ßkÝ Œ¡—ï<èëbnƒ×úêÓ¨k:Ónï1¿Ú²ÎÝÏ:{Lç·¼<#nõýªâ"h_½ƒ9î6ËûX¨ç~¿Ÿ»ã ÜñïÜiõÏ¿Óæ÷ãµLsy^ó%Ûö,ï}$ä¼Ïõ(µœó?7â&m]ÞÅû¨p—%ÓO°œóDjš¹îwÎm¸ÝrÎM–sé-,—ŸXι ïÜåß2wZµ¾:Ïõœ»œî´‹ÝõùÎ Y÷çñ‚å\›ö®»œOÝuWë-qö"^ÒâK-Wâòe˹®í}-¿s·çYw^µ*=Ns—ý²U=m>á®ûm]Ÿt×q®;­Z/3}ªý©ÆÕ>Ó÷‹WÓ½«M?תž¾½ò™çzܪñ…Ú÷f\™ñóŽ14óï«zúyר‡ïûI¥;}üscz}¨ö‰^,оÓ?[¬½Wá}by—/ú>úÔªYî˜ËLV%£Ê½ReŽ~M©L£×GªÜUß›u>¯W¬¬zÏò/£æ[5˨wÜyTü˜eYþ¨e¨}p“U³LÑËm½ìPË7óÐ{Úûï¬êÛ¡—÷zÚÕÃ2ë¿4®‡g¦¯ }=Ïgh’ë“›{ðj‡éãj>6sß7óÇë3!×mŸ« ¯6Á&–w{@ÆåÚèmÝñMÜï·ÑÆ·Ô¾ÓÆóZŽG2¯Þ64§ëƒ½-çºìcP¬m·|wš6.Ó¨k;Ôgû¸Ÿ©ñ£ÜpÔûÓŒ¸4—‘lèEO#^û(Êö©ë·YÎ5ä~Û1,äv˜ám‡Z¿ø–åž—'‡XŽW»[Ÿg¤1ÿHc~¿ô®Óëe³>•Ïiß-qßàN·HWß1Ÿd|kËûxdsí;?QÓ‡¾d>¹‡Aî_P×>©0Ô¾Qñé•wö·éìdmÚÝðdz¹âH«zºRÓä.SO­Dz=Ícÿú¥[sе÷~iZ_¯´¨ç 5Ý©Ú{3­ùñ:Æõ+wU9›¬<Õ!Õ±ºº·E½Ï÷™ß¯m™ì˜L¥5ý~‰£+‘ÞÔ½1jÓÉý.ÇûAæ9ê^V•hãÇjï‡iÓžª½Wáëë0Èc½¹ë 6Ø]'}=Ž3ÖQ}~®1¯9ÔÓÊ>C³ÌTC•7õ¸ðÛv“þ¹* ô¼/ûb_Ë?]û•¹úú ñX/¿2Z/ޱ¼Ë!¯´ Ûq¦¶œc<–iÆ…žïÕ{¯ýw¦öÝéÚ¸NÿÜkÿyÍ”Î6ö_~⮯žÔ¼zžÐ?ó‹3/œ­}îµnfžPŸÖÖÍ\§ãŒuÖ¿;×#,¿÷jZ5®ÇµùÙÙÆP/Sýúü63Þ«2Ñ«_OÊÀ¥VõòP«òð;í3E®Ë•s3¹h‹v…óð<^Ю‹-w¯}Õv~o¤!6ƒüÞ„Ó› ›"[á|Û¹^WN¯È5»cp‰¾_¸£Ükh¸ã²^U¿/䎋0áÈ4ú{µ=úrÎsÃi Í'aêá˜Ûfz}}ä³WÜm0çUñb†ñ…í\/œ§}f¹×wr?ï¤ÅQÐû†ÚûÍ´ï7Ó¾ßL›FCÍ»‰Ç÷:¿²³Ÿ›'ýÚöªLð*ƒÚïÏÛ‰ýº¾¶e¸RûL§§{™6Cû|klƒ±¸Bû^®ßVaɼr-ûvî÷MÝÏ%¼lo'ÖakwÚmÚwúm´0TØûó~˜»ì m{2ŒmÓ‡9ÞqÐ4`ª0Íx2·7#Ã{_+_ºå‰G|k%?~0ëxU¯YÁuëYZzÑÉεíðÃÝ0Ô}ɧóÊ2Žp—qªOØ^utØzY…ã¾¾^j\}§×Ñf}~–U=Ý'«Û½ÚhEVÍvšŠÇƒ´÷EÆ4^í· q¯¶½ê÷Su™>®¯÷zõš}€ª¯Y>Ÿj%Ž ¢œøÌç67Œ×,ç¾róØÂ«þ;«füwît¯iÓ<¾WË4ûöÂôfLã×ÿü™ö½¾^ÓåcÕ~ô;ŽRmF3ÿèÇ,êþ`-¬´éÔ1ª~¬~‚ñ]+Q˜Çðêø]Öá«f>VÓ«ãv5þÝ‘Vâú烌í{ìæµ úºûÇéÇû^ë鵎zÿCÐqŸšî ã½W~W^¤îØÜ­佺?ªãëd8ßåkß/FcÞoì~·…ûÝß|ÞÄ}ßÌJXrŸÕ7¼&îwf¸ï¹áþà†­¦óZ†>Tëíµ®´ïUxjÜký›hó6Ñ>×—³yFõzSM¿EFÍ:U/Cõó¾ò~3«æq×9½œTç‚ÊIý¼ÃmÚtú1„ß9‰0ç.Ìp‚ŽC:„<y-âñH';½c’vmôÚ:·èmëÚ:†yÍŽ~£¯ëª8¦yň¯ìêi_Æ;ñ¤Æëë8Çë{ó8Go[ém$¯ºH¦j%¯gÌzÀ¯œ7ûm½Êl¿v ¾®R?êmiýý±Ú4GódLë×Ç—ì3U^éåšÞ§'ŒÐÆ¥mq´6®÷Ž0†A}†^Ç–~}â}Œ¡_~Ó©¾G¯4aîë!û7(ì°ûpˆO˜æ¾èb ƒúîe¿mê1M*mðíByîÔIF˜fÛðDí;=îO²ª· ³ϲ:ɪÞ/è•¶Ómïé륯ÏqËÖ·S'ëÏ÷KÓ~}øé‡›Çܫ۱¶ /Êñu˜ãê c3~d%Ú:Yá«Ípž9'Cu¯¾ì~6XûÜ7¥Ó6oŸQ½}k¶ÅýÚà~ó›mï¨mp³ím†¯æñjo›íl¯övPŸàåÆgªÿÏìûSýjûÛáûîÔüÆÐ‹y ~ ®Ê 3/ëyi¸G~’yõóæ^ý³a£U˜~å¹VͶÏpü¯¯G”óa^õ»ÞvRã§ZÞù;•shÂ+Ÿ©´¬ç­ÏµüÑAK¿[jyD«üVá~¦‡çu¼»±GxÚ2Õòôe©aísµ }yMò¡¹L¯eyo™Q=m«ïÍÏU[;ÕzJ=sÒìë4ûŠO÷˜'¨þÒÃUéK}–,ížcÕL¿z˜AËÓ¯ñ8ÙøN[OÏê³3ŒéÕgú÷fçø Õ¾[öx•;ªm§Ê½oÜ«ÏO¿6&þ¾3­êÇeAç ¼Ê,ýXË«Ì2×U_Ǩå™~myÞÀ,ß¼úõm5)¼®%ðëû :ÇàÕÎ7¯ÐÛúA× „móÔæñkûëÓ˜ÇfšQϺUë§–§âWï+Va¥ ý8!Õë‚¶ÇÜŽ ëô¸ÓÃPÛyŠÇ¶õ9]#¡¾?Û˜ç ã3¯ïÍtçwÝ„vÙÆho;õëKZ,ßm‹Îvõvï Ÿ¶«„ÓÍvžM6׺óÉ3À¼žíõ‘í<×kà ç™^¹Îs½Úiõ£¬×ŽØ ;£vÁh\ˆëlçye¥¸AÛ†7lç¹c ð >³ýûÌ·u×[–³; ±‡í<[m³çª]j;ÏJSÛf.û6Ün;ÏL›dËm³–u—í<#í ¶ó¬¹#mçsG»ûa®ÂÕ¶óü8‰yFÜC¶óœ¸G´}¢ž÷¶ÀN´½þÁ¿võsm°Ç¾’uÙûaDz§ÚÎséÃãîrÕ2ͰÕöõ±gã Çd;Ñ~ÜÐýþ4ÆGà~÷óÜÏûÚÎóðšiÓ>莫iqÓÐ@7ÞN°gò©´2Ù WÂyÐ#ÞTÚQíX•F$þ–éÁÜÿúy3 èûÿ7.O´gšqöüÑ“ZZ\Gû\?ÜN´™G¸in…hßëm}ýýKvÍcƒ cp=ýši$Lš¨­òK߯²Ê«œ2w¼Ê,Éw×iùjA’i¯×¦ýÄN-çBwÞt—¿±6¯”yãÝeÝn'Ê­wøX`W/wôt¦Â¹Ö];´pT<~¢Í«ÇßeîºÝé®ß‡îôŸ¹éþ7;±¼vZ¸Ìã»Üùæ¹i3Ë]/5×ùRI/’UÙÔÄM*N$-=ä~ÿ¯ûýÚ÷ãÜ<¤æSó<ªMëÕä—¯$þäNc¦SUŽèå„^F•ÉÊÙOªÎšãî+ÙOf½£Â2ëUN³«×]jþ?ÜuQëaîC³lT埊'µî*.̲ó=7ÌóÎaÏs¿ïN§×O~õ’Yf¾ç±ÜÉnºR嶪cÔöÞï®ÿw©º&_[Æ»ú9òG=>Óû$64>Sõ’þ™*ô2AòŒÚ6•WUþÔ§Éʨ~¾¾ö^¥ófÆû6Z¸zâUn¼nW/kõ²A•{úø'võõûÌN¼—áZ>h䑆T¾QyÄ\•ëò³›®õý©—QfÚ–¼£—Cz{Cocèm ½]ÑÄ63†É¾WyÑ+ªuZæ~®ž·«¯»YÇÿê–j\Õ骟Jfy|&¢^?b–…æ¾4÷J_ê}[÷};cšv>ë-¢\³¢Ò¹ž&ôøÕó¶¶óø,_ GÏÃj[:iËSËÖë#}ýý® âÕÏ¿K†ó\å]3œó*êɃÝïäy˽ÝïŽp?—éåÌ»g8ÏaÞ{f8ÏcÖÃPçlŽÎHü~,§O†óÜfuG=ÓY>ï‹}2œg:ï«-W?ÿÓÛ]ö¡Fز.ê9ÐÜyŽv¿“uTφQý7dÝÕó¢Õz«ïd›äùѻߥ…Ù×]ÞÚ:v׿¿;ŸZç~îz©iöu×åmõŒêÁZ\ëçÀô}£î5­y¾L'3nÌø0ãÀÜîC¡¾í湸#<>3§ û}ú½óæ³ü®••ékëyQ¯µýÎòöÆ­îúGC-×ïúbýÚbó¼÷í3óùæ4©<¿"Ù¹íõ2õñVÚta®?õ:¾YÇ#¼dçáT¸[iïõºÌl7l¥}®Ö_}¦Ÿƒ ªËõéÍsn[eÔ¬KõyÔPŸo«Œêõ§W¿k¦f˜¾×u3ª·•Âô¿Jûµ¹¶œ¨ý«7ÚÎoCLÀÍvÍþVów¤-½Ðv~GNÚÍŸb‘èÍt÷C‹ ç÷²3¼¯K¨ë>Úd}²ó“l‹ü6ÞR|çîŸæÆ6™íZ¿>×uµ}£ú]ÍþÖë´ý âÞŒw½ŸU­³:– ç²üAvõþ2=žÌøP|m;yr]÷sù­olçýÞ OwÓËÛn|ý톓‘˜¦Dû\>3ûME±¶ÿüúC¿5âߌwÕ×)¿r¼üzœ¡ÚºÉ¸ê¯TÛš¬ÏR¯°ý–zð‹û°ù;Jÿ£_ÚÖÓ‰_ߤ™v¦S3}†M›ªOS•C*|=l};T¸æv¨¾Ïíêå×BwÞÏÜyÕúDéÕ·M• ^qÔ7ªoƒ Üßì#Õ×]•Kzyä×Gú±»sžìŒê}K*&Ë;e¶SHÚ•2BÊ„íêÇôz~Öór²||‡]½Or©Ï:¨2þ37þZfTï·PeˆžgT¿a ã³ ô®÷úMóž–UY¥¶/_û<Ù{¿kÍþ<=/ø¥•æU7ûüüÒÜ›é$_›w®¶­ªÏì·SyÃ+O¨¾<•ö½–¯§s†úN¥e•~ås=oûåéÙnœ}¬M“íîK5ªÇô:LâX½ÿ@K»f¿¢*¼úÕgzÿ¡ž_õ|øµ›—佪kõzIoŸêõ†šñÙB›VO™Z¼êÛ«†ÉúìÌaó€ïZï[jï³3j®¿¾j<Ìu­j=ô4›o„#ô¸ sZ'e]+k>·Âëê~ý3óÞß çê÷üš÷³½¥+Ë}gê¹ú½mê3³oBŽÓß¶ª÷K|¦M¯ßl>KÃïþßg­ê÷ú¾m„©Ž©õgtÌ5Æç[þÏðPëû™1z¯¯‹Ú¯ãl5Tó¨{öôpÍg„xݧ§?+ÄëÞµJ;øž¼Ímç~¼-°¥íÜ—× ò oý~4uÿØ-¶ó›~}–§–Õ ­µe¶u×Ѽ/Íë>ù}ž¶óÛ„^ÏÜ0ïéÛÌöô™ï 7>,wýä³3íÄwòûƒæçb†öyØûe9úúFyžI²iõå˜ñlÎ{¾»¿hÛ|»ÿZ»ãQžw¢ßO8Ñ^…s‰g’F¾Ôâ¬Òý\¿·ðc5–64Ÿ­bÞ{èuß¡~Ï¡~ëãaîUl`,k“ŒšÛ†yä° ïs 3jžQÓ«~ëdç8Õ¦ÕÏe¨°Ñ–¯>ÓûÜóøl°†¾ ¯é¼úÛÃô§û={öC«f_z˜çΆy¦¬Ùk>KÖÊ÷fqÐôjÓ{õÙzJÜŒÁµGÎø0œŠá8 #p^†ó»öd8¿m/ó\‚KqÆâ*\m„U‚3p!.2–%Ë8gá_ì†y…G˜#q¶»¼+µÏK´e\¡}®O3Îg¨¯“¼¿ÆO¶úº_æñýXí½Žö™V–w9ÆkŸ©í2Ãð‹£‹}Âk¼×ãær7,}¹z]å¯ö^gLw­Ï|æ:©áxÏ®5Â6é÷vk{?óI>WÏ|ºR›F=[IÝó¥æ7Ÿù¤?sJ†AÏ}ÚÁ]ŽQý~¯ýíêÏ}æúžk{ßG¦?Ê|5´3ª¯¯þL¨cÚd¢ÄïåvÍçjE‰ß xÝÍNÄá,7üMk1½ÂægaâTö––úN}f~§ÓŸCÿ±ö>ì94]müÙVõ߬1ÇÍÏü¦Íð˜Nÿ.Ógš y¼–¡>kà!ӘΥMŸa¬>MC#ìÓ›ñ’é±>–ŽúÜkÛÕ´~ëf†—lûÍeû…+ß7ÒÂTÓz­‹0niãz|˜û,Ù~Êô™.L\™ÓÍ뵯ôýž,n£L›¡Mç5­o^ë­Ç‹ ÃkÛå3= «´¦ïÿ¨ëcÓèë”®Ô2‚Òq#m}õ4g–^Ÿe¹ó©ùõxÑÓq²üën–Oxf>J¿úüAù:h»e=ä‡Óš¹Û)ñÕT{o®›žß3pýÒßvÈr[Z5ÓyCC#+‘FômŠµÝ µ°ÍuÐÓ«Z®Wx–O|ú¥ë†n|ê哚G¥)}3Íðš ÛØ–F•žl«fž3Ӈ׶5ÔÂN–žôøj¡M'i¦±¶­YVbß50Â3ãÎk»õ¸n¤ÍcîK¿:/ËÝMµuiî¾W뤧±Lm9ê33Ìz+(¿éáª}£¶±¡1¯WûEO»Š_Z6×ÃL×z]næ™ 0,p¼¶Ñ/½ªÏjÛ¦|2•§ê·dÔþmªm«¹oõ2ÜŒs¿øóJï-ÿtnÆ©™Ÿ‚Ê •öTÍÒæË²ª×7*Ÿ7Ô *Cômhé%®šX‰´ØØJ”%f›C¯ëõôçUï«ýÐÔJÔ½-ÜeéÛ¤ÂϲjÖ+z|êÛgn«ßv6vãQ-WÂÊ6ö•ÚÖV¢LPßëu¹¼då©W~1÷YŸ•'æ¼~ÓZÚP¥¡lmÛUù×ÈJüÎR–Fí+•Í:Yßf¯ã$=}&ûÞ«Íà%Lû* ùSõ€ÚÇ*-ªíö«û¼Ú9>Óú-;h¬ãf{/Ìq©Zn²c3==zÕAùÌWõª*'õ¶·¹ =-™q©¯“_}å·ÍjÔ²õ2Ýo_&‹»dyÔŒ ½ŽòÊM¬Dy¨Úßú±†¹l=N‚ò•_Þò*¯¢ä)ËJÔfʬôú×//›ucоÔËeµL¯íñˣɖᗇ­q³Ö·jæµ&V¢í¡Ö]µôý¬—A^m2¯¡W)lYäWª8×ën÷æú•Óz»!L¦Ò¿~,ÑÔSoûêiKÏÛf^7—µ.ÚX5Ë$3~Õ~SéO•Q~ûÎ+?y¥ùºØŸj½tæþÐ÷Þ®JVXV"øåçdmµŽª]¨Ú|ª>ö+gõ–åHÔÜ#^Z‰´¤Êwù<Çý|ËI¿ÙîPÒdK+Ñ¿ÓØ]†JÛzºTß©4”vÔq®ÞÞi`%Ò»jW¨ö‘‡*NUya¦½ÕËsZ¯z,LfúÕfú÷KS~e˜ìƒvÚö66–eƃž–šXÕû«õ~ƒ†Æwz8fx*L¿6»W½T§èôzίþÓæRuˆÞ&Tmµîjh–~Û’¬¾ Z¾jËû-O_/¿´¦Þ·<ö•_ý­¯«×qH–A/ÇÍ|b¶»£ã'Ka÷»×1A˜<v™–»ªll¡-ÓëøB/¿Ì¶Km\ïWQi!hÌϽŽ{‚â)þ‹ÿâ¿ø¯®ÿöÙ9cU¯Büéï¸cÎ8fÐI§Ÿ~üi%Û{Ò©u²Œ.üuÛ¾ Ãí䟌o×­ËöUŸtëÒ½+Ÿm×¥k×íwèÖ}ûnV—í ºîP`uèR'kcüYrÆ1§wè`|Æñ%gL7ì˜3JNVkT¯¶ÌþïÈZZ.ÒÂim%zMä裣åÜ™ÕÉJüêËÎè…=Ð×rž²,OD—'%«')Ë„O±œ_Ú‘'‹’åáR\‰ñ¸·XΓ]Êp?¶œ»©¦ã9ËyR‹ÜA5Ûr®`Tw4É/Š~oð–áüƒ 6* ÍÑëÛÎÕ¢lçn¹«HžV ¿Æ*O‰;{äé r×¾<…õ Û¹S_îÒ?Ævžp*wÍËSSåN¹BTîÖ–;LäÊOy§Ü­,wmË¿wÛΓñäÉwòô>ÂgX‚ðþFfSò?Zc´ÇæØÛ£vG_€8Çã”à\\„Ë17áv܃)xÏàEÌÂ;˜‹Q‰oñ3þÀJ4jFþǺÈÅ&Ø]лbOì‹"cp"†ã,œK0×ã܉ÉxOâ9”ãM¼‡ùX„¯ð=~Å d4gסÚ`cl†­Q€±öFŠ£p†âtœƒ 1×àF܆2<ˆÇð4fâ5¼°Ÿãü„åø ©ä›#¡#¶@gtCOì~8‡c0†àTœ‰ó0Wâ:ÜŒI¸ã ÌÀËxïb>Å—øËðì–ädc}´Ã¦è„®Ø ½Ñûã‰bœŒ8£q®Æ ˜ˆ»ñÅt¼€Wñ*°‹ñ5~Äïø ²ÉÿX¢ò±-vÀ.(Ä>8‡aNÀ0œQ¸WàZLÀ¸ažÅKxsð!>ÁXŠ_ð§tÕµ"ÿ£%ÖC[äa+l‡Ñ {a?Œ8'á4ŒÄ¸W¡·â.Ü©x ÏãÌÆûøŸa ~Àoø™4›¢56@{lŽm°=z`wôÅ€£qÆü‚Ð8ü±%¶G/ìƒC0Cq.ÂU˜€»ñ0žF9ÞÁGø?â/4Ü”ü\lŽí° úà …Q‚ pnÀ$<ˆ'ñ"fãC,ÆwXŽŒÍÈÿØyØ;aôÇ8§a.Ãu¸ “ñ8žÇë¨À§ø¿b%šnNþGtB7ì†}1ÇbÎÆ\ƒ[p¦âY¼Šw±_ágü¬|ò?Úa `WôÅÁ„“q&.Ä8Ü„»ð¦ãe¼ù¨Äø ¶ ÿc#l†.è½p ŽÄœŽóq9JqÀ˜‰71Ÿa)~‡½%ùm° ¶ÁŽ(Äþ8Ça8ÎÅ¥¸qÃs˜…÷ñ ¾Æ2ü‹&[‘ÿÑ[aôF?Šcp Fâb\›Q†Gð ^Á,À—ø +Шùm‘®è‰½Q„£qÎÀh\‰q'¦à)¼„·0Ÿã{üÌ­ÉÿØ›¢3vÆž8qFà<ŒÅõ¸÷c^Àø‹ð-~ƒµ ùë£#¶FwìŽýpŠq*ÎÁ%[q/Å ¼†÷ð1–àüƒÆÛ’ÿ±1¶Äöè…}pc(ÎÂE¸ p7ÆÓ(Ç;ø_àGü…†ÉÿÈÅæØ» ÂQ8%¸WàLƒx/b6>Äb|‡åÈèBþÇÈÃ¶Ø { ?ŽÀñ8 £p®Ãm˜ŒÇñ<^G>Å7ø+Ñt;ò?: ºa7ì‹8Ãp6ÆàÜ‚{0ÏâU¼‹…ø ?ãodu%ÿ£¶@vE_ŒA8gâBŒÃM¸ a:^ÆÛ˜Jü€?Ñ €ü°º öÂ8Cp:ÎÇå(ÅxO`&ÞÄ\|†¥øööä´Á&Ø;¢ûãp‡á8—âZLÄ}x ÏaÞÇ'øËð/šì@þG{l…Ðýp(ŽÁ)‰‹q5nFÁ3xs°_â'¬@£nä´E>º¢'öFŠ£p†âtœƒ 1×àF܆2<ˆÇð4fâ5¼°Ÿãü„åø »ÈÁFèˆ-ÐÝÐ{ ÂáŒ!8gâ<ŒÁ•¸7cîÃÃx3ð2ÞÀ»˜‡Oñ%¾Ã2ü{Gò?²±>ÚaStBWì„ÞèƒýqŽD1NƜѸ WãLÄÝxb:^À«x X€Åø?âwüƒ;QÞalˆÈǶØ» ÂQ8%¸WàLƒx/b6>Äb|‡åÈØ™ò Ûb'ìþ8Çã4ŒÂe¸·a2ÇóxøßàW¬DÓ”è€Nè†Ý°/àX ÃÙƒkp îÁT<‹Wñ.â+üŒ¿‘µ ñƒvØØ}q0ádœ‰ 17á.<„éxoc>*ñþDƒž¤l„ÍÐ=°Ä‘‚Óq>.G)îÀx3ñ&æâ3,Åï°w%ý£ 6Á6؅؇ã8 ǹ¸×b"îÃcx³ð>>Á×X†ѤåÚc+ì€Þè‡Cq NÁH\Œ«q3ÊðžÁ+˜ƒø?aõ¦ü@[ä£+zboáhœ„30WâF܉)x /á-ÌÃçø s7ÚØ›¢3vÆž8qFà<ŒÅõ¸÷c^Àø‹ð-~ƒµ;ù ë£#¶FwìŽýpŠq*ÎÁ%[q/Å ¼†÷ð1–àüƒÆ…”gØ[b{ôÂ>8ƒ1gá"\… ¸ãi”ã|„/ð#þBÃ=h? ›c;ì‚>8GáD”à\0 âI¼ˆÙø‹ñ–#cOò?6@¶ÅNØýqŽÇi…ËpnÃd<Žçñ:*ð)¾Á¯X‰¦{‘ÿÑÐ »a_ À±†³1×à܃©x¯â],ÄWø#«ùí° °+úâ` ÂÉ8bnÂ]xÓñ2ÞÆ|Tâü‰{“ÿ±6CôÀ^8GbNÇù¸¥¸à ÌÄ›˜‹Ï°¿ÃîKþGl‚m°# ±?ÇqŽsq)®ÅD܇Çðfá}|‚¯± ÿ¢É>ä´ÇVؽч✂‘¸Wãf”á<ƒW0 ð%~ 4êGþG[ä£+zboáhœ„30WâF܉)x /á-ÌÃçø s_ò?6Ħ茱'À@œ€8cq=nÇý˜†ð>À"|‹ß`íGþÇú舭Ñ»c?†bœŠsp ÆãVÜ‹G1¯á=|Œ%øÿ ñþälŒ-±=za‚Áгp®Â܇ñ4Êñ>Âø¡aò?r±9¶Ã.胃pND .À¸“ð žÄ‹˜±ßa92 ÿcäa[ì„=ÐGàxœ†Q¸ ×á6LÆãx¯£ŸâüŠ•hz ùРݰöÅ‹a8cp nÁ=˜Šgñ*ÞÅB|…Ÿñ7²"ÿ£¶@vE_ŒA8gâBŒÃM¸ a:^ÆÛ˜Jü€?Ñ ˆü°º öÂ8Cp:ÎÇå(ÅxO`&ÞÄ\|†¥øöÁä´Á&Ø;¢ûãp‡á8—âZLÄ}x ÏaÞÇ'øËð/šBþG{l…Ðýp(ŽÁ)‰‹q5nFÁ3xs°_â'¬@£CÉÿh‹|tEOì"“pFãJ܈;1Oá%¼…yøßãd ÿcClŠÎØ{â Ä ó0×ãvÜixoà,·øm€s!T3¬ŽØݱ;öÃa(Æ©8—`Ã24*!ÿckôÂA8gcîÀcxóð-þA«3Èÿ膾8Ãq1nÄý˜w°¿"ëLò?¶Aoᜃ«0 ãUÌÇRü‹Ög‘ÿÑûà(œ†1¸ à9ÌÁçø G’ÿ±-vÃÁ‚sq5îÄ4¼†ðVb³ÉÿØýp4FàLÀƒx£É9ätÆî8'b®Á]x³°ßÃ:—üͱöÅ œŽKq3¦à¼‡/°MG‘ÿÑ…8'á<ŒÇÝx¯c!~€}ùùØûa0JpnÁC˜‰÷ñ%þ@³óÉÿØ{`NÆù¸ex oàcüˆŒ ÈÿØ=°?ŽÁ‹[ñ0^D¾ÂŸh>šü®Ø‡a(.Àu¸Óñ&>ÁOȼü-± úãXœ‰Ë1à%|€%ø -."ÿ£{ápœ‚Ѹ÷âiÌÆ§ø .&ÿc+ôÄ(ÆY¸·a*^Æ\|h9†üíÑG`.D)îÃ3x ‹ð ^BþG'ìŠqFâJÜŽGQŽñ þFö¥ä쀽1§â"Ü€Éxoã3,C£ËÈÿؽpŽÇÙ‡;ð^Á<|‹Ðj,ùÝÐGb8.Ƹ3ðãWd]NþÇ6è"œ€sp&áq¼ŠùXŠÑà Ò=Za}´Å&ØÛb{ìŒÞØ ûâ †£qNÆi8 çáb\ŽkpnŸáq<ð ÞÄ»øãs|ð+þB敤c¬‡‘.Ø »£ÆQ8Ãq6.•(Åm¸`:^Äx ñ¾ÇïX‰Æã(±ò°5vÀ®èƒp8ŽÅPœóqÆãfÜ…1 ÏáU¼ƒyø ßà¬@ƒ«È?Xí±¶ÃÎ(ľ8GcNÃ9¸ãpnÇ}˜Š§ñÞD>Æ—øËa]MùŠu‹M± º¡öÆ8Å8gâŒÅµ¸wc žÀóx s0‹ñ-–áo4¼†|‹6è€-Ñ=°öá„1çb ®Â¸“ñ(žÁ˘ð ¾ÂøöxÒ7rЛa[tGoôÅAˆã0 ga4.Çu¸exOâÌ»øŸc)~Å?ht-å6@Gl…ì‚=±?`0NÂé…Kp5nÂ$ÜÇð,ÊñæâS,ÁOø×QŸ`]´ÃæèŒ±öAŽÄñ8çã*Lăx¯c¾Âohp=ñ†M°z£?ŽÆ0œ‡q¸ài̇ø¿"³”ô…Žè‚^ØGáŒÂ•¸÷c:^Ã\|eȸ|ˆèŒ]±ŽÄPœ‹+p3&ã)¼ŠP‰_`ßH‡öØ=±/âdœƒË1÷áI¼‚ |ŽŸaÝÄ~ÅÆØ» ŽÀI8cqîÅ(ÇûXŒŸ°-'°Ÿ°5z`Ž1—áF܃ixïá3üˆÑâfÒ3:agôÅa‚³p)nÀí¸Sñ4^›¨ÀÇø?`ùÍÎÍZM°r±)¶A7ôÂÞ8G §àL\€±¸·ànLÁx¯aæc1¾Å2ü†·hƒØ]Ñ{`?ŠA8#p.Æà*܈;0â¼ŒÙøŸà+üˆ?`O¤<@Úb3l‹îè¾8q†á,ŒÆå¸·¢ áI¼€Yxás,ůøn#Ý`tÄV(À.Øûcã$œŽQ¸Wã&Ü‹'PŽ÷±?a%ZÞNzÂÖè}p8NÄH\†q¦áe¼‡Ïð#þE‹;ˆtÂÎè‹Ã0gáRÜ€2<Ž—ð.áüƒæ“H7Ø ;ao À 8— wã1¼ˆ9øßão4»“ú[bGôÁ¡8g` ®Ç]x3ñ>ÁwX¦wÑîÂ莽pŽC .Æu¸SñÞÆÇXŠ¿ÐänöòÑ {â`ãt\„k1 ày¼……ø¢qé›cì"‹¸ãqÆs˜ø ëÚØ ۣᜆѸ·ã!ÌÀ›ø_c9ÝK» ›¢»ã@ Æp\€«q¦àY¼ùX‚ßÑð>êä¡+vÄSq>®ÂD<ˆgð:æá+ü†“ÉwØÛ¡7úãh Ãy‡[ñžÆ,|ˆ/ñ+2ï§|BGtA/ì£p FáJÜ‚û1¯a.¾À2d<@}‚èŒ]±ŽÄPœ‹+p3&ã)¼ŠP‰_`?H}‚öØ=±/âdœƒË1÷áI¼‚ |ŽŸaM¡\ÀÆØ» ŽÀI8cqîÅ(ÇûXŒŸ°-"ÿckôÀ>8'b$.øÓð2ÞÃgøÿ¢ÅÃätÂÎè‹Ã0gáRÜ€2<Ž—ð.áüƒæÿ±vÂÞ€p&.A)îÆcxsð)¾Çßh6•ü-±#úàP30×ã.<Š™xŸà;¬@ÓGÉÿØݱÁq(ÁŸwb*^ÀÛøKñšºaOŒbœŽ‹p-&á<·°ßâO4~œüͱö@ŽÅ\ˆñ¸ã9ÌÆ|ƒ?5üÍÐq®ÃC˜…Ïñ6x‚üýq.Á$<‹¹ø Ížd}°ŽÄH\‡ñ:*ñ/6|Šòýq2.Řñ3šO'~°;ŽÂÙ(Å#x_`%6zšíÇŠËpžÃ<ü‚ϰ¿Pˆ£qnÀT¼‰/!?·™‹n8§`,îÆó˜eh9ƒôƒ=0çâF<ŠÙø ös¤wtÇA†ËQ†ð~Eöó¤gì‰Á…›ðÞÂd¼@þÃŽ(©¸÷`&à7´šIþÂ^8çaÇÛø™/R`'Œá¸÷âE,Äïhýù}p,ÎÇ͘†wð ¼Lù„qNÃ8܇—ð1–crÊìbœŽ‹p-&á<·°ßâO4~…ôͱö@ŽÅ\ˆñ¸ã9ÌÆ|ƒ?õ*é›a{â ƒÓ0×àv<„xák,G£×¨ß°) °;Ä` Ǹ·a ^Ãbü6³¨Ï°NÄÜgð~DÓ×Y?ôÆ@œ…ëðfásüƒ Þ`ùØ'áL³˜‹ŸÐìMâ »áHŒÄõx¯£ÿbÃÙÄúãd\Š;1âg4‹ü‡ÝqÎF)Áø+±ÑÛ쀡¸ wá9ÌÃ/hñù…8çàLÅ›øÖòºá@œ‚±¸Ïc>–¡å»ä?ìA87âQÌÆW°ß#ÿ¡;Â0\Ž2¼€ð+²ß'ÿaO Æ(Ü„Çð– £‚ü‡Q„SqîÁL,Àohõù{ᜇ xoãkdÎ%ÿa'Œá¸÷âE,Äïhý!ù}p,ÎÇ͘†wð Ì#ÿag‚Ó0÷á%|ŒåXg>ù{£à<9ø ?¢½‚8#p&ãe|‚?³€öúâ8ŒÆ­xïb)-¤ý„]0§ãjÜr|Š?±îÇ´°ŽÇ…˜ˆ§ð¾CÖ'´çЇ¡×༂Eø ë}J{ ýp.Âm˜Ž÷ñ=/¢}‰]q8ÎÀx<ˆWñV`ýÏh?b_ ÁŸO£? ÉbÊôÂ8×b ^Ãbü6Ÿ“ÿ±NÄÜgð~DÓJò?zc ÎÂux³ð9þÁ_ÿ±?NÂ%˜„g1?¡Ù—äì†#1×ãa¼ŽJü‹ ¿"ÿ£?NÆ¥¸3ð!~Fó%ä쎣p6JñÞÀX‰¾&ÿã Åe¸ Ïa~A‹oÈÿ(ÄÑ87`*ÞÄ—°¾%ÿ£Ä)‹»ñ<æcZ.%ÿc ¹¸b6¾Â†ß±ÿ0ãKlð=éà1|6?þp>E%Öÿ‘ôó0Ÿc½ŸÈ?…G°ëþLþĹxŸ!çò?ÎÁCX„u–Q¾àlLÁ§hý+ë‘xŸ ÕoÄÎÂøÙ¿ÿ8÷c!Z.gÿâ LÆ´øƒôƒ܇ÐüOÒ'Nǽ˜f‘þ1÷`š® á4”áC4ù›ü‹á¸sÑøÊœŠ»ð²þ¥üÁ0܉ 4ZIù†S0 ﯔgÙÖŽŠ;ðضÕ'ãv¼‹Ì Ûꆓpæ #Ó¶vÀ‰˜ˆw`7°­í1·âmX m«'༅•èÚȶŽÇ͘±]–m‡ xÿ KcÛ*ÆMx£sÛ:7âu¬À¶MmëÜ€Yø Û4³­Á(Åkø[7·­A¸¯âtja[Gã:¼‚åØª¥m…kQŽß±e¶m‰ñx¿a‹V¶5×à%üŠüÖ¶u®Æ‹X†Í×±­Ãqfâl–c[‡a^ÀÏØt]Û€+ñ<~BÞz¶u(®Àsø›¬o[‡àrÌÀèØÆ¶ÆX<‹ïÑaÛ*Âexß¡ý†¶u.ÅÓXŠ7²­q ¦ã[´Ëµ­0Oá´mk[ýq1žÄ×Èmg[ûã"<%ØhcÛÚb¾Â†ímk_Œ)#ð©ÌI>ϰüŸ¨iÎcNã·l¿uñ +h]Â,ß+l3¼dëŸá3­ù™_œ­GØuOQ¶#Lü…]¿¨ñ\›ñ&½¬ªøË´ªÿBa3í½ù™9]Ø8Èô/J~‹²Ãl¯íƒ(åE˜õH~ëæ·Ü 2*JY´œ°åX²}fþ ü”FÂîÃdq’l»ƒÒF˜xMn˜<ç¿ôòŸÙN“r¯½å”ƒf]f~ç7_}§A³h®K}¦—(i¦6˳úL/fÝ©½êÕö–w› ¨½ æ[åg}¦³ý™ãnw®U³í¢WßéÌ, ÌõÌòù®¾Ë¿´´ßÖ¤ú(Õô¥œo¦ ýŽgüÚÇAÇK–žƒÊÏ r0hûä¿e{…™,?ÅQ²íñËGa÷²é½–—,Ÿ'+O‚ò¾ßò’­[œÿj'ÿ™uŽ”uRæ&ÙþºÈ+fݯ¯‹W»NÿÎo¾úN/f=–k%êLã{µŽ9aíûÚ(½ú“U»Èë;s¨÷ú6x‡·±¼Ã½–—å±¼Õaÿ©6XÐþ ÊG~ñé×f{Vÿ>×g?eùÌ«·i½¾ËÕ¦ÉÓ Ðr~ó¨xì‡UQöøí¿ŒÑâ¥Ôr~Ëiš;]¶U=M´ÑÂ0¿SíÒթ̪︮ï²Ní½Ì2÷‘þÚG©îÛ 8õjÛí 3>£´Ö¦ôv™AËš6è3¿x #h›ÃrTXN#åK¥åüÖ[¦½êöm}¥]u ®×¡*Ÿ™ß©ãzÕ¦ðë0¿Sù²^¶å§ÍïԼͬêmùW;GŸ/Ë'L½n^ö»ß¾ JßAùZ7÷­ªÿ¼ö{v’ýžãó]{w »’•mAa'˯~û5h£,3($+“m‹×waꌠmŽR¥’OüÖ1ì2ÃÔUQ¦K–æÂÔUa–6-†©üʨy/ÎÉóŸy ÔÌú_©ï|äUÇêC¿ó9«âüQœ>ë.}šýHfJõ³¬êôÔ¿¦¯§™ýúƒ¼æ êGò[^}§O¯s|zŸG}¦¥¨é7(-­ƒ¾íæùpsÛæQ¿úЯþôÛuÙ—¾¶¥¯úÏ<ôê¿Úï~ÇŠæq¢¦ê‡TC韕¾Ú<»f®þ]}ï¿ú®Ì²SëocÕÜGaë¯ý§‡ö|Uªeùê˜ÿ‚î ¨Ïü¦mê—ÿüÚŠ©´#sµpÍý§·ºì?½ìñJ×AyÔë»Ú®½Ú/ú>ö;¦oC”:nMl/E)ëR­«RÝzšª«üŽ«ü޹Ô2×Ôýj“N~º~B­§_½kû|—áÁ+oûµ?ë{ÿEi[û­¿ßö% §>ÊOóf¦U½[ÿ.ËJôo›ç0½æËô˜/N/µ›^RmÛ˜×%È9 9?!ekªûÖ¯L^ûºVå> [–{åÍ\ŸïT\6óØG©î¿ÕµmóÿV&¯NלxÅg\&¯ÚôâuYU9n'¾+ðø.Þïµ»ßͲ\o'{å[UV{}—k%®G¨­kÍcôÿÇýt=fP^ùŽÏ¨Ëô[W¿ò"ÙtÉâ(¨< [½/·ª_C'×ÎUZε:õ½oëûø]¶½ÀvÒ¾ÚöBÙ«.]×W}d^+¦_èõÄŸ~ì«g–Éúwzû̯<7¿ÓÛå¹½¯(Çò¾P…³¶ï?ɯ%V"íJy-euž(ËõïTYžê~(Ö¨:¢Ðe~—ç~>íÿ`?¤š¼ö‘ª‹Íý —gæwê:Ífî¼J¶„[œBy´O‚êÃ(ÓÕYaÖ'Ù~6ÃJV‡‡Ù.¿ð“­³W8aâ+Ùö¥ù0m‚0ñ´¾a÷³_Þ ¿éÄq²ô˜êþH–~£¤·T–&ýúÍVÔ8“ßSÙaâ5•ô&}ù寰åXÔ<6ýy…6ýF‰ç õõ*¦ߠõ’.¢”?Éâ8J|GÙa†aÓo²e„ÉÉÒJ”mH·aÖ'(O¥›(ñ&~ÃÎ&]GÉ_Qòœßú‡Maã7l<­¯WxaÓoÐúFIQÒkØøöOuúTóXØø÷ŠßTÂóZ_3|³ßF?NWÇ—ê8ÞœVÆÕ±R{mZóþ>¦yLäwM‰êWVáªi½Î=šÇi¹–ÿõ(zŸµ¾®zÿ³^ázMë®ÙÇ¿æ´AñëÕ?æ¿æ´Añ—gqy¶&—gQâÙœ6Yú ¿^á¥ß°ñ´¾a÷³_ú ¿éÄq˜üŸÊþSN„Mo©,/Lúõ›ß +¨~ÓûÕÛûL«Êv5­”ém,ïuJ–îÂûÍoûå‹°û-J: Zß°éÓo¿™ç²‚ö›9­ß~óªçýÂõš6(ܰëë5­_¸aË…TÒ]ªÓG-Âäç0åCÔð¤³5­½ž,NÂnPY¥Ü ›‚öw”r!Ùûdé+Lz¨ã–0é!Ìñ…YF…I¿a‡üÊ3¿xs\—gõ[žéÏÔŸCèUžéÓªó¶êú’TËœ(åH˜éS-’Ås*Ë ³ß¢”k©Æq\®‡Ëæ5ôAùÂoZ¿|v¿™ëu¿¥Ó°û-Yyn²|v¿ù­¯_y¦†aÊ3¯iÍýfÖYaÒC˜pÃæÝdi#Lº ;}Ôò1J¾ [&„ /L9¦½nÞ'Ô^7¯TÓêשçú{šÓê×UšË®Íþ‡<+qý²ºnJ®o’k–YîµÌ¶óü]³=©¯¯×¸ß´j=šiëå×g®Ö×üͯ6mmZ¯¼©¯CmþdÓê×\¦rRœ7W¼&>¼Ö1Ì~ª—ÂÄcÔýçWÇF]^˜ý–¬ŽVC¯rÇ,‚Îê÷ª¨zÐë`²ôe…K^ÇÒAëë7­×úúm›94­Zw¿ò,Y¸~ÓšáÆåYý–gñ±ôš[žÕF›«®Ž!½Ê¨Ú8סڇj(íÃ1¶ÓF,³œû ¤èùܯ€iãr§þËý¾¿óæ´fTWÇ8Éâ$ìöûíßTÊ¿0é!h…›,,¯õ‹’n½Òƒ¾/ÌçFø=T}§×Oažù©ÂÉM2­þ~Þ+èÒ/yMk¦3¯þdùÂkZ¿¶™GÉâ×+>ýâ×+\¿øõ G߸ü]3Û}^ej3mZUŸ'›VÿmÊ\mšúhïäjáªåxëéçõûe%\Õ&Qmª¾+«zß•´7Ьhm˜8Çù8Ê:{…&¾’mŸ¹þaã7Ìþ ×/~Si焉ߺjOz•QuÑ´¾AÓšëk–gR6•¸å’”URfIù´Ì#.‚¶-hZsÛÌã· uˆËúo?¬ÎÇoõÕ~X“[¼Æý¦UqáwžLßÇæxдz~϶jn_˜ö™>­_û,.V]ù`¦‹ iõtàwÌ`ž7Uy?hZýø"¾æ4ùûdé+Lzð;Î2ë ã,³Þ*£ü҃״fz*£üү״fú *ÏüâÁ«<3ã!.Ïê¿<«‹þ’mh^_bNt}I}_èÛfŽM«ÂTñáÕ_Rf¹m{Ëé;©zÞ•]³¿DM#ý$ˬÄ3°Š­šÇ 2Íw _ޤFŽâ<´vä¡Õý]O*MZ‰þ>I“* G9îN'_Èò%{ŒM›g%ú&ãgÅy(Lòª×r’L«ß $ë%™í>½Ý¥··¼®¥Rñ£ò±šÖ+.š ½ÚˆzÜëãAáfiÓúµ=õpôðÍ|¬ê¾iVâùen\Æù¸nóq²y£Ä¾®ßô^Ÿû ƒÖ× /ÙúyÍ&~ƒÖ× ¿®êîR/³yHž#\n9eÔ±•˜f;u³*;õr²Ï¸×´z£…«úº‚¦ÕÛñí­šå^˜8 šÖŒ³¸,‰Ë’¸,©™/¤Î•ö¹*Kôc^s¤2}˜ò!ÙþŠÿ0eM˜ð”?aÓn˜ø JÛaÒo˜ø Zß ´6ý†‰ß õ5Ã÷j§ªö^:×Õ¿9VÍ~· ßøSáf' WõOMkžß5×aM)×½Úà~ûÍkÚølqy¶6–gÉöaØý§QöOØô”>£nÐûdù!YøfÿCPŸB”þ‡0ùÊ/ý„Éaö›W¸ÉòE˜ý´¾aóg²ÏÃæ‹T„É©L&_$ÛÿAñ&… /L¾ ›vÃÄOPÚ“~ÃÄoÐú¥Ý°é7Lü­¯~P;Uõ=õ½ú=£1¨<«´ó¢r®G®µ*Ïäüô»õ§ú­oPûÌ\ß8ÇùxMÎÇéÄq”øŽ²? ƒÒgP¸Aé7ìþ“V£æ½0Û~²õ¯aâ7ìüaÒu”ü¥&çø+¬D= u€”ûRþ›ãAÓJ}³ÌvÚÀÒ“Âä‘0ù+ìô©¦­ t&_D /(_©¡yÝW˜úXŸvmùž 4™Idå ÁÓò}ŠQ’§ßºN¿aæ÷Z^²øò+ƒÊͰåz²ø 7jùìódñkþnsP°9­Wßl{Ÿiõpô~ÝöIÂ5û–s´é3µe{ ÍiUŸpñ p³´i½ÖAÇ ßìcOÖ¿nNÔ¿î®Wÿº_¸æ>̵ª—Ûºƒ9­^ÆgËm¦É4¦×§óšÖ«ÞPøüËß5¹ü•6F‰KÚÒ§"}+Òæö±ô©HßJ™•è‡QÓþ×_ãN«ú`dÚ5­Ü™¦)0âDÝ磞 ä5­êËúoZ7~âò¡þË3,¿iý¦ *w¼Æýò±_¹à·¾AóøÅiP¸©®Ÿ>¿Y>håØ 7¿ÛN­WùP`”%ZY¢÷ëVjÓëç¨dúÒŒ„ äa‹PŠ ä4`¥ âü¶*ò[˜õO_~ùÂ/Oú­[PÞHAë´Q>O¿æ±ˆjç¶Ñ>Ó¯ùÖ§UmW5­~IP¸ú5)Í’„«×¥êYkÒñW¹#uµ^î¨óN TÛHÊ»L­ TçžR-kÌcœ,+єςÊz³_LÝ ßOª/Sµ¡Ìï¼Ö%Y>ò[ýÊ\}]ÍuÑçSë’¬œó˯úv™ë²¶ï?s?Èg•¤ë% ¼¿[Êç?6pÓ¸]ýÞóe|žÙ°f|êaz}§Âü‹kµý^ù(¨®Òß{åýZN3¯¨cs?èëbæ• ¶DØ:mÜò™¤Û¥>yEÒ{¥O^É!Ÿäùä¦×w*̺ˆkó¸ØŒý»º®äB®÷PçñÊ%Þlç‡W_ Z¿bÌ—çÆ÷´ˆñ•jœåXÕïÓÓ¿SÏLö{ΧڦTË‚ª¶Šå´GªÚ02$6tÚ"ŠjßHy-é°6ãEí¿Õ)߯m”èûoM) ¼úïÍúÌ«oß«/_-Ïë;sÿ¥ÊoûƒÊ˜(ëàUF„&hô:(YþޒߣäÿTʘ øðû.hÔçzùïW&E)£¼ê¿põ~êöIÂõÛoaö]P~’ýö[²2Âoÿ$Ûo^ëà·ß¼Êï(å¹ß~ó ×o¿y…kî·0õF˜z$J½âWÏ„ÙoAëàWî„Ùoqù—¿krùÔîWí*s9^Çïª_3¨=ênP¿€ú.¨ÎÆ®åé,.«WŸ²:(.̸ Ç^û#Ù~»<¯c2Õ¿¦¶-×ò>Š2­ê“SûBMëuL¦ï;µßÚû„kö©iýŽÉüâ&hÚ øN¶/‚¦5§ñj{úÅïÚ\ž­iõ¦×qV®Ïxд^}Áæ1™êçÖÏY´·¼ÉªúCµõ-vûG“¥õ ô6Íx¥õ ü4 ÊfY²6狸ž_}êù ã,i›ªûhÆ%9&“¶©º¯fŒÇ1Y3åe%ŽÉÔ½;VÍ|´AÓšë°6ç¡5­nñ<&³œc2IåîqÙ4c29wU•8&“s[…YÞÇdrîªH;&SÓú“µ‰ÎÔ´ÿOéLÕQÙÚ´^×3d&™V¥Ÿ0Ïɶj^Sá7­_ݦ~ ×AÇ"Éê¯iýê–0ý´êܾ”­Ui=Ëyf¡j•d9Ï-”òµÔ^M;Fò@V"o–ñ~Z–“7½®=Ðë9­YèûjšU?ÏòYóJÛæxд*M…«¾Sy((oêá¨vg–OüùMô¹m ý> Ó®:ö7ÛÕæýåÌ”éæI“ê^OyîŽ9mE–Ó7XéæC5­<Ó¼7´ÀMÛ’ÿJ%®¶Ò¸ßx”üf3­ëÇwªªÒQºmû°i)L: ³mf{Gß6•_Ì>¯6½9î5­yÍP˜{*’­C–•¨+Õ>PÓ¦[ÖEž³/ô¾°dñ ï»dûBŸ6Ù¾He‚öEP=´OÂæù°yÆoüò|˜xX›Ë3¯ò¡™6½Þ?T–˜×¿šÓêiÒ¼ÖPê9ÖRÇYR'©ëàÕõñr½§´ë¼òP²õõÚÇ~ë땇üÖW“­oœ/ÖÌ|×ó«O=ï•7›ôp¼úxô|oæw=­«ešÇ7ú±*§äzt‘ã’6s©Ç´2¬ê«±œcÅB+q¬kæ· móšÖoÛ¼ò±ß¶­ÍùØ«J–vôi“¥}^¿ø5ë·ªôÑÐé?T}Šêž‹µ¹M[nU?÷q¾ˆë·ÿçúÍ/Íû•=YÚ4*íçYÕÏIT½·ç&Ô5cRyÕoe.U¿©ç˜{ÕoEnØ*<¾WÞ S'Û¶mÙɶmmÎÇkÃñ›y-…~NÎïXO}æ7­¾¾fß¾YU­o†³ÎæýØqúë¡ÿçzÈï¼{Ðq–™æ½ò±y݇~>ÔìË4ÏÝåLk.ÓoÚ(ë ·Uœé奙烮U0§õ‹3sÚ õ]›Ë‡µ¡~Sïõòß/_ømcžU½-'Š,­¾°÷=›ý“Uçê2œc-Y_¹¯ºê|ºOý§ßÚK¿Š^›×ɩϽ¦m¯…©—Ñæ´zšQñì·úúšûdmî(³Ü~8;ñl¹žD®+ùïZ“ 'o¨iKµi+³œßØ”ßÜ\–•˜Öëú’ƒ™_ôiÕõ jZµ=Ó¬šÏÁPmCé;Ô¯‹óPœ‡ê#e6&Ÿ`Lcç÷”Êf6á3ŒA92›:¿·d¦_½OAõ%ü×·`Õ|&»êS(tÃ(6¦Ó§UÇNÿMëN¿6ç‹r«ú5ªR¨û¤\’ò©Ä­óƒÚë~uy˜vu”¶½´›¤-òßõF¶{ý*é¥ÅçÕH[Eµa*Ü}\õ<¢†Îôò|˜¦ÓÔi˘éLÊÃR¾+kê. Óš:óÿ?¥‰‡ª¸lêÄŸô­W=O'dz:Ö3¿ :Ö3EUzrDÊ“Š¦îo³ñEJ›9eIÜæ|†RL[Á0§ß¡´…óûm sZ¦¿Ãî¿TÒ‚í1¹ƒ®N%-…Ù¶°uP˜ïôÏÍt£[×Õ½%*þüú@¢¬ƒ~ª®MUíƒtëùdû"l|ûMë·/T<…‰¯~O¿}áuÌë·/RY‡ }¡og”ü6χÙAÓúåù0ñ—gqyVå™W=o¶÷‚êy³}â×Ï¥çjÛæÕ÷eZu­¦Uqë×Wl¶]‚úŠÍãàþ_¿83§ Š3¯òÁ/ÖæòÁ«Ýiö7šýº^ÓªxKvîBŵ~îPoS Õç+Ç&ú3›½úì¯×´~ë«—l}óB¬o\oÆùbUå‹fÚ{}Ý‚¦Õ·Ñë¼H±åôûȸôèýBAùBÖQ]àwÞM+×SI—©´Ç3ýfY5ûU\¤ÛîóÛ¶ iÓ‰¯v‘Ù3ûL½Ú{æ¸×´QÎû‡]ŽÞ§­¦²ß£´­ƒ¦ ú<ì¾êc2ãAßwuuUØuÚf]6„ÍóaóŒß:øåù0ñ—gqyVå™Wù`¶±ÍöRб^PûH?ÆÔ¯‘¾÷1–÷õ´ê\E©•ü~õ;êÜ—W~óÛ¶ v‰¹m^í¿m[›ó±W¾H–v¼âÙ/íxå¡0שëQU›UµUW‡´îu?¤ßúÆõ[œ/ê#_¬ÍmÚr«æõë~ñ×u›/r,ï6z{ǯŸ_McÞ³ _o¤Ú9j:¿uÐ×WMûÿp¬g>?JÚTê:u}Ÿz†T©UýùQ%î´UÏÉÉrž%¥ž!¥Ò³žGr ês¯iý®ï3§ Ú6Ýÿs=ç·Õ'¿µ$Ÿ ¢¥{ý_fº×Êõ;EŒ—¢"ÛûZ@uü£ßWXby_÷ªŽ‡ÔqPmýþ[ØtœJž°=æñJ³~}üf:ó;æÎL2­Ú‡j9^ÓFY=•jãº× 4nƩ߾šÖœÇLëz?y.IÒ^U´k>›°ê:K·nñºvü¿ëÅÝiÿ»ŽÜ®Y® š6ËàU_µßý¦5çQ×ëæØ«ç3ë+o–[ÕÏ©ö·´Åõö·ßµ–æ~Rí€0Çè~Çóz[Ä<—ôß±“»¾9­œçÈJ{GÖ5ñ‚Vκ›Ó¶ržO«¦-b¼¸Uâ¾'==T•ç*M¸¿É(Ï·-K2­J܇-k£\Zg%‹ß°qŸ,ì ¸š‡j+­GÝo©~ŸNºO%û¥û¸"Zº·aÓ}Ü?¾LJ5›ãqÿD´t%n“M÷OÄýkJÿDйœlí;uM„:_¤ÂQqàuí¦–ª÷fXæy£<«úýUúù¾2+q•œï4ÏÿZÎ9z9ß3Íò¸&ÚNœc’°ä|©÷rž´ÐJüžfE÷yW¶óÞ K¿UÖ¥¤•ó[U*,µU×÷´JÜ'&ayµ Sû °¢Æ}Uý±éÄ}mÔשÔ;©~ŸJ½¥^J6·W£ÕÛQâ>YصÙ^õj˜ù0G[ŽÊm<ƃÂRåƒ^—èóª²B¯¶ “Õ%QÚ9fXf½¥ÊUöÈu.¥­œrZ®}‘ç‹Éó¤¤Ì©z†(;¬¬UâyÞXQ†s]¥VÕ50YNX¥ZXR–Uha©gÍ˳ªrܰ‚ê´T÷£WX©îÇ0ý9a÷c˜þ‰°ûQÕµ±UXéìÇ ò::§¶ê¡°õL˜z(•c¿z(î/ŒV…‰û°õPÜ_·¿âöWÜþŠÛ_á΋ær fXAý[ÙZ8ú½A×ÀúŽ™VšiËK–™&Ìs±fXf›Iöa±÷òìÚi­œ¸—>‰òVÎuárÜ.ÇïrmmiCï¾ه˲iB…UÕ‘kšV¦ûÌר}fRiVå¥(}fXfÒ×!Û¤ú:¤ßCâLÝ÷uÄum\×:Ì2R‡ù>(¬Lm½²B|o†•«-GõƒêåsÐ÷Q¶1K[}Ù~ë•lô°’Å—¾ ª,ÕëfZØæ6–[þÏU“z:/Ãù-)ï¤ò]ê )+Íç®…e>óL>+rïY)ðËŒ³ÚH_aÒOØô¥—nú ³aÓWØm“¾¼¶1Õô¥êÚÚH_^aEM_Aõ[:utmÕÛaëå0õ¶_½’J½÷ E«·ÃÄ}Øz;îŠÛ«q{5n¯ÆíÕÕ¿½´Ÿô~«öVõtçÕ7_fXú>‘÷yVõkj¤Ï¢Ð—~uÝÆ+Ñß!ýe–û{¶Ó÷‘gGk%û>J»P¦‘}(û²jŸayÕ~ýLñ55q½×Ûkn½­—…f]¡®“ÌÑ–©ÎÓx‡ÑÃ2ÇͰÌq¯°Ôz¨29Û˜W_³¾ô K?/a^WªÎéèu³*cTÙSu¾&C;§“᜷‘2GÊQu®@Ó‘s4r®¦2IXr^AÎ×Èy)ˤÌVç r< ªÓRÝ^a¥º½Ú5©îG¯°Rݪî¨ýèVÔýT^§SçÔV=¶ž Sù•“©ÔCq¿I´z(L܇­‡â~“¸ý·¿âö×ÿsûËìП&ÇžrZd%~ç}šKÞKX²Œ2+ñ{G~} ¥V♄*,u½„lO±•ø­íªë~ˆÈ ¹¨µó\Ï"†¥ò9ëXU¿÷]İtij>+xŸ“ã<´ˆaiŽóàq?@\ÅõÐÚY…Ýö(û¦6Ò}”ø ©¦ssܬÓÒ9îˆ÷ÉÒn”¸RƤ›î£Äm²é‚â>êq‡š×ÌK*?é’}o†¥¯§y-l²ïͰÒI_fXñ½à«Ç½àæu´f»G}®¦ ˼&Þl% K§zܪmÔë ¿ë¶õ¡¾ÕzåhÃfZ8¹Võý–n|™a©õWa©e«°Ô6¨°ô6¦V:ñe†¥õ4­§Å-¬°ñ5MÅ—Ù7óG”øÒãJ?†Uë%¾¢¦¯ ãލé+(¬¨qo†•Nú2ÃJ'¾j£=˜J»&ÕïSiFi÷$‡¢µ k³ÍEK÷ññP|<ÅÇC«ËñÙÆ4ÇÍé“[éí{3,µÍÙVÍýbÆW²ôdŽ…•,®Í}£÷eKßvÕ³±ìÄs¶ä¹XêÙXrŽ¢ÐrÈûJ+ñ»\•aÉyŽ KûM.;ñÌ®ª{ˆm§_\Σ,³ýæ•Võ´—î~LÖ&²½ÂJu?…u?ÖF;"•ú0ÕïSiOD©/“Çíèhí‰Úl«Ôf;Ú«mâw¼mŽû•÷^a™ÇÛfX~å½WýhÖafçWÞ{…•¬¾ô+ï ¬Ä3#*rœ2_Êf¹&[žPd9Ïg¨gFH9_ṏ†þÏŒßB•°Ê´°äü¨ú-;õÌ KÎ}Ë5á•q¦Ç½Ù60ãÞ,ƒÂ2ûá̰Ì:%Ϫ~®\¯ã¤“x’í“úM¶É|Ö@Ð3-å·þäú_ò\¹n>Ï­U|Z‰glH|y=ç¡ê÷³ûQ…%ëW¡…5ÍÒžýÑ0ùsÌúЫÏJ¯(u­WŸUPXz5û™¼ú¬‚úåÌ>Q½ÿË«ÏJïÿŠëÚ¸®ëÚ¸®]SëÚ(é8JK·ü2§M§ü +êxÐñvª}QÊ0Ò-¿¢Ä}˜}6î“…÷Qû™Ì6“äÅb­Í$ùGò‘Êeî³±T~”¼XÒл¯Còâ2-?ª°T~Ta©ü(y1§Qò¾Ž¨åj²¶\”r5YÿD”r5Y¿I”r5Ý2+•²-ò-•ò+(¬¨ãqû+Zù%î“…]—í/óúóü|Ð÷Aaejë•â{3,ý˜+Ǫ~Œ–ìû(Û˜¥­‡¾l¿õJ¶ zXÉâKßÕ'¡Ó6ÓÂ6·±ÜZ=Ÿ`öuè÷H%uYž[Iý7ÍJôkHŸ‚ô,³’ßc0ƶÌJ„¥î1:µØJ\S_l?k ê–î3-%|™_êh¹·BæÉÔâ3Ùs ¤ÎãÞs¡¶Kêh¹ç£ÜªV”zÛ«ß$¾Ö'®·ãzûÿ³Þn–âxPXªÓ븠ï½ê4Uge[ÕˈdßGÙF¯õZ¯(ó&‹/}Tÿ¿^¦êåž¹^u­ÔROH½-uPU?LF¢RõvUÝÒЩ[üêm–|_äN/ó©zHÕÛfXfœém½oÜì+oï1}PXª}£Ú;fXf»Ç+¬f>ã*,3l5–¹ßÌyõ>ýö–w@޷ɾ kŒÛö’tQa'žƒ$ébŒGXÉÚúy˜øš‡¸=·'âö„Wù­—Áz_¯ë²µåû…åUþëa™ãAu­W™¬ÆÕz˜Çß~a™å¹–j¨6ê«UuíêrOP]kƱ׿> KÅ‹Ú÷fXf=šg»[‰k$.d;å^ÓW=Àr¶µÈªÙO®~oâ¿ßqÛHN¥÷…*\÷ØÞów<µ°d?ªß®õ¨jƒ¹q?Í#¬(u­×±{|ÍC\ׯum\ׯuíšY×ÖÆ¹¯°ÌøKö}²6@*çNÂl£™’­Wmœ;ñk›D9wb>o¨”ñÊçyCyë²ßQ†Êuk>oHž1”·Ó¬ç<{(Y½­÷ßÇçÝã6@ÜøÿlèílV#ì°ãAa©õPë™ì{¯°RM_Aa™ñ‘ìû(ñenS˜m ;o˜¸¯Í4áfXæ²¢ä¯(y?ÝrÕœ6r5(¬¨ãf{"¨ÿ9Ù÷©”ma¤[®F‰û0û"lÜ' ;(îÍö‚Ê ~ýùÒn—ã9.ö}U¿O†Óæ—þië—dYÿ‡ ú^…Uj'î­©ú [+q=tAF"¬ ïƒÖKú¨ ÜéÕ9 GÂ+‰¸^Uçö²œéUX²œªã!õRmFý8EÉIœ>(¬lƒ–y|`†¥§³nñªk¼Ž ¼Â2Ã0Ã2ÛÎÒϧTŽˆg9†Tý˜î>’ãÄeî>«º¦ÞvŸãi§_.§R~§S†§RF…uaéëU¦…%e½ÜãªÂ*ËŠ¶^eÚ6ª°Ô6ª°ôõ2롪tØÊI»nó2_y–“N ÜeKý$ë[(¿5*<ªz>Šk™Ü_Õ4V…»¿TX%|_ì†U×õOÔz&®‡âzÈoºº¬‡¤M'勪‡TÝ¡ê!i–ºu‡ôaªº£Ü£ÒÃZ¦ÕiªÒÃ’þÒÿê´õ~Þ]¥1µ}Që!ýœ½Þ¦N3ë!½þðª;¢ÔC*,ý!½NÓë¡ÂÆÌ‹Š¦ÎqGå[Ά`‚Rù=&¢ˆÏJ7t¯Ÿ`¼B¦iŽœßs*â}©FÂÊ‘¶>+VÁxÓå´`ˆR™‡ÏKå½LÃxïsX¡"ä´ôÏKf.eú ¹þå•×2”iÕ<"ËÏüÜozý3a®—ù¹޹þqÆS˜‰×µÏŸ2>?f<¼çojhnï{ÆöšiÏü|®ÏöÖVü|„Ïk1~¼Ò^fêÛùžG<¨i¼Ò×ô²Ü¹u?Kñk-ÆÏ?FX*œFm)W°AÛêŸûÕfÙ¥¶+L”¶ÍýT‡û…“å¦ó¹åI˜²Åk»Ìp¼ÖÇ 'ËÍG~éMÕCJǶŽ<Ë©G·ãýnmºô@†Ç´õOo^á„ãW^y•]æ42>‚0ÎmëŸ>Ôz8«[úñË/ú{¿iôíòË_aò N˜öª_ÞÔßû…£îŽžžÃì¯tö…¤ã1l÷ضÕç vÔ|*Ë‘åm.Ÿúµ1‚ÂQÛ5¶mbÛÂäe¿zÄkYfêËòËËãøîÜ0Í}|7Oäw¯pÌiôpê:ý¨´Ó& mÔVúQûaL@ú j£êá*Rfo§ÕRž¿ä–áï1\~‚Ú!AË*X–_ÚPû|\À4jŸß6¼Â1§ÑÃY•åWñ›Æ«ïÄl“«tú³Gú 3y~¸½GSíyUnü¶ŠËÕþÿSê¶vÕËsšf|¿n»à²eM*j;ý¨8þ- mèóúM£×ùfùÓ®S.H™ åÁ6íVmù£ÒƺnÚù3`š 7íH:ZÊ3]„IKAÇÂ?'iÿè}‰~íŸdá¨ãåßV“ö:¾þÓ-z¶óŸFÒ¤½ÒÏšTþDyTþ¨ý®öƒWÝd–A^åYx•?R&H¤Ê„þ«¸üQiC¥¯òGM£ÒΚTþèyÇï8W_g¿iôuö;ÎÕóŽß4zÞ s,œÎq®Þž_Õù4(ìdËJå8%ÌqnP8^õW:å¼×²‚êÊø8eÕö“x•½©ç.ÖÊߺ.çõeý?÷“xÕ×¢™FŹ¿Šy?ˆúmx»šýØJ±Æœ&L8/¹ã2|?(  PeËh–W†YXŠìY/ À(LÚxÍ,7ÒÙï²Ô>óËïz8~ÓäjüʯeÕG™à·ß'iû~MÉïq»®~ÚuuÏ夳%hÖ¾z:ìÌxF¶÷¾NÅÌ_y¿²7øIgß…-¯‚Ú?a×!jzó›>Ì:ëç¥/EŽ•‹Øf ZÇTã9¨ç÷y˜uNoAë–,žÍu–¸”8ý­mõs”QÏëé´cõéÛkô<èwNb{çšÔ)í«Ÿ—ŸÑÞ¹Ž{vûpm›dë4¯ß:ûÕ‰ Ýu^ê®ã †Í:Do?§Ó®NÖÞZ®~>=̼ú4ú¼aêô(ÛÔHçø"Ùö-×o{ãz¡~ê¿ö¶ž×Æ0Ì%ÿuêP½mìמÏÑèy_o„)ëôg „iÛëóêë /ׯÍߣƒsq¿ÕËœ0Ç«s9)Ç;Ô<¦Ígeò9–"»#ŸwtÚvª—9«¶Ì1ûL‚úrW—2G•+* «2'Õþçúh‹êÇkÉŽãV—¶¨¾nz[TµOýΑ…-»Âô©êåU˜ëKU{s†ÑUíÓ‰mÑ(ëlNfÜ›ÓËXUî.lî\@:ç’;Z®^Ö…™WŸFŸ7L¿b”í ê“Lç\I²í Z®ßöÆõBýÔ ~mQ=Êý_h§ éè܃<’áØŽéµEýÎ#ŒÑÙ ÒT&tt¨çÊÎã}›MXGLÀ¼Mœç0´!ð˜€yh³éšYÖùµ'U[RÚ•z{Rï3ŒËU[nè}Å~Ÿ¯nå†*3~n[½ÜˆÚïN¸ßça–ë—®Â,×/]…9’Îù¿ÏÃ,×ï¸,ÌrýŽË¤±tò‹ßçaÎïø}žN¾³n~Ó„Yg¿ã…¸¼ŠË«º(¯üÎ'  4 “6­ÞfÐÏwK›L‰Ú&ô;G¦M˜jZ7‡~éÄ|¯S÷P¨kXõûà”^ëa®y×ú˜×ÿgY5ïGÖï 1‡f»ZŽõ·s÷ôÈñ¿ÙŽ § óxöu7êïÍi$ÎtÇ_wÓ®ÙÞ ç©€pV·ôcîÓòMÏUú¬MkN3Û&×fŽÇ4¹îûfÚ¸¹ß+˜¯rSçxIöÛ²MkN£~û»X¯­´a³dnfYùè‡á(Ýìÿg¿çºCõ;)¹VÍif¹Ç¦2„Qî±ßç¸ÓäºÓÌöÙ§êz¼ØfðZœ~Ì}ªî7:¦Páø=×"Ù{¯6·™6dJš}*ûVÒŠW›D¥-•æê*ýÈýïÍiNÚÜùüawšÓÿÒO3Ÿ¡WÒÌ]Ölzg–VïÈ4å^õŽÇМfÔæ‰zGöé¸Íë®Þ™¸¹sÌ#õŽ÷Ì\Åû=¨œ7÷»¾ïý¦™«•õ~uJPú Sï¨òDΈß4ª òªw¼„9×iNãµ>~Ó­W<ûM£Çs˜saΘÓm—9×v¥¿iôíò;/©?ËÆošsµ>¿~{¯pÌiôpÒÉ_aÊÛtËátÊç vcØr#¨?Ík»ü¶9ÌöêíIý}˜íõÛö(åUmìWsÿ&ë‡IµÆïó0Û›lÿmW²ý´½ÉöoÐöúm{˜~*¯Ï¼ê¯éÔùls¦ïK¯Of^9-íßÊÍé¤ý»,d&ÙöÍ›l{ƒÚEɶ7h^¿í Óï—N`²~ å>ìÎ;¢mõ÷a–ë·aÚé´'ÓéM¶½AËõ[‡¸þ]»ë_³lÏõªgî›Cóz¡Ì|§‘ç=Ë9¢œ|çùïr K^¾sMKA¾s]K˜cƪë}<†¾}˜¶S^I¦L[˜ï”W%nyU”n^)÷ŠóÝrÏ-KòÿÿÊö0ÇÑrÞpL¾sîpr¾sþpv~\NÖ¶tÊœ am•Wê˜T¯ß—gÞo˜¬¼úÙþ7wÞöVôg_$«‡j»í,žëªÝ®ßgdÞ'•¬Ý.ÓÿìNßÞò¾œ_¹æ5 3¯W9'Ã0mo©GäZõÙîý7r=ûk×SYç yýÖÙ¼žS껎îzJ=¸Â½Þ^®ß”k&d庉¥×®{•Wr-‡\Ç!×sèïÃÌ+ׇȵ!rˆþ>LøwúÛÝyÇE˜WŸ^'Lùœl{ƒæM¶½Ae{²í š×o{ãz¡~곬óº¾Bæû1ß #ÇoY~Íy½®»y—»óf»ó®ð˜×<¯/ãªÍœí–#j<Ì5ªÝ+mX)CÔx˜k<¤üY)m³-œ{+¥¼l¿ÅšYN†¹†¤3ÛV´…sMÛH†1s‹¸Ì‰Ëœú)sôk°Ô5Yúñ²„‘m%®½ÐçõºæG¦—òi¬[^ÉzüèQæx] $ó®pçÍvç]îqüëu~¬-ù±Äò.s¼®’¼,eŒ”5RæHÙ³2ä±óê^æx]¿$×ÐV²Y[ZV§-2§ÿ–q™—9õsüëu|ô>Ù¼AÛî–×¾:v޲OýŽaõ÷ú1¬þÞïØYï;Õ—õçr˜Ç°^×Ëù}f^}Ø^›.Ì5xRv•l™8þ•2vm9þõºPÊyî²<Yf^)£äyÌ{µ«þ>̵…SÝé{ºóÊrÃΫO¯‡× q½P_ý¢µùÞÜæ :%l}f^¿p̲]?·¥Þ«xý¹mõ÷æ¼^×ͪ8þY‹c¯ç`‡©Ôçaæ5ëõ}˜ëo¥¼•z@ê)c¥~zbm¨¼®ïÍpŸÇ_õLQí}˜y×uŸÓ/e”þ>Ì5ÃîôO»óþÙ6ü¼úôz8q½× õÑG‘ë1T}æÐ¯ŸA¿>\ïgùdÙË=ú(¼®×û7²Ýyôê£ðª¾ sæ:s)Æl™è£¨zÒZN†9G_Æ÷e[:Ï™µ¥ûŒ¸bµ*s”7QË«º.sôrF/üÚnQã2ÕxŠ“dñµ>ðj‹Öö9zý¼¼Þ¿±:_[«Ÿ——rL¯_U×P…)cõrU/oWçsôÉγ§s~u¬Â^We{ãz¡~곬óÒ̇9¯×0×֚ש¾Ô6qM¤z/íCõ[3ú{s^õû˜yî¼Ù[9çÌdzyî‰Ì+Ï>äñ»6í·ª9”iåzYsh>×®óVγí*—çÛ g¼´é˜áè܉Ï0µÓšYÆš¿½"mWiÇê︿Å2ÊxoÎûc'gúYî¼9[;ÏÀ“éå9xÜßÒðú=—¸¬‹Ëºº(ë¼î¿º';Ù¼¹V¢ÌÓ‡a®É—2¦ûÖN¹%e”[ˬpÇÝ^Ÿ„×N\c ¥<ª¬ë³µSöI™6–÷³¶vʺ¬møn§ ËpÖ6kGYçuÌ.åUÖ¶NyÕi[§¼ê¿m¸y¥|+ÙÖ)ß&lë”{3¶Ëº¸¬[ue]Ð0Ù¼^å\®U³¬“²í%·¬“¼(e_{·}&åÝX·œ“òN¦{I+¯ä;s(ó–Ø5‡rŒ»›6ï¢måý¸­æJ†Ù6aûÎNÙ×¹³÷oX¬-å•^FéeW˜yõ2J/»âòªv˨0Ÿ§R¾¥ZNšeŽW_™Þæõ¦Aóê÷IªëzÚë•N¼¦ÏAÓ$‹çTö—YÆzÕz=¡×~óªóâ§úsHôyÍ>F½ÜÒË9¯Ïýæm¯ÉÒÍe{ýæMe{½ž—«§g3{Í«?ÏVOÏ^óšy"J<›óF‰g³½%žÍy£Ä³™÷£Ä³9o˜xóÛsúómÂüΈþüm}Þ0¿¢Ï«?3'ÌrõuÖç óìý(ÛkÎe{ƒæM¶½Aëì·½qý[?õ¯Y§x•99–÷ïÇ™m~iÃJûµ;ç…mÚ9¿“7Ær~3OÚÞÉ~¯\ÿm™O)Ö˜ó¦³\Õç¼;¯„‘ëÎÛ©Côß=ËöôËö0¿Ó'Ï6PÏIú›àq9™~yUåd˜òÙ¯¬ÓËC¿4é7¯^ú¥É0mþ0Û—j¼ÕæqJ”x6ÛÞzù —9^ýWAóêeŽ^ùk„fÞ,~óúMf¹~Ó럫¾ ³.“>éïY쎫ïkß…™WΑÊ÷rnT¯ýê£(ñ4M²x;}˜åF‰gÕÎH%žƒæõ‹ç0¿K¨×)a~›[ŸW¯Âü¾¶^wèó†Y®>¯¾Îa~s6ÊöÍ›l{Íy£loм~Û׿õSÿúkèyPoóË9õû7f}¤èÇ5z{;W¦Œ•ßÚ‘û²åwwôßÈ3¯ß:›çDy†›Ri%ȹ%.Ûë§lóûúqʨÇ*q9¹jÕU¹šQÇÃdË š/Êô^åB”ó×µ}¾;èžšTîͬÍ4S[unm…5]¥“k3L¯ïüÚ ú{½ ¿Wíó­ú³ô÷é¤C}}Þº¼/#•ô›nùvúº.Ã.«¶ËCóœ`˜t˜Êôú²¢<+2êôé¤ÃTË®TÒUªåa*é*Õò°¶Ã *SI‡©–‡©¤C}}ÞtîŸòF™V?ÖHeY~×tù Ã,Ëo~¿0ÓÙ.¿eù…™Î}gr\êõlX}}^¿ûÔÒY–ßó´Ë-çÙ rmà2Ûy6C¯Îá®ë«ít˜Ê²RM‡A˪ít˜Ê²¢¦Ãtî×Ö§Ñçõ»öR¥Cµ¬ºL‡éÜçXŸ÷EÖÅ}”~×d¦zïd*÷l¦{g”ø÷{~Ø8Œÿ~Ë ›6¢Ä¿ßóùÓ¹OÖo^¿eÕÅ}µõyýs]\/]Ûù+•k³Ó½–»>òW*û+Õü•ÊþJ5¥²¿¢æ¯ºêÃHUm÷o¤s|™Ê±eÔãʨÓÇý½ußQWaFMWé¤ÁÚ 3¨cmëï óÜ9ŽãŽ÷Œ÷rnYÎ1Ëùeý½œ+–sÆ#÷až“ á˹L _ŽMdYU×ÀºáËùhY–œŸ®Z–•x–‚þŒ³ÈKŽö>r}˜ËòJ¸ÙCuÌl½žQ!Ã0Ï|À°¿ô0ÏpÃ9 +×g™]˜ŽïÏpÃñ '0œÃpÃìíøžãÁþÛÕ<׿Ìc(çûåùhæ°ÂvŽÍ¡ì£aÜ¿÷o¬ýæµ^Ï)ëà\C!×Rèïåz ¹®B®©ÐßË=¯rŸ«Üóª¿7—åõL Ò¦Nøò;²,ùí’ñÛ9áOÛÎYÖ¼íל›Ï/‘eÅÇ•ñqe|\W¦;}|\WÆÇ•ñqe²ãJó˜(×c¨ŽµÌ¡×g9>aèۓʲd}³=†ê™2æÐ<†õzv–ÿ¬ =Ö¯ƒsÜÓƒa³®N;S~Û:·«sœÔ©«ó›×æ3¶Ô³·ÂË«GWç˜VŽ=åY^£ŸèQàÃŽb8£À9¶]Á°Çö,‡;ŠáŒícXyö׊ícá;„öW|\WÖ÷q¥ß3ØGíàëurŸÁ.¿Mé÷ûé^ÏR’g,¥³,9®œ´ƒs\Y¾ƒs\¹dïg/MHóyqñqe|\WÆÇ•QÛó© SmÏG>>®¬ŸcÀø¸28œÿ÷ãÊ6†~ᤳ,õÎæÐë˜Òëùó^Ï)•ãÊfÝœãÉLÛ9¾ÌíæKVµyóöªSJÛWŽ%å˜Ò|¾i˜g“Jû¶S7çÜ«ü“íÑÍi˹×~Ýœã¿Ýœs²~Ï2MgYÒn–s¾C»9Ç“£º9ç|¥ý-Û1®›³]»yß›üßïVkêcp¡§—y %K<†ñqe|\¹&Wzý¶—KÊñKÊqŸcÊqŸ×3ŽÎWFY–KÊq«KÊñ¬cÊñ¬×3ȽîC+ããÊø¸rõ8®4Û{f;S7Áð”A¶÷Ÿ\gÛeýåw²§ts~ UÖÿt÷w³Ÿè–Z{^ÉÒD]ç‡5Oië{»Îj}eÝeÕúʺ7"®³±AÛšÛþºa¦Áœ7åF‰gsÞ‰Úü2ïçÚü3µe.5Ö1êöšóFÙ^sÞ(ÛkÎe{×Ä|$m‰ Ëi¿KûDÚ"Ò®•cŠçùþm|‚ï%nТ»eµÃ6(l̼MÑÊ9w“·.ó¯ëœséÉ÷çãyüƒž;2ŽçñÏŽÕã5jÚ0ç’6Ìy£Ä•9o”´Ñs'Ú~¸t'§½ô÷ñóNN»i½-k'µ³Ó~ºˆá½xcçšó~Ïg­{XÖ8çã.¼ŠoÐbÚ˜8d—53M®‰eû9Äõíxig}ɰIOòIOgÿÈðLÜÒÓÙ¿Ï3\Œ†»ÖœwK>Û#vuæ•}{#ïŸÙÕ™÷“]Ý}ÛËû7ï š7Y\ÍkNk†%ÇŠl¯úÍ9žíÛŒíÎw}{9Û¿÷Ãx]¯53=˱›¢ÎŸç±B…–S®>Év½Š¹½œòõK†¿¡aïšóʉuü•á†{8ë¼ Ãö(¯:ñ]”ìáì£ g`ÑÎ>ÊÜÓ²òÑoOgé#8Çw8Ÿ•îéÌ;áB¬DÞ^Î~íÃp(ÆcšFÒs9à Tîåä…e 3ûXVN'/ä1,@aŸêÏ”yË,§Dú%Ý1M±L‡1(E¦¡\#óVôI,·’÷˹7ËÝÛÍw P¸wzi²>Óp}¦ù¨Ó§'QÏ龜zþSç;ts éÄ¡ä[•_%ïÊqºÊ¯’wåø]åWɻ鴋ê³UŸí®¨Ó§‡QÓa:q5¦‡2JƒÙn:TiPÒ£¤C•%=¦ÓQŸýõÙORŸý*Q§Og=l8·mu# éì¯tÓa]–½é쯇u•eém3Y–Þ6K§ß¬>ûÙê³_®>ûñ곟3jþJgEÍ_é쯨ù+ý5Åíù¸=·çãö|ÜžwÒ£ÙO¨ú­¥[ú‚T¿õnߵ귖>lé*ÚÛ²FbâÞÎ5#3V"«¯sMI'†ýQÒ·æ²&ðÙ ,êë,+sËÊG¿}œe gXŠéû8׊,d¸yýœkFú0ŠñýÜ{àÎÊ~‰>ȲvÑûäe»d{Ô¶U] Ó7±m²]²=jÛÌ>OµMÜíRÛ”én—Ú&Ù>YVû}-«Cöu–5ŽáTTìë,k9ÃÜý,«×~qý×_«GýUn¥~î¸>Ï5G>í’ó4rMžôMËu£Åä׌A)Ê0 卨/½í’{&K×aˆJÂÊÛŸå¡ •ÈëÏ8ÊPÙ?½sîõy޾>Ïé×ç5Q§OgE=®LgEmo¤³¿¢–Qé쯨Ǖé\ã!m€¼hÏ`èN`¼ 1ï§ °‚aû)3LoYÒŽBã0õ@§UÁp9rrÚQ½cìA‰åôt—5…Ïæ`ÙAÎùß6EÎõ =*rÎa(×'È9ÂɼŸ‘s°euÇ@ŒFfaéÁN;*eeºcFaʱ͵¬Î(ÂHL<4nGÅí¨5¿•IÄäH»˜IºžƒEø+‘=€r8íŒLÚc;í ig¨6‡jkôtÛÏ»í ikHÛ£óÆL¬D¯ÃÇL¬D¯ÃÇL¬<<Ík Y·"£½Ž |À ÇhŒÇ$L="½íšÉü+Ñk áb&V¢×‘Œc&V¢×QŒµöWÎdÛúMø>ˆmÆøÁ„q ó ×±¤- *&maôq¬Ãñìt>ùÑócø‰Ìñ'1ÿÉÌ^C™ƒN‰ËÞ¸ì]=ÊÞ¸6îƒ]ú`Ó¹~¸>¯7Ž:ý9»$®”yU¿rwÝTÿ²¬¯ZG CÖSî-ü‘º"gÇ 8Ìyêh†e˜…¥ÃÜg¥žêl“,Gm—¬ŸZWY?YÏgÜu–u“åÈz~â.«€0`&¡KNu–Ùl¸³œÎ ‹†{?ó9,¿gMû1¯{Ô©ûœ•Žiséä~UÜǪ3¯ÍÖÛor¶\}r¶\¯-×jËqåÈáÎqØÄáÎqåL†•È:Í9®ìİ?JN‹Ûq`õhHŸ­õúüú¼ž?êôél—Ì#ÏHeM³œ¾ë §9×JO>ÍéÞÎpæ–Þvå¹Ëu“e.!¼åÈá\Ç݆a>º£ÏˆôîkúaaŒÂ¤î³ÍF8ýCKF8ÇDÍN§œGÑéé-«ª<$Œ‰˜yºSVžîô{e•¸å!Ãþ(ÁäŸA¼žáõ9“õÁ³ˆŒI\œMü£û9Ä=œËúaä(Â<0>a ÏÌ!£™c/dþ‹˜ÿ¢¸ìËÞÕ£ì5êr<{m¢NŸÎ½9Q§O'NÌc¶dãéÄ¡yÌöž‘nçé68|8·ú¹I‡ú¹I‡ú¹žîSžbÀ§ì]Âpä%¬ó¥NY;aþe”«—9eqŸ±”­r9ã—;e®”½R½Â)c¥¬­*s¯tÊ`)‹¥Lž|e‚ôUæKx/ϰÍÇ´˜Œ%È¿ŠqLÆT0MN¦e¾R†ùWó=&c ò¯a“±äw:—,K–!Ë+’egZLÆä_Ë8&cɵβd²¼"YÖu|ÉX‚üëÇd,¹¾~ë”5¥ìUÏxRäYfº±†tÊ^y¦G~©euÁºíœg}4c¸ã»—:Ïúèǰ'Ÿ\ZsYQú7äÙ!GÆ ø³­óL‘½ä^@ÆÏ.už5rà >»²´~ûÙÖ”þ¨¨i#þ(I *Hš´ Ò¤ I;*ÝHJgYQÓF:÷§ÜÞ¶º ã AË’mÑ-Í­NâK'q¦“xÕÝ3¢ò±ºa©›—Ÿp¯Cðe¿\šxn‘Ú7]JùZöëîqå:‰7µod?I¼©}#ûIâMíKÙ¯æ1‘ê ÜÒí[S}Òߦúؤ¿MúÙä¹Ò¥„1 KçN¯d˜wuã Îó§‡2i7¤wo…¹ï“¥•t–%ûA÷´ÁL+éÜÇ5/§³¬¨yY¿ž·®ÓƪnGÄí¸½·7ÖüöF”e™i:YZ–„ÿyn¢°TËc²<µ ²=j;T,ÛògÛDÝ|”Dzô¼,ËRíYžÚ&µ$mHšPéCÚƒØçc0y‚ÓÞ˜ÍðGäÜì´7º3ˆÑ7¯úvDÜÞX}ÛåVê×:–7¤\"}MCÙŒ3¬@%–!óÒ#òPpKz˪dY…„Q„’¦”‰2Ä”¢ Ód¨¸%½ûSÊÖcZYï[YÊP‰¼‰Œ£ •È»ñÛÒ»ß!j?@вj» è„ÚîHç~‡¨ýõy¬—ÎýòÌò2Ò×,,½Íy¦yöíL‡·;Ï6ÅpÊoOoYòÌò%„ÑìËê|‡óLó"†#1òló™ +‘5‰ecúÝéœwXÈpè]Ô_w7m—2özÜCÝ„÷²Nu˘L˜èt?a ßÌ¡2?ÆMaþ‡˜=^õõR\­õ×lÒÖ4ê­¼F¤w,d|)V Ù#¤AtBô{$½e dþiÔG…R±¬¡ŒÂ8LÄÌÀl,|$½úk©¬÷T– ¶o Ã¥èô(Ÿa –¢ÓcŒ?–Þ=tQ+ƒ–UÛÇ•A÷ëÕöqe:÷F=®¬Ïc‡)¤;÷XH9?›÷§±ÜiÎ=£ž`žd;Ÿtî§èôë†~ÓIÇú4ë…qÏŸž%<ô˜A8øá`Ôó„ñª/¿ãr~õ-çã~Ѹ_Ô/m¤s‚´©'RöÌDå N›:k&CôŸé´ÁKNÀŒ™é-KÚÔ‹#óEâèE§MÝáp”¾è´Á§3\ˆ•/¦w¿ƒôæ½Ä1 †¾äô'Žg8 ó^rúW0lÿ2uÅËé-Kê 9ÖQÇ=RÇȱ‘:N’:FŽÔq»ºÞîAHçYñQóW:Ï–7—e†m.{ÈË êYôêÞN¹Ça˜ö zõLúÍÜ{:³Æ1ßԗߺš… Þ/G.܉|ß«ÜùÝ«âòU_߯õòê[/Ë5ðŠÉuðr=<Íêëåû¸×¿Ëuðr=½\/×ÇËuòrLTÀñÐ49&â8g,im&c:fa–`y¹÷²d9E–s¬5ݽ¦_®í—c0¹î²{íÖ+ì§Wœc«|†ÝÑççøkÜVÎz¨uJçúù!.¦¢Ë‘û*y Å‹)˜ƒe¯/Kòq›×h3cÐkNÃp2fãGäÌb{0£Q†YXŠì×Y? À¨×Óû}© 'F9–¼îÔÍÞ ŽáTT|èÔËæÎ£®ž—Þo`I{¢˜0J0fžÓÞ(eX&áÎsÚ#å +P9¯æ³#–YÎofɹ7iGÉïeÉïf-›ç´£2ç;¿—%¿›UžU½•3¿z;*o~õv”×ol0Má|g»ä·µŠæ;¿µ%Û%¿¯%¿³U<ß _ß®’ùÕ·kÌüêÛµªëÀÿ÷ºÒrÚCŽÇ´Ò[–lÇ<ÂXö œí(d8ã8Û=•a–/¨ù¬{õ\çî³ÕsóÝg;«ç:Ë3že;rZV//t¶c,Ã)˜³ÐÙîe Û|lY=>NoY²ƒc &ìlÇl†?"çg»»3ˆÑŸ¬ú:0®+Wߺ2>6ÍýÚóñõ‡é_XŸ×:]§WÛÒY–ùüÃdÒyÞrû­ªë¾uuÒV×™Ï[–óÌr¾YÎ;ËþQ×ʵ‡²ÿ®sŸ¿,×3Iš/£¾…¥Ÿ8i<ûSæÃ€OÝûÚNBù§é-KÒüÂh¶È²:/rÒxј¸È½¯a%²>[õu{ÜX}ÛAue”r óÚž(y¹Øªnx»êfi¢æ¯IŒw"ßôG FɹT†3°ä\êbâý;ý¢Ò'ºÄí-Ó–§žË®–§žÛ®–'ËRËéä.K-g‚»,µœLeÖ–'ËRÛÔW»VZ-O–¥–Óß]–ZÎ wYj9ù‹ƒŸõ!u±Ô_¶«H,Ç'RU­ó—bº»î²Œ… W"ïsê5 ýÜYñŸ¯ÚçoÔçsEâg}ÄÏúˆë¯Ú«¿Ì~ÑŠ–ÄÊù|åÊ2TRîa–¡à ÆQÞ„vÓ:|Îû1¼_ưàK¾Ã4,CÁWŒc–‰%øßà[,Åwø?àGü„Ÿñ hX.û¿áw,ÇøaþÆ?ø+¥-jÇ}°q¬o¬ùœŠe¶mɰ­œL»ê9e ØV9ä9E m«%l+3˶J‘ר¶¦¡°‰mU ¸©m-Øf„ÓܶÊPÐÂþo9²LYV9Ÿµ$¼–βJ² ³a¶r–•ךpQ¸á¢8‡p1f]Â]pQ°>놢6„ƒ’ cC{•—ßq9¿ú–óAצ&—c\M²qó8E—c“víäØ${«„ªã;AŽMÆvLc“‘ÌãÕ¶—¶wÕoH’/¦c¥{œ²PÞ#3§ýž·‘mõÁPHû}<Ãi˜iï¯`Ø>—üˆtž«?„ù—cl[ÛjÓζ&£ûƶ5 ÚÛÖŒì`[YmkÌ~›2˹ֱÄr~oF®s”ëKú8÷‹”º×9ÊõŽ¥ÔçÀÎ[Æ0–…>€!‰±˜°IzË*dÅ,£ˆaËLxÓ1 ó°Ë‘•ÇvÃü½õ[òÿ|í·†¸¿ ~+@~7 Ÿù‡HX‚üMÇd,ÙTö)㘌%›­9åáêVÞ®Måùê\_¤rÆÚrH]‡¿:篺Ϋ󺥓÷åÜ#£ûÍõ·¢Vç¼õ·¨Òm‹ÖõyØ(¿'õÜkmåÕA}ÖËu~}^W°:_·5=×uøõy F}ß[º&×ûõ™7ëz}ÒÉû«[½_ßÏL‹RWÖç5Q«[½_Ÿ÷C­M÷[­Êû¹jû£¾î•ðÕs£U¼éËRËPË4·EmƒÚ&YÙŽMÜíªÏ{Q£žo•s3£N% @ÎÖ–5‰á”ãÇN–Õy8ë„¢á«÷½®u~}ÞK[×á×çý³u~}Þw\×á×çµkÓoªF­+ÓÍ/u™7£nKºåØš|Œ\Ÿy¿®‘Õó G·«û6yÔzm}ŽÁêÖY×áÇç÷ãóûñùýºË«óºÅç÷ãóûu݆Içž;3%“QnDéÜÓWõìKMÿvÕmccUשCu¹†ú¼g°¬Câ÷Gä·HFwp~sD~kD~wdVç·Hä7Iä÷H–Ê÷´³±¬‘ :ZVÉil7:!›ñ,y®¹´+‡§vO¢ß½{ê÷¹Õïu/wïËšêÞ«•¿¹mõÃpŒÚ”e£”÷Ó±+‘—o[ø¼CÙŽ¡ Ç#¯m[yßÏYÿy¼_Áû ÛoaWmc!Ã!·…s²\»<•÷XŽÜ-m«×–Î5ËÅ Ó¹q,óOÁHÜË~YÆû6[ÙV ÂÈ>›¼UÍmŠÙ|.ûáG†9˜æP¶±Ÿ³Ÿ¢ÞçØùgaÀÖvÕ5Øê^ ¹¯Bî§P÷RÈ}r?…º—Bî«ß]Â|#·±­¬míªßÀ0¿3ûò›£}º§²q‰±]ÙÖÛšŒîÛ³l ØÁ¶–`d7Âén[¿£sïÇt†}v"Œœ{E†ìL8ÛùW¤Í.„…î=íj¿ÏS×ψ¿ÓË3k1ÓÏêËü¼¯Ä<ÆKï„þ}c¹Y¬ãRdïjWû0€Qc¿I ˱d×ô¶%ê3(¢n‹76ëEEä8s$ÉòrœYÉ0«·muê]s[êò¹²-ýYf &@¶eÃEÈÜͮږ|†ý0|7»j¿—2œŽ…ý¾’aÞî¤;È~Êp<¦ížÞ¶D}^GÔm‘ý>u\ö…vÕ~/d8ã û}*à ,/Œ¯çOµÍ_×áÇÇûññ~|¼ïÇÇûññþêv¼o¦dVçãýR«ºÅm«{ϰ:ï˱oî§¢rŒ<–áÌÙÃ9n^Æ0‹6h›=íUz¼ŸìYž*ÇÒ.îÁºÑN–c y~h·í,ǃø®ê¹£ùìÞOÆlüˆœ½8&Ä@ŒFfa)¢#§u¼¿Ðª:¾“ã•ì>[³-rŒ'Ï]•ã9¦‘㾓絖s 0€÷£0 åX‚f{s¼…"ŒÄDÌÜ;µmIõÙPÒ§¤ú“ƽœøíZéO’¾%éSRýIËÝc1yÖ ’qu_¼Ü#_ĸº/^ÏçMÕuøõù<«º¿>ŸaU×á×糿ê:üú|ÞW]‡_Ÿy?j;9ÝüR—y3궤[ŽÕeÞŒz­u}>‹/ê²¢nKÔ¸2¯¹RýâÒG.ySõ‹èö«~qi›Iÿ±ês/pûÝUŸ»ô¿K³ê£—v™´Å»#ïžBÞæ\s5šá@” s®¹ZÊ0ûTÚ Ãœ¼¯úÁGº}áª\úÄ%ï«~siîê¾ÏÕEÜ÷ÁÆ}°«OþŠû`ã>ظ6~¦JÔü»¦×ûñ3UVÏûÅâgª¬žuk}æÍº^Ÿø™*«çýbkÓ3UÌsIuÙw!ç_Ô5}ÝëúÔ5}r}ŸœQ×ôU]ß·mâzÇ,÷šGu½£\û(×Ê©ë#åZÉ m‘ó,rœôÊïV‹a(×ÁI_iI_çüžüFà·Tï'™Ð×9·'ý¤ÓÜkáôm‘óFrÜ ¦›º¯Uu>©×~VÕup‹øL~kH®{ËÜǶò÷q®}[ø¢s½£\û(¿SÔχC®™Kçþ}¹ÎN]cWè^g§®±“ëíäºÎõÉÓÊy0¹.Y®¹^ȸœ'[ÉP®·–k•£nK:×ÁF½æ6êu°Q¯Ng[¢^su[¢^3œÎu°Q¯¹zlÔk†ÓÙ–¨×ÜFÝ–¨× ¯êcÁÕÅêÖvû“ãþä¸?¹îòãê¼nqrÜŸ\×Ç•åì» Ë¹.µ•–ó²™$ÀçYç·ñ ¾Ç?hÑݲÚa”7¤í#ÇY(Û€q†¨Ä2dÞÂqòPpK݇ŸÎ¶T²¬BÂ(BISË*–!Æ e˜&Ë@E Û5|ó÷àòÖ% T´fÞùxÿ çŽŒãyüƒ²õ˜VâåV–ƒ2T"o"ã(C%òncü¶º¿>Ó˜\ϽÌv~;§‚a1Çö%ƒR”aÊQ±_ôýRŸi,ê¶D«tÒX^?Û*F*‘·/ã(C%òöce¨Da–®ÃòQɺæíÏö  •ÈëÏ8ÊPÙ?z«Ï߬ëðëów ë:üúüíº¿>ó±®Ã_›ž=˜N~YÝž9œN9¶º=s8ü²º=s8rlu{æp:Ï\Ýž9Üs'Ë:—îälË ߯Ï;9Û²ÞÎl;ŽÚÙÙ–‹Þ‹7vvúÙËh;ÌÂÒÛœþåìÛ™nwúåG1œ„òÛsIy°| =Àé/CÌ;Àé_Á°ý¬ïκ—Î'®°p¾³î+æ}D9Û:”áxLû(½m‘þâ%¬c³;ˆÏ;œþå"†#1ñ§_~&ÃJdMо-²Ÿç±Ž+Ð~³Ÿ Á¸Nº˜Ê°ËÔï¶È¹¤!¬ã8L=й§ª‚árääÜsÕ‹a1ÆT¿û%j‹º-Q÷‹ù›Ë ½‹ù!ÏíÉå`c zÜcU=·gཬFÝgU=§g":ÝOçô,ÄЙò\ŸÜ‡˜=–6¾mMCaÛª@ñ¶µ cäxà Ž PPd[å(:˜ã”b[™‡ÚV)ò0? c~ÎüsóŒ¯Oµß²®ÃÏYÄç,âsñ9‹øœE|΢.ÎY,û Kð5¾Á·XŠïð=~Àø ?ã,ï´Åh7”‰£p4a0ŽÁ±(Æq8'`NÄI8Cq †áT ÇiÓiŸüÆr~Çrü?ñVàoüƒ±RúíÀ>ØiŸ³¾%´‹wm¡JÚ} ËP)C£4ïLÚH(C%òÎbe¨Dÿ.L3’ÏP¹>aËygóÊP‰¼sGy¦aX‰<2̲/˜ÿ\¾C–}Éòæâ3Ä}°qlÜ÷ÁÆ}°qlÜûÿÓkö)-³mkL†måd:Ï‚.cXЀöDçYÐE iS ¤íÚ çñŠÎçs”\`[™£m«yÒîAáE¶Uq‘ó,èâ‹i{`ÌçYÐ9— .už]ΰè2ºÌyös)òNcçÙÏ(nJMgEç4g~´°ÓÚé+Ë2/g™—;ϱλ‚å¢ðJç¹× ‹Ç±lŒ¹Šp¯fÙ(¸†0Q4žðPr-á\G8È»ž0®¾-j;d›d[äÙÜê9ݲ-òlnõœnÙy6·zNwa)a£øÂƘ û&ÂFÁÖE7Jn!œ[ y …·1?Šog~Œ¹ƒù'1? îä;–QœÃw³.ß­'íY¾[Ÿ°QÔ†°Q²ao÷õ¥z¼_×áÇ}}q__Ü×÷õÅ}}q_ßêv}òì‡I{M ãNÚh+3^ÁûJ,Cî#„smä!“LPÚe¡’D6óP–Éç…(ÂJÆ‹–` êóúä¬k!ëTÊr Ø–¡Œ—ñ~¼Â>e¼ ÃrÆ+RØ–ú¼>y)ëZ)q~7ûS¦>ÃJä•1þ(ËgX†JäÝÃt(ÃèÌË0ï^>ÃÊØ—a%òî³­™‡×ïõÉQÓX!qUH¸ÅÄw û¥×¼g½K0£/eX†i÷Eß/õ™Æ¢nK}^Ÿ\Îò2'³ŽƒrdÞÏ8Æ ™0Ž1(G惌c%ë=†a92§°G². Ç ½ŽŠžÆÒ½¹Çâè&â‚s|^Ìû\ôºÉ9>ŸÃp,¦Üä\Û“ùmå£ßCν¢Ã<تºï]®í‘{ÝKùlúCv½ß¬ž_*÷èK_†zÞé ÷~~õ¼SyöiÔmI÷~dé‹Uý²²-ò y>wþ>ζLßÇy<«»>îGÎ]hU=ß»x¡³ßå¹àS0g¡³ß—1ló±Uõ\ðt¶¥>îGÄ:V=wýcg¿ËóÚüØy–ƒì÷î Bž×>å1¶éq¦;Êé»?˜vâ1Ä/ïç˺ð¾ÃAÅ–5éxæ9ްxŸÍû…Ó‰÷§-kÆ=C>Kxè1ƒebàsÄF=O„ô¾t3ôa¶3O`žG(·§J½D\œÌ|ÚÖl |̶æ e^†£·­fÓlk":=Aü ß“¤ }а0n:á*ðæâCÌÃ||„Xˆñ‰sÍU§Oy¿ŸÙU×\uZÌûÏQiW]sÕé Þ‰¯Ò»æJú.:M¥M† Ža;-¡ …)XŠN_3Ž)XŠNß0Ž)XŠNß2Ž)XŠNKÇ,]ê\sU´ëñù£‰sÍUÁ—´Ï1 rÍUû¢Ó¾ªÙæò{©WÖçs®¢lK*Ç•kÓs® ÷%^Ð~_g[äÙv·¯³-¹û9Ϲ[¾¯•öqe]?ç*ʶD=®ìôùíòÛOä·_ˆÛß_ÎøŸŒ¯`ü_Æ©…§ddXKdX²2¬¡MoÆx Æ[1¾ãë2¾>ã2žËx;ÆÛ3¾ ã›2¾9ã[0Þ‰ñmïÌøvŒoÏx7Æwd|gÆ{2Þ‹ñÝ/d|/Æ÷f|Æ÷e¼?ã2^Äø!ŒÆøŒ™±ÊVñ±X|,‹­>ù+>‹Åâc±ø7 ¢æß5½Þ"þ ˆº¿>ó~]×­õ™7ëz}â߀ˆ¢®ë}ù-lùMlùmì¨×]Dí‹«ëðÓÙ–¨}qu¾¹-QúÇ¢>s¾®ÃOg[¢>s¾®Ã—ß\—ß^—ß]—eI?²êS–eI?²êS–eI?²êS–ôºôè +{P†UIߎÂ$Hú.g¸ÍgTÝcÕ™aFBÈp&*!÷XeÃ|èIC% 'È{Hš“ßYÄûÌc3ªÒ\>Cù ’~ e¨}u[¢.+ê¶D+s¿¨{`'¸×)ÉõIêZ%Ù¹>I]«$ûXúqUŸ®¤ é÷U}À’&¤ßWõ˶ g›J1ýXg[2\‰¼bg[ú0Šñü }Þªÿ[òô‘«þrÉ?ÒG®úËÍý²&o UÒ‚ú1¼äÔ±¨ë“ζdGu[Ìö[2%vBU]Ƕսd(°«ëסº†2»º¼üê ˬêºo]]û­ªë·Y‚äýÜ’ä—…|~]/çw $¿Èï?õ•߀âó2¦›J5ɳ¯àýrä–ãÅ 'ò]/†“Y¿iäƒyXÙŒ·?.Ã*D÷½lk ãKa|ÜqN¹5‹üV†¥Ÿ8m˜IŸ’OQþ©S'0ÌÆ€Oëw[Ê)+¦²ŽXŽ%ŒçŸaõB³½mkÒrîÒ¶Š{¼SÆ7[dYK>u~³JÊxùm«™ÈúÌ©Fò¾­ú~ ÕÅêvÜŸKŠÏ%Åç’ê.?®ÎëŸKŠÏ%ÕuŸ’Ùoe¼½‘’›mådãÒvo¦I6ž§)0Æ¥-Ü®]‚´•³·JC†+µú3Íâ¶ Û0þ^Û„˹ÇNÒ‘öb‡„ŒçvH(fšb;a8áí˜0ˆñ‘äXO‘¶¥ü6§ü.§ü>§´%WÒ†,Ýж¦£ê8“ñ…¼_‰›:íÊ©nÛrÒ¦N;RÚ“Ò–µ©ÓάpÛšòÌáÛÝãX9ž•g gõµ«~µroç·9;1Þòû©“X^a®m­ØÈ¶Ú3ÅøPÞç¡0>áxLC÷‹Ù ãÜÿ²„áÈKXÆ¥#œCyÅ0ÿ2Ž‹±ü,ŽaÇ2?†\N^¢-ÛãÚî8$ÃZŠQ'Òæ=)ÚˆN'gX3Ðoh†µË™'ÿ|Â<ð1ö Ž."ýaì… ¯$ÜÑ„ËÁÐS86À¸aVî©ÖôÎò0ð4–‡Q#XÞé,élK§ÖýÎ`]1ôL–qg±ì‘,=ÎfÙxNôm¾Xޱmm«M;ÛšŒîÛÖ, ho[K0²ƒmeu´­ (¥RRä:Ø2xJ‘?žea † ÿZƱC°”õët.Û€)(݈Ïv•aå´$^NÁRt:ãÂÌi@ø(Eþu„‡%‚üëÇ ÁP時¥èt~†UÔ‚ùQD¦Êø,E§ XL&.Ù–%W:Û!Û”?ŽÏ±CãX‚!˜ÂüKÑi4aa –¢Ó…Œc –¢ÓEŒ_älKU¼5p¶)ÿjÂà Aþ5Œc † ?cLLÆäoÊ8&c ò7c“±d3©ùã¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿ø/þ‹ÿâ¿øoÕüÙÆ+#É+3ɫϫ¡Ç«Q’W–Ï«±Ç«‰ñjšæ«YÈWó¯!_-“¼²^­Ò|µùZ'É+'൮ïk½¯õ“¾Ú„xmøÚ0Í×F_¹_mC¾Ú%ymœäÕ>É«C’WÇ€×&I^y!_›¾6KòÚ<ä+?Äk‹€×–>¯­’¾:ÕxmäµMÀkÛ€WçUüê’âk»Z~uMñUP˯íC¿vHñÕ-…W÷4_;Fxí”Âk爯)¾v õêêµk„W¯È¯Þ‘^»Õòk÷_…µðÚ#ÂkÏZxí•äÕ'Í×Þ_}C¾öIáÕ/Ék_ß×~I^ûû¾ú{¾ðx˜äuï«(Í×Á_‡„xâ5 ôë0ß×á)¾ŽñêudÀë¨_G‡x õð:&ÔëØ¤¯â_Ç…xáuBˆ×¯“¼NŠø:9Ékh¨×)!^Ã|^§z¾†§ø:-âkDˆ×éI^%)¾Îˆð:3Ä묯‘!_g'}úu®ïkT=¿Î«¥×ùi¾.ˆü]K¯ Sx]”æëâ¯1uôº¤_—F~]–ækl ¯ËS|]ùueJ¯qµöº*Í×Õ^ׄx÷y]ëóºÎçu½ö*MòºÁçuc’×MI^’¼nNòº%ÉëÖ$¯‰¯Û’¼nOòº#à5)àu§Çë.ãuw ¯²P¯{RxÝâu_È×dß×ýI^¼ xMIòz(Éëá€×#_SÓ|=áõX ¯ÇC½¦…z=‘ÂëÉ^O…zMOáõtè×3¡_φ|ÍHóõ\„×ói¾^ˆðšYO¯káõR-¼^®…WyÀëÏ׫>¯×Œ×,Ï×ë)¾ÞHòz3Âk¶ïë­P¯·}_ï¾æ„|½òõ^’×û¯Š¯|^s}^&}Í ùšŸôõQ¨×‚$¯…¯}^ŸÔòëÓ¯E)½>Kñµ8­×ç‘_•^_$}}™ö뫤/óªd×TEùÞ¹ÆÊy§.WX… +B¦ç2̰œkº2C\–Úv6øo‰ÎXðt j„W}î5泫͟©Å¡÷òô«Öên›«/Ík[2ÿ‹ùLŸmWCõo”díýbÒï•GjM‚¦iTg1©ïK=^R¾fú©¾¯jNçì'g_xí }?Ï5%$®¹lð]òýœ,=H8j¬¹v~߇]ŠzÉ•Ÿ~ÓåÍUs&ϳ‰Ô¬Ö¼qàr¼–ÕÈï=®r`ú©>ÝW²í2÷‰ß|É^^aï+ïå&‹w¯y¢¬KpuÉ^1u¾F©Ä/vÌk¬Ã”¼jÉÊEÿñ_?³œ©‹½mnGðÚ8SøåÊêÛ¥Ö•eg¥¸Ý^ËÚrªq6N²´=ï•ú¼¦Ï²šF^/µ­ªm®ö»þÎüÞ¹ÿ@þ7¿Éüoλds&–ÑØjàæ=¤Lníôô2GÍ™a„’˜Þÿ³dó{íS}šÆîÿ~aÖü¶±g8æz5v§kTmJç3u¯FÍö^Í|íõIb>§tmüßÐkšš!9÷sÈÿ5CZç¿»EÖ”µ«¹’÷qï7•ÜqÒz•m¥3µª}½ÂKÌÓ¸Æ4Þá5ü/¼†ëg~ï·nÕǼÃkè±n©îuÚ9±Î’_Zx|.÷û¤¿ÿÒÙ~¿ý,Žj{]ƒÒQ˜õ Jkþû³A’éÖ­V+ú…T³­•X ¹˯¤ôzg¾R&Õå9©\µ î9=å}Øõð›ß‰z/Bãÿâ61vÉæ|Ϋ×tu¹µ’šÖ XVØ=ôJ7\½M&>ùä&ï9¼Ö$Ùüæ^k¤í³°ó¨i“Í—ÞÖéK]7Ô\AyXÝí›Ø3©†´{¼æ5¿¾u‡§´,’M+÷uÚV[>W÷[:weÊ}•vÕÝ™žŸûMßžwòšFéPu7ež{ÇæÆÿ}ßÞ½‹SM'ë»IÕzvp_ΖÎ}’›Wû^–Þ±jó<¿_uóË;ùÄ™®vÂÌüïNgî-Œïœ;59·H².òÙUséËÖÿ—W'¾é`m­Ý§ê„¤Ï³ iȹ/Ó™¶‹çT©†¼µ]`¸ê3õÒ—ã5]—ªPå'e;©¸fÚt¾—Í$Nó«¾íZí»Ìªoóù¶æwÉÂmçNÓ±*%Ôü>LØú«­Æ KMo;¸w>Kìæ1LÜMí ÍùXÄÜÇ©æØ¡Ú´U±Ýá¿R¦Cˆ=­æ‘ô#ûZ¥¡nžS9é,ÙT©,?•yênm2Ýœ.w¡:Soáæg¯)»WM«¦”{Ký§ìníœd:s}åUBp¬¨{¸õ9º$]–JÉݲ¯]U)ÖQ[–ü¿yµù%'Kz,¨6GÏiõeù½Oì#g/u¨Š©NwëW/sü–³MÕ6¨º W¯‹ÉÂùw© ©Gµ0ä~ÜhaÈ]¹»„CjðŒjO]PÏQp¾“;uÕ'rç¬>‡Üë”]]ÝÏ «îY•»Jõ霻DûBÿTÿßïÿWâxÏ'÷|ÊZèßËëk­ÂP÷€êÓÊ}ŸBÂØßw)ò­,IÊĪM%Û+œ;>ýæ?°êN§~Úœ}àì)}?ì>õa3ë$Ómî>!BŸÎ¹Ó2‚s×dâ{çNÇÄœGz.CîINI×M›f{'á±Uwô%ÿ<¦Ü±w|Õ=y'"Ññ‹}Ëä}bËœoÔ}v^!9÷Tå–}Râ%¦ÊüïI'{.Gî¹K|.÷Ñ™óžêÞ絕^ïÛ嵟y…'¥j÷^9µWü§“{ßT&t¯w꾸 ¥9ûÂLk‰e%î›óš[îóšË¹£Íkç3çµ^r·—×´rG—šæÂÐ[­æP[RNúÇöEUwU]ÂM8âÚ’ò y ©|˜uµu—õ¤õ†õ‘µÄʲsíNöNö^ööPû|û*û!ûûcû'‚n•Ñ!£KÆ®ûg›1"㢌3&g<™ñRÆû 3–fü™‘•Ù'³8s\æäÌ9™_pPºQƒÐàä7¸£Ác ^i° Á²Mvm¸ÃÓ^Öðþ†O7œß𧆠mÜhÛF=õktX£âFÃßèÊF6z¹Ñ¾j´¢Qã¬M³ºeõÍU’uiÖÍY÷e=“õfÖWYdµlÜ¡q·Æ{5>ºñ©/j\ÚxRã¿ÖøÓÆ?5¶š´mÒµÉMmrr“QM®mr{“¹Mþl²aÓ®MmzZÓk›Þ×ôý¦4mÝl»fýš iva³‰Í^löY³ß›5n¾nóÍ·nÞµùîÍ÷o~tóS›_Ðüšæw4¤ùÓÍ_o>¿ùWÍmþoóF-:´(h±_‹A-JZ\ØâÚw´x¨Ås-Þj± Å/-Öi¹EËÝ[ÒòÄ–·¼­åÔ–o´ü´å²–YÙùÙ=³Ê.ÉžœýFöÒì­r[mÞªk«[íÙê˜V#ZmuC«É­žhUÞj^«¥­V´jÒ:·u~ë‚Ö{´>¬õI­Ïk}Uë[[ß×úÖŸ·þ§õ†ëì¸Îë YçìunYçÁuœs% ªz²³ªžÜÕ´êlT‹ª3&­ªž/•Sõ<¨õ«žÓ´aÕq´Óþnÿ_»ßi+äW=Yg«ªgâlSu¤Ô¥êù-UÏDéVÕÎÛ©ê=«ê©Ýªž+áÔ›N=¹OÕ“ ö«z¶ÀníqpÕ÷ªJö#ªîI?ªêñÁnù{|U{RÕ=ƧTÝ|ZÕ½´gTåÈ‘Uw˜ž[•—ίÊ-þ—’/­º#îòª;ÏÆUÝ¿uMÕÝU×UÝ'uCÕ]Mªî=ºµên¡Û«îë¹Ë*«ºÛerÕ)Sªîy¤êΌǪîŒx¢êŽ„éÖ3Ö ëùªëÐ_ªº‚û•ª«¯g‘KfW],W¿WuýîܪknçW] »°êÚU¹Žt±UYu…ãëkëë[k©õõ½õ£õ“õ³õ‹µÌúÕúÍúÝZnýi­°þ±VZ¶i7°Úì,»±ÝÄnj7³›Û-ì–v¶ÝÊnm¯cçØëÚëÙëÛmì ì íȧmívöÆv{»ƒÝÑÞÄγ7µ7³7·óí-ì-í­ÈÅ[ÛÛØÛÚííì®v½½½ƒÝœÝÃÞÅîiïj÷²w³ í=ì=Éë}ì½í¾v?{?{»¿}€} }]db°§hiem²±µ‹íãìãíì!ö‰öI”§Ú§Ù§ÛgØgÚgÙ#íÿ‘w%ð6UßÿÝ3ÏÓ=wžÐ$E„"IRJ™J4Ê”RšÈT””!I’!ý$I%I*IRÉ’&!©Ddʘÿk¸Þ=çì³Ï>çžwéóÿÜÏ{ïž½×ð]k¯½öÚûœwo·@÷@@Ï@¯lîx4Ð;Ð'ðxà‰À“þAÙ|28ðL`HàÙÀÐÀsaçÃ/FFFF^ Œ ¼x%0>ðj`BàµÀÄÀë7³9èíÀ;wïÞ|˜ø00#ðQ`fàãÀ¬À'ÙOŸg³Ô¼À‚À—Å¥¯Ëß¾ |ø>ðC`yàÇÀŠÀÊÀªl[ø9°&ðKà×Àoµßëë66þ l ll l lËf»í]Ý=¿{ÿööþ  ÊN»†a8F`$Fa4Æ`,Æa<&`"&ar6Sª˜†1 aa,‚E±ÇXKai,“Í£å± Ø)ØiØéØXEìL¬vv6V;'›a«açbÕ±šØùX-¬6vV«›Íºõ°‹±úØ%Xì2¬!v9Ö» kŒ5ÉfãfXsìjì¬Ö»»»» »»» »kÍÕm°vX{¬v'Ö» »»»ëœÍàba]°®ØÃXw¬'Ö {{ëõÉfö¾X?ìIì)¬?6ˆ ÂcC°g±¡ØsذlÖÄFa£±±1ØKØXlö 6{›]ÞÀÞÄ&aoa“±·±)Ø;ØTì]lö^vø›Ž}ˆÍÀfb³°ÙÙUãslö6›‡ÍÇ` ±/±EØbl ö¶4»¢|‡ý€-Ç~ÄV`+³«ËOØjìgl ö ö+öö;¶Û€ý™]s6c[°­Ø6ì/l;¶Û‰íÂvc{°¿±½Ø>ìv0›8†ã8“8…Ó8ƒ³8‡ó¸€‹¸„˸‚ñ0Á£x ã <‰§ð4žÁËáåñ ø©øéxE¼~6^?¯ŠWÃÏÅ«ã5ðšøyx-¼~~1^¿o€_Š_†7Ì®~Wàð+ñ«ðÆx¼)Þ oŽ_‹·Ä¯Ã¯ÇoÀoÄ[á7ã·â·ã­ñ;²ëd[¼Þï€ß‰ß…wÂïÅïÃÀ»âÝðîx¼'Þ ï÷ÁûâOâýñøÓø3øüY|(þ> Ž¿€ÄGã/ácñqø«øüµìÚû:þþ&>  ŸŒ¿OÁßÁ§âïâÓð÷ð÷ñðéø‡ø ü#|&þ1> ÿŸŠ†ŽÏÁ¿Àçâóðùø|!þ%¾_Œ/Á¿Ê®ä_ãËðoðoñïðïñðåøø |%¾ ÿ _ÿŒ¯ÁÁÅÃ×fWüuøzü|¾ÿß„oÆ·âá;ð]ø|/¾?€Ì.UAÙ%Ÿ  †` Žà  ‰ …P :"ÂD„ˆ±l‘ ’DŠH¢Qž¨@œBœJœNT$Î$*gg•‰*Ä9DUâ\¢qQ+[q\HÔ%."êõ‰KˆÄ¥DCâ âJ¢1Ñ„hJ4ËV$W×-ˆk‰ëˆˆVÄÍÄ­ÄíÄD[¢Ñžè@ÜItÌÖ,wˆ{‰ûˆû‰ˆ‰‡ˆ.DWâa¢ÑèAô$z½‰>ÙÚæ ¢ñ$ñÑŸ@ $OÏÏÏÏɈÄHb1šx‘“­‚^&^!^%^#^'&“‰)Ùªhñ>1ø˜A|DÌ$>&fŸ³‰Ïˆ9Ùzi.1˜O, _‹ˆ%ÄRbñ-ñ=±œXA¬"Vkˆ_ˆ_‰ßˆµÄïÄ:b=ñ±‘ØDl&¶[‰mÄ_ÄvbG¶âÚMüMüCì'þ%eÓIR$M2$Kr$O ¤HʤJÉ&#d”Œ‘q2A&É™&3d9²M&‡CÉaäpr9ŠM¾HŽ!_"ÿGŽ%_&Ç‘ãÉ äDò òMrù9™|›œB¾CN%§‘ï“ÓÉäLr9›üŒüœœC~AÎ%ç‘óÉäBr¹„\J.#¿%¿'—“+ÈŸÈ5äoäZòwr¹žüƒÜ@n$ÿ$7“[³5ër¹‡ü‡<@Ê.Ù8EP$EQ4ÅP,ÅQ<%R2¥RA*DE¨8•ÌV¸ªUžª@FNAU¤Î¤*QgQgS•³µï9TUªu.UªAդΧjSu©zT}ªuu9Õˆº2[7¦šPM©fTsêjêªu-Õ’ºŽº>[3ßHÝDÝBÝž­;P©»©NÙú^ª3uu?õõ õÕ…êJ=Lu£ºS=¨žT¯l…ý(Õ›êC=F=Nõ¥úQOQ¨AÔ`j5”F=O §^ FP#©QÔhêEj õõ?j,õ25Žz…O½JM ^£&R¯SodëôIÔdj 5•šF½OM§fP3©YÔlê3jõ5—šGͧP ©/©EÔbj õµ”úšZF}C}›­ï¿§~ –S?R+¨•Ô*j µ–úZ—­úÿ 6P©?©MÔfj µ•ÚFýEm§vP;©]Ônjõ7µ—ú‡Ú—ÝüKʦušfižh‘ΖڴB«´FiÑa:BGé§t’NÑi:C—£ËÓèS²ûŠÓèÓé3èŠô™t%ú,úº:]ƒ®™ÝmœO×¢kÓÐuèºt=º>Ý€¾Œ¾œ¾’nB7¥›ÑÍé«ékèôµtKúºì¾äúFº}}3} }ÝšnC·£;Ðé»é{èÎôýÙ}Kúaº;Ý“~„~”îM÷¡£§ûÒOd÷3OÒOÑýéô@zý4=˜J§GУèé—è—éñô«ô„ìŽg"ý:ýý&=‰~‹žL¿MO¡ß¡§ÒïÒÓèéôLz6=‡þ‚žKÏ£çÓ è…ÙÝÑ"z1½„þŠ^JM/£¿¡¿¥¿§—Ó+èUôjz ý+½–þƒÞDo¦·Ð[émô_ôvz'½›ÞCÿÝUí£ÐÿÒéCÙíD€Áœ!’¡–ញ‘…Q 2:b"LŒ‰3 &ɤ³û±òLææTæ4ætæ ¦"s&sS™©ÂœÃTcÎeª35˜šÙ=[-æ¦s!S—©ÇÔg0—2—e÷qW0W2W1™&L3æjæ¦s-Ó’¹Ž¹ž¹‘¹‰¹™¹%»Ó»¹ƒiôeÚ1í™ÌÌ]L'æžìþ¯3s?óó óÓ…éÊ<Ìtcº3=˜žL/ææQ¦7Ó'»CìËôcžb0™AÌÓÌ`æf34»oÎŒ`F2£˜ÑÌ‹Ìæ%æÙäËÌ8æf<ó*3y™È¼Î¼ÁLb&3S˜©Ì4æ}f:3ƒ™ÉÌbf3Ÿ1Ÿ3s˜/˜¹Ù½ç|f!³ˆYÂ,e–1ß2ß1ß3?0Ë™™ÌJfó³:»;]ÃüʬeÖ1ë™?˜ ÌFæOf³…ÙÆlgv0;™]Ìnfó7ó³Ÿù—9”ÝÐXŒÅY‚%YšeYžÙìöÕØ «³!6ÌFÙxv·›f˱ØSÙÓØÓÙ3ØŠl%ö,öl¶2[…­šÝ ×`Ïck±µÙ Ø:ì…ìEìÅì%ÙÝqCörö ¶{%Û˜mÂ6e›±ÍÙkØìµÙ}ó ìl+öföVö6öv¶5{Û–mǶg;°wf÷Ôw³Ø{Ø{ÙûØ؇خl7¶Û‹íÍ>ÆöeŸ`û±O²O±Øì v0;„Êc‡³#ØQìhöEvLv7>–}™ǾŽg'°Ù7ØIìdömv û;•ƾÏNgg°3ÙÙYì'ìlö3ösvû;—Ï.`²‹Ø%ìWìRvû-û]vgÿ»œ]Á®dW±?±«Ù5ì/ì¯ìoìZvû»‘ÝÄna·±ÛÙ]ìv/û»ÝÏ`²‡²[eŒ#8Šc8Ž8‰“9…S9Ó¹0åâ\’Kqi.Õã*p§q¹JÜÙÜ9\U®w.W«ÉÏÕæêpu¹‹¸zÜÅ\}®×kÄ5æšpM¹f\sî®w-×’»Ž»kÅÝÌÝÊÝεæîàÚpm¹öÜÜ]\'î^®3ww?÷÷×…ëÊ=Ìuãzp=¹^Ü£\î1îqî îIî)®?7€È=Í æžá†pÏrÏqøç¹áÜ ÜHn47†û÷27Ž{…{•›È½ÉMâÞâÞæ¦pïpS¹w¹÷¸÷¹¸¹¸™ÜÇÜ,îîSîsn÷7›Ï-àr_r‹¹%ÜWÜRîkîî;îîGn%·Šû‰û™û•û[Ç­ç6p¹?¹MÜfn+·û‹ÛÁíâvs{¸½Ü>n?w€;ÈâJøñOòOó Ïñ/ñ ¯ñA^çÃ|”óI>Ígør|þþTþ4þt¾"&_‰?›¯ÂŸÃWåÏåkð5ùóøZ|mþ¾!1 )ß¿œ¿‚oÄ_É7æ›ñ×ð×ò×ñ7ò­ø›ø›ù[øÛøÖ|¾ß¿“ïÈßÅßÍßÃßÇ?Èwáæ»ñÝù|Oþ¾7߇ŒïË÷ãŸâðùAüÓü`~?”ŽÆçGð£øÑü‹üþ%~,ÿ2?Ž…ÏOà'òoð“øÉüÛüþ~*?ŸŸÎÏàgòó³øOøÙügüçüþ ~.?Ÿ_À/ä¿äñKø¥ü2þ[þ{þ~9¿‚_ůæ×ð¿ò¿ñkùuüzþ~¿‘ßÄoæ·ðÛøíü~'¿›ÿ›ßËÿÃïã÷óÿòùC|‰pHXxAdAT!(èBH !&Ä…„RBF(/œ"œ&œ!TÎ* g •…s„jBu¡¦pžp¾PK¨-Ô.ê  õ„úÂ%BáRá2ár¡‘p•ÐDh&4®Z× 7 ­„›„[„[…Û„Û…ÖB¡­ÐNè tîîî: ÷ ÷  ]„®ÂÃB7¡»ÐSè%<"ôú Oý„§„Â@a0XxF"<+ † Ã…Â(áEaŒð’ð?a¬0NxU˜(¼!L& S„w„©Â»Â4á}aº0C˜)Ì>f Ÿ Ÿ s„yÂBa±°DøJX*|-|#|'ü ü(¬V ? «…Ÿ…_„µÂzáaƒ°QøSØ"l¶  Û…Ânað·ð°_øW8$DLÄEB$EZdDVäD^EI”EETÅ ¨‹!1,FĘ˜SbF,/ž"ž&ž!ž)VÏÏ+‹çˆUÅjâ¹bu±¦x¾X[¬#Öë‰õÅâebCñrñ ±‘x•ØXl"6›‰W‹×ˆ-ÄkÅ–âõâ âb+ñ&ññVñ6ñv±µØFl+¶Û‹ÄŽâÝâ=bgñ~ñA±‹ø°Ø]ì)>"öŸû‹ŧÅ!â³âPñ9q˜8\|A!ŽG‰/Š/‰cÅqâxñ5ñ q’8Yœ"Nß§‹Š3ÄÄ™â,ñq¶ø©ø™8GüBœ+Îç‹ Å/ÅEâbq‰¸T\&~+~/.WŠ«Å5â¯âZq¸AÜ$n·‰;Äâ.q·¸GÜ+þ#î÷‹ăâ!±DÂ$\"$Jb$Nâ%A’$YR$MÒ¥°‘¢RLŠKI)%¥¥ŒTNª "*&.U”Δ*IgIgKU¤s¤ªÒ¹Ru©†tžTKº@ºPºHª/5.“.—I¥&RS©™Ô\ºFj!]+µ”®“nZI7K·J·Km¤öÒÒ]R'é^é~é!©‹ÔUzXê&õzJ½¤G¤G¥>ÒcÒãR_é éIé)©¿4@(=-=#=+='=/FK/I/K㥠ÒDéMi’ô–4Yz[zGš*½+M“Þ“>¦KJ3¤¤¥YÒ'ÒléSésé iž´@úRZ,}%}-}#}'ý ý(­”~’~–~‘~“~—ÖK¤?¥ÍÒVé/i‡´SÚ%í–öH{¥¤}Ò~é€tP:$•È“ ™”)™–™“Y’Y“u9,G帜”Ór9¹‚|º\I>[®"W•Ï•«Ë5äšòyr-¹¶|\G¾P¾H¾X¾D¾Tn(7’ËMåær ù:ùFù&ùù6¹µ|‡ÜFn+·“;ÈwÊå»ä»å{äÎòýòƒr¹›ÜSî%?"?*÷–“—ûÊOÈýä§äò`yˆ$c ©Ð «ЬhŠ®„•¨WJRI)i¥œR^© œ¢œªœ®TT*)g+U”jJ ¥¦ržRK©­\ \¨ÔSê+ ”˔˕+”FÊ•ÊUJ¥©ÒLi®\­´PZ*×+7*7)·(·)­•6J[¥Ò^é tTîRîV:)÷(•”.J7¥§òˆÒ[yLé«<¥ôW(•AÊ`åeˆò¬2T¦ WF(£”•—”±Ê8e¼òª2AyM™¨¼¡¼©LRÞR&+S”iÊÊ e–ò‰2[ùTùL™£|¡ÌUæ)ó•…Êbe©²LùVù^Y®¬TV+¿(k•õÊFåOe“²YÙ¢lSþR¶+;”Êne¯²_ùW9¤T\¥TVåT^TIUTMÕÕV#j\Mª)5­–SË«§¨§©g¨Õ3ÕJjeõµªZM=W­¡ž§ÖR/P먪uÕ‹ÕKÔê¥jCµ‘z¥ÚXm¢6U›©W«×¨×ª-ÕëÕVê­êíjµ½ÚQ½[½Wí¬Þ§Þ¯>¨vQ»©=ÕGÕÞêcêãêj?õIµ¿:@¨VŸU‡©/¨#ÕÑêu¬úŠúªúš:Q}]}S¤¾¥NQ§ªÓÔéê‡êGê,õSuŽ:W¯.Pª‹ÔÅêõkõ[õu…ºJ]­®QSש¨Õ?ÕMêu«ºMÝ¡îR÷¨ûÔýê¿j‰†k”ÆhœÆk‚&i²¦hA-¬Å´¤–ÖÊi´Ó´ŠZ%íl­²VE«ªUÓÎÕjjçkµµºÚEÚÅZ­¡ÖH»Jk¢5ÕšiWk-´–Ú ÚMÚÍÚ-ÚíZkí­­ÖNk¯uÔ:iµ´‡´®Z7­§ö¨ÖG{\ë«=¡=©=¥õ×iƒµ!Ú0íyím”6F«ÓÆk¯j´‰ÚëÚ›Ú[ÚÛÚ;Ú»Ú{ÚÚ‡ÚGÚÇÚ,ííSí3mŽö…6W[ -Ôi_i_kßhßißk?h?j+µŸ´5ÚoÚZíwímƒ¶QÛ¤mѶiÛµÚ.m·¶GÛ«ý£íÓþÕj‡4,ˆ‰ ä‚bP êÁH0LËO ž<3xV°J°ZðÜ`õ`ÍàyÁóƒëëë/6 66¶¶ ^l¼%xkð¶`ëàÁ6ÁöÁÁ;ƒw;ï Þ|0Ø5Ø3øH°Oð‰àSÁÁÁÁgƒÏŸŽŽ¾ü_plðåàøàkÁ׃“‚S‚Sƒï? Î Î Î~œœœ\ü2¸(øUðëà7Áïƒ?Wþü=¸.¸>¸1øgpSpkp[ð¯àŽàÎà®àßÁ‚ûƒƒÐiÕ9×]Òe]Ñ5]×#zBOéåôSôÓõŠúYúÙze½Š^U¯¦Ÿ«W×ÏÓkéèuõúz½¡~¹~…ÞH¿Jo¬7Ñ›êÍõzKýýfýV½µ~‡ÞFo«·×;èwêwéôÎúƒz½›ÞSTï£÷ÕŸÐûéOêýõúÓú`ýý9}¸>B­¿¤¿¬¿¢OÐ_Ó'ê¯ëoê“ô·ôÉúý]ý=}º>SŸ¥ª¦®ÏÑçêóôùúB}‘¾D_ª/Ó¿Õ¿×—ë?ê+õUújýgý}­¾^ß oÒ7ë[ô­ú_úv}‡¾Kߣÿ­ïÕ÷éôõƒzI ‘!&$„” …¢¡d(ª:-T1T)T9T5T=T#T3t^¨V¨vè‚Ð…¡‹B‡. ]º"tU¨I¨y¨EèúP«ÐÍ¡ÛBw„Ú…Ú‡:„î u ݺ7Ô9t_èþС.¡n¡ž¡GC}CýBýCO‡†„ž   ½z54!ôZèõФÐäДÐÔÐ{¡C…f…> }šZZú*´4ôuhYè›Ðw¡å¡¡U¡Õ¡_B¿‡Ö‡6†¶„þ íí ýÚÚ:ú7t0TÆÃD˜ Sa:̅ۆ£áx8.>5|F¸R¸røœpµpðùáZáÚá ÂuÂuÇë‡/ 7_¾<|e¸I¸y¸eøúp«ð­áÖá¶áá»ÂÂ÷†ï?îî~8Ü-Ü#üH¸wø±pßð“áá§ÃCÂÃÂ/„G†G‡_ ¿~%<>üjøµðá7ÓÂo…'‡ß O žþ$üixNx~øËð’ð×áoÃ߇—‡W†W‡¯ ÿþ5¼6¼>üGxCøÏðæðÖðöðÎðžð¾ððÁpI‹&ÂF¸"RDh‘`$‰Db‘d$)9-rf¤räœHµHÈù‘Z‘Ú‘ "u"u#GêG.‰\ii¹*Ò4rMäºH«ÈÍ‘[#­#m#í"í#"wFîŠÜ¹7Ò9r_äþÈC‘‡#="DúDúFžŒ ˆ Š<y62,2<22òbä‘q‘W#¯E^Lм™y'25ònä½ÈôÈŒÈǑّÏ#s#ó#_FG–F–E¾‹,¬ˆ¬Šüù5ò[dmä÷ȺÈ‘?#›"›#["[#Û#»"{"{#û""%Q"JFé(å£RT‹†¢Ñh"šŽ–‹ž==Z1zf´Rô¬èÙÑ*ÑjÑÑó¢µ£F/ŠÖ‹Ö6ˆ^½"Ú8Ú,zuôÚèõÑ£­¢7EoŽÞ½-zG´M´m´]´}´c´Sôžè½ÑÎÑû¢F»FŽv‹vöˆ>íí}2: útthô…èÈè‹ÑÿEÇE'DߌN޾ý :#úqtvôóèÑyÑ…ÑÅÑ¥Ño¢ßGŒ®ˆ®Œ®Šþý9úkô·èÚèïÑuÑ ÑMÑ­ÑíÑÑÝÑ¢¢££c|L‰cáX4¥båb§ÄN;;V9V%vN¬jìÜXÍØy±ócµbµcÆêÅêÇÄÆÅǚǮ‰µŒÝ»)v[¬mìÎX§Ø½±ûbƺƺÇzÅzÇõ=ë{2Ö?6(ötlpì™ØØs±á±±Q±1±—c¯Æ&ÆÞˆ½›{7öAlflvlNlnl~ìËØ’Ø×±oc?ÄVÄVÆVÅVÇ~Žý[[ÛÛÛÛÛÛû;¶7öOlì`,ÇãdœŽ³q1®Æµx0ЇãÑx"žŽ—WˆŸ?5^1~f¼Rüìx•xÕø¹ññóâçÇkÅ/ˆ×‰×_¿$~i¼aüŠø•ñ«âãMãÍâWǯ·Œ_o¿)~Küöx›xûxÇx§xçøñ.ñnññ^ñGã}â}ãOÆÄŸŽŽ?6>4>,þB|D|T|Lü¥øØø+ñ×âoÆ'Ç߉O¿/þ~|zü£ø¬ø§ñ9ñyññ/ã‹ã_Å—Å¿‹/¯Œ¯‰ÿßßßÿ+¾#¾3¾;¾7¾?~0H :Á%Ä„”jBKè‰H"šˆ'R‰t¢\â”Äé‰3•ÕÕ5µµ$.LÔMÔK\’¸4Ñ0qEâÊD“DóD‹Äµ‰–‰ë7$Z%nIÜš¸=Ñ&Ñ6Ñ>Ñ1Ñ)Ñ9ñ@âÁÄC‰®‰n‰‰ž‰^‰Þ‰ÇýýƒÏ$†&žO¼™“›x91.1>1!11ñzâÄ[‰)‰wï'>LÌL|’ø,1'171?±0±8±$ñUâëÄ7‰ïË+«k¿&Ö&Ö%6$6'þJìJìNìIìMìKHL”$±$‘¤’L’KŠI9©$Õd0JF’Ñd,™Lf’’§%+&ÏJVIVMž›¬‘œ’š–|>9<92ùbòÉqÉW““o&''§$§&§%ßO~˜œ‘ü(ùqò“ä§É9ÉyÉ…ÉEÉ%É¥ÉeÉï’?&Jþ’ü=¹.¹>¹!ùgrsrKrkr{rWòïä¾ä¿É’ž"RdŠNñ)9¥¤ÔT0JERÑT<•L¥SåRR§¦NOULUJUNUI“ª–ªžª™ª•ª“ª›ª—ªŸjj˜j”jœj’jšjžº&umªeêúÔ©›R·¤nKµNÝ‘j“j—ê꘺+uwêÞÔý©‡R]R]SÝS½R½S}R¥žH=•˜œz65,õBjTjLjlê•Ô„Ôë©7So¥ÞN½“š–ú 5#õqjvêóԜԩy©©/S‹R‹SKSߤ¾O-O­L­Ný’Z›ZŸÚ˜ÚœÚ–Ú‘Ú™Ú•Ú“Ú›Ú—ÚŸ::”ÂÒdšNsi1­¤ƒép:–N¤SéLº|úÔôéJéÊéªéêééšéóÓµÓuÒ¦ë¦/N7H7L_ž¾"}Uºiúêô5ééëÒ7¦oNßžn›¾3Ý)Ý9ý@ºKº[º{ºGºWúÑtŸôcéÇÓýÒýÓƒÒϤ‡¦ŸOHN¿”›—Ÿž~==)ývzjú½ôôôÇéÏÒóÒ‹Ò_§—¥¿I—þ!ýczEzezuú—ôÚôéMé-éméíéé=éÒÒ‡ÒX†Ì°1£f´L0ÊD2±L<“Ȥ3å3§fÎÈTÊTÎTÍTÏœ—©¹0S/sIæ²Ì™F™+33M3Í3Wg®É´Ìܹ)sk¦u¦m¦Cæ®Ì=™û2÷gÈ<”éšé–éžé‘y$Ó'Ó7óD¦_¦fPæ™Ì̳™a™2£2c2c3¯d&dÞÈLÎLͼŸ™ž™‘ù8óiæ‹ÌÜ̼̗̂™Å™%™¯2Ë2ße–gVd~ʬÉü–Y—ÙÙ”¹+pøõ`Þ-ýOž:öË2ìðkå‘×Zìwl¶ûÛpüÙƒÒç ^#¿&y}pä5ýÈëð½Æ/ÉEäbr ù¹”üš\F~C~{ìþâ&r3¹…,¡FéTˆ S*JŨ8• ’Tþ·M~ëð·~žêðs¬‡Ÿ£êtüÙ¦ÜÓLGŸFú¥d}IîÉÜ“?b/#È‘ywPß%§‘U„†ÂåGNàþö9';z2u§Ø]ì!ö{‰Gÿ;ÿè÷[âGþâG~rmر¶£Ÿ ëÇŽQåóŽ·˜ßa%¥ß¡ ~‡™x€6<ï7f’‘O‡åµã%vZóå‚P›yò9ARŒøð³3Þü6Öü6{T`ATF;Ì6Yýilá7•7ô€<–Ão7þù:¬þÅ—Ñ&'ƒ4ÛÇ«“¿ŒüàQÏo3ÇX(¾ð³dk¼ÃÇÇ˨ño£FJx|[c<>Öȶ10¥}¿ÕZ» Ðjs–¶òÄ´€"nÕ+§{9 ‚óÛÏ 86ܶ,¡ìiÐý¶Ï='Üà,à„ P90Áú`¾Gx ¡ÄWarÀùïè»Ãÿ)û¦oãï\s„Ž=ö÷è{ö8/{¼Ÿ=ÞÏïg,ô`y¥tf^ëHدvõ¸¾±®?àúÆ®~³«/¬ë¸¾°R`%vY*¶¶y‘Æ__íëPýdWõY¹¬ãm´Ùº>[}³ÇÊoÄh՟ߟ›#ÌñÃæ½˜ãñ š9ª£ï­ó+ׯÿËÞÿ‚ç“YŽY&,­«Gé ³ÖŸöñ‘o/Èù8͘añª¿ÍóÂi¾Âëg7ùùöU1ØŸVûìëK»úÝI¾ÑfP} ŸÿàzägëÈÙµx•S–²Qäø%»;`¼~ÕW(vÂ+»ú¥þñZ»Ã1Ûy 7* j}çÕF¿|ã¹óè[¼Öîîæ—5ŸÁÖ'çz œ?­q“O«Gp 

vSïyìÖF{o£ø¸üÜÿ¡¯œàühmñ+þÐâÀ ~¿ü‡’¼`€ëÉ­§…cw¢CÅé®Å¯ú²°<íÇúâUŽë‹×üîÏúRVõµ_þ÷¢…v冯d»øA™ÿ¨õ Ê•·JÓ¯ŠÕZ!VŸ¹Ï~ÙVˆa¼(rQhárü˜¿Þç!Ì›(ž.Ô~¿ê#ïrÐW,Tí(ùÛn•@_ýÑ_x]éLk¯³ô›ýb\kŒgàuÈ,³Xã ¢A‘_v닽^´Ì[èjäWî>Ùó;Zžô²?(|}†ßßß»ÉoÑØÝ×2ÞŸ²¿‡…vÌz_,ǃr uœAcXh}»÷Tj¸@¾?»¿å|v ÖgíÑÏc?ü—>ò-9_•ÖæLŽ[hJG!ÿ/f‘ÿ;‚ƒ>þmãt aàÉ_™ŒúJñ€h0v;|¸…Æj'vÄ7‡ßцX(m÷ÓGþRÇ|š{âϧ§Kˆã}”aìJÛòiíÆÄ<>G¿9ö(ïa>cFÄLï–6û·´—¶á_€ücµd¾ŒöýNF²„8öýïÆU„ÒüÿU û~ëªÑÏKq ixŸ/7É5Fg©Lê˜ f_åËù&ŸÇ쯕™Ïkåk¾rCë—+s»2`WÎÕ&¨öAmóJêwKnó?f>¯ñìÇø‚±ÂöNN^AÝÓ—• {ëã.GçÓÓ%vk`þi¿‚ä;­‘VýîÖhâøµU>—§Aø@yø¨Ìü< Êã¥yÞkfÇ.h—ÛûúÝÒ;ñ ÒÃNP|€Ögn÷CŒÇާù±šGæXÌ-PM’›æz#GEçQÛµP€ÊÔ´Ð7Ú@4(Ú`4î´YiÜiÑ œC•%Ñ:«õN4Fë¬Ö;Ñ¥Y}íDc”fõµ3 QbÖYªÖg¶Ž°´Ð¾€©4a}fëK í+õ×|j~y•c´Òh!¬ì£…°>³~c|SŽ}¹—q”# ë3zÂiÎÂß¹¥÷C†=Ono›Û'çöñùµ¤q]2®[ླྀ±F3®{Ö}´»š¾ï)|?ê¶~·ïókßln3×}è8aG;@9O€ œ'ÀN(PN/`'Χ°Ý¡‘¶;#´Ò ïЬûw«Mè»·Ã/§LP ô2x|ÐwÈî|Bãä_g7ûX¯[z»«Ò{”á=Ì(óä/”ù’ï/ØÙ-X»±vv ÖnnÙÆË(ñböÌ>ÿÀìCñÜ>ÿÀìCñLJ|Ât8Ç'Ìǰ±±÷(l½2¶8íïAýnÏvÊJŒÇm^³ksKï‡ 'žü}.¨Ïßç‚ê¹üªöüNŽÊéyœüýhï;»áƒßÏ@¹»Ÿr?Äýé%øåUºÅàó~t‹Íùå~ Œå~ ŒÆiçxøU–4(÷³`4(÷³à4(÷S`4N÷SœhPîg•% Êý, Êý,{·{k§>7û}T0;Zóù¹2åÿ£~1¶ÏáçËÖóYð˜¡Ä5h\QâÚ8ö0Ùfý Œ0Ù¥F¯÷µÌ/ïrÀ+ l]­«°uŹÊ7úÛ~•ÉW³ÌRÛŸËXwæ 0l`ë:`Øì<€²ÊÃÖuØJnÆŠbÌ?(öÁÇÅ>˜àö9û%¾aã†%¾ac„ßÎcËo(ù–ßPò#LÊúÓá¼>x¹_î‡Ýó1÷9ßww–Ò‡ªÜg=—3¶ÎùóÛ@ÕŠÓýóª•Ê鄜îL9=cÞ7ƒðž.0ãòŽöã£ô kp¬§Ögó1“3·Uº8r0 …=cK®•´ÌfcvÈÙÑ¢Èp¢õ£bÑj_!ºý°ÝßÃí3¯&vö9ÓÙÑœ(^·t^0ø¡»,e8ɆŸuÚíw-æ»×æµÍ7:íuÀNòüØ»;]ùqÆ»2óœh{ágýþŸ©xEVVã‚fì Ž'\‡×Ȱ¿2Ûj?Gá§ôæêÏ>ÀO1Í•ènŒ³…ðJfÌ70_À΋Üèö#ñÀä8û^¹ÚqÁ<•OéO<»É{N:PÇÊ)n½íEaû g(}è8Ýåhoö:í¯P䜈q){{½æ=7ö¢ëp§ÓYjžqÂiîó‚Ó º Þ3¦ñ ½v€ë€û úÜ»^XÍb?ûýL¾+ãz Ž‹üõÔZ`%örÍ1ŸûœªÜç]•¾òÛˆ¼W)¹•°pšßå÷‚´Ze‘Çùó¯J)­2I[J Ñ[fìuÞg¢ëp§E‡=N7öº« ½®7höz'ìt¢®õε³×}Ž›8ô¢ÃÈãÕ^X½‚ŽÇ]­ÓÛG¹ñ'»»=#¬u/æ¤Ã›½ö:À«Ö‰²×zåÅ^t¯õPÙ ,f1WéfáðºV:ïü_+Ñu ãôºVº±×ëZ‰[Qxü—²·×~Ï·×ÌÃb¯Ã~´9uç,ßN+Ÿ›¬>õ²;tÃã}^Ãö´ö™Ñ»ÿùîÈëè;þȻÿǯs4¹>.3ÇÈkÏõò†>Π $·´=_‚U_îÊ*7!Ëï±J(Åj'·ÕQêü} aØÅ÷~æ}¤yïg––Ï Úšû­RÀÈÌ\`¬„!¸c’3¹ëuÜ­yÊ8?¸ãܼa\rrzKG77.F½f>Þ ¡4îJ{Í|¼ES>ªÒy’Ó‹¶ÿršŸðyîF‡›œì¬ÃélÇ+Îk¯·u«¬ìuç ;nÖP;ÝNgÒnt ëDÑÛ¸±×ÜçÝ^ô:Ì^‡7X¼ÙëÎÎûN¸½…äC¯{ì²È‡^÷Ø…äC/öºáñšÑíuç 0vÔ=,?8­/ît¸Ñ‰¢ÃÈãÝ^sŸ7{­}^ìEçq‡Å›½î|ÆŽ’ÇÍq Z‡­9/1k°Ö >0øª[JaÃØbŸ3­Hìúœ{œå–g= eîeG‹"ÉÖŠDW¨}…èöÃv?|·Ïü|·}Îtv4'Š×- ~è.KN²a+ƒ›+´ÂÂäxÑaæ9Ñöšû¼ pÃ㵎,«qA³Éë.ÌÍçèz—ãE‡™çDÛkîó‚À ×RVã‚VW{׿}$Ðíõ"ÕJ« ¯ïÍ-v¸Üígìwá°¶¯öšÑ¼|ô¼ÎôüŠæ3ûÝaî mè|n‹û>«½ö:QöÕN¾€ïaº6 Æ³Ó\B³Ãk<»yVÖ¯z ù^+t?¡Ås¢Å³s^õvþbµ=G¢Ø C7ùÙh,ྀÍS7ó 6Oau‚ÕF܂ԿX‰Y:^bÖÊ;V>0°Çp ½=c f׋{.ôôünA¡u’ã¿_þ+¿þƒ?¡~ÎÀÉznÃïǹ)Š õoYûÁgL°Ï8‘gv¥þCû /ö¡Úà1Îmaö¡ÔM˜áêè{X}‰¸sïœùÀ8ÀÙ³ÐÛã0¶àiv-~åx»¯¹ÝF'9^ñûå¿Bðûá??Öˆ“õ3ˆüXÛa´(þ)Ô¿eõHÆ~pž„åÞùùC¥þC[C¼Ø‡jƒWüÅø *'ûì3ª›Ý‡½/¼n0¡õzëñ[ {±ÆÁo=ÿÅqõ¦Ë½=nª•ÿ¯=Þ*:ô8j-V( /3Ö|ÎV¸<÷V¹i-D÷qpc¯¿¾ó¬ãæaý Ê?LË8ô[åÙËdlé‹åg|Œ =¥öøéow˜á¶úËc?~0Âåíµ÷§ÿ«ÇŸS|øî°û³>–…_ÜÙá=OcþÚóžÜã|âóÿÉŸG‹1®~çe÷z¼õ”}þ·ÛG'¸Ç9:¿ÜÌ!7³Ð«4·öºõ§3Bow´Ýéñ¾#Ûk`OxÍþn=ç¼ SyÉn°ø±·×­?Q>뜩ÊzÇïvµ,õ¢?õ“×yåÖ^ýïv5(Í_Þ=ëw1âÓKõó§}ü€q»­·üõ„×8u[õ•Zi?öþ±j*d~ù·>Z{ý¯ÒÁ¼Þ³G±æ¯—¸±úmó{ý=qùnâ ®§°ú­óLåï)–=_aõÙåøS¦hÏwšŸãµ—‚¢ÃNF¯öZù¼áôÃo'ÆŸþØk‡ÝŸæh…ÉÇLïÌ×vRt¸Ñé¬ÃÚîM¾•Ï«½F>oþG·Á ¸ ö:ÝÙÖ‰ÙðX¯`”~ý?´­ðïJò ':j7ß…9¶»µ×/ü­¹³üÎ×hÌV¾fiÍÏTvrͱmüÌKã'Sš?ÓLgn5&a‘j¥%,Tæïs0¶&ü{!Ìí×”²Y7tøQ_ÁsBáöšã§WÂÖ4g ¯CàöÚå'·kl G×áuÝDɳfœ^íµæ4œ^ý «5œm@ó™“?Ñê<˜}…õX}ðßè90øÙã÷xÿWq5,~¼`€ŸÊ¸AèÅ7^ð¡Xé·¼bá.T*O1Æõ¿§ÅÊ~ç¡bá†÷ºñ{q癿qéßÜ=™æÙw1âV{‘ç÷¨xÜèü¯æ5˜üŒ×ÿr\êT\ÅÈþé)d}ñ6Ÿ‹‘Ê®¾ó{‰2¸^ôœ <à>/£åu¸‘æ¬Ã­M(ÚÝÈóâϲÂí>'7½Ì­²Âm÷*‹8õoÞ7ù—?‹‘Š?ÏüËŸþΓižž?‹™×Š¿Ž>‚hë¢W›a¾-V~(V­äd¯ÛÖbæ‡bÔWe1ÏŠ‘Üê)džù½Ž#?”M}åï)Œ¿=Å:Óa+–þ«ãð_×bêq#ÓëùU±¼Pö¸Á^ȹ[1ôø=ÿåqõÃG…ž.z·Ã©Bô.¯PŸøëBô8å7ÿî+ø§§Xyv:ÇáõþNYÎßÿ²Ř¿nyO¦uþÄÏß“qÜç6o=^ΊÅãßÙ‘zü“{–çeÿ_óK±ì(–ÿAý°¼³R»É(ðS#Ìãü$J(Käc¯Ãï…ìK.‘Žü~/iŽ¿?üQÊyׇ[¤c|â±éHŸxŒO:&E³ý q´‹cüØÛh7 ü q´‹ÿ@qlÆoÆc7fûíâØnÞ€ÆD‹}/óËŒæ{£À1`—füv~‚ň”ßàóÓy~Ãóƒs~åPØØ¢Ä,öQâ ûVû­1ì»vqSj?Êü¶Ï(ù–íÆ öùÕnÚÍ;;ÿYóÓáÓã9^b<Ç ½ùW˜Ež× j·êÍo¤7k²ïµ?›Á,­ »èO„Yy`g6îxÐΞPñƒuxÁoÕí?H·ü¨X¼øÎ-~gŒV»ìûÌ'z°>w:Ðu¢è°òx³”Nœ½nxÊÞ^w¾€ét3Wâ§8ùÄ=þ²Ì'Þò¡¹ÿÄá÷+àºÑ´Áîe¸ã¯/è¬ÞqÏãT¿ƒúQÛì[œ>gÙ?½~ùÁ-*Öb#*ðž Þco¿}ó®ÓÞjwèNÜ^°yÁíÛÕ§ÅŠÍ[,€ûàhPv@踋‡Í½¼âá>°¹×âÅÂɃ u{™ë^2‡e‹ Li–ìE“·¹u²aÓ9í ¼#pã¡ Ý÷hc‰Âƒ6»N<¶²œ·…Ö&'6÷q‰ÞrÂÉ…íäÈkn´›ûy‹žs½ä„“ ››õÅëZäužØÐ×ﵞ×yvâ±¹“ëu­ö6ÏNlnê[oµ°÷uþÄbó?/ Vµþê(+l~«›/vÌyÃæuýEçónçÉ€ÍÛºâÎf¯k×Ƀ͟:ÃÍüF¯Olnr¿ñ‹ºÃ8Y°ùQ‡¡£pã“›;_:rnf׉ņ[ñã¿A;}ÜDŸ >ÀzÀrŒô˜E*N3QÝf}àu¾´62z³ü6_ƒèÿéË1Ò[ǧ™Î¨ÇÎn¸>´8DÍûèW¨:ìh`¼¨g†^ñæ?7ÏSRyÿ»yøEžçóÖW(¿_øíúQä—¥}…Òøõ<(m‘M!õ*ÃÍó v2 ŇÂ_þBð:~^ê{¯{7µ™×³ ·¼(˜ü–ç®÷ä/ãä…>ênªW¯g_ö¼°V/cäÅ ÿÕqð‚Î_[íù¼ì\ËzìiÙìãB3säÇ^c+Ìc¯ßÙkþÍ_û^{|`=Nþñæo;iÅš¿ðñf]ûÇo»Çmo¯?³úä¶£Xó×ï¸qçx/,Oœøù{rç‰bާÛèa-ô…K€û]rá­ÖÑp; VëüÇBýãOÜZiíG,5~üË«hØüÙåY[ÜfÔøç;7ó››z°”<¾öqÆoo:Ò“³<¾öþÇ¡þ)«üPø¼{Â~^ù៲Ê~Î+¸'ìýãÇü* ;À­þŸ5€)ʲŠ)¬õ䨯 _ÇÀ´…Ï«Q_•EhïËÂæÕÉQ_^'‚žʺ¾Ýÿ‡÷ƒï(Ãå ò8ß­?¯`ÏQ\ü^üéÖ^ð£c=Qãèt?ÍÚûárPyÀtp§uniaël»÷zññ—•Meácî;:rßµa|WzM–ä¾íÅØB§,¥&ò¨ÌrˆÇ¨³T2aÑh¦K"ò$äË8J…Y<“ß‚ÿm­SÌœ8´$ý0¨þ1ÎGðȚǖͫåÙcûÔ¶ücèg-m @ØG ò€ôÙÙãésë'žBý£õân·~éöâ§6T? Úää'¢øÁY·yÚçY”ª£´¶F£ïàu¸6qÇãv=³³V'¡ûæãÃ/ðü-ƒÜX{ɇùt°9m'‡àåÔ|Èì²ÏU ëÒØ·¶9ñ€ü²Éˆ„ÕÊ¢³“ œOŒºü€šü€¾ÎÂý€šüà.Zç°›ý3œÇiêGm³Cèüy«~éõËîyаkÑyÜ­nÎᯯ”ž;Þ8ÞÊ[ô”ÒçK(¥3óYõ¥7ã.ÕcÆcÔcµÓ¨'Gg~þ>h~ZÑüü¡±,©ôÙÂüç sÍ~+µ×8ù6åû‡7PôF9¥~2æ+óZšm¥0ïÜJ¯œêT§¼ êGm³ŸINç‹þéõËnyP±kQy`r@¹ÑiŸ‡Êã”wAý¨m0‹¼à÷¢×/?¸åAÅZ¬qDå±—ã¾^Ûæ¦~·¯UœüæG݇ŠÅ ~¿ê>˜¼à÷«îC{÷ãèÞo`¯¸©ßí÷nNëˆû½*~7u7ŒÇŸx@‰<7øÑcÎË8ºÃÒí.ß‚ê¿Ö//u\wáë;jÝå}Ý÷b¯L~KYÛëÅeSÏû'^qú?~ųžbKÙÛëW]á$u]ð²¾Øéö‚“{ýª'Ý`òk\Šc/êºïT‚äøUÏ€äÀð c·ÁkVø¸€q¹¯£¬rÜ×o ,Nzý«çÑbèÿØ»8«©¬ŸÞ^^òzŠ"""`A숂¨XX ‹âZѵ!¢Ø]lˆˆŠˆ¨ØP‘U±wTÄŽº¶öºXËçÃÌä%7·%¹oxÉo×Iî)ÿSî¹'7aÆÏr/ÁÈ€ñ°~?Œnt~3Å,?#‰í~2Pìs“Aâ[Ø;0”^vø•ÎKˆF~™c(ù^Õa|âõ£%FŽí°öÃâð¯Ðèþ¥e®œÎU? þ´·oüäÃâóÒE_ü°6âÄŒìO8 pÍ€£hàˆ+ö²â³5Í ŸEa-;þ`Åï Šh)¢BÄŠ'XÁ¥?H$×#/9'{6…s4ýßÀ>Ùq·ö/!;)¼ÿ4®,pe8%9©j%ÕRx¡‚•E© ’ÐÊ!9´t“øVáÈ¡™¿QúŸ…ü‹ÒÿQæ_”õ—…õ'ÊúõúC#²nTô2Ä_‰n‘¥%W ÝQøžT7M9Qúž•Œ"Xˆ=©ÿHüÎBìYˆA”õ‡…DWP¾øð:iÈ •Ö° òFi7 qoø#^–æÛšêæKy°&ùÜAIÀQçI"+*^påuÊâÔ(²¢â¥áèxiÚPϱ£% Ç4âÇŠ ÿш_Ô2XñTùµÿIdОó Þ}ç‡TN”Àû#ÎQïúK"‡ ¸1 »¨1àúŽVìXÀ¥ÿYÈ¿(ý¥î(ë/ ëO”õ7ÚÚ÷!Ì¿P$çaú·ÒááfηäaåKØàþM¹·,œÜñ§ ú¿¹‡E@ò•4+Øà}Ž4¢Çt›ñrž-lÁÎ[œ˜²† =Fð5…Ì?l`CYGqk ®Ÿ¢Ç†¶¾àaÀ­Cl`ƒîZ_§£Ç†"¿—Á›_ÑcÃY?QíÅ­=,`ÃÀ2_ðçVôØè×M7>Ús+оY‹uÂM2¹XÀ†¶6ÒÈ_ؽ V°ÑèÃPÖxÿ°ƒ Î÷Þsƒì©œ¬CÅFoß„½9ò^Þ?¬Øk^Ò½•pŸëéöìôæ1h&‘K^wHãK²ÜG•M^?ƒÉ}°t²¹L^ýèÎ+ºv[äºd.£ò„]‚ªsAΫ0ëª>ò•0Ü»¤õ•u Èu‹´G§%™“8yõ)­ø_ó)·úoËÏ-tnN~¹ÍHëÿ—ÚH‘j¤´k°í¸SkntµXk·æm‹¥Ö#NŽZoÊM^˜RüQ{ûRæÚZäíI›³8ó¯3þ×iýuÕ|Ýt®ü¹éþÊ‘øŠ+sÅÏÍ×M§µ‚Ò^-Ç^Åa®¢5Wq6ó­¤2WPY+äÄWësêoÖg­ÂâÔ߬o%m¼F¿µJF³>§~¯ëf¼Íö9å7_7ûlj¯ùÚiÓßÍö;¯ö·ø»m<üðùÙ×Tšó„oU¤U×M#-÷åÕ÷[èZÆ›ó«õxóý¶tmåÔ^·Ð;éÚâ”ÛèsŽ7ó¶¶ÇÍ^É!§yf:õ;íuúà ŸŸ}N}N¼N{œx@þWËpú¥-žæ»M¿Få¼~‹¾ºZbíï ­ýí}Êj9*çöÛq¤U4Šëh³\ÅE_[<­¯š³Íí·µÜuÇÓ¬ÏÛþ•Hkñ¸ëk±_q•èäòÃçeŸìª½¯·=m-qP»së÷~ÃmVvÛN7*=šÍ`üÁù]/Žhá‡ç½ðs>#‚Ÿ}A:àÞ»àʯ}–ű88½ôÔúÒïYÞMŽ;ú{'79 <¨ô(zýðçOt½8~ …ÞŸ +p¿›Íµh`×/79 …Ãý“"^.à` 6plß÷Ûñó·Ù{~…dºlºÙ Òäî\Ž‚u’=ïÀbÃñ=,6Òž|ìÐë¬lÓÈѸ…ÎO?çà°Ñ¨8O\þØý± Дî«{mÖú¯^Þ<þ;nz@ºÃÅãOT?àà‡ÇUݸkv¯“µšýçŸ7ÿþ ¬£ÁãOT?ààÇɾpãè­,ˉ4àu é„Ñ?ïÐbg¯s Ç^4´9Šg/¼/¼±»­Ðî´î5·ö®=¯íêÝ;pçf=È`ü`?Àó€ýËò~w\èøacGt¿¹×°Üyju{Õ2t¢âûž‡N>€ü€ƒ>çp∆ß]7-ü~r`mƉ£—nœ°˜p쥕·(˜ÂÁé†Ííž×º ê‚Pd¡Ï_/,Þ~CѦÓ_jm~{Ë@YSÁ8Qê<(ßàå€ðx[ï 7Ðt{Û„âSpÿ€âS”uÄmÎ8³$„, ½ßC·EšN©µ±ÇËç~ž8Ç@y/oÁû¯¸éÆ«“N>ü:‰»¾€ìÿ^ oùÍkz”1܈Âö¸u ¶Ÿq㨭ç`Z{ky¼j ÈÖÚœó^¨•ã%ߺõŸ°Ï5à9ê¥ìP®"­û¨—ŸœÙ /…LJ—§áhüèüdà ÑKŠŸ†ÿhàÇá8~ǘäñ[ÖxZܱ0dÃÒº“bÃ?$øÕšq÷ß"¢ R¬l2Høƒà…¡£áûæ¶¶9¯÷¾ <âß­Ác¨}‰M=ôíaƒ×‰ãSt°=,`Ÿ°3g¦’õOáb@õxoVl^³€¿V#, 8ËÃÅ€J~Š„ÓW+XÀ€FÓ>j Žl:ë¼u,`@ñŽ?l½ƒ³› Þ'ú|†¯w°²YÀ@ªðË0xŸðµ¿ÏòËq0 J…Gç?—Á9Î亮ÄëCý×X0 Œà<õ»óáמð0 úEe.ãέð0 zˆ&Ÿ¿ý,`@ǯénòüt°€ÇKî#tæ=Y_T¡x-¯ÝFXÀ€F‹ÖŸÁ£#½ïxF4¸\#Åà7â?JS©0°„u4J»Yˆ{ÃÑŒ²4ßÖT°0ÿXʃ5ÉοŠYûWM[ŸÞ_‘ÊŠŠ×i‘ äõ7DiÈŠŠ—†£â¥iC=ÇŽ–,ÿш+2püG#~QË`ÅÿQå_Ôþ'‘A{ΣTgZr¢Ä@RA¨ÂZ!hÉÁ­ØE×w´bdž(ýÏBþEéÿ(uGYYX¢¬¿ÑÖ~Ü÷­φŒú—fV|Å ®(ýA¢»yýÎz´)윣éÿŽðqøïH¾Í'®,peøï8)œr¼)aeÑÀ@*ƒ$´rG-Ý$þ£•C8rhæo”þg!ÿ¢ô”ùeýeaý‰²þF½þøï¯8õÁíÞáÈÁ•A¢ÛÅIáîrpeÐÐ…ïIuÓ”¥ïYÉÁ(r€…Ø“úÄï,Äž…DYXˆA”õ§é} û½¨é¿,"Ñ ‹F‡×Rûhȧá#\ aÄ'Xÿùù–÷* Ù°´nã¤ØÃð ~XÿшŽ ñ%ÅGZ±õ¢£á{¸·"n4¸|nAtAŒ¡`ÑÒð‰ :Rû‚Ž©ÿX°Æ s –CùA">?D*//Œ\9$¸IuÓ´Ïke~ûg[ØPÖ ù ï6°ÑèÃÜPàö$la£áKO ø'Zl(YŠƒ„lx¸Ñs"<ŸÒÅV¯¸ÃÆ_×Ð{Ò5Œl8ûFð(Èj4ØàzU ä=P´Ø‚µ÷Ù‚%lèÏ9´ç­÷=¶ ç-©ØÀ_?½QµW=64¹è=-‰ØÀ†²þâaÀ©¦,`£›|gwxØ‚ßÛ÷“lxÐl~9xlä»7hñAÙbu”tß–Ü?Aa£áKò]bï„… çÙÇf°¡cÀ©)xu(zlx¸ÑcžOéb«WÜác n/„¼FG ~]DÇ@Ú±€ Þ³Yþ° .‡q0÷ÐQcÃyÎõ;î³;Ø‚Í 2ÿ° =F´ëš÷=¶ ë©¢ÇFwÏ–ü. >ò'eø§}D¸{páb@ãŒj_ÇÏ~òzåo3Z psÞf8¹d1˜ eõ —€†›|' ¯÷ð_iÏ-ØÎ <÷Ÿ[Á¼K¡“×x6ƒ«?m 06£ÄYR„“k´r"¨™ìOÛËW@KiÏ-œ]w/>ܹEžÍhs™ÆZM³ŽûÓ¢õˆ"¥{Ãïñ2>ZµÔ8ý|X<Ñ#pò„óLÖC¶ ï=8k é; °ZK6Èìa)`× œõwÏŸ v?nƒ_àèXÀ€Ž€Ü÷xk=z­gf8`í&ïÇ`kºÝð3­^YSð÷@^°$„—赂~Nî×Áåu°{”dÏ0àÜ&}>Âñ¯w½ÃËMºд¸.öˆ.£^3SpåºZ´–S[÷ž8§\':7¹m÷TEOº¶ø–¶Åïf-:7µþsú§5—·=©ÖrÜ»UÑ•¯­„¶÷Ý¢ÖtWàj¥û_¹ÉòòÊ•óaÀÑ Kƒ£U˜F­ùkà-¿7^qüÎx©ÍßÍðsž~´n`ä“Ò€l'Õëç_Ò’Wÿuz'¿÷ß?ò¢…•A‚D·—^°¶yÑÁôOµs‰þ\´øaÉÀk:sÍ9[ŸÎ¹Ó<·¼îÃðÂà€‘ïEËë…D7̘s®ÕþE¿fNln>v§áõÂA¢• ݵ}œó÷ºˆ.}“І»ùŽ['QÛ9k¤¶å®ÕìU`* Þ^©Ÿ $za1àè¦a; ß{Ó ô > w¬ùÄíï`dÃÒºa€‘OJ\~|¤½¥ß¬ /°²A´$ý),?‰n’ú¦·„émIïàâ …ÄHîXÓIÚ_‚îÃðÂà€íñÝèHŸHtÃŒÁö0}¶ ¯½¨t8Èu{Ï1ð›,÷ýi7Jh:aÆàqzëFáÁóƒsÌ‹¾êmϦ;ZÍ]~Õ]wúÚ»Þ–ï²Ä£¹zÂÛ?î#¸þÀ¾©óà h¹ãî÷,ññ÷Î;6zïåÀ#(qpñÎ'wž¹{Î[¿wdؘ‹î1óFíç÷üôÆà‰hóLöO­?ÿ j­;ôæ/íyÏãoˆ'Úù‹Ÿ7ð<þøÐ×úó×78püC»N„5Ñ<äµxƒ’‹f‡ûÙþl³î»Ò¡¬ˆ88àø½Ga«tv€éÜóÁ;ßHýû·ö.N^Ã̰\Ô¼$_°9Ñ–¥ ÀÉ_x*üú>-ÊÝæ“äéU'xgÙ¼"Ëç|;À²ñæUÐxÑ}”tãnä>BNLþ:Öt1¯ÂêÝýC>¯‚é¯PìõÇÓ'z’­[´ú+ÔýU÷¸øÏ^œªÎ{^¡î?ãú<‚2ï¼yp´ÜA}¿ƒ›?8ý8Ý/¨ïwpó‡v\ÑôÝç¡î#¶øËÝsôÖkHxpö¡AþqŸ¿ôÖÿQºõ ¥õÖãçTMÑÏ+0êû/¿ùåµÏãó’=×øû4¯Ðôà׉hëþ¼‚çñLJޟЯo´ç /xëñó·<ºõ ÝBÓƒ_Gêo´Þ§ÕÆ3(¹hv¸ÀÒ‚ßW£¼Ÿ¬Í8”ÌÄÁÇï= ›ÑAØAï;þAÙQ…Í&™7ô¾ 1¿`s¢--JÅÄýF Ž ¿>„OKïÛ3x~üúþ¼"Ëç|;À²ñæUÐxÑ}”tãnä>BNLþ:Öt1¯ÂêÝýC>¯‚é¯PìõÇÓ'z’­[´ú+Ü]K8”þ£´äа¦ú#ØÎ’øÐÊ/:²øÕê‚ù>† -l~œ ¸c¤zQìôƒñ–Ÿ 1 áÜüa ÑMÃv?¤ù’“Ìšó7¤óÛŽF p}þn„M¯3ˆùQAç é+6-Ä}ëF‡#Œ\lä{–·Ÿ|§g9=ûXÅ…Ê¥îF†£ÞbKÏòöSGëÍ¿Qr4êh-›‘jp48kGU< ø\pˆÃ\‰‚ÔÖáš‘WäÞDÙ­gY‰‚ŒcX9²fä;9â0ëh#¯ØÑ抶ŽÙi…ÑÅùû€\R£o m)ym߬õÑä›ûpÞºë /ÍLf“#JÝ4çr´xëËï´9‚œo´g}½…ËïÑ>w¡s’Ï·ö•Wt{VŸ»‚·æ;Ztä2á-l5 Ìç.xéJ¡9ÓÙ›Sô‘ÖÓs—ׯ<>¯¢ù>Œ=Q×Ѧ3üΓöž!])õVGÃò»O²¤6„±NwîÖãþ™GÂÛ÷aÉÙíeÿŠý'“5ë; zÚ¿ª·ç.º\AÚá/¥=ì_¡¡b÷¹ ‹í>¢=ì_¡#ç¹+X„·Ûžö¯¢ïÀèêôçdw·Þö¯êñ½W°6†CÝ^ö¯Ð¸Ø~ïÅÎÎ,õ2œg0tlðAîEÑëùhÈ&GdÚ›=Þ”äçmy²éq£Ž>¯‚Œ¾$‘ÞZRl´Î 癿$›Ø@AU>*¯èeÍ8ÀI 2¾Aö(hÈ¢z+H¦;ŒuÀ[Goa@'¼‚“Æ| s cs±ƒÍ¾-¨9äs0;ënþf³ocáë°Mø”µh‚ìM¢¨Rõøœ[ϸÑ%ùüBÿ­¾d6âÃ:îzÝF9Yß?Açdÿ¹«÷†ëuÿ¤ñÜEÓRúýg=ÌcVûcº˜Ñ†¹†µ·y O…‡0ü¼bg¾ÒãŽÞßèúØXÚã|¥Ç^^µ§u ^¿bý9—žlxI¬ì}6õúPûË«úû~‰ÍÕ‰÷`¤}[59ìÁëlïÁž)lÕä òŠïYîé!cûû%6ž é¢b9¯Ø¬÷ì>ç¶Çïëõ½WÏt¼Ñ¾¾C¬×÷^Á?kÕ~ Ô6X¿ïŒÜÆaòB(`áÇÑKËèªlòúL“ÍeòêGw^ѵƒÜº ×­ s•'ìúT r^…YPõ‘¯„áÞ%­¬¬A®[¤=:½(ÑÝ…ñ· (}AÚ"›ôÙ:(}Aî ¢ÈÆÑVÏv‰—†èä½y@×+" Ž Aá¥å#ò4¨CC‹#ßGAÍ•`×2}ì¯[a½ ªîøÏðë\óŠ~} §/¨¹-›ë@XõW' ÿðÞµÆÜžÑ÷@Ò`º?\Ù(ø_î•#xïlAcµå¿Î¦ÿJ«ÿ+­¾–WýÜL#¯“Zñ{ÓH«ÇÜiœúZ_Ë+~’]ùš¯Ý0µ–’Ý¢ßÝ6y7>7þZÿI­|+¹êr»'»âwÚ!{ê—[ýש_vÈqÒ;å9éòœþrêpú˩˿µ?@¶ÕæO­œøºZNÐün>ÝjÌ>ÿÎZ§W»ýi@õ­‡„¡Û_ŸQ} Š‘W]q›_n´0õ ¦¾ò4‡aòÛ)³õœÄ™Ÿ­u‚jg­ýµ54÷[ð;í®]_`ê#L}u«ï SßA>6¹8g­:›~Žÿõÿö_góµõ×ÏñU§µâ¾½ŠÊ\Ee­ºŠ¯æ‹¯¸2WÉ0WðØ+î¯<íU’â«([ëo¾¶Wè1kôÛ«d¶ài«¿él–³òç¶ú›¯­UcÎëf|ÖjÞ¶öÔÚëôG[¼N{šýë¼vÚß|í´·ùÚé/|~öÉŽ<õꋜó¹íú-ÕŒ»õiNùN9R©Fž—>ç|s«£­û)gýqÓߺ¦9õK;¼ðùÙçÔçÖ9ýï†Ç9î¬Çnò›©”ÕwZŸÊ Š•ÿï6Þ–³éJ]ÍçìmVŽ5g„»Feµ·ÜñH+¤¨5ÒÝõµàiùÉË[ßJMÞöKmä¶hQ]9Zî:ñ€ñùÛ×6ÞxWÚ#9øGãh£q4ŽÆÑ8Gãh£q4ŽÆÑ8Gãh£q4ŽÆÑ8Gãh£q4ŽÆÑ8Gãh£q4ŽÆÑ8Gãh#Š£é_T5}±®qÆŠõà’\šËry®È•¹*×[›[‡ëÄuæºp]¹n\w®·1·)׋ëÍmÉmÍmËõáúr;rý¹Ü.Ü@nwnn··7˜ åäáãçŽäŽâŽá†s#¸‘܉ܩܿ¸³¸s¸s¹1ÜXn7ž»˜›ÀMä&q“¹+¹)Ü5ÜuÜTîFî&îfînwww/÷÷7“{”›Å=Î=Á=Å=Ã=Ç=Ͻ̽νÁ½Å½ÍÍãÞã>à>æ¾à¾æ¾ãp ¹EÜbn ·”[Æ-ç~çþäx^äe^åu>ÆÇy›Oòi>Ëçù"_æ«|~m~¾ß™ïÂwå7ä7â{ðó›ò½øÞü–üÖü¶|¾/¿?ÄïÅïÃæ‡ðÿàäæå‡ñGðGòGóÇòÇñÇó'ð£øÓøÑüyü8~<1?ŸÈ_Æ_Î_Á_Å_ÇßÄßÌÿ›¿•ŸÁßÍ?À?ÄÏäågñ³ù'ù§ùgùçøçùù—øÿòoñïñòŸðŸóóù¯øoøïøïùÅüOüÏü/ü¯üoüOTÁ’BN( k k ë„ÎB¡«ÐMè.ô666¶¶¶¶¶vú ; ; » » {ƒ„½„}„ÁÂaáá@á áá0ápáŸÂQÂ1Âpa„0R8Q8I8]8S-œ-œ+\ \,\&L& W S„ë…iÂtáá6ává.á^á!á1a¶ð”ð´ð¬0GxAxE˜+¼#¼'|(|"|.̾¾ ‹„ÅÂa©°LX.ü.bLLˆY±$–ŪØA\[\Gì$v»ˆ]Ånbw±§ØKÜJì#öwwwww÷ÿ&î-î+þ]ÜO*þC$>,>">&>.>!>%>#>'þG|M|S|WüHü\üN\ .‰‹Å%âRq™¸\ü]üSä%Q’%UÒ¥˜—l))¥¥¬”—ŠRYªJ¤µ¥u¤NRg©‹ÔUÚPÚHê!m,m*õ’zK[J[KÛJ}¤¾R?i€´‹4PÚ]ÚSÚKÚW" •”‘•†IGHGJGKÇJÇIÇK'H£¤“¥S¥3¤ÑÒÙÒ¹Òi¬t¡t±t©4IºBš"]-]+]/Ý M—n‘n“n—î”î–î•î—”•fI³¥'¥§¥ç¥—¥W¤×¤×¥7¤yÒ{ÒÒGÒ'ÒçÒ|é[é{i‘ô³´\úMúCâdA–dEÖdC¶å”œ•Kr¹£ÜIÞ@î*w“»Ë=å^royKyky[y{yGygy ¼‡¼·H&%#—GÈ#åQò)ò™ò9òùyœ<^¾Xž _.O‘¯•§Ê7ÉÓåòÝò}òƒòCòLùQy–ü”åå!e¦ò¨2K™­<¯üW™«¼©¼­ÌSÞUÞW>T>V>U>Wþ§|©|§,R~V–+œ*«Šª©†jª–šPSjF-ªÕ®jµ§º‰º™º¹º…º•ººº½ºƒÚOÝIÝYÝUÝMÝC=H=X=T¦¡¥«ŽTOVÏRÏVÏUǨcÕqêxõbu‚z¹:E½^¦ÞªÞ©Þ§>¬ÎTUg©³Õ'Õ§ÕgÕ9êkê<õCõ3õKõ;uºP]¤.V—¨KÕeêr•ÓdÍÒÒZA[[먭«­§­¯m m¨m¤õÐ6Ö6Õzi½µ-µ­µmµ>Z_mG­¿6@ÛE¨í®í©ýMÛ[ÛWû»¶Ÿ6Tû‡vvˆv˜v¸öOí(ím¸6B©¨¤¢¦¡ýK;K;G;O;_»@»P»H»D»T»L»\»B»J»Z»V»^»A»Q›¦M×nÑnÓn×îÔîÖÐÑfkÏh/h¯hsµw´´OµùÚ·Úm¡¶H[¬-Ñ–jË´åÚoÚ§ º¤+º¦º©[zBOé=§ô’^ÑÿO_K隷«¯§¯¯o w×7Õ{é½õ-õ­õmõ>z_}G}g}w}/ýïúú!ú¡ú0ýýHýhýXý8ýxý$ýtý,}Œ>V§×/Ö'èõIúdýj}ª~³~›~—~¿>S\Ÿ­?©?­?«ÏÑ_Ðÿ£¿¬¿®¿­ÏÓßÓ?Ð?Ò?Ñ?Ó¿Ðçë_éßèßéßë?è?ê?é?ëËuÎ ÉP Í0 Ó°Œ„‘5JFc]£“ÑÙèbt5ºÝžÆ&Foc£¯±“1Ðdìghfi 7N0N1N5N7Î4FgçcŒ±ÆEÆDc’1Ù¸Ò˜b\c\gL5n4þmÜnÜc0>2>1>3¾4¾3¾7~0~4~2~6~1~5~3ø˜‹Å±l¬['¶a¬[¬{¬gl“Øf±Íc[ĶŠõ‰õ‹íÛ#6(¶WlŸØàØØþ±bƉ ‹ý3vtlDlTì´ØèØ9±1± bãcÅ.‰]»,vyìŠØU±«cSc7Çn‹Ý»?63öxìéØK±7cïÄÞ‹}û$öiìóØÿb_ƾŽ}[[[[[[[[û=ögL2uÓ2ÓfÁ¬šë™]Íææ–æÖæ¶f³¯¹£Ùß`îfþÍl567413Gš'›g˜g›ç›ãÍK͉æ$s²y¥9żƼΜjÞlÞfÞeÞo>h>l>b>f>n>a>e>c¾`¾bÎ5ß1?0?5ç›ßšß™ß›?˜?š?™?›¿˜¿ššR\[ñt¼¯Æ;Æ»Æ7oß6Þ'Þ7¾c¼|@|—øÀø ø¾ñýãŇŊŸ?#>&~a|BüÒøeñËãWįŠ_¿6~}|ZüÖøñûâÇgÅŸ‹ÿ'þZ|nü­ø¼øûñ/âÿ‹ÿ:þm|A|a|Q|q|I|i|Y|yü÷øŸqÞ-ÍŠ[ÿg­c­ou³6¶6·¶¶¶±¶³¶·v°úY;Y;[»Z»Y{Xƒ¬½¬}¬ÁÖkë k˜5Ü:ÙºÀºØºÌšdM¶®´¦X×X×YS­­iÖtëë6ëvëNënë^ë~ëAëaëë1ëqë ë)kŽõ’õ_ë-ë=ëcë ëkë[kµÐZd-¶–XK­eÖ¯ÖoÖg ¶d+¶f¶i[vÂNÙ;gìªÝÑîloh÷´{Ù[Ù}ì~ö.ööÞö>ö`{ˆ½¿}€} }°}¨=Ì>Â>Ò>Ú>Ö>Î>Þ>ÁeŸlŸjŸnŸi¶Ï¶Ïµ/·§Û·Ø·Ù·ÛwÚwÛ÷Ú÷ÛÚÙ3íGíYölûIûiûY{Žý‚ýûeûUû¿ö\ûMû]û#{¡Í%ä„‘ˆ%â ;‘L¤ÙD>QL”ÕD‡ÄÚ‰u]]ÝÝ=›$6KlžØ"±Ub›Äv‰í;$ú%vJìœØ/qtâ˜ÄðĈÄÈĉ‰“§$NKŒNœ——¸$1)qUâÖÄÌÄ#‰Ç'žH<•x&ñ\âùÄ‹‰—¯$^K¼žx#ñVâĉOóß&~H,Iüšø3!%õ¤•L' Éj²c²srýäÉ “%{$7Nnšì•ìÜ2¹urÛdŸdßäŽÉþÉÁÉ&MŽLžœ<#9&yIrBrbrRrròÊä”ä5Éë’S“7&§%§'oIÞ–¼=ygrvòµä'ÉEÉ“?%Nþ’ü5ù[ò$—RRJIi)#e¦¬T"•M•RR릺¤6Jm’êÚ9µ_jÿÔ©ƒR‡¤K‘:&u|ê„Ô¨Ô)©3Sç¤ÎKŸ—º0uQjBjbjRêŠÔ5©RÓS3R÷¦J=–š•šz*õLê¹Ô ©WRsSo¥ÞI½›ú(õyj~ê«Ô7©oS R?¤~Lý”Zšú-ŧ•t,JçÓ•t5Ý!Ý1Ý9½az£tô&é­ÓÛ§û§wJ”Þ7=$½ú€ôáécÓÃÓ#Ò'¤G¥ONŸ–>/}~ú‚ôøô¥éÉé+ÓSÒצ¯KOMß”¾%}Gú®ô=éûÓ³ÒO¤ŸN?—~!ýbú¥ô«éÿ¦ç¦ßJ¿“~7ýAú£ô'éÏÓ_¥¤L/M/K/Oÿ‘æ2BFÎ;“É3åL5³V¦cfÝLçÌú™ 2Ý2Ý3=3›fzezg¶Êl“Ù.Ó7³Sf`fPfßÌþ™ƒ2Ã2GeŽËœ˜95ó¯ÌèÌÙ™ó2çg.ÈŒÏ\š™œ¹>3-skæÞÌý™333ffežÈ<™y:ó\æùÌ‹™—3¯gÞÎ|œù4óyf~æ«Ì7™™Ÿ3Ë3\–ÏŠY%«el<›Ê法ìÚÙu²²ëg7Èn˜ížíÝ>Û?»kvïì>ÙÁÙý²C³ÿÈœ=*{\öÄìèì…Ù˳×g§foÌNËNÏÎÈÞ‘½+{Oö¾ìÃÙYÙ§²s²/e_ɾ–}=ûFv^öÃìgÙ/³ße¿Ïþý1ûSvYö×ìoÙ?²\NÎi¹X.‘+æ*¹¹usÝrÝs=s›ä6Ëm™Û*·Mn»Üö¹þ¹¹]rs»çöÊý=w@îܹá¹Q¹³rcs—ä&ä&æ&å&ç®Î]—»!7=wWîÜìÜ ¹×roçÞɽ›{?÷aî³Ü¹ù¹¯rßäæ~Ê-Ëý‘ór^ÍëùX>‘ÏæKùùuóëå×Ïoß0ß3¿q~Ó|¯|ïü6ù>ùòòƒò{çç‡æ‡åÈ™?:l~dþ„ü¨üÉùSóÿÊŸ•?'^þüüøü¥ùÉù«óSóÿÎß™Ÿ™"?'ÿ|þÅüKùWòsóoåçå?ÌÏÏ—ÿ9ÏÔ‚U° ÉBº-”  ëº6*ô(l\شЫ°Ua×Âþ…ƒ à à ÇŽ/œPU8­0ºp^a\á’Â¥…Ë —®(\S¸½ðXaNáù‹…— ¯æÞ,¼]˜Wx¯ðqá‹Â×…ï ‹ K K Ë Ë \Q.E»˜)抅b©X)®]ìX\·¸^qýb·bâ&ÅÞÅí‹;w*,îS\RÜ¿x@ñâ¡ÅaÅ#ŠG‡GGO,žT<½xVqLñÂâ„âeÅÉÅ«‹ÓŠwï.ÞW|¸8³øhqVqvñ™âœâ‹ÅW‹ïß-¾_ü°øqñ‹â‚âÅÅÅ_ŠËŠË‹¿ÿ,J%¥¤•Œ’YJ–r¥ri­R§Òú¥®¥¥-J}KýJJ»•v/íYú[iïÒÒÐÒ¥ÃJÇ–F”N(R:»t^ilé¢ÒÅ¥ ¥‰¥I¥«JW—®-]_º¡4½4£twéÒ#¥Y¥'JÏ–^,½Zz£4¯ô~é£Òç¥/JóK_•¾)-,ýXZRúõ¯H¥¬—­r¾\*WËËë”;•;—»”7*oRî]ަܷ¼c¹y@y—òåËÇ•O,ŸZ>§|nyLyly\ù’ò¤òUåëÊ7•o.ÿ»|kyFùîòìòóå—˯—ç–ß,¿]žWþ°<¿üuù»ò¢òoeµ’¨$+éJ¶’¯T**ëWºVzT¶¬ìPÙ±Ò¿2 ²KeÊ Ê^•}*ƒ+C+W¯]QY9±rRå”Ê™•s*c+U&V&U&W®¬L©\_™Z¹±2­2½2£rGå®Ê=•û*WfUžªÌ©¼TyµòzåíÊû•O*ÿ«|SYPù¡²¤òså—ʯ•ß*|UªªU³š­ªåêZÕ.Õ®ÕnÕîÕžÕ^ÕÍ«[T·ªnSí[íWPÝ­ºouHuhõàêQÕc«#ª£ª'UO©žV=£zvõÜê˜êØê¸ê%ÕIÕ«ª×UoªÞ\ýwõÖêŒÿgïI£*’÷Þ$Ä€*9æ¾ï3sg’™L’I&wˆ'ë"ë÷v/F>^>Q.“«å¹In‘Ûä¹WÞ$ïÈ–*?\>Y~”üù‰òSågʧËÏ‘Ÿ'¿@þWù5òÛäwÈï–/–/‘/•?.B¾\þ/ù ùjùkò7åëäË·ÈwÈI¥(ST(F**cãã(ªµ ¹B©P+ “¢°) ¯"¨ˆ*šIE§¢Oqˆb²âHÅÅTÅÑŠã'*NVœ¢˜¦8Kqžâ"Å%ŠYŠ9Šk7((nQܦX¨¸S±XqŸâ~ÅƒŠ‡+–)žT<¥xZñ¼âEÅËŠUŠÕŠ7o)ÞQ¬S¬W|¤Ø¨øXñ©âߊ¯ß*~PìTH”eÊQÊ1ÊñʉJ™R¯ô+“ÊNeŸòådå‘Ê)Ê©Êc•Ç+OTž¬Õ!ªcUÓUç«.VÍRÍV]©š£ºZujžj¾ê&ÕÕíª;U‹TKTªQ-S=§zEõªê ÕZÕzÕªMª/Uß«~PíPý¤ú¯ŠPSê2u…z¤ºR=F½Ÿzõu•ºF-S+Ô*µ^mR[Õ.µWíWGÔÍê.u¿úPõQêÔ§«ÏV_ ž©¾T}¹z¶úJõ5êkÕשç©ç«oV/T/R/Q?¬^¡~Ký®úCõÇêÏÔ;Ô#4£4£5•š±š š55ÕšZJ£Öh5zQcÓ84.GS§ i4 M›¦Ks¤æÏšéš‹4s4×jnÐܦ¹]s‡æ.Í"ÍÍš‡4hÓ<©yJó´æYÍ ÍËšUšÕšW5¯kÞѼ§Ù ùTó…ækÍ÷š5»4”v„v_í8íÚ­R«Óšµ­WÔFµMÚ¤¶SÛ¥íÑöi'iÓ¡ýƒöÚ£´ÇhÓž =IûgíéÚ3µÓµçhÏÓ^¤½D;K;G{­öíííÚ»µ÷iÒ.Õ.×®Ñ~¤ýDû¹v‹ö;í÷Ú´;´?iÑ:JW¦«ÐÖí§;@W­Sèº]BצëÓMÕ¦›®;_w±n¦îRÝåºÙº+u×è®Õ]§›§›¯»Y·P·H·D÷°n…î-Ý;ºuºõº÷uuë>Õý[÷¹n‹n—®R¿¿þ }­^¥Wëµz½Þ¨·éz—Þ£¯Ó‡ôõúF}³>©Oé{ô‡é§êOÔŸ¡¿@?S?[•~®~¾þFý?õ7ëoÕß©¿[þ^ýýÃúÇôËôÿÒ?«^¿Rÿ¦þ}ýFýfý—úoô?êIC…a´a?Æ  Õ†ZƒÊ 1è ƒÉ`7x C½!nè3L5k8Ép¦áÃ\Ã|Ã͆…†E†{ ÷–0±m¶}fÛbÛjûÁFÚ¥ööJûAv•]o·Ø­v»Ýe÷Úƒö¨½Éž´§ì]ö^ûaö#í²m?Æ~¼ý$û4ûÙö í³ìWد²_g_`¿Ý~·}‘}±}‰ýaûãöçì«í¯Ú_·¯µ¯³¯·`ßdÿ·ýkûVûvûûOöŸí¿Ø G…c¤cÇ~ŽýÕ¥Cï8ÂŽ˜£Ý1Éq¤ã8ÇiŽéŽó3W9®vüÃqcžc¾ãÇÝŽû9žv¬q¼îXëØàøc«c»ƒpîãí¬tîçÜß9ÁYí¬uÊZ§ÞitÚ^gÈÙáìv8tç<Íy¾s¦s¶ó*ç|çBçλœ÷8ïu.q>â\î|Ö¹Ò¹Ö¹Þ¹Áù¹óçN§Ä5Ê5Þ5Áu «ÊUã’¹4.£Ëæò»b®”kÀõG×ñ®]'»NwéšîºÀõ×E®®K\—º®t]ãºÞu«k±ëq×3®\/º^v­r½êzÝõ¦k­ë=×F×\߸~pý×EºËÜû¸G»+ÝcÝãÝÕn•[ëv¸½n¿»ÞÝênw÷¸{Ýýî÷aîÉî?¹OpŸâ>×}{†ûJ÷UîëÜ×»opßè¾Ù}«ûv÷]îÅîÝO¹Ÿq¿è^í~ÓýŽû}÷îÜÝŸº?wÿÇýµû[÷ÏnÊSîíç9ÈSíQzTGç1y¬'äið´{:=ýž?x¦xŽñë9Þs¢çÏ4Ïéžéžó<zfx.õÌöÌñüÃ3×sƒçFÏÍž[=wx{ô<âyÂó¤ç)ÏÓžžà]î}Åûª÷mï{ÞÞMÞO¼›½Ÿy¿ô~ëýλͻÝû£÷oYÝ>uûÕ©ëtu–:o]´.Y×W7¹î¨ºcêN­;·î¼º ê.¬»¸îou³êþQwSÝ­u‹ê–Ö=Q÷LÝʺuuÔmªûªî‡ºíu?Öí¬û¹Nâ+÷íãï«õi}n_/ìKøú|‡ø&ûŽñê›æ;Ýw¦oºï\ßE¾¿úþæ›é»Ì÷wßµ¾ù¾[|ùõ=é{Þ÷ªï]ßǾÿø¶ú¶ûÿ>þÑþJÿXÿ8ÿµ¿Ö/÷+ýj¿Ño÷{ý!‡¿Û?à?Òœÿ4ÿùþ™þÙþ«üóý ýwøïò/ò/ö/ñ?â_æÎÿŠÿ-ÿ&ÿ§þ/ýßûÉ@E`tà€€"  ¨Ú€>` 8®€'PðêM¶@wà¨Àѧ.\¸:pcà–ÀûËO–þx&°"°2°:ðZàíÀúÀÇ­miptp|pbP4]AwÐôÁp0L[ƒ=ÁàáÁãƒ'O žœ¼!¸ x{ð¾àÒàãÁ'‚˃ÿ >|)¸*¸&¸6¸!¸%ømp{P’…Ô!CÈ ‡"¡h¨15‡R¡ÎPw¨7Ô:,ôÇÐÿ…N M M]ššº"4'474/´ twè¡ÐòЋ¡WB¯‡Þ }Úú,ôEè«Ðסm¡ŸBdxTx\¸*\V‡uaKØö†cá–p*<þcxJxjøèð1áãç„§…OŸž¾ <#|ixvxNøá›Ã‹Ã÷… ?^~:üJøð†ðáïÃ?†©È¾‘q‘ý#"F&Fj"ªˆ)b4Dz"‡G&G¦DŽŽùsäÜÈ¥‘+"×En‰Ü¹3rwäžÈ½‘û#F–F–EžŒ<YYy%²&òZäȺȇ‘ ‘M‘O"›#_E¶FvDvE¤õ£êkêmõÎz_}¤>^ŸªÿCý±õÓêÏ«¿¤~Ný õ·×ßWÿPýÒúgë_©§~Cýõß×o«ß^ÿcýÎú]õÒhytDtTttt\ô ¨"jˆZ£®h[ôÐèÑ£¢ÇFOŽž½,:7z[ô®è½ÑÇ¢ÏDWEߎ~ý<úEô«è–è7Ñï¢?FwFŽþ%*öm×p`ƒ®ÁÖP×ÐÙÐÓppÃ䆩 '6\Ðp]Ãý 4,kXѰ¦a]憯~hØÞðcÃΆŸ$å#G5Žn¬lßXÕ(oÔ4ºÛ§6Nk<£ñÜÆ‹g6Îi¼µñ‰Æ·ßmü°ñ³Æ­ÿm,UŪcµ1ELÓÅ,1WÌ«5ÅZbm±ŽXw¬'Öˆ;6vBì䨩±Óc‰]›»"6'vulnìÆØí±Å±%±GcËc/Æ^Š­Œ­Ž½[û(öIì󨱝b_Ǿm‹íŒQñ}âããµq]\7Æ-q[Ü÷ǃñúxS¼9ÞïŽĈ?6~rüôø9ñ ã_¿,>;~uüúø?ã·ÇÆïŒ/Š/Žß4¾4þdüÙøŠøKñ5ñã[â?ÄwʼnMÒ¦ò¦QMc›&6©šÌMž&_S°)ÒÔÐÔÜ”jêm:¤éä¦M74Ýßô@ÓCM6-mz²éÙ¦5Më›67mmú©‰LŒIŒMŒKLH˜¨N(ê„>aMØîD јH&M—891=13qiâòĉ¿'®IÌKü3q[â®Ä½‰e‰k¯&^O¼•x'±>±!±)±9ñUbKbkbG¢¬yÿfe³ªYÓ¬o¶4;›ÝÍÞæPs¢¹«ùÐæ©Í'5ŸÕ<«yNóµÍ74/h¾»yQóâæ%Í7?ÞüDóòæçšW7¯mÞØüeó¶æ_š÷o9¨¥¶EÕ¢oq¶¸Z<-¾–pKcKgËá-ǶœÔ2­å¬–óZ.i™ÛrGË£-µ<ÞòdË3-/´¼Ù²¡å?-[[¶·ü·…hݧubkUkM«¼UÓjl5·Z[Ý­‘Ö–ÖI­S[OmýKëŒÖ+Zç¶ÞÞº°õÎÖE­KZn}¢õÙÖ5­ë[7µ~Ѻµõ»Öm­;Zn%“#“c“5ICÒ‘ô'’Éx²9ÙžìNö&û“‡%ÿ”<9y^òòäõÉ;’%ŸN®N®I¾–|3¹.ùAò£äÆä¿“ß&w&ËÚÆ´MlS·ùÚÂmmÍmím“ÚÚi;¼ímG·MkûKÛì¶«Úæ¶Ío»¹mQÛm¯´}ж¥íë¶oÛ¾oû±mW›¤lÑ>®½¦ÝÔîoonïo?¸ý°ö©íÓÚ/j¿¸}FûÌöÙíWµÿ£}^û-íw·?ÐþLû í«Ú_k»ý£ö í›Ú?mÿ¢ýëöí©Ñ©ýR¤ªSÚ”;Õ˜Š¥šR-©Tª'ÕŸ:45%u|êŒÔ…©Y©Ù©+SW¥æ¦æ§nJ-H-L-I=žz"µ<õ\jujmêÝÔ{©©/SÛR¿¤FvìßQÛáìu$:º:í8©cZÇYçu\Ô1«ãÚŽww<ÔñbÇK+;Vw¼Ñ±¶ãÝŽ÷:6v|Ù±­ã§²sL§ºÓ×ÙÞyhç1gtþµsFç%—u^ÙyMçµ×uÞÔygçv>Õ¹ªss'ÑUÙUÝ¥èÒv™ºì]®xWG×Á]SºÎè:³kz×¹]vý­kf×e]ïš×u[×®;»îíz¬ë™®çºžïZÕõv×G];»ìvwwuOî>¡ûìî™Ý—v_Þ}E÷ÕÝ×uÏëžß}K÷=Ýt?Ûýj÷ûÝŸwÿÐMõŒèÙ·g\Ï=Ês·'Ú“ì™Üs^Ïüže=ïöìèù±ggÏ®ªwDï¨Þѽãzkzu½áÞÞÞƒ{èÒû½§ôžÓ;£÷ÊÞë{÷>ßûaïöÞ½?õþÜKöUôìÛ§o¿¾ê>m_ ¯£oJß}—õÝÔwOßã}/ö½Ý÷eÑOöKû+úG÷ï׿ÿ„þê~m¿½?ÚßÕ?¹ÿ„þ³ûgö_ß?¯~ÿ?ûoë¿«QÿâþûŸì¡ÿ¥þ•ý¯õ¯ïÿ¤sÿgý[úwô““ÆN’M²L N˜4mÒ•“MZ2éáIÏMzÒ¶I?LÚ1iç$É@Ù@ÅÀÈ1Ô†Ç@d 5pøÀñô¿Q-ô“{4ßOi¨ùOxD˜ŠÌü˘p«˜R ɃÂòé&VJ>¾T„†ç§P Xv~K»ðYø¶¶·°ÝóQˆÃ)|î çÚ…ZJ¬eø­_—ŸI-Fø­\Þ*ìð3× Šá.åqÌý¤ A×\ÈÅò®¡­-nV†»4+½”í•rO­Lig„õýµíKø™klpv-ílb#|îh‘/®i¸Pn+¿¤øLÃL¸Ù‹)»˜hÌ®¹çÉ¥…îBO4žs~Åú¾°Çá[…ÍÂ÷ºü3 ÙGìâV³pîÃcÜ, 7!H¡+ÛÂUeaœù+‹ê1¸=—…Ädñ|»–SœÖƒÏÉùc—°¶¹,+”ýáÖ`õ³c}·³~[?¥ôŸ¡´†&õP —h(Ú‹óð®e)l¸çÖ¥Ô¶—ö„ÕÅW#|¼\÷CËRó"BuK±l–ŸÐSœýñÏÒÚ¯9ßÃQ FÒÁi"ÖŸ„¹WÆ*Þnµ†ê …Ö¯b%+­Ö¥’ZœðžÀ÷ßBý û)¿„pk¸eŸ¸Ú'I(egAÏ^¥ôÐÁË‹[cüªãΓ¥µx^TŒX³·I+®5kÏ/òaì»se’JÀN¯×ðÚºôkQjN·Ë3oxîôÿ<×8%B²½s÷Át(ç±+/eyÂ~ÍÅrZ\ßbøá ÅÕF ñ—"»3·6ü† ÷Þ;=.·Fp ƒkHÆ•Ëâ0 åNÿ¦²- ÑQè(.vŒá×€@\àÎ Ö=POæ‰ß_üý4+ ÅK£?Ÿ>ŸÔ…{M>-‹Í£ÔÒç- –["|}ÄŒ‚58{ •·8ysÓ íÀ\žžßïQ®¢€3±˜ÝŒòÇÛ®\"ÍÔd4ŒÂ@)VPƒ€È`¸ZŽ¿Cø#\y„ý»trqæ¯:wµ Ã+\‚¡k-•Œàd«œœê Øç„(†n)xÏÀ³3³qaÔ å)­¿å޾Lëwûßñ7T¡V.å$Ò,¤ŠËBã”àŒB9c8ägÞ¤€ü`œ‘È*ü]á½…óÎ\­ÒqÈŹÔû;ŸC×:Ÿl0‰àð)‡n«Üå·ëpÙŠ”ë[Š/)-®_¡³ ­TþÙ‹m§Üy×âSÛV(ž­ÄÍ>˜8 çÜrv.\žÏ•'àLQjù…Þ€ ßâb÷Ÿ“g•gÇq–#!{q3SqfçëBJ¹ÛJÇá9F7Oï™(5<§§¡q(¥Ô¹­^¨'ä’Gì<âð ·ÕP9‹•6Ÿ{Û‰‰ß*­BoÀ%„Ïyï©3pqÕ9_ äkó÷¯úÍ?Ù§£§L€É… ö^©´qi¨Qwo–á×jm<ðmÔßÅ}wì¦üß*ƒg*žEp-&’2{œÑ´è85¬ó ïíY«áüÇŽ„Bã¹WgèÞžbkü¾) ¿áò–b[‰H,§|Ò¬»Øí‹ålÁÄ=®ßòÇ©ag¸üd¸¬&äc8?Dߥô›ÁY­Ø9½Øõ@1ñ~½V›1I¡'> WÅÎU<«àZ¥ÏÇ8.ÀNøY˜ñ\Ñó×d§ÁÉVšµ)†ÕÀ³8u‚¤Ð*¡t~RlÅÇs1¶*Õ:ïÉꈿº8.üýÀ/}.; Æ Ñ÷pÄiÑZƒ“ܦr#$ÿ¶•;N…^¬~L-Àÿ¦ü¯Ýþðþ•æèÃV$80R"…8I>ä ­šZ.;RÊþ ãÜ‹-ÀsÒÿl曫Ò,”ž³Œãax<*‹™¯,‹™Ÿ_tçÌø$ƒÃHOåì]´°å» Y^{1–Ï僰_‘Hõ)&ŸPœɉÑ0n;?÷›ÐT¶-ŽO™„Âð)¦< Œö,À7—P»|÷oøì.Íô)ná¤âJÈ@„´Fq¸Zà5ÂiÇ­ÓË3¾NBmx(ˆÃÈŒ.L$IÃFrv £1(dM„%BW˜ÌŽ;ƒl ¯RédûmZkdÖ+aÙhy÷”µJ%ÑÞb-þ8ÉVÅDF–‘™] ÿíÇHh§sõú_õÛbÈ8ó%â·ø6bäfÚ…ÎWžù]–Õ¶<ë[ C‹00!‹*I)}Ç›yÓ¼QKä÷±0a_§ŸpÖF½YY*«#?•Õ¥PÏœ‡Â´ f´hE*l ¦Naf`V—®7G#¾GC€ÿñ-¼PŒ¥Àì°<¥Ö¹~ÂÔâùü¤œÝ‰çç·ã'`ï“È›B¨ÅØdÏxÄày‹ˆƒœƒÍèƒ× X¬4“ñ~KAAmnÆäï+Fÿ¡ž’ÒXüSC[ž•¸,«±4ƒM@–>GAšás>7³ruÉ/ ,]A¯Œ7*·m'ËÞ³BÀŸŽtÜÙá¿{FëR®$ð}÷îà·°>¨æù~£a/€«f~ÅV—;&Æ> -ðþ7|úJ‘ÙqúU_)4ü)7¡GËîûöà&ëï¹ãz˜Û¶SÝ2£\;€»Ë½7nÖæK òëŠ*R ߯@Ÿ{RÌÕœ­øÞ\*?‚Obbý5ü؃ÆþçG0œÈjƒûÍÝðŽ¤Ø5ò±^”˳FfzeYˆ4‹ÍÀ˜¬E~[ÀуÖŽNôYŠŽ­å¬\0F+÷ÛA\OºuÅùb1ì4˜˜Vl¼Âã")É÷éL!ŸàÀŸ_ÁíÜŸìPìªQYm/É·G†}÷ŽhÏãá?;ÿùÍÐ}äøŽŸÛÇÿ• Éiño¤¨>˜ÏEa.¥ö*8ãqë>á‘ßæJs£%=僱†˜:‚»Â¸ ­_K?€7ÂÚ€:˜ûWBpm̧ø_ñ ’g˜š¹ß(—ŒðoÛqU>®F§¾œÃ“‡€@wØàý"DÁõ#>ÅÞåG$Ô‚Ïà¾Â? BŸÜ¹@–¿Þ àø0§Œ¥¥ïÝPhYúágçžã$²s”c80¾•KÛ\pÛâ¥G3%µ5ð<æ[ úq}ìrq3 /ÜŠáw ŽØv©tgâ)• Ü›*ü8ê‘B>*Nf1{nhû²;§Û噜Àè\–…Ðÿr1³³Ë$e¢p˲ØâpËØ¨!W|,¡wR:ÏÙUäæRæïu¸7”#$Ì7Y) ¾x?àúÅÎSj¯Î% mWØ·i)¨œãèý )vçCÿ¢¬°†‹ËB±®(Ë$Ü<Â_«R[Ÿ”€º†„ì[«ÿ ÛŒ©±À.e`ÌZM2÷)Œ]À=ø³ð/¦6„i™› ˆ•Ü[  Wmát#Y ÆŽ¥·‡=ÅÚ-—=àÕÆé³ƒ öc~{ŒÎÖE„¤"«7£93RÁZ„[ïû÷àW޹ÓJG” ¨&dþªŒWH(Î8SßÁÖ„w:%ÒRÖôéü}*8Ù¼ØÅY3nŒ  ®Ãáßðù™‚¤…e„«W˜£9\§ri¥l››+h_ƒ«uçi4†Š[Ûrv.¸NâîDîy‘ ‡1m Ž=ÀzßûõËV o*—0÷| ØLÌ÷&JRαL'ÍP™ý+…~ƒÓ眵5|ÃÄ¥Áynß Y†–m$Ç2iû‹}Ó G:\^…½÷z\L‚×HŒ=Fg¥y„ñlf¤²H9$•Ø<"NR8P˜“J˜=ÿÍ €–ñlü©´YiOÑîɳԯë 'ö&†šÐJ%¸½Q&anTA¾¿cö#׆Üýâ9.ÊÃÿÒ W!<¸ÊáGpVB÷òðžö>»Ó³§Ï#Øÿ#Ͷªª$áEOU&!òPñg®ãþ—÷ÖžŒé`é}W‘­+Õ§ \>Àà}Î¥ûÐÁàÊ OÏZ艿Ÿq'8°ŸÑ8â?Àñc8â@qï¹ö®[³áßÏ4í ý/*Œ€{;p{ÇÄÂQpþª€ÎW\ê È‹qÔtô­$uEÖ7ðÔù$§9soá=ÞÜ<ÌìŒá«0¸ÙCèÜã070&Jüz½äbð—=ÌêH%ÌÍ"-Sk%qè'IpTö€áŠoc%ôg“£²± üë RN|xÙ<3’ƒW4àSMË=ùüI™È(4/=#ˆ“¹æå®ìðç&x¿í{àáâp÷†ˆ ö„ùoøÆâ·^Ek•öS SùáêBv׋€^ùq¹TpåǧÁsáÒI…bŽß@¤R¸ªˆöÓ|0¡G©Ýÿ ÏãËïeæ 6¼YÝámyBÈã2 :ÿr ½r-óÂD††,hnq®%$_ŽÝ‰wd.N½E°ÿL"À³ƒ™Å"m—IØ¡‚“$$H¨`J¼¹àQÚ.˜€ÉDY4TfHn˜-.;¶A¢ ü)n7›4cœ5è!î³¶å¯Ò;™Ùb ?ho³  _Y< ï¶Œ$(†9kžL›¬È«Ÿ+ÇdŠQpæ&` n6c °#r¿H|H€Y >$åzí8é%än‚W@Jðã!=ÈýgÕˆäÃsQ¦…•bæÄÍŸOVLæË(†€ûø´E &4!¡Xk ‘HÅ®}N4’Sq68%3ÿ¬›[¦“™‚Ã3îÞј€Îú Ø‚\üa<‡Þ™Å`Ï…Rº:Èú¤ô æ ‚S¹pxd_!DŒÙîA–Ó;ß‹¤˜0D©%;?b) v7™7“WaZ[ì dË>S±2 ‡9:2p®Å‚„é à òlŸ®‰r$ueêD)H»z¦Úí$×ÑÙÁ¼HFLs‰9¥ F)ëx.»%¥ò`¡`«p4#À©‘  ÔE[P(Nr×UÆÉÌg¢ƒJä€1’Ó'¹fŽšHeÖji𥣏úÑÁˆÝQàõó¢£W:G ~]ƒÅM8Ö`Îã(?º,CÑ0TÛlèé›÷Èä)ú±»;1û ²-‚…ån¥ðZÙ5Éì9^+'f4- Û"é‰i¡åš—6‘Iu™æ/ÜQ Q“y˜VšLÌhzv”ä=ÈÜ02ے䜗գ†Õƒ+~6Ú720šL͆Øg, ^ÁbÐÂ~Á E®Áx„0,O‹ÌM1x}¯I˜-Xy]ö ËM‘瑜/Ƥ,‘93Q–‚Å?² C‘…U3ÞD¢«P ; µ²þ‚Zˆ%FQ<ÆPÀƦÁ“†‚·»U­&Ø•Fbbz»T¤À(ж‹Ìme¶ϦkSz”àáeºÆmUã™mŠY‚]-îh¦ ÈâÙÆâDƦì(îÅâ'nwãñÒÉ¡ŠMÕlŒ­b#kÕ¢ì¶t¬‚3‘l«ð € Ù‰X™ñ]¶Å ™SͶ2‘…I²j(ÁÍ«Õl>"é£!È/=À804/ËÌ‹Á#X5˜.Ÿ ÍŠ7ƒñv—Ä»“Y~d°nÁçÌ:+G#þÁòKwwg\®]&Úb&>˜§ÙÝ‘r‚Çî.€¥[Õ—B„|UÜúØ4«æÖ/tH˶8{€„”ðö,!%ìÖ`ƒ Ý"ÙJ²A†A†ø‰H'»é˜j ¬´” \€ `ö@7Ö_'¢ÆDñð‡) ¦~ŽyÅò=/Íüœbª¹È™È–~ØÃ¨|ir@­B`„H<¶€Ì‡GwÁœ]A+¾…³‹DhÝਚ‹ E"ù‘`@¨dªš¥e¯;Hî}I†à‘ì…K^ZræÀÐ µ$Ó²3Êʆ>ÎRæ@É%CZ`ˆK†0@Z<<æ*©½¦F¯a«ú<´ ‹ üpxb[s1È1qFi¾ÙaÁº€Z‚>ÇWÁ- ?!ž‰ƒóqìí¯?«ÊÁ?/J›VF ·²Ý* Áƒ[Ux2Sh ã 4ŒJÉ$ÙB³ÊtéÓ“àõ6˜Öq69 dükÒj(x°^L¬|9'¢½Ba=’àQ¤w…%ã2Ðw<¬; dNʚȢ€Ùûû*&tÏâÁ]¤µ9Í¥šÞìYé9Ùµ?È~ª@° ’€»UŒ‰ºÐ€>¸óºDöcw’þö%ÀWêÂV+üÈSÀÑ ÷q!‘@·`à }D­ +ðHV¼£ “ÐãÃD¤•Y’ÌÂÀUNæ*Œd/Ųº!0ÌtƦ—‘Iê°ç00J$^zƒŠÃcü*½x»×lÆ× ˜ç¸#h!GUô8œÞÌÙO×{ „¥-úþ(òU,ç- ²ŸTÈ~Ò*n ¹xË}G"ݲ²2iI,‰~É…jöâûá$¸æËý¥„þöÃ_ ^ æ;ˆÅcvê©lÞg¾\Åì<нJ¤ef[Á2`XѳÕP…1BÕò‹Ì·1˜DEQÌäL‘á“©(²•–„VˆâÔ/{Ê&\nသ)‘xl7S‹NÌV,,íM+=ýA3É~øL2³A0 ÁÄD®¬ƒdà›q•éǂӭdÝ»’•8”tH«d+€J “„+™n¦ö‘înQÒ1$ÔÝý »Òt—ä HÙV–s¦[&­ÌÊLÎcN·’ÍjŒÌÌo‹g‘Ó;–ƒ de¦h ™)ZFfŠ•™¢Å“A–J~ae.ËÂðv&`[!†¥½ µ³‚IÓEUeú1†íŽÉnÎÝéЈ¢»ÙZŒ£ª„Ð¥z‚ÓÕ±«¯cW_‡CI¯¾ŽMÇj¤cü9aÊj®c•† –Ì„ ö:0wëÏìGtÂ>Žã‚¸<+iFÁü6àpA¼å;5wïã=P¿g(Ø–ž ËT‡:‚ȇ`™HX™~Œ¡ïi˜èfFkèÜÝš`‚£æD_ÉE®ÉŽÒ9>=6}ÖÍ>@73Êp&ȉ4ŒC[É¥ýöòaàxÓâ–){H™•Ñ$,¥P È´´Œ²d( S†A™"‚LAD@A†"Š"CTD6ŠÈ•¡8ï/¹ç¹Ë=É5i›BõýûñËårã™÷<Ï=¹¤9Üc³0Ûu g ¨®ÙÌ%mÓ~MíÂVêÍ£Ù4®nã±Ë¢FåÒ+£4®Šêÿät]û$ëVmkQ}?íXã½ÛnñÜZÈxåÚÜüPýŸì>’jþG¹ÔBµWúV×?ažE¿ÔÜyÝ×YÌ—šzsµ5†Ù•÷ŒU}khê[ÍÕVÝ9ij§3e1:>¯­Ú.J·ª½Ò·Š”+ï¹ï¡LïÉžÓsчº¦,B]…†ñÂõë½ìÊ{ƪØjÚàj7rÝzU‹öJ9,4Té±’á|!Fk¦n»(m]¨öJß*3ÂÜw{þêyf÷Õíyf÷c—9=‡þÎb´%Ƽhvå=cUßšúV_á;‡xŽFôZæªHúhDÝ*vQÆ*¡Ú+}«È¿0ê“S¯/îaO¨çpFT]DErD™» Þ¨*ï«z5 ÕÿÉé®Hî]ÜÉóXB3ö ¨E·KÙCäíR.½õ¤åûÙä=±*ÏçqóÝb.›|e4Í¡îÜg1^aî[ý•´Ý굟ò~>ãÌZ¯áj®=V­ÎRÎõOaýŸÒæ$([ ›Ûñrú-­±ŸûôE<;ÃÔÎâjÇËéíxN_g ‘í¸Ï³èíx9ýÏýH‡é½r>^Yo ‘í¸º³®ˆ•ç3c¥õfÄ{«øÇ3ÿäãgÆ~î‹Îý˜UNó™µ]”3ë£Ír¡j@ÆIåú¬¸S½Í1Þ+§¼²ù8Vÿ'‡¯ 泸›p%L5Ìk«g umuçP¨±Ÿ¸yÔ놚»Zm ¹ê‘C®Ì)í•Cò½eU#ëç{å¬^)«¥}d˜¶Õ3_Œªìͳãó®íž_9ýáÈrÆVq͈šSÎó,2_”WÆVýØr¾ŽõÌ!ãZÐãlz¯œ×+å#‡BÌùbΡÔÛ&ñ\¹ù\9½E¤ Ó6ˆ+O]ÕÚ!“gåôU™%V ¶ÕõÈÿ”¯B´´åôÚÏ¢‘1Z$W¬l·„ñÊ5û“S?Â8¬´~˜»KðH´kµ´Þò»W˹nÊéÓ…Å6íUýUNó©²ÙÂXõˆi˜<³¾ZÎãã=¯Ì…lôµî|)c³Øê±Uv@¡z¤muýãîHËpsTÖ×YBLzs3gŒ´LéðÚê™ÙÌ…êÍœ<³˜ú+k¾.C•W¡¡ú+ý=}lVÎ÷±žµÎ¸;q6½WÎÇ+ë­!¦NSyŒ¤Œ¹¡5F¾2\Ï÷Êùxêc—ÒæUÃôVÆ|íg7×0ekas +£qŒýʈÆ2°³èSaÆ­ªz½†ù<‹g:<û-ïtxu¤žéC2ÆÖÙ‘–Q 1 5Ê„ê©MVG5 ýU6½­Yvå=ójvMŸºÕÈ!_;{†ëÙ×fWÞ3¯f7q”c³[m(ìY2–5LtTÙCdG•K\ÓÕD±Ÿ¸õ(â±’Êãß…Íç3å’ ñ쭲뽕Se?ËR0šséïe·ÉcË†é§ ¨ùwmåBä]V9=ëé&´ ²SWVËÉæ)e- }`­õ¦Æ]›»7uŸ^_-§÷°¥Íïi¯ô±rÊV×?ý ¹2[µŒðŸ|_Ǧ­õ¸Å³Ø¯ppâ@OlÜ(ZíWXT=¶u\DyXôç!¦¦ÏØj*‹ÞÞêØ4ŽŒ"‹ýô<°zœ\Ì—uåx!÷’ûù÷8ÂýQ…ûvIÜG‰GýœÊkúWËN}Tª´üÆV÷ ¡¬¾Z8õW®ÜŸ ”s}T[ÖõO¡àŸÅæ•ýXŸé0¶Š<°™ó@ŒP”^ÈØê°”ÕW §þJÿ ƒØÛ\±—«î³øº752^éŸp¸_•q½’«×µtXÆÀšLj*H£sð,jµÎb™ú3õý96$Õ¡©Uœ¸ãñ©H¯ïamêC]㕯gp³ë…’Ó<.m>³¯‡nÕ ÖW M¤¯46¤þÊ|©å0_j9‚u7¾ÒH©͵¯R56¤þJÄÞf޽˜îÈṟêÌ¥ïìþT5»9ðrúY,Ãð(U½?’ ”˜§±èøDÿaê¼”nÑòX¹Õ^[ ùØZDÙÏfó<¢HªçK=\cÖèÅe>ûêèÅΦ’úŸÕ±r«yæ8TŸ96ŽùlÌ+[ì'óÙ²g7½²É‡ºÄH1ƒÑ–󉩔W©Nšxt³Þƒ,÷ª±Õò•xÄRL†”u=â"*ˆ-õ³ˆ§0Ý ·1<ÒúZ±ê9¾ò˜WÑÏâñʳªx^8j×aÞj4´Œ ô§IMICv³`1жšÏ¬ôzúHAyeLËfX6K¾»^½Y2¿çÕåïy¿r7 ®Õ\>V ‹þRÆ%Õ“ª3ÛF©ƒ»T•±žy«1JSÞ õõž¯WV_½¯c9¿nÑèR}u‹rCê¯Ü×–è]ܘƱ9¬ŽÍ¥¯æ4as˜‡°ÆÇîÊt`a¯R°¯QÜú+‘ÔsRCDRÑêç+­ŸÏO¸ž mFflê$Œq¬žúVãÙäôLÖ¤~Wn=•ãk OG‡ê«ÆT]ºotBBôçšÅg@ʱòAn ÑŸ‰öÜâùYB:o`ôU“ô­Eõ€ŒÕ2újN}ÂE{2Ør>Ì(AóV-úÃd¡·ÙnÕ>X*¤ï’Ó×¼™~*Wúƒ…©5›Í´ÕXuo5Ÿ%—û•MΤæÒ7ˆoȯBõ¼JÚ´Õ#m¶°[=£­º“jììñJžÊóU˜{ß«®€®¢\…ç«6[¤M¾òxOßOn•ǺRé*úHí=ת<,ŒBâÄ?î]Œ÷X ¯\ïe sˆ÷Ü«r?Ó‡¹vÑN/¶º÷‹ÿ„ê'06È÷\§òÜ*w1NªŸÞ½Õ”@÷ªx%“jd„ëU¤gv†Øjz¾òÌÉšúV÷{5õ³¸÷«©Ÿª¦€L[E„jºbo¬FºßÓ‹Â÷«˜»¸²™Òc/Óá;#ÔꯪéÅêYRÍs«ÍVÍf^ ñ^ò½³WÕDÄmZhF z¯š^¹þ‰ÑÏR]iŒçV›-ƸHl¦ÃŒ]"õLô¹‹Qi\‘¬nŽ•÷ªÇ†0™Tqmņ˜¯Ï 3­†y®†Õ±Õ8³†ë•ëò ¹%L䟶*W]G¸.¡Xå•ë1òŠ«îS÷Ö[Âb´W6í¤Q^»Èì Óv1Î,_iÙ©Å*[XuÏHÚäª5 ñ*Ô#ÑîpcÅ+‘|‡9ÿŒc•­¢‘ñµ³¯ÜÍ+¦Zþ‰U›ž¡Züb•W²rydg”xÏc«-ÆhÃ<6xî"³3TËqum«Œdus$«›#YÝó•×%TUoª+¯´ëÈæYѵU«ËÅX­£Ÿ¾¾~…ÖñÜj³Õ±™WC¼W£|ïìFý2­o¾.½WM¯\ÿÔÓϯǴžçV›­ž¶DÙÅW[ⱋ¹-‰7ÇÊ{Õô ¡2©¶Ðúúª¶ÁfÚEÙÙÏV÷{®Ï€ê[¾ríWO?"^_Õ6„†„¹þ1½ç•Þ[õ0â-_™Ë·®^1ë+¯´ºaª¢uÌUÔ£¾Ø<«ŠÈ×+íô®»ÊúÊ+±:argã0ïš#VM}hjUÊ|„±‹ÚÚûКÊÎJÕó:÷i®‰Æ#Ö¼ªÖÓÔð]‘l¡Õô÷bÅcg÷VñV×Ü«¡¦c=vö̱êÐ÷«ékgí½PÓ.©VLc—Xs$¢šïÕ,Æ*æ#Œ]Ô&Ò\©•Àëø¨ ~ŽH˧¾¹h«ûXU^Yá*™9¶PW@®ËÊó½úbƒ{ç0}«øÇÔ®ÙÌ'[z 4‚>wÖëAŒ¹«ûxUßÇ.¾êAUõ ®¾Ág‡«·k5ÍŒQ½ÏîØØjÞYKoªµÏZ'k„(׫ªî¦Ïü^]÷÷ή&²ºW‰Ñ7Èæ™ÙaúéõŒ†Ö©¿Š«6ó›Ç.N›Ça6m5R_UnˆL[Ež:]yj¬ºïËÄém!Ĩ9Ôâyí^½Õr›ëVEhî ¡ÚÐOÛ/L?ç.6yÃ&o¾µ ¡r«;¡¡žá:ôÓkÃKy*-.Ñ®¸D‡éû™#ä°ÜàŽ†v®F#Ô ãîÝ9F4´Ð_‰S9Ã<³…Ù½ÊÍs l*7­ÜÜ‘4ŠGŸ5ðˆ©Íæ5#HãæÌ©O8=ß“·F>¢fÚ/Z¿W3×?ϘºKÕ#B Ï£ELmæ˜ÚôéwׂQ´a¡Ñ®WÑz[g*AÏÁ˜ºÁ4!d.ZYÑCC=ÃuÿSK¿£ÄªÍcƒûTµŒ}ŒŸ}î'“åqúZæ1u­Ô£áŠn-WîÖ2_¦µô¤úÞbÕÒˆ]œ>‚ôÓYkÙJ‡¹ÛìZúÖZz FšÏ¬4d'°:6Õ¶NlõܹV-¡ŸÃR«Åµ<7¸W}mµ…ÚõêM®­f6m—0q‚l¼òX5W~#5CÍášßP½ŠŠ µ+ÅêÒp¿rýSK_­åã‰ÑKÁ©W¤Xó+eœh쬌]ª¥Z›ª);‡xýácœhä²ëQëä¨OYU^Ya3&CôfNk•o5¿rÅàV»Øù6ý•<6̳;ÖþrU´Þ²ÿ óìÊC«™£¡+ÃÐg»]ýLuåÕ­·ºã'{g¹Aï%•´¹ûÆ[n5¿ªnÚÏÕ‹Tj¯Â<º|ßióèÔ•ÍÑÐŽ½õÖ[n¥ëµéió5…êJÛ-zÚŒ JÚŒº«Ì܉W¦é1cgÓD™ù|Õ”A‚²ªìlTtc?Ï#<§þ<*ºyVÍižUszΆ˜·ÊØûÊ01E¨ì¢TtÏ<3Çž¯LÓ³^SÊF†E™S£­ S”=3̦g˜Íœa6¯ Ó§žES §žåªW$_®z$ß×Õ#¦¨•]Ô–P¿zŒIÏW¦«Ç=F«Ú+S'âãê±ì:Œ¹ÓÕ㚣°k9núPJmõÄügORÝXuýSÏG7o~eL¬*;Ë÷læI'ÏÙ_Ý„2±åk:ÁÏ>æ–Œ*«õÍ~¼Uå•õ!rnÉ”abÆÆ˜oª"'ê™Ó^e3Å}ÃV/•ä{ΩºOê‘üÔç6ͯ<’¥o0£¹Ž+õ@$KïD´±J=_ÕÖæq¾Tjvsà¦R5¦ºkóñžw Ф*»xø¼“ª” Vå=’꾈ëèóÏuDò•róõ™ÊM©¶ÆGž TßóU–òXó.ž×´;ÜZú?ÆÄ 1ôS>,1v–ïÙÔÏ?Œ¡Ÿ¯)Âj©«îý‘‹éÌ©œÔò|¦S™s²–9³ÕX#½ú¯¬*¯¬UYŒïeŽ‹ëMÿ”[«“µBB”HŒ™w¹â½åkgól£é0¯ ÆÇ0Qê6­¯Õ"îó£ùY¹yã¶E´Ê1ú?Æì´ÑŒ÷ÊΖ÷>? 3æ}Í6†è=‰ùTµŒË4ÐSYžE¯aÊ´u¼¹‚T÷Zõý1¾ßÃ<[‹,-ƒ1‹mÚY4x„„‹…¹VÃĪޮÅxæØ9 9DðxÏ&ßS£·WæÌñÚO-õÁIus•ò¾‡õüø,w½õ #Ðûä:æÕjʪrª‹J]M©Ùîd$ ÔÃ0×{Ë»re|¥Ü•§^ÛÓ~GŸ9¡¹ª£wÕó湫m=;Ëx~+Ž0®Pq˜ÑÄxæy»±êyÁŠ{§ïÒ7z±ZMY5ÇÔTúò=¥ôõÏ­jùZµúË£Œô ÊèF9±ky¬ÉÔǬ²yðÚÙ(dSó JÕØÙxe7Ž0Ï Vó\3†î“Ö4B³›UNUÍSï2’}·~CéI9g¤¿gÓß³(-e¬,6x¤k™·š®(‹cEƒâoØ-¯(¯˜®(å¾Ûó0ynŒÖå <óÊý^˜Ï˪Žï"3m ñüôßúv]yÏ«Èô˜Ú”÷lú{ 2úWnðSïkSp?²~‡ë÷cÎwØô÷ôWÆ™¼Ãu¬ûy~Óa®ÇÀåj˜y5›±*Ž56˜ÂǦ²U¾'Îç±êþBYšÎlÓþ Ñî!÷x/íù¢ÆÏf3ÇÏõ5xW®nñŒ†–÷!¡ú{¡2Hý½T_……\÷Þjuñsßçs}qàNË­®cï¶ÊâÂæWî/`Ö)džïe¤Â¹^ö:Ö34HêÉ*š¦ÊêN‘ÍtÒ€ÃðYÍä·§ŒWa®Wä¤cocÝáµ*j{¨Mþ‰LõÚ’_3§×¿Ç—¶ÒOýÒ Î…í.-×?é,S…ól\æµAk2®_·5Ú°Ðëbƒ«zª,J:[aó+WIg3"jìâkUÿó¾VµÐn¹Å–Í£oá…|œÊWÆ1¿JÓ嬫…u;)¶Š÷îrm.$vïÝ©½"ÿ´ëŸ[\ª{Õ}zùÇ$|´„¶ýúpÿ4÷Ÿ@0®­ÀZ[›þ5(c5,,ÔsÕc«hAj¯R†Ÿæ:ĦýE;Ï0ŒS¥ºªE}ÕxuñžÍÇ~6ïU›^#6óÎÆÜksÚü4¥zôhõl6QŒ¦O‹ î‹NÙ Îl±ÁÇ©2¹U1µ…çõžñ†2ʨbœÞ(}çÂúY ˜cêQ úùLWwL=Ç/²q37F¦ýÄ“Wåg4!/v÷O ºüÜt‡xÞœyfbHˆ)å~âÊ 55Èæ­îU£Avïl¹ªEÍâ{5,4Ä3‡”ÕTµëÙŒ±žÍæ•%Ú~F½ 1Õ«s½ ±™z!«éPVCÃL¯¬šOõ_J¦ëNI_­¢] !6ý|òÐã=›ýl^û©¿f3ž´yžÆÀ0ã=×iä{þï+l^?%-ëš×ŒH!ãy‰{}L©ÊÈê­·Þ}+ÿÝíóß»õÜ‹T_ØRû/LÿÇÿõG†»þKÑá­Ä2Y,[ˆe¢X¶Ë$±äø±¬¨'Bœ¯¢8_„XVçËŠâübYQ„!–ExbYQ„!–eøbiw/ãD¼â´ÕðÚb½¶X¯#Öëˆõx±/ÖëŠõºvsz[‹u™O)v=ýi _ 9>R ±n¤’w8ZêùÕýÔðdy5ËÆr™îøŠe¦å—ríH-DïðüåSêçv~yŸO;“÷yËòׇÝt°^Q;>BÄG,E½ŽÓ6“/ÚûµÅöÚb{m±½ŽØ^Gl¯#¶×ÛãÅöx±=^lÛëŠíuÅöºb{]»rýÙÍ×ak±]¿Þíæë>Å®_Ÿ™œþp‘®pÿðãPüüÇ_üÕö­‘Xo$ÖEðá"øðÆòý€ó/\äK¸Èõ!­ù”ÑòUã.âá®’ÔGwU¤º« õÏ]õn\ùiçñ_NzxbiK‡X:ÝKÙ¶íC+‡X:e~‹¥l/ÅöÖb»Úž¥ˆí)b{s±½¹ØÞ\lo.¶Ë~9IlOÛ“ÄvÙ¯'‹íÉb{²Ø.ûùD±=QlOtÞØôšN™žÄ4–Œ‡ÿüÖbÐÜ¡…ì®–S‰-‡Ò¾w8ZÉ%Ùµ’KŽÔJ(Ù®•áF^ ù-Ó¡æ{R€ùšÑz­Ö;«xXÕkñó¾¿óûK_£4Ö?«ëCM·š/j<[F¶t¿ÓÒÞÒýNKGK÷[:[¦©>;>ÿk'3;ýZŠSìZŠý§×«=qhéÓRÄõ¯µ+ö´µcˆ¿{KŠ#àø»·$9ôø»×“zü3Ôg´žZŸÒÛO¥’N-~ZÌŒøh!SÞ‘_‘"Ÿ‚z}Z•£ÑOªåôôû¼¼ë»öþ¿wœ –³Uxz9§ëz¶.WéËt¶‡Y}üÖzh=ž2×Ë „k*'ÿù`nGÿûåâ/~²œ´ݨøš/Áß›Óùo7«õ\†+ÏóÆßbiVøZȲ¼ü÷ƒŸ^ËpexÊ|‹C,>ç_Ø.–ΊZ|Äçb>¦•C,æÏ Z‰ù™V±tZÌGŠã[;}Ïï´Ç·vZÌg‰ãSœ¾ç·RÄñ)âøæâøæâøæâøæâøæâøæâøæâøæNåó q|’8>Éiþ\#IŸ$ŽOr*ŸŸˆã“ÅñÉNóç*Éâødq|²Sù|EŸ(ŽOtš?wIÇ'ŠãVó}i-÷iôúèo>ß_¡Þ§ÝüôÝìú­æ_Fë«vëüK£ýËäú‘ÑëWäKÀõ)³Ów³Û35?2Ú>ÝèüKËöCŽwÌñÿ÷•³š.±´¬Çæþ@ý\ýߟ¾dÓ8)ë·;î&˜ö×ÝôÒ\Ú[wS@¿æîÒèÏÜ]åèîÂè¿Ü]×Íï—µ˜å’ÙñÍh?›Þô©år£êŸ?õImïÔö@Äÿývf•XÊq”z}ܬz#ûCïë5R\§‘7¥=ñ=ÿB½ußÚp¿ã¾Õ¡þºoe¸¿qßÚ+ƒÝÉúç5þVÆÛjz³^:D;.Úo«Ï;n~¼3Ö¾xÝ7*÷‰þË1cãæ›Ÿá"ƒ”á"½áY$}­á""]ÿ¹òVÓ'–A*¿ŒæFó;£ù¥>–ñüéõßjìð3:~öwýûk?¼ÊS)?u^½¥˜·ni|s“Ó.Ò`zôçsäçnY,þá2ž‘Y#~­_2=ÚÒÇç$îHÔç½;´NÔñ«úÜxœ#Îçç­ÞŸ—¥X}ΚÆðãZø2\-Dõsç „c×Ò'Ö->Ç5>ëÖŸÞÐtªç³ ·‰x¿™\Ú›Y}žfq^mñq[¸ø¸Í㼩Ÿïf×»´ç“–S2Ÿš9š¹SÞÌÙ̲=sµ¾Ú WáõÜ»#Âݲ¨Ï¿³»»EñjO”öÃë9|GDœë|êóøqŽŠq®óùk?|ŒWÜC㔫ù¬›þp‘Îp‘é éЖi¸ˆg¸ˆO¸E<ÂoP~ZÅ'­õBÆ7cù㯼ÒZþMÄþMÄv£ÝKGú®C™Ojþy‡§Ÿëß!Âù¢·+béË(ŸçUÛK±›ßç¼ÛA±”ÛÅyü=‡æïy–qžÀÓ§½ÑØ®í ¦‡þÌ©Å[ôkJ<ƒmÿ`çw*×E€ñò›Or^ÔôÜbúÃËœ|ø_½û_½K-<é 4Ÿä¸«‰lß­Ûû,¯›]O²Ðu©Õ3»¨wÞõÍtóï¹.­âm~®]½O ~þ‰e€åžñøˆ|Êxþ)í±SùçñÕâ¥Å8ˆõOÜß[Õ¿Œ†´üJ5žÖ׳ù9áL¸~-Ê18áÿ÷û-Fr~ÄÇbøx-CùsãúO±tÞ¬øyõ£Yä~0õÏ šE5KÓx2íý¼9|ÿŸcFôy&ûUÔâá5o+òE,£ÄÒ{Wì'–Qb>8ƒŸ“ú˜ßÖ–âø8óÝb?±Œ²ø\5ߟñûœ‡ˆ¿ç=R¢}Îáß^~áÚRoÓüù^ó'\¤[,•ëÞÿç“b)ö÷NGV¯™~±ÌôrŸ'Ù#Ügò¨×î=9Ü}¤QÕt‰ÏÉìî&Å£q7´#î&Äh7ÔtfõrÎhþˆ¥×ukn'ÿwÝfÕëÖ|iŸÕDçožª™1ŸöÏ'‘ÞH1ÿd—óO™•þp‘¾pO±´¸ÒZŽ7?¾z~Êy5/»{êÎh—´6!2ÁýN‚=Á½‚#Áý~ÃȆî÷Úºßoèhè~_ýýuïóËÏ]´íÁ?æÆ¿žx_îg|ßGûÅ,ÏòÕžÙ4ÊÑU†ã­½4Æ#îv2AœøŠxjëÄSÄ/B„¯\o>¾Oä+üzbÿzbõ|ßq5Ëãû/î¯bYÍ÷ZõÏFzÄR¼o¤K,æ|mdQŸÓ~úÊ?xáÿ/ýÿÒ/Û…zvßé°ú}½ÿå§Uøúý‹ŸvÜ*ÝZˆÁÏ*i /ØõÅû|Ú™<~'Ô«ǧ:Þ°¼¯¶¸N{ýýÝÜ5²ú~…2nL{zÌß‹Kïõüxý×ó9Ðë6sòW÷ØÍãŸzved‘?–ß[·ø¾zðã.“×s¸ G,õöÀý‘;÷ õGûœgpß9Å9ã¢]KÿãÍp‘Ú2€öM _ ‡ñx”ß©…«…'ÛWïpnOÕðd;-Ò%“í¹E:ÓÞMÏß(‘¿Zz•y1#ŸE¸Á?‹å·ï~;Á™ Õ»¨-~Ñ ÑZ¼|÷ç Ýû7ŒjèÞ¿atÃèóËëºwÝÓkßÝ‹¶øþ^”û;|l¯èë{Ž®8gD\´ù~Ql¯èžZ‹sVŒ‹®è«_éuÊôÊrK‡HŸS¦/øýDÚÒ/ËW‡ÉrŒéˆ ,²|üÆW,Íã)õù%wå ÷?-ŸƒÓjcÆÇëäû>ϬôùX|ÿ¿Çë¿Vþÿµôü¯Þ;=êsý¢ŽÖûá4ݧ7rh1Í„xŠùf=ž©ŽR‰§6n±gZ<Õçÿ•|ñ±ŽŸSÄÏ‘9ñÓŽËhýMãR±Btêéj(öo(öo-Ó+–7¼]ñ—Èq¥Åø*°tÜüòº±ãæ×>¥ž¾ô¦#€øø9_tš>ïs‘µôY̩ϻD§>¤>÷úüRð®_å>CÄ¿‘Ó÷}G#ßF~ÎìçóåÌ/ßß{ó¸Þj×mÿ²~~ˆô{ËäTÑÛy˜Û‡Hý:•×ùzµëí…¼®Ìí†lOŒvÒÜ>ÊvÓh'Íí£l7vÒÔ>ÊvÓGúåûj;h7¥+Ò«•ù#óMo'Ýí]´ÞéušÒíû;=Ú­=ÓÖ£Åz´¶~#ÊÏÝŽÙE»@y)í¡¶.ÛEëv8õø«žZŸ¼û© ÇÏg=PËש]—vëë3}õÓªñð,·ÌH¿C¤ß©¤ß!Òï Bþû¯zúEzÕq‚©ž¦'|¥œ-ÃÓËÙ!®çô\Þåê7}žíŸÚ>zÍ3÷{²¿•ý¯¹ß•ý±Ñÿšû]ÙÞ>~0÷²_ BüÜí¦ÌïTÆS¢_Öö F¸²¿w–îýcÄþÿþr±+ñtšâ@üxÌ?yÄC7©ãÌŒåW ù¬ô{§3°óû+ŸŒÖ*ÇÃTo£ôóFšÎã/¾ÆøÛ<îŽUⓆñ·)}þ÷+ñpšâ!ç9#-Úc¼o7•cÓ+Âõ×›û­±”ýH”XÊþ%V,å¸Âõ¨¶ç¸1F,åx"J,åx2V,eÿ¤oŒbÄRŽ¢ÄRŽbÅRŽ[´ã~ú¨æz¡ÖyÿiÎ]ƒ}][Õcs}Ž6§3 ×cßסôóàÁ—ØMñð¾ÿOw»Ã‘Ú}t”–öt_7ìáÙïGúL´8>Z-ŽÖŽÏ ý²¼ÎD¹˜â§ÆßG;c_§oõzå ËE-Y²\¢M銴l7ÌåeÑŽÜøú§çë“Úüí·ƒÕïXµ–ñ`÷¨G7³ÞØ}^¯rÞÐn¯(%~j¼¢=ãç•_j<­â¥–£1å®ïr>—û!ѾhùhÌĈe”XÊy9¯+–Ñb©ÎcĈe”XÊù 9¿+–Ñbé{žCÎïøy~Åëþ=ãéH=žþÒé#´ç1´ùJ»_ïy¤%¾Qñvšâï/‡?5]NSúŒxLj¥LO”)=â¾ÐãsÜhSyY=ox9ƈ¥œ‡‰Rò+V,åq²ü²Jþ™ëoÆóê^ÿ;ë‡Qÿÿ›åí¾à”_Fóëf—¿:O¼ü°+é³+ñµû ?£ùiÌ Çˆ¥œŽK»XÆŠ¥œOVóÃaŠ—|nÔÏsƒ~ÛÏÛd<ý©§Ï_þÏÃDúŒ¿š>ñ|E¤|¾"ãñRâ£Ä;ZIW¬)ÝÞñÔã”ø¥¾¿øËzdÔ+‡o‡)þ‘z½³«éQê‹L‡6ž1òKÆÃnú|IÞoãW}>C”§ù:õ¾ÏÐö Bøîñqñù—ÇýƒX:‚Ž#Üs¾Æ÷ø¶ªª÷Mß.ÂTÒ©?—¤|n­‹}~þmœ_Ç»÷Së½]Ü÷¤á¼îøý޹ÝS?g½Yõ.ˆùänìâ¹B™_vñÜ¡‘NÙ>¸>áòl'd¿çê=Ó¯·îýöAo?ÜûûˆŸg¾û˜tŸÏǼ£v>#ÿ¦|ô~~O¿ïuÇÏ{^T;_ÖI¿:~ð—>u<hüeŸQ®ú}»û|ÖÏ!èã'åzO[<Õñ§ðÄý¿:~ÑÛ5Y¦róÑÎÉzmªÿ~ž¿öÕÊòô¼îýŽ}´“²Þ™êgàéÓò#Vä’µ?óŠgðãìü¶[ÄWm72šOò96óólé/Xù æ‡Ó3_ÒPïÔúç4¥+øõNÖ7YÿÔz§†¯ÆïfÕ;«þÃ<Î ~½SÇÕæðü}OQ¶·F»/Ÿ/4·ÿ~úq½?°nïåý¥–®¬/ïòå ËŪž¨ÏÅ©õÄ®ÄKïÈzãïº4_Þã Yÿ½.-Ó'Ꙭwi½.ƒŸ`å·U¼ÕöZ,åýZ°óO-gµxågFã´üó¸wÅÓý9¸¯ü󼟯*ö ^þÙEø‘Võ/£á-¿¦ø|=Ëy ÿ _¿å˜jøÞí´lŸe{­¶Óæû‡ž?j;­ö£þú¹î°˜Ho¼ÔþB¯¯žÏ¡Ëù9¯ÖøxÌÈù“ÔÓŸöóëó2"ït˜çKe½RÇ%êõ!¯ u¼”Öñ¹¼^ÔñSZï‡äõ£Þ‡¨×Ï K_ªýdj×êí½ßø‹ë^ÎÓy_ÿ©µK™Ÿ~ãã¯= ¬ÿ Ö¸>Ðñš¿û÷@Çk7ú~Ù*}–÷ùJÿnžÇþ÷Ï7øRÎþÆk¾ó'«ÜçX}^¼ø©ñQãëÝÿÈùxsî´ˆOZÇjîwœ1@ûœÀܯŸhíSZã)~#RüN†GøæùJ#|õûQú<²XÊÏ5«*õ[ŸWKùùfds{aõùeU¥±úT;_Ÿkðõ¹‡XÊ篫*סþ9ˆXÊç°µødô9 óüb)Ÿ#¬ª´;¦ç=ž'Ôâóß/?¯ûX9eÊou>ÊûóÞ`çÚªí‚oµ—õFMÇ¿¥~dVúoX9ŠÏµçí=êµø¼LûÞ€QMý£{ü#êc”¹ŸŸiÏ™í†ÕçY¶œ3˜?ê¼£þùÅM*oY_}ßùxÎB©¿ÿöë6­é·zžæF·³Y¥òªÏžõ$ãu>[ïË|ù–¿¦ëÏÇõf5ÿ/ó)Øùe5_£Ï³©×’y©ý@VO‡:^VÇÓ²ßSÇËêxÚª¼ÑéÏx¿oOSyföu,ã+ã/ß—é“é­î;=êü¨Ú®Ýìô¥µßòJŸãF×»´¦CŽ+å8S¿ÎĸRŽ3õûRÑ?§ž.Ï?‰¥|N¿ªXÊyó÷§Œçõµpy’±”ó5r~BΟĊ¥œGQ¿· û ™²Që­ú}-ÙŸhñ ü¹z¹®ÎW©óiY%ŸK ùéñ\¾˜‡’ód™~ŸóÃ^óÇ—£ýÅ×jž/Ò_»w{3Àü< 1O©Oÿ|Nü~»û}‡xß¡·ïq~1Ÿ§·'A>¿Þ¾›Î§†àù=~gÞaý÷¤åïL{ü޼{»G|âóÙ/iýŸÇ|¼ø<^Ÿwo÷¨_2ž²|˜?WUç³íæøº/XÏßñvU$¯ßÃV/Ûãw¶ÝÇ{üζûxËÏu¬~¿ÊjžÞê¹Z?éKOø¢Üe=PË_Ö7õsë …ŸÆô›óáÆ§?½á«ã*ßíO”žÞ¬Zþ©¦_ý»ò÷ò¿®äºvÜÿ®'ëðe?᯲J÷‹ßÝKcx§ÓWxÁ®/Ö糛ΫEÇø»+±îhšÒo5ïcžïñþüXÞgèý–XªãdóøÉûsJ9î‘õÃ÷ç­¿4Ðô˜Ç9éoðãõŸÏgõ:ÊHþzÿ½’(åºpŠe´r½©×‹S¹þ¦ëÐ)¶{ÿý‘(±ÔÇGbž¾ø™ã£Æ×ojãLýï¿x?¦;•ñ¦þ|’wc¼Hø¢]uŠp2\«úZ{@xvùœ«Xwˆç Œû€à†§^§òw¡åx^ÿdZþÊòtšÚ½ù¬¶A ßiºÞ£ôò•ýgúòÛ®„§Þ?éã‘~§W¸ZºµçTˆ•Ø.ûwí¹ïþ\Ûß!ö7îÊs9þòK~¾âšÉÐÒéëóލ¢¥/Òî™>9§#Ž÷þ¾¾v|Œ8ÞG¿ ÒïéñjwEzµíÁë'2š~cþÁ.â%Ò“–t_óxPíÏ¢õëÜ÷¸XíŸe»þ~Zæ»|ß÷|’‘®Œ¦Ç|—J»á3¾Á—ÕýäÍŽ—ZÞj}û¥wœ¦Þ·™Ÿ«Ë¼òÿ¯ÕgïûÖÌ­7N%~þâå4Å/øùì¯Þ˜?WHGzôûe­ÿ–ã!ÑN<Þ Í»:äü~Ðãéo|h<µþ_;OfÄÓóï‰xÆ3Àz+ç¯Ò˜êõd7ÅËúþTÖß@Û=Y¯åvóç*Þé’Ÿ7E›ÒéÐëµ:N‘ï«ã2‡’~uœ–Öô«ã’(}\éë÷XMGàñµªO–ñµho¼ÊK¹œâ¾IŽ—Íãhïq³OËëÈ<ŽÎüöIM¿:ÿ`ž7ŒÒ㟾t¤ýú’ñ“ãâÈHmYÕ"]²}ãäH»X*ÏÝ©å)ï´ó{þ¯öëúçÿv±T>Ÿ•ׯú¹¢ùzö÷=õ:ð¾~åç¡òsPµžÈãb-®—(±Œ±(—h±Ôó3“Ë'Ê4ÿàý;z;’Áü³jï²Z~XËäüŒlg|ßßýÉóç:Y¥~xþ¾šÃc?u^GÆKýKãwÿ´íV¿÷çý{€ÚyÅ~×Ý=ê/¯¿soq^«ô©GÞýw"µðÜýEÑOTÑ¿'e™OÎH‡Ü®…#âïñ÷ÝÝÏYxü}wí9‹ æ§Õç‡òsŠLŒ¯Ý3ü´†“Örôˆ—é:¨*Óé/y¦³¾Èù{9”¿¿¨ ½ÿ¾²þ÷ßnDúõ¿7'¯{ëù Ùî[Ýw©ý‰ÚžËú¨Ö?õ{¤5¦ë9ðøÙ•xšïŸúuáPâéTâ™¶øy_ßj{ä³ý•õ0Ðü2®Sùù¡è×2~@ùáã:M5¼@Ë͈—Óçõéw|†ú+ûUå|VýkZëŸz~¯~ÀçùÏOóQæ§šV÷©>ÏŸJ; ^gj}Ró]M¿¼®ÔëÍ_>™®Ç®³Tããýù½ì½úÃTãh~ZÅ׳_Ju)ÿ# åg_:Äçeò÷—þ/JI—¿zhù¸vpæò°ºÎe¹¸÷×~%må0@ûüXöwîôzô‡2_e>«ý¢z½WK÷CÚý›q²é:qˆóù7‹¥>o"žãVÇÑj¿&Ç}U•ü”ã>™ßúy”ïÈò”ù)Ç!ò9{™ßÑJ~ëãó*æúìüSïíJ~88Ãý×?såÝ/¨×z_#ó=ZIz“Yù®Ž¯d}ÔÓ]Å\¯e>Èú-ëuU‹üPûaµ°¼RòOæ“׸YÉ?Yß-î ¢ÄÒ|PU<ìëÎ_#Ÿ ~ºµñ£G;«Ä3ZI‡v¼‘Nõ~SæKU‘w;m´Û™•Ž4—_ª×c*ó@™•ïj;¡ÆÇÝ_;Án'ŒrˆQÊA½ßŽ5•‡¯ûo‹r²º/ V>(óe2¾Þ÷ͦxØõöN]ÊÏ%"ÅÒ÷³Ž§¬OvÓy¬ß÷—.‡iëÏ}e|JºÕytó|‡Sß/}û'žiý¯B… ÿêeýÆ‘bé¾ Ãk‹L¨­­†Ç‰õ8±^G¬×ëuÅz]±/ÖãÅzk±ÞZ¬§ˆõ±žöðµëFj!ÆGj!y‡£… ž_ _=®žX¯W2Òg|²^~i!ÇEj!z‡ç/ŸR?°óËû|Ú™¼ÏSÛgùÕoìK§Ïðj;ÄRÛìUqb{œØ®æW±½ŽØ®–W]±½®Ø®–_¼Øï”éK™^±½µØ®æGŠØž"¶ß¨ôËtÊôoñó—>áèõBÖ7Q?ê•ô}ý©é4ÿZ+ù`UÞu”|ò—¿Á*_5~²¬ãÐjª¼¾ãZÍ 4^Á*?ïr²‹¥¹]0Âsú ·•د•8+q¾V²^Èüá+õF¯L§ïæb{s±½¹ØÞ\lOÛ“Äö$±=IlOÛ“Åöd±=YlOÛÅöD±=ÑqcÓh:ezÓX>2þó[ ¹¹C‹‰w¸Z%:´KoøÞáh%—äÐJ2Ù¡•Xr¤Vb„Hxæ·L‡žï²Þ˜¯­×z½“ål«zí/~þÂÏh½Mký³ GO§¼.e}³ÈYZýK´ëõÑP|dúey·Ÿï|ô‘_‘"Ÿ‚z}Z‡/Ó­–ÓÍJ¿ö~zÃ÷_Ò;N4|5Váéå|ƒÂ“éËt¶‡½?X\ŸŸ9¿¬ÇSæzüpý僿ðÍã¯ð•ñW¹(ã«4—‹2¾ó?u|æ¯ÞxÅO–Ss»)ʸǺž¤/¿•üñ?îÎXú½Ò`;èïºËè8 ÐöX­çj{•ÖvÝ*¾ie}MkøZȲߴï‹q~ðÓk®žïû‰ú£Ä2V,£Å2Æ‹ûŸVQb+–Ñb©î÷>¬µ8¾µ8¾µ8¾µ8Þß}`Š8>EŸ"ŽOÇû›—h.Žo.Žo.Žo.Ž÷w›$ŽOÇ'‰ã“Äñþæo’ÅñÉâødq|²8ÞßüN¢8>QŸ(ŽOÇ­üe¹)í–:_gÙ_X\ŸY&}7»~«ù—Ñúê/¿½Ú¿L®½~ÓZŸ2;}7»=Só#£íÓÊ?%½ë¿y¼ó¯/猶‹ÿ™ôéóàÁ—ø«Wé¾Î´–¶¹]ka¹voiîÔZÞ$%Þå§õ\ŒûÜÇs_ï>>Ñ©õd7¿_6[oX|ÓÛÏúk7”téÓÖ=ÊåÆÖ?£]K½>e•öà¿Þo§ÿú¸YõÆn‹ûÊ›ÝOkw4ÉvíN&Ù¡ÝÉ$;µ;œ`åc°û/«y}Ümqÿát¨ñVÓ¥Ä[M—w:ÌóÈ^Ÿw+Þ7y¬¶úý¢ò9ßrLç¸9ËäŸEû™îüøÕ¯ú³ÊÛOz~â½ vùe4ÿoö¼J°Çjþû_dÚx&ùéõùˆòù:Óç'l?2úÚJ²rÝX§G>ÇÔø«ñ–é‘ñWâ-Ócÿ@Ÿ+û·Ô/ïÏ…ôt¸“&Þo‡7v46}¾$ãíýgMoøZxqvíIX9.K‰ÔΟbOQêUºÃ±ké럯ŸÇ‰u¯ÏGÓ¾HŸL¯žN‘>™^«pÔóY•GYžz¹Æ)÷þÎë;ýÆyS?ßÍ®wiÏ'-&2Ÿâœ¢>:âR­wF;¡·î&Ã*ýb÷p±{xã­ñ×ÞYåSœ8_œ8_\L\¬¯üSÇ·Vù¡SôñIŠ2Ÿ•5ÒŸÖôe4þ­¼®'s»¶Cc§ö†L¯^ÿdæÔb(ÓáUÏ‚Ÿ`ç·Ÿë8hù$úKu¾)Ýá+ôëK,e»¡´»~ëÕý®Ò-?e}ÓÇSæxú½Ok|þíõNÔ7c\¾ðü¥/Ðëݲ½—õÎ®Ž»2¯ëƒU¼ü=§hYOdýõE­'²ß”ñUÇ;Ê}Š~½ªýÿÈz¥öÃVù`ÙþZ¤OŽãìõÍ¡ßÇÖd4>ÁÊoË~Li¯å}šS‹©u;b_¿×«XXîŽO¦åŸ–ÿù§Å8ˆõOö Z=Të_FÃÏôú&–V×sFËÛ_þyõ«²õðµrt¤/|ùhû`Ùèã«q¼E¼d|,ú¯~Líïôxi1Òï'œz{¨Ì—–OVåÑ~J?¿,GY®úùõtdîõèý¿þ/Ðû¡ÝßX¥ÏO;e™‹òú×öß22^j|,û•@óC ×<¿¯—§Z޲|Ó:^Së©r_ðxÍÏxõ†§Ï²^(ý»CŸ¯·èüÄ7Xõ3Xùç/>i,÷ŒæOÀ÷_~Òïw¾M/÷›?½ÿÑ–^ó7kœ!>'pøîß㢴OG?ïs\e¾åxÂ÷ý±1/*?ÏŒ˪béú5ÀÀç9ôù{ñù¦8]¸8]¸8]†?' t^TŸç牓ÇW•çÑâ“ÑïÏ:¿¡ÏoËç=äñUåy´øüçËÏk|nñùž\*íd¦åÚÊôÉôZµ‹ÊxÔòsʬZ?¬Æ­J¿ÖÊ"½jyÞ´r´è—Çh;4ŽÕõ\¯·~Æq1ZK«µ²]Q¿ÏœõË9ƒùãUïoòu«ÔS½þª÷í2¾Vóʲÿ·]·in·Ìã&ã95½™ÜÎf•~(Ðv<£ãu<+Î÷¿üKµþÝèüRó)Ðö#àç’²X:2kül•~e~4ëõkJ»hկߨòŒññ—׫C¤Ï®Ì‹ycÄR‡RÒuÓê«:ÞTêï¿æºKk:bÄø1VŒ'åõe9ïëûsù̾ž¼Ú}u¾Dm÷åsÖräq“:ßÑDœ·‰Z¿ý|.ðÿ%Ÿôzä0ßÇdZú¼þ.G{&ÅW¹.ý]W©<×쎒ÇsÔî#"Üï$8´u{‚û¸†‘ Ýï7t4t¿ßÐÞÐý~#Ù^x•8¿ò“<ŸNºÏoNϯÞ7ùíõܾ{ru©?c|¢µœ F¾ˆxjëÄÏá¿Fê}¢Wýò¾¿y5=Æu«]±>žKõyÙnéé‘ëb»ž.‡LŸHWàé 0|?å/Ê]Öƒt‡¯Ž;õrô–éWò!Ãá+×­Ì–~5²zúÓ~àוXzsþw=™ÂWžË±î‡¬Ò­…˜îð¬ê’>™î´†ìúb5/æñ{‹jÿd:ÞwÈþ"Úg¼,ŸŸã9¿×»¬¯â}µ~4’ï[ܨ÷'iN:þP®£‹xÊø[µ Ž×=Ÿ#Õö"õx;>iÿÞ™XªŸ£«÷ò~Fî¹ñ3¾?iŽüž2Þ”é’ß› úxÓwøòy&‡žl—dxF¬†p{ª¤WŸ÷ÒÂuÊtêý–E:ÓžÚ~‹|•ùœéù«”§ZÞF>‹pƒ¾Ìo§žî¨àä·þ‰¸Qê³>"Ú™(¥œ N¾Vߢ´xÉ~=:!Z‹—·8:Eü´þ=ª¡{½Ÿn¶ü’÷í2¿"#a7îãe~VußÊ{¥OÎOËòd`b÷˜¯–õ®ª˜wS¯g‘?zùGÉôŠrpšËƒôúL_úû‰ ¦ß¸—娥ϡ•c éH?bnŸe»í¯ŸÐç?E¿î~ZœO-Ï9¦9=–÷m²¿,¾A—õýÇÍ—š_Jy«íÓ¿®üÿíé¹iõFÆGÆÏO¼”ç4‚ÖnÈu™Ïj»-ó]¦Ç²ô“¥ßÕŸ×tÊqO ã}-¦LŸÿ1žêøSÆOŽO²z<¬·Ÿz_bާWýUïK•zì=KY¿åu­¤KïÏÅ2ʜΆÑ2½b©Ôs¯vEI·õõhú½Æ%r\i1¾ ,ÇWýœHm•øªÏ?¨ã½¼”q³/+ׇå¸YŽ—Õù1uܬŒ'½ÆÑÊøÌú¾ÀOú½æyü̧1Ç7°~ËËq³ùs>רY,#=Óè8T¿o÷Êó.qÚé]÷Z~©×¯¼n•þÈòú•õ]i§¼®_‹qA#q|#ßFò8ù\—ŸþY.L>¦ÿ¶ÌôòIï}yZóO½~²j~XËd;£µ;Víèÿ—üKYO²^ý0}®l<¯¤=A*Ÿ+õ÷œeÆ×¦ðŒti-…¿pZŠí-½ÛeÓyÕy:Ùî©Ïw4‹læ~§™½™ûfŽfîý›9›9SÍ'™?âwe¼Gj)—Ïûe8~2>Jä§ü=W›Yõ3èéó?OPøj=ÖûÁ(­§Ëh~êõ^^âø–ÞãÿàÆW†™¾p¬ê¹>þˆNp§0A¤ÛßóWÍÄv®q¦/^êõ›%þ†ø{ÍêsXòº¾Qé×Ó'®{ÿý—vB¿/(¯ß3•õÑß}§¼Žƒ?5>êuâçþª±ÿ@ãg5_h~éשx¿¥]»b3~€ùáã:M5<«y)µžêץ짔ëÓ¸.ÅR¾𼼨úu©¤[/oß¿»îó«ý@Ïoõ|˜~½«ý¼U~Zäk¦·jÿdÕ¨ýzÛ€¯3‹ø¨ã@ýz³œ RýWú£@Ǒ͢šE¥%^ôCŸ²kù åH+‡–úuáoœ•ÖvPŽ "µ’ò×îíV"--Õñoªá%8•ÏsÅ<©ÞÊü”ùë·_ôý\†÷}¼ŸÓîï,¯9Ž”×ò=:ýûuòûFUÍùâ7ÿäxO}_?vÞ@ûã@¿?ôüÓóMþn£’n=?Z™çµž×ͤø©ñTÚ«öN/™5ŸeþËòKçóD7­ÞZŒ;‚ý<—¿ôY>Ç çåý‹¼Ž‚|ÝyëÄRÞùíÿÒ™n½VÒcu?iu)Ó£ÿÝ‘.»–"Úë(Ïtf™ò³¸S™ N|Õ|÷j¿Ôø´TïƒËñ‰2ž”óö ¢|åýd‚(çQþþÆMäxGÞŠó6çõ7Îo–Iב~1¯,ӡΗé÷ÍÚº:/[G¬×±§w»¶Åßç5êyêˆíuäç9ï÷ïYE*ëveÿ@Ï#ÊÍêïb©÷%>RYªï§w]Ä'ÞØv½ž‰ýj‹e… |.ë)Û9>B,+jç‰ç«(Î!–S=¯uxbéûxõ:Që…ú÷¦ÔüPëY]±^×nÎÚbÝßßOð¾²¼êFj!y‡“â³=TÃWÃk!û 9¾PÆY/¿âDúkÛ}_æ—Ì'Ÿ4³óËû|Ú™¼Ï£ÏwŠëÃn¾NÛ+jÇGˆøˆ¥¨çqÚfÒ!Ò+–b{k±=^lÛãÅöx±½ŽØ^Gl¯#¶×ÛëŠíuÅöºb{]»rýÚÍ×qm±=ElOÛSÄö±=óÓ.Ò.â`¼ÃŠŸ¿ôù‹ ±½…x¿‘Xo$ÖEðá"øðÆòý€óO¦WæCêå¯ä“¿üÍxùªñ ñ¨è®¢Ô_wÕ¥Þ¹«õÑ]ýÇ+< ðý—Ÿvïr2——÷ü:£5þæßôöKlWÿn£¿ß§ÔÿŸØ.ÿŸ×ß–ãe¼¢ÿ}9±]þ]9¯¿/­Îwzµ‡™›þ@Ó)Óãý÷ðRŸ×ßk¶Ìo-Äæ-Þáš×;|9~wšÂUŸ@ž_†—ìÐJFþë$G’_+Iï¿gè;½æ·L‡Õß#V8Vù¬Î¿Xþ]t‹zí/~þÂÏh½m”ÆúgŽšn5_Ôûî›Ýï´th3)-b>®ÞOû®þæyÔßIj®ÄÓ*>ÿk'3;ýú÷˜¥7ÉÔŽÈvE¶3þÛ±{üSo‡þ½h?¥?Ð달GÊ<‚u?•ÞøùÎG5È¿H‘OA½>­ÂO²ˆÇÍK¿ö~¦”þÛkœ ü®´”tªã=ßõrN×õlY®þÒgÑ_xÿ]ëËøÁwyèñ“×E=´O™Û±Œç‹®¿|ð~ZÓ-–ícšËE¾¯ÎOZÅOÆKÆÓ_½ñŠŸ,'Q¯Õyá ×s~è㪀ÇÝéK¿W:l³Ê¸Y­çj{uóÆßb¤qŸ,Y^–ãý`ï½®OQ?”ôz|>'æYbé´˜qˆ¥Ó4ÓJ̧´rˆ¥S,ÅüL+1ïÒÊ!–N±TçÅñ­óDâøÖN‹ù,q|ŠÓb~HŸâ4Ï5Ç7Ç7Ç7Ç7Ç7Ç7Ç7Ç'‰ã“ÄñIâø$q|’8>IŸ$ŽOÇ'‹ã“ÅñÉâødq|²8>YŸ,ŽOÇ'ŠãÅñ‰âøDq|¢8>QŸ(ŽOôšïKoù»OãÝ>¨íµ¿þB½OÓ¯×Ôãï/ýÿþú­æ_Fë«vëüK£ýËäú‘ÑëWäKÀõÉ*}N%júœJ:å|´H‡ž>¥œåíTÊ]¤G¯oN¥Þ©õÍ©Ô;‹òÕë‹S©7j}q*õFoŸÍ?»E>šçïÕ|ôú=Z¥ÝPë‹>*ÛU™>¥}ñ_ÕøªõØ_5^í‚])7µ]°›ËÍ_»¨æ»š^½]”ŸÏg¹z,òÉâºôNo²iœôvÇkž#Ãã÷%Äõä¾´¸ŽÜ— ×ûRRÇ[Þ×Q„»‹¢ßrwY”§»K£Ÿswq7¿_N²›ËÅ?5þÞí€oµ0ÇÛës=µ\”ÏùÔrQŸGój7”ëJ½oJÒËåFÕ?5ÿýÔ'9ΔãA9nÔÛÿÿwývú¯öÏœ^5¿åõ¡Þß½ŸQêµw½inºNÏ#Ü]ƒëºÌŒöÄo}ö}ßI>ºom¸ßqßêŸî[îo’µv%8×_°ÇÝÆ¼ŽÅøÉbü•õÒ!ÚmÑž[}îwóã±öE¿/TïƒÕû~Ërím:ïëo~þ…‹üR~„‹ô…g‘ôe´~„‹tŠtýçÊ[MŸX©ü2šÿ7{^E}n/ãù.Ò.â/–ã‰`‡ŸÑüôwýûk?ôëG½^Äv¯ßkóÕ-ƒT3žþp‘®ðÓ#žÏ±ëßëÌXüe¼"Íñ2æyd:”tÉy¯ø‡ËxFf‰øéõJ®Ë|´~ÉôhKŸ“¸?"ñþ>hcÓçKÖOÏÏß'Ó?o´ü;›i _ÿ»µ-\ùwÃô¿+ïJ8Êß'³ü»©òï–+é½Ùé´¼OSÊCÿ^´\zý.ŸóZ¤ß8oêç»Ùõ.íù$¾Ÿ¯~Üø'¥}pD¸Ú _ó8®¶Âë¹wG„»…QŸgwwËâÕN(íŠ×søŽˆ8×ùÔçñããÄ|”È?ßí‡ù%÷ÅǼRŠyþí&¥_©/~Ó§”{šã/Ž—õXÿ;`^ñádr~ZÅ'Íõ"<(ù㯼ҚMÄþMÄv½Ý×+×cº®ÃVéõOü‡ø~¨¿çä÷Tý½ÏEú÷lý=—èßc <}æß«SÓ£þÝY5žÁ¶Ðò[¹?´þ¾]pòI}N2ýá9þkõN _ßÿê]ºÂó—¾@ë÷ïlŠ¥w{œxX¬âåï¹7Ëz"뇬/é½.åõ(·§÷ºTžo´¾,Ò§ÿwj}Óÿ~¸>ýõOÐòÛª=1?g®>§ôü“嬎7e=ðÊÏ Æ'XùçUîZL½òOÆSÆ;*Eùݳ 柿~!£ágz}KËë9“ëŸW¼d9'ü4÷íCúûÌŽ—#9?bý{ÑÅÇ*¿3ÚOù?¿žŽÈ´œ÷?ßÿýׯÿݧ9>imÔpe|”òTËQ–oZë«ZO-úm¿õUÍWËû–•¾`üÅ7Hó AË?ñËË=£ùp?å'ýþûO±tÞ¬øéýœ¿Iý¹Xêù¤|NàÔç µøzýŽo€ý°×¸Ô®×çÆç9Êç˜êóuQŸgªÏF¹—ú¼½C™¿Ÿ[ŠÓóøe>_|þ)N—áÏ¡õùm‡2Ï-Î'â£Ïw;”yoq¾¸(åsÕt~?Èë99¿-Ÿ÷ññzÞC/Ÿûˆ²zÎá?V~^ã9‹Ï÷¼®Kýó½àæì÷,úE¯Ï'e;nÑÎ{N™ÅëGFÓ/ß—ã–›UŽ‘Ý[ä燲¾Ÿ3F¸Cõ]}n˜öÂÝDÈÏÅdû`|~ánjdû¢~Ÿ9Ë—sFóÇòº5·“7¬¼Õñ«ræUoÕñ˜r?ù¯»nÓš~å¾IŸ÷¿a×g뇬Æç²dt\`5ž5æeþŸç¯XÊü¹Ñù•ÖëÇkþ]´j? ¦C¹¯¸ùéöøY¤ßª3;ýí×ÔvÑ_yfþu¬ÅWÆ_^·2}2½ò:õÇÈt‰¥×øL鯳úuèýB–¿îÒ8¾”ýó NWFÛý`›ôç²ÄyäóYMÄþ^óT"¿ôù*c>-¸ùäõ|·ì7e~(ù§<ÿ­çO¤’?v%ŸdþD*ùcWóI¦[ÿ;€ÎLM¿R¿½ž§PÚ‘€ËÑ~ƒâë纲~®Yû;Ž>þ¼ûõï¥ë_\ù{âêï¯{_ýûåÊß-Ïðù39þòï&ÈýŒç‹ôçÙõrÕžÙ4ž×t•¥Çs¬î¡ŠÇó«î!‰úw2õ¿l—ñ‹á‹ñ€{}ŸÈwøêßaPÏçñ<«ûRöxŽÕ}Ézä‡XjËúï`Ëôˆ¥xßH—X:Ìùêõ÷ë'᧯üƒ¾L·Ì‡¬ž~»9‡o1ÿpÃÊß*üt¶/i _¶ õ”ü“çQŸCôþžÍÿ®'søúçŸ~Úq«tk!?<«t¦-¼`×ïóigòøÖ«Ç+ã óï´øøÞ…È/åþYŒçÒ^?Eÿc7÷CìJÿf7÷sÖWÃ_zd9‡§3¾á™¯ÿz>zÝfNþêã»yüSOý^¸EþXþN‘÷÷|2)~á"~VÆËr­›åxYŽŸ•ñ²G¯4ý^ó©Ïç¥1Ä×âó=9mñyŸú9Ÿüü/Úô¹Ÿ×|‘¼_óFÑúýƒÈeIÞ?Èç`¢õû ‘_"ßdþé÷b)Ç7²^Ëz/ë»>.Ky‹ýõû ‡r¿áTî;æûFNå>Äê¹0?σe~ù¨ý£–nëÍw»pþ‰¥Þ¿gõüé÷¾ÏíŒïûÔÿoù¡WÅ2ëÔ±”ó1ZŒç•´oúÉïùùû^RÆ'¦ðŒti=‰¿p¬ÿ®“ù¼ê±ØÞDöWz?*–r]ìçý=lõC~/_IŸ^ξw!hç·øÞ|Àùi1Þ³ÌO™2_õ~_,e¾ZÎs¨óê8N,åu&¿×à¸Îò:Sç5üæ“9~_g~ê¹q‰¥ßúfއeý—÷Ãê¸L)'Y~–ãHñ½zãÉTãåñûb®•\«H-'Z9´œÉ¼òÑç—åâõ{ê…§Î/'8µ°úý_ã`q~¯Ï+Å~>ŸÓPŸ¿öú}^õ{uú÷ôq¥ØO,å÷묾Ÿ¦>o/¿ï£ŽÿÔçöå÷…‚üý¹àç_¸ÈåþQigeý à¾ñÆÄÏOÿžõó=ÈõÖ²ÜD~XÌk{ÎõÆ×ýxpò!\¤O™/“ã0cœ`÷ŒW¼øƒ#ñâ&5oéóýø$‡X:Mû5olÿ·ìïÞ5ˆû™ÂOŠòæ¢áoÞØùŸ>O\xêÿÅuÅ@?;¥vÐýýíç*Ú¢Ljg \Òû_°Ãÿ¯Ÿ/½Ç»ë1—nm.×Úö´‡›Ñÿ‚~FÏ—ÞãÓs\VK{0㔑ó¸> v}ì:®vdúãÞÿ2;üÛù3z¾ÿ¯Çßìxó|AKKdÚº /½çIëqÁ(Ë@Îño«ëîqKdWú Ø»jã—ȬÃ~ž7ø¿þ¬žßÿËÌß5ovYfVøÿ•üû7×»¬z®qÞÆÍ¾~³Zü²J~ü›ëëˆÇÍNÇ¿­Ý¾aý\sôu+ܸã³z˜î{SÒ!æ°ëv­ ÏcטΤã¿Ì?XçÏjçÉè9]sµ=æêf(Ä1Há3Þé=×ÿò.kä]0Î%Ïá:>î–eFÃˬxÿ×ã—Ùå•âw³Ê2-ûÿ[¯¿Ì>Pê‘Ýø¼ä†äk&„¬ófµóó|™Q§ÓsÎ8×ý%âìÚ=f]׳1®{LÄÙµû̺7J)ÝÿeµôÝìøÜˆðovoV|nvº3+ü›®´þ—UãûÿáÚû¯^kÿµ²»Ùõ$+Æ)«·Ÿ®¹â´Îwߌýã<æ5Ó;ßš–ãå3U¹?øßñ™ü¿%ž7ú8ûʼn¶C¶q™Ô3œ[œƒßôœOÿ,0²Bx]{:ÚÍt£»ÙÇËïtÕ-ËqeËýƒSý³½È®êÚ»VÐ?ß‹ÈzæP›Yá«Ï.×uµY7à{ '«žë¿ο1Îÿ¦sÆE–å|ney]¶.mXÝ |_6«„ï>/çsŸ×îj“oBº2!ü8û=×½_]×XÀõžÇ=Ÿëþ¯®k\™…&Ï,þË*éù_<”x„k÷àI™x\ZÃð·šÂsIâ;Û®ù€¤ÌœÊ`x™ßôœ7˜q¹Ñá{Þ»~Z#)ß]ÌŠçKïñÁJGZÏ“Ùûû=‡];OFþ Æù‚§Œž+½Ç§õ8ϹŒ$^'Ù~Î5§‘Ä뤛ø½“`ÇïF¦÷FçíÍ,Ëvf…Œóf…ë(qš#gÈÿþ»9ÿué8 c‡îýû è×§ï3•:uï aTá¿hg–‘®ÿ]ë‘ÑUœî÷cª8£#£œ!‘UìvgTtŒ3ÚR%ÒíŒ ¯’ qñúo`ÿû…‡‡<>àÑþRÙ¯WÇý»÷º1º¡ÿuiT4ÄÆ2Ùp+nǸ9 ¹qò¡ ¡Š¡8J J£,Ê#Q®²´Ã‰hÄ¢jàÔBmģ𡠚âa4G2Z¢5Ú¢:¹Ò‚ÇУ'\õ¹/úÁU¼OažÇpŒÂ‹x /c^ÁdLÅtÌÀkxo`.ÞÄ[XˆExK± ïâ}|ˆ°kñ)6b¶`+¶áKlÇìÂnìÅ|£8ŽÓ8ƒsø¿á.á2þÆUWYR ·àvdG.äÆ=ȇ(„"(†â(R(²(TDeDÂ(Ä *ª£&Dê .꣢1𢑄h…´E{<‚Nè‚ÇÐ=ñà) ÆóŽÑ‹q ˜„©˜‰×ð:ÞÀ\¼‰·°‹ð–b9ÞÃJ¬Â¬ÇF|Ž/°ß`öã;ÁQà œÄOøgñ+.à2þÆU„r‘eí¸w";r! ¢ÂQ÷¡ Ê¡îG%TA$ˆB ª¡&j£.ÐÍЭÐíÑ]ðºáqôDôÃSxƒ0Ïa(†c$^ÀX¼„W0Ó1 o`b1–b>ÀGX‹Oñ¶b¾ÄvìÀ.ìÆìÃÂw8‚£8†8…Ó8ƒsøçq¿ã2þÂ?¸Šë°……„„á܆Ûq'îFäBäE~DaŽ(ûP¨ˆÊˆ„1¨Qõñ#Í‘Œ–h¶è€.èŠÇÑO ?â)  ŌÁ8¼ŒÉ˜†˜‰Y˜9x ð–á=|ˆ±° Ÿã lÇNìÆ~À!|‡#8Šc8Søçp—q6:’;‘¹Qá(…2ˆÀý¨„*°Ã‰hÄ¢jàÔBmÔE£š£Ú =:ã1tGoôE? À“x ÏàY Áó†…Ñ‹q x“13ñæcVàlÂ6|}ø§qÿ Û-äò£ £(îE8Jâ>”ET†Q¨†š¨…ºH@C4Cs´@´GG<†îè‰>è‡þˆ§ð žÅ>Â'X‡Ï°Ûñ á0¾ÇøÇq?ágœÅ/ø p àOü+¸v‹60 E6ÜŠÛq'îFäBäE~DaA1G ”Bi”EyD "*#NÄ *ª£&DmÔE¢ F"’Э‚¶hGÐ ]ðº¡z£/úažÄ3Œç1£0c1ã1“031 ³1ó0 ð6c)ÞÅX…ñ ÖâS|†­ø_c7¾Å^ìÇA|‡p§pgp¿á"þÀ_¸Ûm”î@äDn܃|(€B(‚bG)”C*!NTE <ˆxÔÇChŒfHF ´B Ú¢:¡+º£z¡úa žÆ³Šxcñ^ÁLÇ,¼Ž70obaÞÃJ|ŒO°ë±›ð9¾Àv|ƒ=ØïðŽá8Nâ'üŒsø ¿ãOüs›6 í¸w#'ò Š¢8J¢J£,Êã~T†1¨†Qu‘€†h‚‡Ñ­ÑÑ¢+ºãqôDoôE? À“xƒ0Ïa(FàŒÃËxÓ0³0ó±K° ïbVâ¬ÂÇøk±ð¶`¾ÆnìÇQÇ)œÅ¯¸€ËøWqÍu“sm ²áVÜŽ;q7r"ò¡ Š!¥P¨¢Q ñ¨‹úh€†hŒ¦xÍ‘Œ–h6hŽx ÝÑO`žÂ`<᱇ñ˜€‰˜„)˜†W1³0s0ó±ïà]|€uø [±{±qßãŽâNàNã Îá7\ÄŸø×ÆMä­¸9yQEQ÷¡,* 2ªÀ'¢‹j¨‡x4@4G+tÄcè¾xƒñ@!A1G ܇²¸•aG ª¡&j£.ÐÍЭÐíÑ]ðºáqôDoôE? ÄÓ‚¡1‡—1Ó0³1ó0 ð6c –á=¬ÄÇXƒõØ„ÏñvàìÁA|‡p?á ~ÃEüp ¶œä!nø Ù‘¹qò¡ Š ¥P¨ˆÊˆ„QˆAUTGM<ˆ8ÔA]ÔG4D<Œh¶èˆÎx]Ñ=Ð }ðà) ÆóŽÑxã1 Sñ*^ÇlÌÁ<ÌǼÅX‚åXUXµØˆÍØŠíØ‰ÝØCøÇp§ñ .âO\uåk.òw#7ò¢Š¢8J¢,* "ìˆB,j¢ê  ÐÑ£9’Ñ)h‡NxÝÐ }ðúc žÂ3xC0#0ãð2&cf`6æb>a –c%Va5Öc#6ã lÇNìÁ~Â8†“8ƒ³ø¿á.áü‰¿qUL|ß‚Ûqr!ò"? ¢0Šâ^„£Ê •‰hTE Ä!õÑM‘ˆ–HA;tBWôÄ„ç1c1 “1Ó1¯áu¼¹˜…X‚åXUXµØˆÍØŠíØ]Ø=؇8„ïðŽá$Nã,~Å%\Æß¸ŽÐ<äîDväB>DÜ‹(‰ûPåP÷£ªÀhTLjC=4@#<Œ$´D[t@'tÅãè…~ˆ§1C1c0“0sðc9>Â'X‡ Ø„ÍøÛð%¶cva7ö`à¾ÃÅ1œÄiü‚󸄿pבíÚ@܉œÈƒ|(ŒbGiT@e8QµP hˆ&hŽVh‡Nèžè¾è‡xOc†`(Fa Æa"&c^ÃlÌÅ,¼‡•X…5XØŒ­ø_c7öâ¾ÇQÇiœÅ¯¸„Ëø×š—º„;q²#'rãäCBQÇ}(‹ ¨ ;¢P 5Q uQ ÐÑ£9’Ñ mð:ã1ô@o<'ñ cFb4^ÂLÂtÌÄ똇·ð6–bÞÅ ¬Ä‡ø«±ë±Ÿã lÇ7؃ýø?à~Âü‚‹øálù¨[¸w#'ò¢îE)ÜHD£:âÑMÐmÑÐñ(º¢;z 7žÀ“xƒ1 #1/a&a:fâuÌÃ[xK±«°›ñvà[|‡q gñ;þÆuדù©/Ȇ[q;îÄÝÈÜÈ‹B(Šâ¸eQ•aGª¡&j¡.ÐÍŒt@7ô@oôÇ“xÏaFb4^ÄLÁ ÌÛx ±ï`)–ã=¼° ã¬ÅzlÀ&|ޝ°ß`ã(~Ư¸„¿p · =F!”Dœ¨‰zh‰´C'<Šnè…¾è§ñ,žÃ¼€±x¯` f`&fa6æ`æcÞÆb,Á2¼‹X‰ñ>Á:|†-؆¯±ûñNâ ~Ã︆°‚”=r#?Š ¥Q 1¨…HDtA/<‡a‰±x 0S13ð^ǘ‹7ñbÞÁR,Ç{x`>Æ'X‹õ؀ϰÛð5vá[ÀaÁqœÂÏøð;þÆÕ‚Ú‡ò·àvÜ…\¸ùQÅP%P ¥QåûQ U`‡шE5ÔÀ¨…ÚˆG=$à!4F3$£ÚàtÆcèÞxOâ Æ0ŒÄh¼„ ˜„阉×1oám,Å»xá¬ÃgØ‚mø;° »±ûp‡ðŽà(ŽáNá4Îà~Åy\Ä︌¿ð®"´0×r! £8îCEDãA$àa¤ 3zb†c4&b*fâ ÌÇR|ˆõØŠ]8ˆc8‹«¸[ê;nÁm¸w!;r ò /ò£ £(îE8Jâ>”A9TÀý¨ ;bP 5QõÑÉHAtAwôó‰ñ˜†7ð6ÞÃF|ޝ°qÇqð²% Èâ(‡HÔF]$ 1š¡9Z¡5Ú : #:ãQtEwô@/ôÁèx ÏàY Áó†…Ñ‹q x“1Ó1 s±ï`%Öb ¾ÄNÀ8ƒK¸Š[‹1†AQ”@DÀ‰š¨‡†h†Öè„€!xÓñ*fbfcæa>`–à=¬Ä*¬ÁzlÄçøÛñ ö`?¾Ã8†Ÿpçñ;þr=t/u9áˆ@4j#-ÑÐã <çñ"¦b–` Öb=6à3lÆç؆/±;° »±ûp‡ð=Žâ$Nã,Îã.ã ®#´8ñÇÈŽ<ȇ‚(†p”B9D ˆFU<€8Ä£¡)’Ð)è€Nx£úb žÆ³Šxãð^ÆDLÂL똉Y˜9˜‡ùX€·±˱k±Ÿã+ìÂAÃYüŽk®<§½@!T@e8QµQð0RÐ=1Ïa4&bc)ÞÅøŸàS|†-ø_cöâ~À ü‚‹øWqk â‡;p²#'rãäCBCq”@)”FTF,j¢6꣒Ñ]ÑÏ`8Æa ÞÂb,ÇGX‹ø_a¾Ç)ü†¿Z’¸"/J£*#5QõÑÉh®è‹g0ã0oaVáSlÃ78†ã8‰Ÿð3Îâü† ¸„?ð'þÆ\ƒë½P܂ۑ¹p ¢îE)”AyTB$œ¨Šxñ¨‡Ð‰HF :  z¡žÂ` ˘ŒYx ˰ ŸbâŽã4~ÁEü Û}\³¸EQ•ƒZh€´A;<‚Nè‚®x½Ðñ4†ày ÃHŒÆ‹˜€I˜Š™˜…Ù˜‹y˜…X„w° ïa%>ƬÇ&lÃ×øð=Žá8Nâ4Îà~ÃEüp ¶Ò\¸w!;ráDÜ‹R(ƒr¨€TDØáD ª¡&j£.Љh‰6è„®è‰^èƒ~ˆ§1C1cð"^ÂLÆ«xoa–â}|ŒØŒ­ØŽo°{°‡ð=Žá$NãœÇEüŽ¿pÙÊP' …P ÷¡4Ê¢îG%D‰ÔÀƒ¨úh€†h‚‡‘„Öh‹è‚ÇÐ =нñà) ÆóŽÑ‹qx“0³1oc Và#lÀ&|Ž/°_c'vcöá ã{Å1œÀO8ƒ_pà/\ƒ­,ù„;p7r"/ò£ РУ$J£*¢ ˆEu<€:¨‡h‚fHD2Z¢5Ú¢: ºà1tGôB_ôÃ<…A‚á…1‰˜ŒWñfãM,À",Ã{X‰±ë± Ÿã ìÀ7؃ƒø?à~Âü†‹øÿà ®ÁVŽ17nÁí¸ 9pò£îE)”E%ب<Œ$´D[t@'tEOôÅSxÏcÆáÌÄ,ÌÆ\¼‰·ð6á,ûXð>Á§ø [ð%vâ[ÂÃiüŠßq ®ºCq nø¹‘EŽûPUQuñ£’Ñ­ÐíÐð(º¡ú¢?žÆ³x#ðÆâeLÄ$LÅtÌÀ,ÌÁ[X‚ø«ñ)¶`vc?ŽàNã.â/Wš+fÜŽìÈ…{PÅPeQ‘p ±¨†š¨zhŒ‡‘Œ6舮è‹þxÏâ9 à x/c fà ,Är¬Æ:lÄVlÇnÂ1ü‚ ø a”r  ¡Š¡8J¢4*à~TBØ…XÔD-ÔA¢ š£Z£=:¢ º£z¡žÀ<…ÁxÃ1/b<&a*^Å똃7ñ6c –á]¼ñ Ö`>ÅFlÆVlÇNìÆ^À÷ø§pçñ;þAèý”5r#/  0Š¡$Ê"‘ˆBUÔB=4B2Z¢5Ú AgtCwô@/ôA? Ä ÆsŠá…1‰˜ŒWñfãM,À",Ã{X‰±Ÿá ìÀ·8„#8†Óø —q wT¤nàFq܇ÜJ¨;¢‹š¨…:¨‡h‚æh‰vèˆGÑýð4†aÆa¦aæã|€ÕX-ø;±ûq‡ñ=Žâ8Nã ÎáWœÇ%\Æ\Gh%®܉ìȃ|(ˆbG)”CÜJ¨¢Q õÐð0’ÐmÑÐÝѽÐý0ƒð,†ày ÃHŒÆK˜€I˜ŠWñ:æb–à]¬ÄjlÀçØ‰ÝØ‹8Œ£8‰Ÿñ.áO\Ç-•é¿ùQ…QÅQeQp?*!NTEuÔăˆC<꣚"-‘‚vè„GÑ ½Ðýñ4†`8ÆâeLÆLÌÆ<¼åøk±Ûñ à{ÃÏ8ƒsøçq —q×Z…ôãvdGäGQ¸¾|v* 1¨…x<„&HFtÆã€gðFáELÀ4LÇ ¼†×1oâm¼ƒexâc¬ÃlÂ6|…ø{±qGð#Ná ~Ãe\Ѥ ¹QÅQQˆÃÃHF :¢úã)<‹á‹)xïà¬ÃlÁ6|…]Ø‹Cø§ñ3Îâü†‹øÿàlvîepîFnäEEq”DY”G*¢2ìˆB5<€Úh€fhƒNè…§1ðÞÄB,ÃøŸã|‡Ÿp ÙÔ Ü<(„p”…D!UQ"õ€‡ÐM‘ˆ–HA;t£è†^è‹þxÏâ9ŒÀ(ŒÆXŒÃËxÓ0³0ó±K°+° «±± [°_`;vböb?â0ŽàGœÂÏ8‡ßpâ lNÚTÜ…œÈ‡"(‰TB$œˆA ÔB]4DS4Gk<‚ÇÐO ?â)  njÂhŒÅK˜€)˜†W1³ðæa!c)Và|„µøŸa+¾Äר½8€Ã8‚ã8_pW`‹¢þâ.äEF1„£4Ê *à~T†1¨†š¨…:H@#<Œ–hƒx=ÑÏbžÇ0ŒÀ ‹—1 Óñ:æâ-¼ƒø° Ÿã lÇ7Ø=؇8Œ#8Ž“ø ?ã,~Å\Æß¸ŠÐhÚSÜŽìÈ…{PEp/J¡ Ê£ˆEMÔCC4C2Ú£#º ;GOôF_ôÇ“xÏaFb4^ÂDLÅkxob–ãC¬ÇFlÆV|‰øpÇp çp #,†2ÇÈœÈ{Qá(‰ûPåJp Uñâh„¦HBK¤ :áQtCôE<‰gñ†áŒÅKxS0³ðæá-¼¥X†w±+± «±±[ñ%vâ[ÀÃ)œÃEü°Xòw ò Š¡J#vÄ"ñ¨‡Ð‰hŽd´Dk´EtAW<Ž>臄!ŠQƒq˜ˆI˜‚ix¯a6ÞÄB,ÁûXÍØ†íø‡pçqÙ«RÞÈb¸•á@ @]4CtÅS„!ŽQƒñ˜„阅·°oc1–`9V`Vc-6b3¶b;vb7öã¾Ç1œÀ)œÆü‚óøWVrBCYTBª# ‘ŒGЃðš"íÑ ÝÐñžÇ0ŒÀ(ŒÁ8LÄÌÀx ±ïc5>ÃlÃWØoq?àÎâw\A¶Äùp/Š£J¡4Ê!U`‡шEu<€:¨‡h‚‡‘„Öh‹è‚®x}ðúc žÂ ÁpŒÂŒÇDLÆ«x ³ñ&`–á]¬ÀJ|ˆ±°›°[ñ%¾ÆnìÁ>À!|£8‰Ó8‹ó¸„˸‚ë­ÉØw";ò  ¢îE)”AyTB$œ¨Šxñ¨‡Ð‰HF+´Á#èˆÎx]ñ8z¡âi<‹ç0£ñ&afbb)>ÄÇXƒõ؈Ïñvb/â{ÇœÇ߸‚kpý0B(nÁíÈŽÈ…<È‹(Œâ(‰Ò(‡TUñ ê ># )èŒÇнÑOa†aÆa^Å\ÌÇB,ÆR¬Àûø«ð1Ö`=6a ¶â |…øûpßáGœÀO8‡ßpâ\C؃änø 9ùQEQ÷¡,îGe؃j¨‰ÚˆG=$à!4F3$£Z!mÑÐÝѽÐý0ƒ0C1 c01Óðfc.`–`9V`Ö`¶`¾Å|Søçð.âOü…p×Z‹¼ÂÈŽ\¸ùQÅq* ìˆÅƒ¨‹&xIh‰t@gtCoôÓ‚‹I˜‚ix3ñ:æà-,ÀÛXŒ%XŽX…ÕX‹Oñ¶â+ìÂ>œÀY\À?¸Šë°ÅQGp+î@äAC ”Æý°#qˆG}<„ÆHDs$£%Z£-:  ºâqôA? Ä ÁPŒÂŒÃDLÂLëx ³ñ&b ÞÇjlÆ6lÇ·8„“8«È^›úŽü(†ûPÄàÔE3´AW<…A‚á…1‰˜ŒWñfãMÌǼÅXŠwñ>Â'øŸa ¾Äר…½8€Ã8Šc8S8³ø—ð7lu¸¦‘ …Q÷êx!ÐOc†c4&b*fâ ¼ExK±+ðVc->ÅflÅ—Ø‰ÝØ‹CøGq?ágœÅ/8Kø WOC.Aq”BD¢ê£9:£+z¢?aÆb<¦à5,À{X‹íØ‰ÝØ‹øÇðÎã.áü‰p auÉ_Ü<ÈÂGYTD4ª¢DmÔGC4E2Ú 3ºã <ƒ‘ƒ—0 ¯b`>ÄlÆWØ‹ƒ8Š38‹_ð.àwü‰«¸[=â[p;îB.äA^äGAÁ½(…Ò(‹òˆ@%D"UQqˆG}4BS$¢%RÐð(º¡ú¢?žÆ³x#ðÆâeLÄ$LÁ4ÌÀ,ÌÅ›x ±K°+± «±±_`;vböã~À1œÄü‚óøá lõsâ6ÜÈ…<È‹(Œâ(R(²¨€Š°Ã(Ä *jàAÄ£ð¡)Ñ­ÑíÐð(GOôF_ôÃ@臧0C0£1“0 31oc9Vc3vâ0Îâ<~Ǹ~Ì+îBÂ}¨Œj¨‡h¶èˆ.芞èƒ~x ƒ0Ã1ã0 Ó0sñ6–c56c'ã,Îãw\AHCâ…»…p*£ê¡Z!mÑÑÝѽÐO`žÂ` Áó†xcñ2&b¦`f`æb>b –cVa5Öb#6c+¶ãìÅw8Š8‹‹ø·4âúG”E j ê£!š¢Ú5rý.éÁ ŒÂ+˜‹ùXˆ%XŽX…ÕX‹ØŒ­ØŽo°ßá(Nà,.âoÜÒ˜x¡Ê"5P õÑMÑíÐ}0£ð æb>b –cVa 6` v`'¾Á·Ø‹8Œ£8†8…Ó8‹_q —ñ7®Âõƒt·àvÜ…Èü(Œâ(ò¨ª¢ 1Ñ mñCOôÇ`<á…1‰˜Œi˜Ù˜‡…XŠ÷ð>ÁlÅ.ìÁAü€ãø ¿àþA¶¦´7¸wânäD@!A1GI”FD "*#NÄ @-ÔF<êã!4E"’Ñ mð:ã1tGO<„¡‰1xSðæãm,ÅûX…O°ŸãkìÃA|‡q?á.à2®à–f´¹È¼(ˆ¢(…ò¨ŒXÔ@ê£!š¢Ú¢z 7žÀ“xƒ1 /`&bfbfcÞļƒ¥XŽ÷ð>>ÄÇX‡ Ø„mø ;ð-öá ŽàGœÀÏøñ7®!ôaÒŠ\(€’¨ˆXÄ# ­Ñ]Ð =у0 /a:æaÖa6a¾Â|‹}8ˆ#ø'ð3~ÅEükM$^È…(‰ŠˆE<’ÐíÐÝÐý1Ãð¦c–a>ÅFlÂlÃWØ…ÝØƒ}8€Ã8‚ã8S83øçñþÄ߸‚k°5çZ¸9‘PÅQ¥QQQ¨†P ÐIhƒNè…§1ðæãm,ÇûX…uØŒ¯°?âþrÅ+‰º{P%P¨‚ª¨hŠtD7ôÆ ÂHLÀLÌÇ2¬Å§ø [ñ%¾ÆnìÇwøgp¿à7\ÀïøWq¶dÆ@¸·ã.äBäE~DÜ‹R(²(TB$¢Q5‡xÔG#4E"Z"íÐ ¢z¡/úãi<‹ç0/`,^Æ+˜‚˜…70 ±˱`5ÖâSlÆV|‰Ø½8„ïq'qgq—pWp¡-ããNdGäCAC8J¡"P D£*ÀƒˆCÔE¢‘„h…6hÎx]Ñ=ÐOàI¡Z¢ :à1ôÂ<1sñÞÇX…±ë± [°_à+ìÀ7Ø‡Ãø§p¿â\E¶¶ô‡(ŒÒˆDêá!<Œd´Æ#èŠÞx#1¯á,Ã{øc 6`>ÇWØo°ûq‡ñ=Žâ8Nã ÎáWœÇ%\Æ\Gh;Ú ÜŽìÈ…{…p/J¢,*"Q¨Ž8$àa$#  º¡7àYŒÄX¼ŒÉ˜…¹X€w°a->Ãçø»°ßãÎà7ü¿q ÙÚS?…Q á(rˆ@8êxq¨‡úh€†hŒfhŽVHA[´Ç#èŒÇнñà) ÆóŽQƒñxÓ0 s0‹ñ.VáSlÂ6ìÀnìÃw8†Ÿqà/\ƒ­éƸ9‘PÅQ åP vD£ê ÑmТ;úàI Æ(ŒÁ8LÄdLÃk˜¹X€EX‚÷°+ñ!>Â'X‡Ï°Ÿc¾Äר…½8€Ã8Šã8…³øpã*Ba\€»ùQ%P•Q uÑ mÑO` c(Fb&aæc9Vc öâã(ŽãÎâ<þÀ?ÈÖ‘²@väEAE)T@$j >ѽÑOá9 Ç )x ðÖ`+öã¾Ç1œÄiü‚󸄿pב­×7nø 9ùQ…Q÷¢îCyÜÊp"Õð j£.Bc4C2RТ;zažÅpŒÇ«x˱›°;°ûð=Nà,.#´3ùŠB(ûQvD¡j¢ê " mÐ=у0/à%LÃ\,Á‡ø;ð öà ¾Ã8Ÿp¿á"þÀ?¸‚kpýH(nÁíÈŽœÈ{Qá(…2ˆ@%D"UQqˆG}4BS$¢%RÐð(º¡ú¢?žÆ ÆsŠxã0ð &cf`6æa!–á|ŠM؊؋£8‹?]i}”v¹QÅQ•`GUÔBC´@'ôÓxÃ1Sð*fáM,Æø_á0~À œÅE\CècŒyQzh€FxIh‰¶è€NèŠÇÑ ýðc^À8LÄ ÌÃ;X‰µØ‚Ø£¸€‹ø—ñ®à:²u%ž¸wânäD@aCI”F9TD8‹êxuP Ð# ­ÑÐ]ñ8úà ôÇ@<…A‚á‰0/b<&b*fa–b%Öb¶c7à$Îã ²w#-( ;ÄCHFtGŒÁk˜‡Ex«°›ñ%vá{œÁŸ¸¥;y†Â¸•Q ÐÑÏ`$&`æc>Æ&|8† ¸åqêÊ¢F<…—ð–a-âŽã4.à2®ÀÖƒ²ENäE!Ü‹R(‡HTC4B2Ú£+ú⼈q xS0³0s0󱋱+ñÖã3|ޝ±‡q pwô$~¸%Q‰X<ˆzxmÑý1/`,^Æ+˜‚˜…70 ±Ëñ>Va->ÃWø‡p¿#[/ÚI”E*# Õ‡ÐíÐ ƒ1oàM,ÄR¼5؈/±'p a½¹ÖPÅQp¢ê 1Ú¡'žÅLÆtÌÆ[X‚U؈¯qÇq â ÂúPEQ<€h´E{<‚Îx =Ð }ðúãI<ƒç0£ñ2&a^Ç|¼ƒ±_a?~Â9œÇŸ¸×¹ 9áˆ@4j#Éh…vxÑ =Ðýñ$žÁs…q˜†Yx‹ñ.>ÀjlÂר‡q—p ·?A{ˆ¢¸÷É:h†ÖèˆÞx£1óñVàclÂÀ1\ÀEüŽËø×Ö<À¸ Ù‘ yQ÷¢J¡ Ê¢<*¢2ˆAuÔăˆC<ЉHFK¤  Ú¡:£+z ž@ ÄÓŒ¡xc1/c^ÁLà ÌÂÌÇb,Á»xïã|ŒO°°Û°»qGq¿ã2þÆUØú“W¸9QÅQ åq?*!NÄ¢j£ê¢>¢ š¡9Z íÑ]Ñ}ú»þ”ùÁŠ0/áeLÂdLÅtÌÄ,ÌÆ<,À¼‹•Xu؈­ø ;±ûqßáüˆø çp ÂõG—îDväA!CiT†NÄ¢&j! hŒ&h†D$£%Z£:¢+z bFáLÆtÌÄlÌÇB,ÁûX…õ؆¯° ûqÇñ Îã".ã ®#l eŒ»‘9‘y‘Qá(ƒ ¨'bQµQ¡‘Œ–HA[t@'tEoôà ŒÄh¼„ɘŽ7°K° +° «±ñ9¶â |…Ø…ÝØ‡C8Š8_q×qד¤¹‘q/J  *"UQõЉhöè†è…'ð$žÁ à ±‡—1“0 31óñ6–a>Ä|ŠMø_avá[ìÅÆQü„³¸„k°=ŸÙ‘…P eP÷#NÄ¢âPñ¨‡hˆÆxÉhƒèŒîxÏ`Fc^Æ$¼Š×0 ñÞÇZ|ŠÍø ;±?âNá ~ÃE\Æ?yšt! ·àvÜ…ìÈü(„b(2(JˆBUÄ¡!š 9RС/úažÆ` ÇŒÂh¼ˆ—ð2&afaæc1–a>Â|Š-ØŠ/±;ñ ö`?¾Ãqü„ßð7®"ôú)dG>GI܇r¨ˆ*p"5ñj¡6ê¢> 1FK´A<Š^ˆaÑx/c ¦cÞÄB,ÇÇXƒ ØŠ¯ð-¾ÇQÃ)œÅ¯¸ˆË¸‚«¸Û Ƹ w#7ò£Š!%QeQ•`G,@=4@C4EZ¢ :  EWtGOôÁ<‹áI˜‚WñÞÀ[X„¥xc6a ¾À|ƒ½8ˆ#ø?â8NágœÅoøâ Bž¥ãvdG^D8* "ì¨Šš¨‹¦xÍÑmÐС;z¢7úá) ÂsŽÑ‡ ˜Š×ð&à,Á2¼‹÷ñVá¬Çf|ŽmØŽ]؇8„#8†Ó8‡ó¸ŒpÝ•æÁ\·ÈB(òˆDuÔGstD<‹Ñ˜×0ó°K°ïã#¬Ãf|‰o±‡q §ð+þÂ؆÷¸yq/J  *"UQõЉhöè†è…'ð$žÁ à ‹ñ˜„™˜‹w° +° ë±;± »±ûq‡ñŽãgü†ßq!ÏÑâväD~GTD4ª£ê£9Ú£'zã Ä3xÃñÆá¼ŠÙXˆ%x«ð Öc ¶c7à~Æoø®?Lyò¡* "*ÃXTǃ¨ƒ4DS$¡-:£úbžÁ0ŒÁ$LÆTLÇLÌÂlÌÃ,Á2¼‹•øëð)6b ¾ÀN|‹ýø?â$ÎâþDÈPò¹P%Qà!´@'ôÆP Ç(ŒÅxLÆ4ÌÄX€%XO°Ÿá |½øÇð~ÅEüƒ[†dG^D8* "ì¨Šš¨‹¦HDZ¡AtC/ôÅ<ƒaƒI˜Š˜XŠUø«±ë±Ÿás|‰]؇Ã8ŽSø¿âþFèpú8܃b¨€ûQÄ &j! Ð -ÐâqôÆ@<ƒ!‰qxÓñ:ÞÆ2¬Ä:lÃnÂO8ƒs8?ð®Â6‚ñî@väAa”@*ÁŽ<ˆzh†‡ÑÉh…´Å#è‚ÇÑ }ÐOãY<ƒq˜€)˜…7±ïb%>ÆlÅ7؃ƒ8Š8‡Ëø×]éÉ= ò (Šã>D 2b‡x4@3$¡-C7<ŽÞ臧1ƒ1#ñ"Æa<&`¦`fb6æc!a)Và|ŒµØˆÍ؆¯±ßá~Æ/¸ˆ:Šv¹‘EŽû;bñâÑÉhƒGу0031oám,Å2¼‹øa5Öa#¶à ìÄ^|“¸€K¸Œ¿q Ù^`샻ùPEŽ2(TB$¢P¢j# hŠhöèŽÞè‹þxƒ0£ð&aÞÀ\ÌÇB¼ƒåøâ#¬Æ:lÀVìÀ·8€ã8‰Ó8‹ßðþAèhÚ)äA>@aC ”FîG%TшE ÔB<ÐIh‹.è‹~ˆ§1Ã1 c1“1 31󱋰Ëñ>Va-ÖáSlÄ|¯±ß`?~ÀO¸„?q¡c(W܆;‘yQEP¥Q÷£ ¢QÕñâP Ð͈$´BtBwôF<‡¡ð"&b*fa–`9ÞÃJ¬Â'XÍØ‚­ø_c'¾Á^Ä÷ø'ñ3~Á\Ÿø×2–<Àm¸ 9‘Qá(ƒòˆ@%D" Uñ j¡6â‘€‡ÐÍ„h…¶xÐÝÐ}1ƒð†c ^Æ4ÌÆb¼‹ð)¾Âר…=8€#ø'qð7B_¤l‘ùPÅQePUà@ ª#ñH@#$"-‘‚vèˆGѽÑOb0žÇŒÆx¼Œ‰˜„ix31óðÞÆR¼ñ¶âkìÅ!ü„¿p w£Œp/J 4Ê£2ìˆF ÔÆCHD{tF7<§ñ<^ÀxÌÄ,À»ø›°ûq ?ã,~Åü¿áúCæa¸ w!7ò¢ Š¢$J¡4Ê¢<"P vD£@-ÔF<Љh<‚.è†Þè‡'1Ã1ñ*æàm¬À:|ý8‰ ¸†\ãió…P ¥PPQ¨Úhˆ&hŽ´Çcè‹þxÏcÆa*^Å똷ñ.Vc-6b¶cŽàGÇO8‡ßp â*\4>î@nDI”FyTB4j¢>ð¡ š¡9Z¢ :¢úài<0“031oa)V`ÖaöàNà'œÅoøá*B'ÐÇ 'òá^”B9TF4j"M„öxOb$Fc,Æc¦b^Ç<¼…EX†±Ÿã |Ý8„qçð+Îã"~ÇŸ¸‚‰ŒÃpîFnDq”CeDãAÔÅCHDK´EgôÆ ŒÁ‹W0¯a6æa!–b%Vã3lÅv|‹Cøçp!ìòEP÷£ìˆA5<€Ú¨‡ÐÍÑÐ}ÐOc(FãLÂL똉×1oá,År¼‡÷± Ÿ`6cv`7öá;Å œÁy\ÆuÜ6‰ô J "ª¢>’ѽð<†a$Æà%LÂTÌÀlÌÇ;x«±± Û±Gð#Ná\ÀßÈ6™¸àn܃(Žò¸‘ˆE Ä£ Fs´D[t@gtEOôA<¡W0¯âu¼…%ø«ð1>ÁZ¬ÇFlÁ؉oð-öb?ãœÄÏø—ð'® t õw"ò£(îÃýp¢ê!íуð&a>`–â=¬Âj¬Ãg؆؋#ø§ð .àod›Jãn܃(Žò¸‘ˆE Ä£ F ´CGtG<‰§1Ã0cð^Á¼Š×ñ–àC|ŒµØˆ/° ‡pßãüˆã8…3ø¿ãOüƒi¤9P÷¢4*Á‰ªˆC=4D"Ú¡;žÂ3Œ¡‰1¯`fáM, ¬Â|†/° ‡ñ#~Â\ÃÓi«PÅPeP‰hTEMÔÆCxmÐÐ}ð$†bF`Fc,^ÂDLÁLÌÂlÌÁ<,Àb¼‹•øë°[ðvâ[Ä8‰_ð®áÖW©³¸‹x4C[ôF_ôÇSxÃ0c0S0s°Kð>ÂlÂר…½øGqñþAè âƒ(ˆ"GYDÀš¨…Ú¨‡†h‚D´@´G'tE<‰¡Ñx SðÞ¼ÅX‚exàc¬ÇFlÆØ=8„ã8‹?2“v¹‘Q%QåQ Q¨Ž8<„&HD+´Çcx½1ƒ0£0ã0“1¯aÞÄB,ÁJ|‚ÍØŠ¯° ð~Ɯï8‹øã²½Æ5ˆ;‘ ùQ÷¡<"Qu‘„hv舮x½Ñƒ0/`¦`æã]|ˆØ…½ø'q"Û,Ú4äGAE ܇r¸‘p"5QЭÑð8žÀ³Œç0Ã1£10¯â5ÌÅB¼‹±›ñv`~Ä9üƒ«y¸ãvä@näCa„£,*"ÕQ ÑíÐOcFaÄÇX‹ øÛðvâ[ÄaÁ1œÂ9ü†ßq!oPȃ|(Œ(ŠˆA5<ˆzx‰h‹è‚胧0 #ñ^ÄLÂ4Ìʇxïc56ás|‰Ø‡#8Ÿq¿à7\Àïø W6‡¶w îA!”@Ü'ªâAÔG#$"mÑѽÐýð$a(†cÆb<&c:fáM,Ä;X°›ð%öâ0~ÄYük®8ÏåF!Aq܇²ˆ@e8ƒê¨…4Ek´Å#x=1Ïáy ÃŒÂh¼ˆ—1 ¯b&fa6æ`>ÞÆ2¬À‡XƒO± [ñ¾ÁAüˆ_p Wmm#ò ? ã^”@iD U‡Æh†d´Å#è†~ˆA†Q阉7°‹±k°›ð%v`Žâ8NâgüŠ øÿ ôMÚsäEA8Ê¡2ª¢j! ð¡ š!ÉhvèŒnè'ñ c^ÀdÌÇ"|ˆÏ±»ñŽàNá ~Áü‰k¸u>u…q/J¡*ÁŽªxuщh‡ÎèŽþ‚Q˜ˆ×1ó°ï`V`Öa vb7öá0Žã ~ÇŸ¸‚·BBnÁ­¸wânä@näC!G ”Bi”E*# UQuPõÑ ÑÍÑíÐ]Ñ=Ð }ÐOa†aÆa&c^Ç\,Ä;XŽð1Öâ3lÃìܯø ·- ­A TDUÔEK´Cgô@<‹×°`¶ãÎà~Ã%ü‰k]HžânäB^F1”@T„UQ h‚hÇÐOãLÂl,ÁGØ„½8€ïq§qÿàÂÞ¦L‘ùŽR(‡Êp :ê"‘„Vx£úá Á(LÀ$LÇlÌÃb¬Ä*¬Ágø;p‡q?á,.ál‹ˆ'nÃÝȉ{PEQ¥P•ƒ8Ä#‘„¶x ÝÑ ý0Ã0/c¦ã ,À»x«°›ð%ö`?ã(Nã7üp×a[LÜq+îDäE~DaE8îCT‚±xuУڣ#º ;z¢`0FἎ…xë°GpѧwÈC”FMÔA4E2Ú£úa^À+˜ƒyx ‹°ïc>ÁlÆ6ìÀ7Ø‹Cø?á\ÆU„- ¹ ÷ J¡"ª£>š£#záŒÃDLÁkxob1ÞÃ*¬Ågøßâ ŽãWüÛRÊ÷ îEI”AE8Q µP£%Ú¡+úa0FâLÁ4ÌʇXŒåXñ >Ãøûp?à'üŠ¿p!Ëhw‘yq/J 4*ÀŽª¨ƒzxMÑíÑ =Ð0#0/c"&a ¦a^Ç\,Ä"¼ƒ¥XŽ÷± k±›ñ%¾Æ.ìÅÆQœÂ9\Ä_[NZ%p?¢hŠ–h‹Nxýð,Fa^ÃB¬Ä&|‹cøw¼KýQˆE ÔB=<„&HB+´E'<ŠîèxÃð"&bfc–áC|Нq'q !ïÑ6á^”B9D¢*âУzàŒÂdÌÅR|Œ؃C8‹¸Žì+ègq?ª£ÅÓ×°c>ÇìÜÂï°½Oû‰"(ÔAS<ŠxÏb,¦âM,ÇFìÂIüƒ+鯉‡ÐMÑ­ÐÐÝÐ}0ƒ1ã1S0sð6Và|ŒuØ‚íØ‡ƒøÇpp×öãäB”À}(‡ŠˆB ÔC}4@C4FS$¢Rð:¡ C7ôD_<‰Ax#1/b&a*fb` V` ¶`â~ÁU„~H‡¼(ò¨¦èˆ70‹ð!>×øç¶Š´£<âPÑ­Ñ =ñ$†áELÅ|,À",Å{X…O°›± Û±{qGpgqÿÀöiAN@q”E$j¢!ZâQÅ^Æ8‹¿që'”%Âá@m´DO<—1Ÿ`>Å&lÃW؉oq‡ñNà,.álkè'p'ò J¡ * 2bðÐM‘„¶èŒ^è‹xÃ0“030 °«ðVc Öc#6a+¾ÂìÆÆ8ŽŸqçñ;þÁ5„®%¿p7râ@1„£$J£* "ªÀŽ(Ä¢jâÔBmÔE"mÐÑýð,Fb,&bæbÞÁJ¬Ål×ø»°{q‡ð=ŽâNâgü‚Kø!먷¸¹Q¥p?¢P5‡ºhŠd´AGtE? Á¼„‰˜†Y˜‡XŒ÷±›ñ5öáŽàNá<.ã*ÂÖÓ"/Š£"P•aGbP¢6ꡚ!mñE7ôÆ<ƒa‹ñ˜„xóðÞÁ{øë°Û°ûð~Äi\Ä%ü?ñ®Áö)u w!'îAE ”EED¡*j¢6êá!4E3$" -‘‚¶x]Ð=ðâ ÅHŒÅLÅ똋·°ïâ|‚ ؆Ø‹#8‰_ñ;®à– ¤·ãNdG.äA~F1”@Y”GED‰X<€ZˆG¢)’Ñ mñCwôÂx ƒð†c Æa&cfaæc1–â=|€O°±_avc¾Ãø'ð~Æ9ü† øâo\EÈF®ÜŽÈ|(„â(‰2¨€*p Õ‡ÚˆG=4@#4A"Z 5Ú¡3EwôB_ À ÆPŒÄhŒÃ+˜†™˜‹…XŠ•X‡­øûñ~Â%\ÅmŸ‘AYÄ >¡Z¢:ãq Àsƒ—1 ³±+±ŸcŽâ®"tu Ù‘ yQá( °£D<„Æx-ÑÐ}ðžÆ ÆóŽ‘ƒ—0“1³ð&–`9V`5>ÃW؃ƒ8ŠŸq—q·l¦ÌQ…QPU‹8<„æh…膾ˆA—0¯b&^ÇÌÃ[x‹±ïb>ÀGXƒO±Û°»°ñ=~ÄO8ƒ_qá*l[(sdÇ=(ˆ¢(ƒ*¨ŠÚh†$´Â#€AŠ—0 ‹ñ)vã4Îá<.ã*Â>çZÁÝÈp”‡µ4C<޾Œ—0ïâ3Àw8ŠS8‡ó¸Œ+¸u+õ …PUàD,j! )x=1/bÞÇ6lÇ.ìÃw8ŠS8‹?²> yŽûPU‡Ð mу0oâc¬Æ¬ÃlÂ|¯± {pßã8Îà7\†í Ê ùQeQNTG<š¡5E7ôÆ@ Â0ŒÃtÌÁ¼‡UX‡Íøq ¿âþÄu„~I>ãnäAÅ}¸‘ˆB <ˆ:h€¦HBktDwôÁ@<‡Ñ˜€©˜·°ïãc|Š-ø ßàŽãþÀuÜþ×'  J¡<*#¢š£ºâ <‹Q˜€™Xˆ•X‡­Øƒ½Øƒø?àGœÄÏ8‡ó¸Œ¿p¶íô¸9 yQEP¥Q•…ªxq¨ÆHD :á1ô@?<‰gñFâELÀt¼7ñ6–cÖa+¾Æ^üˆŸð .Ãö5cäCqD :ê"­Ñ¢à9ŒÄKx³1K± ð%öà(ÎãW8;ÈäF~EIÜ;bQµÑÍ‘‚ÎxO`0Fc"f`>À‡ø«±Ÿb#¶à lÇ.ìÃAÁqœÂYœÇïø ×pÛN®9äE1”ByØQ µÑÍÑmñ(z žÅ0ŒÆD¼Š9XŠøk± Ÿã+ìÄ>ìÇAÆüˆãø gñ+.â/üƒëÛÅ5Š;‘ y…Q %P•`GU<ˆzhˆfhNè†ñ ^Å[xKñ>ÀlÀìÀ~ÁI\ÄŸ¸êŠÛ7Ä ŽJˆE-$ Z¢5Ú =:áQtGoôE<…ÁxC1cð2&a*fbá}¬Âj¬Ççøûq?àÎà"®"d7}?îF.DI”FD" 5Q¡)Z Ð}1ƒð†c Æc2ÞÀb|€Møßâ{ü†+¸ý[â€"¨ˆÑðFa ^ĢŒÿcï~ ãþáwüÏîAÛ"(‚ÒQ¥AÔ %(;(‚`DU аUƒ"(EØbPÅ jÍV­ A1‚bÐZû~l/çü6Ogu÷Ùçyßs~ïœó9ßï}]×}Ý÷üɤÎÒ½šë¸[¸;¹‡xˆGxœ3içE^æuÞâ]>á ¾å{"³ý,Ó‡ÕY“µèG%°1Ø‚-Ùší¨a(;³+#ˆ³u$8–“8•&Îâ|&r ×q#·q'÷ó8æ)žãE^§À‡tñß²€å^ó;éC•lÊ ¢šbìÊöáP9…siæJ&s/ñW^æM>ç'z¿î;ì®ìÁÞìÇÔQÏ4p £8‘“939›ó¸KIs5×q·3•x˜'y–W™Íëtð6ïñó9_Pd?°eÞpÿ¬Ìª¬ÅúlƆ±{s s( œÀiœËå\ÍŸ¸•»¸Ÿ'x†—y‹)ò=cÙŸ9ÊYƒõÀ6ìÈîìË!ÍNc<s ·’å rÌà¯<Ï‹¼Âë¼Í»|ÀÇ|Η™ÇüÄRoúÙä·¬Ìj¬I%1€(Û² {±ûsGp,'ÑÄÙ\B ·ñófÏó*oó!Ÿó=˼å³Ìš¬ÇflÇÌ(Æp2MŒg—q5“iå!fð¯òoó]é&ò¶ŸúPɦ f(µȱœÎ…\ÊU\Ç­´r3¼ÈÛt1Ÿ…,3ÇçŽÕéÏ– e7âÎÆs7r7s+·s÷p?ÓÆã<ÉLžá^çm>ä+PöŽkSÁ:lÌcq £9™3Iq—s·p71ƒçx…wùˆ¯ù¿{·W¯•X•5èË:TÒŸMÀ bÛ1”Ù=ùûSÇ¡ÁÑŒa,g2ž ¹‚?‘á6îáažä¯¼Ìë¼Mø‚ùüÄrïyXß³±9ƒÙ–¡ìÂ^Ôqc8ƒ \ÎõÜÆÝÜÏ#<Á_y‰7xOøŠïéUð3ÈÊôc†0œýÉÔq‡s$Çp<'d,gðGÎâÎç.çJ®å&n'Ë4a:3yž×x“wùˆOùšù‰eß÷³ }Ù€ÍÙ–áìÇÍ(Nâ ÎábÒ\ËL!ËcÌ$O|Cä×ã7”Ó‡~lHÙ†veoêh Éx&’æj&3…©<ÄãÌ —x›øŠ,ó¡÷…µÙŒ-Ø’mØaìÅH¡Q$9•3™À%\ÉuÜÆýLç9žç^â^çMÞá:ù„Ï)ò?ét”±«Ó—õÙ„lÍ goê8œcHòG.äR&ñ'næîãr<ÇËtð_ð?±ÔGîrúЗõÙ”-D55ìÂìË~ìÏÌaÁÑŒb4'r MŒç|š¹„4×p·r÷óOð4/ò:>áKºYæcï+«Ó Ø„ !F-ûr Fq*çp>‘¦…ÉÜÊ]<ÀÃ_¬A?ú3€m؉ÀQÏ)Œç"®"ÃíLeÓù+/3‡ù–y|G7 ø‰Èg^~ʔӇµèËڬdžlÆ@1„Ù•8#9z8žSiâ,&ÐLšë¹[¸“{xˆ'™Á3¼È+¼E'Ÿ0—oùž^Ÿ»gVdÖ¤/ë²!›¥†ÝØ—#8–“ø#—r·qm<Ç>§×\ß=¬Ï†lÌfDÙŠ!lOŒ]ÎîìÍ>ìÏAÆ‘ÃhNd,MŒã|.á ®æFZy€yˆGxŒé<ÉS´3‹—x•Þæ>çK¾¦›¥¾ðç`Ö`6bs¶a[jØ…ìÏŒa,gr.‘æz¦p3ƒ—xwøOùŠù,õ¥ß©¬Îºl ¶g{±?‡r§r.—3™›¸™Û¸‹{¸Ÿ‡xŒ'x’§hçy^âU:˜Cù”/ù†ïèõ•Ÿw~ÇÊT°>ˆ2˜íˆ±+qä0Žç .äj®ãnã!žài^å}>g>½Š®ÅºDÙ‰}9€ƒIp £9³˜ÀÜÄ=<Γ<Åó¼Í‡|ά𵟠ú²![3œ8–&Æ‘â&r%“¹•»x„§y•÷ùˆOùš¥¾ñóÇ*¬Ëæ a'öäŽg—r#·p;Sy€6fð,yÞás~`…o½'¬ÌšlÌ@†0œý8”c9‰s¸‚[x™<Í3<Ë,^äe^ã-Þå}>â3æò%ßð ‰Ìóû”2ÊY“õØ*6gkjØ•=øp0Gr¬E%ýÀÖT³#»2‚HÐÈXR\ÆdnâZ¹—Gx‚<Ç+¼Ëgü@¯ïý^¢7}¨dÛSÃPbìÂpjÁ>ìOõAÇq"§p:gq>q)Wq7swrñáižç%^¥ƒwéäKºYºÛûCÖgÛ°»q œÄ9Là.ær®ä®ç&na ­ÜC–i´ñáižçE^å Þ¦“Ï(2ŸXá?³¬JÖ`-ú²ë³1›±ƒB ÉSÏÉ4q—ó'îà^a/ò&ð9ßðËýè^X›JÖg#6c ± Û3”ÃØÄÉAÊË(NäN'ÅL$ÍuÜÊ=<È£<ɳ¼È«Ìáºø–^ |±&k³›° ;±;ûpÇr*çq—s571…;y€6þ̳¼Æû|Á·ü@¯…>ÿ¬ÉºlÌ@v`Oâ`ê9Œ#8ŠcʼnœÂiœÉٜ˅\Ê\ÍŸ¸•VîeògžæE^ã]Þçc>çk¾ã'–ýÉŸÅXuèÏ@¶f{vfOà@âãHŽæ8ÆäNgãI1f.ãJ®æznáNäãIþÊ‹tðs(ÐÉg|É×|ÇßXîo~vY5èËlÊ`¶¡šbìÊìžÌωœÌéœÍ¤¹ŠnâVîæ!Úx‚™´“ç-Þá>å æã·R¯¥Y•X•ßÓŸ*0ˆmØŽÃÙ“9’ǹLäZ™FŽçy•øžå#®Á&ì@ŒáŒ NGr4£8‰S9‹ ¹˜Ë¹†ë¹…©ÜÇ4çIžáe^ãMÞãC>á ¾¡›e—ŠôZ™ß³ Ù–]ØŸ#8&R\Éä^ç3¾à+¾¥›ôZ:ÒkÊø+³ôemÖc#6e 3„b c/öã å’œÉYœÃ\ÆÕÜÄ-ÜÎÝ<ÈcÌäž'Oïñ)s)2ŸŸXvŸ Ve ú±>؆íJœý9„#838Ÿ4-Üʽäx…÷)²ì²^6¦ŠMÀ@¶b¶cGvbµìÅ؇ý9ˆÃ9Šc8žS8“ 4s i®å&îd*÷1Çx’gxWyƒ·)ÐÉ—ÌgK-ç}eeVg]6e;°`?æ9‰?r>Wq3÷ðg^b6ïó Y~ùH¯>ô'ÊüÃ8™ ´p7ÓÊ}<Ì“<Ë«¼ÏW, ÷ >{¬Ï@bìÁHŽädÆs 70•¯ð1_0Y®Ìg›Uø=0€í¨e$Gs㹘kiåaþ ¼Ç—D~ãùRÅælI5Û³#»²ûq(Gs§siáv¦ñ(O0“çx™7)ð1_ò#ËþÖçß³>[0„áìGõÅ1Œâ$šO3i®çîåžâeÞ£“.¾b> Yöw‘^¿eÖbC²-ÃÙ‹ƒ8’$ã9›s8 ¸˜K¹‚kháOÜÄn§•©dy˜Çx‚<Ç˼Í{|À'|ÉwDzûcy~Ç*¬Á:ôgS¶`CØžáŒ`_ê8œcÍiœÃELâfnãNîãAá ž¢Wy‡OøŽ?ßËŠ>olÁ¶ìÂÅɜÕÜÅÓ<Ë ¼Ê¼Íû|Â\¾g©•ìËïY—ìÆ¾Jc¸k¸‡y‘Où’oøŸXje߬Ìêôe=0ˆjvf/äpFs§2ޏ„+iáF¦pñ8O“ç->à+¾aÝüD¤ÜgŽ2V¤œ>T°6•¬ÏFlÆ@¶b[j؉áìξÔqGr<§r6çr—p×3…;¸›,m<ɳÌ"Ïk¼C'_ò5óù‘¥W‰ôú «±&}YÙ’íÙ‘]ØŸC8‚c8™ñ\ÌÕÜ@+ò4oð1ó¾Æª^°9Ù’ÁT³=;2Œ]ٽؗ‘ÀÁFO’&Îæ".%ÍÕLf ÷’åæ1rÌäf1›·ùˆO™Ë×tYÍ÷ ½Y‰UYƒ~T²U d;1œZöbê9†ã9‘Ó8‹ \F ·p?9^à=¾æ{zõñgJV§’ eoãdÎåJîb³ù˜¿Ñgu¿ëÁ>ìO=G1бŒ§™k¹yš7x‡ø‚¬°†×þ fu4ÒDšVcüÈkúeÛ³3»ç`ÃYLä:îæ žây^å}¾ ›ßVønaS†²7‡q—‘ážãcR±–ŸMÖ£ŠlCŒ=ÉQœÌÙ\Á­ÜÉý<Ê3¼Â»‰üÞÏ>ýÌ0êË´eð7–éëµd%Vauú±›°Û3œ½8ˆ#Ã8.ær®âz2ÜÁ}<Ätf’ç-:)ÒͲý|_Ñ—MØ‚AlK 1vcoFrÇ0†&&p)×qñæižçÞâ}>á+°ÜÚ¾¿éË ¤š]ÉþÈAÔ“à(Že4c8‰S9“qŒç\.`"i®¢… wp?ÑÆÌd¯ó&>e._ñ½ÖñÝNÖ£?›1˜!lÇNìÁ~ÎhN¦‰r-ÜÌ=ÆűŒæDNátÆq6çq!¹œ+¸šë¹‘[hån²L£¿ð /ð2oÑÉ—|Í|~déõ½/¬ÆüžuÙ˜-¨f{vd#ØCIÐÀqœDçr“æ2ÜŽ<ÀLžå%^ã}¾à–ÝÀï'Öd}³+ûÓ@ò'nâVî$ËÃäx–<ïñ Y©¿ïyÖ`2„ù‡s§s×p73x/ˆlè³K p*gpçq1i®çVîâQžåuº˜K‘n~³‘ïJÖb¶e7öá’œÏd²<Ã[|Ïûóöã@¥QŒå,&p·’eå9^áC>ç[–©ò9`=6cköàpNãbnf/Sä·›¸w6gK†0”aìÍÆ œÅÅL&æòOóïð XnS?Côg[â4ðG.ãnž£“e6s/¬Âš¬ÍlÂ`†²;#9œQœÊÙ\Ädn¡•{x€Ç™É ¼Î{|Ä—Ìã'–àóJúÑŸ­Ø™ý8‚“8‡Ë¸‘»yœv^ã#æ³ôæîŸõØ’¡ìÅaÇX.á&îçÞák–ÙÂóf væŽf<×’åþÌÓÌâu |Æ<–èç„õÌpàXš¸k¸iü…y›.æ³tÔ?#чµÙˆí‰s4gr9Sx”éäÇŸÏÛÒkÈ j9ˆQ\H†GÈó ?²ò ¯7Cˆsgp 7p3x“Où•¶òýF”½Ån¤×ø†Þƒ}OåŒáR.#Í•\ÍuL&ÃmÜÁ]Ü˃<Ä#<Γ<ͳÌâeÞ¤Àg|É×|ÇO,·µçÈZT2€mØ™=9€cK3-´ÒÆLò|Ì7üÄòÛØµØ€ÍÂP†sÇqq·q?áeÞçk~â7C|æØ€-Ù½9œS¸ˆ›È2Wxƒ9|ÄW,`Ùj÷źlÎNìÜÄY\ÄMLáNîåA¦ó4/ñ&ð9ß³ô¶¾óYŸAìÌÞÌ(Îäb®§•iÌàE>à[–ÝΟ±Ù‚aìϜΙŒ#Åù43‘4WÓÂd2ÜF+wq/òófò,/ð2oQàc>ã[~b…í}ϱ«Ñ—õÀ@¶¢š»±#©ãPŽf4§qgq.sâ&nåNîãQžâžç> ‹/ù‘åk¼Ö¬Í†DÙž½8œ1œÅd˜Æcäø+y^ãm:™Ë7DvðÙ /ÄŒà(Æpq-­<É |̬6ÔgžuÙ f;vaOöápÆp&—p“¹›¼@.¾c…}G0€áÄÉœAŠ ˜È•´p+÷ò(Oñ"oÒÉ—tó»˜öbuú²›²5 goFr(G1šSù#çq Wq3÷ñgžãMº˜Ç2;y]Y‡MÙ†áŒ$ÁÎb"-ÜÎ#Ìà>`Ëíì;€ÍØ‘8Gr:ñ'Zy’×ù‚où^»8Ÿß± }Ù eu4dr%7ÐJ–6r´óßü¼ï0?·lƶÔr GÓÄ%\O+ÐNóË ÷>°6[2œƒH2«˜ÊÓ¼Ë{¼Ï‡|Ìg|Á×|G7 赫ï–§ŒÞ”³¿gmÖg¶d{vdgvco ÁQÇIœÆY4s ·ò3éàmÞçS¾d>‘Ý|Зͩ!ÎÔÓÀ(’œÉ¹\Â$&ÓÊ}“hånîçQþÌÓäy—Ïù‰Þ»û=Èl–lÃÔrGq*háF¦0•hcÏñ*sè¤È÷ü²=|—±.Ù‘½8„ã8ó¸š;x”˜C‘ùü@dOŸ#V`%V§/²9CØ‘=I‚1ŒãÎg"Wr7s÷ò03˜Åë|Àg|G¯‘^+Ò—Jú³[0ˆm‰±+qê8’QœÆÙ\ÂuÜÁT²<ÂÌd¯ò&ïóß³Ô^®Íê¬Ç¦T³+#Ø—ƒ9’ãiâ|®äîá žæ^ç=>ç{–ÙÛ÷}Ù˜-ÙÝØ‡C8ŽÓ¹k¹ƒG˜Á+tð.Ÿñ- YîÞ#úRÅveH2Žf&1…‡ù+¯ó1ß±|ÜÏ2±5ÃØ#9f&“e&oQd©}|æ¨b SÃ0öâ`Že,¸œ›¸ƒûhã/¼À›|Ä×üÄoöõsȺlÂVìÀžÄqœÁE\Ǧñ9fñïò E~â·ûù½JCØ•}9ŒQœÆ´ÐJítÐE7e#ýþ`#¶fuŒbÀ}ÑÄÎìÉþʼnœÁ…\Ë-<À#Lçi^¤ƒ÷ù”ïXæ@¿/Y‡Í¨föæ0Žf MLàJ2dyœçÉ3›·y—ø”"ß©óÞ°*¿g#²=»s õ$8–Ë8Îå"®àîà~žài^æ-ºøŽô:ÈÏ¿aEúЗõØŒ­ØáìÃÁÃXÎåB.áJZ¸‰;¸—iL§W˜CE²ÜÁ~>XMÙŠj9Æp¸„«ø·s?Óy†Wx‡ùšYæ¿»X‹ØšaìÇ‘ŒæœÇ%\Å ´ò9žçuÞg.ß³|½ïY6b»0’ý9ƒ¨'ÁQËhÆp§r&ãϹ\ÀDÒ\E îà~¢'˜É,^§ƒ·x—èb._1…,s¨÷–UèÃZTRÅ ³ Û1”aÔ²'qê8œã8$§r¸Œ+¹–¹…»x‡y‚™<Çlæð1ßð7zæ³Î:lÀ¦ b;vawâÈ¡Ç)œÅE\Á ÜÍ£<Á žå^ã]Þ§‹¯˜O¯ÃýUX›MÂpvgoöçPŽf cù#çÐÌ$n¤•iL§×餋/˜ÇB–Oø¾d¶f{vaöápFq).f2wó8ÏñŸñ7Êð>c_I1™{yŽy•·ø€¹,ä7GúYg=6!ʆ³õC’s¹‚ Yr̦“ïXé(?T³7Çp.“È2GÉÑÎ+|ÀW,Õà}`eÖ`m6cvfÐÈé\À5ÜÎÃ<ÇæÑûhŸ#3‚FÎä®ç&nç^Úhç5>á æ³eŽñ¹`mªD {s('0މdÈ2ƒ·ø†eõ;ˆAìM‚qœÍ¹\ÈÅ\Ê•´p#S¸‹iü™g™Í;|Ì|°T£Ï¿c5ú²›±5CÁÁ4rçr“¹‹‡™Á‹¼ÅDŽóÝÆ¦lK-õœÌ%\ÁµLæfîä~å/<Ïl> Èßè=Ê?ÒŸAÄA $9k¸›/ñ.ßPv¼Ï(ëӟ؄͉2˜mÙž¡ìÌnìΞüý8ˆCIp4'0–ñœËù\Ì\Ç­ÜÎÜË4å/<à ¼Ìk¼Å»tñóYÀÒ£ýœ±2kÑŸ a{ç £ÑœÆx.æZnæ^žà)žå%^ã=>å[~d©|ß³:k³ÙžZöçpÆp*grÍ\Æ5dheáy:ø„ÏøŠù,`¹1ÞcVcm6aK¶egöæ@ù˜«˜Ìm<À“kË-êe²wèå²Oè²_蕲ÿrKvý*ë¢T‡õ1YK<×Éúвa ÷ýåÑhýèpNRŽ ½I¦hÇi9)ô99ôŒl%û/^÷ÿÖG›×izx­rrfèírVèy9;ô9'ô‚ì ½KÎ ½(ç…Þ-†YÞçrùE½Lö½\öYþæùý« ÷Ñ/ÜK¥ì¿„÷UeÝ€°6*‡^-kBÉa¡×Ê¡ÇåÈ%¼NuõamB6„Þ(G‡ž”c—p¿&ëÆ…µ)9!ôf91ô´œz‹œzFN ½UN =+§-áõÛ¬›ÖæäÌÿÐç Ý>³Â^y9{ ÷í°nNX[¡wɹ¡å¼%ܯۺ…amdŸÿõ2Ù;ôrÙ'ô Ù/ôJÙ?ô*¥:Çä°ÐkåˆÐãrdèu²>ô„l½QŽ^aÉî?iÝØ°¶IŽ[ÂóRÖMk›åÄÐÓrRè-rrè9%ôV95ô¬œz›œzNÎ ½]ÎZÂûÊ[7;¬ís–ð¼‚uam—œzQÎ ½[. =Ræ½.[ÔËdïÐËe•á¸JF©.[²ûˆY7,¬­•#BË‘¡×Éú%ܯç#ἆpn£zRŽ ½IŽû7÷O9oB8·YN =-'…Þ"'‡ž‘SBo•SCÏÊi¡·Éé¡çd;ùpÜ! tý›÷ûk¢}ç…½»åÂÐ#¿ñþÿfQ/“½C/—}B¯ýB¯”UDÃqµ¬ =&‡…^+ãÔýfÉî/a]CXÛ(G‡ž”cCo’ãBOÉ ¡7ˉ%®“6>)̵ÈÉ¡gä”Ð[åÔгrZèmrúÞκ™am»œz^νCÎYÂý Öu†µ]rnèE9/ôn¹0ôÈo½¿]ÔËdïÐËeŸÐ+d¿ß.Ùõ+­ëÖVÉ¡GåàЫeMè19,ôZ9"ô¸z¬=!I†ã&™¢9§e ™%¼ßV릆µY9-ô69=ôœœz»œz^νCè ÇEÙMäw‹ŽËd9¿[²ûúåQi}ÿpN•zT½ZÖ„“ÃB¯•#BË:á¸QŽ=)Ç–¸¯&ã)šÿÅû.õHÛgRØ«EN=#[É’£<(éí5¤’(1âá MȆÐåèГrlèMr\è)9!ôf9ñ?ô?ª¦í3)ìÕ"'‡ž‘­dÃq›ÌÑŽó²ƒEº‰¬èsC9•D‰'A’ÔŠáºrRè-ròŠÿ™çókŒëL ×j•SCÏÊi¡·Éé¡çäÌÐÛå¬ÐórvèrÎÿÒý\§3\«KÎ ½(ç…Þ-†YÉ÷åJ‹z™ìz¹ìz…ìz¥ìz•zT½ZÖ¬ô?óüz>b®SKœ$i"Eš Yrä)P ÷YÙó¦œJªˆRMŒ8 ’¤H“!»òÿÎó˹ÎÌp­v9+ô¼ì @‘n"åž åT%FœIRå‹ÎOË2di#G;y ‰¬b?*‰[eÑùq92ô:Y¿ÊÿÎëñk„ûh$I)ÒdÈÒFŽ<ŠDVõW]t~¥¬"J51â$HÒDŠ4²äȯºd÷W°®3¬í’sC/Êy¡wË…¡GVóó¹Ú¢^&{‡^.+¨¤Š(1â$H’&K>œS”ÝDúØ‹r*‰#N’4Ù_þÅ—ÿæ#oŸÙa¯9'ô‚ì ½KÎ ½(ç…Þ-†YÝë°zxdïÐËeŸÐ+d¿Ð+eÿЫä€Ð£rpèÕ²&ô˜z­±úæùÇíSG‚$M¤h&M†,9ò(Y#Ì%dÃbÖ5KÒD3-aMë¯ü‹“YóÓš69}1ësÆf†ñv9ëWöÌ›ŸÖtÈ9‹Y_0ÖE‘ÈÚ^*¨$ºö?ßI1û {ÕÊ¡ÇåÈÐëdý¯\/a¾!¬i”£COʱ¡7Éqÿ¡ûþ呲߄°g³œzZN ½EN=#§„Þ*§†ž•ÓBo“ÓCÏÉ™¡·ËY¡çåìÐ;äœ_y^óaM—œzQvYÇûK•D‰­³hM\Ž ½NÖ‡ž$IÑLš Ùu–ìõëùÈ9of8·]Î =/;(P¤›Èºî™ÊuÿùžQóÕĈSG‚$©pnZN ½ENþ•=3æ§„5­rjèY9-ô69ýWöÉ™o'O"ÝD*=·ÊEk*eQbÄ©#A2¬IÉ ¡7ˉ¡§e ™Ê~­æ³´ÑNžºèç–­çÏ•ë-êå²Oè²’*ª©¥Ž¦0ß"3´ÒF;tÿrþúÎ_QÊêõµÆG”˜‹æêd}è Ùz£zRŽ-±W“ñqa.%'„Þ,'†ž–“Bo‘“Kì•1>¥Ä\«ñ©=沎§…±6™£ tÑMÙÿx^…ã~a¬RV%F-q${œ÷Ë#e|B‰¹fãKÌ¥O s-rrè9%ôV95ô¬œz›Ì…Þ.ó¡wÈ]tSÖßó ÿÑ@•Œ†^-c¿üÇ=µÆGô˜‹;Æêd‚FšHÑL ­aM[Èœl½CB/ÊîÐ#ºÏ /åÆû”˜«0Þ/ÌUÊþ¡WÉ¡GåàЫeM‰½bƇ…¹Z9"ô¸z¬=!JìÕh|t‰¹¤ñ±=æš c)ÙLš ­dÉ‘ïq^Áqgë’Eº~-7òºQAÕ-þ^j(17>²Ä\ñú0— ¡7ÊÑ¡'åØÐ›ä¸ÐS²9ô´l =#[É’#O!Ìewè‘=¿_åÆûô˜«pÜ/ŒUÊ*¢Ä¨%N‚dX“ Ù,Ó¡gdkèm2z»Ì—¸—ãsÂ\Av†Þ%ç†^”óBï– Kì©êÕkÙªE½L–SAÕÔ‘ ‘&ši¥=œÓ%‹tS¶‰s©&F-u4ÒLë&á¹ÉY¡çåìÐ;d®M¯EãóÂ\·\zdSÏaÓðdïÐËeŸM¿W…ñ~a®RV%Fœ$)2ä(„µ‘Í\ƒr*‰'AŠ ¹ÍÂ{#»(à*Kü‡UQãƒKÌU¯ s19,ôZ9"ô¸z¬/±WÂxC˜k”£COʱ¡7Éq¡§ä„{5ŸXb.m|R¹Ç“ÃXF¶’%G;y {œÙÜû»ù¢^&Ë© Š(ÕÔR·ùâï¥ÑøèsIãcKÌ5æRrBèÍrbèi9)ô9¹Ç^ÇSÂX«ÌÒŽs²|s:Ï)qOã=æºÏ cEÙMd ¯T%¶Åâ÷Œæêd‚FšHÑL ­=Îos<½Äž9ã3K̵ŸæòrvèrNèÙz—œ»˜½ŠÆº‰ \t\&Ë©¸øëþŸJkú÷XWåx@‹ÊjbÄ©#A’TóÒŽ'…±™¡•6r´ÓA×ÜW·5 K¬‹DýDÃs•½C/—}B¯ýB¯”ý£=ž£ãa,*‡^-kBÉa¡×Ê=öˆ;Ùcì—Gñús Ç a¬Q&i¢™4-´Ò¶˜=Ûåé ‹"Ý”mé¹nÙã¹9°åÝãïÏÕøà0W-kBÉa¡×Ê¡ÇåÈ{Õ¯s ÙH’i²´‘#OÈ ïÇ pMYKœIÒ´!KŽ‘­S)û‡^%„•ÕĶZü½Öæârdèu²>ô„l½QŽ.±WÒøØ0×$›i¡•6:è¦l°÷†*ª©£‰–ðå¶Éíƒ_yó³ÃšY ‹n"[»TmýçU;® c1YKœIÒdÂ|N¶“§@‘òm¼ÞÛ„óe-q$·Yü½¦ŒOsÍ2M ­di£Žçw9žÆŠ22Äõ©$JœäEóé!‹¿vÆø”s­Æ§†¹¬œz›œzNÎ ½]Î*±WÞøì0×!ç„^¡wɹ¡å¼{u_Xb.Rí{®zñseÆ{‡¹rÙ'ô Ù/ôJÙ?ô*9 Ç^QǃÃXµ¬ =&‡…^+G„—#{ìQ績Ä=&Œ7ô˜kt<:Œ%e)Ò´!K®ÇyydzÃX‡,ÐE7‘m½TPµíâï¥ÚxM‰¹˜ña=æjcqYG‚$M¤H“YÌžYcmäÈÓA"‘íþqm¹ã>Ûý×=~~TïWb®Òxÿ0W%„•ƒC¯–5¡Çä°{Õæârdèu²>ô„l½QŽ.±WÒøØsMÆÇ•˜KŸæšåÄÐÓrRè-rrè9¥Ç^­Ž§†±¬l#ŽÛežŽçw–¸§.ãs{ÌÏ cÝ2²½ÏTRE5µÛÿãyuŽëÃXB6’$E3i2d{œ÷Ë#g|f‰¹vã³zÌåÏc²@ÝDjÜ3TÕü×ý~~T¯ s1YKœ$I‘îq~Æñ”{¶Ÿæ²rZèmrzè993ôv9«Ä^yã³Ã\‡,ÐE÷ÏÏmÏ‹(ÕÔRG-;„kÊítÐEÙP?TPE5u4 ]tN‹œzFN ½UN =+§ ]ü=·ŸærrfèírVèy9;ô9§Ä^ãa®KvS¶£{§ŠZi¢™Zi§‹²Ø¢s«d”êp“µÄc‹¿nñú0— ¡7ÊÑ¡'åØÐ›ä¸{¥ŒOsÍ2M ­´ÑA.º)ÛÉýR»S¸¦LÒD3-´‘£º(ÛÙy;/þjÇ©+1Ÿ0Þæe’&šIÓB+m=Îow<+ŒåeŠDvñ]A”ø.á5“M¤H“!GžbXS>Ìûþâ–*-ñ—¸ÄŒ+1Wk|D‰¹¸ñ‘%æêŒ×‡¹„l½QŽ=)džÞ$Ç…ž’Bo–COËI¡·ÈÉ%®1>¥Ä\«ñ©a.+§…Þ&§‡ž“3Co—³BÏËÙ¡wÈ9¡dgè]rn‰kÏ+1×m|a‰¹Èp®¾ø¹2ã½KÌ•ïSb®Âx¿0W)û‡^%„•ƒC¯–5¡Çä°ÐkåˆÐãrdèu²>ô„l½QŽ=)›H…ãf™¦…V²´‘£ºè¦lWÏ*ªw ÷"ãÔÑH’&R4ÓB+m´ÓAÝáü²Ý¼–»…×Nö ½BVRµÛâ_˨ñÁ%æª×„¹˜z­z\Ž ½NÖ‡ž$IÑLš YrˆÔº¿Úp YKœ$I‘&CŽ‘ÝÃû/û‡^%„•ƒC¯–5¡Çd-q4’$Eš 9 Dö×UD‰QKœIRdÈQØcñ¯edO?{.~®ÌxïsåÆû”˜«0Þ/ÌUÊþ¡WÉ¡GåàЫeMè1YKœ$I‘&CŽ‘ð—dUÊ*¢Ä¨%N‚$)2ä(„s"{yÞ{…ç){‡^.û„^!û…^)«ˆ£–8 ’¤È£ΉìmoÊ©¤Š(1â$H‘!·÷¢s ²3ô.97ô¢ì&ò‡ï•ñÞ%æÊ÷é1Wá¸_±JÇýÃX•ŒRM-qêh¤)¬i–iZh%KítôØ»ËñÜcEÇóÂX·ŒÄ=*¨¤Šjjã‹ÖÔÉ4‘¢™Zã‹îmƧ—˜ËŸYb®Ýø¬syã³{Ìu8žÓc¬à¸3ŒuÉ"Ý??Ç}¼'TPEõ>‹ÖÔÊ8u4’¤‰fZšV95ô¬œz›ÌÑŽó²ƒEº‰ìëºTî»hMTV#N ’¤Âš´œz‹œzF¶’Ýwñ¯Q›ñé%ærÆg†¹v9+ô¼œz‡œzAv†Þ%‹tS¶ŸçCUTSK#Í´î®!ótÐE‘nÊF:—*ji¤9üåy­rjèY9-ô69=ôœœz»ÌÓAEº)Ûß5¨¢–Fš÷×YÚh'O]tSv€ó¨¥ñ€Å¿–ÍÆ'–˜KŸTb®ÅøäsãSÂ\«œzVN ½MN='g†Þ.ótÐE‘nÊô:PE-4®!³´ÑNžºè¦¬ÎyÔÒXž·LÓŽ3²•l8n“ítÐEÙA®OÕÔRG-´ÑqТs»åÂÐ#û=qð¢^&Ë©8xñ¯[¥ñþ%檌(15>¸Ä\µñš0“ÃB¯•#BË‘¡×Éúв!ôF9:ô¤z“zJN½YN =-'…Þ"'‡ž‘SBo•SCÏÊi¡·Éé¡çäÌÐÛå¬ÐórvèrNèÙz—œzQÎ ½[.,ñÚEñÞ²ø¹2ã½KÌ•ïSb®Âx¿0W)û‡^%„•ƒC¯–5¡Çä°ÐkåˆÐãrdèu²>ô„l½QŽ=)džÞ$Ç…ž’ͤÉÐJ–6rä)P$RïyRI4ü%¡1YKœ$i"Eš Yrä)P çGõz^_Ù;ôrÙ'ô ÙïÐÅ¿¶•Æû—˜«2> ÌEåàЫeMè19,ôZ9"ô¸¬#A’&R¤É%O‘òÃÂ5d51âÔ‘ IŠ4YòÃ9å‡{ž‡‡ç)û…^)«ˆ†ãj£–:4ÒD3-´ÑA÷/û%ìCÕĨ¥ŽFšh¡ŽÄ¢sºåÂÐ#GxoŽïìz¹ìsÄâ_ó ãýJÌUïæªä€Ð£rpèÕ²&ô˜z­ŒSG#Išh¦…VÚé¢ìÈp ¥šZâÔÑHÍ´ÒNב‹¿ç²£<ï£?Wn¼O˜«•TQMŒZêh¤‰ÚèçtËHƒkPA%UTSKM´Ðþ"Þ9'ô‚ì ½KÎ ½(ç5ôZì£ÛøÂs‘£½ßG÷xþŽ{÷+wÜ'ŒUÈJª¨&F-u4†5M2E3-dh¥ö°¦Cè ÇEÙMä˜p²œ ªˆRM-uaM£LÒD3iZh¥-¬i—³BÏËÙ¡wÈ9¡dç1‹ºŒÏ-1W4>¯Ç\·ã…=Æ"Çz ÏK–SAQª©¥.¬i”Išh&M ­´…5írVèy9;ô9'ô‚ì ½K馬Ñ=PAÕ‹ÖÔÊ8u4’¤‰fZšV95ô¬œz›œzNÎl\ükÖn|V‰¹¼ñÙa®CÎ ½ ;Cï’sC/Êy¡wËÈqžTRE5µÔÑD mÇ…kÈ]tå|*¨¢š:šhž§œzNÎ ½]æéÇÙE‘Èñö¥œJ¢ÄH"s|ØO¶“§@E"£K%1¤Â_ΑSBo•SCÏÊi¡·Éé%þ2ïœñ™%æÚÏ sy9;ô9'ô‚ì ½KÎ ½(»‰œàÞ© ’(1â$I“=!\CvP H7‘1Χ’(q’¤Çüã½fOë1ÖæxzËÉ<Š?ïy¢=‰#N‚rN\tn$éç7¹¨—ÉÞ¡—Ë>¡WÈ~ÉÅ¿Ž•Æû—˜«2> ÌEåàЫeMè19,ôZ9"ô¸z¬=!Bo”£K\;i|l‰¹&ããÂ\J6“&C–<(9Éó$vR¸ÙH’i²´‘#OÈÉÎ;9ëD‰'IŠ 9"ç›;?¼N²™4²ä)¹À~$È\°h}AvQ$r¡{¡’ Rd. ÷.ÛÉS H¤Ùzb$H5/þ½ÌŸRb®ÕøÔ0—•mäÈÓA"‘‹ÜQâ$/ZtNZ¶!K9ò(þ|ÞÅÎ#~ñ¢s’rlèMr\è)9!ôf91ô´Ì%O"‘KìM%Qâ$I“%Oñç5Í'Iš,yÊ/5N’4yÊ/3vY¸¶Ì%GÈå®yùâ_ÏR˜õ»²o8ï`™ø÷h°~§…óÆË ÿâÍÖ_Æõá¼[dk=¦:~ Œ=,§Óþ/^'oýëáœ9²‹Ãqïô¢\Y®ú:²?Ñp\-‡²G8ÞWÖ…^/dTzñ×>Íø¸0—’pY8¾^f˜ާÉÇøk‰½~y¼ØcþeÇo„±w䇡*¿ }¾\úRW,ÊeC®ò·²œ~ ¦&Œ”s ã¹ Œß(§ÐާÉǘqEûíqü²ã7zŒ½ãøSô_ñÊ^½V»rQï'×g veï0~ŒMiZÂxV>Ìcáø¯r³¯üÇkzèøÓ0ö•œú¹ÔUá5“+†¾ZÈ5B®²Ÿ\Ÿ-Ø•½Ãø1r4M¤i ãYù0…ã¿ÊY̾ªÇýö8þÐñ§=ƾr¼àç{œôãë:Þ0Œm!£ŽDo’㹘[¸+ŒÏíÌ Çò]>îqozÏw¼ Œ-uµ×îêE}E¹ZèkÉuCß0dUÈÍBn!£ŽDo’㹘[¸+ŒÏíÌ Çò]>¾ºÇýö8žïxA±¥®q¿¬{Í?ŽoéxH‹É]Ù—QœÆ/–i&3éa|¶|‹wÃñg²Hwk,{í¢\A®È*áxm¹›…ã!rvÿØ»ëø(®¶ã“l‡Ü’®ÁÝ%¸[((îÁÝ]´XhpÒ Å .E‚ wšâ¼¿9ç$yàié”ö…óùîuî{fggg5˃&h%ýäpLÆR¬™uû¨FëŠVŸ¥¾$½kä™?"ŸÊü5i;MÏcHÆ–Œ'éL&…; £´ô‘ß¡†c¼ô’˱JêÍäN˜m£Õg©/Eë]£~ÛéQû‰¨SHÏÌ„¼¨‚:Òï@ú` ¦cžô7[±Sê#d0ÎG»›ÑêÈÿîȲû’$ÃIëC¸ÏÐ=O² ŠJ]‘¬†z3¢n³y´:â_Ëhý®Ô½¤7˜™X#½ä>’ú y×£mç±Ô¿“/a5S×±ÈH&u:23ò¡*êJ¿#Ù ƒ0~3£n#õ¶h½ÝRï#à¸ÔÉ0Ü•úi÷#¯døÑxç¿üÑú…¨KDë•£®­W“º¾ô¾%[ȼ-ÙYæ=È!˜?üŒÝ8H8‹ã†€Ÿféëí•<@•ù)ò<®álgóü­—yYQÕQ_úÉ‚ñ“ô!wà0®ážôíçð¸! ²#ßݯJÖF}©[mÑUêä0ŒÃ ¬–þ~òWœÆU¼œõ&œµNLRzßÙd^,*ó’d™7 ¿—y²?Fc>öHÿ¶ä=ò7™?'­æ†\ùçéeÉ:ø½1“±;‚LjéÇ~¡" 7–"ÄOo'æ|žwp™¯kW2=²I],Žò¨…vÒJŽÆdÌÁºùQÑ‘hõ1êÓÑz¨¯FëÝ¢~ ½ßÉ—2·üdŽ?éy2Ò!* !Úc–à0!‘?Ï7}=oÉ&ä÷2oGvAŒÀ ,“e[È]ø7ð@úŽ Ø$CNX ûÕɺh†>"ýI?¬Àn–þ5òHý’´,ä³i¡®‘)ÙQNúß’-н0iaÔc¸$Z½œzô6A2?JËü &ó‡¤Ó"ÃȲH×Õ$k’õeþ-ÙÐc1G–­"7c.ã.ž!þbÞßPõÐ ó° Ûqñ—°|‰ÞN'²;zK=œ _©ç‘ €M8.ýÛäC<ƒÝR^«K£Ïhu>ê"Ò+EV@e©ë“ߢ¥Ô]É^„qX ý-ä.Äi<¾ã2ž+H†œ(°L÷«“uÑ }0Dú?’~XÝ8,ýkä“ù+ÒfÇgÕŸ»Ï‰e½o$Ó‘™eîIG=©[‘dÞ…ì‰òvƲÞdYw:éuRï“i³^V˜,Zh‡¡˜…C8»ˆ½…õ¶èõÛ‘]Ð]êÁäHL”z9K±G¤¼‹pXoe¶¾ûØä~n²€Ì‹‘¥d^ެ)óoɶ2ïA‘ùòG,Â6\•¾ã61Éø2OL¦D:äD)Ô–e-É®€iX‰½x Çí|×C>´Ü®×ŸFΆŸÔ+ÈŸñ‹Ô{ÉÃ8‰P<—~‚l i¥v¼ûØ4”~c²ù{ÖiC¿“,ëNö•ù`r¤ÌÇ“¾2ŸI.Äánâœwò} Ðó±g§¾ÞmÉ{äo2NZíây ¤Gþ]zYE²Á}¥ïKÎÄBlÅé_$ÃðÐÜ^Wîg ³¡ j ô»=ÑWê‘äxL•z>¹«°ÁÒ¿K>Æ 8ìæýr÷»k^é ‹½g2ô½dYu²®Ì½Éf2oMv”y7rÆa.VcNâìáoÔG?øíÑ×Û-¹<"ó`2Wñ–½†‘p¯^–ŽÌŒ|¨ŠºÒïHvà ̀Ÿô7’ÛpWqGú¶ûx¯D"dEž}º_™¬‰ºR7#[£³ÔýÈ!ƒiX)ý½äaœD(žï{÷qM°_§ ™\殤»Ì3ž2/NV’y=²¹Ì;‘}1ó$ý›’wÈG2J¾†Ã^pGÞzYy²š '&b1Îà&ž!éAÖ;¨×ïIöÇ`©Ç“¾˜%õb2ë°!ÒL>ƒõ!Þá~èÝǦ°ô‹‘eÞ³Žý견.é-ófdk™w$»É¼9?`Öc?Îá7$9Ìß°øC°è°¾ÞAÉ#d°ÌCÈ˸…ßáx„Ïï#zYf2'Š 6¼¥ß샘‹EÒßFîÆ1ÜÂ#éÇø•¿½‘¹QèWݯIÖ‡·Ô­ÉŽè!õr&a6ÖJÿ0yçpVGß}\“H?9éúžuÒÓÏ%ËŠ’uÐ[ê9’~ä"™¯ ÆfìCîFlûŸ]HŒlÇd›dEÔAéõ'‡b¤Ô¾äLÌ—:€ ÄfìÃeé?3ó8Ï{8#Óñwß§’Ò/CzE[§:µw´^kêAX ýý’‡Èã2?C^Ä üûßzYF2*£¦`,;I†â9óÝ Õƒõ²A䌑z9 ¤^M®Ç6ÄUé¿$-'y^!²ž|÷q(#ýòd•hëÔ¢n"½vdO™%'bqFú¯$­NqßOéy,2’#=ò£¢,kD¶Â@LÇ>œ‘eN§y¯D”††žÖËÉMØ*õò(ÎHFÞÆc³>ÃsíŒîg#=QåÑäÌ»IOé÷!½gôÇɲÈ2ŸK.ù2rµÌד[d¾‹Ü/ó_É“2?G†Êü†ämò¡ÌŸH>'­Îê¹½¤Wæ.dr¤GQ”•~c²9:a$&J1€M8Žé?&ŸÁ.„ï—pÑýÂdI”•ºYM¤nGvAo Çé¯#7#Gq3äÝÇÖúœN[2†Ìã‘ ež„L+óìd!™—#kÊü[²­Ì{Hö&Ê|¸ä(r‚̧HN'çÈÜŸ\…ÍÆeÜ…ÝyŽ €ƒÙïY%ýµ²l+y祾O†Ãúß)àzI÷ó“EQß¡ô“#á‹å”þ!ò8.â‰Ù»¬û‰É”p•: ™ Q¥ßì‹¡˜ˆÅÒßNîÁ‘Ëï¾o!Ò¿@^•ù-òw™[By †êy 2‘Ì edÞšìúîí¢?B–M$g!@êíä!œÁC¼‚Óî+ò£Za Va;Žâ¡¹ÎU–_ÕÛHÇh©§’³àUØ'ýËäuÜÇ 8‡é~&2ò‡½û>”–~9²ò{Ö©I¿¾,û–lñžõÚÒï,ËzýÞ³Þú£dÙrŠÌ$ýd¾ˆ\!óŸÉ2ßFî–ùAò4®âw8^ã»2£Zb Vâž^Ó×KqÝ0<eP­Ñ?`=ÎÁêïU(wCîŸdÒGæ½É2NŽ•ùdr:ü°ÛpL–]%à%âÜäïnäD)4Äü„½¸ƒx·ôõr“PÞh!ý~äLÀ"¬”þ^ò0ÎâžK?ÁmÞ‡‘…Pê¶î7$›¢=†aœô˰¿â´ô¿Ãr‡ã·;º_€,/4C[é!GaœÔ3ȹX$õÏäFìÀa\“þkÒö.ßGÙïê~9²2j£)zI9 s± »¤Ž Å-üŽ8÷t?™¹Q uïïü×Qú]ÈžïY§?ý¡²l49QæSÉù2 7É|y@æGÈã2?EÞ‡Ã}^è‚.˜Š=ˆû€ïܘƒëÈöP_¯;9ã1 ±§p #õ#½n^Éd1™—!½d^¬+so²Ú¡'Fc–, 7aÎà6^!îc¾Ç ":`2Ö!䱬߸{‰‘ QÑã±[qF8ÛD64Æøp½™­äœÂ}¼€ÃïÜOäE|þÀVÁ}s',"9#¥ö%gb¾Ôd 6c.Kÿ™™O¹M8#ÓSÝ/I–G54‚ôÇ’“1 ±Uú§ÈóÃC8=Ó}W2=²¡ j<{÷s¯ôÛ“]ß³N/údÙ0rŒÌ'‘Sd>ƒœ-s?r6b7Žá,ÏyÍ#'*<×ë6%Û˼9Læ“È%Økˆñ‚¿iPƒ° ^ò?Üz©¯—ó•NO² Ì‹“ee^‰¬!ózdc´DW Ã4Y¶„\‹8kxНyÏB´Æ8¬ÆÉ×úzÏI{ÃÊH€Œ(úèŒQ؈[HfeeT@/,ÁYݶ2Z£Fa Î"†ÅÊ(€ÖØŒ6,Ç-T°e=˜ÿbØY‰à†¨ŽÖ„ØçÈhÏ>a6â’9p»…؈[HæÈm ΢€Ëñõc°^ }ÛÉbZi6¦®³“yPDê dUÔE3ô‘þä øavKÿywðñbé¾™yPõ¥ß™ìƒŸ¤ÿ ¹ûq÷¤ýŸ}lÝw"ãÆ~÷:.ô“Ë2W2½Ì³9dîIæ—ya²ƒ]^ÞS‘Ð7¯l—Ü€ œÇ]s½|¼gçÓËÛ‘}eî+¹œÜœ/êíSŸ‰Ö»H}w£õŸQ[çç±ÌµïL®ÒÏBæBQ©Ë’•POê&ä÷è"uor ÆJíKÎÄB©È@l—zy!R_!o"\êW¤My¯!cË<>™XæÉIW™»“™Kê¢diT’ºÙßK݅쉢‡±Ô£õ¦RÏ´þ*ê Ø­€ú8ÎH?Œ|ˆWp)Èó¥áó=4ÇP!î…©†ÒEôöüÉUØŒ`Ü…]Q¶æðE8ìŠq}”ÆP"̬‹s»°+!Ÿ1d'ô…/fa9! ¯¥¤^·Ù > _ø#ç÷RQG-êzÑz©¿G;é÷$b:öá(Îà2”–Çì„‘Ø€3x§2|þ”Ñë´";a$6`;öá&’–Õë”'› 'c.ã2”“Û"Ëü;²•ÌÛ‘]dÞì+óäpŒ—z&9‹¥$7a§ÔGÈ`œ—ú&ëòì'Ê£'ã òWàØàêUd/z¨‡é¦J,C½Ê,«Âu0½*óêzûÓkð8aöá2Ôd}ŒÄM”¯ÅíÁ©6ëà&œêÐ7Õeœê± #ëÓkÀ¼¡So>ïÑ=±gàÔ˜ýÄtŠåX>šz õXj,‡ñÔÉIäQ£å¾Ü?ߨ½uÔ[­”ú .Fëߦ~ŒgÒ·›Âó )á‰ÒðA_ÌB M‘Ï+Òi*ÇYPíà_,GÐTùˆ´žÆñƒ;JÃÁƒÝtzhø#v3Øø"µfÊ{ ¹‡»Y¾ðGìfq?à‰æðEÂQk6÷.sä{9ÙSæ}É‘2÷%ýˆí8„»°›Ë¶á‰Jh_!îó¢}P׋ÖkLý=ÚI¿g¤å#ÍG2÷Åúü}!#“wñXjã%ÿÃ饮]È”ðDsøÀÁfï•|?!g!a‡Ëk¾ß ðµlǰ6² 4|0þ†•µá‰æðE8\¬éÁþ°³X«í4'Û ‹ÔýÉ¡)µ/9s¤^J®Â©ƒÈ£8p¼Blk#)ÜQàƒ±Øl£¯w—´³µ6R¢úb9Σ°µÑ³p¯ÐÈžë"¥ëâ< ;²^¡‘Ë‘2Ëq…c² ›cÑ‹M‡›ãRÇ£ŽÏ<=v¦‡Í(œD_æ‰XŽÍ‰©“P'¥ÆædHN’Leå¹P8®‹‘åPYêú¤7š¥‰º~GênÒëCÁ(LÁ éï&ã.á©ôã¹Z)àb¨Š¸„°r³6Ò ZböÂãkcÄ7z7Èß`•ÖÚH‚|h‰½8§ˆçÎuÐӰ׬ÓYu±>ÞN’ôÖFZdG9ÔÅÜÀ8zpCGÌůȞÁÚ˜AoãùŽÙoCGüŠK°ÊÄ>";:b.~5ëÌÖÆ·Ø–Yo'Mö%‹ž{¹e^Œô’y]²%z`&`%öâžÂ#+÷#kÔÇk„Ô£Éɘ.µ?¹Ro’¾c½fôšS# ó–d+²¾½€¶ÖÆ&ìÁEÄmgmÅíÙg¤îÀ2Ìéȼ3ËÑsL]X¯+5Rû°æt£îN݃yO²7ÙGß^ê~|Þ!/ª ?·?ûŠ#?€eé b>˜å8‚¸C0”õpㇱÞpz#¨1~$óÑärœ¾½ñãù ÆBlÅ}¤žÀíâ"ŠNd½I,CÿÉÌ}YŽ¢èošÂz(:•eÓXý§SÏ žÉüGr69'êkǘ§k iXR'!Ó Ý¼¨ëç¤Î'½"dx¡.:J9Sà‡Ò?F^À-Xü¬(?,Á„â92η6êcn¡ÂOzKȵسxŽŒþ¬‡؈c¸…Œ ØFá’-´6z-ÔÛ9K^Ã#ÄXĺ¨Ø[°,æ:¨QØhÖKØ,Y¢·c)ß!à†¨€^8‹PónËs•,†r¨‰¶ÒBŽÂ$ÌÆZé&Ïâ^#Îö•Q-°[p÷ê.ËÑ+pqîqì0¯á}Ÿë Õƒ¨¯‰~R$Gb¼Ô3É9ð¶þ*êuÒÛLáNá¾ôòÝ.pEþ‡º_¬%ózds™w"b"fa1±—ñ ññ·5Š£:aŽÂú±ÞN²0Ê£ zb"¶ã!\ãvpÅù>šüζ° 9žPc"¢ÚSúˆÿŒÛÁÄçô^èÛŠÿ’Ïed@qÔC'ÌÃQX¿b[Ø××Ü.Š£&"¾•Å(ŽN8ŠÖôñ«,ômèÙZÔm=$ì,†+ò£b:öá2Ø[Œ‘¸‰òc1Z9ÒÃ>891ÇM”Ár´ŠÉõbÑ‹¥ogql‹ˆí8ƒËx§8¬‡âè„y8 븣 ¶Ã5žÞÆ@r,¦c¶ã2¬ã[Œ¤È&˜‡£°N@‰xˆjÎz;«ÈÍØ‡Ë¸‰gˆŸm ¼Ò±b¥×·q<«x G‹‘™Q Ñcð â^šëd`y9Þä4ü„_°'p¶¹¯È /ôÁüˆ_pÇ\žIoÇ‹¬ŽÚR7%[¢£Ô}ÈA%õòGÌ•z¹»pWñ¬2sŸ‘¥Ð]ñSf}½äY„âì³è~*2-2#ªJ¿%ÙÝ03¤¿š\m8ˆ«ÒI:fåØ"3 ¡!ú`~À Üm6޼ÐËp±²s=´ÅAdÎÁqÄxåŒúÚY&u¹›¥ÞGÂñhë_¤“Þmò1žÁ.—ÅH™K÷=ÉÂ(‰*ø>WÔmô§*½ÑädL‡?6K?˜<+¸‡ÜQ·‘šÚ]z™È\ÈÒh$}²/c<J+y§pž#5ª ?7Åè€#È–—õ`äc=Eà¢Yç·s`°±© ² s Ñ+L]„sŠê}h\Ìb´AwŒÇBlÅ}¤.ξ qK°8‚ñ%¹>¶â"R—b=ôÇE-Íre¸MlEÿ²ôËÑ+Oþ¨+ʱô²1‘ÙP1[qU*±ˆ[™ý@¶*\Ñ[q©«Rã"ŠVc?`Tg=¤®AsjR×¢®M][ïÜ:c)Öá®Ã¨Ëí 1Æã>ªÔc?·>ëá"Œl 1[ͺ!û‹(ÚˆÛ„áÍ2ôoLï[ê&ÔèßTïCÑï,FEÔAtÇpÌÁVœ‚C3‹‘ßc*ž Nsö»¹ÞFâãdCYÔAwLEöà ò~Ï60O¾%·…ë-õvʶ²5ÐÝÑã±{pq[s?Ðs`´a}lm£·‘º­ÅÈ„¼¨‚Æè9X‡#0Ú± tÀíÙwŒÇýöQ_kU:èº:YßJÝ–ìˆn¢®?ˆz„ôÆ‘Sð#a›ôO“—p ££î»‘QÑ ƒà‡c°t’÷{²5a56bB‘ 3×ï¬×ó#7â,],F2äDSLÂ<‚[W¶?ìÀYÿë~n²J 2ZH¿9c0 +¥¿—<Œ“Åsé'b1R!#J ::cfc nÁ2”Ç9Ñ“°à6ŒëaBQb8Ç–¬;Bî?ygñn#¹V#Á(n9G³ «Ç0ÇrtÆjÓxÖ›@œY«'QO¦þ¹/9•œFÎ g’³0óõ>ä\`1Š šbvÀm!ûŽPø-bÙbzK˜/e9Bá¶ ËY¡ð[ÁzôVRÃoó5äÏäZr¹ÜˆÍØ&¯Ïc6â,»Ø?LÂ#Tâ~îf&ía¾å¨ŽI¦ý¬‡êXvõ0éõaê#Ì%‘ÇÉ`ò$y!¸ ùesdD t†,¡Ü'ìÀ +,»J/Œù5–c,×qƒõ°ƒn²Þ-z·©1èó{ä}ò!ùˆü ÇS¼Ðû0è5ß ±ûŠçH`Ø%Ð~8‹•‘M1 ;àfmcTÇ ¬F(JX¸,6¬‹p³e„¢„Ëa±g9vÀÍeðs¤çDƒ~1©cQǦ†_ê¸Ôñ¨áŸ:µ35üR»P'¢†_bê$Ì“’ÉÉd*25éJº‘iIw2=éAf$3‘Ym n9¨jfNMs‘hšžÈƒ¼È‡ü(Àõ ²ü Q¦.B ¿¢ÔŨ‹SïuIêRÔhZ†,K–'+^d%² Y•¬NÖ k‘µÉºd=²ÙÞÌ¿%›ß‘ÍÈä÷d+²5Ù–lGv ;’É.¤ÙìAö${“}È~ˆ!ŽQ‹ ˜Œ)˜Ž1Ç&ÊçsS?]7'Û¡‹ÔýÉÁéu}_ê™Ò›G.F6á¸ôo“ñ vómŒ”óuß“l_„Ãý'£†".þ6†‚á¹€õŽZ YŸE$Âᾘ>†"apYbc”†ÂQk)Ëಌ‚Ṝí"µV°.,G0|—ÍÌ Ï-¬‹pÔÚÊr¸lc9‚á¹å‡Ïê̸‹:ˆz7õn}_÷ðøaë] âŒÔaäm<–ÚØË¾Ãi¯®]HWdAiTB#´‚|±A8Øûôõ “%QuÐAúÃɱðÅ%mgØñàì(†ºè ؆H3“}ÂJÄûÑÖèø£ÞÆ¯ä9Ü€Õ,–!;ª¢%`% ÍlúX‰K(6‡çȽ«¹<çÙ‘åð-`öâ)<æ±X$~쫟Cò*Àq>ËuÑ#°Oáñ}¬Ç ”óç9㯷㸀}E>´Ä4ì…ÇB¶(·ˆõÑr1Ëౄe¸EKé/£·œ‹VPP¯¤Æ¢UÔ«©×0ÿ™\K®#7É_ÈÍØÆúðØÎ;Hxì$M»„ÝØƒ½ØÇ¶÷³Î®‹E™&GÉcä 2˜ö¢\Bå\H”K„ÄH‚¤H†äHÁ¶S²F¤¢NÍ< éF~Cº“éH2™‰ÌLf%³‘9ÈœÈÍ<ò£Š¢J£œ]”÷Ðru]‘¬zR7'[¡CŨë÷¦(½áäxøb6Hÿ(yq6^ºŸœ¬ˆÞAÌJvFA´ÁL¼@ƒÊvÆ&$¯ÂzAÁª,Gƒj$BР:ë!y j̬©o£A-¶‡Þ˜‰xLµ¹6!y–#ë²^ A=–Õ§‡ÞØ„ä XŽ ™7Ò·B^ÇcÄô¶3œñ ¢º`>ŽÃ¦±‘ “ñ5¾ÕÛXCnÅ\Ác87a]TÄw˜Œã°iJ“±ß|gg þNoç y/àÜŒ}D&”Äwè¥AÌæì#fâ´ÐÛØDîÁqÜÆ $ÿžuQm0!ˆÙ’>fâ2µ²3F·ÒÛ¹M&oÍþ£7BP° ëâ6µey;–!ÛÓǦô:Rw¢Æ¦ÎÔ]¨»Rc“u7æÝÉžd/²Ù—ìOÀ`æCHôŠaN=‚EŽ&Ç’ãÈ äDLÆLÇQŸç/æèú5i?׎Ï]'!SÀmnÔõ³Rç–^²Ê¡&ÚJ9“0k£mã0õ é%Cq¿™·?O÷Ó’™‘EP{^Ôm´§î*½^ä ŒÀX&ý]äAÃü.ý8~vF2¤CTF?\À5¼FªùvF´ÀìFºŸìŒa?ém\#á5ù³.Z`7NâwÄYÀuÐS°Û¬r_°v¡ÞN¢EcdEÔÆ0\Ã=Ø/æ:(‚ö˜ÃȺÄηDoãùöKÙoA{ƼF¢e\í1‡Íz¹á-ËõvR­°32"*£=fã5¼ØöJ®ƒÊh~Ø‚{HµŠ>úáЬæºx ï5¬‡T?³EécËZêuÔë©×ë}زÁÎØ“¸‡8YŽÙx-›Øw܃ý/lÞ‡-¸gö6³]\@‘-\¯á½•ujË0{;½Ô;©1{—Þï ;£5ºaVàŠìfxïáØ`` ^#ë^–a¶ Õ>öPd?×Åkx`9ú¤ˆ¶¦>Bý«¼ÉGyÜ•ÑPä×Aœã,Cxc6ãµÙ?A[*˜ë⊜d=¼†÷)–¦Ùg¨ÏR‡P‡è}˜}ÎÎð;§ç È%2_AnÄnÃüŽ8çy®¢jŸ×ë¶'ûaf`¶à$îÁþ×A´ÇlÆkd½È>a¶àR]âX . Èe®ƒ×ðe=¤º¢o»9³±kq×ð‰®ò\Geôà \@œ0¶‹ö˜Ãx¬×¸ ŒÃ=T¾Îuçëâ0²ÞŒú>5Nê‰ätÌ‘z)€Àhëo§Þ#½Cd0BpÝìÝÒýÄdj¸#ÊK¿ Ù\æ­H™$'b–c‚pátÛÎpE~TC+ Ä*\Fü;z;ÅÉzè„yØ€£°¾Ë~  ¶Ãõ×ÇeÌ»O—ÿQqÙœ?d9¬±¬ÓÃ`døGÆ?=2ý#óŽ,qdý›G¶Ï4²æ‘ã3œŸyäúÄ#÷gžŸxäùÄ#ï'ù>ñÈÿ‰GÏ4 ~¢Qè#ŸhùÌ£ègÅ>ó(þ™F‰¿y”ü›F©¿y”þL£Ìß<Ê~!£Ü4Êa£ÂŽŠbx}à¨ô'FåUþä¨ú£ÚêŸxÔøÄ£æ'µ>Á¨ý™FO2ê~¦QïŒúŸl4ø(£ág>Áðþd£ñGßþ£ÉgM?ÓøîŒfŸh4ÿ£ÅGßÄÑòVq´þG›O:Ú~’Ñîí?Óèð‰GÇO0:}ÄÑù3.ŸhtýÃçŒnóèþÉG¿iôüd£×¿lôþ—>ÿ²Ñ÷_2úýCFÿ/| ø—ÿ˜1è_2ÿKÇÉú/þð1ü2FüKÆÈÜõu¨1úëøƒ1æÿáûãþpŒÿÃ1áÇÄwŽIeLþ ñÃ'¾yLùDcêGÓ>јþ‘ÇŒ¿6}±ã—ÐØüÅ-_Ç8¶~ulû:þö±ýëø‚ÇŽ:vþ#Æ®<‚>`ìþ(cÏ?bìýÇŒ}_Ç'ûÿÅãÀ¿rü,ãÐß8ÿkÇ‘íøõëø¬ãè×Á8öÿlÿlj¿qÿ«ÆÉí8õu|Áãôÿ£qæ‹gÿŒO6Î}ÿÆù¯ã ¾Žà¸øu|QÆ¥¯ãëø:þõãò×ñu|j„~_Ç?r\ù:¾˜qõëø:þA#ìëñŸgÃýïgĵ°<âÌ·‘Ïhûö\¸Vo΀«·¨g¶êzú¬¸º²’™y6\+Ã<ç­)òmuϼÔ[2ÏfkæÛ³áZÉu̾ƒZæ è5í嚎‘.Ô}°#ÍsÆ:½É÷öíz1ä\¸ÖÜ ;Ò<‡lŒ7é Ž\äˈ%vªŠÉ¥-KœèÅRgÇ5Ï'kvcªãý2by,µ¿ö°VGмŒ8­­ªôeäóàêsášûikõX«#ùÑ8®½lÓÜ?Ç7×·•uã¨u£_ê¥qåQ7Ïk!^¤3ÝþÑÙ`ã±_æõÍóÛF0/-êYqÎY[UE\šÏ™øoκlQ÷Í¢zú¬·úy©Ÿq6r‘ÎÊlõ—o—8Ëó3×0·gûæyj«ÖuVë9¿y'”×@\µ×úþê=vQ}µ× Õ>™—g£u‘×LÄú #1/­d¹~Ö»¼Y?¢›Hfqål¿¶²'ÿí2â˜'–ëêó '`¦ïϿԷ›D½rìHó²ITjÉÔÙk#Ίjžƒ4‚yq&Ϥê•cOšç~5¯‘B1{gIüL=óíIóܲÉTšÌG?â,©‘Lrµæ{†ùŒHn¤æyiS°=³kž»Ôä î‘¾L¡^)öêÕbVi³vTˆ÷”²?)Õ9cSªW¥~WsT3û7ïhŽj–Jî¯ÚJ*¶iÒ÷ÐæÍ{—½ºó}+µlß^¶fQ=WuF[ó9¤·êøæVÒDÙïˆK{õ,u|óÞçÈþs»yíé}Ö—çQu£oÿ$êè%§N«[C[¹´¨µôe&9ê7lÓ|ïMªîi y_Ö÷ÍF-µy³NZuy<]Õ£«?2ªígTÛO«¶ŸV^cîêÝÓ|î¥TÏwE“{ã —vtÌcš™ØS:u={u®dóÙ–ŽÇÞñØG¤yLéÕ£gÇÚ®ê^ØÉó$£ºÕ²ôêV<Ô£g.õP×1Ÿ©ÕsÇ^¶ì%õeµ?oŽ©»z>¦Siž‹×J-xígd}GuËǫ̀nËQ¯È~¤#®gf&¹¥$Üóõæ ŽŽ£::‘ç¶ê1Ô—ÕþéËÌrKɸWæ¹ £ß[yl"¡,êöÕëÍ|8¨ã䨎SÄQ¶U¿¾t”^V9Ï|\9gvV#§‘]d9Õù]sª*«Ì²ËóŒ~g¼+&U1©J¼YúvýlqÙäs3®œ :.só3)6ûø¾yB5ÿï—ÑÏ—]¾KÄ•óvg7r9 OÅœgWgHÍ¡j³ŠËúæíÅàö̳ Fœ]Ïœ'ä›í;.]"]æxs¿R«WØûîKŽ€yØlÌÌŒzOâ¨mG¿t‰t™S}ŸqbkæùÎÍO'õú‰ÅãžÓÈgPç~-ÀÌ|´<É<\æä2Ϲ˜êµ`^šç›ÔçœÔ3wµtj;Ôú2—|ˉ§Þ9ÒæžÆW÷ÅU­R]FîÛ¾ùæK}ƒ1/Õ}™‘ž£\æ¦c>Rñxͤä~ÄSC|õ8ä6 ùÕQÊÏ,7KÍ}L­nÏYu}™^õ=T?–ú>§/ãDºô”ïZñx>¤`É"í»'[Ï«n'/3Ï(÷%­ÚK}é¬}qÍ™™yÔwÍØ\+µœ]ÞܧjûúRwòp_̳‹ægffÄ7ÞoÔÑþÏˈoÆyå{f|öÜü„J¦¾K¦T—‘çñÕ¾'}¥ÞÓcÉ·4kùžù[m>Žt,µÝߤԅÕ9ZMæ<µÚjrõÍ:©º©Ô¥‡ê§W}9ߨ£¤/ä¸äs\\å,ôæQH£¶‘F¶gvâ«Ç=zÜ#ŽIlõÈýçeFõ¨ëËêõƒë'Q[O¢ö(¹Ú»ÈóAóxçef¦›:*úÒ]­—N­yžA=Òú² º±ÔqJñNéD>æúQpU—qÔßú2â¸;ʱr”ãSHþ.H ÞõÍ[m÷íeŠH—ºãøf[QÓü{¡°ü”@}n›Ÿ©1ÔñŽ­Žtlõ<Ô—1Ôó3¶|?Ò_lõÁ¼Œø{ÊQþ¾*"E9³Üü.S=‡ òš)¬ÞuÜÕ³5½<öÖòij¾ö"¢ZËßjEÔö‹ªÛ(ªnÇìdRÛÈ¢¶QT=ÖúöÌÏêÜ)óœÐžêù™Ž¹®‡Z7â5‘÷ÆYn_ß¶ê›K²¨ëfV×-&&TߤÝù”Ë£ÞAspŸôç]quvÞâÌÌŒÉgXÌw\:©-Åâ/–\êŽyÞPóÌ”e™™YœžùºKÈë2=#»¼Ãeã¾™·›P½œÕë &ŸcqÞq餶‹O§Xr©;‰Ô+"±º,¡Þõý2ÿ.È®>c*ªÏ˜šêÛ¹¹ÿöˆ¥Ž},yo5\…7ójêýµ²|ûÕÊoææ9pcËe-µM¯HÛôвM¯7ó:jôeÄ6«¼Ù¦¾nEõY[½»Vf¹ƒ:Bæ{C-õÞPS½7ÔPÇ·†ìC #â×Ý:\3âÛAôŽ9«&—Õäý¤Žz·­Bíøf/*Êk.êEüB[͈úëmµ7÷äíe]þ¬ ¿ZÉYkëR›¿¾ÆUKãщ/—ºqVPý fBf‰ÞqY×h¨8«ßwÍk›·c£n'®ªâɯOVj‰þÜ´R¿ŽV–ß'mÔk0âÓÅŠ­4RœÕo¹õÙBEæzßõ9lëSÇgY<µ4>r©;ÿï /#~KŽ\™—æúå7O+õûhEµUyr–omúÕgé2òoÎ ¹Ÿ^oŽ­>kmÃ7Ƕ¡:¶Ô±m¤Ž­Ù‰8j"9¶M8ÿyYßðVªßÞÍk{E9¶^‘Ž­W¤ckþê\E~7¶QïZom£±’Pý®îÍ*½9¶ú¶ÞoŽ­·:¶Õ±m¬Ž­÷Ÿ>¶æú•¢ÛJ‘Žm¥?yl¿UÏ#âxóy鬞e ÕqtVGÅ|þéçK|µ„²MÔ³7Q¤ý{ß³v‘ËÄò¨4QGñím›Ï+gõœI¨Žƒ³ºæã£g»¢_šÿ÷XU}†™{禾ÑF¼¢«ªW´|OŽúîSMÞlÔ÷˜·¯fó ¸¦oÔ÷sOÒªmF<««Êÿ0ém¾}VG|{ÖÛ{û¬6ÿ'¹ªú<ìÌ>UUŸvꨛgÛmÏ^ÅS¯ÀÎêU×U½ßÎ#ÎCšA}›qÿ?ê¾:N«âûÿÎÌûìÂÂÒa€ Ò(ˆ()¶¬€Òa' Ò‚A"Ë‚±¤JH‰ &`‹ˆØÝÝ]ß3ïsæ>÷Ùeåóý|ÿùýöýÚ{ï3yfæÌ™<3”ç®æC-Lû;pB›xÑÉñ8n›xG¥å!…®€ä)”þv­zž´yÒ’ðÛ­#÷DFŽúp] õD˜)É‹ÌþW(f^ËKôü¸µ@ëä覿7µ¨L 7M§Ë¶ÉBÛ:mùH´ëéo—gŽŽš # «‚®\ÆÂc„êëS7yÝ$àUYGÑxЧøs¸«Š¸ª >®NJ~ûû…Eü*ææ¤*­yž´çþíêVCðËÇQ£!Ç@>º’Ž¢'ûžK–ääx„ã¥GÉ6¾–çI=wõ­âMË™žÒÿ0Òë÷U²¥.¤û)™&y‰çÄà(áð\¦>×p’î.Unmq"îÓœtZÐen{œDn›“ë£à³9ÙGÏk‚6A3²;Zžl¶ì’>8si³å6*þÕ‘¾»S,³ƒßÅMø{b0%¸2˜´§JãË™ø_Í(=0†séA-ÆT§Ý:數óÊ  ÖŸ&ãNÈÉä¶¥§|¶ ûÖÁ±dÞ’R1ëiîÉ&lË.‡Òøî4yV“Õ:^¿›ÓnÇ6’~gîd?Fš§ÍgPÏ¡’¬ºÜìM©ç]D®|Î!~«Uß¾Xaì´B­jN¥6š(=LV‡“}öñðª ó‰cŽ$?9ØuÂ6Ü'ïA”ðs,•Kc⾨>ñZáx²ÉtaÜw.ÉfR0rmzÐò¹,¾œ‰ÿÕ”ÒÓ%Q> æ4@zŽFzÚ¢–K5i ùñ«¹#È>éÉ.’žËÉO.Ò“HO7ÊW~N g#yò ©+ƒ\©qéô”d3Æþ®\zK¹¸8g»z“ƒu˜~”§®\B½iCé8µÄqoÔ^Ùq%Ys+~åÎ…Q3/fõϤ¼ÏÁ¼>ñzÝ™TOÊ|]q“«‚ëˆ3gP 8žxÆ}9ÿ«5êCYäw?Ê« {]}hIeq¸ßquoÔŠZBg¬|¦WÒ\õ…Î ˜Ûàg#Yà5´3e¦:½ª–4þî'üÍ«rNN¸\) .ü© þ Î.?ü}ø›WàF‘Yv0ç¹6„WåF“»rw˜Ø¸6d<8›Ÿƒ¿/óÊÜX2ËAëÃ>²Ðua#w9h}ØÆÉßk‚™$fG»u1÷åLü¯–Ƚt~;ùS ü}98{¸ü|ð÷ào^i½‚Ìr±C*;¦š×ýÆ»\ìkHÛäÉúÄi²BáWYªTÁ¬rz^8¸Ÿp0¯)N!Þì%óášx|õ¯äwœ1÷UN¥rq<1w(N'NmÉ?’ÿ:Hþ™üÓ ù§Aòτ俼ï\ާòsfùùÙ1˜CåÐ9¸Ê!ù]Ü„¿GQXÕ)—šQõ§ÊËs*™ôBM,ƒt §‚“ø®&NÁý S¨<\œ†Û+§Qš›CâO…ÄŸ‰? :$þtHüYø3P7œË±T'TìA¼0Œè©&O–êãé×Y”®<ŒÛŠKý’í‡í‡Sîw¢žâ`ªµ•(]îér³O,)]ù\Éß¼’–ŽƒÀUÁU^R,QR*&)]§Ë³ªìaÙ>LsÑCÍ."õ÷g3š(8ŒhjJ4õ'ÊÊËÓåfŸ¸såsžô•R­Ö Ôö¨í¾Xb 6¨X Æ÷Ρòqç¹Ù±lweƒ¼Ï*"õ÷g3œhvåÒåÒå➎³{ÅuåéEü^¢öŠ%jÔ–ü}•%¯„DÍ“õÕÓEš²Œ? -V®ì(j2šèpùÝšòrÉžŠòtÛ+n™Q^‰ïêƒ[‡îƒºàV¢{¡ÔúÒ-SM¡/Ý2] Þ¿ ¼?\Ïϲ2ãÝUÖ‹ô~LF‚¿/gÀÓÉ —+¥ã|¼’¿$[H~ÇÓç‚×ϯ{É!ùq’?»˜ä¿ˆlœäOKÊñDMž<Š´ôRÿRúÅ3E¥þedÃ3^ê"züiIÔ$óÛÉ æoŸßçBâ׃Äo‰ïxúBðúEàu/ñÏ%_Nâ§Û)/ñÏ#'ñÓ6nü,*\¬„óWZêŸ.«ìY ©?|98xxwž×£wÑUÊg(åÍÅ” ÑúuDo½ú7¶N¨Á]Ðmöº=x¬3¤¢ëy»G2ᾞk Û“«ÒèÙç`¥izþÝcžÈåÁ Ô¯?iÉ”lSrhî÷X¸—ñíFU'BtÅHªQÉ;ý­®¾Ë‡KÈWCr™ET¸^~{ôŸÚƒW»@"wB¶ÚùÑʹQˆëuuÀž×ßuý‚öØ •¹*#+Ó¾¤üÊ«–õU ºYë³Ð{êŠq)Ïn5ÂÌ`5¤¢*ƪ¹1Òú™«¶~åVc$}êðXä_ã8—Ky2_–Ì¡9à´n’CȲKÉo#r•-’s8IÅh ¤et%‘ÑȦb†ŒfyÏíV’C她•é\¬¯Å~+»}ܺ5ït‡56ÈþWó’Âq9êR”Ï–lzêY7Ù!áÒ|ÅÒ² ²´¯ýÉ®|FûZIÚ×dS1£}å¶šÛ¸!A;²ŒÝ€™{ü>€ì¹"=ç¢3þ÷Üø? %fü¼_þ^[¾ÿ–M”ØÎ“wòn\•ð©‚||ñ“ßî>Q0WÞü?ñ3åþ›w’Í—ÍO<Ù¶€žùpUÓüØOø)Hü/ _®•v7Øò¬†»{vn‘gúߊëô*y‡ÞÂø½0v· á®Øû8‹~yûðn¢Üsow3,»swºÎËxÞLnü¿×épo‘po’p9¼›åíB°q óäû&”`:Œ[‹} !ûU¸i×J LSúÉó¿'îMî-î<‰m^šcH§sžØû8‹~¡×‡WH|Áæ…bžŸðSXì»o÷µˆJ$ ï%ë3, “Yò™üÏ×<éžKЈÄ,%á-ŽßKÅ‹anü=Wì³ÄU:¼¥ÞâŒðØo²6/Mü«Ø.%ô¤ÄýÒbþ8,6Mú[šáoå ká-:òô.Kл\Ü/çKHË埈ËK‡Û¨–ç Æ.xÞÔÝ1Ë3·Ó7¹Rá^Ò%¨{¾E››ÍN8W !SÂÖïæžÀmAzoöíÒŸH'Ý”’wY¡® Ñ—#a•&Js¤å¸ìsAýÒ€g_ÙÍ¡!ùdÙál9lš‹4$õüretîe;‡åSXF¨-+1;Êü>–²DE®´uwå )G8_ݳœÞôÎáòt<^R¾Þ†ò™Þ/ž¯w$òuE"_W$òõÉ×;ŠäëÂD¾.Šóu…¤n!åT2_9×H«a¥ íóQœ› ‹äæŠ"¹¹0‘›KâÜ\I­Š£·ø›s³™qJ $%…‰”,‹S©_™È¡U‰Z•È¡•ò\Û­Œ¿ à®jçFñYVl\ìiº—Çtï? ÉW~œ6a¶šòÆõWV뱚¶&se¿ýîÕk­‡íj¬±í$Áýn;î%̃YÒÔÉæ;±„M×™{so‚{kàÛû¹~ÖÀ›®¥·‹o…ä¨]ÇbÄv^Lí:¡öNØ®µÞ÷×—[+t°÷½!úPÖJ(kàfBaÛõÈ¥tj®˜ÍéŸ ú׃~6Ý@ïï к̼åvnüïdíìÉŠ]FÐnäwñ®÷¬&S§én£uzÌþ½‘¾6Èsôx¢øíÌV£FlÀ﹉¹ö.Ù¥¾cµÌߥð« ù,î[žo) e#™»^¶»ï7Dló‘R´rlüížé½^LKƒµrýáýiŸ)„õl#vôÏGO¿,…Á:ÊÝDÓB’ ^ƒWá–Yw‡fe˜UÂúÞ}d¶@žNB{}]îÑùž¶‚ýjé-V[^Qu½î»E÷7ýÍûçîCÉïrb_BsïòÏÊÜÕ‚øûâÓ›©'”ÖDN>oEÏÈ?Óý­{ÈÇÒ#«$½¨p¿~ù»<ùp1T$_î]þØOÄÎß÷¿;ijnNôÒ’&7'z©÷’5Ò#¬$q¥&NyòÁÔ¬jnMPsKü½‰j¡£&]²îžVwko²d7#7øé¨ò%{c‘’ÝD!­*+ •é’Ýœ(Ù͉’½'Q²÷HÉn’’]+%{k¢do‰¿7“Ôp©NSïîÈu·ü&©ß„Üãç­‰©ŸW„úÍÒ:)ñÊ’¶4õ›ÔoJPo‚ú{…úÍBý:¡þæõ7Åß÷Q-sµ*Í 㟤‰ïïXøZÎÔ×­¢œ §¼Ô–Šä‹9aa‚Äß÷S-ZL½¯Í¬pǬ»gõ˜ÕÁî¯-dºˆL öÜõqX+÷pôx&„óÒ¹Z-ýûÃEêò®·ÿè~„Øß@#–wà=ˆ8ø{ ¾«‹ÛÃ(4÷>áqX‡€Zþ~€ì—M^Oº¤V×ѽZzøGÕÜ5Š[áFÒ,´Õ&s÷®?ì¾ââïÉõbúíuµKŸl¡_ë%î:b|þFr¼’±$yR‹|ºwMrUGüŠ8y¿Á„¼(AÃþÇ^lò Ù­—ÒÙ%‹2(Y"”lÉ äP¤‚c¯‰˜9Œ‡¨ÍXD|UºàY0ÙŠÿú0ãçö`¹û÷§û_ NßßWcìgz¡‰ï­X(ɼº˜D!¸·£ÙAôÖ“½[É~ ý®ú³ÑV.@‹kñ½mkú¹ÞKKüâ=&°W*;ÞsÂ!¦$ÌC„šd^º~K‚²®6¹l ”m£ õœ³ÛSÛ3rÖçöù½!6_@)Þ þ=eœ[Û¹µ=‘‹ÅÍ«‹Y ¢Åç˜ãIŸ“>w·“ýRI•±w2ÿø;[é¹ÔÕu¼§ª¤Ü[˜‘{LYm2õ9U‹âö9èsõaêeÝAc/¯/¨©÷p?¥æ!èÄèF¸Ÿõ±àQh –‚FYi2yw\&Í#³‡Èô¢<ùíÊÃkn€~`]¬€”ž/ÉÎ…p7F†÷cܽ ½Émäz\•ÂÜÅÂXonÖàcm27·þ0(ìïG°ÞÌ»~Íüý(¾“n’~“n’~ûãˆ.÷nATv-íD·ÿ>šRÑYænÛPZ:‹†ns¤…ÓÑœÒê¿¡ðVШÓkUºRy€rj+´ r)ÊЩ¼›|¬¦6m#zÄ Ñ–»<äêgsú¡ÜO_/½W×ãuet7F¹`æ`;\l§ø¹DM®æz]ŹAZ[‘5ݸ´Ö«Èß M•¡Ãcd}±¨¦¸teà™ä}kòéÞÇ5]Ö´?†èóßM)ì.’Ÿ-‰æ.¢ Þ43½-(MþûQŠe•‡×öÕ÷[¡Mâ ˆ~ßFÜ´âY .ô|œƒ2ÛqáVä‘Ëeïjnw‘ËûŸ[àc;F Û…ÃyíÏå§×åMÏ…ð¸„5†KÖ4fJëA;9Gê<Û9ùÇšÆ%ûæ6€Vsn†o'‘š ŸO4»w[J­_ëhMñvÖc(…dÕáxÊÍ¢a݆¨k/ilEyÕ^´é£ðî ˜“e°…hy(£ ’9¼ÿ2pò™nÈX3)ÙÔÍH•Ï6”ζŒÒYü(NÃ[:œö’K籌ÒiMqùiKiõ%•Y:[âÒi.äiC”ú’zœúçùè·=Aµ3ýv…cwv…`'4uøíÍ+;°ã›Ÿ»°Å=9 ?ÝݳùßåÊæ~Ÿ«Ûñ8öƺùÉ&¼¾Ä§S• ø¤.G¡»MÖݹ›Öå`ÇúIÿ;÷Žj¦S_AF NÂæÃ>_ÂLšî¢gUìpæ¼Jç–£<aðúTòŒ°ü€W üÓåR~ÂWyéoW{¿¦ùÛ›ú¯'©*ÀÌ § :æzž¦ª­”Îøv§Þ<‰S­‚ç‚vñ»µOO‘Lõï¢öÞ_ÇàYjùÙ9x;¥ø¹»Úü»#¥ÎíÍðofä6SY=g¨%(À*§Îøæ7®”´”ßãdçfÙÌ›ò>WÖZòx§¸s¥¬cSn%vÀÆ•fr×Í.˜ºÒdSÎ-—WÌÁ QcÙä²-’:—¢'ÏßvÓ¹ØyÊÏNÈ›.”B·Ï¤=¥À­Eûwg2wû6x¥Üi¿·&ÿ|ˆ+iwÓðN¢Ò•ÛËX3aJVØÛâô—£qªJ œ3æîûuî›Ü¼ÚA(û:zTj‹3uŽÆ9?n,uµ¦¡ö™ÿÊ=—nnœ« ɼ‰Ÿ'öš¦¨Mú?rÁ¥ø8\”Žñ+á;aZ¼ªÈjuE‘åå´Á0–Ü£ñ2ÃqTEqíÏ%ÌÒºê®.pÙ³4a®—­!‰™ûÛˆî®ë%ºÕãgéy"N;à'e`ú<={@÷ß›ò4s/—kUéú5“Ý1?3¿T“þ¼_Gq¼ù„œrP |™v¨JÜÊj©Ž7 @=K§CQ޼ ÎO>yŵ‡lS 4Æß%Ùøó\ „Z';¸ŒY²vÇ},äEòû@'¤ã)ÈX{Èüåß/PÙöEYžð*me¼Ý- C¡¯Y]N¿’›þî /à9ÏÝÐ-ÉÜk0÷‹ÏYôÒªkÉ•°¶¢¤†íú/AGµ•|òíÍY+tè V5¦o7¥l RvJFÊÜÍžN7Ø¥l˜Ô•ñÝZ¯/Cu0¾÷Š.êþÍYx bs°±¼æ”U†‹r2N`»ADµÓ€ìËx{sNÙÐ5 »ZLߋĿC!ANÚ«Æ)4”ºé«Ú¿˜ùÞFå˜sLÀëóðÉåäéØÏì÷7U-¢ÓWÊwpO?ÉëqYW€ä)„¦y¾œ'Ê3‰¬<ˆüqÿÄϯ¾L¹¹›Â-¤<HyÜc7ßSñ®þo¾½îñ@á´ÍÎDiU‚¯ôÌïÊïaÈïÓ%O«ÉÛõJžû7á'ŸcjÊ*Çäû}(ö!à)ÏgÌcCÈœõ¡ËCºB_=_ä¯Môõ|¹ ¶tÿàTh×WŠ%¶—ïå%ÅI)Ÿ–ñŽªâ2ÞçÂKR÷Ò\ǽ½PæŽ )Wý|q!ôÅ­ô<ØÖ"”a"Eªfh®¹òà¾óüPÄãòÙs=k¤s(ûÈžklµŒPÅ¡ìŠCaM}/ö ö$õÑ c—™4í•RɧÜôeë{…ñîNaRßþ?³+/)©(¿Y{ßÛ¾,%ŸOåx ¸Oþ—¸÷oW4î“3âÞ'(ÍíU„¦½8Û "™ôW) q~³a—/—q\…2"òe:¸CJðQ(r,m’Sçz9ôyyvq8ü½‚ç<_‡îbIæ¬á;š•¼Þ·o˱³§ôi+Êl:Û ^ƒ&ãhâz÷.ú›5w‘§ëÛ7¦õUâc¦¿±¤,Oö ¹™Jw#ë2Ñ£qér³±îÎÌå²—Úï$ªñT<_êh‡œ‹ópÒQhn7F+Öê%¹0Fò¸èoÖ+ÝI!º\ñ­¯°ž¨Óþe9ìW†^§0\ßÜål*«Š¢=áíÿñ÷š”à2;ùÒyÜÂ92^YU^-a]VÞíõÅ¿ © :©¬çÊ{Ãvß àNf*”‹[©1D£Ó¾½‚ÒãÞE³=çÇ„¸ÇľA´Œ#:– ïçc§±Â.9?/ãx==7ÃæùšÈn1×õђ⢿Ž_sÏñ^ç—%•ÓDg^ògpû›.ªÏÊüoÝ¿)ù°\Æ•>f;„^VìJ «¤¸ÿ›8&Aßã*ó&ßÞœu»Ÿ'ÿN?»@NZäâIÔoš-:Á×T˜-ú“Éï¤Ö wõ¾úÝ<î…œxLìêrV<.~›Fè“1Fï8Wa•Á•òëÐøuõû‚xݬêŸ_O{‘ÆÔOˆ†¯ÛÛ6º»ÝÀ O¼dR‹wZÄ»1Fu#)wŠ÷Üý<kýîÏ× ðåÆî<³L_^KxšÉ;e'žwú™2Ö~~‰r`‚ôUsÑ3Ìý.¬ídMè)§{«Ù’JÖ­x“B*’5yaeÎÂë#ì’<ãP¼„öyõÕ½)¨{½¤T:á½¥2¥r!Iòì¸îÕ—º·ó¬áéb]–®ˆ£!Ú¯¥¤¥5wZS›CýxvÍõ GÁþ(rY]Ì•h€Nƒ6ŽCƒx~Íù ĦäƒOw\Ãz¢3ƒë ÿÈuǨŸC÷xÑÉØŸ›½p3DÜL>†vÈ,ª/É·7gýØg)·œîaNfí.òd*õpçˆÆè *Ÿ9¢A—üNºaÍ[WÖ…ÐktóOnªôÿü<”+Ñìx.ê]ʃé¨K}DâuÆ{7$æ@HÌóâUqW—üj¹»‰ËiLv#Úo€ÎU.üÏý+Möˆ‹¤iÒ5ëKîOgóò³’âv}X^)><ž™àu®5¬k¹¿^§˜VQ^¸6›×@ÈÁ·à¬§¹?íн‘…KÔõ•â~1Ï»q-ì_b/ÿ‡!°ŽÓkäv˜ô¢rÀ÷Vf•èíúá4OÓý¨´´rsÏû(”ñ2æÌDËŠ¥ëË:i›Å:³$”÷¨6^Yõ3…#xÎóEêcÅ8tNbâ½U…Nc¡q%æ5? VÆ3¥«0'ú!µž«D3Ïïrvçò—•³K¼³Ùq‹kc DÃÌŸãÛ=>ß6§ÄP÷ûÿ=¦‰Ò¦ÎžÅÕR_¦H»Ë:ŒÏQˆ³¨,Z’ h°^çd’÷“DFÏ$Žž$Ú©×Ð÷T9£`:Õ´©Rr¬¹má r•O2Ä­ ðºdM¬”F^óÝ"®þ²îâ ¢×êb­!"iüq_!úNwv”HʺrŠBuð^t€öJCþ5ÖœœEéãõ‹zX¿HQ½¦SN ¡œb)ëÎЮ$«VÖ3þ-„—%„ÿÂô6§S.»^ÐHÈ ×*ºÔ¶‚Ì>'4×kSM«‰5’Cp~~Y9q½LÀ7øñU*F„–ŒwÒ§G]Ï¡—µ ’Ìõƒ—£d 1¿íNî$g>»}4n¤u<ÚŒv8¥º>n©‡=3Eµ5óq–•Û­È÷­„™À² :KƒÎŠ2ÎócæL ß§z>[ê9·×\^ÄHj(Æ —`ääë¹SèÄdî%dê£æ'4R‹k£æ$±‰Pòÿ%–=èÍ=˜\,O`6³`¿ñø8ò‹Å2UúÉWIïå:é[^)}lÖÍuåx]pm\¿yÅ~ÕÝirŠÂµTâÓ䜎Yô}¥hpO"p¥œºÃš½;Ñ>Ï$Iâë7ïðõ;;£~{­[§1Íõ³¾ÔÏ'Ñ+týJ²šhãõD¯³ë4йF5õ”øC¾xMÑÆ«ŠÒìu=É”7ÎsóÚû«C~ÄV‡²ÿµù™òçУâyo×OéM=Ì3âÙs_k\­8•úâ'í§VøXyêëC:¦ˆ“æ`Íó,ióNÄ{Ú¼ahó.MÔ… ñŒÂJìéx}ÞeâJmvx¼þG“Xï†[£Ð7æö¨´´Fnæ¢r« æ®’_rxûû¿…{!®ç5=¯òÒë²Òßò#.‡áä*GÆëYñHF‰ŽöËÊHr7€Ê™{=YÒßQèWD;W ßù˜ÙµâÊϺ׳vÒ{ÅàJúp„š^à‚_-ÐñÌ——ÀIéëN t—¥¨ÅõÓ’¢§Äœ–8ÿ/Òô!qî ¹,Åy-z¤ø0HñË0—”-œÛ$ð÷8ýûê,Ë_¯Až6)Ù‡—¿ù±7ºžø`ôÄËK/ÜJÿÛ÷k™£F«\á¨ì Ž:µŠòˆ9*ùœà¨và¨åÈÇÅsT¶pTQí÷Ëßœª}D‘rãQR²ÜÒò§§¬<±Ëü8Tð‘Ì“¤{μ‹ç%Ì•ÅëÅro™Ëͱr’¥›·zGfmV‘œ÷;ÂV⌠Þ)ö6ú›®EZIý˜öq­žŸ^À§p°¾àG$ÍVʉéSUø„ÞûÀ#ÎëA«“u~ÌÉ'wp(Sÿ€Gk'Èy¹ÅðÁ¡<žôlpŸ2³@|òGZ÷ñ%„3›L\ςǤÌÕM¤}ñg¦øÒáSCÒ“¯ILËpâ†!!4D ïCð³D|ÖHš†}…^|†œi(!4–Óøü9^iÜ™%iÞ”<[Ž3-|¹¡ÆlYEhp£‘W1Ny#qŒCüCe_ÇJ¡Ê÷_ýìõ‘“û°É@Òã_‹vóÕûö³ÝGâŒYï;·ˆ¤÷³:Ë\DZvð~®}˜¯†ÚËdϺBÙ5Ÿ~¤ÖØ ¨_Zêê®;©¦2n®JÅ5¸ä“.–c?I.êQvBòTÉ#%Ÿ¡±*(iäwÂIž¬Y³IºæûÐóko|R† Íi/ù{eKaÏkœØÄ»)ÝNGw‡©[×r7žñÍ‚îVBwûŸ;ŸºÉ‘º¸Í¯å}#¹ñ(Ù§Çwp‹»ƒZ_ñí(mvÔ"ºÛÏÜ1î>œ®TÝåþš“H>BmËiÔ#ë‰{záf3©ÔÜùýî|wÖ¼;³ÏéçåÝ©áîÔhwªµ;…ÛábàœíO…³MÇàìÐñTî1Ç<™dÅÕT¯%¹4•ú‘Ó©ï7ƒ¤Í,œÁéNÉš‹ó>òƒù”ŸNOÒiÔÝÜ ‹ Q´”øzNpzüNçÜi4¯î ÖkƒuÁz€5\ï6w÷÷›‚ÍÁ}¢Åõ 4¹œnˆÓyxpÚ S;´ƒ¸sõŸ¢ñÁ3$ëžž^vÓèaÉ¥½ÄËû¨M~xÚª7ˆûß"yûIÜ÷€÷äíóÉÛ¤? > > >¾¾ ¾ ¾¾ ¾ ¾ ¾~~ ~ ~~ ~ ~ ~þþ þ þþ ¥”VF…ʪH¥T–ÊV¥Ti•£Ê¨²*W•SåUU¨¤*«*ªªªTV‡¨CU U8 ¨¥j«ÃUu„ª«êõª¡j¤«&êHuÐh­š«cT u¬:NµT­TkÕFµUíÔñª½ê :.@W ›ê®z¨Ô‰ê$u²:EªNS§«ž*8èôú¨3ÕYª¯ê§ú«j ¤«!j¨¦ÎVç¨sÕyê|uºP]t\¬.Q—ªËÔp5BT—«QÀÀh` 0ŒWÔDu¥š¤&««ÔÕêu­š¢¦ªiÀtà:`0˜\/˜­æ¨Ô\u£š§òÕ|U ¨…ê&u³ºEݪ Õ"µX-QKÕ2µ\ݦnWw¨j¥Z¥V«;ÕµV­SëÕu—Ú¨îV÷¨{Õ&µYݧîW¨ÕõÚª¶©íêaõˆzT=¦WO¨j§Ú¥žTO©§Õ3êYõœz^½ v«Õõ’Ú«^VûÔ+êUõšz]½¡ÞTo©·Õ;ê]à=õ¾ú@}¨>R«OÔ§ê3àsõ…úR}¥¾¾¾Uß©ïÕêGà'õ³úEýª~S¿«?€?Õ_êoõ‰J¥µ6:ÔVG:¥³€l]J—r€2º¬ÎÊéòº‚®¨+•u]UWÓÕõAú`à}¨®ÔÓµtm}¸®ÔÕõt}Ý@7Ôtc  p¤>J7ÕÍôѺ¹>h«Ó-u+Ýh£ÛêvúxÝ^wÐu' 3ÐEwÕÝtwÝ88QŸ¤OÖ§èSõiútÝSçé3t/Ý[÷Ñgê³t_Ýè ƒô`=DÕÃôÙú}®>OŸ¯/Ðê‹ôÅúÁ¥ÀeÀp=BÔ—ëQú =ZÑcõ8=^OÐ+IÀdà*}µ¾F_«§è©zšž®¯Ó3ôL=K_¯gë9À À\àF`žÎ×óu^ ê›ôÍú}«.Ô‹ôb½D/ÕËôrÁm‚Ûõz…^©WéÕúN½F¯Õëôz½Aßlîîî6›õ}ú~ý€~PoÑé­z°]ð°ààQý˜~\?¡wèz—~R?¥ŸÖÏègõsúyý‚Þ­_<öè—ô^ý²Þ§_ѯ¯¯ÃúMý–~[¿£ßÕïé÷õÀ‡ÀGÀÇÀ'À§ÀgÀçÀúKý•þZ£¿Õßéïõ‚??¿è_õoúwý‡þSÿ¥ÿÖÿP§Bð!`H2Y&Û”2¥MŽ)cÊš\SΔ7LESÉT6ULUSÍT7™ƒÍ!æPSÃÔ4‡™Z¦¶9ÜÔ1G˜º¦ž©o˜†¦‘ilš˜#ÍQ¦©ifŽ6ÍÍ1¦…9ÖgZšV¦µicÚšvæxÓÞt0M'ÓÙt1]M7ÓÝô0'˜ÍIædsŠ9Õœœôò€3€^@o p&pÐèô7Ì@3È 6CÌP3ÌœmÎ1çšóÌùæs¡¹È\l.1—šËÌp3ÂŒ4—›Qæ 3ÚŒ1cÍ83ÞL0+If²¹Ê\m®1ך)fª™L®f3YÀõf¶™cn0sÍfžÉ7ó`°¸ÉÜln1·šB³È,6KÌR`°¸ ¸¸X¬V™ÕæN³Æ¬5ëÌz³ÁÜlî6÷˜{Í&³ÙÜgî7˜ÍóÙj¶™íæaóˆyx xÜó ð*ðð:ðð&ð–àmàà]à=à}ààCó‘ùØ|b>5Ÿ™ÏÍæKà+àkóùÖ|g¾7?˜ÍOægààWà7àwààOà/àoà U¨©:„¡ £0fÙ@©°t˜– ˆ¹a¹°|X¨T*U€ª@5AuÁAáÁá!á¡a°fxXX+¬ ÔŽê†õÂúaƒ°aØ(l6 ›†Í£æÀ1@ àØð¸°eØ*l¶ Û†íÂãÃöa‡°cØ è tºÝ€î@ààDÁI‚“ÃSÂSÃÓÂÓÞa^xFØ+ìö Ï Ï û†ýÂþá€p`8(†À³s€sóç . // / / ‡‡#‘áåÀ(à `40 Œ LJ‰á•À$`2pp5p pm8%œN §‡×…3™á,àz`60¸!œÞÎ óÃùaA¸ \ÜÜ ÜÜ ‹€ÅÀ’pi¸,\ÞÞÞ®W«€ÕÀÀ`-°XlÜ%Ø(¸;¼'¼7Ünï ï¶[mÀvàaÁ#‚G…‡O„;Âá®ðÉð©ðéð™ðYà9àyà`7ð"°Gð°x9ܾ¾¾&x=|#|3|+|;|'|7|/|?ü ü0ü(ü8ü$ü4ü,üøøòø øøøøøø!ü1ü)ü9ü%ü5ü-ü=ü#ü3ü+ü;ü‡ÏÊjnÔlø¿H:²€l ”-msl[ÖæÚr¶¼­`+ÚJ¶²­b«Új¶º=Èl±‡Ú¶¦=ÌÖ²µÃ:À@] Ph4´lcÛÄi²Mm3{´mn±-ì±ö8ÛÒ¶²­mÛÖ¶³ÇÛö¶ƒíh;.@W Ð蜜œœ œœjO³§Ûž6Ïža{ÙÞ¶=ÓžeûÚ~¶¿`ÚAv°b‡Úaöl{Ž=מwœ\`/´Ù‹í%öR{™nGØ‘ör;Ê^aGÛ1v¬gÇÛ v¢½ÒN²“íUöjààÚ`Ê0˜L·×Ùv¦e¯·³í{ƒko´ól¾o ì»ÐÞdo¶·Ø[m¡]dÛ%v©]f—ÛÛìíö»Â®<V«ív]k×Ùõvƒ½Ënîîî6›ûJÄý%âû Ýb²[í6»Ý>l±ÚÇìãö »Ãî´»ì“ÀSÀÓÀ3À³ÀsÀóÀ ÀnàE`ð°xؼ¼j_³¯Û7ì›ö-û¶}Ǿkß³ïÛì‡ö#û±ýÄ~z|v||| ||-øFð­ýÎ~o°?ÚŸìÏöû«ýÍþnÿ°Ú¿ìßö‹å¾:ô`IøDQ*ÊŠ²£RQé('*•r£rQù¨BT1ªTªUj@uà à`ààРFT3:,ªÕŽêGu£zQý¨Ðh5ŽšDGFGEM£fÑÑQóè plt\Ô’Ð*jµ‰ÚFí¢ã£öQ‡¨#Ð èu‰ºFÝ€î@è„èÄè¤èäè”èÔè´èô¨'œõŠzúDgFgE}£~Q`00 ކÃP`XtvtNtntp>pAtatQtq—..‹†G#¢‘ÑåÑ(à `t4&Æ¢‰Ñ•ѤhrtUt5p pm4%šM+†éÑuÑŒhf4+º>š͉nˆæF7Fó¢üh~T-ˆ77··F…Ñ¢hq´$Z-–··wD+¢•Ѫhutg´&Z­‹ÖG¢»¢ÑÝÑ=ѽѦhstp?ðð °xØ l¶EGOD;¢Ñ®èIà)àébxxx®ž^ˆvG/F{¢—¢½ÑËѾè•èÕèµèuà àÍbx+z;z'z7z/z?ú >>>Ž>‰>>‹>¾ˆ¾¾¾¾¾¾‹¾~ˆ~Œ~Š~.†_ŠáWà7àwÁÑŸÑ_ÑßÑ?QRÅ „EP´›ü—•ÊN•J•NåeReS¹©r©ò@ "P ¨ TIUMUKUO  Ôj¦KÕJÕNÔI‘ª›ª—ª4H5L5C“Ô‘©£€¦ÅÐ,utªyê˜T àØÔq©–©V©Ö@›TÛT»Ôñ©ö@ #Ð è tºÝ2Ðèœ:1uRêäÔ)À©©ÓR§=‹!pÐ è ôÎL•ê›ê—ê H L J N †þ3÷Ømé®m¸jâ̲mÛ¶mÛ¶mÛ¶mÛ¶mÛ<¹}åVËÚs¿U»µóåŒç?Œdôê@]¨õIÒ4"¡ 4…fÐZ–¤iMÚ@[ÒŽ´'HGèD:“.ÐÕO7Òô€ž~z‘Þ¤éKúA2€ $ƒÈ`B†’ad8#aŒ†10ÆÁø@&ÀD˜D&“)d*™ÓÉ 2fù™m̹0æÃ²,"‹ÉX Ë`9¬€•dYMÖµ°ÎÓzO`#l²6“-d+ÙF¶ÃØ »`7ì!{É>²Ÿ€ƒÿèÐ?:Èr”#ÇÉ 8IN‘Óä 9 çà<\€‹p‰\&WÈUr ®Ã ¸ ·à6¹Cî’{ä>< É#ò˜<§äy/ü¼$¯Èkxãç-yGÞ“ä#|"ŸÉò•|ƒïäùI‚Р›ƒ€Ð#`ü I (fqKPIh꣡hhÂÒp4£Ïé ú^Ñ×ô }KßÁ{ú~„O~>Ó/ô+ýæç;ýAB”ýÅ‚IJ, ɈiMÅA€šùX(š…°ÂCˆÈ"±È, ‹ ÑXtƒÅd± 6‹Ãâ²x,>$€„C–”%ƒäV +%KÅRC––¥céYÈÈ2±ÌÅOV–e‡~r²\,7ËÃòB>–Ÿ`Y!(ÌŠ°¢PÌOqV‚•d¥Xi(ã§,+ÇÊCV‘Ub•Y¨ Õ :Ô€š¬«Íê°ºPÏS}O  !4‚ÆÐ„5eÍXsÖZB+h m -kÇÚ³¬#tú­ÎV«+ëÆº³¬'ô‚ÞÐúB?ÖŸ `Ù ìiˆ§¡lÎF°‘Ö(6šacÙ8ïg›È&Ád?SüL…i0Í`3Ù,6æ°¹l›ÏÀB¶ˆ-fKØRXÆ–³l%[«a ¬…u°6ÀF؛ٶ•mcÛaÛÉv±Ýlì…}°ÀA8‡áeÇØqv‚„Sì4;Ãβspž]`Ù%v®°«ì»ÎnÀMv‹ÝfwØ]¸Çî³ì!{á <…gð^ÀKx¯á ¼µÞýÁû?øá“õ™}a_Ù7ö~°Ÿ,Êÿ‚`B@H ž¨§€FP$(OÚ“‡â¡yÂñð<È#Ad…GåÑxtˆÁcòX<6q!ćÐS"O‰! $…dÜS O)!¤¶Òð´<OÏ3@Fž‰gæYxVÈÆ³ó“çâ¹!Ÿ¼~òñü¼ä…xa(⧨Ÿb¼8/ÁKòRPš—áey9^*ðм¯Ì«@U^Wç5xM¨Åkó:P—×ãõ¡Ÿ†~Achb5õÓÌOsh-­V¼5oÃÛòvОwày'Þº@WèÝ¡‡§žžzAoè}¡Ÿ§þžð|̇ÀP>Œç#øHÅGó1|,ãù>‘Oâ“a L…i0fxšéi–5Ûšó[saÌ·ð…|_Ì—ÀR¾Œ/ç+øJXÅWó5|-_ëù¾‘oâ›a l…m°vÀNØ»aì…}°ÀA8‡á…cpNÀI8§á ?ËÏñóü\ä—øe~…_…kü:¿Áoò[p›ßáwù=~ÀCxá <…gð^ÀKx¯áͼýƒwð>ÀGøÄ?ó/ü+ÿßùþ“A!à²Z0! ¤'â‰BÀض~á]Ò“ >¡EV„á!‚ˆ("‰È" D…hb@LO±<ÅqD\Oć"¡H$‹$ÔS2OÉ!¤„TZ¤iE:‘2ˆŒ"“È,²@V‘Md‡"§È¹ýäñ“×Êgå÷SÀOA(…¡ÅDqQB”„R¢´(#ÊŠrP^T¡’¨,ª@U?ÕüT‡PjAm?uüÔ…zP@CÑH4MDSh&š‹¢¥h­¡ ´…vÐÞSO¡t¶ºxêê©t‡Ðz‰Þ¢è+úA1@ ƒÄ`Ca ‡žFz%F‹10VŒãaÂoM„I0¦ÀT1ML3ÄL˜%f‹9b®˜óa,„E°–ÀRXËÅ ±R¬«aX+Ö‰õblô´ÉÓfO[Ç~Çë uH–GŒ£ò˜<'äIyÊ:-ÏȳpÎqÞqÁºh]’—å㪼&¯Ëò¦¼eÜ6îw¹gÝ·ȇò‘ñX>‘Oå3ùÜx!_ÊWðú—7Ö[ë|/?­OÖgÇÇWùM~‡òçÿ=2TA­¿¬`¿W!THEpðÇ”TJið©P*4„°î7 b ‘‘QQѬèV GLG,[Å1âªx*>$€„CGR#$$Å¿ÒJe¥v¤q¤UéTz#ƒÊ¨2Af•Ee…l*»Ê9!äþªOê³ú¢¾ªoê»ú¡~ª :¨þ ‚Ap+„Ò @YÿÖÛÀFKË6fP>+”Ú £Ãêp:¼Ž #êH:²ŽQ!D‡Óˆ±!Ž÷âA|+•ÐJ¤ë$:©Nf$‡:¥N¥Së4ÒAzÈðL9,ެŽlŽìŽVN+—#·#Ϋóéüº€Q Aa(E¡˜£¸QJRÊCi«ŒUÖQÎQ^WÐu%]Ù¨U¡T‡PÓQ˨ u©ë¡žUßjàhèh¤ë&º©nf4‡º¥n¥[ë6ÐÚA{èðNÐ9.Ž®ŽnŽîŽVO«—£·£î«ûéþz€1éÁzˆª‡Áp#aÔoŒ6ÆÀØ@Æ9Æ;&8&:&Y“­)Ž©Žizºž¡gêYÆl˜sȧŽ…Æ"XÈK­eÖrÇ ÇJ½J¯ÖkôZc¬×ôF½Io†-°¶Áöߨaì„]ìvìqìuìsì·X‡‡õ}TÓÇpRŸÒ§õ}ÎYç p1K¿\þåŠuÕºæ¸î¸¡oê[ú¶¾cÜ…{ú¾~õ#ýØzb<…g<äE /­WÖkÇÇ[ýN¿×ôGã|Ö_ôWøß?ŒŸðëË@È_³‚[!!ÄG}ÌÇq,!A™eÍç å a ,„ƒð"B$ˆlD¨F4ˆnÄ€˜ŽXŽØŽ8ޏV<+¾##¡/‘/±/‰/©‘ ’C H © 5¤1ÒB:#=d02B¦!³•ÅÊêÈæÈîËáËéËåËmä¼¾|¾ü¾¾‚P ûŠøŠúŠùŠ[%¬’¾R¾Ò¾2¾²PÎ*ï¨à¨è¨ä¨lUqTuT³ªûjøjújùju .ÔƒúÐB#_c__S_3hnµø{ç_Eñ<𽇠âÝ=QD$”Š-RAT¤« ŠA1ô"JQÀ ‚‚ŠÁ^±¢X°WPT bÁ†`ÿÙýÍÎͽ›»·W_‚ü?¿¿ßï½ÜíÎÎÎÎÎÎEŒ`œÍ¨"Fê£ôÑú},0¯OÐ'ê“ôsÉȹúyú}ª> ™Žœ¯_ ÏÐgê³ ‘‹‹‘KK‘˘Ààrd.2¹ÂÅ•Ìg,`\Ÿšq c!ãZÆuŒë‰ˆ711nf,f,aܢߪߦ߮ß܉ܥ߭ߣ߫߇Ü,E@DBà%ËÇÇ‘å.žàÉ<§‰Ä3ŒgÏ1žg¼Àx‘ñ’þ²þŠþªþð:²R_¥¿¡¿©¯FÞBÞFÞAÖ(yyYÀûÀȇÈGÈ:°>'>ɉO‰ÏˆÏ_0¾d|Åøšñ¾QÿVߤo¾C¾×ÐÔÒF~AþƒüŠü¦äw%(ùSÉ_ÀßÈ?ˆõ'I4©jåÄ69±-‘GÔfÔalÇÈgÔelϨ›k1 ÓH;õ‰ˆ‰È.HCdW¤‘ÑØØ i’EA…HÒi†4I‹˜-¤Ôhe”­•´QÒÖhgìnìAìiìeì”í} èKô#úˆem "Ž%*§àøœ98‘LœDœÀ„œ’SrZBN7‡šgÈáÄ™æYæälFcd(£"0:cBkŽ3Ç#\Lt1É<Çœ œKœGL1§šÓ2LÏp~† b0ƒ˜IÌ".$. àbóóRà2b61LJË}˜KÌ#® ®$æ° &WÅäjós!p-qq½yƒyc†›BYÜ ,ΰļż¸¸¸Ã¼Ó¼ ¹›qã^ó>ó~d)ãƃæCæÃÈ#ŒGË1g,g<‘€'O1žf¬`<“€g‰çˆç‰ˆx‰ñ2ãÆ«Œ×ðº¹Ò\¼A¼I¬6ß2ßFÞa¬a¼‹¼‡¬Àû‰ø &à£PÖEàãPÖGàóSó3àsbñ…ù¥ùò5ãÆFä[dS6Çæ»Ø|"ð#ññ3ñ ñŸ~eüÆøñãÏüeþmþàŸ‚4"•®eýãÓémyŒÚé:Ö?t’ÎgÔelŸ®—ÞÑÃÌ™ÜÿÛ1gêçÌN¡ì¡ì†é]Ó€ÆÄnD“tAº)b4e4SÐ\A‹œ)VÐRAIΔ­ˆ2¢5Ñ&€¶ŒvŒÝ{0öLÀ^9³wΔçLûœÙçÿ‰I‡tÇô¾@'¢3Ñ%Ý5½²?£ã€-Â[„ƒˆƒ‰CˆîDE=‡2z2cž€#Ñ+GþÏÒ;Ý'ÝèGô'¤¦BŽfääX%•‰9NÉñJNH̉¡ ŽÀI¡œ![!§l…œš>-}:0”8ƒ–ž>9‹1‚qvlªb32”QʘŒ­qƥǧ'‰IÄ9éÉés‘óSSÓÓÒÓ‘ó0f¤g¦g!2.b\Ê%¸4”Ë"0;gæäÌå937gæ!W W*™Ÿ râªôÕék€…ĵÄuéëÓ7 72nb,BnFG`IŽÜ’·º¸M&jëÏ{XŸøõmD ®X¯qdñw/~2ó\w¢·ÞŠ[‹à~f×S—÷—W~ýüôJ2vÉliÿ$ÿv´º]ëŽõj_ËSô6Ü’ò,=,É¢•(…»¼ž»Í¤cêG=úË×¢Hâ_¯n)Šño|—Š…žQÆÊ;êqêÚ¨©ñæzåèµ¼ztÜWU¾“íIÖË;üüÃ)çý9Š\•?ùùµ·Uù<—åËûs˜¯“jö¨ÆÖ;oÃÊ'ÕÉÆÖ+Ì·³£OxpÇ û=šëáÌ×ÙÜ/ÿ0_‚1ÀÑÓ;vîzÅ £D7xûÃë©f‡*‚ðkòJA F•¤D±Ó–X£fI2ˆ\eÇÍTª³Aå¸ÿòë¥èåÕÞ¿öøu¿×êïŒ噾餇jeP­¹ú­¯ý¶ê‡õƒ¿¶B©åÊkQ婲§(e·†yÅíøkû‹ŸßD‘e×µmlÿ¶.„ÍW•ß•b+á믻 ¬ŽeBþòd=̦ 0“–ëdQ`\ˆ“ñ²Þµ²®Ìr…¶Vt+“—+µµªÇi§ºý¦ºåWW»Ù6“ö*ÍdBa6Í¥ŸŽì ½H—rK oÛö}yÏʼZzü)®*;xwƒ2',Ƭ°<ô~’ñ¬‡sÅ™… µÈ*i{Qkê;[Ê¢®cáþd™Ÿ?¹ïû¯cÑvÙzpß‘Ö ò-yßò-µß;÷W‰ÏűNl«}LÂÚÖQgk/Ò-R‚'…hIË6ö9žwލ®ø•—”°Ý­ºŒ·‡|7Ef¶>:ô­z$û'=ÃŽÜå¾í[³vd%‰-Ež?…Ù/J;Á£]¾ß´ÎÚ¯î®í{–¿•‡ÜõÓ3z­àãÚ-{Äü¼ÉCD×È–'ïîÍäÛ?PœâQÊ;£­àÁc©–ì=ñ’™X!ôDý 068÷ê¡Æ&fûjG÷mÙën¢1f {Šv ›ßñÓÖÑÈÖvO=ý¥üoÚ¶Z¨¦mÍNVÖ/ó7ÙJάbÌYüï¸w7îGœ¶­|I®2W’«e³Lå½jÙNZ®è_¡ŽÕìq)Âþ«ïhGwGº7£ò;Q®zFä¦k¹ROoËIí©’׎á%âéZÃŽÑ|ÏÄù'÷àòìºd–Ðüó¿ã·FÆsÄ"±X,¯‹•âiñŒX.–‰OÄz±V¼™³=çË}É;ŽÎ¼.Æ×û³\‘‹±7q¤JM—¦kA·5,³Onû$Ñ!š„êö@¯§e¯ñ#ŸeÙò²õsÛ&šŸÅ)•¤g U¥ª$EËœ{Þ!®LwÉl¹~zF³Y®ëºêô NûË!jÈò DŒ§aŽ.ƒ™ºféz˜§}Ïj:>Úû@ïóµ(óŠg%ÙyJ³H{ˆäó&IDªNY[ª?üÕ>1·vvòdMž¬”â©O!Ž/?õñ¿¯’©Ö9ØnN; èÌÓž9þwªSVÒñ©Nüb¯!m¯–å¾w\ÜßñË ‚²…xõ’Ú;i{ÜöS¾.cLʾdÇøþ`®ªüAu§:eÕŒÇÓÁ^ì÷…°vÍuË΂Ê&³`k‹kùꌔ~3±ºäÍÄšŠøêèäDu9V­\ÏüïW犙käÏ^Ér¸[j ²Wu®ˆ5Q½³9J$ö®ŽˆÏ_’EåËWªß¿“G~{µJ"§úý;^ûª±‹õÃ-Ÿ,úb’O®§Iî\ÏŠº:fteX£Ÿª·t}K¦:V‡ ;ÌÓal.SÅEâq®8ÆëÜu> nO‰ûÅcâ:q‹x\Ü£·^LŠ‹Åd1CLÅùbXã»H\cý$Œó|ñ ¸I,sÅârq£¸R,óĵâzq§¸]Ü*Þ„Ñÿ<áuð„Õâ3ñ¶øP|*V)ö³Ò2õðI°I-CÛ£‚Ï.¹§Z»˜…»ïeå|Z"öfßTÈýºŽ¾c`D*Ä륾W·TŸ'ÁØÎž >1½âZ:#¼ |c>Œú\Ýy0êWÒùæ2ôŽwÅ0’W‰GÄCbøJ¬Ã‘µž/湨-òÅvb{x—¯öwîƒK„˨M?ç»êðÿk¡­ Dúþ^eŽ,.S¾æ3Iî«Þ:N;ZfÞYíe¿òÿk‹:(¡.ÊâŸ÷:(ß+7õ%õ%©¼­_ÏHÌS¾n=zz¯ûÕwÚý¿6yôä¢Ü¥Uw1PT‰J1!°žÕ*o=¼^r‹zk:mÙϿܞå–à¶¿¼¿DÓÄŽ¢>Ææ¶I›BLu¢‰UªÞ-Å)ȺѬn½×¥˜ã|ÎÖ¾”eÄ<žï€ßÔ(Bmü´ÜG´ëì+:‚…ˆCEQ–Ú_tk'‰ãE3¯5m¹u-»ÖËJ¤M¥mÕv-¤ßSÛvµ´ãvµ|vµx 2—¾ºÕ¬5£ÖŒk!Õ(%oݲAG°‚´A°B¶ ¸eµL`½']«yžP‰Rv¬q"_rÚÃF«c¿[ÖÊE[ùÙ©o¯jñûœL?¢µì÷Îç¸Ý·‚¬yí<õi£ìkÞw¯–oÉ݃ûéRA –ïö½]3÷L1œÍÝ`ìyãÌ¢ ÕÝŠ®,[úâÖ>ûlÔš·ÖºR‚'èÁëÊÑŸÍý¡1£Ÿ[›ìõíßÔF5²<3ݺG6Lûz ÿÖ«ýÖâ ΚéØ2<Çi‹šü{9Ž[{;«oçO«Åø] ?½œ<Ú?{×vëÌotEi»¶9–Úw~JîKŽ­évl³i€ÕŒ&akEð±–ϧê÷¤üLΨš•Ùk­wÅU}jóÒέŒqX´ÌÐJ\yGD²l¶fþ3ÔÉÛ¸2ç:ÏYr³b>ûÌõUéÊÔÛÏÊdÔÚÅ·^4üý2è_GÂò½1QÎ@ƒvÛx]Þ÷ÆK.ß'²e—à½6‰Æ±:fO~ËŽ6*ÎoÞºŸ1Í7‹ûÅ£ânqDÙU°‡]‡±VîdÓ E°Qkü]È2úýÜìeìÞ'æ¶W®{rÚvjM¿·YŒ6à3TZYZøQ°µµ–­ ¯ko¬&{v]À^À^}`ÅéY ·Ú±b8Rû™ÕHŽÍX:ií¨q7—1ðÓ<Ë“ö—ãПeáïÚñ¢>­Ú¥tÞ%­Y?sªd_µG±Œ¼½$ÔÛí5ß›Ï7e£cÇßhcƒûa î;I;KÛJ[y(ÚYÚ7·Úá'é ɃŸj³Oªgþ{t÷«#Íz*%¿wÒ‚¾m2¿ƒþ">-~3@?)–÷‡ƒ]*ÄÉbˆ8Aê†Ü¬4ìr¢,F‰‘ËÊòPC–•uª ¤´i7(?JKKŽ„|úlIé eå8ôÒ£2²½W­Õ¹Ï^¸¼˜áZuìÚy k»RœêjÕú¹…؃Î}¬Oj)~ŸÃG3Ùhû8ç$q´tÎd*hüìÑ–#'G{4ÚÞ*×J:å:cd“^!Gz”´Ëíä¸ fµ½WÕšFñá\ü<Ì~îy0z{ûÁjßG¦¿'Z#ŽÆˆu¬òr¬Æø®òÎ~c×G±=È­Äx9ê[1lËö¬+èÒûÖ=Ή×GCߤÊž¡¨í퉷§ÞžõÂzæ½öïÌy¯M“ ‚ÌSñ. Ä=b>D“ËÄlq©¸P\"fAdY!ž/ˆÄRñ¼x2{½?o³žt\¬yÑò¾ž8ßúaܬÂÌIJױó ½Ä)bX&³K¹_ín?’5¥Uí¶ZG­‰ö”V©õ×Vi+µõÚZ^ªNª85T«Òºk=´?µMÚZ:Õ$µ]ªnªeªçg½­¸ÜŒ}Ø_±l=¬-m=l½l=¬-£÷»k&õÍ»jV<_Šþ"RÚ¢ÖWë­õÓÊ ¾7‡ßX+ÌDø ãŸgQ¾Eê7ñ+Æø1ÚxEŒ/Â(ïo…ðùdGæ^™»âI3b¬+Æw Ø-wÒäŽÍîi|)]°”[Jö·AåZ-kVâÞ£;”A±_Ý_ë7¹¬. ?$ÇQ†{ˆ8d ²ï w­{Ý3§¨• í×Ò‡&j»'´à×¶÷^²¶ãs¥8 ÆåT¶Ó³Æ¥Žl?héTϘF«ÑúßHìŠØsùÝÁæð“Ü È»»Â}ç.ïMÝŒ¾[v}³¢š½¾ …^­oüçý@f”õ÷,þ*`¯ 3«À%°Ø«Àÿ_€U`i¤U ªö~qÜÎÍŸ8 b¸µÓ9Mœÿ휻Ôtê5ƒëe·'s´$íÉzN{ÉýNç†aþ?ZÅÂ𖜧D•ô¼g,ÆF÷O~}ÍÃzéT@õ ÍÉœzcîäÌg¾ŒÂœ)þ\ñ˘¸†òß^¿ <[~sÿ=ú÷ :§*RÝRRýSýR}R½R‡§*SǦNHåâñM ÷h›É=ÖCöñ†V'•¹ÇHÈ=†Bæñ…Ö$UJCÎÑÖ[ÿòUÚHEùh£°2k÷`í¬ýÂLØ-,ƽBYª€NVžÏâ~!x`fûr~Ä5ã߉Ãgâ¨ð8œ<ãï~«Îøecèü%—œ9î)¦½ó—ÚH-+i~I½úgöÄ–vö¾8ù(óï"È6åókW=Ÿo ]*`W=‚vÕι|¡~xvÅOä¦ìý,Ïù•­AP/»–=‹NÀy´^ûD[ óh¥VçQwœG›´BÌ÷åL*…àœ›Ø1±噃).ºí+5â±Õ{úâH±b«JŠŒÏ*)[nT²w±Î¼ámyÌxe!l£|Fú ñНŒÖøLÇWG{àV½Ëg;ÞžÉm{®ÏŸy>³áUÓ Ÿëx˾ês_1ü×oßùðÉÿÔíûïŸëzÞ¾…g…UàZëùÚŠþ˜¼¶z—´.arÉÆ‹^‘ý÷¢~À­èÜ‚ÞÃ-É ·Ÿ`¸‘<Ép ݆Èí§.Ü’ŠÂm¦ÜvŠÀ­)Ü–jÀmŠÜ†jÁ­hÜzÆÃ­g"Ü~&ÀíhÜnúÁ-iÜ‚úÂíIèŠÜ†È-è<܆ÃmêÜ‚ö²^ý$þ…D)ÑIôúJ²¥¤„¤‘¤¡¤‰¤1ÜbÀmf¡d²d’dŠd*Îô]òHòXrMrUrSrCòn''$G%Ç%O%O$Ç$Ï$¡0±Ej’¤F©¿T/•ýâé?ÝÄÏ`ÄyÂ<]¢Ï{«âÿf¿®»è#y:רm>Ç}Žá_¯.ýòÿªÿ¯ªü¿{ò÷YþîYùoÁG9¼ò’DKòÁu‘üøÏOÉ[Ÿò’Š’r’ ø?aúáxIÉ}üÁ.üoù0¹çýä ”I¬’Î’Nøòÿá8I¬$¿¤€d†dšd:ÿ?ù/Â6ÉÉvÉV¸ØïJ|¥fö?úŸãÿ‰ž4ðxðÉÇ J £ÎØS7è*º*]M‡žfxô´:Ú‘žÌR_Ö“ ºúŸ¹Ï÷ã…ðïHÅá>¼Ü‡çc÷âä^»¬´Ü+W÷¸G&Ÿ>Ÿ…‘šŸ:Ÿ÷ÉäoSk}fÀýïeŸ p:ýìÕ@ÚHÚPÚJÚZÚRÚA:PÚTÚXš.m"í"í*í,í&m'm+í(í$m/m#í..!*,"$&'m.m!m&í!í) í'í/í+í#í-í%)#-%+ÿÿã²ø¯½–ú»ÿ÷þwE}rƒÏoðl®»ìò²WBô5i¨QõZ±G=ò>¡®Þ#‘¼Jxô[ kÑ •ñÝ­ð•-}U–1ƒgB¯µð‘·¾Z,÷ßê!/;&µy†ßð±[ÜC× ïàð~od4¾³‘¼7RøŸ^¿ÞÒ¿W—‡ %¡BU|=ûvÜÿFAþ Òšý=ûï¢kC¼MbKü2úï/6îw‚|ñ!ËM•¤H%=àÞS-QI¾û|óùM’M2‚½ä“O+IMÉbÉO‰DªÅw„ü}<ù›p1IAÉ0Œ=ˆï%™/!!~.!±‘=Ñg<÷»Ï÷ÈûHûñùËg¥ÏfŸ'>˜Fç•û(|èç14üÑÝèC÷Ä‚ï+µÂc-ù¥‹`üßÃ'ÄÇéC%#ñq8¿$ßÁšä“É'ÿ¿—›³²wæÄ¿‘ësAŸB>…}Šà[É#Ÿ ÿ-‹¯xʳç‡äZZŽlu|¦H®{u|êâ;¸È«¡FøWfpÝþ¢ØÎ§=õÎðºˆü%«'<¾-¤?Üw„ç̃ñó0|=žA†×ÃäÂx¼'§ßBî×§Áóép/? Žßx=îïø,ôYä³Ôg¹Ï*x~±îó×ÁóìMp<·øl…Ç€í>;à™ø.ŸÝðLc/éƒp¼ã·‘œ‚Ç„3ø mòœã*\"×áùøMŸ;>÷}ø<„Kã1\&ä™y¤} —ökx>ú.ó¯p ù¯ðÈ#-\)ðY¡ ®;äÑ”<;4À³R?x< †GÞPI<öFH\’H|œŽÁGÖxI\c’ðÙlŠ$3>–>‘>•>“>—¾’¾–¾‘¾•¾“¾—~~”~‘~—þþ„;"‰L.SÉÔ2L+ÓÉô2ƒÌ(3ÉÌ2_™Eæ'ó—Ye²@™M" “¹d‘²(Y´,F+‹“ÅËd‰²$Y&Y²,E–Y–M–S–[–G–W–O–_V@VPVHVXVDVTVLV\VJVVV^VIVYVEVUVMV]VCVSVKV[VGVWVOV_Ö@ÖX–.k!k-k#k+k'k/ë ë(ë$ë,ë"ë*ë&ë.ë!ë)ë%ë-ë/,"*&.!)%-#+'/›(›"›.›%›+[ [([$[,["[*[&ûC¶\¶J¶N¶I¶U¶M¶]¶C¶S¶K¶[¶G¶W¶Oö§ì/Ù~ÙÙAÙ!ÙaÙeÙÙUÙ5ÙuÙ ÙMÙÙ}Ù ÙKÙ+ÙkÙÙ[Ù;Ù{ÙÙgÙ7ÙO™T®«å:¹Qn’›å¾r‹ÜOî/·Êä6¹S.”GÉ£å1òXyœ<^ž O”'É3É3˳ÊsÊsËóÉ É Ë‹È‹Ê‹É‹ËKÈKÊKÉKËËÈËÊ“—“——WW”W’W–W‘W•W“W—×הגזבודח77”7’7–7‘7•§Ë›É›Ë[È[Ê[É[ËÛÈÛÊÛÉÛË;È;Ê;É;˻ȻʻɻË{È{Ê{É{ËûÈûÊûÉûËÈÊɡȇʇɇËGÈGËÇÉ—O–O“ϔϑϗ/’/•/—¯’¯–¯‘¯•¯“¯—oo”o’o–o‘o•o“o—ïï”ï’ï–ï‘ï•ï“ÿ)ÿK¾_~@~P~H~X~D~T~L~\~B~Z~N~^~A~Q~I~Y~E~U~M~S~G~_þHþTþBþRþJþZþFþVþNþ^þAþYþMþ^zÈr…B¡T¨j…F¡Uf…Ÿ"@¬p(B —"R¥ˆVÄ(bqŠxE’"E‘Y‘E‘ªÈªÈ¦È®È¡È©HSäRäVäQäUäSäWPVSW”P”T”R”V”Q”Uü¦¨ ¨¬¨¦¨©¨¥¨­¨£¨«¨§¨¯h h¨h¢h¦h©h£h¯è¤è¦è©è£è¯¤ª¡©¥­£«§¯˜ ˜¤˜ª˜¦˜®˜¡˜©˜¥˜­˜£˜«X X¬X¦X¡X­X§Ø¨Ø¢Ø®Ø¥Ø­Ø£Ø«Ø§øSñ—b¿â€â°â˜â¸â„â¤â”â´âŒâ¬âœâ¢âŠâºâ–â®ââ‰â…â¥â•âµââ­ââ½âƒâ³â›â§Bª”)åJ…R©T)ÕJR«Ô)õJƒÒ¨ôUú+•6¥]éP†(ÊPe˜2\¡t)#•QÊheœ2Q™¬Ì¢Ì¦Ì©Ì­Ì§,¤,¦,®,¡,©,¥,­,£,«üMYNY^YAYQYIYYYEYUYMY]YCYSYGY_ÙHÙTÙ\ÙJÙNÙQÙEÙCÙSÙKÙ[ÙGÙWÙOÙ_9@9X9L9R9F9^9Q9I9Y9E9U9C9[9O¹P¹Dù‡r¹r…r¥r•rµrr­rr£r‹r»r—r·rr¯rŸòOå_ÊýÊÊÃÊcÊ“Ê3ÊóÊKÊ«ÊÊ›Ê[ÊÛÊ;Ê»Ê{ÊûÊÊÇÊgÊ—Ê7Ê÷ÊOʯÊJ©J©Òªt*½Ê 2ªL*³ÊWeQYUA*»Ê© WEªbU‰ªUfUUª*«*›*»*‡*§*M•K•WU@UXULURUFU^UIUUUMU]UCUSUWUOU_Õ@ÕPÕHÕXÕDÕT•®j¦j®j¡j©j¥j­j£j¯ê¤¤ª¡­§ú]5Y5E5U5M5]5C5S5K5[5G5W5O5_µ@µPµHµXµLµBµFµAõ—ê êˆê¨ê˜ê¸ê„ê¤ê”ê´êŒê¬êœê¼ê‚ê¢ê’ê²êŠêªêšêºê†ê¦ê–ê¶êŽê¾ê‘ê©ê…êµêê£ê‹ê«ê›ê»ê‡ê'<¡”¨¥j™Z®V¨•j•Z­Ö¨µjZ¯6¨j“Ú¬öU[ÔVuÚ®vªÃÕ‘êu¼:I¢NUgWçPçT§©s©s«ó¨óªó©ó« ¨ ª © «‹¨‹ª‹©‹«K¨KªK©K«Ë¨ËªS×U·Q·U·S·WwPwTwRwVwQwUwSwW÷P÷T÷R÷V÷Q÷U÷S÷WPTRVQWRÏT¯P¯V¯S¯WoPoToRoVoQoUoSoWïPïTïRïVïQïUïSÿ©þK½_}@}P}H}X}D}T}L}\}B}R}J}Z}F}GýFýVýNý^ýAýQýIýYýEýžRË4JF£×k¢51šXMœ&^“ IÔ$i2i’5)šÌš,šTMVM6MvMš&&¿¦¦¨¦„¦´æ7MMeM5MMMM}M#MSMº¦™¦¹¦…¦¥¦•¦µ¦¦­¦¦½¦ƒ¦£¦“¦³¦‹fˆf²fšf¦fŽf¾f±æÍrÍ ÍJÍ*ÍjÍÍZÍ:ÍzÍÍFÍ&ÍfÍÍVÍ6ÍÍÍÍ+ÍkÍÍ[Í;Í{ÍÍGÍ'ÍgÍÍWÍ7ÍwÍÍOxQ Ó*µ­^kÒZ´Vm6V›S›¦Í¥Í­Í£Í«Í§-¨-¢-ª-¦-®-¥-«ýM[N[^[A[Q[I[Y[E[U[C[[[G[W[_Û@ÛPÛHÛXÛDÛT›®m¦m©m£m«m§m¯í¤íªí¦í®í¡í©í¥í­í£í«í§¨¢ª¦¡©¥­£« ¤¬¢ª§]¨]¤]¬]¢]ª]®]¥]­]£]«Ý¬ÝªÝ¦Ý®Ý¡Ý©Ý¥Ý­Ý§Ý¯= =¨=¤=ª=¡=©=¥=­=£=«=§½¨½¢½ª½¦½®} }¨}¤}¬}¢}ª}¦}®}¡}©}¥}­}£}«}§}¯ý ý¬ý¦ý©•êd:¹N¡SêT:µN§3ê|uþ:«.@¨ Òël:»Î¡ Ñ9u¡º0]¸.BçÒEê¢tѺ8]¢.Y—E—M—S—[—OWPWDW\WJWZWFWV÷›®œ®¼®’®ª®ž®¡®‰®®­®®½®ƒ®£®“®³®‹®«®›®»®‡®·®Ÿn¸n„n¤n”n´nŒn¬nªn†n¶nŽn®nžn¾nn¡n‰îÝJÝÝZÝ:ÝzÝÝFÝ&ÝnÝ!ÝQÝ ÝÝYÝ9ÝyÝÝEÝ%ÝmÝ=ÝCÝKÝGÝÝwÝÝOxù'ÑËõ ½R¯Ò«õ:½Qï«÷×êƒôÁz›Þ®wêÃõ‘ú}¼>AŸ¨OÒgÒgÖgѧê³ê³ésêÓô¹ôyõÅôÅõ%ô¥õ•õUôUõÕôÕõµôµõuôuõõô õôõMôMõÍõ­ômõôõÝô=õôƒõÃôÃõ#ô#õ£ôcõãôãõõ³ôsôóõ‹ôKõËõ+ô+õ«ô«õëôëõôõ›ô[õ;ô»õûôûõôõ‡ô‡õÇô'õgôçõ—ô—õWôWõ×ô7õ·ô·õwôwõôõôOõïôïõôŸõRƒÌ 7( JƒÆ 5è zƒÁ`6ø,?ƒ¿!Ð`3„ .C´!ÎbH5d7ä0ä4¤ròòò JÊÊ*ªjjjjêêššZZÚÚÚ:úFÆ~7L1L5L3L7Ì0Ì6Ì3,4,1üaXnXaXiXeXkØa8h8a8i8e8m8c8o¸`¸h¸d¸l¸f¸i¸c¸oxdxlxbxjxfxixcxoødøjøfønøaøieF¹QaT5F­Qg4AÆ`£ÃeŒ6ÆcqÆDc’1“1Ù˜bL5f5f3f7æ0æ2æ50637–0–6–3V2V6V1V7Ö0Ö4Ö2Ö6Ö3Ö76066¶6¶1¶5¶3¶7v2ö6ö1ö5042617Ž0Ž4Ž2Ž6Ž3þnœlœfœiœeœmœc\`\b\j\füÃ¸Ü¸Â¸Ò¸Ê¸Ö¸Î¸Þ¸É¸Û¸Ç¸×ø—ñ¸ñ„ñ¤ñ”ñ´ñŒñ¬ñœñ¢ñ’ñ²ñŠñªñ†ñ¶ñžñ¡ñ‰ñ©ñ™ñ¥ññ½ñ“ñ«ñ›ñ»ÑÇ$1IM2“ܤ2©M“Þd5˜MA¦pS„ÉeŠ6ŘbMq¦xS’)Å”jÊnJ3å2å6å1å50•5Õ4Õ1Õ7565155¥›š™ZšÚ˜Ú›:™ºšº™º›z˜zšú˜F›Æ›&˜~7M4M2M6M1M7-0-4-2-5­1m1í2í6í1í5í3í70425]5]7Ý0Ý4Ý2Ý6Ý3Ý7=0=4=2=5½0½6½3}4}2}6}1}5ý0IÌr³Ê¬5ëÌz³Ál4ûš-f?³¿Ùj2›mf»Ùa5G˜£Ì±æs¢9ÉœbN5g7§™ó˜óšó™ š ™ ›‹˜‹šK˜KšK™Ëš«š«™«›k™››˜›šÓÍÍÌ-Í­Ì­ÍmÌmÍÌÍÌ]ÍýÌýÍỊ̀ͣÍcÌãÍÌ¿›'š'™§š§™§›g˜gšç˜ç›™—š—›W˜WšW™W›×™7š·˜·›w™w›÷˜÷š÷™÷›˜š™›™›O˜OšO™Ïš/˜/›¯™ošo™o›ï™™Ÿ™Ÿ›_˜_›ß˜ßšß™ß›?™?›¿˜¿›•¾*_µ¯Î×ß×êàèäk÷uø†ø:}C}#|]¾‘¾1¾)¾™}³ø¦úfõÍá[À· o!ߢ¾Å|‹û–ð-é[Æ·œoEß*¾Õ}køÖô­å[Û·žo+ßî¾½|ûúðì;Äw¨ï0ßá¾£|ÇúNðä;Õwšïtß¾3}çø®ò]ç»Éw³ïß­¾Û|wúîñýÓ÷€ïaß#¾G}ù÷=å{Ý÷‰ïSßg¾Ï}_ø¾ñ}ëûÎ÷½ïßϾR‹Ì"·¨,fK°Åa µ„YÂ-—%Úc‰µÄYâ-I–L–dKŠ%³%«%›%»%‡%§%·%Ÿ¥ ¥ˆ¥¸¥”¥¬¥¼¥’¥²¥Š¥ª¥š¥¦¥–¥¶¥Ž¥®¥¥±%ÝÒÂÒÚÒÎÒÑÒÅÒÝÒÃÒÓÒËÒÛÒÏÒß2À2Ð2È2Ô2Ì2Ü2Â2Ò2Æ2Ö2Î2Þ2Á2É2Ù2Å2Õ2Í2Ó2Ë2Û2Ç2ײÀ²Ø²Ì²Â²Ú²Î²Ñ²Å²Ý²Ë²×²ßrÞrßòÈòÔòÒòÊòÚòÆòÖòÁòÑòÉòÙòÅòÝâã'óSúiüü\~Ñ~q~‰~É~yüJú•ò+íWƯ¬_y¿ ~ý*ùUö«æWݯ†_M¿Z~uýêùÕ÷kà×Я‰_3¿–~müÚûõñé7Æo¼ßD¿)~ ýÖúmðÛì·Ýo‡ßN¿]~»ýöùýé÷—ß~¿~‡ýŽøõ;áwÒï”ßY¿k~÷ýø=ô{â÷Ôï™ßK¿O~©¿Ì_î¯ðWûküµþ:½¿Éßìïëoñ÷óðôòö·ù‡ø;ýCý#ü]þ‘þ1þ)þiþyüóûö/ã_Å¿º-ÿzþõýø7ôoäßÔ?Ý¿™sÿþ­ýÛùwôïâß݈ÿïþ“ý§ùÏôŸã¿Â«ÿ6ÿíþ;üwúïñßë¿ÏÿOÿ¿üúò?ìÄÿ¨ÿ ÿ“þ§üOûŸñ?ïÉÿªÿ ÿÛþ/ü¿úÿô—Y-V«5Èê°†XÖPk˜Õe´FY£­1Öxk‚5ÑšdÍdÍlÍbMµfµf³æ´æ¶æ³´±·–²–µ–·V²VµÖ°Ö¶Ö³6´6±6³¶´¶±¶·v²vµö°ö¶ö³ö·°´²µ³·Ž°Ž´Ž±ŽµŽ³Ž·N°N²N¶N±NµN³Î´Î±Î·.².µ.·®²®µn°n¶n³î´î±ž²Þ²Þµ>°>¶>³>·¾°¾´¾²¾µ¾³¾·~°~´~±~·úÈ”~a®€è€ø€EŠ” (P> B@Å€J•ªT¨P3 V@Ý€ÒZt 08`HÀЀa#FŒ06`BÀœ€«Öl ذ5`[Àö€»öì ØðgÀ€ƒ‡Ž 8p*àrÀ€OÞ| ø Tª5Ú@] >Ðhô ´úÚ!aqY³æ ̘/°x`ùÀJUkÖ¬X7°^`ýÀF›6 LlØ:°]`ÇÀ.Çþ89pzà’À ›·î ܸ7p_àŸ <x8ðHàÑÀ§Ï^ ¼ø0ð]àûÀŸ¿~ üh2ùÙ‚ìAŽ  ° ð ˆ WPdPLP|PRPJPjPö ´ xSðŸÁ§‚Ï_¾|-øk°Ì&·)lJ›Ê¦¶ilZ›Î¦·l¾6›Õ` ´Ù‚m6›Ýæ°…Øœ¶[”-Úc‹µÅÙâm ¶D[’-“-Ù–jËnËaËiËmËo+`+h+d+l+b+j+f+n+a+i+c+o«h«b«a«c«oklkbkjK·5³µ´µµu´uµu³u·õ°õ´õ²õ¶õµõ³õ· ² µ°¶µ·ýn›f›c[`[b[j[f[n[a[i[c[k[gÛdÛlÛbÛnÛk;h;j;i;e;m;k;g;o»d»j»a»m»k»o{h{n{kûhûjûfûnûió±Kìr»Â®´kí:»Þn²[ív{¨Ýe´GÙcì±ö8{¢=ٞŞ͞ÞfÏm/h/n/m/g/o¯`¯d¯l¯b¯n¯a¯i¯k¯g¯oodonokïhïjïfïnïiïkhnkgoŸhŸdŸlŸjŸfŸnŸeŸk_`_l_jÿþ¾ξžþǾ׾Ïþ—}¿ý€ý°ýˆý¨ý¤ý”ý´ýœýŠý–ýžý‘ý±ý‰ý™ý¹ý…ý¥ý•ýµý­ý½ý£ý›ÝÇ!w(J‡Ú¡qh:‡Þat˜f‡Ÿ#Èáp„9ÂŽHG¬#ёőӑæÈåÈëÈçÈï(è(ê(éøÍQÎQÞQÁQÑQÙQÅQÕQÃQÓQËQ×QÏQßÑÈÑÔÑÜÑÕÑÝÑË1Ð1Ü1Ö1É1Ã1DZÀ±Ì±Ú±Æ±Ö±Þ±Á±Ñ±Å±Ý±Ë±×ñ—ãˆã˜ã¤ã‚ã‘ã™ã•ãƒã›ã»ã‡Ã'D" Q„(CT!Ú]ˆ>Äb ±†¸B¢BbC’C²…ä)R<¤tH¹*!µBj‡Ô ©R?¤AHãô!­CÚ‡t éÒ;dlÈï!SBf…,Y²(dIÈÒe!+BÖ„lÙ²'ä@ȱ3!—B.‡\ ¹r#äfÈ»!÷B„< yò4äeÈÛÏ!?á醿3Ðä vÚœv§Ãât:CÎhg¬3Á™ìLufwærævæqæuæsæwptvqs–t–u–wVvVqVuVsVwÖpÖtÖrÖvÖuÖw6r¦;[8Û8Û:Û9Û;;8;:;9;;»8»;{;û:8‡8G8G;Ç;'8wNtNrNvNqNuNsÎrÎuÎw.r.s®t®qnpntnrnvnqnunsnwîpîrîqþé<è<â<á<é<å<í<ã<ë<ç<ï¼à¼è¼ä¼ì¼â¼ê¼æ¼î¼á¼é¼å¼í¼ã|à|â|î|í|ã|ë|ç|ïüàüèüäüìüâüêüæüîüáüéô •„ÊCU¡ºPS¨o¨h`¨=44Ôšš)4KhöÐ\¡¹Có„æ Íš?´@hÁÐB¡ECK„–ý-´Bh¥Ðª¡5Bë„¶mÚ)´[h¯ÐÞ¡}Bû†ö :8tHèÐÐa¡ÃCG…Ž :)tAè¢Ð¥¡«C7†nÝz0ôhèÉÐó¡WC¯…^½z3ôvè½Ð‡¡OBŸ‡¾ ýú)ôk¨4Ìf s„E„¹Â"â¢ÃbÃÂ2…eË–#,oXþ°Ba%ê„Õ«Ö(¬yX‹°–a­ÂZ‡µ ëÖ1¬SXç°.aÝÃz…õ 6.lBؤ°™aóÖ†­ Û¶%lGؾ°Ca‡ÃŽ„ ;v"ìtØ™°³aç·] »v#ìvØË°×aニIÂUá†p¿ðÀp{xxxLxlx\x|xBxRxJxjxöð´ð<á…‹„ÿ-¼fxÝð†áÍÂÛ„· oÞ>¼Cx§ð®áÝ»‡÷ïÞ'¼ø ð¡á“§„OŸ¾$|eøúð­á;Ã÷† ?~"üdø©ðÓágÃ/„_ ¿~9üJøõðÛáwÄ?þ1ükøÏpE„.Baˆ0F˜"|#ü#¬Á¶{DhDxDdDBD–ˆ´ˆ¼#ŠG”ø-¢\Dùˆ •"ªFT‹¨Q+¢nD㈦Í#ÚEtè1 bHĨˆ ¿GLŒ˜19bjÄŒˆ™³"fG̉˜±(biÄòˆUk#6DlŽØ±#bWÄÞˆ?#D‹8q)âFĈÏ"ÞD¼xñ>âCħˆ¯?"$.¹KåÒºô.“Ë×åï p»\É®TWš+¿«€« ««°«¨«„«¤«”«´«Œ«œ«¢«’«²«Š«ª«¦«®«ž«¾««¡«‰«¹«­«³«§«¿k°k¤k¼k’k²kŠkªkšk†k¶kžk¡k‰ë×J×*×j××Z×××× ×9×× ×M×-×m××=×C×#×c××S× ×k××[×;×{×'×W×7×w××O—4R©ŽÔE#}#C#“"“#³Df‹Ì™?²ld¥È‘õ"›D¶ŒlÙ5²wdÿÈÁ‘##ÇGN‰œ¹ rYä‘Ë#WD®Œ\¹.r}ä†È‘›"·FîˆÜ¹/rä¡È ‘·#ïF>ˆ|ù,òm¤$Ê/***.*)*5*-*TѨÒQ¢*FUŠªU%ªZTͨZQµ£êDÕjÕ8*=ªETç¨nQ=£†GŒ5>jbÔŒ¨eQ‡¢F=zõ>êk”$Zmˆö‹ö¶FDFG;¢C¢Ñ¡ÑaÑ®èèè¸èÄèÑ…¢ËFW®]'º~t£èÑÝ¢§DoŠÞ½+ú¯è#ѧ¢/D_‹¾}7ú^ôÃèGÑ£ŸG¿Ž~ý9ú{´OŒ,F£‰ÑÆèbŒ11a1®˜è˜¸˜Ä˜"1µcêÄÔiÓ0¦QLzL‡˜Þ1}búÆô‹38fHÌð˜‘1£b&ÆL‰™3#ffÌœ˜¹1óbŬŒÙ³%f[ÌΘ]1»cöÅüóWÌ¡˜Ã1GbNÄœŒ9s.æR̵˜[1÷bÅ<‹yó.æcÌ—˜ï1>±òXu¬>Öëk‰µÆÄÆÚc±!±á±±®Ø˜ØÜ±åbkÆ6‰m›Û"¶el«Øv±ÝcÄŽŒ;%vzì¬Ø¹± c—Æ®ˆ]{(öVì§Xsœoœ%Îg‹ŒKŒË—7®D\¥¸>q}ãúÅ Œ78nx܈¸‘qcãÆÅ›77nyÜqâ.Ç=Ž{÷4îEÜ˸Wqïâ>Ä}Œû÷%NïwƇÇGÄ»âcâcããâ“â3Å'ǧƗ‹¯_3¾V|íøºñ ã›Æ§Ç7‹oß>¾k|ïøñÃãÇÆ/‹_¿6~cüÖøƒñ‡âÇ?6þ\üùøKñ7âïÅ?‰ÿ!þ[|@‚-Á™‘5![Bö„œ y $”J¨œÐ9¡{Bï„þ ƒ~OX—p:áYÂó„ ¯Þ%|J$j‰a‰‘‰±‰‰‰¹Û&¶KlŸØ1±kbÏÄ^‰½û%I•8+quâžÄ3‰ç/%^M|˜ø(ñqâÓÄ—‰oß'~IT'$Ù’œIQIÑI1IqIII™“R“r&KªœT=©vR£¤ÆIM’Ò“Z&µMj—Ô>©SR¤~I£’¦%-JZ—´=ioÒ‘¤£IÇ’N$Iºt1éRÒÕ¤ÛI“ž'½Múœô3)8SH¦ðLQ™â2åÈ”3SZ¦Ü™òg*œ©l¦j™ºeê•©_¦A™†ešœi]¦™ždR&«’ÕÉÚdc²%Ù/Ù?909$Ù•œ5¹XrõäæÉ-’[&·IîœÜ+¹wrŸä~Ƀ’‡%O‘<6ybò´äÕÉë“7'oOÞ|<ùDòÉäÓÉç“/'ßO~ü>ùsò÷dIŠ)%&%J”‚)…SЧ”N)“R6¥bJ£”&)é)­RZ§´Ii—Ò)¥[J÷”)½S¦ O‘22eLÊÄ”é)3Rf¦ÌIY”²KB–Ä,™²dÉ’=KŽ,9³äÎR0Kñ,¥²”ÍR/K·,ã³,Ȳ1ËÖ,;³ìͲ?ËÙ,—³ÜÌr?ËÓ,ŠTeª*U“jHõMµ¤ú¥¤:R#R]©‘©1©I©©©YS³¥æLÍ—Z$µIêÔ%©‡R/§>Mý–jÌjÊjÎjÉÕ–ÕžÕ‘54kTÖ„¬Ù²æÏZ?k‹¬²NÊ:-묬ó².ʺ>ëÖ¬»³îÏz4ëý¬Êl1ÙJdkžMš]–]ž]™]›Ý˜Ý”ÝœÝ/{pöÐì³Î><ûèìã³Oʾ û²ì«³o̾=ûù쯲ër Ë1<Lj£rŒË11Ǥ“sLË1'Ç¢krlÏq)ÇÝ/rèr:rfÊ™?g…œ3rÞÏù çÜs>Ïù:盜os~Èù-§4Íž–5­hZµ´fi=Ò–§­H[™¶:m}Úæ´-i[Óv¤íK;”v8íHÚñ´³i—Ó®¤]M»‘v/íIÚ×4C.g®”\ruÈõ{® ¹6çÚ–k®{¹d¹å¹¹U¹u¹M¹Í¹}sûç¶åËíÊ;gîê¹»æî“{Xnú.2ò¾FòKH…ý €¼ÃJÃ>£ªÁ÷–F€ `ø,?€?À Èû¯È;°‚}ì à„Âက  ˆDbäÝYqø[V €Dü†À8ŸL¨%ãš‚kfX³RÑÊʾŽ|R6Ÿœ€4@.Ôr£š›¿»‹²<¨æá*ayäÿù}   ŠŠŠÈg‚KJJJÊÊÈûÂÈ;Ãè»ÃÈJÞ [ ßKI¬*¸V…µ~O@9üÜy×X-|ß#yïb]@=@}Ô Ú€¿¯Œ²†¨6äjCüfÃZø^³&>Méø®3›ãÚµÈÓa‡²–ì½i‚Jy§Zk|ße[ü.ËÖ>íð{þÈwiµöé è‚ïTlíÓ ÐÐÐÐ ÐÐÐÐÐ0000000 000@Þï6¿;b,€¼/~<`àwÀDÀ$ÀdÀÀTô™†Óø;妡:íé\Žê ´gp•°™€Y€Ù€9è5÷çr/òî:òþºy> ‹‹KKË–V ïJôZ‰|øR¶ ÕU\¥l5ª«¹JÙT×p•°µ€u€õòäÝ}}6¶àùVT¶ŠÞõGÔmhoã*aä8;;»Ðk7îïæ^»Q݃ö®¶°ð'à/À~Àü†>‡|ãû8ûÃóã¨Ðõ(hÇQ=ö ®ž@ÿ“hŸä*e§p=ë\ÏÂzppp£/áÞ%}Éç2~ÃeŸ«€k€ëøI£Ë>7·P¿·Ù÷6\cìúÞA~°»¨Þå*e÷0ß=ä7!+e÷Q½ÏÕûXíÚx5òîJòþʇ>OOÏÏ//¯¯ooï__ßß??>’‡>€ È y¯¦ ßé«h:€`&€à ° Ÿzúñwyæ°¸„¾AÜ‹ÚÁ¸ÌÕ`Tm¨Ú¸JÞGl—8!'"º†0;D†vW D\€H܉Â5׌‹á”ÅbX®R‡+y*y‡j‚$ y2²dÑ;W KAŸ®R;3úfæ*eYpME¬¸fC¿ì¸æàÞä°ä=°i’Ü€<€¼€|€ü€¨ÄÝ‚ü½²nV÷ó‚_!ôÉ Q…¼ÞSK•˜»0r²CYT‹pµf,ŠÙŠòLäݸäý¸Å$%%¥¥eeä½àååз"zUDNÞÃKY%T+q•²Ê¨Væ*eUP­ÂUªªªjHj© 6  .  >  !  1   ) Ð ÐcÉ;‰[ #ï'nyšâ»‰IÖ†Ù‚ûú×­¸ß{,( ¡^c¨Õ;iÌöê‚ÞTT‡x¸ãè;™a6Ú©CòÚ Ø»…Þê¡Òb¥.D5Ĩf¿èZèLü~é–’V€ÖøÎé–’¶€v€ö€¨wDµ#ò¶ SÖ ÕN\í„ñQ팼-ÄSÖÕ.\í‚5»¢Úy[¨IY7T»q•ÚÝqíkO\{Izãg´zKúâû»{Kú¡>•ÁÈà{¿ ‚ê®Áø¡˜a({¯ø Ɔ¡:Œ«Ã°æp¬29yO9e#PÁÕüûñFbÀÝïL'ïF…Ÿ2 ˜ø00 0000 0000 00000°°°°?ÉSi–Zð3äܺZ@#Ì ‚Ð+W®vôµó;ª\Cpubv'÷ v(î…r•|‚|Æ"Lpáy$*‘¢Ï^(´£¸JX4  ˆÃx\0"y"HÄìIh'q•²L¸’Ïs¤à'D³Rñ<+*YEŸô ;ÙÐÎÆÕl¨fÇ5ª9qMC%fÊŽÝ,7îäÁ•|b$~§@@A…|Bå7üþ‚ €Š€J€Ê€*€ª€j€ê€è[½j"'Ÿj¡¬ªµ¸JYmTks•²:¨Öá*auõõäÓ0 ñs­MMé€f€æ¨·Àµ%ÿÜL+ô$Ÿi…;MóüT UZcÆÖÈÉemPmÃÕ6˜§-®äS8äs8í¥äÓ´]]Ýp¯;®=p퉻=‘w欪½¸JYoÌÖ›«”õAµW)ë‹+ù¤néÀ@À À`ÀÀPÀ0ÀpÀÀHÀ(ô^£‘ÊÆ :†«”Eu,W)‡ê8®60ð;€|êˆ|îh’t `*``:``&``6``.ÿŒÒ<Œ˜óP#ŸYšçõ &·2ŸûÏçþó½ü‰²°°°XºNKËðPK¤Ë++«P[t]Æì?¤kÐo òàMÙZT×r•²u˜wûŒÕ*ÆÖ£ºž«”mÀ:xµ ÒpÚØ ØØ ØØØÚNô ëfn¶ ã¶‚ï.Ôȧ¹vñ]á³]ne7úoÃÏ{ þ»½üwcÕ=¨ïá»äóa{¥ûâ'ÅöJ÷ŽŽŽŽNNNaìŸw£ƒrsÿÓ¸»²æ~Ä"ŸFs+Ç!ÛIGúIµc¨F÷öƒ~œÕ!9ˆ»Þü„ù|Û)法c"Ÿýu£NŠz#•Üõ‰BêÇOÊeìZèÌÝóü4Ýé9Àyäp½ˆÚ%ä—ø'î.¡×e´/sÕÍ®°ý+,ú Ëx%ÃgöÜ‘WD¹ïK:‰ ÊU8]\ÜÜÜÜÜAý.ªw‘ß²{¨Þãê=Œ¿ê}ä7!ž²¨>àê¬ùÕ‡ÈÉg ){„ê#®>Â~£ú˜«Q}‚ê®’Ï(’O)>•>¼¼¼¼¼aŸ`|!}‹»ä“ŒoQ{ ü-ß}É?ã((ï0ã+ÐÞqÿw^þTyUßs?Ê> ú«nö‘³OÒÏpúø øøøø ð‘]"#ªùwÐ)“¢*å*a_€“ʸ&C|VSÆw…OnRE.#•äȉJ™UW˜ñ0%ϭ乕^¹•2~*T%Ó´@0ŒÀ ðX~€‚6€à„œ€P@ p"Q€h@ ˆ$I€L€d@ 3  ÈÈ ÈÈ ÈÈ(((( (( ŸW-.+(‰Ÿ\-.+ (( ø ír¸K×Ò —Cµ<Úå¹ZÕ ˜…®¥!¾ªÑ®ÈÕŠ¨VÂÊt- 5+¡ZíÊ\­Œj´«pµ ªUÑ®ÊÕª¨VÞªñΪ¡Zíê\­Žj ì©ï¬ª5Ñ®ÉUÂjjêêêêÊÁ©1   ) Ð ÐÐÐÐ ÐÐÐÐÐÐÐÐ ÐÐÐÐ ÐÐóõÄ tM‡Ü=Qí…v/®ÖÐÐÐÐ000££ÿ`5Õ!háêT‡¢=”«CQ†ö0®Cu8Úù:Õhà*ù3ù$óHÙhÀÀXÀ8ÀxÀ´Ç]ºŽýwT'¢=‘«Q„Yè:â'¡:íÉ\%l `*``:``&``6FÍÁÎèJ>e=Õ¹hÏåê\Tçaîy¼Â´÷q•°?öŽ`ÔQô?Ê£Ž¢z íc\=†êq´sõ8ª'Ð>ÁÕ²“p:8 88 88¸€öEÜ¥ëYÐ/¢z íK\½„1—1]ÏCüeT¯ }…«W0ÃU´ézj^EõÚ׸zW¸Î5ÊNC¿nFt’›*70êߥì&ª7¹z+ÞÂÉéz2ÜBõ6Ú·¹zËÌ@×s ÞAõ.Úw¹zWvN÷OOÑ~†»t}ú3TŸ£ýœ«„½¼¼¼¼¼¼¼Ç|П®™ýTöí\ýˆ>¡ý‰Wø„êg´?sõ3fø‚öžá ª_ÑþÊÕ¯8ã7´¿áܘýPöÕï\ýŽêTpõª?QýÉÕŸä+rä€ È € B®Æº*@W£ªA[ÃU´@0ŒÀ ðÅܬFW9ÄYPõCÛ«~XÁsûó þ¨ZѶrÕŠ06€g@5í@®ºYÆËa ÔੈÉ1³JäÌ#ƒ¹W°—°Ü';ÀÁo§°ÉCa€pDzÐ5ŒÙárÚ.®º0&íH®F¢…vW ‹Äbq€x@ „ž™pMÆ5×̘- ò,<[TSÑNåj*v™í¬\ÍŠj6´³q•²ì¸æÀ5'®iò\pÊ ÈÈ ÈÈ((ˆ¼îÐ5?è…P-Œva®Fµf¢k~ˆ/‚jQ´‹rµ(Ö)†•éšôb¨G»8W‹c†h—àj TK¢]’«nV k僾J¡–ºt³|ØqA¦«4Α´ÒÜ«´—?UÊàZ×ßp%ßXB¾³¤¼¼"  2   *  :  &  6  . úÕÇ t%ßyRÕh7àjÌ×+ѵ ³«É¡Ýˆ«0CcŒmÌ34Fµ ÚM¸êfM1¾2ð¦ü{XÜLøF–¦X1}ÓyÅtT›¡ÝŒ«Íxîæ¨öE»/WûâüýÐîÇ»è‡j´ûs•|³ ùn›òA€Á€!€¡€a€áÈGà]ɷߌ@u$Ú#¹:ÕQ˜‰®C!~ª£ÑÍUÂÆÆÆÆ&~LLÂ¨ÉØ]‡0{¨| ÚS¸:Õ©˜{*¯0ÕihOãê4T§cÏÓyçÓQö ®Î@u&֙ɫÍDuÚ³¸:K>Nssóó ‹/ƺ.}1ªKÐ^ÂÕ%»mºÒo"ê2´—quæþ«Òu³É—£½œ«Ë1jvI׹̞'_‰öJ®®äVaü|èkßu³ùرàEª¬æ‘«¹×j/ª¶†û¯á^k¼üÉ÷)‘oTZ+_ØØØØ Ø‚|+îЕ|çÒVT·¡½«Û0f;f£+ùv¦í¨î@{Ww`îX•®›˜½E¾ í]\ÝÅ+ìÆxò½O»ù·@íöú>¨Ý¼Ê̱øîµÇ˯´+mdŒzíõòw+û8#ß7E¾qê/ùÀAÀ!ÀaÀÀQäÇp‡®ä;©Ž¡zíã\=Ž1'0]É·W@õ$Ú'¹zÕS{Šg8…êi´OsÕÍÎ`<ù^¬3ü[²Îx}_ÖÌr'¢ë!f‘ŸCûWÏaîó¸^Àõ"®—Ðã0d»Ì«_æ•.{Õ$ßÈE¾“ëŠüà:àà&àà6àà.àà>àà!àà1ú<ÁhºÞdömùS´Ÿrõ)Ö¹ìû°ë"v|„½[Pë²ÛPý1²ë Pv ´{,’D܃®@GÔ‹d¹‹ñE>w@{Äão¢rb„Ü7P¹/ªqâî`žG¢.IG<3Qî`µû¿˜DØñŒyŽGô9râAÙ T_p•²—¨¾ä*e¯P}ÅÕWxœ^cׯù|¯Q}ƒö®’oY#ß³öVþððð ðððð ðððà£x+—¤ â#Shº~böx¹Al9W £ßç¦PJ_!›w¿Bnßý Õ¾³=ª(¹¿’û+½ü©òj©øž›ý3tA”Oà/Uö¢¢ö¿aNÅóSí~÷ÜwÑ™„ìû(¨B2ÁÞÜ>!ê+FI*ÞéQ¢¨ò¿×ÎGáî’XnñtÞ“;â˜/r5v æ½ªQÕ ­á*ùö<­BÐã÷èiF€ `ø,?€?À ‚ÁÀpBN@( ޹#0Kr ä¢Ì…ª‹«”E¢ÉUÊ¢Pâ*eѨFs•²Tc¸JY,ª±\¥,Õ8®H$’™É€ùAò-‚YYÙÙ99i€\€Ü€<€¼€|€ü€€‚è_3Е|a!T £]˜«”Á E“o)¤¬(ªE¹JY1T‹q•²â¨ç*e%°ÓÈÉ· RVÕ’\¥¬ª¥¸JYiTKsµ4NQí2|Š2¨–E»,WÉ7+þ¦((ß±ø›¢"  2   *  :  &  6  .  >  !  1  æ®ùš"+܌蕡FS¬X²5ÅúU¡FSì¦&ÓʃVi•ð{ «‹ö*A²_‹)´buè¶¶‡R•}$ÍS£jˆòT„ÌU1smQ—Â7Nº•ªX¿Æ/&vÿ>ÿ¯LK¼æ_â5ÿ>ÿ>ÿ¯ù—xÍ¿Äkþ%^ó/ñš‰×üÞ]gœ‰b)œ–þ,¬¬¬¬F{ zÐuì­Au-Úk¹ºÕu˜‰®+ Ç:T×£½ž«ëQÝ€éJ¾yªÑÞÈÕXá°6±>6±›Xü&p[ë ŽÛÚ™6±yÖaÔfÑDÄ—zlæ]’lëD*퇪ëE„Êž9¨N²¯òˆòÜßÌfÚÌfÚÌfò̼Ùc¦Í3mþ?3Ó8mlÃo¶Þ¢ØØ ØØ ØØ Øøð`?àà ÆB¯CÈ÷€e‡Q=ÌUÊŽ z„«”Eõ(Wb/ÇP=†|Ô¦ì8ªÇ¹JÙ TOp•²“¨žäêIœõª§“oñ¦ì4ª§¹JÙTÏp•²³¨žåêY<.çP=‡Çp³ÿRœGõ>>>¾¾¾¾~~bÜ;ðõQ ß·ïfô›÷?¢òâ¿!{Ù¾3¯oŒ½í ÓHĨäÞ£ßßÿ¿ÁŸúÌŸð;ýŸwE|¾C_D¡]}†<ßYU>až¢.?aÜW‘ò ³üüÅ$‚¯ØƒÖ–p_‰WQHw?½ƒ,ߘÉ'ÁÞ¾±Ý×¼ÉO÷ÞcôW‘x~‰×lÞÕ'Œú)R„c$ñš_â5¿÷$çww#å¾R¯(¢~¿#{~ {‹Y¤Ø?é]Ê/íOx¹ {ï±ò¼$¥^“H½æ—ò®H¯?X”çQ“zÍ/õšß{’Œó{ç•yõ'óêOæU[æU[ö¯µÉ/Yß²+•@ д@0ŒÀ ðX~çŠ?r_Ð(³¢jå*e¨p•²@T¹ˆ½aõ äz¨MY0ªÁ\¥Ì†ª«”ÙQµsÕŽ³’ßìpð_ðp3á·<xôЉ‡fu`_Æ”°kd‰!¹Ý{ü=#NB}Ô Ðß|Ôe„£iaêFÈcaQT!¿+bfÐ.é/˜DŠóúýbÁWì¡ÁŒ!|Æìø…`g¤£>mŸ6„OkÀ¾ýØžg3‰âÄG$Ä누xÍâuŒB¼ŽQˆ×ü!^ó‡üëüä7Yȯ²Ð_fq*Ãh¹pD-9ùÝÊ¢Ð+Š«„EbP‰Å5#ã¸eñÏU‰¨$)3Á)‘kf@´RqÍŠZVä™a‡²lè•«ÙX|ve/–“¿Tn¥)s‰Xn8åAäÅߤɭÌV\ ¢Vy>Ø¡¬zâ*e…a-(ŠV1ô)Æ}(+ŽùŠs•²°–_Á!¿ƒC §´ò7@9´ÊãZµ ÈÉ/åPV½*rµ"‹'¿ “‘UñøÁ"¿²ãfÕñwè¯îµ¬µ”u¯£¬‹¬6¬µ9§*ñ¡J=_ÏÉn}þ;>uaW°jAl}–©>«S_”³¾¨ª8Æ¥®²VnÀ+¹YCe#85F4Áµ)û !Ê›+[ K‡5sAm+ñlÁâ[2µ%³›¡§`5…È–,oºÈ‹ZnÏfÊVñ­”­áÔÑÖv€öhuÀµ#j‘·ƒÊ:¡W'®ÖЕ®¸vÃÈn܇²îÙ«„õôD…üžùE%ú«Jdík?åÆ("ëkΩJ|¨2ˆÅÆs²;˜)„âùÕ¦Á,Ó`Vg°(ç`QÕÁ¿ô$d ‚ëP¬= ×áÊp‰ëhÀ´ÆÂ:0­ °þ˜ˆÖ$\'£ÇdäãÀ²)3…«”MEß©\¥lúNã*aÓ3P™ ë,Àl´æà:óÌå”ÍÃ<ó¸JÙ|ôÏUÊ ï®¶°•Ű.,Ek™òü%,úkX(WV¡µÖ5€µh­ƒu=`ZqÝ„›“_Тl3Ælæ*e[Ðw W)ÛŠ¾[¹º«oC›®+™½R¹íí\¥lö´ùzÎvb·;¹JÙ.ôÝÅUÊv£ïn®îÆö ½‡WÛƒ=ìE{/Wɯ„‘ß £¿¶O¹p­ƒÈ!§ë~fïWFû0WÝìËtDôëcÑ"±GXôQäQn!ê×… ‚r@yõ£<ê(æ<†ö1®ºÙq–ç¸G¾ã¬£ã¬£ã¢ŽŽ‹::.êè¸WGD98‰;§`= 8ƒÖYå98G\€õ"àZ—‘]AN׋̾¨¼ŠöU®ºÙ5–I8'Úe´Hì5}MyM”[ˆºÂu!ƒ \ÜÀ›°ÞÜFëÏr—ÅÝõˆ¿Ë:¸Ë:¸+êநƒ»¢îzu@³ÜCýº‡9ï£}Ÿ«äë("á¯×=P>Aë)®Ï`}¦|Åø+åkdÏa}ι ¾€õó}ÁÕ—°¾äœªÄ‡*o`} x‡Ö{ÖÇ<'¾˜Bøn=ƒªXX‡DÝ|õ+ŽñÌò‘WùèQå£(â#«ò‘Uù(ªòQTå£W•8Õ'œöÕWÌ~§üŒêg®RöŽÄÌó´/¼;Ê£ïk¶÷NßßñW¿*¢å£"ë°$*º+œÍGE,²'U‘(‰J&òs)–2Ý*?•ÔGÊ£hNêíÎ%DË™·œÙ$‹œW‘ó¾ä*…G‚-ôâ¶Åý¸U«£ÕqgPüÔù‰¿êèίT©<|ÝñTý<ÕpÒ´r=2=r-c€`˜qǽ|¹eôµ '¿:I™ª~\¥Ìsù#7qfEÕÊU€ @0Öµá¾W§ÌŽuì¼eT\¥,ë„ð:”9Qur•°P@ Õ]¸ïâÕ]ªH8E¢1Èc‘Å"f,F‡kÜÉ^ù¹eзòÜAYAT r•²B˜«ò¼œFµ0W ³nЍвî–S¤ÿ»Ñ‹yœÓÝb,:7ÔÊÏ=òzX¤çüQDqû¥¸ªóXN‘þo%áT P–ð²ÈÊ"/ÍXÕo¸–CÏòì×c7«À2TEW`1Xž ,ÿoL£~¿Aî ¢Œâ d¯<«(Ú©ÈêU嬤ªì+heñüß=‰]EU•Ŭ´Hÿ7jø»ºÕT55‘×BV‹ÿÞ.aµuuõp§>zÕç^”5@ßÈkCe QmÈUÊa®FÈërÖÕÆ\%¬  ) Ð ë6Çýæ¼:e-0¶¥¬%ª-¹JY+ì©֨¶æ*ammíí±zÜïÀ«wPu„S'@g@ä]‘uEÞ™±.ªn¸vGÏÈ{p,®'WzŠ¢{²˜ž,OO–¿Ó¨_7ÈÝS”Qœì ñ½pí9û ïÃ=ݬ/먯(K_ÖG_ÖG_Ú}EµûŠ:ìëÕQúú¢÷ ôĽ©Ãi`(`òáȆ#ÊØÀHÀ(Àh܃^c¸ecÑw,òAÙ8TÇq•²ñ˜k<òQœM@uW'°n~WMdÝ l¨Hÿw¢Oò8§»“X4ù-ë1Üc”‡EzãE·QÈo`So éÿæ1?{ªj:`ò™ÈfŠ~W›Ø³pžsÏán6—e˜+ŠžËbæ²Æ÷©ö#Û ën¦îæêX÷¨þdüOÕ_Èöº—©{™J"‰B8=€uðêXO™~u· 2Tb»Aôæ³íï½ÌgúàÛQ¡¸ͺçðTw³9ˆj ñû`Ç3³çÞ_¢l$î›äÐ?Lò«\ÿ·&!—Ìaѹpif•heÁ¢³z´ÎaQwöê#p: 88ŽüZ'°“€S€Ó€3¸s½Îr/ÊΡï9ä'!‚²ó¨žç*e0ßä§!+eQ½ÈUÂ..®®bÝk¸W§ì:Ö¹ÎëPvÕ\¥ì&Ö¹ÉëPv Õ[\%ì6àà.àV¿û÷yõûªpzxxŒü ZO?ÚOq}†^Ï‘?çÏYÜ ®¼E¿`1/Xž,ÿS¦ 9Üü)Ôg ¶ÿ×W˜ó5ò×Üó5ëã WÞˆ²¼a}¼a}¼õñÆ£öQWo¼ú Ê[À;À{ÀÌóý>rïªOpú øøŠüZ߰Ÿ5Ù‘¨‰—D-xQ&U_)òïA™ UW)“«I>9òŸ•2ª ®*°ŽW•šô¨F®æ•ÝLƒû? Nƒ>ߣ»ßqÇGíV´èÿ4-÷×zùÓ=®zŒ0 7pOƒÚ'À ðEnAË‚Ü µýpõG/+r+÷°²¸®ˆ¢XLËÀòû1úùAîQFq²G•@@ `ÃQt>“åÉÇòçfšÃÍsCqb ûùq-€9 "/È= ²> q¥(K!ÖG!6I!ÖG¦¹kuUÈ«š§0®EønQu18””D^ ­RÈK€FXi@@YÀo¸S½Êq/ÊÊ£oyä¥!‚² ¨Và*e1_Eäe!+e•P­ÄUÊ*ãZ{¬Š¼*¯LY5ì°¯AYuT«s•²8E ^ƒ²š¨Öä*eµp­•ë ¯Ã+×Q×…S=@}@ä Ñjˆ¼>hÔn„kcôj‚¼ ÷hÂâšr¥©(º)‹iÊò4eù1MÈáæ Ž8±›°<é¸6ã»ÍYí\i!ŠlÁj·`Ý·`µ3Í]¯…¨“^µ©Ò×V˜³5òÖܳµº œÚÚÚ#ï€Väí@£vGX;ª»2ÞUÝY'X;1µW;ÃÚYÝñnêȺÀÚ…©]˜J"‰Bâ¨WO¬Û“WïÉzê…ç]Á»ë¯#äî¥îÍöÉNOæE»îu†JÔ§3‹$½S/²'äk‹ÞžÙ;±Þ{² BÍ.8gOQm¡’ÐCï_tAöº‹²‘¸Þ|¦Þÿ0Ó¯²¹gêÍfêí1So™zÿ/ÍÔ]Ý/Ó>˜¹+³»«û¢Ú—«nÖ³’ýø±èÇ+ ùû©ûÃi` `žF…®AŒêX‡¨G0>B= ÙPX‡2u(W‡Á:L=’ñ‘êÑȆÃ:œ©Ã™J"‰Bâ¨×¬;†W#êc,ëløŽA‹t;²å^# Ù+Š´1êˆÆb!#^Ô‚ÓŒf5èdcE»k“8²ëîgv42C=ê—±7ZÇ»ã!<³¸óAhCFº‡G2æ9¿{o 4ÁžÊ•©¢½©7U=µ©êi,a3Db>M=Ý#±é>žŽ9©âŽ›Á2Ïdž3y_3ճة9Ó#·°7•E¸{v<»pçšÅêÌú›:³þ¶Î¬ÿFéêÙ¬ÎlEvg‹êÌæÑÓ¸7Í5ùÎÓ\À<À|ä ÐZ€|h‚½+ E{ 1n¡z j Õ‹X–ˆ"Ä|‘z±GbÓ}½sRÅ·D³”U!qKyK¹ɸT俈{º«.ÍÐÑÒ_ôä™q™WÆeê?à´°°ù*´V!_a«kkëp=î¯ç^”m@ß ÈWCeQÝÈUÊ6a¾MÈ×BVÊ6£º™«„mlllÇê;p¯NÙN¬³“סlª»¸JÙn¬³›×¡lª{¸JØ^À>ÀŸ€¿°ú~ÜßÏ«ïW€ÓAÀ!ÀaäGÐ:‚üh„œÀý“¸’{Qv }O!? ”Fõ4W);ƒùÎ ?Y);‹êY®Rv×óØãäxeÊ.bgye—P½ÄUÊ.ã4—y?”]Aõ W)»Šë5¬|ùu^ùºúœnnn#¿ƒÖä·@£ö]\ï¡×}ä÷¹Ç}÷€+DÑXÌ–çË—iÔï.ä~ Ê(Î@ö„ø‡¸>œ‘?æžnö„uôD”å ëã ë㉨'}<õñÄ«¢<<<¼À‰ï’Ê.%úG€–‰ûgòò§{ɸ¦`Df䙹gfM8¥²²!²£B׬ÌΦÉkNôLCžÆ=ÒXD.®äEçb1¹X†\¬JN¦Q¿lGÈ(΃ûfÓäÆ5æÌ‹Ùiļª³ýÚàQ—ùÔa‘¤wêEö„|ÕÐÛ3{mÖ{#–A¨Yçl$ª-Tzhò‹.êa.ϸ&|¦&ÿ0Ó¯²¹gjÂfjâ1S™šü/ÍÔ@Ó/Ó¦x}ªÇìštTÓ¹šŽ—v3¼ì›¡ZŸÙ 5ÍQmÎÕæšpj hhhƒ ][1»µ¦-¬m5ï¨é‚¬¬í˜ÚŽ«íam¯éÄx'Mgd`íÀÔL%‘D!¼ VìŠû]yõ®¢>º±Î:ƒoW´ˆÚjtã^1s‘B<ÚOMð£yZá~'× #:Â~7Ñ ÝD³»3‘8ïš4Þ­º» šgï0c×_vœ±KÒSwŒíĉîî5wô'õà^=xd/ÿšžpêè 胼/Z}‘÷Úý`í§Äø ÍdýaíÏÔþ\ëÍ`Æk†"ë@¦d*‰$ ‰£^ðî0^}ëi8žïᬿ~{¸fÛ';Øíºt4*QŸ,’ôN½Èž¯z{fïÏzÆ25âœÃDµ…JB#~ÑÙ"ÊFâFð™FüÃL¿Êæži›i„ÇL#WHgD¹— õ&yo¡òÕ»‚X!ÇêdzÇçº >Xù¾(Š(71÷_L"ìxÆÝ÷Ü÷½WÔ{œŸtòç¿‘ïq²[ÀßóùßóùoaL¹‚ÓÞÁ#òÞkþ÷^Ó¾÷:"ï½æï5ÿ{¯ù½'É8?çvù÷úÕhäêGÞÃ'Þß'^á“W­OšÏpúø ø†øŽ ]¿2ûà'ÀGûY#Ñ’©–øJµ‚a?42TéúÔÓ­ dÔ¿²<$¿Dë½Ov„ ž™Ôl&5›Iý3©=fRÿGgú¡Ñ`% ¿¤5¨jÑÖrU‹óéÐÖñKZ‡ªm=Wõ|>ëÌàÑ¡+;Vѱ2hÇÊàq¬ ¿8V4"ã±òx+AÍx¬<½½•¸+!ƒg&#›ÉÈf2þÃLF™ŒÿÑ™L3À`Áš~åÇc óX€@ô Âý î¤ †“ `8‡ AngÌ „Âq'½"¸Wz¹P¥«<]¨F¢ÉÕHÌ…6]C!sªÑhGs5+8ǰî„s¢E ErŰú1¬{j±<ÚUc¸yOR%÷…fG•zÆŠŽõt«B'u;ËCò‡ÿbŸì<3Ų™bÙL±ÿ0S¬ÇL±ÿÑ™œÚ8ôŠã=Å¡vV⮄ ž™2±™2±™2ýÃL™¥Y•Ò¬JiQ•Ò¢*¥=ª”öªB”2€²€ßå0Oyô+Ͻ «¨¨¨Œ^Up¿ ÷ª¢­ §j€ê€Èk"«‰¼:cµµuuq§zÕã^Ô®kÌ×yCîAíF¸6F&È›p&,sS®4åoʲ6eš²2.TqóF;ÄÓ­ÔÓ¦ót‘O:«’Ϊ¤‹ª¤‹ª¤{TI÷ª’ŽGªf£kmf×Õ6G»9W›ct`-°Z-ÆhF7«Þuø^MmK¾ãfT%´d—…{¯>³ˆWæ!Ì#ÎP_´[SÛŠï´ù´bUZ±*­<ª´Ui%ªÒÊ«J+¼vµÆlt­3¶Fµ Úm¸Ú†¶˜‡¶ÔêyOR¥;î DíŒÙ{2Ͼ¢£Ñ#ƒ*t’QïÀòtù›}¢ <3õe3õe3õý‡™úzÌÔ÷?:S7m?¬Ô_ÒýPív®öǹ =€_ÒPˆö@®äó b òèp;VƒØ±$:Vƒ´ƒ=ŽÕ c5èÇŠFd‡GOg>Ôš yOReî D„Ùg0Ï9¢£1=ƒ*t’QŸÀòLþ›}¢ <3Ía3Ía3Íù‡™æxÌ4ç?:ÓЧjçòËy.q3!v.úO>ûÏã^ó¼ü½•ù¬SbOcíoþ/{Ï;$]ÏçõIÿóE×·ù¢ëé|~ägqî>¶³D•„:BnOu¦(^|)ÌÿÅeðëîÅ»“´ °û|†¨.D{!WòIaN’mϾȫËEÚÅpZX X†üd _ÊØrÀ ÀJÀ*ÜY^«¹akkëëqgzmà^„mlllÁ­èµ•{Q¶ 3nC¾òR¶Õí\¥lVÜ|g;QÝÉUÊva†]<e»QÝÍUÊö`†=<e{QÝËÕ½xTö¡MוÌ^¥ýí?¹ú'ͿЦër8²¡ºíý\¥ì§È7svÕƒ\¥ìßCÈ7ÂQ¦ì0ª‡¹JÙÌp„g ì(ªG¹JÙ1ÌpŒg ì8ªÇ¹z'>ö >ñ TO¢}’«'qâShŸâŸBõ4Ú§¹zZ{NgççP¡ë9f_\\\Á«è{•{v pppwn¡×-îEØmÀÀ]À=ܹ^÷¹e0ãä× /eQ}ÈUÊaÅGÈopöÕÇ\¥ì fxÂ3PöÕ§\¥ìfxÆ3PöÕç\}ŽGçNA×Kp¤^ úí—\}‰GóÚt½Gôª¯Ñ~ÍÕ×Xá"ĽáÇÆÍ.b¾+¨\‚žï »ýÜCvÊÎÃîM¦]‚ˆkÐõîu²\‡}·7É{ •»¬©E&½Ë|¨BŽÓmV—vL¢nsÒåmÌ"VHÔ Öç$ÂŽg Ù}Ë}ßzE½ÅùIooqþkÿ'»Í4:ÿ[>ÿu¬q—)qÚ"oñüo½¦}ëuDÞzÍÿÖkþ·^ó{O’q~:Ù;ÌþŽwöÕ÷h¿çê{œýÚx?PýˆöG®~Ô~‚ÓgÀÀWäß}Cþ…±ï€€Ÿّ舗D'xöC+E•®?À[Šª mW û®•£M×ïUŽªmWXá;Ä)u´;áœh’ÕU²h¥Žv/Õ®âÑrÝ£–T'㞤#‰Nª“󈯘ÝGGT™(Ï–Y&òuw’QÿÂòüB.y†®„ ž™Tl&›Iõ3© ìø$ˆŽO‚.Ñãø$xŸ„_‘ñøy< f<>žÞÞÇGÜ•Á3S"›)‘Í”ø3%zÌ”ø)P—„•’ø­; ÕLhgâj&œ+íd~ëNF5í®¦è2Ã) y6dÙ§2–†;¹Ð+÷¢vn\ó`¾¼ÈórjçÃ5?z@^€{`™ r¥ (A–µ ËPu—q¡Š›çóØ!žn%—®ß)$ò)ĪbU ‰ªU)äQ¥Wš'­Â˜!;cÔËͲƒON¶— VN]î_„{ñò/¦(ÊwŠŠz(ÊŽoQvyeSäašp¼Ý<7ó2äùæÒã;ÅD>ÅX•b¬J1Q•b¢*Å<ªóªR ¯UÅQ§kNf§éJ ]‚«%ðÚXmº’#RÕRh—âj)]i8•”ü†(‡ ]Ë2»<  " îTFßÊÜ‹ÚUp­Šùª!¯Æ=¨]×èQyMîQ“e®Å•Z¢üµXL-V©ë  Ó„n^:g ¶°_YW›ïÔùÔfUj³*µEUj‹ªÔö¨RÛ«Jm^⮄ ž™z²™z²™zþÃL==fêù©­®zõâ=õBµ7Ú½¹ÚïUú MW’±ª}ÑîËÕ¾º~pꈄ ]0{0``(`î GßáÜk8îŒ@•®ƒ™=L7í‘\‰™F¡M×!̪öh®ŽÆ C!j ëK8'Úp´HÆ1,ç6ÃHäcyôæC­QWð$U†ã¾AÔÁ˜}$ó+:#2¨B'õ,Ï¿Ù'ªÁ3ÓX6ÓX6ÓØ˜i¬ÇLcÿ£3 ÔÃu<^Ÿ& ŸÀã¨ý;®ÑcòIÜÃÍ„ “Y7ÄÎ,ÚÃä_ö3óadžZƒñŽFK¸¦M]'‹Žîä_¿É^] ¹=Uw Ï#=ùÇù×Ý‹w‡è¦`®)¼ë)¨NE{*W§â­sÚÓøTÓPŽöt®N×Í€ÓLÀ,ÀläsÍA>‹±¹€y€ù€¸¿÷r¯…¨.‚u‘n%ã+uk-†u1Ssu ¬Kt«_¥[l)¬K™º”«Ë`]Æ2,ãþ€õ¦þÁÕå°.g–ó +`]ÁÔL%‘D!œÆ®ÅyÖò©[XØØˆ^›p÷ÚÄŽÛf<_ 97³c¸fجÛÂöÉÎZæ5‹í/†ÙŸ¥,’9êEö„|3ÑÛ3ûbvŒÖ² T¥Qk¸:STIèaË/ºX‰¹<ã¶ð™¶üÃL¿Êæži ›i‹ÇL[ÓVÑL[uÛ¯ŠrœÁ¾Ï£B2ž€I2rG«Ï ^9ó,Wy,éë0\2ÇDYˆ¯Ð±Ar]†cpÍc^²+®Cg%KPÜõ§}‘a} Õ©zœõ$tO/a!·pk£*Éí}¤Õ„ë!ÑŽ²ë=Éyõo=iNzg¬$LàYé$ëÕ]é»Í^ä×Ð_y ·|ázúO÷Ç=útO ä ýŠ»Ë˜ã»qwp1íG¸íˆ/Cï{±§ø2Íè)¾·ÉؽçQÙÏo¯Ç=úÏ(Üe¼UÿÝ=“à÷ëû¢ŒY~}_"®áãïïiþî>ê^ó¯ãÔäPF|¯ó[¢p+¼ÎýopÿÜÿ†—ÿ ¼Ï"÷^7‘‘{®›x¿AîA(#÷7yŽ›<ïM~Ÿ$ÜKÝä÷8Â}[î{nzõp“ßv…Û­[nß7½Soòc*-·"É›^×¼Œ×¸›º[pº ¸¸‹ü²{Èï0vððð÷ãþcîõÕû°û„Å çD{ŒÙ{†Ùžè^°ZOtOA{!Š~¡{)²žéž3χ,õÉÔûЗ >gYï°ú‚ö2C'b]ð&yþbŸöñ”exê‘é)Îô”Íôôogzš!×z¦GØñm¶>dö#ÖÕs®>ǹh}º’Œ/P¥u^rUèýËüŠ_ ^é^³½gàõ*Ã4t—^Ò¯toymÚ± ¸)ñû·³“Ý7<&ãÑïzOïÝ_?ϯټ¯ÿfÞ×ÿ0/Éã9¯ xÎûæÿмoؼoø¼î=2ï› Õèî}^¡Öÿ•yß²yßþͼ«‰çý¯]ŸÿïÌKnñïØýÃ;V“ø¼Ó½ç ÖÈõs¼óèŽætGPõ™HuOúÌË›Þó=ó¨J{Ïè›q"Ï}2É{6Éûÿò$ïÿÏMòNŸŸ‘Aöù'ƾ¾¾~àþOÜÿɽ~¢úv}ô4^8'ÚO´ÈžTO²ùèzZËG/M¡wGË=,©^Æ<¿³<Ä_Îã¿B_‚*cê'VŸjB>w'b]ð&y¾ÿbŸö!a$™$8“„Í$ùÛ™$rý§gú¡“¢]¿3û‡Žv%㪠璣MW’QŽ*­£àªgïJQÊ_vDÕŸ:2Ÿ’g!=ºýÝÖîG‚'®Â„J£ëÖH©O‡;RèJ\ÎA¿2ñöö‘ÿmœ0¹go¯yvöï¶ûˆþ*›ç5€ì|å¿>(3ÜÒ¼‰§ç¯®ož“»¯µ»þ÷þÄ´O¢¨x¿¶¼/C•G¯BVÕ/.!Õ/. Õ?]•^ ' @‹çZ½¹^oÂsƒÞŒçF½/œؾèka«zÐsšAàd˜?œ¬ˆ} œSéCðÊÇë'ê§ =‹;”×OÒOÅ=zN÷(¯Ÿ¬Ÿ†{ôœîQNó•F‘•úLÃ.¦³u†~&ë†òY˜o:ª´W·îîÙ­ö÷™Æ3•Nÿo™ˆçLÆ/aÚnOñþl8ÍÌÅs²ÎÌGe¾~žÏÃó9Ȩ6O¿P¿ýáùÜY¬_Æãµ„Ù$~!·Ýy2¯¥¨Ó<Ä"ç4Ò!xÍÕÿÁÖåúlò•ØÏ¨Òܺ»¦[› ìï3Íc*íþß2ÏŒ ^µݞâýUpZ Xƒçk­…u-cë˜NÙÿÇÞQ€KQuwbggw'Ÿ **‚Ý¢XØb¢ˆ Ø "‚(i£Ø-¢"ŠÝØŠÝŠ…˜(`aûÏ­¹9³³û‚ÇÏû曹§ï9çž;»¦aœ`2ÿ^L¿×¹á P§Çz€6Ýy@šîÜiÓ F²¥û"9ÖÒý‰–@H–X¦½"™£ë¡è~¶àùHt? ):ÁöØ>!D{ÔyÜy Ê¢ö!ÈAð£ÎÎÓ‡ZÄCð£Î“Î ÈC-â!ÙO¤žHfôâü|Öy{ƒà硽g ùJéÔgJ{8‚’-=Š© ZjK@ò9 )ÂC8•dù/D׋ÑýlÁóåè~R^qfÂöeؾ!D{ÙyÕyʽÛ!çuç­Xïµ{ã@ÿÕ§v^ÅRoB:²0Ð"MªA¤^rÞÆÏwœw1ÁïA¿Þ†TÔ'¥Ó>)í¥J¶ô ¦¾$h©-Éw1D¤áT’å¿]D÷‡°EÏ0ü‘ó1Æg9Ÿaèçs }ê|Aˆžˆž_@è le6´>Û™ã_bø#F½üè}Þ2„‡p*Éò¿Š®¯£ûØ¢ç·þÖùãß;syJìg>#x?@. þ9Dv>ìçÇXžHxä-p~ŽñŸ0ü-£>þMÔ~ïo ÂC8•dù¿DׯÑýlƒÐÂè¹C¿c:‚~Ã8Ádþ˜þ‡ó'ÃA þëÚ_Î?‚Ô_ÎßöÔH¶ôg$ÇZú;ÑèÉË´W$óotýÝ9´à™sµè©aHÇtå0N0‘ Ë Ljµ ×ä覛‡8¡ÜŠ®BtÛ°Ïbt— ¥è–a[‚mRìD· y®ëÁÖmBˆæGwy¾Â6€mR¸uî2ÐjKDh¾»l]Ü–"ˆÐЏK»ËA؉èFþ,aË`ôÍâ ß:~S¼#t`OAlÄ ìŠ¶è‹6‹XёƲ ÏÁ¶xÍ‹LG9•éEìòNÖEyC4 EÚ"ä, yÈ764B6*¶oÙåòø¹‚»–@ðÊp¬—‡T”{J§qRšAÉ–\Lµ-µ¥Vø¹bl Á+ÃZk…-q¡t:&”fGP²¥SmAKm H®„!"Ex§’"¿5¹•`köM¬ubŸ½]U–6ˆ® £{#Ø‚çÆÑ½ ¤lìn ÛM`»!¤ x³èÞò6w·€íf°ÝBˆ¶etw¼-Ý­`Û¶B ‚·t·v·…öP»qÚænWØvÁíÆ…À›Dð–î6îöÞ,¢#ùÓ5¶Å8è{ký²|à7åo#Ü Z§6AÌÀ.²…´·cxÀFoc¬'ö¹1Öá}£yáíМÊôqÿÈ;Yå e Ѐi7Ži›`¿ØÐèøx¨¯²TrüìæîŒ%¼ ë åžÒiœ”¶Q%[ÚS7´Ô–vÄÏbKÞÖáŽØJ§cBiEP²¥.˜º‘ ¥¶$wÆ‘"<„SI‘¿+Ûa»lw‹G È œhP ¥mŸ›D”ÝK›Tei÷èÚ#º»Ã<÷Œî½ eOwoØîÛ= e/L¼}Ü}1BHá{b*z¡îçî9:€á‹x·'×ß~eH#ý"Ê1zÀrö‡=ïc#=°=!x/ÜéaϘl[Èê…Ü;/y æÈÉùº½¹qÂÒî±=°T%Ü+Òá­÷‚VúàŒS+û2Ò(Ǭ,Í4K%¹N¦‰¹çmöŠž½0DdÔã“ù½a½pFzq~òÞðò…õ¢á^±O„¾WU–Ž®C¢»/lÁóÐè> Ru‡ía°=Rô#¢ç:sÔã“ùGÁ^Ž€m_Ø÷dN4(†z§´¾ðyXD9Z°tXÕ–ŽÁŽqe4¨ÇDZÚñîAêx·?¤õ…É–ŽäXKýS,‡%sû12ÔbK€v‚;P:Á=ÒúBdKý"9ÖÒ‰‰–@ÿÄGš â7ð Ù;÷Ní!;'E× è [ð<9º‡@ÊÉî)°ÛA2Ó†FÏ¡:s4ã“ùÃ`/Ca;¶Ããþ€ ‰ÅPï”6>‡D”á‚¥!U[}Ÿ†¹§qR§aŸùpN1äù°XXUÁ ÇÓ”>œçä4÷ô8>FI$O—²uš;KN¤±¸Ø÷Æ&•å~2¦RÏNwψ®‘Ñ= ¶£ÜÑQ;&ºÇBÚwlǺgBÚYî9Ú‘4–ƒÏvÏåÏŠ°s0ìPõäÇqrÈz"=VžØ:?ÇCOP‹z ðùø9ú|>¦Ÿ žå^{ÛQ¸E½øÂèšÝÁö"÷⸽ĽԽL‘çåîU÷r÷ ÷JL½ ÂÂ{~^û¹’Ñcá«è÷Zl…´B»(j/„÷Eø‰$)—jøºèº>º'Âv¢{l'ÅØ$÷F÷&6ɽٽC“Ý)‚ÄÍíHE2è9ös #Í·2ÐmîTl›ÂÔ:¡MŒÚëà=?‘$åRMß]wD÷°½Ó½+j§E÷Ý6ͽ¶w»÷Bú}îý‡Ú;" Owˆåï‹°û1ìPõäïáäôDz¬<±õ ~> =B-êÀáçÃÐׇ0øD`ð¤Ðî#°—‡a{'nQ¯~4º‹îÇaû¸û„ŸtŸ†íSð È:jŸqŸyϸϺÏaèPÙz2’zš“{BÀj‘M#=‘MÖéçü| ZC-êÀ/âçK°Ÿ1õ)O =î¾ {y ¶ãõ àW¢kft¿ ÛWÝ×`ûzŒ½î¾á¾©À^wßrßÁÐÛÄ[íHE2èù.ìçFš…ßc ÷ݰm Së„öjÔ¾ïWñIR.Õð‡ÑõQt ÛÝYQûIt iŸ¸ŸÁöS÷sHÿÂýòfÃö÷K÷;ˆÏí'îWî\ˆ Ûo ÍoÜo£ö;ç~µs!<×ýÚþ?çC ¨E=x~·¶ça*ð‰ÀàI¡Ý°‡ù°ý·(:ÿ]?G÷/°ýÅý5j‹î…ö›û;lºDíŸÑýÄÿtÿ†í_î?QûotÿñÝœÚÿ\Í4ݳ< ‡Ú…Dh¹lÿÅíˆBa gzvlK÷̈ƒpÐ7‹ß—CöòXøixùXøÉâÀáéÈðü-zÐXÉkƒ­hÆÁ¼²·*go¥ˆÒòWõVSZ%€•Öõ¶ÒZj³B¼e½&¯ 3Ñ· #mpßËBîjq>ÅÞ“¼¡td¯m,ÑV’mËH­îµg°v^F¯=‡µ‹deKí …8ƒÔB+FcÙ˜Gdi$S;pcÁʉTÕÈðvÛEÏv1´4ÖAºKs6­=Ãv8;¤#B`s»¸€×ˆ®5£{­èîÝkC|mˆ­íu‚Ô®A„Ö9º×‰îu£{=¨µŽ·>l;ÃvMÚzÞ°]¶kBÑÖõ6ô6öP»VÚzÞF°]·kE¡uŒàu½½Í Ü9¢#ù±Q„m‚qàφ úeùÀ'ÊG1v†Ö‰M?è{}NÑ¿ës6:byBG›2¼ÎØÏ£y‘é(—"}­ØòW¶‰ò¶ ”4àj‘6¡¡\°9 ²Q±>É~ÊÚÞæø¹…·–FðÖp¬7‡T46”N㤴µ#(ÙÒ:˜º¶ ¥¶´%~v‰-!xkX‡[bK (Ž ¥­AÉ–ÖÃÔµ-µ% ¹†ˆá!œJŠü®p„¶‚íÚ°Ý&3 ƒp¢A02V”¶6|vŒ(Ûp–D¹J–¶®í¢{ûèÞ!º»A¼ĺy;Bj·‹ ž¶“·³·K,I0*G(ÕJ#)Ê%ø®ÞîÞXÀ”O8ÞÍëÎADa¬/»F´Ý±´H݃ÑUóv‡Ö¤wÔ"-B볺;cúÁöNûì¦èŸPÞž±ÖžœÔžŒÄ^Þ>ŒÔ^Þ¾‚ä^Þޑľ8ŸT~AzA–fƒ¥ï@3ÈòºEð¶ðî©(vuÃ8Ádþ>Ðäu7ØRÿØþ»)½a½@þïûÄF”ÝÒ~ÑÕ#º÷'Ä{B¬§w ä ¶GQZ/(Ñ+¦÷Š%{yy½c}‚QmB©NôÐÇ;Äë‹{0í›p|°w(„±½ö‰h‡`i‘Ú—ÑUóÖ¤wÔ"-B;fõÆõƒíöÙSÑ?¡ ½Ãb­Ã8©Ã‰Ã½#©Ã½£Éý#"‰£p>©|/Aº— K³ÁÒH ‹dy=#x?x÷„T;‚zbœ`2ÿHè òº'l©lÿ=•Þ°^ ÿ}b#Ênéèè:&ºî㢻ÄûA¬Ÿw<ä ö˜"´þÑ= ºOˆî¡Öo lûÃöÚ‰ÞI°=¶Ç@Ñú{ƒ¼!Ðj(à †í‰¸=6¢ø¸>Á;Ù áþÁÈÁ6ãÀŸA úeùÀ'ÊG1ö‡Ö‰M?è{ §‹èÀßœã°<¡#S^l‹çѼÈt”K‘~llù+ÛDy¥ x€Z¤Mh(lh„lT¬O²„ÒÏ;?‡y#°4‚O‡ãz*¤¢±¢t'¥õ‹ dKý1r%KÃñó´Ø‚O‡56[ù§t:&”Ö/‚’-€©¨²*Y’#0D¤áTRäŸGhlûÁvdÉ~Ê8ïü¼Ô»K#øJ8æ—@*J§qRÚ¸J¶t6¦Ž´Ô–.ÃÏËcK¾ÖßeبJ§cBiã"(ÙÒ¹˜:NÐR[’W`ˆH©¤È¿ ŽÐ°Û«ã12'#cEiãàslD¹š³$ÊU²tMt]Ý×E÷õÑ=â!6Ñ»rP{mQÚ$(1)¦OŠ%'y7z7Åú£Ú„R4èáfïo îÀ´oÂðdïV"2c{½9¢Ý‚¥EêFWÍ»ZC^ÞQ‹´íV˜Õ[{Ô¶wÚçDEÿ„‚ôn‹µnã¤nc$¦zw0RS½;É©Þí‘Ä8ŸT~’ =I¥Ù`é×'ÐÅ ²¼‰| ¼'B*ŠA1N0™ôy=¶Ô?¶ÿ‰JoX/ÿScŸØˆ²[º+º¦E÷ÝÑ}Otß ñ{!å^ï>HEí´ˆBàéÑ}t?ÝB­û½‡`;¶Ó DhxÃöAØNƒ?à=â=í¡öî"´½Ga{?nïŽ B»'‚ðóž„ðôˆŽ`äÇ£ö8ÆAß08è—å)Å8Z0¶b”‡ -¤ýäÝyBµ‹t¦cºJgzlöMòÂËÓ\Šô»ã~¿r_(oCi@ž¡iÊ›ï7õUöƒPîõžÂϧ½g±4‚Ÿƒcý¤¢ÜS:“Òî dK÷c꽂–ÚÒ ü|&¶„àç`ÎÀ–@½P:J»7‚’-=ˆ©÷ ZjK@òY )ÂC8•ùÏÃ1y¶÷Âö…x”€ ‰ÁÈXQÚ½ðyODy³$ÊU²ôbt½Ý/G÷+Ñ=â3!e¦÷*¤¢ö¥ˆBá×àóu,ýš÷†^÷ÞÄœ·¼w¼w±,…×8.¡¼í½ÇØx+ÂÄ{L´ø¾÷QŒˆá×ÅÃâ@½œð^g`”‚ÏŒÚá=“‘ <„SI‘ÿ1ŒíCØÎ„í¬8Z ƒp¢A03¥Í„ÏW"Ê,Î’(WÉÒ'ÑõitÝŸG÷ÿR¾ðfC*j?(þÌû>çÄrs¼¯bøKSù/cî—Þ×ÞwXó!) ñ­7—³öMDùŽ¡«_Ç4Ñú×Xþ{ÈE} û€¢@-Ò#´¹0bÖâÜ8bbë3ŒÍÅ™!tê/ùCláïGo¾·€áüè̓8ÕE4 õÎÐX†FÍˈ‘‹çÇzù0'–¡£Q_Dð'ðþRQÞôÆ &óQ¿¨ÿ/`Kãb=øBéëÅO0 óbŸ`Ju–~Ž®_¢û×èþ-ºB|!Äz¿Cj‰ BûÍû>ÿŒåþôþŠá? Låÿˆ¹z{ÿzÿa F’pÜ?½¼œäD¥‡ôûwDz”ú‡@}ayÿÂÿ…~ÞY¿ È.Œ0j@(;ÿ2}Ó>*úçýÔb š¯û¦o1Ý7 NuÍôóXîˆb0: j^FŒ[´8z½|øÓÓ9ä^Ò}XèÑÓÀ‰ó† … &óóÐwÃÏc>²‰¢a=Xè©üa½@±Ol†²[*D—ÝÅè.Ewâeˆ•}rPkG¡¹ÑíE·ÝÔòü¶.lmZà×ÁÖ‡­ !Dóü¥ü =ÔÚP Á¿4l}ÜÚP Áž¿Œ¿"ÔC-ÒCpà/ [·HÁž¿œ¿2ÔC-ÒCpà/[·HÁ¨ÿ`6Vð[Áì eÁ¨·¡ÔŠþJP µH ÁÈöÊPje¿5”B-’BpÙoƒŸ«ømqÖÜúßRQ¾)æÒÊ”lÉÃÔ² ¥¶´*~®[Bp;˜·U±%0ΔNÇ›ÒÊ”l)ÀÔ² ¥¶$ÛbˆH©¤È_ŽB[Ø–aÛ>®x ƒp¢A02(­ Ÿ¥ˆÒž³ÄkŠZ²¥ѵFt¯ÝkEwGˆw„XGmÈAí´V w‚bz'¬×Éïë"˜ê¼“¿Ž¿>ÖÐŒŠwò×õ7ÄRÚˆ‘¢x'=c, M)‚¯iëÃXõµ¸^¼!Ä7„RÈúZ\¯ÞâC)d}-®Wwô7ó°)—…Ma–7õ·dÚ51gsˆ!í-àÍ")jy3ÌY“¡lËwbä; ÒY4vÉ4vTy©58#¸¼;b kÄPGŒLæoó²l;–fŠ÷Qå ëÅ–Ð÷ÍbŸTš¢–l©KtmÝ[Gw×èÞ¶Û@ê6þ¶ƒÚ­"¨+†·‹îí£{‡èù;Âv;Øv…¡mïïÛ`ÛR¼¿³ßÚÚ¶;ø»Â¶›¿l»B+»ûûÄ}ìaÝ1úÚ9ÆiŸ;c©½1ô¶Ö¾ìaÄðc×§¾í‚©ÈFwwO˜îþ^PpA‹,Q D elß8‹@á[a|Ï'Ù´½ …}¡Ýýðó¿'¶àƒ`þöƒT” J§¹ ´müø¹l ÁÁè- Q:Í¥mAÉ–vÀÔm-µ¥R¢ë†©Û‘¨£’=1D¤ï@˜áž°Ý¶½b ‹“¡´m ÞÖ¥gikAN´¬²„ä¨÷¬Ï½£«Ot݇Dw_Øö…Ô¾þ¡ƒÚ>t†A{˜x,E`"ðC0•òõ¿§{„¤”´LD?^²D¹ÇúÇa `åȱhÇa?ŸzKå{G #þÁQ{,ÔGº‡@OúFX?œ£aÄê ehÿ.û+zÙ×ïË÷ç$ûÃ~ûû'0íÁ˜s‚?0Ö>Á?Q €2Äò¨ÏZ¥â\QùÃéÃYTI´Ü¸±Rü˜±œ¾ÜÞ}±…Cb¨/ödÎÃ&FÖ6°«ê‹íåD˜Á°¥–äDË*KHn@ì=ëóIÑ5(ºG÷ÉÑ=âC 6Ä?rP;(‚mhtŸÝâ{8Ô:Õ? ¶Ca;B„6ÌÛá°)>=ºÏˆî‘Ñ= Êœá†íé°!BåíHØ‚¢îqÑ}ftŸeÆúgÃvlAÊ8L;Ó?¶gÁv¤ øLÿ\ô µÃ"ˆÐFúçÁv,n‡Eòχí8Ü‹(>ËÛ3p;,‚mxŸé_à_ áÓ#:‚QÆGØŒƒ|œËà þSùA0çCëÔ&È9°‹t‘ô%˜7 óx;HçtLWéœÛ£}“|òòt,eú0ÜòNÖås¬!†GF¹½ûÆù¼#þ‚1>ŸÁA}°8¨*ò4Z§6/@ÙFÚlÌ#cÞ…\ž}\‚Î(Ì;Ÿé›Ô//OkU¦Ãý ïdT_à à_g/i‡BÎEpæNð/†3œ´§BÞÅ0»Àè´ÃbÚp›;=/QöŸPGý —A†Æ0ZM€? ñ‹0ŽV$ŠŸŒq"Vª¡0ªáœèï4èÁE‘ô%œ>F¼‹9¡1ïo¨Ò]ùDúàØO5ø+Ûâ_ŽŸWø×ã><®U—C*Z#(Î7JAÉ–ÎÀÔ!‚–ÚÒ•øyUl ÁáZy%¶æ¥Óš§´!”li¦´Ô–®ÆÏkbKž×í«±%0w)Î7JAÉ–ÆaêAKméZü¼.¶„à‰p¿¹[k(¥Ó5”Ò†DP²¥³0uˆ ¥¶$¯Ç‘"<„SI‘œ×Ãvl'1C3‡â´Ê)m|žQ&¥XµÔ–n„+Þõ°Û›âuÈ!œX¦š©”6>O(7 –N­ÚÒÍp-¾¶C`;9^‰%Š¡5’Ò†Àçðˆ2Y°4¼*K·D×”è¾5ºo‹î©Ÿ ±©þíƒÚ)DhwD÷Ñ}WtOƒZwúwÃöØN¡ÝåßÛi°)Ó0 ÈßëOÇt !m„#©ûüû1BH áw`]ôœéŠdï©LàüÇ`¬w0øãœgøúùsôû $K'~!ê£Ð*‰ˆ§Ý {»“óàq./÷F–¦ ¶Ð(ÜIÜ-InÃ2Ó”2@KK™Kã³ñ³|R i}ÜûƒbM÷ Œ¢¡‘$ðL-…Iþ(.µL뀥ѱf©·ÂÜNg¼@ˆròø±Ü‡àœxÆ€¬Ü·w@ÎÃpæ<ÉOH{'ä=g‰†ÁÓ`%L°ÇbÎcñÌ"•‚æÛCq²Õx'ykÔï´¸vîˆa4›?lÍÓ:Cµ(Ö•çsÄê܉ë€ûÛ0ï.Ì{„Ó¹#¦«ë<©v“ê1Kò2(þ'°õ'¸^ž€ü'üg¹qžÆÒ~ bS°ÔsJø©H‡·þ´òžÔÊtFÕ8+KW/–JÖ£dš8÷e›Ob™'9Ù'!ÿIï“Lžä²ð$“…'xXôäI. ÷3Vîg¤ÑìRòø>JVêdš¸Bò6ŸŠžOaˆÈ"h*Æ &ógÀª~ ¶SaûL\ç@áDƒ`¤B)m*|ÞQžá,‰rY,= ³ú¥§¸Üñâ1”63ÏÁµí©8O„~gÕ–ž‡ëèS° Ûâ• È!œX¢Zß(m*|N‹(/–¦UeéÅèz)º_ŽîW¢{&ÄgBl¦ÿ*ä ö¥"´×¢ûõè~#ºß„Z¯ûoÁö5ؾ!B{öoÂö%HAðþ;°'ô|ãoøïBüݘúnlç]ÿ½~Âȧw˜¥í·b=ž†ä¨?ï`)ñk±«ûZ$ÉRiVdÊk°'^Dø¾ÿŽ@³˜Ø "þK!h“ ‚¿­ËúŸBþk þ—³"ÚGPŠæîý˜Fsˆäfa}šÏ÷9:Š‘ÄÇö(g]e‘Ñ2?ïcýO Ÿª‘!s=ðãDefAKŸ)F.]FK•üGpì>‚3p€Ç¤} r>†3‡Œ';®~Æ z&í1íM<~hÌçÓxf‘¡ñ%23c:Í,ÍæëÐÂgqíª3—Ž šÕ4ÃhÄŒ'U«ó:Î Ÿ5¾&¨~´“FX1²ò$d–æePF?{þ\òùóx>÷¿ð¿ò¿f´¾ðgû߯Ñükˆ¿ã³# 1C€þ%´ô-7v€>Ò¿Qxl}£Ð™YûÖÿNÊ*âÍá|zña6ìë;.S(†o°=žú™ãQg–•¡6ÀÚ÷9ÎÓ+þŠY?gâ¢ëñX’y$fºŽÑ˜¾IàQÿù•Híy’”*×ivT«VRüºU½”j®dE^ÿÔh¾ˆûøBêí‹–¹RϹònœ§W0LçÊ»\\tÿOš+rÍÒ³@Ò\‘ëiÉ™+Y¬dŸ+³£çl }‰3„ ™'˜ÌŸs6¶3ñØ’,ò#£ª3J›‰£œ±ÙJMQKmékxò™çôl<óÐùÈ!œX¦Ú±)m&|¾Q¾,½^µ¥o᜙k~6·NÑê#–ÄJ¥´™ðùfDùN°ôfU–¾®¹ÑýCtÿÝó >Ræùó!µs# D÷OÑýstÿµ~ò…íØÎ…¡ýâÿÛŸa;Bˆö‹¿ö„ž?aüÿwˆÿSíüîÿà !ŒüüY:Ðþ5ÖãiHŽú³“ZQe¨?bê/•fE¦€ ü,ȃXþôµÅŽ ÁŸþ_þßþ?þ¿]ØxDÎ\hyalMŽ–jüççÖ²¿Ø¿**[b~Òe䌩äAÿŠsøWäð¯%2‡€–ÃY$ð˜þ/ž—¦¹¢’?ÅVe:‡YÚ0Â…’$ÈÍB¦7(‡¨$&‘û\ƒþ+ñ™´ ç_¸RýÉOHûäýçã?¸ÒþÓ~U1/´˜ƒ(`%ûÿ@ä­%,ü3ÇEÙ!c¿ †Ñê ü!øˆóuBù?`œÖ1›#Vç'\¢.©Þ´šMªS±îÈJŸTYê”—A95b Éo##0ƒBPd´Ì 8±×/Bü‡ÏGb†Ý‚–nì};¢—^ [%…N>²Vfú]Àô“‡ý”¥Ì"žûðC Ûãéy赘YV†Ú3ÉÀyúÃfþL\t¯%¾#K*3«CûyÔ~V{ž$¥ÊušÕÚ›Ô#¿úV/¥Ú3*Y‘Wqµ3îÔz3[æJ=çÊï¾ÏÓ¹Bpv>üž2W’jö÷”¹"×Ó’3W²XÉ>WòÑ3! gAó|„Læ£1Gc?ÏÏ3#!ú®ª3J›çÛ0§yŒK¢oYm Ì奈-¡™‡Î@áÄÅÐŽMió|ðü)¢”K?Um ÌÕŸ#J["¹+­>bI¬TJ›ç£Ù—ÇŽ]ñ²[r£Ë‹n¶ô@(BÈ ‚:ˆ×a>iÁKáçrPµHŸÀKãç PµH‚ÀËàg+(Z$Aàeñsy(Z$A`Ð×r1äAêò1äÁžVˆ!Úm…¡£k¥è^¶ô¹rÐíƒ6Á*A[[5X RZãç*XƒåÉÒÕP*÷-kœB«Ôà»J ­qV„÷Jø¹Zô\-†V‚Zmc<Ûaív¸‡UÚª ¼Z «tVÅüÕÒ÷DÛU¸–ϱ‚rÛN ¯¢€ÕVª¡®‚Û¶LmcÞª ¼Ë:“ÃU„¶-×&çp•¸­®_ÛGW‡è^¶ô¹&„Ö Ö‚¼5ƒŽïˆù¤|¯k¬Íq׆Ö:År ýµcË„‡t;%Ú销S ^¢SBÏ*öœÔ‹¯tŽå;ëëJê£s°^ÌY³ÃcHk½`ýèÚ º7„-}nl„á‚%h“Äv³Ú”6à L¬±ø¦P†Å ´™‚³ytmÝ[–>»@¨K°äu ¶†øÖ˜OZÀ'pW,Ñ•ãu…ú]ƒmb©mb‹”ÊÂDàÛ`»<›zÙErÛÛÇrÛÛÅ’d)iüì¶vˆ®nѽ#lés'íì y;»@|Ì'-àxWˆïì¥w v‡øîXŠ´€à= ¾GÐJïì ñ=±iÁ{ágOØjQoÞ?{A Ô" A Ô" B Ô" =a ûᾟ DÜ7 ðþøy”Ø÷ $|~%À} ƒ¾zÆP7H=0†ºÁžzÅP7h÷ êô†ãÛ¶ÝâŒ%û@‰aÛ-n†½`Û-nÁ¶[Ü ÷®C£û0ØÒçá:<8òŽ„ø‘˜OZÀðQ?*8Jñc°iÀÇBüØà8(}lÐâý°i¿_ìÅñ˜z<×óñ ÿK÷àji‡Gž‹­")EËâ W€ÆË!ÏŽ4–r"¥>£¸yPæT^#É":ÒPÙJçn,ÙŸÓèÏðYÙÆÈuœËúäšd¶¿¶÷êr])§ÕŽà’ì à4ÀL zccå5UVNì¨q€/Æà„Ì=ŸPEÏ'F×Àè> ¶ô9Bƒ‚Á7(8â'c>iÿd(1S†§Â6<8 R†àç0¬Áòdéj(•û–5N¡a5ûpR0Ó‡§2ý#ŒH ÅÏaXãTÁfí”Ê}Ëš§Ð°zøt‡ÅÐÀˆs"¼âçiÑó´µFÄÐÀàtXkÃ`;0nA]ø (1¶ãHx$”8 ¶ãHx”Ûq $<*=+}C;ƒGÆð¥ÖðˆŽdÆÆ4-dc\L;C’"”qñ,#™¦²ãpÆ3i4Œl¬/ 1&ž¯ JÙÑ:=¶2Û!£?š™£ãÌ}j—Ô>©5ÙÛ+ï3]-²øu’BN%•Ýâ(Á0Ü¢ñÃŒïf|ÇÄã+k‘ñÃŒ%ß1ÒhŽ‘FœÈÈãK¼‚ûŠÛÚÇéf¬Ç4ðøÖ6 ?¾ÃpVG1#@`4¦c994æcãq–ç*;–ª9ͦ<£UóIÁ^ Å-_Mµów,3Öc•ãK3Zýü¥õºhÇ—ÌãqÌøŽcÆ’—Cc>.ßqÒXªæ¯¼>Ëó7m}¯Ïd«×ø¢1eÇz\#Œï¢ž¿gF×YÑ}6léóœ yççAü<Ì'-àŸ%ÎÇ”óƒñÁ¾Z;?¸ÒõLG–åBL£vezu’iñ~ H©•†ðâìF\Ö&åó9aõ+'Kóˆ÷£1r‚l[¼Í 0'(l&xM••‹;j`„ÃK Ñ¸(sÏÕÐó„àb få*S.fzM’&žfŲqêëy})É\2‡²Âì¬'8©N%­ÙæF“×>/Õq²ÒT.‰®K£û2ØÒçåº<¸ò.®„ø•˜OZÀðU¿*¸J_\ñk°iÀ×BüÚà:(}mp=įÇR¤|OŒíOälM„&7Är7@o&Æ~Ò½!ÑÎ 8Õà%nHèù†Š='õ$â“bIœÄ¤xD€ì¤àFÆŠ¡‘¡´Ë#ík#|RœsÊCÖ€Ï<ø;‰‰c®€YR)€Fm¢à1†Æš§]‰%E:Š ñTz*û•th´¼•ë‘ë°vu¹¾‘ÉõR®o”r}CjÜÍ-××7ÁYrSœ¥›âµà¦àæ8v³‘"ÊçMÁäxž!Ù˜[˜,åšÈ]‰ýšÌew²Ôßd._“¹ˆ'Çy#1ï&KÙd©²’b)rî’9Hï–èšݷ–>oƒÐmÁTÈ»-¸â·c>iÿv(q¦ÜÜÉA·waü®`šÝÜ)wÇvïæ,ßÜÜËP˜çð²À>…ï``Å —øÂâÀkÙ6 ò’·G’¸'öéžÅÄwà/C0™z+Ó’Ô}Ñ5=ºï‡-}>¡‚!ïà!ˆ?„ù¤|? ñ‡ƒG ôÃÁ£K‘ðüÄ ‡ÒO@ü ,EZÀ‚ëçIŒ=© >Y~ÀN±ûèÑz{óCy÷ÉÛ4Ùª¤Íó‘NºûñóEôrP.ŸŒÇ€ê> ­6´oÀâSqoOI½=%õöTð4×Å‘uŠË}м†°7#ºž‰îga‹žÏÏCÊsøù<æ!ñžWò^ˆî!çÅà%ؾÛg „hÏGíË÷2¶ôrðJl È œXå± €!ÍW–^¨ÂÒ³ÁLü|5xË ø-ÕLHEÑP:ŠÒž dK/b곂–ÚÒkøùzð–ðÛ{1‚߉-Q:µDiÏFP²¥0EWÉÒóÁ˜÷“Ë7 ï ,óFùŒ­7‚wcˆDtAÄ @}'–B}‹£ydW¤RyÊ žQÝ)Úª ™Bï¤:^†<•]Rk”ÃÓ‘or^¢\Ò,9Ñ*;’zfk;)jZïÉÜ*ôÄZ!ñToåYX obˆÔ:„Læ¿ qR{´–<Õ<‘aýE0û7c©¯´ÄhY˜­I:*ªü¤ÓÞ‹®÷£ûØ¢ç‡ÁGò!~~„yB¼”¼£{äÌ >íǰ}BˆöQÔ~ yŸbKŸŸÅÖ€ ‰Uû˜‘ÒüLaéã*,}|ŽŸ__c±Yüu¥Ó¨(íƒJ¶ô1¦¢¼T²4?¿ ¾Á2þZš ©È¥SK”öA%[š…©ZjKs0o“Ë97û='îe߯îœà»xœ@Ä  ý ¤¿ÏpKE²À®(K9TD€zCu÷9ת  ÉöNªÔ†Ú.©5ä¡Lg5ˆ—€.zG2ÌæƒÔmRÏì,IŠšÖ;ò0‰›¬ûqÆ>*É}a@šÔ4­BÏ$¨£o0Dj‡T" &òDF„õÁhìÉè|€ké®ÄhY˜­>:*ªü¤Ó¾®¹ÑýlÑóÇ`¤üˆŸó0Aˆ7/7sç??¿ÅR_QæCúüÿ^àPÍ_%Ê/1Ù[€©Drn"g^DA–^-`ú^é °W ¯H^-¨§WÔ6G¢†ì7›[µuÑÙC ·P™y´ÒóJåÄ‘<âÍ|&VÁsS²D}i?3‘¨Æh¾4JªúRɨl±Rs¡÷4FŠ“ØÒF½š:©…ó¬âŸ1ô –%ž!œ`2ÿWˆ“ñ¢ñ xªy"ùb=D0ªZ!Ô×…qˆñ±0à-äzQid¡¾Ç}ÿŽýý9¦ý ¡?âì ˜x€lP•žËÉ‹½êŸJêÙ½¦íÏ\ËÎÊß¡ÄORÙ,žÆççñDœ[¬ït¦ÐL%Óøœ‹4uÍ‹™j,>¨R0•óÇbW9 °×´ý™kÙÕľ@¨ qd*ñùµ–­œÿ÷•CÆøOfôÿd*H5ZÆUõg\SJ•n½)ji.Œšö0â\Gòš¤Þýù•EU!ò/×›Z9V¬‡EY-E×ßÑýlÑóßà?Hù?ÿÃ<!Þ ¼\ˆ¸¹P !‘˜Zòw„iúBzh†yÌù7¦jq6Dúß5pþ 4ì¡Æy¨5©?löD 1Ë4^NôŽD"‹œ•^Zfyɬ¹Õ¾Ö?“äÂL,O(à™ÄËGÏ<†,ÌCÐ? &òDF…õÁ(7tLܲYãcaÀ+p½¨4²Ò ¡ÍAH yg3zHÇ,ñ™OµPœ"”W@ÿBM‹ÃY;Ä2ÅÙ~h†l.wYxÕJ©sÇÇ­ÎFs¦¢µ/+ÌÏr5…á‹W­tÄTœ¤U¥v^1ºJÑ]†-z:¡ )~º˜‡ Äs•\!Ž”`Ô#ʯFUÚra«8»FVZÅZIY%rdÍhÅu+®·VRNQÿ­¤Rºœ'5•h¬]+E÷ʰEÏÖaHiŸm0Aˆ×FÉCí*᪠am˜'êaÕTy¯¶e8* Àj½p;N¿ä±Z"Þ.\]Aiý¥6xŒDÁÊÓXêJ ô%#Æ6Ð×6Ø"’µXéÕã~ù“uZǺ,¿=Ókv{¢kè^¶è¹VØRÖÂÏŽ˜‡ Äë¨ä¡ví°CEXGæ‰zè”*àÎá: G…@ëc¯¼.§¿.ä­ÁQÖ(*‰õ±¿Ô‘(XyK]#¾dÄØúÚ[DR¢+½^Ü/ßc²ÎZ±.Ë_Ÿé5»½ ¢kÃèÞ¶è¹q¸ ¤lŒŸ›`‚o%oÓèÞ r6 7‡í¦°ÝBˆ¶IÔny[`K[„[ÆÖ€ ‰UÛ”‘ÒÜRaiÓ*,Ý.ا.GÜ.°Ÿ.áÖ±Ý.áVÖ•±D)(¶.#Q>ï™lI%½Y¢ô¦ ès+ÉV\$[Åc+öѦ±}UDÆždó½º TŠtk<úÄ7`aÕŒYz„•F¡ºø’"éŠ#éÊEÒµÆ1K¯Âô1“}¯.i‘¢\on{‰`âã6á¶Jœ÷˜è°^QM6ªO=i›*l¤{Óx=/ùÙ>ºvˆîn°Ï!Fž;a:PÛ ?EþÎѽ äìî Ûa»„mÇÚ òvÃ6v w­y„«<†¬ ÚŽŒ4wWXÚ¥ KÝÂ=ð³{¸–Að¾0ª= ECé4*JëAÉ–vÁÔn‚–ÚÒžø¹W¸–ApèÓžŠ|¢tj‰ÒºEP²¥]0µ› ¥¶´c¸7æíÍäroÈÛÛÙ;Ž|oÆÖÞáþ1D"º bРîË¡îËQ<²+R©<å‚PϨZºs=¡ZÜ#Òd{'ÕjCm—ÔËaéÈÇ}8/Q.i€œl•ÖmrÏt–$EMë=™»s…žX+$žê­tƒµ°†H­“ñG8Ád>¨§ý0DêˆT" &ówŒýdýE0û}âQÛ/ö•V€- ³5IGE•ŸtÚÑÕ3º„-xö‚y„éBíø)ò{…½1½wxpxHxh,EðÃ#JoHïá0’‡ š‡ ”¾Œ °×'¦"Éž‰œ^éõ¼êÃôÝÒû`¯ú^õ‘¼êSO¯¨lŽD •ßrnEo ­¯Ô—(E)jO+å•ê‹# xȱ&€{3ôÞ1½gb–h,2í.ÂÞŠ1é8récY© {BïiŒ'q¦z5uR ç@XŇ`¨/–%ž!œ`2TÖ¡"±‘C8Ád~¯Ø3ÖC£*¡rhìëáqˆñ±0à±ÖTjd¡8ŽÀ}+ê˜v(„ŽŒ³ƒ`â²AiTº''/ö ¨G…G+=ª?¯ޤ7n{ª`}SU Õ§s”xß[ÀŹÄêŠó‘÷™Îš§ÞB*šººÙ~ÓùIó£a%@-‘Z9’©¥#ëZ:×Ò‘-µÔ¤µÔ7‚PÝ…³Ñ7†ܣ㺢V©-žF1*ßÔµ„¼ï[TK¬oYj‰õ¾·€‹û¾ª–Ô>S=U}%ÓŸZ"µr4SKG/Öµt4®¥£[j©Éjé˜è:6ºƒ-xöƒyéBíqø)òûG÷ÈžÛþ°=BˆÖ/‚N„¼±ñ5 pb•ÇDëÁHs ÂÒ€*,ÊI±¿'a òå$ØÓIáɱå“ÂAá`ˆ+QúcíÐÎ HCŸ„%Hƒ¸¼P lÏl?TNŒ×¥9”ýì¯ÐIãΠØçAœwƒâzûOËϱ°?’%>g|–ˆ¢w(V1UF“²’%«õÉÞà8²Á˜2z<¸Ù¬¬*Ô›;¢“œ½©uÆz¥Ž¼?×kÃ×ìd.{'W5'(²¢ª½ô H¬´ôøºªú‡Càó”8¦S¡1<ÂÔ·!˜‹ªeHxj,y*W§†Ã¸ÙMq°è²ItÔ?â"NÁ–ÕaUûpJ½|]§E÷Ø‚çé#Ï30@¨Ÿ2$ÆG†£bù‘áh¬3sG3Z, ´>êŒ ÏŠñ31<’QO,>ê ωñ³1<’‘Áoã0}ãÏ8ÈmƒöœXæÜ¢=‹­Ý1‘u yN, ¨c±Kƒ5y‘¤œ‘q¿$«²Ê2¡²´1жÉh©?vLTþñ“ÈIÒI²9"†Ã{“×3qþN0™vô<Cd¤Èˆ œ`2ÿôØ?ÖOŸ gÅ™‘,ññ\l…ކ% ³ã}n\ª¼¤Ó΋®ó£{á7\¬ã#ì镇©¯rµ m±Ni_¤V¯HÁÅœ©z¨•<”+™l^ÉdY•“+ãº2µ+¥±J³ØøcE{åaêk¥±’û"Òi¸˜³†««¢ëêè¾¶ày-ÄÈó:L'j¯ÁO™=Ư'Æòׇ7`0÷F‹…Ö ±åI G„‘µI±½IœÅI’Í,ük1öQ©g]ëHïÆðf‰{cx¤"‰›2Jðöˆ'7sžÜ˜bmrtÝÝS`‹ž·†·AÊ­øyæ!ñnSò¦F÷ís{xl§Âö!ÚmQ{'ä݉-ÝÞ[2'Vyl*#0¤yg‰×$z¢]ÖÒ´è¾ÊÞÞÛi°½Bˆv[ÔÞ y÷âÞî ï‹í„û<6‘Ò¼OaiZ–¦G÷ýPszølï‡í-‚àÛ¢öAÈ{÷ö`øPÜA8±ÏcÓ €!͇–¦WaiJø0~>>ƒeü,‡!¥ÓÑ ´)”lénL"h©-=ŠŸ…Ïc?±»#øùØ¥SK”6%‚’-MÃT]%K·…cÞãL.‡¼Ç±Ìãqä3¶_ˆ!!ЃõùXpõYŽ ä‘]‘Jå)D€zFóHÑžPå?,ôNªú^ÈSÙ%s„rx:òñÎK@½#~k³37©gvN&EMçi2wZ…žX+$žê­L ŸÀÏ'ãª@ð³p½xÏ0[)®”6%‚’-Ý©S-µ¥§ðóé¸:Œjõþ~>¶DéÔ¥M‰ dKÓ1EWÉÒmá Ì›ÁäwäÍÀ±Íˆõg0ñ͈GdFl 肈A3¤™83¤±$²ÏJ²”Cu@3ð,ëð\Oh•š3„™5rJ°KVqäá3jPß]ôŽdx3kÈŽÔ3»ÿ$EMwâ¡Ì^…•dn%+S`M<ƒ!R ¤ÂN0™ÿÄIµÐº$ðTóDF„õÁh쟉}¤¾Ò £ea¶ú訨òS‰6%|1'Àg`;¶/…ä $Nz¥:‰QÚø¼=¢¼$Xº½jK/CKÏÃv l_‰-=ã$+›*HLÏ©þŠ`ij•–m&Ï™L. ¤_€0:'£‘})ÒE4pâE´#k3q~fbŸfÆc>jßŌЋÐÊ+qŸ/ęɸN¼CúT›§£á娋[ã:{âý˜Éåå.|_l•‰=‘³»:>þÌŸœƒ[™hÔ}ó\Qwj?äy¢â¦[y5º^‹î×a‹žo„oBÊøù&æ!ñÞTòÞŠî·!çíðؾÛ× „hoFí»÷.¶ônø^l È œXå±· €!Í÷8K¼&Ñí²–Þ ß‡ôœ÷cïß?ÀZBºG^¼~çÁÀ+¾Ö>Ĩô[0ïÅZo@ÛïÅ’ï*à×qD”ƒ<ú‰ïC!ÀÛ¥|*‘qš%5•Z?ÂöI‹zù(®ˆÂÃÏéÃOb6+Â?ç"B2ŸJ´Ï°¶fˆ…OÞ[ï³Ø>Ûç§ý-…ͬ –>‚qÑj­ˆ#/JjAñ³4qš¶^ddÐ(©b¡•¬Êô‡1õ3EN“­ÒJªœ¿¬rµÛByûûÿ1—™—¸Úü¸jS¬CU½¶ÔfåÚ$+ù,.ºYŒYJ{³âÊŌʬŠU;KÊä¬f\±d7&>ÒÝVô¡>õLwÓô:œ%Q?”ªº¡k°!ë4m}ügâ.#ŸÀUã˜ykRsH›ŒÇ'‚%¾¾Äü¨²KVÚï§Êª”£KÊ~Z²ñP4Ä/Þ¿OãÚDž£S-ÉÊk’glÎØ,Éa«Uµ^&e¯røLgÍjíÙ´ÏpÖH‹äö6®ŸO¸œYÎf“XJ™ŸÏo'æ*[­d¯¿ÚòBüäý¥+»ÚñkœœáÏ¥üUSUo ó-9Ãê8kËjmÙû"ºfG÷—°EÏ9áW2?¿Â<!ÞWJÞ×Ñý ä|~ Û¯a;BˆöUÔ~yßaKß…ßÇÖ€ ‰Uûš‘Òüž³Äk=Ñ.kéëp.ä 'à̽Ÿþ€µ(„t޼˜þçÁÀ+¾Ö~Ĩô×0ßÇZs íïcÉïð—8"ÊAýÈÄ÷£ àíR>•HŠ8Í’šJ­~ÎÃóoçAÞ¼ðwÜþËüþÃ2ô…ÌXÎ „?E”ßc>¢"ÚmAD£væHþˆ¹sq/täæ…ó¡ÜÏáo¸·¿•ãCå~ ŲÈîßñHƒõG¨@ Éÿ×À<Á3Tc$ò8¥÷O+øÀóy.² â’~ø¬ý­¬¥ÊÞ¨j¥rçcíùŒ_ó!o>®£ù±Ïó™:˜ÏÄ2Ÿ«£ùÊ:š/Ô ¢ñµ5G²ÀÖÑüF¬£ùÊ:š¯¨#Wä ªªùœŸõ©£ù©u4¿b‰YkÊ:/Àú¤E6@þ\K¤Eœ_0†´†Øl,õG ƒ>e:±þ3´òÞW¨•¹Œ&ÚcXYºÛ°T2¾É4qG’mþ„e~âd‚üŸpq~ÅÒþ-ÙŸ˜Qþ f]¦Ûø SA¨•¹Œ&Ê+K³ÀRIÄÉ41 ¼ÍŸ£çÏ"CЗ'˜Ìÿâ¨/™¾<Õ<‘UˆÌÎ91ŒV´R žb{ ã5ƒÖ6µ»ño!׋J# íKXŸ_ã:ý¶´zøºã1”o¶ÞÀó›ˆò‡`雪-ý -ýÛ/™±r|ðØ×‚Ä—¸Ã_iÕX´¿ñx²+Óßq-/„0:ᢑ+ÒßñÁï À—¿qžä}"y5œ¿ ¼0öŽèÿ†÷7žN­þÍÔMÒ.@ýø›ËËB.¼M¶ÊXØ~ÒºÍîVé;‚,‘ÌMÞMÒûȺ'©äþ‰®£û?Ø¢g®N«”~ìßB®*’vv%UŸouF’«JO•sÀg:kVkËÞ ÑÕ*ºW„-z®T·2¤¬„Ÿ+c‚oe%¯ut·œ6u«À¶5l[AÑVŽÚU!oUliÕºÕbk@áÄ*µf$†4Wã,ñšDO´Ë[j‹-´­[½nͺµc=‚wŠ(m!½m„¯ p¨fG‰²VLAöÚa*‘l•ÈY9¢ Kí¯Ú1}·ƒôvØ«v‚Wí$¯ÚÕÓ+ê›#QCö[•[À–;)#Sû úÌÇQI»“”%q$ôÓ–‰BGp«”,ÑøDÚšLÔ¬vZ5UIj)¹ [AïiŒ'±ÕVÕh¤L{ìuûº5¸Z!8jéíqųªÙQ¢ðß¾®¦Š^Éœ•# ²ÔAðªÓwHê xÕAòªC=½¢ya½5älÊQ I~²YUû úÌzÕ¡¢v'iìĜ駓Ñ$tvª³DãiüÎÓúñ˜·†Ú«1#ÔZY/î³S ™õ߉wHŸjót4k×½X)®C±'Þõ¹¼târÀ÷ÅV™Ø9§ªããÏ·É9X‰‰FÝ7Ïu[WðCž'*n%+ ö6À#ŒZ Ih¨®6¨Û0^yLFY¡´ŽœF+NG=º€·‰r,“ù2')›D¦=Ž®-n[GP{8ß6¨Û8®}pr£;dglachîƒ$rÎ#8¨bÍÃF°r2$ö©Ä>ÛÿZR„tÏ ¹¥ç9>ÈÎî’roDruaVI‚ÈXïHQÙ°4{ćÊlð'R~?T[eã"ÒüóóRe™­|Ñ>?WjÑNÖkèÁœ%3rCfÎnø5gÛáè:à¶uDéç,È™³ k„9 ø(Oâüè ÌaP-Ä‚zβöÙ‘ s–òë7gÛ¥ÌÄ„9Ëö™$‰æ,•l™³‹~În„gäF̜݈™³¤ê€-šsš5JëÈi´âtÔsV1R_æ$ÍY"ÓG×·µÌY’M ™/¯eβã ÏY6¶Bü<æ3œ4gÙÞÒç,/Ù¼ç,õtIš³dFnÌÌÙÿ¯æl[]{ÜÖr6n+ÌÑöÂ|©ílÌÎYñl\ëœM>Ës6iG–çls=/‰shw4yÛ„™sÚd;30¨A’µ6p|Áøwf¬°³h!ow%*°¸£Ï¿Kâ©dœù [z°—!’–Fò£Î$Ლ+rý±0É ‰~¯¨ð¹µ’"FK«T56µp“åYo*áékqú'"õ›*¾>ùw6ª¹œe¯~¨î“ZíšÙ?ý¡wo4Oâ òUúÈ'•&]/E®¸~Tâ'÷›Ä‘õ茭W¿&TzG™´gYu+Õ—ú­fV{çcÖ7 ê1«‡'—¾V¿K7¼F›hnï¥m¢]¹³³¶‡ŸýÈŠÛ~Dû­#91²¿ ŸüØï#)þV`ƒØóÖ°÷vqŸt¾°vΠï;ÚqgXô½!’jË}:UIUú [ùĬþö”Õ7ö|¯ÌE$ïSl$2WÖ¥»˜J—åòçb¾OöW,‡×áûbu(§ þ¤Ï~j ⡸—Sk„B{N¦ðZµ~ÂÏö¹"ëÛùjÞ fù¬’ýMDö÷ŒY¿EX)®8vÖ$ŸÚ ³5M6m©ù¢’¨Ö·l²õóÿ¾µºÏAä³ «EuTäTA3ß1^“¥E¯¨OÉü®¤ý©òçÚÊo™C’ÿdÆË¥çW¥A3–´G‹#^‰¯²‘^ej5_õF"»d–øÄ³œÊ÷ì½ñ'iQV>k«ÞÎÈçîjçbmšõyÒØ:µ¿SªÿÛ¨Ztj–ÔïMXÓko]›E÷æ°EÏ-ê¶„”-ðsKÌCâm©äu‰î­ g«º­aÛ¶›AѶŒÚ®×[êZ·Ml È œXå±.ŒÀæ6œ%^“è‰vYK¼Ì¶uÛ1rd>òè«ù¼þf\´¨×¤ˆwªè÷Nœ 4îª>U–7Dz(þÝ "Ñ‚H ôÅÒ€&Í’ê¥vgh;`)%Ѥ°M¼ìgAZ”ÀîVL‘ØEɧX}4>¢þ® >ÑçGª+—»]$:°Jûã«^ö‡çïG\_´O×~y:KU%²1¦U)KÏZÙêÑN›Ï;qc)Î6UÍT3‹j‘­V¢–y½]Ç•÷5ÖZÚ./Êe·Lª·;S½Ý™*뮨•îqõvgª·»T½Ý…êíª«·{jõÊ\‘žT½Ý¹êí¾Hª·{ÕÛ½YTo­5Ö˜Õ‹N/;38ˆAN jlO¦÷d*žÈ ÏB;ÀS?ÕDYCŸÞD*Ý[«rOnÔȹ‡§’‘âë‚|žg³B¢gi$7ê쉟È÷Œç­±>°°è÷æ Ÿ»H2]~UPA-Üdy±ï4‚ÌÞœ~·G+ûETäåA\¼1ñiõŲ½!LãEU¼”£ŠWÅiŠxitìÈŠÖÅŒÐjàå€]9c¬Ä¡0W¼ÎaŠª’íÒñasÎVš[l6 ­52i>ølùälÑêMç«Æ4¹òé* Ú­\%µÎ—ì2=2Õa¥Jk¨ùÙç傸ˆ0y~’¹Xûü¬5w ïÁØËƒ¹xfâe×߃…xkYe¼t4ÙH©~Œó@³Ã˱3ˆV+Á®G}˜ì‰Y–íÒõˆ­±^œj×#U6šçz”ߪŒ¤UUÔùW9µeµ¾sò&þ#âžÔuG2`q:Ž|EöY]Ú·Èáó€8É>ó|55I‹®I8]K’)âÊAéüغ¸&Sz…¹^ª¡×W–í´Q”yb=W7’ͯN‹|b8¢Žž¦ˆWr.£c?ƒR 9 ýdJ) 2ò'–ÃŸÝ §‡ò,’…›ô¹Wäògvö°§H–Ξ k•O:©Š|Õ9L–é­à'Ÿj~Ò›–›œõ»ž«ÖåwÀ´ü§}ZQ­, %—ö‰ i hXÙ†ÈÒÙÃÙæ!ë.g¸eoÙÃÿöð#™=üÈ–=¼eofü–=|IßÊ®££ûØ¢ç±uÇAʱøyæ!ñŽSòúE÷ñs|]ØöƒíÑB´ã¢vä À–Ô[2'Vy¬#0¤yg‰×$z¢]Ö/sbÝ@FŽÇ¨¢“^6¨n0¦KˆvRDåm! Å‘ë3‘\w²”¢qr¢O¬ý~}p"çäTѾ5Uö ñѨñÖUVˆ uFŽç2L{F½VÎCOëßÀ8†R4-uSK^†âg¶*J®”ôêjÚŠA«åI¸H‹dO‚+êI0â“ð8ôƒÒ(j´šž$X"µÓ/ÆÙØXœö#Ï"UEÈQ%U\ZüÙx(šAØÏAœ¿ƒâŠ`ë¯9äü‰1𕡪¤¤LUÎAmY­={À:YYøf0Ü«sU…|c×0š#d)=f¾ªú%æ*[­$ÍÇ†Ê ñ“÷—®3$ììJª*>ߪŒ¤UU¿ÔùW9µeµöì±ó`ˆä¯š¢òHjOÉÜ!Šx*Û:Fð‡Ç芠ÆÅ¹?D9vC”+ê:ÕŒóT µv¹!RuI¬›¤‘Ë’ïÆçV£AOYpñl1Dyºà+CäÈgÑEAM:åÈ#«ò?ùÌRDµš§D×Ðè>¶è9¬n8¤ ÃÏᘇ Ä®äÝ# gDÝé°= ¶C!„hãö È;[:£ndl È œXå±Ó €!Í‘œ%^“è‰vYK£¢{4”]7¶£`;Bˆ6¯îü»€±E)£°öhhç|¨…ò{– }œÏ'o“ÒxOÎm°c,ÒGIty¬²ñ@ßçÇ>óÞœÏM±ÿ´ü …ý ÈP“,ñ9ã³Dü“£E±&e¯rVøL«³ZŸìÑÈÆc ’_UUær‚hªì%ç€Ò¨o£…Ü%å©1òrAì3ïÍõ¨*’~¶±1³ùK«ªÑÂ|K®*uä|¦~N^Gs!7'/Œw!å…u1Ùø„ˆr±´Û”/fXæÐÝJ–9-òæÌˆ~a¼F£Þ/fÆHÓAòŒѹÆp1ÞS,¥#} ƒÕx‚èüˆ4*Göh”ås u1Õ8‹\²×$iÓÑ—³yŒ Ø-°ç$ö,Þ‘xü*/’ëIô”Œ*‘«Ùi‚üY‰òò¾›,CslféTEåÊÅDYÙ§´ÜÕjŒdDÑX¢Φ j&01«æròl¬ß\ysVDŸŸÜ7UœËÀóQ°"ÎÁuO=g­XÍg@ê9Üo깜4Wùó©:›isùÔx”Ðø"Kj;isþÿw.æreÛÍm.ÓYqwª¹¨™ìË£#ÿÇcoÔs™øæ2ÂçàœtV\±Æz#q½#:Ñ1ŒÆ3xA½¤sY¤ 4—gÄ»ZsšËis”ò龌üK›ëÕÍåÊs£Ö}±qöåìkIs›Ëô´J(Hóâf²/Ž"½QŸ±Õsxæò™qäÆQŒÀ³öL¡šÏ€Ôs¹9ÞÔs¹áÏØÔ?”gÔÚ:mÎ/.s¹Ú³A5s¿9Îå³ê.©ïå.‰O³—@ê¥ziL½´Ž¼·¼´î²¾à ÷—20¡³'ÙK4"ÇĒì§WB¥ïJY Š•¥ÈµH¸ho¿¤îò:ò6Á(¢Ëã.Çû7ýËë®àös‚“Ï#G¹F8Î'ý°¸×܈x?$ÕF-ÊçbÊ#Mg È'Ï£ë å‘9Okƒ§Óµ€Ú’?G‹&K½MŽó1™ÉÈdÎëÉu·pöP“…¨'+£Cº*ßy+­ÊG’–‹ê˜H¢xoaba~´U}³´ë9ÚU‚%v Cë’íÿFE†ÙL\ÏQä ­>gi¹OÏ0õö)÷~K\S·05uK†š³pK3¨):riµTm¨ê,©nÄ:먚*+¬i²Èz8¥îVÁ“dŠÜ⨼æ9éÒ,—fóV.×·Öì·œý¦ŠFË-~—.=yN5V²QÊÛ4Z-V«ñ¾úû×<®êc®ÍbS{U‹ õ¢ÉEÒ³¶žÚ»†§.NWÃWS‹ µ²e­ºÆñ¦ru›zOî7J«øÿg.É~d¡4œ¥†é¿~•×tÔZ÷†Eïyeˆ\µŒÅ¢½*¯¹ ?zÕ[mëJcŸ²jÝë’w˜Úg|cì°M™ƒ¬6k÷¦z«÷¼6+Ù<1iï•©õ»ÍÙCŒ½±NkÕŽZÓí×õ»šÏ‰±Ú‘kº]Qkjñ°)³Ø«HuÑVCi8K Ó¿*§ ¿’ë¬s£,ÃòjŠ®ÅåsLÃäL–[Ts©aO˜ÕÅ×Pž7Ý:½d]ÍaÎ4ꢽÒÓæŸÍE5†Í!3‹&‹õ½‡QX4½.Ê=±)¨é×âPÍÚp‘7¤­EYçwžkª1”?ë4n–³ö·h²³¸ÔRÃd±Òµ¸d®©l7¿l5õì­uÑdoQõûÿ•ÅÅe]¬E>ûÕ’±dèÿ/‹Ym§­ÁW‹•®úŸ ¦×EK¯Åõj¥kQ¯ ÕûV›æÿ[55îÕêº%ÍÚ´×’6û[âoÌ«åT£ºZ*1{¼ÍaM¬åj˜LÕniQ¯KnüÍûÌ gÆTt]©!R MmÏPö@/³ê¬/ú˜TQÕ/¦êãn¡64µa¯%m?_ÒãoȪL‡d?ª•o¼kIõ–ø—Üø"^vE‰ê¯æ°ãÖgw^’*­>Ws‹¶ºø³œî³PF³¾6é' b%ÌDɆò!)ïµh6¿ŒTãGR\j?*eFtyÿ“½I®÷,±¨G€¶Iò\ê¯)qÒ}l^s²»M9úi£ž—†ÊY­ù]ô}6·ì,^Ԇ˿¶$¿ãyÉ+PÚßk6j«ËÅ)ަò {N*e¶1æªÏ¦Ü»—jó’‘+û¹ ¾&zâJ²R9WÉLҕϧ†`Á̱ïþ®Ò“ºyÜy¬6É´+y䲎AÃS‡ÞU2•çv’vÒlÓ,íßQ ktÃû‘Ü·ÊìÿnCöÌÖ&ÕØ’öb‰´|'c,”žçúú'öÞ\ê[¾"UºÕK6M^k“jY}y™æR-«oãRÕ9©^¢eõmY}³å±áWµê$yiõUîAWÀüJRÉ®!ȈSí/¥šCLlTÕÄTiôÓ!rÕö ­¹Vi-ãÉÏÖä“GW¶Â[¬Om.®‘4öž¦²STË©•—iŠ]…›îÔZë颡2[›TCQ³å³Ú]¢ùZG´–8T¼æSÍå^52M]ŸMó/$÷Z)-ëdº‹Ë¾]}þ]Ï i¥±ë0mü›ÿú×X#_?I9Wê|¦÷ +à–ÏÝ-Ÿ»³öžö™.ÍG>›2µò/J’ž¼´êWlê3FU¬[²ud«û—“ªY»U5/br=SJöõ3YF^›EįÄ qvÕ¿~>‹ýÈu£ Ôl»Þâ6†zbŒY£•1'>Ù©z¦¿:ɶ:5Ö*¸øöÞüâ¨þ„¶èznH+Íå¤ÛœÞ~,™]¼?¿d—jY'›SYwñ4ˆ\-oiÃä¾Uþÿ®—õ‰¨¡³ÛðëgS­KÕIòÒêQªÜƒ®€[Þÿ4ÖûŸZ©•dM…ÖÿÝzWªÏ»Þ«Jït¨žüë±Æ{÷S­|–±H¦4 µ~’ÉQ·¬Uõ)ëZ•>gÒ r5å[®¤SGmo*“}•OIžë‚·j¿²ÿ]SãõÌŸ’T礆úµkö\7…ÔâFm‰½1¤Zª±q¨ ·GT{rH×\´”–ø³ÄßtµÕglµÞ©dUc¡þü¥'d3ˉ˜·íÐübâOÄÙcjÿì¹jÎ1Õ:þµEÖØg’–ªäm/iUÙ2þÙsÕœcj¬ñ_4g'=E#«D’ýäñH~/¤~{Ñt½´ä#K/Ù"®Nª¥j®—Æ_k*E 3ô´xê—§úöÒ<×䦢VëJ¶åä=¦–“cö\µŒ}#kè=·©¨Õz§’m©Êì1US•ÕîŸI‘'E–íß­M:Y©s«ò*UOÌ‚:3äRÿõÄâqFiH©j 5ùj©ÒæE­M*›æ¢¥ˆWËwÂÙãmN³~ñ9©Êç7ÊY\Oª Só~óÞüòÕR•"iY¥²É¶Thö˜š×[žæ—Ÿ–1¯É¢\•ô¬Iö“Ç"éÍŒ8$›MÛKµçƒúŸ'’£Ð¬qrÕ0½´TwÃå²iziÜ«fnêŒLã­µôÒüªºé=l¨QÔ#¶¸ž*.¦%ãónÃå«¥*EÒ²Je“m©Ðì1e­Ð†>{%Ÿ„ÔÞ/Éß×J­^¦òH5jCÆžM:Ë,Sõ ªOþT[Éî’ü/),N1µŒS’ G­õʲâ-ZŠx5毚à ¾hW{õ©¡ÒìjŒ«šY^Ù»d‰j-fáT>Ñ©© ¥¿×%Wu«o5Wú´ú¼ÖÆ‘×uuþ«‘lß««ž¬ÔÊ£’.YMÿj[êþÕÙ—wVY?­¦+ÛH²£þ,¤Zƒj•¬ì}uþ%]Y³‘V“ÕÛÐ¥K%Óþ »ìWs;-ÚóR-VD9ULª™Chb}©z04¾ZÉ¿X¶øÄ¤Šªš˜šî *ÎÆ´,«ü•¥UŸ ÕV Až—5„&åÏÄWÓÄ+Gœ=^1¦%;^‘ß\â#n¨znœx+y¯ÎBzn’V¿êN²4š%)’–ݹùÇÔ|wg] WÎmõWÒ)\Ìb²Çéãæ{%ZuPµ8õÍê$nÚ_‹&gI¥ËV›ø™’X?±ÉòIj ³b¤/õª¦Š¾ÖouF‚_¯ùV¼Õ«½ŽwQ¶?ƒáòs¨Ö~žÖOÓÅÃSuG¶¡s’¢F,_ü¬TÅ”~£mZ¬µ\öU“E•$¯!ç¢z•G¥ÚqSLòHñÙ­<šµòÒ!Q+‰ÃGIò ~ªl‰õ-Ý•R÷’ÆÏžuqPÁI¸ÎPÌ„9!÷’üëÑ%/ûéÖÎk©ù´¬·Ô|KÍ/iYo©ùÆÏ~}lñ¾êUçp6–ä\ª-ñó£²¥$]u²è°ü–yß2ïÏìӈɯ¸Í˜&Cü¨‰ŸM-'¾]aa3g5Q<|-È•¯­BšCÔ cK5–,uqY½«Ï<ßÀSG¤a1cO¸âjQ¿¥¡djÝ™úRõ%®Ù•è•âոɝlÕeS½ceé;©Ÿæ³ÿ4GŸê¿VŠ€«´xä~Õ»I–x*[壽6,e[ø³a¤Å3›*Oj*¨¹ÍRu­Tλºÿd˜d Ëh$y(†PáˆÆj¿C£¬[-sP°×˜2Íy7¯ä/Ë) yîæ<–ækËn^»OKöJRûn.jP¾ÉŠüÙž•ÐcŠ-ú†ÙnFsªeïå³°$ΘÿϨúVy'ÛHßUó@o K‹Î§$Ýì2-5WÍj*g#yÝN{‚«¶U•dËPxÍÒPœ¢ ‰ßR¾ç®å“´*gºpg‰JÔQÝünQù—_T.}ö¢ŠÈ*A2©ªv,Äßáó¾'a”ÆsM&ZÕ·Iq‹Ö’ߨ£ËjàX+Glæ²EÝÜcm©ýJ9ÒúÑ$6§ã`ñsnzžkÉZkÓr$JÔ·ŽZæŒ\)émµð¢œÉ1×FO®÷4^¶5‡¿å5§!lTòVmCíC¶z!s¤!k¢©ëJ-¡¶™$Q}m¦I¨f»Ê°}ˆ¾™·§çÒÇ’ü-#Õ†³ÒêSÌ‹(K{eG†Ÿéiik}ÇÃV•*+ì'X*'(GG†}û³(gŠ<²ä'-ÉvÒx•úÈÚC\ª¾ØÙ–…^M.ª}Š>Òù%ÎÓ곩î!Ýä™–ž]°ÜòýHòxÔ÷­ëÿÖ)›¥†XIÒæVuÒª=šÇ¬Ø“ʺºOv¿½3›á,UG¨²ËJÖïûtñß ˆtuõ÷&n¾3©)æWËLÊaËLZ\gRšÕð*õÑrºåmµœnUÑÔÏÒ¢ð©e%ÉâA5¼J}´¬$¼­–•DMËJ²ø®$Y×—–Ó}CÏRu„*»¬dË龹Τ4ªáUêcQïÉiþײ/³:ÍsOV÷ײ'7¬OKîJ"Ú6œM‘%LΚêï“yCò=oSÿ’Ÿ÷@–ÒoÄxé_Òת'{ºdW¢Ê~ÒH%ýÛ*\U­2­9UbrN’pñ_)N›µº@'u)Ÿ¸Þ2>Ù}à=i™!YgHÖœ•“GK¶/{“Le¿“=â´,ɱ$娩f“ºß¦MÙ}à=YòfS5TëÔÇ¢ä5½”HOΧX7-ŸCÔ>¥ñ+GPýlTi²¾4Îl¤}èJ;üª.æ—J©~»ÚRM=—ªQr¶*ÁªˆëóÎü¹H—*…þeœ<¾‹Ó¾µhfJ’•xz…V§Ÿé9¤Òß©d·QÉW‘ZKÏ,®:oñ2Iy]|w†³”}Öé9MèOuª­æ´¨§ZN¶”Åç,ë³zŸ"«hÚ|”× »DKô³_­ gEWÀtÔ™|/š™¹8î†78¡‰Ÿ ¥v}þ¥ ^òÿiÞeñ0Ën¸8ØI¯î†ç5ô•¶ç©âW‚juâ©:Ñ´ä)[žš²Z“VǨ&ñ’F5m´“"ûÈ Ë§•/j¿3u~I{£ÓâS6K•NÕpÄJæ×‡¬'µ%qNÕzV’gjýß×b©yøTÿJ5'+³}Cý»KÉÔJŸ2ÔVTt=—4~õ3¹L>ãÚÊϺµ]zbi4õxÈö’åøñ“×¥$ù†å%yÚrÒRõQÿ“–z}Vû£Æ²ù€žÍÿßmÉÙM“c_ܾ­ÏâSSŸHš£Oµ­åITÏËîOÖ+m÷T¯®Õx¥KÚªu·1¾EVG—mI¢eÍËSÿ• {2ÊÊWíèÉû:+‘æ{Ú·Yeø±¤¿Û÷Ó–SR}âjÞ§¤¤¾;kìØ5¦N%^µ£#f¶–ÏDÉó:M‡ßO«ÑQ?éùI¢¥ÒßaÌ™Må¡,™¶¿ˆÿŠŸè[¿øõ[—2®^ÿØßzf=—TÚ®–¹’ÅÇôÊWWbe%q®ð¿n˜¹BÏzÍç—JSÎìâ÷é¦9úTÛª“äAõ¼ìþd½ÒV8õI­¯’g9ï”›¶¦«ý©NŠ—LÞ“ÒlÑüT–á3–ô{­–.ªfˉZ³²½d9"Û\¾P{­^yõ'Ü´š«¯N¥•/ \mmÖ?¨”vìS§/iÒè,ÜÔŸpE©,:â™=ÿ¿Oíüß"ëʾØZ>áVæ5§¹R©òÕ§ÍÊ:Kâ\áÿf¾aæ Íc}?áòY=D¼–ï¥ObŸFNö‡·§Çrä)Ž…ÆH5µ¢Z<9|6'íÜÊ{‰|$ÒCaíð[*:2:#Y©oU†ªÞ‡úe”Ï'ß&ÆÐ›bÅò#¦%Qèz—ý,-®¦b½eƒiÞMÆ Í½ë°ù+uÃ厳‘H¡XeQæ®L&C%ª*‡É3»ÚUNž‘²õžJm²zgÇz•+ ~=Ë‘Q;fNîYã¼Ö˜::6"Ö*ÒJ:L«ßPô©3ú4Ï:GG' +§qž~%NCWRöÑTÍä:iH»ª1¦y¡y53ð«±Õ¹nLi¶BxùEqîi.t¤jÇùŒ«zhL‰Å¡îôœÊOöfi4]¡£:åò§B:/ÓÞ;d¹Ä}DËi\LÉk‘|2æil´ò¿Á?éßè‚Eô´”{DCäZãÆ[¦5n®Åy@zg뼚\óÙ ÿŽ'Ÿ ò»Áúç:)FÕ(°^‹#/ö^ÿžUóT®ËäÛcm«‡ìÿ’ñ uIŽ]çxõÁùÊâ׈¦“Pµi0=7Ês…ßÇEÉj…‰ì·Ù®ÊïÛ嵘_—)M^IĘ4O¨¦‚ÇþÎ4jºßÌš9þ37¸ò9ú?§ÓÊæê’ýä]Ÿ7-ãË{Þã«E#ܘã+þ ?ÎlÅ7PŠ;‡Ê’®À*Íby-k!™¢²,W’jœ’× Õ¿E×|ñ3šøi•‡ø*`}όɘ\7Õ÷&î•pöiÃO mO̰|ÑY!ïïi<•\šŒ\éZŽT%ÛGåÞdÕZR¿Y£™—£¯Þ’ÆpêgI5k÷)‹%U~“£ã#•W=Ñ… T#Þ£øSG_mWò,Ï2&ò<Ñ¥8d-d™ÿeo“rxªrbtu,¦‰Vdž"þ,…Ô9Lšu•øÕ­Dò8©¨YG>ùIGE5bFùL©ã¯=æ,1d•j¾«oÓ®tÙ|jÚ¡öÕW„ehq[}Õ}é -ù@Î+Y}YˆÏ9;ßY™Jë&Ï­um®võMŠ9 ¯ú•»éW_Õ¨rÖÔ«o¥H”åé²6ŠÙ2€¼@ÿJ`z4–Wô/ƒ²y¥^q’+(ÍÏ,Õ¦¦ÉqˆçS²¾‰k›Êzr+­´bϲ”ìgúe“R×A%)y'çñ¤zH®^ÒKòj)¯”•+¾úu+)ÿŸ'Nu.DŠ ³‘«1^ŠŽ,{Š0bÊáw5Ö2yöL²Þ¨±ôy#ž%(×ÈiŠxåo øS\}hªD¾ MšGòûY~6±|Õœ¢ß•¶TŽX ªh“øü*j(âeéQ9âš,~‹Òx•“´š%å‘ý](åÊr|ï"œ^K|¶,Á6­"‹±›VKª\GêÊwþÄ!Zã9ª|P­Jz=d_ghÁeK|šK–ŸuQïžÕìÊjýäÓo%i~6›ñ¨O2ì˜TsBonªWô¬§uUÍ«æ|åó¸zõH:£×š;þ\Õ˜c][%Óf=׊ùPe?[¶ÒŸõý<ž~†È²sðþ¨rXÍo¬“ú©}ÉŽÉŸ‚Ò¥dˆ õî§>_‰T4nMå+¢Ö_GŠã–4’ÉŸ`'#ÈVŒÉÑÙÕF}FC™ËÂS­FM³ÓŠÏ*•4›âÛ‡äœèx6iŒþŒÅŽ£¼nˆUïÿQmÐkÙ”jBìße‹ùHûµZr^ꓟd[jûIï´’2šžùí¿˜ÕÆÏ^­U¥ò.}ÏQY4Ìò‚Öõ·M[UêÙ–ÖoÒ[Ðä]<=+êï”Òæd­ÙË]ZŒõ“®”ÕJ£’œSt©¾—£tyfª²‡"iŒo{hŽè›6FÉòò,Ö¹ä‘à-'í+ò˜Òþ“ÖJÓ™‹¥ê¿ñ±„º]rbd#µ’2Âö˜¦£®IuÕØ[Ræƒ\-‹¶V–„—Ôù6~•öV^Šß'ͧ!Ñã,§2YGU÷´žxyk”k*ýÎ~ÒLžY•#õõ{êÙÉû^]"ÒúG˜4 ic&Ç×´c–^…éc&ú^]jû”ýRU˜:†¤“’zDÌĽ;idEÏÍ+?ª*ãu«ã«2\I¦!v Õ\¯Î’x¾àm‹¦’O;5Œ¥¦÷Iµ#'[â­Ê»g2ld ÒOÈÍío'ä:ä×Ú¤ïĨ6ùDωo tæVËМˆ+¼:–æü·µëf©ÔÊ#Ÿü¤™UŸQ>SI£_ÿ|ñR•?‰Q\iÑ_U°ñ’]%ÛoÞ+þßõ¯äUòÚc(G0ÍO•-‘&û›ô –ï—®oÕþz·òêš–SÙ[Õ˜d¡É½¤eöñNþ&$¹’ª—ôÒ|~½»$¬yI½j`v’0Ö;ùtLGYþœ¥>Š‘˜UžôÅù¥K”J³ŽRä™F)ò™IüDW ŸC"_œK*›òï1åÏ)â/2å7~â¯ìÒ?ƒ¶Ôï:•kIõ¯Ò·ÔRcÖ’˜1qe¥;SÒù{Q¬Kª,¨¤Å7¡‹º–(Mϱß^«ª—h©¥Zk©Òº”µ–ijےPKòJ­16’ê-™ŸV™iÖx6³Õô&ö[‹%y-m˜e·Ã{&ç&é¤%FHv+Ñî¢ø…[mùIª ]œó„&fJõiS•ìYm~ÙKš±ÉýªkM<çÈ´¤¬ÈÙ«T{òêT¿ìÕ>'E[É9à¯ôêI‹?­ª²æEfg™ ©µ’còïhªg„Êo¤#ÿsõñ!mVfóAÕ;ÛOÖÝNÜ}ù(T³ˆõýÛB1Ò¤1C:ìY =9"U>äx’jN\oÙ¹Q‰FN'•Þ?ªÏzÉûÎÙÏPê÷aä_8UýÅ‚‰§ôtËrT; ©>«åÛ iEdóË6PÇP¿˜©wê¿5¨6m…¾ìû¯âRŠèwR“^䪲•5eç!WòÞRŸÕ¾f‰Rži⬨¬õ­ƒúê.ó¦R/*[üåÒÿ–œ÷Wþ;64Þg—Ž·ÅDÏÆc 1])¾jÙ_ÌÒ:¥§RVFi³õk û[Ã6—%¾ŽîïËšÓX±sWý7ÿ:·æ4ÎX‰+VícEã19ÿøq¤¼Jc%H-k [TJ\Yøõ‘ZÿuoqU¦«+Û;OO)¾ïæˆúTÿª‹]£Øuˆ=g‰'wSÚ¹èß\²ïÙ¾éNU«gY{Ô;®ê{«¤ïËØ‘ÇñX[dFŠoõyˆ}ÄjR½éP}—–5 :ãŸ::Y^µ²ïuT«¥‘KΨ©ØCÄÕIÌ)]W¬œêï¦)W½?‘^Èÿ»Š.¾Š)Äò“¿¯&ß:õú5‰J¦¥6UÑ©+-ÉŠ–¢aä–ìÚ̶’³}ª2.G G”Li슗u–ŠMþ<ŸvbIÒHªgšYÕo/Äߪ¥˜ YƒÈS;µþh‹s4& ŸõÎ_‰O{ÉrR¯;Õ¯"ég–oëg)»O 5žÕ\òÜJ~êJ½$¿å6=®–oY+êÏa-ßVoéÿÑouoòîR¹7ÙÓZ3m¥’ehòZ¤zO¦Çœ¤·hüéŽzŸü™Bê™Âgýö ¾§ö¤ÑN¶*®Ä’ª“ö²ô]LUÄšø¸ÉuM5T½-ÊŠo™‡Iõ¢ò­e.šyXiVˆŸ‡•fnõó?¥$Pò^ZÍù!K}e¹ô OšcU®ÈÕòë–ôø*[j¨ñ¬æWÙßdOtɆΗzf§I‰TU FŽä\þ4Ee’Öd{qøu‹zLÓÇ…Ïëí9ioeÅÞôû“fRŒ=9›Õþoj/ôD •Ë©4û’uQ¬+f–õ(ëì–߬4íÙ˜Œu­s¶ùܸsV®§ôÊKÓ×´´žÔúêQ©Ù=H§©­¥Ïÿ$mõ¼PïÙòž.{˯‡µq+Ë‹34—cV¯j®¼JŠ»¤!›¿¤·{*¾!`‹V³’M>¯Õð+{Ë®—M™_u¿isPÜÒ¨¬=¶’È©€®¶¬¬|È*§ZÍ©÷z|½,²$YÞ‡f‘Sù(Êðþ©ç# ñÙa÷|áÖGŽîaª±PUœ|FHþ_;ÄYÔà­ªvV’Wñÿ¬¨îRÕ}}hYû9âÕÐRòy¸’„|~¡JÕå¢!¹éûaÃqx õ7¢”Sx¯dï²ÂW}«’Ìþv^~ÓWÍg•$?³F”½w>"ñ¼%úÉËòª¾ ¦Ÿ¤O2ltü·ôbɾ©¬%ù¦Š£RÏ•¼—G#iMà÷Ñ3Õ“\â¿O)æ#MšÏ‰ìW­öE[Ù¾+Uí )™5¿|L•3&Ö’x–QfV󳨍¥Õx‰UWI²!â«Ý/þIÏ9Ù$x®¡x‡Bgw²¦£OZÔ^±§H9µè˜}ç’E‡ÿ>„¯õjÞ³šÕ¾"oMÙwP∋ù o‘T§Üì2òì•3Åç \vEm-'ŸÖEí†y'¦:YÉë\VžJ.MF½FêRÙ{×Ï4KT†­>CÀØ‹g¤$?xŠ®PÉ‘§™ÂÕ9®¼Êi úbÄj™úñå,éè²¹Ù«‚’r.KËYÖsrÖu]—¤Ó2!zÁÎvõ¿…`Vˆ’Œ`ðÕQÊú*ïÅ¿÷á[ÕßX©é•ìUãOíþê±g¢×j:_‰º#hé:MG•/´Z³«¹ê$c'ìÅl”vÊ'±Nx{*¿xY>Zƒ³/ÎIñ E$T{'…‚”=´ÒÕ²â¦ñ{ÅÍveYk³­¡iãÄS²ïèjYQ«õ—Íiï¼/ÉUز’V¿’ÒhÕ§æJ|yµHã‰ã™4ƒ*]òüãŸì»9õ¨¡Z¢ÞeßiØõŠÖ“m¥Ï Iž×f‰]Íêo)»O 5žÕ\ªYŸ^²®¸ÿ¤ñ“­Éïÿ+I‰TU ª÷¼¤M_?yÕS­xÉ» %;)ÆÏÏ'Õ̪4e?t.KÊoý¨7òÿÇD`ù_3`sÍ¿q¢ŠoæäÌÚ }êB2L­h•´÷±¿Æcó$¾9Víã&CÕqŒü[=ös‘Åñä]œýŸ›*ÂÍ£-LúîiÇœô]¾”Ó«Ü1xµTïÿ{õ¢úmÞÕ«Gõ[¿ê­îJÚ)Óä²QÅšQqÒ¨ÕZM¢©­¥ïéYÐ…¬é’%Õz +¼¥ÕÖ|ݘü¦›å©V(v¯`g˜*l&Ó~oÇsÙÙ³¨´Ò­ñß'dåVòd7»÷õˈª¿ÊóŠ®ÌõùÅb–_ïe‘‘×_yíµ$—Î\Ùä¬\åze¯¨šsõ'6 IgùZdè^#æYUA¼ÿÙÈJWþ¬aÃKUõ¹T~f‡TsFÅ×FQ«aétf¡ùÄ{ήÕÈÒóXm8{e99I~ß"–e)1+j)^¢z)=–¡qš)¼tÍlv«÷?9µ{‘U“­Ç,iöe^š®øÙ ¾õy]ü”å\Ÿ&G?½²ã•å3 °”ô^Y%Ç~j²Ö餷Þôwß* Њ«;«Qûçõ™Cìfå©ä²ÈèJõïJª±${›nI<·§÷GÏW² ]è…¬Öš¤GcF¿Ê"'4Õžm ¸*6ö·J•þÑÆŒ—ÝÙÔñ²¿êkŒxuÁMÒ¯±ÊŽ®°[‰¢KýËûJÖKåµHË:ë*Í~O5ÚÉ<Õé‚ÎÀ´*©<_’ê'ËœbW²Ÿ_ÊïÙs=Ñë\D‹ßü$ªm~RÈZl⥻}õëoýã]r×£ôèš×z”6+Òë§y­Gj¸ùYi$“¥Äó˜Xµª¹¬7U¾ø±ï7Äì«)ƒ –㿚¬6eö’%Ūâs‘œC±2*×JRUÉ™’Ç¡åßøÏšÕÆÏ^å™H}UG›Ì‘çžzÏf³Ê~Mš?ô­ƒê­^õõ ö$ù$ÅÒ AOä‰õ"Ú¯D'ñÖ*ËÒØzW"©EþÛtjÇ̉oÀx¯äoI(DÖÆã³s¥ÒœhŒ7ùÕ^:sË;”š#Û¨Ž›¼+ÊI\õêXºxM·¦–I²¡Z£åuµùòIÆøÏûéçr–‹ð4]d]æÊ¹e/Õ¿Ù&®Jâ7ö:ñ“€ø9ø,~?/ª?$½aV}*¨M6é­/A!«¢„ê³FåßÚ´ìá•òÓ²‡·ìáq-®{¸j.5½eÿÿÜÃÅßµìáõÝÃÕ3^µcfá©äÒdD)qïá#Êb'é” ²Äï\”ËclFu©Çäl&­K*Ÿå¿jåwN±–(D~u'F”ü—Y9ª˜Ó©²c¿ä= }W —©° ÇK}MzGoçÒßÍÛÌläýç×T 2¿ƒOª‹–ºÉ^7ªLT®"±RxžØOó©˜J+¦:+beðõ¢K-ßÚ$ÍDÕIWµ—«çlË·6-ßÚ¨dÔk‘ø‰ZÌprÕ·6*ÕO¹~²üU®ÚG1bù/wù·76gEOÀÔc­žûªÏ&â/1ˆw²¬‘ããÓ»éT4úµÈQ [òg(R76Ça+/í_kKúE,Yµ‚ËÖ²ú×´¤bÉÇì8_©,MWö|¡þ%õ¢ òÒSŽ<²ì9ÇQf†=éd—OC,BìyhyÁï´5ùÿý3i‹ßµû-Û¨¿%г{‡êÄ’ÅŽ£¼‰Å·’äÉž¢í¢9…×’Ÿd[jûµžËÕYQŸ ÒN› Ÿ½Z«Jå]RÕ‹±ÒËPXHþ=dӟ«Ïz¶¥õ[û¹\õ§½´9Ù˜ÙK¦ÑÌÊVe'ésEÖjÍz¥ïIe™üÊ—!ñÅ})éŸE5_̦‘®X¡Øg¥LB›Ô’Q½ý‘uH}£ÏVò7·"ÆÊóo7øÔŸLÅÓã¹Á®¼ª “Ö|NÎ5±ß'U¼èJFY•4~ªqJ§ÓléÖÜçrVÞ¢˜Ë⾠γj¾°ÙÎ2WÕi®žóÿÏsYÞ5Î×%e.‹»IóÙ—UcU9¢úîË|e'ÕjãÍeÂ©Ï¾ÌÆ!ž U™S¾E\57äY_i_¬}.³o–T¿è1õZ"ç@•õ¯³(Ô\çróÝ—UµU‰.òÅ\Öò¼½´3¶8—“.qo®u_æûZôs9)wš`Oþ—›xL5÷‡¹œVÓõ¹ÒÞTãC­O=GOs‹æRg él¼4T2•ׂZýK¶—<DzðÕ§fQ²ÒîÌKUê;YRÖ¬<+Cik!ªåìçƒjÖd;ë/¶ëjš¹’e¶4Õ\Iïä*S÷ß2Wxœ]ù›j®¤ï_ª“UO%—&£•¤Ós;ÙÇNmAÞz­û²*â\K?¨¥ÒN(Z9º Šó}$èÌŠç1Ú[µ«ë¥*WbtIk‰ü¦ˆ•–óAó¤ŠVõ— ÉËÞó¹`³#ÿrG>÷'a’çµø³œMS ¨çzÒÛ ŸÏr/þƒžKþ«”᤿E\œkJK­¤šRÕg¯UUª9·bU®¹Ïjª#­Ê²Ô.ÅN{Kû‹B>‡¼´Ê7ñïUëx­~«2ÝÑ 9ð¿é"¼˜+åÊѸ9/çç‚\˜«Ë-•[:·LnÙÜr¹ås+äZåVÌ­”[9×:×&·JnÕÜj¹¶¹v¹ÕsísrkäÖÌ­•ë˜[;×)×9·NnÝÜz¹õsä6Ìm”Û8·InÓÜf¹Ís[æ¶ÈuÉmÛ*×5·MnÛÜv¹ís;äºåvÌí”Û9·Kn×Ün¹Ýs{äºçöÌí•Û;·OnßÜ~¹¹ýsäzæÌõÊ”ëë“;8wH®oîÐÜa¹ÃsGæŽÈ•;&wtîØÜq¹~¹ãsýsr'äNÌ”˜”;9787$wJnhîÔܰÜðÜi¹¹ÓsgäFæFåFçÆäÆæÆåÎÌ•;;wNîÜÜy¹ósãsä.ÌMÈ]”»8wIîÒÜe¹ËsWä®Ì]•»:wMîÚÜu¹ëss7ä&ånÌÝ”›œ»9wKîÖÜ”Üm¹ÛsSswäîÌÝ•›–»;woîžÜ}¹é¹ûsäÌ=”{8÷HîÑÜc¹ÇsOäžÌ={*7#÷lî™Üs¹rÏç^̽œ{)÷JnfîÕÜk¹×soäÞ̽•{;÷nîÜ{¹rïç>Ì}”û87+÷Iî³Ü§¹Ïs³s_ä¾ÌÍÉ}•û:÷MîÛÜw¹ïsss?ä~ÌÍËÍÏý”[û9÷kî—Üo¹ßs säþÌý•û;÷Oîßܹœ¦i†¦k¦–×,­ ÙZQ+ieÍÑ<ÍÕ|-Ô­N[Z[J[F[N[V[^k¥­ ­¨­¬­¤µÖÚh«h«j«imµvÚêZ{­ƒ¶†¶¦¶–ÖQ[[ë¤uÖÖÑÖÕÖÓÖ×6Ð6Ô6Ò6Ö6Ñ6Õ6Ó6׶жԺh[i[k]µm´mµí´íµ´nÚŽÚNÚÎÚ.ÚnÚ®ÚîÚZwmOm/momm_­‡¶Ÿ¶¿ÖS;@;P륤õÖúhk‡h}µCµÃ´Ãµ#´#µ£´£µc´cµ~ÚqÚñÚ­¿v‚v¢6P;I¤ ÖNÖNцhCµaÚ©Úpm„všvºv†6R¥ÖÆhcµqÚ™ÚYÚÙÚ9Ú¹ÚyÚùÚxííBm‚v‘v‰v±v©v¹v™v…v•v¥vµvv­vv½6Q»A›¤Ý¨Ý¤Ý¬MÖnѦh·j·i·kSµ;´»´;µiÚ=ÚÝÚ½Útí>í~ííAí!íaííQí1íqí íIí)íim†öŒö¬öœö¼ö‚ö¢ö’ö²öŠöª6S{K{S{M{C{]{G{[û@{_{O{WûPûHûX›¥}¢}ª}¦}®}¡}©ÍÖæh_k_ißhßißjßk?hsµµùÚT?U¦×OÓGè§ëgè#õQúh}Œ>V§Ÿ©Ÿ¥Ÿ­Ÿ£Ÿ«Ÿ§Ÿ¯×/Ð/Ô'èéë—è—ê—é—ëWèWêWéWë×è×ê×é×ëõôIúúMúÍúdý}Š~«~›>U¿]¿C¿S¿KŸ¦ß­ß£ß«ß§O×ï×ÐÔÒÖÑÕÓןПԟ֟ÒgèÏèÏêÏéÏë/è/ê/é/ë¯è3õWõ×ô×õ7ô7õ·ô·õwôwõ÷ô÷õôõôõYú'ú§úgúçúúlýK}Žþ•þµþþ­þþ½>WÿAÿQŸ§Ï×è?é?ë¿è¿ê¿é õßõ?ô?õ¿ô¿õôõÿ¢¥_3tÃ0L#oXFÁ°¢Q2ʆc¸†gøF`„F±”±´±Œ±¬±¼±œ±‚±¢ÑÊXÉhm¬l´1V5V1V3ÚíŒÕöFc cMc-££±¶ÑÉèl¬c¬k¬gl`¬olhllldlblfljlnlalit1¶2¶6ºÛÛÛÛ;ÝŒŒ]]ŒÝŒ=ŒÝîÆ^ÆžÆÞÆ>ƾÆ~Fc㣧q ÑË8Èèmô1615ú‡G‡GGGÇÇÇýŒãþÆããDc q’1Èlœl 1N1†§ÃŒáÆiÆéÆã c¤1ÚeŒ1ÆãŒ3³Œ³sŒsóŒóñÆÆ…Æã"ãbãRãã2ã ãrãJãjã*ãã:ãZãzc¢qƒ1ɸѸɸ٘lÜbL1n5n3¦·wwÓŒ»Œ»{ŒûŒ{éÆýÆƃÆCÆÃÆ#Æ£ÆcÆãÆÆ“ÆSÆÓÆ ããYã9ãyããEããeã%ã ãuc¦ñšñªñžñ®ñŽñ–ñ¶ñ¦ñ¾ññ¡ñ‘ñ±1ËøÄøÔøÌøÜøÂ˜m|iÌ1¾1¾6¾2¾5¾7¾3æ??óŒùÆã'ãgããWc¡ñ›ñ»ñ§ñ‡ñ—ññ·ño´íÿgh¦aê¦iZfÞ,˜¶Y4KfÙtL×ôLß ÌЬ3—2—6—1—5—7—3W0[™+™+š+›mÌÖæ*æjæªf[³¹ºÙÞì`®a®i®ev4×6;™ë˜ÍuÍõÍõÌ Ì ÍÍÌMÌÍÌMÍÍÍ-Í-Ì.fWsks+ss[s;s{s³›¹£¹“¹³¹‹¹«¹›¹»¹‡ÙÝÜÓÜËÜÛÜÇÜ×ÜÏìaîo`ö44{™™½Í>æÁæ!f_óPó0ópóóHó(óhóóXó8³Ÿy¼Ùß`ž`žh4O2™ƒÍ“Í!æ)æPóTs˜9Ü<ÍažnžaŽ4G™£Í1æXsœy¦y–y¶y®yŽyž9Þ<ß¼Àœ`^h^d^b^l^j^n^f^a^e^i^m^k^c^gN4¯7o0o4'™7™“Í›Í[Ì[Í)æmæíæTóóNó.sšy·yy¯yŸ9ݼß|À|Ð|È|Ø|Ä|Ô|Ì|Ü|Â|Ò|Ê|Úœa>c>k>g>o¾`¾h¾d¾l¾bÎ4_3_5_7ß4ß0ß2ß6ß1ß5ß3ß7?0?4?2g™›Ÿ˜Ÿ™ŸšŸ›³Í/Ì/ͯÌ9æ×æ·æ7æwæ\ó{óóGsž9ß\`þdþlþbþj.437ÿ4ÿ0ÿ2ÿ1ÿ6ÿ}ÿE¿ž7òf>Ÿ·ò…¼/æËùRÞÉ{y7ïçÃ|¯Ë/_*¿L~¹ü²ùåó­ò+äW̯œ_)ß:¿J¾M~Õüjù¶ùvùÕóíóòkä×Ìw̯•_;ß9ß)¿N~Ýüzùõóä7Ìo”ß8¿I~ÓüfùÍó[ä·ÌwÉo•ß:¿M¾k~Ûüöùíò;ä»åwÌï”ß9¿K~×ünùÝóÝó{ä÷Ìïß+¿O~¿ü¾ùùòûç{æÌ÷Ê”ïï“?8H¾oþ°ü¡ùÃóGæÈ•?:LþØüqù~ùãóòýó'äæOÌŸ”œ”?9?$?4JþÔüðü°üiùÓó#ògäGåGæGçÇæÇäÇåÏÊŸ™?;NþÜüyùóóãóä/ÌOÈ_œ¿(Iþ²ü¥ùËóWä¯Ì_•¿:MþÚüuùëóó7ä'åoÌß”¿9K~r~Jþ¶ü­ù©ùÛówäïÌß•Ÿ–¿;OþÞü}ùéùûóäÌ?”8ÿHþÑücùÇóOäŸÌ?•:?#ÿLþÙüóùçò/ä_Ê¿˜9ÿJ~fþÕükù×óoäßÌ¿•'ÿvþÝüûù÷òä?ʘÿ8ÿI~VþÓüçùÏò_ä¿ÌÏÎÏÉ•ÿ:ÿMþÛü÷ùïòsó?äÌÏËÏÏ/Èÿ”ÿ9ÿKþ×üoù…ùßóäÿÌÿ•ÿ;ÿOþßüÑ¡_³t˰L+oYVÁ²­¢U²Ê–c¹–gùV`…Vµ”µ´µŒµ¬µœµ¼µ‚ÕÊZÑZÉZÙjmµ±V±VµV³ÚZí¬Õ­V{k k-kM«£ÕÉZÛêl­k­c­gm`­omhmlmdmbmfmjmnmimau±¶²¶¶ºZÛXÛZÛYÛ[;Xݬ­¬­]¬]­Ý¬Ý­=¬îÖžÖ^ÖÞÖ>Ö¾Ö~Vkë«§u ÕË:Èêmõ±¶±úZ‡Z‡Y‡[GXGZGYG[ÇXÇZÇYÇ[ý­~ÖëëDk u’5Èl ±N±N¶†Z§ZìáÖiÖëtë k¤5Êm±ÆZã¬3­³¬³­s¬s­ó¬ó­ ¬ñÖ…ÖEÖëbëëRë2ërë ëJë*ëjëëZë:ëzk¢uƒ5ɺѺٺɚlM±n±nµn³¦Z·[wXwZwYÓ¬»­{­{¬û¬û­éÖÖCÖƒÖÃÖ£Ö#ÖcÖãÖÖ“ÖSÖÓÖ ëëYëyë9ëë%ëEëek¦õŠõªõºõšõ†õ–õ¦õ¶õ®õŽõžõõ¾õ¡õ±õ‘5ËúÄúÔúÌúÜúšm}iͱ¾¶¾²¾±¾³¾µ¾·~°æZ?Zó­yÖë'ëgëëWë7k¡õ»õ‡õ§õ—õ·õOôqï?ëßèÐoô‚YÈ «`Š…R¡\p nÁ+ø… –*Ô–.,[X¦°\aù …V… +V.´.´)¬RXµ°Z¡maõB»BûB‡Âš…µ k::Ö.t.¬SX·°^aýÂ… 6.lRØ´°Ya‹Âæ…- [º¶.t-lSض°]aûÂ… Ý ;v)ì\ص°{a·Â…î…= {ö.ìSØ·°_¡GaÿÂ…ž…ƒ zzú.Rè[8´pXáðÂ…# GŽ.S8¶p\¡_áøBÿ€ …  '††N) .œZT^8½0²pFaXaDá´Â¨ÂÉ…Ñ…±…1…q…³ gÎ.œ[8§p^a|áüÂ…  ..\R¸´pYáòÂ…+ W®.\S¸¶p]áúÂÄ …I… 7n.L.ÜR˜R¸µp[ajáöÂ…; w¦î)Ü]¸·p_azáÁÂ…‡ î/.Ì*|Rø´ðYáóÂìÂ…/ _æ¾.|[ø¦ð]anáûÂ…y… ó ?~.üZø¥ð[á÷ÂÂÂ…? þ.üSø·ð_ô_³uÛ°M;o[vÁ¶í¢]²Ë¶c»¶gûv`‡öRv½´½¬½Œ½œ½‚½¼ÝÊ^É^Ñ^Ùnc·¶W±W³WµÛÚ«Ûíìööv{M»£½–½¶ÝÙîd¯c¯g¯k¯ooho`odolobojofonoaoiw±·²·¶»ÚÛØÛÚÛÙÛÛ;ØÝìíìí]ì]íÝìÝí=ìîöÞö^ö¾ö>öžööþöAv/û@»§ÝÃÞÏîm÷±¶µûÚ‡Û‡Ù‡ØÇÚÇØýìãì£í£ì#í#ìãíþöûûD{ }’=ÈlŸl±O±‡Ú§ÚÃìáöiöûtû {¤=Êm±ÇÚgÚãì³ìsì³ísíóìóí í ì öEöxû2ûRû*ûJûrû ûbûûjûûZ{¢}½}ƒ=ɾΞbßbßjßfßlO¶o´o²§ÚwØ·ÛwÚÓì»ì»í{ì{íûìéöýööƒöCöÃö#ö£öcöãöö“öSöÓö ûûYû9ûyûûEû%ûeû{¦ýªýšýºý†ý¦ý–ýŽý¶ý¡ýý®ý¾ýžý‰ý‘ý™=ËþÔþØþÜþžmϱ¿´¿³¿µ¿²¿±¿¶´¿·çÛ?Øóì¹öû'ûgûûWû7{¡ý»ý‡ý—ý§ý·ý¯ýý_ôq?WÔ‹fÑ(æ‹…¢U´‹¥b±X.:E·èýâRÅ ëŠK—).[\®¸|q…b«âŠÅ•Š«W.¶.¶)®Z\­Ø¶Ø®¸z±}±CqâšÅµŠ‹k;;×)®[\¯¸~qƒâ†ÅŠ›7.nZܼ¸Yq‹b—â–Å­Š]‹[·)nWܶ¸}±[q‡âŽÅ‹;w)îVܵ¸{±{qâžÅ½‹{÷)îWÜ·Ø£x@qÿbÏâÅ^ÅƒŠ½‹}Š)ö-Z<¬xxñˆâ‘Å£ŠG)[<®Ø¯x|±q@ñ„â‰ÅÅ“ŠƒŠƒ‹'‡O--/+žRUYS]<½xFqDñ´âØâ¸â™ÅsŠgÏ+ž[<«xQqBñ’âÅÅ ŠÇÏ/^Z¼¼xYñŠâUÅ+‹W¯-^S¼®8±x}ñ†â¤âMÅ‹7'§o)ÞZ¼­8µx{ñŽâÅ»ŠÓŠwï)Þ[¼¯8½xñâƒÅ‡Š)>^|¬øDñÉâ£Åg‹Ï_(>_œQ|¦øTñéâ‹Å—Š/_-Î,¾V|½øJñâ»Å÷Šïß*¾]|£øfñƒâ‡ÅŠŸg?+~Zü¸8§øUñëâ7Å/‹³‹_?/~[ü®8·øCñûâÅyÅùÅÅŸŠ?)þZü­¸°ø{ñâŸÅ¿Šÿ)þ[ü¯¨•r%½d–ŒR¾T(Y%»T*Kå’[rJ^)(ù¥°´T©®´tiÙÒ2¥åJË—V(­TZ±Ôº´r©U©m©]iõRûÒj¥UK«”Ú”:”:–Ö(u*­]Z³´ViÒ†¥Kë—:—Ö+mTZ·´Ai“Ò¦¥ÍJ›—¶(mYêRÚº´U©kiÛÒ6¥íJÛ—v(u+íTÚ±´si×Ò.¥ÝJ»—ö(u/íYÚ«´wiŸÒ¾¥ýJû—z”(XêYêU:¨Ô»Ô§tpéRßÒ¡¥ÃJ‡—Ž(Y:ªtLéèÒ±¥~¥ãJÇ—ú—”N( ,X:©4¸4¨triHé”ÒÐÒ©¥a¥á¥ÓJ#J§—F–Î(*).-+Y:«tvéœÒ¹¥óJç—Æ—.,]PšPº¸tQé’Ò¥¥ËJ——®,]Qº¶tMéªÒõ¥ëJW—&–n(M*ÝXº©tsiré–Ò­¥)¥ÛJ·—¦–î(ÝYº«4­twéžÒ½¥ûJÓK÷—(=Xz¨ôpé‘Ò£¥ÇJ—ž,=Qzª4£ôté™Ò³¥çJÏ—^,½Pz©ôJéåÒÌÒ«¥×J¯—Þ(½Yz«ôNéíÒ»¥÷Kï•>(}Xú¨ôqé“Ò¬Ò¥ÏKŸ–¾,Í.}VšSúªôué›Ò·¥ïJß—æ–~(ýXšWš_ZPú©ôsé—Ò¯¥…¥ßJ¿—þ,ýQú«ôOéïÒ¿¥\ù¿’VÖËFÙ,çËV¹P.–ír©ì”Ëe·ì—½rP®+‡å¥ÊK——)/[^®¼|y…r«òŠå•Ê+—[—Û”W)¯Z^­Ü¶Ü®¼z¹C¹}yòZå5ËËÊk—;—×-¯S^¯¼~yƒò†åÊ—7)oVÞ´¼yyËòå.å­Ë[•»–·-oSÞ®¼}y‡r·òŽåÊ;—w)ïZÞ­¼{yr÷òžå½Ê{—÷)ï[ޯܣ¼ùÀrÏòå^åƒÊ½Ë}Ê—)÷-Z>¬|xùˆò‘åcÊG—*[>®Ü¯||¹y@ù„ò‰åå“ʃʃË'—‡”O)-ŸZV^>­<¢|zùŒòÈò˜òèò¨òØò¸ò™å³Êg—Ï)Ÿ[>¯|~y|ù‚ò…å‹Ë•'”/)_Z¾¬|yùŠò•å«ÊW—¯)_[¾®|}ybù†ò¤òå›Ë7•'—§”o)ßZžZ¾­|{ùÎòå»ÊÓÊw—ï)ß[¾¯<½ü@ùþò#å‡Ë–+?Z~¨üxùÉòågÊ3ÊO•Ÿ+?[~ºü|ù…ò‹å—Ê/—_)Ï,¿Z~½üZùò›å·Êo—ß)¿[~¯ü~ùƒòÇåÊ–g•?)Zþ¬üyù‹òìò—å9å¯Êß”¿._þ¶<·ü]ù‡òåùåyåŸË Ê¿”*ÿZþ­¼°ü{ùòŸå¿Ê—ÿ)ÿ[þ¯œs4Gw ÇtòŽåœ¢c;%ÇqÊŽëøŽçN:K9Ë8K;Ë:Ë9Ë;+8­œ•œ•6Nkgg5gU§­³ºÓÎiï¬átpÖtÖr::k;œÎÎ:κÎzÎúÎΆÎFÎÆÎ&ΦÎfÎÎæÎ–ÎVÎ6N§«³³µ³½³­³ƒÓÍÙÑÙÙÙÉÙÅÙÕéîìæìáìéìîìåìíìãìëìçôpöwpz::½œƒœÞNç`积s¨s˜s¸s„s”s¤s´s¬sŒsœs¼ÓÏéïœà pNtNr:ƒœ“ÁÎg¨sŠsª3ÜæŒpNsÎpNwF:£QÎgœ3Ö9Ó9Ë9Û9Ç9×9Ï9ßï\à\è\äLp.v.q®p.u.w®r.s®v®t®q®u®s®w&:78“œ›œÉÎÍÎ-έÎç6gªs»s‡s§s—3͹۹ǹ׹ϙî<àÜï<è<ì<ä<â<æ<ê<î<é<á<åÌpžvžqžužsžw^p^t^r^vf:¯8¯:¯;¯9o8o9o:o;ï:ï8ï9ï;8:9;³œOœOÏœÏ/œÙΗÎç+çkç[çç;g®3ÏùÞùÑYàüàüäÌw~v~q~u:¿9¿;8ÿ8:;ÿ:9ÿ99Wsu×pM7ïZnÁµÝ¢[rˮ㺮çúnà†n»”»Œ»´»¬»¼»œ»‚»¢ÛÊ]Émí®ì¶qWuWqWsÛ¹mÝÕÝn{w w-wMwm·£ÛÉíì®ã®ç®ë®ïnènànänìnânênænînánévq·r»º[»Û¸ÛºÝÜíÜÜÜíÝÝÝ]Ü]ÝÝÜÝÝ=Üîîžî^îÞî¾î>î~îþn÷·§{ ÛË=Èííöqvûº‡¸‡º‡»‡¹G¸G¹GºG»ÇºÇ¸Ç¹ýÜãÝþî÷÷Dw ;Èêžäžâv‡¹'»§º§¹CÜáî÷tw¤;Î=ÃëŽrÏrG»gºç¸cܳÝsÝóÜóÝñîî…î÷"÷R÷b÷÷2÷r÷ ÷J÷*÷j÷÷Z÷z÷:w¢;ɽÁ½Ñ½Ù½ÉìNqoqouos§º·»w¸wºw¹ÓÜ»Ý{Ü{ÝûÝûÜéîÃîîCîƒî#î£îcîãîSîî“î³îÓî3î ÷9÷÷y÷÷E÷%÷ew¦ûªûšûºû†û¦û–û¶ûŽû®ûžû¾û¡ûû‘;ËýØýÄýÌýÔýÜí~á~é~åÎq¿v¿q¿u¿s¿wçº?¸?ºóÝyî÷g÷'÷÷7÷Ww¡û‡û»û§û—û·ûû¯ûŸ›ó4O÷ Ïôòžå<Û+z%¯ì9žëù^çy¡·ŒxK{KyËzËyË{+x­¼½•½U¼•¼6Þj^k¯­·ª×Î[ÝkïuðÖðÖôÖò:zk{¼ÎÞ:ÞºÞzÞúÞÞ†ÞFÞÆÞ¦Þ&ÞfÞÞæÞ–ÞV^oko¯«·­·½··ƒ×ÍÛÑÛÉÛÙÛÅÛÕÛÝÛÍÛÃëîíåíéíííãíëíçõðö÷ðzzz½¼ƒ¼Þ^ï`ﯯw¨w˜w„w´w¸w”w¬w¤wœwŒ×Ï;Þëï ðNðNôz'yƒ½S¼AÞïTïdo˜7ÔîæðN÷ÎðFz£¼ÑÞo¬7Î;Ó;Ë;Û;Ç;×;Ïïï]àMð.ô.ò.ñ.ö.õ.÷.ó®ð®ò®ô®ö®ñ®õ®ó®÷nð&z“¼½›½›¼ÉÞ-ÞïVï6oªw»w‡w§w—7ͻۻǻ׻ϛî=à=ìÝï=ä=æ=è=ê=â=î=á=é=å=íÍðžõ^ðžñž÷^òžó^ö^ô^ñfz¯z¯y¯{oxozoyo{ïxïzïyï{xz{y³¼O½O¼Ï¼/¼Ï½ÙÞïKï+ïïkï[ï;ï{o®÷ƒ÷£7ß›ç-ð~ö~ò~ñ~ó~õzx¿{zy{ÿxÿzÿy9_óußðM?ï[~Á·ý¢_ò˾ë¾ãûþR¾ç×ù¡¿´¿Œ¿¬¿œ¿‚¿’¿¼¿¢ßÚoå·ñWöWñWõWóÛúíüÕýö~ M-¿£¿¶ßÙïä¯ã¯ç¯ë¯ïoèoàoäoâoìoêoæoîoáoéwñ·ò·ö·ñ»ù;ø]ýmýüýíü]üýíý]ýÝü=ü}ü½ýÝýîþ~þ¾þžþþ~/ÿ¿§ ßË?Èïí÷ñöñõûú‡ù‡ûGøGúGùÇøGûÇúýüãüãý~ÿ ¢’?ØäŸìñOñ‡ú§úÃüáþiþ¤º†¦?ÎãõGù£ýsüsý³ý³üóü üóýñþ…þÿ"ÿbÿÿRÿ2ÿrÿ ÿJÿjÿ:ÿ*ÿZÿÿ¢½?ɿѿɿٟìßâOñoõoó§ú·ûwøwúwùÓü»ý{ü{ýûüéþýþþCþƒþ£þ#þÃþcþãþþ“þSþÓþ ÿÿ9ÿEÿYÿÿÿyÿeÿ%¦ÿªÿšÿºÿ†ÿ¦ÿ–ÿ®ÿ¶ÿŽÿžÿ¾ÿÿ¡ÿ‘ÿ±?ËÿÄÿÔÿÌÿÜÿŸíéÏñ¿ò¿ö¿ñ¿õ¿óçúßû?øóüýùþOþÿgÿWÿÿ7¡ÿ»ÿ‡ÿ§ÿ—ÿ·ÿÿŸÿ¯Ÿ ô@ Œ ˜ØA!(¥ 8xAÔKKËËËË+­‚ƒ•‚•ƒÖÁ*A›`Õ m°ZÐ.h¬tÖ ÖÖ :k‚ÎÁ:ÁzÁºÁúÁ†ÁÁFÁ&ÁÆÁ¦ÁæÁfÁÁ–A—`«`ë k°M°m°]°}°CÐ-Ø1Ø)Ø9Ø%Ø5Ø-Ø#Ø+Ø=Ø3Ø'èìììôöz½‚ƒƒƒ‚>Aß wphpHpXpxpDpdpTptpLplp\Ð/8>è NN 'ƒ‚ÁÁÉÁ)Á°`HpjpZ04 NÎF£‚ÑÁ™Á˜`\pv068'8+878/8?\\L. .. . . .®® ® ®® ® ® &×77“‚›‚ÉÁÍÁ-Á­Á”à¶`jp{pGpg0-¸+¸;¸7¸'¸/¸?˜<<<<<<<<<<<Ìžž ž ž ž^^ ^ ^^ f¯¯o¯oooïïïﳂƒO‚OƒÏ‚/‚σÙÁ—Áœà«àëà›àÛà»àû`nðC0/ø1˜,~ ~~ ~ ~ ¿ÿZøO ð¿À õ0Za!,†vX ÐË¡¡†a]¸T¸t¸L¸l¸\¸B¸|Ø*\1\)\9l®¶ W W Û†«‡íÂöáaǰC¸VØ)\3ì®®®®®nnnnnnnnnnv · ·»†Û„Û…Û†Û‡;„ÝÂÃÂ]ÂÃ]ÃÝÃÝÂ=Â=Ãîá^á>áÞá¾ap¿pÿð€°gx`Ø+ìö  û†G…‡†G†Ç„‡…G‡Ç†Ç…LJÃ~á‰aÿpP8 <)<9@o ?Ðè ƒ€ÁÀ`(0 ŒF£€ÑÀ`,0L&“ À`*0˜Lf³€ÙÀ`0XÌ‹€¥Àb` ° X¬V«€5Àj`-°ج6›€ÍÀ`+°Øìv»€ÝÀ`/°Ø‡€ÃÀà(p 8œN§sÀ)à,p8\Η€+Àuà2p ¸\n7€ÛÀà.p¸<€ÇÀà)ðx<^oÀà5ðø|ÞŸ€oÀGà+ðCÁ$`R0˜ S€)ÁT`j0 ˜L¦3€ÁL @T‚*P B Ô‚0ˆ€:P@Ä@#hqÍ R ´4h t‚,ȃ è%EPÝ ô€>0 ˜Ì f³9Àœ`n0˜ Ì æó€Á`!°X, K€EÁR`I°4X,–+€åÁŠ`e° X ¬ V«ƒ5Àš`-°6X¬ Öëƒ À†`#°1Øl6[€ÍÁ–`k°Øl¶ÛƒÀŽ`°3Øìv»½À`O°7Øì ö‚ÀA`p8‡#À‘àhp8ŽǃÁ à$p 8œ N§ƒ³À™àlp8œ.çóÁ…à"p1¸\.W€KÁUàJp-¸\®׃Àà&p3¸Ü n·ƒ;Àà.p7¸Ü î÷ƒÀƒà!ð0x< ƒ'À“à)ð4x<ž/€çÁ‹àeðx¼^¯ƒ7À›àð6x¼ÞïÀàCð1ø| >_‚/ÀWàsð ø|¾ßÀàð3ø ü †*C”ßÀ$ÊäʤÊdÊ4ÊÔÊTÊÊ”Ê0eFe:ezeeZe&% T(A¥J©Tª•¥V )a%¢Ô)õJƒUbJ£Ò¤Ä•„Ò¬´(I¥UiSRJ»Ò¡t*i%£d•œÒ¥ä•¢RPJJÒ­ô*3+}Ê,ÊlʬÊìÊœÊÊ\Ê<ÊÜʼÊüÊ|ÊÊBÊ‚ÊÂÊ¢Ê"ÊbÊâÊÊ’ÊRÊÒÊ2ʲÊrÊòÊ ÊŠÊJÊ*ÊÊʪÊêÊjÊÊZÊšÊÚʺÊ:ÊzÊÊúÊ†ÊÆÊFÊ&ÊfÊ¦ÊæÊ–ÊÊVÊÖÊ6ʶÊvÊöÊÊŽÊNÊÎÊ.Ê®ÊnÊîÊÊžÊ^Ê>ÊÞʾÊ~ÊþÊÊÊAÊÁÊ!Ê¡ÊaÊáÊÊQÊ‘ÊÑÊ1ʱÊqÊñÊ‰Ê ÊIÊ)ÊÉÊ©ÊéÊiÊÊYÊ™ÊÙʹÊ9ÊyÊÊùÊ…ÊÅÊEÊ%ÊeÊ¥ÊåÊ•ÊÊUÊ5ÊÕʵÊõÊuÊ ÊMÊÊÍÊ­Ê-ÊmÊíÊÊ]ÊÝʽÊ=ÊÊCʃʣÊ#ÊÊ}ÊÃÊýÊcÊãÊÊSÊÓʳÊ3Ê“ÊKʋʫÊ+Ê ÊsÊËÊóÊkÊÊëÊ›ÊÛÊ[Ê;Ê{Ê»ÊûʇÊÊGÊÇÊ'ʧÊgÊçÊÊ—ÊWÊ×Ê7Ê·ÊwÊ÷ÊÊOÊÊÏʯÊ/ÊoÊPUˆ*‰*™*©*¹*L•B•J•Z•F•R•N•V•Q•^•A•I¥P*P¥R©UJ©Òª4* V!*½Ê ÂT¨Ê¨ÂU&¡²¨H•YeUÙT”Ê¡¢UN•]Ū¯âT.• U’Ê­òª|ªÌ**«*‹*‡*›*»*§*—*·**¯*Ÿ*¿ª€ª ªª°ªˆª¨ª˜ª¸ª„ª¤ª”ªŒª´ª¬ªœª¼ª‚ª¢ª’ª²ªŠªšªªªºª¦ª†ª–ªŽª¶ª®ª¾ªžªª¡ª‘ª‰ª©ª™ª±ª…ª¹ªµª¥ª•ªª­ªª½ª£ª“ª³ªƒª«ª‹ª‡ª›ª»ª§ª—ª·ªª¯ªŸª¿j€j jj°jˆj¨j˜j¸j„j¤j”jŒj¬jœj´j‚j¼j²j¢j’jŠjªjšjºj¦j–j¶j†j®jŽjjžj¾j¡j‘j‰j±j©j¹j™j…j•j¥jµj­jjj½jƒj£j“j³j‹j«j›j»j‡j§j—j·jj¯jŸj¿ê€ê êê°êˆê¨ê˜ê„ê´ê¸ê”êœê¤ê¬êŒê¼ê¢êŠê‚ê²êºê’êšêªê†ê¶ê–ê¦êŽê¾êžê®êê‘ê©ê¡ê‰ê…ê±ê¹ê™ê¥êµêê•ê­ê£êêƒê½ê“ê³ê‹ê«ê›*DªN¢NªN¦N®S§P§T§R§V§Q§S§U§WgPgTgR+Ô€T+Õ*µZ ©5j­V#jZ¯6¨15®FÕ&µEmT›Õ„šTÛÔµUmW3jJíTÓjVíRsj^-ªµ¤ö¨Ýj¯:³Ú§Î¢Î¦Î©ÎªÎ¡Î­Î®Î¥Î£Î«Î¯.¤Î§.¨.¢. .¬.ª.¦.¡.®.©.­.¥.£.§.«.¯®¨® ®¤®¬®¢®ª®¦®®®¡®©®¥®­®£®«®§®¯n n¤n¨n¬nªn¢n¦n¡n®n©n­n¥n£n«n§î¨î î¤n¯î¢î¬î®îªî¦î¡î©î¥î­î§î«î¯î£¨ ¢¤¬ª¦¡®©­¥£§«¯ž ž¨ž¤žªž¢ž¦ž¬ž¡ž®ž­ž©ž¥ž£ž«ž§ž¯^¤^¨^¬^ ^ª^¢^¡^¦^®^©^¥^­^£^«^§^¯Þ Þ¨Þ¤Þ¬Þ¢ÞªÞ¦Þ®Þ¡Þ©Þ¥Þ£Þ­Þ«Þ§Þ¯> >¨>¤>¬>¢>¦>ª>®>©>¡>¥>£>­>«>¯>§¾ ¾¨¾¤¾ª¾¢¾¦¾¬¾¡¾®¾­¾©¾¥¾£¾«¾§¾¯~¤~¨~¬~ ~ª~¢~¡~¦~®~©~¥~­~£~«~§~¯þ þ¨þ¤þ¬þ¢¾ª¿©Ã äP2( ” …Ò@)¡TPj(”J¥ƒ2@™ Œ!RBjHAÒB0„@:H  #d‚‡Ì Y +DA6ÈÑrB,Ä@ÄC.H€$H„Üò@>( ”Ê eƒ²C9 œP.(7”Ê åƒòC ‚P!¨0T*•„Š@Å 2Pi¨8T* •€ÊC JPu¨Tª Õ„j@U ÚP-¨*Tª Õ‡š@¡zP¨Ôjµ€šC –P+¨ Ô굆ÚB¡NP;¨+ÔjuƒºC= žP/¨7Ôê õƒúC Ð h04 …†A#¡áÐh4šM„ÆBã¡IÐhh24š Mƒ¦C3¡Ð,h64š ̓@ó¡…Ðbh´Z-…–C+¡Ð*h ´Z ­‡ÖA MÐFh3´Úmƒv@Û¡Ð.h7´Ú íƒöC ƒÐ!è0t: ƒŽCÏ Ð9è1tºžB'¡çÐiè tz…Ao¡oÐ(©æ ªù½€®@É4· äšKPˆæôº %Ñ܆Rj®A)4w¡0Í è3tú‚nBw ÷ÐWètº½„^Aé4©5 &•&ƒ&“æ”^£Ð¤Ñ܇ÒjMFR£Ò@µF£Ñj ¬ÑiP^ƒiLƒÆ¨!4¸†ÒØ4¤Æ¬±k¬‹Æ¡¡5N £a5œÆ¥á5‚FÔH·Æ«ñh|šÌš,šìšlšš¬šœš\š¼š<šÜš|šüšš‚š"šÂš¢šBšbšâšRš’ššÒš2š²šršòš šŠšJšÊš*šªšjšêššššZšÚšzš:šºššúš†šÆšFš&š¦šfšæšVšš–š6šÖš¶šöšvššŽšNšÎšnš.š®ššîšžšÞš^š>š¾š~šþšAššš!šÁš¡šášaššQš‘š1šÑš±šñš šqš‰šIšÉš©š)šéšiššYšÙš™š9š¹šyšùšš…šEšÅš%š¥šešåšš•šÕšUš5šµšušš šMšõšÍš-šíšmš­ššš]šÝš}š½šýš=ššƒš#šÃšCš£šcšãšš“šSšÓš3š³šsšóš š‹šKš+šËšš›š[šÛšëškš«š§š'šgšçššGšÇšûš;šš»š‡š{š7š×š—šWšš÷š·šwššOš/šÏšPíWMˆö›&‰6©6™6¹6L›B›R›J›Z›F›V›N›A›^›Q›I«ÐZP«Ôª´j-¤ÕhµZX‹huZ½Õ´˜Ö¨5iq-¡5k-ZRkÕÚ´”Ö®uhi­SËj-§uiy­ µ’Ö­õh½ZŸ6‹6³6«6›6»6‡6§6—6·66¯6Ÿ6¿¶ ¶€¶¶°¶¨¶ˆ¶˜¶¸¶„¶¤¶”¶´¶Œ¶œ¶¬¶¼¶‚¶’¶¢¶²¶Š¶ª¶š¶º¶†¶¦¶–¶¶¶Ž¶®¶ž¶¾¶¶¡¶‘¶±¶‰¶©¶™¶…¶¹¶¥¶•¶¶µ¶­¶¶½¶ƒ¶£¶“¶³¶‹¶«¶›¶»¶§¶‡¶—¶¶·¶¯¶¿¶Ÿv€vv v°vˆv¨v˜v¸v„v¤v”v´v¬vŒvœv¼v‚v¢v²v’vŠvªvšvºv†v¦v–vŽv¶v®vžv¾vv¡v‘v±v©v‰v™v¹v…v¥vµv•vv­vv½vƒv£v“v³v«v‹v›v»v‡v§v·v—vv¯vŸv¿ö€ö ööˆö°ö¨ö˜ö¸ö„ö¤ö”ö´ö¬öŒöœö‚ö¼ö¢ö²ö’öŠöšöªöºö†ö¦ö–ö¶öŽö®öžö¾ö¡öö‘ö±ö‰ö©ö¹ö™ö…ö¥ö•öµöö­ööƒö½ö£ö“ö³ö‹ö«ö›6N‡ÂIádpr8 N §€SÁ©á4pZ8œÎg„p&€AX «`VÃX Ã0ë`=l€1…° Æa6Ø„­° ¦`;ì€iØ 30 s° æaa vÃØ ûàÌpV8 œ Îç€s¹á\p8/œÎ€ Â…à"pa¸(\ .—€KÂ¥àÒpY¸ \.W€+•áJp¸*\ ®×€kµàÚp]¸\®7€ÂáFp¸)Ü n·€[­à6pk¸-Ünw€;ÂàÎp¸+Ü îw‡{½àÞp_¸ÜáAðx(< „GÀ£àÑðx,<O€'ÁáÉðTx < žO‡g³áYðx.<ž/€‹àÅðx¼^¯€W«à5ðjx-¼^o€7›àÍðVx ¼ Þï€w»àÝðx¼Þ€‡à#ðaø(| >Ÿ€O§àÓðø|>_€/—à+ðeø*| ¾߀o·àÛð]ø|¾?€ÂàÇðø)ü ~¿€_¯à×ðø-ü~„?ÀŸàÏðø+ü A’ ¡HR$’ CR )‘THj$ ’I‡¤G2 ‘LˆQ!JD@ˆÑ"0‚ zD‡Á#bBp„@̈!bE(ÄŽ8'B# Â"âB„GDDB܈ñ!^$3’ÉŠdC²#9œH.$7’ɇäEò#‚Ha¤R)ŠCŠ#%’H)¤4R)‹”CÊ#ŠHe¤R©ŠTCj Õ‘šHm¤R©‹ÔCê# ‘HS¤1Òi„4CZ!-‘H¤5Òi‹´CÚ#ŽH'¤3ÒéŠtGz ÝžH/¤7ÒéƒôCú#È`d2Š C†##‘È(d42‹ŒGÆ!‰È$d22™ŠLCf Ó‘™È,d2™‡ÌEæ# EÈBd ²YŠ,C–#+•È*d5²Y‹¬C6 ë‘Èfd²ÙŠlC¶#;È.d²Ù‹ìCö#ƒÈ!ä0r9ŠCŽ#'SÈiä$r9‡œE."›È äºÞº^ºžºº!ºÁºAº~º¡ºaºáºº‘ºQº1ºÑº±ºqº ºñºIº‰ºÉº)ºiº©ººéº™ºYºÙº9º¹ºyºùº…ººEºÅº%º¥ºeºåº•ººUºÕºµº5ºõºuº ººÍºMº­º-ºmºíºº]ººÝº=º½º}ººýºƒºCºÃº#ºcº£ºãºº“ºSº3ºÓº³ºsºóº ºKº‹ºËº+º«ºkºëºº›º[ºÛº;º»º{ººûº‡ºGºÇº'º§ºgººçº—ºWº7º×ºwº·º÷ººOºº/ºÏº¯ºý7]}R}}j}¨>¥>LŸBŸ\ŸLŸVŸAŸ^ŸNŸJŸQ¯ÐgÒz¥Ô«ôj=¤×èµzXèuz½Õô˜Þ¨Çõ&=¡7ë-zRoÕÛô”Þ¡·ëi½SÏê=§wéy½ õ’Þ­÷è½zŸ>³>‹>«>›>»>‡>§>—>·>>¯>Ÿ>¿¾€¾¾ ¾°¾ˆ¾¨¾˜¾¸¾„¾¤¾”¾´¾Œ¾¬¾œ¾¼¾‚¾¢¾’¾²¾Š¾ª¾š¾º¾†¾¦¾–¾Ž¾¶¾®¾ž¾¾¾¾¡¾‘¾±¾‰¾©¾™¾¹¾…¾¥¾•¾µ¾¾­¾¾½¾ƒ¾“¾£¾³¾‹¾«¾›¾»¾‡¾§¾·¾—¾¾¯¾¿¾Ÿ~€~ ~~°~ˆ~¨~˜~¸~„~¤~”~´~Œ~¬~œ~¼~‚~’~¢~²~Š~ª~š~º~†~¦~–~¶~Ž~ž~®~¾~~‘~¡~±~‰~©~™~¹~…~¥~•~µ~~­~~½~ƒ~£~“~³~‹~«~›~»~‡~§~—~~·~¯~Ÿ~¿þ€þ þþ°þˆþ¨þ˜þ¸þ„þ¤þ”þ´þŒþ¬þœþ¼þ‚þ¢þ’þ²þŠþªþšþºþ†þ¦þ¶þ–þŽþ®þ¾þžþþ¡þ‘þ±þ‰þ©þ™þ¹þ…þ¥þ•þµþþ­þþ½þƒþ£þ“þ³þ‹þ«þ›>ÄÄjHjHnHf3¤0¤2¤4¤6¤1¤3¤5¤7d0d4d2( €4( *ƒÚ4­6è ˆAo00j0L€Ì‹Áj 6e°Úà40ÖÀ\Þ Dƒdp<¯ÁgÈlÈbÈjÈfÈnÈaÈeÈiÈmÈcÈkÈgÈo(`(h(d(l(b(j(f(n(a(i(e(m(c(k(g(o¨`¨h¨d¨l¨j¨b¨k¨c¨f¨e¨i¨a¨n¨ghdhhh`¨o¨mhlhbhjhfhnhahihehmhchkhghoè`èhèdèlèbèjèfènèaèièeèmècèkègèoh`dbljnfaeimkco˜`˜hg˜d˜f˜j˜b˜a˜n˜l˜i˜e˜m˜c˜k˜g˜oX`XhXlXbXdXjXfXnXiXaXeXmXcXkXoXgØ`ØhØdØlØjØbØfØnØaØiØmØeØcØkØgØo8`8h8d8b8l8j8f8a8n8e8i8m8c8g8k¸`8o¸h¸d¸l¸b¸j¸f¸n¸a¸i¸e¸m¸c¸k¸g¸ox`xdxhxlxjxbxfxaxnxixmxexcxkxgxoø`øhødøløbøfA¿BѤh4šM††¡ÉÑÔhZ4 šM‡¦G3 ÑL¨QU¢*BÕ¨Õ 0Š zT‡¢¨ÅP#jBq”@ͨ%Q+jCí(…:Pu¢ Ê¢êB”GEÔJ¨õ¡^43šÍŠfC³£9Мh.47š͇æAó£Ñhq´Z-‚FK ¥Ð’hQ´4Z-‹–CË£ÐJhE´2Z­†VEk ÕÑšh-´Z­‡ÖEë£ Ð†h#´1ÚmŠ6C›£-Жh+´5Úm‡¶EÛ£Ñh'´3ÚíŠvC»£=Ð^hO´Úí‡öFû£ƒÑAè@t(:€C‡£#Бè(t4:‹ŽC' Ññè$t2:†NE§£3Йè,t:‹ÎCç£ ÐEèBt1º]Š.CW ËÑ•è*t5º]‹®C×£Ñ è&t3ºÝ‚nG·¡;Ðèntº݃îC÷£Ѓè!ô0z=ŠC£'Гè)ô4z=ƒžC/ çÑ‹è%ô2z½Š^C¯£7Лèmôz½…ÞC¡Ñèô1z}Š>CŸ£/Зè+ô5ú}‹¾G? ïÐè'ô3úý‚~CC°P, – KŠ%ǰXJ,5– Kƒ¥ÅÒa鱌X,¦À Ä”˜ Sc ´Œé03`z Å0Ì„1Ã13fÁHÌŠÙ0 ³cŒÆœ‹1‡¹00“07æÅ<˜Ë‚eƲbÙ±lX,'– ËåÁòbù°üX¬V+ˆÁŠaE±2Xi¬8V+•ÅÊcå°RX¬"V «ŒUÁªbÕ±jX ¬&V«…ÕÅê`õ°úXC¬Ök„5ÁšbͰæX ¬%Ö kƒµÆÚbí°öX¬#Öë„uÁºbݰîXO¬Ö ëƒõÆúbý±~Ø`l6€ Á†cC±Ø(l$6 ÁÆbã°ñØl"6 ›ŒMÁ¦aS±éØ l&6›…ÍÁæbó°ùØBl¶[Œ-Á–b˱eØ l%¶ [­ÅÖ`ë°õØl#¶ ÛŒmÁ¶a[±íØl¶ÛƒíÆöbû°Ø~ìv;ŒÁŽbÇ°ãØ ì$v;…ÁÎbç°óØìv»Œ]Á®aW±ëØ ì&v »ÝÁîb÷°ûØìö{Œ=ÁžbϱgØ ì%ö {ƒ½ÆÞbï°÷Øì#ö û‚}ƾbß°Pcˆ1©1‰1™1¹1…1̘ʘҘژƘ֘ΘޘÁ˜Ñ¨0f2FШ4ª*#dÔµFب3"F½Ñ`D˜Ñh4q#a4-F«‘4ÚŒ”Ña´FÚÈY#gä.£hŒ’Ñmô½FŸ1³1‹1›1«1»1‡1—1§11·1¯1Ÿ±€1¿±± ±°±ˆ±¨±˜±¸±„±¤±”±´±Œ±¬±œ±‚±¼±¢±²±’±Š±ª±š±º±†±¦±–±¶±Ž±®±ž±¾±±¡±‘±‰±©±±±™±¹±¥±…±µ±•±±­±±ƒ±½±“±£±³±‹±«±›±»±‡±§±·±—±±¯±¿±Ÿq q€qq°q¨qˆq¸q˜q„q¤q”q´qŒq¬qœq¼q‚q¢q’q²qŠqªqºqšq†q–q¦q¶q®qŽqžqq¾q¡q±q‘q‰q™q©q¹q¥q…q•qqµq­qq½qƒq£q“q³q‹q«q›q»q‡q§q—q·qq¯qŸñ€q¿ñ ññ°ñˆñ˜ñ¨ñ¸ñ„ñ¤ñ”ñŒñ´ñ¬ñœñ¼ñ‚ñ’ñ¢ñ²ñŠñªñšñºñ†ñ¦ñ¶ñ–ñŽñ®ñ¾ñžñ¡ññ‘ñ±ñ©ñ‰ñ™ñ¹ñ…ñ¥ñ•ñµññ­ññ½ñƒñ£ñ³ñ“ñ‹ñ«ñ›1ÄjJbJjJfJn 3¥0¥4¥2¥6¥1¥5¥3¥7e0e4e2)L€ 4)M*“Ú™4&­ 1éL¸‰0Á&Ìd0¡&£Io2›H“Åd5™L6e²›&Úä4±&ÆÄ™\&ÁÄ›$“hr›<&ŸÉkÊlÊbÊjÊfÊnÊaÊiÊeÊmÊkÊcÊgÊo*`*h*d*b*l*j*f*n*a*i*e*m*c*k*o*gª`ªhªdªlªbªjªfªnªaªiªeªmªcªgªkªoj`jhjljdjbjjjfjnjijajejmjcjkjojgê`êhêdêlêjêbêfênêaêiêeêmêcêgêkêo`hdblfjnaeimckgoš`šhšlšdšbšjšfšnšašišešmšcškšgšoZ`ZhZdZlZbZjZfZnZaZiZeZmZkZcZgZoÚ`ÚdÚlÚeÚmÚhÚnÚjÚfÚaÚbÚcÚgÚkÚoÚi:`:h:d:l:b:j:n:f:a:i:e:m:k:c:o:gº`ºhºlºdºbºjºfºnºaºiºeºmºcºkºgºoz`zhzlzdzbzfzjznzazizezmzkzczgú`zoúhúdúlúbújúf ÁCñ$xR<†'ÇSà©ð”xj<-žO‡gÀÓãqž q®Ä\kq‡qŽà\pÇpŽãFœÀÍ8‰[p ·áVÜŽ;pwâ ÎâîÂy\Ä\Âݸ÷â>< žÏŠgdzá9ñÜx.<ž/€çÅóãñBx>¼0^/ŠÇ‹á%ð’x)¼4^/ƒ—ÃËãðŠxe¼^¯ŠWëã5ñx-¼6^¯‹×Çëá ð†x#¼1Þo‚7Ûã-ð–xk¼Þo‹·ÃÛãñx'¼3ÞïŠwûã=ð^xO¼7Þï‡÷Åûãðø |>ŠÇã#ðQøH| >‹Ã'àãñIøD|2>Ÿ†OÅgàÓñ™ø,|>Ÿ‡ÏÅçã ð…ø"|1¾_Š/×ã+ð•ø*|5¾_‡¯Å×ãñ ø&| ¾ߊoÇ·á;ð]øN|7¾߃ïÃ÷ãGðøaü ~?†Åã§ðÓø ü$~?‡ŸÅ/àçñ+ø5ü"~¿Š_¯ã7ð›ø-ü6~¿‹ßÃïãñø#ü1þŠ?Ã_àÏñ—øküþ¿Ãßàð/øGü3þÿ†ÂCˆ$D(‘œHF¤#ÒI‰ÔD*"%‘‚#Ò™ˆŒD" ¡ @ T„š0zBI Lh (a"ŒFèœ 3a!HÂJP„°ÂIÐK0G¸à ‰ 7á!|„—ÈBd&²ÙˆDv"‘“ÈMä!òy‰D~¢ Qˆ(B&ŠE‰âD ¢$QŠ(M”!ÊåˆòD¢"Q‰¨LT!ªU‰êDM¢Q‹¨CÔ&êõ‰zD¢ÑhB4&Z-‰VD3¢9Ñ”hM´!ÚíˆöD¢#щèJt&º݉nDo¢ÑèEô!ú=‰þÄb 1ˆL !†ÈáÄHb1ŠMŒ!Æ㈠Äxb"1™˜DL%¦Óˆ)Ä b1“˜MÌ%泈ùÄBb±ŒXJl$–‹‰ Ä"b±–ØFl%V+ˆ•Äb5±œØBl&6{ˆÝÄ.b±ØI¬'öûˆÄ~â(q„¸@&牃ÄYâ q•¸Bœ$Ž'ˆÓÄ)âq™¸D\$n·ˆ›Äuâqƒ8GÜ!î÷ˆûÄâ!ñˆxB<&žψÄsâñ’xM¼!Þo‰÷Äâ#ñ‰øB|&¾_‰s¨9©9‰9¹9™9̜œʜҜƜڜ֜ΜÁœÞœÉœÑ¬0fЬ4«Ìj3dÖš5fØŒ˜uf½Ù`ÆÌ¨Ùh6™q3a6›-fÒl5ÛÌ”Ùi¦Í³Ýì2ófÎÌš3cÍ’Ùmö˜½fŸ9³9›9‹9»9«9‡9—9§99·9¯9¿¹ 9Ÿ¹¹€¹°¹¨¹ˆ¹¸¹˜¹´¹¬¹Œ¹”¹„¹¤¹œ¹¼¹‚¹¢¹’¹²¹Š¹ª¹š¹†¹º¹¦¹–¹¶¹Ž¹ž¹¾¹®¹¹‘¹¡¹‰¹©¹™¹±¹¹¹µ¹¥¹•¹¹­¹…¹¹½¹ƒ¹³¹“¹¿¹«¹‹y€¹£¹§¹»y°y¹¯¹¹‡¹·¹—¹›y¨yˆy y¸y˜y¤y´y”y„¹ŸyŒy¬yœy¼y’y¢yžyŠy²y¾y‚y†yšy‘y¡yŽy¶yºy–y¦yªy‰y±yy™y©y…y•y¥y¹y®yµyy­yy½yƒy£y³y“y‹y«y»y›y‡y§y—y·y¯yy¿yŸù€ù ù°ùù¨ùˆù˜ù¸ù¤ù„ù´ù”ùŒù¬ù¼ùœù¢ù‚ù’ù²ùªùŠùºùšù†ù¦ù–ùŽù¶ù®ùžù¾ù¡ùù‘ù±ù‰ù™ù©ù¹ù…ù•ù¥ùµùùù­ù½ùƒù“ù£ù³ù‹ù«ù›9ÄjIbIjIfIn ³¤°¤´¤²¤¶¤µ¤±¤³¤·d°(,™,-€Ei-*‹ÚY lÑZ4½Eg1XP f1ZLÜBXÌ‹…´X-6 eqXì¯ÅgñXÜÚÂYœÆÂZ2[D‹`ÉfÉnqYxKKV‹dÉiÉaÉeÉmÉc)a)n)i)eÉk)`ÉgÉo)h)m)l)d)k)c)b)j)o)g)f©`©h©d©l©b©f©j©n©a©i©m©e©c©k©g©oihili`ijibidifiniaiiieicigimé`ioikéhédélébéjéféaénéiéeémécégékéo`hdlbjnfiaemckgo™`™h™d™b™l™j™f™n™i™a™e™m™c™k™o™gYhY`YdYlYbYjYnYfYiYaYeYmYcYkYgYoÙ`ÙhÙdÙlÙbÙjÙnÙfÙaÙiÙeÙcÙmÙkÙgÙo9`9d9h9l9b9j9f9a9n9i9e9m9k9c9g9o¹h¹`¹d¹l¹j¹b¹f¹n¹i¹a¹e¹m¹k¹c¹g¹oyhy`ydylyjybyfynyiyayeymycykygyoù`ùhùdùlùbùjùf !CÉ$dR2™œ #S)ÉTdj2 ™–LG¦'3ÉL$@*HT’*"Õ¤†Ô’0‰zRGH”ÄH#‰“&’ Í$IZH–äH†´’v’"m¤‹I‰t4)<é$=¤›ô’™I™—ÌCæ&³Ùɬd62Yˆ,Hæ s’ùÉd.²0Y„,J'‹‘¥È’d ² Yš,G–%Ë“ÈJdE²*Y…¬LV'«‘5Éd-²6Y‡¬KÖ'ë‘ È†d#² Ù˜lJ6#›“-ÈÖd+²%Ù†lG¶%Û“ÈŽdW² Ù™ìDv'»‘=Èžd/²/Ù‡ìMö#ýÉä r09œF%‡#Éä(r49†KŽ#Ç“ȉä$r29…œJN#§“3È™ä,r69‡œKÎ#ç“ È…ä"r1¹„\J.#WËÉÍär+¹’\K®"W“kÈmär#¹ÜA®'ב»Èä&r7¹‡ÜKî#ûÉÓäò,yÖ~ÖþÖÖÖÁÖAÖ!Ö¡ÖaÖáÖ‘ÖÖQÖÑÖ1Ö±ÖñÖ‰ÖqÖÉÖIÖ Ö)Ö©ÖiÖéÖÖYÖ9Ö™ÖyÖ¹ÖÙÖùÖÖ…ÖEÖÅÖ•Ö¥ÖÖ%ÖeÖ5ÖÕÖUÖÖåÖ ÖõÖuÖµÖ-ÖÍÖMÖ­ÖmÖíÖ½ÖÖ=ÖÖ]ÖýÖÖ}Ö£ÖÝÖ#ÖÃÖCÖƒÖÖãÖcÖ“ÖSÖÓÖ3ÖsÖ³ÖóÖËÖKÖ‹Ö ÖëÖ›ÖkÖÖ«Ö+Ö»ÖÛÖ;Ö[Ö{ÖûÖÖ‡ÖÇÖGÖ'Ö§ÖgÖÖçÖ—ÖWÖ×Ö7Ö·ÖwÖ÷ÖÖOÖÖP[ÛgëWëkR[2[rÛ7kˆ-̖Җ–Á–ޖʖƖږѦ°e²¥µ¥³6¥MemMmÓØ´6؆Øt6ƒMoCm˜ÍhÃm&a3Û,6Òf³Ym”ÍnsØhcsÚXgsÙx›dm›Û–Ë&زڲÙrز۲Ø2Û|6¯-·-¿­€-¯--§­ -Ÿ­­ˆ­°­¨­˜­¸­¤­´­”­„­Œ­¬­¼­œ­‚­¢­’­²­Š­š­º­ª­†­–­¦­¶­Ž­®­ž­­¾­¡­±­‰­‘­™­©­¹­¥­•­…­­µ­­­­½­£­ƒ­“­³­‹­«­»­›­‡­§­—­·­¯­­Ÿ­¿m€m m°mmˆm¨m˜m¸mŠm²m”m¤m’m„mŒm¬m´mœmºmšmªm¼m‚m¶m–m†m¦m¢m®mŽmžm¾mm¡m‘m±m‰m™m©m¹m…m•m¥mµmm­mm½m«mƒm‹m›m£m³m‡m§m“m»m·m—mm¯mŸm¿í€í í°íˆíí¨í¸í˜í„í¤í”í´í¬íŒíœí‚í¢í¼í²í’íŠíšíºíªí¦í†í–í¶íŽíží®í¾íí¡í‘í‰í±í©í™í¹í…í•í¥íµíí­ííƒí½í£í“í³í‹-•šúf ¡RR_mI©P* •ŒJK¥£ÒPaTr*•‘Ê@¥§RP P JI©(ˆRSJKÁBé(=e P £ŒN™(‚¢(3e£ì”…²RNЦHÊA±Cq”‹â))‰òP^ÊMù¨,Tf*+•ÊNå rS¹¨œT*•—ÊO  R…¨¢Tª0UŒ*A§JR¥¨2TiªSŸ¨ÔWê õ ±‡Ú“ؓۓٓÚSØÃì)í©ìiì©íéìéí*»ÒžÖžÉØ3Ø3ÚvÈ®¶ƒv]k‡íˆ]o×Ù vÔŽÙv“·v³Ýb'í6»ÕNÙY»ÝÎØ9»Ãî´ vÞNÛ]vÉ.ÚÝvÝk÷ÙsÛsÚ«Ø+ÛsØsÙ«Ù«Ú³Ú³Ù³Ø‹Ø‹Ù‹Ú‹Û ÛKØ Ù ÚKÚ Ø3ÛóÙóØóÚóÛ«ÛkØkÙkÚkÛëØëÚëÙëÛسÛËÚ+ØËÙ+ÚKÛËÛËØKÙÚÛ›ØÙ+Ù›Ú›Ù›Û[Ø[Ú[ÛÛØ[ÙÛÚÛÛÛÙ;Ø;Ú;Ù;ۻڻػÙ{Ø{Ú»Û{Û{ÙûØûÙûÛûÚÚØÙۇ؇ÙGÙGÚ‡Ú‡ÛÇÚÇØGÛGØ'ØÇÛÇÙ'Ù'Ú'ۧاÚgØgÛ§ÛçÚçØgÙ§ÙØÚçÛçÙgÚÛٗؗڗٗÛWÚ×ÚרWØWÙ7Ø×Û×ÙWÛ7Û7Ù7ڷڷطٷÛwØwÛ÷ÙwÙ÷ÛØ÷ÚwÚÛØÙÚ÷ØÙÚÛOØOÚOÙOÛÏÚÏØÏÙ/ØÏÛ/گدÚ/Ù/ÛoÚoدۯÙoÙoÛïØïÚïÙïÛØÚÛŸØÙŸÚŸÛŸÙ_Ø_Ú_Ù_ÛߨßÚßÛßÙ?Ø?Ù?Ú¿Ú¿Ø“9’:>ÛC!ŽäŽoö0GG G*GJGZGG&‡Â‘Ú‘Á‘Þ8Ò9@GF‡Ò¡r¨CãÐ:ìÐ9 ½s £ÃäÀ„Ãì°8H‡ÍA9¬»ƒv8Nã`œÃåà¢CpHÃíÈìð9r:r8¼Ž¬ŽlŽ\Ž,ŽÜŽìŽ<Ž|޼ނŽŽâŽbŽüŽÂŽ"ŽŽBŽ’Ž¢ŽRŽÒŽ2޲ŽrŽòŽŠŽ ŽJŽ*ŽÊŽjŽªŽêŽŽšŽZŽÚŽ:ŽºŽúŽŽzކޯŽFŽ&ަŽf޿ޖŽŽVŽ6޶ŽÖŽöŽvŽŽNŽÎŽŽŽ®Ž.ŽnŽîŽŽ^ŽžŽÞŽ~޾Ž>ŽŽþŽŽAŽÁŽ!ŽáŽ‘ŽaŽQŽ¡Ž1ŽÑŽŽqޱŽñŽ Ž‰ŽÉŽIŽ)ŽéŽiީޙŽŽYŽÙŽ9޹ŽŽEŽùŽÅŽyŽ¥Ž%Ž…ŽåŽeŽŽUŽ5ŽÕŽ•Žu޵ŽõŽ ŽŽÍŽMŽmŽ­Ž-ŽíŽŽ]ŽÝŽ޽Ž=Ž}ŽýŽŽƒŽCŽÃŽ#ŽcŽ£ŽãŽŽSŽÓŽ“Ž3޳ŽsŽ ŽóŽ‹ŽËŽ+ŽKŽkŽ«ŽëŽ›Ž[ŽŽ;ŽÛŽ»Ž{ŽûއŽŽGŽÇŽ'ާŽçŽgŽŽ—ŽWŽ×Ž·Ž7ŽwŽ÷ŽŽŽÏŽOŽ/ޝŽoŽ:-ŽNJ'¡ÓСtr:ŒNF§ 3ÒèôtJ: Ð ‰VЩi­¤Õ4Dkh- Ó­£ ´žFiŒ6Ò&§ ÚB›i’¦ií ´•¶Ó,ÍÑÍÐ<í¢Z¤%ÚM{h/™öÑYè¬tv:ÎIç¢sÓùè¼t:?].@¢ ÓEè¢t º8]Œ.I—¦KÑeè²tyº]‰®H×£ëÒuèÚtMº]®FW¡«Ó•éªtsº݈nL·¤[Ð étSº ]Ÿ®A·¦ÛÒmèVt;º=ÝîHw¢;Ó]é.t7º;݃îI÷¢{Ó}é>t?z=€L¥ûÓƒèáôz =ŒE¤GÓcèqôXz"=“žEO gÓãé)ô$z.=žLO¥çÓsèéô"z1=^@/¡—Ò éôrz½‚^E¯¤×ÒÛè­ôz;½šÞ@¯£wÑ;éõôFz7½ƒÞLï£÷Ó›è=ôAú½—ÞB¦ÑGècôQú$}‘¾DŸ /ÓÇé3ô)ú*}>MŸ¥¯ÓWèóômú}޾Aß¡ïÒ7é ô}úý€~D?¤ŸÒïè·ôú=ý˜~A?£?ÑéçôKú3ý~M‡8¿Ñ¯è/tg¨ó+ý†NæLêLî s¦p¦t¦r¦q¦v¦u¦sfpft¦wfr*œ€Sé*'äÔ8ÕNØ©u"N½ÓàÔ91'ê4:MNÜivÚœV'á´8N»“r’NÆI;NÎÉ:]NÞ)8ÝNŸSrfqfvz¢3»3‡3›3«ÓãÌåÌéÌíÌãÌëÌç,è,â,à,ê,æ,ìÌï,é,å,á,î,ä,ã,í,ë,ç,ï¬à¬ä¬æ¬ê¬è¬ì¬é¬á¬î¬â¬ã¬å¬í¬ç¬ë¬ïlàlèlìlälâlælálîlêlålélílëlïlçlãìèìàìäìììâìêìæìáìîìéìåìãìëìíìçìïàìäèâêæîéáåíãçëïœàœèœìœâœãœäœêœæœîœáœïœçœëœéœå\à\èœí\ä\â\ì\ê\æ\î\á\é\å\ã\í\ë\ç\ïÜàÜèÜäÜâÜìÜêÜíÜîÜåÜãÜæÜéÜïÜçÜáÜë<è<à<ä<ì<â<ê<æ<î<é<á<å<í<ë<ç<ã<ï¼à¼ä¼è¼â¼ê¼æ¼î¼ì¼á¼é¼å¼í¼ã¼ç¼ë|â|ì|ä|è|à¼ï|æ|ê|î|á|é|å|í|ã|ç|ë|ïüàüèüäüìüâüæüê a˜$Lr&Ê$cR1©™¤LJ&-“†IǤg20™˜Œ ÈŒžÑ1£`ÔŒ’ƒ2FËhƒ1FfgÌŒ…±2$cg(FdxF`lŒ“q0 C3nFb8†e|Œ‡ñ2.& “™ÉÊdc²39˜œLn&“‡ÉËäg 0ù˜‚L!¦0SŒ)ÊaŠ3%˜RLI¦,S†©Ä”fÊ3˜rLe¦ S©ÈTgª25˜šL-¦6S‡©ËÔgê1 ™L#¦1Ó„iÊ4cZ0-™æL+¦ ÓšiË´cÚ3˜ŽL'¦3Ó•éÆtaz0Ý™žLo¦Ó‹éËôcú3˜Ì`f3„Æ g†2#™Ì(f 3–ÍŒgÆ1˜‰Ì$f 3™™ÊLgf0Ó˜YÌLf63—™ÇÌa0ó™…Ì"f1³”YÂ,c–3+˜•Ìjf³†YˬcÖ3™ Ì&f3³…ÙÊlg¶1;˜Ì.f7sœ9Áìcö2ǘ=Ìæ ³Ÿ9ÄœfN1'™ÃÌæsž9ËœaŽ2™ Ì%æ2s…¹Ê\g®17˜›Ì-æ6s—¹ÃÜcî3˜‡Ìcæó„yÊ3_˜äl›ŒýÆ|eR±©Ù”l 6„M˦cÓ°éÙ lF6«`VÉ‚¬ŠU³bµ,Ì"¬ŽÕ³8k`M,Á¢¬‘µ°$‹±fÖÆZYе³ÖÉÒ,Ë2,ǺXåY‰Y7ëa}¬—ÍÂff³²ÙØlv6›“ÍÍæeó°Ø‚l!¶0›ŸÍÇe‹±ÅÙRl ¶$[„-Ç–e˳Ø2li¶ [™­ÄVd«²ÕØêl ¶&[›­ÃÖbë²õÙzl¶!ÛˆmÌ6a›²ÍØlK¶9ÛšmŶaÛ±íÙ¶l¶#Û‰íÌva»²ÝÙnl¶Û—íÃöf{±=Ù!ìPv;Ì`û³#Øaìpv$;ŠÃŽf'°3Ùñì8v;–ÊNd'±SØÉì\v;›Å.b§±óØùìv!;]Ì.a—²ËÙeìjv »Š]ÉnfW°Ø5ìZv=»ŽÝÁnc·³[Ù½ìFv'»‹ÝÍîa7±ûØýìö {˜=Ä^`³ÇØ£ìEö<{„=ÞfO±'Ø“ìeö{–½Æ^g¯²WØsì ö&{‹½ÃÞfï³Ø{ì]ö û˜}Ä>d_°ÏÙgìSöû’};eß°_ØìGö3û‰}ϾcC¸Pîû•MÆ%å’pɹ0.%—‚KÃ¥åRs©¸Œ\.=—Ž9€ËÄ)8§äÔœ†ƒ8”C8§ç Ìi9‡sFã,œ™#8’³r6Žâ윃sr Gs,çâ8ŽçNä$ÎÍy8/—™ËÂù¸l\V.;—“ËÅåàrsy¸¼\>.?W€+Ää s%¹\q®W”+•ç*pe¹2\9®4WŠ«ÌUä*qU¸ª\5®:ט«ÉÕâq5¸º\m®WkÊ5ãšpõ¹\K®לkȵáZs­¸¶\;®=×ëÃuâ:s½¹Ž\7® וëÎõãús}¹ž\n7€Èõâ†rC¸ÁÜ0n87’ÁæÆpS¸ÉÜ(n7ž›ÈãÆrS¹Ütn7‰›ÉÍæfqs¹yÜ2n)7‡[Ä-äs ¸ùÜrn·’[Á-áVsk¸µÜ:n=·ÛÄmä6s[¸mÜVn;·ƒÛÉíâvs¹=Üî·—ÛÏåŽpû¸ÃÜqîw‚;ÉâÎp§¹sÜYî ÿÍõÕ•‚OɇñÉù4|j>Ÿ–Oǧç3ðùL<Àƒ¼‚Wòj^ÅC¼†×ò0ð:^Ï£<ÆxoäqÞÌ[x‚'y+oã)ÞÎ;yšwð Ïñ,ïây^àEÞûy‰÷ò™yŸ…ÏÊgç³ñ¹øœ|1¾_”/Ìä ñ9øü|n>/ŸÏ×çKó¥ør|E¾_’/Á—åËðÅù|¾*_™¯ÄWã«ó5øÚ|-¾&_‡¯Ç×åëó ø†|#¾)ß„oÌ7ã[ðÍù–|+¾ ßšoÏ·ã{ó=ù^|¾ßoËwá;ðøÎ|G~?€ïÏæ‡ñCù~|_~?ïÃwåGò£øüp~4?†ËãÇóøIüD~2?…ŸÆOå§ó3ø™ü,~6¿ŸÃ/àñsùùü~)?_Ì/ç—ñ+ø•ü*~ ¿š_ǯå×óøMüF~ ¿™ßÊoãwðÛù]üN~7¿‡ßÇïåðûùƒüaþœ?ÆŸäOðGù#üiþ –¿ÀŸãÏó§ø+üeþ•¿Ä_äoñ7ùüuþ6—¿Ã?à_ð/ùûü+þÿ˜È¿áßòø'ü{þÿšÆä?ñOù|ˆð™ÿÂå¿ñÏùP!©DH&$RaBjB*R é„4‚ZP i…ô‚F€¥Q€DÈ hLÐ :Á  B&Á(à‚I ³@ xÁ%ØA° ´`Ü‚$8§à<‚(°Bf!‹À>!§UÈ&drœKÈ#äò ù„B~¡°PZ(#Ê …bB¡¼PA(** …rBI¡ŠPU(!Tj Õ…jB ¡¦PJ¨-Ôêõ„úB¡ÐTh,4 „ŽÂ:a­°FX/t: «„ÕÂJa…ÐBh#´Z Í„!B;¡¥Ð\h- ú „^B¡ÐWØ"lv;…]Ân¡»ÐEè)ôú C…AB7¡«0XØ#ìö û… Â6a³°]Ø$l& “„ñÂ8áœpY¸$œ¦ …aÂHa´0\˜"ŒF „±ÂáŠpQ¸ \Ž §…SÂqá¤pF8+œ ‡„#ÂQá€pPh/, s„¹Âtaš°P˜),Ï„—Â<á©0[˜%Ìf„ûÂMá¡pOx"<îw…GÂsá…p[¸.\n·„¥Âga™ðQø$¼Þo…/ÂWáðAx/¼– ß„1TL"&“‰ÉÅbJ1LL%¦S‹iÅtbz1ƒ˜QÌ$*DPTŠ€¨U"$jEXÔˆˆ¨õ"*DBÄE“hÝ¢$ ¢(ºD^äDVdD§ˆ‰Ñ.R¢M$E‹X@Ì'æó‹VÑ,æs‰9Åìbn1›˜GÌ*f½bÑ'zDZ,. ‹EÄ¢b!± XB,%–Ë‹åIJb±ŽX[¬/6kеÄzb]±´X]¬&V«ˆMÄJbE±“ØAl/v+‹ÄÆb±ØVl-6[‰Ä–bs±©ØBl&Ö{‰=Ånbg±»ØCì*v{‹}ľb?±¿8@$‹CÄaâPq¸8B)ŽG‹“Ä1âq¢8V/N§ŠãÄÉâtqš8Cœ)Î爳Åyâ\q¾¸@\$.—ˆ‹Å¥â2q…¸\\%®W‹kÄuâZqƒ¸^Ü(n7‰ÛÅmâq§¸UÜ"î÷ˆ{Åâ>q¿¸K<"‰GÅCâAñ”xRKŸ¤ÒGé¹ôNz#½’ÞJ¯¥P÷7)‰û«âþ"%s'u¿—ÂÜ)Ü)ÝÉݩܩÝiÝiÜÜÝéÝéÜ p+Ü™Ü[íVºUn­[ã†Ý:7âÆÝ¨sÝ&·Á­w[ܤÛì&Ü”Ûæ¶ºín‡Ûé¦ÝœÛåfÝŒ[r‹nÁÍ»}n¯Ûíö¸³¸3»³º³»³¹ó¹s¹s»óºó¸sºs¸ º ¹ ¸ó»‹º‹¸ »‹¹‹»K¸Kº+»«¹K¹Û¸«¸«ºK»[»[¹;¸ÛºÛ¹Û»+¸Ë¸ëºë¹ë»ë¸ËºË¹k»{¸»»¸+ºË»{º{¹kº«»k¹k¸º;¹;º;»»º»¹»¸û¹û»¸º¹»û¸ûº{»‡»‡¸‡¹‡º+¹›º›»›¸›¹Gº[¸¹»G¸ÇºÇ¹G»G¹Ç¸Ç»'¸[º'º'¹'»çº¸§¸·¹ç¹ç»§º·¸·º·»w¹wºw¸g¹§¹—»W¸Wº—¹§»g¸—ºº¹W¹g»gº¸»»º—¸¹W»w»÷¸÷º¸÷»÷¹O¸OºO¹O»Ï¸Ïº¹º»Ï¹/ºÏ»/¸ç¸×»7º×¹7¸/»7¹×¸×º/¹¯»o¸¯¸¯º¯¹o¹oº7»o»ï¸ïºï¹ï»º¹¸»ŸºŸ¸Ÿ¹Ÿ»_¸_º_¹_»ß¸ß¹ß»ßº?º?¸?¹¿¸¿º?»¿¹C<¡ž¤ž$žž”ž0OràQx’y2x2zÒyÒ{ÒxRyÒzR{T¥ôdòhžžžÞžIž ž‰žnž.ž®žažAžž¡žîžÁž!žþž¾ž~žžážÉž)žÙžYž™žžižéž©žž±žÑž1žQžqžž‘ž9žùžyž¹žžñž…žEžÅž%ž¥žåžžež•žÕžUž5žµžužõž žžMž-ž­žÍžížmžž]žÝžž=ž½ž}žýžžCžƒžÃž£žcž#žžãž“žÓž3žSž³žsžóž ž‹žKžËž+žkžëž«ž›žž[ž;ž»žÛžûž{žž‡žGž'žžçžÇž§ž×žWž—žgžwž·ž7žž÷žžOžÏžož$Þ¯ždÞ¤ÞPïO oJo˜7¹7Ä›Ú›Ê›Æ›Ö›Î›Þ›Ñ zoo&¯Ú«ò*½ ¯Ö«ñB^Ä {u^½×à5z /æ5{-^Ü‹zm^Êkõ’^“×áµ{i¯ÓËxY/ïuy=^Ÿ×ëu{9¯è¼¹¼Ù½Ù¼¹½9½9¼Y½Y¼™½’·7¿· ·€7Ÿ7¯7·˜·¨·°·ˆ·¸·„·¤·Œ·¢·´·²·’·‚·”·œ·Ž·¬·†·º·¶·–·¦·ª·š·Š·±·¼··‘·¡·ž·¾·®·¹·™·‰·©·…·¥·•·­··“·³·‹·£·µ·½··¯·‡·§····—·»·›·«·ƒwˆw w°ww€·¿·Ÿw„w¸w¨w˜w¤w”w´wœw²w¬wŠwªw’wŒw‚w®w¼w¦w–wŽwžw¶wºw†wšw©w¢w‘w‰w±ww¡w¾w¥w…w¹w™w•wµww­ww½wƒw‹w³w“w£w‡w»w§w›w—w«w·wŸw¿÷°÷€w÷÷ w¯÷¨÷œ÷”÷¼÷„÷¢÷´÷¸÷¬÷Œ÷˜÷‚÷¤÷ˆ÷š÷’÷Š÷º÷²÷ª÷¦÷†÷–÷®÷ž÷‘÷¾÷¶÷¡÷÷Ž÷‰÷½÷¥÷­÷…÷ƒ÷•÷™÷÷µ÷©÷÷¹÷±÷«÷£÷³÷›÷“÷‹7ÔâKâKêKæKî ó¥ô¥ò¥ð¥ö¥õ¥ñ¥ó¥÷eðeôeò)|€OéSù@äSû4>؇ø´>Oï3øPæ3úpŸÉGø(ŸÍgõ‘>‹Ïìc}œÏé£}ŒÏá³ûŸËÇûDŸäsû<¾Ì>Ÿ¯˜/‹/¿/Ÿ/¯/ÏëËêËæËéËáËî+è+à+á+îËå+â+ì+ä+éËí+å+í+ê+ã+ë+ç+ï«à«ì«ä«â«ã«è«ê«æ«é«á«î«ï«ç«ëkê«åkäkàkèkækî«íkìkékákâkåkíkãkëkçëàkïëäëèëìëâëáëéëîëêëæëãëëëíëåëç‹þK¼G üJu\¿ýçÆü+f‹{þ¨sýê·¾£ÓÅÜ?ö‘:~Ì=âË×ß!ÍØW¿õǧ>>+ˆì™°õÿ®¼’ýHIB¿Jž$(ýY]Ň6¶yÿ­)>v?Oìb-þãþi»Ž‹óÄÆ˜úÆ—.&ïùÓã'Æ×‚ùú]ÿˆæçøñ«”ß7:]âVò«UÅã#¹ÿJTI¨œ~7ÚLJÄð_šß]BøþkL,¿Åzþ¤}üÉ5þŽ<ÿtÿÄòû»óÄ7Þ$DWÿ¿KŒüG>ñëwôLŸÐؾ3FÝ##Sâäý«u&dþ„¦ßµ›?=þŸš÷W2ûUûï¬ówçþuÇ$‡¸N„ÅÝbÔ1SF\ÇÕòwÙQbíëOê4._ÿ«ùˆŸñå%¡2Žo±µFççgÝÅ­Íè­¿²íßógÚàõÇ4r\?snãÃIbuÐ>Ê–ÊO䊓„$ù!ϸZãÃgÜTqϘP¹ý¬±Ø¬)öx?¤ ŠÕÁ×I‚ò¨œÇO‡‰éõóUlk©-ºV~=C\‘+4š\¢×%„ÛèòŒ{”ÿÉö¯‘müä”ÌïÁsósK\ž˜¸¹g¥”qÖFrðß°¢è»Oâ­(jèrO ¯ñ[KâåŸZž¿+Ǹ{$Tžñ—ãÅ3ƒÏ³ÑwâèzˆŸ#¹Žù:œ.á£Æ|Žüû£Ã?i‰>ʪÿÍrþ3z[¸ßý®|ã÷Ÿ¿?ðª#çŠ}wø«W7Ÿˆ#ãÒ¿Q;‰ÓHtí$‹R H&~÷èQóÈѽäû7DC‚ü&£¿.,‚ï˜ò˜%•T¦ OÙCßP…ŸéÚ?æ5h¾Ó•1šÖ¢×F¥ ^uh”ˆ÷24Jþ«¹3­(ò:Ù^¥˜G‰­ükm&NÛICb~>’4oñã2Rji#<"\ߥi5±÷KòÃâ‚û¥ !öÚ˜9 ÿŽÿJ~qÙ5úêS†@?Zÿ}ýã’j¸Ò†$ ’XÊ(×qõHˆn#ùM+·B?¥ïmá9#·£?Rv9¥ô¯&<}/g÷—2ÆáÇqÛvübK 6íúŒ!½,ÌoiÈß~Ñ¿ùnÜ'“Äá±É~\Eƶpy"l²hQ;¦–@]²Ë. »ØöÍðQÓú=0`1ÉBåôD3pg•ôÇèaAŸ‘ç‘d±;j9¡÷Á»@¸d¢F«ï«IòceI#æˆëþ"ØÂÃüþ~BJ´‚¿{eIC~ŽÃÁç—ÀýÇ_±²è±7m,uiý6‘6š 8ýž<§ ì+ÓBØosÞ=ÖŸN‚£Qà¤E9ÛüuÌô—]ŽzLD¤‹<Å.ïp-CAÒ®‰*ë€4ÃyMù£ÏïH3X‹?GóðF-AÁk=Æ3þòïøS .AþÈn]¶‰@Œ6æ 1õIì(??C¾„Ë$öõ†ë9ÜBôŽÔnÀ¡_´%ýq’ |F¶ÇeqÿäÜ ÓsÆ;û¹>c¬-¿¦Hé×}À§¢žgbjýÿoKÜ.™¢îÁ§Œ¿g@DqƃÂãw|âÿ¿‰îOGË´Ï?-Qƒgú™Û°®âZkøS™` .Ÿº“F󙀿DÒÿ5¾|º ¾g ÷†p/ ¾sý‹Û–˜d?4÷Y%æþñÓBðÝCd܇ü¶Ø B#ø|P[ޝµÿ3q8ò4þwΑxÛIèSÌ`nÂG øW€³°ÀNà/ñZþ™Ài*`=I#ú…G–¨Ïq >ÂyI)ÛuÆ[ÿÎ%ôc¼ß¡Š‹õ[L3…Ç ð˜ýÐe²(‘3e„®¡(±3º>#G ´Ç”¿[+a­‘6Y4ø¦5>ár‰"Òw~õýXL}þY_ ¬ö¯ð¥„÷ž!˜ã˜->cµ…ï+a¶ø&ïï!p.þ+Fø]ü3Ñ ñ‘˜ó|XH`é<öƒ&,BZiÿæ™þí{á¯N^á§~&$ü Sài ô£güïoþí#¤ Ja?¥˜¿=.<ôû,i£¥Ø¾y‹ÐMÒ½"= zRõ=—ÏÀ“¬è³Eïþ¤‹‰Ö#Àôc‘c…K$ò9câïûÂ{„ßCFF)ýïk æ?eÄ]Rô”,$ê}=ôC_‘ÿëû,ÿ€ ~‚ú}æ˜æ‰ôöè³üü;fßø¾ÖîQž3?ÆI,Õ¿Õ‡Pÿ)-£Ÿóî±zMöˆ«`¯”"m$åÕ…? I˜/·þüd=\?¨}7úÎ[ƈէ ’O\ãýéYþºSHÂG ØLà4ù-âgÝ3ú­M÷Iй1Eßê22þ ønEÕ¤ìA#¾9þ7òô×FñŒ!}6e¼"rxäÏAño³¨@ÌI¬Þ¾ÇŸê~9tÐ ú[ºøϧÂ?ÿß]Eö -Áý;}àì–$B3ÉBÂOÝIã=B@›I~s„ßá Z{ ötÛßF†Ÿ>‚ŸwDΟ4â:rï¼JëŸ)ÉñãC½Iý÷=±‰Ü‹¢ß!GÝ—Âÿ$p~ŒŒ#¿¦§…"¨´oÃ)¿ïr‘wÉ"êo7‰|‹ÉÏo6Il{ä›R’ýTxsG|ÇŒ)YHlsÅ4f²(-É~9ׯRlôÑßF’2ZKüé¢R‡ÆÐ/¶5ÇÄgÌãK1fþbã+8ÿke;'¿’ItŠ_Ë".¤üqÿõÇW§±¥È9Ãÿ%PÊøã^ 1º ¬21´nþJ}G×_L¼Æ·Ì»UÅLÝ’âò‘˜$¿qÿ »Žìß~ñ³Ï„Úu¤õüì=1õË ÿ´¯ø |ƽ†„ÅÁ¨^UÊ÷¶Î”Qz'>JĶª˜×9{\óÅFó'¢Êï¦ß•Ó¯,0¶y~•â+ñVùk>×NâûO¬ñwv°?½žß±?=Otÿüýÿ*ÇÁ²þ˜âI\‘þwõP¹Ä´æÿŠß%Fþ¿#ŸØÆúÕ¾Plýõ¾}¼ŒAãfŒ¶«&FÞ¿š/ºâ;ÿïìñÉ£Óÿ ûò‹ž~%³_µÿÎ:wîßYwLrˆëDøWÜ-þ|šD<޽åï²£ÄÚןÔi\¾þWóñ«ö¸tÿ»:‰o±µø ~upLŠ©&¶þÑ÷—˜ú$‹a…8¿1æ'°®À'Aû3E² m¤“1‘ˆ/'É¢É,I¬²‰>^üû$tüÄøqlú Žoè/Zcã9þTqÏ»ÝÅ,·Ÿ5›5EµÇÐxs\þˆÕQ¯Võ9B\ÏZ£¯&¡½~~ö—6ãÒJlcÆ«èç°˜âiÆp~)ÏØGùŸlÿ:ÙÆON?{ÍC~n‰Í?wôSTìµQ÷îÿ_¬(êè1=H¯1i!æµ$–טùüSòürüu„ñš9þû=3ø&¸|Ÿõ F|õðëè~uGŽÿ¨Q¹ËþF‡Ú}þ¤Uÿ[åü'"æ_!ßÄFá¿'zçmù»O.ÁÔ‰^?Ç/4÷q]%4ÿ»Æú»ÖœGÕHäuÔ”°§S1k>~<ÿlQ-.¦–?9Vbõóo]Obôò븗'ŒîwäX>c·ý„Ñýíáß`ßÑw¦@{pªÄ\ûw­9¡V¬Ùî?Íxg}à¿´Âß’òÇ …¿‡0,¢Ol=â3Fà ßëo‰OÀÿ8}?>þã©Rùß+xÌïÿy™6 š=¸6:M`ŽïZJø½‰à7¨Fæÿä ü7Wøƒ2ÑÊÉ~Ìà"æqcZËïŒ÷?>Ïèõ±ÑGÎû_[aä»%‚¹ üp|è‚gÿ5]â%2r®d1Ê=¦Rpˆß$¯"2å ¼±*­]~xÒŸÔŸám‘培_]x O´Þðc\DÿŒÎQLÑð»ç¦ÁA<Ænµ‘¾I‚4›6â¬Ûîþo‹Q¹–ÞÏòŒO$Œ.Å„E¿¨ÜĶ¿ý3Üü·5ûßæþ–ðgeù&ŸøI/cÄ.Óé=ásÇWs­…Ÿ ‚¯þÿ'¿²£ØòÈb*ý[¼2n.ÿô¹9~’ /Å|:ùùlò;Rüù„Û‰!ênyb‰*ŘN- “^ü9ŠIzñ­KLLŒo¼ ΣǨØè®Ç¿Æ{ZŽŸV~>¯…ç¸þ=1²"ÓðàØü~¶ß“süïÿŒÏÿ5ò –aÌrо†Ø¤ügä9oÔTý§û”à´ý7©ÿ :ø.%è'»Ž¹ö¯²öÿkÚ ÓnøûÕSþˆrñ½GžGŽ'¿+8y‡Ï‡F¬¾z¬£„K*º$¶G|çÔ=¨n{H÷ЄöyÍ‘'Ý”\V¥6ð[2i£É0øÝ°õV÷÷d~俚6+úÃ6¾7c×Zlå_k3qÚŽíùHð÷jñç2Xjÿ†1ªVÖ/¥¿5Òæb®™ÓøØðïØù¯ä—]g Xôw›î./áßÖ?.©fôÓ„S$Æü¸þu„èŠçàÈœº‡føž»{´¶íò »ÿH±­-nÛŽ_l ¯ øýwÄ´‚íñî|¿–1$üžÁï™Þƒb×X ¶ê?4ÌOL-‘g>4ŽYb+C?b_ìû&úÓœßgzÂŒ\aøI$0z²ˆç‘Èy™(å„Þ#D?3Æ­¢Údì»| >ÒƒµøßXYÔ•ÄüÍmÂVösìÝc]¤Û ä1ÿ®ÄŸÑK¤_Gœî¡1ŸN"#Qô˜›ê¨ú ¦ĸШ4á±-.yÇåØ"uL²Î½Ç¢Æ¸Øãzl>¾1>v)üÚŸ"ãzøùýIÑcw¤ VÒŸåç§uÑ÷€_EÆ€?ΠQõuÖ}p[Úˆ§¨QO¸è¿vî„é9p6‰®—ïyöh- ¡ÈþžîÈ,jÄÞù]qÀgÿ]»@ô8šð] úÊþÉ] þÜÇÇ£ž£Æâÿ ]âíîOFËߨ‘ßeŒà/|Äà«ØÖš,$ðQ×½“ÏD÷—¿ÆW2Å &"Îl˜9*¿ÇCÜgìÑN¿:«üÜ?~Zøy_Ä}&bç¨øå’ßÝþD¿'ÿ±>þgæ„>ÅŒÜÑÃÇ,{>c:%nÿ -ÇtGý®:ø”ú³Ü"w÷ì?~™+úi5ðT3¡TÁ÷ËÑéЧޘg ?e¡Q8~n ì–L´ØÙçwGù»µs,Žüµ´íœäô;áTîû±ÿ¾/ý‰qyÊÏO†£ž`~íkÿµþë~ü÷çÿÏþÿMÜ©?üæOaÿ7Fˆi§–YLÒ‹ž¶'(s=…$ ~RH!¡‘)±#ûGOò«?Éçç–x?[¢Ûý뎮îqJ>¦˜×·êá±5cÄÝÐ÷„þ8%Å5G÷Ÿfù·ûw\÷V~‹Jò½¸³ú¡ï°ß¡ú÷ùP¤Åå9ñ÷Š?é ??Gÿ¾ª˜kcß¾—¢[n°”þžYþM§ŸOSßkã¶²˜ì'îèwŒn%ÿFžþÚ(Þ=JìøUDÄßîÿJ‹ŠN“0½Eê+ºNþ„.þܽTÆ?ñ4öÏŒùWQûÅl=Q¥ÿc„_ÿmdàyG &ؾÞ£Ïö{Ôß›è{Rp̈¾/m8ÅEÆ‘Øé#ÿ†$*u÷ ¸Õ~ш–=HßeømàÐä!ßë74$EÈ÷_ûM%§Ô2ÒøÿÞ4UH:éed‘QF&ÿßú§ d€2”2T2Ô2 œ´2`ˆ ½ ƒ T&Ã(Ã$—AÈ0Ë°È C¬r²É dØe8dÐþ:§?gü9+çœ —ÿŠä$Êd¸exdxýu>mfY’Û²øKYýµÙ"j³Ë¥2r†ä’Snydä•‘OF~d”QHFaEd•QLFq%d” )%§Ò~”ñçe弜Œòþ« þ¼¢œW’QYFUCªÉ©ºŒ2jʨ%£¶¿®Ž¿¶®¿\Cn«ç/Õ÷×6ˆ¨m(—ÉhÒDNMe4“ÑÜ_náÏ[úëZùËÍä–ÖþR¯¶µíü¥ö!äÔQF'et‘ÑUF7ÝeôÑSF/½eô‘ÑWF?ýe 1PÆ ƒe ‘1TÆ0ÃeŒ1RÆ(£eŒ‘1VÆ8ãC&Èi¢ŒI2&˘"cªŒi2¦Ë˜!c¦ŒY2fûûÌñSÌõç“äëyþÚùþëµ ýµ‹ü׋#j—È¥¥2–ÉX.c…¿×Jûªˆ^«CÖÈi­Œu2ÖËØ c£ŒM26ËØ"c«Œm2¶ûûîð÷Úé/oûîò—vûk÷DÔîõ—öùk÷GÔð—úkEÔ–KGd•qLÆñr:)㔌ÓþÏ3þš³þü”\wÎ_{Þ}!¢ö¢\º$㲌+2®ú{]ó·_èuÃ_{Ó}+¢ö¶\º#㮌{2îËx 㡌G2‡<‘ÓSÏd<÷¾ð×¼ôçÏäºWþÚ×þë7µoýýßù¯ßGÔ~ð—>úóOþü³?ÿ"ç_e|“ú$$4ô;u’ÐïmICÔÉB“Ë)LF )e¤’‘ZFiýõéü=ÒûórŸ þRFßLþr*™Bá/þZ0¢Vé/©üã©ýå4ò¨¿¤ñ×j#jaÿlˆÿZ1›>Ô 'T&Ã(Ã$—AÈ0Ë°È eXeØdP2ì22hNŒ V'Ã%ƒ—!ÈeH2Ü2<2¼2|22ËÈ"#kh69e—‘CFN¹dä–‘GF^ùdä—Q@FA¿Bþž…ýt9äR¹TTF1Åe”ð·—ô÷-Ñ«´ÿºŒ¿­lDm9mym…ˆÚŠ¡•äTYFUý¨æ¯©îÏ«È×5ü­5ý×µ"jkË¥:2êʨ'£¾¿¥?oèÏùéGP4ñ—šúçhQÛÜ_jáÏ[†¶’Skmd´õ—ÛùKíýå6r©ƒ¿ÔÑß§SDmgÿuß®µÝü¥îþ¼‡¿GOÞË߯·?ïÑ»oh?9õ—1@Æ@ƒd –1DÆPÝ0ëp¿òõˆˆÒHû ¹ß(ŸA2ÕèˆÖAò8Cä¶1þš±þ±ÇùËß[ÆûKüµ#j'ùGœìmJÄHSC§ÉiºŒ2fʘ%c¶Œ92æÊ˜'c¾Œ2úû.ò÷Zì/Ï’û.ñ—–úk—EÔ.÷—VøkWFÔ®ò—Vûk×DÔ®•Këd¬—±AÆÆÐMrÚ,c‹Œ­2¶ÉØ.c‡Œ2vÉØ-cŒ½2öÉØ/「ƒ~Ú-2Ý!i›LyØ?Î>¹íˆÔ]2åш~ß{ìÇ=Q³Oí€ÜûxDÍ.y¾=ò\'üœì‘ÛNúùÚ%÷=1Ï÷ßéNGÔ|§û>Ú?ßçù>ÎwNÎúk¶Éóî’©¾×œóó¶Ý_³G¦9zÞ_³M¦Úå§:zá'®œx¾zIN—e\‘ñÿ-Çè:»-Œ¶'¬RÛ¶­Ô¶í6µ­4Ej›©mÛ¶ýÕv›Úw¾Ïø²Æ½ãü¸c¹²ÖÜk¯½ßó+wá܇ðPþ‘ìcå÷ðO”=•}fö¹Î¿}©üç_){-ûÆì[ÝùNö½ò{ÜùAY¨ìG³ŸTVü¢øUñ[øï¬ð~Áoø!œËñá]Žq)ÿƒóPæ)ëeÖÛåœ÷q9|•ÿÆFPQ6’ÙÈ.çÎ(.ç?å±Q•E“n6†²ßÜSçÿ`céÖßd±µûSsÿ¨?Ž+.+ćAbHI!$‡RAjHi!¤‡ 2AfÈY!d‡rAnÈãÊËÊù¡„BPü¡…bP\}%KKAi(eeË)–W¬ XQ±’beWVU¨Õ¡Ô„ZPê@]¨õÕÛ@±!±4†&ÐT¶™bsÅŠ-[)¸Z³Ú@[h§¿íe:(¶Åu$ë¡ t…nÐz@Oê¥þÞvªY_èýa€ºj?кÉ©lvˆk(kÃpý!3R17Šl4Œ±0Nã'èÄDõN²“µ7EqªÙi–MwÍ`Í„Y0æÀ\˜!róÕ±@qõBe‹«c‰ò¥Ö±Ló–«^av¥²UЫձFùZëXçZÏÚa“þn–Ù¢¸·•ll‡°S]»w+îQï^;±Ov¿âŃš~È:«>¢½£f¹Ž³NÀI8¥¿§eÎ(žÄÕÎ9ÕçÍ^ »—à2\ÑÎUÅk:q]ù ;qSÓo©¾möewïºî±îÃx¨¿d+>À=ÑÎSÕÏÌ>—}¡øRö•âk™7šôÖºßYö^;C]YŸà3|Ñ߯2ß?ã¾kç‡êŸf)û­øGñ¯b8gFx'wy„u{x83§ÚÏܳfŽ2í8çΙ9È}‡¹ë¼^r˜½ z×Az/êg†ÓãÜwI÷íc¦sç1Ìeõì•9¢ž+êÙË©ƒ:uÜ㪽͹ɹÿšç~çU×Ý^ö²°7ßð¸Éº·áåwïÊÝS~_ñ6ûÔõPõ#³-{òïþÓO?ûwâsë¸ÃäÿuòåÍ~õo÷}f¿þŸè|ãñ–õÞÃ…ð >Ë‘ýª<ÿMÙwÙfêü/ÙßÊC9ÿGÙ_Ùpža6¼§s§ËÓ±ÊC¹ÓS™—¬·YOç=¾²ÌF”$ÙlO?VTˆÑ!Ä„X[{Ñðq´W.y<Û¡ØžñÍ$Ðʸ„ÖŸÈ­?±LÝšÔú’)K.›ÂlJËRY–Ú3 +-¤ƒô2B&È,ŸE6«ò ølÊ²Ëæ0›SsÒ1#—¹Ür˜—Çv*“óÊäÓMù•;¶€²‚²…ÌÖÄŒdþ6»ˆÍ.ê6»˜gqV ( ¥ 4”²PÊC¨• 2TªP ªC ¨ µ 6ÔºPêCh 14¦Ð šC h ­ ZCh í =t€ŽÐ :Cè Ý ;ô€žÐ zCè ý ? €ƒ {a …a ÃaŒ„QªGkwŒâpüXÙqªÇ› ;QS&)çüdÙ)ª§š&;]7ÏPÎ3eg©žmvŽì\Õó̆ÈÎW½ÀìBÙEzÓb{ÙÙ¥ª—™].»BoZi/[%»Zõ³kÉÖÁzØal†-°Õsk;쀰 vÃØ û`?€ƒpÃ8 Çà8œ€“p NÃ8«yçtÃyÅ]̾ {Qõ%³—É®ÀU¸×áÜ„[p[§þQÿ;uWöžêûfÈ>TýÈìcÙ'ªŸš}&û\õ ³/e_©~möç[Ö;x >Â'ø¬ú‹v¿*†â¿É~WýÃìOÙ_šò[1”ódÿªçfÓ¹À<Á ¼Á|!‚—s*¢—ó²HŠ¡¼)²lÕ~f£ÊFÓìèvC Ù˜ªc™-ÇËys\¯°—Ç“¯:Ù„²‰tOb»-‰lRÕÉÌ&÷JÁJ © 5¤´Ò+Ï ŒŠiñ™d3«Îb6+Y6È9 'ä‚ÜòB>È  ‚ÂàE4µ¨æ³©ÅeK¨.i¶Yi(e¡”‡ P*éTeõW±SUe«©®n¶†lMÕµÌÖ–­£º®Ùz^õY  !4‚ÆÐšB3Õ͵ÛB±1¾¥l+Õf[ëLMk«Ø”óídÛ«î`¶£&tRÝY±1wv‘íªº›ÙîvCs=•5ä½½,s¼3»·Lêk»ý”õ—`v n Ô—RlÌ„ ÙÁª‡˜ªße˜&+6Á—¡z¤ÙQ^£Yc`,Œƒñ0&Â$Õ“µ;Eq<~ªì4ÕÓÍÎ › ³`6̹0B`¾æ-PÿBÅ Ô‹d«^bv©nX¦z¹Ý°Bv¥êUfWkÂÕkmÂ:Ùõª7˜Ý¨oܤz³¾{,õÙ­²ÛÌn—Ý!»Óì.Ùݲ{ÌîõÚÇÚà ‚ÃpŽ*?¦ãЇñ'dOª>eö4Ù8 çà<\€‹p .köÝvUñç®É^W}ÃìMÝpK³oÛ ÿÈÞQ}×ì=M¸¯³lÂCÙGª›}bÙS?Ä>“;@õܲCš|Ôë…u½´“¯¬ëµ[ÿ¯·¬wð>@(|„OðY|QÇWÅOÔßd¿«þaö§ÎüRýÛìÙ¿ªÃy‡Ùðd.ðOðoð_ˆ ÎˆŠ‘#+Fñv¦ù)jÓ¢ÉFWÃlLo畱TÇ6G6®êxfã+K ˜P1‘bbï$¬¤ ’C H © µò4ÚI«˜ŸN6½ê f3ÊfҤ̊)9ŸE6«êlf³ëžº9§b |.Ùܪó˜Í« ùTç7[@¶ êBf [毻Rð®"rÉxeQËRèÅ©½‹Yq}G \ ë*éÖ_J¦´bŲŠå¼Ë³*@E¨•¡ T…jPj@M¨µ¡Ô…zꫯ «r¦¡l#ÕÍ6Ѽ¦º©™bêæ²-T·4ÛJt¶µMh#ÛVu;³í-ë ó•É;ÊUä{:YV™ÉNWgÝØE½]íÆn²ÝU÷0ÛÓf÷²Ù½mb·Ù}½û±úÃ0‚`°¢Ž¡ŠAÔÃdƒU7;BgFªev´ìÕcÍŽÓ=ãUOP äΉ²“TO6;EÙTÅiŠÓgèÍ3•ÏRÀûgËÎQ=×ì<}[ˆêùfÈ.T½Èìb}ÿÕKíËd—«^av¥÷*ÖjXka¬‡ °Qù&ílV\ß"»Uõ6³ÛewhÒNÅõœß%»[õ³{ÉöÁ~8á†#pT§ŽéeÇ×QŸ=©ú”ÙÓ²g4û¬ÝpNö¼ê f/Ê^Ò›/Û˯È^U}ÍìuÙºç¦ÝvKö¶êÌÞñ¾Ëº÷á<„Gðž(ªgŠðÏe_¨~iö•ξVýFñ!çßʾSýÞìÍÕ­Q’ý¬ú‹Ù¯:õM¯ü®xŸú‡ìOÕ¿Ìþ¶þèüCÞõ×vÃù„eõâ'Þá}Ânqù„ô°.O·~/'ó¶~ëòuëà‘ "Cðƒ¨ ¢+¡˜ŠQñ±dc«Žc6®ÎÄÓ´øŠÑ8Ÿ@6¡êDfkvÝšT1*u2ÙäªS˜Mi7¤Òy?òÔÊ"ãÓXæ§žè>ií–tšáGžÞº2¸õg´›2é&?²ÌÖ•Å­?«™l–e÷ÉÁÊ ¹ 7ä¼ò+/ ‚Šyñ…d «ö7[DgŠjZ1Å|œ/.[BuI³¥dKël›PV¶œêòf+XVQçóWR– _Ù²<êÉïSESªê‹ª)æ¡®.[CuM³µ4»¶bźŠõÔ‘—iõíövSC·;ù4f5¦Ð šC h ­ ZCh í =t€Žêé¤Ó[Pw‘íªº›Ù%YeM¹­§eÍéqözéæ6ÜÒ[S¸£^ÖŽ¬¯¦°ßϦµáUíxQu9SZë|GŸÖ€ë€h¯qf´ÇêTs™¶:5H=Í9 9|‚ì•Î=ΜÁft[[Ÿ!n_¶vf¨:†é Vît W6Bv¤ÙQÊFËŽ1;VÙ8Ùñf'èwš¨WO²ï›,;EõT³Ó|¦³fÀL˜³aÌ…yóa,„E°–ÀRõ,ÓéåŠs¨WÈ®T½ÊìjÝ3“;Ö覦­Õn³×Ùn·-`o½™ Ö¿Ñú7¹õo–™Í][lo«eŽŸË+¶éëðòíúÖ¾g‡æ/Âí´ù»äœ3Îtgo·}‰³¿³G=³eªg¯zfs*D§–øì³W9o\BÏ~3ÎË1逽ҩœžƒn_wÈíKÂvÂÎÖ¯~D/8jo=&{\õ ³'}N±NÃ8 çà<\€‹p .ø ×à:Ü€›p nÃ?pîÂ=¸4û¡¦}~õÖî‡ˆØØ¸‘§òæÍc¯8 ŽÇ€ãÀ ö^¾'É6¢Ó)ÎqÞÓœj'*ŸQŸqlÆgU9ˆê‡á>§ÊN̳³œçä»ñv{ì„÷¢ö1“w‰ýLU“eú^fßMèbz‚rE³LmÓñ*³6Ò³‡Yטµuv²Îáh×]S‡N:ó uÜÔ·tÿÛºÿW¥»®ýï¹ö¿¯û?ÐýºöäÚÿ±kÿ'®ýŸºöæÚÿù7÷í%Î+à5ðx ¼‚÷¼ ã#ã[¼}¢ú™÷/ª~¥Î2•Â3¾E–Q#òIÕÈT£X¦cTÆ·èªÅ»GU¯e:¼ÆÍg…ÌaK?É÷WÇGÌ]oá­HV ½EµÃÜPmHµ‘ª©6¡ÚTÕfT›Sm¡jK«Nk  Ðh´:N@g  Ðètz=™×Þ^¬Òz+k‡:P£«u†»/ëwB~ìÖ Zú;á}µöôváÛ@¾™æ½”©˜ÊFé†I1«=]™5X§ê ¥;”!ªtbåÖPÒÔ0•‡©Ò‰ý»ZÃ]›„¾„æü¤½Vï/®¬_ùKšùGèþ#9‘™d”îÿµöôvåÛï®ýÿpí?ÚµÛŸ:•™ÖL:Æõuí?εÿøoî?މü/™¤{L&›BuªªÓÈþ¢ú·ªÓÉfP©ê,ýþ¡fúÍÖ×9®ß`®ú穾ú¸ü ­E8‹%ÀR`°X¬‚€UÀj` °X¬60o¼Ye *lR¶ uV ÆfV[Ì-¬¿ ù[éZ ¶}Wá};5“±ÌÛ¾™*«˜¿ÁÚI©Íxvѳ YƳsíÖ©V¡Î:díQ%ˆuÖ[{uÊ æ­±ö©²–U6Xû]›„zC´÷Aõreæ/¹ G¸òÒeêãlf¦ãºÝ¬|[Îì5ôœtíʵÛi*ˆY¬3®ßè¬kÿs®ýÏsÿ :ÍEõ^re]æTr®pÿÕȽʉL•kœßÌ~]ÿÚAü»­·nèþAœ{ƒuÓµÉ-×þ·u*3«™óŽëW»ëÚÿžkÿûßÜÿ«îC×|\ó=võ~âêýô›½ŸYÏq^/WÀkà ðxïÀGàðø|e^8QÂ{ ÿ -YDª‘TL…jTU£‘YT=ªz=fŸÇt·ÉƒÑÛÌŸjtUcŤKÕØdq¨ÆU5žÇìúûÅ'{ =2£¿ÅÎ =æÆ$‰<æ÷ø€]³Æg°$œ2jRj&ÇÔ6oÉøö5Ì»Ù$9=¯¡¼§òÅJAÏkf}À¯ùÅJ©S}@/ÈJ¥J0ò>!/µNÌJ­4ª|bݯVZ×&¡ÞPG:nf*¦×3pBãËÈÉÌD™tÛ̺mÝö=çþjè¶ïÙã‹•Õõ‹dsý"Ù]»åpýF®ß(§kÿ\®ýssÿ<ž¼8ùˆüˆ€‚¼b,L­y¼%+FWqUK€•JQ)ÍX†™eÕSެ<3+¨Z¬ð•Êž*8U‰jˆÕ¼Õd¬E­6yu¼Ô!«KW=UëK~OCk$_ã«éi,·&ž¦Ö §9ѱ%Њ·ÖŒm¨µ%o‰—vdíéê jG²Nˆ.¼u¥§›zº“õ`½žªö"ëØèëé‡ÓŸ€8ø‘·AŒƒ© !ˆ—¡dÃè®êO’ÿ³çûU¾Æ7È3Bn#=£ì7œß‰?G#þé™@>߉dcÇ /ªñ„(“$2¿æuŠ(†OòL•ÛhÔ™&•þ’>;jNwt!9cäm’g&ûÍbç´Óles^ðöñðš·7ŒoéxGþ¾`²÷Ìù êG²Oô~Võ ÙWzÃyCÕð`€ˆT"!F¢ð•1š×Ô±4ÃCæõš:>Um2?zýUNƒÞ˜ªÆ‹ Ä¡1Ÿ·Þ„8‰ˆÄˆI€¤¼%CL¤à-%b* 5oiÓÒ‘Ž<9|éÉ20'£ª™È2Ó›EÕ²¬ôfS5;»çà=1 î99W.Þs«š‡,/gÊGž ,?YN[PÕBd…é-¢jQ²bôWµg(É{)íVš3”Ὤªå¼åq*+?ðV™¬ yUÆJ¸W£§:ï5T­©¬–Tª-_£UöÖ‘Zu%»ž#³¾£vɪŠÚ ÃT¨g#ViL½‰f5eÍf¼7Wµ…²–R§U˜z­e¢62Q[ÇDíµwLÔÁ5QG(€Î|邨èÆ[woœžD/ÄÞ@Þú’õ#ïÏØ÷ô äýGU),•†È×h}½C¥Ö0ÉîÈüÉQûgÉêÚ¿„©0Î_¡ŒFòeâoÀï¼ý¡UFKÞŸaòÇÈce‚qŽ Æ;&˜à˜`¢k‚I¬2™ú͚ʚÓxÿKÕ¿½Óqf3gÿð6›qâ\ï òyø®$›¸@øBU!.ïU—".¾\Tã Q‚W«y[#s¬å×x׉bxw½Üæ`‚ 2ÃF™p“cšÍŽy·HÎnµŸÛ௺÷ƒTQ=¬ê²•ø%޲Î*hÇtºãd³è]É·Þ“8§ˆÓˆg€³¼c<ƒÛyy½ _£ó^¤ó’÷³.{o«ÿŠ÷®ò«Þ[’uÍ{Ó{'L…ëx»Ë*7¨ßÔ¬[¬RñŽªw%ûž¸ïËÝÔ} 3>Ô¹y_…™ã±÷u˜YžxŸý7ó<õ¾õ™ôyîèóBû¼üî>÷¼oþÇ>f÷wŽúÁÞa¼ÆùÞûIœ¾Ãùç ðç3<¼Ï°ä_Á"‚E"Q€¨|‰F—¥.™—^y$_dŸMæGÕ_Õèd1X+&y_T_,²ØTã¨,H$dßD|O¬Ý“%eŸdÚ'9Y ª)UME–š}ÒhŸ´d騦W5XF ÈÂî|Ϫݳù²ãäœä¹Èr“‚åá=/c>:ó“PGAÉ+¤JaGvÉ)*uŠIý¼¨P\}yQ»„£bIGóVÐWŠy¥˰fYòrê,¯¬‚LTÑQ¥’ÌñƒÌQ9Lï*ŽÞUVsÍQJ  &P ¨Mwúꪻž¯>N !Ј¼1Yò†`MÁšÍ@K¾´¢«µºÚµ¥·y3d´'ë@µ£ªÈ:³Vò`]ɺQí®j™¦§¯L×Ë××1[o_¿ïr½¿|8^Jv3ôjíûQ¦s+ß ¹™™[ù;²ŒbìÞG3þIçò±ê§l¼T˜àÈž(9“¤Îd©?¦¨o4jOuTœæ¨`ÞÆùþ’¼¿/ GÍ™¾Ù®ÜY¾9âü络Æ1×·@ræù:|ó}‹¾Ã±g °XF¾œlùR°•`AÀ*`5°†/kéZ§®õdèÝH„ŒMd›©nQu+Ù6ÖÚN¾lÙNª»TÝ ¶Ø ìö³ï¾Ôî‡È3÷ˆæ%;Fõ¸ª'ÈNr¦S:Ói²3TϪzìr›ÌÜ æˆÄbñ%6]qÔ—,½ñÉ£##YBª‰TML–„µ’’ÇKF–œj USÊ4©ì´2]j;c¶4vúïr=ƒ|3:^3IvtôŠcg‡éÛÎ"73sl;À‘eã‰kg•ülv ¸³Û9Îv®ïpäÆÉäò‘ç'+@ž¬ ï… ÓY„¼¨:Š)+.J8²KJN)©SZêB…2ê+„ÚeË9*˜·bvyÉ«àx©(ý*9jþ`WuåV¶«‰³Êw9£º]Krjص¾švïpÔÅ©Ô7$kD^¬1ïM›ÚÈ›áÛ™¬9b Q[ªÚ ±µÝ‘¼ ¾ÈÚ"¶µ½¨&Ó(†‡äva߮ڽ›ÌÔßp÷ùš OO{¨¼›—®v/ÇÔM0]+tím—yúÈ}éjiLV?ÞšrŽv­Þ\fïb°GˆÚŒÍž]ìöHémrC«uµ´‡8¦h†ß¥ öíÀZ±Ï û7ɬ; ù; û;ý$;ýf§_Âìôëÿz§ö¨ïØ©£ý;ÿ¦è^£©þIuŒªcÙÙtGfªŒ×× Ú)´þD{Îd` 0•|Ù_äSÀþæ}:â {ùL|—’ÍBüGÔÙªÎAœk/&Ÿ‡ï²ùˆ D](ªÉ4Šá!¹ËØw¹v_!3­=H¦›Ž.«ì­òºÙËíÕŽ™§c¶9è¹ÆÞ.óÏAíµöõ„:VØëìRu&³Ç2{½½K{Í’=–ÙìÝÒs6Ÿ‹áe¹½ÑÞãè>¿Æ_Øý+ßÃù…vï'" ˆL…·¨ä‘ EãÝbôÐå%÷©Ã–qÌÝö‹Ë¼xŒñY3yBu&’9«’ÄQ%©Ì‘LæHî˜#E˜Þ)S¥rÍ‘J -HÏ:è˨îL~™q²@Vòl¼e'€–,È äró%]yÕ•,?½È‘Q¬Õª!+ÊzÅÈs¡jq²TKªZŠ}J3–áŒeÉËiçòÊ*ð='ò*ÒVI_ù’ÛïU*Ó­Šú«ºüÕøV±3j’×Rgm¿:8uz@}ò¼5$¯­ï›ÐÕ”¼™:šK^ UZ:²[INk©ÓFê7F…¶êkŒÚíÛ;*˜·æ~ t:.¬Ó•¾nêî.³ôP¥§£R/™¥·ÌÒÇ1Kß0³ôsÌÒß5Ëæ dü‘5‘Vç¿¡8ÀáÀOä?óö ùph¿‚F£€ßøò;]¨k4ÙŸôŽ!Œ±d㨎WuÙDÖ›D> U'“M¡:UÕiœë/Æ¿µÛte3ø2Ιœh$Ø,}5ÝL•T™M¿Q種Ë?®ùŒ ôu¡ß"œÅÀ`)ù2Þ–“/¶‚÷•ŒAt­"_­Ž5’·V•uŽìõ’³Aêl”ú+Qa“£Æfå+Ñg‹£‚¹¯ñÛJeãvÖÜA¾S»dŽÝªìqTÙ+sì“MöËA˜ã@˜ÞSrÍq˜uŽ0Õ×c~ÇqN'Sä§y;C~ÚY°sÀyàp‘/—躬®+dWé½F~×ÉnP½©ê-²Û¬w‡üªÞ%»Gõ¾ªÈ2>âŒÉŸhç§dÏ8ásíñ‚ì%ÕWª¾&{Ã-ÞjwdÁTß«úì#ã'vþLþE;õ çÎ?<ˆH‰·Èä Eá=*c4º,r:¼’çSÅvdûIŽ¿Ô‰.õ£¢B G˜Ê£¢O,Gs÷úÇf8Œqõ5žôޝJGfBéH¦O,½£¡w’0ý’:&IæêœJ Æ”¬™Š<µ:Óø§ÅI¤2gä-yzh™yÏ‚àŸ<+¾Ȳ!f5‡ªˆ9ýó“ç· YnÄ<¢æÕdÅä…¸ ±oaí^Df*Êo>¸‹É|YЧ¸ey7/…ýK8¦Î‚éѵ¤U™§”ìPš®œ˜Æd•á-€{ü‹–ª’*išp¸Ýì›7‹»»»»»ëâÎâîî,º¸»»»;‹»;wøáþgçôïÝìíOÄÄDödeWeUõ,äv”÷Œzö|ŽRŽêZÍ@Gµg>GiG Ý[ÕzÜò;Ê8Ê[¦È€wɆ}Õ]¸p”uÔÒuåd§ò!ìT1Ä*ëªØvªjÛ©Úÿ¼S!GÍ_Ø)£6Ó:tVŽu©Ö£ê'j}a èª<Ê[4’NÿÆŽ&ø4šÍùÝ‚JKžÍ µ¢ÚgG7r|÷ k‹³VÛ‹ÚgGGwòNøîIÖg­vÕªªTŠªsgõbßÞÒ½e޾z²Èííè§§m çþ’Õ ~ê~€¥Î£õq ´¨­QÙµƒ¸yGÎÖÃ1˜QnÕÓ1IJÙPËäÃtïötP·½õ¦|ÝY½#¤_'hž9FŠêOo·:Ê2›Ò­}£9—ŠÆ©éØQuëµÿ8¹/l‚c">“€@`2ùFSÉ¡MÓñtQfXîf²n–cµÙŽÚcØbÉ›ëX"|nZæ3vß»«ÒÓíøÓc‰v^ª3—É\Ëëõê¹Â6ÝJÇF™l•m¶ÕŽuÁL±Æ±Eg­Õ}ÖýGŸ ÿÙg“­Ï2Çæú,tlÕ}¶éª…¨Ùné³CªUåN‹—Ûi—c7>{€½À>òýŒï…vPLJD9l¹;º£Ž3ÔŽ9‚´Çq°³’wÂqNøIÜœ¶8œbì¾wWŸ¦§Ûñ§Ç9KÍyÝå4î/È|%C9^²ä»;\¶Í}å_] f¦k6Çë^Ž77ñ¹Üîßetü6´û`€‡À#à1ïŸðþ/Éú›ì)sŸ‘?@Ås²T_ŠúŠì5ýþ!×7do©¾õ=Øà#ð øÌî_xÿUº#ûÎ>?¤O(ÅBû(õ†,¬êÎÇÓ'•´I8T–¼’ð®bq¬jqPwe}ª±®:Ïô¬I^K2k «£'ªkq©§çðÓsÔ·ÌÑÀ6GC˼æh ¥ Ðh4§O æµ”ìV>­ñiømÉÛ1jOî­ãŽ<;1«3yÉèªëº‰ÒÝRÝC×ôÔ>½´G8ô–¼ŽðîcqìkqPw]}úѧ?Ïr;PØ =Å`KåÝ{¨ž~˜îÝ ½‡Ûz°ôéÕ{•Ñ<ÇÐ3€|¬dŽóÏ`"0‰¤2™çDÄSÀ¦Ó€éÀ ÞÌdî,ÉšM6‡¹sɧ¢bÙ|ª D]H¶ˆ^‹É§ƒ-![Ju™¨ËÁV+UÀjÞ¬a÷µÒ}ÙzöÙ }6’m¢ºYÔ-d[Ùg›ôÙN¶ƒêNQwíö{}¼ÙÏî¤ûAŸCøŽG‰cTŽó<‚øØIàœæÍæž•¬sdç™{ü$*.’]¢zYÔ+dWéu<ì:Ù ª7E½Å>·yÞáœwÉïIçûÂðþ$ê2ç$êɭꬋò„ù§ ý%ù{å?åÝ3žÏYñ‚ü¥d¾òyÏ?Àà-ñŽÊ{žo ú‘ç'f~&ÿ"_uÅ7Q¾[ªèšP†Û!´áîò ž¼ˆÃ?Ã?ÔÝWŸp¬ Ï3‚¡<#’G’ÌȆ{Ž(¢Dµ¸D3Üsü©çpØzûXz– ^s˜P\€/ˆÁŒ˜¬‰%Ù±8øÄâñ‰TòŒ‡8ÕÄ<“03)y2ÉH®+Rˆ’ÒRJפÖit—$pH+y‰§³8¦·8¨»äF(L@f 3²Ò-›dg׳ä%§Å)—ž%·ž%­^Kÿ|–)ó{ÍR€·y¢gaò"’YÔ(†Oq P’(E¥4ψËP-‹³œQ“¼<¾ëUÀYQ«•D­Œ³ŠQ‹¼*¾k“UÃY]«5´ª*•¢xv¬ËûzÒÝOOSŸß5‘Ý@OY}mõ½º©k4²L]ÓUFׯF{=O½CSfUÁ4ªª£rÜ£–Ñ\Ü+èÙë-Œ.Z-OGµg=£¥ÑU÷Vµ·ºF+Ãß2Ey¼KUì[“^u°Ok£»®k#;ù‡°S»wê wêhÛ©“m§ÎÿóN Œn¿°Sm£Óžü{ª‰¸ÕÞTûˆÚ—¿v?þöý©ÖB<€ê@ªƒDl Ág(0 NŒ 2’ç0Ä£¨ŽÆ9ƘJ€ïdcqŽÓêxQ'àœhL#Ÿ„ïéd8'kuŠVU¥RŸÁŽ3y?KºÏ¶Ì1GO6¹3¹zÚÑè7O²¦Òy†1ßR7sN@ÿÍ“7ÛXÈí'r¶Æ"Fc¸Õtc±e‡%–Ý—ŠÓ$ìâñZ&j_í.—9Çj§YÆ ­p.å8ËXi™NÕ[g«8—ši5k•¾†LU¯õÚóÕFë%kƒTnôÊßdlÆg °ØF¾Ñò­Ðv2Þ…s·qŒ|¾OíŹO«ûE=€ó qœü¾O’ÆyD«Gµª*•¢êÜY§Ø7HºŸÖ3á÷1dŸÕóíBŸsÆm}¯n‚Œó–©waºèzÁ¸«ç¹¨w¸Ä¬ƒ˜FU]f´›{7®ˆû^=û)ãªñH«{è¨öl X0ŒçÍfM”¬I`Àd` 0•7Ó˜5]²f€Íf³9¼™Ë¬y’5Ÿl’ÂwÙbªKD]J¶Œ—“O[A¶’ê*QW“­¡ÃZqXG¶žêQ7’m¢ÃfqØB¶•ê6Q·ó…vðwò ÀKí¢º›ñQ÷r×¼â>Öà]÷Ëæ„)}²JÖ!¹;ì•u„¿Ï¼çQv Ä+cÏ@¨ÇÙs&nOP‹ ¥Ï‚rR&SÊLü*§˜­|'S™ã ’Ô¶³¡œE½ÕL8‘½‘£ªÎÊ”ê^U%ÞSç½6ñÜxj.H§‹’{É«ê2÷W“\áþSQy•›M¿&û_—ý'³Çlç Ù_)êEnzíËkÛÛ^/rÇkÿ»^ûßóÚÿþÿ»ÿîóS>’YS}Âø/Qÿ–žÊ|ϤÃs¯^/œ/ñy¼þ!ÞPyËó5âw`ïÀGào>3÷‹d}eÖ7ªßy¾G檡L‡6=ê¦r Ã8,ÏpG5<ã¢F4U‡÷à‘L÷\‘õ·Ò>;£h¯¨¦»4Ó½Ãw8ÿiÆ‘êo˜Â!Q3¼é£3U—/Èm†3 3¾VÕœ_0X3‚é4˜?_Ce*Õ4Ú&Q”¯ËŒnÉ~OÿOxŸØ;œÑô5ËѵC ›SL½S,½SìvŠkÛ)ÞoÚ)’™èvzïLÂNIå—NF59㢦ä~©§–_: Õ´ŒÓ‰š^öË 'Ëh›0“~«Ìú­²XÞ*«YÈöVÙlo•=˜·Êa æ­ršÅ‚y«\fñ`ß*·™7Ä·Êc–”9òj‡|6§üz§z§‚!ìTضS‘ß´S³Ä/ìT ( ”ʲg9V•—Ú `J@e  ³ªò¾šdU7kàS¨Ô&¯CV—¼X=0? >ÐhÈ›FÌj,YM˜Õ”j3ž~ÈlNµã–¢¶¢[kÆmxÖ‡³?Õ¶ŒÛ‰ÚžüÀ;èé:êo¥52;i¯Îº=}38w5IuSLÑM¢ÖèÓ]gª.‘ßô0‡jUÍÙó·Á,=Ía–×P™Jíe·M¢:(ßÞf_K¶ýâ}šcoìÓÇ)sôÕýlNýõNôNCØi°m§!¿i§æˆ_ØÉÏŬÑ2ÓªŒÇŠ:ŽEãOà©Ü&RÄ8PÔÉR5EO6Õ6á4ýW3]¿Õ y«væLs™íufÙ^n¶×[µ7ç˜+ƒy«¹æª`Þjž¹:Ø·šo. ñ­˜keŽ…Úa‘Íi±Þi‰Þii;-·í´â7í4Å\ó ;ù™ëø?Ézž~ÈÙ@u#ãM¢n–ÿ ¶Èô[Å›0OŸíæ|v»€ÝÄ*{yîB¼l?p8âÍa摬£ŒñYr>ë._t—¯–.ß,]¾Ûºüðêʵà ü„º”O8—Ê ïòdG‹D"Q˜•÷Ñ$ëO—Àœä&™‹Üó‹Äb±x›Yq$+.ãx<ãÓ/yBÉHÄ81Ï$ÌHJžL2’k碤´ø§Ò®©µC=ABð´–.é„'ÆMz‹C"*t—Œr“É’“YwÉ¢»dµtÉfé’ÝÖ%‡W—œ|©\tËÍ3âXb°$@R œ7)˜•R²R¥Òit¼IϬ ’•,ÈdåM6fe—¬d9阋<5|s“塚WÔ|dùÙ±yZ°‚d…¨µYQ:‡âd%¨–µYi:”‡²d娖µ_¥"ãJ<“!®Lµ 㪢VãkVg\ƒg¼lMªµ×µY]¾S=ò,`~dõ©6µ!Y#¾ocòLxå&dM©6µ9Y :´‡Vd­©¶ÕŸ¬-Ú‰C{²T;ŠÚ‰wfÜE6îJµãî¢öàÆ=÷’{Síø¯¨ý|ûã3 "SÂs â¡`ÀáÀ`$oF1w´d Æã€ñ¼™À¬‰’5 ,˜ L¦òf³¦KÖ ²™tœEßÙds¨ÎuÙ|v\@>l!Ù"ª‹E]B¶”ËÄa9Ù ª+E]E¶škÄa-Ù:ªëEÝÀ×ÙÈ-6ñŽ—ÚLu ã­¢nãkng¼ƒç0¼èNª»ïu; CÝ^y›}Âþ¹ê€²¢hÖäŒ$wît9- äœ3KÎaÉ9+T@AQ@T$‰T$ç(’YØ%,ÉAÉ ’3¯ú›žÚ™½wïïœóÎ=Õ]õUõWazæŽ߸­È3žfº ,iªÛñD§’¶lã Ý l,OU+_1Ä2ü ÙÅuŽ2-d7× :F1‘Œ¨9M¡¨(®XšB1{¸Ê)`™²—uJqíóëÄñ8gös¦hŽ=àwê úWµBÿãéüat6…°#ÜÿQîrL 9Æý«‰(ä¸_ÿ¿ûu{Âo"'ýú?å×ÿi¿þÏüÇþÏ¢³s`?Ï•]zöŒþ‰Þ/Á¾Ìõ\zö5F¯‡Ü ßM’[$AÿÚ?Ðo‘v›´;$wIî‘܇ç¢rÔ#D<úë]Š~ ôì猾cO©ïFb#½‘…ëÈ ^÷0…èž Ý“/HOÂÓ“|E=%12¿DOwB²ê&eÃz‡b²Í;'£¹øéææêC™?kNž¼•OW÷†§Ê7 û–å×ó* û}Nó*h”óÌ«g^…=óz1*˜WQ£R€y3*œWq£dÐy•0ªr%5C)SiÝSÝSÙ =•÷ôTáõ”Ϩò=Ý©†¨êXUD  a°k2Z }Õ†]‡ë¯ ´ìúŒ60Ò¯Ic’&¦@šamLvsÒZ„“´$iOkĶᨶˆh´=ÖpŠî´#ìNŒvcØ]±¶ Ön@»ÃîÁhOdhAçzéºzë]a­·tÞ·õé>º‡öÄÑ×Χ»¯[í¨¦þ:RUÔ†*íJ'#4ªr·!–NTÁ@c¤k S±ƒŒ=•(N•e°ñŽ+ºø[Ñ|:Pß݈mˆ1ŠëxG3¼ëazO÷4T÷4,HOï{zúàõÔËøè%zú˜ä’Ñ$cs,N}ÊgÇ‘öÉç$_ŒGÔø¿ä¨‰ÜÓ$]ÍWžª&ëùLÑó™êšÏ4c¶g>Ó=óù:À|fsÌçc^€ù|kÌ8ŸïŒ™Açó½±ë˜©fy˜~Ð=ý¨{ú)HO?{zšóŠzšd,x‰žÂEÈ´˜ßî%@—Â^ÆèrôµöJ~»W] { £k_è·Žd=ɯÐ7@Û}=i¿‘¶‰d3É’­ðlCÔvŽÚ{'Öð킾›#"aGa݃ˆ½Ð÷qÄ~ÍÍÈÿAÍzH3Öì&ýˆ+ËQÖ£ÈsÌÅ ä¸Îò;{N¸bNê,§t–Ó®,g\YÎz²œóËr<›iZÀ°‰´‹õk›(f ùþDü&Ò/qüeŽºâUwq=×]5ÜÐ󽩟Ç-ÝEMû/×¼ÿf}'ùþq1({¿q[g¹Ãž»®˜{:Ë}å+ËCW–Gž,ý²<Á­z üVÕás /`Çó9h|Ÿº `'Ī&’hbØIMêKF¿ä$)HRBRI5Ù¯‘–†$-I:’ôðd@ìëÛÀêŸ ]p„„ma͈ˆLÐ3sDÍœ•‘l.þìúL)§®À †\.ŽÜ¬TI¨‹AÙY|yt–¼ìÉçŠyCgySgÉïÊRÀ•¥ 'K!¿,…1­"8]kZ²‹-»£%1ÕR°KcMCv ea—c´¼~:8cEדª¤'_YW_Å5ýªžŠ«égmЪîbP>é«¡³„±§¦+¦–ÎR[g©ãÊRד¥ž+K}¿, p«"¦O£1Ð&°›2Ú ·°9ìð}¦QUgª´?Õ2Â÷¹k½Á=È7Ò÷…§•Añ~èåŠî þn4Ÿ·ˆmõó‘o×1J3|ìaúD÷4Z÷4&HOŸzz÷Šzâÿ=uó}‰›4k²'ý ödF§pÍSùNLcþé¬9y¾æøººo ôìãŒþŽ »éÔ ]×I½+,ÊwJg8­9ÏèóYß >½bαu˜òœ×‘*˪ù UpÁ÷—FU{¨Ò#TËEßß®iì÷qß¾<•¨ Š÷OßeWtø#i>ÑÄv”ú¹ä»Ãu\Ö W¿·Å{â1Qçè£ûíG¿ýƒô;PŒˆÕï 12V¿Å`ªê×ogñŽ%ÆüŸö;T÷;Œû.ƺú}?V¿ˆqÿªß>âCTüßo'âþX|ù/û­ûG¿Ÿé÷eîs'šä¯ä>ÿû~Õ`’þ>|¥s*®Éb&wÜVL³ðQq-ÅTOu­‘{šøÑƒÚõN?y:uºüZÌö|ùì¯Þ ñ³«v§«oÄœ€9Ý|+æêN¾Ó|ÿÒüðÿ®“yô›O²€d!ôEÐC_@ÚÒ–’,#YN²þ•ð¯â¨Õ@—’w>¿Vï [)~ÁÉu"lëÅï:ׯb—8 Nðé â(|¶µ‘âéÈåd¯¿‰(qPà ….¥ºV‰Mb±']Uo{ÓìN%[Ä6°Õ5ØÑŠGeX-¶Šý”áˆ86»Žmša»‡izÚ©{Šˆ³§Ýžž"_AOkľÑÓ T<Ÿ˜Ôª"µ«:Ìèôuö1¬Šñ8P;Ï FOzj?åªâtÀŠÎèûs˜8Î2‹êíÇ+ë¼æUqøf]dí× t&ó§gºG€]Ò'Tþ•tn»¸Ì'ªÔ„®xú°ç5ÖM¾æs\\ps§¶›°[.LUöW,ûïXö?'ê<ßÛ½¿Ðm½ƒ÷|Þø/wc½i÷üf²‘î«b¾ç;ô Ž[û0Ž{ûè?ÞÐÇ\§Êñ„kTÖSõ,à3|î©Õ©óE€'Oú?ø2ØtÈ„ôKD’{b™zR™{2™{r™Šv…);bSc}M¦CD™žÒÊ Ð•ÇF3È×é1¤v[L™ »v)3Ò®tµgB|f¬YdvDd•9˜%›Ì ]yl4§ÌE¿Ü$¡ØCeèy囨óÉüØßhW˜² ¶ ÖB²(" ËbÌPD‡®<6Z\– _IH)ZKC+ƒµ¬FË//+j_Ò*‘nÛJ¯L¿*$U±W•Õh¯½º¬A{ô0Yz-ÙþÚØ«’&ëÈF¬×•9¾–¬GQM˜«¶¬Ï¶Ê£0WG6 †¦„Ûœ6›Í㎷cªÈfX›Ë¶¨¤…lÇÂe{è-±¶BD˜l­#T®6:BylÔ¶; g;ÙQ{;qÖö²³ìB¿®$ݰw“ݱ÷ µ'´^X{#¢§|K{ßæè^²ô¾ÚÓ'ûËwô餽 } Ž„ˆÁò=1„´¡¤Û'ìhÛ§ðaôNò>öhA2ÈHù!öò#íAØ(ø?–_ öìÃá-ÇÃ7FN€o,vÛ÷©ü¾qr"|Ÿa·}ŸËI¤Û<ŠÁ>¥âí˜I¨â+¬“å 9SW3E~CúOà›*gq­Ó(æù³§æéò{ù£œƒ˜¯ƒ0”ßj&Õýdù]P&uÞŽŽ‰r|?Áž%gðÏ¥ß<’ùØкdEr1ö…r‰ö.$l)b–É5ˆ[Ž}<+ä/|n¹\Ižu|~™\¥ížeµšÐµr=á6²Ôn3Åœp¢æË_±n[e„öm”ÛHB]¿É]œsÅì–{=97Ë2RîCÌ– L‹ävͤºÙ weRçíè˜(Ç{—ÜÀ¿Ÿ~Ñ$°¤õÉa ‡åì‡äQí=DØ1øË?û;öhxNÈKð”çá;…Ýö–à;#/Âw»í;'ÿ ÝŽUQ¶Ga6÷%TqëyKÞÑÕ\•‘þ|×ä]®õ:ÅÜ“<5ß·å}ù17ƒ0–k&ÕýùOP&uÞŽŽ‰r|`ß•øŸÐï)É3ìÏi}AÏRH<+>ö2e{_–ÐR1‰¬–ŠKŒý)¥âí˜2¨¢,ÖrV+LWSÞªJzðU°jr­)¦–UÏSs%«†UÛª˜ÊA˜B­jšIu_Ϊ”I·£c¢_Ø5­ºü èפöÆ´6!i ¤©Õ {«¹ö6!¬b­vˆk‰½!<­¬|®¥Õš<ù|¸ÕFÛ1<áÕ–ÐöV'Âme©ÝfŠ9áD5²:cíbõ²új_W«7éQO7«×Ðbú[ƒ=9{X}¬ÿC*•€ëTEm2$ÊLtöp*Q¡T¨d¦2„È,®2Ïó”yËðúzm¾Ÿ7™þˆûxnƒ¶ C¼QéM5C½ÑÐæuuÉ1Ö›ªá½C™qÞDpF&«4†xÒïmŠÆßF‰;®áô u5œIô›Lg ìTº§Ñ™ŽÌtï]ØiÞ ‹N£ÜLà³¼Á ;Èo°÷¼…ÀæÂì}ï#`x›k°ùÞ'äV0UÌ7œO0Å"Ü‹½Þj;Ío%ùë ·Ô[ãf]Fœ/¼õ‘™—{Ÿ{k½¯Àù4¥éÞgV‰_¿Ø[•¬×vŒ`ë¯ñ¾Lß@¿t6Á~M÷f:[Ùâ}»ÙÛjÑÍ”ÛÎvo7x;`7Ùéíuu;¼o Ùçê·{»lÓÙN¬ï(»ÇÛOy£Ã[£«X›¼ïqðyÇ-öƒw˜ü“˜ëGï„ëy8¿x§"=òŽy¿z¿ƒós2J[¼#V‰_sÀ;š¬×vŒ`'Ÿð~K?M¿3tþ€=‹;ÞúñÞ9Ÿ÷þ´Þï/ë]ô®’w £—á1zÞU«ò7ÔÿñR_ónX?Þ»îÝôRŠX·½ÿ¼T‚ù7¨ê&*oywYF€™jS™OM¿4tÒÂÞ;õÓ‰{lœ^dE¦$£{E柱û€f¥lF 73údY,?`±Ÿ Xv!lœCä²~:‘Sä2Ôã~á ~.ºsÃ{@(Ë0Sm*â>ý¤óìÃðòÐý¼¼âq›Ï'ò#ó(âGÄc·Á X…‚â‹ä¡š'Dah>)žsu…ˆñœx!Tÿ”x–2Ï‹âà<¬RâJEQŠŠÝF‰;®á<êj8%èW’N)ØÒðÊÐ]^9ñ²Í—yqYñR’8{-¯’Ë_ÙU½"ª†*ªPT qåøUúU§Sö5ºkÒ©…LMQ¶–¨cÑšä×%¿úÀê‹°õÄë–Sr ÉoD'X#Ñ6N¼a9ÈxÑzMak‘'š‰ž¨oŽ\}ÑÂbõ)×XMòãD+Ñ~=Ê·†oæi!ÚPE_×»¹hëbž¡‰hçbž»©hoãêxa=tŠD?÷~Öe­–¢#MÐß幞5›‰N.Ï{c¾éÕBt&õ^b€Ã¸†µšÒd]ÛKÊw¥ü[b`d§MI«[$o¾‡AMm3š°;MÒ[ "ŽÙ›Ù÷á*®^Ê<ÆÌîÂ;ˆ½<üªð¬‰çºÖƒq£Ä Ë*F“?ßz˜˜év?œ8³ÄÜÈ;GˆwÄlñ>8#“Qª/ÆX%Þöñv²JcqSœÒx1Õ*5¬—‰Ä‰)™½Nï:¥ÉÉ(ʼniV‰¿þ81=Y%®7ì+Àæ ž)Þ» þ¾ÜL1Ï*ÍŸ¸ïÄìsO¶@,Ž|+VY(– â#üKfŠ(ñ×g¥ùbÑ(-¥ß2:Ëa?¥{•ȬŸÁ®«,º‚ü϶Z¬µù5b]„ñ…øJ7#Av½Ø(vˆo-ú•ØDÑ®kƒøZìßýŸØ›Ånëm°¾{#“³êVèշAÿûD/â>ÛÑéa;°§èLž+˜h7ºî{²×mu§Øçf O’¸ÐÕp°ØÎAà?‰‹°?[Ë}‰xqõaqW!ïªõ†ücĉ¨GÆ0x»'ÄqÉ~“_È?Úõ¯ˆ/‰¿#?)þçÅeñOhß¿Aõ/q=”;%Ί ‰¶ÿ;²WĿР½Ì°)d™^f‘y Ÿ¹ 2›ÅÒRUv`)ÉO/sÈGá§¡|Nøfž¬ò~ªxÌõÎ$s¹˜gÈ&s»˜çÎ,°ñM¼0 Ô3HO>îÞϺF+«Ä~Dæwk°nfR–!Œ÷ÇuŒe—Š&/àò\ÃzY¤¶ùØ^2‘ŽO:yeÁÈN3Sï#yó= jj³P§‡H1Ÿ|‚8fofc<Wq}ðRæ1fvÞAìåÑ÷ÄfM ß<:óa?¤{…È,Á.”[tùŸ ·ˆîÅð–ÈO-ºT®@fâÅrùmð•è²X~f•VÉu®³?GÌ‹Hkµ\éÎ*käW¨ø³.–k(ñĬ´J~y‡J¬ÂF¹5T±InÃ;¿–Ý[6ã <zÓ¹“2?ÉÃà|“¬ÒvâJåŠ~¾­Ò·Vi—ÜRúN~¥ÝòˆSÚCŒ#òXHi¯ü‘2Gå pö%«t€xÒ.ùEÇo£Ä[0ó›¹ç‡6ÌÍS=3ÑüžÑù…~¿Ò9 ûݧèüŽÌ)yöwyÆ¢§Èÿ¹³tÇÃ;'/Yô¼ü™ ˆãåÅÛà—Ñ%^þe•®È]?f_EÌgIëoy3ÒUþ‘·Pq ³ÆËë ”xbVº"oÜ¡÷þÏ¢)T˜•R™™ï²6• :\ (µ ªÏR”ÆV^¦ÉÒ†ü»UlŠtõ³P¹&ïQÁNÒ«ì*Ø_•þ)¼ò"¡×å½*§J¸­ûT[{iF•ÕV›Íg ÅÑ÷gVÙBš1¥„|Ã:% ›,§ºŸ~¹èä†Í­ ëÑÈyJ ¥Ó*/p6yB=¨ò9ÿ!õ¨ãkõ0±s:¾ÊccÓ‡ù’xªGHáqÊM£ftÂ|ÃÉ­òã. žÁ$Ua×á Uþ“¸ !ÔS–Á3=mŒ˜¬‰‹¢Kaõ¬EŸs]‹¨çU1ú½@§8lqUÂÙ’ª”*DÜeÔK вªœzQU°8ûÅTyD/â~ }Ê«—]]Àf¿¢ó*©*êU«RYUUÕôyEUS¯A« ÝUáUÃmªL£5\%WÔ¤_-:µak«:°u]TWÕSõ“ˆêª*Îz¯«Æ  TCBߤl# †Ù}©7ÛpŒßÄyMU ÕÚj7S-U›êÍU+ÕZ-èn ¯nSe*më*¹¢=ý:ÐéÛQu"Û™Nä:«®°]T7仫¾ÀzÀv LÕSõs~/Õßñ{¨·ˆ5ÀétW½mlú0¿+ñzª>¤0òFÓ¨0ßp:ªA¸«Q˜hˆí: UcàÃ=Œ.j„eðL#-ƒ“5ñÛè2Z½cѱ®ë5N§ß:a'ªIð'«©°SÔ4²ìO>•ìtõ¾ÃÞU³Õ{êW3CͲ±ÑšL,®™©æ¨¹j´˜Áz³a&£ãm<·éÖ2õÕ|ܪÅP[ –¸î ÕRøáþŒiêËàyY#&kâeè²D-·è§®ëRµB­¤ßgtVÁ®RŸÃ®vÑjµF}‘D´Z­U_YoÚ€±V}Iè&Ê®b˜Ðg½ÚèØ†cü¯·YmU;¬öµMíL þÚ®vAk+ÝÛàmÇmªL£ßºJ®øŽ~»éìÝ£ö’ÝGg?rûÔ÷°ûÕäP‡ý»OTGÿ»Oý¬Ž#>{š‡Õ²GáUÇȇ\€ö/¸U@á¤:ë:ÿ¦âáŸÂý;ûÕiËà™ÎX#&kâsèpV·è÷ºxuQ]¢ßŸt.Ã^V‘½Bç*rWÔß°WÕ?d¯Ñ¹ŽøšúöººAö&[ˆoªÿ`o©šs)u&ÍuwÁ^%ï–J¥3kÖIÜM•Æb×ÉO ÌðîÖÙu •R§#Vô¾KßãbžsÌK¥Ó“BN§—Ájðœ©õ½®†çL£ï‹h0‡óiuF«aæâ‰®ŸEó†2鬰W€dÃôk™zÃÊ®ï×Á.Y%‡Î¥ƒ]³ZÛÅÌÿõÙHáÔy¸…ÎMJ]ÀmAé‚ð5nŒëêAËà÷Ü‚qK=f¼ÓÇ-ƒ“5ñ˜º€~Ò¢…Ü+ ê§{›+ Ÿ±ŒÂnuøE±¿úYËxÎm° ~^£ß tŠÃ×%È–¤S ¹’º4l)]¹²`•Ã]’âò-«_t åôKÎgViÂËë—­B]êTÔÕuÍV%BjYVe];¢WQ¿¢«_G7HR½’®¢_…B]ýºU©úÿV©¥ØJuýjÂSׯ&ª“n°‘¤°jëznŸ¬RG×wÝo7Ml£×Ð1%âÆ9VcÝQwuѺîéØo‹šÖ1‘RSd 7ØL·×½ì÷jN~§Ð÷j¸ðØ¿ %)tÖÝ¡˶ÒtïÈ·hNÝõ[‘lâuIòË´Ò*Å©¶ug¯nó3_qLh½âØJIbt³Œîî‹t UöÍ›ÛÛ÷´Ãdæ<{úõ¥ÓN:D4@2@F¶åê!ä¥3ŒÎp:#P5L„ªGY…¡”Ü=v¸~ÛbÃ)÷êÇê 7¶yÃõx=º¦'Zlå&ëOþp=Y/„?”òSà›9&ê©Tñ‘›gœžæbže‚žîbži¬~ׯæC¡>BÏл÷sï‘T;IϤ >qyžwiŒ×³lÞìFB{¢žMêêEãyG‘Ö8šdŽÃb{Kù÷(?_/ŽìriÍ åƒïÌ;šjÇÓ„ïÓ$ ô☽Í›ëxîT3sfwáÄ^~UxÖÄs]襸—éUz«e/ן“¿ßúS½Í}›ÄÙ®wEÞ¹R¡wèïÀù,¥azµU⯾L¯IVi-îuz“SúRm•†ëõV‰ÿ_'¦d¾ÉýSÚ˜ŒÒ½Ù*ñ?mÞ’¬×vŒ`;oÓßÞß/´Mï±J{õî›1{b®àÉöëŸ"ߊU¾×?£ö¾ï6ýCDÉ|qVÚ«ÞÒ!ú¦s„ÎQ:ÇGtLŸrLÿ‚ìÊ׿ºÜIý»þÃ1Ó§õÙï”>£ãÿlÊ¡ñ6>§¯êk–q^ÿÂ/Ptݲ.ê­w ^ÀùSßL0Ëy}™ên%˜éœþ }þKbº ú :¥ô‡ÕÌWõ?P1ó™ª`¢±Õ«ú†Cbs„»Çz‡^ ?Ü?èjêîòƒªTVjÇHãgôs:VZŠD„y7e²CøfŸéüLþý¾ÙÛ=äK?¶¹ôg#TúÑýeð3ûÙýܾò£¼ù\¾öoð>?‹ŸÃ÷ü}ÞJFº3Áã óvÆ9“1wNωiÌÔ¬” s˜ùbsq¿ôßLžB`~óæ˜’yQø%É+=D¿‡éä¡ó¼ˆó!Êë? $¯ÿ²y(—Ϲü`pù‚Ž™ßÂÊÕðŸôŸŽTô ùÏü¯ÙÜ«°_Â/m»ñK†z¥¨Œe=ë—µÞsðÎó~ù]‹øÅ¨îÅÝ û/ ÏKIÌQÔ/ŽN+53E ¿TÌ|¦*˜¨,¶ZÂ/çØáù ÷r¤ÐÕÔUtU•"¬ÊŽñŠ_ËoèXU(jaV¥L=b4±û¬æ×öÙ½½J~ÓÐæªS\ŸÐ¦ öWïã7ðûÍlð5äãüæIl°¦_×ÝÓo‰­Ô¢»6<®0ogœ3õsç¤ñ†˜ÆLÍJq˜ÃÌ›‹+ø¥oø-"Ó„§h‚ùÍ›cJæEá—$¯ÔŠ~­é´¡Ó–N;Äíµó;içwD¶ åÚûÈïL§ ®tº¡ª‹ß¶³ßÃ*t¦\Oäºù½`»úoY¬+åzC§?:}aÛP¦«ßÏýþÈuóX¬ ùµ%¿«?ÈŸ ¿3åÃ7sô÷‡PÅ7O¨‹y–þ0óL}ýá66oì õnþª{?÷îNµý‘4Á4—çy{F?”Í›½±Bwh÷÷G“úDºÃxÞ¤Õ‡&ã°Ø^úRþmÊOðßì²i½Êß#˜·'Õö£ ÇÒ$“üÄ1{6×ñÜ/¨þVªZ‹*Z‹JÇE™ƒ" %êQB¥¤• 1ƒ$íD@„ ¶Ò)J+!J‡4H (áÛû;gÎÌÜ{ù×}ë½5ëÌÙñíoÇ93Œc›™]taçÑ®¢µ¦­#Èú¬7 ïïKoºEö¾"y6ÎuŒ7ÃÕg„™é͉õù¹÷­7Ëû˜/0uõ¾¶L|Ê)Þ7 ™¾Ã{¬7É1ó&[¦—½ñ–‰ïÇ÷„ ™Ì™Lð¦9¦‰ ˜^ò¦X&¾Yc½© ™8Þ CTà› }†÷ÃüsqB3¼y–i¾·Ø£‚Î\ÙÏÞÒØY1Ëobâ|gx‹bLæÄ™i¾·$L¿Ðó+­å´VÐZ }´•Þoð¬ôVúœl«¼5$¯¥µŽÖzZµÎÛˆ}­·É2¬%ÛfØ6x[°¯÷~·¾õdû<[½¿À³ ûr²¬÷¶{'À¿¶ ÞNë[Gò.øVnƒ·Û;yÅìlêØáí¥ˆ¿]=[½}NçZvz:kÚæí·ºéq-7x¼³®ν‘bwy©‚sÎÎõn"ŽíÞ!k7sc†àÞá&öSÞyçãÚ7×Vªäˆó…sÙFö£d?éý›åVâ:±çÔ»™b·S…Ç©’ÓÞ¿„1s;4Çqœ/ˆfÛÌì¢3;v­5mAÖ•Þ¼/zW‹„A_ò®!¹€à3¿ìåÁÙüG˜ü¢ ˆöy•È"n…€É$®Ì´Î»V&>õ‹^æ„LYñÎ&ò8¦ì"É2­÷rX&¾9 2™3É%®wL¹0mðòZ&¾iÙÄu ™8Þ CTà+=Ÿ¸é þ›ŸP>q‹e*,”ΌѷB箬ˆðEô¬˜ÅE+Ÿo>!cLæÄ™©°Ð`ºžÛi£u­âÐK@+.JÂS\Ü k1²•¥`+ Dg/ë¥E9q·‹/#î÷ĢˊòâÞÿ5šs%‹ªâ!›½‚¨É]‘´‡-ê>QÝJ• ˜ûEÍTY+ˆ(®VªìÉ¢2òÔN§ŽŠ¢ 2Õ!_U°™*ªŠÁbê3QAEÕ1Õª¢†ó„uD³‡9K€ï‘Xþ «‰«ë¢êÅP:D}ÑL´q¨¤uŒ!’¥!:Úy6ÍE[;·Æ$wŠL® éO·Sªù5-DkÑ^#Œ™Û0 9Ž+ã:‚hƱÍÌ.:ƒ°óxÝa­ië²vŸãý…øNü`Ñ_б$ÏÃY%æ¸ÙM˜ÅO±>¿ß‹¹âg`¾MÀÔ]Œ³L|ê_ˆñ ™&à=QLwL“Ä ËÔCL¶L|_¦&d2g2UÌvLÓ0õ3-ß´‰bVB&Ž7èøæAŸ#æ_Á¿g2G,´L‹Ä¯î”½:GpeKÄŠØY1ËR±±ËpÖsÄ/1&súÌ´H,ÏÓ*z~£µšÖZk¡¯ƒe­XëZ±ÖÕ$¯!oÂ{³Eo[¬´Yün=ˆÝb¯Ånu2sl"ï6±Gü³l#ˆˆ9ɰUìŒØ‚j8v El»Ày”¼»QÿàLæ5´ïsq&÷±ïœç ë˜ñ‡ÜöˆÃ¶’´YÙ{ ŒÇÅ«ÿ%ÎYy“8!΋‹‘~NŠÅe«ŸBÜiwÆÅmGâx6gmÜZ¬"KÿˆKøL´‰LÏÿz;/®’†)“Ì*ƒn}5tŽàJ®‘Ùe´gf¹Væ@lfÉ3;/²Ä˜Ì™)“Ì–¦œô䢕›VZIÐóÂ’$¯ƒ5I^kn’óÊàˇw~‡Ë/otr>Y †ÏGÞ›lTAéÙÈB Š7Ë¢1¶BòBÜc-( [[jö‚„¿•|JÞAÞ"ˆ2üE¤@E¤tqŒc›FÇE¤ïx¨Vàjˆ½–j„½¶jŒ½*Xš¨6.GcÕ”©ÚÁÎÙšY®¥¡jî8¸¦FªE„ÃÔÖ¬-G+ôßJ=y´R­e/ï†9d¢ÌÄÚ¨önŠÙV=å¦ËŒmU‡ØtÙÖ ÁÛ ï§UoÕÏòwV¯’ü!æ÷Œêïfñ,a¨!±Y<§^SÕÇÀ®¿ú(š‡Ò3ŒÖpZŸÐýSXG¨‘ðŒP£ ‡'Å"F«ÏjŒú"†øL} ”A„¾Àú•š‹ýZ}§Æ« j¢šªf¦aúFUßÃ;IMVÓÔ,Ëòíÿ Ë8²M¶ušè°Ú?”$¶ÿpÚ'!ÞÄ~‚JF6ÕNgrLSÔt7IŽœªf¸ÊÓ«7u•ŸªÙÿC 9yT¿aŸ‹Ýä™Gò6z>ɬüSDþY-Æ0/ í·ûBX6XžÏÕ"µBmµ³ZLòêȬ–@ßp?–RüZµÅÕÁ¶ej•Ú;·_ÔJµNmRÛҜٯ„]¯~~q ¥,­–q«¬ÏÔm*bäâ3ˆ°“1½\Ñ,0ÁÔI”ÉÌt%i›]î(szL¦k3±Ô5ï g'­]´vÓÚ}/´=j<{ÔŸ°î"Û^µŸä´Ò:Dë0¢ª#ب£–áÙŽÁvHÇ~Xýe}‡H>AòIZ§h¦u˜Sêoì'ÕY‹=I¶s°Q籟VÿXßi²ýKòZi]¢u˜ ê?ìÕUÚ`/œI³í’ºûeuõ]"ùZÍñ™uIÍueÁ~ˆ¤K*«¾SsÙ`» ²[ßi’sÀwFå„í¢Êe}gHÎ ße•¶S*ÉúN‘-/|‡I¾¤®Ó÷B>Iöë!›9$é("YóÈ¢ó9{Ȭó;{É£o´úNLø$Ø/«º‚æÏ¼&6IßDèòº¢Έ}Ì“W¤êîs1œ›íY(C¡T1ìc¾¬úfÎ33áo!üݺ’ŽžeÊ]8f7÷ÁxMlVªâVb¼GßÙœ¡Y±s:M³õìœøœ³káæÀçKK§óÉ©•ÓùîdÓ:6§Ó`¿¨üÈœ8ÎpçÔESõÌìË¡o‹Í‰íœ?Up{ªæc_n],2's³QŽ;bó0w5;ñOgN&Ê`rc 7's¿øf ¹”毷¤.ý€@®¬ƒ¿ ט¬«èà¯Âý$ëª:ø#q_ɺšþTÜK²~PªèŠ+|ÈÅp¾#¨µ4±s½»xFAåwQíÕ] Ïí(ìeÈ^Ãá¹Þ£à*E™™«¦ŽþùØ^½×ÒÑ¿'ç.{í˜=¨÷&T†ªà)=‚þëà]W7Ò¯Úõtc’ûá_õ¨îãþõ ÓWˆ}o ôcú5=˜† ˜N©&–‰ÿuuÓ„LãÝL·vLÍõ“–é´ja™ø›hI˜ÉÜÞVºcz"ÓÕÆ2ñÔL·MÈÔï§ô3Ž©ƒ~Ö2]P-»2™oéiÝÅ1uNÀtQ=g™ø‹~J?Ÿé¼»êîŽéEÝÃ2]R/Y&þ‡¾L˜Éü_ѽS·L—UOËÄꮺWB&Ž7èøúAï£û_Á?_F=Ø2½®ßµ®ä ýžûr8öMë n9³¼¥?@ìÛø–úèw0™o™^×ï_‘éCüñúè,Ó=Âý78öcèóP=2ö¥2Ó0= Ãñì£?IÅÄ$f¢?Í S þÅ}ôhË4FíþŽÌôô€ésýmìÉL_èïñ%þ½}ôW©˜ø¯ËLcô7`KÏ8Zãi}Okô‰Ð&èIðLГaO¶‰z ÉSiM£5Ö DMÓ3±OÕ³,ÃT²Í†mºþû =Çú¦“ü£ÃÏÕ ­}ž^‹ž¯;ÔOz‰õý¬—ÆP ô2ÔdX {Ãj¢–:ë2H\Á"²þ¢£×©¤/$ì¯ú¨>«l¹Þ¬wë½ú˜>«e…Þ±u­Ô[ÈzXŸŒt´Jÿ±G¶i¨`1UóUðOl.óˆ‰k[­ÿÐ{ô}ÊÂTBÌ¢iÎ¥ ¸Ú5z!þÔ'ôEwbÜÉ,št€Y«·£ÎúþK_J3¹uz+üûQáå4ó_¯·¥ñ7!¨tƒÞI˜}”ƒ1ÿÅ0A¯³©³ù”‘{Þ¨w¡îƒèî*ßœ“™§9ÉÍVæ“35gû»“ƒ43 O7ì&¼Û"¶ð¬Ã¹ð|y¶l5 :à aoé_ØÉXÂñ7±=˜úÇ#6à7ÌÓȶ•ì&VÞ§Áw_ÓnÔ3.Ö§épÝM¾»éΞãîËÚó ¾·=t'ÌIFo£¹_ášÎÓn*ÁÝ篙k<¦ÿvw>¼ëæ.r_Çô9w︗cú|š™Ûmb8ßLԺعÞ]<£g¢òƒTû…4wþJ÷üJwûJw6#÷4~7Mÿ™|Ã~µÍr ü×úÉØ3Ûç—Å/f5ŽÎêûÐ82IX9{DÎA˜b1öœ°¹ü¢~ß| ¹I¾ÃïxèüÊ~ôï•äßæ÷ïó«øáÿ(/X+ùÕ"¶ëüÛý~êoÿzXï÷tœ7XL¾6?ü7Ú~ D¦pSl #S(éüæˆ|Kš)ŽMa‰¾ÕMa©.›Â2í¥™ÿ«Eª)ðŸZ¦šÛTš)ðRǦàÓ»($æ4X5A›ºMEéùKú|«‹úwZ¦R~y?¸çŒ. #¸¶2þ=~ô†2KYÿ^Ä–óù;(êßc2_3•òïÎ S2¦j&ÊL1%3»øÔâó2ó‰N†Ïg1UNÅÄ÷€™*úU3ÈôÏÿÑ¢þÖ©º_ÇþlÌTzÀTÓ¯çGÿoÌT˵}þoõIÅÄLfªî×ÍS}zÐjH«­ÆÐ›@kì7…§±ÿ¬ ÉÖÄœäf´šÓjA«%¢šû­°7óŸ° ÍÈÖ¶þ“Ø[úm¬¯Émß™ÚãÝœô§`í½£³vr<ü§ÜÎïìêìø?ìVu¸UÕÓ 0Pi”޽b Ø"`€­4Ò!ÝÝ᥻Séî%DEÅQ@šofÖìuö>ûœë%žçûÃßsž½ö¬‰wfÞYkßë4µr}§™•1º&ø6vš‡t œzêzKÛqUÐÖ¢, V6¶*xÖ‚>êCÆÖVPÓ& ©J™j u!Wc§-wÜÎÈ]·wœa¾Þ;€e83Б½9^ÎìUžÐ±¾.ÎX²cuXGWg´39ÀYG§Dp×Îéκ‡œ”mŒ3=Àg{§§OozôúÃÞzA3b²ÞÙéMõŽwÞ9NŸ=zí ò¾`åLŒ3ôèCafœ9µ‡¾úCýƒ ƒÎ8gVŒÉ¡Ïð ># Î{ÿ2ËÐÙÛ”w8U7ühvé†`6¬ñ]•,Cèæ$8C©Rÿ\ÍLk€neN€*¼cÿhMóK€)x–±öf%PgÞ|Í\‘ÍêÆÏl„Íj„9ÉžïÔàmÆÇ8Sì­Æ~Æ8Sí°¯1Î4Ëx¼ÓaÎ…‰Á|5©ÖÁ€Žõ¾:‘³œv¼ GOÕûò ~(õ>;0ɤL88UÃè\›y^¨æùv œO3ÎEµÐÙéuR¯›EÎ.°âÞ ,vvƒýLˆ¡%ÎgÎqBBßÈì–:{œ“¤O&¢«Xæ|NXÉD0f¹óèR*Íê g/ØNjò˜]éì#¼‹N*ágj•³Ÿò¼ˆ~µs€òœ¤~b3»ÆùÒúD0ð«¸Ö9æ¤滸ä³¾ïâzÚ'h|¿6·§œœËέÔsĶl¿:8w‰û„ÿ;¶‰ùƈ;£lïƒ cN9çc|‰6;ßSå;眫Îí¶û ×Îaç7ç„sHâÚ|¯¶8?P–¿ î+P…¿ÂàWëCçG[Ϫ÷~þnmu~²Œb]w‹Ô1¼>r~¦ºN;b~…?†³ãåºìÜÆU%öýûÄ9bowÓ±™À6›c{(ÛŽÿÝ•¼+ ƒö®4r¾ Ü•ÆÎס»‚ÿ:ßļ+Æv(tWðÅη1}÷Ÿ¼+øÍ2ç—›tWŽþ1:ÿˆgB?Ô§ý1ç÷8ö“tŽ9: gë±èqf"¼IøkŒôW‰N`E>E¤`¤aÁ?ñXHé?ŸcÎ%F“ãýÿ€±Whï!ãü± ÙÁ¼±Õ)¹"á&ˆ„¼' )Ýs_Éœdsú#§ÞCòN„wR#ç³Ýì€to~ËÉ;s‰#¥…_:xÒÓžŒ´ÏDšŒâÒf’6=È™Df³À“žlðd§¨¬"½³ˆœŒt¹H—]ä¦w6‘‡mÙ@çP¬ L’Ö¬°W¤Õ´w­6¯ÅÑ"Ÿ•…ÈoëtÅCV–âa+ctðÍ+ „tJ Ô#½õÊÚœP±ìG,YÀ3'åÖâÑ+è÷X@ƒ r.ÀVPÁãÜÛ¢.÷þ$I‘žÅEQYTõD‹@?O‹¢¬Ï’ޱŠÂ¢~ÌnŸ/‰òQC¼)ŠÖ1û/"JŠ 1½‚ý¥D%QET D›8l¥EEÀª*jVÛü<+^¯S¾š¢¶h$Úÿ cωWÄ”·–¨#‹Ìáó–Ãn‡/þ'9|0Þd_coaÏÜ˲,G¸*Hu|73ÂOäWðé2P‡é =‘ìÇ0âu€šHožÖë û‰t’üðT…¾Hˆ¸^íYÈR¾T•¡¬¤2 â;+ÙjQï¦ïtð®mû4f§“•,õ¬¥¾ý’U)z_¢Ê4+ó-©L3ñWªë;uEËJ]ñ–ýzbõDSûÅ~ê‰föœ`íõDs{¶üçØÏQ}ÑÒÆ &ÕZ ªm:½‰Ùxç4úlz_zÔ× ÞÛÎcRÎiðlN;ÚŠ:…êîl§ÐEL›ÄÕUL«Ä![u71¬‡,Bw1ì›B õSÅ:B:˜]O1 ´[A¿'TE/1°öDÅô3@¿NðåõXí#Þ¡˜`f¶¯xl[m SýÄLÊ Jß_Ì¢V¬´ˆŸ‰ýܱ™À8›c|(Û„ÿÝ•¼+Z¼gïŠ+æîJ^17tWðÔ®b^Ì»blóCwÿsé.ļ+ƶð?yWð¿°^bÅMº+«`]Mâ†Ð5ëh¿Z¬cßDµ™ÙgäÙy¯vÿœ¼#ýe¤˜> –=N£‘c#í ÿ|V‹O OŽ÷ÿ"í¢½‡„ðÿÅF$d#öÐÿI«á‘ð?DBÞ“†t€þ'[-¾d$s’̙͑ò¼áÔÈùÌÈ·o5߬Þ£Èýù7¤á÷Eë_âV‰‹Û¤çqZÜNòò8+î D ëqN¤$ùR)I‹±édVöÎËšô2›Ìeã1ƒÌG*öI™3&!w8_j™™1ÒÈ,€yý5ä€5'I%7¬yHrh°J’­ˆcjÈËû|Œ“Ÿsb±.7ȳŒ5àÈ‚œ±1U?"KDiµ¯Çdñ(Íã¬Ie;{B–á™=Éï§xzOó»pˆ×gdE·E|rQÓÅ|ò³1xN–ŽÁýó²T þ_Õ˜›âÌe ‡/ú8|ÉÇaIæ®sY:Šüòåæ•(VóÉWCš×brˆ\•åw9æ²<¿+ÄåÐðSÉ'¿îãó Ÿ\9[…d•Ì”UãpX~5à©IïZ´¾ km’jË:d«-ëÒ¾{Õg?´7`]Cш5(ד ¡‰lÇ1oÉö„ßÔ"7“mlsÙÆÊ-8-e§@ÖV²+Û[Ûˆ6ˆ¶q2wˆ™¹ã£Ü9€Ó\v‰‘¹¶ìfý»Éî²Ghgrt“=­¥W·wÕDõ‘}áמþô@ëÛ´O`y % ƒù=„-Cy?LŽci¸Ͷ cÄ‘rŒïC%ÇÊ 1š|"öˆe\ ËDøM‚g2½§Ð:Öi$M“ÓÉ6MΠý;ìõ.û¡}&ëf±ÇlÞ£íùÅÏ‘K8b®\jçÉeo¾\À\ W°m!ã. à.¾!\ã·R®³~«ä¹>à¹Z®•’`O:ÖFøm‚ç}zo¦õX·´E~H¶-r+í?b¯Ùퟀ¼öÛävòÞ&wÐþSöÞÉÞhßònÚï–Ÿ‘÷n¹‡öŸ³÷ìö½$ï£u¿u?üRÓ†ÞiiMkz’Ò« dK¯2Ò>{=À~hä̴Ϭ²wf••öÙØ;;{£=È9iŸSå"ïœ*7íó°·ÃÞh¶ ÉVÅoÔeRÚÚ]UÕÊyUÆÈ§žUeUµ@L~UìUº‡|:¯«‡Õ ªœªN\d†j ¨ò¶Þ‚ª„ª jÚn ©í¹Bú=¢^RU-[Y6èòQÈô¦Õ 'Øécêõ@ß«Òê U'ÀÜêe«ó*Ï|=©ŠªJªn@Ù+zJS•9§×A4¹žV¯©*ªž­©0#=@,bíE}\K”k©ž q-ÕóÿÊuqUㆹö˜-©jø/\U½.®ýœºê•ç8‹¼êÕk⺠#” •#&Ìyó÷ê﯒o ÞÙ‰®8ºfo*Á‰™ÔH4³ÿüÖŽ“ÙãÆŸ¹>üÀÓÞhm k’š¨·ÈÖD5¥}3öjÎ~hoA-ÙÒJuV£Õ¶·V]`7NM$M5Ö¶j E´S]A¯&‘cÛ«ì=5TO5ÖÆ#bGÕ 4Ôdöi ™;%!w8_Õ1Úªî€y½54T½Ù³ìËßW ñåïGYûsïÔШÞßV#¢ò&¨‘QyªQQ½÷Vƒ’;œ¯ŸÆýÕpÛûõÔ0Ö1$”q°Ž'i­aDÒdZÇÔ`â§ÓY£f0Ú;öÜUï’<“<Æ«YŒ?ÛzLPï‘<‡<&©¹œqžõ˜¬æ“¼€<¦ª…\Ã"ë1M-f%\ÁR>é£A·Œu3A^ÎòWXœ•Üû*5ôsÀ²Zý`uÈßLЭQçY7öˆ´VŽÒ¬Sçì-ó¸Ÿ =-RëÕ꟢ |“6Rgmè|-T›Ô{_ñ¼ûç>œ >ï«/ÕI•BG¦¿Ùw >°Ìàý0çd±Ú¢¾öÝ1ï¬Í¤>?TÛ¡S¯/D1¨¦›­ÐŸ×¢6£æ?iÓÉs±úH}«Ž¨+¶w¼wþóg8ø²ý¦’kÿ÷ï£ÿ\¾ çb> ~¢¾Wÿ¨û´™ï6žßvß|wøæû©o¾;í|wñ|w‡æû™í92ß=væ^ÿŸs÷Í<ñð|÷ò|q®ûxÎûoh¾f¦}7ý«kžïRõM"ó=t“ç»T}§~UÉ®y¾£™Õ¾[·øŒÌô'žäϾ™ÿbç|$4ËmêhhæKÔ±¨in‡jƒš¥p>cÏwœ·ã<ßßy¾æ{BÝ¡¯ýþþ黿§bÎ÷/u—Ž7ß%Ðéßö”FÏw)tx:Ió] wåŒJ¥ŸïZ8ÿg9ÛµÍ÷Ï÷¼o¾|³¼Èó½ä›ùe;ß+¡YnSWC3_¢nÑÑóM¦£ç›\ÇŸï­ÚÌõ6mæ|»¾‘ùš™¦ôÍúN}=ó=¬îÖñç{¾yó]_¼ÃêÞkº¿÷Ã/5³Î“hEÁ:L§Ù´‚*ŸÒÅoJiÀÇàä×Û ÒOÄà$³.ý_'Øé#ºp8Áš«(Xǵq’Ô*P[„±Š0‹'†?èõ‚.iåâœÇËèáDj2ø3—dÏRˆÒ”ùåD3aT”ËÄÉü‚.7s]Á'W ĺ*…4¯G±ócã¬*òƒª8ªØU ìªû¬°ÔôYjùä7}ríPÇuBì× iê…4õCš!MCÏBÌ6öÝ¡&>ù-ŸÜÔ'7‹ºõÍ£N|‹g¾e ]«ºÖ1tmbèÚÆÐµ‹¡kC×!æ·¡cÜ{Ù)®¥sŒïX—÷¸kÜ›ÜMw‡_xzÒ»­½aíCRÝ—l}t?Ú÷g¯ì‡ö·AN }‚HÞ zí³÷öFûP‡Ñ~˜NÞÃôÚdïQìöѬcñDzåÁz!Œ×ïrÌ=“ª™h똤gÛØÉz†•§p¦ê÷5NÓóØ>ÝFÌD¼'󬘙Ç2>Ês8“õÜ8™çÛˆˆ…v"˜}‘ÞÂñc ÖÅúÃÀd°ª%z+Í3¨—ZÎ1z™þØ¢aͨǺ—ëO|}¯ðõ±’ÏîFR_«ìIANmŠ^¨x,`¬Ñ›Cºµ¬ófÕ®Ó»í3ž£ˆ£õzë1S¶aÜHšÞ½=Àã8˜ÐFýy€ c1¹çMú Æ|ßv¬òƒàz–þè:¸Þæãz{€k<½;B\ÏÑŸ†x] wÆÐíJ×ÈåJýY\®q+ôžëäz˜ÞK·dŸei¿ýìÕlïûô—¡N÷냖Ͻú+{Ïöé¯-Æ7áPˆëýú[æÓôò]€ÝïCù3¦ïŒþhyÂv¬þ§›ØÇÏÞÑï—{ès$.ßG㲊|Ó¿Âï7xŽÓûwZÿ€õI'ôI²ÐÒþ{ýÅ~hÿ›ŽëxNŸ’Né ŒwÑâ^b ‘OéËú.7½k¢®è»Ý ®çwU§pÓ¹þ*nqS¹]“1™{¯›É5u%wïc»8 Ö[ÝûÝÜH-·¹©ÝÝHÕ·»iìÞ`£=ïpÓº™]S{ ®%¥­éN7iµ_Ð÷ü¿ÖŽ5¤ ÔêÕ™!i*Šä÷òñ3»Yà—žlôÎNkXs’”ÓÍE¶œnnÚça/‡ýÐ.@–´—®"oéjڻ엽ўäü´Ïï>DÞù݇i_€½ ²7Ú ±óäqaË£ìqe. 8‡8‹t­‹ ìyƒ7àâtH8X.7SñšA0¢€YŸÕò·F>kñ½×õ¾”lÀu£o‹ÖmòÅÊÒmöÔÅÉ'5ñ¾­øŽómÓqR¶ýã};P·SGÚå;`¢ßn<ƒÏ©Ýã;dåPQöúc¤8ß>ôÜï 2ïòŒ(ÒZß\úNûòesÌwÆ—ƒÀ)ÞwÜ——8]6¹H>bwuÒwÞ—›äG›Sa"ÅùÎêHPÝQß¹°‘.`¤‹¾ë¾Úæ’ï†ÜÁH—}M¤+Ò¦)êŠtÕwÛW˜C›ka"ÅûnêHÐÝEß­°‘6ûîh ïZÈÞÃø÷±ãµ¾DÄÉ’˜¨¾aŸ„¨|°OJŠgN€T–LZ “@Ô#ËäèUÜ’^ݤÀ¸Ž¦ CO)Q>%P ¤"%‰Ã»ã²ÛÔ$/)H|ÄaÐY‰e#SüCë}Ò´7}iIN´xŒ0àÔžNæĨ%‡~Ò˜mBt•;%K3˜êŠ»ÎHü$˜·À˜k&Œž Á·äbwË—ÙecópÉ‚Ya‚8‡ˆÎG ìyƒ7tîàH8h&ç5/Ìø”‘¿²ò)‡ïò¸V UPR×Jä)­«Lž–;¥{2]U­­Fš’Ž$ÚXU'¯ã¹¿”Ô ½åZ“tBZäM¹ëMiÏÚ¤•´ìIúÁZR‡|D>%ݤ÷g&^]Ò€´C)X·ª¨Gž'HgEz‘¾d$樯#5 /»ªz†¼fªjˆU5ÒU=KÞpUÕ˜´ªª ù0¤ªjä9Ò6ª”G}ò‚ÙW%/ZU¥î%ºmlÁ¶"JfRÖ…t·ºé+¦?'G}ò*Úõ÷D!tZN=Õ¥]s“c@JÁ“lHÞB`_ƒ¼möÈ;ˆìk’wõ^±®–ŒøžŒÑ•ôq†hÖ±Þ—yèW”žÈèÛ]ãï5#@ ¥kJ^ü ž¤òk–…€ Ôõ1ÎS¡¦68ã„ù޽±ºÆäDâµ4udí1:àÿù¸ÕQ®pçà[ÞTÖÏ€²·¾;ž{à}(§çzÕi9d˜·vý4^ý­Úà~ ²$ÀhmGhÔfÞЫƒ âô=Ì`é…¢ÃÒJn|¢É({´®ø>Æt5–Ì5èŒ#¿[@Ü~ä 2ÏêüK2ßÂp€˜V^(Ùø¨:+™]eMM»Š âPúdPtJŸrõ÷´•)Àª¦ÏjfWÝô\ÃìjRõÕ^JH›Zúœ;+EkkLA_Têëès!­¯ëB¨ž »ú.]—îƒfC—U#—ճƪ±Ù51»ç<&ñ¼… àqÊÒ‚0„i”¡/zÎí%OéËžÒ¦žÒfžÒW<ñªõí{ÍÚ¿ní›[û7Bný›!÷þ­ þvÐù ó»Aç÷‚Îï?:·:·LðËÓ*Á¯Í‡a¾7­Ãè> ó5ú˜¶‘¿¶òi‡ïOpmO?EI\;Ò.Z׉v•;¥ëì©ë&Ÿ(ÔDÑîøîF{h‹nRÖý£h/ÔEëH½é@ üúà|:Hm_:ØÊ¡¢ô£Ÿa¤n´?zðˆ™{ÓAEß!¦Þ¡ZûôsÌ4ŒÎ1‘‡Óïé¯t…kH£+‘¦ÿQt eê-#¬69ÆÐ©.\ÆÒ¤íR—lýÉUÉÒçwº6«/éÏô/º1¤óñôGú'±Pq£e¬ t]@7xâñý….¦[tî¯MÍ߸ªùÖpeýNö¶<"|Úbž‘t’aÂ0:™Î ÁÌR{ĬÇiÒ~f(XEK»é/DáâFÚÕGAo¦él––À>šÎ~(VEѹ;U§^èͧk\} •3 Ô©dÐM®Jñ…è—N‘ã˜/¢›#Àe‰©y©«šeÀª¹t•Çm àâÆ/«Àg"3Ÿ®OÑp¨¸‘ŽôNF†^ÅïLœé;ÞôK·Ò¦Ó8ºîtUO·Ó]m­˜Kwtãèe¯‰°/ÕxºßõÍ8àšõAW¶C!˜ªú‡`¨*=â‰áQOôT'Çèqù;!Ÿ“ø>…ëiz%gp=K/jÝ9zIî”î‚§NI.Ó–ô ½‰^Wq½f2\k¯4·h*¦4gdÆÛ45 ØÝ¡i˜ªò.MË 0UÕ=šŽå`Žÿ}š^ž Z1± ¬uNÌ2J‹ösw–’eg¹Y~V”ý[z¼@s`\Qy{ÙÖyL^wÆ„}ÎP…BVÖÈã“¿âòyß%p-ÉJ|¸&´Ž2¿Ü)÷Ô)ɬœ%-ÅÊ£Wi\˘ eÃÚ+MV[k|2cEVDz«Äêê*+³zì5]UVŸ½`üŸd äéu+ÆSì)ijIžf Ys+nUÖ-šëª«±gÙ‹ì ]}uÖXŸœ.j°&RÒŒ½éê§&{޽Ä^aouV‹=Ï^f¯²·ÿ5=r¬•éˆÊ;ØË¶njòº3&ìã3ÈØ(4·²Fïù{W>ïáû}\?`¢¤®-ÙGZ׊},wJ×ÚS×F>mQÓ–µÃwö‰¶h#eíÑ¿-뀺Ž:R'e¢ß§xŸRÛ™õ°r¨(]XOŒÔ†uEÏn‘ s'Ö=¢HàÛK×­ÏPIGÖóôa_™¸}Ùpö5ûÁŠÔ`ß°Moý¥õOVEØ(öû9¤²l,›Ä~ ªpÇ&²Y!ˆ fcØ÷l¦gŸ±/Ød6[ç¢;êêäs3Û>l˜¬pz„Æ}ØHö­gG*b컫ì|´´›¦ö‡CàA~©§?^Ÿ!n76á!g¾ÃpSHhfÞý…ëdŠîdª«“iÿå̳0üÌBk8Âuª°žÃ–š*eˬc Ùrë<—ýÉV„Tü;[RÕ<ö[ÒÃ|¶ˆ­ªt[ÌÖxÖù[ÂÖFPÍÿ.ó?Ÿuò·^>ð½Q®›ðƒëf¯å[ØVÜmb±¨‰óÔo“ÏvÔlg;ð½íÔÛ¤lÆßÆv£nδ—6ÑÀ~žÁ'FæÙÏŽZ9T”ìFÚ΢ç!HPÁ^v$¢HØq\O°s,7W6'Ùy¹ÏÏ¡«S,wº9-mòò‚Üîê »ÄòñBhs6L¤í삎Õ`ÃFºŒ‘®°[¬°¶¹ÊnË}1¬é+bjº.mã»"Ý`÷XQ^mn†‰´ÝÑ‘ ¦+ìnØH1ì¾Æ0 ›uIxa|'åNçɸÊûäܧw)¸BCÍ ‚ÊRJia^ÒŠzYÖ m}–ô¸D85Æu¤0MÀzJƒö %¨…Òrʶ\ݦãyxθÃÅSËôF¦8~»¥ý)éqMúdúÒ¢8÷ó× îŒfX˜ K=e’•’Ü…ef^ZŸ÷HÖf1Õúx0o0¬"•áÁ·¸³Ïæ²±ù˜dçÀ(ÈRÊÒªz  @°Îaª)Ð͉ZàÁÜës)¹0Ø•Ãz Šó®; Ïg@Ö[|RÜ pÒa¢âLÄ[Ã.ÙìQ¬P|p&y¸®UØóoÀÅép°,m¦â5ƒ`D³>å寂|*â»’\+ã© ®OòjZþ¯Ž»ÊüiÔTõÔWæ5´wMþ*ïÌ{«Zü <”’ÚD{Öãm¤eoÞŸÕ’ú¼-ïÊ{HïÏM¼¼ï€R°eUñ ‰Ê»ñž¼ÀÇ`ކ:R#þŠ«ªgysSUc¬ª‰®ê9þ¶«ªçùGAU½À?©ª&‘·°*åÑ¿lö5xSË£†Ô5ó¨;ÛšRÿšéÉտΣx_Kfw:È[E΢½)¥QRÞת§–ôËȇ <ÉÆü]DöMø{ˆ ìkó÷¼ÿ@˳êʈ-dŒî2J?>L3­¶ŒÕRæ  _Uz6á­Ð·¯Æ¿ Vþ¡k&JÖ:hržåƒY¨@]ípžê 5}‚3N˜áØ èדÕuD”!îpKS_VÙ £þ#À­Îrí‚;ßJ¦²(<ÊÞz`V4îÔœ@§º¬¨ÓñÖW1\dÕ>÷Ÿ!K 饱í¬سoèÕAPqúi°ôBÑaéh %7>}ùX{œfTg)ûÂtõ%ŸkÐÏ·*€¸ƒø>Ïêü+>ßÂðk¾À£ºoø|¿T¥šò·|!á§-]`Îßñ?ù&~ʳ“ïù_|'¿ª¿[õWuÚÖÆ/Z?>™/Ið~MáKù^~ÓuG§b·»9MŸƒïÒt¾‚Çòsž÷ñé³…Ÿ ¹'?òU!wå'¾:Dö3_“àšÁ×ò£<±Hè.ýÂ×ñc<‰HøNÍäëùV~1ÌÝšÅ7ðx~!Ì›Í7ò“<¹P\š£¹ô«Å¥ßþÑ\Z¤¹´ø‘¸4ž/sqi<_þÐ\ÏWþ‹¸%磾1 `ÉfÃ…„â•BÌÍ¥8~ÞbO /dRu>˜KÚÇIFoç—=y6V²~¿ò.ovqõ?ßn´­ƒüêÎ÷ðqÉù?bŸæ‡óÿÃ~}þ»7ì¿ãù¿ÜăµGñ{!ü:Ìï‡ÈŽðDâïãR0Sà®çIð ¾ 'x2)—Ni.¶¸tæÍ¥kšK׉K±ü–‹K±üöÅ¥X~÷_À¥ò—R>©ðZ®ið”×t"“–§™q—Fd@MFO}ùdEMV‘ ßYDvm‘EÊr`ü,"'êréL¹EA ìóà|ÒÊzψ欂¸Ä[‹DF|r!æMÐ3€HQ9mÕa8T”í â݇âLæ%ñAè555s¡÷ÊCÝɬˆ—/î5 ƒ“°j$Þyˆþ#gUd¸d-qmezj%>4û–¢µ«¶–Rû‘aKKñ±±lãâ@[ñ©ëv·Cz‚ØŸ <´öö¢«gÝ*ÑÍÔÐJt45tzè ×v¢ËYC”üu—O|÷”k/bîz‰¾¨é—€~ >ƒŒý@1Xû|¦µCô;ZʆZÀës}†>Ãůú»:°"k-~2úõ®ù?£°\íÒŒ3p2à³&dΣ$þ¿ <7`¥3å: wP¿òP³í¡qV“÷ÒÏ“ë|ÜA—JçÌWMNMßKm¦d÷®p_†·b–ô^®k\¡ó­4Ó°gÞбƒ`ãt¿Öðê‡:ÖYù‚ñ¬øl”¿Mò‰Á÷f¹nÁS,®qb»–Ç‹¸Û"¶¢f[ýN£Û%މ«â®HìWV±Òo·8..JéM)øî'Œ4)Zï·Ä=´Ø'.‰k:ë~qJZÝ÷E ¿’§Åeq]ú¥ô;'Ñ"¤²rç0ˑȟڒçÅq³§ñª:". ì3XòâèßÒ£W­‘u¹YâsëR§}â,Vú÷õ#½7ÊÊ`™•¥Ê#ãÂÙ™K¨þ¦\oáºP:UmŒÆDM×Kk°LbÕ­Kæ†^’ÞÉý*O ]k`úÁ“‡N§ë´~g†P?Ô‘ÎÊçL*½…‘°¹+2ZY2YY2{ÄÊâw:ÎêwpËfù€Mvþ®9=êÍå÷åQóÎí/iÉóÎã/áÙO^iëÖå³öùý;X Öôÿ‡+÷©êÞÍŠ’KE†ÌE¸öt¯9c!Šˆæ26¸ËP)EDB\³L™gR ež2UÈTæ©¢4×·×ÚÃÙûüÎýÝË¿ï{þßÓ÷x~çì³×Úï^û]ïÚ{_e"tZ€”iµ`è»PH½…Ó¬Õ"¤tš.JÓÔñ­ä°{›Ãu1'oÅ#ru»ÍP ›µ’1¹*åä'ÑÉ[étsÄŸ@hd³7W*'Âi'9yKN7Wî.“ƒ” å¢\è»|(wÒÌGNR1Í<ÞD*ÅÍUeù¯ŠüUÅw5ù¬Ž_5ðy'©­ûï"wc«:©‰–ZiØëèï:¤®õ¯CîÑcîÕÖzú]CöÕw`Ô}¹ãÕÐñºß¢5²x=Äœ/À¬GôìÅÌù0®üó£6ŠÇßÇíÌOx«kâ¡7AofÇ5'OÇX['IŠõhIžÊ‡g"yÆ‹¤¹ôm•Zkù¯üµÅ÷³ølG:bO{|v µí9ÒE¶”­S¤­«üuCK7ò<¾»’´GWÙ×Çw#=ÐÖS#õ"¯Z4÷"~ØöÒúéãÌ¡P^&¯#RWÒG¾â!ù#.ÄÑ‹¼–R_ù뇾ýÈøîKúkß¾²oÎÖ¼‰¶z¶Ad˜Å‡qoá·™}0î̦PÞ&#©/‚#‡F Á̃È;BJ•¿‘82•ŒÂ÷H2Zû¦Êöœm$‹¶qz¶ñdŠ ü'à·™í]òž3›B™H¦!R*™„#'G AãÉÔ !µ%Óñ9ƒÌ#×Så3“Ì—í²1‹d£& ³¥O½‘ºÙ˜C‘ìô&ô™©Y ‘ ?3ȸH‹i ùˆäÑ>ï“INš‘–’¼éés3Íç!}HV’ÜôôY©/Y®‘`uKÈŠ¸HÈ'šÃOfW!þjDoKÖØ•¯Õs@{ɯ[ë5*OÀD¶Aöæ¡h€ºXƽ}ó;½Ó%Û×ôB6cXÓfôkA´Â ¶BÔÔËÉÛg2yiaj”?K2°Õö©ý¦/zƒ F,'Û¤ýšKúÜJƒ¸·cóТN?¬i‡Œ˜,¢£(«k§.¿Çðç¤8 W.¨òúâÒí4\“³‘»äKÏÇ­Sàd* f-æXÕÌ0 \ï¶Ñ•¡»{Ð :¸FU?(”òÎ~%1Þ½¨}äUÅ~rX+ •ÐõÕzPúõ êókrÌÖÃ7qF’# v}äh\¤ãˆt‚|gëá$ù^ku$9¥ëNKŸ Òòƒ­‡oã ¥’³ Vw‚œ‹‹Ô‰ü¨+ê¼SY?!þϸâ¶ä;˯zÝÐþÍVÖïzf¥` "û#¦²öJ.ÿôjzËÕüåÕd8†5]BýÊ‚\JUeÁ>|@®ö2TìòG$——S¿²RÑþ`=K® áÊ‚]b¿’dúa=WÑ â ÊqrÿÏDÕ¥¾š•eN„ƒÈË9r ­,sþ€‚ ÷™iTeÁI¼d¡áš«š¢žÕkiTe 0{ ×§>rA)Y©_Y  ¥ù@ëFáJÀl´='~ëðèÒ¨TmƒV~WSJJ&ã€SDÇZÔ*ÀÍ7Œ†•þ€'ÃB¹¨„Î|~JQ¸f£‰:‚Ò4‰š; ü6³RZ†º7CÀb´,Žàî‘Ù¨!ÁíJÓä "•C¤¼´¼f§­j‘`…ñÛ°R‰V÷`mwÐ8¢2®./­B‚ÕRZ-CHÐw§Îç]¿5± Þ…h-jîÉ*³BÆ_›š¯êK”‘Ü­ù©£cªksÞG÷vrŸˆ(Uè=VS÷:Ösb¯OƒÛ´Ù ÷9ýfGXݨ}|¡¿¡Æì)ïçÁnq¿ÇKqÚÈá@y”¢œ6)/?-G+ÓìLæï„@©  ÈæƒÖÇÜù‚‘U£9èðWB°«€–YƒÝ²úˆcUkp×W£‡Xuê$ØÉPs¬Á_"A=~A/Ó'ä¿&ò×ßÍðÙœ>…=-ðÙ’>£mOÒV²¥lOGÚRä¯5ZZÓ6øN¡mµGŠì{Ç·¦íÐÖ^#u ]-Œ{¿aL iíH»9s(”NôDJ¡qdÉ©p!Žôù4Rhw´ôÀ'XzÚè»Ó^zTú¢·–žô%Ewú²å®í­£zE¿_µh}4ÂkÖ;ùè,Ñ^׬]h_íÙ^¶û9í7ôZ­ íïE4ÀYý›!& ú1|Àê9¬€×[ÎH… óŽä8xÛ®nˆ^ÁPý†¾öt˜UÄ;tÍÅŒ÷p:Ÿ²  ègô0½™¹+J¥ ¥ÏÞ*GÒE4S8®fFÑÅt»D8Os³ð:GÓ%t=B¯fÖ1†¾Ow∠ß_õXº”nÀÔŒ± Œ£Ð/$òOôó‚–ÆÓ£ž&Ðet7=F¥YX>•ùwéGt=Aÿ¤×±‚,PËDäèZ–Ÿ¹zœ${OÒßCz™LWÐÍô8ýfe…˜›Ó‡N‘£¶Èqi<_ÉSé'ô ½Œùzz~Š«¿žŽáTig]E÷Ó³ôR–ƒÝÊÂJšNWÓô{z»ÝÉ0Ì=€Î kèVzŽ^ÉÔLQú›I×Òmô½„ÝÄŠEæB©q]G¿¡?ЫXNVÜò6[³5ÇÓæÜœ6?ü›´ ÙN?¶:TzN—;z͸6‡Ó•ÿPmš|½§£ μ1r?Þd•»ÙÑí–tU»5F³ÛþcŠ"«ðó R¬9¿¤™Y架㥒wIUfayÙÿUÏÁi uÿýVj:J‡{ivV4¤Â}˜u—Á¿WƒƒqŸ9WJ§°÷|}Ñûã!}¯8ìÝ/Žàíè(ÞsŽIFæ ’3Ù|˜,($µ#…ù9Mÿ ÙXGUÝÁ¼A|U~G/g7²"Îêî|ö}Æ}¾|.}ŽÂ¼ü¨ù8ïñò“½)¥?Û[í1ú‹Ô”Ñ\ AŸ3—¥XF\µº5ûeÔ™–}|¦3Êêųè™tV¯Öoèk/kþNÈÌ\U) ª•ùl*¤¬ìoá?à0˜OS§(UE3åó¯ò¼äÒqÞìÅìxînçïqaU)^|þ.DUê„Næ´ŽæàâX½8ön—ÿJÈ_I|—Âg"cØSŸ„ m£,I¶”GÚ’å¯ Zʰ²øNfå´G²ì+ã˰ h«¨‘*±ê ÆÝß0¦´´Vf5œ9Jv"%³ª8²š‡äT¸G%vgHɬ&Zjá,µmô5ÙÝzT-VÇ[KmV×FQ“Ýc¹«ÅîÕQÕÓïúí>ÐÀz'#U%ZCÍ:pPݯ=+Êv#§ÝX¯Ъ±¼ˆtVÿPˆ ˆþá>`u8¬€×£ÎH… ó>Épð¸^åÚ£‰mS´5cÛñݜֶ²g—n·dûmÿ“l•“˧ØP6…­–¾‡̧ÙD錇¾gØ`Ùà˜U·b©l[ƒÞÆZ‹¥°µ^æZ³WÙ(6‹-b+Ù:¶ƒaßEæ§ ëÃÆ°9Òo)ûHún”¾»ÙéÎfº-ÂV° rƃì¨ÕÁ³l2[ÈÖ³l±k§×Ä ü·g[ÒÈSöËæ²Åìö1û„}Æ>—xÙ1ö—§çØp¶LF± Ñ¿aÇ=-udÓd,ï³Íì ¶×™¬0ÖI²9QFab;©¥Î¬Çæ!̶ñ`¶óq´Ò… bض„}È–³OÙ6ö%ÛÇ±ì ®ØêªGwsâzyA먻¹‡£ƒžÎZzy:zQædrŒŽ^ iú^iˬ¸·dtZŒŽ^ù·é¨{Mj?¬£úìuYaA6ú¢f”ªúyªºx5býeõ¤¥£Æl€¬¬ø:z3C:jÂþt+~Kìí’o#+C´–†ê7ìºÃdÛí^ýŽŒh»9ÜÑÄŒTµS~…>­ªΕQ2Ë;´^Fcƃ3f ~CîÝÓf,æ2äw¢/Aßx\{øDš€½À…Á|WûLô|'¡}²ÖÈý¦Ê,¶£ß“1™ædy:æJµg8ý }&ZU/°0Kªüˆfa6j>`a~@{ÀÂ\T&h2Xñ³ðëµíZžM¶”-k¤-Aþ²£%;Ïï~ƒöH}7âøìü&´åÔH¹ø- ÆÝŒß0&³´ææù9J^‘x^™ÏCòG*\ˆ#/R!ù+Œ¾…y|âEµo!Ùw+ÎV˜ß†¶bz¶â¼´Å‡q·ã·™½'Îl ¥$gˆTˆ—‘‰’?RáBÅ9M‰ËŸ@_Γð-x²öå²]g¼,ÚÊéÙÊó*Îlx5;Œ®h­0›B©Ä«#çw oeI…Êóª1ÈQHJ54Êú }9ù]Ö^“?Í×ZÕâÏð“v¶Ú¼ƒÏàëø)O_wóéõ»×W‡·–8»b4V—·áoòÙ|½Äø#F)÷ð¶| Ÿ#gØÍO;븗?Ëñ¹Ø¯Æ™õªÙrJ5Öãíx>g ¢ñUWŸ·çƒù|9û‰ÿ'VN!ÉÑ}|ƒÍZ>”oäßZÍ4ä‹ì7TôßýÒoß,-—Ã^¢Ìw#dð;~™í=A–K˾_3k·*„Œ>À»ò~|:ßÄðóürÖâƒÈý‡|+?ÈàWˆ°z’ö‘27®Ýd0ѳXÆÐ—OãÛd*Æ gÅ0þÊüÞY<Ç3yvUJSò|;?“A¯Qæc¼§Ìè§|?ÊáW‹°¿©a³ŽÇy/þ®T@à«å'ø‹|<_ÉwòcügžEDÕiþŸÀ?q||š8ͼM¥.Çñüs~˜ÿÄ3‹(…ÁõÕŒ÷æýùLþ?Äå×FúªH€Q7ðÚœ¿ÂðYü ~ÜáÖWh°‚`½-ø«|2_ÿä'øoü:««–ZIOzµüÔ?¸– KÖ:èZ†}ó9¾ÐÖ.œ$ù¯–¡ü:Éþ…¡Ze‚Škòζj¡¿˜ÌdMÞÅ©ñŒÖ²ÑzmÞ§†jÕÝÍkóçen>ˆ¬eÀ(†žÅ ÿ«e©C3¯‰³.™åËÿkjøë£kø5ïtxݪòÔ2¨+ýZ†u…kbþÏÖr ¹O½Åç]`-'H‰¬Ýð9 wRðQýù0iÙË¿·|B@•ïHÞÎꊄþb2—Ãu¥žôvQS˰‡ŽàKËX-Ç?—UvU-«svçQÞž]«£ùGüG~Md­á£ŽËZ#s>þ}µ|a{Húõ çØD¾*n]›=ηI|õßVËS´’¦zµüÞ?¸– IÖèZŸËá;6Ô2ô_Cé¹8Tˉ2»ýø§f¡ô ÚîÇß·žÑZŽwî¦w7ÙUwlu.C-÷ãËþñµœþýáÿw-ku ¯óN‡õxÛT÷L¥[¥B£Iu»ôï“êd:œÝ¨Û^ÔÍ.ê¦{ÃJë®ïN³0/»4»=^öà ›¯l5›úUÿ˵‘\âÅç/̈™€¬æ•¼~ xBý`ä“(ßÄ0•Výø\«Ï ›»Æ)ï„8{åOUJƒje>› élh îú±µçó†ÿN‰æ)JUÑLù¼øUŸ—ß5x¼üiUu†ÿS]Ѫ þ: XºUÁ¨œÈÌY~U\†£9ð™Î(«Ç^Vùïzùˆï|f7aO|Þ riÛâfÙR¶œ‘¶Üò—-yD^|çù´GnÙw ŽÏ#ò£­€F*(n³h0®~ØÒZXsæP(EÄ툔[Å‘·zHþH… qÅÓD*¡JŠêb¨oÇ•µð{²ìIä³´†#ˆ¨#[Ä{z$÷Kϱâ]1M÷0ñ xGŒ”£§[<.’ÅcØ žsœx„¸CÕ7Äô0æ8¾r`\Ä£È&ŒŸ™Ž®sàüÅãˆüÏJGñMtÔMEO+ÍÄó6³ÍQñ-´â[Š^žâŸýB <%ÞˆQüÓ"E ŠTü3â91$U+”"ºzQµ=lTm0ª¶:ªgÅ‹^TíDßPTíÅ€˜¨šŠbp£R#šˆŽ¶ÝJtrF4‘ß#ØŒ]xv Õ¡Ë·ÉdS9ò…˜:„Þî¡:ty1ñ4“½=Cuèæ.ÌYsñ’­½6âeÛn!zÛ:l+^ñê°¥Äx5¦›Ëñ}BuØBŽ}-T‡°’×C›·ôõ¥úÇÍ7°q½éÔ!Ä4ЫÃh•æÀ(Ú‰·"ê0ZA90ÊöâíÈ:ŒÒÖPù†-Ão‚l~ËÑöÑø=ë!›ÎØÕJ³¡v¢mК¤ùr•7ÛSQ%BÆkn‡jF³£5È=Œ†µÎÔm`ˬ{¶e,Š+£Ò¹K>?óÜv†‰:‚…âaî;€¸¿Í¬‹Å2áÞ‚k‰øG¼/àÎ4L, !ÁMŠ3ˆô1"MË5;+Ä‹+\‰ß†•OÄ: Öö©X#Váê&ˆÕ!$X ­k3„}t>7:ünÂ6xO›…¹ªÌ.•ñoæv§úÈH>Ó±lÕëcî·Ï"Œl­Øï Ã8Ø3@KBÖ`€¬t¬j îúæbôë×N;<àÊ7Ž5¸uõú½ÒÚ;¬3|D¨»ýPÙwÔQâ1qM’ÙyŽ‹ÌIAf!– â„È’ä«ó¤¸6)Ø£N‰ë’ÒÊîi‘5©RT.gƒ8#®OjíØfÝ)¾Ù’R’â³ùHHšš¤î.ß õ·ÄY¬µD¼Õ¬çDã$£ý±ë`RK+ž‚" •("’%Èv%ˆd#A2¢€Š9EAQQ " YI’$#Ù€(rä,IQï$‰ ¯«{z¦{¦gvïðêûùîÛÛJ]U]©{æR¯CÊ8k†#½ðfÒÎ3D̯ªB,œäž+ƒZ"oW“X¿!vŠãë£îHú$ªUVò|ûKîü½êt¬ òÏ‘¿Ç i–ó­Þ%¥¯Ïp_×G4J˜UÍ.,)Ï ÊM%XVBLÈz/ž%,ÜûCØx?ê…ôÜ“3¯×q!ÞþŒE5Ñڞɓ†9çÀÎmŠ]€®C¥¸ýµ½—özžqp!*†z#^ÊùØßϽÍ‚r¢ ¨#úÙ2NNÝþžÙvlŠ]„Š£ÚèA4Ærööw~‹IèaÑoÈ–r6÷O^¦^ŒJ º¨ºËœ½ɜ͊¼œÍ†þ—rNع‘œðó ÈY*fþU±¼¹9 'KoŽ•9›a´égÈñ«>¿Ž]íæ,œ?Õ¼ ±q(v b¨!òNÔj~—9{(–Ÿï£ÊYXAI…œ=+©œ…³¥-Æ óÕ¾ d·>Ý*Ê"œò;#gá «OÔ*gÅ®E5¸ÿ¬œ•§`ÿDíåìÑØõè6t7:ý/ÍÙ’NΖÒr¶´–³eœ¨ÛË¢Û9[ÝáËÙÑZΖGw…ælî·×#r¶"º'$g+¡Fqsö&Ôsrµ²“»±Læ¬Ê&"<àå0už3“³YQŽí’³U¹äžü¼µ äñ-¨m9›UãÞ^Ÿ@ÎfEÕ9åÆ¿1gpnEíÑ€¸9[ u@ýþ9 ÕA¡SIÎÖsr¶¾–³ þ§rfâ&ÎŒÜen6V³pYÔܘ•Ë¢™žpß¶rsÖ?—E­3•³a³ñîíûÐ× ÌÆ@Ù}û7ÎÆçš³ÿ¼Ùø¯ÌY8½ãútFêi ÷F-3Uf€qöqÿÜÕù 1ø(’÷–À_‚óŒáKbù²$<îpeQ±O ë  áäþ¤ÉBÏù±§ èH¡ïÊØÓF„% VƞѼªnžÕ`*Rž³îÂ*ÎçµJÖMûÜÝ­i=ÜO=]ª[²\ˆºízÑÍv•å½\ˆº¥{)P#_Öêaïö ûjÛ'é«Ñ÷óÕÞ×|Ïý}ÏâÖâè‘ý¦ê¨ Ñ@—ÂË:8›Aßx3¢Î—DõÐ[qðo[ûÌ®ƒ"8¿ççÈwB9ßÃ9ØÊ ¹œŠâ‹Õqk%wÖ|/üC5¼WE€s˜% d½ÿ ×°ÞM ç¿x°õ}뺠ÑÈÐuïƒ@Æ{Ò¥U£ u¿<Ú€ª.1Æ ¨;JˆFˆ×ãLcÙPiÔMpRðßjÊ;Iuë¸QœûÁ—) Ђo`~gmð0L3âЩ[ƒ(¸}€H™èˆöÉUzq²Ö“lw­p“SÞ”8tp¿³ßTÎëfpß³àGÖºíY±áeXóqh¥÷wfð9ìÏ4k—µuVð*ìþtßtP1.ÍOåÅÉnil¦ÖAœý†Çf‰§ â8<ö 2¿uLãældþ" 7Š¡9Èü>2ªŒæ"ó·é|J'¤ƒÎ°‚Z¾}˜ïbÊ =»Šo&à;‰O‘ú¾Öôt‘ß{¤‰õ›¢.¬èi"©Ò…FMÐB”È6þÄlÿö4M¬Ò-q)ü¿sHÚ6AK‘wÒ5§fè3Ë´™Ú<vy(/ô©ÏBy»Ù¾¹…þµÒåÓ[˜UVè{«­<€YãNpÒW§¨nk] œ'Ô`ÖNŸÎ_ _¸¾Òº|FOø‰œ+¿OüN0±³Jâ7‰ß3&ú-‚ú­‘þë}BÊ/nhR]Zùk#ïWí)1MµB›]ZÿI渘©Z -š4ó÷5p ÷I[] ø%“]7µÞ6ŸnÞo.‚vlwiý7#pó 7[;\ ÿ/yN훣nPß·Êjà¯Þw¯ÇDj†vgù«(ó7³DÆlp'ÓÝÆin ôÓì|õƒZƉ¹ÿ0‹,·árºÝkpÀiY¿áòËß§Mös-tÊýq©T‡ü>aÊq)¡O4Nfò7`æ/P¼;;iÑ¡‡ßc0w¬ÔІøEdodÛí¸—ðx`´ðø`½5ûïÀ/iòÀ#j¿‚´wâ—5í`¿ÁSÊ6Èλpo-'AÐð[ânüŠXd|hÍë{ð«h«lt󺑛#Ùr¾âþ=7'¯Œ}yu‚Oíy¥š#ø;ˆªŸ:Š–h­M´†‚f]„d¨‹ ò°XuºÐ!£à|EÍhEýïTÈÄ:âùJšh%Mâ²³p/Â'°OrËù#‰¯ Ï*cƒøâYæv’ðÄËi&ITL;>%;‘5DóŒ¬7CEÆÊL•:wäp£@ÏWàÿ¨¸©Ž:ÊÝKoÿ¼õ”gÇh~Ó}™Ä÷j™¬i IŠ6óy3 ZöGŸ$¼é"‰ï-œyúŠ ¥K‚J’ ¾$&išµMz*¡’ÎÏÊ+/º$o²Iý&§S§uI`7ÍÆ—°Î~ê}p‘[‡âÅXéäÎB¾.qk³Y—Á?Ë–2?<ë“ñ ͇+5ÝWiª`°«5¸ª|à…5nÜÈî™"r~.^«Õa=Éxá—QøsÍ’rû _ä%‹Êðe`®ð"bvó«@EŠ®FP×¢«^°â«“—ªÇ£åItUòªOXåù³ñwHߤí]ªÏÏ€ßìÖ¡-Z¼nÕ¸€jÞæ‹ÙíZÝÚºß;qybÛ[°ïÂWhX¯ûîÆ¹H´g÷àÄ›}öZæ“}øÐe?þ·&‰ö¾ïñ¤ NSpAoN8ˆ³bÄ<…2âZ?ÆIšÝÁ.~§ã²$Ñ>ú¾„ôÖükN8?ââÄŸaÝó(ÎFjùvÅÖåâ:¾L2Ò1Æ—‘~Ä‹Þ_´èMÓâ0ݽ¿ºÑ{L‹Þãè=á‹Þ“Zôž ÞßðÑ{:$z½gp-zÏþ-Ñ{!)”©è½ˆd6zSñŤÜ_½YIéÿ“èMÅ—’—2½`Q¾fv÷i×õr"Ï&c¹æ9œÏpÒÊI¼Uñ¶]Aô³PqІ¯$ú NoÍm@v—‡ó$¯±kßä3 à ½Êˆ už¿Zóžê\×h0µ×ù­ûâ?‘ *o ºŸd<Ê .¬}.Büݵ.DMfE]Ÿ«ùñ:¢f®bÄ_®'^(ÀÞ aK°%R½ŠNýe|Ïe}ÏåHt Šê®ö‰j+¯‚\¬—a[x¥¬QÕÒp¥HìMÖš—Ž+Gpm±.É…­\©˜„À©/“Å%w'³l*®¢a½ªŽ«Zb\Ö³4|³†ó&Rå©["°›p5ëz©¸zèz›p@{r¥5 u¾¹Õ€ªz]ËŽ¨y'ÀÛâô³Í¼×N°ç…S¤òÎY×GãMËj^Áýp×K€n߃ú Αá»y 4 t-[ÇOÝ®õÛ,¿O"wÄ¡ÙΧ“;5¯ëìà³Ê]Öúj»IåšßZýr÷Ö=ÖÎgëz{ø~6"ÞÝdcísâÝT6Õ>ß«Í<Í´Ï͉š¼ûÆXKæÍI­HbS’y¹—Ï\mˆíæó8n¿Ï ߊۅÀïwûþÍÖ.Tÿn«½•¶ƒ•¶£o{Ð÷ü﹓ï¹s&&Ǩ›Yè3sˆí~ºÎ#•í–duMˆêÑÐÉð~,ñx$ö‰Pìü¤1ÙnmA³§ *ÛÝ0øâi-/ÍYÐâ™Pì)ül$çs‘8äøó‘'q·Pù;p÷HÞí¸‡Ñgôo{†b^=O¼˜À¼¾›÷Œ^œë9½füŒu¯|„Ÿ|^ÑèÌÛåCüLõªµN‡ÝzCè“¡óô”¾™8×¼Æÿúó×ñþºøÿy[@Šÿo’wÜ[ä]þIâYqƒù+Y`’Éñ>˜¼çP æ°¡‚?™ ¸áޤdŒC3?½O>teƒ”‘.ÖR> ㄤÁd” Wè1‚Œ •”âHO–Ë©âš@V𧬚Hœh'‘ÕdÉEo¢ÊšÉrˆœ&WrX-*%îÃÉò9L.¤ùh1Z™Öv%O%3È.åg’—§„Ö¥~›?âß’-är ÍOKÑ*ôêiÿ1™O6‘Í\Â/äZ–V¥wR›mÓȧ$•ì%GÉe´ ½‘V£w ­§;öÎ ‹5{g’e®½³È6ÇÞOÈ*¾’nïlÙA~³Ø;‡|Iv’ öŽ'sÉ×\ÊO¡öŽ'óÈ7d7ÙO.þËí•+M' ÜxH! µXHá¸ExÑ "j<Ç.åÂ)¹ÓÉrR˜VÐ,ŸA>ã4,Q¥ÖŸÀå¬r+¸ßçzÄÉÜšEÖðýùäæ~V°‰d-Ñ3Læñ$.ið[.zç¿ÊÌúÑœcùœË9@þà\%ÜS» ºÁcp?ù“è;µÛá‘ïUXw½X7 ½Š–N Jâç‹=~É)³BLå:l$»È’•^MËЛiC-¤þùï¦pë¿ãÖ&ÙhZŽbÚà/ÌÏÍN4n!iZ~n%Ç,ù9lç¹xnù ¹±‹ûî"š¹ü”´‡üH.¥™±wŸcï~’®Ùû=9i©¿)ä ¯µçV!ÿ·ð=N µ7ºþž›½r%ˆsõ"Ûã—qãÏ;*!35ê‘!j}ä¸Q€ç„Q>Foã'[TÙ=eúvázWB~©îèYÃз¦U•è­ì²GUv·z^ÊHT×pá)DëGzØîƒÌy5óÞ“9yf#weèhéH÷ú`ú‘?`UÓ€®ED/¼—Ž`rL3:&àè isú¡ÕXr²«Ù¤ºnK:ÎjiZ„ˬI[Ñ£n´¦ãç6t‚¯–´¥}ûè$kåhG'[÷þ~:ÅZ“ S­YÕž~d­BèÇVxG:-P‰¤Ó­´ÑÚNtf֙ΠÄ{úIh,>Lg‡Æó#tNddv¥s#ëá£t^$þ1:?ÿ8ýÔ’+OБ9ñ$]H½ÃSÔ›¦Ÿv«ÉD= zÕ3t 5Ï ÏÒ¥¾)ð9ºŒš'ÓçérßlØ~Fí'’îtµÏî=èJ·ºOâë­æ+îkB¥ïIW¹ØG?¹`_ «ÝJ<÷¾H׸ØàÚ‹®u³GŸe_Ò²JŸg_Öà:}o'ëüô¯8ð°IõUú•·Mº}èzƒÆ?Ñö¥_ÑïŸjûÑ ‘ø×è7‘øþôÛHüº1ÿ:ý.ÿÝäf^ð&` Mu±Á¹üMºÙÅï Þ¢[\lpr›n tÀÉk}²5†ÓýZ¡õð÷3ÜÃGïáç{øÿd_¤õðÅç{xœÞš®³öäÖôs+}ú…•¾ ýò|ÿÐÃÛÑíç{ø9öðïùßþ:(Þ‰ÿ‡éQ9"þÿ@vp?Ò_ø'‰ûÉŠKã¯tI§¿Š÷4zÌ¡Hã°ã‚?ž¸“ޤSôWðý&žçÇž¦jkH)¿Ó HJ£gçYC’É)å‚§èÌ.ɤÉ jt±BV®$V˜y«^ÌŠ°:¬¹Igé%ìZ†8ÔÓ(++ê@äŠÙØu—®ó¥¬˜ jÎ:3¿_.c׳ºFñHNò³³â s¼ß¢ËÙ Bb‹&+!0]˜œ¬¤Ë£¬ÏÅJiš)謴êyêJVFhÕB¬"w-7+Ç(«ÏÚ0qyØÒ€µb]]Xšˆ•34/«Àª°;9õLF&øã,ÍÇʳªì.Öš=Êô(»Š•eÕY£€MW³Š¬kÌ:²§­þ»†UbµXSv{J³$?»‰ÕdMXöœÕ¾¬2»ÝËbÝ\û º6 Xs>n27¦,#¬^ÂQ)QÑõߎY-cN ç`')fPQ‰°˜r«TMeìvÖŒ©jZ…cq%Ue l¸™ÝÍi;¹¶ÝÂî`íØãÆ:Õ8?‹ldú¬òì4#îVvkÏžµz-è1Ï7~¿Ôvô¬cè[×=ÌXÐãÀó‹é?¿GÌȰÕ[½ñ{ØîƒÌy5óÞéͯ™r3¶4¢JÆ ´Ìô¦”Ô–=fØcµ-lQ%×/ßïã{€=ÇO¶¨²{Êô ìƒìù„üÒÉѳ³¡¯WgZ²‡Ùe*å3ÝK‰*à:)<Õ–=éa»2çÕÌ{Oåh×= o¤g@Ù^°jI/Z±Ð ziªîñ’UkÕ;^6*@oãé_ExÕ÷ÜÇšû}­{×ÏZQ_³fDký`…¾¨oXéèÞ @Þ DçÛ¡q3(4òÞ‰Œ w#«ÖàHlr$vˆ%–ß‹ŒØ¡¾Éa˜ïy¸ïy„e¶xß:]Œ />0¼®fÑQVèh+tŒú¡:Ö 9å¤DÎ9ããN:âRL ™†&Ň&³)üo*}$Þ?ÿ§±Y2]üŸÁf;¸™lÿ$qŸXqsùkžÀÌcóÅû\ö©C1—Ãþyl¡À-r$-f+\iÀ·D<ÏtŽ]ÊVjkH)ËØj!i.[.8?3$™œR.豘­ ‘´†¿Ö Úµlx_Ã>wh×pØbµµìKûÊYm=ûΕ|_‹gµú¶I[MJù†m’Ö°oçFC’É)å‚ëYjˆ¤-üµUÐneÛÄû¶Ý¡ÝÂa;Äj[ÙNÛ嬶›påßñ¬VßËi«I)ûØa!iËØû@Yz¬ ¯­÷ÛÝw}ï{ï}û¾³Ï|ýfaßGÙa@¶A`VQDTQQÜ~ˆ Š‚0(?䯈€¢€:âOÙdqfy·ÿu’:ÉÉV•TWõí¾7·nW§““ää䜓““TêùÿÁrþ‚¥$¨ù¿=ÿ‹^%AÞ_tþ•*Â?õü¯²š~íùÖüëϯŸ?Z=¸’eýïç“Õñê¡ôÜoˆ~ûÍçóÕb…ôý­²„GVXÇo?_¬hþŸçG%ì}JÜ[ŸŸ¬(&ÿ·Ìsºzl¥÷ñÛžŸ®n­žZé}ô;ÏW7WϬ$x¹?V–õöçg«ë«'W¶~|Çó«{VÏUu¿SÐå] ]îÙüµçÏ˶=àEŸ¿ËêùçÓrð¯=Ÿ­ÎV:ÍT*ý}FC€:JøÇW\#Ô•pÊ26ŠÖQE¥´ª›Po.Z¶¨b ücÏ/W!\õÃÏŸ¬$wò–Ú¨wmõ¨Ò®_)ûLâÉãîZ=­`¿Áò¹èäO ùÝ«g=èr¯Àù>›ûWí¹êdõ°EÚ$]TúÕqäù)F™k«'­£ŠJi_™ô§Þ Dk^¨hˆ­pÎzñê Dý¿\râKV¯]}áêÏ‹8ƒ²/-ÓßÈÒ±þ_.¥¾ºwõ²ÕG¬þàê›HŠ­°^¾úÈÕ›Vq£î¿.µëo<ÿŠêhÀæùÕ_"²°Zý>Ò#·W#0‡Þƒ<¼_Y¶çûAû Uÿ½Šåàã9ă¶mñj/û4ÀkVŸ`ôá»­>q%ÇhÎ{0z 4¼ûê“V_²ú£Ÿ"ËÕ{¬>yõ•«¿)Rq¬AJ¾'£ôÿcôþ¯2j¾×êSV_µú¶ §ïg-¼ÞÂZÇùë½WŸº¢v ‡àch«÷Yýþ  ÀVýxü‚'Þ·¤Å—®þ²•×  Íû­>}õ†ÕŸ˜¢½ƒíÅ–!¿ÿê3Ê–ÿ}ƒ‡Ço„ÿ€Õg®þ£”9î"ç|àê³VbõO°”$®0n£l|Ðê³W_±úkFýHaÄåìƒKZÝê9=%ÕŒÑ pú£fÿ]«ÏYýáÕ_·Ê⯖cßruÿêCV`õ§WÿÐ*Z¶eøw¯>wõgVÿ¨ê¿rðaŠ,ø mSžß³úsµ²Œý†ø’Õï-ÓÿÂÆ²ü½%6?[ÊòG­Ðrl>zõŲ ˜ƒ,C.Ë[æâ­l¸¤ööêãV܇طT2~{õñ Ë.YUíSIç×­þ¨Ð™u² øA»¿¿ê_(é-BVo¯>ÈjÌ_^YF|±°~”å÷Z½~õÇWw‡eùó„T¼A±j>GÆå.ñ?Y}Q,£œpYæÉ1;‰ç‹óÅe¾/«ÆeÈù–Êrÿò*?´â¡ÁúúC,^•eÞ÷ª,ó~BYæ’²,åäcVdõ7¶.Ë8›øêÕßrÊ(Ø{_³úÛʸÌûŸË:ê#ЗLÐÃ.Ë/\}ØêkW§…l´ÛË2Êèà?¹ú-uI³,£Îýÿõ«ïÜ‚,ƒŠ?«Èò7îȸüÃe NVß\ccÛe0Yæy@–Ÿ/[ñWĸ y[@j¿dõ­Õ¸ ±¿PÉø—¬þêÈrw6¶*Ër\æýËmh*«_²úv™ßYµ BdeùgŸÿ®øå¾[X³ÿ˜Å~‹ý^ûæú-¿gõ}"ü]«"dè{WÿT„¿{õý†%ûæÕÿkÄýãÕ?3ÆÃïZ}ÏꟋXœ½~÷ê{WÿbE}¥÷ŠTÌ:yñ¯Þ¼ú—blÿ®Õ­ÐòÝ«ÿŸhÑ¿mø×ÕøÍç?¼ú%e<ÿ7«ÿµ¢ó‘Yýrõ›fÿvõ++ÝÎÿÇ«5(ðc+îS¸¬<+Pß[žÿñÕ¯;íâ·úßDwüx5‚¼…õÇ¿g5›zúä'–(ó’ï~rõ[V]ðS«ßVÆk:þ«ÿãËzõVÂï’·ÿãêw ûpþOÎTS¾?#ðUuÇϮޮÉxáe=œ7~nõŽZ åüòŸWïl—9Oþ—Õ»µçÓÿººcÕ7¯·¬Î­RÍñùo«u£.¹ùyÆ~:忯ÒÛ¾:‚ËÉÿ·Ên£¬|ÏêYùÞÕ/YùŸBV~±sYyóêW YùµdEÊè«Yý†UŽ@ÇýÛÕonQVT™àõÿ_C&8Îo«‘­(+º¬À¸óïVÉí~e%/¯¢ü Ø÷ÝG·g,fÌî“Ûó*mz{Q†xÚ5mY~YÊáí#ö½¼}\A,˸–ÿðö)K;«JºvûnQä»Î~Cžq™z×í{H¼”·ïc%-oßd9o)%©9y¹€ÇµÛ÷:JZÞ¾Ÿ¥<Àîò ÀþþÛU¹¸ý°Ò–o?"°¸ÿö£‚vÜ~¬Âêñêû QÚ“U O è%£ÇͲ´§+ª nÝ~¦‚<+ÃÏ’ðsU[¡´[·_ `ôBÒúi”ì_lÐZ÷B€z)ÉÉË…z_f¥Ðàå F¯u¾WžzÅíOöà©×‰žûÔ^ 培øFçB¸Dç°0î¨ç²:¾‘¾ñöÒ0ùƒ·¿B‹yÓí?ì¨í‹n¥ë/¾ýUÖ_rûÖàö¥·¿Z¡æ—)´þòÖx›Ôÿ#[jMšÄ+^ñŠW¼â¯xÅ+^ñŠW¼â¯xÅ+^ñŠW¼âµý+k¯mÎxÅ+^ñŠW¼â¯xÅ+^ñŠW¼â¯xÅ+^ñŠW¼â¯xÅ+^ñŠW¼â¯xÅ+^ñºø+s|ópfÔe–}T™%–ÿ6!mû·dn¸ç—®M¡-ŠW¼â¯xÅ+^ñŠW¼â¯xí×e›‘îïu9Z±½ërõ~¼âÕåÕ,Û–›ÝÃè2·cp¸øÖ÷K…«>uÙîÌ’á‚…FŽš³ÄµJЦž‘ZÖãÛjê\UþÙÇ«~­ÉoíªŒÂxïòó´°`!WÿeUzøú¨yå¢Nƒ]Á/¤&žúï6ÜcË£×W8sçžp»I×xµ¿¢öÝ׫^ Óޤз¼‹Â/ï>ù»í+Ów‡®Û¸l}67Ñãõ¹Šm?”~—y3K|ýeöFÖ¾9Å|Û„ÖÕÕЛ]]ØcºÏb@R›(š)%aœ9–÷Q¨‚䥼9Ü %%Õ§%:×µd@b%T¡ä•-ñkG½ÿ(ó„ˆ×e»€/w¡owxíÖµK|±K¸Äk»×.õý®à¯í_͇W•÷Ì9h®Øðv/¼ýY${ *dn];tõ¾^K“ŸÄÝʦ™®Ú&sÆ ÏkÚ¶)×f9m[tu¯\ûÕÖ‡aïqÛ¯zLLŸÎUÛÑàç-h_2½ä—|鏸xÙt˜¼¼¨OUïcL£Ò;Û°};öׇîö†ù?)ôU‘¬xÅ«þ “¡‹Z˽<¶ÑŽþ[ä‹Å®S3^ñÚ¿k÷×ÓwÃ}Æ{?°ì¶…úüîÝí»hžµQJ»}>­ìò i“&ñò½l¼ÙÅÕÆû†µ^fwÄË÷jöCo⫦¿Ô˯Kcü<»6—é·A´óU‡´Iß‘sY|Õ}ÎÓdoԭ茌òTغ½P›Ô\WoȬšFm¯xÅ+^ñŠWWW®|»ö©ã5¡:[±Þ« ñk }Z…>g:ò‡´iL›´©®Ef›vÇ– ëÿuBûÿÈšrý@›´©®E»Üÿ»yE­äjÅÕÐJõ—î±8p™>º2,‡wy/º¥–Ú&W‹BÛ40`³̾ôÿö®ÐµüvÜN-‘W劽ÔG ôöøêËíÔ/Û¥[Yúå²õ«Ér¨·³(&z¸ë6¹-ǰ65·ˆ¶cW÷;4õ¿k>kÒ£¾ÿëg:…úì÷|6¬MÍ-Ú‡þßÍ+j¥¶mºZ©íºÛ$ÄWЋ}òÄ+^ñŠW¼â/Ûå»J¡ûÆ›W)l¶ÆZ^Z:bâzæºÛ6阴mS¡Å©žw½M»e?Ùéåº|wwº¬Oè¥÷µú¶Y‹šÚT×¢ý]}Û…+j)W+®Ž–Òé¢RÀ½ÆÙ]Ÿ›ñÝPÈÞ&·Vê²Ïõø]ìó‹»âÊZ_­à-ÙÕZ®Æµ“ vã|„¶W—>ew»¶SK¼ô+®Ì´mÓåY™qÓKßmØD/7A|ónÃmð€¾Ûp“6ùì6ÜØí+j©¶mºI!¤MjM›¤ûi?ú)^ñºœW“=eê#3ŸÑÖÒp¯ n²þ±­µ“mZYõV¶ÛõÇÎMµú{ õ)>˜õMWwï]„õl³ ô´,ñ§^S-²[KÃ}À:ªxú•å¶ú¾ô™””?¶áš)ÎäâµéåÒq.5%wäpÇÙj,œ)ûÚ¦¢¦µÛ¼êüxy-nÀ}—.HÙÛ,Ô´(ë[¢×sñzÚuÕÙš¶_þ#™»>ÛXÖÇè|qmÚ­ÑÙ_+Ôk¸¦Ödé×s¸¼-›{Pmm5wéÒ:ÛÌÛž>j³×oûåƒ÷.]mÇ^û }qìõo¹¤X˜@OÏ«2RÚHÀúŒê²¤‘À‰—4"°u%í¢gfq²á¶ LÈuy®Ž6ºÍº™%Ôt¹w£šKj©¹ì»(›÷äéþÜîZµ›W;¨º¤Ývú¡H†;_—Wû5•ýkkSKܺ«¢>_Ø]ì%}Aí!v¹}Û¹v·­ÍœÝvdßµÙY¼|¯.l‚‹´+¶¹+Ü]îæuØW[6+Wâ$^a—å¤Õ ÏÐ| »ë›Ý•”ºùx×sõÖ…þv•j‡ oJ»ØËÞwíöBayꊣý,%ûª¥ZR‘¤%ä¾O8I¼šj«K—%Èp¡¤ú]ôŒc,ÉîÏîêRŸ6Ï,}TÝ×^BµO #â¢óAû»”Rz–d—ýŠ~—,1}0‹Áty"Ü©g5/a ÿ¥ö“Ž]ô¹ª’äÆ#3~¹¨`Bo¾vèc•˜gNtU{V»$IPõêé¾<ŽR{M½†Ì’ÔöŠÖ­O|SÚÅ^Û´né~Í,IYÒ¦ÖíEá$ñjª­.=j’Í®B w­Ilv0Mš¤¾<—ÔÒ¾2ÏN3KrK­Li–þÝÄIâÕT[]úeÑ$´¦hÝûaµKÖ}®fýt¦L9-g³éœÍªý×è¢$QJÐoß´¾ðhûÛUjø»ãr“´‡â]7þÑú¢ï:j’¦«Î‡Ót <ã6¿º– sOi»§ðBö—GN4i¶Éþ|:«ÓW¾Í¸®®î9QÒa.è¡ÿÖa]ñ<4Oàý ú;B}p˜“rôß!8ÌBqˆÒæ¢'ÿš§Ókh a>Ù.”ž"™ÖÄv…»-®½·‚_ÝIÏ\<_º’¦\HSQš$Õoß´xÕ_üi»æçy›m~ny6•äcóï"N¯¦ÚêÒe 2\(©~Wž¨6¿n5{M»¾ú;!a¿®‹¥C[-Lý”shkBx*J ¥ýöMkS‡ë÷¶Êð+Ù‘×þn*½«±b÷Fm_"WîX“Ÿ´P©³É/¥gSIÝÉgFði§)7É›uRнÄvW¿’Ùþb/:ƒæ—Ê{КIóåÌ«.w:…7çÜ®VÔveenS:´ýí*ÓçJk“'Òi÷èÔåe¶Emáæímî5Ý/åã§¢s!ß´Ðø>¯]\Å8í/N¯¦ÚêÒi öb~öF¦Ôe+É×n‘5Û¨ÚÎ7.KjçWqêÆ_/KÚ¦¿¾­Þ3óùÙfý´Ç&{®QÇ6ž–mìj;W룋­WU˜ÐóyÛ`j£Ñæ—­'ú«ÆÚí˜]º¢¥µmK«Mº'e»8Ññ^UìÞqßP¤‚Zúe[­VRŸ×6tVFZBÃ6ëY×Çé­ÐË6ëq±ýµ¾ž.&î…ðÍëÒ,içžU©ñ™—½%û¦‰J~Ü¢·ËÌMwƒÕÁ `/eW¯h%]„•dÓvô=‰úïÆßhMÜp`c{Ûç±_õküïf­ÅÏf ¶ð,—þ<×¥åUšÚªÃ "WÒ2>LlO‡Q‹Á½CÒ¦UM.Ñm6Óc”W¹†Õ¯¡ÀÕ|jM-ÓŽ[–Ôé¹–vCÔ¡Ó&´ï|eesIAÌí¸¸¸±m×U—Ö¯¤øË §­]V¦Ij••CaÊÊa’:yRÚì.YiÛ)ºΗúž0·ºÑeå©kYQkݽ—ÍšŽ~iN—yÆe†ÍYQž¯·Õìc…ߌ+¤íòœ5y¢ïùC&ÃE2"Ϙð’õY§{¦3e9,×áP>~r~±² R–NŸ›U}Pã˜=Á~IÊQjrŒ Ö‰AChƒ™"KÛò7 L{ÖѶmjÿõoÿªŸán>¿Ýö ·Ë™o?Wœáú•·‰ÝÞ8Ã5íÙŒÌpiJ¦ÍpÕ\r†kZ¬TcÖYíÛáª3o7n¶™7­Îp©åÞ¶ã ·¹¼Mf¸mdeZ}ÛdÅ&E™6ÃÕeg¸º¬¨3É:oÐvg¸úÜÍí òŸán*+j½»·ó*®)úâÔ÷ ·îlŸç;¶ÑÇ¥>‘Š_òY} :)K %-'=¡[›Ô%U9urµ)í®:/Ŧîù¤†7o;þ¦ïÔu9ÆØOˆF)q·=Oä×*nDJð黌ѱ‘lPµ‹cxÜ3 eú؈Á6ÔÑYC¨¤@¦|g 6pÍ’L\s‘kHJ°ûdU½E©5Tj@ mYû˦å̾n+5z/ ¬±Ý×lÖÐTsÛ«{}²OÏõù¶EýÎtµÕ<Ì%¡ne/77JÍ•Øæ“b2£;ué\?g^°íéêw…tµvÏ®@tsùøñ¶Ñ|]ßÉÔVaÊö…$Ó»n;ÒÙR[Ü}(ǵЦ벲¨s‹Í"[\´¨³ŽÖôÂrùJŒIk½^× ýœŠ©S$ß°&Ê?ƒª$ÚЮYËRÍ‘±þr÷¨ì³>¨ê3ïÚœÃUʸkºŠ3Ô«Üö®®‹oÛÌps£$9[Íi-súåšÀí+P}™èE®Ïl-²ŸÂ¸HTï¼^X^MT‚ÑKÁàLÇyåMÈö c±þB™Sÿ·ä¯LñG¨'åaDê¦4$·’{±¿¨þXWÿŽ=ô¶Ùål{ýË}$sÒ¿cO}6Eõnlj_øöošÈ>–4€zî){8´Íy§úL“N¿ŒÀÚ4l1ú¤h_ævhÄŒD¾)/#£{¬RA1Š!x­f„–¨ÏoÕº:/ö°+OU^Õ™%©°šøûïpÏ´f(òÊÐf¦=LëTp¦ïT,“6P]ÿª}iëséa0û’öù@§#¦Œ™ˆ²ôþ•:ðâú÷­ÚKYä}ƒ¼œ³R°¼5…ÈÖ¿¶[+×h°$µõyÕÛ 4u`@ï)i%Æ`¬,_¦´¹laÕÉêEé%y~"ÂÓÞEi4”„ùõ]×>XøÒDR%œ&¹ã7§ §JšøcA颶ÌçÚ×9ÞÀæ¿uZ ,šß¤œüí.}PY8ኆ°œóŒ´s®?1Z'a|rÕ¯aË‹®šËuÁ‘u\*„ÞÇ¥Þ*}ÇŸDTwÐK8øÐ¸aY|T M«O}^[¶¼jhÓÏD;T:ž$gìcRxTR>3¥¾Â]2Ñ«B›ûImv{;Ì÷Å­ß´Ú?Mge™Q¢ !cÕÜên({êè!mKÙ«j»UmLkR}’*-ûñ¬Ð±šîUÀVéÐ*ÄÈš;W>f©n*Ö·QZç:ÅÐŽvc«ÓZµàu§/væo 뢔íW4ü¢çºê0ƒÄ¤»‰­î+쇗CÚܶ<{¹#g}®Ý(Û¼üp§}Ê%ì"qïŸCvÙ@?Œü­rœzÉ8™†~ U¬ùm˜©XJëzj©3ư|}÷’´8dm¹ö1)¡cµ™…ª÷Lwö®ÄÓõÞ«¬ƒõ@é?Ì„Ïr J±,‰Zu%É^lz—‡q¿Ý K*’ÔQR&Jâö^SInœdIãÞùÔŒ“l_w—dRQ§¬[òèʇšUV‚ôº¨ÖÆÊœ®™¿Ú*Z’¤@Jêò¿\9†b4äøáêZQõÿeÎ@é³’G‡„èõ ^Ê zNa …vú[Ò¸u¦×¯[Ç’TlfNr †Úé¹.éJoz&ÿ)¯¤‰=7JH½Ž0W¡äïY2°ö®t†R+j_·öÝDÓ©Ú·¹$_í»Éˆ [×4"¸µ¯]ëº8¯Iû6y¢ÜVMûÖ_õÙ–š³V£Ï&×<,êW‡ MTýfÃ]׬reYêQ]C#v¨¡Õ~Ñõ&¥£©›Õ™3ͧâÞÞÑVƒnª¹õöé¹}´¯ºŸii3Aωå¹Úø€7×¾r¬œhøS)Â'®UM‘•^Æ ‘þ*È1ªÚªC6·Ë«I ¬@ZæÞXedSæx¶ÉÄ[ÿ¥k$üÍi„ý/ë(,qªN×ct,¤Lò} «‡¯8B¹rÍ‘òbS˜¯àð=v’/Ђ@êçJ¡Ú@ï#¾+#k€Ò{2­öë ´ñF‡ª¿ÿyU?|îôå;tP«Úí}£ëÎ&Tû«°¦Ñ1Ùž7«ÍoËk»Ü:Oö…Þ:W›ÎÓÇÇÜ­æÌ´o:Qÿ^Vƒn,êza¢ôñ\<7gÚ‚æúˆ}…ÄE]·‘y¼KÀê>LÚNXc´§Ógó¤,È|²JÒ¸ÔŒˆ÷47Nð)Ÿ§.ÝtÕ%HR-…Ì#IcéÑ“”~À£îfÎÁ6Vª¸-çPÊuÇ9>OÍê«ùȪ< Dÿ#géé:8ç@ì5B䜑Rcל3.ï uûä5µùt+x¨»Òä M7íëz¶67ó’ÚN•ËÂÞWÈ¿s¥l• a‰É©’;gç~ÙF€1ûØ8d\þ ž:ÅËW­*}¯_=?ØôŒÎ- ãæû,¹¯¼Lšº¸)üÚÜ*7í>sÄÏ›¿UšÜP‡‰´ÃÍÕ2¤zÈjY3†º}^‡!è¦e†Yë6£Ùû.Ý'íx³nj£ƒUÎ=*Üàû‰¥ÕžV½‡vÝ«œV%`Û—Š² wÆQrûr»ÖvéÔ“»É0=³¦Û~é%ÏÜÙIÏÒò³Ìsq 0Ë¢ë¹c®{âÈ¢ûW¤{…§Ò=7r/Y.r® mãzºî„ º9ŒšæWBá ål¿œô”QjÙJUi¢R¥GÂ"MG °!%¸ZKw„K¯ §*$†Ï®¹„«kP#ƒÂò7pϘü±‡nx½<^/OŽù*î ;w•÷k‰¹ƒMî­·SyÉ.3-ôÚ|¤õ¹vcõÁ¿^ò­ÄÔ*ÿL-2.ÓÌ›F@ ñ®Óëi6%­Êœœ‡9Uk¦VzbKUªÌ+ʸ°ÇºU‹µOê…q•‹wl\åÆUrÏ1­¡ÓEÑE¥OÎNÓ Ï+ùé· WÑÅ.ƒvì·#“ºµÖ 4ÕÈY-$m ¥T®Ä»­@´óä:—´Þ¦U |ʘÚ ÛŽvm>óa·Ùx ¶R°Ýv·Ž%z)©ÇrVù)´ùtN= ðéRþ §ñŒ=—B¡nxîëâvå½e®{kKWWêÚ(g©tÆ:ÓümÚÈÛ$­*7ž±rð©ÓÁ|ÈZé.Ý\ó–sUh™Ç5wÐg&>­®ÃÁÝ ]¤<¨Ø˜ÒÍãÇ„"8ÿšYh20Ê0cT,ò„k©sâ¹gÖ\æe»Æµ¼bk£ ió6J¿ƒ½zõ§¡áÊà¢zŠTÝQVׯ9£ü°ö9]—<ØmÃ:y¸áÈÕ^ÂìÓ¾gCÒo€=»LÔ¹_HIª,¨þ¿$úº«­½MV«„ǧAçÌßL-£¡±Û€¯kÓu =©J y'F]KÔùÏ^°EÜF¶Ÿ¡¡ÒŠãn³¬‡â9QjY›+-Ûï3ØKµ3WK(Æ6Ùl_—}æ?7ÀAÕó‹;ëøÐ¤@} R¶óêƒ;Ëxü°ÚS‚ZaXÃeè'G¯ë<1e_}šVÝSVß|DXV¿‹$'¿m5ÃEÏÇ—ã<ÖÜ\«IôÆrz,ªö ½ËÃNŸ¹X³j¢O»…äE{þ¼65äÊoàŽÕæ¿SPÚ#²$:òÔ•$½âûôìÄEàT÷–Š‘y™ÏNLªçémÏNеh»e²­g'l5åŽg'¤náRiZ¯uÏNðSð-]rEGî2“0ƒjå@>_Ÿ¤ôºg'tp=;¡÷„½ŸK®P¹Ò»Ý½kò ÛÕզ«P6HÞ+´ŸªÍ³›j_uM=5Z§ú0Ôü>Vö¸Ü7Éï¸{WBúµÊ+uw€Vr÷®Võ’aÇ[ý…´PÇZäV=Nå3F•4ׄíÞ¥ºG}¾ÀŒWwïBIúî]éý’3z¹{ãè^]ˆ'¨ýûÒƯoq÷.ä¼W¤È=A¸s¤>åHsçv“™òNÛÝ»áyÃt¦gF õZRBN*O¤¾‚lƒVsfÚ7…ïn÷nªè‚yòéɈ:t;Ƥ“ºöîªeâX¡Î-””ûãì4Ö[K÷ìæL㎈T,ÊÙˡ㠑ÇQ)ÉCRkû7˜š:UÒÑ>P:ã¨ïÇ\Š™ö†î'нö®«™—ºÙÏKy ¨ùe+%ö¶¾·×´M^Òw{Ë•ˆŒõòÒ$°f°$ô“ºò ŘÒ-/Q:ÚxI¥sÿ¼D5¾¬SzMòª xâ)ݯ?;ç¦ÃÍNù¬æÁäÓ’×Yz0«ÆRõ™:ö×Íc蘦~ëí”%Ûy Z:&­¥¿ùÙÝü)F|ßݰòG ¡•é`¡œ&iR·OÊÆ_z§`ž9èÈÓáÝÃÇN:ãɬÔöR¹ÄÆm7‚|îM¼$Ïü*'ì´ç¥×•­4uÁîñÒ¡ö[Žõ|4`s*LC{ˆóÒiÉMÍ;îÚñ’¤£—T:oƒ—l­“m¨K¿,:»mk¯ƒ¯‚ÔϹ± mv¸É6iÍÎ-µ…(: ç ](õø]~tQñ‚õ“Áç‹sœÛïp«§¨¤ ¥IUU³=êáÛ^ÛP/%ô³ó˜/õ¨Miç57õ¶Ë{a2iç);·©4¹íTuqY÷\¥ãm†Ã(ŒÞYÛoêvÕêtá9~ë8ØZ¹ }Œvm°QyÿE¡ùêÖYìÒ]W:¬NûK–PË´‰Š¶µžCÎÑ¢Äçd-¸ŠJqÍ’Ãú¤3y³EhGdml˜š˜g‰Z¾ÿµï«ªçÙæÉ³­^ åB©.dUz'u¾¾!ð2Ûg®ŒòoÉCè?ËIŒêņ¸#Á±K¥nó©bþ›>?êO'WoX[c¶BG‰/=<ÐâoUÖ‚‰çÀ!ÊÞP£‡}G&-Çäß#’¦Ëkó,HŸÝ»ÃTBÑcˆ>ÚW>kHºoÇ„0m=ùŒ‚kŸÕ€|»ú§©¯ –Ì‹Ã}1r·ÀÈð°›}£b3 Z–[*4MÝùÒî:ýxJüõŒZ²ÊEýTÕôº?7`lís[_zíöòë-¸»Kç>>¹¾«Ï´TÏm<ô¹dž~ö=Sœð)­‰òaüždUu…´LènÎöØÚjÃQa÷Ÿ^Ý5¼¥]¹K;ôšp¢>Žý=qYžÌ Îh)ì.ž¸<`ö qé‰ËrF=Og™F ÙõÁBƒä¥å¥ŽÂ…(O_W¶»êš¿© ‡p »P›Ž,ô‘if õ »Î‰ Ò ß‘#å™®Úr«€J½);Û¼xÛG„B™Òºæ³Aäˆ%Ÿ-®£0ÿ6Ge“Vê¾ ûÕ-õì=-°ñŽ«èC•«‹¨GÕÝþz:ÕSªºÔ]*qŠP®j>½¹*·r•Iá&¬“@óê’zq¶Úöºš³ÕMüó:rf³H99IEÏŽ:ºëÒVË“˜õ~ÂÏ€íïÈ«ÙîÈa·C˜ûŸ fÏ ~6κ¥V$ôMwE…ß0pöi÷.Ù,˜Ñ——ôñÙ§|Xž±Ù7̾úã#î7BÜ\|©sáùè’š®Üù1™|æ ˘6kÁ²/ùS¦C-®ÝÛw ~k-|V›+|Ž¥R+*lMußWiª¹G×µÆ9q%°¹ › Ëô¿Ú®ºÊÀ•½Xi3Ÿ°ž&\®äžÝ¦•@¤‹{%yl¨ÑO_l¿hŽOúÌÀ\ë›E_ÃÓíZH‰N߸¸ÿ{5Õœ¶]âíªÍWClºW3¥P¼ôuÃÜòKžNŸY=Êö½4¯\ä¸Ú¼Ý²wmÏÂgk4üí@Í;¥m^ïÍ.ÔuH3îÓÖí§Q¥«ä<=Oð´Dîw›1 5S(Ã÷^-*xo2ÐÖø¾«yÕ—2} (#mõ:¿;¥œ¿m`ÎG å;«ð:zñWŸßåÐ¥öÐùPâÉëE¾¤«*‡Q®³“;äùÎ<¯2÷»…ÑÖuùÉòH„Ô_ø8Å{Yæ'ºßpÈ2â¸}Y¦ðs-Mÿ-ãçÌ2˜(4Cº¡Ô¢ŒpZ¢ŒK.Ây9—2›,ÔB`bÊr!úF•u›,sOòhk²¬öèÐ Oe™úІVª·½LYÆzOÉ—û-˺wk?Çeù„Ófã²ÿ©kúní#0¯Ç ¾9åŒë¾Ÿ9ewØ‘a>mP'Ëõãò€ôŽËˆIØs~ªG%Kìý«Êö÷K½_j…o»¸ÚÙ¾ò©îv¶ëäP|Ê®}[ÚȲ:.g•ן,»ÆeœÅîº,ãÈ'eÖ5Z‡È²kÜm²Ám²Œ+¼Q–›ìä=´ ²\×J3®Ë½:Ô–×÷âÉœª‡ÅÝV}GA{uBK0wUÈ};a{uì»*L søìÕ‘§ô¸[ÕÿN§.÷ê˜ù‘×äÞ_:ÕSjv€™|%qõÝ«cßfÛ«S/ƒuh^q¯¥D[²C'Êo}ܘ&z¿Ñ“ƒ+zê>äÀSšuÈ®°Òߥ惕<[Ú«LY#iêÚ õ=fËÔ¶Q»‘S²)wjÍÝüîõt úp–Ðw? _àhŒÔÏ•8zjVš §#SâlýÖÔ“©°^Õ}:Týøã»àƒï~PûBÆdì©|+=Mí‰<“Wºåø”=/Ò§¶Ñ|ݶÊçÕÛÈáÈ#wjͽ-9ÌÄ·”ÃLä•2ÇãºCùNÚÍäp.0ò•ñÐ/›È¡º×£í tYm~[^Û垛ȾÐ[çÊaÛÝ¢?-’; ëh€;IЗ࿻EÇ(Òˆ%ùî$1K¢8…ìn1[GqºˆÝ-ºŽuñ¯*²)©ê³Ý7¨¼[è3¤í›©UO­Àý%ú³Fr‡Hýsîy¢ó^á7$1ê³^¼˜Õʹ½î7‘ø˜˜Mù”ºÎ/p—š»iwKžàisº¼áž–v¾!ó4êy>Íï7R5wý ‹­wå»ähûVZÈ䉧nj†¼¥æ@P™Òùi‚¿Jþû”0bŸhõ ª¹H.èÊŸî<¥ME©¸2ézûy…aeb¤”$i=óY´FÕŠ¤™O‡fö£ |>£Ów^Ý]œÇsÞåæÿÀ˜ú€€ççEÑÞ”(-¢öñ˜ù¢Gä8}Cy˹jyeä¢+³®‘ùoT=M©i-zi`Újk–Ùú÷Hm&³ÔËwñ2;crK!tüÝï–âyT™UŸŽ3e–?Ý}M”¦Ê,¤^3p¨¿oÇUm:­3rÌ$–Ö)!õ1À%³ö'/ZfA - ‹Z†8ßÝP°‘¡ý—Ù¾ÇYÙ+v™µ¯ÔÔÜV‹­Ýme–Ž«:Eêe–{”G„ßuzr¹¥ãl—2+WùÒ%³º6Eì»–ÙLÐDžHŸU¸ê:KÉ¥^tÚö‹“Ù´¢J.åElÑæk¥»0Î6ÙÆÛ“YÛXÕYê¸[oÛdV_Ñ¡2 ñ]ÚÆü]ä>¶ñ@”Øwm÷'³c§‚ýÊlJäLý¥Ò%%PG˜Æèós'÷¯4Çš\㎕{Vš0¨‹3SU(É­jXê/U“ñrè^H˜¨çf‚»têÛú±9Uõø˜1*W˜ºWõ¶ë\Rg?Õ͈ -¯úåéY#-7OãóªÉ¢-(cêþ2ÉŸEÕbu/¬m ÁU2¥AsNZ'¥–ôrßeá™eÈÕø¡’ŽÏ½¹pr—lʦm]E>®ûì(Ú€#M^U[Wí'D†¥U¨Û#F– iŽâã„jKŸÝ¸’*ÙTûQ­‰÷¹[úP³¥Û¨mÅ]û°ççÞDµtÕ V÷g¥EÊŸM1mbÚ{¦Ã'Ê[ÕôtÝ‚Ÿ)–@^µ~ñþ4õ¿¼Ìù±L‘v7×' Áõº ~«”Ñ[•–Ps.˜\@Þ¹GNÞÂIEÓ#béê–­ÞAžSÏÃi0 Êó|y™ô÷‡x£lvø„]3vÙlò/-/ÕÖjw-ªKò qyÑ¥F†î«.{nzùøÑº¿dMWaÇy݉‰M~Gž‡ûlíÏúÉ~ã?…ä)# –\$ès×sÉzóDÎ|MNʵK¥òTÀP/™NŸôTÁƒ_…¿æ6vÉI¹Xîy›Vs?èë» ‡ žW!߇z’è»?1FÅJ÷CÊ8ÃÓ½d¨k!n,âhËÕRh«ä÷Ávð§Á_¬õ#ÚNYe; ´ôEeS ¨í—U‘ÉP-ĬMÍ3˜¤þRãõ½ÆjÏékê¥[6z:öÍØÒGßa…o[¯Ò¹Kõ{ó6ê¾]^M_§I)­tU$3új’¤–õŽãDû¶­Ì¨\A¹]}\°Mc¤•ÝßòDpû ¨0OT¨¶•j¹Bƒä£³M3ó’Þ®qç$ç.j\z6>§x»)k׸zÛäÖl9ÌçT]+cPïd¢uR‡ŽIœ‰“ÚûyåïáxÊÙv^éOþëPÔ¦Ëp&0²kTþìC_•¾yžÆSßé®hÔ¼¢–KC¢©ü¡Ê—®!ÍvR­s¤ôúöTí;8!¬©IçJ-»¦I)Míšt=ªû?li؆‹zbi§sª[?™k´ñ‰¿ÖíÊ#6y±Ã©0ñ‰^ç><12Pjv…ÍÝ(Tï,¹¨†uõ÷]¢F©‘å.¹-ë2gÚ:eÑ¿ róÄà^¸î6Æ}O’jÀÞ|5¬ÊœTß‹äTƒÂ7ëæâ{@(„PSñF ñTç5#%Mõvšž*ºZ¤[ñªÅ‰+yu—˜¥ ¾ó%3$w^í$¡¾ßBYÓ$וÝú¨¸¬æX}wÍLÉ©î…Ï•Y†Ü &!&J‹s ˜Ç]'嫺½8Rƒèûr—ν s'/ÚŸ»rÏ6Uœø¸Bu¬[LMo³ÿéÌU®Ý,/œŸÜ[Í¡²äeÉÏŠ ¿†FͼôçUÿòœì)SwŠß"kè´§è.+5‡Ý›%cç˜Òö’õlk‡Š:Ÿ6÷«Ô_]¿cÇuÊXÎ0žÈE 5ÛÈßp€Üƒg#r?áƒåG]»äu<éuZZ+ Ì9Wû«®½£½%¶¹½üI̺öⳚàë¾½açǹèPO1yΣ¼ðìÆ°º¹fÏ+?6?-®¨N|³AÚã@ïá)q³õ‡ä¼FÙ*´ŽÄx#Óä˜r”ä–t~©½Ý”æºð,FèÛ‡Ê_•œ‚4ã#WÁ¨ð@ùQuîC½»b£÷J£ø´*e\v°£R÷²BMKZ–ç„ÑóÛ|ØFûîÛ‘O)¡íå3¯¬©yKùTýUý·wªµ7Tÿæ žßNÿnÚÞmé#}Î0Õ,_}”Wáúˆk¤6úHê¤}ÐGÐn®Qt}4àz¤o}´,ïw³{º>ê^>í5§‰ì£‘…Ê2MOTsº3þ+lýœñæ1i¦KÝÅ颟Å.)zÆ¿R*…9 ú;ãê¹)ÄùÀž¦§H pqU^í_´¯|uÆ¿ë-}]H³.ÎøŸ’§@ÝîóŒ?êñdh„yÜ+uC`"c¿ ´’VüYس„h|Þ,Á÷©¤Ì· z‘1½=ê„ð’OŠÛ)h³5åÛÍå÷$ÑwÓ ÉØ-[ž±'´§Eø5#ãú~a_é”PpPÝÇlä2ŸŸ8¬ W¼í‰ùXÇ{lÄÖÚÇ_Ú‹#ö$×ÈHãùÆâÉa[O¦ ÷ºÒg-6MW¯:’Ú¼¶+#—ìe˜±/Ù|è¥ ž"°¨ž‚U‚OÚ#¿>ŸèÖù# òÉ„½7r^jà%ÓÂ÷‹Ýv7‚oÊÎHµÖãÚGÁöÏâ9´¦¶~®ò‹?ß?/{{ÎzüM‰Ôw±—„I"yý˜}8Ç/ðÇø'*9³ê¸ýwCI‡ŽËÏAy—Rö" †_cÖã*]íÓ¢ºÛ¤xú¨ºÛÒA7Ww[zSùMùíõs‰ƒS>§Œóï+Óïcüò&‘ =Æ,ùû™Lß§¤ò§ F™û*¹ý*‘Ê¥iÊö» 6ø*7Î?6.’Ú’[¸ÜNÓ5§:>œ1ß6àûrÆw/|Báð©Ê ã ÔFOˆtü¾‹ÍYïbæ;CUÍ1!W“–™’Ë®qìó†ßl„ =óy ¿QýÆ1ü†€mÃÏŸ©cø‘–gÓ1Üe[¹Æpõ,Ô‰ò;t W)Ò<†ßPâw ¿Aâô1\OÛý1ÜoW/];ÙÆpé|DP3cý]TÏ“ã9?0ª¿J” Ò#ÿKE9ºWñÝH ¬UÇî÷+8¶ÃùÍû…Òoª¥ÀçŒèØ»$ñt¬ž8àŸtÀWñ®ñ÷EZ:ŒÞGl$?Rf¨v€íDÚ}Ãa”½Æ8eö«HjÁÉ-s¾ú˜)Û'1%¶Ì Éè/ÇvÕvÒûn’Lz›©îq4,•ãf9èfNùŒ|ɽÆ\{fðâÄO*¤Ü×±uþtdóÍ“¥ßì±ö>^–ýc‡=Ñè§Êä8mS?÷Іê{é´¼l=U°'KCí<Ûuµæ¤¡Ž»´|ÉçöÏÝ%©O(¨Ôݼ'ûÆÛ†iHIuu¨ÖŽŽ¦VMƒifŠ}.˜‹´©àL•V(uzË©¯œöd—=hÒ§Ù¢vÓlJZ•9%s ªÖL­ôÄ–ªT™W”qau»¬Íî©ÆU.Þ±q•WÉU<Ç´†NE•>͵›fSÞŒ«èóv´cßLÒ“ÖrS77ÇgsÁãfzÆ&ÉÃ̺£é+ž³ÐRš¯ºg ã—ßóCš?uiæ²6M5èºÕJJ‰4TÖü@XÿªõfJ94u¨Pò†¨ƒ¦§‚hê¸5ÙþM³5îëÒi¤ò}׉î-Å|øtëаþmÞU ?atœT”0û»þRŸLG¹€™®•ȾÕú‡JOœUÏÚií’xÒÞwîµùÕ^–ARï;,d¿!Ò÷ÓIJòž•ä0Yö—d~ Ù¬é¥é%mW–S1 Î…§^æE:ó5 óM€ˆ›ÉK* Ê*kÜ´SeþòÊ2â;ThÍeyžà›U:î»,ïÖ¸—]–çÕè³íẤY–þû Ë…Åò»¨qyªü ¥m\æ2¾É¸ì/ËTºµ±í²¬Â ¬NkGe½û!Ëu¶Ê§Šµ¿ìïž,‡_>3ñÍ|u{>êóµ_ópAÉ3iƉêmlú½ðª×2ÐòÊ“Öè>[šzRV*jÆ4𠱄 σCæ$žRsFpÐñKÒÜåQßoÛB‰Ïª¼*¾´úf{uå“Öf…R)†oT×2å“%©’ß­u ÖíÀ‘Ì­‘ðé-}½Zâ¬~TÚØóJó]ØfÊ%u<¢rØi *Ú¸ÌoÿAN¾uï½.Q|7šÞgp‹åšV¢,³gcýcñ[òÕý¦žj1Òr2gRvÚÉ>P­‰ö»hŠê™ïErT–~=¹™Üܛܟ<˜<’<–<‘<•<“¼ yqÂÿ^–<Ÿ¼2yuònÉ{&òAɇ$š|xòÚä#’N>&ù¸ä’OJ^—üþ$þÅ¿ýùûÌäõÉç&ŸŸ|aòEÉ—%_‘|eò5É×&_—|}òç’¿üÅä/'=ù[Éw$ßUÁ_òýÉ?O~0ù¡ä‡“Mþ]ò“ÉL~&ù¹ä-É/$¿˜ü¯ä×’ßJÞ–ÜIò”ÃOÒƒt‘¥§é]éÝé}éƒé£éãé“é³éKÒ—¥¯H_™¾{ú>é¥VÁdúûÒM?!ýäôÓÒÏL_Ÿ~núéÓ7¥_šþ‘ô«Ò¯Nÿxúõé7¦ßœþÕôBÈÕð÷méßI¿3ýžôŸ¤ÿ,ý¡ôGÒOÿCúséϧ¿˜þZúÛéÛÓušg£l–-³³ìVv_öPöDö\öÒìvöšì=³÷Ï>${möû²OÌ.ºñ/þÅ¿ýùû´ì3²ÏÎÞ½1ûâì+²¯ÎþDö Ù7f>û¦ì›³¿šýÍìÛ³¿—}gö=Ù÷gÿ"û¡ì‡³Í~2û™ì-•žù…ì—²_É~3{kööl òY~”ŸägùõüF~_þPþXþTþ\þÒüvþšü=ó÷Í?0ÿÐü#òͱöOÎ?5ÿôüsò7äoÌ¿4ÿ#ùËÿTþ ùŸÏ¿%ÿëù·ç?ÿîüÍù÷ç?˜ÿpþãùÈ]mؽ¿ŸËÿkþóùÿÈ1ÿµü·óßÉïäi1(fÅQqVÜ(î)*ž(ž)^\<_¼¦xïâ‹->¢øØâ“‹O+>³øœâ Å›Š//þHñÕÅŸ(¾¡ø¦â¯½ø¶âïÿ¨xsñÏŠ‹n[ü‹ñïrýýPñ¯ŠSüxñÅO?Wü·âŠ_.~µøõâ7‹ÿ[¼£8/òÁx0,'ƒ»÷ <6àùž<;xáàeƒç¯¼Çà}4øÐÁ‡^;øÈÁÇ>qðºÁg >gðyƒ/|ÑàË_9øcƒ?Yåû†Á7þÂà[ß:øƒo|Çà ¾wð}ƒ:øgƒ9ø×ƒ;ø÷ƒŸüÌà¿ ~~ð?¿2øÁ[«|ï¼k°ÃÑp6<ž oï>0|høèð©ásÃ_1|Õð݆ï5|¿á?løÃ^ =ãßîÿ}â𓇟:üÌá뇟7|ãðK†_1ü£Ã?6üºá׿qø‡ß2üÖáß~ûð;ý£áw¿wøýÃ>ü—ÃþØð'‡ÿiøsÃÿ:üïÃ_þêðkø‡ï&£‹lSü‹ñ/þÅ¿øÿâßåøŒF£éh9:]ÝÝ?zdôäèéѳ£ŽV£WÞcô¾£ß5ú=£}ÌèSFŸ5ú‚Ѿbô5£?=ú‹£¿^Ycwô£ïýãÑ›Gß?úÑ¿ýÛÑ¿ýäè?ŒþÓèçG¿0ú_£_½uôÎÑz”gã“ñÝãÆŸ¿büîãó>|üÚñGŽ?vü ãOúøõã7Œÿàø‹Æ_2þòñ׌¿nüõãoÿ¥ñ_ÿ?ã¿=þ‡ãïÿàø_|üÓã·Œiü›U ï¿k¼“Ñd69œœMnNî›<0yhòèä¹É‹'/Ÿ¼ròž“÷Ÿ|ðäC'5ùÄÉgL>gò…“/üÑÉŸšü…I…þêäoL¾mòí“¿3ùŽÉwM¾oòý“˜üÐäßL~tò“ÿ8ùÙÉ›üÉ/M~mò[“wL²éhº˜žLoNï›><}búìô¥ÓWNßsúAÓ×N?núºéë§oœ~Éô+§búg§ß4ýkÓ¿3ý®é›§?0ý‘éOMÿËôNÿ÷ôw¦él0›ÌfËÙÙìÖìÙc³§g/™Ýž½Çìg¿gö±³O½~ö…³/›ýÑÙŸ˜ýÙÙ7ÏþÚìoÏþáì{fÿtöÏf?0û7³Ÿ˜ýìì¿Ï~yö[³w̲ƒÙÁéÁ=þ>þÆù›æ_6ÿŠùWÍ¿vþ§ævþMóo™ÿµùß™×üûæ?8ÿWó;ÿÉùžÿó_¿Uôíù<]ä‹ñb¶X.N7÷.Z<¶xzñÒÅ«ïµøàŇ.~ïâcŸºøìÅ.¾|Ñ„Ã×,¾vñu‹?µø3‹o\|óâ//þÆâÛwñ‹ïZ¼yñÿ.þÅâ_-~dñ㋟ZüÌâçÿkñë‹·.Þ±H—Ãåly¸<[Þ½|hùäòÅËW.ß{ùAË×.?nùÉËÏ\~þò‹—hùÇ–fùÍËo]~ûò.ÿÉò_.tùÓË·,iù+Ë__þÖòÿ.ß¾|×2=.¯Þøøá _qøn‡ï}øÁ‡vøÑ‡ø)‡Ÿvø‡o8ü’ï:ü“‡þð/~Ûá?8üžÃ~øÃ‡?qø3‡ÿýðWÿÏá;‹£ÉÑâèÚÑ}G½ðhuôžGtôÚ£;ê·ïâ_WŸvôGàè Go:úÃGüèÏ}ÓÑ_>ú¶£¿{ô]GßôCG?zôÓGo9ú¥£ßþ¬ã7Ññ>þÚão8þKÇóøoÿ£ãzüCÇ?züŽÿëñ/ÿÆñÛ³“ÙÉéÉ='žæäãO^wòú“7ž|ÙÉW|íÉ7œü…“o=ùö“ïý§ÿæô'Oÿóé/œþúéÛN“³ÉÙñÙ­³‡Ïž9{ÙÙvé™þ^sögïwö»Î>ôì£Ï>ùì3Î>÷ì Ͼüì+ϾîìϾåìož}ÇÙ÷œýó³>û‰³Ÿ;ûg¿vö[go;[Ÿ¯]»yí¾k_{æÚË®½æÚû^ûÝ×>êÚ']ûÌkŸ_m Kö ¯ßMW¯çóÎï{m«ž&xý²j~.¼•ï,ç¸Û¾±>Y¯rée®<ãåòoįú.)Û;S}oœÞÔ¾.¾/ûUÓ~Ñ·Hñ¾èNXˆõsU“Oë÷ÀßÚVUnx¨©ž91Ñ 7MrÒÄ÷­äD­¿ëö¨¥´áû•rvÐøA÷å/“Â:¼™¯í_MüvY.­.y“Êi·ðmlGËË7ÿÎÐeW.½øËz5•c”ëâ÷ŽëuÁ׌cêG/Úçx¨úm\ŒQrœ¢ø´„Š •uö ÚÖ}ûñ>ªã#ƇÒˤŸÒ¾­LI õ·^N~ö¢—›|÷YÞ†ü)0ªÈ¡Ó·‰žFŸèýÑDïËÆ/mÛ#íl•þz›ûCoo½¾é¸?,ø«ý£Ñ¿%¿ÕË«­?¶äÏhúNæmú÷Þãz¶×C‹Áp4äÏ š^~0O§¿ ùq}.kû’Tòa_ß>üS},üouO…*>Bºt}šh:7¸ÿLýjÒSm_-þ|:ÃßhMÿøõÇJ~Ûã7ìϤRBðŸV?ª§´˜DÅNô¿W{{ìÏ ã }c|×û» ÿ&~mk_ºð×ûCã?:ñ–¯ÆGÃùíÃßuß›Ò3Tžù¹‘ž¾ã˜'¾žényÓ®¦ í/…]äÓèÖ(o:US§åÛl_ÒC½®r}ù½Ïön">ß¡í¯»dz&yõ_.W}ÛnÏEó÷6õ…ÞêTÎÐ/ŒüÛ ó øà¸ZM[2Ì¢þnà« ¯_Ò!M ~;âÛè)8£|4βð¡Ú~›ŒÑOÛzšÊÕûÂÕ>_¹÷üXð†ø`гÑgëý£é½=®øàvD>Ž|¼ï|ìÿ2/¶GO<Æý£ÓErd*¨ˆ”´µMýÝ0ž%þ~ÃËÙ>O=°|¡ø‹S\ ”u©¿›í˜zºêv‘ùûª´kÕùë²[ôŠÁoJùŽúI¨rÈíQ´MMxßñ±¹µ.­\#¿«}!ôãùÉè“Ð2P÷(¹6¥§¡g<ÛÙ¢¥®¾é)è§Ñ :_J~¼tr|òëC¯ðñE]7¿Cí…Žºvµ{9Ûç¸t>lÁ0ÂÒowuÇ\ürʳ?Ë@YSÎÃÆo CU•8¥Ü*ÖqÁµý’JâRÍ+~+kJúO§|šú Mé¸Ù0þÔêIz…󿮇lßBG]üµ©ŸÖçÌ㔣íõW Ü±ƒØËJSøl.w¤,½lÛ«G„Ž¡—~ñ„Ûzùz?k=m‘u¾£_z´¯G­Ë³ž­·o‹í2ä¨c¾h]>ã±ø­Å ½áªoGíøÆru}uÛçÃ'¡ãbóˆ¼[véeo_ÃÕ‚6²·›èg2²!:½ ÿo@š«¿%Q¨¦¿íå ûË »k¼@&Áp_òÚý~hõ[RõGS;6ÄßRŸ‚¯ËÿãÂ_§G#þ¾ýDêrò ½ÂéR¯LºSùÖåžÁ”ª”)ê4ÍñãõKÂõ¼óûÒ·¯ûþUhàÙ~7°.:l¿÷«}mƃ(ß—§}=Ëwã8ÕÌÿY‰*~3{<Ïü¾pùÞùöu5®ëtH–)ñóëêõm»üKÞžF½}ÉÚkåY©;ýñ°·Câfêë~Ë÷”ׯþÞ¼ìób^=ciè>½ËÖ¾îûW¥_ûëÆ±ìÔúw¿Ú§]Q¾¯–|»½Mï'¼½êsiæsjhÿq{P£—ƒ~TvÔñÚíf¼nÐË”·&ybHÜßõ©Œn›ØÍü2Îb|Û嶺Ïò)O]DûÂç_Êw¢ûMÓ3W‘‰º.Ø _U ¼_tŒ¿o“¸I?hímÄ¿áòâÿÍèæ/qÉ;êÐË×7\_±oŒoÔ ÉEûƒ.º}6Ù·}Âé Ð“nz”åUíF: ].ªŸ÷«}M—ϸåþò´oóþìšÿE»\íÞsùî·}›Žëáó­òÚ:ÄÖO¤¿÷º½ëóPüÌýRݶ?´ü¦+¼þúú*8ö]~ÃÕ(Ï›óã^ùS.}ûøz.œ*-üèà¦Ç¦~šÝ÷ ÷Û¾¦«I¯G¹¿\í3ûs»~`^ ššfº._j ¬Ì÷æ»>ÕGþê? Õ¥¼R"gm¿íòhåGùg×öÅÇöÅöírûÇKc Õ'ºÞÕ´p£þ³è'…f¸ÊQ­½ÕŸþB^°~½sÎ'ÖoËXa;ê`šžç ã œ³gÊø7ò ~C Ù™Õ·^¦›ÆÿÈ[”Çè·gk ­³q|Ošý@õßö”åSÛÿMú Éñ°W6ý4ñ_¿éyhÊo&¥ düœqÞH\Ë99–ù/Y<ƒÌàA1pIù7Æó~Xä}þñØÏÅ`P G£!| ,õ'§3È*`É11‘·g4¨—!LÚŸ!Þx¾ mƒ®¯u=Ž|®ó¾Îÿ†\ þo¶×YLÆŸ5…OEYe<Â>â­/sŠñ‰t·Ÿú{Ãñ«‘¿šò7—¯Ûûõö¿ù»‰ÿ›ÚOmÅ fECº¦v Ÿa]:-“–­ŽÂ®t×¼¦iÞƒã‡:^+k÷äÏ®ŽÿŠíD>ÎôFùk–ÏzùjH¯ä´TP>ø­cÎtÃ> ýÞtüÐ93ôƒ—o|>(Áø­w¼>Šj1¡öª)¨)R—J­hUÅsˆK3=7\‡cC74à›‘i†ß| ±HŽPb¤Jšì×Pûé²µ¯é’m§öÏ&óG}|±q¾³>Ço´[ðãÓ]toê‘Þ@ÿÆþ‰ôôôôm¦/ý¸Û¬_0JTó´Œ#ÄçüÛ+Ì/Íß öLÂí<è}6‹Ô_öömÛ^ÒÆwÖNêc ©ø®\pᥙ_/Ú^ºðö5ÛKõþ´¤ÁŸ×³?U› o ¿u| I¹âo…ÉÜ )Uäh”¥CüÆx^G%×ÜNÍRn·²oˆ§ßÜÄáD¾" ‹Ñ`˜ŽrüÆx”/çwêáoÝ¿}Ưºïz}¢öOð·~>øg£d0Ì‹¿)þ¼ÿÓú¾AXô=ø/™„hÆ¿1Þ#}³ñú¹ÈKå=(•w‰]õñ>éMýØ¿ì¹+ù­³m’º<8ënŸ|øG™åwjüKIâÿyç06hä?–«ºk~ Îá\ge™%&Í0ôÀª_w?³Þ)”®»µ°bYÑи]‰€Z¸ë’tl\ž;k–½‰«Ç¿Ò]…ÖþÙ¬$;E8ÔT9"rDäˆÈΚ-eÉ,öZê»O1 7b„€’¬Û„É÷¸K“~˜ÜÞGû"öœlüî Æ ­zÃ2Ówý‹ŒKyÇ©wµ%cJ\BqoÑ$?ªó2ÀU[ýôúwj›„u`1€*i˜ÏÇ›lŽ/6%tR;ô.ê*ÿi÷„Ũ{ÀÊÓ1ñÓ †wç”>;5|ÚBê’åï¬ ÜŒ”‘½TñS‹¬áHGå§ —¿ù݇·5šTwÆÕªr«(†Ý"Ëys2ÌËÃ#K Á‹{bù½€ý2~ß‚ˆH:©÷zRÇEj÷‹;ýÙâß…gà¿ì;ØÐiü–*+Åñšn£¤½ÈïZ—Xãî”W}î—LtS4î,ÿ5*;$œŒKØ&1ü«#®øËÈŸŒFjMåxPÀÄÊðØ*ìVßã[ªíbIaÓÇ0Ñ®å'WÁ%¥R´GeûíÁ Z?ÊöÊò-F/+W¤8·a„Éù–©.à=ï.<Ë‘}W;ÊfüÊ«¿ê§b=íÁ(»w¢˜%j“ôreuf 6ÉÒÞ tÜu´j˜€ÌvÇñ‹%]~–¸bš–kD÷£jjW¶N8%wNÓÚóâ¥þ2¾j)o#¶NI3Ì#­˜é‹LûÂ74óY¤¤ôÚZ{jMÍ„=ŒK¹*¡>3ŠÄš'Vheyš1›P§sþh,«§š/êJq¥ãpx…ÃwÜK¡ã~›Ñ,äø/)ï3c~É”_áø…óEÏå÷Äýžj3Ø·˜  ¸™ï¯Î·ØÕ¿¨Ž¹íWü˜ª¥ —*âBjËr†L¬ ƒB¹±ÇÕiKýÔër–d)-Ó0KJ%`ZJM .üº*I%KȽy̳‹þ¾H2«r® ö/"­GJ ØŸH£Ù',ikùR€h~ñ_üA®jf”‡Ï`ƒâ/Ÿ¨´Ô£¨ì²¨ð‹Ãg‰p«‹¢¨´1ÍíUEƒ1Œ{cæEƒÑÿ?Šví=È(Ú–ÿhà ^&W¨”¶¦Ò Êc(£»Ùÿ…‚ubŸ±Ê翃rÔN\$˜zÁ¤Ú2ˆ&âÍ0±²._í䈳‹%YJKöT´¡L¾¶¦‡­×þ°tÕ¶D'WjÝ#Så'Onšÿò±Š›…j—ë:øï™U¬ÿ.B™ñÇæpU·ºõ¿¦½ÄõjˆðßÇ­†]O‡9DÆÇêð‰ +C™s‚(2QdH‹š> ô$ÁX¢wßþ}Mk©(iôíã»(AHWË9ûlúÅ’vÃØuç¹þ5wY¶´73£MI»æöôùc€sâ¢Ä›˜ºèC´FëlT¾wˆî)j€!8eð–‚ßKËYýù@ÅÛ ãRß•?_eÑ:lHôæaJ%N4N./Ǿ\C™kXÛ¼“nô™\曪øcº4ì6-a§­ˆXÀD˜euñü¥2Òg€W‰ÛµÃ§Ñ”»$¦œÔ§ê½%«°gŽÙ·€¡¹DªÿÝ…g`9R¦ÚŸ¦%:FŒ.G𽕷%öß÷_ES­7’tÏV²£éÛÙÐÆï%úžõÑz­ªÂQ/—¸-’†i©Ò¼±Ç·7Ý7¿SC´mL éÞ ÓtøßÕÕr¾PÃoæ„˵Ä`ƒ±ó§Ët7vqlu4}¯¬é´°Õ˜ªÅ'¶KÞp>ÂÐ0/änQ>jvß°)¿!#ˆžË,!ŸÍéÓ]8IýL׺²L¾ñ1]ýáCù;4>´ÿBÂ}_’;y»xiØ%þð}÷o<†íãkwa/ªã(|ê±þ·àÿ \¡méDßÕ—ǃîÂIâxǃݪ^Ðzþ!êÂ\s®g Ñ5çWRó¿MÝ[ÔgeýšZLuS¯Äø£†¥ÙÔæØàFU•ø×u!0›ßMÏ©!V½=`Ü}e»èYÐú9Ò±¯bÿºÂµ›ÝM振òásGà,…O³Á¤¶'I»q¥šÿ‚ ãNºR}þóN7ÿ£+µ»©m‹òCÍh—æ±9·û®ÔvølNŸî‰ÐiWwêÚ!ᮦhÍökô7Çàn§æAòîûòÒY¡:ŽÂר*ë þÊÚ–Nô]}ùq<è.œÄñ Žq<ØÝñ ¢’F5ø‡¨ {ÀÇ™Ãõ]©Ý §íÕGPN¤Xrå™c>¿yŠùF8=dâìз|ÃXÁT£OX`B^++}hð0ÄÉzÓ¶œñ;ÅÄ_ñ#ÔÅï”Ζø´nce7ímh_Ê^¦Q)x{*ë&F8®€Ï|œ®†ìžéáË!šPTaÊÕ‡çēğxŒ߯]Á¢*ò¸« îÆW÷¢ÈRp Â½Ãøº^߃xˆãOníeXÓƒb49,“ñlºíôãã“Ó³k×ïºqóÖÝ÷Ü{ßý<øÐÃ<úØãO<ùÔÓÏ<ûÜ ^ø¢¿ä¥/{ù+ž_Ý~å«^ý€…< yP¡>XȰʂ2¡,(SÎ7¸ðPoTÕ•ÿÁðLGˆA[„…Z¥*V¼ó8¾oüû§%†#%àîŠOò '€ûd<ΦüîŠï½ü@}1ŽFã1¿O&ÓélÆï®øÞËß`¼ôÿBÇ×¾ÇË?‚ã÷|¼ß1/Ž—íÇËjÒ&Ç*¦£ ï&¼¦¹h¸|øïÿx³ßã}êå5u)ƒ¥{LUdš”ìýA9nöYPÔªWoäg „û,®j»µü¯i»™ÛºLT;Ü7é ªÖõdS/ï¨ÕsP»u϶ø3—sÂOUö w¿IŸ°»o~*ª¨|èægŠùß§ßz[)^ÞOÔS–òºKé«ßº«NnBï”ÓÂDã÷ÞÎlbzÓ¶5é Wz†£é,?˜æãl±,f‹e:™ã7Æ#æ î/˜NÙÙëOïüÖs8Êïå–ßò¸©Ý°WŸ]Á­Ë¯9|VίG)Ä f‹l²\L‡ËùØmv¥×c»½Û`Ç9f q§Å%Ûiûûjõw²ksKÃUW¯‹ÌÞîàéw‡MÖ󊡵_(§¹¸1¾Ÿøžmø=[‘ÔWa´h˜‡Ü¼u×{ï»ûžã“ãk×OϤî”Ç=êå`YðÁHÔ‹®K\‰ÔW q%W(±\¬ËÅz/ÄñB<±\¬ËÅz/ÄñB<«eƒÝÙQ/ìMÞ‹•mëˆ/²|4ò{^dÃÑ€ß]ñ½—¨o铜øÝß{ùúj7WtMßKšLÆ kòl6¥áPx3†‡]žŸPø½Çß1.À.‚¢€…ž•áPø®Ê ×öÕžôôôhOF{ÕÛ^Ý®íÕh¯F{5Ú«Ñ^öj´Wû²÷"||¸½JáE¸Æ_ºkðeÛùùɹÏ|Ða<÷`k÷4z›÷`xG¿ôá_í~lÎ=·WõüXŽÓt}I·_ÑD{ÑõdÚ‘h_¢Ýˆåb=ºýJ×¾ñB-æy±XÎ’ƒå¿1á0ÕTÐ0… †O³àçŸCÃ@ÜNÃŽ=,7{†O¸‰þŒ8Œkµ§rÈË@ïÈï‘߯¿_ÕçÉ®n»]™%Ìd‡q+ãÏ< ñPd.s§ÉtZäÃAioñà< zU·m•ø­ø0lãÄžÌáËioò…¤áÝ„ßwú÷м—%ð"ÊÜóƒk×—ÇGׯŸºâ·Y¾«LW½;Oô°K'»ôöNÀL“rô,FÃÒĺâò 8o2¾výèp~pr|vº\\¿æŠßBù»ÅW˜|ô9=}Ôu) ÷^þ.¬Ã\å°£O7YCºLù·pJïÅÖOæ^uv¯Çïôý¸¶3ó§X~,?´|*#®x*;Tî\ñÛ,ß%×®¼´^WüVÊO«.doT””•}sPB> ݪ†¡Ëqè®ûžxòìî§ž>~ô™g—=wý/ž¾èÅùÑK^:_¼ìåÓâÏ?•¬n?1[½ò¹Ñ+^õ̳/zÕýO¿à•÷<ù²Û=þ’ç¾÷Õ/?¹ùš—>òšßxàÕ/¼†åb=X.Öƒx!žˆâ‰åb=X.Öƒx!žˆâé²oéœÈ5oò§ó&×Ê5ÏòøGü7Åß¶ÞDmRÝß¿\ÌÐMÃ`—Ã>¶ÑpPÐp(üeÀß5¿†y ”AáðX?]€0¼%Ú|Fáð—¹ÂE~Ù÷€$©±*æNQW¼x i}MYW üØÖçìëëµ*À›ß,±Åv#Έ7ÅÝ%'uaXÏÆ=‡I»Áˆô¡w]ûhÌgæµô—³íýâê;ÑÑâÆ$äcù¡ÿôÛRŸõ³¯ÎÞºîž؆ôbå·×}.Q~{—ß~û/Êo½üVñ++wÍN°Û﵃K÷ïØÿƒ¹n“¾öƒW%È%YmãzµNß*š×ÂWVÛÐr¯ÂtvP0Ù«¹•1¯ÉfîwŒØ÷Oä¯È_ý}®õà'"açØâ‚߬ߚú¡UÛüuyæs ‘öï ¨_3u‚_®$!¹¬« á²+á¹Ï¬ìÊ —­Ü2²i¬å¼Æ Nx•äÌMóNíDNìåά̼·°…r|/‚_ØÁßur²ÃúÊ„u=˜¤mžeØ¡9çèÎ;<ïhÞ`x“° S˜6ð}zõ ¥Ís¢¦O˜ü‚6â6-«>ÝÅï>úp§&KÕ—2+¤2¤Ô(¼L¥"ÜeI¢ᾩZ`ÜÉ Q98ÍtéKrL Ü=dœk£!eâh½Ûñ%Ã{Ôn2OgÓ ÃbÈP–Ã"&;‹¯TX§¯cÔ†" G‡!\B6óÒZÌ»«O½à¹ò¿»ùÇÍ·¡ü³kð!î¦V÷>åÍItuVFMû€ I󰳤}h¹k¦ˆj2[õ¤"Ã(»dŠÊÑ5ï}é’ž<ìŽ&ƒkP½Ü%ue2¸êwý×(~Ü–g¸s‰†)L4šßà¼H'óE1[Œ³%~cü¨æ 콘 Á&@#€v ¾ï!wßM’pÀk/¥“Ùé™M¦ƒù(]Ì—³Å°̼FÚM 9ðâÁ­˜ ÊŒÆTóâ`VbHs½6‡ÜJcl8žŒù!3$ìj‹|¤ß¦ô uT‡~Ú.Ôø £¡mmo(ÿìZxsÓ)¼ÿÚÅÃfpP½ w¸á¿1áÔ!6˜Ãâ@žMgPÆlJÆʖï¡WAòíh§«Íýë@|ÂËf=—ÿóž*†f>_JÕ×¶Ó·–¥äµfýë¿mèW³—Í7ï^ðFt¼Y°Þ€ÌàÈôÀ”èjçjE'¤>êKåž>ÜÞÔ.¡/×À `.ÿËÀ_0 »oסúÃO)ã#¢qvzý »`h¼ ¦]àß1 O&°)°hxá­rÔËÁ˜½À3µ’ö¶&†ëÚ>Üô…]¿Pb ‡áˆatH^´RæçèpŒ8R|œ04/…¡ycùåËñ’é9~§vàt:•“!v?`‡ òûÑÑññÉ ¿ÏNO—ü~vvíÚõëüî*ÇU¯«W½®ñ~4<˜ÃaüpOà{~çÈÓÇäùýìt~pý¿.'Çüî*ÇU¯«W½ ùcŽÍJr11âE€ÏkÄ¿+¾÷ò‰Á²·êñ»+^R|ɉ˜ÍYã{/ßé¿ïåï»ýº÷ø»|ÒÓEáðf s™y…ß{üûR!µÚi8ž¿ˆ{\h˜[ÿüµ@4 ¿÷ø;ø!ú;¢¿#ú;¢¿#†£¿#ú;.UùÑßýÑß±¯ôß÷ò÷Ý~Ý{ü÷Ü_°ïøï»¿`ßñ'<ÀÏ>çwŸxÓ?b¶Ë&–Cô›D¿I ¿ÉŽù‚áwÍ¿¾ƒ«vèÃøÒ¤íÕ8Ôáåëø`9X.â‡õ"ˆ'à€¸ÃËÅz°\¬ñB</ÄËÅz°\¬Go/â…x†Ž—OÚ;´(eø=tœv•ãª÷Ráï÷R*þ *þšaÒ¹âcùMåï¹ýñøol›÷úy¯?¼ÃÃÜz6ï¡ð{ÿ¾û}ö4­*v¸G®¡œ Ó*²òÇ Œ§°–ULÉp¹˜æóå¿1á0ŸËä¦a  ß÷´<ÒÿÂéöô6ù¦£|¬„‡“ÑtÍf¥39H‹å´˜— ~c< ù`Þ^GÁßÌßÌß\ÆðTy ä þa€‰§¯¤è³Ü}Øáé+ÍZƈ;ø¢x¿°tCR·dgñ9ëvi¨wx 0ã«2×Á¼Ê7(NOÏÎ&ã£Ã“ãÙ6ö,†æ¥04/ÅΤæÛ‹fSV;GîìøèôäÚ5Øävý:…¡y) Í{9ð#˜‹Á]øqÊûž…Ÿð{;x¾¶FÃ|aEÃíàM½ÑáÒe¾r•S_~Ë13¾¤" óÞ¡ýÅíá·Ü¿ÝÒ¿oþÙBÿj0]å¥c=hØ¢KZ4ì‚qÙ &©füCaÇ0ÂN³Y>™¸âÓd0ØÆät<)Šá0›æ0*;â·R~‘$ÙŽR‹¼„ÊÆcWüh2Œ§i:œÅ6¸–vÅl8ºâ{/›:Âw ïÏ,‡ÅÆo¶¥¬¶åÙ¿ÍòwžW~¶W\å°c Ý•­%ÿ*lmË+dùÛO—Åé’º+¾÷ò‰ï‡SRñúñ¦—Ðå=ä÷ÞË¿ ùA,?–¿såïåÖ YŽO¼«.Wü6ʯÞZ0É訂îºûžÓ{ï[ÞÿÀ}Þzèîkåè1ƒ¡hòÔÓÅ3O=û\öø³/xø…O?ø¢>ñâû_òè=/}ÉËN^4ù §/¿ùÒáË^|=?~ÅàùEºº}ã•·ÏƯzþÕϽêW¿ò™{_óäê‘׼ⱇ°\¬ËÅz/ÄñB<±\¬ËÅz/ÄñB<ûö?¸ÆqvÁÐxÌÞãßóü‚Îû\s@×<Ñ>âñßÿV[‹èÿ.¾Šä…{å oXJV—Ã\È}ô¥n—Ô´ÂÌGžhŒ ÃÿRòGcò‡1Œ½yÕŒ™‹|8øÇðT³kpÃ8võ¼äØHÅDl6›Ò°‹×¼à r¡†<÷.Ã.žõ‚oÁ×´ýÈÈ#;Çç ŸÊÂé 7ãk{<¦ÙÊÅo #œªyÑ”‡i˜ÂËWïü(¿}ËãÊËàœöè5¿Ó˜„lzªbËX™H$aLU1ãJxªs8`f΀ï0‡˜î{Ïòp¾†ß_s®äÏÃs£a—èÙÇ® ØÞêÿvª­Ž‚Ÿ‡Õ3œ«e˜ÂËWïü(¿[±›ú”¼t¹ñ¹K}kÿ¶ßõ·«™o[s½ÉvüÛéìŽ{ Ì9¿rÏ»ˆˆøN%­lì;Úò…ÉJ$]tƇªšJ?ªå@7exf#¦0¨ú ãýÃT¥5„I»¶±›¶Í®|Ü¥=Jf:\̳Éb9˜,Ç9~c<Âa>½üÎwÙGþÚ{þ*ÒÁ°(!’À”ü´çËÅt¸,ù ¿1á0_ïüU;á„2“B†³É$Lói9ÐÏhØ0YaƒÉt<˧óÒþËJÛf¶X¦óIpÙ®¡/A^®?€©|âÐcijæ—q£4™LÊÉV>ž g4La‚E=T•ìj@˜V³‚«6ôDþº\üUï +ç¦9?¯‹„K+c2L v^ zÂÊîbèéŸCýÇîM´e/6ð™/Û¬khw%]FÇ©¯èÚvéÓœO–K‹$™À1uãÙlHæ|OùCM’IÙT^„)L8|‚Ïn 'Ù$–S…’“g4LaÂáÃù§A$/;?m84ôÞŸ{ÎïQŸÕóß6ô¯‘‘¼VvÑØ~ üõÙöôYßý¹÷üž#½Üß4Gó„®ác5ƒñ•è^Ig¼!_>÷ iqþáñ­ð¿ÂýÇвO—\)‰Ç”é"÷ŠD ]Êà* §™.}Iv–¨é!Çq>®ËÙñ%Óa~ÈdÌ”0 ›Sfsº»ðv¼XAÇÈõîÕ¢µ˜wWŸzÁ³fÜCUYþÙ5x·!ÛѽOyq¸°º +#Ž×1f¡ð5úÐ=5Õå²FO6MEÄî#íîЗ.éiÁƒ!ýÜÊd0f7ª‚?qÐÜÆÓ¤:é+ùh íì*†4×E •$íO…ôƒôÛ”~¡‹w¡Ÿ°»Ð¶„â¿?CÌ€=84¨ÿÚÇóƒ¤Èà‡«ã7Æ#œ:ÄÐCªéáÕô`mCe+ô„^g¹x;OýÑ{ùÂl¯Õÿ<†§&x")Ÿ/¥ì¥ü<@ß ÉÆÊj@ÏúoúÕì³GÌ»¼Ñ#æ½Þàm€¯3Y8Fz˜–vøhZú™–­è¤{éÖÙüDWSÛñTÓÿÞ~Øç‰“LËž÷ù2A¯-íú†RÌç&¡/9©„t‡^® o•£xâ[ {…5}ÈÎ-G_8Õt2ž'¢4¥·9q ˨+Çõ2=´ãñä3ú¢:øè/Û£/Òƒð¦/ÓÓOP£/Ò£'²!žôEð¡Ã8Õä%<'§¯”S†æ¥04ïÊïvûez gùÚ¡ÓéΘe÷8Ããßù9ü>?8==\ò;?˃ß]å¸êu•㪗Úfœ•Ýèˆß¹ïÈ“lV”‹ ”/|^%þ]ñ±ü†ò÷Ý~‹øGü7ÂßîÓJþæ ý ÍϦæÝå3 …ß{üûR5Ðp(<!#÷øÐ0Ÿ}ðW*Òp(üÞãý-Ñßý-ÑßÃÑßý-Ñßý-Ñß²ËþŠ}/ßí·ˆÄ?ú[öÿ}÷Wì;þWÕßÒß[Å ÄÄ[{Ç0¥Èù½¼€IÓqž®xÌÁü€¿àèèðøä˜¿ à:èL{¼ ß=ÿC0|–W6; ³'áißÊ?ƒá݃—sêˆñ[Šþ–èo‰þ þÀÝü¾X‚·„ß瀿/Ü’‡{š€%Ïï£áÑáÉ1¿»ÊqÕë*ÇUoý-—ÛÒwùûn¿Eü#þ½Ùÿ|ÆJáðÜJ篡a׫Bá÷Ç|Ÿ>ÉGáðf ó'Í{(üeÅ?ú[¢¿%ú[¢¿%ÆGKô·DKô·DËNø+ö½ü}·ß"þÿèoÙ_üóý}÷WìþÌ´­œ)—ä4a¸<àëBr©%j„ê[äúþàD5M#𩶸ó¼aª VÎhf-¿óõ &œtâQ 8”„ÃKÞéïM¼¼åœüè*vñ¬| ¾¦íGž@Ù9>OøT¦G0mÆ×öxL³•‹ßÖ§þÿ³¬ð¾jpdÁàFÃ&X¾zçÏ“Ç(/Œ ñMïýñ§ «°ˆ¤*fïßôí&Oy ãÓJPﳞ ÿùÇðT¹s|·•q W¾výëü¢¤Y—¡]wf»8^òòHWx¿p­ÔÈ”Ò"ºâ.ÿk«¤äk_\’Ãá¾L˜6Îï&uØ‹Y\gÇ£†µQ¼`µN©†š†]"ØO8«¸ò(´WñU[”³d¬qÐÖdx0›ç“ƒÅb°œÎ—é¿1á0Ÿ9@˜wW_yÁ%îuo#â½ög Jhîñ® {úbfo³Av2=ÌGéb¾œ-†Ëƒq^£/´=A ž~^Ãwæ°îÔ)¡|ÔÕPa¢3"Pà›¢áp±íùEÆPR¦eìÀz6§Cìò H=¡Eƶ†{æøá 4l£™þ"`?ú¢ŒG8•eù}O’o5«Ø[~cÜ–&Øç¨j ¡ñ›Îêóm…ZíçÅ {ϯî¡(/>wûl¦÷ÜræÚåw >î$å÷`ÓH£ó¶6<»â]´7<÷õ@?_oÂøŒóùÁbYR Ž1:99>=;­8²ÇûÀÐøJØw逾Px«<îφm¦žR:}ám†SañrÙ¥‘;»¬ QÙYlZSj]p&€L.°ñ9ÏJ1:Ø8¿Cm˜æ@E¹QÆtpϽéäž{‹Ù}w³ûô Ó‡<{ëà‰¯ßõÌ£'§<¹d‘aGò+žÙËW·_üôãÇŸ_{èᣛÏݶxê•«—¾êÕ/|þU¯~Éí×¼ò/z –‹õè¦/ÄñB<±\¬ËÅz/ÄñBÛ0ÏÝûy×Þ>hš¤!«Ö¡«ß”b`ÁC7ׯºâ}`”Ý;7 „O™ÿwêˆ0xÀ&“á`hxçàɀΠbü¶âã¼+λ.tÞ%þùBLl¬ñ"ãùsÅo¡ü}Ÿ7Š~¤sW<óÐù’+¾÷òkÇË=xÐjßñg=Èû’†a•‘¯b‚]†CáùÊ7{ö`DÃ|’?çBáð—6´T“¡võÉIƒÇ”Ë/¾´!ž› |©ˆ„}ó¬4—«Ç@0ì!g˜+)²¤ÜîÛU®™Lò÷`š—,w0Ÿ-¦Kز,ÙüÀÕ/uÀaé ZƒßÈ']Åûà@qÆß¶á<°¼ Dã ˆè4¾;J†)L;ø~ï¸ÅÃõÍÏò7(‡*6!³sêÛuçuí¥r3²£>×lÅõÌ© ?ñKÒ‘›ÕOÇc9¶uVÒ~àG}rÔL¤wd:N3]ú’ì"ZÓCŽÝ6®— °ãˆ;4Ê3—lC¹ç³B®t„i?´ÐZl;í} ïugd ¹·àŸ]ƒ_3¼ïñ†ýÝÔ¡»XRWzÝY¿{uÌòõzÔëW^¯÷¨·¢×{¼+3 ï¥Ü)fI5úЊO~Ew›£¶ÎltµŽ4®–¹{(µ=׾Œºh]àø éCF~1ô=ÕùM|¨—¯×£×§–k½»ìû¨~$Þ•¡Çë+{—ƒ6ãSßú·j#m³+ž¶ÒÂï¢g(ÝôOúµ·úvQ÷Þ¿=Ó‡¨†j€Û)^³RÂíßa÷¦WeZØÛ|SÜܱ"ãVµ , éE±5ñìŒ')ùsÇ·¡ƒkˆµÜÉ ÍUï¹j“á£vžáÁóãÎDù¼;}î®x¹â]娪|8ÌF£¬ì÷Óìi*'i:Íóél0¸â]å8ëí*žð¶kƒáfñÛ¢zRñµ.}#~ëo |ÄàNK2 Ò¢€_%H2šÎóñlq0›'ãQ±˜óùt”,–ƒù|°\,³É$[è¿ux½<½>—ôvë²ð_Eö]Ùm ›¥×‡e ÛK8\߆åX®n;‰Ûg3v?åèX¶†r}¶7ñd¬åÚoƒÚ¯xc:©ö >Ú7Ѿ‰öÍ…Ú7,:˜L³ál|0ŸNçãä`Q‹ƒd¶\L&‹ål´œçù|).š ³édŽõß:¼^ž^_´o¢}í›hß\nûƵ³ØuP½ew'+×ä¾Dv’ËrÙO.;C±Ÿˆ}3¦é(ÏGãÁxVŒ¦ÓQiÍ౉l:ÍŠY1sÅ»ÊqÖÛU|´“ì$ð×B¿p]gü™¯ÄÅïÁvÓùÙ§ü!t¬*d)ipvzízIG¼«œÞËO3ñ”ÎèÁ’;¿“vÈU³[Âý2º.©³7ðLåQ °ƒÙÁ"›,Óár>Îëò…Ë´¿ž WEöñÓyøÁâ劇<蕾ÚÁ/ô|o9OJ†É0ËFeŽ Wüd8–fÓh6Ï&é$Nó|6Ì\ñÔ†åãœÙY|(_3ýZ(¯ÉÒm²b`ß²äJok—ûÚèŠ]ÁXŒÒùÁt‘ñ0Ä•aˆ[.æCö™sø´ãçy웂ýû-»&/mÆvò’ª/j ŽœiýS µ_{–ƒÞÇžå†è×Á Åó5Ì'¡Wò f”¨cëì—=Âøy쇮˜<ö//jUIÜ:éR!5÷f•·NºãÛÐÁ¥â].óÜö4AØ®ÿZ.˃Wò5a›º\ñuaäuc#íµc®×¹^G¦¿–ld{=Ù6^Sz§ºÊçî ?å?0NŽá >W¼«œÞË•ÿVá¾ïÛ‘g/}½kñQ_G}½Oúº•þ ½G}õõŽÆ»ù¶FϺôu^(oï[@´byÀ¥ß]ø¸àCïVý(~#òŒ½a’¿eÞ3YÍivÒŒý·Çý—HÏÊžž!\“ûþZ]Œ1éšÇÓ"º;-¢ž_„û˜ºÝ½N‹¨¶DÑòõzôúH½®ÿP=×Ì›^öy7bïrª¿ú¶¯Há`eØ] #W¼²…´$x-GƒaáŠ÷¡­Ýô—vWßá^æ“[´Ÿ{š£JÁnÿ—<,øYœ ŽÜNEí,©Nµ·Ç/¼Ô[î¢Úã]øÐöy´Ï£}~‘öyÎáT³d:› fóƒQ¶XN‡‹e:žã7Æ#æsI_´Ï£}î§£}~ÙËŸhŸGû|GìíNísËèhŸGû<ÚçÝûÏÆ¥}^ÌJ»|2ÇoŒþó„ç?&4 r=Â[g3Ÿ°«œ¾Ìf×·aáË`ŸìsùmŸÆÏ~Ïï>Â7Íwá§ÐøÝ™)Çcquöy´Ï£}ísU6£}íóhŸïSù;`Ÿ^õO´Ï/:~‡ìí-Ùçú8Fë£|Ó#VŽ|iϧñYíG÷šsàHñɳÎ O'3Wä†qç+ººßY|(_³yŽv:wƒžßóq Ÿ7Ç^ø'Ô±çòØ¿¼¨U%—áeC•©"ç¥F8~7»hù‰©®×v)1Ž©šk:Gq£§¡ºNL ‡ôÛ”~M®i=ÜvˆÞdˆq‡Ãû7l9`ÚîB؇ýÒCû/4†O|Áê{ýÓü¿1á0ÊÖp4( ˆ<›Î ŒÙ”†)L‹©¥ïzž нë@üÃËg/å쎷‰öI´O¢}²{öIâ<–•c¤wŠ^’•¶í–h™2LaQ·‘S<]§‹fÖÓ6™ûÉvOSÜ"CÃô%ºÆ {3—„YÂmÎMµ· î,W±µŠßkÊ觤.ZWÃOt —¾’Ô8¶ž_D:…ñ:Öbéõèõ©åZïu5ÿ}yy¹>êSœòW#—Aå·ãÖ8ÒfW?8==\òû1ùÝUŽ«^W9®zòF;óvåÂ1fÄ‹÷—‰W|,¿¡|§¯­Ù¦ò±ñ|l¿Mê Å'´Þ®èàª7Òÿ¢é¯{ÿM„†çg§G‡'ÇËÅõk4œ&“1ØFy6›Ò°ÃÃf <ìz°×µVŠOh{Cñ mo¥ÁRô `z'ËÁÅ6Òp(|Á:º €GÂyù£È†åÑ€†Cá÷‡¿Å%w¡ð.)¦Üerš?üÞãŸH¿ ÓÙ4 ‡ÂÃg8ä+Y4Ìgß³|Óp(üÞãßÑ~|?k´2L53ì €yõÙéõk4ì‚qé|Ÿr|Êô)'Òÿ¢éoŸ‡ºâ]¶+¾ïò}`h|èNœ¾Ëô¿`úúKéº}Â}—¿kø„–¿kø\9ú;tQ\oë­q½5®·Æp\oë­q½5®·ÆõÖX¯Ü÷òãz_\o½Òô—8®·ÆõÖ¸Þºgë•ûŽÿ¾¯Wî;þq½/®·^iúÛç¡q½/®·^ úúKwm}m×ð -×ð¹rôw袋]oõŸŸ¶€ß±õÓ¸ÞzÖ[C×O/~Ö¯rXÓQq½5®·ÆõÖ=Å×[/ÝzhßåÇõ¾¸Þz¥é6_‹ë­q½5®·úÃwµ.é‚ß{ü÷}½rßñë}q½õJÓß>ë}q½õJÐ?Ð_ºïëk±üX¾R¾CÅõÖ¸Þ×[ãzk ÇõÖ¸Þ×[ãzk\o݉õÊ}/?®÷ÅõÖ+Mÿ°ùZ\oë­q½u‡Ö+÷ÿ}_¯Üwüãz_\o½Òô·ÏCãz_\o½ôô—îÜzY,?–¿IùŽù`}Ø%S„ëG݆©ÍÉíCg<÷˜{A¹7´>Þ¼H3ï4Õ„4SÛÝù· gÿZûœÓÄE·^Â圮Ö÷{…§YÄš ï ±ª"–fèÚ ÏKahÞ$U–ðhö2À!‡l½ž—@ac}ŸÃм®öò‰-‡œà–€ص‚Âм&þL”# )þ¢(‘—Âм¡ök½¦fGbÒsÒÅ~Œ <»‚ï>AþÆvð½â_ö’è/òp>WÐOh¸ü¾ãß3ÿïùþ¢½Çß.ƒ`5ÀzßÏKah^º¢MW½oݼqìÌxàþ‡|ìÑG~ò©ÇŸxæé瞥04/…¡y]¾ƒùü`±,q…ÕhB—χÂмZ/ÅÓ…› š—ÙB€Áp4ö ƒO³œφØ'Öî½|Ì ¾_[s2€Î4¼sðó‹Ý{ÄžóϾÓ×øù*òÿNíw „ïÙ~æsÿÑÆb†ý°Rã5 ‡Â»ðq•ãÞw†«^W9Nzö×Ai,KfÐ0ìu;=å{áhx+å;ô0AÐR†¼³ÓS  CiyVÚG¥N¦áÞËwòsž-–£ááðŒ ‡Â§ÉñÉ 8=›ŒAdx~»T`‡ ð‰ ‡Â»ù¸ xõðˆ†O€‡ófS>9nNŽ•aW9®z]å¸êí[¿…òsßüß7?wÇÿÝì×ÚBùš—’ÎýÍxê0ã·S~Žûç°+žßy€§rHWüÊ·ö/ƒû„CËqÁ‡–CçÚ®9»knîßU9.x×Ú\Œß~| _@VðÀ 6îO&cp»âËè$ϳÒþ(£Ñ°´eÆ“2zÚU|ßø„–ß?>vÿ§+_Ë謬¶œI GeôžùqÅ÷]þ®áZ~¨¾¡·Á> ,M¾Wµ«ø¾õí.ãOõSŒß~|ü³ïüÙ;ÿÇýÕ¼¿:l…?˜pÈ÷'œž^»þ¨ùÁr¹X•“ršr|vzzVF_ …ßüÝþçÑpPÀù°3üƳéd OÃÆ5Ÿ …ß{ü‰^òÑ¡ð4La¨ÎtéUøýÇßîÝ÷õ»=*„Ð8ÃÇïCãcùMåï€$†cø¢ÂŽ5ó™.s~×ùQx~ÀB<# Ê‚2¡,(ÏsÂsŸôó¦bý]?@S çb |üBñÞA¾ú€ò,·Ó’Ê‚2ò,=Ÿ Ê‚2ù\6Ï( `®ˆõ‚ý ¶ô]7nÜuóÖ­›×¯žBY÷Ý{ÏÝ y°\( ÊÄúò,ä² L( Ê„ÖcÔõÒWïý|3ý|5ìÄž}z¶„õóÐ/ÄS?_ ËÅzèÙm¶þ¶œ¯ÛßÐþK~¾^läÿ+ÝþKs¾aÄ?âñøGü#þ{Žh»BñŒå[ÊgK'üîŠO³düNêpÅo³|ŸxW]®øþËçÛÖÕÛ\õFúGúGúGúGúGúGúGúGúGúo—þrGggûs~PÄ?â…ÏŸŠøGü7Âßå7âñú?âño«ÿé÷»4íÇÑåQ߃߇ùšöÏà~Ü—£ïçÑ÷Ï`>,óa9ú~}ŽŽ¯Þ_½=:½tzêôÒé©ã«·GÇWoN/ž:½tzRLÃðìØÁ|4Li˜r Ã)m÷Þwã.À…†¿ë×âÖÍ{î¦áG~ìÑûî}âqàSªŠgŸÝOÃO=ùÌÓóƒçž…¹, ‡âÚÞP|BÛK×ñÌ5UsÞ?.ðvýŽgå™<÷ Âf Ï&ã£Cóîò:À®g¾÷Y½‡âÚÞP|BÛëâZ»¹vmòÝSàÚ×@ïf¡íüÁüŸ„=G ¿•ó#þÿˆÄ?⎭=`žµB­ ×\ÐÜ}i¦š%P+¬Ýe?„âÚÞP|BÛjP¬L Í\õô1ï.<]v`(>¡í Å'´½\Í;•J…çRlÞMH…¿øï±þŒøGü7Æßåwñg£ùþM×x ÏGC>*Ò0ŸÛó§&h8þràïoõm¯ömOîþLú¸Òp½üúÃà j£üÎsæRÉ哆Cá/þ®ñ>üD9 ‡Â»êåoæm§áPø½Ç¿gýÙ•žtÁ_ü-óAò¼šë¹=xú¬›ë>×s~>ð—ómæÕ1– …çµs4h˜×ΛOáð—Óˆï©wöþ—HÿHÿHÿHÿ=yÿÔ®½ï`×ð -×ð¹Êô§gãºâi^øÃß®øX~,?–ß_ù»†Ohù»†Ï•£|ÿ‘áóßîû"ý#ý#ý#ý/ŠþrŽOçü®xúN+øàoW|ßå««ä§góƒåÎüwÅã7ÄQ:ºâû.?Òÿ‚éø‡6T^ýáoW|ßåûÀÐx=OS¸ïò#ý/žþ”VMaGÓ\ñ}—ïCãóÀ¿¾Ëô¿húó}(¾w×>¥Ðý–]•ïY¿?3tßfWåGú_0ýg@ÌçDh|šLÆð~Û<ƒ'máÎc\ñ}—ïCã}p ñ}—éáôÇ­x•ÐgÄØ„+‡#)ýwæu„]ƒ°V©Ï1<«8)ø‰»¦úz<~\G©Ô±ÒǧëmÜ>[ú¨ËµåÂg[†{»†Ý]êÆr»·ìêÉGmùÜ·ƒ¿?ýÃãÃðßwü=´àN‡í2Žs¸ŽÒ²¹ÖºÌ߇þÛ_xúZó,ÊË[ØðÉóçE6 Øo?àwSQžAB.ü.w üF<ñ\ëðZY×·¯—§×Wµ/ɳAAõæhÒËï<M${¼«Uwç8s§30£àÎcFCþ¢\¸»â]å˜)ׄ†Cºâ]åP^p™„´¥®xW9®±ÍerÖã`19I»h{鄲~:XO+Š9å “CL—\*0Ž~q=æúø¯É·¼vvÁÐøzìw2õ0.ú(0Ôœå⿼åÐà”ÿ¦?Åþ¤yU5<åÀï"À”q›i“ü§04/-3”þíàýé¿ ¼ÿÃò0<±E`4(ƒY9­+hØã²i|òvV>™¯Ÿá6%vÁ¸fÇ>y;+?ðHYW|¨ÝÜYùµ®Mÿ{;×iå;æ™\ýï¡óØîÊ“»‹§C ùÛ›xmeûnúDÿSô?EÿӾ⿠>¤ÍýO@/ÐFmï–¿&í²ü!üb³'ÔùlÓzš Ý†Û Ò\õm×ý7Ñý7{鿉þ ö\´ÿ=ú_¢ÿ%ú_ô{ô¿Dÿ‹§ÿ%‘;£àü¥AB!J>Å5Nï½${¿×ò³i×›eÊ0……„!O•®•Ð{µoK»3òØî)qØp$ÌÆÅÉd‘ôð ;übtI={íài.—·‡–IK¦¥™ñB½–Ùi¸ü/e¼dÞAxBO9'¡¾u×ñg>y]å¸òúà@óV¦è›1 O&YZä0*ŒG4¼ƒðí};ß·^áÚ°CâzXt`¹µ²tóÖ]7àUÂpl<¶Îm&³eàãÂrÀ—þ®»nÜ¸ëæ­[7ù+ ¡ìûî½çn€…< y˜ÍQ–‰ö#ÀB€…<|¥`P@YPfþ÷kÇÜã«nñu¹ïöîïñžïõÞïó¾ï÷þðôÁ¿ëC~÷‡~؇ÿž×þÞøÈúèß÷1ûqÿ ŸøIŸü)¯ûÔOûýŸþŸùYŸýúÏùŸûyoøü/øÂ7þÁ7}ÑÉ—~Ù—c¹X–‹õèë0ú: –‹õ`¹Xâ…x"^ˆ'³ÃË‚ñ»$Äp4åøÝH“éà™gÓÉ3øýl1{îéqö~#æÃr°Ü»8~êt~ïc‡OÜ|èàìÑû?zðÖÃ÷,®ßãÉ“»¹¶¬èðâ—”Áêöóøñ˜ËÁ|XÎ+_zûU¯|ù‹^ýšÕË^ýš¾âUøñ:¾z{t|õöèôÒé©ÓK§§Ž¯Þ_½=:½tzêôÒéj‡p0_K_E_Uc·Xëu•ãªW‹YžŒ¡Î<ƒã6d˜ò±ÊÓ÷Ü ­¸~ ^}-ãáãOÀzÁ“OÁÚ Ã šOŽçO<Î_ÖŒá[7Ÿ~æ¾{ÏNŸ}îÆ]4üÈÃÏ=ûØ£ÜÿÌÓðªfÅ'´½¡ø„¶WéGÇ‘ô®£ç3Çó™ã(üþÊß÷£Þ÷ûžŠÑ_›.áðÜv‡×_»NÃpdÔÑ!pñrAáð— ª¥é܇³ ßU9n; ìÂRgÞ}³ï |¨Ô–<üècå(òøå8òÔ“O?SŽ"Ï>÷œ+>´|h9‘þLÿ¤nÝÑÿè |è‘¡ð{ ,ê¸Tô'¾Ÿ½&t_ õŸâû.×ð -×ð¹rô¯]÷¡3×Ð.¯ûØíüŽö–÷½.Ó7qÝg¯ÂqÝ'®ûÄuŸ¸î×}âºO\÷‰ë>­ûð×o àc…n…$€lÑ0ø²GÓcX[¡áPøË„\wˆë>WŽþû¾n²ïøÇu‡¸îs•é¿c~øX~,«å;ìánÃ.t…ͳ/œa2zšOž[â >®ç½•x‡?ܦ۞µÆûC¶ÀÇJ7U]å¸jéýî°{ûXì~4Š,å´²„99=æsó3xËàÙâ`>£LÂм†æÝBùÊ4WEÛËî`„Iîµë†æ¥04¯‹ž´î´ä%¸Öj)Œ‰€¿ýÓâ¹?AC­/JJpÒp;ø¾ñß} i—g»mÿ19ã¡ O`5å¾;niðÁ„îÂÙ+ø™ßÃá>â ðü+lcÙ¾Ó³²…ׯÁÒÏl:?8:\.hØ'¯«W^\ïNÚOüí2kʰwÖvamæ_°¶ë’e CóºÖy}ìáGžxü©'Ÿ{ö™§aÍúž»ï»÷¡¸ŸÂм†æUé0äûfàß-1],K\ÁG+é@ah^ Cóºpði ÍKah^FC "øŽH˜=“0À‡Cþcø@{ÛµO&t¿MgåW<äím § äc’:ó ÷^þ%¥(=/ ~ßéXÎÎÁ÷l?»Îü„gÒ`Œ†µ'…wáã*Ç…g(>®z]å8éØ_snÀ^V>>>áöì¡%áÞËwÈû„— =¢áér/æ‡ËÓSN(¨{ý: o¡|ÿð§3'cx>S†CáO€g §a± ›Ohòp(|< Ük ÃÀÃÇ'£!Ê&†¡DØK‰|‹aW9uüo+ÇUoßú-”Ÿ[ð¿ÕÞc]0çûÌi8~:9˜—t<~–a¶Ïãl8h8¾oýoÆÐy¢YZ(¼k¾ïЧs—O€Æo§|3LK3=xf.’âÙgùdþ;ÌóÑ`0§å5)güÃét4›²l:-f³"™$W|h9.øÐr(§Ÿ^;»^ª­9õ!€V¾~vítQ*´Pø®ÊqÁ‡®ßÅøþâéó1~ûñ>ý…›_Çc°ÀF+l†nâûæ·Ã?ðœzzVø¨D„Ùl:uÅ÷]þ®áZ~¤ÏÅ҇ʅk_MŒßN|úsßõsÿúßµ)×¹\k^>ð]•ã‚w­9Ò° Æ5çõ)ǧLŸrúÖo¡ï•§uËèÅÑÑa‰íñI}zýúµk®øýÇ_z$pýY!ß <Ÿ ÏMã7Ĺâéº6õ|¸âéóôŒWüÞã¿>ÄïáP>§ÇãžVÈOç®xªKñ{RýÙâ÷ÿ˹~·7å;ö„îUÝÃ˯ÊßÀ_ãcüÞÇ;Ö€üχ‰ù7Êý"JÙÎl û-áڃΠÁÞw0Àºær¹X,äXÈeA™P” °`!?]'Ï ,(óâë¯ÆNBCXvA:âŠ9ÐNÈÀýìùá{ï»`•ó…ʲ L( ÊXȰ÷s@YPfSÿ]…ó…bû)ê÷Ñïæù:ÿˆÄ?âñï ÿÐv]ìós{\>3?ù—Åï®ø"ˇ£¿çE6 ùÝß{ù„®sÑh¼ë,4Wü6ÊçK^õó%-ûA§ Ñì¸89¥áí£»Ž#ÐðŒµ3¿>¸ëÁ‡høáGF7&· íé ?tòØ“OúÜã‹{ïæaÅ'´½¡ø„¶×‰Oõ!ìU¦a÷ó°£ùè¯Éð]\hhøA8sëáGyôÑÇ£áÇ¿yãî[OùÔSeç°3¹h8ŸÐö†âÚ^>pZ?9ˆŸ%„a×ðÉ1<+2?ß ›%ð°k?´Y»öU‡âÚÞP|BÛéÁô\Ç …ïýùˆÄ?âñø·þÍ2á30ºÐ0ÒðÙ)ÌrnÝ„y ?þ¬µ<ùœiAÃO<þÀý=øÔ“<üØ£4üô30Z=ûŒ\4üÌÓ°Òóܳ°~Cáø„¶7ŸÐö:ù¡íÝ{ùøGü#þû‹¿ÛÒÉóÛÔgëZÓw™åyñg»\–ü4…?>Ù:?¡†gS~úÿ 89¦áPø½Çßåwßñ¯‘GÛ{îCáCßs  ðç§dj÷Üñ O‹Vþ­…$ìý@Að—ë?ÏbÞCá­‘åÝÕÞPøËnœužâ+©èë©øzu<¯}:6§aí5Z" ¿÷ø“}áÐý<ê•{þvÇð‰ô¯}/–Ë¿Låã7ë3yŽƒ+¾ïòw Ÿ¾õÏ®µw×𠦳ãœ×ù¡ð]•ã‚wù¸nݼqõøÏ<ýܳ®øÐr\ð¡åDú_4ýí>XW<=Ë„žáŠï»|zžW ÏUºâÁ÷‚ïM¥çP¸âû.?Òÿ‚éOþRòçŠ×Çœ‡¸âû.~cÆá¸i‹Ç2 ã Ýßwù‘þMûzDý:|x­Má¾Ëç«$ðá^€¦0S!Ôs¢æpßåGú_0ýÉ8ÈŸaã»Ò]ñ0jÀùƒžw€uRø¤‰+¾ïò}`h¼4¾ïò#ý/œþð“}˜ ›pÁ_ùFÿ]yÉ„[ +åkuÙë#¹i‰®#!EI·V]¸1ƒrø(*ùØï‹%„Ùc¥Z½|):f2óLNüÆx„Ã|•:æE0ÕVäÃÁxDÃ.ï„éa›Ž oŸ*õõé§üŒcÓüÆ~Ý—øÈÿ‘ÿ¯2ÿÛú®.úñ; ÁŒwÁt!Ÿþímæž¹¸p˜þiJï^þeøà@Ͼ݇ßpnýw0ðÑ"?9ΪÎOO– W¼«œÐö„Ò¥wýÝ{ù‰ðñä;„øÁOáðS@h˜Âм´Ìmò_ßÚÁø„CõVwå‡õ](ô^>‘;*‰T©D»â]åô^þÚ;q~çq~ù?òäÿ8?Žóã8?Žóã8?Žóã8?nî»8?ŽócÓ>²Ü õ”;ŽK/ÔÙ;4 Ç^‹kòÁƒ”Å€ÿëÓaㆢ³}ÂòD·xú„ÛØ©aŸDì1 û\ñôõ•ô•–®xº ˵El£ø`¾NÙø[K@ïR¾¥¼Kù¶%_Í êô©m¢ã£ã%ð åÿ`yì›®˜<´\òä– þœ¸8HŽ85J°´Ú€ ¼OÃÆ—ÝD¸o9è}èYn7q¾â\ Ÿ<ï,>”¯ážÃyƒ¶þúèù½Bù¿#y쎮˜òÃxy˜Ñì(ÇU¯«W½ú€üÁc¡üu$×®ƒoçèð®»n`»ÑfSF’'à"g§>òøcO?ýà?tý”Ë_(r릫W½®r\õFú_0ýÕrxQå¿+¾ì.\å?7O¹ÁêŠßfù}ØÛ<‚U¡ ¸âʧ§†+~ËåGþ‰ü³aùݎl¦04/…¡yU;_ׯg§×®_»oǃ—.®øÐr\ð¡åà7ÄAÂa>(ƒÎGBá»*ÇOyÆG<žƒò ="#¾«r\ð4La|p ñ¡å¸àCË!à5:OïÇòÿ-…IÇÑ!xŒ9ìé)|Ãï’áÓ„šÍj»~¾áwšð—ïñ pÅhĽšð{ÿ¾óϾ—OÆj»âéØAmeW|ßå‡%Gmpj£»âû.ßyÒD ÇðU7ÌA;ÀÊ&¬ÀÊÊÍ[wÝ€£ á(<Ý.ï#¿.ßú|`!ê ÔmP” °`!Ê?êŠX¬ŸÖÏè8Àñ•ˆ ù`ŽeÀœÊîÙgž†º^ü¢¾à¡¸ê‚}¡O=ùÄãP7¡z{õü+^óêW½ÖÞ^þ²—¾ä¾{ï¹ËÅz°\¬Gß„x!žX.Öƒåb=ˆâ‰x!ž±ýæ>*‘øšP´‡ÖÅŸÈw:¿!ß"?b¹X–‹õ ^ˆ'â…xb¹X–‹õ ^ˆ'â…xv-ˆ?â¬ËŸŽ¯Ž–‹õèýx!žX®‹Þˆ¥'Õ>ýOûH§‡Þ½ÿõþ¤}Ú÷ÔNÅzšú_çGÊ[6}gëÿ«Þ~Ûî1NJ J*TF(e¨¿Ý,ÇU¯«W½ÿˆÿæøs/ ³××ñuý Wh0ï .îºq0»yóÖ-†ÚÅý¬‰4 këÓ G“†Ùӓ瞃x~ú©gŸ¹q¬Î?ù ‡âÚÞP|BÛÛ÷z(¯]ky®u=× ÷ýÊ×P|BÛ+pO&4\aÄüu4 ëh'¥• \FÃì˜{ØYRò W<À(BÃ@‘åâIF†=3§'ò¥äž¹ëúsϯÑp(>¡í Å'´½Ü‘±³Èi˜ò ‡Â‹Áx2:˜ÎË9 †Åd4žL—ó ‡Âï=þµòxx´\Ìi8žK1¼Âôø„†§³É,;Ø¡Káð—3L±Rö'ÂóVðiØ…g(üåÀÿrì_Ú_ü-ü`{ß(¼r"ž¿Ã”?;CÃü©Ü„¦áPøË¿ùœ‡á¸Ñp(|}»(Î< 9ðßãý{ÿˆÄ?âño?ý ¿»ÉïÚ÷BÃðpúº‰ËŽþrôËëþ|Ý®û÷1–£ûûuÿ¼Ž¯Þ_½=:½tzêôÒé©ã«·GÇWoN/ž:½tzÒç¨\ÏTÑ0}Ëõl–ëy¯ûÏ`¹žs=Ëåz>ÌŸÐö†âÚ^UT»‘aߥÜÇÍfŒÐ¶ëׯ¹âCËqÁ‡–ƒéKçt˜°tŸ|(|Wå¸à#ý/˜þñù›‹}þ&ÒgžêÊgæ‚éÃWêoëÊoç‚ßüùËHÿ  ¿ñ<Š+ÞõœJèó.]•ïzÞ%ô9˜Ðçiº*?Ò?Ò?Ò?Òÿ"éò¡c Ý«àŠï»|oÛcQî»üHÿ‹§¿ÍÆs…iMsÅ÷]¾ GÚù~ú.?Ò¿èßÇJOâù”†ùx>åEÅ;x¾³ócùõå;Ö˜âùˆñ|Ê+Aµ^Ô2ž/xûsöö|ÁÈ?‘6,ÏögÅõÙYŸçSÆó)ãù”{v¾Ý¾—Ÿ†­…ÂÇó)ãù”;]>#\~uOÇj+»âû.ßeg6í£çSÆp ï@¸aþϧŒõ_¥ú¯âùŒW½ýX¶‹é}úóg.þŒçSÆó)÷å|Æ«Þþý?_0âñßÿa<ŸÏÑÞÞÏçëy=4žOéu>e<Ÿõ¢ÎgMÂÎk …çSÆó)wÿ}?ßqßñ¿û—öÿ}?ßqßñß÷ó÷ÿ=Þ¿ñøGü#þÿx>åQ<ŸR§g<ŸrÇϧŒÏ\ìó‘þ;óüG<4žÏzµéßÏÌÓ‡¯î’œé±ôçÃÅóù"ý#ý#ý¯&ý1Φq4Íßwù>04¨òé»üHÿ‹§ȇڀðÑé¦Ç÷]¾ ×ó4…û.?ÒÿÂé/šÏܱ0äÀqüðG›¤òØÆŒþ;ó:Â5":ê#P4§Š“‚_ãôO§ÝŸø¾>}N‰»Êë†'½=&Ù(l7µÇO†ÃÉt4Ífe8M'Ó|šÏfƒ+^Á'KóŽû˜Ì¦®xxÜ zn2.Ã%ËÅh2žÎ\ñU9é(†“ÑtaІ©¬ø„}ìÂÍ>‰ðñeÙ°äøQ‘ŒËË_—ãét8œF³é4ÏKÓk6IËËOåiÏGœÇ:‹æë”ÍEžÁHFmkì#êÞ€¯ã}ùê×ñÐñÑñ²áçÅÿÁòØ7ÿ\1yÜ9yi14È“[.ÌGëÃr„@lk;ð…{¦0¾ì&Â}ËAïã@Ïrø‰óçJfaåŇò5Üsx•¿jÍGÏïõ8ÊÿÉcwüsÅäq+òâß_<ì:b‚Aîr|Ž } „W<Ù¤d lIàÀ«êˆòÖðœÂ\ÇtOiXm`ÅŽÃÂOÛ^šx%]Êùàp0rÅÓýtÁÞÄ;thW¬ÆòËgƒÁÜÏŽ½Z.áˆþÑP=¤_©—û8¼üíéwݺ ÂpÏ<óè#Ï>ûÄãpœ«W½®r\õZèÃŽýšÀëíFÃk×aί½» Š€2X!“ñC¢”Ó“§žzô‘§Ÿ~âñ¸~íá‡î¹û™gî¿ïÙgoÞxî9W9®z]å¸êô¿púó¢´Ò\ñÜ\âëɸ •ÿ®ø-”ßÚ¯æ¿Í#›x½Ë}{å\äŸ çÞ}¬ñœ|£èSWüvÊïo|ßê‘#Y:_Œ–ƒÃ#u~žfËÁbtt¨®­ÒøÐr\ð¡åÌçË“åÉÑÑéi~|œO†'“ÉééÁÙÙÁâÚâÚáa9Vž%ŵâÚx|ýz(|Wå¸àû–ß¾÷¬¸öCù왢ñ¡å„îÏrÁhvÎ5Òd4*ò4 xPjyzz<)­¯ƒPø³Ai­K›-+g«‹Ùôèh1ŸÍŽgÃáøz’d×ò|^rÆááäx:=8 …ß{üóýP?@¨?!–o–¯®ßÌfóùh´X óåáxptr–üÈäú£>þÄòɧðû‰§xæÑ»Ÿ}¿óa9Xî]/xö…gO¿è…Ç/¼d‘¾ôe¿üÉW<øØó¯¸ouð²[ãÛ/yåÉ‹æ¯zÁáôU÷??|åËïÉñã1–ƒù°œW߸ýÔ«W×Í#/}î5/~èüÆx_½=:¾z{tzéôÔé¥ÓSÇWoޝÞ^:=uzéô¤´|h9‘þLÇzLè:MèzOWå»Ö{B×Bדº*?Ò?Ò?Ò?ÒÿÂèïð¸âéóI86Â8éŠï»|ïnÞºëÆ­›7îÂ5ö uG<ÝD÷1¹âû.?ÒÿÂéϦ*iv™Ž,5ñ#;­ñîÈÈç”°»$gŽÁ¯EIêô•»ˆ÷Œy×D©K¶ï.Ë6=’{0—'ecžú|Ü}ïz0V‰I“ñÆ$äcØÍ«fØÀ»ã¿óžjöƒóqZGßøÁKÞa}²MO³) »xÍ žð }ÒõXk0| ¾¦íGž@Ù9>¬sõÑöö|mÇ4[¹øa„S𫊦þÚåmò‚'º«rˆwŒKª0úÌÀüsÁ$Ž?†p çv~¯¹%raÞ) Í«è|Mþ±4v/^ð¼Ê“±üæò÷ú“Hÿ0ŸÍrˆ[7ü7õ»â]åô^~Gýû„;+ßCúÜödïå;V$ö%Lu553¶8ŸöùÛçùû}[ÙÛAö|´Ïká{¶Ÿ7Ð^ð}Ûç„Cú±Ÿ{¶ÿ£}~éËßëO´Ï£}ísÓñ°Ï£ÿü2è¿÷ŸÃ[Óc°²Ç£é4Kg3¦0ÉÎùÏí:ó`>?X,ü॓“ãÓ³Svt1 Sû6Úç.ûÜÔäþ–¹™K…IRuEÕ¼»`¬À ðvÅáE–Â^¸Ážòûh8›M'æÂм´Ìþíó=·Oö¾üc6Ÿ¤­Bíjãw^ýÙâ]åô^~ îݹù‡ô ûCv]þØØdŸS›*Úçûû)vy¿áI«±=)>ðö|´Ï/ýþ–>ísÉK°y:³ÙxTqKå14•‡) MUø³û?Úç—ºü‹_6ŸöÙ¾ÝóùE´Ï/Ø>×/Ý^o¼‡þט5–$2¢ha{R%õß®{¨Nc6¶ãkèÅëê'œ¤¶ç!|⽞¥`²Â%ˆK —¾úxãzfB‰'ýàÚ#`ÆûCºäÞùlÇôôŠ'tsÑP¥§”õ¾×u{7zÞnß¿<ùK‰ã/¾—º”W;KwïàçÎÂ[ÂÆ‰]z‘½}¶¢ßÆ›8ÄñÀã/ŽB?Ë'vº3£Š¥,±ëG2Y¦nÔ)·Ñh¿7}àYq#œ`[p[mC˜¨`-lÿ÷˜¢û¨<—;ãbãŽoC‡“#Ìh7Nê—\‚Üñ®™š~·‡Ö– º¯TëÃñ˜õËÔÍÁm>€F£Éd2.G™+žá–³BÆ>apRç!ÂÞi ó¼ð–&†§j tÊÏ-øßªáö%Ì©–ðEÊtÀyy²X,ç³é’-áå¥ÈúviÅb‘±´Éx9 —‡ð´~üÆxüÆxW¡¸†>bãŠw=æãŠçý\É|Õ7Ž-]Ňàß&¾oü·EÚGx¸þÖ.„ÓíŒ.ò†¼8ôè¨{|c,j_»ÎOߤa CóúÈ õøˆÇ^§q¶`/ÝpÅ×ÉŠjñ-ú–×Ö×V}Kƒmkÿ$|¹w4–Y@þØšÿqvœžœ ŠÓñètv69›\»vtýúÒï*§ÿò¥ <9 ¶9£ìÙr˜Â7üý é®xW9Û(~CO@뀡§ö)>ÚŸÑþŒögŸ[$%Ó1Âú¸° {3Ús~ñ}ÙÓ»fÿí«½x9í¹mØÃÑÞº¸øË`¯‡.‘‚~…þ JÛdZ?åƦÉl*εÄ'9œâË«›À®gæ,=>œ§eÃÎfÓ³k‹kóë×[À «4d!Ñ?,CþG5~˜{¿úäàî>áðvû£Íïþ‰¥a®Ï@ʹcXæUÃÎß—úA†q\jÿMùz2;àjR‘ƒ³ÙÙôڵżìþëáðÐÞ×¼‡y_wß3¿´ÿEb Ú2Å—9ÊkÍYódŠ\l”# 4K¶TaÔeVj¯Ý‚†‚@Æ,Ù†^Çk ¨U5 –7pࣴ½>´-)"„¤Ð+Yê‚ïu•‹lu‘ìûdZÊ&ÉÞ=Öq"PÓÒó Ýu甇Š;¯=)·µÄÁQ»àës^—_/#Á“”á¶¶´½GÊcíkÑ4¥êðJ9¥.£dIÍ~ž÷á nñáŽRX«Aº9¡_úXu !BÅ/<@š¬hWÊê>D0îÕvC.D@$ù´ÝƒC9<@â¼eÐÞïB‰€Ú.¥½áRÜÝB³)*®žo×v‡+-ݰò³Ð´"`ò³ƒ™·ÎƨÌM­n6YDš­0cUu g‰ò³‘£{¸šac (¦# 2Œ=FìY3FÒǰe’ $ˆ,k^ܪFH!B€m¤`J“¸¨†´Ýl²l»ÑÀM9A6Çh Ö2«‰€lÖ§fW¶ëA¦­ë‹JVÕ`ã’„¨\Eñ¦8–3à$9¯j ”Ϙ%:´Èšk°ŒÅ±ÒË™p$­×¼ÝkäD´vR[_x´K„E¼G ²&²îË®-k’Z6¹êÁuM€4Y gb ÌMBÑÀuM!Óš€õš€`6®Òô¼ ÊoŽtVŒ?¹¸ætmÏD༸ÎE +¹®8OD ai,¢ ˆìD:¼a&eú|= jªs/»…Ly\5ÌÖuKŸnf·lH:êñ_aV\–¸ {aœˆ@ýx¡µ« 30ÛÕÐúÝ£]ÕÎÑÐ8‘&xˆMÂk9TSó»]s$ÓšüÌP†T‚Ã'÷ÊŽ#sOÑîªňîaÛȶc'¶kû:IÐu¶TÒ"@ZQ#_ëò%ôa?¤¥w‹|ØY6UÛ›ûBò!Fzðaº¨ã:·– º‚7nFÑ>íj–¯ Ƴ›LùrOÖ,ýå"?½±6ÚµnÑ.Sd‚¦œ¦à×ép‰³à±œDÆ6î8%Ep”M}¥mÆ\¹ŒT;)ÏÙ`o~á t‘s.…ë¦qYk»l©#¦¥Êü´§ii%jdZÚªÍæ8:nKý•b2 ›ÃÍû„Ù<7¸×‰Pï©áL³¥ç̸/ÛqÎò¯IKͤó +Ù >ELKR9Sdi8–qÍ_±¢SÓöu¥%S³ÉfÀ§íkƶ Ÿœ3ü]áµâ<©¦Wçk‹±ÈóÄl—3ЮO-¡R8þëKÛnW¦IÕ_|ÜšU >=hòª=fmoigç× ´[¼=|¬]¯«éù:­ ˆ·&@†-‹“‡¥y{L—ŽcóÞžú¤Ux««p*d(a”K×rg 3ÄòW¶NDÛs–]š6m¯C>ÄUEº€é®µtΜ¯×háêΑXTvWÕçëóõº•uçŒHÊ21Ü$mœ3 /R:¦„»ÆôYOŽN¾Þ°¤ñ£ì¸õZA‹/·‰º*k°ò­+jHšl蘪i—èw>„{ºkÚö{_-70{Ùb,‰ŸIJ"`K¦²±ªŸ™šË:¹5褀U´?e€ìsà‘ €fÒ¸FŒ¤Ê>΢ GÙfe"¹AÀ‹Ÿƒ¦K‚ Æ40ˆÄœÑÂ!F’èn14™ÄL’ý¾Ö .Épkö»˜¥š«'‰nââoíA3©û>b¸gm0)ʎѧ,‰[™‘¤Å˜¹¤Np ~º¨Ñ ^®5€Úã©pZ“dç¢7Cj’dW¾¦š$›,'(ËÕϰ~·ˆ°3@dY–bȲždö—øÉØ“fçòâðfÒmz›k’ˆÀJ)®zwÒ¦}ªv •ecÂp°dmXSrÏ‘IDÀ”\côo pM/ˑڄa£—•Ž–"hOênìf~üµE™ËeAÀs¯TpÀšj’lýn¸g enö»ìncð­²EŸ¢Ì¦†ðj¢Í"Ü]I…Zïe纃 $RRœ+,†ÞزÒ}æ5I5rêcGYä”Hh‚6v¥ždŠžUýꫜªzÕ”S©“}¡Yt¥Ù§fw­­'’2\o€PªB¯Šî3u/IZ ­®u%F=ÉÒ_†¥ô ˆrÛQúÐ)×ÄS\]%µ¨šÖÒËnµ,cêDÏ)°jZñ”I†EdÊæšÔ® šuý%e°úiëS½¿·M+æ¹sWtnr––ŠReˆ¡Ö)´¿ÂíŸ t" û«rÎ[»À™Ô΂µX2>öêÆó”6ò•Èç,x€H“˜†¬U1o;÷¬ ˜†kG²Ö†ìÈHP‘«¦/ˆ¼ÌÅÏVÒdZŒT^dåk¬‡pbmÊŽH²ô—Gï´›)g5ºÎÃocôWM_lA×y|4’Ý" îÞ‘¶„ÐZ(2¦fI² :š›'5ý…?S£/ôžòœÇÕø[¬:µ/´q*Ø47—ûÙlö¡XbPíà çh÷© ¸uf"vH†Œ_f?*ê0ÛiHÑwfWÊ$cÖfúRlâ©ëÚñËœ8×êC§|™}!ä«u_TJÏœ/×ëCÇl‹$ô… HònDù q§ŽÎ†«¡ské—09ܶ›ËHj¦ó†k@¦""VÁZöŽ?ÏûY2¶ #‘D‹t."B-bLy—Y„[ÀØ?V“Dò™† \¶ÁŒßùŸ¶ý,ÁmZ"IÄ3—Ø´fL?˜Ð’2eYÄ7IrfÊ·H¡8Ê]pÂÏl&)ü™´ïw‹Æ6z™òzMnißïlÔ¦»}´Þ05=˜U`¾…à‰Ø+·)ÆRv®%PקΤ®dÙ2ðûÚ"Ôf¿ `SOz(LK’ÐiA[.Û%mSrQQ“]¸Ø¹"Þ„? p_ýλµZµrXhxn.uôûeîåñš¤®ô³©…rjö EÌ;’åª0uÂUépì&05vÍØmâ>#õ®i~SºÛj‰nø‡² U¸Ù¬ èšß>›` àæG’/·Ô0‰i×ÕxqK“ˆ˜ nÙP·pâr®ÀɈX#3XBüÄHìâÚMÎI•×%­ø–;L«ŸæªÚ²NE€·UTñ2²z‡Ï×죶mºFnØ1|:çTug#˜Ü’V|da 3‰t.w¥¶~דLÊ ‚ Ò Ê ‚‹.0 nî¨7{çB*%Ý”bwa—aÇùô©@^äOŒô‚áÊ9a L+CÄu¸ØG””´:AìºJЧüvq—ý#Sÿ$ð9Œ¢«€É?æsV3嵎˜j°$ÕsU˜Øö&)â`M:ÇxÁýT‚L2™ÅÏ2d©$‚j9¸ bvÝšv)1“,å˜ÌÜêi‚®øpm0‚mÖϬ‰g4|t”ÂQ©´¤ÑQªh$CÕËUÇc5¼áÃlýóX kÕÄñ˜P ØäùJƒIÓ³NÈÖ~1¶r*DÍa¤5ÄïÔG³ ®KÃFFÁh×µSh2×EŒŒk$¼92Š$søóI"•í·Ø8Ag›v1ò¡% mi ¬«ä0O,þ±–ÍMãDN“ù¼<­M2ûÔl£]6ùªÚ%p¾X •ujµ ®2åQ×JM+ì ªÞ5ÆLªÑ´Ä>ÔV£9d²–adJµ®tjLš-4Pæ³¥Äפ·Â´Ð.½"ºÌf ¸;.¤O³Äèå »û¼U’“tÎ?½q] ~¾ý%úÂì/3iŸúKn‚wŒÑ2àNRÈëÓƒM ;…ÏTh@PÕ$¯˜0ªl’ßoÊ·S_ÝS>è©l»9hš4žš.&Ÿ¤šQ˜Oàû ÁÕ¿ÎÍú‚F|gÀÇ϶YŸ¦F qt·}&^Ó;5Q§í)yMÊwVÜîOp&5ë1ù#%Œ9л‡~éc ðjìëÔ˜ÅË„pk¿š€ìe]C&¦Bë<ÉcèßÔœk×§f šû RÎÚ§AÝd1Õ˜ö±‰éYslâÔ:MwŸò¦4‰xÙôÌjƒò²›¼“ꤩZK·lù®IâÝÃû#P¾Òêô< #n¡ÑäêN•­;‚ò5IýuŠÙrðµÊE q@bJò½Á)fU)ZÒ®‘.Žqtˆ£CÒtÁ£CEjÛèàNòpPÃUq©©Šs%õ×)Û˜›“.åMg¨ñÙüš/*K"pK,3²Î“$5DXĈ rr†½#bŒÞÉêƒQ"8©0©ÜeQÕ!*1›VвRcþnÎ"ƒ’ÌÉþeãü)c;Žu ™Ú÷Àmª¨ñä¬ÏAùžË€pÆ„9T«<)2Ø™15zµó¤MGf©¬­F`ÇI†ê® TªÞòÒŸº>­ž íSÃû-”N‘Î"à´R¤[,¬›xGðÎÀNá]aÇR1É0ÅxjÚ[5/Bš·UÙ.WP7ÕtŠèo‡¬¹„õź]_X¤ EYì] ‚æ¹æªPçrÑŽòI¸X)Ø&Ï÷ÈáæDµk7-4IÊOBLžîÅÏ):6Óó;ǽ'ÕtÁÎÚ?É6­‹°l}êùv¶MG<ß )ç B:Ï¥Sœ9Ä×d²&—z»N2Ù¸&À'‚t³½p7tðX¦8 Y°ãççü9I `¼€áㄼ½ET*öÆoZ©ÇT1(`®J×; nA&»Ê-Õ:Ž[ˆàË"9ÁÍimñÉ> h=´Ù£šò')é¯ ŸþB͵v*_¿†Þ„4µlä`›5Á€O_xÉiâáÜ3DýIòµ;)ôiëýe”cŠƒ ‡ˆ¾¨÷·øw•.¤ dU‰hi¥µì{È97ÜC.Ú.~¶ÄÝÖW½ñŸ8–)k’j ìjfg3¨:Nje0´_GÛš!ÝyŸÚFýíÁúËèAO…ª.òví6 ZqÞ·aG’²Ê·£sº•)ŒNU#²5U«áõ"&òAC‰m¦¹S{¨zÁ2ÇßÝ>M¶è`¿Pgc˾Ÿ¾½ÐÚñ’tºC)Ècª/¡Ù¶:^HÊHøÙÚñÛ åk”Ÿ\@U®àÞúÂNù”£-6EˆxÙ)ÕäsGvG°K™â‰@ËévM d¿„t‹ Ž¢n±M*EYéfn±ÀÀUáÓWAÖòÌ"!ƒúƒçuŽ2‹[ÌÂZÍ[ë(3aêú‹ÇÈmQ¨¢HÒny8e7aØ|âËÙž?\Ô**1›Vjj›V"ÜÎû]Ãévݪü'•ST2rÓ$§ÑHG|zÍ{Þ6-)/cnh´%yØHâ'Fúä2³³³’T˜‰FŠ?³šó=²ûÎ=¹pY“¹D|PRçhø™Ž"Œî~zºUvë„·M—]Ç ºãººrò™ñ>…Í\DØHª4në·–S̾¡œŠp;9a/ÃØ9“rçâßAI£á#h>³?9éE\ž«z˜ÎÄÉäNg~n‡º~oJÊŒY¤ì>í¤2$P/h‚Ó«øMåÔ8šC:(¬^£Êª+M9kOÅÆB`ªH§XÕ&™0Ö^Å6+•Þ•dí"Exc¡®$E8ÓdÀÆêúSQ¶$ËãQªoçB* +ÖëÈêã)þ4²× Úz³ñÖÈi0ÖˆpœšI '[—ÓíU*…ˆ …Ô:5Í “ä9œ¡u%2æ‰Qi°œºîCꄨó±RÀ¸mQÓ½ï,ÌÝŒiŒÄöö^ ‡ó× $ä8# J+ÐHò±<Åç3tËu¹ºmXh ¾†¦ÆTë¼À`îMÜ/‚o Èq'ˆç7wZñ¼ûð¼_žGu¸Ä¶ÙZ[гÉêØàù l©±^†PK~ÆŸ[µ£€fGQc†:3i0’Æ0ºY^Þ_¥>“šš©PØ|§Ú‹Û¦;JTšáú!vÄŽâc[»j#•"6ßéܸ¿„{¾Ã¥FˆO—"“èï($Êa?×]ËéÚ%§5c“LE¶z7ùùDš8XÌ9·4qx] ÝDCüìj0»êž{hr¸­ÀyÞ¸Ž?wÅyž)?Ó¤;³#i £ÛÅ,rµ›æÔŒqIËWÐ’÷^ìBóÕ[À2G+ŸÙ \rã%->øðŸ®c7D’Yà†R';ƒTÊF ÎÔÕó!’VÜMã¥Ä1B$ÏÕ¦htõ n×¢Â÷ ˆ0[ŒñÍef1»öi‡.Ö´T7·Í–Š˜Î[ÊKfŠèe[ňÚárÖ, H Öø5>:J¨&ª¬Zè(ž7YGÅy|Íé+cBtTÍQŸBrQRd€sW²Æ“ XX}[ž\A4›FÄ™]TŒÓ\ÒmÂ$ü¥´ç‰§à‹€y`ic.Z© yzƒÓ®vëᨨõã ÚûÄÔžAaŒîÀŪÊvåt¥û3Þª;; „u}ž chq´BM’ F4Æ`¥¢®-Tê£ëLç“dÎRNgÔÙÐ_'<€” §Õ$äÂ]—°Ù.Y]ÝÓÐ*©zT±;I¼=JÄøXM=T±šd›B}!êËS]ðŸ>êBæÂ0)ç)Ú7iJçKÂ6J‰ý´¦“šT?ZÊ„©ËnÚXºÉ%³é ±Â¨v‹Íð@€c@ް‰Œô®dÜØ¬ ¤f€sGŤLì¶0›3%ë1,Ù‚M¨ýUeσ>ü¨&{ Ž† xPuCÊ7$5°_¹“‚ú´]¿ûp²f’²´Á€b‰V “Ôª!­rQ gLe‰'ë„b-sñª“ÀO&õ±õ´†m@¨é‹sˆ?Qðé •R¾%´ øHeYº œžWfغ²5ؘkPŒ€Ä Ñ.WRMG( ×*Lêy>ò|äùÈó‘ç¯ÏÃ-I é˜0´¤õUí!›F|`p“@ÃÜ]XhêÊZy§-m—Ë6Ig ”Š@­×³mSðÛ²{Þ!I;gHF»õî(a3ÒOðSø )ØÎYTÌF¹ž S<*Ýþ·8LÂÜPn^µÀl¨<»Ò´A° àvî5Y6c,b~AÃÄÞ I50&ð†¹:+Ù1Š5<¿MVÇU2äq¸àиºæ dÜ0‹ö7žÖÀÔ1­»ö@¦uÙl˜ '5AÀÝñ³>77AÀ=Œk cº6ô$­¦f»æ—` Ô0 ¬±S!rÔ^“«s±ò‘vcA o“{åC‰®Þµ­˜ö€®8U·Îu6˜n¦Š50[àC¸%ꬤFN:šÇÕÀ˜À>“£º\Ûœ3îêü´ûÉlÛt5ómÇ5µû° öE*LaÞ]0…Ѱi›ò‚çÁÏk`|zÙgúït?Ñ\Ôy.lÐc Å|`*ѲôEMRƒ:õ&›aÔ## ìdK7ì÷Ýoi‡^Iç–”–²s9Hå+0Ðb{C¿L’aÛ;"ݦäí¿ .fÁ:L:×»ÁH>0]Ër÷ 4žšGWþvUµ{m d¡•7$“poR7eØSŽJÕéòªÕ1ߪN>I]é±§÷5ls;;.ÛVîÍÔâÁÓ×nÈMZ­ôñÓ²ÄThÌ…¡ðáîçR¨lŒ0„Ÿ=`$© æ÷“¹–uÌÀ5>bEÖeôEÉš¤ •¹0¥àBX]8«ÍEIá‘¶¯<º´1úŸy Ѳ_#¹Ù¯Ži·Ç~uʼgFö»â쇜ŠhT\@®ËjTD±ŠbŪs±ŠÆRkVÆÒ~iõ4ÕaúÓê5z¾†Í˜¨Õí¹ª³ç¤C²Ú`‘\ŒV¯©Óé#Œ"V­Åaû¼šàªGÊ™Ø$áìaQ¹!À)áº~wrK-]$·°sÏpguâÿ ³Ùùê‰7·¤b£ßÓåzÀ­R8ÊN¹²›}Ê{¿ž[L˜šr‚ôɵG٬ʊ‘kÕr;í+ID`CEÔî©ù@Õ$Âú.eËFzÉ$Î'I9õ³„0[‚;êÛew«½ìØ w’ˆ~Øx°c§*Ÿ¤®lÈþݯJ‡ÉW˜ŒUR|jO3ÕØ1{ |Ój®šk{u%ØLÁ½£Ì¿´'°,0îrê]Í%ây!ò•täØVOø¬ßê"€¾H•@ã#'aþcÛ¤* y²Í&0AŽ…™¾ÛZ ¦íß]\ã+iiÀÔX2Òå%^jƒÕTŒæ,{÷s%hÕÔ˜=~0Ög™h¹Lƪ«?)z$P°ŸÛ´®KÚPu·dã¤RžÂ…+Õ²M'7?èmUÝjÙãÑÔŽ²&×2•Ô ÙhKÔPåÊ€Éü¦ãÃØí<Éý•Ü›´éØdÆœ¯+'¶H2cv¾ö­Ø‡†úBTë4[M9"Pãû2“¼V».b-@LßÂêâ im.ca«íVJÐG+jd•Jéqåºf¸©±”ÁEwÜøXß<—ËBs窡†9…ÙÇ!²fhk7êÕ‚~M hý4ÄÝ'wÄ>Ž)•5n?‚Éî*¡ šbĀЙ¦e.avÃÎô|Ý!Àý¸éšf×z¾ÃÚ\.j욞ǹC÷S!3`Na2yqdv';ºÒ½æPb‚‘¤&ɹë¬ó•ëvvzÞTø=êy~þI*ýá" ¦P›èT‘ÃÍbqΘ¹D’5àP¹ç\Ë‘€Ø•'nOŽe Ÿ C“’j»@$‹JC÷f™¡Ÿ‘‡k`ÌñBÀ­MXj7†¶š\A£Œ¬ËlŽG® ÑSäÚpDkåmn?sá™Yi»Í\ÙOŒ#ÍÀ†#š¹/¥&)dÚj½.fº$bÄxTFõ!’ £æè0Œò14¡ë Ã›ÃDÍèÐýxQ²Ô¹€Tþvlh9^TÙEŒ Æ”é*p•É’¸'>Ê ÀÁÜ0æpãµÞÔz³«Ÿî§x5nÑȇ“TüJÒÄëÌ=Á"†Ôå`?™ÊÇÎHÍ0>u¥8v[ŽOì<ÉM^¦k©€ y×|»@zžŠȤÐáü¼Š5I]q‹ cü¦Übô׺*zm–öB9Ì®Ï+B&ìÝÌ€ªéwKŸ1§3©6Œ;MÀíú̓Œ ê†að”?¦Áí„s WŽÌ ¯ºçªfaëÔ§]©˜¬a»’¤ s·ÖÍáåXÛ%’D ó;B³Ö¤,©Z XZ–|'&˜îÅáaÖ¹¦©YÚw“Ÿ‹fé`²¥ØÑ@.×àm¥Ó,‡#OqVšNšƒ $…d’àç¬h’ #âm-Õ“vdzÕP°öš—¼®ŠËppú•Ÿ›Ù½5ÿ… V-‚€&¬hiÔï¦q[“$ f³Ð@;ëÂboÀ&]øˆÛ¥\’…Í9YÄT¹8JU9•JÁ€¦¥)€ #b„z”hxç¬I\<µrUŠ&˜ujÇP2>%©¸5} ^Ò]ñ‰—çDÎJ2¾P8»Á0‰ÙÈu&Â2ɰðÍ*À­Òi¬ ¾þ‰m]ÄÝ`ôüܬ‚¬¬±q—­¼`ÀªˆtÃ3'5Ò@¾çTÌ=+•2ÿÒìgé³Â@ÿ8yA;¯ZM`Sg¬ð9øˆ°á¹ aK A§.ºªDÀœ­g8µßp’.+E¹³R!5V*¦ÞbnÎÊ}ÄεñºÀ- |u JmÍõ*[’0@“´ÒLmŒµ“E¨!ˆ¢–ºÆüõ¹_ þôEdñ™[šj˜sT­u¼Áz‹‹*³špK7 pÈ:âÁ –#ëdÛ¬+6Y‹@LZ™’l6ϘeÓ\BÀ-*E ‰>Âî|.¡'‰Â¬ÊA©ÐÌ¥®¦#Té%¸CÍ3””@‚>*Ph¶45ü¢ædd«0rQ A¦tzneØtLÕØñhY¨Çõª µÁê^‚¶k¹„,#|j–#dÙÏ”ÖÂåË”å ¡61ôj 5¢P 5[8\[ätëʳ u•‹N’Z„š{«˜™Tu‡˜ÏªêàóLxGT%§)Ö"`Ö%+­lÅójÒ ^£ 3€½¬¬Ë ŸÍ@ÌË1>À^êò…Ô`Hò'HzLÝ&Œp?¦èäwûìÆ-V ÇÄÊ"qÆÊæ0DÄO3)5·±mq{^PÀôò™k.‘,V²X6="YRÜý¸9}Hå ôžàv-5›l‚ƾ”ÃÇ’žÆ©„Åè@´Ÿk•¼«·1ʈáBú‚¾©ç÷@½¯¹rO[ªwE“+¦Qz7ž ¬ß@ô*‡"œ`v)ÂÆ ²¢ÍÔu"3@ó ¡æ1¦¼›UP­QKM®”,s3©6®Q –,¡kR•bsæj7ÏMùÃŽç4åsÉæynX=Ÿü¶^'"uÓ\|÷ ÷꫾J"VËK¹ š„L¿ì14ñ|„Jl+P͈qÏþ¹\™­[íòAUâcÆ´Â0’Ίa­KyÍo"à“$|ÝÒém®v…ñ9w&¢œ5øÈ™ù±®øy/Äé½®´ µ¸dq‹ w–LʤÖaÀá^ŒûÒOkO’–ƒã)H“;¯]0?¢QW;±³„yÀmbp‹2­å`³ä¦*"·\·Õ¾ÏÜ’nÑ&‘aŒç¬‘“’ÔRrX®ÍVs¬$;1 NØx¬äu™£Þ†ô^7вô,ÃÝO—{²jb—Øv˜è£¹È%Gjë¢vÇh„ˆ§Øbšp-lQæ5 ߢ ¥1®{øÚ–ÿÒXUæ:©Ë%4³¡rëìå2sAëݦ|Ñ@ryÖ»}žT’aŒ7aì.–Ƹ9Uí2LèYC¦fùLJó%Rž½ßׯDɬ£Ï{]#­¨¦¯R !–• ·² |’Ζƒj“” \Ý¥1Ÿ-ú5bÕ qÞKc"ºÆa…ïb ÈîWtù*]ŽDs¡gÚæ§õo»x–ʰ¹ÁSã)CÁdàü\‹l¼\ºòð$×8¢-À»ßö/zPÛƒlã§|>¶±9½m7u%ÌÊ®å7Ow:úr­¹IЫO8ÃIÍ™ùW7#óAl >a`”„và iØ_çÖÎâE'Îm¨ñ´Ó áܸSàÊ^ë¨×&ÔÜ ïÊ~±3h)Ëk´òi‘èT–“¡u'Ì<‹E,æ•bšiÎX8¥E©åX’jfš·zŸ¹™Tsg‘4ÛY¤œmS*³¿ÌùcŠsÏ“"jêåøL©jêŠ(¥dãX 󬼚)CM’Ð~ö;›pÉkþ|^fÙ0#^Okg%-¬å ‹zg àZ›–—yny>Nš4‰|,®éI7ó¹6VÁ9}ÀÍ´v̧Øjýå½ÍÞ~þ‹[¬o?¹y™Ô²„e˜HṮs/ü)Ô—kŸ\íãX­ójŽa¥æ@f˜F]å2MÇ>rUœƒ1ª4MPz¾_¢®q`9Ë3çfD¨38EFš-‹* O2”À;BÕír QV¤³+’SÚƒ {6¶±¿ê04bÌ$6  ˜£±«ó ´Íó kVyÈC3°G¹P-'•AŽŠ8!N y­¤kL‚þã˜ÙsÍ<Š“ÙÈÅ_RÀÌp2×¶:ï&FÄXjOöÙIñ wvaŠpë²Þá¾—µcè×’,Æ-:pD Æ`ÀFi¢%—ˆ©òèëž Œf0˜c(15m»äh« ˆ5«2g*ºn§œe$ºÂM®X½±ír¨u禮 ÇöQ¸ ˜(ó¹¼y°«=«XšU”šI"&1ŽœhTB·®C¬n$2+õÀÙŒ©ÇP lHºªtv°c#†"v1¤KöyˆôÈÞn¶n‘50»?D jêLÔ?BÍZ;øB'S8€Ô]D¡Õ  ê”hl LHDbjX#˜XæÔÕ±…fHjJØD´Gáy˲WMÀô'X:Îí= -Õ`öÃ]ÕŠÁÔg´ñT½‹1Ê@ýj¶óóÓv¹Ä6J—·ê†Zƒª>À)·£X(išÕfÆDU@ˆ\&LœÕzÎjÍ‘z;~lQ>ô1!B=ÿU„5GFË)s†ÊM“J“Ú•vÒËÊ ˆA³fô4GX%P£¾â Õ#¡hءЬêP5åDByJ ýAŠjm-Ë ‹.&ò½ÝšÈï¼ûHôæÎ‘.1MçF²šMbfv>'ö*̺š+•¸MÄו¼æVUJËד~‰þLúNÊr¸“ùxTšTb£]ÿGŠŸ5ÙEØç9)ú+×SýuAl;—hVÓ¹;»‡3ÅÝ›\ï6èy³.wÒ:åwëìØ‰¡ØÇ\üÎXX/§&`)Ð]—ðN•÷GÑj@ÀH§»w¤Ã^»çŽåãr¤và vØú<Ï(ÏFk¦}ñ­¯5À{E¨ b^0¡2ÛñžVB ø®^«×G™¯ç3 eyOß>ªŽêŠPòÕÏtuJœµ’7ISÚÀ”©ëT{Al]Ð& ´×x$QðáCAF˵7¥pª¼¤ò ‘¼!X¨*Öx 'IT1©ñÄAj¼rqø’ÑW.Ò*T“Wktfj<.[(Žñy ¡´¶ûtŠÙ;5Ì/zJ­0®¤ú’[ä²I¥3Æ’×hšŸ¼· hÔk0›SGUvkæ2U“™T°iâ9Ñlx7†5 ”%“nr!(°G>±I9È'³¦Åb@G̘ùÖL-O 15“bsvlËI×ݼ!°@ӷܪR2¹vÌW„›3qsJn©ËèÁ‹íÊT7¥ªpªôß§>=H<&L‹®ÜY .Lð©´ÃߢÌÐS¥äèo±å²*Ry¹Yj*•áu•^ão•nÁßb¾†þÜm”šIÖÙŸ8Üt4ŒÃð¨15-­irmÀÙäÎ'¼¦9W#‰¸J€‹xŸ\Ö@ŠWE §BÖÆûL°ªÓÓÔ'æ\N¡Ì”L*}P’ÙÅ%`&¸f%¬y— ¼¨åNžêÙ1 ²³ùåº ñóœÎŽÕ¤¤HÎÏL,h„2[jêäÛ1»©Ëåf[²ÓŒMhxáf”c‹9L¢©/Þ_ b˜Ñ’„ò6•ìÓRñ³‡Y[‚§õ·’Ž?qúÖÕJºi{Éb%ÔX5gæºgWUÔ,¿Z^Š„“¹ü*æ ›.¿š‹­‰û|QËúil;VÔµ¢ºM:o[bW²OŠs"ëtIµÕk&GÆ~¤Íwjl ›]‹1KBÌŸ0]U3°#¤óAìBHgN+ÄëÌÒI '# à‹GМV¯<«2V‡½ÀçÜczBÍHW@§î™™TSf& rcUHÄ`­.§w¹!"Éæƒ®1„ÚêÊqÛQAs®¢Ó03Aœ)ßÁ9s‡9SԻל¹GK?ýmÇ Zú©Y&¨‹ÙléÇæÞ¶V€i½# ô1¶i³BÏ÷ÚàäXUèí’Õ$ðèí"éÔÎÝÒÕa*Æîuõ\!¸é´÷çÝA4dì¶–@‡HÞfê:³ÆøŒÝÊH½á`·A vHÒâgÚê=tíZ±¬L6èâxåõ(>,/‰×«|2œp^-†ÞCwv!À"û†øXªˆajXsÌ\üñèNÈ7“xZ–ÉœD ŒýY‡XÒÑËdÀ8Z D+áË%݆ˆmt5‹’Áì*†™PÒá’tjY°và¼q€“ºjrH ¬Ù³¬êŸ*Þ‹­”ð4q䈥»ñôeFèc*eV8ÁY ³§»C¨Š>R¬:&ÔUæ( L G1Åz59*Ãõ ì&TIíý)>P±YZ-—lØ´Rãm2",â-Ùmï YW®Ìn"`¼œ]i$‘dD Ie|-5ÊÙ,´FYC^#Dk¯7Y‚¨Ñ Yú›pMÑz:à3/¨¦išz¤¸ÉîÝÏ ¤EmÄSc»ò º}²›³@‹õž µ,†íÇÕ¼ã­"É€"Ɔl}.߈œÃ»#„U)_*1iÇlŠšÖ XÆÁjPÐu‚æ¥ùN ƒô©|¥ëó-ÐÇ|³†>ú»6D@ÀÔŤ† ”I A(S7­kßÍ]}2 +ƒáuÅ{ëÔú¶n䡺…¼z}8|š ¥ªüiÃo©vÔüÚo=Þøèù-ijܺp“OSºl‡þ­§»ò5ħiáEΕϣ¼”¦ý-éÏ^u ÒSþê‘®ÿôWú *CmwÑ\^È|ëBÖ‘©ÞO¢NšÇE»šöŠá)ÿXâEû«²hþòÆy-Kžy’¨8ºÒ4΃ž¼¾´p×§Òıúa{tX+®íÖœ?2ÙæÄ%Û®>Qè Ê_Š}@ÓÓTùÍËLI¿¥â·Î—ГÕ_ñ)–þSoÔ*ާæ©Ê‚:ðƒåktax—é™Ô_œ¡S¡Ðû,å|´ÎªºG0oYt8|ŽyrHÏ _BŸp/?k¦_Rgr«Îa¸¦IÅ z»œ®W‡¾]3É_öº*:–íMÓÄŽ[Ùh 鋲‚ª½ë‚—Q¯OÓO¯6²¥­ëÛÊðbõ«åct>ñF»SEoÁøžñ9 êëëÊ > IÆëÌó„ÿ®`ò<+y"/²ay¾¢ü °ÆòVx—±%ïä¼ _×f]Æ =§¶7IëáiyVx­núíªßUŽ5‹öå;ì"!ÓÕw½nôƒ¥i©E‡Ög´Õ.ÓʸŸ&•.ÓáSwyu´ÁOž(õ°ò™îsÀØúÒò»HÒ&}má3SG§ÆòS©»±\Úîj<ÖÛí…oŠã©‹âÙ$O.þÖ?\_Ûô–%¾¡¼µ¥-k—~×ʯÕM5õzãßLR¿Õ>æo÷l#-ùu¬Ù8m¯ïN®Âê¿kð+Ôòu;mÏÛBmŠÔ6Æö¬'±ÂºÛÐ4ÇAZáïjos?¤ëÌÉ/f\:.oã* u±|Olõò÷ÛG£q3èüÎÇ`•¯í¶‹nsøLØ ·%0Þn;“¼ÌÖâ6k®Ûƒ¹Ë>Ôê£å§º]T•ñ4ä(«4[„Pü¼çÜVœ“Œ~ Ô%N‚¼%yŒè(1¯Àï _9/•óm<Æþ‘ósÄÎ}Ò”ÌßÑf]¯ üðòÊ0Œ k>&¤ëê7ÂVãÆläu^WaÐc̆^+áa ¾ g,œfJ™ ›l^›Š2‡rjY€u[vsÆj^”0ZỀ¸ÂFo‹þáó½„Eð9€µ?ÁÖ-ªùu¾¬Í³Ëô à«|%ª…¤3ÍH™$>«üðɲÔÏV% ü£ôWBú+!ý•þªÂOÊòÒêwVÀ'EØŠ÷ÖUjy0ve¬hýŒß œ„—aäÕª~—­®Û8† ØLâT÷•;Z.ó£¤~òÆqH |jËSu·Ùª9TžH}–£"Õtyš{’ó ”‘¦2ÌË£~ªK…¯"ËE~Yw9Y-rì¯íf»®O{“û´¶¹æŠ^LɘNÇ#¥¼LögšPhcƒâ+ zUñY»Æt¤[*|'uüæÖó¤/ª¶¥•Åξ’ïÊŸW¨:AàWoZ|K*?ha§½jŽOHCVnÎÆ`”ë<'O˜OAæ×|ÊJß ¿AEÿTèmËÉÜ4¯æwT.2Ì|Ü'ÄËI¹^J5“ÿ&ºÙ{“ÎòÛ´#èX‚í@>“ôrÙδŸRœËIø”òAJx$²k™üîæ‹Með‹¤Uj÷kk ªþÑåe3UÒUûÉw¼ƒ°ÏxGË[³1É>Þay©1ÞÉò8LfÔ¯Žw‰{¼~¶Då#*³y*y''­tjÛëvïæÛ姚ϳy6‹Çò«tÜ#±æ°žûÇpþ.æíd>¶f¶.γj>¯Ô•’r%NŸò7ø²Dâ ù°Lx¥Â— ”ã¡WéX(ÆÃT]ÃG[ŰW4Z7Ì'äg45â—ò]Ÿì¸¥5±“¡ŽÉ`RT;Eº†2Þþö·ñsçÎâío_×ð{¿!íãóÒPðÛÞ)ãß yÖeøN ó¶wJøNU»ðe^ˆKßzg|'}ë8½óV%¼få’:ËxŽË[Lj¼}CYP|ëyXýe8TßÂ_^Êhiðpiil-y}dROj¶«²÷ƒÀ9ôoj̱‰Ÿ´ †#ÀL&Ó¬B)›N&,~LÆ“,Íäš­Z‡Ô]6ým—;Åø˜…x ²¼Àß)ó]äÂ.dñ•­„鲞j^1Pó³µ^‡¶+ͯÓg…¤E¡Ó‡ê?†s>>ÙWÖ>×l<½N=x8ãøâœ±*ý1åþ8ÖFIj]8˜4´ÜÒF½=ì›÷]ª·ÕAxˆ/ìhƒïS!ÿfû¡=d^R}Ü|ã3¿øgÃRŒ-{<ËÏp˜‹yÀø /Lü©ÇàÊ>OäzÊp$ú# äÛl8¡¾ k¿Þ)ùð÷ëdøìñ;d]äNÊÓáƒðˆëºÚ+0¾y™}gÉËò”úNµÖ͸Sù™ÀvƒOr~Öò2³ïÒ¾;/ãÞuÎÓÏßÅ#/ëXW0kkÞ5)a¬Â>:¥lûl0ôÉ™KŠØÚzq>|ȪÆi2ÌgÓí/ò­Ø'€É2ù:%ü(Ï*X.—º}ò¶;çãß~û;Jû5¿óÎyñÖw¾cüÖ·¿«´›y<ÄýöÛ~§´»ÿÎ;™ˆ‡¼ ¶Lƒ¸ß~ç»ø7ù@P6ÖóÛå÷Ûî¼C|àH'HÿmZ_•÷ÎZ†ýh_Éúcìkܼ©SPŸ$|¦ÕÿOu‰Ô1v½Bõ‰m^–¨kBwÉväêzˆ½Œª|®ó3²¾!}Î24'ò(z/óp^õ߀‹2œÁºq>Vé^­«ó±X·.r i¹X/&ù$œó5¦ª~ηb¿Ù2Pö¢d€#¶1ËþIS¹¾‚õ «¶Hº¤…íwFêÉ0O•ÎÓ8Î2l?ÔïÊžåý•9Ö! ²þŸ¥ÆX‚ã‡äÕ”øÑS>F¤„¦¯Âø%DZ\ÿôñ…”e›Ç(|›6ò-Îm¨|ð±OúÑÐî×xË"c¹…oÓŠo±¿r·/f©ƒoS·©…o)¯Ò2R·ƒqB÷D(¼šj|›¾M=ø6oà[,wMø–Êoò·šÖü¡ózf+V¶Žu9±EXìÛæ¿é˜a[ò9#ûMá ›7áãhY·ˆÃº¡ùÉàÛõ\ƒÞni¯ší¦e¥tÿ3÷ŸfJ[*ümsmŠ¿­ V×|Œ…oÓ:)”öi´´õÏ;«±ZÔõU6ó; óÚš½ç¤ír@Öe Ó¸TÛS>LǶ:šü’²Lu¼Wä‰Ê‘×ü[·6™sm^c [Æd1/“s·ŒÏƒª¼|¾•éóƒŒÏ_Åå­Öÿ3²O!Ëe>6,ùšÊùzJÖm”o|öÚa{èkA±‰ØU¹¢,‘GÁ5%º8e§Õœ½œó6ÆUshºVS¨ßYåCá> ñgbŒ§íOqÝÚ šƒíÉ“\”pÁWp°=üwE·Úýî~”võ·èmí(}.üÆgÒîÓÖÊ©.á´/¼m=”Æ#žu¾›íÅÚ1ƒ¯eLm¯²ÆßêWáã±âWA?úSFøU*º°œTúMB|( ²gÚ7 —z ÎË:gÒË!öÓ€”““¹8]YyrÝÔÔçú*éci_ËuÓ×& ½)Æ ){b½u/##6~êðrÌrä§6_aþ6×t…ÞF¸1“wÖ?l½7 ˜¬•uÀZ0Øð̬×ëʺ¶…Yµç†ãF÷æ3ªqUŒ]0àð߇°^,ûGØœEª>çBÊbB c7´w1õ Û4ãÓtÜ´½´…‚[ža`gÁß¹“ôƒñ"ý\MÃo>Çðyµ­…ÏïÈñ~³úµîs¬£ZÃ>¯Â@Çu®æIïTÏrXð‚6ÞaÏb°ÓÎ$.ç›âeeåoùlü†o¬‡­±W0X^²Î¡_2ø¦å2Ö…-¨lY `eá‡÷Ï:ƒuïó„¯ÃÓµvëâççeü¹H£ŒSÖí^WeŸ—ùa >©~Ã÷ZÔËË>Ç:’j?@ùÊ‚ ¬s5OZ¦­K˜„àïöàx%àïgß6‹%loÁžÂeq¼xÛ/`à;ìù⪯Ö¯õl?¶e]þ~Û×›Ux2zUaF{øf<]¥•2t~®ÒUò·eÏ®{u=Ù쫞ÅPƘBÑWðÉIIÍܑΉПc©êgú|'„Ÿm6&4×WG2~a=ýÖmi 'Ë蚪‹ž©BÏóqù{¨®ÉYÛGÖtåxDí­TÎY²Ê—'Ê“cmÏ-hùœc0š—:üp„s± ËN”g¶Õç½S]£Þªöõ(û{hzÂueµÿˆÁã™$"œÈ=DIªí'*Ãçäy6´›v]Õ}Nö81ý½–pùZÍÃʯžýJLg§i'xAøNi;6á…v¸ÌÃó!^Õ8Šã©ØC%öN1Vá߬¾5ÿpÅó¿«ì7µÒBé8¯`*ýsž±ç­à]&<¼Qÿ¤-ú'ÕúpÉMx½)£•Ä#­ÚŸ ­ÃâÁÆaþc=oËèÁ¶jJûÂÐî; ‡CZùÙ•ú·´+u›ìÈ}¨¾}mÊi&÷±3¹§pŒ6*„ ¶ÛÖRžÑG“ÒúÉœT؈ã‰|vº˜ý##rîÃHú”Š‘‹Æ2œeeÿb*|BÔ^$zܰé}l|÷s`.?¨?µ?X~°ñ3bã¥_õ‡±_‡Úøjû¥î­Æ=ææa<Q…/ÆB§+ãURù¨]¶>ÛÿcÂt"|Ö8E[ç~v[߆»Þ§IÊ쵉󴲇ªÏyeûá÷°×ç, Þu'-a²Ê­Â¥^³³;×ðxfÿ1û`Ö²ÌuŠuð” q ©Ÿ}¯¹=™Âë&×jž´ÂçódÕþÒòû] ‡j_)Ň¿ÊR¶¬­))»,ïNZ–Y=SÆÇþŒZ‰_•ç]æŽhëšÐr]Õék‰KU>/—½¸!¥}Áhžp›5ýq.Ó\ýñ‰ì›óмmç¢ýëT­ƒ— ýq.êç´>gýÁlp ¯i%ø„ïõÅoh3œ¯Ãx¤Úû‹ßŸ¿ ÒÖÕxTÒ(;/GïäëB úÛ¯?îÔöGfí;J`Î3®»Ù'ÅO&ì^v"ô+ò%ŽÕ2a×$ŽŒQ ƒ½±nSï¾Ïf7螓р?O ‘“Ñ×ÝØä;å ÕrQµ.fÙÄeÜn³‡"ጹê™¶ç´Èå3 ÚšÏdÄ×|*œÈz›ø6žëφEªý©íUž£dúr6VϨÈu<®t¦’/É–“iµ¶”Yó䙬{€6u™6Hø<#xÑ}¾%ÁáfªgÝÄ|'%p©ºV%u¬\ߨt7[;TÓí{ ä~$Xkйðïç’^ù¸Ïs~Èôäº ¯k0”ø8"ö"Èg‹a Ö¸²êÇ,A·q­4dz©Ôg§qÜSèT^ƒQÙ¾²&%øœÒ­ÙiÁ×H3²öZTkF|/¤³µÅœí¥æ¸•Ó)–/©öª­•$äwE›ŠñY»Ä ef¢ýÂgÇÇìT}>J^ p|Påw]Îq—}2u¼‡çªPæ!ü¶;{Ö ý¾ð,†!þíïäi/øaiw’âoÏÆç~cü¾SÁp©µáù®ò÷úNVèy†áP¦Áó] ‡2Ìê/Ão¿“°ç¾à9/8/ ñzg:c9ì;ååßy{!ê¢éCááœ)_å…v x¨ó‹‡çÂ0Ìà!|Žt©høÎ ŽÂcùë;’6ç>²6®étüÿgïNf¨ÇïÎî>Ïã¾%w®û ¹“£$$É}DÈ‘Ür”›‘$IH„IÊ¥T(QŠ$„DÎÇþßsfvfçyôý~ÃëÙ™Ï=ŸùÌììì®þ\/g.]Õê-o3íúšR>-]½}ä°F]UïÙ×·³ÜgõºëÛENGßÎòwíËm)³o3½~Ê1OÞFò¶¹®¶§¼Lï7bß·‘cYÊŒ3ɇ@Ÿ?çOÄÉwCqÌúä—³A–âÔ;ŒäåjXµ-ƒJ;«á½ZX§6ÅüÔçÊ™™¤†1—ká|7Ó*FíÚW{o\¿–ãVÿ>ˆÛÅÒf^íµ±ðy¨Û,¥ú«F‡þSýÕè³!ËômÂýÕíQJjûEhß5û¦e¼°¾7ÒnÎ}ÓxJûí¿ð}3˜´¾éqé›Û'†íó”ƒÖ×Jú{I7mË£HÓò\¹¾4_gÍû¹•Gm¹O{4ÛÄ<~˜¯Ç‚ò©Ö×jAý}BãsX~·ã”C»Ëiùå:z-¿a¶‰×kÍCyݯ˜¨Äõz¬÷Zª߿ê¸Îç3¯‘Ç´ý’pneîÏÎë¢í[Nç•Nù:]«ˆ%§tóIf}’Ó¶^!?M²ËÍ5£pím”å_jÿ¤÷'û1M=ÊçorÜ”|qb¾úù»sûDy,J’èãâ:¹ÖøáÛ7RÛš÷Ä9—Ë뱯£ß>Qn/áøëvnèÎ åó=ó<Ñ9-•~nèQÏÍlí`;ß ù]kû÷.EyNèZûç­£í#NÛÚí¹Ö|½bÝœ–E¬O’Îÿ¼Ž×%ý;Ÿl}BÒ?³e_3Òöš÷ë:>ºžß(×yä~¥Ÿ›¥µ^¯qüÞ-ÒÐïG'|%|BÆti2Ƨ5Ç#|Z!}¿Ø'Ï åôï‚ó©yx”/öûã•{`•W{qÞ´fúfâ|Ú¼Þ6>¿œœ½MÔp¡¯W¬åøÍk^´æõ9ùšbÀñ<ÖcÙ—ããô}Ô|-'†‘ÓŒ3ŸËaaÚÆ’~œǧüàG@¹OZYL+¦i¶MÀÖ6RZpžm¶.¡m”àZ•kˆ.¯©ÜöSõz¤õ1>.éû¬œ†Þ–êuAö&áZ±Cx­$K9%ó¸ai;)­¾oŠáã| iõ}ÙkI_²å©ÍGh{õÚ©7Ò>+yÌ}ÊgÝg£/µëâñ>ó½€4ÊûòûövV÷é°m/\‹×Ú.ìx)WS çÚD»V¯ïïIoc¿Ñöbø8_j£íÅðö²óÆŸGRêþõ Ûkd¯í¸æ6&˜Çmç1!4ýÆË0σéË•5îõjŽÇIû}]÷1áÖÑÏQ–'%­$Åu»îèp÷j×#£n£»ŽEý½Âë™hÞ/ˆ±½¼ú}CQ\×ø7ë-Šåu [½}.¿¡¥Õ?äZIT}+Éçq1ÆPɫ܀¥¼öûFRÚÄñý 3ÏèúD”}CÒÛ*Ém"_?¸-ïGÐ_WËÄ{Ô÷}qâkm{[Ú‰q“~/ƒõµ«¸ÎöœÀÚ=ö~Óû”nç¬:·ïðYŽz;ßð+ÇʸÐ×f[êÇR±-oø}i­mi½/ÞkÔ×xÝmžC[ÂýÖy[Ýôßž÷êóö6 ÿþMÒú­[ŸµÎ[Ï›#_;÷혎‘’sþ®¢¹'[Ÿô†}O×ùsœ¡çizÿó¯¬×Xܶ›×þZKhßó×B|¶þCßs™m uñÝsÞpu¹Õ"ô°}Üm?¯÷¸íÎcŸ>†ÛØûнŸÆÞgÃ;SòüÖmß0Ótþ^ªÐk Z=¥pÛÆÊk9¶­“œ–ÇVöHá¤÷™ŒsÇó§ˆI:·púœr¸eÆr—ã¡Ùµë¾bbßöÛÒ”¬y:µ»×alq+£uÞúšÔš·~<¶Ç±í›þÐôÍúfÌïÏšQù½y°Šé^¯Çk|:kúTþŒéãýJÐ>÷ìÕ¿s#äsÏúg#ìÛö~—à<ŽJ~ër¿ö9O‚W?×°ô/¿ÞºÜí}뤾÷^¿Ûû!ÇHẂS_ ß—õó2ó¸§.·žï:õ·r‡†ÑûZh?T×™}1\ÿ´§ú›ÆFÛûì¿gì³lK{|Èû)z›k×iBÞg¾Ì«|1¡úý³ê2áÜÕ+äí¼-̼õ¾®ŸcèyG±xB÷ƒyný×íÑï÷‡ýA²îÑï nÛÚ>^‹ÛÈ©¿‡ß¿èï ¼†Ñ`ùõŒùZ[û>P¯6UZ9¼~<–÷•°îc»Ã1Å­|îゾϸí;â¹±ó¾ã”pß6ïάûŽWÒïrê¿êç›}ê˜nÔ[_tÃ-ã—ù=¹ÊçÒ´>cù•0ïƒy;ŸGy_’'ú}Å.Ò¾Ý9Žò!L¿'dŒ¼ïx# !Ÿ‹÷šŸ1>ú9¯ø9F5ðŸÒˆÇ’Ðï½×ûžÎ5Œ7hé/^õ·B-‚’þûÈòu/Ÿ?HšAå»Ýµw(•û©ÔßF–ÃÄõïXÎSä{¤|AcYPù<£¶.¨ååÑ?˨†ñµ±=辇ͣÜ&ÿPxª@¢?þz¼ßT>H«ü†»' Ü¿%s®³Ãv¶üŽ©k8Ûg‰õqK|-a|öXmK¯Ûu@%-§íìü[%Âu)ô;Äy—ß­ô:¤+é¿}«–Wmûïa ßÏï“¿È+ǽêíá·<ªŸ©MÖën¯¶im+ìQ¼¶ iG¯X/ɧü~„±¯zµß1ôûnÐe_Žrßv[nìóÂ}’Úç•£Z¯ì?ÁÐï¶4–ißë¨|Ÿ¤6ÉÏåïŽT¾O@yîSê”Ë]þÞå7%ƒ–ï¨T¾ïÆ£~ÇŒò}5]-3o­¼ú25¬GønI-=åó¾Ú¼Ç,§==eÞ£„U—Ý”û¨¾ÎüMM9œYõÞH%L¢þ•ã{--aõïÂL4—3©ý3ªß™w §ÿþ¼Ü‡Íß›~k^ ‡‘—ëáÄ0aó7ßo‘´ûDÕqÛ£Ÿ›„7=úqÀ£ÞÛ2ïõÇŸ¼œtÕã‹\%ù»„´ñW+›ùs}\0çõã€ò¨… ã¬z¯®G˽꽺ʼ™¾Üµ}×H_ëöòoRé‹û¢¤µ©WkWy^>>IJîÖ67ò±Fû}XoÀkžŸÊqôãŸ×Hëê|0žö—¿ʶ͔¶$–ž¾~,“Ó—¼7ôíÛöêÕ« :½oËσÂr™÷R¢BÙ÷®&&x<7‰LHô^Òâ^RžË.%z•prâú€ü(§Íº««FW…¼X.Ï{¯&ièëÕ¼åç×Õ4®êËoJÆ|P« û·ï²5¬>ÎÉϯ_NT–ynjßÕ{)QIûÒõĄīf:ŒÒM¹,×å~y]i£ëÊ÷á^÷_¿ìUË£Å5ž'ªi_WÇoPýËT,OL¥–ãºò/‰J:bš‰^u,ÑÓ“ÓÒË“œã Ñ%½kËÇ/¿1f„?†z­i8üV’ÆÞ~Žc¹¢õwÉò~§rÝÕv×ß/÷z­Ç8IòÏôôýXOψã5⣼ò uPÖëß“¢Žoj=´/WQ¾gCù>ýsZÚQm ã½´¶6ÏKŒï3ÖÞ'S_9ZÆ@ûsqžfyo-|åúFøß+ß?"|^QÛNâù—y.cžçû¤€r©ž#)߃¢}—švž©Ž—ÆoF(Û=àS~Ã#ô1µøôþb ¯}ÇŠö½6ê÷›˜}Kø®ù¤¶EèçøÕ²…¾ÖVú$Þw)}m¿R‡x£]µ6’¼Úù¨yŽéÎ3}¡ç”>sŸ²äoý ‰µ>>³=¹fÄ׺¶:èûŒÏ(Ÿ­x<’þ[£z\ŸG¼ß,ôµ¯½¿ yßuªã•×)âo„ uò蟇ñ˜Ÿn6û•ú\ù=S°Ü£ÜqkŒ?òsc¹V¯¼„ï ö¨éÊÛLù@½Îž8ý|Iy®”É'ü^’òsµÂ5y-œGßÔ±]?W“{å‰Ó~óX ïãã›þZ~ITø½9¾_ûÝ}Ÿöè¿ãâÕÏ÷Œ~ã—äcŒd~‘0ø“³Ÿ}"(~.ÎzŽ#žûÊ×1ľ,žûz-Ÿó²[Íí¯Ì«uðª× …ïòX>›¬œ7jyß§i\Kñ×0ÂŽ%Byäö ×T<úçÆÔk"Ê9³ú]ÏÂuÉ2YÆè e^Û'µÓWå~}FÛ—ÌsS¯_»>#ÔÕ'_7‘;¦&¨~„F(ŸÐ~–ë6ÆëóüßÌ[.¤˜·~]H—”ô‚^íü_XfËÛÔ–›y+ùxµ÷`•çJ~Úëcm>¨ž™Û÷+%OmŸŒp¬óÍuöíkßoPûnΙ}Á„ ×gÌû|ò9°úꉩµGó7xÄ„øø«„Ó~ƒ>WûÍåëf˜Ä@åÑ~Y ¯ç+§-Ç•óRÒ¤J¸šNùýn%nš WøíFõŸ/ . ÕpAo@û­¢@‚Ü7ƒ%=ãõžr{Í>«×My®´»×|E~®¬ó™¿Ó­l#ù5«O­P<Þâäw¦¼ñ¹Ýü„‘ÛÞO™|PÒ“_¦äóve[²íõï^U^תßy/·ƒ|Žðë¯Iƒ^óz¥ÞŸåm®÷?Îåú&¨ÕQǃ –®W«½nÄóšÀ–^RØ®ªß'?JÞkAýúY×$ãã„ëoâõIÛØl?wPÏA„òHæû2ê^džsù„rˆ¿¹fK_¿æ)”ïTWÏÝ}êï/èékÛÇüí2{J›Ëßú(ün—×cwŒs#Oc™ó뵟*U4_3(ß®¬ü–˜Q.û±LG^>_ð˜û¶ò\û=-}y¼°/JÚïvyâ%y?ÑöŽÙRó©Äk¸©â} ¾øD-¼ö¦>1ž|¸–ëK²Ä“óKLÃ>$×Õ§ÆSÂÉe´1ç•YÝÏ•wéµtô²êazû…yõ»™µñÇ— ¬ó©iÆy´±„1O^'?÷ë¿…ˆ3Ë/Ÿ[Ä%$ø<é”×>Ú÷Lú«RÉc€>½Ï8×Ï;Òªñ„z_O”ãðj¿÷+eèã¯Gû 4Ÿ–>çJ[xåïôåë-þ>šWýÌšq¾)¯óÙÚIù 6ŸÞ¾êë:t‚¤ô5®r¬¡¾q©| 2c¹|…ü»o¤aœèéH¾„tqÊvõëyÆËõd>•–_¼з‰?UjŸ±Ì¯~¨Ú¯+Ç“Ë(æ!lj $Èáåk÷~m{È呯íëí –)Cz5?¹\r™ôkþòù°?À¾ŸJ©·^7_œß¯_÷—ó—Ë"/Ï—Q½¤œK䶉OˆK¯ÕS‹+Ùï=ˆq¬ ûÄ×6ö÷pŒ÷UÃïjÆØ)›Œåúk)ºÎg¼®óˆ¯ß„k!å yýf)¯Ïc§Œc¡V pu0ÛÄúúM,¯W|=§ßÛ&–ExÍñõ[R¶›ðžf¸÷îœÂç·Açc¦Óoz{µx횸ñ~£Çúº$h\ò ØÏÇÔW½vî_ ˆ”ýDx-À¬~ Ý,ƒrÞjÆ·æúZ@=ÿøZÀ’ž7¨~—r¢Ï#içL!ß+áxþ/Ÿ›ãµs~÷ó=Oc, ZÎ÷%1?9®ñº@‹+·¼]Ôv J‰€v®Ô^/$Zöqu™°}ñʼN~®¦©žÊË|Ê÷pýH|½ôéå6ó3_kŠ×Ìm‘˜*à×É㯹,hÉ/©ìçQʹ¥ä|éÕË%9ç–Ž}\èÿÂù—R‡sË CõsB¯}ŒÖÏ µóJ#Ms;[Æ8elò9§£ŸWÊç˜J~>õü0h¤e;vØßó—¯À|fÞ¶<äc£qÛ^G±Í½ö±Õù7µÕkK¶°Âµ*½ÿ×£´ñ[òy¬×³Äß\“IÂs}¿TÊ(¿Gå7®áZâup»Æ$é׃õkLökNâvÒæÝ®19mû¾bÿýëø¯¾©í¾²€7h<·¾®ÒRz¯úºÖá=1ó5°G‹µë;’>Vµë?Ú{¨AoèïQßW5¯s e1–Ëã«¥OÊ×nÔt8(i÷½x-ýÅ>.ù´²Èc©WKãå}'¨Œ±òóÄø€ùž¥WƒåÊ«ÛÜúýJúX«Ý«¦ÞãSÛÚþþ¥O;w×¶±_<>ÇÅ[ϵuåÕkœ[zÕ±B{•:A}ïÁ|ŸA)‹þþ‚¶qúë8ã7¬Õë.ñêc\΋ʹºäñF#o5×k¬ÆùŸC8á|NÝìç¦ãœQX',³ïk¡ÞÏùÔöh÷˜çÚvPî= „¾o0ÆËØf?F¸—ÃxîFó$¥¬Àz¯ƒ¶6²‡Ür^/¾/£ÔM¼‡H[%¯ÖÌ÷*•qÀ9MƒOœ×Ï^W8öÛõ#Nèy¾O¸ÞåÆ# í(<êÇuW².÷iïï…èu´ßëd{½á±½_åß+ö ¿Õ`.óu´.÷ ÷Qy=¡û‘q¿”Ǽ_J½7Iû=\á¾*ÏM§{¬´ß³ý¾pâMý¾%3›^ý7|­Ï•õ7ÿn¨¿Ç¥Ü£¥Ä½¡–ë¦ü;Êúïê&*¿ÛÔ~Xü-^)àQgXò¨¿#'´ß VêäUOæ¦v¿“üÆH¢~n¬ÿ¶qåßSêÔ~“X¾Ïºznšu¼Ôò’ËTÃyÉ¿E“hÍK£‡“ÓVÊ~SÈ+è—ð»ÈFÝ‚ê¶1ëF>Ú½k7=‰âýdÆýqž v_‘ü»BrÜD5Ÿ›Â=eò6Å{È´²iñä{;ô~cô¶¯~¯™~_š˜†šŽr^æ &^׿ýj½´ãmb¢×/Þ³füþÐ ­Ý”ò{´Gå÷UÕ²hå *¿“ çå5~3Z¹§MHÃL禜†¤÷Y¥lZÚJ­¿êéXÆNs|µœ[˜Ç q¬ð†œŸÚ—yíï㺼Ÿ+<×^›KÚ¹¢ù>¿O;÷U÷sÉò{ Æ9·VÇû±Æ86ÙŽKAáX&†·/3wò}Àê/R©a…ß1îËU~›RÛ…t5êïSê÷qFû-ÉD-œGÎ#¨•ÑéžcqÜ1î?ÖuÁ1>ôdíXÔ~óÒø­hùX¥¯„ú÷)+ÇeV¥.ê1T/ÃÍk~½îF¼òË?^ÉÇS¥ ê{à‰ì³òxL;’¾ß,C¢vü6îk¾f»WZû=Íà %-õ÷7]Úá¦u»êÛA‰£ðheP—Ç]a»éçòz#=-Ÿ›‰z$áXì±ô!± Öm!)ÔßO÷™Ë\Ê ŸƒÝ4îŽÇ[<&éçžDOÈ>bÞûí|Ÿ¸²ËÉ¿!¥ƒZKôZÃi騥ÚqX8žšÇO9]ýx.–ù¦^–ÖýУü~’ä9máìÇãÿoÒÃyµGû½Ïáxµ´äû¢S®×°ååé´ûl½.qÃÝ—o¹¯(èðš+(¾þ Nçñ„,3™ÖyýzyšøËþ4ñ×õkÃÊò ¾Ëú½)¡yÀüŒ@0ä3níg¹7*P¯i÷)׃ñ–kC¢€å·3IËG²mg_P¿†”ÄåÚ=WÆu0ýÑÔïwWïÃ×—{”Ó)ñ³Z>ìƒBžÚ{Âù‘xÝÏã5¶‘­ç0AŸyÝ@¿Ê§}>A_®®AK×r^êÓî—/| ïŸHÖ¶òi×þÌ÷4ÄÏ=$|FÿÐóˠݧäwz?Eë7^µ/Iâ{*’¾=Œ{¨„2˜ËÔ2ÜôIfûäóŸúŒ YðžŽòûŒê5õ¼N›—Ó¼é÷íàUŽ•Ö2èŸÍðõUóMŒW¯GÊS¥óË—6Å2hcŒQûç?‚ñê¼ÜÞ’õÚWȶÐË o ¡]~ª~z#A²ôYpZP2¯cÈå–Ëd *eLô)ï‘é÷¥©ýNRõÏŸè×Xå}TNKÙ7µ÷ÁŒö÷èŸ]QI¼§J_½êû¶Ú~”ĸúk­F<Êç÷z­¿«—S/ÞKg|Æ3èS¯{«Û\ÛÖæõ`Ÿ°¿ýÓë¿É¹¶ÜÙ”ýXÛ>rQ}Z¸€|Ÿ–z¼ÖÇGW{ÏPký¹Þ¯ôv’Ìs÷yµ_Ëåök}̯¶•Ðú=b¾Z@­CKú¼~ß qÝ]h?½Lb{?óØÆ-½ÿØÆqËX£Wlï{Èc™ø^ˆ:vËôGŸåýå½P¿yLÞ#ïµóhïx-ã²M$åZ•zÿ¬<¦g&*ߨwµã’²©³Â{èòïÍ+ï1$úúëú€WŸ+¤}ô2íŸ3ŽOìiZ]ôqÞ|¿ÜZëõ 9_ý¸*)ïzý™¼×ý’öyB¥\ƽÇÊ{êF}Œq9¤>Z¿‘¼–cŽü\¬‹Çc]¯‡1Æ7KQßûñÛöÞNÈñÙw3äø-æ)Ÿ˜Ëù´û Œã·~ϨœŸz<6ÃkÇi}¬ñj÷.ˆïo‰Ço£O›×˜ýJºzŽßÊ{OAû÷¼˜cœñ~›Çzü–ßóˆ}CÙ“Ê÷“h÷(¨ï¹YÛB¸7J¾ÿTs=Ú¹üÎ@P?Þú„´}–ÏÄ'¦Š÷ßðÇ+]uÛû¤øëKyôã“þ™O{¿Ní½êõ‚T‰>#/ãóö^õ½º8I?Òüì¢Gî%£Ý´ûG$ý½ùJ@m/o:õ}<ýý<ùQ¹?A½n¦ôVu[xÏh蟇T>·(¿gHÿª}Ú •áM{oOùŒ£~þª¾Ãl¤©„Õïé”<Žï'êÛM½—8¨í'òûH‰Ê¶°|.Ô¼FÙʽpú=9’yn$îò&’I}?Ó#ho¹ Ri¶cŸ:®hcÒÍç3}\ò÷ Çó6h=–ªm*uÕÃÊu5Ïï¼JþÂû&^ñ=Òøøø„T©®&ÈòüÕLê=×Nû¸|O£×ëµÐö+ÇïKÒׇ,—·Ÿzl‘ßKÕÞKWN¾”ç–û”C@hXu¿0ï°¼ÞÓúв,¨Þ¢ô íú™Ò·äÕÞTjÔs6ù>m¿NÍOí߯±MÝ&Âý Aµï©×ôõ|Ul'ë¹—¼=Ò„17]À2NŠçææXH÷/cðxB>Ç¥%„;WÎ]¥ qìVÏYÕ±@= =µ±YR®™hý0Ño ÍsdåÜ@ jŸ= Jæë={æ9²œf0ÔÎ7ã•:ȯÅ1*hŽQF_ èŸ}’·yPÙ%¯Ú¿vËåÓï•ZÒ𚯠ÔÏêè}>àUÒÓÇý6ã’_+‹Ñþò9¼d\Ë1޵–0,OôËï h¯¡õô‚æX¥/—å±U®¿–§¶]<Âûféè;òçäÏ@ùåÏå±»%ø¥›ò÷iø9/‘?ÿ%ïgi”ýMÞweò "oùü!¨Ü‡çUâ(æ5¥Ëyו}KN_ßOäÏŸÉi¥b}*}ìd;Ëé(l¯eÿBîŸ4ö'—{¢ú½<â==Êù` Îø©HR¿@{Mæ~¯Œ.M\:qÿ_0÷ƦIÉzo¬×ýþ¥xÊîö™)±Lò”-}¼ß)Tñ©C^+êiˆe‘Ÿ»ÕOã÷©×y”þ.¼‡¬‡—+&]œ_¯»úv¶’’ä5®MÊc¿úùZs½×kÆ±Ý $¼þ—gÄ2˜Ë=!eðÉ—ù´e>åëàle0î’„rDSvÿ’vžak=~šT’_ÍW½¿YýìŸZ= ^ý=}%Œd~öØk¿gJx½æPûûéb;(û€üÉ7¡ Aq[(×Ü}ÆvËà”§vý×kP>_'lëuù»;Ä2Êä8J¹$ý3zâ½Àº%õþuã3‰Ú6 *?“I–6òéߪÅÓ·¹ØFr™•GI«ƒò™ÌÐïuðIæñ×ø<£×kä­ ;^mÈQË ÞG å-‰Ÿi´aúý§²ÔéÒXÎ;²Å§y½&ß?kÿÌšüy2ñ>Zù˜'ßߪKíŸaS¶O¼W 'ß+ß뮕h÷ÄŸsóZ?j¹§VþÜ™W½nªäïÑÎ[ôÏiÛ̯^0îÃUîÓ•”o«UïÙÕ?çæñû…öùmùsoéÒ›Ÿ}ÓÓÓË£öΩåû‚Õ2HrûØó——iõ“ÒÆÇißuéÕ?[¥ïsÆ=(J›ê÷K>#_½mÚçúäϲ)Ÿwó˜Ÿ{Uîy‘”z&(Ÿ{S?(÷¥lcWR&­ëÅ2úh1¤b‰¦prI*Kþ‘Š&)“_Ÿã…Æ¿öÿ×ɽ=œ7O¸ðî-k;aŒ6sÇMä¶õÅuŽ9¨IJ’˜®y6ëµ-÷Z×Üî.·§ÛSÌ“$NQ¾æÞo)/çÿ·"VhÉb)irc‹i˜a¸Ñ=¦u&4dÄÿJ¾¦é$¡µ¤Ð)êš8ÆIÇè¶Îa¤²$BH!˜ÚözfÖá ’HØZ»-INx½õÜfc é”»dôR£™Â%¤…Ó‹ãP¥ˆ{¾5¡0µtL*r›„kàÿ‰Ò:ÓŽ,3¡1llá©óÞý/7‘$E89uŸwMÕ5ÍèÊéPưõÓ‰jGLišÂµ’PŒT#Ãæ±;$½#uŸ°M²e޲cF[^—°Ië1w(‡[†ák¤‡4ŸDžÄÜÝ7Jt¡’›dkOû|tù8&¤PÿÙ|lñ¢^÷ï¦ù_ÔÞRÌ G×)“×õ£ÝÁ$—ƾyÃ7sr7E´ñ“—-fTk’–^ÒÓü/jo)ª„£ïŠÎ×)Ì”¤2Øv}òÇ2EY è·¢CÍÝž§`Îá›Â!Š|G:ÿ£Y ­‰¸ÆRXI[«üWiO%{¼ÐB2¯„Tþú„$B›À=ÜÿBšúsqý­mkRni„¬ [Pq¥KiÂO–dŠîó™£KZXåóÑ#$öï—5Öb:­t+Ã䜶½®…vګͱ¬‰"Ùdål«ƒcú‘·¸Ñ–€ã^㜂¶Ügn]÷"”F/S’û_øBƲ—¤P2·¸²ÿmyëJé––uxw-œcl-ûèZÉ­:1%UýWBܦEÿF› cñbO(rûF9¹Ö1–Íãö÷UÁ¡!£ÛòI+g’ kæ³N‘VÿÔà¿ :ŽGtí¿V/ã™öD" ¯"ã„Ém¹µÁ|>m©ðÔ©]­²Ä6#m[5ÃUÛÖš‘6¹Ó6².s~*$coá°mn/_¬Û yÛÌZ°ÐŽµÕº¬ýšBœÃäÞÖN½Eii[Ë\w8ÇMjÙ–ææ ?„y»ÇÖkèü²ÅeŸwè¨Ö~÷ÊL¼†£?3Óµw£ƒ‡IÞ­kFè¹ÂpYïXnóIH©#Ó½†n¥‹b;…íÝQ‰º÷[†/ÛœµÆ·"¶C-uq]á¼{ÿ'÷·w¸ë¢ÞDÑvK‡ŽÝd¾BsÜ21mË÷¨Þ±•Ü–»UB/u 5®mbëÃ)ÝëÝþZBYÒKrU]Êv•˺⅖7º É«ŠkEÜV¸/±ûm%‡JÚ_©„TöÖˆ° ùÛ8Iã|Êbß¾á†þˆÇ†” `™œkyrL<9Sô];ºR'%JÊoo·­aÕl E¹çùŧáv£¤DI‘!$rFÛ$)—RÒºx¸)ØPQ×-R-"×Ò—üWW^ëë}‡RÞúö5™SÒÛSŸÌjVÂq½{<úäõX'Çy¯þuÅÚ§ÒX[B_îà éõÿíñR1žª“¾\\'¤èXÌÇÞ’¶ô¼^¯×RÀXKiÍß¡$ÖåÖeb(§üjj+ŠWkzkš¯í¿¥¸!kc¯·ÐÒa–»5•°Îµ=lm²*Ö¶Yf¯“[kIØúµ_G‘’ekÛrpµˆ´õ«îÖ%Ô;t;xBã kÔ¿’­01MZ|)Šÿö8ö¤¬¡â;äåÚGØT!ÍnÛ–v‘„èâsû¼5¼5E{<{k)Üs´†w/{¸ð‘Ê.½¤¦í>R^Ö8áRwN?9áİÊi|£‰Z·}Âa€7#‡}Ik%—XÖ}ÂiopئfÃç!vø¼mm2^ÚÛ6tOwjZɱmÝZÇÚ¾’ùß?BMm-®oØÒp˜¡&ޱ­ŽæADXÒkfèq i&èÕ6™Ç#¬¶j˜8%¢÷9û9¨Çu‰[xÉq é-+¼bJzaŒ”WÙ"j[+´´zÅ„JíõضÏ„ƒŒž@Èi‡û"‡±È>YC:$å'ŠdÿKëTL5KŒG}ã†&S¿s%Â6‘ú™;ñ¯uÎÒ±‰üõw°R5« ä➪|ÁCKÓ列f(×2Ú8¦ê÷ÛrÐC%yc†‹í5>óè÷‹Áíut˜"MFwH^†ë>›Ú/ĉ¶Ìnqœ:¦¥Å–×!¤KöëíC÷ð›ÿÃÇ:ˆ¹’Ð=1nhŸ1ú޾Óɵ·÷Œ“¯s;;l”XB%%ùKô„»ö}–¾o™7CZó±üÙ>²g<‹*T¸ú¤d>nuñªs>ó©øÄ}]¸r‡‹'ùüêx:® ×Þf¥¼Ž3Ñ…ŠÜÞ‘R»‹ðÜ­ðQvJq#F&ÙyDêú®yÅÚÝ„If¶Z'!ŸpUh{7MRzbYbI3ÊÎ/îVaw¤ça©¥ë»7Htc½Òéàã>#¾LV7µY $—ÁaRߎ¥á&I§Fq+P´C¹ûVqx.§âyšäœ&Ûá_?Ç|íÕ/ Bè1´ÄŒ>çVñÔ¦þÑ_{ÄÀ[zÆKb®áþÛÓ4Ö ëÕ¸~#ýQù’ßV‰ê·&(†óÓùͤü¡ëŒèÖuúsÇ‚ +ýòAû´®ç›Âã±öW¯zöZÿ¢+7 ñ|Â>åÓÿKIzÍPF‚n‰‰e•ÔŸ0Ë*YFþd”Õ!µXŠé´Ò­@B•"D·—@y¦w+Ú#<Æ+Sm¯Ö{†<œú=Æ‹8П¼f²¬‰*Y­7{ünA\Ò÷êé«£•q9PŒ´ðxtú…3Iß:扉•Ç<ÚKfBj»©}O²§`kZ[ úÁÈýe‰ÑZPý™ýÜ8nYæXËk†·€qj?›v®c¸º¼ÖZ¡§Äê1:´*Z˜€òߺŤ@@>wöû¢)³’Ë’ä•ÓòÚ\`-r åÔÓˆeuJ×À|…ayªü.JŒÍ~««cüñ:ÑõÿF×2‰¡ÄÅ.¯6-¯„ÅœžzB–Ûªè²ÊÄ<·s­f˜j›/u½ÆqÁ1Imr:w”ÜæŒqò<´áµ¹­|ÖhÎg²ÉYn-jHøp ¼âVV;Üñ®µŸF±œ«é iŠÔ"Ä_Â8Ät;.“}k{ÍNà±HéÌôLÌC¾Kf–ü"¿A+ǵ.ִæaµýE·ËŽêÚ+¶BäÉ¡ÇGÚN^‡NšgØ ŽÝßeÏrJ¹ØQ÷$d#œ½$i°ýè‡X±JÌÀ8‰»€kòÖ´]V¤àºHmçuès¡©‡.ÇðÐdÅ\ÖgÖ¤ÄÒy£ß*Þ€S DÝðÊ/×EXî\—É8dd°·OJôá¤÷ú€2X õµnãw¸*B–8LaZ5\ƒÛR}e)Fèñ7¹Uq-®{ÿsËæßÜJQuLsŠØDÜ\D>YØ Â6„7Iã|²)´}­¥‰Ð¾ÿB€äLò¥ õ1…Œ´Í“;‘ | ·w¸:ÝŠêªf ŠmEÚ Ñ¿ÎL¡(n£8’DÊ$źn´)¥L½¾nArÊáµSJ¥¢8"H©äæ\Spz“6SòÏÑR¢úd> 3¯|nWÒž3güʲ%¤Hb !%IûïñÚãÙ“1ÖëQ$m&|\6 X{f]',Ò³Ug½J)¬×>Ól~ÀÙëõšu––[—‰¡ÔBJ–ü%³í${ÞB\ó‰×ëµÇ ºVM$†­#ÔÏ=žÒòbËzÌ­c¬“ìùKÚ›nú£SX=¼¸YÍçÆ—Ä2:÷ð½J¬¥^o÷Ú Uµu9KËIöåN[Ë\£ Ý$±’}½Ù‘${RöýÀZM±`!…3›Ù¥+ÆJ{lþW{™#ÖÑr*bîÖ¡AqEèE!C–û¢ðqB¨ïÒÛöqΚ²}=œ×í¥©û¢q$¡y-aÍüCçÂ… ™÷:n`c7‡ó`'Láã ýKïœZS:·N˜þ(nKÝ¡DìcB)]†£ŸbÊÇØWž/.¶ÍëçuïöEKD*\}R&Ÿðu†.‡ñ;Ü:÷r»ÇsK!\Í.+ö8s&–PáÊE Ú>àÑGTKõ’ØùÃ4j¸0IÎ#Ê®ï—c*aº[Ä0IÎ#¤v1çcÆu訒e°&)é™Ã­ó>Íh;ø0)‘‡Þ¬N]?Lƒü “y°JBŒ š\ÇVéã¯\ßóÅÀµ@Ñ÷T±×Dñ\ßÖ§1æìÞz’ê£×ˆ •ÀkVÜãBïTÆuh5sûÎ!±ï6jEÌ2[{¬ÞoÕ§BXsiøpÿíik…õZ\#Ë’ÇÖøëN²%e_'FÖIÖœ­µ¬ÔrðÚöV¡KJZ;êƒiØ¡ÔÒ‰¬ÉÛqÉš¤¤-ÔWZ2 M,$;ÉRVÙÉ+«>Æš­›ÔbZWFžÜ¢‡–@/¬ÇrôxìY)AÄÁGÆäÈÆª5‘“×»qN_nls°×vS¡·««ä;£CšHo„ˆýR2ö-!£Í$[ ’9jX¶®ž‚\I¼èd9õÁÁHQ²fcùots,Г—¬QmIkµˆ®Éá“›Ì-­ì-O>Y Lîç2FÂúlT;¸d”94ùÈi9ŶØcî=’þU IKDùô•0;–[J=û¡Øáè'Iær!ý^`MÒº=#%f)¬ÚÒ3¢)¢~Ðõˆ»­~ĵ&¾x¶öU¯UG&o4MÈœ9ÚêÇ#ÿ(ÓŽ"ws×±ö-yªbÙiíÑk‘ʬG7ö}‡%)PNcC ¥–ìEv/§$¤ YS»›ËꔯV4§§Ñ4û¿Yã×hjm…QÁ,‡-y½ âœûró="¾áŧ½Xw„…Ä–„G#ˆ^ð”~š¤¤×ÉVm‡eêbËÓ,§¥­™”[n-jÈ®i]à\[sgгÍ"ÄÒ0ÖñJèâ¶eb&Ë.ãN‘„ÊuÆÜ‹œJ§íIæ¾) ffn’UÛÂøëZE½Ñ®ã±TÛ2o†´å#v—f‹:T¸ú¤p>Nu1{¸}K†_®Ü‘âYú¥ãºÿòö6ÛGÜÙ\ ]§³Ž"L²óˆÔõÝ󊱻E·Á’š‡Pë$ä¶£š‹B×$-=K¢Mó¿§½-µ³t}÷qëŠöM&Ó(Žƒb¹¤d”ÁaÒÓÌl3MaƒØzI”C˜X§ˆÏ=ǧIÍÙ¥vBÞÉü®WxÓÌh+kgô E2âI·ìÓ¦ÿ#iJÖ´åÒ-¬„dKʾNŒmA-+-ÕüºokK¬»‡KÑÅåFò¶Ö MRŸÄqKì_+kòŠé´Ò­@b•ÂG·—@+¢vå)Ì^íñšÕìk<úªÐ5Ñ%+´•SÈé››24²Ö@BP=!JȆõXç̼$½F{ ¶¦µ§ ½åï1¤hÿÓ’·&íÜ ­í옌­ÉHæVVöÖ'ÿ?Ñâ>’–'rlɹrf?Ž*…d&â|Žè0%±‘`_ïò×À2ë´Ûÿg3“ÄÞ~ ‹6yKÀðãb„Õ¶ÙË-–&yÅŒºt‘¶“S¡ÁÂql[ÕcœR.vÔ=$å³ùÞÜI¡u·¨[Z[Ì¡B®Ö8a©ÑnçýNÅñÒ¹ ®é…iåÈ l妧p¯“škç [å(v–0AÂ"qP•R *a3ŽË£z=vë·R¤ÖµáVÞÒ·zKIçoÁÁ!æík-M„@ÿB€äLÆuƒ”ÊãVŸžDSà[¸½Ãå{k¶“yÝ#¦HÑœ½ÙŸ†O2YQÜ"F$R&)Øu£K)eºxh— · ¹ ãk§hR)UðÿÜaNßÁ"EzJþ9ZŠâöt{º=ÝžnO·§ÛÓíéöt{º=ÝžnO·§ÛÓíéöt{º=ÝžnO·§ÛÓíéöt{º=ÝžnO·§ÛÓíéöt{º=ÝžnO·§ÿë“Ï'I>y’oSÿø|a–ßžR~’[Ùï÷ùü’äC n9Û"–å)4ùãâü²8mòûýÚ"ýoJæv{ú¿4ù|Z‘G£ç¨‹"¯6×kýL{¸EE%·¸@@+ƒÐázü-)Âíéÿà$ù>†ä@€C)+Àœ2¸EënOúd´’O~PþÂ-¿=ÝžnO·§ÿêIúS1êÇsF’*ŸŠéß `™”WŒqqÄá_@>a ñücŠW"!*>ÀS™2ɯXä3©@‚šn¡ã‰Ë˜œ M©Ä)^ü/')Nÿú¦øw&Ÿ¤m ?M—ŠÍ!W?U„U⤼†óÅź…ÔW•¹™åMÿ±i„M¡ [âßo [?É'÷¸€ÜFfŸ¤å¬v_¹ãjg뵩nIJÿ}“<8ÔMí¥:ÿµ¸=%oòJ>þóǧ>3þk mO­!bŠäOðÇ%Äñ—Çx•²È¯.“W1&*õ9óOÀþ7Ç(‡b”“ÿ*äEu™œ>0þ8$'Å~þ”qYÐÈkäG=¨9oü -<ÀÇ©ÉÅ)ÚyMœœ0gþ±%—6]ú ©Ó˜ÕgÖe¡ó‘ÿZÓr[çö7ú<3gÉš1ÿyÌ&c&›:ú7KÖÌY k íËšš{ŠÿÙÜY§ šÜ#­%TŽ;sf¿#§ú7û<æþ*ä9Ûrm^'®µÏGû7\ªN%Í5RyóåÎÃÿ¼ùòóŸ§ù•ç¶?„Èg.°‡s\hûs;›$dS°Ð]ø_°Paþó´°òÜöÇi­kŒ”O±ø=Eîæñ{JðŸ§%”ç¶?„¸§ø=¥ŠÜ]´s%K©á”(òŒù`¬)r·²¨þ¨.‰RRLÖõÉÿL1‹»GyΞ–PžÛÿÜSÌRL5œVLc™\L}‘Oh~¶(ÿ§ŠIšl¤âÊ¿’òRí/éÉÉ(骵Ð6”…r(uó•ÓÖËÏõ´²(3!ÏÅÍS-\_› ]-–"LªÑ´]4Oî–´è=%åF“çä&Qÿ)jþµ”Wß_ŠFŸIH§°îröµ7žøh¶ŸVd{wÛC;¤óîþo>‰½Ç$#©¨»Þ¿ô¤t™ å+”.S¾BEþ3SQyòGY]éÞÒeÊ–³?áAœ5B:„sN@{R¶%QžóŸ™ŠÊó?®%Q,ÉU4—ÛÃ…-Iy¥ ”¦©$/­P©|eu9¶@-My­^üQÊAÔ60ʯ­—Ÿë9hEPfBž‹)šÀ(uä»6´1ºZ,E˜Tîá Éÿ2eiSZTn:­taŠ(?1˜+´G‡†Î¨”ÿ17ö¦Ž¡¯ÙÓˆ¦’ù¤Úý5*W©zßý5ªÝ_Sy¢ü­võö'5Ô‡šÖuÆ\H !¦kš±>©BA+W• «ÌÈI«+W5ÿVÑ"U!Y{ ×Z¹Ô>Ì“(“úžÜÞÖÿÿlëºõ‰e¸Àaž$½<Ú÷¶óÏ듼>íB±ßï7¿ÒÝïÓ&Éç—âââÒ&#’O*éñ-~¼ßŒËŒ¼. 'è‹ x}¾åf²´–äX-'krÞ€%9ÉZ>I­›Ô5995¿7à'ϸ8Ÿg )˜\À«''é‰1U¡Ë䉭âÓÿªEóêÕɯL^‡IMW»¥Ù'Æ4S•ÿZÊíW[T/¹ü6µú×¶±„²+åòªé©é‡–ɧ÷}+Oýʬ_ò9Lñ±$ÿÛ¹keÐÚ×9çø@4ù†lcµ0®½È½wù,¿E¾§¹÷1½n±õ1·šJF¥üzAýrqjr„OP‹!i¥Ò7'üj¡ã„¼üqñ†,9§í¾V9—ÛÙܲl$c´TrÒÓ7þ-NѲ_h]Ù;•N©õcq_ð©û¥>ª+Ñ|êN"òz›Ð¿r’úè՚Χ–Á¯ŽšR  vu//·¬2èËKãŒBþß.¦>к“ejñ|RŠÉA?ð¿_Lq’\­3’X9­†æà®²^u$Wçôƒd¶„¶Tý£F´>hÉ ‡ ã©Ï¶B+š:°Hú©†²ëG:ý¨¡|8G=,øõcßb,Öb{Õc„±ÄòDÎ%NML;RÉI$8$§¿ÖÆ•$­´>­Ô=ÍòD¬œ’€OKJ|”Œ6”Ü$ãäCÛ‘maípÚ£¾;ëFGÔõÝÜØÝå˜~eK»>QòôDß2’ÞÐòñ]>áÖ÷¿Úl~e›øÕÃ>+ä=Aëòí“~si'òÊ£í9ʼ~í×O<ýÚ9ƒßØìæ íA9»PNij'¹0qòM}r¡”'Ê>)ß»iìŠÆgì®Ö'òúÄØ¥ýú‡sby̽Øèßj+ãÞ2J–Âàb”NeRb¨Ná’D5ÌYÇ»ÛÃ\Êsz¥¥Ö!LÒë¥6–ÑQŒ†4(ù~3aKØÇ)‡ñAn!u PF1e‘O+|¬ãƒòÄ2óZK#„È`¢¢Ýå;uèR³«ø-ë,ÉÜvâÉÞÃ,ÅèÆ£%!źÏÙ‰I9 JæÕûq-ÌÑ"ÎÚ[ô'FG²OQÀBº£Ë±Àr~flÙЭ{[ÿÿ¼­-øßº­£ð&2GÅв5ŒަÖëÔ(÷úÖëÛ“ÃÔ©}ÿöOõìÞ¿ÏÎ¥:tïuKò(ÃT©BËÊÿåù²•ÊTP—W,WéÞ{+yÊ–)§¼\¡RyO™²åËÝ[Æ“¿Ì-)mЯû¾ùó{žîß¹_ÿ0ážiß¿_÷gþý«Ó?+rz¼¥Ç=M{]ô粜š”jC±íòjô|íy•Jf^öm£ç‘’mXÎcm›raÄ:^Ú¹å•]xÔé}Prxž”¼² ùÔækÙò·aÎdæ%k†èk«WN‡MÙ£™Ü¶—8Í6IN^å<¡Çšäžó8ååÖŸõü“šŸ=íQžÐm®ËžBy‰±ìËöxá¶íÿ/yeâÙÇ)1 qŠñÂí‹·"¯R1´¡=q,™.”{ºÇ<öØÇ=ϤÖkºÃöÈ.ä™”íË8_KhK½^¥<Ñ×Ë)¯Wlm˜SKë•[”×t—¼J%1¯Hã¼8ŸÔqþÿj^öñɾLO[|óLJ^‹mËÄy9Íé)˜—¾ïêcCvaÞ©^±¼ŽpªW,yÅr¾î˜"¦éÔ'bÜÆ^ýx¯ï¿â¸š’yÙ·»[ßKîùÆâÿ#y­÷XûÃú0‹„;'ÑËfOãı"»FŸ/âµ¾®ÐÇ~Û8/înõ’óÑ ÷ãvrê¥ç§ÕM~.æ!¯í¯íõrËKÏg½ðshW§¾‘Ó%/±žð ýÂÖõvÇŒ¤¶¡Þ?Ä1Ëi_Nθ¡ï·z}^!àbÉì‡b»éú ýé†ëóúöÚ¯m/9/qÿêâŸS^‘Æ^=¯8mŸRú¿V/½Nöm%÷E§¼rFÈK3äxÿØêãtŽË9[H½|júõ|Z~B^úëG§m‘”¼ô1^©“d]ïT/½%5/¥¯ky‰ûUJç%·áz™¾<¯¯“Û°…/åòêâ³Ö%R½Rb{­Òv’rÞkÏK—ûܹ)‘—<¯¿ß ÷ 1ýäÖÍž×2¡.r^âuäZ)œ×)[»Ù¯U¦d^rߟǵäæUÜo¾ŸË$õÑ+Ì{£M^U…¼ª ^aþ=¯†ÂcJç¥?J¶çâc´iFʫ꿘—˜S?ûyrÛP¬ƒS»¦D½ZûÍ2ËiËóqë£XOû¾ìTçhòª*䥼NÑÅ} ¥ò’ËnµGyýtç ᦧP½ô<–ùÍ<å´Oùͱ±”Çåtž›œcŠžnU!ý†qj[Éõ»æO¹¼úÆ™iÉÏeå<ÖGI˜·±Œ]ö¼æj}Bì«m/}ÞÞïż"½ûOÖk›VþS¶zê%—_?^þ¯ÔKß.™ã­õÒç§ÿ×Ë­êcarú¡þXÎöÜëq?bœòªÿïä•ÝöÜë1_7ߊ¼ôzݪ¼ÄmåÔÝ®yÅ2&»åÕ!^½žÑ!>4/ýDrórëóâ{‹âq9%òªªr½Ä¼¦{¬ç±ä%žØÏwíÇh·mí¸á–ׄxóQÌËmÌHJ^ïkm§?êçØr?q:VŠyE£Üò:¤=Nж—~-^ýe½K^âujñÜJo§~ëä”—”pkò² öc–}?N‰s6==y›OPÏ ›%˜ç‰NçÕ±NÌþ,ç+ϯ÷XűËíº¶XïXó’Ri×6RYór»®”¼j¥R¯—ëòzq|ÔósªW¤>ï–רTêuúm©¬çUâû^ö|bÍKJ­¾¿¦?Êëå÷ÑÄz‰ï['§^z S«õ’·—œ¶X/·ík^¿jyèúö*FxÄ“2ýPÏ£au»I©¬y)cdš”é‡zŸŸ›Æ|´÷ù”Þ¿¥Q÷¯C¶¼Ä},¹yÒÚ.gZõ¾ƒÖiÕtõ×J:ý}Ùäôy=¯¹iÕíV5õõ˜œGJï_ƒÓ©òö÷/YJí_µ<äúÉõ:¤åuÊ6F¥äþÕ:½ö˜6´Ï»m¯¤î_sÓ«ÛMß^z^r}êK^zŸ®šA]ç±G^Å:9å58ƒõœ÷Vå%·_ÎŒl§ŒÖs€”xÏ×)¯§3j×è3ZßcNn^3ªôó}Þ¾Ìþú Ú× ÿ-y}šQõoäå”vJM_ÙòúJhC½¤T½Ä¼ô´¿ºEõ:oËë|˜zÙϱc-”ÉL׫Í„¼Âåm^özeÍdÖ«H&k½äù”¬WñL*yyµL·¶^53™ûW5[½ª¥p½šeRÙë®ý’’—!“µÍRjÒûœ±e ßçÅ2ÄZy{ÚPŸ?/ä%®wzKþQ/uþVõ ýzÝ­Ê«S&k{éó²å™TçmûDRÛО×&!/ù|FÌ+ÜõÐh¦£¶1ݘÏdÞÿeßדÚíyÍìñ4ʬ.Ë.äåtÍ09yéõ8šÉšnJMb^m3«u‘ëÍkX§^™Uz[ÈÏÃÛ¸ÇþÛóšžÙ+ꕟzuÃóyÕz-È›rc°=¯U¤} ùÔ÷–Ëä»uyÕ̧žWèû—ý;»’3mÈg}} Ï—ÉŸò÷è9å%?Êy¹}ö+9“S½Ê ·2¯Vù=ž=ùÕqC Å{ˆSª ¯äWÓ“SßŲ»n}Êõ’ÇŒZw…¾ÞJn^îRûœþZDžº`è½Iy­)¯Ô…<ž/ ©÷!Š÷êù$çX’WaòBê"Ö{znE½–‘Ç„¢ê}Qòø!~Þ&¥ëõeQu{9},¥ú†Ü×åt3ãX‰ýÅÔ:ÜŠ¼ÄzÝ$ŸêÅÕôíý>%òÒë%¿×Ö„|¦7¿¯ñVÕKž—ïÇÒ÷ñ[Ù†ó‹«ßƒ¥)Y¯HSJ¤/ ÏÙ•<“‘V6z §Ù= 9º–²­Ë£2îÂÖBíÒ®ƒº¨‡úh€Ñ¡‘¶1Ž"ÍGÑ£°ü©ÊeŸ: 3º¡ä_0yòOy  Ž!Í!Šaމ<ê÷,ëÓè(Ò‹—0…å“ÃÄ™‚©˜†—ÖËçoF‘wJO«°ßàÎà:R³c܉¢¸õv”ÇXöD ì@íI£+žA? ÂŒÅD¼ŒÙù¼Î²%)ÿjÒø;°Ò<&S ¯¿Hã ‚ˆcàH‡¬È…(&…Æ)òŠË#MU‰Suð šàQ´Â“éu`Y·òéEØþŒ‘ñäï { «°‡p. õHîäçµÞ(…Úh…g0 ³±[±§}rÆaí;'j 9ºc8f`)>Æ·ø7ü¡yf’?[\ÈÂ(H~]J“FTAuÔF4F3´D´Gô@ À`ŒÀŒ¨ßÅ0áLsXöæãM,Â’$”}qV`Ö`=>Ä&lÆ6ìÀNìÂ7Ø‹}8€C8‚£ycÙqü†ø'c(ã„=…Ó8ƒ?qçpáþÆE\Â?¸Œ+¸*®;äyƒeAùû(8Ç iâ¢+WzÂeBVܧ~7CäGAA1”pH¯4ËîC}<ЧÐ#Ê|ÃMIc4¦â5,ÁlÆ.À1œÃuÄLJ¦‘…eyQ P ÂE3=F¼vèçð&a6b68¤ý)˾ÁAÇ9\‹¡ ^kfD.AYTK W?AýLÁ“èæ°¾ËbF`4^rç6M$ìTÌÀl¼†7´øoñ¸ïb¥CškX¶ ;ð à(þÀ…ÊRÓuòôóº:üÚùPeQµÑ¡-º¢¥R?83ñ:c%6`+¾Äw8Œßp—áIíñ¤BfäB!”LZ¶J,«‚j¨Z¨‹xÈ!|r§&¤ùš£%ZãI´CGtAwôDoôÅâTǨƒúhˆÆx¢G<…èŒnè^xý1ƒ1 #1Ú¡L/²l&`¦`¦cfêð qæ¤U?Ó9ó± ±‹±˰ïaÞÇZ¬ÇlÄ&|‚-؆íøÌ¡L;Y¶ ß`/öááHêp”8Çpà Îá.á ®ã¦Ü—ÓчÔH‡ŒÈ"6w"7ò¡ £hºÐ<ïaY ”D)”F”E9‡ðnSyÂV@ET½¨Œ*éÔÏkÞ‡j¸ÕQ5ñj¡6ê .ê¡>àA4ÄCeiIJ¦h†ÇÐ O -ÚÇPv}êDœ®xÏ úÉŸ©Å ÅŒÂXŒÃDLÁ˘‰Ù˜‹×±oa1ÞÁr‡2­dÙ:|„­ø_ã;LBìÓϤñNã/\F"|é¿Ù wán”DyTAô¡iÖeY}<ˆ‡ÐMñunzŒð-ñ8žÀ“x íÑÑÝÑÏ 7žE?‡¼°l†áŒÅxLÆË1–MžfçU¼Ž7ñ6ÞÁ ¬Æ:|ˆ±;ð¾vÈk/ËàŽáœÃ%\OBÙì“7ãÒ! îD>Æ=(‹{q?jãA4Åcxí3„¦Ù•e=Ðý0C0£ÂG;½D܉˜Š˜×ðÞ¼‹•Xƒð6ãS|î÷.–}ƒ½Ø‡8„#8CYöþÀœÃ\Â\ÇMx32#Þáxj–¥EzdDfd•ï‰CŽ(.˜ËŸÕμÈ($ß;¢(Ž(%¿g,¿¯àf–UAuÔF4F3´LâEû6Äk.è>€Á1)˜9xÝ!¯…,[„ÅXšQýœør¼‡U.e{Ÿåkå{¡°!£z?À&|‚-Øæo;˾À7ø?à~Åï1´ÁÂþ…p]Œ—‰óH¤F†Lê=èwf Ÿ—ew¡îÖ>çZePÞ!¼}ªD˜*Ú}ó5„ðµx^ ðü~qH¯9ËZ¢5žD;tDt"yêI¸Þè‹Zœçy‚áxcðRéM ÌÛØ‚ñ2e¦O£>:`æ`MæèÊ÷¿<}Cÿ€? c6ªâ1ôÁD,ÆVÆedÎJÿAt̪~þáU¬ÅnœB cîC <‹IX‚m8‚+È’q¢F`.ÖaN#îú/ª¡%úb2–âSütGä:^%L\òC~”DUÔGs´G/ Á¸)߯³Hs!Vb¾È¡ÞCt 瑈Ôwòú …PÕñZ¡3úb&áU,ÆlÁ×8„ßqÞœŒÿÈ•3rÙŠ¦*¡-ú`fb16àKÆÙ(Ò»åS.ú ¡ 5zb8¦a!Öâ3ü€S¸ô¹Ùþò}p¨ƒè†Á˜„ùX…m؇¸‚Ôy8&¢j¢:á9ŒË¹Ès ³k±ßàGœÄ%HyÑÅò¦|“U"ÍÚxOâi ļŒùx°ßâgœÁUÄåcßA~”DUÔGs´G/ Á8ÌÂB¬Ä¦|‘Ëöa¾Ç/øWÈϘŒ<(†Šxó§|ÛÄ:=žŸýÏbÆcÞÄ |ˆØ‹#ø—ཋóc܉Â(‹ûñ C{<ƒA‹—ñ:ÞÁ:lÅ×8ˆß𑪯£ D.÷]„)‚{PQ5P¢ E«(Òsšž$^tEO<‹ç0#103ñ*æã-,Å ¼° [ñva¾Ç¡(Êö3aNâ/\ƒ¯ çÄȆ¼¸ePµ &­®á¦‡H³9žDôÆóx0óð6ÞÃØ‚/ð-~Äqü‰DB!ö äDA”@ET/¹<õ Óâq<…Îèg1Ã0ã£H/Úi*iÍÂkxK°kð!6cva/àŽáœÃ%\‡·0¯wYp'ò¡0îAYÜ‹û G.WmÂ4Âch‹®èƒA…‰˜‰×±8Šô’;­$ تݓøã7œÅe¹ EØ×‘¹P%Q 5Р5:¢'`8^Â4¼Š…xkñq‘ÈeûŒ0»°ßã~Æqü³øWEzn“t7Ûi‘ Ù‘ ùQÅQPÕQ ÐÍÐmÐ]Ð}0ƒïŽ\†„ƒñ˜‚˜ƒ×±K°«±>Šô¢>"­-Ø/±ûp?áNâO\ÀeÜ€·(Çf¤AFdCNäC!C)”GeÜZ¨_4r™¦9Ú z¢?†b &a&æaQéEš–“ÆZlÂv|…}8Œã8ƒ‹¸1ú ²"7 ¡* ê š£M±Èyw"LôÅ ŒÄK˜‚Y˜‡·° «£H/ÖiinÆgøûð#~Å8ËÅÔû_Å©;² 'îBQ”F%Ü:xÍð8Ú¡+za†\¦Ñ„y 130¯á ¼…%x+£HOœÖþ|„ÍøŸcvã;ÀøÇð;NãþÆe\G¾{;æžÈyg LfdCäB^Ü…B¸ÅQe¢HOœÊ¾ª j ê¢B<‚æh‰ÖxíÐ]Ð=Ñ}£(àÂ0¼€±Éx³ð*^Ç›1ÖIœÞ&î;XÕX‡ñ1¶b¾Àר‹ïqGð ~Ãøá®"Þ‘ó&²! £$*â~ÔEc<†'£H/š©3é<ƒ†±˜ŒYxocÖácìÀ×øGð[åø“0qRIŽóȈ;…QåQµdòêóñ )ZàItBôÅ ŒÄK˜‚Y˜‡·°,мWæS|ßqiJ±½PàQtÆÀRÉ«KJLã)ÃkXÍØ‹c¸„øÒœgâܦh~‹ÙxáküŒ¿à+C-9ï» S  ž@7 À(LÅ<¼ƒõQ¤ëô)iîÁœÂeøËrþ…¼¸•QÍðzb^ÄŒ²‘óX@˜•ø_ã0NãR•c ÆÝ¨„ºåR¾ŽnSsòꈾxÓðÞÃÇø ?â®"¡<û#Š "êàQtÀ³‰©å#ç;Ÿ0K° bvaŽàÎá ¼’^¿ÔÄÍ‚Ü(ŒR¸5ñ šá tÂ3x#0/G‘ï\Â,ÃF|‰C8…kH]‘sGU4¬˜ôzÄ:µ&¯§10˰_âNáRW¢œ(ŽªhˆÖxƒ+EÎka¦c.bÞÇFl×ø‡ðké"Ì\ƒt/åCfäDG¹{#§S•0¢ºâ9ŒÅL¼…÷±{ðséÅ:%ÍD¤­ÌùŠ£JåÐp XÖ]0c0 ÂÚ§Õ„Ù„Ïñ-Žà$þÆM¤ªÂëäCñ*I¯KEâÖÄCh!¤Óžç=1£0sðVy½G˜µØˆ-ø _á[ü€Ÿp§p>ƲÿCøªªó <¦GVäD~A‰ª‘Ó*G˜j¨‡‡ÑÐ Ïc&á,ˆ"½h¦e¤³Ÿ`'¾ÕÒ=Ìã œÇ5øï£^ÈqŸ5~æ‹ 8J¡*ÝšO4SUâUG-ÔCC4A3´@k´EtÁÓè…¾xΖç`æ‡`(†a8FÄP®‘„}£0c0/â%ŒÃxLÀDLÂdLÁT[>Ó˜Ÿ‰9˜‡X”Ä6ZJ¼åX…µØ€MØ‚íØ‰¯°ûðã(ŽÛò<Éü8…Ó8ƒ?c(×YžÃyü… øq ÿà2®à*®á:n Ñ–ÏMæ½ÕègˆGj¤«¹  “Ùq'r#  °-~Qæ‹£J¡ ÊEÈ£ë+¡2ª¢ª£&jÙâÖa¾š£Mewš:¯'úc(Æ`fba9Öb¶ã+[^û˜ÿ¿âÊqž°—qû9ž râ®ûÝãe]ÔD#´B'ô '¥§¡ä53±Ë±Û±‡qå2U§nÈB(ƒjh€æh‡žÕÝózžu£1¯bVbc˜8±N;Hk~Ä ü…ˆ¯Á9 ò (Ê£:Ds<…§1#1¯àÍîy-gÝlÄVìÄnìÇm:Bœã8 ¸*§Q“r#=²!7 ¢8Ê¢2j £9ž@‡šîùtg] ÄpŒÅ$ÌÇmšKœ7±+±c;vá[ÄQü޳¸„ð=ÀX…LÈ|¸çS„u¥Q !E›0q¢™:¿b$Æc:^Ã"¬Àú0ylfÝìÂ^À‹P®?X—pÞZlg¤CÜYË9^>–—F 4ÅSè˜ê'¥¦7H%6c7~Æ9‘¡6eCiÔ@S<…Þ©x+±»]>¤þ3ËOàO\ÄuHu8GFÆ:I+÷ÄË‹Â(ò¨ŠÐMÑO¢z /¹ä7’åc0“0 31ó’XFyZ@ÜEXŠåX…µØ€MØ‚íØ‰¯°ûðã¨KÞÇY~'q gpçq!Êò^$Ü?¸‚k¸›Ú—Hð# H´H_×9­Œ,Ï2¨‰‡Ñ}0Ò%NJMÓHVa öà(ÎËùÖ£lÈ2¨‰‡Ñ}0Ó°«°¥žs{X~?á7œÁ߸oý¤•;xyP÷ ª &ê£ CtÄÓ.ù=Ëò„axc1““XFyz™¸³ð*^Ç›xï`Vc>ÄÇØŠø_c¯KÞß³üâGÁÏøÇ¢,ïo„ûà4þÄ9ü…¿q —qבˆ KÚÞôqÜ(‰Ê¨& ’Övòô8q;¡7c,¦á5,ÆjlrIÿs–ƒïqÇp áJÊ$N܃“¹PÅP÷¢úƒÎqë²¼Ek´G7ôÆsæ/¥¦1¤?Óñ*` ÞÃ:l§ø{ñ~Æ ü‰‹¸©!ÇdÄÈ‹Â(ò ó®Êòꨅzhˆ&h†hí/ÒÔ–xÐO£úâ9 ÆpŒÂ‹˜€)˜ŽW0󱋱 ï¹”ã}–€M؊ϰ {ð=%±üöégÒ9Ž?pã !=ÄùÒ"²#ò£0Š£4*  ª£6 1š=äœgK–?§Ð]ѽÑ]âEš†oFã%LÄTÌÀl¼†7ð–à]¬Ä|€°Ÿâsìr)Çn–‡ø?ã~ÇiœKbùíÓߤsׄ¯ÛiYpr! ân܃Ò({qj 6êã¡FÎù5ey3<†VxmÑÐÕ%žÛô4áŸAôÃs„¡Q‹q˜ˆ)x31sñ:à-—¼³|9ÞÇ|‚íø{°?Æ2Gš“Þ¯8‰³¸ˆkr§‘™‘yQÅQ•P µÐMЭÑ]г±s¾}Y>Ïc†ãŒÁK˜àÏmšLøi˜Wð*æá ,ÄÛXŠwñVc->ÀF|Œ-øŸ¹äýË¿ÁwøGð+~Çüc™Åéâ^—ã7ñxH ÈŠ;‘Q%Q®‰s:÷²ü>Ô@mÔÇChŠGÑÒ%^¤é â=…ŽèŠè~ˆ!Ñx ]ò™Êò阅9x óñ&aI„ò-cý ¬Â¬Ç‡Ø„ÍØæË?ÇØ…¯±{ñ¾“ïÖÄ8‚Ÿñ Žá7üî÷–_A|SŽ5(Œ ¨Ý4|“;5#ýö胘‚×±áKÄI\FÜÃO6ByÔÂ#h‡Þ._Î6œå“0K±Ûñm4_æÃt”ôÎâR?Â8„"¨€Zxmу1¯`ÞÇ|ƒÃ8§Šåçñn@jÆë"¤o–´òf%^NäG”@9TFuÔAC<Œhƒè†^èï’ï`–ÀŒÇÌÀœËù:áb –c5Öã#lÁ|‰Ý؇ƒø ÇpÒ%¯?Y~G9¯BCÅGc+[¬Ó¤ß£3žÅ0ŒÇ,¼‰ø;°Gð.ÁÛœ×!¸…Q÷ãÁæÎù=Æò§Ðý0 /áe—ð±N¯‘ÎÛX‰ñ)¾Æü‚Ó¸„ R=Æùòàn”Å}¨‹¦xsÎç–?‡‡—1o¹„4-'Þ:|‚ϱñ+Nã"ׂcrà.GyTCÝÎi7ayK´CwôÅŒq išL¼Wð–b56âS|…ïñ~Çy\…Ô’sTdEiéœvi–WAm4FK´G—ðÑNˆ?ã1¯c Vã#ìÀn—<²üWœÆE$"®Û¡UìåÈAœ»PåQ uÑ-ÑÝ]ÒíËò¡xÓ0‹ð^ÊaŸ6Æ6|…ý8ŠS¸ˆ›HxœsXäF”yÜ9ª,¯:xMð(Z¹„§' Ó]ÑÏâ9 ÁHŒ" }š@Ø7°_à'ü„Öô?”C}´Á³x±uôiÿ·M¯QöUØC8ÿŒÉ(…Úh…g0 ³±[±§!!l6G 4Gw Ç ,ÅÇø¿ã2=I_À}x1øÉèË=•°¯ã]|ˆÏñ=Žá/‘®-¯eQ ÷¶½eM2Õ%¯Gѽ1 ñ*–`>Å^üŒ?q©žâõ7 £<@S<‰„—0 oau _¾»™°_ãGü˴ㆻP÷ã!<Ž®íR¾]ôiiÆËx+ð¾Àü†¿ámÏ8‰<¸UP¡#žÅLÆkx`¾Ã/í£/Ó9Â^C ƒÇ“¹PeQ õÑ O¢úuH^ 'þxÌÄX†uØ‚]Ø_p—!u¤?# ¢ª š¢5:£†tŒ¾/v:æcÖc¾Á!œÀÜDêN¼Žê”¼zÇ2 ¯R¨Šzh†¶xÏa¦`.ã}|‚/±¿â,®!®3Ç äEqTB-4é}yZ¶#zb†ã%LëXˆw±ã³Òv›v“Æø§ð7n Ð…×H¸ùQ åpê 1Zà)tó]¢Ïs0aÇb^Ãb¬Æ&|Žoq'ñ7nÆv¬Sª®œ÷!Š£"jâ!´@{ôÄ@ŒÂdÌÁ[xb;vã~Ãy\G\7ŽCÝ¢/KnÂDq”EeÔ@=4Fs<èŽ>1¤­O‰3c1 30ob)Vb=>Ævì·8ˆ£øgq 7bÈß×c8îF<„'Ñ/`ÞÆø?v½n·jú“²‘éi¶*¢>G ÃT¼‰5Øøב®ý eQ¡+a"^ÇJlÅwø —‘ª'Ç ”ì}Yk¶)žBoŒÀT¼•ØŒÝøçŒ!픚2ÁW8„“øþg9Î!?J=›¼z‡›ª‘vC´BôÇ(LÃ|,ÇFìÄ~ǹ<}9n!7Š£2ê¡9: †cæbißèË´ž°›±{qÇp—pñýè3¸ú%¿î! ¸õЭÐO£†b,¦`6༰_c?~ÆIüCÙ®6Пz!Š ,ª¡>šáItC? ïŸüzëÓxÒš‰7° ë°»°¿à .CÀ~(ˆR¨‚:hŠÖèŒ>¢ÏaGc"fà5¼…w±áSìÂwø1†´¦cÄ?¿q¾ç<ž4È‚\(ˆ{P÷¡6£xÑý0£1ñ¹èóŸAØ×±«ñv`7âþÄexR¶‘ÓŒfÊF:ùP åq?êã<ÎèAɘ7ñ.Öa3¾Àw8‚ßñW å»NØÔϳï¢(îE=<†Nè‡Qx °òù”©{´Ó'ä÷5ã4®!Õ ú;îF%ÔEstD_¼€ixï Š>¯ û%à8þÂM¤L~(Œr¨Fx<–щqêBÚý0“1K°[ñ ~ÄI\‚4„säF±!ÑçS‰°5Р5:¢'`8^Â4¼Š…1¤­Oïg->ÆgØð NáoÜ@`hôi¦'l6äFAGYTF ÔCc4ÇèEÚÝ Ó1c1 30ob©ÎJž¯Áø›c(ÿ§„ý»°ßá~ÄÏ8†ßqZHóÏÏã/\Àß1äw‘°—ð.ã ®â®ãqSH3(?Ƙ ¾aÑçç'lqˆGR!5Ò -Ò!½fžgBdsÈë–݉\ëò°¬îA¹Ê©OUˆSõÑ¡ :âi<‹çÒÁ²±˜Ež/f6^·…}‹ù•øŸã;üœ„:ÈÓiâ]–·ÕpÚ¹p7Ê£BKtDïáÖ¸C˜…ñ˜†Ù˜?Ü9ŸHÓÛÄ[Ž5؈­Ø‰ÝØ#8ŽÓ¸`Ëã*ó7„4‚~„„I+Gâ¥G&dÅȉ<È‚(‚b(aË£4óåP•qª'±¯ê£!ãa<Šxmð:ØòèÌ|7ô@/<‹þI,Ç@â Æ0ŒÄh¼ˆñ˜„©˜ŽY˜cËã5æçãM,Â,Kb9VoÖ`=>Ä&lÆ6ìÀNìÂ7¶<ö2Gp D(Ã9Ö_ÂuxGZ×Å3Ÿ™¹ß&Ú©0ñŠ£4*  ª£6 1š¡%Ú =ºØòêÁ|oôÃ@ Áˆ$–g4ñ^ÂDLÅ ÌÆkxoa ÞÅJ¬Á¶¼>b~3>ÅçØ…Ý1–ç;ÂÀøÇð;NãþÆe\G¾Ø./XÓHÃ|zdBVÜœ¶0‘¦<„Ï‚(‚b(Ò(‡Š¨ŒûP Ž-úÌ7Dc<!ÿGYߣ-ìSÌ·GGtvI§+Ë»£ž “WoÖ ÁK˜7ð.>ˆ±}¢™>%ÍÝø¿ão‘fÛQ÷¡>ÅSè1Ê=ͬ‰ñ˜Ž×°+ÂÄ 7­'ÞfìÄ^Â1œÁ%ÜDüh^ÛãNÀ=a~¼²몣š¡ º O4?xã4˜4Ç` æ`!–c=¶àKìÃO8‰ ¸¦qc8ÏBVäBC™1±—í^âTG]4£höè†ÞxÃ0Ãä1u¯aV`}Ê£O›‰»{qǤu†up7á>íԬψìÈí¶ËŠ 8J¡*¡*ªGHÛiªEœzhˆ&h†h¶è€.x½Òï˲~èxñ<ÅPžÁ„‚¡†á‘x£0c0Ö!ÝYöÆa<&`"&ar å˜BØ©˜†—130³ð fc^uHw.Ë^Ǽ…Åx˱2 Ûç}â¬Ã|„O°Ûñ9¾ÄרƒïÒßϲƒ8ŒŸñ+~ÃIœNByÎç/\Äe\C¢œÎ‹G‡TH‹ /†ÆÏ̲lÈ\È‹»Pw;„w›Š¶$Ê <*¡ ª¡j¡.à!‡t›°¬5º /†cB ùG;½Bš ñ6â3|‹Ÿp ÿ@z‰s äD”Cõ—"§Ý0-н0/b:æG?¹Ó2òXmø‡pp©Ç1Ž¡J¡*ê¡Ù¸Èi·%LWôÁ ŒÂDÌÄëQÄw›w%6`+¾Äw8Œßp—åôÇÓÇ»§“™uùQ ÕЭÐý1 ÓÂÄOê4Ÿ4—c#vb?Žã‚œ×úr£8*£šOpO¯ë:£z žE Ä` ?Ü4’x£ñ"Æc¦b:fa^Ã|¼&E¬[‚eXUXƒõø›°9‰eÜF¼؉]ø{±pGpÇÂäq‚uáâ'Ò?EQÕñàĤ•1ÜÔœ4ŸÂÓ€‘˜ˆWð&–ãlÃ×øÇ”ã,ë®Â?‰ñ9Qepêá‘I)_6¤Ù}1 ã0óñÖb3¾Ä÷8ŠÓaÊñë‚H˜Ìk8äDA”@ETGýÉI+ëÃÄ{Ðý1 /b*æàM,Ú0ylbÝ6ìÄ7؇C8Š8ƒ I,c¸é iÞ„ c42";r£Š¢* *j¢¡Z¡í÷ô;±®z¢úãy ÅHŒÁ¸0ñ£™&fbæaa)–cÖb6a ¶cg˜¼¿bÝìÃ8Œ£8Ž“8ƒóÉ,ûEâ_Á 9©l$ -2"+r 7ò£Š¢Ê ÂT÷´+³®j¢ Fs´B›0ñ#MíˆÛ ÝÐ}ÐÏc(Fb Æa¦a&æ`„É{ëÖ`öâ(Îá&ÒM£=¦%½Ü±N÷WU<ˆVèŠç03ñÞÇVìÁÏ8‹D¤}™s[G•—ÝóhÀºæh‡žxc0 ó°4LÜh§µ¤±_áÇyÜ@Âtúò£*£F›éîivc]ŒÄ$ÌÁ"¬Â&ì 7¥§}äugpþìCÈ¢¨€šh„Vè„>Šq˜‰X>Ã= ¬ÛŠ/ñã7œÅe9ÞÌä×#idF.BITB 4À#hŽè‰Ž—’÷4â,ÄZ|†p 7~ýåP-Ð ƒg%¿Ž·zšDçc¶aNà R¿BŸ@)ÔD3tÂs‡¹XŽO°¿â"âf3£øìØËS8¢:¢†afcVãìÂø- ùD;] í ÒÎñxîD”GM4FktE¼€)x K±Û°{Nìù&ÎI\”ã¾JþÈB(ƒjh€æh‡žxþÕ¯¾1!íi˜‡¥X‹-ø ?à8Îãæ2F"?J 2êàá¹±çÛ†8ÝÐ#1 s°«° ;±GqW’O´“ÿ5ÆJäFQT@M4B+tB Å8ÌÄ,ÇlǞ׬ifþÎãüóSæÅV®„/€¨„šhˆæh‹n¶ôú2?£0Ó17Š<fÞÇFl×¶xß2ÿ~ÂqœÂù(ëóán@z~„ôÈúº5LNæs#/ò£ ½îœ^–Eq”@)”A9T°Å©Ä|TC ÔB]—tÅ©aB<‚æh&^kÖuA_ Ǽ‚…x/Šü’:m$íÏð-~Â)üi>팜(‚r¨Ž†hè5ß=ÝÁ¬… ˜Ž¹Xˆex?L¼òv¾Ä·8„_q p Ò—9ßpO«ëîAÜzhŠVh&^´ÓÓ¤ÑC1S0 ðÞ“ÇG¬Û†/°ð~Ùeû›õ×à]Àþ ȾÀ=|ÖFITÄý¨‹Æx,L¼pÓ“ÄëŒg0Ã0“1+Lš¯³îM¼w°«±F(ËǬߊø_c/¾ÇA ÿÖÀiœÇ%\Cþ7Ãç«O©—YyPw»Ä/Áò{Q Ñ Ñ ƒ0&Ê|ݦ©ÄŸ‹·± á3ìÅaüŽ HDÂBç4²°ÃrIï8ËÿÀYü+H„ô¶Ç´o‡Ï/ë³#ò£0Š£4*¸Ä­Âòê¨hŒfh‰6h!Ï.¬ï>€Á1ïw ËgcÞÁûøÛñ5öGÈÓiú™8'ñ®Á·˜öB¶ÅÎáó²¼(Ê¡êáa´F'—8ÑN½ˆÿÃ0“1 ¯ãí$ä¯O+ˆ»c¾Æ÷8‚ßð'.¹¤ŸÈò¸¥‡‘w¡8Ê£ÚÒØÊQ—ðMÐíÐ}1c0¯à —t—²|6` vb~ÀÑ(Ër’pçqEÿÇdDŽwœÃçgyaGiT@TGm—8úÔ€õÑ -Ñí#ħ.„íQ˜†ùXŽØ‰ý8Ž ršË¢O7¥§ôäÅQõÐÐÃ1 s±ë±ßâ(ÎâR¿Ëvx7ú|‹¶4*ã4Ä£hƒÎè…‰ñ1¤;°¯aV`=6c'öâŽá .á&â—GŸ~FÂæFQT@M4B+tB Å8ÌŒ!ÝpÓÒYŽ ØŽ=8Œ“¸(籂±9PeP ÐíVDŸWOÂ>1˜†yXŠµØ‚¯ðŽã| éFšnVÂ{œ‡ ?J 2êàa´A7ôÇHLÂ,Â*lz/ú¼vvŽâ ®À¿’m‹Ü(Š ¨‰F+S®ŽâÔŠt;¡†bfb–c¶cO ù&ì œÇ5øW±#  *¡&®J^ù›¿-º¡/†âELÃ\,Â{1ä±°[ñ%¾Ãaü†³¸,§³š×9ÈŒ\«c/o!â”D%Ô@<‚ÖèCz= ÛC1“0ó°˱›°=Bº_±~ã8Îà"nÄPÿûô[äFQT@M4B+tB Ÿ÷£O7)ÓLÒ_€åØ€íØƒÃ8‰‹rþk«…ÖDŸvÂVFM4ÀÃh…vè†>x#1.BºÓX? °«°[b(Óä…?â€ÔH‹ôȈÌÈ‚¬È†ì¸9p'r"r#ò"òã.È?u/ÿ<}!ö(?î¹E!ÿ qq܃(‰R(-·äŸf”NQþIBùçüäŸà“‚Nþ¹7ùçÕ䟓ZKþÙ#ù'hj@þy ù'$äŸ ¿†_þzsùk©µ¯ÃõÈ_Û)¤üµ†òWåÉ_A'íšüfò×{É_Ã¥}•Gþ*)ù+Ÿä¯Hjù«€ä¯ì‘¿Gþ ›Î¿¶¤+ä¯É¿Îâiô€ü• Ï@þÚí#ëù#ÓòÇtå«ÊÓ”?Z(äLþ8ÐHÈ·¯Ë·6k·3zäÛÀä[~äÛeä[Mä[1´·ì=ò[ÑòÛ³ò[ú[€ò[d¯@~ G~ûB¾4._*–/ƒÊ—åËa _.‘/GÈ/Óå—ªòË1ù”\>M•OíäÓí0í‘Sò.ïâÚîàY‹uXð!>ÂÇØŒ­ø;ð9vâ |‰]ø»±ßböãÂaü„£ø¿âŽãNâœÆŸ8‡¿ð7.á2®â®ã„—N/Á8$ 5Ò"=2"3² +²!;r 'r!òá.DaÜb¸%P¥PeQP •QÕP5Q uPõP ÐÐMñÅch‰ÇñžD[<…vhŽèŒ.膧ѽÐ}ÑÏa žÇ ÆP Ǽ€Ñ‹—01Sñ2f`fc^Å\ÌÃ|,ÀB,Âb,Å2,Ç{X…÷±k±àC|„±[ñ)vàs|]øß`7öà[ìÃ~ü€C8ŒŸp¿â8Nà$þÀ)œÆ9üË¸Ž | ”ñHƒtÈ€LÈ‚l¸9¹‘ùQQw£îAI”B”CTBeTÁ}¸5ðj£ê¡¢š )Á£x -ñ8Z£ Ú¢: :£+º£žAoôA_ôÇsxƒ0C1#1 £1/b&`¦`*^Æ ÌÂl¼Š¹˜‡ùX€…X„ÅX‚¥X†w±+±k°`>ÄGØ„O°Û°Ÿa'¾À—ø _c7öâ;|8ˆCøGðŽâWÇ œÄ)œÁYœÃy\ÀEüƒ+¸†¸ qâé‘Y‘9¹‘ùp ¢0ŠànEq”@)”AY”CyTĽ¨‚ûp?j &j¡ê¡¢£)Á£x -ЭÐmÐíÐÐÑÝÑÏ 7ú /úã9<ÁŠa0cñÆc&a ¦a:fâÌÆ«x ¯ã ¼‰·°‹±˰+°«±ë°°›ð 6c+>Å|Žø_áìÁ^|‡ïqq‡ñŽâWÃoøà4Îà,Îã.â.ã*®#7!Ÿ€Ið#ñH@j¤EzdD&dFVdGäDnäA>Ü…‚(Œ»QÅQ¥PåPq/ªà>ÜꨉZ¨ƒzh€†h„&xÍÐ-Эð8Z£ Ú¢: #:£+º£žAo<‹~€„!ŠaŽx£1/a&`¦`¦c&^ÁÌÅ<ÌÇ,Ä",ÆR¼ƒex˱+±k°àC|„±[ñ)vàs|]øß`7ö`/¾Å>ìÇ8„Ãø Gñ+Žá8~à œÄ)œÁYœÇ\Ä?¸Œ«¸ŽDá 0ì €x$ R# Ò!2! ²á܉\ȼÈ(„"(Šâ(’(…Ò(ƒr¨€J¨Œª¨†ê¨‰PuQâ!4FS<‚fxÍñZâq<'ñÚ£#:£ ºáiôD/ôA_ôÇsxƒ1Ã1#ñFa ^Ä8LÀDLÆT¼Œ˜…Ùx¯áu¼7ñám,Ƽƒw±+± ïc-Öc6b>ÁlÅ6|Šíø ;ñ%¾Â7؃o±ßãâGÁÏøÇðNàwœÄ8?qáo\Âe\Å5ÜÀMÈ/%ø‡¤FZ¤GFdFdE6dGäDnäE>Ü…‚(Œ»Q ÷ $J£,Ê£"îEeTAU܇ûQ 6ê  !¡ F34G ´Bk´Á“h‹§ÐÐ ]Ð ÝÑÏ 7žE? À@  ü€Q1‹—01S0 Ó1¯`æbæcbc)–a9ÞÃJ¬Âj¼5X‡ð!>ÂÇØŒ­ø;ð9¾À.|ÝØ‹ï°ßc?àÂaü„£øÇq'ñNá4Îà,Îã.â\Á5Ü@"‚ðÆ3!€x¤B¤Czd@FdBdø¹ùp  Š (Š£J¡ Ê¡*¡2ª¢ª£&j¡6ê .ê¡>ÄChŒ¦xâ1´ÄãxOâ)´GGtFWtCw<è‰^胾èçð<c(†c$Fa ^Ä8LÀ$LÆLÅ4¼Œ˜…Ùx¯áu¼7ñÞÆ¼ƒw±+±ïc ÖbÖc#>Á6|†/ñ ¾Å~ü€C8ŒŸp¿â8Nà$Ná ÎâþÆe\GPÞþ l{¤AdBdø¹ùp ¢0îFQ”@T@eTCMÔA4D#4ÁÃh†æhVh6h‹vhÎèŽgð,`†áŒÆX¼„ñ˜ˆÉ˜Š—1³0¯b.æc!cÞÃûXØ„O°Û°Ÿa'¾ÄWø{ð-¾ÃüˆŸq ¿ã4Îáo\Âe\Åu$"o*ÚÄ#Ò -2"+r 7ò£Š¢J¡ Ê¡*¡2ª¢ª£&j¡ê¢>DC<„Fh‚‡ñšáQ<†–xO  Ú¢: :£ º¢;z 'žA/ôA_ôÃ Ä ÁP ÇHŒÂŒÅ‹x ã1“0S0 Ó1³0sð*æbæã ,À›x oc ÞÁ2,Ç{X…÷±ëð>ÄGØ„O°Û°;ð9¾À.|o°ßböãâGÁÏ8Š_q'pà4þÄ9ü… ¸ˆp×p‰›šþ?â€ÔH‹tÈ€LÈ‚lÈŽȉÜÈ‹|¸ Qw£(Š£J¢4ʢʣ*¢îEeTE5ÜxµPõPâ!4B<ŒGð(C ´Bk<'ñÚ¡:¡3º +º¡;žF<ƒÞ胾èˆAŒ¡Žx£1/bÆc"&c ¦a:f`fcæb^Ç|¼x ñám,Æ,Å;X†w±+ðVbVã}¬ÁZ¬ÃzlÀ‡ØˆMøŸ` ¶áSìÀçØ‰/° _ákìÆ|‹}øp‡p?ágü‚c8Ž8‰?pâ,ÎãþÆ%\Æ\à $"oÎKáGâ‘ i YÙpîD.äF^äGBE1G ”B”EyTĽ¨‚ûp?jàÔBmÔA]ÔǃxÑàQ<†h‰VxOàI<…ö耎茮èŽx½Ð}ÑÏa žÇ` ÅpŒÄ(ŒÆX¼„ñ˜ˆI˜Œ©x30 ³1s1ó±ob!a1–b–cVb5Ö`>À‡Øˆð16c+¶a;>ÃN|‰¯ð vc¾Å>ìÇÄ8‚Ÿñ Žá7üŽ“ø§qgqpÿà ®áqò›[^ø@Æflŧ؎ϰ_â+|ƒÝØ‹ï°ûqñ#Žàgü‚_q'ð;þÀ)œÁYœÇ\Ä?¸Œ+¸†HDPÞ¶éØ¶ ©i™‘Ù‘w"ò îBDaÜb¸%P ePP•PUQ ÕQ 6ê¢>àA<„ÆhŠGÐ ÍÑ­ÐO  Ú¢: º +º£z¢zãYôÃ Ä ÆP Ǽ€Qƒ10 S0Ó031 ³ñ*^Ãëxob!ÞÂÛX‚¥XŽUX‹ ؈Mø[° Û±_àkìÅ÷8€ƒøGð3~Á¯8S8‹ ¸ˆp×p7„/=}i™ÙpîD.äF^äGBE1G ”Bi”EyTĽ¨‚ûP ÷£@-ÔA=4@C4B<ŒfxÍñZâq<'ñÚ£#:£ º¢žFOôB<‹¾èçð<c†a^ÀhŒÁX¼„ñ˜ˆÉ˜‚i˜Ž™xs0¯aæcÞÄ[xKðÞÅ ¼‡•X5X‹õ؀؄O°Û°;ð>ÇØ…¯±{ñ¾Çü€ƒ8„Ãø Gñ+Žá8Nà$Ná þÄ9ü…¿q ÿà2®â:„'çH@ZdDfdEvä@NäFÜ…Â(†’(²(ЏUPÕQ õÐУš£Zâ <…ŽèŠîègÐÏ¢úã9 Ä ÆP ÃŒÄ(ŒÁX¼ˆq˜€‰˜„É˜Š—130 ³1s1óñÞÄ[x‹±˰+°«±k±°áclÆVlÃv|†ø»ð5vc¾Å>ìÇÄ8‚Ÿp¿â8Nà$Ná4ÎàOœÃ_ø—pWq ×q‰¸‰ ä`¼àƒÄ! H…ÔHƒ´H‡ôÈ€ŒÈ„ÌÈ‚¬È†ì¸9p'r"r#ò"ò£ ¡Š¢Š£J¡4Ê¢<*â^TF܇ûQ5Q uPõÑ ÑÑàQ<†h‰ÇñÚ -Ú¡:¡ º¡;žF<ƒÞxý0ñ<a0†b8FbFc ^Ä8ŒÇDLÆT¼Œé˜Y˜9˜‹y˜XˆEx‹±ïà]¬ÀJ¬Æ¬Å:¬ÇlÄ&|‚-؆O±;ð9¾À.|ÝØ‹oñöá{ìÇü€ƒ8„qGð~ÆQü‚_q ÇñNàwœÄ8…Ó8ƒ?qçpáþÆE\Â?¸Œ+¸†¸ O&ú3$ø‡x¤B¤CdD&dA6dÇÈ;‘¹yùw¡ ¢ £îFQCq܃(‰R(2(‹r( ¨ˆJ¸•QUqªá~TG ÔĨ…Ú¨ƒº¨‡úh€Ñ¡£ šâa<‚fxÍñZ %Záq´Æhƒ'ÑíÐÐÝð4z 'žAo<‹~€„Á‚¡Ž‘…1xã00“1/cfa6æàUÌÅ<ÌÇ,Ä[X„ÅXŠwð.V`%Vã}¬Á:|€ ؈Mø[°Û°Ÿás|]ø»±{ñ¾Ç~ÂOø'p§pgqã2®#ofÆ]¤EFdEäDnäE~Ü…(ˆB(Œ"¸EQ ÅqJ $J¡4Ê ,Ê¡<*â^TFUTÃý¨P µQuQõÑ ÑÑ Es<†h‰Vx­ñÚàI´ÅSh‡ö耎è„Îè‚®è†îx=Ñ ½ÑÏ¢/ú¡?à9 Äó„Á‚¡†á‘x£0c0/â%ŒÃxLÀDLÂdLÁTLÃ˘Ž˜…Ù˜ƒ¹˜‡×ñÞÄB,Âb,Á;xËñVa5Ö`Öc6b>ÁflŧØÏ±_àKìÂWøß`7ö`/¾Åw؇ï±ðâ~Äaü„£øÇñ~Ç8?qçqñ.ã*®#AÈ7ØJð# H…4H‡ È„ÌÈŠìȜȅ<ȇ»P…PEQ%P¥PePåPP•p/*£ ªâ>TÃý¨Ž¨‰PuQ¢!B#4F4ÅÃxÍð(šã1´@K´Âãh'ÐO¢-žB;´GtD'tFtE7tÇÓèžx½Ð}ð,ú¢?žÃóŒ!†x£1/b&`&c*^Æ ÌÂ+˜ƒ¹˜‡ùxoâ-¼%XŠeXŽ÷° «±ëð>ÄFlÂ'Ø‚mø;ð9¾À.|…o°ßb¾ÇÄ!üˆ#øGñ ~Å1Ço8ßqàNã þÄYœÃyü…¿q —q×p7„7+ã5ˆCR#-Ò!2!3² î@܉\ȃ|È(„"¸ÅpJ¢Ê * "îE܇j¨Žš¨…Ú¨‹úx ÑMð0A3<Šæx -Эð8Zã ´Á“h‹§ÐíÑÑ]Ñ=ÐÏ 7žE?ôÇsxƒ1Ã0/`ÆàEŒÃxLÄdLÅ4LÇL¼‚Ùx¯áuÌÇ,Ä"¼%xïb9Và=¬Ä*¬ÆûXƒµX‡õøð!6â#lÂÇø›±[± Ÿb;và3|Žø_b¾Â×ø»±ßaöãÄ!üˆÃ8‚Ÿð3ŽâüŠc8Žßð;þÀ)œÁYœÃ_øñ®à*®#7!ÀA‚Ä#©‘é™Y‘wàNäBnäA^äC~Ü…(ˆB(Œ"¸EQ%P¥QåP•p/ªà>TCuÔĨº¨‡hˆ‡ÐMñ0š¡9CK<ŽÖhƒ¶x íÑÐ]ÐÝÐO£zâôBoôA_ôÃ<‡ç1ƒ1C1 #0£0cñ"Æa<&b¦`*^ÆtÌÀLÌÂ+˜9xsñæáuÌǼ‰·°‹±ï`–cVbÞǬÃzlÀ‡øãlÁ6|ŠíØÏð9vâ |‰]ø _ãìÆ^|‡}Øp?â~ÂQüŠcø ¿ã$Ná þÄ9ü… ¸ˆpWq7ˆ›Bþ°Ž|ð#€8Ä#©‘é™Y‘wàNäBnäE~Ü…‚(Œ"(Šâ¸%QePP÷¢ ª¢ª£@mÔA=4ÀƒxÑMñ0A3<Šæx -Эð8Zã ´Á“h‹§ÐíÑÑ Ñ]Ñ Ýñ4z 'žA/ôƳè‡þxÏcc†b†cFâŒÂhŒÁX¼„ñ˜€I˜‚©x30¯`^Åkxó± ñÞÆ,Å2,Ç ¼‡•X…Õxk°ë°`>ÄGøŸ` ¶áSìÀçØ‰/ñ¾Ænìŷ؇ý8€ƒø‡ñŽâÃo8“8…Óøçpp—pWq 7pAxï Ã8$ 5Ò"Ò##2#+²ãäÀȉ\È<È‹|È»PQ…Qw£(Š¡8îA ”D)”F”CT½¨‚ª¨†ê¨‰PuP С1šàa4Cs<†–h…Öhƒ¶h‡öè€Nè‚nx=нÐ}ÑÏa a†a^À(ŒÆŒÅ‹x ã00“0S0Óð2¦cfb^ÁlÌÁ«˜‹y˜Xˆ·°‹±˰+ðVá}¬Å:|€ ؈Mø›±Ûð¾ÄWø{°ßã ~ÄüŒ£8Ž“8…38‹s8¿pã".á\Æ\Å5\G"nBþ@¤>ø@â‘€ÔHƒtH ȈLÈŒ,ÈŠlÈŽ;w"'r#ò!?   £Š¢îAI”F”CT½¨Œ*¨ŠûP ÷£:j &@-ÔFÔE=ÔǃxÑ£šã1´ÄãxmÐíÐÑ ÑÝÐO£'žA/ôF<‹¾è‡þ€ç0Ïcc†bFàŒÆ¼ˆq˜€‰˜Œ©xÓ1¯`^Åkxo`bc ÞÁ»X÷° ïc-Öa=>À‡øãlÆlÃvìÀçø_â+|ƒÝØ‹ï°ßc?àÄ!üˆÃ8‚Ÿð3ŽâüŠc8Žßp¿ã$þÀ)œÆü‰³8‡óø ð7.âþÁe\ÁU\ÃuÜ@"n"ùÁ^HðÁ8$ 5Ò -Ò!2! ²"²#'ò"?   ãnCq”@)”FY”GTBeTÁýxµQõÑ ÑÑ š£Zâq<6h‹v耎è„ÎèŠîèžx½Ð}Ñðb†`†cFb Æa&a ¦âeÌÀ,¼‚9˜‹yxoàM,Ä[xK°ï`ÞÅr¬À{X‰UX÷±k±ëñ6àClÄGØ„ñ 6c ¶b>ÅvìÀgø;ñvákìÆ|‹}Ø8ˆq?á(~Å1Ç œÄ8…38‹óø ãþÁe\ÅuÜ@"‚ðæ¤Â8$ 5Ò 2 2#+²#îD.äA>äGD!ÁÝ(Šâ(’(²(‡ò¨€Š¨„{QUP÷¡îGuÔD-ÔF]ÔG4D#4FS<‚fhŽh‰ÇñÚ -Ú¡=:¢3º ºãiôÄ3è…>è‹~€xƒ1Ã0#1 £1/bÆc&b&c ¦b^Æ ÌÄ+˜W1óð:ÞÀ,Ä[x‹±ïà],Ç{X‰Õxk±`6b>ÆflÁ6lÇ|Žø_b¾Â×ø»±{ñ-¾Ã>|ý8€p‡ð#ã'ů8†ã8“8…Ó8ƒ³8 øñ®à®ãnBþR/|ð# H…4H‹tH ȈLÈŒ,ÈŠlÈŽ;w"'r!7ò /ò!?   ãnEq”@I”F”CT½¨Œª¨†ê¨š¨ƒzh€†xMñÅchVxO  žD[<…vhèˆN肮莧ÑÏ 7ú /úažÃó„!Šá0 c0/a<&b&c*^Æ ÌÄ,¼‚Ù˜ƒW1¯a^Ç|¼x ñám,Æ,Å;x+ðVa5Ö`Öc>ÄÇØŠO±Ÿa'¾ÄWø»±ßá{À8Œ£øÇñ~Ç83øçðþÆE\Âe\Å5Ü@"‚ðææX?H…tÈ€LÈŒìȉÜÈ‹|¸ QEPÅP÷ J¢J£ ʢʣ*â^TAUTCuÔÀ¨:¨‹z¨x ÑMÐàQ4G ´ÂãxO¢-Ú¡:¢3º¢žFO<ƒÞèƒgÑý1Ïa žÇ Æ Å0 ÇŒÄ ±xã01S1 Ó1³0¯b.æa>ÞÀ›Xˆ·ð6c ÞÁ»XŽ÷° «±ë°°áclÆV|Šø_`¾ÆnìÅw؇ï±p?â~ÆQü‚cø 'ð;NâÎà,Îã.â\Á5ÜÀMÈ_8ã…üˆCR#-Ò!=2"3² +²á܉\ȃ|¸ Qw£îAI”Bi”AY”GEÜ‹*¨Šûp?j &@-ÔA=4@C4B<ŒfhŽh…Öxmð$Ú¢: º +ºáiôÄ3è…Þxý01C0 #ðFc,^ÂxLÄdLÅ4¼Œé˜™˜…W0¯â5ÌÃ|,ÀB,Âb,Å2,Ç{X…÷±ë±± ãlÆlÅ6|Šíø ;ñvákìÆ^|‡ïqñ#Žàgü‚cø ¿ãœÂiœÁŸ8‹s8¿ð7.á\Á5ÜÀMÈ_l$Á8$ 5Ò"=2"3²";î@܉œÈ…Üȃ¼È(ˆÂ¸ÅpJ¢4Ê¢<* "*á^TÁ}¸5ðj£.êãA<„FhŒ&hŠ‡Ñ ÍÑ­ÐmÐíÐÐÐÝð4z¢ú /úã9ÜxµPuPõñ Bc4Å#x¡%Gk<6xmÑÐ ]Ð O£'z¡7úàYôE<‡ç1C1#1 cð"^Â8ŒÇLÄdLÅ˘Y˜Wñ^ÇxoaÞÆb,Á;x+°«°k°ëñ6`#6álÁ6lÇg؉/ñ¾ÁìÅ·øû°?àã~ÂQüŠc8Žßð;þÀiü‰sø ã.ã*®#7„'?ý >TH4H‡ ȈLÈŒ¬ÈŽȉÜÈ‹ü(€B(‚¢(Ž{P%Q ePP ÷¢2ª¢îGuÔÀ¨º¨ñ£)Æ#h†GñZâq<'ñÚ£#:£+º¡;žFôD/ôA_ôÇsxƒ1Ã0#0£0/b&`¦`¦c&fáÌÆ¼Š×ð:ÞÀ›x oc ÞÁ2¼‹åX•X5X‡ð!>ÂÇØŒ­Ø†O±;ðvâK|…o°ßböã~ÀAÂaü„£øÇq'q gpçpáþÆ%\ÆU\G"‚ðÞECñH…4H‹tH È„,Ȇ;w"ò /ò!?  Š (Š£J¡ Ê¡*¡2ª *îC5TGMÔBÔE=4@C<„FhŒ¦xâ1´ÄãxOâ)´GGtFtE7tG<ƒÞx}Ñ0Ïcc(†c$Fa ^Ä8LÀ$LÁ4LÇ ÌÄ,¼‚9˜‹y˜7° ±oc1–་X‰ÕXƒuøâ#|ŒÍØ‚­Ø†O±Ÿã ìÂWø»±ßâ;ìÃ~ü€C8ŒŸp¿â8Nà$Ná þÄYœÃy\ÀEüƒ+¸Šk¸›Bþ’I/| ©é™ÙpîDNäBnäA>Ü…‚(Œ"¸ÅpJ $J¡ Ê¡*¡2ª¢ª£&j¡ê¡>àA4D#4ÁÃh†GÑ-Ð £5žÀ“x íÑÑÝÑÏ 7žE? À@  Å0 ÇŒÄ …Ñ‹—00 S0 Ó1¯`æbæcbc)ÞÁ2¼‹åX÷°«ð>Öb>À‡øc3¶âSìÀçø»ð5vc/¾Ã÷Øøq?â0Žàgü‚_q'p§pgqpÿà ®ánBþòR >ø@â‘€TH´H È„,Ȇ;p'r!ò!?îBDaÜb¸%QeQq/*£ ªâ>TCuÔD-ÔA=4@C4Bc4AS<ŒfhŽh…Öhƒ¶h‡è„Îè‚®è†îègÐÏ¢` a0†`(†a^ÀhŒÅK‰˜Œ©xÓ131 ¯`æbæcbc –â,Ãr¼‡Uxk±°›ð 6c ¶b>Å|Ž/° _c7öâ;|8ˆq?ãÃqü†ø'ñNá4þÄ9œÇ\Ä?¸‚k¸›¿$W‚qH@j¤EzdD&dFdE6dÇÈœÈ<ȇ»P…q7Šá”Di”EyTĽ¨‚ûp?ª£jâÔBmÔA]ÔǃhˆFh‚‡Ñ ÍÑ­ÐmÐíÐÐÝð4z 'žA/ôF<‹¾èç0ƒ0Ã0/`4Æâ%ŒÇDLÆT¼Œ˜…Ù˜ƒW1¯a^Ç|¼7ña1–b–ã=¬ÂûX‹õ؀؄O°Û°;ð>ÇN|/± _áìÁ^|‡ïqñ#Žàgü‚cø ¿ãœÆŸ8‡¿pã".á\Æ\Åu$â&ä/c–àGi‘‘Y‘9¹‘ùw¡ ¢ £Š¢8îAi”Çÿ£èY¶-€VÝS¶mÛ¶mÛ¶mÛÖ.Û¶mÛ¶Í7^cü@̹VD¶2;¹ÉOaŠSšòT¦:µ©K}Ò˜¦4§%­iC[ÚÓ‘Ît¥½èÇ †1ŠqLb³˜ÇB–²œ•¬f-ëÙÈf¶²íìd7{ÙÏŽp‚3\à 7¸Ãžð‚7|à_øÆ~ñ‡N&þ#(Á IhÂ(Ä  HB Ò,ä ù(@!ŠPŒ”¢ e)G*Q…jT§6õiLsZÓžÎt§'½éK3œÑŒg"“™Êtf2›9Ì%€,d)+YËF¶²“½ä0G9ÎIÎr‘«Üä6w¹ÏCó”g<ç%¯yþðƒ?Nî¬ IX‘ÈD%&qIHR’“’Ô¤%=ÉDf²’ä¡E(A*P…Ô¢õh@ZІt¢ ÝèA/úЗ~ `ƒÎhÆ3™éÌ&€E,a+XÅÖ±Mlcû8ÄŽq‚Sœæ g¹ÈUnr—‡<å%oyÏG>ó•ïüä7ù_ û†P„#‘ˆB4¢ƒ˜Ä%!IIIZ2’•œä&/ù)HaŠRœ’”¥"U©ImêRŸ†4¢1MhA:Ð…ôaCÆF1†qL`S˜Á泘¥,g%«YÃZÖ±}ã׸Ç3Þñ‰oüâÿ¥´Mx"ØÄ'!‰IJrR’š4¤#™ÈB6r‹<ä%(DaŠRœ’”¦,å©HeªP•êÔ¤u¨GÑ„f´ ­iC;:БÎt¥;=éM_ú3A f(ÃÁ(Æ0Ž Lb Ó˜Á,æ0—y°€E,a+XÅÖ±Mlf [ÙÎNv³—ýä0G9ÎINqš3œã—¸Â5np‹;ÜãyÄcžòœ—¼æ-ïùÀG>ó•ïüäøGàTºAP‚‚„&,á‰H$¢Ä"ñˆO‘„d¤ %©IKz2’™¬d#;9ÉM^òS€"”  ¨DªQƒZÔ¡ hHSZÒ–Žt¦+ÝéIoúÒŸ b£Ç$¦0Ìbó˜ÏB±ŒU¬c[ØÆv±‡}à‡9ÊqNrš³œç"—¹ÂU®s“[ÜáxÄžñ‚W¼æ ïøÀG>ó•ïüä7ùÿŸcüÿB0B’Є%<‰LT¢“XÄ&.ñI@"’Œ¤" éÈ@&²•ld''¹ÉK~ R˜¢§$¥)CYÊQJT¡5¨EêÑ€F4¦ MiNKZÓ–öt¤3]éNOzÑ›>ôcƒÂ0F0’QŒa˜Äd¦2™Ìf.Ìg‹XÂ2V°’Õ¬e=ÙÌV¶±ìf/û9À!ŽpŒœâ g9Ç.q…k\ç6÷yÌs^òš·¼ç#ŸùÊw~ð‡ÀiìBš°„'"‘‰Jtb‹x$"©HC:2‰,d#¹ÈM~ SœÒ”¥<©LUªS“ÚÔ¡MhAÚÑNt¡=èEú2¡Œd,ã™Èd¦2™Ìf.óXÈRV²–õld3[ÙÎNv³—}â§8Ç.q…kÜàw¸Ç}óœ×¼ç#ŸùÊw~ò›¿üÿm”„%"‘‰Jtb›¸Ä'!‰HF*Ò‘‰,d#¹ÈC> PˆÂ§4å©LUªS“ÚÔ¥> iLZІt¡=èEú1€A a(#ËD¦2™Ìf.,`KXÊJÖ²‘­lg'»ÙË~r˜£ã§8Ã9.p‰+\ã·¸Íîñ€G<á)ÏxÁ+ÞðŽ|â ßøÁ/~ó‡ÿŸ[:;— #8! MX‘ÈD%:1‰M⟄$&)ÉHNJR“–ôd$3YÉNNr“‡¼ä§ …)J1ŠS’Ò”¥<©LUªS“ÚÔ¥> hH#Ó”f´ mhG:Ñ…nô }èG0A a(ÃÉhÆ2ž‰Lf*Ó™Élæ2æ³€E,f)ËYÉjÖ²žlf+ÛÙÉnö°—}ìç ‡8Â1NpŠ3œã—¸Ì®qƒ[ÜáxÈ#žðŒ¼â ïøÀ'>ó…oüàøGàôîoþ#(Á IhžˆD& Q‰NLb—ø$$‰IJrR’š´¤'#™ÉBV²““Üä%?)DaŠSšòT¦:µ©OcšÒœ–´¦-íéHgºÒ^ôcÃÅ8&1Ìbó˜ÏB³”å¬`kXÇ6±…mì`'»ØÃ>pˆ#ã8'8ÅÎqK\á7¸É-îp<â ÏxÎ ^ñ†w|à_øÆ~ò‹?ü#p9”à„ $¡ Kx"™¨D'&±ˆM\â“Ä$%9)HIjÒ’žŒd&+ÙÉInò’ü¤0E)N JRš²”§"•©JujR›ºÔ£> iLSšÓ‚–´¦-íéHgºÒžô¦/ýèÏ@3”áŒ`$£Ëx&2™©Lg&³™Ë<XÀ"–°Œå¬` ØÂöp€#œàg8Ç.q…kÜà·¹Ë}ò˜§<ç%¯yË{>ò™/|åßùÉ/þðÀõ‚ '$¡ Kx"™(D%щI,â$" ÉHA*ÒŽ d"3YÈJ6r“Üä%?)LQŠS’Ò”¥<©DeªP•êÔ  hB ÚÐ.ô }èÇ1„aŒ`£Ëx&2™©Lg&³™K XÄb–°”e¬`%«YËz6²™­lg'»ÙË~rˆÃá(Ç9Á)ÎpŽ \â ׸Á-îp<äyÂ3žó’×¼å=ùÌW¾ó“ßüåÿp˜ÿñAFpBš°„'"‘‰Jtb›¸Ä' IDb’’Œ¤" éÈ@&²ä"ùÈO Rˆ"¥8%)MYÊS‘ÊT¥:5©M]êQŸ4¤1MhF Zцvt ]èFzч¾ô£?Ä`†3šñLf:³ `KXÆ V±†ul`[ØÊNör£œä,¹Êunr›»Üç!yÊs^ð†|áþ?ÛÌæž„&,á‰Hd¢˜Ä& HB Ò,ä ù(@!ŠPŒ”¢ å(OeªS›ú4¦9­iOG:Ó•îô¤7}éÏ@1ŒQŒcÓ˜Å<²˜¥,g%«YËz6²™-ì`8 Îp+\ã·¸Ã=ðˆ'<ã9¯yÏg¾ó›ÿÿAhBŠ0„#‘ˆB4b‹ØÄ%> ILrR“žÌd%;9ÉM^òS¡(Å)IiÊR‘ªÔ¤.õiHcšÒœ–´¦-íhOgºÓ›þ f8£ÏD&3•éÌd6s ` YÊJÖ²‘­ìd/9ÌQŽs’Óœå<¹Ìnp‡<áoøÀ¾ñƒ_üá³Úc%8!EÂHD!1ˆI,âø$$1IINJR“–ôd #™ÉJ6r‹<䣅(B1ŠS‚R”¡,å©HeªRšÔ¦.õ¨OCÓ„f´ mhG:Ñ…nô '½èM_ú3Á e8#ÍXÆ3‰Lb Ó˜Á,æ0ù,d1KYÆrV°Š5¬c›ØÂ6v°‹=ìeû9ÈaŽrœ“œæ g9ÏE.s•kÜàw¸Çñ˜'<ã¯xÃ[Þó‘Ï|å;?ùÅoþòÿ?øýAJpBš°„'"‘ˆLT¢“ØÄ! HD’‘‚”¤" éÈ@&2“•ìä$7yÉO R˜¢§$¥(C9*P‰*T£:5¨EêÑ€†4¦)ÍiIkÚÒŽöt¤3]éNzч~ `CÆF2Š1Œc<™ÌT¦3“ÙÌ%€ù,`KXÊrV²šµ¬g#›ÙÊ6¶³“Ýìa8ÄŽq‚Sœá,ç¸À%.sÛÜç1OyÎK^ó–÷|ä3_øÁg× ‚’Є%<‰LT¢‹x$")HEÒ‘Ld!ÙÉInò’Ÿ‚¦(Å)IiÊP–rT U¨F jQ‡z4 iBSšÓ’Ö´¥=éLWºÓ“^ô¦ýÀ †0ŒŒb ã˜ÀD&1™éÌ&€E,a+XÅÖ±Mlf;»ÙÏaŽrœ“œæ,ç¹Èe®pƒ;<à ÏxÁ+ÞðŽ|â _ùÉ_þ—Û—„" áˆ@$¢èÄ&>‰INJR“–ôd$3YÉNòP€"” e(G*Q…jÔ &uiHSZÒš¶´§#éJwzÒ‹~ b£Ã8&0‰)Lc³˜M‹XÆ*Ö°Ž lb ÛØÁ.v³ŸÃç4g9ÏE.s•ëÜä6wxÀ^ð†w|à_øÆ~ñ‡¿ü/§\E8"‰(D#±ˆC<ⓘä¤&=ÉLV²““Üä%?(B ÊPJT¡5¨EêÑ€†4¥%méHgºÒžô¦/ýÈ †1ŠqLb Ó˜Á,æ0ù,dKXÆ V±†u¬g›ØÂV¶±ƒ]ìa8ÄaŽpŒœäg8Ç.q…k\ç·¸Ã]îñ€G<á/xÅkÞðŽ|ä_øÆ~ñ›?ü#p.óAJpBš°„#<‰L¢èÄ$6q‰O’˜¤$#9)HIjÒ’žŒd"3YÉNr’‹Üä%?)LQŠS’Ò”¡,å©@%ªPÔ¢õh@CÑ„¦4§%­iK{:Ò™®t£;=éEú1€A a#ÅhÆ0ŽñLd2S™ÎLf3—æ³€E,f)ËYÉjÖ²žlf [ÙÎv±‡}àG8Æ NrŠ3œå<¹ÌU®s“ÛÜå÷yÈ#žðŒ¼â ïxÏ>ñ…¯|ã¿øÃ?çÖ/‚”à„$¡ Kx"™¨D'1‰M\⟄$&)ÉIIjÒ–ôd$™ÉJvr’›¼ä§ …)BQŠS‚R”¡¨DªQƒšÔ¢u©OCӔ洤5miG{:Ò‰.t£½èC?0ˆÁ aÃÍx&3Ù°€E,a+XÉZ6²•ìå ‡9ÊqNrš3œã—¸Â5np‹;ÜåxÈcžòœ—¼æ-ïùÈ'>ó•oüàøGà<ú@P‚‚„& áˆ@$¢Ä"q‰G’˜¤$'%©IKz2’‰Ìd%9ÈEòQ€B¡Å)A)JS–òT¤2U©NMjS‡ºÔ§hB3ZЊ6´£éDºÒžô¦/ýèÏ@3„¡ c8#ÍXÆ3‰Lf*ӘΠf2›¹°€…,b ËXÎ V²Š5¬c›ØÌ¶±ƒìb7{8ÀNp†s\àW¸Æ nr‹{<â¯xÃ;>ð‰/|ã;?øCà¼úBH‘ÈD%:1‰Mâ‘€D$!)HEÒ’Ž d$3YÉNNr“—ü¤…)J1JPŠ2”£•¨B5ªSƒZÔ¦.õiHcšÒœ–´¦ miOºÐƒ> `#ÅÆ1ILf:³ `ËXÅÖ±Mla+;ÙËAŽr’³œç"—¹Êunp‡<áoøÀ'¾ðüâ7òÙõ„ ˆB4b‹8Ä#> ILR’“‚T¤!ÈHf²’œä"ù(@! S”â” ¥)Ky*P‰ÊT¥:5¨EmêRŸ4¢1MiNKZÑš¶´§#èLWºÓ“^ô¦/ýÈ 3”áŒd4cÇ&1…©Lg&³™Ë<æ³Å,e+XÅÖ±žlf+ÛÙÁ.ö°ä0G9ÎINq†s\à—¹Êunr›;ÜãxÂSžó’×¼åøÄ¾ñŸüæ/ò›oþ#(Á I(ÂŽD"2Q‰NLb‡x$ IHJrR’š´¤#™ÈB6²““Üä%?(DŠQ‚’”¦,å©H%ªPÔ¢6u©OCÓ„f´ mhK{:Ò™®t§'½èMú1€A a#É(F3–ñLd2S™Î f2‹9Ìc> YÌR–±œ¬b ëØÀ&¶°íì`{ØÇq„cç§8Ã9.p‰+\ã:7¸Åîñ€G<áÏyÁ+ÞðŽ|ä_øÆw~ò›¿* Gü #8! MXˆD&*шA,âø$ IHJJÒ’‘¬d''¹ÉK> Pˆ"£¥(CYÊQJT¡5¨EêR4¢ ÍhN Zц¶´§#éJ7ºÓ“Þô¡Ä†2ŒŒb4cÏD&3…©Lg&³˜ÇB–²’Õ¬e=ÙÄ6v±Cá'8ÅiÎs™ëÜæ.÷yÈcžð‚7|à ßøÁ/þð—ÿ”/¡G"…hD'&±‰K|’˜¤$#9)IMZÒ“‘Ìd%ÙÉInò’Ÿ‚¦(Å(NIJS–òT¤2U©FujR›ºÔ§!iJ3šÓ’Ö´¥=éLWºÑÞôg0ÃÉhÆ2ž Las˜ÏB³”å¬` ØÂv±‡}à G9ÉY.r™«\ç&·¸Ç#žñŠ7¼ãŸøÌw~¨Ù$!E‘¨Ä$.ñIHb’’ŒT¤#ÙÈA.òü¦8¥)OE*S•êÔ  hB Zцvt #éJ7zЋÞô¥?Ć2œ‘Œb ãÏD&3…iÌ`&³™KóYÀB³”å¬`%«XÃ:6°‘Mlf+ÛÙÉ.v³‡}àG8ÆqNrš³œç"—¸Â5np‹;Üå>yÌSžó‚W¼áøÄg¾òŸüæ/ÿ\ØOP‚’P„!ˆD¢˜Ä&.ñI@"’Œ¤"5iIOF2“•lä yÈG R˜¢§$¥)C9*P‰*T£:5©M]êÓF4¡-hEÚÒžŽt¦+ÝéA/úÐ b0CÎHF1š1Œc“˜Ì¦2™Ìfs™Ç|²˜%,e+XÅÖ±lf+ÛÙÉnö°âÇ8ÎINs–ó\äW¸Æ nq‡»Üç!yÊs^ðŠ7¼ãŸøÌW¾ó“ßüå‹èA NHB†pD QˆJtb›¸Ä'‰HB2RŠÔ¤%=ÉLV²“ƒœä"ù(@!ŠPŒâ” $¥)Ky*R™ªT£:5¨EêÑ€F4¡)ÍhNKZÓ–öt #éJ7zЋ>ô£?Ć2œ‘Œf,ãÏD&3…iÌ`s˜Ë<æ³E,a+XÅÖ±ž ld3[ÙÎNv³—}ìç‡8Â1NpŠ3œåç¹Èe®r›Üæw¹Çñ„g¼à¯yÃ[Þó‘Ï|å;?ùÅoþðÀEu‹ '$¡MÂHD!1ˆI,b—ø$$1IIN R’Š4¤#™ÈB6²“ƒœä&/ù)HaŠRŒâ” e(G*Q…ªT£:5©M]êÓÆ4¡)ÍhA+ÚÐŽt¢3]èJwzÒ›¾ôg ƒÌ†1‚QŒa˜È$&3•éÌd6s `> XÈb–²œ•¬f-ëXÏ6±…mì`'»ØÃ>ösÃå8'8ÉiÎrŽ \â ׸Á-ns‡»Üç!yÊs^òŠ×¼á_øÁþ¸˜>”`„"‘ˆF b‡xÄ'1ÉIMz2’™¬d'y(@JPŠ2”£©JMêÒÆ4¥9-iE;:Ñ^ô¡Ä`†3šñLf*Ó™Élæ0ŸÅ,g5kYÏF6³…mì`{ØÇrˆÃå8'9ÍYÎs‹\â ׸Á-îpû<à!yÊs^òš·¼ã=øÂþ¸¸œJpBŠ0„#‘ˆLT¢“ØÄ! HD’’œ”¤&-éÈ@&2“…¬d''¹ÈMòQ€‚¢0E)N JRŠ2”£•¨LUªS“ÚÔ¡ hDšÒœ–´¦-íè@'ºÐîô¤7}éÏ1„aŒ`$£Ëx&2‰)Lc³˜Í\XÀ"³”å¬`%«XÃ:Ö³lf+ÛÙÉ.ö°â0G9ÎINs†s\àW¸Êunr›»ÜãxÂ3žó’×¼å=øÄ¾ñƒŸüæ/Jø6å?‚œ„& áˆ@$¢•èÄ$6q‰G‘„d$'%©IKz2‰,d#9ÉM^òSB¡%(EiÊRžŠT¢2U©NMjQ›ºÔ§!hLSšÓ’V´¦-íéHgºÐô¢}éÏ@3”aŒ`cÇx&2™)Le3˜Ålæ0—°E,f)ËYÁJV±†ul`›ÙÊvv²›=ìã‡8ÂQŽs’Óœá,ç¹Èe®p•ëÜä6w¸Ë}ò˜'<å9/yÍÞòž|æ _ùÎO~ó—.©_%8!EˆD&*щI,â$"1IINJR“†td YÈJvr’›¼ä£…(B1ŠS’Ò”¥<¨DªQƒšÔ¦.õiH#šÐŒ´¢5miOG:Ó…nô }èK2˜¡ c£ÃXÆ1ILa*Ó˜Á,æ0°ˆ%,c9+YÍZÖ³‘Íla+ÛÙÉnö²Ÿƒâ0G9ÎINs–ó\à"—¹Êunr›»Üã>yÌSžó‚—¼æ ïøÀ'¾ð•oüà'¿ùK Röÿ„`'$¡ Kx"‘ÈD!1ˆEâ‘€„$" ÉHA*ÒŽôd YÈFr‘‡¼ä£…(B1JPŠÒ”¡U¨AêÑ€F4¦9­iOgºÒžô¢ýÀ †0ŒáŒ`cÇ&1…©Lc³˜Ã<æ³E,f)ËYÉjÖ²ž ld+;ÙËAs”ãœàg8Ç.r‰+\å:7¹Í]îqŸ‡<â¯xÇ'¾ðüäïÿç^ZÞ„" áˆ@D¢“¸$$1IIN Ò,ä yÈG~ SœÒ”§"•©J5jQF4£­hC[:Ò•žô¥?ÌF0† La3˜ÅlXÄ2V±†ul`#›ÙÊvv²›½ìc?9ÌQŽs’Óœá,¹ÊMîrŸ‡<æ /xþðüâ7ʘ7B†pD ‘‰Jtb›8Ä#> ILR’“‚T¤&-éÉHf²ìä$7yÉO Q˜"¥8%)EiÊP–rT •©BUªQšÔ¦u©G}Ј&4¥ÍiIkÚÒžŽt¢3]éNOzÓ—~ôg ƒÊpF2ŠÑŒe<™ÌT¦1™Ìf.,`!‹XÂ2V°Š5¬eØÄ¶±ƒìbû8À!Žp”cœàg8Çy.r‰+\ã·¸Í]îñ€G<áÏyÉ+ÞðŽ|â3_ùÆ/þ¸¬]NP‚‚0D QˆF b—„$&)ÉII*ÒŽ d" ÙÈNNr“—ü¤0E(AÊQJT¡*Õ©ImêRŸ4¤1MiNKZÓ†¶´§#éJ7zГÞô¥?Ć2œ‘Œf,ã˜ÀD&3•éÌds˜Ë–°Œ¬b kYÏF6³•íì`'»ÙË~r˜#å$g9ÏE.s•kÜâxÄžñœ×¼ç#ŸùÊw~ð‡ÀådNP‚’P„#QˆF b›ø$&)ÉIIjÒŽ d$YÈFvr‹<ä%(DaŠPŒ”¢4e)OE*Q…jÔ &µ©K}Ј&4£9-iM[ÚÑNt¡+ÝéIoúÐ b0CÎHF1†qL`"“™Êtf0‹9Ì#€,b KYÎJV³†ul`›ÙÊvv²‹=ìã9ÌQŽs‚Sœáç¹Èe®rÜâw¹ÏCó„g¼à¯yË{>ò‰/|ã?ùÍ_•×þ#(Á A(ÂŽðD$2Q‰F b‡¸Ä'!‰HB2’“’Ô¤!ÈHf²’ä"7yÉO Q„¢§$¥(C9ÊS‘ÊT¡5¨ImêR4¢1MiN Zц¶´§#èB7ºÓ“Þô¡È`†2ŒŒb4cÏ&1…©Lg&³˜Ã<XÀ"³”å¬`kXËz6²‰-lc;;ÙÍöq€ƒæ(Ç8Á)Îp–ó\ä2W¸Æ nq›»Üç!xÂ3žó‚W¼á-ïøÀ'>ó…oüà'¿øÃ?UÐ3þ#(ÁNHB†°„'"‘ˆLT¢ƒ˜Ä&.ñˆOB“”d¤ iHKz2’™,d#¹ÈM^òSB¡%(IiÊRž T¢ Õ¨NMjS—z4 iB3ZÐ’V´¡èHgºÒô¢ýèÏ@3”aŒ`£Ã8&0‘ILa3˜ÉlæÀ|²˜¥,c«XÃZÖ³‘Íla;ØÉnö²ýàG8ÊqNrŠÓœá¸Èe®rëÜàw¸Ë}òˆÇ<á/xÅÞñž|â ßøÁ/þð—@õÿJpBš0„#<‰LT¢“XÄ!.ñIHb’’Œ¤$iHG2‘™¬d#;9ÉM^òS€B¦Å(A)ÊP–òT "U©I]êÓÆ4¥-hEÚÑŽt¦ ÝèA/úÐþ dÃÅ8&0‰)Lc:³ `KXÆ V±šµ¬g#›ÙÊ6v°“Ýìe?9ÌŽqœ“œæ,ç¹È%®p•ëÜä6w¹Ïñ˜§<ç%¯yË;>ð‘Ï|å;?ùÍþ¨’ï/B†pD QˆJLâ’Ä$%9)IE:2‘…lä ¹ÉCŠPŒ”¢ e)G%ªQ‹:Ô£hLsZÓžŽt¦+ÝéA/úÐ dƒÊpF2š1Œe˜Ä¦1Ìd6s ` YÄb–²œ•¬f-ëXÏF6³•íìd»ÙË~r˜£ã8'9ÍYÎs‘K\æ*×¹É-îpû<ä1OyÆ ^ñš·¼ç#ŸøÂ7¾ó“ßüå+Û!aG"…¨D'&±‰K|Ä$%9)IMÒ’‘¬d''¹ÉK> Pˆ"£%)EÊQJT¡*Õ¨A-êP4¤MhF Zц¶´£èB7zГ^ô¡Ä†2ŒQŒc“˜Â4¦3›°ˆ%,c9«YÏF6³•íì`8ÄŽq‚“œå"—¹Êunr‹{<â ÏxÁ+^ó–÷|ä3_ùÎO~󇿪(ÐÿBP‚‚„" áˆ@$¢Ä"6qˆG‘˜¤$#9)HEÒ‘Ld!9ÈI.ò¤0E(J1JPŠ2”£•¨B5ªSƒZÔ¡õiH#Ó„f´ mhG:Ñ…nô '½èMúÒŸ bÃÁ(Æ0Ž Lb ӘΠf2‹ÙÌ%€ù,d1KYÎJV³–õld3[ØÊ6¶³ƒ]ìa/û9ÈaŽrœ“œæ,ç¹È%.s…«\ã·¸Í]îóÇ<å9/xÉkÞòž|æ+ßøÎ~ò›¿ªªg!Á A(ÂŽD" Q‰Ftb‹8Ä#‰HBR’‘‚T¤!ÈDf²•lä yÈG Q˜"£¥(C9*P‘JT¦ Õ¨A-êP4¤MhF Zцv´§éDºÑƒ^ô¡ýÀ †0ŒŒb cÇx&0‰)Lc³˜Ã\æ1Ÿ…,f)ËYÉ*V³†µ¬g#›ÙÊvv²‹Ýìe?9ÌQŽs‚“œâ4g9ÏE.s•ëÜä6w¸Ë}ò˜'<ã9/xÉkÞòž|æ+ßùÉ/~ó—@ÕtŒÿJ0‚‚P„!ˆD¢ƒ˜Ä"ñH@B“„¤$#©HC:2‰,d#;9ÈEò‘Ÿ‚¢0E(A*P…Ô¡MhAÚÑNt¡=èEoú3˜áŒf<“™ÎlXÄ–±‚U¬aØÈf¶²ìf/û9ÈaŽrŒãœà$§8Ã9Îs‘Ë\å:7¹Í]îóÇ<á)ÏxÎ ^ñ†·¼ç#ŸùÊw~ò›¿ª.kþ#A FpBš0„#‘ˆB4b‹8Ä# IDb’”ä¤$éÈD6r‘B£e(G*Q…ªT§&µ©CšÐ‚6t  =èC?0ˆ! c8#ÍXÆ1‰iÌb YÊrV²–lf+ÛÙÉ.ö°ýæ8§9Ïe®s“ÛÜç1OyÎK^ó†w|à#_ùÉßÿÏ¥†LFB†pD"1ˆEâø$&9©IOF2“•ìä$7ù)LQŠS’R”¦ ¨B êP4¢ ÍhA:Љ.t£;=èI_2”‘Œf,ã™Èd¦2“¹°€E,f KYËVör”“œå"W¹É]ò”ç¼ä5oyÏ>ñ…oüàøG šÎž #8!EÂHD!щIlâø$$1IINJR“–td YÈJ6r‹<䣅(BQŠS’Ò”¡,å©HeªRšÔ¦.õ¨Oј¦4§%­iK{:Ò™.t¥=èIoúÒŸ f(ÃÉ(F3†qŒg"“™Êtf2›¹0Ÿ,d1KXÆ V±†ul`#›ÙÊvv²‹Ýìe?9ÌQŽs‚Sœá¸È%®pÜâ÷¸ÏCó”ç¼à%¯yË{>ò™¯|ã¿øÃ?Õò=HPB–ˆD%&±‰K|’˜¤$#éÈD6r‘¢Å(A)JS–òT¤2Õ©M]êÓ€†4¦)ÍhA+ÚÐŽNt£½èMú1€ f(ÃÉhÆ2ž‰Lb2S˜Ætf2›¹°€E,aËYÁJV³†ul`[ØÆv±‡½ìc?9ÄŽq‚Sœá¸Äe®p•ëÜàx ÞðO|á?øÅþò¿Úö¡G$¢ƒXÄ! HDb’“šôd&;¹ÉK~ R˜¢§e¨@jP‡4¢ ÍhA+ÚЖŽt¥;=éM_ú3Á e8#ÉX&2™©Lg&³™K XÄb–°‚5l` ;ØÃ>pˆ#ã'9ËE®r“»<ä1OyÎK^ó–w|â¿øÇuìeBš°„'"‘‰B4b‹8Ä#‰HB2’“‚T¤&-éÈ@&²ä"ù(@A Q„¢§¥(C9*P‰*T£µ¨MêQŸ†4¢ ÍhA+ÚÐŽt¢ ]éFzÒ›>ôcƒÂ0F0’ÑŒe<™Äd¦0•éÌd6s ` YÌR–³’U¬f kYÏF6³•íìd{ØÇq˜#å'8ÅÎqK\æ*×¹Émîp—{Üç!yÊs^òš·¼ã=ùÌW¾óƒŸüæ/êšc‚Œ„$aG"™(D#±ˆC<ˆÄ$!)HEÒ’Ž d" ÙÈA.ò—| E(FqJPŠ2”£•¨B5ªSƒZÔ¡ hH#šÐŒ´¢ íè@G:Ñ…nô ½éC?0ˆ! c£ÍÆ1ILa*Ó˜Á,æ0ù,d1KXÊrV²šµ¬c=ÙÌV¶³“Ýìe?9ÄaŽrŒœä4g9ÏE.s•ëÜä6w¸Ë}ðˆÇ<å9/yÍ[Þó‘Ï|åßùÉ/þð—@õô‰ #¡C8"‘HD!*щA„¤!YÈFr‘‡| …)JqJRš²”§•¨B5jP“ZÔ¦õh@#šÐŒ´¤5miOG:Ñ™.t¥;=éM_ú3A a#ÅhÆ0–qL`S˜Æ f1›¹°€E,f KYÆ*Ö±Mlc{ØÇq„cç$§8Ç%®p[ÜãxÂ3^ðŠ×¼åŸøÆ/þ¸¾»ˆ '$¡ Kx"‰ÈD'6ñILR’“’Ô¤%=ÉLV²‘Üä§0Å)My*S•êÔ¤6u©OCÑŒV´£ÝèE?0ˆ! c£ÃX&2•™ÌeKXÁ*Ö°Ž lb ÛØÎnös˜ãœæ<—¹Êunr›»Üç!xÆ+Þñ‰oüâ8s‚œ„&,áˆ@$¢Ä$6q‰G‘„d¤ %©IK:2‰,d#9ÉM^òQ€B¡%(IiÊRŽ T¢ Õ¨A-jS‡ºÔ§!iJsZÒŠÖ´¡èDºÑƒžô¢7}éÏ@3”áŒ`$£Ã8&0‰ÉLe:3™Åæ1Ÿ…,b ËXÁJV³–õld[ØÆv²›½ìç ‡8Â1Np’³\ä2W¹ÎMns—{<â/xÅÞñO|æ;¿ùK †ö0AFBš°„'"‘‰J4¢ƒXÄ! HD’’Œä¤$5iIOF2“…¬d#¹ÈC> PˆÂ¡(%)Ky*R™ªT§&µ¨G#šÐŒ´¢ íhOgºÓ“Þô¥?ÌF0†qL`S˜Æ f2—,b ËXÁ*Ö°–le;;ÙÍ^ösCãg8Ç.q…k\ç6÷yÈcžòœ—¼æ øÂ7~ð‹?ü#p#„`„ aG"™¨D#1‰M⟄$&)ÉIIjÒŽ d$3YÈFvr‹<䣅(B1ŠS’Ò”¡å©H%*S•êÔ¤6u©OCÑ„f4§%­hC[ÚÑNt¡=èEúÑŸ bCÆF2š±Œg"“™Êtf2‹ÙÌ%€ù,`‹YÊrV²šµ¬g#›ÙÂV¶³“]ìf/û8À!ŽpŒœâ ç8Ï.q…«\ã7¹Í]îóÇ<å/xÅÞñž|â3_øÆ~ñ‡n¬[!!EhÂŽðD QˆF b‡¸Ä'!‰IJ2R’T¤&-éÉHf²’ä"ù(@A S„¢£¥(C9*P‰ÊT¥:5©MêQŸ4¤1MiNKZÓ–vt ]èFwzÒ‹Þô¡Ä†1‚‘Œf,ã™È$¦0•iLg&³™K XÄb–²œ•¬f ëXÏ6²™­lg'»ÙË~pˆ#å8'8ÅiÎpŽ \â ׸Á-ns—û<àyÊ3žó’×¼å=ùÌW¾ñƒ_üæ/ÿÜD¿ø '$¡ Kx"‰(D#:1‰Eâ$" ÉHA*ÒŽôd YÈJ6r“Üä%?)LQŠS’R”¦,å©@E*S…jÔ u¨GÑ„¦4£­hMÚÑžŽt¦+ÝéIoúÒŸ d0CÆpF2ŠqLb 3˜Ã|³”å¬d5kYÇ6±™íìf/9ÊIÎrž‹\æ*×¹Á-îp—‡<å%¯yÏg¾ò“ßü%PS™„ 'aˆ@¢‹x$ ÉHA*ÒŽôd$ÙÈE> Q„”¢ ¨DªQƒZÔ¦ hB ÚÐŽNt¡½èC?0ˆ! eã˜Æ,æ±¥¬d-ÙÌV¶³“Ýìe8ÄŽq‚“œæ ç¸À%®pëÜäw¸Çñ„§<ç¯xÃ;>ð‰Ï|å?øÅþ¸™¹$A NHB–ðD$‘‰Jtb›¸Ä' ILR’“’Ô¤%éÉHf²’ä"yÉOA S”b” ¥)Ky*R™*T£5©M]êÓF4¡ÍiM{:Ò™®t§'½èÇ †0ŒŒb c™ÈT¦3“ÙÌ%€ù,f9+YÍZÖ³‘Mlc{ØÇq„£œä,ç¹Èe®rÜáxÂ3^ðŠ×¼ç3_ùÎO~ó—ÿŸus’Є%<‰D4b‡x$ IHJrR’š´¤'#™ÈLV²““\ä!/ù(@!ŠPŒ”¢4e(G*Q™ªT£:5©M]êÓÆ4¡)ÍiIkÚÐŽöt ]èFzч¾ôcƒÂP†3‚‘Œf,ã™Èd¦2™Ìb6s™G XÈb–²œ•¬f-ëÙÈ&6³•mlg'»ØÃ>pˆ#ã§8ÍÎqž \â2W¹ÎMns—û<ä1OxÊs^ð’×¼áøÄ¾òüâÿÜB—BP‚‚P„!á‰@$¢Ä"q‰G|’˜¤$')IMZÒ“‘Ìd%ÙÉA.ò¤E(F JQ†r”§©JMêÒ¦´¤5méHWºÓ“Þô¥ƒÆ(Æ1‰iÌ`óXÈb–²œ•¬b›ØÆ.öqˆcœâ ç¸À%®pëÜæ>yÎkÞó™ïüä7 ÔÒ=L‚’°D$*щI\’””¤&-éÉH&²‘‹|¢Å(E9*QÔ¢õ¨OcšÓšöt¦;=éM_ú3A aÃÍx&3Ù°€E,a+XÉjÖ²ŽMlcû8À!ŽqŠ3œã—¸ÌU®q‹{<â/xÅ;>ñ…oüà¿ùË?þkeÏšðD$2Q‰Nlâ“Ä$%ÉIMz2“œä&/ù)LqJR𲔣<Õ©OsÚÓ™îô¦?ƒÎHF3–ñL`S˜Æ f1‡¹°€…,b ËXÁ*Ö°Žõld3[ØÊvv²›½ìç ‡8Â1Žs‚Sœá¸Ä®r›Üâ6w¹ÏCó”ç¼ä¯yË;>ð‰/|ã¿øÃ_þ¸µY!ÁA(ÂŽD$QˆJtb›¸Ä'!‰IBR’“‚T¤!ÈDf²’œä"7yÉOA S”b” e(K9*P‰*T£5©M]êÓ€†4¦)ÍiIkÚÐŽt¢3]èA0„aŒ`cÇ&2™©Lg&³™KóYÀ"³”å¬d5kYÏF6±™­lcû8Ä1NpŠ3œã—¸ÌunsŸÇ<å9/yÍ[Þó/üàÛ˜W‚œ„&,áˆD4b$" ÉHA*R“žÌd'7yÉOA S”â”  ¨DªQƒZÔ¡õi@ZЊ6´£èB7ºÓƒ> `#ÅÆ1ILa*Ó™Élæ0°ˆ%,e9+XÅÖ±žlb ÛØÁNv³‡}àG8Ê1NpŠ3œã<¸Ä®qƒ›Üâ÷xÀ#ó„g¼à%¯yË;>ð‰Ï|å;?øÅþ¨­yç?‚œ„" a OD"•èÄ qˆG‘˜¤$'%©IK:2‰,d#9ÉM^òS¡%(EÊQžŠT¦*Õ©I-êP4¢ MiNKZÓ–öt ]èFzÑ›¾ôg ƒÊpF0’ÑŒa˜Ä¦1ƒ™Ìbs `‹XÂ2V°’U¬a-ëÙÈf¶²ìb7{ÙÇq„cç$§9ÃYÎqK\á×¹Émîp—{<àOxÆs^òš7¼åøÄ¾ñŸüæùGàvúDP‚’P„!á‰@$¢Ä"6q‰O’˜¤$'%©IC:2‘Ld!9ÈEò’Ÿ‚¢0Å)My*SšÔ¦.õi@ZІt¡=èEú2¡Œd,™ÌT¦3“YÌc!KYÉZÖ³‘Íle»ØÇ!ŽqŠ3œã—¸ÌU®s›û<ä1OyÆ ^òš·|ä+ßùÉoþð@íÝù„ aG"…¨D#ñH@"’Œ¤"5iÈ@r‡¢Å(AIÊR‘ªÔ¤.õiHcšÒŒV´£ÝèEú1€A f#ÍÆ3‰)LeÓ™ÁLf1›9ÌeÌg YÄb–°œU¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa/û9À!s„cœà$g8ÏE.q•Üâ6÷xÈcžðœW¼á-øÌW¾ñ“?ü#P³J0B’0„'"‘ˆJ b›8Ä%ñI@B‘˜$$%ÉIAJR‘š4¤%éÉ@F2“•ìä yÈG~ PB¦E)FqJP’R”¦ e)Gy*R™ªT£:5¨I-jS‡ºÔ£> hH#Ó„¦4£9-hEkÚЖöt ]èFwzÒ›¾ôcƒÂP†3’ÑŒa˜Äd¦2™Ìbó˜Ï±„e,g%«YË:Ö³lb3[ØÊ6¶³ƒìb7{ØË>ös€ƒâ0G8ÎINqš3œåç¹ÀE.q™+\å7¹ÍîóG<á)ÏxÎ ^ò†w¼ç_øÊ~ñ›îè]CP‚‚P„& a Gx"‘HD&*шALb‡xÄ'!‰HBR’“‚T¤&-éÈH²“‹<ä£)BqJQ–òT¤2U¨F jQ‡ºÔ£> hH#Ó„¦4£9-hM;:Ò…nô ½éK2˜! eÃÁHF1š1Œeã™Èd¦0•iLg&³˜Íæ1Ÿ,d1KXÎ*Ö²MlaÛÙÅ^p˜£ç$§8Ë.sÜâwyÀcžñ’×¼å=øÌ7~ò‡îd„à„",ˆD¢XÄ%‰IJrR’Š´d 3ÙÈA.ò—¦%)MYÊSÊT£&u¨GÒ˜¦4§%­hMÚÒŽöt #èL7zÒ‡þ d0CÎ(Æ2ILa*Ó™É,f3‡¹Ì#€ù,d1KXÊ2V²†õlb ÛØÎ.ör€Ãå8'8Í9.r…kÜà&w¸Ï#žòœ—¼â-øÌ7~ð‹ßüãíBŠ0„'QˆJ4¢‹¸$ 1IIN*Ò’ž d$YÉAnòQ€B¥¥(MÊRÊT£&µ©KÓ”f4§­hC;:Љ.t¥ÝéIoúÐ bÃÁHF1š±Œg“˜Â4f0‹9Ìe,`‹YÆJÖ°žlf;ÙÍö²ƒá8§8Ã9.r…k\ç7¹Í]îóÇ<åÏyÁ+Þð–÷|ä3_ùÎO~ñ›?ü#p= ÁA(ÂŽðD "‘‰J4b$"©HCZÒ“‘Ìd!9ÈCŠP‚’”¦,å©H%ªRƒÚÔ£hJ ZÑš6´¥éFOzÓ— f(ÃÎF3މLa3˜Í<æ³€…,b)+XÍ:6°‰­ì`»ÙÃ^p˜cœä4g¹Àe®rëÜà6÷xÈžñ‚×¼ãùÄg~¨«ÌC¢XÄ! HHrÒ’™œä¥ E(NIJS–rT¤ Õ©EêÑ&4£9-hIÚÓ‰®t§'}èÏ@1˜! gc™À$¦0YÌa.ó`!KXÎ*Ö°ŽlaÛÙÁNös”Ó\ä*7¹Ã}ò˜§<ã ŸøÁ?þëæÎ#a OD"…hÄ qˆO"’Œ¤$iHG2‘•ä"ùÈO Q„b” 4å¨@%ªP•jÔ u¨GCšÐŒ´¢5mhG:Ñ…nô '½èM_ú1€A a#ÅhÆ0–ñL`S˜Æ f2‹ÙÌa.Ìg!‹YÊrV±–õld3[ØÊvv²›½à0G9ÎINqš³œç"—¹Êunp“[Üá.÷yÈcžòœ—¼â5oxÇ{>ò™¯|ç?ùÅoþð@ÝíP‚‚0„#<ˆHd¢Ä"‰HLR’‘œ”¤& ÈBòŸB¡%(EiÊS™êÔ¦ iLSšÓ’V´£ÝèE_0ˆ! c#ËD¦2“9°€E,aËYÍz6³]ìe?9ÌQŽqŠs\â7¹Ã=ðˆ'<å%oùÈW~ð›¿êáü BPB–ˆD%±‰K|’˜$$#©HCz2‘…lä '¹ÈC> Pˆ¢” e(Gy*P…Ô¡iF Zцv´§3ÝéM1”áŒd4cÇ$¦1‹y,`1KYÎJV³† la{ØÏ!ŽpŒœâ4ç¸È®qƒ[ÜæyÂ3^ðŠ×¼ã#_øÆ~ñ›ÿŸKO™œ„& áˆ@D"•hD'&±‰C<D$& IINJR‘štd$ ÙÈA.r“‚¡%(EiÊRž T¢ U©F jQ›ºÔ§ iDcšÒœ–´¢5íèHºÑƒ^ô¦Â0F0ŠÑŒc"S˜Æ f1›y,`1KYÎJV±– lf+ÛÙÉ.ör€Ãå8'9ÅY.p™«\ç&·¸Ëó”ç¼äoùÀg¾òŸüâ/{™G‚‚P„&‰B4b‹ØÄ#!IHF R‘štd$ ÙÈA.r“‚¡%(EiÊQ‘*T£µ¨M=Ò˜¦4§%­hK:Ñ…nô '}èÏ@3”áŒ`4ã˜À$¦0éÌd6s `> XÈb–²œ•¬b5kXË:6°‰Íla+;ØÍ^ösÃá8§8Ã9.p‰Ë\å:7¹Íîr<â ÏxÎ ^òŠ×¼å=øÈ'¾òƒ_üá{Û%¡C8"‘(D'&±‰K|˜d¤ iHGz2‘•ìä$7yÉGAŠPŒ”¢ e©@eªRšÔ¦õiDšÑ‚V´¦éLWºÓ“^ôeƒÂ0F0’1Œg"“™Êtf0›yÌg!‹YÊ2V²†ul`[ØÊv³—ýä0G8Î)ÎpŽ \â2׸ÉmîñÇ<åÏyÅ[Þó‰¯|ç'¿øÍ_õ‘-AJpBŠÐ„%<‰L¢˜Ä"ñH@B‘„¤$'©IG2“ä"7yÈO!ŠPœR”¡å©@5êЀÆ4£­hC[:Ò•îô }èK0ˆ! c#ÍÆ1žILe:³˜K XÈ"–²‚U¬e›ØÂV¶±‡Cã$g8Ç.q™›Üç1ÏxÉkÞòž|æ?øÍ?÷õC‚‚Є%‘‰Jtb“ø$%%iHOF2“•lä$ù(@! SŒ’”¦,å©@%ªPÔ¤u¨Gј&4¥-hEkÚОNt¡=èIú3Á e#Ã8&0‰ÉLc&³™KóYÄR–³’Õ¬a=›ØÂ6v°“=ìç ‡9Ê1Nr†s\à—¹ÆMns—û<à1ÏxÁ+Þð–|æ+ßùÉ/þ¸Ÿ\ Nh‰¨D'&±‰K|’˜$$'iÉ@r›| E(F JQ†²T 2Õ¨IêÓˆ¦4§%­iK{:Ò™.t§}À`†1’1Œc“˜Â4f0‹ÙÌ%€,b ËXÎ V²šµ¬g#›ÙÊ6v°‹=ìã‡8ÌŽrœ“œæ,ç¹È%.s…«\ã·¸ÍîrŸ‡<æ)ÏyÉ+^ó†·¼ãŸøÌ¾òŸüæ/úÛÅüG0B†ðD"*1ˆM\â“Ä$%9)IEZ2™lä$ù)DŠQ‚R”¡¨HeªRšÔ¦.õ¨OÑ„f´ mhK{:Ò™®t§'½èMú1€A a#É(F3†±Œg"“˜Ì¦1ƒYÌaóYÀB±˜%,c+YÅjÖ²žlf+ÛÙÁpCãg8Ëy.r™«\ç&·¹Ã]îñˆg¼âïùÈg¾òŸüæ/˜{‚œP„%"Q‰Al⟄$&)ÉII*Ò’Ìd#ù(HŠQ‚R”¡¨DeªQ“:Ô§MiAkÚÒžŽt¦+ÝéI/ú2€Á c$cÏ$¦0Ìbó˜Ï³Œ•¬a=›ØÊv±‡}àG8ÆqNq– \æ7¹Ã}ò˜§<ç%¯yË;>óƒ¿ü7P„&‰LT¢“ØÄ%> HJ*Ò“…ä!?…(B1JPŠ2”£©FmД–´¥éJwzÒ›¾ôg ƒÎ&2YÌc‹YÊrV²šµ¬g#›ØÎrŒSœã"W¸Æ nq‡{<àyÁ[>ñßä, FB†pD QˆJ b$" IIAjÒ‘Ld!+9ÉK Q„b§4å©DªQƒšÔ¦.õ¨OCÓ„f´ %­hC;ÚÓ‘Ît¡+ÝéI/úÐþ `CÊHÆ2ILaÓ™Élæ0—°Å,e9+XÅÖ²‘­ì`{ØÇ~q”œâ ç8Ï%®rƒ[Üá÷yÌs^ñ†w|à#_ùÉþx°| BžˆD&*шE<’˜¤$'iÈ@f²’œä"…(JqJRš2T  Õ©ImêRF4£%­iK{:Ð…ô¦/ýÈ †0ŒŒd4cÏ&1…iLg&³™Ë<æ³Å,a+XÅjÖ²žlb ÛØÁNv³—ýàG8ÆqNrš³œã—¸ÂU®s“ÛÜáxÄcžòœ—¼â ïøÀG>ó•ïüàøG !Þ*!Á IhÂŽD" Q‰NLb‡x$ ‰IJrR’Š4¤#ÉL²‘œä"yÉO Q˜¢£%)MÊQžŠT¢ U©N jQ›ºÔ£ iLšÑœ–´¢ miO:Ñ™îô¦?ƒÆHF3–ñLd2S™ÎLf3‡ù,f9«YÇF6³•íìd7{ÙÏAs„ãœâ,¸Â nq‡{<àOxÆ ^ñšw|ä ßùM ¡r'ÁA(ÂŽD"2Q‰NLb—ø$ !‰HB2RŠ4¤#=ÉLV²““Üä!/ù(@!ŠPŒ”¢4e)OE*S•êÔ &µ¨C=Ј&4£9-iM[ÚÓ‘Ît¡+ÝèA/úÐ b0ÃÉÆ3™éÌd6s `‹XÂ2V°’5¬g[ÙÉ^ösÃå8'9ÍYÎsK\á7¸Åîrû<ä1OyÎK^ó†w|à_øÆ~ò‹ßü%Ð0 ÁAHB–ðD$2Q‰Ftb‹8Ä#‰HBR’“’Ô¤%=ÉDf²ä"ù(@A S”’”¥<©DeªRšÔ¦.õiH#šÐŒV´£èLºÑƒ^ô¡Ä`†3šñLf3™Í\XÀ"–°Œ¬b5ëÙÌvv³ƒæ(Ç9ÉiÎrž‹\æ ×¹Å]ð„¼â ïøÀ'¾ðüâ7ÿþ?×á%aˆ@$¢Ä"ñH@"“Œ”¤!=™ÉNNr“—ü¤0E)NIJQ– T¦µ¨GÑ„f´ mhG:Ò•žôe CÉhÆ2ž‰Lf*Ó™Élæ0ŸÅ,g5ëÙÌV¶³“Ýìe?9ÌQŽqŠs\â·¸Çñ„g¼àoxÇ>ò•Ÿüå#Ì¡C8"‰(D#±ˆC\’””¤%#YÉNNr“—ü¤0E)N ÊP*Ô  hDšÑ‚V´¡èDgºÑ“Þô¥?ÄPF0Š1Œc™ÊLf3—°¥¬d5kYÏF6±…mlg»ØÃ^ösCæ(Ç9Á)Îp–s\à—¹Êunp“ÛÜåxÆ ^ñ†w¼ç#ŸùÂW¾ó“_üáFz3óA F(ÂHD!щE\â“Ä$%)IC:2‰,d%'yÉOA S”b”¢¨DªQÚÔ§!iJsZІt¢ ÝèAOú2Á e8#Å8&1…iÌ`³ `KXÆ V±šõlf+ÛÙÉnöp€#ã§8ÃYÎs‘Ë\á7¸ÅmîrŸ‡<â ÏxÁK^ó–÷|à_øÆw~ò›¿üûÿó…oüàøË?Ö‚œ„" áˆ@D"…hÄ ±‰C\â“D$&)ÉIIjÒ–td ™ÉB6r‹<䥅)N)ÊRžŠT¦*Õ©Amêш¦´ mhG:Ñ™nô¤ÌP†3’ÑŒe™Âtf3ù,d1KYÎ Ö°MlaÛÙÉnö²ŸäG8ÆqNpŠ3œã¹Âuns‡<æ)ÏyÉkÞðžO|ã'øGà12&(Á AX"XÄ%> ILR’“‚´d"¹ÈK~ R˜¢§e©D5jQ—ú4¤1MiN ÚÒ‰nô¢/ýÈ`†2œŒa“˜Â4f0“¹,`KXÆ V²šµ¬c›ØÂV¶³“]ìa8ÈaŽrŒœâ g9ÏE.q…kÜà&w¸ÏCó”ç¼à5ïøÀ'¾ðïü&ÐXï.‚Œ„$,‰LT¢“XÄ#IHF R‘šôd&+ÙÉInòŸB¡%(EiÊQ‘ÊT¥:5©E=Ñ„f´ ­iOgºÒžô¦Â0F0Š1Œe"S™ÎLf3—y,`1ËYÉjÖ²Žla»ØÃ>ösˆ£œàg8Çy.q•Üâ÷¸ÏòˆÇ<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüá/ÆÉž #8¡K"…hD'qI@"’Œä¤ %©HMÒ’Žôd #™ÈL²’ìä '¹ÈMò’ü  …(LŠRœ’”¦,å¨@E*S•jÔ &µ©C=ÐÆ4¡)ÍiIkÚÒŽöt ]èFzÒ‹¾ `ÃÁ(F3މLe:3™ÍXÈ–±‚U¬fÙÂ6v°‹Ýìã G8Æ Nqšs\ä ׸Á-ns‡<á/xÅkÞñ‘/|ã¿øÍ?þ7^GA(–D&:1‰M\⑘¤!ÈDfr—‚¦(Å)AiÊQ‘ÊT¥:5¨M=Ò˜¦4§méD7zЋ>ôeƒÊ0F2†qŒgÓ˜ÁLæ0Ÿ…,b1KXÊ2–³‚•¬b5kXË:Ö³lb3[ÙÎv³Ÿƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â ׸ÁMîð€G<æ/yÍÞó‰/|åøG  în‚’P„%"‘‰Btb—x$$)ÉIAjÒ‘Œd!;9ÉE^ R˜"§4e)GEªRÔ¦> iDSZÒš6´§]èFwzÑ—þ dÃÅÆ1žÉLg&³™Ã\æÀ|°E,f KYÆrV°’U¬f kYÇz6²™-lc;»ÙÏAs„œá¸È%.s…«\ã:7¸É-ns‡»Üã>xÈ#ó„§<ç%¯xÃ[Þó‘Ï|å?øÅþh¢=@‚‚„&,á‰H$¢ƒXÄ!. HLR’“‚4d YÈJNò’Ÿ‚¢¥(C9ÊS™êÔ¤6u¨O#šÐŒæ´¢-íéH'ºÑ‹>ô£?ƒÎHF3† La3˜É\°ˆ%,e%kYÏF6±•íìd{ÙÏAqŒœâ4ç¹Èe®p•k\ç7¹Åmîp—{ÜçyÄcžðŒç¼äïøÀ'>ó…¯|ã;?øÉ/~ó‡¿ü#Ð$ozþÇ!Á I(ÂHD&1ˆElâ‘€D$&9)IM2‰,d%'¹ÉK> Q„b§4e)O*S•êÔ 6u©OšÐŒ´¤-íéH'ºÑƒ^ô¦?ÌF0Š1Œe“™Ê4f2‡y°%,c9«XËz6°‘Mlf [ÙÆvv°“]ìf{ÙÇ~pCæÇ9ÅÎrË\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñ†·¼çŸøÌW¾ñŸüæ 4Y‡ø`„$4aO$¢•Ä&.ñHH’‘œT¤%=ÈL6r“<ä§ …(J JQšrT¤2U¨N-êP—4¦)ÍhIÚÑžNt¡+=èEoú1€ aÃÁHF1š1Œeã™ÀD&1™)Le3™Íæ2æ³€…,b1KXÊ2–³’U¬fØÈ¶±]ìa/8ÄaŽq‚“œáç¹Ä®rƒ[ÜæxÈžñœW¼á-øÄg¾ñƒŸüá¦Ø/„ áˆ@D¢“¸Ä'!‰HJ R“–ôd 3ÙÈInò’ü  …(LŠRŒâ” $¥(MÊRŽòT "•¨LªRÔ¢õh@CšÐœV´¡íéDWzЋ>ô¥ýÀ@1˜! eÃÁHF1š1Œeã™ÀD&1™)Le:3™Í\˜Ï±„¥,g+YÍZÖ±lf ÛØÁNv±‡½ìç ‡8ÌqNsž‹\æ ×¹Å]îóG<å¯yË{>ð™oüä7ùÇÿ¦ ”„" a‰@d¢ƒXÄ& IB2R’´d$+ÙÉI.òQˆb” ¥)OeªS“ÚÔ¡MhA+ÚЖt¦=èEoú1! c#ËD¦2™Ìbó`‹XÌR–³‚U¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa8È!s„£ã8'8É)Ns†³œã<¸Ä®r›Üâ÷¸ÏCó„g¼à%¯yË;>ð‰Ï|å;?øÅþhšNðA NB†°„'"‘ˆB4¢‹¸Ä'!‰HJ R‘†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?(H!ŠPŒ”¤ ¨DªRƒ:Ô£ iF+ÚÐŽöt¤3]èFwzÒ›>ô£?Ć1œŒb ãÏ$¦1ƒYÌf YÌR–±’µ¬g#›ØÊNv³—}äÇ8ÁIÎpž‹\æ 7¹Ë}òˆç¼æ-ïùÀg¾ó“_üåÓÝ-%Á AHBš0„%á‰@D"™(D%1ˆElâ‘Ä$!9©HCZ2…ld''¹ÉK> Pˆ"¥Å)AIJQš2”¥•©J5jR‡zÔ§MiN ZÓŽt¤ =èEoú1ˆ! ecÇx&1Ìdó`!‹YÂR–±œ¬d«YÃZÖ±ž lb [ÙÉnöp€Cæ8'9Å9.p‘«\çw¸Ç}ó”g¼ä5oxÏG>ñüä/føÆá?‚Œà„ $¡MÂŽðD "‘‰B4¢“XÄ!.ñI@"“”d¤ %©IC:Ò“‘Ld%¹ÉG!ŠQ’2”£•¨B5jP“:Ô§MiI[:Й®t§'½éK0˜aŒd ã™Ä4f1‡yÌg!‹YÊ2V²†õlb+;ØÃq„cœàg8Ëy.r™«\ç&·¸Í]îóÇ<á)ÏxÁ+ÞðŽ|â3_øÆ~ñ‡¿ü#ÐLÙó?þ#ÁA(ÂŽD" Q‰N b„$!9©HG&²ä"ùÈO!ŠR‚Ò”£"U©ImêRŸ†4¦)ÍhA+ÚÐŽt¢3]èFzч¾ô£?ÌP†3’ÑŒa,ã™Èd¦2éÌ`&³˜Íæ1Ÿ…,f)ËYÉjÖ°Žõlf ;ØÉ^r˜£ç$§9Ëy.r‰Ë\çwxÀžñ‚W¼áøÄ¾òƒßüûÿœgÉ—P„%‘ˆB4b‹8Ä%‰IFJÒ’‘,d''¹ÉK~ R˜"§e©@eªQ‹z4 MhF ZÑšvt¤ ÝéE_2”áŒd4cÏD&1•Ìf XÌrV³–õld3[ÙÎv³ƒá8§8Ç%®pÜâ÷¸Ï^òŽÏ|ç7f›+‚‚P„!ˆH¢‹¸$$))HMZÒ“‘Ìd%;9ÈM> R„”¡<•¨B5jP‹:Ô£>MhI;:ÓÞôg0CÎHF3–ñL`*³`1ËYÍz6³•íìd7{ÙÏŽrŠó\áwxÀžñ‚W¼áøÈ7~xŽ3%áˆD4b‹8Ä#‰HLrR“žÌd#'¹ÉK~ R˜¢§e¨@jP›z4 MhF Zц¶t 3ÝèIú3Á e8#ÍXÆ1‘)Lgs™ÏB³”å¬d5kYÇ6±…mì`{ØÇq˜#å'8ÅÎqK\á7¸Åmîp—{<àOxÆs^ðŠ7¼ãùÄg¾ð_ü%ð\óApBš°„'"‘‰J4b‡ø$"))HEÒ‘Ld!ÙÉInò’Ÿ‚¦(Å)IiÊP–r”§"•©JujR›ºÔ§!iBSšÑœ–´¦-íé@G:Ó•îô¤½éC_ú3˜¡Œd4cÇ&1…©Lc3™M XÂR–³’Õ¬e=ØÈf¶°ƒ=àÇ9ÅÎqK\á7¸Éî󈧼à5oyÏG>ó•ïüä ð…üâÿ¼B.%aˆ@$¢Ä$ñIDR’“’Ô¤%ÉBvr‘‡| …)FIÊR‘ÊT¥:5©E]Є´¢ íè@G:Ó•îô¤}èG0ˆ! c#ÍXÆ1ž Ld2S™Æ f1›9°¥¬d5kYÏF6±…mì`»ÙË~pÃÿGq=- ²-[ì>»mÛ¶mÛ¶mÛ^mÛ¶mÛ¶m7îCü@Ž9«8ÊqNrŠ3œã<¸È%®pëÜä6w¸Ëóœ×¼å=ù̾ó‹¿^é“ '$¡K"Ä"ñˆO"’’’´¤'#™ÉJ6r’‡¡%(EÊRÊT§6u©OCÓ„æ´¢èB7zЋÞôc C `cÇ&2…éÌf> YÌR–³‚Õ¬cÛØÁ.ö°ýâ('9Ëy.r™«\ã&wxÀžñ‚W¼á-øÌw~ó—@«t %¡ Od¢˜Ä&ñIDRRštd YÈJr“‚¡8%)MYÊQJT¡Õ©A-êP—z4 MhFsZЊ6´¥íé@G:Ñ…nô }èË3ŒÆ0ILaÓ™Å\°˜å¬f-ëÙÈ&¶³‡ƒãç¸À%®p•›Üå÷yÈcžòœ—¼â5oøÀ¾ñƒ_üáVëÁI"…hÄ ±‰GB’œÔ¤'#™ÉJ6rS€¢”¢•¨B5jP“:Ô§MiAkÚÒžŽt¢+=èM?2„aŒ`$£Ïf2E,c«XÃZ6±=ä('9ÍYÎs+\ç÷xÀ#žðŒç¼æùÊw~ò›¿ü#ð3&(Á I(B–pD QˆF b‹8Ä%> HHb’’Œä¤$iÉ@f²‘ƒ\ä!ù)DQJPš²”§"•©B jSF4¡-hEkÚÒžt¢ ]éFzÒ›>ôcƒÌ†1œ‘Œa<“˜Â4f0‹ÙÌc!KXÎJV³–õl` ÛÙÅ>pˆ#ã8§9ÇE®r›Üæ.÷xÄS^ð†w|à_øÊOþh­ÛG0BŠ0„%"QˆNl⟄$& ÉIEZ2…lä yÈK SŒ’”¥<©LUªQƒZÔ¡õiHcšÐ”f´ mhG{:Ò™.t¥ÝéA/zÓ—þ dCÊF1މLa3˜Åæ²€Å,gkYÏF6³•mìdû9Ä1NpŠ3œã<—¸Ê nsŸ‡<æ)ÏyÁ+ÞðŽ÷|à_øÊ7¾ó“ßüåÖyßBP‚œ„$4a OD"…hD'1‰M\â“Ä$!ÉIEZ2’…ìä$7yÉO SŒR”¥•¨B5jP“:Ô§1ÍhIkÚÒžŽt¢+=èC1„aŒ`$£Ïf0›ù,d1KYÎ Ö²‰mìd/û9ÈaŽrŒÓ\à ×¹Í]îóÇ<á9¯xÃ;Þó‰¯|ç'¿øÃ?­—ÿ”à„ ¡ CXˆD!:1‰MⓈ$$#9©HKz2’‰¬ä yÈK S”â” 4å¨@%*SšÔ¦.õhHšÑ‚–´¡=éLºÓ‹>ô£?ƒÊpÉÆ3‰©Ìd. XÌrV²šµ¬g#›ÙÂV¶³“Ýìa?‡8Ê ÎpË\ãw¸Çñ„g<ç¯xÃ;Þó‰¯üà76èÁ E8"‰(D#±ˆMâ‘€D$&)ICz2“\ä¥ …)JqJR𲔣<©LUªQ“:Ô§MiAkÚÑ‘Ît¥;=éM_úÑŸ f(Ã`4ã˜È¦3‹¹,`KXÆ V±†µ¬c›ØÂVv°›}äÇ9ÅY.p‰+\ã·¸Ã]îñ€G<á)/xÍ;>ò…ïüâ/7êA NHB–p„'"‘‰J4b‹8Ä#‰HL’’œ”¤&-éÉHf²’ìä '¹ÉK~ R˜¢£8%(EÊQJT¡5¨I-jS‡z4 MhF ZÒŠÖ´¥=éLWºÓ“Þô¡/ýèÏ@3”á0ŠÑŒa,ã™Èd¦2™Ìf.ó˜Ï²˜¥,g%kÙÈ&6³•ìå G9ÉYÎs‘Ë\å:7¸Í=ò„ç¼â-øÌW¾ó“ßü%Ð&;ÁÿB0B’0„'Q‰Alâ‘$$#©HC:2‘Ld!9ÈIòSˆ¢” 4å¨HªQƒZÔ¡ hH#šÐŒ´¤ íéDWzЛ~ dÃÁHF3–ñL`"“™Êtf0‹9Ìc‹XÂR–±œ•¬f-ëÙÈf¶²ìd»ÙË~r˜£ç'9ÅÎqK\á7¸Åmîp—{<àOxÆ ^ñš7¼å=ùÌW¾ó“ßüå6ÛþG‚‚P„!á‰@D"•èÄ$6q‰OB‘˜$$%9)IMZ2’•ld''y)HQJR–ŠT¦*Õ©ImêЀ&4£mè@':Ó•žô¥?J£Ã8Æ3‘ILcs˜Ç"–±‚•¬f=›ÙÊvv³Ÿƒæ(Ç8ÁINs–‹\å&w¹ÇñŒW¼ã_øÆ~ñ‡Ú"'þ#(! KD¢Ä"‰HF*ÒŽ d" ÙÈNr“‚¡e(O%ªQƒZÔ¡ hDcšÐŒ´¢5íèHºÓ›þ b(Œb ã˜À$¦0•iÌ`s˜Ë³Œ•¬e#[ØÎnö²Ÿƒæ(Ç9ÁINs–ó\à2׸Éð„ç¼âøÄ¾ñƒ_üæÿþ?›­²!Á EX"™hÄ$ñIHb’’œ”¤& iIOF2“…ìä"/(L1JR†òT¤2U©NMjS‡ºÔ§!iBsZÑ–t¦=éC2˜¡ '€QŒf ã˜À$&3™Ìa>‹XÊ V³Ž lb ÛØÁ.v³‡}à‡9ÆIÎpžK\å·¹Çñ„g¼à¯yÃ;>ð‰Ï|ã'´Mv#$aOD"•èÄ$6qˆK|’˜$$'iÉ@f²‘“<ä§ …)JqJRš2”¥<©LªS‹º4 1ÍhIÚÓ‘Ît¥;=éMúÒŸ f#ÏTf³å¬b-ØÂöp€#œàg8Ç.q™›Üç)¯ùÈw~ñ—ÀÛÝ-B–ˆD%&±‰K|’˜$¤"ÙÈCÊPžJT£õhD3ZÑŽt¢ ÝèAOú3”QL` XÌ2V±ŽMlcû8ÄŽq‚Sœá,—¸Îò”—¼ã3ßùÉoþh‡÷– %!E‰èÄ!!III:2“œä&/ù)HaŠP”┤4e¨H5jÓ€&´ -èFzч~ `ƒÂ0F0’QŒg 3™Ç"–±š la;ØÅöq€ƒâÇ8ÁIÎs•Û<ä9oùÀg¾ñ‹ü·Ó½%4á‰Hd¢˜Ä"ÉHC&r‚¡8¥)OeªS›ú4¤1MiNKZÑ…~Œ`"3YÈ2V³žÍlg7û9ÌqNrš³œç"—¸Ê ns<á9¯xÃ;>ð‰Ï|á;¿øKà]æBpB–ðD$2Q‰Ftb—$&))ICz2’™¬d'9ÉC~ Q”┦©LUªS“ZÔ¦ iBsZÒ†öt¢ ÝèA/zÓ‡þ b(#ÉÆ3‰)Lc³˜Í泈¥¬`kÙÀf¶²ìf{9ÀaŽq’Óœã"W¸Æ nq‡»ÜãxÂ3^ðŠ×¼á-ïùÈg¾òüâÿ¼[†!(ÁA(ÂŽðD$2Q‰NLb‡¸Ä#‰HB2’“’Ô¤%=ÉL²’ä"ùÈO Q˜¢§$¥(MÊQJT¡*5¨M=Ò˜f´¤ íè@'ºÐ•nô¤ýĆ3’1Œc“˜ÂT¦1“9ÌgKXÎ*Ö²žlf+ÛØÎ.ör€Ãå§9Ç.q…k\ç·¸Ã=ðˆ'<åÏyÉkÞòž|â ßøÁ/þð—Úã­ ÁAHB–ðD$2Q‰Ftb‹8Ä# ILR’“’Ô¤%éÉ@&²ä$yÈK~ R˜"¥%(EÊQžÊT§µ¨G#šÐ”æ´¤5miOºÐƒžô¦?ƒÊ0F0’ÑŒe<˜Èd¦3›ù,f ËXÁ*Ö°Ž ld[ØÁp„£ç$§9Ëy.r‰ëÜå/xÃ>óüâÿ¼Wž',‘ˆA˜d¤ iHG2’<¤8¥)O%ªRšÔ¦.õi@SZÓnô¢Â0F0’ÑŒe“™É<–°‚5¬g[ØÆv±‡½âg¹Ìuns‡<æ)ÏyÉkÞð‘ïüá¿}æDh‘ÈD%:1‰M’„”¤!™ÈJr‘‡|  …(N)ÊS‰*Ô 6õh@#šÐŒæ´ -éA?1ŒF3–ñLd2S™Æl²Œ5l` ÛÙÅöq€Cá(§¸ÀUnsŸÇ<ã%¯yË{>ò™/ü$Ð~o¡ Od¢“ØÄ%> ILR’ž,ä"…(J JQ†rT •©FMêPŸF4¥­iK{:Ò™®t£'}èÏ †2‚QŒe<™ÌT¦3ƒÙÌc!KXÎ*Ö²Mla;ØÅnöq#çg¹Àe®r›Üæ.÷xÈžóŠw|â+?ùÍ_Ðs‚”„&‰JLâ€D$!)HEjÒ‘‘,d'7ù)D1JPŠ2”£©BujQ—†4¥mhG:Ñ…nt§'½éK2˜! e8Œb cÇ&1…iÌ`³™Ã<°ˆ%,e+XÅÖ±Mlf ÛØÁ.ö°—}àG8Æ Nqš3œã—¸ÂU®qÜä÷xÄcžòœ—¼æ-ïùÀW~è < IX"…hÄ qˆG|Ä$%9)IEjÒ’žŒd& YÉFvr’›¼ä§)LQŠS’R”¦ e)OE*S•jT§&µ©K}ÐF4¦)ÍiIkÚЖöt¤3]éFwzÓŸ d(Œb ã˜À$¦0éÌa!ËXÍz6³]ìa8ÄŽr‚Óœã"W¸Î-îrŸ‡<æ)ÏyÁkÞñ‘/|ç |È[CP‚’Є!<‘ˆJ b„$!)HEÒ‘žLd%¹ÉGAŠPœ’”¦,å©H%ªS‡†4£íèHWºÓ“Þô¥?Ì0Íx&3YÌa XÄ–²‚Õ¬c#[ÙÉpˆ#ã§8Í9.r…ëÜæ>xÆ ^ñ†w|à#_øÎ/þò¿Ã¾k IX‘ÈD%:1ˆK"’“† d!;¹ÉK~ R˜¢£4¨J-êш¦´¤5miOG:Ó…žôc CÁhÆ1‘ÉLe:3™Í²Œ•¬a[ØÎ.ö°âG9Åy®p“»<ä /xÅÞñO|æùïˆ7†0D 2щIl⟄$"9iÈH6r‘‚¥8%)MYÊSªÔ¢>MhAÚÓ™®t§'½éK?3‚1Ld*3™Ã±„e¬`«ÙÀVv±ŸÃçç¸À%®pÜäyÁ[>ò•üášA NBŽHD%±ˆC<ˆÄ$#%iÉ@f²’œä&/ù(HJPšrT U¨F jR‡ú4¦-iM[ÚÓ‘Ît¡;½èË3”á0Š1Œe“™ÆLæ0,b ËXÎ*Ö²Ílc»ØÃ>p#çg¹À%®pÜâ6w¹ÏCó„g<ç%¯yË;>ð‰/|ã;?ùÅþø˜B‚‚P„&,áˆ@$¢•èÄ$6q‰G’˜¤$')IEÒ’Ž d$3YÉNòRˆb”¤ å¨@%ªPêÔ &µ©K=ÐÆ4¥9-hI+ÚÐŽöt¤]èFzÒ‹Þô¥?Ä`†2œF2ŠÑŒe<˜Äd¦2™Ìb‹XÂR–³’U¬aØÈ6v³ŸCå8'9ÍYÎs«ÜâyÂ3^ðŠ7¼ã=ŸøÊ~óÀÇu˜ '$¡K"˜Ä&.ñIHb’œT¤%™ÉJvr’›¼ä£ E(N)ÊRžŠT¦*Õ©A]ÑŒ–´¡èDºÑ> d(#ÅÆ1ILa*³˜Ïb–±’Õ¬e=ÙÌv²Cå§8Ã9.p‰ËÜà.yÂs^òš·¼ç#ŸøÎŸÐ=‚’Є%<‰Dtâ€Ä$#©HC:2‘lä&?…(JqJRš²”§U©E=Ò„f´ mhG{ºÐ“¾ `0CN£ÃX&1ÙÌc!‹YÊrV²š5ld»ØËq„cœà§9ÇE®p[Üå>yÄcžòŒ—¼á=ŸøÊ~ñ‡¿ü#ðI7 „ 4áˆH¢ƒ˜Ä"qI@b’‘’4¤'#™ÉBV²“ƒÜä£Å(IYÊS‘JT¦*Õ¨IЄ洦-íé@G:Ó…îô¢ƒJ£ÃXÆ1‰La:³™Ï"–±‚U¬f ëXÏF6³•íì`'»ÙË~rˆÃå8'9ÍÎrž‹\æ*׸ÎMns—û<à!yÊs^òŠ×¼å=ù̾òŸüæ/ÿtJÆ!aKx"˜Ä&.ñHHR†ôd&+ÙÉANr“‡ü¢¥(KE*S•jT§&µ¨C=ЈÆ4¡-hEÚÒŽt¢ ÝèNzч~ ` ƒÆHÆ2‘ÉLe&s™ÏB³„Ul`8ÌqNsž‹\æ*׸Éî󈧼àoxË;>ð‘/|ç |Z#! EÂÈD#&qˆOB“„¤$'©IGF²\ä!ù)@! SŒ’”¥"U¨A-êP—z4 !MhNkÚÓ‰nô ½éC?ú3ˆ¡0†ñLf*Ó™ÁLf3‡ù,b«XËF6³•mlg'»ØËŽp‚Óœç"—¹ÂU®sƒÛÜãÏxÉ[Þó‘O|æ+ßøÃgÜC"XÄ#IHF R’ž¬ä¥(%(CªPÔ¢6 iN[:Óžôe ƒÊpF0–ÉÌd>‹XÊJÖ²žlf ÛÙÅ>q”“œæ,ç8ÏE.q•ÜáyÎK^ó†·¼çŸùÆ/þñ¿³v™„"4aGx"•˜Ä%IHF R’Š4¤%39)HIÊP*Ô u¨G}šÒšÎô¦ƒÆHF3–ñL`2Ó˜Álæ±€E,f ËYÅÖ³‰-lc;;ØÍ>p˜cœà§9Ãy.q…ëÜâ÷¸ÏóŒ¼á=ù̾òƒßüåç¼Ù'$¡M8"™èÄ"ñˆO“Œ¤!=ÉL²’œä&/ùÈOA S„b” e(K9*P‰ÊT¥:5©MêRŸ†4¢ ÍhA+ZÓ†vt #éJwzÒ‹Þô¥?Ì0F0šqL`“™Âtf1‡,f)ËYÁJV³–õld›ÙÊvv°‹=ìã9ÄŽqœÓœç"—¹Ê5np‹Û<ä9¯yÏ'¾ðü$ÐyÝ"áˆHd¢Ä# )HCz2’™¬d#…(F)ÊRžŠT¦ µh@ZК¶´§#èA?1ŒF1†qŒg*³™Ïb–±‚U¬a-›ÙÉ^r„cœà§9ÇE.s[Üá÷yÀcžñ‚7¼ç#ŸùÂW~ó¿ æH(žˆD& ±H@Rš´¤'#™ÈA> QŒ’”¦,å©@5êЀ&4§%­iK;:Ò…îô¢/ÌP†ÀHÆ0žILes˜Ç±„¥¬`5ëØÈv°‹=ìã9ÂqNq– \á7¸Åîò€Ç<ãïøÈg¾òŸüâ//ú¾!aOD"•èÄ 6ñHHRR’†td YÈJr“B£$¥)Ky*R‰*T£:5©MêÑ€†4¢1MiN Zц¶´§#èLºÑƒžô¦/ýÀ 3„¡ '€‘Œf,ã˜À$&3…©Lc:3˜Ã±„e¬`«ÙÀVv±Cã§8Ã9Îs‹\æ*×¹ÉmîrŸ<äyÊs^òš·¼ç#ŸøÌw~ó‡À—¼E'$¡ Kx"™hÄ$. IB2RŠ4¤%™ÉF.òQÂ¥8%)EY*P™jÔ¤.õiHcšÒŒ–´¡=èJOzÓ—þ dCÁ(Æ2)Lc³˜Ã\°˜e¬d ØÄ¶±ƒìã0'8îpÜâwyÀcžñŠw|ä3_ùÎO~ñ—À—õ„!<‰LT¢ƒØÄ#!IIIÒ‘Ld!+9ÈM> QŒ’”¦,å©H%ªRƒÚÔ§1ÍhA+ÚÐŽöt¢+=èÃ3”á0ŠÑL`*3˜Ã–°Œ¬b kÙÄvv±Cã§8Ã9Îs…›ÜãÏxÅÞñO|æùïŠ'4á‰Hd¢Ä%ÉIMz2“•ìä$7y(H1JSžÊT§&µ©K}ДV´§3ÝéM_ú3Á !€±Lb³˜Ç±„e,gkÙÀ&¶°íìb/8ÄŽqœSœå—¸Â5®s‹»<àOxÆs^óŽ|æ+ßùÁ]5g‚œ„"‰B4b‹ØÄ'IINJR“†td #™ÉB6²““Üä!ù)H!ŠPŒâ”¤e(Ky*R‰*T¥:5¨EmêPú4¤ÍhIÚÑNt¦+ÝèA/zÓ—~ ` ƒÊ0FÀ(Æ0–ñL`“™Î,æ2Ÿ…,f +XÍ:6°‰-le'{ØÏAs”cœâ,¸Ä®qÛÜã!yÊs^ð†÷|â ßøÁOþøšûE0BŠÐ„'Q‰NLb‡$&)HEÒ’‘,d''¹ÉK> Q””¢ å(OeªQ“ÚÔ¥> hBsZцvt #]éAoúÒŸ bŒf,ã™È$¦1“9Ìc‹XÌrV³žÍlc'{9ÈQŽs’Óœå<¹Ì®r“»<ä)/xÍ{>óŸüæ/®ûV&ÁNÂ(Ä 6ñHD2R‘†td YÈFr’‹|¢¥(KªPƒ:Ô£hB3ZЊִ¡=èJzÓ a8Œb ã˜À$¦0•iÌdóYÄRV°šuld3[ÙÎNv³—ýà G8Î)ÎrË\ã&w¸Çñ„g¼à¯yÃ{>ñ•üæßÿgrÃ]$¡C8"‰(D#:1ˆEâ‘€D$!)ÉHNJR“–ôd$™ÉJ6r‹<䣅(LŠRœ’”¦,å©@E*S…jÔ u¨GÒˆÆ4¥9-iM[ÚÑžŽt¢ ÝèA/úÐþ ` ƒÊpÅhÆ0ŽñLf:³™Ï²˜¥,g5ëÙÌvv²›½ìç‡9ÆIÎpžK\å·¹Ë}ò˜§<ç%¯xÍ;>ò…ïüâ/oê"Á IhžˆD&*шN,â’€Ä$#%iHO&²ä"ù(@A Q””¦©BujQ—ú4¤1MiNKZÓ†¶´§#éJwzÒ‹Þô¡Ä†1œŒdcÇ&1…iLg3™Í\æ³Å,a)ËYÁ*Ö°Ž lb [ÙÆvv²›½ìç ‡8ÌQŽq‚Sœá¸Äe®p•ëÜä6w¹Ïò˜'¼à øÂW¾ñƒ_ü!ð-Ý'$a OD"•hÄ  HB2’“‚T¤!™ÈBr‘›¼ä§…(F)ÊQŠT¢ Õ¨Aêш&4¥9-iE;:Ð…ô¤7}édž0Œ‘Œf,ã™À$&3™Ìe!‹XÂ2–³’µ¬g3[ÙÎNv±‡½å,W¹Ë#žóš÷|æ;¿ t[çFB†°D$*1‰K“Œ”¤!=™ÈJr‘‡|  E)IY*R…êÔ¢. hL3ZÒ†vt ]èJOú2¡Œ`c™Àd¦1“9Ìg!‹YÊrV°† la»ÙÇAŽpœSœå—¹Êunr›;<à /xÃ{>ñ•üæÿ»c§ A(ÂŽD$*1‰KB’œT¤%™ÉFNò¢E)IY*R•Ô¦ iBsZÑ–t¢ ÝèAOú2¡0šqLd Ó™Å\°˜¥,g%«YÃ&v°#çg¹Àe®s›û<æ)ÏyÉkÞð‰üûÿ9Þ5GBŽˆD!qH@’‘‚T¤!-YÉKQÊR‰êÔ¦>iNkÚÓ™®t§'½éÃF3™Ù,`)+YËF¶²“½ä0G9ÎINqŽK\ã÷y ÞðO|á?øÅþèž{IPB–ˆD#6ñILrR’š´¤'#™ÉJ6²“Ÿâ”§:uhHSZÒ–Žt¥'}éÏ@3”aŒe*sYÊ*Ö³™íìf?‡9ÎiÎrž‹\æ ·xÀ3ÞðžO|å¿ tßý"aG"…¨Ä&!ÉIK2“œä¡E(AÊQJT¡*uiJ[ºÒ‹þ f8£Ç$¦1‹9Ìc‹XÌ2V²†õlf+;ØÍ^ösÃå'8ÉÎs‰«Üä6÷xÈcžòœ—¼æ ïxÏ'¾òƒßzàF”„" áˆ@$"•hÄ$ñID2Rštd YÈFr’›< 0Å)EYÊS™êÔ¤6u©OCÑ„¦´¤ èL7zЇ bÃÁHF1†±Ld 3˜Í<°„¬b ëØÀ&6³•mìb/9ÂqNr–‹\æ*×¹Émîpû<ä1OyÎK^ó†·¼ç#ŸøÂ7~ð“_üá ôA NBš°„#‘ˆBT¢ƒXÄ! HDb’Œ¤$5iIO2’™¬d''¹ÉK>òS¡%(EiÊPŠT¥5¨Eêшf4§%­iK{:Ð…îô¦ÌpF1†qL`S˜Êtf0‡ù,f+YÍz6³•íìd7{ÙÇr”œá<—¸Â îp<â ÏxÎK^ñŽ|å¿ùËÿù#¡C8"‘ÈD!1ˆEâ‘€„$" ÉHNJR“–t¤'#™ÉJvr’›<ä%?)DŠQ‚’”¢ å¨@%ªPêÔ u¨K}Ò˜&4¥9-iM[ÚÓ‘Nt¦+ÝéA/úÐþ `C `$£Ëx&2•™ÌbóXÀ"³œÕ¬g[ØÁ.öp€#ã§8Ã9Îs™ëÜæxÂ3^ð†|â ßøÁ/~è±î”„%"‘‰JL⟄$&)ÉIAÒ’‘¬ä$/ù)HQJRš²”§"•©B jSŸF4£mé@gºÑƒ^ô¡ÈPF0šqLb3™Ã|±„e¬`kXËF¶°ƒÝìç0Ç8ÉÎs‘Ë\å:7¹Å=ò”¼áŸùÆOþðïÿçüÄ$(Á A¢—D$#éÈD6r‘‡| E(JY*Q‹ú4¦9­iOgºÓ“Þô¥?ÄHÆ1ÙÌg1ËYÍz6³•íìd7{ÙÇ1Ns™ÜáOxÁ>ð‰/|ã¿øÍÿžš¡ G$¢“8$ ÉHA*ÒŽôd%ù(HQJR†òT¦:5©M]êÓF4£5íéBzÑA a#ÉhÆ0ŽñLfsXÈR–³šõld3[ÙÎNv±‡½å—¸Îmîó˜ç¼æ=ùÌW¾ó“_ü÷̨Ä$. IJJÒ’žŒd&+ÙÉAŠR–JT£õhD3Zцvt ]èJ_1’qLb³˜Ç"–±‚U¬aØÈNöqŒÓœç2×¹Í}ó”ç¼ä5oyÇ'¾ñ“?ü#ðss!(Á I(‰¨Ä qˆG‘„¤¤$-ÈLV²““Üä%?(B JSŽ T¢ Õ¨A-jS†4¥­hC;:Љ.t¥½éÏ †0ŒŒd4cÇD¦0ƒÙÌe> YÌR–³‚Õ¬c[ÙÎNv³—ýäG8Æ Nq†³œã—¸ÂU®s“ÛÜå>xÈcžòœ¼â ïøÀ'>ó…oüà¿ùK nAFpBŠ0„#<‰LT¢ƒ˜Ä"ñH@B’’’´d YÈFr‘‡¼ä§ …)JqJP’Ò”¥<¨DªQƒZÔ¦õh@#Ӕ洤5miG{:Ò™®t£½èC?0A a#`cÇx&2‰ÉLe:3™Å<±Œ•¬f-ëÙÈf¶²]ìãG9ÎINs–ó\ä׸Å=ò˜§<ç%¯yË;>ò…üæ/^Êœ #! Cx"Ä"ñH@"“Œ”¤%™ÈB6r‹<䥅)N)ÊPŽ T¢ Õ¨NmêÓ˜f´ mhG:Ñ™îô¦?ƒÂ0F0’ÑŒe“˜Æ,æ2Ÿ…,f)ËYÉ*Ö±‰mìd7{ÙÏAs”cœâ—¸Êunr›»Üç!xÆ+Þñ‘Ï|å;?ùÍ_þñß+]$4áˆ@$¢Ä"6ñILrR‘†td YÈFvr“ŸÂ£¥(C9*P‰ÊT§6õiDšÑ‚V´¡íéLwzÓ bÃÁHF1– La:³˜Ë±„e¬`kXË6³]ìå‡9ÊqNrš³œç—¹Æ-îò€Ç<ã¯xÃ;>ð‰Ï|ã' üZ_N(ÂŽD" шN,â’€$¤ ÈD²‘ƒ\ä!/(L1JQŽJT£µ¨C=ЈÆ4£%mè@zЇ~ `CÆÍ8&2•™Ìe!‹YÊrV²šµ¬c›ØÂ6v°‹Ýìa8ÄŽrŒœâ ç¸À%.s…kÜàw¸Ë=ðˆ'<ã¯xÍÞñO|á+ßøÁ/þðÀoôŠ %8! MXžD$2Q‰I\â“€D$!)HEj2•œä¥ E)IiÊRžŠT¦*Õ¨A-êP4¢1MhF Zц¶´£èB7zЋÞô¡Ä†2ŒŒd4cÏD&1™©Lg&³™Ã\æ³Å,e9+YÅjÖ²žlf [ÙÆvv²›ýæ(Ç8Á)ÎpŽ \ä·¹Ïcžóš÷|ä3_ùÎO~ó‡@oåLpB–D&*щIlâŸ$&©HK2“ä"ù(@! SŒ’”¥•©FMjS—ú4¤1MiFKÚÐÎt£'}èÇ1„aŒ €ÑŒc"S™É\²˜¥,g%«YË:6²…íìf?‡9ÎINs–ó\ä2W¸Î-îò§¼ä-ïùÈg¾òŸüâ/ßé!C¢Ä"ñH@B’‘šôd&;¹ÉOA S”┤4e¨H5jQF4£mhG:Ñ…nt§Jc˜À¦1ƒYÌa XÈ–³šõlf;»ØÃ>pˆ#ã8§8ËE®r“»<àOxÆ ^ñ†·|â;¿ ôÞ\ AÂHD!1ˆI<“œÔ¤'3ÙÉInò’Ÿ‚¦%)G%ªQ‹z4¢ ÍhA+ÚÐŽöt¡'}ÈPÃ8&0‰)Lc3™Çb–³šõlf;;ÙÍ^ösÃá$ç¸Ä5nqG<á/xÅÞñž/üä/ÿûà[˜P„#‘ˆB4b‹ØÄ%‰HJrR’š4¤%=™ÈBvr’›¼ä#?)B1JRš²”§©L5jP›ºÔ§!hLSZЊvt ]èJ7zЛ¾ d0CÎÅXÆ3™©Lg&³˜Í\°ˆe¬`kXË:6°‰-lc;;ØÅö²Ÿƒæ(Ç8ÎINs†s\àW¸Ê5np‹ÛÜå>yÌžòœ—¼â oyÏG>ñ™¯|ç¿øK zE0BŠÐ„!‰Ltb›¸Ä#> ID’‘œ¤" iIO2‘…¬d#¹ÈM^òS¡(Å)I)ÊQ‘ªÔ¤6u©OCÑŒ–´¥#éJwzÒ‹~ d(Œb ã˜ÀD¦2ƒ9,`KXÆ V²– la»ØÃ>p£œà ¸Ä®qƒ›ÜåOxÁ+ÞðŽ|ä+?øCàOÞ{‚œ„"‰JLb—ø$$ÉHIZ2’™¬d''¹ÈGAŠR’Ò”¥<©D5jR—†4¦)ÍiI+ÚОŽt¥;=éMúÒŸA a#ÍXÆ1žÉLcóXÀ"–°Œå¬f›ØÆv±‡}ìç0Ç8Å9.p‰+\ã:·¹Ç#žñ‚W¼áïùÄW¾ó‹¿ú즄 '¡ G"Ä"q‰O“Œ¤&ÈD²’ä&(L1JPŠ2”¥<¨B jQ—†4¦)ÍiA+ZÓžÎt¥}èÇ1˜¡ c$cÏ$¦1ƒYÌa.óYÀV°Šµld3[ÙÎv±›½ìç ‡9Â1Np’Óœá,ç¹Èe®rÜâ6w¹Ç}ò˜§<ç¯xÃ[Þó|æ+ßùÉ/þð@_dÍ!aGx"•˜Ä"ñˆOb’“’4d YÈFvr’‹|¢Å)MYÊS‘JT¡*Õ©ImêP—ú4¤MhJ3ZЊ6´¥èDgºÒîô¦?ÌPÃXÆ3‘IÌbËXÉZ6²•íìd7{8ÀNpšs\ä ׸Á-nsŸÇ<çoùÀg¾òŸüâßÿçòUÿEX"™¨D'&±ˆG"’‘’4¤'YÈFrR’”¥U¨AêÑ€F4¦5éN/ú1ˆaŒ`$£Ãæ°€Å,g5ëÙÈf¶²}ãg¹ÈUnr›»ÜçÏxÃ>ó_ü#ð73"(ÁC$¢“8$ ÉHA*R“žÌd%yÈG Q˜¢£å¨@eªS“ÚÔ¥ hHK:Ò•ôaCÆF2ŠIÌb YÊJÖ²žlf {8 NsžË\ç&·¹Ë=žñŽO|å'ùßw='!I™èÄ$6q‰GB’‚4¤#™ÈL6r’—‚¦(Å)AiÊQ‰jÔ u¨KÓŒ–´¦-íé@gºÑ“>ôcƒÌ0Í8&0‰)Le³™ÇB³”å¬`kXË:6°‰Íla;ØÉ.ö°ýàG8Ê1NpŠÓœá¸È%®pëÜà&·¸Ã=ðˆ'<åïùÌw~ò›¿ü#Ð=à?‚œ„& a G"…hÄ &qIHb’’œ”¤& éÉDVr‹<ä#?…(J JS–òT¤Õ©CšÐŒ´¢5èJOúÒŸ fÃÉÆ3‘ÉLe3™Ã|±„e¬`%kXÏ&¶²ìfû9ÄQNpŠ3œã<—¸Ê ns—û<äOyÁkÞñO|á+¿ôSïA(ÂŽðD!&qIHb’’œ¤%ÙÈEòQ€‚£4å©LUªS“ZÔ§ -hC;:ЉÎô /ÊpÅh&0•™Ìe> YÌV²ŽMlc»ØÃ^p˜cœä ç¸À%®p•ÜæyÂ3^ðŠ7¼åŸùÆOþðÀ¿t€ #$aO$¢˜Ä&.ñHDRR’–Œd&+ÙÉI.òQ¢”¤,å©HeªRZÔ¥!MiIkÚÒžŽt¢=éË@†2œF1†±Œg"“™Ê4¦3“ÙÌa.óYÈb–²Œå¬d5kXËz6²™­lc;;ÙÍö²Ÿƒæ(Ç8ÎINs†³œçW¸Á-ns—û<äÏxÉ[>ò•ïüä7ùGàßÞ)‚Œà„ aK8"‘ÈD%щIlâ—ø$$))IMÒ‘Ld&;¹ÈG!ŠQ‚R”¡å©L5jQF4¡-hEkÚÑ‘.t§}èÇ1˜a0šqLd2S™ÎLf1—,f+YÍZÖ³‘Mle»ÙÇAs”ãœäç¸ÈUnr—û<ä1OyÆ+Þò‘¯üä7 ôGVüGpBŽHD#±ˆC<ⓘd¤"™ÈB6r‹Üä§Å(E9*P‰*T£:µ©G#šÑ’Ö´¥=éD7zÒ— a#ÉhÆ0ÉLg6óYÈb–²œ¬a=›ÙÎnö²Ÿƒæ'8Íy.s›Üæ.÷yÀžóš÷|æ+ßùÉoþø¯n‚0D QˆF b—$!iHG2‘…¬ä 7ù(HJPš²”§"•©B5jP“:Ô§MiAÚÓ‘Ît¥;=èEú2€Á #€ÑŒgS˜Æ f1›¹Ìg‹YÆJÖ°žÍlc»ØÃ>ösÃá'8ÅÎrž \â ׸Á-ns‡»Üç!yÊ3^ð’×¼å=ù̾òüâÿôOwø '$¡ K8ÂHD!1ˆIlâ$" ÉHN R’š´d$™ÉNNòR¢§$¥)K9*R…Ô¦ iJsZÒš¶´£èL7zÒ— f#ÍXÆ3‘ILaÓ™Å\²„å¬bØÄ¶±ìfû9Ä1Nr†ó\æ*×¹Émîp<ä9oùÌþþF F(‰(D#±ˆMB’“–Ld'7ù)LqJS–òT¤2U¨AÐÆ4¥9-iKG:Ó•nô '}ÈP†1‚‘Œf,™Êtf2‹9Ìe> YÊJV±Ž la{ØÇq„£ç$g¹È%®qƒ;<à ÏxÁ+Þð–|æ;¿øKàÀ%8! MXÂHD&1‰K“ŒT¤!ÈDf²’ä&…(J JSžŠT¦*Õ©A-êP—4¦9­hKºÐô¢}éÏ@1‚±LesYÈRV²–lf+ÛÙÉ.pŒs\æ·¸Ç#žñŠ7¼ãŸøÌOýÏþ’0D 2щM|’˜¤$'éÈB.òR€"§4å©LUªS“ÚÔ¡!ÍhE{ºÐƒ>ôcƒÂP†ÀHÆ1™éÌa!KYÉjÖ²žlb ÛØÎANs™Üå!OyÉ[>ò™¯|ç'¿øKàÿ BžÈD%:1‰Eâ’€Ä$#éÈHV²““Üä!ù)DQJP† T¦:5©M]êÑ€†4¡9­hG'ºÒ“Þô¥?Ä`†2œF1†±Œc“˜Â4¦3ƒYÌa XÄb–°Œ¬b kYÇ6±…mì`'»ØÃ>pˆÃá'8ÅÎqž \â ׸ÁMnq›;ÜãÏxÎKÞòž|æ+ßøÉ è?‚’0„#‘ˆLT¢“8Ä'IIAjÒ’žŒd" YÉAnòQ"§e(G*R™*T§ui@cšÑ’Ö´¥=èDgzЗÁŒb™ÊLf3—ù,dËXÎjÖ³™­lg7{ÙÏAs„œä,¹Êunr—û<ä1OyÆs^òš·¼çùÌW¾ó“_üæÿT>%Á IhžD$ щE\˜d¤ iHKz2™lä$ù)DQŠS’Ò”¡å©DUjP›z4¤ ÍhA+ZÓ–vt¤ ÝéE_0˜¡ '€‘Œf ™Â,°„å¬bØÄ¶±=ìç(§9Ï%®r“ÛÜå>yÄsÞð‰_üãÁÌ›P„!ˆDdb—Ĥ&=™ÈF.ò¢0%(KªPƒÚÔ§!iJ3ZÐ’vt¦½èÇ@†2œF1š±Œc23˜Ç2V±–le;;ÙÍ^öq#çg9ÏE.s…ëÜâ.xÌSžó’W¼åŸùÆO~ó0„à„",ˆD¢˜Ä&.ñI@"’”d¤ iHGz2’™,d%;9ÉM^òQ€B¦Å(A)ÊP–òT¤•©BUjR—ú4¤1MiFKÚÐ.ô }èG1”Æ0ILaÓ™Å\²”•¬f-ëÙÀf¶±‹}âÇ8ÁIÎq™ëÜæ>yÌSžñš|áø÷ÿ9…pwBH‰hÄ"ñH@B’‘šôd&;9ÉM^òQ˜”¡U¨F jQ›4¥%méHgºÒô¦ƒF£Ã8Æ3‰©Ìd. XÄ–±œ5ld+;ÙË~r˜#œä—¸Æ-îp<ä¯yÏg¾ó“ßüåÿ éž‚P„!á‰D4b‹8Ä#>‰HF R‘†t¤'ÙÈA.òü¤0E)F JQš²”§"•¨B5ªS“ÚÔ¥ hDcšÒœ–´¢ íhO:Ñ…®t§'½èË1„aŒ €ÑŒc“˜Â4¦3‹¹Ìg!‹YÊ2V²†ul`[ØÊö°âG9ÁÎqK\á*7¸Ã=ðˆ'<åoxÇ>ñ…¯üàÿJoJ0B–ðD$2Q‰FL⟄$&)ÉHIZÒ“‘Ìd%9ÉK~ R˜¢£$e)OE*S•jT§5©EmêP—zÔ§ iDšÑ‚–´¦-íé@G:Ñ™.t¥ÝéAOzÑ›>ôcƒÌP†ÀHF3–ñL`S˜Ætf2›¹Ìc‹XÂR–³’Õ¬aØÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅiÎp–sœç¹Äe®p•k\ç7¹ÍîqŸ‡<â OyÎK^ñš·¼çŸøÂW¾ñƒ_ü&Ph÷›`„ aKD¢˜Ä&.ñH@"“„d¤ %©IK:2‰,d%'yÉOA S”b”¢¨DªQÚÔ§!iJsZІt¢ ÝèAOú2Á e8Œd,™ÌT¦3“YÌcKXÆ V±šõlf+ÛÙÉnö°ä0G9Æ Nqš³œçW¸Á-îpû<æ9/yÍ[Þñ‰oüàøËÿÂÈ„" a OD"•èÄ$±‰C<D$& IIFrR’T¤!éÉ@F2‘™,d%ÙÉA.ò—¦%)Cy*R™ªT§&µ¨C=Ј&4£­hC;:БÎt¥;=éM_ú3Á e8#ÉhÆ0–qŒg™Ä¦1Ìd6s™Ç|°E,aËYÁJV±šµ¬gÙͱ]ìå‡9ÆINs–ó\ä2W¸Æ nq‡{<àOxÆ ^ñš·¼ç#ŸùÊw~ò›¿ kŸø`„$ á‰DT¢“ØÄ%> HL2R’†ôd" ÙÈA.ò—¦%)Cy*R™ªT§&µ¨KÓŒ–´¡èDºÑ^ôeƒF£Ã8&0‰ÉLc&s˜Ï"–²œ•¬f-ëÙÀ&¶°•mì`»ÙÃ^ö±ŸƒæG9ÆqNpŠ3œå<¹ÌU®s“[ÜáxÄžñœW¼å=ùÌW¾ñƒ_üæÿNÎüG‚œ„& a Gx"™¨D#±ˆC<ˆÄ$%9)IMZÒ“Ìd#¹ÈC>òSˆ¢§$¥)K9*R…jÔ u¨KӔ洤5mhO'ºÐô¢7ýÈ`†2œF2†ñLd2S™Î f1‡¹Ìg!‹XÂ2–³’Õ¬aØÈf¶²ìb7{ÙÏq„£ç$§8Ã9Îs‘Ë\á7¸Émîr<â1OyÎ ^ñ†·¼ç#ŸøÂ7¾ó“ßüáÃÛ‚Œà„$4aG"™¨D#±ˆM\â“€D$!)ÉII*ÒŽôd$3YÈFr’›¼ä£…(LQŠS‚R”¡,å©H%ªPêÔ¤6u¨GÒ˜¦4£­hM[ÚÓNt¡+ÝéI/úÐþ d0CÆÅÆ2ž‰Lb Ó˜ÎLf3‡y,`!‹YÊ2V°ŠÕ¬e=ØÄ¶²ìbûØÏAs„cœà$§9Ë9.p‰Ë\å:7¸ÅîrŸ‡<â ÏxÎK^ó†w|à#ŸùÊ7~ð‹ßü%P{Æ%!Eh–pD ‘‰BT¢ƒXÄ&.ñIHb’’Œ¤" éÈ@F2“•ìä$7yÈG Q„b§e)OE*S…êÔ¢õh@Cј&4¥ÍiAKZÑš6´¥èHºÓ‹>ô¥?ÌP†1‚‘Œf,ã˜ÀD&1…©Lc3™Íæ2,b1ËXÉÖ±žlf+ÛÙÁ.ö°ä0G9ÎINq†s\à—¹ÆMîpû<â)/xÅkÞòž|æ ßøÁ/þð—ÀÝ)‚’P„%‘‰J4¢ƒ˜Ä"6qˆK<â“€D$&)ÉII*ÒŽ d$ ÙÈANr‘›<ä%ù)@A Q„b§$¥)K9*P‰*T¥µ¨C]êÓÆ4¡-hEkÚÑNt¦+ÝéI/úÐ dÃA£Ëx&0™©Lg3™Ålæ0—yÌg YÄb–°Œ¬b5kYÏF6±…mì`'»ØÍö²ýà ‡8ÌŽrœ“œæ ç¸À%.s•ëÜäw¸Çò˜§<ç¯xÃ;Þó‘Ï|å?øÅþ(’7’ %8! MÂHD& Q‰Ftb“XÄ&ñH@B“”d¤ ©ICZÒ‘ž d$YÈJvr’‹<ä#?)LŠQ‚’”¦,å¨@%*S•êÔ u¨K}Òˆ&4£9-iMÚÒŽöt #èLWºÑ“Þô¡?Ć1œF1šqL`"“˜Ì¦2éÌds˜Ë|°ˆÅ,e+XÅÖ±žlf ÛØÁNv±‡}à‡9ÊqNpŠ3œå¸Äe®p•›ÜåxÄžò’·|à3_ùÉ_E¶k!Á Mx"•èÄ&> ILR’“‚4d YÈNnòSÂ¥8%(C*Q…êÔ¦> iLSšÓ‚V´¡-íhOG:Ó…nô '½èC?ú3€ f(ÃÁHF1š±ŒgS™Æ,æ±€E,aËYÍz6±•íìf?9ÌQŽs‚3\à2׸Áðˆ'<ã/yËG>ó•ü!pß4%8! E8"…hÄ$. ILR’“’T¤#YÉA.òQˆ"£¥(My*SšÔ¦>iJsZÒš6t¢½éÇ@†À(Æ0Ž Ld*3™Ã|²”•¬f-ëÙÈ&¶±‹½àÇ8ÅÎqK\æ&÷yÄS^ð†|â ßøÁOEÕB†ðD&:1‰M\â“€d¤!=™ÈJNò’Ÿ‚¦(Å(A)ÊPŽòT U¨JujR›ºÔ£> iLšÒœ´¤­iK{:Йîô¢/ýÈ`†2ŒÆ0žILa3˜Ålæ²Å,e9+YÍZÖ±-lc»ØÃ>pÃåÇ9ÁINs–s\à—¹ÂU®qƒ[Üæ÷xÈžòœ—¼æ ïùÌ7~ò›¿ŠææñÁEX"‰(D#1‰C“Œ¤" éHO&²‘“<䣅(BQJP†òT¢ Õ¨A-jSF4¥­hC;:Б.ô 7ýÀ †0ŒáŒd,˜ÌT¦3“ÙÌa>‹YÆJV³–õld[ÙÉösÃå8'8Íy.q•ëÜä6w¹Çñ˜'<ã¯xÃ[ÞñO|æ ßøÁ/þð—Ž.?‚”„%<‰Lb‡ø$"©HC:2‘¬ä$ù)LqJR𲔣Õ¨A-êш&4£-iKG:Ó•žô¥?ÌF0š±ŒcÓ˜Á,æ0—ù,dKYÉZÖ³‘Íla{ØÏ!ŽqŠ3œã¹ÊMîpŸÇ<ç%¯yË;>ñüâßÿÏ=†™œ„"‘ˆB4b$" IIIZÒ“‘¬ä$7yÉOŠP‚R”¡U¨F jQ›†4§méHWºÓ“Þôa#ÅX&2•éÌd6sXÀ–±‚5l`[ØÆvv³Ÿƒæ8§9Ëy.r‰Üã!OxÁÞñO|æ'bš-ÁE8"‰(D%:1‰ElâŸ$" IIF R‘š4¤#=ÈD²’Üä%?)LŠQŠ2”£•¨L5jQ‡z4 iF+ÚÐŽt¢3]éNzÒ›¾ô£?Ć1‚F3ž‰Lf*Ó™Álæ³Å,e9+XÍz6²™­lg»ÙÏAs”ãœà4ç¹Èe®rÜæ>yÌSžó‚×¼ç#ŸùÊw~ð›@±¼?!!I"‰(D#1‰C‘„d¤ %iÈ@&²ä$7yÉG Q„b§¥(CYÊS‘ÊT¥Õ©ImêЀ&4£­hM{:Ó^ôcƒÂPÃx&3™Ìf.óXÄ2V²–lf+ÛÙÁp˜ãœæ,ç¹È%®q‹;<à ÏxÁ+^óžÏ|å' [>!(¡‰Hb‡x$ ‰IJrRŠ4¤%=ÉD²‘ä"7yÉO QŒ”¢ e)OeªRšÔ¢. iLSšÓ‚Ö´§#éJ7zÒ—þ d0CÎ(Æ0Ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d-ëÙÈ&¶±ƒ]ìf/û8ÀAs”ãœàg8Çy.s•ëÜà÷xÀCó”ç¼àoxÇ{>ó•ïüàÿÇNŒ„"4á‰Hd¢ƒXÄ!.ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éHO2’‰Ìd!+ÙÈNr’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨NMjS‡z4 !iJ3ZЊִ¥=èDºÒžô¢7}éG2ˆ! c8Œb4cÏ&1…©Lg&³˜Íæ2ù,`!‹XÌ–²Œå¬`%«XÍÖ±lf+ÛØÁ.v³—ýàG8ÊqNrŠ3œã<¸Äe®pëÜä6w¸Çò˜§<ã¯xÍ[Þó|â3_øÊ7¾óƒŸüâ7øË?ŵóüÿJpBŠ0„%á‰@D"…¨D'±ˆC\â“D$!ÉIIjÒŽ d$3YÉFr‘›¼ä§…(BQŠS’Ò”¥<©DeªPÔ¤6u©OCÓ”f4§­hC[ÚÓ‘Ît¥;=éM_ú3€ bÃÁHF3–ñLd2S˜Ê4f0‹9Ìc‹XÂ2V°’U¬f-ëÙÈf¶²ìf/ûØÏq„cœàg8Ë9Îs‘Ë\á7¸Åîñ€‡<â1OyÎ ^ñ†w|à_øÊ7¾ó“ßüáãÙ1‚œ„&,á‰@D"…hÄ qˆG‘„¤$#9)IMZÒ“‘Ìd%;9ÉEnò¢Å(A)ÊPŽòT "U©I]Ò”–´¦-íéHgºÐô¢ýÀ †0ŒáŒ €QŒa˜Ä¦1ƒYÌfsYÈRV²–le;;ÙÍ^ös€#œà ¸Â nq‡{<àyÊs^òš·¼ç#ŸùÊ7¾óƒ_üáãË™ '$¡ CX‰hÄ"‰HF R‘†td #™ÉJvr’‹<ä#?(DŠRœ’”¦,å¨@%*S…jÔ &µ©K}Òˆ&4£9-hEÚÒžŽt¦+ÝèA/zÓ‡~ ` C `c˜À$¦0Ìd³™Ïb–²œÕ¬e=Ù̶²]ìã‡8Æ Nq†sœç¹ÊMns—‡<æ)ÏyÉ+^ó†|á?øÅ¿ÿÏ9ïg‚‚P„&<‘‰Nlâ’¤$'%©IK:2‘ä"(DŠQœ”¤,©LUjR›ºÔ§!hLZІvt  ÝèA/úЗ~ôg0à `ã˜À$¦0éÌ`&sYÈRV²šõlf+ÛÙÉnöp€#œà ç¸Ä5np‹;Üã>yÎK^óž|æ+ßùÁO~ñÿê Á MX‘ÈD!*шG2R‘ŽLd#yÈG Q˜ÒT¦:µ©OcšÓ’Ö´¥=èBzч bÃA#Å8&1…iÌbóXÀ"³„¥¬e+;ÙËAŽr’Óœå<¹Ä®qƒ[Üæ÷xÀCó”ç¼ä¯yË{>ð‰/|ã?ùÅþ(‘o+‚Œ„$aGx"•èÄ$6q‰O’˜ä¤$5iIOF2‘™¬ä$7yÉOA S„¢§4e)OE*S•jT§&µ©K}ÐÆ4¥-hE;:Ñ™®t§'½èÇ †1’ÑŒe<™Ä4f1E,a+XÅjÖ³™íìf/û9ÈaŽp‚3\à ׸Á-îp—û<æ)ÏyÉkÞòŽ÷|ä+ßùÉoþ(±·ÿŒP„#QˆF b›ø$&9©IKz2’™,ä (B1JPŠ2”¥"U©I]êÓÆ4¥-hEÚÑžŽt¦ ]éNOzÓ—~ `CÆpÅhÆ0Ž Lb S™Ætf0“YÌaóYÀ"–°Œ¬d«YÃZÖ±Mlf ÛØÁ.ö°—}ìç9ÄŽqœœâ ç¸ÀE.q™+\å7¸Åmîp<â OyÉ[>ð™ïü&Pù„`„ aKD¢ƒØÄ'1ÉIIjÒ’žŒd& 9ÈC> P„”¡¨DªQƒšÔ¥!iJKÚÒ‘Ît¥;=éM_ú1ˆa g#ËD&1…iÌ`s˜Ë|²„å¬d-ÙÌV¶³“Ýìe8ÄQNpŠs\â ׸Á-îpû<æ9¯xËG¾ò“ßü%PR™„`'4á‰DTb—„$&)ÉIIjÒ’ŽLd#¹ÈG!ŠQ‚R”¡¨DeªS›ºÔ§1ÍiM[ÚÓ‘Ît¥;=èM?2„aŒd,ã™Èd¦2™Ìb. XÌ2V°† lb ÛØÁ.ö°—Üä ç¹Ìuns—û<ä1OyÎ Þñ…ïüâÿ%3kBš°„'"‘‰B,˜d¤"™ÈB6r‹<ä#?E)M9*R•šÔ¥> iLSšÓ’Vt =éÆ0‚‘Œf,ã™Èd¦0Ìd6s™Ç±˜¥,g«XÃZÖ³‘MlaÛÙÉnö°ä0G9Æ Nqš³œç—¸ÂU®s“[Üá÷yÈcžðŒ¼ä5oyÇ>ñ™¯|ç¿øÃ_%×þ#(Á A(–ðD$QˆFtb›8Ä# ILR’‘‚T¤&-éÉ@&²•ìä$yÈG~ R˜"£%)MYÊQJT¦*Õ©A-êP—ú4¤MhFsZÒš6´£éLWºÓ“^ô¦/ýÈ`†0ŒŒd4cËx&2™©Lc³˜Ã<æ³€E,a+XÉjÖ²žlb3[ÙÎNv³‡}àG8Ê1NpŠ3œã<¹ÌU®sƒ›Üæ.÷yÈ#žñŠw|â ßøÁ/þð@)Ü_B†D" шA,â—„$%%iIOF2“•ìä$ù(D1JQ†rT U¨FujSŸÆ4§%­iK{:Ò™.ô Â0F0’ÑŒe<˜Â æ°€E,a+XÅÖ²‘­ìd/û9ÈaŽrœ“œâ—¸Æ-îp<â ÏxÎkÞó™ïüä7 ”R‡ BPB–ˆD%:1‰M\â“D$!©HGz2’™¬d''¹ÈC> QŒâ”¤4e)OE*QZÔ£MhF Zцv´§3ÝéM2˜¡ '€QŒf<“™Îlæ2Ÿ…,f)ËYÁ6°…ìbû8À!Žp”“œå"W¹ÎMns—û<äOxÆ ^ñš7¼ãŸøÂW¾ó“ßüåRÉ‹ #! MX‘HD&*щIlâ$" IIF R‘†t¤'#™ÉJvr“Üä%?)DŠQ‚R”¦ å¨@%ªP•šÔ¥!MiNKZÓ–öt¤ÝèE?1„aŒ`$£Ë8&1YÌc‹XÂ2V°ŠÕ¬g3ÛÙÍ^ösÃå8'8îpƒ[ÜáxÄžò’·|ä+ßùÉoþ(µ ùà„&<‘‰Jtb›¸Ä'IHA2‰,d#¹ÈC^ R”’”¥<©LUªS“ZÔ£ÍhEÚÑNt¡ÝéM3œF1†qL`“™Êtf3Ÿ,b ËXÁ*V³–õlf;;ØÅöq€Cæ8§9Ïe®r›Üæ.÷yÀ^ð†|â ßøÁ/þð÷ÿ3I£S„"ˆD¢ƒXÄ&>‰INjÒ’žŒd&+ÙÉA P„”¢ å¨@%ªP•êÔ¤6u©G}Ò˜&4£­hC[ÚÑNt¦ ]éFwzГÞô¥ýÀ@1˜! cŒd£ÃXÆ1ILf S™Ætf0“ÙÌe XÌ2V²šµ¬g#›ØÂvv±—ýä0G9ÆINs–ó\ä2W¹Î ns—û<ä1OyÎK^ñ†w¼çùľñüäÒ˜ÿJpB’P„%‰LT¢ƒØÄ#!IHF R‘†´d 3ÙÈInò’Ÿ‚¢(%(M9*P‰*T£:µ¨KӔ洤5mhO'ºÒƒ^ô¡È†3’1Œc“˜ÂTf0›y,d1KYÎJV±– lf;ØÅö±ŸCå§9Ëy.r™+\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñš7¼åøÄ¾òïüä7ùÇéÜ B†p„'2шEâŸÄ$%%©IK:2‘…ä"yÉO Q˜¢£%)MÊQžŠT¡µ¨C]Ò„´¢ méHzЋ>ôe ƒN£Íx&2•éÌds˜ÇB³”e¬`kYÏF6±…mìd7{ÙÇq”ãœä¸Ìunr›;<à1ÏyÉkÞðÏ|ç'¿ùCàô2#8! M"‰hÄ ±IHRŠ4¤%3ÙÈEò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÚÔ¥> hB3ZÐ’¶´§#èFzÑ›¾ôc̆1œF1†±Ld2S™Æ,æ0ù,d1KYÆ V±†µ¬g#›ÙÂ6v°‹Ýìç ‡9 Nq†³\ä2W¹Æ-îpû<æ)ÏyÁÞñ|å;?ùÅoþð—Ê`'øÿ„ #8!I(B†°„'‰D¢˜Ä&ñH@"“Œ¤"5éÈ@&2“…¬d#;9ÈI.r“‡|  …)JqJPŠ2”£<•¨B5ªS“ÚÔ¥ hDšÒœ–´¦ íè@':Óô¢7}éÏ@1„aŒ €ÑŒe<˜ÌT¦3ƒÙÌe> XÌR–³‚•¬b5kXË:Ö³lb3[ØÊ6¶³ƒìb{ÙÇ~rˆ£œà§9ÇE.s…kÜà·¹Ë}òˆ'<å9/xÅkÞòŽ÷|â _ùÁoþòÀíA FB†°„'"‘‰B4b‹ØÄ%> ID’‘‚”¤!=ÉDVr‹Üä£ …)B1JPŠÒ”¥<©DUjP‹ÚÔ£!iB3ZЊ6´£éDgºÒžô¦}éÏ@3”á0’QŒf,ã™Èd¦0•éÌd6s™ÏB±˜%¬` ëØÀ&6³ìa?‡8Ê NsŽ \â2W¸Æunq—<æ/yÃ{>ñ…o|ç¿øÍ_er{B0BŠ0„#‘ˆL¢˜Ä&.ñIHb’’œ”¤&-éHOF2‘…lä yÈG Q„b” $¥(CYÊS‘ÊT¥:5©M]êÓÆ4¡)ÍiA:Љ.t£½èM0„aŒ`$£Ã8&1Ìb6s™Ç"–±‚U¬a-ëÙÈf¶²“½ìc?9ÊINs–ó\à2׸Éî󈧼à5oyÏ>ò™/|ç œYÆ'a‰@$¢•hÄ &±‰K|’˜¤$'%©IKz2‘Ìd!9ÈEòQ€B¡%(EiÊPŽòT¤2U©NMjS—ú4¤1MiFsZÒŠ6´£èB7zЋ>ôcĆÀ&0…Ìa XÄ2V±†ul`#[ÙÉ^r”“œæ,ç¹Ìunr›»Üã!OxÎ+ÞòÏ|ã'¿ùË?eÑWþ#! Cx"•Ä& HDb’Œä¤%39ÉOQJSŽŠT¡u¨Gј洦=éNoúÒŸ %€QŒaã™Ìtf3ŸÅ,g%«YËF¶²ìfû9ÄQNpšs\ä ×¹Émîp—û<à1ÏxÉÞó‰¯üà7 ”UWøAJh"¸$&%iHO&²‘‹<ä£)LQŠS’Ò”¥å©@%ªP•êÔ¤6u©OCј&4£-iEÚÒžt¢3]èJwzÒ‹¾ôgCN£Ã8&0‘ILe:³˜Ã|²˜¥,g%«XÍZÖ³‘Íle;;ÙÍ^ös€ƒæ(Ç9ÉiÎrž‹\æ*׸ÎMns—û<ä1OyÎK^ó†·¼ç#ŸùÊw~ò›¿Ê&kþ#ÁAHB†p„'‰LT¢˜Ä&.ñH@B‘˜¤$')IMÒ‘Ld& YÉNNr‘—‚¡¥)OE*S•êÔ¤uiHZКöt¤3]éNOzÑ— a£Ç&1…iÌ`&sXÀb–³Šul`[ØÆv²‡}ä0Ç8Á)ÎpŽ \äW¹Î-îpŸ‡<æ)ÏyÉ+^óŽO|å'œ]ž%8! M™hÄ". ILR’“’Ô¤!=™ÉF.òRÂ¥8%)MÊS™jÔ¢. iLSšÓ’Ö´¡=éF/ú2Á e8Œb4ã˜ÄTf2‡,b ËXÁ*V³–õld3[ØÆv²‹=ìc?9ÌQŽs‚Sœá,ç¸À%.s•ëÜä6wxÀžòœ—¼æ ïøÀ'¾ðüâÿ”C†ü #¡C8"‰(D%щIl⟄$&)ÉII*R“†td YÈFr‘‡|ä§)BqJRšrT U¨FujP“:Ô§!iF Zцv´§éLWºÓ“^ô¡ýÀ †0”á0Š1Œe<™Äd¦2Ìb XÂRV²–õld3[ÙÆv±‡}àG8Æ NrŠÓœå<¹ÌU®s“ÛÜå÷yÀ#žðŒ¼â ïøÀ'>ó…¯|ç'¿ùK œö„ #! Eh‘ÈD%±ˆC<D$&)IMZ2‰,d#9ÉEnòS˜â”¦,©JujR›ºÔ£ÍhE;:Ð…ô¢ýÀ@†0œF1–ñLd2S™Ætf0›y,`KYÎJV³–u¬g[ØÁpˆcœâ ç¸À%.sÛÜç1OyÉ[Þó‘Ï|åø/—;Lh‰hÄ qˆG|‘”ä¤$ éÈ@&²•ld'yÉOAŠPŒ”¢ e)GyªR›ú4¦­hG:Ñ…nt§'½éK0Á e#ÉhÆ2ŽñLd2S˜Êtf2›9Ìe> YÄ–±‚U¬aØÈ&¶°ìbû8ÀAq„cœàg8Ç.r‰+\ã·¸Ã=ðG<å9/yÍ[Þó‘O|æ?øÅþ8·Ì BP‚’Є%á‰Hd¢Ä"q‰G‘˜$$#éHOF2“•lä$/)JqJR𲔣"U©I]êÓÆ4¥-iKGºÒžô¦/ýÈPÃ8&0‰)Le³˜Ã<°ˆ%,e+YÍZÖ³‘ÍleÛÙÅ>qŒœâ ç8Ï%®q‹{<àOxÆs^ñŽO|ã¿øÃ?å‘Á Mx"™¨D'±‰Ob’“’Ô¤%=ÈLvr“Ÿ‚¦(Å)A)ÊPŽ T¤2U©FujR›ºÔ§ iLSšÑ‚V´¡íéHgºÐ•îô¤7}éG2˜! c#ÍÆ1‰Lb Ó˜Á,f3‡y,`!‹YÊrV²Š5¬c=ØÄ¶±ƒìbûØÏAs”ãœà ¸Èe®s›û<æ)ÏyÉkÞðŽ|â _ùÉ_þ8¯®’°D$2Q‰NLbD$%iÈ@²“›¼ä§ …)JqJP’R”£U©AЄ洦-íéHgºÒô¤ýÄPF0šñLf³˜Ã<°ˆ%,c9+XÉZ6²…íìf?‡9Æ)ÎpŽ \â ׸Πnr—‡<æ)/yËG>óŸüæ/òù~!A FpBžˆD&:±‰OB’’œ”¤&-éÉH&2“…ä!(B ÊPŽJT¡5¨EêQŸ4¤)-iM[:Ò•žô¦?ÌP†À(F3†±Ld*Ó™Él泘%,c«XÇ&6³•íìdû8ÄŽq‚3\à"—¹ÊunsŸ<â ÏxÎkÞó•ßüýÿ ò{£ˆHTb—„$%9)IMZÒ‘‰lä$(B JSžŠT¦*Õ©ImêP—z4¢-iCºÐƒÞôg ƒÊpÅhÆ0–‰Le³™Ïb–³Šul`[ØÆv±›=ìå G9ÁiÎs™ëÜâxÄžñ‚W¼æ oùÈW¾ó“¿ü¯€Y‚0„#‘ˆB4b“XÄ&>‰IJrR“žÌd%'¹ÉK~ R˜¢£8%(C*Q…Ô¡hF Zцvt éBWzÒ—þ d(Œa“˜Â4f0‹9Ìc> XÈRV²–lf'û9ÈNp† \á7¸Åîò§¼ä-ïùÊoþ¸ ;CH‘ÈD%:1‰E<‘ŒT¤!9ÈE^ R”’”¥<©LUªQ‹z4¢-hGºÑ“¾ d(Œb ã˜ÀD¦3—,fåÿ±w`QeÿÇçNŠŠŠ]Ø­Ø­ØØØ­¨Ø…Ý:*va*k×*v+®Ø…ÝŠÝþßüw‘ùqÏÄØßï󼞽|ιçž{nÌèî*þÄzlÂ6ìÀ.ìþ‚?à áÎâ.ã&îàá‚ñ¯ñïñŸð_ /ÃýŠDHŽÔÈ„\pBA 8£<*ÂUP ÕQÍÐн1fxb &À Ó1³1Þ˜¥øë±Û±Gp §pq7q wp„`¼ÇgHe¹W`$A ¤AzdFväDn8!ò£(J£,* *j¢ê£1š¢9ÜÐ îh‹vhè†Þ臆‘‹ ðÂTLÇLÌÆ\xc>`!Vc+vc?Žà4.ãqAx‚`¼Äk¼Å{|À'|ªï/h ƒF˜vˆ‡øH€DHŒ¤H†H…ÔHG¤GFdBdCäBn8!ò£ ¡Š¡8J¢4ʠʣ"\PUP 5àŠZ¨º¨‡hˆÆhŠfh7´‚;Ú -Ú£:¡3ºÂÝѽÐýЃ1 ž…q˜/LÅtÌÄlÌÁ\,À",År¬Æ:¬ÇFlÆVlÇìÄ^ìÇAÆqà Îá.á ®âqðOñ¯ðïðŸð_B®}yÞ0"â"!1’"9R"R#2! ²!ò"? ¢0Š¢8J $Ê *¡2ª£ê  š )š¡%Ú :  º£'z£/úc a0†a$Fa Æa¦bf`æ`¼áƒ%XŠåX‰?±° [° ;°»±þ8Œ£8‰38‡ ¸„+¸†ë¸ƒÇx†—x‹ø ©Ï t0À„Xˆ¤H4HÌÈŽœÈ 'äCD”@i”CTFuÔD-ÔA=4@C4A ´B[´Ggx z¡úab†c$Æb<&cf`æ`æcþÀR¬À¬ÅlÁ6ìÀ.ìöáŽá$p—p×p¸;¸‹Gx†x…wø„/PU侇z`D\$F2¤‚#2"+²#'rà ùEQåá‚jpE]ÔGC4FS4G ´Ax úaÌOŒÂŒÃxLÁxÃK°k°¾Ø€MØ‚­Ø8ŒãÀ9\Â\à â6îà!^à5Þã3¤JÜ—0À„ذC<ÄGb¤†#2"+r ùP…PÅP%QePåQ.¨Œª¨Ž¨‰Z¨ƒzh€†hŒ¦h†h‰Vh6h‡è„Îè tGOôFôE Ä` …Ãቑ±‡ñ˜ˆÉ˜‚©˜†Y˜o,€a1–b9VbVc6b¶`v`'vcöã ã8N"gpçq—p 7p wðñOñ ÁxWx‡øŒ¯Ð¸pa€ ±vˆ‡„p@R$Gj¤E:d@FdFdGn8! ¢(Š£$JÃeQQÕPµP ÐMÐÍÑ­ÐíÑ]Ð=Ñ}Ñ0C0ž…±˜ˆÉ˜‚i˜Ž™˜…9˜‡ùX€…ø‹±˰+± k°¾X Ø„-ØŠíØ‰]ؽ؇8Œ#8Ó8‹ó¸ˆË¸‚¸ûxˆÇxŽWxƒwø€Oø ©2×&ÄA\$@b$Er¤Dj¤AFdGnäEA ”‚3Ê¢<* 2ª£ê¢>£9ÜÐ îh‹vè„nè‰>è‡A0c8<1 c0130s±‹°˰«°ë°[±»àÄaÅqœ@.à®ânã.î#ñOðoðñê*|†@#Lˆ8ˆDHŠHGdDfdEväD.äEAE ”BYT„ ª j &ê¡ Z Ú º º£'z£a8Fa,&À Ó1³1Þ˜ÅX‰?á‹ØŠØ½Ø‡ýðÇQà.â nà6îâ>‚ðñÏñ¯ðoðð _𪪬5´ÐÃb!â"> !!1’"9R"R#-Ò!2!3² r òÀ y‘QEQ ÅQ¥QåPPÕQµPuQ ÑMÑ ÍÑ mÑÑ]нÐ0fxbÆ`,Æc¼0 31ÞXˆÅXŠåXUXuØ€ÍØ†Øƒ¿àƒ8„#8Š“8s¸ˆ+¸Ž[¸ƒ{¸ <ÄS<Ç ¼Â¼Ã'|ªï(h …±q I‘) ©‘ Y 9y‘P…Q%QePPUQ5àŠZ¨‡Fh‚fh7¸£=:¢3º¢z¢/úc c†cÆ`&`"&c fa>à,ÅJ¬ÆŸX_lÁ.ü…Ã8†“8ƒ ¸„+¸†ë¸…{xˆ§xŽxƒø„/PUç:@ì`„p@2¤B8"=2 r ò£ £8J£ Ê¡*¢ j 6ê£!£9ZÁmÑÐÝÑý1ƒ1 #1c1à…é˜ o,€–`Va Öb6cvböÁ‡qÇq§€ ¸Œk¸‰Û¸‡‡xŒ§x†`¼À;|¶÷5ì‰É‘©‘‘N(„¢(g”GE¸  ª¢&ê š Z 5Ú¡:¡ º¢ú`†ÀŒá…q˜€IðÂÌÂ|,ÆJ¬Á:lÄVlÇNìÆøã(p—q ¸‹ûÂ#<Æ3¼À|À'|ª&ïzh¡ƒÄ‚âÁ á€$HŠäH‰´È€LÈ‚lÈ\È 'äC!C ”‚3Ê¢<* *£:j¡ê¡¡ š¢Z¡-:¢3ºÂ=Ð ½Ñ1#0£1ã1“0Ó1ÞX,Â,Ãr¬ÀJ¬Á:¬ÇFlÆVlÇìÆü…8„#8†8…œÆ9\ÄU\ÇMÜÂÜÃ}<Äã5Þâ=>â3¾BåÊ{zÄB\ÄG$Bb$E2¤D¤GfdEväDn8!/  0Š£4Ê * *£ ªÃuP ÑMÑ ÍÑnh‰ÖhƒvhŽèŒ®ð@ôBôE Ä` Å0ŒÀHŒÂŒÃL‚¦b:f`6æaþÀb,År¬Àj¬ÅzlÂlÃìÄìÃ_Ø8„#8Šc8ŽS8ƒs¸€K¸Œk¸‰Û¸‡xˆÇx‚çx‰7xøŒ¯PÕâºBâ .â#"1’#%R#-‘‘Y‘9 y‘QEP ¥àŒ²( ¨„ª¨Žš¨…Ú¨‡Fh‚fh7´F;t@'tAWtCôBôC ‚Ãá‰Qq˜/LÅtÌÀlxc|°‹± «°ká‹õ؈MØ‚­ØŽØ…ÝØ ?ü…ý8€ƒ8Œ#8†ã8‰S838‡ó¸ˆK¸‚«¸Ž›ÄmÜÅ=<ÀC<Â<Ãs¼À+¼Æ[¼Ç|Â|…T›ûZèa„ ±a‡¸ˆH$AR¤@j¤C&dEäF^äGAFG)”EETF5ÔDmÔE}4D#4A3´FtAwôF Ä` …Ãá‰qðÂt̆7|°K° ˱ë°{±‡p §pgqp7pÏðoñ_!Õa-¡ƒ±H‰´È€,È\ȃ¼È‡B(†2pA5¸¢.¢1š¢9Z 5Ú¡+z£?cFb4Æb<&À Ó1‹° «°° [° Û± {±‡p'€³8‹¸Œ+¸Ž@ÜEã^à5Þâ=>â¾@U—µBÄG"$EJ¤FZ¤CzdDfäD>B1”BY”GE¸ 2ª¡ê £ÜàŽ¶hŽè„®ð@oôÇ ÅpŒÂŒÃLÄdLÅLÌÃB,ÂR¬À*¬ÁZ¬ÃzlÂ6ìÆ>øãŽâ8N"§q×qOñoð_ ªÇ÷+h¡ƒ vH„HƒôÈŒìȉÜpB^DQ8£ª¢&ê ¡ š¡9Z¡-º úaÌðÄ(ŒÁ8ŒÇdLÃ\ü¥X‰?±±[± {àã8‡K¸†@ÜÅ}áã^â->â3¾BªÏº@ì`„p@$E2¤‚#2 ² ²#ò ? ¡Š¡J¢4Ê¡ª¢:j¢j£.¢)ÜÐ îh‹v舮è>臄Á0Ãc0“à…©˜†™˜‹X„%X†X‰5ðÅ&lÃìÂìÅ_8ˆ£8‰œÁ9œÇ%\C îâ>‚ðñÁxwø€Oø‚¯P5àÞ„±a‡x°G8 RÁé‘™‘Ù‘ùPEP %PÎ(TC ¸¢6ê >£9ZÁmÑÐè…~€A‚¡ŽQ‡IðÂTLÇ Ì†7|°˰«°k±›°;° {à‡}ðÇ!Å à Îá.â2®âq÷„GxŒ§xŽ`¼Æ{|Äg|…ª!×FÄB\$@"$FR$C*8"=2#;r"7œQ%àŒò¨TAUÔDÔGc4‡ZÁmÐ ÝÑ ý0C`ÆpŒÀ(ŒÅ8L„¦b:fbæb>à,Á2¬À*¬ÆŸX‡ ؂؅=ðÃ>ìÇÆqà Îá.â:îà>á‚ñ¯ñðR#ÞA0!6ìñ‘I‘i‘Y‘ yPEPÎ(‹ò¨ˆJ¨‚ꨅzh€FhŒfpƒ;Ú£#:£ º¢z¢/úc a0†`8Fa Æa<&b2¦aæ`¼±>X‚X…5ø¾Øˆ­Ø‰ÝØ ?ìÇAÅIà Îâ.ã:náîá>â ‚ñoñðªÆÜó0"âÀñ‘I©i‘™ ¹y‘Q%àŒ²( pA5¸¢ê£!£ š£Ú¢:£+<Ð=у1 #1c1031 àƒEXŒåX‡ØŠØ½ðƒ?Ž#çp Wp ×q Ax‚`¼Æ[¼Ç|® ÷2ì`„p@b¤DdAäA^äGB 8£<\PÕPµÐMáw´E{t@ôB? ‚Ãቑi˜…yXˆ?°K°ë°[±»±~ðÇ1œÂY\Äe\Å5ÜÆ#<ÃK¼Å{|Ä'¨šr¯Ab#쑉‘)‘ ŽÈˆÌÈ‚ȃ¼È‡B(†(‰2¨€JpA5¸¢6ê š š£Ú¢=:  º£'z¡a†bFc,Æa¦b:f`æc!|°+° «±±[°{à‡¿°‡p 'p 8‡K¸‚k¸Ž[¸‡xˆGx†—x·x‡OP5ã»´ÐÁ;ă= 1’#%R# Ò#3²";r ò£ £JÀeQPÕQµPõÑMÑ-ÐíÐÐè…>è‡þ„¡Ñ‡‰˜Œ)˜†˜‰9ð†–`9Va Ö°›±;°~Ø8„#8†ã8‰œÅ\Æ5Ü@ nã.îá!žâ%Þá#¾@Õœk-ô0 ìI©ŽHŒÈ„¬È'DGI”F”Cy¸ j¡>¡)šÃ ­àŽ6è€.è¾€ÁŠa‘…q˜„i˜yX,Â,Ãr¬Æ:lÂvìÂ^ìÃ~À!Æ1œÄ\Àe\à â6îâ‚ðÏñ oñŸðª¬34ÐÁ€X°C|$„’ R %R#-Ò#²"r!ò"?  (ŠÃà‚ª¨Žš¨…:¨‹úh7´A{tBtCwôD/ôÇŒÀŒÇ$xa*¦c&fÁ`Vc-Öc#6c+¶cöÂGp§qp Wp ×qð/ðïðŸð*7¾¿A b!. 1’"9R"5Ò"Ò#²"ò ? £(Š£$J£ Ê¡<*ÀUQµQ ÑMÑnh…ÖpG;tDtGoôE Ä` Å0 ‡'Fc&a*fb6æÂ àƒEXŒ¥XÕX‡ØŠíØ‰ÝØ‹}ØÄGÎá®àn ·q÷„Çx†—x‹øŒ¯!×£%÷Cjŵ€&ĆâÁ à€¤H4HÌÈŠìȉÜpB>äG!E 8£<\PÕP®¨º¨‡†h‚æh…¶èˆÎè ô@/ôA_ À`˜á‰1˜€IðÂTLÇLÌÆxc!aVa-|±›°Û°;±ûàÃ8†8…Ó8‹s¸ˆ+¸Ž[¸‹ûÂ#<ÁS<Ç ¼Ä[|À'|ª5Ÿ Ð@Œˆƒx°GB8 ’"%Ò"2!+²#'rà yQ…Q%ጲ(ŠpAeTCMÔB=4Dc4Es¸¡%Ú :Ã=Ñ}Ñ1fxb4Æc¼0Ó1³0 ±˰«ñ'Öa=6` v`7öÁqGq'pq ×p·p÷ðAx„'xŽWx‹÷øˆÏø •;×±`{$Bb$Er¤D*¤CfdC.8!  Š (J¡*¢ ª£&j¡ê¡>¡)Z ÜÑíÑÑ =Ð}Ñ1ƒ1Ãà‰Qƒq ˜/Là ÌÂÌ…7à,Á2¬À*¬ÆŸX‡ ØŒ­ØŽØ…=ðÃ~ÄaÅqœ@Îâ.ã*®ã&q÷ñOð Áx‰Wx‹ø Užh¡‡±`‡øH$A2$G*¤EzdBdCäDäCAA1”@)”FYT€ ª¢:j¢j£¢ šÃ ­àŽ6hNèŠîè‰Þè‹~ˆ¡ŽQ‹ñ˜ˆÉ˜‚©˜9ð†c)–c%Vc Öb=6avb7öböÃqÇ€³8‹¸Œ«¸†@ÜCžà9^àÞàÞ㤶\vˆ{$D"$AJ¤AzdBdCäBnäCaC)”A9T@%TFÔ@ÔGc4C ´Dk´A[t‚z¢/`†ÀŒá‘ƒñ˜Œ©˜Ž™˜¹˜‡…X‚åXµðÅlÂlÅNøa?á(Žã$pgq ׈»x€‡xŒ§xŽ`¼ÁG|ºï-`BlØ!.")R Ò!2! ²!;rÁ ùPQÅQ¥áŒr¨TAUÔ@-ÔA=ÔG#4Es¸¡%ÜÑÐ Ñ =Ð }Ð0C1 Ã1c00^˜†˜…Ù˜‡ðÁ",Æ2¬Äjü‰µXMØ‚mØŽ]Ø‹}ØÂQÇIœÂœÇE\Æ\G nã.î!ñÏŒWx‹÷øˆOø u{žèa@,Ø!ì‘HŠäH‰TH‹ôȈÌÈ‚ìÈ…<È‹|(ˆ"(†( g”CT‚ ª¢\QuPÐÍÐ-ᎶhèŒn莞腾€A‚¡Ž‘±‡‰ðÂTLÇ ÌÆ<ÌÇBø`1–aÖ° [°;°ûp‡pÇp'qçp ×p¸»¸‡ <Æs¼Â¼Ã|Âg¨:ð=ĆâÁ ‘I©‘ Y Ù‘ N(€"(†(g”AyTBUÔD-ÔA=4@C4As´B[´GGtFWtCôF ÆP ÃŒÄ(ŒÅxa:fb6æÂóáƒÅXŽÕøë°± [±{ðüq‡qÇp§q—q×q·p÷„'ÆK¼Æ[¼Ç|†ª#ÏŒˆ…8ˆ‹ø°G"$A ¤#2"+²#'rÁ ùQÅQeP•PUP 5P uÑMÐ-Ñîh‹öè„®ð@OôA? À@ ÆP ÇHŒÆ8LÄdLÁTÌÀlÌÇ",ÅJü‰uX Ø‚Ø Â1œÂiœÅ9\Â5ÜÂ}<ÄS¼À+¼Á[|Ä×5îÄg â >!1’"RÁ™¹QEQ %áŒòpAÔ@mÔE}4@c4CK´A;tB7tGOôBôÃ@ Á0ŒÄXŒÇDLÂ4ÌÀ\,Ä",Ã*¬ÁZ¬ÃzlÁNøa?áNàp—p·qñÏñ/ñ¡êÌg6ŒˆƒøH€Dp@r¤AdEäA~DaAI”E%TCMÔA4B4EK´E'x 'úb c(ÌQ‹ ˜„©˜‰Ù˜o,Ä",År¬Æ:¬ÇlÂlÃìÆ>À!ÆQÇIà Îã®à*®ã&náî!ñÏð¯ññê.|–Âì`$CJ¤EdBfdGnäC!EI”A9”GeÔ@4D´@k´A[t‚z úb †b†Ã£0^˜†Y˜‡ùX€EX†UX‹õØŒíØ‰]ðƒ?ã8Ná,.â2®à&îâ!žáÞà>á3Ô]ù CØ#’"%R# Ò!² ;rà ù…P %PåP•à‚*¨WÔA4B4Es´Dk´EtBt…z¢7úa c(Ì1I˜Šé˜‰Y˜,Æ2¬Â¬Å:lÄ6ìÄüÄ!ÅIà,.â2®ânâî!Oð ÁxWx‹ø ©ß ƒFÄF\ØÃI É‘é‘ Y‘¹á„¼(ˆb( g”GE¸ 2ª£6ê¡!š¢9ÜÐmÐ]à^èƒ~è!Q‹‰˜Œ)˜ŠYðÆB,Â2¬À*¬ÆZlÀflÃìÂøaüqÇp8ƒs¸€‹¸„«¸[¸ƒ{x€‡x„'Æ+¼Å{|Äg|…ʃ{z˜q H‚H G¤GFdFVdCN8!? ¡Š¡J¡4Ê¢"*£jÀµQõÐMÑ­à޶hŽè„®èÞ臄!0c†c$Æ`<&b2¦`¦cfcÀ‹°˰«°ë± [° ;° »áÂQÇIà Îâ®à:qwqAxˆ'Æ+¼Å{|Äg|…ª;Ï ˆ;ă=‰‘ ©é‘™‘Ù‘¹‘QÅP¥àŒ2(J¨‚ꨉZ¨ƒºh€Æh7´‚;Ú¢Ú£:£º£'z£úaÃŒáðÄ(ŒÆXŒÇ$LÁ4ÌÀ,ÌÆ\xc!a –aVb Öa6c+¶c'va/þÂÆQÇIœÂœÇ%\ÅuÜÄ-ÜÆ=ÜÇC<Á3ã%^á5Þá#¾@Õƒç Zè`DlÄ…=ÂI)ŽÈ€LÈ‚lÈŽ\pB~BC ”„3Ê¡"*£*ª£&\QõÑÑÍÑ­ÑmÑÑèŽ^è‹þˆAŠáðÄ(ŒÆ8LÄdLÁTÌÀlÌ…7æÃ‹±˱«±¾Ø€Ø‚íØ‰ÝØƒ}ðÇAÆÇ)œÆYœÃE\Á5ÜÀMÜÆ=<ÀC<ÂSã5Þã¾Bêɵƒ±qöH„$H4H‡ŒÈŒlȉ<È‹ü(ˆB(ŠpFyTBTCMÔF=4@#4AS´@+´EGtz 7úa c(†a8Fa¼0óàƒÅXŽÕX‡õØˆÍØ‚ØÅ à .à n ·q÷ðOñ ðª^< Ð#â"> ŽÈŽ(ŠR(ƒ ¨Œê¨‰Z¨ƒºh„æhƒÎð@/ôÅ@ ÅŒÄhŒÅ8LÆtÌÃ",Ã*ü‰õØŒíØ‰ÝØ ?ÀQœÆ%\C îàã9^àÞà->AêÍ{ñI©‘™Ù9‘…Påá‚j¨‰:h€&h†h‰Vh‡Î艂ቱ˜ˆ)˜†˜…Ù˜EX _lÂ6ìÄ^ìÇ!Á1œÀIœÅ%ÜÄ}<Â3¼À|À¨úp/@ ŒˆxHˆÄH†H Gd@&dA6dG.8¡Š 8JÁåP•QÕQ®¨ƒúhŒæh w´EtF7tGOôFôÇ ˜á‰Ñ‡ ˜Œ©˜Y˜ƒyð†–`|±;°ûpGp 'p 8˸‰{ÂSã5Þã3¾BêËwha‚"RÂ9y‘QÅPP®¨ƒúhŒæhw´E{t@ô@? ÁŒÂXLÄÌÀ,ÌÁB×÷ â!#9R#-Ò!2"ò¡Ê¢ª¡&ê š Z %Z¡<ÐfŒÄ8LÄÌÀÌÃ|,„–c-¶`öã0ŽáÎâ".ã*®ãîá ^ã3Ôýù B,ÄE$FR$GJ¤Bf8¡Ê£2j ê¡š¡Z¢5ÜÑÐ =Ð}Ñ1C1£11S0 Ó1 ó°‹°˱«±ë°[±»±û°þ8ˆ#8œÅy\Äe\Á ÜÁ<ÂS<Ç ¼Âk¼Ç¨pŸÀˆXˆƒ¸ˆ‡H‚H G¤GFdFä€  0Š¡JÁePUPµPõÑÑ-àŽöè„®ð@ôBoôÇ ÇHŒÁ8LÀ$LÆtÌÁ|ø`1–b9VbÖ`6b ¶c'vc/üðàŽãNã,Îã.á*nâ6îáâ1žà^à Þã¾@5µ‡FØÁ‰É©é‘9y‘QEPeQ•Q 5àŠÚ¨ƒ†h†–pG;t@'tAWôD? ÂP ‡'Fa Æb¦aæb>â,ƬÄZlÀflÃìÂì…?Žàpçq—q7qAxŒgÆK¼Æ¼Çg¨±¦ÐÄ8ˆ{$„#R!-Ò#²"rà ùPQ%PeQ.¨ŠpEmÔE=4DS´@+´A{tBWx z¡7úb0†c4Æa¦b&fc.¼1`%Öb#¶`öà/øã ãNà<®à&nã>á‚ñ¯ñ Ì»q ‘) iàˆtÈ„œpBFq”F9T@%TFÔ@=4B3¸ÁíÑ]á艾‚á…±˜ˆ)˜Y˜ƒyð†–c5Öa¶`öÀÁp gq ׈»Â!9R!2"+r ò"? ¢ŠÁåà‚ª¨‰Ú¨†hŒ¦h†ÖèôF? ‚ž…1‡ñ˜‚9X€ÅX†UX‹ Ø„-Ø†íØ ÁIœÆy\ÆuÜÄ-ÜÁ]á9^ã>C2óY bÃñ‰‘é‘Ù‘ùPEP %PåP®¨‡†h 7¸£-Ú£#:¡;úcF`Æa¦b:fb6æÀ>X‚X…µØ€MØ‚mØØƒ¿pGq8‡ ¸„+¸†ëÄ]á žá%Þâ=>â3¾B5Œw> ˆx°‡’!R! ‘ yQ%QePP.¨WÔA=4BS4‡ZÁmÐÐ =Ð ý0ƒ1Ã0ž‰˜†Ù˜‡…XŒ¥XŽ•X5ðÅfìÀ^ü…ƒ8Šã8‰œÁY\Ä5ÜÂ}<ÄS¼À+¼Á;|ÀG|…v8÷"âÂH†H…4pD:dBväAFq”F”CT‚ ª¡ê£ š£Ú¢=:¢3º¢z¢c8Fb,&b2¦`f`&æb!–`%ÖÀ›°Û°»°ûpÇ€³¸ˆ«¸Ž›¸…;¸‹xŒçx…7ø€/Pà]-ô0 â"#)R"-Ò!2! ²"ò ? £(J¢ Ê¡*¡2ª :j¡¡ Z 5Ú : :£+zaà OŒÁ8LÀ$xa f‹°«°° [° ;°{qÇ€³¸ˆ«¸Ž›¸…;¸‹ <Ãk|ÀgHž¼a€ ±a‡¸HˆdHƒ ÈŒìÈ 'äCBa”@Y¸ :\Q ÑMÑnh‰¶èŒè‹‚áðÄ(ŒÁ8Œ‡fÂ` V` Ö° ›±~8ˆc8‰3¸€K¸‚k¸›¸{ÂSã%Þâ>ã+¤‘Ü{ÐÁˆØˆ„p@2¤D8"=2 3²!'ò¢ ¡JÂeQà‚ª¨:¨†hŠhw´E;tB7tG Á0ŒÄXLÄdLÁTÌÄ\xc–b9Va-6`¶`+vb/öáŽâ8Ná,.â2®ân#ñ ïñ ªQ<·0"âÀ )™‘ ¹QEQ ¥Q.pE]4@´@k´A;´Gô@ ÁpŒÄXLÄLà ÌÄ<ø` ÖÀ±;±û°þ8Žs¸Œ[¸‡xŠxƒwø€ÐŒæÞA|$E*¤EdAäB8¡ Š¡Ê¢\P ®¨‹úhˆFhŽÖhƒNèŠîèþŒ¡†á…q˜ŒYðÆB,Ær¬ÆŸX_lÂ6ìÆÅ œÆy\ÆU\Ç ÜÇ3¼ÄG¨Æ°0 6âÁ ‘)‘YPÅQåP•à‚š¨&höè„n艾脇ɘo,Äb,Çjü‰uðÅøãNã.ã:náà!á)‚ñ ïð_ ËûZè`DlÄE8 )’#%R# Ò!#² r#/ò£ £Š£Ê \PÕQµPuQMÐmÐÑ]Ñ =у0£0ã1“á…é˜ùXŒåX…5X _¬Ç&lÃnìÇ!ÅqœDNã<.ã:îàá ž!/ðð%dMDZžˆ ;ă= 1’#52 ²#'rà yQEQåP UP 5àŠZ¨¦h‰vè„®ð@ôBoôÅ Æ0xb4Æb<&b¼0 31óáƒEX‚eXŽ5X‹ØŽÝðÃ_ðÇAÂqœÄY\Æuâ6îâ>à ^â¾@=žû˜q`$H‰tÈ„¬ÈŽœÈ<(€"(‰r¨„*¨†pE-ÔGc´@t@gt…z 'úaF`,& S131 s1`)–c5þÄ:øb#¶`öÀþ8ˆÃ8‚ã8…³¸ˆË¸Ž›¸…Û¸‡ á Tø~Š8ˆ‡„p@$Er¤DZd@&dEväD.äA^DQG)8£,Ê¡"*£&ê¡!š¢9ÜÐmÐ]Ñ}0ƒ0C1£1S0³1Þ˜?°«°°Û°;±ûq'€s¸€K¸Œ¸ƒ‡xŽ—x‹÷øˆO&²~ˆƒp@2¤@*¤FzdA.äG!C ”Bi”C%TGÔGc4Es´@k´CôD À ÁPxb,&cfà àƒ?° «±[±{à‡¿°‡qgq׈۸‹{Âc<ÇK¼Æ[¼Ç|†jï<`BlØ!.ì‘I‘©ŽH‡ŒÈ‚È 'äCD!EI8£,Ê£"*¡2ªÁuP ÐÑ-ÐmÑÑ]Ð =Ðý1ƒ1fŒÀ(ŒÃDLÆLÃtÌÂ\,ÀXŒ¥XŽXµØ€ÍØŠíØ‰]Ø‹¿pGp 'p 8‹ ¸‚븉[¸ƒ»x€Gx†x…7x‡÷ø„¯ÐL憱vˆ„H‚äH‰ÔH Gd@fdG.äA^äGF1”B”CT‚ ª¢j£ š )Z 5Ú¡#º z 7ú¢?b†bFc&b2¦bfaæÁ ±˱ b6`3¶b;vböb?á(NàÎà<.â2®âqOðoñ_ öâ¹€F˜`‡„H‚”HGdDVdGNäFäGQ”DYT@%TEMÔBÔC}4E[tFwôA Æ0ŒÀHŒÆLÄtÌÁ|ü%X5X _lÀFlÃ^øã0ŽãÎâ".ã*®ãîàžãÞá#¾B3…Ïx`B,ÄCb¤@¤G&dC.äA^äGCYTDU¸¢6ê£1š¢9ÜÐíÐ =у1#0c11 S1 °+°ë°›±Û±{à£8…s¸ˆ«¸‰[¸ƒ{¸Çx‰wøÕTÖĆâÁ ©‘™‘¹QEQ%P.¨ŽZ¨‡†h 7´‚;Ú¢:£'úaÌщ˜Œ)˜Š¹X‚UX‡M؊؋}Ø8ˆ“¸„¸ƒ <Æs¼Â¼Ã|„z÷âÃÉ‘ ŽÈˆÌÈŠìÈ|(gT@TG-ÔC4B4E[x ÂŒñ˜ˆÉ˜‚©˜‰9˜,Â,Ãr¬ÆZlÀflÅvìÄ.øa?á(Žã$pçq ×p·p÷pð/ðoññ ªéÜ?0 â .âÃHŠ”HG¤GFdB6ä„ò£ £(Š¡Ê \PÕP5QõÑÍÐ-ÑîhNè†è…>è‡þ 3<1c11 S1sàðÁ",Ær¬ÂZ¬ÇFlÆVlÃ.ìÅ~ÄaÅqœÀiœÃ%\ÅuÜÄ-ÜÆ}<ÄSã%^ã-Þᾆ\ƒ¼÷aD,Äì‘I‘©Žˆ©˜Š©˜Š©˜Š©˜Š©˜Š©˜Š©˜Š©˜Š©˜ú7TÈïdÙÃQÐæô“çò½å WAî|l3¼àcC_ßh<®Ÿ ˆÆñc*¬Y0$"û_ü[ÂŽßÉÊœÿþ+Hi¹ýýGº¨ÌVæáõ›üÖºO¸yøþ&óŠ©gùÅÜ?1S?­lxÞ}‚É$uÄûÚ[ôq´¡t–“•ã9[´¹²ífÃÜ<,ú˜ò¹„//‹ãû°íkñ³Ÿ•¹Xi üÁçle|I¶m϶£F¹oH9ýÓîA¿è.WŽçf嘴™¿cN^ìëóƒÏÉ—ñýÇ üŽc³¯¤úþ¶”=ã; ŽáDæ Çve ·|1S1õcÊCðìšÉ¼~Á3ícqL_¶ýbÞ+ÿ_¬C`¸µŽY›˜Š©ÿú’t|ƒ3Ü`†üIO;œá¦x<3}¼à_ú‡/?ö ˆÂ~¿cr’!â~Žôq†ÌðlÃþ’QžÙ ²ß±™§3Ü`¶aÎ>ôñC $ûÃn0›lØŸ>¾ðô D° ãüŒ’bq~±¾gÆp³a3}|à‡À(WŠÍ};òûýêrdÎÎpƒ>ðC ¤8´Ãn0Ã~ˆ6F`åñƒi“ìX».•#sp¶anô1Ã~„—ýá 7˜áWy _Úü€@[éû«JŠÇ9Å‹¸Ÿ3}Ü`†ü)>ûîñåû¹ 2Aö»”™¹ùÀQ˜§dÏzÀnöÑ?¿Ð23¶×ß–òáø~„”€ó†3Ü`†üÈ÷ $ †”wBŸ?ïQŽœ‡3Ü`†ü)íp†["ÛÇô ¯YÐß+cüˆòáø~„äÀ¹ÁÙAÞÏÌ ø!RbúÃ)±¼¿³EæÊ¶<ý~f™9¾ühÃ\¤$œœá3|à‡À$6쟔gŽIÃ2§¤ÊýE937˜á?BJƼá 7˜á“,l?_¶ý€ÀdòqƒÙÏ,)9ó‡3Ü`†ü)íp†[ ùþdfxÁÇ¢ÝWÐ÷g•Ç„”’¹Ãn0Ã~)åûZdRª°m{‹mG‹íÐrd¿K9377˜sô"óEÀo<¥ dÎRê°ŸÙv‚+lK™¢o>ŽQËÙ†}ÜlècŽÆóP*ŸHþýƒÙ¶Ï,ïç(Ⱦ§œ£0ž›`3™ü€àhžghÙg±½¯}]áf±™mŸHŒQùEÃXÑ8Ÿ’²~ÿŽc8Çx®6ìë!èãeÃ~¾6ô °Ò'8ÖÉZÙg‹¸“EW¶=,~6³í#ÃWaÜò`ŽikIÙ#îã(èãle?7A›ÙJæ•ò³aÜ@‹>RÎ5‡¼™«Eî&èRfr…¶¨”¯ cú[ÙÏ>§¿|Ÿï-§HŽéjCúxý€s±V¾‘<^€•þÁ‚6û‘?ªådãq\éçaÑ×̶`__AMçhã8RA>' Ês'2W‹ÜMÐÇ,È¢R^ß9Žo4Íò¾sÌàhš“}¡ïÛßÉÊþ®ß9vhyD0Ž—E»Å¶Û?K…m?¦½ ¯k$öÿ67Á>¾‚,8 c;‘g‚,¢òìlÃ8NE#¬è,WÁñ½¢0§Á>Á‚Ì©XÄcyÐÇÁp*Îá_x§òÌ•Ì ‚¶È”Y°¿_Æ”JòN‡|òs)¾{Á >„ci~†¹´| AHæè,ÏÈ\¹› ûžòŒç…c³}æ /À¾,çWx!öåøðBìË“•—éFf†— ÍGE¦|ûGaL§ aÛ®Û^l Ø"³¯hÑ—m/øZd¡ Èì+É3W2AÝeÃ/ Ç•\¶-¶ÝØöáX™ >ðC «U‘éCæ‡"XÐÇæùU•g΂,¢2³áXyÃ~„cu2ø R ùŽ‚ÌÌÇ"÷ô ­+m‘­@ÑüjF~7ö1Ã’+k 3|à©Üàƒ@8ÖÛßÉbÛÕbÛÍb;²å!Ø×7 ã ö±¯#Ï\Yøò¢OìëÒ¿® ýéûzô¯gCA_öûžòŒ/Õü8΂}Ü™ cÒDZûÃ’Á >lñ8Žl˜7}\mèg­ÜûûDaÌ@ö‘3'˜á© çg˜á©)œa†¤füÜL>¦+™Ìð´OùÆ ŒÂ1›3w˜á©?í…¼¯Yù‘InŒg˜á©%?·”÷w%óä²cÙÐÇZy öˆÂ˜ö­Â¶,¶=ØöE‚áÔš ^ðE0œÜÉÜåcú’ PÐö½,Ó©MäÇñ°ØÇËb;€mû¶Œ Wx!öíøðBìÛ“µ—íEæ+Èýȹ­(Ø×±CäÇqc3ü uä>†>ðƒÔ‰ føÀRg2˜á×9l¬‹í`¶¥.‘ŸRÙ ÆrÂø^ìã‹`8uåÂ]Ãú[l;u£¼{Ž /‹¿ôÂdž¿Ãï;þ’ŒÁ¾öÝ#ÞÏÕ†>•‡` _Æ Ž†c‹Ê¾‡•¯`Œ`2§ža?;÷”÷ùÞrŒécÃq}¤^¼'à 3ü õ–÷s&s³ÈÍl{ úY+Aÿ@Æpì#˜™ÌðƒÔ— fxõý»/ÿôë¹9ÆTLEµl¸×‚~Âý(õ‹¸O2‹>NÛ.6ìkk¹Ù0V¿h<žRyÙpŒ}ü,¶/Eãü‚mËÔ?úާTŽ6£ˆEW‹íöÑ8?s$Çšm¥¿¯EÛa…~?amCë½Å±ìˆûdµÈ-¶*ô)+mÖjŒÅ~>‚1¶EqÜÈV€Åq‚Ç”†m'³Øv(ïR. yDåf±_¿Æð²Ò¾Â¢ÍO¡ß%+û[´9 Ûv$ïZí-Úf[l¶Ø´²øz‰¾áË~pض³Å¶Ç`yß1dÛ,ò ‹mi×{ˆòq²Zi³VÎûyXlûXo›E[Åv²¡aÛNÛ?ª\,ŽÑÏb{…àØ~dÁÿäŽæ°¼Û®fyÿï)7‹ñ¼,¶ý¢pœKû˜†Yï[Ä¢½½Åöl+ûùÒæ‡àÆŽ©˜Š©˜Š)>?†ó™1ÜzsíQ)/ÆôûŽqƒÙ×qDØÏ®ÛíGÈûÿ¨2s,ßH/¾öž|Wñüûgϰ¶1lûxŠ÷ûžòeÌÀHŒk?’ùÁcäß?ûŒ kÛÆvÀHñ~ßSŒi?*êû;³¯‡Åþ>ÛÛ¾cÜÈVÇ’FG}'öu³ØßËb{ÅwŒÙòãXÁ‘8žãžA˜Çüý³ï˜°¶ÃlŽï÷=̘Žcå¹+™Y‡/_úZô³¶uœ¼¿R9G¢¯-ÕñÆÆÜFdåXÉÆóëˆño÷–{÷·¬6ô±¥ü'X0–ã®ËåýÌm¾Û‡­ìZ6ô±µÞ3VÖ‰ò¼!ÙAZÛþi ²è#MŠøxÉlèck91–›Åx^‘{}/Eã\~F™&óëÄÉa?·Ÿ¬Ü×L›¯•vË ´¡_°c‰JòâZy…ýìæ¥Ü7|õ£ï AÿKd¦)ò¼Y{A®T³#Ñ×ÖòeÌ@‹qí§*÷ÍJ[CŒÁ6 ú&›Æ{ý¦)3†6+í¶”/ûÛO—çd‚Üi×rFäãÅ>Á‚ý\g2‡™òÜ~Ÿ9³ó"óäQ­€hËZq—Ùò|™iŽoPÞ/ÕÆˆÇÎiÑG·Éö9ýŒºf1ŸM›#¿ÿ„-Üg8¾åŸñ¶(÷}bÑæ¿Õöcxo Ûîµ]¹_µ¶¹Í¢¯×Έû·ßÅ;YwóÙ‚ ˜öðóž¿Û]öØv܆ýœöÚ<]•É/l;ímû˜Þï³mÿ¬1o¸í·ý˜!UÄŸ÷<ÈÛ\ʳö‚ÌÖþAð;¹ýffpDÞ¶â¨<;,Èl­ öu9Æw˜ã‘Ûï½ ¿ý‰È߉}¼Ðþdäös>%Ï’õä¢C¿ øDOsî8c½ßг¶çpŽwª·­Æ *•'t—ؾ–—¿¤¼Oør§¯?¼/Ûֿוêê^cûZX>ýšò>ák}®óμnû>!åƒó¼ÉgÖMyÛ¹@ÖáßCnÙ6–;ýüá}[ÜÞëŽ<›@öþwåmÞ÷äÙ.Afk]cß÷Y§âö'‚\$ÏR 2[ªûy£×Cq{µGòÌÌÞ•Çíõ„k…5O#?'Ïg*Õ]ìz.nŸüŸ?¯ág»a?ß}¡’•îeäçRÙÏM_‰Û ¼þÏŸ«½–÷qdÖÊ“þw±ë¸}úÛÿüy ?Û½c¼FÝ÷<{(ðÑúqÊÓ®ûDßÏsýÊ9«$Õ9I’ÏK–-ÑÈÛCkmƒ´’*§>¬Ï5ƒ¤ò6Jªj±äû}Ž-ÏJÄ‘gƒÙ.A&߆>¢Je'©®aB¼°ýKØKªÏX“P>fS‡°lƒ¼}:YÝÄ’Ê! 뛊¦ægLÇ98¤ágLO#ßw ™¿ Õ¹1ÒJªòéÂú¿N/©6eTî™äc8d Ë d‘·W#³Ë*©ŽcBþ ;'®¥“¼ïAvœÌ.¯çJ²–¥XKgIõºŒ¤*P–>Ø„×(PŽŸ±©\Äçòš>åm;çŒô»‹éÃú—w‘TºÊ«Š| ÷ja™g5åcx[´ôû,ÈJT¬© ³¥¼Ù¯i î×°ýwÕâ}Q›÷E]ù˜×ê…eŸë îÝú\›úò¼— Ûd‘½´GT xNáÙÈâyiÂ}€%ÍäãÕm–õj¡|¼ m»Ø~‚œn’ª3Öà ìZ†õÉÙÒúÜKÐþkZ[<mx>Úò|´\ËÏGÁº‘Ý…CGÞO˜Žspèôw߬ϧ<íºÎÜ·]Âú¹wã9ó`œî‚Ï™žŸ3=•ÇÞEÛ ^¬U‹Ï™¾|ÎôãÝ4Àöëûy ÷ä žåÁQ»§CËnë‹Af‹k5œëoOÁ{uTXÖy”`ÈÊfíÆðîŸÄ5€n2ïpÜõâ¾óú¾ùF¥¢ãˆR¸íïSŠ€î;ŽѸQÛÚÜ¢Z‘9[+ôü¢c̨ìkyl ý{VD÷ÛϘ³-Çþ™Çÿ‘DzvF÷±•Ž]ëië=ÞÏ.[ïñˆ8ü#tý2þCôÇþ¨s·vMEÛáçZ¡óþ‘sWºï”¨,æS@õc×7¢¹D4·ÐF÷ÜÂ×òú…Ôϸn+šÛÏ|¬=Ÿ¡óø™÷Løú]æ™cÿÛßÍJ"z®Cß‹¿ÃZ‰ž{¥gÎÚ»>*kÙwÊ^[Î3ºÎýW][æÑùÿ.ç¦4g%¿ó=jí\¢zŸý®×#²ç¡Rý¼ë`Ës™õÿ™×!:ïýßá9ˆŽwíïøÎµõšü¬9Gå~ùî‰ßùZ‡Êh±mùëùð~朕Æ+ðÌÕòÝÿ«æb9ö¯^ÈŒ©ô¬FÇÜlùœˆŽãˆ*c¸ã)ÍéGÍ£€J|­æ:XÎ!²Çì|¢ûÝø»Wd×ãGs'üuÎοᚻ§ø[¯Dv>á?ãm][êW¯Md+t-#š§¨-ûý7Þ¯—•{3$‹¹ÿÂ*²óõLñ·ˆ¾Ç+݇–Ÿ}á?Cëw¹Cæænq®¢ç-´ÍóŸçxz ñ8¡ß7þÏÛt+×;ôœuý"z…/˵ø×Ci ,Ÿ‘ÿ†g!2Ññ­­•%ÏpÏ“åZüîÏRèçzø÷eDD÷†è¼~§s _Óç«t„ô- h½GC+ü¿ãÿ×"ôú‹îiËíó=Õã{ ž Ñ3Z­ItÌé{Ö$üýîùÏ=-:§{ÂÚïm†Öïp_‹žãÐs eù[Î]iûWŸ“eYÎ]tŠ>ŸÃŸ§èý»§eÙònÿ=íw~×Nw½þÍçÑü"ºæ¡íÿÆÏðŸ¹ÿçÕyY{6þ ëzm£r¶Ô¿õºÚº¿âZZ>Jó²¥~õµQúµZøúÖ^©”¾³ü®s·ü®Q¿_9O¥}— ©ðëZáÏ#´_tÌM4NøßwýuIÁÏÑ9/ks) à R¾bÖȶ5}VDT–÷møóŽŽcDvüÐcˆÞ¿¶”åþßs]%‹}m­ÈœkøãY²¼~V‰Ž-Z?kkimMEÇú‘çûo=Ñ¢9…Ršƒ­Çù7ÎÙò8¶îk­Â?·Jï‰1/Ëc„O©B¿»…?îú~lYJÇ É–¤Ï-T/Õßçºé¯C~V˜lø_;DÇùY^ã*åï¿–s ™_DsŒîkÑxTò÷Qè\ôš†_ÃðÂÏçW¬Ÿ-õ=÷pHÅÜÃÖëåV:ÏÈüÞ‡Ò-çiy_[ÌÍZEל¬ÍEÁ\”¾cü¬ï·ÖŽžÒwÙ=¢þGèÏ?ùÜ (Œþ»Êï:¥ãD扞ÛßáÜl¹6VÏá_|m¯É/ÏBßeÖ**s ÿ¢õ ¯—Jüý&Ôk•õï:¢ú¯QTÖÔ?ä¿»J©R•Oùß¿^ž)ÅÇóO)ŸgHߨÞO‘©Ÿ½>ÖÖ@—J~üÈÜ‘©ßé¾_á?WBþ[ÿò©ÄÿÝkÁÜÃWøõ²öZT¿b­”Ö ä}á™êïû"|E÷y†¯Ÿ}OXž{èzD4GËRz^"³&*Ž]ë":_ÿÿù&´~Ô¹ýNïˆ*ªŸ·¶~o ­ÿ¶Ïa¥ŠÊœÂŸ—?ï&]ê°v¥ûô[ûo¼†JŸÕ!òY]>uØïYþ>˜e)wdêwºw"óÎÚw™Ðú·~—±öùü«¾—„¯y_ˆÎß–9YûÜúÝÏ]ôùò°Vÿ¶ï ¢²å{˜è;Jh}ï¹Ûò¿òúünó‰Žë$:‡è.këeùýFô$¢²üLÿç¾Âv(ùÎÍò3ÅÚwC›?OTâûøG]ƒßWrä³Ä)üX!÷“sHÿôƒ«îïí@+¿ü³Î#üz:Y| ™_Ì¿¿”Žey¿Ëý`­þMç¡tϸê"Ïü¬÷ø·ãŽ^Èù„'FvíÄyYžƒÒ»üß4w[çÿ«ï©Ÿ1÷.J¿ÖÿYòïãÜù,í•Fy.á¿38Åç¬T?ã|-ÏCé÷½¢:oIðäGý>…RY{—)ýžA(_cäÎ×þž¯è¹úÞyGt>–×Qt-Õ³Õ ý÷®ž6œKÈwåÐïˡߙC¿7‡~wýþÑg†R…_çß³ü}±Ÿ½Î¡ëãÏùêÒþíy¦§ {ŽÎ¥•÷ ¿¡Ñç˜Rýnë`Y!ç¯ôkÞÐu­Ð{B´Î&>oUÿñÿo¹›"7—צ¿Çãø÷?×8þ}œqBÚ¢ë˜!ã„?:Ï't=CÇZ–ã[›¯è3ÚÚýÙy[Þ–ã+•³)l¾­“ô÷±"{Ý#S¯Ma÷Iè½z¿„^SËëzïˆîk磊âù(Í/àŸ1ÃÏÉZýè5}”ÖíG®Wøõ°V?b,ŸQËç4¢ó_¡s±¥BŸWÑw¸È~¶De ÂO´mYÂuW…½S¾÷TzV ះÐëníÚ‹*üq dˆžõñÏö}#”.3sˬ<ïÈ”hÞ–õ#®ë¹¬aÏ]¨s ]B+º¯Ë>¿Šè>tÈñ÷5 ­è¼†¿âÙ´üÎeíÙúžk·$ǶGçy…¾‹­Ý¿Ãû ´,ßãáMö«žãÈöst¬Û¯üœQú®"úÎßë£zžÑqˆJé· ÿ;Øÿ—Òo+ýgáJ¿ WÈ ¹Q!ÿ…_Cb*+–*¶0£PÆU‰oüø*{až@•P˜'Røô«’ó¤ªdÂ<¹0©[¥P þ $*•*µ0O£J+ÌUé„yzUažQ•I˜gVeæYUÙ„yvUažS•K˜çVåæNª¼Â<Ÿ0U©ò+äÖþ]RL)WAU!a^XUD˜UæÅU%„yI…ã–RÈK+äΪ2¼¬Bÿrªò¼‚ª¢0¯¤ræ•Ư¢WUÈcÊzUSUæ5T5…¹«ª–0¯­ª#Ìë*·žB^_Õ@˜7T5æÆi¢ÇÔïYMUÍ„ys…þ-Tn¼¥ª•0o­ræmTm…y;U{aÞAÕQ˜wRuæ]„©JÕU!ï¦{¨º óªžÂ¼—Â81e½z«úó¾ ýû)äýòªÂ|BÿÁ ùÕPanV æÃÆ¡{*ä#U£„ùhÕa>Vaœ˜²^ãTã…ù…þU“„ùd•—0Ÿ¢0ÎT…|šjº0Ÿ¡Ð¦j–0Ÿ­Ð?¦~Ïš£š+Ìç)ô÷VÍæ ú/TÈ}ò?òE ùbÕa¾T¡LýžµLµ\µBµR–¯R­ö_£úSµVµN–ûªÖ«6¨6ÊòMªÍª-ª­²|›j»j‡j§,ߥڭڣÚ+ËýTûT©öËrÕÕAÕ!Y~XuD8ÿ£ªcÂü¸ê„0?©:%ÌT§…ùaSÕYÕ9ÕyÕY~QuIØÿ²êŠêªêš,¿®º¡º© ”å·Ž{[!¿£ßUÝSÝW=åA ýª óǪ'Âü©ê™0® æ/ŽûR!)ëõJõZõFõV–¿S½öÿ ú¨ú¤ú,Ë¿¨¾ªT’$ûׄjI#üW‡ZI'Ìõ’A2J&Y[,)¶°ÉN˜Çµñ¿oީߣâIñ%{)ìª%” ¯¤ƒÂõM¬'‘’Jɤä²Ö ýS*䩤ÔR)­¬ÕQJ'¥—2ÈòŒ ãdRÈ3KY„-Y¥lÂ<»”C˜çŒ¹ÿ£T¹¤ÜRÉI¶zy¥|Âͯ°ÎJÿEA…¼yaA[²¢‚¼˜T\*!•”µ”R¿´B‘Ê [ÊIå…y…q*ÆÜ‡QªJ’‹TYª"[½ªR5áŠV—jH5%WY[-…õ¯-Õ¶Ô•ê óú ã4PÈJ„-cî‡U5‘šJͤ沫ÖBr^É–R+aÞZræm¤¶R;©½¬­ƒÔQê$u–å]¤®R7ÉC–w—zH=¥^²¼·ÔGê+õ“åý¥Ò@i,, ‘†JfY>L.œÿÉS˜”F óÑÒa>V'ÌÇK„ùDi’0Ÿ,y ó)ÒTa>Máyœ®ÏPÈg*ä³òÙ ù…|®4Oò–æËZH …{øHóEÒba¾DZ*-“–ËÚVH+¥UÒjY¾FažJk¥u’¯¬u½Bÿ ùF…|“B¾Y!ß"m¶l“¶ ó ãì”v [v+ôß#í¶øIû„ù_ ãìWÈýò ùA…üB~X!?"•ŽIÇe­'¤“Â=NIÂü´tF˜ŸU8î9…ü¼tAº(]’µ^&¹"ØçªÂ8×òëä7m7¥@á·¤ÛÂüŽÂøwò{ ù}é°%H¡ÿC…ü‘BþX!¢?UÈŸ)äÏò`…ü…BþRz%½–ÞÈZßJï„{¼—>óÒ'aþYá¸_ò¯JßëÔ*•$øÄÕjð?תuÂ\¯ðšr£BnRÈc)ä±Õq„-vê¸Â<ž:¾0·W?BžP!O¤;(ä‰ò$ yR…<™Bž\BRJÖšZF¸GZµ£0O§N/Ì3¨3ª3©3ËÚ²(Ì'«BžM]Ø’C¡N…<—Bž[GØâ¤Î+Ìó)Œ“_!/ TÈ )ýÿ¥UX]D]T]LvÖÅÕ%„+QR]J˜—V; ó2ê²êrêò²¶ êŠêJjY^Y]E8NUu5a^]]C]Sí*k«¥®-ì_G]W˜×S׿ Ô …y#…û¤±BÞD!oª7û»›«[¨ÝÔ-egÝJÝZ¸îê6¼­º0o¯î î¨î$kë¬î¢îªî&Ë=ÔÝÕ=Ô=ey/…ëÒ[ÝGØÒWÝO˜÷WæÆ¤VȇüÝ?ÑUCÕfõ0õpÙêP{ Wt¤z”0­#ÌǪǩǫ'ÈÚ&ª' ûOV{ ó)ê©Â|šzº0Ÿ¡ž)Ìg©g ó9ê¹êyjoYÛ|…ûjB¾P!÷‰¹?­ÖêEêÅê%²UZª^&\¹åêÂ|¥z•0_­^£þS½VÖ¶Ní+ì¿^½A˜oToæ›Õ[„ùVõ6a¾]½C˜ïT¸Ov)ä»ò= ùÞ˜ûÐjù©÷©ÿRï—­’¿ú€p媩«ÈÚŽª ûWŸPŸTŸ’µ¨O«Ï¨ÏÊòsêóê ꋲü’ú²úŠúª,¿¦¾®¾¡¾)ËÕ·Ô·Õwdù]õ=õ}õY¤~(œÿ#õcaþDýT˜?S?æÁêÂü¥ú•úµú¬í­ú°ÿ{õõGõ'YÛgõõWµü/—4jáÿr®Ñh…¹N£æQ˜›þ‡öX yl…<ŽÆNWOÖ_c/Ü#&¡&‘ÆAÖ–X“DØ?©&™&¹&…¬-¥&•&µ&,O«qŽ“N“^“A“QÖ–I“YØ?‹&«0ϦÉ.Ìs(¬ONM.aKnMaî¤É+Ìóiò 󚂚BšÂ²¶" ó)ª)¦)®)!k-©)¥)­q–åe4e…#•Ó”æ4…y%‹0¯¬0Ï* yU…¼š¦º¦†¦¦¬ÕUSK¸GmMM]M=Y[}Maÿ†šFšÆš&²¶¦šfšæš²Ü¤¥`¤VšÖwMYK[’v‚þíÉ:òŽdyg…õé¢wÕt¶xhº ó ãôÔôÒôÖô‘µöUèßOÓ_3@3PÖ:H3X3D3T–›5Ä# ׌æžš‘Â|”f´0£0ϱ ù8…|¼f‚f¢f’¬u²ÆK¸ÇÍTÍ4ÍtYÛ ÍLaÿY Ç­™£™«™'kõÖÌ×,Ð,”å> ãü¡Y¤Y¬Y"k]ªÐ™B¾\³BزR³J˜¯Ö¬æ*Œ¿V!_§ûjÖ [6(ôߨ٤٬Ù"kݪÙ&Üc»f‡0ß©Ù%Ìwköó½ óñSÈ÷)äiökü5d­5‡„{ÖÑÕ“µלö?©pÜSšÍiÍYëYÍ9áçƹ ¹(l¹¤Ðÿ²B~EsUØrM¡ÿuÍ aËM…þš[Â–Û ýïhî [î)ô¿¯y  Ò<”µ>Ò<îñDóT˜?Ó<æÁšÂü¥Â|^)ä¯ò7š·šwš÷²ÖšÂ=>i>k¾h¾ÊÛ´’ðZRk5Z­V'kÓ+üÁLr£ Í¤Ð?–B›<Ž Méï÷«ÇSÈã+äöÚ–„ ý)äÚÄ–$Ú¤ÚdÚä²¶ ã¤Ô¦¶¤Ö¦æiµŽÂ<6½0Ï pÜŒ y&…<³6‹6«6›¬5»6‡pœÚ\ÚÜÚ<²6'm^aÿ| Çͯ- -¨-$k-¬-"Ü£¨Â8Å´Å…-%ú—TÈK)䥵Ζ2ڲ¼œÂ8åò yE…¼’B¬­¢­*k­¦­.Ü£†¶¦0wÕÖæµµu„y]…ùÔSÈë+ä ´ µ´e­M´M…{4Ó6׶кÉÚZj[ û·V8®»BÞFÛVÛNÛ^ÖÚ¤£`ŸN ãtVÈ»w´uÓz÷è®í!Ì{*ŒßK!ï­÷ÑöÕöÓö—µPè?PéïkWÈk‡[†jÍÂ|˜v¸0¡õæ#Ž;J!­ÑŽÕŽÓŽ—µNÐNî1I;Yë¥"k›ª&ì?]á¸3ò™ÚY–٤s-sÆ™§{kç [h s…qþPÈ)䋵K„-KµË´Ëµ+dm+ÆY¥¯VÈ×hÿ¶¬Õ®æ¾ÚõÂ|ƒv£0ߤpÜÍ ù…|«v›v»v‡¬u§v—pÝÚ=Ú½Z?YÛ>í_ÂþûŽë¯ ?(h;DvXQç¨B~L{\{B{RÖzJ¡€B~Z!?£ŸÕž¶œ×^Ð^Ô^’µ]Ö^ö¿ª0þ5…üºö†°å¦6P˜ßÒÞæw´w…ù=…ãÞWÈ(äAÚ‡ÚGÚDzÖ'Ú§Â=žiŸkƒµ/dm/µ¯„ý_kßhßjßÉÚÞk?h?j?ÉòÏÚ/Âq¾jÅ´¬¤Së4:­¬M§Ó ûtFanÒÅæ±uqtvº¸²¶xºøÂþöºÂ<¡ÂŒ›H!wˆÂßõöo®Äº$º¤ºd²³N®K!\‰”ºTºÔº4²¶´:Gaÿtºôº ºŒ²¶LºÌÂþYÖ?«.›°%».‡0Ï©0N.]naK“0ϫ˧˯+ k+¨+$ì_XWD˜U˜O1…¼øÿØ}XBWRWJWZvÖκ2•(«+§+¯« k«¨«$ì¬«¢«*k«FR]°G ]Má8®ºZ¼6iAK]…ëXO!¯¯k li¨k¤k¬k"kkªk&ìß\×B˜»)·¥BÞêì>l­s׵ѵ•u;]{áJtÐuætu]t]emÝtºîº²¼§®—®·®,ï«ë'¿¿n€0¨¤¬"kª3ë†é†Ëò:Oá8#®û(ÝhaË…þcuã„-ãu„ùDÝ$a>ùì>ôÒMÑMÕM“õtÝ áJÌÔÍæ³ustsuódmÞºùºº…²ÜG÷‡n‘n±,_¢°þKòeºåºº•²ÖUºÕº5º?eùZÝ:áH¾ ã¯×m¶lTè¿I·YزE·U˜oÓmæ;þÇîú]ºÝº=²³Þ«ó®Ä>Ý_Â|¿Î_w@wPÖvHwXwDwT–SXç㺖“ºSÂ<@aœÓ ù…ü¬B~Nw^ØrA¡ÿEÝ%aËeÝa~UwM˜_ÿ»oènêu·dg}[wG¸wu÷„ù}Ý]í‘î±î‰î©,¦°ÎÏò`…ü…BþR!¥¿VÈßèÞ [Þ)ô¯û lù¨û$Ì?ë¾ó¯ÿc÷¡J/éÕzì¯ÕÑêu¿jG¯7èz“¬-–>¶°½>®>ž¬-¾Þ^Ÿ@ŸP–'Ò;èë“Èò¤ ñO2}raK }JažJŸZŸFŸVÖæ¨O'ìŸ^ŸA˜gT˜O&¥¿ (¦¬Vf}}V}6Ùêe×ç®hN}.}n}Y›“>¯°>Òü‚– ׫ B^H!/¬QÈ‹*äÅôÅ…-%ô%…y)…qJÇ܇Q*g}}Y}9Ùê•×W®hE}%½‹¾²¬­Š¾ª°5}u} }MY›«¾–°m}a^W_O˜×W¸î ô …-ú7Ö7¶4Õ7æÍõ-„¹›Âø-cîO«ÕJßZï®o#[¥¶úv•k¯ï ï¨ï$kë¬ï"ìßUßMï¡ï.kë¡p]z*ä½ô½…-}ú÷Õ÷¶ôWè?@?PØ2H?X˜Ñæf…ñ‡Å܇Vk¸~„ÞS?R¶J£ô£…+7F?V?N?^Ö6A?QØ’~²ÞK?EÖ6U?MغÂõš¡Ÿ)l™¥Ð¶~ްe®Bÿy ¹·~¾°e~¡0÷Qç˜ûÐj-Ò/Ö/Ñ/Õ/Ó/ׯЯü¶Z«ô«õkôÊVo­~ÞW¿^–oÐoÔoÒo–å[ô[õÛôÛõ;ô;õ»ô»¿µïÑïÕûé÷éÿÒï×ûë|ËêéëèêéëO|ËOêOéô§õgôgõçôç¿åôõ—ô—õWôWõ×ô׿å7ô7õú[úÛú;ú»ú{ßòûúú ýCý#ýcýýÓoù3ýs}°þ…lþ/õ¯ô¯õodù[ý;ý{ýYþQÿIÿYÿE–Õ« ’A-ûëT5­AgÐËrƒÁh0bÉò؆8;C\YÏß`oH Ë ÿ WCbažÄT˜'3$æ) )…y*CjažFá/”Mkp4¤3¤7d0d4d2dþÖ+‹!«!›!»l¯†œ†\†Ü²<ÁÉ×O–ç7¹ ¡0/l("Ì‹Š ó↼¤¡”0/mp6”1”5”3”7T0TüÖ§’Âú¸(ä•ò* yUC5CuC YkMƒ«¡–¡¶,¯c¨k¨g¨/Ë(ŒßP!odh,libh*Ì›š ó7aÞÒÐJ˜·6¸ ó6 ólkhghoè`èhèdèlèò­WWC7ƒ‡¡»l¯†ž†^†Þ²¼¡¯¡Ÿ¡¿,`hdlbj0†}knað4Œ4Œ2Œ6Œ1Œý–3ŒÎt‚a¢a’a²ÁË0Å0Õ0í[Ÿé†Âþ3 ³„ùlÃa>Wa}æ)äÞ†ù††…²VÆE†Å²|‰Â8K Ë Ë +d­+ú¯2¬6¬1ü)k]kXgð5¬—å …#m2læ[ […ù6Ãva¾Ã°S˜ï2ìæ{Îk¯ÁϰÏð—a¿ÁßpÀpð[¯C†Ã†#†£²½ŽŽNNÊòS†ÃiÃY~ÖpNxäó† Âü¢á’á²áŠáªášáºáÆ·>7 Âþ· ·…ùÃ]a~Ïp_˜?0ÉÚžžžÉòç 묿PÈ_^^ÞÈZß*ô§¿WÈ?> [>> ó/†¯â‘Œ’ð¯bW5Â\kÔ s½Â_èn0&c,clc£1î·^ñŒñöƲ½Œ‰eycRc2crYžÂ˜RxäTÆÔÆ4Æ´FGc:czc†o}233³³³³s|Ëss ÇÉmÌct2æ5æ3æ70üÖ§±°°cQa^ÌXÜXÂXRÖVÊXÚèl,#ËËËË+ÈòŠ ë\I!w1V¶T1V5V3V—µÕ0Ööw5Ö2Ö6Ö‘µÕ5Öö¯¯0ŸƆ–FÆÆÂ¼‰±©0ofl.Ì[(×ÍØÒØÊØÚènlclkl÷­W{ccGc'Ù^]Œ]Ýd¹‡±»±‡±§,ïeì-ÔhæÃÆ®0z [F*ôemc+kg/Üc‚Â8òI ùd£—°eŠqª0Ÿfœ.Ìg(Œ?Ó8KØ2Û8G˜ÏUgžÑÛ8߸À¸Ðècüøè[¯ÅÆ%Æ¥Æe²½–WWWÉòÕÆ5Æ?keù:£¯ðÈ댛Œ›[Œ[Û¾õÙnÜ!ì¿Ó¸K˜ï6îæ{~Â|Ÿñ/a¾_a}ü„-‡Œ‡GdmGÆ9¦WÈO(ä'òSÆãiãYëYã9áç„ùEã%a~ÙxE˜_5^æ×æyC!¿i 4Þ2Þ6Þ1Þ5Þ3ÞÿÖë1ÈøÐøH¶×cããSã3YþÜl|a|)Ë__ üÆøÖøÎøÞøÁøÑøÉøù[Ÿ/Ư♚$“(V›4Â\+LU*B®WÈ ¹Ñd2Å2Å–µÆQèogŠ+l‰gŠ/ÌíÆI`J(lIdr0%6%‘µ%5%öO®0~ SJaK*SjažÆ”V˜;šÒ óô ÇÍ`ÊhÊdÊlÊbÊjÊfÊþ­WSNS.SnÙ^yLN¦¼¦|²<¿©€© ©,/l*"¦¾¦~¦þ²½˜š™Ëò!¦¡&³i˜,n!<²§i¤0e-ÌÇ˜Æ óq ç5þÿØ/Ç »šf ÇÉšîÁŠmÛ¶mÛ¶mÛ¶mÛ¶mÛÆÙÉ©o×söt¿?Þ:?²¿dªöŸëº§WOψ9×`†aøP†ÃI3‚Édø(†fø1–4ãÄx’O`êL“H3™ÉOSI3ML'ù 1“䳘ú³>GÌóÄ|±@,‹Äboj‰X*–‰åÖ®b¥X%V[|X+Ö‰õß 6’_Þ$6“|‹ØJòmLÿÛ¾ƒá;Å.Òìfò{Ä^ÒìûI~€©sá‡~˜áGÄQÒcòÇÅ Òœdò§ÄiÒœaògÅ9Òœgò~Q\—ÅqU\×Å oꦸ%n‹;Ö®»âž¸/Xü¡x$‹'*ž‘_~.^ü¥xEò×LÿoÄ[Ò¼ïñâãÿñŸ˜:ŸÅÒ|eòßÄwÒü`òÀóoe°q‚ý\A=<á‚CrGH¦N(pH#˜<’F2yš4†É»  a ,„ƒð"B$o*2D¨ÍÚb@LˆeñØâB<‹Ç‡AbHI!™×'‡dG)™>SAjHi-›Ò“;20u2B&Òd†,$Ï Ù ;ä°\NÈEæsC’ç…|$ÏÏôY€áÿ­« ‚ÂPŠB1(%¼§/ ¥ 4”±¦QÊAy¨`ñŠP *C‹W…jPj@M¨µ¡Ž××…zä¤ë{hÂ4dî¥4&M&ßš‘¦9“o-¡´¶lhKîhíIÞ:’¼óÝÎØ;ì]¡t‡ÐzAoïéû@_èý­i €0[| …a0Üâ#`$Œ‚Ñ0ÆÂ8ïõ`"L‚É0¦Â4˜îå3`&Ì‚ÙV90æÁ|‹/€…°ÃX Ë`¹×¯€•° V[ù5°ÖÁz‹o€äÍo‚Ͱ¶Znl'ó;`'ÉwÁn’ï½$ß÷‡½ÃýpÂ!8 Gà(óžþ8œ€“pÊšÆi8gáœÅÏø—,~®ÀU¸×áÜ„[^ ÷à><°ÜCxá‰ÅŸÂ3²Îsæ_0ü%¼"ÍkxoáåÞÃ2ÿ>‘ü3|!ùWøFòïØ;ü00Á  ƒcü‰¡ÐA¾y@D‰Êâ ºÚâa0,†Ãð#b$ŒìõQ0*FÃècb,Œíåq¬ ÿ»â2<ÆÇ˜abL‚I½©d˜S`JkW*Li0­ÅÓ1õÓc̈™,›³;²b6’gÇ$ω¹Hž›éç¿uåÁ¼˜óc,ˆ…°°÷ôE°(ÃâÖ4J`I,…¥-^Ëb9,oñ X+ae¬‚U±V÷úX“œt-fþµ^ë’¦“¯Ïð oˆ°16±lSlFîhŽ-HÞ[‘¼5¶!yÛ?ì¶ÃöØ;b'ìŒ]°«÷ôݰ;öÀžÖ4zaoìƒ}-ÞûãhñA8‡àP†ÃqŽôúQ8ÇàX‡ãqNôòI8§àTœ†ÓqÎôòY8›¼™98çá|Ë-À…¸[| .Åe¸Üâ+p%Y®&ù\KòuØûùÿZëqnÄM¸·àVÜæâvÜ;q—5Õݸ÷â>‹ïÇxYü0!oæ(#ùq–Oˆ^Ÿ2ý?cøsùB¾”¯,ûZ¾‘o‰=ïä{²Òý(?Yî³üBæ¿zè7ùÝr?¸ù«À*ˆ ª|q0Üb?W’ ’á¡î0\0Ž — W ÿÝ–VF¹D¯¡™þÃ0<¬ §Â«–¨"©ÈÄž(**Y)šŠNòÌwcªX¤‰Íä㨸*žŠoÙ*!¹#S'1Ó0<)Ó1<9ÃS0<%ÃSùÉ;L­Ò¨´D¯é˜þÓ« *£ÊdÙÌL>‹ÊJšl*»ÊA˜œL\*7iò0ù¼*iò3ù /ÈðB /ì'÷þ»­"ª¨*FÌ®83Ϫ¤*¥J[¶ “/«Ê‘¦¼‡VP-W‰©S™áU^UU#Mu&_ƒá5^‹áµÿ¾Ãµê¨ºª1»úÌ<0¼¡jDšÆª‰jJ˜fª9™o¡ZªV„i­Úù¶ªjO˜LŸU'ÒtV]HÞ•©ÓáÝÞƒá=Þ‹á½Þ‡á}ýä꯽dú¤“f“ª†‘f¸¡FfSg´£Æªq–Ïä'¨‰¤™Ää'3| ç2|šŸÜûﶦ«j¦gv³Ôl5'À çªyäDç«$_¨©Å„Y¢–ªe¾\­P+øUjµZ£ÖZ;Ö©õjƒ‡nT›Ôæv‹Úª¶©íV~‡Ú©vyènµGí `÷©ýdŸÔAuˆ0‡Õ2T#ùqu‚ä'Õ)’ŸfÞ熟UçHs^] ùE¦Î%?ù»¸¬®¨«ž^¯©ëêF€žoª[ä n«;$¿«î©û„y ªGþX=QOøgê¹z¡^Z;^©×dý7ê­z§Þ[îƒúHæ?©Ï$ÿ¢¾ªo„ù®~Ð7¦k ÑAIL'y’ ’á¡´C¡äÈÔ‘ ÿÝ–ÒZO¯®­Ãè9¬Gž ¼Ž@òˆ:’ŽL˜(:*™ÆÌ'ºŽAš˜L>–Ž­ãx\\OÇI ’;éÄ: a’2õ“éä¤I¡S’<•NMò4Lý´ O§Ó“&ƒÎHòLLÌ~ò³è¬:›§×ì:‡Î ç\:7y‚<:/Éóéüºa êBd¾03Ÿ"º¨.æqÅu ]2@¦“/­Ë¦¬.Gòòº‚®H˜JLýʺ iªêj$¯®k¼&S¿Ãkë:¤©«ë‘¼>S§Ÿ¼Ã†º‘nì鵉nª›è¹¹nAž ¥n¥[¦nKæÛéöºƒîh¹Nº³îâ¡]u7Ý=€í¡{’uzéÞºaú2sî§û“f€HòALÁ ¢‡’f˜ŸÜûﶆëz¤gv£ôh=&À ÇêqäDÇë z"a&éÉd~ s/Sõ4ÒL×3H>SÏ"ùl¦þ†ÏÕóH3ŸÉ/`øB½ˆ4‹ÿ¾Ãµ–è¥z™^®WøÌo¥^ENtµ^Còµz^¯7Xn£Þ¤7ë-z«Ù¦·ëz§•ߥwë=z¯Þçcöëú >dåë#ú¨>¦û˜ú$Ùç)}ZŸÑg-wNŸ'óôE’_Ò—I~E_%ù5æ}^gø †ßdø-†ßö“¿‹;ú®¾§ïë>ý>ÔÈ<ÖOHþT?ÓÏõ ˽ԯ~±×>æ 3Ÿ·úÝ/óÞÇ`òõ'ýYÑ_}ü7&ÿÝÃPÎÐùÀ&i‚2ù`&8iB0ù Åp‡á‚áÀðßm¡‘FmŒO¿® Mž Œ Kòp&¼‰`"Z.’‰l¢˜¨&š‰nb˜˜&–•mâõã2óŒgâ“&IHòD&±Ib’Z.™INæS0ßMÉðT OÍð4 OËðt OÏð ~ò3šL&³Éb²úô›Íd'OÃä$y.“Ûä1y-—ÏäÿÅ ø˜‚Ì| 1¼°)Bš¢¦É‹3uJxxI•bò¥^Æ”%M9&_žá^‘á•^™áUüäV5ÕLuSÃÔôé·–©Mž Ž©Kòz¦¾i`Z®‘ilš˜¦¦™inZ˜–¦••omÚ˜¶¦iïc:˜Ž¦“él廘®¦›énzø˜ž¦ÙgoÓÇô5ý,×ß óÍ ’6CH>Ô #ùpæ=Œ`øH†bøh†ñ“w8ÖŒ3ãÍ3ѧßIf2y‚)f*ɧ™éf†™i¹Yfö/6ÇÇÌeæ3ÏÌÿeøø…L~‘Yl–˜¥f™_ÎäWxøJ­bò«ÍÒ¬eòëÌzÒl`ò¾‰á›¾…á[ýän3ÛͳÓìòéw·ÙCž`¯ÙGòýæ€9hYî°9bŽšcæ¸9aNšSæ´•?cÎ’õÏ1óú˜OÌ|>3ü‹ùJšoæ;Épów=ÿvm„`?WP†sƒ“&“ÉðP w. G†ÿnKºÊÕ®q]Ÿ~C»aÈ„uùáÝ–‹èF"ó‘Ý(nT7šå¢»1ܘn,7¶‰ãÆ%ëÄsã» “ÐMDæ»IHžÔMFòäÌ}¥`xJ†§ò“{ÿÝVj7›ÖMç¦÷™_7#9ÑLnf7‹›ÕrÙÜìd>‡›ÓÍåæ¶\7¯›ÏÍïð1ÝBdÂÌýq‹’¦˜[œä%Ü’$/ÅÔ/Íð2 /û÷þ«UÎ-ïVp+º•|æWÙ­BN´ª[äÕÝnM·–[ÛÇÖqëºõÜúnÞÐmä6v›XµšºÍÜæn ·¥iå¶vÛ¸m­|;·½ÛÁíèvò1Ý.ÿÃ~9Y²4axfíÝ.de¯mÛ¶mÛ¶wgmÛ¶mÛ¶mß¹ýElĭʺ?öמˆíˆ>qæyÞÊÎÊ®‰˜!ûìîôpz:½œÞšíãôu‚œ~ÆšþβÎ@gÉ;CH>ÔFòáÎ’´œçQ>ÚCš±~ò{1ÎïLp&:“´~';SÈLu¦‘|º3ÙéÌrfkvŽ3×#ó4>ß2ŸÎBÏ,ÒübK~‰³ÔYæ,wVh~¥%¿ÊYí¬qÖ:ë4¿Þ’ßàl$Í&K~³³…4[m$ßîì ùNKý]¾ÛÙCš½~r÷9ûÎAçÖïa繃£Î1’wN8'SÎiÍžqÎ:çœóÎ_t.9—+F­«Î5]×Ì ßÏ7‰'ßrn{ôŽæî:÷È>ï;œ‡Î#ç±fŸ8OgÎscÍ ç%Yç•åý¾¶ð7Î[Ò¼sÞ“üƒ¥ÎG ÿä|&Í?9‡_oÎwç‡óSï—2*Œ'y’…b¡Y͆eá<^ãÈ*¾ÿ›X$™EaŽæ™%Ï™ðŒÔå×Lßω'b…=ZDsEY1²Ïâ¬+ÉJ±Òš-Ãʲr¬¼±¦‚å=V´ðJ^™U!MUVäÕ-ujXxMV‹4µýäÖauY=VŸ5ÐúmÈ‘;hÌš¼)kÆš³¬¥f[±Öi£ñ¶–ù´óñö¾»ƒæ;ZòXgÏtÑ|WK¾ëÎz°ž¬—æ{[ò},¼/ "M?K¾?@šlÉ[ê ±ð¡li†ûÉ9ÁF²Ql4£õ;–#w0žM ùD6‰MfSØTÍNcÓÙ 6“ÍÒøl6‡ÍeóŒZó}dï^¨™El1[–ùe>²Üw¯ÐÌJ¶Šìs5[ÃÖ²ul½f7°lÛl¬Ùby[Ù6Òlg;H¾“í"ùn¶‡ä{-ÏÝgáûÙÒô“sxˆfGØQvLë÷8;Aîà$;EòÓì ;Ëαóš½À.zä’Æ/[æs…]õÌ5Í_·äoøøMß}Kó·-ù;ì.»ÇhÉ?²ðÇþ„=%Í3öœä/ØK’¿²ÔmáoØ[Ò¼ó“søž}`Ù'öYë÷ ûJîàûÎ~°Ÿ,€ÿ›ò`œÊç!xHÊp¡y–‡ãá5G$ëDâ‘yÂ8dÚ÷ ç\piXàŠ\Ü%yTäÑ-Ïaá¯ÿ¾bòX<6Ããjó‹Çã“MÀòD<1O¢Ù¤<™OÎSð”<•áRó4<-OÇÓk&ƒå=fôñL<³a³XòYy6žç0lNž‹\‘›ç!y^žäù-Ï-ð÷þÖUâ…y^T›_1^œœh ^’—â¥yÍ–ååÈ|yË{©àã}w%ÍWæUÈU-uªYxu ¯aá5y-ÒÔæuH^×R§Þßsø[W}Þ€7äxcm~MxSr¢ÍxsÞ‚·ä­4Ûš·!óm-亮÷Ý4ßÑ’ïdá-¼‹…wµðn¼;izðž$ïe©Óûï9ü­«ï˃x?Þ_›ß>œè >˜äCøP>Œ0Ãù>’â£57†åãøxcÅ>‘Oâ“ùÍLåÓøt>ÃÈÏä³øl>‡ÏÕÌ<>Ÿìs_Èf1_Bæ—òe$_ÎW|%_EòՖ󹆯%Í:K~½…o°ð~ò{±‰oæ[øV¾Mëw;ßAî`'ßEòÝ|ßK˜}|??ÀòCš;Ìð£ü˜±â¸œðÝ'5sŠŸægøY#ÎGÎûî š¹È/‘}^æWøUÂ\ã×Éü Ë{¼Éo‘æ6¿Cò»–:÷ø}Ò<°äZø# ì'çð ÊŸñçü…ÖïKþŠÜÁkþ†äoù;þž0øG~ÒÜgË|¾ð¯žù¦ùï–üþ“ˆ@Lü›t>„‡¡ Ú’#Â’&œ%^D MDK>’ˆLš(–¼cá̹…ÿi—R€Pµ~]•ÜA4ä1DL‹0±EÆÕ\<Ë|⋞I¨ùD–|bO⻓j>™%ŸÜÇSˆ”†Meɧ¶ð4žV¤#MzK>ƒÈHšL–|f ÏbáYýäfÙE‘SäÒúÍ-ò;È+ò‘<¿( ¦(,Šˆ¢¢˜æŠ‹¢¤(e¬(-ʈ²¢œ(¯™ ¢¢¨$*ù*¢ª¨&ª‹š©)j‘}ÖuD]ÂÔõEÑÐ0Dc²NÑ”äÍDs’·-IÞÊrNZ[x o+Ú‘¦½ŸœÃ¢£è$:‹.Z¿]E7rÝE’÷½DoÂô}Eè'úkn€(‰ÁÆŠ!b¨Ç†if¸ïçDý‘b”GGknŒKö9NŒ3QL“ÅÃLÓÈ:Ó-ïw†…ϳH3Û’Ÿcás-|ž˜Oš~rŠEb±X"–jý.Ëɬ+I¾J¬k³V¬óèzÍm°Ìg£Øä™ÍšßbÉoÛÄv±CìÔü.K~·Ø#önŸ%¿_ ÍAKþ8Lš#â(ÉYê·ð~Rœ"Íi?9‡gÄYqNœ´~/ŠKä.‹+$¿*®‰ë„¹!nzô–æn[æsGÜ÷Ä}ñ@ó-ùGâ±gžhþ©%ÿL</÷Ò’%^“æxKòw–:ïÅÒ|´ä?Yøg ÿ"¾’曟œÃïâ‡ø)d ü7&ƒK*B†”¡Z†!óae8^F0\DIF–Q¤£&9YGH)A*Ã!™öýŸ%£’&šŒNò–:1e,ÒĶäãXøß뿯¸2žŒ/È„ÚüÉÄäD“Ȥ2a’Ëd>¥L%SË4†K+ÓÉô2ƒÌ¨™L–÷˜Ùdz.«%ŸMf'M™“ä¹,urË<¤ÉkÉçû{ëÊ/ È‚²,¬Í¯ˆ,JN´˜,.K¦¤,EæKË2²¬,g¸ò²‚¬(+ÉÊš©"«’uªÉ겆¬)ki¶¶¬CæëÊz²¾l`¸†²™o,›¼©å\5³ðæÏáo]-dKÙJ¶–m´ùµ•íȉ¶—dGÂt’É|Ë{éêãÝ|wwÍ÷=ɽdo’÷‘}Idyn? ï/f %?ÈÂÿ=‡¿u ‘Cå09\Ž#å(9ZŽ‘c½IŽ“ãå9јê$9YN‘S >MN—3äL9K3³å9WΓóå¹P.’‹å/±T.“Ëå ¹R®’«åš_«ÖÊur½Ü 7ÊMr³Ü"·ÊmžÛ.wÈr—Ü-÷Ƚr߯ü~y@”‡äayD•ÇäqyÂs'å)yZž1ú<+ÏÉóò‚¼¨™Kò²¼"¯ùkòº¼!oü–¼-ïÈ»¿'ïËò¡ÁÉÇä }"Ÿ’ü™|Nòò%É_É×$ã'¿oå;ù^~å'ùY~‘_å7¯óïò‡ü)@ÏB0! BAha5ÂCˆ‘ 2Dp/!@€¢B´_«¢C ˆiTˆ± êû¿âB<Âć&1$¤ ’k&¤„TÚȧ!ŸêûûÖÂÓYxzÈ@šŒ‰ä™! ɳB6’g‡$ÏiéçO»rAnÈy!ä‡P Aa¯ó"PŠAqc% $”‚Ò/e¡”‡ š©• 2T1òU¡9¡êPjB-ÃÕ†:d¾.ÔƒúÐB#h M )4órÍ-óo-¡´†6šokÉ·ƒöÐ:¶“%ߺ@WèfØîЃ\Ñz‘¼7ô!y_"y?èOò~r  C`( ƒá0FÂ(¯óÑ0ÆÂ8cãaL„IŸ S`*Lƒéš™3aÌ6òs`.9¡y0ÀBÃ-‚Åd~ ,…e„Yn™ÿ X «`5¬ÑüZK~…¯‡ °6v³%¿¶’fl'ùØIò]°›ä{`/É÷ùÉ9Üà ‚ÃpŽÂ18'¼ÎOÂ)8 gŒ]œ…sp.ü"\‚Ëp®jæ\÷È ¸ ·¼o·½Ï;p—œÐ=¸ïñðyß{ŸOà)™ÏἄWðÞÀ[xï½ÜøHæ?ÁgÑìWËûúßáü4­ TT>˜ ®B¨† ¥B“ù0*,Ééð$ "’<I"[øŸvEQŽbŠ+¡¤¥*×ë<ªŠ¦¢«Æ.bªX*¶Šcð¸*žŠ¯¨„šI¤{$‰Jª’yß’{Ÿ)TJrB©Tj•†0iU:2Ÿ^eP “Ie&óYTVgÓlvËûÊaá9-<—…çVyH“Wå#y~U€äU!’¶<·ˆŸœÃ¢ª˜*®J¨’ª”*­Ê¨²ªœ×yyUAUT•Œ]TVUTUUÍàÕU USÕRµ5SGÕUõT}#ß@5$'ÔH5VMTSÃ5SÍÉ| ÕRµR­UÕVµSíUÕÑËu²Ì¿³êâ™®šï¦º“+z¨žª—êm¸>–ú}Uê§úv€H®¤“|ˆJòaj8ÉGXúé'çp”­Æ¨±jœ¯&¨‰j’šìu>EMUÓÔtc3ÔL5KÍ6ø5WÍSóÕÍ,T‹ÔbµÄÈ/UËÈ -÷Ñ„Yi™ç*µZ­!ÜZK~Zï™ šß¨6‘+6[êlQ[I³Í’ß®vf§ÚEòÝjÉ÷ª}$ßoyî?9‡Õ!uXQGÕ1u\P'Õ)¯óÓêŒ:«Î»8¯.¨‹ê’Á/«+ꪺ¦®k憺©n©Ûꎺ«î©ûêzè%©Çê‰zªž©çê…zùkÕ+õZ½QoúïÔ{õA}TŸÔgõE}ýå¿©ïê‡úiN1G‡À CcÍ„Åp#ùˆùÿ #ct Ë£@ip@EVBtI£‘<:Æ yLŒEòØ–þÿ´+ÆÅx`BL„‰1 &õ:O†É1¦4v‘ ScLkðt˜3`F̤™Ì˜³b6ÌŽ90'æÂܘÇKäÅ|˜ `A,„…±È¯UE±ÇFý’XŠœhi,ƒe±œáÊc¬ˆ• ^«`U¬†Õ5Skb-¬mäë`]¬‡õ ÞÀò~Zx#lLš&Ø”äͰ9É[`K’·ÂÖ$oã'ç°-¶ÃöØ;b'ìŒ]°+vó:ïŽ=°'ö2vÑû`_ 2x?ìp ÒÌ`‚Cq˜‘Ž#È ÄQ8š0cp,™‡ãqN4Ü$Ëü'㜊ÓpºægXò3-|–…ÏÆ98çv>. W,ÄE$_ŒKH¾—‘|9® ùJ?9‡«p5®Áµ¸×ã܈›p³×ùÜŠÛp»±‹¸wánƒïÁ½¸÷ãÍÄCxù£xŒœÐq<'ñžÆ3xÏáy¼àå.â%2¯àU¼f¸ë–ùßÀ›x oãÍßµäïá}|€ ûã|jðg–:Ïñi^â+’¿Æ7$‹ïHþ?ü£ŸœÃOø¿àWü†ßñþÄ7Ðý‡sƒ»!Ü®žå†vøa Î ïFp#º‘4ÙâÇe.÷¾ ïSº`ÔøçR>Š„qݨd>šÝáÆ4\,76™ãÆõx<ÍÆ'Ó ,<¡›ˆ4‰Ý$nR7™á’»)È|J7ÉS»iHžÖMGòô–>3XøŸvet3¹™Ý,nV7››ÝÍáætsyçvó¸yÝ|Æ.ò»Ü‚n!ƒv‹¸EÝbnqÍ”pKz¤”[Ú-ã}+ë}–sË“ªàVt+¹• WÅ­J櫹ÕÝnMÃÕrk“ù:n]×Ól}Ëûjà6t¹ ÛÄ’ojáÿc¿ƒ$]¶5רf:¿±mÛ¶mÛ¶mÛ¶mÛ¶mžÚ}cŸ˜êï]q#ö¿Óµ3b&ºžweVæÊìÝœµ€IKÖ zkÖz[Öz{â{;ü¼Ãެë̺°®¬ëÎz°ž¬WÀÎ{³>¬/ëç:E6€ dƒ\>˜ aCÙ06¼/ï(éÏð|«~0of(Ƈó®l$ÅGó1.ËÇÁuÆó Ð'ïaá“ù˜LåÓ Oç3 Ïü÷þ£1‹Ïæsø\>Ïç øB¾ˆ/èä¾”/ãË]]]ÁWòU|5_(YË×ñõ|ƒ«~#ßof3ß·òm®l;q;ßIø.Âw¾‡ï…É>¾ú~ú¡ßá?‡ùع£ü?’DŸO~ŠŸ†É~–ŸÉy~_~‰Xÿ2áWøU~ d׉ú„ß$üá· ¿Cø]ÂïùÙ{¾ÏÀ?äøcS΂Él¢~ŽŸ½Ã¹ržœμ@.”‹€/–K`‡–}[æõå [!WÊUÀWË5r-ðuÄúëå˜l”›äfl‘[aý6býírLvõ»än˜ì!ê÷¾ÏÏÞá~y@g>$Ë#Àý9&Ãä„< ý”<-Ï€ä,±þ9y&ü쾂ê¸(/ÉËà.¯È«òðëĽß7ar‹¨¿íõ; »KÔß“÷aòàßw$ÆCùH>–OäSùÌçFŸËò%¸ãWò5¼ù7ò-ôwò½ü ?ÊOò³OþE~•ßÀŒïò‡ü ü—ü-=*˜ ìÁUR…ryhF…u©ÇN…êñDP¡GR‘¡GêñDUÑ`¨AxLƒꈥb«8*®bŠûœ\(©è…VvÈ*z<¯ÆI•P%žX%QI'#î%¹J¡RªT®4µJ£Ò‚9éTz¸RbýŒ*L2õYTV˜d#곞ÃÏÞaN•KåVyT^•ÏçäùUUô¢* ;TD…^LW%TIUJ•öÉ˨²ª˜Q^UPWR•UUÕ•TSÕU UÓåµTm¸Ÿ:ª.ôzª>ôª!ôFÄ;iLxÕ&͈úæ~ö[¨–ª•j­Ú¨¶>'o§Ú« U'ءΪ ô®^í’î^ë¼§ê¥zïCÜK_ÕOõW\é@5ÎL¬3D …É05úb‘„R£a2†¨ëgïpœ¯&¨‰j’šìsò)jªšz1]Í€š©f©ÙjŽ+›«æ©ùj˪Ej±Z¢–ªe>Ùrµ®¿R­‚¾ÚÏî+¨Ž5j­Z§Ö« j£ÏnR›ÕpÇ[Õ6xóÛÕµSíre»‰w²Çë{A¶¨ß¯Àäà¿ï0HŒCê°:¢Žºnó˜:®N¨“ê”:í“!îý,áçÔyuA]t¥—Ôe8㊺ ýšºý†º ý–º­î€ä.±Ï{„ßW`ò¨DøcŸþÔÏ~¿ž©çê…zé:õ+õZ½QoÕ;õÞ'û@ôç#áŸÔgõd_Õ78ã»úý'±þ/õ':˜®ÝØ_#$á¡th˜„!êÃŽðð„G <¨Žˆ:’ެ£¸NUGÓÑu SÇòÉbý‰Cx\¯3Í]©ÐÎPZC7ÄúV;0‰§ãë IH¬“ˆðÄ: L’õÉONx ÂSúÙ;L¥Së4:­ëÔétzAgÔ™tfŸ, ÑŸ¬„gÓÙuÓ•æÒ¹áŒ<:/ô|:?ôº ôBº°.’¢Ä>‹^\—€II¢¾ᥠ/CxY?{‡åty]AWtº’®¬«èªºš®î“Õ úS“ðZº¶®£ëºÒzº>œÑ@7„ÞH7†ÞD7…ÞL7×-@Ò’Øg+Â[ë60iKÔ·#¼=áïègﰓ议SwÓÝuÝS÷Ò½}²>DúÞÏëýõW:P‚3ë!ЇëÓÃa2BÔ£@2šXg ácõ8˜Œ'ê'>‘ðI„Oö³w8EOÕÓôtשgè™°³ôlèsô\èóô|½@/te‹ôb½D/ÕËôrŸl…^©WéÕz^ëãëôz¸þ½ú&½YoÉV½ Öo×; ï$ÞÃ.½&{ˆú½„ïÓûarÀÏÞáA}HÖGN}TÓÇõ‰€ŸOêSú´>ãêÆY}vè¼¾ý¢¾¤/ë+ÙU}M_×7~¾©oéÛúŽkÎ]}Oß×\þP?Òõ—?ÕÏôsýÂå/õ+¸Ÿ×ú ô·úô÷úôúôÏÄûùBøWý &ßýìþÐ?õ/ýûÿNm‚™à&„ùëÇ&” m˜ÀõaM8—ý5›Ð#šHÐ#{5ЉêÊ¢™è&†‰éòXpïßï&މk˜+åFÀ’XG®‰5ôxÄ:ñ O@xBƒêHd›$&©If’ûœ<…IiR™Ô&IëãéLzØ¡ &#ôL&³Éb²šl&»OžÃä4¹ÀŒÜ&É <ŸÉo ˜‚®¤)lŠ˜¢./fŠ›`’¦ÜgiSzYSzyâT ¼"ᕯìgï°Š©jª™ê¦†©ésòZ¦¶©cêšz¦¾70 a‡™ÆÐ›˜¦¦Hš{­𖦕i ¼ q/mM;ÓÞtp¥M'ÓÌéB¬Ó•ðn¦;Lzõ= ïExoÂûøÙ;ìkú™þf€hùœ|°b†šaf¸áã#Í(Ø¡Ñf ô±fœ’ ^›|’™l¦ŸJÜË43ÝÌ03]é,3ÛÌsæëÌ#|¾Y“…Dý"¾„ð¥~ö—™åf…YiV™Õ>'_cÖšuf½Ù`6úø&³vh‹Ù }›Ùnv˜f—Ùí“ï1{Í>0c¿9`?d›#æ¨+9fŽ›æ¤ËO™Óæ Xç¬9÷yÞ\€~Ñ\‚~™x'W¿Jø5¯ûÙ;¼anš[æ¶¹cîúœüž¹o˜‡æ‘yìãOÌSØ¡gæ9ôæ¥ye^›7æ­Oþμ7ÀŒæ“ù ü‹ùj¾™ï®ä‡ùi~™ßî6˜ nÝë„°!z<¡lhèalXèá zÿ^#<á DxP‘mÕF³Ñm û§Ç´±llÇÆµÌǹ>ŸÿÒ*èÚkAâx-ðø6M<\ÝãIl“ؤ6™+MnSØ”`N*bÔ„§±ia’ލOOxÂ3ž‰ð :2Û,6«Íf³ÛöOÏisÙÜ6Íkóùx~[Àçóߣ -½°-b‹Úb¶¸-á“—´¥li0£Œ-kË/o+ØŠ¶’+©l«Øª¶šË«Û¶&X§–­ ÷YÇÖ…^ÏÖ· lCWÖV{>y_ï§~`F;À>Èkƒ±Cí0;Ü•Œ°#í(P?îÒãCøX;ÎŽ·\éD¢~’ “)v*ôiÄ:Ó ªc†igÙÙvŽkÿôyv¾]`ÚEv±/±K}>ÿ=–ÙåÐWØ•¾*PºÚ®±kÁŒuv½Ý|£Ý×ßl·Ø­v›+ÛnwØ`Æ.»®³ªÇ³×î³ûíWz¨?dÃäˆ= ý±Îqƒê8aOÚSö´=cÏÚ?ýœ=o/Ø‹ö’½ìãWìUŸÏkö:ôöf€ß ”Þö~¾fܵ÷ì}àìC¸þ#ûØ>±O]Ù3ûܾ3^ÂU<žWö5LÞØ·ö}ïÊ>ë|´Ÿ`òÙ~þ•XçáAu|·?ìOûËþ¶çOæwB8îúN( Oh'ŒÖ çÊÂ;œˆN$'²Å'‹êDs¢;1œ˜N,íÄqâ:ÌáŽðqé(G;Ƶ¾u'žßå œ„N"°ÓÄN¸ÿ¤N2'¹“•¥tRÁúÔNèi¡zÿ®qÒÃ$ƒ“z&b :2;Yœ¬N6'»“Ãçä9\NnЋ˜ aCÙ0ã3†³l$eðÑl KüEãØx6M4Ì$6™üû§°©$ŸÆ¦“|›IòY–½šÍæfî¿lç±ùl[ȱžù¶”-#f±œ­`+Ù*ìfkÈÉ­uè:¬gØF‚ob›Ù¶•mcÛØ–\v²]l7ÛcؽlÛOœ9`¹ç …b‡Is„%ù1vœä',÷Ÿd§Hsú_¶‡gØYvŽgØEv‰]fWØUv]g7ØMv‹ÝfwØÝ¹Çî³ì¡1¥Gì1{žü{Î^°—ì{ÍÞ°·ì{Ï>°ìû̾°¯ìûàÌö“ýb¿Ùü¿y0œ‡à!y(š‡áa}.Ï#ðˆ<Ì£ð¨>Gç1ÜðwÅä±xlÇ0qy<Ÿ'0xBžˆ'æI ž”3âvÎÉ%W$×Iî!éÿßJÆ“ó<%OÅSó4<-OÇÓó <#ÏÄ3ó,<+ÏÆ³˜Hž“çâ¹)åáyy>žßàRÐù)Ä pEœßг.Æ‹ó¼$/ÅK°exY2™r¼<¯À+òJ¼2¯Â«úzªñê¼q¢¦%ßZ^›×áuy=ÃÖç È y#’7æMHÞ”7#yóÙ¶à-y+Þš·ámy;Þžwày'Þ™wá]y7Þ÷à=L¤ïÍûð¾Æ”úñþ|hðA|0BÌt(æ¥Ã]nÉGñÑ| ÀŒããÉd&ð‰|ŸÌ§ð©|Ÿîë™ÁgòYĉÙ|yÏ\Kîóø|¾€/4ì"¾˜<±„/%ù2¾œä+,Ÿ»ò_¶‡«øj¾†¯åëøz¾o䛸f¾…oåÛøv¾ƒï仸îÙÃ÷ò}|¿1¥ü ?Äü?Ê3=ÎOð“?ÅOó3ü,?ÇϰøE2™Kü2¿Â¯òkü:¿ÁoúznñÛüqâ®%ß{ü>ið‡ül¸'ü)ÙÿŒ?'ù þ’ä¯,ÏëÙ¾áooüÎøÖïùrù'þ™0_,sûÊ¿9æ»aðŸüÿmð?D0\¸yƒü]!E(Ò„aHÖrO8 oá,Ü_ÿ[E‘œ‰F6¦ED%'MD1Ó’K,›4qD\OÄ7\‘ìOd¹?±HBš¤–~fáÜ¿WAZBH'e¤ ’ÉxD2‘œ0),9¦©“Ú°iDZòD:‘^d —Id&û³X>7«…g³ðìþ= ÒÊ!r: ä2RÈ-òÉäùD~°äXP"MaK‡%\1KqQ‚4%-ý¥,¼´…—±ð²þ½ Ô*'Ê;­`Lµ¢¨DNº²¨"ª¦š%—ꢆcj¶–¨Mž¨#êŠz„©/ý -ŸÛÈÂÿ^i5Íœš‹¢¥ólåK£µh#ÚŠvF:íE2±Ž¢É;‹.ï*º‰îγ‡¯§§è%z‹>¢¯è'ú‹>>P ƒÅ1T ÃÅ)F‘÷cÄX1ÎpãÅ1QL2ød˾MSI3ML'ù ÿÞjͳœ‰ÎsÄ\ç9Ï7ÝùbX(Ó^,– ,ËH¾\¬pøJ±J¬vžk|=kÅ:²½Ø@òbÉ7‹-b«Øf¸í–=Ùaá;Å.Òì{H¾×¿‡ZûÄ~g¢ÄAqÈyöM÷ˆ8*Ž‰ãÆ´Oˆ“d§Äi’Ÿg~Nœw٠⢸$.‹+⪸&®ûì qSÜ·»îXr¿+î‰ûâaZú‰Ç¤yâß« ­§â™“ÀsñB¼tž¯|i¼oÄ[ñÎHç½ø@&öQ|"ùgñÅá_Å7—ý.~ý?-ûðËÂ[øÛ^É`’ÂÁIꯪBÈN¡dhÆy†õ¥N†—dD#H22™X•äÑdt‡Ç1e,çÛ×GÆ•ñd|ãL™Ða‰ žX&!ïO*ɹe¯„”¤Qþ= ÒÒ<2™Lî̇û÷6Pk„)GÉÑrŒk®cå89^N0¦=QN’“‰ ¦È©d2Óät9CΔ³\v¶œ#çÊyr¾‹/ å"¹X.qñ¥ryÿr¹B®”« ·Z®!û×Zög…¯·ð þ= ÔÚ(7ÉÍr‹Üêšë6¹]î;iï’»å"ƒ½r™Ì~y@$Ì!yX‘Gå1—;.OÈ“Dÿ)yš¼ÿŒ_- “Y¨©Å„Y¢–ªej¹Zár+Õ*µZ­1N¬µä¾N­'͵‘ä›,÷löïUÖµUmSÛÕW;Õ.µ›ÈfÚ«ö|¿:@&yPR‡ÕuÔe©ãê„:iœ9¥N«3ê¬:ç2çÕuQ]2ú/«+äç^U×H~ݲo7ü{¤uSÝR·ÕuוÃ=u_= ²y¨©Ç¢ž’I>sèsõÂp/òÊùyí2oÔ[õN½W\ü£eO>9ü³úbدêyâ»úAòŸ–ûYøoÿÞjýQ ƒéà:„ÈCêP:´6ûÃè°:ÁÃëˆèÐH„‰¬£è¨:šŽîr1œßcý±ÈÛbë8¤‰«ã‘<¾åžî¯¦êD:±N¢“ºr`škAd#µÒšà¨=d’Éš\§0\JKî©tj†pi-ýé,<½Î@šŒ–þLþ= Òʬ³è¬:›Î®sèœ:—έóxÉ«óéüº€.èʧ.¬‹™ÕÅtq]Â0%u)]Z—Ñeu9]^WÐu%oOe]EWÕÕtu]C×Ôµtm]ÇËëêzº¾n êFº±n¢›êf^Þ\·Ð-u+ãþÖºn«Ûéö.ÓAwÔtg£¿‹îJn\7Ýä=tO’÷òïm VoÝG÷Õýt=@Ôƒô`=Ä;á¡z˜®Gè‘®yÒ£õ"ƒ±zœ¯'f¢žä°ÉŸ¢§êiÄ=Óõ =SÏ2ÌlKîsô\=OÏ× \~¡¥‘^Lš%z)É—éå$_áßÃ@­•z•^­×èµz^¯7èz“w›õ½UoÓÛ]óÞ¡wê]D»õ½Wï3Ì~}Àa ~HÖGôQƒÓÇõ }RŸÒ§õ}VŸÓç½=,¹_Ô—ôe}E_uùkúº¾¡o§néÛäMwô]’ßÓ÷IþÀ¿‡Zõ#ýX?ÑOõ3ý\¿Ð/õ+ï„_ë7ú­~§ß»æýAÔŸˆ >ë/ú«þf˜ïú‡þ©éßú †Á1þÅCb( aÐÝÃaxŒ`ðˆ #cƒGÅhc`L—‰etþ]±1iâb<’ÇÇ$Oh¹ß_ÿ[%ÂĘ“"CŽ%*ÔÞ #z0&Ç®y§ÄT˜šÈ ¦Åt˜Þ00#fÂ̘³pÙ0;æÀœ˜ scÌ‹ù0¿×À‚X c×ME±™|q,%±”áJc²¿,–#yyÿ^iUÀŠX +c¬ŠÕ°:ÖÀšÞDjam¬ƒu±ž+ŸúØ™5ÂÆØ›¦™Cšý-°%¶ÂÖØÛb;l°£·«“óÚÙùéâ:ÓÕ²'ݰ;öÀž†í…½É}°/Éûù÷0H«?À8ãŠÃp8Žð&2Gáhƒc]ùŒÃñ8Èl"NÂÉ8Å0SqNÇ8gp³qÎÅyFÿ|\@nÄB\DòÅ–ýY‚KI³ —“|…ƒ´Vâ*\kp-®Ãõ¸7â&o"›q nÅm¸Ý•Ï܉»ˆÌvãÜ‹û ³ß!ˆþƒxãõìÃ1 ?ná'ð$iNái’ŸñïaÖY<‡çñ^ÄKx¯àU¼æMä:ÞÀ›x o»ò¹ƒwñ‘Ù}|€ñ‘aã|ŠÏð9¾À—ø _ãoÏ[|‡ïñ~ÄOø¿øÎ}ÅoøàO×M¿ð7þAð¸ïæ î á iðPžÐû«ÂxÂ’<IýõOUxOODO$OdOOTO4OtO o"1=±<±=qŸò:¯ù ?€‚P C( Å 8”€’P J7–²Îk9( "T‚ÊPªB5¨ntÖ€šÎk-¨ u .ÔƒúÐúl#hì¼6¦Ð šC hé3­ 5´¶Þ÷í =t€ŽÐ :Cè Ý ;ô€žÐ zCè ý ? €0à Ã`8Œ€‘–”FÁhc½ïÇÁx˜aL†)0¦Át˜3ă90—ÀGøŸá |…oð~ÀOøõÖÌ1ʲlY£^eÛ¶mÛ¶mÛ¶mÛ¶mÛ¶í{߸£ëuæÉS•UÝñïìøæŒXkï?92À·ßÿûÑ 0(x¹òŸ”ƒ€È‚@PÁ!„„PÂ@Xá!D„H¿1%2D¨Íb@Lˆ±!Ä…x@BHäOkbHI!™trH)!¤†4ÒAzÈàO[FÈ™!‹tVÈÙ!ä„\ò@^/®| @AÝBPŠ@Q(Å¡”„RPÊ@Y(å¡TüÉV• 2Tª>Õ :Ô€šP jC¨ õ >4€†ÐÈOOchM¡™^sh-¡´†6ÐÚA{èà£ß:AgèòãYWèÝ¡‡LO轡ô…~ÐÀ@ä£?øÇ¯!0†ÁpíFÀH£a Œ…q0&ÀD˜“a L…i0fÀL˜³aÌ…y0ÀBX‹ÿàkö«–ÀRXË=l+`%¬‚Õ°ÖÂ:X`#l‚Ͱ¶Â6Ø;`'ì‚ÝÿÂ{`/ìƒý¦pÁa8Gá‡pNÁi8gᜇ p.Áå¸Á¸ ×ງåÜ„[pîÀ]¸÷á<„GðžÀSxÏÿpê x ¯àµýÞÂ;xà#|‚Ïð¾Â7øþ§gC@DBß Ä@ƒ`P †Á=r¿®Cah2 †Åp#`DŒ„‘1 FÅhý&ÄÀ˜ c{q0.ÆÃø˜b"LŒI0)&Ãä0!¦ÄT˜ÚƒLƒi1¦Ç ˜3afÌ‚YÿÀž ³cÌéAæÂܘób>̰ ÂÂX‹þÁ„bXK`I²–Æ2XËay¬€±VÆ*X«au¬5ý1©ÖÆ:X×#Yëclˆ°16Á¦Ø ›c‹_úZb+lmÜð ÂÃxâ1<Ž'ðäOÏv Oã<ë‘9‡çñ^ÄK~Зñ ^Åkëxoâ-¼wð.ÞÃûøàGæ!>ò‘ŒOð)>óp<Çø_ák|ƒoñÝþ{üà#û?ágüâÁÅoøý¿!1 ýÕQú{ÎÈQ@ D)¥`äÛóW§’BQh Ca)…§‘"QdŠBQ)E§“bQlŠCq)ŧ”QbJBI)%§”’RQjJCi)¥§ ”‘2QfÊBY)e§”“rQnÊCy)Ÿ×=þ½ÊO¨ ¢ÂT„ŠR1¯‹S *I¥¨4•¡²TŽÊSªH•¨2U¡ªTªS ªIµþáÆµ©Õ¥zTŸPCjäÕÖ˜šPSjFÍ©µ¤VÔšÚP[jGí©u¤NÔ™ºPWêFÝ©õ¤^Ô›úP_êGýi ¤Aÿ⽦!4”†ÑpA#i”WóhCci§ 4‘&ÑdšBSiM§4“fÑlšCsiÞ?Ül>- …´ˆÓZJË¼Ú–Ó ZI«h5­¡µ´ŽÖÓÚH›h3m¡­´¶ÓÚI»h7í¡½´öÓ:H‡è0¡£tì_ý.Ó :I§è4¡³tΫû<] ‹t‰.ÓºJ×è:Ý ›t‹nÿÑ6wè.Ý£ûô€Ò#zìÕñ„žÒ3zN/è%½¢×ô†ÞÒ;zOè#}¢Ïô…¾Ò7úþç7ÂÀÈÄÌÂÊÆÞbŽr ÌA8(ãà‚Cr(Ía8,‡ãð#zeýS‘82Gᨣs ŽéÕ‹csŽËñ8>'à„œˆsNÊÉ89§à”œŠSsNËé8=gàŒÿh§2qfÎÂY9gçœÓ«-çæ<œ—óq~.À¹æ"\”‹qñ?Ø —äR\šËpY.Çå½*pE®Ä•¹ Wåj\kpM®Åµ¹×åz\ŸpÃpþFܘ›pSnÆÍ¹·ôjjÅ­¹ ·åvÜž;pGîĹ wånÜ{pÏßÜ ÷æ>Ü—ûqÀ½Òƒx0á¡<Œ‡óÉ£x4á±<ŽÇóžÈ“x2Oá©ÿàüÓx:Ïà™<‹góžëÕ4çó^È‹x1/᥼Œ—óŠßœ»’Wñj^Ãky¯ç ^鼉7óÞÊÛx;ï་wÿÖ¬=¼—÷ñ~>ÀùöÊá£|Œó >ɧø4Ÿá³|ŽÏó¾øÛwz‰/ó¾Ê×ø:ßà›^ù[|›ïð]¾Ç÷ù?äGü˜ŸðS~ÆÏù¿äWþ˜üšßð[~ÇïùäO^‰Ïü…¿ò7þÎ…„EDÅÄI@ùÕ”@X‚HP &Á%„„ôš%¡%Œ„•p^"HD‰$‘%ŠD•h]bHL‰%±%ŽÄ•x_HBI$‰%‰$•d’\RHÊ_îá³RIjI#i%¤— ’Ñ+I2KÉ*Ù$»äœ’KrKÉ+ù$¿‚RH K)ê鍸”’RJJK)ë•('奂T”JRYªHU©&Õ¥†Ô”ZR[êH]©'õ¥4”FÒXšHSi&Íëì-¤¥´’ÖÒFÚJ;iï•í ¥“t–.ÒUºIwé!=¥—ô–>Ò÷—óúI e –!2Ôk~˜ —2RFÉh#ceœŒ— 2Q&Éd™"SešL—2SfÉl™#sežÌ÷çYÈBY$‹e‰,•e²Ü+µBVÊ*Y-kd­¬“õ~æ6ÈFÙ$›e‹l•m²Ý«k‡ì”]²[öÈ^Ù'û倔CrXŽÈQ9&Ç儜”SrÚFÎÊ99ïËyA.Ê%¹,Wäª\“ë^'Þ›rKn˹+÷ä¾<‡òHËyúƒy&Ï}ñ/䥼’×òFÞÊ;yïÕþA>Ê'ù,_ä«|“ï@AQÿ×#õ™eU5uPi`õ´ý¯‚hP ¦Á5„†ÔPZÃhX §á5‚FÔHY£üŒêËM£k Ïbj,­q4®ÆÓøš@j"M¬I4©×ùU2M®)|¤Rj*M­i4­¦ÓôšA3j¦_Z2kÍê#•M³kÍ©¹4·æÑ¼šOók-¨…~é*¬E´¨T1-®%´¤–ÒÒZFËj9-ÿKK­¨•|¤*k­ªÕ´ºÖКZËÃP[ëh]Oëi}m  µ‘6Ö&ù¦ÚL›ÿxÚB[j+m­m´­¶ÓöÚA;j'í¬]~ºiWí¦Ý$zhOí¥½µöÕ~Ú_è@zÖ!:T‡ép_½:RGéh£cuœŽ× :Q'éd¢SušN×:Sgél£sužÎ×ºð—·øÿµHë]ªËt¹/j…®ÔUºZ×èZ]§ëuƒnÔMºY·èVݦÛu‡îü9»t·îѽºO÷û¢èA=¤‡õˆÕcz\OèI=¥§ýí>£gõœž× zÑsI/뽪×ôºÞЛzKoë½ëoó=½¯ô¡>ÒǾ˜'úTŸés}¡/õ•¾Ö7úVßé{ý õ“ŸþÏúE¿ê7ýþÿ÷Q`hdlbjfž¤³€È[^P fÁ-„…´PÚÂXX gá-‚E´HÙ¢XT‹fÑ-†Å´XÛ³ßÇâZ<‹o <ˆ„–È[KjÉ,¹¥°”–ÊR[Kû w:Ko,£eòÈe¶,–Õ²YvËa9-—å¶<–×òY~+à} Z!+lE¬¨G¶˜·VÒJYi+ce­ÜOmå­‚U´JVÙ#UŪZ5«n5¬¦Õ²ÚVÇêZ=«o ¬¡5²ÆÖÄšZ3kn-¬¥µò÷ ·¶6ÖÖÚY{¢ƒu´NÖÙºXWëfÝ­‡õ´^ÖÛúüÂÝ×úY`=rƒl° ±¡6̆Ûi£l´±±6ÎÆûcß 6Ñ&Ùd›â‘jÓlºÍ°™6ËfÛ›ûSÛ<›o l¡-òH-¶%¶Ô–Ùr[a+m•­¶5¶ÖÖÙzÛà§q£m²Í¶Å¶zt·ÙvÛa;m—í¶=¶×öÙ~;`ý´²ÃvÄŽÚ1?ºÇí„´SvÚÎØY;gçí‚]´KvÙ®ØU»f×í†Ý´[vÛîØ]¿ó¿×=»oì¡=òƒ~lOì©=³çöÂ^Ú+{moì­½³÷¿1éƒ}´OöÙ¾øÁ|µoöÝ8pèȱ§Îœs] ØqAÝïž&˜ îB¸.”dhÆ…uá\xÁEt‘\dÅEuÑ\ôߘÃÅt±\lÇ&®‹çâ».¡Kä»$.©Kæ’».¥KåR»4.íož&Kï2¸Œ.“\f—ÅeuÙ\v—Ãåt¹\n—Çåõ·?ŸËï ¸‚®DaWÄuÅ\qW•t¥\iWÆ•uå\yWÁUt•\eWÅUýí÷ @5WÝÕp5]-?ØÚ®Ž«ëê¹ú®kè¹Æ®‰kêïÍ\s×µt­ü Z»6®­kçÚ»®£ëä:».®«ë溻?ñ÷t½\o×Çõõ#ÓÏõwÜ@7È vCÜP7Ì w#ÜH7ê'¾ÑnŒëƹñ~d&¸‰n’›ì¦¸©nšýén†›éf¹Ù~ô渹nž›ï¸…~t¹Ån‰[ê–ùê-w+ÜJ·Ê­vkÜZ·Î­wÜF·Émv[ÜV·Ímw;ÜN·Ëív{Ü^¿…}n¿;àºC¾ˆÃîˆ;ꎹãî„;éN¹ÓîŒ;ëιóî‚»è.¹ËêÏ)×ÜuwÃÝt·|åo»;î®»çî»î¡{ä»'î©{æžûÃû½t¯ÜÈ;çÀH’ÿa§ÝåªîÎÚ¶mÛ¶mÛ¶mÛ¸µmÛæyÍßer{ÑLV“ì~ß·ž¿¶?¨šžÉl2Ó]Ïßæ³`¹ÏÍæKó•ùÚ|c¾5ß™ïÍæÇÏ÷Tô°t`@`8ÀDA$DQûÖžF4Ä1A¬`u±AÄñA$‰A$ÉA ¤©¿bž4 -HÒƒ Áj2‚L 3Ȳ‚l ;Èr‚\ 7Èò~Qï| ?( ‚BÁ² ƒ" ((Šƒ $(Jƒ2 ,(ÊQ×  "¨*ƒ*Á²«‚j :¨j‚Z 6¨ê‚z >h‚F ±ÛÎM@SÐ 4-‚E[‚V 5hÚ‚v =è:‚N 3èâ¶GWÐ t=@Ï`Ñ^ 7èú‚~ ?‚A`0†‚a`8F†òHGÑ`  ÆË&€‰`˜ ¦€©`š›ÓÁ 0̳Á0ÌóÁ‚PæYÅ` X –å`X VÕ` X Öõà°l›Àf°lÛÀv°ì»Àn°ìûÀ~p‡ÀapÇÀqpœ§ÀipœýÊW¸çqœÀEp \WÀUp \¥÷ pÜ·ÁpÜ÷Áð<Áðü ~¿ƒ?ÀŸà/ð7xžƒà%xõ+} Þ€·àx>€ÀJP†ž³¨B êЀ&B1$B9Ђ6t /Œ#ÂH¡t mD†Q`T F‡1`L ƆqBéƃña˜&‚‰a˜&ƒÉa ˜¦‚©¿zi`Z˜¦‡`F˜ f†Y`ÖPzdƒÙa˜悹a˜æƒùaX‚…aXƒÅa X–‚¥aX–ƒå¿éœT€a%XVUa5XÖ€5CéS Ö†u`]XÖ‡ `CØ6†M`SØ 6‡-`Ë/\A+ضma;Øv€a'Ø9”Ê.°+ì»Ã°'ì{Ã>°/ìûÃp Ã!p(‡Ãpä7œQp4ÇÂqp<œ'ÂIpr(]¦À©pœgÀ™pœ çÀ¹pœÿÅó.€ á"¸.Ká2¸®€+C©]WÃ5p-\×Ã_à¸n‚›á¸nƒÛá¸î‚»á¸îƒûáx‚‡áxƒÇá xžúÆŸ“Àã4<ÏÂsð<¼/ÂKð2¼J׫ð¼oÀ›ð¼ ïÀ»ð¼À‡ð| ŸÀ§ðWøüþÿ„Á¿á3ø¾€/¿k¯àkø¾…ïà{ø~„>HBž³e¤ iHG2@!„A1ÄC©s?²ä‹" ˆ(ŠŒ¢„Ò#*І¢£(&Š…b£8(.Їâ£(!J„£$()J†’£(%JõÕ+ñ©Q”¥CéQ”eB™Q–P:eEÙPv”åD¹Pn”åEùP~TD…PaTä+×PCÅQ T•B¥QT• ¥CyTUD•PeTUEÕPuTÕDµPmTÕEõP}Ôà«æoˆ¡Æ¨ jŠš¡æ¨j‰Z…RßµAmQ;Ôu@Q'ÔuA]Q7Ôõ@=¿jÞ^¨7êƒú¢~¨?€¢Ahp(õCÐP4 G#ÐH4 FcÐX4GÐD4 MFS¾òœOEÓÐt4ÍD³Ðl4ÍEóBé0-@ Ñ"´-AKÑ2´­@+Ñ*´­AkÑ:´ý‚6 hÚŒ¶ ­hÚŽv|ÁŠv¢]h7Úƒö¢}h?:€¢C¡TFGÐQt G'ÐIt FgÐYtGÐEt ]FWÐUt ]G7>;÷Mt ÝFwÐ]tÝGÐCô(”šÇè zŠ~E¿¡ßÑèOôú=CÏ=T¼@/Ñ+ô½AoÑ;ô}@C[–°Œ¬b ëØÀîRL ‡aŒ ¦˜a޶°í¶ÊÇÇÁ¾"pD GÆQpT GÇ1pLu±pì@‘88.އãã8!N„ã$8©‡ºd8ù‘8%N…Sÿûï48-N‡ÓÿÍ€3âL83΂³âl8;Îsâ\8·Û¾yp^œçÿ7VÄ…pa\ÅÅpñ–À%q© Õ¥q\—Ãåq\W•q\WÃÕ=¬Ýǧ®‰k‰ÖÆup]\×Ç pCÜ7ÆMpSÜ 7÷Ø£n‰[‰¶Æmp[Ü·ÇpGÜ wÆ]pWÜ w÷Ø£î‰{‰öÆ}p_Ü÷Çð@<ÆCðP< ÷Øc‰G‰ŽÆcðX<ÇðD< OÆSðT< O÷Øcž‰g‰ÎÆsð\<ÏÇ ðB¼/ÆKðR¼ /÷Øc^‰WŠ®ÆkðZ¼¯Ç¿à ÿ߈7áÍAzlÁ[ñ6¼ïÀ;ñ.¼ïÁ{ñ>¼ð8“ß8ˆáÃA2Žà£ø>ŽOà“ø>Ïà³ø>/„Úç"¾„/ɸ‚¯âkø:¾oâ[ø6¾ƒïâ{¡ö¸à‡A2áÇø ~ŠÅ¿áßñøOüþ;ÔÏðsü⿌—ø~ßà·ø~ÿßÑø£ß-™ÿ‰ÈD!*Ñþ;¢ƒ˜Hñ 20!„F8Ä"6qˆ/‰@"’H$2‰B¢’h$:‰Ab« >b‘Ø$‰Kâ‘øÁ2„$IL’¤$INR”$IMÒ„Ú1-IGÒ“ $#É,/3ÉB²’l$;ÉAr’\$7ÉCò’|$?)@ ’B¤0)BŠ’b¡v/NJ’¤)MÊË+KÊ‘ò¤©H*‘ʤ ©Jª‘ê¤F(Ýj’Z¤6©Cê’z²ê“¤!iD“&¤)iFš“¤%iEZ“6²Ú’v¤=é@:’NŽv&]HWÒt'=HÏÿŽ÷"½IÒ7ÄJú‘þdH‘ÁdJ†‘ádéqÅ£Èh2†Œ GÆ“ d"™D&“)d*™F¦{ì1ƒÌ$³Èìñ9d.™Gæ“d!YD“%d©ÇËÈr²‚¬ _EV“5d-YGÖ“_Ȳ‘l"›É}¶’md;Ù"¾“ì"»É²—ì#ûÉr"‡É}Ž’cä89"~’œ"§Ér–œ#çÉr‘\òØã2¹B®’kAâ×É r“Ü"·Ér—Ü#÷Éò<"Éò”üJ~#¿“?ÈŸŸùùú‹üMž‘çäyI^‘×!²ß·äyO>ćJT¦ U©FujP“ )¢˜J)£œ úlµ©C}i‘F¢‘CdG¡Qi4Æ 1i,›Æ¡qi<Ÿ&  =vNDÓ$4)MF“»ÍIASÒT45MCÓÒt4=Í@3ÒL43ÍB³Òl4;ÍAsÒ\4w¨+ÏCóÒ|4?-@ ºÍ+D Ó"´(-F‹Ó´$-EKÓ2´,-ç±kyZV¤•heZÅmNUZV§5hMZ‹Ö¦uh]ZÖ§ hCÑÆ´ mJ›ÑænsZЖ´mMÛж´mO;ÐŽ´íL»Ð®´íN{О´íêyèCûÒ~´?@ºÍDÓ!t(F‡Ót$EGÓ1t,GÇÓ t"D'Ó)tj¨sL£Óé :“΢³ÝæÍ¡sé<:Ÿ.  é"º˜.¡Ké2ºœ®ðØu%]EWÓ5t-]ç6g=ý…n é&º™n¡[é6ºî ;é.º›î¡{é>ºŸ ?óÚö‡èaz„¥Çèq·ù'èIzŠž¦gèYzŽž§èEz‰^¦WèUzí³3\§7èMz‹Þ¦wÜæÞ¥÷è}ú€>¤ècú„>¥¿Òßèïôú'ýë Öÿ7}FŸÓô%}å6û5}CßÒwô=ý@?R&1™)LeÓÙç»Ìd€A†v“MeŒq&˜Ålæ0_Ed‘Xd…EeÑXtƒÅd±Xl‡ÅeñX|–à æô Y"–˜%aIY27ÉY –’¥b©Y––¥céY–‘eb™Y–•eûÌÙY–“åb¹Y7™yY>–Ÿ`Y!V˜aEY1Vœ•`%Y)Vš•aeY9VžU`Y%V™UaUYµ/|LÕY V“ÕbµY7uY=VŸ5` Y#Ö˜5aMY3Öœµ`-Y+ÖšµùÌmY;Öžu`Y'Ö™ua]Y7Öõµª'ëÅz³>¬/ëÇú³l ij!l(Ɔ³l$ÅF³1l,ÇÆ³ l"›Ä&³)l*›Æ¦³l&›Åf³9l.›Çæ³_xÆB¶ˆ-fKØR¶Œ-g+ØJ¶Š­fkBí³–­cëÙ/lÛÈ6±Íl Ûʶ±ílÛÉv±ÝlÛËö±ýì;øEë9ij#ì(;ÆŽ³ì$;ÅN³3ìl¨µçØyv]d—Øev…]eרuvƒÝd·Ømv‡Ýe÷Ø}ö€=dØã/ZÃö”ýÊ~c¿³?ØŸì/ö7{Æž³¡Ö¾d¯Økö†½eïØ{ö}d>\â2W¸Ê5®sƒ›pÈÇüKÖ@8å,H&ç‚[Üæ÷åxD‰GæQÜôŠÊ£ñèAŽÇà1y,›Çáqy<?H,OÈ9’˜'áIy2žœ§à)y*ž:H4 OËÓ9’žgày&ž9ÄZ²ð¬<[£Ùyž“çâ¹yž—ç ËÏ ð‚¼/Ì‹„èT”ãÅy ^’—â¥y^–—ãåy^‘Wâ•y^•WãÕy ^“×úìÙ­Íë𺼯τÈmÈñƼ oÊ›ñæ¼oÉ[…Ò¯5oÃÛòv¼=ï"«#ïÄ;ó.¼+ïÆ»ó¼'ïÅ{ó>¼/ïÇûónºäƒø`>„åÃBD‡ó|$ÅGó1|lè8>žOàù$>9DÕ>•OãÓù >“Ïâ³ù>—Ïãóù‚™ ù"¾˜/áKù²±å|_ÉWñÕ| _ëfÝëøzþ ßÀ7òM!¢›ù¾•oãÛù¾“ï⻃eìá{ù>¾ŸpÓ÷ ?Äó#ü(?Æóü$?ÅOó3ü,?ÇÏ{|V.ð‹ü¿Ì¯¸É¸Ê¯ñëü¿ÉoñÛü¿ËïñûüÈñÇ;>áOù¯ü7þ»›Œ?øŸü/þ7ÆŸóü%Å_ó7ÁòÞòwü=ÿÀ?º›AHBŠP…&taS X²” &¸Â¶p„¯ˆ "ŠH"²ˆ,7ªˆ&¢‹"¦›±DlGÄñD|‘ D<¡H$‹$"©›Êd"¹H!RŠT"µH"žV¤éE‘ÑMe&‘YdYE6‘]ä9E.‘[äyƒeæùEQP Ñ¡°("ŠŠb¢¸(!JŠR¢´(#ÊŠr¢¼¨ *º™ÏT•EQUT ‘Q]Ô5E-Q[ÔuE=Q_4 E£`yEÑT4ÍCÔ·-E+ÑZ´mE;Ñ^tE'ÑYt]Ý®¦›è.zˆž¢WˆhoÑGôýD1@ ƒÄ`1D õðˆ†‰áb„)F…ˆcÄX1NŒÄD1IL–1ELÓÄt1#DåL1KÌsÄ\1OÌ] ŠEb±X"–Šeb¹X!Vz<Ó«Äj±F¬ëÄzñ‹Ø 6ŠMb³Ø"¶Šmb»Ø!vŠ]b·Ø#öŠ}b¿8 ŠCâ°8"ŽŠc{ÇÅ qRœ§ÅqVœçŵÅ%qY\WÅ5q]Ü7Å­Pç¹-➸/ˆ‡â‘x,žxÌ*~¿‰ßÅâOñ—ø[<ÏÅ ñR¼¯ÅñV¼û‚Gô^|…%Y²¥Xª¥Yºå)×°L XÐB¶ˆE-fqKX–e[ŽåkE°"Z‘<ÖŒÈV+ªÍŠnŰbZ±¬ØVUq­xV|+•ÐJd%¶’XI­dVr+…•ÒJe¥¶ÒXi­tVz+ƒ•ÑC‡LVf+‹•ÕÊfe·rX9­\Vnså±òZù¬üV« UÈ*l±ŠZŬâV «¤UÊmUi«ŒUÖ*g•·*X­JVe«ŠÇîU­jVu«†UÓªeÕ¶êXu­zV}«Aˆü†V#«±ÕÄjj5³š[-¬–V+=[[m¬¶V;«½ÕÁê,«“ÕÙêbuµºYÝ­VO«—ÕÛcŸ>V_«ŸÕß` ´Yƒ­!ÖPk˜5Üa´FY£­1ÖXkœ5Þš`M´&…ò O¶¦XS­iÖtk†5ÓšeͶæxÌžkͳæ[ ¬…Ö"kñ¼j†ù³(ß„úUhŸAÿjŒ/Æ àf ïä» ßûBøE„)–×±½Šóøz•ßMD/黈üSå‡õ‡-\‰.Äsb†9±ÂœØaJœ0'n˜Ï«Ä÷* ÂŒ„aB"¯ø»IâU’~ɼ@òï$Åw’òÿ[RýT¤þŸ#ÍOEÚÿAÒýÒÿ$døIÈøS’é‡ù§ Ë!ëOC¶p${¸‘ã3É.äþ)ÉîäýIÈäÿáð"ÃBaJá0 H8PÔ‹ó ŽH ¯Pò«)õ•”öe¾š²?ˆráDù0£B˜QÑ‹Túf*‡3U¼NÕ0¢š—¨ÎÔð:5ÈZ^¢¶×¨ãêþPê…1õÕaLÃp¤Q˜ÑøÐ$Ìhêušy™æßA‹o¦e¸Ò*h´ñ*míÂöaB‡0¡£×èä:{.ßL×ÿçèö“Òý'£Ç¤çOI¯@>áJßÿAúýôôÿ øÉøôCüƒòCúS0ì‡1< áuF~#£¾‘ÑßÈŒýÆ}ã½À/0Ñ Lò“½À/0õ‹˜æ%¦{‰^`¦˜õÌþ s˜¹^f^˜2ß‹,ø~‹¼Äb/°Ä ,õ˼Är/°"ÌX®¬ V‡k¼ÎZ¯³.Xüâu6„#ÔMaÌæ0eËbk²í±= Ùñ?ÈΟ€]?»ö|3{¿Š}_Éþ¯àÀWq0œ8ä5{•#ßÄQ¯pì;8þœð:'½Î©ïäôwpÆ œýfÎ}3ç¿› ^æâwrÉk\ö W¾™«ßÀµŸŒëaÈpæf¸s+¹¦Ü îz‰{?€û^âsûÊ®=5×Î|¦k;ìÚ5޹vX³\;ùºöèòÛ%ËoO¦˜®ýyâ¸ö¢‰ïÚ›%‘k¿]DüîAÏâºï7»ëžÕ\®;*óºîb*íº[§œëοû:ü®ç¯åº2½®ëÚë®ëˆ»®’õ»Õïê¸Î®+Áº¹® êéº*¥ë›Ì®ïÛF»¾ëòû>Êï»é®ïf¹>…_èúv‰ë³Â•®OÅÖ¸>Zïúüc£ëoû-®¿W·»þZÚåú=}¯ë·b¿ß_Ϻþç»àzw¾êz—ºáúi»ízUù=;|ú<òyæóÜç…ÏKŸ7>o}Þù¼÷ùàóñŸ“*I²¤Hª¤IºdH¦$&qIH–ä+E"J‘¤ÈR)ªMŠ.ÅbJ±¤ØR)®OJ!¥”RI©¥tRz)ƒ”QÊ$e–²HY¥lRv)‡”S*$–ŠHE¥RI©”TZ*#••ÊIå¥ RE©šT]ª!Õ”H ¥FRc©‰ÔTj&5—ZH-¥VRk©ÔVj'µ—:H¥NRg©‹ÔUê&u—zH=¥^Roiª4Mš.ÍæK ¤…Ò"i±´DZ*-“–K+¤•Ò*iµ´FZ+­“KG¤£Ò1é¬tN:/].J—¤ËÒéªtMº.Ýþ–žIÏ¥Ò{éƒôñŸ˜$˲"«²&ër9ªMŽ.Ç“ãË ä„r"9±œDN*'“3É™å,rV9œWÎ'ç— ÈåBra¹ˆ\T.&—KÈ%åRri¹¦\K®-בËMä¦r3¹¹ÜBn)·’[Ëmä¶r;¹½ÜKî-÷‘ûÊCä¡ò0y¸%Ÿ–ÏÈgåsòyù‚|Q¾$_–¯ÈWåkòuù†|S¾%ß–ïÈwå{ò}ùüPÆ Q¨Â”HJd%ŠU‰¦DWb(1•XJl%ŽW‰§ÄW( •DJb%‰’T)®”PJ*¥”ÊJ¥ªRM©®ÔPj*µ”ÚJ¥®RO©¯4P*”ÆJ¥©ÒL¦ WF(#•IÊdeŠ2U™¦LWf(3•YÊleŽ2W™§ÌW( •=Ê^eŸ²_9¡œTN)§•3ÊYåœr^¹ \T.)—•ÊKå•òúŸ'GQUUSuÕPM¨PE*V‰šPM¤&V“¨iÕtjz5ƒšQͤfV³¨YÕljv5‡ZI­¬VQ«ªõÔújµ¡ÚHm¬6Q›ªÍÔæj µ¥:X¢U‡©ãÕ êDu’:Y¢NU§©ÓÕêFu“ºYÝ¢îU÷©ûÕêAõzX=¢U©ÇÕê#õ±úD}ª>W_¨/ÕWêkõúV}§¾W?¨ÿyÃ’4YS4U‹ EÔ"i‘µ8Z\-ž_K %Ôi‰µ$ZR-™–]Ë¡åÔri…µ"ZQ­˜V\+¡•ÔJi¥µ2ZY­œVO«¯5Ðj­´ÖZ­­ÖNk¯uÐ:j´ÎZ­«ÖMë®õÐzj£µ1ÚXmœ6]›¡ÍÔfi³µ9Ú\mž6_[ -Ôi‹µ%ÚVm›¶]Û¡Ôi‡µ#ÚQí˜v\;¡ÔNi7´›Ú-í¶öD{ªýªý¦ý®ý¡ý©ýõÏÛ®¤Ëº¢cèTg:×…né¶îè¾z=¢IO¨'ÒëIô´z:=½žAϨçÖóèyõ|zq½„^R/¥—ÖËèeõrzy½‚^U¯¦×ÕëéõõzK½•ÞZo£·ÕÛéíõzW½›ÞWï§÷×è#õQúh}Œ>V§×'èõiú\}ž>__ /Ôé‹õ%ú}£¾I߬oÑ·êÛôíú}§¾Kß­ïÑ÷êûôýúý ~H?¬ÑêÇôãú ý¤~J?­ŸÑÏêçôóúý¢~I¿¬_ѯê×ôëú ý¦~K¿­ßÑïê÷ôûúý¡þH¬?ÑŸê¿ê¿é±ŒØF#®ψo$0éŒôF#£‘ÉÈld1²ÙŒìF#§‘ËÈmä1òùŒüF£ ÑÐhd46šMfFs£…ÑÕèft7z=^Fo£Ñ×ègô7AÆ`cˆ1Ôf 7F#QÆhcŒ1ÖgŒ7&IÆdcбӨeì6ö{}Æ~ã€qÖ8gœ7.KÆeãŠqÕ¸f\7n7[ÆmãŽq׸gÜ7†išÀ„&2±ILjF5£™ÑÍfL3–ÛŒcÆ5ã™ñÍfB3‘™ØLb&5“™ÉÍfJ3•™ÚLc¦5Ó™éÍ fF3“™ÙÌbÖ6ë˜uÍzf}³ÙÐld¶7;˜ÍNfg³‹ÙÕìfv7{˜=Í^fosš9ÝœaÎ4g™³Í9æ\s•¹Ú\c®5×™ëÍ_Ì æFs“¹ÙÜbn5·™ÛÍæNs—¹ÛÜcÞ4o™·Í;æ]óžyß|`>3Ÿ›/Ì—æ+óµùÆ|k¾3ß›̦€   ÄñA$‰Ad™AdÙAä¹AäùAP…APÅA P´­@kдí@{Ð!›ý¨ù/ñÅw²ûYÔCs¥·•©KÜßá`çvïÚö7^˜¬Ý{©?™¢?ù =yŸýÜÍÁ Êî}ÈÍÆþvâß°{{ð'#p€××ßÕëɼëÎ¥ëΘûÉpûÉcØWëÎGûÉ:ûuÄÚØÏëêÎæêçmugkMö¯A5ÀÔˆêo>ýd; n* °ú[E=›Dý¡~–P?»§¿ÕÓßäy5q·i~²aú/ƒš.ý —þfK?‹¥Ÿ·2¸©Òeò“IÒÏÜÔñøÉäØ «ÑßÐèç]ôäYô÷)Nrùçüë<üä6 ì2ôwž !}‚þ.Àà†¿£Ÿ¿±ÏÏÃÜ»çïÊ êÇËó¯ß® ì®ó÷Ò}òÎ…tÌù»âÜùà>9Þü|nŸ nMmŸ³²}r¦ù9Ñ<ÏûÌÛÅ<ùÄü|_ŸŒ^žŒ]Zî,Y&¬ÀÖ« ž«KÕçÍS­RF¨ v§À'ÌýýKÜåXò7*·(%p9üGÝEþ®¢QpŸP`kPHKP€Ï'°¯'°Ÿgy ŸŽg?Î—ÓÆß]`¦ùä¢!â“=&ŠðõÁ$iÄ'K€¥%ÀËâçañw®ø¹U›S\)žÜ(v’O¶‘†‘?H`ˇ;›Çm—iÃߣáÙŽ`®i¤nžðCøÙ‚Zü¼^† ®… N…%ÖRk™µÜZa´Y‡­#ÖQë¼uÁºh]².[W¬«Ö5ëºuúi=·^X/­WÖkK±U[³uÛ°MØÐF6¶‰Mmfs;†ÓŽeǶãØÉìäv ;¥ÊNm§±ÓÚéìôv;£É.`´ Ù…í"v9»¼]Á®hW²+ÛUìzv}»ÝÐnd·±ÛÚíìöv»£ÝÛîc÷µûÙýíáö{¤=Êm±ÇÚãìñö{¢=ÉžlO±§ÚÓìéö {¦=ËžmϱçÚíMöf{‹½ÕÞkï³÷Ûìƒö!û°}Ä>j³Û'ì“ö)û´}Æ>kŸ³ÏÛí'öSûWû7û…ýÒ~e¿¶ßØoíwö{ûƒýÑöq$GvÇ׉àDt"9±œØN'®ωï$p:‰œÄN'«“ÍÉîäpr:BNa§ˆSÔ)æwJ8%RNi§ŒSÖ)ç”w*8JNe§ŠSÕ©æTwÚ;œŽN'§³ÓÛéãôuú9ýÎ@g3Øâ u†9ÃÎHg”3ÚYè,r;Kœ¥ÎZg³ÞùÅÙàlt69›-ÎVg›³ÝÙáœvÎ8gsÎyçºsùéÜrn;wœ»Î=ç¾óÀyèœ>‚K£ÇÓGÒè£è£écèÐÇÒÇÑÇÓ'Ð'Ò'Ñ'ӧЧҧѧӓèÉôz*=¾‰¾™¾…¾•¾~„~”~Œ~œ~‚~’~Š~š~†~–~Ž~ž~~‘žN¿C¿K/¤Ñ‹é%ôRz½œ^ABJFNAIEMCKGOÿ@¯§7ÐéMôfúGú'úgúz ½•þ•þÎgÚ2í˜öL†bh†aX†c¦€éÈtböcög:302]˜®L7¦;Óƒ)dz23‡0‡2‡1C™aÌpf3’ÅËÇÏœÀœÈœÄœÌœÂœÊœÆœÎœÁœÉœÅœÍLdÎaÎeÎcÎg.`.dncngî`îdîbîfîaîeîcîgžežcžg^`^d¦33˜™Ì,f63‡™Ë,d1‹™%ÌRf³œYÁ¬dV1Ÿ1Ÿ3_0_2_1_3ß0ß2ß1ß3?0ë™ ÌFf³™ù‘ù‰ù™ù…ÙÂle~e~c~gþ`¶1Û™ÌNfó'óSÉh¬Î¬ÉZ¬Í:lÛ‘íıÅlo¶„íÖ²}Ù~lÛŸÀdËÙAì`¶‚ÂÄÌÂÊÆe‡±ÃÙìHv{.{{>{{!{{1{ {){;…ÊNcobofoaoeocogï`ïdïbïfïaïeg³sع컀}‰}™}…}•]È.b³KØ¥ì2v9»‚]É®bW³ï±ï³°kصì:öCö#öcöì'ì6v;»ƒÝÉîbÿdÿb+Ù .Àåqù\[®מëÀQÍ1ËqÏ œÈIœÌõäzqE\1×›+áúp¥\_®w7”Æ çFp#¹QÜhn w8w7–ÇçŽä&pGqGsprqs—p—r—q—sWpWr7q7s·p·r·q·swpwrwqws÷p÷r÷q÷sps¸¹Ü·€{‰{™{…{•{[Ä-æ–pK¹eÜrn·’[Å­æÞãÞç>àÖpk¹u܇ÜÏÜ/Ün+÷+÷÷;÷·ÛÎµä³øV|k¾ ŸÍçð¹|ŸÏ·åÛñíù<ÅÓ<ó<Çó¼À‹¼Ä˼«¼Æwç{ð…|O¾_Äó½ù¾0(?”ÆçGð#ùQüh~ 8?–Ççä'ðGñGóÇðùsøsùóøóù ø ù‹ø‹ùKøIüd~ ?•ŸÆßÄßÌßÂßÊ߯ßÎßÁ?Â?Ê?Æ?Î?Á?É?Å?Í?Ã?Ë/à_â_æ_á_å_ã_çßàò‹øüJ~¿šŸÿ€_ïå×ñ_óßðøü&~3ÿ#ÿÿ3ÿ ¿…ßÊWòB¦ÐRÈZ ­…6B¶#ä y‚ ˆ‚&è‚!˜BÐQè$ì'tº Ý„îB¡Pè)ôŠ„b¡·P" *„!ÂAÂaÂPa˜0\!ŒF £…±Â8a¼p¬pœp¼p‚p¢p’p²pŠpªpšpºp†p¦p©p™p¹pp½pƒp£0I˜,L¦ Ó„›„›…[„[…‡„‡…G„§…g„g…ç„ç…„…é a¦0K˜-Ìþ%ü[ø°PX$,–K…eÂra…°RX%¬ÞÞ¾¾¾Ö „Â&a³ð£ð“ð³ð‹°EØ*ü*ü&ÅÛˆÙbŽ˜+æ‰ùb[±Ø^ì R"-2¢)Z¢-î/v»ˆ]Ånb/±H,ËÄþâq X.‹âñ ñ`ññPñHq‚x”x‚x¢x’x²xŠxªxšxºx†x¦x–x¶8Q¼J¼Z¼Fœ,N§ŠÓěěÅ[Ä[ÅÛÄÛÅ;ÄÇÅ'Ä'ÅÄÅéâ q¦8Kœ-ÎçŠóÄùâ[âÛâ;âq©¸L\.®WŠ«Ä5âZqø‰ø©ø™ø¹ø…ø­øø½øƒ¸^Ü n·Š¿Š¿‰¿‹ˆÛÄíâq§¸KüSüK¬3¤€”BRXj!Q-1+q/é’!™’%Ù’#H¥NÒ~ÒþRgé©Tê+õ“ʤþÒé`ééPé0i¨4L.FJ£¤ÑÒépéi¬4N/)MŽ’ÎΔΒΖ&JçH—H—J—I—KWHWJWIWK×H×J×I×KwHwJwIwK÷H÷JKHJIKOHOJOIOKÏHÏJÏIÏK/H³¥9Ò\iž4_Z ½.½!ýSú—ôoé?Ò¥w¥…Ò"i±ôžô¾ô´FZ+­“>”>’>–þ'}"}*m6J›¤ÍÒïÒÒ6i»´CÚ)í’þ”þ’*¥l9GΕódVæd^dQ–dYVdUÖääå.rW¹·\"÷‘Kå¾r?¹Lî/Êåò y¤ù~ùùAù ùIù)ùiùùYù9ùyùùEyºÐÖhkµuÚ‡ÚGÚÇÚzmƒ¶QÛ¤mÖ~Ô~Ò~Ö~Ѷh[µ_µß´ßµ?´mÚvm‡¶SÛ¥ý©ý¥Ujz@ê!=¬·Ð3õ–z–ÞJo­·Ñ³õ=WÏÓóõŽz'}?}½³~€~ ÞEïªwÓ»ë=ôz¹>H¬WèCôƒôƒõCôCõÃô¡ú0}¸>B©ÒGëcôÃõ#ô±úéúú™úYúÙúDýý\ý<ý|ýýBýýF}’>YŸ¢OÕ§é7é7ë·è·ê·é·ëwèwêwéwë÷è÷ê÷é÷ëè3ô™ú,}¶>GŸ«ÏÓçë ô—ô—õWô…ú"}±¾D_ª/Ó—ë+ô•ú*}µþžþ¾þ¾F_«¯Ó?Ô?Ò?Öÿ§¢ÿ¤ÿ¬ÿ¢oÓ·ë;ôú.ýOý/½RÏ0FÐÈ6rŒ\ƒ2hƒ1Xƒ3xC0DÃ0LÃ2ö7:]Œ®F7£»ÑÃ(1ú¥F¹1ÈlTCŒÆHc”1Þ8Ò˜`emcüÃ8Ö8Å8Õ8Í8Ý8Ã8ӸиȸظĸԸ̸ܸ¸ҸʸڸƸָθ޸Á¸Ñ˜dL6¦SiÆCÆÃÆ#Æ£ÆcÆãÆ Æ‹Ætc†1Ó˜eÌ6æsyÆ7·Œ·wŒw•Æ*cµñžñ¾ñ±ÆXk¬3>4>2>6þg|b|j|fü`¬76MÆfãwãc›±ÝØaì4v!3l¶03Í–f–ÙÖlg¶7;˜”I›ŒÉšœÉ›‚)š’i›ŽY`v4;™û™=ÌB³§ÙË,2‹ÍÞf¹9ÈlV˜C̃̑æ(s´9Æ<Ü<ÂkŽ3ǛǙǛ'˜'š'™ÍsÌsÍóÌóÍ Ì Í‹Ì‹ÍKÌKÍËÌËÍ+Ì+ÍiæMæÍæ-æ­æýææƒæCæÃæ#æ£æcæãææ“æSæÓæ3æ³æ|sù’ù²ùŠù¦ù–ù¶ùŽù®¹Ð\d.6—˜KÍeææs­¹ÎüÐüÊüÚüÆüÖüÎüÞüÁ\on0·˜[Í_ÍßÌßÍ +`­¶ZX™VK+Ëjeµ¶ÚXÙV‹²h‹±XK· Ë´,˶«Àêju³º[=¬B«ŸUfõ·X­rk5Ôf ·FX#­ ÖQÖÑÖ1Ö?¬c­ã¬ã­¬­“¬“­³­‰Ö9Ö¹ÖyÖåÖÖ•ÖUÖÕÖ5ÖµÖuÖõÖ ÖÖ$k²5ÅšjÝkÝgÝo=`=h=e=m=c=k=g=o½`½hM·fX3­YÖËÖ+Ö«ÖkÖëÖÛÖ;Ö»ÖBk‘µØZb-µ–YË­ÖJk•µÚúÄúÔúÌúÜúÂZom°6Z›¬ÍÖÖOÖÏÖ/Ök«UieØ;h‡ìl;Çεóì|»­ÝÎnow°E[²e[±U»£ÝÉÞÏÞßîl`h÷´{ÙEv±ÝÛ.±ûØ¥v_»Ÿ}¨}˜=Ôf·GØ#íQöh{Œ}¸}„=Ög·´'ØGÙGÛÇØÿ°µ³·O°O´O²O¶O±Oµ¯´¯²¯¶¯±¯µ¯³¯·o°o´'ÙwÙwÛ÷Ø÷Ú÷Ù÷ÛØÚÙÛÓíöL{–=ÛžcϵçÙóíö›ö[öÛö;ö»öB{‘½Ø^b/µ—ÙËíöJ{•½Ú~ÏþÆþÖþÎþÞþÁ^oo°7Ú›ìÍö{§½ËþÓþË®´3œ€tBNØiád:-,§•ÓÚiãHŽì(ŽêhŽîŽéXŽítwz8…NO§—Sä;½§Sêôuú9eNg€3Ð)w9ƒ g”3ÚãîáŒuÆ9ã# ΩÎiÎéÎΙÎYÎÙÎDçç\ç<ç|ççBç"çZç:çzççFg’3Ù™âLu¦9÷9÷;8:9;8:9;O8O:ÓÎLg–3Û™ãÌuæ9óΛÎ[ÎÛÎ;λÎBg‘³ÊYí¼ç¼ï|à¬qÖ:뜜ïœïœõÎg£³ÉÙìüèüäüìüâlq¶:¿:¿9¿;8ÛœíÎg§³Ëi]Ц » § · ¯ ¿ mA»‚öjV fU`´Êk-´ËÏ£òZµËÍήZbUç_ XûçÈÿÄüÓˆiÔmψiψm¯þŒêWÊVý_Tâÿ>îý<¿z æó1Û19ÕïêxuN»ó!þxj÷ûx‹íÿDã­jû@}ý]™®ý›jÕs¼o»û3ÉãWÿøÙ‹ñ¹{üÔŽ¨ûùqùbâbó©{~ÆïŸûø®unÕú¼:±çç¿ó‹iOÞâþU&:^qûÛðñ‰û¾Jô}Í7P÷çÊ@ìö±~¨'ÿ@L¾î¯)îxEv8æøTÆôGí¾€ùeüñŒœou>/z¼êxc0æóÂqùVÅ©½MeÝþ¯lèxyòx$RüñrOÕc¦áñô·ªícâêômìx«Î§ˆÉ©ú¿ér|b¼âŽOÃþ¼Õ÷ñþ»} öxº~ÄÏ@‚ﷺǮÖþ&é—®ß?Mr>įÚþS½?•1LÝþªË&ü¾ Çþ\Y'~]?̈ýþª·ëú_Ü÷WÚ¯Øú§²v_ÆS Ô"³2®¾ øéûÝkŠ;^±ý{~»øY0ÊŒÙ6TwÛ×Oªx¿ËHPoÇùY~÷÷Ïþ¯3âüÇ­žOäñã1¦Vˆû~ dÄ~~CþV›O[ÿ‹U¼Ư؟ƒ û_ìx „Âq?ש½ñ×;bO´Oßzªøã7ÿŠW7<ÿʈ¯?±íuæW$ê‰ôš?¥D¡z~·»3¢} ÕÓÖ³Y Pk»j«ú»i÷ïBq[UùċíiŠm©°æcBÉlÕPî‰3¬/ÞßMq nM÷N|Á¹4U5×Ý6AS4‡z>,سIÌ'&hŠÚl=)º4…ƒájÅï]‚¦`0\_w¬³]ÍÞWÙ™¦ªDj~“†KS8PÓ—|õG„cÚ\›êvUuïTEo¶MÕ®;ŽÛ¬ú˜È¿@Õ€"Ú®97±c=QS4Nu´¸sÜ”ù ¬j…õû9À&Ï6Eþ…Ã5Žs(=Ò”U}â×µíDMÕ¿mKySÄU«ÒG$æ›@Sd‡«¾bã¾ÜšÁê€Áø€ÁèVáz¶ÊŠìjVô?»¿‹öŒuM‘ì²jŒ9”nM1÷ì‚Ï›ªw9ÿEïÚ̪˜USùüÝ]>oʪ>ªwºî.§¼©îA 6|¼RÙ´û ’kÚ3ˆâv9QSVlaãÞ”qÊüèª ³æhb“‡›"§Lþî³&æP¦¸) BUÿS÷kh¯šª~§Ìȯ3C¡Èô;n«HS0˜ÙÐVÁš­‚q[™™™Ñ'zÕ°é¶Šôjf}úŒÌÌ=«´ÖV™53ƒ55B ¶Šôa}W*\š²#±²33ÃáÌÝnj c3to ‡³ƒ ¤ÑPS$ù¿O›˜¢È+M‘ßÖœUýl 7×T÷³¼Ò”½çÜ×½š•ú¦È¹Q“FôË-L²)ÌÎÎŽÜýEŸLù-›••YcÊ›²#§Rvx÷ £¶¢M¡pÌ «µU0;~›„ØŠt[5k‹½²˜¨)3«z¢RO@—&¶jœ×ßä’F‚­â÷,ASfV|¥”¸©:†ûœFƒ3k¶ŠkŒ6E»7¶TÞ½U˜»¬D"`—ÈÝ%?ZZÄÖdš²ó³ê»NL¤©K†5Õó½å*ä÷-B¡È)À!¿OyŽB¡ªj¥òÈ7–‡áX?£<-Ï/äýÅÃpôC”§å¹ñåµñèóüQ(Tò ˆ@žt|äÝyNž÷Øþ¢P{#ôCŸñ0ý…È÷~ÃÉçï±ø(*yyn¼£¦4> …J^°Z1¿¿¼;¡›€÷Ø÷ µ7ò¿r Fž'?„F?D¡ ò½’þû‘H>¹yù9ÉóÀøè(”gDÞý^‘ÎçË®< G¡öJþ÷C¯ùΗSÊÃpj¯ä½ù2Јϗ ûú åÂõ¾³¤aD7Â‚ÐøÀü‘wç¡ý=HÇ÷ÜùI˜‡áÈ'âÑ‘¯Í£ºóè‡éÍ£"_›G?tçÑÓ›G?D¾6~èΣ¦7~˜€‡æå=æW8~SÊ£ü%ôÃD<4(~˜Î<Ê_B?L13<èo0Üs< µ7jv~è5ÿñ{ÂÂ{ŽG¡j ý0~èÎÃÂ{ŽG¡j+æÏŽ¢ywÚÿÐótüæv~’îèþByÞ÷—Ñ‘¯Å£ºó^;?ÑSË£"_›G?tç½v~¢¦–G?D¾6~èÎ{íüD?L-~ˆ|mýÐ÷Úù‰~˜ZýùÚ<ú¡;ïµóý0µ<ú!òµyôCwÞkç'úajyôCäkóè‡î¼×ÎOôÃÔòè‡È׿ÑÝy¯Ÿè‡©åÑ‘¯Í£ºó^;?ÑSË£&à¡ù@yùéüIGŽˆª#ôÃD<4(~èÊ£¢šP臉xh>PýЕG?D5¡Aö>Mèû1¡ç34Ò<é÷ {-NÞ¯ ññ}Ш½úaýÐG?D¥‘Ððè‡î<ú!*„~˜€G?tçÑQi$¼Ÿ’bg4Åý‘æu¿…Ú¡¦˜‡À臩æQ¨½Q³óCÒãôûì¼ý•FB?LÀ£ºó臨4úaýÐG?D¥‘¢ï—ä‘Kšñ°û›P¿‚Þ?…æ¼;íèù@:¾çÎO|žƒ+ï±õ¾÷ÃP˜D>é· ‚aŽCIçíŽO>'0ßùÃüPŽÇÐ Ç÷Úù‰~èΣºó¬¡~H:>Qž¸®¡ù€ÏO`ÿ ºóè‡î¼ëC¢þͺ¿à|HÏ— û-úajyôCwÞk~Xå'B(ù|H_#œ4>˜÷ØõCÏù!ΗSÊ£ºó¤ëCâóM°ò!°BëÉ`Ò£ÀsóeÏ]?Äú0¥<ú¡;ß~Û_ Ÿ@óƇú'Øoã½ÙÕ‡è‡)åÑÝyΗ ׇ¸ õg¬äÑÝyôCwÞk~Ø÷g½vÿšhþ^»~ˆëÝyôCw†ûß¡õ|~ê­ëÈ׺ðè‡î<ú¡;ï¹óp=FÚ?‰ßÆ÷ÚõCÏÕ‡8_N)~èÎ{p¾Lx~Möþ®ÇvçÑÝyôCwÞk~èµù&éú“ôý\íΣ¦–G?tçIû!éù)éúøßG“ž/ûÝñúaJyôCw¾ ÖÛ_ßâ©çKàúC7ëCwýÐon~بù8t=6Áõä¤çËÍný!Ö‡)åÑÝyÒ÷—Áó_˜'½^|¼ tŒ_Ÿ/”¿„~˜(>ú¡;~ˆJ5;?ó„ýÐk?‚~èÎÃp”ÏÔýv?‚¼zj} ú¡;ÃQ>SsôC¬ÝòÐ臨ôRsôC¬ÝòÐ臨ôRsôC¢|Òd O¼Þó¹_Ápj¯”~è©÷Ùýt½‡~ˆB%«tðCØõ7äXãÁëm t#æ³I;ÿîøAPF蟨tRóóC4‚!ø÷臮<ú!ÊÃB?LÀ£ºó臨4RóóCœ/»ÇG?D5_¹y ÊCóó¤ó!ž|þ0ù}̣܅~è³ø°ðè‡È£B?ôY|XxôCäQ¡ú,>,<ú!ò(€<7Áñ¡¼ÇòñZ|Ÿó(ÔÞý0 ~¸yjoÛˆ‡Æ‡ò`æï÷ø°ðÈÈÃpä÷1r—çÆ#éøÄ÷×çýés…ÚÂbnžÃÙI󤟧¾þÌ?œüÚmOÆ'ÞŸÀø¤ÏÒï‚ò>Ïå.ôÃÄùpbò5ñøè‡î< G?DÕ‘ÿýêWÐçµ’ŽõaJyŽ~ˆª#ôÃD<´þ$ì·è‡î< G?DÕ‘çêp|Â×ë ÏwõÚýG|>ÊËò¿®ÇÐSË£¢<¬èórsò“ö¬@>0>øyVÐù0èó¬¼üü.ÂóeèùÍzþÀðfǣ܅~è³øè‡î< ov<Ê]è‡ ùüܼPŽg⣺ó0¼Ùñ(w¡&äs¢†å™øè‡î< ov<Ê]è‡IÄÏË'YÂ⣺ó0¼Ùñ(w¡&ý°aýÐW<Ê]臉ùÈ|–¨‚⣺ó0¼Ùñ(w¡&äñ~Š~è+å.Ï­÷€Ž¯pòsÍj¸¿`?ú!é÷‚zÇ{ãÇ;ª)Õ,ýr½ýÐW< µ7о/Þ*ÈËMš·€ñ¡ï+‡æÓžt>DãCßçN:èùÍzþ@yhþ0ÎCûå®tðÃ+ù´1~E:>i?$š?úajyôÃ}ªtðCOÕoôC¬]xôCT-¡ú,>úajyôCT-¡ú,>úajyôCT-¥ƒâõC÷øxýÐ…G?DÕR:ø¡§ê7ú!Ö‡.<ú!ª–ÒÁ±>tõ¡ ~ˆª%ÏÕ'Ðó3\Ú‚üþó…‡Ç/Æ'ío0Ç;ªI…~˜€G?tçÑQi$ôÃ<ú¡;~ˆJ#¡&àÑÝyôCT)úü«ÀIþ}£Ðñ~^Ô߀ù7âù„žŠ~ž´?ñ¡çƒ×ž÷åµû)„y”»Ðóà}ͤ㣺ó0ýUGéà‡žò+¬ÝyôÃ}ʣ܅~˜˜÷Tý‰~èÎÃpôCTEï/Ø9ùÉGèóZ±ʃò÷{üFÜÏ"ÊCϯ­Ç†á¸;Í…~˜D|ò~=ÂñÑSËÃpôÃ4WZø¡—ü ëCwýÐG?ܧB?L"¾—êOôÃÔò0ý0Íå¹ú„øû¤Hïoò÷FªxXxøýÒï“Âõب4úaýÐG?D¥‘<·þøßë÷·ï%ßc¯ÃÑQžVsôCÐz?¸„ˆÆG?D¡H)ê¼ F,1/'Ÿ³>ç Z m Ä‹°| Ïƒæ_Ís¾÷'ðúô|€æ=H?”M#x¼Ÿ²O…~˜˜®JJ´¤âGè¤÷ßk~˜/ÂêÕ ‹Ï‡ÐÝxŽJ tðÃܼ¨ÙN•“0·@0Ìñb(é³®)âÃêC Ÿ~_¸>æõ¡;ÃQ „~˜8>/ääæås¢ùˆ„|(Ì "ŸôUVx}è1?ׇÀúëCw†£(ü0’•ŸÃEì$á¸oÌ|¶ â½~è­ú¯ºòè‡ûT臉ùšúÍí¤âó!’×'½æ‡xý0µ<úá>U:ø!h¾\5Ÿ &=jš">^?tá±>tça8*ÐÇ]?¬º>)$½ª¯&à±>tça8*ÒÁɯø!éø¾_oƒ×]yôÃ}*ôÃÄüîúÓ*Hü·Ò¹> Šï5?$=_ÆúЇá¨J?„ù |½ l>Kx=O#æËÞªñú¡+~¸O…~˜8>¨±þ–¿Çüôz¬ÝyŽJ tðCòëa׉Æ÷ýz¼~èÊ£îS¥‰‚®½¾×ˆõ‡xýÐ…ÇúЇá¨J?$½Þ´›øz¿¯·Á뇮<úá>úaâø ùx#Ö’¾~è­õØxýЕG?ܧòÜó÷ ã+,rÉøàzDHzî»;¾§ž-ÀÞ§õèø…ú G¡öJè‡ ø¬ÇH?ý…"%ÿûaÉè‡çwëC½/ v¼ÐQÍXè‡ xx}ˆ~èÆ£¢<¬®Ý Éò º<éüý¾¿ÐøÈ§”GùKÍΚÛþBã#ŸRå/5;hnû |Jy”¿ä{€ò>Ï…B‘SÄJûõñ°øÐ| <éü¡|)‡ó^ëäQi$Ïù!y?í/,<Ž/ÊÇêÚ½waQOØ‹€<éü¡<4ðþz¬ÿ¡ñ›ò—ºvïURX á㻊‡áÈŸ0_’<Û(Þký<*äÿú°°7Ö‡.<,<Ö‡)æQþ’ÿëÃÂ^Å€ Îc}ˆ|ãy”¿„õaŠy¬‘GùVX&â±>D¾ñ<Ê_òœBý¡‡î/4> Çñ…ByH]»¬(D‡æSäÁùž/Cóï/áù2éüa8ùü¡ñ<Ê_êÚ}paù‚<€­âa8ùü¡|yòl£x¯õ?4h|ÒùæQþÖ‡)æ±>tça8Ö‡¨&Ö‡)æ±>Lm|¬QM(ßׇ<éü¡ùã£P(rB?LÀã¢P>VdþÕ»dVÔ§´_’<Ùùx}2áüÁóå"ÐwÀ¼×úç˨4’ÿý°¨wŸÒòÁC “{Šq?,*9úaýÕ„Š®OXÑ¿°xP²~œoB×cƒï·Bó'ý|› ˜¿AyÒëáñþrJy”¿”~X\R:pPEÒõ!i?,íúaŠyåƒò—<ç‡Pè5è'Àý…þ½ÞOA¡|+ÿûa)ÈÀõ$ú! Õl™õèÙ ÍÊÃ󇯇ñ=@8œ÷Úû¤ ùCãûœGùKè‡)æÑSßç<Ê_B?L1~˜Úø>çQþúaŠyôÃÔÆ÷9ò—ÐSÌ£¦6¾Ïy”¿„~˜bý0µñ}Σü¥Èø*ÐÄÃâ—óòðüÉòeɳâ½Öÿ0œ||(_F6>Ê_ªª¯Êtë[šìßwë±2`>Pž?Y?ìQ[? 彿‡Ðú†£¢öJià‡Ýzô,íÛ¯¬ÿ€$yÂ~XZ–<~˜‡á臨½R×î=zö*.)êݧ0)—û!ôïSÀÏ·æOøï—{”€öÌ“þûehÿãõCTÉÿ~XØ#’ÏÈ$›¯ôÆyôÔò()-ü°gÕ$í‡DßG~èÎÃpßó()ü0º½û¡ÖÇ£îSå/¥‡–ã|¹ýpŸò(Éÿ~Ø£WIQŸž…Žñ~J}<úá>åQþRÔˉ>0I?òÐ÷_€Ÿ ÍŸðûSz”Þ åI¿?ÚÿÐüaáÉçÃÑÓ\è‡)æÑÝyXxôCT“ ý0Å<ú¡; ~ˆjR¡¦˜G?tçaáÑQMª®ÝËDÌ$z?%©¿J¿?¥ ˜OYðþ4ÒÏsæÞ_Ò¯Ìê?e@†{.”¿”~8°¢¨Ï€ÂA½ÑëÂÑñ0å3U½o.2á,¬–) ˆ_<¤ ”ˆnLþ„ù’ò²d¸Fó^ëÿr /ÃpôCT¥–”G³/œ¬¿AyXÿ”•€‚¸)­@D?Lm|”¿´g=võ]‰²¾¥ý » hðÙ_àû`?„Ρù×ø[ßÂ$Ÿä{”•W$ÿ /0½ŸBºÿ¡÷S@Ù4Áý”2 ÃQ>SZøaQqï’>¥Ë ®Ò·_ÿÂne zW´>Ü·°8Z#&ê‡E%¥ƒK2}ïùaQÙûã lÐQM+ÿûa·ª¨~"lôÎPtG {7̯KË*Ê“ÞôÃ<ú!ª •~ɾÚ#™õ*‰æÖà5³&¨KËÊ+’~‚ŽçüçËî< GùL`(ܪu‹¬6Ù™-“âCÀø­ZÀxXxxþá hÀ<®Šäƒ@†{ŽG¡šR¾÷Ch|¨¿‘öŸû •Nò½‚ëCŇážãQ¨tRóóCœ/û‰G¡šRiá‡m²[dµ&X’ŒÃ=Ç£Pé¤èxç±UkÃl‘%©\›lMÏl)+ ò!^Ňú!(z#òÔ{žK:>”’%wÇçA[‚¬ÿaéÀûº¿0…jR5;? †9^ %=Š£~ÈñÉ{y?a<,ôCT³–ïý°U N“<´Þ#]y­ÞÆG¡ÒIÍΡõ!ézÌkõ0> •NªñCn·!úΡù‡“¯ wÇ'ºÞ†°_¡¢PÉË÷õaíü÷¤ß`ž s‚È'½Êï§$àa8 Õ¤J›ú°M¶ajK”Z'¨9Xþ¤×Û`}ˆByFÑñžÙ²UëÜölN~Ûvæu äÙPƒmõòP?ÌáðüƒáK1IïC´žÌÍÉÏKšg’%wÇÏM:vë±Q(bjv~ñ7–¡`~˜—Ÿ“4~˜R…jJùÞ[µm‘Cxh}l×”ˆö¿¿¡Pé¤fç‡Ðúý…j6ò½‚çËÉÏ}wÇ'ºÞ” ú! ERéà‡‘¼™V­³"»I<‡jáæ]0ŰÁä÷¡êúa~ÞOÙG< Õ”jv~Œ"ú¡_xª)•~Ø*’r$ÿüvLN[ªEfËÖ©ž/“\ˆóeÊ3Úí‡VAÇNtö? ê‡ö~]äCÅoÕ±…ÕÀ[èÈ?ŽìÁ ¶Çñ‘úÐ*pì¤yÀ¾VÇ· @<´>„ö' G¿E¥•|ï‡ÐøP? î·?(œáC¡ÒI¾÷ChþàzŒp|~ˆB‘TóóÃ`¨ó]’Þœ/ï[…jJùÞq¾ìÎÃpô+T³–ïý°æþ²Õ±sA§ªü3[¶Nñ|¹c«ÿ³÷¯m’ä¶(\dDfeµZ£–w½¯½3=ÒzÏžGG»ÒÈ»¥GòØÒc÷øµ-iF£ÿÿCÞä$¼DDÞªƒU™Á € ‚ Fä÷ޞΨÿΑ8¼9>ïëå=ìáU†ø¾,gÿÛûÿ÷dÝI>þæ¯üìó/~t6Ÿü§OÝû¾~ú¿?í?¿7jÿöï†NÜ óöÿëßþÍÙEüô\ö³f;âï œ—Ì?øþ»¿þŸ4áÿæ§C'Ýûÿîþ ‰7Á¾ÿpÔ~îï?ÜÃG^ƒ=üþ'?8³úŸþó_þ—¿úÔ½ëõïþÇÿsnÆOþ¿Ÿþ¯ÿý3×°ÿ÷ÿöÞµâ‹}ö¹?ý×® ÓÿúÙ§Óe?ùÃú?þŸ¿ûŸßoòfþêo†vÇíáàï ìöp{è=tþÞßzÈ¿qåMü£þáÅíáîîa— ¯Á®—ÿ‹7šÿëgÓOÿ÷_5ߌ3ì^|½¼û‡{ØÃ¥ÂÃÛ×ÿ÷ûù×_œiü°ëWö†÷ÏþØÿ÷ÿøI7?Ãïûº3o |{xUáñíá÷ø—ýwÿïO¿øo]Jïö°?¾‡=¼ªðøöpØ?[/Û¿ý‹þMÿÄq{xgëß1ð=ìáU…Ç·‡Ñ?<ôý*ýnðcà{ØÃ« oGùŸÿö¯ÿîü>Ô¥Ÿ_þÛÿ9öþ±Ýîa ¯ÁÖÎÛ¸gWþÛÿû{÷ØÊÎÍ0ó÷ÿúL¢Ûf]üù”¿ýþün÷°‡‹¡,²1TŠ|1­Û(2Æ}J„&WaEçL#°X)šíBÙ:Wt&3¹ÈÚYÇl]##tèf¡ãQFh ±õ.„"GÎHEŽXˆ E™Ž00ó¾Ñr‘ÇÆ•Ç3+CE\çÎÒ Mâ\/.2AR 5E¾zÌΦ!’ülY]’Ÿé8ZZd½ŒÎ㻺¿( ¤þ¢9êÆÌÇz¯‰z_±ZV¶¬ètæáÂ<“ÑdN)z2qXTt:ÙŒ¥Ù°Z'F Ac0…j™HË[‰¹¨â>?\Rjq6Î…Ð.Š´‹Ô:Y 5g OµP“BÜd±]s V²í*‹N~˜Í¬ÖÉ)3G‹C»ÒD¥èüuþWjùa%Ö2F­åÔZ©u Ã…šmhW]Q‹y5_M°\ä±IEÑö²¢0 yöÆÄŠfoMaËëEÆ„¶DèÍí,Ôrãêäþ`.Êc=Ù¼9ÿÎ `(ržÊ!Mx¨ÈY”7ç̦¨Ì×/ß…Ü>6>)ñAø×ÔöÞHÇÑ®î2\†eø¤Ä{ð,cñîÃ.Ãõ¯Ÿ¨ÜpþVqŒ0ÞnÊͨ ñ hq ~—¡ÓƒÅ׳{—Akû¨Ži0óX³=cÿc“ᨺdµ†Ñ;ãcíÎæëKøù£ñd8j37ã(ÃQÛØߦû1ÈðfsÍÊð"sÍÚ{ͰݜÒ߃ÅŸ–ǯ.2/üñ§±ø½…u2ìĉyëˆßC¸›9¿‡Ð·ç å߃=Êç þ§Žø.Ãzü©#¾Ë°êˆÊptmÒ·fY×ðl¶&zêˆï2¬ÇŸ:â+Æòš½ÙKËp3ZOñ]ëñ§Žø ÞǾÍ(Ÿƒñ§Žø.Ãzü©#¾Ë°êˆoæjüŒÊª^kËÓmÂ.Ãõa—áú0.‡52Tà ?ù²½fØe¸>¬‘Ãèý~4—a ?šÿ02SPœà×âËçŽ{ kd¨êÁ/ÇGÏç¼VûùÓ{“ç.Ãõa—áú`b€8Î×â~«xÝmâ¸í+âO8¬-Mkâ˜nÏ9¨5g¢.r>Šñ³…ªòé‘í“ï‘OOþ£èá°ÜX]‘âsÍû{ÓCMnktrÝØüxíáèX^³gþ(z¸• ×Èçªç–þ{’áVzøˆc¹Ç6Öà[tGã2–ïÙ?¼g=ÜlüÚÃq}ÓÆøFqFkk=–ó“µ{8/ß³}ÏcùÒþᨠÇõv£8£{¯2ÜJž¯I†Úxµu£ã÷Þd¨Ú=¥-}úÖ“?Ö®k†­d¨Ž»]†bÃ÷ÔmÃP~äüŽx»¹ —ÐÞ±¬Û¨K†Dž'³»ŽÏ)=öp×CÙæ8Åߎcx%¾¬yW £2ìóQþS;þ±ÉpÓÒâ­“«ì!³nï}—a-Þ#“G×—Ë£ Sçk0ê¸ëÈWq*t/ß*ì2\v®» ׇ®6’üA˜žüÁø½…]†ëCßXVàWe%®ñpøVa•.­Ñá§åñ{ ÔgÆùF†Í×pjt•ø“„ß*l%CõÞŠ²Ÿó1ËPÝS­Ü{Úõ°O†&ÛO†=óoG]BK‰?)qæÞ¨ ‡uìIƒAñ'%þ@2´)Žó)Œ ?š¯áÔè*ñ§mâ[…52äö°•¿ËP‚›¯w–ðº¬n䯷 »=\v{¸>ìöp}Øíáú0>Ö.`ëžÆâ÷.!Ã5÷‹_— 5˜íæe^ã¡#þ¤Ä˜­Â®—eøñ'%~Ç2Üõðïz¸6ìz¸>ìz¸>ìz¸>ìz¸>ôé Í‚yRòWÈäÞÂ.ÃõaT†=ã”À<)ù» ûaž”üB†F†_7/Ë´:âOùñ­Â.Ãõa ïâ^À.Ã]%þÔ‘ßß*ÜÇXÞHžZüf>6…‘áwü·Ë«ÖzOñ]†õøSGüf2ÔÆ×šµž×`žäø½…]†ëÃ¥d¸ØŸyjÇï-Œ¶·k½l1ŒVW‰?µã÷¼¢0tƒíÁ"x€ëÍ×pjtå8æ0ÞÉpØJ†Öfí£ïÉ©b]Õâ.ÃYñóK€¿×zjäl2$ùœ®ß'Ïñ§íÚ±¬ê›’¯ö ã§ÇðƒqAkÃV2\c{làkÒÃKØCîn…|NW õ±ÙCƒËçcVË×pB~ŸmÄ0ƒqAkÃ%d¸Æ?Ôäùšôðš¾ÍÇfÉܱB†}óËŠøÓöaÍX¾´oó1ØÃKÈp·‡|NW µÛÃeö°FW®»"þ´}¨ÉPk#¤ûêRZrÃ(ñ¥ ¼BØJ†ºŽÑ|9Ža”ø¢Ö]'ŒÊ°g¾}Ïó.ÃÂù?Ê’ã¯@†rÃôÀÖÕ`6Š_3ì2\v®ÃrÐêvÀ¿Ö=•n]’áIüI‰¿Z=lËP—I®‹á•øk ك镡¿FæqôP“ ‚Qáµø“ïÀ¿Qüša×Ãõa×Ãõa×Ãõa×Ãõ¡K†j\‘Û“­AÕ%£Á_`,÷èçõW×xì‚ïË=øó•ø5î‡ëî‡ëø*u5ø x¼÷°Ëp}ðwSlŠ£ü'%®Á;iäx~êÈWâ× £2D·¡TêçvÖá{ôpЇRâ÷7/_Q?fªö Õ}’ënÌï=†QÒ{ñc3Nï7°û)íû#—¾'58wÜÇXÞe¸6ì2\v®» ׇ]†ëƒ.“'%®ÈœÄÕºmüOù0× ¦azài㸂³#þ¤ÄP†Ô¯–e¸ÙZïdhmŽ÷衽õžCGüšaT†w±çпfØe¸>ìcy}Øe¸>ìcy}à2Ìq £Á_âž‚Ò`PüIŽ_3ì2\v®» ×]&F†Çs+u;ð?É0OJ¾sÍ0*ÃK¬—)¼„¹fÐe¨é†6öi\ÆÓƒ¿#þÔοf•!ÖC®“ì9+Ò¥{%Cüó1L<µ“¡w­e6ÑÏk†QZ›ŸžWõ)™&Cr¯Ÿñ“ã8¿#®7ó¢a\†3«[Æ{dHp2~rçwÄ«-½\X#íôðŒå)ÇI~Ž«ðJÛ ¼‹ßsX C—u†À+ùJüÃ:=ìÈ‹?b•!ñ)ž},?­ÓCõ,âÓXüƒ“ È…ÍF‡—}i¿É¼sÏa é{«ž4xÙ|Òàe˜{ d˜Š¸&Š¿­{+Ûpë°F†D1ΧvþG.C ^™›Pü©ÿˆaT†tÏç?Éð”Ö>§0ø5ÏY<¢¬´`Œ¦ï‘!…·bÃw¬;â÷v® dˆâT†2<Š?µã¶’áð½9%þˆaíXFðc¾Ä0*Cºñìö0Äw. [åaÿP‰?bÐe¨Éd#ßæÉv Q\ñm~%þ$Ç1¬ÕÃv>®‹âOrüÃ>–ׇ},¯kôîÛ Ÿ‡àWâOrüƒ—I Õ+팃•x×ZS+r¾ç0*óxDq+Æ þÁ5õG,C¬‡š w=,á5=ÔÆò®‡)?ö0Á<)uq>ŠoÖšÛ„c™äï2\§‡úïæø¨Ÿóˆaî2 a­e•=´},?Õ|›ŒG[§| zhMø›Œ59>‘Xø|ˆZw¶‡“ Gà'sq—òi;…ô®–cΠC1M“¿ZOkŠø¦HÇfè ꣒)â›"¾Ìï„âî:™@gJ2˜ •• jé”ù›}^ãåSü³n"\ðÚ¸Ž‰iâ8ô_Xúk’þ?¹´¬ñÁçæ€eršb_@¿‚Ì ¡WA~ [Ї)ö!Èd rmËz"ë¡Ã^koѺ´ý®©¥<¨¼ gpoÑXÒ?ÐÁ¨IÓåÜDù5_³ô.;ÞIvŒš)ÉÃ0ª¦\ß¾Rö¼/¹>”ú¢ËÓ%`ÜÂh‡ñkÒ(t%õ½Íõ©®!ݱ‰Ô¾)È#µÙ jW¸¼…þ à*ú ÐÓл@eJ½z ŸT?ÖIõc^ª-]ªqR{FíµSuûÓ²_šýiÛ/:6ð8­,ç niרÇõöùåÅšÓ©¬'a¥½ÀÛÅù§8Ëþ’ÚÕÂßâOÇßâ¯l©±tž,Ê'<ßó.˵žÊ¼š8îaž1Ñ.~\‡[î<«d½3ÑN⑘ý®G)·`g`ÜÂxž€J@bSI·&Zuà>w¨™­_æ+û)”¿ÓYO_N²¥ñÃõ&ĤùøD.Z×ÌW°¾Y~PRÎïž¶„ôä~l\­u¢Ééi²Q˜/'×V×b×Þéœ×óåÕ÷Pý°¬ð2rõ³Ž‚‚.‚^çÞd~ÉäÚEg i|¶Æ3ΓðÔÁ¼$^Þ%|XŽT®çõÓ„ûöËYhèÁYÜ^¿Îâ÷ò{y ×Ó9| ØQ}Ýü‰üóö¡ö—òéÕsz…x©çñ0‰}Bv t‚Ø?ëüˆ’¿[‚ikúlâì‚æ;¥urö4a¶4qöqP’¾Ôì|kühú¢É»Õ_µuƒ³Ô8í,µÆ_kîII9²­àrÂí—f0™²FƒÓ+gˆ<”˜J?†òÇ×À!­dHK¾VÊ?¤+ï‚äC¹O@|­ÑÏØkå_{2~XákåPû[<|­·!ãW¥l¾å€ð—a ùˆûZù×iß”k¶I¹Ü&là ›”ãú©á쥣¶7ÛªœÇý ¥-å¸~*Gøcó't½>TÊ¿6yüéºåº¨ZþÁí;´ÆGk|­?ÙQ»ƒ?¼ [µÒÞ·Æ[k¼Öå ùÊpLœr‹ ߪýšóµ6|¨Ø,(×xë¡«•Ý¡o_×íyä]1cñª”'ƒ¶Õ|±Fþ5G"*0_‡ Žã?äM`k¢?‡öµÓÚØ"ûÃ÷Í‘¿ha±&8‰¾§9-Œþ'ßgÇq¼Ã€w#’-Lõs9_û2þ‡ã’úÛm/+æCPº~DZÕr…*ïì­ãX.I'=Éû(ímå~˜h¹5|Ð㯂áKÚƒô€–ÃLžôíó¤ÕˆEz8Ñr\ Ö‹KüÕmæÛ–mv¥tÝ‚´ßÒõ]¸b÷BMTné~G(Ç£ î³|À 1ºžBÞÛD÷‡B9¶>tý®¨×OåØ; y„?AÕ¬òÇ×`š¿@aËõäPœ%-K°qüÚŠ­ç¯\oöŒ¿5ë=™²ÖÆR½ãoÕüÛšä+ósØ“ {ØSŒO~¯6|Úô[ü¯ãìWXKîº=Oÿáxx>?Žðóñ_„á¡ß\édæç9–žãÇ™áÉšôÁZÿ)ÇcÖƒP>yB=Ð:ãÿà)B¿8ˆ9–ŽC|vÜ0ØÊÆÄ÷êƒÇžñ"ÈÔ6 S|Lç¶M¨ßøêE²:t¼|H2Ìx¾V¨[„ï‚7 å_š_‰ù¿2¿,u•î-Õíiæㇶ0Üf”1.ŒÚþ5ÃOù×Ú«·Ë Ôe„{DX'¹5¦2Ö$ÂÆ7¥žéù£ø{z sðˆÂ8ÞùÈFgŒ•<¾s‹øˆ—g˜²]Ž.Œê9Û_6 òttÏ%ÏXžS°gnòxÖ<»é—Ó¯Äü_M¿,ómÒžäUÛ ?ŽO39ĸub ü˜É‰2Æ­w½¿äãë#‡ü Ø[n,Ñ|7¶²ý4æ1ö‡gšÿÇhÿxÔäfkóó¬É/ÛÕ?<çÜ? ›üÇcÎÿã¹?¬@vYÿJ- ý¾±^âQ…õë Ø{÷¹…ü¯ÏP8?èwÀç{ûèdèNNOÑhŠœ’ñõÜqõè¹ã¨Ðÿز8>ÀLFø‚ü3¿¤aΣÜÍ¢sàó9\ݨÒî‹0úeLñ¹äW1UÌ%2ž_ÆÔ¯Xþ¯bê—ÑÁµžÏ*ÜË/G s!|±Œò¯É¡Ý®¶=ÚÃa5+Ró7ø|'Õ”ì —ãTW²7\¾È|Ð×vÚ¹q>†/í(gÝ‘í+§‚á[òqíýñÐ’”ÓÕ—,H•ÚÏ¥U“KmmÛnŸñž—³æWð¿r5"ü/[òðø=¼Møð¿ ü؈¿¾¿¯ãj÷ 2<¬_S[‰Zíå¯P>±—ôÌo›G|·¢þë´ûÿomʵð¾¢Mqr íÃ>sPµ_äGø öu'NÔ³*ò?„§9ÿWâ—Hþ¿Dù¿2šœ[v×ÍínÞ„kÊGyîú¯q<ñ´Üëüï®éœ Þûγ ×.>Î'pÚÉ'pÊùľ<æ8íᳫÇÈõ³”CàŸQûÀ$9Ð^¹ÕÿZäPûÈ­£nQC©—ô²÷áxƒ¹Uæü+¢[Z¹ÿŸÊ{ø*Ÿ÷Ê¥ŽªcÕqáX(s|̨2'é[g$üÉÖà«|¾,—:ªN N}ËsªÌIüwv@{y gÞ¾¼|óÝw߯þåå»o¾ù.Àœ|0§Ó·úÓ·ætúÓ·ßþiÝ8*ÇM}•ã¦>ŽÊqSGò¸©ùq|ÜÔÇQ9nêã¨7<ÐÙtŽò˜£M Ø!ídÔSüãØ“dø£œgÿ÷!¶Ò!óãóýÇ×±÷ íþJ~rO|M¸ ñ’ß.¿ãòuÔ&HKú³X?¹®µô“ëè†ú)¯týŒ2BºV×ÏØgHG—ëçZùOÅ-ÏR›9 +á~EI…–pxʃûÓJ _ÒÓIäÜÖNÍêäu _3. =ö¼ý+IÓ’¾èZ²Vþ­(àÈ*¥cäâJéÕfÂÍaž O6…óûùÞ_ÑÄ^´îÏMK}R  C- ÿo >ö³ kõˆ7ÐMg…ãïu¥g‰A+óÉhÐÐ ™ü¬NLÇ'‡>°&C9àA:ïWˆòñ!¼1¾K>>„ZÛÈœÓA pbZÒéY$‡&Äñ3Ø0ê>°[ÚhL&¬ødþè˜Ó«ÇhcÌŽiÍöþ]gNÀi=yNÀœH˜ôv”»4W·ù}ò•ïZùµä1*ï,¾Ê¥{‰Ú~ dÓ©Ô¡Ýåy.QÊiÙs“úÌXú<"æÙ ˆÃü³ÿ#ù^6ÿâþxŸ/À{<ÙFEÀÇ(ûäú¥Fë:.×ú@þxÝžP¯Uß¯ÑøÄùúž#2~ 'ÅÐՔꕶ\KêÙ×ãr-Ú¿a§˜×è õZõý,­…˜ûrm„!ëøK)”rÓöÔ4 ÷Ž7iŒ¼WúìßežÃù啼âZ‡ùÓÎ÷õÝ«¯ßJh©¿iäï!ÐôVøýM,ÿ#޼Kýi¯p†Y/×ï2áSÍryÆû(ýÂÓ›á ÅÓ×é½ ù©,ý|këyÅÚwêŸM¦´«¥ŸiY÷F1-ç–lbºR¶\ªÉm5ËT¹eäö³¬gTŠð<\œÙü…¦¤`‘¡Ö’Ê8déK“V+”¦ñã/–žP­U¿ßTΊHiàO¹'.uüåÜ_¨·à@bÈ$;!÷؉üËþUj±ñ úS’Tj±þõf¬à²'TkÕïÇ ò/û·pð0d¿ ?eÿ*÷A>RÈöXj@ò© ägƪåg4‚9`£ñ|žâRxÉ‚QkÍqe<á4HF8äO÷ùþvŠWjÉDxkýqX+¿1̘_Î¥$¯ù(eßÐy—[”ý˜9“üò4ÔbDãq\x„)‰iïWâý´…žëOçgðpù?›!é9ç,£ßâ_¦ßäÿŸñ¾S`ðüä_Áy?Ÿˤ-ýä_Âù@LïÒ~òb~Òö ø“Ô,i[Rﵬ¾R–¸¸×<ñt¸4¥\áÕŽ!ÛN¸ÆT¶0㈸ãûºlÊÄPÀÕd'ÎǪ°WI?ñ 7Ä6 Ò!Eù‹¨—üÝ;Ð. åoæûð¢NŽo2¨Õ%5‰Á)è*’ô¤‘‹¹þÔ™CZ‹H‰¨’ƒ„\î„r¶€Ä»è¬³úR57ô|oúÑc'ưÄhT– ”¦†G/4HÑÇVã#–Àz!ð¦3%Q=j · è0'B#¥æ! –ˆSΉ¸¨è ÇÖAHÐ  ˆ%µ U×$ I˜&t­Õ0C(ìᾨ]LõÔ Uñ,;ØçªÁìÃŒZ4kc<”VˆÍatª®¡á¤³jâxḆ¦°Èÿê¤.à4M¢xéèo‘ã\a-Ôj5/o 3½YÀV-ä-÷V¹ç0Îû#·V ëÍ*l|ÏðvN T3~%[‘6Ê=Mq– ?SC@×2DÙ0áµËÓD¬Ožü' fiŒåT­ÁMCU³!à :C©«ÈY¨Ã(Hõ 0¢¡—xkPë Z={á†èU{M5ŒA»³)(Lx¶íÂ÷( çÁ® iF×Nbš[€ Nó“Æ6ÂT!CêMÈ©“ »ˆ ¦&7&VB<5Z’.}Cf5e&õÎd¬˜/2\âW+M I¢N5}f«QG:”²Ó©°S!­%imnŸíæ< :Pc>A’ã5(ó&ÏZ2hÆÕJ¬ÿ¤ƒf[‡ Ã!1‰‰6×Ex³0¥¯{£ŒL™OÇL%Û2 l7àå¶*MÁB±êwÓC„Û¶©LL“dÌlÕÆ9¢#Ø`BE×VlRíÛ)Ê´Úym¡Gñ0Ÿ‚eêe•z&Íñ¡19F zÞÈ4“ÌbΚò䃜,lYp×ß Œ æÏRÛ‘3–1…ñÓix-t°¤Ì˜aÌDþ¶«ï[é>P`"%³˜G;1d£>œ0Œ—Ÿ‰1öÚ-‡°S¢ŽAËg•…RVBPkñ°Í(Ϻƒd\‰a©VW·4ò"nqÍÙ 8ÎÃx3¹CDl¹¯À„²Z¾¿m›»X?ù…’¾d éiLÁ-'n0dM6Y)pf˜Á Ð8Áuåa´œC+¡!B ¯¦É,"‰¨|DÐ  inàݦÆL’ Šò½)…ýQ€‘9éYW¤à­€id4ð˜ü4 w\PƨÅêoµ¸L©&pÞ¨j¡ŽZµ70Õà²iäåÈ4@èU¶Š$&¬\?O»­v® Q‹ ï?Ð~Úi˜6CX¢O¸Ÿä åËÓîÏÆ¢³Á<Ù±®HÊûªáC21”¿: 'V¶2Ø6HQ¥¨cg;£¢ç*,TÚœˆ"*¸c00z aÔ4Ï“+µw‰Ïú2£”rÞûÀ8œ>Í ˆ\»B€ußáƒÔ·DâÓìþ,Æ`;Ä.˜ý_è·‘ê4X×fÓªvîÏóÿhHO•¨,q¥¦Ù¯î)!k+dr= wwjdü$ê{(‘±U*ÎnºJ¼ƒ8#¤-i£ñ}œšbI½&Œ,=8 Ë©ÀE~ÕJmQhë!—»)a9e3/Ô :•=$™v‘*,œc ¢…kf=Juâ~«A-‚ŽÃAÍØ¨×7ªñO:¥É_…Hš zòÄ£6³ Šû yƾ‡0ÊȹÏ_NèŠK@%³†¸ NµEIFЪ©„¸ÆB‹ŸýæXqþš¼ëÛjô³Mêá{iXKrNÙËÍÞb{¬u–Ö¾¢LóE)âuUx”;\ìäoºá_kñ¤—UêyÜ.ñt|r‚ ׸c•ÉÇÒMßA{Š3Fº›±zŒù5‘1÷…#»·aÊs€ mÈ2a§Þd,%bÃÀ˜ŒY‹H¬‚#3‘s,s—„Rr:=©%£™–o²E4îgÏîÆ1ÄAC£Jǵt†9œQˆ¢!ìñàT zè¸ÏôT‡Ñ)=MÁ5ØLÙ„í0ÓÅŸ–Oák¡iqˆe†ñów䛜Ó씞B¦æ¦r hfÈÎ]8Ü _=Ð×Ó®X&?ÿÛSkR¨<‡fáÙÛˆ Q•)L|º¤ùŒ„1ë M‰tcÅ&ã\oö›Zž$?{{¹áµ.ŒBö½ïª={27›‹üï̺v>ÇNªÕDyábapÖ˜Ìyá$Õ4z«h6¥Ë¼àåºÓ.e? ÄˉûkÔÛÜ4*^Éä’ŽŠAçöºšs.?/#âöò͸ãoÃôî¿l’F0*”Å®:œG_€D\ ùüˆ"{|‚ó ÓA„"Âõ´yéM¸¥—‡™·p¦/L°ËõˆýfEé—ÇU[-™iþ}ĦâôN½64&4õRɹð‰¡EPm\¥Ö„Wÿ6ßB«®¦*bo~5‰e6{UûÂN{t<€ê5ý ŽZgÓŠÝF[ä¨VTŒ–¡úÜ•îä¥{_yk| • 1½ºz7x'`l$]xwÉpX꺾¢Úp•»«pYü[i÷åHw‚n0þ`«ðêò‹†ˆ_¬ ÷ÎßÌ[0u/8Ö£Ú€‹÷ÅB$‹j-ç÷jLÞƒZÝfx\ÉѺ–TúÁ/%ª-<Õˆ´‚ÂEYR÷RžÚ&â_*Œ­†Ý°¯“áÍÆÚfÕ¯´n¼ÂÄx¥Y{s[±WrµEÿæ³Ô5]¬mWÅC ë¸}€W[ænIh+\ëð܃'½×Û¼æûèê›rqm·v»ê«QŒU…Wt¤7§ØõeH·¡ñ¯Ò”¥!Û¤|_dPkl†@$­ q/8ÈëhªhÓk¾+ˆ àqhêX,aƒà(¹34#(AtÌ(ð†VUá¼ ¸áu¤­¦äžˆW,l#Âà -…衳‚òòFŸ¢¯Jç¹2—šIZ‚óôj†ª©I߆C¢D©Cb ©¿×ŽópA®5ÔHàR-Fa7x¾Ü-ƒJÃBHj+Ô5­º|y™}z´Q7VªQBM)P‹%2 •5ÌF„ÙêÔÕòï]†4>xƒ q>®Cf”Î/ËÐä “|th–Ä: ¶ÑI`2M"ô—ÊRjY¡3éh€OÄ+ªÆ iá²µêÕB†¿*ZáX„+ýާ°r"±ZÌëË} 9²)z™s¨â)ÝŸ*Õ ¡nUgKgO£§ÕRjôË@Glš0¸\zMå(ôS>ÈjX°pšž_ô绡(>åsQ¶Ï ¬¸~Ÿ>hRÙøDÉÌ[l«™MVžfš ð|4y>À„"Œ3‚è>Æ3‡.œÊê€?ïî Ð'Œ‹ Âéü7Ÿ¢3 ìÄÈ{R³á£&Ê1€ImðòLT9ÄM‚Qs*F‡^[•ëw H5Ëê¬cxŸgæVµŒ7Á5¥øs÷4h¤ u ‚>2üŠVÊì ø3€.jÈ}CUVzKS¤*Æ6N·TÆOktPÞ%ˆÑcG"I„Xˆ[—+–€ áJœÒ1\Îé›…Áv„Bmjse½ãH:Û@•#CÝbTøÓò…Á¤£iqH››yÎ[ 63Œ§SSr›(¢S^¯· 5Ý`ò­7 ª”UY;øÔ‰ðta¬b¼¦ƒ­G]"5®1Ó ÑªVbuOùªÖÌy²Ò6kßÔ[…—ñ4Õ•ÝÈlwW„_ô §nà ö×(©óÔ R‰©¶V1žæ†}ÈàN5Oá1àjľ6}a'$¨†ÂKƒ“§~*@"¦…ˆb‘zn]*p˜IþŒÖ|±£êé TÕמÃr ¸â1äñ”©T7‹¹UÇÚ\ÓgœêÀ1m«Ài¶âxOai†›×P§T˜È!W‹FØðvá©û'8”§lõÎpïdš”´àôN@:ƒ[Ã; ßý3 êXLýxRJÔÕò1B«Sø¬,žÚk)¡Ó©B&äX›É  :™©5#¢5Æa4N]$Hƒ"‘¦ÌfÔ”“ °Ä;éhA9 ƒy§Ã¡kä P¬Ô²Ò”Zן:Ð)*@ Í|BúD£’0fót®å¤j<ðÙC(lylë¸ðPÍ Øªôñ„ñ“!ع6Ôgœœ2¤Ú¨æ<I Š"“î¦ï-ø[]Ä¥>¥öí:mÁæ™(áˆÊÄ42ÛýŠ‚ V?CFêçA-o¬hݪ´GIƒ¦ŸrmÞlV=5:P(>1ùõ£@Ód«2Žª½Ä ó$ztÇ#h£Æ1†Xf^V©7¹ȹ„[ËÂÕÎþ>sõ¥þ7!l€˜&ãNØßß¾}K!\·;ˆsÛ<„¹7á'/hÈš9ÚXÉÕ‚j3Gl£Ôz,o,° ;FoŽ’»i:WzÒ Í1%"C˜©Œ1à tL€oE8 ï|:R`´Þ˜Ø[ Є¬ã‘6Å•œÑ¼…ۨˉ™u ÆbŽÂ~ë!ÞBôÑñ[ Ky¹’€qE™sªi÷áÝ¡T¯1uJìÇ æØˆõp_O®Â§¼ðrŒ ¡¯ß~ºpœ‡‹p —P#q3ôQà~’”yÆ"ïÏð%Sà¬5À£J7©pö–×MÓ“7`XT4æ3|«"+êÎy¡eF¡¹ 2Q´Àb£†9ì£@ƒ;³Š:VÀ€õ¡…Aæb°ÓñxvÞ¦¡š&ð©c ç“·­ÇO]>©ã‡„|\&ƒöŠ}ƹìÝÛ·!ÅC`5róV®ã¿% wrÐyD¨m Ìc(‹rê¬ržBYÛˆs[C¡ˆàíé‹k©/< å­v‡é zçÓO?ýÙBÀz+r¤•Ë¥)ûUª]âh¦TЄú,wb=‡Ë-L”J½8ƒìÌíáp<>?Ÿ„Œ—7o¾÷½·o¿ÿÉRÑÑåKÙ>ßsB|ïí÷¿ÿ‰œ\v‘ •_ ²gÍ%n?-Ÿk:”©Cëp$Þ"| 0 €—Q¦(dÜ óä°–8=B̴ưã(1ýƒwï~øÃ¿ø‹ÿôŸþóþËÿòWŸþõý¡: Îð28´'µØƒŠ€±[]ïEòϨ±ï~øRÛXGh`¡{’`Eó:õ®‹GÄídw–Þ_þ—ÿòWõ)n1oU¦‡1,Bû­£:’RÀw¾‡šÕN±Ê'¾WU|ï>Ÿ@  Ç] àªÎ” A#õ ü“$ð6ø÷¾‡à+•ý›Õi]°TM0°h5]X=½PÂ;A£ª €2D%“™°%Io²Ê–ÊÖ(O¹Ö xveõ0òAf`Bk g\ß8€²á¯ÿkP›’8¶B±×;„¬ oCæ¬EäR¶uþ@ Èš~_{54\ºY®L–ï@†‘Ã"£D—¹êbŠØeÉ ýu'õ;˜R{›•.4ôß%+ÔjRiÀ¢+Ъ *ôLÆŒ×ì+^†8Gõ2^ѳ¾&‰Ý ³’UƒÒ¬ì[›iµÔî Û5“œ£¤ÈLm|µw^"¯½UòÈãö ¬2R²õÔÁc#%õâà'ŒR%6‡yq-EªAe2tìÍõeSûÉrÀ#a·¤Þ¨\Zøž"¹ñj!—dB­61º]wè²%P‚P速¡Ô2èC†…‰¡ËjãðÆ™Š«ïK4&ÔMEqÚË&"C«Ej´Á3g°×TCüÜ€á=æZ͸™é`”÷÷Àù+2R¡Q)¾åª©&ÏDÕXˆM³+tßÚ1N€MÈÀÌQdÏUc „ÂÒb3™)!g8Q#2[]Œ#)#U’\` <Ä'Ïfî%#fC‰sò©Ï¬TÊåXË}!à¿ØVè‡Ðý±q*,.ÂZ'‚)~O¾C’µªó>'ã­U Æú¯3•J:bTbO}ÌcG®¥•Ø©€Gá‚Æ 4­ÎÔKN#® š7!0X©Ž)ž•K6} ©3* F(†k*›^B†J}¡lòlûS¹»ÕËG4ä^Ûô'WıÜàNB#¶††ó†cY2ÉŒñGP`ƒ©†¦Î!o.. æf¢‰µ˜B4²nSõáHBAȺšó§Ã³Oû+iâ”ÚWoRdÃ!0Ñú¡Æu¨PÍ=ƒe*uhBu“éd\׳ Óîh½Iß…}Ð4(£fó]CíGœÂ¤Ôª™ZI”1R¯5%½UÊ2š¦²kèFªd†*&ÓÆ¡FˆÇ^¦*°º°®H}dxÍz,¨:]àf#ªýëÉůԀžBQ“*ø²Ü“£ˆÀ°$½f0à œ¼Jƒš–«žE{ž9v‘SëæŽnÕ‰­OZÀ> ð”4šâåÄèüÊ“5Õ'Ê †×;˜ðq™†ôŸF€Î)R“¦ +Ã<ÃYM ñ§ ‰'µåÒ|¡£LñÛTàÖƒ3QŒ©’ È«ÃWÈÔ©L„F‰)_‘™M™ŒŒz2u4êYN .0ФP” …ÁJ©š’[[¨˜&§$Y¡ThÒÑ §§Õ8瓳RéRV¡H…DP¤ÔX X¸ÌP2S ‚j±†Æ^B­ ~ÀËÀ‘AÊÆž‘–Cº õBÁÆvWnyI=Æ<È^<Ùdàá_©}Î|ã àšÁ@3PÿäáXC•˜ƒÁ²EV´.úÁa‹:|Hõ]­TG}»N[ЄH•pDeXqXŒ(JîàŒ$±Ñ¯2i('WaLKfRŸÊ _€î®ë@µ-ò‡äêÙZk–„iE?Š<ÈÚ• œé‚Fã/š0W&Œ“@Ö”™`çØ0¹DF#(òAmMœn&øubnÜÑ{Âaq~ mZ²T§IðL¥„…BH8R»R¬œe ‘f¶Ü<Àˆà3]”áD¼yÜ•hV£@¡~D#"—æÆf0Ñò†Â°aS@ÀH¬áè¡Ó†©P¹¦Vƒ2ÿÐül$Bn!)+J5“&Š ÜÏìêRú5’k¢EfÀq.ȵŽfÞ²Öt¾N@èànF;’Çbž‚ËÜH:ߨ!HO˺qéå÷•³¨Jè즨”°Ù(ë‚„ J:œª/P %ðMö]Å!SÁ ½Åžñ˜^ 6,üJ £hay°Cô°|»…†Æ:Æ^J(¸Éó)‡NÀ‡ã)³)e«; Lª“Ç”„Ѧá!¾TÖbjµÁ  bè42Œø Ës) d@GÊåZ)^,K°Ø›Œ@¼ZÈR@m¢—Q¡‘PàA‘h‚í¡Cžr9HHN"‘ Lù(iõg²Í kB£ rÿ>ãI†õ\ï¥Â9ËvT,ʲÜåZÊŸòæC“ŒÁ:bcª0Ez¯K7Å)Þ;ƒé 8©PüŸ•æx¶b€GWMƬ¡äCÌXòmÐ7) ŠÓKµmøÍ°Èôá_jeâeÁ—Ö8ÒP`©X5 ê™$¾Qf?Ÿ—À9– [I©g;“Ž›XpÛÌ8°$s†’WÖØàËX°‘)Yþ7Œ¢k€¢!iþ‡Æ[1Î4&›ÛÕ¯ã×â”.êÖá8|›2j Ö‡®h/^4™4£:gQ,*ó·Ã¿ðgóŠôz?˜+]¿©²ãfU"s/Ìülz8ì‘t™‘ˆÆœÔ9ìlˆøŸxTÚÞý¥"è CÔð—,‚RÑalÔ„ ·®zM-ûRé®À-ð_ CþF莲W׿‚ZÆ@ÒÛº’ú®•¿­AßÖÔíƒOx¼ ߤé¾²$á—+'|êpB=›³ÎÞhÀwh%þ/s(ݲ.|ú¬Ÿn*C»s—òàm9΄1†ÆZD  ®øª×ÈH¡FЮ¨v-žR­:v×&›aH<ú‚Xª ³&ÛBgÛƒ1†(Çì ]°ÛÆÆ¦E†Ð58ùÐE¸øÒýõZÛuí¢ÔØW¤ó×l×5Šfr±ÿ¾X‘K •ª¹t.6åvØê"x©LÙt¤Qã 6ž:QÎ ÒC‰×Öž;K`äï59ј­Ì¡2žÃ°+¼-܆59:‡¡|¹T/‡ùrÞ6Ç}‘"ä,Ç ïÍ -OŒµgqêMÜÞ¤n›€†QƒS‡X<¦/ã?^$~vÈ9wj_ʳÖöž¸üe„¯Ð)ìKCpÅ/4ö+ÛŒ$ó¤D@fk«÷Dzy¦‘!ƒühÿQÂå7´âß—ç¡CÇZ Ћ綑ÏÛiT›\~S~©ÀXÆëö|uZÍžÆH¨.gŠEÌ£]Ñ”(^kõcw§k/<§Ãñ,½¶ø#ô• LûÒ£½hôÒ0×؀xÁ™#8i‘Bݰ½áç:ÿÕÎOW Ø_T¹æþÖ®&+Iq%6ÕCF_,o]y}Ø÷ÌךƄKe@ånc—šò7p–ºF‹Å\ѕق› Κ4)ßEÎzùÌ)@Q™³Fb8‡à5¶’ã¶–b–’0‡‰Ç,ÌÁ· HK vo‹w,Çdg÷ M@›’ØIb”7N-a3–èB€jX³( nIløÕ“‹Ú+ŽÎeÍÏãÊÚèádÑ•,YšEIønF² Ón©}r¤ÐYÔ°µS«/‹d˜äL,HÛèö,LGù0 ¹^úví?w¶ÿBÚeXÈÒ>3ŠtšbPÃÓ Ö®hª—®0¤+°¾ÕÑ5”Þd3Û«íJò¡Ý›d.ƒ˜dóI¢ÃB’*OfGEN&÷ƒ%³3‚ÅŽšÕŠb!6¢&‹«-çg†¬[o4á QLÍ(ßdÍßÚ¿]÷-d%f²Vc¨»ÔXVÞ¨Ž%Q’X Ë4…R^Ü©Ní#èe)_€/µù‘cÃq&ˆ§ÿ h‹?÷ãOARájA-?¤¬‡ãYweäbf*Ã<вÊ%ô[Ot+6!¾¦n4 ô|žµ øÔâî·iæ9ÈÇ·Â㘠±¾¨MªŽ£ K«9 FÑÎs»N–ÃÆQ™É Y½ËK2— ÚîR±%ÈE/V½$µF¼ƒ\öâ­@ަÒ4gÀI0ðY탈ŵ*À)RÁß6éVî3þí~~*HAKG³+¦ã…¬np:u¥’¾4þó¨åÉ”ªíi+í~ ãÛ:MÇà¹]1(.Ä¢ÌÎáËU>ÙÜ‚‚ÐtP=/ªB¶Ò—ÆŸ÷@åôÚö·ÒxIy‰4µÛÉ™m­)¼’W*ÎáËU>®¦ÔWõ_†G££Î¢®V€¢Þ¸ ëÂà-Yg´èhõÒß™#3¹`ûXvQ…иdqZ?çë¼Ô/¸ÞY´èB!SfüÌá#°*æÛ˜Ïë“O½,~yËÌ—()Ó’•<I4òW½4€ÄÏ?eSÏçõñ§ZÖ±ÉP+«ãk~Ð?'k%¾ÅPùŸ£dgÐÂø­…dw:!Ó@‚Q¿KŠÚ7æPã6äàÿ‚!§ó?+¥ÖN7zâ×É„ƒ ¯„ùêV=¼qDe%àúÂw¡9^±…ÿ¨þß\Gçç.%³£Â“6i‰Åk ›[f-€n‰jvɹ1>•“kZTO†U)Õ 1à¡$ñ.YJZ8%Ѥ€%–SY Û`±îÎäùT2\×R5Il“¢6kNßÐÞÊÿh<ŽÎj¼§nRlKªˆbQ È&ÇØ5¬Í“7šÆ-õò·uŒ.Fò"­Ó¦‹Mú'Ö˜Zˆt6ÐæÕeì ß07kà4ÑXîÔ ¡qœÒX+A7’ 3}£†ÄA.E˜ÃJE"‰l ²Dµ` ñÑ#÷D|£X,w3êpÆ&í ˜ˆ%ÜÔ¡µÅd|eì,ÊiVcdÖG:ÈÇ.û nøFÆn“™LôF™ÏŽ*¶ÆË3ýP@Ûyͼ»ú 1ba7¢ÈLwo‘_,g>І\"óèƒoA²šy:A^-3˰•­ÌìçóÍ9œNa9DtÞ‚ýMMã)`ìno f“¹¾u7Nf¸‡ÇR&(R‡ãá˜}³‹¤¦ê#–Ú„*ƒ©9Îd#©$HÒíTðç“äÃ]Ê™uªÍö´'ïÝŠ8—ʥIJ$E±ðÚ=)Rµz[¤´{5Êœîhø2]Q“ÖºÞ›š² q]ÎsZÍ! (:ºŒáºQPAp¯ÛñÐ¥½ñ á‘ïhFí8Î0™…º~ÒéÂåRmÔâ˜wSrß ÿTœÚ#s+²íŠôT‡{°ÆŸÆ³ë#%ѾZ^µ¢ñVo;šþM;ŠVÝhû*¹÷x¯ÎM7ÈK“yènÝ,ën›=O"y§E+£ÁDÊ—¹r±6ßœ..&Ü㌴Ôâ²ë]ü6y¾³bæ€'1­ÌIºé…9Þ×uÉuèsèb@¼ã"äÌ~r²á¦Œ×™2Ç=4B–V±¿PKnœW„aM¨ä”­Û•†¬ͤ9=x–ñã‹mò‡Ó³w7Á®Ž§³F¢™½iw‡ÕÚàîxiÞ?qÖÉÛJ,Ý-)}æ/hÞ²ôép:àý‰Ñôq:†='%=ÎXž,½–>O£ûÖÍè§Ö:¢©û¢pæbž7Ä GGZÑDv©¨_uNKRÉ8 ¥l&„­TXA_DSxAœ×– ¥^K…j“˜êDz4eÏ ¨ ÂjdnFl6¾jÄ@¤¬n ¨5ÃÃ+DJÆzjÅEh˜•Ñs•iÀ@Õ£s¸â¦!3¹šÉÕâéž"‡÷œ&®vUkFýÃ6ETæw/Þp¯iÅ%^£<Ô8ÚpG89ÞñŠV³o¾—ÜÇG«þè5ûÈõ²³ 9­XÜW$u³D‘lK¸Ûš{›„Ø8ÄiÞ4J&ád…Hº{›Ù˜'ØMžW(hbàÉyg:S’ô$³Á’ë¸:&ÌKº­ÆIIžùãÀ£bÉ7oN¸Sºé`º¾;&i¤6yŽèJÇSžÂ)V!aQœXDt æ:È•$0;,DÅ,Q©D Ïj‘ôâ7ØIªE`M?m©Gn¤‹M#¿¼±1Ò¥‚ºÿ‚0%åiŸ¾`á/µ,z(6_r™-Êú/ø?ùìÛÚ4 pCI<é}‚—â¸nLáK' ³&n­À¡º“!m¾ˆý—×ýo²À ’ù{e-¾›’s_öíAIHiúò¬4ç‘ñŠýsLXq¾Ÿx=6îµüÖ‡òarNŸ¼£äüÈLm¶È¢ä*4nà€DØ‚JfÇ­„¸µ‰gŸ&#âiãÔàã)¦n-î¿ ŽP×|"ñ•a8’uTÝ5ÖŠÕ7¤Îc10Úy‰ˆ‹Vˆå[±BFÝ"†ïf×êJp©3RW$i'·9yU´ÕÜŽsíHBéˆX9s+шKMŒß“ò­…ÙѰiX‡¡ y,?ËkBjHi .Q7²–1 =&Ç!Ù×ð,Ã9ç Ä.˜Qøø•õ¶GËžî¸MSh÷<¸nO|ûžOáx|ÈjD¢üª‘\ K )ñtÕÊ}T¤`8Œ¦ÈQ"e­žŠKïÈF¾×ÈSK)xw\I…ùamê>þi‡ŽGg,ÀkF-îÿ]Œl—nPŽä«GÒÁõ‰w¼PÄæµWtHS$mýnÑC(õöÇã·ÍßäÔv¿ÕZ¡4|k{F6/’ O >¼þr0|±Ù³à”ò&öÑhMñÅ œzãùœÖTÖEéÔ¡Ö¨ÉàäN|OÚ†“àè¤UË: ’é)¨K³2¸ù$Y§‹Äê®A…:…Ä¡û×›poÚzuÈqÒ¾®xÆ• ¯Æ`ý÷ÄÞ†ñ(ñø%{ÄѧCM슻®˜„¸N+áÝŒ–æMÂûcѺ&dáˆÁ9éŒ™Šˆ„0öK¾cX‰”˜{jÔ_eŽæ„‡0f’½äü@äâœàQo‘ežV9eÎñhÃCwÛŠsòÌä„8\’ãŒë‘pXæœNç1A¤!åœc§“­åôÐzûöwºÚ›@÷•XÂÝCSlgÂ.H|¾%¬k.ÀO©+XbÂ`‰#æš&T:« ødÚñ´ Oâ3¬ê‹;¥™â6Ù,Ãâ3ÚÀŸÑfûŒ6Ûg´!/Ãhñé<Ü?(ÞC«'n-6ɽßÙŸJ;êÞíšo=qßýñ@¥ø¶gƒ;óø ± aëãGÄ3‰+O¦©x*O²ÅQfòM×<:ÊX®!Å2–³Z&qꪋcù–#ô´t¸|…umãÚø²aä²o²³?ñü]ýëø÷ç-o9î´*Ú(wS’~‰ÒìN/‘øÙ<ù»Ip)o¸îÄ®&O«^øÖ•ã­ŸÏß ‹’L"Û‹"ÂoL¥ÛPgEN Ó*’Wñ¸+\‚±„ ,Î-¿„§!ÒÕç€6^ç»>ÓëñÄà•r5Þä³Õ×4ÁÓ!8êöá˨{+ÁJQÐŒŽ>ØTíƒèa :áÝ{’0S2ã,aÉŽ¿šÐQ/IèìlKÇ%&sÄcnð\s¸'v8dÌ9¯ã3 Ìp…áWu½&ÞsÌNelÎ ±Yˆå6JX$8Y>ó”î®"yFˆsJiAÂÄbÞÂE“Ù«Óðæ,äjX‡ZÌkê<£ˆkÞ›vÙÖ{ î}lŒçHªsªÀ12…EÒÕ‚Ëb!BþÌ®z}ž_ìZm2iF™ÕHÏ©„'EÖ¾RlܰmÛØmã¶×¼øj åvûÒ+|Ê«¯:߼ɇƒó¹¯—Ú¦}×"%5Γœ:pÛiêùÙ=²>žrogË)pºjuÕÌ™ŠœJ^ ”V"‡¢ÖÊHxŒ´?n±~ž:âHkzâGTÓê‰ãºsЗ©Œ{dæq\—ày–ã<Žû+̬q›¶rü*8y’8>¹af˜ï._Ãÿó©Ä+âgu„·ëuÅÏÕN±c\ü8Ù©ˆŸÙO0çOnvÅOîÍBüì8Àé(?{2ˆ\wãÏÏ1~¶Z)îW+0›UbgæGÃ\Æ&”7wÅü+ £Ê+™¬D ÅŽBlb©4øŠõˆÛå þ‘ÓÈ G¦)²9"pñ“0‰T€ãF½š ¤&_[õ_ã”܇I;ÄçÃdËøñM†9<ÒîUOüx:KÞ–qJw9þâ ÇŸOrü ‚‰ Ü»»>ía{x=Áç {>HkÎ96ó!;ÕC_<¤»ú³1ùL‘Ÿrg‰iÂ˃ €«a¦’ìQöE¢H}H—KÀ¡Ãu”j-§`ÁÊÜR†Ux‚¼3!£-Šç ÌP-¹7Dîd@¿‹† ª‹€Ä¼IÀˀí0ð­µ`;ž. $uÀî™-”pŠXÑÅGAzaôfZ.ÁÖg²¨ÜI-£MDˆrZúJØf„Že¦’‹Ñ$ûÉýâôŽ)ÂG Rå딚—EÅd§fÎZ.Ý*³Í%Nú…~Ï5Oº'¡ºhqÉx1ü0¨ã'dÍQ²$GuiÖ–|åìNñÕ k’E'g•¬ºì¸vr»ÌŠLW²fɾm º5rµè? ÒÒÂ3~{ÐjìVí¤eI™úu/Õ®K¦¥ÝI¦ô]IÃB*V nñŒC¤™]`-±QršŸ`èt-[̨ µrÝ,¶ VX­°Y„ù£²\Hã„ ¶B¹„‚K„5uÎß+¬j(u*Sà 75·Yt¥«ØûU !·2ã ‰ úŸ[]…†Ÿ‡œ·Tú8\Ù>¥¥Rç,éÿµ¤Î×y C¾Iç»bÎYŒÊ¡ôd²–`>æ°d®[WÅŠîe}ãƒ]‹`-âhU›:ìÏdz²Â+“©D‰ÉYú²y*¯DRÿP9fênD¼¨²Äu{œ}UK¼¤‚pÜƯyNdzℹP³€xœYE>tÊ×`_‘èf®¸a™µ%¹1˜1­1˜Y¬Y‹RD(žÉ7JÆ5wÌ2É%Cö¥fhm!g†«¨Ëc“`%ÊçÀ¸‘Ê[¥V*ØK•î]ŸïDt¯^Î Œ+í¶n{`èÎåü€µÊ*»Î*,X ¥²—ùÑ¢j¡œçÕ(©V »W%2ÿ}‘ìÈìæÙhžÞ<;’£¼ €ÂÚّͳ?Ž~Ù–,ˆ{!Ü%¿v9´¤â:]¤XX×*—Øltø‚*÷ÐÊ{а Ñ-å[(僲û`¢Ú«lX"-ÐyòºœkOŸ»oÓì\t©ì†J­ˆ@ɾû;À튌ši‚Íõ-ò ½6—Ü{æ–ò»$ã¹PU$¤T%-óm§¾½bBõÒ‚ÝTB3ô5h¼é:s×éAªÕˆØÆ5›òZðS‹ô04„pY¤Ð‘.`Ö‹“¥êO3i(‰Ø¡M„†òôEˆ^¿`\Ú½‚¹ƒÆ­*([ªÚN4lçRüJW¢ˆ]a}´§¥rMq®Ú–9Õ]f½Ö‚¥t¯$=¶ðÁŸz²þ\×°Š6,`·¢ú¬DÕ'¡vRä¯éêXýÒª_4­;2Ïø² T\˜5Þîç­p“z*{¡Ë9¤Ë$¯É=ŠñO‘e[gb)-*e|³qÙŸj #K/õ ÷ g[ª&pÉÙ,ãÒR•Wãh€ªLû’ñ^ž©$,Þ’Ð2ˆ¤H¢:‹q¢¢=qÁ˓ƫ¿}j+R¼ F7ÄÆ/„Ž|¡öqø2\˜Ý¡µ ÿJXůDå”ÔáêI<÷ª­Û¤ï€:¯uªE=‰pE¿XÛOÂX²ÜÄt$²,©A(Rb…FæX3¶¥ž2„DJõÖ Õ› ²ôÅGìwé•õq¦!.8X¡Ê]ô!™¤,UÜË–&¶#È5JËùºK1Ä-úW –„î³ÜÕ®­Mu6ç §ËjàÞ%u6¨…Kóæú=´×*Kaž#zl/ÇÆÆ¹H8›g3ÊY|]@Rï±mI¡H@¹¹ÌÖµk{ IA{ÊÖsPbê 8Œ‘…ºU Q `u%·}ßÔÂ<«êrénäq¤ØóŒT®¶þö %ÿ¸%JWrŸg4m¸cØ´ä² -‰Iˆ®ÅKYo’¾mf³á¹­`†¶.‚eß°+ ï¾G.zý%ºÑXƒçqH DìBH Ã`WAêA7ØvIŠ‹±/EÍý@ªf¡î#«”³övpY8@¡:dVT&°Í J&Êyrl÷Bæ€ë1ù&CÀ%ùö6N NÔJ¸V7P-8½=4è‹ a.\’%EY6ç.ÌÒ_Ü-±ÒArålyeýN/\ÈÙÒò;Å^‘yIõ|!ä(âwa´2«sÃ@xKÓ˜Y™S”†r%ÀR^iЋ–fÎj.¯X¨ç^¤¡ Ù.…R€°Ï%V 3SibòºÖ“ î›´HÙ[F· G{N]ÔÊdžp Lø‡ožC( DºæJ¨žB¤ì\á^¹p_|îCâBÑ1²(‹öA1¿ˆ†h[\¼•‚( Ìùw†ë Œv1ÞÖEþRËCB¿1EZ>Vze©.(Û )ôðã¶’„¿äaI.#,é#e†Ìx—à ÐüRæÖExÏÅV ‚[[-ÆH{úàÚ|2|ó’4òim.¢Mk£+Z†VŒÉìÖÒœÞÖôûð§ÌÉ4I±žXW3¹ ›Z’Únæ\©|"+´5t5“‰\¥¾Œ“kœ¥xí…ÈT 7¡ ôpo"WÕkä”V×1j°v2SËhÇVž!E@º?ã‚Ãéþ(>À"Ô$9°¨ROÙh¾ÄÎdÌä>L h#*r¯Îµ`ãRèÓ†C`XפN-ÐÔÅ&(×·E÷:˜R eAÈPïbGÈPï¤Nä»~L $ˆ€G9ÄJQSD Öƒ=Ãgé9B˜‘„¶‰u¯e憆s ¿+sxdôÌ0¼s0«`¼ÅKœszUHÒ¨™°V½–!åÔaša¶N¾BÚC õ…ÿsÝðoXˆH(ç‰I½>ZÄíI˜sB? p ÌdXð±2PaiÆ Ó pÏ¡ØÜsî-Šw4 B7 30@r}ˆöÊ‹KÔÔÑ6 •€Áì“À"OXÀÇ´KêÆÔ?V s”åî}‚–YÄl”³KLš\@ê宸˜!Ï,e”sŒŸ4dQº1ð虲‰G4©dð&Ó"#ƒ\¦ïŠŒÀðG7—Ðq Ífe aò"MÏjg¤¨£»À°2G;v × '‘£µÇÜåD[ìñh +‘ª—)O±í3+ILE~g,iøšòÄ£l’S*"† 캡FÌ ¨C43QÚ£2 ¢`Ç`ØD q0µ)ÅxÎVÎîØYI ÍZ®QWÀmÃS­Üèš|¢dêÇ,õ¶éLõµÝÛ‘£=Ú<ºÜ ²G4½‹{ˆGA«EU/ûÒeJ+ÒÎúŸ»×“G_n¢E±º¨Ý\åoy§O P!eAdÂsksCŽ'ªˆ%~—G$dXÑ„Øp ÓÅ’Z\8bDä2ó[IÀ'µt¡·2Å„ Ã;Ä]6Œ EÐx®æbqþlÕI58µV%­Cæ.[5ý, a¾ Z*~g½D$ Ä&û.Y ;ýç\›Æ4ªœòû¿C)x*EFrËðVPHvL sZ³’í™ÞY%ÿVqŠ$ýC\!o É4+ÍIèÃt“åù’34!L3ìj¹ ‚ûEïb{‹/ŒQ¢’FTd©èÔñ…f&ä#(uTTìz'_›ŠdέáÞ«Š%–ÑÔs²86™X&³1=3¬)¦M4•a¶UÿI€©ªµcÓ&™,£~–rŸQ R÷žj—ÈDâ uö;Ò0ªf¿T“^FyI‚´y—à2¿ÉC–Ttë® W€‘]'µ@ìù*Aº)WS7åÖò…—9%ðL‹E#„múî±í6 GûPìjº7GöÑtdtWÎ`y+Ô lz5Ác°¼–à2X¢ò—¯%_<ý:Q åî OÒ2Ôñi[q‡ oMqmyŸSC’Eò¬Z‘c©*g¥ÚŽØ¢PÑ×Ê4ŒX1’Û\áÑhaû›Œ4-Ý’ËR`bbåÈ8ö2ú°@Ű)ÆÞ¡Ä•-} ×;%]kí}Äj6QðM€j\ˆ S*ñ™o°œDД¤{Ç’(ÓŒxRNþâܳ¨L¥YMŽM¬˜T£ø; ¢È£ÐJwN¡Ø•ò[,èÂÅȃ41ÛH²t2r¾åá™é!PM+ÊÀße_´IŽk_$í/),}e‰» ŒtòXÅ4\„Ts ÄÝ ¥B¶ÅCLfê6n«EÎò1’µ@Q'†NFn¬ÉÇ5lÆj0ºÞ8 »Ä!&%D¬…³O:5ií€(6 aÛQ8Cs„;ö,߆Ó3¬`N–‘%GÛq˜PÌ’þ§ýB¢ÿRßÔKq[ÔÌüâ567)·Ô£BÑLnhõÛŒfFÕ5qÒ¬(dNAçùöÅÓ@#R]™«p¹‚Í\Áæ{œªÓoÓýNm]ãUNTÜ̽M„º^1¡qÎB Ù£T}Pì>Oj¬K C@‡ÆÐ1Kâ2FÆgj`ß1Ë ¸},è $úÅBågè_IÖ’%E!ùh嬗?®žõ:Ã,ÌJŽ—§wÆeWdŒSn3F¥Eh%TôX—X²ŽË½¸(öIš§Z1\.·38³¢Xævù()kåzB-kÚ³i©ìB,E"˜ž¥·I‡œNÅ]T^šÐ°3ˆRo*cC aÚÂŽ ɪ©u ¸•ª°VHb“®¤F.Ñe5‚8ã·ï~¼CÆ÷lÙ>ílñö?;9(ñÍKI£™Yz7^#I4^ó^lóx/»š'ÖŰI&dÛádh~úB{Ab&«($SËËùHîÊ[2¹tL–ë¨à,Má5å6x&› xi™ËÂf{á”ú²âM36ã”féhQ”… ÜŸ’ ‡jU_a¥}s)êÂDI¿4ƒšTÐàÐùàšhÿàðZáòÇ~à}„LÂTöQjõÄu"—œå>ƒ( ¡Ÿ.Þÿë$˜C³Ñ,™ ÈnÀ§Æ^©\ & @Z€“ƒÏ9€Ѓ‡AEº€78ƒôáP†ÍV¦Í]Ï…r*ËähQãufðÎ~Wd”í~1H·ë5¤Û™[×®,Qÿù9`¸óYsØ|‹“ƒªXK*XI;pW¿h)–¡–?Óqc!•M(ÜTµœ ~5 ÌHYþ¬«d¬%¬×ÛBåç\¾çAÈœ“HÍ.f B¶B99ñ@&4…Nâ´­›èáó©ß‚Èè-4U}¥¤còÃìm:@Ewù¤J{~–ÖÞ:é J‰N"Ï¿“B­…¼Åp oΑ+'íåQ0w ¬óÌÖju[ŒŽÈÕ‰{•Ö‡£µî\†ŽXˆE0û~Á5½† ¬( X´\7èY|Wi•KÄEqCŠI™ø¾hÒ²yÊŽÈ‹½TžÙ#T|“/†“q•P2.Ö?|Õ꽎b¬w[šð<ø2@²!%Ø ˆj)ÊGÃ"(eÜ;+%Qt ·¼7™–)û‹` o–̠ú°>b«£ç!s'fd ̬¿”€ ÕƒVÎ}ap§XîG@·B¦ÒNuè9ât³"q”"虡8uôC?¨à×õΖa”‰¿f›‘+÷(SÀƒC/Z6gÛäûê%‘àcë%U!ÓÁ,$LAÂLȧ>œ— ¼´Ì`1‚ãzD-)%k2µä¼¿†²™†ÓI›hв ~¯‡Í¦ñ¡"bÀÙÌ t/8Q³ˆ= @ŒTß²( Fð8±µùQN)÷¢{V l˜=›6R@'>æJ5®|\ÏÂwô–j?¬GØÒÿ]P².õé%çö ´(ý!†*Þ*6^Õבި17õ<7c{lã! Ï›zíHï{Ñs„Z‰¿YHE±êv%mÆë›ãs8áSdÑ:bŠ'™Ôµép8¿¤±|«üKó?$𬢿ÓòÁÄýˆ^w~->(Nô¬'¸”à}>ìÙ iª<Ÿ™¤{Á¢ø…fÄe9Ö²í¦ã¹ŸPèE€‚½m†Žã’&SPɨ)C[Aa$ùƒVÚL‰3{²[Bmôz¸å\^25Ë ýë°µa»šÒ¶ÝÓˆ›þÆ%ûáJ¡® i“˜- øâü¥Éi 7©¬t4Hɤ?$Wh•…îÀk&Tö.ÛߤÕÊ$9U(¦¼.O'šÈY–¨&*­jÁVbº$—.HB–´X.À2 jÖ6縊NIE³ŸVÄin1^¨üâ¨êGlZ†Uy$m…E¡t>?‰1¥ó7K.Â'–¥Ná§%¦MùN à[uÉ7™PçpbÒ r)_,+Vky8K4ù\ÿE¹œË 9¤,ÊŸ¨0Œ¾0½†ÅxÚ´6kx­ŒŠøz›°¡‹ƒ` *=>,žüTébùH‰Í˜üo»ê@ù™gaf6d¢_ÃãUª'T4é}LBÅ …2Ê›¬=@¡@ª·A¯–ê¶=™Nϯ£w)3R94Ç6¡÷%##Ü~·þ¢åo•žO²¼s›èi JvèDZй¼„L, 6¬°bšàkÇëú äs 5yëwi.Í'""wôҸλe1Ûà–î õ-Ú"ÈÝCzŒ÷é§b8­©CØ´%M—ôe&f]`¾,V›Þœ"öÜoy~1B1Q‡õkz5‚2 Tút£m|Òí„Z¢ eÖðG©¢;Ï´±Qøõ/ /KÏ„ï5’lCÉŠF@’Fyþ¦VÀÞØ!ˆöî C‚ùÇÉ;fαz碗R9Ð9 ð’¥+¥±ôY–zÜfnŒÉ³(ú™Í€ZHb`> H‹ñ²îJi‰ŸØæz„K’È8.¹ÃWe:ˆî˜þãøaÝ3®Ót3ˆÛk*^'ƒµ ñÆê $#¶Üú”ÉSü?j¨Cf‹àÎ Ù.ÿÈ(XFÒš1NÚÎ"éÙ)GÕÌþCpzövyÍå…¡oˆLŠù†I:ÈØKšmú6B¬[VÂS nQC˜¸º‰nû¡Y .¼Ôóç9öI%Çò«›‘Rɤ=°9`ö¥ KŽóÌÐoÃ3ÄÏøZªÒœ´+V Ò±±[é€KC%S„?cÇ—¾*8'<–+ýˆ ¨ä’õŒx i×Cr£LÞj¹üJ9(fÁ°ŸÌÃüV„ð"BJe‘ì}ÅùÏ ‚TAOæ¯Ü Ð—УA^ÐðÙ×~ ?ìñ–°Rž-pzâÍ÷™±Yag{ä±8NŒx~‚ÊñÏ÷››ÁÅc:§r4­•ŸãBä’-0ð2šYnAlÂLZ¸†EÀïfÃկ߂Üà4v¼w|"w¯ñ=nšš3#BM(õÚü)\unM´ Ç)©£ w ›íe½ŒŒœÀŠ$ŒÅ44‘9L ›Ã±Ô`ñ?¨*3@Œ$P÷ Gý”ÖQ9E7]5„Êô\4kË Gm¦¯¾T‹áD‘òfÑ&a_ˆÜþ–€±o„¸”ÿÁ†‰ÇÍJ˜¬–úwªE†ÆíM¦=Í `¸cæ€ƒÍØ¤u±›ªßi–¥4¸¥áË–èY毜ÐÔIƒÄ=ë¹?7að¼Á  lÒíâpů%!—ù0•ò$'|Ææ{dj¹G–¿óÛ·µ‚U_º<¤Æ—Svë’J¡Q×ÌCv${g6¼Âwf÷Éw¥v;¦5*ÜKXÂ~¡ÍœizêZ!¦µÒHP#V@näæ#_ ¡çˆþ¡äœ;–ÖÀ}@G8Ë/çfãX>_²i¢-ëä`«|öÔxÍ6Õ­Ô%J£ ©‹€aÞ6°%‰[ØÑš¹9àÃ’7 0¿ô•às…>ü¾‚´›¼%7[,ߢ‹†²…9wblÌGº’sÑAƒÀe%V™‡¤íe€øGt¢Ýg´GtÁ/Ô‰ž ¡Ý:1 mB'Ê^KÝ 6–RO]F‚+rš^‚7g÷ã¤à£ÃrÂ58# ……eåI?<Qt”›¼èLÎÓu{H^lgG+|O, ·‹á|«ÏØòl;”›šhÑBGÈ#]5ƒs=G7m ˆ3l`«ʃ¥âåŽ(®åX¹Š›ˆ<í4Š‘.`}žé|…k&ŸŽ;úÇò¨|ë€Î/€”Gú@rãç0Â8J‹˜·Ý —ÔcÁf‹bÉÛˆ|PƒYFeq^¡é³–Ÿ­B³7(ޤ(Nëá ÇqY­¬ÑMðãÜ߬eeîÏ¿tg+£8oÐJ–M ˆ¥Ø#‰zŸ§nß‘|³užÓd Ò=0d½íl…mCBâ ¦·b×:Š7€Fc¹ ûÿóœ9›aQ[/¾ªÀ:À —óNæIÚMéË’»\̳Ò(°ø?¨= ¤Ñâ8 æÎbÔy&Þ“F7Žcw§á‘mRÇ—ˆuf›ë`•E#—Z”åÞƒISº%3;XƒþpΞ±xÃe­Î·Y IF½)B ‘0¾»A BÉÜåhñÛäœ7:xiÓÜ¿ï> ¡Nñãg ËßÉóØ&kv(ñáÚ©™~,VòHÔÌclÝÌX ½;m±ðƽ°ï‡5™Èzhá1¿†ú0£,VPa͕ߛÂ<%?v“fJÿiCö˜þÉž+(ã1;PQbB…N´S¥ ©¹³Y ‘ÁãSñ0DÚ6vMQ0$ÎOkeñöd'÷?ÏoO§Oý“XoSüü}þ·Þ,×Lð˜¯xØbt¬ÌèßÚƒ9˜l« ‚8÷â¼OoéŸòìB/6‘ÅXÍú$ØŽð,?nB¿Ãå0™ œäœ h‹á)èaò&ÈÏA/Ó,]Ìx¸3döÚ‘Øf`€Gy®؈úÒ7ñUÍá3ûÂ~£J}šîB$z²¥®÷P,ÌîMrÆ¿{΋҄˜2ŽsÓ„«^ç½Xhö^04ʦe“ ³§ ­:ËÔµ*rŽ,äÿ€Ý¿¤™I%L2prná™ÍbÝ׈7Ïž`ø##,½‡Y¶-r û6MB.o€ÐL/‰NzKL\ %;}‘ViÔR“Âñ™Ù’Qì_£çrã8a{Nj^n¿dA5[_[T28w0¼ß3š=謬…óæñðÎs‡Zå‡ÿìó²AËv?î^ä6(^¤ YšÂr=m°DyÏe2§0cÏh,Ã(B ŸZ/²à­Aàk$ÏgToE˜ˆ“pLãÏ Ï€ŠMò}xV÷2¢®wv¾£¼’Qw[ò·Ô†[l¸ 7<û×轈 ÿ¬ÑBzÔÙ¦ÛŸ^mT¾c3šõò”52ý¼ ~k¼G˩Ƨ(Ú„A&4– "ÎG:´ð°bêDË·}Ÿ)MTØ™"¥¬íYrÛU-È8A“ŠÛi1Œ¦v±5`'جˆ³Ùóáùð65ÅÂÛˆ3À¹ü9¿Äk:x>x€Ô(ÃIž Ôú0ryûÁkœâ¨Ö¤¦Ê™Ü¢öØÐ©4¼ÞâÍ4ϳE»ŸÖ¿Ñ>zkÈeC{•[€Øp èú¯Þ½ûÔ‡Ÿ¥6N{3;DP…ÈÍ¥Þ ~¬R,„¹§Ø¡˜†ü­¸§2nØû™"ˆ%j¨ÿ}œ)œ‰0Utò¿v½E‚8üÏ#ˆH&S Zµ Évy¨°U¬[¹\è ±ØÄ_ ™ÝZ Oj°_öA˜žÝܲ#{§x ëìQ¬†ðÛïÎÿoQµÍªk¢˜üˆörGž—5q# À•Üx3±©+L%׳J~²âN%¼Ír*Ý…h‘lКyvº–ÏÎþUCÇ“Î'oÞ|æ—¸éyÎ<ξèÍ'Ÿ¼ &!êOè4°9ñÙž8ì’©òËH0"Ù§,ŒP˜m‹{’dU 6›G! ÙÉYJRÙŸ ;Í„w I†™ÒPS¸í~l‡É"9°§ølUÞTÃY`Ræ$®·BV.Ø›sêdô3˜ŽÂ^ Ÿûm*á¿ÅÊŠŒ†–OtRPc¼í)г¼0h3žäýïΧÌÂü>ÅŸrHOТ £HA7Ó‘¥HŒ"Ìþ€÷#Ñܘí Õi­0O•Ùî  qlF³°OYAqtÔ±uóܪ¬4Ÿf-{‹¢@ŽfûŠ>>ëÈí .˜˜ÝŒZ6ñðÐ ÎÄTÏŽâ@NE ^4Ø“ð¦Öì½Æ! fGw¹AÁƒ‚|?&”ÛÞJ6\™åΛœéY\ÁðƒÝ‹nD§"ŽóY/ÏPN³;U¢¿—¦À¼pò‹úbµ‘åm~æpÂ&É}ü° *ŒtcqN’ÊbLK’Y“ÔiÎwoÉ÷¾çtkï¨,-Ò]¾¤IQÎá%ègIŸ¼1ŸÿOÞDÿ!J;|¹C¢æíÛ7Ÿˆ+ v;µ FZ~ £NÓ¶â,<È=Ñn×¢…v”+Ò¯tœÿ ҫw¨³Lp¿“>`mHÅI‚6EYä/" ä˜ú6te.Gý™z>¨/qO¦âÔ¤5®rÿä/Ò?à¥x©v”Ž~¤ÑyÜà ÎC~Næ6÷åiøŒ‹©<,ãhŒË°èÓÊÀ‹¿Grð·d;Õôbž7ÎAtçfl¸ÅQv<²AƆê„ÀP™¢[˜àG9wžÑ¨Sj8%AÖræŒÂ1ýTДÚÊrÑþ8;¦uÌ¢>͈­À|:­Pdy:‡p;"­FusÈÛ/á>šB}mn^ç&ÿQÈ¢½ñ– ýTfä-tÍ"è·BVXi`–u!Ä1àgpk?íË©A«$ G/!9¡hnê»Üž·(šé~:ͼ1Ï&m¸:ŸÎý»S yÚ!`6übƒûwPø#LÁGÀ`…» &InVZônاù†XveH†ÔÚüÃbó\üz¥¿7æ­Æ±ü%vö…ÍzšCÁt“_–LK\™¼5õ5Ü¥p÷2¬uæ íà"ñGßÉÝàw÷ÀçpãüܼC¨…¼0ƒj0ÜÎÂ:ÚQ õÜèã´“S$æ½wàï0¹Z%­ä«M±i~)0á7Kn°ZqéWý@+ÜßwµîDOAË"’žN˜•~kËÓs㸔¡’Aß¼ C­ƒ—£«•iņ½sã–®®;MB\Ú´Ùüt‚sPxã ÆOÒy·dÜÁ²CY?þW TÏÈ€mM22,’ÁϦÎÉYvlž±{³ùƦÁäË'`‰VqܸZ~kð qššÁ9Vw׳Cð&U±€ß$‚± 0å®Ç£c-ÝIãÎÄ5ùhMx3\ð½ßá—‚~9øÖ»¸>èÄÄ…E‰ÿò>Ê1`8ëÓ[pUBOÙè£ûm¸úÃFþ묹o ¿¤Ÿçw禟7hý™ '‘Ü—›ŽoŽ¡®3#ÎûÚà"Ol‡ûh8èkŸI¿9Å—F„µ-ÐNHB-Àâ+çgÒ6X°ó÷»w'²ÆÉ_yµ“¿¼J0-¹mx¯ÏDe±6m‰Ú”Ÿvújù"žlÈÓ4KtÔÀ=rØHUK’’朗?îM[š–±?LKðP¢cË^1¸“舌C¶•׿FCO{“un#À‡Í›ÏyÍ`üi"8·ÏÐ5˳quòËg?ó)½J9øºÞü™ÅÂé.Ôy40¥î‚µ†e Î :ï”ú1ÿÎa<ÂLt »,ððLl0#ŸÞ8<ǹ3ðùPôȆI¼¿ö)—T–ÅÛ©¾öá`/Ȱ ¿Ô~÷æNtÃXÆ»üOM“9ÄùNG‘§ù!]ýš „Äs x" §3Ýxwm¬_F -ìtÌå úîô),­-§[ø8ÐÓ»AF9>’…µ2if…‡²…ûdÞQ ÷Ëü†”ƒ ç@ã¿|¾»í›`ÉÝv<ö/Nëû° R¸ÅÀw½ó$¸ˆþß¶N7â2ìUá½ktO ›÷XÚúL#¶9œžŠD16›¿my£Øoð–°¡­nÀfá†[Jxsø€·ØRÖÉÞõuñ¹Tƒ¸æ„{¯s©J‹qHª ½CÂNSÞK·ªfþ4S¼Ïïùo´û·ã ذ9Á¢íȸ™ýNÚ·…´áØA~õ/·#Ò÷_`Þµ†.E$ºÜq§ìúɤ)Ùƒð{°.žrž 1òîY[03ÞÓA;: e`˜òNÛÇ)¡rçæs¯…]?ðòŽ ÛkŠtº_Ÿvj¤}šXcÜy‡¦Ä‡Ú„,YÚ™AwóLŠ8´`ð[ÖÆè8ÔvµÀš¢ZÁ†Õ0½“ã]…n¸ù%¼ûÄÅ{öAÃ{Ë3`;ÐÆ’ ìÚH;ÃÐlÁk[0ݰiàLEÞ4¶ |­8-À.3y— Ø#ð²Ó–VØÞ€½bg ÿxï+­éG´# ¬ÉÓJ' aŽ6êMxøÈÐåLdÃùšSYbÂ*f¢Kœ8Da5xqc‰°ßaÉ"Òhd ËÀæU;xÅJÝDãØó»¦^¦Î'^îW'Ъ)27NPî]_›z‹•ûµH˜„’«÷–˜î|K"Þ‚0S|é÷ìö¼ÞB_:ž À¾a7Æ}/ân=åÓ”ÝÕc#Gº–î±6)µ‹::B¼;}U?ºÚa;Á9Øâìc÷HˆÀ8á°ßŠý›òËäÇj€†’|Î û¬^é†MÊ“HÜ4¢ìM*0³ >9ŽüÕ`ోŠRÝt&œx§Pv’ —|…·oéñÆ¥aR?,ÚT"3ŽRê~óésnÄC:‰‰ á5}Ì_Þ [š7Û“ø$o%ï%Ò,¯Hqo1ÝÖœÂY— múi>ç¥ã×E^QÎYúñšÌÍqN?·”£›æIt³ 7i¿6îù$×3Ùx|£Ñßê&?m åñF r;-ÁŸªÓ‰Ç¸pW1-;’…H(¡—Å;‰%˜xÜ´°•V·ïH[¬oºù+;‡È,”wÝTFîlEh?«ÑÛ‚nVCX3Þ‰$÷ÝGN~Áš× Õï.Åãò6½ò‰!ÎÛ¡¦ð„a÷~Îé-fÖÉi¥Þé±X›*„Îâ·bŸ éF“k¹t]G0éÆõ|qÓõùPH7toy§ÕuynRå§*Š;]q…‹w·Ò³Å­¼Øó$ìZåf–›×±»:£:âý+7ÍëgäÀvË‹Vì§2+¼<3y°-åm6ø‘Ľ3ýú,?“ìG¬ÍÓq6¿6ÏÂÙN«™Eõh¨ÏuµÌhЍ'öT&-Âðb v­íM…pW$ç•âЃ£~CÏ1gb‰Ÿ™ýÃìU\¾Nq›j_ ͹(e¬‘ëÙÄpB¿“PÙøÚ<³¿,AxÂþ ÈQ þš¿Ëéã¨û&ÈŽ@PËcœë¬—ަ˜ ]› ¡÷lܺHÂÆb†*AW ±ÒÄ"1‹¥¯ÈIljh¾+qÁ–G­=,ª«/So&òmÙŸÇÈ7²E÷¼Ä?¿„þ/´¡A+Ü_1eÅ)z/Ë Æ¦-[—åc]ÖcYW'd”OX - <)F„`ÔÌ Æ˜[F¨6M™ &ÇÆ|¶“þZ´Íc€IЂäH͸߄nÁêµ  ®9†Y-soäÜÁ/Ô¤¥(l2&á,¼  @8[×ÒmÚÇX¹dÿlÍ0R/k°ƒàÃÈ0]ùÉù™É½ó$œÈgɾJhŸhÝl4 "%b±IüTQ,¶ˆ„úÏöY‚n-ôÕ—Ø~h>îÀì¢CßDÓÃpÒ;œ‘Ÿ9ìħy4¼€Ö”Bˆt€”ÜvQ¢ k á¦°³Ò£á8{{Œ¨=69ÈΪ'äUÿco+&0^Zô bO=4Íq¸:“…øŒ[˜` l¨áF 4ÉÃ…™`lͳ‰ÊäÀ&;ú—- ØZÌñWq5S·›š½Qƒ½\qÎ_'ö—fhqbËÌúî´d!꾟Ù¼lužgŠÙ-üôØð÷‡é÷žÙ`üÿþéø°!Þó‹ýKk ÄŽUÊ|¤Ành2ÐæÈþ°|éÁ9ÿ@ÿˆ|Éæ3ËÏô‹Œbvr>Ñ?Ül[ÂxžÆtõ`Q±‹m Çç#\ñ-Ƴ1ëùê;  åÙŒÕ]ÃÂ0€[)N‡¶¥+,ñØ}á ÷³;mƒ+€ÂÙh¤ÏƬîÁ }6cuW|ߪز€N‰Æ*òH–¨Y7 »§ tïÈÿ'U²Y‘(f¤ÀΟê¶…&œé͇cíÃQá–ò-ó3åPE»–\Á´Sl×Д Ìc³ÜVŸÏÕO¢Z‘YD7NµOÞT•e¶YàŠ£Ê2á\ ç¬XU†:‹–sÅF¯·ª§ê‡ë‘¾UkçÃsõÃôHCe3WPµH'™Hhˆ^©( óSª¨p–ˇcPÅ¥×±úS´6ÎËs{•lñܓѲ¥P‘œÍ+'Ë!f³›ìªÀ® Ü5Ô³ñ Ec³Õ’³¥{z6¿ ˆälO•ßø·Z6»=ÔȾ‹~Ù® Ä$Ú§ ¥r›ÊÅ#/6ã—Ë‘NÇÛ*ÖÎuÂæF½¸âgѶ‹å¹íâáÔv¹ÜÓè,©?ÛUP+E£ZY–ÓVÆv©­,Ë Ò°Ò¢&•c + ¦aRù2)ÓÃøü„k£˜ØGZ—t¶R¼ˆ]|òSŸrêSOy&H±^Lg DO1yJb2ÅÔZ/¾ÒøÙ«,¶8íÙ lOò! µìÅ·W¦1{Ð?EÛ¬„ìäº0Drv®PО[žTˆË!ûìïP\Ny~tù<+ŸfŽyävP¾×p%»5¥Û\É[³[ªïï¶æH¼I‹ˆC–¬S¾»!žºŽyáPÈOòr'Áu€lÏT= —àl²¿ï¾„0ÎA˜H=Õ‚»F¡S”ò™¨CœÃ ºVG_¤3®–]AxùjÙu„ØÃF˜2Qw—ZZj-÷DYåŽòü¤¼/§Éü¸¼”T¤‡(2½ÜÃÚHIè5 ÖJ»U~ÓÆÝ¶@þ²BÌXcx$4°^G”E°©¼=sUë…<ƘdÀ«¬Ïºòc2Qª,É,­ª[ã¹UZ£[·¡ºwjVYçQùU SOÄàK´B×pcR.Lg-›ájÙu€qCZ<Ðp…ä Vn*:ATžhKçñ€¤gfˆªÃc"þÖ‡ï<¤3é¹xñû—=8–ú7?1–nµä>rÅ£a¹ó3aùyŸÜ¿®ØçvçºÝyîÃséWÆgOÕµjì†zztœý8PmJ7=}ïò‡$Ó­ÓÙ$mÉÚ”n‚žGAt<îä]>åQ4ŒÉÑ–M!ÌèÄLþØdJtÄ–­jº((ã@åízD õ¾þÃfšuÇú³úЛz©¥39Ü ”éÝ>‹³3’„º8âZ~M¹ü@kyÔ5ç&5O~…OÌ™Ä~€ÉÒìdŸ1’¦Èø®¥ƒ‰ea:u˜‹ð×î•Ü$ Ö¨¹¶k{ zwˆô½S‚º.›À^>œ$šg/ìK‚á#"oÁ$ÍUŒ.sÞ!ðøµ{9`i° "Kñ<(óa Ÿ­Y¤49Îjx’½R}C$¹ o 4TN7ì]3“žÄås1¯†'×’¾mfXNx8Æÿ°4S0h÷ڸΈƒ#u„‰‹AoR༖Iß{îyfÉGƒãž§–ð»#qñûœfl‘ýâo‚iÇÆ·îÝÊŽ›æ°ô‹¦ÉÿÖlòÄu_`ÝÿÞ‡I- ‹>}TO,Ù°â &mš-›hYpõ–M´Lô-“h¹›h…µXè/¯É’‡þ‚N™²ä¡¿ +³,R¥i(÷rïÉ þ !’öWôðÌýÀNÀ¿'×U¥‘Ê „×S|eáÙï#€ãu1zV´~¢ÓGÒ4¬›w€ ­¼Ä±ðH'&—î_Ï`Ä@3sM3I1ËLRÔ¸qˇ;‚w 6È4%0ÿHYxã ÍOdÏ ï—‘í2¼UFvÊè.~#ÐoJ{c0ÌàMOÄQÅou²I op*6z[ÙËÛ`–n™ü& ä,“ó@rïVpC/oHÈ+CŠ•ÒHakÅÀ&ìiûEôö¤Ø <·9㌊{ÙÅó‰òÊØH@±å•ó¬m1ÇJÛ**¶ÚÄ÷h0œ>«|IÆ #SÜ Â8“M(÷„= Ñõ6 „]ò¨°è„,kð"Ùæ,¨Q‘MK÷br}°Šì ,4`p]¶]”GÅY|›¨jÑ[/7'k†›wƒÂʶFÎo"ƒ Y!}Ac–Ç„/+ÄÌõ¢x‹%MØyg%@䛋"ÝzL8²Ûž¾uFÖåx9C„`@;"o¹˜ô®¼F׺’À–›Ðô˜›]¢· k­t—n붘hE vÕ⯂ˆPÅÿ̳߳r¹“†feDDSf\ÒdæÛùWbÕ‡/ O‘_~ÖÔ”àv–U~§ÆUÿ'ôOÄN²2·ñu0Á¢˜ m¶ö]dï1 Y‚u|ó“ zê,È8æÿ`3@“ÜOÅÂ4þß.®…÷Ôa@D¯ÛÛÜ()Xx+?Ù5|:“6²óáï‡Iú%­H&ÿ“º‘âì^}èï›l³P €€R(óÜN.ßÏDà9߆]àÖ\¹¸Øåwj)Rèà…u_­H³!ųa΄Õo¦œôÀòÄœNüåmÄòbÐôhZéR´­é&äA³8ªòŠ‹Gúà¶Íà,¦ÓWhLP¡<·«O¹úÕ‘hV²÷˜éeIˆPÂK²·²%«Ái¾"矜m`âÉy 6:·Ñ•uðB¦”щ³œ\°F§ÁÂÏpE_"‚lG¦Z¸ 5‘´5Ÿi¢¸RÂyð/[ÔøçîôÄÿ* q§8áßÍ« >§ðn³‰Ø ‚]fÈ‚7!×þç€ÝçV~à7°ƒl˜Ì5´o6®ÓKËÒÆr¿1wØoåCGh—°º†Í˜E£üî§CünhA‚miA–Õ¹TÃÂô‘Y;„ÞQ•%Ã85UUÏKLøÒóqVHŒ]ŸäNt¯šCŸöFî7 ¿•kO¹JyM)Tõ'Êz«7Îy´ËêîŇÿâ‚ €3ú‡ å  xKlø¼.›wjeøì®e–¿VU¦” ÷ȪU¹O§aÊÒ#³á)àî2²€^KJÖÒþNVÁU¡’}—£È$@{¹ÞÑVSf<ß«`i«c+[ûÑÒñNGuQ±Ì`ïÉÓ ,éÍE¸23*QCjá)¦‡Ç[e<Úeí^kÐ.²&­/Ê"ÿ…TÇD×|"Ö)®¬ž×NœzZ-•Ô‘Ë[òfg0¡t]WF`ªD–pzÁ3¼jyϰ/ãd1…â«ÍLGdþ1tÞÚ„R°¢A™`€Ö‡òü„»rÇVlÐçŒtЀ"FFü)ˆwný^œ×ÀÌÍl *^Esù!=Ò×¶:S­¶·ÊÛ0­­d¶xU0î ¢NCǹŽó··iùdâIxuû %ª6™vl5Ž<"óh$JOHsÓîoáµZÖ˜t7=þŒª3š>÷‚ŠLM‘a.+‰í0q´'*$Ž'_±ÈLœ7m¾FÙ à¯EVUŽ´ñ§MÂÇ$/ÁÁ„†øÄ€„®žú©n‘¾ÁŸ C˜ÌÿiÿxûïÙȪƴ+2¡iŠ™¼ a¼¥»®Ä ®TŸòwxÕo|áïLGcœzâÓ³‰sÌOZJ,ë4kÍ©–µÕ!Ê _°ð…Ï<Å6NXJ'h –œÌÍ02g´Üñ]1G1éŽ×à*]ôÍŠR=‰Æ¶Åkx.Bƒ½|t~“ÿÓëh’ñŸI¢|“þó{„“x¥*‡çSúÏï)Î'¦ÐHïp|Iÿùý7ùx—PÅ8~àÿÌ—QC"WÇSú/nuH,=¿¤ë^X÷œð‹ðv~“þÏ2šEJéeTîÝHIí;·ð%ü9çs°w0ó)ü¹·WÍñŽ!ú¥q?öáÏ¿M.¼Rˆþù¹­o¼a<œZš”¡]šlÜËôNùfN¥ ¼HÏú9Ü©¨uAè²3°yÀ_éЊ£q×Á­ œðâËô’ƃðÜ€=‹ß‹Ï½̦"üz‡Ácr/3¤8Ù'þ3¦ðj¾™öPXvBÀÛÚƒuìè‚ç÷ñUáXNI),›¾Mêèsµ ^õçžÐPéÅSAO€"¼ËñYã0¶ (ÂÛ²ü y5öóÁó›ƒ{Wá›hG¸µ²Òï¿q$|Ç*ØZ U‰h¹µB•²¿$BéeìÈZ UÎéíÈ› Êt¨H\9¬®JPe:T$–šŠ>Škn´óÀËð–lj÷Ƥq›þ_\37FkO‚(î ŽHå!afßQõ4‡Æ3ââ4F­…53zs4g­gs-~7áõ5eði+QJoèxb;º¨‘¶å«A7¥mQ£äŠ×ˆ+ÓðO¦3‰t,ƒ<ÚTòñœþVÖ¿ñ{`ŠKN¿¡çä È6JáãuùDUXVKÓQ$tÚÍÎx¹À CXÓ‡nÑ.‚£, õ9n‹Û᳉Ï B=Äsm« TâÆi£XK¡ž›~Ö²¶ÔKϘŸá×cýOðBYX VKÓÒ:_ƒç 5¡Æ˜„_¤=¤9,ùïÈ–ß9€cj玵é| ³wtGñÒÉ´9>°ˆ0F3ê1òa´)>LjñfÛÚú¹EiRÑšmÏ“ÿ)Nÿó–…>Ùp«ž¾å`:;ºþ'1ýOy*u†xÞ׳‘§Dgò¿%h8Z…Á<Ïx:éêÒG(“¥tàãx,¬Ol—[úÌÏ…q‹o·ÿDZÄaj™ÞE@ß=¹-ÚX ßìáQU?6V·mÑñiR®Þ˜øäZÅTvß’ðZaa)ÿ*ÆsMOàà!:îÅÆöµšÜ…ðº0; Éj†9=|(›gvd[ý|\~“{Ž®BšüLô:Ò2#nx2¨ä‹…‹gk" G^ŸÓ±Q¤X„nô¼žÓyT0:uàÛM*iï£<“¨4\܆¹?~eàÇ«“z/ªåý•øE½–¤XXfvއß[2 €23q¡Ü”Y|D¨!³ü¶&Ë[N¼MsjÚÒZYfùmO‘'$³`–‹¿§=ÉÒǦ~Ñ"X˜jáx.Lqî‹—ÜsÂôú. 3_Mž½f63“U$ªæé+ƒó#¬¯ 5ÈþBŒ0¹J S1ž“«ÃÞ‘¹XÒ*ø[VNLK* —Ñ"!R¢Î¢E%èÍ_fmV|[˜É¿ÑÁ„IyJïú²fmV|?˜(ÚšØË&ä¸õ– û %ÛóþÚËоwZ:ãkðƒ\hŽ”±À¨¬`I+à‹þ¸Ñ0TåQ£a¨t3•›ç_Ã9Ó”?¯gˆöŽ= P_µ06=¢<·%²ÞÄ8²–²9Þ šÙ4KÙdϨ×4.íäT°d¥Õ5N<4k‹_ÅP5®*nÝjDœ—n‡Uû }î¯1êG’4äd@gʱ“j!\.Tæ´+údl^¢¶ËýÖUœ¿æ‚®¹:å¥f$—𙵠ž á#{K…E;÷ÔM;k¤L-º+.»Õ^l6g«Ÿï«{˜ü2³tÞÓÂ}t¸5–^`FðP˜ôÒ2‚‡ÒJ‡± Ý 1ñeþøLæß†W“…Ó¸aÄäBÿ22yÂï!Kï‰ '“ù–PDo¯KG9·ù}ué¼w DÞP½_z'>΀ÎEá=.ñÝ-íÛïÉ6Ä—¾Ä—È•³‚‘›pÏ0ÆFP>é^Qå¸?žÂ möV/ß@xéX¢)+d/\î"U­ˆTµþ!=­õéiÖ?Ú•Ôw)ÁŸöÖ$õ}Iiøï˜"ãXQ†â=Rx`Õ˜ðnyî<šˆs?~‰u:0&xQ±<‡kT‘dø9FX”Clmb&ˆÌ[£ÉT`FrùÕ$ÑÁhå—Ø `T¸ÑK¤+( \ðå±&Y›Ô+–¤ã ‹èÿÁý¬±‹ /<ú×~ÜIøì8µ‰þ#0ì;¡QkÙLzŽ»ET°%€q…þ•³@sY±Ü5ÀmÓÏ&ÍÓ᥹^3ó¡®D‹ø»Á ‡¡Ì?B)·`=6/éðìv#:›B‘sÄ,9…Ž|±v6‘jnȤsºWk:³£Ÿ& øqÀ©Aæ5ç:»aLÞ‡ðÞ?ÈìëÏ4ÖÅÎŽ],Lº+èmÔZAcM|wO‰Ï³'‘™u`oÉàÂf Cg àVt-~ìmÊÃ8»ÙÔ ‘d;ôDÖ”ƒXnœö#‹ ,:®ªÃJSº¦ëj®h¦3M…(µÆRÇQU˜(Òe©ì{§ppM (âáB¢,„HT6µ¼éÖÒï(®ª7h[Â¥Ъ¯}¥š±ûÐOYY¼<§["qä¤çeÝŸ‚ôzÞ!’hC>°EV+ò=Å‘È+ÂsV$íh÷C¦ÁÃ?YBk#ë¡·%ói%‚öîÍsŽcôS¼Ïç?'qtbÚŸ:8çÍx2½± š’dRó©Â9ßüOú±¨–õïÜ8fýðICÜ[<Ò½–âG¶"³áž7Ü8Ͼü¢U¼÷nó»/­^Ö’˜(ÝîüÊÔØ™ã%‚MÊ:1¼LcüT#³6IJK8w’GeŒÍ/ÙT¸ºUå¹UA«Wàƒ˜¾œÌ¿çÐߺ'?åíþŽÇi†cν4ÇÞ.±lÎ Èk&»å×ìµ9è˜ß?T?|ûŽÀŒ‚  _IÔÓò¹V»F™Z£À6R´–ü¿''X6¯ǼˡËO[É<4è+þÇyàø`EÛJ³J{aW!Ÿ¸D|¿Í½6`׸*|xK)NôEáV„A{ºVÈ3–Ÿ40Å!_5í¼E VI«T"3îqL6Þp ‰söt„•°Á{k^ÅhÚûD¨8¸5©tšâݸ9ÞÅbµ×a÷iÆ"xÓ¿ë*ïY…ø|4©å®â¦ôK|eÈÔÈê›ue$ë@¾€4:pwD`xæ ÇÆo¸šÑ;ß=0­k¼nÃn`8@N H¾ÍŸ0„ï$IÑLJ…ÌèÜBg¡,¾-å–5ð7•÷§âÚÿc` ,ð‚IË}¿•ì]Hô—ͨ+ò?%ÿB­„ÐïúÇ¿x$6ÑŠM€V™ò&wÌN`ShƒáucŽo,þÎ&2Zp@‰Ûæp.€Ï”§d/œsóà3‘'øQöCrhÁòœÝ<Å¢ÇÒx/l#U±dñ¦}c9g.ÙºmúzMë,úãÊs²ôÿøðä„¿|\ð‡œo~ ¯<ÕèkÂc(wÂÁ1šóÛà)’ mÇr~sæÂØ¥Ëåw¯*Çš€ÓsÚmõÆÓßz`‹dèó68ü Q6ó6ùðŽt”™~ØWV%vBë-I\²à­u÷È%¼5ÖæF„_¾Í;ÑÄÌs#¬s¸w“7нe–çˆßYb‡3­ÿéîøófP=ˆxj¡õV#îÊ#$hS50W²‰6TCG-–ß6T©}£zG¸“I7Þ&æÍ[ÿ‰ô þà^VÜùøü=÷ëïðŸàCwàψ¾ç?ÁåšZðöðòÖ}?á&Cã`ýÇ=舠%`{nhøØƒEMUZzú^øÌÞå_€›y‰ÿLÁ‘ïÊáÀf:½qoü'ø­Œ ¨ÇVfÿî€ìLyø¹Œ„ŽØÃñ{oÝ(úx¡ø“„‚N¸>³xà?•h’± º{n¸ë30—¡ù¨Ïlü±’8¨=nG#8ªS Þáv4? :?ÆÃ;óÑ`h ØúƺLG‹šª´Ôau؃¶%¾åf:¬{жtç[6‡ùü‰ï@^é4O¬ã™ðà?°ŠHï­ßµ¾žŽŽÁó€é8ÒŸB¨½„r>:IœÇ^äÙ/LòÏ0ÐeD9å¾x«ó’lOÐÙêhw?‰âmÉs²(¾Vݦ„—;œG\ñô=§Ï/ß{ WŒÏÎ Æ›ë&‡]±Dp5Xs/°87_±£„Qµ¸ò}d–ͱ—à_ÒøN=¤p`é%õŽ—ß²µÂA&%÷ÌVqÀIË=LÏ=ötžxçÓD=EG6¶;sJæ™(|û;¹6ti N"Mury²¨•ò`e²WÊ}žÛãóHé”Õ,v«¼ÔÏ’Êw\ш…°ð[¾@X‚ô€ø)++¾D¨YGµ›ó@S{êb’zŰs~(+o ¥‡²¦´Æï„sslØÓ¥š®å›C:æœÚ€Üß# k‰)™Õ` øÚ©V.òîÁÖ´¡Wgúø.ãVeFæèõ¦²L.ž‡«hZædæ¬h¸s—DæÞä’¶å‚d¢T„56šÄéÐH]èç¿ úö Œ¶©MØMÎ’‘;Lúãš» Ø!݃ÂÏmÀí§t÷IÊ“êNé#¥p|Ȉ<Ä›ù`»#mµ¸ŠÜ¯` •xS‘nuñ:èN!6£]¸$>É5磉DÕÒ鈻Q¼ÆûZ;Rå-ÜrajŠ>Àº=–mAcõn‚ÓÕdL€7öåø“Í‚âŸÿV€Ä»ç_D d«Ç ¦ ^ò„a#$ôõ/ÈI»À$ÇrBOæ²wìtM ¨Ô¬âHÓBV2IX¿‰&k‰Zj2]`õÔÀÿН£ÉÛÙ{Mü½aSx‘Yþ¤8'Ôÿ§øÌÆzx’¯ò%pmgCÃn½éÁ#T…ã~ì8n–´0'³¿&ZÃìÙ@LW0;Ä6 =¦7Alþ…tnr÷læfÑ›ÄVµ‡:Àü+Mø9cün@ÂP†Û‘‹ ¤ü{ßNa§1êÕ*צ°$Vh«L1¼Òî_ÒÌîÜ”WÍâ{ŽÃÅ´/•›ójY÷À©–ë•ßNäeÁ‡tЖÞuå¡ôÒSM,ÊÈ(K˜²Šíš„é…úeùý0…y¦¸} ¯HÈšªÉÒçäne•[dWÁFÅœA–vB¯>¹qº/\-àó>“ÑA/4Ô¨SrÙ†Kõæ Ú4^‰ÞåÐB⣛€ÙÂÇäÕP2Þ…KÆ=·ð~åþô†ü…Ò$²¨ñ)Xd T UÛ"aà%ÆèUB¸vø¡ÎƒPÓI-uFW§_á… ÝÁKo ’þ™e톈… ‹M }“þMx(_V|/­ØÍë´Í¿ôF ܨíËL³(™âÆGo>5âœOdŠZJ‘Õš4ÊÅVVkl]ˆþµ¬©šÌ÷SÃm#£ì}dáyŸ÷¯Ò½hjïÊÇS¾ ® Šje‹•eV†ñEˆ­×é=z‹(³ÿ{ö¥²§ø3æaŽaðë‡%…|õ‘K­óðK%x—'¶¶áG~ò¸Ø@Ø”¥fS^MlŽ#lÄQGK ’âÎË "­,pUs…–Å„}óÿ¸h: TàD½™9阙±†¡x£vݚЖiªŸ4ž{W3’’®ÛlgÎ/9¯uøµ¸ªÐOfë¶NAЉ–ÝhÜòéÐ%SúÕlíˆ.Uc!ßêðibFÓèÃ#hâµ¥¼ŒÁ/)ˆ]câä¨çN X[Ê ³>w2=Y×åi<—d Y­µM{±ÓGGÎb¼,Æ3u‡Ñð«­ósüP$y@ÓËùßÌî')OÊNè’ýßü|ro =_Ü'ºE~ÌMèVbü X‘ `2JæáŒÿåûøgcâ·‘íqª“ZÊ2xxbaF¿b¤O?“=½¼ ßž é‡&kÜM³ÿ­UøÁU|)f±Ìä„à”3!]Š×Ã#éAæ(¹ãó \Œå lZëxzñ_üjù‹0“ÒvÁ•úŸu‰ÐJ–oR¤5ÇZÇØ.,‰$½¦éµB“‘H2ÐÑÛõÆý\ít®uð?†êiĻ̨/þ¡±£‰¿èL5âÀrðx>;’ 0¡Qæ½Ìê¡Ã”²4¶˜¦‘Ÿ˜ …ŸŽ'Ì­jÉx»{†Õ£my¸´›ãiÓ\쯆Qlóo¡ñMÖ­pD&Ó“s”] ”éd2ˆJ"’hàÚ¥Q %7çN WÁl4*ÇlÑ6°™(Ÿ¹[“7…ÑÕÒ&o Q[þU½–œÁÁº¹ÜþO£¤_zû1¾>Ȱéã:/ë<8#”ßðñ+Þ³Õ7¨ãLô—ÂfOÜa~¶ieJ‹ã¸Ñ¶›Ÿñ^`) lgû—YŽ y‡ ^ñÛT¸m°£ot™å « íãL=”ɾM×LtÚ¯±¹ ÷i eEÎû3ºÂwZãÒõX­µ zB+ã¶Œü>l2¸ÌãIY¾Ç]ÿea¯@DMúcÐÅB¯`ð–A¯\øAG[ðÎ@·ü+ëïº,þÙ!ç™ÃóRÉ>BÉ¡(™ft'7—œ±Mq£Œ•¸§œG†VósǼ P­ ùG£”[(·zù ?ÌÌr¨m–`æÔ•wêu±›ZÔu‘äRCÁE½=DæP,Ç<^Œ‡ˆ”DZ¸8O€êÊÚ˜»Ï›à&ÝQ:þdâF¯¹3½Ñh¸Å~L‹Üb åpsÖ•ôUðÐýDdm2«Kî&FÈIXæä»ˆ0IYa­3‰÷«ôÙí£rä%´t0âõ“ºŠo šøöoM$Ð|7ÐØ´ ð´Làný=#©Ñ•Lû\U‰ÀéÚ´†mI7Èaê’.ò ÒM¶^åU¼ÛUkŸÕ8—Íng5^Þ¹jSïµjIæeϼIæS=Xò;2SøB™×*E>ËCG)¿yûI:¼úsºiù$ò‡Ú጖ëøý4,ç•øyûþ\_nßrùÕñý™bBÓ¯½ü’å6õÑ•g½X¦ÿw^Þß?6åáñÕ_¾V?Öâßù¿0ÿw9>Ê/* 7‘²Z½\ŸM¯BY ã#ô“½PøoѺòüº\«×+‡6ý©Øÿ:}!UZKW—n»ÿeú¹ÿeýoÑÏý/·_k'…ŸR¥ÞñEÓnÛñh‘ ,G®´ýI.\Y‹úi~õ`§ú™žâ_×]ÞÀ¿ÔnŽÚïÇ›?d;fXÿmo¿oÑþ[÷ÿí寵“¦Kûß*oá'í]<ä~岤rµþJqa³’õ§U§MúP›îò…ó^ª¯>þ]>þ5yQ»•Ñö×·¾Rîw0ÿC[Äù{ÊDXƒûa‹6 ®‡•ú¥"O\kʯ#•§F_h&‚ìÄוÆü'Ê¿l¿ ÈˆH9~–Í?||Èrš oãVãŸÓ•õeRø•êKúB×Ô~`~s;HuN©?E}Kº…5HÓ]‹ñ+ú_ºþã—ëÇ´ÿvýsù—ãwÑþ•ZÞÆßµ~áöR¯/¯_²üþ ÃOåÎÛ›Ò¥á÷]2}A¾\ÿ}æõ*õQ{™Yƒ£u1]!‰S*§+±ý’ÿ’;ÜÈê%€X‘õß”ø`ýžñ×ý?.?2Þh6¢'¸+D^Ľíɤ–“ñPØÁ²¹½ô5=ƒtiÿ$=LìmmÿâöûOX¿¹¾so×[ÿŒê-׿nýEý\>~hÃåþ7Ö§Ò~FÃp[õ©ÿníøâùšýÈå£ëGsÛùŠè-xk×çã@’KÿøÃýEÓ}ãoñ¯P­H0H@šþ¢y®kß±?¤Ÿ‰ºFÆÈü:‘ú¤ùtœ6ÇO1Þ0Ή\(~®÷Ü~±Ž,Ú_Ö§ó‡2Dû2ï’?ɾݘ¿b€sý@úGñsý¤íªÔ§þ5£?*¿¢ÜpØÊ1Ù:V§²¾¼þ¹5}<~­€?áapÝýß(×í(_GÈóçÄêâC¸1l¯}bê™ðÜ!ÿŠÿƒû³´ï÷Âÿ(]^¿—®fZô³<åýŸý4N/Ò“*§µãóâåT@–˧·>‘c—~£„Ìõ[°¯âþ|¿}¸.ýT_RÔ‰ÂbùÒ¹G´—åàõ³n?wþÖðך¿$ýëÙï«éßï['ß[ñמ¿ÄÛ_¯®>·d*ëSB¹:­Ïû4ÑeŒ_ÿÚöߦ>ÿ¹bjÀa…°·¿¬o‘¹s¯“B ~4~ùjûÃ7áïÞõ;·ïôrz1þúâ¯çä °&#y998¡þ9„zázÆw’äü‚ò¥ú”~)gZÿ>ôß’¸EÕK{(¯#–Ö ý²=ÛwÉ @&\ŽŸƒ•ø)R~2þ[ëáÅÂŒgJ .·¿R²©:4ÀaýiÙÏ[ówïú³OÄîÝÊvïìi´oBýh£Ý-äzÎFöU¯è—r…úýÇõÿÐøÖ¯úz—÷oœ»^´ù…·¡àWd³Ò>¥]@hkú·®¿¶ý·ªôK¼ŸW®o´þDpaù\ÿ½·ÿÖý»×¿—ú¦42ˆÏ/ãúU0Hðk¤¯§¿÷Îß^ÿë_qþÒ7SmÖßåãwuûï’¿½þc×¿âøºKÿëZüñù¯ä÷¾×_·×oÞTh¯A~MÞ¼<þKÓ¿ž|–õÿVòaè…öJ켞ú%2V¿©Ëêgûl >ñ•–qÿgyýËñOyÔæ—7QD׿ý¿yû¨½âöFáÓçãg;ý“çk ŸíØë«Ïúƒõ§¡‚îŸ,«Ÿûö×7®{[Õߎ:`JúTAiý‰TÇýsiüÛ´ÿÒø¯Ñ~Æ`â™­Áöo£ß=ü?ºý`ôs}ÑÏåõ)ïVhÏköß&T]ò¿±y[e}¤üYDÊØ&ÙPEõÙ³±pfÏÿSнíÓúOë; F– ¥ÃÌK“¾L£­W²š ï“öø•Ǧ»üööÜí_;~$¾pÙyo6t¤<µ› ¦M_ë&0Î,£Ÿð·—_ü4þÊvAHl¶ÚC«Tèó«N_ô»1n|åy¤_IÛe1—í–ýÎ$6¹Áåú¢h/Ĺ>Ðv&þK=÷9"/{ÿ3ùݨÿ×Ú/ÄñÛËr*¿Âž0¸Ý>¶è÷õëvõZê$Šz¾¤×²žW†·Ê£†C×\ÝUùiý•L±cœ'º€>…¾Ðú¢ýèKr®õU§rÌI}HÇŸ¼?¹ëß®·Ð¿}þÐÆ×m12êc£…_/ÿØûG§¯´Sìßݾîö•’¹–}Õ®¼ŸÛú©í£ÉWYw&ƒû듦—¹Ýºm«ÙµÿKÍ^ˆ/‹¥êMýà ܢOXÊE2·’þU:ЖýVöƒÐ9‚=mÙ?n´q¡Ù.w*¾6ýÞqÙ§üªé½0h]û€¬ Ãòµù¥´uaÕæž6~j?p9T@úi±êòÛý±¬>â«j° \e°ôާúD‰Pÿ•ŽF¡‡­û0Ô¬"{‹ &Ô¡ò“̲\Ÿõƒ"÷]þ·•ÿÇn?ªúWèÕøúñc—ïnŸÛ>z!:9Y=„ʨž,ÿöÚºE?7¯>Žeùëý/wy©ï¤2—(’ºƒæýWšy¿¡”­ŸÙåm—÷ 4ûR2Äô±¡ÿš=ê¦Ï¯:}Qÿ$5Åv°´_¼#µå o·¼>Ib“ÜÝ?IY?”òÛç? ¢´S›ÿšã¯X7³}AÃŒÕÙd"ú²”è³²V¾l·Z㯴g¸?pw•cKv†õûúS/¹>Á/ÒçxÐ>âUêóù’ð·Üþïú·ëßöú÷±ÏYPÉ¿Ö1–Ä1\º29ôâÿØå¯ÓWÚÉêïöägvû‰ø¸–ýä| üÊã´·L/ûÆcK>¤µ‹Ë‹4j*åAÛ/­Êí€l·¨•ô¹=~÷õ¯hy5bU…힟ôö0fýUâ‡2e>a|”òÙçG ¢´³»þÇ!?MËrQ ¹²þD`Ëú:ýr¾hÑ—ìX¶§|qù7û£¦Ä>(ú§èo'–·d· úIýê<°÷¿$š¯ÿ×ÚO$hqþúØíë>?­“·?-V¿©’/Û!Š·kœ>µ{¹¹ÜÖ`;Dí›D_“O‘.Ç=[§ó|ŠŠÛŸ‚¾fwJúÌîiôi4S©égŽs}¤z­ò_Ôoù÷»þ Âzõú·Ö~gþ(…½dp»ýoÑï“?⫺OUµ|V|ü¶è+~^©¿Dn½ã·9|P\‹å˜¿MóøçöJ¦?2ÈÛˆ&÷“´ÿ†ù”éã~í»8¾0_Y)¨¨7H`l]†JòÆWiüKôµñ_ ¶ì3Ê‹Z@šˆ¤5þuúb·Jô¥q’ò¶p|åø¨ã×lQ ?d ý·XÏõñ¹Ïïb;Y}ÄWiOЕÀq™¡«f·äk•>ðDÏä‰vÂpÜhô,žH-®CåÇU[¯ÏúA‘;Ó/d¯1Q¨k©7œ~±ÀUÆoÝ!ØB_e»‡æqrwògyeù’ùM›WÚó«6?éôåu4.òÜÐáïÔŒkÔªýQì*ogѯYmqÁ1üÊè²¼f¿*ó—¢×My‹ãiŸ¿ôúÝ´ºüJñÕô´\ûTè>4ù•â“å'ëÆ=ÙO&¤B°ÍýR_²¿X/Çé7÷*~Ĥү÷ÏÈþ@Ͼ±^G3‹%}m@_ûëíµ¬\Þ'¨÷­_Î[”MÜ6ÝlZûíõgKÿZôõu«dcFõ¯­€Å8“íD1þûô¯­€š_ ÑïÓ?d/²þ,Ë©~ÚaÉž”üíó;QÚ©Ì3Å€êœGzL¿d» Ïééôµu˜’/ÛA¿I‡•öRÖs¡1î7­ßПj|ÉõÙøès¼€Ghñ³*õ‘?Xò§Ï/¼oXâ ¥¢g\Ÿ[ã·›>6T¢þ3;á û­Œßší¢Í®Û™ÒvËû‰–áÅægbiL¯”[)Ú]T=õþïó¸™*mJ©.%}É¿–ê—þN_veýæW­c˜ÝáŠQö7á\aªþ P {QÎC’~RÙqúò8åãnñøŒW>VêzÌì¯"ŽÚ%vWf|ñò–}Òéïþ¦ÁÇkAŸÓÓéïþ…À—\ÿ‘ü >pX_•vw¢èÓrÊêSµ?ý" ßA6üw1)ô3_t¿H–·n5³V3weý‘ù¿EŸ.'TÛl¯³Øeú’­•ì¥2Lµ€:D¿tÿP§_îa*ô%û–ús™ùhòñÝj¿&J †_åy³Ç_.}=ŠÛšoýRÿdú%^±‚:ìò+†KƒN[þ»ÿ7¢5Ý£ý(vDiè™j˯´‹˜$?Ú®R~„~K~Háˆß*ÙO®‡å|ÅÇÍ®ŸkõSo>o‡ì—ÔØ—ì µGûþëß«ï?$r¼cD=´}EmYN_Ú±W¬w¿®õçnZô•v>ˆý¹Öø¿µý«ØAkö‡ûšhDˆ*û¯¥ýüŒšýÑ|]NŸŽ‡ÓÉ]_^Ü'ĵýQ`‚ï9`|À|¾y‰}9˜£y>»ëÑÌçëóùzHð.ý|Îß Ã}þJøgw=Ý'ÄCû\Žñ¥‡gßþ9ÔJp¤>íÃs¼¦zW¨{\ÃO‰?á}–ðÂ_Z>I± ñ<>»²Åü”ø€d° ~”ŸKëÿ¥ÇËJ~šöaT.ÿzð—¶W—¿üòñ•íë3¦seü—†/Æ#—õñ©û <={¸Lgöù™ø>³//éï6{øíü™¯½×úFÆ¥6>[ã»Ä?ççŒ3ÄçcÆ??ÏÇÀã$àOòô0óózûsfgvñ3ÙÙ$Ây½svƒ|þ™Å9fNÿÇ&´‰ú{¶\È ©rý‹×%¼îµì-YXÚõøtûªÛ[lw{Ç+ÇãÓgf'žã¸Îã¹=^—ûƒ[{Çü_Í_â~“æ?µñSûRÚÀìT‡½ôïd{òråÇC(>ÄL‹äøM<Øñ\Gžqû¦X>£þ›ÓþÐáˆñSqš*ýÆøàë>ñ¸+×/0Þèx²Mü0._ÿ—ö7ôù)ïS¡åÜ^q|Üžèøaü?ìVZWýÏû¢€#››dï"ísÚ¯²rùØÀ€s&>Q¹?ð')ñysç×kÇ4Þžc$¿ É›ol–’ž3þ<ÞaeÎKåÃù/m‰V›öW¯’ù ü_¯K¿ò\Çï+ÎI.ÐþÔ_ÏÔþ}˜™< ­´Ÿ¦ÄW¬ë5'Í߬­Ag<Ó¯~?æñ»|½$ëévë%z¹çyªGç¿g?x­¿¦çËp‰žâÏqçsøµçF÷ké¹ rýÃýIîgn/¹œÍNíˆùZ{×Ë_k—Ì?ן–?|~<÷èó5ù9!9?¯o`Ÿ‘­_•üØGùì.¤EyLàÔþ‹íCÏ5ÅŽ¾ÓsÀ?{î!=ïëãÈwzø÷ëazþ‡ŸA>¤q›ìò3nO¹FNë<êØ´¯†¯ë{¯2?r¼‡í™çF+]ò_¾`LLËïä ˜7yýô #ÂÏ»àçvÐs3hÿDÓÏ$?î$~ }¯bQ^¼ßJynáþˆ2Oöãoì€ýdó@SßU}Vú—ëU®ÏôFÝ麿˜ñ£÷ÝMR9Ðí½¾ûK»¿´ûK÷î/Ñ«ôÜaa¸ù ûºÒüâ{T?¢ 7Ä߃”1­º),³EŠòŸòŠXèCBÏùÊ›Ÿ¥\ˆÁxÔðƒiøöc|šÞ =ßC.9’òXþhþ¦,¤‰,óƒã˜ à ·Mˆ=ãx‰É’¶—óÇËŒ)Z‹ÊË–‘ e)SÁ¨à-§Jé¡<ËkÑþx>ðZÏBbþ¡¿e­Äy¸V—òJ{)¿¿Aµ£QrÐ`ß@â¯ËŸ$v¬bW5ûÈì jצ¢þèþY¦'›ÙýÅÝ_ e»¿ÈåÿZüÅ2oÀÍJi}ߦôkp#ü¹½º¿Hyhû‹˜£Ænï/ îɃ'\Žó`§‰”“<ÌäÏaÎ$ó+ùs¸å’?Šå%ù£DÞ‚?J]<îîe Ù&`œrÉá(Õ¥´ó;+dw’{Ä3í/ØÎP´¿JGp·ýEÞžLOz^?Û-Oô¼Ú÷‚µCõüY?=/&௞?kÙ\†çÍîqÛòúüÝžyA³ï¥ÿ)Û婨?ºŠéaÛ ã,_!6¥ëÄ`&T–Kj°Å*)Rl5*ØÚÕùÜÛµ·ko×Þ®½]˜‹¦ð³÷ï?ÿìýŸ¹ï÷ŸþÅgç¿÷Ÿ}ñ¹ûûüqy_|æ’â‹sægêó÷¦…ÿ0Ïóa>Ü·‹ºà’Ÿ>„¯˜ °&Ô8°ç&ÔzûôÛeÚÕÇa»¥’|¶ÓGªw¥^}]®Lï ½Œúªè£†ßq÷ÅçŽÇ×ûÏÞæÒçÏg®5Ÿ¹ 7Šbîæ½k§ûs-úìýVý~ÉQ°•þ´aÊÒ>ê}c¹¥«=0[õW›siüöµ´†aIJIœS­(KûZ­ËjÄfRxY2ûøÚÇ—Œg_ûøÚÇ×>¾ »¾Îñµ¶ZU3»XO-`Ä;šÑÓ_- Íúkáël¨ŽujG-`]ýÕ5Àºú«1À,É¢÷?&RF÷Ù¡ÒÓó&R6¥rú^”˜ØÕrúå=1UâtYñfú¼Ïï­Vìóû>¿ïã‹—îãk_ëÇ×½ÌïSì¾çßÚx¼‹±Û‡žû³÷iöñµ¯}|Q˜û_½:¶>_O/)ëY‰šÛíÆýY‰š»'»aÑ ¥ç.´|~¾©u®®@¯€gøøùžüKùçç§ZçVà ô„óUô<;ßR¤#þ&ÿº*õ¤ïÀB^Ÿ…—çSü\ÏgN~Ÿ¿Ÿ":.ÿò'h<..o‡ëó÷îNß|îa–ò/œ_›A2IRøÜÏgàŸËºè¢eòG“æ„+vzêÏ<.èyóB >O^žG/ëÛ_N—ûѤ"™(ìçïRþ~K¿`]-i¾ºuŸ?kxîoF½Ïùó¾Ç׈žŒéRïlq®kÔÇ8¾F4¼6âÊõŽÁ':äåýS@Ëö‘ÿãQÎ=kWþ¾\ù}Îú{‡Ëòò÷l¤÷òŽÑY?ž0·zÝ^ßAÒwZº…ñ`Í¥¥t M¼„‰–⑾•W¢á,g¦ÜrîØìD![­Ðm[)s€Â2¤-¥>EÙST¯ÊR+@Èt³Þµ¬lÍ¡s\©‡RËiÝÝ>H2ßíÃn¤–~Œöä ¸2Uùþ9Ô¥õ¥sm}õUûDß5S¼o)Ãv¿·€¿''<¯¿ÎnŸŒ‘1=Š}ºuqÛÓg±Úve;¶UqÛÓc±ÖÛ†÷Z£÷VdPÎáÂu)ûÓ·G0Ý^` î°¿À@lÔ_ D–#Î/ý|ÿ¥´'EíʉÄm‡}Ú×W¢GßÀ‹ïÃ¥¿—LíÓøzLµGûz Aìöh{{tëþzwi£þⶦÇB%;Æá7ß}÷ ~‹æË9¸øwß|ó®µ…årO/'ÿôòrê°W»ÿDúM§²Û«eöj÷ŸêvOãŸÊäÒþÓnvû€[´Û‡Ý>p­¦œŒŽ¯ž±³•f¶ÇrÓîíë8±Û½ííÞ­û‹Û´>KضWÛÙÆ­ú‹Û´K˜¾§±A< èQ YàEìy8‚žlÈ&s€²X4re8‘OGâqÆž÷c ±Ÿb°èhÃQ y|-ò3î™Kñ ~…!üÖ@øú»¡ä•àßµs§@Ã5¼gÖÅÝIRŸ÷®!ß—}þùûp çI]Ü)…rw¢4\ÃÉÓÿ,•»§wB€ÓÉÝsO‘Bàóo¬ÍÇüÛo¹…î,k¸ž9zøXVñÁ›‡òü‹ð»TBî9  ãÒü¹½Àëµ⩽_yùg‰¢\Ý#F¡,ÈÅI*µ'ö{ß/ÈÕé…r'×P÷½–)ðó>ÕwO-~óK˜æÝÑÞ ŸB>à„÷ û’üŸ8æ² ã=[%›`Êú0$,2[¶¬a,Á *C#)=0ì¹¼Ý?É%»’[´û'»bð·âŸd›ž`ü³ˆéNÍ?‰rFª<‘æ¸h²ÒÃó!¡ÂÏÍ>‚spñ ,Zð?ÈKKg‚' æ_ÿlnœÝÜè®WñO¢ÏØMq€Ï¿!öÊsáþm~ký}y¸¶î¿—p¯ñ¾üµfÞ%3&åaÍ|½d¢¸¿þâ&­f ÃF`åRn> ƒ\Ó_K&ŠdØï çs†iÝC~Gz·'»=Á-Úí‰Ö®ÓžL¤}.‚æÑgÒ­‡a{ëïöi·O¸E»}ÒÚõqÚ§QgËçÂvûEavûµÛ¯Ý~íëµÝžìö—ìö$·èÒöDµÝ÷Åûî³ p¯ðþûnvû¥»}ØíÃnvûðºíÃfë‘æ8Ï{)á:?‡ó§éz gPáZÀùü~:´Þ®Ÿ©Ÿ‘¿æ| ¥¡2\c>×OާÐGR¶åó7ûü™!÷ùsŸ?¡ôuا<Ã|“çÏ4¡ùgÞä.ñ ƒÍÊð 0óžÏßíW†Üí×n¿ ôµÙ¯•þó<¿ì—æ·Ïó_Úÿ/1,eòÇ%\÷t¦¼]J?—œ_£ŸY ©y/t.§ç¯9Ü{ÕsÞñ|·9½ø—&†:Æý½¸\÷îïdb®='0?ï*Ÿ7/|çã) :·ùñïolòÿrò¼…w>¾³/žÅ—œÆ\êÊšü{8azüQ:æDûPˆMBöTä `qbRÞŸ¾ußß~ç¿ÿäs¾ %íçk×>ÿÙ~þ6è‹ ²Çñ¾ùSnÇwßBüÛ”ûãþø‡îú£w?þáÎ>ï]¸F\ééDâ~x®è®ï~|Fp®èã? Wšê¼xA²AÊA²™;‡ÿ‡?:gV=- Ó~þ¶õ|óºçkƒ€’Ì_H<†ï¾Éíüæ;ˆÿ)åºf…ë9öäÿãwîÚkŸF¯­ûí׺ïßÊÿ]»Æø\?ßßÚ‹ÝÒ§¿ooxy­ë´«ìÊçšÞÙJ[–xZkü3©ÕÛ¦²–\wüíŸZ)¥(& I%Æ5°ôÞKÝ–ý{ËêS‘ÆÜ§½;¼Ö5ÛÕ;¾Æ{'Ä×kKig¤¶P;Ö·{RÖâ~¿Ò1¯­ytö×]~¾„ë²ù½œA¦³O<~G"üãr Gá·kW/Ÿ[ù¥Öq<’¾á>Xë?”\ñ·úÖ8áónNiãw»îÝ({ò¹Îhkš®·ëv~oë?ôŒ¦²½Zþÿ¡=êåÑ„!·Ò±}î¸ïßè_Ëü‡–×-/®“=ã¢Mëü:—ä{†™«œ‡a¡þV÷´ë¾ß±ïwh#mÍŒx½y}籬ÖuÚUöåsMïl¥-ÜV.³°=µôVo?šÊZrÝ}¿CëÓ}¿cßïØ÷;FøÜÊ(µŽãÙ÷;$[1n»îÝ({ò¹ÎØ÷;8L‰‡ký6þþßqþCïøú÷;øÞƤæKe²ÏaÙh®½ÿª¤c\€‡—Ñ+­ƒùÆüržezå^Þ~GÙ~‹úB§¯É¸Æ›D¿l¿LŸÓÓû„Ö½¶Î·_ëœ};¿ÿöíê㳜)Jû³lÆì©R­º5Þ$ËÙšg÷ý«K¶«ìÊçšÞÙJ[øÜ·lÆì©µ/ Iµä¦K•k©)0•ú!°æ”‹qʽÿaûvõñ¹•}ã0ûþÕ¥ìÛ½ûe/P>×Ù·Çß¿ú¸Ç×õôpéH¹wÿáÆ×’‘²Îȼñ= C7,hazÞÛó:å^ÐVטé‚×Vû[ü]¾~«o„g «ûF캺ƒŽsø}Oízvé*×–Èëpkëçñ ò^–¢é©’ªCŽÀÖ —sÀ!©­Óñðy—ÐyG§Ég ‰Šœ–8×¹ÕÛYr>«¥é¾($Õ:›.U®¥¦ÀTê?†ÀšSj,Æ)÷òýÝ/}„ñEmÔ~ÞJ„ÛÏ[)öAÆóçAî߾ݻÿPöås}ÛÏ[ixc|]O—Ž”{÷a|-)ëü‡ÌÛmÏ[er—¹¶`rûosÞª¯-—«ß®;Ç=õ}.ùº^þ…ŸÙð;éµ¹¿ÄyÛ¸¼~Ÿ ïe)šž*©:äl r9 䤀HS ŽO¼¤^*ãå%ÜX×ñXµ„O·ý2ÅåQ/­á‘'¹T.áé©YZÃ#».r)R«{c2OßõROom©UKj#<ý6¦¦püLV¶F±ßRÔËFhva­™¥#—è}­T‰‚N¥ ×íjMü¼Þ˜ÍÓ!uè–Ý ò“¥Ù?·Ð<)&ÉDïõQ^Ç-ã‘ ëy8ô¶Aí-¾îщÕ!ùU‚mCÊö@ÂR‡”-P}b’ ëmÕñÔù‘skË.­YNZ·Þº+#ó ñÑæ§ÙÏO ²¿¿–hq¿÷ÉLÇS秦Ï2Årø·Ç{Ÿî¶Ç»>–ò˜ï;—¾ŽMÊãH% Ž>ï¤ÑŸ"üÔ…g"°yª³ OóöIô& „,DÓø94Sn6 :œ.Oø3%ýòÅIˆHÙ¿½çÙh;J9Èíäpmúòy­¢=…(ýTÁ|%¼ò8(ù«Ë¡&ËÚu?ÏÔj×~ži?ÏdnЮ²(Ÿkzg+mÁ’¡2”$½¦Ö>¾($Õ:›.U®¥¦ÀTê?†ÀšSj,Æ)÷òýÝ|„ñEmÔ~žI„ÛÏ3)öAÆóç-î߾ݻÿPöås}ÛÏ3ixc|]O—Ž”{÷a|-)ëü‡ÌÛÂóLè÷FàwO¤ß#kù+ZAk^ï:À5¼¿ç˜®%Ê¥ûP´€'y92^üuóvõñ¹•=]Zm;{ºÍ½{º°ÚõVö‚Ù¨sBæê²Ìž.©¶/ y½ywW¯ç±°Úõöãk‰ç±¬™b…«™®tm¾÷ov×óR?^þúœ®%Ê¥ûfÿaóvõñ¹™}ã@Ý ²ÍìÛ& ²°o÷î?”½`$‘/´o›,ÈÚ·[ú¯d|]O —”…Ãòz†ãÆ×‚‚38þÿO· Y1—œcü„õéËç‘&„Ä;!¼8óÍé[g3âÄ€~„) M”ºšž'Âq“Ï»äúÚ½,•>ݯb•Ëþ4a>â”ù¬¾ÔÿR?õÓ·E—ûA<Ç„û¿¦'¼ ½@õµ¾Óò³¾¶ú’ã’è—gàdú§Ü^ò~+Þh¤µU²Rÿö^[¿ÛÜ*çò[ú{Ô­ü1üÛµkŒO}2’¦¡×|Þ„:Å jø¤ÉCx,K'!ñ_NÇybXSë:í*{ò¹¦w¶Ò,*CIÒkjé­Þ~4•µäºšä¥e…ÔÞ\J)Ê£ CR‰q ¤–¡,µDNq,õS‘ût陯k¶«w|÷Nˆ¯×–ÒÎHm¡vlé™/îð+èÝBJ:×W˜Œy ß„ê~þPk¯mÛ÷»¶o׾ߵïw•óëåÛUöåsÝ|ºïwÔ ©{_Të@nºT¹–šS©ÿ²×´ïwñ]n|Qµïw‰pû~—bd<±¿ûvïþCÙ ”ÏuömßïÒð<Æøºž.)÷î?<ÂøZ2RÖù™·µû]Çù®,º}5¡r*å2ë^~ÍýÁ÷¯Zô-Â;‰i\‡ëA©Œ>Óƒ"õ/2šôI|xRÓ?šèsº:ýXVè³B_Þ/ä|d::^Üõåôò’+N¾ìåÅ__^ôú/æôê„ú/gÀ}:ògíÒô¨uÝ÷[íÚ÷÷ýÄÒ¹|»Ê^ |®é­´K†ÊP’ôšZûø¢Të@nºT¹–šS©ÿkN©±§ÜË÷·x„ñEmÔ¾Ÿ(Âíû‰Š}ñ<Æ~ÇýÛ·{÷Ê^ |®³oû~¢†ç1Æ×õôpéH¹wÿáÆ×’‘²Îȼ=Èù92¿çstÜÿIˆø5Ååóshd‹çè8JK–ê…÷óšô/¼ŸiQ&&œÈõ‡ïï²I§é—K¢Ïééôce¾¿©Ñ§(9Ý¢ý)ïåtŠ{†'´Ÿ÷ããé¥àŸÉIë‡ÖuÜþþ8êoìû­Z×iWÙ ”Ï5½³•¶`ÉôûKjé­Þ~4•µäºËÞÿÒòҵф!©Ä¸RËP–Z"§¸N–ú‰©È}ºtÏðšíê_ûûã2ïÂ~àþþ¸ýýqŠæËóE>ïæ”6~·±ã¶ëÞý‡²(Ÿëü‡Çß\æ ôŒ¦²½Zþÿ¡=êåÑ„!·Ò±}î¸ïßè_ûûã€ÏðPô|áèußïØ÷;´‘¶fF¼Þ¼¾ÆóXVë:í*{ò¹¦w¶Òn+—YØžZz«·Me-¹î¾ß¡õé¾ß±ïwìû#|nå?”ZÇñìû’­·]÷î?”½@ù\ç?ìû¦Äõ~ÿaßï¸ÿ¡w|}\ûÚõZûëÖõëç_ÜŠu3éýÏ€[Í&Kfûë¯ëÍìz/ÔmìVýµ|þ]°?¹?ŸÙh×þ|æ¾?YÚèË·«ìÊçšÞÙrµTkìÛ>¾¸Ï‘S÷æ½,¯uv=Âø¢6jéÞcO-ÚúýÉýùÌF»öç3÷ýÉ[øe/P>×Ù·Çߟü¸Ç×õôpéH¹wÿáÆ×’‘²ÎȼM\"yß›vÍä.smÁäö_æÚj_[.W¿]~KB½ægf…+¨vm·­ðûVôZì#‰þá!ú|‡çt=6hexŽ/Ohï²MO•Tr¶¹œrR@¤)PGȧ^R/•ñòn¬ëx¬Z§[~™âò¨—ÖðÈ\*—ðôÔ,­á‘]¹”©Õ½1™'‰ïz©Œ§·¶Ôª%µž~SS¸i¶F±ßRÔËFhva­™¥#—è}­T‰‚N¥ ×íjMü¼Þ˜ÍÓ!uè–Ý ò“¥Ù?·Ð<)&ÉDïõQ^Ç-ã‘ ëy8ô¶Aé-yüI,· !VŸ[²bװȲͩ+† )ˤ6Å­k—ÌÜ‚Z»dŠKú«¬+qÖ–OR¦ÒÏOŸÔj`HY*uÇF‚ìÇS—ʈ|út¥-¹¿$}®Ù Y‹ÍÉ,üèÔ䬸ËùÛýÍ1Ïg™3Ћ9x¨cÜß‹Ëuß!áþN&æÆ÷ˆàÁc =BOÇçzîEã/þ%ä@uþ®›|‹…¯Ì-ºu²8!ubÊûÓ·îûÛïü÷Ÿ|Î7¡ä³÷ï?×/>è/>ÿü}¸~öÅûÏ?ÿÂÇ? W>ÿÞÞKϹP?\]8ç¾<_|þÅç¡Îg©þgï?óåï?4ã š^¼¸Q<†oþ”ÛñÝ·ÿ6åþø‡?þ¡»þèÝø£óŸÏ{®W@z:‘8„ž+ºë»Ÿœ+úøÂÕƒ¦:/$žClrlæÎáÿá€Î™UO è|öEËYs>þ9Æ}pÇ—äÙàx ß}“ÛùÍwÿSÊuÍ ×sìÈÿÇïܵ¿tŸ4w æ$”Åò§=ìa{ØÃö°‡=ìa{ØÃö°‡=ìa{ØÃö°‡=ìa{ØÃöð0áNdÄã9ùë#ÄôË)—¦ó 8dÌ9¡JK")öR”uåœP‚·ƒ·§SBqŽ_Šr$Ÿ>j 7‘þ:¶©k]PºW¥.5v½ºHXë.õj—ïÝÑ@—Î÷9n÷þè…ÿˆíèK©Ú^a¯°WØ+ìö {…½ÂãV®±ÔƒÝ)ìv ;…ÂNa§°S¸ ÍÀ^ã*5Ævþî¦FèÖÝÛÖh6h¯qÑólÌ|Š®dæ¹¶Ìõ%s¨#Ô+9бé\‚NÆêgøP\îâJ,Ÿ3WpÄòŒ ÊcÜ¿b™ç (:rÛh9’Mâ·Q’•U)£Ü‡Í¥2Æò‘qgy•¸qXÊãš¶mA«ö/ÅSòMs¾Å±¦ý˜GIÿÖȨ©³Çp •òOã¸ßãõ¶¤OáXÿÚ¶qÿôio—ôËÞ¾úKu´„8J ´6ð„¹dxжã9§Š‡”–¶ ëÿ¡Àƒ)º·Ó‡7Їo¬ÏrÿþÛO~àâŸüàí÷]Ü幸ËsoÄo«õ]<¼%?Ô¸V:/šŸ}`]-Zp~ñpOÇ Ì¥s!¥Δ>œä÷ñcŠ_|(âß[ ó¯8Ûb‰‡ïï¿ýÁ'8ÿŸ89…àÊ0žP&Y6Ì{ •¹ÙävÐ4(°Þ.mDʉ¿8°}–qFŠ_”­•R¥…ºTÒFJøt [בgÃT3ÆíôƒÎ˜¥oP¶€[ÃRWÊ’¯ÓM‡Ú5©ÇÆí¹ ¥·¢Fç€zûà!]Ú­¬;B£;‚§óK)_Éd̵ußíéÈ%:Þï[m;^‡{q™ ×5éÔêTuÿp@v€[ ¦‡n)äzþî:KÚ-:•:×Ú7¹Ö8½ÜþL'ß:¾«Ú—kѲ&kt ~g ÒœãÜè2¾ \³_N@£Ÿ3yõÚâèãn¦ÙQC]ƒÔh<ª¬ÊýµÜ)^ñ3ïÛn^‹ÎXO» Ïx:•üõy°VëãlÇXíXf×öþ胾Ûþ¸N;èÎh/_P¿Ÿ’ —ð²_³vÿð~Õ˜5ñtÆô}ؚܯøÈ²zÿPWr‰>Nê#èë÷GäûZtÌ«CvÜjŒ[XOçãmÇkñ×öþ¸Pq®Æk,mǵާÿÛ¯ÿüþOïÿøþ›÷ÿñþ»÷xÿÛ{ß~ûõ‡¯~ýþ7ïÿáýWïÿñ\ïÏ÷ïÿéýo+\­ïÞÿú ùáý×ç¿é¢öÛ¯¿úǯ~ÿõŸ<ߟyüã™W þoïÿýÌÁoßÿîý¿x¬ÿêùøí¿A-Wç?|-Wã+÷µ¯%Ñδ~®õ‡3Ô¿ë|©iÜB­?Ÿk|wæÂAÿîÌÕ?Ÿ)Õ¤ñ{_ïë³ü}¦öçs]Ç{h!ÈöŸWëÃW_ýáO¾­®ß¾ÿ®Á_üï¿þ§3oŽÃ¤Ô®_'é:zÿ¸«Éð?Þ;]kþ|†þu£·¡Ö‡s­oÏT¾ñuZ|B­ßyY|uÖƒžZ?¥ù{x¬ðóŸüü§/eîááÂÏß¹çWóå°ÛçmÃýõû½åËa×ÃmÃýõãeñïá>ÃxÿÞ›½º¬ÛŠîêa×ÃVþ®‡×—×C Ï¥ùÙÃ#…]÷páç?ùò'?ÿé—Åޜڿü½åß™?°‡z¸¸jtGó‡ñïzøHáòöpô¾ÉVömÆû]Á3Œ#<û¼ü*ÂÅõp”îfóþ®‡6›—UüÛœ[Øõáu׿xÿ÷b¾?š¯á¿·|ÿÇΗÃýåß›Žò©Áæß›þìzùüXþvül£‡»=¼Ïü{ÓC-«ùWÇÿ:óåpù·š—u~Æò·ÂóýûZÃýù‡ÛáÅ3–/‡]—…{ÔÃÛ̧þmò÷P·Ôíðo•Ùõøja×Cȗî‡× Kôd+ø{Ë×ø¿tþ¥å¹Ÿr¾®±^Þõp×Ü/‡]—çkü_:×Ãkèá8ÝÛÜï»7¿t;yŽáßõ°ž?ŠGƒ×ñÜ&”~×Ã%ð£ühð[áy=¼·vitGów{xn“?Ê¿ÛÃ-ùüøÎÛ\Zž—ÍåGËßõò5øKçïz¸ë!Î×à/¿ëá5ôðñÏÛlƒ_û}Àv=¼~9ìz®‡×Â/‡]C¸†>ÜJ·Ú_Ú~½}­a×Cȗî‡× ·ÓŸ±| Ï(þKÃïzX »^ ~×ÃZ¸ÇuÊ¥ïŸÞbݱ‡z¸jüŒæ_þ\Áž=, ·´‡üX¾îm>Ýõ³v=¼?{¨…]¯ÅÏjÁ½Ïð?ù{ÿNÃ_üôïÓ; 7[_høï-ÃýÏ{Ë—Âíòåp~ãóÂùj{åpó$—>_t_ùr¸;{8¬?·:¿t«óänÄÜ;´‡×·KïÃæßÛ¾ÖG¦‡wh'o5oîþáÚÃaû©½ïýVóò(ün}þ½ÙÃKëç‚ß)¸þŒæïö°•?JWæÿFòQóoeïl>zt=¼´ß¸@ÿïmßoß·y ÿp3=”Ãýí>¸üÅÜ+èáÝÍ¿ã÷ûî;]ú\Üeóåð0öP¯G×#¾=š¿ëá">÷}ì…ðû¼ÜÊãóÒû„[ÍËüVù·;¯~Ù|9<Œ^\Ÿåp;;9Ê_ùrxµz¸`~¿Íù„Qø]åëƒÎç6¿W~oçxÇø­áîôp³ß×áw=¼¿pwç5=¬äoÅ¿v=¼Nx{¸Ù¼¬åïzxËpwöPãó üËtw=¼F¸;{¨ñ©æïöð5„»³‡£÷ïîniKÂÃìï?æïzxËpK{8º.[§lwyü{¨…Ûù‡ ?>w=|½áaôPÍ¿ü9‡KâßC3/küïzø*‚®Wü(žËï×mu~@†×ðö&ðrŽëVvûÞÂÝé¡zÞf»ûË»Þ_¸ÆûTex…ŸQøÝ.Âoáîôpø\Än—à¿·pq{2쎞»–ÃíôdKÂåç5…®ª·»~Œú÷ÿù| ÏþKÃò©Áo“/‡})„Ûéá(?£ð»Öòï-Ü£=”ñËáõ®S.›oáíá(þ[á˗î‡!Ü£=ÜýÃ]q¾_ÃÓ”ŸQø]kù÷îÑÊøå°ÏËËòï-Ü£=Å+/·ñ_6_£;š¿ë!ÆÓ”ŸQø]kð÷®áçßê¾ÞXþ( ~K®‡Kñhð{XM¯¿?#‡]· —ïßíèŽåët·Á3–¿‡z€÷ÿŸôfâÿãß ¼dCÔ+ å÷,6ßx_h‹|)Üjtoáîôpãy¿›Ïaÿs4×ÃZ¸¸n¨WcüËaé¾P™? ¿ëa-<¼.Ô“~=¬ã¿Mþc„›ÍËÃöm~Ë}õ-ò5ü—ÍŒpwz¨áþ]•­ôp«ü]kááçåÍüÃÑöÖñwó¿ë¡¯‡›ù‡[é››üdzo³`Ÿç²û6»¸ex=¼ÙþáVûŠ»ÖÂ>/·àGów{¸$Ünµ¾¡—èávë—Ûä?Fx˜}›‹ÏËrØýÃ넇ÑÛíîþá5ÂÝÍ˳oSÇ/åkð—ÍŒpwzx3ÿp«ûw:ÝÛä?F¸øù½ç ]Î]±]7óßö°$Üj|îzøªÃ5Î3‹t+z«ÙC œ/‡[½nõpwz¨ñ¹ëá«AFò5<[á¿4ÝQ<÷•ÿZÿZÿZÃåõa”î6ø÷ðX!¬SÂ…äo¥'Ãø•|í¾^õ~ߟ’ÿZÃfz8ª'*]ÿ`þ+l7/×ög¶É߆®¶Ûÿ¹lþk ÛéÃvø/«‡¡o»¶òu<Ûàßía-ÿµ†ÝB¾î-ÿµ†Ý¶ðhð·É­a·‡/‡{Ë­áú0JW†—ÃÇÖ_¯5ìóòRüžQücx^kØçeÈ—ÃåáÇò_kØíáRüžQücx^kØí!äËa·‡× ×°‡ctGñïá5„]÷paɹ,–¿Ù¹/åù©ês¦ð¿ÏËW ×ÃÍüC9ìzø:Ân—æËa_// »=\š¯ð£æïzX ›éᨽªÐñïë”W.®‡ÝÍìÕ^CúàÞÏð;ó5//Í×ø¹lþk »=lçßÓï ½Ö°ëa;×Ãˇ]Ûù»^>ìzØÎßõðòa‰žÔðŒáÏ£» ÿ¼œ/‡­ð¼Öp=¥;rÞl+=Ôñå_Ïk ËæÍñß·½'{xÙß¿ìù±×®£‡£ù—´‡:žËæÒý¸ÂÒó-Ãó‡àhæoºÞ¹ûùZÃÅõp¡½í^§ë¡–Ø[ ~›ü+\Gº[ímfå°ëáuÂmõPË¿…=Üçå[†íÖãøÇòuücùžmò÷°,\G· «ãƒËßÃuÂ-íá6ðÝmò÷pp;{8Ê?–¯áÙ&ËÂ}ÚC9_†×èn“¿‡ë„úzsƒû¶£ûÏ~Düw¶ÞÙòp3=ÜpßcLß´ü]o®£‡Â{‡é*üof÷öpËp3=¼‘¿·ëá}†[ú‡ú{inqu· ÷g·Ó·}ò8ávë…Ÿá}›Ý¾†ÏÈù2¼Œg þ‘üþ~~ä°ï7Þ6ìz¸mþ–…ëèá6t5ür¾v½ºÏpz¨ó9–¯áËßÃu­çe ~¿œ/‡]ï3ÜÒŽòSƒïÇ/‡]oov=Ü6ËÂ}ÎËcøå|9ìzuŸáÖzxý}›]oï1Üßzù¾Îcïá:áÖöp x®œ/‡]on­‡û¼¼öy¹ž¿‡ë„ÛÙÃ?R¾?–¯áÙÃ-C~¯H~«ˆÏ¯ê§€GÓ[ ÿhþÍüÉýœØ5ÂÅõp³|…ÿ‹ß§ÞõðáîôPåGá·‡¯"Ül^ÞØ~îöð±ÃuôPnt„®Èÿ…÷möppyyº"ÿ»¾Šp3{xñýç])ÜÌîz¸n½¨=¯z/ç·÷ppË}‘Ÿáû)Zþ®‡~ûuè?ÇŽøS¼þ1^¿‰×ÿˆ×ïâõñúÛûùùßãùIÄ÷Ó€ï'ïO#ÞŸÄëO#þŸÄëO#ŸÄëO#½ŸÄëO#ÝŸÄëO#ýŸÄëOÒžß~ôíÃW??ÿ»ë—çÿ÷ïùþuTÇßÄôobúbúbú«˜þ*¦ÿ1¦ÿñK*ïbäøç˜þãσ$ÿøå¿ í ýæËo|úÛŸëÓß~ù­Oÿȵ”ïÊv…}õóÐ’üyhAÉà|9ßó^¾9}Þпñú5\ùþ¦-7‘Îåõ€¶çÛxý§ŸÉýÓ—ÿä!“ü¾üí—}íøulwà¼ä»ÕßœÏÀ)ô÷V|®ïçp=·ÓÇ~óåoÒýõ—2½¯‰ÞWèD;÷%±wçôO1ÝQQ~íÔ¯¿Œ×h¯~_©ô›Xþ›Xþ›Xþ›Xþ±übù?Äòˆå_Åò¯bùW±ü«Xþ±ücù?Æòü’ÙÕ/©}ý.–';þ%µçþìxßY?~Ó ?߯4؉Šédç íø•åü>Êï}”ÓûNù¼ßHi-j‹Ï–|øüû!¦?Ätdç}dçýׯè·§Ëû•âk‡×ß-ýNó_œ÷ÞËë3o÷ûؾŸø¡~ç~ˆŸÇ·Úçqí‡t¿¾Ž¶ëÒúè´õò_ѳxý2^¯aMôUt`¿ú/€ßßÇú¿õÁ/þS¤ó§¸XúS\bñyæ»Xþ],çóìŸcùŸcùïcùïcùïcùïc9øÛ‘Ý÷ˆåø{G¼Â|ËÿËÁÿXþ±ü?bùZ(Šýý¿Åô¿Çô¿+þ'¿‹éßÅô¿(þÀ¿*~”æÜK¿÷ö/ô#ôWÛ¿‹×Ô¡JùÿcôÛBz½Üƒä/-wo{üÉþþA¢¥<ƒæÿÇ/‚Æ®—²\ƒdÿýË'~5ØÇßý¾Aÿ¸¼Îrò%_}ùUlw€ããÚ växëöjãÏ/š<´ù«5—Ë-\/%·–\ZínÉìpK>\0ßþ3“Ë­æI®\_¸œ¸Ýàv…ëßúößz¾ýûo‰½çþôk—ÇÚMöï>|õ‹ó¿»þýù÷›×ûÍ´Ÿÿýÿî)þûßÿ»§XúÑlî¿õð¿ýûßzøó¼êË÷e° ¿ûÅï|ùïþþw¾ü_~,ç¿|ù/¾æÝ_~ðé¯:ôë/C‡Â<ü¯_þ«OoèÇ\Y¯‚&ýùË Im=*ü#Ÿ>ûG>}ö‚Ÿô%ø—iÞ÷˜a±Ã¯úO¥>$?êNô`µ_vm=ð%þE·ø’?ü"éOÿñI|:¯3–®ß­ßÃõÚý¾ÕüÑ;Oäuy¼vÛ}y©Ùó½ßBí³/Éýzäl‡ƒý÷kÐú4\¿ì»/¦Ù[azå~¹O;ªÙ˼ßÂíaÈ×÷ b(öo©¿óŒÑ)ý”/ôCÃ/ÑìÕÿŸ½«°¢ê·f!H(%*a²ì. ¨””tH”… ¢¿ &¨Øèoãov‹õ›øÛÝ­ÿ9çÞyoÞ¼Iv‡Ý‡o¾™»óÎÜ8÷ÜsÏÍùg•‡ÚÞÿe¬må¡°^â{¶^ðÚåõC²~Ì5Ï÷š–¯Þ’ws7ò\ØnŽâ¿¦«j»¸Øå¿øúe“Õ^¾Wc¿m5ó9¿¾ î÷ϯƒêÛôøVåq‚êæ[žÞˆ–ÇüöuôøI­‘7s/7üéJ¬>«Æ¨‡^ŒQ9½¨ùr_ö«èGý*ûUj~kº\9×÷àq/_ÃëÏâá³SÎ5g«Ÿ¯º®Í|+§ßråÜðc­å‹¿\ò¡ÖÈG¢z¡öŒ‹†×Þ~ž¡]õˆéÐò¡¦¾Ðþ¬9¾å×—Ÿ~äÒ_/:é¬mé©þqP}/ÿÔϽó}Ú{yvXmuô£‚ƃƽãàÅ—~sÏÊCR>èß«›~Ï¼Ö s¯ôç ¿›»^ÓéåÏ£ØÅæ­OˆYt¯4|Êç×8Ãÿq†ÿÙuTfí¤ s¯Ì__5ÉÌ«d–åOª ˜ïoÞŸ\é?/w²yreÀ|ióþ”JÿùÓSÌûSÌûãÌûãÌûãÌûãÌûãÌûãÌûãÌûã*=ë¾Ìû;š÷w¬Ì_¶£yGóþŽ•žugæýñæýñ•ùëÑÆ;ó¿Íûã+=ëÒÌûcÍûc+ó׫5ï5ï­ÌŸçìÔWýŒü÷3òï­¿ú›ßû›ß½ý´Û›ß·7¿{ûÓxµ1âUЯ2Úü>Úüî7:Æü>Æüîígh~h~/˜ÿn~l~÷Ú1CÌïCÌïŽ]3ÌüîÔwÃÍÿÞuAμԑæÿ¨uÁó×k[9×ñuôdÔº­¨öŸwžKuÉqáú}_SræÈSInjKý ù•“˪ê{íO°›{ÖÞÓw¯\VU_ƕגþ[Sú¯ªvˆö'¾¾4wœUµ÷êˤrVÒQrSÓö®ŽGNΪj¿jÒ–Ë(}éo _Æ”kI®·µ&\®5cr}èŒ×éÿÿyòlîv ÓŸ˜/OÉëMãÛ—k ˆo×™qÙòüqÙªë«üqص/_«Ûî2÷Àú-¿½ëÝo%'ZCô/×"¹~Ð÷ 9Xsv–’|è{´|hMáô¿­®]=º«Ö £Ëµ¦ª/JõBm³;R“ ÚkÔTƒv5Ñ }FM³ý Ôµ0¶¢#u)€^¡®„±© ¡êvŠ·~ÒŒP®é#wäÓ˜Šì|-}/×Jtý$_k{½dîö†¹gõˆŽXNÄ“ƒà~¤¤ùèÕ#f¼¯Ü™¢ýýçåkUû…tz“Ëþ?§¼õ‰×¾ð·;ƒûg´\€|èz%koèš%nLõÙ£Ång˜{`>GÕ Þv‡×ÎÔþÄowxõº¦+ÔúyIÿÓûÏ‚ä¢T/è{•Ë¿¹;ýóÞú>J¿ëç®ú\.½­Ûåº^jTŸý¿¶ëk§?¨Ð.ëjì±®“×ǹ|Ë_/Wõüú§Ö«þóK¡þ¤© ãË;ÒT¨Gi*ÂøòÎ45!WÞÌ<Óòüy¦!ùGï®pì¦üõ]+ª«ü­ùYÝý/N}X0>êõÊCP9õÚÉIûO¼ùæ³þæž_¦kÚ¯AëÆƒóÇߢR¾¬Ùñ¸‚y/žy.Ñå±jãwUµ{Ó/çæ^dvl å]ßW[N´?…zAßKùX[õƒæWN¿×tyO«Þ0÷œ|èôÚaú]nKù¡ïú÷ª–·ª–¯ªÊƒw骖×(¹ðÎqög 'Å#:¾N¹ò–#oû7ˆï>®­üªêxL”ýe¿”;O9óê#¯¾òÚ/ÞþωFî'¹Oº_Ö?'uzz(:_œý?5}.?²û~ê{Eþ¾§%¾Gñ]ßsüÍ®«søÚµÄÏ4õ‘æW¡ÞÉ_×çÕ7UÈs/7÷ ZâèðÉáwÔúFoý3¢B3ÔÛÿ[hWh‹Â;.V¸nZ¯vêOïw¸&TL ŒœP9¡Ró%ýgáþlŸ4§¶ïª9äýnŠó½§u¡)ó+¿?Ûéçöîòú|ќٱ«Ž¸÷»O…|Ñœ©|!—×.-”#g¹ùßЕä¨8å(Šß¼éâ“3.š³#ò÷‹ð¦Óák “>ý<ýthMµÕÆT[®t¬™ø»äÓÜu:Ö|=`îßc\SåÕˇ՗Ãüuü£+̼®ÊüñÉ*äký…¶—ŸÝ…6—×^ŠÚ†ä¸Òç;iÉÂó~/ ‚!Ë®ÀîòØYßm«èØýó~¿­_Eç~è_”åÓ_C]5>ý4ÔEãm·{ÇqA?½¨ÿwÚIçÍÿ úÞæ \þê{Ñæ¯N‡£¢óOÓ9z¡”?ÞüÑá:zÆÑC…|Ö÷ôÊC¾þçð9©¾Òï­¾\'Ÿƒøêå”þHªFú‘æ÷Âõ|ùó¨½z#è;¾Aë‚Ö<¿Ú¾˜»‰Gaº½ë œôæÛ«‘NsÏÚKæ^iîÝLº—;s¯ôMŸ×.6ÁDî·5ÞÑÏøµŸoÔ~oSŒ?ÑåÚÜÍ{iÕ[9{WßãîU}ù§=Q®ðæسºÿ¶Ü´_=ùŸßšÓÎw^£õ¦ÿºh>F¶R⣿ºËÁê×Kæ(¿þóqƒùëôèÿk¡œ–k~åï³^È·(9Ìò…Þܱ<)Ö.ù+éáZ#ß%=‹:ü’.éáêàO?‚ìþ ¹Š+ŸÞõBÁí£ü}•W·´¶ñ©¶ð%é>µÃtƒ¿µ©>ÇšÐm½õÝÜäõ¼w]£Û—çïË[_ *D¿×\¾½Znôl¡~ÍG¬; QþÄ·Š•ÿ:>U/wAù”ÿý-ïøïš/GÞzµXó-ªÜ˜{L=œ/ÕUnÌ=«¿Šÿ:>ÕPn<í3>åFßÍ÷צtÓ9”^¹ ²Ó‹5¿"ëòЙàS>ø¿ºå#hÝq±óYǧÊEh~ÛmùßñH¿~ ÊGs/zû ²Ü诨ü¨j¹©vX\¾Ö|;Zÿ%ß…íÆêý®Ií壿 k¿†Xó¢Öþåæýå—ûàþ}wøá”ïâOoVºêtæçûšNçêÎ)Þþswþ¯öyUQõƒ¾_¾¥m?™{d¾Äµô½öåÇïŸòµƒV¼*žýS‹øYU{2‚Qöcmå›wíÕçi÷‡ëç5ÐÎ2÷Ôô¼§¼èçÑýGš.½ü‰ê7Òtµ'?Öô|Ãß>¯þ¸ƒ~^<|5÷˜ú(XŽW—¯æžÕ#5+¯IçÛ¦ß_`îæ½äó“Skï­a>ôxúþiü0÷¬Ü„¯#Ýmt77¿róªÚ¢Ÿ×ã÷“„<º?!0ût‹µÏÐuöã‡w¿‚ªî‡@0Ä·‚õúnö=0Ñö[Oaè̽›Y—QÅ}|ÖÏè»y¿Ÿ‰ÏzCgîÝö]HøÏÈýL|¢öyšÒÍÙ¯©¾;úÉ”kç»îQóø&¹ŽÚoÆ[¿Ž3¿3¿G}Þkߌ7¿7¿Gí3w=Ñ óü}BJåHÿUŽ4_«ºÎzMÉiá:ms/ÉÝ£ìèuöænè å =—TNâê­’~ªmòcîzduå n=UÊï‚úH¯ƒ-ïH1vÕ?#ˆ&Å0Wßètçò߬[.ïH&˜Ëî" ì.2¹rv–~/=}¢kžÉåº&šÐÕô+—;ót¸ñõˆfèŽåšÁéë“l¿ýÿÏ•+s/°Kòíñ`}²zrPýöÅÚ’Ÿ:=ÅgWå»é·(÷ï¯9{âŸ*/ùãß¹ýÇôï!ûü%Êß }^Ê·biŸš{VTµßFû4TSíÛRË?UžÍ=°½dî5$ŸqëÇ’V·ý·_ÎÜ=òQÕvuIï¤ßÕ=ž¡ý]SrRÕñƒ’üTwûÙkOëçñåauÛÏ¥þ}¯éþs÷ÚÉý&æ^Åü_söÁÚ’ï:=5g$m?ë{©\§f$ìOê'1÷*æwÒ~ñbÏ÷¸ù%Um'Vw»5»¯§ñÏÙßs¤y/jáh#'ÞïŽDµ£Ú§é}'¦$š.J.4_Gw5óÿÊùú¹óŸR>'ÍgŽà}ýÍÝð'iù *‡¹}þͽÄo}/à·¾»¾‡‘'çÕÀGs/§©¬JÄŸ’ñ§$8ë`OĪ\xÚ‚ÒUáoH¹þRâ ý¥Äa]õ—3‡•ë/g«Fχ;éÎ¥\Þy¾Î|V°èü=Aξu>óu¦ÏY§ã·ö¥¯8ó/h=¶“.§ʼn_®_GDh/æ…ë7ßYïežÓ¨3\åÚá'ýïè W¿˜¶‡sý_dç¾#êðUÿ|5üìhâí©? öuÏßßÜiOyíÚ u%~úÓ/½yߩȥs‰× /o¼]ß;¤O¿º¾wHŸzì‰_Ô>ëAúÔÅŠèmRÝAý Aßqõ~×w˜yîÈÏð=d‡æòEçÌØrÝî)ü^þ?†ÜÇåG^¹ÈÉe?V¯¼ó#¼ü;ë å5ü»ZUàÝKòQ’~н$ÿlù²ë½rá·ñ¦'hüȱ7&—ëgÜõd!vœoüÖœÜå“þ½PnuN/Ï_ÿêµû”ë H Ç¡vnñÈq8rûD$.ç å';ÑÐñ.”Í‘¤ü¨½ò—Ar²züÈÉG~{©ºå#¤E¿¯¾¾Ówoüª?>:&Îþ;Vø·ï|Âè7òï'вœzÃÛ8O"`^Dr=mÚ]åùí¯áAßóô³FÙNw¼.êûÞñ“°v§¾§Åÿüï*¯n=X}|Ì·ãj?ÿŠE~óíÕ•Û ñ¾š—Û¸õo›Õä[¾=RSü ±Ãóø“í*Ïï‡Tîé +Wÿ”¾¹võS™çúî/J>‘vzÛ˜ø;õ ‰o×üöFŒïÒÖƒGTÑ=Ø^°c% e رüá½;üùõ‡êð\ó?h€¤_e¿îxîÕÿ¯~;Dß í'Â~ç,‚ì”jææC¿rÃ3?Ê{…áK¹?_ªfgÇçG¤YÝüpìmÍ—JÍ—Ý 'k+?tù·ó‡U#úa݆ý°îúk>êp«ÞOÞìÝÞËßå#Û¿8WB»¹{À÷›»Ñ7œá÷Î>v­‘ÃÊ<9LЮ ©ƒý*;öëž?nj~ïLSûUvî×½³_;ÃäS¥“OúyÎ>6ùRéäKíhwxçexÛ{Î<Ã0ûrÍæ›Žk¾€SntyªÔùÍÿ6«ÉçlymGó5[~š{Vߘ{¥¹w3÷î†_ü3wg®3ÿ§»ác\~š»§þrö§ÔÚªêýøÃçÆÿ¨yGiõùôk$ÚWoMçGNÎõÿÑíosOÌ×xòôÎõ}mçcI?”òƒî¥üÐ÷žžY­vañÊux;ó½Ò𽢊|wøM¿Í[©A¾›{~=ëÃß¼þ²q#*hÉ˸•´ä¥ºê…!N¬¡bèƒòi˜¡fè‡ú5gåçëØ ý…š±•ú{'ñ¿“៯>ýqD_sù[Пãôô§™{D>Uƒ]¥ËSíåwèw«ng­Ùþéê³Ëòë¥1côóÊ1¾ëÿWÿ;«µ- æmØ«—OUÍàvJ•ùsf÷Dë1±Ï:,â¶½ë4£ÖyÆÞߨ{ø|(ï>Gýº‡Ï“ª¾zÒ3¾aâ?¼Ò¼c¸‰ïð¸ë¶#ÖkÇ­gÇ8ÏM:¢¾ —ö>É׋<û¯ÓUÏIJŸãÚeiËwýGI’ʃNŸO¿™¶/Ê«ÇþK_Œ]QžoWT¿\ŒþCäÁÜ=õTí•};G·×ÊýÛk)ȃ¹ëõéŽéóÃÐõ ¹úÏioêÿ«ú]µ ýz½û09v_î{rú´uÓ™“ÝâˆJŸw?ÇžõîÿèuÇÛ;ßαג~¯ÎÛNìÈ[Êñw•‹r7߽ߙ×UKÌŽ]u;–ëœï#ʉ–”ÚÆïÕà³g?„Êý­çÔTÆÒÓAû'8zص8mî³8mîìÿú~Lz7êû¦ÞýR£öysôlÔ¾5ÁûUÔ¶üÑñ Ú×guùWÛùäjoRSÓÕ¾¤¦eUå6j?/§ÞÚ8ˆµ—om _ÚäñÁ›ÞÚ–®!&]CÊ;Át 1ù<ĤoHyç!´ŽÉßøû‰9õ¨þßk—9ú}°ÇŽ«-|}¢õèL*è­?@”ûä·S/C}Lw§>ö~§:X?ôl·ÔN9Ðñvíïgúóëïùkîåæîß¼ºû§æ¯?¨ÿj¬çûäAöî$Ce×;ß®j½ìåcˆÝoî%>âQÛù4¾—o…õ®®q½ã;…í°|>{ú‹%½qÇ¼í§‘†ndĸìêÖ»5§Gœñ{ŸúUÏ¿)×Éél}«ï:à\û7?}!íßR:«1iËw È5± ª¤ö׋ŽÜèÿ½ý‰Î8r õb"þU}hîíÐ >¬éôW_ù ïßÝMïÈííP¡ ö€J=0QX¾jŸrú4;ï‹<žÔUKȤ -ÉË‘WßêçÁödm+?Ùù±úísåF—¯ýX{ËIÁ|+òØÕ>õ•GÞw\3=1ÇãÆ7Œ[ßzÇ #¿_Ù­ ÔЙ»içû}Ânñú'u‹Ù¿ð{Uý^˜awì~pg¼quúyõ½¶ËŽôø¦Ö «;®•%~›{€ÞN«•ÊKMë[ͪÎ#¨.}øOÉÇÀù˜ó0«»^Œj·L ø^RÜñ´ ü+Þürì\ŽêÏ|{8ÇÿþÅß“–Þøó†ÌÝ#ßk/?½rÅ/Í)¯®­üqO껑·ì8e·‚ñJCgî¦\ únñod¥ÿ¸öHãÏȈyÞïÚyû)8ý—†ÎÛ¯2Øü>x-× æ‹™v»á›Ã¯„ò^SÇO7¶bŒí6ý éSgOßsÎîÍš¹ÕŒYsXõept¯,ƒ{WüÃÿ»v/«¤ç]{t//¯(g]ËÊË+»uïQÙ½‚•u­èVYÎÚ”¥—‚cÞ܃¦ئ Ûû ÝçB7{úAsgÍ^1Z£Ç’3ŒÃ]À)áTpZpÚpfà¬g]8ëÁYÎuàlgC8×…³œálgS8׃s}8›ÁÙÎp¶„em8[ù!œÁ¹1œmàl g;8Ûù œ›Â¹œ›Ã¹œ[ÂÙÎŽpv‚³3œ[ÁÙN”‘®p–ÃYg%œÝàìg8·†³'œ½àÜÎmáÜÎÞpö³/œýàìçöp€s œƒà ç8w€s(œÃàç8GÂ9 ÎÑpŽs,œãàÜÎñpN€s"œ“àœ ç8w‚sg8wsW8§Â9-*ƒŠà@ÙABÙAB™AÙABYr䯑#Gn9BÙABÙAB™AÙABYBÙABÙAjÃ´ì  ¡,9rãÈ‘#7Ž¡ì  ¡ì  ¡Ì ì  ¡,¡ì  ¡ì  ¡Ì ì  ¡,9rãÈ‘#7Ž¡ì  ¡ì  ¡Ì ì  ¡,¡ì  ¡ì  ¡Ì ì  ¡,9rãÈ‘#7Ž¡ì  ¡ì  McZvP†v‰Êœ"8½ãè!Gn9BÙABÙAB™AÙABYr䯑#Gï8zÈÑ;Žrä¦ Ór„²ƒ2„²ƒ2„2ƒ²ƒ2„²äÈ#GŽÞqô£w=äÈ#G(;(C(;(C(3(;}™–%Gn9rôŽ£‡½ãè!Gn9BÙABÙAB™AÙABYr䯑#Gï8z¨ØGï8zÈ©·œzÌ‘G޹qäÈ©·œzÌÑ;ŽrôŽ£‡œz˩ǹqäÈ‘GŽœz˩ǽãè!Gï8zÈ©·œzÌ‘GŽú2-7Ž9õ–S9zÇÑCŽÞqôSo9õ˜#7Ž9rãÈ‘So9õ˜£w¦1-KÅ~DÙ;^ûÈkßDÙCQöŽ×>òÚ7QöP”½ãµ¼öM”=eïxí#¯}eûU_yë7oýUŸEÕWÞúÍ[?EÕgQõ•·~óÖOQõYT}å­ß¼õST}VìGT}å­ß¼õST}U_yë7oýUŸEÕWÞúÍ[?õeáõYT}å­ß¼õST}VìGT{ËÛ>󶯢ÚcmXx{ËÛ>󶯢ÚcQí-oûÌÛ¾ŠjEµ·¼í³i,¿}Õ+ö#ÊÞñÚGQý=^{(ÊÞñÚGQý=^{(ÊÞñÚGQý=^{(ÊÞñÚGQý=^{¨Ø¨úÊ[¿Eµ·¼õYT}å­ß¢Ú[Þú,ª¾òÖoQí­¾,¿>‹ª¯¼õ[T{Ë[ŸûU_yë·¨þBo}U_µaùõ[T¡·>‹ª¯¼õ[T¡·>‹ª¯¼õ[T¡·>+ö#ª½åmŸEõzÛcQí-oû,ª¿ÐÛ‹joyÛgQý…ÞöXT{ËÛ>‹ê/ô¶ÇŠýH:ž•t¼,éxVÒñ²¤ãYIÇË’Žg%/+ö#éxDÒñޤãIÇ;’ŽG$ïH:‘t¼£Ø¤ã¡IÇ[“އ&oM:št¼5éxhÒñÖb?’Žg%/K:ž•t¼¬/K6ž•t¼,éxVÒñ²b?’öç$í/JÚŸ“´¿(iNÒþ¢¤ý9Iû‹ŠýHÚOÚÞOÚOÚÞOÚOÚÞOÚOÚÞ/ö#i`ÒþƤýIû“ö&íoLÚ˜´¿±Ø¤ý9Iû‹’öç$í/JÚŸ“´¿(iNÒþ¢b?’ÎçI:_(é|ž¤ó…’ÎçI:_(é|ž¤ó…ŠýH:#é|¤ó1’Î÷H:#é|¤ó1’Î÷(ö#é|°¤óÍ’ÎK:ß,é|°¤óÍ’ÎK:߬ؤóy’ÎJ:Ÿ§ K6_(é|ž¤ó…¦±dóy’Î*ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø6,ÝõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}V_–îú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚë˦±t×g¥½¾¬Ø´×7¥½>+íõei¯+ö#íõMi¯ÏJ{}YÚëãŠýH{}SÚë³Ò^_–öú¸b?Ò^ß”öú¬´×—¥½>®Ø´×7¥½>+íõei¯+ö#íõMi¯ÏJ{}YÚëãŠýH{}SÚë³Ò^_–öú¸b?Ò^ß”öú¬´×—µaé®+ö#íõMi¯ÏJ{}YÚëãŠýH{}SÚë³Ò^_–öú¸b?Ò^ß”öú¬´×—¥½>®Ø´×7¥½>+íõei¯+ö#íõMi¯ÏJ{}YÚëãŠýH{}SÚë³Ò^_–öú¸b?Ò^ß”öú¬´×—¥½>®Ø¾¬¸¿Ÿ•öú²´×Çû‘öú¦´×g¥½¾,íõqÅ~¤½¾)íõYi¯/K{}\±i¯oJ{}VÚëËÒ^WìGÚë›Ò^Ÿ•öú²´×Çû‘öú¦´×g¥½¾,íõqÅ~¤½¾)íõYi¯/K{}\±i¯oJ{}VÚëËÒ^WìGÚ뛦±t×g¥½¾,íõqÅ~¤½>+íõei¯ÏJ{}Y±i¯ÏJ{}YÚë³Ò^_VìGÚë³Ò^_–öú¬´×—û‘öú¬´×—¥½>+íõeÅ~¤½>+íõei¯ÏJ{}Y±i¯ÏJ{}YÚë³Ò^_VìGÚë³Ò^_–öú¬´×—û‘öú¬´×—µaÅýý²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}V_–îú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?Ò^Ÿ•öú²´×g¥½¾¬Ø´×g¥½¾,íõYi¯/+ö#íõYi¯/K{}VÚëËŠýH{}VÚëËÒ^Ÿ•öú²b?¦±âþ~VÚë³Ò^_V:JGUŽép΀s&œ»Á¹;œ{À¹'œ{Á9 νáÜÎ}ᜠç8÷ƒs8€ó@8çÂyœóà<ÎCàüœ‡Âyœ‡ÃyœGÂyœGÃ9Îpç±pçñp.„ó8O„ó$8O†ó8O…sœ‹á< ÎÓ«Ÿ¥#áá';(S(+~2ä';(S(+~2ä';(S(+~2ä';(S(+~2T:jöð“”)GßxeÈOvP¦}ã•!?ÙA™rôW†üdeÊÑ7^*5{øÉÊ”»ÎrËŸì L¹ë,· ùÉÊ”»ÎrËŸì L¹ë,· •Žš=üdeÊk÷82ä';(S^»Ç‘!?ÙA™òÚ=Ž ùÉÊ”×îqd¨tÔìá';(S~¶3ÊŸì LùÙÎ(C~²ƒ25ŸùËŸì LùÙΧT?;JGÂ#¨Ô. jgµË‚ÚYAí² vVP»¬tÔì¤g‚ôRž ÒKó™¿ž ÒKAz&H/•Žš=‚ìœ »(ÈÎ ²‹‚ìœ »(ÈÎ ²‹JGÍAí¬ vYP;+¨]ÔÎ j—µ³‚Úe¥£f ~ž ~¡ ~ž ~¡ ~ž ~¡ ~ž ~¡ÒQ³GP?sP¿tP?sP¿tP?sP¿tP?sP¿té¨Ù#éxVÒñ²¤ãYIÇËJGÍIdz’Ž—%ÏJ:^V:jöH:ž•t¼,éxVÒñ²ÒQ³GÒñ¬¤ãeIdz’Ž—•Žš=’Žg%/K:ž•t¼¬tÔì‘t<+éxYÒñ¬¤ãe¥£f¤ãYIÇË’Žg%/+5{$ÏJ:^–tK6^V:jöH:ž•t¼,éxVÒñ²ÒQ³GÒñ¬¤ãeIdz’Ž—•Žš=’Žg%/K:ž•t¼¬tÔì‘t<+éxYÒñ¬¤ãe¥£f´×g¥½¾¬tÔì‘öú¬´×—•Žš=Ò^Ÿ•öú²ÒQ³GÚë³Ò^_V:jöH{}VÚëËJGÍi¯ÏJ{}Yé¨Ù#íõYi¯/+5{Ìgé®ÏJ{}Yé¨Ù#íõYi¯/+5{¤½>+íõe¥£f´×g¥½¾¬tÔì‘öú¬´×—•Žš=Ò^Ÿ•öú²ÒQ³GÚë³Ò^_V:jöH{}VÚëËJGÍi¯ÏJ{}Yé¨Ù#íõYi¯/+5{¤½>+íõe¥£f´×g¥½¾¬tÔì‘öú¬´×—•Žš=Ò^Ÿ•öú²ÒQ³GÚë³Ò^_V:jöH{}VÚëËJGÍi¯ÏJ{}™÷{œø3ç›gø½3ç[zÎ7=ñ»iÎ÷Ýßÿt¾ŸæþÖ#~sÍû=QüN›óÍ6ü^›ó-@盤øÝ7çû“îï—:ßs«¿çý*~gÎùæ~oÎù–¡óMUünóý̾,÷ÝÌL¿Îý­Müæ÷{®ø<ç›yø½<ç[ŒÎ7añ»{Î÷?Ýßu¾¿çþVè®&ö0y²›É£yè¬Ï:Ðä9æ=ÊÊBØ÷¿P–P¦P¶PÆPÖÂÖ—¡¬¢Ì¢ì¢ £,µZïÊ ?‚ûÏ«3ì–¾ÿÿ|]†=ZWß3Éó_àÙ]ÿɰ³ë»s=ûÝïÙïðlîò [‚}ïî-õÿÎY•ߣޭNºßà·“ïɰsë»sºŸ{[]š¸ïÆý-ÎÿÁÿ[=a{Aš»·Õnïé¦ £ó£OÃÏÚF_S|óÒD…W]ï¦ý»ó[ÜgqŸû…›Jzê—¶ToBøp¥þß9“üîÐøÑU½û°÷ÖÖ÷k;ksüâÈoÚù[UúÚLçþ½*σ«ʻh^z#Ã^-ÓwçLë¹÷ÿ†ðÿò:uØSõÝ9½Ï7†ÿ{ «Ã.cx(ßÐÿ;gMýô¼¸K.-xÇÿÝiqŸÅ~ð"?Ó>ÖDü×D:œ#,Ü5$GÜxÕtü«#üø2Îc†Ç]ùÝ5=N×2f¸-³®pÿvHä_tüTLÿTÖî_eÿ‡ñâ/<‚“^7]Xz‘.Nzÿ¢Ò› 7^:¢Ò[³ù«KH¼|ûûï(ºÖ1Ãmu…û7<qä´µ¹Ç¡ Ë7‡kQéõҥס‹J¯Û¿°ôæèÂó7?~ñÒ/<Ô?‡ºæä%žÜëôË}ÍËAüüS~sú%¬Fô£óKQN…׈nÿÂérþ%‰_PI)L‡¿ÄúçG—_ÇÏŸ®îz+Œ/ùþ…ÓÅá_aüüùç—Žx| Ò k§ü—ÐB¹ò–PçÝ(¾Óq_ÿ¢øRè_8]_üãW(WAéðÊ‹Ÿƒèâøç'§Î»qò#N9wèâäGœr^è_’øùçGœrîG”~tñøìŸkkùˆ+Ï~zÃù5G'|à ¦ó×§9ºòØþÅÓ‚ñ€zÆ.ºž N¯?ý'½ùå-~¸A|ñ‹_¼ôÆãKŸýè‚ëiÇ—(¹òÒÉ•C.W•«n¸üåû/½ñø.ÏùtÁú/<½ÁtþõLŸýü ×ãáé ¢[ʯs¯®òö÷ßqìâ5«ÇãðÅ/Ü8鈫ïk#_¼é¨Ýõo¼réïÓšÐ/qä UÌô¶ÊºÂÛƒCcú—®•¹G§#ž=Ô*_â”V1õn0Ÿýé¢ú-‚ù—O7Üpÿâð¹0qôspþúù‡.¨‡´.^üÂí5ç8åÈMVŽ.NùHB§iºèräÐE•#'Üxü‹²‹u¬¢øì¥ â³CοÊÄáFåGο(û9n¸½ëŽ_<þÅãsðHƒ—.^üÂõ¤Z”¾òÒéI‡.JO& 7JOæü דîpÃôP~üâñ/ŸÃõ¤›.^ü¢ô$©'óé‚õ$¡ÿrtqÃÖ§œ…çoa:Âõ¤;~ñøÏáå×M/~áíiç>ÓEõÛúçG!]ÜpÃý‹²süÓ§×?ƒü‹C¯×?ƒèÂô½ö%º̧ ®5]t}™Œ.ºtèâõ_E×o¹pãñ/ªŒÒWþtÁõ`”^˧‹nt=¥' Ó^ÏDéI?ÿâÐEÕƒQzÒ.\âÔGÑù›+Gqê­¤tqÊGœz+:? Ã*oñì íZ›ú7âõ[õëÅ©§ƒéjo„ó¬ºÚûÑý¢ñìÉ|ºÚÜÞ׎ãK®÷2lÆ–?_ʳ®°[nº¸á†ûç_œô†ñÏMÎ?Ç—¨tx邸çÐEñ/i¸QüË÷/NzÃù—£‹–?#^º0ùã1ø—4Ü8òÇcð/G-<ÿœÚ4ŽÄáŸCGþ’„Gþâð/G-Ñü+&{S<®¦Ó«bÚ§*¦}ªbÚñé¢ÒḊ#?ª>U<íóêiO;¿®Mý‰qû ãñ%ªÿ±| ¥p]8]Ž“~ãç~3÷üéâ†îŸ7~î”Ñy9FìŸókT:¼tAüsè¢ø—4Ü(þåû'½áü˧óóŸÅ‘?:7ÿ*}è‚Ó‹tqä4ŸÎ/~•1éüÒn¾üáñø/?‚ò×.\^XL9uÓæo>]œò‘„.8£éüÒ§¼1S> /G¹pãñ9^~D—ßöωin\׿üÆ¡ã.ÿ*}èÜü+¤ó/¿…á&§óK‡_üÂéÂýóãKxüüõAŸyL:G®¢ý‹CÇcúÇcÆÏOþœ¸DÉ_0]¾üÒùËŸC%W«Oç/WñÒ뿸| _”üùǯ0ƒÒ/ãÉŸüùÓÅ‹_¾üqæ?OÚËç(:îò¯p>pa~äÓËU~¸ÉéüÒá¿pºpÿ¢ìûpþåË_ŸyL:·¼„û‡ŽÇôÇŒ_PýGÿÓÖ¿qôŸC§^]=ºàz5Žþ‹çŸ_Âã§þ£ÿ‚Ò/ãÉAPýGÿÑyíIçݨö[0]¾}_Hço?;tQí·B:û>_:ÂÃj¿ñ%Ÿã凟}DçÈ‹þ5Z¿DÓq—ÑúÅë_Þ¦ó‹_´>NGx¸Aú Š/ñø/?Üå7Š.'/N=U~£è¸Ë¿J:oùȧ .¿ùá&§óK‡_üÂéÂýóãKxü‚õAŸyL:·Þ÷/é¿ ú#X¿Ä¡+¬?‚Ëo¡qê`½Qnœú#IüâÔÁú%Š.^~ÕÉìƒð~³`º û ¼-WŸ'¥ ·’§#Ê>ïÿ 7ŸãåG¸}àßÿ§]Qö_:îò/Êþ+¤ ¶òÃMNç—¿ø…Ó…ûeO†ó/ßÞã3Iç¶KÂý‹CÇcúÇcÆÏ-,4~9þEÓå÷¿Då‡×¿¨þ¤þEõoDñ/ŠÎáíé(ºBþ…·§óé¢ú¥VŸÎ¿_*^z£êó0¾„Ç/Nþ†÷„çG¼ü'<¦Aò¯ýá¸ýø‡ÎÛþðÒµ?´;º]±ºtA튠tDÅ/._ÂãÝ^(¤Ë·‚ér3ãrz<<½qèòíƒðôÒEÕû«Oç_ïÇKotÿx0_ÂãUŸûÑùÕ¿~tÞ™Õ?(NùÍ÷¯zæÅ)—A騹ùHAù\¿Å¡«]ói’§#þ|çYuÍÉ×,¦þ‹¢Ëï?-¤óïŸtþê?-¤óï?]ýt„‡Õ/êG—¯¯‚éÂõ•£ëª2_Ï; ïqçëUe^Ÿ_¸µþ_í®?ª_ßcjÝ3Óýø¢b曊)*¦\Å7ž¼¨Èôæø®vçoÜñ<¯áý¹ô†÷úW\ã¡qùçß^]{û} ÛÓίQé ¦[yF55¨ªó‚âòÏ[5dqŽ]Ô÷z'òÏ— :o™ £ ÷K[œôºé¿£b¥7ç_œøE§7G埈™^3½"fzEÌôŠ˜é±Ò+c毌™¿2fþʘù+c毌™¿5[~ÃÓ!ŠŠŸ—.(~]TürþÅÓ›Eøç¥‹âß„DþEçïf±ÓO^j.½qõ¸ã*´¾Âéü×7ö. ‹ò/ü{½cÒyãçŸ3ùtÁ*¤óó/_§×ŸÎŸ“8üË÷/ü{1qøç¿8é âŸ×?çÝœÞðOo0w?7ýkïÄþ}÷Áë_87~qÒëÇ¿ :?ÿòëéàôúÓògӛĿ`¾äûNç_œôñÏ.Ž>>ŠKÿùñ%WO;.ÿøÓq_ÿz'öÏ?…þ…Ó¹ãO‹‚_Ãé¢ò7®áû¼÷ŽIç_´<‡ïËÖWþé ¦‹ÒÏqý Ú‡Þë_87~qÒO?‡}ÃÝN –:?ûÀ±Ç“øöÝ ·átÞøÅIo°}PHçõO?G:ta Í?½ÁtÜ׿މýóçK¡átÞøÅI¯ÿ‚è¢íµ0yñ£‹²OãúþÝ–8úÏ/~qÒÏ> ÖùvD°¾ò§‹²¯âú¬×òý §óÆ/NzãÙWÁò'cê?ºBù“1õŸŒ©ÿdLýç¿8é ’??:?} ³åœ‡ê+ºBý'³ú*‰Áz-ß¿p:oüâ¤7HÿùÑű‡‚â²ÿâÙ÷þñ ¦‹²ïãú矎BÿÂéÜñ‹gdžï“UH•¿áûiåèâ†îŸ7~Ñò¾——.Ø?Ç—¨tx邸çÐEñ/i¸QüË÷/NzÃù—OnoðÐtøÓ…ÙW<4½ùtqà ÷Ï¿8鶯x ÿ 툠ï*ÑEÙWAß_ðÒÅ 7Ü?oüâ¤7ž}U~Ðâè¡pùËéµpyɧ‹ný.^ºhý‡árL¦ÿâð/i¸qô_þ…Ë_]t{+Ž ¯óÛƒqô_’pãè¿ðú×K¯}Å¿èzП.ˆÑõe>]Üp£ø]ÿzéÂù]ÿ®­ö_\»$Ü¿â±×ÂÛ3ÎþáÓµgœ_ýãWH7Üpÿ¢ò·pET¸áù›KGx~ÒÅ 7*½ñììܼ‡ðöt!¿]¸qäÀKÆ¿8ò—4Ü8ü‹#9ºhþÅ‘?ÇÕ("~^º(ýî_Ž®oÌpãÒ52÷èôÆÓbê¿8üsÓEé¿8üCº¾1ÃK‡š.žþ‹âŸãKÿ¼tQú/Š]ß˜áÆ¥‹â_Ž.žþ‹Ã¿8ò祋ÒqøG®’ÒÅá_ù˧û'鿸rî_ñ”·š}žÞðñ²`º ô†—ÒÅ 7*½IÇßÂ×#†Ñ¹×#Ž›ú¯÷+7õ·p¼6>_¸~ñ ÷/<~|‰Kç·~ڟΛƒat~þåÛíÁùëOW˜¿n{<,óé‚ù??º`>' 7Nþ& 7Nþzé‚ò×.X^_¢Ê¯—.¨ü:tQå7,\w¹LJU~ãùž?¾Ä¥‹*¿9ºðò›O' 7J?' 7J?ûÑùåoŸqêß`ºÂüSÿÒó9Ný[HÌç$áÆÉß$áÆÉß8õoöÏyÃo½ß¾GatÜ×?ÿzËyÖÛ‡Î/ÜÞ1ãçGç®_üÂý O‡_âÒùíåO—Ëßh:?ÿ¸O¸~ñó§+Ì_3óé‚ù??º`>' 7Nþ& 7Nþzé‚ò×.§8ó_7á·fœöo>]ø~ qÚ¿ùtáñ‹Óþ Š_¸áéˆÓþ ç_œüÈ×Ïát~þ…×oQt…ù^oåø^æÓÅÉßðz0(~áþÅÉß$áÆÉßðú7œ.§¼tÎ3¿}RÃ踯þí çYo:¿p{‡„Eç®_üÂý O‡_âÒyõs0]¾~§óóOSFç¯?]aþj½¿ùtÁ|ŽŽ_Tû7,~áþÅÉß$áÆÉ_/]PþúÑyõón”~¦ã¾þEéçB:=/~qÚ¿Añ ÷/J?' 7J?ûÑùéç :¯¼8.þÅ¡ã¾þ…ïÇÕþ-¤ _Tû7,~áþ…§#ªýÍ¿8ùáW~ƒè‚ý ×ÏÁtAù®Ÿ é¢ò-)]TþÆó/J?' 7J?ûÑ…ço>ŸÌ'\¿øùÓæ/‹ä‹·ÿ œÏÑñó£ æs’pãäo’pã䯗.(ýèrúý.ÿÖäøo.ßrt¹| ‹_i< ñ€\~ø­cöÛ))÷õ¯Üw§$¿uÖaáöŽ??:¿pýâî_x:üø—Î??8¸ãäG0÷õ/*? éüù/~~tþ|InT~$ ×??NÎdqŽg‡Æ Ãð‚é0fqÂuÓ……›£ WÄ WÄ WÄ 7>;¶@8Ý~1ÃÝ/ë ÷ï„DþÕæøÅã_.?öNHçS7Ý1‰üó©›nϘþí™u…ûwt"ÿüâ—_~ƒùçOW¿|º`þùù?,ÉÁüó§ ‹ÒóÏÏ?¿ø‰˜üó§+ŒŸˆÉ??ÿ¢ãÌ?º¨øóÏÏ¿Ú\>‚5›nnLÿæf]áþ’È¿èøÓ¿ƒ³®pÿ'ò/<~økþ¹éÂâ‡tqø—ó/:~qøç¦‹Š_þåü«Íò^>œ_£âç¥ ŠŸC¿œañËÙ%áöA!üNȺÂíƒ]ÜpÃýóÆ/<½økœpÝtaéEº8éMnœôæü‹Îßðú£.*Ãë]ÜpÃýóÆ/:ã„릋Êß8éMnœôæüû'åo¸¾r~ ×K”^‡.*½IÃJoο°ôÎñÅ.ª}yX"ÿ¢úAìXñsÓ…÷ƒØ±â—ó/<~VÌøY1ãgÅŒŸ3~ØŽŠÇ?“2&ÿd¬ø‰˜ñ1ã'bÆOÄŒþ"&ÿDLþ‰XñÃßçÄðÏMU~&ò/:~9¾ÌNHç¯O˺Žé_8]οdñóï/±ÒëOç×_"b¥7ß¿pº8éõ‹_TýegÒEåo¸9ºp;vFbº°þ0·Þ ë¯ó£óË_GßGû—£ ë×s‡—.8½VÌôúӦ׊™^+fz­˜éõ‹_Pgyö§óïïŒ#Ïùtáý¶qäÙ/~Aý“qÒëOçß?'½"fzEÌôúÅ/\?G•7?º0ýí_¼ò+b–ßÂøEëçðþµBº(ýî_Ž.¼nFbºðþº_â¤7º?ñ°:ÿrtqÒ‘„.8½ùõtpüüé¢ìpÿâäo~¸qéâ¤7þáƒ/Át…ߟ‘1øâ矿ܢùDçÍ73ß ýó—{gߨpÿ‚é¼ùæì“åŸþu³Õ¦‹Úg;¾aú ¶Ä/¨¼­éø9¼Š 7˜Î_¯N¸aõLm‰_a¾éòoAtþå-®\ù•_?{-ŒÎm¯–ó¨uïÉÃgçDíÞþ£ JoXûÃ.n¸QéõkÏ„ÙMùvg4{ߊ¨ü £‹nø¾LAvv°]®_þú¥Ã/?Âè↕ްöêÚ_~µÆüçȳ“^<â¤7šŽ»ü‹No0]Üpýü‹J/‹™¿qè¸Ë¿hyŽ—¿aáúù^ý¬øËop;ÀË¿8rêÐÅÉ·8r®_¹Ô.(¬,l2ÔÉ¢nõ<¨ïÁ:yhàƒ†>X7\h\€&hêÂzyX?Í š´0hY€VØ ­°a6 ÀÆhS€¶hW€öyØÄƒMó°™›{°…[zÐ!‹ŽYtr¡³ [yÐŃ2º <¨Œ@·t@l€žè€m°m¶ó wú oúù ¿¶÷Á ta ƒ]R€\Z€a. wa„ #]e0Ú`Œ c Æy°£ã=˜àÁD&¹0Ùƒ)ìäÁÎìâÁ®Lõ`šÓ]˜áÂLvó`wöð`Oöò`–{{° ûº0Û…9.ìçÁþàÁÌõà æyp°‡¸ð/uá0À82GàèÌÀ‚€cp\ŽÀœ€pRNÀ)>8Õ‹|°Ø§N'œAXB8Óà,ƒ³ Î18×à<ƒó .0¸Ðà"ƒ‹ .1¸Ôà2ƒË ®páJ®ra© W»p ÿ6¸Öà:ƒë n0¸Ñà&ƒ›]XæÂ-.üÇ…[]¸Í…Û]¸Ã…;]¸Ë…»]¸Ç…{]¸Ï…û]XîÂ>xÐùàaÕÇ’Ö_H:û$Ò¸§’î<4äÒ‰g“<ôÝ…¤Ý.!]v9i­«H/]CÚç:Ò57’fYFºãVÒwPù¿›Jø}T† Rù0•¶Ç¨Œ=I¥ê*EÏQ©y‘ÊÈËT&^£2°’dþ-’íwIz? ùü˜}Â>eŸ±Uìsöû’}žfß°oÙwì{öû‘ýÄ~f¿°_Ùoìwöû“ýÅþ††:ç‚K®¸Åmžáux]^×çëð¼!_—7âyÞ”¯Ç×çÍxsÞ‚·ä­ø¼5ßoÄ7æmx[ÞŽ·ç›ðMùf|s¾ß’wày'Þ™oÅ»ð2Þ•—ó ^É»ñî¼ßš÷ä½ø6|[¾ïÍûð¾¼ïÏ·çø@>ˆæCø|(Ƈó|$ÅGó1|,Çwäãù>‘Oâ“ù¾ß™ïÂwåSù4>Ïà3ùn|w¾ß“ïÅgñ½ù>|_>›Ïáûñýùü@>—Äçñƒù!ü_üP~?œÁäGñ£ù|¾€ÃåÇñãùB~?‘ŸÄOæ§ðSù"¾˜ŸÆOçgð%üL~?›ŸÃÏåçñóùüB~¿˜_Â/å—ñËùüJ~_ʯæ×ðókùuüz~¿‘ßÄoæËø-ü?üV~¿ßÁïäwñ»ù=ü^~¿Ÿ/çðùCüaþ”?ÆçOð'ùSüiþ –¯àÏñçù üEþÿ/™¿Â_å¯ñ×ù|%“ÿ¿Åßæïðwù{ü}þÿÄ?æŸðOùg|ÿœÁ¿ä_ñ¯ù7ü[þÿžÿÀä?ñŸù/üWþÿÿÁÿäñ¿¡ðs!„JXÂQGÔõD}±Žh ŠuE#ÑX4MÅzb}ÑL4-DKÑJl Z‹ ÅFbcÑF´íD{±‰ØTl&6[ˆ-EÑQtÅV¢‹(]E¹(阒Ž)阒ŽISÇTˆJÑMt=ÄÖ¢§èUÒ9%ªsJòW>pž[àÊzÀƒ!­ m=!þC †;CfAH‡ƒ'Â{g‚,]R³ äá1Èã· ß¾ƒÉ×›>ßtv7ÐËýA»èÕ}@g úïJÐa€>ztËÏ\‚FØJy±½!&Šébq€8D)ŠSÅÙâBq¹¸FÜ(n·‹{Åâ ñ¼xM¼#>Ÿ‹ïÅïBÊú²©Ü@¶—eWÙCö‘ƒå(9QN•{Êýä!òHy¬/_‘oÊ÷ä'ò{ù·¬¯š«öª‹ÚF VãÔTµ:D«NSªkÔ-ê^õ˜z^½¤^Q¯«7Õ;êõ‰ú\}­¾W?«ßÕßJZ«¾µ®ÕÔjnmhµ·¶´ºXݬm¬>ÖöÖ`k˜5ÊgM´v±fZ³¬ý¬yÖáÖëk‘u¦u¾u©µÔºÞºÅºÓzÈzÆzÅzÇzßúÈúÄZe}a}cý`ýbýaýmIÛ¶ëÙ í&v3»¥½¡ÝÖÞÄÞÂîdw±+ìv/»¯=Ènµ'Ù»Ú»Ù{ÛûÙÙz¶³#ýÎ]ºƒ(‚¨xv¼OÅøßûk¼g…qò£õ‹§÷W¿ÿ‚îQq Meu=¯ exNÅÉÇøÿû»üÝÉà âDØó0^¯‰ß«;¾Õé_ÕÒïyu>‹ãö“² _Ubw˜f­®2–Îê,«ÿ„x­ñ]rWzžÆóª> ºÛ%ißWGýÜ5~MºÓ‘|W4'Ãþ‹÷Îê?]\鄉A²Ö½33[÷xêj¹Ö}Ç­û¡¦u<´‹½­û“¡=ÖÌÌÉoÝãü ݺ×3 p^@~ëþ”X­{û÷oÝb3Ønl0ÛfsØh·ó9+œƒ™?37ß²… zÞeàpn¾¤öQ»Ö^7®ë9ø\_ñÿ–ԷҞΎ.àÿ˜+Cn -ÎÃÃ;Î+Ôy³%ä×f;]€ÑWü¿äÎ)”æ2›®k•{Ýi&U÷ì}pœß{@ÎâÙry[ÈíÞ4 ªwöž¡°Ý×Ü/Âý@€Tl y=ddÍdÂÞäjáÕù}ÈÍ0Ÿ ðWš«3÷)C<Ô×Ü|±ItŽÙ–!î;×2ºj8³¼2ÀI Ò7 doW‰èÌ@¾H #ãsÕ¿ÎÌΩš“=ç˜yUèò›“‚Xb0ËÌ™š rìœx­O©tfØ´ ÿêS*[Ðõ@3Ï©1ý¢¯8Ÿ çỉªqöÃÍ$-‰ÞkNZ˜yAûC)Â9QÍ)•N¨ ‰J_õ/'šù9{B Ĺ\8ç -¡7ôuÅH_q Ε9Í̼Áù88Wh±ëÄ«4e y$³1p Ù™fnÎ^fŽÖ"ˆMýˆ«Ãósͼ=»l>¤§9¥*ìê„{!»„æô\F3O.£;ž—²ÛhŽÍ:\£=ï˜=ñÚÏà*öov »š]Ks-°Oùi:±œ¯Ç5Ü:`»•æÜÜNó@n§;ž¨g6ànÎÜÍîg÷±{¡¼¡D<À¾¢óAö:û= þáÓ ¾ dz#¥H_cO±'ÙPP ža¿Ð‰Z¦Œž8zçEö {™ý—½ŠƒüU G16eäj—•¸2r½ÅÞcï²w >èËìg:u ñ ºÚ‘®(£ëgì ö9@û«¯_2Ée¿’üh_˲¡|Ç~b?²L¼õcZwGgþÅ8MÉwû‹±F?uœõu×Èðz¼.àrö5ͪÏ[ñ¦€~Äm}]‡“Ƨë0>†O4äMxcÞˆßÄþ`Ÿ°çI#‘{ëqŒ•¾âóf¼%o¸ƒYçñ`|‘Ïúºù¬¯øÿ†¼-^ÁÞ`³X;^ÎñìÇQRôµ=ÇYï qÀ×á|2ÇsS¾%ÞÉfϱYÞ‹ã‰ìhÊÞÇò)Ïμ+*>Äÿ}yל8ƒ©Ð× e ¥#ýÚ÷¤‘Ç•ìö;[vôF™ë^FO·ã}y@Þš¯Ø„oË+y'ºw—ަhÏ•ýŽ$!èK>`]º)ù¸©+4§–ÃÜ̇òW2›Ê>ît îtÁ™ø.÷:¼9å$^Qëë>šÜž¥¹[Þôl@oè+ÆqŸÈ'ðñüQö?v3ûøÔø„a8\^7')ÐZE§h'¾+a*ß…0ŸÊçšsš9ñ¿¹tŸ˜kžè_†‰abªÁ0¡ÿfþ›*†¸÷÷`&߃°'ß0j¯u äA=üz°ÈÇ>4ZŒãÅsølÀü&~¿Ntã‰ÿáÿø_ ¯…7^Œ³ Ð=BhÁü®K²×Chǡ㇂Òr4ß‹_ Ø‹Mwwf¯~×%Ùë±Ù1íhŒ»;Ô ­ÁfZù¾ˆÌÿâ7þŽx/çñ§áº®ñÁ w™¾výžúÚMt§ò<ŠÊó`*áúzfvŒü\3 ¦å`H‹€Ø·ýŒW÷s”Ð YIh¿èëDªËõuÈ|™¹^™c¿†ÆÜ{?}ÈŸyCñ¿ð¸nä€eØê˜Q ã¸x× ÞdŸ ‹N_g¸®·fÇê櫓ûP·µº×àz?_G¼Ê/¼ ®ûóÒ8Ê\Yöºòa¡±Á3F_àýíÇñþÇùc€ë(®OS\õU?y†Ï7›Šïù3tw,Þõ w:ú\Ëøyš5€ó^â/&Rü'RüÝî‘`™aÜ¢rƒ]_[ßu|õݱjßÌÎ9x‡æ |È7 D :ÑýXÕí¡fï q¿–rú}ºnÃñyÇçõ ¾Ÿ:F_[˜gŸÓ¬œ·ðÿðqág∾ê'=(Þ}(ÞO&RÎ^S­¥¯?ÓìœÿðÿЛÊÃd*n÷ßü5¾‰ØD¼Æÿ¦ûªMõµ7Éþd’}·{Õ¾ú*³s)24·bX-(?¿xxþ*ı” ¼Î {__3ÆBF»"c´:Þ›Šf„æb}ÂDòw"ùû ùõŒëªŸ46ï66m ç eƒìŽiNGoà/¦çgàÁûôöµtí òˆÏŸ†ç!§2”©¾Àk®=¥­¥ŽÙ¹]h.Èi| ño,.㛋Ï8íø °4Êùt°6fP†ùÔÑHB òE‡5¸À–\?!è«~2œü˜L~ôÛŠíDoÑGlCsLná-ųüuþßR¬+>«i{-†4ôæf§3PF±üÌ0­Ž ÅÁ©§Ð»céÝíÅ`1°ƒ$¦ó|`çât~:*v•€ÅPºï/°4^‡ lÝN(¹úªŸ!ŽgŽGÐ}„#ÆƉÑb`ÿ‘_ ˜Åßà7z@«ËÁñ K LAáu<ù<‹BÑWýd0´x°\\׉b'±3`1ELÄ?ágð9Þ×®b/Ѱ—Ø•î˜KK@Ò1-ŽVsxÖ‘ä6uÑ:æ÷úô¿û÷ãÅñâLqŠÀû)àš.v{ö»‰™€ù¼‘xˆ_Îñ~9tì©Tf0:ìA|å—;lmcé°70¿»ÃÖ¿Ï tÏ tï#æö³ ÃÅѰ·˜&º†ƒ{ýßž §_'Ðÿø$côíþ`Cd²2åœúÿ°ß批„1ÐÂl-üÀ‚ rgŒ.^bZû-²µJð/‡ˆÃ‡‹C 3øO„½qÃÄ ’Çé$ÓIñIÒçƒÄ/ñ¹)ˆcÇŠùâhÀÁü9ÞD4Çð•| 9å™Së”Á¨ßÇSè³(&úªŸ,!>·ÈÞŠ“'‹ sD«ì½9éGvÈNUoaôæÉ©âtq`‰8M,,áWðÿðâ ¾„îÝ ¨÷¦“Þ›NzŸ=×a;e®qA™C=;˜ì´yz6cZÚg‹sE=v¾8_Ôgx:×eb”w<ëyâ*Ñ„](.Ø¥âRјáé\Ý=–—‹+ÁÏ¥b)ø´”|Ó×ì6hA.j³²KÄuâq-øy½¸|ºž|»¾ÀÏÅ͢ĭ9ù†× ÄÕ¢)¥aøéô IðYÇ÷q+¼q©hNþáµ»LÜ œ~Îæ¼]Ü ±½[Ü q¼›â©¯ËÅrðg9ù¥¯w‰»€÷ŠûÁß»)úz¸ÇÄßÉÅÿC< ÝØÃâQÁ6~E¼Úø1ÒȯvÖWýäCñ!èp犹Wx}T<+ú˜ëâ)ðÿiñ ø¿B¬ŸÞoO+È··Èg}ÕO–ƒ˜x]EµEáõ.уr§èÞçÅ‹b8{IüW … atìùÀ7GßbŠg¼Ì02¿,Ëüõeñ?1É\_o€Ÿ+Å›Y?—fý\šçç*±JÌ0Wôç¶Ÿ‰]©ü]Jñmlâ{ès”´@k£ËEÆÔV²àt;×ÏÅ—â+ñµØÂê±oů€oÅ~ÔêûVà¬Â_Åv¨¹ê'eRãj÷•ÉEPË^¿$žÇSëò{ñ£øIü,æQ8º§T—ùEt9}»ºwT—¦%ðºéþE´xOíïâOñ—ø[ìËŽc—u\þ‹Zr\Îfû³ºò`v´¹ê'-¨—D_ë_››ÿrW)-iËŒ<’|ÖýÀZã,4ºÇéWnžu9׿Ùk}Ù@6”ëJÍÛÆ²% ±Ô¼m,‘“-%rU_õ“îRãâmwàä>W&ÛHÇhAäím.ÞÖ‘[H¶ËJ=µ²~N”Säd¹ĵø¹‹Ü]âù&ÅuŠßî?·{™©õq÷]Û,Så 9]΄8¢Ø¿}¾x“éÞì?ÑRþöeÂéõn—å'þ¦ýÚSî-gÉ}@Яr¼ÄóM’Ù”ïó(ßÝni¹M`þŸHy¾˜òÜíÆñšKæý~ò@y€œ yïÄu©+®K]qu,)ì!»ÍOŸ¸D`ž"“‡ÊÃå¼oR¹ G©Ü– ù[É1¯;ñ;Xo9GN{Èõù§P2Ûƒ\ž(qt}Ä®µ±´;`9Y],q\w ĸ½ù¥ åìSrŒÄQ‡~”¿GÊùòh¹@Ž¢°w¡v§PçQ fSlv•#åÁr„ý„-mŠ> çîk—lז݈ױr¡<^ž)ÀqÆÀ:|S¨ ôØ#Êö°_&0= Ee¬5••ߎð?öáw[ÂIòTyŠ\qÖ¾n¾^o|Åß±ßý‘‹©Ó÷®ÏÓäy†<ê, ·ËÇ$žPs6Õ(K©vÑWýäe¹Râ9‰có.Õօ׳äEϦëïsåò|y!„ƒr¿\!ñ|“¹˜|½‘BÐWý5æra|LµVáG‡ïX‡]*¯—Ë+¡sJôÝÙݘlc·öYžÕÉJvJóUò‰gSŽöÁ5ò:y­¼üt¤úî¬Tçü,36³–êœøG’ïXÞ,ÿ#o•·@ Ä:öl¹p6ÔåXo§R÷•:·û]©qõÓ½L%o%•<·û6y›¼p<Ã’x§¼GÞ+ï-„á\,o\ á ºŸ4Ï ÒR°{@>,‘A G…ÜÙÏ´8±M²¼ÈÙ_ËP–å^•ÊgÇ3,éOȧå3ò)ÐpQ~~,5Î1£zKX»<sñ|^¾$ÿ+_„2†uëÙT—/¥ºÜí¾CÞ!ŸœÀ´öxtÇËP{£îƵ¿Z{¬ݱRbùm§þ¥ Åè]¹\^_‘¯Ë7äkP1ü‹)Ì)L·{¹\.œÀ°\.1mµ%$IeÙzÜiéúܹ¿)ß–oÉwÀrAu;i¤ÇH;­ Mu?i­sä%òjyè(m¹¼ Ük2Ž~ÔÏöTÈ_œR¾tÆî=ù¡ü@~V‹Ö3 Ù¦G³y„³îŽ­‚ùîX%Òç‰Î=}ýD~.¿”«ä®|´¿–_ÈÏäWr>Z†ßʶª­úV.ãØ÷XWõÔU§sìƒüVâªÊ¶êT¾‚÷„+uÕ\¾€ë«~¢Õ”ËÔ=€eê,êëD>Ñÿ-SÃÄâ5U'ÜîÂ'Úý­þ;«Jq*ïÃÐ…OôßËŸå¯ò'¹? éù]þ"”¿ÉÙ|¤çOÙYuVÊK9öo®¯ÖW7sìçüSÈçñÎê&þ#¨îãoðõÕQ|–¹ê'úWMù¡(“Ë„¾.1½£‹àþ1X›ÃóT®gÐx–g¬‡¢~Z\W‰GÅ7âÑÿÕWëªÆª¡Úƒïéiª©ª‰ÚÏ„ô̧ô4˜ž‡ ,ÝÁ.ç+¤Å1=CzfdÓSæJÏžÙô”™ô ——˜ëÇpÄõuAy0ƒÚ ç˜7tz‚~ùåËË&_tïrsµÚPµROR¹ÙXµV-ÕFê1*7\,à‰Óyw¶$ÿ±Œëþû§©Ï¦½ÅÞÑë¨ÿ¦5Óã¤Ø«ÿ¡8 rûõµ û„×ãØƒãŒ>i£æ«NêT(›Š> ]øDÿ×^m®¶T›©o¨ÈÆgN|úv¹Ð×s¨·Çá—Ùñ’Â'ÏBëåûàãQF¾»¨ ÕM•«?H¾{¨JÕUuW¿’|—ÊCAÊÏ–{‚|oGò=äû2ÖlÓÛAòZÓþCZò6BÆ&ƒ½úüÒêð¯Í/›‘|¿Kòý.É÷$ßh}¶ç½¡õ2ù…ö«~C×?“Ù1 ƒÑ/´_õ/Xÿl­ÎSÔU Ñ›ˆI ]øDÿ·ê£ú©Þêe’ïíU_µê¯^$ùn$n„ôÌçCz‚¶Ê÷î ß·³‰`ïÞ’׎öÒ’‡ó_ƒ_v[ ± ~Éý2ÃX 3L ö5¦>}Ô'h ;ýúe$Á-H‚5çµVÃÔ5TíJ’1J W;¨‘j’Œ]Ô"À.êRÒüóÔRÀ<Д¨ùÇ(Ôç H·ŸOz~é|}ÕOô¯šò]¹?´dôµ»Ä^~}}tù™â9Ðë§·»ð‰vßõÈ¥ì>9—߯˜<,[}§&ªÉj‚ÚŸJâNj’¯¦¨ÙTǨ€1jiüYê|À,¨ÁPãï¢P/"¾”ôû<ÒõúªŸè_5å¤#­x–è–¡¾¢VWbšV‰T“¦Ñ]Ôê·­öûPq–¬ÏwÉV¼R´û¬R0¸NU3Õîjh~”¤=ÕnjºÚ4?J’[;6-IªƒTiMÙXiÊ–²PS®‚TÜ&ôu‰õBÝþ1Äû.ÑBukÉ _•Gó/Ù³r/.9“SþàuµŸ:@Í%|®Ú_ÍV‚ÆÇ>á-©´;é8ÒTƒµ”…5Ø£ê9À£êxq0ètáýêṽÁ4ƒó‚¼Z,è—])_ö¢|éKùÒ—òåu¸:RšËÍÑêu¨: 4¿£QWd5ê[Yú4õ¦»5êuÔ³îhÔÁÆjlzøPw®Ç±ÿº£™ÑRøäQù ñû{àw¹)”k}=V NR Aãcy8E¨ŽW'ƒÆÇò€ãÐoQ}„#Ñ+¨ŽÂšéçlüœšéƒlütÍt"Éþb’ýIöñŠuÑDêÿwfÄ>*®"ù¾ä{ ’ï:p=M©ÎVK@ó£|Ÿ«ÎRg¨s@ókM¹”dúlÒ”#HÖǃ¬£æŸ šFVó—¹4ÿ<Ðü3²š¿ÌhþUÛúzjµ`¨õO­?#«õË\Z1hýY­_f´þmòoÒ?¯þ©#7!~ãõBu©º\]åûJu™ºX]_×`7’L_L5Øl’õy ë¨ñG€ÆœÕø]퉕ÒíF‹ï]‰mŒãÖŠ8æš÷xû nQ·«;ÕmêâÃÝêu«ºKM|øSbê:SJϧTÏ"¬OÜHœY@\£cÉ]U;u €áú g¾ÎÈ­êÈÐÈ ž®Oì‹“”ßÍMÿ„î‘Ș±ÉžWœ½¨$œˆç ’žHú×V½¤p¥ÐkJã%þ¯i^"šW€æep½¬¯$=A¼B4¯“?¯+ý¯•ô^ßTн¥lö¶Ê˜ómй|S½E±ÂÕIœiŠŒëþ&ÜÜß‚»ÍÞº÷®czÇ<žgØû†^ßñŠçê#µNg«•}Y¥VAèîë'ê3ˆsÅØ ??Vº×Åínî®yâ Gê?w3pã»:ôQ‡ƒ!¾hÜçÕzD‹þ­rù½Êå÷'.¿?3~®¾4~ÿ¤~2þý¦~ƒ¼r_¿VßB¾9WÌCôû'W8?¹ÂùÜΗ&|W‡ƒ>êp0Ä׌ãñ’+ ¿¹üþÍå÷×.¿¿5~¯~4~¥¾2þ}§¾Yr_V¿‚\9W”1ôû+W8_¹ÂùÞÎ&|W‡ƒ>êp0Ä—ãñŠ+ ß¹üþÎå÷Ï.¿5~ÿ®þ4~#Åï.Š? úò—ËGÇý—úË„ÿ·âֿ䇰êYz…m5´^Tî«´,ëùìåÇQ„¥ÇOp䤞¥GL6÷ß ú¹¸9<ß˼«ÃAu8â‹J»1ϫ͉ý¶]~7tù-­œß–ñ;cÕµ:‘ß9ÍRßjþ9W­eÊŒžÙëxßAw]pon¤öú#É÷çU'¢È÷£¾ËÆu­Æ&Ûu]±mlb‹©kâJ]3“º&V3צÖú&èsSW(ë›P09}ÖÜÚÀêGëÄ[Y--\ùg³ÖV;kÙ#í¬ÖƵ…µ…%¬­õ,Ô ƒhÕßt¦uBÒV~{kSëoµ™µ9v¨GúÑúÒí™ÖŠÖB¢nD§µ¥m´„ÚYÚr»Ý4[ƒ»9¸1®SÀ½¸‚{4¸[{øŠsWZ‚Ó°¡ÕÖÚ™ÒÕÆÚØÂƒ6Ó«ß&M¶Šô¶s]Eº 5ø–VG+cu²:CÎaüw¦•®»fãy©u»®ÙÐ7§VkA9ì¬:”P΀xdÆc'p·÷4pãó6àž >áóÁñk\Óy±pq{JÓÀq[AL'^`þ|¬ôKÄ ³ S—‡æÌ‰As«•õj 9ü•¿~À\ݩˊ¢µ®N^láÊ‹­\y±•+/¶påE{W^lîÊ‹Í\y±©É‹-›:/:ww¥t;yœÿØÔ¡:6´Ú@¬7†üûˆÊàÎÀ\ó©ËQ.Ö¹Xš[ºr ³+:¹r £É.V…Ér««ÉLmWj+\©-w¥¶«I-rªÒÅÍ^.nörqÓ¡©´z™îeUšîfõ4ÛÚêa8†qîæJKOWZ¶v¥¥‡I‹ÃŸ÷Õ_yüYéâ¾#ÅJµµ…«¦{[c-\å†wÌtK†¿¢&D þô¶pžb 6î¸ne«>«÷íà^õ±úY¸ÂZ[ ¯ø kr|®m4½êºÕ˜5„{?¸7bÛ[éMm¡}&é֟Λ/›7·7o¤7[;PüGZý)þxÇ÷uüñWôÉÿHÿþ&þƒMüw ø³F_øîPkõšñE»ñWL‰ã×Pã× ã×0ã×òk”5†R¤u¿®ðrÓIÑ‹&E£LŠÆPŠÆYã-\s>Áš`áúr¼;Àßœ³#üÒ~wî­áÍÖ¬%´îÇ[íáý‰ÖN®'ŸbM¶pMùÎÖ ×ˆ»ï,}@O0,}Ÿ¦€VWx»%øŠ{ l2¼³5˜õÀV*ÜûüßÞîκ²Ql'k¼1 b0ŠUÂóÉð¼‚íbM·pú4kª…kÕßV@â6$-0ÁB0ÁÒn¼îTã¬iðƤ'ÐcLp7ƒ ¨ˆok9ï˜ÕÒšq\㾋՛õd“Ùtk2¼1œ̶…çSáù6l¦µ§µ‡µ»u"}ÁéƒÞËÚËZ8•æÛOýÉøäc¥¯XkœjF†u-Øœä…Vœƒ_(ôó#²ÄOq ¶®EêCÙÁYt{Ô`n7¶âZ-(L·{Oh[Ï©Âx î=Á}2¸qÎÞàÆx£{wãžeͶöµö±З£Ž£mÍE§-b´¶rYÞúù,xçs…ï~IVøxלk‹¹!ſوÍÉ=Nî¼-¡Ý¸ühÌ0Ü£Á=ÜÇ‚ççí nŒº÷1îý¬¹ÖÖyñüЬhwl¿rY×úÉ~ðÎ÷ ßý‘,m'ž¯øÄßÖñ|9/žû¹â9×Ï]ñ<À¸çY‡Zÿ²É““ùÖ|kÀ-'øä+¥¯_GN^öÈÉ<ðë{…~êø;ròŠœÌwÉÉ|—œÌqÉÉ—œÌsÉÉ¡.9ù—KN1îí£­£¬#óÒu˜u˜uÀ.|ò“ÒW”']¯yÒu8øõ¹B?µü8ézÉ']‡¹Òu˜+]¹Òu+]‡»Òu´+]G¹Òu¤q/°Ž·Ž³ŽÍ“«µ—“«]­gýd¼óÂwuùuäêy¹ú˜ì”«óäjK®ŽwÉÕq.¹:Ö¸O°N±N²N¶2œ¾ G³Oµ–XçY—X8p†ëÚ›À³KÀ Ççõ,´üêÓz÷V\[~ˆÿh…Ÿ~ý­ÐOhCå—¡eërmùÕ!+ù?Œ÷ã§Z8sq6ÜKÀ¡á|µóÀa¢û㾜­ÃOÞb<¿÷)XÃg{žnŒ7ºO6îEÖÖiÖéV3JW šièo_,ª Q×µÐêkF;l·àÚê«Cv·®mqÇöĵõqÛ€/‚1‹oÀÏwKpãÜÈÓÀ¡¢ûtã>Ó:×:Û:ÇjÈQ*pgïF-Ëó­‹€[1V y#Ú;@Ǫ!ñ±‘i—•åµ;˲-Ï›ØzüL¬×!´?À}.¸›€ûpŸ n ýypŸƒu>¸Ï·0¼‹LìpŸ‚Fíë†û/ª.Ú™’ ¥¨.åuCÚ©¼‘Éë†Ä¹\E^ë¹âx¾+Ž›8b¼.4ñÂø^dâ{©u¥u…u¹µ!Ç/⎰«¬ë,k{ßJÄU­ÝØÖÝÖ=Ö½®o­d¸Âµ‚=h=m½m½láÚÖ WµöaO[“·-\çê<{þ¿ h_†p»1—†šU±:gÚq´³‘£˜‡zÅìP¡s«œ~CÎß ñ¸Ôzbx9Äê~ÈÁå·+©¼l1 §ÎÑ® ¯h¥£œì@+t Ëm9Úí˜3GˆýŃ`£cŒ÷ÓàÆá8ÒÛàÆ4 ûeãvÓ¸ßuӸ߷‰;ÁÆG~®÷rp7β»ÚÈ_tßgÜ Àý¸wNs1UÜ nä:ÎûÞEÞ£û^ã~ÈzÒzÂzÜAù…«‚»±§¬G¬G­Ç,\\Ép…ps¯ ÞìùÞÐÆYõ¶nV©>´Ò†To¯Cma¬‰ÐºÇ¶ö M€7>VXO=>/µž‚0¯pžÉ|B»–Êþk œZR»2¼b Ä£5Ë£…–Þ®”(}8ú„»m`¬ZÐ8Ÿž×Òb†+|±†Ãs¤Á8»iÆZ}h~ Ö}óøxñp9ñ#¸Ÿ÷pãü¿'€‹Èt?nܳÀý¸ÇÞ÷#àF~á ÁGá]äº3îg¬—¬­¬Ž¿®‰ëØ·cÿµVXÏYÏ[¸¢}[†kÚ·a­Azm«ÈwC’kìÑhN}Q€ÃXÇ\E=ˆ×Q"Êþ*¥©6¤¶Z¢FºW¬7@Öß²V‚¬¿f½ ²þ?ëuuätGÑY”AxšÓ=IÖ·1œ® Uö] §Ûrl¢¬†¼kmá¬öe–î«Ä>3½[ž?ÔŽwà¶¥{F=¢Gç&ÓÛíèí;¬.ô6ö¶¹ß.ç½xCÏÛ˜–Óx7ñ ´0‘{[ˆnâ%p—»±è'^„(róÞO¼î®à¾ Üÿwðus Ynä1ƒwŸƒw‘ÓŸŸÏƒ»3¸_Þ¼ œÒ¹S.з€k¯uîl%ÎÍ{ä9æPsŠkÓo‹Úûž&X]L.¦õÒO°:Pîäžbï#–ìœ@6É3 K­ÿ‚¬\òñ"”—@J®%Õò¬ b¢uTO*!ÛU!0Þ]ŒŽêJùÖ…j¤A´á* ù¿…¥í̧Œ™K€œÇ|–æ¹Ó¯…ù†{!àÛ×ÑÛ[YÚÞÁ|r¿ùXÏó¶“o¯¸òí&ß0¯Þ4y…y¸Òä!æÛ[®|{ÍäæÕë&¯0ß0yøŽ…{Òá#gZ¸a¥ÂÏ=Ø{î¤8‡}fÊægïÎóEì#ëv¦ë¾Êº€›½¿oážmÚ_ôñCëCK’ËYÝ«Ãræµ/†˜ìÉf²Ø'ÖÑìðìÝyŽã¯ïYïYŸZ@ëKs¥ÂoSãWGñ+Òó’öL”4§iñ@‰ô{½Cç¼'áQþÈÂ=ât|ß³pŸ8¤ÅvÙ"p½®>²pŽ>ÆBÄ¢Ìâz´ŠgéV†ž£Ãäô~Ž.báN{—r{?âÕù_ûãÜWYè›~ã3k>;€x çcøM[²…¡ÇPu<Â×ñ¡Y äúÂÂ]¦p\X±¯,Üiê=UÁlö³…;@½¯pn„Û=máwNåÂþ„·Î}.ÿÞZÀ÷æÎÝû»óÞ0ñ‡u„8D8÷©BÚ§ˆ…®û_Öqâðì}˜°ì3ÅÉÙû7îJ¥ãû…;S½§†B|·°Þz_᜷÷sz_½¯Þ³°¾Ý“dË]N.\àŽOH÷™Õ~=”déròÖ”ä wzO½Cr’1rbC\Ür‚ùïЭ":-'[N~°p žŸ,Ü ã=…}úÈퟭ߭ ¹œUÑûSºœ™¿qh†‹/€ï;ñþâo«¥h*œûàä,>“ï-¾‚üšÊ» no)š ç>M|gÍã{rœÑòµõ5”°a|:n$+~ä+~“tä&~÷±/p§5»¸ƒ3Æp&Ì÷Ö÷@?†/àEcñÐã÷)÷©ø ìá)@ßžÙ¼)Í#;K/„-ì÷¬Iüþ,_WÌúÙs¬•h%¾a+ÙÈ¥vìÈ¥M è×Ïr¤Çýë÷™Ë§ÿÅÂ]>4³p§÷Ô®Ä_§øx‡åÀÙ¿c ÍzÐÿGSྠ˜ÇïX H¶ö7yŒ5“u¨Œ;‡ Ý'î‚óX4JÔál kH= n]Öœf  ~î Ï£if Ê(Ê#în‰ûTætžzí;j´LÏ‘ì ÷ÑøËÂ=H´„}má>$ï«)@÷½…{‘¼¯úê>àzGýöX†f…é¹"Xï"=.¥ ›JtÒt§ˆã Öp ÅéÇféÞSYH‡ò¡çœ Ýáb¾Àñ¬]ikÑY6†{¦8ÂÐa¸'‹ÓŽ7mO%ýg¨cPÊ—Y_-1;k âXjq^–Þ òo ÷lÒiç6îÛôžÚ‘r?7×÷oB?ÚÑ !]ê7%ÎáþNþ¿èÝœÞØ¢T¼N³ohÞŽ{œèð,÷9ÑÒ&lÜåä}5¨Ýn÷Ž%ÈË÷ ´Üî!tÍYFzåˆÓ¬ŒÙ‘X_¥ÑþšÞÑùœÙ”W:v˜½ã®µ„Øv÷<˜É¾§°?©Æáìkpÿ®ê‘íÆv­÷ÆþRzn”ÛýøVÔµ÷d߉½X#ù­hî&r¯Àç¸ÎêÀ½Pãê¯k· ]^uÝz2§wQó~+Êd3ûÖQžÉ~w pwö¸Ý4¸çÎ9)“ûAmz•®ú`«´ {å|ð5ð¹po–­ëÙëØ¸GÁLÖPæx±®Ìñb}{}w#ÀùöçdÓïv3ÙR¶±eõä|ÖÜ­ÁÝÜAÏqÇäEcÙXb-¥¿¶Þ‚öÀÕvò"WWamÕbÐÞ¾€¾;ÝÜmÁÝU滚 pw7¼è¼øÈºÀ¬ŒC^༳³ /ÎÌãEC»‘ÝQv‘§±­äÙY^t÷ïªñâ/µdc}»>¸ÐG=W§ðYs²špGÜ5 »ü‹Æ‡ë›ýs뛽Ï!{ ÷Áÿi¦HvÞw G6ÈÎç ¥­@Žê€%ö7ÑX®cïIß·oü«îú{¸×¦÷WqØ^‡’ÎmÊNßNôîC{œ7ÝÛô.ê^L/Æ %´®ùÔÚ^BÖgù@ÉÄ} þRŽ Šûç¬P]ðíºvs¶yw[À·;Èz¡oë}t‰h,?ËÚ²hŸ@rÐÔÈÁ|—-ÛÄ^Ïî*»AUÊó³9Tî\-„óC wˆÐö^á“æd3.d:W›}*«]¯m¬'·”ØGÓ÷íÛ»½<šµ—‡3!ëJ n îàÞØÐà®È.»~ª°ãŒ¼näÿL¸7¢:RšÚ˶kÀ-Á¯üZ0¿<ž/d׋K…Žwxˆræpõd3»…»eœ ’}F–o]Àíð óón/° K¸k†ã^ ºg¨ý®0ç›ÜI*EÎNœaÙùÝ´ Ð×Ó\ö!†qh.ôáOò¡hI”Žg0ÜÏãOã¾u†Ë´Cy×qÀrÕ6½'Æ¥#?9ÛSÇ¡¥Ôq@ÚgãàøpÃ}=òãà¶^Q6¶?´ÊH#–½XF%| ÓåØÙ×¾¥½;Î6“Çe¹¾9¸W(6¹¹~+•ÞÕóØ‘ËÆ$¯ÍMýüÛþ®Ù…G»fâž*(“©~t´Ü†öÆ6îms8³]±ÊDÄêÒXùÿ«K}bÕÖnoãž*çBÉÎIh7—„¢†B4Êàb†ºÃiçr/†Ò¤¥ì$SÎ×3ë°Íþ{¶]ˆ>J#u<,Xêwš‘$µ }Ùÿ̾£cª¥°m¢p8…³¥o8-BÂÑõ‰Î-Qº¤479¤5hî×MìÍlÜ b&;CÖåëZœæ6ž îÆ–ægG»»­×ƒ¿,'ñ&–^«‚»@4³ôꔳäÙrs(Wç€&¸Üåà¾ÜAÏqgˆfV ÷BÈÙ5îg­íAË·kn—ïÊN`³¼ úè1poî·Áô÷¢Ày›ïÊG\vMÞNm×à(\¾]³…ÝÁ~^¾5ÅKr‡,/þ n‡M¬ö¼£ÝÑn .\»ƒœhfuäÝGíÁ…«v#8&ˆ»×¿L+éWJL-î׎û¤w„v¾‹;žë.– |ËMÊ[ê÷~mü: ræ9ponÌ¥ ç¸¿¦w©üÔU—×…ôÖåº.Çôæ×å¸sesóa¹ÀºøyŽÔy±2[ß#t~8½Iú½Íír×{¸ï@á{Èï{k.¼NöV6îšp&{KöÉæç;àvòýDŸöbWËõA¶›’lãî ͬ¦”›ðÛ%Îí]×ÂXt²/§ÜÝœJö\àoÊ·$Î F¸ëĶã¹úÃÛ–?&qFpcòa+ûk†}™[º|x[¾#pT¸¯Ëœ]܉ßOqhlá^=í;([’Lc_wÎÙGr}ãæó@ž_ÿTò‡uɇ¶Å1›g}€¶’ü@65>l ¿ôwùЩ@ ,n=°\8š ‹ÝÕÆ_f²óe Þ¸Œï^îõ Çußr¡­ª9ìFéô¨:.Ü×åby±ËÊ/£= s½›9 p´XïïAp?¸{‚ûCpû=ÇVîƒ3±?–oº,üsA[øÈÿ| ¿Âîf¿"_­ðº•MÓàvÒ„i)£>]½£¢»_·Œ9e<×»»R×Êí¹À§ÇÁÝÕØæAÏqïŒõòWÙn±æÆNÇXç—m½F÷q÷—Á›š“Mîâ¤ô=ìž6î r.û@Èrå#p;\Ñý±úm¬»6…ZÿnépìgÝV_.0ö¸O¥n{ûb‘£úÄÕiÈÅ^öv6î²ÿR–þžÚ*pw±ºQ¿Ko{[û ùµœÊ?“EW«‚úD¾w9¸qfðD{wÙ_àN ½¬Á4Ó÷©7ÎõÝÅžh(ÜOÝÔßÈoe{:ÿNÎà£Õ·r¸ÇªüYW ´ðfjo¾³ª«Æ€û`pã.!8—¸­ê©„݇}ÂWp.³î¢¿À¦¾4w¿•è 2l'†ÿgX_Aa;aôTmM\¬àƒYÑz®¦ä…ÿgØ·r™ÚÛ>B\£mÕ25Ü×{ÜnÜgdߣ–qic_Õqb›)Á>ÚÓÅtúZÑB¸¤Þ-ì}© œœ´7«ÃEOpï î`¨ÞÚ÷ÀTô$°ÌÐúLJ3˜®µø–»ÄÕ5ƒìlÜub'>BÍÊÆPpw²1ÔbW£ÔT¾ƒ²QA²1Ü[ƒec}[÷©bû ¯¸G—–Á´kÞ9F6:ÙÀ]#þRc_[—²éQÁq*=6МFpTã¸ÃÄ_jà{ë6¶€#¶á¸c•hNã8.€À‘S9“ç«PÖÛØsLio)±.Å2^W²MCÓÚ‡¦ÑÌSÏ©ýìSÄcj¡X îiœ)ç~ ž»ip_ \ ñ¨º™ÿaaéÄuѤà8Â1ˆ¾vܧ6˜F:`õ¨škŸ)V¨“Å"pî§=n7 îÒÃÚÚ½°_5Í)Â\ŸÀžq\‘ëÇün²qׇ™üµs¶n˜î. °nm´÷WsAÌV“AÇ %Ýq ¸ËÁuÃL{–û7,p‡^Ö Òö¸»C%¸±˜eÏ4î§njÜÁ×’TZ¸—Äæv}®ç6`9ïHý–ç€åÛÄÒ£lØ:kÀs¶ ZV¸û®LéE>”Û­¸žßóá°\›¹|híò­±¾¢ Å¡—ÕZZ­íã™þ.œîEFÛY÷¸é<´OpéŽæäsùÐÆÇÝãìî²kpºX¸ÓÚϸ§Ÿ±~±äjû9Wö½ö3îÐ+z*È´Ÿ3´v-烶Ÿseßk?ã¾èC Ël[Ò ºÿígݤ}@ë×Û„ûƒ`**ȇö¤qÍVÎݤ}@ ÜÝ„:p¬=Þ¾F]§ö7ªÃ²ry=¸»XI.'Ø;Ú7©›Õ~âZu¨ÀUN(—7€»Ü¬xª´†‰‰ yÝÁ…åm­Mš*vy.,ÓMá—ŠpÏÜÑíŒùúÈ`6ŠF«p„Ç…pÿh|GyÑhèô_ýB¯zHßÓ l—OÀš[ vÌvàFËn+5O²gq,ÉcÁ=Üû€÷…@Û£­ú‰ÿm½Á[‚.›ÂvË`èóÈöh*¦°ál,ëFz§ØM½ÁnB{ðpo î/ÀÝKí¢FÚóøþ  ÷hp£^`+á:³žj‘âv_¶¥àâG°¡&‹ wú‚Ý„ë1›‹k DŽg GÖ‘h…õ±©6ÐRÂQà±ê;ù#oÏ» ,eÎXð²/´Ç6á'dG„›“î×>ô±‡­¸Ã…ö¡ƒÇ‡Mxe˜h-ޱ—‚+%Ž,ã®oð޼?ùàŒ/?'§0ü^Ø ÙQææ4ά}cÚVÍŒõ<>tâÛø€ûMàžg‰wå<à)ꎜ=*llqâK˜ÞmBïõ? jÎY|>ŸÇàëŠÏø³ûñûÄp°>–J.ÐVÌ:BI>[¶çø… üºÅgÖûª œÍ¬÷¬1ôÝÉȾE¹ÜšfНd±oÀÎý˜=¶î ìÆì—11ýèëi›pä&Ô„GDZGBúá÷?õøŽ•nþo iM_ÝkmÆÖé»™¾¿ú){,ê¾ìOjõ´æ xÓ¬nžO}ZÚWüæhn|b’½“}‹º 4Ã꘬er;¸»YÉ2ÙÙžbߥîÍp«:jÄí©¦»Ü[ƒÛYµ‰% ¿?e w€Çæwõª×_Õ7_MÓ3“õvÙ·s íå;Ùâ^ºµªg^åö´EŸœPpF†‚=ÛŠ÷Åpô4? Ý눡|hõãZ¹Pœ0t‹Y‡²+ØKƒ@ [­¸w°qfÆNüµ¾Ú´Ú÷ÉõU_p×7–ÈÕDä4Â`'(¦5Z"ùao°°†‚@ko¸‡€{8¸¯VÊþ ¨îàÆÖÂ*(¸âó|ÕÙ¥f°™b”Ѹ’9_#è}NÐþë¬r3C*ø`¢­~ûˆ,Àü™!z—´ªÜümøü9zë öYùóCp/ÈU¤i»“¥‡ãsXÚÖ‡4`ø2úÀ9´ÓË †»d_Àt™úJÛgPêÞW¸Ë¡.…3Ø6÷ëªàøåüÁ{Ö_ {°½ˆå ËÙÇP–n€Rå”›1PÚp^ÉCl%¢m¡ËÊ;¶fñ-ݫД®öPjþ„Òt3”ÖÔ×pµ¸@Œ¦’¶˜Z47ˆ õ8dÀི#ÞºbW{º}¯Z®©3²õêàîbM£zu†=Í~X=¢æ‰ûÕb¨Ww¥zõAp—ƒ[׫ÝÀ†ëh÷­€ýºzß–^V?°æºÛ“A[`Ï®³ËËtúÒö…éÚ®7}j6Œzt±7÷}¥Ww òÓ…føûçöꇲ¤KÛ[g˶rûJcoáØbGjk&/7öV²n2<7 í­+@Ò´½…>lfÛ\Û[ŽDZ%òJcoéÊz.ÐÞúÆÞÂx6´0öÖÑÆj¬Ë¥ü[ünf÷ ½µÀ5Ãí-l•h{ }ØØžoì­œœý%þ4> ½u¬Ë´·°Ÿê h5~éØ|ÚǩšÿœYCØÿy4Ã=sõž:¨ÿ×áw 9L;8ü¥pNŽŸêÑS´²×§/p:»-Èì(ê=BÏbÕ#©¹uÿØ·U'ì Çø`¼ ãt“¼ÚÄ û¨sqÂÑÿ8a£c4(0N]H^œ8ífïi?¦ž„òóŒ:)[û<înP~°öÙËÞÃ~V­€òó„:Qàªw¬}ž÷Ö®=œ„rµ{!Ýãëì!¤kç ]s õûʡDZw];8ãïóå¦ábÊ.ö]L÷! Tê>„s嵦AËu3—TbÂÃüqÓ‡€>tµ¿5}ŽÇÍõ¦AËuK—[‘Bê¾ÜmIË5ö¥h©ÄÞX·\c_ŠW®¡½-u_ ú åûRZäÉ5ö¥xåÚé§Å÷Ûfûjq|oOõßeh&À -8î?ƒ¡¤ìEcþ‡‘æ¼GhÝYßÌÏjÁtÿns#{Û³mÜ¥íh©ÌÉjÔëÀí´TæØûÚ7(쥻VÍζTn·ÓRA+m×`Ç÷­7…ôîÔV nl9 •Š–åÞ`…w‡§}é)îÞÖËêKÔÃÅ·Ôöìb¡e¼7XØnèGm ´.»¬&ÜgÝ¡¬î#œ™wZó÷m¶ +ȇÙö jAÌúp¸^Ý©*Œh%Ìqù€³ò&ˆyäC wuÛ,ô¡ÍãCm¬ØcP÷t³ôŒ>äÎ"7«ogŠÃR…©¨ ´ß T Ìú0G(öêi|À¶ËAÂ=/lQW¡6íe¡u>,Ô¦Ó©7S1WܬîRå–Ãéd‡ì'r}"˜ÝEOŠCWòa_›‹ õŸæ|¸AݪpŸ Ûø0Ûåæí4± Å¡ÒÂ=îæ‚U„¿ ¢^YLÅl±B=¬¶¦8 ¢ÖÑ<‘ë›JqXDœìJ>`ÿHœÜÞåÃÓê~ÕÃÒsч¹.v¥^™‰vGh“îbw§~yìÁ¹C-¹¿À‘)ôùxhTZØú¨´pÅA £§p§•m\w‚ý.e$ñº¯ë\Ì|»½ÝËZIoOgcóÞÆu'Í nGε°ŸVدõ„š›Õ£Ï‚ÛÑ£mÀbÃ>9œû†º÷ŠGMyØCø5‡ÅÔ®ÈЛÝû¾i]ŠýÉ=ÁFuö€Ëí,‚'jÜ/g%Í&X.p†dSSàÌÇ­èÚ‰fÜ/ìɘÙ8ë•Aí¤Çfœ=ér1èfmm9ûÓåÇ5%îÚ³’æ@è4pÅ “‰îåŒaNÆÌ‘x]5Ë‹Áz®q®F{éïüefpê¹(Â+u#°nÖA«´ À!è€ò*¢×j¢ÿjb‡Õĸ„Øe5°[±÷jbnBÇ$ÄI«‰Ó«ˆ³ª€óª€‹ªˆ¥ qKBܳšx<&^Jˆ·bUB|'D¾zX7š'ÄF«‰Íb«Õ@÷è]ElCªˆ‘ ±ãjbçÆnkû®aük á¸5Œ³RÆUk·¥ŒGSÆ )á)ã‹”ñË‚é`½jFë”Ði cë5„k#×&Õ0fÔö­a¸†ð¯ÆQµ'Ô",ªe8'!.Š+âß1pSbü'&îHˆûãÁ”ñdÊx!¼žÞ]Cø8|±†ðC ø#5(YXg a½Ð:5lR-èTƒ(_£Øz ¡o ’F§€IÕŒiÕˆ½RÆþÕˆÕ ŽJÇ¥‚“«„Ó×ÎK—¥€W#–­!Ü•LO¦€j¯¦ŽÿÕÞO Ÿ®eøa-SkÖYKТH°I-GÙZ†m‹CÖ츖bÚZ‚}×2ü«–ã¸"Áék .*:ü»ÂJˆÀ}ÿ@<^”x!þ¯ÆÀø_5âÝ„øp áÓñÅÂ7)â‡5„_RÄÕ€ÈExÕ•"êTÖ©4ª¬—-ÖRlT„Ød-E‡¢AY-A÷À¶Õˆ¾««!ÕˆáՈѫ« “j)v­5Øm-ÅÞE‚ý‹¯¥8b-Å1E‚×R,®•8«Vã‚"Àek®.ÜP¤øO­Æ]%.a áÙj1^-¡(ñnJø ÈðqàÓÄø| áË"÷k~,!UüúÇŸÿ`0{ÍB!2%dQ¿„,Ö-¡–£i «…æ%ÔZÕJlT+Ñ®„*cӲز„µ KXÃ([ QY‚¶®AlSB >èWB \Â?#J(¡b\ %”PB&—PB «‰©%”PÂjc÷JÈÃ>%”PBBì_B-g‚áVæ8Í5Ãê°º¬«ÏÖa XC¶.kij&¬)[­Ï𱿬kÉZ± Xk¶!ÛˆmÌÚ°¶¬kÏ6a›²ÍØæl ¶%ëÀ:²N¬3ÛŠuae¬++g¬’ucÝY¶5ëÉz±mÛ¶c½YÖ—õcýÙölȱÁlÛ eÃØp6‚d£Øh6†eãØŽl<›À&²Il2›Âvb;³]Ø®l*›Æ¦ff²ÝØîl¶'Û‹Íb{ö!ìËf³9l?¶?;€È沃ØáÂ…„‹ØÅìv)»Œp9»‚]É®bKÙÕìöov-»Ž]Ïn`7n"ÜLXF¸…ý‡ÝÊnc·³;Øì.v7á½ì>v?[Πᇄ>aŸ²ÏØ*ö9û‚}ɾb_³oØ·ì;ö=ûýÈ~b?³_دì7ö;ûƒýÉþb3Æ9\rÅ-nó ¯Ãëòz¼>_‡7à ùº¼oÌ›ð¦„õøú¼oÎ[ZZ6à­ù†|#¾1¡ ¡-oÇÛóMø¦|3¾9a –¼ïÈ;ñÎ|+Þ…PFèJ(ç¼’wãÝy¾5ïÉ{ñmø¶|;Þ›÷á}y?BýÝ÷„„A|0ÂwàCù0>œà#ù(>šác ãú+ìã øD>‰OæSøN|g¾ ß•OåÓøt>ƒÏä»ñÝù|O¾ŸÅ÷ŽÀ>|_>›Ïáûñýùü@>—paá`Â!ýñCùaüp~?’Åæóù~ ?–Ç',$œ@8‘pádÂ)§òE|1?ŸÎÏàKø™ü,~6?‡ŸËÏãçó ø…ü"~1¿„_Ê/ã—ó+ø•ü*¾”_ͯáÿæ×òëøõü~#¿‰ßÌ—ñ[øø­ü6~;¿ƒßÉïâwó{ø½ü>~?_Îàò‡øÃüþ(Œ?ΟàOò§øÓüþ,_ÁŸãÏóø‹ü%þ_þ2…¿Ê_ã¯ó7øJþ&ÿ‹¿ÍßáïÞãïóø‡ü#þ1ÿ„Ê?#¬âŸó/ø—ü+Âׄoø·ü;þ=ÿð#ÿ‰ÿÌá¿òßøï„?øŸü/þ7¨J.„B KØ"#êêŠz¢>aBÑP¬Kh$‹&¢©ùRóú¢™h.Zˆ–¢•Ø€ÐZl(6"lLh#ÚŠv¢½Ø„°)a3±¹ØBl):ˆŽæKÉ [‰.¢Ltå¢BTºº‹bkÑSô"l#¶Û‰Þ¢è+ú‰þ„í Ä@1H C;†Šab¸!FŠQb´#ÆŠqbG1^LÅ$1YL!ìDØ™° aW1ULÓÅ 1Sì&v{ˆ=Å^b–Ø[ì“ýNîlÂÂ~bq€8P̉yâ`qˆø—8T&'A8’ ¿ùz´˜/ˆcıâ8q¼X(N'Š“ÄÉâqªùòébÂi„Ó gˆ%âLq–8[œ#Îç‰óÅâBq‘¸X\".—‰Ë ®0¸R\%–Š«Å5âßâZq¸^Ü n7‰› Ë·ô—Fo%ÜF¸]Ü!îw‰»Å=â^qŸ¸Ÿ°Üàý}χÄÃâñ¨xL<.žOЧÄÓâñ¬X!žÏ‹Ä‹xIüW¼,^¯Š×Ì—2ß ¬,À›ââ-ñ¶xG¼+Þï‹>"èoU~Bø”ðaásñ…øR|%¾߈oÅwâ{ç;‘?~"ü,~¿ŠßÄïâñ§øKü F'‚sè/8ZÛ #ëȺ²ž¬/ב dC¹®l$Ë&²©\O®/›Éæ²…l)[É dk¹¡ÜHn,Ûȶ²l/7‘›ÊÍäær ¹¥ì ;ÊN²³ÜJv‘e²«,—²Rv“Ýe¹µì){Émä¶r;Ù[ö‘}e?Ù_n/Èr,‡ÈäP9L—#äH9Š ¿^7†0–0ް#a("*“Ë'ä“ò)ù´|†ð,aá9Âóòù¢|IþW¾,_‘¯Ê×¯Þ ¬$¼IÐ_izËàmÂ;„w ïô—> |(?’ËOä§ò3¹J~.¿ |IøJ~-¿‘ßÊïä÷òù£ü‰ð3ᯄ߿þ üIø‹ð7)®ð“¨JYÊVU‡P—POÕW먪¡ZW5RUBSÂz„õ ÍÍ ÎweZ´R¨ÖjCµ‘ÚXµQmU;B{‚þÂ˦„ÍÔæj µ¥ê :ªNª³ÚJuQeª«*'T* ÝÝUµµê©z©mÔ¶j;Õ[õQ}U?ÕŸ°=aa aa0AdÂPƒaÃÕ5RR£Õ5VS;ªñj‚š¨&©ÉjŠÚIí¬vQ»ª©æÛÓ 33 »v'ìa°'a/Â,ƒ½Õ>j_5[ÍQû©ýÕê@Â\ÂA„y„ƒ ‡þ¥U‡©ÃÕ„# GŽ&Ì', £ŽUÇ©ãÕBu‚:Q¤N&œB8•°ˆ°X¦NWg¨%êLu–:[C8—pá|„ ú+.Q—ªËÔåê u¥ºJ-UW®!è]ô¯%\G¸žpáFÂM7,3¸EýGݪnS·«;Ôê.u7á½½ûý„å„ 4xÈàaõˆzT=¦WO¨'ÕSêiõŒz–°‚ðáy‚Þ ýEÂKzçó— ¯¨WÕkêõìžæ+Õ›êê-õ¶zG½«ÞSï«Ô‡ê#õ±úD}ª>S«Ÿ¾ˆÀ—„¯_ôžÙß¾#|¯~P?ªŸÔÏêõ«úMý®þPª¿ÔßÐxæ–ЕšÙŸÙ9lƒLônÌu õ¬úÖ:V«¡µ®ÕÈjl5±šZëYë[ͬæV «¥ÕÊÚÀjmmhmdmlµ±ÚZíí zçÚM ›6'lAØ’ÐÁêhu²:[[Y]¬2««UnUX•V7«»ÕÃÚÚêiõ²¶±¶µ¶³z[}¬¾V?«?a{‚Þ³t aa0Aï?ºa(aAï%:‚0Òe¶ÆXc­qÖŽÖxk‚5ÑšdM¶¦X;Y;[»X»ZS­iÖtk†5ÓÚÍÚÝÚ#{F`/k–µ·µµ¯5Ûšcígío`h͵²æY[‡Xÿ²µ³·Ž°Ž´Ž²Ž¶æ¢v¾;6ÇŽ',´N°N´N²N¶N±NµY‹­Ó¬Ó­3¬%Ö™ÖYÖÙÖ9Ö¹ÖyÖùÖÖ…ÖEÖÅÖ%Ö¥ÖeÖåÖÖ•ÖUÖÒȽµ®‰À¿­k­ë¬ë­¬­›¬›­e„[z©[ ·n'܈;q—u·uu¯uŸu¿µÜzÀzÐzÈzØzÄzÔzÌzÜzÂz’ðáiÂ3½'Ì Âs„ç /^$¼Dø/áeÂ+½/Ék„×­7¬•Ö›Öÿ¬·¬·­w¬w­÷¬÷­¬­¬­O"wËø,«zÇ‹/z7‰¯ ¾6øÆúÖúÎúÞúÁúÑúÉúÙúÅúÕúÍúÝúÃúÓúËú;r=9€ˆ€tAò±íŒ]Ç®k׳ëÛëØ ì†öºv#»±ÝÄnj¯GXŸÐŒ ×Ùµ ´$è5nZG`Ãldol·±ÛÚíìöö&½¶h3{s{ ³.¥¡£ÝÉîloew±Ëì®v¹]afÖw#t·{Ð\÷žv/{{[{;»·ÝÇîkf³ö'lo°Úƒzöã{{¨=Ìn°GÚ£ìÑöÂXÂ8{G{<`‚=ÑždO¶§Ø;v&ìbïjOµ§`:a†=ÓÞÍÞÝÞƒ°'a/{–½w^/ø¾€Ùö{?{ûû@{.á Â<û`ûû_„C ‡Ù‡ÛGØGÚGÙGÛó ÇØÇÚÇÙÇ`¡}‚}¢}’}²}Š}ª½È^lŸfŸnŸa/±Ï´Ï²Ï¶Ï!œK8p>áûBû"ûbûûRû2Âå„+W®²—ÚWÛרÿ¶¯µ¯³¯·o°o´o²o¶—Ù·Øÿ±oµo³o·ï ÜI¸‹p7ὄû÷– 9Ÿ/ðÕùæ|w±ÀÐ6M€ò'8sX@pKX’)¦Á0—…`!Y(Ͱ°ÎGxEd‘Xdˆâ#*‹Æ¢C “Åb±YˆËâ±ø,K‰ 1$¤Œ%g)XJ+••š¥aiY:–že`Y&È̲°¬ÍGv–ƒå„\>r³<,/ËÇò³¬ +…YV”cÅ¡”„RPʰ²¬”‡ P*AeV…U…j¬:«Áj²ZP›Õau¡žú¬kÈùhÌš°¦ÐŒ5g-XKÖ ZCh í =ëÀ:²N¬3tñÔÕS7è=¬ž¬ëÍú°¾ÐúÃØ`6„ eÃ`¸_#¬‘lÍÆ°±l|Ld“Ød˜ò/Sÿe1Í`3Ù,6æø˜Ëæ±ù°à_þ°ˆ-fKØR¶ –³l%[ÅVÃX ë`=l`Ù&¶™m­° ¶ÃØÉv±ÝlÛ ûØ~v€d‡à0;ÂŽ²cì8œ€“p NÃv–ƒóp.Â%¸Ì®°«p]g7ØMv n³;ì.ÜóqŸ=`á‘Çì {Êž±çð‚½d¯ØköÞ²wì=|ðñ‘}bŸÙ_Ù7öñÀü$ -˃ñàÜù‘šB€ wy’‡‚ÐÂB8Ï#ðˆ< QxTGç1 &Åcó8<.ăøB"ž˜'¤V2+9OÁSB*žš§áiy:HÏ3ðŒÉGfž…g…l>²ó<'ÏÅsCž—çãùy(È ñÂPÄGQ^Œç%xI(å£4/ÃËB9^žWày%¨ U *Tƒê¼¯ÉkñÚPÇS]Oõ >4€†Ðˆ7æMxSÞ šC h ­ 5oÃÛòv¼=tð«£ÕÉêÌ»ð®¼ï= 'ô‚ÞЇ÷åýx>zäi0‡òa|¸5‚䣸h>ÆúÇÇó 0ÑÇ$“a LåÓøt>ƒÏ„Y|6ŸÃçòy0Ÿ/à ù"¾–ð¥|_ÎWÀJX«a ¬…u°6ÀF¾‰oæ[øVØÆ·ó|'ß»aì…}°ÀA8‡ù~”ãÇá?ÉOñÓü œåçøy~_„Kü2¿Â¯òkpßà7ù-~îð»ü¿ÏÀCxá <…gð^ÀKx¯­7ðöÞÁ{ø`}äŸøgþ……oü;$‹ …`OÌS@"  ´'ãÉ!DHJ„†0"¬'‹QD‘E¢‰è"†ˆ)bAlˆq!Ä÷”ÀSBH‰! $õ”ÌSrH)­T"µH#ÒŠt^dE&‘²ˆ¬"d9DNÈå#·<"¯ÈùEQ ù(죈(*Љâ¢”¥DiQF”…r¢¼¨ *ŠJPYTUE5Qjˆš¢ÔuD]¨ç£¾ÐY}4ñÑšAs«…h)Z‰Ö¢ ´íD{ÑAt„Nк@Wèæ©»§ÐzAoè㩯§~¢¿ ŠA0X CÅ01Fˆ‘b”-ÆÀX1NŒÄD˜“a L…iž¦{šaÍ´fù5æÀ\kž˜/ˆ…b,KÄR±L,‡b¥X%V‹5°V¬ëű6ÁfØ[al‡°vÁnØ{aì‡pÁa8Gá‡pN‰ÓâŒ8+ÎÁyqA\—Äe¸"®Šk⺸7Å-q[Üwá܇ðÁcxOá<‡ð^ýÁë?xoá¼‡â£ø$>‹/ðU|ßE «  ¼Ÿñt<1ØÛÔ/½CyÒ`À…R†’¡eÂÉð2‚Œ(#AdˆQ!D÷ÃSLKÆ–qd\ˆ'ãË2¡L‰=%ñ”’ArH)e*™Z¦‘i!L/3ÈŒ2d–YdVÈ&³ËÓG.¹­ª¯êgõWÔ@k1˜B %†©ájŒT£ÔhcaŒ‡ 0&“‰)ÄTbšš®fÀL5K͆9j®šgÍW ÔBk±˜XB,%–©åj¬$V«‰5ÄZµN­‡ j£Ú›Õµ¶ÁvØ;aì†=Ä^b±Ÿ8 ªCpXQGá˜:®NX'Õ)uÚ:Cœ%Îç‰ ê¢º—ÕuU]S×Õ ¸ ·àöOwˆ»Ä=u_=€‡ê‘z¬ž¨§?,°Z‹¬ÅÖ½T/ÓËõ ½R¯Ò«õXk­ƒõÖk£µÉÚlmÑ[õ6½]ïÐ;õ.½[ï±öÂ>Øo°Z‡¬ÃÖ}TÓÇõ }RŸÒ§õ™ÎÂ9ë¼uÁºh]Ò—õ}U_Ó×õ }SßÒ·õ}WßÓ÷õýP?ÒõýT?³ž[/¬—Ö+ýZ¿Ñoõ;ý^Ðõ'ýYÑ_õ7ý]2Í?‚ZÁ¬à೸õŸaˆmˆeÙÅÃü'\+„Ò eB›0&¬ g›&¢‰‘! D…hb@L+–ûâXq­xV|+Ih™Ä& $…d&¹IaRšTÒ@ZHçGzÈýÈDd&²Y‰lDv"‘“Èer›<&¯Éù¡„BPŠE¡÷£„‡’D)¢4Q†(kÊ™ò¦‚©• 2TªP ª5 &Ôò£¶‡:D]¢QŸh`šF¦±iM¡™inZ˜–¦´†6ÐÚùÑ:@G?:‰.DW¢ÑèAô$z™Þ¦ékúA`šAf°Ca ‡~Œ„Q0Ú1ÄXb1ž˜@L$&“‰)fª™f¦›0fÁl˜sa1ÀB?yXL,!–ˈåf…YiV™Õ°Öšuf½Ù`6Â&Ø [`«Û`;ìðc'±‹ØMì!öûˆýÄâ 9d›#æ(ƒãæ„9iN™ÓpÆ: çà¼~ºøÓ%â2q…¸J\3×Í sÓÜ‚ÛpÇÜ5÷à¾y`Zà1<ñãé/žýâ9ñ‚xI¼"^›7æ­ygÞÃøh>™Ïð¾ßà;r½þÅ?¿B%‚ô;6Çe.wEÀÌU ,ñ® ¡ 4„°ÂCˆ‘ 2D¨ ¢1ˆ˜D,"6‡ˆKÄ#â» Ü„n"71$¤ ’C H © 5¤´ÒC†¿‘ÈDd&²YÝlnv7‡›rAn7›×Íçæ‡PÐ-äv‹¸E­bVq·„[Ò-å–¶ÊXe‰rDy¢Q‘¨DT&ªUÝjnu·†[jAm¨u¡Ô‡nC·‘ÛØmb5µšý…æD ¢%ÑŠhí¶qÛºíÜöÐ:ºÜÎn·+tƒîn·§ÛËí } ¯ÛÏíïp  C`( ƒá~Œðc$Œ‚Ñ0Æú1ÎñÄb"1‰˜LL!¦ÓˆéÄ b&1‹˜MÌ!æóˆùîw¡»È] K`©»Ì]î®pWÂ*X k`-¬ƒõ~lø­° 6ÃØêÇ6?¶ÿ…a'±‹ØMì!öþ{wá$Źõqü™_0ü…þFaR䣢¤˜,.KJÊR²´¡Œ,+ËÊË ²¢¡’¡²¡Š¡ª¡š¡º¡†¡¦¡–¡¶¡Ž¡®¡ž¡¾¡¡¡¡‘l,›šÊf²¹¡…l)[ZË6²­á›HjIí#©C$u”dgCÙUv3t G=#èAoCC_C?CÃÃ@à Ãà(EC£hX —#äHÃ(9ZŽ1Œ`ÜgÆG0á3#iR$Mþ˜"§Êi†ér†œi˜%gË9†¹ržœoXI #iQ$-ޤ%d)Yö7–Ër¥á[¹J®6|÷ѹö£urýmø¢}ÁF¹In6l‘[å6Ãv¹Cî4ì’ßË݆=ÿ¨½áü`øQî“?‘Ÿ™ýÌyP"‡™#Ì/ÌQæsœ9ᇓÌ)æ4s†ùÕgåoò9Ï\`.ÊKò2¹Â\e®1×™ÌMæ–n3w˜»Ì=æ¾ȇòwòˆyÌüáÞšö'óŒyÎüżðÃKS^™òÚ/oä[ù޼g>0 ~ND€‘`a¬ŒQ»þ15Puãf‚T* ÿÓ˜h¦E7-†i1M‹Eb“8$îÄSã« HB&“ø£àPI¾"éW$c’3)|J©¦RS“4LZ&ÝG!¡ÒE†¯ÈÈdb2û”Eͪf#Ù™LN5—š›äaò2ùüßüPÐ…"(̉ ¨ZL-NJ0%™Rjiµ )Ë”cÊ3˜ŠL%¦²ª0U™jLu¦†jªµÔÚ¤S—©çC}˜ÖiÄ4fš0MýÐÌOÍýÔÂO-ýÔJm­¶!m™o˜vj{µéÈtb:›ÖÅ´®¦u3­»ÚCíIz…Ó;œ>j_µéÏ `ªƒÔÁ¡†„jX gF0#™QÌh?ŒQǪãÈxf3ñ &}Ádf 3•™ÆL÷ÃŒ(šE³ÔÙê2—™ÇÌW¨ C-òÛâ–|´4Ô2u¹º‚¬d¾eV©«ÕïÈf-³N]¯n ÿb62›ÔÍê²•ÙÆlgv0;™]Ì÷~ØÍìaö2?0?úaóó3³Ÿ9à‡ƒÌ!æ0s„ùÅGÕcêqr‚9ÉœRO«gȯÌYæ7rŽœ„ ~¹è—K~¸lÚÓ®švÍ´ëê õ&¹ÅÜfî¨wÕ{ä>ó€yH~'"áq”ýeO"ái$üɤô!•i©™4LZ&â‡ôL&#“‰Éì‡,¦e5-›iÙMËñÿ¢(§–KËMò0y™|Z~­)Èb ÿ#Šü#Š2ŘâL ¦¤J1¥™2LY¦œÊû¥‚_*þŸUI«¬U!U™jLu­†V“Ôbj3u|ªëS=¿Õ÷©O ýÖȴƦ51­©iÍþ5ÿÔBk©µ"­™6L[í­iÏt`:FY§(ëlZÓºšÖÍ´îÿq=´žZ/Ò›éÃôÕúiýÉf 3H¬ !C™aÌpm„6’ŒbF3cLkÚ8ÓÆ›6Á´‰¦M2m²iSÈT2ͧé¦Ì0e¦6K›Mæ0s™yÚ|mYÈ,b“%di$,û¯[þ_·"œ•>@°€ôpžÀ é¹A?ËÕi ¢C ˆ ± 6ĸâCH‰ 1CH É 9¤€” RCH é ÒCÈ™ 3d¬ ²CÈ ¹ 7äüP C( Å 8”€’P JC( å 4€†ÐCh Í %´¶ð ´ƒöÐ:B'è = 'ô‚ÞÐúB?è` ‚Á0†Â0#`$Œ‚Ñ0ÆÂ8`"L‚É0¦Â4˜3`&Ì‚Ù0æÂ<˜ `!,‚Ű– Xk`-¬ƒõ°6ÁfØ[al‡°vÁ÷°öÀ^ØûáüGá‡pNÁi8¿Á¸—à2\ëp nø ÷à><€‡ð;<‚ÇðÜð ÂÃxOàI<…§ñ þŠgñ<^ÂËx¯â5¼Ž7ð6•ï½ÕûOÅûgT¸¯YÕÞ‰b}\KKâ¿)Ôg³äüJ“¾´¥œ¥"õæ«Qc¾&uåÃ7å›ZZXZÿMC^oǤVüpêÃÞ…Ÿb™n™e™kY@m÷¥ázîk,,›}4Û?oµŸ£ÚúEê«_±\·ÜòÑIeykù`A«Í`u²®y4j™Ç´Æµ&´S“êÇS}TÛ–ÙVÚVÛÖÚ6Ø6Ù¶Úvø( ¤ZðQ*Ÿ *ðiÛYÛyÛ%ÛUÛ ÛmÛ}jñ†¯ð¾²½µ}°á‹¸ª]‰E•Ûø*µz6µ’NÉ dV²)9•+»êEסÊe´2N™h”ZõBëlež²PY¢,÷Q\ݤlUvP=uO¸bêAåˆrL9©œQ~S.„+™Þ¤bé=å¡òXyª¤· ¹€*‹©ü¸Ì¾Ò¾Ú¾Î¾Ñ¾Ï¾Ÿ•ꈧ©„È ˆ—¨zè­޲ߵ?°?²?±?³¿0Ê„aUB¤á§¡#´8VŒ; ^@€à€d)Ò„d ÈÂJÞÊß§¢_Äzß§r_}VÉëLe<^ÄëCu»þázvÃFŒ ˜°:`-õÝ6RÓ·ÜvQ¿wÛšma½¶ãÔh»ntѼM4oÿìÝÇÿR[ŠÃáp9âPg,Uh[,$´%ÖËåÈë(à(ì(æ(é(ã(ï¨ä¨ê¨á¨í¨çhèhBm­–ázZí©¡ÖÎæ˜æ˜é˜ã˜ïXäXF…¨°:Ôz*Bm¤ Ô£ütÈqÞqŸªIO©“ôœ:G¼nä-Y•@G +Шƌ˜*´«ãmê29%K‡6oÂz7Õk}oÙÆ[µiNÅš6ÔœÑk3]ŒÂL/ªÊô¥jÌ€ÀÁFÕ…÷\&…ö[R7Å[LYE•½²…j(;¨€¢—O~ ª‰^39L¥’ã¡u’³T$Ñk$·©6r #©*ò˜J"O©¢@^¾ üˆTö°Q¹#Àét9Ujh„õ3âQ3#!51ÂÚ)œ©éœœ™Ùœ9yœù…œE%Âu!*:«8«;8;›Í…ŽÔYèB…îÔIèåìë@ƒÑT-ÐË3œ³©V XîüÖù­ÿ‡-ÿïvpve‹øúþ5çMççcç çkcO]ßL·Òº¾^ît¹TWt¶NžÐìJæJI»ãÞÅñ°…qïºx>Ú/é*C+ßÕiÙ»íuë+ÝC—¹[¹ÚºÚ»:¹ººz¸z»¹†Ò¾õ(Z±OKÕS\s]ó]‹\K]+hÚ»½ÖõMçm®®Ý®h‡Ù»¹|ÄuÌuÒuÆØHÖ÷‘¯Ð.²¾‡ìÝ;~`l¿raèž°wGXß–´¬ïÇrÇu'p'v'u§p§vgtg1nõuÛ|´h[Ø]Æ]Î]Ñ]Å]¶]ëÐJkCwwsw«Ð•ÔîÎîî±î îÉÆ¦¨¾$:ϽнĽœ¶@½+ ëÝ;ÝûÙêæZÙÔ—5/º¯¸¯»o±ýÌÇî§îçî—liSß¾tкe±OŸ–#½k‘éB"³Ð"¤¾ù˜;(_PÁ "´´X2¨LPZ9¬F»†µi˰­6e«]h­¯?[àû´º76hBÐä iA3CWìÓ&ÝJÚ—[M rÞ͸ʹò¶7hm¬…í«¦½´s´Šv9èZÐÍ ;´fö0èqÐÓ çA/iOì]И¾üåÝõrÑN—¾ÏL[ZaûX!žŒž,žì´U•‡Ö¨ zÊyj{êyÒ†SsÚmjãiçéèéBKJÞ¥~ž±´_4™6‹ôý¡Y´ô³Ô³Â³Î³•öpöЂÍOƾÌ)ÏZ~¹B .7i'EßDyàyäyâyFk&¯h¡ä½GH«´ÓÚ†wYC¥% }=#6mc諉d™\¦¢m‰™Qf‘Ùe.cÍ¡m0èë ÞÍ…r´”PSÖ16 ô5ƒ6´^ /t¢m€ît¯_ä¡kõ‰t1®_wϽæž/É¥r]:{/œ7ÈMr«ÜA7Ç{èê÷'ºîÕozе®~™{Jþ*ÏÉ‹tÉzMÞ”wéöóÝnþIw–/éJñTèRÏI×g1éòË{×¥_r%¡ë«”táä½aÊAw;…é§]Ü”U+¨•ÕjÆEŠ~ƒÒ@m«öTû¨ýÕAôF~8½r£ŽW'©Séý¶÷Eö|uº^.o¥Ê»Ô=êêÏôêö0½«=®^¢wéãSzï§¿í{¥z_ÆÙ5©ÅÑâÓk¤`zu”‚^úèïsBèþZ&+½Ñ_/äÑòk…´¢Z ­´VN«H_b½_]kÓWTýËg#­©ÖBk­}£uÐ:kÝè Coú’0 ôk÷‹€þ `ýê­ÿê<•~ÕÕ]ú êbm™¶R[­­Õ6h›´­Úí{mï¿Ù{8©©ô“€ž"žº3™’d&ÓËîlŸmì²»Üy¢ˆŠØP¬Ø°°7làÙÛõÔ³÷S¹Ãž(wØ»wzÞ_ςłbcòg’¼—7yÉ›$“nèì7ï{õëï{/™º¿×½Q·¬î“ºÏëVÔ}U÷uÝ7ußÖ}_·ªî‡ºë~ª[]GyFx6ôlìñyâž”'ëÉyš=}žm<<Ûz&z¶óLòìè™ìÙɳ³g7ÏÏîž=ã}Öûœ÷EïKÞ—½¯x_õ¾á}Óû¶÷ï{Þ/½?{%ï¶ŽeÙ+°!6ÌŠl„³ 6ɦØ4[Ï6°9¶‘mb[Ù6¶Í³l7ÛËö³ãØ-Ùñìv;v»»+»;»'»;=ÎÆÉÃÎdO`OfOcg±g²g±g³ç°sØóØß³ç³°³—°—²—±—³`ç²óثثÙëØØ?±·²w°w³÷±°óÙì£ì"ö öeö¿ììGì§ìrö öKvûû-»’ýŽýž]ÅþÄ®f)ß߆>/â‹ûR¾z_—oKßxßßv¾I¾}“};ùvöíæ›âÛÝ·‡oªooß~¾|ûõà;Çw®o¶oŽï<ß¾ }ù.ö]â»Üwƒïßý¾}ñ=ì{Ä÷¨ï1ßBßß|Oøûžô=åû‡o©ïißs¾ç}/ø^ö½å{ß÷‘ï3ß·¾_|’ñoàßÈ¿±”ÿhÿfþÍý[øëü¿Ïï÷ü¼_ð‡üÖßæïðwû{ýýþñþIþü»úw÷ïéßË¿·ÿ¾þýýøôä?بÿÿÑþþãýgû/õ_áŸë¿Æ»¾ÿQÿ"ÿþÅþ'ýOù—ø—úŸö?ãÖÿœÿEÿ+þ×ýÿòÿÛÿ±¥ÿ;ÿ÷þý?ùöü›6x¾@0Àø€"h ˆt >Ðh ´:=¾À@`00.ð›Ào[ƶl˜Ø.°GààÀÌÀ™ssç. \øcà†À›·n ܸ=pGàîÀ}ó ž<Xø{à¥gÏž¼x1ðJÀä‚á`S°9Øl ¶;‚Á®`w°'ØÜ&¸kp÷àžÁ}‚Ó‚GOÎ^¼>xGðÎà]Á»ƒ÷ïþ9ø@ðÁàCÁ¿Ÿ ¾|-øÏà[ÁÿŽàFrpr¿â6â6æFq›p£¹M¹-8–óq~.À9Žã9 qaNäâ\šËpY®žkàr\#×Ä5s-\+×Áõpc¸^n€û-·%÷;n+n<·5· 7Û–›ÈmÇMâvævã¦rûpûss‡q‡sGpGrGq3¸¸S¸3¸YÜ™ÜYÜÙÜ9ܹÜyÜï¹ó¹‹¸K¹+¸¹ÜÕÜuÜ Ü­ÜÝÜÜîaîn!·ˆ{œ[Ì=É=Å-åžæžá^à^ãÞâÞå–qqsŸqŸs˹Ü7ÜwÜÜÏ\£ù_ñ›ò>Ès<χy‘ðq>Á'ù,_Ï7ðÍ|ßËãÇó[óÛðùíøíùùùÝø=ø½ø}ùýùCø£øãøSøSùÓøYü™üYü¹ül~!?¿ž¿™¿“¿‹¿›¿ŸÏ?Ê?Áÿƒ_Ê?Í?Ç?Ï¿À¿Ì¿Â¿Ê¿Á¿É¿Í¿Ã¿ÇÈÌÁËÿÈK<%ÐÂHaaCaca”°‰°™°¹°…À ¼ÒB£Ð$4 mB»:„N¡K#Œ…ß Û ; “…„]…Ý„)ÂîžÂ^ÂÞÂ4á`áa†0S8N8Q8]8G8_¸T¸L¸\øƒ0W˜'\#Ü(Ü&Ü-Ü#Ü+Ü'Ü/<(<$Ì  …EÂãÂba‰°TxCxSx[øTX!|'ü,С_…6 yBÁâCኄâ¡T(Ê…šC¡îPoh›ÐÔÐ~¡ƒCG„f„f†Ž :)trè´Ðé¡3Bg…Κ:?tQèÚÐC7…îý%ôXhqhiè…Ðk¡·Bï†þz/ôahYè£Ð§¡å¡¡oB߇~ ý±p&Ü·;Âážð˜po¸?¼exBxRx×ðžáiáéá#ÃG…ÏÏ >1|RøäðiáÓÃg„Ï Ÿ¾8|eøšð=áûÆ Ïÿ%ü×ð‚ðÃáG†…‡—„Ÿ?~9üzøÍð[á‡ßÿ'üáwÂï†ß ¿^þ4üEøëðwáïëÂ?„ ÿþ9üKxuX 3â†â(ñ×bè½"+úD¿ƒ"'†Ä¨˜3bNlób·Ø#Ž{Å>q¬Ø/ˆƒâ–âxq‚¸½8YÜUÜCÜ[ÜGÜWÜOœ&î/ ($Ngˆ'ˆ§ˆ§Š§‰§‹gˆ³Ä3ųijÅsÄsÅÙâñ<ñ÷âùââ…âEâÅâ%ââ<ñZññFñ&ñOâÍâ-â­âmâíâââ]âÝâ=â½â}âýâƒâ_ÄGÄEââSâRñ9ñ%ñ5ñ_âÛâ»ââÇâçârñ ñKq…ø•øµøø­ø½ø£ø‹(‰LdƒÈF‘Ñ‘Í#‘H"’‰ä"-‘ÖH[¤=’tEÆDz#}‘±‘þȸȖ‘ñ‘ ‘)‘©‘½#‡GŽœ9=rNäüÈ¥‘¹‘ë"×Gþ¹!rcäæÈm‘;#÷Dî<y8òXäñÈó‘7#ïD>Œ|ù*òuä›È·‘•‘U‘Ÿ"«#TtDtÃèèèfѺh$š‹¶E»£ýÑ-£¿‹nÝ:ºmtûèÑIÑ£“£»D§D§F÷Ž=*zltVtvôÂèåÑ«¢ŒÞ½+úçèÑ£EçGD>]]}<º8º$º4úlôÍèÛÑw¢Ë£ßDˆ¢#c£b›Ç|1!Š…cb,‹ÇR±l,kŽµÅºc½±þØÄØ”ØÞ±b‡ÆŽŽ;66#63vBìäØ)±Sc§ÅN;'6'v~ìªØµ±?Æî‰={8öxlIìÙØË±Æþû¿Ø;±wcÿ}û(öqì“Ø§±Ïb_ľޭŒ­Šmß,ÎÆùx4žŽgâÙx}¼!Þo·ÅÛãñ®xw¼/>ÿM|R|·øÞñâ‡ÆŽ?!~bü¤øÉñÓâ³âgÆÏŠŸ?/~qü²ø•ñ?ÅïŒÿ9þ×øÂø“ñ§ãÏÄŸ?>þRüÕøkñ×ãoÄÿ+þŸø»ñ÷ãËâŸÄ?ÿ:¾2¾*þS|uœJl˜¨KáD"QŸhI´&Úí‰|¢+1&161˜ømb«Ä6‰‰‰“»$¦$¦&ŽHÌHœ”8#qnbvbNâ¼Äï&.I\š¸,qyâŠÄÜÄÕ‰k×&®K\Ÿ¸)qkâ¶Äí‰;w&îMI}Ÿú1õKJJ1éÍÓáôØôžéiééé#Ó3Ó'§g¥g§/L_”¾8}IúÒôé¹éyé«ÒW§¯I_Ÿ¾1}sú¶ôé…é¥éWÓo¤ßL¿~'½<ýS:˜éÎôg¶ÌLÈLÊìšÙ33-3=sHæÐÌ‘™£2GgffNÌœš™•9's^æÂÌ¥™+3ÈÌÍ\“¹9sOæÏ™ù™‡3 3¯g–g¾È|™ù&ómfeæ‡Ìèl$ÍÆ²ñl:›Éf³ÙælK¶;Û—ÌŽËþ&»Uv|vëìÄìžÙóGeÉÎÌ—=>{rö”ì©ÙYÙ3³geggçdÏË^˜½4{eöªìuÙ³·dïÈÞ“ýsv~öáìÂìÙ%Ù§³Ïg_Ⱦ˜}5ûZöõì›Ù·²ÿξ“}7ûßì‡Ù²£ë#õùúŽúÎú1õ½õ}õƒõÛÔO®ŸZ@ýôúÃ뮟Ybý©õ³êÏ©¿®~~ýóõÖ/«ÿ¨þ³úÏë—×Uÿc=Ý0ª¡®!Õ0¦áÀ†ƒn8¬áð†#Ži8¶aFà '6œÔpZÃe ·6<ÒðBÃË ¯5|Ððaò†O>kø¼aEÃ× ß4¬lø®Ém–ãsB.”‹æb¹x.Ëä²¹Æ\S®9מ;4wLî¸Üñ¹r'çfåfçæäÎË]»,7/w}îæÜ¹ûsÏä^ʽ‘{;÷^îçÜ/¹Õ9ªqÃÆÑ›6þºq‹Fc¨1Þ˜mlnìhÜ¡q—Æ©û5ÜxfãYg7În¼°ñòÆëok\ÚøBãko5¾Ûøcc ©«irÓNM;7íÖ´WÓþM‡7×4§é¢¦+š®nº¡é‘¦/›V4}ÕômÓMRÕL7lÕ¼yskóäæÍW6Ïk¾¦ùúæ;›ïj¾»ù¾æùÍ6/l^ÜüRóÿ5ÐüióÊæïš¿oþ±YjÞ åW-£[¸–LKSK¾e e°e\Ë–-Z&µìØ2¹e—–©-ûµœÒò‡–û[žiyµåÍ–÷ZÞoù å£–å-ß´|Û²²eUËê–­·nÖʶò­­½­ãZÇ·n×zpëôÖCZo=¶õÄÖ³Z/l½·õ¡ÖGZÿÖú÷Öw[nõ·µ·íÐ6©mǶÛöhÛ·m¿¶im¶ÖvLÛåmµ½Þö]Û÷m«Ú~j£Û7j߸}Tû¦ížö`;×ηGÚ“íõíƒí[µOlŸÜ>¥ýØöí3ÛOh?­ýìöKÚ¯m¿©ýöö{Ûj¡}YûêöB»ÔÎä7Êÿ:¿Y~ó<›oËçóùÞ|_~l~0¿U~b~»üöùó»å÷Êïß'?-?=dþ¨üÑùù“ògäÏÍ_¿,?/ÿ@~A~Qþ©ü3ùòŸæWä¿Ëÿ¼fƒÈwD;Òã;¶îئcbÇäŽ)»wìѱWÇþ‡tÞqTÇ™×u,èx¥ã›Og¾s—Î];wëÜ£sß΃:îœÞyXç1'tžÜyZç%wt.î|­sYçç_w®ê\Ýéï uÅ»²]Í]ÛtMèÚ¶kû®»öèšÚµg×>]vÖux×]Gwßuj×i]§wÙ5§ë¢®ûº^êúªk‹î¶îºgvÿ¡{n÷¼îkºoì¾­ûöî;ºïî~ {A÷âî纗wßMõD{Ò==í===;õìÞ³OÏ=‡õœÛs[ÏÒžOz6ó§17¹eÌícîóИùcþ2æá1Y2fÕõléíìíëýMïž½Óz§÷Ù;³÷âÞ;{—ôŽëûMßoû¶ê›Ø7¹o§¾ûvëÛ«oÿ¾#ûNê›ÛwSß=}Ïô}Ö·ÉØÜØíÆÎûÞØ÷Ç~0ö£±ËÇ~3öÛ±+Ç®»zìˆ~¡¿£×þú¯ê¤ÿ³þÏû—÷¯èÿ®ÿçþ_úW÷SŒØtà×[ øBáq 6hØaàèËxm`å;Ø9Ø3Ø78~ð ÁsgÎ<ðÒÁ¹ƒó¯¼vð¦ÁÛï¼wðoƒÔ¸qã¶7yÍ0´úA?Ñ‚’¢ÅÿGŒÐý_  5Ô/°ÚWíúOßãóB+0¹P·(|†‘äSîudñÿ‘#KþÊ!¬~süÝj¿Öê•×¶áŸEœî+&ŒÈ§NX-pˆ)ù´ÆÕê÷5´ý–áÝ:“!ÙJÁÿh #Nþø£|ÒŒù?+í+ù´JÙ)––Q¥ÿÔ?FË/š¨3ùSþ )Š’ÿ£|eŠßh¥„%Å›¤  Ôg`SëGëïÙ`l,ƒA±ÑM¦a2š*P%%QL) ¶4@ž—$­©I×|@@7õW4y…4 ((;¨Ž’ÒTP.hulÎkJFZCš–dú6Ñ ª Ow ) @XiA-•àKF¯€ò*AŠÍ,Q“CÃÑM¾æ³`y,@pŠ–ëKRU)ù¾æS’©ˆ.Ùþ  Åð±Êð¸Ìãd!h¥i±"?V$ªD´ÊhwYIJú@ë'i%PŒK©Q"ØÈÚõ¢^ˆkÇôeKwœI¸-³¬ƒz¾SÀÇA _ôæ6ÊD œ³[³l¨‰s[毽¼„ë,¶» ´$ÏÐÒj€&êêr4FX-1†6ZS«®}…ÚäelÁh9IñèHCé)l@y X7s@Ø*õi ×”k›PçO•úwh¥KKP»Š“HAIø" «DQ¶È")ýÉÎM!)T ª›©ÄP;Z„‘ —Â¥”…(VO•†Ò̦ ÊÙ’JÀŠ‚…K@i ȶ!@«ŠATaS ½&J•¡‚Jì"–Ì €*72$+ £°À(U PŠ W(6/(‘È12o §|…Eç/#×ô*ïÌ(‘9 6cà2˜"¡d21Š®Qª¾3òP¦(F~`—.¦ÍL+ÔÐèˆ`àÚjžòC¶²y,Z"E• T$ÈÈ‘# .IoÀ‰¾ß1Þ™˜0hÁRÜ‚lyÌ…žÊ?3 Â¸Å}hhâ°ý F(àìHóW†Ðý1tÊJ‚’°ÅwJ‰]åç;a|·°.õÝ£˜D N,Ä$fúnº]*Ç&¡ÅåYž !)haeLyéÕ‡…aµ%—m´µC&š¯ÀÀLݾHa¥0†€LÚ™³%û&i-Hžç ‚Rø©*Y"~rdÖÉ!n.HR‡Y ZΞÉt¢°½Œš_²²—Áía]–`…M¸~aÁ?"Z¿Ì•ȩݬ WÂ*ð-'®ø¶l8qÎ6TÆhÛeª)šh˜/'>WÛÂ@¶—€B²ñ†Â—ÙË(aœdÄS_)V·¥0”ÛRuÚ¶Ô ñåàŒ«&¿hÐXà…ä @Ò¨oc—]3úŠKQF/Èí¥â~Òee¥ªn®Tŧՠ˜&¶Ön¦›ˆv“Ö®˜™â;˜Šûó⪸’w¶k€5Ÿ…ªX‘¼ª²ÆBBV¡ä“i¼ÄO `RdªÕ*t®.+iŠ’ ³–Œ²é)ØU=ÅdÕ¸D2^©kŒ³³ % o´ ƒ$b‰$å¯Lg°~d{púa D?2 Ó»”„’jNÕ* ­îKµÌ*’óÅȆ‘àÚ‹(‰aà!lÒVª§PÚ‰“W"4È!D²j¯˜Á208Š‘ƒ«b¼+ÎËÀ`(¹\ =]IUÁt å}4Æ)ó+®¬8.œ1ƒìû@>KÅI M‘ŽÖ—CX—¶::ã{V oZŽ˜‚S¿‚B+u OÕ8_*-AZ™–¨>L¥º÷—Ò6hŔΧÜá2A}èIÕ ZIYL”Ñj€©ú)Xb€Û™ +òlpO~$3ÙÐv‘Z‰ À]$. hI/š$.ÅÆÊÝ„¹ºm)Ž*~/@OX oD˜ h\¡Œá˜)Ê¿”¼¬D“#~)І£•5VRj Õ\ç¾õ%¥­ ,€…ƒx¼2n ¸Œ.YõCÒL,! `CÓ\,ˆ£`f å»:åß!tÙ€Y,#](C^—ò ~•{ÉIœ¹J¿°²#í.I©öY-! R){q`ÕÊ-ž: ³¬D½ñˆ ` d–3Í-Ášp™ Ë¬Uû"è—A åÈSún…Èi Tuw£j%p*sa åßQ¿L•Äu$— ¸†ßÜÓP¥¬G¹Læ)2 ŠB’ÃðB!Å m~°¢ù\= á­sµ<—LAJ` ÌÓéNùE™2E•²ÒPOqõÔ†zªÚUF=BΉ4&J¥Æ99+¬4GÉ;5.½‚¥¡p* štðD¸_'AcŽ T!VB‡r§æ¶—A–#³U‚%Oí¤ µR¯zæ K9²´PÇH0H3pˆˆ…„l2åå,þÁ¯¢À¯¥Š©Q[ÙP´ÈX UjN x¾–¨XiDOAe`EÐ)4 ¶®L1GÙ \ñ–¸Í/[ú¥p·T­$üÐݨ“¼-5 A‹_ÍWTeô»*`Ew$+L±@p+€Û"qǼ•#m2ˆ}A/qmàœBÂu¢ðÝ„)SJ#ëÀ<‘ƦõÊÖáAwH–vÒæ7 hPr}g…qVlaÍ'h%”.º@Cîc J—ƒ¥eÞhž(é.+B(q¶G«‘½9¯JZò_XˆX¨ïÌBRHȧm4hÍ…I—! ×A˜B(BÐŽ*£6ºÞ ’ìaÉÚ5“B” •ñÂÜ%”!J£8 (=/t,ÐNذæ›ÊRÞ ]—y¢S;±•—Pl*óZ‰Ñµ.U",ÒY(€&(Ü"!¦ âTÝÑýÆÇ5^Ð`@ÁIƒE_! ê»TÚ\K à÷ÇÌQ4r‘Œ’/˜)Ÿ48s.ȦSĸäúYÉ=4íö r¹KW+Ã!` >)ó›3ZDÄhuÊ¢ð)x‹ÜTÑs”[|G¥²Rá;ŽU-<0ï%Òâˆïª4¯Z©Õª| /èV h_`eÈ\PyÙÇPFÍõ%ZexíÍ%žJ*`­ÆSVÁ¯x¥T†Vtv’Œrvårè.jº¥¹`G€ÜÂ0zKPW¢`áÐñ×eÃ:¨ X¼\Šë+—i0:ä ,!¡\â)ÎAh„¡žâ4Ps—tYíLÝ QÐM롆•! ¼0æ»aóuÈòãÚíÌJ¸(?:O åõæ0Ò£Àlpb&$$Ô°´¥Å-Û¢}… /•g‰—œ- Ô¬ ­Ê­’0¥C*€V CC@ɇÊCÙ@ÁÍ‘ªˆkÿBu­ÍÇù‘m…„Ê,Q„¢DH JN¢K¨"¯Ý\†%”]Ê—%¸yUª:f·KƒºÄSØ_h_A¡¥:„—ÐÊEqÉà5ÖŠ€¢½Þº·…‚Êü³z‹»øÆ'àL­£´)%ËAz…-€Ð¡q!©,5 3ðʆ²A© èQ„ÊEÉV;U.(?”Á£ 2*l*žJ(J››?Ë OH‚ÚÄ "üò?¬¬É”L `š¤aÍÝzš B9ÄŸ"Á+uܲQ%ESJ´¡}Ü"!B‰˜/¹IÆ4aûß•1<XÀÀék€Ü@‚¤B³@~4@®ÃP ðæÂÊøëh´G``(1:Æ–‰Cê¨RçÌ i­ì¼ö§BÏ(¢82 ¥=f;¬5iM“&#BÜŸZëà2†Ø1}e9Ä’àF¶Ûúļ›QP6 $”A>›JÊf˜Ö^jÁ(‘6¥±É¨ÆºhÐ(* .V[Ë3„tÆX0LyÐZù«ªâšíºÏ+>ã[€†Éeh`Õ)t¬ÀAã{jÕZÊÓU !@©«P>à|ÕT£æ,„4-]ŽÞ§PÐÑKš5U“N`òÚrÔUhs–…s$EHËzjˆÖia3Ìg‡§ eÀeìfÀê³ùÖPö„Ämù2©³iŸ× ~A^àü2@­‹ü’°yï1"ïW7CiTÕ’³Hõ+ ¼hDœ1’ŽV‡c U!Q¼¡ë'ÄFwÛLPë$åU’R¬˜¯!¤¼ ‚&eǟ“-Á +t) \rÐÅT{, \f —׆Ç7læÙÊó¡¼:[tC Ù 9Ô¤”pGS,¸-EÁàVžm µpP ¿Æ&÷ºÔFpJŸ‘@š€27_åÕ¯Vb€°B@ÔĸuÜÄÉ(­ŽÂ;4ØçššžbQ´„¸t UYTPñU[±p:)”_Ê_­º$Ü[QÚÕ]x@pß$ûå…±à%€˜H¬¥wR4rïÂ4*0 Át7„¨”§oÍg‹§F¤Ö9a[ü"v4®ò#¶²4!Uáv²Â´aU)maª@ù¡Û¶ãô¬ÐþTHUm¬óG.ñ”ú{™\d­æ% ’¤:V¹ã:/(à)p«Ec³›x¡*¸¡TB:zm¥bj‡òjáÐQ¾ÆRÁN)¯L^%§¬å5|;‚*Ÿò»4i1¨aP$VvP+wi†¨YùQTÃ5ùa(x¿EÍ@î(Æ…¡´:J{á)œ~–ÀTD¡bYæe•]‹R¨IÑ8ãj$é1¤Ktz àz>œ£âZɇKÈm:wóáî_™Ãd£ÊiUøUÕSN ¾J£¡Ž¼È‹âWÔ U]ïœ2ȦPö˜â Ž"5·¶%§äÙÒ[m¤1±æ4þð>èÖx3BlŽ¢±’r–ˤCÂ4ð­EŒ2Ox…Ž­æpߤV0Üð:A)ÛM“´ËcU˜æ¥(Ói²ØQUFÑ´·ØÙ×S`1! PÍ‘žâÍq=%iœ¼|ÃsgjåPñíLÃÖ”˜(m÷§VlÔe3JÓ¥n\™ÁÞ„€7ÇK`åZ›3­´ØÔSÂk7¬š¡1HPèóu¸"gê=ñÁÖá)&T ¬6³: ®,À ýTsP¼c„àé²a‡ ÕñÔ (+„:4| V…=k¶Vµ­VÊV–ð–s~Åš—ÑSå«3=%4'(#üjOOÍQˆž–Q‡¡ÑÓê Š»H¸Ž‚*CÑêcž•!Ô!ªŒúp(®§ÕÔ¶žê€ò kÓWº˜Ç¢¨ê_le^™á®q|H•“è ßè’-% KlFc/Žƒ⯒Ãèì¬ìñʆTèvRZX*k%àjð:nuh[Œ)ó‚/h~§æeÂVdÂë‡Ì;Ûv áý #™Wê¨C‡Ò;t·G\Üï˜ÄQŠìÅQH³8J~^&†4eꘄ4ÚOV©u°_' Z®Žñ ˆ¶Â0ÃlSCØ 9T+9ƒ¯²·jq”Q_¼GÔ¼ÎÐÅQ ãå#«Ê4׿~gˆò„M A…+ÜïTSOiØŠQE”¨§eê˜è)­;¬'Dh¸“"ÕfCJ ¶ê‰P@§° óÐ%A×לTÅ å«3Q'5¯ä9ºÅ¥Î TC+)×a™±L:$Lï°š›}MÔÕ:Fþ¢6PŠöZ<#s¦q¨ê©NÊʦr ° DZìçHñ渒´I^þÿÆ–“ð²ÖŽjm>ê² +IÚ;䲨Œ6vvÐ{’’çêWR\§ÌvÝ<äROSÆ©J—ÁÃËá#-ežl4F•ÑAå«3$5·–<·¡h&ê`Q¬Þ V¼'t‘ÕsÖ|øH«†|¥[ÀÿpÂß­ôH…'P²k-‰ë\ïÐ1V£ £„¿1ªæä?‡µè¤´=ZmËsUw[•@AÛK›iÑU|–¼ 6ÜNžG;5rÈåd¿CØø þbøHË^þ÷;æ(›~gø ÙšÒ°U°ª ­ìnðÊ€GZŠ?‘h׎´`‡(P›N ~¥U%Ñ’~¡€ÒƒÖÜíçjk¤Chç­– i5Wƒ³µô)X}U_ºXéJ)õ•t¶VJS5ú8­ëþ|nqò² iïåÃJýHðGðž”b™a‰%%ë ,CÃ6Ê5ßÕ©•رQ„W}ÊR hVþ§ Á ¼Þh®ï ×”P¼î@!ô-H5µ•¤Ô)Qaµ9ò‚Pu† òn¥ öÌ5¾ Ø¥ ¤tJtu úk'¼mà´Zp†Ø;CðµkÄS¥´¸E÷¶Uð½ FÄT{Æß/*†ÒŒN1¬•5³’*˜Jh %†¶Î *z7‚¸n¡yT¥ `ô J1û,Çê(V¥ø2PY÷ÖE]”:pPB‡®jÅÖAg …ð T´7< ú¢{­1TXKÛp­_c¹ECc›@—¾¡C©9JJÂ+çlòÓÕC9„…«Ô …%©¦R¯óeÑ\(_­˜ ­€öSꮄðfébå-O0ÆìGÝ !ñhZËÒ(ú…êèFow×ÏÝ@éEƒÑKŸ¶„BC5+Á€¦¨ó-Õ& *£eWä^É´ªÚ’iŠÆâLpH Š@Éð ‡d†Åd1rê²ß’ Të#½òµ$èE4WÑ/;V””î³@1F=6TÕÈ+ X ¼[Ü©LÆìñÔ5¾;’ +Ò|«%Ó$Û|PH£NÜ’ü8He P•TR´Þ¸ QÀ“hå°UÑ/)„+EiÂf€rÔʈ§rô!YäiA‰z!`…§r–@>‘€SPÔµ•TÚŠ¦”+ŽHdDç‚^£tvÖJàhy%(”ÎÊQ«µ¢qk¦RJ€aÖ¸a:sõ¤!0¬qUÖ8‚©$hqçMq‡¢€¨©~h<6ÆQ[!ÏÔÐJ*Ù;¨B]Sÿ làí×ö[áiF邆1rR3qx­kLhið;x¡µ¨@_ˆØ¨š÷ `ÚÕô ÕT˜èÏe"¢®C$ãáH ÒZˆ¬HPeB )/p)æLêŠî¬r©£åj.zF¥½f¬Ÿž‘@1ùš¾ü rËRÒß.–û×£¬ÐÙ¸•Æq©@!w! ª²àK®,ófPÙ¼•%Wb«²[!„•jV*ãig[^Ïf”R¾š5jnµÖŽÏ]?ý»ÃV®íF]Öe+šëºžâ:èì §Öô V¡ªr,Sy€B[âÑäVŒ9`¥DýT¤)Nb‡­ª—·1¨lÞ udæI;•ÝS"}ú¬T6òz62À6µRŸ¼ÂBeD+MQk)¶~朵r6Ã*è²͵¥§%ZUqdò/”IꃼŽÜrGdµ¼#³Ò"áˆÌëYõÒÎZ¹%üÅÊx[Z¦ri+ªŠ»~‡¹G3¤ª™a¨ÕlÆÐ¥>lÉXµó$ö[Á:ÌÉh2«É™/Ð äm €rý0ÈÍ«#_/þn$¥Ki’`E6`ÖÈ"»Ýp‘8P¡‹ÔÝ)³©´ÄZÕ&Sš¡Ö—X¨S!UÍéS)¡J4”1c­1"¸.-ë†õkmQÕ\õ\SÆõŒªÃ [¹Â:ÜVQ@„’’RÀ +¥óÐ󢿮µ¬-Ù¨)³RÇm}w_Vm9qÜ% ]®É¡ÅV?0zèÖảfÌ›ãàiÁ™S¨Aa£Ë¡$°õ¶%~ʃ‘(€£ä1l‹¨E1fLJp”Qúƒ ¤òPRÐðô +ÁQxÊ4O ƒå°°˜nPÞÞƒžn+ ^›©Ix͵RŸrEžšW%J{ç'® 8ÊY«â _l¶R‡3o¥œ6¢(+ºl®§$]FN õGóÐ4ÎÎC:¸ê­ÓúEÁyx¢E€3Úi;~H¡I¨‡19›“¯ŽÌ—•^gšRM™×$œVNîßäHœ9©ÿ™§ä·… ˼+2ۙ̀ᘭ–õ«ö£/gcý/Çlú<¬Ë5¡ËÃû¯µ‹¨ðp,êT¿¨áý×ú‹B·…£\÷_G†»$`J…Ö@ÑÖ¶~.sšª^íú/ÌÉ·¯Šš_³±¨C `ÁÚÔš.;ÖÁuWA(p:I+’K!âW áÔJìT®5as6ÖЉ¨yÒÈŠ¢ÔÇd¨’›ùÖb¤¡²á¶€JE>ü.§ÌWMkÉó 5‡B‚KAHtOxYlUͱ¬ˆ1a§QV,­ ©¿ñDSÚO-9ß8y—3#LÜ“põA'(™PV ETa+"á•5¯â¾ šæÝ¢„Ëb)PæuH±„$©Û^XA9S‡µTÕƒØÓ\JRC†¢KôFÔêë¥KvÙµÞ *@hÊY+@R[cZ­]=¥\JL­ã*£ê òQÅDSQâÈ!"Æ”–bR¶°@ÈY¡2/Ë¡ú«8êW]òªšÂïHŒ‡Tø‹+à „ßÂáK…É+B†ÊN‡1›­:4üqIJµÌ¸YÆS1µßŠ‚q—K)\­Ža€'+‚­VÎfXÝqöD¼ù®„„ªÐqT*ütà$Bgÿºhù)ó—´ .À³íC/Æ®·ªPŒiC¦(ò¹žÌ»Øé¹R碄^ä~lõ ;º3g€­“š‚¤žÎ@ÀŠ÷´2º•ù¸4úZ eí$ÏÁ5À–9u}t+¦–Tól‹;V{­`¸2ô·³®ËÑ QCu †ŽÃõŒgÁ›Aj8Ê|†eÆrÖÊ$¼tF ØjmœE¡_6ðŒP¶€ ½ðKt06†ÕpT}÷°#³=º-G¦~H´òi˜€Ò¬(`+ÆКƒr¼mëZlØOéXC7CB?VfXUçâtsdv¹«Fœ a†Î¨QçB®c Ð`£g{n߬Qè¾O7HË—Thç ›#¼¾as·Âï×A`íÞÄp¸î\*Ý–s‘¥EÍ>Éo.#I@;ŒzÀ~€ú2Ð]¾º®³óØ›Šáè((Y¯5ûnྙ2–ÎM`94ƒÊÃd1&‹jÌq‹M0æpa«tR¶v[pRöZ™Ï<–5œµrF ÝheG÷hÌá…½1¿FbåA B îÚð{VF(½×CbùÃŽ* 1dÀZÞZ¹™6tCg£ÛÛ*ªøE{߲ꀠK¢€ þ?f*y¸¦Ô½‚|͸#ûö¾@²£8´û½7aã¥ÝU–Nq%¤“ng÷V Iì­tÒB‡ÄîœàÌDN&ƒ1`’–c²1æÆ`cÀ2ŒcŒÉ`¢âtÚ}¿:W÷ óffïfWÛsW;õúuUWWWWW‡÷&…s"EŒ’ŒBRÆ&{$ Ró¤ R.C¯–Tµè‘±ã)0'<SàìsŒ9T9æ•U`º½R'-»Ó|Êxª.óÆÜì×öj„ÿS²‘ŒÝh«Ã+¶jîô§@YT è5Ëò½Ê&å`æé­-Ä„êÉžKõhκìò²¼»L"2³{2\ rr6,»áœÍGfÄֆܺAuï*yš >1?m ›F–ñ–óå„qâùEŠ(],³["§¾e¨2òXœU~–‡gÉÊCH´,G¼ á2º› <Á Ö+Už~ÕëÀù(fèÌ Ä"…¿Ï<àèUaã.´ý n`9ޱ—u§Ãîe`ø,óÝL¨1Y¯ØÇ.Î"H ×œÓ:ãj—™-xP.)-„Pòjy9¥Ý»0 6$)Dú01Œâ ³eÄ‘X>7’ˆQ¦ª·V_d䎟ÇmQ$ÏJÙ¼©,²ù€R=.´ù¤Ù¤XB†‰bû1yìÌ2Âeƒ¤ZiD,r¥/ÇËZªÂì©‚¥ RÚ‹.Ëá!ÅÔ•÷È}‹&¦WG€=Hé[8tmIɲ²òAÜÝ.±ÃÏtÊ&Nnr _§òà[‚$™9ÇC溸ž:‘ÜåÁš¾+s»•° ¢žPV«µÖ-9}‹Ó:_&–?zÎ}owTÈ%J»2fcw<ž®~*½§É“&š`Hs MfæMlvpé‰q'Â,‹îÄ1}„Ò¡JÛ›Ð)føCçibÎTz-Péi²ìWYc¥œä±ÙLÎhÖϵGôˆ,ÿÄzØ¥)bjÿBg¦|‘ØÚ|Qû z_FSYäè2u|÷^kz-Ý—»£2^Ky˜Uëµ2©VÎk¥ô÷ƒà¤C蚪^+MQ}ñZ<”1¢ÜN"C1¯¥òÇÂuÙnPñw“^KìhàÈÜØ*˹‹Ž!×̹M/á©ËÚÔñ’ûÊs&f—VzWU*Ëå“Dt¡­Ø ¶Z0èi„±ÉS¤¬dÝ R9ÍJGˆƒB’ŠÒÛ¯¨_¸Ý*åÖ£JézÝ•eœŒåsRý†èröÞÎo˜–Xy(ã7b…'Å ¸¸t'SÃ4Kj/ÃÜÊØD¦4sÿ"õ–ôSÔl"S³àŸÉ§m¼ƒz«£M nï)GЃà.»ˆÌ½õu®]œ³z—ÉQKº~rž¶°+˜£y\e”í.µuW¾¢xÝ3÷›ÖÐÀŠÆ8wøÓ®I‰ƒI+ͰÀ0ºrC$ ¡Ûh_EÆ”¤•öÞÖ·¿0UŒ.;¿b"-¯×ñ+}¸é×øØçšR=mN¹µ¶L´‚¾$áºÌ'éˆhâO9ûIQG~/1¢bŸkŸJ©x-~aÂÓ·¯Ž:eµ³¯¥5E$ÎGÉÛªá³}o¥áÃ:_“îϤ  |žž·SQ{1f•FïõÛ‹*AtI‹%¤@o‹ð]±`MŽtß±' z1CøywGžµ ·dïL’KÚÇZÄ]mè§1 Ð æ¬þÉ-þyVŸ¢)ú )Jñºç)êY”s†á ¨dQ)Ê•“äÛÛ‘"rF'/º¹Å77-DŸ‘ÁŽDtö@b̶¥Ùª*(zÙp[{šü‘}lŒ/=šMg¼Ðc“õ`l dÖh#Ò$ˆŽ¨UÎü‡g‰xNS®@SÕ}µùõ·t¹æËu#bL'à$b»Û¾Õ•šðQMžŒrñs@IÎÉh_”eáMÔ›è=ÎDWY`op•ŽCtqHlŽâÓ¼ÝQu]è¡?Kèñ=Tè±;'–ÀHV¡ùä3CqT55…&Ãæ @•Xó5=˜mš ùú\Ӄئú¤œ>P§gòu˱ J [îb¾º“8fì·:S†øÀÞʉ±ÂA…È£<&ƒ8ƒZ´,×-¸S1’ Nr¨ÌЯFyìmpä`9¢5D¥”þî2ôgùV•^Õ—)à¡K7O’³Æí·.¨Ïlmó 1Á'Xe§b’·×Šƒr©ˆò9x-öóE±zµ…cá,g÷§br8sæ+p*FÊZ©S1¬#Ò8eËO ŸqfY½J#VÝ×ᩘ£êdW1™'Çoè]E«ÐU¹«˜³™¨Sr^"‘CNͱ wŸ.‡œ&{Ü¥.5’và¡ã×K¬º§Tð Õ]¿M 9ĉ[I*ª6I“µ¶òÈÄå@ŸÑÇcœý\ë–m'¼Ê¬Vq âû­ªÊ‰×Sô¹î‰ÍèƒY÷®g7”Êu f7Dzßîf7…®6š5‡"TæáîU²Û¸södY:°×‚„ýÓÕ¦(‰{EVTV½ºVTû§«MQIýôEQIyRö—S7Mä@ˆ³VÌ‘¨Ê’Ëté níÉ»€þòš/b5Æ·b4Žˆ=;jZŽ"{N¦ÉLÒéÒKR½-:¡²\:‘³?г@euOUÐ_bsªbT:3¢:xKLúOh³Ä¤3Óõ³Ä”XBImr D/}pc¶xkD/§½Ó²£²t¦Ðì²ÖÀÓCÝ•uWW–d?(´º’—YómW¯ wu%k©æ?ô‘öðˆC˜Ã'+szYI™A'&Å9sjpuñ÷C&¦ÉKq Ï|©Y:°'ÎöÝœ²Ìì8çÅ•Ý'”ìÙqrknqGŠç°Š¥‰˜êRóÆZ'^k££”ô·Ùð÷Ò$rÍÇxBæé—gYHJü,$‘Ó5û52½+ÆÉXáŠuœ‡²:%ÓZ#ÑËÕ|BrÅKšqw‚%mµÐ¶xXŒòB[ر ŠPu'XGEtW’ˆçSg ‰0~-Q J†OÉ™ Q¿£¡Éñ\¤LsÐÔ—Ž‹Hû½uâLŽø¤œ¨)ü²)Κø¬­¶è–ŠbªœL’ÓìÌEZÐ&ç/¨Ì~gˆ¦5-˜œºªx\· ž$#Æd,Šn­~ª¦®Š¡gÿãôWÇ›ŽÖ@[tE%"H5œÔ:i-˜¸%ú#%Nº›Yµå½\4A‹ZÕÿ,ˆžIQÝ„¼= .›‰¨Ÿ I磒úkq4>°±•ã`G±VŽ`É0DYÛ¤F_ò2u4‰(ÊÔô>2 “¾ˆ¿-<ŽMŠÎ£Çä¢hgh°F4‡*pÇ8JMpp Q…šñ"A•$d³XB̳i#QJ±þª,-ÕÝú‘©uÏQ‚&ÏᓬŽI´£ 9M NÚÖTÎÔ`½#ÁöØEF1PDó1HÚÈÃy‘ §¬$¢}x’¡â–xHQuqÚó'•@eíV¢ˆö[EiÍ÷®(­õ_QEÊêRQ¿ç(*«§ôYQ¤ŸÑ—¹»–WºrB¬5}%#=O¾Ù#5ç"RÇ\]E ‰³\“ñõƒ¨I†*E>¿ª[¤ÅZ«·‚Š^²+È1³«(«l O‰Iêã$üFrÁ-Áò8khލVæ"ª•Àƒ)¡ÎƒŽžã§;ê0C•¤kK‘G]¢`,§îz²ÏµHÌ[d©ªH!™ÞãW„zkA¢ÆŽîV„¸«=}»+³Žt¼JÛ¬i.šÐs7ša&gýK:}9í×mVÃ+P¢òžBZŠ£? ߃¢DAíÈWØ¢ â|ÓH{E‰ÌùŠB W‰¢VÆ¢‚¢„›"Ôü”NoÅåOÎËŽÙÑcƒùu‰äPé¬I>RŠ‹©#^¶Ê#ÈsœŒ#¿ôçN‹sñÄP ÕëÔ4§Ý³Œ #9b8¦e#9Ý3Çÿt€„ñ’,N½#(™’üý¯$¢«£«’’xš7n¡v‘¢—‰”"ò¤u«n¤§vG·ÚD©zÖU#Iõb#IU…¶U3¬ð÷2E|2¡ßÁ¥õÉ V€üóЇ–Íï eönh—¢5€Œô?êÖ’ûn(óûDй*(§ô„ÏÄÒfþ ]ö-Ã'©:­1§ôñ{vâ*¶¨Ú/éåÕ¶è$faöÊR΢“šà«9~rž6ëïn–ÝÙÊ€˜‰c„düdžF’K1Éù»©—B .$ªœŠ,/çjCWY×K/#hd9{ñ!YÁäBÙR_±¦lŸ-Cµo8­„œÌA’-˜³®uàš²P " o[¯ƒ° ”2ý_­ JjO*o?Å.ÂZPZ©×€ä­9Ø ×Â’¡Ze JV ˜¥äÏ;1M Þrf@Yüè‹&‚.”Ù¼ýU§èXW3Ô+'væ”)ÞJU!+\åd ¨cìd•™ƒœ×ÚhœR~*d™v÷ÆÑÎËË…¨RÄÐ/ÌA·øØMõ sRód½¥‡¢÷êü…<41 Ô·âÄœ&kQ„³Ðz*•s+[xê‘—Ó°R?)›–²$.ib2«]wž?œ¹UÆt)^ ³U»ÜP)mkª[y½õW É Š· '£º¹‹$N[E /ªWc¢lÆfÊiÏj[(SMÎAL-Ì‹›ôäZU/Ù‰\¦´…¾•«(™/ùÂmŒÈ¶èìSÝÌþ MK;™ý­âi©šÂÄ*Ì6¾»©½œø¹v'ÔWyÖoId¡·ž»,"±®ËÒÈAÙ.×s™¼)ž(LÏ\tu’{âÉùi²îUÏÁZ|S.zÖ¦§f:²ÎšáD}éÌìÈÁ}ÊØÉfª.’œ¨‰¹gšV—¢ÌÅ*S”® WÔST‚ó*QT‘×®ò:2r'œÃy¨,-c~ªÐ@Î﬙ˆsÅ®nŽ49½‰PEÈÇñt†¤ ˜H±¸KÖ+kf¤o¥"¡]Á¬ø\ÛΔé¢:¯W¿¥µ´JÕ«E%LtµÍeœM䎕ÈÓ¥E0Euñ[I$54be©#QÜä/êMݦL ElS\ š^ê 4GÔdð–W/tá}¥eYˆÚ •µšhÖ>0ì6+;adÁ€*Ñ—Ð bxìˆ\7œV¥  ìïJ¼¨DˆÖçM¶Ô•‘(: —#X2Þ(‚hܤ"¢rßìbÈYo#Su„$ŠXñ©”o|¹ÿR'`Ò$8«¿òç@¤Ø y”}­"Eêµl+£(Å«GE­‹"½ýöâ*TT~OéÚ¢:R”+' wW|‡ŒWU„9*êáG‚*AäB0Í'PÁ$•T¾âO#¼–9e9‚©i’!&He(pŠ•Ëef&Èßg’&Å^`³g –¯(B¨±v®£±RTÒ¢r(]õ¤(oQ\ºeåIJ-Š{ëÜ¢Š(йZ!lÍIü¢n‡HÀÇ’d˜SDÌ$ùØàþÂ/ŸÅ‰Ñ$ïÇ5¹¸³Ì—ÏØœJæÉ<ÉŸN"šNt4Æög\¨{‹ãËqœ—9¡–œºçh¬ˆZ çDqS²jÔrŸrÊ×8йf_§œ¼øØ¤$ræÇÜ –è$üë@jE¾¯Û¤¨<&:eÓP¶¢£ãL+àä ¼;þUGFµLâeî&~&R) Hr¸ôóúW9B…&KÏA´`9š*#&jK‚ó~ _ØU·¨Où/ZêS"ãR—îŒDX€¤~LnO"ô—$g®gOO°ðY?‘i•9¾¥ )§¹½! CJ iVÒ’¶zÀ )/"RC{š hæ·V5"Yô ­aC<‘|$¢†HMn•<“¾¥‡‚B ~9ŠJ%®u:µï+ÈÊ—MoC"†4G™ùSø¶«wòÛ½ŸE×&ò"´C]A^”è7Æ&¯ÅþA`ÚG\ýÛ×ZÿVH—ÏhBÔn¢ ïЮ›.“&ï¥Ùͨ¯Ñ] ¦ˆ‰öI¤§ÒËtð=ZþPâ®^­{ÔÉ×>³Ë³u’Ú·ºÐ_¢N©:’x@ù?Eeͳ‹l=ØýJžÖ}J­kÑN&¿ðš‰þËe‚›‘´Áˆƒ^–”׈Î.ßËÂõŒP›˜²ŒÜp?ˆt‹ÖmS ¬.Ⱦ"h»>A¤ùœ/O T½òŠ4ÊøÄ4©IRzŠz*ÒOÓým,¦µuêm—%õõb2§¶ÔƒÕ÷ –ÈúÆ‘à‘îSi)™®Ë?éÀ'Ι¶ÎõÎÊ·ùˆz$í”Ê:»õ6OµâñE}Û+é$Pu ¢0$\†0º ¡Y¾ ¤ü: )—“ç (¿ÏåŽB!{(¾U}Úõï„íf÷ÈçdåÇüRó;eãï¬ò³ø¤ÒwQ¿'JÓG¢Ï§ëB÷ëSf„ê‘Ì×iyîx’Óö–~>$ý ÓÎíÊÀã’’Íø=™$}®gŽíäøkºð×™ü©ôψ/Eõ ‰}Ý‘¼ÒpY–.Úô§,ûvùÄ4'üu{~qF]âŸÊ¿‹z–¿½ŒÉx.Ö±S›12ƒÞ-+¯¼¥ÐÖ—{]ŒZò4Y—ÈÄ8¶ÐtmãSöyMÂ6yÙ •ògÕ7»þrS&a#íÛK·3+»ªÒ ¡ê–µ¯R©Šôvv€ä"´íø[€‡Ž%Ä"}àôdìŒhy¬ ßäăaJ|ˆÊÓ×EøSTWêÔ[–a KgýSÓYô]ëˆy”/Éô)¸Ÿ£¹ ±çêÛð5s)Mk‘ª}Ìü\ɇç>”¢ù{‘1;Žù¸ó÷õ‰ù8ÇY|Ìèc™®qÕWc#QÏØäN%1ïŠaîÃóªy2àFÄ¢[hb¸aòc‹á\/ÁõÝaß) þ(’ó¾Ôödqr$ç‚©óegž ÷–_Ò¨‘Ñ3ÊËë®æ˜öšG@B5eUMÉß®½j/‚Ú‹ 62¸ªG¬Ò¹ìšµAÀÓ”}j:1&~¬_1»‚ü¸|Ê®/ñ‘m[(f ˜Çº˜øˆi½h¿Ã|©ŠõXn|’Ûß²äÉå×BéÃéϰ¢¸í™ì¡ŒûX8¿výš^³¢ÚE¡žw†ÜþãÈÖ-MÄιò#¸óÙ,¿HјîÒàµ1¥Ç¼üz‡ ¶ÊIïÅÞ²êã¶ ~%ʶ Ñ琢Á™¯D;V]íëòÛs<#¯gÚfr|Ò:d4¡ìë¦Rç9!ý^Ó;kÊmõæ=§!ÑúÒ¸êTê]ᇯY(œÅ1Qù°ÏNׯn£b}ËÁèFF_nü¦´““Ÿ»Ò÷%½3(*çëÄ^Ÿ“j/öøG8â¸"Åÿ¸ý÷M=ÇJ‹²äwÆ;çŒwj¬p}ewJŽ,~Yå'Ç;R|¼C}Uã¼ï¡yT¨çE¢c×¼MÝõ¿pž¢Ý亷./HØfy ê¯ oc÷ y ²ËŽ]9-vèOT9!êGz|¥Ú‡hù%ž”Oåe´*®‹­9¥ñ‡¬¼âãi©13tÛÆê£I_x¬ÚÚôß(™/G²/êõçÔõüæn\@ ß´µ÷Åe”Z¾#’iQ\’öoæU‘˜â4¾f¨uƒvåvPõ¯ðü×-V'Šë–ºU¬”\*¦EcqÁøÔ‚¢ó¡ªË›+Q,bŸ€ŒU´? 6ðµ"w¯b¹lôw$çgIû³æSÔŠ‘Ý>‘qb¼B³÷‡‘®ûŽ Ø™Ö¯L³í¬S;µéu[ZuJ·'y´Ùºzdsq<͵5˜9;ÆÅµÈ£¤ÈË÷ËĽ€˜4Á“ðëå ÖyTyÄÙ‚E/Ó½æ©ù*¹øZ¿_Ìn­8V‡Ê?•fú¯¯8ºn;Ÿ¨ U:ðü ­è÷òøó@i@‘Ò'Æ:Î'à¶í¿ûöí«.--Eûöí¯2|‚œýw.UUú~øÞ·o©º/EKûïÔéûöÃ7àìàÐK‚–ÞùèUºtG•=Œ‹¯÷í‹«1ãïãiœÜ/±´Ò>þÍhÏ}K‚7¦aiŒ¦SÄ>!ôÑþ°™ùäú•þ4m5áOS S¼kíÉFTÔ몃ü¾Ø«§%:Ÿo°º«SÕH¤¾KŸ É5?éKÄ^­FÅš€¹ôA)IOh:}Úún),ë´’\u:þ®йcä·OŽ=éúûÛ­c«}k™/PkèÔš+S~Ÿï‰·Ñ‡ágô!ÒxÛFaPŠˆßo×YåÚi‡§¦uêœw¦£_V·@ã¡<÷H‘œ‰ïÀªC ŽÈ>¢pYoVŸvõ–<­z!S¤eÑóž0™fú¸>ÛÚŸÝ=ýÐÄL*¡ùyrýEþÅì·€œ)sãƒ-'Ò¹åKE›ªõ"ºN näA{L8]®³x(Œíý¶·ƒ÷š°,×°êê§M9Ò‡)yB¹weô@¹ŸËÓ »¦ÔÑ•K·E1 Q>×\ò>¯KªÝ«¹FrŽUï)ȶ›ôx4Kþ  }ºF®üå²SªÃa”.¿µVjÎVM ”+‘¾W­(¿ é¢MóÙ$,ÅfLXâ{“«4†³Ø]¬ýðt%Ï+ç,,OQZç¥ÑrðÒg² ±»aœÇ\Û-//Ew°´e"®™ÇI|¸›å÷–(Û~£À3–yâTÚXÒŠt‘—¨r——ríYÁPi­EÞv} ÏS*ó}A9Në>624¨ÆŠ¤Ï’{Ü[åøHíRCW Uºè—iñÉKËUŒß±ïîêû–«·ßù‡êþ¥åèö}wUïÜOxúþ¥ Ê®YºÎ ÷XÚíûïߌûÞ·OÜcyÅ·öðûf÷Ù÷~º¬ù*K±Á ùsçªõ˜ä9°¤ÿIõ)fíBû¾?}Lº_Áþ¤ƒ¸PùnT°íÙ55†ÙcA\€ËFI–ÿægcd{ˆsLbüË_RbÖT»¥™öGõ9k­ÃÌKÜøÑ²Y×~³ôÎë Û+Dv‚ÝÒ »¥ÈniŽÝ.!»¥Èn”ð5²Û²ÛôóR“žm·aŽÝ*^1²ÛÙm˜šÞ ¨9'•q_(ÏT0{ õ™}„ ŸÊÛ\>îÅù˜¸’*¾ºNìž™í‹qŸ:Íñi¥0ˆ¨eg†¯3Ùv~\nÝ ]ë„Åõ¢n$€ø´ªêdæ˜À§U•>JÕª¸f²?ž#z¥sõÌóå¬*æ–‡c“ŸÚùqŸ(¢?§ýÓÊɵÿÌñËÄóik3òÊ·ãt›¶êÐIJ¨ â¼*¶yD§Ö)$M ÷p‘ýæ®S»vaµc¡1\ø ŠÎA¢sõÚ.îPýV­Ù`]Hý¦–§×n¨ÝžA¨m‚Êõ¢÷{±OÄå*ÿÑÙ>³\'–{Qf¾®ö}ÔS1Ÿ×±Gr¾žÜ+é³Öªm»/” ±d¥Èf [Î×a.- c¯ÉûåÚ‰ŽgÄ\^ña`í¯ÛõW{ðè™|!{¦ÜäÑ9µ¦’Øß& {©úêq«ƒvı^k¡¡Áqû <²Ö\Ø€½n@9šÔ“~†ˆµ˜¾/ø:©wshM¨íZ ËW©²¸«Êò«˜KÒ‹5”0ª2šÔuö^´®Âhtü&×SX¦½¶R2y¤îªªÞ Pǧi}§z^Ž|ÅÅO%Ä# Α¾ï›ÚþÚÏWù8ÆÛG­™ml/XŃl/8ëÉ‘µ¯¡*)Õ8jâ— ”g1Õùh5p‡‘36¨1 鈷™8ŸJ-~¡·ƒÑ²4‡êòÔzÕã{B6Wr¥úhöª³¥%1pïÅ胘ÿºHÃø2ÿem™NÎ÷£—ÌzÏ'ï«kËŠ?1{Þ¬-ãЦaÏBpžLÖ4¹ôóTÊB\˽ÈÅø™ç’¾ Ëk%ÛggéZ—1›àóå¡ÛçÛç§ ÙqÀ~pïͧÝã¿w/_3œíÝ/ßöï%Û‡'_^ZæéêZÀ2Oç<‰<ÀhàÚ4q,h(¤E2„a(eãkãü›ñ`Æ?[G!\°4Ñ>B.f¼Kq--/ó6æuf2ÅB.–Žå ÄY`Ž/-óg‹E]bEú_¾[œO€¾Ãõ'Ï(\Ø´øÎJјSxÎé–ƒÆ|Þ‡¶ŠèSúÑ"ú\®Š3‚ }–õ3CÙõCsw¼Ó÷å8-Ê?ÌŸW°i,œÍ)6ŠsD\VÌ}¼>˜3œö=Çç|OÆ=yNˆªó@êÝ$Öù!ù|¾Fºa~ÞøI•7éÊo/¡[M_)¹XÚ ÃYrQyË%hL]„ÕZmhô¨ÎNq³߬,V|–JË7´aZûà{ª}–¡0°ïÞÛ‡vÑ>µûq&þ,˜ä õdï!Q2°ö#‚†Ï"qJ»—gÖ"c”?÷ÈõÁ] •勘…çá: „V`íßZK”ß,ŽŒ"ˆ«äw‘˜r0ÐóË ŒðjUŸ/¤ÕÈàÙ±5zþÅpÊ/áuyæy(\Mäþ%08‰ÌsRêÌ"Ã` q~‘êØP¯¿ ;MóÙ&Æ/Ü$Ù X{è¿jb|ÔAö¾-uÖ†Í:šsx¿àëÂâœ Š©e̯ôLôšZSkÕf±<ŸËÈ9g08 Òx=B½v%ærm5$±¾+»oSÇŒ»Y HE\äÞ[F÷–èR$~aWà,ÖT8ôRwñØŠoFËïIòßöØ“?WR>šäøobü÷²ìDºñ W×jM@ùKá×ß·ü¥ùf4alÓÄÒß.Qã󙯔,Ì›˜YæSåá¾ó¦²çȳäÈc|)OÿmÓ3?"ô,üPÒ?(]§µ¾çúlÛ—£ñ*è´=–õÚ¶Ç’n.c)¯o,Æ@äX&æ±£µÿŽÍ/®c¤oÜ-uhÆg9‹¶àãlÏ>„Øû4•’yžt 2Èã©¿»Z…êr[ÿ-¥8·pbï¯`àv°wÌÉgJø™Ó(TÏ€ò”нçcËKéì32T¶hÜûö·Ø«)˽-µwG뚘tµ·´A?Ïböû¬kDFŽRhòTJ¦ T·0ˆØsËêq v¶¸L✰>‹¬ÓtF)µ}s|dÚ=×TYÜdû…Uy¾˜?'hÙA;{0û6¢ŒR©a{àã—¬ãCc‘:“4ù¸.¨ÖÇÙÞ&[ÿ‘ÏE¥J™½µ0 \û‚–?ÃMÔœXîʳW¨ÝUýK%þZnñnK5–2ŽüÝæÌ–Ø'ïøÍ{NDÛƒ\|ß•ªç¨ÙËee¢³Zú=ZR?vl$Ÿ±£fÏó|”û¼3&?’%Âí*thöweÈô%ì+Fž©Ê»'ž•‚o¹×°Oã{'ꚣaiì›­5³´¥}lo“RŽ3ú¥ riX:ûf÷Xyì™,†³4†ï["ü¹/öœ{ÏOß¿\ÝOËœžË#óï§‚ïÒ¾Hð“eˆ{e}ŸÆò³2y½)Û²¾fùyý—ìü,KcüÛåçºà{˃º\©Ÿ;öÉz3Åâ=J&†s=I}kí[NmKf¯Yí¬î©6?ÿCé2mIîï°{Lï<=–m&mC´´ù+….’·-nsÅ“ërÄë#êµÌùsÝR¦'Ð×R™ñ«î#©{qïNnWe~ óZN·o±®ÅžYIôWiR.qÚ` î)YÅoP¡#¸wg m´,î§úÞ€„1Û½pðNÓ'x–:ã—%â}`Çò4°ËM£ÚÊ”?G Í…ŠèíA¥æ‘c‰c}ž@ûßÜ2ì:»õ‡‘¥,¾ XpXvm„ÝSÀò°ûùvDåÜ/­ÜÔzÙkr…Ú1YŸ¬¶,n[n[æËMSæ¸6Äe¬‰BÄ7.³]¿¨Z*CŒ]ìDº8½T‚û,Ýð2mÀhIÈè$mHˆ16ë>á~Sžö‘yë…íå±|ŸòyyÚûÇâc‚”¿Cÿ˜]—NÒ3d)^^[ÿ˜-g':ΛW¬”]¥ê¬ u«‹‡xgm§4æo[š²—nôÑþ½vƒs¹c5Š‹dlcÓeÅ|í÷R•ýµ³Ž ÕÄzLz]³ê_œ?åë ÉØ”ª=kÒ¡²Û­Ÿã= Gï_@¬9U†…þÚ¿«Uä‡Óõö^R!TïåÔµ]o!¯UoŠëÐy;8=÷Ò/Dœl÷·_¤ñ=¸ý"}=Ñ}'Çè)í’ÕŽ¶OJ¿0¿q„l8H§xq]§õ‡ØzHV ‰wÔÜ8è:Ͱ”qNÈ'ãA¶†ºœ’Þ!NKc3?Wst´Îl¥§ñUùÐþ**3¹¾óØ·;ÝeÔ;SOB¾ˆˆSé½_›ª}n–.iº@¼c2rù¨ú†9Ïófê?ǯ´ó9i¶ØÉ} Y1~jÿÌY'ë¤ÌLþúßNËìEÿÔ)—®þóÚ \Ô‘‹®œ\+1+3}|gq/ÓÍr–qùjn•®·ÆÏ® x|‚ÓD ŸŒïÛé·½/c¯ÅÛ•±†úî´½:µ’3‡VÌlðD,LœxÁŽ—“׆?þV2ówÍ9±@Ø&Î^iäÛz§}ÂÍ—>Ì·3e[+óÒÔ5óŸ+G: ¨yª°.H|FQ}é°}:ó>ö=€bÜ!hO¯n¬ W7Ž ËµãÈá)ùÜž ¢8¤í\Pô¥(ª°óÉRŽ çÉÇè2ð·ÞßNSÛ³R´VŽ Œ†ÓôÉòÛúÌ’"- ›ë’37HÓm¥¬ðì¹5ãÉ€å5xT- 3è\Ÿª¼ ¬Þ–Üœ¶;>*ÈÐg)CŸA†>K]è“–ëþ„ÉKËöw¥Ü½?Q2TʇÞÌ!Ñ?ÛïAòýž Q¡gêä/s}Šgm}V‡ijl–Þ^b)%™ÎöÒÚ+öЩ? ëí¥ö¥*hjHïµ¹mbâ Ìö Ó {ÿO¹Þtì©uX’{u²\ù]æþ„šØ”ªöäí%Îãàõät¥ÊM¶WÑ^AÁö²ÊH]ç毨î·Ùþ ûƒ÷êÿíß—Æxœ²“„€Òô½„Ìñš¯ÝðWV:^Yùø‡ øä òÏÓêóEu´’:¦hÝYçZ%kyÌï{ÑU˜ñ»~|­èþbŽîH†_8 º£F†€òƒ«|¾mð@é1k?f=¯¾B6ÈçI½¯Ñ;óüì5 ÷[Ńî7>SžŹ7nLêß¼çu!Q—Ô3X3ͬ_º=§ÚyF»uØÎøMјͮÓÇn?(Ýß 'ϲ¥ï¥°8ãL·wGá0¥k†9ÄÃÒÄŠqÌ» ©ÒNÏ‹)PlcÅ8¤§gñé\ßÈî]ûO^»sœ´=vצó®s!H³ÉèäÜadøžâ¶fÃn ¬ìÖ¬ÉÙkzÙmÙ~]¯˜­²´PûËl5#ÝÖ‘IH†mwÛ>=C;JííÆwùÖÌ3'æ¾½Î-îÛ¼ÒúAgõîv|?xñ>Õ¿ŸˆÏ¨gaÜt®ƒ€lKó>…[éA2½Sù;…€fÆ3¡0Oé;‰ù;±ÆgòwÉ¥MÛsuù¬²5×Ǽì|æžÕ'S|‡KŸŽ?GdûðbtYå†ÑØÆhãFõ¬ròìEäÖÉ=$ž‹ÆFϨz†<Ô¿ãLÕóì½:Ö¦2îvžmÏ‚ ›ªé¾:ˆ’éP8èØ<;ëEééýµétÛµmP_gØ “Št7²Òÿ³cÓÎm:Ë?'íÕ¶ïbtYëq¡Ó–YûˆØ–=‡âwí-Û§X*&I¶W ß%$ûŽÕ_ÌûÔˆyÏyÇ£èNÙÍQU¹<ÿ¼ó¡,›Ïê#¥o]!Ó>³|²öÛ©þTAúHækªŽlî&y™5 Q†É+Ú—õ/+o¢v:†ƒ¬±@îÏg¬?g=íè𺵰a»ãú¨þ¦¼÷(”×¢¿Ö@÷ëwáòÕ{VÑ<<ñÌšS¨÷öbÆ4Ï0ïvúí0¦í4þZ5ͬüAì®ïìïxœÎ—=Pßî{ˆÕû"ÓΪ˜@ƒ+›s¿Ì%ÛFcü{#(m“GÈ—ôíè|`ä?!úÝj–V‰µÏvaCÙ±zÿxÌò¢3—ây!^FÆÊNõùJö^VÌ~T-¦¥¥¨²¿‚|¬Ð}ÈÊŒùËSQ?9Ï–ý§ÄøÇH†8½þ)í%h2Þ1™ÈŸó[óig¨©åˆ|q„Öe‚Fî=Š7L¨yYF©e)hGR÷r&rMÑy·»öž±NŸ¶%ýÞû·Åñ}*×à¬òÅïÅ#}°÷ãŠXƒ¿`AÜãïÈà/…Wqˆ,Ÿ];g\)¡‘õ-ãúNê•b7–îM6ߤ‹õìÁÚ¿ð÷âñwqHsaý‰Z÷-Ô¡J¯[Šÿrü!%Åî³4ü>fóÉé鲚”½+™§±÷èÀ7Ó ölmÌÓ$È÷¢Å2ãËßÙÇò=úÐúÐâiòœKâýj<]ý3¢Ñüä{‘±¼±z'вÃo™Ù¾Ì³dÞ1­å[6ïKЉ]þ8ýmÁ w7‹w>‹+éBè”Xü–—îæïxm‹Þ‰-ëÔK¨ UÚÒ³<4ÕÆb=N ”äoŽS1vÄò[¤™<±î_8O‡r³søa¨Ç7îÄõíÄ4qÍé‰ÓbÜçDßÑccÈÊÃHÅîØóq/ŽÔø¨äצn1GMÈßêÖüƒX®AÄIþÆWqöÈáoù1>^šñ—ñNbƘòúÆ|ìÕòȱ—ßDžòã1¿eÖMYÞâ¼—"Õ†b‹ƒJ¼ßâOeŠ?ë.ÿ´¶Ý·o_UAV:zÇRuißR•õe†² yâ꽃ß_ZºƒãìþKTà,Ý/1^¥}<Ï/OðØ·„Ê’÷)”ÅÒ}IÜSy¾_§Çñr€eæåï¿£ª|&O!íÎý2Ô |æ·´ÿNž®|æwçÒþêþ;ŽXÞc×ûöKý- šýãW™0ïØ¿ô Ë~öÊýòþ’x~,Þ!C›2½ ,\À[ú_þî·Xа4ŽS%Û~1´ ƒýwR‘¶$~ãXÝg×KmÝ ÈþEù{¥:ˆÑy_ë¡\LŸÅ ’÷ˆY{Ñ}HÅ‘âÝd–/CïÅÒ>ÀåÇý‚œ? o"ý\`žgCç[h }N ¿R©dÉÍ^NL„Ø{Ñdýä{ÑDìÀÞ“êÊH©xWW'ñnŽÎMŒ&ê¦K™¨µ-jÞýÅÓݳÖ}á4ŽãiK‡z|OÈÖû2Á“êØN¾[9`1v)"è{Y ·ï:3qŸÒ“‰ŽåCµQ uÛòëP¼ÛMµ±´-݉ùEå9ó|­cM¤»@þ¾¨¨£ZƒÑöQ4f¯ ÀŒ}ìPŠìL÷üë"üåʜ•­°:¢ù‚Ö Ñ< ´æã–¬!Öƒ=ߤ,Æ m:•.ÛÇÔ³°Ý¦û¯0Í>3ì6Ôëj’>ÀkD&^£$¥Ñ¹(Šç.ŽýdÑp*vtó&ÝúT{áºâï”kŒú·Ð(â!pc/‘ò/é¼ß‰¸60¿Lùoœ„bí„(½¬í‘áœg(~W^ÅÅ„ÿü'Ò¶)A²òÕ{ŠezHK"–¥Ê'Øtª|¶Uåê—¿»õg³Ìê·ñ(ÛÚ L™)é·E,MÅù_±áÌ‹…,Õ†hÝ%’kRz¯ƒ:ϯ4„±³^bnÙºŽ„¯-ñµ\Å[ó§fÞ«ú6.[ÃëÅB&öæ.´žçÄ<ºÍ%‡q¾«nгNiX•éÕ0dó‹%ù›ŒKÕ-ÚRi©Z©Àœo„Ê<´:PÚoå càSYâ¼XÞ}w©4 y²û¢?ÅUFûÁPLÑïlÇQX¢‰ùH òÄ´ÄAÈ/¾i i?–4±¦]CÜ1FŽgL_U±Â#‰ë3”é+Œ«X‡Üw@+__Çø[µ‘\÷gk­¡jKø*Uª´"h+Ò§èqW®I‚¾"q)ï—Ø;0µ^ 0Cùð mÊÞ[ªÂüÚM×ïɵ*ìÖø.õ{IÆ Y—Bö­ô+ò”*ûWln˜ðgÒgšßhq4çcµÞ\`o¡RÎÎcÖùMß Sö!€ZgNÜó\ÈTF1«¤·û]€eàkA¬Ž2víEýû°H†ÿM1 uìcï•ðò‰É::ÇgÖT}Ü}•£ßÊÕ}•½µ<°e@ú[ß:†îZ‹'MŸÿ+\͹eÿç׌o)Òí€~ Óð†±¦Ê@ä!w}+¿ÏNñtû‰ûeAW …¯!ÿ>.Œ¹• UH‡x|ç@Eä'hO‰’Á*©ÜeÓ±ßÌYXÆ{i¨bÓñJÜ›‚ü5²Ò—ö{»¥D:£—q´¸ÇæÝÉC¥Ÿ°ôÑ*ÑVÇa¼«ºyHX–élŸ©l•[‚q‰ßSéªÎ%³ º‚8u|h(Ç"¾ž ã°ŒVù[ÀBI WÙŠÉ@)®î_’t\ODÓ•ÐxÆd×rH™”N°’Hg:d2°t~½Cœ†¨>•„®Øï«ß$†ÀŸãîXÅÓ‚P¤³ñ;°í®Äô(7™ÍǃPcçé ¯ò—‹§‡‘þ]lÛ‚*ŽYY˜ŸŽ+dÙ#å —gdsÅ–Uî7²9Ë#û“üMfÐ ë‚RUÍC»Êº3g<ù|Ê*\ãÇÊÂåTÊ0&Êr¸¯”él“ñ`yYž°z½†Å?:]¯Ñ8ëËÌä:IY¯Á²š±)"œ§!I¡SëE­×¾ÉtŠäÇõH]Çq×k¬3=öz ¡Ž~ñÚ ÖIÞzÍJÙ…sî&ëLIÑ| Ä|Ÿ‘‰3;xþ»ç/?w^nλ‰¹u‘y¹œ7dÎË]àeÂÜѯÇ|ÍÄ5u^N‰kϽÍËcåå}>/æU2sò¥ÐÌQp¿K+”b9E{=—uçâa\‘畨5‡¹L€çá©åÉ9qVy¬=™~—J%¹î¡æûBïTÎÙâ°¢ïAœÄÁôk)?Íò©çã–‰³í¾(c䛃ã‡ÒÎ{¹{ÓYó¡/¾G®“s0Wþ»î|¬wøüÄ™ãà9XR^;Mé$1o”yb~v@ö½¬ù_“q¿–ÍÁ²dPz@ù;–!íÉ#ö¾ÔY´¤$à1PFð3¹ú\nú;|| :g]™ï‹´æ­eŒœ4Èõl¿¡øý>žÏOñš<߉‹"ù»‰z¬UñI"¿¬^ÃWxr ߤãµz½×á¬ík:¹†oêŠöX]ÙÔ:+Š%,ÚBkøFg‰±)F窳ÚHŒjíó+©3¶ò¯WÉ2ß’X· ‰Æˆ†æ¼®Æ©©+³I18Š^á±OÓÖÙcg|6c±8>Û8M·©ŒSø9&®S½/lÆŽX¬AŠ1³…h=’ˆ¶£îß`Ùij||dÄÁR¥„Ǥ@Ý×u©è'h|lß ÔÖoXbsV1'+‡¥jˆž­QqK§9gK6æ†ržŠÎ¥R9† T«jï]ö¿HîaG1Ì)9vŸ­Ïèu3˜×ŽÚk4e¿ûz%Ã@%P<«å¡ŸïßË=ø`Ɇ}¾ŸšŽç)æÛµ¯HOÏ—ÍÌ÷ž3…¬-C¹6Žæu%qž•§—lˆ¡”Òx¾—)Kž¬Ü÷óC…TŒtj¨eé¡úH;=mÞªÎèó!J7sDþ+wÚw«¹•m%÷6CÌ_ц¨¬ôùf¶¤ë £sɹ(*#—¤´“Ž¥vhå ˆË­ñ‹{ªdºøý_3·V2‡ËÆóo’œ«:Ë9·J#Ž|:˜ù™JÏ«;v¶}/»gœÑùo“§žGNåçó`i¬o±ïe&µ<3rŸ øÝËQÌÏL‹¼â\·8·ÍΆ/ó3Üw›óàKâwÒ—$MP"œn Æ¢%>÷<`¿婳ç’ï2•<à~LÅïÅ3¹ùïɲsàÁ2ÏËÞU®Ï‚³óäËòüv¬ÊŠ5_&GœV–<_©îDÇËZFeÅɲô¹w¢îËòbŸ­‡ôeyþ^•M$?ñ{âìLiÌùðºÊrÔ{Â߃.§ÙYZ6m*Ï2ài,ÿ²<ÿ$ãÏ8°Ÿ`¿“¾Dm;rÏÐKê·ã¥ýH0ë¥ W†˜ÿ¶!ÈŠÈÀõ…e`ûò9ƒå»ÕyÿýÄYhÆ_È!ó³ßŽÄý‹ÙérÌóhʶe×XFÆÿîeÓ§Oö{ÕA–dŠo÷2Xã>g•‡$ÆâœõB—‡åcÓy`Ÿmp°>Nô¾¤ÙsS÷á^ˆ~žûH´ªçd,6åsÿì3V©ó²¼óU¸ 1ÎEá`UÙÜ8 Q~>º‹ùbJ¡œGYó?­W(j0õÁ댲 "çžæ¬š áï/pÚ"ÏHµžÃª÷Œp}èskR¯eótT£ ‚æžØŽQ%yތ寠ócÎ¥¥Wì9é@Pu÷¦õ½ 4tž¬ñ?C°óqúÙ¼@ÕC¤G‰t†W+þ-g%/KÒÒÑ\—ËÊÛ@ߣzýòqŠÕE׃¸}&dñ±ž_ZJOyN+ –Ź+ÊpõL™þæãVˆâ‹ÑÆØÜ0d<ȱÁ<ƒÆÇBÈ#ÇD+]=£&Çj9ÖŠgÓô˜šrOùÑØy^ ?ËÆ~sžËKˆ•Ç}¦m™š˜%d~„—ˆ54¨S¦ ËwÉq-àù¹Ù:2è‰D¹2=K,Þâr°±&¾Û‘ÅD$Pq3Ȳ Aù–—Õ˜s—~¶OÅ#<ž[–zRmJÌ3rœ‡¬›ˆ©î¶Û^É€Æ÷Xä·òab582`=äÅ?ËîxŒÆN3èøÇ~ÖOŒ©’Þ3„ª-âìø'[êÄ`½ÉÀb;þIÆHÏ&öà1زȟ{È<:žKÄFõÌR^ –A¦­„ íüg_€®p>5v–öq;cÏÒ.èÕ3§#Ôè¦äSiÖù騬ëà½,òó½fdòUöó}¯¡ÊÚ3Läµéìç_Ù÷†ðN½Ç†ŸuÕÏ»Æí÷ÒÒösEz)¢j_Qîa²8áêl‰J/¹ë·]îßµ£S ¢N²½ÔRÊys~ž}YÉÆòYQV?œn½+G–›gá¨Xáxâ¼8Šw²Ö= °%nšz^\ÝÅÚµX[–k:l_:í¬¸x.8°ÎJ«sãJ'úýfϢ䌡Â~@Z=¯,l[ë=³¬ïÅB†åˆ&d bõKž™§meÐíÃæÅa‰¿F•³40bíÙ3⊑Aè—&ÚBË@Åï7´k -CUžÓf1T ÖÖØúHÄëLy=Øù6”:ãF$~Bõ—ëvœ‡~OJ ×óø=v‹Û{)Òe±ƒ%Ì–CžÌ÷› -\bõ ¨9_MõyÎ3¶ÄذsúÚØ﫼?r¹b]vÌ=-ñòx¹Hf^y™ÈuZ÷ù¡#~&BØ®lõL‚{-çšÛ[+‰1&P:ƒúòý61niZ³V,ýocÇwáç¬sD¬ÒZ陋²(9´?Pϵ»ÏH°¶0|íµë¼ç'šÓ¥û&•ÇõmÅx˜ëlâ̿ЙÀ…¼l¬Þq’ê£Ì³û‰•ŸBk?Tö©äûß(ß§ Ô³ì>F±kŠÞgÄ÷SÕ»¨x¯‚»·Ê÷ÔcuþÛ>§EõÞ)7^k¤ÆèMt¿”]”†ü=»ÖZ“ªƒ™ãÛã9òSꈖ²êB9½ÌÎlÆè=2–À{¤Â/&öhƒ®Ï$í¤„c}®UŒ·:FÐçP— Ç”f6™*‰ñ^p”ûµìYZ2>X¦ó‰·ÃÐÄ T>CÆ|ŠÔ;@œu ñczŒ ü¸Ú#vi³ûÑ{àÊF„¿0ûàj܉Ka¤öÈÙw%® 6汎ÐE`Þ‰aï…‹²ÔsX¬žK•èî¨b½?Æî‡+ûÅï\q¾RŸJNþ¬ãDYJïþ(³Ò˜m UJ–Yùè|$)ñ=zîû®k±gθ)ÿ+c`¶7Çñby®T¶Û÷€1°"ÎÐi õbç”B¾wpUpO›g^‰½§ù˲Ô3Eig*y»T¹ú½(R&%{–¬ßNåGcû¬“YŒ±åïÖgˆ<×°\ 8y†‰•U‰c.ƒÊgtÌ©¸ªŽüŒ§5÷<ÄÀÀ¾*ƒJ¥RÝ70PM³{v?¯÷ÊC>mÈì©Êm]‹gÚ"ù{Œ)šWò–ãRf¬UaOÒ7Äòžlo"ÏbžÏ#ò=âì‘Y·—þ$bñˆ:ƒFE «Æ*Ñkþ‚§Á¥¯£Åòª>D¨ì3².<ÿ¥ïb}§Õ%Äï²T㈬7«‹J³äRº„kˆc^ì{ê™t6µºTrž_ ×ÉÆËä–í¿â*>ãÇøí¯TreÐó)Y÷^dàãÛ¿Åc„xî_ÐqBõ|ŽâÏÏÎ92È”œ¡|Ön²v²d€¸Ëj vN/–zàv’"ŠDY½È÷*h VfI؅Ѱ†,•Ä=¶gÁ÷Z#öÎ›ÑÆò%*Ÿ“eþæ)U#«6Äü›Ûc .¾"ÒY{qÙ{%ú’î•¥Pïóð!KÄœfˆ}ƒ¼Còšñ–£ Qg*aÜ`²ERGlÏ .‹i׫”Où{>ýâ÷bë%býÒþÊÜ ëÈ®ö p=I®§Êf›u¡?YùŒ>MOü9[V¯¡P×Iø° Ú2´Ÿ§— B`~Vé)pô$ùyzbÓ§ò8ý7Èãï+<Ÿ#Pû°¹—9àçôÖ¿#iMÿRq8–#½ŸýgJCé‡âR,û¦~Îì=Ž(*ƒ¥•–¨í+@¥’yÖ‘â:‡¦¯ËzŠüö3~Ì„²¬€.›g ¥-ÎOÎû"àWÒ>1[VFD—#EÓ‹ Shæhâ¹ÉXü.%×-òù"h=û‡Ç„HÊ Æ»˜?ÏLt{ñþ‡v[Dü=FîT;@Ü'Ú½ÔÉÚ´Âd¡lÿ{ÚB§ñ9$Ï’gÉ3wõBÍàH¶&ªKÕ¥iÕ¥iðÂç ¾€ø, > Ÿƒ/ ¼ð9„ïÔø’sÉ9×´êØ4¸‘yÉ6‡d›[°hMYXÎÚMŒ›6šÔ7Xºn/–®ò€žU&ÖvŸ38´¢‹¸ È"}r+JŸTüµ° …Ïi|É?‡äŸCòÏ!ùçüÌfT¦9\—ÚX? X' (ëdëdéDã ߉ð9ƒ³ZY8ÖÕJǺZÀºZ@ºZPå|'Âç4>‡ê;‡ê;‡ê;‡ê;‡ê;‡ê5‡ë^«!?P«!Â?£“šÆç^78`Ú'p\é„ñw }R¹ÁS¦ƒ >‡ðy„× ßì?ÆW®g:}’¹¡[A!t®ð9„Ï#¼np‰±’ >5iʺzÊðgø<ÂëŸGú™Gú™Gú™Gú™G:™GºšGú™Gm7Únµç©Ò9O…/ |Nã»Ï]ˆç.Äs×ÕWè\u”¿Žò×Qþ:*·ŽôYGú¬#}Öu›M4F4}6'›5„h h„Ï#|áuƒ7ѸÆqi«ÍɆ¶ÛfÃØ0¤kÛ†²_Dxás߉ðy„× Þ@ã5àºî á¨îšäAø<Âç^7xséyëyÁèyaé|ùMÍê¾€ÚbéÜà;>ðºÁ ¦-8.uÞ˜\Ðúo,˜¶hL. ¶ÐÔ ÂŸCøN„Ï#¼nðj‹j‹j‹VÃè§…Ûe¡et¾ˆðÂç¾áó¯¼ÙB¶Ú¶Ú2öÙ¶Ú¶ÚB¶ÚB¶ÚB¶ÚB¶ÚB¶ÚB¶ªñEd?‹È~‘ý,b›i,šv_@ø<Âç^7x ÙF ÙF ÙF ÙF˲² „7>‡ðŸGxÝà­²¶²‡¶‡²²j÷jw…Ï#8üá<ò‡óÈÎ#8üá<òóÈïÍ#¿7üÞ<ò{óÈïÍ#ÿ6|à<òuóÈÍ#?6üØ<òcóÈÍ#?6|×|­©ãI†£±¯ÙDødSç™Ôé0¾(j6|Îàµæ"⿈ù/bþ‹†ÿ"æ¯ÒϼÖ@ò7°ü $ÃÈß°äo ùHþ†Éäo`ù‹˜¿‘Ç’¿äo ù¾ Ùá.d‡»îBv1ƒ¦Øµg¡\Óî™ÜSC8¢ÕuTn•[GåÖQ¹udÿudÿuä¯êÈ_Õ‘¿ª#UGþªŽüU›u4nÖѸYGãf½iñl"žGchÓØ9Ãqü£ç}Mcç—óVw=×›GxÝà­VKóû®ÖVƒO¶0®ùkjî¯4^7xÍÓÆÎYÜÒDézŽÖ06Ïóà8G×kAså1™Ï"|áuƒ/.˜úŽÇ©J×ò0h¡ðºÁ[-#?àØ~Lú$ÂüÌ’PL‹ÇM#¿.Ýo |á;>ðºÁ›Hþf ëßÈßDò7[XÿFþf ë¿…q¬$?ŸCøN„Ï#¼nðZ³÷¯“>‰ð«¯- <˜÷»ÔïŒüo |á;>ðºÁÍZÃql¢t«?6QÜ›¨?ÿ€ð9„Ï#¼nðFÃøÀ±>[(ÝÒa åÁzk!½ÿ€ð9„Ï#¼nðEä?X?Æ.j—Éó ]_ºhâN;‰ó½Ÿ¹ˆðÂç¾áó¯¼Õ2òŽýC¥[>¡‰ò`?ÐD~ÀȆð9„Ï#¼nðfÓ´/àØß¶Pºåc¯žlMâtäWMû"|áó¯|ÙÛbGÆÞµ‰ñ¶šx|1ãc«‰Ç—&Æñø‚ÆG„7>‡ðŸGx]ã0o2q~ÅùMÓÙÜ áº/ðyVåÁ´“8¸às13/@øœÁ›¦½ŽåY0é“_°äY@y0-–gÉ£ò3y4>gpßΣøvÅ·,É`ætÍ&ÖIëÍï>gp—Σ¸tÅ¥ó(.Gq)¤›r–þHÿ7qé<Š÷æQ¼7â½yãÍ£oÅxó(®›GñÛ<ŠñæQ,7â„y'Ì£8aÅó(6˜G±Á|Ãjßj_„›`jß]¨}w¡öÝ…ÚtjG>gTé{öìÑ|ÇsÆ=[ >¹㚦®#yêHž:’§Žä©#yêÈ®ê(n©£¸¥Žâ–:Š[ê(n©£¸¥Žâ–:ŠUê(†©#[G>¶Ž|lùØ:ò±Œ§ÊTG¶WG¶WG¶WG¶WG¶WG¶WG¶WG¶WÇó‹™­ú³{íÃÎLšô«3ŸGxÝà3hozíMÏà½é†ÎÅø¼nð™«kˆO ñ©Y|jˆO ñ©éüÓˆÏ4â3mñ™F|¦‰×‘~êH?u¤Ÿ:ÒO顎ôPGz¨c=l3ŽÎ˜@N äDx]ãuħ޸ÔŸ:æ3ƒö©gÐ>õ Ú§žAûÔ3xŸº1cö¦ç^78´„Ë5^ÖŽjŸš§OnE铊¿¢í«ðºÁgÎ0ñàXþJÇò·°ü&^BxÝà¬$ Çò·P:–¿…åo!ù[H~Ž×‘þëHÿu¤ÿ:Ò鿎ôÏìJí \pâö&oˆôÉ­(}RñÑû×3hyí/ÏLÖôÚøŒÙ£déh`í;#¼nðµ¬p¥O¶B]›Ôé“5”.JàüÕ>2ã¯ñºÁ¡&¦,†ëöšR5àé“5”nø+já—jš¿ÆgÐ^ö ÚËž{¡µI>YCé“5Í_í_#¼np° $ É_Cò×ü5Kþ’¿†ä¯iùkHþ’¿†ä¯!ùk–ü5$ É_ÓòO#ù§‘üÓHþi$ÿ´%ÿ4’É?­åŸFòO#ù§‘üÓHþiKþi$ÿ4’_âudÿudÿudÿudÿV:²ÿ:²Ã:²Ã:²Ã:²Ã:²Ã:¶Ã´ž<ÓÄþÙ¬!Ϙ=È3‰ý3ZOFxÝà3èŒàˆÿ"â¿hø/ZüÿEÄùü†…#{–ºÀ›:]èÂÞÈÿ7ÿohÚâßÂü[ˆËðoYü[ˆ ñ—øL£aôÓh ý@dmð†Ng·Ñ¢fü ^7øL ñoaþ-Ä¿eø·,þ-Ä¿…økjÒ´p¤Ÿ¦(Aà Þ”%ýj¡…× Ø"⿈ù/"þ‹†ÿ¢Åñ_Dü^Gö_Gö_Gö_Gö_Gö_GöG|˜Oñi> ‹O³Í=Gýº)f3ߣӛrb#úuSçi > ̧ø4 Ÿ†ÅGPC|XÓqÃeÅXÜX“ãxS§×Ð~“¦æñ¤Æë¬ø7,þ ƒ7ÿæß@üˆ¿¦ÇÛÄ8/ódj4xsRç5üµà¯ðºÁ9†ËjXüo þ Ì¿ø7I«789Žô£659^ÓéM5xpþ’šó×xÝàÛfˆóo þ ÿaño þ Ä¿¡iÿEÌñ_4ü-þ‹ˆÿ"⿨i[ˆ óo!þ-ÿeño!þ-Ä_âu¤ÿ:Ò鿎ô_Gú¯#ýבžëHÏu¤ç:Òs鹎ô\Gý±ŽúcõÇ:êuÔë¨?²ô=ˆÏ‹ÏƒïA|ö`>"›»™±þ ½‚ÂçtM5ÿ‚9ES• Wc%›kˆœvÒJ}pæ ½â"æƒM=ž¼npÀÌØÇp$¼Áù7ÔØÁð*WÜà´“VzCËÓÐýW—&äi4Œ<‡™ž‰U®åiM.ý´~Z‹F-&qÚI+]é‡gÑòÈÒÄ|sÑèGမ±›áHž–ÑO«eôÓj5P¹-¥ŸVkÒJohyZH?²4!OËèGá )¤Ÿæ"¶¤Ÿ&ÒOsÛ‰ÖOsѲŸEc?X?M¤Ÿ&ÒOS막ôÓlaûAúi"ý4[ØN´~š-Ë~ZÆ~°~šH?M¤Ÿ¦ÖO õ¯VÛê_-Ô¿ZMl'ºµš–ý4ýàþÕBý«…úWK÷¯ê_­¶Ô¿Z¨µØNtÿj5,ûiûÁý«…úW õ/…󕚦…«ù&ó ™Î=PÃàIó0UÒNZép¡ø°j½ˆ1UëE¯œcfîp†Üã‘|M# ÞDå²’vÒJojyø %cªäxÝà|%hÑè§µhôžÃè§µhôÓZ4zhñ0[ÒNZéJ?<‹–‡—¦Ö£~α–ÑÜ–|ZF?­–ÑØVå¶”~Z­I+½©åi!ýðÒ”<-£sM!ý4±ý ý4‘~š‹ØN´~š‹–ý,ûÁúi"ý4‘~šZ?M¤Ÿf ÛÒOé§ÙÂv¢õÓlYöÓ2öƒõÓDúi"ý4µ~Z¨µšØ~Pÿj¡þÕjb;Ñý«Õ´ì§iì÷¯ê_-Ô¿ZºµPÿj5°ý þÕBý«ÕÀv¢ûW«aÙOÃØî_-Ô¿Z¨q¼ŽâŸ:Šê(þ©£ø§ŽâŸ:Šê(þ©£ø§ŽâŸ:Šx„Êmàr¨Ü*·ù7t¹ «Ü†)·ËmH>l%×Ì1ÎJ–k¿ü†\ûå³U…ï™4kÂ솤´ÒáBña7Ôºqsâß@å6p¹ Tn•ÛÀüºÜ†UnÔÛÀå2¦»õîÃѾÕÕ ³ï3ö¤¦ÑžäÑû/Óh¿ií7±<òÎ娬ËQY—_]7em3™Gû8ÓX6ër”ÿr”ÿr”øë\PG$çÔd ¥ë²@f½Æ>]Cu7y>9…ò׌¦ -ÓU ¥ëy™ÎÅÒ1­žß1\– ò‹\\·† ñ¯Yükš ñ¯!þ5‹¿Ìuù´VÃ>§kV{½5‘~šH?MK?M-ÔY/ž2縦§š–þUL8Ý@üˆÃâß0üÍzàô”Zäéÿ†ª—‡á¨¾M«¾MÞ@ù(ÃÊoÖ|L…¹=75>9ÕDy&qº™¿OëµS1Χò[ø¤Éoú ¦†tÝ`Gåê6b¸²m¦!9Ÿ¦No > ̧ø4 Ÿ†ÅGf‚~ªàr$ë¿Í­7éºax¿nêôâÓÀ|ˆOä7,>J‡³[õg÷,ò‡³“&ýêÆ¬IG¾qùÆYk¿^ç‚ô(ÿ”‡•‡N¯¡ü5”¿få¯éô”埱òÏèôi”埶ò«=ýmFA€#ÿlÄÚWåÚ=‹öÇgÑþø,ÚŸEûã³Öþ¸¦fòظœ—19Õ>8OŸÜŠÒ'ür¿{íÏ΢ýÙY´;‹öjgÑ^-ð©=OÙ¸–Çì‡Î¢=ÓY´gÊí¡¦òì@|v >;ŸˆÏ‹Ïͧ†øÔŸâSC|jŸšæ3ƒøÌ >3ˆÏ â3cñ™Ñ|¦ŸiÄgñ™F|¦->j¿ríßÍ6±ý˜ý»Y´7kíßiêݳhjíCÍ¢}¨Y´5kíCij&g£‰qT/µÇñ¦NGûqšš¥7O½¯ÄhÕ¾Ç:í+ijèwhý|­ŸÏ¢õóY´~>k­ŸÏêuòY´N>ÛÀ|ˆY'ŸµÖÉgõzø,ÚO™Eû)³h?eí§ÌZû)³zßdí›Ì¢}“Y´o2‹öMf­}EÍ|‹±´~;‹ÖogÑúí,Z¿Eë·³hÍv­åÎZë·º4–nl­Ó΢uÚY´N;‹ÖigÑ:í,Z›Ek¶³Ö:­.Mø@ccz}FøF1¾QÌ%Þœ4>“ÏÎæ‰‚Ïdñ‘óG]šHo"ä ÌGdb¾K˳ɳɳɳǒGS³< ̧ò7Lzói`>ÒÆ~êH?u¤Ÿ:ÒOé‡ù@mŸÌ*ûdþpIß3‰ÓÅÅ«P!þs0>{®_¸úº'-4®9}ñÚÖ)c;|fg¶Ã÷ûÏ®§f·Ïðô©SgNOÍ’©íµÚÌŽÙ3gf§Éö©éí3g’­ÛŒ8öç†ë®_xÊÖ­äq×_sÝõ9ùš ×_wmó`HtP?ŸK™¿Үݴ>îµ›–F“F—E“VnÏ•fÐåå/Rnù‹è$+›ŽÓ¨s&‡›7-ûÝNþ4ùòdÈã_Dά{ÝÈЭ®Ü{4å^ÞuûlgoEûK^¹Elï@ô…Ñg³d+âCVÚ&{é#½ôÍvü»ñ½ÈЭ®Ü{8OÑñ«œ§?ìæ)âWqžv}*«¯¦åK“¯žÕŸÓò¥•ÕÎÞÚéÐ-«¨]uÒ¯Ý+UÖj³Ÿ´zô³½p™X_ÔÌ_Ùï²#ÇJòÉÓa‘<±Ç4_[nžpåY©<«­­Ÿ•¶ç<ú<éiJçi}%Kÿ‚O™dž¼17˶ñGù••à“–·ŸýkµùŸÕf?iõèw{ˆ§º,AÚ’ä:uQcàJñY)=ûñýàô¯•âãýÏÁɃ¿•.Òò`=¥åYiypÛ¨Öß²#¾—U–›·H¼á–ARhi¯Ÿ•â“V´¾ÎJwûNZÃr®Ÿ•ª—«×4=¬<®Üi×Ó?§Å./·-ÒäX)>+¥goä·{‘<+UÖÁ´çßQ%o;Œhøþýóå¹õG0NÃ߬œ"8¢ °<0NÃßLþý ´lì›]cÙ00yBTÖòúÀøÿàÕ;ªdç‘UòøþÚÞ*™™­’¾®ƒAòvI8Hö^;HNŽÉ‹ }ããÉÇ>R%¿ø³`€üÕG«äÃò€3GÉ(àÿßc_%3g’@ú‹¾:Jþï¶Aò·_$ù•¤úïƒäU_߸êú“Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ïãóø<>Ï=!z7‡›N:œW¥)÷zå³RõZ©W§.à+¥ç{êû¢Òì;Ë&\:·ÿ¤ÝsÓ²ø»íµ|V²^yzÌK[ëô.^”¶(M­/ß—ïË÷åûò×wùýÿ<½§÷ôžÞÓ{zOïé=½§?˜ôê㮯æÑµË—Å×—¿úÊï·ýyzOßOú(%=/"ˆº Ñ'êPÖ´´~Õ_¥u[•Öïú{zOïéûGïý§÷ôž¾_ôú\n7þ‡}VSüWMIÏK« ¨vA¿ê­ Ú¡¬iižÞÓ{zOïé=ýZ¤ï4~Àg|»‰?–œùO7å+è¶|k1þaŸ2é>þaŸ»|üãé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zO¿nè»]SiÝ®¿uKO[ÿë7ýZ\ÿ]Éòû­ÿ~Ów«ÿ^ú_Œú_¿Ëï·þûMßoý÷»ü~ë¿ßôÝì±÷þô²ÿ´ŒöŸú]~¿õïéí{YÏ åñtŸ]òõï¬üNʺ§Ñ—SÒ‹¤)ÚnéY›•sä*šÖ¯ú—Hoõß/ë¿ôïûŸ§ï'}¿í¯ßåwR–§¿çÑ÷Ûþú]~'eyzOïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓwJ¿ÞÏ_ù÷OxzOïé=½§÷ôžÞÓ\úõ®÷ú{zOïéûGŸvÞ!-oV>Oïé=ýÚ¥¿;%=-~pó©Ø¥WúµVêäë}·ú_)ú^åWùú=þyúþÒwóþjLÛ-}ìç?ž~л÷ÒòHú~׿ÓþëŽÒã8 ú•.ßÍŸF›W~§ôX†ÕàÿºÑ?EiÝè×½—ßïö÷ôžÞÓ÷¾Óó+ØtsþËìÏ¿xú~Ó¯÷ù§‹¥-J“E‹ïåé+MïitYùÝ4å»”þû=pñ¢¶W”&k>°Zì¯Ûø·Ûþ£·×1³põÁñs¯ô½ú^ýW¿Û?M6œ–eû®ítÒpû¯¶ú™ÿçõÿvôîüÏ•­¯OK땾Óõ‹^ëÓúÝþýŽ?ú½þÕoý{úþÒ¯÷ñ¯ßý¿ßõ÷ôžÞÓ¯_zïÿ<ýz¦RÒÛ¥©:è’ž¢´~÷¿nÞßÌÖT(éþýÏ‘,5ì?t£¿€ô¦ÿe´þ±VÛ_µ_·í¯ì§ßíïé×7}¿ý¿ëïé=½§÷ôžÞÓ{zO¿Þè;?©8NÑvJ¿ìœYkõWŸ{ÊþÏz§ï÷úC¯ó§^çoý^ÿY«íßÏõ«•Ô¿ío-¶¿×?}û›´µîÿ×jý}üsÏ gí¨bröé´ORb÷må[ܼ¡›@ìßÒ.RVVù½Ð¯÷ú÷›>K/íÒm·ô¬z¡_©ò»ýýÈ éí÷'ÙûŸËeMK[©úûþçéûIßoûëwùýÖ¿¿“ŸƒYÿ~Û;Kó”¿ZP~\|¶†ñJ{æmعfïŸ&ýoOïé=½§ï}·óEÛ-}¼Jækµü•’¿ßöçé=½§÷ôý¢ï÷þG¿Ëï·þ=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOàé;]?ˆÑ§›õŠ ›÷/`únÞ¿€åï†ÿþi7ôø÷Oýû<ýz§g|^$íìHVúJЯ÷ú¯wú~·¿÷NRp7¿›¶Rí×î}ånº¢‹Rîµ£ÇíÐ ½âÛ®›ò»¥Çÿ Úµ<ÿÐÍïwbÚnéW‹ý¯wú~ûÿ~×ßÓ{zOïé=½§÷ôž~½Ñ»÷ÖÛù¯~Ï?û¯÷òû½þ±Þë¿Þû¿Ëï·þךý«O¿ÚÿžæúmýÖ7ë§JoÝ®¿ªß¨é–^ýnA·ôwÅþý?«…ÞíƒêlªûIûMU¾ÿ§õÿ,ž¾þÅeÍ*-Ó÷û÷GÖjýÒ[ý—ãÞ~?e¥Ê÷ýÏÓ÷“¾ßö×ïòû­Oß_ú~Û_¿Ëï·þ=½§÷ôý£ï÷úßz¯¿Ëï·þûMïõïé×3ýz·ÿõ^Oïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{ú{:}§ë7A7ë?îûÇüï_&?kÉ~<½§ï…Þ½·Þž?ì7½{ï`ë¿ßå÷[ÿý¦wï­·ö_ïå÷Ûþ<½§÷ôžÞÓ{zOïé=½§?˜ôî½õÿ¯÷òûmžÞÓ{zOïé=½§_ôþù Oïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé»§ïôü þÍ€nÎß,ÉwO¨´~׿ßôÝê?$½éÉŸâiýþýÇ~·¿Ëïwû¯wún³BzûýÍ}þý?kŠ>ë÷‡Šþþ]O_ÿbyû]ÿEïÿ2ùYO¿éûŸ§_ ôý¶¿~—ßoý{úþÒ÷Ûþú]~¿õïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé=½§÷ô«Þÿþeò³–ÚÏÓ{úAïþ¦AV¾´g-ÜüŒW}С¬íʹ'Ñ÷[ÿý.¿hÚ=•Þë¿¿ô^ÿžþ`ѱ•<ú"¶šõLd¿ËWå)JlÒÊperé³îeÉÔ-=–µùWCù«Áþ=½§÷ôž¾_ôýÿ|ù¾üõ\~¿ã¿~—ß =–µù}ù«cüñôžÞÓ{zOïé=ýÁ§Ç÷Ö[üíË_ßå÷{þÓïò{¡Ç²v#¿/¿ÿåwÒ×ÒÒ<ýÚ¦wùxû__úïwý=}é]>¾ÿ¯­öóôžÞÓwOïòñþomµŸ§÷ôž¾{z—Ïzóë½ü~ÛŸ§÷ôž¾ô.ŸõæÿÖ{ùý¶?Oïé=½§÷ôžÞÓ|z—OÚw­º·ÖãŸõ^~¿íÏÓ‹jÜv8O½ÛÞ¸]Ùïܹ<Õg5ýþÐz¯¿§÷ôý¤÷ýÏÓ÷“¾ßö×ïò]¾EÓ<ý=ƒ¾ßö×ïò]¾EÓ<½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ¯ ú^ö¯ÜiuTŸ åž×ôßïòqY)Y}ûçÐ{ý{ýçåkGïËï_ùn ÓÎÖÒèÝòólÍM[ å»ñj,?Ye¤••U‡,Z\~½[~Ú‡’d*Ú¬ú¬¶òÓÊÎ*++m-÷?_¾/ß—¿~Ë_ ãŸ/ß—¿žËïwü×ïòÓèVü·ÞËO+;«¬¬´µ<þùò}ù¾|_¾/ß—¿Ëwã ;¥wËOË»šão_þú.?/^N+#­¬¬:dÑ®¦òÓèÝòÓ>ÔL›U_þê,ßå[4ÍÓ¯mz—OÚwžý)[síͥϲ¿~—¿Þõßïú{úþÒ»||ÿ_[íçé=½§ïžÞåãýßÚj?Oïé=}÷ô.ŸõæÿÖ{ùý¶?Oïé=}ÿè]>ëÍÿ­÷òûmžÞÓ{zOïé=½§?øô.Ÿ´ï4Zuo­Ç?ë½ü~Ûßz§ß p'´Í²}Ø·Jc×y¿?t±Û=M.uöÇ×ÿÀÈïé=ýZ¦÷ýÏÓ÷“¾ßö×ïòû­Oß_ú~Û_¿Ëï·þ=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓú^ö¯ÜëýËiò¤[å»þÂ¥o÷»|—oÑ4Oïé=½§_Ëô«aüóåûò×sùýŒÿú]~Zþõö»|—oÑ4Oïé=½§÷ôžÞÓ¯Mzê¤­ÇøÛ—¿¾Ë÷ó/;ÿz›ÿ¬÷ò]¾EÓ<ý=ƒ¾ßö×ïò]¾EÓî)úïU~O¿¶éûmý.ßå[4ÍÓ{zO¿öéûíú]¾Ë·hš§÷ôž~íÓ÷Ûÿøòû[¾Ë·hš§÷ôž~íÓ÷Ûÿøòû[¾Ë·hš§÷ôžÞÓ{zOïé×.=uÒ×[ü³ÞËwùMóô½Ñ³O°$Û㸌4úP¦WùY[«ëeÙöa}/òûú{zO¿véÙÇ÷?Oß/zöé§ýõ»ü~ëßÓ÷—ž}¼ýÛŸµÔ~žÞÓ{zOïé=½§÷ôžÞÓ{zOïé‹Ó³ù!MI#è^½{§¹ßø“¶ÿÖŽ_VùYòºõË*ßå[4m¥è×{ýûIßoûïwùn¾õhë½þý¤ï·ý÷»|7Ÿ·¿ƒO¿žõïí?É·hš×ÿÚ׿§ï/}¿íß—ïýO¿ËwùM[ëôì£tçâø“–¾Rô/*{Qš,ZuÏë߯½þ×—þ±ßl'[}Ѻ¥åqï¥ÉÓ ½K“%_ýÁ´?W¾võIKÃ÷Š´ÇJÒ¯„üë¹ÿõÛþØg=ëßû¿lÚ"iÞÿyÿçû_ú=ÅÇ÷?ßÿ|ÿK§÷ýÏ÷¿õÜÿúmìãõß¾<¯ÿìt?þ¤ßS|üøãÇßÿÒé}ÿóýÏ÷?ßÿÒh‹¤ùþçûŸïé÷ßÿVoÿë·þ=½§÷ôžÞÓ{zOïé=½§?˜ôê“C§ÑµË—Å×—¿úÊï·ýyzOïéûG¥¤ç¥QQô1úDÊš–¶Öé»Õ¿JëVÿ*­ßõ÷ôžÞÓ¯_zïÿ<½§÷ôž~}Òwê¿q¹ÝøöÁó~—ßoý÷›¾š’ž—VAPí‚~è]A7ô+]~¿õïé=½§÷ôžÞÓ{úõGßiüŠ3­›øwi•­¿tSÝÖ_Áj¨¿é;ŸÙ§Lº¿Ùç.{zOïé=½§÷ôžÞÓ{zOïé=½§÷ôžÞÓ{zOïé}·ëÏ*­Ûõg•¶Vëï×ßïô~ÿ)ùYOõ_ïôݶ/þ/^Eþo½×½Ó¯÷ö_ïõ_ïôÝœ_`¿›ØËù‡åÎ?¯tù^ÿý-¿ßú÷ôö½¬÷uäñtßÒüŠû¦)yòè1 ûÆ¿ëº,Ç›4z<—)"kžü½Ð{ý“5OþµJ_NI/’¦h»¥gmRΑ«hZ¿ê_"½Õ¿¬ÿjпïÿÅdÍ“ßÓ¯]úõnÿë½þEeÍ“ßÓ¯]úõnÿë½þEeÍ“ßÓ{zOïé=½§÷ôžÞÓ{zOïé=½§÷ôž~µÒûóçý¥÷ï_ôôžÞÓ{zOïé=½§÷ôž~ýÐûùWé½þ×7}§ógŠ ›ùwŒ>ÝЯtùýÖ¿é;ÕîÿÝè÷ÿnèWºü~ëßÓ÷—~Ï}yö0![Gùôð}!8Šÿ<¯Á÷}îEÈ•'ò—Çò¢ù ä½ òÝ è~ øo„o ùÖÑ„ ÍùÇC@p !¯x&äY„¼ÿ4ÇAÿ<ù!ÿ(нø¾øžå< ÊÙy4 ð; ù5äù”Qšÿš¿ž¿†|ÿeì>^È¿òÝzÿ¸~À5@ÿ¼a!ã¹PîQ#Bv&ÏÎò|ðÇ<h®¾(óÝŸ»@ȲÖ?L?ìÃÚ‘}Xû²Óû°öbÖŽìóL™ÎÚ…}X{±ÒÓ?ûüú ›ÿú(yÖêë‡ÙçJ°~˜=¯µÖÏ/ÏXyþX?¿;råùèëŸWúãúçµöaúa>žù³¥Ÿßɱ`­êçÙ:IÈKÒ‚€?¼ÁñKÃr¿•ç ?L?wFÈõ[a ZyþL??9†”ñëû¬<ÿýéÔÿ¸ña»O§þÇûýé´1ýÜìáƒ_P ¿tÚ¿˜~Þµ ¾!Þû ¿¯·OVüìÆÍ*žÎŠŸÝ¸ùž0·`Ÿ=ÿZëóÓƒ¡<~1ýl=?Y–G…~þäxÀ™„êXBNúiA¾Ýߌ ý<ô9òÜ2vpôƒý3ÓÏG¡ž ]Oúù”¦Ÿùñó÷üÏ=iþþÛ0¿ÆúùõAè+ýñó÷üÓÏeœp ôÃ|îïÖ°~üü=ûãçïù?Ïÿøùû=û“5gŸ´=°¬ù;ûdí­åŸ¿ûù»Ÿ¿ûù{ÖÇÏßó?~þžÿ¹'ÌßÙØõì8?ec×â}Ö®ýøý÷ìÓ»Øv æïlìbcØZ¿³Ø‡Å@jþÎbùù{òãçïù?ïï'oþž¶Ÿ7¿'îÁûù»Ÿ¿ûù»Ÿ¿g}üü=ÿsOš¿‰÷:ýXççWA¼×éÇï¿çüü=ÿÃô³ÆŠÿƒqhÏæ•çÏôóï0FýÆšgž³òüô‡é‡Å=j¿Ò¦÷¨9üZûøù{þ§Óþ5 }dbßWŸP\?ô¯¯ ï…Ø}÷É«C?ký£â5oWóx5gWsx÷ü¼š·«y¼š³«9ü=aîÎ>~þÞÿù»š»³ñ‹éGÍÝÙ<žéGÍÝÙ<žéCÍÕÙ¼éCÍÕÙ¼éOÍíÙ<_­?³1Œ_L?jîÎæñL?jîÎæñLj®ÎæíLj®ÎæíLjn¿ñŒ·iúQsw6gúQsw6gúQsw6gúQsu6ogúQsu6ogúQs{6ÏWû|mõ(¡5wgóx¦5wgóx¦5Wgóv¦5Wgóv¦5·góüý¡V›üóHH"R"eR!U2@É&#d”l É&²™l!cdœLCÈ¡ä0r89‚ ¦p49†l%Ç’ãÈñär"9‰L’“É)ä^äTrÙFN'gídŠÔÈ4™!;È,9“œEÎ&çsɽÉyä|r¹™#;É<¹\Dv‘‹É%¤NîKîG@.%÷'—‘Ýäärr¹’\EDLBJF®&&$"' d‘4Èr y y,ÙK®%#'O MÒ"O$O"O&O!בëÉ äFòTr¹™ÜBžFžNžAžIžEžMžCžKžGžO^@þˆ¼¼ˆ¼˜¼„¼”¼Œ¼œ¼‚¼’ü1yy5y ùòZò§ä äÏÈëÈëÉɛțÉ[È[ÉŸ“·‘·“w¿ ï$ï"ï&IþŠÜJÞKÞCÞGþš¼Ÿü ùùù ùù0ù(ùù[òqòwääïÉ'Éÿ#Ÿ"Ÿ&Ÿ!ÿ@>Kþ‘|Ž|žüùgòò/ä‹äKäËä_ÉmäßÈWÈ¿“¯’¯“¯‘ÿ ß ÿI¾I¾E¾Mþ‹|‡ü7ù.ùò=ò¿äûää‡äG²-CÞžoSü¯ÌÿU¬Uë߀õoÿâÿ†­#Ö¿Qëßë_/ö£,HØPš%íˆY’øÇìi—´)fU®îvõÇ®˜e ÛÖŬŠY³²,ëböÅ,,ÛÆ”•1;S–ÆlMY³7eqÌæ”Õ½œ[Þ+¸õ½ ìïÕÒþ„2ëcVøFË™b;d–ÈlñV°Æ÷€5[ü Xã‡Á‹Ú¢°FeÆ"™M~ ¬ò?,«Tv),SØ&³Nñïü³Ó­ŒkôÿñÿñÿñÿñÿñÿY—šø^ý)ê/öëââ7ÆPë¾ý-r™µ.ÃAýÊù=Wæõ\úú±L_úz°1ŸâS|ŠOñ)>ŧøŸâSÖ~Šˆ·Ù7%ôS­¶Z¸²Ö³<>ŧøŸâS²R‘ $›È9‚GN!§‘3È,9\˜yêÍœ¦Ì>ïÆN»±“nÉ3nÉS”/ /$/ægØ^!Ï­½Æ9³ö&~ZÍ=/™}Fícäã™§ÓØÙ´/Ê3’_‘gѾ!O¡}Gž‹ü>ùù ù)ùù9ùù%ù5ù ù-¹üŽÜA~Oþ@ö‘»È~r7Y%RÐF´L«t€Ò!:LGè(Ý@7ÒMt3ÝBÇè8 ‡ÐCéaôpz=’E¦ÇЭôXz=žž@O¤'ÑIz2½=•n£§Ó3èvZ£Ót†î gÒ³èÙôzoz=Ÿ^@ïCwÒyzÝE/¡uz_úz9½‚^I¯¢Zr”Œ“#Éñä^dŠœE.€Ö{8´ÅSAǯý½4òE¨ë¡!Hw ”v.py0½†^GŸC_IßLßC?Nÿ‰~~Ÿþ†Æt$8"8%83¸(xDp]ð’àmÁß·? –‚±ðÔpgøÐðIá ÷„ ¿~?¼+Ü]=(jFÏÞ}0úBôïÑ·£D¿ˆ~ÅQµ´©t|iGéâÒCK/=£ôÊÒÛJ*}®ôÒOKûK#åcÊSåùòUåÇ–o.¿´üæòûËŸ)µüÃòåÊ•m• *¬4*7T^XyCå=•OVn«|¯BªÇTϯ>²úôê«WýfõÕCf®¸~à5øÊÀ¯6 ž>xéàUƒ¼f°9xÓàó_3øŽÁ ~vð«ƒß¼}0Ú2tüÐôÐüÐC×=kèµCïúÌÐ7†þwèC ‡G‡>aøœáÝÃ~úð«‡ÿrøÿ møgÃddbä´‘#i<ä=#ÿ>²odëèìèýGGo}ÅèGFÿk4Üp¯ ÜpÓ†·nøÌ†ïo(mœÜXßøø/ßøþ_ÙxûÆñMgnz覧mú»Mû6µù©›?ºùŽÍ3[®ÛòÁ- É!ähr"ôÈir™‡x5ô¨§A_yôUßûs°Æ XØñt ¬ãRúpz-}*}} }}?ý$ý"ý&ý1½ƒ†Á¦à˜`[pnpi°'xZðêàÖàÓÁ7‚_¥ðÈp:¼o¸Þ¾2|WøÉðkáÏà :,Ú]=*º!zYôŽèï¢/Gÿ}7úIô›è®(, —+Z:¯tYi¡t]é¥×•n-}¢ôåÒwK¿)…åñòdùìòýÊ,?±üœòkÊï,¬ü…ò·Ë¿(ÇåM•ã+;*WZy|å•WVÞVùPås•oT~SÙX=£ú€j³ú²ê{ªÿRýiµ:09°kàšç¼cà¾7@<p÷àC=¸wðºÁg¾xð ƒ·~|ð ƒßüéà¾Á¡Ã†N:{¨>tõÐ C/zÛÐdž¾<ô¡Ÿ Ý>´<40<6|Ìðöá]Ã~Êð‹†ß2üááþŸáß7rÖÈFöŒÜ2ò¦‘ÏŽüldÓèi£;G2Ú}þè»F¿<ú»Ñ#6ìÜpí†WmøØ†onØ¿á¨l\Øø¼ïÜøOºqhÓ¶M—mzò¦÷lúÙ¦S6ïÝüîÍ?Ú|â–=[ޱ巄ܿJŽ!'‘md†œK.Oº¾ñàõÞ¾ì#྾çàUÀSœ}Ž^FIOo¦/¤¯¥ï  Ÿ¢_¦ß¦?¥wÒR°%868#8/Ø<6xfðÚà½Ágƒo¿ ªá1álxi¸'|ZøêðÖðÓá7Â_†¥èÈh:ºo´Ý½2zWôÉè_£oDÿý4úm´?ŠJ#¥#JÛJ”Xj”n(½°ô†Ò{JŸ,ÝVú^éöR©|Hù”ò¹åKËW—Ÿ\~^ùµåw—?^þbù;å_•ieKåÄÊ™•zåá•fåY•?®¼£ò‘Ê?U¾Yù]eKµV}`õIÕWVÿºúåêÿU‡î5PØ;ðÂw |nàáàqƒsƒ|èàÂൃ×>kð¥ƒo|Ïà'¿8øíÁŸî:bèÔ¡s‡î7´0ôÔ¡—½cèãC· ý÷ÐO‡~7 o® _2ü¨áë‡_2üçÃþÒðÿÿaxtä„‘sFv|ž>^M›ôiôÅôuôôCô3ô6úúsºV‚ñàø`*¸ ¸"x\ðœàõÁûƒÏß ~ …Ç…g‡»ÃÇ†Ï _¾7ülø­ð7a5:&š.öDO‹^Ý}:º-úÏè{ÑÏ¢Û£»£Ri´tTéŒÒ\éŠÒ5¥§–^\zcé}¥O•¾Rú~éŽR¥|XùÔòyåËÊ åëÊ/(¿®|kùå/—¿[þM9¬ŒW&+gWîWyd剕çT^Sygåc•/T¾]¹³2QÝQ½²z]õÕÕTÿ­ú«êèÀ¶û<~à%·üóÀʃ'^8xùàÃ7xÃà³_>øæÁ÷ ~rð˃ßüÅàÒàÈÐQCۆκt¨1tóÐ+‡Þ9ô‰¡¯ }wègCw ‘á¡á‰ác‡g†ï;üèá‡_6üöá¿þ×á ß5¼q䤑{\>²wä™#oùÂȯGÝ>ºkô£O}Ñè{G¿:z×è±.ÙðÄ ºá¾³!ÞpìÆù×l|áÆ[7~qã/6nØ4µéŠM7lúÀ¦_o:cskóû6ÿßæS·Nþ ¢ƒïÃ蓹OÑø"mèé3èKéè»éGègéWèwé/è~:œLsÁƒ‚fðüàÁƒ/ÿÜŒ†'†÷¯>'|}øþðóáwÂß…CÑqÑÙÑîè±Ñ3£×Fï>ý[ôÍ裟G¿‹–¢riCé˜ÒTi¾tUé±¥›K/-½¹ôþÒgJ_-ý°tgi |Dy[ù‚òËò å–ßP~Où“åÛÊß+ß^.U©œR9·riåêÊ“+Ï«¼¶òîÊÇ+_¬|§rWå°êYÕWo¬¾¶úáêW«¿­nØ>pÙ@kàåïøâÀÏO¼xðŠÁ‡6?xãàs_9øÖÁ÷~jð¶Áïþj0Ü0tÌÐC ]6tÍÐÓ†þxèÝCŸúêÐÿ ý|è÷ü 2|Üðìðý‡‡o~Åð_ ÿÝð¿ ÿhøîáÍ#'œ?råÈãFž=òΑ/Ü>røhmô’ÑG^?ú’Ñ÷þÇèÒè î·á)ްᓾ Ôñ/ÚøØ/Þøž_Þø«›6MoºjÓS7}xÓí›j›Ÿ¼ùo6ÿjóé[š[Þ»åç[ÊdDG°ÛÉ™ä|ˆ] qè äyQ¾bÄO@Ü÷ òCˆâ(ÄfGA¤u6½¢¦}2}}9}#½•~Œ~Ž~•~þŠ.Ñ¡à°`2ØÌ ž¼0xKð‘àKÁ÷ƒ»‚MáÉááƒÂføüðáÃ/„ÿÞŽF'F÷Ž®ˆ='z}ôþèóÑW¢oEßþ/º#ZŽ*¥¥cKÓ¥‹J.][zZé奷–>Púlé륗ö•†ÊG•Ï(Ï•¯(_S~jùÅå7–ßWþTù+åï—ï(W*‡UN­œW¹¬²P¹®ò‚Êë*·V>Qùr廕¥Ê‘Õs««Þ\}}õcÕÿ¨ÞQ˜¸|àɯxÿÀ¿üb`xðÔÁû^9øˆÁ=ƒO|êàsÿxðmƒüÌàW¿7øV7 ;4547ôÀ¡Ç=cè5C·}jèëCßú¿¡;‡‚á‘áC‡>køÃ{†o~Õð»†ÿ~øß‡2¼<<6r¯‘ûŒµá{Â'n¼xãµ_ºñ}oÛø›[6íØôàM7oúئßoÚ±ùúÍÚüÛÍS[ž´åý[~¹å7[~»åö-¿ÛrÇ–ßo¹s˶ìÛr×–ý[îÞ²´eyK¼…ŒÑ1>Ç¢±ÒXy¬2•‘ÆFÇ6ŒmÛ4¶ylËØØØøØÄØ!c‡Ž>väØÑc[ÇŽ;a줱“Çî5vÚØécÛÇjc3c³cg3vï±óÇî3¶sì±]c—ŒÝwìþcÛ=vùØ•c{ÈØÃÆ1ö¨±G-Ží{ÌØÞ±Ç=a¬5ö¤±§Œ]?vãØMc·Œ=}ì™cÏ{îØóÇþhìEc/{ÙØ+Æ^5öê±?ûÓ±×ýÙØ›ÆÞ:öö±wŽýåØ{ÆþzìcûØØß}rìÓcŸûüØƾ4vÛØ¿}}ì?Ǿ=ößcßûÁØÇ~6ö‹±_Ý>öû±}cwÅcÁxi¼:>4>:¾i|óø–ñ±ñññ‰ñCÆ?lüˆñ£Æ?vüøñÇ'ÇO?u|ÛøãSãÓã;ÆÏ?{üÜñóÆ/ŸŸ¿hüâñúøýÆ/¿lüãWŒ_5þàñ‡Ž?|ü‘ãW/Œ7ƯìøµãoŽ?qüÉã×ß0þÔñ[ÆŸ1þìñçÿÑø‹Ç_6þÊñW¿vüõãoËøÛÆÿbüÝã5þ¾ñ¿ÿÐøGÇ?>þ÷ãŸÿ‡ñÏÿóøÇÿuü+ã_ÿÆøŽsü[ãßÿ¯ñïŒÿ÷øwÇ¿7þýñŽÿxü§ã?ÿÅø¯Æ3~ûøãwŽïß?¾4Ãd)œ(MT&&†&F&6LlœØ4±ybËÄØÄøÄÄÄ¡‡O9qôÄÖ‰ã&N˜8iâä‰{Mœ6qúÄö‰ÚÄÌÄìÄÙ÷ž¸`bçÄ…»&.™¸ïÄý'.›¸|⪉‡L<|âQ {&;ñ¸‰'L´&ž4ñ”‰ë'nœ¸iâ–‰§OÃú3‚>£è³!å³>›6mŸ-ü3Æ?ãü3qÈ!‡òÏað9>GÀçHö9J|Ž–Ÿcøg«þÀ 7á(¾D}+år¤?¢ú¥ $¢T|ß*‹šVä·®;ÖBŽÓ@=ƒCROükýÍø ŒÂ,”©¿à{„ÿ—:e "´ýŸÃrÿð,‘þÚ—‘ÌBƒHü¡$Ñ¥øS” ¡Gê?GØ—üËÉÿ0ÎGŒš´¹ˆ?–¸‡i2sj,ÊÅ”^ø%¥ÉK¡&yƒ«)‰% 'YX-Å¥®¾ qa7$-e%Å…j.”q15¢¸FÔÔƒ2ŒÒ`Åea‚k :Áj›­LËÀÀ{à4V#- ªU…,<­LpᚤJ‰ânÆuÊ.qZg5rêaÕhEµ»*¸8Ú•ÖÄt‚ ›t4Npo<œý9¾,ŠÏp8ÃŽ°/-ŒÉ4Ã…3•YŽÀ—Å1ª»ÚáìÏæÒ¾!Ë¥R/‡ÛùD˜®u‰oèQª¹˜|ºFTf9]jLʳÀ½k{)^äö¥‹IYŒ|–vYÃÎþa.í¢ÔÑ µõÂÙS­ªõ"nh ½P»T–#Ì%¾A4K/—ƒh»™V¼¢¶èÊ©/´e6ia &¸ðæ¡*tDaJ t|ê»3~—«äH}y¤ÝSLZ˜‚)Y˜ÙRªe1\Œ,TKÀV¬¥…ùDÌê¢#Ì%¾A"fk€… ­»+/‹Õ‹Ú îIÿâø:K÷u‰ñè0»‚Æþ}·—K·Hf‡ M%Òæs˜ö.S~·ý%ïç*Ž0µÄÖô«Œd‘ 2.qæd-‰¨ÇávçT’]K’RK¸ä±h {²‰JE[šøTç;̹$ʯY—4+3«%k*Ñš¶4!1µ¸à¶TEÊz¨"…JÜÌÚ«ûh‹Õ¤‰åU‘iÕ’Ž×Réd–ƒ°0¬Xe>X±Ž®’µ$N-‰ª%Μ…f»Œ#µ]!{éáRÖ’·%µk)ú%«%µkI‚ËÐ^wDs™’™ÇÓ–ÜKQ3öP»WÐD'‘Ñ0±Š4MëÔR[,V,ŽF”bj%kiú~â2¯-u‡•ýR»Oé*YKêÔ]R¤vª ©ž¯RŒ Ëop.±&íZ*w0gNbФV¿DEæ^šIaê]Ý–|)Ãi«H‡K’©Ð¤™‡jW@S¼!¶Å@šµ‘"Nµ]fF¡¶O—… ,ï£ü_šÃÓ—3*èÏÍû¥qxR±jˆÖþ^iõpÆdíÖóÛ&öa‚§ ªH;Ø!é—«#‹3±7ûcGx쮌½S"¼_†ö¥ºÛZ¢{±ØÎ},Z"r4;4KCò2écµ5e‡[z1Ó*ù”½Û*’f{žÆ—ý7h,í^°à2Œ6H,íž©³´`ƒÆ’ çP0Ø ±´?Ë ™Cà>Êþl “Ïþ$9ŸÄþLj,íO—™Ì‡i³5 Fõ¢XRφ3 Nb&µžK`r½ÝÂ,ÎÌDGÙŸ :ZB2ë»ÜÖFu'Õ™] s¦,2ÎÒ5[œå])(Î*- ;z6†ÄþÆþ`Îʤà†ì‡™4ƒqƒc2ýéˆ]…ú2èKs›#¦A9g}Œsq0û® !äw #y†0Ú(/…3²1áwmLòc[¬QåEfb$àÝ4àœAf}ŒsQ¡¸ÄðÝ4=gÜqh°Q÷€ 8–>Ñ1æ-õ,/ƒq.zú ôlî¦é9dz6~’2=‡ZÆås0£gÊôÚzf†P­gyŒs‘2‡ZÏæîµgÖßöqF¾sV½,ÈÄødO÷A#³ã7L8s"ûs²¾{x'˜ËÙD-ìωìÏɺ—Þ –6š^É,ï^K÷ÏfÎ.8뻇LZ±…á»iz62ÓàDöGéYRÅ’zÆ‘þ‰ìÒ3Õš,„¥°Ê6ŒÌÒ^Krƶad–žáðâØª°ç¢-èÈlwg!3»<‘ý9Yôd~#Ó!]*g$sœÙÅ™I•‹Êëe®ésíšPãd}t‚%'éÜÖ giÏ'åÑ‹bikdˆ³nÁ“ôh_sÇAnŘ3Õœ©¦-„«ã#ÉFÛž|c'˜éƒ<ØH,/jqæw‹c&~æ1×F{¾Š8ó»`Æ?ó(c£íŸ-ÎTÓ´ž h£¨žmm˜>èÄÜÎÂ#ñKû , iXf,š#¥­«¤ÕÍÄH‡õz™æx,Ñd$W Ó” 9K¿$h&y™·Ñ—¦5=ÝÄ+‹jdâFc<œ( M_­å|—ÊÉ­Ùp.‹‰–\Ô=ïƒÆE*öT‹–ÔU[=èÒ¹ËEKñ÷H4Ýܵ¬qÁÌË¿´§Œi™Ó K4ªE³v²3q:,ýR/…!є֜݇‚sgww)Mk¦4cköŽºë\:´iZã=‹F%šÞ7¢%µ&ɨ-ZRkƸÌeJæbsì4¿&#i³`ebjž—Ëô]K4ãr;!–hxZe•æ\G–véhÍMŽ’fúE‚º³› BªË¥T±—mDm¿F˯ٗnæô]K4¤ú5©5k Â¥Ñ’Z3ëz™—é~Ͳ5ì<¿fÙš=ËB²d^Êêgf.¶ ”æ×¸ÖÌh`´f|“s‰ 7«¡Æ¯9™‹¯UY~f9¼¦%Ô>áby.j;Aê:Á¤Ëµlek¦‡JÑÒ\.^PS¥%µ¦ùåe^ÝñÚJï¶oʋ׿–Þ ¬×ñut£5¾¢žg[kx‡±ÍI¬ˆÔ»j̬õ™Ew6騤5{…@ˆf´ÆEã Hkzé@ùná–h,‹ÚPwCj–S¥Ö¦ØŸiög‡ÆÒþL1k,wH,íψËKûÓQ¹8ßyìûY:§±´?+Cvûsûso}ãœN0‡ß™ìÏÙìϹúÆ™`V+¡’†÷Ö pŽnstæ ,ÁOÉGÃsõ3MI“´VëS-_Àä ´|– Ð’¦a?®ƒ TòI~gê,gjÎÉ4ªåë¦=ÒÚ7ß<ûsûs±¾1ß æð»ýÙÅþ\¢oìê³øÑ`žý¹ˆýQòñ´â˜ÃïBögûs‰Î·«¬Ký¥Õו ®óìÏEìO~}—aiíáøÇ«8­uÎ\s´{ûÃ:l,-¡û dfƒÑÀ*ùۮ/8usZæMQsêÆüFÀzr,-a§H ƒÉº™~÷Õ-­ÝÜÒ˜­ÉþœÍþ¸¥¥ØdfÝTa`0SZM9£k9«o¤ýa®¾ ˜páÁŒtú¥ò¬º‘ò‡“•h2áÛ¿‘öG,5í¤YÎÊi¤¿WBr2oÌÊiDiR RšÙ¬¼‘ö'a%ç³?÷avêË´?ù pžÎwæ7§™Öt–¢X^Ýx¨Òh J£ÁNMv^F+­]ݸý¥;Ó9ºGÝ[“Ó –g“¼4ZfNù Îewï­È¸›³±RYa"ÒwóM™—Vb¥º4±ÒJš‹‹•ÏÑ&oÝÍï¢n¡*MmçÊ@Iö…s˜ ß’wó;ŽŒ‘”&eÆ#¼{ë.tN“ÁXòn;›ä>LY‰Ô+ cÒêÎÉÁDÝK“96ɽ7z¹ çã/÷¬—h²]`y¥É‘‰½|xâãïÅD Â5¢‚‰¢X¾çRuã¥qùä¨q‰&ÛUk×nªn\“R>U7Ù»Šcí‚'ÇÛ:ƒðù:sQ,¯4î"¹w”ŽÑ 0¤='ãeHëÌ,Í 0œº9áùš¢(–WZ¢nV`(e>3“usÒzòG¿}õÍ¥—ËüN¬”Œ@yÓ*•_…BÀ’ʹ”Æ•q_æ{Õ ¼ ’©Õ 9QA¯rŽæ’¼” ˸ë´B—ÃD~ ¹ª¤Ì_¦/Å–ØŸ2ûSaªìÏû3Èþ ±?Ã:ó@'Ø=º4±îHñó%–Vfi–&Jciƒ,mˆ¥ ëÌE±^JÓ8 ÆzÔdÚ"þQìÏÑìÏ1ìÏVöçXöç8öçxöç[»‡õzÙm²ŽÅþÍþÃþleŽeŽcŽgPô~cªz‡(ÿr}·BâA,ö‡µBÄZ!b­±VˆX+D¬"Ö ‘Ý ê­ôVˆ \ÞZ¡[çARžÚbU`iGÞ MT¥Gx_€´l÷uX/—ýªqúo/—=RÚné&ög3û³…ýcÆÙŸ öçöçPM6Ð Ö‹ïL;Þ°‰ýÙÌþlaÆØŸqög‚ý9„ý9TQ(Š­FL§lŸ“²­U1FL§ÓiÄt1FL§ÓiÄtJÕsTE±5¦ÓnC0¦S¾w†L§a(uÊÒ6³´-,M蔥M°´CXÚ¡œŒ3-Šõ"){/èß§ÀoÛþÞÈÒ6±´Í,m Kciã,m‚¥òÖuûÄzÔi0¼ž-e)ˆõj§½ŒQ½ô½ôãõëõ²ªëeRÝK70Õ¨§ì]åP5åοìG\Ü‹ÕõêA®z¹ì—êz±º^:¬©¾°œ,åhù²/ûÕa{±º^Tg:ÓC»»ô¶˜¯Kë°ât9%èýa%–VfibbÂc µà2¢Ÿ3Ϭlbi›YÚ–&¬Ž¥M°´CXšPå綠Ñõ(–v4K;†˜ÅÂkHpüÿ5?v!_¾*ßÀJñÏ^Š#­ùSŒK¤«Ú•9LKŸü '¦MÃÒ( gSš  #‹´Ñ$h)E˜¤@Aœ#}7I»"²¨ºZWÜ-%~¾›Qü:;žv¸¦=\œÀ„'½¤?íeùêÛø¥õË/#§\Bq¹¨4õšñt~I.ZH2ÞH{MvÚ[³“o›¦$ùbhÃ*ñ~ÑŒ÷þš†wß}l=M”ú6]#ƒxalÆ«TSÞ,˜¼´_„hW0UÏ$ù–MGiÊÉh²Ä{/iÖk0s´Ø›Ý—2ñxìkT¿kT¿®æ$ýgTkwT·oòýzÉ7ã!Ú´wЩ»Ö[ÜÔshÖ;ÔÐC¶êÁÑPçÃoù’ß™çîTï8èD¼[i~‡+mØoY²Þ$i÷Ù´Ùoÿ±ßÛ£H̼YƼ½Æ¼!Ǽµ$ñ–ô¶”´|¨Œä»@F“Æñž ’ùŠŒAØZÏ ç½s@ÞÍ|ì?íazë d~)¥²×±ì‡¼©Ëœ÷<±¼›ó”nŽžsŸM{˜4óyN÷ñN"ÎÒ¡)ÍçYÆäój‰çÍsçØÏÉe> —|+í9ª´§¶T>¦Îy-dò餴§zÒžÇQw?Žñãøê ªŸ‘'Ï—Yœ§ С̔3þ4åô;>"h7çŸÍ¹k©’ŒSʼnӸÉC­ÎÑÄ´£˜2³9=ábèxˆuÊ"ë”OÎI¬dæœC€MáV™Ç>Ì2‹»…M36àÝ äö[¡Ù[e|1)³6U²—‹œ…óÌ¥¦´õN‡sþ2U›Å•‚ë4i« ÎÊ„+U»9¢ÿøÿ€O²W\„â7#¨Ù_9·Ø'Ìûð_ØÍ¸Ãþ…‚}v¶TšìCɹßBE[g!”¨ÊÁk>¶²  òßð’0 IqyöÔ¿A óÞ¤O¿%âéÀ¾Šå$…Ù_V¦œþC¸š¢R¹Rd¿®¼aã¦Í[ÆÆ'9ô°Ã8ò¨£ÙzìqÇŸpâI“'Ÿr¯SOÛvúÛ³ø°7žW+åÒÐðÀà†#£›7m9ô‰ñÃ;òˆ­Ç}Ôñ'{ÜäÉ'žt¯SN;uû§oËâF4(—ª•á¡ÁÑ‘ƶlÞtÈ¡ãGyØáGµõ˜Ž?îØ“NªN¬~¬>ªnªN¬~¬>ªnY|T[±vcí¤ÚLµk7ÖNªÍ²ø(Ý0=)Ûa:RºazR¶Ãt”ÅGÕ‰ÕOµ«›ª«Ÿj+V·,>ªN¬~ÊYÝTXý” ²ºeñQmÅÚMÙ k3ÕV¬Ý” ²6Ëâƒûîk¸Oá¾–Å÷ÜGp_À}$‹Ï⾉ûlܧp_Ã} ÷µ,>Øf°-a›Á¶”Å·5¶ÜÖØ²ø`ÛÃ6‰mÛdl3Ø–°Í`[Êâƒ}öEØç`_”Åû ìC°¯À>$‹ö]اaß…}Zìs°/Â>û¢,>YãTÖ¸–Å'kœÊײødSYãZŸ¬q*k\Ëâ“5NekY|²Æ©¬q-‹OÖ8•5®eñɧ²Æµ,>YãTÖ¸–Å'kœÊײødSYãZŸ¬q*k\Ëâ“5NekY|²Æ©¬q-‹OÖ8•5®eñɧ²Æµ,>YãTÖ¸–Å'kœÊײødSYãZŸ¬q*k\Ëâ“5NekY|²Æ©¬q-‹OÖ8•5®eñɧ²Æµ,>~¦jÓ3;fÏ<ëìsν÷yç_pŸ¹ó^´ëâK:åÃÙLÝ›3âlλ„3ê”gS;—3âlο˜3ê”g3}gÄÙ\°‹3ê”g3s6gÄÙÜç"ΨS>œÍ®æ39›9®æùNùˆ–­&ZJ´Z§|„$B*!‰ªS>B3BKB3BKò-%ZM´”hµNùËV$,GXQ§|„% «–,¬ºS>¸Oá¾Ö)ܧp_ë”îS¸¯uÊ÷)Ü×:åƒûîkòÁ} ÷µNùà>…ûZ§|pŸÂ}­S>¸Oá¾Ö)ܧp_ë”îS¸¯uÊ÷)Üר˜=04»¦òx ¿/WÉE:áišÞ|¨ºG$‹ä/Ý©äáÐ#þDžI³ï'x’ä}U/{áŸT'‡w’>ù¿A„eÈÇ_sYù•nÒè©”= ©1¨ OÖÛÜ”­-¾ÃJKH¹7 î¥Ý¥åúødéì3_»‰ÿ½™ÿ½…ýžÚÆþÖøßiþw†ÿ:•ãüoÿfk‹Œjæ–Sù_–³¶À¹=†ÿÝÃïÞÄïÞÄï^ÃSnæxCàp·Îå¹ââ›øß›ù_&ϳ¬Ü+fküï4ÿ;Ãÿ29çkü/“öŠ‹÷€@WpI®àRAÊÿûþwK¿‰ß½Iܽ†á7 ¼Áq¸+õ3{*× ÿ[ã)¬HçkS““ð·6ÉðiŽOq¼ÆñéI]/Nu§ºââ½?•§ó¿ß8ÅK¯q|šã<åFž²RæázþZ!Åüuì{ïÖ ^»¾÷‚™äL›Î¿YúÀᣟ¾vë…üÒ§÷@ ÷f!?ÃgY:Ã÷n½dº„¼Œ}ƒ¾.|n÷¥»/¿l÷eó—Õ/Ûuåî+ë—\~ÉîùÝó»æëÛö«tùC¯Ü΃»‡>lûCçtÿK·nÝþ‡>ìŠ+¯º|ûCvùW²ë+.¿òÁðý°+zà½ýÒ‡Ì]þ0–~év³ë]÷gEoÝ>wÉý8ýå¹”_ßÿ!æß—ðl ‹mSüûZù]Óß5ù=Í¿¯“é×ÉôëtúŒÈ·—g`ß5ù=-¿gä÷ù *} ~Êr.”åÀ÷ŒüÞ!¿gå÷™òû,ù}¶(÷FYî²Üe¹7Êro”åÞȱï3å÷YòûlÅg»üž’ß5ù=-¿gä÷ù=+¿Ï”ßgÉï³¥<’_Mò«Õ˜ÜBOJ=](õt¡ÔÓ…ROj=íåò²ï³ä÷Ùò›ÉË¿§ä·â?-¿gä÷ù=+¿Ï”ßgÉï³¥<’_MòSòÖ$¿šäW“üj’_Mò«±úÏH;™‘v2#ídFÚÉŒhWøæíz…Ì…Î/íhFÚÑŒ´£iG3ÒŽf¤~$ý…’þBYÞ…²¼ eyÊòàûLù}–ü>[~3u²¾.Ë—ö4#íiFÚÓŒ´§iO3Òžf¤=ÍH{š‘ö4#íiæFÙ>{dûï‘í¿G¶ÿÙþ{dûï‘í¿G¶ÿÙþ{dûï‘í¿G¶ÿÁ_êïB©¿ ¥þ.”ú»PêïB­?i_3Ò¾f¤}ÍHûš‘ö5³×ðŸ–ß3ò{‡üž•ßgÊï³ä÷ÙRžíÜç û˜Þ¦Æ€iù-ìcZ8"öÍå—ù/”ù/”ù/”ùá{‡üž•ßg >²§e;NËvœ–í8-ÛqZ´#øq¡·iÙ.Ó²]¦e»LËv™í£–¨Ç¬¬Ç¬¬Ç¬¬Ç¬´óY!ŒBžYóÍË‘|.”|.”|.”|.”|.T|fe½fe½fe½fo”rÊöŸ–ü§eûOËö—å_¨Ë—÷gÅý+…8ð]“ßÓò{F~ïß‚ û®Éïiù=#¿wÈïYùÍÛå2Éÿ2Éÿ2Éÿ2Éÿ2Éÿ2AßgÊï³D¹{d¹{d¹{d¹{d¹{d¹¢™`¼ù/“r^&å¼LÊy™”ó²½:ÿ™òû,ù}¶âÃüÃõ[·6áÿ¶Å'nÝúDø»íÆ'n{Ì“·n}ò¶Ÿ²w+ îõ4¶=¦±íÆÝ¢¢ðÙ½M¡»k[s±«§²±:ß|Øîf.¶¨±F÷ØNÍo¾l§–e¾Ñ=¶»vF3»zJàiؼÎ× ¥-j¬Ñ=R-j¬Ñ¶SË2¯9wŽí®ÕjöÉÊ`ÿ võÔ¼¾;¯)vi¬Ž0E±»ÙTœ› ŹÑÐi k,¨»-s·¥Òu¾–É×’ióºŒy]Ƽ.cNß[Ô˜.wNsÞ¥óíÚ³GÕC§Õu>„é›Me­V+5êîâB+5› šBaM5 š¢©Ó4—†)·©ùµØ"¢Ð¥©rAkMé4U£ù†¹k(4¦åËÇvi~ Ý=ÙX]ç«ëúbLñC˜ÑŸp8¦½íÌÕ5MK ¯nòmS‰uížÑ=¸H_2sFKßm¡»-«kZVÆ 6¶{F÷·ÑÇ„Ì5ƒ‰žütZM§Më´i‘V×üꈋ¶É™ETFSa-‰5”˜i5L¾fCa‹ ÁY·ÌL#»zª¹'‰5 ô\k*×5&»` -jLvþºÎW×ùêº †íq0ÖªMÕ–ÍFCµåb3‰µ ¬©ï6Í]Ía†sCkJn(ŒiNØËb#‰µš ¬©ï6Í]Ía†3Ã꺾 k4%²VÊÆØnÙ‹¦{Ï´êe—ë»Û½M¡—§`»§§T_˜®~S²W&RY:­&Ò.ŸVaÁvO75—)e÷Ó “ÖPÍ­I¬‘À@ú©¦Æ”ŪB“¬¡FÍ­I¬áb»gµ^fµþf¯Þ¡±šÆf46­d™Õ´Ú7Á]é›fk†Vy଱šÆf4¦|ɬö³ÚÀ]é-“þ`۬º_Îê>=«úô¬îe³º—qI¹urŒ[lMÙÁ.Õ5Æ"i™¦°ÝMe:»[Il—¾»kO«Ú–‚íž™6£FMà»tÚ.è *MauL1=­ý¸º›ÄÀ‡I3Ù¥±ºÆØÝ–¾Ûp0–oÖFSë åbMœÖt°]MŒ5\l¾Ûkdbu]Óî33*©»mvÂî)åÔum*ÿþ”ž]ÉüWOMeßßéÐÏ;üçœëzâ¾Mïò«'åkÚ×M·>Îý©Eûºáäo9× .¿纕ǧSþ¼#ßœs]OÜ·é]~õä}«üy§~sNýêNýæœúítêWOèoJÏâÄ5\NåÝŸÒsG™Ÿ]NeÝßéÐÏ;üçœëzâ¾Mïò«§ÈwÆ"¾†)mÿg´œë·¾ Îu˹^´¯Õ¬UòcÑ)ûºå\/¸úZp®[εæ¿Ó)Þ©ßœS¿ºS¿9§~;úÕÝú鬹¶ü‰žÛ×*ϼ“Þá·Ë¹®'®m~fö¬®¶Ì:þvÖñ·\ÈÉkíßjvÿÙå\×k³^¨îÛ×,¾Æ]’Åßy×»œü,>Ì»®'ø3ÿcRêm®Íº£ºV«²<ç¾YL¿®'ùMOÛñ“?ÿÚ¬YÊòœëºsmV1MþFεY×Tò1}š.ÎÆCvÝʼ¾º&(Zæºe8¸×»þ꺑y íµÓw{Ý(t]wäãKÙ“z½}ûüÎyþ'ü±0û+çÿÚ¾Ú?—\Îþ+”ÿµ¿WîÃG¾0Í{o Þ$Üó¾ÕÁG>Áâ³î˜y¼ÎƒT¾ Ç;:ïî¼Wñ¾Â×Çù°Á>bðaûnî`ù^ wuÜ»ðNÍ{_\ow,)yÜ(íx9âcŽé¤«Ù™z F-ÚíDiþHIá#%ùIÒŽ¸C#+}T$÷HúqþíÈ;ÆqÏ9¼‘<¨Ñ¯ãíe=€Qü°EуEQtr8"íHÄÊ„èæøCOGü±†v¬!í0Cþ†¢ŠWèüB›£ )R!¤/H;JP4ö™K‹}ôÂóœN›3[“)±ÏŽ}ÐÝyW§ÝscŸùšíkM}ôXûµ†Ló±}?ûøØÇÇ>[}ì³u«}dZï±ÏÞ©­{k[÷NoÝ;³u{g·î=sëÞ³¶î=nmß;5µwª¶wjzïÔÌÞ©{§f÷N¹wꬽSgï­mß[›Ú[«í­Mï­Íì­íØ[›Ý[;soí¬½µ³÷Noß;=µwº¶wzzïôÌÞé{§g÷NŸ¹wú¬½ÓgïÙ¾wfjïLmïÌôÞ™™½3;öÎÌî9sïÌY)ò`I„lIy°$\¶‹¤¥\u“ü¾Y~ß"¾ç§k7Ý| ÿÞvÓ¶›oa×ÛnÞv ¿æßü6{•]òoÈß<ðÝÆ9Îφó3Ó·ˆòn–åm×7«û7©|7‰|â>\ß,®U>A_—ò‹×5¨6¨W6°—ù®˜ÝÁåƒïm,…]o“ß,äÛ&¿¹DWÌné‹ \!å¾BÖÒo–åqá[Þr_1£ä¸bFÉu“ÊÇ”þçge½¦å·Š§k¢þ³;n±ÚiJµ›ÔcÍi?Õc•~$Ÿ+$£ù=­ë%¿§œzÖý:»³m>ÌN¶Ý"í„ }›û5i75iG5žñªm²‚Ÿ«,.i÷oʽ_ôÃìAØ‹°knÛnA÷wðþ …}ÁõÅù€û¹`ô+RUúi4ŸÀþ^Ûºþš§HüñO¼Q§ó Râ·,<^áOB9Ÿ$òóœOùyÎ'‰¿"¿È)ò >²\ÄAв· ‘dœNŽ G’£ÈVr<9‰œBN#gÙAÎ"ç’{“óÈùär2Gv’ É.r ¹/¹?yÙMH.'W+ÉUäAäÁä1äò|òò*ò§äÏÉ_‘“ÿGþ™ü;ù/ò}ò3òò“2¡›é!ôHz,=‰žJ·ÓYzoº“^B@¯¤£O¤×Ó§Ò›èÓè é«é›éÛè_Ñ÷ÑÒÒÑ¿£O?E?M?K¿@¿Ho£_§ß¤ÿEÿ›~ŸþþŒþ‚þšÞNGƒ#‚“ƒs‚‹ƒ+ƒG×­àúàÁsƒ¯ þ4xsð¶à/‚¿ þ&øXð…à?‚¿ –‚r¸!<4<9ÜžÞ'¼,|XxMøøðÉáÓÂg…ÏŸ¾ |Qø’ðÕáÂw†~,üáçÂ/…_¿~/üMø‡ðîp9ƣâ#¢“¢mÑLtVt^4]]= z`ô èaÑ£¢…hOô˜hoôÔèÑK£WEoŠÞ½?úÛè¢/F_¾}7ú]”6–Ž.Rš)ݧT/]Yººô˜R³ô¬Ò+KVzgéC¥Ï”þ¥ôõÒwJ?,ýª´¯T-—.O–·—Ï,Ÿ_¾¨\/ß·|¿ò¥åËÊ*?¢¼Xn•o(ßT~Zù™åç”_X~yùÕå?-ÿYùÍå?/¿£üÎò»Ë*ÿ}ùóå/—ÿ£üÝòË?/ÿªüëòoÊ¿+ßY¾«\®l®Q9¥rZåŒÊ9•‹*¨\YyHå•GWžXyZå…•WUÞ^y啪|¥òÍÊw+ß«ü òëÊ*¤:PÝX=¤zLõøêÉÕmÕ³ªU/«>¸zuõÚj«z]õéÕT_Y}}õÏ«·V?PýxõÿU¿Týzõ¿«?«þ¾ Œ:pÜÀ©3ç ìxÀÀƒ5ð¸§ðN¢üÅ`üåXT¼$Ëzm•ý",çÅXÎ ´ç¾KïüHGÚKÀRåá8*O\yä}çš ^Tð:@üdm,}Pj닽ÆÊ¹ŸV_—¿sªêÔ‡byc*Š&=çSòÇ1åù9]þB~*è°þ¨£?Šõ#dróÇ)ùY^-Sþ,¯’Éè[¼-N¼ì_gµOñüÑñ:tݹ=ıÌKBez:?M#énK~ÇÚÜ—íJ”=¸ö!óÕþ®=PTFjû«ö•÷ÝöÖí‰ìÓnß”ú¸ò»ò¦É—ao‰ò¬ÍõŸÄ}ñ ë/]z×ߦøS£FÌ?Ýÿeû»úƒ¯oê+s»ã édüò·õG9õqëëÊOøo¤w ÏUÈ¿3ýäÛC¢=íx)U„?wü&¸þ)ãù•/vä‹ÛÈ·‘/3žXêx'_[ýÅöïáÅqâ÷ñÚêOmYãgOòm_ILóâ5,oZü–"ߊµ¯”'7>Tù³âÅùV¬}%qšþÚÆ/9ò‘öóµHÊÜÖ5ië/WwyKNyKËÉòÜxÙâ·)/nS¿”òD½L<ÞKýLy‚ØèS—ÙÑxT\Ÿ‚ØèÓ”Gœù„ůk}Êú¥”—˜¯äÈß~<_éø 3~ 'ùåÛk¾|iüòí±óúæÛ[çõÍ·§Îë›o/Ú>Û­—¬þîø¸”¿“ø¦Ýø–&'ñIaý˜2:Š/ ëñï$>(¬Ä?o|wíÛ•ßõ§I}u¹þŠø[×â&p c_+Í'ñµ®¾¶ï»ìÄüÕ®±õÔ\ù‰ü¡Y~à\§ñË“'³||M“åǸqlÇW0°ü0}¶®!ÁŽkÈ`¯Ïö5+/·>‰þ?¿'Ä®Oà\ƒõØ÷÷‡Ø¨]¿À¹.0ÀÒ'ì½Mÿ {“ñf">ìë ûµú›*ÝϬïJ×'މc¿AOöK}Áú°òóêãÚk²?&öÚ®ßÚò%õŸç/iø4O^W>6>ºöÑQû¶éßv}Ä}|M³ú_Ñú¥í#~EÚ£ý%Êëp¿Þ.OðïÄ_äû¨_ØYýþ—’„¿ìE¾•×W^ù)þ¹€¿”m{K-¿}yíü™í¯øþe„ËëÂu°žÅo§÷Ïâí×OÚþ­³–æ/¨Åƒšü¼¨ÈÌÿLþìõ¨þ •§â)w}¬Øü5Y^Ûõ»ýÃÖÇ_ßK«/¾oë_È“Ýv|¶œˆ×ÚØ‹»ž$íÉÑOjûuRÿ¼úö'æ²£öŽiŠÿÎi%’WÉc®ÓãUV^vû®¿ú¶«Ob¾•þ#Õ9ý³Àx×<±³žNãäúº¥¿˜8ýÞÏÎ5ãçåé^žÄ~HÇû}Iû:Ðû%º6ë‡Xž¬ý•”ý *¾.•JÖuçõ³Ë_ZZrâ¯ýÖõ¾}û¬ò ¿u½îãò÷íùUùûöí×ùYyûdþÕR>qô$Öýê Íþ?ÒDÙÉÝßÂþžÏ63âq‹P\>¾¶ø£õÛÄø¶ŸÚ¬ÇRg¿MñϪÍY¾'ÈëÊÓ®|ÒÓþäÁàŸŸNÈâ¯Óšªo£Tªåo/_ûõFùÇšo¹×Š_;ûqëS¤=’ã]»ùSïõË+/tâÛRNÿìT]Õ·Ãõ“Îô!䱯;ÓW{ùÚ­×÷*¾¼®¾]~ œ;¿IÚ“;_uϳÇÎþÀ’³>´ä®wÓdþNêçÆ‹”:û[YûwYõ‹íøÍ=éÆ;KKN|½¼dÅËËÎ5£ïÄÞ¨S_·¿bú´x£÷ñ/á/¬ø­R ñlVyìÏþ¥eÇìëÛ÷Ýeñ»sɾ¾cßÝ($”ç_AÿCÛîçtÑ©E“XÏ¢˜gb¿»ÍþxþÀ­OayÝò¨ŠÜýá°Ú޾ssuøcT^gíå®ß…Q'õO´§Û~ÝÚ_áö,ÐöìØß¥ø7Ñ$˜%Å4ÖüŽñOË_Ôºò¤•Oc‚Ë«âòóËKÚ#MÛ7±cŸÂ¬ëÜöHáÏèÓø÷wÀ¯WúÎâ«‚å¯Dyè~'íÓ‰<íúŸÝë4{ä×îú÷'I~Œž(¿„î¯tþæwÉù[»óÖ=Æ–=ñ«ÎÆ£ŽûWþy¥ÄøÚfÿ+éOíó‰óJmÎ7‘vúêp¾ì¶_½Ë¿¸Jáß“ÿI±¯ÏSX¹W4ž-âß:‰Ï2ì¥M<Õqýº¶NÝY{Zö"èSõYTžDÿKž÷´X³þ„â~mÉÓÿõ%OeÅk8?öÏÔYïpåuåsý/åû§Aª=¥É‹Ç3,_öxÑ[ü‹ë¯ùáë‚ãQùÜò;‹gWžŸkÿmý_»õÆêå}|]༻éoˆw©ã ’·ÿk×?éíç^÷<¿Nžo±ô‘ÿ]ý¬¬ÿvýGÛõÒa9ñ„»>»ï'pŸwî/-9ë³KÎúlìÔǹfô¸>ŒÞº^¶ÏW.-Ûç™9}lêǯ;h?êÄωóó ûsì9w>­³Û'ÑùëÇîû–‰½žœ¶^œŸÝ_vô½lë—8×mÖŸ“ý£3Ù[|#Ê·®{§;ôO ùÝxhEý MÄ'…öcÚøù—&õß¹þ:ÝÏqååû9(¾dùñõ²s>˜çGò&÷ƒòÇ«vúuåKŽ7íôã–·SGùþ®íx»æÖ»mû¤Öú²kŸZˆ<{ÍOÚ®Gtÿµëiñ æY$~Éë¯)ϯgÞáþ¨+oh_»þÝ‘×߈s“8WÞ¥8ü#îxH–œñ/¶¯cg¼Œ;óÇW¿iÏ[Zò·ëonÿrÇ£ eÿ(/^¤®¾xŹvÛoÉ9Oê¶Û‰xÅy¾-Ÿ°ö°Ú'N¶ŽÛ·_~ÿXUñ@yþ‡XûK™öTÔ¿´“·~þ%E^ù7Åß§•ïÚkûŠ]{]vâ%'Þpí§Ýúc¯çMÚ¬W¶×ÜþæúËüþÙÖ²þfÅ'KÉk+>ëÿy–Üý^ç»òÓûÍùþ<Ï_±›ŽK{_§Sßvü±>\ùIÖûe êËÖ0²uMíûQ`ß'môj/±EØ×+ÛÞš.ä•GË¶ÚøãT}ñ™õÏŸßDÕp_W#û:!›ñ…•w ý[;ýK‚ŸäöŸ6ëÍÝè#×? ññK´G›þÕNžŽÇçvö›ÓiÊúBÖ5Ïí¾_›¦Ø#ªoþ¹õuÏÓtèiÚ~¤CßîÚµÇó«ÊŸŸŸçéü¥åØ×«ËßçÛCùûàï×¢>Eöø ï·éß¿ˆ9éâùöùu䞇H1ë®ô8÷ïÙòZýÇí/Qu £þ’"oíÝÁx¯{˜äûŸ?¿èL~ž§ÿãKa!ï»þ²³úÚûN}]{uëÛ©¿/P߃êÿ5Ä_wfˆ¾¸ü¹þ¡Sý¦Ôçž7žñǘ_ÐK{uÿ¸ú"Ž~Üó… }µÕOòù•lÿàëãÊïÊ—jŸ#š¼8ý§Óñ5µ>™ö•!¦½%åȮ۷þ˜?ÍÙUüœÊwÞž½¶_êz±¨.¯Ð|¿@ûX¯Î•ß)ß=ïœ|Xâýì‰ü¸ü^Ï/·³÷´ösíÙ]ß)ò¾¸ì÷Á%äiû>¸¼þç–×NßíÞ¿Æîãòïcëø}k)ó7¬Oçù$’æ‘êŸô×þ¡ýŠú~û£vþ&¥«\C³¢þŠwç/mÇ£Nü­æ¯÷ßÔuáú¬¨?Qüù­ÞŸ¤®;_WÚ¿Ð0ù—µÍ®êòÛùŸÀ=Ÿçø#âöÏ´øC”#¾CÙþÖï-›þÛiýÁ«ª–ú>²Gè?öy«J¥ ¿tûvíøÙÏ „¶üA%)ž?SôH_‚>[_«J²þ7Ï_¹þ8-¾2s[Jœök'_[ÿÛ®ÿ¥Æ;ê¼`ûx§]¼ß®?¦õ¿NÎ+&ÚÇOÜñ†´m¯Äó,οrÇ‹ô÷i¯Üüë`—”l $ýÕ=-RR“¬ùZý9QŸDûµûý#·ý²~Ï+}|pçs¤ÍüŽÍϬkwþæÎïœùܲâ'ó´}>µÃøÑÕI諈?¶Æ×Dü(ÿšöîÀt:?oßþ´óø7Ç>Wz~/“|{qžÕû5%XÛKlìÉ¿ZÖ²â{ußö×Ùãkšýâ ×·“?M^«}$¿§ýø³óù¾bª÷#:yžÊy>ßß–’ö^d~ÛÁ|ö –ÿù·¸ÛÍþÓþ³gáú…«ŸzsãñO|ÌcN_¼¶u ÊØŸÙ™íð=Åþ³ë©Ùí3<}jvfÇôŽY2µ½V›Ù1{æÌì4Ù>5=3]#[·aÜÏ ×]¿ð”­[É㮿æºësò5®¿îÚæÁè ~~tß ï¶Ìµ±ímÖeK¬/UX—Ø pÀ Ûf.¸àh<à€g¼àUox À;þà}øÀß|àó_ø7€¯| à»?ø)ÀÏ~ð¿ø%À¯~ ð€ßÜð;€;þ°Ÿ°§ElÎBõ À ÀÀF€-‡ p Àq'œ p*ÀéS3gœpÀ}æ.¸`ÀÅ—Ôî p?€û\ ð€ËpÀUx(Àà p5À@`À5x,À^€kðx€[^ ðz€w|às_ø>Ào)áçi6p:Ày÷x8ÀãnxÀëÞð€ø*ÀÿüFÅ€£¶Üà~x0À#×<à€§<à…/x ÀÞ ðN€÷|àcŸø,À—¾ð=€ŸÜ²_ÛƒÜpÀ$ÀÀ¹\ðP€@à©Ïx)À«Þðçïøk€ü=Àgþà+ÿ ð]€üàwìw¥è8àX€“NØ°à€ .¨<à €‡<`à±M€ënxÀ ^ ðǯx3À;nx?ÀG>ðo?¸ `tÊÎx@à&€—¼àc_øÀoØÝœ\ p=À‹Þð!€øÀoXðÏ_øW€¯| àßøÀÿ|àG?ø?€_üà7¿¸àwwüàN€?°}hö[ì÷¼Øo8,I'”†6l8à€£Ž8`;À½.¸àÑO¸ àù¯xÀ_|àÓ_øO€üàn€ê !cÇÜ `À}îð €€'<à¹/x=À;þàãÿpÀ·~ðk€ýå!B6 0 P8à€+p-ÀõÏx ÀkÞðf€·¼àV€÷|à#ø$Àg>ð€/|à[ßø?€;–*ÃÐW8àT€€óv\ð€€Ç\ðt€¼àup+À>ð_ø€ïüà7¿¸à.€%vfkÚ  00 °`3À8À¡G p,À “÷ذ``àl€óæ.¸àr€<`à1xÀ ·< àù/xÀk^ðf€·¼à½øÀÇ> ð€Ï|àË_ø:À7¾ð=€ü࿸`À_D%€2@  0000 00 °`#À&€1€C8 `+Àñ'œpÀ5€gœ p>ÀÀ<ÀEÔîp)Àe¸à*€<àá¸``ÀcÐxÀu7Ü ðt€g<à/x)À+þàÕ¯ø€×ü)Àë^ð€?x#À›Þ ð€·¼à ð€¿øÀ‡>ðwŸø4Àg>ð€/Üðu€o|àÇ¿¸`@ÌÚbè`À!Gp À;Θ¸ p?€K.x ÀW<à¡x$ÀÕ €k®h<à€›žð€¼àå ðZ€7¼àmïxÀ>ðI€Ï|à6€¯|à{?øÀíûb€ÒF¨'À&€CŽ8àD€S¶Lì8à<€9€‹ê—<à*€‡<`à€½h<àz€§Üð €g<à^ ð2€Wü1Àk^ ð:€7¼àÍoxÀ;Þ ðn€÷|ࣟø4Àçþà6€¯|࿾ð€_üàN€»–È&è@  00 0 °àP€£Ž˜8 ` `à\€û\p_€Ë®x(À£ö<àqM€'\p#ÀÍOxÀs^ð"€—¼àþàuðf€?xÀ»nx/Àû>ðe€Ÿ„08àl€+žð€w|àÛ¿Ø´êp1À"À3^ð!€ø)@4c!À9W< à¥ïø ÀÜ °ylà€À3Þða€Û~Pšp.Àƒž ð2€wüÀwþ°åˆê{žðgø7€Ÿ”»¸7Àƒžð,€—¼à]ø4À—¾ðc€ßÐà}Ž8`ÀN€Ëp-ÀÏxÀ›þ àcÿð€ÿø5@p8ød€“θ/À#ZÏx5À_|àŸ¾ðËa’vÀ À.€‡<à靸s€ü#Àüà.€á#¡}¶ì¸à17¼àM ð €ø:Àÿü àn€£`.p<Àv€óî ð`€=Ox&ÀK^ðN€| àKßøÀíäh§8  p>À}°Ð¸à^ ð€¿ø(À?ü+À·~ð[€e€Ác@F€ãN8`ÀåxÀÏxÀŸ¼ àƒÿà_þà~ p@ m…úŒl8à(€ã&N˜˜8à>Üà2€+ ð(€Ànx&À ^ð€·¼àßø<Àmÿ ð=€ŸÜp7@éXà€­§ÔθàR€\ p Àãž ðT€g<àůx-ÀÞðn€÷|àãŸøÀ¾ð €ï|à§¿¸`?@t´+ÀÀ1'Lœ0p€«ðX€'Ü ð\€—ü À›Þð~€¿ø À¿|à¿~ðK€;ÈñÐ.›ŽØ p"À½Î˜8à|€y€K.¸àÁXx ÀãžpÀ-Ïx>À‹^ð€×¼àíïx/À> ð €O|à_nøÀ7þàû?øÀož~ `` ÀÇœ 0 p.À<Àý®x8@àñ×< ày/x ÀÞð€|à³_øw€oüÀ~ pÀÝá‰Ð6 p ÀIÛfÎØ PØ ð`€G\ð€ënxÀ‹^ ð€×¼à­ïx7À{Þð!€|àSŸø'€/ÜðU€o|࿾ð€ü ࿸à÷û“ T†F6Œ p$ÀV€N8 `;À ÀY÷¸À…—Ü`7À•xÀ£öìxÀõOx>ÀËþàMð^€ü=À?| àkÿð€ÿøÀÝÑ$øk€1€#N8 `à\€u€ÝxÀ5O¸à€ç¼à• ðf€¿xÀ>ði€øW€¯ü`ÀÐÉàßΘ¸à€§¼àïøÀW¾p@嘜 pÀe ×¼àu·|àËßø @x/˜ÇLœ p?€G<à9¯x'À>ð%€oüàvr*ø€Ã&fæðp€½7<à•o¸ࣟø7€ïü àN€è4°€­gœp)À#p À‹^ðn€|àkßø-Ýc5À1§œp€‡<àf€¼à]øG€¯ü/ÀoØ"ìé08àX€{LÜà"€<àÑ×<àiÏx9ÀŸ¼à/>ðwŸøÀ×~p@é Ð?À‰;.¸ à€^ðZ€w|às_ø!À¥í@p"À€‹®¸à€¼àøÀ×~pÀ@i Ú`à(€¶ì8à"€K®x$À5M€žð€·|àÓ·üÖþ*JŠÃû0qŸAÜ ÁÝÝ=„àBÐ`Á]CpwwnÁÝÁÝ‚ÜeŸ|õß³g¯vÏ·{ñ\rfº»ª¦šéyWxÄ¢gw|ž<”¦Íø…þŒa6«ØÎ1.ó÷DËáø&¹)EMòéË&2‡åld7Ç8Ï-þås:NHD²Q€ÒTã{šÐ’¶t¢;}ÌoŒe23™ÏRþ`²›ƒç4W¹Çs>ù[Ç;‰HMòRœŠÔ¦?Ñ‰Þ e,ÓYÈla/Ç9Ïe®s›{<â)/yËGÂæò•b—$$_“˜$$%ÉIAJR‘š4d 3ÙÉE> QŒR”£Õ¨E=ИæüH ZÒŠŸhÍÏ´¡-íhO:Ò™nô 7ýȆ3’ÑŒc“˜Â4f0‹9Ìc‹XÅFvp€œãwy›ÿ~I“ÛÏ8bŸd¤# ¹(H ÊSº4äGÚЉôçw¦²5lç0g¹É¿¼'r÷*$årSœÊ|Çt¤7ÙÈ\V²…ýœâ*xMø¼~F“€Td!%©Âw4§==̦³ˆ5lã s•û¼$L>ç?qH@2Ò’™o)@qÊQ•:ü@s~æºÓ¡Œb"3˜Ï2Ö°™à8g¸Ì-ðŒ·„Éï9$ HÁ7ä¤ ¥¨LÑŠŽô` #™È,³š-ìá'8Ã%np—Ǽàa ¸ç$qHAvŠQÆt c˜Ãjvq’<#\Aÿžd§ÕhLú1†9¬f'9Ï5îð˜—| |!×XbŸ¤¤!9ÉO1ÊR…Ô¡> iJ ZÓŽ_èJú0€!Œ`ã˜Ä4f0‹9Ìc‹XÂ2V°ŠÕ¬e=9À9îò†(…}ï¤#e¨C º2„I,b#8Ç]Þ¥ˆO:òP†:´ +½ÄoŒc*sXÌ*6°½á¸Î]þåïøD¸¢Ž¢Jâ‘$¤ ÈLvr‘B£¥(C9*P‰*T£µ¨C=êÓ€–üBo†1žY,e=;9ÂYnðˆ7„/æ{%©ÈB. R‚òT£. ù‘6t¢ýÆh&1“,g-[ØÅANp–+Üæ!ÏyGØâ^/bĤⲓ—"”¦5©OZцtæWzÑA c$c˜Àf0‡,a«ÙÀVv²Ãœà4¸Ê-îñ˜ç¼á#áJ¸ƒØÄ#ÉHE:2’•œä¡E(A*P…Ô¡> iJ ZÓŽ_èJú0€!Œ`ã˜Ä4f1E,ckÙÈVv°›}äÇ9ÉiÎq‘+\çw¸Ï#žðŠ„+éu$”/IH2Ò‘ìä¡%(GjQŸÆ´  ¿ð+}èÏ †2‚ßÃx&1•Ìf YÂrV±ŽÍlg9Æ)Îq™Üá!OyÅ{”r_E4bò_‘ˆ¤¤$-ß…ä&?…)NiÊS™êÔ¦ßÓ&4§%­iK:Ñ•îô¤7}éÏ@3”áüÆïŒf+ÙÆQ.ñ€wD-íºHZrQ’4¡}ÅLVð'G¸È}Þ¥Œç€4|Kqªò?Ó¡Ld>kØÉq.ó€·D.ë•”d£0ùŽ–ta ÃÍD¦3—Ŭd[ØÉ~ŽrŠó\å6xÊ+Þ¦œ×”hÄäK„”¤#ÙÉMŠR‘º4£==Êxf³œMìå/.s—„-ワ¤&)KMñ3ÝÈh¦2Ÿ•lb7G9Ëuð’ÏD­àØ$1iÉF~JR™º4ág:Ó›!Œf sYÆ:¶±ŸœçxÁG"Uô¼Ÿäd (I%jÓ–t ;ø Ìd°…½ç<7yÄkÂVrÏI\’’ž¤4UùŽf´¥ýÎ8¦³€•ld'‡8Å%nó˜×„©ìy$_“†¬ä£•¨CcZÓ™> c3XÄj¶²\à÷xÌsÞð‘pUœÄ 6ñHD2R“Ê4¥#™ËFŽrƒ×ÿýûª^ rQž†tb3YËA®ðœ(Õ+d§4õiÏ ¦²Š½\à_"Twì’™âÔágú1‘eìä SÃkF Sƒ–ôb,‹ø“Üç/ _Óó@R2‘Ÿ²Ô¦éËïLg)›ØÏinò”Ï„Ôò\’žÜ”¤:hKO†3™…¬c7q•G¼'jm×;R“ƒ¢Tæ{~¢ƒÏ\þ`;G¹È=^±Žs”äd¡ å©Ët¢ÙÀl–±]å7yÌ["Ôu.’Ôd%?¥¨J}~¤=Â8f±ŒìᗸˋºÁcŸTd¥e¨ACZÓ•Œb‹XËŽpŽ[<áQ¾s½%ÉCQÊQú4£ ]èÃPÆ0•y,g=Û9À_\à&yÉ'"×÷Þ¤ y(N%êÒ”¶üÊ@F1•üÁVös’ËÜå9Ÿˆú½ÇBR2ð-E(O-Ñš.ôc(£˜È 泌5lf'8Î.s‹<ã-ax\„—¯ÉLªÑ”Î a ËØÆ nð‚H?x]É@*Ñ `‹ØÌ®ð„p =^Ò‡rÔ§ }Ã<Ös€ <ä±y ÈI j4úï3ÕîóÀ8æ±–=üÍ-^¡±¯K*rR‚4å0Žy¬es‹Dhâß“Šœ” Mù…Œc&KXÇs†ë<ä5ᚺ®Ÿ”d&/%¨L=šÑŽî b4ÓXÈ:vóWyÄ{¢6s!59(Je¾ç'º1˜ñÌå¶s”‹Üã5›»Æœ,¤ e S™ÇrÖ³üÅnòç¼#l[ß?1‰GbRñ ÙÉKJS‰šÔ§ ­hC:ó+½èÇ †1’1L` S™Ætf0“YÌfs™Ç|°E,f KYÆrV°’UüÁjÖ²žlf+ÛØËNqëÜå_^ñ‘í§Ä!ÉHKfr’"”¢Õ¨CšÒŠvt¦#™ÂV³CœáyG¤ö¾&IÈ@. R‚òT£. ù‘6t¢ýÆh&1“,f+YÍ:6²…mìdû9ÄQNpŠ3œçW¹Ámîò€Ç<å¯yÇGÂtp/K$¢ƒ˜Ä!.ñID’“Š´d YÉA.òR€Â£$e(O%ªRƒÚÔã{Ò„æ´¦]éņ1Š Lc YƬg ;ØË!Žó7ç¹ÂMîòˆg¼âŸ×Ñc'¡Ä! IB ÒÌd'ù(D1JQŽJT£õh@cšÓŠŸiGG:Óô¦ÂpF2šqLd Ó™Å\°˜e¬d5kYÏF6³•mì`ǸÀ?<ãÓû—d&¥¨FZÑ™~Œd XÍ6q†<æá;9ŽˆKÒ’•¼£<5øžæ´¥+}ÆX¦1Ÿ•lb7G9Ëuð’ÏDíì^‚Ĥ%ù)IeêÒ„ŸéB_†3ž™,fØÆ^ŽpŠ \ç.ÿòŠDèâºCŒ´d%/Å(O ¾§9méJ_†1–iÌgØÁANr‘ëÜáÏyËg"võõ‰ÍW$&%éÉD6¾%/)JIÊR‘ªÔ¤.ßÓˆf´¤?ÑšŸiC[ÚÑžtä:Ñ™.t¥¿Òô¤½éC_úÑŸ dÃÉhÆ1‘)LgsYÀb–±’Õ¬c#[ØÆNö°ŸCå§8Ãy.q•Üæ.xÌS^ðšw|$L7Ç4‘ˆJ b’ˆ´ä 0å©MÚÒÁŒe&KÙÀnŽs‘;<ç3ÑõZ’’,ä§4ÕùŸèB~g* YÃvs–›üË{"wwn”oÈMq*ó?Ò‘Þ g"sYÉFvrˆS\â6yM˜žâˆTd"…)CUêÑ„Öt¢?£™Ér¶p³Üæ9a{zŽIÌ7ä¥45iB{zóSYÌörŠëÜâ÷yÄžóŠ·|à3áz9ŸˆBtB‰Í—|EB“Œ”¤!=ÉBv¾%ù)DQJPšrT¤ Õi@K~¡7ÃÏ,–²žá,7xÄÂ÷öý‘€Td!%©Âw4§==̦³ˆ5lã s•û¼$LŸx$'#¹)FEêЄ6tc¿3‰Ù,a [ÙË1Îr{<ã=úzC<’’Žl䣥¨@5êЀ¦´¢éA?†0’qLa XÆj6²=âg¸Ànð÷yÌ3^ñŽO„ëç¼'¡Ä! IB ÒÌd'ù(D1JQŽJT£õh@cšÓŠ6t 3¿Ò‹~ b#æ0ƒ9,` +XÍz6³]ìãǸÌCÞÿ÷˜ú;ŽHGnJQ“¦t¤£™ÅJ¶q”K<àQ¸G$-¹(I šÐ¾Œb&+ØÌ>Nr…û¼"Ü@Ï/ ICv QŽZ4¦ ¿2ˆ1Ì` ëÙÅ1.ðÏøD´A^/R™|”¢ hEgú1’),`5Û8Änð˜wDì8 ÈEaÊP•z4¡5èÅ`F1™9,e-²ãœã:÷yÎB‡¸îÔ¢¿2‚¬bóoˆ64L˜¯ÉLªÑ”Î a ËØÆ nð‚Hüžd •hH0ElæWxB¸á®—¤!å¨Oú0†yüÁ6sŽÛ<ã31F8ICŠP‘züÈ/ôe$SYÄ:vqœKÜãá &‰É@nJP•´¢3ýɰšmâ 7xÌ;"ôº“„ 䢕¨Gs:ЋaL`+ØÌ>Nr…û¼"Üï^c’†ì¢µhL~ec˜ÁÖ³‹c\àžñ‰h£÷¤ 3ù(E5ЊÎôc$“˜Ã2Ö³ƒCüÍîòŒDí¹%!)È@vòQŒrT£iEºÒ‹ c˜Æ±‚µlf+ÛØÁ.ö°â('8ÅÎs‰«Üà6wyÀkÂqOA"Ò’ƒÂ”§6MhKw3–™,e»9ÎEîðœÏDë>”d!?Å)Ou¾£ ?Ñ‘îôg8c™Ê\–²†-ìá(g¸Ê]žòŽðãœ+Ä% iÉJ^ŠQž|OsÚÒ•¾ áw&0y,e5›ØÁ~ŽqšKÜâ!/ø@„ñ¾>_ò5©ÈHN P‚ Ô >MiÍ/t¥}ÀF0ŠqLb³˜Ç"–³š le'û8Ì Ns«ÜâyÎ'¢Nð½’” |KÊS‹F´¦ ýøIÌe›ØÃq.qW„Ÿè< 1ÈM ªÒ€ŸèÊ@Æ0“elb§¸Ìžòžˆ“£$ %™ÈMQÊS“hIGºÓŸáŒe*sYʶ°›Ãœâ"7yÄkÂNvü—¤¤')MU¾£méF~c"Ә͖²Šulf;{8È1NqŽËÜàyÊ+ÞfŠç€hÄ$>ÉÉ@ P’JÔ¦!-é@wð˜É"V³•}œà·xÌÂMu<dd '…(C5êÓœvt£ÃÇt°’ì䧸Ämóš0ÓÄ&ÉIO6òR”²T¥.hI{ºÑ—¡Œf2³Y¶²—cœå÷xÆ{"LwßM<’’Žlä¥(e©J]Ñ’öt£/CÍdf³€¥¬b›ÙÎrŒSœã2xKäŽ7R’ÂTä;ZÒ…Œe6+ù“Üç/ ?ÓóHR2‘Ÿ²Ô¦éËïLg)›ØÏinò”Ï„Ìò¼”td#Å©@Mð#íèF?†3Žé,`%ÙÉQÎs›§|$êläd"/%©Ê÷´¤}ùÉÌçþä §¹Î#ÞqŽçĤç[ŠR‘º4£==Êxf³œMìå/.s—„ë9!©ÉFAÊR“FüL72šé,f;9Êynó”Dçñ“œLä¥$Uùž–t¢/¿1™ùüÁŸä—¹ÃSÞq¾ë HI&rS”òÔäZÒ‘ž f4S™ÏJ6±›#œæ wxÂ[Â-p½äK“†,ä¡(å¨N}šÑ†.ôa(£™Ìló›ØÉAþâ<×¹ÇSÞv¡çŽØ$&=ßR”ŠÔ¥íéÉPÆ3›ålb/q™{¼$ì"¯3 HM6 R–š4âgº1ÑLg>ËYÇŸìå(§¹Ìmñ’D\ìë—Ä‹ÃüµQèüo$L(1ùߟåÿŸ «/ø’¸Äã+â“€„a‚«¯ùߟ!‡IJ2’“"Ìÿù“Òÿ³•š4¤%éùߟš…É&ØÈÊL²’ìä '߆ 6´r“‡ÿýB˜ÿ}ü>LA … 6¶ŠP”b§ÿûg˜Òa‚ ®ÿ}ü/Ly*P‘ÿ}ô+L•0ÁFW5þ÷¦05©Emêð¿Æ„ùŽúüï#a~ !h&ØøjJ3þ÷kó0-hÉÿ~mû6À~¦ miÇÿ~u¦#ÿͬu¢3]øß™†ù•ÿý7a˜ža‚ ±ÿý7S˜¾ô£?Þþ‡ñV=Œ·ÖÿgcÌÛ×0ÞŠ†ñ¶2Œ·…a¼ ãíWo—Âxkó6ÈÜ·qëÆíp·¤aÜæ…qKÆ-T·5aþw+æ?rÃø±ó6Ë\êÃÌÂe3ŒËÜÿÙ0sùãÔã4 ã”ø?›fÑ0KXʲ0ÁÆÙ V²Š?›gkXË:Ö‡ 6Ð6²‰Íl l¢ýÉ6¶³#L°‘¶‹Ýìao˜`3m?8È¡0Á†ÚŽrŒãa‚Mµ¿8É)þl¬á,ç8&Ø\»È%.s%L°ÁvëÜàf˜`“í6ÿp‡»aþï6Ú^ñ:L°Õö–wa‚Ͷaþ[ï¶Û>óÿÜWþo2|Ø`Ë-"‘›nQ‰N BÃÛn±‰6Øxû’¸aƒ­·¯ˆ6Ø|KH¢°Áö[b’„ 6à’‘\°åX‘JT¦ U©FujP“ZÔ¦u©.Ø€¬Ï÷4àÒˆÆ4¡)Íhδ e¸`;ò'Zó3mhK;ÚÓŽüB':Ó…®á‚ÍÉ_éNzÒ‹Þô¡/ýèÏ2ˆÁá‚­Ê¡ c8#ø‘üÎ(F3†±Œc<—“˜Ì¦2éÌ`&³˜Íæ2ùá‚mÌ…,b1KXÊ2–³‚•¬âV³†µá‚MÍõl`#›ØÌ¶ò'ÛØÎv²‹Ýá‚-νìc?8È!s„£ã8'ø‹“á‚ Ï¿9ÍÎrŽó\à"—¸Ì®rëá‚íÏ›Üâ6ÿp‡»Üã>xÈ#ó/O›¡ÏxÎ ^òŠ×¼á-ïxÏ>†ûoÛùÏ7÷aÃÿ·ôüß»óŸˆD"2QˆJ4¢ƒBÃ¥±ˆM¾àK⯈O’ˆ¯I>Ø6MJ2’“‚”¤"5iHK:Ò“oÈ>ØDÍL²’ìä 'ß’‹Üä!/ùÈ>ØR-H! S„¢£8%(I)JS†²” l°V "•¨L•ðÁ.k5ªSƒšÔ lµÖ¡.õøŽúáƒýÖü@CÑ8|°éÚ”f4çGZ„v^[ñ­ù™6áƒí×v´§ù%|°Û™.t¥¿†6b{Г^ô¦Oø`7¶ýÀ@…¶d‡0”a gDø`_v$¿3ŠÑŒ lÎŽc<˜È¤ðÁíT¦‡öhg3—y,`KXÆ V†¶j×°.|°Y»‰Ílakø`ÃvÛÙÁNv…vm÷°—}ìç9ÄaŽ„¶oqœüÅIþæ ç¸À%.s…«\ ìåÞà&·¸Í?Üá.÷¸>ØÔ}È#ó/OxÊ3žó"|°»ûŠ×¼á-ïxÏ>ò)|°Íûßñÿ6Þÿë¼ü×–‰@D"ñ_[-J„`¿7щA¡Ä$±‰!Øøý’¸Äã+â“€„$âëÁp’’Œä¤ %©HMšÁVp:Ò“oÈH&2“…¬‚=áìä 'ß’‹Üä!/ù"›Ã(H! S„¢£8%"»Ä¥(MÊRŽòT "•"ÛÅU¨J5ªSƒšÔŽìÇ÷ü@£ÁÎq3~¤­hMÚÑ_èLW~¥;=é!ØFîÏ@34B°•ü#!ØMÇ&1…ïl)Ïfs™Ç|D6–±˜%,eË#ÛË+YŬf k#›ÌëÙÀF6±™-‚­æ?ÙÆvv°“]‚ ç=ìeû9ÀÁÁ¶óaŽp”cçD„`óù$§ø›Óœál„` ú<¸È%.s%B°}ëÜà&·¸Íîñ B°!ý/Oy!Ø“~ÅÞñÿ:ÿ§íÑù1ØšO„ˆÿU?D&JÄ`ƒ:щA¡ÄŒlSÇ&_ð%q‰1جŽO’ˆÄ$ìX§$5iIG2’9b°mœƒë\ä&y#›×ù)@A E 6°‹P”blb—¤¥)1ØÈ.Gy*P1b°™]™*T¥ZÄ`C»5©EíˆÁ¦v]êñõ#Û ø†4Šln7¡)Íh1ØànAKZñ­#»ÜmhK;ÚÓ!b°Õý èLºF ö»¥;=èI¯ˆÁ¦wúÒ?b°ï=˜¡ c#ÅÆ2>b°ý=™©L‹ì€Ï`&³˜ÍœˆÁ6ø<æ³€…,Šì…/a)ËXΊˆÁ†ø*þ`5kX1Ø_Ï6²‰Íƒ­ñ­üÉ6¶³ƒìb7{ØÇq„£ãxÄ`«ü/NrŠ¿9ÍÎrŽó\à"—¸Ì®rëÜà&·"Ûçÿp‡»Üã>xÈ#ó/OxÊ3žó‚—¼â5ox1ØRÏ>ò™°‘œƒD$2QˆJ4bJ,b‡/ˆËW$ !_“„¤$#)IMZÒ‘žoÈHf²’œä"7y"ïùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*F 6ã+S…ªT£:5¨I-jS‡ºÔã;êó= ø†4¢q¤`ƒ¾)Íhδ %­ø‰ÖüLÚÒŽöt #¿Ð‰Ît‰lÚwãWºÓƒžô¢7}èK?ú3€ b0CÊ0†3"R°‘?’ßÅhÆ0–qŒg™Äd¦0•iLç¿ÀÌLf1;R°¹?—yÌg YÄb–°”e,g+YŬf kYÇúHÁ†ÿF6±™-låO¶±ìd»ÙÃ^ö±Ÿä‡#M€£ã8'ø‹“œâoNs†³œã<¸È%.s…«\‹4np“[Üæîp—{ÜçyÄcþå OyÆs^ð2RÐ,xÍÞòŽ÷|à#ŸøÌ¿ô ù¿B¯s–D$Räÿª¾Î]¢-rÐ@ˆA¡Ä$±‰Ã|I\âññI@Bñ5‰IBÒÈAS!9)HI*R“†´¤#=ø†Œd"3YÈJ6²“ƒœ‘ƒFC.r“‡¼ä#?(H! S„¢£8%(I)JS†²‘ƒæCy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{D iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Ð1rФèDgºÐ•nüJwzГ^ô¦}éG0A fHä q1ŒáŒà7Fò;£ÍÆ2ŽñL`"“˜Ì¦2鑃fÆLf1›9ÌeóYÀB±˜%,eËYÁJVñ«# ޵¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>öGš9ÄaŽp”cçq’SüÍiÎp–sœç¹9h„\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<áiä 9òœ¼ä¯yÃ[ÞEþ¯òæüç#ŸøÌ¿ðý¯ö_ü¿†XþkuGŠ4L¢•hD'!„“XÄ&_ð%q‰ÇWÄ' I%h¢$& IIFrR’T¤& iIGz2ð ÉDf²5JÐXÉNrò-¹ÈMò’ü  …(LŠRŒâ” d” ÙRš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥^” SŸïiÀQ‚&L#Ó„¦Q‚FLs~¤-£͘ŸhÍÏ´‰4dÚÑžtŒ4e:Ñ™.t4f~¥;=è%hÎô¦}é%hÐ ` ƒ%hÒ eÃ%hÔŒäwF1:JЬË8Æ3!Jа™Äd¦05Jд™Î f2+Jи™Ã\æ1?JмYÈ"³$JÐÀYÆrV°2JÐÄùƒÕ¬am” ‘³ž ldS” ™³…­üɶ(ACg;£-Ýì‰4uö±?JÐÖ9È¡(AcçG£­ãœˆ4wNr*JÐÞ9Í™(Aƒçç£-ž‹\Š4y®p5JÐæ¹Î(A£ç·£­ž;Ü4{îó JÐîyÄã(ÿ¿5|>ñš—QÿQÿ+~MŸDŒ´}"ÿ×Û‰4~¢=jÐú !4jÐü‰Eì¨Aû狨Aÿç+D @_“8jÐJJ²¨A()£m Ô¤!-éHO¾!#™ÈL–¨AG(;9ÉEò’Ÿ‚¦(Å(A©¨As¨å©@E*Q™*T¥Õ£m¢šÔ¢6uùŽú4ˆt‹ј&4¥Íù‘´¤?E G?Ó†¶´£=èH'ºD :H¿Òƒžô¢7}èK?úG ZIÄ`†0”a g¿1’ߣ]¥ÑŒa,ãÏ&2‰ÉLajÔ Á4Ìd³™Ã\æ1Ÿ,Œôš³”å¬`«YÃ:6°‘ÍlåO¶³“]ìf{ÙÇ~pCŽ´ ŽrŒãœà/NrŠ¿9ÍÎF ºQç¹ÀE.q™+\å×¹ÁͨAcê6ÿp‡»Üã>xÈ#óoÔ Gõ”g<ç/yÅkÞð–w¼´«>ò‰Ïü÷«°„#<ˆø_ƒŠÈÑ‚ÎUT¢„JLb›8|-hbÅ%_Ÿ$$_“˜$Ñ‚vV2’“‚”¤"5iHK:ÒG [ß‘Ld& YÉFvr3ZÐâÊEnò—|ä§)DáhA³«(Å(N JRŠÒ”¡,å¢m¯ T¤•©BUªQ#ZÐþªC=êÓ€†4¦ Miδä'~¦-íéH§hA7¬+ÝèNzÑ'ZÐÀ †0ŒÑ‚ÆØHF1š±Œg"“™Êtf2›9Ñ‚Ù|°E,f KYÆòhA³l%«øƒÕ¬a-ëXÏ6F Úf›ÙÂVþdÛÙÁNv±;ZÐ@ÛË>ös€ƒâ0G8ʱhA+íq’SüÍiÎp–sœ4Õ.r‰Ë\á*׸Πnr+ZÐ^û‡;Üå÷yÀCñ˜£¶§<ã9/xÉ+^ó†·¼‹´Ü>ð‘O|æ¿3†%á‰@ÄèAó-2QˆJ4¢ƒB‰I¬èA._ð%q‰ÇWÄ' I=hÈ%& IIFrR’T¤&Mô 5—Žôdà2’‰Ìd!+Ù¢Mºää[r‘›<ä%ù)=h×¢0E(J1ŠS‚’”¢tô qW–r”§©DeªP•jу^ jR‹ÚÔ¡.õøŽú|=hæý@Cј&4¥Íù‘у¶^+~¢5?Ó†¶´£=è=hðu¢3]èJ7~¥;=èI¯èA«¯}éG0AуŽßHÆ0ILa3˜Åæ2/zÐø[ÀBEzKXʲèAûo+Y=è®f k£MÀõl`cô ¸™-l´·±уnà.v³'zÐÜÇ~Dz‚‡8Ì‘èA[ðÇ9=è žäsš3œå磋\â2W¸Ê5®s#zÐ)¼Åmþáw¹Ç}D:†xÌ¿<á)Ïx΋èAçð¯yÃ[Þñž|&l ç)ˆ#h"F%:!„þ¯‘‡/‰ÇWÄ'!_“„d$'%©IKúAS1™ÉB6rÄ:‹¹ÈC> Pˆ"¥%bÆÒ”¥<c]ƪT§&µcƺԣ> hHcšÒœ1‚ŽãO´ægÚЖv´§CŒ óø èLºÒ_é#è@ö¤½éC_úÑŸ1‚Nä 3„¡ c8#ø-FБüQŒf cÇx&Ä:““˜Ì¦2éÌ`fŒ C9›9ÌeóYÀBÅ:•KXÊ2–³‚•¬âAÇr kYÇz6°‘M1‚ÆåŸlg»bÍË}ìç ‡c Ìcœà$sš³œç"—¸Â5np“ÛÜá÷yÀCñ˜y#hj>ãyŒ ­ù’W1‚ÆæÞÆZ›ïù#hn~â3ÿ}Ð>,áB‚g"†-ÎÈD šœÑˆ´9C ±ˆ´:¿àË Ù¯B‚vg† ϯI´<“’,$hz¦ eHÐöLMš ñ™Žô!Aëó2†ÍÏÌd ÚŸÙÈ4@sòmHÐÍMž  šü `HÐ-LŠR,$h†– $¥(4DËRŽòT 𢕍Lª†ÑêÔ &µB‚æhêRïB‚é÷4à†MÒÆ4¡)ÍB‚Fé´ %­B‚fik~¦ mC‚†i{:Б_B‚¦igºÐ•n!Aã´;=èI¯ yÚ‡¾ô£HÐ@È 3$$h¢c8#ø-$h¤þÎ(F3&$h¦Žc<˜4T'3…©L šª3˜É,f‡Õ¹Ìc> B‚æê"³„¥!Aƒu9+Xɪ Éºš5¬ ú¬ëÙÀÆ Õº™-l º­ÛØÎŽ áº‹Ýì z®ûØÏ ízˆÃ :¯Ç8Ή ùz’Süô_Ïp–s!A ö¹ta¯p•k!A#ö7¹ôbÿáwC‚vì}ð0$èÈ>æ_ž„MÙg<çEHЗ}ÅkÞ„­Ùw¼çCHÐýÄgþû#›ÿ4hãðEhТK¼Ð IŸ¡A›6_‡Ú$$ ZµÉI4kS‘:4hצ%]hаÍÀ7¡AË6™Cƒ¦mV²…mÛä ·¹È´nó’/4hÞ `hо-L‘Р[,4èà– Z¸¥Bƒn™Ð ‰[.4èâV Ú¸•Bƒ>n•Р‘[-4èäÖ Z¹µBƒ^nР™[/4èæÖ Ú¹ Bƒ~nÃР¡Û˜&¡AK·ÍCƒ¦n Z†mÝŸh4vÛÐ64hí¶§ChÐÜý…N¡A{· ]Cƒï¯t Z¼=é4yûÐ74hóög@hÐèÄàРÕ;”a¡A³w¿…íÞßúÿ[Ãw³Cƒ–ï\æ…Mß, Ú¾‹Y4~—±<4hý®dUhÐü]͚Рý»Žõ¡Ax#›Bƒð¶†Màml ÚÀ;Ù4‚÷°74hïç@hÐ >ÄáР|”c¡ACøq’Süt…Ïp–sœç—¸ÂµÐ 9|ƒ›Üâ6ÿ„â»Üã>x´‰ó/OxʳРWü‚—¼â5oBƒ†ñ;Þó| ºÆÿýQ]XÂÇ Ç‘‰BT¢Å šÇ1!”˜ÄŠtãð_—x1ƒ6r|ò5IHJò˜A/95iHKº˜A?9ß‘LdŽ4•³’ìä gÌ ³œ‹Üä!/ùbí夅)3è1£8%(I©˜A£¹LÌ Ó\.fÐj®3è5W¢ ÕbÍæ1ƒns­˜A»¹NÌÿ÷~sÒ8fÐpn3è87çGZÄ šÎ?Å ºÎmhK»˜Aã¹ù%fÐ{îLטA÷ùWºÓ#fЀîEoúÄ zÐýèÏ€˜Az0Cbèa g#ù=fÐŒÃXÆÅ úјȤ˜AKz S™3èJÏ`s˜3hL/d‹Y3hN/c9+Xɪ˜A‡z5kXË:ÖÇ ÚÔÙÄf¶²íìŒ4«÷°—}ìç@Ì c}ˆÃá(ÇbmëüÅINñwÌ w}†³œã<b ìK\æ W¹3èbßà&·ø‡»ÜãAÌ —ý˜yÂSžÅ Ú/xÉ+^ó&fÐÕ~Ç>Å Ûac9߈+èmG"2QˆJ´XAƒ;!„“X±‚.w¾àKâ/VÐêŽO’ˆ¯cýî$$%Y¬ å‚”¤Št½Ó–t±‚Æw¾!c¬ ÷™,d´¿³“ƒœ±‚x.r“'VÐÏG~ Ä úà…(L‘XA+¼Å)+膗¢4eb ñr”§B¬ '^‰ÊT‰´Å«Q±‚Îx-jS‡zÔ§ iL“XAüGZÆ ä?Ç :äíè+h‘w¦+Ýè+h’÷¦o¬ K>€±‚>ù`†Ä :åÃ+è•ÿÆÈXA·|T¬ ]>&VÐ/+h˜OˆtÌ'Å ZæSb=ói±‚¦ùŒXA×|V¬ m>'VÐ7Ÿ+hœ/ˆtα˜%,tÏ—³‚•¬b5kX+è¡od›cmô­üÉ6¶Ç Zé;ÙÅnöÄ ÚéûØÏÆ Zê‡9ÂQŽÅ Úê'ø‹“œŠ´ÖOs†³œ‹´×/p‘K\Ž´Ø¯rë܈´Ùoq›¸Ã=îó€‡<æ_žð”ç¼à%¯xÃ[Þñ>VÐvÿ+è»æ¿?&;輇´Þ#Æzï‘cÍ÷¨±ƒî{ôØAû=$vÐI,b'vЃÿ’¸Äã«ØA> IÄ×±ƒ^|’’Œä±ƒ~|JR‘š4±ƒž|:Ò“ob}ùLd& Yc½ùìä '߯úó¹ÉC^òÅzô(H! ÇúôE)FqJÄzõ¥(MÊRžŠ±ƒ†}ªR-vг¯EØA×¾ßñ=?Ä÷i;hÝ7§Eì wÿ­cÝû6´¥íé@G~¡éBWºñ+ÝéAOzÑ›>ô¥ýÀ@1˜! eÃÁoŒäwF1š1Œeã™ÀD&1™)LeÓ™ÁLf1›9ÌeóYÀB±˜%,eËYÁJVñ«YÃZÖ±Mla+ÛØÁ.v³‡½ìc?8È!s„£ã8'ø‹“œâoNs†³œã<¸È%.s…«\ã:7¸É-nów¸Ë=îó€GüËžñ‚—¼æ-ïøÀG>ñßÀCXÂHD& Q‰FtbB(1‰Elâð_—x|Eò5‰IJ2R’T¤& iIGz2ð ÉDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ð iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Б.t£;=éEoúЗ~ôgÄ`†0”aŒà7~gcË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬âV³†µ¬c=ØÈ&6³…?ÙÎNv±›½ìç ‡8ÌQŽs‚“œâ4g9Ç.r™«\ç&·ø‡»Üç!ø—§<ç%¯xÃ;>ð‰Ïü7˜–p„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇW$ _“„d$')IEjÒ–t¤'ß‘Ld& YÉFvr“oÉEnò—|ä§)DaŠP”b§%)MÊRž T¤2U©F jQ›º|G}ÐF4¦ MiFs~¤-iÅO´ægÚЖv´§ù…Nt¦ ]鯝t§=éEoúЗ~ôgÄ`†0”a g¿1’ßÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YŬf kYÇz6°‘Mlf [ù“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgþ= K8ˆD"2QˆJ4¢ƒB‰I,b‡/ø’¸Äã+â“€„$âk“„¤$#9)HI*R“†´¤#=ø†Œd"3YÈJ6²“ƒœ|K.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔã;êó= ø†4¢1MhJ3šó#-hI+~¢5?Ó†¶´£=èÈ/t¢3]èJ7~¥;=èI/zÓ‡¾ô£?È 3„¡ c8#ø‘üÎ(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡¹Ìc> XÈ"³„¥,c9+XÉ*þ`5kXË:Ö³lb3[ØÊŸlc;;ØÉ.v³‡½ìc?8È!s„£ã8'ø‹“œâoNs†³œã<¸È%.s…«\ã:7¸É-nów¸Ë=îó€‡<â1ÿò„§<ã9/xÉ+^ó†·¼ã=øÈ'>óßàYXžD$‘‰BT¢„JLb›8|Á—Ä%_Ÿ$$_“˜$$%ÉIAJR‘š4¤%éÉÀ7d$™ÉBV²‘ää[r‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥ßQŸïiÀ4¤iBSšÑœiAKZñ­ù™6´¥íé@G~¡éBWºñ+ÝéAOzÑ›>ô¥ýÀ@1˜! eÃÁoŒäwF1š1Œeã™ÀD&1™)LeÓ™ÁLf1›9ÌeóYÀB±˜%,eËYÁJVñ«YÃZÖ±ž ld›ÙÂVþdÛÙÁNv±›=ìeû9ÀAq˜#åÇ9Á_œäsš3œåç¹ÀE.q™+\å×¹ÁMnq›¸Ã]îqŸ<äù—'<åÏyÁK^ñš7¼åïùÀG>ñ™ÿÆÃŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ØÌ¶ò'ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î þâ$§ø›Óœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ïü7t–p„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇWÄ' IÄ×$& IIFrR’T¤& iIGz2ð ÉDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ð iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Б_èDgºÐ•nüJwzГ^ô¦}éG0A fCÆpFð#ùQŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç|°E,f KYÆrV°’UüÁjÖ°–u¬gÙÄf¶°•?ÙÆvv°“]ìf{ÙÇ~pCæG9ÆqNð'9Åßœæ g9Çy.p‘K\æ W¹Æunp“[Üæîp—{ÜçyÄcþå OyÆs^ð’W¼æ oyÇ{>ð‘O|æ¿‘ã°„#<ˆH$"…¨D#:1!”˜Ä"6qø‚/‰K<¾"> HH"¾&1IHJ2’“‚”¤"5iHK:Ò“oÈH&2“…¬d#;9ÈÉ·ä"7yÈK>òS€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢2U¨J5ªSƒšÔ¢6u¨K=¾£>ßÓ€hH#Ó„¦4£9?Ò‚–´â'Zó3mhK;ÚÓŽüB':Ó…®tãWºÓƒžô¢7}èK?ú3€ b0CÊ0†3‚ßÉïŒb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬âV³†µ¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚¿8É)þæ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6ÿp‡»Üã>xÈ#ó/OxÊ3žó‚—¼â5oxË;Þó|â3ÿ œ‡%á‰@D"™(D%щA¡Ä$±‰Ã|I\âññI@Bñ5‰IBR’‘œ¤$©ICZÒ‘ž |CF2‘™,d%ÙÉAN¾%¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êñõùžü@Cј&4¥Íù‘´¤?ÑšŸiC[ÚÑžtä:Ñ™.t¥¿Òô¤½éC_úÑŸ dƒÂP†1œüÆH~g£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d°š5¬eëÙÀF6±™-låO¶±ìd»ÙÃ^ö±Ÿä‡9ÂQŽqœüÅINñ7§9ÃYÎqž \ä—¹ÂU®qÜä·ù‡;Üå÷yÀCñ˜yÂSžñœ¼ä¯yÃ[Þñž|äŸù/n–p„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇWÄ' IÄ×$& IIFrR’T¤& iIGz2ð ÉDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ð iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Б_èDgºÐ•nüJwzГ^ô¦}éG0A fCÎoüÎhÆ2ž Ld2S™ÎLf1‡y,`KXÆrV°ŠÕ¬e=ØÄþd;;ÙÍ^ös€ƒæ(Ç8ÁIþæ ç¸À%®p•kÜà·¹Ã=ðˆyÊs^òš·¼ã=øÄ!pD QˆF B‰ElâðqùŠ$"1IINJR“–t¤'ÉLV²““\ä!(DaŠP”┤4e)OE*Q™ªT§&µ©C=êÓ€†4¦)ÍhN ZÑš6´¥=éDºÑžô¦}éÏ@1„aŒ`$£Ã8&0‘ILaÓ™ÁLf1›9ÌeóYÀB±˜%,eËYÁJVñ«YÃZÖ±ž ld›ÙÂVþdÛÙÁNv±›=ìeû9ÀAq˜#åÇ9Á_œäsš3œåç¹ÀE.q™+\å×¹ÁMnq›¸Ã]îqŸ<äù—'<åÏyÁK^ñš7¼åïùÀG>ñ™ÿ¢7a Gx"‘HD& Q‰FtbB(1‰Elâð_—x|E|D|Mb’”d$')IEjÒ–t¤'ß‘Ld& YÉFvr“oÉEnò—|ä§)DaŠP”b§%)EiÊP–r”§©DeªP•jT§5©EmêP—z|G}¾§?ÐF4¦ MiFs~¤-iÅO´ægÚЖv´§ù…Nt¦ ]鯝t§=éEoúЗ~ôgÄ`†0”a g¿1’ßÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YŬf kYÇz6°‘Mlf [ù“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgþ ^…%á‰@D"™(D%щA¡Ä$±‰Ã|I\âññI@Bñ5‰IBR’‘œ¤$©ICZÒ‘ž |CF2‘™,d%ÙÉAN¾%¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êñõùžü@Cј&4¥Íù‘´¤?ÑšŸiC[ÚÑžtä:Ñ™.t¥¿Òô¤½éC_úÑŸ dƒÂP†1œüÆH~g£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d°š5¬eØÄþd;;ÙÍ^ösÃåÇ9Á_œâoÎpŽ \â ׸Á-þá.÷yÈ#ó/OxÆs^ð’W¼æ oyÇ{>ð‘O|æ¿]XžD$‘‰BT¢„JLb›8|Á—Ä%_Ÿ$$_“˜$$%ÉIAJR‘š4¤%éÉÀ7d$™ÉBV²‘ää[r‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥ßQŸïiÀ4¤iBSšÑœiAKZñ­ù™6´¥íé@G~¡éBWºñ+ÝéAOzÑ›>ô¥ýÈ`†2œßøÑŒe<™ÌT¦1Ìd6s˜Ç±„e¬`«YËz6²™-låO¶±ƒìf/û9ÈaŽrœ¿8ÅiÎrž \ä—¹Ê5np‹¸Ë}ò˜'<ã¯xÃ[Þñž|â3a“:OˆHd¢b›/ˆËWÄ' IDb’Œ¤" éÈ@F2“•ìä$¹ÉC^òQ€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢2U¨J5ªSƒšÔ¢6u¨K=¾£>ßÓ€hH#Ó„¦4£9?Ò‚–´â'Zó3mhK;ÚÓŽüB':Ó…®tãWºÓƒžô¢7}èK?ú3€ b0CÊ0†3‚ßÉïŒb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³Å,e9+ùƒÕ¬aØÄ¶²ìbû8ÀAq„cœà$§8ÍYÎs‘Ë\å:7¹Åmîpû<ä1OxÆ ^ñ†w¼çŸ“̱O8ˆD"2QˆJ4¢ƒB‰I,b‡/ø’¸Äã+â“€„$âk“„¤$#9)HI*R“†´¤#=ø†Œd"3YÈJ6²“ƒœ|K.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔã;êó= ø†4¢1MhJ3šó#-hÉOüL[ÚÓ‘Nt¡ÝéI/zÓ‡~ `CÆF2Š1Œc<˜Èd¦2™Ìf.óYÈ"³”å¬`«YËz6²™­lc;;ØÅö²Ÿƒæ(Çù‹“œâ4g9ÏE.q…kÜàÿp—{Üç!yÂ3žó’×¼å=ùLØäŽw"™(D%1%qø’xÄ'!_“„¤$#9)HI*R“†´¤#=ø†Œd"3YÈJ6²“ƒœ|K.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔã;êó= ø†4¢1MhJ3šó#-hI+~¢5?Ó†¶´£=èÈ/t¢3]èJ7~¥;=èI/zÓ‡¾ôg ƒÊp~ãwF3†±Œg“˜Â4f0‹9Ìc YÄ–²Œå¬`%«øƒÕ¬a-ëXÏ6²‰Íla+²íì`'»ØÍö²ýà ‡8ÌŽrŒãœà/NrŠ¿9ÍÎrŽó\à"—¸Ì®rëÜà&·¸Í?Üá.÷¸ÏòˆÇüËžòŒç¼à%¯xÍÞòŽ÷|à#ŸøÌQì°„#<ˆH$"…¨D#:1!”˜Ä"6qø‚/‰K<¾"> HH"¾&1IHJ2’“‚”¤"5iHK:Ò“oÈH&2“…¬d#;9ÈÉ·ä"7yÈK>òS€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢2U¨J5ªSƒšÔ¢6u¨K=¾£>ßÓ€hH#Ó„¦4£9?Ò‚–´â'~¦-íéH'ºÐîô '½éC?0ˆ! c#ÅhÆ0ŽñL`"“˜Ì¦2éÌ`&³˜Íæ2ù,`!‹XÌ–²Œå¬`%«øƒÕ¬a-ëXÏ6²‰Íla+²íì`'»ØÍö²ýà ‡8ÌŽrŒãœà/NrŠ¿9ÍÎrŽó\à"—¸Ì®rëÜà&·¸Í?Üá.÷¸ÏòˆÇüËžòŒç¼à%¯yË{>ò™°)›D$‘‰J4bJ,âð%ñˆOBñ5IHJrR’š´¤ç2‘…¬d#9ÉEòQ€B¡%(I)ÊP–r”§©DeªP•jT§5©EmêP—z|G}¾§?ÐF4¦ MiFs~¤-iÅO´ægÚЖv´§#èBWºÑžô¦}éÏ@3”aŒ`$£ÃXÆ3‘ILa*Ó™É,æ0—ù,d1KYÆrV°ŠÕ¬a-ëØÀ&6³•mì`»ÙË~r˜#ã'ù›Óœå<¹Ì®rëÜà&·¸Í?Üá.÷¸ÏòˆÇüËžòŒç¼à%¯xÍÞòŽ÷|à#ŸøL˜TŽkžD$‘‰BT¢„JLb›8|Á—Ä%_Ÿ$$_“˜$$%ÉIAJR‘š4¤#ÉL²’œ|Knò’Ÿ‚¢0E)N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎF2Š1Œc“˜ÂT¦1ƒYÌa XÄ–²Œ¬b5kYÇz6²™-üÉvv²›=ìe?9ÄŽq‚“üÍÎqž \â ׸Á-þá.÷¸ÏCó„g¼àoxÇ{>ò™°©ÿD$2Q‰N B‰E¾$ñIÈ×$&)ÉIIjÒ’žoÈDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ÐÆ4¥9-hÉOüL[ÚÓ‘_èDgºÐ•nüJwzГ^ô¦}éG0A fCÆpFð#ùQŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç±„¥,c9+ùƒ5¬eëÙÈf¶²ìd7{ÙÏAs„cœà$§ø›Óœå<¹Äe®pÜâîr<â_žòœ¼ä¯yÃ[Þñž|äŸ “Æ9@8ˆD"2QˆJ4¢ƒB‰I,b‡/ø’¸Äã+â“€„$âk“„¤$#9)HI*R“†´¤#=ø†Œd"3YÈJ6²“ƒœ|K.r“‡¼ä#?(DŠQ‚R”¡,å(OE*S•êÔ¤6u¨K=êÓ€†4¦)Íù‘´ä'~¦-íéH':Ó…®tãWºÓƒžô¢7}èK?ú3€ b0CÊ0†3‚ßÉïŒb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬âV³†µ¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚¿8É)þæ4g8Ë9Îs‹\â2W¸Ê5®sƒ›ÜâîrŸ‡<æ OyÆs^òš·¼ç#Ÿ “ÖùF8"‰(D#¡Ä$±ù‚¸|E‘˜$$%ÉIAJR‘š4¤%éÉÀ7d$™ÉBV²‘ää[r‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥ßQŸïiÀ4¤iBSšÑœiAKZñ­iC;:ð èB7ºÓ“^ô¡Ä`†2œßøQŒaã™ÀD&3•iLg³˜Ã\æ1Ÿ…,f KYÆ V±šµ¬c›ØÂŸlc;;ØÉ.v³‡½ìc?8È!s„£ã8'ø‹“œâoNs†³œã<¸È%.s…«\ã:7¸É-nów¸Ë=îó€‡<â1ÿò„§<ã9/xÉ+^ó†·¼ã=øÈ'>&ó‰p„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇWÄ' IÄ×$& IIFrRŠ4¤#=ÈHf²’ìä$yÈG~ R˜¢§¥(C9ÊSJT¡Õ©A-êPú|Ï4¢ ÍhN ZÑš6´¥=éDºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ÙÊ6v°‹=ìe8ÄŽq‚“œâoÎpŽ \â ׸Πnñw¹ÏCó/OxÆ ^ñ†·¼ãùLØôŽw"‰ÈD%щA¡Ä$±‰Ã|I\âññI@Bñ5‰IBR’‘œ¤$©ICZÒ‘ž d$3YÉNNr‘‡¼ä§ …)JqJRš2”£•¨B5jP‹ÚÔå;¾çÑ„f4§­hMÚÒŽt¤]èFwzГÞô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ÙÊ6v°‹Ýìa8ÄŽqœœäoÎpŽó\äW¸Æ nq›;Üå÷yÀCñ˜yÂSžñœ¼ä¯yÃ[Þñž|äŸ “Á¹@8ˆD"2QˆJ4¢ƒB‰I,b‡/ø’¸Äã+â“€„$âk“„¤$#©HC:2‘Ld!9ø–Üä%(DŠQœ’”¢ å¨@%*S•jÔ u¨G}¾§ iLSšÓ‚–´¢5mhG~¡3]èFwzÒ›¾ôgÄ`†0”a g¿1’ßÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—y,`KXÊrVò«YËz6°‘ÍlåO¶±ƒ]ìa/û9ÈaŽp”cœà/NrŠÓœá¸Äe®r›ÜâîrŸ<äù—'<åÏyÁK^ñš7¼åïùÀG>ñ™0ß8Æ Gx"™(D#!Ä$6qø’x|Eñ5IHFrR’š4¤#߉,d%ÙÉAN¾%¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤u¨ÇwÔ§ iDcšÒœ´ä'~¦-íèÀ/t¢3]ù•îô }èG2˜¡ c#ÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ2Ÿ…,b1KXÊ2–³‚•¬âV³†µ¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚¿8É)þæ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6ÿp‡»Üã>xÈ#ó/OxÊ3žó‚—¼â5oxË;Þó|â3a2:ŸGx"‘HD& Q‰FtbB(1‰Elâð_—x|E|D|Mb’”d$')IEjÒ–td #™ÉJvrð-¹ÈC> Pˆ"¥8%(CªPÔ¢uùŽïùF4¡Íù‘–üÄÏ´¥=ù…Nt¡ÝéIoúÒþ d0CÎoüÎ(F3–ñLd2S™Æ f2›¹Ìg!‹YÂ2–³‚•¬âV³†µ¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚¿8É)þæ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6ÿp‡»Üã>xÈ#ó/OxÊ3žó‚—¼â5oxË;Þó|â3a29Gx"‘HD& Q‰FtbB(1‰Elâð_—x|E|D|Mb’’œ”¤&-éHÏ7d" ÙÈAN¾%7yÉOA S”b” e(G*Q™êÔ¦.ßñ=?ÐÆ4¥9-hÅO´¦ íèÀ/t¦ ]鯝t§=éEoúЗ~ôgÄ`†0”a g¿1’ßÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YŬf kYÇz6°‘Mlf [ù“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgÂdv^ŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ØÌ¶ò'ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î þâ$§ø›Óœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï„Éâü'á‰@D"™(D%щA¡Ä$±‰Ã|I\âññI@Bñ5‰IBR’‘œ¤$©ICZÒ‘Œd&+ÙÉI.ò¢Å(A)JS†²”§"•©JujR›º|Ç÷ü@#šÐŒiAKZÑš6´£¿Ð™®üJzч~ `CÊ0†ó¿3š±Œg"“™Êtf2›¹Ìg!‹YÂR–±‚U¬f-ëÙÈf¶²ìbû8À!s„£ç/Nqš³œç"—¹Êunr›;ÜãyÄcžðŒ¼â ïøÀ'Âdu¼HD!1!”˜Äæ âò HDb’’œ”¤&-éù†Ld& YÉFvr“oÉEnò—|ä§)DaŠP”b§%)EiÊP–r”§©DeªP•jT§5©EmêP—z|G}¾§?ÐF4¦ MiFs~¤-iÅO´ægÚЖv´§ù…Nt¦ ]鯝t§=éEoúЗ~ôgÄ`†0”a g¿1’ßÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YŬf kYÇz6°‘Mlf [ù“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgÂdóóp„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇWÄ' IÄ×$& IIFrR’T¤& iIGz2ð ÉDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ð iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Б_èDgºÐ•nüJwzГ^ô¦}éG0A fCÆpFð#ùQŒa˜Ä¦1ƒYÌfs™Ï±„e¬`«YËz6°‘Mla+ÛØÁ.ö°âG9Æ NrŠÓœå<¹ÌU®s“[Üæ÷¸ÏCó„g¼àoxÇ{>ð‰0Ù?„'"‘‰JtBˆIlâðqùŠø$äk“„d¤ iHK:2ð ÉLV²‘œä"ùÈO Q˜"£%)EÊQJT¦ Õ¨N jQ‡ºÔ£> hHcšÐ”æüH ZÑš6´£¿Ð™®tãWºÓ“^ô¡Ä†1‚‘üÎ(F3–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YŬf kYÇz6°‘Mlf [ù“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgÂäp~ŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ØÌ¶ò'ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î þâ$§ø›Óœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<á)ÏxÎ ^òŠ×¼á-ïxÏÂätž…ÄâK⓯IB2RŠ4¤å²ƒÜä§0Å)IiÊRžŠT¦*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ØÌ¶ò'ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î þâ$§ø›Óœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï„ùÖÏGžD$‘‰BT¢„JLb›8|Á—Ä%_Ÿ$$_“˜$$%ÉIAJR‘š4¤%éÉÀ7d$™ÉBV²‘ää[r‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥õi@CÓ”æüH Zò?Ó–öt¤éBWzЇ~ `CÆ~c4ã™Èd¦2™ÌfóXÀ"–°Œ¬d°†ul`[ø“mlg;ÙÅnö°—}ìç9ÄaŽp”cçq’SüÍiÎp–sœç¹Äe®p•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgÂärþŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLšÒŒæüH ZÒŠŸhÍÏ´¡-íhO:ò èLºÒ_éNzÒ‹Þô¡/ýèÏ2ˆÁ a(ÃÎ~c$¿3ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²Š?XÍÖ²Žõl`#›ØÌ¶ò'ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î þâ$§ø›Óœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛüÃîrû<à!xÌ¿<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï„Éíü'á‰@D"™(D%щA¡Ä$±‰Ã|I\âññI@Bñ5‰IBR’‘œ¤$©ICZÒ‘ž |CF2‘™,d%ÙÉAN¾%¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êñõùžü@Cј&4¥Íù‘´¤?ÑšŸiC[ÚÑžtä:Ñ™.t¥¿Òô¤½éC_úÑŸ dƒÂP†1œüÆH~g£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d°š5¬eëÙÀF6±™-låO¶±ìáG8Áßœã׸Å?Üå>yÌžò’·|$lçQ !6qùŠ$"1IIN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õøŽú|O~ !hLSšÓ‚V´¦ miG~¡3]ù•ô¤}èÇ1˜¡ g#ÅÆ1ž‰Lf Ó˜Á,æ0ù,dKXÆ V±š5¬c=›ÙÆv±‡}à Gù‹Sœæ,ç¹È%.s…«\ã:7¸É-nów¸Ë=îó€‡<â1ÿò„§<ã9/xÉ+^ó†·¼ã=øÈ'>&¯c˜p„'‰Dd¢•hD'!„“XÄ&_ð%q‰ÇWÄ' IÄ×$& IIFrR’T¤& iIGz2ð ÉDf²•ld'9ù–\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©ÇwÔç{ð iDcšÐ”f4çGZÐ’VüDk~¦ miG{:Б_èDgºÐ•nüJwzГ^ô¦}éG0A fCÆpFð#ùQŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç|°E,f KYÆrV°’UüÁjÖ°–u¬gÙÄf¶°•?ÙÆvv°“]ìf{ÙÇ~pCæÇ8ÁIþæ ç¸À%®pÜä6w¸Ë}ò˜'<ã¯xÃ;>ð‰Ï„Íç¼$‘ˆB4bJ,âð%ñˆOB‘˜¤$#©HC:2‘Ìd%;9ÉEnò’Ÿ¢Å(A)ÊPŽ T¢ Õ¨AMjS‡zÔ§ iLSšÓ‚V´¦ íhOG~¡3]ù•ô¢ýÀ †0ŒüÆïŒb ã˜À$¦0ÌbóXÀ"³”e¬`«YËz6²™­lc»ØÃ>ös€Cá'8Éßœá¸Ä®qƒ›ÜâîrŸ‡<æ ÏxÁ+ÞðŽ|â3aò»~HD!1%qø’xÄ'!‰øš$$#©HC:2‘Ìd%;9ÉEò’Ÿ‚¦(Å)IiÊRžŠT¦*Õ©I-êPú4 !iJsZЊִ¡èH'ºÐîô¤7}éÏ@3”áüÆïŒb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬âV³†µ¬c=ØÈ&6³…­üÉ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚¿8É)þæ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6ÿp‡»Üã>xÈ#ó/OxÊ3žó‚—¼â5oxË;Þó|â3a ¸&ŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡e¨@ªQƒZÔ¡õùžF4£%?Ó–öt¤]èÆ¯ô ½éC?0ˆÁ a(ÃÁH~gcÇ&2‰ÉLa3˜É,æ0,d‹YÂ2V°’U¬f-ëÙÀF6±™­lc»ØÃ>pCá(Çù‹Sœæ,ç¹È%.s•k\ç7¹Åmþáw¹Ç}ðG<æ_žð”g<ç/yÅkÞð–w¼çùÄgÂt|ŽðD "‘ˆL¢èÄ „Pb‹ØÄá ¾$.ñøŠø$ !‰øšÄ$!)ÉHN R’ŠÔ¤!-éHO¾!#™ÈL²’ìä 'ß’‹Üä!/ùÈO RˆÂ¡%(EÊQžŠT¦*Õ©I-þ ÖÓ¢ HEÁš.Û¶mÛ¶mÛ¼eÛ¶mÛ¶mÛæÄCüÁÚy²µ¨C=ÐÆ4¥9-iMÚÒŽöt #èLºÒîô '½ 7}èK?ú3€ b0CÊ0†3‚‘Œb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬b5kXË:Ö³lb3[ØÊ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¸Ë=îó€‡<â1OxÊ3žó‚—¼â5oxË;Þó|â3_øÊ7¾óƒŸüâ7øË?å³Wþ#0AJ0‚‚„"4aG"…hÄ ±‰K<ˆ$$#©HCZÒ“Ld!9ÈEò‘Ÿ‚¢Å(A)ÊPŽ T¤2U¨F jQ‡z4 MhJ3ZЊ6´£èB7ºÓƒ^ô¦/ýÈ`†2œŒd4cÏD&3•éÌd³™Ïb–³šõld3[ÙÎöp€#œà ç¸À%®p•k\ç7¹Åmîp—{ÜçyÄcžð”g<ç/yÅkÞð–÷|àŸùÂ7~ð“_üæùG üºâ?„ #! MžˆD"2QˆJ4¢ƒ˜Ä"6qˆK<â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJ6²“ƒœä"7yÈK>òS€‚¢0E(JqJP’R”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¥õi@#Ó„¦4£9-hI+ZÓ†¶´£=èH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†1œŒd£ÃXÆ1ž Ld“™Âtf2‹9ÌeóYÀB±˜%,eËYÉ*Ö°–u¬gÙÄf¶²ìd»ÙÃ^ö±Ÿä‡9ÂQŽqœœä§9ÃYÎqž \ä—¹ÂU®qÜä·¹Ã]îqŸ<äyÂSžñœ¼ä5oyÇ{>ð‘Ï|á+ßøÁ/~ó‡*`£üG`‚”`'! Eh–p„'‰Dd¢•hD'±ˆC\âŸ$"1IHJrR’ŠÔ¤%éÉ@F2‘™,d%ÙÉANr‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›ºÔ§ iDcšÐ”f´ ­iC[ÚÑžt¤éBWºÑô¤ô¦}éG0! gcÏD&1™)LeÓ™ÁLf1›9ÌeóYÀB±˜%,eËYÁJV±š5¬eëÙÀF6±™-leÛÙÁNv±›=ìeû9ÀAq˜#åÇ9ÁINqš3œåç¹ÀE.q™+\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñš7¼åïùÀG>ñ™/|åßùÁO~ñ›?üå Ú+ÿ˜ %Á AHBš0„%á‰@D"™(D%щALb›8Ä%ñI@B‘˜$$%ÉIAJR‘š4¤%éÉ@F2‘™,d%ÙÉANr‘›<ä%ù)HaŠP”┤4e(Gy*P‘JT¦*Õ©ImêP4¤iJsZÐ’Ö´¥=èDgºÐ•nt§'ô¡ýÈ`†0”a g#ÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”e,g+YÅjÖ°–u¬gÙÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅiÎp–s\à—¹Â5np‹ÛÜå÷yÀCñ„g¼à¯yË{>ð‘O|áßùÁ/þð@…ìŠÀ!(ÁNHB–ðD QˆJ4¢ƒ˜Ä"6qˆK<â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJ6²“ƒœä"7yÈK>òS€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢2U¨J5ªSƒšÔ¢6u¨K=êÓ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýèÏ2ˆÁ a(ÃÎF2ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²ŠÕ¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<á/xÅkÞð–÷|à#ŸøÌW¾óƒ_üæÿTØ}ä?”à„$¡ C8ˆD" шNLb›¸Ä#> ILR’“’Ô¤!-éÈ@F2“•ìä$¹ÉC^òQ€‚¦(Å)IiÊP–rT •©JujR›:Ô£> hDšÒœ–´¦-íé@G:Ñ…nt§'ô¡ýÈ 3”áŒ`cÇ&1…©Lc:3™Åæ±€E,f KYÆrV²ŠÕ¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\á7¸Émîrû<à!yÊs^ð’7¼ç_øÆ~ò›¿üãEôK‚Œà„$4a Gx"•Ä"ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éHO2’‰Ìd!+ÙÈNr’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õ¨OÒˆÆ4¡)ÍhN ZÒŠÖ´¡-íhO:Ò‰Ît¥;=  7}èK?ú3Á a(ÃÉÆ1ILa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²ŠÕ¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa/ûØÏ!Žrœ“œæ,ç¸À%®pëÜà&·¸Í]îó€‡<â1OxÊ3žó‚—¼â5oxË;Þó|â3_øÊ7¾óƒŸüâ7øË?µ-þ#0AJ0‚‚„"4aK8ˆD"2QˆJ4¢ƒ˜Ä&.ñˆOB“„¤$#9)HIjÒŽôd #™ÉJ6²““Üä!/ùÈO R˜"£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔ£> hH#Ó„¦4£9-hI+ZÓ†¶´£=èH':Ó…®t£;=èI/èMúÒ a£Ç&1…©Ì`6óYÄR–³’Õ¬aØÄf¶²ìb7{ÙÏAq„cç$§8Ã9.p‰Ë\å7¸É-ns‡»Üã>xÈ#ó„§<ã9/xÉ+^ó†·¼ã=øÈ'>ó…¯|ã;?øÉ/~ó‡¿ü¯˜Œ„"4a OD"…¨D#:1‰Mâ’€Ä$%9)IEZ2‰,d#;9ÉM^òSB¡%(EÊRŽòT "•¨LªRêÔ &µ¨MêRú4 !hLšÒŒæ´ %­hMÚÒŽöt #èLºÒîô '½ 7}èK?ú3€ b0CÊ0†3‚‘Œb4cË8Æ3ILa*Ó˜ÎLf3—ù,d1KXÊ2–³‚•¬b5kXË:Ö³lb3[ØÊ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¸Ë=îó€‡<â1OxÊ3žó‚W¼á-ïxÏG>ó•ïüä7øÇÿŠ»&(Á I(ÂŽD$2QˆFtb›8Ä%> IL’‘‚T¤&-éÈ@F2‘™¬d''¹ÉC> Pˆ"£8%)EiÊP–òT¤2U©F jQ‡z4 !iBSšÑœ´¤­iC[ÚÑžt¤éBWºÑô¤ô¦}éG0A fCÆpF0’QŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç|°E,f KYÆrV°Š5¬eëÙÈf¶²ìfû8ÀAq„cœà$§9Ëy.p‰Ë\å7¸Åmîp<â1OyÎK^ñ†·¼çùľñƒ_üæ/Jh› #8! Eh–ðD$2Q‰F b‡x$ !‰IBR’‘œ¤$©ICZÒ‘ž d$™ÉBV²‘ä$¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êQŸ4¤iBSšÑœ´¤5miG{:Љ.t£½èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2ŽñL`"“˜Ì¦2éÌ`s˜Ë<°ˆÅ,a)ËXÎ V²ŠÕ¬a-ëXÏ6²™­lg»ØÃ^r”œâ ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷yÈcžðŒ¼ä-ùÂ7~ð‹ßüá/ÿTÒ»Ï&A FpB’P„& a Gx"‘HD& Q‰Ftb‹8Ä% HDb’”d$')IEjÒ–t¤'ÉDf²’œä"7yÈK>òS€‚¢0E(J1ŠS‚’”¢ å¨@E*Q…jT§µ¨C]êÓ€F4¦)ÍhAKZÓ–öt ]èFwz@úÒŸ fÃÁ(F3†±Œc<˜È$&3•iLg3™Åæ2Ÿ,b1KYÆ V²š5¬c=ØÈ&6³…­lc;;ØÉ.v³‡½ìc?8È!s„£ã8'8É)Ns†³œã<¸È%.s…«\ã:7¸É-ns‡»Üã>xÈ#ó„§<ã9/xÉ+^ó†·¼ã=ùÌW¾ó“ßüá/ÿø_)Û!(Á Ih–p„'‰Dd¢•hD'1‰Elâ—xÄ' IDb’”d$')IEjÒ–t¤'ÉDf²•ld'9ÉEnò—|ä§)DaŠP”b§%)EiÊPŽ T¢ Õ¨AMjQ›ºÔ§!iJsZÐ’Ö´¥=éLºÒô"€>ôcĆ1‚QŒa,ã˜ÀD&3…iÌ`³™Ë<°ˆ%,c9+XÅÖ²ž lb [ÙÎv±‡}à ‡8Â1Žs’Sœáç¹ÀE.q™+\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñš7¼åïùÀG>ñ™/|åßùÁO~ñ›?üåJÛÿ˜ %Á AHBš0„%á‰@$¢Ä"q‰G|’˜¤$'%©IC:Ò“‘Ìd%;9ÈInò’¤0E)F JRš²”§"•¨LUªSƒZÔ¦.õi@CӔ洤5mhK{:ЉÎt¥;=éE}èÇ1„¡ c#ÍÆ1ILf S™Ætf0“YÌfs™Ç|°E,f KYÆrV°’U¬f kYÇz6°‘Mlf [ÙÆvv°“]ìf{ÙÇ~pCæG9ÆqNp’Sœæ g9Çy.p‘K\æ*×¹ÉmîrŸ<äOxÆ ^ñ†w¼çùÄg¾ð•o|ç?ùÅoþð—*£þ#0AJ0‚‚„"4aG"‰(D#:1ˆI,b‡¸Ä#> HH"“„¤$'%©HMZÒ“,ä yÈG RˆÂ¡(Å(N JRŠÒ”¡,å(OE*S…ªT§&µ¨G#šÐŒ´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýèÏ2ˆÁ a(ÃÁ(F3†qL`"“˜Ì¦2éÌ`&³˜Íæ2ù,`!‹YÊrV°’U¬f kYÇz6°‘Mlf [ÙÆvv°‹=ìc?8ÄŽrŒœâ4g9Ç.r™+\ã:7¹Í]îñ€G<á)ÏyÉkÞðŽ|â3_ùÎO~ñ›?üåÊjŸÿLP‚œ„$aKx"‰ÈD%1ˆIlâø$ !‰HL’’Œä¤ %©HMÒ’Žôd #™ÈL²’ìä '¹ÈMò’ü  …(LŠRŒâ” $¥(MÊRžŠT¢2U©NMjS‡z4 MhFsZЊ6´£=éLWºÓ“^Ї~ ` ƒÌP†1œŒb ãÏ&2‰)LeÓ™Élæ2ù,`!‹XÌ–²Œå¬`%«XÍÖ²Žõl`#›ØÌ¶²íì`'»ØÍö²ýà ‡8ÌŽrŒãœà$§8ÍÎrž‹\â2W¹ÎMns‡û<â)/yÃ;>ð‰/|ã;¿øËÿÊé„" áˆ@$"•èÄ qˆK|Ä$!)HIjÒ’Ž d$YÈJ6²““Üä!/ù)HaŠRŒâ” $¥(MÊRŽòT "•¨LªRêÔ &µ¨MêRú4 !hB3šÓ’Ö´¥èDºÑžô¢7}éÏ@1„¡ g$£Ã8&0‘ÉLe:3˜Åæ2ù,`!‹XÌ–²Œå¬`%«XÍÖ²Žõl`#›ØÌ¶²íì`'»ÙË>pˆ#å$g9ÏE.s•kÜâxÄžñœ×¼ç#ŸùÊw~ð“_üæùG òúä?„ #8!I(B†°„#<ˆH$"…¨D#:1‰M\â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJ6²“ƒœä"7yÈK> Pˆ"£8%)EÊQžŠT¢ U©NMjQ‡ºÔ£hB3šÓ‚–´¦-íéH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2ŽñL`S˜Æ f2›9Ìc YÌ–±œ•¬f ëXÏ6±…mì`'»ØÍ^ösÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<å9/yÍÞòŽ÷|à#ŸøÌ¾òïüà'¿øÍþ¨‚ݘ %Á AHBš°„'"‘ˆJLb‡¸Ä#> HH"“„d¤ ©IG&²•ld'9ÉEnò—|ä§)DaŠP”b” ¥)CYÊQž T¤•©BUªQÔ¤µ©C]êQŸ†4¦ ÍhN ZÒŠÖ´¡-íhO:Ò‰Ît¡+ÝèNzÒ‹úÐþ dCÆF1š±Œg"“™Â4f0‹9Ìe> YÌR–±œ¬d«YÃZÖ±ž lb [ÙÎv±‡}à ‡9ÊqNrŠÓœá,ç8Ï.r‰Ë\á7¸Émîp—{ÜçyÄcžð”g<ç/yÅkÞðŽ÷|äŸùÂW¾ñüäøK ŠîA NHBš0„%á‰@D"™(D%щALb‡¸Ä'IHF R’ŠÔ¤!-éHO2’™,d#;9ÈI.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔ£> iDšÒœ´¢5mhG:Ò‰.t£;=èI/èMúÒþ ` ƒÂP†3‚‘Œf,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²ŠÕ¬a-ëXÏF6±™mì`'»ØÍö²ýä‡9Æ NrŠÓœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<á)ÏxÎ ^òŠ7¼ãŸøÂW¾ñüä¿ùÃ_þ¨’ñ BP‚œ„$¡ CXÂHD!1ˆI,âø$$‰IJrRŠÔ¤%ÈDf²ìä$7yÈK>òS€‚¢0E(J1ŠS‚’”¦,å©HeªP•êÔ¤u¨K=ЈÆ4¥-hIkÚÒŽöt¤]èFwzГ^Л>ô¥ýÀ@1˜¡ g$£Ë8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2V°ŠÕ¬a-ëXÏ6²‰Íla;ØÉ.v³‡½ìc?8È!s„£ã8'8É)Ns†³œã<¸È%.s…«\ã:7¹Í]îñ€G<æ)ÏxÁ+^ó–w¼ç#ŸùÊ7¾ó“ßüå*Ûÿ˜ %Á AHBš0„%á‰@D"™(D#±ˆM<’˜¤$#%iHG2’™¬d#9ÉM^òQ€‚¢Å(AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ‡zÔ§!iJ3ZЊ6´¥íé@G:Ñ™.t¥ÝéAOz@oúЗ~ôgÄ`†0”áŒdc™Èd¦0Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬b5kXË:Ö³‘Íla»ØÍö²ýà ‡9Ê1Nrš3œç"—¸Æ nr‹ÛÜá.÷¸ÏòˆÇ<åÏyÁK^ñš7¼ã=ùÄg¾ð•o|ç?ùÅoþ𗪢þ#0AJ0‚‚„"4aK8ˆD"2QˆJ4¢ƒ˜Ä"6qˆK<â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÉNNr“—ü¤0E(FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©G}ÐF4¦ MiFsZÐ’V´¦ miG{:БNt¦ ]éFwzГ^Л>ô¥ýÀ@1˜! e#ÅÆ1ILaÓ™É,æ0—ù,`KXÆ V²š5¬c›ØÌV¶±ƒìf/û9È!Žp”ãœä4g8Ëy.p‰+\ã·¸Ã]îó€G<á)ÏxÁK^ó–÷|ä3_ùÆ~ò›¿ü#PU»à?„ #8!I(B†°„#<ˆH$"…¨D#:1ˆI,b‡¸Ä#> HH"“„¤$#9)HI*R“†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?)LQŠS’Ò”¥<¨DeªRÔ¤6u©OCÑ„¦4§%­iC;ÚÓ‘Nt¡=èE}èK2˜! e8#ÅÆ1ILa*Ó™Á,æ0—y,`!‹YÊrV²šµ¬cÙÌV¶±ìd»ÙÃ^ö±Ÿä‡9ÂQŽqœœä§9ÃYÎqž \ä—¹ÂU®qÜä·¹Ã]îqŸ<äyÂSžñœ¼ä¯yÃ[Þñž|äŸùÂW¾ñƒ_üáÿ«f#%8!Eh–p„'‰Dd¢•hD'1‰Elâ—xÄ' IDb’”d$')IEjÒ–t¤'ÉDf²•ld'9ÉEnò—|ä§)DaŠRœ’”¦ e)OE*S•jT§5©EmêP—zÔ§ iDcšÐ”f4§-iEkÚЖv´§éDgºÐ•nt§=éE½éC_úÑŸ dƒÂP†1œŒd£ÃXÆ1ž Lb Ó˜ÁLf1‡y,`‹YÂR–±œ•¬f-ëÙÀF6³•mlg»ØÍöq€Cá(Ç8Á)Ns†³œç—¸ÂU®sƒ[Üá.÷xÀCñ„§<ç%¯xÃ[Þó‘O|æ+ßøÎO~ñ›?üåªÛÿ˜ %Á AHBš0„%á‰@D"™(D%щIl⟄$&)ÉIIjÒ–t¤'#™ÉB6r“Üä!/ù)@A S„b” $¥)K9*P‘JT¡*Õ¨AMjQ‡z4 !iB3ZÐ’V´¦-íhOG:Ó•nô 'ô¡/ýèÏ@1˜! eÃÁHF1š1Œeã™ÀD&1™)LeÓ™ÁLf1›9Ìe XÄ–±‚U¬aØÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅiÎp–sœç—¸ÌU®qÜä·¹Ã]îqŸ<äOxÆ ^òš7¼çßøÁ/~ó‡¿ü#P à?„ #8!EžˆD"*1ˆC<D$& IIFrR’T¤& iIGz2‘Ld& YÉFvr“\ä&/ù(@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥õi@Cј&4£-iEkÚÑ‘Ît¥ÝéAOz@oúЗ~ôgÄ`†0œQŒaã™ÀD&1™)LeÓ™ÁLf3—yÌg YÄb–°”e,g+YÅjÖ°–u¬gÙÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅiÎp–sœç¹Äe®pÜâ÷xÀ#ó„§<ã9/xÉ+^ó†·¼ã=øÈ'>ó…¯|ã;?øÉ/~ó‡¿ü#PM;ã?„ #8!I(B†°„#<ˆH$"…¨D#:1ˆEâ‘€D$!ÉII*R“–td YÈFvr’‹<ä%(HaŠRœ’”¢ e)G*Q™ªT£µ¨C=êÓ€†4¦)ÍhAKZÓ–öt¤éBWºÑô¤ô¦}éG0A fCÆpF0’QŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç|°E,f KYÆ V±†ul`[ØÊvv°“Ýìa8ÄŽrœœâ4g8Çy.r™«\ç·¸Íîñ€‡<æ ÏxÁ+Þð–w¼ç#ŸùÂ7¾ó“ßü%P-ó BP‚œ„$¡ CXžD$‘‰BT¢Ä$±‰C\âŸ$$‰IBR’‘œ¤$©ICZÒ‘ž d$™ÉBV²‘ƒ\ä!(DŠRŒâ” $¥(MÊRŽòT "•¨LªRêÔ &µ¨MêRú4 !hLšÒŒæ´ %­hMÚÒžŽt¢3]éNzÒ‹zÓ‡¾ô£?È 3„¡ c8#É(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡¹Ìc> XÈ"–°Œå¬`kXË:Ö³MlaÛÙÉnö°—ýàG8ÆqNrš3œå<¸Ä®r›Üæw¹Ïñ„§<ç%¯yÃ[Þó|â3_øÊ7¾óƒŸüâ7øË?Õ¶1þ#0AJpBš°„'"‘ˆL¢˜Ä&ñH@B‘„¤$'%©HC:2‘Ld!+ÙÈNr’‹Üä!/ùÈO RˆÂ¡(Å(N JRš²”§"•©J5ªSƒšÔ¢6u¨K=êÓ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýÀ 3„aŒ`$£ÍÆ2ŽñL`"“˜Ì¦2éÌ`&³˜Í\æ³Å,a)ËYÉ*Ö²-ì`{ØÇrˆÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\å:7¹ÍîrŸ‡<â)/xÃ>ñ…oüà'¿øÍþò@uôÎ&A FpB’P„& a Gx"‘HD& Q‰Ftb“XÄ&q‰G|ˆ$$%)HEjÒ–t¤'ÉDf²•ld'9ÉEnò—|ä§)DaŠP”b§%)EiÊP–r”§©LUªQƒZÔ¦u©G}ÐF4¦ MiFsZÐ’V´¦ miG:Ñ…nt§'ô¦ýÄ0F1†qL`“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d«YÃZÖ±ž ld›ÙÂV¶±ìd7{ÙÇq˜#çç¸Ä®qƒ[Üæw¹Ç}ðG<æ OyÆs^ð’W¼æ oyÏG>ó•oüà¿ùÃ_þ¨®½ð BP‚œ„$¡ CXžD$‘‰BT¢Ä$±‰C\âŸ$$‰IBR’‘œ¤$5iIOF2“…lä '¹ÈC>òS¡%(I)ÊPŽòT¤2U¨J5jP‹:Ô£ iLšÒŒ´¢ íè@G:Ó…®t£;=èI/èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2ŽñL`"“˜Ì¦2éÌ`&³˜Íæ2ù,d1KYÎJV±– lf;ÙÃ>pˆÃã$g8Ï%®r›Üæ÷xÀCñ„g¼àoxË{>ò‰Ï|å;?ùÍ_þ¨žŽ LP‚’Є%<ˆH$¢Ä"ñH@B‘˜$$%ÉIAJR‘š4¤%éÉ@F2‘™,d%ÙÉANr‘›<ä%ù)@A Q˜"¥8%(IiÊRŽòT¤•©J5jP“ZÔ¦.õ¨OCÑ„¦4£9-iEÚÒžt¢3]èJ7zГzÓ—~ôgÄ`†0”a g#ÅhÆ0–qŒg™Äd¦0•iLg3™Ålæ0—yÌg YÄb–°”å¬`%«YË:Ö³‘Mlc'{8À!ŽpŒœä4g9Ç.q™+\ã:7¹Åîñ€‡<â OyÆs^ð’W¼æ oyÇ{>ð‘O|æ _ùÆw~ð“_üæùG úvÁ&A FpB’P„& a Gx"‰ÈD%:1‰E⟄$& IINJR‘š4¤#™ÈL²‘ƒœä"7yÈK~ R˜¢§¥(MÊRžŠT¦*Õ©A-jS‡ºÔ£> hH#Ó„¦4£9-hI+ZÓ†¶´£=èH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†1œ‘Œf,ã˜ÀD¦0YÌe!‹YÊrV²Šµl`3ÛØÅöq€CæG9ÆqNp’Sœæ g9Çy.p‘K\æ W¹Æunp“[Üæw¹Ç}ðG<æ OyÆs^ð’W¼æ oyÏG>ó•ïüà¿ùÃ_þ¨ÞùÀ!(ÁNBŠÐ„!,áO"‰ÈD%1‰C<D$& IIFrR’T¤&-éÉ@&2“œä&/ù(HŠQ‚’”¦,å©H%ªPÔ¢6u¨K=êÓ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýèÏ2ˆÁ a(ÃÎF2ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²ŠÕ¬a-ëXÏ6²‰-lc;;ØÅöq€CáÇ9Á)ÎpŽó\à"—¸Ì®rëÜà&·¸Íîrû<à!xÌžòŒç¼à%¯xÍÞòŽ÷|à#ŸøÌ¾òïüà'¿øÍþò@ íŠÿL‚Œà„ $¡MÂŽðD "‘ˆL¢èÄ &±ˆMâø$ !‰HL’’Œä¤ iHK:2‰,d#¹ÈC^òQ€B¡(Å(N JRŠÒ”¡,å(O*R‰ÊT¡*Õ¨N jR‹ÚÔ¡.õ¨OÒˆÆ4¡)ÍhN ZÒŠÖ´¡-íhO:Ò‰Ît¡+ÝèNzÒ‹zÓ‡¾ô£?È 3„¡ c8#É(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡y,`!‹XÂ2V°Š5¬cÙͱƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¸Ë=îó€‡<â1OxÊ3žó‚—¼â5oxË;Þó|â3_øÊ7¾óƒŸüâ7øË?5²Oþ#0AJ0‚‚„"4aK8ˆD" шN b‡x$ IHFrRŠ4¤#=ÉL²’œä&ù(@! S„b” $¥(CYÊSJT¡*Õ¨A-êP—ú4¤1MhJsZÒŠÖ´¥èH':Ó•îô$€Þô¥?ÌP†3‚‘Œb4cÏ&2‰ÉLe:3™Íæ±€E,a+XÉ*V³†ul`#›ØÂ6¶³ƒ]ìaû9ÈaŽrŒãœä4g8Ëy.p‰Ë\å:7¸ÉmîrŸ<â ÏxÎ ^ñ†·¼ãù̾òüâÿÔX›!!EÂŽðD QˆJ4¢ƒXÄ! HHb’’œ”¤&-éHO2’™¬d#;9ÈI.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔ£> hH#Ó„¦4£9-hI+ZÓ†¶´£=èH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2Ž Lb2S˜Æ f1‡y,`‹YÂ2V°ŠÕ¬a-ëXÏ6²‰Íla+ÛØÎv²‹Ýìa/ûØÏrˆÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüá/ÿÔÄ}à?„`„ $¡C8"‰(D#1‰Eâ‘€„$&)ÉHNJR“–td YÈJ6r‹Üä!ù)H!ŠPŒâ” e(Gy*R™ªT£:5©MêRŸ4¢1MhJsZÒš¶´£èB7zЋzÓ‡¾ôg ƒÌ†2œ‘Œf,ã˜À$¦0Ìb6s˜Ë<°ˆÅ,a+XÉ*Ö°Ž ld3[ÙÎv²›½ìc?9ÄŽrœ“œâ4g9ÏE.q…kÜà&·¸Ã=îó€G<æ)ÏxÎ ^ñ†w|à#ŸùÊw~ò›¿ü#PSòAFpB’P„!ˆDd¢˜Ä&.ñI@B‘˜¤$')IEjÒ–t¤'ÉDf²•ld'9ÉEnò—|ä§)DaŠP”b§%)EiÊP–r”§©DeªP•jT§5©EmêP—zÔ§ iDcšÐ”f4§-iEkÚЖv´§éDgºÐ•nt§=éE½éC_úÑŸ bCÆF1†qL`S˜Ê4f0‹9ÌeóYÀB±˜%,eËYÁJV±š5¬eëÙÀF6±™-leÛÙÁNv±›=ìeû9ÀAq˜#åÇ9ÁINqš3œåç¹ÀE.q™+\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñš7¼åïùÀG>ñ™/|å;?ùÅoþ¨™ „`„ ¡ C8"‰ÈD!*шN b‹ØÄ!.ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éHO2’‰Ìd!+ÙÈNr’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å(O*Q™*T¥:5©MêRú4 !hLšÒŒæ´ %­hMÚÒŽöt #èLºÒîô '½ 7}èK?ú3€ b0CÊ0†3‚‘Œb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìfs™Ç±„¥,c9+XÉ*V³†µ¬c=ØÈ&6³…­lc;;ØÉ.v³‡½ìc?8È!s„£ã8'8É)Ns†³œã<¸È%.s…«\ã:7¸É-ns‡»Üã>xÈ#ó”g<ç¯xÃ;Þó|â3_øÊ7¾óƒŸüâ7øË?5w7ùÀ!(ÁNBŠÐ„!,áO"‰ÈD!*шN b‹ØÄ!.ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éÈ@F2‘™¬d''¹ÈM^òS€‚¦(Å)A)ÊP–òT "•©J5ªS“ÚÔ¥ hDcšÒŒæ´ %­iK{:Ò‰.t£½ 7}èK?0ˆ! c8#ÍXÆ3‰Lb ӘΠf1‡yÌg!‹YÂ2–³‚U¬a-ëØÀ&¶°•íìd{ØË>ös€Cá'8ÉiÎrž‹\â2W¸Ê5np‹;Üã>yÌSžó‚—¼â ïøÀ'¾ðïüà'¿ùK :&0A NHB–ðD "‘ˆB4b‹ØÄ!ñIHb’’Œä¤ iHG2’•œä"(B1ŠS’Ò”¥<©DeªR“º4¤)ÍhA+ÚÐŽt¢3]éNOèC?ú3€ f(ÃÉ(Æ0Ž Lb ӘΠf2›¹Ìg!‹XÌR–±‚U¬a-ëXÏF6³•íì`'»ØÍö²ýà ‡8ÌŽrŒãœà$§8ÍÎrŽó\à"—¸Ì®rëÜà&·¸Íîrû<à!xÌžòŒç¼à%¯xÍÞòŽ÷|à#ŸøÌ¾ñƒŸüæ/Zê’ #8!I(B†°„#<ˆH$"…¨D#:1ˆI,b‡¸Ä#> HH"“„¤$#9)HI*R“†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?(H! S”â” e(G*Q…ªT§&µ¨M]êÓÆ4¡)ÍiIkÚÐŽt¤]èFz@oúÒŸ b0CÆF1†±Œc“˜Â4¦3ƒ™ÌbóXÀ"³„e¬`kXË:6²…íìb‡8ÊINs–ó\ä2W¸Î-îò€'¼à5ïùÈg¾òŸüâÿÔÊ'0A NHBš°„'"‘ˆB4¢ƒXÄ! HH"’Œ¤$©IKz2’™,d%;9ÉM^ò‘Ÿ¤0E)NIJQš²”§"•©BUjP›z4¤)-iC:Ñ…nô ôeƒÆ(Æ1‘©Lg&³™Ë|°E,f KYÆrV°’U¬f kYÇz6°‘Mlf [ÙÆvv°“]ìf{ÙÇ~pCæG9ÆqNp’Sœæ g9Çy.p‘K\æ W¹Æunp“[Üæ÷xÀCó”ç¼ä5oyÇ{>ð‘O|æ _ùÆw~ð“_üæùG Öúä?„ #8!I(B†°„#<ˆH$"…¨D#:1ˆI,b‡¸Ä#> HH"“„¤$#9)HI*R“–ôd YÈFr‘‡¼ä#?(H! S„¢£8%(I)JS†²”£<¨H%*S…ªT£:5¨I-jS‡ºÔ£> hH#Ó„¦4£9-hI+ZÓ–v´§éLWºÓƒžô"€Þô¡/ýèÏ2ˆÁ a(ÃÎF2ŠÑŒa,ãÏ&2‰ÉLa*ӘΠf2‹ÙÌa.ó˜Ï²ˆÅ,a)ËYÁJV±šµ¬g#›ØÂ6v°“Ýìeû9ÈaŽpŒœâ4g9Ï.r™«\ã:7¸ÅîrŸ<â ÏxÎ ^òš·¼ãùÌW¾óƒßüã¿6vCB†pD ‘‰FLâŸD$!)HEÒ’žŒd"3YÉNr‘›<ä%?)DaŠRœ”¢4e(K9ÊS‘ÊT¡Õ©ImêRú4 MhJsZЊ6´£=èJèK2˜¡ g£ÇD¦0™Ìf.óYÈ"–°Œ¬b5kYÇ6±…­lg'»ÙË>pÃå8'8É)Îp–s\à"—¹Êunp“[Üæw¹Ç}ðG<æ OyÆs^ð’W¼æ oyÇ{>ð‘O|æ _ùÆw~ð“_üæùG ¶Þnþ#0AJ0‚‚„"4a O"…hD'±ˆMâø$ !‰HL’’Œä¤ %©HMÒ’Žôd #™ÈL²’ìä '¹ÈMò’ü  …(LŠRŒâ” $¥(MÊRžŠT¢ Õ¨AMjQ‡ºÔ£> hH#Ó„¦4£9-hI+ZÓ†¶´£=èH':Ó…®t§'ô¡Ä†2ŒŒd£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d1KYÎJV³–õld›ÙÊ6v²‡á8§9Ëy.p‘Ë\á:·¸Ç#žò’×¼åïùÈ'>ó…¯|ã;?øÉ/~ó‡¿ü#P;Ýó BP‚œ„$¡ Kx"™¨D'&±‰C\â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJ6²“ƒ\ä!(DŠQ‚’”¢ e©@eªS›z4¢ ÍhN ZÑšvt¤+=éM2˜! e8#É(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡¹Ìc> XÈ"³„¥,c9+XÉ*V³†µ¬c=ØÈ&6³…­lc;;ØÉ.ö°ýä0G9ÆqNrŠÓœá,ç8Ï.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüáÿko!!I(–p„'‰Dd¢•hD'1‰Elâ—xÄ' IDb’”d$')IEjÒ–t¤'ÉDf²ìä ¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êQŸ4¤iJ3šÓ’V´¦ miG{:БNt¦ ]éFwzГ^Л>ôcÌP†1‚‘Œb4cË8Æ3‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ç²˜¥,c+YÅZ6°‰mìd7{ÙÇ~q”ãœæ¸Äe®pÜâ÷¸ÏCó„g¼àoxÇ{>ò™/|ã¿øÃ_þñ¿îAN(‰¨D'&±‰C|‘ŒT¤%=ÉL²‘ƒ\ä!/ù(@! S”┤4e(Ky*R‰*T£µ¨MêÑ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýèÏ2ˆÁ a(ÃÎF2ŠÑŒa,ãÏD&3•éÌd6s™Ç|°E,f KYÆrV°’U¬f kYÇz6°‘Mlf [ÙÆvv°“]ìf{ÙÇ~pCæG9ÆqNp’Sœæ g9ÏE.s•ëÜä6w¸Çò˜§<ç/yÍ[ÞñO|æ+ßùÉ/~ó—@µÌ&(Á IhžˆD"2QˆJtb›¸Ä'!‰IBRRštd"9ÉM^òSB¥¥)OeªQƒZÔ¡õiHcšÐŒ´¢5mhG:Ò™®t£½èMúÒŸ b0CÆF1†qL`“™ÂT¦1ƒYÌa XÄ–²Œ•¬a=›ÙÎ.ö°â0Ç8É.p…ëÜä6w¹ÏòˆÇ<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüá/ÿÔI7üG`‚”`'! Eh–p„'‘ˆB4b‹8Ä#> HH"“„¤$#9)HI*R“†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?(H! S„¢£8%(I)JS†²”£•¨B5jP‹:Ô¥õi@Cј&4¥ÍiAKZÑš6´¥íé@G:Ñ™.t¥ÝéAOèMúÒ dƒÂP†1œŒd£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ³€…,b1KYÆrV²Š5¬eëÙÀ&6³•mlg»ØÍ^ös€Cæ(Ç8Á)Ns–s\â*7¸ÅîqŸÇ<ã%¯yË{>ð‰/|å;?øÅoþòÿu¶ ‚Œà„&‰LT¢ƒXÄ!.ñI@"“”ä¤ ©IK:2‘Ld!+ÙÉANr‘›<ä%ù)@A Q˜"¥Å)AIJQš2”¥å©@E*Q™*T¥Õ©AMjQ›:Ô¥õi@Cј&4¥ÍiAKZÑš6´¥íé@G:Ñ™.t¥ÝéAOz@oúЗ~ôg ƒÊpF0’ÑŒe<™ÌT¦3“ÙÌeóYÀB±˜%,eËYÁJV±š5¬eëÙÀF6±™-leÛÙÁNv±›=ìeû9ÀAq˜#åÇ9ÁINqš3œåç¹ÀE.q™+\å×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÉkÞòž|ä3_ùÎO~ó—@]Ü‚Œà„ $¡MÂŽðD "‘ˆL¢èÄ &±ˆMâø$ !‰HL’’Œä¤ %©HMÒ’Žôd #™ÈL²’ìä '¹ÈMò’ü  …(LŠRŒâ” $¥(MÊRŽòT U¨F jR‹:Ô£hB3ZЊ6´£=èH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2ŽñL`"“˜Ì¦2éÌ`&³˜Íæ2ù,`!‹XÌ–²Œå¬`%«XÍÖ²Žõl`#›ØÌ¶²íìd7{ÙÏr˜£ç$§9Ëy.r™«\ã:7¸Åîñ€‡<â ÏxÎK^ñ†w¼ç#ŸøÌ¾ñƒ_üá/ÿø_Wwˆ #8! MžD"2Q‰N b‡¸Ä'!‰HBR’“’T¤& éHOF2“…lä '¹ÉK> PÂ¥Å)AIJS–òT¤•©JujP‹ÚÔ¥> hDcšÐ”æ´¤5miG{:Ò™.t£;=  7}éG2ˆ! c8#ÍÆ1‰Lf Ó˜ÁLf1›¹Ìc‹XÌR–³‚U¬a-ëÙÀ&¶°•mlg'»ÙË~r˜#å'8ÅÎq‹\â W¹ÎMns—û<äyÂ3^ðŠ7¼ã=øÄg¾òŸüæ ÔÍ{N‚‚P„!ˆD¢˜Ä&.ñˆOB“”ä¤$5iIOF2“•lä yÈG Rˆ"£¥(C9*P‘ÊT¥5¨EêÑ€†4¢ ÍhA+ÚÐŽt¤3]éFzÑ›¾ôcƒÌP†3’ÑŒe<™Ä¦2™Ìf.óXÀ"³”å¬d5kYÏF6±…­lg'»ÙË~pÃå8'9ÍYÎsK\á*×¹ÉmîrŸ<ä1OyÎK^ó–÷|à_øÊw~ò›¿üãݽ_!!EÂHD&*шA,âø$$1IHF R‘†td ™ÉJ6r‹<䣅(LŠRœ’”¦,å©@E*S…jÔ u¨GÒˆÆ4¥9-iM[ÚÑžŽt¢ ÝèA/èM_ú3Á e8#ÍXÆ3‘ILa3˜Ålæ0,b ËXÁ*Ö°Ž lb3[ØÊ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¸Ë=îó€‡<â1OxÊ3žó‚—¼â5oxË;Þó|â3_ùÆ~ò›?üã=tKP‚‚P„&,áO"‰ÈD!*шN b‹ØÄ!.ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éHO2’‰Ìd!+ÙÈNr’‹Üä!/ùÈO RˆÂ¡(Å(N JRŠÒ”¡,å¨@E*S…jT§&µ©K}Ј&4¥9-hI+ZÓ†¶´£=èH':Ó…®t£;=èI/èMúÒþ ` ƒÌ†2ŒáŒ`$£ÍÆ2ŽñL`"“˜Ì¦2éÌ`&³˜Íæ2ù,`!‹XÌ–²Œå¬dkXËz6°‰-lc;ÙÍ^öq€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¸Ë=îó€‡<â1OxÊ3žó‚—¼â5oxË;Þó|â3_øÊ7¾óƒŸüâ7øË?õ´Mþ#A NBš°„'"‘‰B4b“ØÄ! HDb’’œ”¤&-éÉH&²•ìä yÈG~ R˜¢§$¥)K9*P‘ÊT¡Õ©ImêRŸ†4¦)ÍiIkÚЖöt éJwz@ú1€A aÃÁ(F3–ñLdS˜Æ f1‡y,`!‹YÂ2–³’Õ¬eØÄ¶±ƒ]ìa/û9À!s”cœàg8Ç.q…kÜà·¹Ã=îóG<á/xÅÞñO|áßùÁ/~ó—@½´D‚‚„" áOD"•hD'&±‰K|’˜$$%9)IEÒ‘Œd" YÉNr‘‡| E(JqJR𲔣©LªQƒZÔ¡ hHcšÒœ–´¢èFwèÇ1ŒQŒa˜Ä¦2“YÌcËXÅÖ±‰mì`{ØÇr˜£ç$§9Ë9Îs‘Ë\á7¸Åmîp<â ÏxÁK^ñ†w¼ç#ŸùÊ7¾ó“_üá/´@‚‚P„&,á‰Hd¢èÄ$qˆG‘„d$'%©IKz2‘Ld& YÉFvr“\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦õh@#Ó„¦4£­hC[ÚÑžt¤éBWºÑô¤ô¦}éG0A fCÆpF0’QŒf cÇx&0‘ILf S™Ætf0‹9Ìc> XÈ"–°Œ¬d5kYÏF6³…­lg'»ÙÃ>pˆ#ã8'8ÅÎqž‹\æ W¹Î nr›»Üã>yÌžòœ¼ä5oyÇ{>ñ•ŸüáÿëíKP‚’P„%QˆNLb—ø$$1IHF R‘†t¤'™ÈB6²““Üä%?)DaŠRœ’”¢ å¨@E*S…ªT§&µ©C}ÑŒ–´¦-íéHgºÒžô¦?ƒÂ0F0Š1Œc<™ÌT¦3“YÌf.óYÈ"–°Œ¬b kYÇ6±…­lc;;ÙÅö²ýà‡9ÂQŽs‚Sœæ g9Ç.r‰Ë\á*׸Πnr‹ÛÜá.÷¸ÏòˆÇ<á)ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüá/ÿÔG‡üG`‚”`'! EhÂŽD" шNLb—ø$$‰IBR’‘œ¤$©ICZÒ‘ž d$™ÉBV²‘ä$¹ÉC^ò‘Ÿ¤…)BQŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C=Ј&4£9-iM[ÚÓ‘Nt¡=èEoúÒþ d0CÎF2š±Œg"“™Ê4¦3“ÙÌe> XÈ"³”e¬`kXËz6²‰ÍleÛÙÁ.v³—ýäG8ÆqNpŠÓœã"W¸Áð„g¼àoxÇ>ò…ïüâûj‘Є%<‰LT¢ƒ˜Ä"6qˆK<â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJ6²“ƒœä"7yÈK>òS€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢ Õ¨A-êP—ú4¤1MiN ZÒŠÖ´¡-íhO:Ò‰Ît¡+ÝèNzÒ‹zÓ‡¾ô£?È 3„¡ c8#É(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡¹Ìc> XÈb–²œ•¬f ëØÀ&¶°íìb/8 ÎpK\á7¸Åîò€Ç<ãïøÄ7~ð‹?üãýôK‚‚P„!ˆH$¢Ä"6qˆG‘„d¤ %©HC:2‰Ìd!+ÙÈANr“—ü E(J1JP’R”¦,å¨@%ªP•êÔ¤µ©K=êÓ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¡/ýèÏ2ˆÁ aÃÁ(F3†±Œc<˜È$&3…©Lc:3˜É,f3‡¹Ìc> XÈ"³„¥,c9+XÉ*V³†µ¬c=ØÈ&6³•mlg'»ØÍö²ýà ‡8ÌŽrŒãœà$§8ÍÎrŽ \ä2W¸Êunp“[Üæw¹Ç}ðG<æ OyÆs^ð’W¼æ ïxÏG>ñ™¯|ã;?ùÃ?÷÷!8! EhÂHD#±ˆC\â‘€D$!ÉIA*Ò–ôd YÈJ6r‹Üä§Å(EÊQJT¦:µ¨G#šÐŒ´¢5miOG:Ó…®t§'½èM_ú3A f(ÃÁ(F3–ñL`"“™Ê4f0“ÙÌeóYÈb–°”e,g+YÅjÖ°–u¬gÙÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅiÎp–sœç—¸ÂU®qƒ[Üá.÷xÀCñ˜'<åÏyÁK^ñš7¼åïùÀG>ñ™/|åßùÁO~ñ›?üåxçùÀ!(ÁNBŠÐ„!,áˆ@$"…hÄ ±‰C<â“€„$"1IHJ2’“‚”¤"5iHK:Ò“Œd"3YÈJvr’‹<䣅(LŠQœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êÓF4¡-hEkÚÐŽöt¦;=éM2˜¡ c#ËD&3YÌa XÈb–°Œ¬b5kXÇ6²™-le;;ÙÍö²ŸƒâG9Æ Nq†s\àW¸Êunr‹;ÜãxÂ3^ð’×¼åŸøÆ/þòß@ÍŠ0„#‰JLâ’€$¤ éÈ@&2“•ìä$7yÈG R˜"¥8%)MYÊQJT¦*Õ¨NMjS—z4 MhJsZÒŠ6´£éLWºÓƒ^ô¦}éG0A fCÆpF0’QŒf cÇx&0‘ILf S™Ætf0“YÌfs™Ç±˜¥,g+YÅjÖ°–u¬gÙÄf¶°•mlg;ÙÅnö°—}ìç9ÄaŽp”cç'9ÅÎqž‹\æ ׸Á-îpû<äOxÆ ^ñ†·¼çùľñƒ_üá/ÿ4HŸ!!Eh‘(D'&±‰K<’„ä¤" éÈ@F2“•ìä$7yÉO Q„b” e(Gy*P‘ÊT¥:5©MêÓˆ¦´ mhG{:Ñ•Ї~ ` ƒÊ0†3’ÑŒa,ã™È$&3•éÌ`&³˜Í\æ³Å,eËYÁ*Ö°Ž lb3[ØÊ6¶³ƒìb7{ØË>ös€ƒâ0G8Ê1Žs‚“œâ4g8Ë9Îs‹\â2W¸Ê5®sƒ›Üâ6w¹Çñ„§<ç%¯yÃ[Þñž|äŸùÂW¾ñüä¿ùÃ_þh°{Í&A FpB’P„& a Gx"‘HD& Q‰N b‡xÄ'!‰IJ2’“’Ô¤%=ÈH&²•lä yÈG~ P¡Å)IiÊP–òT¤•©J5jP‹ÚÔ¡ hH#šÑ’¶t¤+ÝéI}èË@†0‚1L`S˜Æ f2‹ÙÌa.ó˜Ï²ˆÅ,a)ËXÎ V²ŠÕ¬a-ëÙÈf¶²ìbûØÏrˆÃá(Ç8Î NrŠÓœá,ç8Ï.r‰Ë\å:7¹Í]îñ€G<á)/yþðƒ_üáÿ¢=‚Œ„"4aG"‰(D#±ˆMâ‘€„$"1IHF R‘š4¤%=ÈH&²ä$¹ÉK>òS€‚¢0E(J1ŠS‚’”¢4e(K9ÊSŠT¢2U¨J5ªSƒšÔ¢6u¨K=êÓ€†4¢1MhJ3šÓ‚–´¢5mhK;ÚÓŽt¢3]èJ7ºÓƒžô"€Þô¥ýÈ`†2œ‘Œf ã˜ÀD&1™)LeÓ™ÁLf1›9ÌeóYÀB±˜%,eËYÁJV±š5¬eëÙÀF6±™-leÛÙÁNv±›=ìeû9ÀAq˜#åÇ9ÁINqš3œåç¹È%.s•ëÜä6w¹Ïñ„§<ç%¯yÃ;>ð‰Ï|å;?ùÅoþòÿ õf”`„ aKx"™(D%:1ˆI,âø$$1IINJR‘š´¤'ÉD²‘œä&/ù)H! S”â” e(Gy*R™ªT£µ¨C]êÑ€†4¦)ÍiA+ÚÐŽöt¤3]éFwzÒ‹zÓ—þ `CÆF1š1Œc™Äd¦2ÌbóXÀ"³„e¬`%«XÍÖ²Žõl`#›ØÌ¶²íì`'»ØÍö²ýà ‡8ÌŽrŒãœà$§8ÍÎrŽó\à"—¸Ì®rëÜà&·¸Íîrû<à!xÌžòŒç¼ä¯yË{>ò™¯|ç¿øÃ_þh˜®ùÀ!(ÁNBŠÐ„!,áO"‰ÈD!*шN b‹ØÄ!.ñˆO’ˆÄ$!)ÉHN R’ŠÔ¤!-éHO2’‰Ìd!+ÙÈNr’‹Üä!ù)@!ŠPŒ”¢ e)OE*Q•Ô¡>hFKÚÒÎt¥;=  7ýÈPF0šñLb3™Ã<°ˆ%,e«YÏ&¶²“=à0Ç8Á)ÎpŽó\â*7¹Ã}óŒW¼åŸøÂ7~ð“ßü%Ðp}˜ '$¡ Kx"‰(D%:1‰Mâ‘€D$!)HEÒ’ž d" ÙÈNNr“—ü¤0E)N JQš²”§"•¨B5jP‹:Ô£hLSšÑ‚V´£éNOú0€! c£ÃXÆ1ž Ld“™ÂT¦1Ìd³™Ã\æ1Ÿ,d‹YÂR–±œ¬d«YÃZÖ±ž ld›ÙÂV¶±ìd»ÙÃ^ö±Ÿä‡9Â1Np’Óœå<¹Ä®rëÜà&·¸Íîrû<à!xÌžòŒç¼à%¯xÍÞòŽ÷|à#ŸøÌ¾òïüà'¿øÍþò@#´Ì&A FpB’P„& a OD"…hÄ ±‰K<Ä$%9)IMZÒ‘Œd& ÙÈNNr“—ü¤0E(FqJRŠÒ”¥å©H%*S…jÔ &µ¨MêQŸ4¢1MhJsZÒŠÖ´¡íéHgºÒžЛ¾ôc̆1‚QŒa˜Èd¦0éÌ`³™Ã<æ³€…,f)ËXÎ V²š5¬e=ØÈ&¶°íì`'»ØÍö²ýà ‡8ÌŽrŒãœà$§8ÍÎrŽó\à"—¸Ì®rëÜà&·¸Íîrû<à!xÌžòŒç¼à%¯xÍÞòŽ÷|à_øÊw~ò›¿üã#uO`‚”`'! Eh–p„'‰Dd¢•hD'1‰Elâ—xÄ' IDb’”d$')IEjÒ–t¤'ÉDf²•ld'9ÉM^òQ€B¡Å)I)ÊS…Z4¢-iKG:Ó•îô¤ô¡Ä`†0ŒŒb cÇx&2™©Lg3™Í\æ³E,f9+Xö°ìa8ÄŽrŒãœà$§8ÍÎrŽó\à"—¸Ì®rëÜà&·¸Íîrû<à!xÌžòŒç¼à%¯xÍ[Þó‘Ï|å;?øÉ/~ó‡¿ü#Ð(­ò BP‚œ„$¡ CXžD$‘‰BT¢Ä$±‰C\⟄$&)ÉIIjÒžLd#ù(@!ŠP””¦<•©NMjS—z4 MhFsZÒš6´¥=éLWºÑƒ^Л>ô¥?̆1‚‘Œb4cÏD&1…iLgsYÀb–±‚U¬a-ØÌ6v²‡}à‡9ÆIÎpžK\á7¸Éî󈧼àoxÇ{>ñ•Ÿüå¿Ñ: !I™èÄ&.ñIH"“„¤$#9)HI*R“†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?)DaŠRœ”¤¥)CYÊQž T¤•©BUªQÔ¤µ©C]êQŸ4¤iBSšÓ‚–´¦-íèHºÑƒ^ô¦ýĆ1‚QŒf,ã™È$¦0éÌd6s™Ç±˜%,c+YÅÖ²Ž lb3[ØÆvv±âÇ8Î)ÎqK\á×¹ÁMnq›;Üå÷yÀCñ˜'<åÏyÁK^ñš7¼åïùÀG>ñ™/|åßùÁO~ñ›?üåÆè™ #8! MXžD$‘‰BT¢Ä$±‰C\âŸ$$‰IBR’‘œ¤$iHKz2‘Ld& YÉFvr“\ä&yÉG~ PB¦E)FqJP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦u©G}ÐF4¦ MiFsZÐ’V´¦ íè@G:Ñ…nt§'ô¦/ýÈ †0ŒáŒ`cËx&2‰)Lc3™Í\æ³Å,e+XÅÖ±Mlf+ÛÙÉnö²ŸâÇ8Á)Îp–sœç¹Äe®p•k\ç7¹Åmîp—{ÜçyÄcžð”ç¼ä5oyÏ>ñ…oüà¿ùK ±v@‚œ„&,á‰H$"…¨D#:1ˆI,b‡¸Ä#> HH"“„¤$#9)HI*R“†´¤#=ÈH&2“…¬d#;9ÈI.r“‡¼ä#?(H! S„¢£8%(I)JS–òT "•¨LªRêÔ &µ¨MêRú4 !hLšÒŒæ´ %­hMÚÒŽöt #éJ7zЋzÓ‡¾ô£?Ć2ŒáŒd4cË8Æ3ILa*ӘΠf2›¹Ìc> XÄ–²œ•¬b5kXË:Ö³Mla+ÛØÎNv³‡½ìc?8ÄŽrŒãœà$§9Ë9ÎsK\á*×¹ÉmîrŸ‡<æ)ÏyÉkÞðŽ|â ßøÁ/þðÿóÿ%ÁA(ÂŽD" шA,b—ø$$1IINJR“–ôd$™ÉBV²‘ä$¹ÉC^ò‘Ÿ¤…)B1JP’R”¦ e)Gy*P‘JT¦ U©FujP“ZÔ¦.õi@Cј&4¥ÍiAKZÑš6´¥íé@G:Ó•îô '½ 7}èK?ú3€ b0CÊ0†3‚QŒaã™Èd¦2™ÌfóXÀ"–°Œ¬d5kYÏF6³•mì`{ØÇq˜#åÇ9ÁINs–sœç¹Äe®pÜä6w¹Çñ˜§<ç¯xÃ[Þó‘O|áßùÉoþðÿ÷Ö„`'$¡ CXžD$QˆFtb“XÄ&q‰OB‘˜$$%ÉIA*Ò–t¤'ÉDf²’ä"yÉOA Q„b§$¥)CYÊQž T¤U¨FujP“ZÔ¦u©OCÑ„f4§%­iC;:БÎt¥=èE}èG2˜! c#ÍXÆ1ILf S™Ætf0“ÙÌeóYÀB±˜%,c+YÅjÖ°–u¬g#›ÙÂV¶±ìd{ØÇ~r˜#ã'9ÍYÎqK\æ W¹Æunp“[Üæw¹Ç}ðG<áÏyÉkÞòž|â ßøÁ/þð—@tM‚‚„&,á‰Hd¢•hD'1‰Elâ—xÄ' IDb’’œ¤$©ICZÒ‘ž d$™ÉBV²“ƒœä"7yÈK>òS€‚¢0E(JqJPŠÒ”¡å©@%*S•jT§µ¨C]êÓ€†4¦ MiN ZÑš6´¥=éDºÑƒ^Ї~ `ƒÊpF2š1Œc“˜ÂT¦1Ìd³™Ã\æ1Ÿ…,b1KXÊ2–³‚•¬b5kXÇz6°‘Mlf [ÙÆvv°‹=ìeû9ÀAq˜#å'8ÅiÎrž‹\â ׸ÁMns—û<àOxÆs^ð’W¼æ oyÇ{>ð‘O|æ _ùÆw~ð“_üæùG ‰Þ{þ#0AJ0‚‚„"4aK8ˆD"2QˆF b›¸Ä'!‰HB2R’T¤& iIGz2‘Ld& YÉFvr“\ä&yÉG~ RˆÂ¡(Å(N JRš2”£©LUªQƒZÔ¦u©G}ÐF4¡)ÍiI+ÚÐŽöt¤3]èFzÒ‹zÓ‡¾ô£?Ä`†0”a g£ÍXÆ1‰Lb2S˜Ê4¦3ƒ™Ìb6s˜Ë<æ³€…,b1KXÊ2–³‚•¬b5kXË:Ö³lb ÛØÎNv³—}ìç9ÄaŽp”cç'9ÅiÎp–sœç¹Äe®p•k\ç7¹ÅmîrŸ<â ÏxÎ ^òŠ×¼á-ïxÏ>ò‰Ï|á+ßøÎ~ò‹ßüá/ÿ4ɾøÀ!(Á I(ÂŽD$‘‰BT¢Ä$±‰C\âŸ$$‰IBR’‘œ¤$©ICZÒ‘Ld&+ÙÉI.òü  …)J1JPŠÒ”¡¨H%*S•êÔ u¨K=Ј¦´ %méHgºÒžô¢7}éG0ˆ! e8#ÅhÆ2ž LdS˜Ætf2›9Ìe> YÂrV°† lb ÛØÁNv³—ýä0Ç8ÉiÎrž‹\â ׸Á-îpŸG<á/xÅkÞòž|æ+?øÍ_MÖAJpBš°„'Q‰NLb÷ÿìý ¼UÓÃ~ß{î½Í*)C ¡¨H†HH†$D„I"I’©$!"‰D2Ï!S¦R’"’¢R©4©$¥DƒÔûå¶ÛÃ9ç–ßó{þïû?Oçóíž{ÎÞk­½æ½ö>ç²{°'{Sƒ}©Mêr‡p(‡q8GpGs ÇÓ„¦œL3N£9gp&gs­¸€6´¥—rèH':Ó…k¸ž¸‘›¸™[éÅmÜNoîàNúp}¹›~Üýôç>p?0ÄC<Ì#<Êc<Á“<ÅÓ<ó<Ç`žç^d/ñ2¯ð*¯1”×yƒ7y‹·Æ;¼Ë{¼Ï|ÈGŒd3š1ŒeŸó˜È×Lâ¦0•ï˜ÁL¾g³ùyÌg!‹XÌ~b)ËXÎ ~e¿³–uüÉ_l"çAõ| (FqJPŠ2lG9¶§;P‘JìÄ.T¦ UÙƒ½Ø›ìK-jS‡ƒ¨G}p$ iÄ1GcšÐ”“iÆiœÎœÉÙœC+Χ5mhËÅ\B{:БNt¦ ×p-×Óîô '·Ð‹ÛéÍÜIî¢/wÓ{¸—þÜÇîçò ƒxˆ‡y„GyŒÇy‚§x†çxžÂK¼Ì+¼Êk åuÞàMÞâm†ñïòÃyŸø|ÄHFñ1Ÿð)ãøœ/ø’ |ÅD¾f“ù†o™ÂT¦ñÓ™ÁL¾g³™ÃÌeóYÀ,æ'~æ–³‚_YÉ*~c5¿ókXË:Öó'ø‹l"g±›yäS@1JPŠ2”¥<Û³•؉©Ì®Te7ö {Q}Ø—ZìÇþÔ¡.r0õ8”Ã9Šc8ŽÆ4áDNâNå4N§gr-9‡VœOk.ä".¦—О˸œ+èÄU\K7ºÓƒžÜÌ­ÜFoî¤/÷П<À@ñ0ò8Oñ,ƒy!¼Ä+¼Æë¼É0Þã}>ä#Fò1Ÿð)ãÏ&2‰oø–©|Ç ¾góXÀ,f KYÆr~å7þ`-ëÙÀ_l"÷!õJPší(ÇöT ";²3•©ÊìÉÞÔ`ö¥&µ¨Í~ìO .rsõ8”èÏá4àHŽ¢!GÓˆc8–ã8žÆœ@N¤)'q2§ÐŒS9æœA ÎälZr­8Ÿ ¸‹hËÅ\B{.ãr® WrWs ×r=]¹¹‰žÜÌ­ôâ6zswÒ‡¾ÜM?î¥?÷1€È æQãIže0/0„—y…×x7y›wxá|ÀFò1Ÿð)cùŒñ|ÉW|Íd¾a Ó˜ÎLf1‡˜Ë<æ³€…üÈ"³„ŸXÊÏ,ã–³‚_YÉ*~c5°–õl`#›ÈyX%EùPŒâ” $¥(M¶£,å(ÏöT`*²#;S™]ÙÝ©Æ^Tg_j³?p q‡RŸ#hH#ŽåxÓ„¦œÌ©œN ΢%çЊóiÍE´ãR.ãr:Ò‰ÎtáZºr7r=¹…^ÜÎô¥÷rx€yˆGy‚§x†çÌ áe^ã ÞbïòÃyŸø|ÄHFñ1£ù„1|ÊXÆñŸ3ž/ø’ Ldß0…i|Çtf0“ï™Ålæðs™Ç|°YÄb–ðKù™e,çWV±š?XÃZÖ±ž?ÙÀ_ld9¨ƒ¤È#ŸŠQœ’”¢4eØŽ²”£<ÛS¨H%vd'vf*³+UÙjìEuöa_j±u¨ËAL=ãpŽà(Òˆc9ž8‘¦œBsÎàLΦ%çÐŠó¸€ iC[Úq íéÀåtä :q%¹Š.\Í5\Ëu\OWºqݹ‘ÜDOnæn¥·q;½¹ƒ;éÃ]ô¥÷Пû¸Ÿ â!áQç žâžc0/0„—y…×x7y‹a¼ËpÞçC>b3šOçŒeŸñ9ãù‚/™ÀWLäk&1™oø–)Leß1Ìä{f1›9üÀ\æ1Ÿ,äG±˜%üÄR~f¿°œüÊJVñ«ùƒµ¬ãOþb#9ªûäQ@qJP’Ò”a;ÊQžíÙŠTb'vf*S…]©ÊnìÎTcOöboªSƒ}Ø—šÔ¢6û±?u8€ºÄ!Ôã0§GÒ£9†ã8žÆ4áDšr2§ÐŒÓhÎé´àLÎâlZrçÒŠó8Ÿ hÍ…´á"Úr1í¸„KiÏetàr:rèÌUtáj®áZ®§+7p#=èÉ-ÜÊmôæî¤wÑ—»éÇ=ÜKîc÷óyA<ÄÃ<£<Æã<Á“<ÅÓ<ó<Ç`žç^d/ñ2¯ð*¯1”×yƒ7y‹·Æ;¼Ë{ ç}>àCFð#ÅÇŒæÆð)cÇg|Îx¾àK&ðùšILæ¾e S™ÆwLg3ùžYÌf?0—yÌg ù‘E,f ?±”ŸYÆ/,g¿²’UüÆj~çÖ°–u¬çO6ðÙDÎcÆ$Rä‘OÅ(N JRŠÒ”a;ÊRŽòlOv "•ؙؑ]¨Lv¥*»±;{P=Ù‹½©N öa_jR‹ÚìÇþÔáêr q0‡PC9ŒúNŽàHŽ¢!GÓˆc8–ã8žÆœ@N¤)'q2§ÐŒS9æœÎ´àLÎâlZrçÒŠó8Ÿ hÍ…´á"Úr1í¸„KiÏetàr:r¸’Î\E®æ®å:®§ÝéAOn¡·s}¸‹¾ÜÍ=ôgð ññOòOó,ƒy!¼Ì« å Þâm†ñïñ>ò£ÍÆòŸ3ž/ø’ |ÅD¾f“ù†o™ÂT¦ñÓ™ÁL¾g³™ÃÌeóYÀB~d‹YÂO,åg–ñ ËYÁ¯¬d¿±šßùƒ5¬eëù“ üÅF6‘ó¸öFŠ<ò) Å)AIJQš2lGYÊQží©ÀT¤;²;³ •©Â®Te7vgª±'{±7Õ©Á>ìKMjQ›ýØŸ:@]ä æêq(‡QŸÃiÀÉQ4ähq ÇrÇÓ˜h‰4å$Næšq*§ÑœÓ9ƒœÉYœMKÎá\Zqçs­¹6\D[.¦—p)í¹Œ\NG® WÒ™«èÂÕ\õ\Çõt¥7ÐéÁMôäfnáVzq·Ó›;¸“>ÜE_úq/ý¹ûÈ âå1çIžæže0/0„—x…Wy¡¼Á[ ã]†ó#ÉÇŒæÆ0–ÏÏ—|Å×Læ[¦2ï˜ÎLf1›9Ìe> ù‘Å,á'–²Œå¬àWV±š?XÃ:Öó'ØHÎÚù£¥(CYÊQžíÙJìÄ.T¡*»S½Ø›êÔ`_j±u¨ËA¡ÔçppGq4ÇpiBSN¦§rÍ9ƒ39›shÅù´¦ m¹˜v\B{:БNt¦ ×p]éÆ t§=¹…^ÜÎô¡/ý¸‡{éÏàAâã žâžå9óCx™WʼÅ0Þå=†ó>ò£ÍÆòãù’ |ÅD¾f“ù†o™ÂT¦ñÓ™ÁL¾g³™ÃÌeóYÀB~d‹YÂO,åg–ñ ËYÁ¯¬d¿±šßùƒ5¬eëù“ üÅF6‘ó¤þžyäS@1ŠS‚’”¢4eØŽ²”£<ÛS¨H%vdg*³+»±;{°'{S}¨Imö§p s‡RŸÉQ4¤ÇriBSNæN¥9gЂ³hɹœÇù´¦ m¹˜v\J{.£—s¸’Îtáj®áZ®£+ݸîô '·p+·Ñ›;¸“>ô¥÷ÒŸ<À@äžàžçE^â^c(oðÃx—á|À>b$ó Ÿ2ŽÏù‚ |ÅD&ñ S˜Ætf2‹ÙÌa.óYÈ"–°”eüÂrVð++YÅo¬æwþ` kYÇzþd±‘Mä<¥^’"| (FqJP’R”¦ ÛQ–r”g{*°©ÄŽìÄÎìBeª°+UÙÝÙƒjìÉ^ìMuj°ûR“ZÔf .r0õ8ŒÃiÀÉQ4ähŽá8ާ1MhÊÉ4ãTN£9§s-8“³8›–œÃ¹´â<ÎçZs!m¸ˆ¶\L;.áRÚs¸œŽ\A'®¤3WÑ…«¹†k¹ŽëéJ7n ;7Òƒ›èÉÍÜ­ôâ6n§7wp'}¸‹¾ÜÍ=ôç>ðòð(ñ8Oð$Oñ Ï1˜çy‘—x…×ʼÅÛ ã]†óò#ÅhÆð)ãøœñ|Á&2‰É|˦ò3˜É,æ0…,b)Ëù•U¬æÖ²ž?ù‹Mä<­-GÅ)A)JS†²”g{v ;²»P…ªìÆTcOö¦ûP“ÚÔá@æ0Žà(޿ޣ1M8‘“8…SiΜÅ9´â|ZÓ†¶´ãÚÓŽt¢3Ws]¹¹‰›¹•^ÜÎô¡/ýèÏý dó(ó$Oñ Ïñ‡Ó€#8’†4⎣1'p"'q2Í8æœÁ™œEKÎ¥çÓš iC[.¦—Òžtä ®ä*ºp ×q=ÝèÎÜÄÍÜB/n§7wp'}¸‹¾ÜM?îá^úsx€ÄÃ<Êc<ÁS<ͳ æy^ä%^æU†ò:oò6Ãx‡÷Îû|ÈFò1£ÃXÆñ9_ð%_ñ5“ø†)Lå;f0“ï™Ålæðs™Ç|°YÄb–ðKù™eüÂrVð++YÅo¬æwþ` kYÇzþd±‘Mä<«ï"EùPŒ”¢ e)Gy*P‘Ù™]¨BUv§{²ÕÙ‡šÔf?ö§P—9ˆƒ9„zÊaÔçppGr 9šFñÇñ4æšp"M9‰“9…fœÊi4çtΠgrgÓ’shÅù´¦ Ñ–v\Êe\NG:Ñ™.\õ\GWnàFn¢'·Ð‹Û¹ƒ>ôånúq/÷1€x‡x„Çx‚'yŠgxŽÁ áUÞ`ï2œÁH>f4cËgŒçK¾b"_3™o™Â4¦3“YÌa.ó˜ÏB±˜ŸYÁo¬aò›È}N}#Ÿb” 4e)Çöì@%vb*³+»Q½©Î>Ô¤6ûsu9ˆC8ŒÁQÍ1GcNàDN¢Í9œEKÎå<Χ5m¸˜KiO:Ò‰Îtáj®åzn 7q3·r½¹“>ô¥ý¹Ÿx‡x„Çx‚'yšgyž!¼Ä+¼Æë¼ÉÛ ãÞå=†ó>ð!#øˆ‘ŒâcFó cø”±Œã3>g<_ð%øŠ‰|Í$&ó ß2…©Lã;¦3ƒ™|Ï,f3‡˜Ë|²ˆ%üÄR–±œ_YÅoüÎÖñ'ø‹MäVÇ( Å)AIJQš2lGYÊQží©ÀT¤;²;³ •©Â®Te7vgª±'{±7Õ©Á>ìKMjQ›ýØŸ:@]ä áPêÓ€#8’†4âXާ1MhÊÉ4ãTNãtZp-9‡VœOkÚЖv\Â¥\Æåt¤éÂ5\GWºq7r=éÅôå^îã~2ˆ‡y”Çx‚§x†çxžÂK¼Âk å Þbï2œøŒäcF3–ñ|Åd¾e*ß1ƒï™Íæ2ŸYÂOüÌ/¬`%¿±š?XËŸld¹Ï«_Pœ’”¢ eÙžŠTb'v¡ UÙ=Ø“½Ù‡ZÔfà@¦‡RŸE#Žá8Ó„¦œÌ)œJsZp6-9—ó¸€ ¹ˆ¶´ãR:pèL®á:ºÒîôàfzq½¹“»¸›{¸—þÜÇîçò ƒxˆ‡y„GyŒÇy‚'yЧy†gyŽÁ<Ï ¼È^âe^áU^c(¯óoòo3Œwx—÷ÎŒà#F2ŠÍ'Œa,Ÿñ9_0‰Lb2ß0…i|Çtf0“ï™Ål~`óYÀB~d‹YÂR–ñ +XÉ*~c5¿³†u¬çO6°‰Ô ê$§$¥(Ív”¥åÙž T¤;²3»P™*ìJUvgª±'ÕÙ—šÔf .s(‡s$ iıOcšÐ”“iÆiœN ÎâlΡçÓš6´¥—Òžt¤éÂ5\GWºÑôäzq;wЇ»èËÝôãî¥?÷1€ûy€<È âaáQãqžàIžâižáYžãy^ä%^æ^e(oðo3Œwx—÷Îû|À‡Œà#F2ŠÍ'ŒáSÆ2ŽÏøœñ|Á—Là+¾f2ß2…©Lc:3™Ål~`.óYÀ,b ?ñ3ËXÎ V²šµ¬g±‰œÕSò( %(IiÊP–rlOEv¦2»R•Ý©ÆÞÔ`_jR›ý©ËAB=ãpޤ!8†ãh̉œÄ)4ã4NçLÎæÎå<.  miÇ%´§Wp%WÑ…k¸Žnt§7Ñ“›¹…[éÅmÜNoîàNúp}¹›~Üýôç>p?0ÄC<Ì#<Êc<Î<ÉS<Í3<Ës æy^d/ó ¯ñ:oòÃx‡÷Î|ÈGŒäc>áSÆòãù’ Ldßð-SùŽÌds˜Ë<ð#‹YÂR–±œüÊJVñ«ù?XÃZÖ±ž?ÙÀ_ld9CŒçä‘OÅ(AIJQš2lGYÊQží©ÀTbGvbgv¡2UØ•ªìÆîTc/ö¦:5؇}©I-j³ûsr‡p(õ9œ#8Š£iıÏ 4¡)'ÓŒSiΜÉY´ä\Îã|. 5Ò†‹hËÅ´ã.¥=—ÑËéÈtâJ®¢ Ws ×q=]éÆ tçFzp=¹™[èÅmôæúp}¹‡þÜÇý<Àƒ âaá1ç žæYžãy^ä%^æU†òoò6ïðÃù€Œd£ÃXÆñ9_0¯˜È×Lb2ßð-S˜Ê4¾c:3˜É÷Ìb6sø¹Ìc> XÈ,b1Kø‰¥üÌ2~a9+ø••¬â7Vó;°†µ¬c=²¿ØÈ&r^Ò.H‘G>£8%(I)JS†í(K9ʳ=¨ÈŽìÄÎT¦ »R•ÝØ=¨ÆžìÅÞÔ`_jR‹ýØŸ:@]ä æêq(‡QŸÃiÀÉQ4ähq ÇrÇÓ˜h‰4å$Næšq*§ÑœÓ9ƒœÉYœMKÎá\Zqçs­¹6\D[.¦—p)í¹Œ\NG® WÒ™«èÂÕ\Ëõt¥ݹ‘ÜDOnæn¥·q;wЇ»èK?î¡?¸Ÿȃ<ÄÃ<Âc<Á“<Å3<Ë`^àE†ð/ó*¯1”7x‹·Æ»¼ÇpÞçC>b$£ø˜OÃX>ãsÆó%øŠ‰Lâ¾e SùŽéÌd³™Ã\æ1Ÿ,äGóKù™_XÁJVñ¿ókXË:Ö³l"çem‰|ŠQœ”¢4ÛQŽòlOv ;²»P…]©ÊîìÁžìMuj°ûR‹ÚìGêr qõ8”Ã8œ#8’£hH#Žá8sMhÊIœÌ)œJsNç Zpgs­8óiÍ…´á"Úr1—ОËè@G:Ñ™«èÂ5\Ëu\OWºÑÜDOn¡·Ó›;èÃ]ÜÍ=ôgð ññOñ4Ïðƒy!¼Ì« å Þbï2œøŒd£ÃX>c<_ò_3™o™Ê4¾c3™Åæ2Ÿ…,b KYÆr~e%«XÍï¬aò›È}EŸNÅ)Iiʰå(O*²#;S™]Ù=Ø“½©Á>ìK-j³?p SÃ8œ#8Š£9†c9ŽÆœÀ‰œÄ)œJsÎàLÎæZq>К6\D[.¦—p)í¹Œ\NG® WÒ™«èÂÕ\õ\Çõt¥7ÐéÁMôäfnáVzq·Ó›;¸“>ÜE_î¦÷p/ý¹ÜÏ äAñóò8Oð$Oñ4Ïð,Ï1˜çyy‰—y…×x7y›wxá¼ÏŒ`$£ø˜OÃXÆñ9ãù‚/ùН™Ä7La*ß1™|Ï,fóó˜Ï~d1?±”eüÂrV°’ßXÍï¬a-ëÙÀF6‘óªºM£%)Eiʰe)Gy*°Ù‘Ø™]¨Lv¥*»±ÕØ“½Ø›ìþԤµÙ:@]ä ¡‡rõ9œÉQ4ähq Çr<9&œÈIœÌ)4ãTN£9gЂ39‹³9‡siÅ\D;.£#éÂ5\GWn ;=èÉ-ôâvî }éǽôç>îg ƒx˜Gyœ'yšgÌó¼À^æU†òo1ŒwÎ|ÈFò1Ÿð)ãøœ/˜ÀD&1™oø–)Leß1Ìä{f1›9üÀ\æ1Ÿ,äG±˜%üÄR~f¿°œüÊJVñ«ù?XÃZÖ±ž?ÙÀ_ld9¯©×¤È#ŸŠQœ’”¦ e)Gy¶§;P‘JìÈÎT¦ UÙÝÙƒjìÉ^ìMuj°ûR“ZÔf?ö§P—9ˆƒ9„zÊaÔçppGr 9šFñÇñ4æšp"M9‰“9…fœÊi4çtΠgr-9—VœÏ´æBÚpm¹˜v\Êet #WЉ+éÌUtáj®áZ®ãzºÒèÎôà&zr3·p+½¸ÛéÍÜIî¢/wÓ{¸—þÜÇîçò ƒxˆ‡y„GyŒÇy‚'yЧy–Á<Ï‹¼Ä+¼ÆP^ç Þä-†ñ.ïñ>ò£ø˜Ñ|Â>e,ãøŒÏÏ|ɾb"_3‰É|÷La*ÓøŽéÌ`&ß3‹ÙÌáæ2ù,`!?²ˆÅ,á'–ò3Ëø…å¬àWV²ŠßXͬeò›Èª’G>£¥(Ív”c{v "•Ø‘©Ì®ìÆìÉÞÔ`_jR‹ÚìÏÈÁÔã0玢!GÓˆc9ž8‘“8…SiδàL΢%çrp!q1—ОËèÀå\Á•\ÅÕ\Ëõt£;=¸‰žÜÌ­ÜFoîä.îæú3€ûy€ âaåqžäiže0/ð"Cx‰Wx×y“·y‡÷xŸÁGŒd3šOçŒeŸñ9ãù‚/™ÀWLäk&1™oø–)Leß1Ìä{f1›9üÀ\æ1Ÿ,äG±˜%,åg–ñ ËYÁ¯¬d«ù?XÃ:þä/6²‰Ü×ÕUò)F JQ†í(Ky*°Ù‘©Lª²;ÕØ“½¨Î>Ô¤ûQ‡ºÈÁÔã0§GpGÓˆc8–ã8žÆœ@N¤)'q2§ÐŒS9æœÎ´àLÎâlZrçÒŠó8Ÿ hÍ…´á"Úr1í¸„K¹ŒËéH':s]¸šk¸Ž®t£;=¸‰žÜJoîâú3€xA<Ì£<Γ<ͳ æy^`/ó*Cyƒ·Æ;¼Ëp>`#ù˜Oø”±Œãs¾`™Ä7La*ÓøŽéÌ`&ß3‹ÙÌáæ2ù,`!?²ˆÅ,á'–ò3Ëø…å¬àWV²ŠßXÍïüÁÖ²ŽõüÉþb#›ÈyC}&EùPŒâ” $¥(M¶£,å(ÏöT`*R‰ىمÊTaWª²»³ÕØ“½¨Î>ìK-ö£u9ˆC8”èÏá4àŽä(Òˆc9ŽÆ4¡)'ÓŒÓ83hÁ™œÅÙ´äÎ¥çq>К iÃE´åbÚq —ÒžËèÀåtä :q%¹Š.\Í5\Ëu\OWºqݹ‘ÜDOnæn¥·q;½¹ƒ;éÃ]ôånúq÷ÒŸûÀý<À@dñ0ð(ñ8Oð$Oñ4ÏðÏóCx™WʼÅ0Þá]Þc8ïó2‚‘|ÌhÆ0–ÏÏ—|Å×Lb2ßð-S˜Ê4¾c:3˜É÷Ìb6sø¹Ìc> XÈ,b1Kø‰¥üÌ2~a9+ø••¬â7Vó;°†µ¬c=²¿ØÈ&rÞÔÞH‘G>£8%(I)JS†í(K9ʳ=ØŠTbGvbgv¡2UØ•ªìÆîTc/ö¦ûR‹ý¨C]â`¡‡rõ9œIC޿ޣ1MhÊÉ4ãTN£9§s-8“³8›–œÃ¹´â<ÎçZs!m¸ˆ¶\L;.áRÚs¸œŽ\A'®¤3WÑ…«¹†k¹ŽëéJ7n ;7Òƒ›èÉÍÜ­ôâ6n§7wp'}¸‹¾ÜM?îá^ús¸Ÿȃ â!æå1ç žâže0/0„—y•¡¼Á›¼ÅÛ ãÞå=†ó#øˆQŒf cùŒñ|ɾb"“ø†o™Â4¦3“ï™Í~` XÈ"³„Ÿø™_XÎ Vò¿ókYÇz6°‘Mä¾¥G>Å(AIJQ†²”g{v "•؉]¨Ì®Te7v§{±7ÕÙ‡šÔf?êpu9ˆC¨ÇaÔçpp$ 9†ã9“8•Ó9‹–œËy\À…\D[.¦—r¹’«¸–nÜÈÍÜÊmôæNîânúq÷r÷óÄÃ<Êc<Á“<Å3<Ç`^àE†ð¯ðCy7y›wx—á¼ÏŒ`$£Í'ŒáSÆñ9ãù‚ Ld“ù–)Lå;f0“YÌf?0,äGó?³Œå¬àWV±šßYÃZÖ±ž l$÷mõ‰b”¢,ÛS‰Ø…*Tewª±'{±75Ø—ÚÔ¡.‡PŸ#8šc8ŽÆ4¡)'s Í8•æœÁ™œÍ9œGkÚp1—Оt¤¹Š.\͵\O7ºÓƒ›éÅíÜÉ]ÜÍ=ôg0ÄÃ<Êã<ÉÓ<Ç á^ãuÞämÞá=†ó>0‚‘|Ì'|Êg|Á¾f2ß2•ï˜Á÷Ìb6s˜Ë|²ˆ%üÌr~å7~g ëø“¿ØDÎ0åLŠ|ŠQ‚R”¡¨ÈNìBª²;ÕØ‹½©N ö¥ûQ‡ºÌ¡ÔçŽâhŽá8Ó„iÊIœÂ©4ç Τ%­8Ÿ ¹ˆ‹¹„öt #WЉ+¹Š«¹–ëéÆôän£7wrwsý¹ÜÏ@ñ0ò8Oñ,ƒy‘—x…×x7y›a¼Ã» çF0’Ã8>çK¾âk&ó-SùŽéÌ`&³˜Ã\æ³Å,e+XÉoüÎÖñ'ø‹ä¼£üɧ%(MYʳ•؉]¨BUvgª±'{Sƒ}©Å~ÀAÂaÎÅÑÃqOcNàDNâN¥9-8›s8 ¸‹¸˜KhÏetàr®àJ®âj®¥+ÝéÁÍÜÊmôæNîânúq÷ÒŸûÀý<À@dñ0ð(ñ8Oð$Oñ4Ïð,Ï1˜çyÂK¼Ì+¼Êk åuÞàMÞâm†ñïòÃyŸø|ÄHFñ1£ù„1|ÊXÆñãù‚/™ÀD&1™oø–)Leß1ƒ™|Ï,æ0—yÌg ù‘E,f ?±”ŸYÆ/,g¿²’UüÆj~çÖ°–u¬çO6ðÙDλú3Rä‘OÅ(N JRŠÒ”a;ÊRŽòlOv "•ؙؑ]¨Lª²»³{²7Õ©Á>ìKMjQ›ý©ÃÔå ¡‡r‡Ó€#9Š£9†c9ŽÆ4¡)'q2Í8•æœN ÎâlZr.çq­iC[Úq)íé@G® éÂ5\Ëõt£;=¸‰›¹•^ÜFoîä.úÒûx€‡x„'x†çxžy‰Wx•7Æ;¼Çû|Äh>áSÆñ9_ð%_ñ5“˜Ì·Lå;¦3“ï™Í~` XÈ,æ'~fËYÁJVñ¿³†µ¬ãOþb9ï©{äQ@1ŠS’Ò”a;ʱ=;P‘Ù‰]¨Lª²;{²75¨Å~Ô¡.qõ8”ú4à(ŽæÓ„¦œL3N£9§s&çpr—ÐŽt¢3]¸†kéÊô¤·Ó‡~ÜË}ÜÏ@ñðOðÏ0˜Â˼ÊP^ç Þbï2œøˆQŒf cùŒÏÏ—|Å×Læ[¦1™Ìbs™Ç|²ˆ%,e+XÉoüÎÖ±ž?ù‹MäWÞP‚R”¡,å©ÀTdGv¦2»²ÕØ‹êìCMj³ûsr0õ8ŒICq,ÇÓ˜8‘“8…SiN ΢%çrК iÃE´åbÚq —ÒžËèÀåtä :q%¹Š.\Í5\Ëu\OWºqݹ‘ÜDOnæn¥·q;½¹ƒ;éÃ]ôånúq÷ÒŸûÀý<À@ñ0ðó$Oñ4Ïð,Ï1˜ÂK¼Â« åuÞàMÞâm†ñïòÃyŸø|ÄHFñ1£ù„1|ÊXÆñŸ3ž/ø’ |ÅD¾f“ù†o™ÂT¦ñÓ™ÁL¾g³™ÃÌeóYÀB±„Ÿø™e,g¿²’UüÆjþ`-ëø“ ld¹ïkPœ”¢ ÛQŽí©ÀTb'v¡ »²{P½¨N ö¡&µÙŸ:ÀÁF}p$ 9šc8ŽÆœ@šr2§p*Í938“³9‡siÅù´æB.âbÚq íé@'®¢ ×q7r7s+½¸ÞÜÁô¡/wÓ{éÏ} à~ò ƒxˆGx”Çx‚'yЧy†çÌó¼À^âe^å5†ò:oðo3Œwxá¼Ï‡Œà#F2ŠÑŒaŸñ%_ñ5“ù†)LeÓ™Élæ0Ÿ…,b ?ñ3Ëø•Õ¬åOþ"÷õ‰â”¤4ÛQ– ìHeª²;{±5©Íþ@]â¥> 8Š£9†ã8žhBSN¦§q:gr6çЊó¸€Ö´¡-í¸”ËèH':Ó…«¹–ëèÊ ÜÈMÜL/nçúpwÓ{¹ûÈ á1žà)žæYžãy^ä%^á5Þà-†ñ.ïñ>0‚‘|Ì'|ÊgŒçK¾b"“˜Ì·Lå;fð=s˜Ë|ò#‹YÂO,åg–ñ ËYÁ¯¬d¿±šßùƒ5¬eëù“ üÅF6‘ó¡ºBŠ<ò) Å)AIJQš2lGYÊQží©ÀT¤;²;³ •©Â®Te7ö`Oö¦:û°/5©EmöcêP—ƒ8„zF}§Gp$GÑ£iÄ1ËqOcN  'Ò”“8™ShÆ©œFsNç Zp&gq6-9‡siÅyœÏ´æBÚpm¹˜v\Â¥´ç2:p9¹‚N\ÉU\͵\GWºqݹ‘ÜDOn¡·Ó›;éC_úq/÷1€ûÈ æQãqžäiže0ÏóCx™WÊë¼Á[ ã]†ó>0’Oø”q|Îx¾ä+&ñ-SøŽïùy,àG±„¥ü¯¬d5kÙÀFrF¨ÃäQœÒlG9¶§;R™]Ù=¨Æ^T§ûP“ZìG .q0õ8ŒúÎICq Çrg<_ð%øŠ‰|Í$&ó ß2…©Lc³˜Ã\æ³E,æ'–ò +XÉ*VókYÇzþä/6‘;RÿB>Å(AIJQší(Çöì@%vdgv¡2»²ÕØ‹êìCMjQ›ý©ÃL=¥> 8’£hH#Ž¥1MhÊÉ4ãTN£9§Ó‚³hɹ´â|Zs!m¸ˆ‹¹„öt #Wp%¹Š.\Í5\Ëu\OWºqݹ‘ÜDOnæn¥·Ñ›;¹‹¾ôã^îã~2ˆ‡y„Çx‚§x†çxžÂ˼Êk å Þäm†ñïòÃù€Œd3šOÃX>c<_ð%˜È$¾a S™Æ f1›9Ìe> ù‘E,f)¿°‚•üÆj~çÖ°–u¬çO6ðÙDÎ(õ’|ŠQ‚R”¦ ÛQ–r”g{*°©ÄŽìÄÎT¡*»S=©NMj³?P—9„C©OŽàHŽ¢!GÓˆc8–ã8žÆœ@N¤)'q2§ÐŒS9œEKÎá\ZqçÓš ¹ˆ¶\L;.¥=¸œ+èÄ•tæ*ºp5×p]éÆ tçFzp=¹…^ÜFoî¤}éÇ=ôg÷ó2ˆ‡y”Çxœ'x’§xšgx–çÌó¼À‹ á%^æ^å5†ò:oð&oñ6Ãx‡á|ÈHFó)Ÿ1ž/ùЉ|Í$&ó ß2…©Lã;¦3ƒ™|Ï,f3‡˜Ë<æ³€…üÈ"³„ŸYÎJV³†õl`#9«Ï¤È#ŸŠQœ”¤¥)Ãv”¥åÙž ì@E*±#;±3»P™*ìF5öfj±?p sõ8”èÏá4àŽä(r48†c9ŽãiÌ 4áDšr's Í8•Ó9“–´âÚЖv\J{:p9èÌU\͵tåºÓƒ›èÉÍô¢7}èË=ÜÇý dñ0ð8Oñ,Ïó"/ó*Cyƒ7y‹a¼ËûŒ`$3š1ŒeŸ1ž/øŠ¯™Ä7Lá;f0“YÌf?0ŸYÂR~áWV±š?XÃZÖ±M¤F«G§e(Ky¶§Ù‘]Ø•ÝØƒjìEuj°5©Åþ@]âãpp$GÑFKcNä$N¡§q:gЂ39‹s8Ö´áb.å2.ç :q%¹šëèÆÜÄ-ôâvîàNî¢/÷Пû¸Ÿ<Ä#<Êã<Á“<ͳ<Ï^æU^ãuÞä-Þfï0œÉÇŒaŸóøŠ‰|Í7Le:ß3›¹Ìg!‹XÌ~b)?³Œ_XÎ ~e%«øÕüάa-ëÙÀ&r?ÑßP@1ŠS‚’”¢4eØŽ²”£<ÛS¨H%vd'v¡ »±{²7Õ©Á>ìKMjQ›ýØŸ:@]ä æêq(õiÀQÍ1Çñ4æšp"M9‰“9…fœÊi4çtΠgr-9—óiMÚr1—r9Wr5×r=ݸîô¤½¹“»¸›~ôçâ1žà)žáYžãE^a(oðÃx‡wyá¼Ï|È>b$£ø˜Ñ|Â>e,ãøŒÏÏLàk&ó-S™ÆwLg3ùžYÌf?0—yÌg ù‘E,f ?±”Ÿù…_YÅjþ` ëø“¿È£>Rœ’”¦ e)Ov¤2»²{P½¨Î>Ôæä`êq(õiÀ‘4âxNàDNâdšqÍ9ƒœEKÎá\Zqçs!miÇ¥\F.§#WЙ«¹–ëéÆ tçFnâfzq;½¹“>ô¥÷Пû¸Ÿ<È âaáqžâžãy^àE†ð¯ò:oò6ïð.ï1œÁ(Fó Ÿ2–Ïù’ |Í7LaÓ™Á,~`. XÄ–²Œ_XÁJV³– l$çScyPœR”¥ّمÊTaWª²»³ÕØ“½Ø›êÔ`ö¥&µÙŸ8ƒ8˜C¨Ç¡F}§Gp$GÑ£iÄ1ËñœÀ‰œÄÉ4ã4Îà,Zr.­8ŸÖ\D;.å2:БN\Å5\GWºÑÜL/nçî¤/÷0€yˆGx”Çxœ§Ì á%^åuÞæ=ÞçCFð#ÅÇŒæÆð)cÇg|Îx¾àK&ð“ø†©Lg&³˜Í~`.ó˜Ïò#‹XÌ~b)?³Œ_XÎJ~ãÖñ'±‘MäŒÕÏ"| (FqJP’R”¦ ÛQ–rT ";Q™]ÙÝÙƒjìÉ^ìMuj°ûR“ZÔf?ö§P—ƒ©G}Žà(ަÇq"§ÐœœEKÎá\ZÓ–Kè@G:q%]¸žîôäVn£7wp'ý¸xˆGxŒÇy’§y–Á¼À‹¼Ä˼ÊPÞà-†ñï1œø˜Oùœ Ld“ù†o™ÂT¦ñÓ™Á÷Ìææ2ù,`!?²ˆÅ,a)ËXÎ Vò¿ókXË:Ö³äŒSGH‘G>”d;ÊQžŠìLeª°;{QìþԤµÙý©ÃÔå áPês8 8‚#9ІM#ŽáXŽ£1MhÊÉœB3Nå4šs:gЂ39‹³9‡VœOk.¤ Ñ–‹iÇ%\J{.£éDgºp5×ÓôäfnãNîânúq/÷1€ȃ â!æå1ç žä)žæžå9óæ>e,ãøœ/ùН™Ì·Lå;f0“ï™Í\æ³E,a)ËXÎ Vò°Ž l"÷sõŠS‚’”¢4eØŽ²”£<ÛS¨H%vd'vf*S…]©ÊnìÎTcOöboªSƒ}©EmöcêP—ƒ8˜C8”úACŽá8Ó„¦œL3Nå4N§gs.çÓš6´¥—r¸œŽ\A'®¤3WÑ…«¹†k¹ŽëéJ7n ;7Òƒ›èÉÍÜ­ôâ6n§7wp'wq7ý¸‡{éÏ` òð8Oñ,ƒy!¼Ì« åuÞà-†ñð£ÍÆòãù‚/ùН™Ì·Lc:3ùžÙüÀ<æ³€YÌOüÌr~e¿ñ;kXÇzþä/6‘;Þ˜J1JPŠ2lG9¶§;P‰Ø…]Ù=Ø“½©Î>Ô¤ûS—ƒ9Œ#8šc8ŽÆ4¡)'s Í8ÓiÁYœC+Îç.ä".¦—Оt¤Wq5×r]¹éÁMÜÌ­ÜÆô¡/ý¸—þ àò ññ$Oó,ƒyy‰Wx•×y‹wxŸÍÆòãù’¯˜È×Lb2ßð-S˜Ê4¾c:3˜É÷Ìb6sø¹Ìc> XÈ,æ'–²Œå¬àWV²Šßøƒµ¬gÉùB}!Eù§$¥ÙŽrlO*²#;S…ÝØƒ=Ù›ìCMj³?u9˜zÆáÁ‘ͱωœL3NãtZp&gsçr>­iC[Úq)íé@G® 3]¸†ëèÊ tçFzГ[èÅíÜAî¢/wÓ{¹ûÈ æåqžä)žã†ð2¯2”×y‹wx—øˆQŒf cÇx&ð“™Â4¦3“YÌææ±%üÌ/¬`%¿±šßùƒ5¬eëù“ üÅF6‘ó¥:AŠ<ò) Å)AIJQ†í(K9¶g*±»P™*ìÊnìÁžìM ö¡&µ©ÃL=£> 8’£9–ã9iÊÉ4£9-8‹–œK+Îã|ZÓ†¶´ãRÚsèH':Ó…k¸–븞nt§=¹…[éÅmôæNîânîá^0‡x”Çy’§y†Á¼È˼Æë¼ÉÛ ãÞå=†ó>ð!#øˆ‘ŒâcFó cø”±Œã3>g<_2‰Lb2ß0…i|Çtf2‹˜Ç~d1?±”Ÿù…¬b5°–õlà/6²‰œ ê)òȧ€b§%)Eiʰe)Gy¶§©ÄNìBeªP•ÝÙƒjìEuö¥ûQ‡ºÄÁ¡ÔçŽâhŽá8sMiFsΤ%çrp!m¸˜ö\Εtᮣ+7ÐÜÌ­ô¦}éǽÜÇ`ó8Oñ ÏñìKMjQ›ýØŸ:@]ä æêq(‡QŸÃiÀICq Çј8‘¦œÄÉ4ã4NçLZr.çq>К6´¥í¹œ+¸’Îtáj®¥+7p#=¹…^ÜFoî wsý¹Ÿ â!æQžà)ža0/0„—y…WÊ›¼Í; çF0’QŒf ãÏ&1…iLgß3‹9Ìc?²„¥,ãVð+«ø5¬cÉ™¤®"Ÿâ”¤4e)O*R‰Ù™*Tewödoj°/5©ÍþÔå`¥ iıÇñ4æšp"M9‰“9…fœÊi4çtΠgrgÓ’s8—VœOkÚpm¹˜v\B{.§¹Š.\Í5\ËõÜ@zr3·r½¹“»èGp?ÄÃ<Êã<ų æy†ð Cy“a g#ÅhÆð)cùŒñL`"_3™o™ÂT¾c³˜ÃÌe ø‘Å,eËYÁ¯¬ä7~g ëÙÀF6‘;ÙØCÅ)EY*P‘JìLª²;{RƒZìÇþÔå`êq hȱOcšÐ”S838›VœÏ\ÈE´£=—s%Ws-×q=]éÆ tçFzp=¹™[¸•^ÜÆíôæúpws÷r¸Ÿ âaã žâižá9žçE^æU†ò:oð&oñ6Ãx‡wyá¼Ï|È>b$£ø˜OÃX>ãs¾àK&0‘I|ÃT¾c3ùžÙüÀ<²ˆ%üÄ2~e¿³Ž?ù‹ä~£>PœR”¥<ØJìLvcOö¦ûP“ý8€ƒ8”ú4àŽä(r48†c9ŽãiÌ 4áDšr's §rÍ9ƒœÅÙ´ä\Σ5q1—p)íé@G®¤ ×p×Ó•nÜ@wn¤7Ñ“›¹…[éÅmÜNoîàNúp}éǽôç>p?0‡x„Çx‚§x†çÌó áe^e(oðÃx‡wyá¼Ï|È>b$£ø˜Ñ|Â>e,ãøŒÏù’‰Læ[¦ò3˜É÷Ìf.óXÀ,f ?±”eü¯¬b5¿³†µüÉ&Rߪo§$¥Ù޲”c{v ;± UØ•ªìÆìÉÞÔ`_jQ›ýØŸ8ƒ©ÇaÔ§Gp$ iıÏ 4¡)'ÑŒÓ9“–œËy\À…´á"Úr1í¸„KiÏetàr:r¸’Î\E®æZ®§+ݸîÜHzr ½¸;¸“>ÜÅÝÜCðÄÃ<Æ“<ͳ æy^ä%^åuÞämÞá]†ó>ò£ø˜OÃXÆñ9_0¯øšILæ[¦ò3øžYÌfs™ÏB±„ŸXÊÏ,c«Xͬeø‹œ)Æ6 (NIJQš²lOEvdg*S…]©ÊnìÎTcOöboª³5©Emö£u9ˆC¨ÇaÎECަÇp,Çq<9&œÈÉœJsΠgs.çq­iC[.æ.å2.§#¸’.\Ëõtãºs#=¸‰žÜÌ-ÜJ/nãvzswÒ‡»èËÝôãî¥?÷1€ûy€<È âã žâižá9žç^ä%^æ^e(oðÃx—÷Á(F3†±Œã3>ç &0‘I|ÃT¦ó=³ùyÌg ù‘E,f ?±”ŸYÆ/,g¿²’UüÆj~çÖ°–u¬çO6ðÙDÎTý!ù£%)EÊRŽòT`*R‰Ø…*Tewö¤:ûR‹ý¨ÃÔå@¦‡q8GÐc8ž8‘“8™ShÆ©œFsNç Zp&gq6-9‡siÅyœÏ´æBÚpm¹˜v\Â¥´ç2:БNt¦ Ws ×Ñ•nÜÀôà&zr ½¸;èÃÝÜËàAâaáQçIžæYó"/ó¯ó&o3Œwx—÷Îû|À‡Œà#F2ŠÍ'ŒáSÆ2ŽÏøœñ|Á—Là+&ò5“˜Ì7LaÓ™É÷Ìbs™Ç|ò#‹XÌOüÌ/¬`%«YÃz6°‘œi愤ȣ€â”¤4ÛQžØ‘©Ì®Tewö`Oª³5©ÍþÀAL=£> 8‚£hıÏ œÈI4ãTšs-8“³9—ó¸€ ¹ˆ‹¹”˸œŽtâJ:Ó…k¹žnt§=¹•ÛèÍôá.îæð óOò,/ð2¯2”7x“·Æ»¼Ï‡|Ä(F3†q|Æx¾dùšÉLaÓ™É,æ0ù,d‹YÂR~a+ùßYÃz6°‘M—ùwÊœ< (A)ÊP–òT ;± •Ù•ªìN5ªS“ý8€ƒ8”4¤Çrñ1cÇLä¦0éÌà{f1‡y,àGó?³œ¬ä7VókXÇ6’3]Ù’O1JRŠ2”¥å©@%vbªP•ÝÙ“½©Á>Ô¤µÙŸºÄ!J}pGs Çrg<_ð%øŠ‰|Í$&ó ß2…©Lã;¦3“YÌf?0—y,`!?²ˆŸø™_XÁ*~g-ëÙÀF6‘3SyS@qJR†rT ";²3»P™*ìJUvcwö {²{SìþԤµÙý©ÃÔå@â`êqõ9œÁ‘4ähq Çs'rÍhN ΢%çÒŠóhMÚÒŽö\N':Ó…k¸–ëéÆ t§=¹…^ÜFoî¤}éÇ=ÜKð2ˆ‡y”Çx‚çÂk¼Á0†3‚‘|Ì'Œa_ð“ø–iÌ`s˜Ë|°ˆ¥ü¯üƬcÉù^»'JRŠrT`GvfWvcöd/ªS“:ÀAJޤ!8–ã8ž&œÄ)œÊé´àlΡçs­¹ˆv\Êet¤Wq5×r=]éÆÜÄ-ô¢7}èK?îå>p?òò8Oñ,ƒy!¼Ì+ åmÞå}Fð1cÇç|Á¾b"“™Â4¦ó=³™Ë|²ˆÅ,ág–ó+«ø5¬gÉ™¥¿&EÅ)EÊQŠìÈÎT¦ »²;ÕØ›Ôd?êP—ƒ8„zÔç(q'pÍhΜÉÙ´äÎ¥çq>К iÃE´åbÚq —ÒžËèÀåtä :q%¹Š.\͵\GWn ;=èÉ-ÜJ/nçúЗ{¸ûÈ æåqžäižåy†ð2¯2”7x“·x›a¼Ã»¼ÇpÞç>d1’Q|Ìh>a Ÿ2–q|ÆçŒç ¾dùšÉ|˦1™|Ï,æ0—ù,d1KYÆr~e¿±š?XËz6°‰ÔlóMŠQ‚R”¦ ÛQ–r”g{*°©ÄŽìÄÎìBeª°+UÙÝÙƒjìÉ^ìMuj°/5©ÍþÔ¡.qõ8”ú4àHr Çs'r§ÐŒSiΜÉÙœËù´¦ miÇ%\J{.£—Ó‘+èÄ•tæ*ºp5×p-×q=]éÆ tçFzp=¹™[èÅmôæNúЗ~ÜKîã~2ˆ‡yŒ'yšgÌ ¼È^æU†òoó.Ãù€ŒdŸ0Ž/˜È$¦0™Ìbs™ÇB–°Œ_YŬgÉ™£>‘G%ÙŽòìÀNT¡*»S½Ø›Ô¢rõ9’†4âXާ1'r Í9“³iEkÚЖv\J{.çJ®æzºÑƒ[èÅíÜAîânúóƒx„'x†çxžy‰—y•7Æ{|ÀH>áSÆñ9_ð%øŠ‰|Í$&ó ß2…©Lã;¦3ƒ™|Ï,f3‡˜Ë<æ³€…üÈ"–°”Ÿù…¬d«ù?XÃZþä/6ý]ž?(KJPŠ2lGYÊQž¨ÄNT¦*{°'{SìþԤµÙý©ÃÔå@â`¡‡rõ9œÁ‘ECަÇrãs¾`_1‰o˜ÂwÌà{f1‡˜Ç²˜Ÿø™åüÊ*~ãwþ` kYÏ_l"wž¾˜b”¤4ÛQ–r”§•؉]¨ÂnTc/ªSƒ}©Å~D=ês$8ž8‘¦œÂiœÎÙœËù´áb.å2.§#WÒ…kèÆô¤½éC_úq÷ñò(Oð4ƒy‘—y•¡¼Î[¼Ã{Œ`Ÿ0ŽñL`"“˜ÌTf0‡EüÌrVñëÙÀF6‘3_~“"| (FqJP’R”¦ ÛQ–r”g{*°©ÄNìBev¥*»³ÕØ“½¨Î>Ôb?êP—ƒ8˜C¨ÇaΑ4¤Çr<9&œHSNâdN¡§rÍ93hÁ™œÅÙ´äÎ¥çqÒ†¶\Ì%\J{.£éÄU\͵\O7n ;7r7Ó‹Û¹ƒ>ôånîå~â ža0/0„—y…×y›áŒäÆòãù’ |Å×Læ[¦0éÌä{f1›˜Ç²ˆ%,åg–±œ¬d5kXÇŸüÅ&r¨OäQ@ J³åØž¨ÈŽìDev£{Sƒ}©Emö£u9ˆƒ©ÇaNŽàHÒˆc9ŽÆ4¡)'q2Í8•æ´àlΡçÓš ¹ˆ¶´£=—sWrWs ×q=7p·p½¹“»èK?ús?ƒx„Çy’§y–çxž!¼Âë¼Å;¼Çû|ÈF3†Ï™È7Lå;fð=³˜Í~`.ó˜Ïò#‹XÌ~b)?³Œ_XÎ ~e%«øßYÃ:Öó'ØHÎBuŠS’R”¦ e)O*±»P™*ìJUvcwö {²{SìþԤµÙý©ÃÔå@¦‡QŸÃiÀ‘4¤Çј&œHSNâN¥9-8‹–œC+ÎçBÚÒŽöt #Wp%Wq ×Ó¹‰›¹…Û¸ƒ¾ÜËä!áQçIža0/ð¯ðCyƒ·x‡á|ÀGŒb4Ÿ0–Ï™À$¾å;fð=³øù,b)Ëø•U¬æwÖò'›ÈûQ™S’ÒlGYÊS©LUª±Õ©Á¾Ô¢QÃ9‚£hȱœÀ)œÁYœËy\@kÚr)Wp5×q7r=¹™[¸•^ÜÆíôæî¤wÑ—»éÇ=ÜKîc0yˆ‡y„Çx‚§x†çxžx‘—x…×x7y›a¼Ã»¼ÇpÞç>d1’Q|Ìh>a Ÿ2–q|Æx¾àK¾b"_3™o™ÊwÌà{f1›˜Ç~d1?±”e¬à7þ`-ëÙÀ_l"µÈ|‚’”f;ÊQžØ‘ÊTewª±{³µ¨ÃL=£>‡sGs,Çs'Ò”“8…æ´à,Zr.­¸€6´£=èH'®¤3WÑ…«¹†k¹ŽëéJ7n ;7Òƒ›èÉÍÜ­ôâ6n§7wp'wÑ—~ÜKîã~ò ñ0ðOðÏð/ð¯ð¯óoò6ïðïó!#ÍÆòŸ3ž/ø’ |ÅD¾f“ù†o™ÂT¦ñÓ™ÁL¾g³™ÃÌe XÈ"–ðKYÆrV°’UüÆï¬aò9‹õ1Pœ’”¢4ÛQŽíÙJìLª²;ÕØ“½Ø›êÔ`ö¥&µ¨Í~ìO .rsõ8”èÏá4àŽ¢!8–ã8ž8‘¦œÌ)4ã4N§gÑ’V\À…\ÄÅ´ãÚÓŽt¢3Ws]¹éÁMôäfnáVzq·Ó›;¸“>ÜE_î¦÷p/ý¹ÜÏ äAâaåqžàIžæYžãy^àE^â^ãuÞdïñ>ò#ÅhÆ0–ÏϾf2ß2•iÌ`óù‘Ÿø™å¬b5°–ul w‰zE ÊP–í©ÄNìBve7ö¤µØŸºB}p$ 9šchLSšÑœ´ä<.àB.¢-—p9WÒ…ëèJwzr ½¸Þôá0‡y”'x†çxžÂË å-Þå}Fð1Ÿ2ŽÏù‚/ùŠÉLe³ø,æ'~æ–ó+«XÍï¬a-ëÙÀFr~’ç¤È§%(IiÊP–òT "•Ø‘Ù•ÝØ½Ø›Ôb?êP—9˜Ã8‚FGcšÒŒÓ8œÉÙ´¢5s)—qWq5×r=]éÆ tçFzp=¹™[¸•^ÜÆíôæî¤wq7÷p/ýÀý dðOðÏð,ƒy—x…×x7y‹·Æ;¼Ë{ ç}>àCFð#ÅÇŒæÆð)ãøœñ|Á¾âk&3…iLg&³˜ÍÌc!‹XÂR–ñ +XÉo¬æwþ`-ëø“ ld9KÕòȧ¥)G*²#;³ UÙƒ½Ù‡šÔfêpõ8œ#iH#Žå8s'ÑŒSiδ %­hÍE\Ì%´çÿþýß¿ÿû÷ÿþïßÿýû¿ÿ÷ïÿþýß¿ÿþ—›“Ê)S>gûœŠ9;åìœS9§JN­œº9 rŽÉ9!甜‹r.ÍésyN§œrnÏéŸó@Îã9Oå Î’óRΫ9CsÞÌy+çœs>ÊóYΗ9s&åLÍù.gVÎ9ósþÊ)•»knÍÜz¹ rËmš{FnËÜósÛåvÌíœ{uîõ¹=s{ç>”;8÷íܹr§ä.È]ž»:wcn*•—*ž*‘*Ú.U)µkjßÔÁ©©cR'¥š§Ú¤Ú§:¦:¥nJÝžê“ê›z0õxê¹Ô‹©WSo¤†¥ÞK}”ú8565>5!515;õsjeêÁ•É«”·[Þ¾yæ‘×(לּ‹óºäõÈë“7 ïñ¼çòÞÉ›7)oNÞâ¼UyëóòówÈß#¿f~ÝüCòëåš_?ÿèüÆù§çŸ“^~ëü‹òÛå_žß9ÿšü®ùÝóoÊ¿9ÿîüùOæ?Ÿ?4Xþðü÷ó?Èÿ(ÿãü1ù_矿0Uþïùkóó ÊìTPµ ZAõ‚šõ Ž/h^pnAÇ‚n·ÜWðhÁ³C ^.x­àý‚Ñ_L.˜Q0»`~Á/ë ò‹•)¶c±*Åö(V³ØÁÅŽ,v|±fÅÎ*ÖªØe껩Ø]Å,öT±!ÅÞ(6¢ØßeY,§TNÙœÝrêä4Ìé™Ó7gPθœå9;æ6Ì“»0wCnÙÔ©ËR·¤N­M5rü“ò~ͯX0¸`×bí_øØ´)óÏàyáï›6>¾›þz¸ý¶î'=¼x¸ñð7mþ—|†ß7™º`ËTÎÆM…­cë¯gJo°]rûlé ¶ÛhÏÌá'ÓŸ /ž?…¡†™-½™Ò“ü™L_öðþwÒ—=ü­ÅWtü[KÏÖÒ·)ñ/™žd:³ï—­¶Ç_K¦'¨]ñô¥ÒZSjsm _/Œ·ð•E´¼`›¢Ê{kÛ¤oŸmßlá¤çUú+Ñ} (SzÂ6Í“Ô?ïlLäZ¦c,üäd¶œKÆ•=ÞÌiÈ–žd]K¶Â}“%»qsÛ ÃŒÆRtym{¼Ûr¼Ñ¾#šž¢û”ÿ_NOzüŸÔÛÂtej 7e®Ïÿî‘û–ŸÛ’Ïÿ>ÿÿ]¹üÛòÚ”åß¿Ý&[>üÛ<ÉöN¶|ˆ¶åmɇhß–üIm~$=oó+9‰ÿ¶îe ÿ߯ûoÓ“­L³Å»qó#N¶xÿÚ¼åÿ4þ[éOKÈVóíïWø‚š˜mûpN¯éÿw¼ÿÏ<²åÏÿv~þ+ÿÿ[åõ¿]¾Ùòù¿U^ÿ6œ[^Ùú½ÿVùfë'ÿ[啽Μž­—h*ñ(|-ú^îf©-¯çnåýèÏp‹ÜŒÏÂ-R‘ßrÿ§a榽žKI4ÞèјÒãÈ”/ÙÓ”» 1dÞ.Sx™öÍ”–­•eòy<Þ¢K"[[/{8É׳¥<ÓÏdþl-”lù–éñwÛ‹?â)ÏO<ÒË x's^¡ÆkQoZa¼Ñ’CÌÝoòØó#±Çc. 1Œ=^ _É”¦0ÞÌÇ“ûÏÞ¹ÿ¤&osšâ ßù{‹¼Ä{…{æý³Mî–ÿÃðó7¿–·9ñš™ûO|ÁþÑ£ âÍÛ²²]¾’‰#Úcäo>êÔ–ôÅëYÞ–RO»0޼ͿÇÓn¿97â}`þ–­ò¶„Ÿl%ѲHïï¢åÍ˰ÌórR±÷ÂúÖŸd»ÌÛ’ªày´]ço9¢ày˜“y[öKß3Èû`ÿèžÙÚs˜êTìyævïË’µ'ÓÑÚ—Þã¦×íÿôÕxø™·ÍJöÞ,Ù—Ä[zØ/e5Òó"sŸM[´Ÿ‹îŸ¬ŸéýY´¯ ÷ÎÏXS›[zø3ÝÖ·HEÂ*z«è»Ù· Ž3Z§Â6 -ÙæŠêK3•l¦z/ñS S‰ãµ?7O¼5ü§qeú-Ù²§0='r3¤)zEµ¢òmÛ^‰§$žÒäÿ[ 5[ ééO¦¼èžoëéÛ¶òÛZÙm{8ÛúHμÒû¡d™&ßI}kóµdH¶d{IåänîEò6äùRσxM–Iá³ü-áåmž½¤÷êaù[¤÷¿áïÁŒ •1¼øÑ¦"ÛæådÎËÜœp’[dÌÑ2 Ê5{ÍÞÏÛF¶T˜’`îŸ3ÆÛIPÚÑ×ãh„sÉèÌ,ÙÚó"óÙTÚVÉr g Ñ9f²ýäGfÐÉ~,¹}PKòéŠ[XîAøéóãd¹çoIc²¦'˽ðµ üøvÑt‡¹™Ÿ!´x;ŠçfQ}I~dŸôü¶£TZ}K?7'˜¯'gêÉŸÑ-ò#Çž¹_ Úq²nÆ·ÊÏ gDÑð“{¤×þôŒo“©42‡šÌÃd{Ko‡™ZfzÞ¶=³·òä±¥ï³-ÛfÞ/SÙ™ÂÌözÑqm{üɱ/SÙgß’å˜ùx2‡ŸÊ~n–ð£iMQ8z¤çYЇDëh8&'cÎíóøl‚-ÂÕ„¨h½üß3=R9™ó!Ø7™A>'óaÛjI¼ $ŸEK0Þ „i CˆŽýÙÊ.!šâôºÌ–².ѽƒYPúVÑ3§0—ãG„–}-½f&Ï·õ|rÛÛoæÖUTÛúß7µå¨Š>—޾ïµÂc/cƒÙP¶\ ÞÈÉž0œ)ejkñ™­í†9’~lÁ+ñZ˜Sy‰wò#5/½DÒGßhˆÉzmé[ÿ·ÛzIEa‹J?‡ˆ·³ø™X´}Åû‚èqgJ]P³âýP<ýÁü6Ù£ü7Ž+•_…N®XÇ_×xÉÿ·Žë¿•ÏÿãJÖ÷ôvš^Û2÷úÿnߢ¶‰?2o™Zeú;ÙÚMzÒcËbr¿l!gJU¦Pâ1çÆbÎÖö£agÏ¿ÿFh™s+{Ie/¿­å`æ¼Ë\VÙŽ<þ3ó«™ßÍVÉt]k¶V·‹áßæa¦þMü™Ê |$çQAÈù‘^&ºgte?>®ægŒaÛÂÏ<3È4øwÛþûtoÛÏLµ)S9Çû³ô²Í ‹nÇÙÚvz8ÙŽ<)ÿlû0îäõÌ0g£3­ô5›pf„šŸÎ5s7o“\7û·ñFó4žß™Ê-~ÜñÜ-º­eþ-{©eJW²l=ÖÌõ ùNrïL¡e®ÓAˆ×„ÂÚ^×¶¶]ØS9©DüñrßÖíÒÏ2íÖ/ºâÔ¢ü½]<Ñ3­`ÛøUø`E>Ü#Ù³%{µmÛ&^Ÿ3õ [e2×»Lu'[ÚZ­ÜZ¬ÿþ‘¼¾”¼&Tô9vr«LW”ÂçÙ®;eÚ;<þ‚Ä#™âLWÆrsŠ'Á;ñ;‘’¥[,ñÈMo2……‰G2Ždn¯KH¦&S‹Ê~T2Eé#Qax1Ñï„Éˉ–ìß±‰–Wül2šê‚DlÉÚ•LaP^ñØ¢9¬ÀÅûT9Ï¿dû(‘ÈÅä™q27r{>¢á§·ù°?.|5*=žèõÒd jogñuËh¬Ñö´”hÛÊÛS²?¶öŽÖ‡è~ñZ•lWéõ"žÆxûŠÞ;í ’)LÏñô\ϜSþ Ç×Üœô ð½¿Sô2…¹¤(/–'©H~ßß) ~yÎÎ’ýapAøûgjKR›Ç¬d˜»¹¼¢©ÌË’ÆT,ÖxNl[^äÆR¿¶œ·¹î&ûÃÔæòŠæH¸Ò¬{&ûà ¶¿­2Þ~ƒq;9j­8è’+\é+?Ñþ0èm¢í+Xg¯FûàgK»âw?ÆûÃ`ïhû ï–ˆÎN¢ýa*[´MæF¼? r%Ú¾ Ÿ§ßû™ÉñÂýÓÇ®xnÄÛWPÊaŠ¢ç$ÉùPPsƒ¦(oËÆûÃhû jogEŶ¯ ¥Ç¶¯Lw[{q…í+ÙÆÛUPޙî" â r!È• ã1Åï—Ëäxa¼a=ÚW²? b+þÏÁϰH夰Ay•Ø<Š—Ø\‹ÃÌ´œ0S›ÛW‰Þ)üíƒíãóÜÍí«Xäg´?ŒßÙ=¶hêò"}ox]$9ßÈÝܾ¢9íó¶¤'~ž’K]~dL r#}¾QX^aN¤"cJxÅ(9߈–W°W´}gøé÷9¤0Ú¾Â;A¢µ1Z^AnDÛWPûÒ¯9ä|´}åç¤÷6ñò ö޶¯üœô;^^a>†í+8L_Ár!È•hû ®ªÆûÃhy%m_©œôÑ!9ëH>¢³h}Oþý=óÕšh<é3ÓÌgBÑpãcS4žô19^É14ùZØê’×J3‡ŸPty1É­S‰=óŠ>Žü˜l[‡ó‰m¹.(úúl¼®†Çºµû±£ù9¬Lù½-צÃ4dºF9Ž Í™ÓÝ'¾_æûÁ2ÝKæOò®°x<ñ#ŽÆ )Otû¢[qQ-;ÙŽ“m.ÙîâãQ¦™~¸M´÷Èôˆn“-=Eµôøœ¾B“ÞO5ëŠo“m6”f|-/sMÌ4Š—~*­,“µ5ÛÜ-ºÍ¶Uæ{NÃÜçÏÉùTr›l× ‚üÉ>W ¶ÎË ÎssâéŽ{¶ù]4S±º“›“<¶üœ ÉœžÜÈ6ÙÒ´š¢¥÷^ÑÒÈ/Rz_¢y<—L–N¦3Çhîg?O ãf¾ñ=Ãm¢«ã™ÒÝ&[z‚¶†™žžh­Ì–ž lâwæ%^Ko¡Ñ#ÎOÛ#Rö=ø³ÿL;ª¨=3Ç­•ÉãÜÚ]‘ñ^(~œ[¿S2Þ.¶6º¤÷Àéý{´&üß¼1ðïæá•÷L¯ÆË<ü=¾.üŽž™ZZÐwdŽ'½ï â‰×¼h<éýÆÖëp¦ö³µÖ¤)œfÊÙ¤èÌsksÖpŸÿyðÿfžd~-$¹&›Êðˆî_…‹Ïñ’}²ÅçF^O® G[{|ŸdÛÊ>#ÊË(½]Å{þ°Ç Ê ¹ŽŽñö„|)Hu^ähy§‡ôaÌÑV”9•Érˆ·Ç0£±DË9syDkyækoéeŸLKØÄÃIå$s.ú鬸ÚQzÍ´uz{ʶBÌ`ÒßÍôMa8ÉóÀpe+~V—y7ššàõäy^N²–ÿïÔóÿ|Nö#™jaôÈ¢í(}ÄN/­÷–Ù_‰ÿ¾-{d c[·.ê•l}n¦~5 %Þ'Ï´ƒvaÓçdñmâ½U(žêäYKòXÒÏÒ¢ýL|›TÚ6ñ! 9zŽK¼ÇÈt½¼¨WzI¯UEŸA$gÎñþOãÞÚ,"úNæ­¢ï½Ê•=–l-9¬…ÙZtüýäì!{ËÝÚ«Ñ6oñºš›öJ\zˆ™Ž<ºý–Þl¯•ºm+‹më=Ò_Iï¶¥gÈÔW= =òõnÑ!§÷M™z«°‡ r4ùÊÖCÉMì“ÊøÊ¶ô{ÛÒ_=®=>omô.:ä­Í{ÂI¸Wxå+Ù/dª“™ûˆôþ!úìß¶¨­¿­™gE·Í¢ÃNïS²µÜT†çñ¾1™#Ñ\J†‘¹ïË<³É”ÉcÍœþ—óÿ0²¿Rô£è0ÙÛ¥ÿžìé2õ…Ùz§ìýZÑïÝãeŸ“e›%û¤x”ì²õFÙæEÏ=¢¯fÿôf¶9Kö9W¶ùVüÇâm#~”éW›â£]´ˆ·§¢çtE·ƒð•ôuÃdÛ '9wŠO8ž%gÚahÁYw¼ws"ÛQQkÈÿî˜þmžý'iÊÔ«Æû…xߘ©Žd>Âx,ÙÊvë¿ý›í³÷n™þÏœÖÿö³mÉãxš2Õ¸ÿ4ÿ§y­‘ñc**çÓëIpµ0LM´æ%ZbtôÞ·ŒüDèñ\^Aü©DüÉñ-7n"þÜDü¹9ñ£Ë4¶åædÛ‚ÖœŸñgzyd{'x/ù~aÊ3‡}/s˜ÿéenyñŸ^¯â9œ¾ ¯™ÂË\î©X|ñ•‹/7_¼.d*éôÒ)jU"=‹Êý­×†›Š­?¢sº Ñ4=ƒ»f“cCòZat» ¬lŸî‰–R¦OC$kV¦ÏY$ëG¦ÏéÄç&á#Güýø½ßaþ$gCÁëñãNÏŸèÕ€äUÅlŸéˆÖîLŸuJ¶®LŸlJÖçLŸp‰Ïu …÷<u+=ŸþN_á]Íá=ÃÑú]áýÌù‘£Ž¿Zøùˆè¢ñ™zXwâ±Eûšðîñl)ïȯ%Ë,¼ÿ:¼z‘¼ŠUK±ÍÇUðO¼ék y›gaÙçh›s¸0¤øúCx}$}.äIñÞ-öOYæe !S‚Ü(Ü3)ÛQ5Ÿ,L}Rös´Lùɇ É3Àðž®LùŠäCR¶2çC*’ÁÑd;ŠÌùm/áD|¾m/áÊäYa{ êyò*@´½äåDs6>j‡Ÿ‰ˆÞÑ?— ?Ók/Ñž ìkƒ¶í»âí%¼‚oOEGÑ{“£|´÷‹>Ž6Ñ÷Òǵxî'¯GË5?'Ú;…9öþ¹±XÒÇTNôx’½J|¬ˆHñÑ%Ú!Fã ò:/­DÃ܈^Õ÷ˆñüN®ŸD¯™GãêKö{óâcmü^­­Ýñ‘Û#Ó67kØaŸ»-a'·Îv¦¾,Ü* 5ÛšU*^0È´þMeþæòÊ~í8^NékAñ#/ê~½Lcö¶Öâxû‹qüY´ŽW2w¢í6Þrƒºž¹…Û„[ä&¶Hξ2÷KáÙH²Ï{‡d͎ƹ­)‹ßm×A)§÷!ñ>.žî°/ÏˉoÏñÅË6:F'ó!hñuÐxÝ Fèh/•ÚR¦y[Ž<ÓÑf;[)*M…ñF[c¼¶EïèLöƒ¹9ÑVþof÷¿j0oK¥Åï±òï…e/÷°.†u&zMØ7åm©;™ÓÔ‹h¨AHÞã–{P6a/oñ™ú—ø6ñgaã}b2ÔÌ«ÖÉ´ÅÏdã-0lÿñ^,ù,¾’J´IîÞ‹Äs>} Žç~æ;.Âp·­æý›-³¥'Udz²•v²äƒ¾ <÷È4³ ÎHâ—¿e‹h~ÇÏ£kA…ÛßòIÀ §ÉÄ»å“ÂÑX¢¥Q¸ÞŽAÉÖ”Ì³ÝøZL*–¾àgÐ æÅb?Ì—ä¹ÖÂü Ž?ÒÏœƒï/Ž.š¿ÁñÇë@úÈ2·Ø ÿ¢#L´”Ãóÿhû Ë??N¼Ý–;éwßò™éÌó¨à|+l{ñv^XþAýMöÁÑÇ{èè{Aš‚YZüÊcPþAÚãµ;,ÿø(¥`óçrƒ<ŠæoXþAý‰žuFË?œ9ÇË8(ÿp>“©?ý;Uÿ|æ¶D$•ÿ­ô¿òÖú¿ô>+ÙF“u2YÒÉ6Ÿìã’e­ÃEE÷¾™¶ÏÝR[3ÕØÔ–’LŸ¤6çU¦™\°Å¶Ü5·m[mmԈΕã«×A~fZ—¯Z'Wd3¯WÇ[K°›\…¯Á[Ä[J°:²mú(‘y5:ÓñÆkSòxãýcòxã½còxã}Còxã=còxãýÂߊÿóíÁ:f¶sîôz[ðÏ÷„}Súš_r,Ü>¹&¸µýÂô9ô…E§óï÷ŠýóMÅÛe;ΰ}üó­%béJg²íÛûg;Îä~aúò7?ßÚq†}R°z_9Mgz¬ÛF×l‹^íÍMì“©Ü2¯uÇÓ˜~<ÙWv ¿m#oówu¤¯9e[ß÷( !}ý)û•ÂoÝÈßüñõ¼,i-lã…{!$ãÚ¶ûBÒG¸°ÕÆÇ©èóxÄ×VR9ɵËÜœh)$WZ£ýV<ñ¾19"§§7•“)½©œLéÇï“éÇ]§Š¦÷?Ÿuüç{ÆWM2µÁ /I¶—èþyBOEöÏrâ3œ¢ÛH*–ŠÌ->sýŒ×ƒø\5™Šd}þŸ©ÇNîý?}ŸäžééH%^ÉÍëþjæ¼)å£G?ÞhEW“âk°ñ™C4_¢ë­Ñš_ëÌÝòzDà ¶ÉN\¦Q,~çH´³dñ>> )Ó˜•Šl™J¤0ž¢dÍ>ž¥—Í+¤ôg*mëdžDÏyŠnÃñó¯ä¼)7f|”M?¶Lý[¶#†?ælaE'šÑYû¶Æ-}üËÖ÷%ë]¼(ìË¢¡Î%¢é-œEdš¦2a‰G%:vÇS®GÇûhñRM–nr†MÂ+›Á+á±DÃVËÓûd‰D·ÛúÖÁhŸžSaOTåÝ`ÜÌM„ÞB’%­¥™fÂÉ¥è"[ÿ°õ½³½“~Æl—i¹¨GúzLöñ>þJúœ:>öÆçÖñ>>söδ–i^,þèxü¬å&¶ ÂãH–S˜Þè8›©$£eñ·àû×£e‘^ÂZ›Ú<÷®ædZ'ö)ñë÷ÙúÊðÿèqdš«gJ_nNô~¸ô™Sxw@òh»K®³‡[)ȶšÿŸä—é½Iüøâ½FÞ–üÏ\fñœ ò?l{Eçe4ÿ£w6UfÉšïŃ£^‰JƘ}ïàYp¿~ú 6<ÎÛ^ã½I˜Úx¿ïwÃð“¡åÅB‹Ž£Ñ»âÇ•¾ò—^KÂzí'ÿçáæÆÂÍüNPO“=@úÑ'Ë<ÙÆ2·ØÌ¥’|¥¨º 1•%®ÿä·LiÊÓÖþß¶Gül3ÚkEW_‚×ñ!Ó™j´WJž©„Òó>Y?’ŸáˆçG^NtE*Ú#„5*•“¡sïÇ6½•%Ï03Ïçã¥=N^aËTÖÉ;âû¤râ©ÛAÞ–>-ì_s‹Ü/?ö~ú>™Òž¥f±‚÷ã÷Ò„Û†÷Þ%g&ñ÷ãó’hMOžá}Pö2ëO8Fe»Û!¹Oáó¢îXÈ\~ÁúX2O3•]pA™Ç÷ÉGjs‰%gp¹‰÷Óï/ ò9¸3zu= #þIŠT"ì°Òeï!ÓûŸxkL墽H´½%Ûf4´ðhƒ=’õ¹è«Zñ;†ã!¤¯Áü›0S±0£-&•eËx®fÊð¬“-%Ù‚3Õ¼Ì}iærûïè–·¥ÏˆÇ R›ó?œ†9ŸÇeΟ`fŸ%· V>“÷_GÅÏ6’ñïféÂ#Ž×ä¶a}ˆâAË® …3ð­å@Þæm‚OšÇÛE¶>!ؾ ²ÝÖö úâÌóÍ Ü`‰n–IüÜ(S½ÏT‹Â³‡h_“laÏ“©Ž¤·‚Ì÷úek1Ùî}Ì<榿ŷ Ž&s]ûOîø÷[dÊåÜœ°.FK/\- Ï#“yÎj‚–äO2]aù…µ!½NGï”ëlòªPæýÿÕo¥ÿïHå·d‚z™\[Ï‹äB#aœaý_¼ŸøOöø7éÉ– É×’-?wËÏôëèkáx¾—3Ї–|œ å&žÇÏù¢yïùÂë·ñï!ƒïÚˆæf¦üoÇš9÷²åXæGúÜ<úÛÖÞK)SkŽ®Ò©Löóá9otË0G’£Oò÷ÿ<Þ`þ˜ìÇ GÀÿIÜٖq"9êDÇ´hkLÖþ0üè»E_E‡žÞ „u2½§Œ§(^cÃ|*jßhNåæ$ó.óëEõ"y[žÇÃIÞ{?_~‹ÞÕýÄ×äÓ[X*'Þš‚³ºhˉöy‘øÂwS9á\?ùéÂ0ÿ ó0ye šÎôÕ®T†Âú´‚h”¹/ÚF~ìÊY´%$c*ˆì= ZKú^‘tEÏ£­;½' Ïê¢%Ô…ÔæZŸùÌ=hÝÑž,ü-/'zÇVt«ÿ,¿ƒs×äú`¦Ü‹žç&W!ãa's/Èï̹—©„Âñ+S Åó;¼+½ÿîÄ W¢yävüêL´7Ë‹ì÷߷í?²³Ä¯s§ÒÞKïCrÓÒ•éjc¸G|„‰öÁ{ñ”}ü >úzxÑü‹Öµ¼¬i‹æK¸î\ ûм-ÇŒ4éåÄô¯ñ{E’é ãÍÝj´†ÄSŸ¥<‚õ¦ôVÔÑÌkóÙÚmpîº-+LÑ"ý÷ô¹Dr¤Ž÷[Ñc‰÷’ñYA<½©"â RqæZQôûѺ˜,·m{?•vññ,Lg¶zûßIg<© éHm%™aÈñ£‰¾’>¢„ãPò*wæš¹Ü3×ç0â#fæ+2É9e_ò>†ÿV|A¬Ñãˆÿ†?¾Uö,ªŒÒÛrú,3sEëTüL#^ÞÙË(Y+ÿ]žÅÏ+Â:Ý&½lâ{%›‰þ“:Ï÷àŒ"½Ý…-jkm):g‰–JPz™æ*A¨éc`²—ËÍ ¿=^¹[öоÝ?¹Z\ÓH_’çàÑñ,•ø=Zѵ¬h^ÇëïÖŽ6ø]òÿ`Ûô2ÍÛ"µ*˜¹†¥–é|?9J„Ïó²HÖ‹à“ó™þJt5ü>¹à3øy±í£ó‚â‘GüØ“gH%7?‚¿>“›ˆ5Ü¶ÔæGð7/Â{R²ÉMi‡%6[Z˜Šä8¤¡ðïAÖïüØ–a¸…9PlóçÞó¥ÖþàµÂÏæ&‹֔‚-⛣ë¿)Ó¿s5XÉÏPž…q•øçÛõŠoIs~¬†FÛkñ¾…/ø{Ñ;‰“­òï˜ ó#©#É^*R¦É¹Û¿)ÓÂ= C)±YxÕ,º_2Œ°'ýÛß!D¿M ˜·äoiyÉ¢}{ñêðß9^üÉk6ñÒJžËüBP¯ƒo:ÈÞŽ£­-HG´U„Ÿ‡ Ž"¾g¼ÖáGPsñ„9O}²Þ…¥®S”øGüjWnZŽÆGõh]ÈýçÓ©ÅŠ¬¹9ñQXOóÿÉŰ'g5A/™Søí€aÏ‹mî[쟭ó#m<Ó•’ÜœÂo,þÏ–AS±-Ã/õÂŽ·ñè `ø3YóÿNKÉœÂïæÚxòn• çÿS–Áß“Éß|üéwoß¼u‰HÏm¶ñ¼Íy¶ñôp Ë´ðX ¶Ô§xÛHÿ™>sÉû§f–Ú\3ÓÛx¸_2Œ°ôÿn¥r‚oqI¶ñÔ–‡¶ñRÿ¤!¨™ém9šÑþ%s^Õ—FÏ“鋞ÆÏýã«a¯VXo‚{íR›ó*óõ×T" Éã Ê7Þ…q¥¯”¤"Ûg—y‘÷£ß_Ôý¢Ò\ïŽ~Z/•¬ '÷®{'ks² Ò‘<ÉV›Ã¿?çËÜj£÷‰ÆïÍ\û³­'µ>ýÿÿ$¬ M^È–ûy[r>~m%Ó¬è7/£+«ÿùñg å?-—°HÖÃ`†='Ï’Âñ!ÞW÷|$Ï’íyëm&s| έ2­ g?¢Üœü-圓Ä×Z¢×”¶Ö×dîãöeÑÞ(ìõÂ>2Ø+\ËÏ>“M¦!y¯@4Öh- c¦1kzÿž;¥kZ².$·Io[ñùD¦ÖWÔÉ~(ýªÔÖúžLW²2åt0£MŸ©¥¶Äœ~^·þ;Çí'¶õXÃ\Ú–cÞѯEé=E´%f;ªøuŸmi7AmÍË ÖÀ¢í'öž$h_a¹üóñ-¿åXXÖÅ1÷†çÂÑR Ê6l_É|ÈÔÃDg*aÍ÷d¯´Áø=Ù¾¯3}›èÈ\Sï;‹EVd¢yžÅ©ŽžÓDË$ýL7héy‘¸ÒÛ~Øêãû§·óø 2}ü[uöóá 4ó3¦8O³Ÿ»Ç¿S4y¶Ä›þM¨™Ïͳj¶sùðƒ:oséçÙÉ”§ÒJ:ûxFó!xD¯ôåå³íh툟5gžÇãmrþœ GGŸàêNt.l!ém!<+Î6‡î)K<9÷ ò3zÆœÌÝäùZzl™ÎÓâÛDûö¢Ï¦²_†=U¦sºìç_AOž—¦×­¼-¡æE¶‹†óÿæ<zÿøŒ/¨ ÉyqôJØ[#@tT‹Ÿef«ÿá¹mк‚=‚•ÊÜͱ&Ë,~™9îø#¾VoMñö–~n3>ëNïk¢ç›Éó½ô³„ÜØ+á^ÑZ“Êúj¼$ÃÞÖ-2Ÿ!ý§ñe:ÃÉvF“~óoÉ;µ¢!Dg÷áL=úí{ÑY@^b›°£#jü*` ¾:•lñáŠGò¶‡ð,'•Ø&ƒ‚û±âwÅÏ]â÷lE· s'8»IÞ‡ŽIÉúù›Å…µ?<›ˆo^½ ûÍh}þ6r^N8úEÛO°M0*ågˆ),—ðn«øx·µò þ~yG¸ö6Ås‚OÁÇ· ëmñ-3½d¿Æl½º_óË'™“ŸÛZùÛrUá=4ñïáˆö³ñöY8×fRÁõÕü-}u²„ÂöQ<'zßTÖàŒ!¹J¶ý௹„#g~¤¤‚ÿÃÒ*,‹Â¹Sø7¢éŒî¦³0ï s1¸3*ž/áŒ/ÚOå‘—½*šÎä¬-¬½…¥½ *š/é£]ØsÏ)ã£wAEW€“³…Pá|"¸)üK>ÁÿéûEûâ¿÷ þnj¦O+iÈ6ÖÞwTø÷Só2¶Ädhé#váÝ_áß NÖÞp Öèèñ§r¿Sœ^;ò·Ï´"Z,'œefªíy‰<Œ§?¸.7§ðo!§÷ɸ“³„â Ñuªôú×Â;: "9Ùób¹í»ƒ»‡‚6é³BñÚ›©î k`¦ïÒ[Pæã(ê΂RˆçKt„ ßöÔá >>?ÇÑø7ʤÏp’åÞC“K_ØçkNyi±­½xNr 'ºúüµ¯ôYSÐ7lþ¿pTHÎb2Õ±`æ˜^¯Â|. -ÈÇx›Ú²Eø~4ü O†ŸŠ<^™®¥Ççéùl¤0Ì©â›ó2z-0Ú¿æs´¿Öþ Ÿ£såøÊH4ŸƒúŸœ-¦çsa½ö ×oâûE÷ö Vƒµ±ÌûÅã ææÅs‚Þ)<OŸýÅϫ»[ssREî öJ2:Jç'ö‹—e0‰þ½ÂLûÅë@˜ûaï›iV˜×£¥¤'û~ñÖYøNñ-{„u:ž¶pßp-9;‚–¿ï1FaŸ›KizÏ™©ÿ/¶eÄOŸŸämIoætW ò#õ-x%üö×Ùç]Ѻæw4†äÏèH²õp“e‘ynke®ë†eß+YÉ,Ì×¢Ë"ó>™ï.+jÄ‹¾ŸÚ’öh¯¼­»A^„ñgšéeê›Ã˜ã[„£B*CÌñ6žŒ9•!æxýL¶Ø·UØ#¤÷RÑ÷³Í¸s·„Ÿ¬¥ÙêxX‡·õþ¼ÿ­cÎÍxÔá6ù[þß¶4†ïg»"“9žô3šL)ÞúV…u%zÇzø^~¢.ÇçEµ¢èZC¼åã}xÞ†¿þo'™>מ­}GÛI¼ýFÓžœÏ¾ƒÅç-¹[Ò¿ŠWf4}Ñó¾ìeŽ¦é³“Ìµ$:ºEW,2µÁðNˆx¯-õÜØ–aIŽaÑyR¦»tŠþ™½mfº{ç? +œ['[p8 $ó*èSR9ÑÖ„°JÎü’›!:ºf«‹ÁÜ>¾6¦=ÓÞaÌù9Ñ­ÑUÁpÏhúòÒBÉÜŸdú,ù^®aÉ<ߨörÏ=¢çæÙÛHXÃõ¼lm$<ï,jÆl?/‡í[âTNt6ñ“í+ºO^NjKê‚8³µh¸ñsÙø1‡ÛD÷ŠöOñü‹_…‹®†FÓš\ ÎòóÒ^‰YØß'×q‚Z’¬/ñü GÆlµ'Kæ5ÃpÕ=y}/^/·^KÿýöANfžIõnÐÒ“e¶µ÷ŠŸƒ~+¬IÁ}5[팎BÁA4öð¾¤èXÜ—)›àÕTâÕྚxÁµŠðã°Ó™ËÁà˜óÓR™œ­‡G’lûñ«c¹›ï( ×% ã ¯¤áEW¢=dñÈÏäü/š†hýˆß]—^óâ-2ÈÛÜ-ëaë÷üá7ñåm‰?lwá{²e%ûÕ•Ìèv™g…é-øg½¶D$ý[-¢e’ißF¸VïáÂÔ†¹ŽôAþDg …ùo‡éç¬Å6oÖÜôñ&ùH~;T0W ⎮€ÆG´xžÇWðÂp¢3ïè#ÙîãkËñ¾'yþïÑ’ëÏñt¦Ÿ!f'~Kü 2êß|OUò¼/È­ü-ÏÒßý*…™æ:…{G{Õ Ç³ïWQß–ilfĹ[jG¸F¾–)„°' û‰Lù]³æuñú̘“u2¹oÐke?ߊ÷Yéu4Ü*ì©â¡g»ê}§Ÿ[ü'=Òÿd¿è¼(¬AaÚâ­2µ%¤Ìçy[Ž,ìåò2–G4E™ÏbþÓ|WŽ3µƒh­LÎñÃüÈ4Wò%Úg«Ñé­#oËþ™®ADÏ(ƒ; êj¼ÎÇ[ip[ô?lyalŶ|ó@¦»{JD®O¥×ஞpî¶êÜÍß­_Å K=ø>¥à^¸øÚE¼—öcñk2AMÉ\ Ê5̉ä¹~ð38Ò´Ûäñån>šLëPÁ]ŒÉ= ûŠâ‘^$\á‰~¢)Ú«~ßY±Íw*ÅÏýscÇý4Wü\4zfŒ4™?ù?G.Œ¿pÜ/ž¬.„¥’Úœc…iŽ®„[„i‹÷ïáHæ\˜¶ìŸà‹×±Âñ2œ ¤…cpî–Ô§ a 3½ u%^S‚ök‚÷¢+îé«)a«)ª^í4^f¹›ó¸ C¸_0z­!z~~ò-^jA½ ëyæz•l·ÑgÅbÏ·mU#YB…GÞ —©$£5±ð¾Áø:k²§ˆ¦4ùÙÉø¬}Ûû›ôo¨ò9\O¯ðEË=<Šô3îäJF8þÇ~Ÿ|˜šx¯•íJÉëWÛÒãní;-²Ÿ·Ç{œ°ýØû«Žêàû÷vß.oÙ%Y’,a“¼$H%•TòuÕA]-¶hi¥-Zl±E¥ Š-5Ä]”çî&k»U¬kKÛ´E]ôÛOIBHHBLˆ¢"ZÔG‚ŠJ¢ýæœ3ÿwî}÷íù)öݹsççÌ™sΜ9sf®þŸÃÛsQú,Ö®Ó¶;˜#®þ§¬ ž¤±Þ¶Tè9âíÖwéµÇÓŠso²bU¥ÍÞú?!_˜ÒV“¤›é#­9†èòĤ65»4iÀÝ3:…$½µ­•iñºMÎgʶ4Pé½’ÿîçÀÊh)Üñvë’åQåAì×M#:ü¦.£öðèô£d„Ž_½ü(VjÜjè¶«VŸ:©w’×Xݱ"Oåñ Ž/u¸Ëw·¡’}HïÿæêfmØö5‚Ùk>i鯓€©rY¦ Go}h¤‰cÒ­ižºòÕš»ywÓ–+eRj}ÁüK*Ûõ—T¶Mfß»zÉ·ò«ÞM£À¨Á…cߪAÇ´;}rË’0”†»¤ÒlܸZoóx†\ðÄ¡J‹­TBõõ¿Øðá†' ÊÑãæÚ8Í&Ñž‹î’hÛU‚2Wý¶´W+IÙÞ뺺Є|™Î„ kʸ<³eV¶4&…‡žÝj×ñhpfygö@öwqZ œÏc©'º)À7ê¶µàdÚªŽÍ41âŽsåµ9ÖüuãÖ¦d¥oØzŽKýOY÷͵VasQsnªß<™*tê¦92mpÊ6¨ÓK(K$(â%êùtÊq×ãkÚ~5&Œ9ÙfӨëÎWÐ×HUï‰mÔœ)‹ýç…¯?ôÄi¾JÚ&[DI52µ9sué®Ô¾•ÏüsA$àI›Äÿ’s$éÉëb¯³¯µÅ·~ãí«9ÕŽ$K@œ£Ï >:».B#‡hŸÎ%¡FCV–ë¤HñÖ„Ì~ÆZüF_UÐeÍ;ÚRmNHê/Õâ4­™ð™¬=ë«ýIe:KÓÀÓ$»)Õ]u¨ù¸n_%[£zgJr÷ì<Ç!ÐWCÅL_á[HoÓ:,fúÀY®oŒ).¼ÐJ‘臸Õ.'Ëït«’&ßV¶éšrÈ×j 4{ªí‰[mmJW’ÂJ§K_;•o¥WvÍ¢^7œY¥lV骟"‘.UÕ‰þ•¤i\ŠšÔ%=uy!¨4ô”UKIœ$ié’’&\"Ú¸>njkI9mÚrõ—K>¤YI’80H|SYb¹%¸)­â²Ê%©Ürj$4Y™³Òb2†±Tn¸Ì“àªÌõÙ¤ˆ/e¥¢#1&™,I]Ч’ç‚ÒFw*Þ49Ó¤s+Ói<}|®L×i¼çFųñVê¹޲½×{Ã^ŸNzc¶;û»Ñüsͯ“Â&Æ’CqЉSÐ U¯^r¼.·uÎý”C–•÷ØEÍ‘óÏ,3+ºð ëS&šù”uÉÄž8ã8ðLOq.a¨õ üæùÙiªQ³² ™úYÌ­[µBÜ“¦ïjt•÷”‰ÂŽ»tß(]Ǿ(ݶ ‹Òõ5TU’:Ô—c´ÞW9¾4¨æ¦º­Œ ßv3þH–eÒG„0 ¿85SÕ½£véÄ9ÕÓzåsØ/§ñ—n½=O'Þ z°ÙþX[¤jãšE«ëçæø'q@|£Pñ—»½ñò„”ñò’°íæWWÛÝ<ëj»8ŸRÕ_\fž$bÞ%L9·K ïZs¶d[¥â–«¸Ì´-WªFG¾L¯| “fkîyDhõ—-C ÷¶­VÉáøúÏù[ÇœMKz»§MŒÇ- •í¼ g.ûšàO×Hà{ŠÛÜïß&9•Çs  [oÑ)G¥ÖGo!õs²lY®ÿ©eÜ~§™¸¤ãØL«ë"¶” œë};ð‹Ùµê× ‹xã{êœS‡3áPs`5SÊF‘:dzm&ÕÙ˜2FAjØ Æ2õÓz_)gÀWut»¡Ê“–3òÔ©¸ºN¨ÏäÝ¡¶:¡[?“×eôvúšjº=Ãn§8710ÚY C¶Å϶⧷Sÿv„ÞÎJý©:.ú]È®mte½” µÿÙ³!}Ž Ï׈ìÑ^”aþ¹¤_\r÷»« Wœ+‰bu­_µlaÌ"•’RÄ{§:í Þ¯.ÞÑ¡Ðÿ•Z” —ÄLO+ð¦¤ÕõaG ºž#do%x}/È ¯)%³Á ^% Óúò4ÏžæÙñàÙ,|X WÇÕð÷KŸgã\é{:7Ú9EK”X§Wl%Šª¾$—ÿ†®ñ¹¼7Ì|ú[Ý–›­,×zžK׌K‰xŸ˜ëˆî2ÒSk±û[àU·ëÖË\¬¤#íø•I¸×ùÂþº‰ûmc•_?-\Ç¡š›èñú KWÞ]fùv¿Ø\B©ÆvÕ0-•IÉïÒRºé.é9t„’Óè-b0¥½3á›w¾QŸ©)¹¤‡ì<¦„ÓmuóMZ*“_ÃŒïÒR¦ÿ œÿD?è+”^_¡‰¯[êvÞœö/nS¥{öOùŽÙþº]Û—1 “êO@!¸#-§ïÌ©ê6¨\̳Yµ£FKeú¾™´ ±¦MËUšx%Š”ñ2íÝëæ˜hC¨—ÊR]eêåÚÖÆx«•¦fÖl¶þÌoÍ»(Aô» ½í&=è»ÒsZ‹ÜÔ¥—«·=^¦^®Ë‹Õ¤X¥«¶Ût›ãc†}7µ[7‡Õ8î¶'`|lŠ×§×ïw=æ×)]}šKøsiC: ¸ÿ\Z–’?5Î?»]&æ•ï¦ùg·Ëî¯$ iúejíAJ——‡£.ÿŒxYîrEÙ‘ñëšêÔo® 襘)ízíü¾Ä`5Û«×"°¤ÏdUkͱք^¥6¡²k²iÕ¬)>ç2¹)íÉÕö y. 4Jûž”V­«»VÀÅ%ÂÍñ[õ¨¾ú«ãM=¹NòP³Ó›€¾°­Ÿ¿fR>¦ë\#ê4%‘;µê5šƒ( ä¤Ìv­ × Ì e¿˜kz¾¤![~ª™NdµÄ>oHÀF)#ÏÖ4Tin_ñ½߀2޻ è[qÊCWñí;¥÷oÈáÑg-æõn_ñ­ÎÀèi[R¨‘0Ý¿CH‚²“Ú.F¼Êþb¤µ‰µ»G6W«í/‹»F5s±vVÉ¿#þ¥ó¤ÚÝ£–mM²¥_`¤tbÚ|N9¦P£§9‚š£€)ó}-g²wFhôGœ„ˆËdEûª]º|ÐÛô®rZ㦬O÷èÐeTºÝ5}¼P2=ÙŸ£òûôò+ÿSº7ñ5Ó/PÉ7]z*G}wÏgÔ&x¾'¼lÕžu~§jc:uMÀrC®QœÏTYâ[UZ¯ùx–h½&á„ï­Í{ºlþ²JÂå¯D{³Eö. 5nèûtBNƒÅ~ Ý¡scȵøH¶Õ,EŒå‘¶³(ÙH`ÏîÝ’"þªƒââ³0Q"`µ±10Û+i²NÔ/FÝ *^»šùÛk\zÝfYäƒêi½ýâ°§«šü zsVp¸E^{¬öTذšPZ|n¦Ö9PǬ˜ÓåbXÉ*7ÕwQ¢X¶Þ„[—ÄLj£XYÖ-iÉQkѕڅ‘øÊ…9˲9WÙû}£µIeç4¹í–§:Nâ§­ÅG…“¤Ðâ©Ó$¢ùOщî%¤óœ¾¾¨æÊ3Èîi7á¤S…”*W·àç48ôÕ+]ŸÖuEqî‰ µîçá²uùÒv§ûç˜øS_©ñ ¼ØiMšSšýzº¯Q/q®9à‰$©é+S9'åù³ä¤ö˜_Ùpû~ºò -W?#LõˆHr@¥±ËÊYi„ÌŒ4f]Ö¿:ô´.ÄiV·\Ù9l*RR5J¸g“±B+Õ¿?eÞ³à?ô’üy\Ò„f.?7„.ÿ×9#d_wùíÄSG^3µ(ÇLó’<‰‚„²]­T½ª·2§Ù½L Úsã$ 8Þ«õ·ô…ž[Ý•Œdi¢G+Í:“z^P»¾îbŽLê}ÜE½×Ó&ÛÌ’h*^N²î`®(ÆËQþ îÑ(yT}äÉâ3<“kõ?W½Vª‚4^Srl2VEéI¹âTncB‹÷ÒHR»¥«èew}æ8ÂI9]%¸b}#d÷+wRÈõ.]ص۲ é׬¾¤eÎA!ÞôÎVºi>µ¸Š$lWQ¯Þe3¿o•3âU¿ˆªÿî¦)•âr“ÚâË™„ÞGT‡>7¢xú6W-·èëZ»‹®è[]dã÷µÚLªâš[6"£–x+ÄXE–m³íIø%L©¯0©þ³^Õîˆ÷ªÊ¡æõqM6äPDT·iû±aß­«õ”LÍç’ò¨»NU.;()޽dÅß§ Ž\å‹ïÉÜ#ð˜ç9Í”nI&¼ò…þ {61üëý*øÄݯbU—¾!§p¨—Ç{LÊþuåL–KæL¯Ò˜«V DnÓOT_¹vKf{M@×ÝM«­[‹Õs›+úl!Ë”6K²ßgÓª)1iär÷މaeKtªÄHxÊ&¥ŸMã¦A«Yæ&b’žÒÖÆ“SV3§0è–P]¤ó}¥÷"—Jâ«¡bÒæâJ[™£Ř5ïšõ'—", ʤvÆ¿Nf9ÈšÖEÃæ,%päP’…äB¤åÐg‡º4Ð5@³\{ÎêÎëš éôÇ›Þþd,¤Ûp²•Ç£I æˆïêãHj€Jè_º ‰#†Ð‚!rÀ¬¥Š/Pê0D O®o¹ÆÓ‹Q]O›„ãH³^ÇmàñÖ(Ï«¼£~»ÿ„Ö,¬²ºœZm$ßéœæ;ÚP™RÌѤEa35í2~¬4Û“/ðÔš…‚êbã°Æ¥’ºpKµ«5‚zU+â­K†6ýò:pó«j§¢v_B·˜=—ÓlSIVa™_¦v¯ÿ =ÍŽÕû[Õ¯l?‘Y`@=¡ì`î:#O|AG?o-™*I•ãJ)äŒþ=[wÍêL€ÐxrÁ¨ä¿‚ÓR}ýÛü±Ÿ‹JÕ¿œoÀëÖ¿êë†Ùô·Jo™Ò ¢L-ó=ûkÌÉ-Kþ§S·È8! íQÍ^ÍKÖZLI¡JLÅ\-Ðu}$¸"ÒR )@\¬s½ K ÁY¿é-0õdÜÇë2gô¾.³Ó_$KzM’µ×†GY_’ÓÛ­Ì:Š×©ãÜ%»]´¢ËÓléíYµ+nEHJ?8HãA…u!Õ4f 9m–<Êèú° ]"¹5rñ'VOãm·ñ¯f1qì¸`=¥i&cMÌÛÒp«N p\bž­S¾ý^̳@MXÍ’:ðÔX9µ’íÙð—DK"À›ˆQë@vy.ýÆì¥ä¾¯œÂ”K®#,ý»´$Y*þEÍ:gë°ÆõFûô£$ŽÖÏNJ¦z£ÕJ£Žó]2Dº¼M†Èÿ“¸…ÊÉJ×B¿ «ÈcjDÙSgã³ÀS¡K ¿•*ûÛÈ©ÅeázÓ’êâµ8ÆÓ»é»ºØ8Æapç|9¶ÅžIºg‘&Ï)¹‘¦EÇõ ¤ñÐÞêò=Pš±]GºÜSREéið&iJ®³¥ÕëÏ–¶ºr³¥Îæ []»’©(ð”MN§#} T}¯ÏÝÔ¢Û+’)OéNú¢¼÷„D§'“Æ5êž8I…š" ¢P–¦ÆK—)ÊÒ) ®Eª¢|¡êÃ0eÄ®dypÛ¬lÛCZ›”å¡R›ÏÖ\meUn“a³´ÉEÉ:ÝÕ{·.wÕi(.Z¾n1==“ÊH:ûÊ,KŸÑè¿imWÔ”Ô!ïGÓ/Z¼7óÅûMo¹«¿D_¥Í%tX-eI¯êÊV¾néù²¤×áJ‡ß¥}«KIHñ¤plÚBM9dû¬Çé:°êô«¨ÓÅÙ•<7M-Ú5¢˜ž…ÇSºõΑ§3}ö·ë# öÈ`Ûm¼˜Zze)£´-³¯+^çw·ŽcòVÒÌÀÔðté¦ÏþL:v×iå©w ;·KǨ\ŸØ^[ê¸ÞŠŒ­ëo}ÇÛj`¬Ô£¦o¡èÍñ°lè%ºSøŽZÍ»1¥hņ'ˆ¥í«EZŠø»xn\«gWKíš:ªžÓ®3)VÙOù¶ò /ùŸðM0ÏBÒ¡5õ%±OáÀÔ–Ý:C\ KlÎø3%‹{ö¤ÎS%ôÄNB‚óŒ”ÿ¸ZMÍ£§hþ øt Å;pjR-ÿKÓÍmÈ æ<Ëúø®Ò&Ñì'|‹¾€–æ9|Ê–D}$¼9éL ÀS¾P&Þrxr xÔ{™>rØEux6‰ ]zÇû(@ØÄZÐ;õ‘Ï÷ÅûF^ê£PzG¦oˆ :ÀpÖ?ʾ¥Ã§ž:ŽÕ?9«-nk:¼§óq¦ZÏŸUêÈà(©Žc1⽤p¯ëŽz®÷Ó­áÐꥸIÇIÀ¡"ïØ:ì1}µZñR<õ.ùgÔ{¤%‰»Ðq’ôLwæ=q‘â4üz®Z¤p‚ZäÒå‚_ÏU/±_ËŸÌõ›2ìç±g"žK§þøÈTÇS ü|ùZl5x½Qïù’Ã=…z‚Úê½Hãz“ž‚X.¡õg‘Ð[× DU‚ÿuìºs_å°ëå]ißÕÓÐ3ÉåߤӓàZ“ž¨ˆ©>›žlO’z){ê<:/Àæ ÀÁAuÒ«¾átCÏUÏåW„ôdÞ«ç;÷ŒÏ”™¦¾ ¿ë*•=xÜš¤/KÖk×g<¦lvÕ®[m\µ àÖñ„¼kwºíM_a°go麷’@YÒëåfIoÛÃ*•­Ïx³Àn¯U‚%+^ªI›öOùÆ™³RSó4q F‘ì§H×6Ó´T±û[XãôS¨ èœÁýB;o…‡¨[;LÒ¥„¯hvMTøkêkÿÊ[FO›“éB#•‰7·g.Ê*«È—´FŽaq‰—Ö:5¨±Wç´Êt ÎÆInƒÛVåWûB>â¹qà‚_?Ý'>ïq×iîë±-ÒîÇí2z_ǽܢXBŸ ¢©3Ö8µI½Ø¸ädù64ni«·bj¸Æáµ™SoÁXµC—ò5ò\÷¸¼UÜN¸ejWý É\ëÅWm]ô/$­†¡^­s\NZOæ¹nö_ yCç(¿–ÛÂ#íä_Áµqnð×z¾Ñ¢$n%ê³³Ðhž¾^ZEËj4í7; P½¢¤ÊåĹ3äm­Óò¤•çÓǬ’%¢O“uÖ8MP_Öe$S…›s«d3¹jtüæc|Ïœí Í(’ϦvEš³9có"Ïöƒ bi|I±ºeƒÆ*S×T3ÝPƒ…ú¬†ó Ð\°F©´‹8,J_0¿Ø¨c îRôQ#ªªòˆùó²EúX·„Ø¥èÞ>‚ Ô(æË{z)¦ƒ>nVöap—¢¢Õ•¢¼èr]ØÖá&樦g qÝ»N²zú~EW+9ݪ«¨5‹u×ô׳gU&ͦa$>ˆQYœJê* éÔãvÝcž^¿áÔlÛU«©±ºJ5mcIã»òô¢¿ÌU{­4sË” F•bd%¾N_§¯Ó×éëôuúz)^Ic8è®ëï\güïxmÎø÷{ð>è­ˆÅÿÄ;약§bñ=þ ~¯c ¬Ú°.̇õá„°!,„C~Í´šÖG½5¨ù #þÓ5Ý5=5½57ÔÜh¼Í×Ö×ÖÕN¨-Ôšé¬ýVíCµ»j¶â¿œÿjþ+ùÁüÍy3þ‹uÿR÷Ïuëþµîßênªû÷ºÿ¨ûÏ:,¿PWˆCãyW^Y˜SxUìÝÛ ¿[Xàȱ³ð@áAG|MCmC¾¡®¡¾aBƒ¿¶áú†O4t6Øéox¢aÃXü/~Õp¬ážix¶áxÃsòýô‰3&ΜxÙÄY/Ÿ¨§¿eâæ‰_›øõ‰ÿwâ_Û˜o¬o¬kœÐXhÔã?ܸ²ñ#«?Ú¸ºñcÓ¸¦ñoÿ®ñã M››âíº¦éM×6ÍozSÓ›·÷4íhº·éþ¦û¬<í“®™ôÆI×Nš?ÉŒÿÏIÿ5iÓ¤/OúÒ¤¯LœôÕI·LºSøu9? ýÀo¬©¯ÍÕLÎ…~X˜0!ª s‘ì©&ˆj¢0ȹ0<¯áŒ†B®®¦.—Ë×Fa”¯=£¡±®)ß8¡¦>ò!C¾¶0¡¶¶®¦©6 à=D¹( kXyaÐ8±&W¨¯««¯«ÏMž8qB¡nBíM&ÖMÈ×76ÔÕF¾ÔÖjCvÕ@¶0(Ô1¬a/XT¡P71 'L`ÏQÔÈž4…ú|Mòuµù(7¡¡>_ŸË±òóuùÜĺ{]—/ú¾Ç'A´ßÌG/0­çØ{;¿o¥·Þ'ƒa­>zVðð÷Ö³§•åSYñgˆQ¾¯çöáÙÌ>âÇxÎP”g¤·Ë·žMô¤âßíüv9úÃÀ§o/+þ«ÀWJ{*Ñ‹‰ª+?Ÿ1|Äðeן‘ž øRú;Öù1’QjãÙs|W‡ßJø“ð§ñ_ |1ú¯Dï#•OZùÆ3+ß|¶ÞKú|èÏŠ^ijùÞ3ëöÍöû¾Ù~Dšù^À¯É×TøŸ´úëÙU^<‰õëÏ~¼þa½>Nñú0]…þsô§Y_`>SxØê¯á„þ¶Ûëj ü¬þHÃaã’ +^‘ð@¤ B§µß'(==Г]<‹Þ8¿Tà/Œò}#½ ~9ÞP~ùl´ÿú³(_ý€R+ŸãS”ç{ ¿®üf{üåeä7-¿ñlÈ­¼þQúÑŸ½dã÷4x*µ¿Zøª…'K~ý}Vþן!¤Ë—|¨ô¾Úú]ù‡‡=C>гL§=Y^Ï"²‚<Ê"ÿìôºü«,ïð!]Ÿª¤Vš¼Èõ«‘ÈKU^Š|ÖÊ7ž ù¢µ?“¾U¹¿âýcêÃæ~1Ì乎ßa/0žY„©ZÏ,V`Ë|†úRÛ£Ÿôù‰ç™í ¬g†mó½õ ùöÖs}X‡>FèÉ‹õuý×·ÌçaÑ?ò9U{"FþúÓÚc÷oœ~cóuƒžÔ|—×_AxøÑϠϤÁkÃò×–WUõo~0ÛãÅ䥟D¯YÛç²·håeéjð«/Ñ>ÅËOÕרüjø+ÖŸ¾Õ¾°ºöÅä•ïÅäËhà{|U§W’/¦ü`é y3"ùP…=_»ù%;~ x+å·ížmÏpñ¯o”á«ôXU¤ôw•>ÙžA^hõ }À¶od›Äë«hÉ@¯&>Æß>ãj¯þÞÄ?Á“ܦ~ñ|Lߨ@/Öóp§' ?Îþ«¦ýií1åvWj{ªíïaß!OSú_À#àð¨g·> Úõ%÷oey0lÙãüá¸}΀wسúÇÔ‡ëÊKç7Ë^Xµ=ó¹:|U†¯’ýf´ð›ðÚúذ­¯Xö›“Öüç¤m_ñãéú†ÍñœÍ‡Œg{ü;yÒÒ7ž?ièÏ[Ï¿šþð-ú²éYÏ歹߿9ù¼…?óùWÏýÚÏŸ=i>ÿÏs'´ñÛó1ýò­_Ùø1ËÏH)ú­'èQ=Ùëóéöñ üg·ß߈àµëú¸eg•¯”?Sùêå‹CžhõU×_ö|.Œªi¬?íþ)ýeîÏܸögÕòÈ!¨Kô"}=¡Cù®ôYõAWýþ°§×—×ëO¯/N¾k=AÍ}=Ï©ýá(ò»ÊþXEy£Í?:}¯úôÕÉêû§x*ñ‡>^Ûωú¹=Ey//1¿'äŠ9_MM_ÅüÏ«è8ÊñÝè?|ªNþWMÏéë±ñ¬‚ý1.¿ÌõªØzg…õQ¯¾ªœ_ÙýçÊo—Ÿ]8Ê¿;è+ƒ?¢‘zLõÇ,ò¤}(^*è/U·oÄô€¹«ëOƒ^(¿ŸYá‰ñ_˜ª_"?iú>ð¼ðö]IÒôôº|ö-{¢ ¯ Ÿ-}´×NzrÁ«?:|Yõ·jõM½ý²<ý9ãx;Rý²:ý_Wi?ªÀoã*¿ø{ý9ƒ?˜â-¿6>9Ç Þjä¥Ùþ¸üŒõŸý<êùg|=ÐÀGl¼¶ñc¶Ï¶? [ýo½÷¬÷'OZö°“–=lØ‚ßz†üz{ ¿ñü¼é?qòyÓ_ ó«þÃg£}éö¶aK|Þ3ío.ûZrzxÿ¼ÿó&¼žõ\Á^ÿªãÏÑT¿ñž WÒéë–¯UãwϰŸ&Ê‹Œô‡×¦— ý;lÓËó–¼?iÉ{»ÿlz²ù%þ*òГ!ïOÆŸñç…_/Lµ×[þ3iözY¬=ßÒéé]óÕ´ö¸Ú·÷Xí¯0_µç»¾í¿bµOÏïjÏpªþíyÏ>÷¼é/uÒ|~î9ÏX_Åô<:¼¢Î¯iô/-úµçwU¶Ç„Ÿ…Æé:&¾Ùà„öÙ<Õ÷×°‘'0Ÿ«Ÿ*Ô/ËÓëóÒêókLx‚Ð|®±Ò‡fy¹šôò‡­òŸ·Êÿ]¾ÞDxª£'Ïêv$ÒSµý]i<¯ÔÕçÏ"/2ÕŸ&?žç²½‚<‰¼©ÄŸ1ø+Ègû²ðc">Òç»Q>4μÊG¡}VUòêOy‘Y~kåÇø3•ÞÓñU-|ž=_¬€1_´òbý‘¾ß= »~È?ùä{ióêôÞÂÑùŒ¡<âi^øñ]ÂG˜Ïc  ¾*å_:=dÿ/E|j9’å%_A¾[åE~PMú°bz £ó? >ëýË^ƒl~‰ò±Ó7³ÉG­üìðT1^èÏ£ÐoÓåÏøëÇÕÁi^øñ%³¼àïmyY]{Íõ«½6½Úí­VÞghï)•ÿ²|­ý¹:zÔòg‡?U>T‹_G{^~ãiy¬—Œ¦¿ªÓl|y~lÿȾ*â'îï˜,ÿÇ¿=6ü6|Nú ,ø]ðêéGÁ?ÕŽ¯Îö$ÒWü‰ô–a¾Za¿eñÓà…ReøìùmÆý møôýÎ~•ç;Úû›±Aöõñ^ü¸à³Û¯—溺wˆò¬ÆWߟ£í?>¥AÏ ó}Ûÿ(¾¿=vW,½^ÿhý‰*Ñ› 6=ùèMfrœ—W©ý•ö÷Ã{½þØ~ÿª÷ó;æ3zû,ÿNÏÅ"“ ×jè7¿TÊÿ‚òS%~qìW©ŒòUžJíO—1ø[ÿ®(O«‘²|yæ·xÎÜž1åGQ~Àïb?³x®v|pÀgðc.—³¾ƒQa| ‡)ýó’f«ŸlxßáoŸÂ¯Îñ‹ê¡{Èñ¯Ÿ‡¢ñOµígô­”ï5z`ôk䯭­ÍXž›¾lúaå™þy¡ P‡?Mžˆü¾(¾¼±7iüiË×þh5‰Ï•à«(o*Ñ»s|þéçÉÂUI?«Dÿ.z¯f?B¬,ùiËW¯bÅü5«Õ—Såã°c}¨ÚþÑû#È™üÔÅùóå6þ ¨½$ý6…Ÿl}׫ ÿ‚þj<Ûú­­ÿZúîó¢<ž¦¢?}•úMožÿ,ç3˜ò;¦ð_? >G;~ÞKÇ·µßbXœ?ÂË–øVøÖèáÅ2ÿHÒÄ{SÞ&ËcWÿë¶¼©¿ ^£xyiðZðòÈÖ'lxcò&ŽÏ¨Òx…± ú› O%üý¦¢¾cÂ#ñ=Vúcè€Ïj¿%ß«×E¡Ò>RÍ~@?]ËÅû;‹þ–¨ßüÍ4ýÔ"ð™ðsü‚xi"Œ ‚0¤gøœdŰ_ïP»|þƒk/µ°„¿ZPaÙpðȈàåÔÖ@Oa:öÇþûø†b!%‹Ëó«V»"¼°bhÖ-Ó¡w¼fõ†¢‚G„„ˆP>Š—ì'Q †9|á#®àMmi.C"”WÈ!˜ÅCmÈ;BåC¦\ ä!°ø _µ6e¡*¶Ä¯«C„²ýzvÁÝý ìÊåXšˆÚ‚/#ö¶šR_-eIØ3FCl]55,ìÛ:ѯ‚@mP˜¿Ä|F|Cö-|+ð}‹×!PCJÝ>‘]55µµZ"Ð!µªÁ )]-õ¦/“°W¼b tX‹ãQ5õµ챑]ù<ƒT#,¿0¡0!Ç‘Àž '24ÖŠ§ÀWˆ¨Ëçë( Z±òDïPBìNW‡ŸŸ˜ŸXƒô"(¢¦žèÀ«‘´âçês5!QX®žrûPT€-¢tkCžU*K/Lœgà :" ¾i§©©‰‰&Ò¤¦&FÌìÆ~ÏÀ‹½b àN/ÿ³(ö{æ™gFþ™MÁþ³§&¿¹ùŒ3ÎÌåš †3&A^FCÍÍgžIœsÆ$!ŸÙãä&F°¼lVÐYx±R¸gŸ}ÖY“¡<>kÄ2n›2åŒ3&×Ô4 cŠ"=HÍ`sκ‚Šb€ü\¼X#¨¿Î8 þA“áÕYg±è&ЇJYäyç{î9ùü™’,ü)gŸqÖäh+äi>‹5¼mÆ‚sØ;--PjiPZà™¡ŠÁ2u*16´´eÒ$|1uj ÃÒ³Î`ÏùIzÆÇˆóÏ/êêš°È3Ψ‘x8ÿü–ÝB=t~á Ïâ‡2øÓ¦Mœx&²á4vüiÏD–jaÌÁ €¿~kkccCÙœ¾Ï/Lª¯Cx-Ÿm€’š›'žYCDØÚ:-ÏSûçO8¡¶S°$¬+ôIXtkcóĆ3‰’'Qƒq¦¾_ùº¢Êôþ9U–u•åÛ I¥ô¶BW)½½àX)½ã㬩écŸ–M¿®˜Weú×T™þµU¦ŸSeúß®.½F•é'UNc¤Ÿ\eú³«KÅÜ*Ó_U]z¿¥ÊôçU™ÞýëäôW™~zu鯸¦Êôo¬2ýªLßV]zF•é/«2ýåU¦Eué¯h¯2ýµU¦Ÿ_]z?:§*ðÃsªâ?8§*ð›Î©Š¢ý†sªâ˜+~ûêª(úŠ×\]E_ñÚ««ê±+æ\ÝVMzÒ9Uq€Æ9Uq€?ùœª8À?ûœª8àŠ¹WWÅW\uuUëŠyWWÅ~ü­ôôM Õ¥ŸtFUÓ¯ùíª4ÿìÉUiXW¼vnUå_qÕ¼êà‰Î­R>œW¥üi©NžDÓ«’~CKuò§éâêàfTÇgœ[¿_1ç ÕÉ·ymÕñ×kÞØVUúßn«J~ú“έR^W•üñÏ>¯:ù^^¥|k«Nþ_ÕV•¼ºâµmÕÉÏ9íUŽG×T-?Ï97;ƒüºäÒêà™9«:xfÿVuðLl<§%;L€ŸsÎÍàçœó²Ãôß0±1³Õ£`ҙ͙gå~„“§œ•yÖ ø9÷¼‹3a€Ÿ—µd¦ÀϹ-¯È,C?_rivx˜|8÷’K«€' fÌœ•yÌðϘœ7sVvùÃäCËìßÊ, ¿.Ÿý[™Ç A? C³à äatfs2±e權xôsN˹çeëŠW¾*+èT~]®ºôì'Òj«K_o¯P¦_¬½WÿÎëª(¿.wÎS«H?¡æœ‹Î¯"}¡öœâ´*Ò×çϹ°5{zÖÞ¹¿]… ”¥íkª°©1ü4L®Â†ÈðÓpv6J†Ÿ¦³«)¿>ß4¹ŠòY{ÛßX…ÄÒ_û†*4h†Ÿ‹/¯B£gø¹øUhÄ ?Ó_QMùõùé—WQ>Ñc™ŒX"úaé3b‰è‡±XF,ý0ˈ%¢Æb±DôÃX,#–®¸ò•s^õê,)yúW¾êÿ´½¾ŠôXþÕÿçwÚ^—)¥ÍÜ«~ûµ™¸žÒ¿¡ýš7^›µ=°&¼ášLó ¢–þó3Íctø©Õé°Áxš«©Í×ÕO°·ŠULcðÔó§µ^páEÅ,éaÜžtƙ͓Ï:{J–ô0¾Ï¸læ¬Ë볫-_‡M/Ü_¢(ʇ!8jÔ °ÇšššÄÔû§/ß'×—±.ÓëO_ÿ®@z­‰ßô”/ÔHç¼ôÐØÕåg(1{Ê‘À ýT•m$utç¿´)~_È~?}¾ÆûJ$ð&LëÛ)‡üÿb»”d 2…_î80Žƒ¼×/ŽJEwÆ ã Á=pñº§¯ÿ]W–>w¥©–^dR]&jù-YÌÇRBÇSŸxÖ”ÈLš¸³ŒÌëol/[§ÌF=Õ•_%MñÿØZ•Ž‹•¯(¦_6ÌD¸z¾n7ÁèMIN_/­+0¯<æô5¾—Žü¤‡ Š5¶fH‚àôuj.:å/¨·O_tYBÊ÷}éê#ñ4§¯ÿÝWì{í¥„¯º ±,ų¡h$;-|i]ºôÑ«ÚÇÀÅcàâ1¨îñ¥vY¬"%§m‚mzp¼/ ùÆï‹ý’d“-dèk®”mZ(±n‡§•+.kSüxGgU$­4¡9·VO#™ss²ä¡TcH¦t)™ý4ÜÁi¦/ŠÔ/iÊáOfÎtÅ¿Ôë}q\šQ[ƒ¤X9Èhv[%ù¤¢&ŠîØX ÕÀ*ønHá;r<.2ܰžj*âÌRF ‰Ê(!bÄŒì È(ÅF È\‰,DŽÜ¢üñ<ƒ1žŽéåIqÀ[o?K!e†ýüò†§RºXÞˆ(rplÚ» EKý0Çÿä¿ þ'Óó_ýßh/%džJcå‰o›ý,x‘cÏc OÅú*À;æøIMë¤RŸ(Ñ‘=í]†¢_,T*Ð.qo…šªi¬U÷‹¬޵;(†ßjÙ*”- 6;Õ‹,ÙåDF¿UjT¶$‚ðEÃAVÈ=&Ù±z8§,ñÙ•ÇŠNy!iJûILR¡P=‘‹s¬øj8ArŽƒSe|åB`2§eIíGÉ…BB3NÕ)kt‡“ÀÓ»”ßɉqNŠ?v6¶ s¥bMJlhIñ¿Aܪ¯Æj IdˆeK4óQL¿ôÎÖ_v`Œ¦ˆl³ŠR$ÃùJ*ó' ±§J5’?õ‘0°ž| ½±§Ì5¤¤³Ê¡ Ø€m‹Æ„øôÒóizh¿°âFÜ™š^!¯¤oß kã™~‰Ô•=}µ rðñB©g‚®­P2œv)ÙrŒ²e’·áã_ efISU¥ ‰Ýi“êk¯K–\ÍÈ\\v%ËG"Õ)}˜Ì Ù¬‡tꮆ΅($—„0“ª ŒPTjXñSI8©4!ï壑Ñh,JÆåITWCQ& •Ä幩ŠŸñº$…i ë銲T¤î’È"}Õ³BûîÈñ(ó”!ä”Utó/Iæ’òúåWŠF™±'4|ûiäù´€õ$ÆGz‚/ GOãC˜¼9–/­”Q!Ig‹1(E¥! $}ʰ ÿ¥ï%‡Ü#Ì|2_L8«2eq6…C=ÈÕÀ 5Ö ŠÜ¾¯«+A&Ђ¾œMVÙ6Q9qÆxä ÑWÙÒR³Ã/TùÉ×øâÍÎPM=I‰5œøŠZz@’®À,ˆÀ@ÈWñ@•—쳑e“6‚F±2 ð=8úNm‹SÓÈŸŠI´é°ÏM2âÆ=H"å§{§'´âÆä¤ŒS/û’Ó©aÆŠ $=ó‰€#f¬Ê1à#”#FoERŒŠòcä10:bƬœ1hר)À7àû_W^`öJüÙàÇóèór„üø³J£×!ŸaΆZ¹­ƒ{ÍG‘J4šò«Â­äü‘f“ÀYA_ÍePzŠz0©8fÚŠÙ´‘ÌŽô2ê“RTwšˆX¡ÏxB Cî®0Ÿ^LíKƒs¤mÏ ÆX¨ËBI{0-™@—@°¨ úH¬ÆÈ€JK,Õ\’æÇ8›‚°rÖ44˜AÕ>+Èñ #˜!†ô Lè[A_• $K“«HÇA“w9¾+ õ»jL¥t¾ñg—›õRAQ£Ò “!Ñrc, õV•"‰_ )Ù­‡Fs)ñ2*Á+*t\Ú’5D»ŒÇÑä}qb·D|A•ÇXZX–GС‚J›Õ*5E*P£.@i`öƒ¯:×7F’ç…oi.W“—#š¯ÿSCõ‰C1^„öÀ¡bØPÓï )`—œOå¢$’4&ð̲$tŠÄ”ÕѸ”(©ŒN Hy¦n°´û–³vúï¨ÌF& 4Óo™ÓÈ+S8#À®Hgölx×éÿãéÓK85åëxÉH1vLìQÈZÑ‘Öcÿq¦…3XÕ\•ó*`cˉÂ@½Ì"²À<Æit¾3Ãa¨Ž+Ë’&€Çq '·#õU š*Ŧo|hEþJ×¢‚JdŒï[Ñ3ä‡r N¨ÙÕèCîÞpF:m ã,t1q£¾ÐÐí¾U‹B™Y6c4‘Õ^]Éb8äF‘Dî*‹èÀš‰¿‘\†üÓÿQzþªŠV¾Ü.!b‚Œá—úEÒ@êZ8©íÕ¦ßðØáAŠGg Ð|Ìóõ€`ˆtë/*10JÐøñ§1.SëqÇxZØg%eIä”rTIJ-‰?ŽgÉò:¥#Ǽ–,Ìkí´0g …=‘F/Ç(?H»_ãJŠá1Â[™!<2è°#Çæ˜”#¥¶›rtTG¸ øôïGm¼ „àõ*{óµ@xÊÔp'$FÁñ˜Óuª.M(11UU NHÂH+9s*ë 02<ãŒ9=ùš(1Æ®´@¨ r(UÒ,é:_‰í£3€™Bª)YB¾Lm?„z=ÆáXæ·‡‘áY(!Vx ÊH€jaŸzBGZ§Šp$×f„šHR¨BŸ»–éað ÔÑÅ2,‘èOx¤UyǶE:®_± Âf©a<¬ÿrÌþëc9œ:TXóg6Â@¢?>a÷¦²“Üb燂z•0ñÅ;Ÿ3¥¯§“qÎI=y÷%Ÿ (5(«üÙ±˜“×_’d<c5h¿Ó%¿:½ãT¦ h&Ïý†H‘S„¢‹BÙˆQ¤×â“òV›>vc/Ý–Äf=ëÙy%©^/'ÅÈþŽ¡,i@ p_,yа’`n§,'§Bè%ÝèäŸd¥z².êÅ1‹smµÌÑvTûYHy¯‰ ¸+lJl‹üKDP†G¬4ŠDÇ&]\„ÂEql H„]°«L'†N±^¤…ø>b^~`…DûZˆL䇀áÓúH ½r–næÝNgßm¯ý„êÕêª{š¢‘šyV(PÔpÈRüX(8 |™—¹È?êm\\&¯"_¡_ T•8›hD@jû* Î?ã“‘ ç¨)‘Æ ×U›ƒ=„ìE#Ê‘ýa¨ZŒ@H‡zŠ µ€*€™ 1´Î €T G”(U–ž-]H›‰ä= ÌäÝQŽœÏórR).)sS¤·¾ü'&ÊOÉ23à* 'Bcåµ¥—Ï}£duª’P¢bÒK¦ö-@tnݑª<%€|Abº„Íô —b)R£ýØ“|ཤ?~ª /»R\(è oÈ@5‰ÍûBXÀ0À >²Y^É@5p H>JÐãÈ+ZÇGáð¿&—“;O"5ÛÕÃAäçÀIáœ/9”ÏA¡tµp˜ å÷aF•7~ k¢šÀ¬¬q¿hóbÿC #38ÂÕ¦OƒMòRS(ä´qÞl´Ž0ûÍs¢Ì˜ÆWjæÂC¨M2Ìî5áäe9N”™ÂQ”“0'£Œ&fKz¨Úa”«!ÛK$C¾oZµ¢ -$¹­êAå ARC\:aU‰¾¥òè­”WÈF d.ˆ¢š3àJK4Ý,[:>Ý”÷кûy—ñ‰(â"_Ö¥zSÍL_zyC4V‘ÁYÃÞÜPë´pµé9M+Âa0lùb ŒraÅÂŽ¯HËG'»Óq*—fs>UÝ!äkÏÞéëôõ½’…ÃËñ⃩ûüYÉj¦o•¨4iÂøôuúr]A¥`†Œ/ôåfŒ‘E!$™KY®j® p]™ŠAí¢d ';0êšN_§¯—Æ•×â#Â’…õ¨Ùü7µR™"0^Ì—SãeäËýÒ%~*EŒMe2”¥¢+EQ´+ªš+#ìn§ÿ®x׌´ãÒÊO*e$S%D[";ª,¤¤¼£BzÇ“8` ¾” 8­;¸O{mçOkÍ诊ӗìJ¸`d…°,$†­ŸÑ“«³ÆŠ1©%ÛªlF¯+“…kâ…Dã5Û1AWÔ_µ VèÅ_­u2E†€ ¾HG2^éPhmÒdEu­9}¾N_§¯Ó×éëï•:ýŒE«WY£éÕØGŸ ¸O_§¯¤KªÑ#zýb»Fךòõx^/'“]ØfoCõø©’ñ¾þ÷Á_<-=õK¦ÕCF@·cˆ+’6¾xú ±ºìªÇS„ج$Uë„"9·ŒƒˆìWà VU‚Óêéxdpdõg„n£¬·â58«-?ÌAà¾Åú2²! 4a® °ô1BÓXÕ~5–°UódÈlcA [/ì1^kZ»²]†4Ð;ÅUM·äšÜ%—”©ö@•f¸*ùñÅȼU,Üù#K ŸJ Z‘Nõ7\.¡í`¥þ²úØîLÀ#aÐJÚË$e£gœÝä@C27œ¾^êWlxø_šàô5ÖW0ãtÇâï˜E[ÚÒ¨ãFÚ®Óש¿ªP?^´šÊ‹ç²g sGŠöàP¤Æk}úzù^U³ç¸ñsêriÂSêD@|DÊÓ~NK"¼ÜÃüø½KŸªÇ»ôùÔx¼« ¤ŒÓ˗•*:b/u›aµÏ–ÚÅÌ¡QtJ6OÈêÜAuåÇ–±½â7²·ö?’ŠM«‹þ[1^X#Se3kó+ÖU Ÿ Ï>¹^‹½ zJ¢l³*W¼6ÁJœk4µ›p&SeEÒ3\A$É8EiÆ*æå ª ½CÇ4ÅhU=ZEZâÁb‰¸Eed1•kÒÛ˜iŠ#-….?2%Ê^§^@j¤SD¸«­TX,cºÔ‘R¸Â«@¡“ãGVK¬MIŠ“m“ž¯-W¹Æ‡xe6ö4Ü™wšQ‰×8ãŠÄ9MfÐÕБ]AâÃ8—ÄP[ù ïÍ*ߌèzÙÃïH‚Àtšµ „Ÿ=mÆê3´D/Zû5ÿk¹Lqe¾“ïñÉÿ)Ý7ÂË ãZv`†5Œ$¿Ñ@ÒZáÍøµa$ðŒ¬ÝãÙ†Jéy.ýÒ^hå †Ëš2cÕ /ÓÁåI^ ìÄÚš˜T¸ˆdˆ4ÓÍ^âc»• L+ÂîûÊ]È줕©ÕÑ K—©‘©‚¬ÉgÐèǬ]:ŽEÚ±|´´ê ¢äÙK·ÁNy—°$Œãr†L®UÏ©Kig£Œ×ñ\Vâä8ǯºøgYô_oÈÓZEïÏî|Î+½hˆV¨ÂÖ1HŒMVóR[ñMTUjh`Ýýø=)/6"ô¹H )¤£M‡©¤äÚ÷|àÀ„7O¢.?f莓U–ØØ¬øÂè§Œ/F{½|àUié\9‚Ò´ÁŽG™# Š”¾/Å£;’KsC¥ÉÉlÙJÏ ñHáHÄ—LzZ³‡¹ÈÊ”¨RM 0ê?òfˆ#)Ïm˜â¹Fs]öœ¥Ò¢^nàT•eD=kå ³îLÏ&wŹ,0/{]™?W.£šVá¯,R X \pF#ÏW5€™3ˆ\‰©bGY…rªª¿ªJõr’Ÿã"rä­£h×NÍ7ØÖЭ8Ž2"D5Ʊ°„Nôƒ1òTSÅ Ü»"eGê¢u”5¹F¦1êf—Ôm1“p~Ó¾¼]1¤Ð’ˆm0 â²ýRÅ2 Œ ý#¾¶Ó•žšJÕ 4è+& ×*Yõ ^ 0ŒÛuºÇ_¤0ŒÛõ¢ëñì…h%Œg/Á’‚*bcDJì8”kë®ø@ªh®¥žÀȤ+Îʵc ǘ\cËhVi ŒåŠì—)±±Z˜ ȼ”Tð a‡ƒÐ)„ÒQ¿ÊJm©þ×~ΔeäBÖÙA¥˜X¦ÀO\új:o€fÔÊ0gH×s–Z­²C_›«ú ýM j+½’££Ûr4âÔÜË >±³Î´é®ööÅ Õ(®1ë¯LIýäÁ7=y >t©4K?û{(¨Å^g¤ž;þ¬˜Åíä›!Þ’5A¶Â«¹FÙ§z¸¢¤4¢Óc„>’0@ û›å±û‚CPý5vøw'ÈÂt"~)x”ÒJ0 ‹Ñ°1<‘3{b^hA•¡rëÇâ:UÓΗ_=–ê¡÷c께Ò"ߦ¿;Õõ%µ6ÎSéo]WU Ç«jÞ»RTóþ…®ÿ…Åþ¨®ÀdítÉú PÕ»ôÞOQŸOM}†.b‹—ÄW +PéŠÕøCƒ…¥¤}aZ‘ñ’`UæJQŒbÏæ IZd`õ‹ÃP”V³¦Aɞъ%&Õ3 ¥×%sÆžü1¸gpìË3­œÉñFïŠF:#ÝäËûXç—x2ÑߣŸ¶Å«7,:¤Düw[cGÇð±+¾šI¿©V›\­ë«@æ·†Pà\ëˆÒC‘ùdæÈ®ød³A…§Ì—ž}t™uì™Æ/þÌéôà˜m¿¿åé“_3Нg&¨Èøv?ÆjO€ÇQu5ý:š´AÊ“ûA0‰îY…qØ¡¶O•dýŠ´Ì 4Fkí7 Ð*®ä‘!cF}¬Ž?úzª áÑ(6ATï\þK.È2¥Š_±Sylx5ÉÑt£åctLØU]¦Ö©_ˆØ¬ñã_è¯S[¦Æ€‚Lm¿M+©¯ŽUp8rÆ MM©Y¡ö¸ŒóW.ñ–"ª¾ÆŠ/å•b©/0äœzci#ºÆW.H’»PœSÍŒGÆ B~t3‚f;²$/À˜‹/öÐâzt=É„&Ï 1yÞ+„m"×'¢0n³Ig~-“rñöëÍð>ljrêº2H¨…éu(nR‹€Ù¡¨% ©¤êm5ù0ÃS µKó“Nˆ°‡2Ìþ‡êöíÑÞhuk*ŒL¯¥Ö‹ *—‘~U™*°žuõIìiº|¶ô‹G˜ÍO"`ñº ×E´n‚u«›P“ˆÔMža¦=9nE$oIk¥B‚À˜ô§´ I0Zš…²*„9ö80Ç£ ‹qºz:ÞÏ®^NLÉpgxïèL-*p+ ¶Í{ ûJЀq˜–ÖS¶«gj1ç óÁ1 ã“ ª¨&Œ=Qé¨Xa@!Ä4§0¤E1¼ëéí´F¥ä•r’¨gøQU!é 4|éáŒéå¸`…9ÞƒxXñ±«r⇡ £Œ4ð¡êÕÃ/Þô‰1”¤ô ó#r\JãÙL„ó7"…HwDZ)E}ŽÈX™ŽÚyî4ÐÙ·š4†>%X ½é"NLâϲ Å2bÄã‰Ôôƒž ¹”-«½Ö3 ¤”ç‘]A,àŽ;%å[Ý“Ë Pò<Î"cX˜Èš4ñ ¾NT­øÈ—¤w¥L)‚…O”›6Kq©²ÎÅ#pýH.‰ hœ$Í@˜)¨ ®VŽK¡Y® Njލñ)ÑAi Ä „7Ò"$D¡F—Ì꤬Òj”¨¥Õˆ7ðµraZ¹’"µ´:)Z¹‰4˜åúßÙ³ûÐÝߺJèïCÏ:‡+zP¿Õ÷g¬a:PerÈV©¸0ô…ü‰ ËÎ9b“Gq•X­”A,@U³¬”÷V“´Ö ÑÚPmzvWÑW‘tÃ#k-_ÙÒ –ZC©¨7‡8ËjxÑjåGb4• è‡A5¼N½Ü›sZe’U}­K8.²ThÕ;W`Ђ;æ”ÿ¿9’³K˜ ÊqsCÒ«DÕ1!²lR]‰¹èUò bB®¬—1W3'nfOPÂX0Æ/|ñÒ÷5V“9„+¯6doªÚ@ü9žö“ŠÐŠs"…s†fÏóRbG;Ç œX»Ò¸xçhȦY±½ä cÇŒ}™м·+,^Ø”YzCë­Gb«G4ªêz‘ñÈskZT »6) [:ôKî9y£¢£‚d<®Æ%Ïœ®} k—âú¼² ‘—ãüúÌ)_êðó4¾˜U¥Øh¹P ¢RšärT]éå¡–VŽÏg¶•Ód©«Ìéué‰*§ÉRW%˜ÓûBY*á'K_¤÷i¶+Ðõ5Çó˜–Ó ]Ze’ÿkàŽ£¯PVW9vjXƒ¹U™+Õ(âä]êOQ”úÊÔw%Mr[-Žî–J,ÓDLb#HÍñ‚è4ÞNäŽDm±’œup‰¯CÔðÂQG•—šA¸ŸÇ²¼@ý¤ÄŨŽkƒÖqÓÎ(NÕÚ犄ç²K ¸ û£%·ÏD Ñ:HðD'LGz j2$…Üü¢cÐGË©‹,ã“_wtJ!hSu‘c,uBtB!U^§”G²¤Ÿ^vu/¥Nx뱦Wc‰Î?QÊ ß*†+нršV*RŒ`Ib¹,6‹`©—÷˜3u@k‹2©lW!ñÔbx±ê lú#—вl±¸ò2|¹f(Ÿ%X^ˆ”å\Þ}•H¢T‘BÌᜯ+ºÁéNŒ‰¡1ök…Π¯Æ#AH5šŽ)ª ܸ¢Cß—E ™Îƒ<½PUG€ÈF¿§úÏ‘):„ø"ÙZC?T yW;Äu Ãf_65TÎBôZe-Ug1èO­†Åh<­ ëõ¬m%Ö¢¶@¹˜N{£õ>ö¼FûjÝ.4é_R»m¬ñÍ÷Ž—Ž)Ø9~TñÜÇ0LjUÖì7vW6¢ª{]¡pó5¶]kìqÆÕÇY -±¯H/†Î¤.a%räe ž¬)ÝTó‘å+W¼­òÑ•9>è„§;kâ:€/ç×hX2ügäç4ÁÇ[óôXQ² Ú°¸^ø8ò?yÇ[®†q,ÓzŸzDâå¹.@55£DÇ$.LO`yQ¢Ñ>'R"o5è›Q¸V„<€Æl«`­ ¸&°Õ2Ÿ@zoJôGTÅ#‚ªò-¨p]P±1̤Dé«à*ÊèB1õÄg/ã,ç¸tnV(pxdYŽ8˜Î6W¤,ÉÌ8K ¬ìREF$6%¶LŠu6;pDvv½²(i5Î*Ô·¤¨ñÚ¥ªW•û¡R«OÔ+]¡‘E#Ó˜J,ðZñ¾R‡5N—J-µvÐi8Ô 0°¢3ŠÕ¢6±™Ò‚@S¦yÇi Çʽ¨Ã µ¤¶Mãºö DÆÑüæ0hÚéœ<­á- G_<óž7Í,TÖú|¸ e”j855y%ÍLÔè„gÎ',v¶ä¯®º,Å!¹°À‚tÜ«q˜wl~-ëØÈFwA1Ëê^Ùµ² ˆ"5IÅßµòÉÈK­Ä)£)Dº¡-$!8’Åœ=v‰áIn ”o|l•AAY’ÆjŒt/@-V}£%j†EÍèûÒ˜(Ì>|P“hI±Ï©ÍÊr`—;¬àº¶׆TÂÄÆ©ÙQ.cO–mt1ÍÐiŠŒ Ê~L+°ÓùB ƦÝ:AùüÀÂ\c59hÂ…c3kŠÍb—EAVušÀ£’cŸûüØ¡Fši 5~L=²g®1âµF?jilîC-Îï '[¼™ÆÀW|nHˆsŠl4+•äËÁT2´ÖÇv\ ìêuDEGšøÚŠ RLSQx„šñ=’åó‘댒´ÐRx ùëj9 0~ ´¸…H®’åLÝï“Ù¡®Œ¸"§ ÖÞe_bªØ¢”Â2Ni3Uä”õÚ;÷t×÷C©jù¾1ïäû¸AV›°n'êá CdŒ6‚Ê &›‰¼öf( ¦ØÚނɵ4híä¸Ì±Ö†É=_kÆP(^§àI3S½¶ëµ;Èê;§.â󙱦<)ˆ|?ª¨)ØdjsuN®*»>„046´û¾6õ2ºç¼ÆœF”ÈQ‰8£b¶¦Ò‹Ê´ªÁRÕê†%›„^ª&¸ciÄLº4ËTtš¨Œ“‹/&ýJ8Ê’kQs:5”ƒœ‹·–ð0”–ðP¾÷E<Ù-Wc¢‚ë€fùb 5ÂÐíÈ..Ãzý2ñ*-°b¶\îªA.”û ݤ¾¥ÉÂ¥üQ$«=.èbñî!=H³—ì^‡Ï8~'”,gñäYìÔ’Ý6Ì\.ðú"§‹DÀSàDËåÒ#]Ôå¬áM&'#kL–ulYÒ„‚Ë€SM”…°ÿ ûªŠ'°F¼ô+IJ’†ÙUÈ„’“( Ns,"ˆŸÕH)]˜|$phÈÐØrJ ;À#+@Ù™|@qrºÌ‰k?~L½ÑdQœš}ŒK¿œC¡Có-ÍDÀa‘9â/¢A ´›˜m@ˆJ´è³AÆšõË¡@•‘Bè…4„$ÆPf ^m÷#%\üØ)îaÊR¦›’Å0oÇ:,F)ü‘PJÜ}fê>·$DŠ´¬I¯Q®s"I„$›0 §¿|àŒ;f¸•pšØ+Vóõ1-0‹—Õ9‹wéÓÜ£Ä.^îoÅýA¡X ­©© âj0yñ"¨/Èq;…ªØ¸›q@ê©,5wŒì —ÐÍ,Ö÷~ÄÀâ[ŽÔŽR…fä* ãbÌÍU Dqƒ³ïV¬HEëù¼Iy$ÙK××\ï]—9˜}“<UÊE~h|uŠ8ЏÇSÈØ]ÎÍ9+V\ Ma|:cF ©-KHŒù|]SÜ›°[¢µÈ½ÂœmˆN+ÙMïYÕÂä’Ýj¡ÏåÿèJNàQ—õHL‰€ ]s.zq¹1ŒYiÓ¬#¦ªµtçà) $&ŠÍ4Xð`3ËåKU$, nÑHb+ªºz‘§¤4:á£È‚VÜ^É" vºÓ+ÙhºñœÙ REVͬ9Zbf«Œ>,ÎEš›«- EQˆÈÚ\AÙûņ†@›Ìs¹â¾N_§¯—ïå{¡—ó&{{¯òæyo÷yïòþÄ{··Ôû ïýÞ o•÷7ÞZï“^×ëÝàÝèõyŸñþÁë÷þÑû¬÷9oƒMMMµ“kinærLkP2X“¤\Tñq…(¾à1a &_‹*–ÿA1¯©‰ÀÒ— ð?"ö[__Ë~©4*Ó”‘I<|Ø+Ÿù|Žý2ÝÿC€•Ã~ …<û•Ó*ö›Ã‹ >ö[__Ï~ùˆ$&mìo~=_d`di¬G9¹ð-À‡d-@‰C;P?Aêçóe€Aê„,û|ß`f€¦Ç2 f²"Àèd€ ¨ZÔˆã'Ž Æâ؈aÌ]—ÙR'Æ\=hµ=ŽŸ‘`ƒwJ¨ñ>!~²ÐO6ld¢ŸñÁ£³à'Æ>qbÖÛ(’Þ/pUîŽ's@;ÞƒÎVÄ#­vÅÁŽ÷²õ($€Ñ§Vg‰€!¬GŽîbSï}ë1#æ_lýŽˆ•B‰ž,Œç c¹;×ÈêÊN™2q(ÐähÔÏ%ÛE¤`ö…ÝRY ¤4½/Bwg»bC•«]V¿ÏŸ0\w´@½&¨¯§í~Z`ê Œ_É@{’;X‰µ¸¾þM4ÍÓó0‰í|ò(ÒoBÐx@˜R)+?¤™¢¨‹•1ª.V>?V^ÔÅÊÇUשl—‹ß+âÆAÍÒŠx‡Ô£À»[Ù…?ïŸ?ƒŸ¥ðó^øùsøù øY?ïKMì*Êõ¨âª¯ü/áç¯àg9ü¼~>?¬\TõeÈ‘Ž1„%±Ñ+àç¯áçCðóaøY ?«ª/CçUäóŽa¶ÑuU½šŽºQã9±¨ ­Ì#½ø÷V$‘íOµ~> ?«áçcðó7ÁòËÞ=j0Ư/(h#”aYÇ…ê^õe-~„==3/2«j°®Š¸ªGÉöÖ¸´7ëˆ86:M¢VÕÐöB‘üø©c ø©Õ G-ë^._OW¯'V?°$Èh*—N›¢FÈ$§V‚Œßàõb‚%½ø~;†t5Î¥œ2ê|AEä ¥•ŽP¹Ã>!Œ3¤ã,KÆy4kL¦+¸Uˆã§ÈU_ùhG3¸V¯ÎŒÒñ¦ã¬ó»hrÔ];.S¨S6<¥ËرAÄ©È6BbaÜ ¸_b„ô¢³‘½8g1YÉöH§BIÈZïXÏ”^J|4˱ÁÚ‹dÚ|j }éÌX^áö¢3&¼®µºëu,ëëVU‘žý½¾šò/…¿K«‚çõ¦×g€ áy%û»‚ý]™!=O÷º+)O&x^ù,-û»ò/®W®bÏìïÊ8€?×\V¹ì¥çø¹æ/.“8ºfUrfh¯h+´ûšJå{z†Ã+>¯¾f¸|Ý• §×hhüdÅ ¦×p“†þJp<=µWoç5)t-éáŠËZ¯¹2üœ¿®¹”¥¿ôÒŠ$ý\ñ—]så_\&ièŠUì9ްXÿÂ_ ßÈô^èáÓõQ~»íþt=ÆÏñZ½È›îMñ&{2õÚ(m'ê<øËA\“Çß³|k'æá¯ø×ž·í¯&z5ü}ÄnCðÇòÂ_+ Ã_ÄÿÞþ£•K]°ÖjiX1Xϵo{‡›þ†w”~Ôy$_¾†ËáçÌòÞ÷8ÛÅOÿ¤ôƒÎCG,ü½e…Ïäó˶ôåóoç²m¬ýåoNˆ¼c}}¬¼ß/Câw]ÏO>Xï-èî,°§uÛVû»ÿøÄ÷`VçÚ«Û~ÁÚ¼jÆ¿æY»»›Ö}{åÙ¥g:·EÿÏÃß–Ñ«ž¾/Iýî)=Cyÿµ‰=³2ÏÚâQá G Ë rxwçŽ&¨Äq•gÞz×Ù:ÓóJÅÍ,gi¨È-m-BA¥ÁâVvÛrCN)*–ÝzÝ=Åm¾aíµgå»û‹;àarÝ:è¶€nùXPa¶¾ib¦y¾›B·ºµÒ­H·étk¿³Ï¿³w\ˆÙ  鶈n‹é¶„nKé¶ó\ÄÔ.¸uwŸ‹²‡ ÛK·ýt;H·Ct+ÓíÝŽÒí»m2gEµå=ïÖ…äÖöOÌ—dµÀ®òÛáý–&JtÆÒݾTÀÞ_ìòC(ûö禕|öÛìfPzs³þ›1¸å±Ü¼*bËDjaÓ­#Bª€õ±ƒ!¼(02J»Í‚A¬õü¥±†–·?ÉDáäyPeñ“è½—·ÿ#ÒÚqö°‘}Oã7ÞŠ´Ö´Æèâç¢ÇÛÎÃŽ,²¦·Ÿ‡½5ˇI:Ø­{Á$Éx î%zö;ìe¹RY°ÁyœÑAÄPIK ÁÂÅhhÙy¼®ârJ°‚n+鶆n]të¡[?ÝèvÝ6ÜІáòŸÜÃ:o–êÔò¾õC»€ú'²wy$¨‘¶"ëÄmPôå ¡ÉDöü#@d¥G2==Ȫ\Ø;‰`aq £ø['ˆ kŠPÎN"Šy1V‹ÝM±Í½T+‹ÂÒ·°¿Và&ö7ýÍb³Î­S\ÂÄEÛíSˆ@ÛÙ›ù,²ƒõ’ÊâⵈE-¾u"³´üª[7µÞˆ$€2d0. Dç¢, ˜§Üq%×ð,FÃý©ðÐE4&\¤Æ„ã,Ü[ø=6ô å‹’½"Ä·T.bD¼äð`ïm~€±„üGyÔmóéuò6oc¡¦"ŽOòr „ 'ocêïÂÒƒÛ° 6(ng%²¡î"l2ÜÃQñ¶ œ¨ŽŽ"ˆµö×ÊþŠìo:û›Åþfƒ»-ಯ|ÛPØ8Fcù v»-äÐ^¦Fº¦Ë0jÊe(±¡É ¦°'1$/áÄž¦_ÆÇÞÂß³Xh+dn²çDÎm)ëlHÌëÙ,|”šË0â&ŽÝµ,|œ×Ûpðí¨YAJ†ÄÈш¸ÁÈAX(K”J²œh8`§©¼ýÿbç´`Ã[[TÏn™ú‹sZ0j^‹Þð6HÌGßù-Ø;ýÔÄxÓHoÒ››èÍ¢Õ–hȶ?” ÁV4·`+ষ"ü€ÀŸw‚ß~™áe üE„Å%F¿-½L¿ü2üðf"½Y}™þšËøm—ø³ßc‚?÷2nÀÃ×ü #øÙíÖùTïæ‹øC, *L+ƒzàb¨µé/0x/ÆÊàfôx¬ž'¾†õtšz.CÖÐ({#'ÕVà:hBnö_±*ºŠk/Ñn0’&7iU°!³¼šªXB„´¬EqÐêUÏš8 BZ‰.;Ztê§'àœ[L% @igp¨5jZŠÔ´™A-øaq JO¸ô¬Ð[6#ü›E›5JÚ¦QÒ¢¤]%íÖ(i¯AIû5J:dPRY£¤A¤¤%ƒ&%ÝD”t§$þlˆóùˆuk ¤ÜBþs· ø[‰’v\¬ Ú£QÒÞ‹1ê Ý]$è@Ž&Êqôb…îã#­œ€¨V¾å|…­ç+ Ü;ù½b`à|ÄÜÒ1ðü¿©Êvh•í‚Z&R-û5ª;¨ÑùN$°uvð6¢«mé¼G«±¬ÕxT«Ñ›¦jŒ¦©`ÿ@5¢U¬ñ\­ÆÂ4Uc3 o‰¨Æ¢Vãôi˜tö4|3gšš†Î›†]Ð6Mé:MÓ¤%òÓ$¸¥ƒô©U -Ôoñ¥j†¶\#¼—jV•Kñõì!Ù½;B µ-¸4„œ=Ö²úoËSÙó¡5X?Ë4MÕ¿dšš,ô4Rúå„—Ó”ÞÚížüwÒ^û4¤=¸%Î?µQµ¿KkÖþ­ýµöo¢öjí_íÿµ-µmjû7ªö¯ÖÚ¿všÑû´ö÷OSŒ¶ûMjìJjìJGcMFûÇQ-Јð& ãCnÑÈna|Ç4ÕâHv_Ìa‹7ÙmplñdVÿm5Tö ®†Z¼õR%ÉwÊŠ»5¹ºåê­¬>_ÀyèæK±ÕpÓ[ ÐþéŸiœØ5MU½‡¸éÐ4|Sž¦¦ »Åï«Eï$©²Ë¡2®pîÕÚyðR%^Ž^Н]ª$Ë~¤ ÃµˆÏ=DA{, JÐGoÿb éä(ô` õìqhPžj/ >ì&lÖÍ­øfJ«6ýÃfçòØì#Ôì#)ëµ_T”ÕÚªêŸÞªhy.Õ?¯Uµ¸Ø -^•Ç·´Ò­ÕË¢>0H߉KUÑt…ãæéº•oÊtU±7*þF#׋1ò8áüø¥™ ¸–Ap[=!²½UõrG«RÏCc†ŠKZ5χfN~¤©¹OPs[+bnl×i8k®ªž>]U=w:¾ž7]U]„VO¾`*ömËt¬njü#¨Qè™ZcWh]ÛŠ¯»´^Žü×Wb/¥^jup³?ý§@ÎÛ§«¾í˜ŽÌº˜ºõ&ªuÉtZql¥Ú”»ï•JRì­|:šÀᦛÀ-;ø ¨¼ž*ïÑH¹_#囨[7µ"<}Ø£>ÇìÑõÔ£ë³õè¯?¯ˆi³†ß-Á)~'Õº‹jÂZßs5«uˆjý%K3HµZµÞ‰µ®,F$æÅØõyÅD{´¶îoUæÅ#­:¥Ê÷B5¹?y#6y½@ôîVD4ÜѲƒz¡ƒ ŸWââ¸V¯wš.À×Í`…'°ÂW_ÛkǨžc­f‡B=wÔPêË›6¨!¶ÊÆz˜¦ujßœ ðõ\ª§õ ؼ vÊH°psʬÚ3Õ³¥†àn»@õÞü °Ç]€cÚâ p1„Öý`K/àÊtïœO°ÄËØ#ø´±p;ðªo¼¥%ï?Ìç<ó8«£\!s¶ûR…Ëy…¬.I¾ªC¡Â×~N! _CÀ ß–#@©ÂÍTá(:÷[&«ö]€ä 7 _V¡ðZ±Zøàg•Ürª/>T¾íeäÜ}.c­{¨Ö­XkG’ѵnHµNV®AXÏ{>«M>/Ð&Ÿ(½ýØJI;~Fyâ-ϸÕaŽÂ…Ê «éBmÁ ˜üÌÛP(ï¥öïUíDZ^@³ç¯Ô‚„^Þ áAr/*zyš³ItFæéV [-¸CJðäèúw™¿wˆü/æ('œòº›-ïpéÚn5éÞ=Ÿ¿ƒ{÷ìˆ8+gŽ+nvxô,=Å) Xy謉z»é¶¦+h.Ÿy÷ᡚJÛK$»ŸÝÍ éÐý€°ÑíšóÎôIžrÞ™5I:ï «W¢ÏÚ:R»hyž{ð¬ŸIzf 6v°Ø7=xM–O?•€€…t†Zž ’6B‚ŽÑë¦ʃgl¦ÛݶÒmÝvÑmÝöÓíÝÊ74ú}à_,ž‹¶Ž«ϼA‡Ïò¯'¼¥åw^ùOþÊKôàIóæ3€ gM¾€€#!P粈¶òÇ>ƒâ ‹\ ÀÃඃ_Á¶Њ:xÐà¡xm#Îui{­å1LxV±†’g}FÉlXž»evOlyŽÕ+s¢2\™ËÝôÌ$Ù¸2G7cè_Lôƒ£þÍ}Éëq¬‰°Ǫ(kK¿¸ —[q«ÀU8º%Vñ–¾”¢“¼XOMéÑš‚kC¹ÍTÏrjÊò´¦ü÷)‹<óæ‰EV¬ïˆzp}'÷Ùº3 \ß¡[b=«Õ[K,P×䩞¯Ç°Ý Ÿ°–X¢YToó>Н&^òã3óþÝñÕD',?¿A)m[.Qv{mFu ·¸¬’ûóÃgâÐN¸JÃí§nÈf’cõL'ã‡fÛrO †Á'Fõ6n=X#ü4T4žBhÐ$G·DhžëMYßá•Áúƒf—ÖÓ¸´“[óÎf¨gzz0­§?Ó›²ª3›r„êÛ6PGÀ‚{s‚W îý¸Œ“û?ƪwSÕ»Óª>«7y͆Ñ,×€Éùªu¸R“»ëcX®ÔÐ-±ŠÿÛ“²HƒòŒiÀ×L«×grß§zŠTO1­ž·ô¤,Íp¾\Jõ,ÓêÁU™Éw]<t’ùdŸoÛÇE=0Aûo6 òê×D&,o2” ’ˆÙ|‰šãã¢fîbkQÓÙ”µÝÉË+¬ŠcÄiÇ5NÃE•\m3ú—í%NÛ›ÆiS»S”èP)ÑPÏRº´±–Ý[x mž€ihoami7›. ¢N]¢9woá_À~¡²Š£bÝp)ç2¨Zw‘jÝnSb„*‘ßZùýŸV¨¼RÞ®bËL¥µÍ¢ý4³gâÓÜ™8µÃIrqÞLœ2CYjz¼µØ>šõt=´ ZÀ·A•-œ©œÊ¦@êÉ?ðAr6ÍDðá–~ùÿ•9Û²í&B†€ñ¤·ðVND—¢á¤ásÓpƒOŸ˜þ¡á„n‰äó:V§˜R.Óê\1]k§ãë®éHQ=`°šM9ú¦«¡b9oþüuHVK©ê¥¼j'sÜÇt·Ò¼"ÅfåÿÇ"ôÍ B[Ûfxâï ÇötÛE·Ýäæ¾»¹ÿ›öÈÿÂÄüÜ‚‰ù}¿Úß°–é¬û_µþ!®ý>ù‹Å“‰±[ã7sXôŸÃ‹ ÿ„=Å?¢·üíâIØ–ÞÁâ-gsÛRÅò·-%½µPÎ}¶£ldYÄæ—2Ü~ÕýV¯ûl¾åQ¾E,ÅA Fpp[÷ÀÊKz/ÏUs¬æ±îkØ,'*Õ²œ°'æh/ŒŽL m&5”ïöXBÀÅÔøU¹[ç¶ êén–!6ìçÀ»Söw\´1>lXñYÜÌû;vMò¬ýBµmº}B„eÉýÏÞÌç†Än¥õù”ÐC%(…?â*Ky?›ŸÈ-4EFBé)¶_„‘óéÖq" bI.™V6P\HIÑm Ý–ÑmÝVÒm ݺèÖC·~º Ðí&ºm¢=€Ûò~Ä”gÕ5{{ïÍAâv£l1¸ )q+Mír»h“Q±wê-.Nï}Õè¡•Å6Øo3sž5ÕÀ)M]Ø<ƒý©iØ­Q¶—›?Îèã×l:¾²s„‚ØNˆÏŒ:‹!°’ßCÁ¡âj‡èEóØþÌ4S&úXye*o L}Y°÷ê¦N¾iêê<…¦3Æú,†ÚÀÔ &L®m´Ý ÖŠWðV±žPËm‡qt²§M…è™ô±ÉØgвÎ=>ñ×ÌÚpœÒœ 4S„‘£ cz'/ìÄ s±wr…¦÷NÞýY ´ SD8?v®AࣳLàá™–?KA|á, |Ò4e1sÔÎŽRÚ¦ŽŽâœòó‹@L±€˜B´( ZˆVD+¥)r ˜Hƒ`onC''âÉ}uݼ×ÚwIÀh# j»NÀ¿O Î²@E`ÌV Î&Pç(PçPš¹ Ô¹ê~ ê*§QÅi)0Òл°8ï.$Ï5 Æ[þal³`l£úÛŒíã|ã|JÓ¡`ì@[»ŒSº$:{FŠÎ»¦P#u¡êBc‘uºXº˜Ò,Q .!ºKB[œî>ù1¬}™Uû2*y¹ª}9Õ¾BÕ¾‚Ò¬äµß•# º±µLbk1ÇKºš’ÂŽÍL«xvâY÷~Ÿñ,Ùqؘà‰1ájâä]gq]–Õ ÈÝgáÞh0ƒÚY(E÷PdEþ@ê°%ŠìmìBÓÓHØp= ú^N' ²Î×lcÛv]n àóŠ˜Àл‘‚M •R°k NC‹Ú@QEX½  aë2hNmñl+ßðQDÕÁ³”¶xzøÐYøtÈ@U™PU6PužñÖ{ùQÂG?"§¬0åBÁZ>÷s#CÎ@&ä0ý²Ø=HZž†•Ap9ÃÊê VŽYÜpŒˆè¸â†ã„«ŠNPïl΋[)¸—éù³Q!hÓ·ú¥2&ß«¼Ï` –—~L‘»Rûßö1PÖ15ý@VòýÃݤ+t“R€*î‡kôãÛ{“ô¥‘tù¢éKóÖqnÏÍZÇ·gçŽ|Cmhdf6{RU'a™#VÛ”hgYÚYÄüÛ' ‹å]+ƒ¸ú¤´&Ø(M:E³˜j¢èòd).QOš<°Nè=ë¸dç[8rð“;;ŒÛ€°ýbÕy.WÎîÂV¬a­XÈZ±²8ÿ.lÅÖŠÖ †Ö£¤eלĵã}‚¢§ˆYð Šn9»âðdRÞJÖ÷4Ëå=õ\yêUTÞÇ"z°d¦ù°îïüµo’]㺙È”LÄRI9ï"bkÏHlÇ$±‘Äv\[!ý,A…|½“ØLH‚-3(¶½¼âCcE[s?)hkö'ã´Åm ’0Çà‚ÛfP'¶—þë ~þž|áå­“/Ž©“/F-†¨OV²>É©>¹Ã§©ôÎ"Þ¶ÁmVñÎ Äé 2 ™²n%®ÁÀ¹Ÿ;Š8tì½söÑ´ï»ôòþÞo 쇷ÿ ô2÷bp=é}ýA<ÁãZœ—³ÚYF”¤…ò¹¬ª@ìü¹¿ê6!Uiåo #ðãô•/¾¨£h«"1ÛM¦„=”Õ$Û†µŸÄ>£„•œäA´CÑÖ¬iF`ïQk}´Æ·†¡ëÛ Œ3LX͈®~Ž®Ç‰0{¤ôÔö†þ/Á„ ˆÚÝ;ÿ`IÛf£ÖþÛ‹ù[Qp,Èû?h"Š<•š‹w`¶å Qoù` 39ô¿Å߃„(µŠyWH:¢}ÖG355y§`™ÜÖO“<"D ¢45A“g-ìFýYìo6û›SþÒH?ŸVsÇGoú€‰#Nü.15`ŸÃÒÃi1D×ÛQ®GpmçS>ç߯ßrbxX,ÆègÖ@ø6:ëfúç&æ9ÀŠû—úÊCýD­Ú»ª(°÷äU*<‡ô6Ñ{kî¯åÂD”³¿;ÏÁ¶é Qßcèí [ž‘Ó_œ6Ú€!]oa/ SßÛ·EA¹¥{;ïÍ—é¼?ßw kÖA†¥ý=óàöäv8Nç~Îo¼Ï°Ä1œØªä`Ì·•´ÈÒ";˜Ù¬i‘¹ ŸâúVC!Ͱ#¸_ËÞgØÝ`¶Ém0frÛJ&·2°i 6¡Õá u•ð½ªfŽ ÜQ\ÄôQ‚¥j¹¢›&¯,t Ò-¤Q¾šYMÏ•ë—ÞáWÕ „CEú¹ —ó"W1†t3uãºïE8ôlË4Á¯`ÖìÚ‡N.®CkËz®:OE]Œ=™ÚNC#•ÝyçLRòÚËóþ»s¿¢¼ýDyå$Ê;¤(ïQ^Ù¢.[~Do¹´ýutY°4FËÉvǬè¦~b ÒZ.åž2ÖÈæwHWCj~o~o~o~þϘ|¥?:©–[ü9>ùO Š©áœ’î(¹åMb`úÐ{Æ@’ Mcò&¥U,á¤ÂF1éß÷îÀ+ïx+uå%#Rã„Z¿› Ra5Ú“7¬FB¢% N±¦LG·,UFKdó^*MG¿ö×ýSÞPFuç[½[íVÓí„#'Ï+ 6˜SâCÝä-¢+æï˜À§±®Y¶{¨»ýµD[R#}ó“N¶ÆèdkŒN†ÒG¼µ%1â­.IFš‹æ“ Nó°å›þTí`Òç}8™þزÅOø¨5ãa2R$¬a;©;vå=aœ´Ìxw„D¶=D3á1« ?8—ŸWÅB龆qž=Hsú.„¸wÎ^ê·oѤó±RyûÁÐ? .ºç‚cOïÛ¸±mPPåm8§ÿ“çÞ6§§Ý‘f}àÝ4§'´Ñ¤ò(M*ËÙèqœ~™M*õS_^˜$tÀ"F_¤%¾Jx¬VYõÐ)³e‡zJÐ[Ø) Åó}áUýpç}ùÞˆ)» ‡Ýg‹ƒ²As^ô‹{‚^±™ìlfës–œ‹ÓËòÀú}Ãp бOÐÏñäsOf3νg# À |ØtfVÑÜ\X¹Àˆòͯ÷Ð[¾óþªsyAl. uÀÒ_äãÜ}7Š|ãºßx#£N‘T#ó.Áˆ¹­B|äŽñqfw@QG{ÛÀ丠7—߀oæ;×ÂæB×ÚÆ–3ÄT·£8_˜*;ØÃB£o=‡Ò/)?þ.&þïeR¨äç½>#ÐÆ2ªº­Ž7 psÏ:˜À|iÓ˜6 Ï£1ä˜4†#cÈI· ˆn—ÈŒK0ã?žTt $CöWÝ â¶D/ö-KôQ Ö‘[¢ ¹O®:àïbšYç}šO쯞ýirz¦³tà'Jœ ><‚{/Qþ°^ÀL­}Êÿ¥áwØ;¹¸‰+®Pn¸1„mVëö±ˆÎ“ ×}Ý3p*6lâÛXRÊ…ØöIÄ=}×ô ý¶£ën ûkÑŽS£v†ÁvkJ |ž¦RÖöòŸ¾“‰Þ7¿ÚC©‹g«w>Ídïq½oËA Ï;áHvÞ“ÝôšQù‰¤ÛgÒØÒ }!žýöhøü5¬þÄÄü툚{ÁlîsÚ‡q0Â^릔0ÚôþÁ°‰ó?ì%œ?Š8¯m\÷UçLÛ$<`“pÂhi(Û¹ùø ¬YC7lh\Ìн˜¡{q&?`¾™Åþ’Ð-<óÊG2t?1GCwãÁ0Ãu^©8½ K¡ÖB±w2 ©›ã?Õûæa¨ž ÍSp€È‹…È‚¨¶éÖÕÔ\þF'9ÐÂ{ ±Ášbt¾=›«ú·\êC–@œ¦f¤#Nñ¾¸†¦nÎû ùn®ï+'fe ‘q*}üɆ~?Àù!ÈÚšÞè)Ø×éÃò"_¹G©EÞ†[oó>W÷•-=öc..©K÷úßêmÀ"<â?FòñÀµ[ü±§Vm~NZ0EÚ–Ý…Õ‘6¡ë>søm@ØÑÑiÌ_5œÚª›1°)œšFÎä„{4æ€ù\)+ÿÙï½H;qÉÿ»‚•Ê&ËÅÞø!B%Ñ$«¦ ŽO0ÉÓ@¥{Íš½ ‹$•vp*ímغ}µc J Ù+qÛv ûke³ØßlØ$O¦4°¿¹w`“–³ájª®úi1 …‡˜˜Š-ù³4œD¥Ìµæ…ÖCèߨ-´žþnl»ÉŠ©÷‰~£/”Wƒ¹ü†æ’˕ɒÌR” FåA2*//N¹#G,p‚.žbÿ°@6L—è¡õ #L–/û}ÍÛçÏù}sÕe(fk"[kÙZ;\«.¦­õÄéþ‘ãô„œCùWo3\¡á˜VË&:D6Ѳ‰v(›(Ù@õ^'›èôakψ!DàÞù6œäp&q‘r}ïító~c˜îÙ¹ýø´ÒÝÏ~û¢~Šî§¯ñ â×x˜°˜MÂÙqFâ7¶â7Ä‘Tøa Aú0P¿ø0~Ì€£>ƾC#ÔJ»ß‹ô‘Ÿé´»>OߨEIðû:[éû:]ô}Aú¾N¿þ}–¿Ù3PÜMù$K.ø¬8SSäž‹ð pÂÇ­òe2ÅY·Ù>âCä#ÞC>âÔ‘–¸h+:ŠO^!:²ai—DS÷op,`¹D;JÄ‹ywym®`´QiÁÕ®H®àš¯Ìðó)M‡µ‰îâ [zÄó`wi_l-—¦À¨<¾ÎÒ~ÿ[p#L_ ±¹“AnÌ2^)Í\¼+{þqºÐ2Ÿ™[IØ3%ÍJ6ãÛó¶@èÿÜI¾t´³s›ÿùgO–î_7Ìçfÿ›îb~¤zø"CaÄ]$ùä°txƾÆ[z0>¤o^õNÒMu¨1˜nEšíï¿Í˜Þ!&#T-ÎOÈ)³E›IŸÿ6cËP8´Qr0õãDJḽ†¢I‰ózyWO=ÖC»…F:“>þ&œI#^PаiFi/âõy¯«^»¯ÆÈs…ë)·ƒ–žšñxã-ýÏô9Ä+œ¡Ü¤Px£F¡üÑ7¥áU $4!ÃF®eé{‰AÁz±6ÐW²a-'ÁŸÐ0N¼j~/n¶b|>;½’¡CI߃òÌ×IQê&ÕU.RÝSë&UˆÏHªÅùi(Ö åxìZÓÞ3V "}½b ìêkÿG…謰 ’ "_!ägÛµc¾²·W¬„ìêÕÖþ“—@æ”Wˆ9åÀÍuÆ:@ l~|ð 'œ!•kÍe’núHßöÀ÷|Ö¢£3Œ½ÛÀ0 VÍÝ,éB–eÆÝ¥ïuÞç—~1“Ñï¡Æ[¾ÏYz$Öc)Žbg-¥d²w€NSžø&{)Åô³-žIß*ЇfûûBúê¡Ió +)·˜„ÿ5Ól×7G}œe`¸ ¥à¦'­u ÑZ7ì.ìÆ¿ÏH–ûôÛ7¼-”]Œë(‡ÈûY»ƒŒÝØ(>‚Aå¡ûÈ8¾€hn¼ð‘tŸÁ™Z÷éÆª†â BUh¾û¢qs›¸„ïšÀÅ…ÕÉÔ¹‚ äRìÆ7X¦l¤òÈ“6mBåÌ.¢ÙûoBtØ j,ÑC¢Ï?v=÷'˜qÏ{ƒIqS÷s¯'S÷ Bô­¼AZXÓœî¬'$!òóÊ¿óz´¤"Jû Kø©Àìö×¥qZÜ@þ™×‚¶±£A³þäð0ßÏšsW†|.05Õɰ2(ƒ8t.›%Ìð:h8(™`ba§>j® ;ó^‘º³Ü5X.¶«ó㦰pçqe]çñ ±ëËžÚ·;DÂJïelùy0wѨô=ûC˜?Ó>„¹›D ÜÖm[õ.±Ù!r°¸ïöæVCq÷a>Üû¯û^w-/ñn^¢<ò˜„ܘ,[÷ &÷ßˤƒ%ê[ŠC2püƒmýƒ°ðìú<·ðèÜàP³ ›ŽÜêtçe¤™É%ˆ–ßÁ9Ö~á{7@:Béd{¶Œ9tˉװèäf÷ Ч÷ÇÝS“ Ò¤"r°qsx~äÿ ”y¾\ÝEî}pLŸô Î+ß»‚rnr¥ÍÊnŠ0 2­Ì:­Ý¤ƒLê&>çBi+%˜3é)˜`6ôùL0xŠÌ…%uJ0PH Àq¹L ÚÁÍ‘Ìï¤ùÿòbS\p¾¾¦¸ {ˆf÷+‹ Á’JXF**a1œJÂå_„ĸˆÖ®>à§ÀÊ|Ñ;ŸvÒSžžvÓS=í¥§)ôtžZé©LOÓÉ"‚¶Š p†Gˆ‚­G§ð¼Ã–3’ÍÊ §ø M# ¯çs³Éjµ ‰­™ÌyxÚ*¿Ü‚³ôâ&:ž ²‚²åÏ4kÏ…4\VdµÙE˜ÝTÓž ±5˜!*–Ï\xh«=üÀ9ÖFPßA‚ç~”­àŸ¡Ö×û¿P+C@€ E²¾FBé-”¿úaXëYu®¾@uÝí[ÞNŠ Ÿþ´‘Uwq$5a& xÖž<»5ö]ÂéYíäl‚ù,Ý?ã8~¹ÜYö…~Ø¿`ùÎŒ§ùþ,>Íø÷U†ÿC[çÉ«¦dDjÓpùÈZºZƆ¹ëþÖs#œÚ¶«q—Á ‘ 4¶GÝäíÂ: >„^zœ©•8˜Î¤ä>ÔXzøÙï]ðKÎØk/&ê ‚|ùË ÷¶ù„¶E íë„6xàê)¡ k¬Œ6Ñá¶õ¯+ ìö³XÂÚa|„Õv—ùžX¼ÄRfJ‚9¡ÚפÌ#óm/=6ã×¥oùß-=Åp+à¹ÏÿüCØ>AOùW\0X¡·£Œ9æ|â¬Xûz6I™§(œA¼Œæ(ŽÜ‰ºémçaQ:“RùJ³-bèàÓ6üÛ{ÕÉ9+ji‘ìbÒŽ“΀šÍ÷¿y×øM¦5÷BkxJ~V‚–Çàk´_,ˆïÐ2 졌ÁB™æýjXèÃß|+´–z÷ª)X¨<†rJý ž@x]A­ø qˆÅ²¿Õ;¹ Ê~Œîküæ[YÙgó²å‹™0ädXƒÛº»Zj•æt-~šc¡åŸ2cá&"!¸Á!¬'}KBâ‘Æ ãD5ÞÙrùÔÃçå;¬|WãÑå÷?ÍŽû«ÞÖxWáýOÑåÀs£ñ®æ·|~Iü¢¿Ñ2yÅ•-ùÆoD—Ãýª{VµˆãŸøÑG…bù>&eH~‘Õu¥ÛÞéK^íS¦q¦ý3b†2ï3|†òªéÿΰß!Á8sñI{ùß_5æ3ÖFè\k?Ã3+“–4ã0*ãÌBAžÃ†Ç/üjxXPÔ IQ:EQÿ¤ÓÕ ÑÕàÈèꊮ‚U󫦫³âtõ³$EÝÈýçN]í’tµCÒÕ¢1¢«·¼rÌéªéï]åÿ~Lèê¿®dtõ†_(º2éjMvI5D5”¢tÿ¨² dž¬ÎnVduJjáß ‚êø{APëLj ~={Ì jƒ$¨¾±!¨w2ÿògÃÃ}.•dþDÏ;¼‡½eú»Ì·FÆ`>˜6˜O2ó­dØJV€®?‰Ô(¾¡ýi>ŠoÑGq>þ§æÈñn0˜ßë[îèHÍ÷›ò±@„ü\°ò¢Æ;›/ÿÐSìá×¾"K~Ò$›ò¬$Érû­ïtšP ²ÔÐbKpUzöÿ½´ý=·½jÇèÈò"A–ö[c°ñØôBiýÁESþAíÑJ!K÷q Æ».gdù®#ÃÂê6Ö"@ŸæTWÖ©NŒŸi´·‘,ðpÚú0œ¼‘>1飙èã×H-D¿ \ô±¤ñÓÇÒô±ø}#úxì1§M’>6Ž }üËLF¯}Š &>ñ,ÉøÇ¦ý}“ZçÃKÇ,r¼ôŸR#è¦Zcò…Ì#è&šñl¢O—$ Êþaªû|0lüFC‘ÕËj`£h3¢ý|Þ£(mBaB+.'Ü™t㣥îŸr,Þ(ȱåFAŽÓ¿06£èÐŒ1'Çe7 r\rãhÈQÂØÄ`<<ø%®¶˜âªã ™É-$¨¶pAu²:AÅ(ª…STnPÔ=õ²;[&E‘*çÖË®«?ÅÈAÙE7Ý(ô²ÅcDQï¹tÌõ²£7 ½¬|ã˜èew^Â(ê~¤ÄÔNSL­ÕÅêçé²j'ɪ\V=RÝüq†&¨zHPI"é'"i.–ÿ(/‰äö-ïô%ÍŽ¡g´±Ðœ›Ó'°>«¯ò¼ªotDr¡ ’«/6—wcË;ƒI¾ºêØ´-ÍĹtFËê>!%Wôqºt"Ip˜¾ o/¾nü7èXÿ UºÕ7Té¡/d6ˆµ’‹Ü@‡~¨:šÑH3§‘©Û€Fw M¯®Q4rJ†¦­éC}R“\,h䜋Æ|hò¤ãxßh†& 㪠Lú[SZƇÄù]÷@q3{ì*yè„«&ƒÅ­ìvýŽ­3=ïž¾Ñ\×Yã#ªW°­,­)®fà¯aPy¾)à™a,ò¥lˆˆ¤ó¾ÙïyJX „r×<39 ýùG³k¢Uàñò P4ùcAÔLOpƒS/|k Qõ€‡IZ| n µkáiN‘Eld¯ïÄŽX‰'ÈÞDT°‰ømÝʶÉ/nÉ…œv¯Rçàs„|Lœb›Yì&Š’Ôl7ù°26R|[yNkàÁ÷t½nÖuݬëºY×u³®»~t¨$Šw”~t=~ÁÎ ê¥Þ%m;ìBÙRŠnÑK)zï[±D¾Œ¢—û¦Ü_Ž}»s@ðô¶ÎÓ K¾HýM4;ÝŽY-"¦UÄÌ1 ñÝv¶»N @¾¬ WZí\IÑ«­v®¦è5V;×PôZ«k±…/ŠvF_í\=îíŒD;û|lgÂòw_ÄOP¬'ݯ‡h¼F x‚s§|0ó»þœÆoü‘¿þ}v ÖÿaÐøß ×¿=ìå§Oë=X87ðž®y:‚ñ‹‘ׂëwý±SÐ\d-¶†60ÀjÔÚí^à¸ÉÛ®=+ÏfMoE•— g¨ë¡íÿÝ´ý7M^j¹T߯»ZÞú‘ž—‡ç7.;/~>wB»·ÿ 6ØCè`-̹ 7|öï ÜÚF<ºÓS»Å÷°Ûí°¼¶ÝÞWÚ×¹= )Qé[á Vz$ÜŠeu7_¾ü-çæKÍW/ÿ¿gåÉ[6›ý¤ôLç=p4”G»Ë tÝ—»©¤Îím¼b†g€…Ü!ÔxãŠáááÒ3ÝÔÖÆ;çåÞ{øÌüºáÆ®zêÀKã]sÞúæüL2¦ºkÖ;þ ¾Äv܇åÛeXàßð(ÝÁc¥ãÛFàKzŸÇí¿DD¿,•{§Š{_…_®ûMi xȃóJ·ÿN ßá,/ìñĸîA'*á[„ºÇ˜P*ûGKÛ²¶!àÍ ?z[K>¤Œë›s¯}êÌ<( ߥóî‹Àà6ÖNHN²„káOì‹ÞA(:$QtQ´ Nd¤Ãä×&¿æ2ù5ïúótùuý‘&šÀ«?<Ádf7—ÌÖ±ÞËo€èn*=Hú,÷šÒ£¥‡C’î¥{f<JAº¤{aqIã7À_}içñw¯ùC–wiçssÝöbiçÝÁ=g!ž'$åç–ÃßqÌ(û{ÍϬä»aO»¾Èüص¡w Ôôz–uÉßò»×­gÍnbÍnf͞šÝrýhgœÅ:¬aíbïJ×BÀß÷ƒï>°÷õØÄ§s¨cvîX3M€ño ú€–Q"-£DZF‰´ ¡Áz¹PòZÄ·M¡ åYøv<“i XÈáiMtk¦ÛºµÐ­•nEºM§Û,ºm‚>áÖ_ÜœCÀ†èݺm¥Û6ºí ÛNºí¢Ûnºía76¶/æ Ôa#¶„¡wg+5u+ ÃàÓÖÛXøŽœ‡Nü;B*”n»è¶›n{è¶—n«#,{ ܶײí/,vE˜`=ÝzèÖG·~ºm ÛþË8b‡à6X,SùGèv”nÇèvœn'è6@ lŒBZçÆì›¨èAºm¦ÛݶÐm+ݶÑmÝvÒmvËœ“Cææ°Ìy„Õ6ºµÓm>Ý:è¶€nVòRŠn¢[3ݦЭ…n­t[Hµ/¢ÚSíK¨è¥t[F·åt[A·•tÛKÙ÷ ¤ì‡è]™nGèv”nÇèvœn'xjðÑ­H-šNHžE-šMàΡÛ\ºÍ£[ÝÚé6Ÿnt[@·]Òún*sO„´¾—ÓÝÒíÝÊt;B·£t;F·ãt[Mü³†Ú¾–ø§‹Z´žn=të£[?Ý6Ðm€név»Èy_ƒr•7ót}?ÒÅ~ôÕÁùÀ}_áßêZR‡“ e®™ÊBÚ_ËXpjäšXYûÑÕøÉ?"å6cé~¦ðÌT’žÈ~¦=´°Õy†Ÿi­°öGža¦BoØÜ†¯Èƒ’|Jƒj?×㳌û›q–1@0€SéU¿1ò„SéF‚ü¦ÈÔ$¹ÏÊ& ÎMç‚s4üem/Ocp–ë±Aµ¿Øý°~i; ßo(SŸÍ‡‡þâ‚“øQâù¦fvå¾mû†÷mÛg%-b¯÷=°ïyþ¸de'Ñ£»²ùjEFÈVÇJ]…_ã©èŸÜµï¡'ï¯{òW,?Ó¶± ½;÷=°w瓇ù/o¼ö$íŒd7ò‡m{> ØAF¸8•æË~ÐÇ}€92„, yæ|Þ)ÂY|>!¼GôÌQPQ¶Ù®«ŸòËOs=Ó’m¿¢û,7EAëÎ0)h(FAC61o"7qtD7…A ]’¯º]Ý\&èæ'“Ý|ûH7‹kPx,«óxWl;È- å·~À胿2û@Ø ì>´û@Ø ¬>¶ꃹ¢•£³È>ð'¡y€`»ÐU¿‘ª87ä7ä`º‰ ßD¹à„ìƒÉ é„…Þ\Á¹ ÃY òÓ#r‚§zC~ôŒNôì SH–ç7±îyåÑáaaÌçü¼z´ÙÞÕD<³:RbTCaáçàÔÁ ‡/O”Ñûã©u>ˆp@ù#Çøñ5M€ÃoZÈÀv#{û ¨àaºö/}<˜ ˜ùÛwï5v}ß—Åi™ö¸¼Õ—Å4Uƒ„ª†¾Anø›£1³¹¿ÒøÌ|%fžÓ`2óÖ3o1óPŒ™93rf† ]À¬ÿW¸íå/Ðú<ÈÈÀ¤J7+Üm&P‡8î`ÚE nQhÛ‚h;¨ÐVÆB>`€•úô𰢋òó7HZÚ÷ø4@Ú˜a²Ô †–¡ŠŽ ¸3 ÉbÇ9LéÁ¼ŽäZMî†hrwÏößL{ö;Mƒ|“>‹Tú½@b[q> {ÇžÇÍè‡H.“V|„nPr;·…¥û·O{ö± Ž …wÞ^®D³y •ÑGzo?iÁ–Ò‚7 Ô‚’ì¢|Ë)É Ê󆢅TØnJ‚s¯š{ áÜ«—OÝØœ’Ì#¾@o§¨þâk¼”ôV~‘¼—2Q»·P®­tÛFvлÔä>E |G ôcúqº H&ö0‡aMÞKM>HùæS’ʰ€š<›š|ˆ’ì¦&ï¡&ï¥&o¡&—)ɰ…À…ù,ð.|5 c³Ëßþê@Ý3àKVàwöÓÆ®Ò L²u¸& $†‚sf†»ˆºžÜþã ñ–_°"œ¡ÝÑkhzßV‡ª];ÜvÂÌ pÌÙZ˜ñ`é;lŒa—ÌaÓYxæ’lã-ß÷Ÿ ‡ˆ2‡Š³0sçÝà ¨Ùu|”CÐëä ›²â—žšÙÏq÷ÿÁÒ÷öEí€!V(%y(ìÁ¢ÂLÕ; Ʀ‰%ÚÕ6Á£X„ê:‚€W„å™K|‰,6mâ)zH¯ÙK‹NQùÞû^L=óñ€' ÁMG†‡Á|ØùK¿qÝTsÐî"û%a2*–:I-|u¢8ϵ,èÍͦÈŽDC,¸œ)¼¹šµ+ÓIÅ´|Üî<ìU¬˜—à°W¾C[öJ tTúÒœßQ\!ò®Ürå]S~$džŒÛ~4<ÌzÚϽŽwW'6õr‚¶ë‰²€È !–X”u¨^?Uò7Œƒp Áô¸íãJ&8.à`üs‚AÐ&.É^G öB9þ[¢C®;Ö-Ë¿Z”ÿ`7·PÞÇd%YV¾;ã)†­™ý(Õoù^é1ÖæÓüg;ê_÷¬ÌLX ŸIZì|µ8 ò즣 zHR€…µû¼}ó …dHÛG‰>",TÖ¼›½öàõCL¬4ÕáAÂ,ÔL½ÁV6xjÎæ"X €/'ÕŠàÅÂõ'ÀìLr¬]ëý¥9D¡NõBÖâÙüÍ”m dHüµÙðŒ­ô”§'<¦ü1Z¢ûtK8H 6“‘D ÈŽM'ø)ÝW=ºê‚nú0ÃWã-÷±B¡|›¹-†o-c=ùM†hË„§ßîAz׃sÕá_ʪ]F¬Ç1±²óF”i1¸YÀú!MõE7á?ìÇîã½Áòa_àWµ¿Y2^3e등>äÄ& úº‡°ªÒÿ°†À1Au¸ê÷ÈŒŸ7ö\'–üšÈé`ë:·2(€cáäiñ,›ãðýw†á½‰QhÞU6®›(ÎÊ)IZB7éÄ»r@ê¦UÄünNšÄ!ç ˜öcµräÒ^8GÚZÜÆ¦U lkƒ‘>a,ÿÇúž˜UáVb>Ãz¡|Ï:œ\!s\Æ´‰.®ç<pì®ñÈ̊؆§™=øD}ÕE‹hÿô £9ÎIË©y+Eóîî&u•X½%£MN#ŦÃ)”£UæàC2h&÷C÷¨¿;¤Už^1SÄ!Ùœ6‹³† ßaÇ6N+v Šò—DÆðÈÆØ‡fìƒÓàýÒ/9Æanœãë—²“7C'C¡“?@2ÖÏ[QzT(‚Z;¶s5û¾KõwÚ­Ø6‘·Bðz+J¤Œ–¿ý ÊHSó9xDåvúÊ®:;§¼²p@¢³m„WŽ]GŽ3Höî„Ð!Çÿ˜i(Q7taZEgÓyÐp+Ἠ½€»ôÿ›i/üûkÞ€Xœ„ÑCó˜9pf*Òò/„ø ¨'‡‡Ÿ¾õ|:'F_ ÁYï‚S!>J"UÔIýÇIüÜuO|üÕ¥½ ÙƒL|˜<¥{q{fý÷áè‰ õly~¹î‰Æþ,rÓ HGAÜ Ã ÌØM`m’º[Ž&Δ«@;jP¨á˜Ö_ÜZ£è ÂÝy6¬{yD@©AIî:Ç’ù¨ÑO‹I߃F…ÃR pÎdÝQpÕÎÆ®¯x´ˆ/ÁÝJƒ>Ž`ýTœÖ´³F”v?Œèƒ´ü×¼»ØXÜMk^ÝóÀ4€ÚàsŒÔ©T.̾¡øæ 0$hHÞ&Íz…ÐU\¡‰Á±¥æªOvê:ûÝÀª3:Oú]ÛÈUj{÷t3k®:ܸn“¯ú3¢ßFC ôLHx-qôö Šˆ68² ÛˆÜ Ôxã‡èX%ÐͺóÄŠ' Tk• …‰>)(”‡Þ­&6|d—ªœ<¥BoÏãnû˜N§›Ü*èt]Gæ²ZL“ªÝ ÅŽHdì¯Û?„†àô=Ý ¿ âSâ¯|ãºãædWxÂÙ^n§V€ïM‚…×\yíç“ÝÒœÄO_f_)µ¾Þ(ͼo}Ö××Í„¦?@ÀnÀ’ݽ—–[¹IÕ²õ >4ø6 *»j¶“ì8ˆÒà{ë•®úågPoj"Ç'ßZ¾YH?Y}{ÈêÛá²ú T¢é7wpP¢R˜ök¢²\&°XË@,ÿò»ÃÜ’'àœ~5Óº‰凃"kýÙ – gYE)ÏúK“ºéÜø'øBÖÃÄ ÄG‡éÈÑ))­1ÌÞ_hrš14¤,@¨›“ h>·Ÿ&r23€“™õ¿1W•ºI"’”1Ó™š‘a8µ‘Ÿƒ{”{ãмé8=mªgÒmsnàU‹üd­™=XØh›E7ßÒ㔉èÝM(|辜‡X<„¥Ð6Ÿ{ã*w‘±;øaÿ>Õ7D|§}(cžö¯;È«'¼î$¼B­´R·‹š½‡ê¤y%‡z³œWnFD¿rXû8Eê·B‘(ÚÉéa¸¯÷¾WÐÊÿ³éa**¦ j gD[ ^"zø+ß–=¼ê=Òs¢ñÆß·ÜJÈ0}‘eyI™ Ò²-(½4³í“Æ@þáO‚¡ï°ùÊ™ñš»S~5ÞX8ù¥TTƒ2n¢Œ2ã‰44¸rAt“œÞ„Á%¿ÁÕ’~9ïÇèG-æ‡Þ[ Ú¾†÷–š Þ[ ›¿:&;½äLà Oûcè½%>Fü}éðñå§|Ãác0æð1søØsø²>*VÉác¬|âtø@Ö\,_þy±Þ‘gØTÈ3òIÅÁt>ÂjƒS…gRóϹh„ïë“.x·bÒþ#Ç'hL¹oÛÞ_ÂØò=€?2£ˆ{ìUNL=‚ ±âA‚}V±w+I³5¦Óí×à ‘’^"6gõ†˜³êòM¸}Vô0®¡šÓ@ÌßkÀ¢¾Vî\^>χÃ4MƒÖÚaé~Æ'¨áÝ)]ƒ’MTË ˜3 )ÑÔ=@ˆ”è€(œ¬)ѬW‰0Xþákqý9éS)Ða‡aÈÞQÇ9iƒ°Õ·ŽsÒÁ¿¦ŽsÒa—oç¤ Â_Êì¡\{)@Áò¢×úÚØÛ·) ´ŸÚ–u²¸ÀGÒÖ>ЮÉ.²y3Êßþª‹û#s€…5•#W Ò,KE혚î&%n=©°p³¦t´êÖs¢€T×Cj'®³í]ù;°‘UêÒÿPzüâoMo¡ìÿ¢ñÎY {Žœ—ï¼ß¿êÀªŸð%9ÆÝK¥c·(ž*îï:Áz€¤<èÔ©¡N½hEv­˜µ“Òp°N[@¦©\gª‹ëøøŸÁÙõu\Ç8B‹{h“¿V½QÆ?2ã¹Ò·À}XšÂ9õžY:K®1ÿôÅæÓ? °Ukp^“êµÔªãb‰°_ôî‹zâ´E3l8È]ÐV€´u‚¬²ºë_-? ¸5BÝ—Î/Ñéö Ð^æ Sëž»ºÅ2Íæ$œƒRÝsŽ ‹eòÇz 3[¥½"_ø¡OnzžáKd++=¶²’°aDKŽÿƒƒŽ-iBn`¯Àþì#³] C9ô˜L¥ÊDÙ0›pf‚´b¾Ž[žµýÊDî@$üãuõÊGiÃILƒ_Úœ´Üyw ¦š]¤Là´®ˆ£ÄÕr)N„o¶êü Zpnâ­+”k®õ…ü'fTR¯›„éõ+ˆÁVç¥p%þê’Yº(ËQ9HÅAâg¿†³ÿ‹.ë!“8@Ñ7%AúÓF8êC~m†Ä×~0~v®¾ÓÍO¹¯ôýÒ>1F RòþA¯úåÊ‹ºiÔ¾ªÜØu³´"_÷X‰ÒR ¨Õ Í ¢˜†»Ê> ƒç¬£ ±AÞ?Üû×[JsŠbšMÞ¨¥€÷­³À7Ÿ _Ié¹OélLc¾’%Z´×µ8Z£ßYz1 T(®×±QÖ7}øù “là ð™+‘Yn øWP¬Ÿb >æÿ¼÷Ú-¨ÆÐ”<@ĶšÇg#l¦ÚÅl…óaWñˆ¯³¾™^õMÝ3dWñ˜¯Ï&Z9 Âr( pàô k% ¼P6Ôps#Ò!é¬Ëø¢Ý~Z1?HO‡è©LOGèé(=£'¬\oá”}\ݹµ‰ðÐ:@¦Å2õ𦷰—h7Êö<˜ìkÈ8¾×ÿ_3cúíDÙæ„¿Í«å²k6$,•ð÷€ ‰0 p“O3°ÿ’^Q¹ïnZ!Ëãx3uÎÍücX…įm'¯ÉOoß~.Ŷ—gîÓñF|sn|Æ›?1¦ã ŸêôNÅ¡fñØ 5ß{œ 5Ûoc2V¬˜ýñ¹S©ñÆ¿Q fÜLT#–BúÉR³H\¡Á%Ô¾Äk©m(wã´b7ŸþÀ†Ÿ-%þÙ+áúÔOƒ’°·.&…Ø’vêîn4ÍÚ¦æ}#^ºûë·im0íÚ ~eð1ðÁdÞUÃGž%`F‡ÏßJ} zB†äòÅ0±‚¬Xx›¯;ùMMwòÓÝÖ¨XÿQáSîóåûCäÇF\º\œìŶï ]® c‰îUÿì£[>]ó廃sœ•4››ãÎC¨FÀê]$çÈÑ­ïK‰žßa“Ûeëî²Å}ù`ÅGÏíÛPÓÛ²ô ޽½ó·€Aâˆi,÷TVT`k-š—faÛ«¸á‹ÛÿÊïêð¥çGDŸÍ[ŽtÖÏéŒï©-ýßLç™Õd1¿á Zì[MŸ¯øÎŒÇiåæèLyHÄ,Jè[øµÝä yÕÝÜOû)Šlv;)Fó¥ýí‚bêN2û ~ù ä’à'xÛ»^8?Á;oŸà\iÞžK~‚sÑÊ}‘æ'8Kšºg~‚ï%?Á•¶«ìô55ÒU‚¦«z²—:jÜa¸†{š!åËîé´f²–d H¤î´ºà/®¬‡·íãˆ|ˆqÕú8wÂÓXÿɧe^Lv¼¡;á¤ò@DÌpINv•ûðT|'·D Â%ÔXè›0Yâ%dS‡,#1º^®v¬Çe’µ´ÌÒ#—Iúȱ‡–>pìééšW09 $gÔÛ¼]÷ë¼8tÛM<â?¦ø]°þô š¢qOò¡>}}²[Ðoã ÿÏ#S Ôi{üáÖ?îñ×Gnݰ )Õ°õ/Íão^¤{üáA§ÇßÓW¶QçˆJê¦qÏ"‰öa¦Õ¡%¨„|æ8΋Èéçš~“¾0ÇprùÝ_HDâÎ2¸²æç‰­“•ιáãþ‰:1î3N`¥÷±Tíy%îLûÙúˆŒ†kCêðˆ7Ÿ&½íB­Ø ŠïÈ«â—xÏ€m®FNi`©‹F2èîïÇ[W?švïÞþÃÜ›‡–^8³l·¥$_kJ²ž7ô«´ô¨ë{lz¼WìÐáÛ0z©F,»›Ä¡º–«À¯öšñ›Zð¶3‘cRfÚN öÎæÜ{Zp‚ÕÙÑKÀ±‹`ÌÍÄÍd8P—‡ŠCPÍV2Õ™Ò¿j‡¬,.À3 ú™ãž1kVG_Þ{“ßÌWï4øSA‡£éVêß;åj/yx-`=7WgpªUÆóœí Îò+nfŒI] Ü(Ö°Q?ÝÍ' ˜å²ñr r2Òr`'­7Ï—F&ÎŽíR0´“`8!à  ¯ Œ@Ìj1B,ƒ­§$·)hèm~SçÝ!l1ª÷ä^-m½Xÿ¯C™Y=ªWîu˜í!òJZ"œfƒM`k±­ñÌOüD A?žøÙM§nÿ!Tœ¯Ç<K¡ž+ì¥Xš‡äpLÞjöl%°ºP„(s! Rõ6? J/Aäò§Û­B|Y¹â¢:‹A}zÂëp®±5¬;Ãé~äæBeéqi…Çaî!\£æåUú…4Vn?-×¢<·ÿäÕþˆ…5ºL^$©gQML,.ÆáoÍà¦.!Ùû¾œ¢‰ÅÃÛúN £¾ç?ÌåÏÎÿ î'í¼O,[Ä‹¥=°™ôí¥¨"²¹,€¾ïýÍëë AšÄ~G-Ywnìc¥÷ùï{€WÛ[øyHG‡„ª]…½‡oßÁÿ,º¿ `zÚ¿Z…Ÿ¤ÛSUt%ꊠêxë&ÌèÚž(L:cŠ"¤=0ÐÒW/P¸âe5äÉCwçy°ræI‡yț˙’Ëᜠ…²bæäÅ–Ú9”È™2C¨ñÆ6& „‚+‘rT¶ÒÖ‡ˆ·~AP6Õ#%"Òèk¤5žXº†wö°ÏªIK±‚“tùо©yc]‡°/Â>ÂzEPí°'OÍâýڣ›)…¤®Ñõ< ÍÍÔ„c($Ç…4´Ä}¡à0°¨òð'<Ô4Ê=4eÈsývÎc E€”ëïæ(m#”N—úãt¤Í¯?çUC[ÜÏè.Sr“5AÌA@·«®"và=ß,é¸éøçêûІ î‹×¦|ñïÙb·j3Fÿk}±pß=ˆª/x®O;ÆQ"£9et€uí)õj]»¥408W¢µýgõùÊ3M —jf€98‡`If×È$Ä—z*Îdzq¢K¯gÓ\¤çVõ°hÔžÑÁ‘G7/œÉè‡un‚µ-'IæŸÀ2œR}§=ç‘ÿZ[ÎÓL•ÝûiùþÞWˆ{¤é+AA½Ú‘3G’ÎmÀ=]_º‡WÁ¥þ÷KÑ­x-·üœâ¸—:rÏgÌû/KSGãºÿ´¸çqµ©Ö¸rÐIaH­>Ðõ‘L,q²}úoÕ÷-ÛäôµMÌÕ¹¨áxŠÏi,ÕNó×¹rþ:ç¯_£ùëüœ®vIž™cðÌÉ3sˆgŠ’‹È‹ß9Iß0üj¸þŸ¡Bd„ŒTØ~ÀãÓ]ÖÃo/[¬Rõ)$ï›ësWñüþ(3­„Á)’‘§ #?‚¼Ï&xÒ~ ®b=)ׂᱴ;ÙÐÍz=¥½Äírk)9UÜçß¶"´ç îN|U%¡åç{dMÚÝ-O§×[úé·?þNVùtTCuÂüÙöGœ>äîšÿõtÁü¯·ùæROóšç"Â& Âï ®ïßàÂPX³!úÄ aøšUϵâÙõê@…) ®þæý-¤LQ ”]’• ¯Ù|×èz†×¼'|¯\F¹(°øÕæ¢â–„ïÁ"úÿÑ!mÚØIuðor–~‚¸atþ÷#X×3_êK| ĈNK|Gøß""eôïF)±HH‰¯þ§2ˆN”ûŸ†‡‡ŸžH_øm¼ñÍð4IW£? £ j Óf;©qÏÍ=Ʊ“Ò:>]§¤MÞ$&¶-Å»p¸¦ŠƒN³·™N³C±uÁ¡˜Óì@åSÒZŠ•«ä4»ê.Óiv(æ4;sš¨|JZeÀ*9Íîg”[¾ÿŸ¥þÁøh ±²SK_7ß³ÓÓ²šñ·>ª{R¿ßyÄýßÝô}Ïa ïyËX!Oˆùäs°Gc?ÖÏ¡¿Í-廈™GÉÁÿt¥/ZI#ŽÖ^šm´î2[ ÷Ù(ܯÿ9ÛÍΘf š[Ò=˜’nŸ‚ Lί=^4·^Ùê (ür0iÉ£~ÅÆ8ˆSnÊRþ¡@v.ªZN&3‡™YlƒU|,üޥɫ%vÆk+g¶òü&òVžG‡æ<óŠ9Åœƒ‡bÎÁC1ç`ò3/ßÛÛ†‰-l‚a†Ã_‚=Eój­Q®EÍ’0ô“VeDÐe=ŒîèÝZ ioô }ÎΦëÛ"¦‰AÐIÐæ~áª|Ÿ2¼"íù1‹½vWî{°ùúXê“f‹ÖYmçÝ@÷E>›‘“ðé¤h7Ë©w3ªT¯&ÇÛ‚d„B^"¦s[k‰B,ã\És‘V»§Ý¾2ÇdŠR7舑ç1cËáëÅå°|·¸Xñp%¯ NÒ{Ó6÷’1©´¼8EXUQ¥¹òZÆÇ`ç#¾67thäç=͆4 ¦ï÷Ä?Q©G« @N|UG‘oŸDó_÷t{‡Ë‚! ¬û Wͤ/zt÷–ÈËe€ð‚ݹ)<1ëÕZÇþZìžm)^StˆÁAs­N^‰®ýµžüÔ¸¾\Êu‡¾,þ0-Ü ¼µL9TËÉrõá<êÞvѽpŒ×‚Hì¥8©#ºãn8É€èŽu7Š ;miwM7•~ÕÎU-B÷ë'ÏeZþ [Öþ>îþzP…ÿ0»JÜ}€åvܤÿë‹ ÝCÂÓ±ôÐm­j"+Ö£¯Îú«³òW]u nÐBÔÚªï’ö᳚_Ïòõužlm\÷§¾1§Û ÇoÛ ·}m784ß"N³êËg‹±¼[>ÞG < >? e¡(>4•ÿgÇY@Aå¾™äüâX7}d‰·|¢–Ô£pÛFfò8z‚ãÏ£Ï>z îKG·Ü2áfšE/âhO­fõ\",\{ù—p¥sÔa4—ŽßX&Çò»ñlˆåõ°;Ntn¼åÀ­|¢¾iPØLº5Þò°¿¿øH;ðÏÿ`ûgÂ,³›Š¢Ž…Ðu_?ÇÐõßrÔ®¨ÇuCxbzÿLb]¾sûñi¥»¦¹à±ÿpeÅ -ìør(Ç8è1¸µÁ —ÐA°¿öD°¼Š²äý§Ð³´›ªF´­¤ž%âyG-ÇÜjiÜ©ÔMµòØeÖg[kã‡pÅáG©8ÜSø÷Ô•â0X‹zÂ9Ò€0¹©?É·³uo%ûíOX σr\‹Òs–·»Éç–a`Äi›sÉ¿ÂV•˜A½ÄO¶žt¬…ŸÁTïGâƒèp€^¥ê(2þµ霊޵ ?Š­¢CÖfŠ“Mé‹åL– ÑŸqA#ÄYÙz!ÏE©ð\¾3ªìë ™Êßí‹SÝ Ecyšî‘ž¦!}í:¤½Ñ¼]­v¡­dÍGÐÆÊ²ó"kzãç<“õ]$£¹ƒ5öšÜÞtS­5/Ø$xNÓ@}¤ÏoåD!gö«QÈßO‡M#_¢'f=é9ï÷1ù”^ŠíIú—¬­×™b1ÅNÉŒ¶÷HnèªW^܃Ä9?b‰žf\6KhŽü·ÜQæ¡>}«ñ–2ù.¾þƒ€`I ßáÄáÓ—ñö§Ãdƒn*ç‰>÷¥ÐàÇf4{ÏÖ(ÅE炆¿z#˜‰D’ÀȧºÇÊÏå?ÐøÈòa0áßsõ¨¡ý”uõR¦¼‹Qu›‡£Û&8wÐè¶š Áï@ã‹wõ@#ˆ ÔxãïîsJ×ÇB÷ .z–³¢¿™›Ï´¶?Iy¾™{3ü,=vðÇ ìñ_€‚Ǥ 1 Zº"p9¬h˜¥whÔæÍ¡TCÙD²d'sy;Øihk ©œ`TñDÞXMk¥|ìmÞwöž“ÎÀPÌ]ƒÐ¶½¿0܈~9ë¥YO­ØX+,å¼–)FzPŒÜuRa;=²;=áŒ9:'Hs›YS«ÜfÖj$ÚE„µ&N¢Üé÷FŸé¦¤½ÍgŒÝ¤t7`|íñ@8ªæÍfütàOrz#©€ð“âu U¾¶Vø6­%¼tI¼t^ú$^ú/°Ô¦ŸfüÑC°ÐW¥„¾CÒžrú.^²Õ—V¢s©½7´+f¶ïŠ™ím'ÕV1}渇çÀw Ca¶ÅsH±–_é_Fƒ=„›>—C ¸vq¦ÙßñØ;uÑ-Õíd:× – ÷R20èÃÌÜygI+õ=„?ù÷ÑB îJ}ç`û¿£ísPè!ɶÌvÙ–Yä!ŠÞBÑrçà䃃ҕ8ÛA t·]&¦™ÿùolšù™OÈ]ÜI·›zΕÄö(¾Ì…½·ÆôTBÙ* $n‘ß'¤ãgð3‘[c«Lôá+1"?ñ?Èzx Œ1,TA(–ùW ÂÄN½‡ß]æ_Ôv*Ûß´š"¾iEK´.Ó"páÒÓ›ÿÇÓ¼V# (@;Ș ì cöÎ:Oxo¡y›£áÚE&ðÝ” ÙM¹öP.€dåÚK¹<—fÛ1ÓB´Â§¦$˜kö׫!f9 òMDõ+jÁ~Ø…q%繜+PèÞÍ^6kn+5E¡ ­ª5ш;&ø|p×ZM‚´ ×ø2k­ WÖÄ û¶ÝÁ=Ö ÚÒclô*ÝÇ$·XIëš×ÊpϸÑ.36¾‘d‚ï'ãûËXåÃEÁÝT®±jdµ´ÆÖ$×8ÈÐHšU¯¬•‹k„?î›^+QDE¬ Œýr:ÞcÄÐ!VŒ’¸¼Æ§Åótÿ@3`n߯ß­—i,¦•b†Š+!æ,ÓF1°M§€À±÷ öb.{ñä/Ÿ|î@KQ}뛳ќû(>rûäŒË×@i籘&–iÿkø|hÿl=oyø>=ìIà  ÂsÙ‹)˜wÿ«Y&aÈÊ—42Á¾&:d2ƒ[PèpY˜“\Öxgtyí‡ÏËûÛz×¶äÁËçyÎÝ›`ÂÅ7'ó¸±ã!¦±}£Ÿ^2y 8þFn%^®Ú½êï*¼ÿà{ÎË7~cVÊ+[Ø}òjxõÔª³äÖ²Ð3AßP¦^öËÆo4¬‡‡×-ö{x*ÑÊð2ÑøË{X4Ë õ]U^5M¦ë¡t“X†”a2eè32\žœá@íþšý Gák“g8ÿð÷¯ß²"6R¯…$,;Ë~ÿ«6Ý‚iÏbE…¼¹ûŽý&#¬)O_ñÔM¿êÁU¯ÔЉð4u‹.Æjˆ*÷Z5ç W£µž`ÛE·õA(¥I {s=JÁ!BƒÐÐù£ÐпQohè[È"v“˜Pª8H`Í0H0aLþLL“ÓrÔ¥Pföà©å÷üóV¬¢èá“ €þâô¶ƒ¿ÝLÆôwðB²)àä€"a è¦³)p ãÊr6,.N)~ŸFO wû53Gùæƒ.¥£ie¿fZ)÷ýÐTÁÁ.àDS›K”¾¯oÖeó„5, ›' ÙÂ|Çîìåëö×Ié>˜¦¡ç˜T'ŸP§Ù »Ñ¾‰>“‡~‘³t{‘ižêW5ôk¹Ï{¯å6˜`GÞi›·|ÇÊ×N¤O© î27©2M¯–&qäÜzÕ̼+ÿªÁwë1|û*Óôyiºž\9oæGÞ•ÿÊÜŠ_£]7¼2ϰWîhAUéý̽0Èl'å1_®Ýí‰=~ÇýÆ®CæúM&¢ ž€›o‘¾vcòêhÃ8y*>+tjžtüóÏ»ðb¾MM1ߦæX?Kw@¥Ó :åÞ°ó³L»ÿ¿Qî 3ÀDŸÇ%Y··Ï4>RIßMì–‡/€qªž.Ž] [Ä;ðö¼ 7°$l¥õîQi½ã‡ÀÆ HþŒqÆ/Dõ‚ƒõÂZ—2ÆpsÓÍPlsÿ†ÅGëc_Ù"´ÇŒÏZ§³îàV–rï/Á]Wz52 ¹÷À^:¿JÓßô*H *ó"MeÎ3>¹=ò”U¾Fåêß±e¢ç:–˜ëÄwå DT £[ü½OtEG™$掙Rþ™ô_žœò¡Ìnª™ ?º¬à‹¤ž»õÜåஊnm)–s6“1 8¤1é…±Éóùè·Ä´—½§Ö —’†¼œðdý·XØÈz0'êt‹‹X±¤ e£CÆå'–c)@\ë¾½NÔÄÄQ±ün¸³î¤Õ­´ò¿€jÝ%½v¡Þû Èe\?»&æt³[˜Ê÷ÔÇ·ÿ.%Ý#Ö°öÊ4 §rgz\¹y€çB½Ú0D\F;éáÁó fkÉá¼5öƒP£áZ´oµ¿v*Ÿ›x´`oééíÿ¡ÃÁr8€eZ+*æpá‚·€ûcÔ×ÿ x.„Ö»M9£wÏÀÇÉümsNYC§ä¬žnÊyÂ:…˜øj| …¥nÍ©/©Â&µ+ªIL›EÀ)b8b’FTÞñ—´ö-l¤Yà'Ð$Ðü4kx?|Ä¿;^(½UæèžÔxWôŽ{fR=B/lÿÒ Æw6çþöÍ œpœÅ¸žÞ¸ë–±un8Ð÷:½qvßKèôÆÎÙ ú¢' í-ƒ[ç}Qç=ðͲƒä~Q¤Ãgà†+~O›Ï÷Þ´ ¿ÈãpwçQ¦Š½¾mÀâØ@ƒÚÈï•é‹’ÚÈÀVZ“Hm”ÉOÄ#s{nÂ~,öæ¶Phzo®,‘Ÿ™Ç×6ºŠ‡ê±¤¥­tŠÞÜ£W:»²éÀËWåÙܽÜÛvœ%]Üx×¼¿ƒYxé8›ÖÏ;Þ›{¤‘½½¿÷ºg¤Ë©«½!f‡é—Næ#[:#AEsYepVߨ7Ë‹óî*P)íìåü»ð$‡5Åö°½]D#åšâ±”E,»«ž"V”·ôúˆ\Ýý˜õCÙ÷„–Žù ɹJÔÈsµ'wý*lÅÞÉ+)4½wòq¡÷ãÑ‚·µQG.ŠðËó„—кߊHyÔ¬¤¯»À)„0]÷Åàh1DÓ£¡âBJGöò§•¬Ñl~É’€uQ»2f&ãïÂâyö ±Ç^°.ÿk/O@\X;=„ŽŠØ™zð?Ðö_캇BÓ{§F›åz@Ò ÆÉØßy—Ÿí6&‚ILC20ÉF’7Y‚ÚÜÚL @)wõÜÿœ†íbïÕ-šÎ¦X8ά)¶±à! .èþÒs°I•¨Ò?Üû¾ã JFü"þGüáÞÂ#,P³ÿ\au-gâ(•úI9é VKR¿µ@±í,vþ­Hê¬×W©ßš§·KX’ú­õ±¢ü­OiŸÞÖL˜&²/ÿ§ û½šÞMÄt_Áß”>ˆ”ÎñdO éÉ£ÍHâk’ÉÚ@×õdÒQ´}o gßÇ}“bæ“êSöA\Ã8þ¢rŸI14ˆ·ÿ—§ sÿ éHÚ³Š‰"Î>ÏeËD1Ì´0@+ÓwrX eá†!¬öµžü>Ê>ù®7Hùâ˜ZÉäžÿâ›[KM›N q[‹yX›ÞZôà6/ÑÅ‘ÖÁ—ߺ·¥£ª=XŒh%šÐ;g/ÿ¬(ßNI»¥á\]XÕ;ðAœ`Ã"i”ƪˆžà âŸ~Ê÷ÂA„‡ ²«nãS#:<*’É‘IÃòŽOùÕš8„NdÙ9îj&TPßï‘}¿“÷½˜E"ª4F IÛ!qôP¾A(Àçr ñÕÃñµ&ßåGî‰ý»xPÉ/`ÑÐö`ïë%=ˆ#¹åj ¢ táo|Ò‰6Ö*¨’,å'?‰[¦yßÑšx­‰—åšx'ZK´ÍD‘Þåæ*jð©F]™émhÙ„øfÒ§i“t›7óAWÿæ }Ѻ…ýµ²¿YìÏÔL¥Øà&ÅÛ. f·—o\ghÓb­R3!nMúp£Ò¡…‘°a©xÑ&).Wà¾6°ôàˆuX³¢F,â³ðŒ tKKü0c¾³°¸‚Åðs»(f k}‰„šÒ|HÀCy{pxÜ5·Dç!ßú‹ÕÁ…h‹Åî‹Ù} »/c÷åì¾’ÝW——vëÛb‰USã·&}@2¾ªÜ$¸j#!õí\Õ·©Í2yÞ­¨]$ºuK§¹iklÒÖØ>¤!{’ i3Ò1 p™¬F‹ê¨ &oÔ= Tó%M|-˜z¤^‚ A–ëh=îÍ$N๷aÞ—Îþ'C¹ŽÐƨè àJ?X¤Tá¥,öÅ®è&Zá—ÚB 5!ŠæÞŽÄµ˜u ë vŸÏî Ø}!»/f÷%쾌ݗ³ûJv_]®ýòá±zɇÇhuèx½äÃãÔæõ’!NÌ1ž™Êþ%1Ä­þ q¬eÇ8XsÔЖ¥Ãn½ˆëgåÅף…f¤ËŒíc?m¼á½ù¨Ñ)‡„!iV­úxñùÅÇ<@.Ò… êø„½¸7ö“ 5e7ßRö,ò‘M‡ÏAã#¨´(ûboÃbà¢oÁ7lpiHã¾î·z÷F¥FòÈ[uô¶IDÜ|s˜Hº©êîåëOtž 4¾•ˆ|4 å·Cag¨Â„ýtnwj¼«ù­`ÑñŸê|ÊøÎ ¶“ll{ÅÎOsh˜Máúq5Û´ãjwœs¸ðËŠ»0†¾Æ°ÂO‰¿÷Ïxø“=߹𯝽9žá Ïgº‚ð}3¾ÇÞ—Åû#ü} È_^`Ä <&‡û:·×΀ 'rjsD;„·åd£ãçUˆO‡‡]Ø ðc†“pÖž˜s•û¹sE㟻ý§‘·îÛ«.î<6vägõÝïƒMùqý pÄoÖÍ(OÀ f?Áw±ÒMÈ(ý,¢ÀQØm°ýÙG/xúõ΀º½ Vòþú+¨Ò€@†ˆ@VòïZàÂÕÛ¾à¼\ž|ˆ´L-Gßb8%ºLf<7vƒà®ŽvT¼$¹„)ñ¹/3ªËmÝŒbšqD”on¤â§ˆâQñ-vñDPX4Ìò?CÑÚÉcÚôKW€ºlÈš~aÏ3AÞyÏD8«FûA$>ö—g|Ï[‹Ex~lûð´g»à×0ñè¼ëKB?ÚF¡YÝÄ,ÝO¢ÞæÇB"!a0ý½ƒ(™ E1í$¥Uy“ÍFÙ·’{‘qe¼­¼d/&IÛ&âÆ d:¸sûDÖžÝd(;Ÿš+ Áûe–ƒ”¥Yf9DYšd–2e9(³¡,-2ËQÊ2Ef9FYÉ,€ÐΟ2OPæmòЪm”yGNxï Ì{å±G{)K„R VE"ò&1BK³q)å/OÈM›ºÃ¬6 1bm*²ÕžŠ ±šŠˆSEi*Òôe¡ƒä¿Ì•&.æAkÚ+˜ï!p™•‚\þè߇£Æ|ø¤^¬L/B/VG¢ ­„”ã…_ZIÇ—¹V¢)P 66Ÿ°åG?†ä¡ÚÚÆ‡âW^`Cê\¾•Bn|˜GóšbW* ¬je6\R„ÚÛ°xï;àûÀÞÌà§umÊá’!\†Ùß4 …˜A¼ü|–.L§áî?ßœS+Š]ôns?þA– ¿ŸÞÕ[ˆŒ;õ¤v',(ô}ßÃ|QøÚÿ…X“œ”ÁþôþU†!åkqÃÓ[VUmxJ8jË0¾æ¼¯iTIû.*³ÍmƒJr&!Ôr†×åŒz¹uy^ù3+}±-œƒx%©ÄÝ:Jßxå§ø“Öò->óý{ˆÒ_ª­{•mSç®4Qª¾Jé¶M=õa_HQŸ7Ñø r<$yZâbµå3ÑóqŒþ»_£[€FꜾ{IFô\¹ËŽ‹è½Òx/ü0Q iÊÅg^,[›ÊF# Ìâøi· îwÿR²¥\~òº{¹—Yƒ$³i<™¸³f”êÖ!pLa’¾—Ždøkq%i-!Íq/öjÚ‹ÝOƒôÁâ‚·¢á@Ñ_\â6µ"M3…!ÅpypqˆE#L[é ‰[‹K(~§LNH—†¡ö²-ô´Œn‡(Ò£2—Sö2e‡6ÀvzÑá|}ô<ÐEþeúö4àŽ"úÐEWHž¥ô½‰£”¸‡í£±¯Ÿ>‹y„< 6Ð 'hî`-£|)ßFJ¹ŸRÞê»Ó7QÊC”r¶‰š»™ÊÜKe ÀB±|É}P à\Øjáád D Óë·²Ûõ;æ1Eüž¾¾¾ë ÐçhÑ` é6,ÙFÝ} ›¯Í˽÷ð™ùuÃ7œ ]ÏBJå}®ã4ÑŠ.DÏì¢è{¯aX(øjÓ-îS*=¦ôͤ{¡Û,_5)ÿî¿  ð êûGXšùu‰4m:öŒ3²jƒ<ð6üâÙ£|¶4ãÁ×oÿ!LrzbþNaañ>䩹kÙãŽR8½9HÂïˆL|Ì…›‡ã¦sÀ¿Ûæ79ÁǤûÚ­¥kŽÂéØ÷ÞvÝ/º©`VïMðµŒö3Ì@©OtEóˆ—âSs{zò9püÚµš%}©óž¨sR!©oò|zãKhŸ€l˜á¾æ¢hâQÂÓ11žta?.æ‘]„Ö4ÐhÁÚØJ=ÓÌÒ tSÊÿøÛ9<ÇK¾K yÔ¿› ¯ ·äkóúGê¾]' ÷ömÛ÷ƒ}ìýá¾ÀÇ­?<£tò@×x±÷øjûÞÿ¦WúÙ|ÁõW‘ÿpÆ8b—¨"¶ó"`õ_û6:¿òÀ^iÅ Âò¶Ro B7µØŽ â¿7qk¼ñ+'qË3ù›Kto¼q˜MÅÊ_{+{é›1R7c¤nÆH×ïöFáuý‘­‹?W0þ\Éøs5ãÏ5Œ©·AôðjܳÈno›ˆ“`LÛÒ¶Ês&âU ×”°<ð™ÿèXìµÆ®Ã$-—ÈcÒà™e]ê{┯¥$A—aI½bå_Nù¥¾Ͻ Û¾&Ï¢Tó­”³µ¤>&ý{¦ u|ÁrÔzWp8@+Ä• Ä•âj"¬ltk8t«ž{'üšÃ56tŸÝ¯ÿ•ïiÂÁ²–`éò¹b6ˆAØ$É9v±S z|S×…çÞ\ó×ù|¦JÜ9Üštåá73Š$ªÙZ¼É§©+î™+òÚ€÷`KÀxtæa¼ÅODêØÉùàöæ`Å=€#(k`H¤³3ðe/Dïb=HÚ}Æé@™KWbIš›—j·øÒIlIxÓÛüùnŠï-ìå¢,+pˆ _<è'ø™´~¢kVaÿŠQÄ=YŸ¦¥G(Œöh-¡Ò, Ä>ð¥t(@FÚ„oü0,L©Á²géÆ?ñ¶„÷½ØÃ¸„`© €­ÄA]ÄA´spÀrN,f9åZA¹`¿Þ ʵ’rÁ~=–›î@°±‡øÎÁ!Ä>SzS¿bÝn#ò ®乕£Ÿƒ [Cõ¬UЭ%èºt]”k½‚n=åêQÐA°ü¡­àÃæ—8H=ØûÛác¬º§­D`‚³¬DôzDô7´ÏCò®_%ù&"¦M¤AÁ…„Y)úÛ7|”4öåH¥,Íâ“n¤¤½@$Ó^à‰Ôj,—¸C§[`‘_G\óé§"ú¨ˆ~R€údV( Ù£·ði.šýG{ß´zéžíÿë:áô”ýÜ%}íÐ@]þþ¿‘‡t¼y ¿ƒó¢5 !€™ê ³6àBäÇvÂva¶YîÓ,õì›4G09ÌY4ÜMŽÌS³gÚ‰fÔÔéTê,$«ë‰íîáçD%pÇòx 1÷û‰!‰>u‚¥¼qW÷ï½jgãºÏyò4ßû"<±TîzWµuW]Á‘¹ýlóáË*Û<À&âPζ²Ûá+B¡ÿõPf¤”鄚6âÏ" íæß±@rkVçpÂ6¾/ÒŠE‰^tžœÝxÃψ–H#Öb„¥Ä’Ý{ˆÝ5#Ö2Ê¿œòK#2~®íëÒˆ•´hh˜dvºÈQóÜ÷úš8)ÄÄI'J8€­È`+BáÃ3} :ƒÁHùì®YŠÐ­UЭ%èºt]ÝzÝz‚®GAg ˜£‚N™³žü36j>ð†áaør cÛ/ƒ=7Gÿ=$ø¨#GZ±Ù=1Ê\©ÄÔâQülÏ©àÃTwméšýÀ÷â&Gé3ºs±$0—(¹CÊI]÷¹ÃÇ~NÀm´ PõíRÖ¶SÎE2ç"$ùǃQt!'ô¡b{éopº‚XˆÜ(%1û¦ÛJõn4„'ðCóµn® ²©¬¯ é>þ—°™Þ‚Ñy3¤}ùgÛœcì†E6ß ^ü$@ß¾ŸM{Ê3ÑÇLƒ[ß‚ ÁÉÇ­`hÞ%ªíÇòH.B!úðpW«G®°j¯Â°…²¿€gv“ºêÑÆ®F@Hø3ßÐÚÊñ­WÒ‹—|Ý¡g=AÞÁæ¯|·©Å”ã¡1Q޳ž%ïÐû–˜¼>ãõ¡¯ؼ.< ‘áš3m L0¬Ëƒ+~ú§Œá÷þŽ:ñàIu>âMDÓ;Ñtš$hkhëÇ„=ˆ‹“¤h¼³ùò >tlD´!d2£²ëOB^Nhjd„¦ *Cö "M'¡åÖº&£ ´ÿÄO†bãÉPl<°ÇÑ‹Hh ¿V]/CžìEu0ô¥bNņbS±¡1™Šâ» ]ÌíƒW+B{ü$žŸyÛO¨Ö!n´ïv+…úb×ù­5úˆËm>é‹!é‹ðHÚ¯ÏõžÒwú“eQõN’Ô7i’eæ‡r?DŸ&\,ÊÝM¯wR~(¦·åz†Ç=ÎB¸=Ê·YÍxŸ·+«å^‡ÜÊ«ÚãKoéÞæÏt÷4¯é Mº¦·ð`ØÁcã- ð¡ÒnjèûŸ $ xØä~ÑâEö¸õnîî/@9W=¾êânsûA8¿ïT/w–£­L<|9žPòUO5®+Æ8 ܾíÁ ßžç‰©®5". FÝ(Hlt{·$£^ð.cD.Ý+ˆV V ŒÐX¡ÕXcƒÁ²J£½[+ÿÈ`YY{€è·aµ˜W dÖ(1F{·îÿCƼ_¿Š·‘`ü÷“âü[t>¡ós‰ÆÑµÏt9èK·Òº Ôxã±ø!9àënâ+â– ŠÃHËÒx »¨àlRÏv`³Xÿºí븙’oÆGIB‡‡ÑtŒò‡¯ÊѨ¼µ‹ „1.€o/ Z@…µ 8.~ 1.mìÖ¥ .}lç«(â›ÄǼc¾ÔüÄxÉgÊGx±ÏPÂ#‚qÓkÌø|Õ“1î?ÁþjˆWñÓA,‹)ŠÝ](.º)ãòïd\»{U¡480µùðgPÉUeyÊ´0Ú̬ ¸ýö€›‰™%ŒŽ™%,üƒqdf9¸î”i©Eý×;áû¯6øš&ÿÑã¾e.9&†ÓËQIÎG‘œoUß? ‡m<”9«((ÖoÿèSp4$«³sÛpcÏÿgî룫º®;ß}áOqE,;²-ÌËŠTäe¹Æ]ˆphŒ™È)Ó’ í°:¦kÜF¤LC T"ææéÅj–œ®7­ÓESf–X ,ƒ¾°z˜$nú0ÔÁ1c˜óÛ¿}νï!Óñ¬Õ?´Î»W÷ž»Ï9û{ï³Ï_!†5j>gÓåP]ëñ”ªt(,Æ^ Ä+§()|˜>£@öûRJû ,‰ ö/ðÌGº+ls%Ïx”JŽÐlá‡ûÃ'b†P> á ºWqp|†@ž¿ g‰yןNPj”»-í0ˆ(߀ù™²'Qàþ–‡å­>í³Œ~kð{î;:ÜÐÊ} ‡8’%á^° ®V’ê¾z†CKZ÷U•u_U‡ÜWéhà¿IGC3Ø*C}qÕGÃ_=]ô îq3'[>1d{ØâüÄ:ãƒÝô6xctŒØ‡¬÷§Qï 3úäBPWÔBšB¦E4øëdqK´jQƾ/Ë?žG•Æp´oª*Zªÿ¡¡Ï9d—Ò×™OØùYLŒ>2³oÕ*ÅO3Üõ{™,Ý$FÓÎ#–&ÂT;o@µx¾â”úa¦Çªh }. “Þº,…geN@gj”Røt9 ¤¤i Ò÷Y3XöÝaO²ØC©–йo‘íý\æE>´Ào^äC ,×èCsÉ*–—Œ÷ÄçE1yTá´î³Ïí.å¹Ö}F;ZsÀhR §}ÿM'ïXÀdçÀ wÞ-~˜Á%7¬ÙðoÍóOg:Ó–„´ßà|FúÏIC½§ ¶)ú?¼¤õHŽf–¦Í4¥›2kÒ«3+ÓkÖ 0Ù¿þ,@R±ÉŒtÛÊtÕ3º×@<ì'] ÕJz.K›Èóï„Iß;(¥ûµÍçÎb¶æ›Ç?·öKC0Ÿ#\SüfžNkúˆid¯ç´vùó0¢þÑÏØ÷€ú†á¶Ê ‡È]Æ}¸îGÌG^¬Œ1€*Œø SB°½ö É?òÊC kå˜ZfùU¾¤‘yVŒ'¤Û·ue³ ¢jtÈámt×…Ž[™$ð^‘Ö2¥ånÜ+S„˜{žqg$6G"XÍ›H´@<õL„åþÌ‘Ír?Ÿ“Ù5ß­¤æWøiFr{_óÏ<Ãø~_»{¤§’Í F"ˆö”9{óãò_* n¶;ù¹µoúïä™ï57"µ`V‡8?ê´O¾T(‚±w}Õ\ÕX¸›³„»†pW wm1Ü_RŸªˆž—I4xÊ |'G‹á¶P+X9ËŠjú°gåWTê¹u¤ö~h­j%ë¸ùáu´V‰\"koþn–ª -¦Î`Ë¢n17qRê9)3B“BŠ´â›˜”ï¤Ú{¾Óü oÃ;«þÈñïë]Ô_¿¤è9È/¯,_åZ¶‘ øo¹?²™ƒ» ú/ú%Ðÿn†õþpú»è…±AWp‘ÝQ x@—æ^KßJ¶Í}•>]•€sÃ%¡`#`=| ¬é Gä™GÞ âGd]8øyž¹ËÁìÓÈVW%Ñâ@$À>t¨'R—”s"ª—Bov*E®c|ÕG5{aK8ùG~tH?ÙE§@0£Ì]ùDäG“’ùNa¾öÑL‹ô9A{&ïí|9I0ùàÚÿm£r=ØgÏÌì}ìa··)âR¨$¡D¢ˆ†0„ Óp6<—ŸêØ©ü—N}FÖïµðþâ½æžJ'ÕŠ‘ƒ6õD?O:xЍ”eF¨ÔÚešá$´‹‹iM…;úPE 3qì9É(úM+°öhŽõÔ   ¯×H—¾^ƒD!# Ë0¬0°Òêõ‚c¥ù¬?{é¿G®Êßù(ú[>±Î@ Þá®å²–¾l¶žQæ=ß–بprJ÷¯Öï©6¯!<úRž‰|ž‚ßTü8Šá﫟ZUÚ¿Dq÷§¹ñ¼H ùÑaS{¶qÁ×)ÞÞɸFÔÀ¯·°YÀ¾ÄC8$#X,›1sÚz˜3é/¢dègõ{‹9ðNBÚHCksL^mtȃ8ºd$‹SdÕ"ο˜~qbj±FtàÒº‡.°Ú!õTÎlú5íÿñ;üÿZu%ÙÿÇ‹ÿŸÚðÑ"ù¢l)ð ¼0¯ÌŸà¢šf@Çöê(²xG¾6:ÒrvôvsÑg.ÊOöë7mÍÉ^c·á¶Ú‹Ï$•–c³ÄvÓïS;DÝݤêc”êã×Ê,ö‚Ô@¸‚:•;ÁÏžPܡҧƒ+ôÎã¬(ïBž^‹‘Í ˜ œj~PMÞj]<þº¸<õ­±ñ_µ8è\n# ª0„üªªŸnæmçW•Ü…ÄÆ}(~Õ)|µ¡°h®1ù?5&¿Œ'rżc:æ|®løVYP¡Ÿ>¸˜â8`ªCþONq‹n®Ê§¸µ7W•Sh? ÷Œ/¸h¤·Y^-æU9¯–\¤[òË×÷W3(ˆO¬ï•Uá¶Ø:a\.,ñ †%¶ùÕË¿ÔñÎ¥òà =F ¢˜Ò™D¿6VöÖ4jè â˜ãÛÃÚ¨=£=CÞ†‰ Xœî|›ë•‹’%›|Äšc“´lRø:6zŽ 7A:ha—„9¦vé)¤áo"7nçGÖÅ«Ü@6›ÈØ}ÎÜAbT›ÝV¿;èͦpìÎxç¤ä‰œ$ »3Ò)eÓqá? rZ_ ìj:^ÿšY¸M"gÙóSÑÀñŠŒYd%[òó e«dx+8 ü7[6¤éþþ ²rDC<ÐârðŸÇŒœWÍ”~Yô‹°&ªéÃÝ­é¸ µB É¢6žTç&·ž“XGäØ Ùu”>’XÑë2°dë¾Õ{÷zóo¹qlh™Åá?T‚V÷_H/ƈ=ô!üôwª=Ô|ÁK=ÙßüsoÉԆïÇlÑ(æ)ZÕM Ǩ¬•‚:Êô“²þ] µµÞí11FBÌàÎyA`LÃ¥ûÿø„^Nb£PÈZ%›Ë?òË(åša~o¦µe Æ!Žèø¾X‹ ¬B½ö³mß¹rE¼ òœrïœùßFùs”­‡»0ã×­9… O~îöNœè5Þ±çXsµMØyEˆ?þé¨:º1*£ù‹‚7a œù¶ã/o«oÀ³C!˜R¢ÿYB0ݱ”éÂ&¾vYX V•€Ù,ƒ5v!¶ê¬½¢ ,róh¯?ê~¤¢4Ó^‡÷Q º|EÚÿ*ÖJÒ¦÷ ßïµxÿôW"xK&ŠaD›GëUN¹°· Vç^—ÛtõZ. öh”È)9uoäTSI¢×õÇÇïâ« …üâ·È‚¢iï©D¶¬Íçî6‚ØÎ ’­äÕ¼I‰ÿMà ‚M!áêÝFaÃŒZdØdæ&ÿáÒìI[Ñ!©{5£—ó_k¿çRƒ½ 5¸>jë‘Õ“4¹—š5W„Ó ÷bˆAòÅ•|ñ)÷âSòâß_ülþÏWÛùê&÷ê&¾zɽzI^ýÉç_ Ûô"Ôs#1ÅBPúDZ‹ãˆØ÷!Kv}Z˜1ûüZ;¨çÇ„ ñ°zrëñ˜êÐË(ÚØèN‰eÔ¨e·ÆKÕÎ5€Il•„ͲÞ}Ì­S>ÕmèjäX—°ÑýbËØÈVC®©õötp6/à`øÁóCSFíÄvpb;ƘØ,7HÚ¬£NÞùÞ+·û£¦‹sv;8cÌc–nNM­0!„@[–?ëÜÍ’4';QùœÌd§u¤ë’@Üf5?#|LðÏö"™2Ô13Ñ™½©ì?Q m/QBÛɼsšûw(¡ë:¯O ½:5¢Î2øOÖc¹°5ÝÛ¹”ƒ…©#)-˜Ævޱm.Þî:Èß=åyuñn@83Ô¥÷Ùilçù‡°ðûÏöNyÅ/¤¶î…½Ýk>߯ÀÁÝC‘¡‹J ZZ]D±ý(¬¤[)K¦"´ÍÉš½â\„ÛÃ;X{0µõ¢î„òßÈhýÑ-ÀilR[÷Çt«&|©‚¯«"^~ÑZ”$háÈ·‘8Z zGd íÚ¨|«,ª–­?t~È~Êî …94y)Qçï;ÿ¢¿wÊQ7ú#âß¡¯æÐÛìл<ç$r±Ð ùkd5𙃺—G—Hn;tŧð‚ŽeÛŸÚzŒ‚‹&¹7Gýwæûï6‚W7®¿$‡›Hàp+?ã «ååWx‹Ö] Ær”ÂüÎgõ{kÿ.£t/‡£©ñÏ8fï&ÕytÓ­ˆFƒó$žƒ ýߟ½PìéCO¿S{zn0˧ì}ìQ>± ÄðZ†¢ÈßÓû‹¨w¨öPjë ²´ îüÃïWfióÃ¥ï×b¤ðÏÖ¾6ÏØ[,Ïf0ôàcÓw„z-duó_@¯}µ}©­/»ÍÓm¡n©ÎQþ6µÿ}šaÌT™¥\FqBú#®œMý’|?äv Lc´ÒLÆÄm¦1H2!¤¶Ò\wmaŽ¿wZ·°Rœ ½·>æÂTùxe†á+)«v0Æd2 PžˆOùÜèÉÞ|UeóžägZûœêç„‚PÕ‚–F”Í{¤Á—R[OãØùÄ´‘Ot™IËçl¾™¤¡•¥ í+LÛ—OÈãÓà—ønê»=ßmþWÏØ%í½Í?õÆlú¼ÿJ>~—öQqWqgºW¬"]ø :ëµÝ%NŽïJôþ9íjߪ§]üU3Ãý2ö}š ì÷öeoô57­JñêÂk_Aç™Æôj"@>þøÀwRßfòÅs©'ñ‰ o4=Ñm=/ù¯ø£^![à UÕ]þôtáo¿B@·…ý¶Ê^­ÚŸ±[N¦‘‰*ÓH§q7¶Y¡qYô¦÷†’Y¦, ¬â¢Pû¦3XßÚÏ,!/½"æÛm- äÜšø®S«ÿ¨¾tÖ Ëôs|²›O¾Í'Oéç÷9xú/¢}Š)ÊÇcaÄ^ 3´ÔÖ>¹»”è¾Ü¡»‡ãÒgvFO^˜ÆX–ƨå½^u¿æ«<ÅyºGMDä¥0Å¿™^oLå0ò: ˜’`'ˆæ3[T)Ÿîû!õ.`¯ÓéÀÇU¾qpTsO‘³ü}ªS¸4øÃYMs5Oá=(NžŒq#Çèï™Ö)z1 Åôþ«Ôe³ØÐ^äõ|¾aÏ(øÞà4jx©­ýf& ìDö`ãËŠÚ1'ÆL:ÙëôŽ>´ö-MŸÍð»ù¥RlpÍÑ^ÝÈ™6(Ót‹$"ìéß@6ÇeωQCp¨#Á~ÊêÇ»¹Ñb3Êú"i:U¬j §1!˜N…fKዟ““Ô÷ÔEUGk™ù¬efmý²¹­_>—¶þ3}s±ñfe.]9W­bSÍ&ͦ†M›z6ÓÙÌ`Ó2[zßhš¦÷e(­8[ k›-´³ÙÄ&Çæ)6›ÙlaÓÁf›N6]lºÙôà3Õö€ù½Kìäîô ùý¬x :Òøè›#l†ÙŒ°9¥0Í•Žrseþžš+ó·™ãÚ¦ƒÍ66lºæÊú¡h%רœ'Q5O´zÙç<Î#›:6õl¦³™Áf›9lL“½sN¯á7ÝéãÌj‰¹w’çKÿ{i¼ãX!|Õ/qhÂ8Á}Æñ %J—¦“LqCÅ«)/’½Ðt¸óæ‚H‰Ì·2E27I/>óЪ6ŸñVu[>˜Q‚fÃsMéì ŸÉHtÕ¿É–°Wÿ‚y5*¾Žû‚NL ÈDÁûÏžz d+ÿÇ”fuEZÒñûä&&Êf‚c¶ìF38Õ³8ǘ2›S óÖj×"yÍvô6Û§=àÁÎHbýêäÀÞO 3ˆ¾éBÉüüȉÓÆô£9I°I?ÂOä×çç—#K)‰Ü£?‹ç‡ÏD%çh±þ¿E~Ñ̽¨±}F¿„?†ó ‘~‚#Áp>΄þ’ÍB9ç² %I@•øµ¶')¾X¦BL4µ«l¾€µÏ{1ß—(§¿õf?ÿŽnblJФ”R@ œZhzH¼k«Íÿv™Õ4xÕ)º3Y“¸Wvç+FìÍ|£é¶æ÷Æ­JN^¹¬²×ž°Õ¨ð¤áµh`ų¸òº¤PI…43iβ/#Ì-‰ÏûAñ{q»S?“‚&øÔ«ÝÔýp)rîµÞv‹ˆ‰Hÿ\ëx4®²cĘ́]@Q-a­?hN7¡Ï¢mÏR–xjt¬Ç÷kW…Uh('>ŠZ^0EO'ªúx^g›\N¼­§±~[.'W÷ñøÎvÎR…Û/{ÝtWe¦$ûù‚.Þ—"T7Àw¤žc­4†Nç,ÌÞoóö2­2`æÆSW ‰ø.¹"Lœž€h>qúO(0e^÷ÛÁŸöß‘âv(•9·dvá{@~Fü‡rª=†¾[¨™ÉdÅ'-^+%Á˜AÐùKSž÷_{äÅÖõߨ1Íp«±’ÉòˆO²Ñªk0apôÀ£go6yÁJ #€¯Cí¿VyEÍ#äÈ;mb¢£•‹%/ÐpPFF½¬0uï6΃4žZDæˆv+v»†I#èœ;ŒñËàË£œ ÙÜ%±nîú³–ß$åU™Zwn|’´&Çuœø”L¼Ì†æä­ãñâ^EN œ¤6§FTž>ƒ¬Ä`A+KÒž>&‰{Ä2ú8±àb«9áa)ŒŒÔ#Ɉ-¸îÓ*Hv}–>šd ¤(ü¿¿ ÔQ[÷Ù€#Tè–Ú˜}È-œ§Ž ª¡âÖ˜ð¬B/xÀlqaB è!-åÓR{€•c3ü2J1ÉiCiÈ)¦Ê³ÅTùz1Už#UÊH‰G¨'Þ%™ŸË®î1ÖB™ù+·»Á+X£1]YØ•Žþ¸œCÉ2SXØ»;b7»fêžÜüô¤$¦ìOñ0¼M’¹(ë¶Â`.½n‘®ôô„®43{P¸X&¡<¤+ÇÇ[uüáà²q ¦E¯›=KýíyöD|vû%齜ˆ'6›«“Ê8—[ι@©¡ç€‹D’"Æk>TøÂÿ 87z´¶_¾È›D÷š÷&õ“ÙE£p }ý‹â­xR7_D½ÁÚ/‰T6žÆ|®È€j0œž*THʱVÛÅ4iŽJ¤÷ÓËW®Ø#eäûÖ?´0aó êi&ž­pªx%|™á¡«¿öW#ïν?’tôb†$‹ qùø¼ÂsL€“Â+þ1H5“6¨ Ý! •‘{f]lùvhè6`5ÝfOÕQ™­'ïÆÌ©å3•ó¨ ¼+@‹Gb²Š8_+ËÝ¢,g©zι¢a³”AÍõ£³Ä”—¥£¤Ïü& (*oHŽSÞ¶šÊA5w¤Ç—p:uO®Ö’çxJs%”@CRšO›I£“Òñ¡G¬ m%ÓBņ ˆ»åH2°¨…i]I}ksr>^‘YÅA†z¦:\ñÕYT(¬BqÌC‘da\j‘Á ¿ÀžO†MËõÞSQVê¨Qb<Ãÿ(ÍLÖšž>^xT•ò¨r™¸MÚ§ärbµ2´Yœs™ Ùí3•ÿÌàaj0s¥¢ùïõ@õƒ~Œsßc¾tÔÀ³xÌC˜Oá`f> ‰^Y+Qëê²–ƒÉÙ ðÂM(ÌõluAò9ùˆ]{ •Ué¦{Ö}¤õ)ròï|ʼ¸qn`·™U¿7CuÌÖª™Dä7ï´™wš÷xÖù%U¯€$ž“’ç˜‘Ž ªRmâ<»ý¥ Ò~Õ‚´sA¾òWéROü¤¡8ëÒ‹K–:˜ÌtGsÓ…æPŸÅ΄Û`ܪу¤Ó&§÷7‰Þÿ7àA‰¡ÝHÞ6Þáoóéhªõ,‰]®û®È ­LÈ.8clBíÁâ6ÐÈÿ$Vt0î48(ÈkåYÅ"¯H-¼×zyü$0ƒÄ´•ñÀPRrJRjëq( æâñÃЙNBà›žS4~^Ðë^ëÅ*(Omí÷†˜Kâ¡8’§ÍJLTåvªvš¡Át6qó˜˜yg—ËŠÊrãNÕo4Ëž5x>ó-2鯜þÚ8s?óÃö¬³Ô+Ypge¼„…ö¸Uíáª.uDº”L~À½2@2zÔ™aº+"¬Dø=€JzCãƒuÍàÁä¨csÍ=W¸Tv¿ÇŒJuF©æßóæ0y°¹—Pã©§–£›5½€u„, äa¶>À—ðÁW Ì«œæåñ–ƒá"–ºPì2àÃÞÉ02,—¦̼±ŽÅr=ÕbE _³,÷ƒcÅËøA°âÑõ+F:‰ ‰áÝ®¾@ÌPØt« Ì(Á@?¸"‡8êz-whx5¿ Ñ¡F#§µÛ¡F7Qó¬›PI€—Ü+ºd£NqFóÛ—5ÿ×, 'æòq+; ^Y¾Ž`µKËZÖ¡0V†GV†ø­_ĶxÞg«¸P}• Ì£Í=O–†oþôN9¬¬„¥}6~KC|2`iËa–¶Ø²´®"–¶"áæwyâZlm±²µ?g–QÙÚ%t‰lmÄÚΖ»uÒ’9/)•¿ù/õþKÔŒ)M­RŒì5€ãƨϊk%p bÔyjºÌ¢E'ÀÂOÔN©º‰ì£ÞºI¥¸ª:ë½ðˆs¢»?ï]0ªgoÍ!#©÷œ†…æEÔ?Š«´›”²¦H.ÚÒ[¸.üè˲¦B"Æëä¯5fÿËcïG©æíÄÙ2§>ž"<¸ÿF.ÉižM§$Ž2q²Š~HVÁOzVPÛÅÊ k†‘VÍÅÑ£•¸·ÈL¢m÷ìPÊj¿ŸdÙ VÄØ¦ÞñÀú %§æ¾sÕ¢ÎчT‡‹ÝhfOg¸˜’Åg€A¨÷§¶æd‘2¤4iR`/Jn)#!±QŪªÝG>Ýɱv‡ÇŠ$[͋Ԩ½ŸÉÉ€äH8BŽ„ßŽ1yW«deZt$å2ú'êiQO`rŽ‹åˆ@wƒÛsô RÚRÃŽ%±èéWy°ÒˆfmJŸên䛋Ý5ù§Ë}°‹\á^YÁWº-”%BûÔ ŸšÙ×”(œþùå+*ÕG&ž¢^U3ŽN1O6¼hè¡ÞÜÙ™2óÙô…ì3Œz‘êèùãš÷F"~Ý ž2Ä„¢ýFàØ3æÃ\&| GnŸ îuñ¬g>œùxöÎ%¦K3¿©§f¯7¹^séÅèµ*]ør(â¯Kï’8(î3S£‘PЇÑâŽéé·E"ö;°ŒÂ­ÅOf¸MÖëÅ^£}²aÊ>l³ñì{| p÷oyà7uâú·Rr莢ÎpèÂm¾'™Â#6¿Zµ.7Lcé–:Ô̆›H1 ±q(éTkl·(´Þ-§r–e'¯îÓãáÍû7Fl~2NGøÂtyWœ.R×ÁƒÚÕXy‡xÂö>í¡†=À•¥‚]¾ õwEƒô¥û„=7Ü'W Ø,¼4&Üuñ}k6²›,a³ŒÍ 6²ib³†M ›V6ílrl6³Ùr÷Ý'’³0§Â‹pkVè©— íÖ´´:b©9£ú 3KSFŽà̹­Y¸½4]™}àéI(T˜ÎÎ௚ììu}ò {³vÝ øX²7Köd!ˆÜ]ºÿ4sß dîüȺüì³v~„÷¸”±v_ŽHíÅå·DŠöàÙx¼ »lï¬äW¡W®z¢¼KO7M$ù«&›ØØçJô ÔÅ{ Šö¸‚¼€®0xE¾ÖTVX€…Ÿ†×Ü"Ãr`­±`ÝÛØ%{ÒÙ{òWMöÞ¶>ÝñëÁr3×uyKC¡Ž°µ”ÀÖBØ6°mäÖ’)kuS¶ÉMY››²-|ʬq¬'/sçH XíbSÖ&ÞÉ•€•s`8°Ž8°¶]'X•¬ËïÉ×6—€µ™@l ÀÚÂ;%`u8°ª·[°*·[°\'XZ°¾B°:KÀê$]X]¼Ó]V·k¹k©«²ÿúÀº×‚5tI¾6PÖ Àä%`p`mq`=åÀZ|`-²`Í$XGJÀ:B †°†yg¤¬ÖYÖ«¬§®¬ Öß¿+_{µ¬W D!«À;gKÀ:ëÀªßaÁªÙápë:ÁZlÁº`½]ÖÛb4k”w.•€uÉÕäÀZéÀª¸>°î°`5]”¯Å?^ ®ÍíäÇXIÞ)ûx1Xr-`u9°¶9°®¬©¬ü‘ðÓUÄZuªðÒÍEªOsÏÁUì¡•Îõ«èNÙ‰+$`&}ÅÓ;o£°ƒŠ5‹¹ôØ/\øúÍciLUwÏ,ÕW*žCRÖu[Üé=³$¡F§‰äô(N³n/íÆ)NÛïˆG¬æ%ܨØ Ù!« Ò˜«ÖAyc'Õϵ§/&®!ΧºÅ\Î;+¦/¦\Ëb^r‹ù¶.¦Õ°Ìê\àÎèz#X ÉÑHDϺ/´’§ÙL-Ö•pϼ-yP¼³šw‚ºúÔ{çšã£¬ö°fø””x\–b ô=uQ²æÑèª;³O "=+’dÕ¤m¾-9swvòYK^-|8žÞ>Èg’;Æ‘ÆË ?0k~=‡0hYÔ‚F­ÿÔ ¥€UñüêOJ†óýý?gËk£V˜IjgP¶…ò'ÃÑPEšMヘȱ¢¡.„0^æOÎÃ:žì;ò‡›{ÆÁQOŸ'òPí1oœkÿùÃS†ÍƒUF4XäŸØÝ-³Y—ýò)ƒW Ì1³Tf]MÃxRÀRƒbEeóÛRž¼æ£.äSH‹„&nÇ•› ìo~/ö—óŒ¢Ab‹ûÇ,ìµ èçs_mŸ×ÇÜï~ðqAq,iäV³¤ ²‰Ñkö“”wí>¯d[VÒf­•~Rs¥ÿkÊ­´Ë*M=±à²äcÈ—í^ócɲ Eëdý%î=Xºþ¤”©ùµþåÏÚõ?ûá­ÿë×XÿIÎúœëéš=Äßýãnýo¹ÆúO¼Öú‡š*|dÁ4BÓèü}(¾Ä+Â>s[¼ÌØxkã³Êì í2äŒáöºñûýaLÁžó/Oy ó>'Á‰„»h\áëg¥¿“›²ÀiéÁ_&Ñîo_4ƒ,ÊÉPÔÓ$,~ÝY³zœtyÄî¬ÁÞK] aIJSH‚YÙnéðY1Ýæž&bj†AŸƒE›ÆådKñq~Ê1hƒ÷aóÏ¥ ‘5RÓ/Çh¤Šn‹Ëý9¼ß­…;ϹCrÌo±• 7¿Sï³;çé³íÂ{;ðÞ•oÐõž‘xRŽ ± QjëqÔôa8Eºn HRõBÝ«®NvéU¦O5Hk"è*g¾iEÑ¡Ð+í1Â&%+QÿNö‘3?(;ñ¬••Š`UÛ“ÛÇYYù7EÃÿ‰¾8ÁÑÁ9út2‡ctÌÀÃ:Ä´x&6šËŒ+û†¿üjú åaúqT¡dëí‡Þd˜Jÿ8 5g7à‡ýãvÓn¿y°*;9÷¬èFÛk#ÍÕeo2׎߉òãkå3»Ý¯š¢ù«÷HW>ÎA~·Ðð»ÛOË2ÕÄŠ”xá¦ñ¿›ø¶®€ T^OŒÊª,eÐÐ*”Ìð»Ï}ònÏä÷ÓoV$Ã\/Ãåô ³ç:~õûÇ4Ò‹õß/A„Csš;-ÈÁ¬fœ{KðâÿU*^ôY¼€ùS‰,œ«ðBéÉ ‡Z3fÂúh7Q(¾j¹ñäabK]vô|ͬpYˆÿÚà£-œTï78ÈÄw1¶L|ë#2é8ˆ² @ƒQr0ÎR/"ž}ÓIzkyÅ®"YáW#9ÝA¾~jî5áÔ‰Ã{é–ˆð¿VŽÕ6l’*Jó&42=â2ír’î½áDê[+iKö7”¯jMXq SóJd…±xr&r« DôjÒ:d¿ÑY¸©àxÖ„r¥1Ýé’K·é6#fšhF“ÜD9t=³/µá«Tpà}ÍozM³ÜöÎéPB*wƒýc{ÎGŠT›Ñ\Š+-¥ªÂµpeò¬]‚!W¦ïR\é&k …3YŘîïÞ®–FCZ4w­RM šÀØ*~Цu þ¬@ͲԲœIc[…Șږc!Þ\Á5*·Áž¢ÃFb¿¦¦iþ‡±-»¬ˆ]½ëñ›^[Ķ]ñ¤Fc‚"v~‘ˆ-O\¯ˆ]_f¤àCÙD] ¥“«`ìý`Ìâûo•-_öBÐ{E$ßÝ.¿4^¤‹Íp‰Y3˜˜UAiÒFþÞÆô·#.ì™XS«D¼Ü|ÉOJŽR”\ "6v_ËŸñ寄!3{3L(ýËEÙÉõ»éió ¦ë"EãLs¿*©¯yÇÝ®~zª™ -cÊ RRÝaš§ë4û§™Z¤øþ²yo”ó[ðF¯©ó¾†;®®Eï·÷ÀÕÔ,Ñ&îJgïíÙ¥q(u-\Ôí9þ þ9;ÊDPT¥Y…eéØ.Û±K*vŽÐvùx›É·8k^åùgÍ/kþæQgÍcní6ŽÒQw”ŽÚVL¹Jæ–õ¨Ìï‘ñ™;ÃÊÜY¡Á­LCòV™¿jóWgþêÅ,岚ÂGÀÞÎ!7Øt·C'"ál$ÜrÞ)‰H®$"µ0ñÁnùi‰u¨&/îQŽŸXÐcyÍ’Ýz,ì¬ôµ€´ð9–n#@ …'ä£Mü(+MEê`*R;S0ü ²Ù â´÷(âLníQQ4q5ÆÌi’ÛSd …¿;.«ºîþÀ mO·Ü/77²ieÓÆË:°|ñ—Eé—©–ÕÑ"*±¨Rª¯B•K–sЕ,g ×cÁœ7°•éé…‘cÒ…äSV„ò'ž¿àçÜW’ÐÄÿ-É<€»% †y6ÛÎÅó[+|=_•PqoÄm¨çûnÅ»>©¼eû'ƒX¾€ù@ÒFó¶ívѼY3]_ Ëö›8¼ò®û‚lé ‘,æsI›=YçÑ™”]E&X¼•·„sê°xMÄØÕºx¶ ’ òÄa‡«CŠ«á¼€_¬ŽÊÕqâ+œ;*¡‘ÿ«Æy¨Jø¿Ô½ `TÕµ0û¹öZk¯½öÚkQüÊÉšO8ÖÚw#íÈeÎÆ¬7Úâ\ ¼|#Ÿ¯±û°fÆíZá³ëF[œÍ%Öi™‹PËbþGö£«áúk'Q£k'™ ;4dõ·6«~R¼1ê†IT?÷fI…´’6º©€NÕtvª¦³SµÕûÐíÚ^ô¿F>>úÅw–çÒ‹_À¨@ä!¼0kÉóKxçÁÛ‰í¼}ØÈÛÞÑÀ£žøˆð Øxpà>HÙÄ'ø±…ÂûÛ~4ðã?šùÑÂ6~œä‡ÁN~DùA.•ÄçíäNéüÈäÇh~ŒåÇxV×°Èg4GNEYKC þÌÕ_}$Oÿµ/曥®ÿ oaŒñ‹I¿IÞVšýì°¡Üý6Æù¿ã•ª¿ÿFr†åRw{Ó.¹ãxŽþ„’tGW¸G«/¸Kþ¼ä—öZðS}Kþ& l7Ôµˆt&‚ˆÎž€³?½¿‘øÏwýÃÎÕ ÈW£ñP ^Qøª$ÂÏ&å-u÷zÂÏ’³ð“û¥>sµúL’f)wànéÉ. {Ädë¿fY«¤+g¯zéÂ]› °»^ø_ßÖXç†éBÉk| Ä"ml–ñö0~^=ŒJÚL}[Üù¶¿“!;ÁÔµM ÍP{èèG&Šàß½®ùkåkyÁ[òÝC‰}@ºÃÃõcüo$†{ʽ.ÁZÕÝδ”;/À(d±d.ÈÜã¨Deä¹Òûòæ™Q{•PÒÁ±¸¢L‹œ2Úú¤ÕôÂþšò㟺ûá¿} û沎¸‰›8½èÂ^@èT¡À¼°W犑E‰·½#}3{1ˆ½¬ÀK¹i5Mt.ÞÁ‹­cq¾;„àæÈéb¾ÝBÒÄ›p¸‰®€©tÈ©yMÆ-ž‘„ŒXã«_\e§”å*覩#ﳿ%°Œ£#in»˜q¡¢{»…ŒNô»!&ûAŽ›m6ËO Ò Þ˜¥…qoãNC¬4¶%kŽEi–Źt*ö®Î_•æð‚^9K¦|jãÅà‹˜*ŠÞšLD;f9Î)ëD™/<ùIÚÈNŽš1†É:ªóz-‚¾„ÝO ×»xӾĭԯpIƒ&Ü “‡Ñ}}±ÒÃ$ŠáèÜ v[Ao/b1¬^sš{iš‡á* F*O5!I qÿUÅ5ðªìX¨ÃB®+7¬‡’žöØ0ÚÈŽxDR´nâæÁ} ϵ"sý©gêÞÀ A“ïj{â¹Ê–¾–—D%õ™óYåfµW &qy×nœÃð…ÏLÏ@£\B=œû<é’JYŸÇb/…ºïÞ¦ Ï>f¼uŒþ¬}jc v[ [ÐiÇÕäbË›ÙÎçR{±&cóÖ>á¿„]¸ßKÑùÓmGlwâNÊß>Â…ñêb1®œŠ8 ÎpM ¦É“Å7Uê|§)It1öé ¼,Cp\ò¶ BÉ´¢¬A³Ô6ƒ¨ãjíû6k-6áf †&1 YÄN„˜Vë–€ón §!ÈaX³O£`E ÅM¶D§íP&å~éwæ¶RùeyL7Nþgbù'™„Ÿà¾¡Â xÚpÿŠZþÌ­hÜ xÊ%hçÎñ×E&Á x[<¨S,4ê6|ßE З_߉§Ó‚ÜÕmËuf“ŸQ¶ßø:Ø!ÀxX«uwò "LpžÉºj 6º5n#ØäÖD ÌÞ§ 6¯®¿m&qÚ§ZV×ÌÁóÓ¦ŠEZDÔc’þR¬3¶æ ¬è8U ®ðÉ4M ¹ºþj(ý¼ƒ3æ3Ï5Dx6Š—˜:ÅÆ'×3®K!ù‰b´ ¶-Ñ-Ý~vq‹q¤Xs*ü¥’SM)j¾|A²‰ 7– éœ ©3«?ûwL-ÐLWdBv—ÍäŠS„ÔU]£‹H"¢ûCÿ‰Îãìø„óaSY€3!dGàD+äý¤ÅR?0/k±Û®~äDèðe~Y¡®Ÿ#”9`M Ö¿{Áýû 7AnÝï\¡ùíð:µúsÞÿ÷:¡"?Vä¯>òÏ¢!$¿Vâ@èaZ•cïµ&ÙJï+“„[qŽŠÎžäßb%Õg{´×Õm7eê·gh=ê¶»½ÙgÔm£ô»ÚWê¶Û2Õm·»²¿„7wv¿ªÛf»²ß‚·tåŒÖr6f 0 ÕËϨµ€­y³ÛÅj»‰Y°× ujÙûÅÁðH 3,#wP<—xØF¥É÷ê‹‹ ·ÐúañkïQÃ,wq0?Q¯,ð7»…†UB›9=Æg+M:èO6V?Þ«?{AÍHXPÍõ3qüì›Fç­Û"F¹;ƒ7牫š“D"}eÎØÒ E1=füi,Ê 4¼/ùKFVüÍ>–zQЧ٠QZ¨0ÜFuTÙãÎ"ô̯>ãM[qu<¯uA™ÜÏʶ§xtoøDÏù.±k'ÖÿÌ5°Ÿq"åË…’ÌöèÎwuŸï;Øö§/\;b‰VÔ­Cb]·j×êäF‘Do\SÈñkíÊÁ°÷Êç YŠ«à/‰ÕzhT×&ßø¾]l…ok@4SöPbw°ºwx†a&2Lx|ÐøýïúLû'üZ’Q‰a^ÿXК!-ã¡_$ZýSå0áÇÆè“WwÝ禆GBÃ|>ÜŽ¬“D­8þ©ý¥W{qÌ2wÅPäaÚò§z#Jÿ{=²®¢ç{õ·¶ÇQæÎ=\•¢Í{¾7òQ}ñôê]gòF“ÏÑ¿\g!÷ï®Ç@Fî$d­Ì ÄÕÞÆÕÉ©ûza+|L+é…³ª;ÃÐa>H[Œ3hœYa³}MVwœ¨}!>²Â#dU ‘’Z9EF†>®ò 78%É8üÛ>Ó·}ÉÊñHƒL´…¼¦‹£cèFôµÁ/Œ¦†5©ÛÊ:µ Û±‡4¢ÅAIp¯Õb1Ågõ“äs-#4—*vÀXèÅ™Åîcêèg˜çŠ® ½ÿ ËQbÍTPц õî, "…<"»/#Õ‹î¿-uýµÔýZê³æë¤n×m¶›*ìÁªwèæŽ‡Žô¶#õ6>ùTö„Ztá9òÝù@¦CÉ’:a™†&Õm@B“‘e||*#.§yúë¶’9ãë¦ÿÇ~ ßDØÈ±¸nÀ)­hëB Ô.¤íC=h5¹\gŽ® qÅcÔ^ËØâ2Ðr<áž[<þô»+i@úm‘q„ÒW¸£ª‘ô>mG_f;VTa°ñ¸ hšÔÇ«.ÓÞf4~#û#í- î²}y†lR‚+ÕŸ1~¢ î ¸¿lz·xð ¹àÖNž·¡dÅçmm¼ðÐQíáÛ3ô +®IŸ<5hYÛÂ5c‰pÆjÄ('`Ôs¤{ö0r!lNâ›Ó8Î&å]Xßft(çg;Ÿ"Aƒ½+ðÐzæ3„¸'ÔÐa÷:ÁéHw„브 sÀì:â›”¿â48B•Uàv ›™1¨XÕûÉa÷!G“| Dí¸À¯Ñn¨¡Ê'U‡´·´æì(ˆJRu÷g½Öå¶ø/áØEˆÒmÒ°3¡ûLÿs ÜÎÑx0ûSŒ{°ýoãÑ™º]Nó`ƲЩð!¡Ð® Xøµ]¬ßh1 ÆÍ³Ýi¤£†õg¾¢‚4'ÈÞ%Õmƒ„63·ÑŸdìØÐ7À$âý^ä_©â¿wÍŒ?¹5Ë6È&“µYÔ€wňzÞ>øèl¶7¦.Â…nùì˜NG”|l‹6tÇ“ ÓÆó-­…)æÅl#µ(¿`û.Ô`J¢‘†‡¸üI°AÑSt¥OX¬“àD‡ÀiHdÅG¡]që‡ 7®Fž’—Êå^ Ÿ¢ü Nj췗¬uwe¹(|9¡!•ö¢nZ¤Sæ¶÷§F=µÏÂ¥(<»Cœ]Š€Ž.ãíÓÄëÉâ)E m`í V.cª ¶>›Éݤóç=™Bõ_/rÊ÷öÞÐAµö?û…p¸±ñ=§8P$Sêð”^ÁYé8|R§Æ~µÅ¡§Û¸ø”uY ©”û³Ÿ7)zâ`/ç4¶ŠíEœÔ'w 5ÿ^[|èžRF¢[¬”lnw8ÏõÌËH*"[>9L±ìOž;gÖ"×®ý8‡3ì\'ŽMùu1rŒ´ò–ÒT¢Í.œ»É†ÕňÎS®opãÝKmƒ»7Él„©S8(í2©S¨öã˜:ñM]ÿÛ¯È}° äUdù“ÿ QŽi!÷0kê¯èD€HvìYíçኔìÅÅ+'„od¿"‚Qç@Ã5†/óæ1̦ Eå¹!ó ¼‰[Ãý<ÉëŽ4þj‰}¿çÊ Óþ„Yq/^ù)x3ï°Õû-f¨œÿ§ ã$óßÈõºu}#þ-í°p'®ÂðàUe¿`äêîûî_œ„\<¸8 &DæYK Õæ\—€ îurÑk0=Ï RhN¼¦4éó ­,~É‹ŒÕš­iŸññ(C“uÔõÀÃ#yB‘(|Â[‹“a3uÐ\›<ü‹&CÖ÷Åäq[óà¬<•¢­ „ÌXØÅhq÷!Ø‚(1Ž`ýã5¯Ðudºr ¼9ÕÜ+8…_Oa|DfÅî?’DˆUQô]3<‘Ö‹Ykæ~-¦þkö_ÿßìŸÄÑœØFí÷ÜÛ(Ÿÿt7eu~ÃMÕ‘7U’~ÎÚZ™®t¸'?p¶ããÜèlÌŒ*!ÏŽâ˜I{îÎåQØ?/ œvíýÖW`ª0©¡1õ7¡ ³9‡4—2zÛIuŽ=RŽˆ® _]´öetdüdíWwœPlgŸ?Ú˜‡aSGqkÐ9?v ´áÇ>~àÇËühæÇQf»èo]$ÎÞ/=_kU>Ƈv^0]tò"šÖK‡ÂŠK5E@*ÒhÔYQ°?‹ã&ª×¯žBBD¶³Õsû.îyóÒ´LV¬ûzW±§xÊÿvÏ¡`ºK|ªŠ`ßÃSãÓðk±Ðàñ7^3Õ;¤}.bæ|:Á¢7‹#.Šç‚ÊôÖ¤üW‡àÌwÊTÂ=<Ñ"‘ê´@*¢¤ìx¬†šþ1&t…éÑ‚w‰;>£™wqð¾W8–¿àPȶ(º‘êÃ{;øx ^ð!ûX ºeˆpU·½­ì¥ð׸Ô:6246J!­±‰Æ¡?f3… è K¶cS¬~©ÛšÅÒ«í…v(öƒ›"^}¡½®|¡3à§`— ¯´:ÏÏn×^-Æ»t^)¥Ód)èEܱböèì:½µhGôÄÌè;‰$‚ý®’êZ3Î×y„r¤â@Ä!¶¦xD2™“¥3z!€¦ »Lu½³Š“„áªÎ°Í—Óó7UÌ¢º~† “T$f-™ ÉY#4± £XñÝôìOr²µìÃÚ¡1Œ½Â¬u*{AÏRÌ öh?…Ðb†2aü^¾’Hpæ+‰´ÁÎy’Ö,& ‰PŽ8²¡µFH¤è"8%­É­?Œ*ï› _$Ü?+°n¶f1LEøxÑ3ì>ªuK ³-ùr'QõF²ÏÞG8&ŒW…U²;K^+tÃ^%ÜĹ0°O˜¼£Ê1çõ4á'”bŸÑÿ|OÈSDÖ5(X¬º6#5,ó4ðºHâ°À?•ýšÍo-Ú=±do´uáþhþÔêNË~ûkO,Íó½þúy¶:ËÇ¥bƒ'˜Ä¦.±e5½ÎÚ˜ Ë”8U·.tÍB^mMjDEzƒÃÚK…ZË¡0ÐŽ¹ ]ñ¢ï&Ì­EÑV¾1ÑZt †Ù•ë2¯ý¡#þ»ìƈE‘—»Š{t¾¤P¬³õ¤ÖÙʧýÙû•­o&F8!Au¤~ùСvð)¢ÎwZ‹îž˜}§=¸Çå`p 5w(2JTøn»ˆ°•ð…¶.l‰Š…ºÀRV€ÂÀ°®‡€3E˜øªë?%òåí0l£ÔI8o{¦¡m‡Ð#pÄ,›©2Ïç´½Ù-ÂAjù{Ž s‡Ðö×I †ö íÜCêý!®t‹èöî6Ë>$,}*–¤v (‹›,˜_ùx pS¯Ú•Ïþ9¤ -•ü€){¦aü®Ö™‰†Nø×E%Ú0žà˜‘[âsºº¾»Ï¼¿zÁÒù¯ÖÞ…··l«;*g˯rã.T[Kyý?`’ÃPÊКÔö*÷[ ßbZƒ ¤i•'ƒšã(Ø 6ã챃^¶*0ûÓ[ç]ÕÖZ4¦­uãXLƒ”Y°¡MP“i;œ6"»¨éc[ç©mNÑP°!]îT˜^$;X½¾µ¥µEªÜYaaù!”ÌÂtXœ¬ÓFOÖ¦ÁvÂÀZ9M±ScaihdšÎÚƒÐÇU7j†öªò }=YXlU-}¶¥Bq‡gd£]z6'Mé%Շϖ8žƒÍ³Ìßìgó·6æ]YlDKúhž0yÏ®Ž¤ÖQ¨½ »‡ÑHOJ™éežgŠŸÒ"EP.B’Î ¹¬¢À˜½g’p×Am·(a0ܤú¤`(M‰èÉ‘ª[QÊ·jo£ z²ÖŒ"ËQ¹bbõÛfà2iGÚz*zì½Væîï¶ß‰!³H2l™ì`1¨¤úííIbu¯ÄUP¤1rZc±¸HÊ^Þµ4¬Öôö’%zŸØ.G€ÃkÝørT,ѼDSèæw ñ±MÐÇ!šÒíbÔ8sÙÄ®%_l[Ž<öò±CÇ^‚Ôx­œ+ìZ;ÞÌð¶çkXk9Y‰b¨ÐUü»BþÆñdòXÏíž½®׎9LkwŽßŽ_*1r9W²„d\Y‡KÀn3†*Vè·*èWðwl”$fŠùJ+‡´<\€\šRßRÞ¶ýª²õv!(ÏxX=z˜#¸ß^Rý¾h”ù³¨¨_×®‹÷ÚE¸)«ƒùbD¢“ûå\ AF€õ„`çYòðF&ká6ÒƒY¸…ëØÄ³ðg~¢ß,Ìè7 Sä,láY@[V¬Y{›pQX÷6pã¸ÎLvïÆ ðZúŒT¡#?Ž—Ù±Zg$@¼];6¥â>[R´ýÊ›æÄ>`ÿ ƒ}F°K€'öfÞZà'êNÍp˜3“‹Ü…"ÏbþÀ̤PØG1 K) SDÛ±GAÀLâ{›ºØän e€˜‘ÜfµVÈOÒ”T-ÔYC@;\Ì©®‹ÝÕögwj{(4/¯(oÐ&b;ôOQÙó¢ ?ÂÏ…;£Ž­”2ácfu˱6Ñnkí¾(wt«ÅÄP.µ›]ß´÷âÕ'RT`s¤áß*`ý|ôÝHÀuì¥ÖyÏG½¤›|‹†Öè¯>¶ï„ÿyœê\ýÀ.@“ÝM¨®QL ‚ØÏ µ‘7ÒʵײQ¨Â:”#ÊÜKµ*ok8Qm] ¾èšUýyk‹éJPN…Å{rj,Þƒ<®V1·Œ˜¹ˆ3ãP‚ ø—Îlqš`:ï×lâ"ù¢~q/h»‰'"@ñÑÂÎÞ °Dìã÷‰º÷q樨›£êm? ‚ò1þŸÎ¾±ZG áÙ-YáœúIâã¤U¶NØÒ®u9ÉAtj rô€¿Ã✯Ðï¢×°¸†6#Ëo0l]BK‡Œ]œ1Ê3 EHõr™‚¯Æ¶ŽXŒâÇ£¦€½dD‚{AèêBMÁ‰Ëò_#é¡ë"œq÷PjOkÒüÊYQ>{X}¸ááà‡{Ccð=%õ5ÿMÚ—­µqumè8»bSR32±âFYq‡¬X}˜$„ƒ«¨ÔÓ?„§G±+Ÿå®,èß•_Ë®<ˆ] òÏÓ¾Ô>j|ßfWšÃ«¢²oIÜú¡MÌ29ÊýXЯ¿æ~ˆ:^(`‰©iBߢ®ßÍÞZÅÊKì•îÒ\³ñR>;ÆfLÚþÓ¾¡ÿ´ËKÅý§}ÃYÓÎ&ê q ‹<¤ißñѹu¬¦|Ûß>…Ø”ÍhñeˆÐ6F/îi¾Ô.Œ ¤¥¥™ÜOÁv’v#‰k;í6r³CN:™Ð4k‰xÈ’²“.~¸ùáá‡×ÎJ?|äW$áz«t:Zc#ú t†¯gسÖUÿ:;i…_F²"«HÏbÀ³ƒÆØÅ=o]Š¿ˆãí’7¸© ‘€Ç>’§ûKN®ÎÅêj„ÛŒà9Ëø^önb0W#5PúdúUã›óÆ¬çˆ á t´ ¡ëôŽ\<Ã!Kèoe’1*ÐÓ‹[·ç6V2’Òþ@Ѫ'çîÌþ¾XœÁ³öÊ%/j§o,áVGÝö ,„·kÝäOçD ¯¿ä3c$”mêj]øÙúTã !;Œ ùJk•¼®É‡rmáºÞYÕ]° ‚œ–(W}XZú¢ö%-ÉÔø PÕb!ˆQËËãz²WvN¯|oþ éßšHÊP:Å5â{{}Ê;³ªÿ!ö稞I¢ SJ€.bâJ¼¹¹‚õl–nc0í¢$â ™ÜH°ùLä6w«$˜@u¬}͇½DË1Ÿ«X%¨U   Lpv± Æß¢ 5TýPŠ™r…e}¸lZ€ç†Ýý">05ÂçÓºDøX ¶¸ïBr©¡)3<¯ìȃə—…w´Çs^¯™+ØÅ„³¦W½ÿvzÊ:YdTÂAŒNà½ÇLv#H d't붉™64+CK¥Î£žO8Ø€9±Ùï^ž±*ó¡.ï¢ê‚Õ¡V›rÈFÈÈ6è¡“lšóQ¥Åò-åµ1Ì-QËÝIÛsâ.ÝRΞ±£WâàËQÊ;%ÕÒþ[tk’XĹÆa¹£®÷ÅLKÂ8 º FKœw9;§ÃSƼ—1‘ñÀk|2Šûˆ‰Ÿ…»êý‚NOpÏèéÙ. Y¯ Ya'Ô™Ù.†l@——}ã*.< 4Ž©; ²ŸdŒ©Ð|Iù,ÊMÚ«²z²PyhEÏö*ïÈ\Eo& ILXm @½Й PO"@iŒWHŒÄ±wI“>37’ºV¾+äÕq­eŒ0¸Ø_,â›$à—t‘©YkB[6_î'þLí3ï•öD”eôÆb¾YÕ-ýnÅU?*lS$ÝE&KüašÊ·üYd ~•EÃ]ÝKÛ®L!eRâ¸^s¼ƒVTÞˆXK"Jßa>þDŒ6jœÆçÛ-ŒÈFí¡õ°7Ù{´× µÃÓÄ$i,ÃNà+ò†g,·%éFO‹¶ŸÔÇÈ2×¼šý¹öÖdœ}:Q|CyQyMî×ñŽÍ< ©y[z5 -ØåažÉ3«ß) D„’j¬˜kád¦VÀ¢–`Â%Ú€p’ÐÆ@0®~Ö6À’ø½ÆÀç?çð/äå¾¥³ ÕÀ”(¬zl‚¼ÍëáÎx¯™^ËÙ•xs*]"'³áYÅcÌÆè°W|Û-ÄCº.Žâa°1S¨¹ÙBíå¸"óFõ†ŽøïøÆ;''·õuöq.]´GÖ6l¼æG'áÙÔï6Çb‘ Ù¸¼I;ÆÆ>Xa€ïHôhÝèDìx,ƒ²×$ƒ1†fAMtjý屸ó¯5„6Ï´o@“ö ˆ]hß)ô=Ò¾a<Ïð~LäG>?Šø1…E1¨FBgIòEb륣ТAÚ& Ïr/V!ÜÕ]ª ñ_ÞãžÂˆOîjŸ¥]-Bì â«å]íFÞÕnä]-ïzgoÅq# $’èpc(%Úl ¢“ÛMItñÛã:ªˆŽ»i³É{pÕÊa®SÜ‘4Úÿ„ RÕ^¼CÝÖ€ôù¦¤7Ú]œ¶N °U&Qa‡J²YèÖÏ%P+.­Òp7Aª¥1Û¹«_¨ÛÞfÔi2õÛ„–víuá%5Rwúl“µ¨)êr›ßžŽÍ2”à‹®™ÕHšXÒa:t£_©C:wgŠèVumkRM3iŸJ™6 ¸Yšl®Ö$_dðg‚ò! é#y²´w@~D‡Ì_Šx¦‰ÎPbEU%žB"íI½wÇìb„`Eƒºí-!&‘) AˆUðê¶Ï5¾þŒ•îÉ~[0{i©CÇ@‹…ø!N.DÇiëÓX•d´/é“"™Ã4gAø…!}þ±1þN ýR1'¨s,?Ħgêî{<õãÚB¿·âXÒ–`@E’ f$¬vh/ÿJª0áT=‰ód£'ñ7å¾f+óž!ØáS ç†i´}mmQª»•mrŽµÉ –VDêý3c1-‰ŠÄbÓˆ=YÀSK}ûÕ\Ø ,÷¥SëÔÞÌþ|’˜!ŒúƒgMÊ[Ù­laÛêÌmÍÈnÍÈUZ•wgV¿¹Rœ·8„ Y­Ik-,lïpÄÙGÓD™ž ¹vEÔ~‚Õ;rp¦©×B«fF\÷[ñžŠ¥\b)çYȳ%”*ˆ£‚ÌtfQÜ—ÄöàW«®^ÕgF¢UÑ.vU¸uâè*qÖšÒòYëÅ>ÄÇ­-ÈŸ¬}•lN W† Å‘vsÿO¤è—dµJ‘A¯ÕaaØfêw¼ ° 2hVkWZä,/Ý‚ ˜WAÛ4ô·<à$2IE¬ î&¬Û ÉäÛ‰Èõf?ä¢NìÜ>­½áÓ>‘̯[f»ZûŽýmïgE“BæâÐO |ŠÒð’ºítõ­½©¼ƒ>˜Åž¼Õyµ¼ ,PƒÑ¾iá­òŒ ¿·:¯1‘÷°^¨¸ç„û¼wÚõYù­ƒunÖèѾâYêú26 $£È¤zÎÌþ™†„¶x¶euZÝvH9 {˜aг&6!š98«(ÓàS]=ßl»K¿ÈJäÏòÛ ÁÿVX·] ˆã/ÁõĹh&™!Šˆ3Vb‰u’•gqÁÑ¢q–‹œoŠuÖˆœoª¶Å)#Ž`1g^"2 Ap£È¼‘Æ÷ýÓ±Øó´Ôoå]° ˜]çÜwüžªsÑ6QØ)^þ;øÚ“©~çSî/ÀåþwarA×§Äþ«˜$'VIy“€y–Üoeð–™rMCÜfóK¹¦DB] 6£y„.ž}¼›hˆÛM\¾Yª•6±ÿ}!0é!³m5=“â¢c†’>bÛ^âSX?Š“¸ÈàZÀòcˆë­ƒ¸®¼[RýYk‹Y³¹‘ÔÞºä5®3-L¡  ŵvŸöQöç°Hˆýh«Ó#ö­‡@¸~¤°é·˜vMÂÐÑ™ÅâÆcød3M»s%ŠàFÚšö¯q4Áö™b•iÍÏ„ñNÉoÍŸ€ÏÑï|tìà ü›âiÍwÑ'Jš’þÎø|ì|à„qï4ö÷l"ëÈ?CkҸôڡ±Ô ÐHñÊçv‰ ÉkÂ5ûXh-jž¸,“Ëâ4„ÅlЉšô`4ý¨ì&`F(b¦ò/ÐZ…ªÖ¢Oemó>ý&õþ"¡ÞOê üQ箆gGa&ÂÂ‡ÎØ,¶GŒv0Tú•~HýuÃCÁ(ÚáàgJè3ÿl³st:©œß¥n&Qç~ÕÆ'Ô}bqxæÇwé×x ü\  ìA}v+Ø€×xâük!ÚN»Æßõ äË€]8|­jÖ¾rH¿6Îë [~WÈ–¼;[+ýøPH𒬧Y,K¦ßéìÉvô$ò¹ÄùŠ<Ø@À °µÎf 2f@'ynô‘i?WÀítΰX:[éhìl7<3ÊNph»ƒÔ“s3Rd ¤¶&5àÜþ ê îuwUÝ$˜tágž?‰åx\Âr<^¬°ãi ÍJT›éñX([IG¼ßic;ÊÑrH¤æÜÈ ´£¤S‚×åU‘·¥’{²´)¦>FiÐÌ»›Dy7$Êõ7;m¦{8”'±«âAr°ˆ¹ƒÐdŸ¿)˜€šÃ£“.Å Œ u-9D£/r6WcAOàôrn:Þh$Q7%Mª-ÔdSŸÄ™ž†àĽ)&&î耷j¡5q*í®ŽFî°ôÿKM<$5íº =ÓM ™³£ HDójögÊAí åt©hjÆþ•[¦¢g£­ áçÂg£ÁíÁ&;ìé#׋“‡8b3¸"ü󭉧K¶¤"÷ö9l÷EêD SipùP–ÑBÊ¥ÄMìÓ“# ;¹:+òµÏ´·åÖ§);ª4*Åé!Šç0¦V_69–”œ¿Ñò¸‹Tž­/± ôL)"¤ ï¡u2àñywá°³Mê>ÀÚy¹ÿD`š1k…-ÖGm31òeÛ@¹öû}¸µ U=ÁÃ.n àÞæu4ûÕ…í½¸!ƽͧtÇ ÃM yoyÛêê)å°Pñ -9"bxyq{wºº•»Ê™Ö¢G¢:;8QŽ+¯Ÿ˜ñHôöÖ…k£q}ŸÚW_¾ÉÄU`½£3£Ñ<)´.\øëCìR×OCÅ)ç&ÿÈèÚ⺹°Mþq¨¸›8Áðnc|ŒŸ–„§‰X]+ãˆÉ#ð¸cié©Ðܹ$^Ëúå™és©M¿ñ°¾ÿ˜ÖŸè²ÖŸUÐtƒÅ=±-±É8%t‹á€CGª±à+Àû5V$¿žpw˜âs:ÿŒ5P>Oéud<è^6Âï5ƒ­¡%óFõß ™6yÅu%2%²tÿ÷ØŸŽp Å^îaÿ(qÛõÝ—X%!@í’Ìë_˜bÇLÒ)*)ž¶oíuò=_¨á£ç¦òô1Ò(qqœà°G¾ÿX5ÕZ8â=€˜8¨¸+æÒIfÅQÏpôj[ëdCb¸|«›²ˆóO!T ’*Ò"Vw¸±~tÄ‘¾„là|9¶(ª}ÿÁ]³A ‘!Ðp”-ŸllCeMH/ïÄ1q —ÃͳÃò_±ÌYë€ßPW´þ*ˆ?ùö¾‹͸ùáq°ne ž¹qoË ¹¸!üLÖÁ½¬ÚÄÊÕÝÞ0솴»Ý£†úÎ'ú7¯^Iú8þÐÇ~ëw ÿ[5ô¯Ârè DDíHwPåg{xÑ!¸Df8HÎ$“'Jï |I}fà7Š$+<û£ßX\³Œg~cÉ ç1Å¡«˜ RStGžB°c$`¡B‚' /M‡Ã¿ZÁ~åP„ OÝ lÙùÞD”HãIŒß ¹…åB E‚qîÂNj|?)ì\N#¿MáÙ'hÎ?¡³ÁÌŽ“\⊔±þ´ÖÑ?²Î v‹8Ä›qû‰ù †ìÁI(Ytv‹ÌîŠVÉeàñ'©62œ?­ø“Œ'göÉËû{3Õõß‹‘naÂp,I³&äðNèO¸!$Ú—#S¡e¥Ó.@iÆ:GÍÃòÑÁ¨…q°n×­¬byÃjp«©Vœ°.«4µBöc‡Ñ•‰ûWz!­»ÃÈ–äÍ…&}ãl Ÿ÷¢ZF°ë3<½º—Ê ‘"b©µ3ìægÞvñ˜DaôŠOÂÈ#ÞåÁ?brIÄqîÅÌgñð²ìæ2/ ¨°¡q¥‚Èe(×ëäó{+¦B˜ä¶T¨â dÕpº5;Òêý‹õêué‹à¯ÂŒ`·ñ~Æ”èn]Œéµi¾ßK;µ[ñ'.`øUãó.}ÃÌ‹,u8·;0 5fH Þ uˆ‡xÔ°é<>EL/o¯%<­Ý^Á+¥mçÚê¶cô…šGE6ˆLX2÷€*9 X*>¦ÐÇyâã¸ó$šªë÷ðv*Ë.ÙPOòF6ý­ÞÙþxtÎö#Àî<™ÈÖVèŒ#¹êïö?P@Bx°!ئ„ZÔÐ>vÕ¾Qˆ0î°Z÷ÇTBD m@ ¼=›Ê(‹çðR~CªBvø þD«Í—%R63WÙ‹„ñ6ëÖã·T&A)ʶphHyV7’éІ¬ü‰6²Á‹sÃ5ãcäëfuY}ÒŸtå'ÿ¡³)n‘}®×38›Mp68ÆVƒ/› ÄÎQüݸ Hàí2‡ÉL9Ö‰]ˆšèžk"Ùp TáZ"H¬%ŽÄ*ˆ¹ò²RCL4 íøöøñsØÝ ñí)4R'–õÔ¸–òª¡><)ì}@\f”RoÝ’zѵˆŒ&Œ'#æùg:µ€–äÂE\ŒÈˆcxš`¹íà® oúH7a™–Ô@þ;\\Ow0~_c {§ê\Î?açjØmä}™¸Yä"N ¼,Ì(dLj¼_F ¸($ 9ø–öbãßíÚ§â†ØNlà{ۑܾ4ÑŸ‡í?í`KL4ZÀG÷eäøüYþiÚ|ÛSßàÆä1|[Pã_èÂêE'úÚëJþ vð$að­]Z ˜Y·ª°‹«÷ˆ®‰»RØ!tšj^Ö«7KÕ ZƺùýÉ017ƒ0÷7¼ÿM71W¸Ù¨H”׸êÌ‚uTÐé|´Â,ZÁEkLæSÃÔRKÝÌÔø Š .3ö¶P]ÅÓá¨Y‘—÷§µL½$ú"÷¾ ‘yÔœ—iÝcÁ¨´ [uö“BWMÐ>Ñz´Ïñt×ZéE±­]æ2ÿwí³DúE»/¦§q½P¬‡³x8'$·Éõðdᬊ#Üåvi|ã·3~sšE¯40Þ‚Ž©åo°O@(Õ‰UøC{‰Órnð]b^T^Ñ>bìuˆôö+o Þ§ßl/t0p²¾ýÄú`Ü﵋ñ¥Èbª.:÷ŸBð^ƒ¹æ`§¢Öö1Çrñ¼˜Á²]Ü4 ó¥(| ³ÑS|°lgôrÆtö/L¢®=p„Âe燅ñCQViØt…¼0¼AåÏZªedí xÒEgËFw`£eÐl»b¼ôKloÆp0åYºí4#kü˜ÏèOÝ ?þ,ÐCµ·æ„ѤÎsIJárF? ýèù™ „3PB÷”>+¾f-!M‚l‰ã# m¹}Â-ß_+´||op"Þ“«¥Á«%žÒÑ=¼_0ÖnÉïÇO"é$œ]¸¶"kÅB'ÛsFw>¸§2â rÀÀ1ý÷ÏqôÔo-'ÖÂ+x-'3^Ñ„8ÂA>&q)WøÜZÈ‹Z§b.ÜZ똭ìH n5ÖôWÐÅR±8å»I.Xí×ËÈ~ä2Ô.Öwòb›. v{3ˆ¤| ÑFa¨Öi<÷dcˆCÔùBƒv@{‹ùÆK¤¸B’6nk >òå;! à5zq?(?®Ÿ~U;»Qše/À?¡ÛG€äH}€™6–Ïó€ØãÛŽS;l©ïÊ •m+—øçÞ艡|ûˆ …´G{bäEF˜Mžç1¸ÃKÁ/€;ؤ.¦n·ä‡Ä„éF g{¤°¸1X”å•"D?î°3™™q‡$âEÀXÔwð/î Pb!pow˜AÅ2à_&†«Æ¸ôèþý¯qß"àÃuÆSc›¥²ì0Ñ¡ƒ‘7ªH!.•O09Äâ|3ãWŒOà8ÿHnî,£íQ¼M«ñýàiE}¥òÐq5ÔLíæ3ò¡¾.žä­ÈSâ¾ ŠtGcÄËw'sÍ‹×Ý ƒ¡°ó^´^¢`rà+|°"š¾©ì×v±@]ô3ÄaòêQWK,cf'U‚ûÁˆR N*R8ɰ3y6n0즘²ÃÕ÷ñ¥\J«—ÓZ£Q7Ñ&Ìj~l“ŠÆUŒ&.£õ×$ýíêЖçõÅÎ!³fK”ÙKñ…Uk~Úø!Ölà î{•3‚‹¢±Û8ÜÈ@WëÞÃä.~z'ahŒ† ãÑMØG.-ÞŠ}žÕ6Lì "toZUŒá×AA=q¨sþ#^ùhþ†=}6y‚{1P¨º~*+ Kû/G´{óN…î̳[[ƒ´I¼¨ÚþÓƒŽÐÁªétj†Oœy/iøuaõšö9À©a(ŠßÊÌJ0r¨NÁ¬^«ß?å+gOIÕk:Þb¡e¯¥î7Ðu÷$,¡³Ÿ–Yj»„d;C.M íb jî×øÆ­ÝræNî*÷ðö íÄØ;::o°Öÿ]ÓWØ›¯³Ûôè¾Qz< ÇuNœs=Ia*ÞIP-*ø‘7—æÚ‰æÖÏŠM[Kºia®u€6‚ŒÂá` ÔZ‹«.L¶›ìrBtØÙå1'›ØoTv»X>¤É†åVW©°s7”¦&ÙΘ NÚKÑWà«_$ØïB4x ålù¦­¨q¾ÕÙw#!ÙáQíF¯—öË4rR¾Ð©ÓŽò·–06ïZNÀ¬Þ{€ÁWÇi-f¦“I 8 €™óà›ºþ=Öµì2(Îiow¸àEº‘Þ;›ì~1ñ°n`÷’o uùÂDU‚¸>àÍ’3ìb‰zžµ%ZÀ ªK£%[Ëì³Wó´»yõM÷R²×ržnzæQ|1<9Âe2Ìë0ÊÒrCíá*¼œv~@Ç+t–_¯ÈZ¥/ϪX½O}÷hŸG!Th*tö¢x|’[D¥ Ü8^tooËg­ ÷¢ÈÏ[[ˆ_mÂJðN¦}®qäJ‰Kx9‡¢„Ë{<óF¹a’~¬sÌqŸ¥µ¨/*bö/ºÈ-B¹hïÀê 9¨â(®Ô2‚˱ƒ /èm9Øòù‰ühëü 5­ú#r2'å ¬;_ô¯ëÕQßðdŸêúŸÄOÖã¢D†N”ØS¨ñ¢>Ä1Ó£½æ¨Ê ~¥Fc± w0æ¨r þkÜsM_,øU ?}U‘Œ)Unã'&õ_)þAðDƒÙªFF ë\[ú:n…¿.TÉêŽÞ4Û€÷;‡ ´Üö:A{3¤q%×–Uú]˜Œ‹+€g¿CL*oKc*—ž¼Óà€Z‰MÝ=1í–öó\¡˜z¢*^ ÊâÅ”ì­ ËH“Ç3ÜW|ÚVy!–,»ˆ2Çr㸮ŽgwIhŒG§®†6Ù¶‡Úr¶€æj©Ðj‰ft_‰Ì×HˆU0H>‡LG )ÿÚK—‡¶€R$@Šá¨µs!MÜ[§Ì¯bü,ô®‹ñ¥G×W”ÃÂ…4Þ™µK+éD9ƒn~¦ §Ú£-tk<^ëÞ‘lôË‹Å;§ÞioÝxtG›Š¸xá`uœ0ÍÁîNwÔõKb¦¥|˜o˜£sY¹Ùáµ×+ ,ÌŽd—gPÐD²áFã|Ù‘FÙ=af&¨[ ‹‹ó nΠÅ¥‡Ð~&qaíFôÔšdŠÈ´v·Öö¢ÎÿXñ÷ŽlyÿØ{h³zç·ÈT?´¼GŸ[>àOw|Òº±ƒ=‚qAøvB¾ö/Û(ÊîíWvòÌê5­-, ¾"åâüC9qdä‚ö؆oVu$2UÌD°1_3]CLÀžHÀÞ K*Ç?G|ž"¬ÜÕõ^H7îûNß¹ï÷¦ÿ1ÞJW¶ÖQ­I™G‡¸ZgÃÿ=­ù£O¤†Ÿ0¶Za»ZoJ?vðXŸxÏJ†Tt‘Ç# [‡ê챡õüÖ¤¥Øå¤ôwý­¡¿k± {Önuÿºþʱ—Ž\™Öš´ 3¤·ÿ™~ÇÊ,™pl/`Á¾–¼sêDÚH9‘Ö€cèk¹ëxûÊìc €8/¶|pÖ÷tQèÈ,¢ïã­ü Ã{Çö´œì—€Ù: ŠœÉ:þñÊã=höÃwN™•œ$Þ<0¼ÖÖãl4|â²z¬åÚGà/°íØ•'±¾Þ9uöž`ë<‘´Ó¾j=vìÊ6jí«áDj먃ZÏÇçœA¯þ©ý¼\X7‰}>Ð0ë NÆ% ÕÇY,ŸË^¾PÛ—CZs¾È£Ï»¯7t$ ùÇí=Œ‡”>ã¾^Z® ä‰/ÉàÝ5Ü(-§íöŠJ^íÌtX­iè`ƒ]øÿù+îí…}::0 Åü×êüÚ»XûêŽ?˜ý,kYÀÖr?­¯³‹S —O!Ÿµ‹:¥£:fÝ[ø_øâÞï  Šë3ˆB1Ê$¯ùº°éGÉeƒÍ„‘,‘²\D»ç:v¶Ä1©¼ÔM¶®, à1AœÜïP{Г¤Y4]aþi¯TrõÌ]ÀʧV¹RÔ‹S‚ÏYÕ C™áM%fߨNd¾¨¶¦ß‚tÀ]•’ÉÞì–|4Í>¬4| zíéÓ zA0š«ã îsjPÚ¯ äxNü¬P”?6ðzy’[nIð„Aæ GÆ:j• Fªá·lN)½Á&wÀ0ã6WÒª¯öÏcµ’a0Úÿ¤œŒ90@Ý zë&z®!shŒBù稧wä¡yy~"¢ ‡ïA7pcI^5=_v­:ŸÇˆVÑôçr¸]ü²c çÊb»KFçd¼Ê„üÃN«y£4ÞÏjH9_ûÆF¯¼%“7c8ÇäMZ %s÷ª¡ÕŒšG¹Õ c̸3h9^áÓ…ã!<ø`øÄUغÎÿư¾¹jm¶Ý²Z©WÐl¾› i%ˆ m.ô×ÂúY}z6¼{v8P¥'ØnË^ ¯ì©¢X~‘^JèU eY½rÿ7FÎýL­}@±zevJëNˆïäi¯RÄɰ.Ü 5 ûja“›‡ ±qQêNDp v2‡NàÅÊáðìÓlI'¥YÌž~øŠjžÆ'¬éÑL÷Ú- €@â«ø…0;–GrøXpýÛ a »sÛŒZ @z'»€ô%ª¨ìÊ¥™-ãbé-Üä´‰{¹{ü7 %)¯U©ôª=K ÍÔTØHèé`M¯S9{d¤y£Ž{Hó1Ûs¶@T¡| ‹9Çú‡ShÅGHèì‰bÈ{ÖK~㢃.7ƒË;fˆ`™Ý¬¡z“j÷bxä`£‡ÖPµ¯ Oúäu›¯CÙK½sfõ':ֳн¼_€P”Óá‘5§BS?*Ä™èðe~ñãÃ[™#Í2èš»râîáÞÌOhÁkZ+´Íëß¼±ËµyWu?šÏq{kF“¾ÿŽ~ŽøïÂሌ!æÝØ¡†Ãƒ7Ô‘ÌÐEÇyq£]{OŸuç¤t¢6ÏÕÇ9}bݦ•è tjží÷̪Þ*"NКÀûþÏp¥÷hÝZi/<§V÷œ#šü9âO›aÙ—èS&†Væ )´+:*Z¬½Nc‘óÿ–Ö‰óõ¢c9L^IE-c˜vB§W·„a.ñ¦@­¥ô /ü ûk|•ðׯN‚ÅVV½VÒžöI4;E î’û h²ñö€¾@Z¾¡BFAM“œ«'m¦0ãà°ÕÇ$0mND †8§*¹êúëf9¶ƒÙX¿èá³?5tbf›$T<‡UÕEäšt©°î na;q.tؼ•19ΔÀjŠî цYÈ€÷Q“ T°¥YÕFän¼7mce¹åFÉ©Ûds»–€nšóùT7ãè¸ÍÌèñt•}Âx²Ñ¦_Zýbµ0›kͬ~•ùW¤˜vÿ[y¾Öò °R.L þ s iƒïíulƒÝ”º…8˜áÑÏC¬Ýßš x!4WìÉ_䢯ÔêlRé¾3×%t±†g¶ö3ž2®À!¼ ¶˜'¾87fƒB@?¢Ö =3¡¢Õ#ð/ØLa—_'û‹<ùÆ~ѧ}z[ŒÌâX¿•Û꯻ ”J ­=Ê! ‰,}£hú<š‡Yh[\ËÓ Ä;N; DÕmôµ HS¢z-'TdÍŠ«œqv0¦dïßãµ yãY¥—?çùÄŒªëW°~¤†‡ŽâÄ€aÉÛh†ù—/'…‰‘_SÞ¢k‘¤‡‚õç!êêüÞ`““ÏžJª#'‘}bü¥ScèçÐàwBWåkíÙíÚ!Óv€öèù›ŽxÞ³ËRû•Wõ™½Úz:רïä–P¸Ž:“uŒXkŽäHmÂí5ëúç¿2Ïî& ì´Îâõ§:_kœ*.Qªë>൤]Ê×ÇggÖäÔ–œ°ì«½uéØìQàhš˜´#“Q»·t\^ËŽÑ·²…ÜV>îÚ*¹É>~àÇËüh懈à&ÎÒI‰ž^èýtaLcm/Vïÿ~i—hÏ*>RŸ’Šôs©°= ª¼âçA˜7t°* ‹bHýìÛ„­5ð– ;LÎRÐ;:öo y[Àp¼û‹qÏI-5)oÙN£R·}¡|F»é-Ü àêóžíÕF88®¹*ÕÙ‘Pá=B‹L×Å etÚ¿}r¦°Ÿº¤ðf1Þ@¤ñ½¥¼ â(âzÑiÆ&r¦ÃÔÑf/Xï‰ô!\&LPXñÇôÞd.OO÷ŽéÞ±Pê ‡uzBh8<ÝPH/ðÓ&v&¤Œ?Ì3‹|¶ôú)Í‚ž°™»¼´õªÍ܈è|ÞJž(„Œ0†£ìéæ‘­º­™¯vƒ˜Kâ†1Æ –ÖlÁ]m¢EÀ¿D*Kxåñg i‹Üa\óŊŸ{¸òÒ¿ U ŒV,ç[óÁÊé’±&öB©ÕÉc¬ç°ÖJ3n.v>÷Z[ÉðÁ¼ïÐe0o± “0 䚦Qœð²—'‚Òv‚Ï@ ^žO^§­çkäå‰àâÍÖ¹š3[ó ÷NÿÐy¢È NƒµŒâÚ÷¢ºí#˜j¬*û”˜íMr;ûªÒ®sBÝ98ÔP9AtHîJ¹‰lê=—Èò³›Õmû•F­Uy¥Ýž JªÄ¦|9‹N(À÷iE­M±›Âa¾ØUëÂÕ4ïü³Õº§™óï`¸E9O/ƒª—JÐbÏ)b³Ï”#"qáAéÌQÉÞ©`ûš¼k«4ðuÚìó¾FûDÛ.Ö0áU0»SÙ#`¦ w†ÛÞV0ÄÎvî›`ôk¬ ¬ö=ÂXAü˜àCºoàcWu2˜UàòhÏ)jô÷†°kc¼›Î1b YKR!µ“ÄöÜtFw€Ùç1¶ÑÍšißøEÊ  q¬a¾Âö+o üæ~Š u›w\öaÍ= ˆà]ÕùB —iýc¼Â>“pí‡Ï_ÚaÊ$Íœp䉫F~3Uœªë>C¸A†RW GÃpAt '<3“Å”ç³QØp°C.—"õgø1tÖ3x¦{XRIï~[Æd\Ú+3ŽSŽ 'ï¯)M´o øÐÙ}®6o»cÆ,ȵù Œll¹~¹þµõËaú€3—.œs¯XÒ¬elˆ.ÌÇg<Ç]ñŠ®0P$pÄQÏT5uýá>ËêDü, Úœ—zR”Æ;‚úàÄ@7q®D׎†ýG¶o.ruGEÉg¥ ŸÍùlÈ 1À†,w@'×&žÑYB.òð==G.=O\ÎBãû$bÏd ¡¸ŸàühnKAnÑzëRÔ v;’úÀ Òx÷¿Ïeòú²ÝÉAëb¨Ãyžä=ðœ,;ñc?ðãe~4óã(?Zøq‚Î$ªÝÅýv' =Ük/?Òù‘ÁL~ŒæÇX1L~,ä\‹Tç'Õ¹”Û[Îüðóc?*øQÃZ~¬åG×yÒI yËNr¿"3×ßÁù:ùÑÅ(?zùaãîç!Oà!Oä!çó·"~LáÇ ~”òc?ˆAòc1?ê¸{õܽ Ü¥G¸ÙüØÄ'ø±…[á‘Û§óˆªS1² J$8æxÞgËa´T…ý²Ó&.>He?Î4žNôjyÞ·ò¼oåy¯åy¯¥y3j¡ª²ÐÜ~.|Ž]ò™œæ­<Í[˜f @:WASyJP áÃ*n¾‚5 ¡Z~¬å^,ä^tpQîa/°q+bâ;Ù<™î|Ä;Ë-G^Þã¾C ÿ· Žg‹)·T/g®‰lÃ…žŠ&²iU>gôJ³‡|N.âät>sàßáá¶·†à•‡|`*Ï ßßEYð/þ¡¶Ñh™E›öå°_ž5á92ož—5qÇXfXEFÕ8›Í¸ÍCÛ'fºà@ÃØöÿæ0ÆýïÆß¾Ãøµï'µ°òì(Ï ;˜óLÃÏí€à›Ú+—¼¡3²ê&ËšÁ†^økÊ~æÓ)b¦ÖtÉkÚGê¶·ð<7Åì4·méL-¦½póc"é;£¡Óz$öÒ‹æ·ŒK‡h;ˆ~ÊéìÓ¸Á=>—î´&×:† ºˆKj¤Gzª×6¥uV5úFÉä‘—2õfòÙ3V?M˜öVÿÞœíx÷yo\òŠ.ã õóY­µƒ‰k÷KØa¤0a È÷{‘5õ3œN|¨CâK¬:O ˆ«‡íÀtÐþ‘d´$ ÒžC«ÛÞ~±uq;€c× Z¯¢u½ä攂=oã&t:LÆ9hVu3ÈØ3ÇFjGçV¦ˆÖª×7¢ã¿±Œ®NÝŒ¨‚&–"|šÞ9y…ö ªë‚ƒÌÈJGÄ5>D22”ßÅúcç+'ðkÚ~N" ƨ×ÞºäݪñÒš’<1`ý¸aÏÖ-Êì°Ã '¼Ä‹Ñæ"*lywKÎ?ë?i £,DQµè&ñü0Jú´FhÄÈþ‹Èjôõì½Â)6"³V'ƒ+ª°bTx¬Ê=?vUø ¥óâ,ü¸R‰eóŽ…,[ßBcCL«ž‘œ}zÍ>Úì"›W·íÝÊoi’ß6PòŒ?ö*/áñ(Ö ìŸUý¸F£ &îYp,cö:¯¸ˆy¯©Û¢¢I}ì÷Bû3Ä ‰Îé9ƒVÌâœßÓÙp¶@Ð⌠]C/o"qP(9y¸É©¢êú—@r|Ž$GvcÚ]r—²¤(‚Jë[Kp!†õ¥Ž‘OvhÉ\Æ«ÍK³l¸™!ÇÛ¥ËBN¾¨†|éJîãr‰PD}¤›^ÁÓ‰\ÆMÔGS‚×´W¸ö>†ÏWA¸&¦Ø£n;­ÊÞ£½ r¶öÒ˜ŒÙQ¥SPŽîE{Ù´³\{u–œ G舗ÉI’ã¹Úæ¡þ 3,ŸÛ\5DšL—\±’n9Ó^Ìè†pcBv«S`º·­sš•úSÿÎ …%êúïòUî%´+ ÌG=I’ylЧHЏcGTïŸä¦Mæ&ÈFô*lÚ|ÚGÚ‡zgUw·gºi*—(’ÃÐãaÕŸ‡Ñ í"ÚT·a؆UÌ®+XØ"ÊdT¨ãå =‰„96–rë,”â&.¢ ‰p&xH*:Q®Ww¥èÏwÇ‘gŸ%l€´ YvEáv<ÿ*rÄ_Xb¦ãQ"ïIR®w³Lþ…—¬‰ÑzÙÈ‹E-³B×í¼_ø¯po¥;Ùx¶¬ó-`iG#¬$äÇ>iMèÃÁÑ)omϪÁÑ Å)¹cxo7s¯šDسìÏÙí¦Ä“´¬×´ÃÙh¶D·µ ­µöº$ ú üsóOq K:ÌÑÅ´b«µ*gPiQØ$¨ÅÂq\t?â s‹Ü0Û,{B1™ î¤™2pø¤WjÖˆB8åìOZâœ3§èäì‹­6H/Ï{o­ 8à ÂÙÏdÔ8ÿÒþ‹”¤x+‘¦äQzôœÂû¢ZÔüÐs¸ü§"Uüi“u¾ «¼ZRýŒÐtL²®† Öò|7sqbB„¦B\Ù7at¾×’oÝoéEº¸H‰øšû,TÕl'ª¢ah)›¡ÁÓJ …‘·P"FòÓ8›ûņ d±— ›·<Â;VXÜÕ+:§¬¼#™é„eåÅ–¬lÝm¬Y¹då •+@V®Y{YãDh=¾Š1€À|_Ì·;É9ŸÄùV#^º•ô ºÏ&¤Bö½…ejZ©6Èçöð…UàQGÐû·§BÙïáùy.íÉô2òh¦¡Ô—qv=B1K„Œ¦ádÂF*줚&eŸLÄã%r`(ÌÚÇó¬nçc"OêR&¬û_f½5¸ W –$NU¯àº‡ ÿ»´î›‰71Ð~{b Åo¯QS¥N—oO£A‰Î>{NáúµÕ)Fø„¡mŠ^9Ö£:$õœÒ8H,UØG .ìYaIuë﨡ªk…;kqLªñý9Xv úŒ6ȈŠ~+Ñ\^‚¦œe‚«t,KŽR…K×rºHCNÑëÑW9Œ\Å0_*8Ó¿[@'Îd‰û"÷ Ka©”Bˆ°ÀSòµ½q0?E±àæ¯b˜ üF›wÔO>ÁX7–þ¼ðà)Ç—L˜d­‡ptäòT¨½F33ÍýC Ê  ò¤Â)˜ça•@Ä_"–¹/sÔÉÐf»XMò‡{ð±Øndæ*Õ™qŒ;¯à½·ñÄQ½£ÐWÊ*ó‚½üºŸƒÃBR Ñ™ôXÁÜÆò¸Æ æ†Ïa ¶•Ƨóep}Æo{åÕþíDjh«Íûmo¥—îù‰›|g6Œ‘®ý‚ûŠ zLç¢êúðÆ>QDÜbÜ.Šlç"ˆŸqth:é¯|¸žøð½– ]“ Õ2¿©a~cj_…¹qsq\¨žþlMˆsÂq‘‚—“hΡý´ð£Ã¢»²8n'lCP†çÖ7£õ±EÄ<±1f‡²ñi+q ¢û=õ:VQço²fµ'ÄKWïËâö–:ùX‚Ž/Ñ¡)(9ž“ï5dO¿,0©X«“áÇ·("`«8¡–¡ÔùéEw@ˆÂU²DtˆS¬ÏïÕ:ÇWR$ÑS‹^%Øä,©nÛ¿ëIÅ d# tîÙÑCuýOÑÀn@‰xc3õjÂ[Ú)…ë쥌O=‚Cg·dtÜ!ü‘Ÿ¹WÉâÚ¤t}éœ Øæ8ý¡“ÔìSŽ÷‹Ì ]‰N|d¢íë%{3Ô2<‘0"ü5½ú¿Í° ºàTÇÒß>FÕ–€yARiÆàuÖ-´çÄYû 1ì ©µåK¿„»¿–åÉ­Й]¨¡ê—ÈìHã$Dg^˶ó¶ô„ɇɩßÔ4—y3ng[ß>ëÏ?J!ºKâ-VRR}†)ñ5‰°æ=N×þ–Ûå3…ÜÔð_l¼?`iÇô Ñ_,ªë/ÉkRùœ\ÄɦO‹’êßbŸ°zn°Øk|Ë–ÜŠ@,*Êšð,‰E3²&>7–‹¿¸(øûg¾ŠIM§Ç·š»”畸]Šúƒº7-ä{ÍâÉT =©¡©Øëb¡S·µg»´Ù8JIßå†)Újᨆ9f-#MsÞñz‹Wù%‚í¯U,¤ÙÊÍ"Uú™’:ü%Z‰^Gû}§¶ºïl§»Êç€ñ¸Ê…ÑöÒñJ,&–æazú¾Î¾»HºÚÀ¬E\7Ï ýN> ÛÏÛ ¾õ–ÒEË(*x¶#zË:ÌÀt5¼Jïb‘_¸?®eX4ðNY€¤^,8õŒ™û¿ÙGüfgŸŒïø,`Ôeµ!ng­ßö¬“LÃN^ Þa‹3¤føm¼ìdúncú&±Ÿ$^ãFêÅDÚ?]ÜøÑŸU¸Zî¼m|Ö0ž×'‹Ï6üX`þÃÖýÇ „Z7/o%θ\²›L>šÈâ:2ãê¸ë€“i¯ÏÙŠžâŒ?ϘÁú¦…<°Ræ_ó ¸\>+Eb\Õf•ê~2ñ[ /ÏZ¸zžTž_äöËLÕzÞ‡/ƒ„Ý›~ÓDƒ© {IRN¢= ä¸Hš¬ãõ€l›{Z‚ ­©ñC'gÅ.d:N¨azZƒ/:ÿnW¾’6ÔËGwh &Ò:_xêù ¤w ½Vêž5Wd…´¦65³£±Š‹`jªGiŸÿôˆCÙ£½Y,šÕÆL¯^ÁËx8^i³…0Í—ÝgwÆ(4áS]?6>þè@fÕýà+7TZ¹ £ yçL˜â£ÆÎ¬áÔMR[4þ ú’Á]&áó |ã©‹sá´þ ›í“™ïÙ¶ÝúhqïLWÉ û£àGöŠ͘öïS(äìÈ2ÑN`|Vd \ðǰ)éb%>¬G‹L6Þþ:üÚǬ}9zDI«iáË:hCÀÙ]ÒËÛ86I±Id­§ÕLáÊm¯Z®¯…7ÝùGa:^µ@WæA½ÍTƒÒ¬½X¢½û’g’j¡õ™!¹þK$“% )Â1™Ûø94Uì›<½ú°úLf_ËFºç˜e´¿ïXÈ]šªî[xüñ;@ #½ð 'tn)yÆC÷é_Þx$F2Ö¿ZÿêoZÿ„¯©uG¯Ëvöý´]YÎTà¦5ȹÛåNeˆòIórè… )õS ¹Ã"(ƒŸr»Dîgm| ã6^+THêPŸ¾¿m(bOgÂ(9d±(-xžSXõ¿ž¤°dŸ‘e”ßw„p+ ÷iQº8­µ+ÐøÊ…WªF¨Ï\ˆíä¾MA ?)jÜÆ’|¨­3_Tá‹à"2|Ø{nøëˆÜ0ãÙ¯›‡oPþîøòeÚ߃™óËçê—^éÎ9Þ”´éèÇÅÖ”ô¼a,›¦¤¶v™f˜o+>”o~ñ¦;uÛÅïåJòéãx„ˆm±û‡Ö¤azfSÒ‚E¢ÓŸR“ö{H¬ V¹mlCÖÓ„Ðõ/¬IÛ _œ5iا^ìÞ¼^ôbÏæ]ðlJjÀþAÖö½6©_îir"?«E&Þäë¤þùºøåšÑÙúU]îÖ†Ÿ„‘évnb’“šèžärû“á¯âÿqØ×[öEá_üë,c,¾¶(û¼¡†@±î‹nÆÞ+»lþ º¯“ªÙŒ`‹d‹¶dÿ#éMI;Pºá V<æ±ùϯI{~yô¢Ç<›÷Ñ@W¸p\Ákó{jÒþCdðn^Ÿ 9ÝæÏZMÐų1ø’¾yü‡Xt‚˜›öù(uuCÖ ÏÜö7áÚà/ãæìP&ƒÊèóËÔ†c¹BmOD™´Îîlž˜º²GžXã:û¤ÚµƒÞÄ(‘_´Lóà¢yXM ocÈŸä‡Ážn|Þc{j`µì!ìÕÚßàüú:îü; ÿÚþmcØÍ™ú:¨T°ò¤Íÿ Ý×FumFl,ơ鞈øë9GLòWÂHDç"+=JÀÍðUj‘4HqRx"j&Í"r>´–¹yŽ¤è±¬Í»Ž!Ëœ·J_ éá[ŽþàæD¾t¨—¹ô÷:{ß˦ÁhŠº& óË ¹†§¹„|`o4Ü—ÅT4ßulÞ‚(…®5%m…W¼[¹.x&Ûe"î˜"ßâDW@åDr$ ÚåŸ)D©OJrJU¬û´ç”U£æÈ ~”Xºž y6¾|0ê \Ú”„µ8ÍìvzÃ*ÜX0L?·ˆ>öÏ’†-þìk`¯]Ž×‘8^gBg#œª$¤ê“\T5âãv$Ûá8ž¥ˆKó/‡â_7a±kñ#%ÇÜkñÓ—ž£W¹¿ÜG‹öPŸi ž¹}œæö·£anµ( HÛ»úÓ‡v! êŒ"ûO3{ÊLîerr‡ÅM®‡ñeÀùeÍï¹Zþ&s|¤y­ELrvÿT'ù“_sFÏiªï87dâ§ûR OÜtÁùúæ»ØÉóÌÓ=ª¾ß|¿øô¥¼î§âOÆ`ˆ%½ÁÊ^›Ò‘·ž®9¬Öâu]ñà#I}¦Y+k{ëÔ|zU†ºíl,|s:Æï¸9xÚŽça…®¼B¯*Fýé¶{<‘¢`e›-B2F亜ƒÀͦh¾ŽÜÆÊ+êÃÞ©ï¯>Ï¥n+:Ïžwž[+;™7É¥†’©ü/y%o¡g£ë33aÕI @ÇÊ!a'™-Ï×éO‰ É+é ¤ÂI­MÐ^:»€U„-öTvj¾.½¬SÝÖœû¶z ¤ˆÕ5xMn`Ä@äÉæÏiòs"i#zÉYÈéÖ/DðçöUÎ"}>ýšKÓ ûܱfÍ îsÁš;N÷u©Û¨:xPù½Å¹}¯DFèeî9¢Doi¹AwD}QX£%ÃÕºNù*3’j™kÝ$ž±ZÉ–¦Ð*X™qP9ÇsÃø^ym8°•ñ5ìüìaUÏó¤kÞqHæ3\ÚŒqNNÌÔæsæ-ÚRq4'BUpzÎñ¼Ê-jø¯X¼d«^Œ×Ã*Ý6*Œ(8ñ[à6¨6XqŸÌ?Ñ9ž•<8óUŒp*Uw†ÝÕ¨\ Ï@cçýA¬CsÕØIŸ1Ä©‡fЕ=S§‚ú<ØÌPSÚ<—krdœX?|nÝùHØûjªsÐ=Ù‡tª[Ý6oˆKycPëæa•[`(¾-S´ÐBø™ÛT9>¼h{8ð$𣰳Z •b5Þ ºÍ{_x–¢QŸÂΩyÞ``öZÞóXªâP¬êf #š{¦ú|(Íþ¾½?ÐKžT·¹ÒJž,Ì=SõIvåÊÍW^…pwÿ¯Ø9/;Ñ‘†î§ysôyã`‡•ãԋƹ´¢øÁÊ-¶Àð&ߢlß“üØÎãöW¹5ô#J]ZÙ#ЮVòD“oógÔ]¡Æ¹ê}ÑvB÷G4ß&u›ï‘ÜuC£úL£æÛ€s<ÍÝØî^ýÈ)‡ºPD{ Zp¬òêeh¥®¦|±”E[¦Ï$«kÐ2Xý`õM¡ ]zßòJ¢j …–çÑkT“¯†d¶{¯<¿”Rj©LYm^Y›ž!õíÚóËéëZúZ²6¯ä¨vÇñ÷çWÐ÷:ªïEJñSJ=×WŸW¶K #-S}ÁÊ 6ÿ$½Ä£Ýí¼]ôDå¿éGÔmM<±ÞR½Ì;¢ù6)ª!7ªñJ<Êí^˜ˆ'*ÞŽ\©õqé,( ­ð–÷/ñ6°hG`;e?óB^&U6Ä|õzI}^É.µîD([ì@xɈ:î¨|9æ«Ó}uy¾jÝw8‡C­Õ(Ç ÊÑó­ÕËÖæ•UëÎôQ§ZûʱœrœŒùjõ’Ú¼’6µîYΑ¤Öú(ÇRÊÑóÕ辚<_‡Zw7çî~)åXB9zc4•úƒ4eQµîFÈ׎[›9ÄsSÍ÷ˆ^ö¤Vfb]h@Xªrñó'p_ ýÀu7ð„{‚w»Ý°ì0Ë-ð0¿etOƒùÌlóùƒG/x´i®¦I„¢ÁÊGw ÑŸGf ŽŒÔ‰êaìÛëm]Ÿã O¼×Äæ‹ì„ÍK›ësÚ‡Ùq «Û?Súa±€bµïõbs _ãð¹ýr¥‹yl3ñ?›ÛK# ÎÇà[$£<: þRÜ—xü½Zâoö9ð÷|*±8“ò*•y+X¹$ôÍèLw·| Œá‰k³™Þêæ›˜}˜²½lBûA@‘¼¤.¯<ÝDrÒ¯ùZ¬Ì+d浂öë^øî¿G÷´2.—M´ÿµ@{ÿØ®Z—ÊŒ5zI HjÝTý~€E¯•q‰ÈÈD`ò²:ž8û6†ݦՖdbÐ1”¸ÃN-œñ"beÞ…/· qU]¼¡ž6ÿصøb¨ÃØX;—Ùæ[‡*¶Í˜¨Q^rj•½5—GkT¥g?i œ5³ù=ûi;›¢—ôÖLu@ïÝzeï­Ú,§Öj¨tQ;%MNÎ9®õ÷»ò¹ÕðÏyîƒU? ;ÓØdڹߙ¬è•·6}Ï>Wý°7ÄçÕCµ¢ï9k&M ׋†:áìõ†ÂBô=wûpÄeçop]«ôêó†ej¿«=&ñ•[²«¡Í( Ð2Œùœ#×å›H4¾v«VÛÁŠ¡N›¿°fÆ÷\JÎä=áßڸݢýn(Èb Šk•]X¬(ש;ë¡*Íùð$È_ñaäÔ*]ùcY²»ÉI”Dy¾ˆL¯çþ:aïoßwìwŽp@oFØ“lá‰?hüÐN}ÊÕmZÑ'¾ä4P‹ onzsÛ§¡MXh¾å$¡ëŸÜ€bƒ,³»¨çðN"œ±ø”^YÕ®ˆ?$¾‚ä]xñçÊà †Ä|1^SMüY¯› ÂÌ Ôû8þÚ\ôÙWx‘WŸÞ«•tÅJÜywåù¿@Žß‚{Åza¯æ\_*Úá'e6%M¯¼s™!Þ"£Ä&/'&¤áð"`´nȼ²«¡wˆ/DAÀ Ó(£áña–'§†'få]{T ¦E_ »L¹ñ»!0LÔ(/ FO£Ÿ%½y7œ¥Ûdi|1ö ¥ç?ÂÒ˜¨Q^,M™sºó€@¨©Ñºq …½@Cšó)ÜT'ì\)PŸ?iΑâ¥h$ÐÀÈä€ÏüíŠäBÉàÄ§ì  ` ~šÛ«ySÄ˼gd8çqÜaïJYéÃÅЉŠÕ<ýþK—)zI×ìØµ8Æ‚H,ƸpóG6Ûf„hpŸÇ-Ú̇:gTáŸk¶¡ŸlÎqÈ•·(Zy `÷º¢ý®‰vÖ]Éÿ ÈŒ‰IwM.ß½Ô“ír ì/5V~‹E†%¦]Ñ‹‰6]oüþ(¥ýoÐ8`v´â7Ôu»ÿѯÀ0îò¿0»ì Þ@(ø9ç ¤Š¼þE0m¨WõgÇ®E5$Lü5š.„…–_{A¦³Ô°Á}nÀy*‘8ŽSÃÌàdüT$MÙýƒ¸C¿LSlc³á[Œ~4(‰ï¿MâóAf¹aoöM¨o¶Û¤¾OL}¥P_¯ç@¥_KóLú[ðMèoÞÿ*ýÝ;ؤ¿‹ÿËôW4ؤ¿÷ýÿþp*Œ–%ýUÁŽyóæ†üÉz¡ uêÔm˜?‡^Ö9'v-ÖilyWÎßÌ£rþ¸ôðX Ê_Ÿü–ùÕE@WÄô²·Í,N‘Eôiëã+ 'ã×ÕsÂó—öoÏ_+&<¿£ Oÿ€ðôŸž«ÎÏUÿ ž~Úÿ¼cîZ«$k›ÌJS{'em3³žˆÏʱ@ø)”Õ0³žoãL· ßsõEb´oQ쯰µ*t’5‘™æÔEæBÐ`(ÂËæ±9-û!½Ð½í±à{ Ûbåë…žÍ/s’ªz77£… Ù½(zaúæ£æ§ŒÍ-ôi3ÊÜ|Âü”µ¹>mâO£7Ÿ4?Ýl˜BÇmî0›G[˜L½püæN3÷„Í]fE{âæ¢å§üÍS>ÄOXÊ¥mža~š²¹ôCYÊ®ÎÛ\o~Z°y}ú=š±ùóSéææ'hkáæ¥æ§Å›—Ó§'¸‡K6OüPvG_£.ÝÜ`æ^¾yåþO=OdòÓ€¶{ù}P/¢°¾¨Wâ¯5ßž9{¾mÿÌ·5©ÞøIåN­›aõ}æ™þ}çô« }ç¦øÞü“ÞÏ5xÿ~uOE{éLÀ‚û§ÿu8ð¨=8"“¼ @±ÐÙˆÎlNŸ† »xHyφTúæhBR RAo;‘lÆ'Ù‘ œfÒã\×èÍ®-¢p(»•‰Da‘ÒøDRš°Ùc–š¸ÙkR@>Dºù©hs†I$‹g$`éæL³Ô¼ÍYf7\H+£ÍO 7ýPâ… â,²]²y\‰(,J^žHÉ+â(ÙŸHÉ«â(¹"’ƒ›`b$1Óƒxú•@ÏA´#’$ ÐP<ªƒ¸WؼÉÌ€§Ž›Ÿ03¸ô ž3nÞbf@qqóV3ƒGâqÈæ'Í xìºy»™!S¢ŸÌ³D}iJÅðb_<›Ðƒh•°ù€Y SíL 7­°ð•“I+G¢Ñnþú_=ßœn´ %Õ÷²¨F»–H¢{’Vzlþ¡–¯ núh‘ÕÉÑ=¼HGp³ä‰ýŒuÿëç‰×¬~ÖtŸÕÏ`‡zê¯J¡÷‘$¼ºf+]Z3<ÍeDþëº ¾ºçÆ.ã8ÿÞïët«îëÛn»Uóõ-S¾¾Rã…HÙøÍÈã¢Äãæ3 * º¿´Ùv[|S±#³&Óßs@ò.7~tXšÆ%®idû& ¥ÊiÀhËŽ·ñï«ûñoÛËø÷^h;|K—%Û'ÎѾü?6Gk—[st¢+nޤ}ú>dsÚ?¼¨>3Û­•u­+0mí:jîv'Òô©N­ä¤öjäB¼ï^æÒïp7~â^ý²©èshŸ5žr@<ßï¨\‚{2´²íPe°1S+yR¯ì˜%̼J`C¶]Ýæöhøö¤îõhe[ô’íºÓ•{¦r¸ºmæÛ.úC/Ù ßóÜ÷ܹgª^v2·l ši ; TPwTlÕ}°#éÔ\ºÏ«—E5ºísÝ—®  ­ ½ÛÚÑ &'¦—¹É:ÛÐÌX¦”O|piBdŒïð‚üÜþ;Æ£‡=Nn¨[­]–)0Ø90#XÙ•¬†È-@e/Z¡ä꾎)Áh²º­`bY¡µhQLû¥—ž/Cá¼iKÔp1^m«ÜÑäkæÍôažLö•»š|GùËQú2C ޳ߍlhòµð÷úž¯†Úâ¾ïkòàï'èûxVH™ßsq½¤¾®œÊÆFåeZ7@vN9nXŒakpÀ'•2 ãöÌà>7ÀÙ¨h VvÀ^µÚNðpürlÌ×uAEƒOvµ=bé•è넘ïô»QWCvµvåØG9Šb¾ ¤î{œÃ©Ö’;µÊÊQóh (êzÉX¢#I­íC»‚Ê]”caÌ× D0Ö=Ç9’ÕZrGR¹ƒr,ù^†IÀ¨«B3"´þüÍéÎi`ƒÃÁvÍ·ÅœÆMlþZ”ñR,À‡-Z‰œ¼vòS¶E+““Öî kÈ#§‰,µ)œ˜öMä‘S™N¶ò,\‚È®hο¾e†b&¥Q+ÙJ3ð.ÏÀWL§úÔ±ÂàTñmá¹ày­ø#OE¦Àš&ˆš¾fü€¹qå͆¹YnÎÍÊj‹Dµß>ÊÞba\Ý1Qþ{¨æR³æÊ ˜{”j†ûD̘¿”j]hÖº‹²6[P÷”˜:ÿeTëR³Ö”HèeªæÐYs·lŒ×¥L!cS·úÌ4·48¶Õ <¸¦ 8W’^î„íoÀ­—»?r¯~Ÿ8ÖédàrùÎJ—Ö î¬8yVfhè‡VÖ«•Eƒ§€àÉÝ |ú®8ªû:Sê™ààWÚ$qTî¼;€ÞWã8ª•5H¨Üyå@ò7Q…GµÀ>I”6*DO~绩äqµÈ‘JÉ㤒<Ž¥_w>ô€A¥äëåw,ߌ–²î¼ªÑ•óé÷æÍW!ÿt•·œ£v”±.¥ ˜±0OyS ì`ºï@ëÏNÀºÇí ƒ•c•ÀÑÉØÜ/GWü¾¦…ˆ'4ÃgGù­ìhÌý1òÊ¿ü„0€_‹)ÓË”©ˆ2„qá „µa'e:@™J)À¥-¯ðé#B’Nà#(Ó>Ê´2!F#`ëþ‹3%‹€ e ”i)e‚™iÉ+ºùÀa\ƒ}tù•8ÖY1§÷)f'L~ÎTét¾WbNkà¦un¿.‘SÛî$þ^bNfà$å‡É|-Ž?—ÈÉlGÿÍ&/R¢•ìâ9ˆ‰Ò%;ÿ¢viÉ1ßž*É$ök]4]oñt}n“Óvþ•Ùˆœ´?ñ¤5ËD H¥§ÎĦº•æìý¡!´X$Z¦Š¹OZ¸Y7AL£Õ[jÖ{s¶Y8.xCg’&չЬsæØÀÆbÁŸõ*ê½>1ßdïåÒ>ë\Wèj0ìÁ6ºÖr£vjäúúšé.{äšîB—â¿5£þ! œ6¥Üˆ„Ö¤ÝkHUÀRL5^ý ½5÷‡*ýN'0ŸÈ·´îu…n穉Ê].HjüÄQõ;¤-@”÷Ö"»[ëû0çÈ–Fxz†Vr‚úßvÎÑ+O¨ÛƯ™”WÖVÑ O!ª]ÿ¯sú 6öÏ¡¾#1 …ŸÈO>&ô¿qa2@âÔ+ -#HMwFR>@Pt‡Vèiü‡C»Óóuƒ/Ð$FÑ0_Êc<Å¡ìÜÏËÿÉœ¹?úçs6‹Öÿ¸ùÊ2Ñé†/êÄd*¾¤MtÆSŸ†ÓDÝ€u™E¿ ã¿Æ¿Üš¯K O4_ƒµC¿Ç©Uv†ÇEKú¬¿•ó7ærE†êyZ¥?‰“waüäÕ÷Ÿ½Ü;½þ+¨¿ƒ †ßÃÉZ•ÐKL2Vý”·VÝ~7LÉ|#ÝE*Ôš»úàßW°ÊÚüç¡,Œ`ìÄéãûy" '¯©Ð‹ïæì=eÍBÊš‹µ†5{ßdîJ>weÑÛ7¿Ë¿nþn^öÝüýòìùÛq›œ¿ó`þbwu߇ °1Ûyö4I˜Æä¯™ÁmçšÁýÿøWé¯îÿ§èï±¥ÿ×Íßôý‰œ¿!bþþýäÙS74aêRQ~üПëïýèÏÑ‚"þf¤8ŸQî¸ Eí…Ï9iÉZ(W!Òè}®Ä߈]wïñBÃ¥F³£ß(¢‚ ÓóÝ‘óüÕxÍx_koè8_¾Þã±ù/ÐŽé?ðè…­ÀƒAžFÐMq¶ÿ‰2¸mþdQÀ©½¡Ïu‰¦€Äÿç¸ðG ‡’’ôi.æ4wè ?YŸäÔ œÁ_:aá=¯ÔHÒ¦¸`‡¦¸#ƒH>OÃ.ç¾í/B€IØy‡VêÔ ÝÚ$·ùéMÂÓŽóá-o+0H+uEÎãûð­ÔIÖ†c=áÂ̈=§ÁÒó¬Teó¤ÝõkÀ=×(¶Y·eï¡ÆMâ‹(œx.yã{xv0Qýº÷ÌŒbîÉyD¹ñï}Yšá@A¸øæ¬¶ÜÎ;9Ç#C—ÙJ¶w±UR¨¼¡˜ß½ô¯°\,³=mènÅŸ.¼8«M[àÕÆ…d¢°Kâ×\݇ ©/hkÊgÿùü ÞŸsP'„Žø/ÔëJžøµ=Ï80Çi‡YŠœd{ÇéN˜›«tGžðïö ·*ð+Ð8µ›<‘óñKUªv“;¢Rþ›\Ü ±n9ÞÕx¿Gísë6-„ ͦPº¸ÿÔÊ0ß2åM¿J—¾]ruç{û=ó—^JçßÿKÉë)ôy¾þ<éEïrÅîr¯ &oð¸ö¿ˆ Kgc™,ó;™”…IWaR]Џ_~~4b÷ó¨‡j?‘ Ôó—C j-êÂôC{>júÃâÏ£ÕÐ\ܬ†¼¨›`WCG†Â=ÄRóÃ4ªRZ€_˜¥4ì[[Ê…c+ÜÆ,ì~^“ꂟ§jüS€âB9ÈDÂu9ÇÃÅX‰á’µBáêuáÚy.§6oœž.ºM<“\õ] mÞν Àû5Üs96Œº'ûï„t*vŸ]Þ¿CLRC_ö›-ç¿É¥ùzãÀ"ááë*5>µ`žBM–M C}ã×ejh:úµ€Oa²pX]x!(â^†8¦Ï7ZG›µÿEKî _µf«ý1¬éy„N.b›/„ý‹½08 r¾jE9ôYN½hPºæ¼ZÑÕø3ž ù£ÕFðo ÙÄp"¹Œ?Ò®wª¡»{êyì·q¹Õë/ †ÖC óÇõ½plɦÖ>d³Å¡f-Yh>o£ÉðñàôÉNyE¬3ç`î_ñcevø·ctב‰óÍw÷dêÓÕm=ÚiÍ›^ûYE+t´f=š¦:åìÅþЏû+6g¨c óõçaÿÓÛÿ $ð„7mæ ¨µ :I3ùnœMÀ‰†:]¹7å"õ¢>×B¢™CL€íaï^ãÈ)þËè;nŒ S{¥ó·ëYzmð«í¿²ËŽà4ÕTv%é¾^¹>úºâîÓ*D/Áç=<¼_Üþ_ñÀöjþ Û;ÓPÀ_þ+ ðíWqSeZ€…ÌÅ€¤5û+²„jâ¸Õ4èôH±¬ÍéO£t /ñ}Ü×õê¡xµÇ‘ j¨ !V ¿þ›ó1åkIàpäûB>“X8ík°ð*ÆB^þ稸Ì&ÑÐQ2 -ñâ6„ jèþ]ó_èâþÓ¦5Y$Õ#*X+ñhóm¬ù6.&}; Äû™ÞùÍ-Þ€²/gêÀ%ZÒ¹q½]€=0,®_µuQRïýÞè·_Å~5] ¸ÝÔÈcjIGwÈç¡Ý‹ÿö}˜¿cèÇãoSìZI§¾Â©/p…W¹õ’޼›ÆWߎYµIè¿t™²4Š§Ô¯0‰ç1…üÖ]“˜MÝ=b]²ówGÝåîi›c8aøä(ž:^ý ÿÊ#1EÍö9¬ßǾÍÄ¾í¿ úv·wí\@I®Õž·Äò<ä×KŒÙË”e™Æo~n6„Êeý‡.1Ž?èw¹Tåpýœ¿/o¶ 7ÙD/›ÙKOãØo 5¿ëR&Úýcï4Qñˆ,F|„ ý؉Iþ#s„ÿ¨`™-v—Ûø9 Lä"ë÷3NôcýþK²ÂFF¦ZÉ—¦ˆäÀxÙÃ× ²‚MžXI§Âå aìKû°³ÑŸãžé„µž'l•ž&ZˆØÂ¾Jõ/BO1n¹ÛºÍ®©|áÛ~7üÍò'Ãßï«*ñÖh„v9 í¿âóBáõÄemBû$ëìJ\F¥GSéƒÖù^X›ÜŽv*ÁʶÀÈue/¬mv¾0qÔʱð„yP× ²’‡sòÊ4x¢ ­¤šÓ? |'¼¨A/Ù¡•l-ÐJvpfœÃx¶EœõЊ^²u­sTd¸¸ÿìMrk;ò*­ÚÎTkŸé?öÛV™cßÁ=ÌTïG½=´µ¿(»dÈö`lµªAjî,W`j8ÐLG{ pëZžou÷èÛ:;uj˜ºÛlhËm ŒŒ ‘ßí¹¾­”âI„_¸)D1¬Ú¬Ün«Þ¬|Òæ¿<§!’ƒë—ìä"k<³ð÷ë÷eH/•ãloŠ÷7ƒæG4åØ0EÆbþùÆ­U’憶S¼à5DQk0PGÎÁÐA5DÐ UÓÒGЙ~— $Ãã·oûSù%+° v\%B¿ô &‰II¦II^Gu­¥¿êîæuÎkèkªºÛy €'âÄ—Ü=1áB%Ï箾TÛ¦N•Š^åB{ÛøÝ~JÊÄËÝ!<ã>dª¡oŘ¢‹‚¸{¦ô¶cwö gNuÍå|‚呿~`Op—щöЃ›|]ä+ñ¥Ó d­“^¿]ô›œ^¹êá-…4$ƒ¢Ã“³«t’Ã#òl…þ‹ÅØÐ¿º³:¿É×éäLäŠÌ×…^¬"?%zët%|!·U³¶IN8FÐ ð§CvÁiu!âΘ¤âh¹BI¼Å× xС‘î@Õ‡X_2„ϱÙniÓ"ÔSM>D%̽z²º&‹žŽ@o¸¯òo›}%€üð>»¾ï„Þ.+S?x{¾0¼Ï5†ÿ ¼ œoÀñÖ­Îgsõýs »xü—s$÷íÊQÁÆ –wæè•8«µJcRîÛŸ+»Ð!KÆ Á®´À°Dl‰¤jݢќãz +Ƈ+;µÊ“°*(=h»Íë•'çZÂ×ÁD§ê¾Nu”ÜOöGt_Gø––x]œÏ%Õ¿­°‡¸BÝU·¬sÀÂx)ð§EfÁ¢x9,Š×D|õóÑWVìN·ñCØŽD®²~ÿì׀Ǚ¿7£\;Äú}M®ƒƒ‚{=3CÝÕ¿ÁSÍ®þw\w‹+±úl§>  9ÇÙöa­ïŒÐßoIñ{ÿÌ@cˆnØ£2»0÷õŠ®œã¹_TŽÑ+{?u Ÿ´½ŸJ<³Kiá‚ ÷!©0÷‹Šã¨Å׫,™«õ¶ú,7ŠS³\ tK­ÅàAìï¨Ú9¸jPŽR¤ ð¹f3¾õÌE5LÛ€ù~yw=T]ÒN°oPõع¸w‰]§—tÎ6&úL–¼e¤¾AþïV ö)þ É;i°o°Z»ž^ÜjíÈú¸ôÖÏ-]G[ õHºŸÖº.[erLÇÈrs— ‚ŽÐ÷ërÌÐÅõûg¢cþì¹á ö–eY·˜Y1déÓÈ8^©'rµ×æŠþŸ$†;2 G.ÒVd%WÐó€§FG£–Oqþ±WK¥Çud¬ñ›%RD¾EW•’Nè´R5Kæ-ÖÀ¬cÊ =ˆòp^éø*ÏÜ¥3Ønšä1×ÛÈ•=Uš7i|Õй(þ?[) Á±’5t­8T?‘¨·'—šžÄåÆÇœoü²‡ˆQ»ók›¦£ÓN)ÈÿÚpŠ‹R”ÛŸa6„L°ýçXmÜ‚ûµkœ`{%É?g­5YœÃÇûnð¶8ˆ-Žÿåý×’ˆieáæQ£ÿÖž9xÊ̵ùÝz&8fc‚\Œ¼ì™¤»R¤.Þò)\î–Þ[Lϯ'ϹMùß·ÙþÕõÈöMÖ£ø9I\âçãºÙú­G4Å´%Ëõ(C¬Gß!üXå¨p¹X¦Âzëѽ°ŠäëQªÀ*t\ QŠy!\˜s°»xp›ÿêðÍ™õx3Nx:‚IÑHWžó|¿KÝæ<ïšð\Ò´å6½Á™ÒõJï|^­€ëi)d¼¹;§[_Ô›8Yù ±ÿÂå­ 2†“RѼðÊ1™Ä›É„nT©@)ŠþŒV ÈåÇàVà2©Ê€± ®JÓ+ÛÂ÷ÀÜS|¤EmÅÐ\ÅúÏÞ­½.‹^sYTïG¿Â´4^EKã°È*X'ÂÒ83òsîï|\pô÷lZÏàY–'2s>žÖq:ì áK*®–ãòcœÿ¢ùVn}®(.Ø^:ǸÜ&Ô‘°†Êa¥Âbª®¿…Åg±¨§ýCƒMœ;¸P1PîlüÈ¡•mi -–: _ >ÖÍÜОD Ÿ€5”>Wf‡+·’¿FÒ;Ï—®y'À#C›7Á ÏLxºÈ‘Y+{¬\ô»$ —=©±¯¯ÊíXž¼1jaté¨;‡ß°.{]cÄwö YVC>)Äly3ŒM*n$ã}ÐMjx¬ÂÆòÂ,¯ÔµšSvÿœ»<5§ÿ·ÚÛmÒ_d 9×túçóK’ÿŽv yçË(ÕËÒçÀvT96›œÞ¹ ݲ6 R²ÿ/½,c"s:dò*-¥ð^æAöu§£'Õë%ð%Ýß)oCužØínãO½ñ};±±e¶e6Ñà䯬|€åþkÛ§’µcÆ«AX¢ç߯È!ší^ÍäpaNJ è“Z÷m±w‹²·aUw” žPÔÚrƒFìx½MiŠ¡£ÅGÈÕÞFÎeWkÉÒ]íq.ýyôY‡y7èeòʨu7s^‡Zûï”·ÅÊ»Jäe~GÕºaœ×鿃íÉ|~‘¯N/«Cç†u/Eù’üÓÈϞ̷BäcG•jݯ9_²ÿ[äfOæ[.òÕ’³Ä¨ZWB)«ðïÇ'î­]RÞõèw¹IBôÈ­ÆÿÅÆ‰ìÚgIQòr)J^ŽuàV?ˆ‹P©1™·ú‘1Œo1­Á¤n­1w™‚’òw"6jïwÒ¦Þ†§$J?x%[,Dù¯¬Œ‰#"?"ù;:Ø?6uû'Ffão¬ðºr×M’cäBO¡|¹±ð NpÏÅϼBêæ2Úÿ]´é1%VôJD#/G–%a121NãV¶·Š¸ëãäã`5žæ;îrEìŽëºƒŒ‰9¸÷™k,Z%eÏoÉ/#áKðz[@ÁÔ•EsËzÕºß ‘´C®A«;Ú˜ êoòma&áêÎw¹ýÀ_%0\/Ëœ³t.ðetŪýg)”gÝfê‡Ñ{hÈoj±sÉadå5è)×âϸB)éš3‡œÍ _¹”˜)Üå>QqTx'Ž¡bàöG‰Ûo\¹$]Ý|ìÎáHP¸øMÖ$%\™[wÛÇ„'¿Ÿ‘ìRÂØ‰vä ²Àά°ƒÌ?9ѱË1¬3\g»0.qCßåz€^Œeå3D'¼ÂKrž7Ù?dŒ7è A‡¨Ö]‹%+Ÿv¼Û©¨ëÓÐØ]!G¾OjerUAç«—J¯¿4â2r[Ð[¥7˜« ¸T/¦J/7Íw¨Û¨1í-hÁq·Û\xþšD OÍtø+ÝI³_Õ<¬;&™ëRrœûÔ+ìýݧ¢Î65L1×»ý§újó|°úìŒ__âý§R”Íÿ©èRt—ö™ûßÊzXkÐy¤Ö 98…üRx†642íû7{×<ÐTàb”Ë[ Õ‡6Ò7‹2iú§òpvmš;’Œ%V¸“Ã%[fãò`,D—|¾G“xÏr+·ØÔEB,Ëì¾Wë`l2X6a6*û‹6B[¿‰Tò  M•~š›?]ŸíT>ÇvJÝúT—æŠ •þ‰¹é ñ]Ö}™¥á²-sfoœŽï†jv#‰gŠ5G }iº'ÞTQÇkÌûÒ=1;†•¥ÁZY✿,y:¬'5æzòDœóáé…V‘bQkïs>|R:†õcçHRkÇ9îLt> ëG“X?ÔÚ ”oqL8)fg¾„zèŸuäkîó˜­ ˆÙL<:ȶ$/ÓUñ)¥êjtUœX x:ÎW±ED~I<ÁÊ Ž»<¼@2µDF~+³| gèsÜäkXÒr–à6!qMjjÇKZõýéG§7áìü=ž”ÊjÈßð³ñôGOí?QA‚»Ò’ïâåÁVW½ÍÿC$˜»Ý‚6Ç’@âÀF‰z(Gó£ñØ÷+Ebß’m2»köÝÅR’r‡›pgd®ÄÿiØÎín ¡ U~Ϭ’bªÆ!4E½õmîIJÃMÏ+|n*ømWlgù+f!P}dL¢úq)DÃ1`}‹‰õ–RÔ9Ü„MXM™OžÓ1ÐÂLA þ >‹tE $“"U¢çâÅ2{?Êx%+ß#áß{c‰g·E¨ÇŒ!Ÿthà dÓÆüháÇQ~ìb1K\¢LçÛM¾f¡xb<öÜß6ej•/ÓÝÓ ­ä¤›ÒµÊ}zIƒ8J‡¯°S+qkóÞZôN€7§^²¶\°ÙÖ¼)1˜µ«ýykîk¨Ø {l6 û¾(Tàƒ5Ï"SBzÁŽÇ‚_\¸0XÙ ¨ð;u˜û½ ‡Û>’Öù¾Àã>uÍjBö£6?lÃOØCLuÎ â •FØû‚ºÛ÷Ex^i³Vf´¿Š4¬l±ù/¦€©9Ý2Ìö>Cý¥Íí[OR}'¹í†YGØ«YõuðýFèðõ™TkvF ý‘*€ß^€=‰Û»"éò<ºr—º­²C«ì€ RΚ™öl:Yý"S­½˜ßRÕÚáü6Ö?þf«¡™²‹Ç>pYJ…ßÉøÍ­=M ( á8£Ç×*ÓSS($ÑåØÅÀ0t ¼i›oΨóW‘oH£Wv௉«#Þz±?!~Þ„tLõ*؈ÿBlÀ‰c“YÜcƧkþgÄ+¯+C)W"ż'õj(5hÈ‹~å¢ö@,[㲩uµñø+°ùd·Äas!ƒcëWd÷´n²…o{W¢ÖÆÄ²?~_*~AzÍ£ýWæ4€€ö?™ó#NÌÈÖ‹+r1ê¦.-Ãß‹ñ÷hvœæD Zrò %…cW©jöð-OžecQæ¢#‡œƒò˜¡Ã¯ªÏø:X>(Èm¬8SóKw2wßwj‹z#©ú/xÀPÙ«OJÇ£‚¼ì&­Ò æI…ÐxU憿ŸÆÝ{Òµ²Nõ™Eg´Eᢩ_é•]xlöNÅœè•cœ«Ûö+>ƒâ±¼­/‚YX„:ÊÅ–¦ºþkûŠýþ¿¬ÇR·Ž{ÍÄß±\w×ä&ã}ï|:§ ea_Ì:Öÿõ“ûœÂÎúbÈZl×½Á¾XÀžÓÍÜ!†Ü!R<ƒiÇÃÞßPÚBH»º¦2v½ÿø›éÿ6üMõgÂßl6Üþ0q©(0V¶Óv¿«¡Ûqƒú“iû C£-¼³{“ke2–|{‘Šx;•õ¡n {Þ]®»&æ~Q=!<=†ô5Ë©uf·äk“]M)ÄÑp”PœF¹u>Æ% œ¿® C*¬õê1팪ïZ Þ²ƒ³-@~<ß×e oëoÍýÒä;ÈMû·^²]sµãýʜ؀ÖzÀ³692~gú/‡¿©þK‹´Ê­“-3¶p˜VÁpÊ-²Ÿo9õsg¹ÙO<LUáýEßià8·Ûñ–.FKÚê®ZýʽÛ˜4h- Ç£¹ÕÓ~h‹º;Õ2ÙPM“‘Á€{Â^#5æÛB¯¡ÅF N¬o»'V²mYª7’Ɇà~öq`ûŒîñ8|?;Á—« û¾–ùÔrãÚ'ÈHC¿ׯ¬¨[Ñè­»Xñø¯ îF.©}gíÇðRœ` ‚„[Ñx H¶8 _p’èp±Ð!¨!²#Ã(Rµ—£é£¯·fñȺó½ùþoWM±U{ÔÐ̲ªÈ¦Þçä,Áü¢X°tJ¬½‹„¶^=ß{Ô}É ø'^3S±—_ ”¹UùŠ«|‡<þÇ(ÑןpËÛ¬¸÷‰”B¯ðX¶ê"½¤W/ð@×Ùc×'=x|ˆËÿ]ñµúï¡ãl®ág²†ÀÍt‰gBÏו7ÉpÄ ©ãþ­ Ï<_We2³Mrr°œ_˜·ÇÐÁUé a”ÇV¤7^èTóŸˆ~QdË'ûwçz–îLîò¬ùÉðžÙÆÌi 4¢•ÑA5D»“ÉYúüÑÁ†Xðl¢xšW»©¾.ÿB]Qöj“³´~¹&»Õ|è´Àí¹¥CÛ«½©ƒì¼­¤SyU‡mè¶²^åÍe¶ò¹óQÙlóùð·fÖp^ óäÖ&D.]­OÔççÏ)o|ù[ÌsÌ#½žXË kÂYôøûM|Í‹˜Ÿ'ì;0¯,4g °æ?ñÛ§ÁÊ@ZÓ#‰dƒm)Á(ìcÈ~T’³ãLÎ9±îb‡âŸ^ôòÜØÊ ±•ãÆ"›méذÎ5ù„~થÏã!„ïåRãË"i¼,B¼ +_:9Ò’q°fn¦Jußi:{˜¤é’¦}€è\þKe<åÆ¿M‘ödC"7ÕÇŒÒJA&Óëò'Q«óñK÷oè ÒËñgÏ/™÷§–Ï5Þø°ÆA ^Zx·+þn—Ágç!Mû‹Ö=Š/Áhª?)uÒž££ÙÑ,¡’Ó)Ïá¹idèsx/2H_mƒ™_›aŸ<}^Õgò®éÁFí¥Æ3k¯jïb8Nÿ‚•n§¿ þÚnôdä¸ UÒÝJ`¤HAAÜ*ˆÇÇnW “>Æ¥k=xNéÒ 9GR÷§¾…QMÅØt«÷Ú`R´EQhí3ªÝÔü·Û×ðþÆã`ûExsòIDûÏ,ýµ7±ÿÎn/:[_ä=@˜_n\¿&¢víñßÊ3¿&Õ7Çè\Éõgô/?G”?i;«|(O>yÎUþ»¢üg—]”×âÊŸß¿üù\>2²¾_駸4À·{õJÀ'HW4óÚ!EÖL°UÓEÕÝÎóJ2t-¶§ƒñÃëD.„ùÐ…¿1SîÞŠfh¡‰´ú´[ FÅ›ÄLP£_…*b«1G>ü |Fݾ&«T›|½(ÅF®bü Ū“i¡î•©ð¨s¸8+‰¸I~ Ì%£Ä|Wc[àr*ÖV;i%÷(ḞW©Ý«‘X2ýÉ1úÔ©“:Ùödc„lÌí¡Üƒø˜"Ó¯L 5T†ÌsŒ€f'¡È{ŠÎ,ôEž¹(@7 —ŒåRü,-9[ì)¶¡M"1ÔnB˜>×i»Ž*y‚}®À ¹¸Ü/sERêɦ©|ޱ<Ó4Ý‘&=z»=¥tY¦±'_~ŒåÏ·¬~`Yìë ¤G.dxZ_hLÙ1ÏF^Öðb©ñËü„.&Ä"!·i ¾ái(l|wçö$+6ÅXÜM€÷çæÑKõ˜òð}ÜC’²£ØÅ‹eýÃÚ·èQ§"²Àü¹Æ Ä• q_6<÷áò¹.)ì¢ôÇ0_mC`ЭÁݤ»¨ø^x®ÂYòJÇWœWn<è W ¡N 縬là¾Ñ”1fì¡ÏØüß³²À¶æL©q»• Mâ E Æ ñVoáêp<SïÇ-á‡È­¬‹*-XWrí ƒוã]bY÷p«îGëVË–ÁÒ|½:‚Í ýÑ«îVJß“³üã¸BcÊÍf¡i9DZíÀQüŸf©+ c¾ÞYÐÙõt€}Lï?ðUß³0 .>-ø²˜`cì:Ç}ÈKcÏ n“àóãUiý>LX‡Ô0qªß9qf £<.Ó„ó`z1¦»<ÿ¼O2‡¦ûVpõ îæ•+­4²O‘·âàn/‘7°hؾ=„­÷q<ÄDîNõ'Ã_w Yû¨HüDIi@U¨½p꣔½‘Q2˜Ò‡Ò¬tÇMxW:Ù±G†ú Öº›¢¡–‹–ýÙúcøÜÛ¤‹$äæŒ'Ý ‘;¥Ob%ŽWdÄáÝ8ãâÌY·;,Œ‡oWµ_`7ác*ÁiÏ>Í€kT…¹cÜx_bŽ|¸£Á˜§ªÀºgŽñ…PàçávbÇÍü8ã¶ëå×R¦T—‹ ÍîÍ1ž6Ë_5KÛ%¹ž¨ý!|ßï´_#D†"lÀðŸ*ñ,Ûd'­1¸º¤ }z. $ï÷ÅŠ"NøëcKâèÜÅxê??ŽÐÏã´ÀààÝN[ )§ä¨ ÖSÒä‘¿ ýi!9š~iŽ 3±§MþÝHL,ØŸ‰œ—éN€lûL¤ÒnK¸a‡ø×NÁ¿æÿº­‹øWvÏÝ®žw÷ûú®Ä1õÑ Öµç+­y uCÛ3æ7?›G6_ÆöýðyË Àç{ñ9’ â ôh¶Ás„U¦%‰}Q¾üàZ.àÁWöGé⿪qHýh?¤®¤žÜ©úݸ҇ûcã{ãã¾>m!vÁÀýK|öÚþ•m°¾–™È=d§º 5½õ8ôöÅÖ*ë|}ðwÎìù†­÷Nz;N)˜³Ñ;|­¥d¯ò$ÆyÑ„ DÊ ‰”ñÜx¾ñ³‡ñºÇÙ¬xØ\™#â‚ÉE›áPw…+&X^¥ç¢€kÇ…Èñ“ëÉ‹ôÜRlf¾ñH’‘¥²IÌžÝi6×÷ü¤Dýi®ýöì§„à«ëáj:ˆ¡g¢ÁYƒ¶@é0£^sFAbʹÆ£»âöz¼zšôÅÞ|ÿè¹ÆˆëÌÝ]­,.R‚åSPQºœ}zµ£÷Ƚ)°ªÿí _ψTÖìäÍPyÃfWlþ™œG  XªîNÚp| þ¯®67ŒP³3pQBž)ÏÏÌ<—Î5V|Wn1F«Òm”œØ€¯´Í­L7ò.ÄÙ%Ѭ•ô–¢ò  Ž¾9 / úwé+76X,mî˜ ãÑ%r²2‚÷¤ÛüžòØéÆ™t%û“,7þc¼ÉLLžiñ·º73ÀOl#ûóf‘;æ)¡†Ê›šè´‡â>6çU¸d.ð£³yť寷c’WLG^1”Ï2úð~"x(ÁÝTq¥'®…‹H?Ç ªÜ:=¹?&K¨ÿOÄS*s£iêš½<Ôñ#ÍûÏâM§¦{bE¢êÏ6Ó0¹ý9LSÌ4.A¢~ݘø5=ñk~d~UͯÉôæmDfÉþ  &ÕÌKª.Ë”afjf¢ËV÷zDtʧ݋;\í€p HuQ:K<.ÿ•ÒŽ|HüÇÈ$ó—}ér€›1ìJèB/ÔþáÁïÙ*?G´›†óóŽvZ#--Ó¸Sš­nùuJ0zá]߇iXÕAùª™R5ì VzmÕWĵŸ-ÄwéÊÈp™x\ò#mŒ%#ȵåÒp=æ™{!°ì ãïW a1-°a û¨ #Ûàõ¶ŠÔîû¸þTý>,3%’Ì/Ù-w«À3Q>ZÌWùÜÒeIsŒ?Ðâ‡újÕÜîÏ7>c…¤0i¯ïëŠm¦ÿ¨0š½GŸêVó ‰Ë­Ó¶ÛhŸLRXö›Ò&Hga¢ßQ)[î\ëSz"ÇgÙgÆ6Dîn‡Ë~wa’â÷âõ6#ç{Àå͉ç?;q}¶U]®qéÖ‚@Ý=.F/AúkoG»Lá_vðÂU ùÕ)Ë:˜XåW«ï©i^È[,˜E{üëU׿?J0ˆ7’ܺŽýnÛÞØæºÌƒ×gæ(©Íš"z¡?@¹ìxÔ̯”®Mr‘-ÁŸ¨ÆØ'¿W9Ñ´-ßÅ‹¬ŠéØ´·Üù‰4Ï“@T6~zZ°.ÿˆöÛä7ðK‘¢† e2µ xä?Ͻ©^êT ”He¨L·KhFêîN qq½ÖÇ€<Ô5 {µ7Dx ãx<áU1m'Î…ºÛÓø¾kõû Š)Jê!íÌl°‹VÅdA;$|ÑODbþ}°Ï\éVº’PÝãJ¸›(ÚTF.æwºz^p' âD£YµË¬º}MäÿÎÞØN°/É?<î‹ÛúB=µ©!”UaP¤šv dsωYMf”µý!;©¿\i,.”nR á·žó¨fžd3-×+²S1ÞáZ l¿H±è뮳³Ñ‚+³á†=µãýüÐV›ìuî·æDÞ õÜ ÝÊu¨/ÑÀõ#òƒoØŒFÜAi]L å»ß°pdäÜ¥£@¡p‘Nb:Ø’v]?ý&¯_¡wYý1’K^_u}8ˆK쑟A'îÆ³u(à+ß®õ–³wÙV•îÞ3ÿV£:ˆe‹šö:¨Z hÝûm™ùÓ§Ö”2Wð9šµêòn»Ë?¤{ Ö5Çðÿ *ž«ßKÓ³¹ÐÎÝN¥j^à÷wƒ]ë<ù5§«ý¯9] @ ßU ŸvW%՜Π¦½ ÷LmYf¤½nN7k´C|Öºßé²ÕäfúSjrSçü¦cꤚë3ý]5×§ú?­F´h}âØë_p¬›¤L¼Í¿kâLHúy •¹ãÅþ &AÁÀE|÷Kñ§…º©û•qöŸë$­³¯U  [à•ýÊÙò%È«t|?k¸pÍwªk¼¼s]œžæªÉíä^°LWïGsI¬ÝÐv¿¤®A¥ šÀu´£¯<Ï9®Ö¾O™OQ×üó>!Oõøý¿ã¾§¨k4ñý!ù=÷=u¥‡Ü?%­t “ÀEÓïG~ß¿šÜ©þ…5¹·ùç×äÎôÏ©Éý¹¿$t¼j*÷WTsiÍiŸÿ¢šÓEþQ5§oñ{kN/ñ«5§¯òª9UàD<åK3ÉÿC…¼p€;MìŠI 0$è­ e±‚1Pþ˜ªÖ¢ÝDÍé™ì¥¬æômjí0zù¹ZK÷H+]ÁHÀ``‰]PÎqT)cW©µ¸õ‡¾ïš¨¬ôbUì±ÕÙ$®` oa)¡"ƒ¿|Qúñ!&¬‚+Pïô7llL Z¬zCÝÕ)b;‡c ÃŠ<_´Ê¡CQ¥e•{꺡°ZëU§Üݵ_¹ªrÅè,ƒóŽíTCÕ(1߀xÐBl f˜j¨þÄ vm4Áÿ\cÀp«C©»-ä¢YZOKü> ¥1‚ AßUÈéäD䎽ުÛoÕ”H.¬àJäôg¡Ä6É ¿.£ý¤³#d\ìÌÕXÀ»ôÛäÿv0ÌXq1É[*éD{ó0´×]èôøSÔg°™ àÔ6T~™†Žú"Ÿ¨/Ø#íº=òwy¾/ÚòLÿö‡ÌåÖ{¡dQ/ý'ØbL8WwPX›Í5®û%[›ÑáHJw¡âñ_ÜÉVbCôB²û–XwJ[±BÓV¬0Îôs®ñf†Ü’þ ?ÐÖÎ4ù ÌJ´úY3]±Ï5®éˆÅj~lZrFè†p©K+u†ŽøÓÐ@ä®oa[õ±@¯QqÛ‘Nž$U~ Ž2*ã©­îÀËé,Ùwß+9ǘs7[‰ÁŒ¯fqNÞ0³¸AÕ]àpú§ê‡}µ¥³ —ªÄ•µ@SÃwöûã«ÕW¥wçÏWC¨‡Zh×·Ò”'pο?VŸ6N£k;¡ƒ•ª»ÏÓèZ[adh}.iƒÐ_£ 5y™þˆH °çÄ‹p:G§Bµgðª, Ï;?¦ÑÕ$`Ø‘±0¾r :½ãšÐŽß»wȾZÔàÕp—±¿ézþ8-„Yõ¿R÷( ¤SÂõŽÀE3ýËŠl~Ϻ‘“×)%Lhö¿KÂ`ës‚!?“ üAä% APÚi*òÃpÙZ­¬VknÊ‹ðiÊ÷òÃOÐB÷‡4À9scZãÕ Ì¥X2Š µÆ]~šÆ`4FÑZ`™Nq¤nWwÝéOÒ jã°DU&é“héôIÉ÷»ô‚%zYæÁµà}º‰2ý™Ôõóƒ•5Àób·/ݾz[1θŸ}%"BÙÿ$~Ê΀p#—8½ùþ”ãïáô{…~wá虜Qix¶»=?vûĹFQ\Mÿ¨)mçqÌy¼ß)ë{‹ËMå+b·¯šk8­ò“ìùþë 7Wp¾ð+ËåòoÉòþØí+æû’¬òŠËÃÀå3Ï.ÿ{ÄžBškTÅÕâ°Ó0R¸–áVýðTU°–*¸!®{M ¹{R²Ý?ç÷S?›h‡O]¬ñÝcºÀÆ” S[㢯n@HñW%CiH­Xɸ¡JrˆÉµÛý ƒ-ÖËjõa¢„=ö}30iÎxJ»í4TýWõ[ó‹ò5¼sÔ­8ý×YÃú n˜ÀµwEÃôà<—¹bwÌ‹Ý\p¡S"jYåLÃGYx[ÜsùoËòSbwÍ52âÊ'ÙýWRþ‘ö~`…üAÝhì/Ö8âJ9ý7B©àª¥—Rw^­Œ„õ‹R¾ý¸Û-íþ¥—ê‰R=ÅÕn ·Ž£2ÊÄú‘.ø=ËÍH'üžÇµ—½ÛBµ>AµN‰ïËŸÃ0QüƒyL¿ÈzTý÷s!ñ%=Þ á¦R.*Õb+•鿚&ÕK£³‹’túý­UT±û''”tïüÁ¨~ô‚óx |™„ç“4ò­4ò™q=IVdÿ^+¸Ô*YŠüDý%“:‘n–ÌTÃuŠäÞvº¾õ޼î¶ß¡XöÈò7+­Õ§º5W;Fòa:³ûSõI‹›P°ˆÑÈÿyÌ—–"R[”8Þàôª>ñ‘¿¯U, 8±è¼Øí¥üégqEaFÅO<瘮ÄCtTì)‚ÏS[Í WÄU¸;*#9‡KI  ¨ƒpÿ)Äý¥8›Æ?lqux° –"Nûl 8už=e3süG|™X‡…œ£†s„}ks}µ ¼ÂqC•\F<þñÁgYtJÕ ²´Ók= ÏÀ>Ë‚ÓH¼U› ý³â|MÊÒ&\òý ±ƒuD«æ?¤Múï'úCq ;Ò7,|ežÐ‘JoÏ­¤· ⩺pc­RX0­¸&Ïøð|q¿’Y0-t¤º+*S´NÅS¤¥D}Ü9*ÍAüZ²Ô•‰ÂPWéㇷ€@îë¤uæ—ö…dp|jYÒÒÀa㑟ÓÙÛ¯à±,eé}˜ú9•ß™J`K¯©ì68†NÍ-5ný¹ydÅg oЬî¸,ÈàøÞàÎtR›Ž=/Æþ Th¤K¥”Ç}uN¨¹c¾ñ¯!Ý“a‚ŠW÷]2U å9²Œººï:þ‰Žq#víóà <)úä,˜¾üÛUM†¹óD’à©yºSòý™Mä8–D˜5ò¤b5ùìFÔŒŒ§§5­í`•Æ×çïžœ¤ˆùoÇëýZ÷R5u[òäï0ï|cÂ|øJï8*ò¬åòk™ÍØìA㌪XnTÓû‹”ÉCVHõáû:[Ñ©+‡/SŒ•”á Ê|ïDÅ5üˆ×Câêý˜¹Ü¸˜R*¹žî5ï£^@ ]Šêò'~ãþL}ЕêÞЄcC\»qb`3²Ã×Iµ þ¡á0æ/†4çH|¹éE@‘µµWaòsûárà\„ÿqYËÃÔX©1ž#ÀuOv:ýßÉéÞô2VAßž{…kø7®p!®|dÅ›…b.'§GÈ?âätÝÂd`ð~îÄÅ‘¬¥Ê8€÷oñ' èmÿFä^3ñ"›?Uk)®™˜ ÏÙïL[ ®Jü3¨¸¼Ô³g¡Øßð&vìoxáØøm/ÛÞÞ0À£-K6~}€æpYÌȼgöæ2 ˜±þ Ý?ÿ¾«/Žæ¯ñ!òtì²NaH†q÷ë'A¢óü¿ì±}Ð$øc›SjD–Bý]ÔÇÓÞ\ã®^&–Bº.´S^Â`,’Ño $Ã[@$¦nG¦lSÐÄñ ‰ã›%Žï ó®aÒ~h)’¢1cMˆ;1܇/Î@ ùÍ„-aõd¿Qzd?¶Û˜³P×IewXs ÔÙ¾³:Û';‹¤~kð§­rü×w—4™©D†h¯Ë½„yŸýÊjo¶ÕžÇ8@ŸÿªZ‹%†¥¤1f{CŒÍ” L?ÆLçõ˜ÔþýTR¾—}EõÆîì5>×e^ã§”~ƒ•þm¶AÝ8„y†“)Ï"ò™µl„qýNµÊ|þ•Uæ!,3Ò8òü/']Ó¾Lù6÷š­Lļ×@þF_´^ë]ØÜ(²M,m÷$QɇéûmVIûWq༛¾N§Ò¹qÍ·öš™Î7æQ¦o£Ì*7†Æåûk/uãcå±SE½f†öa)Ô‹¡ôùƒ3f/*zEÿ{\øåà,ø7« ñx_–a´ÐçOèGVû Õ¶—´j»JÖöúrÕ†c^v¡ñ%¹©÷™Ë.2î£ß¡Æö‹¸:?¥[Õ½{ÆýÅF9}MUŽˆëàs‚óOŸS¹ôËzÆÊöÀBe{ÿ4MôkÖ÷öÏ’Ìý t¥=³íz c­ª—¾r÷ßOaW¢Ô•ÛÍÔ× u®ñ#ìÚe¤×*5vX<SSŒUÉ¿$»ùvþÛÆéC˜>tчQf½wQ%™:õsNûþ$>ÏùæcÓó`$_%a ¯Eq$ÏŸ¢>~DIé§×þxŠ:ø%•ȹÿ¥>î¤oíQ«S²¯S*uÐøá)k¢TSFûeÌVQÓ¢æ¤~ãîß§¯c£ØŸóOãžLIÏG-î~-¥¤P¦/±c—ߤö51œ¾Øc6Qã@=N¢ÿ¢ÿhýcM£úüÉ—&D³=”º ÝWèÛÔ­eWS†;)Ãâ2$E Ží—“½G¿ùê‡m×,s7Q=czpŽFEÍùï±°ÍýL5ÆQÆ›{,<šÓÄ™lxéÛ:ø½lŒ‘B?ŽucÏšz,>ÐÎë·A~,Ÿë65‹¥X¨¥ÆXéºUÖøNìVÊSÕM¾ô-ìé+VA=D¡k(ÓMÎ9þÔM«Ò2”1Q6ø }Ï…ÔeiÆ÷éÇÚn” ðfåðQâHÌ1ؘÀ~7)G/á2JêùÒl¹ÞêÄ{ºìJÃNYÆYéÏw[£ùQ·à¥™øe–¸Š.hCÝí$[|I|°óKZîþŠiíÕœa eø¥ÕøyV#K0ÿwŒeyÚÊ’×øÉ/ã¿KŒk¤ÐþªŸJe/°Ên箤bÆœÈ%åÛ”%Úefùgù¤,»ÚH¡Ï•dG“Þþ;îõç &î³Ê,²Zø3–ƒ5ƒ²|eeY÷¥Õë«z]%ÆGæ#ÿ§R?µJ9­ŠË0Ûµä{ ä?+KN\ÅotÅW|)–ø®QD%îè¢a9ârÿ·{å}the|aV^kµó¤.»Îè¶a–,+ýGÖë_¾`š`4S®¾/¨Í©wd ´ð7ú Y-|«Ëä.¹Æ£ôõ§_ µÝÔeõô«/ˆÀ¯7VQ†i_ˆUáÚ¸<Ç(ÑE&ª^㵡·1ãäs6ÛE„ä¬Z¯YÛ[¹ˆO¯x{àôçH‚Òí9I©£}Á¶ÆÓV¥Â×QP8íî­3ÁwÉëq¦ôuJÁ„¿cÚÝÝ¡#ƒÂ±H í¯âÁúÐ4Ok¤n–G׎*˜v÷i3O°ÃÉ*·HÓñ~JpÏ™àiE}¨A}¦¹»ÐéôW…Žø—…Ÿ^Чn^­³)ßDã´¹éZ©GŸ‹=›òÉk§±ïtùß׫•fè…™bdã‚,möhÌv@+܉†(6¾z5×X’džø¿³‰èx_`éh܈¦ÂL´ãÄB\þAúôôÈ ?7]wOÅ*’ÞБ€gîÒ+1ÿ±ض/GýGÏ{1&ù;íÍÅ ð8ÒŸâ.z¬é-;Û¸è»d@v ìzÙ3ŽÇ?˜ƒf(ï…ãeôá hóŽãska¾cÅÓ%cýJoèxå`u÷E‘¤ÐñªÁÓ‹k¾—éÿ2t¼:m>Ÿz^Ýœžws’½Ä4´P9µÌ.TJŸ/µîØ@2ïé‹@™t V:mxÖ%¯µOšèÙo·YVDfLgD£JOè`¥SÝ=¸0\48V3¶ S§~2tÐÖ7yÝy þ¢ìëk“ §þ¾?¥Ÿ}§¨1’Ž:×óÐò€åEÎò캡ë…šýïÌ‹¿ÇR‚f¨5ƒc™UäŸJ?ýÑœ#ë×'Λ”{È?¤fâÕhëé<ÿzçÕþsrܘ¦nh ñw#œÚëJ\kKb¡nÿŠÈ%Km°%ÝéB'þ¿þ À°ÐÍî¦/_]èÂoZ§£Ð™Wèª|#ا2Ñ©¡¯ã¹=±Bg$ Úõ´3ËÑyY)dqºK'aG Ü‰aóUvÍaN¾ oælgÞÐÊáz{9¯õÄ œ (2˜ˆ¿ÃZéæž£éÄSâ¢OV`0tæú4¼|ã¿;SËõbW^±/¡{fßcCÇéåHý.vÅŠ‘É ßìÎÞ«Esß…Þµh{çrï‹]ŽbO©ñ9HðÊÍ.åfàðîÜ3•ª±C‘÷uÜÙï†bÕÏÖÌîÂu&ÞÁÂÔ¢Žbg^±«j2Fá®Lcã‹ÕØÚb±Õ{Àz¹KkÉn.[é6Ô[ás1OA@5a;¾`{©v³ ¯sèÅNG1÷ zøÅ4h#<À(²1Fåΰó|Èv¡~QöëwÛsŽÏõÌ6þrlj&2#¬Äßr"MÅ@6IŸˆÝ/ ›¢îÉÞ,5´ ÞÊåe(ºÚZÝ܃#:žOóÊ\a€L|«(æsÍŒ´mÂ(™U™õÀ·/@*+‰Â2l/€ cÅ%r:~¯~/X /Ã_ ÐÐ懲=ûm™­ß>oÇëÔÎ5ôg…Û¹kcûf<¯ [}ß×o/™x…½'/»öØ´wóuV9ôJìõìù8ŸÆ\RÑ/,œ}\¨°] RyO©±È»½À:O)ö^– ÛðOà.y[ðÖ`Lè`b*ÎJК^Ò ˆÙ]ÌÎÙzK÷K{¢ÙËœ”r´×l>K4Šq¦¨k;¬o.ñKµã9(Îï•·£E£ô¯tÎá=Cÿ2¨¨G¡;LSpR×–ôÄ|Q˜€šSãüWT{jNñûjN]éÉ"ÿÿ•=9èÏÈ…Ý">¨CĵG’ù‹yg1pZt;P–0œö32ý†îâávÿE8OaDú½HQþÁ‘Lôaü%‡†Û´ZêÖ›VK}»åÞ-Î/!š"nêë9ˆl—uPVs7À R_C&»7ì»dni¹ñêbŽdæF«¼Œ QÊï(gI—^5¸`t`Ø|#ýC˜þÚ­órüèÖèT.XÈ:{t,v»;v»§Ü¨G1ž¾+ŽÒ ¿» %/Ÿ»}|¹1ÕÁÓ좪ñ\Uûi…õ”‡bjˆœïÀ¬Îžb›/0Çî0¯*îåw˜ˆ†úHD´E½Úsw†^¡íÍ~=L[¡Žð ò(Cõ4’Dä(R¬QFˆN|ç}Úq2½®¦Ò$¢ð(©žìe?à·µn¼o‡\¥'2Šøç:ß™ëiYò§®M.Ž­9«ãzº9‘¾„-OÿöÃRaß™ÒùF¯MZ:¥fdÔÐG".ÆÿÃÞ¿ÀGQ% ãðL¦“LÈ„ ˆ‚F%‚J”Ð@˜.„! ì®b–U¡;€ØÌ¡Íz[¯»ò¨»î®û°»*âÌ6D 5@”€Yía².›+2ÿª:Ý=@Ýgß÷ù¾ï÷ýþ^2ݧϥN:uªÎ©Seú-$Ù®Ãf—Ýn¯’„ª®—ެ󂝣¿¢àëh®¨=þ3Þr<Œ`^åyì»Ô_?æ>FN­…ÐI7Œåã ¬ªQŠèE_TåizÆ6èØÊîÖš— g¯ðë&ÞÇÇà3ÝRiPÆDG_cͧqæ“q“‡_]1¦ìŶÞt—eÏÈääB·á_×@žýY·3’ µç¿©n'dÝV· ÷eÙ/¼“TFwHŸÅ:=Áò;ôz¯†Ä¹nm^XÕƒŒªñ“vÖ>r««„Ôúôó &œ/„W[–“áñ1‹Në*;ŽppÃË}ô}½GÏå vi¥¾‚O¦<WÉþŸ¬ãý.\ÂÏÄcÞŸÍ¢õûëÐú¯lƒA Ê;yt+%mú,>¬¨5TÕÊ ´8‚Ã4mr.¡¢H;4“»—T6‚‘*ìãoJ—¥eÔ¹ÒŽê7ÔЩ/ßÑo–Ù-Ò€´£…Ú}æ%§Cq ä®«( Žù ã©9¸{áwx<ôR¼…¼ÿÁsT~}D÷•‹ 9ÞŽq /pOÅŸÆd¶qŒù4ÎÆ§YÈei7õJ¢g£ WÍ«4ÚN«nŒ ¯ W‹U£øÓ ²è¦?ŠUslô4Fß±ÔLé ~çôýPý:‡Óë¿Z/ V EÞ´Š²PÒ5è6=x…è9Žê¨¹çù%÷À˜›rÏOÈ J‰¼,Þ)>B7íâúºá¶‡üƒúçŸ6›ÄX]n“ÏNc«Ð Úž‹ó3^ò…õ8z¤÷üËÍŠ1*=?Cc]º\›©ìàá‹Jô|iÑGd¹Æã¥ïLàÑB…¢êmð^¥–pR³ÐHG ¶kåiiµiG3ˆ"Ê®ÒÛó:*¸c%t}èšÓX/ JÎÊø fZ‚mDo`4\EÚf ôNó×Òz¢ÄR¢ÄDã2Ð+tðjô 1ŠWÍJÕ NØÿͦ<ˆù¤k/ÄîßÚŽVƸv3?Ý‹êEX°Íùºp[yÎDØß-:àî „WDèFÓ9õ)~#ëµ6f²¸©ŒÎOÐé@àj`$uör–"=ÀFÀÊw†cÿÁvƒ¨ÄBÍÛaLðæÀmè=\þ³JM¨Oa]h7žëá *ÕA`뇦:ñ~ÇÁ¡.t T5ÅÁÀ³€î§l U­,‚]¦.´c¤Í)v¶Ànî­q&¡lp À½œñ´ÿsxúRH²–χ¿‘Ò\ø!ÍR—ħud¬v–MN¬Ô~§tõ[†—)nB¯´ãnwF’pŒë;Ý?¶[›Aï°ÙPÃú}Ö DeÝä¬Î³VÛõ>aš}Sž­ÚYcïyø9'"ì{N4–‰®†§¨Mð1/ª2æDRÞHÈ»)GÀ*ò¨£Ï¶b‡Rn·Èbq¾†,¼¼m Ü­¬ƒÄ+@ÜgYöåÑ ô]À´m(¦¢þì¶gÚËF@NÚMXåÐ|a:Ÿð*Ô(fÃ@›YB°Ô,u`¾¿žä‚бö†ÙÌ9Ôº¶Ì^½ã÷áòtƒ(míI NegÜ9#y(ÔV¼c]ªJÙ¹ùcfžæ‚2ÞiVÖ÷¾~_Û&soUv1£ªìÈžå6õ¯Î fÓ( vK'Å­âVW½ôÙ[2ךÀPs>§p×%|!(×÷d¼_ Kà8?ê»ÁGÉsA1zœÁWÈS7« Î{å` ¦fSÁù A¹©°ˆ8àæP˜¾µêÁä 5ñŸÆ”ÛMk“ç>@`eI2·ï)*ÔümF®Ó¬)d‰v_'I7d$•™ñK%gaÉ•8A|Ü}J«¿!W.3“A3ð®K 9ã+i„9¡ÿÓd<Ï࢘a‘Æqÿaþ*m²Ñ&§M©k™«í˜E–E cÏ ‹¼¿P{h›yÛyª Ø‹Ui?ìãt]¨Š+Qæì­¸Ý"ÝðýMÎ åÇ€“z“Fv[ÉìÊcmf&ŒÀ¢Î.·©sư\ #_{¹ð VÖRÆ¿~ÄŒMþd: ƒ«Gi-ÛùàÙ•Þ~®+¤h׫SÔܶ|-w¯ÙÈÏ‘-÷ö“&l臾c†ûÑÕ Ò+VÕЃC¬ú=ªC0Œuº¡ Šß1üwTE LxMŽ5 1àõ(úž½Õl" ›@ÅGÐø˜{pJ)À}[ó)âõ'ͼ³™wâÛÀjÖÁ{æ Ücø#0zpæU]C—òý¿³˜ë¹Qç5Úþ0Å Ž2ÊýÁ˜Ì¿ åÿo#¿¼P‡PN0¾ŽÑj̯Õ9)Öܶ`®&zÊÉjÞVÃÛG²ÒÌm=Ÿ ’1°‘%ŸâÀ¾žóÅ$ûnNöCÙ£ŸÊ·¶Õjø{ªZBÈóHò¹@Ñ7Úuk›¢C·¸°.Eu–-kQˆÇ%=[>Òpƒ‘xA ÈáÜmjàªK„ˆ”Ïjƒþenð \3D$nº1ÃÊw¹égW?iô;†ˆøy Ƈ¼ãCfî0âCÊí…ZÊ[œzF@Ùv(^¨Ýº§Ä¹)Ÿ‡8¾)áûEØ}?³ÍÞM½o7}qéP‘]¼‹ÑF”HÜ.´c³ÉíÖª^…Q5"CÞ ×¢.º»)tÁD«¡‹f¹e!Í8įS8oK êŒxœ2á¼üó´ȦDonË&[µÐo ±ƒ³^W ™°ÎÍÓ23 ¾‡@§ëþn:ºM…Çf<ƒyþî1Æä޼®cy<ÐÇCŠ–åŠ²cWK·ÃßùƒÀ-› Ž]1äXµë˜¸£Qg`vq‡M©mA_¶ô:y$‚~U–)ËÓ"¾6Øüßê]Ç’!ƒè™M~ƒ%‹ž©AŽ›Æ,UÙ6‹¯Ç ž7sHN Œ=F‚‚çùÔh>í;o„Ílðì6ž;<»Ìµú7fÞfô9áùþæ¡ÙŠF*”Eܲ“ ËFLØ ÜëÁv|³” @É–¬ùðcŽQÌk¹ƒãŒJÙÙ øœv”w-Uô\ƒzèv)A¯Q|¸—¸Á+ù@añKÀÄÞıIëèÛ<#Þ1¶‘,¹øCŒ4Q¥1bÞmðw2°MOâ7 ㈠ãŒóE•ºsWGØ'õ°ú[û¨$ò6&‰žiT«ÆÍ0ÒÀ͘‡h^®HöÎOIÛƒ6¸‡@± o²#¼œ¸ãvFˆÐçC4Ìôÿ„ñl¨“òM¼#tk\©wfЏ#]/ÊCâìÓCâ4Hò"›¬·FH©³½Û .jNÙ™G°Táe¿´ ‡B9òý'‘¬‹NtÊ"Y ~H¢›ñ¹× ¹o;ŽCúº±/ügš!ÛôƒÆ©l¾w;!ÛþRáÌqÌ‹Àújü›ÄV¨˜JYÄ-­Vš”|T/û‰ý½góz×ïRÝcgx³Æ©BžÝÛHg¦0zRÖìb·îÑßt‚›ÉViÎ(è'îCX qLh¿ÙËFŠõ΃FYš÷€$¬»–ràßÑ”oÛŽŒC͸dx“|;–±­Kfk }²HשôÀÒÕ¬¼f>ÆÜ?wä†&SÅ>¼Q™°*«RDýWÏ÷9hÊúh¼h8uÊùj!Hƒùk-ãÈó ðÝÝDËWÿ“Žúîoˆ¢t7÷OAúøãä̰Ѧ þ‘ñ8rá²i´_5a’ôqÅ„Qò>ßôo#Ñlª44ðmÅ„k$/>WWL¸BR*&Œ«"˜³®ßng×÷ÍGEw<‰=:Û†Qïé„Åhª½ÛàßmÝ'Ö̧Vó©E ‹óÜ­|÷ßåÊåz#”KŒÊeXÍÅrQv9 ºÜ¿ì2n8! ˜»E¬Ïf•®ð¾à^š¾KRÆ¡J=ò•ãÕ¨«PKd2ÊÞ¾6‚Ôx’! ´žOšùѯëŽC‘j¶c‹ø¤OÜêcKŽŸXEVvTVuz§Ø@0Z½°#*BŠ|ç;¼P%À²|ž'Ã)Ví uœìV( kù£Aÿ/`Jú =NV²‘Eþ‡Å\e;n‘®U¶[šª«Íöƒ+ÆKá¿1Úò/Ìc¯öqN¡æ~ðZzŒ¡J‚'=9Í4>%㓽‡Ö¨ žsæàÆëùð¤Öh%7ÕKŸŒ÷KÕ«N&ƒÕêxÉt0ª[Ï9}óÚC_sâ+£«&æÅ¶ôW¼bƒ ž.€@&/ûŸ£"V=‡n^¬ÔfPËVºÊ¹-’´—aðKÆÍü³9¨ûD»§$RŽ6"ÐÂ’›)e™’S’A)o™)7—dRÊ+fJJÉ4JyÜLX2‹R*I õÐW;K !ƒ×ƒæi l¢ç0d(Yöí6³Š¼ <ñP>Žðû0çO0'ï¯ÖüÝÔ|Ä¥ËFÓ*ùeXÙ¦£¡²¥T¶ÞH‘…@W>Ž ÌÂñ*© ñ9#«X5 Ê BÞT˜û˜æq²+}±lÊǶŽl!YškŽØ>±Ý8b§ÀˆýŠ@É8jŒØ-%χµ{¥ ô5…%ãÍ?SkÎ ±È7`S%^@´W~ lˈÂß NÞÉ&O™,ÍÓª°µ?Rk1ZZ²…RÞ=b´ëÉãï|ì숲ŠU¯àü6jÊ –NÔn…Ìœ3KÞ âë ¥åãÌ€Lø{7¬‹Œú¥DΨ9Oæ”.XY¬£¤.l°F›ð$–|DM\f¦ ñ?‚öÒœ£c=^äèÀ˜i-,Ù„8'X:U«> }?Lõì?lô½°äa¾}Ø€p°òqò…•[£KÚÂr«Fny]_¾:@)²H0äÉÈÒŪO,Æ|µ÷åî=MMA“e@#9ÙÁA×”ô„µw¹ ÃÈgµJi0òt6y®TXq§ŠLùîÞó=ÄOl0¶ µ•œCø;M&zK¢Æ#h¯š)¢˜ÍX-%Ùv±jS]l¥;ç[ñι–„½{—zwW“Ñ»Á—õ%ýLJ࿥)¬ \]2(,Ï &s²ˆP]v„)Y*æc îÈŽ´ÊÐÿTêÿNì?:pÉž¥ÂÂ…Ì·³! 2 Æ$¤hß+ø1BÊt•òò 0ZO½LÙNì{Ô?ëÆú_ˆ6ø:òpôœ9XÝHÞ,¼<€üð§¨`o'–/ãDEEÀÛ =X—Ò²TéJ–"«$*ÛI\¡\ò»4ÇÌ3Þø:FÝø"rš AÙÎ3R$ » ÍU~ìಎ’kÉÿU@ûmÉ™Ruã.H\o‚TfŽ*¹ØŠÖfZö§0ªC‰0ýÔU³® Ìú/¹j|ˆœ~ñ©A<£ôh™2¬°$!ùØÜeì_òº®"¤ûôñçaÖ—1ë­QaGþ¶¢ÿíOŸh£ ´³Ÿ“ûŠ’ë)åÄ'F³C Knźæc]ßDZtá–×ì(k‹&O[Ñ„6ëæ+ÍÓfÝWé‹áF³îÁzœ½sµP÷cÿ -ˆc’Ô,6Òi• U’52fŽ“gªD%YŽ ™*É3gÉã!ûU(a¤¡ËWñw¼ãT–Ô'‘¿ŒìQIظ2+>½N`®G`~‰ÀDš÷ûL™E9`=ʉø˜ý,'žFÜÁê@ÕGô³)%8bÕ.ô‚²$%ð¢9C"ü¯ }ë«X:ä;ÿ¯‘›R¨r¿/z<èå‡X(ÏÏrV…Û¥V§f'²ˆ@œWa"9ˆy’^¨w1]±Ôk6%¾r»1Ïe š3ĸÂH,²ÃUNãÙnÀJŠàõ‡wÖj=•ÐÎT˜¤Ü’fĘÎnÚnDI·EÛÔ”j(ßÁ±Ú€÷»¿§­ÌË>K«=÷6NþÓÿݹŸ}<§°hnà¦B¦t)w¬¶ÎA) ‹ÜÁ71E»û—Ø“C ¹¬˜­ ¸™x«¶“HdœNt]îg œÀŸé$îÉvê#MÅ-°þÌYÎ86ó5LNA|6LEnSøü؈FAâ#>ýqŠN¼Í;x»ùÚ§éäÄè)Ãùä ÚÅ{¶ÊŽ=#Ó¦yÛùŽîd^+£Z7á²!]Æ!똟,Çé0ÍÇ JmÈGbz¦åv}¤¦"£}­êšé”ÒD•ȹ1 “ѯ©EËM6ú|Vä%a'’Ô?—KEÎ !p¥êÅe3_%~‘§’b‘¯÷gÝ5dª¿ù®Õ7ã%s6$DBÉ”ã”í¤"ËBÅŒ„ þAy Š÷-„B½íWÂAsr+ÿGG›xt¼‚''xj¶Ä5ôÖ¤2uJüU#Ñ ÿÈIÊ™hÝ3Ey`¢¥t¢Qér\ëGëD1xäHPGåazæÊ,™ÿÁ·¸C]Õ…‰ÆW5 Ck+ÞEÿ¡°¢¯ìëî»’I±±Q³õmpµñ\Z)ø/…Xyåtã˜K^šsH,OôºÎ1—fÄãíñ~†“îsìÛ$ØÕM-kª†]û¦±²&%h+ÇskŠ53W|<È=lóæk{†¹šYA‹­¸yÜ¢ìóÎ °‚}Š«Íª´£{Iuš ÔžK¯+›¾:sC´œš¾dbi Ú7‘©Õù«Ñ ¥£ˆ`Þ 2³ÞC€¾§¯Ìuà Ë1é 'ŠåàÄ‚:78X™Uq§ÜS&ªs3çæi1«ˆÂ¸™äãQ{!g;¿d®FVpH-8+nùÔ e]â–^kÙ!ÕÕ¨šË-¿~ÎÀ#t|­Î°®"»êjS ÚÙ´©¬(§a'þiDüÞ»ÞÙ†éçÊáÆ\øo‘6ðjOÙ@4âV6är •߃¼Œ¡\ìEBÙê'Ë=8Þ$ôãÆ‚²]™6ÕªåX¦@Žõ­Í4áëΟ"Zß‘#­«_¿ªöð3Ánì=Û; µ[£31rKHk]¤Zžˆ„åNbªSŠ-,¹ƒØ£%¨×s®“VÍ›yP6öE0MhÈŒG­´3 ƒ¡Èý+râ“IB`z |³*YŠ/\n ¾‰´äžÜH®µÇÒkO‘…"Ï­ç8ûR\6Db 5d2µYa¼ LÔ2¥¨ŠœÁ™¸²bVx®Ð«º+ÅX?äèm¸"·ájÃcËÓó|r…ÑF›Æ‰JŸNà±,ÿ\‘À8Nú‹Cë?޳ ‚΂¤$tHÉ6ö¹ÝdÆ+1j}8ÂdO÷¾ z_iï4L.ŒO¶ʃ§7ZÍAøZ n¹i•7™×Åtf8Po!Z”ëþÈαDmùU¡›eˆF+zXÔq[B±÷¼£jb‰Ð=1®ÔËCr$+½ßÉ1ðöV£á7øX;¥hò¿Ïcz;ûÞï2bm‘!G™“ܽ5 gq‹_Cβ)]ŽÕ³0È‡Àm´AJP„œ—9RH2ÏïÂܱG¿‹ƒÈwq§Ð›$QÚ_o¦R_hŸ¨Æu.=Qº7t¯@°®¾‰P¾ü¼¶ê¼±å7‹bÃ/ÿN[j&¥#2†ª®.(HEÜÚdóóPcêõ+ÔÞ'‹pÄ¢CJô»aË­Ë×hÛÒB·ÖD7œ7¡#¬£aÊ4×§,å?wðŸùüç»w±Kè^žîî)k’-R t äN–—ˆbã6ÃýêÀÚ‘þ,~“cqo”œƒÂòüþ¦/L–€-&ï܅_§$+ëœèlk•S»#O²uc)a¬6ÓH¸“îÔnå n--MwÅE´¬Û~N›ªåô µ>Á`öŒ8ýˆ{uNÏ¿‡Jºáë?É¿bHöiã`ja­ª«vŒížÛ "œ5÷¬ZÐB«ÁY¨8cZŠŒÁé3ŠFÉý:¦%€R·cÉÄw§K31EZ,7#œ©5ÆÝΞHù—dêëc9J­U9` 5}V^VЦÊÐô)«ÜFM´´iW_A¡¹B¥éÅm°F¦¤çj¥#¦qyr—'1œ[ÕV¼¥¸–Ï¿°ÀôZT‘†’¿U„ UL —!Žÿ «dZ7Õ‚.Œ§W4B_ºx;°XúÜ Õ mÿϪ>7¼OÕrXÕ5†`±xGGÅ—tÞss½mY}–õ—õY+ë³lR}–p=÷Õ™7Wkl±P챊uQivfÅÄDôHíª·eC©9Pjn‰rÛ ÷VÌI¹#1F Ï]/$^Ÿ ¦âŸÉøgþ±dµ.Ãïq"ßðníõh:ßn0eiVƒBw´‹¿Øu”QìÀuXŒb„R±„åœ^L{ŒNûq¬CŸþÓÿò¥´•p“ˆ£aÇ@O$÷=ŠäÇ@  ³‹†£Ì'#Ä@]ÖâOvóɈ¾FGH×GHvý)é‡NÔ¨«¬¦7>3†lÚZŒF0×ÓxþSgn²Ó­±²§é1~šÑi~ê%õ4:ÏÄ=2'ùÿÿ ò'ø‡Š5ñ–²‘\â¢HbZÈ/;'a64= ùöit.­S/ÇTŒJÄ:ÒŽÒJîÁ=/×óyÚ;ÍýÓÂ’ ˜µý¿!ë£Ó>H÷ÅŒH;’U&ZJË+:2‡X¥Ñž£ ”-rÞˆ6]¬Ÿ§åLRNažö[¨00YéµÊ XMÎkC&_¤2çsÍãiÒœhPD­+t½Î^¨ÅïE‹ÈÁjBñÐ ?–°^eÅ+ï!‹<ÙPßåa¯¬²L¾¤;§ÅgbUÃÜj–SÜ’eÏ ®Š×ê>4Œ¡Fú÷"!êÝò|¹ ˜,Þì阆:[ÛtÓn‡èy æKnF|ÕþðõPè~˜²Î1@¾Ü]2?¾„ɺ^›÷Wý™º*^]çÄÐÃhYÓ{îñ‚?`L¶ÿÀ÷“YÐ4·þ#Ó˜¬7dL&ÔâñË<þ¯Ákìú{¡v­^n@ "Œ’^ú•qÁbP`9Ï5î1C\Ã.eÐ7†üªKÛØ}ÖÈG>N·÷á–v¶Uvnø,z~ ÒìÑó·ï¸EXX [òÛÏ«íÒ§‰äúa©/_îÌðRë•/Ž-Œ±»iD+Ë-Ú'Oš¤‚'p@C¥‘D\¯ÿÊ$.änníij†•g^v3î®]y _¸t#Nà3·“'ÇAêãµØp¦áÃÑÇúñLÈtô ¬}Òhðžwžvåq”~Ø_£ À°¯¿fd\=â1äT²_O­K§÷å×ÖÕC¬òPtµ-_^ÈYŸÿ­þÒŒ?I£ÄfP`»ò(àθ0âæuëóÚWï“éÁT{CJZmzSÙp~W¤b¢sŒ‡wE•ôηf¦7­?aýMßXv—Œ×ðP"áT§„ÿÃx W¿kä>ıêObAÛÀ÷ÒúÆnHä±Voê»Dès™ ^ǹµ­µM,ãÛ%H9Çã-\ÍLáËÆ(þcç?ÿ™Êrhp—Æ?þÕn˜P”VÞX7®¼ÎWií%}Í®_£ÛId/@ηJá1+!O¶êoPûÁ`x9€é—û: b¶5¢P{˜aWymJ-©›ã:² «C(0#,ä? àDjÛßçjYñ>Í ¡bæàdÀõ²A|ËpQ2¬µO°ŽÂàVl]»ƒßRvn'kºF)õ×÷—›¯äêÖ‹>½yHο_‰„½Ô$ñvóÉ¢KyE¤=#<ä® ¸ô D•§Ý8˜OTÌ7‘t¼KÙÅè¹áAS¸|Ð$4…Ëæ“!zvL!OØïöISˆ(¯¬¡àIIÎ’´ÒýT—]Í4dL _åqdG•ÝÄÍÕÞÜÅí&Ï­6.jÒÞÞÝÛt#~ü‚A¨HÞêÍ}:Ÿ¶û>k ûŽ»¸Ðâ /€[`/†Ý×%Ït±^>'ƒ<™€µ‘üé¿?ÂbÊÅOãЋUÏX /ëNNGê&’!­Y³Êcç’øéŸÁ»÷ Ÿ·‚M>Pþôã¥]’gíj•t²Æg@å"(6ŽRèÚÃzscDHMÂÞ0_ðþDÿZ•X”Dý» 9{ˆ•Ç ‚O‘}ä»û?0딜XÛΟõó5ìàèàÇò:º;LY—b)‚‚òä5”¡Õ×°‚'0‚k ‘‚ë ½¼šj©«ŠT«®šÎ»ªX=ûL-¨·T[?Ss«Ä-¹OX?VÙY“žÏ&W *«w$Ò0ÇM1BôÔ!¦Çwfr <¦ÁÕŠ¢á 22üYG9Í …üß}ÿ¢Û‘F¼år‡U|dÏ)VÝÄŸ"ĪT\÷‚åNÑòÿ©fë÷ûćpëÌv@š¸Õæk±×»þi‰qµmʲV»Ú”äkS– ÞÄ­Y¡ðfõµ8ë]ßð7(œXïú_ðfà]›²¢y™¨>e"ÃËd ¡B^hÔ—ùÄ­îß {}f¤%†Þ¬¾ÎúÌ(þ6Èw"±>3_ðÂaY«…îíÒä –Úñjжë-C¬æpÿXÿ`Þï=ÿ‚ñ˜†ˆyø›ó€ËVbr­¸…mhjÙ çdÛa‘q'X, %dnãö‘[lè3̦ ¨—¤Ðxê{ÊFãÚe•&ÀרòÑÆu©T´× ùû˜ñ^¼{KÒµgð½Øf\EêTËIBwP|™×¥å¢k£'TC3[è¿ÎFýshwW£¾¢¡wý&Ñ$U¿²ÕaI.M¥[ÓÎ?hÊ&í´¿ ×z›j"‡‚|”iŽrÐ]´arüí‡ÚŒ6 µm¸<INºŒ_ï*…9xÿ¦<9Ä(wÄH‰ðø‹ÑËqò`¼ü";;]èÒoÅœæ²#ŒO¼WSjA¯ˆ, oïr(n/OÐcÈÊQá׿ W–¶X‰–“n޳cGiÐÏæi'I ‘«~}þ¢~³:±p.Á¾}Ï0תÏ'®ïˆÇa Trl«GòÍœ’… îèU?ªW ›¤àÙšoƒ‰ äùh»X%ZC÷ÐÆ„ÝéKÕ~ÿºY¢Øj^Eóaáö·ú}4Š£Lû™…¤øå®º”.«¸ñè+9›ôÀQDÔ‡úŸüN÷wŽúàåþðÊûÏÃþ\-Œý0ÖB|âêå€Ä'‰¼;ÿ%ùßêÞé5ü„ýêPÒ·ëxÒ ý¾"¡µþ~ƒJ/#݉Œ>ä®4.­Âù‘ˆ”&Çr% ‚üÝ‘móÛb;~w!­•ßnPõÍ\Ç]ÐÂùhFÞ8ñÑwΡM¿‡”1e\ù€B5·%_[·Ëغ‰å½>‡¶yûÜm-¶ª_á«~¸ `ä‚ñk€ ÊD#b/m€ÑžKpa`‚qßAW ß{Èœã¬}ÃÌ9‹áÜÚž‡/©ö»¬bòóh·¶àMsCñs mÓÃÊ€GûÁ×1›v—M›è Ê3$hQÔ×I‰¬_‘Ö¡N»ÇF‰ÓÆ•;Ýœc}ý”df~ë´{ø#4¸µcoPÞÍ^çIÈ»¼ÓBÊhNA%ƒ@} * d¸µÒ2ÒñÒ~³ D˜Œ ã•àJ¬æb<—Áõ–ë–÷[ޯIJ÷ÙŒüÌ<ÖØÙ”p„’òæj ,¡xÖË“—Gà_EPvêqäoµè:ÏòØåvü–ú6Üüf_îÄoÎзã[ÈGn|ZGúÇ«œlwÚN9ÄÍܤôW¶«ÅNqëÑÑÅ „:}'AŽ›é©-wéç‘Žêø¨lV|n&j–¾ \÷·±PÆðo˜úñù:¨²«¢'½ÜVQw‘ßhÁ³GþÒê…(K¸OÃÏ€ Ã)zö”B< ¤¼¾µ%:rçï݈,¶·³I9`é<27/0„๠S^þ\í~Kè¼jy¦Ž?TUãå/na8¶;¦Iþ+Ï^/Üf1=é]tÞMþçÒŽÒv®¸cÀd¥ç:Ù¾ƒ®ô%Ö(=£åÁ<"m,­oÂsÞ;¦4b>ï”F¥+¦ôŸ¬IÜR¶?« ÄðõðŽ…¡ÌÖÒvÖæß•ò Þ;Ž„²D›Ytÿ”'AéÉ,TêölJ]#kòµÞ¤ìÒò¨ÊÇrxy§¼2À¾ðz”¶D[²yŸkC´ù¤ïß1ˆ;ìì_ïˆLæ²+Ý×ÑMš¥{´üÝ‹1%@9:-t#üŒ¯é[Q ‡B|¹„Ýkû|IתÔ6¢FŠ–õ£Ç`®ˆ;úQsSXífGô tnŠÊj»ü¦RÖSºEuuu~¥Ÿjœ£sÔ6H·4X]ð ©mÞ»šC{’v¾ÍÆé×k?Æìu÷€#üdWÜÑŸ€ÉAâ9”·Gìï¼(Mvsž\ª+jBç¥ÐÈô¶ÿACÑ4dÎǾ­@³âލg€øíº?æ9°!”Ê®ÌRîúö(ƒ~ü¹žüÕ2¨Sð}% öÑ%ÌÍ2¨(ú™i¬ÌNUÄ)]KKíW!)',¡âž£ß³JwLé“<ñ}#Ñ£tG–V@“‹à^ªŸ8Ó:*Ëd\y‹:¾”g4_CÃ@H”áV…·MŸ]$ÿP<›¸Lø¸™Ë_Vi4fŽ£ÌÑ<óåË£ðÌÿö«~©ÛÎãà`|ÙŽ¬„ÉV±ÏY˜‡yV_ydùɲÆ4dq;CÓYV’×õ"ä³Ü¦]9ÒªÇå¾q™RöK™P1s… ”Åã]C×>µ ‘eMdnàÇ´o¸jŒöɵV z l¨&/ sñ¬ÄhæÜ:*+“ä“»žñ…b;–[K‘}PŒ6‘ â Æ+EäÒj8B¾ÿª°|ñáùÂçõRtO½X9zñÌ+F’ùû(žÔ6œ§f¼nÙÜשb§;/– à}À6€ÇÀº ýi>5£óch/;1ä“…÷Á\åÄž œ­OdYBCß2åÖý…j‹æë˜ ã{X‡ ×qùzå©Ë”uèSÒ­F*Dó[³J!¼æ~ZTŸJC÷ö]öŠ¥ pG` H‰wÓ†Üõ(Tq Ù®Â4i†¹ZY¦ºZ!¥sY 7§h u”u§Z ‰[ S¬ÕR²¶±‚v[nÛ âv¨Î6câ …™dBqnC¬™žÛµé9ÕÈŒ>w¦Ò ƒÖ8únìcoÈ$ØÙnãJ=—¸l³Á.‚K6`ÓžEfÓbòžŠÛ-bÕÇðrÙ££HÛô–qz7ÐÜ©48ý æŠ-y‘rÝiæJ0s%+ ±þb¾_»<¦ä5ʘq‰êìJCŒ½)‚̹•r%˜¹›¹¥¡Ÿ¿×—!§r¶9Ç`Î5‚¥lÐòKZ°w7}ÇÏë1ž+ÔB—ïÛ¨|\É  XþOfùëÉÐWÈ”-_’ µ3< Ò£YºçÇŸÐõRªáç[/îQv·ø ßR®,3W¼Y—€ýF ¬úó0å»ÜÌ'šù¬~ €Òô¯)K×›F–ËÌ,Рݞ÷Œx@Ñ%/RæÌÌÃêɘ6®žü|ö«Ä]c«Òí›x• <{a~¼@/ЀóÞ³ÀÐK€ì…Ëû—¼M¹3ÞìÛ¿Rއþ[Ò:ÐíÑ@oAúŒ®Oˆù¬·¸¢^Þ/{yrI ËOÉ­¥‰ ¬©¸=YŠ©¸=FôÜ ƒ> ˵ùoøÎô?`žá8ähœ¼¯¬†Û˜¯pêqÓÐ'87ªòXÚƒAŠP·éú¶À˜lÛ1Í" â¹|U¬Ü½|BIr:ÆNéñŠ,Y€Ï>¼SÜ¢¯Z½"J–à‡WÑ~WrIP3=çrdÑiGÓÏ”%xŸÄüé”ÅnU YégÖŸbMÞWÎ~Û×.þNP7|ßµ,Š•IÏê-rAÉýØÒoŠèžEBÕ)â*žÒu^׫ysƒ~0Ø”C`@¶]eiÇÍ ¤~ ‘˜Ÿ¨É¢]þ‘ÅòÒóœ+)“èƒXE§Ãð… ç6 Ohp=ÿSh[-{>ă¼óúÓO¯š‹¹Ãîß|4ÛMÀGïáÇ~T}Åú[‚7HJÖ`%øÕG í%¼V ¥¿ìÆXƒÿ<³Õñlèy-¢:z³@’YÛŸ`%dT@#ÞUgÉÒ§FÃ×mw/[¶¬Óïë‰`/²½¾žjÙ‹©Ÿ±²½ÂûÖÚT_…o,4]í¸ç¼ Anu=G¤öðz³²•ÞÈò?‚HpfÚO ¦Ê/s£¢8Äb0ÿnûpß¾}Ç}'mÞ‰Yƒ©Ý,÷ÅM®jD¸íÏš­ôF—7ižƒØ@‡†%Ľ¤×--ú²ǯ7(=ŽnÑjLÝÿÂx Ü?š¾?«_™Ð/P,kpÄSP½¦p™&BëQ<¾(†œè©¸-Fú—¸c8ôn´©ô^';ñ¾é[Á¿LÇ/?—¯5÷zãx~çÀÌŠ þ(ýü.÷l%ŒvûÝ_§Ò;‹Ý'ßVl(åÂ}eŒõó﵆û£Æòú‡Ùÿ‡Ð~p£òá™gž¹¬42èj dMJ‹H^´ŠnGh½Y¤›îWz¯—ï …J­ž©ôŽ•S¦²ôúr•kù—þË-ùZ :àÉm‡jæx‚އÔ[š«m7³„µô‚7ë·J×e«£*¿$Ý8ë=´®8殓ì€Xy8è÷8"VVÕÜ6¯À”/E¯2_XMÿuà¤E²uƒºÙfs9­®vÜ:Ñî·ñ#ð²v‹4Çëê"[”L]aËS]ížÚ²ˆÎ¦<´ßÖzq†nêˆLÍ×ÚPÓéõáû\Í¡ÇYGóaGL¾6J)Þ\еê}¢D€L›¯íd!•3×Á¬Á8Þ<$E°)ZˆGôõaFrr])K¤zrÕE@n„¤Úм]¼ÆÃz ßÎñáÃD%Ô#øºã+£éˆ¤²äy™@¢(¬A™£>zvý4ëOê§EÌ âúq®£Þ:½~²uvýäˆlô6¹Ó¶c@h=­·%gÍ–»Íû JY‹E¾òíˆGñ¹£Þ6¿×Û@Òõc `šˆušg•®”;UW‹¯E°¹ZÔ²¯ÐàjáÕ×åd®–Š»‚@ž‰g7Í¢ö—¯¤]>mDLs ¾»º¬³=NPVO,+e Å7£ÿ÷fu2t->EÆVÛ²*BµãÔ!©]öÙòÑm„»úÑr«B è癤ßFÛå…®Ör(B¬†Î{Ç­Aò!©t¥—‡bÞ)äßfæy[EFz¹RräÓõ¶4ìeYb?¢¦8Ù™QÐ*Ǫ¹­8üSÅàX@²¡óT§¦Ÿ[௽ÙŸ'î¬ÉWg¥ØÕ|Aµê;G6ë |A߬±A&4q·²|aäu«w¤8T›ê”‹¼FJ»Aܾ[鎗F¯œ¬øãI)ÿ\wP«ô ‚Ùä;¢$f7è¨lÌ‘EP%ÅY,c'£æJ›âÌ: ‚ÎÃ[*ýX´ópŸÂf6¨Cܾ›œµò (!þ¹ñàÉJßM¼µÊTb/ ³a[T§øJV{“Qí…¹ NžT¹ Ê‚d,ޝ±¾.Ø¿¤#˜#”/[ÜZY¥®èɃµñÃéÎy%¿ÿJêUxÿ·’@ã=â9PfSêl°ªJ´f@AŸ0C>kêé(Œ?ÚËz±¹J툔Ô>¡oƒÒ&ý+xŸòýS†‡ðe9ªìUñeñú‚ÊÞ‡ñ©8°r[!n+¿¹m“ññ®mSðg1ëØ–…Û¦âÏlxwáƒk[ö5Üßܶiø0~[þ\ïÓñáªm3ðg8¼Ïć„móñ§?¼áCä¶Lø!¤åi×Uƒ¿=o„›îs^䲫5x¤¦Ôųtñ›}Ï iAå]òæ_>@UÐLŠð_n ÷óïwÐQ… ÈŽçYÄ­Q ¦ŸØ ô$I÷o•žË¥¡þf‹aÏÑ3Œ»×¥w¬#H‘”wño¼øèuæ‹UŠVôÍîP)ô€šídú#-ü‘šdSìþ-\ž¢2Áý»ò€`‘bÕ)v[`IPÅÊ¥"^÷ÙÀlU » ïÖÞ]Ư°£rèßM{;b¦‰žg­ŒW¨ð õjíØéåë ¸}€ñBá]iÙ ¾ïªE“$¼òÆ“¼yA¥'Q|èn:Ðr=JëÙvàaA ·œöã²`$MÂ?²£A1Ìä@é“[Íô7<ÂÜSӷ䀰’úúþÅ9„JW´4`S¶µV‹ à`LqРõžÜ¯^ɉ'îß½ŽD‚ƒDÄÁ-Îq¼y&Y¼ ƒZhGv M?.„Æ‘(M©Äõ¾“+8çóJã‘Y ª@ÂÀÕÏnžÖ¦—ƒ “”ZXc`ˆZj‡¥ë~ëªØ`ß4°>µé 0@Y+XË#Õ|óßY˜âÖBF’ÔŠ‡:æûåÒiã1®ÖÞa´_I[|† 7*t.ÖÑàÒtÁÙë˜Îr›Aƒ×Õ +4£Í諹ÍùÚ!ôìЀ›åA9–Üuû'ÙQËu²ô€-2 Š‘öЉödéÞ”d‡ôŠÞQR¿m—a‰X;Ê4š¿6Ú”×t£+ýx¢ÞõåwÅu5éQd¢€³ñDN|x2Z^  ÊOÉ´÷{Æž¯—¯¢VÑžÇEF½bUh´C•ßÀÓ&×YK»#WôfS#vÞè‹áÅJÃ`^iÑO1¸?8¼oÔWÿ 3õ‰³¦7[ôÜϵìMü©è*zTô$ÔüÛäé’¯¡þ¶…À*‰4»Imó¿OÁ n‹Èöæþ±*z]rþ΂j&ò#½Vôºå˜z×Q$ê@bEïlz‹Á·~ð…ÉŽö»K‚%i-º»Cv¢·¿0kÞ›h] ¸t–퇱Ў§¦‡]ˆˆ%‚ASC¶ FFRg3è¸òúM¹G«·]8Ð}‡ñ·!‚ðûƒ$ÜnD¯5†{CL€é}…RÿÒ+¦}pÐ'…Û?XÙKFe¦ÉŸ û%¼:ô¾Aò5NܹV“%V©p$ö Gz 8€W§çv‰þŽtÄsáLêÖâ/åH˜d—¢ W—Íu.Ãå­Œ 8˜øÖ¼rT EøÖ^¤-=Ëy»¥töQ ¬Ÿ¾o‡º°ƒ.u¬y^mrú²/-’!ˆåÈH—ÕIÀñrÏÉŸàg± Mý¿0÷ úÙ~´2ßÙþÍwćœ ©IÙþ Výýfxšíe¼_ ï—g“) < ÌVs;&GZEG¯A¬B\nKBÚÙh”jÿ!~1½VôΕqŽ@ b``Eï,ã­?­p[\vŸ5ê5«9w§G#Ž@¼Ö†ã¼ ~lò:Ý´1£¡É!~5½yÄŸg.ãüzŒSÑ›*zÐ!×mC¾o„ç14@J™f‘¦x³ûéta5è"çt]Ø»8]XuºÐiðaò±5ÈcÐJFuÅg³± p\©óËmC¸>p¹¡$r}`è5x¶½ï$Åv2¸‰Ç](Ü8*âWz–XÌ9UO'’?W111Y: ›„DH™x½Œ6±˜}¬Y¸ÔO¹Í²>R¹ÝRÖN±ÜÌ9܉ŒÐ#‚¶_l(ÛÓè0ˆÓ’åèÉø#uoJJ›\û´ÿ7°Æ°d1Öû°|0lcJQüºÅÿ˜¸c§w^^ãEÕéÙ>·è¾'¦C³Lì ×ãÕy)v¥Íñ¹…ÁÃçI)Ú„àC"àõz®ëNÄþàóaË…ÚþÅÿ(mw¨³Rîd³R2¡ú¨y*]Êì:•åÊ®;~° ^~)s¤@ñ;¡¸ ýF Š‘|sñ÷=|gw¤8uõÈ =ûŠìu¸¯†üSuøsLøsþ=øÙú”DvOJ”»“ý=w}‚º>e©¸ÃqƒÒ,E2-3`Ï-û–¬áK¢ Y±V?ý_(]dRJü…õ\ƒõÉ•QÙ@ðõŽ`šRkeGœˆ¬#·ìDè(‘¥BMáÍü/?¿|¥>œò"ŽŒò)è=Ñu%Ã͹'RÞà©H}•§:!uO‡Ô×xj¢6w-vaµ;ÿoÀ‡WÅcÅãÅŽ¯¥81yL ©b³‚vúo” ÕãïNö|J vì‰ôXÈžHA5eäi÷r=.Åiù‚ï½£Wí8´¿/ôŸbñ)ïã†8´m×>Ùu¾–‚÷–”ïì¥×⟫Ô*žÑ·#N².öYjûÐúwÖñTµËò”kŽÜ Âõnä± o&{æ`8R¼ãk?0¤û4yÀ– öpJ¼j·4ÔÉê‡S(RkUJ¼UŸ\ï¢õfg/t‡¥‚ wX2vë¨FN[taÛ&Bcg¾wãðácëgÞ*E½õqG$Ñè‘{$[µ8-Û5sCð!½é1´n<Ÿ‚Þwµ¨q*½ýJoh蹫_éÕl?õÃ$ÖH¬!õ3ÀÄ'!š4¿í×q2nãHÐæM‚_À P‹¨Å©śЂ¸æÄÝ®“±6óÞioh@@¡]ký3Tû^ Ù”#KGâŸ$všt; ýû˜}bý0Ô¿'R&pŠ;K'V­ QÃW5Çwßñx_÷0 Ïp+áŒOØ}'㕞L#û(hšÈxu<õ]ôPDÍS•¾{ðèå#ßù,×ÂdA㜬¿Ú™ìPç8ô7'ƒÕXÇqgaˆlȕȊ“Ô9Üî“å&³âuŽ ¿bÅcTQËŠÇ…ÓÝÛDwÝz5XñDÿÖ0¸r`g6å€ÔñÔ~{¨}—ÛÍuªKVíä&^Š®]IdµBžÏŸ¨tÛEzWj¤ÔXUŸê«â+ë©y2 Ncku@Ao÷ÛÙZ‡ºÊ¡¿9ÙÚø  ÚA´užÕ#Ú&'²û“ÔUv={2[›¢®ô·Qlíõröf\0–Ý?îR j&O` &Ö_¿ /ÿ~ØÓæû„õþ 1gÀ8Ù°ÝïD˜îX\}““X,)caIKÊXR&VîB~b¹Ÿs¹ÄÁ+{pªK·mˆè\ ¬és?Ô]: Æ¿JmãO‡k·|þ·bŽGð Þ,úþËùþhðßדþÂÅ'ž CÀŒ±Ÿ5±½\Yÿ½2*ÿ‹T€×Ht†ÕÉ"ý[@Ï«œô—Šþ†#Šäe¿uz·¸QåH[š~°¬?‰Ç BðýOUîDÚú!~·cz•˯z—¤-Ì]_½$8gvú§:õÏ ?a{¨GêâúG³Qò Jǯ¸µ ˜[]œÃÚg¬•ÛÉO!i|ÍÖk‰p¶oc0ë×H°‘ÒõšÄ­¹ˆŒìôlHMPyæ›>²–qµ@nî ÔF@}6MJà2ãkô9$D] }ÿ @ý+ñ÷¤,…B÷@á’ôó ‡·ÓSµ+ˆeÝ•Çé%7¢ ¡Î¢à ¥Úx˜y‘ò¥ÓGŸ6ªRjø`fÞÙyÛ”ý@/éßlˆfgh¿–ØùÙ#ƒÒ4æŸØÀ¯#ÿ ¨{è ÊWóA ™FcäùØÞ#÷€ù„Áj>Þ™¬³MeÓ3Á@ƒŠ«B³q« ªŽžÆN@Õ<'ŒãÈ0’zÕM+žÅ_ªÿ¯ñIΛHÿ¶,"Á¾…¯™ì»\È0uý¤+8ý‰[…ëÑó–0'·ì ~Ä|¤C•SUd$ èÜS> $‡5†CѼv¦ž1È+{憳TTHÈ÷½ÿ0}¬‡Qï8AË—€È?ŽëAïÑá뺈 þðÁ3ò@ÙxU(ÝVã6ÊÝhí?˜5*-V)šoUÍã_rkhI ¸F02ßJƉPg¦¡²T¾´úz¬%†í·ÀПY,޵¸ÅÇègOàSƒé ”.rU¶»ÿ©"]Fx§JÚÙà[T€èPåz5û†iJ bxÕó|ûCgÝŽTi@‹¢d*õ‰çŸ.Á­H‡,Ïð§Óö5ÞÈk|†ºÅáCf‡TÚV™ú;YR $âОÆmvÚËØ/c À(\‘ü-œƒ¾Ì;ƒèQ9ÄÀ¿q!ÛÆ©SˆãË»þD .Æ\«¢7ÝÞòaz¹G*¸úZ ÉÒdÌZL‰Ž”ì‚öëh’ æ¥Ü¯óû"ú‚  ƒTÏoõžÝÉô¾óŽûŒø¢àÜ¥€K¯¿Dd ×sá½sdmh“ª¤<w£F(Çáx‘Xð¸Ñ:Re]›^/¦}«Ýð·„}œú-«OýfŽkv¹sd°ÜYFç¸6}· fp•ž KN.@ò@,šî—ù-:×Àé'åêózãF+ç“åk¨”V>‚}A íeŸ¥~;ÇerÍ‘Á §¨ü2@¥q¼Ò­ô$—ëÜ%’æ°ËÇ—¯ÆX>]Óû*ÿ`\o«<š×1ÕÀÛ×¹bŸöyxûl^¿¸5i´Ò‹íßãv TK ›‰Ò¤ˆôÃF&~_I‡ïÒ+=ëè+¿…í?žpOr^Ê=¸!©uƒ.1²vƒ‰*öýûו›Ê—ýÇå×Rùòÿ¸|:•_ÿ—ï>‡ååÿ¼ÿT^º¸¼¾~byqÇXß.±W«ç’•ïx¢¯;ªîGµýøv>íWºt~ÁwSþêECé½½\44M.)ߨrGQb6v…—ÜHœCÙaÅ×rð~2K&Ðúw—v¹V9–F°ÃìÓƒ_1lá{}§R<Óˆ™¸iÆë´ûCúÁÿþ*þ¥üwöÿ$~2JÞ‡xª ÿ7Ðæ¿‚ÿÁ¿ô?…ÿ ÏíЄµ|kB¯tÒetûŽ@ûÑ`R×/øúp#tþ§¨|²œÊðœH/k¾3°ÖÈ8ÑÏW€·]ÇöC÷YÓÁ.ÂØ‘ʼqBÅäÂny „‘;tŒŒ„…拃ç #ûCÙÏŽüNè¾’²£…+hègƒ:ì²»®šã6Ùjçf|Q4Ü?BïÇ®k3¿®tnn£¯íø·ÄMLQœŽÂá{Rì•»°öbc ½c÷ÚÍ×PûªËAè’íðÝóº_Œ¡"·à ÅU]XÞþLFCÈ|ªË ñrt§ß¿$Ô5û‰þX÷±{_ì9v]W¨#]g9aögÀ€ë}ð³à.¦pÏ:XW@ÎïËüÖokßõFïe: (»Ai2þ†T¸Iv*8™ñGݺ) cà×pÎ…‹<³”†ÜŒ¿¡Â‰ÅO±>ÊöÉú7V§´[!VÊúÎÊ/1ˆ%HDhDH² iU¼lß\Õá¹æPö ÒÌe)Ô ÅªÓ‘üHÃifGý Xg„ÚÚ8åyÞÁÓƒŸÛH8'³ÓtV~MÙ¹>fˆ¤U“bÿ×™N‹[8 ÐT‘ˆ ð~H:ǺÅ-ó¬gÄ-¼+ì#ëº Ë>ùEåW4×ú“ÍøfBàÚ´ÃÀ0KçÁ‘‡1¼'dIз&ë¹ôõçÓ±uØwÜÉZ?`º |pä•_öm¡ ¤¦í5ÄäÃûGîÕgü@ý qã ží êªÊ÷}ãä˜Qyw}_;­¨¢Þàb)ƒüDÅ@WMõm ®Å†áf¯õÈ÷"eDÚav0 âøÐ™&;ŒM‘ðα­/"\P,p5ábÛ…¸õM"h,ö z¹÷à½>½|Øìå÷òéÿ‹½ÔqvªO/?ù‘^ÛEÝ‘¶—}ÑùéÈÓf¿.ª°Ê¬iž±B‰ªÚƒ Ïè½°B>ù|'œ6®é´ä¿:*Ôá‚Pöü¿?…hÞéSèS@n-ŸBŸê€&ôÁãhÿÂ~•«ZFîÿ~œÖ†&û)œC}qÐwò\ øa²žAg @TX«ÉÊTN¾¯œÖ3¶çyÎç¹ Ïß Àóüm7'ç‡MrÆtŠDuZ'ä1Qòõ |ÛG#^8é %)„‹}?Š  AÜÛPøîK PcߊïËã8ÿ"˜&žÃ$,˜>:M°Ñr@¼|XEþÙ/ÅËYÂxy“åÿ2!6÷í祰Þü£Xoþ_¡Àæ§À–>XaÒ\õÅ4WeÒ\SˆæZœæZ´÷-͵ö¡¹ “æš.¦¹Ðb|(4Ú…ö£Ô¦]šÚî´^jÍÒÕ7TCTò0¸EŸ9ÜâBáÓP¯p{_€EvØÅÀ5°þÄíC>ܪ^‹¹FcKæÍNÛž0¨BÏ]Õ·_„ÓÝG6³¶³Ú•üÝ„o¿ úÓg{oâðL<ÿkM@¹Ñ†Nž ­ø\:³ét«ÛðÔJtI”b’QGq5…˨:n'뿆¨J™ª8ô·°ÝÊ]( _(%_¼¿…ò1&Âb­eõ¾o*ÏO,–Òy¨Hûü#F¢U¡K­\cä:Q •­ ~¡=WÆg]iÒÕP¯…ßox/,¢!›ïk‡ï[늳XœX[•%d6fld§ž)Oy´|;Â>ð¬8«¡­zßW ‘ZO¡M„”>Lœ±ás½½pà¶‘GËnU9\:,|>N…Ú¬G±§#”¯¬X“µvƆ€Þ#½+¨¿ù´047ë•°Ý|htÁó‚ü¯÷vŠþ+Û3,}úÁÀX¾ïøõûLJ¶±ª²‰HCÁ xÆ„'êš oðE‹©šà£œ˜© ô¯áeNò :ì¤èb6yÔÈZ9EßÇ%±=ˆwV+ôŽéG¿~äP4šìà¤`p„¥<›~ÄG>’„Ì|ßXYƒïëìTL7ÚÂXñ ˜B™7|aŒµN„9†™àî«2ä :"ÙÚ.Ò~K¸1Z1œé+ö°±¿Î‰G5i “±ß"ïLŒñˆÇ9Û¾Ò+böê´­wîÃ¥ËW¡óq} ƒÚÜo¢U‚ZŽÖ ´¢Œ!_ hAý aôe‹yÚOñ?8Fù€ŠJçp´nüUØÁ٠σœcp´®F´¾È‘±+4Àˆ¿@®qŽ¢ãw’¾Ù¯“´95°fÄ/é:~wñ*ÃhF§½Î>HÖ+¼¦Ã:m`Z?ÞÇý…¢B¥m,šZ»œjA¼'ØàjAÌ›7ÚøO3ÿiä?‡ø÷a,Û¹ƒ¿5wy¬™¤´9ÐKe[PÖŠ µÕ˜!÷¬²+Ù³GºŒù:£ÏQÏ–Û(Ys˜ëZ€Á5½wu‘¡u(CgÁY–ÛDyšÕ‚fÕÕÄ ü–‚<¹-ªÜº;{:ôK@’u:Ëm…Tµ¬Õ¿ ̾Ä£ë0ê¡ç@ß‹múí;ýÒsíc­ *.k=t<ÚUš‡>õwÊ¡…¹šÔÜDèÏå*¼hzit½I é²»Z™±‚v–{VE—€ƒ±ÔGUÞçéÐýæ¡[Ò}ЬŠl¥ê›)®³©Àãd7ßœîj-…¾$bšÂFAz’É裚êJTsÛ˜“åþõ¸6tˆÛ]­¬^é!@ýéÍ«íjî¾ôÜ–• ©-PÂ1Úµïrè9¢ƒÔDO­^¹X5ŽÂʵ¨âߟ@×Ç‚À¡mÉð“ÚÎ0/¼|°½±h+b0¶’ég–%#Îî¿£ {žEkJ"É_jB´ürër‹¦~„Ž  µÌ÷ÑõƒXu…>pÖåVí¾Ìô cGòOš;ü“d§Ï0鵯±ø„Ö ·½› ¤`§(üꇓÐÝßêLô(<Á+Wç.XnÓ®6hF¾R-{ºòktÎW´$cŒCµøU5÷5¶»òŒ ªi’ž>ø®³‰éÆ o²mµÑžèù ¤]ºÍ©9òmÞ²ê¹EºM{c·ÑbªZð4HÜØbµ˜xa‹bU,ñ—>íþÚEÄv]U¢çÃózì›îÓp42Ñ[P?#k·š-_£æ>]yœZcËòk¬=Ôr)TKíª¹UÌʛނc¸ÍRÓô×áO¡Ûבv4}ç*'«gÁø05+ýÌʳڷßö)/åüÞ|è_ø|«<‰ Ð5à?<ÜÞ…Á<¹:™ñ¿©–½ ;2Ós@>øŠûÉVîF® Go{±½Øj/ßä_l?pŠ• <Ø?ÜÒÌå‚V ß±ª >^µ©¹öejRŽò¥]|k'¹³¡žÒ@×"ȼPuª3R*}d¥Ø·yœ¿¿=pòÝd˜qm5áõÏúG…Õ?Ĭô2ôt‰&ºî½¨‰=z5¼7j.ìî{/݇ˆK5ðë‹ø±>Üyï÷ôÁ~é>ŒûöÛ°|_—n£ñžÿyÏßó=mT€v{‰6îùÚ˜ð}md^ºöÿa8Þ‡~qéñ.ÕÀïñ?oéßÓ‡äK÷aêÅMü(žœß׆õÒm´,ÿŸ·ñÚòïiÃyé6Öÿmè>Ö¼WXI£T±z´QÉP¨ä£’±jÕ3äyœbñz¾®aMo~´Ž3?ïì\€uŒúÞ:Âûz;ôµö硾FëÑÂûöâÏ/êÛá¾}ÛUÓ·Î(íž©s–Qç(¨3â‚:S.Ug¤–ø#uv•è»DI¼ÎnáóϵÀ.Åìñï„B ÎÕ–¿±p®†Ô°#äLðŽaÛU´²ƒ“¬° ŠÊƒûÍý*7.²=­–u†¼ãnF™f:ȹíRÔ¦ÁUäXôéÄEŠšŠr«E¾q™¸uï2–û:aYeî7–I$¥ÃËÔ‚o–e ‘b•‚šêÆ7¿{§EêP~°L®ÜÛ¡ÔGx‚ËXñ7Pâ÷¬c™š eDIÄ2± ­,·…5Qn/ôEÌÕ+ Ÿ ŸƒFS±~BÄ$ù šÛîšnóßDAª@«:‹°gù=îaêdº°WºÛž"ä°) qR¤cÁ붯¾<˜â‚B `!¸Ò^œ+  Gu© @Øf{å]ê¿L’ƒ@—¯¹s€$) {ä§Þ}ã§°Z÷nƒ¿«®¨ ‚Žð·•gk ÒÀkè¥ Xi< •jÜn±ÜÜÊë…i°ÂK±%/žêo×N/*Q‡a ´âÙMZ‡êÒ?]•àͲ«vÏÐJ \¶RëLÿtå7JÏq#ºS/ýà` zÓÊÆ¢ëˆ…€ã+U‚ž92ѪØò¾¥uà!’Ð05·-ê¬æCÛi¾¯ï¼á O¼# ÅÀŒ2ê0 Hgl†ÀVÚÙB‡7í@à€w†•}Êf¢²ò¬ÿ> ôOE¥¦6Öqé>Ÿ¿+¼Ïc.Ùçûö¹ô.êïg¼¿Þ Òž£ó¥½¿ƒ²¨¿lØwxÃ]¼Ãý±ÃS‡ÛÞÔþÖ›íÇY€ô`à´áßÏS»&bÏÎΦ@¼{ œs/Œí„¼Î­‰;q4HWhÁ 2!Aâž<ˆ¸5'}^(°ßµ?Ũ¨l{Õü7Xbné}ãCB… .üdÑÆ B?ÞAwaƒ«-&­ö‹a8WR¸BR¨5§£³fÕÃïê92<è|UB½Å¤4è&kÂŽ¢¿|K¡êÓü…xñw8c`{gHcÞG/E¸wÖ b½&]÷³Ö§ÖäùUæ×9é_Xç͘6yM"úEqß™ Yw˜—¦pêŠ1yŒÛéCù tqw|†Û)>ô hµ“x·X•ƒkªQl•£òx°ô·À܉ÌÏÜN›v@¯î¯j– Î´§ï^e·Zÿ…|Àö¬B­®ÃfŽQg¦\DõÞíH?Åll•Ít0w Œ6–±úC´n,z)Cõ2ÈíêL‡*·³Ü¶;õ#֣ΰ§Ÿ*‹`©¡_§€1¥úRO±Ü6Õ °-uozA›ø:¾]ÐæéÀ=Ï»Ux: OR]­Þqvàk£]-ÀC¡W=R¿šÔ)vª­3í€>õDÏ1ô]´èp‹œþFx ÊmjY«µÝÞŸßý%@8ÓãŒ[ú3SðÀ‹¬³óX‘Z¦Y;‹¼ûiO݇; ­¶u)ÐéÔNèäOý´pn‘¶˯£òe-ª«Í›wçÜWëHj×A]ÂJÄ*Ti=kn·­zoófÞY˜Ç\ÍÚÍXIVŠ, ·ÙˆXåd³u)¸ÅÕMÊpž—e±,|È,hOÝ;7÷bóm«ÆzWÜYÈäfíõûˆïçi„‡ÀUwŠç€XÕhЇq ˆ øÎAÃ#8ÓÎ`dÝlÌ-W¥h¯L’nÈâ­³Æð4Mµøÿ«Z—”á¶³uqã–ï”ìþßcÄ×Ñ0³‚…ŽÌ… ¨×bÕKø%HÒ?úù'_;ÿ‡týË0ºžõ?¥k‡¸Õ™‰¾|Ï×üÏh{€w²5°ëÿWhûh8mÇû÷]DÛÇîù7hû_|/mÿöž¢íüÔ‹¶ÞóoÒvZæÑög¿Ðiû£_üÐöžÛ-–ÅÿmÿI§í—¾—¶kÒö½a´MË$8€÷¤Oܺßs@-³ë皬 Yô|g¡m¶x2QðtÀ‚Z «­výbXPÕa‰¸evT¿û ˆO÷Ö Û‡ý–)‘¡¦:óXÜy³æ«9Žôgéeªb™‡@òÆgÄ!IQXxíÏ6c¥éõ ‘X#¶.åðY=¬ÕO PÆ& Ô3ÅTq3|Ž%gÜ|Z.·xåÖBm|]´8ð®‹ÆÞEŸ§Ú}ÿmµÌÒ<=Œ¡4uö¶{´«-Ý¥‰ÁIêÒ`\­b5Jj®ì/ÕâC0KmÅ­£]MPãâQR,ë¸xžÊ·©‹S°+ƒYñ¡µ|ŒºØ^¹—îʹ±Ù)l0+·³ÅcX¶ƒ• ¬Û›ÜTì`…Bõtç0ðê#‚²f+hÍŸ«Ù~nÁ`Òj9Î,æjbe‡ {þ»q2öt™ëM¡„2ÏÕ>»ò´Ú SŸ©=€œâÇŠÜ·T—æ§Û˜ÓeWéò¯NßpN×dÚÊaNk0§‹`N7jK°q}NƒxÛh¤•;Øâ¨+k‚ž’›§Ý1’Àçêl}R³ž|ÎV>¦È»æÎ"VÖ¨a|JšÔÝeà@3%¨ãj§S¸hº„s»ª³@\ýe…cXá(ªÿw8×;0Je‡DÏSð؆„ðПqJ—ÛSyãoŸ sO{ëuµ,Ps[<{ôºŸ&GÔÍE©½¶â–`©Ã­½ À`dæç3pœZXƒ­¬Gh±@£5 £Döç!LùA,þyšÿê`ÿ ŒýK²¨Òæ„%®çì!éY|²NÜzÚÓ!zþÖG¤¦É6f!L6œ©|Ê‹ Åw5Ž8žwðG®ÆáÆØ éMR±7oœš9Æ¡Qzå• O4Ù'}£çhØd×›ùû”Ü;äh]dÇɬjÿ É Nºµ×þˆ3ø}5k‹˜xÅ­­Ãÿʰ©›«åke øÔ½9xQŸ×¬¡®UÆV\ÐkyAŸ^¯ý ïq0;Dé3Ç1âRkoýÞ>šœúd¨!5z§CúÂ?ðŸOÿ€½ÚN<êôüÉð¡½6Ÿwh?¿ÖòN;zúž‘gOß ÖÈ}‰*±V¾w739u¥Hâ8’,ÛÏoE’<¡Æ²½Ê‰ï€ ÝIžÞ‰·H•Êq«µÎG}¿âø%ƒ Dr~p®É ¯¸Á±üŠå¶Üb_ކAÚˆ­Š2•¨ô¹Ö3VTü.æ‘rQx":N¥3s åÅI¬Œi/NÏQ¶øŽ5óYù|UN¼ô(GÿG#ÌÞÚ6º€#ŒV. Ñ —b:lV±ê&û³Æb UÖA¿à%‰3 "{jEÅ?w-HN£ŸÑsµÁЉ¦©+?(G¶ÎîÿïË‘es.)G.ƒäÅóQ޼óÅ äÈ›^¼”9~NHŽÌÓ®kŠ‹É>èRœtî_1,Çù ý/žçü3ä&LÆÈ2@Š)p”FNÈ JÃøJ1àÄ Ñ«½M¹ò[C¾ÈaY°×¾—Á„ ·£ô2ïŒ ÃuzJ°O!ÀcH¾‚lj;Üh»›¾·t ¿pÞ1#³âÖ~RLúÞÕÿ‚UÏÚ´ˆÃ¸ÜªíøàÔEç\¾`ÂYô±0F 7—ŽúlLcáCO~ŸUžÀÿÊȆ)ì~úͲÛàãdôx¾Í()_­NÖ÷; Øý,9yŒ e +Æ*xI{`WH6v^ÝEœŸ6ú¤ls“OßÛS³Æ€šÂñY´è&Í„oòµŽþ¾ lS®¾G„ËçáÏ?O3p¾©ó‚|46ãL½P?«¦ólc&e϶Iu\üíZó›qæç9àΓ®òw¹µ¸|¥Ž„_7Ïß3×ê³Ói­æz×fœÎžZ¨3j™2Á²v¨±8Ä5¸ìXhäG¸ó´ºgq®~nÚÕ)m:ÃR+eŽ øDmg²æj— …¼¨.Ç”Çi8ÈŒâ™ÑåÓÅñêìdµ<)µ›ÁìB§uwzÝJ©#Êtp¶Ã;5æÎ<æj >E·ÇwzŽ.ätû2p˜_ª®¶åV¯#1ß úû) ºÙŽÔnoüeêl!µ[ÍŽg…z³§vƒÆ21‘ l±“'³Åðjgåñ¸GÓ«–µC…ý7å:ªcÕÂø)¬0žÌXl/µ±ÅvÕåð§!Ó˜õ|H”Zü÷ß*¶cï×ìlq<îûˆÁ>gN26æ«òµÌ®y€ñÜâàŸž¬·¶gÚ™¢œ°Ãü$EiôdÇ3Ю{âZ?:ËÔ` Eñê4УXA۪Р¼p¤vuÖ[ù° sÜݨ”Å[uDzøiçèš é¹íëoò é¨2MÔ‚v¯p+T˦a0àÝÊW’‹I™Täz( EÊ„¹Uû õ?ʽˆÂÝìˆ&bÎÕΞ±v8¨ÇïÙÎTÆ9…ÕÀÕþŒÕ7à  ê44)„Ô®@€æ ¨tE…žZRÓŠíÒ¯clÚôSâ¯ë¼c>^Žáµ–o±þxnU»ÊÉV9Ø*A©æÆ³™ñl]"›ioPz,až±®Šg«Ù:{ ¥Ïgçž`õy•·]àLÛ£ôœë+š^³×Í Î¥ù^Ç­iµéÝâ¯k½óƒ1ÀrQT¨- ¢ÜÉÊq—VJV â Dj /‚uù±òD ±Àq€¡H{Âm±,ZÈvþð=0”"–†Á°"ó€Dù,„i„l“­s°u‚”ª+¦ÐUC)5‘¡ÄÚÃñ±Ž°µÊ³a±, ³úÀf]A\>ýLi$[`g_¨XãU8¯'á)£ôÓD«lâÖ¾¶éë ,‰lÀòãM†î:w(@õzÒ6ùbGN9©? N1&?e.+ždÑhí7wk¤H™¥aºtÇðßappÿsgiÞåǹ:?pذ-(tGÖàÓ„ª.àŽ‡\¸¡ÍvJ¥Þ™NëͺçrÈ_Ã2,Ó®ÔÚg¬= ¼ë,HM‚2}T„zÿ(˜ÊGÓÙý£¼ùw°üy*,Û¿’ð–Þ¯VüÄo·uün¨\i‰öþj ÎíÈÔ:ï\»WžÚ¨ì¶Â,ƒrl7b‰ƒ± !Òr\ÈèÒj=GE€9•Ðßuc§ ‘øf®RпŽÈ'`…±6D6Üð ‘ÐÞf·7D®‡§CßàS<ÍzŸªáéÅSv»´]{¾ -r&²&ew›<1ùðåÖ’œŒ8»öÂÕü³p"VàÑ0Äm7ï^ˆUF›B§Xõx)AtifÁ:Õé²£Ö¤ßÌ=º] ØÕ„WâôƒâƒFw‡ûmq+ðýQye¬:ëI›Á:•¯»¼ÂˆôÝ«nS‚bizÇÔ‚XÙWVÑ3*Š®<©Ù]Àvä$v8Õ—¾=« |ÕåïŸ~D¬Šà±Òt(LX›# X?‚J`™†Ç¶ÿ…>Š5 ÃL€*QºŽ1WKi‚Ö~0l@z·„ ·TŒXêPºÄwQ„Ù±Sù²K? «²mF ´°Dui™B„èÁ]uØ<üðÖKxX'(Ç»ÔIˆVo›„˜ñ —¥w‰UèÌ·²÷È)V=Ï›q¸1<6 3ÍÂ[ º;НÁ ¾-Á8ŽÑÌuHŠy)ÖØYÈ̻Щ²ñÎŽÜ‹þ©¬¸y)˜íž¾F¤m~%jÐ51°õèñŒã&U>”Úk=¯|`e4Rl<‚21ÐkíšÁA¹ÞלËiÝAÚDî«ñ¿˜ŒvˆÅíDæUoÒ5vÅo‡c§•]¸ÞÌUNÆd€6æþ§£eGåyT{KÇÀZ]/ܬ<‰¯aõq¶Û§Åúü¶´ÝP%¨nÕÂPÖä_µV¼$ײöê¤[‡Y‡r2’ìÅ" ‹öÒ‚þ¡¸J £©°n"ë©5ѽ|L…jœ G^0¦̃˜&Òø«PÂ<¢uÇP(¡X`Ðc¿ûÙçÒ¯DµÉíþì é7#Í`tUB£-ަÁn±jsØH?yÁHãE?éQ¡‘f>åxô"æjÆk¨ýÞ¥Áþ€7©MaÃÝ Ã=‡»;l¸Yƒ'¸€÷ úpË?ÍéΑ¡–5.n²•5…{ ö>Øa°ù`f‹4Òóöq8xÈUØ5÷åvmÃ,<Ó´?lþ~‡è7æ5R÷`‚$‡Û•Ê®ÛèÔœ!çE4Y€¥püÃt‹ãÓmÂM·4£™g…‹§[«ó@û¬Ïtký·§ÛÞ¾Ó­õû§›Xýkä£eŽiE¼‡;â,–… ˜iõúKžœçmV/ŒÌÌ®ðYæÒgYûlt™£’®•^]/ ›`­l¯ï$M°½ ³VÇ_³Ë UU7^ëÂÉ8†ëíЬ Ô¤õË|fÝÐgfu+{"ØÌð™Uñì¥fÖ3çûŒöTœ@œdîŸÈÎ(D°‘Õ”@ùZ³×\¨VÂBåàu|ƒ†as£Ö4{Øçõ´) ПMÂqënqëôýÒ4„ü¼P2N§øàxLý˜çHß/ïl¬F°bÍ_ j4‰7Ä>ûÈݸÅ0C*]Ni²Ò…g]™Ò-“p©“ÆN"4uíª\1‰$ýË'‘µRü$4—â&Gym\ÜM2´[`Ÿ)_Û” ÚLHRobÇR;=Ý¢gfø Ãø[<ûEÏuÝá}šÓ§GbÕtܾ†^E‡zu®«o¯üWqÝ$ Û³ Kq]õ_æz3#4…"_ø§ÐåÆ*²^<…Ú¾o µýÛSè¾S¨í‡¦PUß)´®_ß)tO~ïVs Åt]4…näSHÜø ò¤°y$nâZß7‘OÄÄ¿ytËÊLPGŒÒ¿:R©]x_Az÷þ„¯¢Ò%àëêÀóø:PéŠÀ×õ¯Ò[Ø„mu€~¶ˆv„Íj å>’ÂÌš e5Iafe²Þ¯a(Þrÿ‰¾h(Ùæðî‰.Ø^›35^uZ÷³¤6æçiOëvè ±EjÆæ§!CŽ7~x^É)t6.·Ž¬‡J ­Ýù©½n–Û®Ýÿ m¢Úíhv:µÇ›­ì`na3Ö?ÚÕnmψDêz ßK#_ÂçðÃcÒÇ7#-ñÝ‘2»Ô?( EÁFc*›S7‹8¬vn|g'«_àé`gĪXkÈȨª?¼jÍðÝS»Pô|Kj î›Ení>ô$ üuþB)É8fŠuk[ ó|Öx¬ÁFäw¶²—4ãŸyæº5óg7sê]i:ŸU/Z¢Ki¬^ЦäÀKaTýBh@{ô¦þœV«Lº'‡øDmÎUøõho1;„W2x 1ÐÚdØs 3õ™ÕÏ_è¿1Øgò4³Ö®}|3*Ý~+²ß(˜µ'¢ˆÚu{­ñ-g€tßÓÏøÝžÍÕ´ÞèûBNÂÐÔ(çíâÆŸáRw^\¹Ãi Ãz&–»ÆŒxÏ¿¸ ! Œ¥àÖ²ÆésÒ˜ßâžWò='ÚÖÙ[¬BgônmÐ8\¡sÛaÐ8˜Ìëôá™g ÇíAÚM8…ôBG8Ú^'¯°wqãx®:ȵ(ðFÂ^ —ÚKŽÇƒãùnŠXµq_˜Gã¬ýB¯>ˆÕÛÜ0Ø4¨þyºüÁßnÇ}@ï¼Ûœª«M›0ž†Å†ÃëÙ#Ý`£a9 ±™†dÙô±2c'Ëü\øá.Sƒ}Ä>ŽùTÜÒSI×éÕa8wć~Aø¸šæÎAV¿—ø©nN¿ eíÍ©4x¯Þ6§ð.¸NþbÕIšSÕ7êC÷Õ˜SêÌy 7)_u¹™Ü†Ü 6‚S¥Yùc4ì³n¤S± ˜…Å;»K͸Ak=xqÀteä¶K÷+šÀê|'#”ž˜Õ‹•¡!Š–>géâÆñPFé‰2OÚÚjx“¬÷ åÉ÷@–Eˆlу øŸî» ý#ŒÄ¶kà=¼hZ­Ê»÷`‘ìF6Íõ¿ÉàãxÞÈ4~óèIœÿð-ÄpæKQnRPtª[Ñ—)|Àã!Ú\ŽóŸøÅoo$¼êüü"¾¿huõרˆ|ʺÒtv pü¼k¯úBûHþ__xçÁåP ì¸çTÐ^š ­÷]¼ç¤ÔÆ*]bƒ«¶œ¢€ÈcH»:cTznÛêáÀTö¬GÔ…)ž£¬¸UŠÃS°) o×ÚïT–µÑú¡S¸Ñ%·ù¾±ážÿ§ç©3јZÖXn«”|äjÕÕª®pÚ”Y‚÷•—Ø+ËÚõÝÐA€ ?ÎÕ.Üͦ£ÔÞÁ\-ªÜ®Î.Q‹[Ð2»U¬Âãå5·U]‹:ƒÞ¼šïX ¢s‹Xu í·µ«®–Œ²6æ.aS@q°ÚÐA‡ó~œ)çLW»w^ûø•¯ÅŽ™&ZÓ?]-x:ä1AWseê}JY³M|èï(⺚-OlÄÒ@ÒÍÞ%ó¨Ïi9fÿWÊN»ç´Ôi€"'±3GâÙ˜ZÜÌžxšzôäÚÿUàUnUË•¬{tnkWºEµÔ§‹í«û)³¢«¿ɳ ÕVІ¨-kÑûÍÜw"†°³«mÌ=}Aí¶cE¯‘ì#µ¸UùÈŠw`ØJÁï#}«>¶V@ŠøºK©s¦ЮºàìÈe•ò4g9˜òi6æÒæûÛñþƒŒÄÉ€›–~×Hô ¸Av€º‚i%)šgÀ‚ì!Hfþ[±6¢¢ôc«â‘¤8¸&ФSܺ² ê”[¡*u±½/bÄ_†£„#ÃÀ1¹šÿ_4×»¸¬ë]1¡4_Pàô®XTz=¾ ¬é]q_éH|A1Ó»bui<¾ „¹OVGzW¬G[L ÙSH³éŪ©–ðc«:Å‘±FXò:ÿXHËX'¬Š©QÙáae—êv }WË`6¡ 9Sü•ç0C{ÆÌù¢g;>þ|ÎôŨeòŽrácîžï£ó¸6]ˆB<Œ‘rÜ*z21H¹Üî¿ñœž#$¢7Ó{HFßGï!!ý=zÇn7¸4êøŸQX%Œ§Qe-PX½‰¯h’ª‹5u6¥ûćÆù?mTúÎÕ#|›wÜoÕÅ)JËyr¿¹Æe¯•ÍF`I±•½(AˆÑ2¥cÚ(«Xµ&‚¼¸Ð¸ìFž¶a^å×èìP½…õª³ç);›I9M@ífvY îÖÊM¬àËm«ŽghT×Ðlî] LâwêðoÑ“Ô!¸E>”!îDa猶IµX:æxŽ®¹ÇºSÍmél¹zëuØXî¾Ê²}虑Nd˯AF>(•Ú©7!͹S_ǪT:›bkÿÁçå6·ÍÕ’§M}X¿þÝó¡¸ÜÐæÒÞP Zl íJ¯ÈŠ÷ñê7“ué .Ÿ·ïsk;U¬ 1“—¯%—U¸–5[?ce»!ÌTuŽÝŸî]Ø5zaît5ò¡ó®°Ë¶›@%Ú«æî®¬Ãn 1ïüœšÔJ:[Ëm c ¯ Ô3”NJ)Á’ùZÀ2¿#K°.”ËýG_®fÙUX½Ö8Ø4;2¶U,J½S-h‚õ¡¸‘-Y€òȽØív«K ÒŒa¸í >XаI„#9:’¶¦fEÃ8±Ý( ηt‚HóHÞwhµÄ7¨Ô¬Åz$½q :îŸ:¿(äßô «ÅòFnOí±jäIm«bð·WùÀªÒ–U*?Z,øÛÏÑú^ÖQ¤a ¦ùþõÈQîÒÎãJ%·³lÁ ¤-ƒ½_`sæù'sC-ïòŽ‘ÚÍÛT¾›!ceƒ-ß¾_'÷ǽºªuÐhà&,Ï·a×Nd=¨¶æO,,ùm­17a07aušú:w3ø@<òâ B ê0x: $u¥î\1 Z½ó*SßV€22.tE½ÅQ”Ã@Ž˜Œ¾<ÕÉ´õxÇÅÂRàœèRZ¬¬ E¨@³_Í×'6´š±ržô âŽ©7 VyŽ \¡:;;ó& Lz|ƒ)¿VÐÙ@R,¿Îµ©\íBFn›èù)JÏ»âu¾¤|}ž• ·lÅ-¸Ù¸@P‹ílæ¼@= ruw¼\‘oh)uöékÏV–Ùi¹¥<(ÊÜ =Ù=Š ç+šxÞ°©UÚ’È#$퀜Wì«¢müóë4s;V:XËëbQ±æ’²¢wU—:[@ó®N) ô€ˆôr±²¶ôöéªÛÕ2$)[Y«Z8/ý3±j!~œ&@S' EkXn­õr›øà&|l.q°ù–eggF·ÏXÊv+-Ñ1톔aSv†4XÓ•YÃ`LÈ¥þ¨ÛDÑðnsµÅ´…òï…骡 2d#9ß"YÔb¬PE9Uw£‰Zà(¢œŒž‹I›ÏBÍ®æ‹U¹™4ª/¸ó9~ê:Yz7Ëm‘~ …â|þ¥;¦ô²sèãî‹3¯¸±Ž´nrœçÇ-õ&ôŸw#°3ö€ ®²+Ý计ô3¼´ºä§ÒÅp–Ö««âÙÊxuÆg$–¾©®Kb$©3“ÙŒäÀï¿6åæ~Œ\Ë1KèD™¤Ö™^¿r¾†î¡¹ª¾p$¨êüñ Ì2PIìJm¤Òµú¦`ŠgýÄ8À¼Õ?ÙLG- ÔÏöºcu¥·C'bê€%¼MJCþ( cGb¯ñ»d¨<ÜÖ7LÕ×”¨ÃŸ˜À»ið8ŒV®wØ0<6ü 4‹Ý²º• ÄÀñÆÀ³Œ¤‚ÀcÆ#íà]Øí¹að˜ÔéÐ]’ƒ–=Ù'1â3nÁ*?.|³/×ÑþZ·Ö1¬³sA¡[[~'®ñ!Æ­}æÞÒ7Ù·ðMÖÀ'ïÔ;´Ó_è÷ +69nt `ió–w!Ûò)Ç»”Þc,·­Ô©5þ·Á1ý( ñYÚàj×Yå‰.`ÜÉJ‹ ý\W–n7NòŠ´\Ô€oBÑr‹–1Œ®ìÑÌÖÚ:ÈçŽç(H’X¤%ágµ@óïÆDº¡hg“p.°·!šº³å}êÎÓ¸ Ñ¥eCŸ@Œ‚âý`æ×Ùýœ××$íÚÙiQ)#‡­}Esö€çè|±j9m´áúhü}*h—vèxŸ l® ;—«Ã.ÝðÝ\èÌ}IæÎ±ô£Û+ µÂ$Ú1–si·øÚެQVi|Qp<.Ün¾‡~M7ï8ž™ tk)PbIh‹ºFÁºµG@Ü™Ï×ËižJ“µk_ ÃËÀ ¬Cì9 ŸÐiÔ ï|Ïrñ¯£‰htað¯£OÏ^êÓ]a}zðrÞ§|êÍí*u žu[°³i¤/¿PïØì®PǸµ™Pl v 86tLï×7nmëì×6è¶yçMÃ^9y¯ž£>}õ=}ŠîÓ'˜{zЪV¬òò~ê‡I‚wjï åýpÑØŒ ÊÎå6¯Ü‹½•µë¸ŠJñÔ‰x·¶qhŸÑ1÷‘GÄ-ŸàEIøQ¯êú…û3&ì+é®§iã_èæ¾ºÔkÂ@k€º PuPo#PG!¨zG·öñ@óà(Þs€ãúØetžg܇7p BK»öÖåß›|ú>wàe¾@à’jú8Àí7—ô‡.3—t p¾x©+QÔf§FçÚÕa8‚iæƒ4ôm'†w~PÜBÉž£åCLšÌ¬§Òwƒ-ÝvÔ¸q”Èk -,£»­%®ï_wu÷Q·ÈcBêöB鯩 ÒŸSÏsí„h®öƒMF '@Ñn¬ [NFwoÑ?™tµ7¯KÂe*)÷14;ê[¨9«¥hBà›Ýïù#&¿,| |}ޱ'ñŒ K0¡ª›q‡Š›€dMdõÊGÌ“‡ùVMlð, rÐ ¼Æ„@™§NC¹à›˜¬Å%";¤guñ<à’/ 3±*«öâ3×x(&Œí?dÂø"«Ìn˜0n; .Y2a\Å“»@ÇI"ȹÀ|q™/ÚK‡³´]´ë6À©áv‹ö¾6Àv²6xšÛÑ ¸Íßè»þ>œvÔ?·ý#Æ¥÷]ʸñɾt˜‰t8ác‹¥ ÌÇ.nçE‡³_›&‹Vè÷’´£õt3dwqWèÎÉ3Ö¾wN˜•¢³A¿sÒE;íÖ¦ôÝ«&*eíb)rNM„•}ŒòµUô ¦d^;¹L¿v2€ŸNzãE¼vÒBŒð¾²ôui¬1I/çðýÄ ºŽ)¼ø7îk³hå:\ïùK+Ì ÏÑ…Ò íÙåPK¨©û nÞÖ¿D`¡a;ûÜe:à_‹hèøÞ}ý KaXhmˆ)íëï ƒñ5ÅÕn !«eí} «SP>Á}HïZ{: ñÁ6<’Êm‡Œ¦rsg£šÛ^-\Fû @CÚK+Ⱦšµsóê™ nMCóê)h^= Í«'póê4n^}-7¯¾’›W'qóên^Ý_7¯^¥Ûg„ÛWã=5ƒ5¥vy|¢=tÁÄð ·z| ©Š$¸ ¨„ßÛ=±j²neÖŘKtÑŸØwkâ.\ïÙg »Z`Wzh£t’è§Énu´®?{§YéR[i‚VòÛ‹w&MúßdxÖþtóŸ^þ/Í»'õ—¸{òrÃ{ú†7Á`xjÃ[@Ç®tï!–nžŒ.neÅ­xìbzÚ÷1=ý&ïM&Óû°/ÓÓ 6›Üú}l!¤ømí¼£Ú]ú4ß}ºîgÚn‚ã:õPŽG1ŒIï)MÞ·?µ»²›Xß!Ö—Þ³ú+v9ß7¶´ÓÕñ#XmT7²îQ»‘éG¦÷^Ÿ9û+ày¥œç š.y×åÁŸ_ê®Ëc}yÞ$Ü[Я5†™º îò¹no˜àd~4 T4'ƒ¬W^É÷ñÒI )KÀ…ó¼÷1ãæË{czâyÖžt»«,s|UÜlF£@{bùL,°§Áѕ۵s÷ð°¨íÁÏQµÜ.V£ ›u'žJ{•ÝÊ3·‰û |dº•(ÔƒöXj¡=µGÍuXùÉÅvœ„ÖÈÝ´ß4Úծ춢™F–€ *˜)CÁK–¥QŒ~É-Á0dDBoÍ ~’Nn+²ÊÑX+-Ä uǨr+£‰vo¹šõiÄj:š]…Ed‡š=Šï·DØøJzA«øà—¤GgÒý¦BM¢c0FaÁèÏN.ÐLC™'ý´|VÐb“[`tTW«µ ÅÚdsµx“¢¯,>”ºÓZÜ‚—õm<’Öwä~¡æ6cîÆz¹Y-k¶•µ1àÑq¹ÀVÁ€·¨r›õqlE“ÛðxÈA¹«­ à‚.€,¨ì^.²BÃT§>ØNþŠûc§ýx.Øø•Þ5SÌt5Ï÷£4Œî^ð1pB-hÆi…®«Õ²6aýï“™€_…}Ø®6ï¸D è$š²ˆ–Õ‘ïâÍ(¶‹—qÖr‹ö¯Ÿ)(] dá ,Wk4¯ÄQuþ±äÿ{Xþß÷¢<Žè. ¡[-kñ:¢YKO¥+–“…ÍÈ—23"Q=} ŸË#_Âg²…·6õ9VtŸ3ާŸÃã5Öò݇¼ÏåD?XÑ4GuÅc¬6—¦'ŠUµV~RþK¢ÁvÏ<ï C-nÒY\§K£ÅŽl¯‘,"ŒsóÖ°s¾V(-nÉmEgÉoÍ{GD·:¹lCd~qÃ]¤ýÀèÃX,’6xvñÛÄзbB³HÝz}fìU šÐÑ›‘Š€Lf¤ía‡pþfAßš2r1a“tM/9¡6q0ßÑï×á{cL°ÍÔO­'þÓÉÖ ªËØ>½ÂÐÔOcÎ{sìÀ¼€;³Oá®\³âò—[æjÓK¡i{2rÛÍH«-| //Åмʛ/豺Z&C^ù+ ò'ÅÕâ |C×B¥1hi)¼‹ì qj„´tÉW Ø…èmö˸ø]´Ø? io} .ðÓ÷ÚQç ]ªÑ®Ž ûÿèÀÆä£>g,üp%üŽqíFÃõL?‚AÝ•_ÐðûÂó—jËÿéùK©ÀÏ_N6]pþR –|ÿùËÊñüÅ­EAŸû†Âf‡Ô~©³—yOšg/Ëþó—ý¶ Ï^Þ·õ9{Yñyß³—m(`häYüß:{ٻ—Ç.<{©¤³—Á¢C Oí"´º/ìì%OÍï@eûèøeÎy}¼)F µqJëO³ OñômâG!ÿÑÉÆ¶ëšOO˜Ä!"¡éa1&¶oi™iú“Öý3]õTÇ#©ÃhC#ŽåÀKtâ1~]kÄ¿q‡ˆW`ÖF[ŒîA£',"1v)Rˉèì4¯1´!ÿçí ðañ}ˆ"éúÉìÿ¤‹ %Aa¥_zÛ27‡wú0Œç·VÏw„ „¤¡|š[òFdŒ½$ÿŒ´éwÁ´x•ú±mtuÒ!ÚÍÂh}iG¹·“¸ ЧXMñ~&7I7 Y&h1f°G)xXÅ„\~WB©ð›ü*òtÈ“ÐSÙ&[U­–áÇg‘öºñ1èHh‹=côþDéýi³OÁ6ð/o#–V„CÊÎh¿…Ëœk¬“E/k"f‰žHz²ÁSïwø$Ì=§è)2Kô|MOQKDÏç(0ÕF•€X <ËÿÉwúed+dŸ=ñ;T‘þ¢¯·þß…_àðq.ì>û”5hKA}Î z…Û&7à…ôÇø>†~¡0Wdò fI¶X?yøÀÈÏ´Ž¥†8#-öþ…%®ç°3©;ÝyZçR²_pZRç{ŸÂ‡¹Ú—TĹÜVTHß¹ïs'z?$ ÕBíÍ¥¤g|UÓ'žî­]Š—f ù´Zå|Pªë¬G¤WX~fZÃèºëH«“ž{ü©AÇyjݬž}&V¡Žú46 ´1|¯ìnºrtø»º®D†)ês˜3ýŒ|Ät“‚±8kÙÂsJ;xÇä0˜ß…ïó‹´'¶Ö.K¤R“‘áq1ŠŠË!Ó‚ÅÆ^Xùr€ Ë™ËâÏÜZ6&KÓ4^ù˜¦ŽG¦Ç^G +=Ã0IJ๘+´A¢“ÀIþL«Ò6}¡}^_x«Ø0ó¸8Œ´Òtæ„¿tñ˜°‚ùS7§u£/"vO=‡Ý#)]¯”b5á%6Ñó\(yÓ{î&pÞîÆrÛˆÀoï³W8IGþjcC?]}p¿î3ÝÁ œ|mo2ü”CSWx§t¡Œo6äï{xÞYºÿºÍºùVm¡[|}‘˜ós¬_êíè\ô®y…•”“ÜÚ&ø°€“¿P!ùvø IkãcY -ˆK£Œe°ÆËà8ÀåíP•A/5á(•â]ƒm/Ö­9g@Å6ðOºøÎÛi„¤¾6‹Û„õ¯üncÖÇcPýî$G• T BF°3‚ºK‡!ŸèÖžÅÜ}úûuèò6¡j æ0¡5 òŸ:ñíTãšH8 à«/€ï~÷hm˜u.XôoÁ8§ØÙnêS8˜­&¢ÃÇÝ}ð‚”uè°îèkE{ ¥ h D0±*šß“¬€ê–dJyF¼ ÞÊÏ»Ã&÷å<­³†ÝJ؉û^!ZÃ&ï®ÊIØktq%zŸé{œ÷.üAÿ:?´ÇÙïR~)ð<‡ö8ÛÌ=Î6jOAÛ;¹×ñÔ.` ï\°Çù[¬!äb§j³•µ]ÂÅÎT×,ò.¶ê›÷- ¨óâNæž…R–wm—ºM¡Ot)_FHÙ¸yºtÎ僩g@µ‡vJ¯ªúû˜§WÅzpó[[ZOu|¶;t|ÃÎŒjªú¾À­ÌmÁFÿÂÙµÜ7ïR»–µÈ›dÇG£Œ»º¸Ý]ö¦¹_ ÚÈ}÷‡Þ‰¤oÔŸ$®?M0=q)ïìè\ ‹"¬‡N#}b‘6’€ÆýðÀùÙ ¥Y9ÃôÇήž„ìxuõd§nËò;®¦<\cêzŸø&zš»ÖcD¿Ò¤[§FL‡\Ü´¼o0¹ê€Ü­ø#XÇ&çä̪ÕäríÉýÚ9à9µO4:6EL©ª­¿s_íŠhWlÑ%‡°hÓkäÖ«6¿HBõó½o“-,y„¼’ۧð¸ÖBg>,Áó<·6»ö>½i@G^Â’  a><ÇÒ¬’1lþÏâìe¢*¼°ô'qD¨8]¡òß™•kkÐ?"s5ò˜uiµµn:ËÝWïÒ,ì0ÚÈÚ»xÎüþ‡ûöí«a»ÓtžÙôàÒ9qöÙÕQlwç׬`·š»Ûç·1×.ùÝeØ—ÞXÁó‚r#† ¿-T œPYzÁ>æ[5Âë:›ŠVÛŠ;3¯ÄÌ…ùÚµ„"ø‚Þ¬iÛÐY?Õ´¨¡X8Ë#ó8è×è¿ÑoUvºÓjA}9oã×ÃK³X§ïÛˆMÖMC'øHÓ'4É.ó-Þn1ß®ƒ·Tóm¼]>Gþ»ò• Xì3=Òm³åoéˆèà¢Å©ûÙî%æ8«Å¸Q¥ôBóoQ°t,ûÂ÷ 4?e2E„4Õ|ºÕ|k>]=[þDùÒ& Á”™Ð´¦3@SfÖGXäîE‹YÒöþÔîÔfÊþÀ7æx£ÇDÙÁÒRO¥ïgÇVŽVz¢K‡°Ã‡•ã¶Ô½çμÌöûüçμ¢œ°±ýønÚTY?…ÌÞ‰CK¯bÝ”{Îìïμ|ŽíW¾µ)ߨ Øwg^9§4J½¥çÌfûñ{`{ïv7ë„Îc¼¢sJo,Ôäó·ÇøØ^ßqg àcyaÝœù#ž¶Eœùt•>óGÝP÷ ªtE£Wè ßÍ‹ìF`}:ð-6æƒwŽŠÝ磳ˆ®TG²ÏxÉý?T²‘—äÿ©SSìê¼Gõ§€ Îelï«6)u‚S¬z>^’ðåiýEÄ_¼[I걿<þ|Ú~ëÇ«îLû¸òc|›&/Ps„ЇœÐ‡IjNX‰1¡#ÕGèƒ3ô!R©užVjþ_ÕI̬ú§Ô/³Óò‚E²f.ÙIx€Y¶ÜŠ ÷ßt_"%™'“ì<µŽ§¡Ø¶qÛvgX¼ÛÙ–>ñn[Šw C’VkD´TÇ/íîoïÜïéð®IJQ³„ô†Õ ©]^)ÑŽv“ZùSV #µ@šÎ¾ p£ÍÞ¢˜¹ÚˆwM3yi['p¡Ã»ÎeŠ´¿öàxÇBÉÁ†³P’aØZàÖNñ(B¶evOGU«f[Ãà P@û²½+{ÀÖµr26[o(líCYÖ[Ð>×›Û–_¼E»f7<*ýeÝ'H¢¥Ü0h ºq¿d>üMß»a¹Ö‘Þ¸>&}wY$¿áxói”ÎV%û¾Šô>•ùØÌQê '›™âVW¥Œ–Û ‹´ç^µêÜ?kÆ mÇEÐÔmjÒŽ>§–v¯Z{.ð¬k†ÇûQoÿÖ\ž¯q£c× £~91í(¨ñ”“»ñô_©ë:îøÊº{`±Ü–ŒM¢o‘PR&&aŒÜ@öen8¢¹NZ­ÿç$W÷ñUM—KHÖ®°]„ÿŸá§Í÷/ösM¦|‹ 9®úXþfÂ5@®Æ!djÃâ« ÏÃß ê·aý†¥-EéAï#ì3)&=/I¬úJƒÁ¿A¯ÄGÖCõÞø wuÐëø Q1Ö.V/‚T_W„×á|w„'ÏÚ;ì ïü_o$ËmJ=“ZÜäë‰N=»ëÏG,ˆüWÐÿœwÜã^Çï8´)¶¤~áû*÷¦J—$P”2ááA…"¤!èüzE¼m…“­Hdk’”])4²i{:‰ôå«ÞÁ¨k¬‹|¦³×s@v¾Sc ¤8-Þøë^oÒ¯ ©eê »øÖ~ëÁý_.c¹Ä·ÔòeqèþÀ›Ä¼Â3Þ$ŸïˈÔ|_F[¿ð.ŒaMϰܖ·qÛ¸³{Ê2¥ì@^½ì]mó. nÃnC§÷³#¾ž¾îÈÔýˆš\ÍëxÌw¡¾$›OSMRô§e ‘cè®5F³Œ‡ÆC=4Dæ™55Ÿæ™OãÌ'äÓAÚ˜`>Ýa~¨?¥xL;𑀕ˆOîì<†½HçeüûéxêxìTZ­ÎŒŽ±ñÈŽ@S£–©ãÖT~…&ZËp!]MV”}uÌÁË>-V¹¢áB€¼®ÓyÞ²ö"¯üMaI+vEëIÇ~Ä# ÄG#¡DÐd_F+ü= ÕÜÓ0_o–XùN.f®öeJ×­âC»£ ·v{'N÷Ž{ßëøÛ2Õõ |¢ŽÇvŇ^ ïÞ‰Ÿ+ÿÌ÷u¤þ^A·Ô¿„™Ò‚æÞÌ]QÔåG4RSÑ1Xu ¤mŠwøÔÁÐç)fŸ«s?“lYJк:¦€«êŒ´X¦!º·À$’‡+Ü8Záh#ô¯üŽÆ)$juîÇsõqb!bíÄ>¾bÕ£À”6Ùª]Ÿ"¾ÀžÈ°EVÖcÍ€ä1Ln«–Øã3¤[Í]Ú)6êÈß¿æcG FàØåò±Ë »¸œ$XƒøDÞ .fÀÒJ{(Ëûy ´¹níõ7P¯Ó”] ù4¥YƦ9ĪrèȲI÷ZŇ$Üïß Àê8 9ÆA< ¨%ÇÄ$ûÄ1¢Ç àù:Xf2ÉIÐtÐõ…*7Ájõ…µ!;‰LZÙ6 Ê$+š,Œ…T•ˆì5÷t>OÁ7suâÙ~‹I<‰DÓ–¼`°|khðM·Æ›¼è.¨©a2Õ¥48æBmEJ}?øT¨øìù%í4¾Ÿ·òÃÀFQдLbG|TEöbȪ.‡øP/hÜ’¿é¡äHñ¡VzzÀ%>t¸i´úþ]ИèÒ@ÃZqƒÛ©>`¢aS,Ìiÿa@3GÇ >&; !‹{ ÍV:Ã'.g°«ûñï…ð½PÛrš-ÎøM¶‰×-«vAýGs3v¾”G,;]„Wм®oòt¢ÖÆD tÏÅKñÑuVäŠUhç€Ì$ÒÙßbyi^_Öu„SöÁ/ÃX׳¶i¸c/L("ð}œXW ó­Ò ¢ð¿áºy¥A=0g«Ëиè)ïÅ«,7ñÕ ­•Áñ¤\Œs ˆÂE 'ºO%†åŸAeHÖ¸m®Ìwêë±ÿhN ¯±É7#éKœv5?¥’ ±ÁDü|¾f|$þíuauÖ%Ö„Á*õ`õˆï_(°·rE–Õh÷n:úsÀG¨À‡À£Y¯)nÝëÔ¹ùÍhË’å·™…÷hƉ‹z´µÛìïÏsèÔ¹²"ßjñÿ©Az7çU‘ðàÚ…6Y´¶>Q"zÅáø_ƒÆ–<Òóáã8­Ãy ‡Ü.“ž <ŽíBÛ=Z—|þVMj@ùkùüiÕzîß/Y~å_(_¿‹Â 9~6eÛù›_£]̆Hw.oÖF“])š4àGJ¬ú5&ºì›«ŽJW« ídQRfï bU6™4)÷´«Ê´ ‡vL!toÉø®Ý»†œ¼¶Äâ ÐÖ©(Ty_ ¢àézu…ÂQœcÇÒjõ™É>è<¨æ¾ê•b)_K=ë]òTP~Mùº½H+ýg0Xo¹Á ífæi/Â+âM,¦Ó=Ñja ‹=Áùb*Ë#Š´ûfµ-·.ã-Ø5W{îgÄ@XñGb㭪ܶÌ÷Ý÷–ù>²û>râ“_Fvžð¼WzÎ`1ù ¾æjª«y™oݷlj?Ë|»í¾ÝNüaq+p”\/z…ÔÜ7ذxõÞa·)_žS Z–ùöÚ}{øãu´å:òYñ_XBNºgþ@8󽄃±H¬šŒpòòã^  !ê¥{PBq½á·oƆ¼BK0­à//­¡„~jÃsà¥jx‘ú«qXµ7~7FìàMºIMÀ ‹¼ã+\n ŽÇ¦´ŠŸÒ·ô&Ñó¡€ÃD¡1yÓéÅÛD%!¡Ž© €¼MÜ* Nß-*ÏCìô/˜¼m¥ß›D¥mÒµ¬Îw"–€µãÞFñ6õÆ`î¶p”Þ¨œG'h¹fÆ"Õñ›µa#Åâ?šœÁÇÀ|ýUå—ˆr-ó'„¿ ×Ë¢½ª¥ÕfD"Úõ¾‰ÊfêØ{}:öœíû:6a_M`lSs߃’a´ÆŸö©gÊ÷Öc%?“Ð7^Õ{á=šwFÈÎ@Âȉ¢É¡1ì®Ó]ÛVÝbÔ("¼~±êOèÂõ€‰3ñÉ©D©ò‹“ÓOrVîádù* ¡'lÖOý4J§Ÿ)é{YÁ¶•­fcÏcc“ŒÆ\ÐØmfc zc{£Õâç'£·Æ> ¥ŽòÆÎD[ o+xßV~U”ÔžºÙjɘ´"4&‹Å·Z ÇšO›hÏëO¬x›4¨V3I>¾ÿfcë‚:ñ,ƒ²ûÍV¢6O­Ü¨£Ä£Üç³÷<ºË5!´a¦º^ÖÖÂn¦¶kåÛÔIDs·°ñôi6~=Š  þV\Jýå,œ_„5,'mOt ÂT£×ëO0¡éêx‚¿ á¿…à¯Xß(XäLub#mc±IXVAœ#`Ô ÓžòNxuu=©AX;ɺƒ6ÉJ£øf0í•G…öôïrš;Ç#]³Ü6µÌÏì#µ Í›ÛÞùi¾õôÜ’d×ü ù†±uy@¤+¶®’F $’ߌ6=Qù—|'-í¨¶êK܃ÁàVÄ´q ¨þ’O&dlUÞ«ÔÉ,–8’wbã¦"¡:>¶bC´E¾†Ü ÂtƒÌ¢@4}†¢x>=F#µ Ïf‰[aQâM¹´•ÒÁLĪYN—0gý´H gFj±³~Š`á96å¶UωcCùšë³VŒˆÊYý¼“R€qb;ZÛ_h±àI[€±ðÈ^ŒïO ;Cwe[­;Ðp¼Z¾¦]/«SF±Ü¿€„Í€×´$ '¥ì/ñ‘¨«@;½÷/µÌɶ£•ë¦ â/LÛSÑ{UƒëEš®‡iOÖUMož7Îó[üRF´Í}5í€Òm-½M-x™®„»^®NÌ„Fƒ®WƒÜnöª7¶jOõòïÔ²—AÓ‰#qTáåz ^ ùë…Þ¤BÃÅ•ž±ÕMÒøÉLAÛÞŲƒƒAV#)=Kd»¸£‰¿ð‰;º”oÇ*Á˜Õ3p„³²ìá}ûö9ÄG;¯ ½T½Õœ‡½ÂcâŽ^¯4­‘ÉëMÓßM‰âŽ3Ê7c•ó1¥ÛÅ;•.—XUs%êòs·®D¼—¬5\çPxᦱUtR÷ݨ9£ODT‹ÛKfVw Ì5ø(9ç÷è`"¼þ]r­CëUþŸN †BØ•áªB4 n—‹¨Ñ´9°;¨DQöI¾}ð}E‘ʾýmí¬~!ZjÚ'pÊ€» žÌÍÙy@¶2ó0(êø˜‹¾–´Ç˪+HG„ª2÷~]U–XêÁ»É,ÙûO]UûâXT–ý™W#B¡rñQÿ°•{C;¡•w ´}Ð.,ê£\«Có9šWî hÍmìc8w±Ùy‚VÍÒBaS÷¡þj2Ÿ;öû[ïGØâ¶WÄÜŽ%84ú;=úŸ'h ÉòÕV”¨nÀt‚\íD%]î³xÌõ=z¿ßeX2úRö«SW …`„²dê:îGÂÄ×Ä”z¢žÒ3©añ¶xÜ•fwÖ$|ÌŽv5ìFl!2:¶o ½jHÎ8rˆ½1áŸ!8s.€3¿üÜ3¹e¨k Š ùzXÓØÖ¾/|€1¥õà— ýùxVM¾?j°Q^çÀìLòisî¤Z×(¦i ~"¯¤üÉ„V„TÅ€Tw¤"Ð °Þ¨'jYw@Kƒ³6¡Q×Ò$úgí }Ö>=Koê\l¡Š0 ºñAð o}R÷bŸî¿RŸf?ß«7ÂÙŽä* B¢@¿Í{E¿’<@?Ê$KìÆPôC¹Â7"Ø‘¢½Ø‘É<LévêÈ?ú äû‡èZ"ú´Ö·A¹[ì‚\ÑL1šýƒxœ×~ÇŠ¢ê[Ô»1µ¯ïUÝ@Ôé]?Q«? BTK©çêÿ)¢Î ªða”MˆºúÒGÔ÷ŽþDþ4Q-¥õW÷BÔLBÔlšÚì+!êOB5ó? j¶Q±'êÉK¡ˆZþÉÿ+DMý$QCûDˆÒ&O»"¢ví AÔi?Qëöüï•í BTW43Qqä' ª³øY`þÏuÐÈá¤4ŒFÏgE—Ö¡Ys<9GÚô9ìä…ņÊöÖi£ê:#1ÀÔå‰ÏÔ}Îö&´×}?*¤jQã.ìP“\ÜZ§ŒbGXqËxÂÞ~„Ì8Ñ€S˪h?/§%rGEYŸ­h×Ù~ŠU¾AüÿÖ}áÞÏܯ!ßçø„g=ÃÖJñІˆñ€Åã%W.ZÖà©MEÂažñ¤¼8êò^Œ¦´~dýô÷âš÷X® Ç“’óî6\žO ³‚ùÑ2* Þ~ 4„×…<áÐæÒ&¤‘§û–‡¡ðe]ãY ò‡$Yá_g­×d½Mn§5X“øÈÜ1´&¿ÄmÉŒ«ë15°ü rG¢+¸ðêÂçÂÆcö[|8Xkkõî€d‘Ès+®¸°>U `Er_VÇ_ ][7íbEN¢%}k }ßÒòzÊ'WØWõªÊ‡Þ¹°0¾ØX#¨+Ê:ŸÒ•˜`éá»Äª’¶‡¬ŠiÔªæ¨ÀÁZwH ù(M е6}ºÏKÎUtˆóIûû3ÿðoJ8™´ ¦ÕZ¸Iz®îÎÑ—XÖ&uî O³*œZu e7ÿ Nk D@´Hµ³M¬I1$îx"áx;¡[Wú³v¡‘ã(ñ+Ьq9  K,!Êûç}°?@”ô¢„zRX†D®Œ[áî8š“Ú€ŠDx¼ˆÕûˆ0{E¡NÔB¸‚°¨{¥]‘;ÅyñÚ€üÙ‹û±äÁÞ½äó„äóC€H'Ÿñ?N>Ý‹|>ìAþùÔ¨a­:žÐe³’}0W¶ú)ádºþ$é¯êÒ‡—mb¢‡y)³‘ä*Û†‰™N¤ÉlDõך8VSKڊ˸ôI ŠsGŸ4ìEûèš18Å„šÕcˆK£‰ÞwÖϥ˗¾QLö¼Àd9€ÌåÓãĬ3w-íjÊP9+æžœÂTÓ×cž×€k{~l¤¹ËÓöT×%}þžûPˆ^òA„s_ûïÖYûã[Œ_÷"üû2"qÙÜ£¹¯ís?ÈÜ㧺}ÈkpDq-ÄAeU˜_}Å&xú`¬o,¹g±ºh[°ÍEa¡bû§aS‚ÃHÁ~³‡¹S4t[‰yì:'âÄg½Lá­2¾±šÉ4÷Ÿ}ï[äs¹?¹k×_/f/>jÕøM €¦b8ÿÅ›žk¶Í}y&òŽtŠèÚÃP«\~Gì!»¦|O{]+y²”œ7}˜YÜóݼ#@®åÕ”iË<‚›·– ä…›ñŒ¾®Ø¥žû.t9ž¯Ëqõ˜Òš’ Þš)yEï }F#b³¯+ŽÍ*NÃa éʾELäão“³+œ>¹®?/ŽæKMê³í´VQæmOR·69;ÂYÆ“ëL¼ð uUP®ïE®÷Ä,9µpVŒÕÁè-1ªYÁÕtn]Ð éýño…ÈNvD;×›úKÏ×óL“´åö¢€s%=”˜¤€â‰Êš’†oýÚˆ„ìßHio€ƒÑÚG]¯ß:î !Üþj;J‰¹Ñε^´å,JïϾû!i.,$ÚZhUîgUhõaŸä£Ë(RÄo¬Í ¼Òô£t™»->jaÖ„²âpK(j4Õé‚n@ªøgÁxJ,¶9~tÅ~¼,±ÿEtêÑ:ìTa´ó!ìÔvÝѱɇR§ª‚;uŒÕ‰@ã]|Ž#Ñ™U•€èµÓ¨?ëEtÕé:—1~žwEy}q¼> íjQRíÜ €.@ 5‚S{‡#è8©o"Ôk~i}ò(³ŸýXðSp…<Ôå[!_· ,»ÉÙÎrŸ\×w1êCýíéXâN‰w°DÖ&ç¥p–õäºT\ÓcÇNqÖF aûƒÇãïüc»—Wá‹á«|™Dr|«ë ¯ëÅÜ›á9á€:$¨wEíy!µÿÕµ cœõ}¶ŠJuùÞå”v¤N#[î½~ã5(‘pž¯M8éôD‰Rß˱·cËÚ(}7@•$t©Ÿ´_)v‡¼¢Ÿöë}¸< & à#}sýÞºPS:}#ìõai,îÿ?Âiÿ4*ØÑÀÏ=rz«EÞ¯¨Þñ¢ßy©ŸÐÉ;× ¢ícti=î•Ôžs~IÂûu°Ìmzõ B<4EûÛ¼ ^ý—ßöæ‹+’žûjóŒ×Ð;÷féqîÚ5ý¸ÙMêô¬×xñkH°Q^øžÁýeОJô £Ó|dòiÒ„ÎT}¬(hcr{€îTìîEwÜ$sœ¦9Å¿(Ýù7&w9QîÆCO®ÈÞ?U°‰à¨¿<J?ž¬Ñ%½ýx;„~<¼% Ç/lâ–dn8# œ+P´OÕûzIš15—Iš—mIN“œñ“ºK¬äët1³Ž„Ë×ФZ]Üã× Ý¨þˆnÈÏh’£yêC¿nHz7;†/þÓ•B¡üe]€¿ï¿%’ó×güræS!Ìå£À$ÿcg¯I~+¤gîó¡_!½»&†Û?ˆgÕèA˜ç–pG ð”€ì‰xp胀ì9žW®ùqåOV i~dõ«3¡‚gÅ— ž½ð@PÊ_…h~^ æ# ø§à×üHïĺ§X@«ÁNŒã^ŠžÁ„H«öß©ÜÖ šÞÿiŠžß1Ž(÷”[eÍQâSí<â(ö‰ŸY4!¦¥ø™Å'~ÕNý×W"‰ï#N@ð<'« ý$Ñ×e$‰£ÞGš…„ó´$jz‘DÉõ‹¯ƒ¥¯þDôÍêÅo/Ó&,Ï]ϳ¢ù³@@Ï·%ªtj¨Ü K¬7ƒêØ'ê¸ðîï£ùœhs£™ŒÞ_…¢Š§Å0™|ãÌe2ØN¨+­[&‡nô +ø‰*§ôcŸâE+-<¡ÝÏyÎò*²×é‰`5•X*‹D‚]íäp‡.L%pz~j^Äiïqïw ö}Á/ôE\šJ x5þ-ýî·DëX#!zê#º–¤%b­ÎÚˆ5fªanjàfØëì¸×žÚDþy*Æ¿†Cœ Ôõ„?•pH^bP×·†¬10ØÃ?@€uPۻ䴻á¯:7(ó #@ˆ˜ X…¹Ô‰-NÖÂkh˜=¿‰¢¡+I¬ó9®õ]J:ôu ë¸l0¸›Âo2Ð8ì ‡m8 P0aŸ³.‚ÉØõ‡ž¡Œ:ålý2H£+Ðíï†*ÐþOè‹Ú—Å$ßEòø­_üwúšúŸ @?°%T>°—Ýëóš»H„½K»‚ý[Böï?NC t"£Øõ¹/BÉè[þ_)еêPúÀ^ ôÞø|ê÷V ¿_BWçÿ8]í­@/©þß)Ð3«ýtÕ+"HC¨=nûOS Y*<¥ ¾ GÁºÁBã›®¢Å–È7éT°À.ö &µ£ó2Zi>L+iK»¿ó²-í×ÍÁÕ™ˆ¢Z¼úsA ³|xX.¯0…'ýÍgN᯿ŠNìãt¤~©6 lnˆê7ƒoV8E"÷„—ÄÃp^z—^¦‰?ÕèãG¾ƒÄlÜyìýÎ7vŸË…ït³“Ðå÷ÐSãù¿Ú”Q¢53ˆ-²£•?Á꘣béxÑ“íôíØ^ý<Â:å‰Ü÷5/~"á, ”ØìdûìáíMZV…³6‘W¸÷—Eé” øL©÷ ˆ#uê¨;GÁx 0óOøâÍA«ÄÓ… D_õœ8›FǨ‚bGV4¶P}|ÔL^hP/| Ÿ'ÄtÝv’&ft–>÷1ê'AÙZ˶œô±lÖ"Ëþã[ÈŒ‘eïDÞˆ¦âWØÅÜ÷.IÜÅ÷MÆìo{ïbâ{4 ÁMìAýâRÃüN†RQÿù–Pt“þÓ@›—þÂM«Å:×hŽW¢ß«û"|w4k·*ûCDS êÖ‚äûqôØÀ-ºëÅ2XJÏ02Ir¢…´Žìã rS~»ß#—‡Îÿ•Ï2Yë¤M(þÀ¯k#ü:“ÇÚä€Å3­O"öȹ=ŽÙâÐ-ð¹÷a²î7°•ñEayÊi|Ë4°ÝcsO;·G8¿ˆHØ'?ÁVŽÁÔ?.4„-Y**ÎW–£< ïZF+F³ß㬟èÌ8>ÑZÜ*g¥‡—  ôîÁÓQɬy7ñYfžc­[7 sß‹ó?+Ö: f‘F>7Ì!Ð)ó*¤¢XÐ#Û…Âfm‚Ò#‹O¥¸’Ép§(V©^á"bÛ—H® \ΞnÈIÎÎÿÓn‰Éëk‚…¤†÷àõ%ÿš49;~…~$èî3V›yùk8)ƒ@˜îwY<&8^C'qEn¬å«cÜmŽßñg^£›óž1äò¹p9 åÊ5Ù ‹»v‰}z’ÆЯWì¶¢0Û %e!l¡SûÕ¹À¸ê d}yq+ÝÆ [|,Fo®5—ÑBŽ’Ú¼*øj‹÷èø‡òM ]ß_`ßÕMýe‡!k Ó‡I ò¥bufA¿­ž E#Ü"Мû»>€B:øzïã‹:8«ÿÝÊhøŧGãBµ)ç ËBñ1/1ƒ°’’t¬‚¯7óèçÙá^W%“‹O¯º*_s´ÌSnÙ"¼×:ú°âÓ¬PIwvýj•§×¡Ég±¢Ù1¢7w´†ñ EE¹„YÌCÿ˜V÷çlFN|{˜£?NŸ´×üU¿ŠÌ¨.âh$Å6%—±øÏSÑmËûF¯¾?ô*9¤ôþ•µ%ó~ðÇD=ÏÃq¦™6ÏôhB†ñÚa¶¦›1<ò5I’øØ÷ћ߲w5m†\`d(X¸êŒßq@¬r|eÐüža­¾>ÿvHŸ`/ølãèÎ&Á“*¢¨¦RU4(tLâé8À?ãéôÅkSªË1È——)[ù¼.ô*ôü4ËÂX˜íøfö@gêbĈ€¡4̱óç×;ö³Û‚mŽ[¯A«_=Ü}ŒuìÀ®ã½HÆðò¾Ù~Lùûd$²Þ÷nobQD8&úðïÿßõá¾ÿÔ‡7#ƒûðåm?Ú‡ ô¯pNÙ„× £m|~¼…ÏŽ7Ö›¶FRC‹ôå0C‚å <Ø÷A¶hÈflf_¶ÆxåH-Ðó_…ùõùNjkÏ0§B>›=‚;,|(¶Cqki–}#©yøœ^—t¿j€FÃo B#å< ©^üÊ…û²¥?Àã}н5PüŒ¿¿×è ¿OèÂ/ˆ=} ÚȦ &ì㻦@' ¤>þÈøE„Œ_Õj5]6~ñ[T÷áT÷˜cHýÇüÊ‘¨Ëê7êïŠ Ô¿:Pÿ´Ñ¡C1o@ÀùüY#ð½Øì@Œ{çÖσÇ]Úø/”ÚÖôc­ÎqÂ;ä¢I‚޵x"×èèì,6›%×vßÓ¦Íâi ôÞëçùFv ®kÛÇr›ø #Ï7±I‡’vömévµ™ÇijÌqœÏ0ó|‹/Ñ>Tù~"úüš•d_­¡…«–±ÜƒËøÜp¾4zË:„6;Õ(9÷ tdëmÔò]-ºñÈA¿^˜èÇõF¢åz¯E ï^ÜA«„B+¹Q! qK(Ä’{¦ÀÓËøÒp>,üšeµÊ¹§ß‹¤]­>nOѾUr?Kvj§—±Û0fK†²Œç~Í>^Æòá­§¸´–¹f¶ÔÂVG£´êÕî õðv|x/ðAýy—ó"­TŠþ]Œnê[~žâý! F9µ({¤SèøZY‰¡Eò@Sv‘ñ‡§H‘Z½—óÛ~¡¸öu?BêécBÓúé¸È3Lùy΃Íç9ï ¢¯ö«”s·ø¾Ñäë|”Ï1JïÞ±Œ¢Õ3ô™5þŸgb³bøœhþ™ÍïY2³ÅJï®ïÇób˜-‘= /öP_ËšÈçıY“y^<_?†ÙRØC©|Î8ž—èI'Á]wc­ŒÁV¦1[&Ï›Èl³=éÙ"}>þÀP¼çî÷P’a'ÏÿÕÛ"úD=ÖPh†ñ„Þ UâC{ƒ‘Cê¥w‡°A .ÇÌr ¤wm&–ÐÛú±×càg ËžØ,,'¶™,g·Å°œ‰ÜËr&s[ËIå¶x–3ÛÆx¦ ø§Škˆ‚y¦Æ‹Ÿ1â'Qü¤Ðn-'“ÛÆ±œÙ)'›Û&²œùЯŚ?ö°>?ÅzW†) ’.Ÿ˜ ~_j¤Ëöl‘¯^Ì—°s}.#P$7òP\9àz‰†i‚ÅÁfEÃæ„­Œáù±|n_³†©³â`ÛÇóa6Çé“ Ö$Ÿ1Žç'úÉÇõ|õd>w"•Hd+'ê “Ï˜ÌóSütÄ¢ü=ÑGGÔ;iw§ò¥ÓØÌÉla _ÉçÎf+RÙÌi|i6_=Ÿ-Ìd+f{ÒÄd§ù&{°¯l›iæiæ¤ýl_ÒÙ¤¦¾uŽgÕxÍ·oq{ÄüoñÎ&,5{?>ô‚ð%qÆ-º—œG¯5f=_pýþ¸`´£GÎSžœíuʨ… ®õ=ê=YQñâq ¸¹°‡üʹƒ î Ðóh>â.o,EµÊµ@ËÅ&–ÑÂr[ó`;Ï)›oØaóše4³.ؼ“Ý D«ïÆØýœ;¢}ë,·ÙyûõŽïÐaDV3î‰ÄêéfsìÞ"%šÑã­Ì¸9#¼[)Ë0“· ªR½ûÓÄͬÈô¨N¶.D‰ˆÑ!eý­Oýðñ³E¡4äaÊÊF‹CØè]z-˜‡VWwiË8MjhH82Ó<×¼uS]¾¯³Ö§œ;,~½^^lõ~ 46÷¦Ñ=,ÁäÛãcB˜öK¨%:T»#uÚ§4>ÛÖ^²%Ê0i[º£n(Á¿‡‘5îª/ÙZ‚IŽó¾­æ7¹Ešò Òãà²zE†·²'±QŸÿÛ\“- ¶I ÝÈ"‹rë20ÝÇ $×̋Έaõ™˜Í,®)b¦A˜©ÁÝV wÐtV4Ú:·Ð>fj¹cò7òÕdÁšæšX¾9°…ûãß>ÓÖ¾öBWñ)ðΆ³YFOÄd|‘BhI#¦áû¶Äè铊“ðLñI³ñý¶Úè‰ÊÄÇ)ø! ñ¢FägÈá§ÿ­²n¦-±)øY ¼>>Ì{*XŸÂ‡º~Êkå ß–¿0uÈÛ· ±åRX[hšÞ[*ë¤-û–¿ ‰l臸¹~²,QŽ; aË·b‘õTdQPtºstù,2b3YDYôªõìòFÌ2éYÌ2™², ®¥Ž@4Ð<ì †¾¹ìc“Ži«øš® ¾ ¸d—aéªo‹Â–7#$Æ6‚d‰äŠÞ—^ ç¥v m„úy"_Ðo/oż;“¨=û]§Ä’0(K˜\ØjËSVÜKE¦ô`J½´ñ=Â…Vë!Éõ/dΚaõÀòpW­Ý”r“äÆm¯~fN\0áì/û¶”Üfï‹®šä†U/ñ☲¾pèA…O!ø4ûPß6a∗1ñ˜'³F†‡‡Ù¯KÚÏ'í@÷…çVgMI»X[é䜯ìwÛ‡¤9kãœuqÖs+¾õÇ[×?†MÙ‰¡c[ôª¨ù]nHƒÎ^¶@=¦ËEy6¶‡¡'‰¤6¯ŸU8•gGôj‹ïž cÅÓŒ„!Îí&R¾žt^’ìF¡Ý…ݹ°8’” /µ’ €f]&öÇ¢Øï|Bè½ïOXhtî2xߢßpï«VÀ¯Ñûú5yŸÆœÏ¢ŒÿýÒXæx¢AêÕy¥ ŸÊžÈ'ü>0*àéI¼N·ô·â+àüçC±$ûʽ?ÏfÄT(3–`Šü$µYëí¶ ×Ø’÷¸ò¤H^?ÖzÇ—Þ¯ýëè½!‡³8 {—p <Ø.ñ ¿‘ï“Ùì~F¼Ï~ ›rŸ¤àßëIAYZY†nÊ€{;ÌAþó?û!¬*—Þú¤:Ð4O™ŸKé}OÐ=XÄÊ‹¹~ßþW†eà‹ŠÀN½@™pPÐÈL9ÖuPf(¬-–ó,[uzßÞ”­dŽbÃLÄÖü¦´åY!ðã×F\°fé±åä¡™º>ƒÇmµÊ@“f.]Ò7%£p°t¡c Ÿÿ\j@…°üy@\E•¢Yv߯?)=㉸辦~Nô‘\3œ%¶¤17Þõéý©­}‰,‚ÈSLxNç³#Ê‘t“¡Ar¡Å£sMŒfò¤ÒåNuL™vç“}h¶²„ /¦¹ù6Å‚1j—27ÞÎ\¨_36V¥¦0}„ý„Ÿw¬æâë´çS­­öÁ¢Î¨leû*Eûó©/ÆÀH'S%ö«ýÉ/AòBN·CÙÌ¡E€DÒKoZ\ ü@«Æ)¬Â.b[*k^wp7 Î¹c‘‡¾a5Þ·’ŽÁøÙ£0²ÍüªwÒaÆÖW”Œssp2ÍÍè¨|¡äþ‡á²Ã—ðJthwd–{×úßËëªÞ¼ºöäY4HÌU…cöŒÐQ¶W½SÚCÐý h}ô2OÙnÕ}èºG¢ò;š>#xì„ó{ã,wÛ†?#†©„wë]…'8èƒ)éXÂ2YŸ þ5èçaË—ÍH¢CÓ pFh j®Êó0 |SûjèÒp̓òÀ â9êIºcîö{\îkÉw­|­™_·æ)i/ž¿h s£é‡0QŽß*Ö$£ nw>Àö"˜ß|ëcÅ)q,•–8ÉÆÊ0iáB@£R"·yý.ñ0À~—±ØÔ¢dNØl÷;9ÊonÕÝËõm K¥•@«¾%ÎÈDÈ:¿úû°Ðލ¿ XµÊë×ú}¦ïW_#Ÿ=Âü†§TÖbH5k-«C_Éx£â(Êt;_¦™Ê+º=[ùx 9ùÂ舒{9ÔQtûòèZ~žRqGPR$©ëEGÕÛ»|úÕ$-;©Í“0ÃÄ[ì,6¥J‚/ÖB§Ø Üî}ÃÍU8˜†Kîc²=)|}EUµçYf-ižòâ­ú!qmæèÜVB“§D0Ð…Ë€j‰Êjʹh‰}èòéøÑaÖnU~©w ØŠ9ý±Ó–lJÏB íƒpÿ«Ý–­ŒxŽÄ{$©ÖûYžrb!ŠÌ ´-²7°V}%aßìéÐ/ûm<…ú«<[y VsCØ”üÔlåEzL† lGCªÆZIV®q«wþ¤<å­ƒ1…§Aê©_xŽ~J=ØtvñUXÆqT±E3`ŸJ.™(äBŸ[È\úz@«ð:äΆ7m‚²d’ÀrÉ5¿N_3'ù¼wÆ’öבÀ޲Ve`_"bÛíf?—)Óq1Óф’ T°q"j°Ýûa³°3O…®¸Ã"œçü²Õ¦|ô,úE_7ùra‹ úÊŧá¹Ù–­\=•B%M¬ÆÔ§5G+9ÌQ4Gs¶æhÒÇå”ê8 =ù ´ÜŽ|zúb<(¹$hÝù¥Arw`Ô—Œƒ<Óˆ´ñÅ€9È¢¥LžfI:†ö!~Î6¢åÞsøH¦æt^|H$P}l†ßù©‰ódÉuQÜhÉ…ÎPyJõ HpçŠÕκhç©î„=Øyè:+lôdì!YüDùÕ®cì°}k“¶Õó¡v ‰Ë¸9ÍyÊ´ §­ª-éZ*¹¾£‡ñÂ_{I×M’ë8=Ü,¹j tÆ0£ü*×þ²Žwyñ-cÏ\éQŒ—ŽÞh [B- ýàÌp¾he¹;=;œ“å×8‡ì³¡¾+Âsƒž‘>x†úà1ûàù6¬7<;´Œj G#;ýƬƒú¹ñìäôtWmY”ãîØÉÎWüHZn#ÏØ©$ï–¨ÐoÑׂã _b¢sÅ E7Üh·(Õ aKQ“R²V»ÙÞ—µÍÄÇ¥„ÆìyÊž[@Ê‹X“º„/Rqv1Ëó—ázMõQ‡(Oz,™®¦Ç8;~XmLeé1ì¨Ú lCŸ›yÖŽéÐ¥;ןWéžaÆgñŽX8%OWÃàáE„_Úv€å±Óˆ«^a@å÷@ù=X¯À£³x”OëÑË£·ÿËÊ_ƒäàœBqrªsÉuñA>Õ¢æÿ@©Ã U†ŒÖѪ?YªvÐE†+/%›XJùʰÛpó!¸ûC(¤èÆØ‚CÔ$üõDi®N¸ÔsÈnÎV^½™`Äs]}ó¨£oçåsp6˜‹Àýg$îN% åú¾”Ìèò,Z~Ö2ŒÒ¨ã»Äž§Ž§Åd¢"Œ¥Å8&:ךÃíñÜ(ãâ·f›ìý€F¦šáÉÑ¡›bxR…;¶Æ]j'R¢6¿®hçÃ2*Xî&O†‹¬‹S†@™¤]!§Q°#ÞN–¼ea@Îx"ÛV¡¼ó¥n% •í#ûÍ¥_„µ†…•v†¥¢Ù!.ReT,LŽ¥(ÌVŽ1pj‹`ëÍrË”ö,Œá?™Gr]Yõc*¼oQK»ˆZgW”ô.$îØTÚ6Æg½Mr£É žRdmJ6ÊÍ(q<¼ [4^Å “W˜¬'$ç»ø83>G¹y>Öc¸·%öÑÀìOÇ{߆51Oy«U8-W¾xÿâ¼ãzÉÝLWkja²h´Ðæ×H5Ð!J-K•ˆ/ëÇsy©mKôÃ9Ÿ~oú¤Jp”à ºãÞµá€R|5æ-cum:<_„׈ ìf}BÔ[P(Ì÷å=Ó~Bɼ:  |EÏȳ*x°;Öî‹R”» -ÍSH.”K1Î/»ŽÏ@À36åkݸ ròˆ®§èÚ7ÛاRKµ‘ÙÊòJ±Þ¹:‘ñ)¤%:2ÞpʇŒ¬ì<Âó¯cÊ ÃGÈ{`Œá“ø¤&øc‚8/EÙ˜‡bKàÞn¡[¸ä~ Q$͘l¬¸öl®Í4YHÎr®Õç ®aÁývÛ•qmŽŽk³~\›·òZ>û9µdn¬ñ#ÚUÁˆö9kô¡T0þ làÏqŸ°­Sþ„>{t½)϶ žcO7;; Ž1ÚJ“¶Ò¨T¨ˆ’ô1ÜŽÐÍPEM³Ï »}; ¾D%æ¼íPöAÚ~oµoÏ".ïW46t7q1ݧ+@ Ci–!ŒOJí$¿;-ÐÜxCÿØÇò%Fkf”\_á±iÕTª~¬œ6ÂW~«»ÍñYÑMzâ7껓z»TžjHIµ›\À?ÄË/Sj/‘›Vw¦5Cø¶þÿAÐã÷ð¸=‹(æ²´ñ.,Y…ϨÞbU)dkE¡°©WãÀ°Ÿ K•\¯¡ƒ˜Iêa†ß5ÜmÒ£!ã rŒšE­«DªgšW…ÌL97w±:Ñ»«É¶Èçñl“l~‹ß/G¯br<.é̘ˆÌhÙ¸ŸçÇɶ~ʪÇÀçâ>LC—û0“Õ­s‹o‰þoÒÆ>}p$ ´žã21Su݈ FkÝŠ«D—õ¥˜‘“MÙA¾÷ CzFKå8š©É£h ÎFÐ…BêÝ+‡rcRÝö¾Ò¶”ˆtC§õã-I»@´¬¬c‡ïä•XMß½|¡…UÅb[IûÛ«éé¯Ä_ç7ál}>Ë«1wZÄ*«œËݸ¨®9œÏïC¢êµG9¥}xD&&S}+Ž¥_ï<¿±¼a_ŽŽ=ËtÙæ9eŸ¶|ŽGïÉ"cÇÙãÓ9MÓŸäÜ Î|écŸÀ«ñ¯;kdÅgMìiÜ—°·Ð˜Ùóðq½”F59·[4ªHÔ`^_½<åᾦ"‹VÉ2¹ËQg7È+1íEÄ_tÖ]9®EeÓ_ôÕ'É_!XŽ ¬/Góªùú •J\ŠÕäÎ!ÁãsL¼á“S†GT ÈÖëoEø,³{«¢ŠeªØeÃù&Èo=¼ê¯¤Ê÷‹xC¼’ª­¡¿oam¥ß£E¨õ¼´m,1ËщÌm¡¹nÝ.mDµ,Ï7ñ¬'â¶„\ÆTfÿÌÅfV&F‡WÑ`Ðk~’6Å“n!…š_3€ÓÊÔ¶(EÉíÛˆÂn­œ@$G&)oƒ€Î¦QÞ*æSú°;ƒËˆù&4‘‹ögÿ»ŒÏÿ·‹y”o/‘ovÀ û?Oª/°]a:›[yžQ´Ëñ¤ˆT³™æ_"Yñ~ç7$í'ùÃÂ!Ö1ºƒSwÙ%ŒTR|UÅМO) «­Ó€Ïì![ifé6+Z¹Ð—n¡1 /ŒÆðó4ºÊ5táæ´O¸Ò­dÅ3xmß3N{÷ N0£Iž=yxŽ21M·²oÎG ´ÅÌSb܈~M3X|B]'¾gÄ TÃ[,Å­,݈fB–ÍŠ`¨MY;14^`¨É#¹f ƒU: `_¬&úìäöG,¤ûô]Öáÿl5VEÂNf53/ŽvCv³ä‹çXÅ1ža‘Ü#©³: µ¨é é†0õ†Z¯ˆ Å;ʯì°ŸWÐ|´„g´à6fêA [øCÆ’Ÿß,Âé…,ˬFå&+Ü‚ö/<£Q^3ØÐÒùE«Ñ$Ì6å*ŠíçúÁüxç?sôcGö©òâáqÞ½z¥­Â[;0kÄ}±£E[eDº®(ñ.M[ºÐ·&þ‹sѵ͊õÁnrb[ûþ<Ís§@25ÓÂÓÌÚŠh˜Võz’€Sñx¬Ð¤þY׃ š5›1ÑiMg—\»"Ò“ÍÄrwò¬HÐìátdíä÷'ò¡)VÜ$¹Q{Úxa“õÄʈ­žoæ–û0†e¼Q!'ð¬wö)@3ð”#w‡Ó<Æ ÈOodkŽãÊÕ×è§EeÝ´ÖGsÇÁéÖ+>ôÛgm7†a[…%g-Äìä™°éâ€;ÏЙK,žÍ¬ÛÕï5Õíµà Ï´¡È,š9 DÆieD¤;ëS4q,Á×§¢’õ3d¥(Õ! ëAn|9ÉË!ÇüÓï•k8Ç£èYØè¬3²BÈi’Æ'Ý…[©žiã1*!=ŠÙg°ŽºfSü1fk“–C–—0Ÿrož¾ Ú×púβø øt“¼ÒÈ&QT+Š ÎïŒ2,Æ!Œ¾±ø šörO$f¥}zä]úS/°ï¶ã=pà5@ê$@w²çÔ”è~åçÀ‚—¨¨ ]Þ*ù*Ã'åâMûˆŒƒê½ŸóÂ<=%ÂÑ‚cò’n¨Ó&;Z"²”<VKä¿ìÃF{49${žÛK‰‚x …ûP„˜}œp@~¨¦‰ÝŽƒ¾&•E¿Ë‡b« GÙ!ç×´À g_t‚Ó 3J¶Ý’WâlÖ>˜ŠD¿+§ùÕ,£ÐBÍy^œ!·Is4)Ù©x»-u)î…£˜Gí°x¦ã¶@ûˆdot)"A½~†½;åɀ3L‚î„Eòv(w$âqÁN¾p+¬MÚ‚YVmûyvˆu8Õp²Ò peÂånå‰<"Ë}¾ŒçÀ¯áºØGTïeûFк@ˆ •\Ø$´²8J9frß±ÿ—Þšn>a+9kÇŠ!Á½Ÿ›ìé|þIcpÔ6c?Z寂] ‰çµc3¶ZVš"[éRBƒÌÝŠçClgÄ´“F¯‡æ'¸¿ÕxÒû,À]¼ØíŒø±¹M@í)«ÞÖìF¬þ³a†0ïó(ëC‡Þ¥›gÊk@ÎÔq]Ar:ëHŸÆö*G.Àî>=sø~Ö0ú;;ÈT§}4ˆcr¬µo¿¶ÕÐiÖ£ XÇʾ”Åñµ_} ‰èhžmù«(4(ÿ0ùeÿ¤ýè/á‰í3GÈS®”~‰}@ÉätGŸ’5†0{8^ðÓïobÜa¶hÇ Mò¬˜y9Ši˜®_ªÝªMP. Õ_û€p:vºQ/óãŠÂrÄN ‡meÖq¾êƒq&Ƕü>\‡”5×Ðép_ýtœmÏæùhךÁgÐ9¶ý*ñù:~?ÈF޾éúáµÊšê”Q™£;C€ãkR¦qÞâý„µ±ïIü–ß¼ËS>ŒÂMÓB»”­,®uÓRûV“äâ–|9KÉ‘sOÃss~žò›Ñ°÷2Àœö>ª>zø¬wJùëÕx̹cÔ«û…á3@Š·ã©,È@q½:fåÙØß@Ç@ØÁû²yÊêlM[ØžqPxüHÒÄÙç/²1`ÔµD‹LJ~¸ÞÙ÷àu(3àÝû§`_È5ñòÇö>w(ÐQ6u²g*ºTÕ3£áL¾8s.) SÊ>E*²yØa¦J.3d`]þÓ“¶Øt,ÊûL91ØX)¹_ïÕÌV¼“«ÜhA¸PrÝG¢f—I§ç(a°·Î4ò*ò1x¿)ii2¯Üœ'†e›õkß’+ê㳌Á!w×uZ(Žåû¢â›à«Í «ž“\јÎtùŒàÀ£"T>#ZrêÈdÊdèdaóµ l–É+¹Ve‹¾¬É¤cè†mƸU#qIMÁ¼ÔkþPLøjèâ4TË€–$²ì‰’«K˜¸þi«ñ»¾þ¢³âƒ‡CF#<ž âßúŠüåüé±Á!XÉs, ä°Å1qÃN†¿²¹†lõ÷ÈÓâ%{šŽ—ÎæVk ¾wÕ’óa½×E~è(0³® ^V3ì7c Æ+Íu´ðìÎSœ0¿‘8Ÿ’vánàO¨z"¨œ5ø× =r7õ!UÿŒ’ž[L·ävDøQU‡ò±ÎƒÍv,7s^´Þ"¡¯¢84LœZun7Ö5G¸5VI Ü`Ø"hèÑöÀN¶D÷BP_rmÀ$rýÇe Œc¾ÐøS¡QÁÛHIA?` йŒ¡¢äÕ£ÙgðJ¶Ø·`§u²»¬1ØÎ8ߦ‘å¶88ɆšùÄ&ÍN ‚`â+ͪ+ Pœ\ŽcdC†|õ@}0«2•ÐÈèë…HŒÕ-ÖË›¸M$„µÖL¤‘ÊDaà˜@üä…ãºòN>/Q'‚™qª# þy3¾ÌŸ(o|ŒWc™©ÉsƉ˜E+ÞÂzZÏš·ê,·j1-=îh6õ“ªZÇòãÙê1ln¢gÆD,®NÃ}m•èy±7•ûFãìQU ÇᎶ³ûX‡¼²¶³miK¹ˆ•ò( ®…5%4ZëV û¼gê¼_újÃâÑé"4‹-ׇˆ‹UtÄ­ÎÔüíŸVñÜ𦑜4‰É,º Ö|"[‰b2Õ³d¯ãÑj£zD¼Óóõ_?óè=ZEŸà±­"|ŒàÉa“^S”·™Â;×5uÔᦘUQ8Í´Ú#ÂE¤õÓn:¦.‘I¾ñê#øM_–Ž«u^+zWƒ 3"úyÕÑíçÂú4ßE)©‹0%ͨ~Þ¥ða—¿‰*̤wù©ü~¨Ÿ &OÆÇÕßvù@ .ê={Dè,Ê‘ÆÉ¿3ŒÒ臘DEeî<™Ôß”si¨E)Óé8#”­) ½ö4e+{áa‘·N¹Í_­Žº¤ÃþC‡¿ë•wéÓûaGÈð¸ƒA€ÿ˜úJG/ðÅðÿ¬>æO‰H§^j÷ cļ1LÜFñà·jLçÕiþbEÌï2ªCð#ѼˆEqê¿0t”. Æ ñK]׿ÃÞ+2:uð%?€™ñBÄScڵƨ_ Ô­>v1¶E]ôfVoÊiRÏ]ÔlT_‡·)•ÆÁ'$×tJ éªµ[`ºò”¿nÇ‹ûê¿:ü“’>ÕöUð¡r(ÆcÅ4`¬î!Ý“*u‰àì\ˆM%ôY=‹WÆ‚­ãU4¨ŠtC'@hðï2ÔçÏ#µ¤x<Ž~JŸ³=šs²Ñ~,až”×Ú£µS-œ‚%áI9•A”üS ó×íhI¢|ÙÙä0U­;å׎ú«ç©©Ð}32Ϩle> Ñžž‚¯ýѸO÷4Þõóùœò•™6Å;{¤2êj´ý®bP*Þ|UD*C ¸p_5ŽÎíÃѪp‚’\‡k¦|ùsMÂÞq‚òÙÏq ¨Çz7=~¬·‰7”3Lå–’Îlû¨’Î;íý’j}0¡ÒÉѺõcØÜ{½â}žãXÉšð;Ÿ•D”tÝm^Òõk{tI×ïíRI—ÃÞ¯¤k=²¤«ÀñNy¦±äÒ䲬vÉõ8žª·'I®ûÅÓÉ•%žn•\7Š§Ù’k“ž¦K®Î0zÊ’\.ñ”-¹—Â(—¬‰œ/<&–¬é3OrÏ¢§¨0a«mMž‚· n§·_oݲ߯ÑÛï·ü5¾¤7ÇÖïRðÍBok¶žÄ#gW8¼m}¡ ’‹œA%î6@ËS%÷ ÑrDkO´¼Doùª­E°å}ôöVhù3zÛÜ#Z>Boê-Noehs GÚU!ÚBçÖЖMrŸ£§(è9F*.Ï4ÑÀvÚm%ÅIödø;Á~-ü½Ur{(k߉’»†žúÁÆNý—H¸ÅqX|DkïÇðåVÇGâË6üò6| p{_82$w‘€ ºKÀåÑ“ šMõ%ˆº¢.‚¨‹ êˆÆ 8¢ÑôÔªG·ñê`‘@áÇ;tˆúDøeœBG±6€ ªÚóÁßÑå¡ZC¯‘·HîWü £U}Z$øaÂj‘¯|]”šá ï¿øDç@áóÂF>iírl˜~ŠÂæi“ÞñÆš”Ø)tŸ]xÕ°x ?²X„FZ=º^4`Î3º=2鑳íæå÷£ú1mQ[û’Š+:éRdq‹°vNªE ™ü (JÔVb ³O)±ÞÎvÚ‹Ê ®Zö±ýê”ÛíÃXÛ=•Q¦ò4øNÇÓ-ÖWLÊ÷ò‹ø/fÕ9êáýÉÀÉ!5þï…x<P0%a»Y“25Œ Þm¬MÎ1T€5«‘³ÃKÖjÀ·â²X¦‘e)Þ×–ï|µ¯©È”-†EÎm™§\w5ª‰£)>ò¸Ò¼²î·J(¸ü+Àôyί[³ó”ð{u+žKË4mùX¿yÊ· áYôÉw‘ùN´0’˜  (\«ÆJÇq”ûðqI[¸ÅC¦=ØÍ¥’û{ *"y”Ýw“qõs„®CïAÇíýäLÈWîþõÍ I•õÒ–™0œëamú±–äš Û¢"£²iß :ìøá[ù0 ”¼ŒÇÎ-ý2 8ð2÷±²Êt(n˜î­-©ÁGÀ³iHæèåZÉu‘!Óôò>®Ú27åÏôûl-‚µÀ+Hr-ƒoÒsòh.Óßœý}½{Ÿ†>ÀS¦û¯cD=‡ ü.Î…yFù@iË%ªeMhªÚ±ÝmýÝ䓵àôò®]"Énõ×ûl8Õ»¡ÀÏDrå…ÿ7øúI®ëü£+ u “pÙX'á*œÑ!?.*¿‰³°còlzçë&c|hž#ÖàWØIÅ^e€ˤÆMXÝÇÒ#Oa:"È xJÌÓÊÈ­øc¨ËÑ&½ VF³B%ÛŠky «CƒwèÝ‹˜fÝ)¹Gàf‡àâ#½…#Š °˜K@¡UÏ&ã47b(~Ÿ§Ü{7".~gÆóD¶LÊF] /TIŸBµÀ–”›îF»Ë“FØKA>Ã*‰Ia·sG '›Mà÷9õó%×`¼n%Å7q—‹™ÝÇ …Á›o™ë+V£~éÔlIŒð0ðYÈzÑ—Eߣúz±ÿ¡¨_¾rGg)ÙzKÅà$í·žcdK+9ÍQý CÊúÆ´äJ‘Š‘1it½§‚Ç•"f*îNR ¸zã p£aº¡Ÿz,(ðãÏŠ"sž '¾t;é±!å}ÄòQ7üàóH~ò4Sï*{5”mÌÕýõû˪ç»}eΈ2MAa©±½gsõ`âºQ ë_>L,oõ÷ݽڛßÚÞ]TÖÂׯ—z¨l²úi—¿=Ö&J½é³­ +·<ËÄrá—åšv©z€ŠÎ뢓ö“e)/Ž)kìfGpiðb‹<_ÒÚ3¢ñÞËmÁ/œáű”^Ø,G÷‡äp:YáÅq!º¹è~$Ž­òQ×RœlØÇ²š“öÓ’,käÅãôõep“%çÀ²¦bcDÏh–×™4yÚíÙJÒHϯ[¹P96/[9Þ¦ß5>oæj§éVc+Ïmå Íîc¬°Õñ)ÏH{PžR9U…­ó'ì‰r²]üæF/(ýâÕWq÷½¯³ôTn. Mì v´ô‹={`ŽÔu†—žš0A|=RwÉ(Çö/ýR’pšê.™ G4˱n¼±dSºc¡DB!®2ÉðÄnÑÛû}êjfÔ?h? S“ÜV·Æ=iúéÎ%ü˜oF¯3›keuk%eT‘¹`^ÊrÉU‡™Š»mÍ^Ý~=Þ䴻Pq,Ojcmä-Ðõf+4GZ¬'VÜgm¾4ž¯²OÃ3žqšcŒæˆ×qš#æPs(xã÷°–Ñr˜ŒF{ÊÍdìÐʦ=eqîGgïZ–ò ή<Ó÷²Õ :ÛBoÛ Á.\êÝy“Ž9‹-aÒõ²M»6׬®Â]Zc&ËPTÒ›ø(¶ÐÌ®R1²†Gü:mdÈ¿º-0t¯âx§_¥êPøÓ– ÝÜYÛ‰NÔ7~Ào7A¿àÛ2ø¶h©ú˜ï[|›'òý޾-…žÃ·;D¾,²àh–§Ý®^@›«Üfµµ%ðû@w¨ï餶dœ‚‰,^$'Þoó³Ú‚ÕFçVTÏŽP”Gß]–{†~;Óù¥ ™m*IZF+ CDéCÙA¥÷QC)àÒæìÒSÈñju%º’š5úätHzø!MœÑ­–ŒVg­1[Yzµ8qnY"¹d].ˆ:ž°_¯ü}z?÷DPVþÞ/Ê`¼`€`~0¤H¼ ~ŒB^XE¥Y±2 Ñþ9PÚþ3>DÚ’q†›æ…JY„vŢЯ·sò8 ÂÇæ"Ã)û]sŸ²¬3¾ §DØ™}Åîx7Ï ´'mÉ:ã—iLÆå…gÊFÍ ë%ÑÇö~ãkÏÏdDO¡›Þw}í‘uöK¾öWLœ+ÏôóõhÏe¼7u0ÌêŸ{ˆ¥ªxƒÁW͵PÍ·s.kÝ×[Š%+ê;!jûö‡@a„á9—Áð§.ƒáA¼¶éóñ‰y £‘Ôæš…#0'ŠÎô"ÖEš(zeᬮ<,© 6*£R–Ú¯IIµ_•r“}ÈTÜÓØÍðÉŸŒ)79¾µöc]†B冔ԷRíRÊRá ¬l{IçMö´’ÎTûØ.Îîrί»xTÐÛˆ ÂpEC ‡%Å”$‡Ùw:?5yëáS:Egüƒ°6s:=G³ã—œŸ†[ØŸÄ­×ãìhÂîy9Ê,\¿Y±Ì°pA¶vú)}êœ. õs~j(B¾9Ñîã×7¡‚å;ÖÖ`KGouW—ç òköaØÚ ÑZ?ü@M~¿ yÆp÷¢›ú‚…ÞW|{¨JÇdyÈ ¥-IeÏ*[;ñêX †åqŸ†¿;é€èB§ï †õA¡“f²‚q¢+1×¾/¸Œ%e{¿kû26Jz}ù$ìݧÍ(­ÁÒ \ë8>m,Â;åüB¥Wõmá}ôEžh‘×ÝÐ-ÏŽ—ا°¹c•MX‡k Mb}ûÎäkÕØx«9?Ê”¨*ÄlÎÚgs·݇»1g]3à £¼uj8;Ì«±ŸÝçÿ*€g•øÊ«±yÝÀ‘,ÏNìæ4,¢NÙnééÕÚ.ú/9¯FÒ÷Ñ;×¼0k€©´'¬65ÙÎ'ɵ–N1ñˆá£‹à­”’0ÛûƒaˆVà4¦Ò¶Š¸™L†CΞI«-ÒG›n½kö“uŸäz?RÔ×,2nqí7âû·¦Â;«lîÔOñÆÊøÈ«(g™GóÕõøê=P 3…bÊýèb%ÝÈ«0sÝ—áœJ%P©}§ö:ÝødÕ@«·^­,ã"}T‡­n…w9Öâìš´ºß2ë¦kJ;Àûì­k Åé W¿ùK>{M3¼{¿#¿r~¯vT-Ooå¶ÞvK(¦º'âßÊÉ]hÉŒkÜU…_ØÛg=x®(Z™MªtWî ‹ 5´ºÈ½‰r³ÙO› 7kdÛ ãƒkRÐ6eÖƒg“ja— CÐÁ¯aUã¨ù1Ø0I=OTá3®[DÃ;†?Bhx4—)s¦™¢ä""jpQ Ê»FjÐ+sNžÝÁaoOýŒ j.N4w³h.wˆ¯Ÿ#ye.47šÃÞÇ|máùâ‚¶T:ß®¤æfv3yôÎÆRgcü­oªÂg`0Eë‡û:{-§Ì¢iîÆšPúI3r*®bHdøAA¿8Â3¤[¡6sºYåÎÞ D–®@q‹˜h„ùƒ} `f.cþa@£*®²žÐ:” „˜PvôÁL ˜‚æÀ$æ@aß  Q0ÂŽ QÀ"jŸ ðƒ²=\€PùCÈDÔöÁH „BXÈ(Ì4 F…ÚËF‹¨ÎBëP~®ƒ0˜Žê¨M4ݪê†'ûõP÷9‹¯{1´{DÌýÃ,ê-T• èqe7úX‰V>¤R°Ax¿$L”ÃU9ž¶oœ7øSÉaa- Vt€a MjIÝ ýÂ?Mêï0G5ò¤o(=8kð- ûÙ.|ôßJiMGzÙ™óC¢—û5É5­Ä œx‚ø}¸óŸDФFyw =k&*ºfœ»Íþ™³ç{¬Ÿâ%vùP‡ gçÕ$SŠÜQ´õ×öª“XÑs£G!‚øY¢jƒ?Ë/Ì`Rà.QoÕ ÕÛœ‹½Z¦a»›yÕrÌÞ/Pƒ–Ê „4ˆ`_4\r‘0 cÅd`Á~ ·xB˜´_TE3óÖ%”Lr%Ö2OÁ( ŒR ªE¶2O65O)±Nqœ›ê‰B§†ïãÕtïiOš!¾8è=ì‰BÌñžõD¡(ù>n¼Û=QQúGDcïÁ;“ö{ÿ 5Ùx¢pËû>^~ò>Õ¢Sxo+&E½+Æû|İcÞ?âG“'ª/¾| _1 ÷ßÒ6Œìu`*bml "†ØŸ…܉ěqõ,÷4Ëj¶?°æ}–ñ‰™¥_ ¥i›=b†·A¶5–tö]u5/>až¢ðlPPHÔa¶Úò•-¤ÇK.nµ7âÇq¹XagCT>s(ÊÛ…ÓßwðöXái6Äû¡ïLãö½“†ºª Ã°òQ$Ñêqû¶‘ì!9õØ:…¦òˆ¤ý º_[Q÷…QÚ¶Ó°›íK‡ÝdXX«½/ÛY§Ä$mOÚMf³'`þÅ™7šŽw²¦e<«³ôTm«¦]÷sàÐ}ë–±¬Î#¿íl‹|þÒ@S¸},;ÊšJ¿CÃÒæ)Ò¿ /Ô}Á³.Ô5G•žÚPªi}·÷ÝDz.Hÿʽ@¸õÓ ÛJ[ðª*Ý™|ïIžÚÖ^ðâ“tÒâ˜ì‰Ä'’u*),ï($\Fò‹ù`Úœ2¦Ä)ªxéÌLeé2ìUâ¬p“„þé—൓tgG¤ý:gGû@gG”ä€#ØvÁûÃVÄ]Ñ >]ð6õ¯ˆáʲ¦MxNŸq5(Cv„…‰¯_Ž‹Âä*<¸·‰<¸g›Ü´ÊäøÓ×$?Ô4(´ Ê gQ34ÿæOԊϾû[*ì~‹ú( ‡{´ÈS”Vi é ^”Ã'ŠIY¤@ôT.œòõŒ‚DmiØŠrúO88@s,:|ÖâÖæ¤ý?´¼°ÕÐµÏ [(éõ@žw ‡0T–˜î®]3Vå¹õŸ¤³ÂV,ý©·–ô^ôÛÔãíîb3ËmÅ@¨PF3À~•üÔ+«ûl«4ÂŽJ¯b<«5"·ÀJh‚•Î2šXîqºGÐ’gý݋F韄ë2!ò,Ź#ÎÙcdY§%דbaõçYMî]Žd÷1Çh¼¶SØ*½Þà +&¿¿…~¿¿·Îæðú‰lh£YsœV®ŸÍX¼»+ Ït§¡YËm¡>¯OÈÉ·”³PWxÚoYM˜xÌþÝIpìònÂxUyzuÏû26ÏònÏhÅ)“ÜÈ—PCóK?· I¿Ë[‹!óð‚&4Ãú93ŽÛñ`.ôô:_a‡GŠÏó²ÎÂŒÍFŠ›˜ëB³ôz¡¥´ %ét@È<‹Ër—½(i?kjŸôžßì\©üjo†E&ÛXƒòuÒ`ûXøÊîÈÖÑB³‰JÅ~âŒÐ¦|;’2úçöŽlg¾2„y›Ñ×sQ®òK#Þ)ÌÓ_Bì^$Hj×\éuáE#é»r;ä{ Á‚¬Z5G£ýª÷'ßámúÌ”mx‘3á ûj˜Òò¯1RïŽ8 à)ïëg]Ŧn¶OhëÍwÂÀfµ£ DÞ}âú¨¸¾¡2NÁ ¹SПtà²ú~0Žñt÷Ťݦœ™ásÍ0€gµ”¤$M‘\EHÀVLÝ©ðnܤŸ„Ý9ªp'yS8»f#0[à61?#%Ä‹>w´D8y=Þ8a÷œNè&§¸Ä`ìZœgZ¡7ùÊÑLT´NA/PÙÊ'™Ô³å1ígZþ!Ô™¯,éOÔ ýÚùú’X´ÓqËô<åo‘Bé Ò8H¾còò³•z¨!Pœ;Zµ‰o+ÃúÑ-x~ÏiºL R9²§Ö‰ùP˜¯îdŒøwÏi'h‚ðü­Èp7dXämF1òiRÖE£â“"§âBb£Ô¯ñMô}Éç—Ð÷æ„ã¨=qžjeYÇý#ÝÏQŽÍêþ§3zuÉPa¿€ÞpŒ…οb$­mýûuH9²•3‚»nSâúê½n&ޏÉI=yúvÔ BšÊTèF *:¾xlãèúü”L³,š’­ ;Až¹Úc”g>î ŽÕáŸóB“ïN;‰(Nø}'Õêk9îvdÂ6>Æl,žàÕ.“v«Ò?ÇÛ}afKR†O±_ël0òaÔï¦^÷™¦v2%ìkãkìv$ašã‚÷Sa¯E~ÓíCPC=°)ó?ו{C•#»Cz@¢ùЀٱ)7w£p]Aàç¢3_“¿´¢ÐAK%’–J¼ŸÝâǰ lºÍJëyŒdS¶r=:ü£R˜­Àûo?͘H˜¤Ç>Õ¯*IntЦ{PåÈÍÎb‹ÁÞþƯª\åïAð¢3XXá×Ó/$©ôµÉAGú##ÉT`Ûe¦YõhÜP¦耪äÒxI®&ôþ[\?VrÕ‹§DÉuš”cHG”'Âb:ãô“*ëg.ÜpHnw8vÂn&í§n^»“eìÑï…éGXå…õ Ng.$;NÛSi«!mÌ0Êê¥-õÉ–â±Ãi!˜j–ÎUJÖö$:¾a‡çbhÇdrÑ£þø­â¼|õ˜Ò:þ˜àýWHŒú§Y[rÆNé‘=´ïÑUOÐICtmÒþäܦ•C`c¼…Ÿl¼ÝÑ' >­øþAØ¿·yEìm–A«Ka+„ùßãÞ&jOÉ,=#x³ :·˜=žTf¨žKå±¥Nïmê½úc¾U?à£ç\åmÔûóõçÃàø“z‡\¥þο§9óíiòIji’퉚ªü _Íæ…Ç“jÙ¥n¤Mloûá¹Iû­¬¸‰9N¯T{ HD“cÃÇÁ9ÊnJ.4ä[7é‘ BhÁhžuºÜØ/d[0á~ÿðÃw€Í2.ÅKáÄt…ÅsJ[ºxø2n^ã?´³OÓ»+¹J°lÅ;Ë6.EWÅá0šið@åxìVÐäBK±ECÿ§Ë‡¬t“Eà (Ræ)aäŽåtùHvÊ ëÕûƒì!pD7MÔí/ôñçYl÷}D=4 ûŠŒ€" &†šl@¯Ø u¼N{2ÒL Ð|ÜqP‹ý*’<$÷^TÝdXªõ]x–@w»'Îén¶M7à:)-°G•+Ë­÷Ö8¡(ª ËGbPÕäC<ħ'àæŽÑ]<õ÷¾²>þ:½| Ð;õ‚|M§ºÕ¸®Ðã³|UŽÏ>êô#¬-q~öbg Ø(v;»ßÈ—Œc…;p¿,=šyR6H®1Þ^yN@ –L# ?lLJnÒoîô‡ÂV/]ò5wLü¼Œ|£(, ‡VCŽ½Æ•ùÉšÿÌO<õÿŸŒüdñ-Aüäãç'(˜Ÿlöó“Çüüä|Äç'9ÿ7~{E~‚vÉÄOÐäó“)—ó“¡h§±ŸÇnÁ8ê‘qo÷1!Iþ‹dEâ/VÆ›æ®ãSÕ wè›$†tˆ7‚;ÌÔøgʣȲ0ʨþêŠÜ!«5Ý–ºšÙÞÜxÃ`-„7P\ºÿ5o˜™ø_xÃû½xÃðÄá Kzõ¦õæÿ oØ~óÿŒ7 [Óÿ-oXûÿŽ7ô¿ùÏöÞôâ h!Ì6÷â ÷ßô?æ Snú?ò†ˆîohïÅšÇÿÏxû½xà ã"oXvo˜ß‹7䎿Œ7œ¿oø¬o9þrÞp·Î÷â çÆ]ÆRƒxÃøÎÿÆÔÞ¼CíÍÊ2Ûg¢’Âp¡ÁsMwZsͰW“y<ŒlÃf%¢[­±@˜Ë e^ x²ñêò,ïäLÍ>“W¢Û2Šo(œ:,åy×þ÷„ýáTL(á0·[$w¼MÅÑI™®ýŽ(¾¢ŽgEu“¶ J8!§¬ öyöÕð˲Ì"X¡À¨¤¿¥ekNÎ0­Œ€m)«ó²Y¬°…em3P_Vø£ÏÜr©,ë›’âo6°ö ð¶æÁä\Ë=½blÒ®’bo˜ý—Àü¸£µÜ"O› ±¶Û-ŽiA0µb—†óŒÓ MÒ6Ç7ÖVèôh,´ÀJ …§¥mYßX³NË6;¸+6« ٵ߾ƒÆãIoŽÖ ï·ð&=Œ2·Þòσ[†vãzµ UJNº×÷ŠÛ¡N…êÜ&Œƒ ÷0ï7®ý’[ÜèÁ8 4àÞo|þ"äòî‚.Ÿ½H¦þ¤œù ƒwÊxÎ%g±{¿Ã왊W!5RZ9;52Eµ÷þÏšô˜¬°5Ø^‡kÑ.yÂð°E8?†>xÌHÛ‘–F ÎSáöÁ¤U2Ã$)i©äíéužk‘ÝÒù{*ÙáZÂwŠÔýOµúS6HþËI†eÌ=›nß¡òõËø ‚eîý Ö ñqÓ~"Q8Ÿ C†6Éýl2RÏýs'ãg¬ Àë0ó­O@Æ<±Z´üX´,iõ¸³uðÐ ;“¨V@ÄeÎÛü×Pµš£?¯ÂŒB&W]èBßuw$_Ï/ç))kÃÂyµj¬B¹¾Ÿ¦-ñ¾Ç¨r^ƒý(ùy˜ý9y©AÎjñ¸cýÝñ?EûŸ,þ'³ÿÉä2úŸÂüOÝ!6Câ Ï.Ű·êßÜßÃS\Q$±*„¯|HYåwhÏòM\IçBvRÚø*y·¹ñ#uã‘ÆË`Òš1jztrzŒäLŽ@»Ýë`ˆµÔhMt¸*³SÜg@7ÅqÚåØ \~ƒ aŒ|Úð˜±Ó†G#¾ýé š{ûðèE±;¾Ÿ¤¤ûñ€{˹²£ß°šåZ 6Àªï£2åó¥Òèl60÷]𩬠+Q™‡UßM&N˜ªâÓk¿ ﬩?s`Ž”TÞ—2ßßHùüèÀ_Kù4ÉT枃ïÓÆ9;´²Ê¹È!Ü™úÛÇÈÑ©¼æeÌaü3úáh”Ê ÉÛ5 ëºFVCÒZ„ÜèVºŠÒ¦ AWÄöQrJ*¯¦*ÌÛP<ªû~Ôܾ{YÊ44=[;ŠÃY‡³6nн~¹žVIiÖiIǦ`ìai#Ú*“ ¬ÜzV™²î„¬;µ·÷ Óâ%^I©U˜Š^FŽB†£òâð8V…[.ã 8Õ¸’K WÇIÛªhL&V ­N?´èÔÜ¶Æ êgò~wEÀ³•Yß÷ÀDdúáÙ¬‹| h†¶ÎÇj°a¯;[ù[7j—H.ô5¦¢ÿÉö&çÇqe‹šq¼=nÄ’³7¢òÈO_Ô*|¨Æ •>}еÔhÐqMyˆJêÂö*ÆÌam‚*Ðg¾UbGØáòÁeûDÅ:•¶m—¹òo5C÷Ôåh–¼Ú ˆ9Þ«¦U=°l·¾¢ÛËdQ®Nzd*=€ ²cA 0ŒSÙ½¹*Q¬^zä"™D òEà­6èÍ !íÒFTD«ÛÈ%ºK¸¸>‰VÉ«V…³†Xƒ sXŸ}8—±:yÁGŽ®éû$%”ªv^‹—ß Œ¤#æ³Æ¸Û˜Œ\Ð> ÿq-„ƒÈµ~£úË£\µv)eƒ½?'^‰¦O ®„å½›„8µG—ª€Ës Œà`òÖ.\þ§’èìèËö®Î¢.‹¯ùç7‰Îξr¾³ºÕ#øy"“¶„˳ïo”WØiË ƒó»DgOßU_‚@/qÊZ’ﳡ¶pƒ3®‡…ebÙ'Ø%2WqÖÇ•vÁu5·´ W‡,VhW½ña¾wb~•ÂpXÙ?:ën Ž&¬e{L«¦å3êò¹ÝXýC0™¯2¯Fw"»±…H—î£~ì>«y]¸¾,Äbóþݦ°K¤v—\èØÌ2Ú›D×üÌLJptÜXQÚbéCá¼P?Blõs±w°¢3)û5ŠKŸ@h‹¼“D ^×ã"cErìÈtj°*k ~‘æ4jDp+_À¿û¾Íó€8ë,0pv A5˜àüºÕpÒÚ«¨þdït&œ®~¨áÝ‚PójÌzþ¯íõd4Vý,¼ÙMËþ*žÚë ·£8½mE Rª_r= eäjˆòäìT¾ÌptžVÝÕh‰)„…¨ÿ)ÐT£ñrîˆvÖ'–Xa߀'=œˆWa+ÌÁ“𻲫z’ë“ĉÃåY¿#4VóÎwQX¾rã`Wc9zð`Ù\©ûZ‡þŸ6ësØL¼­ÕZµ™Xr ÉI }º¢õ¬Îúq<ýò—¼Ûñ¡*Ò[ÅÇJñ‘Œ8hÃwK¦äú q.Láé²ñn;ÎlõÆš²µ ‚£ETc yZôL “Cá¤Ö­2~]Q7 †•ÞW².^Iå¨ÿÀ7ÑdüÙ°²†¢QÖRqß`z¬v+—Q¶åIN7þÙ½mªÙYo•¯ø«"+ (êœvŒoFØ›.¢Œ¥Óùw;¢¼æì0zŸ›‚»Kû úÙp-Z¤D:;¢e¼†\mä’hÓÄú³•FïÆ)¸³…¡Òðž$×ȯÍl›ed+MtOîV’gtñWvp[7—qXô›t4ÂíûÎpN ¿šûC€ç­ýùHÜÞfë„xf€'AâÏFâ~¶7!6ÁÖ×=·Û·/ ­mªÿ"ž®îyµç“¶H‚ùI[VëTT^иú:NëA΃ wÈÆgDyñŒFiËzƒóûD§ÖwÕ1Ö„b ’OFÔtýØ$äÕ+é–ô`ºl»ÅùEwÂAÝÓº<{Bœˆ=+J:½žÊHv*q) ¥›:bÒõc\"Åå+‘gDräêÓÆìzuÞ׳•û/Ô`ßè-©9ÑÀ÷1£É—Ï0¤Ü(Îì¥-µ‚çHÑÒI^.­´e­ÞEY0Hä:Àf†É)Lž½¶F… ‡/Ù0 `¥=Áú,^uÁÇ_HnKIÒ‡‘6bßøäs² uznñÇÝDfBÆ£òì‘¡c%ùä ]ÊØxO;Ó‘ ©l°”ºóÈR-¤šÈ‰¨Ö?fÀLRÎëÌ#¨÷gðÝŽPP§é Ì483ÂŨ!ŸŽð}Ìðñé7~ʈŸ–1k‰çÿíÆùHâÓÇÁ)±W{|Ðl‡æØ0‘b{Fò—˜Ò«}¬¶‚ÙnœÕ†#ó1Ÿ(ë#S‹#ó÷s„ bW¨€¿No\I—OðÛØ*ب Õ,;§K€­¢oƒ¨ i#ý°´1þ/†0~¬êšsعËë `êÕ¢;,m\uÑ¿*¼oúÁ0ø‹‰¤Ã|‚,€¡÷h2•Þ®’œ n·¾N¼nš+T)ÀéWö±” )÷zœ™ÏÑ™M`»ú‡°Ë·«5™ÄDSÄNÿn¡½ì’³9-µt!’Ú”¾+ѼŸy®)¡‰—ÓÖ6Oˉ‹õ$œnlm•Ü?¾¨ØÿKîîï¢Êïi€<½çR¶Àû(n«ƒMÀ‚E’k7QѦ«‚ ƒùc7ÞPèG²Îó}È ‡çÙ!ÀHSÝw£x«FÃc{lDö‡µ÷,X%^£ö;'¯_È‹ 7èoâɾ3ö§B’ûyüBb¢³&žøL5”I®e”@Y«)+†O¾ÄjÆÐb±5˜ÓJTcÃh.Ó ]ö«x5nÜmöz•’+R8ºÃBtK#A7ÃÆ¿uÞQ³Ä®a´€öèw€Ór“'Z8µ™PMFÝÔ/ÇŠ–ôú- ¡¡ä@æØîýŽh..?sôã5tC³÷ÑHR.©¡‘\È“»ÅV…nç!Í„4ãy–I›êC_ï†pÚaR½uû½R].Àl[?\£§¢DÔÕF:P˜ÃŠ@n£µ‹äo"Båk4Ê#UU‡ä~ý¬›Ô?¡õÊÙ a‰€ŒZZ4š€çë0&çÇèKr刲pH®¢ÍˆN…¹<‹O¡6iK“-_ðQ¶p·¹(Ѧà9ƒ¤@Nï«EãmÊwÛh—*¹à“JñQ*iX÷ÛGb«3¢“gĬØ6àÒÒ£Ut'P46ßûoß ë7sM<-:9òÆqèßôhõï˜7nž÷©Ë†+‡ëÐÊ á 2¼ÇàMÎâk8…@FŸtÉ5çÐaâÓ£“§Ã&Äl¢ïx¥~é*ÿLðèa’e Oé ÎýÌ#dÎè<1£‚AÄñxgÑ&f1_ŸÃ&ÉíýÞ·¹ÔG×"0zwóuEPMêlÕ?¼6œhêéu}ãŸèx˜hMôtœèâï}í¦›h¾;òs”5=Ú’¥Þ#E‰ùÊ }rgCïKEãó”žá†ø¶~¯ß¼‚`|F†ÌáXÐJÌáØy0ßÕ4ßm’ë…ž`,¥ù¦5¤>Dómó>¥É4¬DÂÕ3DMbu|Ù„tìÜLq“«aº–¨âP%+©ÁÎHOÔÃÇÓèM£¿ãè/] Û¿ÏôÊLÈñ+èB—}<'YÏ>µêZÈó Z‚”Gùp x‚‹$5¤á~‚ØOr_$ZÀ ù¡Á~gÛxo²o@êSŸ§œ…S¼û§‰{ƒòñN%Ô¨•>ŠÛ™ÒÃnÚŸà—r‹<³±äH€ )ÿ¶súÁ’¼¤Ñ¾Ï?·µ/‘g%ðÉ¥§p9ðùÅ'Õ²ÃSy* %V›àq×Ê zìÊÍC؉2sò,w›ã<£4&º´i¥†%çC¸u €ÄÈ«ÆNŸ„þ¨&Ÿ¦Þãß²!ÞZH¨ˆË,Þml¯óL”¸ <«<:ªN(âø†.$Vø(´câmeÉ?3wÔ©F˜šoTô†óŠM4í¼3”o™U±õ“={ö´Ÿb•Zøªgdãh¤è9AX]ˆá‚üBX@,KìºüÈÆw cÚ=+Àˆbš“Ñ'u9¹|ì&Ê{B‹´%W‹ˆúQi ` ŠyQô};Ý]·Hï’²P}»Û›ß§ù^-,}Õ¤“µÝïá}vòü?ĹwÂ÷rw#®¬æîrÛÚwª?IÖ}w a±\FéºîT¸³ù<«ÄŠÊ+qÅÕ}Ñwg߯r9†’Îæ½å•Ñ”),”ÐÇÙüóòJ3%DaBµ'îrJÛªI>ßB‚—»–Uc$?À$st¬Å}üè©™UŸÆDY¡,-¸jð‹\ù}Á¿ó(zÙ/®óùcÇ`tU·"ÎKùz#H SU5X•÷=^&Hˆ™4¯ŽöK€¿×ú® †Ê ó~Ìàa6¶Æ9¼r*°^’Á€ïF*>Í·à¾ÈBž8ËZ­Ò£œð|¨^„EŸ£”USþP·fÅ[¹’ëlE`øÔ¬›[8·º ùÒ˽àGÂÍúS —óL+B¨MÈWV~@£¤Guû»žàöw]¿?Úõü¢à®ƒLõÉ6ùyZ¶k)†*qò-èàhßÅÍõWù*ÊS,!ÕPÏÔ ç‚ÏHô+¿ 3q#,G`&ïÀ^0!!“ÐàÞå¡«ÂB ü<*Åõ^Ø×ÈObšMr]0øn¹ÂH~l2izÇ@úº?9–rn(0H®GPnÚˆ‰U¸¢Ø_é^1µœpA®|8=«y‚8Ë“þaVšg³É2&bä<åÉrªh1”vO„p@Õ†øtZÀ-&T‰#çHW-¨Âµ> ¡êåÁC›aâoIŸÙéó·_¡ƒÕ©ú‘9ÿUHt»Glo+¢-ñ±©^@Uu[«°1x3¨Áœ@ƒÝ§} ªOP\X.?é—›œ§¢>Vj¡(€}WïoÆvhÎDk¿¶h «§ˆP3föø¦¥;©–“¢K@µ–ì%ÜbSIÈR˪Êhº6ù§«B’Ê^ CÄRÂR®óTfù”`!ÁÞ„X$Ë›¨³bOPÕçéÐî{!œ;,Î. 2úV=÷¥¯GÊáý¨ÿ`-•\M_"\;|ºŽ—õ\Sšuõ:WCd´…Énl,»(LYþÝÕ—ô£P“¼Æ ÄéRê «ÝþP_)«-ž…Ñć´îíeÛANôÛ+´Àd«ì|¹«Ð¥m+0™Ÿiè]N êÀi íGm¾²ö¤ÐzþÉ[ëY_ƒ¸QƇÈõÑ*üˆbà}Jµ/1Zü†1r’Ž© ˆÇdöÛœNÈ“Á\Øw.0œh ]Ñõ‘‹(_a«FQtîÓ†~‚ÇG†(¹Ô纰M™˜ü.ÇB^Iœz¿ã6^C¬5ÀÚ“„EµŒT·|K<8~¥ï3»J}á[A¼–û3— WË¿%ú†ÜN(nŠòG±|£ú[H\ŽzY¹Ò½Ÿ§U£ò¥EÓÇ:*îÉÌeìþ?°øŽËXüÎÿ‹ï»™|‹+ÆÏèeÑ×ì ˆØ½Lì> %ßÙ²ûÊ v_Mìž¹æeú‚ó‰Ýßš ódî{FÞ/ˆÅW‹ÿ7'k 7Œ–«Ó§<û•gÕÂòaZ>EŠa:û¦¢ÙH^ãì@w«ªè Q¬•‘D½©Óg-€ŠµBR¬Í¥} Ù3`u[)®fì_……  Å‚{šâí¿¦ÊZMYuÅZYg`€9­dº€Šµ²NŸbm]§O±FUJ.Sb %£²¤Š54OMïȃÆbm~§®XÚª :}еu>ÅÖo‘\ßb­¢Ó§X»¿Ó§X[ÓéS¬añ’ɵ‘X^…hÎuÝOP¬é½ÂÝë:}Š5jk©AXr0IS„OB óÚ/®¬Xñð+Öð%D±–w¯Xûù±ŸªXC£“ÞŠµ'® X{çÅÚËÿÐk_~îS¬UþC×½4~®+Ö6TÒÈþ˜n­Q×­m÷»äªÿ1ÝÚf]·ö§ËFŒýÚ»Btk:ŸPgn _ÃÕ~ºn­¢ó§ëÖ„)PY§®[«¢É<„JÁº5šžjBÃè‘ •:œ>ÝÚá¥?¢[ÃbAºµÇŽ#ªtúukǤGÙ®èn¾"פڎ\¦[#UÖåº5škÔ­eÑ\OŹ}< [Ã$tk­y9JÝ+4å¤[«~EŸòÖc>ÝÚ_^ѧüóc~ÝÚý?M·Fóýuk4¬DP·všHô:})2š%ÊA«£!*Qu mKÚURƒ.ž¨éÆÕЯm¢gœTeÅ6`)šÁ¡~m?sc%öñ0‹]D“®¨Á<Êâ¡È¼©åªìNq‰½«ÓGûIÂäŽÇ€rÎààƒZVÒIr¦å)¥fäŒh+­Éø—»S:ƒ–¿•’Xʹ΀¿Ô ¨_ûH¨Aι5Ÿ~í—ÚÅö…ÿ] ‚Õþ˜dZ/˜(>ýÚ4â%Øõ‡KAúµi40ø×¯_›¯ËTê3—üævK¼œ²ŠËdª7ÿ=#7¾§Î¸DëT,îNdqÂÚä0îu ­Gå u¤œ#þFʹ2ÿDåÜsá¦&˜Å1Ç mvLóécdÔ É=—”sëtz4õ’¿h®au©ã >»Dm>ýÜä΀~ŽžI?'B×ω]?§ó»€~? ~ ëçžÝ×ùSôs„ž5ƒýèY­/6{GzÞ¤Ÿ#ôì­ŸGd‰ÐÓ¦|ÑÑ3‘P!±3D?—H011;ÿ»~nW÷ÅŸ¢Ÿ›øs¢^‰ÀZ+ˆY…©bÜÔu¡ú¹‰4›ø7H?'ü2ýœ òÁú9}f~\?‡þú9ÿªXøƒU,†U1q‘Ïö]u(í(|" ¯$¡p¿‡±i¸ßÿ´F²ß¥[G/ÂD†F†C0r#põôãk…JÐ—Õ IT¿»è‡`B°W Ú·ùº·"“( ÖSÖÞæ·†°ÀÒxå]‚_J/¦ íß/Pû'ß-VÞ@ÜMô¡ïwâ÷B‹ô®PÞÞ-bÝ%øH¬nÖk Ò ƒ)hUWë¸&(Wô*¿é°úmWHÌx%Uð®±\݇û#1¦¤ü{oˆIÿø$í橮 uÍFÝšm»ä¾-Yh«Â[i[åZ¸3(—q‚Ê+q7QN@:O€ö;› ûšûî.—ÑnºïvøXNŒ ·0_œ‡ÔºæL^H¶wŠ-Ì{)9²ïî¾ÛËi¶é½ó‹Ÿ—Ë÷Q¦¨¾Û¹î»[Ø IIÚ&Ïí Þ»àF©Œ`Ów0Y?ySB_Jü;˜7,~…¥B=xà?lfÞn7Ä ¼‚•ÍÈUT«Œmó¼/s²*GJ߀¸.Û;}r εW–þÖå‹VWFË_`ÒâB2ê­í¼ §h;Û÷DtéQuo@ CmçÊ6Òv>ý‚ÐvêX¸n¡ZµŽ«z+*ô+pì¯x•Vr »†vàÍ<‘¯/ð+f*í]>=¨Ý¯X£?Í»RÏœgÐŲ•~CÜì|eÎß.S’ÒH&¸ý#)äÓý¡#yKîU’rºY Ôa°U-dU÷1T’ŠŠòïü%)v[ýǧ¡2ú8ç±Þýd/z‘n·oüùÒJ²C=½ÈŸœI ®ë,86ªVã;}ªÕg1[%áÖ~É݃#ˆƒÛ$×YâŸd`rvüaä%×[b¦bÛ€YñçC¨Z%# Úʱ•Bµç—ŽË5÷!˜è~Ö½œ„‚ûü3y¿þ”?ož\‰ÎS(gOyÙ§ZBûÌåûÜß’j«½LµŠ-&ÐÀKeÏO°wêªÕ+®…¶Ÿ¶ùÜP­Ú;u-¸¾úœ¯ô ©¯&^,Y—g®@”Ïz´u |@MîÖ æ²õkKÐÜK{ýŠÕM{„bõ>ÿVJ(V-½«Øsõª±š1ÑÚíOëŠÕ3~ŪˆÖA£‡ŠUÌìS¬nïñI‰b_ánc•‹i®îòÏÕÝ]½õª˜¿·^U\î¨,ÂÊølIž¢º²”²ŒÕë¾òàæ`½ê$Ô«>ý©¯CʆÔGX¨W-¡eßЫR®¯v_¦W­ÆóŠÂdê˼¢0Ų9X¯zë§B¯J‹C׫ʢ۱½j¬Þ§'t3*¯"‚^ûôÆÔ?›ËÉ—k° ]PTž{ɯW}÷Ã@?έŸ„ô£6_ùÙîP½*M'êIðôªX8 W5“„ßt½jéUÅ¥ ÅÈvøyÿù®^ÿ…p8üÛ¡Šõ1}±{–ªÖuúT±÷uúT±H3Ö¨OR$7Ô(@ò©b v*²X/BÞJ1ó*íÄ†Çø&…Ó¾2esû=G>¯"è˜ã6Ÿ Ewùm=í26LÍÜåSßúµl”zË.¡¾%«\Æ”2“»Kðê~Äi=Å ,Ǩ†ï"x«–‹&AìºKðŒN·Á`[D±Í>Šý(¯Áj–±ÛÕm;{ ³¢Ç)o ˆÙUê3˜%0yPM¥”rqã=DIæ·T4¯¸‚f™uú°-0òô·s•B›"Ƚ¢ §_Ú"rÁdJªåÿ?Èt}·ƒTç“é¤mÕsHœ«ÑÅ9RBë‚\®Š†¹ÐÄ0òAA‚\õe'Ïò:ú‚sHûGàé-m#ÖŠƒk“~p]£«¢Dz£ª¨BÞÞÆ}1*>Â$÷ èêvKC{cM¨sû©Ëh:RÕ1únL6ñ‰å¬:†Hr a½ý÷ºnÞà¿Éç›ÆÉÅ=Ž ¸SMÒ`¯j=¼r´ŽIÓº¤ d“o2ã3œµfëám:Ðý˜êLªO©5õÖ‹ˆ8ø7¸ŸÉë¦ûk¾\¤Q|H“Ò}GXØRõ·;HñºÜ”ÓÏ$Ëx‡6Géüöb;°UÀ¸eü*5m‡¦»&QKêƒ|íEã-c‡™Ï4ñ%Fë(Àîiaxq°ÉqPÐXëñYžm‰š=–¥HÎÝ_æ:ÔîšËÓÍ/›ôÿöQ"—ä,§,×b é—yʧ›_.±_ãË’CYn ¡YËh-Ÿj~„‘¨Yѳt“2t¬h³@[qö¡¾dЕB²†abÌε–D:‘g˜ÛR˜YwêY¡óÓ‘ìÞÅêx¡² ·³@ûiëÜVþ0ªK‚ö͹èwÌÍŽãÉ…ÊÊQ§œ-m‹HGíµ³Š—…CÕÒ–ÚTáÓœ+ŽØÎdÍ~¿ŒHIv(;;àÿyû? iåbÛv«Þî)ŒŸ4U¸¢ËÆLc™hà¿{ü1BÈŸ FkÞ¯…š=ë ÚLì¯@l¾rǤ‚}®è¦|å–'HkÿDµ’ŠvgN¾2’ÒUt]tg¾"éY^UCǯqOÃOÎJP›{æqqYóa¯Z4>_iz\WîÒ…¡–W¶?®ëwÑ]€z¸ïËÉuñŦ†°8Š"\çm,º!_©ðÕs–xS®ÍWÖŠzôŽJ®K(ð,ÅÄëò•BQÄŸxGý䛕ճ¬–Û*\TúÕCw‚à¹-åá)ì÷¹j×/çY­ GÒXnK°¢5Ç†Æ Ò¶%®½G£Ëòˆy­«¬wÎ*4·lˆcœõìªqâ U]5*h“&ªºíÌEáºeêD–ñÏ*CŸ=GFâ(½€ûì7GbO *7`)°¶Œ€·þ(t ±–žfè[¸Ey›|Q.¥Ø°0¿O®ŽkÈ…Ðί/¶³ú¥"Óû×P¥|½‰âA¡û ƒˆåÚt ÍÁÕ _ÃŒ£užõ$¦WÐy@-Ð]÷~¾ÀèèÓ6Õœm7ÌBWÍÞˆ¶éæ8Ç­îcëoчyŸM쉯Ϡuam²K´ ‹n‚*1ûÈecӯ讳‰çð4KrZ´äL6`Ô©ñ¸¼j,Í¢el¢aÛFaâtŸHOðŒ2²·ãõèÜ'ì«éV¯bå"fE§J. UÍÎBs@Ôöø»=`#ì£u¸7M‡[¢àðv“z‡†F5”á·é°Áú¥eÙlŒ–ê}!p 7 Ì/°†´´hïWÒ–Kùó”Ãræ=Ì‹Ÿ`¥mÒ Œû¤ýöXGÁº§'Ö䑚kŸ%šûü?7·œš+Ÿ£4`Tà1k‘îÐûôw¼~rødIãç)7cÁ½0×$²Ø'¸ÀjGOËÊþž°±(y-'6æ}&Pa$H4Þ·-ÈÈr¨±2ŒY…Š®¼ òqX~LOÏ—§ƒE\C§Å‘dtH÷‹S¡Ø«ÈÑ/ë”ÊvÆ`9gí(©¬ë:"e³k·³ý§- {Xázþº¯káÌÑÈ wz2x´-q©ÂÐÙ¾|«g¸á)1‹ªæW¢¬: ‰Uâ54É‹ ÷°#w®ÇÈ9»¼XÞÊ)¤9-ÀŠ6ð§×x'3þéÁSP€gT:¤²>¾ä–»‡;*’vÉÆ;(LGÙ—C ©3Òº¯x/lôñœ'lª÷ žq¹1î󟌅g¹x%>EÌ4ÝiÝ»n:¯ÁTÔð·*øB#—ÍU´¤‹wÈÝÍMèÊùü_yÆÀòLJ…Á¯«z0öå «ÂòZVIi V[khZ Cî}”WS¼= ïncÅMÒ£OÑ"ÜÉû%áöj€]Ö±&‡4ƒO|vÙQܼ¶Óg¹Œe¥šÅåÝ섳m”äî° }\¿íLèH:fm(Žáæ÷Y?î8˜Î¨¡„XÖÖóë࣠ԭ¤] œºoÝÇ2_…nÎbßgWcžSE‘³ëZº r®YÜ:^k˜j²‰¡OöÏå8ÿSœæSc. Š"•òSAy¯±—nÔá£Ö{@–ÂÂü~מ–¨H> ÄÉ•nCæe’ëã¢xâÃë) ‹{ îqúyè—´Aèy–É)¡ÜMÉ5˜"É©ð äBÄíc5)ðqÖè*üáòš ü;VÆ/NO¤'ãø2d•2ºb5©˜£ÐÜ–n6IO€prv¯Á”Ñ=¬z"F¼Þsžñ,žiŽgµj¬K©Ò£‘1¸±ž%œ~`¿íwÖòØÝYKÒ~àXf,4ç}ª—Àþ*ìo£À~®Ëח˪ ½rƒLŠI½¥õŠ š•q+ZˆB©­÷.[¶¬]­ë g³Žº®Ql_‘§Ú/ÉkÙHs/õc‡YnÓ†C*yPjPoÇŸ6xˆ`¹‚™±éÑîK0áÈR»íŸ«ßáDñËÖµÝrÿ¿À‚N& bÛW\ƒ!Ó€ã܇IÆXa¦£>5ç³Ïç¹Íœ(³{¿Ç„F±)•e4q’8"ˆ%“˜&=z/Z¦yÆ’È%›k8&|š@Os„% ÿ)ïm0 ×eßNóÕ ¸ÓŒÃ¦äšôN^`·©ÆGmÀ˜½§~Öƒ^4Ð}£Òñ®_3[×x±ÂƒÝ¼x'wì ¯Üƒì0ÏÚYw&Rª±ÿ¡ÛÙ6*¡4åY%Îï§ø’Ub/Y±«oj¹Ô‹-ض®qSÏ´ˆ{7Õ¨ãsŒN5<‡ß!G×(MóĘS‡v(/@x)xº1‰M´»M.è‘Ü.¬¦àuü:·R‡âoí(õœWü~ì%SI\Mµkòë:"Y}Ý—‘ UvšúëØ#gmÍ‘SÉWÖ¯‡é­ƒ5K:Å5?ƒüHxì‘\õmdæ‡qìþ,ÚðÁ?›Y›[[s3”c'ÛôJó”që‰R:0ãÆÒ !P¥úJ 6^Y ·Úò<îåšß¢ ž„ºcߢ’Tù²@ÛŽ”0c‹Þ0¶Ÿ¤ú(Æ+Æ€†Îbv —ñ'ùA³´É‰ÐT`áá’c»$+ éx6O’ÍÕ8Ö98ÄSLÇæeYk‚A†±íqDÀ³“ í0Õ ˜ËcY´cÀ^SŸöÒ5ëïZ’ÊÄgš€É@ï¤)EådÇúH¼ïfÝ^<>±Îõ‘ïãûG´žçÛr…ß\§«XìQ°Z˜ñ¹tV¸Ç)c{ïF,ç«'[h¼MäçÙëïý'„èÀBˆþa/ð·ÝBÇ{lÜ ¬5ùCöÐ^à˜= ù™€f6üùîØoOÙuT=Ùœ´«mGìXV­ºÿKûz‘q1üx? Ù2e72Å`˜½Á;:£€åâÚ|¹°ÉêØš§L!X]s¤Sù9˨pîˆUï…¦ø4€¿ÚwªÜø;Eñ“\xD¢7¬bÚíÐÑš]þ£Pû<#:šèèÐ#PUûâ²™hù"ÿ{uï.œ `õ^½²z ¦à—¿5PŒD‡U™wÍð÷ÈwŸ»ñMÎc´Å¢1ÎÏ k òˆ]íÚ€å3îi á0$~'"F¶…?ŒÇpêWÍ>Dö’fw€Áq½nÌ~ÑsQxíž>†elVß d÷­ äÚëÁÞ­±ð‰Þ&‘~V?WW—j>PÆ4vµC ÔST*Ó§NTû+þNdÞvÒWìO'=XŽ÷ÿ$h,Ë}­äö0ÇÕ>ˆÓ 9jÍ6òñÌñš¯½Ñ’àAk€û-üÑFÊβ^–ÜK¡v5Åט·Yü|$~ž"»—<žÎ*éÜÀ Mö4×þõwHÛ¶'µYëW„‡© õå†é)ʶÛ%Wíšþ®Zûi[­µ~õ¬uÑ’]õÒ¶MNר¤ýíç ^5©Ö{FñÉ>¥x[ÌÃr[Y£Ã MÄ2,Ìü´pÍŒOA™–#®+/ü•/m¥Ì ¨{Mévtq̨ï6Ÿ Ël2I0óA؉J<”/ÏP¶ÎhÔR½S¿¸æ3mqwôøCkøŸvôø<¬¢ÇÉýâÐ C“CÉ:dø¿‘2„#<'h@e7æv-:v\Q‚¦'­-Y eî·)߯¢ÔT¤ì×>Fàþð0ä #|ŸìÙ~¾ðë!ÄÝqÑQIrÂ#ä+ñÉåL±D q¢?Ôa$A2mºßC'ÖIµÜÑrþ‹ž¨ž8[æUfÚ%(u^‰ÉH_XÕiºQ€â.þȧõXi»xÚž¤’í žP¯ã“ÝÇÖOä4°8šÌOþþ3ŸùÉ€ ´¬jù}©Äªñ  g¹¦Voö—™¡õ6C¡ å2•ð£ì‚¿P'ÅþucŠÏ&…>éW„‚Í=î Ò¢£ÁΊzÑâã]ŸuÊлë}°ÙoÐ{öÉh¿ ^0P‡8•¦ˆÆz¶Q¼‡IÿQ‚PÇ?ÁÚ~D!ÿ¥°¹é7=š÷31 ¢º¹ }±ßÒ…ÑA]xª'´ ª¨w¤ÆÓôÆVüHÛ§EÛoAÛ‡PnIÐõà騥M?fµ²R·Zy îÅ}™Ïp%YÀþ£¶+„íJe/UøßáÛ¨ EŽK©Š3_iýÁg¾B;‚P…ø"â¿L†u”OY ®Ar?‰ý%iWé×0Êa}?å¹§“´¾‡Ùù¾]ÂÉö's®1MEG–E9wǼ¼|%òa`ÈnEOß%Òër ½ð´ Ò/á¦ÐÝŠ~"[±RÞU7T8ÿ‰F.ã&·Rhük­óPñÔ‘¸úè2îøfYÝwF€-* #Ý:kÝment×ÊÚ%÷ßð|¿ò`¸'Û¤8‡$žqGñQùÚ¢,Ç$w³N;‹kåŒLn¡Uqü†„^©Î:Ô!€ˆâàq™è¯qxÊdé1<–…_WK_ ‹`%¡êíÒ(®oCcÝîX“1¡ý¼°>æ•øVÎv¶Í*_£zñ/Ý~s·¨‰¹›qôH™O†Ìa­–™+_Èhrz,ê:såºð$2Iµ@Í«ÐòÖÑWXcdÛ#·’‘TenìÚØl×ÐÁ‰©$4pê¾<§Í½Ÿµ2?Jž2éV•æ²Ê·‰\êtËý¦Ô ˾ÌvgôQËÙúI¯=Wí¤™Yoõ2Éõ êvúì²”{Fè§XÔ¶{ ] ŽWI§ú´Nuÿ…ÇvbÅI®eQ½)èQW¤ ~ªÝÕ§w‰}°DbXÐq5ŸemˆÒκ«°±Gú_16Ñ{ú„œÎ†u’ Œ(Cçèç|Ϻ¿Œ z[åBÈW#Eu³ øTKòT¨ŽÁfÁê¦ZÒ$×›—|¨(jÄCÀùd”@5“«‘1Kî[#¯4x·P'+’K6úΞ§ê,C8: ¨\¯QÌKrzyÑ'ÉeŒè Ï©ðxžé…çmwÛú}C"¹^‚ܺ—–A×ÞÕ*¹—A!CõAÂx¦Iàƒ³NB”˜޻ɄÐ&Çtà óbg Ñ! Vî]òü°±’ë3CïÙD_~A³ùe;ú‰Ä5(ªKäÁ7³òÂH"†tkòB#ŒQõq?g³µŸÑ'ÉõFXo€å°€W·÷#A â$×Tt‘n!«žIø¬¯MéÑ:KÜ~³X›t´º{xÈÒ¼µ(U ¨ú];j ýÙ?ˆQ`/qãwF7¦+ÿÙ àg¿"ƒ€“³QЕW6û—­´­_^ëÄ/°5ý1±àá¶ÐN¨öñ‰c%KA,øÏ&ÏþMæÙ”®8øt„ˆÅÔèä©XÄ¢{0ßçå(÷Q~jaWµ îýá?uõˆmžr:¨£è£W«.øAÓ¥7{Õ¬å—s¿¯.òÒÚ$FÁx4ØúŸÇkÞÅÞãõV·H×(]Œú϶¿÷ý"ÐÿQÂöcO×ý¶_Ù~`T AºB%Ànz°0 úŸ/ôýÞ.ôÔŸú›w!褎§ ©ºy—䉘ŸîD?®Ê…‘b>èì…Ò–íÂ×vê\^ŽòK¬î 'ˆdZê ZL‰:££_7,d5}rÞ·…h­~vÉ·šDþû`Kæý4ǦܫSyé¿-¦Ï–"0E‰9Ê(³$u)ðI<ÿ»K;hÒ½K©ý.ak6åY,¸¥âκT< níèUp¼è½ú|JÅ6åWTP¨cH$ÖÉñˆÄ¿ì ‘øÉ@¡Ö!s:{ž1ÕAR/Åò×Bòð/„<|¯æG0âa˪>gþJFƒ¯Î£c~sùsYÊ,Î/aþ§àÁý ¤ŸŸN·’6½O*“õùì„áÓò9xS”@Ò¶#@«>$zür8mf몃6³¿Æ(HÛæh¸•˜Yú5†iZ†aSÛPAŸ¥‚¿£ƒ¾.âT h“ ›| ÊÛά*jÿUpí;0$Ï6sû•t&±Wv?c Ý¾{îE/žµf¯FjPnžPrÉZ&@`ç{ž½Ã@–Å?¼s±} kà}°•0jÅýà@)¥÷H~Ь‡(KƒqH"¯F¦í1>‡ÒÓ¬Ÿ.©Aˆ¬â¦‹_í€~ՠ꿼ãï€}TKÀcå{6ôï¡7õYƒÈã¹>†ŽðÝüöEá;Q>Lý¼Ç¯ßF'®ä@hO+±>f~ºžiøË̼ÁyWz ®ýa_í¾øáCÔá=½Ôí=ìîC!Õ¹GbÞÿ!TkŸüvo›Õþƒ¿š Q²ôÕÝm Ô«Ï£¯$ŨѮɹ¦;Ñ~Vý÷94†÷mžž¨»S`ÀhÂ]FÛ(õä)íÁØú¡‰*ý^ƒ/ê]ç|³g E|Kè`5ÕŠa_Êz`GÚ÷SÚ“¶öí€í§´å£M†x~v¤ðil:³NçÀ¦Óu¿oÓÙ{ÓšµÓ³Wú6­2‡Â¦ó®º^߆Ò|4ôIômQ«ðÇÚà‰@L^}Tz7«Et’í-רlémCX˜Ø—:ÆñjÚn¶ú*¹<ÜÍ ©Ðõ{΢ƒ| —pLÌ )°•¾}‰+ŠT]×ûU]¤Z·|Ðc|îyoâ=esù\óÂ2™6h‰,²gúoH<&º5é Ñ­ ÐølìÖ Ñ­ûÝu%…"/Tê¼£ÔcÞ+O‚÷¤O±Ž=j|Ï`‹<Ǭ÷(xzTÒ£üçùÆ÷´ú:ã÷Õy;Ô¹îu¡¬§yâsÆ—‘IÂS‰¥Ôà ߨHG ßøO%ćb­Ë¹–yzö_º0{è7Ô§À71ö•{ðrû>3“e™v©?üëb{mÿ‘ôÏýéþ˜îÅOF+f.Ïàü✖a*Ë@à—ÜkŽrï÷Ì@sÍ3ÃGêË9&š¡Ç¡&Ö°Hp‹‰vO¬°EÚ2„–™ãg™ö»å~¼=EÅçÿ+ˆ>+ÔrŽ¡0”càýa®süLÑÞWŽÝ"Û6z·B}è¼dr¼äJÃb…- nÃJœ³#aõp-Þ½øWL%sÍ֯ަCzÉZC˜ã8Hˆqö(½#žq¢[9±$ùFÉõ`dCýe$ÁùÚ?ƒêèHŒ¤wYs ƒþrçTÎþÏ þ½müÉýc°b Mž±\þ-I¾‰5 sv˜‘Ž’{ü@½îì¸ :'mŒ€$èµñn\¦’äåÂ=Œ@8Ÿ„çt:lÁòM˜Ý}7îuóMrÚGÎŽÛ<3Æ!ñ’6¦¨’Z¨Å@ìÅi˜Æàr¨pnˆ×ìëÜûCŸf²ü–Í3Z}šr ²>7ºÜàªeÛ3R®³OEkFŒ‡%¬-¢Ä~«NK²í7ÃJÈ}¸œ¶¢À¦T/Ð]—­l¨/pÕÚ)×9¶³¥1ÞªŠtï·bmìç3ÆáX’—‡™­Ž7d´ÒÖôe£ÝŒ` ÅñËáâQf>¥mÆ€pØë³cÈ‘$¢&^#žÔXñL ‹^Èl€B™‰µ‘Ó[‡uÂ|©g{(+º)!çñðŒçꑤ£3ÆQEÖZÚ‰Vz¬IË_qWœ¯{{Í×Ò¿ÿ„ùò­8¿›þ®_Ð~` z©÷|ôÁ¤¼D%j¤xHU»;è!N=ßA<åcõ }™ô†‹£É67žµêÐõ~°>êK¡Ûœgþv" R2tr]¯BËþ&65 ãKë©ÐHõ“ö^x 7íºÝB¡ ùy{ð’;Ð7K#±ê”gŸ5›ÿ`$÷Ù|Œdh#ù·|Oz ÙUŸîýF7&ú4Hþ)4µ¥â$÷í(Wò!ImËÜû× ôAI6o¸ï C<Ø/1%»ˆWP‘!¹÷À‹³9Ž®B\šË'±<̦Í3 Ž…{N/OîÉg-vïZÿ½|å|{ÿåË/(½Ø^À§Ç+o| ¹¦gñR^ú’¤o=Ïhȳ0yÄ-MöÉ#žÄß¡É#žÅß"´Mév÷hÂ}Bú0áéÀÒí»lÊØ¬Í[[Q&;Nç)ŸmF× $¦³6›òéEM[@—ëmÊíV˜Ï5QOû#¤-Uûcšð’{zžR¹™\†Àx©´K†|WÏD/ƒï÷ÚÒR ökÛÂMö‘|&vûÏÃ8:%ß 4ñ™žÒ­ú kÜU/’R¡+Þ/Ɇc9^ÄQz~Û£±ú¤Z÷±öûåÇÑýÇòZ˜@fË”G5ú¼"meżÍæ!O)%Þ&eúde!1ÛÏ ˆc` RÚÒ ª„*}1 ÊH½B5+ª&²©X³M¹õNhGyÒÕò÷dÎ ÉŠÍl {¨›çšƒ¼Å´-Çm€Òðk¼÷²@¸tjØØô¸HRùMæÇóQÞ§Y‡R×_(“ãÈ„r Ÿj²VWñŒ u=árôEœ¦y,·Ey€*](ÇÞÊ2ZEÕî<<›ÉjM8¯­0ɱOÙ”—gè« ´U&å’ ‡¥¸(na#Ùz#[¶ñh‡ ÏÔØ\£šLt–"ÍQ…à c1ú€ÀÅ(ù ?µ¶éؼ¡‚„Ï)à¾ÀhmZ9„Ó¥˜Ü"Ö¸„|1ñ>¯àÚÇ^‡—lyζ` _ÇúX@÷XŽ‘-0±©qløÊ¾|ˆœn)½ç%Âæn$dss äωEh‹fÛ½›ó”ÝP]WåP´U¶2ïAÖ–§ ïL]¨ß¹]‚vÒÈYŠ yÊñaa™ ØûQ¢¸š·µŸãõïCŽ‹Ô‘Éœ½úÿ¾Þÿ¿úûï ínñwÝ×ïþk¿#ùïÎ _ŸçÄ“#t_Ÿ-Ðçä)‡ÂÐg–Þçñ†@Ÿ}žÔg$>êJ½GJlHŸúlÕs4ÄRŸoô÷Ù¦&Ì4[gZV§ñþí$ìÙãyZË,0Yχ³¼/LÄY<ß/lIø½ÊeŽá©qu]á,ëtB]ÂùºKáÖ'HÑ£SÂØÛe_“({ð¾0Nžèä-cÓLuØÂŠxh¢oÂTÕ ¬ÎÇ ÿŠl~›çÆ$§Tää+ße¢½L+îÅó øúDï?Ùùöcu_‡óâÓ6C{>Û[w&œg5.å(_`ÞŒV^PÀs[ÆÚLuá󴕦ˆ‡âÚó•Í"Õ¹#û¼&QEs~Ùv7Ëmªû"|0Ò»‘ô¾˜³Ç­ã”\˜Ëݶf¦ kÎ,à9@QÞ²ÉïVð*ß\¨Æ‘”ëÄ3šä‰ÙÚ8¶b ò>ž­t?œÆç¡Y1«eì, ];@¶Çg‘cß´ÉaÕ9J|&ÉÍÙÊ5ðà}ºBÈo< JšÇÂd¤%BaFh®²MÖÝ0Wû8¬ÇY¶˜R ¦±ôg„IÙcX¶‘ÁìeÇÁt²Ì8–mb^d.íGd>Ûˆ“\`bÙ˜™e1gA3ñØx‘_ÐXò b`6ŸkßN—”ÇðB3[L-ˆåYÑWê‹6 ƒ çnƒ÷,œ›p¦¨t»L±ô‹°VtVû@Œ2 v¾ ±êaÞ·hïá_‡1(û·Eì6žž}·à$•t…Ôóó|V<ùn·e¢1¹_Jš§¬}êbûØBáŠP#£Kçžµ=š'VJ÷cž›°3¹aÉÖVÄ(wé‹+V¬ªÊ»À[€Ë)8v¶E';öh®bà1ÄØQ ø×· hŽ}°(†rÊPd°)Ó þÞ/t{n^lAÓ3ÜqÁÞVœØ.Œ’’P«Ï}ŒåþÌý{`TÕµŒg’I2ÀÀd€ BÅj…*CPIÂòp’ð°­åRÚÞ*9‡ 083ÍÑø ÕV[mm¯¶´¥-`”W(I5@ R õŒ“jx˜„9¿µÖ>“™ ¶÷þ¾ïÖÌÌ9ûì³÷Úë½×^«cýŽ+«cÙßû† A<ÂNÍa5k$à? Ì„GókÌsž¸ÈÝlŽ-õL@—o%¬XÂGS¬’| ö[FsÈ\IŽ[zÔÃÔî0]®4åioŽ„‰/ M;ªÊ/€þôU6­Ô‰ªg˰©S~‰*á+áÜŽ9ÜmƒáᦼîÉ"¾ÌÌa¯¿#ÝÓ±:èGí„ ÷‹Qæ&–†‘Á˜™” ãéô"{ XÏ3–)zKÆi †ô|ý¾íüLŒuF;F.N49pX;ûx_!mlñœ$2™|XW-:å•°fê_93 æÇ“êÛx H¶hýí´^\¤h`ë“Xv²,!Vë JîD¼þ‘úÂ×!õœË„ÔÃBoñmU„0Sf,TªáŠ? ³\TGW~keÜ ´bWb4’v¡m`Z¾+B•—§óE0BõyÔ[Õº;äÅ|¤1Ì»ß&k ÄéRépéH¯É«Šã tøµCþY7 ydè•Q4›BÍe]ï˜}U¾I q. qÒ¢…¾n]ŽóÝò…ÀwŸf¹XOïˆz~`úËê‘jÆUË3®ö{p–º#ùý…Î"_rYáQ›jÉqhµÄ+}Ÿ™}ÓÊC‡J.q§ÅÔL,)µdËìÐÅ>_…•ǃzýD §*iBªŽ&ÚŸaæù“à6‚e[Xñ¤0o2î‚™†¶sOÖ/Š  þˆäg‹0¢3Ód’íÈ]mãsÌ>ÐeR…ܧk–ÐgáuE"XjN÷XäAô´°µø|K aMFXÞOË{ö‹Ì%½…-º¤'`‘…e¦°qüI‹:åv7Øo¡8ùÂè@¹m0ùp⻉}¯‰bßdàkR°@ã¥fÕÌYBè±6X€ ´.0'gL"f:Ùh¼È!ê´4—u¡×g[$#ïOx¯gè~éfé©?¢øÈ6ó‚‡Ó´îfé©%›QÌ ÀN0³+iwÙãð0ÃDŒ+Ôz§“j°gñ"<é]Ä ì¬À¦Ü >ÐNR7í*±+c8@ò GŸKÚéå¾i1k†„wýâRàgèA‚{[‹C›Vöi9Ñ~Ö×.ô\GBø®oˆ-8Ox II;¼U§\¶håßöÜ—]‹R‘Â<í[¡? c(ø;‚†óôB+°ZàKÔèŸçt}¡qcÿõ{ð«ð¸Úrµ'7_+6F±ÞÈd£¥¡j9F“Ð6*Ý×C¥™9["PAG‚ üÅy„uFàâjó‰R¨ON( £íWárv¤—ïƒáÓ—–ëàÒ A¥+î› ¢´€^Ñ*þG‘Ð`¦_ æ303û³hd4`aóÛ®Ì}F“Ð+És*=Ý#Po••?iKíâY×è±HÌÞ¶|ðì­:×Î\ýáÓÁmÑðiCðëàS3€õà0|Ú®ƒOÛÿ>mýáéL›€Ë.óúà’9".Ç. ¸ÛR/ääkcD“`,F¯Mæ«’ˆJ-ìn¶Êq·Ò¿¤%€{ð¶JÜ 4ɉ|•sÉ׶߃æJ2Ë·²|3Ë·O\髱PÖþ‚MôZØ?f2),B…Ães,ÂjwxE±×Ö|aœy<*ù3(%cH„ÜÎY ÷ÜÍ7;ÒŠÇjÞ>ÇIs{»y±ÆeìPÃþBmõydù…E´aSð>SYn|3œ+ бE^¨>ǰ¸@µ0¦”¿Ðð@P…U€_ÖQ¨š3E8#‰&³B;+´Qøƒ• /´€EÂ2¬,ÃÎ2,`„e˜‹|½&É¿X&|Y?À× œý;qÆ´¸M^ò£ë/˜ÇÔGðâ²¾¿Œ=•É^y”| Ÿ[`ýZ}Œ. ‹¸V¥À{ÒLÇðIFùí,ËM[°—ÔzFŸ,°â ,,³åG_PZŠ/0[«hW†R#®â_ –ò˜Þ‚®IÏdá{Tlå ûë¬zRÚ„•zù_GÃg ìl-™n¹Syƾìa–1åNâ·-› d˜caÕ@%üÊQ]/äª諊÷sõ³¾¿!§Î×óAì¥øºM%³x¡ÙA] …öòeE|A/¶ønû 5™Î[3Ôð_‹Ìó30»B䃵(=¥%…ÚÏ€õÝ$|;ð®¾[âcì«{ÁwÀžÉöË÷ÀòÃ|à%lÙ+eü¬dv°ëCvž¿‚oª¹ù‡\]Cˆ -JL«/†ž£—$êyS_Â0xzŠÕlH_gI§—§ñWÖÑ€ðN£Ñ1lM%\EøIdô¢Êp¥gMl˜ CÙ, «'ð€}ÉÔ<ô›5æøƒitÞŸþ„â Ç_CÍÇõ‚Qmf:›Ò<0sw¿Ž¶&hâ=hÈJŒážj®0Ñð†ÒðÒ:EEÀÔWä/0SP>¥¯]¼~bX–y|0séÏ5/EO {8KòÿÖÙD 9”–/ô$€QãZ #“¨ _/±è%Vè—´Ä2‘!þÕó’ø2«jMb ˆz†22 ,©¤Ö°ú—RÕÈ›-Ce9Ú  £Þ†:jQpÁ¡-k•£L¸Žë×{¢êߤ`"кÜè÷i`½ÌÝ^çÔa$aô¹f,½²ô…¦ÔýÜtkÌÀ˜˜Åýø)ùC†Œ<-ÝcC'‹ÍwÅ.mú1> ͱ±Ss֠ߌ?ÀQþ¡66ÇoOý€ÚáiGKè[”ÜJCO?¦wè;8‚,\5:{ëá*;Ìç?Ìpc†¹Z%ÿÆ1ÐŒ$<±å+†ÎUùê@ék÷êJ Ø›úc)úc úu€Þ÷·Üüþògicu<ÃŽB¼1'/Wëbˆp—áÍ( ž|&ÏqÙB–lQ膳:9nú9"œ;mã}ÕfÄ©žP½˜i¨š½Ï"Y>Ýå ÏÂãø;´ R ¦ÒŽû¢Úìvhãl§,¥°îù… œèÙ´%w#èÚX¶ 7ó¦ü*øÓ^’Ç{š`Ù`¤§æRP¶M5?ãè–6ÞßK)}SÊÝ%—‚àBj7ÌY-2Fæ$õ·+0fÓ.ä?LC@Yé§?¡~Ù†úS›¡?¹;òTëÞÜ€”¯vBL„»Ú¿ª?95­t°1ë%Š+Zj] SPk&e ¬AB@g'”_ ÷š¡=¡ƒÎ9𡞓 rìU†êærdŸPèO_ð|›£ÑП`íóµØÁQú“ȆjˆÚSŸÅ"¼¬s¶½l ¢Ï—N๓Ìæˆ?“Pm´¨æýñd=Mu^ÊÑ‹-z10Ì ¹0]`Ò— !èÙ|(zrÍÅñü†¯R[pCŸ¿ePŠ˜=nDæhß¡p …P 2_=*²WIö%¾8ËLÛ±èEˆÓÌ7„ý¡†5_yL–Ë=Ueì@°Zc³!Oâ°ÁSRùPÚ+Ž0¨ƒD¤Àyâë­èYø¿º[13þ?ðkq‘::sµ°¹×eSøl]¶p®7ól+Îý`juSè^ÆTüPmÚ÷ÆÄìmÅPoËÕ·GÃÕ‹¿å`ãCWO¤  ÉyˆÌ‚ŒI&ñFßÁ ìñéu³é=ÞöÄ<´hssê2<*XýÀŠº ¹(ï[[Ä7‘_¸‘MÞƒúUÖ<–Ÿƒê&Ø•YK">û:g+­Ïça¼Â° À,7ˆÂd^œƒytæ>ÌÝ —Á¢*bsWè«íZí_Eìˆê¾”‡á h‰æªù#ØY Wì,LYßqÜ3ÎwÙÌâä‘ð±aD ARKžxr9³Î´êÐEßåx9Þw9Qi#/}è\xÏ=WŒ†å?Ì]TÆ„HGã˜&ÆaR]—rWŠõ ß ï¿læž$xù|ùpÜ‹‹~y%¼ûRß»?ïþ(üîþ°G°¸= ‹ lîtÃο|-,nÿ ,nÿ ÚµÇgO§,Ä ‘¾gKŸ};ÕÖ¨=¶>Ô% nîvîNª9«®²±OS/aÕaÌut§b:ÊæNÀì@071™à¶ðd:ŒÉ¸Ûó|ûoÏÇÉà¶ÓÆ®†±'¼'0ŽgÞŽc‡ßiÕbŸ¯!xfb¯á/‡6ùiÕË}ŽéE Dë PÍ$>´ìœ¾¨TÏ¡ p£ìêÁlhè|exÕŠ…ßÿü!F°)–ðša=Jš–|›¨×¶Ô9sZ0PFCÍ}ûoVxîWlëgòѬÙ÷Ñ6Hb :‡ÎôúZS ˜³C{ûטGÈ:u<…îÚŸ‚~É56%À 4ÑAž6ºÏ' qÐ<25­Ñ!Ð'àoKæ“`¶i¾'¦bÆ€¿<0²¹/íõu¯’ü·Äc„/Ï\1ã—ïȃµ›‡Ý¡÷Ô’{qWwŸKðº[hS+“:øñôÜ÷¤g*èËw%ÿj3ò6Yòu—üKàG Ñú÷€Út€.×™==öd›'ÂÍ;I“¶ãÇ`„yN¾vºIl³Y1/.åÊ\31îî²O.‚¦> ·ìSK™N#Z4•Ý-ù‡¸íc{ñìps7sO3¦K oˬ3–¶joÁáaõeÉå&ÕÇâÙ÷™Ò´rBvvè&Í‹Ô"ÛBQLPðÓ§Å3בœ‚\­|S¯~¹ô‘:g=ެ"Æé¯f]²«ðNÚ»Ÿ—µ!–åÜšé;kÁ¢`]x,åÊ2ÉÿWúr'¨€ôå.Éÿ*}™(ùËb©¶ã¬Š‘þcåÇ•·¸·^wÖ/ž.Àò— ¢#¥OÄÆ(É\ib‡+¥½#øàuðn~–ÉÎòW—'*ŸÃçî#Zqšˆ"#”ý SA¤ýyô}eŸX,¹^tJ‹s´wî …Ël³éãô‚™¼pIàØRééçc»¸ü‰”€®<)xå?£Sµì¢"`æuX¥„ÅØÖe™Å‡M|XŇ=Æxß cÄ"ÕÅZÇýñJ]æTR•2…Æ”I“öÓa4äßo f^Ã-‹å-º¾(ø$ízàÿ µŽ±Hw¶ºYââ¤RÝ,1–Yvñ!F1‹Â‚˜‡–/[8½þ61x^l_l{©A° HÜZ¨M¹DµÂ)l´Ÿñ…¶<½ÄV¨™a5BŸ³y¢È8ÉR7KˆbàÏ%f>Ë j»Í²Õe ÁšIÒ˜ûé JýøºK¤€ «‹‡9^,r<åqG¼ñ*ØÝCú n„ƒ(Ðe–oœ>Dt‹ØPΆþÙ·÷LôèT××e tÏÂßDŠ­0_/˜Î.çY31h©9Щ€¼„g%X–•v?-btý0ž•²’"a©0waì)Zè#ÖY ½ÕX8'O{äÓŒåŒ:Å8Lÿ–ÝQycê!vBìô×ôŽYi¢*š3ØQV;¶+­s†ük–?ÍÍ b¾[CÁ,!d„’Çø¥°ÚÇ ×m›‘„DÛ:Ûœžm‘ž"Ev>LB±;ÎÙ´»»y4Æc(;G[È9ý·ûôm!Þ$>Ž,;K[È—ÅòïúîVR{åÉ-”Œ»„É<;%µžÍ7³ùV6ßÂæ'±ùv6ß&6sŒMcôgÕ®¿‡6Œ ³»q}¾y×8Û,íŒ Ö©Âh¼oˆ-TK»³¡]À­åk›e:H€‰¦ó´MÇc˜)Ø  h'²5›A2ÿÙš½Iï¿5ëÖò´irôÖì´ûmwx#¶(øFoô9Œ«1ö7a¡†iÓãà õNx¡È@ëªRáù¶À1ů}‘Üc)ö&\ëVl7×Ì‹Sç%ÿçÈΊ“x±…›Y±ˆ¢x m~:Ù\;›kcqÒÓEÚ ]Îg‰%ÚÓóSäù.kù@ttÄe¾I{›ùveÔ›Q[›Vi§ÛJ©0ŸÂû4%W‰I ‹Ui Þ¾¿$йþV ­È¶Ï¶bŽM}µ5_[ö¹h/ùãÄŽOhcß^Øxè+t.zwl^«¥ô´e+ù³à)67‰Â‘ñ=YÉ-Öc±ÃbËøbs¾Öv#‚ 0>+Ùѱpu,ëH­ä‡hmà-¨üó ü¬7\S¶¬½2Fä=r[±U¡w‚ ­ÌUÉ=vPßëœÈÈ`(U¨ÔÚø,;p‡aDF]W£æ«£ÑØÅU¨…FQT6¹² ·ÍxÜc^€´x,ªE‡;917õê_»‡Sä»b’üÃcðeýЕ%ÿ åÜÉa ®JÉßLGfç1ªžˆ» ”Ö}ì{ÙL]GtTkìÔH~Êr_—È—»©Ay‚;7§‚ŒÊ=rw%íϬÓÅþŒLw0«6îÏ躑6Ü$Ó•¡Ôˆ«”ê½aÍmú½a W)½?]—6?»6ô”´±•]”k]x/ð¬R¿íÏf±÷“T*i×ÁU9êz÷"œþÿåF„@ŽÐ>x"H§D—%sQ×Ó|#[feËìl™-KâTÀ÷ÉÓÐ/»oÍÁ0äôxG'd2ö©BoVò‘l ®ZðAÛÈhƒ¿a—ãâ×írvçCð€É¹y¨§2ítp‚؇Ô?Ëü’€¤±Ñ8¶XÇï{©†ØP Ige ú‰ÃZ»~í+û®DæX3F{zAdóáe:+èÖQ+°ô49§\5x¶¨#‰65RÈËH]Mâ9hÉÇÐ6Cêqc—á’uòýv±@Ÿš³f`eEB¹);cÎ]¸Ó¼À½§žÁ³éÖ©×_JyE–MùÖ‹ÉRÞ·”ñs“}—70oûêÁ¬ŒÜó¬;µ‘9Á¬oiqS@—w€a^¨&OB»X+Ù«§Ö¡Æñ˰_þR§..¥;ÛW•‡ÞE 3-­²kw>ÙK)¨Ü)6}ˆÚ7úÞ^ SR“_~”nøåÓÒF ý{:LËÌðoã^¡®tÐÝ&¸ c6•˜ Ä•ôçh»çE0úPoX¶ôWhËYÇáaË›ÐišE^øüCŸ.ì[‹†)žáÃÊΡaš¦i’‚ùÚØ”^C5µx&;XDžÒEÒÓe âsRÿ[XƒùÚ…FrÛÖeûÏD3„M˜!¬À a(fØÅ„lùZÀ#Œ#CTŒ³ÿDE¬C‰eúÈ×>|½Æ,üÚÃ9F®aùŠ“·Ï& 4ÄHwÀƒ•)¨£¬·_o­Ñc IGÙõ1é(¬.ØÛÛ?Z‡] ¥ ž%µ4øcÝÀí0$å[)š}ýLt\çÚÆçZéÈÅãÐérÑigÜ yƒ•rZ…yµ!¸ tO8p~fQèŸtF%òb¾¸ºŸ 3=0Ž»V'KŒïtæ…]8@ÔÚˆý€[x$O®¹™Ê¬»ì#ôàÜjE÷ 9q`^ Ó³j*%G6ñ±Ô‹ZÄ7,‚âÃæfnŸ¹©Õ~ÜsM˜šòßÙÅ~†¦9­:´› ÌNº5aã’{¬ýì˃ÒF4mº>Ô¾]±I{ ¾Î¯À71­ZäFå,*æ;wÑwhv%ç3Fvx‡G:PÛ™Fª¼ÅšC;Dßâø"í$üx¹ÓŽÍ7’Tî$ЃY¾­O÷î;¾}#rPVœtŵáC‘7þ/ºÞ5Ðè×}®Ña+vH'}S>b!œ¿“¶qŠ€Õ#bËóµ„xt8-^J÷VµùÙKCÿŒœÈò? ŒXu¾ x_0>ÓÊÐëD´ü Ÿ…„2¡Žä9ΗÕm OT<Û¢béE[„HèwàîjvxÀqyG aÃ_@-´”õ`†è’ßòeó8(<Íc;fÈï­KØðœãxÉÓäÞ*™ ëgÒ•ê•1Zû$ÀM*˜âŸíÅP…¤jh¥e5šŸà.T"Ò>LC›yÀA9ï*•ÚÙz`¸Eý÷ƒ©B»]ç®ÎƒV…Úˆî p4cÏC n˘•#(„rµÉ] *$îªfËÌ nÂkÁb-±Á°>YL׌/(Š,`ðfaÙ^ÙÈž!‘g¥ï¨]=Iœ öНã3„í„,ä–³ÄB‘¬Ñæ=Æ|dY”$_/îyö#Ö9Êyx‹3'_Ï oqà„|¡†JíÏ×ÄÞ&¦èV×C;*Sk¡±ös0ÖBjDv»’@'VP/âN»Be2ðT-X0ï%–©5£Ž°S ªÖ*øºÁb9Œl¾- þäS sSþøðQ›•1…¹¨ƒbàî@ ýERãÈÕ´æ÷¤y¥P8C2k•Ç£±ý5WÆ8ά»{ƒÙqpõLî“kåN Sú˜X0Ê9·¸ý©Gsã¶®AÄäÁ×›™§ƒ]<õ0.ˉˆ´„íØÿ4 ðˆñ^Üod=lý¼šž1|½•ä`zõÐ O&Æ\¡DÎÐn~x»P¡ „Ã!p,J d€"ÐS ;ŽisN-fõK£ì:–)Âø¯Ô‹ ,:®€d)Ø9ÃdRÖ8®¬º,õ[gX÷êXÖœSÀêÀàÒ&þôpû}8`g+@k ¬<4gût`TŒ_¾‚n楊½ï-©WŠÿè³ØBoàµI!y£Ou!—Ÿçì½_§^‰y=ñÚºxÚK=ƒÅ¿Y0:È&Î`ÿ{máâ¯2°,Ú+\?)JG[ZdŸŽö–±µ#*Ô R"|)¢§½¥§Ž¶áQzÚk_ÕÓž=­â+zÚÌÛ¢ô´×éi¿Ø÷ïô4Ç><]yžvëWô´§âÿ“žVÍ]•lÕ䩌C ~ Wª1JhÔu p½%óØ‚þzZX¡%=í½ëô´ÊÊÊB>sœ…?<ÎZ~‚­9g[ν'Ï«°L=$ùgƒô7H~Œ(š—ï—ï4.÷ĈˣÅåÆeôdÌ Pwï®¶qKÚÑ}zoo¯é}ɇÛ*iï—½¿gIø3r÷þw_ÂiÏ6G5x¶ƒ§¢/þqßå»|vä­Å‹#7r"Wˆ\Ìg[#7R#7FG®J‘÷úÑ•‘V½l¿¯Ú,þïooœzTÍðÿK:õò¹5A\Œ‡‹'f,ÛŽAó®³ÂTqcF¦¿Z6ˤÒÎà ¸7` ^שÐ%ãü%l~ZõUÖEâŸØá®ãùÚÆõê‹Èì˜_£UüVÉŠÄV1%¨])– 3†/\¬æ˜òØ~í®¾G‡4ÇÅàãsÇ}q· í<hÈW“Óä:.Ž:6àx×ATõX‡<¸tjŒaŠQ3¯ÉId föÊRéqðE—§XóªýŽfäV¬6õ‚ÍùWX†±<ÎÊ糕¿ËÕœ=*Æ"ùÑSS1bêQ%–uXŽI~? `¶¸)¯ˆ¾ñè ¢oäáÐtÄÔÏÍâÿ]µÄR†¨ÙR(¥ßU=F‰W³‡„ªÙV§§fö´ñENJ¾Sˆ'ûÐ탴CÆÝâ_öÝQÞä澇~Ýÿ¡ç£’|+H˜÷Ýý i–pŸË#}.ŽzèÞþÝOYÃÝyè–¨‡Ìýòc½**¡ãôÿ©‡jþcrÊÔ÷pò&§<¼æ3\‡_±p#Q܈[ºlÔb ÷X¥ƒD*Üås*3¥±B‚ŒÈQ¯tH;ךº?kZ5;s5,WÞë:áë5•Œ¦bŽv‘ûUd|L;‘,Úç7ã6Š™ðÔòYVS‰Õ${Ò½Vùîò¡Y€øŸc<<÷ØÙäÐ>h®§iã!>§»mu±Ô9þ‰) ‚7¦K«—>¡ÇȉM1¡½¬s¾ÈmF¹ž-òØÊüí;—ÁÒØ¿ˆ2œëë1-\=¨Âm+‘Mq¬á˜Éðül_7¿!ѳÝiåÓù\4êïÖNL¡-"fZ„™ËhrÇÐõáP­‰ ³a޵éN»|CxŽªýL€3,„œtKô>Ä9œê˵­:ù@ǬQ€•”óiÕ‹ Yk+¬9+¢ÃëUª|¾ú ËñšïÛb‚ÿ³4c*~/[ÖsêÄ4…7äˆè ÐSqÜ8·ª=”4̃g ÇÛU¨Æ¼m®írsn§¨¨:g#-ˆ³Iìó1‘dEÛ8€u³ëœXa®œCâqngûß6¹k–ƒµ_/ù‘UÓˆÉC¦‘ijìÈÝÑ ÆâŽZ²Ãq…Ñ·£Á¼UÚá‚NlÕ½;oeL>(Çjyú½z®ÝwSfÞåë6Ë©¾îxyœ¯;khè²Mûç¹kÂRa÷葨ÍÝÛßèTÒNS¼ª§*õJètÙ•GÒ†Xö>²|°E¸XY³vϹfÙ©úŸÈI¤ŒN ÷ö}Çïb©sÚh£“€WVx?ëä8$þêkŸ8†û~߯’ü¯š —s€M#ï,òÕÞà;w5µI}xœ+å;×ñð.ú ¼ï5õÕfÞ’ÿFÑû/rD-ãEE"Á²5“pÕ‹¸¿6'zÞ2Á H'󥽨®ýËs_jAÛ0"OŽÐ_mÑóøY­ìÀ˜äv_Y¾Å×/ÖuÞF°&›•FäÓDFU¥´«Ì°@l”ªŠ1WsZ's׫{¨F+L§ðl™1µ ®æ¢ã ;S©Pc®1ÎìÕÔ˦÷`&@߀jµTñå`·Y `&"LU0403Ç#ü"œƒ9è‡oU-¸Â‹£b¦Ó­$"NàAß°¬O›°î-02wdMw äêù:ít})¬_œi­ÿ @€ÎM¬3,þ@’{xñ‹ÅO’üHŠWØþ Á³ª4 žê0x°¯¨eÚIí­é Sád¤Â»`Çà:ßˆë ‹‹}ìŸý›uDb,–¼u5pZ9«*DùüÐ^”u“Tﶃ–Ð[ŸÖ)VÏiеûÇcpTJ,'<8•êåäa]cíX-«§#Š˜•tŽk pŒM PE©…W1’Ï9…üýñœXÄïňE<.Þ/Öñm¢ÏwÚp%W„éOTû˜Æ€ pÇ ßô²ù–9rŠø6j(KôMš#[gÌ¡¯æÀ1åDøl”Á§Ç!å¶ÊƒV´ƒâª¹çb¾gW+ϵc^HZJ›& ÇX6ælY*ù=ÄZùcÉôGš·có),ßJgVY¾E¾‰B†ê{¾ð̨}kìÇB·qÚ±˜6Š;5­~#†­‡öR½‘m;]£ˆ*OûyEv°´ï¨›!VfPÀ ‡—fY4¥§sˆ{tìÂ_4„vuz\ÍgcRO2¯ÆÎ,¨åv}Á޲nv¸¦{LMObÍ•øÔÚÔý ‰uKå±ÈV(²uá\Oê!ìá<¢yi/ ¤7Õs.rÏÓ)îÑæR¿ÌÝÚB‰ ,T}Íeê¿;>µ>õh“Î&w¬Y*GW«­é‰UÍ[è¤ÖÔǤbÍÌ}८^®4¥*ðΦZæ®<ïnW§S­T3cÎݬù¥]„+ì(wWÇAÏÝ\Ùm:ñôÔu%õ=€íù5IÜÝçnK=šŠ©|4ælþ\Ä*{Zã’g˜é”•fÓvœ…©3ðËl_cÇÝ›-¸‡€yþêAg[0¢l¯•P¸·ê¿ÿýìÌÑĶ`¦6v¼+ÈN°CG{kzÆÔ„qR?d{0NÖÔÅ.—Õ $Ù¬2ÖÙUƒ€›{hö³=ÃŽšÛG Q†À¯>|WDauú½¦.Õ¾Wr“éCÕú×8_-½µ{—pøª›î°-TÚxUÐÓߪl’ékAÓÞœúdê"3€í± ôÅX‡ûrÍåXõíhèPUsQ”š}€L¤7.õ=Õ¾Sµ>ÇN3¢–©'€‘Q[PZÄ'h°× WQ-T5ïd½©YG6&µ–H½"ËÞO= 0À‘ÀRϧ^A0OæjAýœJ»_˜lê5}È÷ ÄÇ?aè«SΨöÕ|ÏlºbV“ŸS§üJ¾šïpß7>MµþOl¢ÊßE´à“ݺŠè.?ÀøÛ¤âß´Ÿ·-†Ó=§vÒ–¶‡–JlòÓ‚1,¸ œ;.âUýêR~…{ڧפò=H©Dvýê”¶Ô‚ú¶¥:­Ñ×j’üs‰Ç60Øñ 6ÎaNd¦ü·ä Ê1 2­¡l {Üʤ_Õ*~Jþ±½a–å”o&½«o£¼ÀlåÀÅߊÙ»Qi‹‰XŸ˜ßÄŠÈ}iÓIh:ðÏøf1xKèE"Þà„È×Ðî6ƒv·í:ßxSè"mð ÄTáå]$ñ;úÈÕ D’ùq©‡€VQNŸ önvôº¦‡‚MOñ„iõìJê~ÖL´š – {_ o¼ó ×+±H¨¤öªÉ@¨iê”fîÞ¦&ïLÝ‚TjºGÔÊw™*/«Và„À76ðWˆL=/·ý›:ý!!Æ{^ΉWœâ(0%̙ڷ䈕òPN¨ÀA‚[âÔ´‰Úîe)r8­3pZÍÖ×à&•c¿ü] Â|`î]Gan÷‰²§€^¢Bi®@/FoÌ¡w-[Äj o‡v¨{úγƒ°âTþ4ô v!õÔÑÕ|cè`ó c# v_E—ïPé( #Ä= ~:œ„0ßÑ}Œêq™4¥ÙAI'½Q›1·W_ÑÞƒ‡6‡ °`äΟ¾Ä$dšºAßþ8_¶"å_C,Ú§Q3M8¾«ÉGEòá9ðu²~PU=@û u‘gWîë>¥ëâ±)eî8QÙÿ¹´Ès ÿ—ç&Fž«ÿ¿LÐǨj_kìlª5…Ï @.IÔÇZ‰k õ;œ…>XƒØ˜Ð—ï| ¬:ôyCð’Óì…5×C½º¯;áT°×oÞ¿‚·ô:ÄBÕïhøÐÛïàÁÅÐ_ßÁš¡?¼3>^o~2{j¥¿­ø÷åÁè”NÛw.!­…A¼CçʱZî;t ·m1Jƒü–‚×òñZáÁ‡ðšåÁñÛüv~+Eýf<~êÍÁ±Ô \ ޤkØn0}ƒ¯Á8ºkC³5"ªÒù…¡m ïœ;ß¶ Ž‹ ÄèaþÌ^‚g§” ›áZW}®‘¤"èT°Q9¶².v챪·¢ÐÙÙQr?ù<Ö¤B3뤌H²%Щœg½¡éJG¡v>©W_Ä.¤8_¸ó«Bm\* ýT{ ^ÚåACYàeDÄè¹Ë1¦Z„'æ„–*­ çɯº“ÆàhþÍÀcÅõé4t´É(bBŒÓªC]TC¸0/oe¢öÅ#Xw”\é5q†»‰öÏÙ)Œ6àKÆ™«<Ô5;Nx(ùžûU¯¾?*ÚÍ`AS'ÆfN㔳!˜ÇÀ¼>¡m¯»¦s sµa‚Ý+˜âBUM^%b>þ¾öðw«oÚ·•Ï9ã­lT] só¸mÆ™~ywµ9\­ò$tˆz°ä·²}ÎF3SZµ'«KÍ ¦—Z0rC©‰à4òvW£ïlGêt5»Z}Õöš³±\9œm¸Ì>½ø[DèMÇgㆫÒ'"s,’ÿ|¬ˆ ¢åìmLJë,êGÈN1o Sš°¥Í¡´Jþ©Y+waö*,»Ë3Ïò9›ÌNæm•-ès¶„ÞôÁ^…f켟rµ¢Yr;EpW»Ã¥É±É®´³ÑÜ©uΰš¤e¤cOci5twfâŸ"ÌàÅøú%UWùdžmvÔ2O³äGßò=3¬o˜ä»|­½åÖÒùV_È Še+Ö{Ü‚@µøj,Ìú³LæjƼfóÑ¿ "x`gVßû3°ÐIH¹¿ô!«‰]Ð]­4ƒõ7à„°À'ÊÿC2ªdséw­½¾v«®hÚ ;)t=(ÚÃÝÜWQ`­È²úΙ`l|­e@cy–•­7ã)“\ ›kæ0šb UºÜÚk$øH;*¯È¶V,´‚eçû¨wÀþò…V¼Ïsé}ä¦Y)ÍlH¨†zšªD 2®D®™{›±dÂãf‡Ä=G|5ff}¾š7Ûo y-Ï  <³Jkã?=£;£g4 &‚3*°`Úø'Ìl®…fdf£h›õëçñ„¥ô¿pf¶”Æ…ó‡ 3,¡-ˆÌÞ#\Þt•á-}¡EÆò_Á½¨œçZ‚;Qq/´_3ÎC»šþ3 ¸F©ƒ‹¯EŸ»MæŠ5MG 5¼ÎÆá—îÛÕCˆElaÁÅᢼ”u¢.0ZŸMÍNMì‰Ð~A!&ÑTÚAhU´§¨ù¤€˜YíÛoáƒ`ÅFaö: Ëa¦ ÑÛÆo² S– 4RÝ R¡3[XôE^4"¯A&!¯bÈDú°†¸ }¶ãæ“+–Z;÷›ä¹èžÆÝvàõÎ$éW¸ý+áÖ‘gû›Ê—Z±Rxéw  Ì•1XÔn!Ò[ffO`Ò e‚X¹Qá•K§Ò•¿Öª;ø¾kûðÛ»}rÙœbè·jàÒthuœ-m/UŽd%?î̱º«iÕF¨W×Q_;³WSàæªïÓŽ‚Bmê Ü$ŸX,g9P›³âæû1YÛ¦„¹_òc0ÍÊØmÊ6]_(Þ„d¹4Ÿ*4©{p…ZŶðAÅuê¼´oç[ÞF·ÌÕ‹¿SŽ…·? Wšµ ¾ìb!«‘S¤½j4ç Ëù”Ù‘ï¯éô¦ÐKÑUªß†—qr\Yå0y TmkR¥æÐÖ|mÏFLfJ÷•î°â Ìwö?°òPŽ6Õv¢˜ëÑrJXMB¢ç9ïϺ¾(2Ï…Æ<·à¤ò´_ÿ9<ÏŒyîÇyÏÓö¡È™´¯]+ü§Ý@å*)RýŠ¢«¬Ž[å}«µdœ3x^“çû¨#_ó5éúÒe9ZñT:jGóÈ×”£ [¸¦!ã4ÒñlEß<*ûÏãÔŸÂóxPÝ‚mòVœ€7„oß²ŽnÏV´W7ÓÖíšùlXÓ3u³/uõ2ê<_›ÐõeüüỺs$ðI›µõáo£,«ÕÉŠëãÏÿ6XãÿØü×q›Âû¢aó¯ýaóƒ?þ[ØìýãW`óil×öÁÆÏÿlîò#:~-lÆïú7°ñµOX‘~ÏËŠ.x3s62w8õ¡öà´‘²ýK%ÿsDœùÚ϶â¼+±.ˆÒ¨º›òòµG6µš“¸Ò²Ï´Ð4Þ@Ó“Ìä®Ï×ò¡¯…ÜUh¨Ú/’ïÔ•zíçï!ÐÇŠ¸³^¾‰ß¼ìÀiå[l8~¢Zü~ Xž6f šŠŸ‰l¥gÄÈàÚs‹M1làtÑ")€Æuè¹×¶¥ºj+ñU¸…fÔR©èÌ—¿ÅGƒI^91_»ñ}\¶E åá3~³ŒH>‚ /‚ÏpªÔ›ñb(ˆ¶¾ùò  ˆT†–]‰!ý“¢’¥©yoÿ²+ýEz´>[ñv‘¢¸¹A?±WıÎéãä å±Y™]N©ˆ›>M¾Á_­|v06&ê*&ƒF;¹".tŽßÓñéK–¡V1¥í ó ܘ¾–}PîüPòï*¯0¥uN‹Ÿ·#}Êéw©÷ è^+àût¯aSIþ᱆¡ Ó1iÜRD«Ã¥að¹Ï«é²T <­´W¨ÈtqaÏúzM«§š.Rezw»ä_@ŽBeTe^’üÒoùüôiÊ¿‚wÁøÒF­`cÇe1Ÿx©÷CóAçIÉSxÐù4è¹&1h¼7Þ$Ý,ÝLÖM3fAíU }ŸÕ×û1"¦èk ô%¯Å~Þ‘—a†"äJ#ºN‡éš¢=Í(¶ô!ßÁXB·x¦4†NU˜‡àÑ ˜‰–e€ñt¨,“Žù4Ü•>Ñ;MùŒµNhºúDy\ýÌ÷(æ~€k£²¡›iq(RëâÂê¶Srê´êà÷àmRçšÈÔ7 Sšƒ#Pé§1Ø1ôåTDƒÂÆ?àžFÃ8Gz4ß ã¨‚ËGaï†þ=oà7½Æ8pëÆñ|/Žã$Ë0á8¸³M ¤5Ø|íkB8ÜsíëBï ãŒã½þã Ü ,¿fŒÃsÆQ€ )ghS¯Eô&ûÛW{†à‰F ;Xò1W†Xhñµ -VZÓ ·µSŸ_£2²¿1Ãí"É)èùÍø¤j~å6ô ¾{äÈ‘®sìhMЬÚsk5ç@Æâs‰|8>†¡QK߉ù"¡,¬Œšs±uñ¸‡þM#¼•Õ€mc‡¤uŠþMGßM;7ïw°<çL›‰9ÛÓª™ä«3;šë2ÌÂ#m ˵®›YF‘83Í«.fÄU;FÙõÆJ/TÏ[ˆÆÄö?” ¨.Þ £@Ñ/‚ e ww”N‹QF×ÅwÀ(ÈÍ5œ8¼ê³»d'Óª¯öieê7ˆ7yœ”›çû¤£€×ÞŸ„‘[q”å–\„²äÓ¦M7•˜2³DÀœjÝ‚öQ®Vü¯kÀ&ƒo\H’篌YñFÆ`‹N¬iE Ì2§@›54&æ5lÅ“|°`­T©G€1ˆ{³9Z‘¹WŒ½(ôá;ã ¿¼´†´cUè¹ÓÞŸGùrû⃑aÝ_ s è,€hɶ4á_µþÊë*6¡¹ñFlyà}ø­|Ÿ*ç`-¡yûbé…Ú¥ÒÎ N¾Ì.Þ5Q>­ÔJЈE³3uBHÇaœXŒ"ð:5D¦#^„ïÔ?˜óVhÅ7`Í>g|%Œk†Ø‹³r¢Ñá· U ÜÆÝ‚c5tìÊqFƒøƒx4O:H¤X‘yêÇ Ë÷`ƒ«ýNv…®ÇoÈähÃ&â¹AÌ&ÔR.ÐzÍ8Â,?ª¾Ò?òs4ÿX@¸ýË@#(’3Õ--˜f—ŽêZô8"}>¥ªØ<7ŸßS 3ݳØX[0¼/Ó@­5F4×~Û«/…>•?’ƒWòã)ÑÎøgááXQ'§oìƒð îÁ°ZÌ“-ÛŒ9äi î2Ò8ÈYbD(hiµWg‘…Q'§––ãêÆÖ•¢é:I©“áâ"•–#±šYw°f³b&`QZƒè€)4¼Rÿ×kúŠEÝá1ÚOæ~‘Þìù â„]]Gy ŇÝÔ­ˆbË|ð§àjX1Tsõ×#9‹cY£OK”þÜÌ÷`KUN7 |¬…&»Pòc¬ûJSž˜³˜¦v®‹LŸ`&2âc¡¿jÞ\œ®@P@ŸÂסÊÙA¨º†:ëökF=£›‘Ú²Ù+ÛyꥬeçÅ a~§ÃâÿŸ( ‡²n”Ë;hIJ{¼òwÒãtêJµNZ9.Wóî'YÊ*¿ã¯ààã×(³i }¾^»“jo`ßjº·$êÞÐð=ù÷¡_?äÛË86h‹;\›+̃P„ì#ªr$˜>îð-ØA¦ã¨|"|ûc%gBG™vLÞ^Ú3Qþsøf}iÏ4eèWBÞʪ°šö¼)CQÆ™‚<%íXÐôÉÁs½QëÜÇ隘Z ƒp>BJ¥å t J² tàU›éõRà}„ÿj¢Ësø&Lî—vÌ×­«oáW9% ¸¨2’>Œ»µÿ }ÖQ3Bµc~¸vVF»¢ó}˜ŠU1Ù‰?‰¿ÉÉÆ $ÿϯF§-÷÷¹À9+®ÒKs*žA”÷+½+g¦Ó`äi¾}ô9M 1稯 ©æ‹aÁ:5êÕÓ_"¯…)ÈD±c…ûî'f,OT·àãyê|¼p]ýêÃÉQKTĸJ@isxùÏáõe‰±ùzt95pŒ”w%E<ÁŸ%ÐåfëÊêÄ ¼a"HIO)ª‘–F ¬T8’ ”ï 6ôb˜Eç¦AS@¤NI‹ þ¨ïÀ Ú²dš ðÈEr6ßs€T’èƒkÚšOÂä¼L¶ˆçò´çR æ%˜¯ücêtŠ 3P$þÜ7 g¹Õ ]òÛq{|¤PUñùÜtç«ÐþÓhÚAl&ð$ô»|í©Õ½‚ã/ êÕpu“ºÀnƒQ\åôõÔK¸õ)NÃæ{°¡£áâïäñ|ËnZ*¼7e ¶ËÌöõ˜]atwõ;ÁýÉMÀ#ŽI^C„I 1p&øî%†1G ÞסÜ'7‡çq{ocøxž9®ÐÌ:V<‰†Ü+ƒbbC‚W„oú?÷ût_¿¿Ã ŽÔc.öøjd—µ‡ O±ÿé½~jE9¾í‡³±Òz0Ÿ#RGqvEÐè²Ì¥Sc ¾õSÔsŒg_Çg'Îu$-ؼ0‡¶‚ºÄû™ãš !§ùö…u‹Cp›bÝÚfPJŸA©f ÎÀ˜‹Åæà殈Þ{»¿w Ýí宋òàºL‘ˆÎmbýHg«:ï”…W Ò [„®6)@θý•ÜaL»ž1åcú/dL¾hÆ$§‰Çp_òÛ¬ŽOb ¿–z/‚mÕEÛPíz†™gÛL&>2pŒPZù/ÒÓüfÒÎNËOTð(þôÃtO«¼ü1œU±_ÎÄÈpÆápúƒYú¹§]Ï¢ÁÄ…C:'¶¾[Wö5ÞôµÍq3ÌÓÊ7‡Úß üíðÐnÆÓ)}ìéöþì 9ÑÄ>|bœ"!««p]¤áâÙéßÄ|ÝÛÏÁÛ ¶ ÜþÒ=¾z´1Mƒ|çWŸù.ÁÆD¾Ì¬ÊÍv_ßÁïíªý>ß–õƒ_ž6¶È’«¯¶ª™–|æ<¢ýq&mÕ-mug›‘n Fz¹¯‡¬¾§áI^`›“‡‰+™³Qûa¤W£‘wSt=oA£ÕøDÀ=NTX € ë¿'†i°¶×Èu5fxéC×¹I»|KdÌMýƼ9Ès³öVTÍý{ø;Ò÷Ú0÷ù@ðŠíæ¾q>aì9Å[jÔ9æjá®66§ï%3r±d[nä-îã-‚fƒÇ®~í[ÞJ¿Å5ª&¡“ GÞú**5ÌÓ‘¦ƒµZîü”uÂ$[+¥u–^^[îúBòoŽ¥R±i ÓœŸJþ‡Ã¿ÙÄÍ;ágZçt¯ä?a¢$íŠö~±ú‘ü1Ež6|/%¦~à ÑÁ壃éQÐÖM¸òrЖ]_r >,Çe3Ö>Q­I¨pZßìí¢Òѻ݀Å:½5±iNÐß ý+­æ4Ðó$òÙ‘âhNë mó7Óán•O‰“vhXº”ÆBõÿµÈÓ§)GBúbrÏž#;Á>Yá` \ *3È0¨0QõÔ~u¬ð ;NÊ}žG™\ U¿exˆó€$AXƒÄÓÂ:"ë-ÑÕÞ…å¯Ú}µÖœbZsa ¯"•ßøœ»’1®ÿC¼àMŽ>~ º¿dèÚš¤Øª.¹{x¾6é´Éÿ+ìÿrÒÍû›Íµb=H¥#W36j0µbñ{ÐõÅŠm«}åÞŽÒ'Š*d|0>žvìh«ãPñ6óy{¦ãЪ.îLæJhåÅfyº®´©Ó9hLº’¬>œ8¹tG”OÎ×>ïµf™»=Pûé.¹AEÁ´r¦û·ˆËe>®­Â=ämïïàñÁ5ý[ e)ÍÑîI{·ŽNWmFwãw*âÒüG1Æ á‘L<ã«|©ÚU\©<­±Yx‚‹äIÅaY³âQa¾öªë~æ‹k8–„hЉø¶Ì1U8ÙœÈl]Sþ2B¯¤uöÕHíÂ\MÜ¥q:ˆæÝBô åD·øZç³I•ãLÚ0Ä´Ó˜åÜgVšr(¸EÓ?Ö©,š-h%3´KûÁƒäòjl¹ƒ>%‘Õ)χÎâ¾}pZ;È› èײËBvî tý²ÏTt´îlQ“§®—¯=þÃT§ü‘{Z‚óz£AX3X»­ÇØÅVú¼@tcHø†ü·ÐŸ#o6ù/#jxU 1^ò[@ÏOKøFxSå0òò}ÈËß ßjDn~8ôû¯ñûÜöûŒ~Ÿ$Ý(­­.0Q4¬P¨P‡Çm®´UŒfµ1åžãÓœÇAm”ro[…äoP,Ð÷m0º[JtLÁAÇ‚©¸‚_‚£ÑAf^iÒJ?¸F“ü´âê`&PŒI¯û5ÊDèï7™Y±ƒ¦Ö+¿„g/„^ŒÎ!«º_à^›QÓ¥.€IQñ[ž®XWÆiç5ü RùŸÀ‚åÃÉÄ:ÆÜ•ò÷9<ézŒ®tÕSD ÐNîªäÏbv^VûzGÓΧ5¨QnÅeÕxãÙø—Ú§À§ÔHþ»ð%îJ>Çh`®JeGZu—3ETN™—€.^ÃÓ}~ }™™y6ëJV¬t£·kŸSa:æ¬Ü5“öQü´Í¸™/M‚^ÙÏ1ÉÇr¾t‚ôÖ|Ûröóy88W)üšPs6ž¹ü¼+¨Slé÷I›fá+fN33g9wVJoUasuÊ5ùË`@e9ǰßb2™Ôî)¯ù4ž5c=?S·ïl‡c¥BÅí‘&µŽr»"pp÷-¦x£|Ç ¡ð8_w,ä4å¤M¥ôÅ$ùß´à—XÉÀ/ûSÒ_ÁçV½Ïéðòþïãn€J \÷PoSR“»øÜK<1µÆç-ƒÙIAÐJ/Á<™+cõ{nŽVö#ÌZ‰~4 ìZ¶ñîtfàê$0Ýä_pãaüÈÒ=4l6T ü. TØÍ` –`òɸ»Ù__6‰<â3F”¹s3_f㳓‡Kîæ³Ìü¾ÔS3wo©e¥·2'Ô´Æ«v‹ƒŽ´®¢ÚÓROÁhØO± ¾ÀÊ -Ž£«W`òuJ¬©žÑéÔ×Zp‹iÉ$½«yì~Ç+x©8Ó§ãâê;y¡½«=’ÿ t ù|îʘíãá0×YvÀç7ÅÝŸ%à);|LÚ´$! @¨üã«KR“;g$Áƒ Œt4JñĈ©9€ìx\R¾6ù‡H.I€Ÿg€êwmä„ Z*(¬ÜƨØYnk¸òcΆʉyÚ}ßëÕ—QŠdùœp6Æ_M©‹GŠ#Åkð:ÜQ*µW‚×ô…XôøÂ’Ç¥a0N¤«º£ )ñMè]î­ä›h5€™L³ÞʸDF—ĸ°ŽÂÞïX<•Ï£Ó¤¼Ñ×WçDþ¯÷Ö/”ügÍbU³È×vkp6íj!ò¢ÂeÎJnƒ?¦J¤®>}Äxn®% O4ú©øõ‡|¨ï`æ£óõŒ•ži‹ƒkÖŸúj,|è¼§” 2ˆQˆÏXC ,Ü´h<cî·¡g| LšÈ³é¶À\—MY(Œ =s;6õbÓXf~—ÚfšMͪ¾Ã%d%¬ÀšÁ ìáæÙÿ±¹š'…›Kÿ±y4O7oŽýOÍÁ´)˜nþÚl>š/ 7_ù›/Éà?=@$ñÄ$|bZÜ"3›N UñÁ’Eû½–k0»ùù*Ù‹XêÆ÷Q¬Ç fÇ TŒ/ùZ-øùßøb fµò3`ûúÓùR´÷ĺìéB‡¬ì,ÃË€!sL‚×/º•2:硘ü5¹¬*;}Ø6EN`7A=$$x‘ý”„Èðzª]ÇØ/Q˜Œ¥ÌÑßÑE¬—LÁ½$žFi¤¤ñ{^@ùÕ© ‚‰EBì × eÚKã@РŒ Pöüú6ñë·‘•CŸø¡½½¼—ÞaçY:+‰9ÚÃ_Ó‹¥Hú¥²U߆¬A›×—íš3 æÀ˜+M‹ÌA wáóOÆg‰ñ9Ãø`|¢· ?a|>zUì ÿ$õ¸ïŠT56&æ±ÕYjò G¯°æ®Fj%KmfÖÁóW°õ5ÑzPÕ”^ý'«‡ïÒ{Å…Ò¦FhP5»k ½'½U‰29o¥E ?g‹OÅ&ÁYVZV<SÑbÓÐY8%¸—Ðh„©‘e[‚ðXZ¬ŽßÎ]-'FL¤f›¥·–N¨ù(>_ë:BŠ–|0é­9¨1p¥œ‚Óë°Æ*,7Ž¡”,ƒ/ƒ6ºë‚°O/v‚®ª¯¼å }þÍ×LßKŒ Ðl×%Œj¸ŒgPïA!LJãß9]ÇÆž(ІS[kð!¸ï;›'šŒíÈÑ®ô©ilvÓï}Êx//¾4¾Ä\À ÍqCÁ>Mƒtë:¨V1H^7ÁèãL¬ 1%Îégeˆ?Ž3Á8ìËþßa!ÌÂßSáwès,éáEî^óY[`YÎ~6öî>ÜÃb—âùÉ£âܼ zk-"ŸþœñkÍ)€™7Åay˜a-ëRW'±gÙâ²Ây.(S½:3Vï::¶že·ó¹¶¸¹6¿F—oa—øÜä‡tÒ­ºŽÞ2×ìÛƒ_Ml~÷ê8)ŽYír¢Ð¹L|n’ïlbÍÙØwf|7·øxïœÄ íÁ7:afÀÌ‚¸‡»ëÅÿ6²°nk¢<êþÜåG¥ÀSèIMb{»åNÔé ó.é‡ðÌq‘Ï$ßBüñ!è‡Üþ¾4€""™yËW¢fª¯NF|*Õ8[ˆß×/&”Hwúw}û‡È7Ö o{§ ¥µeÅšvß]´gtå’àWáV»æ?{ªz8+ƒÓ‘¦ãʺúù—¦Pie#/†vl!º—ÍX$ ™heÏbV‘šÓWk^‰_Áhdû™û€vn²+ ¯{23IO?A ö}WFBƒ¥@˜ùßv“8F|þÀrß“7ÄItÕ€ægóuÃߘèéå¾õw¤H§Ié<°œç€‚~ ˆTGuú ®XÓ6¥!Ó\’*µôÖ!î©T§Œr\,îK7Ë7Io]¨ù$”ã8¥ÚqqUˆ;û²àúÖÚR”3¾µÉq«?àùfõÉê³DQgÞ ê}=w×@uâ*:UäÆ@BopO½´3Ë^Ój‘v®M2us¥ž¾ÏOæKm¦úÀieÞDf‘̵śXÚJ€«vO%F½¢ªYçlDš/¢ƒ˜°Åflôñm¦ÕÛ´2¥mZHËîëNQ,Ì[OMµ ψ|GPqt5bô”ï“ße ‘sµÞ¢^}áÊmã0ëItÁû!·ÀŠo(ûäªþ`Lê%Ì?‰…­”Fß¹æ®Ö–Ãëó)=}£6P¼ÜÑ ¶’&^8ІîjCb/.½ËöDELvÄóS•»¦Â &äkÙZóç¼l廵Ò5fXô.hXº&Þ$Üõ(6Ì Ù| tC^ªÄK xQúdb \*@\½‰ôIè‚—þ/a(Å.Žßz‰¶vý¿_t6 ³ Tïú#Q ž-¥c¥‘˜tÔIøÍµÇÖ¸›É§ØÕyI7ð¾³WÁ’§€hꜛq•ŒÂšF™M U>Ɉ0Š£ÖQÑ2JQÒWÛôÕÖBíݽzÚi¤ ïf]¨ B¯I§H=ɇŽ'ߺ_QPb@‘¯•隸‡Sf>˜¾Mù@T¤Ô¼ˆUçhò¤ÒÒTo)ÖX3‚3ˆxt%¹P‹©œ›‹øÌ_Ú±HÖH|¿ä· á" ú& 2u ¸/Â3£ÇD¶ä,z"€6Æú2e¼ª¬â¯¬!#S¡}OtÄ~ä¾îÁ¢*îí>'f±D#€Ìù.?îJ:r8úº,]ŸÅ Zˆ™Ô0½ë¡}’v  ›P¨RWJµò¿c¼W’XBàX‘,ÁµÂ<í×Tˆ6‡þ¦+›µø‚^=ô:L¾010á9f;€{+ã´Û6d¢2°Óù[ÐÙFÒp7kï¹{uc©µç6‡I´(ØExã£I˜Œ”Òñ`¨¹^88sš“[½Î÷:œ»^/;KU*.ãñlÉÿ úJà¨Ë‰ø L;°b7à¦æ¿kçb·Ùf‡³œ‘ÓCòãy8>4n8b§ì·h‚¸X¨ º…³Ü÷Q϶0ªŸ"*ªˆª1u”F_·â=|ÑM· EÚ„ÊÊ QÅQd–‹8=úù4Q®¶Ô£ÜV€ W´`—n£mUNcÞŒ¤gC­Îc«÷nC!ú€Õê«l\Ô}±è[E™m_RŽè„ÅÊ g‡äÃz ˜K0ùÖ½h7É?2p_þÀlÐÔS:å”ÐJâFeœZy½°Ò3õòŠƒ™ºQGdf «ê¡)ñU—á#GOC"óƒF“å8¾ªÔG6óWhqx´AòЮ!ÞÑàß)PäQØDE=Ú\É‹¼"Äåì—âklW†›¬\ò4€¼å°ÖoÂ2½f[íF<5s6Iþ´Í•ò¸{’=ÝáÅ©:SZä±i»™1Ø’_¨íyňâð?í³}ûã}½që?¡“Õ¬+ã÷6r÷‘[Ü™òè ×BôcÒok·úΦÈf !ÂfîFîiâsíÛ:W;siÒ3Wbè$qœWcÝ5ÚSÝQ]²»šøÌóSÒ-ÌÛ&ùNÄ`†tb{0¿é–;Ÿ‘ü/™IÒ—ï¯X©æ7–ö€Â^×Ô\ñ7ìug½´÷¢î< íÅ´têúFµ¸±"IÛXzy@ù©’1”»ÚœR­û@0«ëæ6Vܾ½º ú¯¨f4NP~¨äfÌ•y:SÍ;U9£dG…Ÿ¹úcG—ø;Xë~ŒkEÔÛ{^šŠ 玭y»Ûæ0·Æ=šÃÓ.=MŒ•Dû°¹Ï>¤ˆÿÏu¥YPò;ãïÿɽm¸‚Q¶áZCX9^’ÇÝ æ]HzbÑx’ï=o˜¨¦ºRï31ÌU-ù‡Ã+FUH}0k‰Àì ß{Ñ÷ù$ÝY ÃgÊnî®F˜!Pf  Ãz»ªùê’ŒFhŠÅn<»£ ÷a…Û(€15Þ9 ¡Öwcõge·x(ö:˜]Ní S†ë.€~›ï8Ÿ$Ï`B½è3s6uT—tLbÞ­Œh]ÃÄäž6欒žF “Ï0$ž#éÐÄÝaH¸·Kþý€®7VàÈ0,ÊMXüÄÅv‚Å6îÜÆŸhXl‹†ÅvîÞÎ<Ûþï°Ø&òª~Rà8íeWñ»}½&9èP¾Iw¶qEóÑŒ“J›ô4•¾‰-=U`û¤{[ŠOqWs A¶¤ßsø®rø5Ò«1ž¾Ê‘i-y‡{ŽtäÙ*¯äÎ*>Û΋lÌågžRîñ—}óIk`§’‡€‚›Ö ÍÓhVžJk(kÀ»üæ—/±€%äòw¿ÅSÊê4KÄã¼Mâ­Ì Wæ#olÄ—ÀD2m|‘ë¦yü¡¿q÷¶Ô A»ÎÙ1Pø§ 4"‘ÕF”–S‹°Hñ,XˆŠ¤ )ø>tTŒ†ï‡I†î†®poBtõ7|eT?¿¹&úyƒéœÕÐO5õ³öZ¤ô5°è&ój¸›©³ÝÏmWE?#ѫ⬞Š:hœÔAÏ:*‚¼#©b`ð"æ-Êž¬Ã€—& ½þ7ø ˜¿ÁD=ú2§ˆè³;+q›ƒ¾àÏdL"jž>©°@›GnÆ!<À·ßŒ*M°.ÓìÉŸE[ÁM|††‹ƒ¯RÅ¢Á¾âJ¯Äij¸¡X†h +ösŠØÆû±rFiác­Œ¤*ÇMb0”'DƒÀ‘©ÞöBt¢@€c‡¶̯Ðá.QµEÞ j¼vNÂM˜'~/ DF7^ƒ)ÿþ6¿×j’ˆ ·´Ò¸ïÀjáù»Z@µÏåYëÑN Ä~Åô1§Ó îmÁ¶;Iõmv`ˆ*iÈÎ&táµÃXÀB Ñ)Å«?n5;0~®Ù—»s¢¼ˆQ Ud©†«Vš#†8¹ d±ü—T‘c­þÌ\Ú+ùÑ %¥ÎÙ–ðØ`P`êÉðëL;}Uu·ñiåÍ}‘yÜ[Ÿ­Î”t_­tWæ¬_Ý꫾Á×z5õ@Ø7ÝÖ©zÚôÉ9Ùšéy¬ûj^M®þWŽ”>£ÜÅ“×`(¦€~g¼°ðíÛáoZµvÏpZyQ`$­:8‡Xì‘Їa|OÁÓª®–°õ[Wƒ‘.èv6-TÌBÜW`cëM‡è"RxDà°é]£SžOW:Lè à»<‹ÆSñ@ âåÛ`9€°åEvJ ÚqÄýãÌÓ\oTZ(O–…èO+_§vXäA¬3 ¾;¬/*]ˆÖ•±ùÜeÑÓTg{&ÓȺaÔÚ> ¡ÕO…þfcÑ<Ìu ùÄÛqéék ºhŒj¸–ƒ}çâJ{€æZÖœõ´„ƒÜ*væ€ZœÄY_ åÞm(%^7FîÜÆ‹Ì`•ͤ‘7ƒD \sØÁ<üYbõõô’Ìhÿ.ü®Zäø*¬zrê+óCþ¸î•¦¯N1ñ›¦X sl‚9îÙLsLÄ9z^/MQ’¿"@ H€Ë4òPG$o z+©Í1“àh6&È4­E¥§»ÂŸv’È=ƒy›„ø@^ÿÀu²#‘»lÙá¶9ì†ì@ŠÉç^‹~ŸêjÏ5x\wÑ~kHI\’`–ý–6QÛñ„ß`úÚ‚é""ÊÕìÁDçqF‰>oc@Wú“¼Ò޲¤GZDzEdˆ¼¶O|à@°€ü×ÈOX~ÜiÈ› ã{aF-\2&Òbê/AN„ Æ{[^ K TÜμÁy†ø ðDËê±BôøVíаšt ¤Ò‡õ‘´ü(÷¹ŠÕ#¹'rÇá¶Ê'bK%WWެ¼a’6%Sºáókb«m|µ«ôÁeÒW4Ÿ14_+»Ä•£>fuð÷DÍ¡–ðò’å4zq1©J°É†C¸¼¼5¼_)œÏæ|žgæ›üw%rªž{Œv4^†Lõ:ÛÌ3Œ3¡b€¦ÌÄ‘ÞÊÁ$2U8Üœ[á¯6pˆ8Z®O^ñ¼4lº°1ßq­=FðŽK‹C핬1TcÑ•d]IŠfï¹y9Z!L ¡6ɈÁÿú6#c£ÚÔð· {ˆÏ0s›¯ÚÂÊ0…‚j®dÏbV†ˆe¥À¬9æ»Ä*õx eváéˆRÌIsäÓÿ&H÷Ž;š]NLM#í;šŽcû-R ÉfÙ$^lžÇ 'G¡”‰üW›±ƒ·p4ü-ó´òäŸbÉÝ6É ¢Ù)` \ÑL'ø|Ðåäâå¾õCb”ðVDBå{ÙÖòßY P¯Üy²$?]±Évîn‹@ÉÓÌ~±q£LG^w9SDêïIÕk]Îí ÙѲ³˜fy¹ï²iµcyàØ«îlñy[Lòä½o! xò/QÀcÞÒ´ÓxOÚ².WšÇ~('á œ'«|8•ó$ºonÇÚQº3™{ÛÞdé©?Ñ ‘¾áÛ)lA‘¨L+[k6’Záþ¬póïl[cíÅŒ@äèúÊHcƒ¹x}Öõg”ËŠ&D´§‰ʾÞh_À”o\ãȪ®ûÆUýnôªþR2‰˜q'gÓfŠžÀšÓ°Ò,pÿ…m£…±.¬óºu'eÅÚ6ÖV <ƒÎ m­ïœ¦V¹óLɱ¾®¶¸!ˆôÚ¸§Œõ]ÌYtI(–u;TvobîÜÂ3ÍË1l~<ƒ“tÌj¦Ú¤…¤ðÙúdî:Àõüa æÝ²Üç=#1< |=.܇ªÏieu™œÕr¦^bÎÑÔ2#ñLÍRiçyJ<£d¸SVkÿ]fŒzŠqÄAý|ŸÉ´ׇ5KúaHä|ž/6‡ŽTÿø "ÛD¶a^X…è0˜ðªáz¼ÚÃÝv>m!dôìnö¤9˜©S}§}wÕëS†jÍ¥á£êT^á•oÆ­»ܺv­·ØÁ|Ìë8ÁŽçÊó"uèáQmùéK]Eü§¡9¦ 䜾5ÈCDä3Y_±ò˜pFã©IøT$ùj%CR»jÑ‘£¯x:JÅê;dÑ}Ø+£F¡íñÓ¢|šC¯•oäO7ãÚ™(“ŽÕÑ,?“ÉÍÏϾÄ7bÞà´cŽZþ4V÷â(–ÉÏŠª˜™éîŽUç_£óÕâ@,<,ñ”þæ3ú©œÇïtn#Ê_ô-øÈx»æ©Ûäò &~?o j–u8vÛY)¸ßCpOÈéKD ÔÓ¸œ—pÐÎÄU mr.æ†Gp|5f½ô1ã§r>ôk_u<£QÕ´Â"îÄ¡hÿµëš8Ôx#£±E†ý†Ò!6Ñ5Ÿf<:Ë:÷‘×1¿7R¿ÕמÄN nÂ\ZÿÜ+MêO“1ŠM{øw×tælÉçnÁL’³ýƒÖRVg££Ë-ìI{AY-¶Ö•öL9Gûõ9ZZ}6Ôw`g9Úßá"K€¶!Àݺ*¿mþöãøhI;æÛƒÃŒ‘¶Ôδ¿æ©ë-…Úñ'…L¤IÀ;‘¨0ºžY¤¦îЮ`½—x_{ü ¾ØÎUü…Úõ”ÇI»Æ—¡hõ_Τ[9Óbxì957ÌûHžo¯˜WÆjÿŒ%ÎÊ Ú/Æ÷êo¿ WCÔkh·øØ s `Oø+ˆ‘+뜖ïBà ëÔœCvÛ”k&|÷qFãò–Ȳ^KÆø¢j9)¯S¼ #)š?ì5XäüêÂ.0ö—á…7}3¥¥å[ðy¦6ãß“‘õmެï™W¢Ö÷X_ze޶¯ÕXâæ¨%>×^âÁ_·ÀM‘n¢^jÉ×.¬Á ñ¦Èê>ûu«‹÷µçÿ)V—: è×­. Œ«´ÀŽ9›î LÈ 4ˆ!þÛEîŽ /òÎÔë¹J|¢–ø×”³ßI‹ì<†–Ž&"§T­ÁÞ ÔÌ_ñüÒ–Ð;R‚£ yÕÏñ öÉ8«o 猵tw`â÷Iü~ì”í7øÅpü…ùã¡õdF÷úÔ—JªAbE[,í{ªQÅA÷åᎺ§÷X¿{¶P„§iýÜÙŒ(”+$º«Zõ¶Õͳö*©åYƒBHù¨fÉ]u3»èl/Ž3t&ë óxJómÇ:ëñß”½•^¾CòO§/wIþaôåGÂ(.½¼H¨ÒÞ_·"{áφŸøºo•s|ÝÅ GE}š%›~4­Úç´›£Òxf³¯}Áç­×ÙÌ÷Íò éÎúÕqh¯ ØÌ£f°]ƒT·ÔÕkÍ’ëëfÖÓÐ3˜«%øm”ZÝk¤ÀÍ$ “uôÕZ¹×v¾0íXéå5Ò µs|çzVÆøjù€è‘rrµC*ù4À*Âб–|Mºëˆ×6§Âu¼| ÷H=™î=²®ƒ|^Õ©îÌþ>˜\ìá÷ÍÁ'áVRJךî‘÷æŒïeÞzßþX¸ÿ.^uÙùPºê>‚Ïl£tµÇ'áw,?K+Qº»àEL´õ×[_›WƬ¨º?Ïl{)/GK†ÑªJ ØÑ±z è3ŽŽƒ1)%ÝŸO;èüb¥;ŒÒ7°ÆÑ ü£î¹ôFÿ9CB7©˜¾}ýJéÎbù0½ÖßTºûö‹ðs¢<´r®ïŠiýÀÒÝãé‚Ò¡æ›ò´ô…"´H¾ nË7©ùz^!Œëô5Ìs"²ÄÁåu1cB_}I}éþ­¤`ÒÓ¹ ÿo®ºP×>ú°óƒÎ"ùý|ýlX Õº¦«& ùm\@i=âá%¡—gÃïNúýeèó¾¹â™#qʉèú'ý0ýfÌÊôbü1œ¿ósmÿRŸnUƧߌ}Ê GC¦C'8õfœjŒÇM‹Ö×=X¹¨ny´3êUß‚|k±âÚÕ@Ww|W߯ª«ìÌÅß)÷ªê¿z1Nnæjc#)˘Š-x¹´gÒz{icƒTø~O¿K”ö¤É7h©K1ÐO¯VáŸoúÄõŸMwlø¤t¦í¸Kùgê‹v®€w™ò ´ÛÃÓ9­5Í#¦6B¢–ã$&¹ &d‹:ÇdׄK¨\*f­3Áœúµú¾\äf䱯ÍàfѢп°}Õ8è2ºæöŒ•s( \KÄñn¸œûêëRµ]퟈´ òh5Ç´rbžöæOÂ)–äAY¥kL1RÓ¾¯œˆ¥ß7ÓÍ¥Ëäd|ƒæý‰HT+ƆÐø²u¶¢Þï‹•ÂÒ5±1J®aÒKþµØYœöÜáK]‹¸…?¾„uE§ŸQŸÐ}5ö¾Äù…èåežV-µùšŽ(>ñàŒXŠqw¶|óK¬â%wÂK–ýï_Ò¢8Ùÿ%k£þ:òGg«¶,Q¤)8"jÈ=†)½“PMDñPÞ\á³°€FâÞvuŠ®&ï@¯C¾ö£ˆœM‹%ÿd‘‰NµŸæ®¦šs±\ѰžÈ¨<_eeL®Öqâšn¬&ªt7J¾}d61g•±-Ç]U¾šî­b ’a80˜¬3ítú2kñ\Ùx9C…cEŸòwkº|·UK»`0$É/Ì" ¯jæ0›èßá]ꓺà ï²ÐÆd÷Ö³µ6wnçó&±Ã5YRÓÙÊ_<§ÎªX¦…²’¢ÁV™šY¦ÕW;޹«tg#ŽÞ¹}:ÿ) óAOh‡]£`bÌÍìÚ-/æJ£îj§À’«1 [þ¹…¯OA(Wdñ8;ß`SåkóÐÔ*Aý^îmô}>N›ŽÕºáy}hÒ&üaHè_„»ðNM; +¨=Œ¯uífX ^ÁFp瑈®[õÆ¢Ð/A@c4¥ö¹êM—êªbÛ‚œFaº¶i‡EÉ]Ú4›êiË× 7žè]i×Ö<¬¶&ÐP$ÿ™Úx‰/KfC©T[]ƒçJ[ha¹V¾ôvŸ¯övÌ|8u#/¶:Õ|›r‰ .¤œ>bP;Ñ1Û­-Z*’”cþÉÓ€wò –e†OŠÃeÎÁbø¤$Á WÃß|xðèäxo‹º`˜ ±ùwÐ|ÖLj)Ð.4‘ÇDwbãÆ»ZÕÜaÑ'!šx*­µPû;5n½nßæñðDÕ'WÅ ¶\Ðòó´Ÿ7]3òžÖ‚=€n˜Øé€+ ­t´ÑìhE†É_­æ™d)o¹©fgîŽ@{Oòÿ´nBë…˃äúÎa|¼IôTY-¬,[c«~vEò£6lÔµQ>óµO2Ôô7!e²“ÓÿP—iy”óºLÌÍS—IÏÊóX¾`œò}4Æ£Æ8Æ('‰4/áñQÐvðP0ûL=eq&=}9T Rè¯0†?Q£sh}çðÊçÆ”ÀµØÐfî9€íª ¿l<ˆs óT‹ b_7‡‹àžêÀiv·ü"jn9fJJG/ÁDdé}o¨¢Ú8¸àäß7Æ|Bd¡£„qB–°ƒ¾v›¯mHWG•…ö>žFykMØ@+ÒYùS ÖŒe®v9žB˜;ÛUkµšü4&­ÓY¾UNàR AYÌç›õÇíZÊeS¦áTnñÕêR X—òÙßâ~·†£Þ‡¾Î5pc<:jð¡?‘\ç.+ Ógn+¾ÝÒü¯„ÏÃ2'Ùçk·Žaa¥çáÇŠª¹ƒ,+&€j ;p©«h‘êºÄN±-v9Áܹd”)Yñb:4-År)®ö\æi×–>®/3‹Ûx&–ΊeýÚµå2¥M»·¯ÝMF;vZÖ©×­ÐuÐ#œ—B?M«}ÿ½Ã‡O¸"Ò)áQÍ)™Åã%ô“—葽&v˜0YVÇ\­’ÿg¦~sÊÙsŠ8ýWÀ¨´t¼Žjie€C>¶”P‚>3v/5î 7—FÇSùÚ£XF¦Z¹iµÔÃ-ÛjA‘{!G£`àiÏgJ»v÷szXãûIÃBÑ~-Ñ Ûò™·Mi¸Úø"s—“¸’Mz]+;ÏNfÝ4Vm?9zPY Y 4Ö,œb_w¹¥öK;÷S”‚BmÁ…O›Ý«‹*ÇùÚ´¾‹âìO ÀL…j)}wu‘’·‚àV¾¾X†íSâi§ƒ³õ¾ÜrTp¤2²®?‚6Ú÷[×¢ð"×ð=¼VùžÏs,s¨ÂYŽEÌg¤À$“'JûVj¿zz¤ÐDª—£}r “pç§,,êó/°“„2ùc¹@®aˆ¥ÖFtµ”'¯Ví¿*V“ŸÅ»ž‹oÌÂ7Ρ7Na|¡éó\?d=ÜÙ!Öá¶ïF#Î?ª¡OB›´jò{hú÷úÆ·Æ—1ÔÉã`„E¡ÿéã#Khks’šyX n^ìŒe¹§ä¹³~8[V´8•n¿BUCTw–‰í²¢ýñ·D%;Ÿ :÷XÙ ^bå.Kæ|Œ¹wKBRX¨?À'1¥ tŽù}q^r2ðP”šü3R€è!ÙÎ.ιó Ûêc¶¢¾ßž• ôÿaŽ–{јtòâÐûZÝwHWŽÎ0ÛÊæÚùl››ÌgÛÙÜ”º¬$Öl}®%]©*¾òXŸS“Ÿák- @V¬í[—Ûi]†gûöO‡–«ÎÀ8É\ÂÚÆïöÐx! õeT׆`-ùÿˆÉÚ'J\Îðc,Õ]-oShð!RÙ|s]6 °.Û*>DµG‘¶¨.› °0¥ +gÞͺDq¥©.“csÌ EPÛLñd¦x2SKgÊ«Ìù2÷¾ÎtI¿Ç½¯ àuP×¥Ù ™ëEmÖ&Ú‹¦7K]ccS tåB-õðJ+/êÊë9ZžøÉݯr×Ë ñ²| ›kÐI¾ö"K&éî`6f€×núå5}qè À1Ç“I„ƒr×S l¤—MÄÕ™ˆ·$Þ¶Ø|JÛ(|çN`½ÀÖ„iœ.vj^”·£øp,€óqYL‡‘§{¶jo‡ íEòh gDJ,+@ øWÆ)@æ“§Öû&\ïBÍÿ0o¦—‹aY•O“ <]¤ç!†1[qœžFv2ŒŠ«¬`±96¶ÈÎÝõ¬0‰yëÁÖ‡?2˜ŒÛø,Lxêlª¡ˆ†— ڤóÕÛÂ:™r€+[™RzѦcü§¼Ã½[k-ëÿŠsv7r×V–ecùvV Ôn ý_2þ(Àq«®­Þç¹§ æ6RÌíG Ì1¯Ð7Í fÀ½G€º¶â‹`j‹ì2c«,,ÓÆF z R?ÐîèmêÞêÈ·HOß "LÁRdsml­] æ^ž…åçnÇ´8³-|•gâï€óìq³-qƥР˜’ë!Z%É¿ñž,¶AÅÍ·ðLĸlkºë˲¬Ÿ «Ò3'ƒ•Ð:ÝYíý‚Á]guèÓJVšÆ½ÚíËŒ(’Á˜ÕdµY¹ õµpá:Cƒ¶i:Ÿou¼_ü8/°¤®ä3o¦ºÞŸÈg̾ìx•¦¯²j»1Y^UžÇç[Ôä}ºüR“ö?˜òyµEû|2Åb8-QáUáJeŽvã¿ÐÞ>(OxTJÑ"x¼+ô[üóF_~sVÇg` LWGŸèÀϩdâϲ•N(ùk±Sûd-a0z0;<&6 M×ñ€HuÌ’;‘Ôe,;ÅçØJ:åAñ/HÕdyZçÏÀ4 µkÑ“Þ,êÚ2t¸ˆ™Êà´CêwbtÒðÍ!J$”±1èîïw†UEŒÛìÇV hÎN¯¦UïûÌÿ~Nò˜`¨ë ¼EQ®îGK ¾s}ì•Ó_,ÄØÂ¥(:kiJ¾Ykr’MÙ+§±ãjž)O;¼ÐðîÖ*©É_Òò ºÛ2ñD¶.ý¹ÖÔ¥ÊS-Zõ†>Ú¡7wGš8¦Î›l©‹/‰Ô–’ páLƒUŒÁ srá¯ÈЏpà&Oèsá0koiúDy¸(•«åÔ¢ì`ÌÄ ˜^~®6{) ZÍâÒ'ô‰E²ù ib«oîM§—²™½æÕñ¿Á¯Mtþ,6cÖôiòrzóQo„ùwgE3§•Î:s/ z!²ïiŒ9³ƒ«'ùgJiÚ—[ÀÞ¹ó`C§Éó¶ð“L“/‡ž%ßÉD=ì;kA¬íÁz‚¸) "ïO_¥ ¼Y캨¹ºú„ä«Kî6æmG'ÚJ‰–8Ï÷iúј·CˬÁiŠ9Ú=ð]Zå:ôåi ­²óåÍF&iÜ– šúÅg&]güÈIÉK÷3w«Vä"«0Ø,.Œ‘¯Ú{ëÂ%¶¥u /Ù·¤ÃÌ<-¾ý)¾®¦¶ðéTÅvÈŠN.(-€”…ùÚO«Øk¾¨îŽ<ÕÕΚsÁlrµh˜#›ºçɈ¸°o¦uªÞ¶´Ó¬3bs^ú¯!ÐûÚ´ÐSa…mi6¾¹wÐê“{ÇVÍçö1_€õsòjÔ¸¾ª„ë¨*á§…Zzµ¡%¶çh“áÑ¢@ç"¥F{tæ5,nÀ&‘¦§úðiÇ4ŒÍ=¯} ý¢8Ò`OÔ™$ ã¯-í½Â‡ËÚËrn}²ìlL –~n@&›nö»¬„˜ÒQ‘à¯f]ò,io5Ǚܼ‡u¾¶z’ög—yrevù¨ŠÑ³0^ ³ÔJ{÷÷½(òü.ÞGoNöÁD°8Ú¥½CÂÍ’ç”}„Íf-GUä(´©¤1íïÿÚÿ´&wxÛeŒ bí8ÈY¨V÷íû÷ŽW:(¤góZÚߨ¿Lþ´öu¶%W{c/¾#UigqqÎvÐÕ#«Ÿ¯]Ø€‹ž„•ÙIò™'Ükð±ç®é£ƒèQ5N,¬ÎpÑI®ãwùv¶_Ÿ¬ß§Ðnûp‘<>P½fŒo2ó´£ÌG–{X9ºKï ¨ðí·‡Î`¼ì½ðìMBW†‚&¤—˜µ†v*©I|uR “¹Û•ã¡]¼Ð³-ŽÚuÉŽZ,0Ѽþ…Zí³(3~ ʣРr½ÀΗ&óùIðzVhgË’Ù‚$0eB'"qTø9‡¹5DþÏ­´³FiÙ£Ix™äGN¡ '£¦Øº°3Ö¶X  "Q \cå@ÕÕ‘‹Gµ•ÇÃkuR9&b]y L9_;‘O}/BÇ š{“öÖòÁb¥§g”}*VZ—GTfѽ~W•ã¢<Û X‚|§´÷ Çã}È¡Üޝ¸AÚÛÏåFzû÷ Z|—ãåïc¸E‹OO¿ NgœMìŽb¦ÿM• *­Úÿ è+‡ŽÚŽÒ²ï— ˆFçXºžžÌ8ìÐ F_ÉÉ×JkÖ0p Fw˾ß*á"Ò˜PÙDÚn¾v+ùÂÅ¡§Tó˜Ò5ú@)€±²gïèøQÃ7;(5êwÄ<,0AøUnÌ%,ísèí–¶Ô¢ÆÌIg[1ôqt}l,òêj­š¿&Û)O–}"àƒ~=„÷ ¸Ûï:ðO 4CÚÛÝÿÖDƒ‡œçÖm僲0XFòc’\¸ôš±žEVà(Þþ#Ü>“…YŸ<ÍÒÞô¯ai’ÿ‡±¤ï~íxü´ïò}zM ¼!3‚`ìëyiïQ~ŽŒ[ʽõYº³¾\ÂÁáswŠçÂozZþ;Žo°pO^ÎÀ¤ŽÔìëá,ténbïÉS¸«ž](š‘Å\õâMrÊ7¼¥ cxÜ´Yo¢Îy„"qÝMâ8îMŸHžÔ+Ðó‚Ô£c½­¾ËqÆìú‘\©Ǽ ²ÏÍo› ½N^üœ÷QKæJóx¥¥7ÉKòÓÔ¢a$;û6˦Æä¹ÿâÛ$¢¢]éU‚ ­ Ë¿Q.6o=ÐMœ·÷CçMMÉ]iÒ²Ÿ0*¡,’O¨Y),_›£%¾Ê}Óxw3ðØ<]iÎÑ.U‘Üó™»lÈf;Y-±hÊfÙ”)\iJUêu¥¾ OkÀ¦®F@ƒ<€ßSekDn  ¯'{À4ý>Ql+hn9ÚKU×DÐÛbé(tFé(˜‘k¨ý|FAØÒ=¸YÊã=£bb¥2ÒY*w­·³“i𠞯üÛ«_ mwhs <ôdÔ>R­¤³¦ž¯9Ëÿ²U‚’qü¥×ñË2;i}¹?û|ÙK¿ “øÃC̬p_‚÷&ÕÍJ&þ:+…>ÅQ%oÖ2ú¢cMN nÀ¸­¾ê龚q™÷¤ J†•óÞE/PŽ´,<×QBû6îM3 7Q¥À¢Xáqb‹Ê¹ãkÍcÌÛ,—àõùv>ŠòK”Wp¯Ýám@J¾šÚW2º²"¦|æP3÷Úxâ –˜™î´K”`î®þˆ?P‘›X>>&”/3UäÆóÑåù±xÙ\^çK0ûÆv§PÀýÑAµ`CÖÎ=©µ0>VÃ͎ͩFæib®ÅšÀR¹ãÕëjôØ´ÓŽ+Å7Wfq»°¼¦ÞRSoÃßA³¯Æì¸ÂbWµa}úÜeõÇ18» +§šÓ]ÍÒO‘žTùÁxÖÅI8‚ɶòE)Ó²x&:‘¥ÀY$¢Å6ª ä¶ê™V„±ØCi žŽÕé| :Ó\íZ°ñpnç%Óžž8ÙF¡“­bWOVȰépU¾‹e]@ñ…—NÃÓŠWÉ›7t£‘‚5>=Q9Ï‘Öî¶'ƒõ\q#Ì^¾$ÍŒ®ò¤,–”‘î±³S0_X3ð±¾Öîõ,6T•zMÚâëWžCÃ;)MgžŽÐFîêÀACB*í ÜECu¿ (ROÂÅ]¾|3V ¼Ök$»J ýa/"d3qúªã‚2~öÄI›løå£îÇÙ¨*ÄÜà·i.I|hðµkžo¶¯Qe/MïÌF@Þ hWûãi‚]>Nì‹pcu¹àg"¾™¼#Á;¯Eôá)¿'-‚tÑ›ˆÚ(ÝV³±+¤$9´ 98Ñ pu&ñ!è½i’·ã% ƒ8< —L>‚¶ä©äçÎqc•zTó EHœj@ÈÙùdÖákMdè&GÇ(«åN»ÃÙ¤zÛ%ßVƒj¾ð®0•ÏfHsÓ ft³YÜg5«Ï–®5—J› ‘8¥ŠüÄò¡ü¾Šü„ò|Î/Ÿ‹—Íå¹q¾D3Ÿìû¤›M::ˆè:Þ$[cáC¨&!?Ìs]¡{êáÔZÇ)˜-¦g*ÇÌÊìDM/’ÓÅâÛ}ŸÆâ3C—ײԲá¶ÂcpÌæ«6g!m]\õ!¼€ ÁÐJg»ãq„î¦;‰²«3Ä3g5Wª©ø™˜Bômå˺n0hëZm¹¬z†µ3Q¢‘ä߇»}õƒ|î:z4Mý ?mµ£xL_Ç…H[ÂQ†…ŒÜí@_?F7¦UµÛmãOXø@B%XHÜjŽ„)úz‘΀ìGgk€Î_¥3€ð;é;×=ઘ…I­Âç­ŽW6b“©iXKé¶ãôèÜÉlŒi`p-Ú9ÚÎfR6uå¼CŸô¡»³½ÆsIlL„·^EÄGNw=nŒU'né¥Â¼áªKÑ8ÄøŒû°DÁb¡Kújã(GU—³™Ž‹R]ß÷$ŽwÑ:¬ þåÑõ*q¿{Ü÷`邸Ÿ%ßp ¿**m-¸Ž¸;;gáJ¾BŽ‹­ñäWˆÛX8v‰[‰²oÿƒLûK?™V€¿`qq½€¢$/ýÔÚ>µ‚aèx ØRƒ,A›Rƒ"ç¥öû¼-‰è©´ñaaòQ|Ö÷‘Ϥl6)#]±³ _%Ÿ@;.[êÐÐ3>oS¼²™ä”Á²AX)ýŸ›äÕ°”P^­ÿÉ«’V…šù’hàšÄFS<@QÍß ‘µ*,²&â—Oºœ`“Vï cu!²ÖÛÃ'¢µ1!·ô^!·¾lúF¹…ajã‚'„»˜äÖCÿ/È­qýPåV{çÓŽ ¹U‹¿–šç0O#s“ÜòÜ4jÿ¿Ê­ÇþƒÜʉ–[‰ ·n5ä–YÈ­xCn%r+ñkåÖSßÞÿz · í†Iµš=@U©ÇSëÍÌuÈ O\”ïD²:\É ¸@g‹Å;kðŽ U–¯…UšÄ„YRºËNLT¶©›¥ŸÕJ;O©3o K+Ì V]ðËo¦3C^¥#©µ0¯¦ýóØõòÊ£å_'¯doŸ¬ZiÈ*Ð>ÒRQV­EYÕÙ_'Œ–UÑÄFUqc˜Ø¦ÎbS3½õ±Á< ¿N'TIP1|Ö‚ÊÕNçˆø­HBÞd6Ð4&TFô6äØ7Ë© ÉÓvÔ6f1ÓïI0Iþ_S‹z=†öC 3#R¨J´Å¢Tå蟾Vö¼Û'{¤kÿVö¼kÈž‡þ{ÙóÛ(Ù3»-¾ÚéÌ݆0À̱øªÇuÕô‘e¸8¡2ÏG–€aA4Ù@ZW,I š§ƒ2õÝ‚ôXç0¥Ód›U°>•&ƒÇz¹Ò‹–?ULêaåTßÙXæªW炱Ò$m ÇšJå(¤Õ,.“†¥Wþ‰!4C¹ëf€Òï´;j•2̪qL ›¡!µóe¢²¬¼”¤%é*I°¶¯³1 ‹f±úøöu¶üÎÔÆšÖXÔÒãBÌçÝŠ6ÆÞ'f`ƒ« CC!Cø÷h“Ä\¤9Úü#D3…D3ým V¬ûåšÏËzb’©Ž!ͱ MŒ­‚„*  Žò€>Y»vXÇšUª»%OW쪳9Gx kŠsÕ‡ù¤øº˜s«ò Xzc1½[DÎ"î©Â=¢;I¼!2ؤˆëz¬9,ypQ,>ŒÁÁ6‡‚0*¢Ú/¯!o%¹¤b¥-Á³(AÜh*æs³20eš«µ$Dÿª êÔLÍ̹³o`GÁŠ(Q¸«­"¶Üıð¸šêÎ6èÀqT¾ƒa¤M=p3ap‚ï£nXã0ÝŒáÎmÁ”SÞm‰Ê<ˆr>PŸ ,ËfJHwm/n©ZþðPšZ3²à7¼`Õ¿Bu5ZâýkùIÎÛÎòF„ñ* ÞN×ïÕ^:¤ëEcg[Ž®lWÝ­yÆ«Ã0†ñ6e:_m¢çáÝ– ò¸Pç’Oîw9«€ÇPPY•ž ¦”DÀ.•§¢œ•vÌ,vžÝ]<¬ßÐí4t!…­h÷À³×R :àfvðLÁ1IÀtcªc¥^khø Ç4È ¸rÌ÷¯FdñcDýôcæ®dîÝafY´gœC0ôãjdR¢psÂè¡_g³¸`¸9£ùä6 XËFã%汞mèÔigJU˜[–k5¸åJÁ-߈â–vÄ2ƒWJY¾³‰ŽÃÀ+Aí?‘ú¡ï *—Ìí—69éÝUÄ.ÿËa—¥À· †æf†x‡³’)›+¹g3÷ÚQ°^aîíuÎW‰szš14÷CÉÆ9žT 36Á¯to•ä+B®<‚8çG°å#u0Ý”f0]îmá(‡‰Ù$Ô.•W Eá±QŠnÏTb¿Öç9‹ÈÛžöÕ3ù4]©fÞ&í˺ëÙ¦» ÏÕÂzë ØÛt¾,ù;HÃoJ%HyQyœ+/¶ÞDB /€M±ÌÂÓ˜@¥sþ_V{¹w3êJ¤0×vžiÁ† ?œ/0ïæjd½¢J-{_]Šb©ä[éÞ‹o& –Ü‹=íôHgè Š_&€nÇÚ ”‹ÃkÕXƒ7“ì[ó½:'Ö ŽÙ… º)ÕQùÇ[²Uwú±âŠ×¿úSîò«fGºóEv¥ä÷U²q¼»<‘+~“Ò8Ÿ)þò£¾³r¯ß×PZnSóYÂæõ+A˰ ¥¿so 3Ôèè‚I ¦«ÞFhl²6ÿ ®/Ò•m ÑìBqú £Vk~”Ó±`p`I”mȤmÄC^<$N¼ ¡Ç<‚ŸS˜Ó‘ {ö6Ò'éu¯ÆK;qp+†q ”Š'Q‚o†•1Ô4†¼R¬3GûÝß ;c»á‡Þ‘U?À“cݨ¦M@»âØšUÿ'ØVl§ô‡m ÂÆùÍà­ºŠ"æU7{®À€ ظ-UÜi`Ÿ=@|ûß›9_ KÅ÷8Q(À þðUŠEUuþUx¥x†x7<³§M lñÍÁ±b|Ä”o&g\KpøU0Ê”‚ÎÖ¬”8ÔL ÌÜîèXu¸ˆ?󎶚`‚¯ÇTòi…È yÀ!v>õƒ PÊÝmÒ¦ß@¹ý:©O¯rïn‡÷U’ê%ë*F”?|3>‘•í»t j§b_¥©J›jž,íB¹²­ 'ÐÚ3‰˜Äác’ϯƒHfÊë P*Í€_Ž÷$%* ¥¤§¾çû41µ—»ªMç¹ûuÚy Sš»Åˆ…u¾!tŠ †ç ¤ä, ŸlÔuë«¿Gˆ ;hÊŽ“ÌÊ΋¤^¸^Ó¸çÌ ¦ÝEÂÒ¦¸t5ŒK›Ò¡Õ,¢2‰ƒ€ö¼²Sy­°iÜýŒËvx“ºH0GiQ>ꆸ¯õ=ü"Ž, ‡»eõlt?Ô£NñÚ¾þ:E‹êiÊ¿Þs–Kþ™q†NÑè/†“ŠQt7±s4Ó6ÄR‡›4á$þú ôÉÚÑK/Jm ãN»´óÆÔF–¨îÂ/Ÿ~sIÎ>*~øÑ5ÓD–(ؤê½x4™v rX é¤¨:#Oåô‰Hàò;‹â;%ß8Pòà,Q“P€nˆ‡êÑ[©Ò½i˜YÙ[å¸,ŠEä³>ß\üK}žà×s³´ ˜¼†áÐÈìÀ¿¨`É(BØñ^ñÍÒNû¬ñVÔï}եР@ê;÷`ö€ãŽ÷V}ä»»z’:]e§Ž8¦Œ•eæ*RRJ_ŰSèfzB«Oò=øŠà=ðúx7ôŽºÀä8J/,ή°?à;W]ÚSªÜ›­š€%]ÕŽþma.y¶£ dîªùÖɧǗ ½§Î2…X'û°ìZÐ^ZÐÁo JÇWpåhM/wˆ›ÆšÏ#Ï?UvŽ–µG,ëÛáem›Ðm/u{UÜ /3J–´† Õî@½Xª¸Ñ÷Qué•R%ÞwÙ¼ó#`(mAoÔèÂîNï× =íEÐÓ\zZèiž–àRnZhÛ²•{’ÙHÓ à߯ =­w9ÁÀ8ú q˜ˆªv©+Il•íŽ^û/¿ní•Í%«Ã Ÿ‚µ•ú¯ýÃ_YûiQk­=p2!·±w±=1Ó‚+,pRZ¹ÍÁ»¯  ý- Š"(0;+ôMRuÐú^v¹§ÿË‚=¤hîH±‘â­Êëˆ<‚ÆÊNô^‡ü;œØÝ+°‰pâòu8ñ«ÿŒ}Ó¸ûºi|«‡°cŠN1/’†4¤GèsRà™Ë"ë½s[j·ùÎ%²+©ÇÙ©8w52ÎaÒÎÑb½¹² –œ=P2{¯±àÜÝœ™îÞªÎ-¡¹øFîm®HÜr–´³qÀñ‡Ò½[A&¯úDðJç6`”ŸXLBF9êòWåÞ0£üÝu¸7Ì(7# %èéz{ÃÐû qoZß%{­ÇƒemB­óå0¦ºÛØÑ8×Ëé¨$cm‘}ˆ2éÞ—‹S¤Olà Ƅ­5¥Ê2­³‡û«Z}Þ—cWÏàΗÕy¥a”M3PÖP5Réôö×°¼¶ÒfêLÝ@ †Ä•8ååàû]Èr_^µ/ô;ž•îÙJã(¶WXGúÎV—^.UÌR“GÂUíª³ÍÔîÜ ¯I¤žƒµÔÝÛ£tÜg»¢^ìÇÛÞíì s6ë‰A¥ë+ð– a¬ýÌ@LzOGøvo±RßuÇÛaØoý*æâíðj`8^Ú±LœA#̰7©{{Ìë?¡}³8Ü5‹½|'ˆ:Pöym&I;{ ?õg¶Ù ÈijFôtne£K\»h¡?íÃй†*Í ˆ¡Ÿ&d#†ž|(ÏFcè§5Y$±5f¡y+ð~v¥ì#Û¦»hŸJ¡×0ÛÄî"x}šÚÄzË>!`õ 4ÝE ú4Ž*bï"À|j z yªó°à‰KÿVµÛ%¼nù;¿ÑëFªýåÎ~õÜgU±ïªl€€gî&cw´úÇìÔêÆõÓê¬uRà¯qB7·DFÄaƒFF£äo%uwZƒ£Æðø±+Å#U÷g¸'=3Í\nÊ2 ©£fÕ¬'õ¯6–üc½7¹’«¸»Ñ᮪újx¸"®Ü<0#ËwÙjºÇO‡«X¾áÀr}?s{LÌòûõDiã/°ˆà[µÜ½÷ªÐ ¹?;ŽKþlt‹ aõ©ÇÑÀݯÚÓQôîöíf¶ðp½ílˆHQJ:UV6.Lµ˜ka`L¢ßu+ít·;>¤ í¤˜×ÉúÎÅ2÷6u~,ØÒ&ŒV—™Ó=Ò&E§Â‡Ñ!å%‡” QÁ‰ø¬»nß{kDÉÁ½DÖƒ;Ž#)£ ¾……\ɱöŸÛßì=Ð VЮãv©ßùÿ÷7€QWÿ8¾›,°À !`x±¢5E["PY‚6¼,  ‰Ix ø Û•æÒ×ÕK­¯T.½ßB½hŒ Ô˯Lëë“®½ºí'Ö@´ W/«€Áü]ÚD: H½,õ²QG½ˆ5P–[n¨—¶&‡©´I[.‡‚~QP¿Ü?|ü øzèC4á=á­ŒJÊ-ÿûUZ† ýk/BѺ¼ÆcaÖñ.ùW0è³´,pýØr»ªæ«*ô…ôÔï¢)ëY¬;äΠ Z°¡Å)ÉwÕNoö]Ât\ž¸Z J1¨z²ýv QAvtZg¯FHä*îZ¥­54€JÓWi]´Öòûç(ZkH™eÿ…û0fF%e—KËðDçPÍW¢Nzk~¨8F …Zãüò;vž¥DM´5QGܯÊHh¢_µŽ³!ýßrÍö3R'Ÿ Îæž¤ù <ïµÀ…V§¶X¶Åe6mÉöaÒC1*tŠ]BsûùÕŸ¯À¨è3’õ1¡-@6U{jHí‹h­öé<˜§)›”ZmV¥aÚÞ~WÓ5ŸhºfUH×üЬù¾ƒ¯‡/ÌþüvúLu=J¸¾x nM«ºs›µAãã9Úîäáþë›ßk»Â}ÍUÝaºÿ:Eø¯qU·khU·“¹fRU°m ­ÕâGãb —ÔáÓrnÕUáËÞ¡-®Jþ»Hw­ã÷"»ïHh€.°¶KJY'yãP'v)x wø"+-ÌšWW%_E“ÉR\‡ *l¢0¥ ÞUMaÔz†ÔßF´3µ¯½ÚüxýKRïV.¯ÑÖg3N¤áú,z„‰Zóuju­Ïþ–/ ­ÏÒ | æzÅ7i¤«¬)58‡&Aq^fCźlïðuÙ‰l1ƺìé+ƺl„ö¦q=öª0»æúÆá™&3†å?µ ÷µf®ûlÃ#mÃÿ©mØåZ¶á¢Ÿ¶ o6»^¾Ž}8æß¶oúwìÑáöá&û°T؇‘•ma#nE/æ]ÿ;Qà‡#^ÿ Ë>¡|óV 8͉¬Ÿk#Ü‹Õ+¯#ðÚˆ´ %£´òŸêèÿÈFÔ-¯g#^Xý6b£€ð“ˆ–š»+膼Ð(ŒÌ† ï7ˆ™ ÄɆX}=qC ñMÝ@t·×¬Bôh‘­˜b¶ïÿiëpºa޹¾u8Y³÷ÿãúÖူ8ײWý´}8,Â>\öa¯ë؇ºŠÙH[¨Íö¡C³5¨œäk¼¾}‰ ··Ñ’ªw{T’G·Ÿùiû'’…ˆ{qg´LFûð²¯3k"i°ò¤(ÜÏ{å|‹ ³kQùôaß‚•x²cŠ´ûVâ!HÏÝ`"2ÏjîZQ˳Ï8w°l³•æÝÉç' É'ò\a&Î1™‰óãò/ 3ñTMù&3w ±+ÂJü|VÅçPûž ÞEdë{´t¢™‹­Òßl.šÖ–þ{Ñõf‹¹k˵¥ÖìE}Þ:Sœîò¿œ¯þ,{QÀ²…½hFKhöâ¢U†½(°«[·ÑsÇÕ»VÑÙgPX7W~!c|nvù—…ùã&Ó„Ã0m6!K† c‘ö¢+çßvÐuñ&{1#d/Þ bGöâ*a©d"nT­ FÓ¤ÁÈ^®ƒùvÿíÆbk`¾ßF‚ùîl2èô ³±x£a,¶ÑŒÅhJy] Ÿ°;¶â·×·ã4[±Ãß®o+Öê¶baŠ#ïrž´¾¢ÇÎú=íwìܪë÷!´%t»ý6ED¿é—ê§±ó žäŽ“ÜÝ¡;•|õ"lzÝc—ê§ðô-_ާ4‚Ò¬_ˆ÷û£Øíôc úU˜ÉJ¾7ÄûõaØõŠ„Ä?îg¥¦¹%ßBñþx?£ä ÁžÞ€$ÁH艹Ç]ñNW•T¼UZ¿O•fÓ!½ÚYêÎìÝ`´J^ måß½cO=ô–½-÷¯³ Àζ‰gqÚ>ôtÁmÏC)cÀàÛïµ?÷;héòçHeáŽÐÛM€»mˆ~u¬ÄCÚmœÕáRÞÚöV-ǰ ÉÞ¡¶Õó#F%·2×<õ/÷tgØÕ¹±Jêk"Ôð‹ sNWuª»2MìMiíjª:ܺ¿?jðñVÔ€¶B¹GãXv| •Ì‘xüÇÜuÄ¿VÓ¶m£—²Ã™²[zq7F×âÆ9 jò£Z×ÒºV¶˜ºö5‘è¦G±ëâ(j.žRîdÐÒyâ}ã°ë`¼÷Äy+mÜž”ÏÛò—†`0×'ó:òŒxgFm~LT“rËsxGçùùÝ’rló»°Ú„‰{ësp/«·š;¿œÛ~Œw«.>°‰*5;e¡Â–ÿù`ß|‡UTò}x®ô•|E¢Gþ€Ì'˜ñÂ='„A ïïû¶(·Ê¨îK˜ÔÓïôTÑKžK{%- ô?_1z)WÉ’c_IH#ê¢\»šet‘ûÜ!q—Y°v¬*ð(Ùeý€<*n¬OÜ<&¶r¦QÖw ®FWÝi•î<:3£KT£Ë½qÿ§HQЬ§a\ý†Ü%ÛXîŽ@4¥P˜ÖÒ‚š_Fñô›×ÚGm U9^Ä>ûŠºy›S b3O:¨úwt?Œi‘ì¾M³üB!Ò(e˜´K—õ9Vu^_%÷ïßÕ®°Ñý<Aû3Þ] vþÛñMuÄíÁÎöÌïdWçõS‚Úî®òGª<ÁžªþV­5ºc‚Þÿ°X&S~•£1®”%¸f6Ó>~Wû˜Žqï›]¬=] OñYœQÈSÚ“ØÙמ¸éIâ^6:¾r4=J{ˆ‹Ëy’Ä’ÆðRÀ|þºú E‹Ú&ùÐPóæ*¶yÝy®$Ïo¢ÅêO×CÖM"¸Eäã%z0Æ<N”ïð›T喻Ĺ03%Ÿ8¶é#Äí±ú‹ÿ”—ÜÁîÅ‘³”Kî«*Ý—ßCq¸º#-ö˜—] –E»ÊÑ}±¡ÞËTú­ ÚŸE& uv`<âJ(Kõnì›7cTuÊÔIJ±c†œ1CÚVZ~ó'‹è½OWEôÞÍ0-êŒÓ±×$¸!ð˜Xk#ORn}ó'zqò›‘½¸ÊèEeUk½¸wUd/–¯ŠìÅwWµèÅqP/¥íZU¥)aë1ØwÔÏÿÁa÷ÁÙCvÊmÍMtâÃíïcä€Éžû7í@Ü.ò||‘w¥äk«´Œ6ô7ª”ÊýK9ceZ:(µ~Ÿj§$,€.ßæmæßHjæ‹ú&§ƒ¼x€#éüfþnH¬…œ‡™¥äÿMç1ˆÙÍ Ã˜öÒ†¬8 ŒŠ&%Ý,©YÞ?Û,îg)*<È=8Ë»ÔnqçåLÁч3g²üNÜk_ øq4é·X‚öÚŪ9n,Ï­Ut¾W) ¥õŒÎ>Áf:*ÇļŸÓÉ®ÚZ9†¢¦JF´“7 ÏšJ¾¿©vëë盱ذHXö öðF&dXÚwB9yG8‹§Cª]³XÆ1˜ÂÔê<Û/§6³=ÚÝ–¡Ìâ¶ Ò†tïEƒç>`¬)î0®”;æÜM{kg4EÇœê¾%Ú£H\Ç`J؎Þ=a£°ÍÔS¬+ s§õ8hi³'¿¦âb<–4£6 j®Ü}§q¢ îÊãÐÆGÚ¼ Í‹ÁaXçnŸìm°.îÄFâdžGÑÓÀu¦ŒÅÊó~iŸ ã†Ç–x8xpv²»Òã¯øÆ1Å_>ÃÓžTðãà7³Ïk¯¯Ð‡1³›´ûÓt[9’ޫijjež[~¦¸œ—¦|›¦Tò!œV„*KU®>X4|Ž-¶z¨Í銫¿¬TòãЖ®ì¾çªšxxJ ­JØ‹ÙnH«ÆÄoä‘=v‡ªj±Ô[ÚŽÿ°ê¼Ã3é𠸇Ûá½ín§Å¢Nê…Ù¸ðt›<.Ê{9jþIyœê½ÜÌÆÛrÓ™CîêIŠë/F(ø)Ámè+o ~¢Å½Æ`ߘÐÓ™ÁäèµFlqgølr0ö+Íð2``þÞ æçÓ`NͶàè4ª0x˜ßˆ“ÂàYѶ+ÿ4x)èêü KíÒöUlKý×í«*úÔWU\î}óøÓºìø>wJŸü£øUûŠøMÂx¢ÅØóž‰C°mrHŸ¢ëÄŽb°‹¹(i)Ž¢gò/àÅ`¨g^ûªŽ.E”˜Ô’g±@¹—;“\ÖW%캹ʔ/Æ— Ü\xÔÒ­Tï”Ì ¥–UHŸfÔÖ…´Çí9Ö~ËÆfÕbI€ÖÄ`>æ0§{ ŸMµ°¹6¶È.ß7ãbøýý,l\,›ã`#â¶Š8¢ ²æb&Ôi*Oóï⎙c‘ÓãÓæD)ëĦŽÕzÚ0LJW0®wxqE³êg穱|Š…?aÃÀZ8øŨÇL}æ`9v~7õR=ô¹¹Îß!ã¿hòÆùt¡ï+ê+âfÃeÛExnÞÉ¡ ýò\[ÓG8;¼ø&/ô¡Þý2SÙ¼Gmb“ËÆª7;âÍáGl~‘éûÄronŒEZQ.#’~ìÍ[6#_n|×<í™?gÄÀ„p¨ÿð‚ßÒ¦BÝ`¼•6¹ÝþFñ¥T¢ì&ø€ªòqüÍ߆mÐÔ ˜÷Ož6ÌûàߊwrTÃÆ'—’h´Ï+ƒ–cøñ˜\tœ4Ó”탓|xšÊÊtùÿ+5Ærž9aP£Œ¨1”¸5d5 ‘ì`Ïz:, „è°šNaÑô9*-o`ÐQ÷ÂêÑÉIÔdÊå´é|ÛaÚ²UJLÅÑ(Рò 4‘|7Rd/›ôT5*c™ÿZ·‰ÁSÏß+!x°LAvýxÜ©õ¢s£V±j‡Œm’ž´‰Åxé=ñ¹ø†‹h—]ŽOtneþÝp7/Šá"º<ì.çw¬¬?|j 4"Écw߈+³Aiv-´D,è2|¢ç"§Tѹ1Ie˜ÁüGY3«ƒY_OLf–šK“œöÄ8›Ý¶ÁÚÀ¶Žw62ÿ6H>÷7Eìëþ1… d[šÛ¹ã°=ðÜy!çâøB?¾p6Xsöò2üL”5o…ø?;Æ õÅWÁo pSɨšó»y§éLIÖ¬å~¤J a³ë=1{øBzÏMÏT¢Ý$æ¯Â-©c{@:µ”— {Ig•ãwÑÈ_DvâÈþ¹1¦ªM-ì½l%Á 4YZ"ýuø4xÊI¼*y‡[Ūp ±îåPL€ ‡Î’*âœz:ËÄõ9šðÄX©à„z-³§‰Í’üÈó³E¥ûSФ2z–ä}9ÇÎýB(èož½VBÜUŒ_Èe }!xì5øx}¸BÆÊ0að0§¤ý‰"IŘù¼ûUKnç%”'Žue¶ EåÝjgô†Éôý_u±Ä—¢ûXg6ÚæÝngô†QåÉ3ÌýT0už82€hA[å´öû/ÿÇX›Y©ÖG´ÌHô­2ä?ŒÆÔ‰‚;ÂØ‚µ ÿ°&òÃÀ÷W"Á? &Óé"nHIæX<†g;Äàú°ã)ëuîñ´»ðbb9j‘ÄÃÎ=Ò‹[åQ7©ÁsºÝ;À›oå§Fƒ¬C®…gÒògÅU”ä{ûÅþÙñ´£ ^Ž}ƒýºâ`Þ¿‡/hâSšxrmˆP¨¹Cçw‡t÷¥ªž8Ðê F£γ›UO¼xˆÏŸé,Ö|¦6i~M èCëùþð1Æ<,@Çtè7§ë„ô4.8y‹±qWOeÆD#E‚ÅGuѧÙee)ö´Ò<ñè°4í©r ‰{“2br_„<ÁÞ‰/–ÁƒÅçƒ>#!ng„¯ßxâäøñ®„#0-¼GkSAªc1!.:.Š‘ë2â*ŽE%¸b¼Ûb­¬ jb¤§KÄgâÄ/–}¢)#=3ÔŠ'Äʼn\TÏ …‰éÙ ¨þ;=ð Ì‘§œ°‚@‘ã‡b„À.Ö*Ôž8Ä(E{·ÚœU’— [OÜw÷"nMÖßàdg <§á%O‰e›ƒÏWÖÜI¦Q+%Im¥n‚zåå&zw T«VËWqª¥XÏSµîElÓzòõtª+VëJN÷ îÕaÕñ´™à9\áüÜ]”¸w‚óB.ãÞeÞá¼°øGZ8buÎÏ%%N $5_·=ËlZª»PÈ=JñHãÇ6›$*+3>ž˜Oï×WöŒ ]€áЪÎ{ǹg'–;r;UڼijΆŗËiû+³m†7çöÆq–÷‘__cGëoo¡Ï‚ú§§+Ý«I£Êð8àÒ³‰{WrßÄ1‹*bƒ ùW_®ÐÒô¢‘0&ø”±ÖQåÛE )¼Í}–NÉÔ»Ò®üJ$‡aW´!=±‡:ö¦±lL,wÓˆ86&ŽŽ¿iD<//í+Ïë+§õ½Ïó^òúƒ`ÖüL{Œ¡Ã$ j&QèܼÜx– bR[¡ôþbÑ<»¶" ::ÿ8âÑYÆ™[i}—N©…NÀ¥‰ŽZ=ÌÚ² 6ÁÏÀ_½ü;==€-Å©žÞmöi36"ˆBøkù›_u–ʾó^ìã v,8Ä»í;EÎÒ„C¬jŸÒ¾²à[bû4 ŠÛw,á;œtcÎàzV'•õÆ;,éÍ»ÉãÜw &‘¢˜Í?4ªj·´£;Èù½„­‚ ¯ì;-¿qß)œmÞ<ÄêòwZ,1¨/ŵ(2Ís²û¸[˜ñCùév¸)%æìñÒú+H˜<'I²Ï5–‚Ä­å:)€]'X[°š l<®´/ Þ ÆÙNƒ6ÈIU—Â73lîARÙ>vÀ[ßÇÏ.5Ž j\Fj°Ëí·B3gØX·QPjB“\ÃÛúËÝ=¥²øŽ]†ùáh} l{]£q6¯Ò‚š|ʯCSܬ¦m_K¾ŠíqðÁÌÎ(eò°4yPYÁíÞ+vŠÐbïH¸õRJ Lw²”ÝÌU%ùÞ¡Éônž»Í9Æ.-Ãq0qoý|;sí¨tUÓ‘[®#xóŠŒô➥W§Šxö£ŠO$Ö!f }¨±0å_h:Ú¿³ šíðð´‡r÷­¿´ybç—¹]–ã·GCS¶–6OjãÜ¿8³Ú_çyÇ»m€¶ÒÀñ †Ýܳ­Rì𩟧•,à¹G ›á9YóÈ—PíÙåÈSŽ¿íðÖHP‘ P“!›¿® zéi¶ß{RÕ»·â´­ ÚóCPæG‚'¹«è¹ÅŽtÐ2hÊ :”f[íÏï9í‰g»X>iÇ]¥£mÅé肎ž¦–JqD¿ÁbçLì$0§¡µéŒXÿ^\ÀB÷›]ξ$€¹•®ìH¯ÚÁí?óðªv÷P( ¿õ8Ê׌/Œúvõå”KÎÏÙ×9«+ìYŒ(è<ÚùõÜ‹ÞmñÚ6Ž"ö•÷T;žÙºCS¨Ù;¼jŒç]ÈÞIÆ;A’5Ÿ´ò 4(lüÆ/vïÞ]еþ(ÆFK9ù0×AÏÚ_†ÆÆS3€½gúŠ9¡œÑ¤ƒ²³c”ÁË8¥ ô¹sÛ’Ó¹¨°CAÇðd¤s×Ü‹ì ­Æ†xO»?B&§ƒ€ñ¸jAgì9“³Záõ­Äí·èÜþ/šˆ×$îô×1†D•|kùý©ŸÉí¼Þ#ÄëÞ  Uàv†Ü~ЧTûwºoÞ–6/hÖc·"HQ=€ dø,dø `øÕ->×`x½è ^Á¥ÎðO˜þî OÕYF,Ï¢—*   ]TËAéÙ@O0È'OèL?µÓë™Dk™˜Ù¾Û…gYh|)kóYGO0ðkrŒÒÃa,)xËÁí³¯?ÊG_ßB®Àá2½§Nz¸ «tå¡B¬¤Ølâjqõ¨qu¿q5Ö¸e\%WÃŒ«AÆÕíÊ㨎V’@…Ž dFè´U0jê,6÷ Ê3_4©•–ö-\gð[^ŒÅ5Ìül~N6åûC ý$›Ø–±¨± K‘|¿ Ô$DÒ?nã™·³âÉð&o¨EZQ!­¿<‘¾¹¹ úë¤â-Òú]ÐÑ2Æá•ü§¦Ó|y–÷w‰}9Å` 5Hìz£s,ÿP°µnkžä/ŸVª«™×x«äS£M[ÜbS@5Øö©¼3ÖýíhŒØÈÛÎâƒç@J¾«NDšŽ”aŽ…’ogÁçžy1>G2àÒ¨· » ²¦%*0‘lI£í’÷˜sñ·'3™âì´iñ@^^Š7Ú. F7’¯ÈBu¬z©~ۊǬ»§ð޳xü¡£ueo³êŽaµÒúZ4R•σMꌙPô,ï½–…7ó2$›U+Îo›cÁ½JÊRÈtòÔ` SÉ…©é´à~­ÝÝ¡sþ{(vN ô[~%î~6^FHýàéM}OÇ‹mÊâÏ›T>„•!?’Ú¢|s°IeĪ3ˆ±U&cšRŠÒ8€V3q8ÕÒ›~s”€%·% 2Yt¹~è¼dFI؈™ö /ƒ‚S ¢œd ÒšºgL4¸ñV¢àsNÑËݰŸh7dg‘tôpSGo2wá«–°.̧.DiMfÅTþp½nî)¢^Ú­'Íò:- ‡p°ªêÜmaväµ[y1õÅ^Ï ¸RŸg‘ŠËÇv„^)j¢^I9‘ª†\ªŸ13ø]ªrŠa¯|ªtß"rð•LåÏ ó”Ë;ám ‘7.ÈB‚\ì,L”rÕ¨˜ûi=Ey¤‰êë&uÊ4½†Ù±ÞŽQ@øY^ÂÏà£4už.3îžÀc‡Ðn+>®_~qFçÀÚfmGðÔfb<¸ ôÆ,ïËÂn”¿ä³VD*Ðâã$¥´orð¨r7¶`# ÜÒLø¸ýz§š¡ JWL#S+í¤}èÌMX¨ZïßêÆÎê {o``SDµâšŒo*)^§ÐƒCŒ«~ÆÕ:}9YÄ@©w›ÔÄ`xÆeR=¤õûø½ÀEYÀEv‹Ê.:=`8+Æ¥4öOͤ -á ¶ß‹ºhm¦¡Uú`†!ÃT#C÷Mœª&ÇçÉ÷O­b2Þµ\רOò~¿§Â(¦h^rX£÷zéêæ­ã¼Êýí‹ÝFNÞ†_KËä£öóW¡UAO ãògK¾¯Ò¡Aäš·ááFÊ•‡ßœ¡_^ã4hÚì¿—|ßÓÅHÉw„.þ(ùöÁ…2¾² ˆ/ÆÓcÄâŸ!lÙéaŠ`XºÐ—C_Ž)‚Néº"0J3©öª4"qÉ`SŸ=Ïx7CèG„„ž)k·CÕÊú†òdCÜqÒz*;=8 Uyì$ÈÌ ³œmõ*·zÒ¥e¹ÑD¼§'ƒ¦Wkðv>–4Zõ–åšêͽ¤Õæ.­¿èÔÿeø»ž4OŠï±ï›ÔÉSÉ|ñõÄz;GijG*h{jÀxÚP rèŠEí¸€‚]‚¬[Áe–²Ôß šä¨òÞg@;#)£ùDš³/$‡ØzþYH™ 9ÄeË¢zb7´À<ýbÈàå´å£ØïXjÜXMIÓñb:•îÚG Eë1­©ï¿¾Ö À1BàªJ×*a P$e9ûBÊ¢ ãÌÄ¡ŠJÅs¬÷¥ßBÕJU¢ŽÒùÁÞ†fÉ_jfË—,¦ªå,E–Ì5XrŒÑyYáúŸ›Õ¾M‹Œ±8F¾ ­©Д}¨ÁÐþÁ»HûÍT^ÔŽ_*=¶ ‰!íÿZª’»Gï’™Á'•Æ­¡þò±’qÙªLA.(Ô…—nó—/IÖ«ú.*Œ±%±ç¤_«9ýå˿±‰´ó_©ƒK¸.À¯2o«©Š»³”¯« ® ¾«LÞj 6étÉõJ6ƒ[“°#‡%l5™=i4( åGGð:%Ú”©àÃicy,n #¢GiãTÐuœè^kv¤ÇÑ Oð–ÛÆy®f\ çáGÅ5# /6]µ"OO°…xšL¡?ÈàFžî/gYuËû!Ôx+ØC˜‚µeÔ3xÙX‘›ƒ|œöFt˜ªÈ#StY¥áÖ†äK¾†tÆÍ—ž••®•B§o =1Âäõ0ÌI0ªPö’¸,ôbüDð”ü/á‰#)/ÊÙ/š%'3Bt*¿ ‰ÎŠè¸‡øì¿¯ÅgCÃøÌݱ@™A™Ô•f–Øt{¿àch_Và[ø«¨å&¶+ËR~ÿeH2^UŽâ[<&ø!HÆ“W iàÅØ–üc¸!ÿŠèæ6dBº©'—Äh"TB÷‡—Œ ×ç!Mõ–fÕ·Ö¶%24/B†Ö_DVH @¼¶ß u)ù^Ľ÷»õïÆöU4F%•$Ó+ŒD¦þVs•Ž-‡™&nø=í×W¾û4DÒç©Jòú|Ó§!»*0S%ß8eÏ˰ĊãQ\²rŠÊÒŒãëŠcÑiêÝJ•DE ¾žâ¾Y4‡“X°ÖC¢{ÞÄO¯ Zf¼-¾[ù]ˆ2Y;ëAñB%) ÌB×þ·ÑwWŽÆ8ªT;÷ýˆ#!6+44ïý'>•Þl°¾x§˜ÊkÇ€ãªa‰é Æ8PÞÙ Ôˆc¤Wo y•λC["èºlsˆ³„îYB1sbQ¢ýh5ÁÛ!*°è‚~îi¼”X× >žuùøILmÒIo5:é•FÔWdéu«ë¨’&°±Ñü¥û”ø*ø«<$öŒìng±\K¯å¶3ëµÚ…ô”1ÊèFTÔk]ꚌÝ5•—’^û÷2 ™³y¿›!ùN´µX¶Óq0Ëu‹4¨(¿ }hGÍï•—ú4PŠæœÀÞ*A‡Ål¼œcQKñFq ¹ªêæ·w›#¯14b[´3ï”|cÛêS~ßႯÁ­Ãɶ{ ½ý¶ ì.Nní6«U·ºÍŸ¼%>ñ|¶îËuºØ šÆ…t6/%¿Ÿß¢ê“… ÅÌÑÔžäÝuMõ ù0öl„û`‰"T÷ÓäÍþåA†ªk—|=£Ì+ù0²X„κßÈõt¸ÎÚym%ùþb‰¬”!åj¡\%ÿ-©šÚ-ùžn×h'Î"×F£x#Þ-fV,4ÚgŽZ&}Ö%LŸ­©G}–¨ü¹#*‡)0›ø &%Õ¸•â(7™tÚTÒiîI( œú9“äsH`$é´×:ÙU0iŽUÎ^—®›*1ŒaËWŽ•cC¨Âæ~E ¯¦e]1:­ß9Ë„bÌWŒ‰Ê†؆™š`ü„b©)F!N v0«GÉ×|E·œ¯¡"­¸ IÕ à‚¯iޝ©Æ ‡p¦Lk®ÂÕç³Ï®ÂÛÙÈ>‡œ?-l†ô¨òêG&Zc@±,ÅR¢õ œ—ÿù#“q÷fQ˜\H¾éQaM’æÛI1&?&‹ÆÑR>†ê–ÿ“¸ eH¼Uò!ÀܤØy:B ¤1&~£Gîn\N6HÝÁù•˜›^s€_>a+¾ŽÏç±A™¤†DãgÃEcgë5Únµ 7ó÷Sú÷.©x^£çÛ&ù…H¼t M׸â}i£ÉT˜¦ä|fØ;<L9»!Ô´Epìžãéê]Ê­v#ï'Žü%§ ÁO‚u«ªÄkFßL?2]Ðòù¦Æ›˜pŠ»7/¦|Ȥf1Ö]Œž×s1’$Y˨JñïöѪ%ðÛ†ÖFð˜Ħxì…Òwƒi0ÆóƒÓ”üm!öÛŠì×´>4øÚY8B¡£î¾á )rÉ×. Ç49(-k†YtÁÉÛñ Öà/#Ao«QFöòõÜ“3¬]ÁÅâ}w«!t·H`åeTýä?QÕ¥D¸èl1ÔY1—ÃG÷7ŒÑ}eƒþÊ¿·åàþaƒÚêà^d樗 å‹|äžmØ ã"ç'ÔÇhœscÎC¦Aüþ³È1¤R¢EN|á/§2Uâ}­oñR*§ÎÓÅ4·§ÞÞfJ~ZK~¬È4vú«Ï™¥ÂÓ_¸µNrÊæ+¼y¿VïêLZáïÖ°ÑÌošm¨É¯žy-_ÁÌ æè©nS&’ŸNÁ*Å Iô6ϨGû˽”–Ÿ®5Õ«ëy > 9 †]ËËî(x1ð&d¢ \ò½§*/V„¦ÐŸ™KZ-Ï ëÎ4t9€ÈPN†È"×îÂ"Ë?4MŸŽ§)ý*BnåÏ”¿}hšDÕê¬NKo¸sCÉÿÐ4O…æéÇÊõ¦04º’ýa¤·èÏÍá"ÓlˆXéÇ]lÈmù VœAàþqaš¹Cœèø\£ãMfÌáîFÇSzUqì‘ä;sF'˜ƒûºéô—|Û»…¦€îNâñÉ7173=$dµC¨Š^Ú²×Aò v˜j™ƒìIœ…œû°UO]ÕшE$ùäŽ4¿Ò÷R=Û:•wE;û~<'­+/Ó¦â‹`*NàÃîNì²70 ‰6ù-^¨—ìLjçuĹyZô#ÿdÁ$¾ 1±0¶yÉdâ×cÐm‹×…]¤õW’´õÚ‡ûöJþ®tOŸî\ÒVà¤Êw1Ñ,w–ÜAßAå8] ›°R b;rr+Ä¥L|»¤­à`ƒFÉö0+¹{2ŽÜ}%‘î¾Úv­Š°»³!~Ú Q|‡*&+UdŸãØ  ë­9s_«¢¥²RjU©hUgtÃÒç” ¨~M;ˆÈ|x66—$êH¾xWJî„“yèQKi#gvQzšÒe ðd°bqPf FgRn‘ä›ðC¸‰ð÷ãØÆµFY ¥DÑï1Ô{c´àe˜5/ŬY˱9¦³hJ¸Zd„€÷`cØéʨ3šÅnÏà„–Ám ªx5é¦g0„S#»”`Ø÷ßkßÃKè›Ã¡oÊøMAçÀºk|ƒqtBHÖçª!ÄpÊ‚—:°©¶Àì`ë0òÒh aÝCy•ô ô þ h—™T&Nœ¾ t›h@…ô¬½Æ7dÏwBîÊÒ¸+£(M› ßãx`åÕç¸ïä%ôÁqü ]û ¥(Uûà‰ãWUÁ“Çð3͆‰Ó´Äž¢L-ñŠÀU5¸gÏÉüfŠ€HRÁHZr:„¦èœ®äA~B!^Òp‹ ýdµK¾wñ˜h’®´IJûŠÀx©I—‡ÂvÃú»íÃî”üiM&kú†SPÅ>§„MW:„úË}T¼¾ÏV4ôǦèë,­?ò”Ò#ï¹¼|u) ËfE›ôq ºFÛ(snú˜\£tÊLG1‚pÛKÞ†?JþéfEv |‚³þz‹×ËŒ ŽXé—_Ašç7Šºüw”ÉM‹§0@]¾í)ê’„#IÇ(ª‹í}oÃ#’³©‡¬aµØx=‹ˆY#j±œjqYÔâ!økDMg¥ZLîi¡(„r·mð6< s-¾ Ÿ8m¶\§ÏDx$¿\F¤ˆIíºãy©r4û|ÀhF)`¸ï9•¯šX²ì,9L°d“ì–<‰,I|í^¥±c¦²è6bÇàsÊÚ·MË_ô÷FÝ ™@›YyúíAH»îgüMma|@~j Ö1°'´0¾)ÝŒGÜPm`HÃÞ6QhÆ2K6„ÊiâLe üÄXx¬c5°àõqXðž5  Ü5°÷jDÁhÝÊ-ÃyÓ¶·Lm}ŒæV·šÊ‹i^{+²\{£þ:!´ ðì%ƒYA&Å:@<Óã…Nû|ê¨ýfòª/è_ >?lóm™ìä%œÙüPÝ|#âQ@8úp`y]ƒå€ŠÕQYÁ·5‹Â†f妋FÁ•~N Çãgí+·/EÜÎ>>QG'”Å¢4M }?^ÂIT¬ö¹îÞb%xÈ»´ü‘v¦A&Mä¼0Ãø–â'Þí±ù'ñK°Ø—ÆsÅÒÐËËë–üR<›ÝKLS¼NYpóU5Y¤b£äu&Oõ|Ç© |ºñ>Ѹµ­Å ß% XFIF•­snw΄¿hi£7m#”C±H^¼n¼s«´ìirã' &Yͱ¨î²uJ /T‡A¶c¦yÕö3½“–Ÿ§¡ ¯a–N³¼i/=3yMkÿ1wŸæl°üGÓ÷CëŸ\czã¾£UïÄope2ÇÝี%”N«LRöy–òÄû!/Á;ʹ7"bðÝÿ½6ŒVMÚ0¥²³P#cÚIkXÆ´ÓwÓNDl´2í¤^Æ´Ós“±ú6å ü©9¤z»]ø7TïÖ-&Õ+=…‡ZE(Ü×·˜n`æÒnËÿ¤þg7Iý¯q7›4î~ –ø ÍëßÂ5îÃï™5îñ×[jÜš{L“ÿ§,¦Hu{Õ¬nGõŒ ê6Í7R£“JI3=ó—¦Öu‘ƒ˜b•iV»’dÁ'-BMЖ ³šp^GMü«¼I"´ÄLMMÌ¿_ZßUŸ ±d¡±äuÊöxÔX%Bc•¬9ÓÛØ~2+ŠâS–ã1ʽd³…ñŽ2 Š?Y4 0uþwÁgå÷;ˆÊB¦Yú#ú0Ê;°˜ÖwË0†Ïvh\äÞdÉ~‹ÉK’ó‡kÁ F¶ÆE·©2æhÖ¾þ·(à ¸séó¿fz·§+¾jr®ËRº¿Ò,/(ůF¬x_¬¤R×ÿ¶9$X |ß§MêÌÉãCÔ™ÿ]`ÂÓr‹ƒãˆÄHÇq3Y&_!{±4F²øÅe.[¯M—Ö¥ëZt‰Ñ袳›ºéýT`9ÐeÚe¢ËèÿWþúJ›ŠtQÿ˜¼ ä¾)e/Šhækõct 4èaÎ Ú¹íB¹ëC†yâ#ù¾·^KÛc¿Hø¦5Ìæ³Šé§Ç †É–1ñÓµ­ñÜÃØïé¼ü+bØË<l+擦Ù(FÕf£ ܽx yGÁRNëN\ôi>C·ÝúËu×iŒ%äõ¯:mâ £ÝSBÝû»k4Èݽe÷2!7EyÙ¤k²”ûß±òe×Ë‘¬¼Õ<¥ùCÇS) N6¥¹Ò¬K`”ù¦étî,åà[!O8îsUÒ_-͉ÉÔâæŸ1‹%W‹_ªÅùˆœàp}p^Û]èä-èÕ óhÒáTDAOÝ5-Îè_×É>ÈnŒY¿»ÖZBkdß¡ _鯦ÕÉš4å_«ÍdOÿk¤¤lÍ?ƒX:òiWýå&܇,Úˆ øs,“R•ªn¢}kC‰þ«‰æ=œÀ>´:´zé¤ùî/¡ ¬ˆÃ]wÊ䯸óæ0áqÜ,œH†Š5ùn¾é{u¤÷jL‹ ½L‹ c{aãðf»Wg-òZò´4 ëÝË$a¶^$agíBÂ:¢cy{lZòÚŸb\4øùþ~²;кÅ»É+ô¯öT”>7a¬[x²òÊ(É¿}ieä£ÄåîhÓ§ÛS–çÚ™j?¡e–ÚtË—­›­ºÂl} }¤°ÌC–¥¦n5ÕÂȼÜ‘£Ä’D®a³›—f´€*ø¿¡±•–  Aí¿Æ2eô‹Q’ïÂ!0˜5zø¾?id¾KjŸJÄÂC’yáÁßÓX@$NV•É×+çeiŽÛß,¦€Ÿ¦µÖÉ<¥(‰èâvžè_jžè¼2bQnqGªù&N¤“üªAh^Þæš®Ö\Ó»¿9ȇWEß„œƒ»‹ÂVALç‘UI UÅi8Òoj­*‡âD»Pñ5Zñ¡ø¨=h+ÀÅŸ©Ï©ø£X|*:ȳ”,y ”ì¼ ¥êþÿVK=¶‘æº-Éd\,¶…¹Ý‡z‚Ñ.:´²ÊK¦Smøfù»ð&¯ìBѬ€›ÂŽÒúóITpÁ.ɇç-áÂæ{$1øeaWß^w³ü¹§ù›5ÝÑyôHáoƤž›ƒ—`¡ŒŒ¡­¿6†˜Aþ·æW;ÅüÊý¤ {j–¢HDv0A1omšÍiÊëþž9¦µÔsûºñtQ«N{+ Û i 4ÅáóBÚSÙŸšëüZò4ŽîŒ¼{Pï5&ëÔ¸3Œ÷jÔ(ԸנFGß΂]ž}†{bù{d؇hX~åK ¯AŒÃub•ٴ܉Aœ2•wÿÚ.Ž»½”9¤;ÄL]‹?³Ö+®Òd1KyÃ.jí½ÙoouDP=UŒmÝõÙ€™•-&MÿPǰ•í‘ÅÆ¬V¦Ç’/¶c óË[‰ÿB–£L ]ÄüïÊÅÐèiÄj Ô W{¶¥•¹L˜°õ„¯hQSœS¬º „Ø&’_˜êWÝ>Lö>l\¯}‹æÅa€ì‚y:œ!µ½ Z1´=5Oºb¯&{Äôv–äß»»•æ…uÞ&âLò½~ÁTÅ[Ãñf¶ëáÍþÕ®E 3.´ÒkgšóvÔÂ;/›:0¥]xä÷¯Œ,£. Ù@Ü“2`º¼+ïÏÿT7¯lûséØnjȶ0:$·½Ž¿°KÛt(ÙÞŠ"Å 5Æšbe¢Ã­ &:°6-þôí­MÊÍ>«¬j©©…º!*€‰hFKÙÎÜÂÑa-|Ívdж-ÜôY+0¡{m¦þRÌWFÖ_ ¹j‘0¡G$ÿŸýT 'G-4 l|gч£ÑB)oýÌTÅÔpG…EÛ%šk(#“´îi¹§âжVúð•(Ó`¸L€þ«îbu_TD Ý’ÿ™m?Å¥C~ì°J¢…cpqI¤¹ÍTÅ?…{µ'\Ï«ÝÇÚ¢…õ[[ÑGg,¦>ÄxHÐÂ¥?^Ô—ö%ß‹–oÙBÉÿÎÖËôæë9™¿>û¿‡Ÿ¸K s´Æ* 7®ÃpÔýüÒEåbnQd¸§¾ê£nÕui?Ô¿ÉWú/òOy>äKÀyŒò¡ß´‘¢tËÏjˆ°@•\×eönt ü™j¼ˆFe Ÿ; ;µg``E$tiáU£=8œ+íü&ßÈ-ä™ý\@ÔÜôoÔ~XÉ5|3ÿmö„dXDíSšBà¬ý=/âkQ¨7.EN…&ÇáR¹ÏgŠv⥠o?ªýŒÆÿµßrÅTûÕ&ªý;WÂi¿ôÂÅH¼ÚW"jï¼bÔ~äŒÿà5mÊ9~k¦(TûÍ—Æ¢ÆOø ú]6Õýp³¨»t9z¶õüÅÈuš¢†ˆº{Œº/…Kå«'MrЧë>ÀT÷+*û瓦½ƒÙ§zrù™h“uÖ3´>Ü”®«ÅÆÀÌ*ÔGë"³½ÎhLÆ\ˆ27æñ:4¥ÿL¨1ã1Í·ù&´¢gk„­UÕlEk•Þô#Ùþ™JöUQá·#°T®Z1}L Q?õLj ÿöG£ÂɈKÍ7Ùþ5—pÅæƒå¡ oÂÉÌù&_ÈÃ"*üTøXx…‹E…ï¸Dfš²¦ITø¦Ká^qî"!M“•£'#)|2Dá“‘ƒuS”1kj¿Kh%4kèbž5䊽–ºY½úz+ [ÔŸU´2P6£„#êgMõykÄ0ö_’ÿÏ?5PcæÚ-– §ZÃ'EbÖ°¯ÔT¿‰Ø¼Ð¤èWÖëìíl´´hÞ²ÒVlj\U6ì÷Å(}èc”vÏkØ‘Ã1™šB‹/’*:„Žæ_6 ­| ïùN"¡.Ý ¡Í ¸Â5Ï}?à<€/ éüY‘#ðÄÐLQ2–˜tþe‚ù®ç¡¸:r‚{mNÏl&ÑLS¶\œîŠvðöät;"4 ž‰P÷„ÔÃ8 ®Ï5UïÏo\éÎC¢™yõgkŽCÇ 4Ç-Zõv4…W¯ã™š£ûñˆê5 QÃèã†GM0±´‚ÖS‘Û‡ñà­Ñ‚³ 4Yûu-E싌®kslÊœ É(\.Ì^bÓY<>ÕX×”üˆ×78—£“™í—–%G™f… B@»MŒÐG$MÉ/Ã,„|b5ùÞ¾©½§M™üOd&t§‡@wdq¹“ÜïÂåjÝxF{ìÛëm¬kôÙ èü!.£ÛØ–>ªê^§¤£ºàÊ`¢À¯Ž†E—3æ´ÊÈ¿¢;>IÔÇ÷ã'ª:Þ€?¿@p®Û ïµ'Ô/îœ3~ʵÀ=‰áÞë›ÂAs·%–® ôTÉeÝ…°j‘ÉS¶=MTrïV>Xøƒ»¦­,B¶&„ñmbÞy‘.¯i!—×Ãê$úýˆ9œËBÐWòÁ;ÆLlò§Øè‘™óQÄ6p×Ú&-®³Šmà3ÅþgL}ËG&•¹3|ÃÓê¨ëø CFMhfÎû†\i{lÊ…ïMz·ÃµCRíµF~ ztm ©@ÜÝDT±û=º»s¿äS-!ªãISr¦Û-a|Ó"\,†‹%¤‡Eà@ð¼W³ì}KÕö±oogiœBòmü²kÁúGéaþO'©w)OloÒ";} õÞ(„ê1Mð¼›4åAoHd§ Ò;ì1a~Í5BBÜ­Ü@Ùψ Qj åÐÖº#,$ÄfSHŒÿôYSx0"=×ÂPw᱂ø4ø —¬"5s{²J±œ¶®oÍÚ¶˜\¡k#tèçÇ…õeZ„Ú×"–îuRŽºMÔù3mqñd¸Q£”¹#£ÈM¾j–dÉ÷i“±?}­Sjh•XSŒl\`wS˜ 0Åc mÔ7š%? 4†7î챈U¹{ã߉a:(m ÞÞ!6ÉßîÏ¿ .ä˜tü©5¸?=?ÔÜ-ðDù2Ç4Æ}œÌ(’E¾¬ëÅÂ8¡üJ)ÀEï¼Æw\^cº»k^ã4wç L{hü§ñT’”Ÿ ¥8H ‘nzæ5>êvˆÖÀ§ðb£7âQtaÏÀÛFÑzðŽÀ ÿÄ/p#0CÕ³ îÖâlöÉkü•äënÅÈO¿”|éâ>Ë͘&ý`!óìÑ‹¡X ÿ°„‡yÖ¬¶µH±,!Ÿ¡{.ä0QË¡·ÿ0 eZ–ÁZ%vˆP+²ãSyú¸*ŒÐ¶®1ïj¬ÑÏ>­¯aì Vâytkn2ÏŠÖ[dj¿ü­T³Þ;ߊ`ÝÞ 7§ÔïDÛM߬^ñ¼õ VVNY“šXÞľÓW¯ßs_jºòK¹YÀöJËÃâv¢Q DZèZ†dZ«#Tò?t¾ÅŸ,⯠qñtï?¼ô¥Àå7Ts˜%%³ˆ"×H š•Y›,Í7S•]¹¡ÈË”±G®Éè¢H} ¯/ӬΠÜ×ól{j»œ{"KùêÛ‹õ8§²¼¡£É?ý›~µâoÿçOR´ª–©ÓÏ ˜c Šæ‡×ÏföžyÎjâ/ߌãë‚_Ë)+¹ —š®Në/Ÿ2uAOž±:ÿ˜¥–%B"÷$îÚí/_ŶϱÌQçüB^®J¸‘,ÿ(žêœ:Ç¢d%_UÙï¶8ï•è¾aŽUvtKMKW>ªIœl:ï†g|Â]¥5UöŠÓvVqùG1Ï[1Ãöù «~¹ÝüŽùQOÑX§æ Q.´Å#[¦J>œ™Îy/™x–¦¹”‚G4½å¦¬à¯P3Õô±f¬€ðѹ«òOQ3Ul&wíVlÖ_YòGl¨3' ´—G¶÷~ÙÞØÞ®©i™JpȯZ³³¿ÕyC”¢îãù±eÁÃð|#–äE‰jðR¦’Œ1™B«ëmë |ìß[骱Sf'Îóðhuɇçuñ”ØY¼Ë,L€‘—- btÒž`¸çÆ<Æsá ™Ä¦àW®Ø:K_ÉçF!Ot±nÏsünçȾ2j¶~ÒóïMå†YÁpØ$$m›…2à ìüq[B=Î1øHž9•«æØ”bíøùræ:èn“P+/°rW |ÍSÌU=’[[çݹ§Æ¹5'ŠmÅ“~Õß*9eºõS¬Ér†ìÓžx&SŽ ´žY™ÖìÕS£|¨4aØEë"Ï=È=ÕXšÊ<5žø4%g~“š<Ó}Öq¬ ªÉ¾L¨d£ÔCSòÜêí¶»-¬ÞSÀr ðŒôÂê½¥çpø"Ì?5I¹ÿ ™| HœX¾}’"aÓèÖ½Á FðE×–p¬Ý…ÎÆ¹Q¬1«Rp|ÔúãŒçWé`vÕ*OœB Ú­SmÖìڄžMÜUÛßåÐéý…-ÅõÏu@¦å :òŒ8ÕuÆ¿w‰u¤È¥?æ’r:M°É¶¤à¶¢4e×0WÀÂLNrź<¥¶À:œ¥ÔN ¾ À×!ÛBWlA»1,·6ÈyvœÿðBúhWš I³ÎEJð”x¾ÑáÆ=ñ•m…Í*“§Ó5nW é=q§®ý0ªØÎ­açaefñQýüq­·Ù&=9hS°Ÿí©83‹íZ-ù¾‚‰^—ä ’ïwð‹ÏKµçµç¿Ôž—hÏï¦çåp[¤ŸkÿTmnnNÜcýJòâô‰_å…OÆHþñýX›)J¸)ÁJ`Îá“ð´_n¬Ã”`ex†Š´<Æ{6Fòâù)ÞæKs§™ê”ã6{ ÖÛÜ07ÉüþÐûûè}ÓÜ›Ìï…Þ'àû“ÑîØ!1îÉÜø½~mðÛ7±<ïéÿ¾n)Ù÷ƒ»Cr}Ì-nkòÌ[Å•ŠŠ<Å‘XîüÒTØLë‚ìz´¹&á±ÏKë­ÃûÇzY•§«—[oqw+ìV)¶ðX¯ñÚ}|*6Ú¸‡YöƳ!cwotƒ¹;ä-´Z<Ã}{=½àE¹[‚)`2k‹€†)q8Uð\aÇ!{ØA÷7‰åPéÒæ-òxë¤TåûEÍjÑÔ)ÁÏÀ"9´ ^2‹"Ø™r÷MæŽ'á7NûÑ~íâ×S#3Xñ~`Ééýì»B™_äM»Ç ä-‡aF»åŒrï™dНEŒ+¶@›§D°wD~aù=ÊO3ÊÐãøÈúŒR;6þ–߃ƒÛ::ÏØÖfÊnkžRÅ&€2®f™ŽÂŒƒùG%˜Ídư ƒØ„!rÆ¡9]ÓäÌ.iÊÉcMzÿmŽÊdrðTbì'‹e{²ÃbP·þ°2ðÀDŠêt… ÝEÁx{V¦o:ž •m_2•ßxX­†xµ·kþ½ð³ÔÝ;‰.Úkç Áük4AMƒgA/üJ¬˜*q#äü©)çÊùwx!ÓΕm°˜„5×*Ëgá´ë6"ž“‹a}õß)9˜ÛO)·mº¾Î?c£há‡(cŸ!䄃LW¬™®0¾!¨¤CºR² 'ä3A§ÀàAistâ^oC_É÷+xàmh/ùn† 9¶'+®…Ùca”¯œíw¯v‹{µ¯\†ÏÜ}XUa îŸýañWúºíyWÚ»£“ƒâêv8EÙqv¾0jØtá;•\5²»è9mON%ø÷²}î¾Òæ¨ÄT_DkõèõèÁ´Tî^lO¡ÕW.íÃúºÛ ƒ2‡ƒî’IhžìCŸç¶¯ÐŠe>‚±Å£GZ‡cD™sm­ŠŽt*´oÔ5 ½j½F¡¸÷2¥³=MYt ÁU Õ¸GBÃiòAwñx7GÜÁ:·GO>’ÜEy £=ßæ-Œ¾Ësp{tû‘ÞŠèÀpwáÅ Ïx1Àóþöè¾ÁïA–6ïÜY€MwlbÜ.m¶õê¹ë€rîóÏšµbG`±O6›+ánÖ+1§Y¯Äï›[¯Äxñ|g#Õá¬ÃI£¸êб¹Õ:ì¾j®»j®ÃŸ¯êuÀ5¢s®¶^‡´«×«Ã=W©7\mµûšàÛEzžÕï¨^qW ›0:ìôà "Ÿ·ˆê°ˆê`m?Ü»%:0U<Ç:,¢:X¡›¨cáUby ÅÛå÷4•ÿ9na/El «Ç9%Næ3•Óé†z^Íé¥Üän&›Û}(GŒ*X²äŒç%LRÒnFv¬¤$àEà7º½¥ÍM<Ž&9·ú#//¾9'jN'Ò•¾%šÁù±pdo¦yHua[Š î>Ã@ÜðÌa mVüQ½ )GcÏQî9hN‰':aÊß[EÊiæ”GÌ)¿´ˆ”èÐÅ”X¬‘²FKÙD8 DønÕâít–û ˜X¨ž#ªç ê©ž}D+]騷æz§û€²*Q_¹»Šh"·Db9:&äa²Ã‚¸¶_[Êe5E…m¡ _CA=  GATaç£};=Jð¹íQÓGÀÁÄÅø/þ»+x$ô`þ?Gµƒ^ ”+Ь6 ÅcÖª|ª#3]9ªKe/çA÷My Ô;ܽæÜ‘®<ö8>Ÿ6 ÜŸX®…±íÀª=Ÿwå÷™¼+wxö¿'{} Æ ŒAÛÆédï°}š5øßƒÑÔí®ël(¸jXq´ +.G·xÑ(K·Ë¶.Î-•þOpï9μü¯ê Wë´«œ[x¯#§ãíì;V²æ*H¬¢È;Ô*ùº¶Å¨ð}»æÖò{y ~*êÍK1;oM“µÙ{²‰mM¸È¾ÞsšùWã®ÆâUø÷Æ•íûøƒ©rì´úc0A ´ñ^N¬lSϱP6x \±^káoe›uð—¶`´ÙWhz²N«àj~‡Ê6ø{{„%Ê’®ì¹1}aÏ*%ß-h…f¯HŸ4'Z9%boùËtá)«Ð/†-yµT™: ו³”'û]Uå²mWµƒ$²2•˜j‚ˆLRK±V³-S;ÛçD)›ë›UãäIÏ6ž *ºý×’ï. ú‘ü/±âW)¶ŠX+Ç·–—â]â·íkapÁEKÖëœhµt-íQ¶öǨ—ëèXî¸d˜ËCš,åh/¦§[†°W@çGŸÉSmÞ-ÀKEÈQ7úà/Ôe&«å¹åí$?î@jâeø¡àM\|“Ëøˆ}U9œl3oeœLÌð‘†CNùUŽlBÁŸcåÄØÑůÑâÔÑâ&õ—áýhPò¸€Û ïÙ&#&¶²ÍjÓy'̇÷à7"»Fû1ç¾7^ƒ›œ(ÞLËŸÆ÷K¾'1y/†=Ç_Çvȱi¬äi¤Ü=˜žù‹Éã‹©¾A—ñž?ÐÃÆª÷Ö—Rʱ`¶g£ ^ŒI¬_3ÿãØØØ¯8]ðb¬ä,n1‹úÊ6A<Å#<ÿà2 rÿN( ü$°ó«œG÷²õõ÷ O³­è»´Ì¿áäõyw4Zñ@Ú‹l{¦Jr­^I±”_DÁFÁ§9ZxùˆµÌ»¡âœ]; x+db±?ª8jžÙŒ?䥨ABp?Â>jºøwŒBŽOù‚X¿êéͶ{·ÇÉeÔm}±ÛþîéÀsš&H¾q´ö‰Iý‡Ý]k©”¡âK¸ Ú^ˆÆÏNEë_fM"°ôæ«‚ùeå 5Sé´'Lzâ' 1ÒN >Ë;¡•Ÿ¸µâ›æU`LSçX¼'k3•aû(°²Hߎ¯ßwK V+=KyÿŸìÂoÄwãn)Æ7i™YÊßo&EQÞêé lÈ¢ÕD÷ÿá9•ø1!¯d‰Šoï)»T…U| Ý¨Kͪö½SìÍ-ÞF>²S(qÚ·é³'b{íð°¨nD ˆ'æ#ìlëͬd1ÊÆˆXNˆ<*Hjöæ'½Êqpúeô4‰!é©×/£bÀëÀ #6õQÍ/±f¿&êšy±Y³TéÕl¿öã7"Wù÷ò\;ÌuQç܈ܗp€Ó¸âü®Ç΄ ÇÍ_9³’7 ßwÚHÚÁ±ïìë(­rüã³ø@æ:!mØÖ@¶â¾Ÿ~^lçyçÉ÷>ºÞyºmL&{IvÉñ_Îâãá~'Û%ùÎX ufu6xŽóDg³äËéèVäö:I~'oç<Ä\Õø;•ó<óTIÞ¿bOB¿ç¸¨sÕ°ì#Ð^9>gÔðQ±á ÎG˜ë`¥ë -YϨåð×9>F<á®Zçɇ™-0­Æ$Ù5²í¾²ÍËlûyö î:`$h€ý6¼f±#‡3ª-Ûų«y´³ÂÝ>)¥JzÛÜ¥Ìâvhµä?,&¼3»ÈëüRNµŠ£XõÂŽ'Ñè-yÑ›Z骥ºö¢ºfŸŠrO­ßöuªªçŒ³Ö=_ÿòÜó eô,v×,ÞSÚ°OëÛ}rüþŠš(Nê]vÄ0'̪Ùâ([å¨(aPtœU96m°Þ ;wbÿÉ3­î®zîgXw[?áiê‘X<èRpåc]aÒ4\Ì‹EK¥ s"«–*°uJÇÀÍ´¾C‡};è4èKrF-K©Mûhì½»œqDÆ.¢å™ ˆ™ëX’±÷ÜöD';”¾Ñ¤NM,GOi3jXJMÚG«èÛjÙUUé:ñ90~¥«š²¸Ÿ²Àéo4²x²˜Ì] Á!Œ3|„-Ú¥¸ÏVZjk;Ûƒ'‹¨~q-ê÷•qFv)ÀB”ù¹Ó˜ù™°úu…̧hõËh¢¼‚ç‹Äéð}ѭĬ\—*] ”Ï?0ŸŒ†ÄÃþ½RñVйRþ‘_š²õoPYí tí¬uô_¦ÛxtâNå›ç ÷FÚy|¿[ Ÿoåh ž£m4-í&ÿ;QžàHW^ª†YÝh{hMRØê;·¿lÑÎqÇ@ÆÐÀCDDª_åH‘ßHÛ ž¨|&w•Ç;ÔÖY‘E/Y§ú¿ú}{Åw € ™ÏuKçïTºvPf®m´œç?ØÎbI¬ã®0§ÞÜ«»-üí·¤»“¦/ %–'î5l$茔u,¥ºÈNÓfD›òZ¹i»%mFÌ]WØNÚ¼£Àµ‰GÏâñc X•»êZÜœ—»É"ùn­WwBÝ©J¾+méAÉW#®H¾$Ü€ˆ•ô´«tÅ ¸%ñ0Ô³tÔx(çæoYnµäÆ-«ëS1/¥Mš£Îó‘íSÞ‡ƒ@Lz=q),㌲a·ÅR˜² Ì׉‚”Ã䨭÷Ä@²Äº¼ÜÃÓnKW¹8U–»ªœ®u’ó/tö*`®ÿE•ÌØªõ—‰{“2¶åtGùƒ¦;†òìC==mGÀã¹gàä;mBЧ#þϧ¦½}!Lqîa¢Ø ˜MPl†ñÕñ«¶J¢ù«ôUÊažTh{Æ«Ü]à:,­Ï8œ”“{k’§\ò¦ÐBkŒôÞ·ò ž@|ê_9¦#ˆóÑVxynµ3Z¹Ü¢­óºÖáºiZ‰÷Œä¹µ~Õ=;?ÓçÍ·ÏíäÍ=b™³[¬÷îö×yzñ”ZÿNP ÷%ßfœ”ôîµÔøÇ'ÂPŸ][iùñ—ÿ06/OòÃKê<~ià)´´rkð:øŠ¶êüG´r«ûçÚ'.¹]ǧ>é³ù¢qhù]<£ZÚ¼·áLÆ&ßÞà*Z]…Ù‡½ÁyÀ$y(JÄAUkä„ùºŽÝ±âšvÇÊû~¦Ý1FØ·o4Ùí¾ÝQc°;ÖvLjÝQßæçØ3¯iwÜ=¢¥Ýñ»mÿ÷vÇ?ÍvÇ awœ[o² 2Òîø•°;>2u&ê'ìû¿iw¸S"mŽV¬ ÅdMAkâá1È2hJ Ù —ÔE«MšM]*Ðd8S*F´0zÜ)¤ÍC&C™ 1O˜É°š 3#L†×K/Ò©¿&Åõ`2l7™ ‡™ /üq—‰?~žÍð—H›aÛºŸc38›[Ú …ë~†Í`iþ96ÃvÝf(3Ù g"l†žëþ}›áä‡ÿ‰Í°öÃ6ÃùH›a„ͰøÃ6òH›áÑ6öÿ•Í0çÿµÍ°áƒ×fððŸÛ %þ6ÃÊ›á¶þ›¡áýÿÜfPM6ÃÅ›áµ÷ÿC›áí›!ëýÇfx u›ážËá6CÔû-l†êH›á£›á˵6ÃxÍfÙn3¼¹¶…Í€òt›!¶á'l†=á6Cþ™8«6ìVº^§3êËRîi;N¹™¹jù¸Ï¸ƒQ¤ÐÂh_ù’AÖº›¾ú‰¤WßÃzBƒRo;Wò†Z<±¡ÌÅ:^FFM_úrë{È4 l|~?±c5|ñô> Ò>…J×jaç¼&~úm™0š*]ØÖ¿·À›P%ß’¾$KxÏ4š&÷E%à]µ ÄÂpñlÎ+ÃÇwJ¾¶}1ö(Þ€¡ì£ïš-l—xW±¿‚'¬nˆm äß—#Å~ÛB[W_¹'Ph8ì7KìÜÒòÏqN f£«‚Ì[‰ÿ&¶ï~טRK¾‡p°ß\&ªçöñ#’ï’yçð7bçðJó7¯’oÙ;ì£?ºa(w€Âµ#rFÐèCg ¸sôìÞì™JÅb ¶áÙw¨ÍŠií‡(лw{tÞ½·»c…iÐí‚ÄC´xü„QØãÑ…½åôª¼+íçýh4¡§¨N{¨ÎLYÛau¾Fmµy+—@,\r»‘—n í7ݡ˜ÅzºEK^Ïkœé~9¯1ÁÝQDY&p0záD€i9{mú˜,¥ãtÖ¢Ó³–UH~ܓ϶&ªùÇUu©…5´?èi¤J¶äÅù;¡—2Ú}ˆym tGü“.\ñÀzc߆…6E*ì˜ih¬ï?¥¼xޝù«ZûÊùÕɈínGÖD|Õ1poäŽc  =võ˜ôg­Ç$ÿ%šø; ü›ç´™½'/‰ÎR~X¤c¿¯x¢åL\º`Ýxîk ì:jSÉøå¡6Oãeàjx…ƯŽÓæ…‘{˜g PŠØ ö1Æœ¶Øù3Oó<-ùºâ3Ú‡VØÕiIÝ 0 E7áuzi-BÂ物%·%Øœî* Q ¢¯ÖWî>[XL’sz²\oîË1’on¨ž§¨Òå#ë½®P¦4y—AºNÇ(‹Ók$ø­‚T%¤÷Ax7Ô6ÐsÓH­J¶Ž]ØVèàÛ¬Ê?ÇËf«"°ù­]ÑÌóalÖžp©–â •¶ûÀ ú´2cÉUbÊíl‹äk¸ÁbIrEÐEQΚü8Z¹Ö=0 ¯2Šœ[Øv­%97v­˜­º|#œæžåÙ>–WI[™È MqÀ¨×1•`Fûh§³ç54»5aßaßv¢ ø‰¿Üíûb »Ž·rOÑn87+ ^òíÜ$b›$Ü`¨¶1˜b(ª´v7 JO©oNŠýÜÑb»_J‘ ñ](«ûÓ~i–±šÓEB†O¼þW'(WãÙ0 ú9$¼Û‰ÈØ?#ûñ™³jI«²ºò*¸'Ïú¥·ù—L¦Ä)«¥g0Ö· o«sc”SCõÙGàv°åaàÌ—q72õƒJÊUè wu–œ²*UΨNS=yª§H©§Úx·õ… ¹ŠD¤å¨VeÏ:ÙU-¶³Š34iÙúÓòôÎv)¦sç$Ò//¦¿3mÞ`68c•ókéé ‡Å’ÎÛÉ¿âêlOMSéÜU•òSÆNL+¸k•õ "‰v2×*m,üÕN9›s³WkÊÊbW.C÷œôVÆà鹤×9élQÉ7cþ§¬b»¤2·\Uq¬·®O–±Â»%}µ$FÙà4è…AoîŠ8iym+Zá=çß S ‚Á„ý©hnÃÎ#"h_Âç’¿®Ÿdª¬x,‰w%ß‚öòH í7?ìyœ*­ÆéUv5&:Ñ,xÔ«Ò5û«AþÎ@§'–;3òwæ2fë”ñmnZp›¤Š½ÉeøFu—Uóìªçµñé²gM¦RÂv–4ŠeûD´a”âGý‰k*]+…¥5H{駈¶n˜x¬H—¸<ûФüÁ°óžbçy ÔŸyV6ÉƒŠ‘™¡"ÔßÅ7÷¼‰Ÿy)90¤çh³XDºÁÞªf¬N“sWeqhŠ«zRB¶OõøPê\¸R*»¿x-ûáGû,¹#¯ËÊRfdÐæËUrJujª2)‡û¾ Ë:òìUlTIõH–½Š{VxsWZ™gµä[„à³Ü•Q`´!.?{%U²†»KÖöÏ^…ÙÜ_²ŽNM£EW¦‚a)0NK`j¾ªrT1­£Ž`«à6 j(¿DVò” U ¼~ ¶wù`ŠÊ€×ÇÛDg¯ð6ÆIϰ(O+]k¨ˆ=KºqJ-ÇÚùt¹ê>øzzqõÒÓ¼ØBígUn§ÊQ~*2ÙYµøbÅ›ø¦ —-¤eW‰Pj¡ZëHûÃçâ\;yœU^¤Ê®5LÆpç¬ìR³¾‘ÕyñS¢ÿæ¹@‡²*öu}+Fƃ‹š]*IÜïa[¥§ f-Åû‰Nú™{{R &˱Þן.’d|<ÿkñëiÔHšîß=g–ZŠ¥ƒNJ—³«Ó•¶☶‡A ¤;&MÎX—–ž®Lø“Å2ž"‹±¦ü~¨ŸûýÕìó%øýÅUìþâêqþ½K/‚n à»d0~Œ¢ín+•ð^èC¨¶#¡*!cµ·!nÉï–¸„=ŒB¦³+ûN³Œ5•~tS8‘Ttɘk…´œä5c%Òø¶‹ï‚Nã¸nê<6ÿÞ…EØ=\ÃûB)}„oR ŸžšÃh¤qÀ¡k²€:­ÿÚ»¥/Ë]ʱ¤àrÒ}±D*z©Þ0üàº8 éݪ®I^œJ¦–âÝ«J»ìÅ_ejš†SÀrÚ6tlß…ü&¢%¿G´.iTñniY"î©GTn+ÅzéX…>KÒõàï F±­mØ!Pý"ö|®´9Và«I 4kR•jÃVÌX©qòþ5•¿´xOÛÆ.¼DGÇzËû7ˆ“`˜Z~÷ÕP“0§IÊòTªv ×UÚ‚‚A" ÇwàÁx äç FBÊêÀ1CBsìš;f |†O<½¹«¬¡sêı]$F¹ë˜vÜv =a£Ññ™­h ¤€T9¾"‘ï8Ddê餆ò¬?Åö³­Î/çÛ_zz5Þ#ZÆ÷*G—ÐèýÖ’Dr'îMøºÇy¶} ZÕîX qþæNÁã¤2:â®>ÿ½ÆçX}qÞuy}´ªG~†I?ñøa·àéM‚§éØÐt•Ç ü½¼_‹3Ý¥]:Kÿjë­èë½ÇdbéŽ"¤rANb/׊¿¨þÅ.™C\£qµƒîð¯â›hpµ¹9âô:ÁÙð@vôvž]‡ÿrnH¸œ¸—}ÉöY½û-sܯ²f·uk¬?˜OÃqµ³vnûÄ:¶50€Üœ+ü‡—dÀwk_ÐÎK»êz9{Ûžx˜v•˜2BU¢Šùw.9 7@ðð® TA(&X†cÏÙ¾0ôKs…}ÑWç-O5²W1°š²"±ئøXEò#hÓ_n(µªV:;MëlÌ}}Ž^òºˆ‡»¡ƒë´þTtp~Ÿ•N'E•­÷êÇ‘Šª ¼ ®M0HAŽ9¹¯ Å2µ´¯Ö—ñÔ—øWÙ˜bô¥^[.ÇýH±òRV‚5!L¡ulÿÅ71n¦g¥ªÉB–ÇB›÷\TO”cKÑâëÍ"%f‚PÚÓ):Ë&kHü”•ž¶ÞÓÑ Þ‘õÁ)½ª,Lª@*®¤‰(vhþÇ ›+@;°b „†ïiTb55œ$lñ^é.ùЗä½Òmé´ÍÝá*a&MØE4"2ªÓ„VÜ &:«MÜÛßµ Ǻ-¹]YpÉmOd¹Í¹kñt[ ïí5•θGK6ø#\Ì dÒÔ 2Mh³F”I²ãÕT¥ò~¬å*è¯m1PÓQÅk–| ¦aU¥•²­°õ\ ®¦nfÛ¾D;sqé n؛߄Ú8+r €‡k*z‹ÍY±ø9Q¨Ó{:R§¬2:¥š} ²þ"Ú°Ú¬%Kr¬LŠçÕfäÕíÜÇJ2ÆKL¸€¤}@#í§H(É÷¡Xðjþ«ÉqíAKÉSTØW ýAMÝ…-þòЄtS^¾ ùî0!ÖU䏿¯¦Àã»È?VLY „¬2Cáû|£(|ßȑۊ“a6̶Êã­ 1ûŽÁ è ¦ø@ªäصÑ«Ùw`3{O·aÆjiù—¤—csA9ÞλâdTLd¥õü«Éûör£I›í‘mkÏ‹iÆœZNý½ÈàÐ_LÜJ³²¢ÂÒæ=2µ¬cx`BßK½eòL«·1zÉòÄ«û޵`ðï94мK:õg÷ÑH@wê’/8u›ÁÀN!&õ¬LÁ•¶hdüËlß¾ <±Wûéƒ×ì;æ=kS)Óí–V,ÂÕYŸEzukúœ>iÁͺGlÊœ6Š%Ô0wwi³hM4-€ª{OgîQC« ü¦ê%t=™£ïñ”¢B«à•àf-ø ¹ ‚o›^Ô? -òllŽpµ—4‡Gùü}ËoFF~s»ÉY7ô›—ÂT*º‡Ç¾¯5蹫á RW¶hòDƒŠD‹ÞÒKº¾ül¥òª~ÙYpDÀn8䎈Šþ@{‘׳‹ »æ]P@Báþ`Þæf?ºR¬ÅÌí—¿2˜¹†A°E´<`w0w.Ϊª¯\òïúŠ¿òƒªéY8ÒTÈË,ù^ ˆp¸†xor}‰{ýªT¼eËÍcÅ" }#<ÿ‚IZAºß:Qÿ5÷µ^FÓR÷Å™½çóþDž%ÿS6“ýO"tÁ‹Æâ—äK´…|èè•á¾%bØF|•ö¢I +µ€ÿ˜Ô;ì¥YKu'f{oÙbšVuQ]¾ÑØ%ø<€^iáÎ Åú1OØGmM…}ÿ‚©°mˆ2GÿþÃ’o2-ßç9³}0Ê(È[„Šð7¤Uȱà>C”Å, ArA¶ì‡ ºuÐÕöªY c\Ð0óC¥¹S¹« p¬*m¾Œ+¶E· ½Rî˜wy€ä_¡ IY úp¸šR ¦äN4xÖôÁøA’öÁ«+áNZ~;rµ¬b•æ^«X¥é¶įñ{?ÎÃU’§È=ÈPM‚Ä Ì" E—ÔŽyÃòÅ6êYøÞýÞ ¸ä+_}Ö@»¹ÓÅâ¼aO‚¶^ò=N‚Â€Š”쇮â²ÚîxØÊ1¨•«ÈÝ—áÚeq—Ýóƒ}Õøw^5nIœ²¡®ÿÜ C+±1…)ʾããýÙgÜ6oÊ +| ùVáЧö‘–ÏCóDïÙ©à¿p¯xCÿË>SQÓ†}ž°•e+`ãÑë¡â5L‚;óø@cQ~#‚G©ö5tlœ?C+ȯ²©à*¾ÚRq¥ «Â/'T¤²C {ReÛ “2•Oa†¸‰Õ‰äæA”!±= •£–SÈ¡ÁšMù4„ÁRÎyOYÝyÆ ô?ƒƒv·ú-X O§Oñgß©‰þÜ3î.òë[pkem=iÞÆ|÷ïòqÐ[Ò‡{jýun‡¶X¾ 8»H[-Gð|O©e)1 zÁc×ÈHžb±@fy÷Ç›ôÁçXçX33•Æaª:2¿3¾Âˆ-/#&°[Ð'éCçœão#Ú czSæøûb³ˆÉNKOÝä1*ËÀ¾Í¢üþ9L¸Pi/%÷L¥KÁÉ· kbyQ¥í)¤J²¿|É¥Àñæ°øvž Vz¢šX'¦ïSm/bžv”S ÓÑgô¹ëÈ]ý†Ú%ß9HÝ·°£šâ6W€‰/Ç®9Æ¿SvOªZZÎSâpO²´U™ìê½Ü^zýöŸZ€fÒ{ƒ^ä±ÏðܸÊvX ò­Õ_î¹8™ÝUiÅ ÅPH›D ¥åÃ{Ñ¿x#íÙ¹+†Ç°JÙv—·ÒÆ ¸ë¬bmYsNâ}îx»dxÌÚz·Û Û>÷yÎ’gÄê:ãþÏål…j»`±³Ù}CâÞûœ»r;rÛ‹ÌöÂç®Å?&–¿â±eXßÀ4Ô—…ÉVŸˆeâî3ÔÖÓÓqOéWhëÃN-ê Ü9aÝà ^ ]Q„¤¡ƒcØ€Ê(ü Àà³-»þ’¤7nÿ=ظZüšÖá?i\­{•Ö¸Z£qÏAãnëŒ|Ö¾ÝÖ«_”Žõò¯l‹A}6·€{UÜJH,g¡ îõPs«p¯§EÒÎ…&¸æ¨Á½ôÌ+ý5GÀ½ÆŠ/«™ îõxsëp¯GÉS»ÊÈìeãªH» Ã}¡7Xò}Óæ@9Ì„ûzµä.n‰ûÂÇwJ¾ÿî‡ó¼ùÁ˜~ŽÀŠé¸¯þý ÜW×~„û¢·-p_g ÷…Ù踯#fÜ×gŠª.0M— Ü—¨žÀ}ÅF™|aW…!õšù›O[Á}åî+©Ü×ÎL÷õM›±Ó;Û¿)Á“‰[Ã}}ãÇ7ˆûšÜÜ:îk¨¨N—îëŠÅŒûºÃH{PUß/3p_’o¥)í¢%%ˆýZ©a¿°ÈÀUý’K0X8/Çÿr|%à_¥ø˜U°}’$$ÍK²°¢âí+¿)AóÅÓ.q'0ݾË?… ò¿²Xj—²²ðc“|ã§¿D :ÄÇHÍüF„×€e­ ¼Fª/ÔÚæ¯®<ÕÊWG›#¾ÚÞÃÚùUÇ@ïH +ºÙ„ «ÀÀ…U·Ž û×­áÂJQˆ€[:~ÓfðóM›!x¹=6à©аÌÈ9]AÃæ n^_\Gá÷f¥xT6+- ¡oÊðMa÷"-½Žë…ïdz‡ø0|Gø0zb‡á >Œ$LàÃ:yËP±Aÿ\/<-àiÒyšŽ(*”)­†‹ê…Ð"-ý+ñz½À¢»›“Ó¡bxW¤cÅDeBX1ªÌßu¬ØCb÷½Ó ²+Æ‚qx|µB#¢¥]ü>S%j(wL6!ÆA¢$¿ R&]cí ÜØ7vţǗ3š—s£k«ÒSy ^²’ÅD‹Í­ÀÈʨ¢ª§‡Î04"7$#7lÇÜ5‹ƒydü¸„4ʈÆCº¹í*Õ7xÖ€•=u£¡9ÇhéY6ãFB–=nôêq.cîѤæ­òÓäÑúå&̤5ÿbLÄèšÓuØHº&k¶J0] î\A¸ÙÒ½'ú# ¸ßh 3?>I¨à¥øký2¿™°P2}+cNÒ3¹V<ÁŸ ')7Fù}¬©zГñ[\È‹&P õò£ô›(—a>Y²ÿ5ø™$£=M¥U¢‰2ôf½Þ˜Ft –£Ú”K1–€\BÁ‡J“éí¨æp„¥GÍ´%Ò­7Å‹±TN r~­5éé )«6Šjƒ9+/ßEX5ª®W£O»±â‚Sá\N&jRü0yUŠªFôåÅøWàÖÀGЭ\‚­pÒÇ’¯´3Ê:fǾ’ÊÖ®âØêó)"=+ñ}IŒráƒàcè v|>XZ>¾â"’þÁÊ6Á€²]¬8Þ†HøNòÿF‡² #&¯ôi6 l`aÓ-ˆ,-Íò§µO«±m¾Rô3ÿšf}%ñ0H‰c$_G}Êó—‘µËÄ‹íI%XLÔ6„ˆ„ÏÔu´öÂKŠˆØ(hãÓe*)Uù#¨˜ÀÄ RªêÜÏ.æÎ=PéÇ•lЋ–±"iBÙ"ò "{’z…`ŒËûNsù­ eLƒ@7N)F².Þ [RIè›Å»Ø× ÆIÏà¡&ð•–TŠaQŠ|Eu'+ÝÈ–EÛ² ê$•2בÐn¸’H”k’˰–ßÕ÷6X¥å Íæ»¡ ýK1/ÙOÜL‚°‰Ppþ¾X±ZVŒÇ×YñA”¿‹}8]&|-4T*Zž嬯ôÇ5눸j”h<É[$pb¥yD½~Í.Ž”`R‚ýI´*ý+šu#òöf ‡Wîd.ã»t‡`Ax`7•Ž‘+Åda0¹¾Í&‡_zé „ÉýC´ÖYÜ—ˆ¶³}«Š‚4[š\†„ËâTU™XfRÕ^-Í )6½ù±|©ìéb²ƒtݽé Ò8+KéökBy`–2-०*Q¿ÖÑt±¼„$P0ÀHFwœzÉ[†y[Y)© ß±v8Vâ£(É׈»’$"%$ëÈ@ëOßk¥=M➪)¼JÃUwׄû­¿ áîℚªôëkÊ#˜P\ÄDIÔS’üß6½É\Æ*&lÕT|‰zÿ .ÛÈx]q´M4½ö^,=óëh]Íð’ÕÔ›Œj\é_­õþ’xNxz„è½LjÁH/SU–žà”¿À#ÅTúŒEo„$ÕV¼‰/Ûˆr­T¨¨Ÿ¦¢ Aë´R¸ÈPzæñtªÀäŠ>w‚âžÕ^ ¡÷þÈˉËL>duÄð! ÃG÷„á»9 1|x?ÑI?sT‚ÉÇI2>F þz$NdMz™ÀÇó·f©¥X¡¥ÓÅ`“®üvˆÑ&°SD¹»¦ÉÔ0öyÆhÀ>Êc;øÓ„c•ü4Œ}¾¤+º˜šñ4e ­„îÆááËu ~$ÞPø/ çoË`Ç 7â¯x5õ&îMÍD:Ó¤f¤·¤åï¢uˆc¬q|¸ÀZ^Ò¯ùš@,.5KØ!BuKš.+|EØTÒ@Ag¼›¥–ÖÒÿ*ýe€qtêpß0Î1ìlbÉc%ÉGgIË0p` ájXùÔ? T²· ÿöY2Ókù‚3nŸ!n0J0õ$~1®½B~€½” @XÚ$„ïòÊû°´üoM¡FjYNRÆ%˜¿ +À*@rI:C¸Â\1þLÉ%ÉO &0\Öƒ1¾|ÚØ-Y6O+äIÆÉBªôÛaĦ ;i_Vê ŒF§ Yœª¦Û/ÏìEÓNcÜ–›$> \lˆ÷6Ä"Zâ{UÆ·Ø„ ‰…p£³R(©oˆ÷­ Û’G4A³«`ºŸ!lCiT“£k1G’0ËÀÛMxHõ“ H‚‚/Šfq0“I|zqªŒø”“Ñ7td«è bbªZÝsÙ&¨±| Þ¡YHªñ¯rò¶æÖÔrN$ ãÌkèD|‰ÿ"щþæptâhª)™:@±îªn ú/ÉWS¼´¿hšhTh 0JIðů†5T“Vª65Í_·dÞHCˆÚÜFí¾¯Ñ4ÐWÌ ‚kè\VašaÚDUŸ˜?–*C½Š\I÷ûuí¨F `tMT£ÁRäEƒ.¤ñúŒ´:\c"3°q31PBsfz`n+:·ÄÄ1ï¶¢pcÃ.¥>õ)’®?I$:Þ1îj²D ±þUöõÓXBÔË1+ˆÓôPêp:!ùs¼©sXAùô%æ#û±%Ò^å¶[aª Ó™ÁŽT€§=âE 2#9}È(oa9ü?ê&/$`Ç[ŸÁ?—ð[l*¡ ïh(HܼI(H|€(ÈXÉWŽÚùJ×¥lÆHš û?E}É5ÛŽ81áóšï…ˆAv’ûjšò6ò‘•dS+Ô½:uÉ[ì Ûa†µ_܈w:Jò“RLF@Iâê‹oŠª:+$¡Ê‚ç#P“©¦‘»wà`³˜ÿPáF“ˆ ‚ò7çi^³[3~òïµHt´åuå²sÐä¼sØUc›Å¼ãS¤²áïm#¿õ¦¹¦Åë´cÉò×P”l0i¨»`JóÊðõÉÇÍ@Ê'ò÷æ|é\åÍÅ”[ ¸¡¤¤L¹­¸FÃR !•Ç[÷Ž¡JTš ­%Ǿ-5ä‡Bxe9ûNøn¤åÇI]%õ!ü ïJñ®âd”QÙÄÙ¡ëŸ0!ºªqÂOµiféàÅä>"ǘAËÒòOO˜ÖèT,J¦-[mý6‹©õÞò1·\1™!—ÔdÑF˜Çt6ÅÑHHwê’8Y«ð¾ì¥& 4Á&>Í ϵb¾L¥jXLÌiÄ´šTÆž ï„—æÉ(óM“{æœ6ÊìÇC˜«žÒfÑpÂeR+Ɉ[ÜÌxÄÁGŒÌÉA‡èLü<¸QÇ#ÒŠú*³ÛøòŸ4„A(‚¯9bQü‘æp€Ágj¶£}ä7gCÓÜB³žýS1Í*ý‰èL£Y÷˜šØ¬Ò`–¡fiÒÑ, £ù†^ÞíðñÍŠ„Rj4éR@’Dføþ¨ñ3¶ÔD©„ ´&¦wŸ dE 57ÿ±ZójcŽ¡_¶t17I¸8|Z6ƒßÀ§…ÎþÚ‘Öà÷fóØ÷&Ìæ¿ð†8Ç€m’#…‘—•ûéc ¹9¥¹)|¸rs@Dn>ªÑ=ã¬Î¼6o®î¬õ·icZ ;+€˜;3 ûZ[h)LƒoÞšþC¶}â«ç3-†¶ ø&&%øæP}¡½· [£ºc…oœ°ø*0eÕä!ÍÔêÊJ‘i%ßSf4矚³»¹ìÄèšó¯¨cÈ…ã$ßÍ’^ŒÙX烤Èè-ÕzKѻ͙x§y²%–ª˜œÜæ‘‚d6åÙGCè°Ç¹Ëièy=£]Ws²ü„kl¸*ûH‰“7ûp˜|ùW§AH-§0&&SÛ̵öG#A aH²¾:’ÌŒ­þCH'Å "µ„‚Þ«†CA_ýC (è63Úq Z{DC‰öUÞf T¬?d5-øÞG€ÐТ’´ì«i¡è¬Fû¯hCjåo™ýI´2À¡D>rý/¡/8ÓC "¯.*"ºóÆxZõ‡Äë@)M¿ïŽW¾ol ¡D‡ðbZ¯Ùë¾M,ⵊ6Õ¢çêë{P´„¾=ì¾ Öy‚[Ä2LbùÙAШÀm4Ž žcËîB¡ôw1n”–b®ÈÏ¡Ó>ð#6”$&ÐÔ¤AGIÊÞj6CGéÑ ºç#- £k"AšÏš £ Å„x¿·íÕ’?žžx<=:£EQÁ-aаwÃÖ?i±&ûb$tqz´iv Tå‘ßÜ Ð£DŒå¨Í…žŽ¼wEÓÛ³Åý«ÇMðK< Zþ×Ù¡Q/'LSJOÝu<´= ÒþivˆJ=tüh§ã„% p<BzÏìÒÊ0}hn¬Ô²±sԈƦ«¦6Ü&ÀþÇd‹*„ÒBZ! 7ð¤!¥4©ýŠ;‘QƒN4AHCkŽ!=|ÔÄ'_E Í& ©]ûs±»,! ‰$}Δ‘ÏÔd€>/:ë쬖tº@XÒŒ£hý…­“‹¿óP3œtÀ·è §êiˆÒÞß…"¨ô4‚J¿7÷áÂY-@¥¾0Pécú{쬠Ү‘Ý(B`!£xî¦ÙnV Lé´æHLéï"Ä~ïÃ-0¥?F¢ ¾Ö0¥ˆ® üW¾ aJñ‘ûBàÔw!nþòÿáAfaJ“¼Ã–-üYßá<Œhh1`¥˜I°ø]øà󋇵Á'¤;Ö„‰ÆJ´…¢Ž€T=âF SJÂþÏÃXê_VJÏŸ?NÏ µ€•Þ{8b@½EXÿµ~5׸º®ŠÌ¸ÒÚC-p¥v Wƒ »Œø|5 ·®”{âZÚŒv>Nhô6^r£2ýÇÆÐRY²ó³T4Xiã`É×g’}¤å§põc¼+Ý«ÁJskù eÌ£ ôË„í‰{‹Äû· \iĺ +¢hÐÒo?ÖJB\©V-¥‚ÇJ•jv¥âX„”~Œ®Ô„+i<¥V¶}4)Uù¯®ºT|r—QNwv ¡’5@*G-£ƒFй͟Z), ½Ç­’oþfªà¥§Ö@šJ4²Vqÿ7«“GXyv­w« ŠwV1ëfrKÊé ÷|¸-™}îÝj‡Ùñp›ØizÈç<äŽMÜ;Áy!·ð¼íyf{v„óÂâÅoY,}-ž)ù*VÊ=R,–/éËsÏ}:i`ž9d{kpžìfÄ®fãI ,;†åšá«;MðÕ‹{ý§Ø½Á÷æXçD¥¦*ÃnÀ}MµcòÇÙð5ú W`7Ä~EkÄòÈ>„]Â_N¿½´ßÛ„åº|ê ¨t"ônúœ(ÕS‹ ûAÎ!Wþ˜ˆ7À _Sb9òƒc*õj2žŸx&±¼êRiÃ5z =ª üOóÿC|«´¹B%p+[Át9Æ_~=|ëkÿ9¾u_×ÿð­¯ýá[ënøÿß: ‹o-8§ã['ŸkoýB@O§Ì4á[8×*¾u¥Húë™&|+æ¨á[õÌ+ýœ‹À·> ¾¼4Äo}ð\ëøÖéä\adö´q•w®|ëÿœÃYK@à[ŸŸaòmýSà[1A+øV||§äû#á[ñ¦;é„oÅŠéøÖ»CøÖ>ßJo[à[¯¾³Ññ­ŠߺG˜x—²MSäç¾UTOà[ûšñ­íÅ7åæo>ÿ·ð­þ¾õð}³;Û—=×:¾õð;øñ­£ÎµŽo-¬¿Äl¾µ­µu|ë aèµÉ6á[WY®‰oÅ"MøÖ×"eøñ­w¬Òð­ø8ߪ.eÚWVúW²Z\ϯ9§Ò"§†xµ$³ïëjÉce˜æ“ð÷ð;ô—¨BÇD`]GMoµz·ZÅ æ¯:·öÕ¿š#¾Â°ÉæyÕÁi-æU74GX~õWMX׎¿2°®;ZǺZź¢@!Öõðµ8"âù‘‡ï´{>ŽÀºŽšÖë:.Òý a]‘‹ ¬+*ĺ.FB—.8ºâºRúp¬+½C¬+¾#¬+=1a]ñ… ëJÒf`]QÉX׍C?g`])mÖUK/°®TcºR™­a]EeBXWªŒu}àœëЇ°®øN-Åïa6ƒÔP’ïluTXW¬½uíg`]{Ö_ ¬«Þ¼p¬+>Õ°®xÉJ%ZÌ>×Ö•*JXWÁ’¯´¹!¹a a]ñÃÖ•´ŸÀºbEÖ¯Z`])å-ëúà9Ös&•o•1¡Ñ/늣@ÿbLÄèšÓuØH*°®+Ó•9kƺ>N ¸ßèXW|‚XWüE¬««+b]é[sÒ±®øäí3„uhÔ¡—E„uÅoCX×ÉÔËÓé/6Q.Ã|²dÑ9ºV×Ӛأ”›ªÜ{³^o ëJòB 0°®˜Q ~ÊJÑÛ!ç±®”:„uÅ[ºb©œ„XWjR+X×!TÌYYÛN`]ñCëŠ7„u¥ì¨p."j® -:„*EU#úòbü‰uE–¥u¬+f'°®x°ƒ 뚌€!ç—Ä(m•Æp¬+>OÖ±®y$ýÉ?ë:àœÀºÞq. ëzǹ0¬+Y^yް®—‡ù_¦_„°®x'°®ÈZˆuÅE¬+ºÞADÂgê:?~ÄKòˆØ(hˆuÅ’4¬ëÈp¬k l¿sÖ“&”õ#"ßNdßv–°®TguÅʘF`]1…Žu }‰uÕ2a]±ÂÖ•¬ÜºbC¤2±®˜I“\†µD¬+V?„uaA¬+æ%û‰›I4¬kì9u9'°®»ÏXW¼D¬+ 0­a]çt¬ë޳!¬+% ¬ëãD½¸s:Ö•2 %ØŸD«Òï;§› ñçt¬+^!Öß ¤»ÖKŒÀºb²0¬kì9uÅ/½ô…†uÅÖ:‹cÏ…°®-i¶4¹ —Å©ª2±Ì¤ª½ZúxHi´'¬+–OX×s-°®çëú«ha–²ŒyÁ,¶[´ ëJ(`$£;N½ä-ü­¬”T††uÅGÖÕwN`]Ï ¬+¶ˆ*H¥=M➪)¼Jÿ™³:Š©®”Õf3Ö•xÝGiÉÅÀ„â"&J¢žÒ±®T¬ŒUXWålëŠ×„u¥\NÖ±®Bk­<'°®/g¬<ºâwëŠjH`]±*ˆ˜Ãw!Äœ^A 1‡/Ûˆr­T¨¨Ÿ¦¢ëzÎÀºâ§áXו$ÕÈìeñ¯ÿÄÙ0¬« qVJ`]‘ÕëŠ$D¬+Ý›°®x?ÑI?ˆuÅd„uÅ‹$#ÖëŠÙ'½ìß]¯a]±&BK§‹Á&]×Éha]ñ©ÀºžXW¯c]©²ÅØþ´«LXWÒ,ëJÍxš²Ð°®H¥ŸÆºÒÈØ¬c]“‚‡Ü$°®+©7«àþ¿Ît©é-ëJu]`ƺ %®c]ãÎ]ëŠÅ!Öu…¡ºëŠE‡a]_>§c]©k‹±.Ö•8¡WP3|ŒXWÑÿø‘ø@úbaÉØÁåT8§‡°®x‡˜,dñWùH”ÓÓ©Ãe|cƺ’®Ô°®Ôý¾bìþ0¬«Q>õO•ì-ÿ„u¥ŠD`]ñ™†uņ JŒko77Gb]©Ã®u¥¼ ¬«h¤–å$eFss ¬+I.a]uÉ£áÏ”\’ü²aZźF²¬Žu%' ©ÒßtVFÎXWìÓR˹Öõ ý˜‘n¿hXWÁ—P@Å&¬+Þ#ÖµélëXW|¯ÊøVúâƒp¬kÞ93Ö“š±®xߪ°!Ö•­˜Óý aXWMŽ®…uÅaHÂ, ¬+Õ#L‚ü! B¬+‰b]“™LâÓ‹Seħ¬˜„ˆ¾Ñ°® :SÕèžË gÍX×Mˆ.‘á_åJ£!Dæ–sê XW|ùó±®d„c]©wëJ D¬k2b]EãÃ*‘£”&¬«ÑPMZ©ÚÔ4um¢Í:Ö•ŠD¬+ö¹Žu%CÓ"Ö• ôÛ©2¶s:Ö•î÷ëÚû§±®:KM%ëX×ë2b]5&úi¬«Á1%&Žy·…¦p)uð©O‘týI"ð®6RôøW9u¹9ëj;ŽuE=ºž úú(ŸX²YÈ~l‰uE£Wz¥Y¦Ê0]ÖkXW1ÈR~ô!£¼…å¬a]ãÎ…c]uþѰ®ØTºö=uí{N`]ûèX×ÞK!š›±®dÛ' ¬«Pó[š5¬kѹ0¬+¾nëú4QËÔ°®Gu¬+fXW,D ²ëº Ѱ®Z)„uÅ?ëŠÉÖóE¬+fºâûV±®‚‘LX×"s“ˆ˜°®8»m‰uE[¾¬ë°sÖ©‰uýjL ¬+ZþÖõøÙV±®ä‚)Í+Ã××ÀºÎÓëJ¹]늙r[ñkÓu¬+MãÖ•\*¤JTš ­EXWrÔÊÀºÒdBú;gƺâ]+X×]£[`]±6­c]É}DޱH¬«wt ¬+ÑR`][m½uÅ„‘XWdº>n´Q`]µFiXWº#¬««†kë*d‰#Ÿ^늯4¬+æDXWª‰ ëJÎÀka]»Â±®‚‰ëJN·V°®÷¹Zb]‰tVÁƒ×úvrýûX×C£þ}¬ë›£Â±®¢? ëª7+ë:wTK¬«®ˆfµ†u<ª%Ö•>îR@’t¬+‰R %XWLß ÖuïÈŸ‹u}Nú"û\ëJÎVÖu¿뺓°®äÇ2°®’,Ï&¶¥[ź nÖuºFGôŒ#Ö5´†XWá¬mëú͈–XWZÓ°®ÉçZúþcD+XWLªc]ÅC{o¶†°®ØT˜à+ ëò‹f#Ö•êÊJÝç®…uí?âºXWò”‘ï±®˜ëJo©.:Öõñsf¬«ðdëXWÍÉÝÖõÍáaXW,ç'±®¤¸Èò®±áªì&%NÞìÃa>ðÖ°®˜¸Ö5~ø¿uU’ð®TùŸÄº~˜ü3°®îs¡†í[ÁºŠUcuÕÖ5´¨¤c]µǺ"µò·xñ,¢•u%ò‘런®ÄÆôPú†È«‹J+XWš— ¬«àÝñÊåªp¬+­×ìuß&ñZb]ÏX×ïêë{:Ö•¾=ì¾ Öy능ô'ŸÕÕÀº žcËîIa]ñ!a]i)±®ÉÖ•¸ÃÀº’”…c]éQ$Öõ›{ÿ}¬ë[÷^ëªišV±®s[u=¬ë¨{ÿ}¬k̽?ëJÄXWR¨&¬ëäs×ĺ¾wO8Ö5¤)[b]½÷\ëŠÒëšzÏ¿ƒu½åžÿ ëÖ Ör-¬ëÇÃZÁºÒaXW"c+X×К£ ëªñ‰ÀºâÐÜë:rXK¬« ·ëªiˆÖ°®Qñ®íaƺ†­“‹ÿ’ëÚ°®T= ëz÷F¡­c]å¤ë:=éçb]‰-±®7%ýXדC>ÖU€4¬«„a]ñQ+XWïÐëb]‰†늙„ÀK-°®¿ús°®u‡AªŽq£†u%a•°®¨ ¬+=_uýÜÙëzW$Öµ»u}Û@¸Î2®#±®'~Öµ¼u¬k¹Àº&/¹Qy|×Ïĺ&ƒ>Ö±®A3ÖuÿO`]ßýO°®Oü ¬«Gi6c]û3°®åáXW<™Rúž±\ë:S`]=µÞí:Ö•œì|Nëú¥w»ÀºŠÐ°ç±‡ó¼»kâÞñίsEÜöá]¿^ü#Xè{=ÓòU¬‘{„X)_ÒG]’ç1ĶjPžÿ"œkÊ  †i…Žv8×;éX¸Zžcó×-\÷)önð„ºj Ô”SÍ!¸«%݆ˋÞõ6ïºEû.Óp®ã´ß_hx×òVñ®N6ëx×WÃð®è ùùx×ßÿ‰w}púŒw=øŽwÅúþ_à]ÛRãþ¯ñ®ø/+“/îçàî~1ü~±üþ~qlGE ºþ ·¦»çðŠš¨„Ê„í [*”(ÙW^ü¹Ã®ÖÈîÛ,¼m×(ÖŽ¶uaccl|´½ë;cç£]G8ØÓuD ÃGÇvËÆÄòÑq]Gı1q|t|×ñlL¼¼´¯<¯¯œÖ÷>Ï{=ÊëΘ¹5+3#j 5ŠƒÚÄóéýúÊÞ‘-¯?”øâØ—×·*Þ½«íøËþ5ÜdÊ´løxzjä Gþø¶´âhï–¥íSšòá¸DO—æUëÎSìí3šxxRJˆÈ¥xrÈÕ´s+ê~ tFþæ¨5} °kűØ[ÁÍk_Å\M ï ‰§4ÝJAZ,µjû –ÑÀRš¾q5èyÁ S°¥Ðu¹âX;oÍÒöU®Ë”}dÿ;¨Ø1(Þr+ÔDm_5‹¹(g_Rm,ãÒáÇjMg­cvû,Þ-Qåß» ³n´¡¡Ä¯z„Ç 'ΉyÞz)mR¦ò·-–›«{·ÅzT©xëøYÞ{- {Cê!Y›c‘SN¤*쮋õ“§‚í‘©<彪N ÞÉT¦Âõ´àj¼žmOí`—3N¤)Ùֻ͵ 2â'à"ÕÏž¸3õ?þ'||â…vßN÷/ ŽÂ±Öº ÕO—QxÙ….£½å6¸€ž}òˆ&¸+´q8Ü7Áø{¤Æßö~=ß&''çoCËÀ¾ÓX¾u«F×I@UÕAdÚÁáH,×GiVgXÕï ëô¡ÄÐô`®´¾-ïJö+w< #dJ­; Ò$›Òô•Ö·ãaèÓ?>Ÿ}íqv -k£¦ÄxÞ`UÁb³Ú.±ÅL¢<Ì\ZæÿÐbø‡ ŠþL²Ñ5O<„÷×h¶ûëÀZ–|ñîÆéMí8<¯…»=AÖëA¸GåœÃã;Öë!üÛi6üáò_«rØ+]8œÇÈt*öF‹Š`ÀÁ%¾± ëf—7v¶ËtÀA望u³À¯|Œï Ÿ}?d%O¦åÇU#Ƴ*Œ¼4˜ÜÑr>˜Å(*¡8€]é‹ß処±ªȺ”ל(¥c¬†Ü]ÐbùPðSzÁû:S°x˜½R‹Ë=¶Ä½ÁÒP;»j9ˆZþÕȦ² ~€uTC†<éèÉ]£ú·!ÒTTúXwìi¨¿i$­©ŠIjƒTÌéÀ;á§³TÛp¡PŠ__ ݬaçÙMOä/ûLú‹ )üÔZéç’¸k ’ûCíÒQ2”›é ñZﶸÄrïë’“GH¶ï¥úÆà]W «ß‚>qV‰kÛ’oä¨sZŒ÷ŒcvÕ©ÎvåÅ_£㽜²CÎØÆ²w§òlÛG«÷:첫œåî`ž*–]]é:HuøM‘“¹>QÞ¬¶Ìp´Ègl9«á .H<å píPþÒ$œˆä›ÜZ¨wâ^žÿ\;·äÜÀ¾¡öÂu¾u~=÷Û¡|Š glÛŒ}Â$–7±óÞeŸ×ï“]yn¹ó+÷=rŽä=Y›p‰œ”ž–©T mR¹kÔãžÛžèdw; z“”vnRE[yFyfâNÀö°ó¸“‚}U@•¤Ê ¬ÞòoMmÂ6v25 rËÜäØ,£<ø6|̶ÌÆbâÎÝ ñÁOtz¹(’`œÍéDzϤ‚6PNVjlÖ­’¿¼ Â=gæX ôŒÚÄr๣íÑn´³˜Æ¥Ì”|G Ûzb„dÉOž³µH3ôDãñ umŠ€{àÕŸ­"Nå}¯`:—R—ç†Û±ÊÌ ®`wv~Åvåĉ|¸m³–Êc9Æy`îY~ãJäGPq;ð«Á¡#ù›õ;çùSUçW9#ц€ùÍJÊ`Ц§0ƒÕ1ž~Þ1tÃ{Ñg#m¼+ôd2ƒ‹ …b Æ8¿š[vµ¢æ¢K?GÂÑ[9VþVy¥S“ •ûÖè^X%QùÏvÖJg÷Ð3jTàa`ìI¨ÔäØÙã¨Cx×dÒ©Í8ÿ¥£gØäñvì¶NøuÅѨTeîZ9wð{¨Ömð‚ß«”¬òâ›Z[rÍŸ¡âêpGgÌ9>èDZP]‹­Q·Í.€âe²@Üà" Ï>MËǵ»¼ôĉ{ç ù”=½N¹Ê‘©óËJnú°L˹]£ïF¢oÆ °×øÚÅZ§ç TÚu™rbîa˜œxF'¾Oò¤C0» !YÛΓqÛJ=äUG]b“|í Q’Gq·áób‚([+R«Aʉœ$˜ªñ©\× ÿ[5Ô £«y7>™yEç]‰’|ï[Ú|dU¯FRuR°kn<¡¡yw"5¸óEÁCžúò&ÁdŸ¾bð䘑Î}fž Z æÊ±Y›û¥eè'¦þ„±Ñ_Îs°eX!÷i˜@°JÉ&fðæ:Bçó2Ï‘À0¡ŒgWãÊȇ¦ù (;Œ‚B¯ùÑKæž@1xéŸí9¿+âñê¼$Aîöu^Y»§:a¼—#R›À²F¬¢ãIÉ·‚\Ivþ$~=Ú¹}îÜÉ·ìæ^îv&ÖñWk0ßosî,â±ky!e‘{&ibXbc.ñaÎî£!Ãø2ø¯"ÃHÉ>ÃG6ñø‚ñ`ËǸ;âtì%Ì2ø940 ª¥Ð±Æ.¤:_IoÞgPG:¾£ƒÙSèÙ4Éj˜Ïez]µ”¹NTºj3$ÿÁvBõ‘A ïP;‡âîaV?ô»XÉ0kJ z~î9Q¸œ´óÑè¼ËQîtM‰yî”ǧž`¡Ö—ãCVÚkýÈJÓ›šÆ³O zkBõÖ'Ô›‚ëq8úßÍøwzNªùL›ÿ°Ø¶Ó¶^Öå•$ µÜ±–8`­ä§ãuc?à…ÄQ;YÆ–rÐ]éª&¶"ÆpºªsÆñŒjž};ž×rîÊ×¹ë%¬IÅñ(0Âø°ž3‡õ”|m±M)GDש®jÈgîGÐHžq„?©ñXj¥«Šп£eWåüÇ ”*[ÀŸÄl“\grn”~Je“œU̵[òÍiƒYVáü‚•ðíhnÛ€» %rO¢`ƒûQ˜1VºV“ö¨ã«9»6q¹vxn(,2É¿@×$¥Ž¹‘gì(, ñ„ä»7Z¼¶uå);@Ë3²Â¸£ûh¤ßjÖày­²ÍkÁx;z•7)†ê8ªG¥û×ܶVçM0û=±¢ì‚=zöEðÕhb¬µg¯È‰æ Ó0'O (¸®h(x%!štà8|eÔðE6<"Leãlî><»†§Û’Òí9íòw±¸ïÁà[¥þÙæ9JV{z—ò}Øö)5|¸C˜Õ®÷ëÁ`Ba{A)Fýœn ~æ=&°±Ä¹ŸpZì]ÔÿUTÀéêüQ~ðB>Y1tN¶äÛ†™è`ã<åžêP;-&óÃÝ–O‰aSiÒû‰ºm2忱 ¤q:Ñ jó‹ñQÔ:,òâ–’-ªú'ê\›’@uÿ„O‰Å“Éòv¿Ê§™†§Êûø›}™ý‰;–,ÛOÔµ(pÊE«‘oö'ù•8ÈŠñÜy…JNSöh)²? 4Ï3‹ÉÏÃ*õûg(ŸeUaožµê3#Õó‰âÕÓ) ŠO?…™#^ß(¢¯¦‰[:ÇFè]yd1qšÞÏÆ_Ä'Ðì~væèÏü™«°ÜØÃ«XÊZ0>S@ºÀÜø„¥ldkáx]’Öä€)³Ñ»ÌÏ]«¶Š‹±ŒÄÝYÙkç~ͳW±ìšÀ+hÞä»>1Öà1 _à`÷àèHÄWÂü˲É6<°ÔÝΫ؀8ãœvÏ#À,„igœì wlk´Ä­#Øð&(&ŸÕ‰6ÚÞËŸ$mÅ:ä°ÂƒB÷¤”³’ïu|4ÉæßKpK÷¯Ø1Ô Ã ø²Kd`ÍJa®jó¢‘5t8ôº«Üó-H*üÊ‹ lüI²˜Èúa“…“¸n»/(`™ž±:ç°.É~»Á[nã1Ãa’ÄŽ"¨}ÊŽü a­cŽîÁS 7†Š™tp«Ó†É¿§QUÅ8%ù7¢–ÊÞ¡ ¼0!òæYHÑÅaÈçñàè$>ÕVŒb‡ÆƒÖþ3ÏÝÁÇÜVâlžr‚$,zg#ÏÇ¢–Á.a)Û`¾·#©ƒ»ëHˆ6Î=z­(\<Êé*;VrëH$÷R¼qnmåˆ&Ò›0flcEd ~Æ'Û¢û¨û‚Ϩ±¯ŠJÔÑq– Ó8ûê3­9ã…M>€ÖZp̈µ#r7Öî&}Kê:°èŠàgÏn9å’’‰Û RŽ^Ã|`2Ù?&S ¹”bç'/㌠60'냗[b•0¨m€š5 ¸í(p ~ŠÄ¤Æ.ùn‚»€Ü 欓l‰;gœö–òîèfU³—¼¹±Qé"2÷ÄÌë£ }W ÑË@þ¨ø'ä—äqˆeá§ûw.Hóï\r3™Oê »@VV÷/áùMYÊÁ¥WÕÉ|šNª'NõÄf¦g©“úK³”£ÛÕàñº1V«{ŸçÒn|Œ½ÿÛK [{ìnáYý€»Jƒo*K¾nRCk ±PÅY¼û,ÿ^QQÍY£Û,íà Æ)5@éè“o”¬ Æ»-v–÷w olÿÂ~`¯3uÎhvW4Ç"çžÈR.ßDþèEYJÝ£WÕ™Á} WYÊ.¸žLü¬?ú‹›4t÷ Lþètþ@¿~?héýìgC…¾È›vµVU%o‘¯I ùÕóÏ ßCΰ£ßÝc×&Ï•®•¤.HþA]±XÍÄÞ% ,RqÅ}7§Ä)ê+ùÇ ºP/ù_ê7™wðnà`TÌ=ãÊS`èvä3úÁøÄGØ@ÀºD·•9ØS (Ù››ðï\ÐL±8l\‚ JåûK';=gmÕÂxDüT‰ŸÝ¤ $>ÖÆRvó%‚9Ų«øèÙ}ï[É÷(æä*BU$;’åÅò%9ë Ÿx‡_›Ä\¼-sùø\Xõ<Í>—|Ù`&¥äÜÉS|Òút[tGï•v’Zª/43Õ‡w¹>«Ó»Õž”]0weŸ[d]ò"=«¼NTòñ³Vü¬1Uy Ϫ…e¯ U¹äËk‹®`Ý)ÌéJ–,ß_v‰§nä ?‘ã»C•…OX‰3c+Eç0ŠôÙx[âaÜ €Ñ÷ÝÑ §ÿùöÛo³=õ§XU…í<8/Š”c“óq¡Þ"{Ö=H„Ö‡1¸!–Zèé뼜rFo8Åðîj÷V8œ—Y×¹'ùSGHWJ¾éÈ cmIeÂOM'"xñèa쑃ŠÓ³Yøò<¸¿Ùj•ž|Ö”Vu^ŠDwK›4»z-~<8ªY+‡;èéö`!Ï~Gϱ¤¦ À.({ݬi¹3*ð’að—vÕ†G¹áÜ!ùs±ß–#oó§ˆa¨óÿÂLvDÑ:#o ð‰vM켄X¢cjLáÅ“¡‘¿UìGmœÎ×°îãt8Q´„¢’ñ2“‡rDÓ¹RÆk$/êzVŒvBá8GyÀæÛ)ÐtI/ÁÙBâ^oÙ Ñ -â f>Y:\@Š‚½@"CRæîôºMhÿ@”_ÏË(4Í^F¡I½È "“ò2ñß¡Š&í‚q»=Hž•ž‘™ŸâòŠK–ÝZL)eú[BÍëXd’—ï1üßçh¢h‰´˜*Aûÿ²Á/é°A§è<÷'¢A|®ùkûüĹ·‚l×U«U¤ª¥w«aVÊ#7ë¬ôó^Äg‡Ý{ø`â°bâ¶¶|ÜÀg©Ÿ•`îÑ]C|Ö0Q:@㳌—ùh{PæÙ/#Ÿ¥Í±DF{ä`´JœƒìŠ ä7 Fd0õ Ac´*ÉïBþ” 1p‘‚p3Äh Ï;3" Âj £µkà4£ˆñìôñ6ÌÞÖòÜ5ÖίÜÝažÂ'ô…ö!²#ãæ*LB[pFßètËXwElGÿ§pD—‡=ɜà ڹ¬6Э‰ìÓøS8>‚@ÒP•‘Gãk á‰íÂJâ·¸{Á8 µ›ó뜊`ÌÊ]>ﻵÌRÎ…†¡)ØòI0=*`Å‹I`fCÑ|¤m©8mçe‹i rdåÅ1HÚ°e(÷éèghÔ|“`$be ˆ¢3ò¼*HÓjÉ÷ƒU Q×ìÐç#ôÁf›Iv Ùrƒ2ó{ÎÜ$zšÄèƒÌpdú‘¼¬“—Õ(/7ߪÉËjMR4½ñ8v’–q6«Œ·PÞüµ_Y9JJ1>áÔÖ]˜&Ò“x$k`z=m ÉÀ×Vgð;îÇ«ÊU|j î,JÜÉ®p×ÓÙWHF6ŠcÝù"’‘Ê–2ò8Éf¥¸z2’Ïï!QAF\Okb2öÞ6L@JÝŠøÀ½Ðò2·. «A ƒEܵš[@@Œ‘x5ÈÇ} 4ù(ò!d#\. É…®3V3¢\`I.Ú âè°3¨¯]PÑ*J‡„ôÆÕ‘‡…¨8g¯8æjžõ2ð¢´þJt42KÊ*æ””îQeÖ“}‚8€ÂTGùi›OÃ'ëöÉ¢H–ÁÃâAIÌ ‚iBj¶±Íª0¶Y…lsú†m²J·M2l“aò`iÔÒ¯¬™‡’r4°:ó8(}~Äqš^—ákk;`J˜PLOéSk‡àN(áÿÇÝ»ÀGQß{ÿ“d!“XÄ ÔƒvTPPBnrµ,É"¹±›  a³»! ›Ýí^B°`Ñ$È0ÄæX´Ô¢bK-ÇÇz¨¢ÒÖÚ€” åXЍT©'"Õ¡6¢PAöù|¿™ÝÍfP{þÿçõl^ïÌÌï~ýþî3P¢Ð+kXóÍËK¯æÛÎÊ Ù)/DÚnV^xÃíå wE´¼ÔÅ•—_Ì¢òR§5Ü;xyÁ5©—@Ý3ò˜¿ªæG ÌMT`V]Œ¶Ø;¸,m“Yì»~«–˜ch¯OñbÂ’!)½ëdËÂçUpVÖÒç1t³PgIp—]öÏ¢‚ópWž0æ)Øç‰-Hê\ÉÆ-¡Œç¾DGw)ŠG5ŠDò²Ìà8´;×…'…ƒ[B–´—,JÚ.¨ tØ> ¢·÷4²qÊAš z·ÊR]w§þÅŠ¨ì¬øu‹ —N+BhÍÔ‹ô>Öa-ïî)‚ ”Œ7¦ ËÐ{X?M@ÑÁJNrY]9tC¥3.jÄÊOÙ¾Œy)v§¤{÷ Ë‡Š [ƒGå7*äŽPåó_†åwö~¬Ch6mZ^:Dlú@¿Qœ³I¡ûâ9I‚²HW‘ûjn{è³)4u¡Ž¡å×[3 ï=µ™jûÛ­™­céÆñÒ¸£­wÖ7}Ð#Wõ ­ìHaCºâÅH›x•ªžVs†lK»6gýxÓ«R‡‘¦ª„LI:Nîòß©ïRFý@)>Õª+T,={;“;tl謁/ÅÒ#/Ñ¥{ZË2ä2Q[´~¼é5©Õ$Omd*aã.¸ä{A±œjeÚûA²ü—”âž›vJ©êiêΫv‡~¿ >ŸÅV‚=-gäuO«³ñƃÌÇà}s.‰Tã´Üêúº=0Zµ£Ã¸ÝÆ.©›àtEá‡Ál%Ø>ý³ÀØZ¥‰^ÂEÇÍFé_<ךù»áí ¼Ö 1)·]©Ú¡ä°c¤¢„Ø$Kp¨ò\§À÷Œ`ïPªÇ+FÊeT=Œ=hߎñ¨’¢XöкäVÔ?yÝ!Ù²E®jƒt¦yésIú–L6ŠoÃÀ)eµ®ÃHù'¬]šð «uòÙ%ú–÷h]IJ™æÉSév­vÒ4ųƒ©G¼ñØu!2÷쟕=43^H«}õÍ^i¢ö`9n¸¹ÇØRæÂ0[½œ~ØŸ,fK—&ë6¶MÞôþ…q‡(ú²q3R`¥`®w„Þç+˜ÓZ†\;HÛ ƒh,ÅC“± •¥;iù6É_Ëv:Ò ·a8Ó¡»—â6§uÖ¨‘Û…œo`¸·툼åÌ‘J}sÊ ÊÒm(Z4Á¼W¾¶õn 3·ÓÒòg?Wž#s­kërì ¡ío9òÙÏɵ?Ï%±Ÿ´ù¯ÜNyòÛ9°GÉ£Iãtwh_áß»þDZ¬y… |šÞØ€Þ¥ó¿(è¦Ð¯ŽÀªv¹‰o_¢ož¥cëœ(WòË4QÙZ¾‚¶ž?\ÆêÛWF!¹C)fyוŠ+†¨‹Jð_£•G½ˆS ãy‰nýÏ(+èò.FO_®ÚÜwfпó‰c:¦€0Ðì½ZôÛù"€V_«vÉR£äŸÌóô·ýבù&6Ã?êeT噣P@~D„ÞöBÍT˜ØôR§ä6zU؊褿åœgÎYv雌¬Ю¼LÚ”~¿âûX $6LǘêQê¿t°î'›¦½&ÌîÖSãÝÒé“ïvñ>XÁô·ü&åQº%¹ð(u†Î¾+?J­O3^T~ÌüÝÀÍ|g§ÒÊô2~Å;8M¯èf²þd ”ôƒÿ€‹¾ƒ$qØûØð¨jgË»:Ú#‡(Ž—Ô‰‹}"ÍѬÛÖo¡‰Et€÷‡ƒi‹ÚÎÐæ4ï£^ ³vŸ"ɺ©)¬¨˜x6å×ôÐÔ¡[:0œ¶¾Á‹(K7yÔæòN{ëàéš~éb´ –S]‹È –ˆì|¯ü§ya…– f²^…?³5s’>O¾“&ê¹FìZ É-ÿ†²= Ñl9%3Õ®¶¾}æZ‡ \Ieå„m7ézƒÞÄÂËY>S®EònÖ†™ë0®ø;¸_v½‚M¶ë[hóŠò#&è[èÄ€ò¢*[Ø^VK»ò‹tÕzy榨mŠüžr?K¢W%¶}~#Ó@ÒºMk¥.põ™ûHe9ßHG/[¿ õõcù³ÛªÖï=Ÿœ{C¯‘”JLP(“Ûæ®’U ÀB­²ÚÕJ㫦½âÂа?A°¨a_¸½µQ”1¸›¦0”=leO•)H¶J+(th¬ë—l«I;Ûº9ËÙnCÚÚÆNóË=¡§u´Ñf;&#¹¯ÖÙaˆmHìúã—¼˜°ôìrðñfp²Lw¦)%È“ô ,a¾ëh„ºjú°)´ñoçË»þNWVÑdQÝ8Û}_[EÝnÜ„M¼^²¸ë‡l¤5xH^w¼Õr°â×ô[tèÊ,Ú”¢¢ð[K§š¨ÁiM§Fµ®EköþÝüðGÇ<¶J,/ÒÉHu»7=Â%ÞãM”Âh­Ù#ä6MÙÜH¯ nSª¶Ë™ÏA8mëö{¿äÚОö†\µ³ëIR9ÒµÃïÐ?'ó+;Ô+©;WÖB³û¶M…Fx¹í]]P÷•…æüýKD-N×0£w |?pÅl$ð÷õ-OЭdÕÖ”jÝÊÑæþ_†sÏ,¡u,Ö·Ðù’úlÏÖ: nÍmï¯]lÖ7/YmW%kí¢ºÅ§o»ˆDkF›3¼é£ ã.´!ßG›¸ÐLmbÍ;Ñ618^ ¶Ý{ ùUZÓØü·sá°¹k&<ÑYYÄßéb; ,m÷Î ³ÈE}ó½I1­)ÕÇÖâC ‘¹‘¼rÄPÕA4ûô-÷²uáQJp µÒÊÕÔM¹J¹G'O§”ˆòQY·ùßîÌ2¹BF¸®9*Ïúå!ô7±ò±s¹ü¶¾ùYJ;Ö\þEßL½§éºÀ Ê͡ڧ•IJñ9WùžN^£SÌ¢¼PìºâMN"ò2647îØ¯(WTJ‡±¡Þ¼ Ù@;”;3سo˜üÝaôì×)÷ “ïf÷ tòBvC›pƒå2f£x7|›_ïΠS[º~B¯¯©ÚÝý™\¼»{+Û}oSçãʺ-M©ÈÊÕâF!æy¿I™›ÁöŠÓPµ ®s¾¨.ÙúÕÖ;¨œÚºîÐ"žò–ƒ”ø{0ÐgÕJßL¯Ëb»šõÍWÐë.CGß?®ì ÓÀœº‰ª/êT5|YN¾,à¾t?‰*ò(õAÞÊeUIJCîïc•äo].zS6jÂÔYM8Ð5öK~²ÂL¯¿ð ûÅ0Òí*ÞWßx°©3E;5H~­éDŠII‘Oç¾Êø+Æy™´IYôü¤<,ÒÉ—;Z½:¾¡2™i®‹ä«ÚTá¸F“ÆŸŒ»¸÷bòR¹‡¯B þœZßɺÿJë}e MlÅ/tFh<‚´dñýºÑhXÛZwßL…ô‹FgFÌœŒ1£­mJ4OŽ"†žTeãRånÝÞˆòye~ÎÞt)‹uòŒw““ÊÆÐ¦¼!,þ4²yGßB=gm& K¥®VÉøž6Ѷwo§.e›ekÔaˆš§¤¯LJ*>µ2‰oIl-îÁÀÎx*tÛpvŠPÞ›ÛN¯™—¦ÌÕ)S¶±Yà :U™Y똱R€#ëN•Ź1éš‹áîßÀjž®;æìêhe+­fÈoíý8EFg2ã‡Ê·h‡\Ò·Pg‹¦¦ê“Êü@Êwuh0öv‹ò_”²œ½ïëRîÔm2¨†G¯é[Ø^¼û#öR„—õŠðý,Â^‚¾€Gø$"ü¢Ø/ãÉÐŒ+Y„I–#º¯¤,Ñ=ÁbÛŽØZBòµr§Bk¦±…oõ°’r-‹xÕɲx·®FÄŸER¾ÝýëÈÄQÊu‡ØLµlì‘ÑC)){heWÙEƒ3}Ëv>QÕrÍ;µ‡œÇs2Øt-Ü|8™ŸXÝÀ¶fṫø6vЍ?XÕÃt$ÕFýzÛA±S Þ¼q_Ók"m¢:Ò1&> ¦˜ç£OV¾·% K©ê w¶¼|QYw²cµîBh,y>è¥øY­s¨S%sr° LUÌk‘X¿Wv°5sï'ɹï¦Ü­›þ™g[Y8(†ƒ!¤[8óñ<Úú™¯»»MñéR&™¢zoÑNžÝM§¼Øƒ´¸îV¾Ð<¿ûÔjš²+¦n½²Ú9z/¿R¡Ûûq²léÔ7ˆˆ®äàv|¡Y­›YÕ©oz z‹bBô…:¾»~ že-Ð!\j]Ç‚‘RV÷3 ÆÃãøë÷žn‹$î˜D‰»#’¸#š¾·Vê;Rw곓µZت`"§Þ_•&–zóu4¼HaRÇ0äIª:–ûî̪ãþ—¢É¨…3·òp÷}Ôý„r§.劘¤ü3ò‰“òÈØHRÞ«&å2JJZnkS†lë%ZZ^•ÿ£Œ ÞrÇ -P¢â÷³¸‘Glí&E2' "î!]vfå»×ÙÀF}ç9ãeËÓ¹GhÄ¿³Ã¸ƒOBlá¶ @ßü^‹7zÚ´WµKÙÈÒï‡lÚ«rñ6Ù²•Ïä+ëvÑBÇíI§k›f$É–Íú–«ØNˆíJñf…í±J1è¨Fl ,¯Ö…ƒC˧yý–}úN/n9³T©ÎÔ·Pé§QSMÙm Í`f/Ñ·¼„òÎvÐPÿ½™ ¾K÷,s¾ŸŠò %¸KyŒd™þßrU³ßI³@l·‘l\¯×c0‰V‰~ÿ1rxÙî}Ëe)<ÏOfžá~¿üŸ.Ô·L‹õûÛÉQ¿¯Âý¼™ëš}?ËEGz' –iýC©Úœ²T¤¾ô.Z-Ð¥, R«o~…Br ű©3Yÿâa”Œ§)W¡}z.Õ* s©˜fÜÁ8Ó¸¥!E6nQòè܆.é•îg(5 ô”ž´W.ÞÜõ¶µµ%¸ =NÚ0bÜ•2¬5øÞ¹x=q…õXtIûºÑ_ÙÒò*•–LnȇÙ~æ-+‡å™CÛÿp.î’™D^Fom­Ö7w²©¸]òÙðë8noƒØ‡þ7Ss¼”–å¾§K™.¿%ŸO©Ûjó`ùÏ<:´v”rï :º*çÕé_܇‹¨X¶§ w–9ñ£ûEäZùÐ ÓvtÇXp;ºÿS)ÞJ]ûbÖ;Ú _¾”oÃdù½¦I)þŒZT×(èø– ý‹¯ÑBÜoÖ&q¿áK¹^G~\-gê;òõL„*yì€ׇ»~ý*!Š>éQY7ëè»;¢ºsõBÅØ†îʸh>•W܉]Idܯ•Ó`l)ÿþÕzeÖoÙI‡6e©Ž}„®ÖkZ™ÞZüÑÂÆÐ†è_œXVÑaÜ]RàxžúÍ»åªýMû3eãžãK6¨ËƃÆCt×ѲVŸÈ}—qË=rAYûèþ‡éœÆ lÙ.¯5_n:Ÿ,3Ó ï5µoê¼0n?M97}Ø#£ Ý_–Ú‚ÚU “K>‘?íJ¥ñ|¤ æž¡ÅÆz]Å+m¹auL¡,ÍH»H{P›ö‹‘>mÇéc!zƒrî6•Óý†êÞþõòÛtv ÕpÉxùu.g‡Qwš t;Ød“:-¯S;Z,*÷>­®UÎT¾•‚®RÓLŒ:6ÑŒÃ÷Я]–¤æ#+4'ØD·¾ù%V>Ù{š~Éæ_¢îËÁÃÆý«)‡6°ËÑùU”¨K$j š¨:™™(Q¿±±&ËŸ6œBº ;ÌŠRàÚ…¹í(AMr™EWk´3­uoËmïþH)Fh7v›×²`n¦ÐÊÅmϸùë¸~½üÅ0YM¥ ç¹Þe †GþKÊ‚ …­§\iªíü±*›MÔ8}ÿ¢Z¤-o›ßfEzé¬H?ø,é ±"†æéí¬HSáÞ^Óodv'ŒLrŸÈð™ù‹ÌnDfï¶/Ã˨HËÿÔßO;º?T_ÍǾÿ¶n}‡ñäITt™Î· 9O^fz%çIÊÿm,9“«åOõ÷_¤ï{FË¿àRQ—I ôW‰oF½B?µÏ5ÊD"“½õ½Z&çsŠE}ïÀ¢Š¦S9ôv>Bv¤ÃØÃ[nõpˆ_Ô©ÜC²å¤ì¤Ñ{ mÓ~®¡LFOXÝ+x6Ô« Žl9ø7 JeKHµMïé0ÒÎk9IF o9¦ebásö‰Ï›öç°}˜ÊºCh‚‡°Mä!'‡ãqÅr’9œVŒ¯ºÈÎ1Ÿn<Ù?Z^U›©a <$Cô*:ò5ÂE&Ï×±²|Fÿ;ãIù@Ó™o-pºåøjQ)>4½¸Ó7‹6ð;á…ã6ã¡C̈Îq¶Vu\ßÌÞ#jìT(\!tõ»Fâ!è>ºGÂe\l< çém8ŠñЦâÃo„ÒöáÉAɉGX~ãc:óôéÁ-n ‰,Ÿ“?=< OßpP\Ï:Í„G« p ÌB|"Û4õÍO±ùO ô¸sßú3õ._#—NÈŸ"Üä# ¹ñF¨ëzÓ¼±³á÷áâc·­£˜uïf}:³é áÓ¡bÓ¹ðoéÈhêÖ…+)P~^¹ôU:>öM~mßÐ>wd€ß¿Â}eÄòEÿøúÇׄ§Øñ:yø|¸cÝ’ ôq’M?#S¡?Bƒ[h9R uÿIPÇõ ÕŠ$ŸiZ×3Xßü!r^ßLoZ™zà§Ï.aÇš*NŸÕ¦ŒzHB_;p»¢{hNÞñåö½3@žõ°¾¥I૘ùÌ™_8D / ‘÷–žÊŽü‡çúœãø„Ö{´éçƒB¯­¸€CFxjH‚YyòèÐHö‚ÂÊàÛac–¡€æßŸÙ5Täî^YúüOçÕƒH”´÷]‰ „³ebþòªï„ùÚ®2{ÎCÅŠ–°90S¾¨|'Ü  킹ïV¶5Œ–>ÿ1Q)£õ¨µáÀcbè‡äA^ÓùŒ{:+BðÐ^üÃí”íƒÈ5J¬È'?_ O9½ð”ýøß1¨]͉ÐOʽ)‡ñXÙrfIàÏòY¥!#¼Z ßZ­E¡[ÿtž-€Ÿ žì~®-|¤{ýåløÓŽâ¸dÇ0ùeŽn¶•Gf µ,túu0ìÏuáÆúÿ—V2«-íÁCO̡Ժ‹R f@sqð¾ˆðÙòÐÿþÝ—áÊ%ʈº/¨\ àhÑIe/_@[ŽòCš!åu*?ÜÜR”Ÿÿfå§Â¬\ç"µwR›šŸÁoól\ !3yÙòî²àû‘ù®PêÂÝïðRÆŠoàŠºäÉÍ?}¶ò :3=sP;³Ô’Ø1h§:ì׌ž?£jT^"…[•ŽA/}¡•|¹@{YèȱҮjtÿRxb}$]ƒ5OØYJn¢´¥Mì…|1y¦|F~G¹sØúéÙÊÒ‘›ÐùûÇcÏå“/”8uWˆe¡g_¢$ìF¿Çª…_‹»†¦N¹îneÓe dYhÌ-­ìFõzb³æ`èì"8IYsõuDãyµNôá)^<„†‘«hoÂSç©d1Å%È[jõu‡vtÖ’Î /QBÐ-O-Ÿ£û9óº=´æ”Ù†¸ý›)ô¡óa®´8øwíTn`•µŠL ø[Þ혫c©~ÔäcÊ|±åUtë™HŽ~>÷ÍH¾–…já^e÷ø¡¹÷ÜžÞX˜¶ßpêÛ›a`È¿¼ 4÷6þé :ð2òŒi‡; LS¯sâžËÀC`8žW¯íqχAI©°Øh,% JJ•àšo,(,1æ ù…&c^¹Pn2”˜Ë &cI¹`6.´àZh(–M¥B‰¥¨H((5ÊËacna‰Á´ND• e¥ærSiÙ|£°ÐRŠâWRZbLÆE…%Ð4ša¢Ìˆ{“Ñ¿ÈTXndw¿…;ä½PTh.§ºWàt9$a¦Tätã k…EF!ÆZaÉB ‚-䕚B)\æò üy_ÇZJ ËgÃh¹ÑT‚˜Ì`•[È<™žW¿2‚ä£Èðó&Òo¥Š[€÷íTñ†c¨¿@úKªø+óê#€ÃàSPönªè¿ÂqÈ!pÄ÷-‹­Ÿ³Q²úVëî€_ x$$d±¥j>ëÉ醷ßióCr{’Íã®õøê­5.‡ º\ŽV—䳺WIP–ê{;˜À=¿ê óßtœõ©ÞQïñ­‘¬.—Çf 8=n©Öêtù…C±‘òö¼AæwÀ Û’¾œ ÕUrÓîHÐw.ó Ÿ„©nS¸U[«ßï±9­‡=ÆŒÃ®Ùø¿Âç z%»ÇágÖM[d ú|I8f$Îc£×a#Ço&çGÃ;©Öéó#&uVŸÕFA£TëÍûýÅ¿>è 8½ˆ ¹ÇÈß7þ†üÙ’apÖ:aŠü òì P¨j®D©–Àÿ«ÏÉ’ÎmEv9m‡Á°6:ëƒõ’Ëá^¨È>³æôK.{"¨³ºcÂåsØ<>{g ù†’äwÞ­e^Âô79üÈiÉS+1©X`4I«:”AÉ\¸„¹ã¯G©ÄÄôÙb²´¼Î!•šò½£ÀBab¶#Ñ€e§Z™Y$¢öͽì–a“ d´P~È¾Ûæñ:Qoz‡ Ìh¸ G,îH•”X¾ûc*,OV/TðGîï"µA·dÈévT”ÄD;šÈJ}s©Å”g웈pªWúÇøÇìkò1¿°¸—å8áÚoúYܫܞÕnÉÁ%Öx1Ñõ©²Óå¬ñY}‰ËO!I?¤!¯#Ü­8{’ÃçóøúñßàN 7ë Ŭ.ŸÃj_#Õ8î¾b3ò˳ºI\æ EE¥y†r¤äõø˜„G²"Å<>ç '…0*û´ß»x£ò=ST"`,5ÅÊVw4™BªDÐ2P3Âå5‰Õ~´Ðé-,žIÿ„f4zÉ'JOÊÝ€äpÛ)qTYät£¶»³¬ö«Ûæt¯ ³K£ùsIûý­ØôEǦÐPBµ¢Áá#°Ô¶m ÏÑ·]Ñ~F·Ý#@}¬qœ[8¯Zu‘-*,//2ª Â\R5­5ô0³Úé¶{V'p¿Ø´ˆ‰)Ÿƒª¶*ýQÓR­ÃJA8zBž§¾ÞŠä`M=ŠÇêH#è °út ûæ|ñK·”Ý×!ÚŽF§?@YÒo;ª¦¯³ÞëB p­‘<^‡;A–•Õ»íÑjë¥Â›”ÔIÔEΡ0YSôÇõV"a 0[ œÝnÞEA˜´€%O$ºøoŒ/)’ê´ÛE’ÉljwðU­ØvšÊ1ä;É_¸à¦ÊËÂ%Yk©VûT0ÆK5VÛ*¿×jsŒ§@¢xGÒ{.¤Â‚ÙÜCÈogß.Ž%‡Ê3bE¶âŠ2E}¬÷ÎnK«ÈA?kœš\½DJ³ÖÛI5§ÝÁúG’—ÿ*´n“ýu⻡;rËîðÛ|No ·(Ø'Ó^äï®Fz®Ô-s¡_*ü¼ûI‰£ÙP£¤æã¥ì³Leqøjn«Ì^)¦v?©`–x4­:ˆ—‘?Ñî8‰[4Ó>Œxxg¼€%uÀ›A¤d-„ “f,j½DZŒûÉçKv¾ŠŸ;Ëçð:Ôö—ë~ò:ÑO <s­` wÐÍ Òé»AO`Ñ~Iû^ŒÝ_É~½Óï§+ÉºŽæ{¨ïD’ÁæA·$2°ð9êÑ=c¢5Ö…èx“¥ ·$©C×Û,eŽÓÃÊY¤}梯îðÅ4Q”L½¤o¤S‡sø,Õ Zøg>Fd9[$P§<‘qN· *~’—hBËceÍëÅDKU¼º×á£6Œ÷Óâ4žÄ¶ìÎ ¥š5l !XÏ­†Âíó¡öp Baõ;\Tel_¤ÛÉRV0¯ñ£ó‡Ú‰¤ ÝUå<–(Öö`}ýš˜…¨*X:zQ-jÚíŽZ§›úlô¼ÚJ-2™?÷2À€'Àœ`£~’…—¿Xû±6“®˜È}ª rÊJÙôŽ„FÇç¬ ¢Ã?æ ›3‰¸d˜ÔF)Æ . l“7‘ö ÎŠ"›88ññ\…–•KäxObtú¦TPª5å+¦ÿW´_NÁ 'tŸxûE©mPfe-™*bXž:ýš³åñÙݧ€ÆNäûqÅx@ú–7˜^!ÐFŒ”[} ÁRó‰å†Uò#=­>§'«Ñý€lx‚¬ö¡ ¯p¨#\ó³¢—ß;-C\ܘý–~A Ò— ¤l`O]n­ PQÌÿ¼Ø¬W­fÌfK±1?2ØŽ+_!|¬hó™Ì~Ò‚M¾–”-µ”£ö@},,!…Cþ÷§Ìd4묪×/U_„i@ûqù­šÎÞõ´¿_|~öçR‡æŽ?¢Ê{¢ÝË×§N»mަİKüòâÅÁW¬Ÿ‰ì¥ú™¨:ö‘QýTÇË ¢bÙË«:F±ió+Ô«uÜÉ&æâ ²dgÕ`L9í[®€äbë>Z VëóÔKÔ§eÅ)å£ÈŸø4Uì§SEí^8½fÄÜæëº£ijÖ…T±"œ*ž>Ÿ*íçù3±ëüå!À sžÉPž7_˜[Z>Ÿ¯v±ÕW³¡Â(˜-s‹ ËùrV¯2ÄYdÙK]±å¶²Õ'fD{ˆÎí½'v¢Ësê2žºÌÖÏj^ì’ºŠU(1.J‹h‰®¬ˆÖÑ´¥B¶|§-åõ]çcËŠ‚ðÎQ$ÚÁCê},¯ƒ7cž·² Ç·E1–Õ 8 $IsÀ¢o@uOóÿÀ8Q|Ü}«(j÷#n^p|o¼Y}ÙõaDñf0㢹÷6®'c8›õÍÝŽ…ÜÔäG¹a.MÑ –bƒyAùR^GÎK³k|4Çú›žz/éhðÃfé¼lêÐAüÌTzÄ>†\~u.ÚPã÷Ô¢©öy$ÔðDFºßK Ê«MåÕE†yf! kаAÄ8­+B â½ Þ€Õ`m¤™ ¿t;µÛç ›$M(Y}4Ê¡…YbC*Þ7`BZÝóKQWÒ…,—3p9pôk¸ë&¼p{\¹²c–ÏaCÛ6i"â:=Çír4üd€¦§ YõV›ÃãBÂxüìJ1g7uŽÆê CW6 ¼døâ'Ô ^*~Ú`´0»T**œk‚‘²ø” [qt³y" .iS°lpžŽ.n…ïH‚µÆ_F¿JöÊ‹Ë ¿Úxc+Ű«HO3óJ1¿îÆõA0§˜«%bw ‡Í¢ØcBy·ð+AjÛK!¿J£j± ³$VOHyÿzëáϪW.Db®ìÍ)‹šdŽÞ“z;ô;U·÷ _ÐHj}G¿V èÁX¥1ö邟O¤Ô¬  ÎÑo¶4&7'˜.8Ýlb¹¯Žuºm® R}½Õ;n¦‘ÝK>Ç 6í¯™Žhh1 ¹SZV]fȯŠ‹ eÕņÊj4Ì…ÅÕåóim­ªó,Løoä+¸”€ Ðóž(îÚŸGêõ$ óŠË…ò%TÅ({¬.!Û°eSÇÏEu[°”ç c–.ËÉš>þ¶¬*aL]p†ŠPŒTƸ…ì ß—®¦Ï‘}·Çíp¢&L˜ ש’úl‚×ãw6ú‚4C?¦>{Œ={ÌaÌâ¬1õYcì˜ù3Æóÿ3Ƙ…1…üÙ"Ø&¤‰uãÿïâ£Ûþ¿õÏ4¸&7MlŸ”&~0ƒ«ÍJW¤‰¸~Voó?y~]½w'MlÛÁSßávÅ9iâFð1(2ôïÿ¤¼4±r~šøcšø%¸¹€«“¤N÷I ÒÄqÀÁc ¸ú›ªÿgñ|[Qšø p¡ˆ«ÝRœ&–€]àÖ’´>{žbµÞ »6Ôó6JÛDäUÛ¬€Ÿ¯Í×ûùT»×ÊÕëÕM¶ÆiìjõòEüÜnßïà;ê>fÑ»B³gåöê= ܽ€æß¤©tU[t›«Öô× U÷ì>ÑnµyÌúFþF0¿^\'ò+·W§®ìêùÕi:™ùWÃÍ;'M›*8'Ó¿)ôo*þ¡ò—™ŒE¥#àVmU!=0ºÀs©©p^aIä1ß8×2¯ºÔR^f)ç6KÙ¹yy¥%ÜÔ|tÔ E…3ú¸´ˆ_”_Zl(,¡{¦_ÌÖö«ÑŽ£«_RdfŠC¥EÕd·NBuiYyai‰Yk¤¹ _ @Ÿ2E-&ø¥¯HÕ¦‰™¸þ©–ßÇr=ÔoÀTÕì¸Î_Ñ×,a‚:¼Yd0•$J(Œjò«1l‰¹g)”¿¸ÄP\˜W½ÈhXÀ%£?è´g±6‰› ö«M%Æ"-qòæóT E¸+_\f¤›˜2æÑmya1SÊ+-*2”³ÛbŒËiTE÷F³Ù0R?¯ÎÑ¥ÌPf41W ܪ!?)ÌŒ”c¤W6ŸÆ‘Ì®Ál1‹iø†ÇÂ|¿æ('"YØïO?wˆ8ÜnSÁ\P,`¨ß÷€VkŸ¨ª^¯P¬êiêt´u(¸2Îÿ¢û®ÿ—ú± ÞzõíÇ’ŸƒU[zm]ЩzÉj83T5:·Eß *2”ÌÓì—«f<à*0Au~)jü†¨jäÞ°8ÿ©îŠqÄþâõ%PKê'þ±îÅ_cƒUt Â4(†¤Ë$Qû㫸y¹ô—fZ´_¼º˜û”K  w¹nôG||RûÉ]œzü/9Ú7ÕûWšOÿÁýÜkñKÀͯ«÷¯4ß_O¹×ò·¿23P¸Üz¨ýrçrëVŽ•¯¯âF,Éê5N>«—,«ÏVG{J¡cò„²Rsa¥`(1VWNš09+wúTtÛê~¿uF1£ MÌÿ¥)M|„Àip| R›ÓÄ¡`nÜu’ê´²ÍPûÙï¡é6˜ÌÆr¡Pp¹ìÀ < A¥ ú:cGkÂÐ ðK¾Ä/þ Jª×È )—²Þû7¤×“î«Yþù% NÓ® vñÊ„TJ¡ôEÿ’¡’‘¿ô»‚Õ®¤u6ƒ•\\ * Q¹ó-µ•>>Ö ëφo„õW°ç蟰~¤p‹pBw­ðe˜›!LÈ'Ä`N·¥2_†²X G? ¦®†iÙÅè]+ŒTïôq:Ä5qjÑ;íúo ‹O3©c&Òâ܈9¥Í5ê>N‡ÈˆS‹ÞEíŸØ&‹ŸOßw¾&þÌz1Mü=˜»'Müòë41Ô‚Ó¿Åõ¥Ks¹æ¾¿Œs»ϳÕû¿åüxS5wB½~ŒëºË„Ü 8œÃa÷Õíÿ©8ýOóuÃNéê%ù©Î,±{ß/Ý Õÿ/¾ýòº‚>«k¶àæ7þÙqæsr'Nš–»:&Lä?I±Ø1Ð¥üϸ2]Ì|ãt°<ÞÀ–ãiâÈibÊiâ¡“;KÇ~˜&–àêÀuÔGiâô¤‰Ó>Mç Ðp:M¼ùó4qô¹4q+¸úŸpã³4шëaïMðù‰è˜“ü¿ÿjÿÉͯâ?ñÿ·ÿÃ?LëõœÈÿx;äî}Uÿ‰±1aø:ñÿ¦þ_*þ_Ç ÷_‡ÞF;ýEšh×¥‹{¥‹à-P”а¥¥‹?’.~ghºèÕü˜.>®ïm?¾nýOQœsMº¸ó?Dq78üSQìÄuóS¢˜ù+Q<ú¿DQm0÷9®åÏ‹âr0íy®6ÿùèšðX·"·ÄP"¸­n¡°¤@pºk¡^ ê•~4'cU¯ô+Tõ Ôg§ªWÛìø¦?sï>/¥ý»l5“m§,:™@»oýAÚ|K«•‘=ëßšˆ-˜‘ ì-5ÑÆ¾†D;R î ²=ÁmÎléeV펧9kµÛ}äˆAÛÝÃvDÓŒ›¶qš;ÙÔ³ÍÎbDå²kA¨I=Ú¢ííQð e??[T·;Ütz„ÜÓ1†WiÓõù‘ÀÂ;Á(Õýkø†jvȆҀ¯­Ù|¿?KuÁåt¯Š‹2lG‘–˜…þÞª;‘]\åÚíŽ9ÃÎÑðtN¤+”;<…¢¡dé 7,8tVEr9jK®ÈQ0‡c•`rXíYìØ ?>çÅ ‰å󬂧^§®ò3 lë;?³³‰Ž‰òd³Ã]–ÄÖ V÷¤ÓRx$ÇKèj[…di°:]l÷c¶›X;¬Äö…QÎhéÆtè(+êЙívsøÙî v˜ªÐNGmØA0ŠC\È«C9q¸´=e½‚]äh€ÎDæ¶ÛVçó¸é@¬ª1Iª³º1t~% !q:Wæó<6K²Ó^F~Í@×±Ž×¶íp.ßV ”ðb{ùéHaÌsÐ “H d? Hž²ŠFÛ§¼þ5üØ lÑxÅX¡•};ÕÇÞîÔ"va¾Çˆzï‘|:’ðHuЈ‰lLÀÑЬðÅ7Ÿ«{é˜QjR «DÈR;ÂdŽÔp7;Jds9¬´ÇHm*%…•L"ª{ŸÙ1,„‰køõVo‡N2F£Éšx+j‰¢G¼àä;ý«Ø¡*kô€“•vg°^=:´n…¦ÄDf4z6Ú|êâÇ-#ª…ÇgõQfÝÑ QÆmõ"-¼>Ú5+9=¶€‹ïjåíML“ÙØ«ŠK»‡NW‘чd ŸI’5õ5*o„è ¡+ÓÀ©~ð3!‘sé;ëÊ‹=?ähÕ6_±¹L{ô˜ºéÓî«¶…&)A˜€{ä/IÈwë{†jC;[G¡$QhÉT@‹Q/Ñ‹ƒ:<Ö8ÿÔ‚k KW.§™¡}s.uoHTѾ‰W¶Çl„þzhðÅD¯‰…… Š­õžHÆ{ø o?S¢u|5+,‘S“š¾VˉVgUû‚9lEz¯pkÍ‘#ÚÓDåÈ u[´îjbá­ ¬¦·¿Ø¬T™cÍXkà++Ghý:ÜÈ 9£r(rƸsêkeT3j˜©½PÏúÚò×v~>:R†}ÚvqdǘŸ6ý 0ƒþ’eˆ¸gÀàŠ!âõ ,5 6‚sUCÄŸàú,؃ÁE¾hˆ8LyÀlà^0jÙñ!\w€çÀÁ1ð øÌ‚~Zåñ`å`X–/ãëá[pÿŸ`xœƒ3A¸8@´€íàð"8´˜»ñ\?ÉK`Üf‚ÅÀÖƒ‡Á“`78 þœƒ–›–+q ÁÓx> .€QÕCÄ";ÁrèûÁQÜ߇ëãàsÜïµ¼Îaw!,ˇˆpƒ«W XŽûfàÂ} ؉ûÃàs0Ú ÷ ¶t€£ào ùs˜Š@Ø@yžíà08îAz¤›ÒÅQ*ÿ¬ŒÞÉ‹{?_¡>gƨ_gæ‚qðãïåéâ…¯Ág_Óž`æ×ÿRŸÿ’ÀÌß/ÃRŸÖƒÑêu~ ë¿9 ÔŒæKÛÓü™¥š÷?‘KUõ1jþæé^ŠûåÄý$”³oBÎ7d¼ÍFsÞ½—>³³Ù¡Œ¢Âraû©¡ì3 êµïïÛÂLa‰Ð(üHx^8*|&\™”“T’TŸD:³„¥Âa«ð‚ð¦ð¹0<)7©4Éu¦³a¿™¦^Kèj±XÞÜ«^ BGº˜ †‚ÇA&øp-¸æ`bθ<=º'žƒ[CbžoÀ}¶êŸ¦Fäáy H9ȯ³ÀßÀ©Ü,©ÿY½ÞÙ=u ÷ó×A ÷œ<5Œ÷ªÏ Uâã«Q ½eÀVªqöâºZu#QZÅûM(0û;СºñŽÇÕ¼¡ôüsŒºWM+ͽàþŸjZ ‰#Þÿø0%JÃo’¶šÝØò1?ý¹sj€<ÓžÙwÁæ ÙøÇö+«3f d×;ê™R±£žmìž!AçpÕ\R(ð9‘g¶-°>`­a¶ùc­Ÿžñcû¢;Ø­MȾo,*H¢ÒZ­“PeœWbaµïÜÊŠ åtÔJ(*œK$´]é~íš¼Ö@0c¦`¢÷œÑFLö¿–ŽŠª}åÙcü3UÓè{§ é4bŠZÐ1þtÁ7CȦ¡Ô·ÍÐtmìô¥ê{‰ªAûØé ±q!X´SCÕâ#=©¼ÈÌ š2{ß¹ŒQ¥ñ¿ÖÛ÷°ù ©ÄÍ•š%ÃÜBmß~Tµ£Ašfä•/|´§íõ';uðÀZm"½~t‹%ô[×hošM ›Æ³…´´±cüüL!³9Æ?.+â:c ÛÁÛ;‘l4•¥¾¬!šY‰’騇CãôcS¢×›DTsl¢³·)þ¦’Þî¨å#›•ôÞ½lÌÆ_¦Aã1Ê>¿cv²8öÎübgSLnd_ƒ2‚¡§:ê‹øéà¯Ð ¡[å+°Õ;¤êÌ K»Þ:ªK‰Ù]űãh¤-i^ÎrÇäÜêj”¤«ßóÈNä«ÏKÓ©•g'?cŒxëì¾^î`ý ˜sk0½o5PßuIÙȦ2¬õZЦ1ŸTTMÒ€Ž'Hl™Pg1z÷Xí1©“0mÉ O:ž+Ì-*½Ì²M}Q–:0ÌöÔÖÒm U]ôvN "ùüD_{¤Ç“ÔÖ,ÍxT<¬p¸Ù˜u‚ ×QFÒ…H­»Å”£€ÑÈvÈV{&©"^4en,§MÔì83n•Æ<öÖ)d-‰0R“µZÜÏ›;=nGÔ,›ÌÀøÑc§’a~,.+zÖ®»NšñÈu~öÅ>Áï™Àª¯Àî³r'Ü>!GXAÔ²bts'äF¤S`rƒ^òÂç[øäÌ I˜E38Zù¹Cð9"ï³áâi|$„·# Ñ78Ø[åX<Ô×H°ì`ï"ƒhA‹R£¹ÂñÔˆTvÓ¤µK–ŽñWÑ:~ ÚMÜA˜‘ƒ‘8îÔ,ã¿…ê%{â%Âåñ¬ zµÐ°ÈöמHcc"iw  #émkÆ¡†©ÓZê ¥ŽV±X“£ž-¼CàÁ!´¿tAÝŽ/–,0𤹖y7Üpƒ@ï‡tºƒˆ%™gIªY•¸€®Eaq |v{uE™ {IüÄ“zðÍáªÍF&N˜;[*4—fåæL<5*“³¹ú\c<3»öÕˆ>÷Õ+5`H–‹¿D6£ºSÔMäò"ÚäY]N:‘)/˜ÖÛ$)rV"uz.4ax6)&y>^#‰œÌ3OŒÓDžx‰Ô£1ÉP7w@ÝD.GF™Ð‹qjœÚ\ɲ˜iZÌYs^aaB‹s‹'M½=‘N^Yæ~]c)VÔ§¸iiÉ ¢¥¤0¯4ß8·p,ð*ð}»³•;#wz|&²2Ò[Ÿ©õ5Ó+oQPúd¶Ð{0?-az2wªaiB¡©‚üËMdJËÌœ‰9 Q£Ê_ó Qþ_üµwöœ»ÀÄo5›t®¦†ÀÑbÔbï«ng/ÍjZå$‰sNâ|v/¯ö bD¬«äÞÀ?Ú7Hã=íLTìy(Ò9Ú{G{éhoíÇ£ýv× |ŽéF0Ђǂ[};˜Î"Ñ(¤Cƒt>‘N;γÀ`˜ è€í«¡ÈÞ Š¾×¦ ˜~ΩT‚%à.° ,4¨¥8Ò>zÛÐJ@‹Ôá¢S”Ô/¦˜¤S´!s- 9Üõà>@ŸÊÜè`›}ˆøàéA@_ÿ|Ð7oôÕ[úÈývðS@_ÿ|ìOú@ß3` rïôÏ=ÿj}‡ïeÐöýà8^‡Àëà08è“Xoú ×;€¾3ùè'}‡ùC@ßAùÐÊ>ôɦӀ>~vœ_€ à" ~2÷Á`@“xé€>Ý; ÃA&¸ŒׂQàz Áhp3 nãÁ&‚É`*˜f€Yà0Ìù Ìw‚"Pè¥&@Ÿ.­•` ¸ Зƒ`µ ¬.@3‰^àô©Û@_é¼Ð÷/ïëÁ} lôqgú„"}¹ó@õ~lƒ­à° <¶ƒŸ‚àI°<žÏ€]àY@ŸX~ÐGàè[ß/%ñ禮ƒ}`?8‚×À!ð:8 Ž€£à-@o{ô ÚNpœ‚øœŸ€p|΀sà p\Tù“ "H`(†ƒLp5 ®£Àõ@7‚Ñàf@ß^¾Œ@˜&ƒ©€¾;Ìw€9`. ïË€ùàNPJ@0rP*ÁpX–ƒ`§Ä‚:°¸€x@hwƒµà°ÜšÁ°l›Á  <¶úŠõVðØÛÁOÁð$Ø žOƒgÀ.ð,Ø ^{Àoûf/hûÀ~p¯C€¾öyGÁ[àxïNpœ‚øœŸ€p|΀sà p\´Y<èÀ` ‚t†‚a`8ÈWƒ‘àZ0 \$p# ncÁ­`<˜rÀD0LÓÀ 0 Ü怹 €ùàNPJ@0rP*ÁpX–ƒ`µ .…>D‡ünà>  Ü Ö‚{ÀzphÀF° l€6ð Ø[Á#`x l?;À“`'x < ž»À³`7xì¿/—A;Øöƒà x ¯ƒÃà8 ÞÇÀ;à8xt‚à$ø„ÀÇàøô€Óàspœ_€ à" †?èÀ` ‚t†‚a`8ÈWƒ‘àZ0 \$p# ncÁ­`<˜rÀD0LÓÀ 0 ÜæútX>(óÁ ”€2`å T‚%à.° ,5ÀjAX \À ¼À 4‚»ÁZpXîÍ`Ø6ÍàÐ[ÀÃ`+xlíà§`xìO§Á3`xì/€=à7à%ð2hûÀ~p¯CàupGÁ[àxïNpœ‚øœŸ€p|΀sà p\4ùŸ t`0A:ÈCÁ00d‚«ÁHp-®¸Œ7ƒ±àV0L9`"˜ ¦‚i`˜îsÀ\ À|p'(%  ˜@9¨•` ¸ ,ËA °ƒZPVp/ðhàn°ÜÖƒû@3Ø6‚M`3x´Áð0Ø ÛÀc`;ø)Øž;ÁSàiðÌÿaï,àªÈúÿ?QQL¬k`ƒRv€b ‚(ØI ’v`w.v»Ö®ÝÝÝ­¨k­­ëºvü?‡ùÜgã½ê>ÏóÛçyý¾}Ÿs¦çÎÌ8ß;`XÖ `ض`Øöà8Žà8Î \)à¸n‚Ûà.¸€Gà xžƒà%x Þ‚÷à#'ýfÀdÀdVÀä9AnØ‚ Ѓ¢ 8(J2 p€pAePT5¨ <@=Ð47ðÍ€hZ6 è:B@(è"@ˆ± t=@/Ðô‰`  †‚á`$ Æ‚ñ`"H“ÁT0̳Á\0,‹Àð3XV€U` X6€M` Øv€]`Ø€Cà8N€Sà 8.€dp¤€kภnƒ»àx'àx^€—à5x Þƒ@Ž™sXKXkä¹A^` €B@Š‚â (Ê€rÀTNÀT•AUPÔn 6ðõ@Ð4ÞÀ4~ hÚ€v è@¡  ˆQ Ä‚xÐ ô½@Ð$‚`0 †ƒ‘`4 ƃ‰ LSÁt0ÌsÁ|°,KÀÏ`XV5`Ø6-`Øv=`8#à8N3ฒÁe®à&¸ î‚{àxž€gà9x^‚×à-x>qÁoÌA ¢dDôM ^ j r€œ 7È lxg! EAqP”e@9à*'à*‚Ê *¨j7Px€z hoàš?дm@;Ðt „€PÐD€(bA<èz€^ èÁ@0 ÃÁH0ŒãÁD&ƒ©`:˜ fƒ¹`>X%àg° ¬«À°l›À° ì»À°‡Àp œ§Àp\Éà2H×À pÜwÁ=ð<OÀ3ð¼/Ákð¼xðoÌA`,A`¬Aäy-( =( Šƒ (ÊP8PTUAuP¸ÚÀÔ @CÐxÐ ø hÚ A „‚. D âA7Ðô}@?‚Á`(F‚Ñ`,&‚$0LÓÁL0ÌóÁ°,?ƒe`XÖ€u`ض€m`Øö€}à8Ž€cà8΀sàH—A ¸n€›à6¸ îàxžçàx ^ƒ·à=ø(}Xâóæ °ÏÏ@`¬Aäy-( =( Šƒ (ÊP8PTUAuP¸ÚÀÔ @CÐxÐ ø hÚ âÇC@(è"€ø™Vñ|8ăn èú€~  ƒÁP0Œ£ÁXKõþžH?ÑKéåô z=½‰ÞJo£·Ó;èôEú:}—÷ÌDr¦=éfûjÜŸ>H¢ÓGè£ô1ú7ú9ý;-îS¤Î/}ˆ>J§OÑ)´™^u:ÚœNOg -èL´%™¶¦³Ó9h:'‹ÎKç£méütº ]ˆ.Lëé¢tqÚŽ.A—§]éŠt%º ]•®N×§ОtGºíOÐôz­Q¥£ÍèôtÚ’ÎLg¡³ÒV´5ÎAÛйèÜt>Ú–ÎO  ÒEè¢tqº]Š.GÛÓtyºíH;Ó.tº.]®O7 =i_ÚnN· [Ò­èÖtº-ÝŽnOw ;Òh:€¤ƒè`:„îL‡Òat:œŽ #é(:šŽ¡»Ò±tO'ÐÝèîtº'Ý‹îM÷¡ûÒýèþôxz"DŸ¢ÏÐç Û]QÕ¹èÜtº]‘®NÑÁt:œN¦/Ñ©®t´Ž6§ÓÓ茴‰¶¤3ÓY謴¶¦³Ó9h:'‹ÎMç¡óÒùh[:?]€.H¢ Ózº]Œ.Nw¢ýé:¢ƒéº3J‡Ñ]èp:‚ޤ£èh:†îJÇÒqt<@w£»Ó=èžt/º7݇îK÷£ûÓ‰ôz =ˆL¡‡ÒÃèáôz$=ŠM¡ÇÒãèñôz"ýDO¢'ÓSè©ô4z:=ƒžIÏ¢gÓsè¹ôý#½€^H/¢ÓKèŸèŸé¥ô2z9½‚^I¯¢WÓkèµô:z=½ÞHo¢7Ó[è­ô6z;½ƒÞIï¢wÓ{è½ô>z?}€>H¢ÓGè£ô1ú8}‚>IŸ¢OÓgè³ô9ú<}¾H'Ó—èËô:…¾J_£¯Ó7è_è›ô-ú6}‡¾KÿJߣïÓhÅN•…¶¦sÒyétqºíBW§ïÒñeT'ÐÝh…¿‡<—nꤺíKûÑÍétKºÝšnC·¥ÛÑíétGz5½†^K¯£×Óèô&z3½…ÞJo£·Ó;ètWgÕ±tO'ÐÝèDz=D¦‡ÐCéaôpz=’E¦ÇÐcéqôxz=‘þN¢'Ñ“é)ôTz=žAϤgѳé9ô\z=Ÿþ‘^@/¤Ñ‹é%ôOôÏôRz½œ^A¯¤WÑ«é5ôZz½žÞ@o¤7Ñ›é-ôVz½ÞAï¤÷Ð{é}ô~ú}>D¦ÐGécôqú}’>EŸ¦ÏÐgésôyú}‘N¦/Ñ—é+t }•VÞ©ÒÑft:ÚœÎ@—¦ÕÆ3Ž6£ÓÑætz:‘¶ 3Ñ–tf: •¶¢³Ñ^´7Ý„ö¡›Ñ~tsºÝ’nM·¡ÛÒíèŽt'ÚŸ é :˜¡Cé0º N2¬ÇOªÍèt´9žÎ@g¤-èL´%™ÎBg¥­èl´5ÎAÛÐ9é\tn:—ÎGÛÒùétAº]˜ÖÓEè¢t1º8mG— KÒ¥èÒtº,]޶§èòtÚ‘v¢iÚ•®HW¢+ÓUèªt5º:]ƒ®I×¢Ýhwº6]‡ö ëÒõèútÚ“nH7¢Ó^´7Ý„ö¡›ÒÍh_ÚnN· [Ò­èÖtº-ÝŽnOw St!éh3:mN§§3Ði :mIg¦³ÐYi+:mMg§sÐ6tN:›ÎCç¥óѶt~º].D¦õtº(]Œ.NÛÑ%è’t)º4]†.K—£íiº<]v¤hgÚ…v¥+Ò•èÊtº*]®N× kÒµh7Ú®Mס=èºt=º>Ý€ö¤ÒèÆ´íM7¡}è¦t3Ú—ö£[Ð-éVtkº Ý–nG·§;ÐéN´?@ÒAt0Bw¦Cé0º NGБtMÇÐ]éX:ŽŽ§èntwºÝ“îE÷¦ûÐ}é~t:‘@¤уé!ôPz=œA¤GÑ£é1ôXz=žž@O¤ “èIôdz =•žFO§gÐ3éÙôz>½^DÿDÿL/¥—Ñ+è•ô*z5½†^K¯£×Óèô&z3½•ÞNï wÒ»è=ô^z?}€>H¢ÓGè£ô1ú8}‚>IŸ¢OÓgè³ô9ú<}¾H'Ó—èËô:…¾J_£¯Ó7è_è›ô-ú6}‡¾KÿJߣïÓè‡ô#ú1ý„~J?££ŸÓ¿Ó/è?è—ô+ú5ý†~K¿£ßÓèô'Z9¯ZG›Ñéhs:=‘¶ 3Ñ–tVÚŠÎF[ÓÙé´ “ÎMç¡óÒùh[:?]€.D¦õtº(]Œ.NÛÑ%è’t)º4]†.K—£íiº<]v¤hgÚ…v¥+Ò•èÊtº]®AפÝhwº6]‡ö ëÑ éFtcÚ‹ö¦›Ð>t3Ú—ö£›Ó-è–t+º5݆nK·£ÛÓèŽt'ÚŸ é :˜¡;Ó¡tÝ…§#èH:ŠŽ¦cè®t,GÇÓ t7º;݃îI÷¢{Ó}è¾t?º?H ÒƒèÁôz(=ŒN GÒ£èÑôz,=ŽOO 'Ò?ÐIô$z2=…žJO£§Ó3è™ô,z6=‡žKÏ£çÓ?Ò è…ô"z1½„þ‰þ™^J/£—Ó+è•ô*z5½†^K¯£×Óèô&z3½…ÞJo£·Ó;èô.z7½‡ÞKï£÷Óèƒô!ú0}„>J£Ó'è“ô)ú4}†>KŸ£ÏÓè‹t2}‰¾L_¡Sè«ô5ú:}ƒþ…¾IߢoÓwè»ô¯ô=ú>ý€~H?¢ÓOè§ô3ú7ú9ý;ý‚þƒ~I¿¢_Óoè·ô;ú=ýþH¢Sƒ t´Ž6§ÓÓ茴‰¶¤3ÓY謴¶¦³Ó9h:'‹ÎMç¡óÒùh[:?]€.H¢ Ózº]”.F§íètIº]š.C—¥ËÑö´]ž®@;ÒN´3íB»ÒéJteº ]•®FW§kÐ5éZ´íNצëÐt]º]Ÿn@{Ò éFtcÚ‹ö¦›Ð>tSºíKûÑÍétKºÝšnC·¥ÛÑíétGºíOÐtL‡ÐéP:ŒîB‡Ót$EGÓ1tW:–Ž£ãéºÝîA÷¤{ѽé>t_ºÝŸN¤ÐéAô`z=”F§GÐ#éQôhz =–G§'Ðéè$z=™žBO¥§ÑÓéôLz=›žCÏ¥çÑóééUŸ¤Oѧé3ôYú}ž¾@_¤“éKôeú B_¥¯Ñ×éô/ôMú}›¾Cߥ¥ïÑ÷éôCúý˜~B?¥ŸÑ¿ÑÏéßéôôKúýš~C¿¥ßÑïéôGú-’³M­EL½xWˆ¥ï§qô"†^<²ñòâ‘T%E±ñµ5&^ÄËXx/bàEü»ˆ}÷ÁŠú ñzÞ®@¼XüV_0 QÔ˜öQŠÏ>AQcÙ§(jû,Emãú£¢Æ¯‹v®"v}¥ògÜúFEYmXw)j¬úAES?®¨1êg5>ý¸ª¨qé·µ=ë}ðXQãÐÿPÔtžú;s #È ²Gg<Æ\Ä——Õ©1å®:5–¼†N¯«ScÇéÔ¸ñ¦:5f¼¥No¯ScÅEœxg#.~ƒRćÇéÔ¸p>@§ÆÐ©1àãtjü÷$û=C§Æ}ÏÓ©1ß‹uj¼÷rë½V§ÆwïÖ©moOêÔS–«:5Fû¡NmcûFlfXv35Ö:°1Sã«EluaPÌL§qÔ"†ÚT1Sã¦ÝÍÔ˜éúfj¼´hj¦ÆH‹øèöÀŸ1ÑŒƒŽÝûÜŸqÏCó<š±Î“À40‹qÍ Ó¼”ñÌ«˼l;Á^p1˧§|…±Éwü”1ÈoÀ ÃN‘dYAv äc\q1ÆÛ3~¸c†Ý',b„›0.¸ã;1XÄG2öWÄýöd¬ï Æ÷ŽaLïÆñ΋Ár°l;Á~pœÁUp‹1¶Wûб´:s5~6³¹3+beEŒ¬ˆ1±"VÄÀŠØWó*b]EŒ«ˆmq­"¦UijŠXVÇ*bXEüªˆ]q«½ÍÕXÕ!æj|ê8s5&uš¹‡ú£¹{ºÜ\7Ýh®Æ˜î6WãJ𫱤çÍÕøÑëæjÌè}s5Nôws56ôƒ¹š1½š=½÷™?½ëi—^ï,Ÿ^é¬Â8Î:ŒÝôb¼fKÆhú3.3œ±˜ Œ¿ìϘËŒ³ü±•³O¹˜1”«7¹•±’ûy’1‘—y‹±ïøŠ1Žº j\cæ j,c.Æ/fÌbiÆ):36±ãÝ“XŸñˆ^ŒEôebkÆ úƒ`ÆF2Þ°ã 2žp,ã§3^pã×0pãÿŽ0Þïãûn2žï ã÷Þ2^/ãór0¯ãïJ{àÈX»ªŒ±«Íغ†Œ©kÆXº6Œ¡ a t  'è €!Œ‰Ç8¸i`˜‚ŸÀr°¬›Áv°ÇÖ̘5«v]dÜÓUÆ<Ýb¼Ó}Æ:=eœÓŒqzÇø&c›22®)+cšlÏ”±L…ÇdǦ²Œ_rdìR%Æ-Õ`ÌRÆ+y2V© 㔚3F©-ã“ü›Ô™qI‘ŒIŠcxž‚çàð¼.+öX‚¬ÀØ€Ü ( ƒ¢À”ep. ¨ j7PÔž 1hšæ h ::ƒ. Ä€8Ð ô}@0 ÃÁ(0LI` ˜f¹àG°ü–•` X6­`Ø öƒà8N³à¸RÀupÜ÷ÀCðü^€Wà-ø ^”j…ýd™@ ä¹@^E@qP”ö pAPÔµA]Ð4Þ )ð-AÐt „ bAèzƒ~` †‘` ~“Á40ÌóÁB°,+Àj°l[Àv° ìÀap œgÀy ®€kàpü €Çàø¼oÀ{ð ˜eÃþ,@f`²ƒœ °%@iP”NÀTÕ@Mà<@}Ðxà Z€Ö è@0á tñ ;èú‚D0 #Àh0L“ÀT0ÌóÀ°ü –ƒU`-Ø6ƒm`'ØöƒCà(8Nƒsà"¸ ®‚ภîƒGà)xþ¯Á;ð謱ÿƒŒÀdÖÀäù@Pv ( €#p•@UP¸: ðAÐ 4­@[Ðøƒ Ðt‘ Än 'èúƒ`F±`HSÀt0 Ì?‚Eà'° ¬kÀz° l;Àn°GÀqp œÀ%®ƒ›à¸‚'à7ð¼oÁñƒÙ±ÿƒ SvñŽZìÿ Èò‚ü (Šƒ’  °€3¨ª€ê ¨ ê‚ ðMh Ú€ö ! D€h @ÐôÀ`0 ŒcÀx𘠦™`˜‚%`)XVƒu`#ضƒ]`/8ƒcà$8΃dp\¿€ÛàWð<ÏÀïà%xÞƒOÀ,ö`2+äy€-(ô (Jƒr ZDùÇϤ¦ZD.Ñô/w—çé[IGä}BìKÍYoHbŸû} ‘:yØ:R>Ý£ÔÉǪÎR¾ÁwäC¥¼§‰|c)!å½5yyÞ|¤|S)ßì;òâ7šëj¦[Šõ^ÊçÇiùx Ž]by"Mt¯-ååul"/ëIy/)//s˜”÷òA&Æ/÷/çôÊŸßÎÊ—Ç §¯t3 çú•áŒusþJ7—¯t3L¯¢‘n®_éf®òWæÅX7ׯt«ô•n†é’v[7VÖÖµÊÚ¼§‘²©:íx[IemÞÓHÙÔ¾)oÓòö'o¯aš¼±²¶®›TÖæÃŒ”MÕiÇ+Ÿ×hóaFÊr|’£ò¾&Äwƒöû±¦‘îÚºR¹†‰îr< y{k'åËHù>RÞÔ9‡v>jjÊÚs[í9jõ¯ô#÷'Žáâ»JÞ¦|õ¸Ú@S'ŽÅò¶Z×D]ÖËub:òw‚8ßÛn#©®¶òåw@mNÛhÆ-ú•Ó-4Ýëiº‹iÊß;†e•Ëò¾æÁiÔÕÔ‰ñ8©s2Rçl¤ÎEªëF¬y]ˆùh­|þ}kXßÚï4w#ýÉû¿WsÍpuY/?ê)Ÿ¯ëúšr3M¹¹¦,òò9€‡òåç)Ÿo{+_~ß‹uZZSçd¤ÎÙH‹‘:W#uÔU2RWÙH]#ubž+˜¨7¶<Ž&–ÉÑÄr9šX6GËçhbM,§£‰eu4±¼N_YÞ´ÏîËúÿöÏNô+_9iÊΚ²‹¦ìª)WÔ”+iÊ•5å*š²á3ÑÖiçÓðYhë´ókø ´uÚù6¬{mvþ ë\[§]ú–ëÄg ®û´ŸK€‘º@#uAFê‚Ô…©ël¤.ÔH]˜‘º.FêÂÔE©‹4Re¤.ÚH]Œ‘º®FêbÔÅ©‹7R—`¤®›‘ºîFêz©ëi¤®—‘:w#uµÔiïkŠ:#uuÔÕ3RWßH]#užFê©kd¤®±‘:íu¼¨ó6R×ÄH‘º¦Fê´÷tE¯‘:?#uÍÔµ0R×ÒH]+#u­Ôµ1R—vbê¼ÑØy–¨3vž%êg‰zcçY¢ÞØy–¨7vž%êg‰zcçYbW:›X^gËëlbyM,¯³‰åu6±¼†¸cõÆ–×ÙÄòº˜X^Ëëbby]L,¯‹‰åu1±¼†w«7¶¼.&–×ÅÄòºY^qìßSþR]¦,¾ó›Kåv•êÄ>'ßkǼ@MÙ]*GiÊ šr¤¦®)‹ïoùÞ€—¦\_Sä<Ë÷ãÂMÔ‹y•ï¿DiÊ FÊòóŒHM9\ùòyG/Mwm—‘ºúFêüŒÔ%h–'RSR¾\r9Dùüžd”¦œ )GjÊšr¸‰þųN'#ÃiëÕ…¥_C½|+ÐD½±ºð¯ô«}ö%×içE»_…©ó2RWßH],ËA&ê´óe¬›vþb4ÃDiÊ F–U.‹áå}>JSNД#5åpMÙKùòÒR3~¹œ )GjÊáš²—¦,Ö‡“¯wÅq£«TT>?–‰¼ü9ˆkòÊ—û¹¨ÖŒ;Hùò8ÕS*‡*Ÿîbß–ïOŠóZ¹]D#åó{°"/ßGó/•Å~©)GiÊÑšåuòs1|€¦¦|ỷÖÔù(ŸßŸŸ¯±õïC¼4uò=p±Êß?âzI~æÓR3!D.‡iÊÚc ±~´ý‰ùׯ|úŸN¿#/·“?ƒjR^~Þ#·7Û"”’òòùEo)ßWÊ“ò%¤¼üÌI^—òu…©öòyºü«¸”·“ònÊ—I^&¹Ýˆ<¿¦Æ'/‡ÜNÅÔº1µ¬òg"/·üùÈÏì*HyùùŽ|¬—¿Çäç8®R¾¢”¯$å+Kù*R^Þ.äíEþ|´Ï Iގܤ¼|Žgª„üÌØTÛ‡úR^>æxJy¹M—| •ŸïÈÇ ùy•üüí{ÚÈÏœäg}òyµüÝ'OÉÏ*[Ky¹ÍH[)/oûí¥¼Ü¶L>t’òòw|ü4õìZn'"_åïP)/Oå¶$áR^û=bHò÷”|#ååïmùûA>o‘×r›$ùû£»”—¿ûäïjùœ[>ÎÉ÷=äcžü¬þ‚ôwàûþ Úý§WÿA2ûÒéa-ß9ì·ÐuRó]ÿ<ÉßÇWÇqÞûÿ½˜œþø÷¢nÚöÿ¿žõ=5Á 0XQßY3 SÔw׌#õ6£ÁE}—Í80^Qßi3ü ¨ï¶™&+ê;n¦‚iŠú®›`¦¢¾óf6˜£¨ï¾™æ+ê;p€…Šú.œÅ`‰¢¾çg°TQß³¬PÔw䬫õ]9kõ}9ëÁE}oÎ&°YQߟ³lSÔ÷èì;õ}:»Á°WQß­ƒUÁÎ’úŽCà°¢¾kç(8¦¨ïÜ9N*ê»wNƒ3ŠúžsŽÔwñ\8𤾓ç2¸Rõý<×ÀuE}OÏ/ঢ¾¯ç6¸£¨ïíùÜSÔ÷÷<Á#E}—Ïð<¿)ê»}~/õ?/Á+E}×Ïð¼SÔ÷þ|Á'$Há«pRß“dÒ¾ê"õ½I™v>õJü êÔw)ñçh•ÀFQß­” äVÔw,åùõ]KùAPPQß»TXQãZEwѶ]´imÙEvÑv]´YmÕEuÑ6]´ImÑEtÑö\´9甆߰0ÄsŠsEqŽ(Î Å9¡8mÃE›pù·§D›o7E½Î×·âºÖð{;âúÕß&®SÅõ©¸.×£â:T\ŠëNq½)®3 ¿ë#®'Åu¤¸~×âzQ\'ŠëCÑ&Z´…m EÛgÑæ¹Óß8}Ñ&X´m€EÛßþJÚþ¿KùÞÿ•´Ï—ò?üù§ÿSÿâ~¸Ogˆ£÷ãÄ}8qÿMÜw÷ÛÄ}6C\²¸Ÿ&ûgâ¾™¸_&î“bïÄý0qLÜÿ÷½Äý.qŸËÔñÿïš~Úñ?mÿ×ÿ éã'ñ°/“¨LJ ´ /»é¿2œ±d¬ßoÿkó¦÷?3~SÃ}ž>¥3ÕÅ0Þ ,Æ_à;†•Ç/öÇ~Fºæß0ƒéŒŒßÔ°©©¦:¼©ôÕùÿưÿ˜ƒ?Sÿ¿:ÿ_Ö>þ ãÿÚ°©Éì_X?ßV$Ãw,Sâ_™ÿo kH?)ï1Ž×ºÏ³|süßVZŠtßÚ¿¾¶}~m3 ŸžÃVþÜ? ɯ|ëãïÀôzøëó/ÇZëÿ&þ™ù7g>çßð,¥RŸÛ~ú<é4I¬Ä„˜˜àX%"º;þ÷ˆ õW‚Â:‡Å+=TÅÅø+1±aQñJçXÿ˜P% Â?*\ ŒŠPb¢ã1XTNwâ£ÕqÅG«cû3yxfµ0¶\©ó¤¨×ÃsóXYÌ-d•ÚßÜâ´­Õý¯`eQÏýÂbØÆ÷\=Ê%P¯¨×Ø¢~hM+‹çÑY-’b³ZÄ Ÿ>çdeq$ƒ ”/;©ãHoƒGàxÌ­,²€œ (¾wœß{¾+Þ«ï‘ÕÂmLV‹ÄXŽcYSç§œóŸË½«Œ•…¾¬•E"¸ÜÊaYboeÑ ìzt7€¾< \1µJ˜ŠáyžáYžá9žážáùáÙá¹á™a3<«3ÄàwhÛ³u{üåÝþ«Ÿ¯°Øï\°LUÁYW•ÆÒ0&¿T˜¾5~qa¯1¿Îå®YMvûÞq˜"H;wü‘Þ`ù»ˆëÀÁزý•åß{ý]þœWÃÅø}¢¯è(Å/!Xi¤ø…&(õbÃ_ÿxÝ‚ü{ŠÎBè#N}E©9ô›šÁB&!VdúG)õ‚/ÿXÅ=&F&Ô0!BqOè¬øÇ(MpdðŽî¦xŠþüc{ŠabS300T ! Cöƒ&ÄÅ‹¡ãƒ#pÁ8¢…1µ#S3î^Š—b篷 ÐÛëíTµóªjç«·k#¤9ŽF:µ]Åý7qíehc!îÓEKe?v7´÷hÉ|Ô=Tù³=…8æˆc¡½‡¿¸VŒ—ʆé~#ÍжBž¶¶›<qFºËóõ•þäù5Ѽ ÚnòòÆ¡í§!ËQÒøÄüÚÕx)Ÿÿö›¸—#• ÝåñÉŸ‘¡! /ÿ~š/§gh#î¹*~†÷·Ú½x°C[yþ¤y•×aybMô#/£¯¡-¼¬òïÉˬ©‹Æ+/«á·µäm˰ÜñÌ~g)XùsýÊë#ÚHwyý˜‡¼ÎLõã®üÙþKþ-&;®=óR>XÊ‹ó–ªÌ{Iy_©ŸÖÒ8 ¿£&òAR¾§ÔÏׯièÇó;¦#õÿïZ–6F–ËXúÖñ_|v)8þß·Á=ð</Àkð dÀwƒÈ Š€RÀ¸‚* pu'ðMAsдþ Ă쿆ƒq`˜~kÁ°”­‘Õ¢h\C]cßÕ†úGà=ÈRç_ ¨ƒv Hë@ P*¡?à|@'Áx0¬»À)p<Jeœ3Ю²Ú<<Ì›À  TÁ9 hü@'°$ƒ÷à†Ó—œÀüWÝVAwÊUÍŸ!bùÎrUÕó o}¾âš¥´N½%ú·‹±‹·ë "AÈ··qͰªºñs£ÔñùÛyÛ…€ âôv¡©ß±(Ô±·ë¥·óC.ÐÎÛØd¾9}q/Z©aúüÌÔ|•µ Ô‹ïñc#ÿ ÓçŸSk|9þï^Üw?Ãa<}›”÷¬[GïèRÑÕIæX9J_Ï£Nû¸àx¥QpDÞ7,2:*.8J GÉ-(~+G\×V’Xéòý¥ÿõgWÿé¶ iϮҞ]ý'Ÿ]}ëølc¬ã_Lnn8÷sÿú±ÚRÊ˱ÖòoþòGú? »£Ÿ•ÅÛòÓeCÚºGÚ?1ÿrüºÂ]v=®õxÊâË/ÞÔºŸ®‰ö.¹ÔoÍI™¦]O÷¡r®låoÇ{ôÇɳ)æû.¯:¾-_çEéJ¾ïýš~êú8Lm;ììŽØ9—’‡•Ï•ã€Ïµð˜¨†'³%O:ÕuM‰U!–¯˜«`›³µ«[ù} Ü×üXž§o‚Ÿ—ÚÖüÕÁ”Ä”ÇQ/N³û\.—Àßží¿-éžå+[¶ím‹ô‰:gO¡aÞ¦ ·ÝŸËu¿eNÛB}çK.wÌÊã´Õ—ï"~é[øeB}˜3³lÁb›×,v±SJð¨"M_¸œnW`hëÀÃs¶–è˜toqÆ2sæ´ Û°¯¶õØø^mÍoÜa»°hòÈìû\¶¤_Ÿ3yíµZ;sÛî·mò¦ÕžDþñ!üc£àrW´µ~7)!üc}Û”‰—.Üž8°”~zH¶‡Žã {oíÜeJ¿Þ]nެz}ÓÜ[ÕOÔ;¿é ‡7¬Š”ÐÚ£VðzÇ‘·Zì]´ô­ëÜwãuÍßsÛð†ÙÝr»'¶U:ûý…g½1…2\[RÑÓw\™íwg™²hwRLÞúO=¯œi[+bâ¹L+<«Ô±?ðã —¤öÎ¥·½pÉî;žÎþ¯$Ý g›àÐL·jyõ]srÌMÏ"õùÝödpB† [GŽª8aÞ…Í#Ï;Äuø¡öiŸkÆll:»œËÔm—}ýv!jhŽr.ù†yöœ¸'ìõ™†BÆ}8ØÕ~ðâ–›5/vìqÿw7 ýý—™úÊžël¦¸èv»\ó‹=³Ô’ÅuB¶Úÿtô–îS|â}‡·’úï¶žýÛ’ …J-Y»µ×d·œ¹Ú<~×lšG¡u6{3Ý]™{Á¶ù…fÿm]PŽwñ‡·LXzáà×O ÆÖÙžÏ#¸Å¢}ÖÍ;„VlÜÜyÊPÏ¥‹lÏZÐócõöS7~p´w–ì³G†ïïYîþŽVɃ=^üd[]Ÿ-néê–]½jv1 eñ°Ouë&u2q+¿`w÷ö•–~z1äÞ³Iõ⇌®=`røûy½ûL¸˜¯ú³ÞîÛNx•«eÇã>Xd¼2v™ÝêwÛõh;à@‹+êE?ÙñÄ;¹¹o¾ê×<æï7k»m7ß|§¦l´göµ*'ºe°zGÌ“GÍzvz}¾Ñ¬È?Þ þnP›§6ûëŒs[0¹Vžgß¶{q¬U½×ö¯köoçž÷^®Ò/ÚÕU²£G—^민ŽQÆy”.y¤KŸ{kêN—.bäÕ7®>Ø¢ï2«œoÏ–q³¸v£Oç„Wç-·ÿV¨èމ› ¿¶À|Ö‰Ÿ¢÷ž)]+`e©UOš÷Á³frÊþ·ÞKmsý>úx÷¾Õ,×Y¼±,Vqêè’²ÝéZ²hÒ…›ï–ºÿjQ»'Ï«oöÏ_vòÃìÖ4˜<ïhÙ~]_¹Tر£w¾KÜYVúÖè3ñ ¯÷MY¿ö^¦ÿô&–þK’nWç2c¼cÏýÚëãØñ…¦¿ÎãnñÔ¯é ¿¦[WÛ”¾î»ºô;ï–ÓîÔó¿üì¬UDâŽ;]6ýÐ!WÝ=ZïréS¨ßåb úœh\¸à½y£f$\ßyÁz‡û­+®ïYÓ9\gÛ¿X¶ãKwÔˆ·ë²òâݵG­r–œ0É?{ƒbåtS”aß4::xfîף˧~îîÕPÿ<6ÛÒgÊüÉ}æR¿âklºyW(`Û;÷Çjõí xÌ|Ñd€ÿ³›æ?t_q°‚UÖ~I<œ×bRßK^>ŠÍ4È6ãùeÏË[«j¥¶Õ^2ÉÉ+[©]#ý7ob;`ݽ‘ù{M>;õЦ\ã*L™»Æ»n¦Í•‡M¾¿Ï:û±Ke³ŸâTáQÇàÕvWܳÊôâI¾¾éG®þ|z5ŸI‡ëäqY¿fÊ¢„Ý›}–Ml{´zú€Ÿü§8-©ÝìÁõ+G=|µ|Ö¯aOôÕó„Zêµ¹HÌÛø ñÝGäy9ò]÷‡3æ=ºöÛ–‰96®uÈõÚèqÜ?_é—¹AëÜî?=l{µ‰µ?Œ;þûø¹S:dÊ?çPëö–®‘P¹ié²–Uò–Ï•hw)Ù¾fòà7ñÃz­,<{·½Ÿ×ãSëßúDëaž)CÛ§óotYÿ¨V–ºåÖ¶¬¼WùäýE'^T1ÖÕ³Á¤+Óç|yÛ¥¬ácj;ð.Įԯ7ÅV›ÓíB —øE3|Þ+#ºïL©Õ¥Ä…î“Wä÷áÑeRötYÝ|Û\Ì:¶®óú;Ëó³Þ6b”µßáîe«Ýè_£w±—M‰ ¹ptEóraÛ¬‚Ÿ94i·óe“ñ×ç™6ûêò9UÎ$wpjÕÊns;·Îýö"Ûtû]-Ì_{¶9w÷!Ý›®ÝÎÜ}á²gñ±nºYÏk\<5âí(¯ãÖMüÖÜÈS¶o;Ëž‡~p¯UéúÖIE>´¼7ø¼ÍYeÇûÉæõ·,xøÈ½¨Ù{VTŽy4,ßB%¦šó“ån‡|² ÿ0²ÚËuéR&ôÜ~ðÒ¦6Þ¡ç"lãdMʰÒ30¥üñ~5VEO‹¿ÿ¦seE†=jÖpÖÕmŠýÕ±®µt}Ýú ûæs-ª<Ïä·x^rõK³Yo¸Y¤wÍjcæÏš4±{Ç·-L—EßrÝ{×Û6ä/µÙû•_æö5Š<6,Ú<ÈÓ­öм kB“'¯;3êE`ó$»ì‰¹úúSá\oæßî½â‰sö’E/eÛêäig·kŽå¢ ã¬ëêJW0qì2Ü[2äY—eqOI\fbYÜ/WhYØŸ¸§#îóXsûYrsqÝ-®Ã ³ŸŸuвH§Þ'÷œ|1RŸtê=q_h!F2?ƒzÏCÜSi˜UQêgU¯§Åµ{’­¢Œ‡0Že ¤«¢—ƒ¨ Çe'*n§ˆ|NE™ÿÜIhÛ–-µÞ-µÆ=)nOƒÔ›mb¡¬wÐa~t™eÊÌ+ ©yKö¯SW†XfbL¯–ºb/9j´È§K½šž—OŒÓ ù"Ös*è°²t¢~÷Ë–©ý#?`Æž©¢>Ú‚ÌZa¾kÝ„¼©Ã"Ÿ¸­oq]z5ß;¤¾«èG'úwkÔXÔ‹|Á¨6ᆆN‰¿,K2ä;úíˆÈ›§6ò Ê,¦+òMޱJOäÝV„åãyÏ yòòŠõæbX3ä§5ˆ/fÈ»-‰+›:?È»W»ë’:¸~Ò©ùÝÕß6VXï–lÓNXoý„ÈÔeÏ ®g›ejúó~¯é½_^ù¾{×}¾vþþ®û –…²Xú7“TÐt·™‡3§úûI1Ò¯Ð?**:^ﯕUÑ£¥Ü%Ò?Æx‡ÀØ`ÿø`ãÝ¢c‚£¤.H¢£¨Ð‡Å飢õѱ±ÁñzΊ>È?Þ_í«ïdWC5IÀ˜Bô‘Á‘ѱ=õÝCS ‹â:†ŽµT:Etí®ÔoìY»NGŸfž-Üýäþ1’,y̸—N½:w¨Nq«MIœkøŸœ?ãéoo?3Ìg¢ª×F›3þ÷Í?Vö'MY;牟•vú‹ê†-/H¤n§Ab›+UZáfÜ#>8*Hß9":À?Bˆ®Êç{Kj>",.^Q㛳ؖkØÅUKÝ}£¢âõ5jèí,±ƒ#câ{êƒzFùG†bwÄG‡c?‹Kˆ‹‹OH}"îáë§Ó󭑃°¿è}›{z”÷­ïé!ö—αþ‘â{Î20":î«E/‰ÚKTXêŽl©Ä…úÇb¬Ñ]ÄÞkØÕ1>.flp\|t,–3¸sdpTêþy ‰ŽE§ˆèÀÔã€a·ÕG¶ƒcÜAÑÝÅ}û5«ÛXtJ=z|6Lf1HBØsó~}{FDG¤Eô¡þqú °àX1;qa½Ä!DÿÙb”ÃÑ(*.,(uí±Äáÿ½ëŽ£:ï«Ó‰<¯ÎŽjë¦YŒ39ž%Ë¡‘mtúg럥³ecùÏÞÝJ:ûtw¾?úƒÛ›ØÓ1B<Ám %­“Ж6&eZfpg(õ´¤uéÐm=„™Ò2¢¡ aîï{»{·{»úc"\…hgöön¿ïû½ï}ï{ß{ûí¾=è ê4¢î+Th,˪a#N‰*éO"(+ãê}wHráéÑ2de²ž-ÛëoúØ¿þ‡]Àñucÿãíýoù˜{í[úwÚ£Æ9Ú¾ãc[°kïèßi?}­±Óï¯NúØ“ú³øž1ö\BOÁ°„ÐZÉNÀ9«òk-,tÛÉc؇\-"œ[·{F£§\u'—Zbq4~F¸J&—J%Ó7Ë+ÁÝ¡Þ@S3usG{צö®V'fTƒEá™: A'Õ¨¢æÆcñ˜ ×MÖ"j.£‘Û̲·÷«Ì4 ›(tPT(ï<è:0ÌþüçÂf’Mþ‚’3 äû FËŸK¥5Ëi§Fadò¹´&\=¢)ÂM%t“KÀgGt×TGÕX\øñJR&–Öuî°Ù':=üÛ”æé#ºbèoŠçdxK¡}MA‰c«–NhÂÇ0êcþ1¦©û ÐÒíÂ7ônmWÆŽjƒ†,êýÊŸ3æ­XÌ‚ØßøÜbvìúÅììõ7,fÏa»¯r1óc?‹½ÒGîë•J²’}^ï‰}îN÷Äž»ùƒ+tïX ,a÷{—5Ù{¼ÔÓÅ}¼¢‰W6ñ¥¾,À•M\ðÓ|<ºüƒ+K<Å2:&]O„V|peÒ3èŠI÷æ+nuǤç4èÞ¹tûWn´arogMÜ×$0[¹^*wò6w¬ Ód ÃtB¹€×cìÇž‚HËÑ2*m)áÞ-ÜçÙŽCÜãÞ0~´p¯§3’¥ë‘ó¿ÏØ?»ÈnœF–lEÏ8œzœ±†’‚ì&]6 ®œy6qï.ζpo‚û„®d‹KO0ö·.å}¾ø[Ea{EaÛ€rˆûÚ¸W_ë„rN‹±ŸZMsÔûeQÚ!Î6 QÝæ~ðžüCÆ.óîïNÎ6‰t›oïå?blÈÂ8ZêÙÌ™ ƒÞvޱ$Ýö§A?ú-úCöö]ÆþÞÉ×& ÿið½¾›,|[x¥Àx ´÷@ûŠ£—/õ µã{à;òc«Kœ:=Ľœõ‘ ¦‚>rþû¾³‘ÚÜó ÷¶qÖmøQøâÂØ Ìßµ`’gÁ{úO;PRäGt`ÏÓ¦Óuq¯F*‹¶:™ÆØ:{[í0Ûò"èQÐkíôÓn4×¾ºÏZhDúx¡Ø+ IÎ>‡nê9ÊY/÷¢½Ñg¶R{aHj½zÜÛ¥Qx˜xÀSû=ÆÎ8lw,_¯#à¹tÞÙOš é}ô'ŸaŒžkk!zpqY«A{´ .4*ûUÐ^{ÆbVjÒVÑh›¹—ä?Oå÷»Ëäi_\¶ò¤×Ò2”½cûi‰#¦ˆçØjAdç"¶Ù¢w{uŽ>ÎÜàíô‰ïÞF.ÁÅwßVzžŽt<ŒgŸ_Ä$GY^¡ûêYðT^XÄrêX¢xú¹¯Çä} ¼Oþõ"öY'ï8¯ØÃ•v^á9ͲÉûà]y¯Ì\p·r†è×Î¥hËáãû¹O÷_*gÍuˆ¹;dvÎÞfpÞa^‰jv£˜v£_ìo|@fßsãdx)àг†'Á«ì”Ù¿9íá¹_„×>îëã‡àްwˬϥ§¸wKIêB¾M†.oƒÿ™ýÂá'T‚:÷š1bégÀ«Êì]ïA/ùJ¼çÃ2Kùðv#^GA_‘™j§gÈ Tc Ÿý¯\êqÃ×~1Ô qoVïWçÁI“Ù^‡ný¢_ ÿOý Ì-Ò ¾8–ÿày<«\â?Ñ—Ï;$3¿.ÆŠõ8Vþ—.±}?g)3¶GÁ÷6ø¾æÂ×kŒ™Äw|džeö ¾1„t¾óàSb2û¦“¯qþ€Y¿×p¼¾¢˜¹3_2Ö^Ù5f’ —-‚Þç°sPôŠ! à9³OfwXxTP)‡;ÚEÐî)u¶kºÖ‹hÛWR\òlã¬SÄX„¦=Üõ^®ŒR«ëó±sÀò&evØëœãÜVÂôŒÒ2ã¸X?ß+rËo@öXFf•dÛ =0+ýwðàˆõÛyEéM4cú&æY4åxe*?úq‘¡L >.ó,0¶c~|dö3—~Ü•µ7åÅ‚/tPfï»øý^½ Ovp)Í+³$G¾xr‡ çhŒPã\;ÂxZ,ý¤v~üÁÃ?H¹uo9æ9Ge-sêñ܇¯r†9£ç[\B_å÷qo”Kh¥^„¯m0yu ¯ìæFy!àÅÚSKyý¦ŸgAÏ‚~Ñ鿈Vž/Q<'ûœ_ýWdöÇ<ÍóXûn#æ{óA™=URdŸÃ;±¯s/=›ý!øyHf×y~0^z¼µká¾”¦ß†OD¸´+ïõ¨Ï™‡eÖëÒ~Ç9;h¶WÇɯÊl“棇¡Âé÷r/Ùïð÷<"³;íöÛfÆËó }£s®åÞ$¯È—jèd>Òó ð¿ô5{¼žÊ};ÄàFI1ß·}íQ™ý·³]0û"¹A%.Ïôùxý_—Ù½vÌ/êº €çxêŠã«qpô@ßïÐK§Ÿ!}NË,`§o!;мí9Ђþ€Ó®]œ%ËvRÇfCæa2ì2{²¸ï †k!ê;†Ÿ.["IO÷F—öÝ󎶂ïâc2ë°Î…Ž–næ¾Aa Š“Ãà©<#³ë-<¡Ñ޶´ß°Ð6A Â> Zh=v`>½_`“ž/€ç…3ö±®‘´„²ˆIŠ¡ä7oƒoà÷dö…R‡¿Ã^žg‡Oãød+ÿ?‹ö;+³þ0@<ÔF à©|ÜÞFžè1bþú6ÐÿƉ!¢;Â&„ú<ü$x•'d·¹^—ˆÇ>ÏkƒRù söEûÛÓ”G¬¹ ú«/ÚçHT·÷qþ©¿ÃØí´E~î¹ ÇáY‰Kûc*©ÒUq€+„×Þø?ʶù°Á»Ó´gÇ à9\l«0¯çz[žOÃ%™õóD¹ÑæÏ‚ïäe–v–‡cLø•y™/ˬ©¯ŸWÐDœâ¬÷sðá—íqÖŒƒM0<:lé>ºÂd“cŸ«‡ÜädöÛ.r‚¹K0ïåR˜.uI'’ËBÎ÷ã«“£öx r+ÿIf—uî¡AK UôŒÅ«à]qC9›tŽÕ4¨6Š4bd#¯ ò¥Í"õà+ÚЈ,R£™™Â©Ýf^ ߇í­|i d~".n0s ri€{[…ΤÇtøÊß,g.z¼h„+¥f¡š×“X‹ßkòåõþ!‹pÀvr’Ãк˜7¡Gji9û‘Ë\ìñéíq¿Yû¼B;-y6üŒ¹šä-a’VÓ$øôvüoY9{ÇÅF/›Eåm´)o£¼JífÍó:ß‹p /Üe©™W©>tQº›¾Sûn·é2úZ.?ʚϗ³“ÿk;ŠØDé Ìnú…ŠÀháÞfÎZ¨¶&º-F?‹Cþäo¶ÆB{Ê2Ÿ…íÛ¹Ñ_ž„ÜW)G±ï5|0¥¼ßÂõ=ÅÉ÷¨8ÿºK\û¡h¢6¡ºç?E!ÍÂ.’¾ž¬ ƒÔÒååì^—¶úUö!óGP\ú7å ÇÉ Æí¶èšáð³+ÊÙÿ–e4pMÝ#ÌšŸädqïf i±ï5Òõ\9ó¹Ìï^BP¦6¥ºü·øØÏ]l‰oŽ&e,Î}pWÄ|êá˜%ø¶äcRäWÞêcwºÈÓ€¥™9¨8x·Ýæc7ZÚq3_*pN€æûÏvMgà¤x券úWyÚyð¾ýº=aámÍçDpu^ÙB 4Á{¼§~âcßuâb®Ïã’_ø~‹žZÌþÅÉë‰.M†N‰Þ3´ˆî/®±Ú ÛV²ØõšçKÙ°hñM¢‘Z‹phnD›ý¾=ìF+:=öѱ†ªa‰/°¤"°¤2°di}V ]ä>¥6 K¯`™êž‡ç±_:õѱº+oP{ë4î%^¯Û½„…ma[Ø>›ï]çûæ®Ý6¹anè—Ÿ7ަ8Î’nnSñÍ–>“ÞSâN¡g±ÜTå\u=žw?_¼åËi°ÿΟŸþ¼X.Î÷´·›z¥•êгœ’ü»p‹ÏÝd=q¤D¬£^À˜¯µUw(ÊŒ8=SâxæY}üƒÕUü®ÙÔÉzŽó§•åú³_|¯xð'?OìX£Ws*[} SZŒ#yçg.ê´öêt¹î×E—ùTŸO›]Œxá¿J,·xaç+s)³Lúżì»óiŒY}Ïlt¹iF]æ'V3¥}8¥SaHsˆ¡V×Φ>×ÏTŸ¹ÂY]…ZMc¯—Gäíõ*[uͬڻz¦zÍNlßèž3ÖÍk9g+¥Î>‹òѵÀŸW1accccÃ)on¬¡½¯;$ålTbs:L×)ŠQ®¢%FcédB¬ïUÓ1±.†¥DµÁXB¯Ì£ª»Å¿‚ðp,!IÝAµ¥«¥»·3 5MÜâ5°J^~l"²/98¨#˜[Eƒ8ÔÒäèÕÓ”®™=øªkSŒÍLŒðxrHjiï ömïôÓ±¨†Wûó”ÕUUk¤þt,›…ÃJ›šNÆ£Jˆ+}´6+£¨‰¨L¢­J'9–Ó±¡auDÙžÌ%†”-‰˜Xd¤/± %ãZZMD´:EêP³ÙX„ÖLE²Ét†V6EÔtVËZ$™LGc ?ëŠ<Õ”K©iuD£em~Eõ‡ý¿øX˪þ!udD­Ó}A_3%*]§´«Gc‰T.+–WE†“—¤_#tŒ;J ›¯¹LV kJµ¡Õ\Újè-ÜS,WÖ”\"–U"Z<®¬ŒÆàÊdÔ¸–ÉX+t‡›^𳘾>OUÒÆû••DNüÝh…þ"þG‰£G(ÆJQZW ›Ëc#Q Ù¬Éü‚>žM 3ÚKÜî ]Í&GDæ©ÝB´L‘Vª‘aÁ‚“=Ixùšõütæ¢~›Duç¸Ì%ž‰yç¬7IRÇÑà†¤:®å¿ #ß«-è[ÄBáŒßL eôÅ›‚×h,ñŒ«àï˸ ~z·ºúÚxVº¼yífÒÍοZ [øé½n2p¶ý9M¦ï±È4ÍBFüW†E¦m ™am\]’ZJ’Ò™Þ)dÒÃÉ‘prX‹¦óbúÿsÀ¦…h6¹¡ÚðoúµZŒºoÐoCL¼×$œ·¿.ùá·ß}¹3¼gƒù?"Ã’u›ÜðÐ=sög/>½^ša›!‡_Ç6ßç6¡a4´±æ^,D£]1µñXVr)ua»¶ÛJµæîÙä nµœsÏÌN͸_­®ž2çf¾UY䔎رËÅ9—û?’qÿçÅžgyáÕTתëêq©«a‡VaBêÖóð`)/Aôó:üVã9M´úTw6$‰úC,’÷z‘|‡F buR¿~«+Ï4«Dö4é-tÁÑO}qbõ‹ªâ:ÓfÏCNÎôœ¾‡Gº»…íYo3­øø›-^=Üj‚k3õXåR¾mœ˜†¾fú]SÐÍþö«¾åý8ŠJލ4l&FÔqX<©dFT‘´/æY]gé×Ôê Ýs83«r_ýw>ÙºM·åë”IÆGµÝÚþÌî‘dt7*BH'Ǫm&(Ú>¹~u­6š[z¤Â52ËŒs^ãhþ‡ƒW*ü·ƒù?¢eRῘqŽI…ÿí 46µ´Û‘¢¹øÇÓÙ<šú_­¼ããÊ›Gފ㑜úL‡_R´œò­e”ZΙ︞JÆÜ½Þysí¶€±€±€ñkŠá¼›×ÐR”«Â¢qÊÓ\×¢ñ:Ë”Œµ(Tâ ¹¯ö4¹¯¹Â™ ;~ëßXK¾a?̘—wÓW¿4µŸØøŽ”¹à1¼E.xå.6ñI?Ÿoím‚i-›K'è›þœ§/Z"+ž—Õ¥$©OÓ”zUNkƒë–g³©ºU«ÆÆÆøh,Ãs‰Ø™, RÓYÕVÚ—Vs™U±Q­5­¦†c‘LMpU,ÕÆÉ>qTËN«_¥®©YqÝŸL‰Ô›Y´Tèééh)Þ¦¶ö­Íë–s¾*y¾WM/Wšºƒ8Ex<W3™åJ{0Ô¶nmU•ÒÖÜÞÚ_í­]ë:š[B:fO 7Щt:›×VW¶:¶4¯3L¿ÞÎÓhý?öÎ>Š"Ïã•25If%†âõF Ô¶i°µ±×&‰3Æì Ʀ8LÀöôb Õ—ÓåJ¸»Çxºrgá|ÏÆîîÁØ‚´ÂbÏ” (oc“Þ ¹¨Ç¶hy0ŠÑÆ#† -)*)ER¶@ËhŠ–ÎØ$wr\„ÿ&zæhû=:$¸P|$ú/ÿ û$O©·0ó„\ÈFJÐÌlHÉ\O†g•yîfÆœS¦L»¼æÌ™7ÛéÉ›oñÚq3°þ¤`¦ß»IÁóç?~ê·N Òã794æÜöèþÕ™W°ükýú%õÝŒkxV]ì}ʯÁøŒ§+„¹ôn M¡)üœáZ?ÿ_[¡á¿Ý8äñ¨uk·wÊ ç{íÿ=êÊ„«½ßÌúµ<ÚsÉoŸœu«ºÿçÊ_ ½ðê !ÉÓµú›Ý'G×¶è®êߨ`œ?§÷(t\fV—¨þbÙxFï9¾½‘é×µcì«4Æ^:ÄØ¿e':ü¼¯á ü|¹ôùšò/w<;üË—9ß—ºõJݯÇÕ>=¿X} ôØ/ì¬PÄ¢Þ¾IîÀüŽºP½´ûZ_NÿCÓ÷ï+{ÿÉýãŸ[RÔ(äŸt¾ûa®½à¸ÂéÝq7vwæäÇç–Äç{ §åLwæZS\N—Õ•ŸèŠOéåp¥ôKîÕ¯Wïºtï´³ñ*èUè%h´Z = ½ÒÝÆWAË¡{ Û¡P, ÕÄÙ¸òAnˆw³ñg  ,È1Èü 7Ä ¬?eA¨¦«WBYòßÈ 1èã.°CYªé h-´Ê‚Ü£ý¤…܃üÀbÿ0ä†äÿrC òwCnˆAþ`È 1¨¦=êeAsn¶ñ©Ð(è¨ô=úf?ô>ôx´2 ý-„ ¡ÉÐXhä‚b¡(è§D¯…üʇÜP7¨=t.åC•Pä v¡È 1ÈôbÐ'| %ÐL( rC ;äï È Ý1Èßû 4bPå-6>ʅ܃þ†ö} ½m€h­W[DcþÅB™……ãgÍY¾‘DŠ»ÅZ±–¬5‹aíX{Ö–]ÙY fÓ¾§4úø(ŒÏ-È.ÏOqeyŠ3½¥…3ô£$ÁêêŸLGIbR¿¤ä~ —‘ÿÏ™w#Ë/›Sê-ÖZ˜—íõdfçez gx‚ zõî—Ô÷Òò’wÒ¥73v¤#vŒ#öÎí¹±®ÄÆ÷„Êv.ÆTcÿK_ÏÃ÷õÅǵŒþ_z ýïûÊÎ>1ú;¦6°ÿݵMý¾`ôÿòK™ÿíܸçÞèï5•ùðòúßw(0ý®·8O{s7⪗8_¸ñ#8/ƒóÝ/sΡŠW9?‰xÂγh=ú-ú¾‘ˆ /4Àj­Ë{÷ÎOA‡Ïrn´‡Æ{Ë'ÉuÈøÆÎ—í¨Ï[Ääg<@÷ vMŒlpÞxÝ6Þu°«÷ÁùRm<}8~«@lWÃ晴z¹ãg@>¨ ÚÕŒ ¬SV‚W&Cýì1ÐMÃÎSGÙ­+]¾ÿ°972”ú\l0Æà;¤§1´A1ãl¼Ç8=¿ûš÷o(ÐzÇ´^8­?Nk¼eFpZ»›Öa¦µÀi~ÒÚÄ´þöø.QœÖï¥5tiÞ ˆÖã5æçùò§u¸Êÿýòw7"Z·»±ù_¨þÏû"xò’¾ rßÁk¡"h7tn½äà_Ù¨¼©ý´†7­ÿMç—]ÏrNkmSûiÍncüh-ç¹/mü(Z_ZΟÖ*¦5Ÿþ¥õÕü/vü(ÿ…Jþ´¾1­—lä1õ§ÏW:ÇËç`ú®:"߯7—ÙxVN$ß(õ¯qN cÆ;êJOi)­ycc¤«pá/ÎÅ$·ÐH!ãóç/½ìœT•©Õ¹¡|Èöm©~^¦:òÒ@_²‘aQìd‹“Ò'*ö8%}jôm¼¦}’b'›œ>_±g+ö{ƒäŸ-å¿\±¿©¤_$ý›RúûŠÙ髃¤'Ãþ‘boû!ìû ŠÁv´þ;¡1Øž=½½} ÂQ§ãð銸?t'4 z zújs¯÷…ÂáwÜ ñ7ˆ;!Nî€2`_ÍÀöƒ³ëÏšÑõù¦ˆæB›ôà6šµS‚ÛhìœÜFã¬0ÐF}GÏIÐØ—ÏÒ=cŸáCãž·HO'?£H¢1÷/ ÌÓð¡ñ6Žgõ8¤±6ŽUÕFãì{0xy4Æ5¿^^Ô­Q|#ÄBÜüþØØûþ눡Cû9âFŒØÝ‘äLt&Ñk«“\½\‰Ž¸;FÁŸiË"ô0z× «_¿¡«äÍê¶Â´­ï™þ¬sçö‹‹wçÎ¥…o¼Õ¯¸ ô"Ô¦}Mûšö5íkÚ÷ íKpºšö5íû%ö]MóþÙÇœeófx³s{Kõ¸ÀØ*,.ô2§×3×Ë23‹ sr3óK=žROYf~1sÒª“ÌYZBkšöl¯¶ª™ ²Ù9"sz 8{†‡95§ö¾i€Ý“[ÊœÓJPZNY™ZØL/¹ä–Ì W‘#‰'gö4æ¤(™³¸Äëq2ª§7{šNìbCfþ]k·/ŒïFÜV²Gî,ù±%aÚ××ÇxŸ[ÄÝ$¿°h«à¬Fúc´±™"ùÕ¶±ñÚ•<à~|ÃoðÓîsºÎÆÙ*Î^Rççñɯ*ÇΫXþnlO”üªáW ¿Aü¦I~µð«…_F»ú~³„Ÿ¾Vý>Bß©ôËÙîóœÁÌÞ3ó[,ùqøñü–I~Ñð‹†_°ö>,ùµ_øE+~¤Ç˜~dŸ~nøœ±ÕkÇJÉoý×5¿%? ëE¹uéáw¯ÝdöYñ«¾/Bû-§æW­øUú"˜¼(¢a{‡é?™´y€ù\ÅÌ9"ç·“Õý´ÒÂ^ä×ÕZ?¿–,ð=´?=Á> RnÝ¡âQ̃¹ú±´8T/—úݪäWÉ’²ëç,Ðñɘ±zÓCõ’éxÓY/Ž+E«¯3¸¹†tœè¬¿ý¯ºŽõž©­c1}‹Ž:a°¾¯cm•¯)õ¡ãæ¬ÝV—ÿn%ÿ/ûPßc­õú~Äî_kçå¢=Gû…ÃC¹…”{ÆÎÇGéùuRìN…+|»ÂÄUv.êçQì3¾_á5AêçÛbç+#õüžSì¯)¼Cá½ SøŒÚ?¡£pg…µþÛa×nR£úuWì.…S¯ðd…sž®°Wá ?¡ðS ¯Sx½ÂÕ  ð— Qø„Â?(Þ,Û+œ¤p…‡+›À+Á~œœoáSïWƒ; þ¼ü­à£AÊwšåŸ‚=}¶…7ó…c^D?fΗëÀÕ[ø"¿Îà™OXøfÁÉà®+-ü6‘~0ÙWYørÁcÁk–Xx§03ÁÛZøaŸN]lábþ͵Ð÷Y ÿ7‘ÿRpAÚ#üW‚3îµðI‚׫æXx”Hÿ*Ø?å‹ô[Á#ç[¸Oð‡T>øG‘~?µo™…W þœþ …¿.ŽS–úýÇž4û/Œ×·Ww+ÁƒÏ÷ýÌü~:[sw™õ¼<\ð#àŽ[øÁø™ÎŠÀi‚ŸRŸôýf}^ÄVºTÞfl-ÜkòÛØZ+ñ¿cëy‰? ’¿_ÊÿÓ öM'Mû öñŒ×Ù`ë‘hÎ׋ù‚Ÿ@É­8_-Ú×ÖZ?}E3½#ˆ½²½iïľ©‹iw±¿Ñ´÷ bg±¦}P°ò]¦}D»/É´ bßÕÛ´ß{Åçæù­¼Fâyàµ/û¤óóoÀK%^¬¼Áfyϱ»Gšö Šý5p9]ÿùo ’>}”™~ì•R}? â?Sòÿ)ñRʯÌ̯üÄkÁ?J¼lõš¼#ñ{àþN“xx‚ÄTßSJ}ÙÀúr‰‚—JéO‚ÿ$ñOà¯$æø]úµÄ­Ák—qnŸŸ—òö‡MvDêÏ£ÓCyt¼Ä+Á1Lçžàò[YJÿyüŽï”x"¸Íëœ÷ó+7R¿þ¤ÛÃÙŠHýÙm#¿ç#õg·· ®ŠÔŸ-6ìÛÀôl±aÿ4RöÕ°ÔŸ}5ìg"õgL»ˆò#¢Ðÿ`ãûF0={'ì=Á¾SvÞCÔ?ü™•Ÿö~tIë¤Ï ÓíÃÀÛO™í^ùWóü‘®‘ì¥à}—ƒã¼VÔgx÷·œïãQ NÛÊùËVÿ5ŠÆƒóAÂþpÆÎKEý>'ï0Ûó)8úGΊï{Á'C¬|¯(ï8ÕO/‹ ómçý„½½ìœŸßﺂ½_píÆâ6jçÿ+8 ¼Qjß­àM§Ìù3¼S²§ƒwI<¼[âùà=/#ÿfV~½hßJðapGÁ/€Ã¬Ü)ø5pUs+ß x¸ øiÁŸƒ“áÿ…àoÀYáV/ú÷p·òÂn±ë×+õú´`‘à¬ÓfýÚÑ%M‰o‡6Ûß ¼±5ú?BÏ/ì€Ý-ìc(}K+Y”ŸaׯÏêùYدíúõÞZ}š±•à<©¼Ÿ`ŸwÍÙËTžTß7À3%ÿwÁ ^*ñçà"‰‚½ ž+ñÿ€Ë%> ^gå}EÿµhãK²w/”¸8úv+ï%Ú?\1ÑÊ—‰ôãÀŽ6®ÿ}¿/À‡ÿj^ïZLþ§ ¶³ÁkN›×W.*°Ö}ÿ}ìjãÉ¢¿ÖSùÅVžböÿV¥ÿSÑÿÇEÿ¿ ÿJ)ýpÄ5TßT›ö}˜ø µ¢s«h¤fãÕÂÞLϣǦgÓ· ÿ©Ñ´Vˆ9¾ó¢õçÔ£¯Ó3ëöPú‘f}ÞWIé¿Ósí\ðY0=ãîü+ºà|Ø.Ò[YO°c”wö>`÷sü†€ýÒxŽ¿Ž6>À5à,Á9à÷[y 1ÓÁiXy¡èÿ9àSZy?a÷ó¤ò–«`"ìO³Àw^N=c¯‚3¤ôo’¿ÄÛÁÓøû•ñ¯miçfì¿à_¤ø¿¯ø/m¥ÏWò?Bí]gå­Åù8´cÑŸvÑŸvðøç­|„¨gðJ)ÿ8p•t<÷ûŽ˜Ÿ7ôy=Sj¯ö )ý0ðÚ¬üææzþÁÛ7Xy;ãó¼IÊ&¸\J¿üˆÄƒ·Ù´ÏªÿÓà›FÛx{ÑžçÀn‰×ƒ³À}o¯‡ ~\)Ùßï‘ì€kÀE‚?¡üÒLÞ NßjåÍE{Ž€Sß¶òÿcï]à㪪ýñ´ÉÎ$éäQ¥à€[HK^}A¦IÚÚ$MÒP8ÌL’¡“™é̤I¥@½‚”+(b~^Š Z°<Ôª€ ¨UQQ«©Rå÷]k¯}ö>“ð¸÷ª¿ÿçÿ±J{¾gﳟk¯×^{ÏABOdg…ºBÊ;øz'}:ð˜ƒO¾Ù™yÀ;ôàûKèçáúyô3,ô³’ÊG{Ë¥½«©<à´ŒxÑÊj5"é)ÝÁtì¢.‹¯ t_OéÝŠÒ|¥÷Xü5à‹¨Z÷Q÷Êøÿ 8zpD5 ½ÿÊÃ÷=ò}~ÑáµÁ³ß¯_Qü¤¯¿o~2ðNà&Ág%«…¿LöÖow0¥ïLZ~Fé^ŸÅýÀ—Æ#ê>iÿ0Ýñð’Ô0ÝÉP#xû!ú>…+˜îVüªÿ"›þ0õï√)ø1`º¡\ðSÀtÀàç€é^†)‚ÿ\¼,¢9ô}CD=(ø­ÀtgÁå‚ëéÎCŸ+€éþãßI¯û?u‚ÌÇùÀüÅÊËK€-Á•àÝ%øI_<¶oŠZ(ëç}À{üAà}½ øñ‡"ª[Ú{'ð¶]õ¢´÷À[¿ ôÛÇh ÷»ÕlÆx{ªZìÁÉÞsÀ3~Q{Ìøßïð3R9ÏÒÇ!ÀÓϳòo:p ð‚k€_vÚÛHŠç_ywÙ·Oú«³€«œü)àçñ~ôÙˆºJô-À'¢þ ©ÿ}Àóö~xÙy–~øêW"ê·òý½Àc/DÔï*5þð¥û"ê2oÙ¿R#úü/€×?Q‹„~܈ö|HòO>ëÛi%ð!>xªƒß \–«&6©õàÆh¥ú…Ìï<Âo­ üݧ§Wª?šý àH7þî~*ÿ˜Ju–Ù¿~ÒIÿð4§þë×ήT?5þbàè_­þ÷EàéNþÏ:û7À5NúTÞi•êâ2«>ZŸ¾©Z½Køóï†óý`ü»[+{ä0à«—Tª&coW_*éµÀ/« è{ðÓ«Y?¢ñìþãF«/ôOÊ[zÞŒþlÞO÷çR<ÏMQWJÿ¶×:í»¸ñ¯V>݆‡åýRw•ô÷þ7U‹½u€w?ò':*Õeþ¾AíYQ©> øûÀÛÚ+Õ7¤?¿~¹³Rµ ~xÙÊÊ€‘~3†övJûÿŽôÜp5Ës#Ÿ×:í-‡â2íÚÊ@9=NÿŽ.:¸8çàùÀ#^ ¼þ†Ju·gçû±’þ?Žþ×Iÿ× ÿÚ›lýI<\à”—¦ú‘~¦¤¿xó_Ãòþñ’ò«Ñú5•¿ùwáûcåû뀣#Õ*z¨Û]yv¼Æ_¢ò?oÓ¿ <öhµzòtNé úþ0ÂÏÒ÷‹¦è¸>à?nš¢¦MÒx?(n»n© üIS€wðTàmNÞ|©ƒO¾ÍÁuÀÛ|ðîøïpðZà›Ü |µËO¯tpx‹ƒ‡€¯wð(ð­¾xÌÁïÞêà+€Ÿ~ŠØW<_»Kæ«óµQæë:ä_vj•:Bæëj?p§à»Àu‚¿Dã\%øë¤(Ÿ=…ý74þ/:{J ¯ì¡ñ-T©„§TTðlà=hÏs‚O~ôæJÞï#¼lšü¡o|àôíº<ª¿xsEó/Ê?¼¯?¢>(ø"ÂÐo+_<Ð^®êÐø`}áI¿xëÇ”Ú%øà1§?÷_ð`…zHêê—ô£‘þ=àåßPŠâ´èû§©.S´ÏDø%Â)S_Ú_ÆëHÌß,ÍÏ  <ãCJ'å¿åH½_{°”w,ðô;Ïáà={lûN;~ŠZ&óuð¶Ï(Þçñ¡ò'W«c&i¼åHŠŸ(W'›ñ¦;‡~T©ñíÀ/Õ*–¿„ï¤úOR@øËÀ#Nÿ L÷-!éÏ?ù›iÒ¾)ÞŸ§þ¬< ‡ý?Åü›ò«€;1§ >ê(}×Ùy2³¢ýÄ)¼?Lýkžz|•ú¢¤¯Þ¹E©Ýôýþû{««`~Iå Ïx²œãÏ çŽ Ó×Vàõ)ÅþJÿpÍç*ÙËô¼e ¢>lúOùåêvÁ_^ôT™ú¼Ð×kaoÌ“öý xûê Öw˜>€o¾KóÿêòÏ—üÞ:T¥^9V§ÿ}Û>;߇¯O*u¨|}k¸?'W]§8^Ê›¼ïUêFÉ¿xywyПàO.Wiÿ:àI¨PÿU­qú­v=Ð|QþO)õ^ù~+ag½ÜøV;?”þYàÇ–ëíÞ·êø•Ï }>ðVË/¨½ß~ ëw®äßCß?[¦– ýþø‡¾þHåõWðú¡ôJ ÂóKÛ„Þ·¦B=`ø0Ý›×%õׯ}¡Šã 7ï<3¢ú¯$¼VïwîžV¯z>¸%Q' ¾˜î#-7ë ˜îä»Yúw]Ô봧 |ëj­àíÀé¥UŠ"–y|ÞÒãÏ€£ÛËX¿ezІçÿÔži•l¯Qúá0d^:/¢nüÇ/úB¥zÖðߣõ]±=2ÀÛÀ¶Hú:à¨#FŽ×w0Ý3xôïzà1ðƒAÃ_éþ±³¤=Oûa$àgßÎÝWÉö÷xÏÝöGþ=ð£~…ª“ùÚïÌÿcJMz¨~éA»ÞÞ¼å–û<ý¶Jö/sÿ±ò„å•÷s¥¶ˆ|; X}¾\Ý+åŸ<–S¬_îÞ|›ö‡P~øùoTq}”žÞ‰úß-x„6‡ËÔ~Òÿ‹«Nªäx)Âï¥ô'”z¿”÷~ÂUzÿ€Ò? L÷¾­“öÜKý›YÅùy<©?ÇAÿ—ò¿¼ýÓå**å?Eí{T©»ö×åÿö}í¹’NAwìŽJyGGš¬f >xóƒeêoGÊzÞW_Åöá…À½ZSùÍ”úÔÞÓËy}övÖk’Ê/ª`>²À;›Û_¼~€ *õCißú¾Yû'ˆþ®žÖV©>,ý½ýmaýæn*ÏáG_%¼ÐêCßy›ÕgèûŸ¯¿Dñ~ ó`º¯óÁtÊþês*ÔJi_5ðò9JÅüò½ÚŸNx&¥CŸ1ü¨øÉ2`‘¯Kßý¥8zv…:KÚ6ðÞyŠ÷X~¯¿¿"Ð.Þò´R óÿpm¯•¿.b>Íü|8‡ô£¸ç;_Þó¶ò€¾qæëÓi¿[©ëÍz¤úïË §ÖO·ô6øÎ¯T¨‡e~Þz¬¾KYIþ¹À9è;_—òN¦;J|ðîU¬oPÿºŽÕñ3†>’d¨Æ­üÌæGï^¶Fñþ ðØŸ§í½øqȧge=}xöÅÁRßÀŽü¾xÑ®ˆZcƇpµÖ ï¢þ½RÎþSÂ×<¬ýÓ„Ÿ ú Šã]˜¾€çÎŽç_€÷>T¡æ•‰>©‚¼1ú뛀w|©‚õ^ŸÀ{ÞQ¦V™õ ¼nO9Ç?0?# þV-퟼Mö/i=,žÔ¯ýÍ”9êSSÔ6I_Gø¤ˆÊIú0ðÖs#LTÞ…ÀOÞ[ð§Ë;¯ŽüâÿPý± –¿”ÿÇYý‡ðvàe×AþLÖù¤úf[ù²øæ/W¨ÿzúp®¡*X/Ï_¹O©sÓÁÀÇ {’ÿàm/èxCÂÇwž zýf.$À Ðë|ÁïžCe0ß7Ð÷YØgžzc¥š.óy/pîˆj4ú3ð£ýÖžûÖLZïåêqiß©}3íøí±úæï7cýžnôã1Î|L÷†_(ëåøãÃöîILJésùñtz\©ù|à5•ªRÆ/|ý­V.–|pÕÎò€_^¼ïýVÞ^Kí»]ëïÔŸèûÍv¾> ¼v{%ǃSþû÷vÚõòuàm ̧¤ÿx§£?þ øæ*ößPúo£7[ÁþSþýp ìcCÿSN°ôNéSéÃû+ýðí'„û{20ÝÏ]'é§/»Í¶çLàu¿RêIï^ôk»~.^ëÐï€w=¢íúþÃÀ¬ÔÝ2_Ÿàü:^•¾¿ø±[zü2ðæ3-z˜Ê»Së÷'Àc_,WŒ¾DøpŒÿšß½Üz;J¾/ƒ Yï´ïà-¿¶õϾúÉz)ÿTàCƒ¾+ó³ª&¬ß­Þ)ç9i¾ß¼ öB«‘GÀt¿¹‘g¦û' ýÝK8R¡þ ù¿¼¨¿LÍ2ö;ðÖ;#|€ûGí[}êàØg‡J{þ ©Ôw¥½wÓï©oäljÖ_Eø›À#W[~û}à±øvoùly ?>Üó¬•÷¿£ö­Öö:Õ÷RI„bO¿³p’´'Z^ÿÇï¹$¢¢žü0ìá9’¿x½ãÿ\YkõÊ~ì¶ò`}ŸÇé–^/~ùÉruŒ÷åÀéuõ93~µú>´å’þà[}æãÀt—ú!’ÿ¾Zk¯ðxâá÷2û{? òî²þ ½µVÿc} ØØƒÔ¿¿S{¬àøyÖO 66Y=.ý;x ®ãS ×oYX©~ émuaW70ý¾D§áuáù¸ø¶ùŠ÷ƒ)}Kwµ–Ïûþ>ÐÑ®¾ú ¥¾'õÝDõÝU®Ž”ïo®¹=ðÿ»€wÌVê'’ÿKTÿtëþõï=•ê\Ñ/~ |ë_ÊÕÿøRØG¾”7©ÞÎÍÿàè Jy‡Õ[{˜ý?Àkw•ò:ðæ=Öª«·ú$å?øúÕÖ~iË+ŽÏ¦ïÛwW¨Ÿ N/:S1=³¾œ>\©^éï0ð;"AúeÀ·½Wi}ãûàèíeêY¡·k©}Iëo¼‰ÒOœ¢nþþEàõ޽ô#àª/V¨Û¤¾Ÿ7:úÁëõy£/î×€ùÂz˜*ëápà×B_”úŽÞúçrõÉ_üè!Ï…¿.¾íðˆ:ëh—5Xû’ÖGGŸ+SHy«¯wÖ_øygþF€÷œ«ýi”ÿbàåW¨_ þ ð¢Z~ôà‡¿^®V þµçë°·Åòià?Q®~.㹘~Ãa—ÈÃÇ©þS•ú¬|ÿlƒ½ÿâ`‘/PûOÐçi|§@0ÐoQ™ùˆÓïæ,òëõy«çŸ |©£ï¬nY Ô]ò} ˜~ƒÅØcàD£R{¿xím•êTiï¥a}ã}Tÿ7­|½¦1Ì?oÞéðÇ;€§¿©R=/íûj£õO²=¼~Qµèc“½Ÿÿ¥? œ{¶\ýFÚóŒøýg€/púóEªï-ÐW&éö}x»ãù•Ÿ-SS…ß=KýûlD}ÝÈOàÎEùæÑÆÈF»¿QüØ5Ju >øÅÿRêË’ðæ¥‡ñþ?õw ðVGž­žömë!ø|à(ê»Õȇ¹aòåsí}/¤¯Ülìu–T>ä£ñÝ ¼ÇÿÓo™ý¬§€×C~V ~Îþ$8Ë«2(*Ok}Ê{3pz¬JU§ó×Ì£xjKŸÀÆÇüø±êRŸv`úÍ«—Ÿ3ÏêK„Ó¤½³,ðG] \ëUôyͼpûnÞzõ'~xÏåê&Éÿó'ëóõO‹<<ø6G?šNù?¥ýz>ðN´¹Øw­äøsö—/ÚZ¦Êd|{€·ýZÇãQy½ôýE•ê‹’~1pÏÆruˆô÷*àªoVq|<¯/*?®é™ÊÿÈÉáø‹O·\áøSÊåÿ\y ¿}˜~sï“2¾?;9ìšÒoªäó”ÿoÀÑß[zœ¼ôæøC+é7(?äHÂ?-æc𓟬Pß}ådàß)Wc²ÿÖüÀÙ‘@žEø¾ò@_M§?­ëFrÜ}2ì¾øÖ?•«'_JéŽþz0ýNßmÒ¿›€7W¥®üIà=Ž<½xƱUj–”÷àÂ0¿ú¥¯Œ¨k„>þ¼õúrµRú·ß)Ð'ÖZ{¯øj'^äMÀéoGxÿ’å%pí+Õ£Rß[O¡ûª~ÚüòëÏlÞ}fEàÏ]IßߣÔÅf¼NqâSö¯ðr§„Û¿xë#j¾ñGBç=¦p¼ÍßÍÀcýJýEÊû$¥_¤Ôµ†Qûþòð'Wòý”þCà'?QIþ'€7;û™{KÚã zz0ô·üTý»¯f¼¾Ù‘GGÐAÈ‹Œ}yxjØÿ4øá;ëW¼«î.â:ƒŸÝ/x5ðΩ -NéËÊ9>Ÿðà©ú¾˜g¥?…Síþ¯WàëÁÿM<Ñ•ÀQð³Í©ú~‰“yHùï°úÄÀWÞ Ô"CoÔ臤ŒÇ÷±S)žëMì©§N¥øŸÉªº\ç¸ç{j|ài ç~¯p ðΜ>Mx&ð´v}_áÙ§…÷¿€·¶<ˆ¿YDå½X¦þ*ò~Éiú¾cÍx¯wæ+N[~E°¿’n<¡’ï#b}õ´ðüô4»Âô|õžò@Ÿº øR‡ŸìÞìØ#_^x¥ÚߨÛÀ»ÙÓ§Ùý Â/«ÊŠÀ?ñ2¥·ZþU½Èê/¼>§½ÅÚ‡ÇÜQ¡ú¥¾¹ÀûºÊ{o!p4 øuðmÛ#ê1á7ç.²òõàE_³ÿ\ÞS(SM’~þ¢ðx] ¼Ã‘G·?°Z©‹äûÀUߨ7ý•úyûŠÙVwZÿê^*_äð¥Ÿ!3>‹ì~•w–‡*Ø?E8L¿±jôƒcð°ù¨Éê§·j\K çE‚ýŒSšìú¦õ|6ð!ŸÐûsO |%ô»Ã%xG`¿ÿ‡wy“¾Ÿé!¡Çk¨þïT©œŒ×G›ì~,•÷)`úÖË$ýjŸãúASØ»§ÉúÓï~øÄ*õ€ØW¿§ïk¬?¢z±O ò_LôY¡•úf~¡Lí”ôÆÅaÿü’Å6>–Êï\¬ï1úe/}ÿ«ÿ¾¸ö÷ÖöŸÀë¿P®N•ú®¾I¹j¼ xyEuàoü 𓓪ýøà硯/ù¿³Xßw4&ø'ÀcX?—üÏ/»ÅúÏþ¼íd«W0^ܦÔï¿8ÝjÛs4ðr‰‡ \Ólãÿ¨ÿ §¾`ý‡gï}8Ø÷+Ý_Ä£¼ó<Ÿ˜¥ô„Rc‚GšÃþ€ ©þ;#ÿMõ½¸gŸï¸x™£Ï¼ÙÆ ¾‡òÃ~¼LðW¨¾}v~v×.U|_¥ÿ ¸óÛU|¾…ðs4>ûÊÕ;$ý/Àë¿QÄÛ•µØýEjßÁ-úþ$Ãÿ¦Óý7f¿üí-az¤ü5xx̱¿(áKeªEôÓS€_Ú^į´e÷“Öo­×ñðTÞyÀO~£\ýPøÇFலüuøÀ¢•·Xÿë_Tþj}‰Ê¿øÅÏ)u¤ß<Õ‰¯ù åO)uµàG¨?+”:[ðç×UªgÿøƒÎþÙw}¬RU=y­Ð}¥¢5ÌOÞóÑò€_Ÿ\úŒ ®žþ¦eÀW:ü··ÕÆßQ}i*ÿ ëON+‚xúË[m<ák©þõJ}Gèãf౞)êæýôxÝÕJþ_/õ­V»ßNùÞÕ ûöçÀËnULÌÏŸ¨Æ{²è½çfÿ˜~KÞÈ¿c—Øø!Ö¨á1«Ì^ßQä?ƒÒýþs—XþÀñTßÞ)ª(ã‘ÎAßh—ö\¼û:¥¾oö–Ðx”«¯Hû>\ì© â£w, Ïß÷€w\iûûË%aûúôý©•|žƒpd)ä[‡õß¾ xûM–ç,˟ìÚË—ÒùëÏ:x×Tè+ÝÀ{Vêk†?Q}à×f}÷-µû[L/À»øþðôßÙñ¼p©Ýÿçñ.:ô|=pm¿oÛL¿güaÑwOCû ?ø10ý^¹Ñ?÷QùU|^õIÂO”ñ’]jãט?-#{`’ºäj+¯l¨Rþr$ðmNûf¿t˜âùg}i™å¿¬_. Þ+S ™¿ðú>oz!ðö9ŠÏOSú¥”«f!ù“?¸ÌžW ôO¿¸[© ¥¼ÏGßU¦¾'é÷SýÏØý—G¨ý·Xû÷GÀÏÏêS{©¿G*5Cì…ß×|(ÌÏä6Ì?øµÙŸÒfå ï¿·…ãÛŽÞîŒ× ઃ+Õ>ù~ðæ>}Ÿõ¿¥ÍÚ<öë27þRàšs+‚óç'ž¬R/NÑø]máõú¾6¿Lå]ÛÏ[€ïtÚw7p-èÉØs÷ïŒEÔï? œn>*ëù{ôýG”ú‘àŸ?ÞYèƒÏÓ÷—”©5B?ÞéÈÿkèË’ pçœøÞÓõ}t‡{ùô°¼;þôp|Ñ\àE•ña§·´U‹ÿe²·êô°~ppú² õ;Ñ/Ï^÷qË_ßq:Ý?`ã®N\eã>¼û.¿sõÇiÿ=ÀÓ\;µ¸FðÏNÇwîÞù[èÓ‡½o> \ѹ(œa÷›X?#¼?|0pý=Xú{ð’6}~žðàЧn‘öµïüv$пV¯=®*ˆç;ó «NžAþÑHOUžz‹õ?½ø±>;^ÿEÛm¼ßu„Oµòg;ð¢¡2 {ãô»NµþÁoœaé7 yòào¶úÁÏ)}ú…ø—žÎe+ÔïÍþõÖÿÃò†ðÎûT ÏM%ÃXâmiüê–[ýŸõ'à¨3«€×9û‹ƒÀ˺+‚õ°xó}eA¼úç}î*à-gG‚óN7ßÿTDýIøËŽå6~™Úó%ài*Ð'¢ö;ñH?ž~j싨<Çr ûÎ~õQ„oµñ*o_aOà`o’7 øùe–ßž´ÂƃP{Ú'ìþ@p§ãHï†>ÿ¨¤_|`²<ðç½x=ôGã¯Û ¬`ÿ›ñºfE8¾ï£ÔÞ«`½|…GáõüÒÁ6>ð++l| ᬰñfTÞÀ[ uø__púOü± ŠJãF»ô&à‡7DÔ™Ÿ·/üY¹j‘þÔïÁ|Ið)À#GW©ïKý+Û­?€ù5ðuVHßúmèƒB¯÷}XŸ''|ðimÚOówðV‡þîjë‹ß¤ö´NQ»ªuþÇ€Ó°—ÌþäSí–_Rÿžž”ªPU2&Eí2õ®ïßúwâý+Õ#Áü¼òÎÄŸ¿ øáë"¿©øzÇ:x3ô_?ð˜ã_ní°û ìO§ôYÖþîï ~§Ô-ÒÞpn~¹ºDæg„ò¯UÿºŒê{ÆÚkÛ€“û¨¼OvX{Ï??ßê—÷vØø8Jÿ2ð¤éŠï/¡ôG)PÐñÿxÖÑŸ~Ö–¿¿'üÁ2u»ÐÃ_:ìy¶_:­}GéUV>0¿¾~¥åßGGsvüŽí´þU*ïDà›{Ëù~1Joî ûÃ;Ó‹ËÕ߄߭¥òœý•ÞN:o^¡^0þÐÎp¼à»:í~#•÷nà;w(u¾¤ßü°c?}–ÍV¿ù:ð!«*ÿÿnà"Æcµ”÷KàKOªR[¤}¿í´òŽù;ðî•~¹ÿJ{ž™¾¯XæÓW†õñÙ+m}¾Žp¸ñ—åA<ðàJ{þŽù?ðͧ©ÀÿyÅÊp¼ÿ5+õ°…wðØ eê9¯ü9àì/³¿÷eà'¾àÛ+)¾¶,ˆÚMŒ3n÷;Ÿ¢ï!ÏÚÓøÅ•ö<á¿ïpäÙ]öüµoð:Gþ6«PÇJZºl¼ áåÀ;SÖßz6ðŽ3*Õriß î©UAüå]Vß ú.îòø>ózÙ_¹’Ú3PÄû\Kå¡=Æ^¿£Kß¿l΋ï¤ö_¡ÖÈyÝGº¬~NåÿxQ¢Lý]Ú¿·Ëú·8¾xì5³ß²zýŠru`ø‘ÃìyуºõýÒ’òŽÞòfÌÿ‰Ývÿ‚èý¤îp|Ì à±F+¿Ïí¶þ1jO?ðõ"ÁùþwÏ¿&ø×.Þìð·mÝ/ Ôá‡Þye…Zlâï/uâ÷~twD=/ãý½nïBxpãAÕj;ç?ÀûS·=OÁñ‘T¾s~zJµïÙÞ^tAY°_u1ÒxY ¿×ö„÷ËN~þ³•r)ðæ³­ýÝ=rrp_ÁÚ{^€p xýj;žÅž°=ýŽKù/žtWyïu9ð®§§ˆ=Xá]KåªøþFOà=·ñ÷_챿wtWí=FýÛTœ?úUO8>þàÄiåj²È§€_úJ¥Jž«ñ+=vÿ–ú[Áøò—*ƒýì©ÀcUêj‰÷;xú[TÀ/ç­¢ø©iÂO§xËWÙý]Öß×mý1à–¬ÿvxUØ?rá*}·‰Ï}/ðÀ|{ãý”ÿ¨ µOü c«Âûc·¯¢ûŸ#êo’ÿîUö|=¯×UÖ_Çòs•=oAø§«l|ëó«¬<`~¶ÊÆ;Ó|ý øÎ“+Õ·$ýMÈ8öâÝ‚§}[ÿþášÕv?–p#ðNÇ_µø~‡?vr‡âû™(ðc³*ÿExýiÕ|þèo •ç|ÿ>àè'”zäÿð®Ï”«·Kÿ? ¼mf¥º^ð}À8ß?¸Úž¯£ùù6ðO© ï×TßyeêW¢?¾¼šâ»¦ðý}| ¯EWéû¿Ùÿ<Ý)ÿä5ÖFéK€vÒWoÿ¸ÕïrÀ ·Ùñ¾À±7.ÞëØ×W?yv¥Ú+óù™5ö¼2áÀËŸ)ö+¾¼ÆÆ—±þNí?¿,ŸŸJRµK_ Ãò×eêZÉ?y­Ý_"|ðZëß ù™AŠ÷7&«1±§¬ Û­kõýû·¯uöó!¯×®%{Ð꓃À»’Öÿ4¼Öî_Ðx¾ƒê‡|½BÒÿx‘?± ¸ñûê™…:ýൟð}±„ï¡ö½e²Z+ã÷5à©Îüü øÊ_V©OIþßïƒ=eÎßýø¶¾ õÁ¯_ïØ 04Æž, üïÓÎ Ÿ×}ðŒ÷[Ç À‹ÖXÿþiÀÇTéû?Þ¼öåÁùûsΤó-¶½çï\lõ¿w’¡ãèÇW/oÓ÷¡QúG€u¾¿ ø¶/ØxÛÏ~âûz)ž{'ðî[yò-jï½ö<Ïàè-•<þ¬§aß埀¯vö&A‘X•=?ÞìècGQú×&«>áï'œ>ºøÉ•«%½x’s>µë,ïÎòí,»ÿOx𣷗«'%}x]›¾?¾ÿð^g|> üøVÈg¡—;Î û‹î9+|¾ì‹xXëìÏþø¶Sª‚þý’ÊwÎã=s–O$üµÿ¿³ÿÙVÞ®:Ûžß§ú9[ÿÂÕ¢s6Ýç T½¬ï€/­Wê׆?SúX¹Úßøc€÷\^©¾.úNâìð~Ør `ïãùOà]Îø|¸ç${ŸÏG·ØÞ/qð¢óTpÇmgÛýoÂwmÏC°<;Ûî'ðú<;¼Ÿüj¿c¯ÿ‚¾wΣóï³Ãþã²uXï·Vª*áwïí¶ößáël|áÙëÜõTá¼ÎÞ¯ÁülÅÇÚõpö:ëï&œ¦ïcv~ ëìýÔž €wDßËü xþ]V>~h=@ø†uVŸcy|5ÆãÏ­³÷)PúW€Ó¾¾/”ð(Ÿ—Ý <æœùðÚ3˃øíýÏ óû7?æÌÿÛ§:úy#“?Qü·ì{¿•·æOFx¸êŸ·ù{?ë“T¿c¿ÿ{~õIà÷AŠÞ}ÂÈǨ=ïÆñzç„ùã‹À-]vþÿrNx}yçÚûl˜~€_j°ñ@ÕçÚxÂQà½kl|ò ç†÷ÉQøe_¹x̉Ç9x³s¿Ç™ÀϰúX xÛ-öüìйt~£L]'øà=Žÿçbà`¿™û£>ü¨3_wŸÖW~Ü™ßǧûÖßñ$ð¤¥Îþð®•úš¬ïý±£“ÊT•Ü·t¨oï7 ò§wÂ>4ñ³|ïFés€pÚwº>϶ÚÛGë€9ñà ßž×"œ¡ú±žLüýÀ»þ]æ‡ý-ï¾ÔÑ¿nôí}<Ì¿ü°~qðæ_Ùó¹ú–ÿþ>ðöoVíÿ)ðèÆý3}ÿór¾Ï”°ÁòÀIÖŸ>e½½Oð!À ï´ñFG¯wøóBLŽÿ¬ øê±Šà<öjàEýÖ_¾³üÈø£Ö[yÏö ðÇß÷Ê»ÕWÇÖ‡×ûgÖÛß×¥õõð­/T©ŸË~ÂOwžféûë)žY©÷JýÄ0Þ#ªEü7јõßp|ðè‡ óâ±tÚïÌfüB1–/zñ|±Pêë›÷|¿¹§£Ë_ÞÖÝãû@-!ÔºÌ_ÒÕ´¢Õ_ܺ´­_Þ¤çf×zñì`.,&³ë˜Èúýélo,íóÏû±¡¤ÜO ŽšÚZÛ[leèŠ ¢j̳-5nKMe…ÑÁÙ}Hï®÷z³ƒ½xNeŠÉ¼ŸOæÒ±xx(—Kæã±=§ ç'óY<Ч>¾Ló£”ð‡Gã²}}õ Àt¬XLÅ“nŽ ayßœÀó`¬X/µ×ÎÇ@$6Åôy¢MoJúÉ0›ðÑ"z92z¾ˆeúQnådúém>6O¦Ó¦M©¬?”IQþþd&™‘9‡ŽøýùìPŽ_}IÂ8È i»ã‚R‰d¦˜*ŽúYú_-^¦2›ôÃ`šªËÄsÔöL"I0›ÿÞ³>¾Às>™Š×™‡zó@#SÌÇ2…F<ÈhlJÒ”/n“®xS>Ëÿ†höÐ?×ïdzÈW°8™NÒïÔÓ›‰‡1èGB J]¤ñ”!. ¦Š~&›!õá]Ýø27™ÓÉLq€õàpJ½`ê2QM6CT–IÆò~6ŸêOe¨NC šÌx6Íd&dò|tŠ’ æ² ŸÆ?›H†H³Ñf.†õDõű’© ±MIÝFz™ïïÕDY74Ù£Ñ: &æ‚Y§9Ê –L*½Íg‡9þõ“ñdlC†k"Ò–¢Q•ØOh²ŒåûõC’ç¡oÞ<"ïá|,¦Ó×ûÄ9Ri0/>”Ïc‚‘!*ýBêüdé»Áä }ULcý%ùäeiÆT¦/;>'¿u³Æ‹izÎi^rFnF ääÀQcyzJdsI¹ΚÇÚó›Ym5Ìñ˜Þ¾|ÅŠ±Ù sÝÜ Â¹kKr7Ö9¹KÊnœã&Î/I\à$Ω'Îipç–$ÎsçÖ¢£˜Ä! Tïh1Yà9k6“ÏÇFý¡b*]XÕ½¢­E¿ŸÊÆñŠûRÄ_žß· 6æýdž2szé óv)ÉðœxQ§âM҆Ɵj ¦ÊËͧ·•+BT$’#~,&É3fpéW’“šégÀ‰D © ˆRCó5½ÐÁφ&œœÌ©3h+So2ïe‡Šö+ Ìg’¤¿s®N¿Ù˧b½é¤®$@™´Cˆ½±øf94ipUü›L¤hh°Ú³~.ŸŒc(Ói¼¥‰¢äL/(c*³q(•ç§l2Ÿ'Ua8©§’~ÆO§244IP*ŠÌ¢©sÙü¨·„óìúùžß›Ä’,ô{>Ä~@ ú8=¤²ø›h¤ÏG=`Wõ^^žæOóñ„ŽÍ®«C~i«3Ó¹ µP“ãP†øxe2ÒÌû’·Ù‚”OÆüÏ0Ú‡B1KÌÝ¥¡ÛTLÅô¿±þMg‡Ó˜(nBrXÇÐ`¬°Á+€ûÅX/q‘Ùóæs !TÀãæ/ðr©Äìµ^1‘ÊÏ^PG¥ù‰^*ƒ–êÓ³K§ú3³ º Ú…Þ¤}XnX9ˆÈeTd‘é~Éä‚“Òã/}?ž+fûâ  µZO+fS³—Û§úà©!xj žæOsí·ö“ùæ)™á:æ@ò ÆF0¿-ý“ÌQ+6Ä\«y®wžì³. NX0DÈ|®A½t¾ôàÔ¡Ÿêƒ§ó¤3%R› Å©F8u*–öxt™w“¾ÌÈoëðƒ7 óÁœ—‚<Ìy}é¡Â€O'c™!ê^2ÝGúƒJR½q+b“!º‹OåH^Ri E^i~­­h˜×-¸»_ÊR7Q–ºP–ú‰²ÔcˆÙúÙì’GDéá =¦9çMÎg²HÆrøìt˜‰yü·…Éø<7•Í@*¨Èa_ªâDo¨¶zEl4”EØ;=šVi4I`8'‚`p(cA®(²¤Õí›å§)(þЦåË;šy8‚ê³è1)¼Jz…3»9!ýÓ ± ¡.mCrTÓ./JgDå…;‚úwÍB=~ò!`XžÁgæ…ᤠ‚® e¨j¢¾ú‰^ÚwÁÁ±"€Œ²<÷A??_‹4&j˜D¾Ð>VËÉIé­~dƒ * ŸJCÊ“Ú6TLŠÊ<žð!5©R¨ ñs#ÐaP¾yô²é„_<ßK$ûbP-ðHl±VÛ)¢¬‚VOGsIy*IÁbÊBIÎl‚P. K¢<ÕÑøC¶1±R©q`?¤%”þB1%xÙQ{³’³¬²ÀóAQ¡ÏhXã×›bé¡$—¿¼ÙoîX¾¼©§u¢”ž3;'z¿¢£½µ§©ëÌ ’ÚW­híjkž ¥§mÅ„eµvw7-míž ©³©³µk¢:š&,©©¥¥ …MTuëòÖÎehô„õ7u¯êj]ÑÚÞ3Aj[ Þ·-iknêiëh/ÉPÀÊôñØÓÍK2Á,Wø"ÌË¿JmÒÊ—§µ#ÚË¥‡òP˜“›hÉÅÒË|6 p(Y(ØÙã*Mö4x„­;²Ú°F°D@1òÄV H‡ $Ì‹—®›#„u•ÌÂh!‘ÌaEöóÚÓõ`Ç ¬ØÕzPBIãW¤¬@kĪdnÏmˆaIèÔ\ –oG<—•$yMé"™\Áß<á*¬m†É‰ð Z‚££Ü—4ñàÑÑ|ýU¿ˆ ??ôg‹Y<åô‹œ@ÝàÑQ-|bøEêéC¦“#[,@ü Ž€ÄÀ« ÙÛ8›üž|GNýå}…è3Ÿl"yE´#Nöê…VLA&¡°xØþ-ºCn*µK§ØnA÷ É|,€ÄKEA.óÙQß¼ µ ‹.g.@¼|½A6}8e“;’¶à>ÓH‘Ïc˜4€LR³˜'–àëGNÕ/óEHíB’XŸ.…rá-1dÃbáJ5ƒ"Ëêcž›‘É%ãÚMl1sEbkìö{‡â’E,²å|hªoÔói²gülïyI¶ñ³ƒ~_‚ôÈo“KO$µÜLJmdm²¼'§‹.`Jôß ÞaýÄî¢Á>X³Ú.%:Òì˜*O${‡úý^Ø… º— î þ BÔͳùƒ'j}Š ¤E(‡ó³–„ôÈ;•lJȪÎdÉi1\H`“c™Ü=µ)iEHë8x̀Უ )µ)ÆJ¹fVöEÁ³ÏËîO’ò™gÐ^%û¹VÒ² Ò÷`£JZ?-4=àú‘(•ËKýNGn0¬(óu„O˜Aéͪð],9Ð ÆŠ ?ô¯7›f]®ÙªçÐYúσ†R(æâ¹Q/Ö[ÈöA!m„æ8Q’ßCU)øÌ>¼¢&lO«¹=gú˜òAÌwœæœU¤«-<Ã$Îtg|êq$±ãRý2;Ÿ*db´ÒÏigTàÊÊA)ìeY Æ²l7C‹O|ØÇóGï·µ¯\ÕÖÕÊC†aG)DTâiÉ‚üI±QXÇE6¨húà˜Þ¾µ»ÛÕ±Æom^Öº¼£Ý_ÒѵÂ[ÕÞÖÓܺ|¹Ãdâ„ÞÑ'Ô€t¢#>yS`*’îB+fÉòަEÓÚ‰›wù#ÓW°‡õui .áø ûÂp,G¸/l”W19éü¡bß|Û òg¥²Ù×yj9¦‚¾[kÝ ƒ©Ý™`íÊ÷£}%"m¼’¢æ‰ðñEi6 é@¸»Ã©ñû$^ê¨2µ)‘jà|䉈ûÃ#­-OCÐÉ Lï‘XëSÔj –ìAêUÓG ¥ýŒß ®H›µBCYî3YK+ûq@Ôþš3›ÏèX²¤±…ÚÔŸJhŠÎуñÕio(R>ù‹z»Êèb R/ý6?•Jd2E§½ì'ÙT*a’-Oû\héu6­êõúMþ’®%fÆ \—4¤+ÄÕdzÐáb ü‡¨ƒTßòÒÖžÖöÕ¾çs·É’/Yµ>q,j1í Ôž^è˜ÝŒH"zÆàÂä‰A&ΣŠiȰ2¡‘Îmäf^ìZ¡¢·^tŒÌbªwÍA`¼þ’µþòÖv¿§«m…?ß÷´¯¶WOA’ì¦aÃMœa ý:¬m3²ãí³ÓÉLŒ,gYXb)lÌ»ÄÒ²-Yڳ̙FVЍ¥z—ð[¿°!• ¦—›*˜Ý$Z.˜¶!’¨ÖZCª7¼xEOÌFŒ£(´¬‹– Ó zØ®%|!Vˆ§Rî°j0UˆKc C½>1Ëáxa°š ™º>C2¿ õSâ…ã Ù!¬T›I°ßš "'ž4Vþ¶ZˆIêÝjñ%Üå|ÞÒ)$M@´Šëôìe¨¤ŽN"KP§éyë¹`K$r&b†ñB½Ûçbœ6“ÁA4mƒREŸ÷‡ÙOF­æß~œ.6ÃöÌ€ 'G` i¯K‹"™ÚºÏjíê ¾ÒÝÙÔܺ´«c‰K(øƒhí`°ÇÙó››;V¬€`öHI]‡»EáAÉ‚î7TL°îÓèj oê +ÒfØhã.§ÖB«ÏøÚQæ)Á&ã9¨zœqÊ×mí‹gŠZ¾Äx­g‰öÏÂ*3’^–ÉyÖ€=ä÷¡' ƒZ”YVÎm‰fiÿ–ãû.¯ ìh£ B5*ò¤Ò(1#µ6W[S×Òfd ÷l#îq.Ý+Ú»Õ©ÿƒBŽ­"®X‰E x""Üb6pí0£Ô‚UŒ[6_ûEïp‡ÔÃR#Ê •äˆ#ØÐY ¼-=ô£Àf£Ôaí®ÁªÏdõiRóó³=L#U­E[ÑÊÍ|lË&>€•€e@=âãÉ`㌫¹„Ñåt‘aõ"SLè§§«©½cÙ—â-nbT «¾8Íi²­Ç5Ôûu¾¢>[ý. ‚8 ú@"¬7n*@f ˆø°¸aW8 oñ½yFËì ÷ÖÆØ„Œ¤O{ɯç9´©])FCÔSÈÛu¼¯S߸Òh"‰[1„W`Ç=)OÌæ‡©… ú{1@d@C’É5|Ù`¦¶b=ÅŒ›Õ(4fÑôAçU<™fUˆÆì°³ó-æW£LKgrÄÞ(­›è%(´ìŒ¡YÆ.ÑÒÖ$Ó,­ †cb†ÜÈseº‹riÞRä¥@ëx8EÆ ¹·ˆa$XÑ <\yÝAW}‡Î²ÏæØÅHÍ!²)X“Ar‚(Ë'Åœ’ûZf¡ë©Ì†ή•«Ýù¥µ#Ѳ‘°ÂEåfsã÷°¬~§™6 VÑ å ¶}y&¬—1Ðy’EÖ`i”†2´^C,_fÆO÷[a¨5-vèBS4œP¹´ì÷õê  šJÝ{«‰›VºËŒ)×§N…£¬^ãøƒµv¬œ€—‘ïu„Ê ¸…X˜NØ[¡YŸSRX÷ÑD‰Ñ Æ•"¡E¦t/Öû'ÈöБ7"L…eÈÚuÉ;‰ŸcJÅB* V%JB,¥ÙNÐ žÑû]Ê-Ê(.¦ÉŽík¸¿^þ<ßz7ƒÝ“Æ.Óö íÎIè˜Õüµe„¤ÁB?mÿ0ÏòŒœ‚B›NÅSEö0èá'6£êiËœÆ5'K öp,°Õ žø…°c¥~Í$1ÚA£éNÉBÔˆìþ$4¼ ÆTd¶o¶4=ÚÕž1F¦Z¯ôRo@3« jX{S{ &Œò€™”F€ì$TŸ= ¾t†D)`¶.{qÇŠÅžÕÃ…ô‡)€…¬_½ÆYÍà1Òß4;¨ IY‘»ºY¬J¹¦Šû±¤­½¥û̺b"˜ziË›PXãI«Ó±(˜“v›8ÂUÌ,3ÜÖMGú‚Víü!Ž6kð„«mÕ#ÎaÑyHýM 6߃ 4³$c9Ÿ$Æå*hdc¤%Ì”H:¯Ý§Á0÷k!,mÜ-«/oõÛÚ—x!«•Å>Ö©Q¡2†\ ïb¿õy~oÀšÌ’Š‹iHœ‡-«W,ï!v½A”´0#×)ÖÅ«³UÍ.b½Ù|À((Ü‹œeèƒn2©‚ñÑi¨d $‰^‡“³¤'RÆ™‡Ìéýá`ÎŒÆ šÔ'œ%Gzl_,•vA£;cèÄô1ÆMlÄnÊùÆ–˜³Sƒ½CIãe¹‚I‡&£%ÏF‘ÍX2¬Gø Ñß8•Ã3.%J™?7°@ žc§¡Säȳ ªBÝCz<0zT«bLyõ^KKkO¨Ýz•¶i+ž]Ùää+]èÚT™‰T†ßváZIÞ’&:õ„LPvÝ…BŽÓ>áÄÄ+bXíóçi#ž ê^XÖ™ §²¡~«%/p,8(DÖªY ÊóÀ´‰ÛÎ×´g´_»J´˜å- p·L"–Oø} ,ˆæ¦ÅÝKz|ì§›X@µÊì4ˆ%—ÊZ…ÝêÆuJJ$s 㜠Q%Ko ¼šõøé —•OÊ.;¸1ÆÂ.‘–Óm¥¦‡H=<©¹½¸ÑÅãâZóšÇKñ|®EÅY-Úƒ­›häöêV>áÖ¼¬©}i«ßÝÚƒIYªmvèŠl 'ùÓLcu$Ó}zq1¦y€¶eò|BÁÓÝÅÈ6ܰ Ž-cÖEûèM\"ñÙyfüóç‹(1í«Vè wϨÕ%Ín_ÚÜâµóJѽ4ÊÉDÜZO(ƒX†žõ®ã³b— 4;Úâ:ß3QL¼XK'­˜ÕLÚ‡€Hf¼¥°R=±4èDÈìgñ1•ÁA]mL˜æú0í¦Iœ%ò ê8¼1qÅtI,×T㨨%ûŠ~Q,mc!4Qœù¯nq‹zBÍö%0ÎÂÝhí¿¥ I¨±ÏÌu¿¦"ÐnVw¯Zr¸jm.ΛáàIdb±SÐ[¤9êhj°´ó´æ Ïšù¥![ÚÅ4 ƺçÄßÏ•Ã- \ >ßTâ³In€´ÆJlsÞ¹hÁÚaÕ Á‘#˜DúµF•t4ª2“楠ÎëcPG¶ë!3n(Q­«0_²ËaziýŽQ7"¢ÛËîò~G/°ñ¾  Li 쥠“t]-ÅÑpü_ 6¬˜=ßdw ú)Öœ÷ÐíÞ’»I-Ò/UCÉwÜÑÁ®F ªÍ‘[³áN $CÁìY¤!µ3Êïîéè ‡ó8q Ð/™ö ®3„ÀÆQ£pÉ {MN h,²U›Ê¸Ûn¦wü æÇ6Ù0mRSüÎ¥è ”nnšöƒ‚ÒÓdñYÏŒî?&K6 %›y%Éäð»Ï\±¢µ‡Xb଎SÔV?¸Ne6QÏ™P9’ÕV¦ ÛF%ÀœðicÙ‚ŽƒÏôƒÚ6p^hÿf‚:±ÇéÐÈ«]Ô1³i ^ïZOhþ¿‘Ý] ¶îä„B»co¢ÀŒßÐ árN ÇH„ÚÜǤ. š¨ý&Éšv'TŠ–¹ • T×^Èk‹¢ Q&7¦! y ±ë¤vFçuhƒf–რXé#1kwPù³†ƒˆ«FhSXâLÁÌthS/ÅŠÐI^£!R×KÈPœM]+ÈžÃRѶ«³Prá!mÁ¸Î7m[äÓ"ÀL«Æ¯ÖaÙ€ÖÂËcÿ¼™l Íðƒ¸í5ä3½| —TRm+0 ÈžmwÇòÕ­~ëJ¬²<Åf”:›5ã)­VÊ¥‡tn€F"da³Ž-a_¡¬8B«9Å»³ă˜½â‹”ž;ødƒKè ´ÿ¼yY»ÏM2Æ.¶[óš~‡e 1WÚbîÐþ[9Ê ½Ô!Nçžœól¼HàGc?i&m‚+ÍÆœïîwƒzÁÖyÂUj2œ‚*£g)¦[ÎñfÛŒœ,½¶±á¶†ü¥ÞÚ3Ïg”šÙÔ¾hCb< &snSx–Ü:­;˜åÆ¥¡›ÙÞó§‚è)Îæu,n‚ùØÎÛ8v;ÔDˆ³ýjÒCÍæ€ÙîŒ)_âþJ´áb2ØûH{bOóü“ÎzOr¸ˆcÇȶC*Ï*HgS<›%/ºvi³‘I*Fo¡(WîèÙM8Ç‘<‘í—[ôÉpú†b²DÄ´Èf„ó ~¯î…Û/nj>ƒ}É,nxØJu´m¼Ò†zs–—PÿVñ¾’qÎsT.Å5èºé~¿WÐàøÌÂA…:”º/ë/”\tÀ·è@_.ÌÅòÞI;á8ž»¯H4M.¾à“Vd&b45²È%„d\„ê ñt£¹È~a!¼TʼnKM.bmS$· šÐC"´îmP(Ú;ºV4-×G—œXk6íô¾]/ïØµH ”MLø‘ƒêRmý Ä?Ü`‘Ö§vÙVʸ¬f×KîÏ`%>&§9&5lWzpLÓ ¿9±'BÓ8ÙýMëbIWkkØŸéÆYšn§BÐDÑ“¾@Ýuu:ˆ¥­í­]M=]ÝÞ8W€v=Ô{~óò:³CŲj¸ãi ˜I³ƒî;îÑñ[½A$¾\‹rHxÞpŸxº™´B Á+2WH%¡—ÚPdg@`(&EKP¤T¶À‘˜ N»Áóõgø8x‰®h‰—.ïXŒuѱd ÔP¿§‰¬k:[Rª›ê}hòè¬Òl®OØI6öšÛ:œÍ‹WÒЙ\¢nB9^„§00[‚— †[SK:mlnôä ”w¦H­‡Êò’Ø ×U_ôDç›ss\ ª¶„ä5 ‘6 ؈ŸH›ì|Þ £|Ÿ7õyÏAod‚ð£J&ØG×küùîn«deUFÂ4â Xáè s[‰Ì‡=Ü—w6j¬ß\Üæìºa57Ò½‡ üн§}íRªZÚàEŸùàwJtœÁ®µ\w‹Ö†T¡÷–\]ËF|‹ö(_ºöå†^Ó¸çP{Zsrè¼Bñ'^`O{C¸<º¯’îõh#¤³©«‰ý¹ÍM]=!\È·Ô/»'%Žp3¥}¬R6¹•ÊŒ÷úw{°>­©ÏÜ8åš:æz ^¤ö+¾âÁÎ Ë ÑÕÚ¹œ¶|x/’B§²!Ïp[‡¥AïÀѶî‰:àã^ ŒÎëÿèhA¡úNª ’ˆg2ÌÊ‚nº*0Å9è;!’]çkSºTo)„ͱÜx$‚‘Ïf'Š‚rCq6uÄ ¯" lŸ)GqÇ'졵¬ ÚÞÑî³G”¼¡-zç=Ò=¤EcÏÔÖ“ÑÚÆLh³Þ&<9 àÛ…ÃÔÛ}³•]œRÞdžµ[ŠSML Í 6`DL‹¢AwÁ‚ú¥ðzY?4 –UË18}„ãÄ×´BÇØœ޽Z^hk_Â/=_Ôë‰Ì’¨`&¡/Фãýí³RzþuÀf»©7Ó=ßÙmu·6½v•e E'ì~ÃÆ¡T|•ò[;–¬ kª5ù®“ÁT¬ dJk äƒóÙulOôõùyÆZ*3<>ݦC}Ñ-ü¼ÞùqHKŸtUn'pÑ^«ƒ Å÷Χö‡292(°ðFµ,ÏðØ+ÈÆ“U”¸¬Ó7ù]âi¦Y侅ϽºãWz„FßjaŽB9·Ä2ãìyc³ëú³HßçÅ öð@V”Ï °(±ÿdâºZajZ—SÕ$òåÄax[•ŧ±uMˆCŸ/wÁ6§*œc¨r;LIÚ«†øjØ Z<ñ=œî¶¦ö]X—Ï„uµÐçÐg>9"W‹¾åDZRõÁöºÚ•YBiï,=#¨m…ùž‰©à¾éq §Mù’¨kìþ a ·ÍZ̘1g¿ÇÃ%×FêMYR¥­<´'eÈþðlôXtš#bs½bЗœ«ŽUø}r4šË$Oz“"RSŸ}ŸØ;F[xÚÝ@^E¾$ȱLŒBÑŸ Ìrë‚.Xi :îR³Øà· øÂÿ ZôeJ¯ƒJÐåEAÛKïõ Biø`løŸ¾\Gl&Ï5µ—¯Z|F÷bïõÇü6A:Ûÿ¿+è5þÔâÏÜÆZü[Gÿ'\7·¶‘ßóóÜ:¯®¶¾±nn}ÜÚy^m]}c}½­ý§µÈù3DzçÑ¡»×ÈÑ[€õÿ·?rȤ&ºZK–hÃ캚h;DɈÖ×Ö6FÖ@CDˆöŽF—ÅòX ÑžÙÑn¨ÉB4–ID[²ùT,]1ÉXÛ‘ÅùTÿ@l0zfv(Ó]•I±Ô*ŽF¢‘n¾É(ÊÛ‘QZhÑb6ª¢o4ô Ñh{¬9çG1AéÙ‘ˆ“<ù¿NŠâOíl&ÈrýCQþ¥°¥|¡&«é­‰×0K¨éMc5ý1¬ã“"ølÎì¹ ølâ§RèDO‘v> ÍöEc`¹ô Jîç(ý`]é²JéI0`ÎD¯ë(¥SÂ"C©Ñ ÈÏ yêD4ž…I›Ê`efRSël/'z¢,õ ç %O‘YoøO¤›F>º”F>Z_?'í˜5'Ê– Îjä§Hï½¢ùÑ×iÜjþ)‚ž ù‰r×Ù®/gÕMÔÓq/ݺøžKž™ÆÄ7a®Rñ¨ må™'%ÑÖxRdþÝ‹ S4öFfpÜW½odRÿÁë_ø¿¯¯«Ÿ ‹æþçõøíÜZâÿõsæÎk„\«­k˜;oοùÿ¿âϪL"E§G‹ÉD”WNÿ’ѽñøÌÞ˜ù,ØáG†HdÙóT‚âÌô1ZÈ"O&[Œf’šõ:¦>g·A– Œ§øWm•KGÓDùùNf sg¾q¢BkÀ%ÿ€hek†ž'šžAh5ÔZÍ‹le5D%Î>’KC È&GX,ÔDëN¬›n:´ÅSÏy݉ A†H(CCCƒ¦û0MJxfɘ9kdáÖÕÔâÑÚzà: ×ÍB¨w ¹´Ca¥ôsR´3:únÐÓL6RòÑÌšh[tFo618†ðjItFÈW„WM5‹kš‘3†9p^£Ð®èŒü@v°7;LäÁ/©"ÑÞc!yR™K'06%©í,ÂXç<ýÂU"š‰Ñ1²G 'qK¥ ¼à†ÅùL2¢H:0}ɶ c³Û]ˆÆè&³Q¯Œ±™¡µ*šªïìG÷ó`-%L#¬\Èxá:›ßëzgšé•¾¸õ±.O_)6¯Î-Œ™Ê°ƒFØì°¿qŒ²fb5”Ky]UÔUÐ2vöÜÎÄ_E9•b,¯çÏß jÂtõXþøôsÂÆñ×o¤ŸÒIÝÓÄDæ«Å¶¯¥ }oš4C'¦ÃÅÒuz iÊ™HêÛ¹-Yè†e:ÂIV1Ñ Q =Œ#ª(!I´L’N¤BÇr'19“åe©ïZ8I–L¿Èµ@K—tÄݸüßãëÌ« =ž`Œ‘§Å”Åò+¤{“M'Œ9lê/u±;3õß®Ø)d‚‰Ô“h:ý?˜Hwÿ…þßT!ûO¯ƒ¼üóæLèÿ¯kh˜7§®±Ôÿ_‡ ÿöÿÿ+þ\غ|É~ûíàý½Âóˆh/›µcrÏaß7Ïy_Æ?í“÷9ŸsŽÏ{Ž¿××âH%èHmˆ§¥»Ú·Pÿê_}‚úÇeÿ7éùàD~K¼Øîze[û±¨ïÛn1J5»ù¨\}*&VÔ¼Ú¿½tõý½Òµçþ§åâ»fD]˜Ï ö¾¿PF›ß~Yžzⱺ‹Wnvm>&»ÖåVÕìÎãrÍÍ[þÏš1fŸ¶¼u‹\óæ-´æƒÇiÍÔæ·i¥Ÿ+-Ý»š¿w“jjôçe¡:JµIË÷©&ⲦåöÞ;KµIK2ôBuŒê8ÕÕ ªqª“˜T§¨&©¦pÎS¡š¦:K5C5K5GuŽjžjj‘j™jsŠj•êÕeQ†bâ*´0Ð|$*çzQ^6íãA—k‹.úe»,¾ìšÇÒyŒ9s壟*úÔÈØ%×?4÷pTnOm‰¶Í F.aýX8!g®ÜZjÄŠçÄŸåÒÒž4–ب:ÂØY|F‚Œe>ÍXqѦû ,›‚…–>‹$>KÂ*¿&¬AðCX5? k,¬:}¾ á2 ëš°!aÝ,l°°îôAx™„âE6!5¡!aÓ‚,ÔXØtú ¼ABïuBHv „ ÔM!Ä u§B—û3$4 kÂ.„a Sfa—…†Óá¿H˜„ЄÖ„}aMS³°ÏBÓéƒpö) O’Ђ`kB‚ ¡e 6 mZN„‘àºDBBD D tL! §Â8 !̸.„M8„0¡k #,²Ðuú SgÁÏ‚ÏÍ}þ„„è#$ Ä4!!!` 1‚,ÜÜa›„ ÌŠ„ M†0!d , ³rs„ï’ÇQ Cˆk‚ !!l qlÂnîƒp@‚G)aRF LBˆ˜Â$ #,DÜÜáj¢š0 !!j FYˆº¹ÂéQ)ŒaVŒA˜Ò„qSÆLaŠ…qÆÜÜá–„„¤&L@HBˆ™B’… bnîƒ0FÂ4ö!!¥ “Râ¦ba’…¸›û \&a÷Ò„iM˜‚0 !a Ó,L±ps„/0г5 aFRf $Ma†… I7÷Ax†„0„iiM˜†0m ifX˜vs„2 q\ÿÒf5aV¿þÍÂI›Î,;³ì¤ÝÜ çE¼¸ggàd4'‹=É@ȘB†…, 7÷A¸BBW§„¬&ÌAÈBÈ™B–…9rnîƒp„qÌŠ<„œ& ä äM!ÇB…¼›û tHXÄ>!ÌiB„¢)̱Pf¡èæ>ÿAÂ&îÙyMX„‡P1…< ‹,TÜÜá£÷J!‹™]…PÐÓ„‚ʦPp² U7÷A¸„¼ËŠz–€PTYŠN–`aÙÍ}FI°ðÙiBYÏÊ*K˜BÙÉ,¬º¹ÂEvñ>¬C¨èYBEe S¨8Y‚…u7÷Ax’„%̸M‹z–€°¨²„),:Y‚…M7÷Axš„2>ÃÖ!Tõ,¡ª²„)T,ÁBÝÍ}Š$!4 ,éY’ʦ°äd nîƒð‡$4p.5!,ëYB¿þ-«Da:ËN¢`§éæn8IÎ!Þœ=Q`OVT¢0…'Q°Ðrs„WIèãsGªž( ¬ªDa «N¢`¡ãæ>mlÌì.„5=Q@XS‰ÂÖœDÁB×Í}Þ!!€£Ôƒ°®' ë*Q˜Âº“(Xè¹¹ÂG>N3ó®aCO6T¢0… 'Q°Ðws„'¡Ž{¶ü&FN=QxHØTYÂc›N–ðœ´ôAˆ’0†£äƒPÓ³„šÊ¦Ps² >÷Aø4 \ÿêz–€PWYÂêN–`!àá>Ÿ'aG)aGÏvT–0…'K°òp„ß$!‚™†Ðг„†Ê¦Ðp² a÷A(І°«g »*K˜Â®“%Xˆx¸Âï“§³(„¦ž% 4U–0…¦“%Xˆz¸Ÿ“0‹Ocöõ,áÑ®û*Q˜Î¾“(Øóp7œïãÇžÄà´ôD=i©Da -'Q°óp„ 9Ü+âÚz¢€ÐV‰ÂÚN¢`!îá>ÿF¡J:z¢€ÐQ‰Â:N¢`!áá>žŸ“B×ð$„=Q@8P‰ÂœDÁBÒÃ}n!áï÷4„®ž( tU¢0…®“(X˜öp„ÖT¢€p¨' ‡*K˜Â¡“%XH{¸ƒ$l`Þe ôô,¡§²„)ôœ,ÁBÆÃ}'¡‚ë_‘ž% ©,a GN–`!çá>_$aïtB_Ïú*K˜BßÉ,ä=Ü!OBwë"„c=K@8VYÂŽ,ÁBÑÃ}~—„f\‚댖% ÈEó  r©Ê,T<Üá[$Ìâ(U!Xš°Á‚P5‹…%ªîƒðmº¸-CðiŠ~ýóÁY6;+ì,{¸Î>91•(àø5g {⇰j ~ÖXXõp„·IÈâê´!  ÖM!À ëîƒðß$LâŒÚ„Ô„„ „MS²PcaÓÃ}~tŒÎY|²©Ci„„º)„XØa¡îá>ʸv4 kÂ.„a Sfa—…†‡û ÜOÂ>a6!„5aBBÓÂ,ì³Ðôp„Ï’°„wºÁÖ„6BËlÚ,´<Üá×Ha:"šp!¡c Xèx¸Â 1]#špaB×FX8d¡ëá>_'!ƒ™ÝƒÕ„#Q=Sˆ²pÄBÏÃ}þ”„ \úF5áÂ(„¾)Œ²pÌBßÃ}^"a_};á%aL,/¾—€ èßK° ‡©,áå>M±>ãšà÷j׿q8>ÓgÇÏŽÏËÝpþ…œ<>wàÄ4'ˆ=‰A˜BŒ… /÷Aø„eÜB&4a„)L°0ÌBÈË}ÎÜGßwá†×BBØâ,Ø,„½ÜÁ&¡‚Y0© #&!DLa’…"^îƒp +¢š0 !!j FYˆz¹ÂgHÆ5aJÆ!LA3…)ÆYór„_!!‹»D BR& $!ÄL!É 1/÷AÈ‘°!!¥ “Râ¦ba’…¸—û ,pŒ™€0­ S¦!$Laš…)^îƒðÇ$¬bÆ%!ÌhB  „¤)̰b!éå>CÂfÜ4„´&Ì@HC˜6…4 3,L{¹Â. •% ÌjÂ,„YiS˜ea–…´—û |Ÿ„ö!!£ Yýú—“1 ;Yv2^î†óÞoÜrp²š3‡=ÉBÈ™B–…9r^îƒpÓÊ¿êÛ 9M(@ÈAÈ›BŽ… y/÷A“°†}(B˜Ó„2„9ES˜c¡ÌBÑË}î%!+lB^Oò*Q˜BÞI,T¼Üá 3x¿« z¢€PP‰Â N¢`¡êå>¿D‘úŸNŠz¢€PTYŠN–`aÙË}²$Lãê´ ¡¬g e•%L¡ìd V½Ü¡DBJýO'=K@¨¨,a 'K°°îå>DB3{¢ž% ,ª,a ‹N–`aÓË}þŠ„®uU=K@¨ª,a U'K°P÷r„ uìCÂ’ž% ,©,a KN–`¡áå>ÿtAû¾ aYÏ–U–0…e'K°Ðôr„wIÅ>´ ¬èYB¿þ­¨Da:+N¢`§åån8§>Aÿ«þ¿œU=Q`OVU¢0…U'Q°Ðñr„aÆ!t!¬é‰šJ¦°æ$ º^îƒð3$¸ðnô ¬ë‰ºJ¦°î$ z^îƒð =}z¢€°¡…)l8‰‚…¾—û ü" ;ÈŽò÷#rêè‰Â·*QXæ·N¢°NZú dHèà¦BMOj*K˜BÍÉ,ø,îƒð56Õ·êz–€PWYÂêN–`!`q„? ¡¯þ§„=K@ØQYÂvœ,ÁBÈâ>A®Êz–€ÐPYÂN–`!lq„ü¸†G ìêY®Ê¦°ëd "÷Ax“„ÎÖ(„¦ž% 4U–0…¦“%XˆZÜáßIÁQƒ°¯g û*K˜Â¾“%X³¸‚wœþ?Þé„–ž%,íú×R‰ÂtZN¢`'fq7œ9I8q8m=Q`OÚ*Q˜BÛI,Ä-îƒp Q =Q@è¨Da 'Q°°¸§°êÛ z¢€p …)8‰‚…¤Å}>GB W§i]=Q@èªDa ]'Q°0mq„Yøì”†p¨' ‡*Q˜Â¡“(XH[Üá9p”2zz¢€ÐSYÂzN–`!cq„ß#¡;]‘ž% ©,a GN–`!gq„?#aó.¡¯g }•%L¡ïd ò÷A¨“ĵ£áXÏŽU–0…c'K°P´¸Â÷Hèâ“M‚ü±$g rÑ<èßNN„E*÷AøWFÔï& Xš°Á‚P5‹…%ª÷Iaë—åz“E}Û¿-Ÿ¥ÅÌØŠÒÒ„\z-’?6LÒÒ)1`û Zš”c?OKSâiwü¡›]¥WÄ–ÎÜê’¿I‹‡ó¯g}7ÎâúF?¶üFíñ¨ïÆÇ·ÜÔ'_,ˆ“]6m™½Å³…°ü©Ô„mmÑoõ&m_wùÓ7»n¸†þG‘ˆo¥ýX¶ò‰=Ý’¿X•--Üõå!Áþ!Œ\›ÇüFõËôC˜2Vì·Å6=#ŸM‰m8¥¶á¥ù$eû»?;z2"h‹ž÷ßæ#,ñGß6íØ”uùëg]¥«Ï¿ã>ÿZvàígÅâ…¡¹Ÿ6ÿ±ù¹âÛró£Øü¹Úü66_àÍo«Í—C°ùª_. ÍW+¶l¬MlQ×—8åê~ãÅS®îÊ™+C„_\´o:'×{Û'ä«%ÛO¯Çï§_›Ò«¡û1ò4F>€‘g0ò“¯°2yÊöÍç nÇÀ÷·tÈfÅÁ¨‹÷ïd„8¼CtÈÄÑôá\˜£ÎUÄ!{åùwÝâ´ñܸ{aàA9LœNëöŒZ·üjÇ%þæïZW°ûÀWÏÒÛ±0ôÐÉÁ]³ ?A￯4loYPÛ–úƒÝ›NZÄÅõNzwÅXK쑯ÈŸu½ýœœ3ÿÏî>ýå³.ܽ‹¥WÄ>í]ýàöÒõ÷ß(í©Ã;ôðÉ6,Ù‡wòÆŸÌåÀö)Kmà ÏýÐ6¤Ô6”Ÿ=Kל‰‹tÖt‡ƒ\Ãäç®'Ŧ Ò_Ä'¥'ñI ‰'iZÐÚħñjk'aRx˜ÁÃ,²xÈá!‡"*x¨âa«xXƒ&·Gnc<-æÙÀ£ò2S¶ðÓÄvX§¸Llß“ü×¹høç|ráÀÉMCõËçët•¤‹¹x¦‰Õ}ñáS‚}ìÝMlmëâHoÛ`ƒ`×qÛ è¬\F™‰YÕtXZ±`íöNb—À^[ ¶®hÛ-à÷‘X:1,ËeR–£ «UÈJ¾ äЉ¼~é”këgñ¶ÊÛs;8¹æYÝݧåô•§æ51¯ŠÙôÝç_=]ªÙSrmŠ)VÚ{¯ôáùk¢íe÷ÉÙýý¯ŠÛèwÄu y·¾^šjÂþÖ­™Nú¿v&^ênL<ù/¾~lûil{`ë´¥¦ìüïàÜ/½{©´çþ@ŸõrÆÒN¼0wVÞvp;xêºün_¤WƒÛÁ,½z#ý9A^“oÍ¢ý÷ÐûPÃ'˜ay¿» Ç®ŽÛõ0NŒš~»V÷»:ß®k¸]×Õíúd.f/Ó¯ßéS‡¸_¦£6rî2Î}ñ0_£#*ŽA¼Âñ~çbéšwoˆqW¬ç)¬§,^my±Í¬ói»Þ ¶®ì®’+;` /Þº-Ipú6!‰ÜXŽIJ¶Ä±ì`ô$ÀA µÃÎØ‹›egHB¦L«Ì’Œ5®?0&ÃvÇ3%»lÖ;C·2aƒ…¼8‹)É:œb¯ àâÔ±½3$éùóžî}âÉé´ÍÍ}è]½ß=ï9÷œgwð¶®}‚¨nžp”‡Žñåaˆ‡8“<Ìðp‘Œd¡I¿TŸƒîtCy-ù„Äf:æñ•pq5 7z9‚PÃÛè/ÚûÔVú3Ùð½ Ñ5ÌA¼nw\@õa}û¯p$„Í2\*øŸÂ+qRÆ›ç·ÄA*Û³ÿ•¢s,KÞÁ{5m÷BEZT”ûf«gPÝ ·òà“Ô¼ø¸áSÏñ€Ú_¦ÃoZø7%'6sH¶ &”½2¸×Ì÷4øª¾ _Ï+¯O¸µ[â­Î?A§®Çœ°Å¿G|`¾µ2ßvÁꘅÀäšËI"†y‰þ}ý~sôÁÃù¼ƒ…@¶ ”@ \'7«åÒ’ÈHì‹»o^Ø’À­"Ä{öE C™J,ò9\™¦é~ÃR&<.b/5Ò°´6Wƒ¥øèù=OF&øó˜2ê?X‹ú×ÇaNëîpݾ5œvÆf3”¸ë Õ8ÕÅè¿îÐýÈÈ Ÿ<øäÃG…O|Üð)Â=ƒ<±¾(IœªÊAÊ+A«ˆrH+ø ¬)?ÅÐ &'Ud)N~óld)†I‘SOEfb·î¾9¹]  ïÇá&nbîZeø…3æ§æÑ”†ß¯…ŸæÓOá ¿W#“ỂõíŒüŽð!žZᤳ ï«pí†k ÁÂðãåJ 溿͌œ&QIŒÂ\&d™®Ï Ë‰Ó•9¶ãùlþã)õ:Ô)¸Ž†÷‚·1Ii®šw*FöEæÆ2!–—4±;2Ïö4"ZÆû1¸‰I¸˜»V9Ë!ÕÄ>Óô}úZÌFÉéªrvpƒ…ª8iJÃ’ ?Í öNV£ëßÄ’Á`›¯&•Ç¢b ³³ =3" WäèÿJM‡ê©ZP\ehÁÄ>Ò‚aÞe&1bb-ЪXG&QÐ ¬#»# ÖTÓjI‚Uü¬éA”x0²Ï4½^Ÿ¾¦ÓU˜¾Þbz£>]ÅͤŠ-¸ -eùÞ0þ ,³´ªµ°Š”I ú3ô”„øÐïϱEóÙ't—íć6µ§Üðö £ý¸üéȱ.~ ~%ZΛ$ øoÃäÃWGáºýÎÉ¿I\ÎP>…uu•“ÃÇü(¬6üìyEÒ šBb-!±‚H Ô Î,À £=Ñ‘¹¸fô Žå‡€úùØ¥ŒÈˆ‚šÕȾ¢1$¨¯ä¤—`c>a§Ë… Œ—&0²}èg`„çYcÏbb[NKÅ!¶Í132z‡Ó.°¦. âýa¼Ù¡.ÒõÞ†÷×¼Íó®ëóÖb…Ø·Q9ß…IßY` ¼4Ù¼‡éqœr®áÆZå8]—7ÜP•ÏN’ònž<¥OVaòLˆu/ ×]´Wäÿ½òª#D^à ”Éò÷ µË µË µ;iç¨Ë¤{îq­0À;[Œ9Lˆ™¦Ñ}4Fp*ÞOã±Y;èJ,òQêž¹ g\ˆ]¶ÃÂKõ'Ä.;pÏ<~ÅÂojôÈØ%@UØHæŽ å!•‰ãNí'%"ÔWD¿Ñ'µ©¡ruíÍt¢¶WÉt¾sH…p0TH6 p¹P¡Ƀ¶Þƃv°í4<¨á«V©P7ù8æÞQÃ%÷`îLêÜ^}.{ÇÄ\‡2´™}h³Ù‡&™ðû„Éò /’땼H©áE¦Y?ƒ ª—4¯@7â|¬ÜÁuûöð‰VrŸWA©^ ‡q€ðs•Y&Tøt•Páñ*C…§Ë-®‹U$µÙ*ŽÃóÑ‘Îìî¿’¡\Ã\§ŠÀq0Àeñ¿&ì§1 H¦<Å‚Ãl?­Z_ÃR嚥¥·Ñ¸Œ8“ÞÀ 1Ì·[Ìï¤9<B€C®¡&olMºÇzÖíú4º}ôY¡Û³è¬Û É=FK9NÚIÿèè"ªË-ö‘+!Ö«|<ˆ@?´ih…ÅŠ.ÿ"{¦‹i<Ó}îbð£ Í Í{†NÅö(c'¯Xð`éUnÍC±1÷ý³_´:‰øn&¾["^V«Ù+ð ½dØ _äÄ+KQ²­òKQSãÊK^ƒUxSïWhUäUÜ^"+âð¨‹ÕªÒKj¥P·¡W¸eeé¤ÃpÌç˜xTØCøÈi"¾ÑË6Šuàp¯¤Å¦0«ÙË ¶~Ðâen•Àu5®pëþŒ×™[š—¸…ƒ•ª¼ºGp«UâV›‰[I¤xÃ.|äYå}ì‹"Æ•âÞ¾&’P&S£‰šŠ7;Ô^º¦(a²Ÿ»`&¬ÏË{äF Ӽ a=€0ô›a/§^k×Ö] ®ÍÅ®- צ ‘“áÚ€°+Îm5k˜› 7Žz·ý§÷>z·Ór08Xy·üR<|ñþ×”à«ÆÁ»ƒøþ »’A…‹[Ï’4&î^P¹1xÅÂÎ é”%`ÆE/çùŸY!£b/< yaYš%ü9 ñëñW¾Mc8¸Dog_SæYÉS”Ö©±—£I}j–&ô6AË.~P×ÛYÖÛÙ4z{Zèíb@èíõÀ×Z¹½&iåÎ!Þe”§£Èøhè ü³—³[ çj(°0=1O“¶M+q¹5ö‰šØ67k¸mÆw2º —FÈ8X©Ê> ¹HB.‘‘È#Wjz ×0æPÎoüSvæMsƒ4©a ã›ÆZ]‚§)¸¶­ïéZíá¥zÒ,õ§»ÄRHKm”—JÊ‘²Ô0/µUbÒ!bÒǿЙTÏÈõi $ä6 ¹CB>NÈ)áíQFîÁ¡W=B Û~ î#®,㉗Ɖšµ=üê)°'ÛÃ1 í!LKˆj†>ž+·´†¸FËgØ>Dq>°Ã ªk¯F^+/û8Àr°Þ¦Ni .j†—Õc¸sº¨Ñò–5›‘†–‚Ó8OÓ$k¹…÷‡ñf‡º¢±É”`k#.kûG¿™œ“™dæLJÌ‘}qÇNÁO`Nq`Njœ]ÆvªÕE(BÃtÜ9  (‘B¶ÓÂ4vz÷N¡Õ5BB5’"ä[ä95´Ð¦’HQ²¿7šT„Ê¢+EèyRÐÚ"ÑÚ*ÑÊFšBpÜYc32^‡2Ê!rÊ N79P¸Z«ó§wdâÏëš™?ÍiøóU‰àÝ'ø“å“L4ß›äùˆ¸|ŸŒÓ‡LúÎÝDm>BÆÁÊD_— $äB ™²S$SÂÈ»|$7î>“”Œê#Éà`%™õ%B2e>!™JŸd¢ë-¢òz-ïÃjˆâ¨8“4ÑR™(V&úÖßmô möI&j7LT Úû؉ùhEx.1 q›iJ݃[xcÌs(Ó\þJ9ýéÖ';01ð±-‡PÑqý[ÿöŒîÙ±ðI“m9þ]!¼^ɬú$³Š|d>m8ͯуY0@±JÛ&qGáS5"89†º¼u˘œô° ö¤±Aõ»BÒ½’¤û|ÒÙÂŒ9š>ÍBŽã€g Ÿ@ ÝÀö—rÞ2‰³&(òšòQ$uŒ´â X`d„ÎzX+zÒhÅkO­¸(Å/s5"<¦³>Ég_¯!*nÕè>"äyå¼¥¬mµ6#„¶×Òg‘e›j‘ƒø¬æàŒÄAYÊŸ ^”88çK ¯0)eù¡ ^g6Þò‰ôq–XóʘØÍø(°ÃÁ*°;P,ôËæúåôK繘ÏÔ6ûi¡y8à™š2¦L°%§üª4ƒBÏ¿ˆmì~\aÝY}…+¼Âi…²vþuŽmj‰½j0· ‹.·V$Ø ckĶ+¬ZËû)&b,W- æÕ³º`œµ$¬³ÀûízvíÇ¢& ¦È/»œÁ§“f/Eêϲ·(ó¸‡(¿œœ.Ðí'µÅÁJmÏ>N…¯BX—(ÛÔ¢ZC0xè1¿ãKk“Œ/c²=Hgö;ãä½)³gÂÝá2×5@fd%ƒ~r*ƒ¤2WËŸŽ,3ê(ܰ^4êz1»’‰[ï-ç`î56. ašé9±KXxjñKé<2${Ö© !óG“ø#¯ògå Z´úÚü‚?±ÙL˃—.|Ü4.¯Oíö Ó9Œh[·O)7ƒ‡Ó€op£l_))f°Vø”†¥L"Ä“l€hSéj‰Õ†F–O5Éç{S Ÿ³¤ËGK£˜ÇŠÀ*Ö±Uôøø1¿lë8èO±Š!?ïƒëÓ¬˜½Hê¦OéVqÔOà8Xo+Ùhs­PŽp­lv>îH±Š#µlØoÒÁ´· ©ŽK—’VÑTKŒÇÁÊ*úvä${ïÆ%Ú§üÃXÒ<ç§é &w’È}ø&KI :žÆ w!žƒñ–%¼[~YЊnÍ‚vV0§1Ȫ èë¤àoÜJ z‘y½˜†×g^¯c^wI¼>*ñºai]ôŠE$Õ‡ „ÈufFÌënr÷þñuㄯ³–Nøp°:á+øè:Þ†$77¹!cæøqŸy´7]†?M¢¾'ã 'lÝÔ’óÇÁÊùmøL†Ÿ“àSà3ù|7Å ®äÒ–-H HÝudžœe;›MãK·‹ÙìweUÏ´<^ÎGÈ88! –>+ˆì¿ðÌ~{؃ûÇÉü‚ 1+æ—!¸ÞÅ£IàÕxÃÒª5K®ý@ž=^C„z­a,+rU9Ç1XJu¬IÿAöE‚U‰ËË~Ùë X¹,H²ÂÁJV]Û@VkXVaIV‡ƒ"ãh¸±†£ÿ”t°Ÿ9ÔÀöõ€V„Ü: k ´)ZÇÁ*Éûóm‚cG%Žõ%ukø´p6IÞA##7/D–i%Ä2X'–¤•ô ôö«¸är7ó¢; /Ž<"\t<( '“¼à¨›|tÊy0>’ºç‚Òy0©nVÎì3OÉgâ`å3]ˆ€{1(îëA±?q`5 Úó9 íuÄ='£åTÞ2/Ï…wô$,—®! ³C`þêÚTJòô©¸×ä׉l™Hùõ·ÞàÝ.Á¬LH¬”=ðî‡!ÈÈÃ%{ⱇñU÷¨-k€ºÖîþxôFÁ‹ôå,s<$*ÈÖq&öÞÍCÚ¤?D´Ä‰Fä…=دn4rCJò»ÚÑ`6‡}`4h~M–ÊÿöT~U O=ÏíäV2£Ã³ItxYõdð<íÙWõ7 @¿»¶Ñ"œFCv®zœ23ìnÞ`t7¿S©wxÎcrôaj£´Óè+ü‰_îòüù¹Ë³w‡Üåù‹r—ç»;l¢Ëó—;ˆ….Þ}ì¢!Ò_ÝÀW”íÔçYà’ú<ñ;ìó¤IÔçIOè /ä>ϾçeñE¹ñYïóànè!Þì"¾‚NÃ_Ìõyîó$±ÎÝœàÉLœŸós^üøó¢Ïs’Ÿ9Åtê.>/Èšå s<$xXæá¶ØTxpñ°™‡¼èÁ}zëvûã¬Ã¨!öœÜç¹f~;Pq¤›ù?Žêã†Å.nXìãfÅÞo ÑsÍ3·iô¼š¶Ñ³‰,3 ,Ô™=›Ô<øäÕ¯>nøüß=uõ¯OÍ¡bû¼2†½R•“ŠíÙõg^ä|“Ší­\lO·‚íñXlÇf>ïíq©ÈθeRûUÚ³½¨ãº¹ºëöÞwðÂ딽Ð÷óó¦äƒêº ɺ®¡T×ÝäÜø}gŠO›)6·>ÅÈCL1–j!|ÂsŸþŸm´É"×_ªÔ&èøá¢D3UjÓßdTÙ.yH%O@6^½Òãßû y‘i¾ÐÝ­ò~´’cˆHÜdTìdnc±Óˆ¨Ø™ýÀc€Œœ¡bg;+ÓpÛËÈ;!·ƒ‚ÛÅÖÜ n%nS¨ñþc?H5­âö…B.¨#äÂ:ÁmWg†·Kê’ÜÞU'¸í®Cnï}\ç¶Zǧõu·áv-#—1reà6ivJvU/pÔ Š5Âýþ÷›œäsJëˆ×8H¼6ãþÇ}„ÛȸÍnó~+)®KJ¹­NH¹ ¡²~ÜÄR>Äȇên#僌ÜÁÈ]uI)ŸÜƒÓðŽ©/oôÖ%%}L¢»á6õ¿Ä’>RG’Æ!­¤?…½äÉ]«ªê sö')g\'ºÌõï>È£FA½• êùd–ŒüÃ{é`1W*bA½ø;lÒ¦C7—K 5¡^TKwüÁû«—‹K’.ͤ^I<…ñФš)–Ñ‘HǪSѨ~Ò€ÌÐoâEî¶Rª c‹kC V;©¤|äï^ÂL‰ðð=i–øüwh‰¤%6êKÜc[í×üÈVMÈ*ç›îÉx™5 žkÉõšII¼«*á¥Íâ苳Œ£Œ×£ }ç¢yâ!Û¨dÞÁ%óÊÕxÿÈx­Òž•’o‰]ÊdO9Á ƒÒŸ`àA©!|:(uô!2Š ÌGXa¿5g파Ç'2Ÿ$‘¿ØH‡’¾ÑÉÉBì< U¥˜OVÞz™7;'nö 5nÛ_®[Âõȸ—Wáî’pK%\:9Ù4÷Ð+Œ[À¸ips7·BàæU| §Ý‚Ó…’™aÎèÈ:óŠnfœeâ`…üö=lfr‰„|‚k&õEM®¬àUòáûb® 63¶‡±=i°ïº'}©„Ü9D¡Æ>’bÂT)¡—Ú¸RÒÅ•’;»žovFfÈzݬcî4:Ö½(÷p’Þ±“ôA ©{MIúœém¾Ä>úr‘‡e®ó rsú r»Ê1"Ò™÷(A¨Ý§¦ÒÓ?Ý€˜Ñ]3’ôk”¤ó[ÔAøYÍx*–â;LIz‹HÒ?}Ì2IÿÒHÒ8Ioùš$ݾ[OÒ?À õ³ÕIº›y¶²SNÒÇMIú„)I?gJÒ+'铜ÆNñ«˜éUÌ~ÓïbNɯbzôW1g’¯bNñ«˜3)¯b&öËÂ[Ü/§èËûiÊuÞì#®‚ nÁ_Ìó8E'¡~{óßÄ3b~Î8/ÝöœHÑíÏÑ3ÏÑ6×s‚¨\ž°™‡<TÜÔ%¡ë!ˆ?FÄ™ç̾EMÕ<äœäˆw7Ù8brNF8Îq"b±€¸”!Ð[nò£–#fbB8xòT;ÁÄ£ÂÁ1\%”'¨#é.íYÑ|kL,xBlÆ`Aw\’6e'F&9¿fÊÉ`ÊU‚ÛF €d¢Š@é€9/†ÉÈè= JdŒ=¸qA€tªD¿C¥àw è¼V‹ŸhÃÄíj0õ¸Á™X&jg/éÁ ?!,23ܽ|²FIÀb…Pªâ‚ñz†m‹§Oﯤ\]µÁÕA„[«äEŸkpêúñÞ*t]¢º&™òFj1J*´aE‚fv•w}Óî¶v'¹ŒA¿”¨Î%Th‰½˜g™ŽJä'ú8W'êVÎyò¹¶{s1›½•|ŒÇú‡¢·c£ ‡åÅ;`V11} |9› lf.Á[ú/1E/Ô½šWB÷v,œn. µ{õ+‰d>G.ÎaΊPtJ÷v”ÍbÞŽ€ÒÛñaº´èÔØ«XÑ©ïÐå6ôvèE§ñTölLäE§&ÎdÞŽƒ´èÔqcÑ)Fµñ—ŠžŽ¯=])z:Î_)z:l³O‡}6Ðԇᇅp„,ÖÇ`ŸŒp˜#diÁ> FÈ2# bIN-=# à‘s ÀÓ@O‡­Ðäé8"ñtÄB?tÆT’êžW!ôéÁØÜR õIMÅÒ°ñb3›™ØÌÆ& ››ÿo(:Ee9/:¥›é¿¾½æJð¡ ) ªR3_Ë¥š¢ ž4cÁZÊš¥Ð;“¶‰°~ x¼!¡$>nÛòÀ•xÎÝ úëŒÅh–>ô-FÄ>J! Ó¨`|…€nö eÌF=Â÷dÓ„c2˜ôW&=ËôO®¬œ‰F’àƒ @í£1#@šé¿3Ǿ‡OÛÝ6=&Ј™þŽOÎä 4’„ð+¼G°oûnŽf=‚ÁyƒYïhZžÉÁ%f}øÖQÞ)̼'òÌô™™c³oià8óŽp3¿Áå©×N#!Œyƒ¦Äk Æý%mÅ—9¡j@µ,!„Ù^q"Ñ Ž1œ”æ€\]n¹0 s@Ž`ü/Xønç½—ñØçnÔ'»1¤F}òëŸ.X»ÔÂ×gŽà&'%ù=ZL5?©u›zÿâ+ø…ŽÍ]ï­†¹k¸NÐõó÷5òYñÛ\ûaÍM¾ °óûÁÖ.EpŒIˆ»z6õmÐ;|°ó›ÑÎ×K]ià7 àåøÊÈà5:x‚ƒ¡ïÿ¢^†àe ð×âuðF¼92x«¾Á!*Á‘vÉ×8x‚7(À‹ðCø#8¬¹ ü”>‚à‡ü‹ë4ðP€¿áÐÁm‹upçâpSFÚb×§.è8¨¡ÛZí£¼NCÐΡgçœàÙ¡—:ôxiïb×gÐa|éó”×ï; - zþ á £†?[+’‡ãI§ãIý·ç:ý@ÏO[ ¤ Œ}qêÐ-~ÚŸ`3ÕÄœÅ(oÀדüÙçâµµ “]¦$DykœžêP.$!®Ô’wåJ+£Ô`bÏå¤  ý¯œÙïõrhw­x#–L rh±Œâ(ZFqðô^"JÞD}â$U=ØhÝEšGK/=–Ò#Ÿ¦ ¦~±!Çi§§ @ËL  |rU±z<º9 é¹= å_† ™Ú~*80oBQ0)x/r¿ñ9BaAéK…Ä}BIþû¯óœvº<31Dc¦¢!®À1‘j]ìÍÝ ð¦b:B­ ®s¡×mÔšœ°óÀçÖŒ>7 »-‹‰T@bo®Tâ$hØ0ÆÜôßÀw] ÆÜ”˜Ê8pØ£våê„X¤ÆåÚÖäÊ]‡eÖ#,xß“Üù4ì Üû&2Ãì:3˜½oœp™M®Šd‡^„\òSÙùÔ9‘a¸¼­Šå=gÓ‰Ñ?r‰Oô|Ñ'úG¾äü#> éF‚ä ‘ à ’‡‘ Cb$H‹Ö"A†0dØ rÎÆcËý#qXðәɔ¢„þ®|S²,ˆ)YÃýÌÀ¡'åëþ‘ìs*>ÀææÍ×'•ŽÌÀ&›YØø°ÉƦ›bl–bS‚Ÿc1G‡z²FÙç$þ‘ÿH®Æ-Éaü#iJÿÈ WÃÃý#OœòØ1_ûOúGžoÝ?òÜÊèûGj>ð¨ü#‡_°…˜ËïÈ%GN®4Ù”8ÆCìåD¹*âfHZ¦ÕKQüÿÅϪ"n·¿Am}ÁM’ZòÌÝNÈ‘D4–)~ä¬G³$2„2o³ … ¥õˆÀWÒ¯Ç?p_IƯîæy³à+A—‰,o6I7Ç?à?pšOzð”0“]ð”¸Ë)43ÙqòÝÂäEèŸèt—{J N\ö1›<¢G`ž’ä¢ïæÉÊx7Ñ¡¨9uÄc¡äF—„èe:Ñ¡$¦É¦Ø_Å{“kjA3#…ʦyza¨éx÷Ñ{°°H.Sb™n?ãQÞ¥k&åP£Ofb]´æž°&‡üà´'‚‰õ*+cÁÄR–âóŠ•âóJ+ÅÛ¾È~s5g0®vw½G¥«0µ”¦dS%+Óõ™5oÊPç*›/_øÿG¦±FÀ[­Ñ7;ö^K5úž{ß¹F_† \sb=fijŽVHZñ÷ (‘ÔDa*¦Ýþ§3–è•J°BßùQ÷b$Iv8PÛûúÊ— –Ny°òi|å…㢠-jÁ´+˱ê¢{‘ÍÁÆjEKRáçþSžú^»a#= $ùF ëiÉD` ‚Ö âtÐ h»J¥´AEûʱjÚŠ ­ Ðæ“ºüäî©›wi—}F\šN>ðÖbuOÑ[ëx÷ñ{œ¬F}½ÔÁK-§xnUš#,x™,d²*óP¢ˆ^òŸ:WQ«2È <Œ¶­Jûì ÔC‹tRŸª4 &cr@¦}#fÚc‰†XZ¢^!c— ã¾_÷XÔ2Þ¾PS9‡©ìqZÿfÝs™Y÷î÷èİœƒ$ï^¤ç«Çõ-ã*Ò·LR‘`BÂÄ^1–ðÒiC+>ÄÚOÈ -dÀßÉŸé_g’ÿZؾÏ> µÀ„J³éßwbÝ|f}›læ¢ÙìQZõ?¯H¯úï¡æÉ¿îZ…—=Î"`&ÚÈê'ô {”5g0èÃI(WCÂI òÌ0-¤•g¸x…ò3Ž…½«8Sa@Ç) C«BLJã¨ÒJj°!u“‹í-žøKi܇e5èc,¤¤™ýdÛŠ=4¸™'$Dbü„>C¤Ïýp¯^'í±U<¨’Ý‹/°"%øÈú‡G+ÛðòyP#±´Pô”—¥Ø”aS^lJŸ¤>€K?ô„‹‘øŠS#‘å³…‰‘ÈžÄb$²}ª‰ RÀ—?fŒÄ‰ñ‘c$ŽyD@žOôÜà}ù>Ñ0Ï'ø ÐN.Ɖ!FbÆHŒ`ŒD±#1Âb$i1Å#±È#1{‰èð-}YX!{ ÄHPŠÒ¬Ö%¦ XSŒDö“‡C/\¢ûбÏEø›[É}R¥ø@6娬Ħ ›l°i¦›uØ1õ"º4‘(Mþ´ÄH9Âø¾ü©Œ‘xìˆÇøhÆ¿Á·L÷¸– >€É5u,KÚ2¾*>C6£é©tø3þ•Þ¡.Ó‹#9—Q ½ó÷÷ƒÏ€fÛ–ÁÈiÃ|[a*"û xr0ú z¸Oƒ¿&„ú44ÇAƒD}¯Fx5xÒ$x5.é<ó€ö’I_žÃw(¨ù*8®ÁañƒøP\ÁaÁ8Œé°}ð@„˜ ·q]ótÜ$!²×ÏtÁ |uÈ׊|ŽÞ 5¤$ŒO„<ðh!‹4ñg³ë|„ùn¦¸’Ü|a¦€‰º&ꨊwUpÔ»TšöÃahÚW7×£ˆ¼F§læþ4bîO+æþ¤æ¥Ô@Ø"^gBæO3fþ·Zþ7Aæ3ÕBb}ï‚î‚BÍÆÊªðÖ…mú[èû–FÛû¥|áµ ¬®a+8ÝÞ¿ ÇT²µ=œNï}æéµ¡ðµ U“kЬ«Â´*!í#K˜×ô÷<² >%y²ÐeÕHºÕHVNõ;AóO¾„Û;"x뻞±@²cŠâ»œ\—,žN µp Ðpè/#t˜H ÷læxðnõhÞ-¾]1(ë2?Ö‹èÆ˜î›åÀíïxÂGµÃœM»ÕìÛjEßVêøY~~­¤ðmq\ß;‘lKM¥Ú€eÙ¯Õ$¡–Ly$ËÏïðÀ²lFËR²{¶Šæ8 Ÿ’ïï;Jÿoß›÷¾Aú¹P"Œ ºLkUßvc‚Z1 (uüu„ô{iÎShÂH‚¯ £0'ü$˜M( |zh„µ²ê$Þë4x14Ä{«œóX ’›ÃZY8Ð+=þá@|®&Hnjeá@¥¹Fâ௼퉄^ÍP‹'$¹B‚Ч¼!A©£w?HYŸŽ±CcL¡1|×’D E]G#7¢ˆ¥ü$zJ[™§tñÉÃzJ9hß[‘<¥»r·ÄrEÄB0Š æé¾ \0 ,'Ò_PxF Fé?û`Ø`>¹“‡=‚QXqDcpOh0J? ÒøTøP”篭GúKü•"ý ÈÑ®'fP‘PÿYp¾Pâº`å#(c]»"ýt+ȱœ‡ÐR€‚"9‘vÿÕ£UtØöW•ý^–/Úï娅V`³›J¼K£ORûýß0’j¿ÓŠ%aí÷šf¿—*í÷ Bzû}®n¿ktû}·ßÇqûýÒØÈöûí¢ý^f°ßo7Øïwì÷ï‰ö{9Ú¸q b‰p‡ït€ý^‚wøqÁ~/awøô´ßá÷ð…h¿—/í÷Š…¢ý¾ $T.û½í÷ª…&û½Db¿Wc?e8ô¡šCöÙ€°¹5 ÕšñlÖaÓŠM6ØtcÓ‹Í>lXÇ aÝSƒºý¾Þñi±ß×¼Ÿ¨¶ßç~šìw­šÃÞ}Ä~¿*õßPo‘Úï¼Þ"µßµz‹S$JØï­h¿!¥p uKâ{`M% ÀŠ?ºbÏš?·L—È`Â;:‡òµk³ ÿ1 4¯ý9èá%$YõHZÚkvzèà„‘\Nc8BÏ óáò"n"¤©&dÓK¡ÊjíÇtH°ÙëÐfWA¾p ]˜M™wŠYzQëy§#åÕ5H'ÚzÎp g!d7¾É™¾»S€4©^ðâÎVxq'·²àÅ©Î;(UÍáÅøþNÔͰ}Àcxk!Wë°£½s+œÔ¦û0Á»]Z4ô¶#Å>Œ mª+ÆspÅŽzÏ¿Ì÷¿mG Í}ž»ý=fÑ+7dÕ!½Ñ†ïƒCÚ12¶_†tÒzý&>ÅïëZî:Á¾be=í{¶MS3ú˜öÍ6,Äft憅Ex{Ý‚&e‹`RŠÐß~]+¢†ÎÖ©›7O‡3:3}=ƒ–˜Ñ"ôÑýêHSQÑSܳe¤(\qO ~ßêDéRM x½ôíLBýAÎÔ¨ÙŸH]¨ÔìEÐÓ¯á¦-Òñè­³‡z¥ñÕ»E¸s‹€"àèÒ‹2êÁ{p™wµ^¸ÌÊcqö>äö’û¼£X܇]ß¶gøö>|Á)¾.õŽâ#Ò{=Û… •÷zâìGö©UB‚­0XÓ;õÉ9¢$hþìœ Ñü3[2b}È™=³@>Â"a„æwÜ©F8„#Gø®d„#ÂCßo7ùr6Â>aŸb„m{=ÊW|ÑÒx#n ¾K ŒB:¾ 2¾)’ñ=xï›æ3¶ð8€-dósð(>â—¼æ+sÑ<6%‰E(Né­=ú”*…X}‹šè¸á váˆï¯cD§ï¯ãD‡÷×ev¼ñ áJ¬æ°òù¯Fh.èOGè’Œ0Î[Ù] ²C€ÁQ4“nedϲ+ÉGñ¿¤´æG'Ù¤Xo7°H>©åýú¤Z²·!ÙáÍn7R¼çv0áu^l¾ÿ‡Wª¡dÞ'P^©–9qÒ­8°õHíõ j÷÷é ©ºB¨ '’‰Úª"­™kî` ’Â+"è"TRU *”Aå ž”¹g U”Aå ïýY ©½¢j¡rPPÊû2•$€ˆ w  !åWhZˆéAÈ^“2sÞc’ú+"äùÝêè Õ<óß nÑA!:(s9•”`A@CJ°(@Ë´B…äÌgÇ-FÐB-T€&  q‚xvÍWƒNE6_…ÄÌ·/g 6 6…myUM@3€ú4K…—\f^¸”zÔ«½XÍ@ (5~ŒlT‚¥$¼à2ó–)y½¥ÙÞ«C 0Hß{ÈeÊ„ñ馨ƒK”Ü"]•hÅþÙñßAÅ~ÎhbFŸÙ¡ó…ªÆ¶æ'àr4-¶Â|¡Ò6«~½¯9Ã7î&àH'mN’?®èŒµwÉopÙzè_OàKR“n²ñÐáQ:̬½F]»ãùÛU¥½›$ô]ê"pܽ$ÅHdÙt)J#ª½m±¡f~Øqd!|Àf›aŒ18Ìb Ö‹ü"q²Í¨†oxM¢†'¨õïÞ#d|Ûôž@ñf!( Zn éôïïêú÷Ðlfý;ëß \ÿþááPý"b !èe¥KìxJ‘ŽàÌÏ-y%ÉVŒ‡ùŸígügù=ÐYLj+†çظŠA-ìÌÞõà—Iؤ`3›4lÒ±ÉÀf6>l²±)À¦›EØ,Ŧ›rlVbS…M 6 Ø4aÓ‚Í:lZ‹FXµ‘>bRòI'¡*|ëßÈWu8¡«Oاí©p—ÅÀϺ³ðgýßG¹S¬Nò³½æø£]«·'¨Ë’üámÂÒ{ë‘ÜÒÄ2}W¯Gü`¬Gü@c™x,ÓwÞLŒX䛇D[¬ì­Lj‹­©©öö“®Ñ­±=klo–'Ö†l7Ú-=Xý¶›>Útx÷-Ñs†íoúO¢ì{“z^–€=A±éµ>M$ŠE÷0öp›!lNa3‚m)4Nl<ؤ`“†M:63–â:²b¼º ýg{qH„¨¥o‘ýîþÞU`]îÙLÅè¬J5§š†ÑY•5UŒÎªdÑYiZtÖT¼¹JcÑYD|BÇq^ììíÀ´õñDd Ò>ïúVÛ§u¾sÆÂxÁ¦ ËÏYFÖU}…­6;hª0ƒ¦¿Nâv%K¬…)ô¦ÐòÖhzL­Ož‘ìä­w§e€ I'OÅ'}…HØj £ÈÛ2¢}—­»ŒÙPy‚ µ©ŸÌ Ä´yl0ãÂ2+ÇOE =Ӯœ4«?°WL%„Ï#1B8ø|6¶"ŽlRº?²-ŽâäHq’wÇbmëÞRÚœåç, /¼ŽpX…U^üWæ é¼P–¢•ª#ÎØ%‘¹D"w_‹™o²s|ò ZóCê‰6ƒ‹„ß³SSx†70îÙx8ÐèØv½é±oÀ¢>HJGp7¥†ã~Ê©uÞ?^ ]G9­Ú;DXpS* *ž/¢|S‹©ÅçÆ½èñÕ$²§¯©Å'©ãLë†~1­“0,ëŸÐ<•Ó¼üWñ6î&Ž­ön(ÖE$ÑŠáËvl:°é,F¤OÒÃ5w;™×¨ÏŸGÿ™æX3˜øÍiº%‚E±úø‰qx½(”'Õ[ÛQ”áôw­>n׿ßj3lî‹+C—Zò¾Çß(:1¨ÓÀ°_šÑ_äMÙ‚œ©t›,"&µ?¥“G[y}„Fè«¡«HW»X«…d¿’ýRèÍà‚Æèx€ý’ÿßJ¢#d†àF¶#gK?[¶¼/°?|µüocqK±Ø\Êùƒ> o®bÕ»×qýAë²½íiçæqÈý®À²ýøbÆ üÿJºÔ¬ë3(eRêS{5ju‡R‹|„!-òàF|3?¶ ·ï™®óŸ9óú´È4 #5†u‘HTê½Y„Þ›Àñ€¸C„"µÉÀ1ý„c¦í¨a3˜0¸ì‹à®“jaЗg›ÖH„A ƒ˜ÁUõÉ[)oW{gæSàµX½V+ÀžÏáµZ^«ˆ×jMìZíœv­Æ~Σ>Ð19n ¸á œôk\¹ º–Ì?ø·f‹‰½r^ÿ?.!v5_¿ÉíÔîzfý¤ ' 8÷!ò1øõfƒ `0µtùÄÜáîpܳZáL¡Õ r »4ÚÅdx6 Y…¬–KJ›KP›Jl%j/¥k&V &zœã[wò¼¾Àºg=6¤BZW‘/`Êu(—r¨E­«Füüµ®ªñó·®ê`|ÓvÜ;8­A Œ@ÿ?b¿uüüùZœÂ}gd²DGÿQ}ò¸«_‘_¼hèVQC9 ù% å*4”½¢¡\Å åtÍPf¿O× åFÆ/iœ_Fˆ¼ŒöH‰™L×˜åº„Š ”E¸~0Æ:øíŸÛT›,­Ñ¸ÉÚØ&»œü$øaÂ|"¢²Å÷Ùìó>»ñ1É>kçûltàÒM[ð3ëlÊ.KsÍ]žTÒev©ÉÏ‹ÈJõ<£î6ís·ëeÝvò‘ÎSˆM#ŽãýÃq1eñ¸èfÇÅ¥”ˆÓþ¡ÞÁå7˜w°çQÉîÑ%pßu1¶à_~©ZÏzwuH—[‘tÙ‹]Æ ºü§O®#Ö„é´)¤ÓRY§}9Ìcñ45P©~K}1ƒskݽ\%â.ž˜ÁTêA¯0׉è?îÁÛà˜@|Iœm0Ž®opp­ah±âÐRBNœW$CÛÇI˜Fv ÆiK ¨O%4x´ÉÀC±áO•’  pº—h¥(%¡”¨ÆSa=U&aÏ5ô«Óµøe->¢É‰ì\©ÑÎÖC~®brb— „ƒ»ž0h·±‚P&c>4¤fÉ@ÈRßó°„ž§Dþyãµ8[0»EÍ?•!öAº¬Ó]É~€tùþÓfýÅÐ뺥ßóÌÑwÏ¥‡I¯O?­hqˆþ¶JÖ¥-× ¿}c.!jv˜nCÕÂtY·q¹l¤ó"jª¼?O>bâÎ\â=ù³ö¨AS2ÊÅÍ<ÝP/áiW.3›ŽdK<-_X7›<¹´ó„¯1‡½cæ†p©çóˆÂ Wà­îDÛÚîÉ‚}óÝúäì«Å_Öb‡þsrì}¤B­mNsÒîš¾fÔív':†‰µXEh<í¡ou§“FäRƒ¦Ö}D0Óbo«w̧¸`Ï.ÿ•Ö‘§•é vÿꮄ9¬Žÿô½ð­ 9#;ŒÈ rÀŒ|³%ä1á‘ÇpäÚíä1ò€œ0xÔ¯¯w|;ªð.5ü)Þ9ø=fß9¾o \xüq¿n›œ€Ÿ^l:†b—7Իﻚù “Ÿ÷w]ãß• wG.¯Ûêm£Â³Ü(mþFüQþˆ|þµ–æï ?—6ÿ.¾KÀ?'ÇoŠîúw)×ß¶PŠ¿.ªøuJ|§ƒ%üÑáñGkó7âð]rüÍ–ðG…Ç×ø¯îe%ÿyäø´„Ÿ?I›¿?IÀO’ã´„ïïÖæ¿Õ€ïðSäøKø‰áñµùñü49þ–ð'…ÇŸ¤Í‹’€Ÿ!Çﳂ?!<þmþFü þT9þEQůëPâ{åø_µ„?1<þDmþFü‰âù#ÇŸo ?%<~Š6ÿÍü†yTñ]jüYrüÕ–ð­ÊŸºMJù3SŽßd ßêþsmRî¿ÙŠóǾeù¿Q)ÿ}rüM–ð-Ÿÿ•ço¶ÿKøVïºv¥â'ÇßUú»Ú•ô/ñƒÄ€}»6k¡ÉðE2€’#@É|4÷¾dM²0šE MfÈ1Kt°zƽ¤<‡Íí+È“Ã#OæÈ¾h@ž,  s޼íŸ)–ÐLJG¯­¿}¼€žÅÑ×.ÒÖ|çÚá"ýs¡þ½î*»­ÞýÅk¬˜(cÂ3…¶Eoûƒb‹ÒA.Hö‘ã«–ècÕ>jSÚ'%òýùuKøVåCY›R>”ÉñçEè÷Jü 9þÂèÎ_¿RŽ¿Äþáñ/Ðæÿ;þ~¥ÿG–ð­úÊ~§ôTÉñý–ð­ê§Cÿ£ÔO«åø¿ˆª|*û¥|ªQè'–ð­êC”úA¹¿#ªò§lƒRþÔÉñwX·ª ýV©4Èñ÷ZÂw†Ç×\¢eF|Ñ%Ú(Ç?Uü¡ß(ñ›äøïDwþjüf9þ±è®ÿ+׽ľUÿT™_ôOµôÓÔOë±s¬à;Âã;´ù·ð ¿Ö½Á –Õ;FYµzîU´JϽ ÍNÁÛpGð(Ð=1ªø§^â׺½Åâ¼ËëD·RŽ;˜Àâ‹©ÖWïž6ÇŠ‚^ÁŒá˜N#fŒÀcíBϧ‘x¯¥ [¾ÿx^zÀ =Šçmz»žWèWÑ&ò3Ï)‰Üa6í2,MѪþœR„vŠËK61•WX·*?[×+åg·\~Í*{ÍX¯`¯žOV~µý:œüêýÄå×L9þ'.¿:žý÷˯ìg•[«O tÜà ÿibFu¾½¿RÚgûö¡%|Ox|ÇÏ3â{ü9~itç¿N9ÿCrüò¨ ·¼uJávXaŸFwþÏ(çDŽŸ%|«÷gyF|ñþ, Ç8ªü×ûK%ÿ Ëñ[,á[µó~©´OÉñUú÷®UÒDŽße ߪß6ψ/úmÏ)ìSKøcÃãÕæßbÀ+ÆKñߎ*~ž?NŽ<ªò§÷i¥üqÉñ?°„oÕ?’gÄý#irü„¹Vð“Ããk7½O)o,fÈñS-áLJÇ׿oÄï/åøÞ¨â÷þB‰È¿s'ǿؾÕûÓ<#>¿? ®²Qeovq¨~ﳄoÕ?ÑÛ¬ðOÀ НÝßäZ·ÌÿÍJþÏ–¯±%|«þéÞ'•þé<9~©%|ËòÿI¥ü/ãÿ8ªôïý¹’þ…rü,á[ßÈ3â‹ñ‹äøOYŸŠ6ÿŸð§ü»ñóÔøKåø›¢JÿÞ&%ýKäøý–ð­ÆoäñÅøR9~оeýï ¥þW&Ç?c ß²þû„Rÿ-—ãΊæùÓ»F¿S!ÇÿŒ%|Ëó_£œÿJ9þ¥–ð-Ÿÿ+ÏÿJ9þ–ð­ž¿y+ÎßZw•?˾Uÿ^o£Ò¿W-ÇÏ·„oõ~6ψ/ÞÏÖÈñ¿Uþë}LÉ rü»,á[Õ¿óSêßurüZKø–õŸG•úO£ÿÉèîÿG•ôoñƒïØ0~«¹Ø¿õ›¬Hñ[I‘â·4i¸õ¹4¼­Þ½=ËŠËÓHs»ÜdòÔ÷özÇ>K$·z%x Az%ˆùŒ~@ÜÊúäƒYU—DŸ­öf`îlͽýí®Î;soë0÷6C̽­c¹·3µÜ[öû™zî-tçÅÞhNÝì%ñ¶à[hN“¶°9|asü=ÙFjkÕF³ v‰+pìáD[½Ûv-TÚº"Ðm‰0ðf2ˆö/Ø`^qä+½þO3N‰>7îÅ ïÔИ6ú­¿ŸÖ0¢Oc #è >­ó®îú:Äpy7AÇ´†QÙâx[HRV\à¦ÅPx¨ªTG  ùbKJòÅJpµ‚ ôe*§c¿ºù_ÉûíC‰¶µë… çÒׇÕ&û®#ßis+êÝ_kew¸ÂïÍ(¹ü!¹QBýÿîY– ¬çõÖ‡ Îkíßà4BÐrþ^kMÿxðG¦÷Ù» ž¿ªõSÇsç×Ã%qäGÚê´fˆ«#J³ é«ÛÎNï²ïÄÚó]¼êWû…´Û,Ò홺D›.iÍ&ú©guç…”p@n{×ôþi;î¤õôY}¬F| ïâjü!l·<8§%s#þ»ÿbüŠ—ê½"aè«”hå)Lï÷ï¶ï7Ö®„>œ¡DÔ½?§å¹pŸPˆ‰4Œ%òŸP 0»®gã™¶ãÞ1ÁÛÎkõ½ØPh¡r”Z´ íþªÞkæø"–Çk ¯ÞÇh[ÛnØ.z+š|õ‘Ž(YTVg[¶²¾²©F\íwl¥ £q¥ï\ÿ@6a<2™½«·_HÙ“tì?†i¶=hbš•ÓT†0#¸É]ÉÙe¥Æ.UÈ.Õœ]ª8»TsvYv™×¤³Kü`œ_F–Do_ª‘_ÁRÂ/µl”SªN‰‹ÜéW±H§E¾Io”“ó µ¬Þ½À’˜^ÌijÞ;5R5/ø7º†î¬ëL ß²$ã¬êø¥5rŸhUÿÕYž@¡ÌB”†èK &Å€/ËÒ<ÇÎA®Éò±\–ÿäƒ,«ÉòCjYCeùÙŽáÛòâLÛ²†mKzM^'Ù–q[ÖñmY£mËÜ–|[6ðmÙÈ·eMT¶e{£(Å=’-Ù¨mÉFÜ’Î`Ùy¨RËAweÃ''¿_û©js¦=+Å=Jƒ¥Ük,1èèð ªÝ6/þ©ÔÚ¯g#qy¹…Ž­†Ï³Ÿ?=8šˆ /ù†yŶUŽ`-å©h¥³ÚÄj06ÖWœ—q Ð1ŸÂØ(ŸÆ’± Ú¢´>™ÕªõÉ0®OK4ÖGóÆl]ý1Ö'#d}ÎéúÌ ë“ñ ¬OÚjËë3#d}¾Œæú<þÕúÌ„õ!†…u¿`i}Fù°\uP& GqQ˜fÅ@’¬Tý¾• ÃëAva=[ø ±Ø@ 6£láR°™ Ê]!]Ô&Õ/"ýÒâÁc‚‡týXû+ b²¶¾./uý+v”Ô'¯ôe8í;ësš)Ðø Çß[?‹d{êÛ°Ìo”šÊüºVc™_ã µw.ŠeÿÞØfììÀ5süÿœ¾×\{›p VéL­ƒsþ .Ófåú)Ìù,-$´¼>ùõÖ„H®Mô}«Ê°µ´€ºÁ‘¨HòXŒèÛbét¶éóö*ù–KG4„d–ý£¥1X6Xl62[—ÆKôÍaõÙÀMh£S–æ J_/ã`j‰«>Õ´ÝvçûØS–ÙÎXÆçï—Z÷ Š ï×>ø5»«Øµq±F£ƒ“ìÔ6¦÷ÃîÝ–v¼ÓbI™÷þ@±îQRlplàúæx]!siaÒ%δNb¿ÞõOÍ~e ö'³G¹˜ðÍB€ÊÎ#•ÊËnƒbükÏ,”ßÑüzDaà"€+Š9îâr¼¸Ò Ç]aO²¸l<ɶÀIVF~þ³·GÓkXM^É'4f4‘êì ¤î½[ ˆ/ìAˆô€>…¢«ÏsÂ5ýÈ5ä•ÒÐoº[à˜k4S!×@cÿNFÛƒÓwÂ[›:rÝ-Ñ ‚¯ƒì:bQ~†ñT%pëfÝ ÖMrmòî¿uô¸ÿú²§u’Ã÷8²3üegy=ªô­ÈzuðïÚ6ø·çÅøž$ìrèzׇɚ$?A焜U!jÍÖI¨I_-…C&{Õ¼îqgŽ¿3Çó¹u¥agŽ»3“BtÌóoŽg YÜW¬4°Z —¤x?‘œB'¿ç.ä¯zÇyKL>q*˜“OäLþò'ò}É:Mò²} ptðs˜>ý¹Nߢ°–ŽÌWÿK.©p¾Öº{ âzˆ0ñ:kwravúxN„M?4a|X"8³ÍDøç¡AÙH¨þÈü¡ò¸ê•̺¥ù§ÌAë°lþ)Úüï2Ì?%ìü]¡óãcÌ_6¢³“ùߥN‰0Ìø±æXš¿3œ˩ͿÂ0§v8½áNB*Z4÷ò·*L¢uýÄÜËmô³ÉõjKmÜ<Û •íhÁup þMýXÐy,ëûÿìǾO÷c% &7(üË€ Î,ú üËßEÿ2 ƒz²ÚñØ‹ªyüT&ø>ƒöÖÚ[îu‘ΈøH¦œ3Ót§4fF~ZÏÎ6ŸÖ¨—dù~-ýãÛî|ئÙQq•¼ÿ}Ë®’YÙæcl`Ô–iÅ÷UËäËfž¬ÔwÓÒbÚ`yßq¹Ü‘–K q –KCÜ‚óØ˜ŠøÁ;€þÉK£}‡zŒ‹3¾#аg¾'‡]"ÀÆ!lea«°»ë@Ø#º"Áj·åÿKÛÓ€GU$9“Ì$!fH¢ykÔpÎ"܆“sA 0À& áG£†Ý¸¢¹p—(žÙ/A37/|•»ÍíÁëáwQãwY!òr.§ ,~Ä€Qç™ Ñe1HÄëªzý¦ß¼žÉC¿vòæMuwýuUuu×c·|·\]-t›¦ïsÃv>\×ú†ËÓ«äÛJçlᮓiÆÿÇZ%ŸñãB·)”ÔÇn7>$OK¸"ô³æ$Í>Ń{†õ¯s—¥ÚjÖàÕÆ‘ÄŽS{Lxé{ ‹@{H§¨ßþ­«¶¬‹Lúwë»qÔ¿}?¦½-R6¤ëÀìøEª6v:"&¼&üÏ¡˜~”aúÒ‘ #ñŃr?Š‘¾Ô£ùPÑ|cXÉ\¡UûMÖöÊÊc$ì%?¨ò„½D:ó§È€O{v&2&8KÃQé!ù<˵ီ I{ q…‰CDeˆ3ÿ@Þ÷ˆ¨ü¦ÆB~ç.ÃCRý2ÀõËàe\ÿVDc—!¸ò/\ù‹%v±¶O>u…t›Z.ÐÍå‘]ÿè&ö||oþ÷JË c0 tÏ›qè«*£Q¨µìúôgv5œ²7 ÚÓŸÙÝpÚ¾©¥öªG¦?óFÇvßÁÝÌpÕ4óê\'Ïï8¿‰«~®¾W¾íÚ(Üãë?ŽžY#o”¬Ó6°/ï—X½kçÄ=ÒÀ²ú02î/à˜Î,£û¯Ó,£ob³wâpìÈû¯¸'b©´yÉ2J„¤ÞHˈJP³IãW°ãûÈz)^Ti^Í(¿Á(JójF¾û="ðc'3bw¨¯àÚ«(þ‹ýƒ¦J OŒvð€ý  :ÿÐãW`Š~¾øûoöU!±GŒ,çT딊ËÈm«*äܶCS-—•Ó¾¼+ §e™8-I=2ÈfœÅY-CgµÑÄjÙœÕFsVËæ¬–V[û€%û;[ç·l¯l}Ìà\7Zà:ãý]qÑÀë7ÖÈhR%ͱ²IMéé}“zŒ±_¾I­e/ÙèÎAZѦP*)ųû„œ†ÁmTô«BV#x;²ý˜‚³è¢ž¿™UbÿÌWëí»Øðfê¾ÕW<†“*pÝ0ÇJàÔeqeêù… üü±ëo-ugõ¨áò(÷Ÿà d†óÿ‡9ŽÎÛ-ñjr¬\=«j~¹4«Ê׉2É‹oŽ÷†å“Ü?XÆë«*4 ïì:pö–óèÖ‘‹mOåi” çë’úªh(iT”I¸[oŽ×ׯñ|ý§¯_T=®©ê⨹•L¤JÅM’oeö° •õòUÆ®cï”Wšöi^~ 4QìÓTz´óqtæ.²¬„*L{W½G%4{Q4%Ôc0%N¢»]2,…’c‡›õèÌÛ £DgÖS™íТ3GÞÌþc€}_š@¿Ž‡µa÷åhf, ×îÎõjñ :Í I®Ñ ÑŒÆÄ6ÙŽzØQK¤)œð6æÑ‰Œg¹åÞ(NËšhNK®.„¹$„Iê &„-ÛQþ¢$5›U/E;,/•õæAÁ#ÁË-<†í¨üýQ~g¬p\:ü¼4·÷Âa7êŸhžÛéžDæg:§ö¤ËHmÏÝÃQ{’NíIÜjoˈ­ûñ§øýó£‰w£G«©gO§Á™tY´Æ©n@›ñn‹ë°µÓ!{J.!ìÖhÒÔÎNÐÔ0nœjêõñÓÔãJ,kêz“¦~à¿SãþÝ¢ÍRŠ6ANÆ`ŽœžÞd ç}–èiõÞð³ó¤÷:ø]Y÷ãï02t*! LУ CÃÛ˜ŽØV€ƒe弈HÄd-á`Ò•'‰yý‰b^y<1Y7õ (QÈ<QÈ“ãˆøjÙp1¯B]¡’BIƘÖWŸÌã’øƒú ý4kÉ΀óÉAú¹0ü 1®ßpóUq‹4„;Ù€=&„î¿h¤íE:Ú½„öRŽv/G{)G{Q<â?K-ÅJuÜ—Jã?Eÿ^iüÇïaô+@‚üCLO=”§°ãZ4ìh”¸µ qM—YâÎ͉I™ qËL `Ü_Æé_¦Ó¿‚è_Éé_Áé_Éé_ú—[¢¥NÿJ)ýË8ý+¢Ë_Óe•¿GfG ¿J¿•ÃÉßJŽÿ*ÿÕ„ÿŽÿjŽÿŽÿª8àßVf ÿ5:þk¤ø¯âø¯¾¼ñ×ÌYÑÖ`ÛrцNÃøëêamè±&=¹í_‹äÉmÎÊc8M×EwšÂ‡n/аsj…Ú!5^›iKû ¡¿‚-m|·´ë5†ðj[Úø7li¯EÞIÔ`ï-íý ‡[+×êü²–ßÕ´?TË9¥^ÜŠ{|93j`'ž_œázÌR@ÍiQö›)½]Ž_>>Ŷ¬°ÛÁþ×èä#ì7"Á¾:J7øq:mYòéôá‚ᜤFNâ>ßÐ=bø³l™Ð—z¨2 )†Ãb8ô<ßA–RìÛÉïiÑD0Qÿñ ß§ö±§F$‡®Ÿ!4ü6÷U"øæREß,Œš*ÚK©¢Éê¯Ø„ þÊ–ìt«—z ¥ì"÷»zM~Wàyð»zÀïê½ ²—¦[ö»zL~׿‹c„Ì==š4÷K®Plút¡ŸŠë¶Ë·_¶K¿‰”»7)aÜ8%$åÓñ#å‡Ó,“2d"å866ŠOʼnœåÓ¢‘óWÎ_âÜ×[TÎ1‚_úåq=òËã¤H8aBÂØà%d¥K“¶ádç]rU£íoøO1(F|'ú%ÏYâÑ”XÛ-úÑÆ¦J6RŸpµ¬†Cì×Óí ø ?ÄÞL«u ·F›¹5Úâå/€  TãmNZDZ),èä‹\«„·ø¢tèço9JÆrº>æ{ ßεÒOƒ!ƒ)ÌBÄÃØ¶îâÈå%,­úò×Ê—¿2Xþ’hä˜5koîØÐ†HÎÛà ZÍE›'ƒ®H3ÑP¸«A‹7Êolýð6A·pà|ÙûiÙ³xÒü|É- ~NGFã±;9BU.2 ŸîÇm6l¼Åؤºä#ÿÓó£ä—‚L¼Ådb°£RJìº „T³F”C”¤”ø Ú,èÖ#2‡7rs¸[Ìu‹™|§Ãú #c§¾ŽäêfužAÝŒ gi¡ûŸ§s%÷_Þ¥ƒwyñVC—ŸˆÌÍB ` ‰0ˆÈÿÙÂýÏÍ:¡ÛÉUèàßÎ%¾ƒûŸ›½º¬wÿV¤ÿ©É¨ÑÿìеCênæ^E{x’qÿÞ"]¿üœŸŠ5^C5  ü6ƒv¤ö´åbl(O#½lIã§ÅºÌ kü3S ?o°w6Ø;½:~) H õÝõ6JbJc;ºôw “Ò…jÝ>ÊbOéIøß=S¨WÏêæ™B§SZ`M8X'UŠ©x"e U¸sØ?7û7‰ýÓ3…¶a¦P™»04ÿ ÌÚ굉ÔKåÔkÆIÃ:GÓû.£Þ§Ló‘„ÅÙA]89š ”bˆ_€ëPº†ÕK£bß¡;Š+‰£?6ô;J_Õ¸aðŽè7èâæßºGs 8…>a"ÎÃl"Ì&î"…Ñ’ˆÍcÁ¶qš@w©Ã#?½þjFaS¦ö\A¯ÐäÚïá³÷rÀlÙG2à©v~¥:ÖoB•#Y¬Dñ*ž3ÐûÜÍ™Œ"æàÝð§IËl¤»ÝS2™áó#2|6ÓEêðÈO/èwÃÃ3¸~³~7¼öûÍá»á°ÃMÐàÒô6M¹f¹¹]ê° ÷k©¯@—Å•a!pŠÒê:è%ë–ps—ëk'#+^©Š¸¡ à;oô µ²JpFNœë†ímK r¡güô‚N-xÔ‚WˆZÚïáF-ÌÆ¹”SkªQke*šå8 ‡á^øÐ¯ÙˆÕü%ß~«ÎJ5ä1S3)&¯;ƒ¬_-™‘T{œÅUª(W^û“€˜Ñ \Ó\—puŽBlÑ –%èØ÷®²¡šËÖÎxö/WWýUÄuú«Š£øÚ”üCtAoR±½gµß c×úõ9>›Øïÿ€ójKý[Õ»»n”^ªÒ—zjv÷®±ÅVð=Òâ æ½Qº‚õÝpM2t$˜¼)¯Ï†ŸÃÆ‹ýÜ×N?ÑâÓø²vò„NÙz÷/N[_¸áê§ó˜¥¤ÝO[á®ñ׺kýõî5þjwý{êWØlo´Xý/à´Ý“–bùuÓOô1³ ÉZfHÖ“èr÷ÂöSnÁŸ¡w>sBA$¨„”Þxz1ûâ{…[z½¨"rEÚüc>C›Œýôun!°‰Ø5"Xÿb|ÛË´©8èž3:к{ = ©p˜ ¼ø;Tú…ÐÏ ‹q}&U¥tƒb+pS¶# ëÔçÌhZdo@é ³óB©¨)g ×mIÀßP°¡=æ^†Ô²ÈfÒƒ-ÖEVz± aÛí¶g±Äv[;Tئ`›†-Þ;¬dàç,lGc›m¶nlÇc›‹ídló°„m¶…ØaëÁÖ‹m)¶eØV`[‰m¶ÕØÖb»Ûzl×bÛˆm¶5Ø6cÛ‚m+¶°mÃv ¶íØnŶ Û4_lb{ÛnlO`Ûƒm/¶!l°=‹-Ö¢W°"¼‚uÙ¬Ž®`r+…OŸ±j·‚µ³,­b‹µœ¬©¬`ecë +XåWY†-V¼U°î¬‚Õ_¬Áª`%Të‘*XTÁÚœ VÈT°N¥‚Õ"¬Ù¨`åBë'*XEPÁZ~ ÖîS°¼]o;¿ª9¥Þî6ñöòOu­sküÙ#‘—WúÌ $0ms#a:%0{%0ï˜kd0«L0_QÃ0ïbTÉêM³ üM «‘ôÆŒšg ÑP ZêÝ>6”3ó%Ú©yn¤v§†µÓ ²_òqùo2&ï… —Db#¬]¸b©ê&vë|>±³’QœÿœwÙ(öšFQ"Œ‚îl Ž_fù<€ÜUb³µ˜`˜`žÿÄ„¬AÉ0̇J$Ã,› òy䊈U,š*¾¹OPÅÎ-?QãÍ! oîbDVOx%¼¹r^$o*ŸëÃ×°î+kÿëI(½P—ES­¥­ú4¤[«Nȼ¤„vlBê|ã/C×À(o!ü°¡GçZíÇaᙘ¸³äÚfô³·ã •“鯖Ûþ×Þ4ªáö†ÏìuŸñk0ú ÀôgÔ·)ÿm‡4Cw¡Å êKð}ض0 ­Å„´žÌJ"e©™yŒ)ÕÅó$0·š`6$â=§HˆZB",–AX%ƒ°D¡Ã ,AX‚ Üƒ Ûƒ Úƒ Ùƒ Øƒ ×ƒ Öƒ Õƒ Ôƒ Óƒ Òƒ Ñƒ Ðƒ Ïƒ°«›æ’|=±¨R-2óÑ^¡3$„¾\2WBèÞ…‘òñd¯`’å³—7!u…”8æBÁ…¦ Mš.4 \h¸Ðp¡àA}§˜zwнw˜l·ó„Fkr ZÁXR­—´™tÈï?4Ì–€ 'È@®4韘AæH@ng ¥ñH@0L@VÄ0Z‚ZúõÇ‚ZZåÑ-D·&NAn‚±Ì¥±ˆƒ (=&Ah8m®ñ˜Ç±ÔssL0<:å´µ™9„™íD±±uŽ>³\É(Êa5æQ”.oäÌ^8ežÙ$ L;ÀÌ–Á¬(‰„Y.9YóEFauïl ÌÑ¥‘0í˜y˜Ëf­ æAÓÜ_ì Ã, Lì&5Á«í÷FUãð5Wã¹ E’gëñyA› ÌZÇÆ®öÌŠ¦íe[?Wö„Y„­0yóqhU0´ëµ¡Í¡%ëCkƯÁÇ¡­á­ž… …}2Ý!àé Öê}…9`‚_~F×äÞ‹Õ%YmöÁÔ?*ÒìS'gMŒùàÒíÒßÌ·5EÜ|+\j¶‹nƒñ”Iì¢l ž>!¦ì¢œÄô̺˜z$¸y HðÖÜO2±jÂI3û{%0ï˜u2˜E&˜/½/¬îíâꮩppOƒàµÁ}‚‡gU½ŠzØŽÕ¦ap£¶Ð„­.o¸‡º´Qq¨ý*ô£·ºg&íÿ†Ÿ‡×”(º^T´Ô¨=6Óf²V´Úvœ0©0¹€Ü­IäQ 2##ŒVê3Œ@ öãdÈôÀÄe$ÝŒ¿v@ìÍZÇácZÇ¢=À´N#i×òˆxŽÐ+ŒÑÔæ¢|óþ¯fÈRWψ.Ú­&V7³W¥„½.è«gH`æ˜VÇ/]’Ÿ$ù¥B.ÉUI®¡ø %’<¹$R’÷‹ˆYäÒ“‚$ßP(Æ¿ª%˜9uâ_Ó%˜©1afÊ13¶k$0s‹ f£ æ©£‚0_— óB"Ä‘‚F Bü(¡¤ Ä‚BRgL'ûÚ(ÒY&‘~ô¨™ÿ×DðÿqàÿÛü¸Dä z#õ¤=Hÿ|ÈçÝa ã4 k@¼äþÛõõY„ÕS*À v›Ôh„eX×D ¨IT ÷H€4l?öï´ªaL·A5´’jèÕp¥\5tiªÁÃUó VO“©† ºº¾¢H«/7‚±ÚMŒÕô§ð€~ÂÞ·"ÆYÇ1þ¤@Ç?1"†)‡~Ë8B}½Gd”æ&i>wÄäk´H@.Ê@†L ƒf­C€¾Q2îù‘ KˆÖC®%sBâÆ—§êÖËA9ÔÀXüS%4Ì›IÃ=4+œ6 Ìl€y« f¥ fÍ…“gP8é„A5«êmÍŸi] í¯$#ìÐF(š­ÿȸQ}F“Ç|Â0ß>,Œ0A°ouWÓ;a„sn ë‡ÜŸ!Û4ÐG›ê^FýCŒüj¾¦Ùù¡“û=$óD#œôÿ¬]|TE’ŸÉÌ@€ nP’UÖA~> $(HA‚ÆC#?¢Æïƒ.**j漸À2£É„¸ˆFB\ÀàF@ I€ ? 5x‘eW>:9E9PÔëª~o^õt¿ÝÏý3™Éë÷­êªêê®®þÍ8d ¸•¹Ãm7“®>U|~‰ä……ä<ç) xJ7x’xl ]€§¯²lY¬ÒúûYö£”\Éä~:*Ë~­¢ßœÕ•¥À,”0×%F2‚ó!äèl\Üà‰‹sgññ«11ä v3&† Ï¢1Ìaì–&›ÒîLì_/WÔ1`ä$¨øžñ• sÈ“Ÿ¦}!Ü#–7­Ô´d5Ž j.!0ÌXŸ©Ve%ãYw ³ïUÊ%±9bU³ŸQÍ…GZÈÌP¯¼ÞŒ7JÀÇeùÕ+€pîõ f$Ìpã¥\dÏôŸ‡¶ÉÕ Sp¸OáêT׫0eW÷ùaÂá/êê ‡CÛäã^<Ü6÷?L‰z² Söq¿%˜–!N´ ô«òs‰Ÿ«†½,ÓÖÏ¥1Ñê¿Ïügüܺ¬’÷s3[÷s3Ié <¹21>°iáÃ0ÿÃÏëÄçi &7bB¢¸.û@n˜–MÍøa¨qø:³}$;$àwɺmTwà×)˜uKssÌV^YþÓtçHs íb¥ñl,ÑU±©ßPœ',æÿJ#¹Ž+Œä†îíC°z ù±;¤ù Ò~ÜÅEBGs5¼ŠE ]DçFÒEüm0«C¼¸Áè0¯îÅü¹3ç^̨{1ÓîÅL»3í^È®ëåƒ9ÂM;¤í£÷ùbC¸Ô.5fdzÇ=Œ9ù‡pϾ/‰4fˆ”¦Tþʬ@ÿ!CÁa p²s“ (‰'@„¬÷ûSY‘7•3ŠÚLúOg(jSC{Äm¬Ú 3ò¼ƒ€°^^qQQߘ!è=T5, Ñíä²øÏ+~àö_+1 @^ÐEÐ4OŠú_Ê#5¯Ý/ém.¡–ÝmȵŠZ ê¬ý µÇtœ%à8o·´–gþ 4Áƒls @ÿ7È~TQ$9¢–}²ÀÜùrçŸÉlPŸ0HyBÂ|ž`büÛ†Áa*ñ¡/µ„ø7%_ÿBewh9²<+ù£s{‰?‚£ñM·2÷÷Qm×C èájC·£|q=”ács³ÃŸ³Q­„¿ç`¨…EÅcq¢¡}|¢¡Ÿ’29#îØ£`)ÉÕPj°Æà=d4‹Zä½ñ~Ã^yŽä*.ã­Ø2fXúæGŠ›€|ÿž2…Õ&r² p|/öîƒ%,ø‘~~”F@©F^*K5ñRcÜ\¬ÙÅî'2T {ñ¬÷}P¼­&'/Ñjò‹“לä5›I€OöŸ·~€•écbŠr†éj=Ó÷Aü7€ÆZ sƒ›öX 0óiö’€Bz+B… {Șt4„ßÚéO®`w3{„K®`Éž¾³?“/{æ+ÝÚŸº„hPUæØÜXoU‡TнÁrj½þžáYÆ»±lÐâ½ý…Y±ªDëÄe –dc…sÀnZ¸Ýä Ýœàv“‹Öu’[×P*ÆKMÄR§y©|,u†—*শ ïs†ía§ Ýïégžï+q}ëÿÄŸÛ¿^þÑÝDøƒ’½µÁïÚKlðš~füjÅ=“ŒÛÿÇ}O_©þê!Žå¿Ûe©½?çذéJÆ€§öµ †âx§ ð…]rûÈÛí4ÿÎŒFÿ© gÚÄ1P­Âµ¤ ³cd ýK®½ n6'÷±„Vc,¨!ýßNK7›©7›åš3ì´s7¬ÿºÆV@ŠewÞ™DƒZcøbgeúS×Ð*nDZ܌‰¤µ•õr&a¢P•øüù.È àÆ#1 ¹«^2Ï|A+&àzÜÓ[jß&j‘0ÿUgñ9õ’ šA ±<·›Ë=½M+)Pòsð3´·"w ZÅ“„•›ˆÈìëʢܸæÿ Qª–$ÕÉ*RãæîSj\yZb}­0-qž‚¦Á(ÂßVÃ&= —$}ÍÂS0ï8ˆ;ÖÜ‹# J¸,¬ƒõW›úµ¦:Û—ë{áËŒÿg(¦®‡øÿj²¾B9þ'ñÿÒ¨æ:i£ºœF‚sî{52,´!o_)漇<°›™/$¿jAÇ~ã’_+'˜"M2K™ e ™y䓤PÉ Bt³¤F°‹Ì;Ð.ÊÁ.ºÚÙE¹a¿1í >/ÖKeO²šê‡zý33U¿l·|ʨxÀUïŽ\‘sª¹ªz>jÇ¡~´î)C‚5µÔ@þžWóç™ &ÉžÚ.‡\¸þ>3aý/T¸å*æE Ó¯À,R`> ˜Ï«0s¥ÒﻯVÍáÂNýŽ&fÁÍ%ëÖ¨ó©we qM 7‚,¿ºáâHæ*GD@z›ùbk»‚¨• Pfl…PŸ¿#óS"‚dȽ ñ$8€¬P€,A~Üý_"'yänH™²@ŽüZ‰/²T2×rPÆâoØ®Q»5ô²ÃCb„øZD:°ÍBêef> vŒ!v`g4 #ÿ=òÌ&0)Ä è[¢Z>w]<ö™zx&dêO3/¯ïMßd?q+°Q™nö63!Ó$s?ºUî?V*fBú3ÔǦÛåWäsf^h ¯u>Ôú u­óZ7#ÙØ9h¶GÒ/DyšÌ«oJ|£°k®Ë]‰¾ñó-dJä¯=…WÉlJìÆ­d,ôoivåT{èæY$‚]z¸N§ƒ<ïªÍ=ÍØZqœNù\ "xÓ¶ªuâ'Þ&"ð$Q"Ûà£>2Æ±ì£Ø›É>™¢ÓÚ;áý¾Ò¥Ü5 ?#LÍNÔH û³Ãép²fÚÆou ¾ëq»¸ (ÁB v:Ú Q¤F ÆÁžà Öœ |qŸã|ë2u :os_Ù¶«!³Z#n%kÂÏfüÄ{Û5¼ö[›‰Ÿx·†÷æj…ø‰—¢jxs¤†÷{ixy”†WÚhxyŒ†—&hóð×ð8O O‚ÔÎà':¨ái|Z.~âQgZ_ä-€Ÿ¹X¦ññví$~â¥s(¥ÁÈ6Ó,¯€‘i±0Þï¤á#Z5~f#x~߈Ÿx‘¶¿§"ñ{ö]ìrÚ‘‹öÓ,ÙÏÊ·ˆý,sX³Šu ?<~–ÎÅxJ“÷YÁ+"#7Š~¶Ž¨þiVvd•¢3_ ·ÓÇ‚dæÃãòŠªÈ“m–&º«ƒr¼ r¶ùGy©c.a¥ó2‰ò·îÌÇŽx›¢ú«ª35Ýc™3R¼úý&º²2³MSÒó‰{Mìnº‡z…\º+ƒ»+ä"o´{x“$êänfúñn ÈlißGwùmuE5õv‹Ï™bÓôcÓL÷`à(·›BÞ¥5éá–¼§·QÞ]«‰¼Oúùú . ¸N”Ò«ÌÈôm~…”ä 7ßþ…4×o ¹¢‹ ®^ï+]Ì=4üŒ`@ˆ×(ùóy¦?œcnŠ a±õN8 ÛìàáüàzÞ¿7Äû÷}rÿžÍû÷}bÿ>†ôïSZ°oˆ÷ï Ø¿›{=Ö*ìÞë}¡X 8ìã/°JK‰Îø+Ðíê»Sxÿe³Ž@5¾{ÝÒ¹±¿Â¿Š“âZ‚Û˜éꦘí;qÕÅ@x<.Åš‰ÏÏ‹:­’tú$¡ßÚ^:Hýy¤é—C‹1¯OGK˜Íè:9ä%Ì1)OöE%™ÚœïPLmB4¬Oåh— â^ª´jökcçP6Ÿ=7¹sf¼u•y‹}ÎwTð¢$ÀÁ•¤Q„dTÖÅ\†±¾£Ì´ ”.ù|<ëx2_à:˜»—à ¢îFÃs’°ÒZà9„Ò½m\+î! ÔÜ!~n gPá˯ƒÿï a–´Ãäë "B'ñ+Áî†aÎCÿ]Ùÿ$Ž[gê·ò8Ë+ä¹÷5ŠÄÓ·Lz g´•õç·Zm!o%ؼZž=­Ë;B5{'›ó£ À#qý¹Õ¿{µŸQÄ›åCír¨g&Ä,Èv2äYäT€|Z)ÎßZ•c·asÒ(âfB—µ»/œFãw0'ïPä¿Ú)"'<{­R,šT(d`–©0å倇VÇXïà’iè`ÒÒ^û¶Sø&˜.Ô;s..囯­”}Ó¼ajl Ó°^çA8¡¶Åð€¹³ÿJ¨³†ùñü“×hÇÔ6Í>PA4›?’/aLäèÂ*ÿx$^D.îzM“âµo &[`{Ý–J´Ü1R\}a…ܾrdä<@~Ô­€Ì‘"É× äýmœp²šˆÌãÏ?:©ÛΕÿt)ìV^9ç_aYL‘ԙÔ´¾Ä%Ùž¸VäÈ«²Õ%ß-XÝ `i¼K¶:?<ÈPñªÈÿ¾*·ÛUý_ƒú'©œ³”¼ò¿JÚíÓNÅùO0 _³ïz„CŠ [s NÎ*—ų÷VZòJàðGHw ?£ÉA>eªÓ¿wŠ Óè.á,HÊÝÈ‹²1DXžðW„å 'x·úR{cñ®ry<…|Ã\ÌîØcà\Æ;UiÇ“ú §}”#O—L{ÅjEÙQí"g©zúëá8ß«:ûjÒÙ·@«Ýê°Í ޶ 7a—”ÙÚÿ²ÀVÆDd+Æzôí=m ðØä)‡ñôÕ5Üÿ¶’[•¬ê<UÈ(. d²ŠgFÌo€óBw“óC‹ U%žZ˜Ç£ÓYÃÏØ¢—‰‹YÀ"N6>µ–ŸÏsªg]Ž-'ƒÂï“4æAØ, ;°³ƒ®8ç ©ÒŒdÈ ŽömõÔ3)>X1 μÝêÝ?"Þ'ñ—¿ù 'gÐ\3R®ebÒßõJ,Eý9RLsÙrËÀÇ3Ø}–“ô@úœ¢÷ §oP¤U‰åůտ$n’/É"̪êo¥„›ì È„¬NQP<- Eû$Pl(~J)¶ØS¼(Þ§¢ø¼ä_ß^&Rm×Fe:Œ‹j!®³pЋ‡pcù®}|W‚OAøýM­½íûwíâí[Ò]G&_ý–vÖþ ¥þ $ǵ䢿ë]¶÷):î±+§Râµ”ÄNðþ陞OoÄÃô=›ØÕGð»w3<ðå§ì¿?üâôj|¥‰ýˆO«—NqSFfJšx}1 V±Qæ ’ÄÎ3½égÝöR$aŽ8.A`XÚ Eû_dÕ¶q[“äãÕXw 94°¼N7µàøåjÀZÍb˜àuaÆÒ² =¿ÜÆ/²Ò4¦»&Ô×púG¨;®bÏÇ n®aï'¨n®a3¾Ò¤QÎd&¤ÏpÙïä‘È;¥Bäd4»iV³S-ø7NXêoFN™àKÎ$ r¢|•-‚þ/ɾ“ H+{•’ÖœdÛàær¡GmËE½n)4¨’uLú-(}¸¹ÂòB¨àuwª)Š7YR÷=Qºo—Äoyúˆ™]t$4ïZHó+vÃÖTß–îì3ÈáG‚Aâ§ð¢ÖðÂQ8\=%`ɃmõbÂÇÀ$&¡7ñ§NÃi¥‚AO}VþǦž²=Yb™ì~žÌãŸ} >å¡l=9:ô[hå¶z¾“ R:ìMHöÇ‹-ýÞÕ²9O1àiò´XëÒöϘúª'1ê$bÔu¬Êr€ m›/à`ñ/Ìf±ø·Å¿³Yü[ÄœI® /¿¢·2ÖîpñöÛ+ÙרŽR2X8ŸŠ¯˜BWbŤq| ˜15búS¥Åtk’µæÌhæM£ÙÉÔ|ø‘¾‹;¨?²«wsµx¸ƒ á+{ø+Ïã+ïñW"ðÊ^þÊB|eŸIQ¶+KÀ UìÊñ…i`ÿ…·dùùå3CKáßoŠj‹§ÄOWyw(¼ù±_ÉúÇóU˜þa8QÎ ÁöŒë`~Uì2‚m|„7'å’|¥3ùÒ \—`ÇXo_)z¹>B\Ì?EÒáÂ2Öfê<õ Ã*8'rܘãÆcD>é÷:_ûÑõ¿„’‡7ûÂû¡Zµ)Úg°¢Ž.‚«Õà~ZüþƒË®tã_­[ò¤ Ï'ú<|ï÷…ŸA¥jÿ†Äûüô4‚X L…Mìk10ü@áeìa3ü§„ÿggp”¯6U{n#¾ƒÔ…àR3¬NðªHÛÅDåæ¢ŠšÛÁ±`·Óð?à¿qúõüå—_"Ççÿü%û_aÇXåqO| ÊØênÐ~Xy–®ö:h‘t°ù9¢ƒÞ‡cÓ;Ž-¾Ôá«ó¢2J‹¹xJ:øýÓ@¡1²·ßùÈTF WÆ1_¸•‘Ê•QÈpñ«S˜ðûyW°”…:( d¢²’˜ˆÊð{øhð>ß7—(…ò÷¶€üw‚üý(þ€i„ÉßÛÌ5‚ÿ9¼Òpüx´Xä\À[¨|sDùŽýÌ+äóD`ŸQ{ùʾ8ïYËY?Æd™«Õc…Ê\–+>R§28òù,ª‹LWÊýJµËêWŽ-´øìy•w¼ö€uŽŽzËá¦MöÂt3¾xÿÖŽÈ{ásÁÞQnk¤EѬò,>G¢}š)aîÆNKפ 7vØå ¯zþBR.äjiÓ7<›™Æ$ƒ)dóŽñFxûÓâÛÅíY°ËB]Ö».8å žæ¡| –`¶Òˆ–æ EDG†Ž Ñ„üÈ¡âIÐ.ôjâ@MTø„ÕQÖ£þyÆèÈÚ66"„’%=iæÌ¡T7^êrrÜÊâ&& ÝÙ9Î#S"“Zš!5§!Ú\ܵt{*Q¥%ßÇT¹Àr[}Y Z_ø°×5þö•À¶ôǾ-ÕH=ZÎ[[Ü=3/‹ ¸Ìû.Y Na2 pŸœn¶óág‚ùàÐk–úÕºTô(ÌÍOZÙ'œÌ<ŠÇpª¡)ìÎXê‹,1Ðüox°Ëb£ùGÒ±žîoî°æŽö©uZ÷í%#)w“Hñ`Ž®$Ѕ븙Ké.K¬Yÿ£Ø8BåãÈá~"‡!Þ¿Žé±cêxx1'ë9À!ö0b¾oK J·…+“ƒÇ€‘ŸÿãìÚãª.Óü9‡ß!0,LMLÐcâåxËJü@á‘SRRT*MR4Pܵ•æÃÙÃ)>M6úš}fÛù¸Î¨«ÆG›Ði€²ÁK}¨±™ó wG§2›,öyÞçwyßó¾?÷.¿Û÷}ÞçöÞŸ§Æ—†·.³v*Õ³B{fzºªqŠ/ò¯[ã-cÀº™µ¢ÇΟVÇž0·T‘ò_"÷ÒcwVL:t^dªé6ƒÍsî€7×ó Iúò[]Žž Jêe<Ëy‚š£'ØÁ½Wó]Ûd,ò©Ú<¾g4ò˜'¨_j{‚4Íö5ËL2 Z (S‹ðÍ }Ú¸Ö$ꀙëÈ>ÍœŸéÍ©øˆ&£©"ÍÁSŸÅ8ñ6— | ´«~T¯9î, ÉÐØ‹)o3?ÐÄ®-2†qKX ÚŒP¢k Ëê7>J&ô™T ¿‘¶^C©™-D*ôßÓàÇ?àg2<œ?\råëõIvrå2PŸn¸dŽ5Î%7±ÿTn©ïv…[š ¡[zÌq‚Fné}7Óm¼ ´1Ú£½’Ùÿ3·¼‰vÖæPÀzØ{3]Ãà36S¬ñ@”Vù8ȺÊÐÍûÝ´1™éfè)‹©šæx`/Ó¿¶ /*Þ`syÖ6 É¾ÈùM–½«w¹D2Šx®yÛö QÁ Åö÷re×öº¢Û^—ÑöŽçÈ.·¨m[Ôzƒ´]ÑíhYmkÔzkG«µ¨vtÜvÇvôEÕšs;*ÏHumµç1f‡ü¯IG͈ÄÕìæÑè°‹w@á¯}rs˜wäàùV|ÞDϳ¢f-äUõ[ÅI–ÓEÜ$ËI–÷‹ìI–ßq“,mEÜ$ˇEÜ$Ë™"{’å£"k’%KœdÉUÖOzäÖJKò U6¹KvrÒ|bÊj5†MN¥Usý“",ÇZAÆ1d^–Š yg@b×5Úábs=<çÎòœ;Çqî<Ϲ <çºxÎ}Êqî3GÎÅ"É·‘M ¹NŠ/»t‹¼Ìàƒ9›È@‚Fè“Ý*qHû¼[Dí¹Èóàsžâxðgžž—xüǃÿuäÉ}Î¥ W¶ÄÅ›mr§†ü—É/` –•Žcø d…l ¦šMÃÚ^š§dʯ*²÷}öRîY•óïÁæ{“6s ]0Ù%æ/¦Ih9LÂÒJ{âƒ7´Ìvsà ^G>¯âšÞ/0æ°¿STFÐ6¨¹~ê‰RUÖŽ ~7­ßv)0G#æ–{¸øI°+lk¯ß|QÜÜÓïR+çbÁaGóŒxÄ»Ƴƒ[8é™ä¢üIþˆ¨»Œ”ÙHÊ‹“Dû%Zê$Z^yZ^ø¦ô^YKäZvƒ´õ)“\v|{ÿ„ŸÉáqçzÓßnæô£u¢1Ò³Ò³òJ» ú·‰.—¤ªrzÖ76ñ›s~+=+y BLT꿜Ÿu):œè¼¦ ó× r½g‚‚N9?k,ùh4‹mõ05ãåJŽ[Ln]WP1©Ø:ÁÅŸˆ‘oÝÈu§qzž”ÕYxOÒó#¨fâ*š¶~ìF[†üFFVa,ú¢4Þeæ»ÑÂÜÙraa®¹˜9ßZw¯¹4jݶó-DðØxÇ…¹£1bŽø\àY½Ä³YåÒƒ8qýŸ7×—AÜúÅqÎÈGÜ/nà„r«}`ÁS™lì‰Á<­ú ã—8ïeñ)…†/Ø •S‰j+Û+—÷Ôa ¼Ùt×8'6ªŽÌßÅ×â ø…·íÙXŠ9€åf÷³„®~;ÝÏRÜúYxm¿‹¢¤°ß,D¥Ÿ…¨ôçS¨ö›)ô³ …þb Ã~³Œâ~bÏÏâÖùYà9?‹ÇâØÛKæø…ýLÆÖsÒHycÎz[#ÓÙ•;Ê^Ñÿ2V¹;In„¾zJ€LUBþ!ÕrÎå½df ›%o5ËœæÂËLV…ú§OT%瑼+j1ÖÝùÿr®­kƒ:áSÒQŒtüû%rR×7Êl:F²3”ñ¹x ù V´˜GËl‹Y̽Û$¹j£b—8¯¹2+†ù\åm\;×㆒ÑÊŠÉ9]Ϭ³+66ÍÒ¹:Hn4o-í³Ðå°¬[8ôql–ØÕ?A‰~$­mï¯ñå“`Ö Ê=E‰¼ ‘ߥ„”…wž´! ù;©QØo¿…‘˜AËöÿ•˜ƒâièÏæâ¨IË/€`ýžQâþHÁ×É냓ž´Uš©¬G)úzïù]]ÜVƒhÝoe8nAê‡DíÎ`ƒtEï^e—»×Ê][U§ï*BÏÈP`Êé\ó8Li8àеý¨Œ3÷ó#Ñï©\…vr’Ñ4RAFª¤'רd,îåpÇèpð,µã+LÉU0åÓ'ñÄŒŠ9™ë½kdFç+0Cˆyîn¦œÌõÓ'¸¹‚·ÜV¿ S¸Zǧ’êê߃« Aóâ¶zÞðÛ9[]_¯ÅÓ„dÈ]Åù"ˆ¯•@ïGˆ ;$C‰ç@Ò ÉAÖ!ÈÑÜøÃ‚’·Ø½õ¸@O•†POEÑ#îV·Z“á¦Y©[å­ÖiƦÝ)¡E®‚vé1#\ŠíºEOàNŸ³ÕÊ©[#ÉÊT¢P¦œ5¸¡Ì§À”S·6Ÿuqµ­”ƒþ*Q³g#]/£ñ¿…ò¡´!{÷jÁ>ªE¢<4L´KÒa¥"ÈäM¨"ŸHAjDÍr2]©•Ìý÷«Zd"‚l‹‘ÍýŸ8i!ÿ.2÷BäU6÷BÃÜsMs¿K –tU6ø'¡¦ú7iv|p¥ÕËYYÿºòæ-tÛcœ}ìLCu«SXèPM½4MAF³Dƺ•²iÔ+Lã$V3Y…)‡3ðÿ¨Ú>Μj^ÇøÄþEÕ²ŒÀPr ú’›r>é<wµœÏ.7¯Â5*2äÔ­ñ%2‡˜+ó»˜rð‹Ã+dÌט‰ˆ¹L…)§ƒ]¹‚sh¹¶CÃ$°|>×þ‡Øï£ì÷;ì·¯Ÿ:úbˆKžç‘³(^Yn×ahÀ@1u4Iÿ¹ Nž‰zu9Gþ׌òCBÏéù…&ô4%º–Št©;…GJ°ýWÁÉ#—>øŸ‹äöxzÎÚÃí3 5ÿ45zü*ô9¢oJuž«‘ýâ¦G…ñËu¢ µ§—ýG¹ñË4Å;Ž_Fš>ì< V!5=ŸsóG%nÇOeã--áŒwí`kæé¨=óÄT•i³Õè®#nà ]KmFäXj}ÙVk_BÖìËœfW¯Àö€S"  }퀛q„k í:çXŽw‡ôâãblGAûþú—‘?V%ÙYHVÇΚê’ö÷w,‘L¡ÍÙ| dúÆ^ È’ Ø(ð¡s'±ɽ ‡¨Jæ Xë ‡õ—83­ùYs¬Ó™¾áH_yGú†°iÊb^ËÛú8ÆèD]&o…¥¶0è‰Þ·¿ ñB—ª@ší»˜ë“ü2ÆñÓCÄ… { °a)מ½’bÍ_Í[EÉ›RœÕ^N1»éaŠ™e­Í¾èìœN€4õ¤^а2£ zŠ =âŒ^ŠèowF2Ð)°ÑWHë, \ 7¶˜SÈ13ÿvd tÙ™ @tzZ/5ñ(à}¸Ø1_ü϶S¾2r Ï’y¯kîÿq+H”›œŠé‹k…ÛѬHKª‰èî„Ï—¹8ÿív\bY„ÄtáˆÍnqÄX‰m]ÓdK33¾ò–6e¦y’)S®g‡95äÏ]aeÁ~ó7n§z6rõ¼5×8ɤ´­Ÿ® (…'”œN2…¼®å q½oJíïÂÙªЇ+€W!tpŠ¡øM(/#ã§1©óÍd'IASÒ;*<Ý}ôŸ}ìré/}Ì„£øPuêiuŽ˫׹7Rç[ ¹„©k¼Žœ›¡ŠëN¦ñ»Þs~ýí‚€ÃÕ©HEG|w?cþW¿?îø}(±BZ#ª}Pɦj—sfOˆëÞê„V*õ¦ªÐâºoãóo1Ì5Ì„ê×ÎC5¾±}Ív†Ç+Ãh¹tÛ3;J¨ ¢†©ÂKîó²J—f`šÂ«Òu¤Ð ÔÈ ÒÈr ®ˆøÐ„áeü~ì@Ä¡?8Ⱦ Äˆ²a²ÿ5ɾÖK²!ÙבìëMÙ×™²¯7s²ohÊþŠZöÇ62Ù×[²¯'ÙkÝ5«€UU¨%}LªÜ uÿˆ r(è†Ù`nH1©Ìd€r*ØHÜPa¼=Kï­ŒïÞnžïð~FâÛEÊTHÊTÅÂgJ1)SUYÊT…ÊTl)S!)S±­L» 92åø×l1Ÿ9^:cËñ·H¼NŽ cgA™,xk¾¯úè$z§”Ô§:H,ß6ÓWŽ­½@t”x¬/€ŽV³WxÜÔ%&pÒ”¶15ì:c¾Òº®£4äeâ»ÛC7"åA ¥5/ГðS¼Öð߆~Ó‘Þ´&Ô›°FS3æ¹Ï´‚½z"¦´äΩQ'A£:áð·C­€ÒÕ‰‹„6$#–L ±OÏÄì'.yǯ‡“¾À]Æ©/¦C¥Ýa_¿‘(äDÃE #; O ‰À6V}`1"½y›Wïú¡§çX¬Í´nቫX¬! {ÃW±5ÏÝ O#¹oǘwÍŠ¶…¯ „¿iOoÅÖ:v ‘ë“1–âšßËL"$&4ÀËìÓÃÌî;þ!½†ßÜbè/…ÇÐí@ëtã=yT{õÝdþ¶l™lO¹?Í+ pž»8hØ´ÁÂ1ìQLêKµøþ9båÐMMõ¿Çä|â¥ÆßŒyr|`rä9°yÖ´»b ¦°:´Ï5nu4ã{Q¹AJ O3_ˆµâóàe<^æ h1ÆZ5ÚyÂ…jù¦†ýÁx?­÷᎙°³šŽ¨Úsš]j ‚Gr·¢¢Ö©á¹Ät4|ê…jhû¦-=Œj4äÐîò€"Ö§ 8z¿ë¨šP{ÚþÌ4]ǵwVÞuÖGê;§« S£šk·£çô,:¢þ÷_ᛸX¦;ˆ£kÀ’ $…¬!~à­ ½t¤ÏôÚ8㵜 ½‚6j}7Ò;*[L`ðÐÉUj‘’L1·§–µ[œ&ícÍ‹©Sy€ƒÿ¥w€…¿ïé1c«|åµ½u/-–ýùŠkŒ|(IÒQ@ëÀ‰1tÛ(‡Y"ãD -éW5BPWðMÖMxÓìÛP™A³} ŠÍû*%ñõÙ¬xhøžéþ2odà(8þ™h$5Ö¡ /›$À Fs"?„ÿè b†ÿ¤¹¿ hCvAIs dFß«Îô…ú©ý¼ ¦‰›×¹}Ùr?—M÷óåwà~4ÞýÎ:-ãTø»¡N¦ˆu¾±Pr2Ñòs5¾Ép/éW-éï%=ªïêö®š–9…Œh,±7 ¢áøÂŒ•Ë4°í´žÃ79±TO`„ÿ¨¹ÏS±^`öuï%N€5¦tÞnTŸ¾šfCÏŒ5«‹ÿ¥7o éy0Læ¸ "³bÍžBcoÒ ‹{zzºÑ7ø°Œt´º)ž<ŒFï¼tbçg4â°f}þ*Ö¬ç“R–Q»X ŽßO)Ç[˜?¾–Ô¢ÌnÞ鶬åVËj ”SËÚbBC ÿÌ=mpTU–ý™tÚŽÝC:š]AÓh²°C¨‘Y×ák4:Ô,»cÕ²kjˆ¥UjÕ¬ͬq`H㤧ÓÆFPQËu£Àl DÍ—ÚBd;µ‚°»±ÈŒýljŒŠ(Köžsî½ï¾×ïA@¬ñG’Îí{ï;÷|ÝsÏ9÷¼ï‹>š'x€É“ÿ€Œ_7ÄŒì;÷‘e‚ nêi<æ,?"äßû(AÜD7×¹DAdf9¨t–‹* ;xë\o‹CÀËÇC‡·‰Ã;[À[3äÿ=ÿ÷ÄÁ´¦í¤ÈïnYÆx7i¿šY¾Ýבúd?¼+äÐÆ¿goœåWNüãtKãì§…†IœÊ$ädPoO ÓáΙ¹rßÑZúØrâ}2L·ùš¹½—&4×Y“ÀÜäk ýš$¶¨WÙ"ÉÙ¢A²ß ³EºÀdøž çÿýpþßo6ü:~¦~«]ÓFØ×¹í%bo$Õ¿Z5ÿ¢ØJ`T´Ú%Ç1€zMàpÑ.ø¶Y€ñ;ó,À÷Ým6àgºÈ>ŽœÏœÎæŽ}ªX€ÃR' \´Hu¨ŸÏd¶SöÕÚ½T 0[`´³ro´·Ã/ú‡tûï¸T£ßûï®?Ÿý7 ì¿4Øéoý÷·ç·ÿFh‹nr!F¡>¹°ÿà¥qjŠSiÿAØø^ ´ÿøxhàößHžý7ôÿ; ÿß±¶ÿˆ§Àþ;^p1öŸ¯Pµÿà?´ÿðØì?è9vûoÈÆþ ªöüÇþ\´ý—áö_ p,öß°Éþ›‡ö_V*Ÿ¬P>_äÛi§¬Tz ÿŠß€m™í2WÓ.ã£ýb!Ó1‹jض¼ö­óøÛò2~Raé¿ ê$z@@ÄLµÜ–ýÚé^Æe'z Û¼[ßæ³_a1л¬E{Fîé…¼™â¤«\¹J† œÆcœæ@܇Mð,X)Vˆuå= 8ÙŸÕw„¸ýÓaï˜ßYÉ&ŸÖkdÉ/­uö œ´N‡R_ÄêY?ºÖÒ5þmG[Ü¿÷œg|¢8’wè~+X\9ž­°ð&Y"i û¨íw8ÄûË-è•(½7ïÚϸk,i_,ªE@ˆ¤~ìa—ž)Ö € €»mɹ¢.= mM7ÃÖ#ݸí´'îC¸öãn{âNË+Qn¡Wó».@`6Yñ=Lº‹AÞÓe+0‘)–CÚã0ð7]Jþì\2 eÑm#(¡=>‚p)5ÃûæXsX`ß?G¯Y€ÊÛlºBœnR¢xÒ͈’…Da`€ï,€ž½(\˱Þ6TÑ®`?ÓdÍíe‘ëÙRs»i¶©æöC¬±[]HïGA“Bz=GÞPRˆqë<9rbÏEU¼’Ù:Ê„‘Eò =÷têç\›?˜‚dãé`p3œËb™"fš ´Šw B_Õów0û8˜½~y:óäÇp6š›—€qp²åÙh®Û–&}×’ZüMÁ£ìWìO ýßÄ5t\:úWŒþ Èì®`?ÓØOû±¢ÿL…þþÐLNÿÛúß®Ðÿö ¦ÿd ÿ@ÿ7úWý\¹™@i…=•ïƒ9¦Á×ÂÊó¥‡/Ù #·EØ/ ’Õý—YŽo þÛLçÚÐnÍ¿”šo ô†Åcÿ¥ŽWp+KÐ:Ùt“¥ð ØùëÝ×1ü×1ü×1ü×ñ:ªy5ï}×)ø¯cø?9ƒã¿FÁ‚ÿš±àߣàF9ÃÝHÃ]®CÁ?¬"Ž8ŸÓÏ8]G¢MØX›Äæy æÙÖ–¿ ”G!”‡ üKÚÃöŠeyBxëDK!|Øm;‰î ¾‰w'ÛdiœØË`þd¯í¦¿t¢ÍÀ½0p—2qÓ^ä¦ÔEq7‰ŒÜT56nZ<™ ö3 «ò.·â¦=Ón‚¬š›Î¹©Ná¦:…›êì¸iŠ4»šqÁsL/k›öUI1ʺÊ^Œ_„ÁwÂàš=ƒ ·Â°mÓ@†W; 7쟗B~§ ãVûgÆ«¿gÚ?¿ÿ=Žñã Æ.T~ÿeCZ3µ©»ù†ò[¥Ë¯D üVÂøÙ'f(œÂwàl”é­ñ5û/_Øg¯%#; õ—Îàµÿ–òwñj`UÇéklhŽ´"díxxf_âÿàê½tËAö¾ô2]u›Ü “w–|/U oÍÂ*î{É0@zKôÐ àv¸wܤ§µsPèqx:®s¸ÐÑEGd:ÀÁûâAnnknë &¨ÛÿÝ PÕhÚ•pmß”žÁ”ÊôˆF: u®¤»ñcwùÁGüÚ a~¾ŽS/Ì" : ‘8½€6g  ÀµMŒÃLÎVÅ%—b¢¢ø×š…?Íà_Û]K¸ ÙÅ4PöÊeзɰ_çðIÿ¬)N]椃I²vÁ¤ÙÚõjáT8&­pL_¡àŸÖã û‡zH¦ÉÓ ÀêÝô}FðÍ€ä˜ÈšoÂÈ7ø$+¾ #ß@7ßÔ/á|3 ùfÀÄ7É70»ðŸªÌÃäz!6:Ñì/ʘ(]߯Dif›C÷ìXeÆ@|ª4'R Ïà“Ùu[žS›ípÅ;ƒ»´ÍÓIwù·u¯¤ƒ»ìkÕx ¼‚·ÞÒyÕbI|dn¦Á“=ÈUg'Ÿ`§@ÖÇ&‘þW¬$Š;󪱅®0Û/ ò} ¤W=Eª Y´se¡vä×B~á mˆjZ‘ t¬¦T(Ñ×­!ÉØQÄcŒów1r-ƒÀ§ûΑ—ÒÕ˜ÕIK‚¯A•¢²Ú‡Ì½Ädz¡ðWh¡.ȯµÈ¯§_«÷ ¿2æ/AðŒ%ª¥È¯Hà pz b-MQK þÀ½Åô-A.áÀÐËþò2íAxáŸÃ'Å&Ç_0ƒò)˜‘¼ß "¸ß*e<ÝÉxvÕNédǽ y¶ÑÀúe`æ¼Ô{$M%JGòÞ—Q6ï˜`ýø¸/{²Óâyq¡šêÊø·dÍy†tV#[!œ€v“xÔÏå¨m8;:Ó_ûè£,H²Y¼8äàÜá‡ù¨a“Ì‹}Y¹/–qsž1DžÆH> ´Î:|#®-8ç—‹bi6©)xu`Êù ‚ƒxèç ¯›(çÐf_~.±Ê/y³{œ…X-bõÙeŠX±ÿÿ‰ŒÖ ªq‹Î'T·ÛU;ïvU¨–“PÕ¡Z.PRc/T7 ¡j Ÿ[¨€ êfªn ÒÓj¤HÕøxÜ7× Sý8¸1õ*¦ë^µ&¯.L{q©ÈÑ0á¼*ð.¨ò½hû¼ë˜§ñX¨ñÃOŠöÇÆãØ)6Ë›eŸwW9”é¡=à=ÎÚ M³¼#ùM'ÌMï©ü¦3 ô]δ·®û9¼_6¢íõ¨y{½sAÐÁ77)›Û¿8Öï<ŒŸîù±‘J&nÁý栙…([À…kP¶FÌ&nF&Ä)Äf§ïbx`ÈãžRD^WׇW±G}<^[ìÊݯlÎU±nê˜uO Ǹ§Ðëé:æŠ ·wsÈ k¸ÐÈ:"6ǺX·àö –ìgXCŒÿZž6‹òG|Æ¥@.Æ[wûtBö3Xâáb Cð½>\t ýûðÉ~f˜¦¨¥ÔÉ“ïÇúË?}ÜÞy*ôŇ.=Ú.ÌÈ.¸–>âãa§{‘ÁoCG @'#õ>$ÝÝüëý bƒâëýp51ÜÞÉ 3ÁÇæ;1¼ç 8Jk‚yØtM>Ê/é Í´.œ¦9Òâ“ùC* rT Eú§4“R#÷3IAÒìÒnß—Gšx p'ñ†³¯»þÀõ™óÓxØ›A:ûãbþù±ÃȪlNB¼sû[¸î ÍR)ñu´HÒ‚ $øøLLAbŒJ Â1Òäg!îñ[sûÕQa¥ÖÇORç’ÉPAöî¸Y¿'`/PŠ®DiÓÍB)žà Irïk}¤…l…³;ÿP` WM𤫯d'²“ÒJ¯öWãɉÐ)“â`Œ~¥È=ž> V[~=U|=WÝ(£‘´9¤|yO:žÿ¤¬xRÖòIYñ¤¬Õ“¶ ±€ð)¢A í”àc•nâ_JÞHEžXZ©kä%øóqp{’@Eéã·X_«Fykõá°Ô¿ÍØ?IOS‡­¦aí>}ÓIF:H&9::}ª¸õsm¡ùÒ>CT™äÙ?г 8uÐ  À’b=Áí)ZNÆ9ȾD¸kL3ei¦^1~覈üšµƒÏ Kufà€N3!T½R&8Øi)i.sI~J:†ñåwr•ÔŒŸ Ýï”.?ç@•!Ñ]"‘Ç×;´`1àÁa¦R@8ãKâgâ”—sÏ‘ªØÛÁímDÚL¬[,:6"—÷¬eí(Pm½Í4ät›(oã¨kC28?c @„xøI6i° Љ‡'€‹\x>r¯¸äî;‹}9+„#Âtöd˘ù'Õx¼Â¢B¦î;¹Ñ¿E¥ÃNt^ígkznøáùLÏ>Óóu2=ûTÓ3C<2 LÏŒ0=Æ`z.<éYM¦çB³éyêo8¢äÎ1`2=3FÓSåïsÛŸ§ ™ýùÚ6fsü~}á”É:åÚïq:ĉ‡§ Ùdò™½“nÔ½Üæ"çÄVÄ:›ÒçÙ=ˆ‘îEå hï8tÿ/õâG2r”pÈ'ü?Qj‚ƒÓdNÄ¿g=âÿâ7⟆à > 6©D1âúR*ÈÝ€‚ë$9$~^àŸƒ&ÉÏñÏsÿÆ3°žQV_öÿs`ÿ?§ìX»ˆpäóà‰õ<÷¥Îiý¢,Äo™œvLèäÈžŒ.Dä.ø„Üõt¹«“¼Ò¹È×§=¼ÕÞÞžÿòXúÏÿ1dë?Æj„â?Ý÷·Ø·ª"™v[1É„ó*@\a„'ˆýI[ÏÿWåùËL‘Ø Œ„;^É„sŸÀùCáV¡Ø¼Pø#aS(öÞ0åœòé¡üÌC9ø9?”ãÎ]ÓbËyÁ ó73ÔܱY:J0‘mŠÍˆ`Äu0â¯7_²@d­EXŒ§Š^¢HdU‰)9±„#ÓQDÈœº´ˆY‡Û"Bf!ê/û`¤WAÎ?¸rJŸeÈ =‹è„%œqlñ?›äˆXñQÒCÈN¥žj®[¶ApbÛcö’—¸’øˆ³3`Ÿ–ÿêºËì%°lâv;­F@xz<,ãÊMv­ÞÖóûQÕÓ7“ Õ%δ{ú³)öô§R—,TkÍ“H‘K«M…L±ÚxˆódY‘.àeEº€—!:®2ä[ ¿Zôðÿ>c/ßêˆ'`ÄO`Ä­úˆX1¼CO{±À y=ªúÎÁõX©ïgœ¶êû§–#rÅLþ´7Ÿ†üϧ úûëd2Õ~ý=¦T¦×/7¥2µ^ÎÉ[¡·B!o…5yMú[¥ÖïÿQëù§j6?56úþŒ¸FÜ÷”Bß2 ïÛ{úzò¶çÊ3–ô}Ñž¾YŽ úþïFÒ/Ùþüµè;¦ýù¿¦ý¹/Àé{½Bßëú^Áôõ2Œi½ þɆ±Ñ÷ÐWlÄoaDbƒB_ÛCx.¼S;b[Ž#QœÍ+kvã—j: í²Ì_VµõZ«¿<ò$ä=™7þ1$ƨ´ÇdH|ä7ïûE‚ªBõj…êÕvJ{ª C iÚ®gÚ·^äôƒ§Ù¸ 0î·ëÒtÒÃûP©8“ éó˽-8eIÁ_$¼¥+ðÝÒ"Ä Ý7c¶cÏ,š2Iè¶ø-ê:hOLRÞWãã“ú:œ˜8KžíØöÀo(t„Á©=„úGð«Õ6]ÖªZÔ?Ÿ´PL®ÜªD颔°S„Ð 8qa}lºÝ“iÊA§È€Ö8õ‘9;Ð9;ЋrvøÐ rvŠh5“¹*ʶ€ŠÎ¹ ©FÛ ),”•q®D£ûî— îç‰ áy%Áý’؉FÐA½‘_"‡.4 è—9Еè«@ïüå õ¥OHÈ“‘"ýŠ…A57¦ ÷t€ºÉ%2HÜt´ˆ»Èñÿþ©Ô7½Ü<ßÇÎÊK‘ÂXnR)RË #/ïæb7Œ1å¶·˜ì½g ¸ê¢U+dXÑ Ãvä:[_EßáÓ€Cƒ¶z£ÌÃëS$U6i‘³ÁJ:”¶߸Nư…j ¬ÍÐ9‰ƒžHø„É6sÏb²Í ‰l9‡r’2ÉÂ?q¤ÅþÎE_Þ‹W>·<7|5Ñ|±và õbmŠ.Ö¶:ô‹µðÆ)_jSån-´ÒÝÚ-RW¥\r(Ü­MÿÊe—î[…ªŸ§wPn©½€òžƒ0ÜFyžo ^pWÙü¹1jQëœÃ+ËAùM¾$~bÒ×#²°ÚH¯¶9T ÜX,_¡î]é×~ã÷¿ŠgÓããEÝQ'“ad§"ÚÑÈçËPâQ§ ÐJh€n„œƒÆ!širF½2¡²½L±jžÇÁÿó˜I0^õë÷;õ‹¯Ð:æÚC„ ˆcºÇ““L‰fÂ-ÕhÞeäA®…©3¤€ÀóP¼+÷ågrx*CŽ8Õj‰^ÇAÄ5äÒéÆûÀp¥˜ß†ŸÍ'èz*9«W¤ÉëúrE/.Ó-aYÏÉ«?¨9âó[»»éákéîøq‚Ÿ»»ñ@h*ÝÝ–9‡ÕÁ]KÜ©xéÒ› }÷Wn®u~›LÉ[ܵ<”Úº ú÷<èÊ…Ä7Íâæ£xp5 µB-¥àl2â'¼<~p¥Óþ¾.z¯Ññ>qÞë€!:𤫹2<ª{aéâ.^ÍE·ò $øN¿î o)áé5T3`6•fûq¡íD²V(ÍPFDêp T·Òmýv‡bò´òÒ Ð…ä‡‡nòàĪü¼õ9Øÿq°ÿÙ¯\¹¸Oº$ KþˆŽˆŠˆÜLñ ®Â>Bþ¦ùå]süKO¥f%/“â`L †\PףǹŸ3éx`ïpôI'ìHJ§Õàw¥çì7µÇ˜GjÍòþ4ðYIŠ0$°vé-Ò16g™?ðº¯g;‡œ±Ãå]º…zƒ ß(™¦8œÒIæd¨VHãi6œ’_˱ÂàÛ9‘zʾû%—6qÞ¹ÒÄ UÄ ´¤ 3ô3ì fèT™ag†^É ||¯Î Uffhÿ”1Ãk1ˆÿÄ”TªÈ""%g'yÀG1,#?h§]r5úÝk5º#ó-j€¨–¹S1žÇæI¨Dà6(bñ›$ÂëJ>a¿ÔIÎ}‰E)±šC‹3Eˆ°Œ; ïWˆv~Š96'•C’’/1¡vêåhIJå3 kZØüSUý d œŽ$à•”Ô¥‚ç Ϻ*_n†¬`Õ(¤lq¨ ªiGh#{$íÐ+´¤‰AÛÔ ÐÆ»¬ ÀÇ·ëpbµ‚ÀÕŸ0Μðk@Ù¯-¸ ‹öJ ¤Æó “2 X YRüd -id¥2ì”ã¸RcšÆ?2ÐÖ< ÷uØé¥U^íî¯x^ÚT›ÒχwœÝS@Bm¸kÀNÖBr0eµŠúÔ£~mÇÿ àY/·»3ŠökðË_Vmö˲¬–z‰•>ºYõ[Ö‹öVÁ0Hý÷ 8e‚C„}ï]XíÃ^¼xS<1VšÓÃΗ £µÁÏ÷ô¨ÜÓ£´§ä¢?õè ;®–W‹Í?2ªW5FB™{#N”ú ØŠ·Ø¡^NT/&zj³ÌÐñžs¶ˆ‹¹*™¡[™‚á›±e±MˆØÆ®‚r|—l ÞèÄfÙ¬o–hN5Ksʼ½‚Ã/ ] 1Z¾Qb´HÔ´j\¹h!še§f¿éfB8[ÎA‰I‚Mr¦&šÉ¯½Ì(Añó[rÀ­‘j(ÓJ·J¶Â åÁ$Þ¾ù€iü)Vç“$Q ƒNj}];tÒ>ÚGÚ°ÃxLë“Ç´NyLëpÉq\;$ÍÚáΙv¨]ñOø5/$OO+ÔÎþI_+Á—¡åöºtøÈ(ï%ÝšqàƒV‚o@nù}‡¯5ÏþÓÀþûØ¿2žŸýzýÄÿÁÚ½œµ¿=¥œ:¯Ê»õrȲ)åô^ʉ}ä3¨|›Í<’_Ê©–Í y²”S¯dÒ^ÁîXÊ©PåOµ@²@jÚ$çi~=GýcY.)¿ Ј!Ç\hKµ ÷Ž‚£'Š”3ÇqqæhRÍÌ>23ÓÄÓƒÝÌìƒ;^qj‹SigB0]Ÿ >AŸîgí33ÝÒÓýxcºE«¤ÿ™Dcš6ÆË´gÅý”=…êö˜ð¢G¤ø¿Và{¼2$ÌG¡ßF\ú™wˆÏà%Á îrÍ›£Öµ2- JpÀ§òwWö%³¬Án ²¬Aåm &ÝÖ`î—Œ~"OAýç$øˆT óOå3U•g•Þšß\ÌÕŒ!éqpvš¿;×Oàuˆ(ªŒÇý~›¢ÚÓlŠ:äGŠj#}¿ßAQmÜïGŠú4%Š‚'™¢Èï„gÃD4a }ä­^GÙ°†to }Ù$s¸•ê·yÖGÞ¿$³3MbYx,ë³X–·÷Ù,‹€e–}ñ(Cù’'Êù¤ï Öi~6 ºb!èào¦šøW¼*@^læ"zi6íiþŠîW~R"! â÷–ë9`Ù<Å+"Äc”[sÕÔ¢:¿z:ÜŬ‘†µW{Ík ÙÌÈ+¤ ä‹ âlcîì¦ðÌPÅb4…¬Ö œõée²™Z3)Ìæû„‡ØLÖŽ–'²lˆdúÔaca©Nm8ÃöÏ&‚áR-ÝfØ6ÊaN>>‰UóS›6Ÿ`UÞ^pVEÀ2«ÎøìŸ'Àþ7á!*rZðËixAg;qT ‚—C<rÜGÀ“éÄŸÀE$Æ[Hÿ0†9*Noãô–1H>¡¡“åó¾ Ò$i€dºmˆfšXŸÿ„ˆÏ´Î2¹ò.æ²ÜEÓ#u4‘ˆ>±µ ┓ 2AüÓA”š¾ÀIÓ™vüëH‹ Ffsý8ÓÊß<ú.uÑw©ž¾S˜ÎËž©^{fú.µ¦SÚÝô=–軃ӧDß4”6¢ï™¾Û8}wZôÍÛwÚô=ÖMß5‚ø§Ùÿ?îØôÝFôí#áÚ.Ñw ͦïã6}ûÈ;Ñî¤oi¢v›¾i‚¾iNú>Î]oúÞâO¾Ë\ô]¦¦ïæ/˜À;Á^‡“ B‚ \­ ˆò3Ów™Eeg¤o©´ º>VS %ºð·íáöUN¬ùˆ?a ‹#YÝ$¶+&Q)&ÑÃ9 :_¨°Æ_!ÆÿÈ9ñçÎÑñgJË‘®šÉÜ3óçk:sôü©ò…TeÛ¾Xˆ*\ˆù¯>Ç¥å)æÌ:©¦ „Z£Nÿ¥=þ*küUbüeÝ$_jI¾„ÈÐëäKY„$_Br¨F—/9V¨oŸ#…j¸åK߃L¾Äf1ÑÒ{Œ·•;fðÈ ²¦|ð„‰gx2b¥è:_h} B¸7Ä#|Šö/Eù¢<Çk dcû?@Eø[á„-.Ù½@À¯Û²,×>z«ø¾w)’"³¾á/¬ÇŠv=Ö¼Àw<¯"ˆâ›A¢Áègz_öqÿ0Ú5YNÖç{ú:ÚëÇ÷ó}ýÞAâ?~%‡Á¶o÷²-á,ê²s} ¹ùŸ´ȧ²OÍ*ôù ž€Ÿ‡÷*c}gSßËüXuž™Ç†bF*tQØÉнš†Ÿ>Ê~ü¨#¸ÅãÚõ½n,M©Ú”*ÄÕ wðhØ⺅½À©­Î¶CY𙇲àóÙÔ÷ò3d™aˆy÷á¯2öI7+æú[s–Á´‡±æÐ4»½ÜÞ°Ô˜R¹½ÅGÂÎÒÚ#M›$6¥‚À€„À»ú0Cà܇µ1ýŸí Àn{¢ó GN±'4°ÿ.eÎ-åÏVµ üœÏË!þ·\Ÿºòô¿|§’¦IÒ$Ò½…0²ñejn ›wÀˆJËÉþƒâS¾Æ‘@_PnK7ÈÉžAúÕƒŒ@v%øx;<ÿs‡àýšuÓ̺hFMšÉf=ŽýÀ«7i€§ë˜ã)ÿÓC=ÀR%¬éàXO à i-€Cºè½¢ðQÀ àÑ4=À5€—ªþãÙ­É"wd´†1>nýCÿð(aŒƒüeüµc¬Û=cµ]3y¿÷«.z#„û¨ÎKÿBÂäË¥V'DHì$yi’¹“ÎwregX'“ȳŽ|9”¼4ËÖÁa;¹NŽÝ㊖c¿òÊ ÿ~L/óuYŸ·Äc: Þ¦46¦ëŽ“UªPŸ·õؾb?þiGü{wÔç--í¢>ï{¨°*5áï§tòÓ°3üý“O¹ÂÚ—c+,|æ ŸÏ¦>o†.s×Oj¶ýÄ¢o®ø÷;?”é„É5–ÕÞàÔûÝ^¦³$5½ŸRêײƒ.ß~ÃAŽÆCIh<¤FcfëÀ'ý:”ÿ[Àÿ1ü3´ÊÿðVTþw;¿p(ÿå®´Y©ü÷iåfò U‹ÌÖÅÿ~>ôÿôÿSÛ7åL”ŒßÏö»Œßíûù¶IkØ&­a›z ]ù?2/7Ãùï48ÿ&%ˆ"åª"å:Kú¬9ëŸmXqc ìÕ->„ÞožæsÞÿë ŒBúïùuh¶“04†Yº¤ã[4&ÊêÙ^PKh¹ª@Ã'¡áìÅÉXé€wÇÕÜõƒþü ü;ð79ÛŽÝÞ×@^C—Þר¥ çˆÏH0$:Ý"–ëE¼ßŒ»°ëNÖ÷Rt N2ZÏçõ—äŽ@ݬÐÿOèÉÿK !t–-å×._ªAö´°ÿ×hÛ¶¦ïýÖ¼úOýû÷Õ[ó€V¿nÒè׺©Pÿ~ª¬_ݹ@Ež´Æqêþá"=undr©ªôŸ ýg`ÿuÑTZ¡yéÚ¦|6ó“ûY›=÷KZ(Ž™@7–pŸ›tcÉôSn–´nÒFËdcËjá¿¡§`oáöü“4,µø)›ž9†uÃý>qÙ0U½€rÇp”g8cS(Å'Ç„ÈfÛ _I™>μÐñGø"XàUÊ,ÿêOD;Ç‹ê,I Ðç;Æâ†“yÓ)à©Ï¿Æ ¸ºµ.Ý)cè$‰QÁžê ˜µ][xˆœ˜•eÅ6Í0mQ¸&fرb8lŒäÏ27ùøù}bEó÷7›E†¨ŸRO¯@!¢ÄÕ`êú5MyR„°¢~ͪ_Óä®_3줛Š,DÎú58«ì³·~ “ˆ!;Y s×N¥qeµÿò dÿdYaÂþÖž „_«¾¨ežLþ{sݽYé"‰õJ&~ÀéßK“€h. ¨y;×¼ŠÇ8Åçº_Å%šjTãÀü×{!ÿõ^‹?ÈKuí!‰g{Ÿcî³rP1:¥[:RJ}>²Óå¶Ú½“›># ÛôÁgnúà³×ô µrãÏiÿ¬ûç°î²gþI°ü{ÔEqFÑröST;íŽb¥ítWñ«;\[¨…;8òJ%ä•JÈ+U#î¿RË÷ï2´%îfh«½›Ë¦@8Ãúü:%ôsh:šÞq·_ÌEá¡ÉŽ»ä†Ï¿ÇFïÖsiÒÃ¥_¯Sré—iZ~º¶IÑïûÕd6äç'ëZª4}™ºûÝzMÿ–ªù/{CÿO†ÔWÒô~×ýd2œ+Ù4Ì?Ob-’“¸ÿAÒö“¸¶÷{´ýìo"ÜvEmŸfi{ dÀb.ðA| Wôþ.ý"6;sŒjÜ$IŒÑñðìå]üº\V«-Ç"BT—¡Õ±ËÎ6mi#€oÅ“³šp·Ù:Q¿Ûìôl*Þ}GaÒg›­†Ï¾_We×jêT°îÍ™Ïè?ó:«†4 v]¥jþŸ àÿ™€öi× uŠÜ]þ`š<ŽòÔ £ž_ùghj» ŠR~ÁU³ÜÀÓ»ûìê’•šfð8Ø6xOrjÊÆóðïJËìÀVõø9™sÐD˜÷A«u ¤Q9Þ¡É4[y‡:³%²CÙYRgÑéãI"ÿÀM|þ×&>s ÆU’0®’„q•Në`F­=Ðx¶Ô§ï#··ðþ3máeP'Þf ÞdPÌU¨yAs^º²°sL0¹$ÖºW—ÈÎý«qùÄE±¼¢Ù^JYâwÙØß‘öqü'¢ø1Ê_µï¦ÀÛlŸŽH TQêi] ÊëÛW[äRmðúöZñk¢ö€[E¬:\åá»Ó««–·FÇ1Œ¼4΢•¼X‚‡–Ò!ô·=]‚”Џ—Är“ÕŸfq<2ˆµ†:ݶ7EþÔÊz=è †5¿zaŸ7XŒ@¬Ê¤yøk3ýÚŽû3÷䱑âð`cÓ#ŽÐRÂ%¯n²’W;ãt±Ä®)Ô& ¶ÏžÇ2[‹D|½ºè­ÿ ˆÿñc¬0²ºÀ/ŠÇc`&A°†?™ÍÍ•éf[™f°f¥]ÞS(¥qƒÿ À¿oŒ•^——@ø{æešßbü±UŸ!àsFTqæ „ÑgŒa‹°Oòw(L7¯“âF¢ô@?]I? î8Ðçe £òÙÂÓŽËÊ7ß«|É?Ã&†CBý O¨Çèõ¯„ž§1|ÓÃýqy®Gºçu†È‹ngˆÌ»Ýá{ò$M%¬Òž¡ýJlB̆mnòë½YRÆn1IÆPX­¤ï % KJ:'Œ“Ê ‹ša¾<ðæÿSE÷ZïTÑý´ôxþ04îÍÐøÑhYIK™f¶5»Ë.†ìL4cûGü'¿) ºïiTè8gTèð„ñ¯¦•¿ÅÀç8p­ÛËhënÀÐ)t÷¸K¥k¥‚²æ5Q¨ÀøÉAâ-—ÇÎâ!¼¼çÙ£Œ¨G ïׇ1וê÷‹ÞK®¿UnÒ|~-ïÌY¯+}wç™CØPÌ«JµNІßjž¾5óÝ>ŸM|ßå Yæ‘[b>»Õ:æOzãû`Zµ¼ñ}ÝîëƒNºË×÷ÎZ—¯oùZŽÀ" E‹RA lÕYÁ¸ì†À%·h]} .³oÑ3Ñ0•.W2Ñ¢L­»å9U ò}_ÂFxªDïi)óxZ6ÿFÙÿ}~+I;kn¦ù/ðù‰„Q<·7†f»—9ÒLrÕF†s%a´û[‡+?>#aP;¾u@àlà… ßw%ÄÃÔz—ˆcåWñŠ=*¦ ðÅ222„‰P†&Âüæ€HИ†gå-IÕ0ô'Œv sŒì?œ‚¼è*eÕï ¹o}ÛÖòÎÛœÜËÈ ‰ê+$ª¯PS}Vë•®ü¾<úk¶/ßÌVàÅ›q}Ë,3§,Ì5V-Sskγ·8pÐŽ³‡½o±;ÓY¾‰Åàc›°ÐD¤ÅœD4w"þ77̧ÿæ%Œ‘ùÅ$v£µùøßpNd¢ª/LŽeÊñ9æ|¢Ïè½307¡’L’þ”[‚J’C‰VŠ(7!De$û˹ !^F²ÈÊMàí‹ì܈4ÈMˆƒ`¨Å03”åÀÅéÀÏ’ÔÖÀä[~ZSÕÍüÑ+JM77ýwší*šm‡G› ™C8gÐ>—gzù¥ÙæŠL/¿˜-o/ølWñÙ³½—I8³ÃrƒEN2ðì—0õÛ‚\¸6,Œí$‘†Ä6…[ÑÛ)¥î;$IÄÏþø¯’²ñm§»BçÎhaþûÑûjºLH=vÚT6ìdØ“Ÿ…HùY-–}×"컨ß!ÁÓj mŸ •Y­E]ú¿“5 «%7AjèM–Ô¥ã7`ÄPÉO[sÑ ÞÛ\xo;#Þňï|mã=ØÚ“ê¯V8ê±õÙ¢~ö)êÛÃR´ŽÜ DtY8o s'ÙED#cýcË  áløf†¿«5Ú<ïå€ÏÚG0äoá8!•\Þˆñ7L¹/¡Wîc<Ê}æR¥r}OH|GÕŠßë ã¼x„Ã4ëöÜ•%©™f)yþ/}Ãåù7ÞàºÊ±•>s%…Ï^%hí'Ç9¬Û[–BýË¡þå –uÛæ°n‰~—ÁÔ)ìÛnÏ_Y”SÊ_9ðºkƒ°ùuŽÄ„Ąĉzû6ýW …Í×36]¯µo{-Eûö¹ëõ,°ÊÃe/*Yàj}ë[ªüüFxñõzû¶Òs¡kr‰ú\â¹Joe2æ ´éž,‰çUÐBŒ¸È¿ã³`öÕLn1›œ9y8›Æ]ÃEšA»ó®ùó×^bŸ÷.ê7i°¾Ô3Îo^Pb½@„i<>ÙU·‚÷Zqè¿íhð<§ óÐv–($z,Â%úyfÙ06ßiÃÖ÷¹à+ŠY¢çuz—Ú– ÂCÛÙ]aú£VºöÅ+9_ö b‹$ö,’سHÇžE–jþ†t¯›v [Uó’ë2/¸ ;\Ì‚‡'¬Ã4ê;»ì˜#Àî¸Ó(•¯Œ(aëg®ª*ñÞK±`±2¬cÞÙäv*FzƆb^3T+!.Ö4üþZØÿ^ëí?$EA©§vcŠÂw+\{¹?¯1^팔hgäÙëǾ ]f 3âÍχÀöT ­dR1·'á&¸8¹ˆ5þ 4~Ki!=–A³Æ)ò Õê«D©P§tcFmír—Uòør&a½TÂz©–c5 õ_2´U\ñ/רñ¹Ì¢ÑñaWÙ(Ôè܇N€sù5¸%WÏW³5ÂøÍÓƒõ<œïáá~¡ä᪀½ÎþDzÑ÷Ãã‚G ë(H¾åѱ¯ôÇE4è|Új«:úÀ>¿ Ðùi¾ulÌÛçÛ5—0CÁE|q“ž‡ù†ùÃ܂ȑ%±Ýñ} ÊSG±@˜³:µ(Î5XL÷¥í0ñðTd5+q¡Rá÷+ãßPRÞØa sƒæ3>áæç?ž#%€¼Íß Çã:QʱO”Ø4;)á>$” þ ‡1kwŠ Ó@äcém\›ÑüUkÏ:>]8BÀ7"É„jøî§Óµyy—°73lþ±XÈ7«@Øè´­tîB7ŽóZº+ÿOkö^3ÎË‚»ªòuòê-í®Ê׉öɬW³DÕäºúêŽóÑTp˜¨ˆ uP-´@À.0QHÞExUGXn xnB«–o_h×RCÀr‰MÀdï_ÅÐòÞU>qyƒ}ºW'èáï8­ ¿kç_¿ÿ^°<¯Ï ªÂ ŸutÉI¬6bÕ,… Å ðÁ.±QA(ý‚Õ¯ð"àë„|ৈôIc…;φw\qÕÿ¯[‚ï½Â¯øŽ[93ÔÕ¯®‡5Ü,:¯kZ£ÁrßÇo¢â;ƒ©ƒùs0‰àt^cÁ QÃè pë5DãDðz.‡ÁÂåpzsÄg½R¿¿˜ëñ_‡(-ÝÉÎ-v ™Pó*Šlóµ+a¼zØàšøGÕ0þZμâ\┳Zà"+Š*U Œ,‚øÇ"ÔÏÂa#ôe ™5!DÍÐÆ4ª ©«ð¦¬s€ü9üh³d¢êïÇ; V« ÊÊ|€z3QäŒ@×E¡u<:RªžVÌà6g_sE_ƒ53¸°œ??6·bý~0ÖWÝ¢/[_~?¥¹xž8{–qæ³Êe\|6'¤_/Ðtö„qƒ´'¤<«ix` k¸o åM¬/uy Ê*”Yk …~[e)EW#¶½°½†Ÿst:Ý~bòœä¼¯›ÄÕWþ¹þê=‰z¿LDÖAþÅÓÎŽ‚¢£ T­‰xü‹õ"Iç…þÅUî_ÌÿbZÉ¿X/õtÛûµ FÈO `ø­ ¹r3Z£”PdW d÷o¶;·V³M®hr-ç…à»^6^\þÝÚR7ü?§êg“ÿµÿMþ›þCjüCBb—þÝ!õ'®¿îÇVäH?­÷oèß5×õÓs÷qw'þUÉÝSìúÖþÊó“€GþëÔãt³V‚êáÂI˜fC,¸ OÊÔû!‘:ŽŒÂÔÑ+_p93¦±˪à<®¹ù‹ÞÌû¯Þr–Þ:| ¦¿UÇZ ½Í˜3#†’”ëÖâÎuó^ض?ø½ã»˜Yñ.ŽûŠÖš8(º=R=”EòŠ%a±qžÂòŒ7_N/Œ¥ÐOy£¯`¥AFulßùˆfè!._YÞ£‰Í¦€nZßô¶’‡Nî³å©Ló28û:ŹG£0÷Ñ6gDä.¤WÀ‹û¼X;D[—õc¡KØT^¹-ÀWرÚ+iµ—È›`Ç*K jalåÿÒöüáQUWÎLÞ„ Ìð&%#è ú؆>Óm\»‘/Ô¨PÑJÚX ”à£4”@&5³“¬†%uéj„í²6ûý"‹üL@ ¦Ÿ5FÔˆhQY;CâŠ?Vöžsî½ï¾É¼]ä2ï½ûãÜ{Ï=çÜsÏБ<ÿ€!·àƒƒ:Éy»¤#,Ö6º­ÜÉþÄÿf«Îõ>ìèpÀù ÚJ²ÃÑ+¬l)uÆ@ÅAÅHÈðF‚XB¿ t‹vR›!cÞNW¢Nm }5Ø×NújbV9©É^H¯Ç2ÅQ׬Ζ~mv‚)šÏO'í„PÒNè¤Á3Б:ŒÊ,üSòŒÝ¸BllAó{=Øo‡J£0þ@˜ïÇvÌŒ˜<é/!1økV`6Ø—u髟!YžŽ9S-ˆ®ˆºèþÀyKßÜÃiÝ”âòxÀTöIß|¬bÓ€³±‘¨ötÐΣÝ<ƒk5ðÊäâ7×IÐX8D™–©•KïQÂ>ý±9‚€Û‘š[áÍÆüöKòÛ/ÈÑý<&‘ ôZ#©÷2µnFõŽŽLÎ w`šΣáâ.3+œ—ÎVæ €b+bH[(Fúlƒê­w‰rT$…ó䔽HüTÙðlŽ&ÕY©Ð¯Òà i…²"Nø^ÆoEÞ¦w»?ÔœŸÒíQʨì49Œ9c8LÚ,Å–ˆ‹ -"YîfEQ *˜z}7¯Gü›fÒAÌ¢î!·)Hî(Ñ„(¹µ NÜû…×ù"€¤€’ )ú,utÝÂÁ@ý6dŒ“ˆ¾ ÎV°N¬ósÿ–¥ƒEn™•˜7ÏË“eÄï/j%{¨ìánÖœHo¯:ßb^Ì÷]á–”5éVô4c ¶NÁÑ:“9ú‰¬ýºˆ™ é*®ž@Ȫ(¤³¢‰_:„ý…È9&ªÇï¯43ly>í—q$Úæ©÷_ðäÙ|yÿÅëç›÷_ذšsdò ¸ÿ ÷_ðßcí¥·'+(—¥TPt[½èUýÕõ¤´oñsÿ§.ƒø—©q1ߦ»¬®òfÜ‚¼çdÜ‚Äès: ©§‹¬Vc£ßt¥F_•WoFÏH?Q BÆ–°‰&¾C°ËMBÄê»…ü¨ ô³>½@ñ³®Ý­2§»¢D_Us äØÜªí_ÆõÃI\•®Õn4‡½˜ëå ü |ÂuG"¯ÉOé=ã§øc(?=³@á§ûw)†š‰ÕÄæH¤êoöhŠn!bÆýÁ‹ºuR+ê×jŠç8¯ imñ‡¶–Y8z‰)®K0Ú³êhßÜ©.Ðê]i3R£–îÇ“$Ôë³Ìy v,T ž´S]Ÿuêúœf}–<|ñësýÃíS¼¸F"Œ®Ñc3ÿÒ 9¤ë[³h õ6Äó£´{{¦!÷±wÏCØuËö–l€¿Q´O¹ õkV¿IÞ²·ñOEÅJtH†ßA ?#1æ ã0èÿÎGƯæ5¡r Ä£ÖȲÅn‚.'(yÉôÞÄ©ŸåêøÞßµI}'Q/¹©äƒÒžë¥ýäCOgBošBêáz¿tsáõýi’ÔwrR?Qú°ý˜¸!“-Ha¦­©Ç¯ü‰¬L{3²;’Í<>|0¥™GÖE‡éúéÃ6JM€E ~Û›¨c© €ø^·AÅ[üޤø^É¡L.…ÇÞ±áâóš8©ì‡†þ•…“쇮 sû¡¸ß´ÂßÜ~_L|ÞûÙ”%òu  ºb?d^ŒŽ‰pH£p¶™–luÉ š^€üž†$ƒæ“«øüPæï„2'.dþ4eþ¾û›?ª@዆ܿkŠÐ3ýAο;|öâUøŽ!÷?5)Å«_Û›6¿ªFÆ@&‡/ñwðõ>»ú©ì«=©št |‡„fO…­iñm0C6÷÷ŸXîÔÏw¿¯ò?3ŒH,÷¹¿D4ÛÝß?fí+~¾ûû»kàrʼn‘ЯÛk¿à~óþþ­Qö+|hÈ ÿvIÊ^f¿Â_¦ª!ý7掂ó¯ÂÿÓµ6¥}ê‘ Û©t+8gEÒ­àÌ|§z3ÍŠ¿ùNÅßgŸÚ¸üŸFþ´Ø§ïÛç‘ö«7cˆéÿGÁÔþé¶|¿zøýùTœlë§ Ü¿(à½ç6HÀÈÎÄÍ"¡Œ"jr $`d©F0ÆIƒ×g Ø0°Hì´_ÃŽÿz„Ö©·‚~S€Øø9\nq"<;ÜĽÀ½Aû;û¹”Ú_wb–S\ÐèÚPF—˜³3ÍÛM [{©]Œ©ßM‹RR©µN[yemªŸóœþ·?¡}å›q3Z=Ôg:,)¹âÚÄ®åÞDÏòe3–‚¸ÓÒ™HUš2…þ_€´)iJlÖÁÜ­î˜o‘\ˆAé‚bYˆ¯þ•mH÷bØêNö¹.^ôƒp‡L¤®˜6äb±!ï•2(7dµÜKä†l’ËÜDËìÁ Iöá!+Í÷䨓]¶ùGbyŸ¼'«¦Ü“w¹Ì›óô:«}} ñ„â ¤ÌfÕ·O •+$ý"¼ŠRÉàð„B©_äõ Mýb ç Ox Ò•'öIß0oERlŽÁ[2­¾aðlnà‰0À+,.7dÇÁ^ûwxHÒ™E¯Q¤©4²¸4“"™}X…–ŠKVáÁ‡’\qîyH¤Y£ÕئH<Û‰g[j‰g¸øCO,€ø¿NˆÿKÌ} n«[ø$£þ½õ,Ü€﵊ñé 1hbH&ã;§ÖÌL‚ÞŽüò'øï ‡ÃV{04úÀ¦Ÿ!Kþðh,°f!ÞumÈ¡ÃÝÑuNlËÐPùTL¸ äÝQ1¿;24¿;âõá¿;†Ù®#K#-~¬Šñ*‹üèRäÇéóÙçî–[€JcV4d”GëŒÙÑ Q¹òÅì€Ã±¯åBþ­Ü9Q¦†JCìd_Ë¡.ÖaHòxp¥øÈ–ã(‡o·‹ÎÚð/\(çKÿïeX}ƒ*ñ# P®cÚ8=®>wâPA™m€³Íü»ó=/…ªØpëqƒ¯¯bÄk=r¯„§°±Ÿ|«à©ÙXE%¨d• Sɰ‹À Èq}í—-e]ÎÜźì ]ÓÞT…©ß›¨†@£#$Fà[~ˆë¬b{-£Š]¡ü¨¯*6ÍTQ0¬¦·¥<ôå!d? òÚh ­ mÚZ¨&‰ia1ÇøVæð‚êëXõö¶»±ßk£¾§©ßVÞïK¿­¼_å9^úi¸w²"m0SÿåÛÄšYÈÚ¡ÇÀ³øØjlÐ[pÿ‚´=g1"*P}Æb\@TGòQeÛ|& ¾Š¤ñ¶`aûÀ°ZÇà:óm$np/]S¯ñd3½ü\$tœÈCo€¤+ç8¿Ô÷äÝö¬ñ„¾;oê¿°A5~¤¯^–¦‰ÈéG|Õ™?à>Ë%î§ZñwL{œàh×Ð区ž¬òDÞtÐw?Õs`£uŒ•3¢D$iÅŸùýÔg"ôËG ^׺~ Íãlâà]ZïÅ~0Ý¡yÌŠ/?@„g†.î¸ï9MšÄö’œ§Ñn[ ™yheFž@ÈœÏ~N> í­êë"` FÓ½]óXuô”…ó56Ð¥¯^çíEz"oLþ´a¯Ž»iia¬Öý¾+òzZV„A¸¯8¼óX!;꼓mÄ[¢:ƒ+ïûN/ߦ‡wï¬7^$¼‰ÏÿÀbFðÆ·—zM€A5ð4ì×`Š7€GªKœZ¹WE”†Ð ¥7$œ|ìúš p /Ñ- .'« ÿ·ih£Â1ñP ž×Å\xÜê\´‹\œèaN÷Â̼Úý„Ьá3Ój„P ë4¬uC‚M:îÅNã¼QlÒá9v-BbÇߌEh¦’»¶~…Œ%iˆ>˜Ìwxìj/;/Zpçy;˜ßyþ<ò3‰?1펅ˆ„=ý¸CÆ‘$úyP§—/#eêk“kj˜ñfã“Ólbäòàº'kþ:æF¬)%¬1ë˜%«›u+ʬU$€QŠ@˜(]Å[I2õÄÿôs hêçå8_@Q5 g0ßѱ(¸7vy4ÁÖmØ '£" !$  ˜  JDš÷Õ¹sÑ@éb¢Àâg‡:’œ¥³?”~.®Ko¼ÚCð²ëØõ=§aù"±.Å\haúçïñNGQ Yˆnò¦ƒ@ "À Pô|ŶHÜÉ x$à<²D3EhFFÃ’M§“qÁ±½\$ ö§Ë„½tßM~!~Œ=õ`_9&³¨z©‹¦ëû|oß<Ðp9!¿O+Õïãü—š#ÒÖÐíDÝTZ+ÖCË—Ù>8Cò‚ÄèÉýáóñßfâ¿^#~ìmâ¿pYÓØwü ü÷ !þ{†Æž#×0ç"ùoyDWç’ó_>—­äºSš›Ìó$ÿÍÿfùïI={9õs†Ô³™¨§Wq›q>þûÊœÑb”’z¢eáɯT:—öÔþH‚°(F º`Â=±UÈ„™èÈsÿb^Q;² ™0OΓ’ õçú[ŒVƒÉS8R†A'ðà&B:è‘Ïò»a‹AÃZ¯­Ô!À0ÆUar%€gŽ¢½äñ¦&gÉxHØ¿ƒxu3Úh7Ÿ„_¸†zXåcöIÞØÀ‹’(û×5P§ÜX4±oé!Ñ ðANý£Çs ikE%H‚˜­²O™æÏ+Žìj„ã7nBna¡±Yya m”Š\­‘ì’­F®†wâIF®æõsÌÈÕ7pȦÈÞ› 9N!잟dCwbMfÒg?˜ÇÈá‰=í3”‰Uóg}Àûʪѱy¹:Ö’ú'¸-Ÿ( ì?6]Á(}’.Í¥Fü™ëP<‚ûY¬J5&v-ía˜…m2DÎÌ}òLH›µ¬¯…ÛÜ87âïp ¾}a¼^~^F©ˆ¼†wèHíóà¿nãOo™Á&ì H »úÇ‚¿¶CŽaJÍ\t|##½”h8Š)î'¾DBêÄ^ÊÉÌž×Ò³‰"&îcx$e( AÇ›û,è"°áRt/ªú„ [­ÝCuí&@vUñµ±K9r_k ˆé‚e\¿ zJþUf²‰„‡òm:)$ÛpX3íîµÃ„¿É>’kŠÔf]áΗiSÆ¥³Lž“±Ù Dv,j\_dòL[lb°×Á§éK¿ûÏ¢£|ÀæöMtè{·;ó¬ÁBêX2î‚<–Ì p;ܾÉp;„oªê¼åø°)p&P)ïw„«¥ã}º^öyåŽhŸWÚâŽPŒôôÎÓùŸÒ+©#~Ñ©ß+tÅ\¡’2$wºÒ”Üi— ’"ЧËéÅC«‚~úsù·ÐýEö’ÐÑ«ÁP•x$^¤K,ß_S¦ÞŒR¢‘(HPfëjAQ™ÕXG0ùB•e'Zã1F~X@ ú«ËxêÙŽ¼ ôŸJ=y~8zìšJ†U$Þð²w¢§û†Å;ðà ‡±B5]Òßlât8µér¼3Bl¦ÙÒ´‚L†ë`ͬ‘ÝUESáŽüìuíò CÐMvÃPh{èÕCË4nO-C›Ñ+®$Žxä\©F½H!G‚"››9þ{UÐÍCâsó˜óY‡$–âæI¾ˆÏ¸°ØÍô+1@ïÚ߉ÝE<¾ bªþÒèÉ œd#°(·Ïj95Ùži±Y'¼}ˆxlêb§!zð†‹/"V„›Ç¤/ÑÑä±Ép¿&`íÁ4;¾±+]-ðAÄÂòÙÌ_q0ŸöëµÎIÌ|—8'™M“+3W{ަ[îH¸™ù¸^6Æ$ £)Q›µýVKûy±êÞ¤Ú§\}äOX-½•(Ò‹¾é¿&Ÿ0)ˆÁfÆí\)0‘¾ZÌB8-wÙ²ù›8&‹½ª˜sùø1Z>ëãUêqÖÉæ­˜Uâž-UÎl©\µT>kK媥òÙZjc*!¢‹ƒâìSx`¹“8CYâ’IÞî Ó‘iÑßRFŒVÍñòüÔúFæñ”‡?kÇûÖ÷“hËüY >ëôÈüoÊzÒQ ñÑíQù §÷€´ÛPm¯~n–­1)$#\ót>£¯ ª$gûìK¡gCöQñ»à»/«¦rÔÔ£jâ‡G¸µvÉZ©×ö! GM,óz4WJÐ{5WöJ®\‘rJ,%$º¥DŒó/1Jžcþl}¦LðH°£'n¾…ÐÀè¤e$b•±iñ“ÅÜé¢èáÀ¾ ìPôêgtJ÷4æºf°Ì`,. É fFz¬Gb«‡1oWÞcÁ‡E œ&É9 äŒú—ŠÍ¼OÍ!¦Kú¿ðøÃØ ¦ÐÉ¡ÝlýÆEÏŠ"C|šçºÇøÉ¤E¹¤ŸTˆÙø‰ Rü±.¥Çm³Í-þÇïf/¡B¨ÄëÈáÀÓyØjb[u½êú:¨ëýŽ ¥Qy~6J×ì^ÃQÚè=ªýÂîºÁPt1Ë‹#iÁ´‚yªúF©}|·õÐ-ÏDý ½AÙÜq •á•ÅÊu^fЉý=~F«ÓA=ˆCA#jRæ{ZTð؉9UÖ{\¶ÛñÆÒaF=j6ðß¹´M'g5­µ^ªàÖ¾XFÒ¯ÅÚN(ÑÎÉe߈&¥©d¼#”¨ÌwiOéý úOÿîA­T&#çh¡ç4­éÄø:Œ5ü˜ÇÒ÷©æãôri¤ÂèrÚcΘ—f±³ ÅP &ÀcÌÆ;O;í‚™Q;ߟo?8_°¬­‚²åp"¤hÊÕD¾ó´G¦TùO(é0®Yd/y2_ãþk¯cÌ?ƒÉÿZëÙb¯ú #ÇWðÆ÷ÓMñm¾Çáûéé9•Cûùžðød ¿O{xó¨‡òù‡£ØÌI—='CXmBÑŽ=¤âÀ¾ÃHù¡ÀƒË«'ÍX~‚íhq.\{ Çi«‡Åü°å#;NÝž,zRQ»÷:ž"¾ †-j ÖHðÆ¶„TØK Ô„½Ê¢çSµø™¨2BÔÝ¥Œ£wK#DWx}XöÒæ ¥âé$¾ ¦×ÊO>ÞòÅù6¶€¯´WÖq ‘L¿W§ 糄â$¤ ä?}'2¸XƆ//+˜)Æw# kæ XëÀ NÍŸ8O9š¸4üܱ@â'w~îUø©T€úÏø9±ÀÀOHá'¦ðsEÝ¥àgÛÂYðó#…ŸWvjü¼³ÐŠŸSßcüp±ÄçË?o• ü¼YfS²¶µÍÒîÆ¡lÿt†CÙ`~[/ w” £RE\oŒ…V°Y\ü^ªDCÄgDüµŠß“Wâ-ÒïÅí#aäÔåG¶L? ÿŠM&«½0ÓªæÎÜÏö=ÛWâ>fÜ2Ø{èÜMu l9&˜@ʬöžÚÞS®í=eNý´¯Ä±×o(;²F ì§7 ”=%þ=²]èõIô)Œ¸31§±W rCÂ=˜Z}Ðpb9AVJ wïÿè¿E-ÜEþ„w‹øö­àOøT¦Ìʰ^õó1¨cHîLç2JÚ+òÕê¾Pí=‡Ó÷]ïåtHód&œ™ÑRѽ¥2V±(Hß4í3mJ©)WÚ±¶¡Tf¤ƒb‰üó–ççGߢíöa±À~k ‚øJxqÕ]B3>lÔĹn’ìRœÞGv]|ÈkI½ÜØJ…øÀ{1鄬¼‹‰“æ»$'½T .ˆþ¶":lÏXÓxÃÈy쯴;WZÏ»sËyïæzÞÇ{™ïüeõ¼w‚ïB_Å›#âNeÙ‹ŒÑ}ð I-áÂv\:èÒî\¢&¾SY°n ïè#›]7e¶vbuÒƒ:zqéÇå.ÇqÁe — \Îàr—i\lA†r/òZ§K¿¾È¦ðâNÞhlÇV¤ Ç6åèb4Q2Šä,c‹!ÙtôSu[¥L^(uJ–LMœ ¥p¶„(éò?å'ë'P[Úh1Ï-ž™Ñâ%5vúO fåüÜ ì?ç`¿8³0¨­I'üý8f8¨B òÒkîu›yâÚ ³óÄÛßút<±àιyâÑu}&žøÙw?™'~ú3OL[xâwžøÈÂM<á šyÂ䟃ÌyÁ¹y"¹à§Á…Aƒ'¨c.E¸”ಗ2\*q©Â¥—¸Ôá² P°4Ž_ª4xâ™Úχ'”ôÉdZ¼N´^PEd×n"6M…›i;ŒgW—A)©à¯Ã ì’ɼ ô"bÞ§2 xUÀ¼CDÕž¸²©ŒæFœN;‚kmPÿÈ`šÍuDYI†KhDy¢xŠÐƪ4ïÆ\|Ò£7ˆâ¼)Ö6ÓÃèŒp,NWýEÊ+pM{‡Y‹ÛI{›âWú_*ÈóÆeY˜b HvH–r]ö»Ëë9’1ÄwþÍ àËø.T¾œï nÁwyø®ß]‘Ã#«üDäš’qá&xÛA9q¤oX‡\f ·Ëý[ÖXöq?íN&BVo„;V…›T> WT¶f«,qìc7ö/ìÏ+]MªpȦµ'Å¢WÆ826Û°åò‚R¾¸ 3Aqta’o pþµ‹[¡@-Ù$áKñ@ê,vŠh4âû#*é°èQ&ÇzÔ^íœtèÏ¥¥°ç±`o©ÂÞ…½÷nr±&ΘrßQÏþPë±íUã4Vš”CD‰¶óú;¯‘yÉNˆë7DQEéÚSgÈE‚up6Òlg­‰Gna„o ƒAá,ôõ¼KFs9¬;2é&] mslåv“_•ÑvY¥Ý&·Ëä÷T ýKÎ7±dÍ‘Ó×B¨oÞôñµŒ(IRw¤¶ ºZ§‘¶ÊnPU6·`T —EX[€d*•´UeW´UømqEþFE[uN3m%™¶þ´u=h«ƒ°ËiÐV Fk`ª¶n~îÒ›Ÿ5zó³Ú®¿Ë"ª…¢º~Qµ—˜‰ª DÕ 0(,WUÜfU;÷ZAú)‡…¦Zñ>• š"£LܦhŠ~™iŠ*¢ý‹P«"«v‡AV^ä¼W@× ÊZ ÊjÖ«(+ þëdm6eu8@Y¼ÖfÊ’ßSAeù-”µveÝóe—\ËPH¥‘vè{B@Æ! Ë _…`}‚u#냬›r,M¾¥í2Õ¶SµýþÔ¶¨l*+Ge¡²ÍÒ?" n±Jé«,$Q®HBG&n$'Ÿ‡òJ <'Zâ˜rÕêÔþxÃkñµÒÕ§U»úÈZZ WŸQ™ÏºuJÝ¡Ru^Ç`_XCMv,oöñ‡Aß·¢ï¢ï·£ï¡ïÕ€àìϳÇñÝ·ðÝøîÛ9†yuÔ¢¨¹p— ha[Á½t>âÔ#á3øjT*No– »“Žx}¬˜?áIZ¨¶Rä™z¼Ô‡Ã¨ÌÊÔÇùŒà F1|9FþmVŽ”/ë:Žd¾Rc`ËC-ƪ.Gšéè>†äBœ¬´Î¢DÄRqrT p<ØFí#‰Sf…Â…ÏfÌ‘^L?‰ÉF M„÷C®jó„~œ¥œrÌ”nÄÁ°òâöB¿¥¬ÀYÐ8§ä@rY!Võ¡¡­E2`¢úv¹¨—ÙXÅ—®É´SX *=#i®‘6±0ýÑÛ U‘ _‡£‘ž=äTYЬqh-7ðùU1?+,Z“ZºÐfZVヵ [{æÁjÂ`5«ÁjR€8U¶$©Y¬³X'|HÈ›MÍb]&Ý(nì„Ük³ÌbRó°éY¬KkH]ë,–²jH)“†ä˜ü[eTM2q|lÂÿju­ôŸø ¬ Ã1$©¢þ ÜÂÙÑÅ ·ô–¢¥•'¸ÔŠxåØåKoذe¾D’ƪöt£/í6c†"ûš¡:°è†#D»Í2CuC™£R1C}v©j†êqXg(ª¨Í¤öнžŸ&ÿ^Ë?FG$Éè8ȶIF‡v¦“\ ³am0§Vo9äýØÓ^ tüñmW; ttm0Î5Ø t$:!Û`ók°[ÐÑã •J%0éTèH:­èàŠB vŽÉÆ?®«x¸Ü®ü­ÚË^ £É„Œ” Í@Æ^ £ÉŠŒ½@Fq-í jd¤²Ñ¬Ú7é/Ív3}Üû‡¦Üol2ßsƒÌ¸åÕBÊì*+}È`>6»b_fõšáš!Øb*Ó\©´œ=)(»Z"ô”²zY$yÈ×Ï?IøÎ‹¾µòhô¤}x&ž†·#ÃoÕ“†ß¼úívLnKø{¬ã2+õ–fÅ!´É$ÁÔpÇN}Ù  1 ÊHÓ¬SÊ5«Ì€CîM–IÒXìíÇ4ÙE3b7¦É§1M¶bÚŽuhÄn™&Û!>¨TL“×7¨SM“Në4ÙŠøc¢äÉLÞÉ-:~n¶5>"AËTèýѹõ¯sÙ2”ÔHuó©  ›qS7»LÝl“üCº·vµ]Û @wµ+««TYÌߤ:Úfê¨c²ÂÔÅùŸ©‹yÔE2úª.>#»ˆÚ(ÄNwÑft±Ïÿ‚NLø½kÿð•ªþÙtÿlÖþQM¦u{Ÿc®þ-üLý+YéBž8Õ¿&ô¯µõ›ú×cêß ì_7ú×oí_7>è7ú×£ûדտAî_«êß ¥›Lýó¦þU¯p)ËÚØÙ.>U‘?ÿŠ*%”Ì©rL–*! ÷æp«…Ù¥$2 j™–¸½X ø]êØ5@EVPJÊ™‘ó8lŠð‹´›2´"Žå%uTç“RiP,WÉ„Új‹'ϱӤ3ÉÍFq!¥^ä³ Ÿ‰ÉŠõW:þcN#€œ—\Š2FaHç&h¥þ¬O&Íâ×ç‹“$7. ·š,•Æ)YÓŸÊ5êlu(æE1’c'±Ë¥½(]ªb™¡R[øgZ÷)…}C¸äg<™Õ„×¥7‡ys!•#'ãuØÈjÇ^GEЦù±XïÉ(ÝyâÉÍ›Gï]³¹B÷b¹ÞÁ &)Ùd¿? d“qü¾ ’M&9ÚK˜‡3M¨{dæõñéwÿE*T ›Èâ6…Cì :vgò0äÐjç¬Ôçåô¾ ¯N3ýuþºMôGE±.ä³ä3Ã-”dZm£ËÚ—‘ “¨Ödj £JºŒÏ4tUa//£«ÄðU!ÀGü­|&múß¾Àê'ò|Ë’es3¶-º²¶-2ÿ³Èf3±øU—Ââ½>Éâ E.ÍÝ 9f÷šÜ—£ìÉ8ü6œ?ÜkÆo?ð;hÂ/±š†¸-´çØLÜÿpY°­Âá³±ì=ÀvC¶{€íæ¡# çõØð\gÚ.®aŸýp]:?£)\ò´Óå"%j]Ú·Œ‡b&¤î Ùw€¹¾p'öõØYìäÊ BM‡v‘&S>u÷÷(g²a`pR…Šé蜧èêÐø=…ºiÁêÝ1¸²ÁöÑ¥OÑå_þ»ff\(7*2\YmKl¶Ó¾ü2ÂØ:•y}ü?ù«ïÏ <ÄÑ’: ð›~íä8eü`Íøl™#0¹$±ÐͶJÿXG`|–ÁW`ì‡eðUX¢ø ÈRžÙýdDY+=œ¿¨@ÌEt`”\ÿ˜Z.Ø(VɉÐÀ8½ ö#<µûÎ(À8'ÎóçÀ9 pNgƒ3:œ¦|ÌÍ ÿì<ŒkúáãÜrÁÔ>ƒé €ã—€ã(àx pÛ¯g·<&[V^´Þ´#ßõû '^v‘lJtëÅT‡\L%0Ƽ|òY³6©ûfù…³´Å´#þÖ)îYŸ®XÊ”7ŽÞR{¢›dÀ\{J(%‹¶.úü(=˜4÷YgHÐYðÓ+E—ý/Ñ@ô¨ì ýÐ7aÂ0¾ ´í¿ /í¿Îa9ȲÔDŽÍ”c‘²0üx© ¸&çç-œÒR8©3/.M8UâÈ cf¯ÏgôžÉ1’…š%”ð„+xu*øC>5ÄðŽ¿q–OÊó÷“%Ôo®Ôí Ÿ)¡ž0*âjš¬&w&6g|щÄIþ™p³ä‰‡§0ãô`½•âUK%1ºS`ªç@ï€*úAï‚*‚*ÎæðäÉtÀ}SP~uî6ozOž”·1 ä ïçÈûä09Ÿ ȹ€x *~‘5ª4 ÙíΜ°}‹I(œÓBáŒ!Ò³µïà}–¶nÉP#$CÙÂRtøÖ»u¢¯ù—»”…d;~zV…Ï9‚Ýi³6Bbi¹’+Å÷¤ŠP‰¡<)4ñ²F*E‘°7×`)&çCp‰b½èå*¤ Œ/—+Xœ+‰—ïɆJð ³B$™_ €|ð’˜\×°Å…~ñ–¾«uòQ§®Wy¶Óþ ¾«QwæÇlÅx ¢>]Û™- F¤ƒJ.SÜ+ ¸ß…^¥^Æw¿À›—çfÍC\­`WåCæM?ôùÎC%;ÉíÔ$Ç=‰Ö‘Ǽajœø[§Õúô¡%LmyÖéY†çÔ'ƒ.›tr'Â)cÿõ“`ð|PSûD`ð“@[>Ðv h+‚OÁWÁcxóêl”æK”jJ/~”Î1Ù‰¡Ö4íätP+kðkµøˆ‰®! ¥—ÂÀJës¥…s¡”øÛK\ÊÃÛ%9 É&ÇÚi69‚/Í&Ç×@ÅaPñ¶•ÒŒò‚×€ä0£Õý:¤èòq üZ ü  |ynÖ$ÏÕZ&ùž\ìÔVÑAe½é,ƒØ¯­¢$ûüʸZ!«&ƒC¡ÅàÐ 5¸GÊ”ëóüR—i[Yx;?¬ò<VŸ£$äÝ€(W€(ÿŸ·ë‹«ºòó˜2&C^˜üjRq…5ÆÄ‚KÝTQ‰bŒJWbÓÝ|l©KÉPói£Iw†Ï‡Ù™gØ~¨¦-uÖí‡O—õÃvY#KóÃ_Bbjeí0bL#!?Ø{ι÷¾ûcÕýƒïÍ{ïÜsï=÷œs¿÷ÞsFÈê ÙÔÅû ]]¼ÏÔÕÅûyººx?_Wï³tuñ>[A= ÒÔÅûÂ4ü±ˆþ-OÃzfP—§™‹÷%ô| ‹÷7N± 2G`àƒ‰*ÀÌ}Ói8gfî»*›Ã}ƒC©ßÍ–úÝb©_Ž¥~·Zêw›¥~·+õ[oÙœ°v%l¢Úœp3Õ¯JÙœ¦¯ÖóÍ é¬~“RcW‚ÙÓ¾j¸hé“ÏmGŸ}9s*gëˆÕN€IÇïÜÔÏÆŒNÁŒÚ¦rÌ(ŸZq‰nbFxÍ1#¼ž3ê³±¯] ¦·M×Ü|½Cv‚ª"“kÅÖ#ÈÁmý‚¨ T[_H¬ [_(l}‘´õ-DÛFâV¿¢m®ÈzIÌ:Í ãŒètÓP¾a§¹F šdÎÎòÉr¤*SˆB\ÿIUV¹2Ø_®vñØ~&¾‘•Œj|¹ŽÅàì¡™­–úZò>Î<*ñ _¾ñŸYôÃ7V›„¾|£XG99KÂã²àźŠo|[Wñ¿ÕU|ãÉXÛ_Ìm¿ (ÌOº|£„Øé EªzMÅ7JtßX¡«øÆSºŠo|'–’qìÔNŽÁ7V’ôï%¿²ASñ•ºŠo|WWñ¿ÓU|ãïcK^ÉK¦µfp¾>ùËõ+;¤_¹í™«ã¥WÃ7Ä:±Ä7Ö& ä­Ò¿8¾qK¢‚o¬¦†î§†Þ¦©øÆj]Å7Öè*¾±VWñgb]ŸÕã\8«1ð£¯ ßøËÀW>IÌnžŒÍ[ªÛþßÁ׳è/¦œö$JBŸ Ú(#ߎ'â¾hS¡2]…6~ «ÐF¹®BëôDÉZ…×&9x|&ÚpþãgqtÃG¼´Ðnè!»ŠnøtݨÐUtㇺŠn<Ë‹o/ó&¡Æ‰—û{¾:tÃU*T‚­ôÚÐ+Ï7ǡ˜Øéë­56Ñ ˜oÞïPœÈc2t¾œOÅ3 èÂ3q ¼Oë[ô†tNªHk„u±þ ŸÀ? Kÿáº1¬¢êæºn €ôoô«%æ°…d V·©ý³E€*µd”jh¼@|£§5Õ‹û`™B!'£^7Aœøé(8›xt$)–ì¨Ô&â4Šòš$c :ÑbÁƒ@ôfä£ÎÿÀž¦5ˆ¿ø×7ŸÞÃ%Ü^ DƒÏa›h³œŽF¸Õ9,¯tà+v*…•{»ÄÚ¡˜Uð“ôíÖͬ¨KøNÖ&eЭÛ̬{‰z(¯(¿G²Hz(€¸»ø€Ï58KÆÏÉ>6G—Äל2®¡ÿ«¤.À*!?ˆ/EØðC!ð¥Ã$h)džl|é°®âKGt_z[Wñ¥ÞX?à0÷L0d¶ýËC K²„®²˜· #ÎÞŒrdÐÑPf…–›éò/GH–j¨ú¬Õ´"$‹ãtª!1?N„yš„ü;õãquœŸàÞ0)'Ä ï·ô¡iúÑ‚zÇ®&2Sk Õ$†Yª³Af³z¯hÈZ¿.l\Í=øBÂ`Xà¢h‰IÚ8$‰6„4÷Q’™(1ÝA§r†Ñ†¤%Iˆ’Ì#™ ™y‡dæÉÌqzs0Vf¢\fLLòÛ—ë;VKCQe ‡k¼¡øœ˜äÍcn´¦W°³m@ëàÆ+Ð. :Õ,ÔQÄTG4~IqòDÔ{“^“ú¡Ñ¢F±ÿj¥~¨%ýà˜Æ> IP£›ëû]î¿õ´&9QчéÀ¸KtiÓ`—œ¬BXTáÛç± UR£û"‘Àa>ï Ù9kW‘Àa]E?ÖU$ðŒ®"ŸÄºÃÃãÜáß^¶cÖ-Éh‘`4y-”Œ¶Låjù‹C€gã¯ÎJŽ…öÛÄþlž¥Ž9LþÙˆ]ÅÏê*Nög]ÅÉÎé*Nö©®âd#ºŠ“×M‹¶Ò‚®"p5ý+%ð,uX™‚úè«•œ3uŠmà}öhà]›Í‚& …˜í¬~WDí µÔð‚¥†-5¼d©áeK Ç”V[À‚·Ð¿ZBG©†[$°ž¾ªæHàÝɼj¯~gõO†.¦iåom Ê’Ycá6úðGv‘ÛÏ&3sÉÏí‡ñ*zÚí°Õ9(ÁécŒ\¦¢<¿÷n*§Ô tëüÇrJÖy7= ð§ù.*Q3K„‘a1î³óÆÿ¤=rvÞG@¸ZAsúî3²qf^£)´î û $Üô¼æ¡ä‹»+¦úµŠSÂZB+oð±^`11æÌÑ­óEÎúô´š?-¤§?åO¢§5üi:oâ§”šÍª™çaÐó£(þaÍW *²…ÑÞñr ûÚcìïz^c¬§Y5D›-'GþU¾é[ó§ìÚrÌ=ZÌ~£<¨ï È=:Cæ•̉,M¤0à#4à=Âx¬[/Üw§`±€ÍO ~(¶¥‘Et¨*ßñýˆ‘]EÍÕÈ›‹nݯ–SÒÖ§ñ6­©œ2¼®¦—Ç_^K/7ó—K]h@‘ýT™²Iä \sÉ.Ïr@Kî· î©•÷POâÜ·Çp_dd·P{–©í9>lßç2‚ µËôâ¢c©:ä­¡T™÷³NØÝçî.ÇÝÃxãÝ[Žç^6¹ðû&¾7‘¤¶‰ÿaº]Ñÿ¸ÈªéSºÌÆG€=ª;\ŽqçH¾ÈWYnrLÃÉä±OE‘䴻ȼ•£:£;ïÉrTgÞ¥½WŽêìEzó}zs3½ÙOoV[+”S! I¿`绎Y…rCÞ(µGeH‰³½\jk¸Ôšçk_B*<¿)£2LT¶X©L±PÙ"¨8•"¤ÒG¼”ÀvVÍ.štëå¢ù ÉñE.Ç[­…yÌ 3«ë©Q»LÖüÍÛ¶»«Þ…L ±šj«z.VfÆçcDÐ>×5¥ÜÛE”¬”¦Y(5Œ£ô$°S ‰$‘F+¯…Hã8"ÓÈYÊTû°‘=s¡¦kBÓ-Ä›Ô!ÔzÞ.¨2ÍÂ<"ê‚ôuÔtëý«u¤ˆ[éi¡§óøÓvzšÅŸvXªøú ¥¿˜„Ò„ºÝÅx¨+Âò¾…')D>ió`½·SHçPÅ»éV”¶s!HíNòwAB²ŠaØ5ê¢1±HÀwŧìL—Ò·¶ö-ÎýçñßÛ(@Üö ñýLö=Nâê–Ks '9|…Fö¢š‘@6R1 ƒVÃ0Ë28ð}1CXļ½Á‡Œìz¢µ ÚøŠ{‹ÆN+ƒ}–9ØYð:"pºP9ÑO¡W«©WËà{´ê6=¼ñ¶¬Ã\ˆO"ô¤ŸtÐ“åø¤›ž'Xúòº˜¾L}ù,+¹.—÷%¬eÙ=T©FáIWUé-mO³T­„W eU‡Z¹‡9ÜûˆÏU äõ\o‘rüÕ’høÐ9ÆZËÒµZ­ì=Á…—nï­ãV’žöó§¥¼¹Wr­*ÎA“çS“³¥Z—A­=¼Öã–‹½ÁRë2µÖ©@ؽˆ4ï2#{„o ŸéÜhºMBè0ßí€ÖÕS–§Àè7°ás–¸ï‡^i±ŸÃ¯ŒTL''cVnÿ‡&$ åÁup윟-ÃaF28@©|”Gf=üƒ”ËØO æèQ§½AÞó®;+]žÖÔl ‹Ù˜~–zö,1HçZéÐåê|Ù®LD¶£|Øu@`;JAqí¼}ª+UX¸9Â^§³›ŒèMóây’ pœ…†®÷Bá]óó0Eøgw±»óT¿Ÿðr°'x†½›5\ðÓ¶÷œ™p[ONÁÚ2Ô¸wü†Íµ¼—ž]ÁtÛÚ?­€jbþµì);VÚ† Ô{5»È<ªAŽêø ÎÉj"’èh»˜O\ ]°8:¬Ô×ÃNF¹Á‰>z ¥¦ª@ŠLLÁÁlõÏøµ5ÅyòΧ ¾KœÀ½ {$˸ã dÑi‚¿MNp•)µ½ï¶òìX°´yèYf !}+Ç|‹/û¤PÁ7ƒÓIÿ²g2=|%u¬ÁÒrÝ?cÍÁìà×;ŽSöùdF'I¥SwœfK7„Üe÷ç¸lt‡¼¥puêy“ï ig¹×Pc·À¯Þh1Û9ua&*‹£'‡ÜUp5ð¼»Z-‹7duï@Þ"ð«{ˆF眷>ݘX·.FØ÷bîß{¨¤y•òÌÖcžšˆÿ„6wçíiù÷²LVßçç¡E+†²³™â P3&òò*\•²Vwç¹ÓóCÞEp5úü×Ôz&³·’,œÔˆ– \¿1½~Í˹ñ7曵ø£ uYE3ú|ì‡ÄNÅÓ8wda…xÞ ,Ó°¦ž»{ëê³®nê›n¥ ·ÚäÕ¨²i”òñäó÷jÂ~×(&ýõ›ìà i À0È`ñ|1yC÷QV˜½N-޹Ы’pï¿ UÜc8]À}'S7=ðÎþí¨øßžÐ*÷ð4V2µËÀI;#W±Äp 2¸®°ŸÒ­¼=‘)H‰MÈò듨Ÿ+ßñT~g!ëÃÇ! §×î0ÞÇê°¾ë¥éÇ®ÐRtf<Ò™áÏ™˜EŠÎ}Ñp/Tö'Ðön½ÃÆÃ•@wƒõv¶ø(_"िJDç ýIÑ×§y䤩 ‘Ž RóN [âH7Ü=Ñax1l …/­''"‰yBÉB½«¡ÅT—›£K—MR¦=Aî8ø0s6R—/ûÓÌîû¸KÒg†îðŸÑ|E2† 'ÂZÕZ÷’qØîŠçµ\vÄÈî&<âˆÿ˜ ¸Mq»í¦¯¢dgÆ##8!’³Í¿f¼q• €¹Ë£H´j ^Yi\ãÈ wâ.OáÎiá8 ¨Á/ÿ¢S˜sûÒ‡vsè{?‡g"EbÄVŸ”K«Ópw@+î§I “ù ,°“ó)Á*Œ˜‚ÿ˜zÌS<˜I¦Ãh{Ïn8“ºžsi=<>„ˆg슞BìùdÝ“ù¹^èîe¢»Ã–îã»;L ¦½+xnb¨BmÒþ[ž31c· )­é»·.@^ižâ&˜!¯æ÷©}j½ ²²^´N¬?TP µ—T‚oæn«íšÉßÌqr29#@fŸ|áÞ³Ï_°Y¦ßI–~iF·G‹YÕ†Û‘RíÒŒGF‘ÉxÁä2dr51y»Âd’¤{ÙŒ ?ö*0F¾ò±{âÆ™5„M‚0ø ÆP”ü<õõdˆ¿yEô¢™ã ¢ã›©W·â0CaÓ¥j4ä+7ÕâÎ7óY’È0ÕLMn™qÏÖî÷g v OŒ«Ý´k©]ƒR»ï%oÍC•CÁW °çýLö ïÝ̵à_kíÆD<‰÷q ‘âØ+-X@Åý°¸Nüî·ÛG¡wâ¯ÙôÐ*Æ9lœr÷øpÒYoÁH<–¶¨‰·Å`$g¢LÑ×pE¿GÃîZ‚ƒÐ¤,—!rÊ×l¢SŽ¥àÇBéŒ^~¢ÆC3ÂoÀÛ’©À2ð Ú`_gm¼ˆKþVð˜¿]³SBN»BÉNï ‚û´Nfÿ†rA"vOëæßâ²—ݧêƒVcY×çC¤1š¦©sü&;ÊTè µ ?ÆÃO( wCñ¦HÃffô•Y.›'ä3kW]¶–´.Ô˜Òí•gó,HÊ~Ëo.zí˜ì1ÃJ‘8Õsž™dÑ…üúÇ×¹ÔþLTæÒ>ÌU†ßŽK¢<ûO u‹¸[òG ß…{‚ã”óˆûf­.®d74ó‡Ì>[E¾žL¸J>~;Øçhv¢ÂþÁ‡ØÃvz‹±‹U8¢í3ÜØûµ.OëËØ©ý­Àoü‘ä ]¾ˆùšájc0Æ7 PãJ&T ½#J.ÂÝ#,žóó”kF.:ŠC {Á6[£¾¾ \#7v›Ynv›e­Ò•hí¶P#–È&%/.†ŒŠžÛ™ ÍIkⵃ”Å®78ÌꩈùÄr<+ÇÃãäØXÚtþÃt&ÀÉþ´¿2Ì,ÈÙX¹R&5-È”ñDÚKÔ5)ZÉßpŸà!C-Êc¬Å±á‹l&ëÚ`$®¹ŒG`C-ÙKJ)Ú£}. ÂÓ¯I׿+ßß•¤Âýƒšgóÿ^Ƶe|x*Î!1bc‚c¼·šÝ/^OàU§É™½+åv¬1TïùHŠÎcܲ¨ÞwÚJœÐÐ46&ÎÓž€Î\‚j>¯á¹íbt«]J$£ƒìsþ(tZK<¡û… Ì?¬¡ô3¨óF’‡Rµ§Zã…¾ã~îˆKèØ˜Þ…éÈ"4iˆÐN÷Žxš‚–½]ŒÜd7ÞÜüî‚®9¢ ^û6ÉIñ÷](±ù!úÅpü‚CFlÌÛ‰ ?fY>3ªü­·ÁŒj?³_lRuò£lRe‘ß"µà_8Ô±`û6Æ÷–n)ã-‡ ‡jÿ¶u)Áƹðìh|oMl‡ÒðQNœðk‡„_+›“3¬1çàÊpÌÑÔïa%—TixÅ ghI4º»å,¢ª‹ SVù$nÐÁ#þN;û)¢ìZGyjó„÷Áý@pæyPÇZðtÛ³1¸¥ç7Ó95’^uØmÜ3ôÙCͬÔ÷X¥ /Ž7S´ƒmô’i¯8¦YÈ"´kÇb-Bœ°ß½4@5:a„±Y€góߌYÓuŸo0íëcƒ)Ÿ¦)ÖÁ4w•ÁʪÌ©kLß wI• ƒ¬O<;R[½ÖBÑ£D¢@ûìmá- 'cÒ]ÛU…!Vþû§€¬"d'ªIçz¾ÃÀòé‡AÂ)Ä,Üà boïÅlÁ?†ˆ6¹8–9ÊæfG´›9lf<¾¥íΕ!¦ãŒ¹`dÁš’9ôÅ^ÜF/ʰ¯ÛÈóÇ®ÝÕ#a^LIúLæBðšá09êo³3>ÉãiÏ<¦íV’TÃ[X†•axóé*Ëxü2û·„ LIÂQé€Ûÿ1wýAqyþ Ì„‰Ì0ãí è‚áÇ3‚AC4ºäŽ­#zqEeOô¢•Ê¡&^<¹;ôà.{2Ùej“Ý"ntÑ%Êx…%na–M0&$¢BL"jrr.êCb$š2ÄP›ëï÷ÓýÞîmÕ^Õ¥*õaÞëî×ýíowûÛßþ~­h¸[¬ŠÿE»4¶É ª9û§Ã^êÓ ;“0Ã1c —Úu^Ä䉄S p æÃáudìW}0FgÊB´ó˜eš#@ÊgÃ’ÿSb^žóz¥C^KŽÀé|Ïÿ ÌÿËIC'’üþ ±=ߌµ†FΟ64~sÄf»qÌæ*u(Ü;ë¿Ý,žÕ\'åðö‰_¥Ñã;¼ŸŽ^öðYyGÈFõ[÷Ï'²!ìGÏË™ì>. ±-ѸYác€ê5ä–L¶E®!lŽpàãDÑ ÓDÛ#"É1jü~Loû~{Nè.5Oèd QÈ ¬Óø›}‰Úø|‘ƒýßQK|{Òïùç<ŽÉÙ†±×ä²'£pvPEÞrWÜ/æÅeOûZbO7|J£+-½xn:å Q öÚÂZ(¦Ëñ¼÷EYºØø•(eÊɦ©/räÏiú´óµÁkëÈ3刢ôkÙoÓ³ØjN1—An>ÊäëdÔUç©ã%Q¬‡¹b»(h;ímùŒqãgVÐ8]Z¼‚ƉYÝ® 5™Çj¼¹”4+ËIËÈáD“ÔBEI_!&–lв§}[™f›Žú6}C ™Irj>ÝüÄÄâÇ’=‚ Qkç`†žQb†üjÉ iIÌ ‹°ÃããBÖ1i\ŒTÄ?èüp6-~ú¶dÞ+¤º‹D!Ôb0þþ#+£)ÝwRÙ¶6s'Þ½ªIdæÞâ’C‰³„ïâ¤ø#nÙ_¤v¥WJíÊ> *Ô´M±è^ZíÖ¶Ÿ:¦å’'w%v-{¦m€%tÆ“]ªïƒŠQB ‹òpˆ°" DïK ŒBKBIƺÅz¦Qsç<ûÑû–M¼:yán>"6WQ/w3zsìú÷º¹÷]Èöq%bV#{—õ‰.¾äR6BN6>ýžS3ýOKk.ˬÄi?ñ«ƒ²&¬€%–CúmnIÒ¢®žJÞçF½•¼Õ 7=LrÓ“.Oºì—e•Ì=ûªQ‰XÉJô"åÒ#hì=è¥Z…$ï.@gðO©uòÑÆÇâºð´ó;ºð´ó»»pKÞ]hôÞ×uÍÑu—ëºF{×…¿¹Pç5Îì¼_ÆDÃîKåÎsyá´«B!°¦ë¯óh«°ÉVÆ‚¯Sâ¤aKƒÌ®ÙBøwUwÚiµÀ¢¥žÓÀà?Þ6 }¡o.²§¾¤ïN Òp*µ†“¶{öp’žhknÿ_ §Ÿ~×']l8uÍì×Ñ#û¿'{ä—~¾fH6DaDÈ&Á+ÉdÃÉ"öSW84+š6ɼ¬/ #zwÞ0iy‰ÕÉ;ê¤é;™&±(² >ÙoFþ¡ð¾¼IÒUQœØ1R¾ÞѶ%œu™dboügëÅŠs<]dœ ‹ùÓnMÃÃñã¿Æ·è•à•JðŠ1²ÜMK;‡r‰©{]Ïê2·Üu¾)*Õ ¾¯§Œ'°¸QM\1ôjŒ¹ZÒ_¾Íé´µ±6 Ð5 NaÆ.±3ö­“)ŠŽ¤P½ ÛD&+QóúIRö ¨ãy}´¿¤ØÐ´™M"; :¦˜‹rò…–%ÄM‰ÊÄÌMA ¦Ä.L‰¶Ëº<%Z—u½ÎÇx”æFo˜ªÄe]x5êÒ^gˆ,wNªFrú,ù~•^hì|ÃK¥6ñDÏ?sæáý›Î‹²_Wûu„åcü”âF“0³›ÔÿÑŸS§ó*ÍmtÎp"‘¨9AêÛÅç#Q=…˜ZýŠüÔB"—¦„ˆlªhßûqâ"³FIÆ{ªÒÛ(–÷·óNa+.u¥t<¬"AL'¦ÏžxXÌ3¼+nÖ+0S»-î°NóþRl7ŪFS ùN >UõËvîç?™¢$  ·ÆÙ¯ØŒ›-7³[4küÉ1,ý33N‰É8ÁÇÀ8jÔ1ã4q<únVPî5EëÂŒS¿w6ãð½¤3çìܳ3åÂ㘂ļ2+6Ÿ=±Ž•ÇJydb&ëXþùÕ‚–5Ç~SµhÖÉ~p¢f[ 4ÛõÉáDygVP`Ój/S€pC©ZN#B,õBäLÁ™Ë¤9£NòŒšM·«SWV³Òn:iÎêâeüÝùh“¸0ÑnU*µÑjÀØ®vFñRŤXa]§ó±Råt>»FSÇ÷ƒ8@K3þµ$nåþ›-¾4×b ¾+hæâ•›ìJ9æî;;y]f;Z¹Øö:œÀ¾×¹ý·dÿéQöŸ¼~¿çv²ÞÚÅ·þé¢:ìòEæjrçFÈ%}"ƒ$ÅoÁb½Ÿ/HÄa:žC¯бš‹S;”Xô“§jÕѼ¯h9z·÷÷N›© fÏ…NµËÆSf™Ž`ÍzêML­#˜ZßÊ£ÐDÏ9ÞWÄ&½¾TšX9“I£›'§ù´Î² Pç-äÚÑ~Ð!PꆢÑÔ³7oØ1~Z­÷yVl©Óa¤Ì8j«ßO•løÂáÛüðyS«#uj`ã6gÇÙ§hËËÀÀÌù³½‰šm¿¬ÙöËMÃdMÃëo“ë"R6û³ø6W‰õp;•¾4þvaVÜÆˆ^Æ»üù÷½Th©¼X¼wY­²;ßuåÓø@‹¯Æ3 º•´'æq§¥±^¹ ™À¾ø„[ð¥¿+æí+nc7ýN69KQ+e›ø7Ò„3GÔ>A1E~uýÝàF²­gf{5Wœc¤H¯N™ÈbMÓ û]ð×ÈGÄÆ¨¼yVy‚ì•XKq®j˜$U‚$ôgij©è¥õîDÐ*—<+1žßZÀoä$Ò¡,¡¸ýMz;ñX¨Ê0\zjí¡Z·ïéB´…J )¶ŠÆ[ û•Mn2sqü LØÀDã ‹ý´ðɆ}‰á óœ¥'ûó>rœ ŸÃÂôQ¸†bï5?fºÄyÌt‰ÃZî™ÑöŠ/mO´XÞÒÈ›bõð^!Avþ£±1¼ÌÍÃÑJWÎI:{LéÞб+oÈ1Sói1úÝÿ¢ßOÏSý÷ÿoèé|\ÑsêÏAÏÃ;þé™8š‚øáê*l4ÄÜòͦ¾lØ6_65CÎ0M#Œ¥ØŒy†Æ­HÌ™CæœNù6OŸ=^ùŸR67 µÎq[ÚtŒ [Û9§¬Ó:`—u.ƒî‰×1^‰b¨- #XOè/ßæ9#*wá]É]ö] ÝÚ"Õ{8»o†9Ò66Y Ie3-¦S Žì[Í,­ÈÒfšÛ´!K»™¥Yè(hHù6_·OTþ]¬ÞAfD«è6-Zµž“7÷ǵʮ ü‰Ø†EVé•‘*½*R£¯Tè5õýäÖfï–-Q—¶ÚãÞ2ç¿úéuÚ,ÿ7æ•À+5mg£kPü½+MÓ‚b¤]IV"¤ÚîÒ_ÉIGÇ£€1€8˜œl»šKo¹š§€V‚.½íjL€@'  Ð èÄý€¢%¢Ú™¨vPü½[T»\[,þÞÃC´G_±„“–Je€•€U€rÀÀ:@ P@[ш¡«yÆ9Œ:ŽFcp0 8 ˜L´E ÎEü!÷"&šgÈw@  й€|@ e —Ù*àuA¯L²¦[·£u€N@ Ðв¸ g×ËÅÙ=YüÎÒé€L€Èär™MBj[Èe6/óZ­€6@; †fõ/á*  Eƒ¨îà0`p 0 €€¥ !È_òAÆbÀ @  PX X(tÞÀevÝÀÍì¾Ëì¹môƒ€!ÀŠÅœ½d1W©t1g/[ŒïVÊkë€J@`è*.óðU\æÈU\汫@ÀÀœLN¦Ó-’ËÍtç‚CrÁ!€ Èt¢™]hf7šÙƒêÆý€À l à0`p v#—™~#—™y#—©ßVä K…€"@P Íæ2Dz¹™F6—y"äœL¦Zƒ3‡³»s8»'‡³ûñ.H¤2:`)ˆ\HÐ¥ÈAP°°P(”VVÊkë¹p‚´]“ái»6º)N6°¤åÉp‚„”7#åR#å'HyK2ôp°¥¹•þ*³¹éx} ýAg}›žõj*yõýlC†³ÈÒz~$6WVüÕ¥ÑÔñ rsBV!p¬QÛ%Óní¥£)V|%?t$3tºÝ€žd:4ãȰÉì'<”ì*âûµ9^#.bìµ¢rÛÛVÊ«·êyÂDMÔub;Œ%c,A ÕÚY€¥lú¹˜Sß°ñb™ì¦’ãH3?=ÈŠU¨‚Å>¶@i¬µµñ“ÿè`wù÷’ßtWFm†{ÙÞêùã!M“ñÉÔÂÿc2êMj#‘f HsO#ÔÜ”À·ã²ð@°ñrñ’ž†‡©j” U›t™ùDÕúÉ ¤¬ÚUµµ/ˆªÝ-ª6¡m?v¯¤G Ȧ֧v­”—¬­_SS\Ëþù³Bªv¡¤n†µIoJ0uÑ$ðí¸hy£ÒJ#HBÞ$Íüô ë ¢,خݵ X6à³%ølúkJ4ðw×ã³[@)ˆ‹”Àü,=£ÏR|Væ§ò³%ò³×«Ï‹ÏŽ_÷ˆCÐbj&-’ÇÏiJ?M}UÛˆªMÁyúÑ"e`6#Ä- ¦NÞ¬=£ªM'©ªÉüô@Vm£¬ZŽªÚK­6м€ÏNãNÑE4R4‘ý–LÏè܈?,K òÃ/̤Iøðøëpe™)äÚH‚ÅO\JŒZa…gfw7ˆ`óþ`þA õ¢qòõÿžÞ#àÿ#´‘H-ß} øÆ#=Š ÿYÏü¿-Añs‚™Oò?.øÿ“ÿMÇßßÈ3Âå^þæ6|ÎIfª‹Á!- ·¦¶i¶žÑg) >+óÓ9#pÁⳋÕgO>/(xìaÜ‘ŽœøÐ:A'8©ì¨'~ÔÕ0ݾ‘;»Ô«)wÛT9â±µèl7ˆÓsºm]Ý"yÌíV]-óÓÙÕ\°è굪«o¡Š^ÿ°CFÁ¦6<‡¾ не‚ÐQÐÎÇA±6ÔÀG‘­ 6ŠÑ3¢X›ÙQ2[‚I±×$ÅWëyNTä?×:Ì…"7…v/ä†ËÕxø®Æ“ÇÌÓ,ÿ”Èt8¾4…K)L±üó#ò9N‘ŠÊв§xWJÞuAi½žÊ®”ÄrÖ;šõ²7¥ƒ¤Ô$µˆ?êe§J%z /IÃÈÅ>’Šõtu©#Sùeàð5Æ¡Q—¶ý0Ç:¯š?þ;s}Ðë2¨ÙÂaø¡(+°œ&D{ô"zU#VÙ¹Ê*ß~\Ï!3Ü‹‡SpÍ{}´ êÒÿ–2’ž¼Hßy9Rúwñ ¶Šî§ ¥¨ëkO¦pϨÆïßfÅ*?°½áo}õ‡‡|“Ž»‰ß -Ö¤¿(2'Jt>Ä=ÑÔ•m¾S^ôGÑÍfo“k‰ßH†Ô..Ú©«‚8¶'ÜØ°£ïi¥û¡—¬cM峯!ROJ›å®)’Üû%ûÅ ß SÄêµQïuébŸœfD½ï 9A7§¤å€ùhN§f¿з#ž¾“¾&};¬Ü²Qü Ѩ|Õ¨ŠgÞÿ€C³ü»›,"Ã¥x›£ØŸ‹G[èQ ñͲ€«™YÜ'OÆ©Ûî¦@8òM¤™<ëÐV_slkÃ'¸3F$v¡íi´æ(-«M*NG·v¡[ÓЭ¾ 7-ãiO…H™‘á Ù§7ý•u z¯š© éÌ8¹‰ñx YCÖZó0 ¬T­ž×š × ù3é¢R*Cm2åÕ&»¨EÏh­‰™¢–ÌS¢–ëêz^A¶ú¸,¿›¿ÒNRøõHÀñh;V}¿Û¶‚´K)œ’ Çe~zÀ+ˆwu=³ÖXKÇHé'’J_!¹ i?¡Ç”~s¤äš#EŸgæ“LU¦ŸáV`¿Ã_¤£§±¸3™v_pü3^q¿Õ+Î^ñ€òŠE ¦WÜ)_$ Eh¿ÄàÍ"HÇSbšÒ[À'¥ŸhˆÃÖN€ou‚ ûIîóádŒMlOsjd:КãÃùF?™`ÄÞGy6®Pž‹<ÁJ?H*ñŒCóÿ†‡ošq˜‹¿ªM’¿y›>‹AÕ/i.”^}<ü Ár³.!hyÀ$¾ã=—ÑUíü]6»•.›ÝÈÈ1xÇá Œ¦Aš>‹+>NCÍ‚˜æ9,ÓÇ ÙžVQÿ´C ãf#5I‰ÿcؘ³Üàt´º?í“ ‹©ç M] ;{1u͵N]ÅÔ5 ¦®¢~À£hŸ´’öÛÍ¥Ž!Òe<À³(N^DZ,:#°Å{žc|òóo¾áÁ¾6ɘü %B°ñ_ü_{\"s±T\Ï8-Q~×½ç5²£4GiA#;Jÿѧ6²Kõ5s{ù©oà`-D=‡Ÿë¥¡žÓÏf‡õÍË® £4ŒRÚ-¥s9ÐN•€¡†Kä»^â2¬óŒ?ü¶úKy ¼ÈÏœM‘bpÚ¢;Ý#(Šà5 Öˆx_ûÎà¨OÖà™iZ@™É”H(ïÚåâ{Ô¡cAèØ4š«M6uŒ–þ¤ŽÕÁ5˜†Í®MÖ4lÏS©Ð°‡Ô°‡®aÜ·^jX]²UÃ:XÃÊ¡aÐ0r›¬K65lâ¬O¸ñUiØ:n¦Ç a§ª— aMà l¶ö_ YÍãõ¡_?†~•`PK2õ‹.µ“úuP,ÁêÚX’¦_%8„D¥B¿J=R¿J=º~QCB¿š¥~QÙ,úµ úu9ô« k‡g’Lý ’gÀ[™uíñŒX{ ªµGQ?è±éWЦ_—Ûôë;m.ÜêM]e]*Hã‘êNŒTWòhä®ÅHõ}þæý)Fª2ŒTk1R]ÅßrîB½¨W‡zWûM¯.Ux4ª;¯”Ý)·ÍÄý8¯žUÖñõ×B~Þ{ wAè]="Ò©F?È„è[તbïv½‘¦RèÝ5†Õ'«z z—ª1”Œª<õÿ¹cà «I"z"ª€ˆ6@D+!¢ÑõуÑ ÚM¨Wé7ÝL3ë¸ð‚©Q>X)OìÄ×î”úß}Flã™4>#þ5¸1{¸ý€‡àÜ?`Ö.F”Éà§ €Ǥué¹B,=O©ÑAÔŸJ²ù 5Þ e˜"e¸¯2œ^e÷šÐ×· ¯Óacèˆ6¦6&]·1 ÊÆø”Iwªz }]ªñy‹äs¡ä3IðéÐü•§˜Ï]à³|VÂp|‘dú+tÃ#ìÊ#xÊÂ,•‚Ù*åÒVzTåf¯Ð˜­³9-7µ€Ù/fê³`ö0€2¦án€2  L f P²ª—Àç•ŸØ ÷ËðyVÐf{„­Ð>èh?´ Š@ Ð˨÷¨ ïkÚjÐâƒö/tÏÈk&8F¼Gwÿoù>oùWA>ò¯üv°}õC½~ÔÛ¡»ôešn”vZ¹ô¿ü%\ú)ÍJsWº_†›a‹_²†0,nœLu1†k€aË‚áazÝ(êSA†¯Òº±ÙÖŸ†¥ý‰øã«ìø8•Û•ËŽéR i³s&>ZælÌ- ̹ ÌÙNU9AïVh ï²îw5³L>Þ³»Ál-Àœî2N¤™ŽãYµ:Ž©|Ö)×zT½>¯ÑøÜm3:­Í೪z|ôjøØ«ácŸ†ý>¢:>®ÕðÑkÇ»Y⣶zn|¼¬áã 4|ôiøxUÃÇk:>Ê5|¼lÃÇ=;€ÕÕsâã ðÑ3Uè4ñÑ'¾ÃH—u®Ke¼ÝD™9Q¿Ç>×ýÖmøx÷1Õ³ŒoBå|.f—®Ê•øÈt™øXÿÐçÒj5eËT€ö¹Tå½»NcøM>üAï*gÁÇ)0{Ì̽Ç¿Ò쎋t÷*+9U½>¯×øFmø¸.|TÌ€As™ø!@ž€kŽÊ¨CỂú! 7hÝø‘­_l2ñQ>7>ÎBå¢pYJ,>_²‰ø-QÝo)Q~KŸt4YUNл5†ÏÚðñçFèÝúYðqÌN‚Ù|€™®oø˜-„4›ã|ÇÍ Ç… Çù.U/Ï›5>'%ŸêjÖ•‚Ï Ÿ<—ò~ >¿Ÿ¥À1¥+—7Ñ”ÇýÀq©Žã~…ã2…ãR§ª—Àç*ϯ%Ÿé’Ïø‰ø×ÍÒÿž&fua·Ò‚!¹Èe²Úfñ¯‹0.·èãr‘—۔¶xTå~«5~™®ÆïŸÄäÙïÓÜ(ÇMr¥«&HÿÄý§ijšâe0Ä/hbˆ_Ìßr.lbˆçò7wv›†<þæÍA½K24ËTªY&jT·L?l ØÎÅhx1ÎEÃ4œ‡†—€¡KÀÐÒ ¨”°2Wˆà¬ 5Önì>»Íåÿ’­7€ö.E{KÐ^>^p)ø(—‚Ë2´ð€>»T ß%…_¿¬ š8޲,ƒß?†u.:/ï}…ÞVân̺NFeGUëd¢þ¨¹N6û›/“ož&ßü³G`_ó¹Óû3ÏîÌkiß1vêGrX†»ùó”16Dr|ôÀÇiOÒ¾þ¼Sá£)„cycæÀÁ¦Ä¿ïø=¼c±‹y¤ëÒa‰ []o‡™.vY$ˆ%9zD¬¢>$ÄŠô9È÷ä;zä;&?¢ì³·H›‡<ÉãÈŠ&GVdp3U0”IUŽ#ÕÊ¿GyO©ÁdL,%U+["©vÚÝg^!ÕC &ÿ¼6¯xöøÑJØ’ ؒؒR²%i€R'ÜûRˆ¶C7#¥ÊŒt*3ÒáQõÎéÞWHVÓ$«¯l«Ù¶ø‘p_nͰº/«3¬îËš «ûò“ «ûr›n$~¨‰[mFbé?*9Çü·&Ãê¿Üžaõ_îȰú/wfXý—Ú «ÿòÓ Í©Ðt¯Fêž9ÿ}ø*œ{þ»z7‰á¼ÖâßOÁ¿¯ÅH6iõïk…?¥ÜQÊî߯Ôúq­Må>Ýlú/¹ç¿ë¡sep º,þ}ÐâßwÁ/(Óý‚.å•_PæR•Ïé7¯— ›óßÍrüJ×Tïn£ ×À|×£ óýºð6˜ïÍèú˜ï‡uóíÓh×ÛÌ÷¡‡ ô¥Õ³âóàs dµnÉ´%V°9 ó¾^wK¦•[²A™’õNU/AL~Õ-61-¬ž¾9QH?ƒBÒ:i;„t/„ô„t„´CR†F9dR{=(wÎÀ;ÚÔ EaÁ*È‚ÍÞ0,X…¸­C·`Ê‚õ) õ¨z Z¤G~$ŸjwrÓl«¸¿rXVqŸ3ðÚëfTÔ,zõpØgt‡½^9ìuHt&YÕKà3Sãóqɧ ˆ‰Ï¤ð_"þ!Mánôåzôånôåýè˧ї¿@_v¢/@_>£÷e–ıõåðƒæúgÄ?}s"ý ÿ,è?úÏþ&ÐïýzÐïÖé_ ÑVÒ—‰•âåýZíý7ô7ƒþó ÿ0èïý- ßú[AÿØúGPïE}¬¹Pkž·5ol$éž±œ’eHù@ø%~„{A¸„÷‚pïÓ gk„_’„]’ðU ¼n••°ñþþí ¼„á(ïá—A¸„_¤Â¨w@Ïr´ñl¿ÏÜr<{cƒÏ,óñ”‰õb†Á@ ô0ð*h¯`à ÎÀE}’y’å‚ Ë€j®OºÛàËõcLmÀ3â1÷‡„S‘i°Æ”GDL9¤†(Q?d)_¬im¿Í²ìz–eLÛ‡ÄÛ9†ž‚Ñ»!¿7!¿§!¿· ¿NÔ{õžA½!]~yšüÛ’¯~ùuXå7ñsy¿^Îs ô»@ÿÐïý£ ÿ<èÓé_¢Ñ?b›j=$è÷ÎA¿ôƒþ  ÿ.è¿úïþK ?¬Ó_¬Ñ?n£ÿÕý _>ý½ ô÷þû ¿ô?ý(èèôýö÷ôsЀþo@ èÿô—‚þ‡ )èÇtúK4ú¿±¿ÿzÐ?{³?´=†ñó ðsøéïAW@¼á…Æ÷bBš‰Á¯Ç: ¢2ÂO¯ò]Dý^û4èR ?'%~¼?7®§Eô¸†žZzä;ãLOúk‡8·‡Ê[½ƒð¿þ£v ÞE3yWÂÀŽøÍð.bºwѬ¼‹Qå]Ä<ªžµ¹q¹/›‹,Qx€ÙÖŒQáÎç*gAÔÏ53JpÃÙ|Iö•Jµ9O’SnñÓ­î@ˆÙ ‚­X´1²ˆ"RÑærXÎ?ŽA>-VÃ8& c›2Œ¢™6Ó0w¥’»ôÊí Þê}ЇéÓRPï‡> O}V} }êWú$ê÷›úÔ È.•dŸº sJeqŽÉà‹‹¬“Á—Y'ƒ½‹¬“Á½‹¬“Á}‹¬“Áý‹4ìåkØ#ºíÝz/°×e<ö76C^QÈë,tn•”ãWÁ’DaÏZcÚ"¦Wº+êÇí1í LN¿~·ãW»æ/¡3¡Þ¶cìà"n"ÐÞ+éÁ¢3àçÏ×06 <ãB¥ìùóU½Ïø2σ6>/[GÑ´ŽGšÈß§P"E“sWR—‹í[¥<£‚M“"ØÔ¥‚M¢‰.—- ¶L ¨½!ûXmLzêgèãÍ?©”öUÌù£¡ÏEóÍ9ÿðPZñP$ð0¤ð êÙík¡&·ãRnjÎÿù=vûº—{·½û!zw ´‡,¨pQ¿€…èÒ-h² _(-œò¨z ½ûw—J.³%—Ìe©6‹t:åŽA/8ÿtþ:¿)SŽÑSËE˜‘R cþ€"xLõÿ1P-Q‰WD+%fânÞèÿåàm^¼èVÒ¼ÛA<‰j3Mš·Ä£Ó4ԮתvÓBí¢JíDý¨©vܰAv©${èißs•Ó¬¹.“[F¢t¾€ÁðSŠ<4Ãz‚JÑ}#JɆª^B÷ý½Ö}LR @´ÖÙ• !%¡d7‚Ë(YŸEÉ) ½]Éú”’ÑcbríQõ¸üË%—JÉþt—KžŸ!¡ŽjBÅbÓ_Áî}`· /æ4£®|½ç‰Áè•éF/¦Œ^P½²ùªjÇEÇ÷IŽUàõ»w‰õíYÂ+ ¶3«[Áj?‚uó © ¤€ÕŒTÁ>©|¨±¾ß¥ê%ðùmÏ­’Oµ9®u-ø¤s†>»Çÿëb'=9-Žx8>•·Á¥3ÛE¼—w}?ô)ƒÒQc“ LšÄÅ#í7éÐwìJñ¶Ý„GZZ¡ï‡rù‘f´bÏitž“Ï…%Ñ;÷}$·SúMÚÎÜt$tq;¾µsNNœ lGbÎs"ïýâN<׉4Z¡óc£˜Òv¶vrfPº ¤ˆàÔœ‰ ô#&'ê !Qç°¸š7[¬R¨PêNyèWqž#§¡9"Eè@w*½§ê*²?w‡¼Žñ}SŽmº$¡Wçzs¤$=\ã`¶ùûñ‚ýyÛÌl™í•DîÑN0³¡€gGMˆ•°õ–Á&:ÄÆé•ȻϤùÃ$ jÅn£÷— ÅÛêÿ8›3ÖðÏt¶²™ ³•í€TG¦8›×.éàG\íx¶Û¤ô5œÍ©“Ó ¤½5ÏO· “k‘‰ó@¤\çÏ’ß)‚ÈûÈäw쀽ô8ðS‡tC†wω‡8g¢3üœnˆ.Ì@Zœ ÝÃé†*Ù2 ”+—ÇèµüønÇDå¯áSEHÕÕ&D>Ún”IW!B–½`1 ðóy' ñm¾ï!äŸcËB\é+ú2Ñ©™âðeŸ|¤ŸqµàÙnSGŸ™¸ïš?‘xßNý'ÊDŽ'KÛç¹g3çÊ=3òsÈÛ<ùy QµÊ’`,'íIºá*<œ‹x¹˜É˜œû–ܧO-‰õÙžñóuÁûÛ¾•”áFkpe¹¹øJéÒ$³á…ZÃŽ‰ EÆOÒ¦ŠŸ8‚.Ôñî?­!u!"-†Š,K{oÕLß>Jë¤åÜðpÊ'R¬¶Æ'|ðŸd&šcRŠhÛçõ¾½†/õ¥¶;oâ­s¨éŒ3å-1Oj»8&σ$$’ÆÑÒ7: iãòÞÇ.w—]ƒmâ½&]im6þXÚ'6ÌŸXƒõ©v¡.Ùþ+®ØHÒ%ŽKË­Ò()·KcÔBÈàY§3‘ùÈó±‰qn«öÀÑ/ºVëòç8]^áµ,ÆNîÿ±”˜¹Þ־Ф¼*¯8GâßÎçHÊáiŒ:Ís$–ûæÆœÊ?ñ³´·yš¤.•.ÿhcl~Lˆÿ³ž&¡æ"þy„¾ÅŸå½oö»Oë÷dÓ?g³ }štùè¿ÖÁƒÂ€³‘l‘¤ìlœô‹/„· q8x¡yÜÞãb¯g!ßÝc°±­ÕÍ©½Z§a}áíx 'FîÃrYäãc:hPOÌ”Ï$Z2ã#§Á ™Ûkêú„Ü^îñ­ìÁ‰ô^e1ñÔHÉeIïŽÁ7¦¬I‹”oœ®|cnõ„Ç[Ó{Ýaå†Eu†Ó1¾J m” 9cW(pk7;ŒI‹ÏhýP!út¬QQ¨I•ѤgDMzDýsÒà NG¡t:Ž­t9Æ_ó;1óYh5ÑÌ4+²â‡}Î9÷x™1.t3ÞŒo-&&ÃСV »a¾Ûšý\uwì¨Ó¶2Õ¾õebôUyäè¾*N4/p•éOÈSD#oÁã”Zt>öWuל5M»étóœ|¹é!Ü%®¼ô˜‰yR ª;²˜jº©ø>3%‘ºýRÞ¯*ö`RÒÁgv¼ô`e:jú ÝuA2·Gþx¡áÞ~v1€SÕ]ϥ˼ôià¾QÒƒð;iNv‡ÄôÉi¡ocôãÑ´§Â1§aT]Þ£´õ|2@ÃãŸ;Ù; ²wv:‹lHsýŽ3YÜKTÆnoøÔ—'î/—p¾˜ß~ù‡ðɼÿdÐ&¯?ü1ÉLÑb¹r.î ñ‘óx–P" ²lX.]kLf±þž?pµñâçÈw¥òXÚ£´í"‹G©´©ßLI5Ųœ”g˜ž4ÝŽ ø­¸c:vóâÿ_Ö®?:êêÊÏÏd"3Iºfj˜I`À„PM5í†nV#0jXãnÖu÷P—Jl©ͱ©¥'A3NF²»A=5U²õ´zJÖ“³‹5`wå×YƒÚ6¨U´´éàW*²ïÞÏ{ßï{3ÈQþÈùæûï÷½{ï{÷¾ûÞ»ïsY¨#nü|^éFQ|äUw?þ­ðÚÒÞó[WÞÎQ’t4HrŽz‚ ]|}äàªÈ‘¼¨“ ™âÜcþe‚Ç_®™‘%$‰DZÒbhÞÚ499É’ãŠÙ½“¬NÌTÃÂ$²ÕOïJûÎCU²4>o¿v/WˆšÏáóâ(ÊfLMyp?¼«½,þÁ6¸GØóa‘j|vç˜SضgÉhºYÞÜ}÷¹½èÆ+Ôƒ ùàz=QHOØbŽü$® õ`èÆa7·ž¼¯÷)Ý,?„~ÔÅ%Dp¡ÎtÖÅ(fÜow„ ¨ø!¼=.¤ËijE®/ŒÖœïs÷.ñg%x?l¾jÏ’›ù³²ÞK¢ Èo*ù7å7T…X=òAt5z04¾?´J —#Ñ¼}̃ó0–¡=³˜Ô»{ݨ¶ÑGÄG´厒éOûDïaª#ßç\euà*Ô]muàjÙתÌÅqf:û˜EtàJ´ÂÖ½kâ«ÈwY*øþ½’š¬7R«¶~·‰‹¢aSV'¬‰£‚=RŽh]片[î ÅèaçZM§¢ýÓœ•¥`ÓpPè;Éö€¬>/°Fe°°ßHØÑ‚«¦X‹·Eùl+"žKX6U–lªÀoµ%›j)› ÈQ2ÃÓä…è,GF®a9îÏÛúþ9~W¶vAXexóÄö'óä6ô0¨lü4k¡ïÍüKÒðV²ÛNGäÓàÇbÁ™[øÀya7Ð9O~4MqŽ}àü-¸)…pSFনç…pšèé¢#›æÑŽ]ŽêFôŸ~àœ ’ñoo±_c;êò Bä±ç:ëѺéíÚÞK?0 I`·r¿ì¶›ýB˜úø®Tøµ_vþ—_è{ I1¡Öx<ôº‰P²¾ LâƒáÚCvk±ÝK+9Ø­Àn-vÛÙ.ÝN°Ûí ½„TSœ¬ŸÞ›k!°€hlÅåü°—0]Ãeta𵄾¶/UâRK-.õ¸4àÒ„K .ëpiÅ¥ —\6—³|ˆ(j†»ÿ!@™—Y†ç¾ÐQ~Òš ÓŸŠ®õ’6\HIð±ÈÂð+3dÓ\õ잀)â’ËlÔ³2 š-´QÏõ¬R¡žíÜšQñ´êœ\ÃuÖ“NØm¦YÀ)žá±¯zÆÛvIâw*>Z“ÊËܪƒi¢¼ðØ <Ö†jKX¬a!•c±ø+d1Ê(é±ø³¿ÄÀc­ášø_­a`¼EºžóÇ‹ÅÏ*¿0›žà¹6?ë 7†ÐÅt{/uýÖFiÙP6Áâ7‡¤~7aÌnfû]`&ŠôóCE±¸ZDƒN Å+|$Tùjæ°%mêc²tvÅ$ƒÎ6Y– ³¶ÿ–L±[<—oЖ²žoþ*c‰Ð¨óŠgõ Ýò0°ƒåzþ¡`­ëºz¯UÜäÐ]á$µ«”ÜQRA/ò }(¢‡¿—õ!龯ÇhK¿.Ú—÷$-˜DQšZ7²“ xuYŒ¸ËXë[—[óûÖV»?©¢¤-”j©íµCÂâdûh•=ß嘆¨ã) [»Ý°ƒéŠÀ¢ =„U§p¡†¯HׇV¡­ájdâêúP±ŠÍWGHv±*࿘_‡Ðÿ*§¯0|%tI¬ˆŒÖ×F^Û39ûÔ¯KÇÈA ³M«¢ËŸnØ0évž^µ$ò>^'ðEú%¹á7™ã0°6)¡Yq˜ûní|@ùÑ\ª ÌLÓ…­ˆzÅãHœåÇï^i"±0‚\‰QšÛ\o§~.¨Ì—õ—ˆÊJP(ãNè¤!„¡(È –R(ªêS+ä~2ýOn;úáæ…¿'ú ÝÑ ¹˜rÍ…°²CI¡ùÿÓî6¥C©ÛK ‡Ú”Òyl‹ Ðd¦ ߘ¡óÀ™*H3¨éGX ñW­‰kâÿ[Ÿb-S/!…» ßÝÿÝÿÝiüo„/þC^gÉG•Ë9M½ËIsYþWÊúj™if•¯qÁ{ªQ)˜ßÎ ÏáXÀ×ÎyÊD9<3#ŠüSˆb`%,ë†põ Y›¹Ðš—¸ã¶†ëâ½ËSpD¿·œ-u¦r½¡tOƒt¤WÀ»Šf2GA°Ó.„_8î^ ;“0ÞL›j:Îç…¼„#˘Ê>|ÎÃö'åã‘ÑZv#O‘mïZ€)mÈiãö-à oAö„{°¿GNùAëÛÓ´G'¿}HüHQ•ûƒÖÚHhœüÂ*à<…©«OÈ…ûc²³5ÌAZ{=Àƒ|g–òô„ ¤+s-JÉ^à“"IçCÍ4ˆö@Œ´-ØÜV …$0"²Löç=t\LŒ0þ¨¶··[Xj‰6éìÍ`5‚Ù†Õ¸@°GÃ#Õ F°Ùêà é\aÀ¾Þ°ßM1KT,{qCðâzàÅI/н¸>xqÂ[^Ôô‘¶p•ÊH jãÕˆ òòà{ôÁËûØ‹þ5x8‘`у™À¢ÙÛ,º˜õ[UK´åÇókStò:n¦§©™\‘O/¢~ŠŸ ñ¿–/?=­”þ¼ >þw q|„nhÅ3¸ã^º}ôHyÂÒÛ³šÞRæµ?m§•rÑ–Q)íÄVNPD²Œ{ÙŽœÆÝL…Gü—×ZT¤”²c¾VŠ2«m,qüIã3&÷pÚËJuXWª›'3)Õvaìa’¿«â<‡•I<õ{9§'<²c>vÙoDX¶hOÞS<ŸäØ2q‡¨€‘œÑ á»Ô„”+ PÔ™ý}ïÚé?Èß÷õwO·þß­aNq½É¥ÈÝÊëÇ[j·_M«w<•ÞWáÙV#î#HÍ$<öMÚþ<—jïߤÎýïöÈ9sÁê§?ø ‡à„¤ÉŽî õÊTh¼³Óƒ!ÞV>/Ƨÿ)Wù·Q|OÍöÎÙ­Ôl!ÄOÍßJ$–åbŸaT ÈN.Wçó;Xvõ†ìê¦+»¤Ú–Y ̵úû]¾ÈÁÎOœ:Ö+yŸZ sAíáªD‡zÐÃ2[±`;‚¸ì£ŽjSØë[z*Õ4":SP*kwbÝ£ô€¤{ôŸÎ^ƒéø4LÉ^ögb¯­L°GÛн¯¡õ6â Ú„vP­M;¨æ@N—8¢6aQÛßaÂ>¢ÖfQkK9¢ÆÙ¦Áᚊ=ßgboÛ‚½÷ŽÔ|Ní`Ï£åsêÐØó½v°ç1ó9µƒ=Ëb¯Ãb¯#…=.ÈVuŸÁÞr½œÏÄÞÌwÛ³g‰È77u†2âê ÞöÉyQVÌë)è•33&XNã|>¨¡ÍGMw»Èp·¹Ä‘ ÃY±ÀM—©=‡3fb¦sólèpfš`µ„—<ÛxmFþ–Å{cÁk·ðÑ· xL›ású¹©ô¥N 1`Ðu[0è,ßͪÝ€AçøÎ{ýš ÙÁIiHŒ\…Äx­ ?ÑÅÝj Èp1Ý #d,ô› £d8ùnÖRáâ;ï2á.:\‘áRdügX‰`iblwY3 Zýý |Ò–W’ÞÙäM¸$æ€Ä• ñ¸ $Î8‰¾4o"¿d¨/)Ÿæ˜$‚Äføðáü q;på q¸r¹ ñß+—w>ýŠD·"qçAâÃzc惌Ñb4f¾Ñ˜_0ó/ŒÆ¼ô|dä§IªlŽ[ÛŸLAæ\3%¦Œ¬ð(ˆ Þµ÷þ8ï6ŸZ©Øë<[<ɶ¨nœ¿°“ÞÄîL›´‰ÊŠc]] ]-€® Ïf/{sÕ`¹ºº¢ BT7@T_„¨!ªËL]5a( ÒtuF©h£EöùeijS|¦7ÑKîEú‚拼 )$‹ùWpÖ¼Ksíi]ÆBQsç8 ýFÌ{Ó½HË뼺ŠNkÑ åáÎ=žÅ¨àÕò7ùiЧèQžbw]®î%z¤—Èd¹ÚÓ®¶ìd+ÎoÙ2K.©rÝj[¼Ò9BõèÜë‰ì;¿jÕœ;E͘$Ë]ž€ÜåaRÎH ´\T <¸$3÷kð&ïäüŒÿx1ùŸ¢^ðÜòÑé?m`žm̱YÜ©ZĸÎ5Ò!Zç›Ö)ZÞ'^w¹è¦ÿʦ䘒b˜’Û1u.ó°~Üý(†~ü3ôcôc=ôãr˜’o@¯fC¯îÄw%ESÒ‰BM¨Û×g©“££+}¬ò! —" è …ZÙgøù ½•½Æ Æ`=–P2{V] ¢ïÑsÀì7Áì\0û-06A©a J•1°”Ï[þ÷AÆ<±dT‚ŒoƒŒy ãn1dÜ2®m £ì|dÌSdXnÌ}ÅÊx\[K]_œc”ÂÖÚ²lÖÑ jî@?Ф³wàc¯â:ÍúϽ°õÖ·ýÍe:JìÜ´/¡á ¼ö¯7ùÔºÞaçžØ“LõGsÀÓa]¯=Ï ú¡™’hÝAïÍà ‹€»µ°yjù^>ùÒ~:Sºä ÈW‡Ÿö&k¼#ÿ,Pµ°ˆ‡†Àºÿ樫Ê"vùuUà—ÃUü’ÿ+üRO¸šzÉ(æ*­Ðo2o*è®ØD§¶bî<*ÎAÞÑ7m„ç)ýÍ;‰æàÓÆJl½& 2^FrŒ;ä=-^9kúA?™)ª¹•ÇŸíFS.Öšò2cÄåp¾óòæÏαùqYóŸ™Ð_Ào Ðzï@¶åK®ù©íú úÑK>tżåV…&²öû…¢Â¿ò›§šrS®Aj£6·xÊ5νȫt=Zè6ögÓðõv{¬ RŠsyb«ç‚åÝðŽ´‘ÞáMì‡C÷¥olr%«Ä¸âdäEDwVU0…;þII°è‰ß¾Hž*–ñ…T΋\B_¸»ÜŽži¨°CW+à÷ãÒL—}jü"ŠJÄ8·TðÛ·W°>Uáíi¥¢ \²ð_°C ï Û 6} ã]áP>_á[ÃÃØ9ÎWÓ傸d§úhü¥(«Èf¬ŽÉó‹2“+ýl_¬Ç°ÛP$£¢øžb¸è ^¡"bÁ{/àg,^"½Ž”ïqКdèçίå:´eDY´ÔîO#b‡…ѽ¯“_8šZ½¨èãÖ‹Ê£]:CÿvT2O¥P#FÑVvhydTN•¤Ì‘ã>è}Ñ€/šŒ/ÒŠìG‘éÁèV‘þ]ì]×…óã#¼X…sQ«i}¸}r5½·½8;»m·,Êu$WÇ÷o‘g(γ`»øB…]B…ÙîÞb;¤›‚w×è¿ÒýxMê.ÕF†°y;¦å »Îï »”KújÃ%uÙKÆÜAÙ¥ÿ8þ®æ,f­7ºnR7’•™Ö¿ìòã.HçI?%nâç—ÂC0Ó?µz‰ˆÁ®_ŽˆþYr°ã±_E'Ï’/aD,ž%‡M÷™#â8;lÂçÏ‘M<ØáOŒØþ%X3x-P˜Æذõ„‡*Ùz` †ë8”Šë¸´* ,ÃjP9ʸú¿gÚ*ÅìfûÞ.µýÞ®?:ªêο™Ì$2“DϤäÍšàˆ‰fA¦-Õ ³6@TZ£fÏf]\szbáÔhC›– ©2;IÉžŽ-kéÙC{pÍ.OÎ6R7ªÈ&Ê`#²ú†Ä]°lEв÷ûýÞ{ß½ofˆƒxd&oî»÷~¿÷{?ßßaú_9.4ñ¡*o§«H4zH4RÉF¿³dcîÍSˆÆÖ™R4¢”¤¨ˆôGÑÈßÊdcŒ¿ ¤ãyñ‚±ˆ’o¼óùu^¿~@fÀ-sé°³õ %®]÷)èv·ËúŸ×áb6ÍÅIöÑíc”áèýtûlwÞ>'pi/»(kµ§ÂvÐöÍ%‰…œ |¶÷“Ñ#×ÑDaĹøØÀ\8øÒMáx~YÌ^J.#N~UJÿ —qÆh}Õ&H9ͳ²Œ,|e¸†tWõ8襁ª@FÈÁh¤«,‘1sñb¨7T†˜Ö_<2ã×yxõde'»(?HžÉM1ϳM?¤&öŽÄL:†}y†àhDÿFG¤/éˆì¢#²~6nÏn:"»œGdÖ\ýˆô)G$¨‘ç!#&y×·ÌÆ¿n£ã»À¥ct÷œ ƒõ³ù1¸Ð4C¨ïœ³–—Ø\ØŒ"‡Â^zܯ\ªb @ i‹+Kx˜~†0•%€!b]‚¬Ú<ú-¼Êà_zB‰Z\CÉ)ø ª¤ð}\%PÈ*_@Æo8ä®/±Î+âuSô ô…_ЊØÂn“ßázÉtagRÈ]0ü2ÞÒ ÀŠÂ)~Ëus¾ {è¶8Åîe¨¯ÂþM,Šþ¹b/Þ¬²4I=Ï©ß5×¾¶FÔQ²¾ØLœɽ΄¯WQJ/ŸèÞ;–ºŽb9°ë¤|¿Ù]´:Ë»[)¡³²»ÈS‡ø1­ïÀÊ-M2M±”ýÉï”iÔ®¢"¼Öz$slZI«#TF%n²QíÐpmkvhdÑíÑsÃìCÒîü¦*õî”åî8s9{)—3N¹œlwØÆ`.'mÌnöÖW•9W±ônÇÆœ•3!6†Ú™©6E¤`ÕZ Ù¸)m%†½uC±Õ©t œ›„i6ÌI½-5A¼W(Çœ>ÊXQOôü†¶GÄ2Rvõ°¬<ÔQé¤#õctXmÑ"à¼Ô†UÇæê(¿7~¼{eýŒL zè+¨¸j·ò/èVVk#{×±°dYœÜ«&ºÁŠÖ᪠Wd¸ú®Ö’áêÇd,|Š ^kJìY`ùÇvnºâ»l)Sïy&éa§ŽÑ,‚rÒªRë©@•ÈYøžBa" þg6Ib릟çLJÌ Ä °ÇóuVѼýöæ $ˆã³ñ2©ÍQåCåHt%P¬éqÖ‹>M¿ß<–âîž‘Xp ?Ù|AX-lÈ\àÖ¬²Í*ËÅ¡G$ÆL9£YÜ<80²É=œEȬ‰f=„Òòz]¨Gy…Mä6“âàMäT-%§êâ‘2Švo­%ÞZK¼õñÖSÄ[ëJv70w{‘›""bü cÀp1ŽÛTõRr@9¨å$«—€ ÒsÓŽlðÅÖñŸ]9n‚ñ׸)?%7IÏM›M&¯Íç(43p–¢ýŠ ¼Àó¼µZx÷°¡'7ȲÚÍ%6UyJÔ—ôÔñú’œ,T`’×…‚­+¦_h50uᱤ‘ŽÑÀKQ2Ñà©“¥*ù¦ÀH|¤nòÐD-ÊbQ‹+ÂZ/<:C³Îi åäaÔQo#÷ãAò æ\Ьx ÅœK;dT‚A+ŸÈ½ô[•ù%Æ dNî`Mþ™¬¼`ý_y¾ðÛþoÓé<ˆ€íeü§ó`‰vuñËî>úýн®½Ñ#¢„둲3¸—!DdM=ì·ž^O%Ó¯Ñ;Èìp°„'…ýT4¼—Þ)aëXÌ_­Ô—æ~º'¼‰§!þ(ð¤n%ág@½¡ ¦½¦­&ÇvâÀ9Å“*{i‰âóq¯Þü«»\ÿ…Z¢û×½ÆpÌgoFϸÑýCŸ_ûÉÛ¸Yf÷üšÕ!¨ÞÃpLÕjŽcúˆíZŽ1em>3vQ0*ï“„ðžùÌÄ<œᵉ#ç[óþ»£G\gå¸>Ÿ¯ØéƒÉ{50;Å^iµ!ü¥G$…Ý¢?êY zò¢Ä`¤V³œ‡])NÓêG}²ãÂJaTä‡Û£€“nJ’ƪÏòpCÙç^r›CÙçQ:ýPN¤¿0¡É|| Ôz{ŸÇÀø¨$¸t¬@ܼàŠGJ-Ÿ-µ@wÚZ5—ZAö@/©-Pöi”0Ù8&kØ8‡úpX£r!Œ*ÙUÖèpýPÛ·Ü|ðþ>›|cÑro'!±1’—ÕÒQÎÜ?Vã!ý½â›«=Jýô6^?½†Ç#Êj<²~:Ž,Üm !o?ã6ÿÌ´óÍÆ_;&åoïö¾ÀŒLœQØnQ:Ï•S¸Ý · »• má¶àšÿ=|Á'„«ç®… ^¶í “Eœ_¥)s¢¡ê,üòoñ²`ÌÿìØ}h$%ÿD¼´Ü0 À+„üW™)øUø³çb}t™÷騏ŠÖßNŽô…Ãßll<×T±ñͦŠç™6Æ#^@`¸œDžæ™8¤Øºµ*GNO€­jçÕIèZ ¶ªMlÍ7U°µÀTÁÖ-¦¶„{Ä#^€ð¥§N—¶Y¾ˆI’ì sÍaŸ!¼ ÜµScÊüi™Óß1žrÛU*Ri& i÷»h÷#Úî/Ôvÿ›Úîߪíþméw!ß}Á3 =zøRÑw•pxí:[‚«Gàé4”ŠïðaÊ»iˆz¿Ä€ÞÄùÏ/^ÖFâAó&^& ±Pʲb|¥dôÙ’ÑoKFfÈB$ÌÚfIaVkJaÖ<[ ³z^¡Êá$í*!¬n>PÅ8H¯¨fDÐÖ°Âs ª¡òð‡L$0(¯S(€RÐûlÉê·%k¡-Yƒö1([Áâ{µD©R°1w^ÑB”³"ô!p ì‚fà"lâ]´†z6ñ8­¡!¼vl>P+nùˆ¨¶Ug>&q¾ÙÐpóiÒ7€Ÿ¤5ÂÔÈì&¾­#¾­$©·ƒÕІ‰oëˆoGˆoß¾E|»„øöñíRSsIS¹Ûù+´”¦Ï3zL®—S¯~˜êiRÕ4©Þõ0Õk‡é.í0Ý­¦{ôÃÔIÃjj¾}›O¡žw=­+TbÆ)ü’`«šÅ!„w`¿}§а;ÒËï}&GUŠ¿©(ÅR7“!UéÔ©üOÝDþ³š!åš<¶t4²—¼‚€š>.’…~+Òãþ¸`4,DPS—iÓ&fòMÚŒQ¡ÿd ýÇ+ôŸVÐþ&[ÕoM©3I¿ÈŠsncóI®/^Ðt§_xS¨¸¶B>j‹%~Ž}ö9±/•bi™)ÅRÍ)–V•K±Ô`J±T\ÅÅ’¸†Ê…„­´vø}Ð{Y™¦?1ê–þ;5“O+£ÁÝáˆ"¨tŸÅn¡F¼…De•KóÊ“:ói*¯<@ôkJRyå¨üIo¸ÉÆ1x6ÉÔp‹Ð¶ñ êŠ]¬Åï;‹*êiÎ:ËH€+þñíõè‡a3ë¿efýã§®Iç§ÁìS“ûǯøÇyA*u²î\ÖYãõdhR÷±I%M õ#Á20­FšV^¢÷3YRwÞÛè¶i  î³n ÉÖÄÏE%à …Š÷I-DtÈÃÜiÀþ9\ËÍdCÑ£É, õ¾[œŠeû´“³ÜÔI–Kà.‚¥:é´Ëh)@¬ºoýÂGThe/ñœÅ×ÏbÚÇÒnoÛ%„=,²ƒœ†ˆºÞðUäÓ¢|q–ÀP@ÿ|º\2ÄrÁ§‡œqÂ>¥pDí´8â‡ó+é´Â¹‰*Q¿7]ïCyÀ=Ú_jU¥5]¤§É£\(ÅnPˆÝbkWЇ„J(d#.¸ í³(ü:F\4›ºf_µ˜¶^ ûtt 6‰¬&;B ß:ÜÎU&N¼Õäç?«µJVƒ!ÒÚ\e¨4ˆÉ X‚ø‰©í¯²0ˆU¼†A‡¢ö)ãÀÝSÅË ›ì¢tA7´´%|Ùt㦠ò«ä½‹ö7 .Je蹴Л§Ýh£°´Û¾ÖýÅnûfSÞö¸ópÛ D—=oëe ®*µþ½>£ ò±¸@Ö¸¯ÇÚå+6öfÒqÛœÌô*0“?ñu—¿Ó¦òT;ñT‡ÉëÃB};ÁV_.[ µgš­¶]Ž­:$[u[å [áýÕ®3–ÊR·OŸ¥ÞÿÈ ñÍØ¸]³ÖäM `ƒå±«òU³¯VTñë'•ý×*“Ù·•1ÜüvaÕßJÿ«.*‘`Õ JVVéPjÉP*4Þ„U_õÖѼÛIÆ•C - bâè{V¼•ßÍéàåj>V>²n(Kzv¨Ë„ßú°0_V^f»“[ׂš÷*¡ä­žp³Mnh$ÇNs#ŽÊ¡Á÷¼I†õ à´ÇÖ }¶ W@¼ÔÖXŽ'ƒâ Ç&¸ü4›B)µ^üµÇØÜ iLJÝ:>Ñ*êqÃÐzBÁn‚×O‡“/9‘ ‡ƒkæ Rš^Ä‚eº ¦KŠ„š‚´ FÖX^ñ†ßµ‡=„»&ÍA>[ÛQ Îu‹¼¢b&!No>Ã%K3qÊOÄ»$Àéç 'Ï–ñ Ç¡êƒBã¯R¡qx×z9³õbf[—¥oœ(ü[ÓÂ\LxŠþ››5V?w¹P\ꎩ 8hÇü©µGŠ÷8¸¶'ƒPü‡·: ø]áS 8èŸàÔßæ¥ãÔÉ=i¡¸ÊuÓâ‡O>à¼Ic†R÷¾“áïÎßx ~¿þŽÁåOÜñpÜ‘!ÍHÔ¸Dý’N|B⣄6)øh£ÀG›¾\|´ùñL㣠¹éðÑ&‰6%á£éñÑâéã£'Å:*žss³½Ç6Ûûl³=ì'î5`náÒP6´p^¦§˜¤¤}x&¥’ö|%m)iÏ« ³…f«PÒ¶nÙúårËãfš[ÊIÇ-[%·lu(i[t^qõ(̲dúÌòónîE^¦qË_æÙ1Óny&(PÜ\A"åÝ¡~úW%ûzQšBöÛq¤ËíR[£Q‡ÉvÄÚQ„ɽäW@˜â092-˜<èÕ`òÝ“Ãäï¼09Âar‹“×L“#¶¤µ-%Ü4=˜ÜùƒÉ‘ˆÉÛ0yû4`²´þ¥¶ý}Ï“Úö§Âä>鿵AG߃Êçæ_¨¼6+cPyAV:Ò'H_Z¨|e@ò¿¸ÓäírNÛÅœþÕ ’SØ'ï™6:v-Ö- «ç%ná½,°LÁ#Œs÷ª}Û¸<ØîJÁ¹" V%Š*BáÑ¿‚к~ÓP §§ Ý„þ Ü[%0Àõ™ÃÅ/w8ZwÎó*ŽÍv×!ê›F=-F:®í—Ò/8ä€6Óþ)ü±lZü±ãÇÎõ ‡ä&ÂSÛ¯§”Ê“áçÈ/?G¦ÄÏSâç Ú¥àçAˆv}¹ˆè¡–L#¢{>¤AD»$"Ú•„ŸÓãçoO­;Âñs†ˆ®™?Glü[ÅU7_Ö`j2 äݳõC‚½#ày2àêQ~¶Š*YáÙ‰G±¾ï‘MK96ýdž¨´°ç e€Æ(ÿ3tÅ<Ï\èôÁèã%€¿»x^Wð®w?ë1*ãvüDr¹ÆÈ~M"7\‡÷ÿ1àÐTñ|€qcø~Z„a›tdáȘRh§ÅÙ˜KužÖÇs³U°S” ìDO¥gñÇö»S”O©Ï2Rv”›0)~ÍŽ;œÐLIŽžr§m”Ò‡G¡ÙØi‰Qñ¹W ÏÎÇücqj÷ƉwŽÎ¡d§Mžlö‚n mv'æàq¦5Œq3À%zž0ˆ¡1md:Óía™b—ΚjŽ |“³š©+Ö‡5q lU\bà:í B;;ˆø‡_aÊÉ6‘r­?qÚ{L ˜ ‡|‰‡¡…Ý“²ã÷Tñ@Ï`ØÚyGŽÅk@j–½Qð+l½ŸC<Ýš3þ#ÔOíÕU]0mÿ¬XÛ±¶ εm…îùä(Æ»ðlYwÁä-ëúõ®|Øi)'z‡!åxq¨œ)ض[¤ŠÁ åØŸ ¶ Gw§¢Z£¸áÙÂÈN!±àO–×Ñx4’HOéŒ7@tôn`ø rØKzB‰ÚµDØÀÕlÆÆñáñaÆÝðé&ú2ºÿN=qÉ}øë¡<®3±êÀFXùi˜rs•!«ÄígŽùço…?R]ÂXš!¢þ ûáÒ(½³ìÓ¿¯ô€¤S¡&ãp ÓûpQ¨g¿PÏœ¡üž7<`2£ yÕúè¿rxL~·÷Ÿ`‰ùªÐ%æ³iWsì j$ƒÃå¼5è%æ¨Ä|ƒ]b~P–˜%æ ´‘¼Å˜ '.È.lZ‚þÛÞe3úÚHk%ÚRK¯½!+ü!å|{Ä™€o!¿Ê+Ò° g·÷ɧEµx~«ÅÃûhÉÍÊ’‡•ªú-´ä}´äf}ÉûhÉÍö’‡å’‡Uõ[hÉð?Ì1¼9&¦¹˜/M5К8×fáqÃúõŒ,i_C|Ìn‚™±õÈ ñ¸a¸†º‹ŒÕ”¹½~°ëâE²!­™$‰Q[â©Ú?¥ zþ[¿Õy“úW“o‡ Ì o‡¾gÝ)7v\Æ'ÕëÐ]4Æq¶‰dá§vÜ…4Yärä:rŠâñ#Z‚. !Mm¡W¼áï.JBWèó4{f  §›š_4¿óY+Î ìï÷uaß,”) ñøöÇ.Êøv¯F—@n–RdéË&ÊÿVøo×~±×e¤™6-xÒ1öÏpìT‰¨ÁžÀ O EýWÃÅ!H a_,…/>Ç®~çÐû¤@J|5ô¾|äµò3€s:÷øgº*qt×c]bb~‹ùÌñ„ÝvÑ6îóDÙüVcÒ¤z¢Jò¡UúF<‡ùÿç –ÛÕ²¤¬òjÌïä2äu«H”óv©ÍÛl0ø„,^*Yœúèâ5'Ò^ºâj"¥T\y¯ˆ+O"¥Á)}ú:NÓ$ùGþ…ñ•vötþd ò/˜v|Î é¦~õÒó IŠˆ(Iß ›Öñê\º ðŽòÙò;C…C|†lžŒ­Ê5¶*lU> [ÙøÜ?{J¶ SN“;çû—Ä]aÉ]aM~kÜ•JÆUj|P)ø Ru1¢¼Ï –ÌçNâÑ̈÷© á[<8í¹jø›Ý_dnHí/rsHí/2/d¨Æˆ¯(Æþ ­0÷»ƒnG‘jšÆ*šF_®Ú_¤:¤ö™Rû‹,©ýEn™lÕb²gÁƒ\C¿$fçIz>ƒé§M8Ó´‡6âÐE©{T—¡(e`ê^$–1å"¢Ò2å›GµT¦ËŽŸœ2•é—ï¦Leª±Oj5šìI?Ù–?Ù™?ù¢+?¹ëD sñ“ß?H㮑§¹&t)ñ“åŠyéÒ}À¿ýÆ<¯x€s°)@ôO™Œèy/+¤J°´¹Ùgs³ßææBAÞ µðŸ|FFr(ÿ8H¦€²³ÊÎ^bˆå¸­í„åS”xº!FÍ·Á~ì³  ´Ï¤‚»×þyD –KT UƒÜÉßgRé¤®Ü JϹvnø ¥ê›™xŠÛr ï©Z’‘ðŸwÑW ¡Ft¸ 'Å^Prè«ÜÝz–nÃ:uüz™2>|ëůð5Ë´K“Ó ˆžÜÞTC„±ÎÏÌ2Ž3½-dˆâÓ8ÊØõx€¬ë ÝLEe¥˜™¸·îìõF²1s7ûò¸éR$gÛV‡Va{¦^›0äˆÔ{#Bï}ésô¯Öj0bÜHl#¶S¸ÃòŽIDiógè©åø*^Ú¼9„ÛßE+Bª´h/ù8øÊnŒƒóîó+ÕÁWÑà­bpø x]à‚VMFãWÛoÄaúoäFaØ{Ó¦ðÀ¨ÀþwôLÁ¶½®=ì«ì«ãž«bÊHcD ^òHH¸."œ>‘í*²µŠ¿çïÉMA*Ùõ³ZþŸ¹ëŽªºó3“™d3v“nªÉLbž ¡ mܦšjÜ”º±eÛ,'ÛrZ­Ú™j~8*$×n­Ýn‰?üt ºÕmTuý8”°mšgŒ]"xÓñBZÿª¿W©ÿˆ¨¿× 2…¸­Ù}9¤õ+ƒ| ff<]·O B’l¨Éƒ ¾ µ5(ÖÖ $sdO{‚ÉA26ŒÜÛìÉÚqÌïBæ$î§]c§p!Fi!Ž-ì÷ìütÎÚCœ*xvž ŒX|1ö»¬ýþ~e}‹à-¹AÁ«¯Ï«z%¯êÍãû£›tùͧÄȱøðÆL9–+ÞmÑýש”ßaße|‡i|GÄøŽLÈ»Æqx=‹ÒØÉÁqadd#‚‘ý1²a##ƒÖuK&ÖM#š·ž‡üÓ!¢…E Óä@í¢.î‘•ìÓòýQœ–ݲŽ y¯ÇUR’ƒ“޳˜ž$”Ïï˜h:v8 ­ØƒÙEY3‘µzÒ ,ªs˜ 9¬5!X똤¨B¦VöªÝîÕ¹ ÿÆNbßøD|ÃéÅo¸¼üx ߀;)”ãø”ÐWiÿ¾QE! 1HÙ œz{汈6Ë‹€~àøl¾¦$›’¹û"ZŽï}1Æ>Gã¦<ç1?¾õ~üÃ_àØ#鞟Bæ?‰]‡~ù_ùfɖʪХ†Ö£|¥ñÅêúðª°û¦ÃÂÞ{ØD©Ï{ß÷ÓáŸc¹ZìÓ70ä}®ù1üðRÇ?b# ú%iø‘Þwƒq¤7ó‘Χ‘vÆG‡ ÿ‡ššŸ÷·–ércL;uæö»¬£`¦øìÖÛhñœŸsÊ:8Nñt?cÏrÃyöG„_Ù˜îWíJö+›Z<ݯü =É4¯Ålt㱫ÙͦNÇ­’-DvtÖ¥v4ÍnwbGï|;Z¤v´éU‡èª-púé•pŠÎ÷Ö)diá¨V Ÿ¬Wüôb‹Ž¹-mO™g«Ç`®Ø=‡LŸX‹—³mä-tvëå¨ýFµ#û‘[7C†e‡G¿5aÇï¯|¡ÿæM³…n™&™o𬿠1rêö€ÌøMç˜lãø=aàêC–”®@w°ñÏÒÈê bÑÑ]óÍh–¶·Û­šŒÝD‚nê&c_ßN&c+Ìrr2µÀeiyƒeá²­_v2áVBÒoÚ7—ÃÍýwBúIoòν4¬÷œ0„µeš^±ÓÝhz$Õʼ(FËá™gÇ ¼sÒ~Ãȱ^A•$+½Ò?‰•«å*½|<—R1øìë¥?º—*¼´//Þv3lb®ÀK×ò_ûËAwª†~g×ÀH½ÛtÊÊ&­ÊËñj8;j[ËU‹D8;³Ë à]ÇO)(ja·„¹Gƒøs+dÕ­C#ÞLÏs9·”èn€î.ë{¨6hgXøžüÇ4’N±OuÝ5bá2›Ñ£ïµeX.+’Ž!€zv2G<§M¯¦ÝFDû¿sΰ›G‰#ž€à9áìÖGxJ˜ìfú¯\ÐÙÐYß/Þ´j™Óz4ümHÔ qÕõ`Lh;ôš}ºÅœóM¯Ù–3Øb´©ÓÞtÀ85ç<»óaÇEß™÷ F XXÖ `‘ÐE™ÇXÔ›‹z¶rêUu*‚+§†õ1>8ýp‰õBLö¦ý¶Ô©Bö¬Œþ+fj2ˆ‹w0æk=^uᢕºy u³ÖK™3‡ÍFS»ÃHã cM˜=“ð»b7¿fðpË#è1؉fÙ”5Ý·éº#/“¤(^ýÚj‚zx37ŒâµXÀvã% qã:Òíî')VOWt²6*Âóµƒn/T¿û%[Gï4íp(Ò€EÒxåT+p ‘ ªr ï©uAý)ðŽ –~ÂÓÚþDÓï¬Þ‚=%Ä5ÒR€Å X|γîX§7›Y§@Æô¡ï¢ÿ±cd °ØÖ„jZ×é¶ U‡³OMê6kŸÌmVÖ™Óɳ 2± 2Áøx„WH²Ão?:#^qæâEn·TÀ– ¶Èý >ìtÓ'œÔ‚CJÁžÍíMV `È$pÅÿ],Þßk¿§û‹·bÞ¯D}°«‹µ¶’› &|ƒf–ÒÄ4zqJýt…xí𜎂×7°öëþÛ~¿%Nk¦ž„¼|w¯áà î¦E¨,ñÖŠ¼ÙGe+¦Îª(³c|FVµØÀe>˜ MûÓnçà{Nº?p†ðö47¼8´^l\/ƒâ¨Ô'q¦:ÎÄ¡‹Î€ë· gj1jvi@ÖÚÿ؋Ӊ<¾QfuÍ:4ðL(ºÃ¸ì:M¯:¿A½2ɯó¢SHè¦vqN#Ì)j7‡9|z‘‚B^¾exR 7 "oVˆœé·à…f ÎÔ€«Ÿ´ÁSÒk!Eí Ã!ê^[JýE8 Œ¨ä°¼y/âœítЪ(.tl˜K&ÎøD¶Q#‚úÛõGpx@³,÷]pþdB\B“„> Œ¢ZIÉ «!VO&øFð5$x,a&ßÔŠ¿•¾!{h;¥‡-󘮂°<â3=M¨— y¬ ø}ó/Å£¨šÂo{9…G$…G…_G†m’û!mß{Ô½¶ùAæx8ÝÍ"莞7¦ð Û¦´O·?Ý&Ûþaœ"¡^ÃY|«¶]•OºÉvÃ陸¾–"‹Ác‰}l‡W÷a‹@—ǧ¦a°\1kvºÒºém˜âûR–ú û†ä’™”’ôÛË&¨—~’’ j7#AõK‚êøÌ+¤}e¯­3Õj‡uwçpð¤‘krãþùdÜRE‚ B‚cb—.!`à˜äŒ˜1Öb'íŠèt]‘ðøyÖt‡ñlþuª°ŒcrâÇÄÄóÀæ C§‡&gSÛ·ze£ËV¦œ€ÏŒW¹ûéT±<ëÅ– Ÿ´Š³R…éù§æÿ6=9ÿÔ׺¸ó '!‹ÏL£pÄ7‘ó <–$d÷! 9}œ„ðHî¤Ö$œ©5 —?ÜHîÃí3ThÏthèö©ÐðŸ =¾”š~`ú5‰gg©šÕŸø£I<ï4hÓÚ0U“x+ãjhg3Rj³ˆ\š‰\öÈe–\®5Ë äò'¾¤•‡Õ^MMbÓ5Âÿ…–1%ø1¥™ñ]c’ÿûiUé:…%Y¥ø–A¥Èò™Ç潉Jeñ‘ƒ _®ËE¼FŸåóÑ$Â×4‰ùf¬—¶üÞO-r+§O“ˆ|èô¥jù>eÿ_W(òå4M¢Ph>Óó¸ýùῊ ÿ-Ýp•ôŠ¿ù1ûú&Ç‚÷N/ xø—æXò›jrýibýýPú·¤T/\üÏ )ÑàÝADƒDFwp:Cõ¢í’Õ‹bŸð¯Ó髸s¥¯¤¯Æ Ó¨_¸Fš*™MM³~Q¸5µ~Q,)ªØ7uýâò(ê{ëSR”%€•+)*×Çõ‹Yª~‘c`ö꥾ õ‹R.%pX&ÀáRË$£ü£è_uN·~Qô‹TúE™œø2ŸQ¿XjèôФBnjúŪ ý¢u¥ª_xg ýâéÊ;08c¹#@Û†r8”‚³„ŸØg å>~pSNx Â§s•J¸Åý1;3TpzÂs˜*ÎÝ Q^~\CE Š§[ ùQ*3¥þ“ D‰,öz%µ šýÄ¿Éãg$µŒ"ÿ«¦¯¯ôÝT¡¹éq+¾ïǧ²½5ôF­Oß?­¨n\ÇðË{]÷|ÿßÖ;u<_íÃØÞÃ÷½îgÏú«´^%è»ZòîÇøHØ$"Ñ¡¡ÅÍ/Û,åt 6œ´lCÚ©·}Ï·( &öuèˬ½µ’Èj‘-!"«1@ì‹TMU:âOZP±Ý Ì:Ânh7%¤E¸tN¬”ÚýPŠñaÈ×%f‰¸ØY±Ñˆ[œb­õ!boà9{Ìò¤ê¾ñÂ\š n”¿–cl,ùÄZ›%¾Ð)ÕBÏÞÜå8è}L×ÀI>12WûT†ù V¥Ë>é<éƒÐÀ‰Øjð ú «>Hs!_¾–ö¨°<Î\Zìî?¤ 5<Ñ"Ht®¼Õû7:]á“? àüE÷ t²ÚXåLï³B‹öêô˜Ëþ×m#Z~!ÞÖ Q Û Qø¶Ó¼ÈÕ^Fêf£›¿ÙõEæèõU1I=‹h+ŠðV5ý¬,ÇéQ­¦ ÔÒ“ÕEØthbǨïÌ;…ô?¤+‡ÚýÒ3hèÔHÒÄïÓCÓøÙBéÍüªøi¦BBü4 ñ2,’p6šÁéûv=S³tã‰-is-¨·àgdªºÃ|³^Áü|ޱ›‡Ó\9´t‘=0…—-@ Z’k£“Ûù:&rOpˆönÚbpOpH÷£'ÿLÈ»4ñ[LÍÂx¶Vy·Å\¿i‘0mAd¼k è 'bi⠌󱒌’ˆ!n_ ×³óUkGP„Íd“‰”ÝŠ¤«Ç9æ”ÌbÂð!G<–(ŽÆ‡òœA_€qã[.Nî‹Gû8#&C¡×òŸ0ñÆ »Ç&rÁ†ä2¦¹é^²·rÅ^ßl˜Å¤ež"`§B-ïïmPj¬úQ{xµ Íì?Etæˆÿ¦<$•‰POŸ:‡^ Ír}#øàúÍË(whÝ%(lí$ýzJžá&£ç½ö؉rAáÜǰ_(˜Fü¾ 7a A¹7X9Òo‘·¯àŒßÿ´?:#þÀ)î_"H*‘(ÓoŽÞÈi–Á€g EháRÿ£%Áűøz (ë™À¹^çü¯”º±PT+åù2°“w°Ú €¡ fJAÕ>ÝYYâ\Öçy ýÙû Ý]Œ6}f-ø€aà†°ã"lm2XBò«‹Ü$[¼¸ˆt»nò§l¡¨]¸é9«¼ùZ^ìA*"߇íu‰Š™¦¸ˆ„…=ö³U |ý„që§]•¨AC—uyžÂˆû=…ŽnCÏÇ@kÍ^´ 7`^ïÏÀ–5@@ír¢¡ áÿÙ@®Aýhç‘yK³“—,R) |YÜ`\»KÔ͈²œïÄFþš5ô8›©ciXØ™Olèzl„+d÷blýuÄ|à»i 2Ñæ¢Dß íZ€À›¤Z<ó›”Ý iÝ °XýY€D_ ôAéCgŽ>e¥TºŠíï¸à |Ê–Ø¡Â(UÕ }ù] ¨X Ö–Ô}\-í¤Ò¹Eø<¿_²„ë§—æêop.ÞŠÑÏð\¼9B?'éfb®hê[gÞ œÕ›:ÆìÅã{4Ë<üP×\š7úPŒ±¿—‘÷ìІgã­ú99›×yæ°^_b6–›UõÌÆ›ƒTU×b“ºÓÈ.¦‘YLœ‹^¨&‹å• ñª†~jéæjúYC7ë¦Ãûb×êbõe ±úaª¾v¶u5Mêú©[ª&*]OSXIS8B5õ²z_qÐlôS‹ègpaŠQû‡âÞZ;]¤ê7¤ ¬±ð¹¥_¸_JÐK%K튗8í–.ÁçKé§ ~Þ©t˜õ¼¨±n¦ü³B*ÀmÝ®X‚,8g .­1âÞG(‹m2ëøÇf—œëH!ŠÆÒfå#—G óM †@g?<®´S+ Ûîðl»‡ÝÌ âNggÝŽÛ@9aGþwõä†Ý9·ãÓüpv%¥Ú³èå¢ _iU芣U­•yg*´R8Ì!ƒË¥p¢Y„Ê RÕ\,Œ©‡t€ V‰³Z«dÊ蘵*È)¡J[æ#Y­U‡9'©ÐV†e˜­šØÙg3õ0[`,Z€L›Ë•¯èŠp 7[œñ4Ÿ…Ç7ÉAîÄ÷/òiz´|=þÞÐ7©VxH bQZŒ€ F%hÏäâ¨Ã³YðzGíõÎ8xhÒþVØ +óSeËÊlˆÙa»k‰Z†µ è/HdE>ËË`FLGÁ³¬Ç³™âãfƒÄÁ±z#‰¥|!ªÅWfü_-ܾõi ÜØZ.š*SHŠ ¶2eƒMú%Ø¥)ŽÇ¢D‡tÆÐfúse_¶LÙ—¥RzlQ@©3Võ 7Î7à‹ŸáV-nu-‡mYš\$—ô±VZ&ðµã`[uXfØc‘鯸f†¯‹ÅãŒm}@$¶Êçó¢ÅÎøÒpþÇy´+ú1©G  }1àF®vr&Œ›7u"„3¡|³8sô² Òc¹Ši”ä“}åÿ‘÷´ÑQUIv¿î†Fºí8¦5‹4Ðx:9Æ5qÉhÄ– Ž2;×èdÎÆÝìlGÙÙ@ÝÁ<:°Nv&g6ëØ;Ù=Ì,9Ëf1 È×°œð5´,hp¢vhTÖ >öVÕ}ïÝ×4þسùsûåÝW·nݪºUuëÞ¦ÿÏÑø_󑛉Ŧ5ÜùRu8gòö {˜ñ¦IÛûâ ²º¸„îQñ`'€ËáËt —b ®Ké_ÐéÏÌiäfü,r’}t‹ê£G^J飦<æ[t¥Ñj&['%©ÐüiEc&áN!P·t"¡wÄCÆÕ¹4Û×¥>—fg yôE.\A_YB8Žç:GÒPD)v½#iÀ‹ËYg8’¦XP-ú‘4£¬Mo~šÙ°ó-Úþä¤Û„cdôûÙ¶5:Ñ£ÐÚ»l‚÷¢eBüHòò4ÉK¾(/$/E^¡/ÐØsìÅE Ïó%"¼9cdR½4˜Q/eQϰ‹Ð5OpXÀ$™.± ]š´Z<1¨¤É¬oªÓjo4éûJ9ö+¥  Í­ø¯H'þ‹ŽÉñš„~7ž0ß[ø}…ŽÔ'LyÙiJâãÿZÀøx€óñègL}Jµi·Å{y òK (Â-cp þß„R‹Q‘&FE^¾>x⊰>XpsÂtç;½·ö„i”óþü)ÚŠ6À2b¢8Év‘-1á Ø4~£«oNZt´Õ“Ï]FÌÓK>s+X„©FM­øÎµmr%-À'ÛJ ZˆOε”x´(Ñì-#£Ðª%çñ Ö#³È…€¤â¼t“x0ä%N"t~d×¼`=WÎ2Ñéý|»pæ®q4AgÅÝçÆ%^íÍMvn$¥ñèðŒ+­Üö.1ø'έ˜ÁŠÑƒ•—Òï«úÇåx”ÿÃHõLHŸOqåOœ†kžò¡ÒÞ¥üÎ'Þ_I.ßmíÐËíÜ, uyµèæa×ëŸá©¬&5>˜©æfÑe¥ü’Kç[6‘óRÒa =”ïI¦¨©0ÑY`85éIsúlQQEgQ„Ókˆ‘bƒˆ½d<‹ *4{òÑgb´" t`&Ü¥ƒÍÌ¢À{ ¡õ¥ÜÚ ›°3ÖÓM67ÓoC(A¨¾VBKïrÁ4ÞžA¼Íú¼˜\GÈናkW]¤$D«PN¼p½Õt¬àÓ2ùüjb@Nüé¿Æí×çÞJwÅié®vÅV³T»í5¸`¢g¹võ¤Å€U±˽Ùü£t¹7•œÔM´¦LdM­Ð¬)nÀèb°0•ÜXîÍûKH>s òé°¤˜\Qþ?hiÕÑ,}žŒÿðEº¦nTm!]qd@Æ®°¿ãPûpF<Üoç¯ò&ÄN‘?”Gsf•èU“?TãUãÕ*F5‡(i®Uõ¬¶´¦&¬c¯o>1-zvÜ'¦µ¼˜N8j4á¨!á‰i˜_T^<|yñØý‰ŸÿåÌ7H,E¥8|è-$PUêzá«ÞJ.J,C@|ãþ$‰ƒ/Šƒ>8j*…‡aä?ð6qu1šñèy(ý´ù›'$ÍΘh+0¹ß3¸#¨0xÜêRD?L诪Gô&OXBi!/iò\A. ¤™UŠ Ï¢{54…Ôü±Á…ºœ)þt?âÄÀŒÚg6©¹îÕw™x6üÂ[tÖâ-:UÚ lsÕóã·~JƒÓ@^´¬ÎªIt °4·¼ª'ñŒâ*Š£VN‚õA×+ofÿ­™$Ü ³B »¿ëÒÕkØ}lÇxK‰jŽtd£–DÜ”ÿÜLÅ*¶f£y5ájÎkKÔö&K¥ëV¼0eõ¸ƒýW¯ÿwàeñ°LG³dgˆçë¶e©ô‚_xÿÚâß_åñÙ¢I(›òå턲•ÒlìT8¨ÈÈC”¡& \†( ¶úþÞ†ùÛMòn%”,ÕæÄG&`ªµk÷Ï•ðü÷h;s»‚Ë”Ü&BéômfÞõÞeö…kÛSèms“+´ÏúØ\û‰\ÍÊ‚GÖ ø2È5hdà)¿Áí ž,Ur7R[¡‰Ø€ü…kÛ£¼ŸcËÄÂFzá‡ñ3\~ø34øÎ tà@ð†\ÌâÚ6¹]Æ5nz²ý³ŒkÜÝøä|EÆ5îªùsª¹›j¾J5÷XÈ)",ˆíô¹h|½Ô>Äpˆ8‹*°ýh$öe´ƒAaTßç&ï: 9 oûm:áä;I©=¾ð!{’£ÁEÚôêC2½n7ЫW¤×ÿƒµé TiCӇµm ¾SÌdZ$Sç"ÖKø#†¸Ž/E*Š8·Pû \·RŒÒÏE½Æ_@*‰k!2…ãáÞ.cæ=MÞAc5@cµ“ÆêÕ|“jRÍNªyÞB‰‘Ô‰“tê@ëú8¾S´¹¼iSqwAZ}C†Ïwx 4â4PóÖìñ#”œ Ê~‚rÑeŠÊEŠU…²¡Ä—gÀu@ñ¶õ¢x‡ù£ó(—ö|œ|Û}—M„¿\þ¾)©ù[ѶeêØÅhìLVÃØM3Œ¼Ô“OÖ?1XÑM>b5™nbM²€4 qb7ñ€Ø“€Ü@L!â0¹ÇÄ‘äЃ H?ñ3““a’“ VïM'—“ô ÑožabðAìÓ$ÙËÙ y­8’öõ4’ôè¾e=iõiôÖÁßú Ø‘N«ß ØÃ´ÒØå çÝ 9fÚü¢š8Éüëc¬b8k=4K8áqç‡ðÓ]Ç~òý÷ç©Ò¼Òy½RœýÜm]bx;oÅ÷—Àûfã÷ð¸Ó‹ï›àûH.4+oöùY£uô¶ò¾YÅðÊÕ¼îç»ê6CÈ[žçX±‚§s eüöVÌ ã¿-aü'ˆŒDîïÃ*Û Èe 7äÛö=€á“Ã76Œæ´ûàœ`8“‰UŠf¬G]n§¡‰ô,dÌsÁUlU%tÀ’â¬)áA÷år «f(¶ò%ø6SqðcÍܱ¾õ¨ªÃ«ª¬Äû¬•1 VgV:L(1úm¾=+÷8e<œ^1@ýɤ£Í ²Ü+×€ýÌ>bÞ~ü<Ô« ‹ˆòZpð£[Ïÿ•ÝõVÎ’/Je{¤x1Œ×µ`Fá'A‡°Àš»Šroi±3é$7#ânfÝ+©Ÿm‚뾡úzð–çÁ¯óÝ.ªµGÏW hy#ÎvøæÓú["î6øõÙ*Cslê¤fîi¼æj…ĸÆ/((1õÔ}î’ysìFô`©‰ÆÑY\\kg$³cJ´róc¬gn][¥ôOÝò䮹ÔbÎy Ï™ð±ÿ1ü`ü,|Ìaï O­º]lP¿ÿž¸ÂLÒ»û–g‰ýðz;\Ûs +Cq¸ûÕoAK"'ÞÔl6Q h8ó¡Ú)ð8,¸føëuvyöûÃd 3Ū™ÿ&Ô ``Ž@²)|ø9«Y ?`ðÐl8†ªæ#7 v(#vȱlL›'ƒ®\Œ9 ^ðÈ †åHŸÌ\.'œ\\N–[ôÔÖN?Ô …õŽª†Âs«n•¿PIF5@;DRáÁºŒ(¨XC€çîÕ·k޽~ÿêXfÁ*u·EPm@¬þÑ»Z»+±“.r)²ÐeIeý-v õ“i„ÞÏç>h~®`Ýg%Å 7ëÁ^êË|Ùl;·¤TË7£_ªpš"¹ùŒ/¸ÂkMH@hŽñÉ‹bóVŸ©£“Ù#ò 6EÈñ¿ìªTœ+A/6ï…Øéïˆã5€Æ$õß³7õ®[,lÇù ?çø5¾ðÌÐÞÊÐ'æú_ó!T]à IúÉI•¨ôÁvF;á×/éë3[H[ÂkÅQˆ/ëZ‚q Ó+Zr¨Ëª2ÙIó>Î{͇I¾›lAuºÁ:Ïj’ !’æÐ>khÐ\v#l“ =[ÝG ÷#T¶~Z™¤CÀûðËÕò¤pYÇšL±}æ Uÿ O¹¨"•üÛý¾DWy&Ä{ÌÊdÄñ=óIæ_ìjùàØ'Í›‹¬DAœ¶ë?Rå7·Þ…à¤Â·AÔû€s{t]ÔIqɶb]Þ#Ñá Oý=3žù‰«oUc¼÷³n–ê—œr[¸ƒ¬T¸ä´ƒ˜MT1Semx¦Ó» eW±y^ ¿2Ùô¿r‘f{öÏRHøŸ1s—RüT¶lg¬ûØUöf±ü^÷GÅúseòÇó7ØÍ»•G.²/‡mxv—¶çœÍêjR‡GN¼ë´ÜWÀ*À]§ÞuÊ꽆eì¡|ǸœÕ+Àñ³ÐÉj ŠêTðdસ`ŽîºÂ2(À²h=‹îÊ@Â*‚eò³Çáô˜G® ÛöàÕÙ’ip^Äù*ùÈE©wØÛÄÍ÷/5¢B¼Šë{’ŠÖ¶Ù’æÉ»Âë­LšÈç¦ö×áÀM¸¾4`v+O\6º:¸=qfÐ<_ àf3à€”LYq®f€Ž(Oü½O€q7ƒ ŠLÆ0É@L,Š®L†»ŠIì^pº*‰F«<&ð 4UŠÖ+6k&›9†•Àºš®0PÑ*Bè>¡»×Üö;S~ûĽš+í ûiÝœÄ:Ó‰b}4XÍ"‹´Æ£Ø™eðük¸ç¯ß¹’iàh UçE½*8¨`¨PÀܾËD½ÁGcùX9À•*@‹ ðÏÀAæ0cÏZ}uF6Ë $êT‡YRÇΓ+8ïaì<_¬ƒ{ýtEiØ:9×2ûØâÃüûÙ0Äø0´‰W‚&^mvãÀÏ£µÅQ?‘¯ÁØÛ©†Þ6¨½µª½­Î¡ÞΡކÓzì ½4îÍÞ¶-Kêí´ï­kDìíò|Ý}ý˜nèG‡$²5!—D±}ÄxÓÜ«®a'惪£úæK¥î­êÕÛ’ÆïŠû!fÁ«GÜØã;îƒN›¨Ó³ÓúòÛÕNka%Ó,Ö·œŠ$í0åº}cTY8”Ô(©+ü2ðƒ³ƒpyDÀåvƒª¨@•õ¸bC•ÌhsÅexn&ã‚Ç1þú*X¤Žã±QXlsþ’«Ñ«F¸k¦Ùs… ø¹3É÷y$uΛ!»I±¡nfø]6Rno6Ão>â—‘L¿L~ËqúiPܨžòS Ô#×ìñeC¥‹F@5™Mª0¬åÍ—€ûÑØ«Ì##àÝî™ðÊ»Ð~#`;¥ÜðNw£VóxÌmÔ#|¬fíÝ¡iÀ/ñ»aH×KúŠg³¤[÷[%ít*H›ìþ˜`÷Ÿz¹ ÖOVr7%;á~·P—Y¿„¬Ûp¡"lûƒ ö6þù·i÷5PÚÉ“hÆag-ºë )nœî,(ü{q'¯²lˆgÁnUYƒ§fÄÛVYM¡+6šðYí\Å]Äû#Çî2–O1ÛŸï3Î>’p7$îéÍú0X¬ØJÖSò®üŽ@9Æ(ÁóE²{Ì=¸µé½S{Єô•¡ùNF%rÒ›¹?ÆüœÍ®–it32"4b .ÓÛˆP]ù %Ð`Ö ¡] oÞ/ïÆCí¦Æp§#sþ Î$o˜ŸHrNkBA :Ý{šXôËÕråʵk45ùS,ÅüÄ8)efË ¦ OsMX)d64˜Lßè¦n=Åí£o<î–iÖØ–8„aSѼ“Œ”©ã2gŒ2k"cÔÿý1Æ%Æ8HËÙŒ1‚gßÁçúÁ­œà?ã¿‚[„ÿ}¥Ƽ™½¦ü±‚2)ü± yB‹ó Óº> 3¦-XX±‡plg/´{Œ}Ø ‘" ÓŽv‘®9¯ ÿ ê4v­þ»¯~P>éDÐÙçØÝï[,T[áì5ÿN¾ÞDCÛpëz+~;νù-4“ÄŸ I¦3­¾6öxæ•FªÐn ô½öÐsý~™š‰ø5=f ¯VÏ[‘ÏŸ`ß_‡#Õ‹íx9°÷1§‰7ÁŠ=$_)š·!Dg2n¤ jØ×fHËÝ'a;Pn?cX—ÐÓ€õo@€öwÃ?!1EÐÝ©-€m9­ØÖ~b‚}ÙÃòÛ?øÁè±¥™ µug>|fÐêL»¯ÈÙÀɹ¨m)¼æQÓ£®FÀðŒ-Àˆq&Œuß8ûÛï*¶Å_]G~4QG V\è3sð)ÅVþÕ›©Mj†ÇoxÞ9ËØ~œñøâ¹NÜÿ,á±PðZïže4k#šµqšÝõS‘f¬9Ê5Š«ñEWFhØì ©–pe¬Ñ”Ìà&7«¸‰*fªî6>ëʥܗÚ­é–SæSpl9<#:@XУ¸‡›ýŠ{ˆ~ARa+ÙJ¥ŒˆÛd:XA¡ý/u×Uuæß$ïÍ “&” êD‰ÆnTPÐØe º¨q®±›ZNËî¢R—cí›ñ4ÏɃS—­q—ØúçÄ-§›SS‰üC@(ÇÚö%A‰«üwï÷}÷Þwß›™ h÷t='3ïÝÿßý¾ß÷ç~WD“¸ïˆÍ ÊìÄ´„*3öÓ—c2ÔcÎ~é{_s„в)…¬[„Å ¢ZdwÁïåâÎHç5Øó…›wÒÐÞ3!Qj¤ÂÄèk†ßÊMŽß8=ÏNÌØ€+IÕYPÂwofõÅ:òuh­‚›Çí¶ÑÞaR„º~Ÿ¯‚É[myøDºÔ ýü}HmÙ ’*Ú‡à˾îsW~¶o|¿I—¶Â"HÔôÚ7½t+8²ªíõå=°ÓÁ¸òʳ%‘u’¨úòÛ禌n°™jŒ[ú(“±užS¤d¯ÝýYïøA¬P!ŸÞÃwd(]¢t÷Þ%!Ê.bÝ-’u· ëî=ñ­«¥˜%Ú'‘Î& ûi³‚Ötì*¤­t‚Ðái¾ Kß" ë(¤¿Áºª(DÅR2šýޣ웋ÙNùÔ"‡©½‹þÓ¿¿FDï2þýä6 ‡ y2ts/Ë,9ÌY8̺ßã0Á”Ïý< hÃæn#*Ì=vE²p¾ù,¦Â1*\H…ÁãÉ(Ú¤¿¢+ßWî_Ïj~Š|¦d UœÂÜ%€ƒjM-#ð â—.!ð‰ÿgÚCáà%o\~¬f"©ÐÑöD»†Âƒí¿NÍÙP1öy–›Eðw‘¦(†¿‘í5'ÆQb¿}L¢ÉôQFåô1…>¦ÑGeÊ LádUµž¼òí:² }Sõ ¾Û[C˜Dà¢ëDdmç>F•¦Â$ÔÃH^ö‰Š°Ö7ânlÕ•Û· cÐæ¶¨«À$ÈÕÂEÓñ¹hcY4¦u"ÄE±td57œÔ¤}.¾®ŠŸ…J>l•j+0ž¡Ë¯i©6¦!šA7£„W B•Ÿè½Œ {JA8}ÐéZêtŒr)âh\°{= ážÙh,¢¿Š—³§¾•|Ä*BM²Ú7ÜUý-ž ^ØÎx©ÝÉæQÄPÖRk1Š0LÑdbÛLŽÿ÷í¬í·ÿZèÊq ®K%uìì ˜Ð—'À¾Õ«d|M"€ñ5 VP| }<¶‚â.&à×1 WP|ͤv`=Õ©’;¾æ'EN|_—¤ ˜¸P|Vè˜è‘̰œ '¹º(K|] 5P¸@|ÖïØë±þ“ñb¯’ñuÂDËK=µQPb2ÇÄ \ ÉÀ±ïRH» I šµT¯ÉU„Ÿ¬ÒÕÔh%+¿ŒwÑW`Pyÿ`²QåA›ÁÉËê6ZÝ^Îzl• ²P6â¯à’àð”œ$JÎ :ë7«_Ë%«Á»ð¬R}%VÜCúôýXñ(Yq ŸÉ¬v…ûQº4ƒJ~%Gâpî§áŒ’ÃIáS(;A”ýeìhµ´ÚK)‚¾Y¥ ¨¾â «o<Öw7Õ•õ5ãS ªoŠ]ý=ìËz*;—=Ýp5_ÏLŠœK…qG^ÃÊáõá0+„‡ëƒ½t`%E/ÑWãàJÚTOÑÓCüi==Ÿ® §GùÓÆ ºÇ^æÐ(̆7)ØWÅúc„Uú¥æ(é7“¿ñí2…(  Í²˜æ:h÷ÄÐfÉÝpÿ¢ñ]kùÊ7b;ëaΦ朳õÊœ}j(ë~,È×ù_6R†7€ '‚ü+ßZK–ØæTHk_A}‰±yÚp{Îý B_1”uŸ3lÈu‡Çb ߀>ˆÝp-­{ ¤rŽ×6’ç†}iM5’WdîxÁÉ N«è¼~gd¿&DSkSo­Ç•ÄÁES@ÚÝEý †rl_1“—L€×Ñr?\ˆž0qkc•ˆ_ä"¡(¤Äùæ8QWåE!Eà´€Q¤h&ï³JQPñÈœó Öi„k ”4Ç*ÏÓ”BKðEÐÒ´‹–F䢥ØÅ>Ñ·ä‰MÛ‚ >H®`•mo,çïY'^‚¦n¼ò¦ ^+Pbûs/RÜU;’‹4z8,Òjª.Õ¡Ð<Ò˜ _‹åºÌµ\PÒÁ‰ÿ0œøE×}!^ZÎPøì Š‘çóÍõfÄߥWÀ$`àñ‹â¤}Æákį…ø_ŠTÃW¤õµ.ˆ!ÄÊcøÚzßZŒ Ä át#‰; o^[J‘ÄÿÄ$¤ 6kó¤ Á16ä’>0ï&ý”FÁSÅ„­v±,ì“ãÙ–¨ñ‹@Æ©}0}šÚïŒ-¦{J“~2Óó#âµ~Ê8uï²éö”~ºc©·,|µ5Þ¦†Om–a¬kâygÐbNKïdPx[Âö¬2'›`§®Žkž¡]0 M'w³˜5”-ÂÀý‘-a`21Î>ô& ä$Å1TX£XS†Sã‘ÅŸ¾LSüéå9tŸÙ?Ь8zÒwXwv@{<«hàŽt| Åܬì–|E3ë÷½m/r?÷y',óO3í²5Ì·zö%Fôv¥/†Ó¶:°h ëø«ƒëïRÿ:d('_u红”ß é®÷;Qžmòm”h² â„ÑÇF)øpÙïD¬%>‡wá: ˜†f<]ÚØÅ>Ò|;uµi”'ìÕä iÀ2‰½ò­tüb–~|´-?1\™~ÎÀuàaS½oØIEpÙ3~&þ{ž“`¡SwFÝÇÂlÊ+€!ÁoV§„õhàŠ>]o } ~eß ôac=ëîáæ­S¸ֻhôó'¢'>¨s½8£› ÙÿÞ{ÃÒûüO gôPØWT‹Òí^¦6ö½ x>ÞÙ$#.°š!ÜН'È}8öå×xÇîñ›ã¦á~óNêN6¿ù.ìŠß|fµð›C1ð›w5]’ßüH ùÍ·6]’ßü?J¿y§žé7'ÿ)p"T!ÚIÓûé ÁY½¶$ EaØzÂÀTÉ žBêyþ4æø@—JÒó¼Ì]ÓsX¾dâ+I Þ¼U«ç)ö¯`@•Ù‡žâ Ìï!p1P‘Ò(lG~¨{E-Ç/æÉ£+‚jmä׫ýŽëz>ˆµ£:D%ÃHfûl;mÄÛÅ>?@ž”|!Ô´3ZÄ/BMV¸Ñ¢«_˜¬|ä\ÇéÊÏÄñE¶üLM~Í"K8:¿¦õê!6è0¦p[^Ÿ¯Oç2ƒnGÐ9lµ‘ŒX€îÚ“@ ¿gÄd?˜›!%ë… §ï:òÛε=Ž`ç#Úˆµs…UúŒ9ìn'¸h§;èEé3î ÅÁîädÌw)8QáâI¤æu[B®M@‰xoÝpÍ2bi+ ¦‘=Of¢+Ÿ†ÅÚ…™ñu[w…Ð9b5aŵÌèL¤ÈŒ‚›£J…)g Àcƒ;úˆ£#+8â@2‰’nî6ˆ}!3 qðØÕ˜@‡Ûì°ŒBdMpé¹³CµßÕðêA®ñ5B®þ£áx 5Ìá†wiA€2èÔÊBäï+לÚ£þ4$Ná8BÀ•muÛ‚NôR-é¥RÐËÌ“_–8®8í"Žï~uÄqßU^â°ž ú"}´*W˜«sÌ–;¤L±L(…Œ×3üÂy_.ýöî0CÄBM6ÿæ¼*–àz[ ’â|Ò÷MÆ–[t5¨)Ç`€V|!ñ÷°`ÿŸ q%qÙh&•œY”½ö†iÜ]דÇ¥8[âA³tîFùõˆdñ Ø3ˆóI Bë6Õ- Þ¾Zâ«ÕHý;N±ÝGˆ„ùoWfyس\×}Þ»%ï8çÃü \*þ¥K*¢ð!DR±E¨$lp¡–ý£îÚ€é6| ¤àKðzFr­)ø¶ •;ýUí×øýU\ÜÁ ¤#¨Î4$æøqQñEMá¦ëŽ8çHSUíƒß>wûQŽ…áFaᯨO‚ñyÈjìsnFþE ™ »=ŠŒýs •c’TŽ R¹÷ä—¥‹WNü©èâÃ+²Ò Øu¹UìðE©Ø3?óåR±é bkŽþEÆZGOаÈ^„DÝ–ú*$j÷åªD­’µŠ$jµ”¨Õ$&ÖH‰ºÉ|yv‰z›²õ .N¢ÿ£‰°Zîƒ:0ÆmPL§¸Õz²qõ3KHW#¥ä:EJúåü‹ó.1¸U>¿_d{`²ÄÀ>ëN̲PR¸kÑpˆ¡ô@®Í‚o/}8Mï˜ÝVìYË€æ,ZxÆÜSrÊ|“‘œ5ûe¶ß ,C›ð0V$ºÈzNçö[oqB°ÂBv| K³ç~¿2üó1½MöcnÍ_ v¤b4Ï>K÷ÛÃÁ«3¹ì9Ø€è2X@°î†ûX%`5<€uM‘°Ê€†4z E8×xã`÷û:€2ÓoB‘˜ëŒlÌÑØ<é|O>½Å> &ª_\ hNè€Z°Ü5`ê_ùPÇ€/>;?ƒÍ?ÈÉ'+“Oјfú@ßûçuðRCõ{È Ü›Å›ÏY3hõt{Û>™8pȘ¹£ÃZßá«Áèã='küÅ–O*ü]9ês·Š™ö° Ø=ÖQ™„Tëdúa\-_ͽ0§`•ZÄ…ÒÑTª—…«¤µoœ_»$kßÓ—e±KÅ$] Ë« ¨4 žsÚfxRHcj1<( ßÙIöÿ~¶!áeöµ¡eÚ ÇZH(³<YÀÄ_\VF7®@z¸÷Xf~‡f4½m6“éµ§¤g Mé$9¥“pJ„e0\Ë  X ²'ÈF¤Š {rÈf0;Îq´t8F¤[wX4×½>ÎüMݶqéÎ>ùvòû9ÀýQÝîêíÞ?ˆFÅ9Y±ûÌ_Ìô:zÒÅ'ËëTãƒÜ\ÛL!“-B!K3´ëÒ‘0: “ +ްWø>å-áˆ:h¿¼Ð່õJ£ÄŠt6y.ktŸÑ‹àÀùÁÿ UÞ 0Ô¤†¯ Cý°ïO…¡^üÚÅ`(išÿž„›3Z(÷w:*£z?§-å~†§_="—Ì}uô¥§CG4¥å¹ùá kãÉÏ£©ŸúœƒÈÑÔ&hÉ@.9URlóc²SŽýl‰i,ÛñÌA;u®£—HvÖÀæÀ!Õ¸Øe±Ç5{kömaZ¬ ¦ÞºC\GËÚÉ@oº@où#$zë×»HTM),Ÿo—”š„ÕHDáL 5îòI(ƒù׃ÉL{áë1Ëb-{êzüu]yp|ìÁ{pØ7ÊÁXñŽ!ÊÜ'ð óž·Jat³•¬Ö{­v•d¡€îtóS5Oˆ@­QµBf2ÿÐyBnði3ežéÙãÕ” 3pÂöZ³Î ³_`Bûã~Ÿ½‹¦"A—0rQ:ìó¬&FP(”5yŠn•2¿Õ͉zxRHýl4<6`|ç~á(Åð2û€Ú0¤e„lØïÛcEP:C:)Ú¿R>?ƒòù ùLµ©'q܈þS8dßH‡ˤ‚]†òù&ŸEÔC›ìMòÖ("Y\\2(&”,)É@Ëê˵,.cvÿÜjG'®S;¦ÏëÁ›rn£{ Z±Y¦@Õ§XóŸ@/À+3 ´‘½„õj á¹JšÇ`—½¥©¼O†WèæE^×<á×ZSœ zé|è'¸“#K',E jœ³éçM"uœEy‡gmÍÞîßçÑÄk,Qy'é!0Ü À}º5ÇÄñÉLhåÑ·Ë|',cÂG¨ÍÚ…b½-QÕONl j˜¸Ó©»aû†pÏ–0Øþݺ€ÖZIÊØIÏ÷~¼^DîûøÁÞ<˘pc›o¿uïYSÖ“w^^+Ø;šr–©½Büз¬+M}þ¹2ÏÅ?Éiç.Š=æ´„y¼n—÷mÄé^/9ç;Çýtf?Iÿ}àÑÃH%6©ÀF+ ðÛù¢C2’iCÎã¿f«“§ gA?Q‡9‡Q'8ÑcÔ NÔ¼F†2ê<þ\Àq‚-[Åñ·jÆâÖÛdCéEx)(7×pš pбׄíçªÑ¾Ã-6I†¨±Î¾O¦!|xà›Z+¾Ì gŒ¯t&¦]T}%[EÇV·êx¤î²Ut¤®¿E«èÀÝvü¹œ¿¼ƒ^.æ/ï£Oˆr\ßõ¾K G¡ä -øNƒÐ‹EVd»0×ÜØ%\0Æ‘i`D‡l·/4p·ÏàŒYOÐ s­Œ—_h݈"/™¨'µˆD!ýŠ-¦8)Xì5õˆøu̇ñª¿g¶B¸mf±_go@,R¨4!çœD5ûœÇþÍg¿-`ŸIöÛb°³2ö]û ´VèT]—ÁçÌÍD:½LD&š@þñ3-"µÂNÝÙw-XÕÿQœÐwœ Þ"ó`>·Î±Oï"ÐêoΟp+(ÙÅÎjsCÜ,jRSnˆ×þˆãI²5›à U'¦±Ð*WÍȃ¹Þ}^†³B¯–|×1Õ¥©ç®Üæ[uÝyžÈãvs3Á|·ûNÄ‹ž9#W£TÉZ÷Äy·?)Ī˜¬s¯¡¹¹dƒ`.kÒ¢y>ì\ö#V4Îë9Ìé9ýå|ÚÀ³E")¼É±÷­}1ÍVÄ´"6…=àí"¤Z²ÙwÂÕÄ‹°ýÚ¹°8Z%ý3U„(ª%¢¨&¡W)EåÿÒvýÑQUw~Þü†Ì8©Í¬¨Ã"£… ž²{b+çxöjÀXÓ6Jê²ÝOŽ‹5Õœ6ÁÔÍ lF7¯“ÁdžÖt5ìÒ6»°n JqB$@K@ªA‚MéŒmXÔÆŠfï÷û¹÷¾7I@=»å2ï½ûîûÞïýÞïýþºß/Kg&§¦˜ß±y±þ6éñ³ŸNzùr0¯D…R"NŸsyh0üH°C¯C')Ý;aï(©S^+vƒ£n¯Ô?Š’ ½hK÷Ž:C;öÅ à˜o8u€™)Bš–ЎÂ‰pu5Ü¥ŒìdJ‹ì…ˆqÈ s·¶dú—™ÓÏ!Y2è}± h¼JñËø:²ƒ>œ *W8!¢-~}…6ÿ CŠAÂÁ¯~ßí™%–Ej/,Û„ñðVñ?z>&T+zËœ,òtУà6ztF<0¹Ââ*qù´ÁF¹ik0ývË\}¾Ëâ?³ nÅ9¤w¯F®ôôÜQÃÑÕÿ«¶^ÂV/q¹ÒÆ´c(áÞ8-âÂ*Ô´ôEcf\­%ÐwIÀÄ7k¡X¢— È­èÙJ™{èÑÃï=ô 9aî_LÖÞQ/­dvl­9°ÓM`:ÝfÒÍm©KΠæƒ%d ý‰Ý × ­7ö©GÙ‰÷Ðÿ¡~P5”‡Ì4 µrš"Ðý´º«Ýýºã—©·¢•6y/­ôȈžÞ3^Rƒ¸bL‡ñ*ßX‘bÜvC­§øÜ¯yøøßîËçŠý¦Gî7O;¬8”n½¹,4%b·äº•«Z3 4l÷(BN&Z×ÇN¹ýv¶Ë‹^?4ºö¨EOß:å>7§#v§;ø-Ö׈ Ÿ>=¬⥌¥:›Ó,ÆR•‚¸Ç¾ÏK̯MpâºE‰ù•øµäù¨>e4騄 0ÚjºåÄãšÏáhͲ°…IävGKqUŠ£½%‚¾µ U+—NKL’s¹˜c8ÚòÌ¡<½©Ñøw_eÙ—”ûeó*É®˜‘E6‹ÍÒ-UpÛ [ão ¶5^g9yaWïX-q>`•á kÃæž«-¸.r:]K=€›v›…G/*Ï Œ|j3`ƒØÙ2Iƒ‘‘f’R‡¥A¿´P°ӯУ¯]àLlåÚ\\æMëÂkŠÛU_àCc{´Ô+ʼnný¢äú{´Ô»‡·ûóù'óAX«ÿ¢JÀå€C&àrŽE7M{¹Ï{þ'óçÍŽ¢gNÙPTô‰Pôµwò£WïUvßzH+tŒø¡_¡G»S:p±Íö}ÃöýkÅ÷?QJ±‘óy¤ Sö·8²¿Å‘ý-Žìo›ú)?ÜÅóÓmo§‰¬—ΆÚèM‰®h)‘ü’¨Ê?O—é£Ï+E€³ ê †ÌÔà>¡^uº1#·‹!Öl;IIÛ .=û¤¡e=žö˧ò‹†õEš+eaò§+ŽˆI 'qœýË øAâÁ-lÀâ‹ð‘-,roD_ê÷E•àü’9¤Ý¢/Ö/Z‘l¹€6Æ=œ@tÑ9¼…··ô¦ÂIdV…Œ]‡‰\nÔ¹+F·p²‰VC'›˜-w÷#¨òZ HÒVé0ckáß‹ŽuÁºys˜àçÖ,Fü»B§QõêþbözuÈü€rûUƇŸS&%Y&->ŸþP¹¬ƒä³ß/Šáþ~Wßí-FÙ«îè<ƒ™bf°€K„Ü! {ÿÿ%à¦\²\ho$|æ‹ßôs 8*ïCB~-ÔJ'LÍ?a.  &( ”€ lìõ,0ßÀS>¿ÄàT”êy)yΨþX1ý8%îÜÆWlà¤hì†5d_º‰(dĉëVQʋУïÑ¢×ÒÕ›¡Ö4Eõº¥By”ôÇàøc†Z=ÅÑçy§Ó-¼Vìϼоœƒ¹È"Ø;ÏP! ÍCÍœ¢BšOA òŠŠÓÄ-ø¡4±éeKSe˜t"ï{Žï„—µÜPÞ!9²ÜÜî|¬ßJC)•/ñÁïw˜·‹ØÏÊq¶­¹¦^‚ç°`ÒÇa6¡_ZðÝ—ILåeÚ¼?_æÇhá`eÆÃ•„y‰€É„Ó³N¬d÷ÇvHÛƒ-¶#6éqPà¦Ðó:žq)ÔÈÊK¢ª0”_Ù›éãoæ’tBR—;J†:R1@µÈ=îþÀN”ÊàΗµ¬Vó»3"®?@[Dë]ßCñؼ[%y¬Úkª@,7IÒw7t~ÐUd3Ró2°kÊaò=ƒ;d·a÷f®N"þ™$≸m$âÿT$ ñk ñ¬µšBè×Sò"qÄÐÍ«sùv’oHL ¶M¿59¤¯Cƒ|"¶ 7( 1è3˜§Þ\*f.<¾åã=ƒ©ô4®ÐÅ_$cÀJúFF!áðbN‚ð›Þ³^ƒ4>2c«óŒÍƒæ¹æÞ|Îrùe<ød„Ò0c6ª"ò;fD.$“+ñ®EöJ~,‘½YÎï.@¸2•c2šÒK& ;¬xxpظx&ôµ@”œöÃ÷/sð/¿-‚Þo>PÒ¼¿ÄÄg9.ãwMMµÉüÜâM§µìf“;tv‚™§Nîc›yá°ÛÌYìxhÈÐÖà†&ITå—‚ iÏ”e;ÁO‰ÛÛÆ/ñ í¼ŽéWèÑÇ&Y{È×ô›Ï·¿ûG6 KS-\†bR¨:q!ÁÆ…l\H°Bî “Üûqù•7TJ_¹Óš¢U‚¿¬Uƒ,õ:grý–9“Ëé·Ì™\áe)½ªðg-þTãO þ¬ÃŸZü©B»æ—´s1îQg^ÞÎå×ÏðUxE;—í~¯æ -ß@ËR´CË•hù;¦Fµ欴Cj!úW5JÄØ·=Ï¡Zê ÞÜ>_ç°ÖhD¨£l~/¬wfÿ:^Õ>_9lÏ ½»Föm¹5ÎŽY7¯8ú©™ôMÓeúáD8Bj+<z’Ê֚à ==k¤­_|Ì›Ùògn¶â t%Ýé©_2[1Ÿb*<^ïÉÄŒ¬r ‹Ž‡vynmçjè·óUð+@Ý|¾ ¨[ÃWó+ð^Þû*ÞûBx ÖQ`°N6[zÊö GÖ«ö*¿Ç>‹Â”¯žÝ1$'Â_oÇ1TÒªV’ UºUšj,â/V‡vÍ íš·‚èo 8U/;Ùð—²6®yh5³Å¯Âã ƒª8SM<¸‘¾(¯2Z£ ÈËPì1àK×(Ü k0']/®S;.U†‹ë8…v]i”´\%º^g[G^s¨Ì”ùÚñFaªá a¾„Ý©6W!ì!)fО»ÚYD©ÿ¦ÂßÊ”JÛ´!¸ä7Ÿ?—"Wß•/ ,Y.%w—½ÒP—›¾€Û½±OY£ìÔjâ‰Ê‹ñ¥"CO¦°¾›°„3Ørc0Pæx%YTƒ½-‚I„ˆùZÑâ—ÍJâhBӤߧb¶l‹d޵H8ÏËrJžÒ4ËŨ’ôPP º£ öŠˆh“V\l),Ÿ5’ß2ž4)ÕÍtWPS!å605­|}ŠÛrGÁFT’/-ÊN25­5ÝjªÅ$»­˜‰:¹/¦ZÃFS1¾ ²ª3YÕú=1gý6²ÊË!«ûgÕ‚=v²ÚÆUk¢ÐŸ’ië´LŠeV«ªÙ*R·LÜttµØ¨ë®Òh€æ¨¢ ~9Ü¢(ˆ+Mk zˆ)èaPÐ÷f½‰R‰ Ÿòh£,( ¨×„C7JÄêk¤é(EX…˜6z æÐË÷fÐKäyÂAVL•T.Dsh¡Çac¶Îì=‚þœ0N¸œðapÂÇÀ M‚ƒþ+¾Ê°XÇ d`WL”YUýÚž#X:üá…Áþ*ò×0XÇCó0P8lñÿGÄ{m¬¬€Õ°L€µ`}`ý`ÅÁØŒ÷ZñÞx/bQèËÏA_‹BŸW¡ïôn,·Ÿ€¬7ƒ¬Ëàa!‹“4L—Màeî²æ]&k®ÑÅdÍ}à½id}UYoVdRd½j7[v+$Ö¥ÍâÛ¤þ°áG`нÒ|oÖ¢YÙˆÎ}²µ‚B8Ã,}ÝæP‘‡ûIý³'órDûê¹’ÈSÜ€"‘»ÀÉÅ—åÔsªÉNnâÂYmé§•nL:ü†¡þY­DO¿¥¬Dä“ 3 ¿c²)Ë8ôq‡…ƒb”ÿuµ66‹Ñ+?ärò÷/e×Ôd€›•­-¨OòÕýçš;¸š ÝàÒº/U­L“²XN&‚ÿÑÎfÅ Ù*U%ÒJ·u"‘,m¤ëƒUn« ír._aâ®4t.ë|;Æïš½«H%¢lèS’J œ?fX\É—‰ :3ß‹J* ß=~A5äE¥ìMïs-øL Qx¡ßÏ~ùGä'† 7—÷L‰¢¾‚ü× ,°4:,×WÂC’fû29ÛÉè“bYò-C)–£à#óDƒÑ«Ô ’~ä¼—D/¦6x2»®th'˜Y…}TU_ S+Ÿ>sƒ˜>³AUíÍ^:2vAJ²c’(IÖ­åßW„${}ÂÓX¢òŒÉuZ ùZO è/þÃÉ–ÁIÏŠÓ© øp7°’@2ßbvD/x­évø‘núÓõã*@N.>Æ:á`BàGD}Ü” 4ßÇ”Tà“Ê×xOwÌC.Ù-ú ܾ°ÑÇ )AFÊaãÅÄ-ò ˘œ,ë KBŠï÷v¥ ¢h€F@öb'â“<0+#F‹ÿmX‡Ä¨¥ò:.àÏôŠ‘/௮cÖ’`£B% O~=Ž;Œ±Eú=jÇGÌÃ÷žr/R",šc¼H™ ÛVûãܰ÷ 罃ã°™Œ ¼äp”ɦrfŸPíQ5? ‹¢ ÐÈ“Y1ele xdý’œ R(IýUÖ¾íÉ;9Ñߤȗoÿ•Œ|éC¢¢(BŽ’Ù™ÏÙ–;¢K}¸äð®lïæ¡…^(nh9_ìí-¾wGoäÆÅ7pãîèMúphG/Â?â¯Qå’øüé²ÃœÙËì4…üÑŠy”zš?ó§0Ëï<¼TèñÞæ3†yha¸¿Ê®.½€Ù†Â\éÔì†ôkIÏJvJv’•ìx@Ñ–6øto’L 8GÖsàS}%'¸£hç GÅå±¥åFè‘tü& 6¿œã&Úã~Ôc3KŠvX{eLý¡Í¿tØè[aªÄVŠ%P¡é“dv[¢j·˜Oëpï¨Óì í8ÙÉ0Ñc|7Ìœ ÇB;Î™ÃÆD¶ŒxÄ0;’±hýŸ)G ± ML¡G× â¤YTSÑ6ÂòR)PžaI…næ8YÝÇó@î ,7¸NŒ¹í0\¢SìV|YàáBM¡}gÙPƒ3ëK7ž7@Aü¢`«\½SZVbMWûrƒ¹ouáqÁ5oÅæWíÓ“#h3²ë1†kF`×`PÔòt";ß ÖÚ;¯CçõªsºŽïákþF}.‡éæqô4¸C\”´ÑÇ2ý!¿ò!®ºsÃ"…âL‡PÔ:ÝáÎï7ÎÑL®eï×j †à¹žÌw¦ØÛ^§g[s£uz¾×Íͤµý°ÈÑ8É~Ü’]ƒž)0 î\Á™£"tKA4 š4‘ܡŇí”<dX¾Â`ß¹F}x)rsB—i¤òœ¤‘J¬ ªY¤˜ãi ŒEYYG½MîI,Ä&A@[Õ†Å×$Änõ)97€åyƒê°uµu^ݶÃÞùSè|›êü)Õù6Ý9u¡tõÊ0§Ò¦?§;ú«<|ú$Öí>[Ö}Þ¯V±\Â>¹]N#OnаSÍqÈy§ÚævêImÄТ}õ¾N±âtÿžS$_¯œŽL†”Fý<ÀÏ™ö^i- Ú‰aˆÑÛé¾K…ÂTÖ »46*·i2ܦ6Å#±-ø©œ“µ­ËîY×å\6Ú€~ÑF/Î,Î=Ô ö£ `¿^„gÖÄœŽ©Y°–HjÚÂ#Á›^-[þö¸ü”î‡'«O‰B[>Z?d|$5>°È,û¡;gud+‹²ÕZiJfºï:jyWRâvÛš„ŸÎ¨©3êAv!˰@,µ€-Ê·ÖëlµÈ‘<ôØÌ¤f–¹v‹˜é2ó¸ëi冟óòf,íwYÆÒ0uUAí¡ˆ eêZë¶UÚ†þ]+\‹‘cꪂÊMw—l¸–œdn5ôËnꢎPßc£2wq`†„ÍŸ]%í§³Z9¥°oööžq%ÂÝÎõbPÆ@¢l’ ":eÃÏØºàáï‚VX ­°Í°dÛ›V˜©†RØ–«V;mP ÒΦ•šiJ!ud¾×ÉVÏÞ¼V\KñlNvµòïÏjš”ú¯†DðBûz¥Û²¥BWzr»Ý× \“‰rŸÊ¨»ÑauËak,˵Á5™¸%m¹ôxý{À âÜE¸QYâÊm–8göK¶­(ÏÚŠ¤ÆFš+á |@ª‡“l ÒQ>Cÿn·½nAÆy…Ë"HªÏ§ù9 Æ 'T¸r2&M7.m{¥WAôËNÜQ°Ec¥Ë"F—E†Á‹‘áØç˜ 'Êv¹˜Í hÑ·…°ËfE˜Ð§;¾Ùh×§­Ô$Oþô“œ]F$¸‰0k¦ ÷),Œ¢X!m²g¥ùö¡€}I†rLicÒ”F¯¤]›Ñ²9RJ19¢Ý5‚ÿÖÖi~N§ýVÜʽE׉0Kä„Ûȳ6¬lX‘R3~ž®û^u{ÕÚóŽ( r(G"³3ùY¶†ÞJíá87l¢Ò úÓÆÞ$ ÉË4ù”ˆ¶Z;L#€iÔ¶Ž(°F5XÃ6°Æ°÷ŒbïIÛD§F›è´T•¶‹Nã&Ôî9®D§ ½³6^LtŠNBž‘¢“Ão‰NQ›è4û=Ö¢“ÛÏÝùýR.ák’™èŽ%†˜ÇĪŠc¬R8F6®~>ûû}ª@Oâû©+½8ßL›§Pÿ’¬Ç ñItVxJVm\‚Ô»J «C;8•” ßŒ»c.©´Fó }$†Å0m}ÄÄ*>cid¤õÈß2„Dƈø`,bÄbèË W@&ãZª[Æ7Лtúç3WÚl b1'y1'£ÜØ®vÏ>€á•Ìk£ÿÆŒþÁ¹¡-ô.çÏ;¦˜@­lwrTB›÷´ÛƒHâJtX±©ÅÄT ”`1^ÜGƒÏ9ªÈQk0©§4iÒ¯l]ti± µ‰ðsÿ÷¯½½¶¯Aqf´Œù4>NG¢é½/ˆ"çùYôG>|õŒ@©| h~„ÿ\‘‹ÿÇ%þ# ÿ°^©›æI£Á“9kPl'`¥öÅœ«œOÀ2Óêˆ.ð³©3ÐÑ5"C„–ʃúãÍ·ˆ&óÌóÍ}Î/#yˇ‹ß5²æ«84užÎ'æ/yLýG“uë;2>¦j/¤ÓÄç|s³ÍÉœ'± ¬øž'òxéú~E ÿ¹‡ê»ÄPëõP×YCåEói†êr»ý<Ô«~ÌC]”;TŸj\*¼9J›¸ÜÙnÛVcÀrÕyÊë蜀Ïc‰ßÚvxä¶3’Yâ·±ø¥~F]±_~¯‰¿kþ7w«d«øT"¸ŽŸ²ø75‚±(UÁ¥ûn1©v‚XBÇ–¯î[übn–B”ËÙ±/à°½¨õ–bͲŠÁ²ædjTýßr9²,˜ö„V&'”2ùÜû¬LŽçh¾$~ïi—Ñ‹—€¼¹×iÁnªZV””—õf¯mÍ)§5ŒQ­ýþ/m×gqÝ¿ÓÝÙ'Ý:QÝD.6XÉM¢Ô¢˜Æ%Ä„?N ­ÆÔ8 l'#Z1 ˆ‰Ñåî°cεl bAÁæJG€ek¨l Œ‡9@µsW»4Xv…é¾÷ÛÝo¿“Œd:ù»ïûv÷Û}ûöíî{¿÷Víþ^šbɛջ¿ŒÚ Ëü9•ÿ BíÙ+ƒí\K=QˆŠüÒã¬é”è%¢ÙbØû¬BpÙ‹o(5_Õ:—¡æ«^Ç¥ÐCò<¸í ßÊ/趬|E77oX7oX5ï»'¸yC…›[[ÿÉme3wÖ[tDÿþ˸ì_i[#F¿m¸³í0>b‹ÓÍ‚ñAþ?Òöe­tkce§™?:°&ËÓbg–?o¯eíî¿ÙT·'-3Ø4ïRe„a‡B!Ù/žç½ú+0×`T­t3íãâ@ûW(Ìâ¨íJ·Ãtç^%Óñ* ´YéÖù¤é¸Fˆ¼KzOîé¸íÒ˽ý/YЧ܋bRIõ‰^¼YÔ4ÿwϳçÒ{'D­ÅR5âhD=ÑXGmK/E#:°-mÀ¶´Ý ëhаŽ ëhwé|²õ²—ªFŒÅαoïØúkшį٠D=ûcÆt÷*ùà3®J•‡-†,|`‡áß|`'ß-ø>à»øÎ{`)¾ Þˆ|#ßï Ÿcó¬v§P‡Ò'œ@ƒÆ¼O²DƒÙàÜõ@¤Õ =áÈ”z€N‡×Gd‡Ð‰um£Ç¡èNˆžŠ¾¥0™].5vè—©h¾j÷F¥hb]‰ÔíCëC/ãÇâ‘'±jîF·6Sõä©1i(à›Q³nfÐÒÖ2™ŒØ"­ÙBæOƒ-Î"{RI®Ñ>Ó6 ˆ¬ TYkèR†¾¡N ”ŠݦÊO£x*µ)­uHYNd#Èêø‚lkÔŽ lpÛ²€ ¨S»e È6¸ ëê¿Ã: ‚lâ4*Ùnj1ªÚX‹Ñ‰â -F—¡Åh„£·Á©ÅèDú[‹Ñ¥µ]Z .ÈF5ZŒY¢¦hrÛ²4z« uê¶¢†žBÔ¤-ÍSv¾/D¥gðÔûÛf Èd來 +ž"7Nz ì¾ìÞãrðÔF(÷è©à©/“fÈ£xªÅãä©^ÆØ ²^¾áË?fñøÔ¸²—ÁW­Ð^ñU2y?êÕê1øŠž_Å=Нdþ¸g_9‘f/Ïà«’ç¦ìù‰4;ä3‘f‡}&ÒlÐg"͆|_€4£bœH³¯R]xÿzŽh35(°Ùk>löºÏ›½á3ÁfÃ>l6â3ÁfGœs€löÚŒ9 á1Ì€f–Þê6–²oBÊÆ± =¿’‹[ 6öcpÄ݆”¥g4"¶è„Ì¿Å=CÊ–9FÄ›jDÌU#bh+õñ•æŠñ^A%mL£ ÇemLwAËÛ˜YÐñ›mLÇ÷@Çä{ßÙÃáèᣪ‡½ª‡ë¨EÑOEáßFá ðï ð1^‹Â?D¥®@¥~Jý-ò}ä줰£“>P¤ƒ, þŠðŽiz;wÑRtÑ8ºhYI†y j#° ’aÔœÛäD˜Ñ¡ÌŸ™9:ñ㪋æ©.úº¨a¾¥HÚ/ÂC“Ê2^¬FÖÆÕ¿Õÿ Õïý“‚CÈé>8éŸÄrµß2ªOϨúZæÊüÖYªÿ™ª~…ªþº-¢úÛ,i¿K„ÿ©å[¸˜ LA>eI¾•¡«Ú!ß² nÊ”oY)ßÚµ|“ùÛgÊ·¿tt<Ž:¾Luü‘ÍÄùùEd >ÜÆ“ÔW‹¹´6,ê‡hQ_Œ†§Ü:þÄæõ6çÂ~H/ìSzX¶¹uÞ‚‰êK¢ñg‰hÅŠh—m¦³Å6ƒT—€TcXíuVn7ŽeaÌcc&H½C‚ÔÇ5H]æ·Aê¬F±IÕýÔ%ŠTó©ž["…_bOqüK”}Õ:xS•=¯å‘œÿ_ÅZþÕÝ×y7üãgºzSÐµèØ¼Ùa®B>h ë5ÅÐuy±5+ÐõÑ;˜·ù5)š)47‚¦+Š¥õF•d'!_O¤Ô*àeïh±WãÏ:ÇàØ l«Š¶UüB5#ÈÖ„Kó—.k#oŽ’„þ¡ÅvËlìõîÁà^ƒv·ƒÏ†1åíT¤wB*> ©ø#¾ó>izß» Mo/F$ô‹èÉ5’ /º$ê)=éëp•ñåªëç:-÷©ÈZn¿BäÑ«Ý×j2‘Ç tª˜³ÁŠ] Hs³ª ãÕû'%­{ž¯":âzç½TÀGˆ/Æ(Ї*<Èßû¹Ž/¡¼}µ rì.Ör\gœ©Öv›Z¼›±ê—Jb…òÌÖv†<“µ=Èg½ü"R‘ðf›¯œ*#7©ÊíÝï¶vBãWOŒÌ€ù7€7“sxÈê¿;n|©Xr\½&u$[c±1©$œÄDÚ¤„<{nbȳĸ¾?]úôá¦bF†·ýôVB6ó­‡}öi5\ÌÃm%¹þÈ¢Gú(T-;Ø‹¥±i¬•›“5ç­cWÃþÔ¯Øý¾¯ôIZtÆ‚p—âuÞpqÆ^~ž§Öé­Å²§P¸½l ˆPxÌ¡!ØåšÔ¤»´v…êÒÔßkþ—`¥@n¹'¬´iÊ¥üA‚Ïc ‰ƒŒ9lë)|Ï•hòq‰ÿ–1ísNJ§Ö©×k†œKg”ó—.æ+Á&ž\ü>iDuŠEH?F]^G]º°I¡£Jz®@]ä˜?ºœî Ú½¡[»7tyt>Y•×eU®PUq™Ua×¹)óÏ‹¢c—˜!ž¤ÿ^ÁŠ—¸ òÐ=^~¾dO…þ®Æ(º¼“vÛÕ9ìŸbxC=vÊ wFo¸e{ÃÍe‹Ù°cÑ“[|¯Ë:§9îkÔ‚ßï•o§ÖX3J†+ÎïX­ð'Õ~OL:-H¡o ¸ïK»‡GùðBÁËÜÿío–Xðß7-•N <û7K Ežµèœù¹Ñü‹÷»×PèÖ)7i£˜oWí`^¹ª„?4 ¾¥PP=·‚W¦0VÒ`ÛI'Û¦5ÛNi¶té|’W¸pÁ+·*^yëŸÏQ8Ô%Hû‹‚´?ÿE?•Õ÷ îª?ó¦D30“Œ…²ÿ*KR¹Š7U¡Ðÿósw îÍ÷Ì)±p}‰’¾± ¢}}ù‹6t5û¡Ò_‡›øí"/]ÅÞ¯n1Ü¢#¥{báù–®b×U'ƒÛ G9¨¬;¸F*µcå- H‹£¢|–QO gZgíeB2q˜‚8‹@HÙ^‹O‚-¦¤×T*ÝüÁiN+»»<¢^žÜOöpð ,QøÑ-{ü†´0EùR~s̱›{¬†÷ïç´"»ùi1éž¿UL@Á­¬¯#“ïÛÁ¶…¨\è@uÎq¯â9+i±cØz°ŒœviÛB¯†ìö@v-@ûé¢öäŠ$ßzˆeÊÔGùÎ-×s°G¡C}ÉóŽº$ øíÍGˆ½Ĩ雏ºÙqÜ™Öà~iÏæ{òУ'ÒCÏo[æ#6÷•ò«)°+!8з ée˜Îæú룮(SÞÍÚ;>$Xljý³»8d± ŽÈ1Êã¶ÊÏ…TûåŒÁ÷¤¾ 'b=¦ÐˆbæMéÜ`øþ/"œ.äTëyaŽ=Ëg //¹çÂÍǯÛpŽKñe»…T˜N¶=‘` 1ɘÉéW塽ù.ã€íÛQ£ÓÕ¨t7¶OÄuø‡r"5éÜødj±ä[}âM+†[‹LD'Ï‘ cv‹1ˆ’~5ˆŠóã?ÐúÛ-æ@jÃ@JiùÇ#K)¿š&©¤XÎã[™úB; âë s== #¿\:ÈzFûÖZ,FŸ^hõtUîð³Hÿí…Шç®Ýýx€ÈÏ Ä d•è« /·±ë÷ÏŽ<Þ‡QÖ/‰Î,=ŽRâb@5q¨@\°ëp‚ÆU˜ý ¼¡gm×a÷±Ò-&erÖ?¤:ÿ~‚§ÊJio,©_†O•’7lÎÍ ïЩø#îcžmµt {k4ìÇdðqI*2ŠÉ cLYc2xÅeÌÉ` Œ5N rÑùÏcj6ׂŒÊˆácbIçÙ6ö U„óÃÅqÅ‹÷Ó¡Äß:@ó˜êºv5ÉŒë¥Ã¸_:oÉϪÍ)*”v¤±ÀÃýß»ÁÇê»Î>,Æ[Ye7Šú7FV oþ9íãæ ˜À ˜Tì2¡ØeRwYÁ->à.O¤ÿGÔƒ?Ÿ“Ÿ¿ôwkXaÜ67ü°9·«Ò'ugMb¾(:‹ÉJhêÚû#&V»1]ò„.QóÔWtìË’è´ƒ!þT |=O1j Õù·9Mjö‹§õm{Ád­PS\.f&¢Ø”ƒÉcf4-ÏQÊѱý?ói&è4<+ƒLéžR ²ÝáaNò‹ÈÕ¤Ý`ssœökÅ<3ò´cF&jýþ9јë>¢J¦•Ì tTR®¿¦u=§U=“ŽzêéÍŸ·ÜÞ¤Ò¨˜U›¥I§‡7OñÏøK?$æ.o`'›I8´{<’Æd8Fºi{ +à H›VvzF“ižLeþÛÊ.cÆ£4šL?#­÷ÛøìÅø¬§ˆ³ÑÁ<ûªñYbOÊS†(mÜ—–cJ‚ÏÊüô@~öbùÙjõÙGÖžãþÀ1‡×<"f­o<¢»RLH‡ŒN¯ £6˃C[`§ì€#šÈš€#šÈÚ€¥Cù¿l‹˜ÑÈFP Åt™ZL©¥ð©8sÜá9Ú¾˜äµ¼ÝÇ—»5Kü‰8ê,ó7ô`Õ8¾ý7¿¢ÀIy 4 ïrð5¨$œDÌ1õÍÑT1ösJÂÏi˜Ïwf?'ÆQO'‚ÜhyN”ÈTdŸW2`8†°å釪5Pä@ûõcßEOe„˜í 8Pà ƒÑEBŽýµŸgŽíAt¤PdåQ­æÆòP¦_Œºž€ /·žæ›¬lŸ•d×Ö—»]³ Êæ€SP6LAéðÆFÈt©?pc¨r¼tòîݨóIgnÒ›ßã`LÆyxuý§Å5AH2/Çø:¯öýgq| J‡¼¦Ê)Ò‡˜£ÇÎ’k³#ÖÏÿÍš(ÍHåÏ_¦÷7NAçh¸´(¶ á,5è.:° œBÍÂ5Xú²gAî™å‚…â-4°G¨Ó) {'¿àXJÓ¼ÆgzÆ#­2–ý«_+1bCª˜‘žÜ£QZ½Ià{´¯r„ÎU D{#qÊxŠTx#'F¢§*;´O‰%rô S[Ê^–Ët Ö]”[2£dÄ’ÊJ:¹9àZ>‹²@“ÚÈÐo §g/©8xÀ®‹Q½Ü5[íHÄW»è`nxW¤e5«7Zq‰ÓETš._}ÍõY4O5|ãÄÛÑ|%·DÂ6\ÚqéÄ¥—4.½¸ôã2„Ë(.Y\ÆqÉQz¹bÑZ±:ºŸÏb:nßîÿ“œ\Ô1Æ }v/ÓvÕ‘Wüô¦™Oßå`Z†J•ø«V~*¹¹ëY™Ùâì1áõá x܉Çt8H'žtáI9;„'­8p¦BµÍ³ÜqJG•ø«V§uä]CCÈÒÆ°{Šóp)|xNy…èȺ>@8®#­=ýseÝÒ |~Ø–£B9É“âdEd)tó#*ZŸG†Ÿ/þŠ?êž*:©Qü-_"þj^bï¥ ‘ÚÜà]jµÂ'k°$¢ŽeOý.ñþ#ô󮻸Ééù a{B<- ïÅÝlÓBd³Ð±Ÿû•1):#¾j“4ÇLz H $U„bòCtÊaÕA·Í\(ú ×–ÈTˆ?8€{Ââ]Šä&« ¦_HO™doz̶þE PL†Æ·m­\ŸE’J)&¶¤Âú ”Dã-ÂNê¸TüÙ8£~UùY u±Òw4aæ‘úŽfLMôPcŒëh°ÉªyÀWæ4ùÊLªr4a›(3­tÇ °€Îƒ(^bN”á¥Ö ù>@K%¹’ñÑóU­@™Tx>§v‡M —x›lЉÞéÍž¬¿”5e;ÇgMâNÅç_©õ/T† ±’9ßeö¶WÎuSB?äh_Hµ/äh_,ž¤èØaE2bæúw®£Ñx¹ —I¹x ½Wí‰ud0&2ï }eÒ?ø¾Óðv†Ödô óyy$÷£·½ŽX˜¼O/³õ·7ÏÍ ŒŸî¦{^¦Ï[#–/Ü…cÀ覅Ÿ9bV=äWëk^‘s¹ŠÅÚ²’ ¸˜`øŸ{ì©Z¾_Êÿ×Ñÿ#jÏ;òiT ^#ž?µœ^¦"),ϨDN>ˆïÛ"U¤*/Ã`ßÍ_%$þ <{Ò–Ä?uÏ®å­(sjy+Ê,§–×(¿s'Ûç—ñ³^¨:Ç-ÆÓ»Ö¿+}Ñ[¿“1ä ø.|×NF›_Èw Ö!åEe<£:ƒˆ¤@4¥ïCŽ^F°uNòqðélç$8ŸÏIž)6"<ã½ l]XÆ.‡²tˆ”­K1Ä+  ‚²µÜT¶Iek…V¶Êü¶²• 6WžwÃ9*[C-~+?Ø`YùWTü3hê¨5ÿGÜÕ·U]yIÖ‡“HÄz’APS Ã0à¤nÀ¼4P2©i³e2Œ¸»™â]ÜiʦØZ#i×;ã@ÊjvHëéjØPÌb@]ìð±&kZ'qÁ€Íšâ²m˜¦‡8tß9çžûî}~²Ëëéé¾{Ï;÷Üóù;a[üà-yómÒ’¹ùò†D¯£ÍT6_™9ØW›fm>Ë“»/þ«×N:û¯ÌÅTúi1ïšc÷-*@}ž¯³÷_)è¼ÿ‚¤tÀ5mÿuŽýÈ7§iÿÕÑ+ª¥Wdí¿ÖïÉý‡+.²ÿN&½¨$moTƒL2¦ éíU"˜ArdHû†­ f3Ä=µS §V„=5Ëè© p¯EdÌUÿºôÔÍaçèðÍdPl+Eíù>Öñ3†-’÷‚Ö4ÌÁ·)ƒ«è©ý´Àmêà­4x[Xú‡áJª¯àSÚtÏ1~ê÷ñSÏ1u²SÁO=.ñSß»QLDÅOm•RQâ§¶È Òø©ï*ø©MUàšG©ÜòÉT9í;Šž0ÜFè,””Q+ï;–ÿò«%X-ÀhpK0ë¦E­'ƒf{X?,Èõdî_®/¤[¤ûi‰ÕDØÒÏð( ûÒFõíagp®6ж´«ã§iüeü4ß¡½öi°`„O*³3lÓÙöþÙ—‚Ö©²çnbϬ|~/™D„KaÈJ}´Íâ9!Æ!à´—Ì ÒÐ'd…½ÚÔd°É4i0Ø„)b/ ¼ëå`¤ˆéÁ¦ ¯û¥d¶¦­É­òøæyaÇVô5Iš_üÖë>d^nbÞØË¼ÈûdÓ)¬G °Ö¯½_‰ï%j™Æ7*½C•@So£—ž'’¼€Qñ*iüÎTûšHí{’Ô¾fRûþƒÄ-¤ >¶Ù®½â8ÍJ‘íšnrs'ÂVþJ„ò—ô쀜:Tû9þˆ†ê£ž…0Ô¡f•å·žàtaO§D~P:ž ËÜpXëJ+§Øƒ,Î…]Œf-¸?,…ñ tãARpÁóÜHM8+ò?;Çua‘;È·Þ/Š¥‰ÖCaËw3m0N\BiE’ëà/{ƒ4DöÝ a^™Dr@®¼ÇŠ“õ\v7ÃF…p>uDâÐM RãÒÒþª•©/µ¦nùÖ¹Þ©4¿- ro¡fŠâ¯Î|LÜàÉÛßdÏŽÆb«k«¯y‚¾ŒRôiõ'tì’¥bêiͽEY{D{mxÐAr’’‡Xí΄0-_â®ó|ó®/±ôäEµE¨ö‹ µqÞ?tÔïÇH¿ŸPôû1Öï'¤î6v9êm“a™+ƒ:Û¤¦³a6~ª3ØnjæföN}ÛÜŸÒÿ™¢aap,£B`±’à<*!ÒUÊš(e¬¢ yª×òæ—¸'¥^:Ézéͦ¢Å‘‚ ë¯Î9Lh CMn‚±†WZ·(àbR±$òÂ~¶<Õy“@SådSi/Rr£ãR½| Â/_:~˜ÞÊ(yù\X£ƒÊŸ©Ò&•®‰Tº÷I¥k&•î÷ø)´…TÁ?„Ñ’EåWr˜T7bnBJ›ÝTpÁŒmbÊlK:·k~«4@옗nž4Ü@ᷦᓠ*ÏNufœxË ;#ö¨dØá>ðF¥ÊÁŵ¼+|à‹J…ÐéÄÑA·)HJ|àKÊ”’‹¯žÔØ`3©±ùU€‚6J)ëå.ç?Q‚KòºU½¾³ôr·¡êåCÕËK T¦Q{ÅYà°¨îõoêÎ"ùB@\ ÜÇÈ«–]*ˆ¦gêšLhuL¨“·Iï/¯Ò|@Ùz@>ù’×5uƒ¬ŸÆ 9ÎE™þ'Š¿¦Ê¶rý|Ыâª8 0¶_Ã÷äƒó#Â^{Eù§—»lý,°…ýÛ[ÐlE¼žj¯aùÜÁ{ Ÿ¡FšL¹bÉ-J@^$3å( ¿=å\šyŽzò«kÝLù:¹óÅÅÉã×òÔ“sò¯PöÜQ‘¹ÔÕy.ä*,Ë„ŽRfCÕÀ;%ü^qgÖ‚jVonaο#dc++¦ÚüO"?¡ó5ñÕùÕ×b´»ÔpIºØ9°˜9‚Œé–l÷L5g|O-à,•wýGT^r¾,•á/S*/.laÿŽÿ’ =ó  ¯Ÿb[+À¸_‡ ®}×Íþ_ÍN0á51“lòX\\Ê@þÁüÅåÎVô‹rE¿à®-^šÉþâvÓ‰zÚ¿¢$ÓtŽS!ÛÒ#%äßÀ ô—§ÊQFÉÂùä(á ” ›<‘ýÀÖ—£lWãAyX,§•»¦ýÀƒ–¶¼âž›1F)«{YíSë-¬ú¾›±¾Ïæ‘à+hàöª¢èÌ„W=°‚†z`… õÀ:ÃP¬¥† è‡-td~ß·¥L¡¢Ï¢Üh À»‡}š1mÎ8G§wÞGîSÉß¶A:ssÂð 2$UÂÀ«øT+ò,U{åÖ;´GÀ‡YÂ{@GˆþÓuº~þ°Ke-U„¾½0[)‘À4ÀÐûAT ¼Š5ïzù¹[ó®îvÎ ¤e†¥Þaö£¨=º“Breb¿¢PÒ3ÄfÆÏ ûÁº%FPê›)¿Âpògú ¯‘×½B¼’óà•žÅ@ƒ§¡gò;äµ®ÕžNô†K¸à¯ó_6åó+2¾ÒIt³ê•¹ÕŽo#ˆ]%­úãÕêK©§—Ò`Xþëz~/ ó½Ž/Agä¾­c€Ò’ˆûû›") ÐÔ~¶Gaš5Ê4Õž(S4¿5êüÖÑüÖ+ó[Gç)\Bÿ:þ![«9:Öá êohT¼<ó¬Oþªù:Þÿ8ž¨Ç»øj,=om,AóW"ÉÁ­ý±äëî1fr´¹GÏáf8\×Âäi HÚ:mž¨97F¥€lñ=ª©—ld¶ˆK¶ˆ"˜qÛ 3*µÝIÁOyÆÇhþ¯O˜<”Dé œ7VY ´kQÅ·ƒ•ŲâA}믂JŒµÔ#ìHÚ 'ÉÐnT7èFÚ › Aü æÄ&9Ñ ßš$Ï,J7óÃ9Ôú#Ý%hFq\haÔČނ¢€#4ŽÀyÂÍ,xúÀx_3wn±šÆŒýBIPšÆl3DÓ’_zEܬ¦1~jà cüS› ô44‰¹f““>Ö*úK|b^¼cáb^{¼SvŒIßv cîx\?Ö:Æ´2ñK(ºouŒyßu*>^ǘúNn£R×y:ƪAc£Íp9vŒaûïÓnã›cÅi¹âÖŠ?~㘷¯Äo×Wì“Ì•ñådÖÎÙ¢%ø—Î-Z@üì<îþ{_á=—•¯ TÙ3í%|l%UÅè™ö…†%A-‚Æ™ v{Õ*8ÂB#i¯" ½Úqt‡n¯z„½JñaJ‘ÇV‹!â§~(û—4É£K"\H‘bya7f|ÿùÉ_Ï·¿åðzÀn}jv«¹=lr«˜5íÿV±7›ä9»‰û•Çñ¸ß¨^²¿ééítséÕE;ݼÞÞé¦dª¦cAøF÷l\â*\ñ¦´¸þ 9ü{¦ µÅÒ”ýå=–3% ¨¥• t+"ìµì«R«z"Ô›)“¢¨1ÍŽÂd€A±Ú Pÿ¼n¨„ 1ñ]4*—åoXáGDÒ%‡ÂjQI{ æY0íª2š¦:XH³Ñ¡kÊyÔ†Ý?Ý©m•À¾Ê4å9ßmXüÅõ¿p S2vË©)Ù9j[_¨&혲)JRTr²õX bÀ VtåWñºyªCÇPúãXºbõßB÷=/LOÓ”¡`>ù†{ßx6Š•˜ž±›µÝµžaOî”â¥Óùe/²ý£ç?§˜ô âµà w’ ÖUhò-´y$WÃó‹¿œÕéj¯ÊBÙ",ä§»²* =D,ÔÅ,ô³P—£±…Ó,G÷¬TÀlšÇ—€û\“è•ýÚTÉYü¥U¯,3g·aÑGòg÷|ü9ž)Ý2‹{ Y0`.¯‡Ù°Ç‰ “ÄLþ 1¯¯2fJîÙbÈ®cidµ±ÎÁJƒOÄc=ÌÛfñاx\/žã¸Žíâã:HUY›.Ó‹þf÷[™Û§Oéô–Þæƒ—PÝðgám~÷ÖâÞænyBvó ùÀI @üÔÍTg÷³C£×Ûou`v%„|=ÓÖ§ûHV•ÚŽÖƒ—=Zï©C–ë’¢§‹yí’jàn³Þ )ŸÕŸ]Xǽ†sòìU-×>²\s†8Tñ3lÒœö …r¨¼{Ô)³Ñ¤bìëNœ¬Èé7ô@N¿&-¸W,n׃1´—a» ÃÎ!U ßg…áû¦B¼Î¾ˆ¤K3±¿ûSgûCd™ªeßZΣZ·8ª–NFêÿÞ8¯‘šÏ?ó•÷¢‘ÊyÙø  r©Êý3²I7J µ~×i°I¿rФ!g›ô³4E»äBwï: ¦è† q¡ÃÅMÑþOnëüà&gS´_ Ø~°›gìVNëFéÐÛ§M)yèúähƒ)LA{hçó¦â&l£ýË÷QÐK—ý%,ûß[«Éþkb99±Olõ ´útÛè´÷ÿ\^¼ÿçÕÔÏéãtÝt³i}®ÎäÜ3ëMgd‚Ë '¸L½…KœÖr!¬ø{'¥õà±1õEþ1‰ÿ)R‚¨­xXÈûa2YÀrY9hžß®€ËJ<±ìq mxŒ2â%6^'ãáp1‰9#ÌÁE…«ö;£¹ƒ•-‘Õ­² H+·y5‹ žø´¼ûØ®ô‹x^ðÎë‰ã¼¸§Æ: ç`‡Rßµ^›[ym¾«Ü®Â_¯‚ü‡ Œ®®…\·UÛÁèžáz‰ªöFèü¬ñàˆ“ z!íŽZʤlІ:)Áûke\GþN †âà&›^(Ôµ|,¶À¸¥kM†Ú¿Òd¨W ý`®Vž®šÙ­<¡_ªÕÊ󸡶òüÐP[yž0ÔVž3†ÚÊ󤡶òüÈÐòtÝš† HjmܾЭæ—èÝÜ jBvsû3yúËÜHÂÃ%V7·¨ÛÒS`²Ì­" ·à>zb¸`k¸U¢ˆ‹=Skév<>»¥[éTí?«±›?¢6v DÔÆn¥µ±Û¢ˆÚØmqDS9}ŠÊIƒâ±‚ýïp"æ3S ~ =ã} Ôé¿§@}ˆžñ ÔŸ¡?# =c‰x¨< ˜ÚS©$VŠÞ“åPÞÔÒþ~š’Ÿë=V/ÅÚõT":­öƒkB>#{‰ßÏÌî5Vª±>Në¥x×d}vè$mÙs"8Øù†lˆ–y”ø#FÕRGt_¸J[ö¨Ä%5³?¢¦bhKÛ§-íù³9‘„n!„ˆ€S`”Ðú°*à8´m…¸dY¸a­œ‹bùGFýh¬G\l¬G„ç¶—jx°þ™·4öé¤þ!¦Ô‹Øú‡ˆ”¼{«P†¼qY?ƒD¢!–ƒ,=†¤€ùú‡ Gæì2,€{k„N¯Ñˆ°óñ30\9]ýCÊnwè2™¯Ȩ|S£§þ!#’ˆEû‡<…³ î2q9ô™ÀÇí2i‰/ôTOâ¬?«þ!/Æ•þ!y>µ¤ ”.÷©#e HÊ@­® ¥2P'•Z·üPppµÈâÒzÜ_2ÏùÜr“mŸZŽš”‚v22Wÿ yßß7Wÿ™AGVJìV ¥f•½ôRˆ "ôíV9:ÖwS„¾é\ÕÿÛÛ~%¿;'OBü™@ëøZ4Ná~Ș-oŠ¥üï^óóŒ2TiN èâÁ^ëÁ¥,Ô(÷º*êâÜëQ¿Ì½î®ðºi"^M7T@AÁ}Uš7ÔDqxDîL<™—ÚK5=Uùû¿és¬·«êõvð¹(FB]TÅH€Ox€×Éß|ŒÈÝ&`TÈmG; I6ˆé£n•‚Š =°•¢v•ÉÆ©Œ÷\ì“ þ1‰øê¨µÂÔŒZ-*Üu‘ÀG¡[däª>Š$iˆZø!x D\´Ü“Ø·½±Zׄ·ްA‚òŒ£òW»2åX§‰§Ýà;ÑF¶áÒØ`þŠk‚Àï]”‘‚ícþç׿QXŽýcL£'ê„#úÇÐ×ò@[Åù® Râg‹­—K а˜'SýcàH˜¿{Ì?Ö[Ýc|SaŸ^öYåÍ©ýcÖiÌY¼̽q«8¾1ŠÌ ›Žx|÷¦†L/q“B‘ÍQ‹"_Œ#E6©i"Š´0Eð3-Q>`ŹBŽø]‡¦¡ž)ƒW»-ÊùEOŧ{H}/Ýô^z”ýÓͯ¦G¾š.zrÂ(gµPŽ¿ð6È'‡œ´_bNZK¼”ÂÙÔõwÕA-“ÍnŠ¢µ q‡7pC\Dª!õ©Ÿ’œ‚²j²Ì*¶‹²…cÄðÎ{ÿÆ«„dMëØ–C3Ý€^Š1k)%ùä5>T¾CÛ**HЏ‘ö€´¡èX×­¨üe0´kOZÃŒ¸Å9ú’ZxÛ9 ?ã•ÅðeŽÍ#êjÑIïæwÆY³/“¤>àF3ÕÓzü‡éû¸Ä çú~Áü½—Ác°ä_Î-m­¤DÜÕ´G-Z!ÆÝ¿sŸ(ÃKÄq/2Ç市-ej‘EA{ðÎzÈ0³½ï/Ò11öF01|…®Ï!%öªjC/© }¬6ô²ÚÐ'·N1,ŒœM7Ïiê Ã3µõÿ cíË~:sRŠåXŠýq×e•¥ÿ?Ýš¤{;J·¸NX)§w……”q‹A˜Âªì 8 ;N Qk—e׬šq¥Ö D»c¥ín˜Ä1¢f ݬ²[)@ƒ¡ó DAž’XÑÊÌvH£ š•½ß9÷þ`´p´Jò¿úÞsî=÷¼î9çþt´{Eæ·M¼Æm™ã•BH2GËá-¹[)¼3K!´ø­¥ZýÖRmþQ6aÒ¯]Y á Y¡Lænç4ÓZY+"´ #ÑZ¹©ü~3ˆ “ÜN“lº¨ðE,â§IKª’¤+(„;áµìv º¬wÚ~Û†ð;6„ße„Ëü áÎ+·(Gþî7“ZòÇ)1k¿¤vƒBÚ… d‡Bôj[`°då`ô*ÿݬLáVüÓúß™Ö }µùõR¦[]Öý=«”m1Õ¾UúhµÏpùdIYÎ.ß6—ïA¿Õå{Èoõ‹¾ç·úEûm.ß87kó¶_5#ßc&°›T̬õ·6ºìe;ìõaÆN^WþH^ÿå&[òzÖ7š‰yN’zV=Ô=xôÿ™ª¨••Äâ~ª5Кm/™n9Gñ몲b:ÝÙ´Õãå¨ËPŽ\¯ØëhÕŠzx®û”~Õ£T¢>C%êòªÊ-#´û™'8Oè·)y ÞBºZÝ…ÌŠ•-Ç$¼bÁf ¹(EĤwޱ k3Õ‚&zêÙ6Jé7¬¢~egß{y”“ë÷ŽG|ÄOj™Vè¼ Ô£ÉÌ+ö¦äjIñVòj™m[-)Ûj°­–3¶Õ2èµ7•ºbµ(ŒÇß›šÜ“i¤õxxo*=ÊM³ígÔZ2‘"ÍHÕ‡ðY]°š‘Ê'¤¨‚…@cˆÑ(f4>µñès6}ÞΣe³+¬<ާm³~ú(a]kÐÁ­ˆ…¡§6ì£ JsŸVs¯ž{•cÑÊRÆþZÜæp»ß ΀ÊÅG2Ç‹´CåG;E›H¬Ê#º•©Ùjˆ\`Ý«–ÜæØ6®.ø­WŸù­5D.ú­5DþàUCä[Œö¢W]~»­ª<ÄWçÓû2Ùº1ˆ{|íŸˆÛø´÷ñéê/5Ÿ6Å䟸µ g"©c=©ò[(‰ºœçiØO:³.fÅ—Ùr¶²âf$ZÀàO#Šã™é:Pðô³=á^œ±«‡<뢯œÍÜ4s˜›¤Gˆî¡ŠãÉWç×ÃH~èèBô±ú(\ ”;ðÕÐk_úo2 y- ' Ó½÷L4×~2çÚ ý[¥ÛSâû5Hµ?8}¬Ä÷'G¥ÙO\eÄÏ\ƒlû{ÇìTúG¾*ãþ¦›¾FÆýÙ_È)(óÛ2îýj äiÜfÆý·ôµì†”ôßw-²þù³,¨ÀØ÷ßi~Cþf…jpó5Èoxü¡škGõ§Úo›öU©ö4 ßMª}ÈÐ’Í× ÕþÏÏÓ€NŒjÏÎb›´q‡+Ú¸ûÏ)€Þmpîo?Å>+÷’b_ÿ½ñRì5)cXˆ‘a<—SìGì`Y?õ*™$ÖxÆ e’º8nÄÝcÎoœ_?uZ¶6pTØ1‡ðÏ<÷è„ßÅ6€ž¥®èæ( dé=v X9Ë÷`@3NK=Â"ú<|A«ˆžÁ"z¶Ñ3”ˆžд«g°çì:¾ÇÉ^yE~ð³Ñ?îhW|ŽÑÿØùÁ–ü`¶Æcudh=ÔíÕå¶}¨;¨wÅr]K=åîh—ïõÙ°öð·ñ²‰Å5iÝKèš´nØ^”h\¼„Ρ2–Dã•jë}ŽZœ·Ž•Ìžo,â|õÝž/ÍïxýZ5,ÿ8/`?›gŒÐ¸§}´O_©Ûë¢Åƒ Ìf¹‚FP4‹.FÍRãÒä² @tˆ¼:Õh”…±.ýžH:”¿’Ýó¡hžvŸQ;‡kÙcÄØššñƒ7\?(Ó‚'˜ÐʨRc%´¢,Õâ©c%´6ØZ Ÿ™ÑZ`£ïÞÈq`'õ¤1¨ÝV¹i‹µr“g Z³Æ')õõ¿‹ÇÎc]¸¦y¬?¾aÂy¬7ç|<Ös«ÆÎc]øîóX÷Òzçæk é=1HÒzéØšÞ@ê»Óó´- Ñ ×BÏÛp†½{=ç]‹LÖÝSÆÖô I_ $}É1“uú”ñ2Yg€ÍV€í&d†ÁG'’Éúµõe«œûBö×çWW$a¢gHMì±y[ÕþôÛµÇ/ùï¦~#~Tí¹ÈÝ:ðco¢AíMLùðßa¨`Ûý†âZb@Tâ—õ¡.u›õ¡ ¨ŠL'ó¨%ÊÅöþo)Œi¡N™ŽzЈ=È1°“¡¾9޹°@;¦(€pEC´ø0RhÍ$K%‚il7Î=M(nó®)ÙÚà$_[¼; .•ï‹•W<ÕÞ#äf[µúï©ôÞ­:Vgi4 ‰Õ·VH¨2Å2Šª…üžÎÔ^,®‘gT€0*<'v –V“Jâ?kùOÿ)ç?þSÉâü§ºZWìÛ·ÛUþâ4÷¢5yû´¼}šo#ò6¼>ÑÀ5nK‚Nåv«"<©ÕDz´Ä•â'ÍHuQDZ‹t§ó±B-6)¼ß>àœßºæºð ¾&­´ËZÎžÂŸŠ£¡i‰¼!ÑFb/õ[¤‰_E'‰ß…?Ö× ÈÓ ŒrEã6•wZÓ¶!_¥"¹æDÞ}/QCâUÓmøìß®e¢!½Ò> £¡OÄÄ ±¦¿’͘åò4B˜]d#Í2b–ï¿Nèìöì¶b©¼ÅÒÉz0‘WÉÝÅ›fäHùv‹Œ€FzÿX4·@ãi0¦º'BŸ çç$Ž@2þÍ•ó(.}WitozG–ÓÛœD`y!½õ'\Ç9!âÆ„·k ½ÍUÛ’ÓÕQ,A*›u÷Í!>¯x{@¯Ñ[ô¦z…ŒÞT½½«ú )xRYÝäAdúÜHv¡aô⌞P(t ·w5ö°ŽsŽR©›:,|íÞ{0â!qËó|œ!Y+4ÍwžñZÍsäôùIŸ€b®€bÒDw'òr¶Qw@5¶ŒˆÓgg ½ƒ×6ŸЙšrÚ<)»œ»(’«“:Æ`:Ü_lžßŽ©µäWôƒÎòŒÒìÓ‡³¾ O ø|@´?ä¦õtÁͱâ°pn…B‰ïá!pÓ¯‡i}ޱ6Lµz…€¯Îç9›AoIüõ`Bèâ”PKÐÚÌÏ£'Ä+÷ù—!C?>ƒ^Ü“©=ú…`þM /å>¨cY8Þx©tQúó°I*òšYцº‘Z]Ù4u šäëQîÕW…²A?Ë'ÑøÝWõžMXÛpR—Ã2(ˆc!Ï–_ÀÓtû¸ÄáŸlǪ® ÇϽb®þtÕxRª&ädÊ;l¦tÎ<Âe*X=âùLèþ;ÅÒ ·èð ‚_"¿fˆ£hÖj⌊£¾ŠzÍtÑ/ç¡öð>6DGãÀ‡eëĘPSb™ñgEüžš=«kÄPG̼=ähàGðl~ךù(j&žˆõ~ƒˆ ÊÕXÀcA" 4_4/ë%üŒ®àÇÊP”èáDYB:…vr.7¨Qˆñ¸I²B~hÕïŒú×\sÆc^œEÄ j-Ï|‰«ù{ã1¨úyc®bP«ONA­ÌFýÕ,Ç$‰o·ËöЬä}ÂMªdH2°ÿ¹o.ÅлèdÛÂFq+ÐUR?'Ë "¢‰j|ßÁžsÜ0¶%œœwIÚµ%~ðàMÕî&RÌŽî×O`{–ºõ<,OÐ ‰[>ÌÐ?ED“ÛÀ3¬‚A÷›EÌü…þ+,ÅŠdh’h É)}¡ËœæÌ"б#NðtÊHƒ„ùšÒDÞNžŒâyó4XH\_a,‘ˆo ¨DâÉã\‡&‹)©¼_pk$3 ¶9aónWE(B$òÒ IQ–bßWêE‚|Áò‰Bð·€ ó~¿]Ó°ÍéÛåšþò4÷ü¶`HÁ—©ÿš¬«2$¼V é䱉âïþÿB”RÊü½|7M&n7Ìý;m Ñx'fÑ™XðÒ_&˱àü‰q'Ü,??RŠˆ0ÁDa"Äæ£KŠ vô«rï Ê;¡ïÇúRááÌus)w‡èÝîÐÅxxöö;E Þ ððdë°í5e»i¡<üj¤lÖù½&Ä 6ó߀äc0òwè&Eêã…öÇã<„yö=ÏCržïVó\rTÃaËèa47ÿT“Ü|­Zq ‚[Í|Ÿy›Sæüg¿áú”´¦ß}3‹‡¼Îarí!Ô8ĺõ?‡Mê]¨Ÿ˜—ð6У‡xá¤o×"¢ŽIŠ:Âmºü]¸…NýãM|4ÎLWë·Kþ˜c8¹¸ ÀfîŠ+_Õ"ÎZ¦‚ ÇwÛ‘{y›«Ty/U£© ®äTÑ ®R_—«½íPa"Né»s¯@…Âÿ{ÛAËâÅÿ“0§ôùmkn^g”!°ÃôÅø{!ñ"ÿ®‘¦[„<¤ÝÞäË0Iâò6ÐJ·5Áøm»|[Ìo;äÛùm§|[’M¸4ëÿêJº*ϬîS';µ;jí¨ÃDùvù$Vk²+rÑWt‡–'òŽ0E–Š~›²åÊ/¤¹j¬ü`Æå¥yóªT¦G§} ékÛZ¬y ¬ž¯+Û«ZÀU&/£qõ½Ìvßz?’ã´Žn§õÓm]°œ?þ½üøiþ8%?F u¢Ž‘È5‚WÒ¼çä7ħ<ÝKú_+Ça„‡†MÔÎêh’m"^ÌP¤~ö‡,ûÚI™Éß4’rñTs¬iŒi„s,rb²yiþë;Øg,cèVœ‰Q\^èfEø€NŒšïõÎ([bNðˆˆaŠž™yÎ÷ú1_’Åü9Ñšx¹XlP3OÉõ¥´îä V­»ýÒºñEcÎæL]?œel V+’c©PLé–Ššâ«~’àxž[ŠJ#$(¬¶¾½w(ZÓ0ò&[a¤¿®ï·žÏ'¬&í!ÝB6’2=b}zÞ Xî8Ý!>†õ71 ÕÌÁÐ1­deµ¾¸Ù¬BCDbO­c«ã‘&ÃBÐF2dë‚Ç!Üê–#“Ö0ÿ«I=eÙ§¶xªÃŸë¾Šmâ;Ô›0Á¹Ô%Ö¤\±;>/l¬O| ¤öV\Ý®Ìø‚sØJn'™µð7qN³SláÅ,-š‡& Sk±:ÐÛ%~Ëk5Ѓf¼}ôo?þM©=š¨7…´øWȈí$E"‹Ù¿·X7÷làg¸ýB–Ðáäj yÈõð<ļôShI{3œBíæ+Tà v.aTäÐ%­%ý?Êw‡[±»X,h›¸‘ 󨓒|Öe‚3( )#I•ȯdd.Zá€hDÇju{ųnÌc›(ùÈ#¾@¶ö#‰À<ôsq.² I:¿+$+lªa…É÷bh ÔÐü¾}‚.˜ÞKYÚ@íψF€cÂùk“÷˜4“`7I°¯SúøµÐÊb M²–,@‹]FcL¤ýL¤b&R\ùª^C‰£Ç4"²+a‡ÿî®1é²^Ò¥"0mÊÐd r1<³1•·Î+ºT¬\ÛªXytI< žÈ2@d ²PÛšg¢e=Q¥Zέ4hʶ žÿ”ø6!B|;—iÁcz†v{«æ4ìÃ2f2äQò7—l ¹¶f’Ë©rÒÇ©ŸÚ:1`úÉè%ýíD ¼vƒ;zL·Ú·/yÜàÐ fh Üp>ET‹ÛÞ­óc·e@|w¸ÃgõõQî§ZÂÄvyœ+"¢G—nÆ‹U \ùªn¿lžØ£ÛìzÓzɰۗ ^^ÎòÀðÒ©–}_kž¿¢]ÖTÒwGª¹ç—:Èá!ï‹;Õv½ÿð86;Ã>a]™ö ;.î{]å` ˜¶–i«´NÛJ^­•¶i;žÉ;3˜ ŽÓÔÅø—|žˆÚÄ3Oóà°*€?½5í{Λ*¥”AÔìQ߆W4£—h+¢t'€“¥X©:êbu7Ayª7BÍEÀ! õ#µ:I'H¶ÑÑçл„¹LäóÞ¡F·MÐé§,N{Ãk¿éÙBù E´ñTZµeå´€÷ÖDGŒÚE‰]ék&\ùª2ÙÿÃø­[¤pk‰ƦéKLêm ©¾ÞH]JÞ¯KˆRðË[¸ŠñÏŸjMJs‡3ËluîmÍÞ.¤h»icà fIèûâçg@"I;÷8Zé.žrë~2°à ®‰`Sƒ¢Ó mQQÙ+A“‘gÄWÆf2S¾CuH°ØaJÛ‡ù!7•-åÍ‹=æ~Š•\â¬ËÁ_9¸AaI¼²•ÂÚ|Í¿Ú}Ö©îK_ä90WªnçŽ/"=N7µ¬Èhþ-šªÄb9$>éÇÀœâêŸclMÒ{ÑÄB%`Ö¾5Á­ÉGÏ iû—K•չİg–ÞvÓðçÙØÃV0’Ø¡ã‡%ôÖêTcB4 : èR˜ø.eÔI!\ä0}”Êô¸aÿÓ´¢ü¡ÃÚÜ GƒL~¢z¬”o¾æ*š˜øì’&Ã…9»öÀf§±Ñe˜}ÇÙì+2°-bl 㼑… àf:\@4Ÿ%ñÛ‚2|ÚT{©&˜ïåRLEŸsèvAåx¶å³'f׌%Ë…ÜÆioÎ¥½UÞ¤q±­Æ`ùs:òˆÌ<·Ô£U™ôãêœ!úUWS%ºÊ/i\¢ëoâ™pàÖeãÍr].õ“ Ž.Á9ì xR¬Áh—t/.Þó3ßaJAvYËGNÄÄé£Ü<4?mò†îѬàI9Ñ÷Â9Ñ‹BNÒÝ3"¤Î”``ïb‰I˜ ‰Óù¬\o‘Iü‰EC$à–å“¡³+šIÙ‘#ZêëwXÉ1ÆÙoÈÉ&{í) w‰\õ*3Ù¤™iœ;ž1kGšZú»û2x  'Âû§GO†;¦+~4"´¨ŸÊù ¯M9Ð{Ú\¢2Ì‹JÇÉVì{fV¿EeÐÕ ÷M#ºÌUµØËÁØJ7êRpÖdšrx!xèEŽ??=‹ÑmÐ>[ú„ñ ¹ˆf‘…#ƒ¨å#ñâ}ýˆƒTЄT/“M™j{™LS«*2ÍšGï‘úñÒá(öýñÁl¬ôµ ÷J©d¦°ØQJF¿&ÀÖ¥8L´vB0'a‹f’ü¬¡'ˆ¬òšnÄ·7”°¶–c–RFLïY]¬Ð¼­b…V\^wWôRÌÿ_}çé;j¯#zhæ€oú;‚èG¥$¿o߿סÍ?·Æ£Ø zÃî¨Ð ?oðz‘ˆfî©àÙ(® ž}G4í|VÜQ§ïÚÌö¤nôzÀp(myiê$mþéQž¥ÿçíꃣª²|?º;¶I: Cw ;§úd .;«p6neœøQã².3â.³e©;¥µŒ2nДíŽËÛô“ŒÓ3¢4ˆÚ:,Æ8ùŒB¢  0QÆafÊD‡$|ÈÞß9÷Þ÷º;¤¢PûGêåu¿~÷ÞsÏ=÷œßù¸åå6{ê¹ylZwqí&jš*„Û„ÚJ†¶û"»ŸYm/¼©ùăAœà#B¯o‰69^ÉÜÌâc¡Šg’(2¸A`ÁDÐ@„èÂê;'+Ø(ã€Í¼NPÂfK@$“¶°uSìõd62WT¨FæÑNÅú<Äñ…©(êŠ0B>:\|6Ov Ä©µ\-ÿ“¶?’|Ã, £0C§·|Ÿm/¼§?á»û»†'CËŸº[ômkùhFÇçÎ5Ü*=ÓÁE&ë[Q °9þÕ¯Û>Ì¡åñ ÓvÚ"¦ð„Ð<˓ݡP3?¬á(ô²ù䕼vñB\-à‘~—E·ŒŠ;“ˆ*0< {ÀX¬¹Äí $ ×lôdã”4ÇÂ\æÑSnî›H£÷ ZóлÞ¢þãзâa¼ÎìSÓxL0€h ýrlŸwÕ>»§?q3BS&  RüžClÄH2®ç*nè‘ÅZ'šü_=·óD[+‹WIŒ°vì‡iþú]óÇSáŠâU­®áß§5˜•æVË5âZN/|„©Ãg>Á¡åÎÂÓÚX>ýû ÉrÖ’» ©@›¤ÊèÈ`XÀø„&~^%È>Y˜O iæ«lñ¨Â|…EU˜OV*±ŸzƒD7¾‚Hû¯³E§ÂER,LW€Xƒ|šÁ,fM¸žbg gëÍòI&‡¡¿†‰ECÀKQ»›%#í£è& »yëꛩ «…{ < m©g"ìW6LŠ×dØï4™¢-ß.@‚.CÓç•Þv#-åþà2ôMÆÈ@(‰í8ÔJ»ûö‰Ìø2Â0v¼ìEï+ÿ(ó±Uø)%ÖO#éúî³eˆuM? Õñ è$5œ*F›dO\]ã3ùˆ¯ng‹0¬#KÂlõ§ Åõ’ I$’xŸ`å“kzŠßÍèRþióg3¸ 9sÏ:²Œû²›%þ*¶ÐqªH…н‘ÅBs§!Ɔ½‹o·‚}’Ì9;—Ë2|Û9Á„‚OÄ.}ÛÌJåa a–›?(@á÷›‰Ék­ÍSa^µ ,ÍSÒ|)ã+µÚ5QK®‰¶‡`cΠîÙèÞÁX—W©t¯1’•%éä@£s-l…9ê7œ™Dˆ™ý{û•Í ñ¸­‹¡5=Îxžfw†If²¨Æä]o ëIWê¸QÅÇ/Ë@ ­»¸XîË”IÞÓça×"Qæu‰C­z"¤;>ÓD«>B«ž‹qÛØ0 D8*F¥óËŒvs_ÛÙiCû®>ŒIIM^çv{ÿ(kmYá?ñªì³ …EøŽ±à¦#Iê,/ê ô=ò¸ÅQý“kýb˜ro%‘Y÷þ¢Zþ#/s>buÉ*tqªbQ³§´Ûè6;¸·}$¡wÂ:AoÃ9½eù;À䣴QêZqÔ¶÷Óé—Øäßç‹|ŠÒFØÒ ý [gøÅ~TwšK…Ô½'ö¼=T÷¿ÇYQåwÞ Y$ì"¦š8`Jw û>-…Š]lB¬Ãà­¿½ô°˜.×ì±1=¥ÄÆþ¯Ìb½2ƒ_ì.í h¤g™‰”UBzTE+8E«*Z©¨ø÷¯çÓѬcœÇ>ò8+ë« Ió°žÐ*1Ìñv¿f[é!c¯¹‹‡yÙ=Vðþ‰†kêü”ÌM0ÍŽVQ˜Yì’b˜t¯xpºøCHòLñç “òE1L¹ÝÙ”=L+rôÒWLálŒu(ûãw¬¿2s³Ì Výý’ó‘¶zÁ-Ÿ÷ĺ&(Ñ|&[4{•h¾ê–~ˆSÐvUƒ¡W+‹¬‰ì‡*ÓŠzé?B‘2£™Ÿ4FÑ_X1{¢m)Ü%ÕÔé"žNñ¦ìÊ&ý†&îAÉ>Ô iàÍ¡R÷ ’zPq’~èKî*è ïcBuŽŸ4|,vl‚š¨Q…¼«°owVº¬½å·48 ±a#T÷¦_£l±q¿÷‘¥:ÊsŽ.máË)_m¿å·1S]ÒyÏŸÓdÀçáE“(àS©ì­,Æq©{«úW—¯pº\Ïȉ0Þ¬Èy÷£ÀþÃT›7À|°=¿õ¨¤ €W+=Q¾w¨]ë~T¤öS?;­ b~Í=H3Og2OÊd¾ŸÝœ¸Ô½'z:jl¯ìBÛG^ËîÙG¶†)X‡“þà7DcNx ÅŸ'Å·FÕs«ž£ÁRt•Sß±"'@Òƒ2¸±¡ _—Ý›EÒ…ŽKI 2HZ­HZØõèh$]ÿzIWƒ¤ËrI0Ü$=á&éØ °A‹‹ èæiIƒ£“ôè_?:I½¯«ü%¦jõ-õÁ8bÝ3‡_4Êð'X‘Ô¿ÖÐðÏÑðÕA ö¯›¨mD;¨ô#Gá”>Né’Õ)àM?Dï7„Ú9õ2b¨#³Äs¡þAܽümº ~N_+þ‚bï/q»@?ÐÐH£ÞðÒ)­'ÃFF÷›)¼Ó8`ýà\¶ÎÌ*äsm´8Gyž+ö…¹®íϾy]> JuP¦½Óíü¨oÅ„C–<ø‘þ*+lZ~Jì‘e¾å@´mäàúwûÅ™Ñáúx’òã„®7â¡*„Ã/«ÒØ¡ ‘ÜDˆ ¦žÁÍÔ¿£ÿYqóÑVFs»ê6m™ €[UˆvB…K‡yÇLÑ=ï1±Ö+8£ö”Úi¯³ñ_µ /; ÚŽL€j·•|R?9'¾©B´¼Œ‘ö1¿s^qŽz1[Ðw¶» Å׿{Teî… Ì¨ìèI®AèªÀz¯Ì®/pr=„õL®)Ê ®a!3üÙÃPMáEœPïÿW¦/GìÕ3­¬n =k¸K‡žÑëÕ‡-KÛð³×ø<Çg7\,Ô¨¤ç u’>#Ÿ4}‰‹ºgø<|2p3†[a×”Tá$v ]·—Hè ;~LuB˜KKÕE•âÓ!Õ©@Óž¢´šŽXG~†2t˜&H˜Uí¬ ÎZ%׫¿li6eÖdв”÷¹”Sää{˜2W§äžÍdÚ¢øØÚWóÕàc罋ÿÙŠôIj¹ôçÂ(ĆVŸKuáŒ]Ê\`¿E•ƒjÙS¥êöÐòõ?gE<éKV Ý“­/Wõu$§gÕ\•L몹ºï±<·òqÉU]™C›ÒÙ:Іu4íw³ïY±™»ÿ²É#Ë‚‰ Kþ™ÄØ›ï9ÖñWjªÒønCÖI –% ,«ùˆP¶r²•3ʶC£l;X[„Ç]þE×õ“zÝ«Ž ª~Èòû0mb q…=œBB»7ò[¦¹Ò™èA•ˆÜ;ìÀÊqFw^Ø#±¥Ô£#€©“öMáâga3€°PÇÀ-¤^'ö nô™Î ?.¼“åÄ7K•;•du¦S?ÝéµTk]ÿ¨Ò•ŠÓ2]Iɹ‰NþÉØj×Dî9.B">÷]åVµÊÜ*¾ ¶ËܪÕt;u‡LÄZÃT”‘Ý–.ÊHÄr鯙‰X#¿‡Öæ¦aíþRiXß×émk‹tVÃXyXWfè.kåæBþÑû¥šŸHMnǦ§¿LÇj‘ÀD¤‰‘y€|ëÿHn{T~»©(#¿m kËo[ŠÜA”[ œý•²œ´.óÒ«Ä—i†ÉÍoc†éÈf’‹å·µ¹òÛrÉÔ–ÌÐ[ð#H|•h½»SN nIºyÑÃQD=E&`ÈÅ3³Ýz~ç+®ü¶^ñ£mÄ^Ÿe¤3çõŸ–RqKE©˜âG*ÂÈ~„^MÓëú‹.’Þ$ÕÇo8›ªx}¿ßæ"Õ¹’WÜ¡rÛˆÆÍ¼†ß!u%˜µ°bÓ=QD—S|qeDÁµäC9h›™Ö(?fÚåÇ<Ê,.¦LljäĦFNlJpbSBf4…¿GMI™ÑTñ= n‘Òå7P€t3GFo/þ1å;¥T¾ÓŒŸ?øCÌÒç€êÓaé‹ÿMˆää°òÅĽy¾<¶™ð# zíÁ?pÒï`È€úøóV¸¤Pƒ‘~&í%/-‚\?µ^V_“¬¾‚"K½.áb'¤7#?ÊÁœÍy^PõCÛÊøÁFèV1‘mÚ˨âBèéoúd÷¦„öV1i à8ÂÊóäØçx7ôG¹ræŠÏ ä†5æ)ùÂŽßC”Óñ=h&câ¡m…ùÀ´")¾äûˆe¡Ž ”iOM0;KmAB¯ÏB$Ø`V'güq?ˆ# ã~¨å‹Çý4äþ¹[7O;¡?ûG ý¡ø(üó7œϧ†ëàŸÆQƒÂÁg= XtîǶbŽJÑÁ°¤\sÑÂs±‰ç”ƒ'Ž5œ&^v„Ðîó¦è^ˆ‰ü_Ş¢óÄøkïƒf#µl±ÌäÒq¦ÑNóCóP鈹ßxGWÌÿxî†ÿ ˆ) añ-y¾l êRÌÓæ!¯|“vcH±3ÞEÈbÃÃM&GµW_lµ¬$Ÿ\ ‡Þ̧€48Pº‡Î -±À~ê÷.|~SÈ¿IòÃ=Ï p`¼AoÀ‹t Ê+sü4%í`‰'%3²Éú¹kŒP°åÄ{y¹\¹…‚œTç%AdßæcéJÜÐ÷\=ŸM!z×!Ÿ ½–â^¦È]/& Ò”—Ó’ü²~ ë·Ôld 5GƒšsÔ¼å\FüC(Ûä/~<ÇÏ‚ñ.Wrko›.ôDkèé`õxŽŠw\Cù*1`¶—žíu¯2lÒéTÄÄÀ#ùKvFZæ=ÝŽtmžFåh™þô€Ø§)ÕøäòqªÆGwÕø…«ˆ-†ä¹aêà­äµâÔÍædÅFv.JÑ$`J¾ï>D´~έ)l±²ŒëxÔÉídÌÍöªqÓÇ…%wä ²"Öè°oÈU bŽV¶ÏúÍMõ³ùüe\²`TWÉñÀŽ<‰ùà›‹ù…V Ö£®ÿkµ~öOJäìÈ€Q ñŒºƒaÔ £~öí¨ê®Ü[I%È7I½7Åö_’»«ðéš\0uw>=/ý%ðéÝŒOïÎŧ 2Ka öÍ%솕„e|zY.>s±]øôø +â®0rðéàèT%Ô7—ªÁ•‡¤Õ7¿Hˆo«x¡£=9Ú³­B|Uø¸s `Ëó2á•À0-, ³ÇÝ,‹n'˜¡6`q ð²cß #¾AF|#ƒŒÿ2äë'È÷åËJšBïð3"Y»J"’þj‰ IaîÇñ•§&‘ÜZÈ0™<Ý^áêQIé t ÚÏMæS>dA†!A· ÜÆgís4!Ð-Ÿ*×&KÄ Êh[ý܇Bûé75L'@è×[YÎÿ‰Ìí!¾F|§â;•_?ß—ð ž%\ør éŒ+ÅÚ¯`D½U!t‘M«œÈà}wŒ¢ÏŠîùY¾G9Žåú«k%LružoÁH¯wºÞ£€¾2'¢^aÏ…ö´–­iJš“•$–…ŽÞèÉÓ{gèµY B#’éfs©zT˜ÅÍ\ TùXëát³ýnœ¸ôcDÓñ&¸]ª+¿Úƒ†'8ç=Þ‡À(™á^§ô'§™/aFxNa5Ä•ã¯óÆéB¸ž Q7ᙲ ŠÆ3' Ûû«¬DºE(0wšÂt#²7Y‹ëeõ§šóÇúø®—”Co’?ÞËý{›Ñ`ßjÉkÁs¼ª)\ó8«„Ïu'Œ® a‡Ó~ÑÏ™#þX‡_B¸±c~¤³£çBÐìõ÷’ç—óPÏÝ矠ãH‡X¾…²£hî3U1Ôè'þaþ2™Û$Kdï+¹¨¿þó‹Â³-/¹àÙo ž}`«P½pŠ‚Œ¯Õú+ $Zí±6Äz.eo>¬gÖ_» °Ý{J诚Xõa¬š‚j8¬š’º£†U_¯§î¸v‹À½a¥_ÕŠ›3Ò::8Mêvñ§¢»:˜‹CARL¾Å/Ò|4‡h>¸.y ÝÚ÷ˆ¯Ì©JÝÄ?ÃöÍ/BA¸óÞ[BszU† Æ—:@4`ßö3z¼5D Ý‚4ƒt||0ÍØg;»P~»ƒ¿}X~»“¿­–ßv‡q_Uõ–¥WǵWõW~öµãâôÇ7 Fùö×FîC+ÅQûW·]‰G–ɚɈþcq`ÿ¤±ÀãZy±Ö+»v<[õ)ÍOÅ¢äi:¶P½'Œ÷”â=8ÃÊÜ+Eq¡©‘âÛjŒ ÑØÉЯU4ÊR\éã Ú®ÚXÀue¤[(ûˆznL AÆg]ûFçÅ8H85ÙY–ËÇén_ƒ´|øÓ0H¸!5ÖM’ÄÁ;MŒ4GSü»5|YË—&¾4ó¥…/;ø²›/½|éçËQ¾Øh¡‘{V&ìÁUùXºa&Hm?°%ÿ+mW¢§M왟b–Gß,`Vòi=ÅÙ=J Þ¨]Äþƒå¨|.eª•ß>³@ùÁ+ì{DØ é.´2[|ªFï gDnW:B¦Æ§‚ª³Ü¹j_’—/<jX,Þà#5+ùœ¾ré!P'AÕŠaÔF1A%â¯LüÍR­\üÍÚJØ/†±2A58&†å RT3RNZpm‚&6–u¾ÞâgJÚó%ˆnIPL:*”åÄBCg±%‹‘\ÿq½lRÌmSOpºäËõÇB‰‡ ÇÓ’r>åñ–” ðvøyϘiœŽÒ¹îõ‹)'¤þ”ÇúþÎ|¼ÖJO¾©"Mš‡×A­»‰Ñ`Ly=îÅ¡6µlÍ?Å‘+¢:‹š™ª‰qgÊyç³gÊ¢Û xÇòÉ ƒbWød b.)Œr˜ûÑY›)„Rè`ö ÿMqæ·~Fr¤R\êSDFàš}b,Ï 7»ê.¦­_.¹ƒ ³Nä)&ÞãQèD^ê0™Ÿ¬Ô¼BûoE[^n$ö©±¨E¾“ ƒ¸‹Âä‹9èx NEìñ< oHÑ?—%ÒxÝk9Îü{Åë0±cÉV$qé7å4âÊä`Ó<,cðZÄ>ΩB=æN>v…39PïåÙêôþ?ü:çý‘Ä.fˑĉÍÜÀÑ…IÍOÌXg^¬c‚yª´^4uÜèLs+b íü´¡ýWçsaf¯VçÂT®ÖçÂÌäsr3“!ªG9F'ñçœ c²¾o?¼Z••ÆŠ˜Zµyÿâêw©€€cf‚ëÞfT]k=÷³zšåoHË ]d.QðÂú•sáĉ &¡“ò©ÐˆW ÃY!)$ ïZ¯ƒxý~Âå^ö•YâÞÙ/ÇZöRä+¼¤Â^ûT>TZöÍ£/û/.ײ¯xjœË~²x% 3O.þ‘i¡€C%á|ärä=mûÕÿÃZ¿+§‘zž6„'Ç÷z.=þ~ô$¥}¨èÔn0c •4>4Ïp’ÒADMZ‘e¾G–­ÖÙ•œã˜»(³á!µ(uàï–ê0®,—`•ô„xØ¥ýnÒ”*‹µÂåÞ²…uÌsM.÷ bÉMˆÃ ˽—žÞev2ï(µÍ.±0)~©¥B°æõ}‹¼±äC:i<þ1Fùl6rÅ›“¡x)¡îÉ´ä+ì49lÖ8 )<¨r–p†‚ମ¶ Ó†^=lÊ“n_ýè.·ø‚úðò¦vNPÜ}JH×NPlù{W“,+±®Û½š>-žñanÖY¶ UYgzNƒç+Ù;o„žöSàô %0GdN×1ˆÂ/e9ŽÒÁœ|3Òo_«#f/•ç? !7Å<ëôšgpøÙhixS^P>ñ…œ|šqçàij\XìÎÁ‹êtÐ(§¬Ðqq+Hý?Þ®8ª*K¿þ#tÓÙ2­8kmJde×Àƨ HEÅÚ€¤j£ʰQ’-@£4JÛy’u¢ÅÌô8àÁ¥]¬YvÉHŒd$Ž(³4ŽaÜ—MÔ QÉŒ{¿sÎ}ïu"”[k¾¼¾ïwÎ=÷ÜsÏùδ?“½)™q0e’[¿µŽ2ªa‘BR‹Ì’¢kVÙÇ–UdGYû9™}\Ýlf¸†²Íeÿîx³ÚŽˆñ!‰ÁŠuû¼è%ͱ0=‰ëõp IbÂ{"›·²7r…÷žSÈJº mCIež³.y–LJ´ôÅ¢³ž%;Ó\¾”2˜à Î>ð„£ø­2~ /AªðŸÇœÔ”Ç£ö¤A±Ù§„íEƒº”ÿ×âŸÇOMêFLGÛ{¿­QßÙÝMs4›Ž´U,kˆ §0wÞ >YŽ™“¶_é°ùà)2©¹ˆe›)–—µÒã²VŽ}’žñ m–AãÛÐs2hÑí%<†Éè†<üõ§> ß?‡L@­|98‡Æ¡mŽ3xíŒ\šfäR«rã9ÞœíclüþÅÑÊDU´*±&ú@bEtÍ#û‘ïÌÿlÆÆüg˜%^#¤P]­[VÂXK齎TÏ4 íì0æs¥÷ê‡bÈG$Ò0+•8m¼&gh¶-½œ1L‘œÂ$ƒJÕÞ;AHõ` Šé$¯É?|W¨¨Ž,‚Q?´ÛÎ8¢¨–3ÕbP|ÖŠûŠžüGEÕü.*zº\;@*J1¦TJ—µ~®úý”®W”G1l ¸+øÞ'B7LÉï µªKü­ð®©ê^C’Ñ´êrŠPá}OŠ~ˆ÷…wù_XJ-Mõ.±]aºäÉO ó˜ßÑC°/`øW9רçszz}ø±(°C}ž)rpÙ¨,X¸ ulÅÁ€ú,ÔáXAŠ*àGÞ'9%¤âõþ¦%öŽ„…2ŸP`ÞK PAÏø+¼ñG_;ñÅiÞ'¤—ЈXϬ fašœ7w¨P­ókx¿wà¬Þ^÷[ïºÞé­rt­å&Dð ŸÏÆßóR\ '…‰¼¨ˆM?^ê( ÎEÝè×ÝXïwJ·ó›‰Ü}Ú~ߚѓô{°ÎŒüSîc8‰¾ç+=ù)è€ÑÃñ 'ÿ€ÌÜRwq—ic×\Ôô˜‡EÎîOÁþÁ÷8ý ?Œ óJVOݺYåÔu´žo¦1ñZNd%¸ÁËÓÆ*8š!ãÁÔû©tí×_Ã,^Ï£PF*!æVˇYXZ£>éÛNŽÛ~R0hŸ…!ój’+½˜mS&Ç{§d¡¡±w:ùy`ïtñ|È×xÞã­í~´±‹£lg™…§¹‰'ý’Í’ýg‡¢yŸ”C™Y¢4YãÐÆ–qö¬7E(©Çnò•T¯à"=b²¡~£ ûðëªX®5ú?¼¶³£ìh x³ ?ÌõGú{@Б X¼1MÿS-'j[ú¯moвˆùyÊWÛ4`´ÍØÔÛ”fñPŽbJFûdÇÚABô_è4³–rB`¡ŽÑ_Ö1##¹Tûù—4\’­kŠ˜œsrv+âýwµ¥êaÕrÀ”*ýnVëw|¹¡5ø«¹t®”ÎàÒyRú.-•R C7öKs’V®âþX­ó 9Ñót³æ7 ÊèƒÂÈš°-ªQ·˜…e œ;40rDƒ—7AY² ò2à '¢áûÕFF,´d±´á|‚,~¢è–q_UH_ñmänéÉ…\ºLJ˹ô)]Ä¥+¤tqf?gŸ­Ÿ×VeHÛ•¯l8ŸÌR‹ÌÂ*îÏ¥Nž]þhÕz´S+“™ã:¿ÔWéù͈TëÓ/£ JÒq^Åî $ƒp³%Ö@'¦•n¼@ö]^Ù;­PtÍU­z޳¾^= Äï-µü>þN„êÈ+ÙȽ„·ó)3µM¬Lˆ•±MüüšÌOpž7%—¦}:…Ž÷¯"V¢lw¡ÍL‚n"[¹aHq§Þ켜9°OF¾Ÿ¾_Õ=ÅußÀ÷Ëã“øñ~fØ Â°N øúû©¶$Hœí:I“+jèd" (+q4Šh äŒQ—¤Ïv2Wb ð„ò°¢è”·ï}oŒ×>QMªØ,W'ó«„ç¨O Ðã8æ¢dŸçˆ£[ÌЯÃw“®ÒJ‡î‚Ô®8Ù'-p{ª¡a}ötv=Ü“È+—ˆ4qO"§gÆ2•­Gw@™ŽTå@¸?Ôzèn&JX€kæ1Øÿ!mä_aŒoâ÷œUŒ¬kj“nÕo÷¢ÞÈBÏšÜD÷áÚ£òùŠ7ê¬MƒˆàŠ#;%’¸…ì}qÆŸŠsæB>^ÁŠLŽŸ¼ÎèsPÁ™Û¼Z7Áí‡~“æ#i¬/Ai¾V>dáöÙ 7­á@ÝŸ¹‰ô6¼«È ¥j%šøkM#|­–¿ÆklP4OÄû/2Zý:‹ÍSÊG ~…±O†zÃ÷ ;WVÁ*Ò_i@ÊDá`ïp˜Y {,Jj†-±™Éùv,5”ÛÿÚ3kû‡~CÂx¯䯕(( àuöp†c9¢:èý Žå#íoÊyÈÊI±°LàQΊ“àákéò™!r,o1o=M^ÀÙÌeÙÖ®„Çž62=ÊmÇçÅ>·ã3Ðst|^Ì ‹‹’˜Å. —å’ˆÇFò$¿X*÷ *ç §¼Õv„Cål –ÖKÝÈH,K¹vK‡Ö.Û©D!¹aCæÖÖ4kõé¨ OØ=èÊ h£ÅTdT²Ò]ÉÁ៙ªG Ì š"ªŽÃ®ñwG 9º‚–Ùkµ»x±‹QÆ8ŒïÉSü©`ƒ âA'EŠ×÷’òîzôþsG]Žm±k÷Ú›v„°·-”ö@ùm™qÑÎ+lPfn©Ì\¶÷(Á¨3mÓQ¤5ïϽP^îb£*ÚÞ¹!þÂoßK+VŸ¼6‰_ëó:Ëž½‡¶×½ù>iû…:É+ΡV$u…’Aãg³ÁI ë—gªWJoljV:ü䧆Mšì%ËxJ¯ K’û†7<¯šw ÄJÊr$´ðzö ´aškÛÎláXÙÍ…½úäDû©äZ“[¼ú{Ó»qBÙÖ`ŸP…N(cÑVܸ 8ÏÖž')¶¦•ùTHÖOØVw0†æ2Ÿ>Åêj.¾À¥ÅÙ>°veóïq°plÖPç¡_l„%  ׆u¨h%O"^âê¡û¤cùAðÆ0áŸ"(Bé&o¨-9$ºº‹¹g?à×ÉþP~AùÏ$s _Âb õÆ€Hº÷fJ‰n~|õ•ÙF|v¯+_ü 6äû´Gn¾¨OÔ›¹R ‰Œbsþ o¬P½.ø‚•¶É 5ÕKÇ 6,òd²áš 6„£%k6TñwÔÎ&Éá@én-ð3WÖ¤¯±»˜LžÏõÂ^ÞLÝ¢w”Gá!à×Ôßôü6þixׂø‚1Ž~’ˆå ØÎÉá]±`¦…üÚDß1/b+GZo¯0s;'PV¯<»è¯Ws\ÉuûüRÝurãMº¾1»7)‘ÅÆé_€ÄšŒž”ø~1fÔÖkµ–è€Í$¹n‹ÉJæäÚ´õñ&?y´ŒâeæÈØY‰ûh‰fŠŒ.k ,€>XwÀ?’x¸m Î8¹Ç‚Z€åZ—½ÀRQ ^[{#&†@ªØ8}‡=‡i¶~yä{‡É0_ä9FÏL3ÐÑ G¾Ç\â…CÜfˆdù¡z]CPk¹B–šðÆK*ñ…†Ø$TòÎK¨ì¹ËÐ@váæÊÊéÚf ]j/OqvˆTò/N:x[ž¤Qcƒ„€¼­–gøûœÁgÔ\p9[ÛI§}UBz9…Ñò#)ö1­o#aW2ÚdØ+Ëû”ýýd´•W¶V^æ­¼÷üŒ­ m:\ÏX•áõ/û€ÆÙÕ@Žqx–ãn7Vƒ}ÈÌëéy2c%°¶l CæVGè¹+!í&íò63Ðûí?sõÏHSÓÓ3ïQÂôìô¦g§óazvqguIgý÷1wgi`OážXÔ¯ë½,1AŠqÞó8x÷±­×Ù‡ó±mÛ+úùAûضŸÄão#ÔÂмëKиÿ4È7‰$5 É7s·‰G¤d›¸-p›‡sâ>¤F|œšë8fÐßÝmü¿´ŽH 9sÌ-gòÍPÝ6‰ ŒÄt{…óKØÓ <БaO5¨uóbrIBk¡rd¦ìö³ŠåµØgͯϡ“A r'sËÈÙKâo²ƒc·œaøÅA<}÷úÁ<­·˜= ¦@ë’,¼F8æÐµ¾<£Ö)–ý]GéÂá"-÷U·›¡¾Ûÿm¸ £ÿÕ³96¸žf¨íÿ‚ð]CKªF’Îe-ˆ¯Ò ('^Ýò•Rzì¥&Á9þ'5hâØvÊv*l›Ìd}zMêwy|]Ž{I™àÚmÁ+z0êªußgµ‰]øcÇ…¥ú' 6ÏpͧPÍc³k3ud¾lÞVF’ôlO/ù^©É¶)Ó+I½q©g-D/5Tì߆z3À{Áñf8ÿÿéQäÎÿ¡† ÊÆólPæÛˆ÷y67?Ê¥~)ñù‰™bSã 5«€/»±B uÖáÙc sf¶z¥ùbÙS0 Ÿ%‰,h‹ü´ƒîñT÷êæOa93…6U—˜…•Ï“±ßJ̦óŸ,}þc›s£/àrµ`ë8Öz€VÕoâš8½%¼~÷ Žk¢9X…kl§ŒþÞi·ÿô‡uz@±vzØv³’¯›ðʘ®¾Á, þ+Q)P=ÓÑó?¼ç& Û@CõôXð î:¿µänDC¥7^c3½rЃlæ( eà£)":­N[‘ÅmÂ3kmû'e?hFŽO[O()”ð­žpÞ8¢Þ¡Á© ºR§Þ¡9',¤9h0: ÃvŒò­I:Š¿ƒŸ^ÀLÉQöQ··G‰Ú8E2 yѶ¡SèÝWÍà/Ì@îíJ@´«“}<âïLúÀ‰HùÜÁsÚ,}A-Pâý;szržµ2c·°z©´›êiñ¦äŒ+<”6è@ª[.AwÀÅ`@þ¤$5ú˨üÑ½Ñ 7³ÚÓOWßk†V¨Áb#h‡6‚61b†RB5þFP×&·9j˜Ê³ÎÔp ™À™CøðA­2Ρ{%ͬ¢RõýËg3$'Õdü>ôû)p±'†ÒEJe¨ÈöjÄ€Ô%B˜È–6ÑZu0‹Qs˜MüÔ/ñ˜° 8TO]Í&z 6RÓIëÄaz„Q€Fªñ‘&r'º8"Bß õðä\f¢†˜¨B\%ÍÀ2_´»ùBã/µŸ#sœzÖaŽb0ÇwŒ¡Ì‘¤Nˆw€=j©Ÿ<8ÁÝÉLö`§é_U¯6Cµ6{°— 1óa!€ÐÈN™0„S®Ðœrø!›Sʳ29å5§Œ™§ªòçkµþ!ìÒÿÂéžhóŠ E“Í+MÄ+Kl^| >Ï: þR"€ $ûNz|Ài ¿*Ú§ÓazóDÏwòM>Ñ4•É'Zã-Þ˜ú }h·í«œ´e†n‡–÷aäU©+‹zä$÷1î&×Ò‹B„øCmF²˜ ¾äáÁ-±ÉàYà|D¼P'÷™×Ñ/,’ËLAƒâÿ…R…1(-æò36ò›—è…lÖþë¿8ˆlýŸšðó p­ã~³†‡ˆZCú$þ’KxcH KO>Y®=d¹í×ÖstˆÓ=J_éç9ׯ ö^%úÊÐcø~žv¤¯|>[Í8k¦^å‹ï ½"¾ÛíÉáw¤vŠepÊã’Ú¤¦¨qÀs nhŠÙ‰OÒ(PË(ŒÓ£ï·G!þ –{J™ÕÇû8”2–Òì­'³ÀöÁÂ_ÿ´çÒ îλÑGm?Í(yjýÕ×$*Û½n±×ýöl…wRÏ—d»z~¨¦X’íhŠ«ÕšÝ½r†ã«šd@’g¯?t­ˆ¶øÛÇóNðERÌIE/ÐöV<¶´ÉÍ‹8'ûÍPߎ(êì°CSWŸPØtkÜt;œëüW}åäL1VM­j\!ˆ;ÖÉC伤¶zÒøZúËÚ{'ïx²iC±x'o(ø6²d'o7žáÒ¥Rº‰=ì“LI»h'9ÊÅ¿—¶ð"ùÕ­™ŽQ¶QÅÎ W5Ô»ªœðX× ‰\­ª¼™+µL*Å·‘{¤ÊÏqé )ÝÊ¥+¥t;—VJ鎌©åI·Ås}{~æÑ®íªSµó<Á\`MeèúD5p\Ÿp«Úœ’zQ÷–Ì?‹ëS켪„Ýf#÷Çé¾)¥Í\Z'¥éLæÈÎdÇõéQ@|ár~*ÖÕ¯ß9²óSŽSý:îÒMÜ¥ûÝ]:Tà&È^Ÿû&¹¢û/‡»ô£›©›Û 'C[w’3 ÝDvì¤cŠv¼”bR¾âj}d¼UÚòâNò êÈ&«D§Œè…<¢<¢òªÎ‘m-¿oäwq%Oro6^ijú$SDa¦[S!>ÛµN©§$Bi&bqm_—ÁK–æ%|´ÿ&ˆÏVîG«ìÍ:«ø”¡m¼XdW¦W*Cý¸Èµ1¹þ‘‡¥S†å;Ü—Üâ~÷°,¼‰j\'OŠÐ ùufÉȹ8g—ÈØÉ)ú1\;}šaP*¶8Þa;0š^Ú¯÷@m¬N¡t2—ÆùĆ­Ø °‡ c,+|–He‰$ä ”Qi®*[@¥yf¤}.•Ž3s©4_{P×¼…åÕêÄkliç’brJëà›q¨Ì›“ Q®-› E€—ýüÑì›Âš6ötûµvÛí¤}€úJZÑ Ûc@Mmæn"šT4 j èH"Dí!q’ Ì_ÑGúÉV Àm§-öâ=þwK²Mœ|ДÕÆÖ ÔÌî·d´w4-ºð”>Í]˜ bFS¡ÄÐìJ=...,ú› æÈ‰Ö®µŽOï.”ËÓf°•ðc—•p€Çz€hFxñ¨#zÊâ.‘¢‹bãO=áØj̱&¶ΈZ¥ÞѰ'3fQto«~+¯b¸P0\È uQëÊU@R4èl@í-Ôw¬·þ!ƒ íÖcÜuœ {ÙV]Ô{ú¼#÷¥ úd¥ *„o *„ψj ;jrlEŽ¡AÈÓ—8éÜ)ݵòåà¥4Çrùt¬íRb„ÖæÛù‘¾tñÅâK_úù2Àÿet ò%/ù|‰òeâeÄ\T—¼¨õü‚1öçµÍV€I÷±rœîÖ G'ób®ú¥“eÿI–ý6æ$Ý¥"ßS%Ø‘UÑñêŒ!­þ‚µm6}ï±ö÷$Íš±ö÷ð'ü9W@žúýy¾ŸºŸ"ýyýGU“aF ¹œýëòiÙáWòfïVW‰ « 0uøöÃ;x¿… „Ü¿ñ6Å’:r,Í :†åémáZï•ô~.º÷šÐ'šØTQO¿ú8|,ºil¦}ÅÌh9råºâk<:¾FÀŠP/)[ì;]DöŸÉÜò¸dÞÝ_‘šŸ”VÒŒ”lþ[¸Ð7?~ü“‹ Ч±]hØÆÐGG~6LPŽiê üõðã:p_dB[Nxÿ—¸ëŽª:óïÍL`“L‰¦žDóÄÄÀ.+%4Ú¨q¥šîÁÊY£µmºÒ³´µnôxÚÃfÒ“wfrz¦g!¥geµ5»†§Ñ¢¢&@1EÄ h"mÜ“]_HÜB‚YÙû}¿{ß{“™ÄhÕz~“7oÞ»÷»ß½÷wïý¾ßg×ô~=žÁo|Yï5ÏÉuNðÅÍm3/§À—úB饶iì¼`ô">mÚ‰Yóñ†4´«2™„ÀZ> Œx±ú{³µÁ38ý—ãiൈsa4”i¸;ô«rŸÂ_Ãp+'wÖvX-å®ÞsµAœèáõìÿˆÛªHü[(þ¥!€j½‘»BšC<¨n¨Ÿˆ¯U`ø©°Î=Ž„€Z$:ŒQ!â•ß'CÙghóÅå‹O>ñ‰–DàÒ/n!ÕícCÐ__÷…áÖáÙ·¾ä‘ÀT5ÇÒÄ«Ÿ £}Ë[Ùà*[¥{…{·ò³¶k0í¶¢Ëòo–·òØC‚;¹¬™züö˜Q†N°¬_ÜÀãi¶©3Û_‚ ¹YŽ“I\.Ôj"¯ í(®pv  뜔LhÙa¸îäQî §Z´º­€ŠbÄUâS‘€ûlNën':B¥Ce»eëe&4Ð{ÖKQ;Íhà›Ê•÷¥P 1¡Z™6é st=..ð).ê!ÐOÉU=ÜT4¸#„;¨U¢yŶšv£BüEK”IʘLAV/Å«ÄÛÝ$S‡šÎ‰¦¬¤‡B9ÁM”ÏOm6Óó‡ÄTwo˜¯«^/Ÿ1&k"â› wâ‡Ä‹Þ-ôô<5Ò{ `%®gžz.ñÔR{"x ÆoÚ„Q´„I9¸,Ø÷ÜšØWÿã— ì”}iÀþ[âUÒgOé‰ ¾›ÍÕùwìÖé÷ÒÓ×€ô|#DtÂé#XªÑU¤g¾Ð» =Ql¦Bú'5¸ÿÝ’©À=áȤþ'K~)ôL rΆ'áRrbM`{CL‚w·ûˆ&³Ý8 –w#†õUºNpz”Æé]íp½Ûߪ²7‚Mï6_4@Nˆï×Ç)= Ì ÆNŒ± ýÍíß— n~I\TxkÜ5Ôwª3}×qþ°òƲhª  ûût;™¥:Õ÷©,Ü×Pn¡ZøÖÐ7rH¦ƒæÚc”ÛoÃñÜÝ ¸r¸rlØÑàï̆Ôò (TðàUI‡ö>†½W$éè ÑÇ£Èô€L1„OÛ°¿B¤ø •º+>‡÷œßêzwFqÅ3Bí1A–-±pÀ˜Äj«õÚYËÄm\¶¡º“dÐbEq9§£5bžùN×ÿÌ(~“âÛ…Fô¾šïÀÓ0˜1·[ño{í‡1c-ié¤WÚžô¨±ýá“Ù;ÿü†eQhN˜FL£FO2K´‰¦Aúæ·À< á5žÓQ4ÌC6E¿í ÞïU~{4«æ°yPóº<90xAµãAMÅèSR<8W"zF$»éQFÖsñ‰à©ïøi\£ù`Sñ‡;z>sMH©ÎeZr4—·K["s7i@‚ôåqó¢8egb@ðR9~©1ó’­ãwŒ¢Ô iVìA¿í¤¹(~Ç8¾>"+e}ßõu¶/©(C.®«OrŸIð÷ä7~÷YÞ-¡ÂAyXXјú-ñ¬>eêí0uÎ<•þ°]šùÊÌ( Ðà·óX# lÞð+b'F[¹Ý¸‘ã­ÎO…S4Òl†o4¾¯ÊÞ¸ÿã`ì6Õ§Ïzáý˾Žäé‘}¼ƒNk»9-%Ç¡S³Î8†Ô­Óü@tj!€²Á[•®ËhzkÎì–¨(nç)!ï\º ñèÖÐ~¢»ß™?©ÔÐç(ÂLÛ`T¾²® «ˆu“¾èízÏ ÚCÐ^ó÷: ’~ÌDùh+øøx‡äÑ÷âkpôZÇöNË uÒ_Ø£Ö{áÖa¯=èSpsPÅßBo.ÿVô~ˆôã%•–nZñm æï»þ›Â/¹Iþ(JqtÒ²Ró‰ß ž;ÃÏèa/Î`Ó¯4gø¦¦V#aøSݹj‰®ñ0 äˆ1{‰©]Öb˜Þ_væ¡+¢‘a²§²¾‡æºmJ¶ôüêÆ´'×KÜ!:ƒ‘¿£²f¶³“G`ŽÛïF‘8Ê•=}I&þkÈk¼ iH×vÈPÙU˜Yn¼È!¬jIrEµ~ŸCÏÏàX\ÚGí±÷Q™‰‡÷9xM@ O÷Ïb%RÁ(y*¥/à­ÎM^—_ŒÐÌ)ì.Pè?©gb"§ÛKÒg–Üæu€øvL;³¤dÓÙæµ *'!Iň=Á§Se–|úx#Ïr'@LÃÒàqó€ëØ4y@0Ï •ÎLgz$"îYS§• \ŸÊYR‰nÕSòëJ¡Í·BýÓWh3ºs3b…ÊZ\õ'iÔ˜•œR²š)U¸ŒëŠ“”¹•éd“¼K)s¹îVfb*eæ%)“(Ç¿ÿ5A§³Òët’¤’{‹\:­ûšb ©tyñe:ðVÖl*ªû‹ìò¹º(ó ›ùN2I'šýáÕc÷ÓO` áÞµaôœKÇ"–•V^ÔëYöæ:Êa^Iù¸ÆíWó€tJþìRü,ycÑf ‘ ÷³A©‚%|Û#rãÿ2Ü%÷ ÛTÊw›OkéÕj™E0ú=ñ ¸ü¤c˜{Ø—ÉÉLNW½‰…a’“¬lºç¿âHS2TªÍoývY)»Þ%ÛR^’-ÅxÏŒg°ëu…Ÿ]¬õ à4ÀEìái O²X”œVàÂ|£¤oƈy•R|2}*ÙÂàVeNlQz{·àÞ-øõøÅ‹Š_±…ÍŸ;®ƒqcºÂ¸1ì7ì(ˆGA,ùˆã ·‡v°ñò¤š'¡¿I£•ƒþ2®LêÌéÑ_øæäž+™X謷Çö„åY‹Ô¼è'î”4mé<ÕyþD¼ö‘“/ üM6Ÿ|}~r4Í_ÖB`ŦËß1}þ² ª–TT5#iÔ¦íiF ÿRÀ3aM%b'Tµ•PU}*L­ÔݨŠÑßôPU%l€Ä˜:3 TQT1úK…©Ùa¶×al¾GþUK ø{eû«“UxÇ´aêjØÿj@ªæ9—JýI*Ξ”nݼTm6§jó¬Ï­ÍÄôµy}’ÄmÎJ¯ÍIhá:¯pi³î–hVä®”Ù?3M¥=ñ\~êdË1?¸‚,™»åâ{»åz×kEnüŒ}³†¹$åÞnºÎ¹^tνšK-î(‡š)–g» 4WŸ~öRüL:ôH‡~ÌÈv ÃhPÖýƒbÍ>%v"Á¹p¿LkýY_-Pm£|‚‘Wü3;œBó•Ë2šHͦ¶OºfG5Û$B!Å’*bFRËW ¤â½íÌwÂ/V¹&"WàE%ˆdäa ¿#+ÈPV°.ŸËÏ$Æÿ“±…{V‚wU ÍWKÚù†`Œ³ÈÈ€fœla¼'­¨Ù™ëéÚq:^' x’C|„BºÅ‚D|! øî qÕOWωrø|þsV#ÓÇ×OÿAùŸÿ]?þ«O‹ÿ®OÁ~à¿€U÷´ðŸÌ¸€„!j’/ÿ]÷Eá¿ë>ÿþãýùOÄcŸ#þ[õå࿼Éñß‚$ü‡Í ŸOá?ØÆ"6þ‹`þóÛøÏ¹¦ÁÆ )øo ð_sþKØø/¹?ÇÆ9ŒÿÊ€ÿo~›™o䲺C»a1Hº^u½Š­\É„âTnå‹U«!ª·¢·² X¯ÎäøûÏæþCež°+óW懽iŠ@^Œ¢« Àù‘Ô`w}_¡ €×Ù»caÝv«Ž‘0ç%j†ˆA´„‘¡: §·°7AÀ¦@áN%]|x;ùÂa>>…˜B¦„Æ)€JFXEõ…ŸÐ§àæá??žË.t—]4‰µÐÐJ¡ÿø"c¹ÕÌqåöI ¢¯Uȱ¥§JD,{5å°RA\2fŸQIn]íFD5ĈµKXWÍsXW5¸xD-Ä:ˆ h€h†hØñÄm»!öBtBtCô@ôAôCXÃgá“F£+Eƒ5óŒ]w-U¹u-dTA¬†¨.d“â[†õ'#“LkDò¹×°Õñ6Ügf¤JB´@$ ¶ÀÊYq¢»áâcO@´Aì†Ø Ñ Ñ ÑÑÑ1aAŒ@ŒBh­,ü9yaˆ"ˆ…¥Òo~+êþêΊ{× ç ƒa´Äˆ8ýð-¢+?S˜™Ž»ªTÿ³¸«è¿xFç=¿XJÞð6þ+&_¬1ÓÑ­Gæ˜Çþéµñ‚Oý̯¿¿mt…~Ñ þ4“ 2ikS…É.¸‰²æÔ!ö}(“ÇWZDÕoÛŸÓj™n®¤VJ׌bþJ×~p $Ÿ-®mx0ŠæaL)6'ý1ó¨·ƒ)áÌÅCŠT”ÿ´~’[_-Xâ¹ÚÓØ!rR¥w\ÇsßLºä§E9<¯|ÎBØ` w5vÝfJÝ (Ì'BÁÍAÓ”éK±6&Á ôοÅ“aú 1 :“hÅŒ",{ЏZçÉ#+Œ…êB<ˆŠTÖlú/u·ÓÕ’Š3ÓZ"¶Sã,ֱIJÌãÅ'Ù£œXHmaéHì†~9–ycøl[h –MÛ_Y¾§eŽ?]--+W±¾äò´dÖ.¥e¯úsçå=›YÚ‘# ½DüiHô_(àH±ò*…Ý.ÇeJ'Ï'ÎûŒrgÛÛ·—+p9O9ÐßñU'vÍñ¬îÝàç%H+¾Â³cC¹Ë89ã<2Í×¥Ö˾Lv;¦æ’'03î1ÿdŽŠzyÁÉî»ü’ÃÅtIÔz@=!`ŸÁ¯ªR]'`}S¼Ç‹rj—žôùbeˆo™;¿Òí„P•¡'öŒî€Ê "w «,‹GòÑ/ÈßS@•ZÊÙ“¤%uÂZÊwi)9†Ä‰ÙîͤmÖÒÿš#¬¥”“3iénÓJ¯£Óúéiëh¥~Ï:S ááØôP»äŒv‰¸‘£•eO‰¢7•Æ‹«ô§ùšxŠy%±á%ËT‚»½æqŸL>¸@+V Ûå½Nß4GKä(á3‡`ìißX)w%N›¯¿Å~€d5æ!Ù-ùÝÅc&Ò3!¿£è›T:ž¥ìAÌžžDa|)cY[™ì›NAKÉÛµû;7”Ø}¯À¶„¦ú¦X¿Q½³vêk“í.ºU.šÅö×y VÊ)úé<=S+¦ž(L|~ÌÝKï½ô‚¨¡jl1Iªý½1}Ì=7‡”ó½)ó8<ÇöGÃÙóZRÝ)®œì>úsqcÚâè…ŽÅÉ>Š>)îIV\÷Ñš¥Û÷ÈYºà1ôV[W0b1´Oè­“E|Ù½•F F _œÅÇ¥dxƒL'9¡ÓÞkžN¯²A}pš*kïpuÙòÑX_zÐÑñkrÃü*ºÌî!> 6‚ßS·ù=Q}CW»Nô)¸ùº/5g¶>ˆë?Oü1ª<Žã¢ßãøèsñ`WÕL âDàˆ|ˆ0„QīΑO„—ßÄ•‡ïiÝçÕ£¹§î\ì³ý&öY“$䄎`nç5;³.išO\Ó"Ò[·ÓCä6maý¡Ê‘àržÅ_Œn±^Oj‡×¯ä …ÃU˜v¼xƒ°ŠùIùŠ tm¾9ÿ 룸Óì³&½ GŽo˜Ýº%PÒ®æË¢ Ñû[¢Y5‹ýú` Ë஬Z!¼Y•âÿúà‹ÏtÅ^")G÷‚ÙÐô?’ãé‹/°Úå°B?¤Ý0«X1#-6öfB5zç㬘%žÏE°S<~ýÅå‘Kž÷О5_(ˆU+êÞ58ÏËŸ¹NÞ…6Žnø.yØr›ImHï_s¿~ºxp×q³WjCÔUtvO¯µ‹ªÎc^¼j¶5T†Ð©»÷ ŠÝ9±qÿËåñ”P—2bŸü¿‹•ì¨0ŸÔØ¢aen²Ãš²½×¢d$}˜Å8m!ÎJ*Ëñâ!ÚÕÖT¯î“ã¤ié}Ü)ÄÄÖM•*ÉEÍs¹æ¹\óKÜ5·ºÙÉý7t†ÂRYÌ̽¬ aÔqýè_>ؽ†³0ëÝi7B<Ÿj#dãð¸žfüÀ;é¬íÐtâ0}Vçb?:6ÚËü’ÑÜÝ—q@Ô¦bñCŽ•dãBË|wÔ­kr¦6—Ž‹ßl§Úžþøæ®>8ªëº¿·Òî¢õ‚£ˆ-;Þºh$»תE£8ëVq•–$ªMS<¥S¦µýÁ4"“i!G˄׷ L«ÎÐŽ¦‘b’ñÔ²±" Œ„È| ƒ±L¡Æ Íìòaƒm¨À(ê=çwî{oWÂà¯IÿÞîÛ÷qî¹çžsîù´¢Æõa@ýÏÄOÍæL™üÕÎtœ»è˜®õGéIŠVâƒÒTôþË:xÇî–G¬vtt6Ö+}ŽÍ¦ûúfëõÚEwšÙÊàUþ=Ho÷éí²>ˆ<*Éúƒ³ŸÎ[Âñ>@š¤µ.¤êñeß™KÐÒøÌW,ŒSvù "ï†1z„N,$íúÄcŒø´]ñL¹â‚»¡ì\>÷l=Ý¡_•¡chQZô”3t¢w5p &Ȉ öMxä 3H ®ÚÄòOO$/[F“…½oK™î$0ÇoãKsïoÔó]½#¶î±Ó)Š0XÁ´Aå6ùôN,kÇ»×Sõ£ )sÔ* .=~gH¨‹B$…‰¼ŽL¸CX{Gÿ¢Xåô6©BNùÒj¿ýY.{;£ÀýcíÔýã— 5ïdƳQ¨ èJhŽÉ æ“SnÞýEº¤¨ÞÃR4>†áðûð ñ·¦y6#¬œŒRéšXo ²qÑšÀ¬3‹(¿Ö}sIß•’» ‡«¤ËyFÝÆ+¿w;Ôę̀ùÛ¿vý“zÒŒzkF¾=£ ö¿¤xº²”ç‚{Û¯^® . EÖüN¢Þ©¶mRhèù×Ô_’ؼó 2—ß.d.lF"æRjºÌ¥ö£2—©K6›¾å7Á\~vÛTæÒêe.SŹz|söŸo†¹ Þsi&2sô0—µŸ¿!æòÍO¹_ @²¾Òy ó¶(ùüA&8éïkáÅ®ó÷HSµCb÷zËg/d®ÒïÇ/1a_°J£ÂU@}¤›È;)ÍÖ­Qkg]“2Hê6ïƒéC¬÷O&E§õÆ[Õ2U»vεh{ÙT 7……K¿WÙñQW´ua¤d]r¸Ù¤V&¬c•¸†8@ˆlŃèâ÷f™äMÓXeJ.Å£Ô²g³nÞ²gVTS¦¾ËD›ûغ¨’cÌÍcTñú'$}:럵¬ÿéì§]ƒ?ç¨ÖZ’¤ì൳W´ã:ÙÑ‘Ûë¡§¢Ç1ö`A_hò±É(¾XLÅ™`ݳlû«R‚a`$É ¦;]yQUæ©ñ€* ŠW5x[|-»&h ´ä¿  .  t‰ª`\‚k–âš9ö kÄ«OÒηÊîIŒ˜¬oÖ)øú¢ÚМ_zB:U P¬¢)Q£þjû|)ô¨ƒY{bí7ëv$È&Ü$›nÛ?µÇßá‹mczÃúç´óoô~†óþy=ÿÙç?ÕùçÿùüL_Þü¿ýQæÿ½Ïhþÿ—ÛûÊvœª±….­´Þ„ºü»´ºaÄo¤ªËž•N~åégÙòTeK¤á¡4±µD†ì4¤Ôß˨,­Ÿõ¢›4'j¶ð|׫ù^q.¬c»(òÑ_lg®¤€êÓ¦yš]q°mwÄ×1g¹Þvê]Açu=L×]?‘©ëG›:ë"nŽj½ú¼… ?ŠD#®á§!—.Áa)ËpXŽÃc84FøA+"<)M¾ýûø­‡VR8¬Á!Mo-æ»Þ÷ègž· Ï[Žoô.5³uøˆ@âG\‰e¦’ø¬SJ;ûùÊIˆo§:l¾ eàøÏæ“,RNê@ÂJü™ùžº·öï Yåâ§0åc#Q˜_Ú¸†Qæ®ÃA5·ATsË>:;bäËÜ Á¦š­ü”yVW Ò†ñÌ:·„Ïã+±t%‚Zé'·Ì‚ QRáÔÇ›¬ÈÜljJKTŒ‰©êñAƤë 3žEצ¥*èØ¥QZÕ§cée¸”ž¬´M¿S6ï$=’:Ü1a!#}6Þƒ1>ŠŒ¶qµ]•TmX {ZÊ©" æ˜.ufÕ§͘ŽÉÓɘ9‹·Ñõ•x)•!:½ z1}aõŸRûýÝ|‡%{?ë@ì9Þ[qH~%TüñçÊé\éõ±Þ’»Õæ V):Õ‡VÞªÏÍQç’8W,{7E0~~–Ÿï&â°ñÓêsM·Qê½YmEÈ\Â⥈üM½H]äq´¸rÀÿNóCÖeøõV\¶^3÷lÕÔÎf!¼iZøxÛbî"ÐŽ» ÝbåàÚ`øN»h?ó5y½.‰õ N¶Ív/,‹¨}¿ñå•7ë6t½“ŸZê0œRPÉ“?Dö]šµÌÐ×B!l»b®¼ËF½.;Êìt¤%®×-–Ü©+Ný ÃYè—ó‰¡õ “™`$!/#ªvÉ03’÷®2#tIn;†°VVŠUÖÔÈ«ñÕXš Pè€f§……ô® µxPW Û_1ae±ÍÂ0˜GveÙqšÅZbŸê)TßÂQÐý›¥µô¿—Í1®@ qé!4™;,<\½o b™íË[Ðr I”êCjµAâ´M˜-³ØenAnäÖ]žœô¤°{ë §ÃÉ#V7Õ]2ß\OÜR1ï_*qƯƣ½H²rÄ´~Xâ’zŽ2(éÈÎE'&GmûÕû7hV£¥Ô˜–Rk¼RªC\ãNš)é*¶h.©DÚÇN%ú§ò:•^¿ãÍ–…6®´†”6OZN¬·œèÚÚS±'öÜQë5ÅBH=Xó¨a^$ä_úãW“më1GB¶sÊ¢ÖìˆsBõWZÁ’f¨),àò¡*Λòs±Ô¿"ku#ÏŸNq‰«nVͪs±µÏâ¦e/Ë}zÿO<þ S…ÿ4ÒTÆŒîÔ.‹Öb·6©6~–ÍÄ)þFaýЄÒ¯®Eɾ]läÇBsóì5x^ ªÙýx Yåä“·$Ø;޲/æÃ†«žÂ=ÖPÅPì¹½\Ƶ²ÑŠQ2—@lÑa.e¾Î;ÁÌì)¾+ߌ†yÂÆ̃D¥¯ng$ôsoù Ôo’‘Õ F…M,•B~Žù˜ZæàxéDîbi„Ù‹X˼¢–>åŽç«ÿ^T¨B®AŠ?¨&O»K?E5`&¾â¸Ëâ¿—üµ5¸y̬‚P [æjõÆ#ùso˜þµÐ¹”€\ªªXys¨u,ý$îÝ‚g޾T,€îÐJµK+oôRQèöŠò¦õ’ÀïÄz£¬½¬,sNÞâžüõm›«#9ãS²Ë§µÒËîþµ@9M8jÀŸ£ŸªqTPLÕ}êTóÊo‚ÆbËU¬}ÚüvJfýµV*w—«¸@lð€VðŠªGWFtªß¥‰ónD¯ûêÇÓëJ¼³K™»LúíRç²ÖçÅÀq¨]äòãe•2íôN»Œa"¶ö»Z:±i~\ø«fPän‰Sæ,¦ÄGC…‘C¥c"ÌÂñúF“€[ˆz¢þÒ@Žž—·I9ÚAªP; “¿›"¦Æo\L][H=˜*¤¶1 :F1Ëø©JI„2 ¤LN _6§R‰Úâ!õ2%/›FHu'’ÅÈâ*6tM\-¤¾86†Î8Bê𡬱|!õ˜ ~6êüSTmž€JB@Õ ¨ ƒ±R>Ã$7[÷cl1$LIš¤¥V:œi13¡(õ‹±šm±·íW÷2±­Èqÿ9zBÛ.ÓŸÞoF±¥ïV»þ0ñÁ¿{Î\µÉêÑ{A±h5ø )ø*a­N$f({[duwÉ ©»÷;ý©—x•^[^8Z ýî4_s_ÙÃYÀšÈ3-cvÄ2}jqæAíŸîðloJØó¤H¯Ó玑G'ò÷•0ÙŸ îKÞtÅS„„‘±ÔAÆ'‰GÈGÅœ‰[Cžvö¸$?‹ö¬°åë‘îžõJØ( ©Š N˺‘ Îß—ð„•ÝLKÍÿÈ+\SÖ›o…‰Ñ|Íd5é@ÅQ‰ømžéüQÀ?xž”…¡ð”}ùjD"ªáý§½ˆ_6æv‚ΔØ"0˜[Áù E>[§ÎÅÖ¾mˆ’õ¾V²FLÏ (´†ÈŒ0óÊaßQjöaë˜6^w¹ýfÃq£VsµuA1z<)åi<ÜIØUæ€:¬ÿ\êu÷ô m³‡»7c;Ü}œùÐw&½ñ£ï;ò ì:>Í¢‡§ÀIv¼ÿaöJqÉ"EÅW!s?&}Ï ½ø1 ”Öø1g §9Ã4Zò‚ä§Ì7^@wŸêÀÈàS…>!󵪮ŸÏ£sTêö»9*$GeBrT(”¥å¬‹G`žÎ<0ÉK°ÌmØÄùˆE­ xQÚò¥}œ‘R 3ýÊò §íùÉ_U×(Ô„€YNŠ£ƒ, G]ãäï0²æsþEQDüÔåãG‹ÆHIb`†˜6¯™á´h£‚°©QÁXÍÇÇC¹šÙLÝ$[VÐH„ñAÕ¦¨êЯöN‹%_óP²}/lpÎëQ$t¢ÌCõ…Xæï'¦ p¹^T†¢ß4ôŸ‚ ]ÿKðÙQ¯ð°c©·|¡ÄNMnŽZSUçNG8!¢‰rÔ´¤à§bŽCÖu 9ð(¸`³HŠ`Õf‰ƒ ¶öò§Ú<™1ÝtI‘›Â‚œühu.™ýÞŽtjÀ´«KzˆÎׯ ©á¥À—ÀNЊUÔ:Iáä¸nüö‡y»CŒ°o1 oÇïpèÄá)6áЃÅ)ö¶Š:w—†U#¸`Gp8ŽÃ)²¦7š>Ûu<Ìs è·1pú ï:y¾Þ3. *[ؼY„_tÅf'7ºáþ®J¼Äønúåñ,¦c¥ä³ Ò>Z–Ù¼£âÈ.Š_¡ì6ó«ç+²f6¿&Ÿ›ˆ*¦ÜDÔ{ÁCØ»©ÖL¯¼A'¢ºnЍº¸t„hNIŒ¬‡zÈž‘‘t°’D¶ö„•÷˜,­’Ž*”Äé:œž)ÉñêL=Î8G=N/Æé9Û‚8Í^>¼Y’Ëû6;‰…ùHwK\K1š¿÷zHÿ¶éãÃ{ò1Îñ‚nwßð{¦“ÆÄe¦¯?ÐìǺ]2AöóãúaiG_ðO¥sZeÂ[qu_»ë©‡iኧ“\•ºChì¥2´-áÖ {Ìñ—ªÊ©5(UWÂ…AjÝ¥ý¥Šýá•äs°Cm—ÍØê£ÜãFiiõÓʹv|p›š²?3º†éø`ÀŽŽÐ‡¯‡r£l´–ŸèŸÇð3UeôAj@è®Ó'ËÖžŒøÕ\ÁÆßÙ`MÕ#â%/J hÜÀ§*1TP!EÁÛYYlöÜ2™IEEÔö5©¨(©Xe½b•õÞhÐoîd¹‹ìL@øS>‘bÜ2¡[öT47ûv–ûÇò9*KåJxÕuÈUN·cÄb~JæX-ŸMRs¶>è{&Øð¢–u/jùpr›È‡¿šFu×zúõwßÓx£’Ð2¶-¢Kfë‡Y¹ï)˜±ÀßçÎXf¬¿`Æúqz§ço•ÎÄû_ÔõI6:“x{?ª•I´o¦â­å\²÷pæ[Ô_`q&>-Ã_²pÿjç’HGˆ ]OtM´®>º@«"œ¬²­XKÕjÔ‰úm!œhP'–¨K·ÜòYN`êD£ú±){ÏËL Ã{±aLä&r¦„…døáÝ‹íÃ…£¸PC•¶Ö'ÚZ°®Of5z_?Ÿ«UjÔ M(kËý€:™ýÑžÄ#“xp¹“8†Ù:.“HלÄ5äIž¿M}2ÑWÍ_“ÌŸršÐ ëM¹õ6ÌD2û‹¡07u,ØsŸHY€D‚& ¼••¢€<‹kλDvž×GÉYqc‹oï—õQ¦ËM‘*S¼W¹@²µÄÛ’õç''c½°5ÄzË÷©—T³±˜b©<& ‡Ö°;Ý¡0­$n”Õï,üåz`åK·@nf‚£ýŽbx­é i'OKGÊ'³Ë MoúýÜï†ôþø“ò./ØåÝ[DÜ;·è¸î“ý|®V/Û¢ìÏi°ŸÙΔÍq9á T¹ô)ºûʾµÔgä¾VÌz ˹YmW|±Õ_ P翯ÀRó·žBi¹xð›´V;üb§}´Dépƒ,‘h§¡†‚a›”‡ïþm@;ûW¿J¡D°d°Zù[vté@9 uújEº–©oÖJf.§…r?)Ò"UÌ]Ö,Ö¯ì8 Öo„®5UŽïdš©B­\ù¾—L{Tð¡<´U¨ªüê »ïj‰M\Áêx+¡×-u&.¡ÍCdËmDE“ÛyUîæA,Ù”4åV]×3ŠÇ¸+ûº*óܭӫ̼& À:hu ñÛ°_3Á7&(  ¼Ñ±RÿmßUyí;“93a’‰×áÝÑŽš”³Ö —tÝô5õº©+*"Ò¨Ô+­¡/Ï}ðàB€P²Ú¨áe¸ætÌ}ûo§¯±/}‹Õ›UÒÛe"¨'ùêI‘zb“/ëÜb©óp³‰¦?}ÆÏÑ]èbMÆ8kð¸6cœµx\—1Î:<®Ï'‡°ç¾©Æ©}S³öÿû855Îçþ“#èsí6ã„òº-ëâú|æÆÆ‚Ï|ÓÝø ·YßÈ >ó€§ñkJÁ -¨¥ž6O¼âwMÌ›ÐØ?D Íî~B µs¢'ð/†´ R9ãÄÆÝ“¥"«œ­Nð2Á›Äžù£ŠÐIJÅJG‚–€ 5õTa©~€™Gî3ËÏà*v²¹vy©Š|©Å}'=Ũµ((?<™Í¹%‘WÙ«R*çÅDb¢G1Ñ£Ýý‘«hʯ´ÿfW¸æÊÿw·5d8Za»ëiâs÷% T$~Ó ×Ý̹øWª7Ã5–]ââz/.Éõ™ÿ´HP˜ùÊÙä@ÀKª-Cšª›Ø-‰âCîv!ïÅš#Fò-ïâQOvð€–à /ˆÜò À>‡ûÖG]KIcqòmÍÀ!8úÆÞNhMù|tñ(’G¼MŸtdN¾¥É“*´×‡‘=8Z{à!äÁ!šñØw2ûÑär¿&hÆä}>ÊÈ<ðÄ÷þÆç2îšäŒì3¡<˜Ømx$Ër¨ièË“žFœ.Oºä4ê“ãÞÅL)÷.ÞúO¹´uè»­¡YïÞå"-!O„n)N/{£Îk>ó1»$óúh,\ÛFh¾T|d•f¸î¸6ºW^m›ÌÃfÓ"÷@zuœ!?í=Gê¾h¼£få5Pƒ—“¾–äE÷Éàþ]³tÄ»îǧ…LÈ:–1òycÏñºÃ$šE]9Üß!9®Qäáe…|§(+gF<Ày[-&‹†©ìdäÇFnÏÑ*†å;&=e"=\‚ÀG™+ÎQ.ªFÉ'²Ar R·ÙÁVÎW`«–öªf½*nWµ.¶Ù28H²):{·\3»§"È*Á¥‡MqùJãÍvÃM73ÈS +7>ˆ´É·æÅršìËï`UItWÙ÷eÙN {¹ƒšÔ•©“ºŠEÈ·çøcßµ¤RÆÑÕ†/-N!BD¬éAÔ‹¾é>iv¿¾ñÈv]§<<кƚJK©ŸœD‡[,¡Ž?uþ‚ÑP"èßH’·û 'ôx9èÄOj$)š€·½GÊŸ/%KB÷à°û¿â8!?µ~Ôýªh¬tEzëEå+œ­r´þµŽy‹5%Ò >%šJž¿(ƒÐb]Øÿ°_èá¥8iña±Âu7˼A´‹ßXSÙU:}œe3re8D!c^ÔŒµFNÊ>6ô)øä]Ùÿ‰ôÍ.é£y {_³O¶>óùç´ô¨b\'#ÐdX-ýâ¡`Ó?€+ÒÓ%4š€!.`}[‚Ü2+Õ\êM ^’À÷ô>V“Š*uƒ .‹ç.¿Æ”ëæâàäÒ‚ì9¾3g÷‹ &&"Ò+Ô„ >Ù2{éÒÄ"òÿB§03®,å9ñW¶ÿoÖw”ÿQðÉ/SÙ›íøê¿³2ôvb£ “‘ya«Š0Wñ"]Ãú9µ»°ÕAs¸/ùüâ–?Z͘}ÚH©89tËö:ADoÅ4å6'ö¦5‡¾o Ô¢9Á$œ”ì“t´PäWM-ÅibÇuOW϶&m2d# Í¢§œÉ¹ùš{*÷·8'*l.9çéâדÿrü—d¿ y#‡³JŽÏk ¹‡¯Ê¡_Ȳ‹u/Ç‚o¥Ûë¨;äûA|οéH1 éó_l<žçåv©ù'Þ‡cÅH¤Ü皽̃»_ØûðZ_©Cpt§ßèˆS†„‰…¶»Ýì?lþè¾™ÆöÂ^)7A ÓD¢ ÙT@7¤û ò´›ŸT³çƒ³²¹ã"åKÛ¼’èËÛÆ%"¨§LfM½×Û{Å}2öPOpÿƒ³îWmwÞIÊA³sjç¢1oýÞ1o«ø_ú¶%´Ú¿dP-ÀDÅ)x|ä´Ñ;À±*§¢LíÏ\]`²/6¾ Fâmg.ŒöŽ^=2zqÎZó[ L¨q½W¼Ë‚^_ Ëhœ4†UâÆ?$§‘}\Z¥µ_Äš´ži5jnäEÈ£EVÓ+æu¸=~5ö‡?&…dÖÚ>‡bòˆ;Ü(%/0Fö–Ž=4+&Ï“'fîPÆäÕüW9´Ì ª²¶Kàûb–ºotNÇhïé&ž‰Ñ>ñæâÌ[£ƒêÙõ,™>_2ƒ+˲âzóÔ~ÂfÃ^/å½þÔ,¤ï†z/KlmFú{Eï6ßì¢0gÞ‚”PÐíOÈ»Z`=ˆ Çëõ°xج±äœôƒJrÚN=ìÛóQpïÃD"Δ¸Bñ SF‘ÆP–ýD)XÄ é)ª‰ÂÞ’*P°]pÄD¸Ê¸>ô¹ õ]‡kÜ9=AIG7æm´°x,¡7® ‰ÓëWàD•…T_OâdÅ Iåžôµ2™BÓI÷{Œk1Dzâ´ÑÅqáÁÐ_®¥ãB#у é+4MͰ=’&9kÌîBK–S§¬6ùú—•Žoµ¢¿-+X6”Û‰Ëv´G¢Ù&,²¤ fÈn@Q‰n^\@5—Ê Ð ’ñëgÞ–è ¿z¦Ot#®ï[Áý‰ëm+¸Ô­ÑñÑÞ‘£T wpõÌTE_ûNGyšâFÕ´;f÷uŠ­)µéX±(cgBÈ c(=ÑÍè‘lÚ¥´ëÕSÔx ϼ#êìFÕ+ ì^©ð^£|%ñ¾†·Ý‚W{Íðâ×eÏ»5»ŒwÈgË”¨pþžã5^sú]qÞ4I„â‡÷ôJïÙ‰G½æð»L?ZÁHŠ¥Uˆ£zk×å©6¶”ÒNÖ®Š=W)öüîÞLˆNº²ÿ©Ù[_‰{KcЪŲ÷ˆ8.ÞnÌ,pñ‰êPùY3[Ç‘ÕæÎ—8‹^ˆ‰ï†jbt\ß uîy‘Q‡\?OÈϼ%^ca9ÈÈ-Œ,ÿÜÛ0.ú‚¸Q×v.–¶Û£Ô÷œ‰#jÀÜø%Í•=!þ.8E>Ô¤”A=z1]jÑÄÍ‚m[š^ÖîAö3 ƒ }óoÇ¡h„£{XS3p~¨ ŒÍ9“K#úøÃ¬S+²Óh-‡=Õáû̺W$T×­„ê•úRñWÚíÑ46‡˜ÿôS¿èCCr¾ŒaMÉ·¹Šé§\EŸ\Åkˇ9¢Þ{ óx;Îì}‹݃i—ðÄÐ þê¨XÁåbéæËzyéèÃÄFŠÈ_m^­äÁibróŒ¤G*_zNžÃ‹“î¤qmŒ²!‚ÜfEÕæýªyl0“ N|ùÐ8áKà yWŠÀsßMÀ 5Þ.îÇNJó@åÉñ9: õiÛæD•Û¾(På—+ M:.C“Ž«¢Éû™h"=ÁÎ,~YüÆØòòù× Þ¶”T*l)¬”ØbyU“á Q2óÞ]†(ÚlDA»Í ÕJÍ7’îs×´:¿<¢0@Pá{›sšÐKÂ#iœ×C‚òbkúJ»óºûucŠ¢‰^<²à"'-g¯àj³JUè!-¬ Œ‚0®„±rw¥ÔV›ïºÌ·ù ®µÅdª!5ü{Ο¹‹/x›o]ðfÝìÐŒÛ ”ç³Ò¶Ìo5ùéèÙ–m¥CA”¯w¾ Zf S¦¿†^¿ý-I¾g<>ÄÊRÔ†ù­—ýD]QÜ@`ó“iµþ4/ô­ÅÜ „™ÂPNân¾Üšn-ñËÛ¯ $P7Ãٸ+Î-]v¯s ©ýqÀ8¦PCv낚>Z‹ü¬ó ‡æ±§÷(ûæ±Ä?0;†Rá3„q¨N €†#ólm×i0¦¦f4äš „":@!b’¹—bKÿ¬“ÝW`}àÀç¿&¯ý(÷œÂ}¾äæSl`žs€>S¨ºš‡ ðº@5)?–¦‚/ b‚o”˜ZÅõУæ›"k9w4//Z›7ÿš–7}ÿV4çð—ëU—YKÔí*-4›Gåꕳåò>†HI‚aÇõÔx¡uÍFò–½›Ülž »$™¨ÓWЇåéW³ØP¡W>çr¬3Lø]f/…Á`ʘÞ¬CÊ•Lçœv˜‡Õçsx†ðxØeòQ†Œöö]!é–{N‰©,øÊkI8KÍ[ÂKN‘`ŽïÕŸ{¾ y´uH°)ú Áð®‰Ò7ÄœùŸ~È:¦‹óI£…— ã¦ï3YÁ=a²PXùõê#ˆëQ I#@@ ¨Y̬Nö)àò‰ö šèaCòb] ¹°^âK’æ-î¡áÒC¸{é@âÓÞ9ÞâÜ3ò®‹ Ê¢ƒ®9‡K±Øåý›Òîò4•€¹6O†kÒóõYBî%ñêQWÃ%wÿiêͲ!÷޾-~¼×5¦½DïÚ²ç5™d玲ûÁ¦ëšÆ¸÷Q?RËòl´çøckcHnÌ!æõØ¥,ù¨ô-cóNë<R$J|×B' ßIÈHü/E [F½°~†‡)Žžÿ‹àWˆq÷þ›Ëbd™H9jFÞ›g©Œûë”ãf/Fð¢DGß›¿\F{»†ý íøŒt§6ò*TÎmWpMYŒ¢ËÍ£­b'ÞúV׳L ‹¼æÂ<úÜöIqà³FÀìž”—ÿ¤Ùï®´~{gëGJ¬ßziüäõà ô®XEB7©±O¾å!ã–XÊ¿“?ˆU|üz§p¾óz¥&"z7q+¯_Ë>:fV‹D?¥­©ôüGÈ!Æ_u1ÈI«ç˜ ±]Ž¿j×çïÜ¢ -ëâóóœ5¡ŠÏX~çÉüj1@ ÀR€R€2€ÆWÔb,j Qnd½xˆ_hH´´ì“ßÖsûÖsëYTì\Ï¿utôôôTWsñšj.^[ÍÅëªAâ¢M-Ëwpñ•;¸xù.¾£«XP P° .jy.ÓÙ*>ÓY&jHˆÏ/0aïÑÛÐR;À>€€N€.€n€€^ÙÑ0×s[ ôè‰0& `@@'À$¦w Ó;½ž‹Ï`îf\ßf øý¢¿f×·}“{Ldî’úx`à4À8ÀY`` `îx3¦½š@T¯ÁÔÖÔÔD%Þ4´Èµ˜BÌ!f«yÀ®m"€ ذ‹‹oÞÅÅ«wqñš]è@@=@ q—-i†·ÙXÙfo²üm,rdÑ`u4WPP P°  =jAâ»x®ZÑj   `@‡ìX{4‚=áâñ¶'@   `@§¨å…<OCºÐM8uwÞƒFzúŽ ÉéÚÂýˆná:·p?š¶`â­ €6€Òm\¼l_¾‹¯Ä •¬¨XP p“8‚œÆ$Ž£ggL€I€)€i9—˜ÄNLb&±3ÔÐ Ð0pLN)ƾcïÀØ;1°.€n€€^€~€*Œ}ƾcߌUÔÔÔÔÌ`ì³»«–‹kµØ €<€@`c?±`ì§1°q€³&À$À”œ ŒýÆ>„±ŸÀÀFNŒœ0¢{#ÆÞ„±·``q€V€@@û6v£.{¤Ø×(0û·Ó·¸~/»éú–Ðïão9wâÍûel?Þ\7ï›_Cà~9÷…ðü€tÍ„ÀT®û~ÍíÍB4ÿ°ŽÝ@朻ö½;÷“椒‚#5ó&¾Èú¹…÷<"OËQ×tåjëSËsá³Ù® 6;¢€6#§êýŸÊÅIÚ˜gMxj÷ðüä<2ˆp»‚4‡“[Tø`SB!ëôRU·%/Ýrþä¢ÛèþãmöÕ®D›;@];ô©-üH`ì¶»O’ŸÜrþµ‚÷èZ·]v¢‰¢ “TQehƒÄ–¢‘¥â;íU€¶‹(À»­CŸAÚÎSŽ¦Ñ ´0‹m-´;Z؇Ñ‚k+?$²ë,Pâ÷RŒ›H:Åÿ£@{F—ˆâ* "»Í= Ú=ºo+?äm}’ 4ü~ÅŒmáç´ÁÅËíèx/3w¾Ì=Ê]¼Ü /³Lõ ¿¼û÷¼ä=,`½%€CÜÿ Ñ>§üKç_3R»ß’˜ÂÛ>ÊÛ^”˜Áœ†åHTu”J$ŒÑ8ð-‚2LÇGå êÆ«LcoÃØë1ö|”a2ªÒvZe˜¦D™¦9|´HG’7Hñj•Z”+ÅåµsÂË Ã*9ÏpÃ[ë”DÒ§.JrYOÄæí‡(Q¸áY[\進~ÉçuÞ5äŸ×ï±íÂ?aô­*8þ¨7uÑÅÊ%úÙHÞc ÞAä~äC`ó”Ó‰>ð+‚ñ±»&kâF*ÍÛ<øBè^ŽŠô˜Š–Ò üBÅîÙà Úƒô ©V<”ngÖÄóð«—.Áÿs‚ÕJH¸ËeÊ[f)¬–¢eemܦ ˆE#Éñ,ã`pÿ(åÝ£I Qúwtu•FÁñǼ©ÿ•Fs»œ‡ Õ“„0ªÀ‰ôÏyßY3ŸøØ6•§S9î˜Ê¾ ÷û´s*Ïb* ‰'²8ÇY5ÓšÌñËLñÃâ—IüBýsº`RÉ£›N}ÎqÑsö#òôH7µÆØÌzÅúüâ!^ŸªP¬Eך[}ÔW!nûXX.¨;™BJrê—„‹yP9x‹óÌ,¼<ÈÍßnº<(‹¿yï§oQÝ£1Gšµ8’¦#‰Zw¸”3¼ úÕ*(zèëbŽ”_œOõ`ÂÝbûäÑ̽¡–#ÑÛЄÆðÍeBVzñ&Òã~Upêè¦üî‚"7´¬ò%ßÎÚt$à4!:$®”5ô>–5ñSå3DUMÌ·ý¸cCônï.H­¸¤ü‡T!w0\@“þ5Lz}oøÉy ‘B\p¹ìüí2q^/Jö>ùrY /Ò[µÐƒ‚ã;È<"§Yíu¬N!“þ…> úUDO×á1uïNDR4­-–‘õøDñj„lÉßdyŒoÍÏrðZ@?€’ÕŽt¹rðš q±ïŒ)}‚½Ï‹sßÎ…Ñóià•ÄsA:ßÒØ†6@ͯš’þÌaà!Z‰œÑ™<óß~α-ülXÈ8@^p\lžžÙ›ª€ÒÜXitå=7Fþ'l_áÆV^ÖXSô©Œ¦É3Ë-R4­²&ªlDw20 ´ë4žÌ;feå•'¯`pÇr”¿››e D³ðSÌÂR§Í¼n¹Ï!>¿k¢™£?˶¯-6’ä$_)|GOŒw )ñ©2»˜è+uXˆkešËQ/‡ˆ!”Á|ü²šÉëÞš5ò^÷|1ËXd…È<vó‡0À¯2†Ó¯¥ö‘™Fñƒ_d»Tv˜}Û¸G<ð¸Þa½  2{7 ‚f»¥[? Ô„©/ö Œœ8 0 0 0  mgÈÛÎ=¢Ž‘Õüë?„¦œæñí_qP—Ú­$H`B 1K”]¥ HNˆJÚT¤Ùã$ûf‘þ¹<)TtÎýáL¥ò6ÚjdW¬ðY­ÓGJã³Z_ƒw*ñNH4\éËløšÚüÍ?r›U¢ôÄ<ÿl\Ý“1üg} J…x\„Ç–²¸H³‘œâñÄÁ=P|º\†¯¢Ë®M¿Ü¦#³ú@[V§—šó¼<Õ>I5eìëf8W˜yâg¥\™ÞΜk–@êcde§¦?²€ÿ ]Ê#ðÞý›.yܾz§ñ&^ø#©½é— Á›ÄçÈ$+Ÿg¶39îñŒî£âÑÔv4^5t Bv,Ïüλg««9ùg<[CÓ;«À˜Ž~Õ½Ý67‹Éjs5Ú'=QE57¶f_¨á¦›_Ë!‘`ó´œÕô£~+ˆæ=úLNa›}¼Œ5>„>ú@å-”ÄÝÇF¡šëcx¡á‚§fþ„§ù;x•V´àx]ÖÄ|³éˆ]î¶Ââ\)_šØ•ùù(#p­3ãD\¯sÜG@lždC_ê”›ãÈIÉçëQ†ûóø(—OJ8ôЖp ;Fª¨[æH×8Ru¼n[Ï¢s–£K­¥Æñ•äﳌ ÁýG'Ñ:Y ²ºµ®ç-dM–JMû "þòÅ‘BñW$þؤhNý7ž±F7ÍÒÚ(e6+ƒŸÒ'²ž¥¦ÿLa”’èàTHOiö,ÈÐø#»R± ܱa”(Š‚“¤Ë Ùõ•KÈ>3=`WĈÆ+À¢}ò¦¾ÓPúÚ¸,¶­Î&qLàMú‚û‡åÙ$È“˜²lPˆ9¼tIOöÛ”Kìå~~8 00Û«h?ØFð‚yYdoÒ[±Ÿö¡2rrS9&úMH4÷B¢yŠ¿yïƒþ/ü-ç~÷?%·ÏCL2q"Š#E Úü2IƒœCH,Ó#©+¦$ ¨!4,×óÍÓÃ+ÂÛX³ÍC‡Ä6–û3Ù0ãóólmæ¤ Cl÷¹ÒO+ zÅñë·.~¹—f•1TFÚ OG‡µ¿šðhpIœâ­ÌÒÅõNF„n/*¦oFßA)÷}>³é£ûýXêö9ÏGôÏGÝV~o˜nüµpŸ‹uØZF¿ol:ä¿+À°>:jwó’Šáµ«@ 9<ÕŸU²«|¿_ O½çÃùn¢B!Ú§ÖƒRÔ¾¤”(ìB‚òÑ)§ÌŽ_jhÞ´Ô¦RTO±:ଥWên@l°ûÎ{À¬z|ö5Œ3ëlô#CÙóèp'ô1]l-s\ŽÞ%O/8e/Í®ã-O5’ “KÉÒ+~âwîBkÄš=bž‡°5ýrb°úÉ]8 va“>„Í1¿û;1Н¬{¿ÅG*MLÖld“6ݱµh6î)8òh õ¢ËŽ_‰ó;DyÊN`KŽXû+ÎÄ´Ž(¤± Ç´tí81’æ¦I²—<7q×ø±Õ2ß|#¸Á î?ÎþZgÀø7¢P«ªîž½¶î5¸Ó⇧¹%An˜¶?®Mü-ëgèë³|«)³¤ |ë=¤ÜóTßË+ÈÄ@…N L‰7/Ïÿáàþ.Ìy—~–À9r½—4(äZokdÙ•–ö’,S* ™§n“‹ÆÖ3¾PqÙûü?ü˜}¯h©M2Ê“âbÙH_5é³/ò(Új+Ùj®¼áŒ¾  º:@’½VyQ²x+î­®ô|O%Ó] Q«Hßcuv$ßaÝtÖ?ç;¬Žú²Åà:2 û“ĘCØèMý|ò§œh89žQŒ›¿-‰ò[××pÁý¸7åƒrŒë¤ ®Òu°lùö*“ÅÀÉ¥6NÆYܯÝèNZïŠÖÕ Ü?¤f#@#$‰Þäy‘VQŽtî Ôô\Ëv¼Mû§÷€êŽÁ¬kôD®sªI¯2ÝL¤%œŸÛD§Š! ²¥×ê+%¨±æ,©“@ÏÄÄðp£˜EÖ_¥ÉQ³Hg±¡Ô÷²Ôúœsu•  =¢†üZUà Ë~_ýÇ;ÎX’ÚŒ’Ô>ÄMWÓù¶W‰[³ (?¤ù¢…_‰Ù)º¼÷WàK¾øÁåü¶|Áh:è¡dÛh¤„„­F¼©ðVÈYõç;ê¨úó­ú©px–kª¹fDG†£Áýƒ,¸S":A¿¤_F‚ûûÜI^Rb| ©E¹‰MÇC”/G’<ý&%'î£õ™ïÝŠh:õv,:âþö‡¹ ½j/ë~{/;öò«à?ºß±— ý¥*¢@Ir…gÚצ¤(ÛI•DÙú:‹‰&$5Ë>tsÄ+#ØN:}æ>O§OK-§øU²¿s @öõÏ%½ÎO}Hê®bxÁZÿ¬ÿRÇú—¨õ_jã—æúŒ½(uô"Ï!C—Bà.uö¡ }Xî—’\™êÀr«RΗ[ð^ãme¦·l¨Î?‘+åóÔ³rʸU±Ñ=–~ã)Vù »G)ÅX÷`ó÷kÅy‹´•ž“’)(!æÓÌSÒÁ•9é(±\âš”G€o¡i­)yvãGœ0ûý±hh滄8ãÇùÙðX"Pý9ÆL"Ÿé å_d¡¼,mðJEäRÎHH# R+.*ýL.)£±<:ÆA‹âúJLš´™7éåŽEb:)é!,R¹s‘Vc‘*Ô"­V‹TaõsǪdz&V_Y87¡ ßïAžñ—’Äyo¨³Ž qš\i­½Æ$Öžì{¿ûweßûì sk$äìÑ\câè‰Ú¹9bq$ÄÐrìÈ`q$µŒ±DQa-H…_Ї§."vÕZŠeŸƒäÄf¾*¿%{ -úÑ%7 ‘Ï›:éQ2u J-Ãyº×y mPë°N­Ã^ñÑ*Ð8ªZ)¬¢!Ž¥!0–Ы™/(Bú;9Ù"óTÁ£z­ä`jZ™‘ÂÒŸ¶ù™‘òæ¯ó; +ñy)Ô zÆRZ<¿[_æ¢TZtÁ ùÄøå¹6ªVªÑªB±ǸcèÚé®cdå§ðK«DV]2핎!7é­Žm’pðÓjl“Vç6iÃò´«åiSËÓnm“*§i ˆ^ÙÈûhG³’qIˆ“Gp,â_†ÓÂU›¯£Cå…ß;•GàTMþW\aMÖDa ‹ ¥–5au~KýÄf¥Å vpÿx8W·‹°é ZkŸ¹~o6‡ÈŠÒgŽÈ‰Vç·Ú´†H¡bíŸvµú°Ú¬Ù ÞÑþ•êžFÝ‘™Æ5JåO,¡½ -š†Ö:§ ÿSLJFÇ"d÷ß`õvzH휵六;4y~”å„*¿E]•þU’_úUÒåY¬}‘ÄrÈ&Ì Öžg^PhMT‡`u#_MZÙG¢\¾:8*ŠŒûœ_ÙçTœ”y>.ísï“}îBº}.‚€þ{¶EúJ¶Â±ŠêîЗn凥eúrçî1^rb¤”ÓNª€nI]‰Ë**Öl¨¨¨hhhHleïê˜Qª›Ï|Ïï’ ŒÍ;Zý’½!ÍH'—• T7m~¤yæºO³©raYm<ÇÖŲ„3Ð`z˜ í¥ç>4¼ã¡8›ÃŒÈÌ‘ô‚¾‹ÎÓwæûü!ÙôÓL=X{£ÅÚ_îÿ@v[ÚHŠYÅ™#Õ°ÿ;&[rÔ4¡4~äm ]ÊÉøQð÷„hMæð(¦ ÃEÁ—ú×#—\§•þ+-Ô ˜ôtŽ-3°Œ.e†—ÝüÖtŽCf˜A“³9’þówZ¨Ù—ãD1‡Ì ™—ó°éÊû°y=ô>ô³…?¢.q ÷¦šÿÅŽmår×å(~ÎeÄŠäÚ¸˜Ÿ ›¬7µÿ6žïH®u(Ì•˜Èß  sÕ óñJ‘ÍŠsm4+ºûPäD³ ÙÒ\¹ýJŽ-µ£]ÏW¿Ÿ­øN†#KwHε±PÞDÓÐ 7¬4èBÈ „c •ˆk¼©í_q¹œª47]µ¯¤äO@žJ%ÂàÄŸË£Zž«Nü¹C—ç:žާ¤ü6g¡wâµb‡V>“Ǫ{0†€àÐuÆAñ;• î‡ÿk¬‹'`I—"=:—ù x pƒ{0c#)B<@·?óFZ°¬O ùñR~g¹…ûËûÙ©¥—Ôý³rpüwN:s(Ùàl…¸”h…ö¯ôí<η_Nþ.‹tЊڧã;V´x®ÊÕë±’Ó%ç5™Î%Zíz#¹øœ¨µ"Å?µDT_“ UA®Z¤ î?«©É÷~ÙðãÔ¯eßQ7ü…·Û¦šhÎp©1²(Š'Q:{> &Š˜í¸Oëvû±ªö®J&S·0ÞáÑðŒäIøQÖ_‡«gÂÜ»ßå4iD±Ùë€öŠÙHTŒòÎëMÃQ-j ·¤ôdy#Ä…‘?äO3…X¿Æˆµ9 Dn´¹Q"2dɾÿ'Œ¹ cn‘cîHscn˜[Õ˜%úÅÕ˜ãjÌ èº/c&¼Œ²¾;xË3ÊÇy-îË«ÀˆãÖˆãq«5âV9âïHÔ}ŽQ7®·ou’Æ}['¢ °­¶gÚVÏÕûç ß´Ñ$ag>ð˜/uçÇœtÂÕ¼ÍÚì¼Ãå`¤[©&€×3ŠõL׺Ҋ6û¤d¥"~<2Ü.ÝHóÁFÀ@3Øç̈Kfv%ºÉE¹)*J‰5V*A–à]²kdDLä2O <¡k”t6'–òDY£Ê¿¯ù £ÒÍ÷nÒè%.D?%,òÔ¦Ú]cáA;ð€‚Ø– ÕySŸƒÑÝCË«o·e¯Æjë=gPPž \¸ZV#¹p;WÀˆ%Ñ1Ž.Bà¹oáß)4±YF66éE(T±Má8"«¹5ˆ`¬„‹´Œc-ÞΨJÝN‹)úE¤Z¦Î³[mó"þœÉ‹öuH^ÔÛWq¡Ný}Øà]Jææp.â@ 3è yY¬Ïà@Ò%NF1?O‹Ô©–¸âhKuצÙ‹dsK’]é²–¸+Ùöžfj‰B:ðçLÂÕqõHÂÕF¸z±»A¸ú•üGÍm¯B2nS™Þ C–wº¢Êÿ¥'d€Û’Á-$ÿíµFß‹Ñ÷[£ïÏà¿1‰)4nÆ%9nþœ9îŒû˜·SþP£Âè0ú¶üG`eH¿òmÛ–ŒñSpÆ_±ÍY†Æ_P™)”:ä!küCÿ kü'2Æ€wr—žù£¹ B?d rò‡ ÙoRÁôá¬K 7qyÌðÜ”‘?vé¡õ¶ÈÍ;™ûŒÃ¯Ó}<ëm§ ŽgŒ«Üaô…Ñ&­ˆ#ÒÙîdoó$[©£Îpöf /Nrh'o8î}G­{Ô¦_ƒÉwnîñ£á ò™FF@NK2ðó420ŽÙÚœUd@nàq^RÚoi;;Î;Ûbμ«µ¼Û¯N.¤ð=nQîqPî³?+9x­-|÷^.²ô~ŠÈbb(“rPŽ7à·Âÿ)à¿ üŸvâ¿Ü¹SJt™RD¡çNÑe`Kšèâ Öì ElÑeÊø>m |:CtùìŸÁÀgç”O]AÀ ­¥¬&·*ýÊæƒjË$ Η¦Ëjò` ˜1Xõ±º šÔ2LŸ¬Ãÿø9Þé‚@\cÞ+¸ÁV'SíÞêä–=x“ ¤qË’]¼Ó‚AßcÞÔïÏKˆṽ/h ê™TÌh2Ï÷^*fò‚Ü›PP*fè»h"ÄÅ–àP4®é¨' ed%k\œ²ßaÒ@L÷$=8d=\ïïÖ,Øûæ²úœ›³>>jź@FåéÉȨÝ@ êoÁñÇü©bŠ”çÏ´10†H-^Ëw ªóHæ%—3òЉ›YÀ“¿~„­ õ Ïx¡ªWW¯¥ÄÆù {°Yµ’FIxÏ…¯åxLB–i †Q´%Ø$O.þ˜MÁC ãŽØÀÇb(qe±5—žÍóPÄ8-J^oÙ×h¼^¥ÿ*¶¦£ÝâÆƒ?fm+éuèý‚^QC”‘¬„'£á}7G-쩇²¹Å 7¯®$KèK±|Ö‚]É ‘¿,HáN„eÎ5°±,à¦h¥„¾h°’ÀÈâ!Þ:Ï@ ¾\­bÏm rl Õj•«WV¥Q†7Vª^:N‚iÂV7ïSW·â*«ëM= ç?mÿÂ2ðú›«¯o…Zß=<j}9úu’M¶Y²Q[®¥þ[6(6?óÚjÂÞ­5aÿV×gU€SûijÂ@µ”O®]K¸[¾¬@žP¬ûÊ€³k€ëÚX:Â*µpŸAGX¥pîZt„Uó’]Yg1¯uA‡ŽPÊןQS¸ãÚ„XöLšXV ôÙ€ V”b™¥¬Vãø úA.s­úÁj “eWjx¶I>¯ έ,ÙîTÓ-ÝîÔ–âT[‚S­­lÚzý`þ¡?U?¨r}ý`!Ž ù8*pŸ–ÿߦ¬ÅbÕç’¿êAŽjðÑ`º~°^É_õiøùçÐÖ[H\$ŽZH þ?ë1æ¦à\úÁŒ¹cŽÓõƒ-jÌ-jÌ&ý`‹5âŒ8n8œ[?¨¯wÒÄÂõNý`Nb:Nb¶~px³_1Ë CnIK#©ÅÅ>u•´¼ÓMÌGÇee¶¦˜8®Æ¤¢ÌŸ -;5íN$—V½qÔLR!zr]M"^SÂj^úxéƒ1틲ŸgRÆ«s¾ù¢]?FëpÁcM »à}Ô;· ^+£`‚ëv0Á{l&X TK›Úð ^ÜKÀyYþøš¢6 ©,ù£wŸb$í lû”¿O ¢² xFßiŒ(㘵kýÂloc:Š)²öÚ$u~£ M¥ÏÚ—@k÷¥ù¿ü›ÿ¹k´)ÛíñÛü‡ñnµ…í«Û›Ÿzò#ÊïS˜ǒÅh¹­ü<)…ƪóÁýÓÖù ¬¦H·eugþ•6œ·H[Ö'c#_¹&5µ ­%§¶Ã#,­t6y"üó¹=:‚ì‰àM…n¶"Ì¡ŽÁ'B<ëæƒÞãÞÔ¬ßÖ²yµ =Ý—i€»¡’­Ã±’òã5'^/¡⇜s®Bœ3Ή1)ƒ:j– P=è¸tÁu‹n¿SÂJ Öˆ$£”µÒ)¼uCx£,–¶lFòy"Ü«¥`aE‡2䱺oKyŒE«ÆI¥<ÆŸ3å±N,kWp.«m7¨i'P§Gm£¥“íVò˜ÓØî¤Q°äS@Uí6g"µ«ªw†Uý_öÞ.Ò«¼,³»Ãγ6N”mÆvÓÅ•TÚ‹-I°‹-EK 6ô†*ù•›¢ËÊDg&¡íhiïT×-µÔÅó# &°K²$K6bB²$n”Ÿ*1˜•dïyžï9ç=ï0°°»úóÞÛý|Øwæóž÷<ç<¾ç9Ïyw¿'_ûÕ+H˜‡a[F4»ŽÀÝñgÊÁ¸Ýd‚¼Æ²§®qZúGõ×,úk ýuZ϶Ëg ÁÒæü‰Z¨õsJ}ó):ÛO†¸¤ÕbìêÂ´Ž‚á¸•)+Ö…†ìü”Y%GòѪ²ÂÉÝCþ®’¶JâȨ9gbÈHÛtò ÌéA™Ã ¤õ ¤å üîY f5žݧ5>-ô_•øKyºK@úàñ*‘é~ËUÆá«@ÉÒÌ]©eMÛ-=ç|0*uÕPxòfK²äN¨!žà!ÅB§Dì eܹ™o2Çg”@«8a mL…§Q~V.·‘î (ÝWD;z×ÉÀg$?¡ä{*Œú¡Ë)n–SïiÂg0 Ìœ„~þ£Ré ¯u’oà$_·.ÉÙØØfc˹Ep슚µ¯.ó¼Jpä²R™ÊŒ*)³X0@ @;`RБf,÷xóÏe d—!R+Ú´¯˜@Öœ¯ÅïÃà÷UädÃïžÓ·*áP@¾‚U~elÇHVù™ ÚÄï¤Ï ü¾^tÂï¨ÈæDøÍ ›>e8É·H°UjEù¨O\Ë 7‘ƒ‡ÖjYM¤óNŠG²“Þê4;©DõŠÒ¡€i9Šñ2ª‚öH¤å`D ¥ß-};FázÝðäÄ1/¤ÊiËo€¥›¤æX'$÷ݸ7D–e¶Õ¬óäšà@pKÙ#*Ä/:å\’ʲ;͆‘f+]á€ÒlaÇÛ•f+ (ÍÆ}dâ¡Ùèi¶H³YøR!²Jødöâ*ø×S /B36¾× $=`›|Õ}„'_™ÈOåm/J?~;µC’T›‹¤æšÔÙS¢“LîdO29æàšöK~d- 0¥©JÐoô-¥ºGQÓ¤¯7±s,eðÒ±‘¢,RÜxTwJÀû€ Ó¤IDïh,"Ç0@2RdnF“[ÔœÝÆuÃÇPIÖêÔ‘¾±ÁTH:šÉí q(GçÐ,Elð*ÁÍ•+ö/ÓœTç*•®©€U*¦æÄæeVÍçšÖÎq«²Ïª÷»VdbɹÜÕ+*¬Wðú”õ²EÀ—È¥ª@öü8/`VZ%¥‰‡£j¡&`í/®Vª´† VU­…Uyº©]‡±ãÉgŸŽÀ‘ðàSóß?ýe^õ¾u§ÿïhúÄëÑ'ÕºÆ[c²uSjÑIÖkCëº^ÉÜ]£Uq ØlÇü»t|oí7²åXS›µc|óßrXùMPJ÷Oú§ÞèŸ:(ºÅSözÍ8˜¬ÓŠ…±þlζAŽ[2ƒµÜ&)×AÁO‡v’¶«Èmјl‰±mX«3zaf—ËŠñ,bèúDCÀJìÁ‹ƒ'»æ], ØÑÀýÖ•vá-‚&%JPš¸!]c.µÊHŒ‘FêQ1ݹ¢âq]€pìeåBŠÖÑcB;öêÈ™Ïw®YÓõ›=jÖu=”=Šuɬý/Š­?8O‡\ʯY}:t)¶ä¬³°NˆJ(ÏqEæʱ&*>B:“~Á??¼ •oÔ3A/ÒÝi“Öž˜lÄà1y¨ë¨K.³xÈÕ»œùåWÈ )Ò0¹¡£ëÃ<@HÁ¶ù:¡™{D¥­&ÿ·ÿÛ þoSú¡] U#´Q sÆ„¯Ä§bó6ÒhÍúR˜UËÊ,Wס—ùÈ /¯Y)ËŸ£Â/ž‚TK? öί8õ±R/kœ[]ŸÊ™ËSN؃’þãŽ'ßàúÓRï)1ñóÉ78ÄÇ8!†¶žÂ>~ùX¶Ý)cvŸÐ¥O¨;ŸÐB¾¡ŸËÔ ªS¥á:tôe.µzç/?+ã7å‚+¯ƒdBMVGu¢-½ðrÎ é„å­Ú¡d¥[0tùýÊ«üŽƒ®…Bs8©ûç|zn7 HÊØÁõ HÜ„ =0TIAz/$5’Æf°![mjûNøfB™ÔšQ¥åÁbõQæñ”Ú]nünLf<—‚ÚÜ…B¶&É 7ÆÐ`P›TÂõpsöØn­Ÿ·kóÓó³sþG«:¿Cò¡ÅbÁRkõû[¦ÓóÍYÉ›59!sñ‡åfÍË|–©™S• áJšCïâ5‰Ëþ»Më)&m§ŒI˺³&\¦6—ßÍ{9éH;:É®.\-®µêð¬:ñ¥!ý·oàÔ‰½‚øùÙ‹MÞ¨&oàäýß¿$ò†J˜¼”bï>ij6$„åFJȉ\¬˜Ò é×U( é׌æS“wÓØÃ“Éàpšž„”É>x ½é_\âVF@éÎó/Ò9Ùȯ»û‘l|ú Ž¡¡¥š» £l¼Œ%* ÓŒÓ½ÊŠ Í¸|žn\¤4ãÔ°®c»0ðuQ‰Ækð©D”˜Å®eÊ-®’k{àÉQ ‡3ÓŠË#X­´âÿë·y8Gx,È¡J‡,*èF[öã6yd4Ú–nØ`U´Ÿš,t‘ Yl ‡(D_p &^Ct(/Ôa”c¾B¾Ò²™†¬$ê|(¤<¶5DQíâ/|o7KÄfmM±<Œ±2ýÂLñhZ•Ë´=ü*^AåwRØ}¯C}9ª³úoÿ$ ¦=‹H2¶ü—¶Õ6âÈDþúÙ[åXøÒ4Z¶éì­þÏß*´ôÚ ®>«²ù½ îcçSë¡ç)†ûåÉ7‹O]ñTé?ö=&Œ&W¼Q†@z2ެ ‰œo"KëpW(Ž›½;€ö2¾‰áf Eüw*»óeÁwÄd!a­t tcߨMðly·6œ›v²k,‡·Yìîý'}ØŸÈëùïÿ/I ÅÍ*ÊUÀÙ!8Ò©8²Í–ë›s|S&ñW¡TleúÏ~‹Gh"à8ÿD㪩;ÐÔYÝÔi«©³^ÝTNUpŽZºáÁßäNþJtóáP¥ˆ ùºASüÄë™â©_?ÝðûFË.X7,…ue<¯ê×Я_A¿VúõÙ,2[ë Ž‡“{Ì}UwKÎ|^ƒ¹þ¬¶tSsÊwI|¸ã¨±÷›ðaé.µà½Ë¡¼wÉd1‡Æ8YLX¿¶x—9ë'Ó¯æRóèüÓì‰3»1›˜–d#yôѬžß%q‹óghƒÎÂsŽüäªÌêcñÎÿ³ƒóGÄPBÏ/çCÒÆürƒVþ•´Íñƒ¦ÎTJÊY#̘´3W2€£(ùŠxmLùT¾“o·|*Ø£Ób™‰ÐÍi gÑ“¹RHä•BÊ„YÍQ³Š£þ 3õÍQÊzZå¡6¯]±ÜðÐ¥×*Ú†ð33Bo’ÃÓOøÌ£:Þå'“yxe |Û¿d°Ë"¥,Âi §"ïù å×{ǦbžU,u'yqÍŒš4~Èr¹d0‚ÃÈÊõ¿hkrÁ2¸`% »fY¹Vô\Êad [ÓJ¯ž#Ÿ/†GôÜ£kCLh( ¾N#ØÜƒ—xóY¶Yœò/á‡ù%N> äKÃß9^,_sZ¾å‡aÊ‚ùÜGEùìŸG“&3÷z `¯—ÅkFÎ@5¡|»"(ÎÏžåC/6[FË÷«–‡UË÷ë–o:½$ÍSB Š›„Yú•SB>‰Àñ¬U™£sI€0?\9Ñø œø'š;ô{×ú‹†““ ÈËD†[ù‚;hÍÄèœÒ|«sA÷–˜S†Î)WS¦:§\wN)†µZgÓ ‘à™ÖP¦ =)-¥ÿ>_ ëe§0oÄûŠòÕƒEri1i¬#g¾‰£ySJ¥±c]nâÝ8Ȱu¹Ü›ƒý™j·o"Mª£ˆ«°Â…ýŠOÍaço Mª£1«ñíÅÑgÓeldl­Ax@%‡øæ«¶¼}´"Ÿë¯Ì¼øŽÃ\¯BŸW€Õªó3·Òï[Ý>Z¥†v3ÛG«ôð˦Tç+Po PεÖ6¿´„ÕægÛ?Z6©kÖç¯Ý?Z—ïØòþQ~f³ûGë4ùu ¿^“_o'kûG@wcþúûG›@}¨oÎ϶´IÑ¿…ý£MŠþÍìmÒô7þfMsýßaÏÞlî=}³¹5sîfsÿh%g\bE«?S™uÿè@¸ö“Ù÷Û÷]:x`Ýý£uHÒbîÅ#Y÷Ö£ô¦ö6`á¼ çÜú–?8¿ý£-ЭùÙö¶¡÷[À6íJH nã!|×fí Ý?ʵ1¢kƒk6 ¿pþ…îí)ùëí€ÿ;ÀÿÝ&ÿKɰM£tJ ^¤ý£Mx„wk»ó/tÿh„÷ägÛ¿ÑqÝ«¬±Õ¤"8©¾HûG“šà$îÕ÷šÛ÷VÜoî­¼ßÜ?Zu¿i.«Q’°™ËåŠí ÄŒý£Kjÿ¨Îǃã§% #è”Ó„œzÂéÔ´C'QŽtl,Ç$D:êÖˆŽÜ1u\”DpæZ7!¸A·\/K =»h‚š°%‚tÞUaÏzf »úC*3IúN7F½\ëÚò|•žîEžk•éñ*eY¸9¶ùÓ™p¸ÈÚ„z ƒ1EÏ—SôÇ—1E·dÉöEJ×È…‚3'o§ãŽ$8È—)ç„{sæ_k€½Ú {u[{õ[{ {µ™`ï³å[{}PòýùÙv£ @É÷AA ®{çö¶öô8˦ j\‹v6ò†@ѰTy#6•7•7•7ªTžÆx#çñF¶‚ñF4Õ# zTS=jRmÅnéƒö Iû6Ú'Aû8hŸR´k|7yønr+ønRÓ> Ú§4íS#®¢¦mønɆï–møn%ï¬ü ¯¾uü ëà»såiZ‹ï6ÈÒ¼|×"C(%¾£ÖÇËÎßMCôg²â»Yôþ4˜åt¾›U–iö¢â»YmEf¥ÅÓVÿôã»9’^ß-‚÷çÀûKYðÝ¢‚;‹ß-jÂAø’&|é‚ñÝ2_ÉŠïVAô2ˆvØñݪ"xõ"ã»UMð*¦7ƒ`ú´¾«±á»Z¾«³á»z”¬ÉÄwÁ7³¤zc@¶ì°TµØÏ¹sþ¹—Ôú-%r~7àG°ª¼öYC)±]ï™ÙŒ²·¯*«¹gOº¦Q0Çm£æ¤ÃrÝ0/u~=$¨¥äòœQ U|T§€© јåožªâ˜W›¤*œöOñ9”ü>9:@Î[`/øÂ=ø,âÐÏ–×·€G= –¾‹—Ów^ã:Œy˜ñ¡ŽF̈ÿ<¡CEwòó™Ï?z³½–¬ñƒ¢XÿªCŒ ÄŸE}oæ <çÎWåý™’ûѦ­ù2°ûuóØ 7ÛæKë/½óÁËÏ-ð0ºH¸¬äVÙGåL¤@\°@U*àÎ/.õ†T‘âĩ(¡õÏ¢’ªcÛ|—ƒâ#Ï/W‡w!hߟV§Ö7­#g¡KÅÚvüɹv åX ;î¿ ;ïwl5aGdV­¬½RR²å„aðÒ~èæÛiC„ö¯ªþ-†Á!¥Ú~¹;J [ÎÝQ¢˜p3¹;J´$Éæ”jÃRZpù}Ë@UyÁúù}+ }ePm•ýFþŽ EËòwð3›ÍßÁ…±¥Í©”Z3Ÿ²åïh¼ÁL£Ñtƒ™¿£3ÍFÌ4-èäuòw¬Þ|¾ù;°ê›ÌßáiågWå¹M‘+Î/G¬º >ª)`>­ÿ×*s#Y±¦@Ú–^Œü5š‘kÀȵš‘k .8Gh®/ȶÿ¯4׿FE³d¿Esƒ¢ù"åïhÐ7€âFMqc#kþŽÖOš*²í“fþŽvÌ”Z3·å_‘5Ç©üÚ´mQ/¦5±Ì´2É›)™P×V2xœ=Ï >µ‡9s/ãMž½V©yMÜ‚¶îÜT2+>=™GSÁæ’y4ƒµZÀ…ë&óhQÖ¬J+ôp[ÃÌÛ ]Gw¹"þ@úV¾è×!¥G[=¥7ä´Õê…•Ì£X³~qDþ"£¿ Bb! ‰ze}“¶´VtèüJ@Ö´ë®iÙè±`çñ8ùémóx«À_î«G@H{R´”‚^ר7Ò¸žÁpu¨qm×ãÚ j" yvª"¥nÚJ×Í)b!ˆìûâ¶a_œÚçY(çõ[ÝÒsÀû¦¸ˆ¤ˆ¤«°÷²] ’$«T ’ì®n[wųwWîüQêxšÄUotëëAÍIÕa=¨2©D ©D Û¨]ó÷ú )ÍrÙT…Ú(—,A]]$?êe=ÖË2óÃhÒOúvYómB̯ÃÑÓnÞ1sƒ…˜¥cit bb^“»[ûZå‚ïÿ©¥á>–‘»¾Z­‹° ÕeÀléÀ¯‡iiÌ®Ìn~¢FÛ`örñvÄ ‘ŒV‡ÚðÍgí^t`ª [&–ð‹½ú¾‡:?ƒ}“$û‡¾>ÇîΘz=y>4sµrõì‘71)<òÀׇµ‘–éÓBз_Ï)¿1‚Ä×pŠgàë~Ð4°¾‡÷C]™øš­œ½\Ñ’Õ¡ç¥E¦o~PáëÍøæ5¾–ÍÒøz(_oÉ+? ªF Ö¿,‡Œ8²Ä_Œ8¶ìŸUôoÆ??ªéýãšþñ ú•ÞÛjúç}­¦ë;Ðjúçƒ(IØüó~Ý:þùŽOžŸ¾ó“Ž-øç#(½)ÿ|7PgP'·~1t~þù ˆÄdA6ÿüzl3]`÷ÏOñ’“O郋⟟ÒÂ?áŸÖÂ?]p¡þù2[°žþ4øü?gò¿”ÜÓ +œVjà"ùçOkÂOƒð9Mø\ÆÔdë„§AøbA¶ùçˆNƒèe5“¢º¤^R_$ÿü’&x /k‚—M‚íþùf›¾ÅæŸoµùçÛP²9Ó?ßöš¬ù»˜‘¿{¥`ÃüÝ++Ðybä(T8’Cßäð‡ÿåï¦öfæï^-0i@4°¥§Ð¡cÍ#ao!ß\77ÿÎÙÒ¬N)ä*G»*(”6׃ÿ¿û{þî`áæòw ²åïæŸxQ Ð¡ ¹Û‹•…T‘âB‰ ‚(ñßù»U-åïn¿(Ë[_è„>nÏ\¨ n}9"¿¿0[þ0˜¢T±µ 4ÈVÖÏmj  P/Ù”ÒBe¼J /8wè*/Ì1UQˆ5Xe¡ZÌÓþEÇVüÿô̦ýÿZq˦Tro³ÿ¿0»ÿ¿Ãæÿï´ùÿ#ðÿw¬ñÿ®ãÿ/j=_ÿhKþÿbLŠ0U€ÿ?ÿ<ýÿRfõÿÂÿ†¯UVPùÿ %þª±ñçEñÿk&®×j&®-¼pÿ?h®/ÌêÿÍu ¹QѬüÿŠæEóÅòÿkŠ@q£¦¸±0»ÿ?nóÿ÷ØüÿIÌÄâküÿùÿ¿û<òw¿õ†u\þ…›tùƒ›ZÀxë»üS5küÑ …Û¦ I+[›ðm ˆÊWüZ8û 3œý…ÒøµZôgäï.ÖÜ^\˜™¿;¨VÈBZöü݌ƙcj~`äïö¨.òYX}£üÝ9üÝßûXöüÝí…2÷Ž-æï·^`þîýˆÈÞZþî<ô+Èß] nÍÀc#;¶œ¿»ÃÚY˜Ík6íët+1Òù»# m!7?³ùüÝ-ÌØ–nͮ݅¿;º{ ³åïN‚î8èîUtëüÝIE÷òw'ÝçÊßÔ'Aq¯¦¸·ð‚òw§ þ¶’¿»¯Påï>\¸~þî~ôW ý5PèÈÈß=ˆ÷Aƒ :²äïTê{ýüÝýª 7™¿›«Ü87W¹‰ü݃zP1(CzP† 3òw÷k ݺ4(\'w/ˆÌß‘ù»ªÈ4Ö}(IØd¿Í»NþîÈýç‘¿»û~ ìfówÇQþ—™¿»“ÐHæ$ôxÎùåï·ŽfËß=Š‘ÇŽ«Ù˜Ìß=Êó*rÎ*Ep‘òwj ; ‘צ}ܲ¿{$MfÅïS`î (Çi…ßeþî)…ß§”¬^¤üÝSšì)=­ÉžÎÀï['xUn>÷éB•¿{¶0[þî9tÒ :)]hZŽE¼ì4xkIY¿{Q1Ìzù»©rQŽ.6™¿{Q©ÅóÊß½¨5Û"èZÒšm©0#÷œÖls´Ölé ówwÃ7 ówÇáù»{àEù»“(IØ&_I÷/3÷rá†ù»—%?2®@‚V•RXA¿­²R8€~¥ù»W íù»Wl Ðá9¿ÜüÝøbßëvzH·WŠÏ¢h.Õ¸ÔàR‹K.>$œáä*)dÉBJ—8Ò]Ç‘¢;n&ç& ËÔ~|z?>³‡ŸÝ>Æe—4.‹¸,áÒo†µà ƒCj›¢ÜxØŽK.¸Dp©§®(FW4ùE´>4n¤Ï¬ÿ‡ÂM ³—\ZqiÃ¥—\:q‰àRº›k/ÛÍ-,ßÍ-¬ØÍ¯¯Ä¥ —j\jp©Å¥¢¶žã^é’ WÑe(\]‹ñÀ¥—:\êqiÀ¥Q\îcÛ;nBÍtËåqºÄ­”jÅ¥ —v\:péÄ¥ª¬%Äd´†˜Œ6q;.¸tâÁEª¹ÈèFâ £U'qéÅ%…Ëa\ú$5×óã×óãM×óãÍ×cDpiÅ¥ —v\:p©ÃÔc 0èà&\šqiÁ¥—6\â ½´'A{¯T`¸Æ¥—~\¤Žëí }´°a\FpÅe— 9 =Ú»A{„õà’Ä¥—.‡eO€öÐÞ Ú# ¬[Ò‡K.I\zqíC }´€°Q\Æ¥%Ãe—)ù ´OöiÐ>Âfq9Ë.i\ÅÅg^ç ¥ÞnAŠ‹f!»Ñ·dø«üí²ÏÒ·TøŸø[^Jþ3JFP²%oCɯ¹XûReÂê Íûuú$`È]Ûμßi¢-ýÀסJɼÏßÀÞ#~ô*”èK/¿¸Ýaí‘yCbwôžx„"çG=ỚdÝ@‚ôÔ½i˜Q#”tÌÍküY³JúJ‹®>7ƒÜZúžÏñ䊤»w7AWÅçá4‚âŠÄåž ôø,fB;ž‹¼Ï ÑgÕòÈØ«¯{éñèÃû~. k™Ö2‰!()1ÀMÒ$ïÅ÷=¯tÊëQ¸£Ø‡Â$11&A>qù[øË„h„…HqDÀï!"`¿­ñ:>Cô;µZ¢Ì -‘@âvÊ<˜~û§ö¸–ƒ;*HµH~Òz#¹¤,|Ö˜€q€.U€ 8>0‡^pÕ*EÔmðroJ0NE±Ð÷ô‰÷9 6ûчnKÿŧr ©¦'}å÷¶èdlßÉè£]Ç}Â÷ÓƒgTÀï™}‰Ç”sÛ“þ£91Räèp;Œz©JÁZ¥¢\úûÓ™5#÷mDé„ð ›[Atéò|ú€Nwù¤_>ýÒ÷·s×FvMô¤óe™zŸ«óFCp½ðôvâ9Apc„„'A¦p™Æìc†.Ï_}ØùJtžZøèKODç÷½L“ÒªV+zÝÖ(ׄ‹h%b§\‰ÈXè%±Û¯|…ø¥ÿÒ6’Ë#8š ~ÒÖ¸=ŽÛäØÇ Ü¡ˆ ÜéȩŅ»Ï]üí§eårO_‰Oæòš‚Eý½€ÕðTÒ-YÁ+Á%n÷â¶^XÈèJÄÝé\¾[ùæÜ’ðÝ;•g+ ÅâFb?¯ ´‰¶ÅÔ.¿•RG¸"û6Ñl®‹2p¹`[ñ³/Ý"~V®ïû™è2ut¦º2z|ììë^zbß EÏÑíp˜.?}ïMgÝΗ¯}gôû(ð Z"¡_„uŸKÉ!æ /P*ì£ÙAŠÏßzÂyBÜò`Â@ÖqhÔ}.Œ½—êcCVËè 2èÙ8(}î§×FŸ|‡æO'PÈÔ¡ô~rÈU#¸DÌ·„…tž$¢€ùP²:ý~ýêˆW Vg¿–>“o}&—‡ñt®i?é[×g[ˆVéóŠ«0òç—Ým¹@cºï±×ÂÎôV^=‹ý)ÁÎõáv-Ÿï”3“sJNû2Ï岉fκ"ׂ%dðûpö›~Ô±‹x`)W®¦ðwÂ8tÇÂ86ÙP똙ô¥6IT÷Pxø—- -d™³–GÇ~슾Œœ‘4k‰…vBnÂã{X|t©ýâ$!ñW,þHø÷‹¿ñW*þÊÒµÿÁý´œË¯f¬öäÏÓ† ^*{…ÜÛ{5}”6¦KU“}Ìíñpöôô/¾¥+¥¨:j­‚É ½$W‹U0~Áƒù•µ+`ÿaUÄ,ƽÏPŽ>ñÏGY¸˜1.Úl€·T<Ìh®sr:.â+P#ÿb†á€¹ži²´–P.M|ó4.s¸¤›Xƨ$mÓ½ù¨ÐC9Œ×ãaŽ£²^'¦8ý&MˆÆÉßrnBwñ·¼;€ìÝX@–`„–†rÆx8‚QB |’rQ 8'@YñjX÷x#QÀƒˆB`CaÒ—ø‘žcÄtzGúõ?UåJȳ8‚§LMЊ+´ZÞh•S\Áõ”Aÿ}õ°BUBvk «ißÝKävÈyvƒ[γoùϳëm300®^¤Áý2 Ñëe9vòœzå»"Wû=Ha};.ìo?©ÜH'ÙUÅÎ÷;ßiÿ}ì~¬ØÃƒ^ŽWZ[¤ú¦¼ö¹>7ªŽÇAÒìµh¦ž €Ø«^ö„¸ôjXt l`zæ'ûÒòʽrW54D‘—'MÕ˜4Ñ7ž4ñfö°1Ñ¢ƒYOáäÖO<ÖYît< zßpö,‰ =Ás¤ÿ¼ëj”f/†³GMéBHXÊŽDš¶{­Ù4;|älzÁÅÜ9›{™Å÷{ål:¬ú¥;–Ï„ÂA Ñã6zW¯Wêvò-$Ôi‹Î“¼ðNlÖ}u½b³þëëáCû\v—G5ä­Ä‹üŒèIö>éÆT`¦ ¿R¼~·R¯ÌÍŠJžЀi{©×aPÑ.÷JµÄßùxT>Ÿù–’ãwD’uðæUx­Ñª¤¢*úã[á5,P•<îÖ+µYÂuªù±øä ¦±¸c²åÇ>qj‰^2åœQŽ–ï~âTqˆ6e>ñô\YOa!>UÚ-Ÿ`ìGnþ¦j`—Þ’s¬äœz:å9}ÅÙ³$²Õ^)²7À5Vek ³@¹ä$bçÍô«|zX™­‹©ïUZ½lºcþ]¯ÊýŠ]+Ta³Gi/ZcÁü«8®Zr#ˆ›^a¶ÉŒžéT#è^åKòf÷%]Ž µ&÷×ûëéuŠûëu·H_’ôÒ'9*H½˜%ã$³Z/ü ú¹FTݤªn‘ôü›¼º b)éYŠ‘Ç*üžbÔa µ™ž8á?rŠÇºÆ«i‡%nÂȺþ†ÂM¼Zú™ë½Jg×+ÈÔÙ(EîÚˆÅz7# µ]q]½C^E<ªæ±Gq ¤¸§æÍ´®˜À% Îu¬¯©a­<•®^Îöƒd=ËÁ‚ £ÅËf¡ìÒæÅ›½ÖØ–åòƒmæØv ƒ:Õt¨±íÔ·ã}Ô1§Û¨üÛÛ¸TĬ<ŽÊ{TåqUy®¼[+ ºOæ-&—­D¤ ȼ‘ Š~Ñ»Mœcì¯ ãøô(¿â¦Ç‚B›²ù!õzÝ¢ôÿÕKÿ_:·Ùã0KÇ"Áà%ÜØfQ$Á^Gšý¡gSN&= /M˜& L“¦ù"0ÍíÀ4_âo»ïú;/ûsJÝ c$¥ Ƽ,•¿l)ÿnL©ìL$»:Ìp3Òox«ÛãÞ¬bì›?CnzÿT¯9() Êa¯µ$¥Æå°Í ;æ²ìÁK>Š™qT|BYðImžÆ½Ú_Ï¿l´xD›@"á)üOæýß0Áœ2Íû úrV™wþN½9«íU¡—³”?mtåœÑ•AX¦ÓfW¦Ñ•‹JÁÐ÷Øçþä¼_r´²r|â Iãõ3‹7æ§:Å[œO= Ö¾†'v*fÅ”5>!ÑÃIç“)¤U‚ˆ“³qˆ§Sá%/ÏkèB3§ÝÛΞeƒ@ѽBëèÑL2¤ÈÉ ˆ–øxÔWHî›8ÓÀ¦(S”Ö<2§ÈžÕXdXdç|ìU½ÿEuý;ä !œQÈI#žŒ˜ÐÃ3®†nDÛEdgõ¿ûcͰm2—3 yMéÐ ðJðtË*ƒ§~Ëà+ÿLj‰‹Vô½û})M_Q=š¾Eß_½ÌôÅ5}ÝŠ¾NM_§¢ïùë|6 øÝ|H›Paàëfð®°Õ –')_`¬š‚AÇ!ëv»Cåow¨SžíªmrMÏV¼Û­L*˜­°Pø!^ýœ•lû£|H¾à cð«¥æ1{'ECyµÞ‹ ÉåèÏ ˜U–Ã0‹ö––>s`ÚAØ:“¡ž?àÝa™¿¯ÄÄÇÝ¿Ï݈ÿ×-ö€ÿÈ‹Ñ%Á6+`ôyjúR‡ƒ,Û.E¢"á³èáñänäñô¨’_z•KrO[8NÚ¿fèJ*‘š'( ~•‰Ú7z6Hã˚͒Qí¼Ó€>í;õ÷ÂÃ=<Á/’;oþ¹ro“ZÊxÛHæ:ʼn®cÛÝ@ñ)^ú€#ŒÖþ˜"âkmÖšÇÂ=ÙÖéGœÏDŸW³žgo= 6àÒ„K .m¸´ãÒ‰K7.=¸ôâr—~\®c—55, §ý;üÁÔï}èü–<2›Ez?ÜÀ ¼*Y¹i®tñßÃ{Ú(ö¿OU¥_ó¢Ï 1íÖ3Žœ3·’rhOÉšÇJ˜¨v-=D~UŠ]ŠÉðGó,Z î¼Ë¥pw¶‚Ý}–Î î´Ðf¹x )T×¼›ñÇí0åžÞ•vË ¡c¯ÌSñy¬]è;ûxøÃC]GÝ »ÒMnI’[¢_Qs1 ås`‚ß·-|CÚ‡ŠŒšXä|€®ôb¸=éüÏÉû*< W_=ï7fÉy¶Yr^vÑ?7ÖæX¤9°ëU„†…¾óT¶^'¦c½›Š“6ã_²õþDLÆ–‰yŽgîô']ÈR}œŠàocòåºrîn6®¸rLÐùã?¶lHV¬!ÏB”•†aÓ=И§í± ”mZ 6Q6­)ÏæI ÌßÉ¢5ë a3MrM˜Iäf¶äÙW1”5탹o1ßÜŠ7·©7·bé;Û:þ`ÄAÙó þDe8l/‚W3•…é qᎡc¶8õ"˜oûÂßZó«VM¤v͇7;w  ¬ìùJ˜ßæV‹˜Ïm¿„yæ°Üîƒ4qhÖ€Ò¦üÄi@‹~4N¯&r²1”ÇyvZÀ‰m™œX§g±•˜Eò´ŠP2lS‹#yÙ‡u;¹Ôˆ9£Žq½ñIŸnæ¦çٜŠ–ÆD´ñÊ)J¿±ÃZR¤Ú«!Òµ™"¹¬KJµ°‘\ß#Ùð¬;ô{×ú‹sKW²¼LdL••ižˆwPè‡1¨“Æ NlÇ¢ 9¨SÔi5¨SjP§mYLå¤çž7úïóº^vÞ²}þåÊÀúöîê!Œ#…F_9Ö‘3ïÅd›×8I5<½G—“Àïò$¾%yÓ‰rÑÎ v@ŒÉ0!­‚ß3ŸšÄî¤)D'ËHú<@ÛtlòåòµrÛC„·=PÈ¢çG ÔE¸±¶@Þÿõm/ú÷ÄД“÷ÈÈTëü93¹ß X{é2S­ŸF¿Ï€Ýæ”y +¯üiÅǦb0u+OQLnÖ!Þ=­†Wv/ïÛ1õãÓ¡ü¦ÓšdSæô¼5GAq÷Ò;¸óåQPˆÌó`@ÑbÒÖ}Ça¦­[¤Á—ËŠ/9ÔšútIÙõˆjo¦¨¶ëg4D=CfvÖ`*3#3ƒL0¿¤©^ÕËšêe;Õ¹–ýeF!ây¿Œ$ž?g¿âW%ñÃ6⻸¶ivÉùyÁéDŠc—$¿‰‡º3Ï¥n)òÑõ çׇ”ò.[~}º!Éwè=­ìiõìRä{v­É¯ï¦¨ˆþÿ£‘á.¼gôMG½Ò7´Š„%éaî­lûâx–:œÅ•{,#ÉŒ/³:¶ï»´w=ßÒÓŸTûߪ°¹Æöˆ±Æjd5JwZ§e±t{¦¬ÐÿèjÍz©õ‹ßòB4¹ÑöÔž¸•=µ§ùBäÖÝŒó¯è}/R3Ñþb~…”Û©à·€Ê~Ç?@Z‰¨öç_m¨%äÁäß‹¢^½Ã™`pךó¯0\¶ —¸•=Ã¥<°'´k½ó¯ŠÁýEHÌÞå°Î¿’‚K%8Ì¥X%îžÀ u*s†:Èb S{ÊB÷¾LíY¬ /áaMxxךԞ[$|?/Ù•íü…R½D—íRg@TKÁ¥Šàæ.,ö³è¾E°¡4ÁÍÆ_¥šàR\¦ .3 ¶ŸµÔ„]Æ{¸éËÞ„`¬ NGÉU”¤ìç_ zÃÉ1Ϩó¯Bj"ÁØ‚—4;A1°ERò—ïâÊéB›sCÕœõk ÓÆ¡lf1 ^ŽIptÔ­±c·c*Lb73Wa·A· I ÜX4AAQöÞ ƒâ‡Ö³R¬ˆýËåMÿÕ-.Œú´65ÓyÒgÜü"ûŒ§ôønÞÊòÀheq‚ë©Ïxžt‚Ï.³|TAx3,Gi·[*˜9©P%«#‚¾«[‹ïðHV|W¿|×eS+ñµÞ×~ø® ¢ßžßu ÷ÛÀ,ø®CỎ‹Šï:´Õï€ÕïÔV¿ó‚ñ]¤t¯‹ïâàýx¿' ¾‹+¸¿Èø.® ƒðMxÏã»$ïÍŠïR : ¢gà»”"8u‘ñ]JœÁöc‹ÖÁwŽL|ç¹ÁÄwÞL|çCIÇ ø.ùu–tÀBo È–U‚áœüÌÎùç^²Ö·9¼Ð‰†yš”T€ƒy[&)±§>$îN¸dÜOR{YߨphYàp<º(ˆÛVĤ£’ô.¿ ê&°ñ«èÑ ñŸjZV+7_EM+JÈlÓ5áx´r׿©*ŽIpµIªÂé;Þé6Rú¦àmèÅ¥—å¬0âo‚Õ³~i Ø: €aÀ™aàkÅy˜ñ!­ú™„™«~@+;ùy.3Äe°ðtèÍöZÌž5kõß©:dROuü,ê{3²AÖ¸ŸÉ¯:ËçKIjìë#z‘c@-rüÖptÈ8p4pƒ":nÐåìŽ!L†©ãåÙMÈD"J|b8Z„™…‘E<2‰IC$½ß¶‘áÔW$`àôF¤ü8Ý‘<ôˆ?gz4 ^šn¾tÐþEÕ¿³ÁipÈiË~Ê\P¤9fÕ@Ö •ÓB™IÉ5pöh‡jܬbÂdAçlL&„ RbVK’lÎimXNï2Î…ÖH+ŒÊùdä<‰?g‚¥9P•–`iÔaÅG*È´fšƒj[²èÛ2-‹ŠfäÙ¤…™OÕ˜Sm[TøyFy1?OøyQó¶lÎ’ÆÏK»ÖøGùüÑéëÌ´&3ˆ­–y„f1ÓœÆLÓòˆÖ"_ÏùüÑ"xD'¶Vò]£wÜXçR>Åàö|*“„ÊeWÙÎåL*èª:ˆt ü <·Éórö[´m€–1`+YñÑ*tÔ2øß¡N÷–¬¸ªðѪGeÆ05Ý`œ?ÊÌ|26¥ÉÌ/Ï]ÕŒ¼ Fvø#;ükÏÝ"Í7âõg;¿È‡ƒ <ÈqP4KöÃA n#£û0áb&&œ´cBfù$£uæ=¦Ä„¨Oe°?4ÅöóG÷˜*² ·&e2Ì”1S²ŽÀùë”WY¥±éüÑ?RçjÓ–ji§F@ÖÁ=Pƒàûº÷eH&kßš®[-:ô,ÙF!#¦‚4üH>ªê’N åf?©šrQŨɳž½|©©yMÜ‚¶î´^5R R Fú¯K2ÎÁëµFôÛ#íÔ Fv÷$d­¬2B£.šÜe?Œ4¤8ŒËãp?uØo‹O/Ʊ!auB  }+_„Œ"8®'³g”àÉ#Iù÷!üžy$©©µMÇ+àIÊ%†Àäö#IÃ~û‘¤Ü4’Ób«2Ѹ¶Zã»$úûóý )$6j!1J údümNã== Gî|†kŠÛb= ¡è`DöémóŸÿ¿”Z0>žN…÷CItyÊcÛ;òäéµu(äyÃU¦ÆµTk9ƵBAQ®ŠT(uSjTªeNò±©u$‚às}ögžë³ çú¨#}< å¼~©[zX‡úìWùu+´~ªðË®½ ñ¶ Ë­ÉšTƒ$»«ÒÖ]UÙ»+wþ(u<ͪToTê«FÍ5ªÃªQe%•Fíš¿¥®2y$ÒA?ûuYT…:è§Æ/£ëº(ÊD½¬Úz™y¾mgžAàIož5ß&Äü:lÝp3vpC!féX ­AÌ! fru+@±´ÇôÌ]W¯3 ~WM=v9òÞ‰ÒFîAñРÌx‹‡R0[:ð<“”0{ø‰mƒÙmI¯Š_g<õÜà×h—Ù ]‹¬óg;I¶v±Cßà×ûcØ7É;½Ôi Y'ïju‰ñuZµ©^ˆ´‡«g¼‰Iᑾ®×FZ6¦A Aƒ ¾žT~c‰¯áÏÀ× ©É¿>¾n‡7B]¶ø |ÍŽV>‚ZÑ’Õ¡ç¥E¦ožŸÙ¬ož 3Ëæ´è£gZükV$6ï•oUm™ô+ýÛÛ éðþIíŸoW‡lÁ?ß®èߌ¾]Óßú;4ýô+ÿü´Í??cóÏÏÚüó§Qr:Ó?ÿÌ߬ãŸo9Oÿ|ë–üóm[ðÏ·u¶þù–žóóÏwB$"þlþùniAÀ6qe’¤¾›‡”Ž×§³\ ÿ|·þn\ Ü¡þù’ô¯çŸïÿ÷€ÿS&ÿKÉíUX¡W©‹äŸïÕ„÷‚ð”&<•15Ù:á‡AxŸ?Ûü³DÑj.&Eµ_ܯ¾Hþù~Mp?ИÛýó!›¾ØæŸÛüóûQ2”éŸ_¾Ý«<˜füÅUü… Aô§1°‘ñµLžý+¾vb4¬€Ò$gXœa­Ñ¸&:ÏšQÊ Îå;\Ât#cÊ5cÉÍšúÎ=…èAŒzïncÇÌèÙKÀkÀkû|)e0„ý²Ñ€„À–#~Ëß:ÊÜB>ußü™Öþg”Ò®õqðÚ„_Ň'q‹øfB¿hTqܹBØ7áíÚÐK<éߨKœ3ÿi‡5·Ü¢“ؽàïQèjR)Ñsû‡'ýÒ?Ü­üÓÜ]?sª“-¶Ï|‡Œ/¶fó›˜b¨©•.jk„u@ +mùáÞ RŒü”Ÿòk™#a±–ÏIéÃRái¨™ºÌ\1Åç'ŽmÇù‰Ój0§ôübbsZ‰Í¬*rZÍm¦PbF5ÓðïØÏ'âA¾°¥×Â_ç»vÿ€g!}1‹ÿÿƒ[ñÿwì¹þÿNy¼ÁüÿøÃ:2úü–ýÿsÐ iÿþÿE°íØbɲφÿQ)’-øÿçmÆÿ¿¨ —lÎ’6\Kkç'›÷ÿ/ƒª• æ'«0,Ë3G ›ÿUѲÿÿªÂç›ñÿ¯j-›Cí>§OÙüÿ%°ÓÒ _ ;-ýÿeàÁØiÃÿÿùuüÿKFÝÖüÿˈƒÛ¤ÿ“î%Lºáÿ¿íüüÿž˜7 ùð…ã ´@Àîÿ÷$þâÕÿÙŽsàÅÈôéýÿAÐ\Èæÿæ h.V4Kö )šCŠæ‹äÿiŠC ¸XS\ÈîÿŸÃôQªÈ4¦Òÿ¿ˆ‰&±ûÿ#ûÿµ=Ûp”<Ù8Ü‹§×,Îå§nÁûÿÊyzÿ©ÑY}מ7Êv>3oyÿíÞí7nÊåçLv—8 ]þ•–Ë_::¯œ¸%g¾ªÈðr®î<‹DÑ4œéY^Ã^Ö ›w´¦˜–ªcš÷k&) —¤Q/×Òw®‚?þ”¯@ÝWe$mw.µ ¿½Þ„'yS`aõ$`èR5Ɔï)*žã=±eéû¯ƒïT¸56ßÿim±Nû¥[¹¾ÿ)½f-è%=M~Å1j~Pµ¬çã6ؾ AØfþÓÛ>)¾\ üÇà6,Ó`¨ Áàâ^'psæÏmåýZ:[MÞF¡S‚Ú3rBâ¡ ðÐ8¦‹HÿÕÉv ]ã*ÒY’í>èEgŒ+·Û¨ávÍæv«@ÿW²ÃV£*À›ÕJö)g[•bJ Û4E\;ÛF•1¯Rì))ŸÈ4æý†1Ç ¨K«pzµ6æÕ5Î6'yÄ– ã˜t/C.AZµÄA¯ÕíÎEÉ jÝ{¬‰5Ó9A½õÀKG'ö-‘;1ëðyÉ·Äáóê6|^íŸöZësæøjÏWpÏW $¶4Jë¤`Vº¢#W¯ÄF¨ŽûW = ³3Š„ µ†Ù¡NŽ´¬§Ç/…ñ³ÎáÆøEƒ–uZñÔÁ:ÕkëT¿Ö:9©måOý@ã€Yå™Ñ8ÎÏx ñ‰á¸a’¼ó'VÕùêzª!'öW©y7­u7Øw©ZhÊj‘,e'§šäºG‡7ZZØ\µ»«vÊÞsiž$6á¹æ€œ$6alè;[=þ@¸·ÁÐïqª9`,B5¨—5Y/£õ5?ɲ~©÷ŠÐóÙ*¼þm‘c„ ༶€µ¾UuMƒ£w¨Z´cU®Ä˜èH®Äd_§Ü‰uJÎ_ +)½Ž:4åÜ+<ö¥Ê6ͬm̬”_ó¬Ì¯“$馧­=à°Ÿù!óç}ËaæÏk8,‡[˜¢ÓèŸðE§â‹N­Ø4G˜þg“#@Ž#²Åo*ŽèTÉ–è×Xã°³Fúiræw¹¬9ܤߌ ŒˆçUJvžìšwa¯:RÂF¸ßºÒ.¼¥ŒW–¢[é 87¤kÌ¥¼Œ™KT¦hÇü«×2(%´cß©Žœù|çG™®à f×ÓIÙ£ðKfíQlýÁ¡À–×rLÅèÓ¡K­„Yë¤|EP·œ¸V‘i„ʾ •rÒ$èÕI¢¡òz&èåžkCWЫYÂyLê:ê’®c8„¤?o~ùRá:ïEÀä†^Œ.âi«ÙF»ÏÈÖkò üØàÿ”Ò‡µ Q5B%†Ø(ÚhÖ¬Z6éתêÐËtâ˜ÿËk|f¹ós?p R-çbØûÅ;ŸÎq|¼ÔËçV×§ræã‚Í…"âŸBátÿ§¶;ž|Ãoˆ"§Ra¯h“o(_D½XA£Ì½§*X>ö̳*§_9ý|áô¡I—•®[¬/²ƒ-¤A9Õ–³/úGÁ­Iåj„êTÑЇ΀¾Lç«wþò³Ê>¢CØ| ’ 5YÕ©žµXtbI¨;sI¨ö”“‡vÐÞ€$’.¿_y•ßqеPhÀü(7ÅŒè Ë¡@öüÎ/Á ™†d†dDA˜aÅ #kTª¤”f«MmÏ­&'úǤÊt<3ê¡VyX, ÈÚ`T??{±É 5)ò¼M“wê—D^[ “7®Ø[B­ CBXn¤„x‘Üi”IHÈ”ªbRIÈ”f4½½áœ;]xûó>¶ïð‰‘‚Îô=os)# tçÎù]n•7±ûi6 }Їã×(U÷]ÐÑ¥Ó !ïsǀѽÊŠà0ù<ݸHÇ€QúŽíÂÀ6©ƒÀúñ©D”‚/èì/uø•ç'›Ê¬=ö«!\ÎY÷ô±__»Ç©ðX$pƉ(¡"êA[’¸MË=IÑ 22bV¥cÐ~æPµ»Þ&^MåÝG;‰ï@AJ—Âi£öŠïÆŠË8V?ô‰gp> ªÕl8$þŠIRîåÁ¤†D4GŸ¹ôÁW¯æ>HXoÒk£)ujfB-—­áÓî'þ saª£Tü·Ó¡ Zÿá´8˜œ3×Ûœ1Ä©|Â:§®È1ò¥Fû6}êŠÿó· í½öä•¡j]Ù|¹Çš,bþ«ã¤ÏjÄÇEŸ|3íó¿â©(òËí{ì wáíÚ?°QÎPzr†.2jØþaÚ’÷œ±2 T6àdÙLÑzTítÊõWÜŽ¡ÿÎ@ew¾,Jói*FÖL×A7öÚó;Ü)™g^‰;<~óøx<‰ÆìËaFß½ÜÄF÷'ò›ø„à’ºSܬŠV„ïõ3D³EðgK˜òr"+¦M¥‚+Ó;þGj)ÀmÅX>ѺÌãÁpñnâó+Ò&X²ëâÉ_­îÐ}pû¸V.‚îøÂÅÕ'ª¬–mQk|­Õ·ZÒù¬0à@ŒS@Œ;çGç&¨g3çH‚ ÝÉ ¼Ë1!Ï Ò!œ†V\æ.å¼ú¸ëKãMrÚQ%³Y)Wõg¾ ݺùOßhÏßèÈ—³ŠW¿A*5°·j²*¯’wu ì¨ä‹o%¯LQIÊS_ï%®ò1³Ã]*OJ"f¹NÂ^,Ù—" 1…’p‚FI¦R ”lÀ¹íý()Ï´@I^Xú %;Qrh9Œ’í¨sdÊ8Š’=Ò­KYßÿ /¹ XÛÀ'/WÛ–‘ Dæ4YA‚¬v%eØ`&Ϲ÷`ƒY ^¬êÖ|J6`):ptDIÙÔ"”lD!”¬@Éb””]¾Î<êi?JÊõÔœB¤E)JÊŽ*CIÙ¥årõ™}õáô­N‘Þ‚m­±¶p[¬#Ük w¯lp¬gã]‹äà%Öœrû×_=Û5ÞqLLl#¿E ׵ث 7Ò‹ž? Æžêo8W­Ö¿C‹#NÖV¥BA•E;„bj WÐBìݪƒO$ ¤¸ã´L¿x¡ WÄåžÏ2¬6ÝJøzðøñ®1Ot¦k”Σ¥Àè÷œ÷Gu ûBØø—¢ïZì:îéºßÓõçÁŸJ ªpê »ŽÒª’Qu×(åçOÇh·µ¬kÞÅ'ÿŸRñoÉð, µ‡íû¥þ;sF?^ê½ò˜ÿ¶ßÆñãôšüDNåòA¯ÿ^ßî«_>èeµ% hâ6âÁ9Õu(Ç/|9-ðCë‘Ã^tÏ"UÀþ4ú…ox¾@ššzN‚ô%Â$<>ÎtyHjü‡=õy"& ¥mÿ(. µ(‘Gí>ì¼_p"÷ñqçÑcï]ôI4ŠÞpžè:]ûÀRôý&wus{k:ªç¸Ñ„.æÐhŸn4}:x(6u2SÐeÄPÜò ø”D%:e_¬*rêvAŠÞßu ¶{\ð é-ª£Œ—Åh%Œ¾!=È æýK|:§0Ô º*Lÿ¡ÓãµtýÔyðÛÌH°²ôÂÓB(£+Ä\Ü» FhIL\®œi+‹¡ÜسˆêчEOÅ"%%4TG"e¬ø+u¡xçDv=@RGµBêèÓÁ~ZÌ´ªSŒ¢CZ@CÌ ÿ-ÖÑ ÷ 7dï­è-«’ÚŸ ýQìd“£äŒ¾&0òd…b5VX1•b¤CkMc §Y0ÿù £;ÉI îw„§¬v‘T ™Š¾g)ƒ¥äGiB>ƒ>˜Ö<6>ë> O»,ú©4Õˆå1gÄÃûÁT£ V¼}?˜ƒ²KÏ‚9¼Y™®*\Dþ ”ö‰Ò3(m‡”þü¥2G¥Â• sT.ÌQÅ¡q2›7Ú~tlËj?z·qwáNúVB>–f´†-ËËÛ¾! ½Ë!”oÎñ·ÝFÔ×Ñc»+od!é”ë)ÛTW8\uÆe§ì X¥*–”¶ôÇÄyÕ7rOFœüî˜ø³s„»©¦ÑCáø6†æt0æ(ºŒÆìF­t Vå6¾KyP"¸R‚Xœ¾WàTa~Ûbùþ{C»c¹ÞÛNùoïÎ!€¥³¨ãôÈÏh)š>Ì‹; †ú%JÇð6Ñ‚£=âÃSRÊc§I·9¨×nà~ÎÃŒÄHüÝ‚Ÿ[D…¡Cbê¡ÇÒ[Ú©ò‡`EéÐ :_Jà´¥•Ð7a±cI_…‹uF9Ý÷|qòw:I#ÁûVéâã›WNøoÛæá*øEb~ïA«òkŽøªl¤ *šuh^§OÔ™â7DŸûQN"ôeÑê*§ÔbÕ†#W&!Œ–;µ8%‚‡¤mǨ@Np0r<\¢^ý®NS+nñI ÷y!”ô¬0tn43±›š}ÜùˆôïyŽ[Â/ô ²Jü£I7P†]÷;»Ž{»ðt-8> )ûn oÒ–Íx%š+ì–⹜'|GÜh. Fo æÕˆ†ø\¿Dë<ÌQ|°½ïê¿íAÿm·â «Ôŧz¤+í”}ã¿ã92¿qŒ“+»¼gt.Œx\R­ía5×Òöª´ÿx ÅzH^j\«1É}c²€'CjtÉè)üCÊOáŸZzÃ1(J†Pû¨ŸîÉÀo°áóvQf÷†t÷²¢ÐÝ[‹’Lƪv,ù¼;톉––ÚÖ³'¤Ž%•Ágó\ãJÇPБ¬4¨;=ˆÂ5ºÓk¸»ÞŒE)E+(ÄUç]ʰŠ^4“n&ޱʺ~Š£%ìMŒ„P[>¡ƒÚÒïü…Û{Ø‹nW°~K|r‘}/mB©~lÅíP‡zÓ÷7­º_­%•aCƒ.Âiµtƒ•c$œÜ¦AHÔŒEGÄ mI'„[ædæ—cázвÓLTŠ”9¨’ª¦]3Q;÷Êgè ª[(:ŠX|Iw¼ªâÓZu­†šC­m’çt­=\ë‰3_®5sd¯Žö‹Io× šêDïÖ‹kPsœ xCâÚfÍùÃ¥¥œ »’ÌÜÃp«jFAîÂoWˆÁ`á½—“xˆ¹Z>zëˆ8¼×%' +ÝMçÀìÂß+º}¸ÉÂT€ù*Å8»b†'V?}oô'ïVôGx”ýwúÊ£ÀÏáv½üüw¡1 ŸùÿŽ×¹ø‰´COa®LßRðtN§`ZÀ7æ?ëÔ ÿj·ä!̵‰ÜNô»óe“ÛªÐ1ÈyÝ7²×ÐÃÇbœùÄvaÚÚöØßB4ÉùWÍž]Ãîø8ŽI-9ùÒÿ‰jDc{Œj¾ç`7…ì­×Pè{B"xañ ôà¶·õBŠ×©§Œ®tCB hd ÌåÈ{ˆQôX‹)$NÙN¡÷ËÅ_Å0ŸŒ^®L?[æ•èÕŒ;QÆQ`¬çGý·ÝéÔ“¡®±QŠùvêa¥U_úÙuåħ’g¥‹æ«6úÂéñ/‘³@ªÕ±g]RÏ~b”ØÓ9F'葤—X7:Ä,1ß„3îÀ>%þÛºðÂ4:•”å•ϵ½GêMÍ’+ „ó9Žú—ÚD e¯J—ÊýÍÛ™ÎGèÆš?SC¯’úµëL©ÿöÇWÏž§¯ïúÃw_ë¿££ÒW³o_^!ýzN P×Ñ&k×Áãûž!Õ˜ÈK)†l¯ÿ×™“^G¶háaÙBþ5Æ¿ÞòK¾Z,ûõý0_ÆYjCh£Z¡ê„6ªÚ¨áÐ8iŸ@÷¡Å ßZ|­³Ræ KZ .íŸï."M 'sy§‹½â¹\4…Ëa\úpéÇe—A\†pÆe5@yC<8ÉËTÌ>\¸q)²Ò4š'â²˸•‚¤˜×_ð=·v”Â'¤@šÑ?p E¸R1òÝWÓ‡+¯|åàöè£ot€?ôH`Å4j˜ƒ+#á¹\ ?©÷ä8¸Ýý f¦W·èC—몸RÜ t2,ŽPÕ6áüÆû¼Š&¬"ó|þç8ÖV¼éï}c‡¹Yv\ˆ ãA‡b\ƪ…tàð%F S285— ˜ 38•»ÎËARDeL'o&z”¥fœ+¢jj_,䌦’%ê4G®Ù³¡:€°{ž>QXq»-¿ð]LT–@Ý¿ý_f„®œÿ4 §›œòµòµ¼i'-3Qf³A(0ª‰$„­òA¢LŒoG4™ÊµâK’¨çe£Ck®‘¯ý~Ç_Éà\Å?B˜Á'Aºi )ozƒW¥QTŽ}«s¢Ò§¾í´šÊ]SHü¾_.&¦íî¿s÷è|øq3ÛîËÆnäC“?ÁßrŽÞȇ&ÿË;v#š|úµL@-ÉIr…[ÚMTH–PÍaé3·¹¨SZÀe¬¬œ-Qjóô8Z+–­ è¨Ý)C³ø;ç¿×=NUdí¢›Fƒªa9&®Z”ý0"×'Ó—S¿%ñ$Ó3’«é©F!¯rMe«Í—>=ääøS=ÜíNyþé{Ï矶iޝqš ¬P䤲ƒ à\6 ÕèCòèüntû(´?¢Ÿ”n ªà¦ÇÜΣœEþš›Nmw>Eêp_Ï5BFVwò8ˆG",RŸq-ô«n'7 6n ì§ZVáÕæð¡Ó¸ws~ʧŸÐÓêHÂn®Iµ·[µ·;£½Ü¡i(`ˆZ~Ê眉&=Á\ÀY*¾ïÁÏxî”ù5=V×° sÏq´W‡Sn`ùš˜IªrÑÜ0ôlúTŸ\®‹CVyî¾SmÛæÿËAù§œ ª_áµ£ÿ™:šiÑk —ò^MdzâÉrV3/J>ò¡·èf÷ÂX½Ÿ¥€Å\þû|ïê~¡Œ¦ÇICaÊžy%B¦,é´|…lÂ`Vrxµ@ø(\ˆyµŠ3ùÖàn@:œV-‡S–$”Þ³èÄ*'WÆ#Ûl‰C/ŠyÓw|ÉÅ•ÙÄx”÷,槦‘™Ìk¡€¨©–k27߸$@P #@€5e2¼‹Iï°enøÜµ^Õ0Bò®X:3ãR˜Óßêbé㊑nÀ¶Ëø°Û‹¿ì0³õ*†*êWª¨OŽ2Å~õ¢L‡3aE™iLf¢SÎeN<‚Þx‰7£VýÚ~Ḭ́õàÁˆ¹Å£Ègâ‡l Ý´á‡×Öx©T•f˜¯f˜j…¾x„¬Âe£°UɃøwØ£°ßäo»Á~A;k48têÊ+½š`+| aæ2+ J@ä´˜†ÙU&_þ ùS™à(Aò&c}ŸoÐ@ŒØ­MO•H=uÓƒAÕ²)çD¢zQš­t„/íÙzk$wMoIïKt,[m¾ôƒ¢‹(PUãš§ T}¯ TÕà mdR®t 9Ïxÿç­D6êTI':pܦ\Ç•rßÈԜ̯c îãWlÞ¬¤ÝTÞ4´.ËñéªÉªÉ›³­.؃ (y×Âk,Á¨žQe ¾¹ÆØú^’9iêwôû¤Òï“¶Á£àêÆ|1éЗÏqb®‘þ—òq1§¤â+¤uò¦Z€„m }œ_(Çzÿ‚ÊT(´‡ÎVÝù¯?v;Ò †­_=¬åNÌñ¯8y:½ú2¨$õÆÙ-ö=Ö–;ÿszñ‹ÙìÛTû6¥èŸÊ´oI—¶oô‘ãl6°okŒGœ™b3çy?›¹¥ˆYÝ.‡‚µƒÐ&^+¢Ö—wpüV]¦™K)3÷»ÿKš9Ù;â7[‹÷´´žéþ;\2âB¸+e µt9Wùç†xbzòȳÓ!ÌN‡0;ewÀ£/==¹–l˜âÒT•ö‘°­`ò· Pbí•ü÷*¯½½r±&«Jy—ÿ±“jœ?Î@?r|ÅPxއ AÎËPÖ§¥\𠦡?•Ððwšù-êqžâh–F—‰¦p± &Û8ñ’¸ÿÿ‘XU#xr?ŸW¥£¡æ|)%ˆV¯ìtVDÄ ?tsœ6 ­ÆÌc–þÒ~NÜOw»Î8ÛvÌ“ƒLÅ÷ÏjÅ8ë´O.†=`î%¦ŽY‘ ¨<íZ²iÔõi7æT·0i=kB]=΄‰Ù®2²Õw|ìÇ®èŠÿȱ!néðGl„kÃ#çJTL—9ÒmI)-JÔÔ¢”’mkõ¶¨JVà â´V¡s ¯Ì‚)f k<{w)ÇGþ•S·äÌ?±S;›(øÆi98VX5ƒ…Ž Ô²ÉB«`!r«# ˆê+^á"r9b•{\VåsF奨œ~Ö•{±TèS•ówªÜ§+—ü)MvL6ø¡› *<æ<™¸n•´Ô=Äiº8¹Õ>ÇH ì†\*ÄÄùÞ8€6}é]?pláÙ§M뤕Lïù>ó·.‹{Ê)òqEÞ°ÙÙýÀöä/ô²Ïð_7}¼"Ób‡5o%$q]+ζíóÿêÐù¡Á—%ZfÊc9hªÐí‹àIL…I®K2rÇÿd›kár9‚ć®…€’WtÞ‚cþnhé ÝÛ.‰Cÿ–VmïXдp· fê ®*]Ú‘“a!¤ÿ+u2”KŇsõÒ*k¡¨¹ò%A‰s,šò‘2 ®­T\ûoÃÛLü†ã#5s—ºäÉo}•O,±  ßb.%TpqŽCÑC ä.NbâZÈM_ÒøêYkJš4,[•K[6Á*—."@žk¡Ñ¦¥¾ñÈ—*ÅÄì’ÝKöÊWy.CaúÂðrc¾ðjÌüqÇf›»T»ÖâGºÇø±Z &zÔÍhðMùœ'…ÂhEØ$ÿœŒó|„sµÕé³ÓÛç#R(Õ ½`¹ú|éϺº=Ƕ$Åc©uoú§XL;Í÷8àlHŸyîòQÑå—hÅáâþúЇ©¿Š,ü"n{Óï¤Ûœ? hGˆƒ`ÿít,Tc(Y­<¶ÏÿO§^¿¬1õG-ôG¡?j•þ¨Óìg%BæÊ YïÒnHòÌ+A©×vBPxPfh›*·)÷æ:d€>•`$wá.ÆgkfeLšPõ¼>é…ÛýZsÖBËžÒýÄýÿÄ“n³p÷kYuLùóêälÌØÀ$)6lPlØ`cC1ñæê ²@¬1Àišm>ÕĦA©¢#j^S£æ5uZ_Õ¹ät¿›¾kõ«fÃøbx3øš™NúðßÛæ!oìÉ⩸¿Ñ…ýÌ|`Q¶ù\“­ šT4évÉ™\·K“ÃdNÌéº i”“=–Æ&%ÿ¢¤±Sª@«É‚[‹Ó´œ¶¥«?ë2ÏO¨Òú²Ê%ýç~¡üçªò$*ß'#å}“ªR Wâ€>Äb¶•I#±8”…;7@Úƒ·=Y”+vuá²Ïau0ýãÇz)'F–˘ÅpW†€U83ܗ˽:cƒ­p£Í·ÙßfàJúŸßë˜? Ú?ÿ›¯ ðçoÊ0$œÎéÛ>ß&ó/É\ƒ¤ ±°tY\"[ι£ùÙ¤¦YéËÿÔl³–þ§—éja.9€Û–3'z’¥ü8OÅ’ARöÞñ™Ç¢Î½GT‹’º¯Ø¼ *ÿr³–¼f—Üßón½þb—Ól“ÃVË„R”ŒÒy­™à`e›ŠE­Û¶*Q¸ÛæÍñÈýëì/(ö™Óý0àf1à¦åÇþä[½:½\øaÞÝÆ\sŰ œÓ6KÿåÛõŒ`$ZÜßrÌmFüí^Ǻñ¾½V|@`¯ÜkÅíå¢!\Šq ã²—\Jq)Ã¥—н\{å^½ÌuÕø­—Z\êp©Ç¥—F\špiÞËc؉ojj† ôarÅß¡"]y¥À„ɽ2 PÈG¡á±šo®Fã#.ùýÔyðGöõ©J£®I—åGê,Ôýq_TÌÚNóÀ}à¹qìý* ëåïÒý5ÂýEFý)dáêÍ5å†7qÂUkªH¸d¯S¦ÛÿŒ £›¸”¼…¢XéÅùB¤Kñ½MÈ­ÿÈÑ(ByÀÄGŸôGÓWPŽ7~‰¡Q13IV’ÑÝó„ŒoQý0Šöú0Ìã…ˆå-Ì÷½™Ýa5z*\i­R9‚L¦ü’“b»›9¶›´¦òIð$Wr$"„m"DÈÊÕ¶@ñÎyâ°œºì¬pÛcþÛ¿ eÇÓÂÑïGŸºâLô{DýOÆ~ä‘|‘½±¾oº¯ÒS4Þ2+ÄÌBÒŸý¯.ó¦ ö%ð™aÌxJ÷AQ˜îÞÂð¹è“]c´€­à‹JãU:­µbî >| Ѓ¬¤Ôó›à’Ú]o¾r²Ì19Á?‘ÞŸ˜7áyPniè:꓇¬íý]÷{y•‡ßä¥Ý1=þ{ÿîÙŸ^∾•63wÒ~†Õ“”÷E´°½®Uà[›n&1 âÓG¦jóì××kmý¢¾%V¹ßùpLvâ£]Ça>°}æ^ T!·xC‰jl Oþ;vªý¥†üÒF-zMY8ýµÏ¹(„Œ!Øm§ü·ýƒCèãÑŸÓþ–÷£½ôTôýA¹§å'1Sß°ëSXÃçDw84xâ·aÄ[ðÅ!C9Ãç] ¶ Ÿ7ÏÀÉçýöG8ÎaT#k®”¸p'çt‘y\Ì­¢œ¢b§6§Ô ½í.3D1:BQsnû/ÿí”24:™é„ò !¦çŠ1ð!y'ÇžõHfBN¯y>J?I‡l¢ì R&¢Çœ/$®]•uií”2šnþ—žôÕaNF!÷©X¤è`ôÄšùʉ¶€šD×Éù“ÔÖÊÈ$1¦‘ÇXz؉a¸i‘´$íÕsqg üú°`Ѳ½##è§fæh(œ~.Ÿ'‹Œ›S¸ËëÌ/ýâ¶Çn¡Ý–õNp\¯§ÄÌBq»XkðЈñÁ}$i ùé'Ý´ß„îÅÄwŸÀΧä4>ýÕG¨!e«\o¨ÉŨ˱Mƒ;Nð®Ñ€ô’Kw$¡ˆ%áŠæÇ@(ÈaPù×ê1!´Ÿ ¦Ò¹íAÿ틘yp Z‹ £ozIÙ?zÅË´#Ì®5ƒßŒE‚|¸‹¸mJBð¸áœJT3‹Ð€¨ éÐÄ_êÍ:Ñ]·NbjIô‹îšêšE(TY„‚Ò9!Fí"+©l>û cú—óÒu¹V ¾Ö¶¢wpæQ„n•Š‚…¸ŒåͯMT1ZI9"‚T凨Ë—ÞË‚¢sú»h²2R2HßÓ—ÿµ“s“Q± 4xsrB´:Ÿt&–©Ý{%©á8}láUì¼Ù—N+a÷¨i;¹,)”—V(eR¡¨°üâôGot)÷àm£m9é¿xÏ«¼íÃ¥¡õitÚð)1¹£œ´Mkµ95%|K›K ‚T1Ô"R1Õ‚é¢ÏvZ?ãÕï ƒD®@Ü“O]ñÆ`Ê©v MÛl°\Ç”®lí™R"¢SÒÉB¼%WÐÖ×B?¸rªÝX A¥ Œžió™˜Ñ'_zòÊçÛüJAQ]_Jý4bŠ^ /’¡Ó'„jâ. …åBO⃋ĦÊúâ„[­ Ɔ|í;IsÉÅÁ!­¹Jó6Ð\þÈQ§Ã::ÿ-´¥V¶åŸœÖvP™ÙÞÛº›õ«:|Ç…iê]Ç‹•Ðf‚)ùÀ÷¾!çv¬ô¥ SV Ñf‘í}¸“ØîÄ%žä_o=ÎÞ$¢ú¶ÇÚüŠB£ÿrðßñQ!ê*,‰Û(ל¹ß³ÆeZ°£Fên_úçâ%´‡n¥Äµ¼XÁ¦÷5÷ó/¼hCß)Öˆ*ÅŸž~²Í‘Ëfø*NÿnÎ¥Oß}ŠFn楗M>“§tn×óÎ6 7ixÿJz3ÆÉ!£Ä†p_îbãTò€[­É´õq®–˜ÐÃØ½ê¡A;ŸL\Çê6}æ¸[­ ÆâžŽ°V¹j}ÒlɵÜÉ “5 þ*×&«œMÖŽU6YÄl4î€UÔ£*ÜX./À‘Ÿ‰ë—`Ö°š!½RÊZ=ab|Îj³X¹ÅbMÜ‹•»E‹5u4«Åúû²Y¬*»Å’N$¬“Y!O•†â¸¤¿ý0S”[z†%(LÑà^fö¢,”(RìÃë/¾Àk ÜA‹³/=jJgBžI¯][QbûƒçK®Ðn_¹¬@óÚe/ÓNß»^v¶yÓ?|÷«´ÿ[K¯ÜJŽS=ã.²"7Èe "7Øo0¿Áü*rcßòÏÁõÐŒi¶tKDŠ0Í.rØs\ÿü7¼r?ò€R IT?~ƒÙ1cáZXSÙjPÕÑCeéö!´'“Ï©ÎcNaެÙÎJêÕdÄEŸB ¦²ƒ U?¢ |“¹— ²}ã0g‹ž•€c9`‚áÔs×ûÓÈ ÐhCÇš5›;ÚI…{]½^f³ã¾´3ÚJw^Õ·¦™‚ÇìHƒ§ñÖü/2&Ì•¾×2Ý¿G!'Çe…häãŠ=‹àë"*z¸E+ºA;ÄfÈ[^̺ú¥«¿n©ÁÆw½üº„øuˆ ùÞbPY €¿ÕRˆ,½/)LÙÔ±úo½üÙ†™m=oþœ6'oLcÊVA€)Y°'½ÂÒ]†Ó4iM1Š-ÛÀ…<·Ú7ȬÐèáÂÓ‰ÇNH mâ±Sê/NžØ#‹ŸR à±^k§HZÙãX¬ÖÃbu.e–ê0ù'^c*oäHÃ,æ`…‰ÄׂÄKMHK6D0Ìg‰°_ÇäJ]¼¡ s¡œ|}*ö#tû¬Ï`_ŠÆI#{ïEv›&Ÿv9’Z‚ƒfp‚x¥®Q§Û æÑ <Ál׌#[_u¶—ç½ö#ígJÏÕ7§ñu†Ë×.[3Ï•»<§J˜áî£úÞDì›dµ0Çý)ê#€\¶ Tñ³ùò’MmU‰Ïv­*çdÔ%3ûÜýéÊX3¥Ò_“óeéÈ—÷HØd@Jå a¶¼1¸› SzRyÀ”›A•†)+™)_QL©3{:r™èJàôëÎÅ96×—î +Ëu½Å>ñÎäGà¾Î*üÂ/ ¿š¬^ÅÌ3¹ˆëO”,õMéÿ -uý¿á¥®ÿ7{)Éòs\áR~4MšYh¢hf£)@Sˆ¦h)ïXéR–/tBÚÀÓÎ!Û&y#ÛsnÛtlN(²­à²«¿Ú@IÛ”%O.Ü÷No .ÇÞ´GKîlåp\Ÿì°vf8Æ¥MÇŠpÌ*7¿-ò,)˜X†-!]â\K‡vªXÒçéÀvÔ3!#[¬zë]q@b‰ÈMʦxò3'ì¸öâÓÍÁUöÍNŸÂÏ|î:%´Xu§7œ«’c üûî@c˜•RŸöD ®ØEß$æJA’€:Þ6‚M{¬_Ñ‘Wmˆµñ4…âÄ÷×Óÿ•T 1¥Úù#£5ÐÄHX>™;ͬ¾Óóòò¦ü‘¸Û1Ì uK ë–0뾇 ãbÃºÅØöeFÑ,ãçòÕs‡Üû·+%6˜YQ3„°¢Ä€0ŸS H¾c†Ð1 Akª¹‚c@\†XéÆ,ñrt78ºc°<ž,°Ï'èùý³²ÏKãØç¨aq8¤ÐMà؇¬ÎÀ>°ŸŸÿÐÈ“óÏ^þùÀ}UÍ?’ÇŽnæŸOð»"Ã?EÌGÀ?…† Á?U†ªø¹kÇñÏCiü££Ø”]â’dŽeH²RHò—…iZ Ž'²·æ‚¬éß©÷É>ÚŽŽÚ¡Œyëöä·ò‡‘ IúçPC瘽øúY5ÑÈbt·{ì®Øçö‘á#ñ#K>‰Ñ¼õ«àH…¡^ÉS º;SýZ ,uœÐ“}ÖŽÄ3«èô©`HËýc£a䩎†£U/ªßA¿!@ò6s%î£H~®Ìî·&’*º~”¿[¶Ê? )%À®­Ò­V3`ŸNí.5}$ùkbv´2- ( Èo¼kõß Ý2cHf'Wì¢Yà¨B£Ÿ’¾ƒH]½¸ìn®ß8°–Vbà"Üú~é Ä$þÂÐhO2„¨ÛúÎH–(ÄD±ŒÕ1‘£†Îÿµ~-0¤È oÑ÷_Y|SˆPm›jíŠQôqÐ:Eâ÷OqXÃFØ£­ÒËÇÇ;*!J;{„Ë@R䇉ϦßåKØž@+~ÐÊ"Ò‘_ÁŒ.\j³â{²|&–„§.Yû$¹ñC:òvŠ|$Ê$q¦w¦íÈöúáëÙK”:˜Ûiº6‹þÃS |y’d\C²p ÷K Sò.jÉM¦ˆ1õ1«´Z^1.Tô¨‡Š&âû6ëÿŒï·Ÿ ßÓ| ¨Z1%Íà{±r²ótH;O ¾Ëòâ{5ñn^åðcW]7o|Eß8°®sQ'9¼ñ…­]Ãý|Ûz!t9cuàa‚ K°"¤Ù½U*º§…HÀùD‚ZZ‚Jî6¹Ï¸2Ö§þ’)â±ì-%!²TqªwÊuwëewÀ Ìè”h}†£ƒùFq8ᦊõ7Ò›WXé9db¿' t_&wߢ»_oÒ”Ä~uŠL¡¾ŽE™‡æƒx$zœË{~aÕµ Äå·f:(kE•НyâÖˆQH}1z¢ççvFš¨ 0¯x覣Mh”¹zD°6ï];ÅššÒ\—’•g/W¸bˆÆ®\ˆvAÑÖK÷¦£­oÅFǼ‡Ëqç—jYø¯ ˆªõ£þ“˜·½¿uÚý¬VèpmÄZô£”,6¿$‹—.€F¸I´B§R)t´¢ƒ5aRkÖ>zÑ;˜»ßXKÜ:ð)Å­® üõ»©#óÅvÍÖ\–ùµÌž‹ $¹Œ©ùãV¥NVåÀ“:½*d±÷œêÖYžsÞ¶Øò D^ þºÄò@ÈúuîÚ0`ð‘¤%¡›‘rñ0÷EÿŽêÍ(5ö¯x¯ëNe6-T[ºy6~OœßY.×Ò`4ï1 =E­s£\ß|j0zÎ@”F Jç¿t,šgy°hžû¦‹†±´\19é)Ã^jÄt©¥Ïrº¾A±!ZÙFÚÒuüðŸ0 Ÿ‹Dù÷ŽÞùj@Ÿal©uå¥Ñƒ•î¢*þ#_¥mª|lÔÄR@ìµw+pzxø°Ô¦&¥‘F¢ …Õ÷zE…BI{bƒjéÙ¬^—%ßMl`pަÆîI§Tú¤é@ÍMpºQ£Ó•Ћ\+Éò¼\êéè(u= 8·³æÞÁ,ìG…áÖ L{¾Ù‘þ› ›oæÕ9þ…çþ¡ÍÏI;¤®ÅX ȇL‡¸[¨´×Šºt‰WÓ–AÓ–Ž×´—ø¹žd»é®»[yRw' . ýÛe|Šùc¿×¿H­ü:ÏyÔGÁ`! glüŸ¡æ|Ky^<Ëx4K}ˆøÉLÔd‚žÂD]‚n†àøêh…ÙEó4\y+|”š´”ø¸Î „Ý‹_XÛë•„5ú°|í)E0Y¥·¯ùxpX6Ÿ>_°öW¢¼Q=믊Vu”zmô×>Fn%úæ«;Ì>lÿwlŸ=ÒÐáÇþëçk'R#Ml¬zŽƒ?“cWÛ§olå¿c§•„"oŠúŽF›ûÛÕ—ÐU0œÒ'j–¿ ÂÐ~és£Ôwð²Íhè¹Î#~ŸÈTó…Q[q¨å§‰Q›}føßt¥$è ;ŽÞFäløÀ<öÞ@ÿÎnÃËá"JÅÈãH´Ð·ë­?Ђò~xÊ¢˜ÅÔð¨ZóPCWðö5Cǯ“~iK¨ýÞš§LR‘ÍÐ4Ç'ðH«o’A•FÇTÌ…ŠX—&êSjœÖçæSÏ Ú7ŸjHïXó©š!'t] QcïT¤™­H3G‘f®"ͼún¢¾3××mŸ¤¾®Æ,ëÔw¯Ïò±ªŒÓßì?i‰n »ùsÍa~ôY4-h^D³ Íf4­h^FÓF9ž­ÑjîTx9Yn-((¸-ü5¹ ƒÅ=>µóHKÌ×Z¢1?üûo«^.®[Áaå « ¢ê{¸(CJTÑE¡ø4Œûk£Ù©“ßðk÷¥.ÔZÊÏ[X>7ücèMx„}dK|‰ð{ZÍ|e£. ¤ú^ÉÒYœÏôu"çvz+^ï~{ù”\ HUw$…Ì!oIa9ñF¶=ÍÙK÷|”å·Ös¯ •.ÅNC ´Îõô6Ü«TŒ7:ú¹ £ÑÊ×¹É7º”cêÊÛ8n>uã]~8³á@ »°ha{r€ ¢Ñ ‚ îá×ôiÊhgÊH€ø(„™©u(gàꉾœæn9_gÙ ")à˜Þ„”åÃíwë1M¾Š—7èTºœÔÈ"Þ¤­¥hÁ6 £­è+uÅ6õF]š#J§ûtf²’óuôTóJKÁú_râA²šÏ=ÌAÔÝÜÚžáó$ÅÑᆾP‚%#µ+MM ЬÿÒÕÂŒv1ž-%Ué8G Rçj-yĈî¤`xÁቜz§%‡nGŽÔ—:g,r¥R«:‚õM–ùâ}°t2îeÞÖ˜S|Úµ)Ôºø®æ:ŒÞn#tý_¹ñv°‡†ü‘øIKPsY¾áØ*@B^Û¤wQ@ˆ_IR‹ÎÕt4Ó¡ z…CÞšo‰ª!9Æqíwc¿µG†Ù=JK0>Š·Ñ 6íRû‡øW2w(tv˜â×°.M«Ë¾’Q·>I_º6,]µ,ݧ°$´t-˜Ê!^ºg X»)È·L.|¹ï'‰q×I£œ¢zKõüÀ"EÃF¨y ±(LãK¹;¢/3> ãëT‘ÉÉý±Ë Gø´}Zo?'á°±GñkP±¯@…ò¹›¾þ©€Nö’Ô"þøÑ'žåaô—ºæ«-ú'•™©!³iØÝÌЬ‹¢Ýi‡ lv_Ä¢²¡Unâý3¿›Æµâ©`z}Ã-_LóÐAùtð:/Àʉ9Ý vgÛø†:=6–úü²Q>äCy‰u(µ3n¬ï¨±&¹œmŠBSÞßÉñ½³›>Ž4RMŠÈöðÙôH(ýÙžópH} T ©"Æ&>T†(˜í $æt[F{$æù, 1bÓq £lù¾/²egdYêü=]Ük†8U]QWã‡>ׯEšG$Þ’áƒÄÁ¥Av21§Í¿&2ZãX§½Ûê·'¬½Š×Ä CMâÁèT€•çâ§ûp[Ø;°ßo¹Mý‘Ií¬™Á“ÒЬïZÀª°úrÉÀ³g:rkèƒßË„HnÑâ”ôÙ¬Ìlsoóß+©>øV–'¨–ê–.£%³ß”Œº³¬Ò œ =¾h^,Þ­ø#AY,{$qqxÇ£!û::öy,H,}!‘>_Ò߉#ZýGñμT;PC`¤°JZ‡F±äQ¬j•¤Pd®¤3Ú3cX%ÜÎØÐIŒbý›o”® û!­Ò¿Œ|˜Rk%TäèÛaå‚OÅ_‘-êl´år™Y_MÄ].~?Z³yI|“ ܥ˙ ‚ˆÄÿÑg(•ä§žYÂa…ÈöXíA2§öX{ÅECñIßÑéa¬…þ9‡¯ÛíkøÔª!‚á5¹V|ÛöìÁËh³N²TdÛäm+§÷½ØŒ…€Æ} ;BžA6”>%²ZóMÏ8·ÇΞûHH"œÈ»xÿŽ…$²ŸK…^åèd=\dÒÄ<}ðñ€Oßqö?Ö›ÖoÂ%óÂÄϼ ]Ž”¦Ø#õÆsÐÅî¨ý¡õßc¹4+a ÍöøY-û‹Äe\¯h¶‡»,NwÚmuf £æbÒ¹éäšwÞäšgS¯"׫&!Wº(Oð¨6×P­XÏË Õ2¨Ü°ŒrKKè•ù´|-¤êÂUôçeAOdJfÿý‘øwÚWýNÙçýNb¾ÎÆ;ÝÙ^°d¿"ò¨ÊþÓ4Ôî\> %:–ösÓTp[Æg%á…üžwÒE(¥¾uïÇ îÀ š”¶ŽÑ¥PþÁ°cœ¡4£é€c*ÈVà ©j[‰±Š @–YÆÕ#Ø‘Æ]Z“8‚Ò¦ó:8ÑÍ›/¡x8~Gâ¯`‚A;úf—mRG…{ÚíF8y½c#|IZ+µ^ãëÅ¸š”ž¡?Ë–è²»TuS&¢Þ†Ï¬š'ÐÔQ“aç#‡»Iò¿Ÿ%ï ‘”ß1+ÀÞ·èæÕsÖÿ'&êÿtÅÏ“ZÑ±Ž£pÃUárzP¼Q%x>cä’òëq]d.PX”HÜ'æÕ?PÄî•jÝWÌ{Ýï ÅÛsÞY¼@äød@ó/Î*ü¡(Áž%ðépPŸgEÿef¸ú¯1 +ðéTcÖék5™þfðܹèXÏOŠHN†.<\¸Zɨ%?¹;¤—ÍÒËæ¼+C/Û,³l2‹…fÙXuóuуû6Ì[7õ‚…²ÊÑ· àrW,åÃm¥Å`|-Ëb#XØ@ÑëQÞFŽ ‘¯k¯õŽ&©p4q÷ˆ>аÿqX)p´O±eA±20\ø9è !chØ¡T¸ñOéaŸaèàyì"wäïÐÈ :„ocÕo’㟛¬ù3Á T‰')=[Ëòƒ/¤AˆúƒÁø!~î{2?œHÛ– ¶8hÈøm #´\W›aЉW…&ú5š jf±òÿPœ‰ ëýš s A ¬©4]išò7Td0¨÷ *ôõÐÜ™¨m†ÿAû­¥Zö$Ríìç"ÙlßtaEøa¡ †}g¤[6¬óK‡­´yböÚÌ/}3Á‹pê£ÌQý‹úÃkø…Î^c|1øÁP¤a4´‘+uq[}£8½«°Dex’LjÀ[…]X [<„`¦oz0_.8;ð…\ZËŠ‡¿Mn“J­ÜS—cŠò3ÐÁíÄùŽŒ/paã‹|ñöÚLŸFù9Î¥d¾ng{ð…¹Õ“§3Ã1+À–×Ðyá‹úlGªˆV©iT+ü°Já‡Z]• /K­Û,PØ,õ÷/s}¾Y$â³ØIÉ™M³³øÑ4…hŠÐ£)AS•ÅUga‰³xƒjñ]šF4ëÐÄÑlDÓŒŸ?+ó(%OúxlB³M+š—Ñ´¡ÙЦMšß¡ãÌëúôMçï‚hBhÂh²Ñä ÉE“‡fšRôY†>ç£Ïo!šr4‹ÑT ©D³ Ír4¡éFŸ;Ñç[ès?¾{Í!4ï£9Šæ4)4'Ð|’%7 S¼ºŸ"öv‡\-¡öˆý/m_ÇuÝ»³b%‹œ¥! zFõ6•jIŒÔ>DpU£”ÔŠBc’>Qã·(QUf•0ÖF yURÚÊ/J«&ÄR[ê'ÛØô…,#Y²ÁÇŠ³kHŒ>j!Yïžó?wfPìþ’÷³ÅìÌܹŸçžïsî^´ÚË>4ÞƒÑ<Æ»±@ÝÑX‹¬Æ»Z|P‡K=¾[‹w4.2ïá®ß£H > ÐQû%wm8”e3ŽÖáL/§q1M;;Ñô:ÇgE%dâkK½žý¯aײ«Hç%U2´.?ÏÖ)6Í`§ýö+1$q|R-‚Øœ*G*&¾±”4ÜT'à¡LéòÆå—)>•~þbé;á¶Û³Ô¯ ÐÖÃsƒƒ¦M¤Ð% :µ-e·_/èÊ ¬ORö"ŒÁ‚39ùó>Åg³íÏ»޼pÙ G î¼Ð‰×_Êɪ᥶NÄ›µq;¾ ·[O…Ûî†úºM|ïÉg©¦É‹“ªb¥?Ñéu–ït9Šï¢` n·×¬.ô`Z¤7qÿƒ`ŽÁÜëç£ÝÙ"E mýéTܿLJOÍQšpN~âK&ŒMg¥>Ì…«fˆæ»1y]<¿Ó…v$ÁN¯ÖèY’s  É £\‹ˆßNLpcš;à7. MÉt"jѽΩÀF‡½Ò}\ŽT©àDš~<‘„§tÈ9ýL\` =5@1¿Õr­CVôÕØ3{íY=PÄbucçuG»½leP¿È&¼ç¬’L{¢œ÷ˆ¡~‘§¨fÞ¥]у=|§6âáÕóSoxÏê†2åª&ÞÂ=Ñ!ª0t£yréû œæ¦úÍ ƒ`nXCû¨úÁDÔœRwã^akÙHþ4¯tbé€úîÛi£†±|ô9¿ª±.N·zÔ¸bµ…Šs™½[N~W R§—ß1ýdæÇoá…b¯}Ü1r<²œ~mÚ® ]{½0…ïÞ;Ž .þ²‰ÿó~/ÛÆßyšƒ¬{° ‡ÁaÏ'ÔsªÆšp7uë`ê¦öãAܵâ;7WÑÆ\Åk¢ê6äïÞ, ”˜ÿ!/‹ãÃL^ze… ¸á‰`×Ûtxp«.â ÕJçRµE)ý¨&Î0†›îeèH©(§ˆ œ‚ûNm.öÚ²71” 1xNãÆsŽ GJæ¯!‚Tø¹°b|ªeAŒg ¼§ Ùï9!Þ²_–^Pc EKºŸ=GäâSHŒµJúwðJ|ƒâ¬e­ÉH i•òY…2àµå!!÷öÕé@d4tŸ$F¢³Úy_ ô­<:òXcsÀ'üUÚ…(–ît;q’Œ›Æ*,J;xxbQpú'a¬ŠåÏ0}Öû,”Qm<¦kó¶1m …¼ ‰ˆW&#%ê¯qÂ'é™0ZhÇö±¤S+ù‰Õ7Ô#Øé—ú–@ÅgŸë´LLjó„´ôb¶f@rzÁå`ªpgá´O¿Â׿ƒö÷óŽT˜=ÍÍ¢LcËlV’N‰wa]»ø ŠíÄ9ÎNøÚ i¦G(ÿ¨jxă†×âä~±übãÙ¾k7^~Ùs1Žª;~.ïæ;@·:@‹ÚÜ£>¾¬bXÅH]|(=y=©±©Þ3i àhú޽âLnË­Xüv{C‡|¼›@E#ö®å[=@^]ØÍ¼ ³}nxëN×™KØÛ®“½W-[éÀC%#‡ˆgsTy¼·%ìÄ×(?e—Ïõñóx^g?gg¡.¸Ì‚f£wy|¸aTŸEÅ xÕ÷¼õ_T›ƒÝþ¨K阇]Œ˜âwMï:ô»NûÜÕŽãýƒ>áÍ.ÈÔõ¼ÇŸ1%ù[Œç‚C`c€h¾,§=UQ1öu©³¯c€ÎˆÍ8‘Ò`7äÂ.íØ/Ü[Âq]‚]v`Ë åYä£ðx6*„Âýì\„ì7>xšgåmò²ÚëŒ ØyÖŠ,Ÿ¹À ›whÿyƒT`Ô¢qXüÖŒg-Ôjœ‡GVúµ©WG ØKB w!l€\O<,5:4ÜI´“ZØ ŸïÂr’â Þ…Ïóð¹Ä¤8€Êg¼ñÕw8ˉMýA7ñ­2…<(-$±&lQ²löž+Ž÷\§W{Mt‚óÞaó;˜Ñ~æ"{6Ûì",ë/2ÿM’pÛZ~œ¸Àª’Ë(‹Ä7ñ$u /ÃÂÑ[¤î÷±¿q™ª¾Ðç¢Úæaµ¡ç@mA‡ÊçÍÔZ¼QüÈÆeòu»,ßS„y©Ÿ'™«#(Îé_¢·Gb’ Wäsò2qr:sED`Êà¡©r­Y(4þÍgÂ{¤dšõņlm!á†$Ý#ïƒÕø°N>|6¼gÚõÁYÂ^S´I¨ecÚ¹}šB×ã>r<*è˜CZÝ4ÉH8W 털Á©Î×N2+o¸íØD¾ï×¹!y^JÁÑLØèá„âåÑ%U+÷,ÝD<ªÂ¾Lˆ>g82 Ý/·(™x ”#£kÏqø¤EåYržÅÅÂC4äY´.´+é}®Ä°–\Ôpêà2ZmJ|ÿËgA»ðïNšÀqÙ\^Œljœéf"hÙ’Î#qAß Ez–8y€@Ï(c‰ÈS·—ü»£@ãses|È @ò)uúLË!?K¬wO³î˜QBAH=©`¢\*Å–qØCr%$0Àb{Ã"Dÿ«d¥1AÇT‹AWyË"Z¤˜º«4:VdùÖSëhæKÀï9d¿6X[á_>q»óŸ­r³ùRŠàïôÆ=c….h^”øÖÔÕk¿¡ó;¹ßÇ1>ݧյà-}$k HÔÙ¹Ÿž¿:+¹i5>ä4<Œ·kðáj»-ÙÑ„€éŠ¿~`†1+¡R^¤ó‹î *Š_™¡•ài2{MsÒ¤¼¶ÓL^)Øçx-RÆ íßS©LRPT“†ö+4Sj3$îtH xI7@‰xÐÀ1[nx±@”}ˆ3wØ>‚õÓœ®00UD’à˜fN)Ã!²Á-Wˆ)xˆêq9‘¶&jçKUŽã,ëE$MM4¢½òãqsuòKºçxî)¢ÓHÊF|º—Z\êp©Çe-.¸4áÒœÉy[·²q›£©Úô)OìMšY¿hfãšMJüǪÏrzïá#©ØrÈÙË󜢽:|JÞ׸çþ¯B`ªÕx¨W»Í¼e¦¦Ü$#¶>¯É2×ñP™˜½ãþ 6~êï>Ã×&QƼ®„'(×I€£¡'ÄØ~ú!ކºsv4¼@—ÄÉ»ØÐ¦Zq5e?MFðÓ\û4!@íG«yA0¨-;/”z /÷^&-ŸñZõ`­z°V/Cü§@1×¢Åêî`+%¨F3Ï%DÜ~HáŠE¼88Ñ!ŽX è$é#Ôâ(ž²Rb t¢YENžôƒDáE^ÛaK|:H¦ÍƒŒMÞ:Ì“<ì‘Èä\³>´üØÆ@¢ qõšx'…ŸŽdq^‡výOü¼Õ,åC5´õÔÆ?²ôÑóK!ð„„–¬Ë ]ù££«4%úäyU!½ãP©üÙÕkâ§BÚÉKÀI« ‘sК)ÁÛ¤!$3¼Ö’ƒa ùØ_Š¥z\RbÍf'¨£kÄjÞ@NâH“:”Ó®ø|qÆ‹Úp*~Gð§Êvü©f»T\ãàö ¹N”¬w˜€&ÏoH ’"O í%")6­Ë” )æ¿ìH)dQë.E¤TP"ª¢]B¥†-L ÇI%~Ê<5—'µ“G“ðCô!«øºøk0«F^Rš$ÄI‰×EÕ°“ÇIõ¤ÆIesã¤dþýÕÏj·ƒ_myi~R×7h¯¯…ìõ•ÎçÛë›Ïë[©¡¨b¨éaüOføÜU¬¤MgöõÁ'Å4_Èâçç'9žª"Z“øÄuŽ9¤¶6ƒ ¶ZQÀuÂÖµ· h-9]Nø'LbXÚDþox=ìŸÆ‚9eÌ^Òoù…ø¢^u޳bšÀ­½¼ |’ñÆß¡À%¸’0]¥¥ccèÌâ×÷§‰ÿ¨y W‹•W‘3¬ž°&àû£ô.gœÿž£¿ç9-ÂåS‹/˜9 õàû“LVSWšÛ8õTü×e8Š4s w­šÊ,êÕ‰Y[ëàBà\ñÛeã\ŽŸÜéÖ€WH«e绯páS~Ú8&T³YtÖ­a½%T¬U2ÌÉÝô š Y™GDx#í;R˜wÓ¨Õ‚ÍJvG$o<ËKÉÌÁÚ êQˆñ_­®Hf¢NÖ8€Öj9U³”Ú“T‡:[ —xK­_’2Ì™†Ú­Žç;ê_ ùÄùé¼,"·³Ž¿`ΰwcµía¬–}H§Úçz½î¡G­Xˆ×}x]HˆöìuwŽ‹\Hüˆá†#:+¹$Žš9)V€“ú(<"9[{ÅHÇn:çvdP'myÅ’@“øAïÂFé„(—r §-ZÐôSN:-…¤U2Ú¦&´3`ÖdÎÄåÈßH”N(c¢ èc¬Gn´‹åõ½ªHú‹V"©@~é­,ÂyPjÇ|Œ‡ã™,> OL|C]Ç>禮Ü5‡ºöΡ®¿øS7uEgÂhbç&ÍaЏe²'0/ýë xÄ¡-áñÌKI`½<ˆBäø°©Üé€ê=Ì…†¼Ã(²P‡ñtr¥[_Ú˜o¾ø´¶Ðù~†ÙÝÓã·7ÓùvŠ þ$ízrà*¤šØÐÁ©}Ò‘lZU=ìÑPŒC33Ì$®ƒª%ÛÅcúÖZH K†¿aÔL_Äó¶èˆp$Ã{¾å€¿¥ÏÏ-£ðˆñ²Â¯w&Ì;®óƒUƒªõR£®d°""ÑISý¡IØôxà½F¶HqpÀî:i“t~¯ƒèÛ€£gRUÐ/j¦*cœuhÐ׿'£Ù[½žæNmõ[i­<ómu:#ìtªhùpóbWPµÆêT(ñƒ‘«×4þéE;§ÝÓÜœ–x@aúM/¤3môV”gÎU™ãŽc˜4-@ç†/A8lèZ1|(«=e8žMªó¬I˜N_¤ŽH"!:ü0VHº“ÁÔÊ´ÔsÅZ/ïS/zéÅ\g怛“Ü29ã™wÿ°À$ý•ßßÊ'ÔÞ´Ý©ÃûCw|u©b3žU“K òÜ/d棟oëÜ|¤FÒ']_Ë#ú{ IÍEKiÇyM‡Õ im.É7ñœÍ¡ÍAóãÙðÓßZRð˜·&hgT'D¿Ù£u¸›1…ÜŸÉC#Ô!È:­<§_wÑç9óCóញKÕŸvÁ\Ä[ÿVDŒ\ÅÆn x¾Z»+8vw¶8ˆ‘ 衟gL²Âv²ÌhæØÝ¹ôêÛÎ+z–/5ܽD䨄¼hâN×çp.Í»»H\ü‰ñìˆî%ðþ0ìó­êþn[¥š nÛåí[8;}8fŒEV¢10ðg_M?{aäèØ]%#G‡Æn+8›¤Ÿêï[cw—ÑédbH#TN'~ÿ-ß| Sc–sý´½°9åTIöc>³ø Ÿ@šUöU({¡B#sbÁ¡ íßXÎG\²BJr¡(HüÃV%0Žñ*Ö9pû•Mì+m3…qÜúééM Æï$¿‰ù8K“éÓÊïnÀ;~»~ù=§"ùŸ2Gî9D¼‚¥ ŸäÞ:¤ œpc<§ìÒ& 廈ØÜš¸MÁø§7½ù`ö±…áÇn¡1,¿°î> ™Ò(æšTÓ * Ld‡…Æ\磔ÜJõ¤> Ný«H|y•¬ÿ÷þB 0¼§êãÓ¦ú§ˆ}É  þ·—Žæ¬ SÚïx]qvµ¼RvÂGhK¨ÿ=-ù–É Æ¼øG`Úf0ËKlH)tKô'ù*Ä–h]¤±O‹kC,¤BuC¢øðÁDOwPMnN¯šÙV致dAj#3(1žG$I?Ía£—‡äü"û›Ac0þoiNœãÿql> Û»ÄGJ¤>óë–!Ô¸ØæéצVm«£Æ¯ºêÄ󤣢ùj8uœùªð~cèCб5á‡îÃT±ö‘ÒÁ2Ä a«/ù^JQ}Ïú¶>­¡ŸÐü  }¢ „ß#oÙúNz÷oÁDžPXc‚|’ŠãÆïGŒÂO?ÌøýŽ9ø]õûXø±ÀA‚ÿÃëþÆ‚ªŽ„jÑéáÌXŽ×¯à„]¹èõ9Æö]>¹xì–­—ôCØðA:7L*¨ ©Ù˜fÊå[þ!ø(¿µ×ÏlgK“Ç– \#÷cfKl¹€#oN¾3ûº˜pËdç<ðž²Çkå®HÖÔq;$ãj‹ë׺¡Úé†ÙýÒ ÕC7¶E7¶ðÔ¥Dˆ› ,9Ã̦ûû#w|iÁÃÁå¯o´\5þ6øë!×Ò&u Z'i¯”ØÈý¬ ëaˆÖ@¾ÙÞNmÚ-Kv+§“ó±Yî&ŸÓ‰I©ñ.‰u1ơӔC—÷u¥±1â ëUìÍŠþœ»F§µ œès»Y§ëذ´†{³ƒ>pŽå+ ²Ð¸Ñƒ>(â7HnÙlT1Oô_¹†ÀÐ?b‡æ¢àúÝgOÙë‹ä’@mÓª§yä!U€äJ'Au¢éßçÓ vÎ&©ÿMûciɼø·¦Ä£½äœäe%<‹œQÜKgÞMð=ÑŠâNÃû ï °GÅ4.~.f¦1¼?ï^ÂD[ß ?”O.nS|~/i囜yfD³ÙpiŒ´¾Qü$GD¥ òw¼p»’–ý¸„YÓJêFeöòcá­ìêþºf+û r Î?£K|£—Ì7mÆr†°Îƒ%‚ -ÿwz¾×”ÝçCFQ7QÆI©d|–kÝO¹ ïùý¡ÏvOòDdm¹ÂÛ¤°N»”2®&¢Ï\ÕþÍ: øK[±§†MnX¬wÑyÀ™Ÿ¶ó~Lÿ[ˈ}ã:«C@™ú©®Lýu€5χ=®Lý½4¶ÆsáýVë?tЇ865AÜÓå×®—¤Ÿê‡ÿ Uè’ªÃül°‰×F #­ŒÈ¼b6„Ÿ\Érêþ·Œfœ¬i¿‘¼ЧåÙ©5E OiÙTÅô‘© äØ<—:'Ör{ÙçÑIè|’ÙøuC­»k9-}ì„;QÐÏ 59b¹Šð„ã¶OŠI‰¥cÎ0ä:‰¶j 9;çqj‹2†QÖ½„œzàù¾×|”uœgÙ^:v*ÄöëýÛx±~Bí¡nü×Âþ´ŒÅQj ©Å©±N?58ñ[q±ø…Ôú—ñºIrsãűÎH ªôJ’JüçFøá¿ ä={Ì˸Oø¨64‰Dv‚ŸB:v- ÒwðoóÌÒgÂý>ëNM(ýÆ›ÿRñó|®µ³d¯² ÛðH¡û&8í±MôÃ>÷b‰S”ößB#uAòõ‚äj°""ÄŠjdzÏÌ,ÁÖvÅ‚uøKÞoWF #™“ìü¹N?Žù„£<4Ë£Ï$-?¶ºÍPTþ€Þ¿Ï✚Ã:-ÿèÃÈè¾å0¯Îh97Ö™'É3tæ‰Æ§~"šO:Φc’£†N²ÈòG¾½zùø”l'ú—I,´¿.ä¯wIü„=ëœ-sxé ñÚ)ò1§È‘¥ÓÀ]æ!cl,VHÃë,,ùmÒØr‚‡×Y#0§°ö>Qï Ϲ«’9¾Â8äûéÛ$®Ð&ÒîólyÛX·p%²²ƒÙÖŸoü„ùºÆØ/ôýÌg>ßð&ÏÁ´15ósÏŽeþÕäÿLj³3èV)¤7öÁdõåmoxësŠõ€Ÿvà&´]C‡åã VrËlüf!aÔÖSÿÂÒ'Hêxœ% þ; 8JÄd@u‰¿)ÎpC{ýB©ºÆfS€žR›(ܰ:fÁÞ ‘>[èlп¤ôw&*_½6Qiçר·áGw§½€´iZ ¢Éñ,^’æ> ˆyçÑü–8Ï–ÉžƒÆ|üËðAÎÆNš‡9xór8¶ùè]J{b”á( Ž®¨ƒÝ€crHǸ¡­î°PB!ú™‚˶s:t˜@Š#l{Saº[Y‘»$H糈ãé–·DäáÕ…•''á'iŽŸØ !=^†3”ÂEAŸd­à€EÕ8ÅPÃtRÀ×ÊM~c½ú²Võ”³èªŽ}ÀB=VBL_âFŸxÎ:y•ôFŸ¢ßI‰ xšŠ' áíòÓì&9_ï’‹Z 0•@5â‹FŽJPÑ«a™°R§Èf_òFnN^1I`áZNq-Ï™ýàF“Âü¿Œ1c€D÷#‡§P]¾m9:ÖQXòµ¨~ÉRý¤”žŒÅŠåÂljØÐ}g=n9”Ýr$›”ï²0mú±…TW¢6F<ÎÐç xAú.1vÈ øVX<†í«£­HÜÿÕ? JÄ Åp‚ÏA<уï„óôøH SíA O¾è¢-ž±ÝB´äÜz¦]zÖz>C÷Öíý á‘ͪƒŠé¿÷‹t+Aë1~Jš´ì³ °Dïš§öÖY†³v^×±ÎÒõ%ð,mRVeÓNý?f—>å¼Ç=Y=˜,í®ìawå?$ \ ÎãØ«Ç±ÙóQ±_lÙúæO¼[$Ñ~ Ñý!Z³0ÝaÃ'`—ç.¨çÎìÐç=ïYûCôŒ¥·!- ²—©î“X6èô½ê7^4 Kàm§ÝL?Zº2¢sÝ}VJ•'h*±Ï飥çi 4ôòKÅC‡×³Æ Š•  ‹ Ò¬¶²ûÕz|ö…DÚøÕÈ ¼<ÛOÿm9DõÉÚü-íäF¥m鉅ØÔ±Î£àÎPËQÙPIØêì$úWÁ ï¶wŠÌnÐŽ òB[ïÈ®€“?MÎ0À߯ã_6ë‰'×vRv¢ÐfÙ#ë GÄÔJ gϘÏÁ7ãyBÝ¢#ñ±*ä4¨å.¯ œ¤LŠ«µG<©­Q#´“žŸµvœMI¦ Öáµ£)Tk'KÈ 4>Ò«ÖŠ¦xä˜Z+zuöU^?~F?Š˜59ê¬à–#¼Žj8Ï"¶»…Ï ¤mS rÌN Q÷o`$ÏÂŽõp£C@b¶$ÂQ˜½DˆM‚Í5v,JÈŽê ñרrÄ•žyÍxªUÖÎÜ0¯þ&÷ýnÆÇORÀGÙüÅmÁå‰pì)2Ä/£;JUõáÝŠ Ê*Þ¾ š›+œSÂwÅËÕ©»[JùÎÏ޺ߩÏâ\œø œVuËY™mô‹toÿòêµkìÈlq=°þQ¬Ð#ômCï^`œ\ÞPXדTú‰lQq{íH,sÞÛ„|Ó/‡÷(®ñB{Pmï3ñœÞÉOk#Ê7~/è1·–ÞÁÚäDË:;ÏUÊCÀG¾AéצoÅ<24žE}gÌ™S´ÇÔ§0ɉJ¼ ±×a09ñ@õWxr_R¾•Å_"Tý“äTСø"š ΂çX°ó¢ñУñªÂŒ—s*òxNvƒsL›qû¬ß_©fƒÕÅÈPüãнۂ’‚ç<ËoQLs!ºp³ËAÆr'»yGhæ}êMáwthäÜ#¼Šã^‹Wýž£Æ€•C0AªÔLN(\í_a š–&R¢[@GѪ¢À'2à‘¾Ÿù‰€F>ðgœ\ÓËná÷æÐ­bÇoàÁµ|îy&žã7 ºþ&o‰§žç-HOÕ>Îûäú/l ªK“º¸(smXÎA…»âþ}ê>ÆÓp”dBc@µøñ…Ï+à¯R @˜”6M.%ÃLiVø-cÝçe0„tÿ [·H÷ÈÎ3}?UĦáÅ ù—QoÔEúV9ÕN—2uQ<Ò–#Z¤:ú|ò+TWä"Ï|&èÈ …B–Å ©d™hp±‹ó¡§Ë¨ßÄq’»™Ô¡™ú¬d"ï9Z' ,ŸgÑG&8pZ¬Äb kò=Ê„€ƒÝ‹Ù[s@>|ŽÐ¦‹ÜÛÔø¥ Ä_*\qï}tÓKÇÚM?ã¬$–˜Øð‹§SWrø ž¦!u‘•ü{½’h¶¥·Nd3Fª7#ßm¶Еý=ûäç ù.#¤E3ż]V-W¸(Ä?ZF;˜Š~‘Š’ù7¨ ,ÛSH/ÄV9¥Œ˜™£Õ(`H&x<¤'˜ká¤þìX#¦•Nš:Ç€ýšuáG$U¤{ÿ ™¥mÁšžì{eA tžœudhbæf§`ôr|ãèæ÷‘ú´4YLµç0EõoïûI`i¿OHo('vË]Aî¨S[7 ñõ—£ŒšBêó—ÊB !ظt!¿«øÞ´$wRC‘†ë†—ü?>®ê¾0Ö9IIË& (å¯ß|Ë|ÉŸÓC¯Ž¾äÏ¢2g¯ _q))ŒLPÌûŽ ³þ PRi/Q%/Ñ×Dfcúãy?ÓЧ$ÑÙo¥õ l&A¸+šMš½@;ñ¦þ÷XŸäw-üЈK™¶0  §Wò[˜ße];ÍÃN&Ù‘1À6Ç,[þàåÃá­@ËÏK€,Ö,´…¾0݈—1¶DáZÁL@/~†¿Á“ Vu€Ü,?ú/nö㬕½0(ûÁXª¨®”XŠPâ~|@Y«¬bÞ}˜š1I,‹ôY¤µR¨ñ¥_°´GxiG޾뢔Y£m¼FÃø\O‚ÞׯF¢íu t"ƒ a4k‡je¤wDñÈ#ï(&:”CJ A¡¢XJÔÏŽêgЉUP6º"8ö¹àØÍ7±þÓ†öyFc36ÿ+“^m£áj†fÑ'?:†Ž`Ëoxk¦ßvoðË:“.Ê„ÞÄB}èYŽ(.Ïù`¯OÔ-,×¾%lßO¼²wÅÞÑ/òæ¥ ‘ÀË>4Å’Zˆžhè@î;‰D€‰Ë‹Ú2©Æ ;hTÃá‚BâÚ˜¸ÿ"«,%‚5ûtë} ‹Ú,áÊINzJÙ">ud„Áæ;sÁ8ÇŒ¹ÁaàÏ Øðþ}°3/¼¨wC7^ˆÜàf=®²\;ñ%Šq!NV·Ë°U,&egíÀh„ôñÆ#àQº0 ;EøÿWÿ;µð¿‹…ÿ2¯­PˆâÆYšBÍtôéBgÞdÞý²›KSÒ%µbœaEØßGFúFCˈ÷àÄ}¨}Ð/?ù½<ÛGv#6I”LÏp_2¥.¢ó"cœxXºïseÀ÷XÜ_$ˆ2ÙçqÏ";S&Äü.˜R&MkR€2‰fŒÇšAŽéèÝØhÓS'Æ•ñFÑ] ¢'ƈ¨_Xú–¢»ù+‰êÛ¾@ã$eÌGh¤üCUÉË8`vÓQÑuÛT¾­í³1Á>c^ýÞ÷fXã1ih2Ésg8~v"'qåÇW¯Mhš Z?Ï$Ïãaû·Îößä(¼Eãj9“¢fÙx¾a^??æ»íSËûÖ…W®;¯Ãü„ÑEñH_ªì{ÅÏ¡swHP›–MÌVØ…&¥ödƒ°?J>È™åìG¶ô9cçÉ÷óé…j_ï „~(èIäC½è\“>ßE¨ ÷.-üX¦êÝ÷N3@±Cè²µ·¹^ܤ(y‚/ Üõ„’¦%qï¼fŸOÌÕ¡¨©„‰Ì2êÒ>Cq}oßh_ZÜO¨ ‡*Õ»Ö¸ê™ù(>hQ¢I}oè_2{â>€Ù«O=JÑþî³z³—hSýãHÕ¿ONÚówLÒ”ßzÛòþuÁO¯›’ÄöÍ_H)J&þî3z3õÕ“‰@âã?b Î,·Hv4n™¬m9X{}ÿ-“µÛ9ù¥5r¦å.äoòrñü…\s—%¸Ô\á&V_á’µW¸dÝ~WËZ\v•³ç×nºtF»èÒÝ‹F»qÙ‡Ka½ÇóT>õ±+ZTïd3(V¿÷³o[O´¤ž+-Å¥ — \*q©Â¥—\VãÒx…koºÂÀÙ|…‡»Ý€Ëf\b¸´âÒ†K;.¸ìÀåàBžŠLÚqLÚ¦é4.øÔu9s\ßÅÅ×vqñÆ..ЄK3.;W@™º‚gn÷ ž¹®ˆ9À¬ÇeH¦z—ìA½¨ó jÀ帺„Ë*;PlU}¦d&å¬8Àî°_ä»Eåt×ýße} %¿Œ’(Y’·¢äW|¬8¥Ê`*ýs$’öÛ~·OqæìFµEž¬b/>.‰Æ³n; ~ÚÑ Î0Jäü]Pý–óÆâ£ÍÞ‰eñœÛAëçþèãõR7|ýè«—[ÕöcG!µ‡¬ û甞ˆ¶ sõÛ Ír­ÝnÀÉ\ã#2ÃΕC+Ø Ú:Mw€\ZfºCR`œz0Í“üùF'™ØÈh¸Žu%98Ž £zû9«•T ôœS±±îUÁ|’Žs‚´{z?döƒde‰°3:Lχi¯Œúœ<±ãô´åâS›™\`xûÎ([\n7Ë)–®„ºLøà¿Åú Úø!JQ]ÚzÒçd¥˜¢Ï %Õ§4Sö‡“H¬Æ}¡Ì\Æsýà£Ü~ã¢úMcjx“Xjã¢Ò¢OäÝT¼¹â›íŒ4-¤“ºQõâÞÞ‰okŸÑInÚB×Í!*”@¡@òãÐýœKéÿ„_ü놑°ïÒ¼sHÞnù’{–¦1K3h3†{š¢™ëO‘¤XòøyŠ|˜"ºã)âö‘nÆku¢ginÎ[Ý¡Í yòÃ{š¿;å̕Èfœ4ñZušd_UÙâS};ÚuºP™鋬X¤}!Ã*,ñcMâw,Çè÷ Ñ÷"XŽïiûÑN¸ûFöÈ›±g|3ž‘L(ñMçÏšNvÚ!ÇíZv¾Su0QÙfè³Ô– $‰{PEC~OJV+º'Gz¿Ggµ¢Ÿª`í¬V<ÎÅc;«ÝÇsªüZ²ZÝ„O+o¯Ió$þüûŠ%eøŠç49˜(ßϘh5Þ >¢”>è³± ¡Þ& ‰.˜ž|ôÙ/è‚;F*?x]á–¬¿\()¸™Ê÷­0ý±yRq@àD‚e:ÁÑsÈNzpq#C-A>õ‚ê‚MŠ~“‹¡¤…6è‹gñ©P`ÅÈë ña™yàÍÕ ² 2sxéÑÇñ9æb„ú5&þ,5­»?4þ­¨ŸßÙ‘/.T`J>ã±ý“°ÅhëqÁÁ•’½Ÿadƒ_Àžï)†šwÜåv}ào—2 ó¹?æyC§G–žäÓÐuX¿y¼d<ç6YU>è…ö {E<–[h’EÿZ|T០poå>P÷ˆStkˆkH¥ +9Ì[iS ¹‡puÖ7ßÛR§—ÁÌ“d¶3%º!HiæÀÿlK½”yNÔG©­Rv?3FãÀy‹*4øaHgüFíuÕ°Ú±C«_P/ßsléÆÐ`Ï^žd6„ºØ]^V¼|F¼£ønUˆ·y5º›XýŒ¾ÇAõ¨‹ËOnX0QÏû+ÐN3ónp¸¢€r€ûHx­,y~sÐý!&ôÃ#Àêà_ 3“Ùͤég,e°²˜ÌQx(ÖÆ³¶«>ªYh¸qB@ÄIí —‰Zl³ÇÃ}Ð(kýMÉ{¦† ªIšý6Ôï÷®;˜ü_¨€›%%jóÕ.ÏÏ?QÛmh[BÒð‰ð`+†1ƒM–]ÖºPŠQ»ˆ`«t¾§ªÝäž”v½j¼ñ@WJ›(šHâÒm’²QÇÿ¶¡ vPÑ Ó³⻀†¥z@ Oüí?¨Ûö©¶¿<žÒv;úK¦ÝvÆD¢¾v÷xé5ÛaW¾ïñN€~…@sB:›“"Ð>T¢¤¤GŒ GV'HQ S SÍßÒõTå[ì|ŠA¹P0.Ñ3/úd ?@˜Pv(;²¤¨Qõ¯ˆiRE´„ÈbUK4Ö¤9 nËš£Ú868ܵÂáê)C¶N¡µª¯C0hÓNMèT„\é·³«P.XÑÊÄ©¯+àÿ„ªfÄ] !}m˜Z™N=y!`ÿìÄß}]ø‚ |‰×.p1ýûëA/ý‰GÿšØ|ŒûÔ>Ñr8h^ ªròòIó‚ÂtÁÝtxÍàióSU" ßÄ—æÔE^™9‡5¹î‰vùA¦u¬I(ª VöãAYØÄ76¡êq¥ÂÃçSq r&¾¾!h'¾šn7(´':ÓŽ«·ñÅ¿“é2r»ù¬qÙ¼Bs;ïLƒ¸Å¬0yàxî®(ÇoÛ`â÷ãÜ9‘èáŽEv#và5‡Ò‡µž ü&xš!0^½AGbãY; Îç”âs¯4çsgi …óá{â|è‰Ã 8•¦Šƒºòm øÇÝ•¡òÓºrº'9=&Y‘ز¢½ ÙŽC—¾Ÿøl!»á%v§S,âXghøK©ÅÊx'þ‰|˜íNCLÔúbW•–ÌIÛÝßpŠ+0†Æ:ýT©…¹›4€ºÉWá¬x0eN&\³2¬Þ$³Ázje4g&ÿÜö¯Ðr_$ú´}¥ -ˆRüãBŒéÏ>à ¬QU«>a¯±Ž/M¸4×qëÕÅêF;~ß€ÃÆ8&~C¯I½hlÕ·U¶ˆÎá ´ÓƒlõtO#ê)·­hdâã÷{ùˆŠ ·^_Ç#±xV³kÑ9š#½[ °æ²Æ^ùq—¶bLûdЭY˜ÔÐ2™-nÍÂ=/…Œ«3Tͺʎš:èVèR›Lt+ü©5; g5€(€v…fh5Ftx ò…›Â´/Üú.Îþv)4øì fñé~ñÑuÞ‰`â¦%BíÄ«”";+B¼Ê¹ Í«H}¡ÄÔ/ØÑ’'‰°DP°'èÔ?æ0˜üž¡ãÞ(|{½‰¹w2Žy”ÓÁùuC« š–y–gpv ebVý'Æ:(«ÇÉ™íÕ³d<Ȳ–R{/V’^ÛµÄÐZ?ǨþPzÊJÁ/ D‹C= áo+%œH4ñÝ=W¯upviKír›5ôršÃ>ÁZ¡_¬bk†Š-˜ÒŒß“®×ƒ~©õÈL¾öŽ-?É„±Ô¥å§ ¤f³‘¼ý*®»ýbØ~ŠÞ¨¼ý‡X¯È—-’µLü'¿Öîúš›ƒË©)ýæ!÷ÖÎÊ[§ˆSV¾ú«#ß=êS ´[üê1`3'Hån ñßlú{¬ïí/?·xÄÌŠÐmN®úÏ™læD‡þ:„ìR/BQ ›Á‡|¦`Hí—ÅkMJÑ?¹ßã‚°xÖÁfÍú$š…õ™úOàà‰Ú8!¼¦ã´¯Àn< ü–›îb7äìO:–i3ß/“ŸžÂËäpÍ|8í|¬Ìo£î¨»î%¨»P×½D×]h×= Ñq["ŸqÏшpuCÆ€ã(3)6H<‹_²rRvìjlÈP↸ÎÕ˜bµkùØ\P>ÔŠftËW<£M,Ó¤‹e2è&þ./0ó×ÔUFBú ŽÈædû9žfö¾à1ÿC¿˜ÿÉDÆ¿%)cåyÈ·1h¾Æ  2 /…H0&¬¢JL-3àÉ6C ƒ½Þ%ó®wœ\KÜkRŠ5)ÓkRª×¤lÖzçˆ+æ]ïIò¯i·ðÞ®¼•WÙô©¨þªÿæšó©0úðáI++„ö¯yçÑ ÙŒAâ:bN±ã $Y}cRø}%Ý'¬Í`AÕüWÜGZÉc”Õ°OKÅY¹)íš/ƒPÍVˆdúº÷n7|ÙnF®¶9µÚ· r3?B¸—²4‡é˜¼>‹ñ° rfàV¥Á­]¢äç‚[™ ne·`Ò÷ûÏX.ˆ{„×=ÆÇ(ÏÇôdÁ£ªÚÍ–Ô€-Y.±Í“¬N©\W]{Žg+ø©ZwÕ®sê üéªëSx mÈb8Éáådñ¹ŸÒµh+Èâå\ÄËIN æðžXElX‰Dß­²É÷^Ø ¼`¢ÐïóhLÅ*N—B?«s¬¤ >‰¸>R‘ ŸN*¹‹Õ)]4‡!‹)¨%§øEÈ ³ÞæÄêÓ…3þœªyR™³ …«m[­ì&XM žpÄŵ@ƒÙ´Máð3hmmmEö"Jgs¢‡KS©½äJþx>½jåÓçÔöÌœU­ì­¶—•p{9ÍË^öòÛ»‹ÿ²à^ò {’}]vù˜w÷“¬¯Û± pªˆ½äªøwà-¯-¯¼“~ÂÜK¾hš5˶Y³ó}¯ø[^ÉnùÉé'ÍÖv»]at´uEÓ{=vñaä›Û ªH7ñZ¡µ€s˘j&~9M£ít…÷¹ì¨âäVC;¾œc«Q¤EjP„œlÔ»ÕxǾ6S -? ™-ãÍ“é|î¸>È«'ºùì¥pY‰]B4*ñx~ôêw¿ÌJ5.°ŽD«ü0)¯šŸ ™ ÙfCÄlÈ{¢Œž­Ê§E+3WEŸðùýAsÕ³¡Ðl(2ŠÍ†³¡Ôl(3*̆J³¡ê v}YUm~nµÙPk6Ô±v‘”5ãï¤÷›«èn8ÆNCäß¿™Ý˜‡¥•t°k¢öªúÍ-¯e›#-¯¼a^L?f®‰šåÅ–¸›­(‘Zg¥ÅÊR¹5ËËì_À̬¬”Ïâ«òÔ¦hæhŦpRôGêÒ”³¹€k/§Å$—T^óËwšgî¸ÕL²¢`ñ3äþ Æbºœ¿Ý|枟ûÌ+FÒ|áÎÛÌ«}Wo¼|fñŠœ•ÒûË÷\óQ ½rœôP¦~畳É&Gჲ“EàÙÎÔ3o;W ïØ—S+-ÜÎmmG}ùä»ë£Öõeogv‡«­ŠÖÄñÄÜ­S{ȶhéÞÝf-ÇœÕ Û-›Á*¢•ØðÑjU`µºÖªk}¢ó÷Óç²U:çÝ*é÷ëüÅ(bo—Ø.»lù¬Ñ 7tÌð®@EzÛm9Ú%ëÄç{—ÎÝHƒµÅø›Áry`vð­YcÍÛ0°Ó¸W==Í¥IžŸzµ[èÕS¼0ä šuÖøu¸‚íÄãÜxÎÚ§YyçÔá×õz7xò_æƾ`:«0ÇÕÛ¦HÕÑŠÄ¥â4†xÞÆ¼^©6„ÄÝ— =[¦œè-r§ð/ƒyÜëæºÁìý²hŸÈî` øŸýúìŸñEÝOËþ^´ ¿–h£ ÛD;1Èn‹£û31=³-{ŽEïÄÍi4r>­¼§•,=o›Dß±í”v².sêi%,QŠÝÁ´ƒñ)ÅAv[d–-ÓçñÃZð§m²^1ðù¤\(9Ê%ë¹§Âß"î|DÈux{À©Œ7À>›mÚ§Ù¦Ï@Òêž+iѬ)¾¦J'ä²Y¶\ñ…;úZ^1ÌþôÁŧš•ü¾œíZ1sý€ÿíK› ƾ¼qÞÄ»|ñSÇ]wÇq·wä$>ŸA5¸è7FÆòP·VRdÜ.æ}‚â§n•S d¿ÍoukMD½%‡u5`*ä0ÏÄÅ…L5ò‹æ@:ùòq+sÉÞšîÒCOŸß^û»Ø4ÇÝ›f›æ´f¢‡ôž9=¿Îkx^W ù yØ]÷¨ðñºnº'…Cj^Ìãý\ÐɪkKB4§qL±.¬½îdý4Ù0èÒSçeOhË’N¤"áÓ6 žÖ0èë>4—uçµ£s½Î]gV“˜Õsî‘'0òI=ò„žÕÉÔYí@õH¢Ö©ëh>íÏ”[û#¡NëuIk¦S¬Ùí¹,§æ£&† ZX±kÈV· ú¾MBHÜ+.þ6‡h˜ã•~ó˜ñ\üSÓâžxÝ3‹9¼X1ˆH$ñ7«xXEºç¼êXu·R©Xp-ªZÉ‚±â‰kl¹ãÀZ{§õ¿Ô•1¿éû®ºË]õ^TÝ­«Þ i•îÍþ¼p"ÛäæMÈÍ:8% µÃOîœ"B“ŸM;vŠfΫ RÕÕ!º¹¸jk¯=[7·Ûæ7vgˆÞ&Ýܮȟp¦rßuØë,Àð>7è÷`Ú{5è÷hÐïMÝWðLnã#ÐçÛV-ˆ‘<è®{uÏ€|Ö†Tùñù÷•zãVtj-à O?Kê1Hên‡7¨;-FË4éž1x5¸Â‘äc¡mtÅãÖt¡ó ½T’”ÅÙªƒV/ÖÓ¬A+þ€£Ò%F6dcVMtB-ÑÅŒczÚ†1¼®`¡M4A­äÀ1‚âs‘í8uÑÁˆ»0Á»Õ%QÿIís1¨Á-†ñ¶  qÙ`s¶3 œ­LN¨jª›%èf)6ùnhÊ0 ]Ø%<Œ^!öÚ0„RŒ©¤ Áv‰$ö”B!¢UJ1ô‰;íöÉ,ÖænòÊ,Nc K8¾Ë ׸3o›ÏÒAHg~ηoŒÅJ§~Èá‰v‘·FÛ"U4Ë£nStámÓ•¡ `‘ZeñÐrGS­:¾ÍggÎix“k:?㚨á¸ðƒ£»¸a­0hƒÂ Mm7ûFKb„íŒæR^jöN¼O/Æ”¦¯X«•²Žª›ÁäGÅ¿Z¯h 6›±±ÙŒfÿvA0=—ýÛyÅ3—ývØ¿ñ…ÍþåezÀþÝz€EÇñ…ßóà{©%èö£øØ/ó£HÜõ  Ê @ µ.0‘¡Æ—øF-+ÄÚ˜Ç$«G¦ÇÅxFNâôãB䟒¤˜PÑ_q"qù™šX’ÉÝ)Ì”ù]¢‹r_ em逪]Þ§–¦I5½‰Òê dãÜf1¨æÚÀœv Å™èæbÈtƒ~®ƒÙ[Ñщ#!Å¡–ññ¸ýÌ㲪ðÛ²OiM` !O%Eõ%nl™6Ö¥M„ÿ&>ÿy™hñªtÏXºå^±tË C–n¹S,Ýr‡XºmFï×ÚêËy¥[Qjíe®Öâ(êCHS-âYQæüæ‚-PI¹1B1–°$S*ç{ZË’¸vNé¼'<Õj©»ò2T^¡+/ÓH¦b6’që ?Wlݧu…«Ê¬ÏAWø¢yÁxѺ=oÌ¿0  ±BœÝªÌöÌ£'<Õ&zÂÒŒ=a%ïh5…/Z*{£Ìº ¬{™ ¿Œ’üß%6r(É”ü1ÿùŽ+Lñ\ü0Åø¡eÊXÜ«^äpÓd¹å'×-˜Èdøz{5Á—æyª®Cy΀òT¹)O5(O¦<ÕšòÔ¤PÍó¬vUÍ˪ó£¡êÕîªkQu®ºVW]—º¬vïÈóÀHI Lg©f¸lLL–Ýh®Ü~'†ÑÉ ‡­ÈR8y¿c¯ :öÊë1ÇÛ?úë`ŽEš|œ”Wõµ ²÷© ýéA—E@ÉK鲈µL„ËÅ%’­6U$‘L(ÃEï"‹Hĉm^uõ|VÌ 2¥hÄÿÖÙ¦.Sì«É«.ûjmê¶am¬½ej4Ùÿ ö¨´@? >w2ZÖǶ\z>^.ãZý?®ÔÿO± 1¦uè£J¹ÀQu°Õ“­6‚äeϾ$ ÎåÚ‹åÚ§–k¯Z®}.Z`'SýÚÜxîÔf¥„UŸ}ÅÀ=ÁÕ´ÿ•OÇÖ<Ɔò'Ø/W£hìÉVM;¼Ëyúô”ô©)¹ š ÞôWÊÔ¶Ÿäe¶Ÿ< »d¿löhRJÿTú‡”Æ·ý$/³ýäa–t¶=„¶‡ó´ýD5>ì¢cNû‰S–pÛOÚÁ«ót¸í'<°ŸdMݪ\òéÚO¯f`>æQ„¤``ê¶:ÜVòí}o‡Üt–×OJÏM s³lòeUß]¦{~Tj-WúI6cBÔ³íµ<Èû“ûµð9GΗ )iŒGò DβÓcØŸ*ˆ,/³ïå- ¿cNú;ú;¡é︢¿®Q˜]ùÊ|ôèCoļØI(—’hŸ·`&ìøWùxà ñw$™pÌ/¥ðÍÎaE»ñRΈÝê‘yýæ°Î]Æü"Y´OCì\ç©ÿJ#ï·ž?ÆÚ¼ ÍíN(n7ˆ$Nã.¢ŽX»AgúâÁ‘çw|pÄŽAã*©Uæš´£•\¡]Îh¥Â—T´’G®hĬÖx„]žú8Ñ]—î‹YÆ#QÆì¢“ˆF¼¸é¡7³=§òo`F’K|t ñ¢¸D*q±åˆDĸ |å¡:HÎHÄ>D"^Ü&ü½»7F-4z\0|‰˜äHDrë]-~âHÄD"¾Ÿ%úуHDÙlYC .XVêœÑlWD¤*± f¹€•VÁRS-#«e$â —}´œÎ(1*æOY:8pP-iΦ7æ—[‡Šù£ŠÍó©dìŸ+Òq®ó›žó\_ĈhÄh´£["ÆU2òÁ]§ñšvÌŸ*˸Ä#bå9ƒÛ¤^´ÆEã¬íI4Ú3h%õ9ØNÿ$àdûË´“:Í€:ÍæÙö™EŸfݼÉõÿÑ—’‡T» ÄÿõàK¦ ›Gò0TW‰ÿû’Gl.c¾r²øÿ÷åï4þÏ~wìëÇÿÙ!LIo¢³j•ñ3iŠÎwW¨Íá…ÊþÝטÁ)ÐæðÐr¹Øüšßô+Ò“ÃL¼½šÛ4–ëhrHú‰²¡Gò&OŽü ƒÚµTÞ–Ô’~RKú)-éjIHKúÃZÒ¤?xuI_Æ róü./k!l_ÇW« µ[UÙÀ#9“?'ÿùeÅ¿‹55ŸÇ“aýò…œŒI£ÿñ¦ I£‹'þ—¢Å“FA[0Nǽr‰'MÀHÏ­]”4¬ÀÚh.5zý-vÖèÖ}rΟš4ãHÜÜЬыgNàÆ.€n€^€~€$À À0À(À8À€i€d¦ŽQÖhož5ºýÖ\G2o½HØ 7ÿ«e”>Ì4©4I¶ÍÙÓKRœ=Ýl[±:ÅñŠè©,ÓaGòb»]­¹îÓq±åÜZQi½pÑ'?/ǧ/ú¥D4I-DXùŽ¡R&Ð!¥€Å/¢çõøeLSaÛʆ” =ߑҡçx B"AFÊ);Mý=´ ƒ[i5î£i¹–Î)qcHì.üÒˆ_¨g!÷˜®Hb$Řöª1£gÕ<¦K §{$¾i$ï»À# ¹G2‚QjµG²¿Ä푌§¤w@äÜWI»¿eçá:IQØË‘öŬëRÆîqµîqÅ€î±ä*ÄFÊ™öëÍê¥2¨ZV¥ª6À:d̪,I¥àÞªÍ*ëÁYñ=÷2t†2‹AïB ¢ËšÑH„¸ç]!¹ãð9qô‹Sœ» sŠÃhÅQ¸ð$8Œ>ŒQÛuù¢Y×m£þ7¼1ï:·Â¹â šÃ¸²Ã°³$Cþ‘™sO¢` q×OpæÜE9 -}æ3ýn'‡1 3¹”ñ¯•ÃxÖnŒ·tLÃ]rŠ˜Ãø+p˜)g>]Ûº;”Y ²,À¡ËZQÑbDé I%Ÿ“6‚~‰¾ug4¡ çHJ´jõ¨ÍfÈËu®±nÓ—KOúry)sFäÅDÛ¬¤hš*tŠÿÕâŸÒ”‰ÿñ¿Vü—ZWfyœúBΚOôöB4º#¤ßžN£“ Ñ®_Ó;cxg?MtG‚% ±£†örq í\êÕ¤œ=fÔCüÀšZ>'-ÜPHñrÔ€ë¥Êޚʓ é¾I‘nØxýHrI9QßÜÈ”sFTŠôôiI¤OËb{o¤iA±°HË´ªÖ¤Õÿ«i=ÓJÿ%â­J˜Y[^kóo|ZD$¢/wÁDqq¬qùÐj m!R‘|½pWÔ¢ù‰Ëßýâí›gÒDóË[ú<[°VŸnùaô<òù|*ždÑü²¸D¦u’øY4ïƒhÞ§“Qía’¡í¤>Ù­ÃYÀrú¾Õþ™Ý7’áA~ãJÇð¿¾%zn}ôuô“2‡(„Eù>ˆòq-ÊSáv)ÊKù]½_¿z%QÉr-u¥iQ4”\Ó)™^ Æ•ÓÉ1Ç+ÇÔNµbd@òb§’{+„áRǼ7r²°ø_-þKÄÿÚ²ÂÉJë/ÏÙ¬xÞsü£ ™ÒMsŒÞ&¥c6x-ŸüÀc×s®¥q¬¥‰}\-§ ½œò±=VK¬‡%«›¨Åî”…%Ù8ØÕV†àG¬¿˜^%”æn3Uü*uämë‚cÛ’å“øéLcL±‘¿½p|ð¬îÄo#7dܺêíÆ˜¾Mè­kBm]÷bë×[ÏPÛOF˜¬2E+;)˜±âãzèƒl¦£è¨b: Žþ^QxÝ…““P‹)NÒÎß3Ùj\×¹¼æòA‚c¶îA¿¦E¿&_0\ þ©ðì­ÑE6]Œ¬Æ©øÑ…:ÆÅ«Þ0çªe©øÏD6nqÏgBÕ«èÄl(³[²÷³Nö~ìý¼jbN±÷󚽟¾þìý„•‘£×…½oûˆGÂÈçǘ<-ÁÞ_?b¾ý@üP7Æ4r^ÓÈù4ö~ÎM#Á›…Ôk舋dþ÷y²?Oæ}Ž€Ågâ·f¯\™¢"Îo ˆ³7Ÿ‹8 ˆsŸ}ç$Š8ûø,çM:‹˜¹|¶â-<çÇs£xnY¾]§¨ÎÎ1KêøÇµ¥u¼ê½ÈÕ°Nœ©R­åxŠŽzMëñ‹>º¿sÖÖÿ u–éØÐ ãÝI>¾[ă‡ÙE¨Çœ¥8y6®‘âAó³šg–êÃ<®Ó5Gz.Uc~—{¦ß(¸šn{ ·UPUÍŠÊ:8”ÖvÍ ÜÖ‹èY.9!„|@¯£ªÆNÜ7$¬\1¢Ã46ðkéGõÚªp’,ÏîÅŽcÀøkgo\Îe6ª$jÀ¿È@?ÒØÐ}5ËsÑ™°Z¦§)Dè%³ÜE$’!ËÝ¢ŽþœêÎÐÊè4'ÿœÉ.ñœò9ó?éQÚs„JžäióÃvª¥c+¾,—î߆/Lbðk€3Û$ÎÐ}Û—Ñ÷ö{ u(*‹ˆŒA‘:Pj·Ðúø»o䓉٘üiVšFÿ+Æà&ë9öÑI´)?.áè3S„Öë)—ð <·KÔ<áÏåR^àr’@ư<°ÁÆò¿õç*ßÿ¨ÎjHʬ†È’BoÂì×ãN™Õp'îƵ\a–+S*jc2„0lÆrÎgAX@$~O/N Ñ '„ ¦ùŠLE1ÂW’¸2ÊWR¸2†BÛt7\­LcH—Õúé§‘Û#óÅ'1ŒýR”Ð çÎ\^8^ cWüF¯FºoU.ã –†$C@I,†±4$±Á’XŒâNI,ÆdŠuzÛÇ™†‘Ú˜|ëKéÿQkîŒ5˜ ±FsW¬ÞlÜ3X+–ñèçmÉ[é;öLÏ)B*„–”|öó²$‘/kjw ×´¨×½A̪Œ©æ‹BΣ_d\99BÅÇÄ m• <âºå ܾI6ÅQû¿ÔÍ­—½˜2¬}·Ê4H^x'qã”)Þ€™‡½@8cв¤É;%ø\–í3Ôkت8nJªâ¾¤^Ù+ÞéûÀÔõRÇ礊ë73°œôˆd,@Æ×82]±càIW=‡S ÃÑvø”äû­þ-Kì“\nˆ@RfȺãYö%ænäXØN‡Ñ™:cþÈ£îB%JlÑo(‡Ž˜Ã¹~F}®#ã÷d •œ,WþT6ùçÌÙ3H8t¬=ÓßžérdS…ä.•BÒä‰×WPS~%1WÑÙM²ðÏ»±‚•Tñ'&h4=üMñÊJºáÔâˆ}‡Šq æ(¢–E_G¨!ó(ç ƒ}”Ūԣãôb\ú…¸¸HÉàs´_£Go¬¹Ã®ÃᯜÎx¬Ø ®Sê‰Î¬Éá²+¸ì‡#¾ýi®ù‘OÝñô6ÝÊëÁŸEÇ<3².§¬¡.‡¦²¦h†Ä:-ë´P¬ÓðžA·c4~'Ù)ƯAŒß.1~¤!—ƒ/¬ì\ëÿ1ÙqúŒ<}§ûåé~¬¶¤Éž~¦÷ hä?¼ÛbÀ:9ä#¦¿me÷ ª_‘¦KñÞëO¾é7ZR ßk[Ù#¯“šÓcÈb~%|,Žm8 PÙh!ì"H‰RÅ5§|³ <ˆ?<¯?'¨ÝB L=Y†KIJçâ« ³ ¥*Äaܨ%Ò0Ü…©}˜zƒÒÀ³ÒÀQI›ìV ×»=|Ê&­¿Ä©#²åíFgyç¶wYsÊÃPeuÓ«ùb®m©¾y¤9°ÏŽ*«vÄLнÏCBÙ$õíŒÒµÛ©£ÒV~ó­c2!!MAŸY’Å»ºàÇy6¦îr`ê&Ë/lG¯d”÷¨ãµ²K•Ù~õ„Ì91t(Šª˜1Ü•….Opüw ™IÊÅó½¼~€@!Àj€"€µë**ª¶ÜP°`'À.€&€V€8i™Úäg†Í(fÀ:ð©óÈá$Åh98!ºËoy3É!å¹N¬#*&Ú÷TŽ¡–W¹ ¬fÞzîêh ÝÔÀÿœxŠ£Êò!‘éÏÜ­ðtb5±ï¦d{C‡¤6¥Àº/[¢€œ´8qóÑ€^£08Žž¬÷ø§{yC©ôÙ…n'|¼¤ÏøøÌò©x3!ÏûÏĘñ1Ò$€4³>^®Ô8›óÙEVçÑ‘ËÀ(˜%¥å•U¹L'¸bçû„tLGI±Aï*e®6Š>Yúr a"9ŸÃ¨Ëø4Å?£’÷bŠ™  ¾¯¤ô‡÷µ>"ZrÊŒ…b©akVX/ÏUƒ 0 ‚Â4˜4îEâ¿DüC_/i$ÿñŽ» ßîx­"Õl?câ—â:*f-³¿ì&qÎ*’‡ªn‰ÞX(Þ¿9:Vñ‹/.E_n¹"ÞD®Jn›sŠÙé6dÚö \[ìÓc>#]ÙúÈÙb›L]]i†`9)_ìñNñ¸*–Í ôqñƒúÆâ–O½5úqôtñÅ話HÏ8€r¼ÆjžŸ/ ¶äŠÅ±qëî÷cx¥ºzO€.~œ­ý³°Ì‚¿òµ²_,†²“Á–Öl6<ðÄ–Úb™¬­‚vP­Ž,F×°u)û^‹¸PL­ž\Ê\±÷4¿o‡O¿IPõé÷Õcíí"’ âU6N.õ*ó4»¸ìBÃôª]h¸ Ó«èŠX¡;ôª&ù*ñdOV/¯õ+ëÅr¨wš+oó'Çñ6WJ£7›+*.+K±õoûTÞXV,ÉÝ(› ¶x±~jxÁÇz¸Á²ƒ-Ó¢{-Ÿö4sKÉBœÎõ¢X‘Äg’´ ËÇŠÇ*L¥@ñBØô0Ón‚á@I0ä„×»yµ§ÔÛ­cΓŒÊ’ËõŸNñZàUü‚­„_\v®Ü{ q9ÞNÁyYóægÝ+—þÒ+)FºŽ!%e¨ ŸÊ°tªTÏò.JÃÕ’zôÑ!æÐ_‘Ë’‰F6-z"»sÇâ=aâ ž"²“lߨ|»u·Ã}9ŽÞÜKÕ®ÔµÌ&¶²˜Š,`"$L€^P®—â5­|ÆäßxíÍXîl‘IØR€b® Ä\Y~ÀM¬+ Rƒ{‹Ï_¹rh»Íþjo%RÏ‘¬ÊxCâäæ_rsPRõ¤sÁ‹#Ñ¢ °_3À5š®ÊÈ+÷H^…6ïk#v$òÓª5Ë•S…µï 'ï{p»¢Ó’gy쬋q%ÎGŸ È¥©˜žg.û\ pÿvE“äø§g¯Êu€ªanVµ@6+¬zVE,õ5qÄŠ1ª±»ºfŽUgu¹¼´·çšSD8—ç5‰¨Ç-;¤®#»ðc#@@         00000`ÌÌ~~€@|[ø3Å\É‘{ê×>-HÅú\ò)žÄùæÏ<Á–åDQÿhãÖàÞ’KW®ô½‚/¬H²2ˆ&ðÇÑM>dž©#ã;\ ¹ß#Àw±µÉu ãg¹¾äóÅ»`Një`UˆÜÖ¶ò ð¿NlÚö®ç6m™äa¡M\ï² °Z~« ¹ljÍ*ñCµB²ñ[\†± ¶[?öÖ{—®,TÁ‘Hl ýH%Æ‹ˆ†„Æ«ºÍ$ÆŸ‘ÇPá[)¼Øo=x»‡üøüìÖè§[‚ñ‹tÛŠѹ¨Ô«Sʽ)±g÷€ÏIB4ˆ›ís‘¬ ¢ú/t@1ƒâ ˜Ôò¤³ã7ìrü –£ö+\j½„>êĽ ŽM˜ir à|O¤w*‘*HU?+µ¤‚ñ ½ºÖ“K7bFèàÕâwÈW·È†'ð¶Þv­µb©Z¸3Ž;§qg»×~T{ÒíÍb¯}”Uµt3Y(}+ M,C4à}Y—óDóQoô”Ø«À pKo4¿ìÝ7½wZ4÷nÙ}Îþ>ê'c5xS+G})?»Ð5›MrŒ‚{?tæ¯é•Ï÷â“h’î’“Ü[ £¥Äëáz”ø÷Ç'‹OÆ ÁŒÝPöJC޵öFÖŒz¨¯ú·gº1l,Ð_©-qb•*97ψãC…p¿°Äñ‹9´Ñ$ÌéU|ë À,ÀÀ<€fàðVq뻨ÅBrÆ<ª8Vþ#Mh!Ð hè…A—ÂŒM…a¼d5€ PP° `@¹|3 $Ì¢UÜf Þ· `@9@@%¯ZÅ]ªÆãÛp­à~€Z€:€í;êvt¢Í„¯&2é¢áý¸¡     —_‡‘®ÄHWa¤«1bÛjذ >,Y+R@F«4ÖgÆÃÊÔÿÇ*ÿk>é©¿Q,îãžæ³žÝ’~R>æŠHߘ×vòöªlê‚ëLJB 5£^'ý†­ÝÒ:]+ØÓÏ ž`ŸA1²ãxH|¼è@ô¸çµèéì¤Ù*:Û:<7é÷»%ýhþÔ³û#ö¿;$_BOG;¼å7ÂëÁKœ¥'Š#âb臣dBç£ùÊÓ#ä¾G?Xž(Ž‚{7 úC^­ô¾ÑBNýIöеe5ÐÝõ÷þyoÕu Ï™‰12²=8²-Çr;IQPÒ()$$‘ËŽœÐTNHªÛЖ´¸! }+RÚÈFDRÂÉ™1Jª¤¸ÕmÉ-÷–ÜÈÆm•Û2Öñe ƒ°ÁÁ6qFÛ²C02z÷³žµÏ9# Çýzÿ¼?àhföÙk¯½öú^!?¹ §á´3N¹¸´ŠAÅ—¹ø· ÙG‘8%ãkmý¸ÏPÀ=à<’cÊQw·sÄûôi÷ÖÑ/KþÄ~YR…õsEþ8ðN‡Š˜tÛ)¼rLÖüE诸2RñÝ‚¹¯ùØ‘í‘Ù$ TyÞüþ@ —«»ÛZQ¾±1è0$ü«eB²°ì“dÇ» 3…'j5ùÙ8¸Kž­A·õí¤¬Êñ„¸t“¸t“¸ “- vÎçÑ•É)å24îíÍÑY<Èn¢7pa;œš 3ɱp®éð”åáîæáîæáÎòpgy¸»åp›EgèZ¼¨¬þ¯êò³rð-r ò-9ý=<ý{Í Šý¸†#$i;ß.ŸdNéP$y”BŠSŽ”Ko 1 š™¥|Mè!MÈ MÀfJñrù$½„)üÓÏ¥÷Zö¬ ŽcƦŸ‘¨±, s·fHÓœ~{®-Ÿ2}øbÐʲׄ9’Nö×ÅþšÙ_;ûk<Ó쨟Ö[ap)»YÆÇrîR–›°‚;ºoTï’¢ŸCáB›^ ¨¯’ŽÆ® ø¥.ÞÂݼ…»y ÷ðî’[\{_EP_5©÷O¼@ÓSW¦Icu!UWð؆ÎÓDä:vó®O3 >ºÈ·¤ŠÔÍ3.È5VÏ|®Ê“ö JÿÕp²â5 LçfóçÜ,§op>±ù1Ñ_ÇžÔ]mì·[ÆÑŠs»äTz<‰j’äÁ‹#K:‡bݲœÜfMq}gÌã¹’7™áqºÌí„c% _q^Å¥qdÓºc’ÿ¹ù½OæÐ ó:­s{¤ãÔ–çßLï²âîL3]AL÷Ø*-$—Û5ËK1Y¡Ãö …Ê5YPmëÇE±¿íÊ¿P ëû޾Ü1—´5©žr^ù'y)šwÞ˜KÞÍ?IyE#IEO(û`Úz©Ã2utŸ«ï'qmŠ+–´Kǹ2q6¥sAáæoD#öþÖ'@^ÚEwÒk'YrÁ‚6KZ`Ö•R©Jœ^_»-{FF'™~ìžusϰûœƒ–ÒÜ^RÆ>î 6ì‚sÎ\öØ-óÀs—@Àn·§RÛ7wÛ¬Wz³´s#òîSð ÂêÇ~tÀ<µ{«ý€Þ¯¸—4ѧïˆ+Ã[úÙoˆ›ƒ¼~c_j óöº±ó‡¶<½ËÁõ¬»Þ¶½LGmÛ]f€È9»œæ=@¡m4aµ°FßàžÍ\“•=$áXÎÃß"¼D”–-Ûú!~-!¯±INwŒ¯ˆovzyEfœº]ñpüm•Í@’F² [KÈH)—ÑãO«‡ÓÚè³@9Àf™–£dÍ#=ã+½|¥à³@íŠófý=™v¿j¨êã«Zˆ”*%þ“¹¦Ñm‘Ô¶ŠÙ»³õeOÇg%‡:©ôò¦¤ tÒÒeMsÖÅVB®-A´¹üÕ};˜•_Ðѳ—ö1í(I°m࣌ý I)1gðØ_—J èåA9²ÛÍKñ ~W’„¿Ì‡Pš_Œ]뾜;XA¸Fyñ™ý©Žj¦.¨ô_Ìp“+uS0ntÁ@*÷qª"äý  |6畇  ü ÅX¤HÅ•`˜ßœ¸¼_þ`)Å|ÎÍŽì¥V­[²‡ÁB6džY¥~ù7«h¶ê2 ïŸÇ»¸®ðÀý¢Ö­&‰MâôS2™G„À<ñ§™P '”Fmø8uç|« 1P \Mæ—ͬØí^M} UfB….ç IÅ ·½Ùaöº„½Sמ¬ì·û˜¡Ràö .ƒÍËÿÌüø²sÊPZ~+›TývëúÕÉTBeTúkb7Q€ÞeIÚEðŒ׳+¶g)x k¶pÞ¶(·JNh/ï¹`ÅÂ:øÉ¸O”Í*G¨;´×Ên—Á†f¥‡¯)¾ñÏøŸôÄ…aXð.õ´²˜W=ªµ´×a飜ê+zq!¹ìNœíŽˆx;·]ÙˆvY‚3ãŒÌCFDohïVsF›ÿL! IR)ÌDJe ˜éc^<šOÍ¥B´Yvmcêr®t¥]©¹f‰tÖ ‘¦²Aïù¼Î qìuå ÈvvyPéXø–‡<Ä”<«[‰¸³k,ÖÁÒ“%- ¸,÷‚a „7åÞÚ °¥™7¶©'Š×W•ë@Š_#3j9c©g;©g6¢Û½.pæ@,ÛwYõÅb°qÛò ”›cXÄ‘žX ÔP@mfGøÅHéz иo泂r{¦7f)ÊR š[cz lˆÊà«͆p>æÒ/'Ù¶«ÌX,Í<úù–;Úv”)› 2ð Y¹yÈßÝgóûÌJ0Ÿ/´è×é‰uDÝóNÁ¼œÇL·sÌïJÖ˜Åüµæ¯Pß½ä­Aå4õƲ«7îÿsê·>äøÐ]ÉýÔ«í^ö7hÏóá˜?ŒlWWL÷uÈüQ5À+}5_ZMyhehï–óu{q^+¾8—ñn`«eüµdeu&#C˜œÕßv’PA¿Æ×ȃúr B}9ÎÊ q©hQ ´ Í\N}ÌêëŽúè4€p”X >¨‹ücXk³KnóÚ}Š…5Ä¥ù|,äƒZuS],@ÃGœ'ÜÇ5½”wÛéW]Ì—@™Ýªrza¤T$fYµz" —Zÿ&&FnlÛös>~W5Ÿ`ÃpÔLÕ6Í~GÍÒÃ{ ŹNö1ËÑa;†á›: —sä֘Ϭ€é îücŠS3’¬°ÄÖ=â<æó2êèoþ´ç÷4åf•.–±‹~Î^C åJ_a~Z0Ð<£0rn|bä·åvõT¢KÏÿOôÞ.]»2H+14ÎìÍ_z$o «P¡¶ÓG`½Òåì æOÄséN¯==Ž=nÏö!ÇèÇ øíõ< ù§HöâîqÔ7â™äÁ@ 3ÍõˆòõM ¼ÑÃÍ©¥bu±ÜFûº(VA1¬wì1•íx.ã*›ÜÑçbÄ ÐrJ6{—{´êœ{ÀP3á_­~²« ‹Õ|oÿ¯·&¬~ì.å!N_Ù¡þ=þü@¥ÜúEÊðø=§ßÛšX0Ú|U†ß}ðb¡tl<ÈßZI6{>%ãZËÂÀœ¯ª^Q‡%£™u¤L`rÇ“Y­ÉVX7»üë»K~|áæÇù‘‚‰á5RÛjf½óûw$̵‰q;&Rw]uyŽ9¨8*Ø6×fÝ™QÜwOñ$u’#m§èÿpúÖßÿ‡¯'Ü'Ú^„+6Þ0Lý]N¸Î^°à,¥9MªÜW²¼?*X=Ÿ§OÖN¬îÊŒÉéƒÉŠG½ÀpÚÇ›QâÍÿ¤ã/ˆVŽÝ ÑJ‘cŒ¯†^ÚYðTªc¨lÊm}Æ¿Ê7Yê&<lyw,Po•-ãíŽù=iº9½1¶2t ­µmý¿¾§mÂQ*9âuU´”@O·*©3•ÏgÁõwsýeýq”¹™=N›h2.Gñ³´IÈàÉLá~âøGN\tlYj êÅÅÈg–YpæÊàN^Œ¡õ7£ä(zãaÁ_no{Ÿi2’À²Ì!8b¸ML½“nã¯5‹ÌíD‹v«Òíò™\ª\Oª)Çéðƒr¦ÖGSޏ——qgG-+0„…ƸÐDˆR4ÆCèê^‚_³àXl[™“º˜gï½8”'¢NýX"Œð-èö'þ½¾Gæ% dK FuõgCñÙjÉEZµ³Õº_/4]«ulÕ¤ Ë÷gIë&˰T5—òQÉ“PÁƒ$ùòP×m‚¬‡ 9í[‡ì@ÃÜÈyŽ9¯;¯:{íQÙmæë>©ê΢û—¤¶¼-µåÓãÚqÓqžÄBGœ5ƒ“˜8§{EòÔcŒ*šx4ºYÔ 2Á=KY‘Ã}BÖÒ#k ´‡ù©S?QÙÐÅOj½{¤²>Ì ü­9â´³ƒtw6òÅû8J „N9O¹ óè@à¥Á­äš€öˆíåâ߀@&„•nHOY8KAq£Ë"ú“fB+ÓWBIõÉ„^~êQ)™Ÿ4ΠÀOœ¸Ÿ8Æ&~’m®~ÚÀ–›ù©‹Ÿz£mVÊOùikH£2 ŽrsÔJî½™3ÄA€¤êUóÛºhV†©—{N…«£S.sÒ‰;›!DÉû¹CUc¢u_Ê¿ ŒÒ¸žpïCÒ–1ÛÓ+J¨µŒÊ&qÂï>{.—¼×ˆ>g’`Špøv%p«ý“«ü‘,¢‚r²ÉKQ•Ým¾Ä–ž=ÁEeÑû_£ a7£Uí0‹ÇÊÜîšñø”¶Þuà [¢Jî[ùs;Gî^»uܬ,·`Ù5–’wr–Øü¹jÙì¥êHL X@ÔjjºÙv#Ûn"5À†Ë:ïöezØâ>¶èe‹­á}æCØ®‚|üÝ™þ¨0œ»ªF¹;#si5‡ÆÙç¾lè­ìà{>ÿ|,¦Ê,C¬¢Ö. øÎ»Ä\-…(…×n¡ 1®Ý6ŸáZÖù¯¬ã+Ë9÷“ÜÌå|muÑ!¯µ\þJ­?9.6™eþxcoÂ^!L³£@<‹Ï÷¥â|c®›*ø¦LÜfH‰Pþ¯ èŽ²ÔÆ3ºA´ñÔ¾ÃÞ¶Â|©DŽé#½NÈh/—âO«KeÅkøuN:I™aLnL¥j±ø¯ƒ¯±ˆ_vc»$kÂw VùJ¿ñw:¿óƒž¾žwSyPHC.}¯ó”¡£g:~ õgµ;îüµ#í·/úâ¯5ßÖéìHÆÂw¥÷kž ,SJÈI}I4`YÓ1IP b‡òã¹ä¿s>Ò–‡^pÄz„Eû•Bï¢åÀG}<íkNðך{'1TBC8÷hÌ'©rÏ6âü‰X.¹Î ‹,A l<“¡´ †îv L >Ï—&Ýz‰nÂjAÅÅÓÝž©'¡îΔÇSœ—É•TFYÿ”ûŽp§jyÑþŠ;süÛ1¾a^ÌH«¸lèžU%…oÆq(æÚÇý>¼®,®Wáš{!—þŽù8‡¯†ÃÉzê.놛—*×l.ÖµJ˜÷ð2®•ùjz8åq–\îEïøŠ Úý´¼ÞÿtDP7îú™à~§oîV•Ψ¯V•ž®ô_KG5"ÔEnÔæ÷¨½Jh{Kë®’{_åIùý¥hÜz•Äe©èÔN'¦V:1I»±]ÿUa¿²WÉÝ‚/5ŸŠuR¸”Í#W‡ÅâWó®º:b×\¦º(Û.Ík¯û‚Õ]Mwѫý#è§p›·²y›·³÷Ö¢Þ V¸“ÍûÑ  Û¾ÌN¾Œ/í?kÚ>n†\¼yÅÈh®LÂ%A%X’1 IJq†1”]#pNó½ß+çX×Ð)LTř»w—N“µ^äÓy¡¯=Ý4)~B.œã%KwÍÃuŽˆ‰ã%ËñÁ@Ú.o™šãùi9¿Söå§3ðcäyZÁŸ–ròpø·wÜyÑÖŸ¼e͈™úÀ”ä]!„;9¥:%<×|×Îæ$!W´mG¹u²îÈmƒí9ÞøŽáYõû`Š {8H¦o飩ü„éÝcǤÇýÄÌàÉš¬î"Ü|†8ï‚ÿBAI°¾€gjýÏ µ>~ôøPgמþxRtS£‘@t»h¥ "àNuD ÁoÇ/Œù‹L3¿æŠýU>]×6~ìæC¿x&_+Ë| ONÄÆˆoó8Ö:¦†®Ise£º#£²d=>t|(²vgÓ[Ž Y{zœç³(þÃëígîÚÈÞy‰m¸W­‘„ˆ¾ì¾šúI*õ“˜$΂üªrsO¬±‡°5ðóÛñxªãKŒÅ‹ðΓg»M¹kfV&Lï3R?¹T{Xu™ôn7C‹ŸáúmÈ(ð‘²PYôñ ò穟ÜfþÍU–³`»éjÄYuÊN4K7˶ßÏü25ˆ‹ÅÝvJ·oÞa';ìÔñ¶‡ç…—è@YË2JX]Ž ˆxb|ô!5Æ¥ TÅ€ý£âÖ¿Ö‘HµOD„þvÓKÒO®ßM*‰Ä2š\æ4™L(àT>ÃÕ³‹?”CðI›Ù»…ª1g»{$?q;& W3¹ÙKvk‚r†›iF«†k¹‡¦ÅÚÕ{,Ö.ßófX+œkÞ kÂXÛ0-IؾÞ@rHÂŒák«Ÿ,\34>1< ‚Âeø+ö_%½˜J‹¡d.ëd”^vÇ,”^†Ï¨¡˜»JéÇ_-ÅPšŸÿy,WòBc¹Õcæçÿ%,„6ÞE¢™tK§ (ãÓ³DkOK~¢& &o!y†s ¸•Xj[²D<©³™1]¤Ò3³Îa 9&Ëc}Í7.L<\Ñ´Võö¨Nê‡WBb™#f„x#ÝAè^|#B\ëw%ïõº’ƒÞÓeûÙU†®NŠþ-N®PÓ+IÀËTtdÄÖi6Àôoßs‡ï(!ÝHÔa% 0Ê÷—q•g"ªß£iéIáicl£ÄeèF\b|C´. àÇf÷ŸþTÂ=âìNmûÖ×ß›ˆ¸‹Š¼,øs¼O÷œ3ä†05uEqÀéþ?†Ó}x^hÿ×Û³°4ÝKsi7ÿlIÕÁ󫤶UϺðÁÏ!ûÚâ²LÉ<7ùcF0eè‘?…ñÒ…&ÁIÕªòî>ȺGéÁq’–{#úåþyRYù˜Ü"·?^V‚X™Ô¶š’knÁ¨½ãô‚?*Ö¿ª¤ðåÃâž„ÏS—‹ÛcŸ¹ôÝ÷‹ ëQ#Ù(õÆTY`†œÞMwQ!a g6¾Þ–/ &‡iSuS.Àk`Ð:Öî]e.AÁÂÝgÏ»°!)—ûŽÔ–«Œ4—öŸ°\äG€êíQUÚ‚J4èÐØV8ôX…âB#$.Y‚’d;¶ Öõ¿rDvPSK4ÀW‘S^­XK `²“Ù]m;âÀ`Øæ˜<æüÔûbÁýa˜Lê*¾V;ùÜçÇóÏ•ª3¢ù¸ žª ˜·×‚[9õ*¹E£by°—d!Ùd+S»øáNؼ¨ hÐiÿ—,{§®KÒëø§<}¯i]öÊÆ¥¹øÞX{ÅBAÞdI×?uboØÔñøªK ™ÇÇmýà~ÂW”¯]YóãÍ3 QÓÂ}­øwe³öÈ!I­ÿs¤ðï¸E3&Zí'ZUøhU!hõd/0´ÓÚCjçR»píNPÔ·š‘ÀÐߨTúûƒÖO¼/áæÛ^q䜧Ú%4ù=øöPW‘Ús³¤UWfÌ ,˜'ÈX€Võ²ûúÙ§ÄÅŠ!Q½2Ò°GÝòwÛ§ù:/Û —GïHë•ÓšeŸGW’¶±Xj}+1bÐÇ|æäδ‘Rærux¹þž|”Ë õ$U·a¥ö—+òæ9y±¯OÑÕ#3ýìI¹÷Ä8bøÇá7ªÇwmAì$í€Ý{k=J?Á&SØ–lqÚ÷5;6#5„7Ê8¾þó~t17+] Í»¼þn°U…=Ž;ñó9˜ÞåÌì¯c¨:ó'bª5…gÝ0èV­–¬™‘'¾â©–v‰µÇNoß#Ip~ê>e!T¸½”|¤«¾ÑúÛ²ú™R )F¾©ð®F‰`³×uRY ø,˜¥xªß•@'GåkXí…„¢È:<1ÇKfÇ»™Œ¼#aÙ íàÿL¶Å. W„W¦óPþùÒ\Å!w÷qÊiVÆBzC]t†û›äÛ¯_g8ÿ†L£\gÏɱïS<”Gï†VIbµ¥|ŽœìOœÄöèÀ΀3t,)”¸f8£z@¯[Wbùy¨;Î Vwíh{Þéx:ÕÑ-^èGÃá–8òyû„`”üUÛ] «‘µââ·9ø„Œ[Õ|oŽÃ`GxËUóLÍãºç±M ¯AÃTðñ²Ý iffÿ®…TTClZ¿cE`1‚©Ÿ«ýPÂ\³ÀÊs¤$Vâ}RIÊØYä]϶‹ßH ©8i¥³.™ÂÈÕ˜'G:9_ˆíHj|"R,›d{Žã/œgªškoòÉv“ô4HzÏ#j/J9Yæ¸Bí"ќ˂Ýp—[¬Æ6U¤¸M9lôŽ\žiŽW®˜› ä4zRóg4Î¥šÁÒÁK?e "ȸààªY)ûùÈG ™JÿB«dËý.—þ)oÂe>d0±‘O@>&•Q1ñö=8ô΀£ÛùpÕÏàx»âpŒGêx·|))䀅~ï ÷¬¿aY™Ez\ùK% êŒF°¶;–ñUr7à¿= o¿ŽHµ/‘´r…ýò«ûú´BIì"ú@~:ûô~±o¬E²µ%¶÷­E²¼X§úä·i-‚hh-‚•¤ŸÓ7¥ñç:¬ÇÉïœ 0µ›uŠÜc¡yJm×öÔçj¥E>H°A-(d,æC†µ,¢ÚÞµ3ùÔMdn×_2Ü-¼s¼nû˜ç‹øýéºË’dóª€/2¯ï*ÄÔ\|¼î™1ßž].‰ÁŒˆ.Šƒ±æJLÿhÞ@ñéÚñgö”’mýñ[Ö «ø{¼ihìãõšh*â+q`ÆsÍZ1¤rµÁuÀ—‚u}© À¦ ²¾£vøø%ª¤~ÉÚjÆ~úƤA4êO×}c|è•ãM;Æjo^óª¹pmÆE¡çâ7ýªúcÛ]‚óƒÊZ£¥×xU²ãñæ?P”3(¹IÀyàÜ(c¼#©°vŸÁ ÕÇŽ}«üFÙàç ãC{†^=V;v|ɘØç XO rÙü†›\xÒ÷¯G±±GôG“øù5ÇSå°}—ÈÒDËæƒéB]™&CÿÛjŵ¦¶Åg‰Â¶]`+¢õ ‡‹ð[ÅÕA ¹I‘Uƒ|È;F¸$ò‹×’ߨ}yÛ_KtÕmEúM¶õê®ïè_u‰æM¸v\•Eô#ŒØh*Ñ… y#F­ÀfEHQßöP3Y µ3¾Pµ³ âb<(¨à_¦²%SFnLê ܵT*¥e»D¥4êw9ª]²fº=Ãn“VÇÖ)+¤?µZZ( 0ãS†-ù8¼|óØ«:=fL‹022œE-ÄÍ…(ºÂ¥êýâË5ËB?1Y<\ÒkU½î æ–ŒÛ]* h®É²˜–Ø9¢ô!GJ¨žT¹ÛF‘¬&wÓ}’Û5×gH…§ÄÆãŒrÉQö Ù¶O»ñŒjKs·öûU}¾µ ŠÄ®zµì(Óå(udùë‘Z·Ç.kÜßæqÙæË5‘/=”ÛPHºÑ©×NÉôþU’:”gFæP_–Ú–žUaöØÌ\ t[™ç×ÊÝV&;]'%»“…–›}]”¤dÑð·¬q"³/òËõx:þÔó+ã ô¬·–zž’oàYo¦"#üÙI >Š[Àç—& •†ô>WEpi.9»UV& Ñß.› ¢·2Ýéæ¿2rÑü§ý¡8>¤&´…4$yb”m$Éä|Ïä‘f/ûWB#²i(éΕrz ÊôÀ’Ä‘9|Öñ¤% ·<Ï;“m%ºG–ÿ'yƒñ˜Ê¿£6–®[˜6DÄäJ6^ÙšprëVrZà¹rµ]ªòÑpT1oˆ_CX!]âŽ@’öóKªwŒœø½ªB€£âÛ™WᘦÂv¶¸ü×ÿXÀ¢ÎGÔT tñMl^½á˜ýóëÏ dä"vHuÕàiû|Á§ @(êªä,ÂâöaŽ)jžmñÛ®ÛÓ!ŒZ®Ö ÷l/ää{¾E’ãsÛ˜Ó\Rxü1ÌЃ'¹ìí¢F/)<ˆ¯­æ$¾_ïi¾¤°éêß…¯D¾ (Òwj R»i‘þ a46ð< EÄÆ‘" Xý.2Úøµ:BÜ&üLß«Œ±;dhbýiÉÆÕÎDúÙ 4z¬ð¯ŒJt€°—ŽIØŽUɱ’0l ŸúºWáïÿÒ±X^{ú †û H6ß/æ¼ñÒqÓ b÷Cö„›&þœ ¤Ì…•XˆV’=T ˆ¸ó“Œí>ÂS¸£È\"æP «ðCéÕŠBNÀA+Ôlà<¾ð’8¯^i úñó?Ýz}ðZa×V?Þ½I†Ýðþ¸½=-AâÑSÜLè×éõSq>Ø`ˆ{î¼ÕÓ„Y;ÜŸú©¦î?ÌDL‘ÐÓnGâº[ ÚY5/äWKÄ4ægõÓ1œÈuL¬ºÂ‚ |ùC‹Íß#H%©aÞä+ù¬©XNÁ~+õ•H#ö­TjÎa$¾62A6öNÙß>ßù¼Ÿ¯íäÉd¬ý*&ÑBøÆE¬ Ô'ýú‘sck°_-²_©Ž¯g$ÿ#7Ÿ[}:2³˜;kìx±A½øfA!Õñ™ 懼­þaö‹äÞìÚG¥`í1Æá;ä¶3ô¡,à®b䮨v5÷”Ë#TXwℹûëI[$ý¹‘èƒ}Ø*O’: Q³HÑBŸgÕžY“pæ¾³’× ”Ö¹›»TÝ^L@KÜ«cDS¡­÷j´PªçŸ+A®KW…$bý#Pé²i¨ô%χ©´ú ú´x么5š˜ÛöÖ— ôÍ‹«0@‘¥Á…¿ýs¡b7ytôÛ?ŸPìÜQ)äà£4/ ¤’z]õ£z¾NÆ|è!PüK*JÊ妷¡‰û,8‘®Áâ/^¶&è‚u~ɶ¬ šÖqÓî#–Þõ‰ñ}vÓzƒ·}}#u’ßñ²IÜKæ@xT äîöº»0@ÑžM>´^²ï¨ÞeÁÁUïPQT54·ïh·'¾pVøt÷z: ŽâqŠ9ÕÉB”ÄyÙÂÕºü‚H»L¥ Û8‚*Þ¯™³ƒ–Ðn]o( Øøê‡4úNO”è¤õ'l?$e«fh$Ôd“à|Ò,»xç»»Döä@Õ°h¿uKúÆ“¾Šï4µìÌ謷COߥ>1=íù©”T QV¨•ëp³°}ȤD•(¦%i öÝþ´`m7³+ 2™Ør»$äÿ¡ÇB+—8»Räfa^‡JxììùüsÑ3ÿx½éÚY úÙ… ÉÙ^¬Çƒ?Y ‹Özj— @Znñ˜ÉÕš¸_Àƒ©¿Ï·=ë˜Ãý½ímÏ9{SíµQÿgá`Û¹ }yI¬øÔ‚,âÊ—Øã)áù¢ —W ﻡ¨q{l‰–pJòb^C% ®?f¤@ѧsiŒ¶‹ÇöX»°*ÖÃ4–½y&=cN õΙ†X/›ma-£F®ûèR×ÜñøªO{¬J ‡Ž$jn¸6¢Òh×*fÞ.ÁɮޅdñÄ4ÒËÞÚ{%ËÒÇa¿¡Ž#l‡—‘c„)Ÿ8‰,ú2?.Ñ­°þ‡ÄÍÔú½, =䇰 Ñb€¡²¦I°æ.È] éÂDlI,ŒF3¤N˜` ø#‰a¾×ßvÂéJu ¾áÇ­y$:æ×ìoTøDÂ}$ÿ³¨9SHHeä+·,(ŸÈ¤0Ãe-*"ãSÕíšO1 ],cÝòN-%£=ø©_› „9 7C¶rÓÛ€ìØ·j&hSÛ-jÅ—œ5'èôEL¥çÀÄuP ¨xö:c6êÃ?Îú‡s ¯-D+Ó±0­dò-‘`hu³$³ÓdöƒhÏ좆¬;Œ2…=Ú°.מþî*YÛ’.Ó¯y]]öŒ”˜3¢>&Agb&h+J¤ º3D|e.†9àÏ£%ööþ~ßU»Ûȯa»…#«UÙÃíÅÚNçÄH{ϰÓ1Š| o—ž`Õ§|Ö:å:xL-ö»ó?ºbt }PVÚÛ÷ pN’j³«¦¦ãý(Æ$ 1Z²c]ñPqþìi­:D/È[íi|=—n6.?‰‹Dv  ➃†~MƒdþZã"ʱ ùiîfZG¨Ñ9ó0O1æß¶=êúéKÅH £Ü A$ü•Z¿é‚æ'àvòå8_·%¦#àË’ÛP^fž¾K/ò#q+ÀBžŸà|%m_¾ÒÍZtÜàSF¸~á ¡:]E¨ì¿¢?• ¶p2–…óâø2ëB SIÈóݗܳî¨eyûÌÌ,ÿÿ™û*—",0åŸuän+Ì6àÔ~šàï¶ìéFKŸ6…ŽËÂXzqÂŒgGFCÐw~p ›£>éš›åoÌØÊjðR°4'Îã€ô8à<§àJLPèÑAJHù÷AàÌEu…8‘Cbƒáë•4ÌQ{³I-ô÷ý É ®~ä“$ñ…þˆïrhèäëèb8u(ôg€_3B¦üR Ÿs³ëe^æ7C*Q*76å˜qÆü¹áM~%VèMë2æ_¥ù—³;B„Ì¿yôõA¨“¬¯.T—LB‡ê2õ6Z¢AâP3KÌs©y.+œübidärY|u¿d&¯yÜ#Ò÷yÄîùþõ i+7ù×Ã&A÷ÂöÑE÷ƒÇ…Íí²é?%ˆ6™¥ØŸtμ{) &ÆÓÜsbûŒªL€lŠUOQÂåé;AFK˜óiÇMw8<ž‹Ž=«ÞçÑ-Â\´†ÏÒ)=gî qûìÿywèî³ç”»ÖÃôcØ7Gƒ=‰é>©,ß» ¤“Ö[§`½Ÿ‹oÅF$áÝv‰Ô¦hpjºÃ§Æ=>·G~Me×àÛa•²xT7‘#EÎ &Õ±[Ë<)or\¾)Ç¥ÕÛ'—T”ôÁ’žÕ\S£Þ¨=2¸ÃU2r‡ÄÇ«O¦ö-î}Ÿ¬Õ4…ž†°j5wÐlÈç‘Éslçw9ªþI6ö.™çžæTjKVöÃÙשúÏ`Ú«Sf¬h^f½þý§£x}I¹àz¨H8…/œ€ãÕ-HY¸ûì„»ãìÓú®‘jĽùZ!G…8Dÿ߇ݿcˆÃlEJC!zlôˆº{L‡Eú ¸,é'˜±A.çkßÓ‡Bt}ˆH†ª®L’A\V%J„|ÝIuüŸ²ˆÍä2sQøÈf~$©)2óoŒNËDƒJE%Bën weÖ€º‰O`oÕÃ[ïs£Êö å/¯ªQË’l$]óYüµfõÅf\ÙËÉdƒžd挿 S•]A7Aº!:å}•4Ñ —ü{:Ä…äQUbäÖâ+mèÞüì¸.jWë1¼‚ò|YiÖµ^ ÝÜpÌ•ìθìoòªÇðZ”Ë'ê™ý“^íJbqŽÊ ä.ì½$jz´ê*6^Îÿ=·.Pœóz À¶2B³åj ‰)ÊÜ Žì·GÃ*Ì®…A›oä%ÎZÃIá…-‹"a›Oz F)ëÈâÓ¾U鮋†-½¿çDÔÙxG™dØúü„èǸâó•=ἈE mýðÍLðÞR0g‘sý\S _δתd˜Òp˜lÔ&Që"²e/ŠlrÇÝù銧n\H.ûÞ!„ýIÅ9Þ-wY‰Ô'ã'l\Žš/²>f‰€]¾| ¹ýŠóS¥Ö×O„ê_&‹¸î‹`OW¬{ ¯ÊÒi«|êiº¯³·OˆÈÒÇüsÿÖö"ø qÞÞu® ¼Ý$Œ+Ô˜Z!w¢ó¸«™íŒ\ \ÔjÛ¹ÊÑ)‡F²RhÕ:— ÖXÄÊ dÙÕ!z8ÀëP¼ŸOEm²)x߯¢ü%qìW¸'eÓà°‚W»e6æ§! ¥ëˆ Ç|ù•>q¥“2\X›n¾6b­¡aºDqq["³»[ôrm¯bäÒ÷š¾0¯W;7› u}±"ƒú;-Õ© &£³¶$¿.‚ÄW,ö Ëq³2M_Í{B„ –¯ªW¾X»æü‰¸×Ç)wŸtZ&ôìroìÖå¸C©-¢|™FsÌjŒÕcÀ—‘8•ý¾Äº_Å]ÇB/ðXoõ¯ÝV[,ÛJÖ‡ùžÄÈÉâKG /i„Ìjÿ®^-´ü*ÖVø—ô ¹_ªn‰úHÉ Ÿ•Äßö¨õ[Ó|œåþ)eʪò7Н O³¶ù´Îð×0‰â® ÔŽî  rBGŸþbëYóö!+¦´ë*9ƒŸ¼¸´ÜËþÌ}-,/{¤·–q°Ä–AñÊ­¤xTAi> 3[T·LÎrûÈÒ%>çK|ÒÖä Ë¸ŠÆ€è†Ô”QZ7»©šh"—‹DHGzÑðÙÓÈÌË¢jš»Ÿõ+‹Äæ²b9`ä]“dæz˜,÷ü5R&‚cc[d"käö/ñ¹„%œh“jMĘe>]_ÆW2>Ædc~v!H@6ETä³-qfzùV©ÿí\æ+5|˜zU#¬vÃØ7(jþN©LZ]Êw²¿…Bh±7 ‚Xyòtµ“˜Î¶þ -«àÐÕD2áõrÌǦØW8ÕUïöÔÇnÿg/xÝ:»{¤&ÌÀÝg/ ^©‹NZ_@ಠ™ò¬ž jˆú3Äj?J@Ë·X˜ÄPiæ=ÍöÀeÁa#­æ†£Ã$éOUÀ HzŠ'ª¤²å]à ïc›¹Hƒà°.?aÄ>ÅJÃbéŸF*¬Ä¹‘Õq\‰G<MÝUëÚ(µ3VØê„o¬M2‹‹¯vv-Y‰Žªîø{@§Œ á ~²ê‚©ÿ-4oŸ¡yt²”:RêB‘R‹Vp$$ :‘€ªc™CŒ‰ßþ´ŒpÔH©¸’¦J©«®¢„ŠX¾âf»1ÞÈ|HÌýÛéøXZŸ1ävxEÌ/ÆxÒ`eå´m’¢—òõׯ)ät÷zZêýÆ=ëê}¤?j%ˆZgŠ…¡/Äù ­¡ý¹œÔ…3GE+s§Õ,Æatvð/Ùw‘&e¬ä½Íði·9ØO8B$vN1‰ýejÉñˆ¯–4!ódÛX4µþ·éjŸ†Î‹úë×iVáü"3e*»žàƒÅbi? ]¸šÕó ËØ¢ƒªz³i×úÑß‚ÌU;Š&åˆtËNcL$PK9ï«]ì]IòXíØÜ‘·‹ÿcÎàö(÷WÎԥ̈ÉÐoÞ’Sx"ÝÐj_‹_Mö1ÄÖ!I‘¥µžº„N*†€¤‹„Y©—Q²õÌ­Œ§{k\³Ë& èÀ‰›ªEïtƯåt8ÅZNÙF'2üy'ªï}Â??ª°ÜìOt³Ltþˆxí­öõЫ)ŒLNtyÕO…ð_¯<-¯o´ºäŒ*ލm,¶*m }øbxÇS†¹þÚŸk±j°Þ²‚ÊQUqÙÁ÷òÕºÂÇo.îýÎøÄÔÔ*ð ýw;Þúþ·Â¾MÎ?§9‚4¼ŽÞ‚fÅ’ ä' Ú&æ1/À7®l'¤¾u¥#°ôA G‰RÔø¬ºL™ã/gë ¶N[&Xƒ°ÊÈÛ–{š,sÐÍçÏ]çî=ûøõƒ_Nƒº sLãì{ I JN®žhþÕ˜ï‹ÓV~²T©g­ã…/š/46Ç«÷!Öø†Ó’^ûÆ ¦áš¤!µþ_Nàä'_|'`£ùEkèbF7Û^à‘¢Ê*CX:v¹Ì^š†x»Ül¤éáq¤mw­€ãm‚KMä>7†UšÈŠqåwÇ'\øÝ¼â¬šårʳô¥žý'UÐáh4â]‡8 VÌÐÞβÝ6" W‚ls7 )Ý\úô¬UN¸ÃΞ\z87KÒ³ÌýÖk2Ï™vžò`ž©ÔÃé¯ü߉ö„†KŒØ%~vT^-³¯¾ÿM^ ¹¾® ¯›Qj`i†,ÍÔ¤©Îüàçç’©ççaÙçîL+‚ Þϳ²-þx£/]u©Ý!õ_ÆEhYì šk/nËjÀzÅ/LXÜ’ðÇiL OIšm9µH“¾‘7ä!u €€«y¥‰øqã‹\únÎËãʼ´_Âýôúèd×G'ô7ò?“lKæ¼8…Ü<‰øú_šj2…_ÜêHµ)¹‹5ä^qêè´sê’9ÏùÀ¼Óæ7’‡ÔÌä–ÉKµí6³©®– o¡D]nGÔe\5ÏÏ|@ÝÑ)go wÐåóqøkM·§ñrIàå Í÷4îq£ÿÞFáÿ#ÿ'›˜@èÃ+×~.¡ž¤V›¦Wʦ_šg˘€XDÏÖA‚Ë'ó{à‹¹êªu}Ñ?œ#‡Y‚³™§’j`´…nÂ{lƒÔá³Ãˆ×ÅÜh¹òçäîçü\I”Rd»­bvû>ï]Î~Ú¶±ÏY¤ÍqÇ`ŽR¶Xü˜vT‰×Ûv*DüA€t¨ÿÈ\>²Æý‡bŒ±[Ip o‘4qžð3T=v± U ކÕ)‰±×eê‹u×7Ü×l—ñLáO?é@àÙNÓ#¨ud«cOË÷TÕ)¢Ÿ} õ¹¶üù8ÔÎ/:kÎï-Ó=xë3-³{°<Ô-ˆµFù6ÙÏÂÈB¾‚£°x\ô]ãƒÍ^²£å1ĸ¦Ø†é’g,›VVWõ—MCmjØ&N[îÍøÙ¦mÚÓóÉP&¨¿T×¹×ö¬z/ÏÝM}ÚÓ'Ëè[ нóEç†ßF•G¥^§xiTr¡¢åqÍŽ\QH‘6æfmÞ¡$)FÒkÕÆäÇn‹©Tî1爗­ÆLÀÊ>tUì'à¡øÎÙsòÃu†,¾Â-“¦°Qß4Pˆ{5~|¥ü%!IÇ«’ÁA¦2#gÿ&[ßC!g£u¥2Bg¸šŒKí\Ánç1¢]Õkœ—™¿ü-̼§ojÕÕÊ “…ݦo”þ‚…Þò2ÒÅwü¯Ìö¶ó‘NÎÿÓã¾Î㯩õKy7VZRc®!\ýþrõTëÕcKkWóØ ‹À óxC'QÌ6®†ï”YŸ 74À=[õrËÇÜs@Sväùçc¹x\’½†ª8ÛÃð¹q(°þ»a&oÎä‹ Þ67 >&Þù'>Bp¹Dèê|¹6¼“.óY„â9¢ðä7›÷#ç7RMr+BHÀ<£ùwH%#ž&ÄȲÏÐÀ©»þªèhé¦"[[ÔÝᜧ³Bk¶b¡–z»„ÛycÒ꾸?¹Š:ç½î ™‘–L9æºê^êF¢$ §R”c×» K 1¬ä&'ä®0‡ Q_vyŽðÉ…s"qEïölŽˆ2K¯HÅx,VȱXp~bbd¶ç»¯ÃxeÃK*¨¥SHîû$[ï$\XêÄ,ýÝv…px¼yÿ®”OŒ ¾J.=¹âÊ_á¤Z¥Ý?މ˜öÏyšƒmò£>çL;¤˜Žxî }ÕDåyŠÊnû$äö3Ââs®›úö÷ÑÈÈ!E~|Ýep€ÝR8´36>ëè\Ò÷Âyèí´´Û#@£ðý{åàl¥œ›Kÿ65€½±lÜú³’¬}•Fúß½W–$ïÉX:–ˆ$µ÷ÊŠäW±O |l Ó¯pL,L Up‘‘ zΑÉÃÄÞ›SˆM÷·j@“æùÆ…p|£é•!íg­òoÙf¥µkÃK÷$6)\*®?胮äzÒ÷NŠð,)ŽðÜÊ‘°ƒ…'Æ%pSêj„'š‹‡ZXqƒÚ‰ÂCµ²Xy¯îŠq—‹Bòì—˜Y§Ù· †uý*ÑùX-¨vç 6bgÐÝ­¹‹Û2,*ŽÎŽ©1œèÔŠ,‹b8%æ4ÍNù.ØÞ|á´5Ѫ]ƒü—áý¸Hü¦Ü½= j6~sëÍ<Âj"° ‘/a]ºánõXÏÝÝέŽß”m•x=ñcìÉÚ‘lü¦z[ ÕDÍ÷]ÿÀÿõe2)XѨalω ˆn»AîA¸kàØë°Í¾¦1C¦·\}R]8„v©gS ÝXÔר‘Ô#{ûµ›ÃÙV³»%|Ìc¯ør®z°"”Sú꓾ˆùì#ÛƒPÎBC9…ìvÓ™µG–ÛñbsÊ£‹1B9f,J;ò¬ÌnÑ"-dç0Uþ up˜éZú$K51©'ך’ËI8äYHjOÁ@êÙ¹ó… ‹&ËˆÑøæº÷qÿe¤½6Úó’ÓÜâ\4æR3cîEl.Jú*1~}Áe¤Y¹#9-˜·Ḑ×ú„±þÉì@~SÓÙ÷þ0Lf=ß‘‹ÄTïa|¶% º~vˆˆ’ÕŽòq|nçá}_Ÿ6²“`!V`-¾}>æ”ð8ÐB{ÿàž’CåWnÑO¼lÚ+ u<ôL´·|µ˜Ôz,*Œ={ˆìzÆîÙœàmE4ˆ×НóÚ〴:ä2}$Í4f€¢-ÓsÌøsÐԸğ+º`€!ˆò¨M¹½¿ßÌÄÙîö¤[’‘¢NGñ8Å€x~%eÁj²Z—CaÂA²Œ›@H'œ$bÔË­Ce«B—óPÏ·Ÿ›­±|±wà&ê×—‚×E;úï¬ö|ê'ªNA=ì(ËÓ7Ž˜C ëÔøy Ñû‚HùÓêê2àΣ·Ð¥è‚PÀ»ô6­p5"I*çdܬ«Ñ~;_Nƒû†ÔÞC]ŸÆÀK8‹‚½W~qp§D­õ¦[:×+¦|w"fNƒ;B·“fch¡wžàRNÒD<΋‚;ù†óÜùðÛ#S‚;•hà æÍàN¡ÝÙ>dKÊv å>>Lª‰—ôóàiä1ß„wŒóC˜wÊ_L¶Î×G}WVö´ùí%´8´j‰òó`Þ$¾³`‘lŒkÒ—a¦*¾KýøÎýÖ=b1w¿]‚Šl,ZCȇ·È.ŽÅwÊ‹ËYäPâ;1Û ¾ ÒøNù3ß)™9‚øNÿ#ã;ñ1ß/ŽïLDŠâ;Eñ Ü”ûßµq—íØJ—­ÆwRšmÚ!¾óîÙï\êøŠHÄwJ`h¯ú›0蓽µ÷b`ßIYØú¥ØÎÏŽ„‚?Ñ—G.~|×ì‹Äw6ø8ÕÀÍôÍÂŒûúƒÉ> µ¡-õÑh©ã£‘ÇR¦oß9À‘˦²ßN²]¬ÉÇgø¨™«~Üœ2)kz 1 ÖëðyõÃ=O©·´ ÜN«¶ÓZq”^`bsýšÄ;ÅwͶK,éÑ4[¢)§"ôTß]äSñ×S>Y‰F½ŠDø“â¾¢kÞÉÅF|ÊÊ¾Šª³q¬˜”œÏbZ´\Á;yé-·G>Ì"€Bލ 8ˆ\¯ÈkâÁš¹ÈÞ'@ü…aD pp»î#‘SB…Ÿsé=ê¯ê±ÒÜwk%äv9@ÂËÔ¬5H¼3ÄæÂÔm)Œ8t©Œݸï?ŒrÉZu´´zºù ëyǰ„o¥…–•Wà¨c#@%»œÉÚž¾Ùk·Éàå§øÚuô1ë•ߥô8Zô’ÄóS«¿«{±Ç¨0ÙH(¨!_¾sï1Ý?¯kaÍMî_bô‹1‚'ÖÏ‚âóg)Ó¥*ýDÓøz®uþ•O(½KÅs(T³S‹«¨¬ð—‚ ÐCDš‰yZwUÍÓ^ïãe=ñ²×©—/‰¯š(²©Â§oœŒT'áo™©6ê³8Ä¢~ǺôóÅ~ÿÅþ¨õ~r_óÃY𪆳ôú§ 7ê£ã?·rš ÿø$äø|‚ñŸñXøøøñŸõUK.¡'¤ñ.’øÏš þSb¼zä·°À0]üç²@€ëéKF¦ÄÚóë)¹RL¶$ …ãÄÔ–´¬ZYH³„yXƒÇƨõ[ÝL`lŒ† BypKÎÕð›.^û+îà&rNB‡6òâe9û'ŠbÃÐ;â׬'»‹Å¯½Ë®¯Èg,ÛÇ<=þ HgÕB|ÛÛöª“jƒDjáïWÌšÇák¸C0šâÏœU̚ϯòëòE;Ø-Ÿs%ë¥>QmŽTÕ®‚ê=Mæ[WSf9j`‰ÕÖ%jÈT„ê`Í1ÿªQ‹TÕÝda×ñ iÌÔÛZw ¨QdžKÌs©y.+Œ¾³ɧbþÆ(û¿Ñ†2möÏáf"øä€‹8¯Ýdlòý ®\sýEI&£>¸k>+Õbáô=’ô“SöHSP®Ò[š±ºå1Ÿ¯(ÔÉX®å¨‘òÑxĺ![ê´Gçö鎎ÇS£Ñ¡Â¨ûÑ¡XD‡B» qsÒèPÑÚit(õ/£<&Ý•K¢Eñ¡Kì]Ùd¹Ï¥¡c–öY%‰P:t *Þ(&!>4ªu¤Ód9¦Æ‡VþûÎ×äøPãkÉXe|’9‡ˆ%d|hu4ZÍ‹^âCçoZõˆP|¨lmQ|(väbñ¡˜h¬h^]:‹FA|èM‚1¢ŽLJþ8ÜP|¨ø-Á»x­’¢øÐy¤¾¡E ©‡z×ÕòóÙÐ÷®›Ï¯òkß»NÉl!$ŒBÂøÐZþ‰øÐr¾öÿM|è?^¯ñ¡i26zD݉aFì€X¬¸ Dç)^Úä¿¿Œ •LnéL¡ÿꉑ¸sŽJ~§Ú¿nÿ³áy:Ã[HºÿBHœR®°‡±+Vï#YF$6KMà‰h$¤¤KFm–]ì²’Z ¿½/Ä-"mË'+û·9 ò§y À xXñTŠûЪ!n#]Â7ÃoDùÓ›ö{·î‡Ï«3h3¦ÉÏ~Lè²YØ&èé6sîe>ÄË¢>ϼ*êÇÀ'e«*]þe£|äÅ•ò⠓Ô¸5T«'ñ`$­Þ-ˆ ±k‰GÖû¯Ú“Å ­ì"¥>©Tî³hÇü†-ss鯩3PLÝ€³]B²ÕníÜlYLGnÒÁœ[u§×êðà Ûø1iy­ö±"–K¯uNéñNãgh È Éõ Úz'RÅÉq‘ð|¤ø fÌÝU5Ê[PÂe kŠ ·}.«aaì±bUœ9’ÃÖ¡P¸¬è…ÿõ9gªbC,CF¾¯‹„-aÉ-ˆ›LIþã[Nû¶¶æ“NHM\èx×tᲞÖuño\‰ŸÁ<}³™ âЬä$Œé~2xvÐ=p½¹i¾¼'Ö±çÎOŠp÷ïØ¦˜(Ws_…þûZHÞ·Zcê¨^6#ΚÇX¿P1¶Á “Ù„þ;?£³“d£o½ƒV[W t è‘—S[~wŽëȲ$,À‘M>¸îÿ n»rKå•ä–ËyyŽ”U´Íø00Bb 8«ÌôœÕ—ÒšYx…¶ê ñ¼F­áÂû?³´µãñæÏ{EÙ\ƒ_ii³Pé:I7~Óhÿò]æ…³Ã2³fÖ6.twÄ}¸ñWœÈðzÇYŠ"'+|i«B¤­ô/ÂöÿÓ>É;ÍIú6ÙçÅÒ|ë ²Ïóü^æÉ×ûŸ›˜èTƒ«Áä%EvW)Ûr.¶ê2뱋/†ÿÇsBdåDZ’U—Ý?ƒ•kŸ“aäÇ×g¬ºŒ,[ÿês’l~·Û¯ <} ƒ@ ñb>úu'‰ÕÖéF¸átJIäZTóõ¥æF©æ[ªè;Çü«Fe_-ˆÀµºnËWë G®,nü¢Ô¯œmòÕ°Ó|Ûé&¯!³Ôs>Çï–²l75—lE ‘îk‚îm;›.æf¿ö´Ô›šš¿^Ž ¤¨¼› lêáø­âõ¯•öåŸ/ËŸ/ûC·bÑÆ_ë0?WÜúÁšŽ>—¾§#ñ`4¢éóÏÎpY %b†«µSÅ@£– ±ôu'¤,E§ú7#Çs<ÆFRTR’ä?ëcõÑô{ªË̼Ò©^ w ë}ús÷5º›¢?røkÍÿõlU“Zׯj‚¹=ñ«PH|«l,,yç÷ïHtL¤Úgò”.©‡knyÙ7aÔ—VW߆2î˜S0ÃUIªqw_Ä3Œ´»"ªãýýª[È] ç> å5ÎŒC8hBNéÇß¼üPN€P!_À¨C±ÜÜΨT®îÐ_à_ñMtÄ‹ëÒ%çÍ2pw?Aùt¸Ä5xLBçÃ~²¬²«ÅNú bUÓVrBê×Gðë¿ü}”1®òf-}µ3qƒ*7ΞshÁ÷£V¥ÑÑk² õáà€¹¦N¡<;ä}`™éÂp;ªö¹ÇÏwÞðø’ÄÑ X™»Û;{áFO f4n‡5ó‚öýñ›QŸlÍÎp‰³Š·Zÿ¡;´>’•FsY²Æƒâl™aé¢eÞµ2ÓѪ]Ÿ€;,êÌ fŒûdjË/b:î¾z‹Aòú5/£ƒ.µ©-FÄÕ™Wµòcg¹vg·Ì®x|À×]fXpùV½Çcqoq¼ãqA—;.óÊnqËÜú¸y³yøÉQó0Ê£¹ƒõîѪ|j}>‚*6ûÎ>mhÒ2ê6dV¸O™¹­®:dÞZªòŸ!>»ŸrÅšdš2PÝÝㆽü’»ýÚmÜ0î%7Üà&7ÀÝ' Õ€W—YQ…€²•-ÏÊOÈ/G0Ú¿Rõ¨9E£^ÍßÄš¿1îÖü »kþ®½yͰÕ4üfpƒ h¦v æ—Zÿ‡~þÊE¦¡iÖ,1H¡:<Ý¿|ƒ×žŸ­g/[yF,Éâ˜MŸopY°ÿ÷)³œÑZdoÛÖøÍqó'âbMßÄz^€A!Ô ¼ZÇòãÁÈÍÎm—~SëÿÁ|®w·Ÿ}Êã7†§²0Ùý$¬ðT®B´ °ÝcÙ‘³ÏÄzé³Þ'C¸ç?©‘vîØÜºC@á¯â}îfó+¦>·Åü¦_¾^µ7µêê[ÌöÓ÷ÎŒÞá5.6_Æ*¼‘+Ù(³;‹| lº‰ÔF׎ßèšÿÀ E`mù}Å©\õÖ“.Q_©åýfIøãZÄÉÌT0hÄÔ™óæžs^ñšÿfÜmþöø õkÎX&ð>óùŠç—Že¥ÅX3 ‚ÂÐ:ûîK_u øß£2_„ Z¹þ«? ù]ï&×r÷±{yL¡6ãoÚL‡Ÿ}9gºøÑ9–²À¯”s0Ãx` <í9‘­µ„èùûþòH&¤3ø>æÄñý˜ùâ ‘¬<â|$øHòQf[+Ù[Úüý`9`Ò)7oÅ]o¦‚M+ùÈð1‡j>æñQÃÇ|>òѺTzo_*x¶ÞLv©,¦“.>6ðÑÍÇF>6ñ±™>Ê.çŒ/—“R~¹ôYq¹üVÉG†9|Tó1Z¦=Sç ëñèÍ4Z‹ùhäc M|~MløØœ2ÃmfáEñ¯%­‡æî©Ý~ü†~¼‹Ûõc'¸ûd&דéÂ_+2qr£ ™ÄÖe¤vɦs%‘ÜGÖ™W¶] ŒÌB~áÝñfMZ°}Õe†XuÚw9%¢ãaäŒÊÜ{FM¹>Ë[=ƒ;ƒìÕªÑÜ×|‰Ê”æEP9pÉáy‰ã%KÍÿB… aÙVÀñ%(W³ÉAb8ºÇcI( \¨` 4:Ò¥úÀCÂY-’sÚúá(/eÚÿëÕÄÍ@ƒm ûv¡£{ŽwÅ·^.gSjP‰hƒ¿ÖîU•(&OSÔi÷%Ëv™Zjýµ˜ °Ô.M¶Â7¦kææ`ýKEvGíŽË…ÒJnà+UÃó«(õ%èÓ'ècVRF´ÛiÞ„hžÎðniÊÄ ƒï-EÇ­|ä•j ò¯¾ † SŸ SNqÑLûrT䥸”ÿ*¬3ýxxAžúdÖPÊü·Z¾Tµ Ê€‘r`Ž´ø@Ç8Á×ëKm9(ue=ÒiÛΪ+¼Xêáä¢wmþ,n´ÖH…×ø£q#<܆/=~¹` ¹¤ðÅÏŒOÈoÛâ³ÿwêwn)01 ó(˜Ôÿã…36c ³6¼O§õò’ˆ•Þ[¿å0 àÿâˆrZÏkLCƒdGüº¦™Z› pwƒµyޤàs™;Õš¾l’´(xèœxQV‚7uerw¸çÌÍ’Ld35ñ ?YKÔ L5 »b­Ysú=Ïþæï&¦N5ærnþÙ’ª£Î^ÀÑ¢Fjèø#¨MN~åÞÏ}VJö.ù`‚Ȋئ,?L'àA®…~LY]IÄšõkß±qdµ„]ò!‘pWdÊ +ÿ ÐpG˜ûä’ýjã½äò¢BÍ) nJÇ‚÷m«éä3à¿EÚ©š. ߃ÇÈ2šd€¸M ÍÍ®Ýø 56„¾ùìËoHx¡è·™%òY…BÕÓ(=µÇZ]¬–ûfƒå¢0ú퉠l<:·‚'¦=üù„¼ƒMFH¶À°Qah«ž5r7±ë¹ßby½öÌ‹£pà2B· åP -F8Ðìå–JW.|Ì€TÇs~ûÓˆ9Ì à½šL!þHJQ¡ð™‡–qâ…ýïš¡‚ÍÁ³¯hëOŸòfª¤@-HŠK-üü¥ˆU®`ªªG ß,îEæÜÅéOz2‡Kd<ä=ØšälËî—2M ™táß7CÖéi ‰I "ª¿AJ‡ÁL¾óÞ~2²È=rÓÆï‘O >’÷zs5ß#»PAÎ%Í&å|Tò1‡y|Ôð±:>øh䣉e|,¿‡nk÷ÈT ¿W^v@2ŠjJApu_Ñ× –›DáCüi€w’!ûi§~n6âBu(­É@´)SaþUš ÎsÌ¿jQ¿4ej ¿ŸñN_â‡?Íx£Áx£g†: ¨Ÿ~ÙPgg˜¡’¿ãîÍÅרûBþ9$fÅtÀ¹‹C@_fà ß\ÄR#TÐéõ€8ÚqÛipR’EX;!JA2 l6ê ŸMëB¼ÜÌgœK¯€õi¦4®eEªšÐjWH9ÇJó(7Çü«6ÿ¨ÓjÎÌP8ЦÌÂBËÎf3ž¬ºU¨ù9Yx¶´4ò@%iAέÙñœÜ²ËrÂÜ-ç§• â}tîèË4›O[UXÌÛS€gXBóÉ0Oõ$Iîá(iBÈîW̘–uÞïɘ‡Á+y:I®²à1Ï l¡ƒ¸ñ 'BæuŸ²ò°]’íþm¦{w¡œÄB´TP •€ègn¢#[Ö8É–õpËVˆ³‘ìw¤ÌjEOr¸åå¹’ÇÅÁ(“+éç_sÌ<ËfÊ.Õò>0LIŸ²‡/µ¤ªØÁH‹ldæÃ¢mÉ,”òÇæ:—EÀ , 2Ç0Ý Nl¥ùVj•õqU˜~ŸLß%CÀtæ†C“xst ™Ï’„¤–í¿BzèR¥¾Ó3Ñ3ÑiÒÛþW¼´ˆ}5¬¨8à@“µ£ãi”I5]¦î*u‚›6A^+#×Ϲ¼øt X›^› ü–Wó>˜´Ï‰†GÛÝ1aÖ7?Þùgï5÷ÉÛ_kõm\hü b¤WÀ?¦Åæù 0ÒrP#„­õì¶¹¹ã0þ5V‰õÈð†Q[õ¯Êê Ó<Ï 'Õñ~¨U ±Oʦ3VO/ü®éØ#5ñ( yñ™æ lÌ‚|ªãîó@É9>µh7S>’|”åät %ˆüŠ´é}¶pJæòš9‰ŸŒÌ øÉ¦HD¯u9g¼ÖëôZ¼ÞFÊeTÁˑɕÒx…²ª,|á÷Ì ®ãöÕ›¤–¦XÞÇ ,ÄŒÖÃN{2•3‹ep¦ ¢Âuù‘P;‡\µa^«ŽóN- ªì~É%7Іò$yƒáú´Eõ¬¢½º°”ntÞ8AoH¼Mýo5SP`lò›R/ÜÛZ0x°ûøv#L…øæ'ƒ¼èsâ“ËŸGý%„¹Fu ¼S¸„'Ì<ÕþdW’­^‰ ËVÏ3rÀ¤•°{òƒ;Ébäñךö‹ñ‚#Ÿ±,©àG] oèö?j!z?*gúøù=½  buk4ÈpÏû+ÐdÖÂC-nb+m%ÞKRz‰P)pƸdùJ  !¢ÐÊvRXÚïþBÌ_Z¡òŽÊjøf†t]æ[)DþÛñ€È¯Fü4Xî˯Fµ`ÍL53}ÔÌìËŸ¿îì¡ëHRÑ@ ÍŠ"dçå4ì_.G[·æhOTÊ囦dŠjZUÎŒX³«€Œf×Z~‹PNéÔPmH23õ¢1䥉lAáCË/ˆƒ5ÃHæ8u,!Ä×ñÇZñøÈÔ“Ò/ž)î'¨Ã‹3qe“Љlh„äQ_¾Åù“jŸÖ+%Ø¿ö!¬ëа¹»ŒX¼Ýîˆuóé/õ“K]VMýdöJCƒì]õn·`Ⱦ÷YåIö= ôzeξJ^šÕl^òXUô—¿ÕwGåÝÕÿžwcúîpü ;3³UÊé¹b~pŠ'Ý·Y-‡% öu©î«e*ðÙÞ%e…º_Cú[5ñ«â'Õq› óÛEüHù‘Æ€i'?r~VîQùgßùY˜è’ÖÃt~6TZÓ”Yl½Gê —wm¿7e–¾Ußgx+ 3/…2H$¸Ä:óm½¸=7e–˜gÓÖ«Øç²ÂØX‰8¢1®2 )ífV®2Õ(¶ëy¢6aD¢íÊdÙRŽE{¦“-OSÙ¥-©J*Ü™) Ï)ª½;'K2]“jÝN²2{·š¾Õ©¦-?áäÇ®;;häN@hxn–èÔNt:aÐ)ãŠrbåÿîOòn¤Cè4öqIÃh˜?¸‘©/ñ>kh‹Þk¾}ST6ÜCjKŒ9ã]ÿ±˜A˜ ½’'WôM©õŸ÷“YRç”áMºXâÊÄG.ý8R[zø}Of‘›jò+4&.6¢`³ Bŵ¹Ÿúƒ;yš{¿‚â(™Î@ ¸çšR ñJ’+¡S2] šHÝõÔ;M»1*®\ZôF8”+8Uqz¡ÚÏÏóígøOŠÒëu&ê–Û®d7+D‚ìfˆnoC8áHÀ´z±.R9JÍCmˆlg‡ù弸p‚;Õ7.³!T¦5ó‚ Ôdn^5i5íF0Mm9hyß4œ7[gÚ´FhÓ’³¡M‹qÝ©m³ 4ƒö0‚è¢o¸4(™QÁÖŸqY¹Øž©gr W²D`71ôÑÜ× Ý¼Íü›!šeG”å/9«N… £x|n¿wcKžn¾´ðÍŒõTŸŠõyëDJ^rÑ?/ù ¸X`ʧY}^6ÓÉûkÃLµt!‚5•ÝMOý xd7¡ Á¿{5j6÷>Åi½¦¿µïú}~Òëé:ÄMÏ~Coš)‚Fnö_݉(·@ß%ò£‡­Sv¢ðÄ\k³zÆüëð¯Å|þbF&./Z÷‹t™YÌüåâýêùøÜÂò{•ñ@•ˆØÊ þ]e<à §h.¦QÄHÿqbeܲ²•¼ÿ|²èZìR2U£¨ó3“vör¶NŠMcæèY2SŠmûûÍ3®F2öñË×a[‰ ,)ê ›˜ÚV=ëé7Ö'Ì« Ùâô­ÙKÖc½3ƒ¡EõoäŠÃoÓÿßîEHã`·Û÷hÎÙ ÆÍj>÷ÉGq$Û‰îøH?N´Bà1&à×dÉ?3”¡‚šüÖ{±kÎ!÷gOnv놻 Bºp|ø)$<~™zøí_ 0€ª^óS÷½1qüoW_Á¤B„T€G´£ÙÅ~èrVâ߃yò8)8ë}9F£þ0ÛµÛ[©—Txôûe†ë¥#úþˆ}^Á°!g³ên²¡fþ7r9[.Gb“GÚÒ*|p7‰5YÒÜ5`€Üd凄*Éòe°@^ª÷Ï/ch›[Nš<ƒ÷{ù¶Þ|Ñ`žÖhzà*Ò“e…{¹Ä7€Î¹_X ,Y À¥l•\ëÈæ ”% D£3Œ¿E×h—¶ÌRàÿº¹=‡Ï]'ê«c€ÿÂLáï‰#ôW”ë5™—Ù›ö«©7W®Û¥ú*ío¿C”ë5bg³HX•š¢\W×Q®wS¹ýlÍtÊõ[®~ËÊõ¦`&5å3…`0»õ‘`Ú©c_ÇG¶H¹ÞY¤\ïb“ |läc3÷ñÑËG;ùØÏÇa>Žñq’•ë­ª\;EÊu(#Ýk‹•ë½SXÒÞÉZâ°ÞQ|q*BÊ9èp› ž6"Úˆ–L­Ü¾B­ÁìȬ,•(Kq7ù·ð›!zsèžF±B+¨ˆ¸ÿ*"Ö²ÂW %b²Ç¾ûMná7SDøJ¿NþvšïMº…ÿí s ÿY¹ÀCàÙ’IÚëê"T_M¨+¦X›ŽY%`Iòµ6Å]ÜÚÔ#·ÎÅî Rnµ6=$À3G‰±|+ ð˜ßÊeNÔBþT ƒ•æ}æ ±ìq^›·øë˜ÆìÔÇôW%,'-6Ö>ÜiÌN¿ìΙ‹Y…ÍN/;îØ4f§g"SÌNàÖÉÆV„ü´BF%¤·ÆqŸÆ°ô,³»‹†%¾}@x|AjbRÌ­“Èc„·‡õÞk>º8K ,.y3“RMJjÌê LJŸLJSõC©a¹Ô+D})á”UüLRaä.KWˆ$mŠƒD¡ìZ)ÙÕq朤KL’pqù}[°=Y CiħD¥<D·!ÑÉíý­dÂ4 A*Ë‹cqßi ¥Gh¤¹gÁž§jÔƒÄÈZûª¹»dWÌÙ\pË8²†Í»”aR—Êbÿ`E)›v‰ä”÷8  3ëó¦> Lݘ(–û&ü•Z_fë‹.,2Y*[{Epé·gê®/ëùhàc1fµ<.…،Ls»¦¨"·Cm‡ïÒŽîÝ‚SÍ%…csƒUËÁÀ$$ÂñüKu÷æ…„ã~4ð·MB‡*¨-Ac»dWÒ€ñ׬?°&uŽìÎÔ^:ÅÕJÄèþ;ÏbÍ>÷§ÇÛ¥aV³?‹µÛ%ÙQ†fŠä7±[CÏ䵌.ŠêX6Ǧ´c¯G_×ß&©%d{îüC•ìÝCvϸC6h)N…üùÔ¤e?H% €ˆÐÎKefx¸~A¦~…›ÄãAö¦ž°ú¢—ŒxOÔæ-lŸùG×c4n÷ ‹ƒ¡b,1©À¶/¦á „öš±žHäX¶K¨~xZ7øl 0ùRbò?6 Ó¥é:–ñߦ0Ø© ƒÜµ£4€,~ËÉ_¢¤ŒÓ$¹ÿÝVÐHÀ—³IcáõŸ–D _š3>aý#'%Ãᖭ͇÷¯Kö—¦ç¸Pª Z€©Šø¾šŒû}L?_žú䨆¨5ßk>GMû*¿4U~8ô¯(ž÷‹·?ˆB@ý!]÷ÖS¸ŸÛ°EñAï£zŸø › zqÕÏxu7n}zþnAd®à °Zñ{Y|¯°4Dðª÷ÄJ¥ìSIĆ~’û‰«#¶¶èËÉšéCÏB3ežvodË™_˜°(fˆ¯Yàßãèw.—‡Èˆ¥ê¢ò˜×øwãsé`íÄ÷Bq¡a„Ü%˜‡feÈÝ8ªÆòu—F¬±¼çaH³p£+2å…ß[zaÂ[„Ôø%…¼Kên ¨[½0ÚN_(|Y™›â¥V9 =:Iúxê®÷S@œ•’aÊšx‘Æ&[DTÍí+êl%¦ô}ù@ïóHtʬ­ePˆÇ$*¾•T\–Žb¨¦—9¨¾CiHpEÿÆé®è¥{Ñ+zЙ¤ÓìóÏDÏÄÖð™ÐÌvÕ¾NS’äÈ­Ëtšž ˜ÅÉ5,Pï ˆV[ &©- ƒýIø· ”ýFF3[ö)q|PKZ=õ_¸¨æ9¡ƒjq=|”AÆ™v޽‹ÏØ$bc±àG&)ÑÿnŽú×ßñ®ÐÈMº”ì0ÿ+ ³]³RIê@)’ã˜9Ôëö§ím!ÝI&¡G´H3~qò‚Î4 8ÒϘíoçö“C“{ª [{L@. Wà.?å1—ÝñîýCSƒ 7û´Ms¢ùÙcz]Ô'ïh×Ð$n@Ö¾çÎ% ³iLŽfzCl­+¼OcbÇÿÎ"(çýl˜þoŽÏÿ±D£ôç£f/Qó>5ïÔ<ù¢2äýdzZþqˆ=aõĉL'"E™U3d³OJÑLW[,….‡O† %ÚÈùÕ,4èõÏ^Å”J\ø²ŒŸÈú†ènñÉ?Esà¢äÖ¨Ù ¥iL;¼YœÑÜÊÓiåCè®ü ÑX¯˜s_‡N!¶žæjG D èòIè3ù&–îòQu×\T¥¶rÙGåõQ†Ý¯$ƒ&¢àËÜe¬ø€yÈUÒé­m2"PîoemÇä€%ûšzƒKödÊÝ [ßgOçú–Èÿï! ÿ¬òï“ÝÕéÃN±Õé°Ÿ00ij#âÎç7)F„ë"­ïDŠ»–\“M²dm¢bPV°Ëyš+ã}Ρp|RîûBÊ ÑÞ·0 åY’rCà¿÷½éIy§®Æ®· f®ÅyÏ`>ô‰‡¨Ìç^˜ai&cÇÂÜ‹ûÚE ze´xéȾ¤d[J$†`ÛC(õ\œ8LèóÜ©­VF~AœB¥7F€Ú1`S$`0Ú<¤"qpm¾&t”9!öÅü‹øxW‘\Ó–kRw};´«Û5ÂL¼ÏÛ_„Z›³‚Áÿ3$Û cº°†@ó˜ñøß¬f"ÃA›™ŽCû[,,ÔõbZ<9‚ý¾ õU=fŠ)âz|^ ‡.áãJBpå=@\-žŒFŠÅý4e©Þ™SøÙjC“ÔD¶Û·7q$ÄZ!X·Ó¶g‹ÜWCE;Ж÷»ëæn¶˜„„l(æÙ1o Œ‡¤3>±ßú/0Í›Éç aÑPñ'$bð7!b<o…Ý£F毄ۛw2p|Ä ü#°š“v&™­"§ï()L\zgòõܬø"Aÿ àh}íñ ”Ñ>ããÉÂsöqn?yª?‰ ‹ÿö_»#“pd³c´ñq,"8óñ3„Ÿ¸¸bê‡ÄO0ÿÇDI7Êc>Ê›NóýŒ„ï°Ó>³Ã²Åï<'9ü•Zÿ+cšßCÜ%ÄCLï•ôªôù’A1¸i°¨Ò¸ ˜ äa?/n]yçÅ}é‰éGùZsÔ&Úhæ+p´âŒ rv_Bmdn ,çhõŸZ†xÀ»²^½+=µ{óJ]¡îÇ€WΡd÷TE |­ÅÎR ž¡Ç†lÖÑ~SËþƒŠäÙ4n½B¬µŒ?i§²­•Ê6iwò5i‡2D1¾Ž’j-%U ïP»øÙ¼[7gmN*­=øÒv›3íÂ^‘<+–£u4ôk x–|Örâ'ÌH?PìyÇù’È4)tÌŠwøñóñÈtùoú©W’,åšÿf[͵u»;áPi©4ëW牰Î,꼤¶%m½Ùø‚£ÍWù•ä¼\øÝ·c£ñ7Å÷¬ª]rª6„Úùs–Ô¨SoÓ»ˆKâdƒDÿëì5Úá%Lª°¢‰h•ÓC„‹ÎЊ,Æ^¤×,ˆãUEÆk”œ½ÂÁV|OpêmcΪPYbJšð½x^ƒµ§–L ¸Ú{ó=SÕÈΪ\ã=Â=—T :cˆ™•BªôatmÛå !¾Ü¯J®u9 U…·–{ˆ2ç“HÃÒËÄD’ga “*ªîçc¼m+ªJb$E”·TQ•¾Aqõº²ñâä/¡¢ª’o\4Ïò¢‘¥íµYM©ã«Êu÷Pþù¸ƒ|Jö[ÏKïÍß§ÃÝcÐÇC&úJjË­ãî­ãš@ðeÔüT/x mYœtõ›^é>÷6ÄöÇ#~TPákë; )¹üµ£Ì †Ë×ï2›Ò–âìÍÝxL3Ezê.YˆVx—Ýþ8븙+a{î3[á¦býêL#Ô‘¾µrOG€#vÓ²"SX|È ·Au$„a‹lèûîWüzq*8þc¹[?Ô£š†þu‘C;ˈbžTé‡phX„‡Ø>ñãÓ$W¸ pÌìA’wµŸ~ŸÊ‘bت” qV}BçûǸÌmäúuÝNг¦Î‘}Ìv§„iô‹œë#S…”¯EÐéÌ6ÀƒV´¤Dˆ<燡ì’x8ÁÝÀ`c±¢\zKŒ~ên6‚¡µé =_=LT@pÎ~®e?ËíØÓr‡ÇÕ*öb'ö?Íe L?øF¼˜2§\r‹sÔëJb|˜“ùV²x:O¡j,i;ÕXøkÍ¿tNg®vPÆ'4èÓÕANý°ÿÊa¾"´5”™m‘­_”Óú~Õà.dýˆ±|aP¾ò´®¼áº ÊKmIä„\¾óÓI d÷SId$øÁé°÷Í0ÿ¢ùˆIBwg-=°!O³¾ßÆ ©uÄ¢‰jûª9‡Ü!XKv}òú_Õhli(Ô¼\ŠÞà.¢¹àº§EØ»¥§œö8Ù€Dè\£¬ëö˜€:n1õ7dFQ{V4(Dóá2_¨½¡ëe:ž»Ëy %Êr³jÍÂnРOÓ?×½{Üõoùöðœ×’Ôqÿ<޵`°y©2{î¼-7{ÙɺD‘öQ2SËŬÊ;yq¹ Åæàdáò—JýDý2+ßˤæ'ÛÎ9«Öh"DÉYóþv‹ú†Óû’ΤíÜDªã{صÙËít|…'t¿W¸{«¶;ÛeRƒœÔva3áòqÇ‹¥$Þ2£‘ZOké¨ HÇiÒ´"OزÜ'Æ%—É'“Ò×o]'|2U’ÿT'6Ӱ醭þĶWíuöŠkÔAÓñÙƒ×!¼ùäéR€i…àTyž)“ˆHÄ¡]. )Ø9z³)3Ó·à–·bÝxÇ‹©öMl.SúÝã±æE/ÞyCnÖ2=îë1-ÎÜĹæ«Î9çÂN)œc-樛¯[K—:R Š@.ï癄À€Þd3 CÆI“…ä;.LX,©RZ´àÔªE¹’GÄNw‡ƒMvG>®)骆 *Ûó¨9›£Ù•,ts,ÏÍZùŸ>èŸñº‚;1œDRÎ1£ˆ>ÎÏýÍzþSëß1níÙÍÁ±bÖÓ›ƒ걚›ˆ%äÖu‡ŠÕC§J§ãŽ¢8M~ÆnÑÐÑûíýš´ÎýM!,† oŒA^æ½.WqoåxþÂuîÙ÷¯¯:k¾_ê½Á…;.1ã-uߟûZ$Ö˜YjšÝ¼æIáËþ½ Íü¢‘)ùã‚Hí”ÊUIÞ¡R¡ ùK¥å£dÉ¥(¬…’*¨›¨åEeãÇS[>7êZÔ¶;þ©5Õ¥Üîö ¶Â'ìèNe+°ÛA¸¥L >Õ»|®YÛyšôx+›o²ŠÆ‚ò/òû\þîXäž:û”aÃ_N­•š/ÆêݼÔÃÞÄ[¡).~J±É ¥pˆj!Ñt®¶AâË'b=l×cóW£¡!íë¿­êVA94ÕzÒ¬ªà²º¶Gá󘫂¹>™@7[൹ä e‚1Oráx£ãñÔz‡rÎ×¶Œ‹ZΆÈ".¥ÛçŠ`ßrï·‚ \Æ.ׯ ]’– ¯ÂLcóTÇ×ãÁXø“3œË¦ÖÌ)IÕ ¿8^ûÍ|h®nŠK®Ò-¸Ïzvª~v!çS¸4ìaÆ2¶ÀRW^x5!­éïç] à5àóÙ¢šŸ7 ÀG Çøbj"kB¯$À3ÅŸ?às¸üJ.03àgŠ>G¾7Z´†¤¥0é$A\6 Äi ârò7dàÍðeÁðiBkŒ°(Wè.à-·Ðr‘À²Ð’*ì@Äñ)1šÆü¦jÿ‰+ ÂvqbhB/•ßòø(†Q„^'H® Õó#6øæ}ùªƒ¨ÊÒ1_pǯhz-]ØsÆnnVþ\ôé5§l‰Àޝ—UþÐÒ½_)c½«NGqê$Iß >Ô³`Ôç-´$R{î=Ÿ,ÂÅTøîg·wÓhjË¢Qg‡”VI~jÍKʸŸµ|¿\xì#n¹^üõÊa¯iõü8_aâ„¢ž`Ãqm(‚ÕúëŒ,8|Àñíß„ù v ¸%·èÖ¤Ö/'·ƒÝ­ nÙ ½e+¤Í…7D_¦/–É—moXýF)zF¾?=.>'ó´ªÖÿ1£²kµ‡ZùòÙóÔ-×÷—Ë·>/ïwéû]òåý¯Ëû›õýÍòå¼×ùþV}«|»ïœ$Š—ŽP° >çèW£Á*ø3§µCÁ*‡Ùpˆ ýDñÒøþ#LŸ+9Anjñ[ faàÍ´õ‘¨àOR$ ÜìÖ_e“ÆÂ][K"…s‘ñ ™uYaUÄ |AŸŽ/ìB-㸻«mWG5ùì¼³0O'‰»âŸ\ó´_S&'<ÃP%.F‚ì{EøÏõI$‰xÔit )÷&~BÁÕãD¬MR¦Áf6hå'*’Q&è“´‰ÜÒf¢0~¶^‘hm€½¼tx4!©Zé ‰w,Wƒáöt/&ú®&e ¦Ú¿LÊ„_îOº¶Ž-«‹K¡4te⯠h9H%Bœ‘°D:­}Ô@ |Ž"EÞ·ÔýÆh¬îC£n{¼£YåœD¬€’y›ˆn‰Böß<˜‘ד•\m}¬yûrË¢/¯ºÊ³e‹»4õŒÔ¼Í·ÌñX˜ž³íŽ¯Æ©×E¥Ö¿Ï¬jä÷”’±¢µªÂ µ2ëâ"dÒîM£äñ^öl™]B,ÛÕÄ+L&ÍyXeR6hw£îÇmiÈ+Ü6êéÞ(óº…ñ¾-Á6Õê~{¬nЦ½ÒôüoÀe\¼¢Ž[V´}QDBÊÊŸ@>i°GT]âj¶›¾µŒ «6­µ[~êEDœG ãÙ¨îÈr¾#Ö>ô¹Óîm=A]¿—¹¡Õþ†Vs)Íþ†â¯5ß¶þïº +ÙjIÔ?ÛȯOþO ˆÑ?Ø+æÓréí>†Éí¸þày¿þ„3G´ð­qDkOKüTûPùLŸFŽ|ª†]~…±vù~f' ~¸ ‡r¨ ¿9»ö¨¤ùlçžÇgFlL4b½lÚÙ]ŠUP2¯.ìŽG¼Yõx]-˜ÕpƒY-ZbÓmÉ$`'ÆŸÍ™dNõ0Køt¹Aû5è*ç›B+¨]5ô páö7&¼²ËRÛ*fxFk¢ãéÔ]’ÎtÈ=§äÆ}Õ¬¡‰§Û¯o*lØAUëÉAí ÔfÇ–J\\8`âÞC•¤Q’€ñçfÇhX,QUõòu9ÁAw™ÎEµj5r`;õN‡{8ãt…¶Ä¿‡ÐZº’¢üIÊ—({]åd¼ Bç¸~Ô‚¶b³‹òüˆþyà]vÏä_(ÉUü™|½¥+¸O슃oÓ3dúèùDL¾L¯U¡M¶1Ç lƒÕv|÷PØ,¶NË»,U–à•`f(¸ñ-1{YÆ¡þMmùÔþ˜–dàCÅ,Èõ˜ÍEñÑW ©Á=4&ç«®=h/ôä–çÓz¯éY p¯ÙòÙQªAQi''»Kõ†Jwü éVµcULÕÜç9>­…$=É8p½ S¢bºmùD mð)pƒôògT$©Fx!IÔvCå€5¤Ü« h…Ýcðœör»`ù`pb¬C™æ´UŠOž(Phß!(^>¬>X…^ø`mäÜp4Í­4šÚò‰BLÕ©|AtŸÞÊ(+SoU°úíFÇjî´ç´qúbâ‹V¿>®O­'Jµµ²ÆÄ˜Õ¤31F¿çn>C¾„–ò•ëÍ´2e ¨« +WˆÝwÒz—ûãÓ6ø Cg¿úI+Nø¼ævùlFʼn”Ð{é´ˆBð%Xøú ^"þ‚Í%…/¿dn‹Y‹IZ—:>ßKʼ”4¾Šiú²"lp97»Èú‹:\I¤÷¶Ô4]üMs=ÿ¶*ycÏs|qŠŽv*Xµømˆ~ðË’ìX†Ó€s޾0nÄ[Z*¼÷‘›rŽn\ï¢)„Ò [PFJï šb44u Á$ïö±´t8{lÿŠÝïQ¡Íßôµ…‹Ä|›Tü8 •è¯M‰#bÈäÈ}Cv Uðä){"¦†6,zPŽ5KŽ6!Ý¢†¥8œ±"+œØ/½–IùTmÓ\Ú5EÛæ&F}Ɖe™³ïÏbÙo¨oC "·XD‹š·%>š%|§'”ªQòšOS^ ªÚŠk¨ÚJµ}bǧªÚÚ~šÕ%—ªEPªZç`׫RªZô§Qµ8zªªÍÔ”†ÉÖ¦ªÚ½}S5ŒRµp3ûá÷Ç”_ã Š ‡QÇô[$`Â2PÇÌ@@m¿õ(j–ÝöV¯†ý³è?ïÎÒwÿéêã„0zÞãdMRèQ@ôè“€ôÒä–¤pkZ7)ˆ(åbn‹Ú¥i_:„t˜ïÒ´x¾Ïu.Zütèÿ‹ÕÁ ¤|çØ ß¾™ @†› N^ºqXnƒåŠ>|7ÇÏ$šªy¯?b†þCµ6s ‰Ôx’ò‰lU’ ‹íMT0@>ž\F0 ¥ÅfŒQKu ?›±¹*†ùü&–eh[æ†íEÿæÀUÙ*ÅRn¬1‡€Ðý‹s%FK}„G®Øk6‰ ›€ÔíS\Mq“œî¿Ï#%ŽÍȼ—o£ç¢PDW âD„O=’§‘F) ®¨ì!Ù;ë ±÷9n‰Ç¨n¿¥>¨ïÎÍÉ»ÝÇÉ_ÙJ¼þ6=uÀ¡ÃBî"%µf™,„ì‚Ühæ¤q ¬síI]ÿóÍíñ`~RG¼Ê`ùc‚ wÐ#pY‘"YÃ9^…„m»ÅÌr^‡™õWo–³Š§ÌŠÈÈ…|5Ëeå`ʬ»Ç™Uèùš½bVçôø?kάԤŒ‹²—8sx³´&¸í…w³¦;+ØzÛ=%"Ä8—èDôk=Vö“Öœ#B= ù/ » hú;’`vÀÊk.åk§»ãåp|ÖkD„n~Æ€³\K¤X“&6ö„ŒÚ!áñ!óœLœòjW8Ѐ¾,{¤—Û¶ ‚Ùx8¤C€=´>®î•v?ðÅÌH1¹ƒæÏË®ºÞ¤»vã²Uµ'¥Å WÙñ£c“ª>Ò ”wý±¸|•¡ÊŸ?ˆãÏÈñð½2~qûš€"Ö}æ­a9¤¡€€¶ÓŨB¯x«çŠsDá|oW´Â¢³“¼=ôVøÜNEÁw&!1Ìñ½µbv2‚¥ë| x~â}¯Ià>@Æ~#âÂc  ¬3‚ˈ»@e3ŸÑ|Îår6n Kx½ñQJÿÀ²±¾ÒÏ‚N+6dÛx •ða äAÏrÞ„…̵̎Å̸ˆ*a&׿)Fÿ‹a9`_¾éïfµ“IQ6ä.Û¿û•G6bvÜÅ&XÜÍþWH'] ¤9kÊ…“ˆ)Åç;PuÛŽ?›ñE80º0¹+½Oq~hšn3Êq´È]¿…ÞE´GpúYî† !/rSº“\ýÛ)òáU®ƒßâ‘JšË4ª…q¹ªö’<Á§4\±ügyŠÅzYåŽô¨ëðûJÃëe8”!Ô¾¢eEI*+º»ö´Õ‰áPã)þ@C`±à¿ŠÚÖ&‹.dè¸ÀvZ” ý1Uyn–8Sª”³YK¡ðXxm<*x3¾Xx­/^Ö6®¶OÏ@‚Ó[W%•£rrC  æÅ豂²'ñ20ÉÊÚ·T?ÏÇ*Êã…]r¶ßZ­¥H³¡¯°K?Bÿ`?œRAØþài4Ö0Mó·¬Bryƒb~ftQ…]<*>®ª=tWÁ¼ªjÒ–?µW}ëhû”õÇYZ„ÂjÇl–Ö^¥DÃ^+ó‚*2mR!v[GäZ/ö'aáŸ'&úÚÖêö‡ÐõÕ„×—}lHžóqûóI½µ2©}"¤†àŸA~ÁF¹¿Ò„û&ý@?F)ö×Üôý|ïÍ××êg´k‘}¬Fï 3VêÉH7ˆ9¹€“—ýâp%D¯<@‘`ÙŒ·ÚI{ƒ6O¤ɆžXÀw>…PMRÿ –úçq•}}Ïæ FDÝGÍŠ‰S>cL¨fdàä`4w^dÿrã†3pm"ñ‘Ï×F?ª1è´P¼p¾Ýà#wˆµxÏ€O$¶vˆºD°¨ö£ÁòÜy¬<$4[…"#ð«Þº&9*>ÍÓÆŒôe˜Fa\#þCkÜOÉÍAEåæ¡“‘Er…ýºQ¼Y§loU’™·® ¸¥bÙAûƒsxˆþÿì*ãã»õ†@dô³¥Æeƒ‚B-r…ÉÇp¾ín¼kBzVÍ2‰í—_#švìR¡¡s<Ë’{õ“$u^#©,T¥ °»lõ‰ ÐR•H3äçurP«Ù•ïCÚ† +4å,1„Û#Çd,Bɯù. ÊÁLNvÆe«îëtå"º²XKب˜Ó¯à²¨¢å|¾¶é‘½ÄtÜ;1pËß‚c”okâE’¹ý©¥OW&LS¶²Þî¥Ü2ÐÝÌZjd%þèçD:FÐ<€Z:$l\óÞq,ê`Kœß¸cwéïÑÁ†@¾%²‰ˆ^ÂÄWÞÛ8'²ÂŠóÊë×QŒùGlǺqØŽœ0çæ÷VìUÝcÓ¤‚?'¾‘;M|ƒ«*Ì"ð<ñ˜WöÖ@ÈÒNà8é^ó[:WAQ7Ëó¿¡F9<Á¯×TÌŠòæ%Vî,昂޸vbr½XT†Ø_º×+_̤GX”gCÅ(Ô_.$´:`€Ë.n‡¹Ê~ÛãD)ØÞÙ“~•û¤^°2ÈÓSVÆ00¿SÿLsîÓ»ñ0ôš# J7›¥"ôáËÁ"xKÕC¶©}sÐé65 lÎôG|˜"†D.ÍO¤ñ À(šŸDͧkà¾ù‰M7˜ ¹I¨™¦’î0½5–—ô1T&¡!ƒÞÖ8M4¦–ß-îÄÇÜ6à7²OWoÜ8Éø[¦zéÜ|;ÛÄ{B–àã© g§Çºhð¯AŸÒ ×NÀmÌC|èÍvá ¨uJ¹}者vyµ–pð£¸R ëMॗy'R,íù ¬Ü™bääjSâ $ŸW ù\*x³LÈçrax@”¼¨;ë­ë˜ÐNõqÅ©iE ä´,“k ³¿.dû¤ë{—òrvÆÌ*Ah—<Éür!ÏÓÆÖT´&:ÙüˆôiÂ,äüÄŽ•-@w2ÞYØBñÆ,þ¶ ec/›4Åjœ¥wÐ:‰Û›ãRÙtx8Û&³'8ûíîSæ¹q|%ú]èÇfæØ×“‚#sl3ú'ð#˜ŠÈz]~ 2J\‹ø[»[s Ý;ëÂä$œ/ÔU÷Vÿ®^õ²< Á/ç“,®© Ú/žB@úY Çî~e¤ï‹Ø…Ð'@»$ÜX¾€ |ʘ–\C„­9b€=ï;Ý[A Œ;Ó¶;·zd« “ÝSw ´²v—SÕ3$>ì )qˆÂaÛaGéâ$FÄÎÖuÁ¡7CÌ·ð·öÐðbÍ¡¯„e *2>ʬ?Š\~'í’yk}HƒºÕ Îgó BÑxibRoô)?œ$yþVš{ˆÂ _Æ ‡+“»P,îÛuáKéÂ]¨ð%°w÷Ûƒ„/!¼§ëkT R1áxÄÂw¼Œ _¥á‚=·ÒШ}÷ƒýûWÐ*[-¶y©Øæeb›— _†¶ùÖÑñâiü¡ŠJ< †üê_ì¼'ÈÕ¿êd }³yÌõ·è›qÃç÷=ú+9Ïé?-Æ–~ÌAÊT¹b©ÜCׂÅÇ”Â5.H|UúÊð“ÅISç ŠZ@˜0— q±‰´„ÖÉRe¶™N«W¶Åö^,<Ï~ñÒĤ2ÚªfÙüalùßCü¶¯|·Ù’‰¤oCvåÍh²ôÖΔEblA&µaËÂ~ N+ÔÄzT: úd–8õõ`µ˜«Æ•IWKµéîðç–¬F¡s9Ñ{Z.Vœ€-Á^Â,¾x¼{¸£˜-¬ùjùÉÝ—¾Ï§.uríEШ²$’ü¤GÙ ÐAý¤r(áOï(Ëû›%ÜŒ´rŸÃ|¥„ù)7Ù¸Ç1õ@ÌJSÝë·•?( :ÞqN•/H6XqxE†K·6£·&Y·bEÛí±[“˜T~Í£âtù½ÂJcÿGåßq0MDoF£=¥{Ʊ6î¶ÎH§£Fanùý›r¤ÃÏฤ?ÀËÙÇ¥œzã:Šv»voþk|˜‰=ðݮŨ¢˜åu¢6“؃ôÍóä¤ãQXÃÄÉBje:+R|B¾Òi g.)·¨9¹ÅLu9¡6µSFK£†e?µÞhMLWà šáóó#ÓÙ‡ŒŸ¹€kÇêÏl*3†\ eÎÐ †ldÉe×Cu­Œ]a´Ï"ŠäzB‘ô8ò°¾§:$7 ü_RÔT˜K¦È«³áë ¿…ïž½4¹¬¾ƒûšªOËòÉAR†XÕma#“ ÀFÏ$•”Í Eî[lLj'ý(,k+ç1záV`Ë ìñ^äà%GÅ+ˤ§ŸŽ/e‰ªûØ`RÒåBI—‡ ^ÆsÃKÃ…öîxö€!±P¢kW¼à8žpŒÂ)‚Ó‚w"þŒ^yK3ŽÉˆÕ[À½íWc“'ÝŽHÉFÏß™Z‡|-TÝN6fAXHC즆Å4ÌS½€âG;Bœ…ßÝ€£a˜` ÀÑÊwZ@w ¨‚ûNÙj\­7 ÆA|Œ› (Ëo;k<;k÷ü¿¾§*Ãþ»ßŽM6¥ïšÜ™ ’¾¦Ãj!¨ ÁŽA¨r³rn»TíQ%“lÞÿ#Y`Ò$TÞSOáÙ‰1j¬¡K˜ \–-›&¬9…CSëHwþ'Thq‹Ñ ûï évè¿Ì6T]7$b;m ´aûdü°3:¤ Y±§6yœ6¹ÐÕîmþfâêŸ]:òççÔ6'Û¾ù) }Œ,øÊ€Âð:!e¸:Ì«4wß@dRO]ve%ÍþXþ_s¨¢<>_S^ç mŸØ¨P3v@;j®zº‚Î9Kuh•šÍ܄߬d-|ª}ý}7µåë»sІ°úï‡V`ÇIAᨵÓÓ ¸úW†„z-[s¶œd(aøö¦!‰'m§m\IÇo¿[呈ZP°{_Dƒ©ìê6Á D¯¡€™0Fà&kMˆKø÷¨¢².»¸1±3°Ýš¤àî{)T«ð– e=Ð oµ_˜ÀÉêÆÆªðm¡$­'"Öã«i’ Ê5òØi?lþ±I„2—àÞsbÌIJ{äZÉ5¡ibÝ‘>­€ð e•c”÷ÌK¿ÌpÁ ŸÜ×då¬vXxµdá²iY˜86¹»ì—.*¼&KR¡Šîžä¹Çho±5ÕnÜF¡]·‘uu„¶Ëy xÍ,{ôI|{»ÐÙÖN.È/øü& 'GÀ Òõo@ÆÙü÷&õ´ qw¯•rt¶×ÑÙÓÓ"MkóvŽÑüpbË¿”ñLϤž:Úv{‹ã=™·°0wMLr|Q—®ø6•Z9¥rŠ„YhÎú 3üï&g†³šäýÑ(cìBñó^àÉJõzbŸʾÚöÕÄ©.“³k£…Îø ³ ¹f—1üóYÀüQ‡ùQÈö»„l§FűH¿ÖŸ*dA ;Ú»3¤ŒPêä0Ÿ¡¯Y˜.å‘Sί$ágBöÆ¥òÞø^¸µ<ÿã¡^T^K?ã<wÅœ§y£ °qÖUƒuû2Œ“3×"Qä²f§fÒ‚hõ úÛ'Odxø$2!$ `tÔü²´|Pì‰s!*C.aŸö†aƒÄÌ0ÔuoEFŒo M©›R¾V*IM*É®fxϪY,̰€vø•{M„0ÓÚpÔM®K#á‚f"ᇄuŸåmÎV yá>b]™½)[Ú½  Færü’+‚·“vk£Çª°üß"èT[í¡ ÛéB¶‚ÿ[mä³W ƒ6ðöI4cXs^'mµH¨3TÇ5Â’ÊÑ u"Yyˆž•fÐ>ýCÇ EM—»I;7³Iëu™´^ǤEÍØ©MgÔ¾Ú€FíðoÈ֪Ѥ ’]³ÖœõiÖÑ㿦Õùí}\‡P¡•óõëEæž`æfã©[sOCk~ëBä?©ëò Ù¦1iQYE$ *«5è4óaÚmÄê# Y[ó0¤4‰?‡8·pt·´0T%œÃ ˜ökoFF_Q°ûiíxÊ VÎZÉ“š|æÛÏÎÄî G aw3‡¿¯¹ð‡§#kEYo–ÈšãÜí9¬ kÍeV H6Âçu$ÀÕšùtò‚—$ÈÕºýAcL˜j‚@CJ‚ hÉ©$(%Èÿ<žÇHÖ g¥ùPI!” öWdM$G´ý_\‚l}æ I„âÕFö¹cB‰T:æ“ÂNá°ÿ¥íûã£,¯|ç™à¨Ñ ZlÓ•nçî’¯©K[¨´”(Jlã½¥-Þ²·Ðb×Ï6éu·! ›¤åídH¬¡¦m¼ëÝÒ®®i¡ÝÔ¢ELø™„_Dd0ZÔ AZ5@0÷ùžïyÞw&ÔÞöx'3ïóëœóœç<çç1Š>…™©SÚØ”¿ÝÙîæð-Úd%:R¹ç âdoá£ÄŸ˜‰# Åt‡KH^ÌÒ½dç´Å)4¹mörz#¤üýîìHÍÙPYIÚ‘¢ ø^$«·WŒófy©È7У ÿäÕÇN;u5ݼŠ-©÷tì®Z‘.¶üÉÙÒ. ?]K%`ÆZªM)º!Áa´Ôˆ•X²“hJt-óòV27åc€Š¹´¼hýßóbé¡V^ D\õޏú·UB¡Ÿ3ÈÜB‹k•{c­>Þ‰;ÍÉòÙ±gçÄs”RU×€„&<þwÑdzvàÕ­æUup¿-'^…è%@øÐõñgé*Óêöƒ´w_7øŒ½åuÚõ›MוÈ}Ô9™¸å´Ÿ;¦]ã u5ɪþNx/Uå·¤jg#ª "’ÈéŽçN8Ôê-fð Õ¯JýÃÏÎxö!IŒÐ^ž•šÿ3Qv‹Pø]‰Ê³©o³.\fä½Ò‡Äói\OQôZÃKÄ®÷jt%5÷¨8ƒiz*Êò»gª~PíÛè`¦ziù—苈›Õ6%ÇóšØðÔÌ’ë´{–U6£ Œxªª‘íˆÀ;¤ðLf^0$·“wÈ­†•¾îž’ èãF·›Õ~CTëå,Y›#¥¸O.ÙÛÈwpÞ=oÃ$›r×~z__Wù_õuô¾÷2ÕÈÏ-—,¶õµ’}7Í­rÅýSîHCו½Ï×§JM½=ѺO8c1Èõ»]…›„úü`iI\S®£Ð%:u ãcVR|L¥¦:Ðû·[Àбº]»¦X?ᤚe…ýø@§7 h” €ð8Q¨ùFpß^y‡uEêFˆUÈÝŸt&Áe.ÀðhAoÊ¥¢h~½ŸFeí¼Øå §,߆–s«ž‰SÏ_¤úþ9цr¤ìy¾µxÔœ¾®|\ê†?#ùùÿ¨m´hðf/rN£f“Û Xƒïe§Œÿ¢Z]Œ/Ö˜X¤’¿çå"ºÞ›×Ê›éNØ­¯8t·: £ýöŽß‡’•Ì*zAŠN?L$ì΄sT]Wå¢8³$hQ:¤ûõ–$•‹ù©"w#IÝ9hÐåt ŽDí ÜB'›ü®xL7¨ÇôVñ˜Þ™ iŽë…˜eË&‘/­¾ Ì+ëH‰ëÈšR[÷eàúr«Å„/¨ÙÑîè5­gzM³öÍÑá[€ñÍjŒ6´˜ñÓëZoÍÎw lÍÿFçW×úsß.;S½mókÎ:å7%&<ü¢')I•´€óÌÛyIŒþ/ªÇÙÜ ·©§±æl°üÆÄ„Õïº/ 3óÌNÝ]-ò¤ôu±éË<èê‘wݕʑÝ/õ¾êqÖˆ1°áÇgÃâ>&5ŸE:‹Ö#iDÍÙ‹£ Àõ„V;Œæñ‚›à†Øqöj7åIRTHØã/ªÆe˜<ÖŸcòX?Úäaæ¥féÕäs°v¼àY;^ µ#®¥e fŸ{2›œ2lÓ¶2År…¹VÄ¡Ðü›Š*’ÀVî…%æ^Xy{–õ¡@½©ï'HÿhÍÙK¢õ/ ¾mè ²Ö¾È’gFôœÔ嵕ã°T›Ã.ÞK:ç-^-ð%Þâ í˜UïðV½ùÝ®zÁ»YõŠÒ,ûØ<Ú^òˆ‰Ôš0_Fâ²¶Eî+²VðÒØ|3Yßÿ¤Â̳"cž“Í¿™ï‚ØT{GLó?¹†MaP™m—Q’êøBV UÐrfDEÑø³QÓ)¸ÃRðº?y‘ê,J€Ù|y¢V¥Û™¿ßÜ~S@ûF#ûîÇ9‘ÈÊyQÕ"Ü0fM@–§¿-2Gf¹æ_ŽŽ|>+0Р«2”¸ÕRâSÖµ¸{j:‚3ɯRâ—¡$ÈK\VJlš•œoAKÇXÐR –þ‚®Ä‚6üù©íˆR›˜ŒÍž¸T÷Ä…ÈŒJ¬YcÒÚÇÆ¤µÛo3´Öþ£1[;£òwÞr®ü`ÏCõ ˜uKÀ‹¸ªî¹Ê«Üƒ´+ÁÊ=p“Û¶W\#H¾¦~‹4-´R€늮ÜÂSTêDô¸}šWFL-0‚æ÷© AwÖQùßõìdöÊ/Ä5ûú>÷°Û›ÜÝRìt¼ò\Pmž#ðÞqàS”fÀUºØ·V%)ÿ¹½E~ïhéXÑëYæv‹Î1Úp$dMíÑ•?£âLÖÔ­¡bT÷…šQ{÷rôy”RõšáíB*$HV`Ç,Pû•¸žBûl ®Ù¦e¥6äjÖÅ'VÞ§¢ínw¼´%Å5[#ó_ë¯?uÿƒgFT,wOø'k³µd‹ H×InQ¡½âÓîÀ îɤ^³vçŸrºÍG˰™½"ÓÚâìOÖa>½'’áY³ÅLᘹxhzá| ÂúŽªûŽc¶T¿HqCÍßèîûœÛçEñix ^~0ZûK"M@ðQ9ðäM|ßÂåé® 1ð¾dmAúRmŽuæ5tw‡çE¤7 ÎÁ®}[þPîHdÜÐ>û:ÕOŇÃÉùÆ@Ðp8Ùû9½2ÐõŠèb±³uÑц«Ð@‚×,?²×N¯fh»Òn5}^°/ åoƧ(û6Îôèp‡¿áÅÜ(áÛi[°n¯¡C=Ô·:<ÿ³b$ …¨ €ÃlK×ú5B‹?˜çÆRs:I‹í5ýN]{ùû”ݾ”ÔS¯n;…f:®4-pÔ£n°é̈ÄØã¡^~3³€FðÁ×nxQïÇ·§gº)ë9‡äÌÚ¢þ¦ùÝøpOâF¾/ÔÂé“^år£½\•î·óoÃüŒ6µ?XóŠS7­›‰¶¶É _­¼5Y›×Lôa00‡ÚÂBý²kaFÃdƒS¬îE®§(*ÇZpÉÐYƒ¯ºCìÌØÞ=mršZ6c½ÄÒMêêìv˜ëÙï #ª1ÂRwæܰ¤K†ë ø îÁöª{"Ù«ü7™5­9ªYŒ§šÊW„³1®=,xÿ];/Iä\{.×>…þÆ:|GrAth0+õþΌ܈[aÎ`P…>u³"Ìð_aíHß,êRV¤D_$/~nÊ´z Ð…8aU̲êâžâºA¨Ñ¥–8^&:4"#¿Ó¯ÙÁQ[Ø{[J¤4Æë *æl5¬¸Ÿ¾z5_cújêü›b¡£ß€†ŽáÏ\@B_q^K|û˜Û¦ÂQ~Ÿáæ¸#xº$g“×:ý·[§V;É]ÎL®ˆÞFV~§³ßFsÁn¿iØ-N¥yŒþUÜ«þðÏ_ñÛÚD @<¸½÷Š[VtÓ(]IÍ+>H,Ðò$‚&™€½`¨)½D–n™–.UOãRçDüK¥Ãˤþn}¬‰‘Т‘¯++Ì ¦-Ö|[À÷?Ħø>&b•\Ì¿Å1Ü1L»%„%ÞT°€*ýï)by•uë¦z«œÊ™ßå­Ÿ4¾Ì ßh‡— µ@¥uÕ’"…Nš¨7já¼€ >“Q9,“9G\/™óoX|ªZ×+€!X×þ48¡¡c{åß Š'I˜G†ü•Ó6†I}ùkYâvÀ·f)ÿ¸Mˆ>µléX†Cˆ›¬ü¡ñ™£ý‡%>s™ÇW…qàPÏ 0JséJÆŽªó§úÙN±Îºï­[fGë÷†õÍFGA+«Ò.OpKfŽˆ1D%QŸ Š;ä^‹ÞTͱ?Ihæ áp›s@¤ƒEl¿•dít±zÔŒfñ^ŒÌ­ê×î…ª¯¶9—N<™y2ä»§ª_ž,r¼ºìB«Qæx²!!µ%´á"\àl z­#¯‚ÓJ•Ÿæ¢îU ã²íz¯²¸¥ Ò“­}+rK —rtñ”û›Üä¶áööq|:uƒM~ßj8«œâÃಙßa¤è}Kž“ 8¡l²yЋÍÚ£Aw=z §™ž¦ „‰‚”\ÛQÆd«s·ùí:‘Ѩ;:T/ÞØÛyx£EÄ~E„y(qÛåŽ,ãvë=ƒ8×áµQ<ZP|¦Ïšq-Öó1Äû@²%_5&rW>ì]¾©š»x¡âq!YC=á"×+6 àÅJAÿÂl? uÏò(~ô,o_Æ!„ÿ¦=ôµ{*¾^f×B0 V[l×:çêgÄTÕbÓú …|zˆñø>Eà‡Ô¢Ë ø­\¸§ÆRX}d]×§Ê'áÁ‡¿Z„„|rÊS…lz%´ilà©à—EލV¶,6?ññÜ#†ºÇî»)nÕìu/aS©;¸!Cö+1”š_ïZ'EgŦ½>Kl™fß™KÜçôèòôê6]«˜fÑ_¼íÇçV+ºßÁùê°ë5WŸÝ&mÎÚNwœñë§€×áâ\/? ™SÍj³íbî s4ÉBû÷ÃŒïÈÐ/Û¨¤lóÛº"â'Ç|~ÂÜ'!|(z' O Ê«y|Lâ#ÆÇd> ‚‘¤PeÈðþ{ƒ¹ŠñS!zšDR™Jg¹iAÿò9ƒñ1‹Ù|”ðƒÜ Xp_-+SHKŒ¹ØhRLvº¤mÖ Ew5­T…n ÝòËNDzTxÿÁ—Åê%qo×ãèBz)F=›;WöKJ÷¹ØJU@ž¢[n÷MÖJ¶Ûâ°¼oS0 jg³*µ–®’º]Ýnó8qOO/·ßž"vh{WQ’;¸Œ‹IK#gAÓ䬞!õ*9tóªD4Ø|¦*1Œ¨#¼Âä5¢JÜõÊdžcw½†³‰,ÿ¶Æ¹{Ê]¯(&¢¢¨¡gó½‰úž!irЬÔ9ŠR j¸É¯ñz•¶Êçuª@ ¨{eÿÙ õs±’J¸½ °ðòÍV Œ·´²ºI+øîô}Ë&ØŽ›ä·E~(žWµß Â.ÿw÷MÿÐ:åttWˆÍJ'¦Ì jÒµ|kÑ!Úlê »<åD‚Æû­ ™h­æ÷,oêø}0žV¿ Ls¦7Ê8bˆx¶-å¾áõ¥–¼pÑú•{b1‘b½kM?}ú_çù:zö”Ãf¡s”µw•]©‹ÔÐÏoñ×Iz˜4'‘Üc¼ Ååâ˜5·.ƒe!œð¥èêPøÊdÞ¥!TâbX¦ÿ:Ý:­»˜´eÓÒñ6,RìŽÖ¿ðì>7ظ¼6§BÓxºZàsgþ€Ó ¡r÷”õ2ãèšÓ®&Lݦ_}ïLtÍÁ)õ Ðݪ­™R«_ls)NÄÙŒþï\áôdÞU¾²b)®2Sv¡A f¢¤Òê|ßH3HéxynÕcÂL¼óážJV=˜$Ø[" ÔlUª‡ ïEΰH!%z¬ðöu÷1BTQºýEŸ–ÌÝöá•×ÇÉß•M’ŠvºG‹Àp<ºf“·n\Oª…9ôÌ«z^oDiþ îï–.gsháoûL—·¸ÅîÑü“iÄ›ƒ µ¸Q¯0]>%¼¿U|Ÿ wž¾^|¢<^ ÜRdßýdßþÝæ_ÿ‡èy|+̦rþ½“S?þJÖYn¼K‡ÚåÇ*pÆò¬Æ×µ±g°¢iѧ§.ûåwDÌ$zƒâȺL”¥õ±CæÏº7Ë"ѧ ÊÛŽ}õ>­ Ñ~rã#Aq¼ýôªo~ Ž·bUºGOUw*=Šãš`݈˜WþA¨7E]Åüv 7sT=ê!’ÄŠ°!÷š:€Å¤ÜÏEx‚|k¤}ó­áíàÌHõ ƒôE©üÏÀåì.ótZH¿Ô•ø¶V¾íëJ¶Lf˜›yš‡™ 3u6¨]Gò pθ­’B¢=ý AUH;w –%«µDy_ǧhÃoßöó;÷Ú Ý„$ð\3ŠÖ5’ñ !‡W…¿ù…w@ð 'Ák-†ü=\Ck:^×sâ­”;™±”¦ëµÚõoÈ’ÖÚ®Ûða»Åk2:îiTwÆ]z}:.Ã÷,\û˜9pÝ}ÏÝø³^‘è$ˆd jñ*D2öéçW]DYÕý>ºÚ2Ð…ð+έ\îú4<­g£!OC‚§W¨íZ›¢Áƹ±é;‡Ò ]r˜ìè¥n›_®V¶8\×ÿçO¿sÐ 2(mØ|ºÄŒf€qÙõ¡J³1ï4âëÜãN;‹Ódw;ѧs³vü`vÃdé1|;FvÖòS hÉžÉz0 {&Â}ÞK¤f‡¯ºF­ø1/1ãÑû"æLÂT øâ¹õÿᾈ½ÏnèÿüMeÄéÖK—lh9¦m¢àƒ”ÅÈ( ²X8Qö=¥'2ýDÙ%ê´þÒàõ.ƒZå•{+ÁÍrM0 JÉÅ$Üf³z8‘á r”ƒ›š«EvÝæ¹ó"Fz&žâ¹‰¶×æùλìïW|9âì3k±F¿1á;LÏø eV2ê«pNák>öìÂÈôãeÙÞ„? ñ¡ü9÷²Ÿý F”óÎ7ß’ ‚@À¾æ4ÎÆ\ÒWžy”_÷ƒðçÿA|ãìEÜ\P$‹c";<µ Vù’f‡Ô[§Xÿ°üÌH·"$û×eçцO›ƒkp<øæATʪSô4ˆò+«=F¹š"`Ér€ømXCµ`R\h€ô·©çþIê[7ñ€ôJ6C«\nMÃc„ØÔVÐF@O#2ÃB;±Ø!HᎯQ+dBÉÀÁ¿Ž×ë÷õün‡G¯vº÷àFŽwÌxª)FV·ò7ã5ÓBzü•ñgi/{†×ÌK©¸)‹sJˆ©›XWõƒLQ÷;úAÿãy2—9Ú?$ÜdVà%³/{TÑ€XQGU8›Dû«ËyE¨‡¥÷ʯÅ9AIh4•€DÛD6.:Xé’½ÕÐ((ë5¥Ä{ß鑀Ⰲ7ÕÊ™¼£ß·rº}ãTïtK‡Vm‰w,–ȱx½x;¨ü2;ãpÔølgã"»5æÛ&AÉØ¾¥" ²qž¢IÐ'ò„µ†·‰$N‘«é¾žÇþåõ‚å’ÝÛ'1ó˜&_Ó“9Û÷A@òµ¢‹6ùš(<|íãÿ)É×bÂÊ.IeÝ«ñUcÏ#Á3Ø:5€§³©}NÇBò–¢›®LÇÊM]üÓÇÊJýèÏŒX3ÉbŸ¤`fO …I¹< AÜ{¬µÙ>Ü,¨ŒxjåþŒëïc2B!5ÃW<Êsq³káÏ«…Ù#a¥[W5ƒÈq¬ãdˆ1íÉÚ\ØÝÃîÁü“äkð¹p6ª›P"é°¯ýPý±i(‡nêO~¥ß/öø|²54,cÒILӦü¾j'ÆØ¼·²I¡G¦…B¦#”Þ FhžÇÓHˆ5Ç'‘Ê@˜d¥ÒÓ=g ÁËÖ6‚)°r„ÅF!ì.‹°iƒ¦•æñ\ކ/tv¶_ÂÃÚï¿<„¹¸(çpÞhŸÈíPûÁ’ve}ÖõžnÎd·± AÙÁý}/$I©I*0ŸøÖEIª+“½>¯ØåÌ8ýr<Ð¥M ÓÅ,ð@·@@—G—Ý»¼†‹tÿ Ô“ÿ–î­;péy¡;~t½é ¥9â9›óм+¿žàW—=€ŸàÝ™tž¼©¿÷D¿< iC:áE  §hˆ… „„¤Z±n5„s—ûg°µBÞëœsg,SPz±w´ (ï±Ê`9Ô"8Ô¤²iÐW 9¶²i@oOÎ…µèÊ_<ˆKwÃŽ×úF9ߺ3Î7s@c ß;·Í=¬–ÏQGÞqÿÈÓhöMˆ¼ f0@ΞdSöP‰8òµd/I÷úÚá¶ØÔLÃÒùçcÁ=ÄÙ<Ÿû­ ÔÌ¿S}sTLGš¥ü×èU$‘4:éƒÝëñ|2h3̉w÷(mZâm ¤o¦tD‹[œ –´Ëµh;x†éÁ<ÐQ~÷ò믄ݭÎÛ‰ì× x1§SИAYÉY—ôãü•C_—ù0M>Þxx£ìóUBlq„AÒaÕŒ»¤tij'ÙqšH3NÏ(®^}¤þèØt_ -€’î0ømø31ñŽŠORV?[çlY-äy[}W©ö¯lÌÏt߸‰'þR×4f{Ns¼ZŸåº»óDë_ ûwºäòNw:ÊEOˆ 1v}‰±]zÄi«»°<ó>Ó"ßÁŸ;-½jæ8ŒA±éËWò·Z‡ šÞë‹¢ƒÝëõ<ôé_ZiÊ¢_+Œ›¢/6ûŸ3$…N̳çÙ™Ldæ%b…çy5_€ç¹hØJc¹©–•’ÿGÃ÷ ¾$êÚ‡eØG‡Uƒs¡a׎9ìº ûßF û›BL˜ì!j‡jôŠš\¢ Ï>ú\­ÐB’/>a‘DcyÍ©Py®þvè²^‰ú]2/–úÚ'ljŸ¿™îs|ØÎ^ðéÐù§2Ýv÷Dûؤ ´þ3Mdæ9.ø˜PϬX®Í‘›Ë¯'ò뉿?GÚ Y+^’pÿ¢Ä‡VãbÐsÓR0ržù7Éü‹!Ž™ Í¿B›žq,GÇ«ø“8:š/Jžü[¾RšÚyEV 5í‹p¶¶[nÓr|O4+­½âr¯ö…A e „O;ñõÂßâת!:^Xž]óªN‚©OtOD×쥃oK»@¥»èc—`·ÁÏ…äØ1"Å4òïaûwÿNÙ¿EAÞ«–Y¢ùÖk—öü‘ž%Ϊ@€f¢Ú Ýá’³h’þž¤¨¿‚ãàºöÊ9Þ $ÎI"û¸*gÜm¯ŒK„·i¤ šÝæ…f[·gÿOÞÙÏ«NÕfÓÛ O9 Ÿ`“ɵ^™øO9~}På,Àá{ õÞ¯¢yŠ:ëˆhУÊJD ‰2¶*ãY­ì·i|,iVGAX0e‹7É·î뵕À›¹…¥Œ I8âïqhÒ«u$¸½Aú©O|_‚Zd»w•]šÚz—w~7Ù>ìϧâ=Ìgí;Îç·çÎççnú|²RŸ¸KBš…RÄó Œ‘R;Œ²¹Á ­ÄI3bÐLb“‚žÚ³®«²,®-áà.–Ü>óIègWÇËãÙ»âôeß=h“µSá¥ànEêOÕ£™—@^¢(¿ï·ç*Ê_Nö"&„£‘ÐÔ2"Jl‘n'Ǽç3€½ÌPËØäD!­%hëryç£^0ýMö_²É¬Q Ž "Özûì¯+ÐzQ°T(_,ÌK-Õ˯á“V-{[-÷\ôÌÌ SíÐx6À"yµÕê©¶ <¸{±­º Æ«{ƒ³ô¿G¤f’„œyg¶›©qNFü%FÔ–ŽÓþ1Uº[üz´²(èMÄÝ”ßˤâÇ©m^LúXDú˜¯z\i¿Xèã„¥ÝXtönd-0±%ä.Hç/ÅP$©Á(¦ƒ56QäSÈbe2õ¢á±«·PPÓ¶^‚ñÙ«¥[2HýÄCž˜/Œpª…Œ.R¼Š¦=«Çš6á@cM›Pìs›,àÒKƒ6‹R»ü»Hm ‚VÉ+PØ×ñ{ƒú}qŽad>w‹Ù1˜`~JÁÒ©Yã³~C—{œw?§7Ùžv%eÔp¡ù Ôð¬ÛfÕÒwyŸ6‚oÑêí”VÙŸð웟UÆJÑ#Zw-»Èî÷!kO> ô4µ×Ý{F þKžùÓé0žá–{Î@âa{ö‰Ç"4f‡6ˆ€'’µ˜qò3‹Kˆó‹E–£‰¥¦Eú|[è Ÿa¢fRD½’úCÈ¥™KÂM¼Ää³VÞ[¨JR¬@‡:qžƒàÁ·ˆ`Äßà°3l¤Û:‚MÀ\(ˆ,Ù+t߃S½îv¶%”Û½f¯©ãížÂlyÎòm2K³žx‰þ`‚¢-¤\5=AÄš>­{†à¤þ”;T“ Fë_Å¡{ª¦cD}A3D1‚§¬aº[}H!š5BnE¤uLÑD\Ùþ’¢ÉO–gŠS柱6aðÏ9ÇKÀ…öPÛLÍwÈAw®T%zTõ.ëžôE²!™›îË«¸~‰BéV{’ìK±Š`SÃêd75ô÷d§)Õök?÷s÷Û~Ôê"¾ÏyqíO¤Ž©»Œ/s;»äÕ^r&Ñ~«b}½ède°&¤±¨g}ΜÁP‹l>ÄÇs <’÷·S»Y•SëÞZ~Ô±jM„‘7L4ï-ô0f–wX†;½æ{ÌbÉs˜ $|9ä0Q‡—º!µ¤R“»ÅQªžÞîì‹SnFQÛh"ûµuýª´>Ti>T›Ó.™äe×&ô¨>Që=tDoµ‚¢ÊÖ•‹í…Þ»¢&|µ+<ÿß#žrðÛ§+¤Ø~Øk?,íÿ6£ý×^ gšwM>‚Í-ªÅ˜Ç˜5àb³Ç™6Ë›+‡GF?£,ƒ]þ|\#+jmì© m¼»Ù˜ïwz¢ò²’íUµ4Ä#Ó·Gë®'§2ñ;›ì©=%T‘ø?¾ÜzJ”.³ºÔ©zvk/*àðÒ|1™,d‡co »´Õ(«¹7$x…9%Í_“eGˆÚ½…9m¾±VbeÕX‹ØJœaáLó ø´£d"±òcÓ1QçÒ¥õ„H‰Ø”åOXY>@Ê“š¡¹=q=©‰j—£¢Õf±|ëø ÙÏÂ_ÔrF¨AçØìF@ÜW‘Dn—sZy…‘|:vsS0‚~7²uUuõ1ÅeÉg_þšh.r}Îw¨ÞYxfdäPñPòKCŠ·Izñ³&R®·•5×èru¥ìVqÍ)¤…RÅÍ©W)§ã…,C:®– ‘ó”+l 16_KÌßôɦ‰˜œB¢¯=­úPîš_ ±×çÂJ²«#‡1ˆ»žyîðïy;mŸ-Ò'sâJ’‰üQG#™w±¬ï[ÖG$às€À ;öºfÓB¯©k5<ÁÍ^C¥ç"y‰ïiÃU̘,DÔ]çòûÛʅÞ:®‰gÆŸ«Å·±«ÿü£=“tþ¹øGçyùGÇ?r3ùGte(¤Ý @Œ§ðˆjç´öºK&«±B)U¾Ã¤d‹]ðä+v©xƒ›½Ô`Òô‘3FRaÜ1«U^]OåÄu¨ëP~+êH¦½9!üÊèb6Ûøf¬ø¦9·Vý Μ–¶‚Î3­V8ˆ¹•b¬§œeWª£=uÁ‹ÂòšÌž±ÃÑÇÇGÿPÄ <ý`ù5qÑÖ 9åWÆÕ=OšŽØòK4£ÖQ‡O®.¡£È=Н+ntnˆÛêÅq”3Ðv¶{ÀÙæ¾}ü“5oV\Zóöôªq7Í­z]¢{L:2p³šc‚Q2kÚr¿NyŽMýëEš{ö–Îk˜6”‰q†ì»o¸¶ÎÎQ䈳ÂRõr‰Ù~>ìQ)–ýôÒi©–×IÆ‚Y±¢ÔÙá°–%Îf²cæ‹8ã핵L?]ùUÑÝ„4˜[²Labš z{þ>gŸ{”%Õ |Bùi!ë© E(й­úIMJË6¯_ðv?èia3ÑQºù°ò‹2íwv"ÙŒ”dBœ-¾³*SàB~ûZ!äß8g^Õ¦¸ÇÅ&‘dúIΘc‘?e`û…N€ "~*®w‡ŠŒ˜½%?åtÜ,Ê_ ƒ€2É?Bv$I¨¿âà¨9ÙñÞ²l¾yÑÀaªRPvzm^?ËtŽ­³ëe™ÎM¯†mÑRbG‚iGGþ¨¢KyR‰,{"›à KÆu¿˜îdó¯À+ª«Y×ÓjëÖ 3!EùB2sùþµã/§{ÂEέ»Ày‡ú¸pü9§~Ekìa «8[ ˼õ™3#,Ä6`Ö±áéz--ŒÏúõ°a _Ï®7?»K5<øŠþî¾eûšõÔp|n¶»1t{öô=•¹¥O m¼qNÕús£¯1§MšŸøçw§™_|Nv]—#Z–'…‰Üƒ,^<,ÕL¤ý¼ªã 3aÔç*3ªüàÙ‘ L`ù±CcOÞ ï½ïR•—[ÆYoƒï¯{uÙå¶^¹|“•úÕ§ÏŒX5quÀJP5b?‚J˜+g›áaxa:¬ñ-ƒÌ£è)ºæöãnSf(+zÅåÛ5›²¡Z 0êϪµ¿¸‚áBÑ?ÉÃ’Iœ“d…`»Ò.žÑ†§xu[¯VøøS*„ø¦Ìg³¶Ü,-¿yfd öç_â¼û[ÿ³ç .ë&‘pq«´ùÇpñ¤ÀMÕ€Õßd¤Íq™QÜm²YDÅËבî¦\õ„¤&Z2œ°éŸéö#sñÒ,JÕ³)øMæ_R¶@ñ*ÉE©Š+²<+º¤Z_ÏxñOÖ½]¹Ìû¸¨ŠÁ ܃vk@$eâ ê 0‹—òmU²ÏZ¹¿$¡:DývB¯…”üÈ$nFt-ÿîä¯ëøW»hõùËôžhÃ'Â3ŽkÁíYßFV¿Ž78Úzö¢ŒM¸M·J ÑúìTŠ“mBž¼õÜtDÞo-®;º}r¸,]º»cîÆä烃K|újU&ø+®¶•>›ÒíA¸,^²B\ÓÞ}>ŒñYO »³vKŸVaü„Ç­U½ƒ_v‘S1s]ÍJçÍ>”€ŽµìWš^Ø¡¹k‰yü5° 9\ôôµÂ_à`{€—7ü)|\“ÔËJz”Y Ev†kò7¬(›çÐv³‚“iædpÞ‚üZµ>·ˆ3gŒ¬†q×ö:ÞA%„µZA®+–s¦[ÅïÀ±³èP¡VP²¿Ø=ê &̧Šgh5=U6GÏŸJQI~EÚ´J‡£kJס@ka¼´†`Ч¥+†Í¢0ßÜŸÖ Ãÿ¢XQi!F›3מ…kôÆaWêöVÞ騺0»¨3F¢°ùYosvOa™ãèš?j]í¬'‡Ýq:)çðÜª× Í.ZŸÉ¼Z†S›/7Ìüý*p™Ñÿ^]Ä%Õ[ÆLt|Ìô™ØñǹfÎaÆ'Íx´CbºE‰*Ú°†ê;[½¢Ñç)h²ŽMzµI¯4Y|ƳOn&ÚFuªž[¨Õrná´„óWD³l¶;—ùת È¥>–;f¢­wºŸj}ÅÑùµþqoçUÝ Ï3¶“ŽRD,¶6lfc/â­” óÖ€TÔ§1¬ u@ø‹žÛ-œ®Òš®·u‹{ûjÁª£ñ§üGNGr$G4Œm%‘ËŽbíýŸÿ¹÷yF–¼?v~ÎŒž¹Ïý8÷œsÏ9÷|hºÄJ½À2E¶Rƒ¦ÍOE­Ù%yÈÎ÷_/3®‘&õ#Aú±fÞ>kë’é½\Sºpmo‰fÏ<‹ì °Ç‘>ª o«‚5ÄgA‘ÌšbÈ æŸþæ­…ÔH‰åàü ·*—Ç&»#„]ÿèÔÂÛÎܲ¾rFìÌg &t¦¶–ÛœRÂr™hqé´?Þh%Ä­¬‚’ÐÜý•Ðû¦Ô¢.½³RÊ Tæ:òÃù§î¾¹píˆ…Ä f>:LöU^Ê.4ˆŽdÌtø¥F-¥¡™ïÑß­ÒjÎiï¨U–ŠhGܯÖuié1œFÀ2'~¿ÀࢌÞw7!ÁÓ¸)LÚ NÖéÒûMgF l2Bë‡uDïÈG˜¨ür»ô´Õ!?½iñSë£1{ÄÅV:î"æÜâdôjA Ø™‰6؉ÆíD¿‰=îxáÍ_C¥j5R•ªíS0TÌRGÂË&[ªj«w¢pÛEÜè ÄÇb¶@H¿²›R|VQzƒ wMxµE´rÙão— 8yîì}Î;!WåÅM- ÇNðºâÏgz»½C…öÞ¼èzáðGKçFã)ÜidÖHa¬ÈŠVf ¦'À¾dÐǃ³/‡ Á²'KŸË –ا‚å§Û_Kïœÿ]`Ùw›Íaävb©Ú‹-:0"N@»¼«=@Oðò‰V°.ñØ,0à™ñƒ;FýŽE*Dð>UÞ?Z½¸qdN)ÔÁàå®rËÌ7™·ºzfPì 3ÅHÜ“¸ÏÐÌ0š²©i l"[«2ª¡70WÍÔ”…½˜)P„J7av >wSÁÚÒš—²ÞâÇÐ-cúû)=Ùøg‘ ÏQ[Öa–3šrRÔHY'ÙÃ3ì%Œ­´aˆ©JwSLU•„¨–s™í…ݰÁî`ØB‚¾9( ”ÒýÍhfƒýÁÌÖ;ÆüF$¨Q³¿(“`fëdO*6­a­CºiTªPpyÙœ; ¯°®b‘éÈnÆf(§ÈÞ.œBÞUW?õ×TdvÖ^›Ý¿¦ŽAOÆÀVÙð5#¼Û.\û‡Î?z=L`i+¡H)›ËsI°8‰¤ G¼Å§‚0ªœ£Þ…ºÕJ»ÞEÍö¢!-§Í¿ÖRöò#+3'¹y¤žãºBž£+>(ü šüc¢„™¶®€Žmp²ð_FQ›½ E‹Œ¦÷ ®¨8•¿Þœô×öBns1ª©aE§ÀÝ1£"Ô,Ëh–Jm=‰§ÒJ§Õ¥÷ß5éò©¯Ž–ß½-P~·Ë€h^|Ü?j}¦5S§lmòþ ŸÄ©0°õMa*È‘Ð9¬tÝõâ@%D¢£ôà÷ú‘ÒŽlrÙ¤ˆ=ÿø·‚WM3ĥĬ~`–È9•)õžœîV•¡»Õ"‡Š‹g\šî8Áðk'W8?:²g Aª·ÎËžÓeÇ… 9T —š.*-ù°$è˱‡:euyM" v°¿z=iŒ¹ÈßÍ*}¢xãASv™àâÆ˜þLçš jÖ’ÝA„Ï“¦C ¦Ù`qűÓ)¼³qÞÙ`Æãl’ñkKÍgË¥U2ѹ=ðeï—#ƒÌ•1ÈËO´šäÂûbôch­£íE$Û‚:‡»“o‘°å§~ƒÈ‹îSØæ] ½Ð‘$é4\<ŽÍL ï,ù¹ÚÙ÷Š·Œ«äg¬AÉÒkÛÀ·•Û(?Š0¨ñc>œ€Åñ!Hä3†eH…µSX`7ƒƒ¥èà‰4Ï5ç8ÚZ2À€‰¿ U÷*+4\…ëï…v¶÷‰Íÿx´J£Í×U“˧çÝË +Oþª»×f5Óñ)0Ê·ÝeÆ<¹Ý¡ÙvA³ê—²52ëÒû]ïþÅwXvµ„oŠr>ÙºžûZêØ×2bÑ\b‘uGÕ“{IHúZ"Pš§7€¨î•œG.ßoÃ}1 ØJ6Qi }0ßïrvV]ºåÿ•#~¹§9x¯­ÆDå^,Þ$``¶,k’û®U.EK>ä«‹>€·î÷zúÄôg•‚Y¢úú¤ŒÏš“pW³Å£6í@ßÀû ÔNõ‚a>Dw¢}¨»î_rbsÜçÁ‡óIð´n¨ZŽÀi`|B}ky, w$·4‚É ¸ûw‹O)7îLãùð t¿g½•›$@³h¿ø®ÖÚÀ9ƒæ÷eÖÜî9uHá9Wf 2àômîåö$Ã#¡œs¹=éÞsÂ[AÉY[_K³·ˆM ´t?¤îÈ™õÿ‚?O·ïš4zû€\»Ë!‚ }wLÒ@j~†›F5§ÏshE³úΚ<‹Ô{%ÝÖ†ÆÝ&ÂÈÃ…õ¨Žd/7F“ ÜÑ»²37“°°8@wX=a‰ýò ¹ î‚:e·ŽïݩҊk-/g°§4«­’eo¤ÿ†$<ċпBà‹=îÅyqÍ„¼(l™™åìIÆ8­:\tÐÖ5 Ž2æ=„“ØS#d­Ùó ¬øB`kÑL¥o1Ú…xžÒŠì}ºÇ½}…uº÷}¸ º¯ñ»:Û6è¾NÒ– hQh ôñ*Ôb¨ÅœuŸ[oŸ¬÷ó¸<ˆ»¤°_LOko4¢=m†øn‹þü Üw õöXro$¨z-g[àÈq8Õ¢„·âXæœPB¥E-òXOFÐ@h5Zï²wÃE5ÏøÇåNUU‚\V>,“{/Ez<h­9I½Ñm‹.`s—ù­’fØÐzÑf[‡ å-™7á}çšµ°Wg]%É…²S˜ð}1[@ iâ«/ëè< ¹ÊTE ‹pj-›…ì­™±†oÀÛâÏ‘ðw{/çjÀ€‚Ž.¬þÎGW.uWáéàˆ›¬üÌ*xÚm‹°/oÃ~±ºÝb£ÿç€ûABÑ‘`9ð Ü¡¡ûóƒkj;óû[Ó¥_\ó²‹ß½Lø‚<ÍOW3~jý?KFÜ1‹Ä?j¾?PKúŽìØŒ°Dâ9Ñɲãü˜àGŒÆÊ$?*ø‘æG%?ªfòÄ «WO…žì¬Ô Ýä„(¿þúy ñ™)·Q8e¿›%é×Ó”¦+D•}öf)f¯–’ UgÓ¦¯‘õŒÒé³þ{GvSÊ1y ã¨(u…º²-˜ jmÿÏ÷Mڪؖg×f­úVë#2C¹O0"sEé+Í| ÍJËPûñT0£Î¯U&{W(°ê$¬: «#ÅKo9üú³¸ &ÍD%1f7ÏÁ=Ø…n>šÔùÕèü}Vç×¼,²E yªúBà>R­:fͲ|Cõ*=•\È"8ïLi‹»Ê瘠”O#½Å?uC^“ÙzÈë“#M&BŸq+F˜½Õ>dÿ-ˆáî»…•îퟜ¼Å;yÇʃª½_/Œ¢õ+H'YLIB‡ß$AÑ* ÈÔ´$Ú¿¼·[ƒç}ÿ]ª|Ô`ŸMìÄ©‚ô´£L[Ü8Sõ\ÚYÅ­¤û e2¹Ï“bV1w-,š`$‹ÆëÙÜ™âi!WÌŸ˜˜¢õwoißWuÇÊ3§^Ô×=Oô4½™¾ë‘*#0I"Z& ¡¥§ô£|h‰9)c¿JGüóþ œRWèx)íLñ’Ël퓎inu•Ûj¯˜ JIÄ‚z<‚˜:É) õ•þ`mxK—Ì ½Ò¡V~õ¾ã$Tø™dX‚ù|³ù„·ì”žYËfc~>S㟵¦Ò†÷¨kÂŰv³îœESŠóUåÖ¬Ûñ3ëßýŠÞ0¥uÞÌXº/\‰AgêNñ5Ë4ðƒvyÜŽ)ýµýÂFß©a è¿ÑÞ›VO•¾oÕQVvရé6ÑÞ>Å¢«c›“™ŸØ û5JSëFƒ‚?ÎOUjÚÅpAe°j„~Õ™Ý3ƒ¶¶±òŽ;KI)ËVOÏŒ¿ ï~69Í\33RŸ¾Žô05¾Iº[B‡)ÿñßû¦9ZªV¤JW‰0 ‘EƒƒÇ|ñÎÜÄÍÛLÖ$ÞB/:ùµ¿Qïÿ}zöº ‹øxLý »z¾í¼íçZÏG°Bë­ofë^oß-w¬3KßÂMCŸRåaˆX'ýôß ~…îÊ]üÞøAÿéú37V¨Ü2Ü<0.ꑜéñ);¿†9»€ðê *=y‰{êaÇÅâϪ‹«Õnü;ÿäí™­ÝtLîæ ]"ë­]øžI½‹[ á?u6eÍÀOhýõ¦“ãÃÍ'Çmz(íÏÇÛøûnW»¬ÿËá†ãþYÊÀq3´5Ýàãätåèp³iðBû®x61?ï­êõ‘Y³ÐÊ=ê¿ôA_CÉè: “ÿÞ”MSP‹ ã»íFuZ®÷íÍÇ7¨]Í?ºòÛÖï;ŸÃ·äóÔ©Éá';äùß¼2Ÿ=pûÿïÍ»¥¨e@×NŽœ®^õWY¡ÞÀF;~· ì ^;9ïŠÏÄýÔ±0÷ÖÄW&ü³FÛjß•4²ôÊgý×ú/Yâ¼’£Ï©þsBŸÖ/í}˜ å¢keRtÍYùyõG‡Ùd×ù;…õsÈÆŸö^±>Øð4c,ö÷ûãç/ @ÉÜ_¸e¿÷ü%%]ØÃNy΋WîœFÂÔµ3ÿ—Ï85>zcÅàÅÁÞ¡«ÇÌ·á7WŒJîøgñ½R¾÷šÿœ~sïÑÍ_'Í_}$ÙÆ²zÙƒõ;„íŒÂî7ZNáêîø×*¼báÎñÂûúÍ«;AJKÍüø–XæÇ^ØÏï»û*£õÜ}ZÊú­y¢5Uš“’ XìL Sîÿ2=Æ@ì1æÅ-°8‹Š?½?Tñ§©V„Û ·ç¡œ¶Í£œ6L„?g«®'„ËO$bad1±oPÿF¼øÃcf ÍB3?¹zÈüõÈ…HMô“kOÊŸÙKògjDþ4“rbÈ„iUÚÁ3C©“÷ë¼ ˜>6*õ¸Ì ÿ®ä¡‹ø^qé‚]ð¡R[+fýgÈ,°„²ôï;I.ÎLÔµ’‰Ú¬òÇpª4*©H*’åÐQ¨À‚úEzàI5j¡Õ‡/Ͼ\lÌÞ—¼Ìܨ}‹ßÒµÙ­=‰X4gÚÚhû1ëà"o¥7â¾ÿ‡»é”jÿ=fí¦ý𨏴(•ÀÜûzWSŠ¿»huùkG˜7¯$K2R9þÊ¥·o “ íßVïŠ,ÆLsã-ƒ|׸§=àp H®70Þl›˜-öN áœ@x o('ø¤hÅ;ŒÃ®÷Ãì¸Â>ñ-³þ$2‡é‹Fæ¿cHŽâbÉ Â%/v5É 8·??¦7ŸžyΗ*ŽöÑÅt3¬Kªx­åIšßýÒ½æ(‘‡/›f%©µ_Õ>7-¶˜?Œ}ú¦ ¿Ø~Ö“[èL^Iþ;ðôƘ Ä…«¥UG6¡¤îDh3A«ê ñn~é U«}&}‡æÍv!Õ 9€áù •έϲÆ?PÉŽÙqÉ'àƒBò„óÝ¢¿_78Áê:õ‡½ýO$ßl.ßÀÅ ýDÏÐm«!a/a8FcÂÚk9]LŒöË^A’V2¤nǺùâvyq–ÏoºÎöb½ÏoAHÔÈ jEº¯Å¶WÇT—“嬡EÞnÖðœM…÷a%ÿª7â³Í玛¤Íý´i ç±¹ ú[úEŸu[,°»áÙ¼œëØÅ<.jІ¿­Š¼‹¼âdо·Šm´ H¥«Žô¦Û#VÏúƲ¹v*)æIVdÙ'LJ÷鈷Ï'N’Ï{ýÃÉTÉ,}èöM»S ÆpÆ[yÂŽÖ)£ù/™í 8ÈŒ8OÚYÕ⓼@›—°AZû´.a/xuõ]îÅ.yñÌ¥Ð[«¤r?[ pÓýæ9 ˜Úl(Û"'2*µZ75)œÛ)–r-¤|¦gj‡N©öJàQcYꢖ%®J |ê¦ ^àÙÙ]cöj:)¤€@SµÀM?ïÎ ì†n¹ ¸¦æÍFäÀ—ƒ“yjžó]°Dí§I³]DJ‚ª%Zms/n“KLg¹Ù½n{/´ˆ-|ˆÏg ýd$)£5.–¬z¿ÖÎͺk c¡ÿºˆs’Þë_ÔÓ,晕Ûf´OHGm#a¯Õ„:ù[%=ŠÅSÚ0èžN0ÜY3ëžÂã]fê­ä %^]|¹—înéÈk˸!œÌ¨Ê,uŒ6%Â:FRÅ€õ]¥ÀA¿×[HoH°Ó€I#×v¤wÜLsfB,`ëßÃÝ™•Ðè†ó'-€ù ÁsÀJ¸ª.ŽWû9›ÁÚLP²ƒc"Ù„Æ6QLj’t«çˆ¿€a5 9PyfgWXw2Š£í½—Ú–˜‰4Bœ²‹Òk­Ñ¹Û{¢l÷7ªÃËþ0DÔ#ÞsæéÅÜÌÎÜ\,vm®"#zPž÷VÙ=T• 0Ÿ™À¦ÁN09vÀE¯Í ø{̹A“n3zÛW¦1÷q¡èo}v ‡Ì¤ÓJJã¯ÇzÉßëýR¦áç»Þn7ý<§ŸŸfú MÒí&‚Î3;;Ò{±av^MÙäO%­I â¡[JmO¥`ŠkÉlí+>U]¼P­ë_›¯Ò·›Üénfà“¼ŽwGU w7JØäðu“´û3ªÆ§%†Ž_$bþ^|þi[ÎÃÈ+ÿiüâ¤R»ßÈî;/î$J׺²V(üî ³Ì.[Ÿ $ v“5² ç3Cß3’r¨77)ºh[£‘ß=ÞEì7òè+P{*UãñÏ/Tgi¯á¸_ð;—®úÙ—ÕûŒ *·šÇ•þ0¤«þkñzmHŸM;¥ð$Xú­ ÝqÃlrˆG—Ô4jÍÀåÙ™7Xëµ”[,ÐÓ²@üÅŠ>üL‚¡êy‚ o„}™ÇLU¶”{Ò,ºÈíÙ3Ë‹®ñœ¹ñÏû¿4«çÂe2kóµ½ÎÉðߌ8¶f€p„·b„½F·³×®3ù'„‡’OMq;ˆ12ï¼å8ÜÙµ …à\² ZŒLõÇí˜ÊÜj…A˜öÁæ:“ø)`wí§â™ü¿g¿ò÷.¤øI'\sX"ÒpŒ"1Hí ó”–@™M¶–0_ëYíU’­ÂâYzŽ·qqÞµ¬¸Þ?åîËqŠv]=I¿Ó·Pˆ—hÝeE¿è(Ô¬ÖäáÞ£’Gb.Ã{pR™ÓùdfçíZß@ñ©á;A>‡¡‚…LøùnŸ§÷ÎáídL#væ)g(Ýÿ¬è ÔÛY!o»5-–zG¨w³?\©¾•Eܲ!ŸÕ¹)Íl”ßû|ÖRæ!°IßÑÆ¢…îóPÛmþs,µÆêoe¼É+»¬mná$v?=nÃä ;K°´Z»¶ç¼ÈÚÖ¼Rךéöïcü{³ý®Q”s±@@«Ì«=¡8õ ÏqDy_ ¾%-G‘‚<à¾ÈàbKÁ¬ø³> Ù8ü1]JW®NxmNvÕ@õá9Ïgò’6Œ2u }j?ãݲƒApÁ¢½ý“ø.…~ Ëèäž,þ"Y¨yÒ è3m™ çÒ %\ïõËìÌÕƒýÝÞ‹°‡í°¥ 5 Ž7Ú­8f¶¢ÓÚä²óZäGªöˆWë(U8<©ÃÊõR@Ø•Ýþ&Â'ɱ·¸W·È«_,«ïƒMN°¶bP†7(vu°ê\þë îîrȹ„¤;eµb ‚1øG¼“–|b§~Wu”•~¯·}Ä3|¯R ~RA°ÿÔ¥¤Ã5¸­û§xh¾ATÀ”+ë=#`vTPt ,†kê»ÉÈRÖê„`×ö’¢(•¡vK—>+N™ÅHµªN ÓE\uh“¦‡¤ÊXÍÙ-Yü¤úÒVØ2¶ÛÓâT }”·uÝ%ÌA†ïá"$–ù=5@Lt}žU¸z9)4/þ<áï•ÜàsJ¸ÀCÉÁ†‹ãœ¯«70Ü™¬¾Ý¹àèÛá$´/Œ™èäÃN;³1Ï2?|c4~ÀÒ]ÜóQ¾|Ž/ðås|pÕ°,Á³k¹úaˆìR“~«ò™+Hax‘*Õ^cD7‘ÇàùÕ „ìâ—;u<ÉÍ–Z¼‡”ƒa°MÄ#•×¢0EkÑ[]7 q©×—¡©T¿'öO‰.2˜zPηðh9õŸãïŠ-^ˆ׸ÕJÊÈÒX¯‚a£0{­žå²^«Èw×>«²|Ùßm^ˆî18ì!¶ÊÔ°G„Pœ-|Lˆîæku5rì*Ñý—€-‡ŽŒwH4ÜàSVøÑÀFóòŪi)v8g%4<óÖaÖ´ÓÇOžøêï”·!>fÖœ(µÑ‹E¯BTÞÇc6¥7<ø´,Ó-#Tê¨"/mñ"²Œ£ç"²ƒÖÃt£2H«™“"ñ+¿ð‹zk|à ¡¬ƒØÖ¿eüü€_4Ç€âÀÙáæ#ãJv8hõ¼>* 9®·Ã1m-4-Eé+æmûÊ™k•§¦¼-==7;ƾ™ø¾Ø™®‹¨²î¼XBŠÝ7©j t¶¤%Ì¢C~èE+–~úäÅi"tá4fóƒc•êŸ:œjyVü¿àED\ïÞ«®w`+h?6Ø;g߇¤ö‚zÐñŽåÞ G–öbQWž´nƒ«÷`(ë¸VèA‘ðØog|ä9¾„a|<›nü©þ"Žû3Œò=f}â]è?î÷ÛS€þ0H[$ÿY:.¶Î„¶ŸpêÛÂßÕž×D]údÅ,¸uléàÚJ¼}´5mƒ¦ÐJ‰ä¶ýOÞe³Ü”¢0ñöÿ -R‚·¤b4óæSª\t¥Â`ݵ)˜Åh–Þ²þíò\ghÇ™¥÷L)wç’g×'ýs^ð7<ʇ'l¶èÊ(Pxg8ùŽeKœ|Çróßä*`Êœñ ”¨œ360<£ŒUBë:$ðQÙ\GÄ\È¡ÖRXDçF_£u .;eµU|ˬŸGϲ-î],åÔÕïŒIþ4âç5þµØ%{M‚°©Bì¦úiÙT—‹²C°˜n£@ouÝB3rKô^ò$·„i° *a5$‚b>¸þªŒ3kÃ?&.Ét“2“îT¨17‰›aFòØ”\"Âgèwwõ¼6î,4¨£aqì_c\HìrÜîV¬É“÷wk€%H4(F«À»)z.O‰#¼~RêŽ ܰ\Šö¥œ4SÅ C-…C<§är„¹$8 ¶>¶ýª¸x6÷ž¦±n‰d•I&ßÎS+ÇþG¯:J÷øë^l$¦¾_«ŒŠç´¾çµ€Ú¨X7Õ£v›¼lœQÈ0ýâ/f˜ÕŸðãN÷…âÏ’R±œ7ÝÞãÞÃËçÑ`Š'…ÆmŒòÁ³Â¶Ù,a/0Efiõš¥_òîÎ`ó_›¥/Ýk³ó1‰—دÍokÜ}•Íïwf–^FÇåZ‚TÚÎÜÈBð¼¯Ôù¼"¢»¤|Cô5"žÎ\'Ò¤È#IGßg~_íøC1PvOwÍlRÙ¤3©ÒÀãâa°ÜÑ×rÒ&6˜×–rÇI¯J¹­£Üã+À4 ÛS‘ÄüÏ{$$ ¤¹™¿«5Uú#3´‹Oˆí¶&ɪ¥§ñuD–Yf×avK…Ùõ’Z9øÒ+2ºedtŸ1–‘Ñ=iš¾KÅ”{C'ð°ž!¢À>+¿uIÔ/¿_7©îÕ’‰ãçˆ/Rù~VÂM [J¡WçTÛJ¨õ:¨õ ÞO@q5×{$ÐÑW ‘„ésµ'‚–í-W\v_‚A£îÅ—çÈbΣEÀ¶¤jÞKúà„áCööjIdÄcÄÃceÔ(ƒàþ+æÆ”û¯b8䌗ðwßù„üù°÷¤¿‰°Š(æqÈ{ôÎ^žzâút‡ÐjÍ#­¨®™!©ŽRwÀ½¾á\s7˜yÀPÎö^ÊU-û¬gf¾,7_†;Ù¸S‹üTSGù¦J˜qk3nldQIõM%¨Ä¯¸_J£‹€›eæ“à”Í0ÂàÈàÁ¡ÍIõàÉSÃi(ïZfXÙ¾ËÀkN¸÷YØWbô5mœê„ÃE$Á¹•vÛª™çÝqo©ÃW’ ù„1gœK‚#|ÌBóŽÅD\ü]ºô 1–'ÝÑõØ ]ôg[/qò%M'$EË ¡8p`–š‘+°]úü )åV.g”=°â›QO:„#ÀŸ(éîýÓv#s ‹ÜçÙ ¢va]ÿ-A|JF—N™ð™OÐö§hÝp­TΓ$µT;Û ôɾ©ûô¸@§ô?J¼ð®Ìšùßy°äô`ùµOOOóoÞv9H²u;fóÕ†ÒëÖ˜³cÅC'‘Ô-›(ÕïìMý²ð/‹t8=‰íýØ¥=ÒøÔEQû’µDØf™&Þäñ&â RVœ^@Î{ØÉª‡åT?z!’j’ÌΞ5ÂQJ’† ÅŸýK†±h~^jÑDŒÇÀ¡³ˆæ{»X‘¿c1çc±(æ´6ÊúôTëª{Ù‹E‘ð¥4ƒ)å¢R;PëÅM+‚ô䥓¢õTƒ&n8Ô„OL:1¼ŸYKvx ìI âš¿ÛnBÚ ÜJÔ~?ԇݥ¡j§:[únRMv’+þ8zÁ2‚”ÔÜ>­<‹ŽÑDòž@‡.†¹”T?ïþA\óùÍTiþ¡‹“ÖíÊRv–ë–¾¬øºík—ØqÔî%Ç“Ü?ŠÉš“yåÝÇè½ûßù]žœMuÛ_Ð/ÛÌçÿ¸_Ì{qRYsO6‚Ÿ­<˜–'£P¥“«´ƒ£7Ÿâ¤Û‡åÔp—;œ_Å3O™Ì<90ºAQQŸ±üJƒ-U‡Gð¨hîaŒ'‚NïìÅy¤9«§°å°tŸ¡‰¶ºRÔb¨ÁµÃU€‡ù4p÷ÃNÎ%¢„7ÎNòßåÁ=A‹qØi4I½á¢ þUâ!è2L;ÍÓAFA³“´.éB`ZÓZ*}Ë s25ó!ÍÕñüœË‡u8‡òseSw™/x|ò)sVçå'sŽòÇ“»Nž1'iG•Ý~öÚœMš¨î‰yÙÓ¹9[¥'´ùZS`ù,äæ`šÀÒþ{Jx=Yî²*Ñ·{Tÿ«¢A•8¼¼*nó@ņ%-'/ ëoZô¾lpÊì—SFIû4£Ô!­{cý[4†öt:mR$s'ÕX¸©dã ·­äÁ|;–ŠâX^°•/å„O¯yõňè uïPê#Ñ8:îS*YnÔ‚@ØÅök­D›·òò†ˆÛ¯¸¤1µûK8L‘”­ºšLDÔUøsYÉx€?dCб£ˆïîâÏ“¾êˆëº…^çÀÇR‚®„×aÖ°aÏ"9 Êñ®- f ®Q„‘˜ÇТWÔªÀE¨/'4ÈÄú)Ä:ÜYCô¨*å¤ü²80sfä7º8ü6޵m:)gúGæ ‚„@å9&\ÿqÃ6‡s5$*–«%¥Õña-)­ÎRZ]Hiµ–Òê"”V6eÕÈd`ñé` Aƽ.A`’©±*Br§—Ì–²—r÷ðŽ ‡¼(ŽxQ2|Ú»–϶]mhsã¸è†qÏnËUj°NÖÑ`–8ÓáPE¾íF~ãMŽ 7ñ­-Ž ·ð-‰®|Î"XÀhaK† ªmñ]ðö€{ÚCcÜ1wRÌ ‰…ãöóE‰ g"Ê'‚mÒþ뉈ÿXÞ)¦ÂvŒðqÁ‹iJ$ ß— ý˜è ¥ÓŸ§-‘d¾ŒÐÏ‘F[¹Okù›îLþJ r¸3»€æÃŒ†J¿xé’JôͬùÐ ñÄd†S½ÏI¦Šæ,nа7¼8Ð7x` ïdqð"\U«:SèxcÙ¡¾)¢xgIXëÉr6Y {sRÒEHZ8Á‰¼øJñß’FRÌ æÖ†^kܯɚi`4AiR¶ÁèRóß o(;N:ÊŽ“eÇIç•¡ÅÑ:e|wM“YÿÇ7;!]Y´Huão)–Þ’àGÇmÄT—lù¥Lþö¼±áêÁƺ“rc¾ v¿m®Ë=ìrOD é’ý(»1’ö¿¢¬¾ˆ q'w–'¬q!Rz¿µ<»‚ý³M÷è *xYï¢$r!uê–Ú‘p1ŽØÓ¤•^[æÀ}h‰#ñÏ>rçKB†Ý„p×#- Î$“°Eo…×÷©G¯;Ÿ&¢ç~ >0¡Þ…(šõ­WçøyzòŠßt°„\þG¤Nõ_Æ•.c›f…ã¾9g|ÑïSI eP†?í›ÿ·?žÍÙž`PÉÄ0­¤ghÿC¸–ÍËYör¸Œ½ôGØ ‹A`ÿÍ?£‡;ÓdüiaüÜ=zV, Å¢I– _è¸ïBÇø[\£–pÉo—$Ü.Ra^Ê€Åê]*^HL±Åç¤l ïe„óÿѯW¹S(ª_/w3Zηó «)küäaw–î¾=õlsï¿*ÿ—¸,ðÿf)^”ÿwxÑ ÚèEùçOæáßâÊPÎÁ‡ÞÖ(„"i Ì4ðäø19¾§Á7)K2ümåÑ=\p·e»å¼{ÿË““§>¯þC„9RÉEo›!S¾—÷,Û)¢‚ÁÀ£Ü²”%xŒðð¥T—$c¡Y¸ƒêhfÍN2…%Ò&ÍTÞæ·‹ñÕ¶"¡¼ž“ç§üØe¼o‰š™?}V¶~)¸Ë’b=]&j¹Üõ?ÑŒùª¨Ã°çæ’â/’K®:RCª!J¸}öv/ŸzvLÎ’%Žñ/áºÔÉK©,ô8÷„GSºã§'#7€çí `CjŠRÐDŒþõQׇFšwê¯x-ÖÀÛÀO#$êö`o“’³Ýø/Y¨ÐÕ¨6ÎòEÜ ›âêPï®Së9¡Æ¨«C#ïÜê@Ê&ª‹ø4ǯ¿—ׯA4Ê)º]G}uU­Hñbf›3)LDªz…NÂef“Ü[éñgñ1Ô“®K”ëI1댒L…šQ w¹%Ô>¯ uâå½-&)´Xé yd°ðÑÔùÈ©<(9¤á”ô/M Š Ll†ÓxÀ¤Ë°>*VÿŸ«â9t­pèË$q¾Z¸ ™bjËè%g¨3j6B9þ§…Ò‡ù§0Ë Óá…Ù¤ùaa6 †äÄÊfÉá¯Aêoù÷RâÖáˆô;6ݵ’Ž‘ªYà[þJ‰˜÷G7ª±%²JŸù5­0UöÐ,zÆ•gñì‰2ž‹Gyv2åÙ:µ)ÌxõéKQs¦sÛªç¾æ_lýý ܘ̙KQÛ»³€KÚ!´-¦ñlwÊ7ØH~FÅg±ãJ³Bù‹X«§/ySÒ†“B”oU'†TÙ9çê¿W„×èjõTsFZh\nÔ#á¸Ã¢¶Q7f]¼\ŽÐËðÌrz©"ÛH‹q6`Ob*¬N •<¤!70…Ԉ׈šùî•üýàóûî|I.¯N#sÒ±Í,š;óZ yÖ,È0 |1'Aˆ´7á²dÊ ¶u+Y5Å­d¶uÔ©Í‹’Vek&u-J^é\¶ýÆÂ~Ë]ïêmÛ0ºr÷/dú¿_Û¦|íÒzákÛÊ8owçÝ^Æy{®Ìy£ç ™‘h×Èì4ÅIh‘;ŸñøkNÚmæAZëNje¿ö2PbvÙ%׿׳KL†KD"D˾wƒEE<ª¥ãQÖ]aÝŒ­œ¢]‘ 5"¥ì4û§uÓ^Bj;ÝC˜6sø>´…ÃfËi¨°ì4‹ ÛŠ°ÿ4î&kù£"P€œXª9~‰ØßÁÞÁ]BÕNîî:7Æý uº%°ÚÛå%_…‹¼ãš ñÓn›ØräÐ'ä§ÎlpCó´ËW7J{åì±Ê†óŒ RÏÝFxÈ?hd>áô%„«¤-¬Ê;]^æ€Ä‘˜­½fÁd 4‘ ÜLë°™–NN¥ÜÁ¢Qׯòˆl†Ý¥_å ~‡‚›¦£Õ¹2äà¡ÌúŒ–ßPç–ËèöÌkK_¸ÿâ¤ËÏYáäŠ ö8‘Œª¤ÄJ†„%¼í󓨯L‡äˆý’\}$¥8tÎ^˜<ØÇ€Ãt}ãd:cWDOt±æ‘lIo» Sœs–2ùE þc†)£eÇÀa!ÀÙºù¬¨¯qóòˆŸxTƒ4£9TãÄб=ÐÆ §4žh¼oRÒK/ Z³­A[vy°4Û¶zB#~E0Åêщ{¼iò×?esÙó?Qñq1óe8Õø¼ÆOTÛç•ò|Áó?1vfg™8|ÝC¦öÌÎtê{_þ£Šö ñÖ×”w €|þ%Ô§}‡FV@/Ï<˜ü’FVȵ±yM"+jüâS©9ƒÞQóäj‰¬àù‘ÙYó ©ÀM›?È›xoð(2»CŠF ¯8ŠX쪿ôõ‹wðŠCfp†WtHØ3â8$¼¢S®©¸jò¦Šù¥LnÍ[LÏïÀ_†çËÝx‰@’ÖŒ@±/x./ o½†–1‹}ÍcºâÇ^‰¤DËEL*HgPîz¯è²®òÖm7ôÏ•ürÝ]uú$Ø?Yùúˆ”½Œ‡F.I’ùµÒïA+r݈;’”èá9û—`~Ñ0Ž9ˆ ktG8X.Ò«Hݘ¬8§)Õ»ÈFé§ûðòÅŽIÂÑÉ„‚ÌÛ‹­Fq5‘ðc!Ý@V”Ð$yû¾HTê߬}ÕqÍBüPrâÖ»ôÈ„áÿ˜ ôž9š@f1å5õŒ‡ùF=ã—&]ÉyÆãYèßû)õŒÿbVæ%úÖE8Èçø[2[júÓÉIú#=,òȺð)qöˆúÇsÙZõ9„Cfý †±ži h8 d‡Ö42é2“Sehrjq&§éë?Àwþ zö˜fù( uf¶‚ÌúÍc_MKÙÅܱ6³‹g®ù«ô_·\œd.BhtnÖ‘™c6qš@,JâkeÅWDm@Ç^oàgâNm~_kªTgº·ÁÍhdø Hv RLq´.©¬^®ÄU~AˆÀ½êjPÏÁçq…Ë"²- Ak¬ø#Lð-‹ˆ->O0™’Í`rÜ;âê“£ jâ1¼òvEÕyŽ·k :MEgÉUhb>Ñy?ÐÙ8Á?üÇh»'.p:"8Ä¿g¯¸ê§54ü<â§ã*CÎæD²5Ò,e´ {¯†pI1(YPû­;N 9‰tÜ»b™Ž!ØG›<âKñÌ€#¼³­K…4} UMâJÞQº¿Ku9üãÏíÿVoO$ûöù±°Öa!A.f|ÁlG2˜¥òO«‚•M<³î¥˜ðù[‘ü…ƒî=ŸnÞíI’Â$K±"/Y˜X`Kt:pé¡íâ½Aºú¢+µ˜HÓ½&ððõvÑáWü4&û½‡Lò ¦¤šë`ÉO©îþq·Ê‡¢_î—ÿá•ðþƒ‹!I¢ðJãŠTiífñz”ótë#Á [ÖiCÎ_2?ýpÑóR+·½e§iýbϦIž¦d•æ,-½®¶É‰Ï2ÍÖü…”€ „ÏŠÁGö«3Êz•IëïËýu"™öÓdS4.µ’Ë–æR 3c1` ïÈ&¿î‚áª9S †;³Áp5<÷«Kψ#?Þ –þ·‹“SNáU~¾Hk°Êúªh¢'uYÁÃè¹&ŸBÖ ªŽ„†D†Áé厵WHž[)ëšÙF_ªKDÉ¢ÁV×'Èî¹8ߢÄÐÌnÎOÊŽpm4›pçÁ‘Ǽ‡Ô~¹u†_&Îð‚¦Îž ~Ösë²Hqp:ÂÙ„¡ÒPáD~Z —a¶LÿQu†ßï=IÛ9¢oüÝÞ!§¿6 Èê&ôVBh´uaÀœÅf34ÞÙ+'Ô®á\Õr¹®ÂÌÎ€Š„wv(—Þ¶?&ÎðéíûÅ-Fw²qG:.Ù®µ²NܺÜ/”Žd¸Ü/£ËýrºÜ/Š[çÌþ~G<á«dHñ„Or4y·Ìž©“­ ïâŸ$_ôÚ/d[ku ݸ¼†P±HͬA¡ ðžÙ1ÍGlÐ O`„ÔÈnÿP bVC-ÝôÈ¥+û‡·}Öù‡K/è.Â?ÜnÝØÑKSýÃëãNñ{òÒ‰Û±ËýÃëiÜD€l¡!~A‚¼ø5ô§ÃÓTÿpÕÅt¶Ö?|#ùè™xÐúÕ,æžo–bŻȷMC$ò¡/x’€`Cú‚¯ú¬ú‚#=–³wÇ£¢(~¢GxÁbýCƒeg ñ£F•Só™3*`î$x„ÿˆ*ž¦ê'DúÙ¦'õß#Ò‰ ±Ö#<ô$qqÌ\-)®ŽkIqu–âêBŠ«µW¡¸²™«\ú:"ÔÁèÞãdÃcq'™ªcx„*g©cøk[…g•‘c¶Œg—‘cí•ȱ|¶å€X ÇðÏÑ1üsžÝ=:†o'º/uBÔR"P·Ãù&þ½Nýèå[‚\, Ï·°‹t ?Ì,,Q¹ Žá$Ϙ#ϘçHžN~k‰Gü#ÆÝèã¡Á•JbéOóB$¦úÒ 74ÇÂùyçø´ŠËH¯w²çÒRÄ-à&Ôq†¸]õüM7¨áÊ”íçGŸù€7â=ÌÒ±¿¯Ü?ô¯Îx,Ì.k} 6Æ­oA1scܽ=ŰթÛq‰ ;-‡ßdûÝңU䯈+øª¸Ûtq_ë– ùPÜù­ý’Ä®à]dÁÛâÖ\X=$¹å·5=˜ä¡8·qÞ¹ÖWgòy™”é ÇÖòdËÿ=I0¯øÉ±6°M[<êŽqq¬– :û/ýßæï,WFÿïŽø¥..Â~ç—S( ¬¨B MÙË5f-ËhÈ6™¿Š¡“ÿMaëÌi ·ïÏÑíûsžÝ/º}/;‰!Äê€H¢Ùú*×hU¸kz9wûFM8ÏÁê]*ItÄ­ûÏ66ßìšã[fýfº}orgŒ¢×F7™|QR¶Šî«„4ê˜Qéi/Ù;Ý‹ÂÊ~zvÞ”]$þ5ïŒò‹,#oÊ6‡ûÑb÷£)»xzŽÔ!üW®ZË9ðÐÛ…¤ª@ådÿw•ùw¿#ˆò——¶É~›ä°º ¾Ýðœ)Åg\ùEdfÝu4m¦Ì Ž˜,—‹‡«FbP#uΣÛÕÏPÚä SÊnðÛ…øŠëˆ…-üy~ª=&ö‘)ëMÇY¦DÃ|ím|T•esÑ_aŒÌUÉÍu®ªBn¦ëˆæS”Ù>{kŠ—O½ë¬­ÒÚ]xÜoqÇý`Â¥ïÄwÛ^NÉ1ƒË)D¤–éÝ’:rOSóóoi’IŠÿñ$•WÀ_ãˆcIeå¨I¦¹@\öqävòú*¶`Å!)*&}7¸ó¨¶Þ e„’ïp.I²O*ÙKçàñæ]®¹zÞ%82\}£ù8s}`Ç–Ÿ/|­º ä šHvò¤‚ù[§ÂZ¡‘ûÇwO¸EŒO'.9Çpñ'¨ª É/ÿ!îíÇU-â=iW’Ýâk—…Θ@¶%C´Eü¯3O‡GCžr†¢ t½ƒšÃ˜U¿$RûQ³ùã´>„éá€$Fß­É–þR˶?稡çÌΪ/}åÁDs0âÈé¿·åâ¤%ð¼ü†r5ž²˜<-æÒÌ<6`gÎZù—>§¢öÓs‰XùýΨHG¹dLÑyûLÉ·¹ |GëFµºÊj·B9I(wÛkö.{+÷HPŽ`› |$ n©Çûô‘;V®µI—ͺ«_-3òôë0³Vt ,‚¦Í -Áíi3äbñ=’óaáý™­fÔ áGæ‹Y¦‡ «LÒü·Ü±r8øD:³õÓ6\aAZò |H­9¾ºÿ¡˜6¦øÂŠZ{/yË"jí{bšÖÕÆ±2húô£Zø£ ¿£k—žFÚ0”ð¬ï¬g „íâÒCÙK“Â;aŽÆ²fž˜PP¿C4è¼1v÷ùÖ¾À»ÿ=—5¨.tfc\E;QúðC—& ô¸Éådb~ÃýÖÉkš”âÞ¯·¿L¯ t^bsP-ÆA/„–òã ¼–zÑ ÐÒ¾/ôÆay;«ÈmíS6–ÙºlÂ{ÑüÖ^Lß¶ò9ƒž‹ýæ\›Ú¿ ²¼ô„Š'¨’]ÒhF[²rò›+X‚zPh*0/ûÍßš¨¿uå¹ Q™?VNĦÙÿh¿³‘ÿ…«7½~U…×W¨ï@zñœD‚ˆÓ]'÷«Yòt-LÌ—–ö1^@¤“kpéŸ*¤7®]•6½,|`×FÑÆ{¥¿F[Âkî|ƒauÞ®Â_-›”[E×î+h×`Ú!øGßr` yqf«¡‡X×ù샓“6ïrÚm¾Kà4½ÚöOLO:í£mÓv.fû68å7t5B=ÚÆº´ë˜|*Ú¢¨½–ØRQÚâá¶ïiûͨ6º’órúEjWz”Èæ  •`{ÿAÜb35àhÌ•L34ökžXñ6ÿÑø±9§)Rw÷È1Áúg‰ŸkžÈ¬{´@”é'³@w ©¤„ª$V߈ñà5‚'Oñ¡P) ×ÕS¤Å»¶$$_•?±fµ­Oõ@ ‡nSLŠƒ¬aHŸ‡uÂéä¥àŽ’ÿÑRûþdûÞ$¸Òóà °¾Zâm¢%šŽ8é?ýåtb3|SWçÖ>7uà›­ß´‡sÓ¥‡Ù‚*0LÓU¨ü5£>˜È'dH6ßñ?ÖTX妗º7`·¦wÅ-¦§~Â/’ ^SOõJß÷¹4:š?Ðz½8;V¥Gì50•Ö¬°ùO•£vHžæÖ™¥Ï›&’?èdò=¼zÇZÂ%L`@!ä0— °P=Á·ÌúsTOÜ‹‘㋺ÛcîÅ1yñe: Êž€½K.¼­WAôÇ‹­©ÒöoNWx¿üë5ÓâÕU‚ÚàTðÇ_µ †‘êÕZTúÉfC ·8WwEXÜ¡\&ˆçïM¬ÀsðT"X¼oM…²a"żÕ ÅìS»:üO»{Ú¼h¬38Ž?«eô*ýLwçr9+ÙRñåŒS–cVG89?”ÜØMPÅ¡šc«ôZÜIò'qÜ8ˆò™È;Û“M(mÙŠBw¶@l5Ç'éÒÃyë²æï¤ùWQ¿hþž›ÅQÄœ´ð¬çPQ:qQx=$”CZÓAS:çQ™Ë[wÌâ4Aší»fùL.¶A[¤Ù )>+Å¿ŸºÁaø¨? VÒ¢†ä¬èªð1õÿ¯÷T®{K$£"¨”óÙ'Œ{N‰çã?œPhtý/Þ®>8ªëºïÓî& ¬²ËTLp‹c4Þ¶¬…µà ÂöÌ"¯@`£XŽqf›ÊÒ¢P-»¤Å€-x¬ÖRy¬ŽdGŽÕ)©51í¨® ŠÑò)„íH@@`-ƒmê®bÖF†5VQï9¿sßÛÂuÓ™þ!Ý÷ÞÞwß½çžï{榎__6JAXÐiŽ0â5‡¸"’ú¸ô¼-’Õr1ÏY+b‹•@ÃW'¬õ©=ÐO0‰MuŒ+0Ê#æ3];ñÉw¸ßJO FNɇ•±Ö¨T›nš»eI»‹#QLy´É{/;½ãnë#âxêŒYÔ9„'Œ“š„é /RhO+´µ:FLY´øŸ¨r …¢E®Óþ–Ó¹3©ìó–\xþi’ØîÃ=[”ð§ÆÁÜ5|ÛW¿Ÿ±Í9LÉ‹rExsØ”3ëUaØÂƒÈBߊ~^€Ü!DLDú̾Ù'k­/‚Å1è ÷Æmv¨yó[Úq›²¡MX×S¨™+ÚõF£­üis@¢ßŒd,7ô‹Êì.ŒÜ÷柫tÏe.ΊÉ#¶(áÖ\;³Á»S ½Kèù§Û™ãm‰>š4Éy#óõîŒ अ'Í“Œ–´¹‡`öÏ<§×NÀhñI«…$¿úoôª;ùµyü G$4+Íh„ãJâ”_}:˜+ØÜ~(òÄïxQÜ $¡×ørèVîŸÆ ž&_ ÙOÊ«ae x©„!¬Š8štä%ïŒ_Ÿ°eæÏ~ݨNûߨPJþÀòÈ:ÿ†Ø–¼hõ^i¬ûòü‹WþŽ:J™ œ~ÐX!ÖIÂŽÀÝ9€p—– ÷Òó.?Hbž®H¹SÔ9Q™­'~Ö§‚¾mй㎧}o6üûo]óÁQö¾Iÿ)<µ‰ß › ¢OÃ@W[ Eô‘$T:Ì,J²òÆÞ?s¼Üƒy’}?󱘮ì1/Id,‘¡û¨X4I¡–B~˜0¥kKàR~š5ƒz¦•…Ì?4?¡¨3B®+¾çÖPKŸ(ém‚嘴ëLÒ„0zLä뇯›kõ ;)«¨˜ã_ Gƒ}²Ô`!3‹ È9šó0 š‰xµwˆÌ„ßå°¾k»ÙxM©si¶ò~)ò"Zæ/:Sã·‘shäaħŠT™ ÈòféðßËŽnÃ"%ÙÂiX´†ù›Ã|¼DIœa¿´`X¾~ÃfúHŒ·CÖÛ!~»‹¶ë[VºWï¢{5­¥˜VžR``*æaJá%ˆI €¢Ñ7¾¨Ñ}ìî^Bœš@(æNÒU8°Jѹº‚ý9sÔß\õG^„yêo¾úû¾Ÿø@õ ¬ëVT©H^»ÃåH~ÿ ­ß°is<ËpSÿH™a™N±ÜÊ˪ç8qî$­`€¹Å@“cÁÆ s0ž¾Í<|õTþe¶šË˜C•%Çvca¸ÄÁ{.´^@¥ó¥ Tlé2j×óËôØ¡Žr·æ6æ"™Zìëä×(£¢Ëeú‘i Ì>ËÇEü»ÀZ¼É·žŸÐXŒBÿ+ºødIÌ]u™¹‹Ë¶'Ù¹x×Ô~âwm²%ÁXYe÷qv,wÃÿ™Ðg¬²]À»Dì¡DÄq¤–Qd“st¿\èß×ð t›Uc“wʳÜ¡UÇé1Å?¿ÍÌ"ª§r;¾ÐúÌhüo²¿Š¿$ø|»ß¿­:Áó°•´’‘‡ÏÝÛ–²áÛö€a}”ÂxÒ› fŠqÂ' Ò|øêÏÙÓd¸_ì.5*ì^¥0¦áÌOó*}\ÉjIþ–ôA6NÌ(©=ìyhË»#O°ýÃC ’»ê5jü¢ôŽ·ëb§‚ŸÐ6?É!ã7Ê 8mÇ?Ò÷á]t†*iï‰pW:Q·‘®´2èeýR±rËÀÈCœ<( !!^1‚|±ˆp(Û†tZ).én¸*ëüæ”Ã²ŠµC“â¬×Ò *Ù =Å@Äâ¬ÄKy<„Æt&<€a£|B*i1›hÇ+{MúŠ-Lkz0_ÌSŠÜS¤!›ÃËië'w\~{fá½|^êÞt‰ ‰A'”<^KœOǸ1O«‚ôœæêU»(VL+ƒb*²õ3¨½ Ðgy—ÅAˆ èvÁýÅâG5ŽkájÙÀ2=Ô`QŸ¯NDÎ¥ÀHÿ§ÎNéIéàu:¬“V†ÅSǺçIï ö‡xmœ5 Þ„Ø }åĺw+ÕõjÑ–Øt<< ‘1x¿*ײ±G, Põ&`¹„ S‹EñÍÓ’ÿüš†µ¬˜ÈjtN ¥KVšëÖŸÂlÒšë_¢©x´˜a4Lß§}Á·–ù@;‰ Ö¢ª²Œ Tœ6Ï¿VÉ2~z;üX ;¥Äõ‚ùŸ2Ø7·’{ôÑO2{ô¤Wr~eÈ ¿èठ^$ˆ=sžÒ°fƒ\À@®ê!àÅ((ò@zÅëŽWr#Cüˆq:ŠÃcá`£úk&3ψÑ^~^¤ž5'"AúkT?D讨‘R„©\¹åÍ‘orê…¾•p{n‚Ã!bg¥Ž!buÀP2šÉH£[ù<Æ+£*3šÏÄÕÿÆsïÑæ~xæ(=>Ÿ Ks­±ûEqæQýU€hÔíxc+ªÖ¡j &tf™OØy‡r¹* ‚âLÞokPvcäá‚FÞ.h–®< äpí7¬vƒõ'/fÑnðÏÝ€G'ÔNôª L± ½êFÍn@e7Š.n˜>YиLMÌJ_ú :¿ªž»O¤0Pê£ÖÞÂÙHsÀÈ@ZE1Ä’¤³`I’æŽU&öÉ?•±w/lܬÉ› Í>l"+»¯7dÛŽWYÚ7 ‹ùK‰)æóÒº‰ÊFMóþº-4(ÎÒo¤'ᔉHÝ!±’iSœñ9i2™ߢªßÒ¬¸b™bEƉ3=Ce·4ŸÙ¯þ7r¯*Þ©g²#,¢ð5b4FÑb у¯áHŠÆ„@$0 HäÓï~Õ€¿QàH­€ä€^S“ê4 ¥2¾†Z„È…P™¦ªØžÑ0Ð&ÐËô¨¾ÚÐ;jWÛcÇ £ yv¨cÁøÁQ¬àÓÈ$þ ú™@&[Å­© ŽæXâÅ×ÐâÎØß6ôîR 8¥¶Ó¢ü~,[Êü5€ˆ—ÙDÇÂù†8iª|õ_3,n a¨3ÃAˆÍ…Ld)qâânÇΊó|}–‡PËàðÏ@<@v²™vÑ–²K@#Ù!Y´×{xnï O©¢‹Š&f:,B¶ò¯‹ñëbþµõ)è!Å»Ëc®„]•H ±rKÛÈRsÐi­–Í7,oMçj›åÛ˵ ½uœ®‡ƒTÂ6îSì»= "†´ÌcúúK*èµ<’éÉtt™Ç© Jü†Y¬âY¾V%s¾µ+Á×à¡5±ì´qļ&P&!ÍËÓÝÜ^¢®€¿Í;L ºpIò…A ù²Ã°´A%Lž]™Æ¾Cj‡h$}3º%iì[A²(šyœøj+÷cfJ±»6ÐTûE ˜ohÿ&£¶åߤç„h·Ó/Št–‰`—G´B #ÿæBôJ`ÔŠð†~a?J…†–J‹P¹Ð°¾%Ñ $’~€9=§i¡‹³¶ïJD„M½3[BÝŽÞòD“w“<1›ûØׯ{Ð'n@íݼôà úVQÂW÷0b.¨ÌŒŸEñél £-®k”×ôÙÑn~œ¨û:ê~ëÊPŒýJjÕó#ÚÓÌU°û„/Imâõžf&ÕG?’R"Äçkx˜Nsq‡>åSÒçRhØeí¬Óàæ~7hÇØl …B•…€G„p¼´QÄÆF–Ë®óK5òÍœ^ŸÕœ2C‡0òÜ$g7Tpm*s½Û¸IPNíè&‰µN8†îÞª†:”»Cý?3 êìß{ø÷^úý:~¿©}4j8²×·âæh±غ`‹­÷ܽÀÅ¡/´ÀU¡Qˆè \¬~½GÎæµZ~Ç9-³… Ä¾ïù¸ùÂæÚL&­o­wgêoXÖ*³®H^ÇÊS$:¾ûã쮿²¹,ÍŠ^šójηš9ßÏW[òkÕò+ãÛ,ÂøëV~dj1öîË;Û¦cïow؃d1vH‹1§,”ÈZƒGä˜VP»R²ÐÕ£ÅëÕá®”½êµ+EÝu¥œ³N0è•[^—õ¯Uà?…@Ј u†ÈÉÀgÖŠ­4-t7\–µþUjL6KeÒÔ[¼ÅRë_óÁÅDU“3B«x)Yc‰Ý {çöðRO]¯È'Zõ|C¸WƒÚkÀá ÙÌÊ ú˜ÓY¥m¤£tW?•ì*俚‚UôjZ¤,–Z=†CŸlÑ'J2p'ŸÂÐ9%Öm»ø˜‚](»Ð¯Ôì0&›Œ‰}òÕÔ2™,ÑÏíõÍ5 1ö 3ð9¨ %zHhåÎÚÜhÏŽ12$º-‡ªô= ­¸(ÉÁÞÈ5Êf)1oã³ùå<ÐiÝJ#[hq^™³™S}¯¡WåXt­HüÚŸÍ–[_E«<×QsInu;lK™äÖBÝãL¹¥WåèƒE‰šMQä"jŠ\ ¿Lœè)C ýëéL‘ÞžÊX £^²²¶§ÉÊÚž‚•µ=EVÖö´¶²^PSøBŠ¥“&6_C5‹'Ƕ¯æ <¼~7÷[î`ÅNÕÊÎT°ÙºUÂê‡TÏ)•XÃÛ(/ÚsŸa®Âí,¤G\›¬¤­ÜFÅ”bi²µ3U|è½ßtÞªh6®7{*‘ôa“ºæhO¥#mU×ozèº3P·ž³ãí@Qbë ø9fpõ3¸fý ¨ˆ(šän=gnZωߛ×s®äV´Ò†¢Es ·ÙÚÂm¶µp›í- R(šŽ}s¬Ù¶ªë_Í&ÈvÚÔuWŽ#‡‰|7º EŠÝ(:Qt¡èFу⠊“-Üú` ‹¡¦íóøüI£(R(ÆP¤QŒ£p´r1øa§%¢¢5pžŠÎÀ*Tc(FQl| Sòfã%LÄKÜÊõ(vÝÃàí¸‡Á»ûoç=ŠnUø^Ïm»ZèÙÌ—¾×g½LwM%|wëÏé®5PÌw¹¯ æý¨ÙŽšaÔüGÔ,AZ638wóRìeq!¶²,àùÕº¨ x“·\r:t¼@,÷Ÿ®J VUÀ£w0z“O¹)›ÒÇFþÑšœ‘;c³~qK ÊáW]7ÖHÛ:ðÒ›¼¯Àía…ÂrÞ™—Ë;h$ã+ ÞÞÍ«œ¡¿wdè/©æX·0½Åûkø ¤µÛg8 šûÔ]ÜoAË1º«ã‡ªY쳩 ¸’äâÌKT«Úµ'DÏË=´.Úãt¹æ5Ë) Š?»j®t`/Ãå±€õÃ<ݳrJîËWß-”_c¥Ä°ºïâÌ`ô59P0¬’h +Z.þÒàjß¿>í„ùؽQ 0„Q![ "ÉÝ6ÂÚAË„ênîºp×;Âν<ÀsJíýÐ[ûþåi”@q™rzvÁïFöƒNÜqN¿V¤æ‹/Ï?ú´{¸Œ”é/5ÙaÓ ? %…aO ÿXP‡´\å ¶¤K–ÁþŒü+”7Î@ãÿ 9×ŸÙø ÒêÆ‡¬ÆO¢qúFQŸÂë"ÝöÆœrŠ(ªÑþ 'E§ðË’k¥/Ñš·ö?rêEÇïö"où”¤¯ùG7O~ÐÎÿŽn‡dÀ#¼äÉÍ’£«üã›ÝÃû Äz³à6±Á$`æPØd)]dSÄÈkÏÅq(»[ú8”ó J:eëZ9åRçõ‰èïQp?ŸÓÊù”¢HÊdÆ×ý¥.œ¥Ÿùø—VÎhdr,XFÖ †ÃþùÇÕ´‰ù0*è#5:…™Cÿ‘LÅŒÔóT98 ¬èf~‡‰5*‰5 ð/žDˆ?wáXüƒãD´“GÿÐe\¦ìÕõ¯Óݸ¬Frë=sõ(å+þžËè3[óš”þABŸZÌïÙœ3òÓ7ÜøôIec‚‚u|¥*¹‡¿…DÞ©¬þ¸Ä¾K‚bÆo¢¡nŒg‚HR´PzC߈8eçÔ ’Àn¿³GšéŽAäqf‚ˆNâɉ ùž#Ø|íô¶/â$„E¾×jþaœk±GÞ0ñ³ê´‰4Ž )#Í:ÅB݃B®h]^ç"fFh°ØËM<6{i ¯’ŸtÝgìå`³2ß“p")ñ³7Ù©ÀƒfˆÓ•‚øôᤀ’`wèV”ý=—¢2‘EyÔüÐgJ_d`÷ç 8ª¯ö#ÿx{˜ÖnpZcZ9]îÕkœuX‘zB—1I@¬(‰aNx<gïý t:>óÓÝq•#$([Üž¢e ›·Qž¦Ø²¹×®¼žè[Qý°ÆOõX¦âTì óÃã¦á5Õhµ/òÅ‘¯J“½$ c/ßÇ!,x4ózPÔ¡íHªéAŸŒéáW~ p¿mvRu·¤‚çögŒ&|®ëèyv.Ažë ÏN—(y“]d5ÛÌmRÕg‰?žO9Ë%ÃYËa³Êa>vÿ§ãFöÿ 4ÄÄ;Ûe/äì¦À§J5ŠOÍamYUþúýIë? ?‘4µ­JæÎ°Âc#TŽ%¡9¯¶ÒkRÆ//© QVc‰S S¥óàã‹ÊÇg1‡óŽ(p¢a…ºŠÿA½?lÞ•†k¨…’ø¢ÿÈÌqÃÎÑ–¶B¦Ä“NM>/[•òÇ’Õ±<+¸˜•ƒ®‰s}¬çWcÜ»ÑÕÊà±ß‡Þ3—Öí¬Ãóáñ¾úêÝ‘ÿ? ¾Úc–ËòKŸŒüÖVÿîù5±¸Ðjîmßm6]ï¾¶¼F̽¯°C7Í–¿´ŽLW m1Q1FW~+ƒ<2¸?W©ß¢<°l´ž©œ,:³¸Á³sñ–IhXëc0*ø= ûzË6­øI›§ø“iã"IiÇî„H&úoqˆëf•¯àV­“Cµ‰œ6±ÑöÂÙ ¦)ÝÍDâAù/Ö |ò¯Â<‹Þš±ÏÕWïðÃ"-EþdtG¶Z µ÷ËÈ 5TÖí†F6t(ÙêE|öVèwàB|@\¡a>Úæ³Nøs X@¯æIŠ]ŠùÞ§Ì÷&¡XͼÞümxž™oScë¡wàiGù¹‹Ì|twÙÀ0Ÿèð_–¯Ì¥ƒ2*‡r±øfo1XeEåô™ò³oB³¸oýèq]ùñbW\)€óÉ:òƒã‰ï®|Á»ç‹”¶žv¤,·zqKÊ2U¡€xŠkßêjËntºÇ¶_À#ZN{bó®bd,µ‚zio˜™­(ÌÆÝxxÚ¸ë-2ç(KÀ,L*Ÿ~ \[(Nó òC,x=–ýz<±BzÁ~Ýqö»}Úëˬ½º^bê%š|a Zžÿ.;Ò.ŒôÎJ*Âo…%üEhFŸòÀÚå»Þª°*]ù¬¤èWæ?ȵõÙÚv`ªwªRÜ¡ó¼Ó³¿Œ€Fáæü¢ÜìWJ˜µ¼ËË»PAA ïÆ‘¢ï͸‚>xñãt³7¸‰:Œ‘1ì9õÚ­€Â*GNt%”ŸÂà¬r7…׃S4ê‚®vÅPÚŽƒ6"CKØ¿nÈ•†"½[GPTíŽU/z+ŸîJ8 ¾´¨‚¯­R£’«Ý÷¢cûT»Ëý¨ûÔäÛgå>‚FÑw½©\&;½ñloîS[ä¡TßLØmYn· ×½r ×é¶ ÝÛ¿ÝîÁìíwévtVºPº Ǫ yyc ³I^î*1ñ›÷ó¶%#Gä÷§V<óļ˜DyÎøt0%î3¡AÆ}fŸ”Å(ËL(7ŠLocën\vQ×Þ°.ªWªùÚsìz/]CXL³mk4O‰]Bv…Ù%ôJ5цç_|‰¼Š}Н;×…hÙtcùÝe†Ûøk¦±Üÿ ÜÛu ë“Ö{ÚçÛ*{­í—ع]ý5Þ¶¦ÊÝ’AÁÝÊ$ͼñÍa¼ÁFvû¸ZvŸ/QoþüvЇ- + ½^âÅôUeÂoqìa=ìòW2FÁz‡U2FÕî93Úm:ON ¸oÒ‹–< a 2é¶1…6NhSÚÆ‰¶U9’úÃyE….õäü=¢W¦½ˆºÈÇC>¦]ù˜EçT>fU>æ,íx …J‰¶®û°î/ÜœdF¬F$` §*C6¤¦/“F¯z'_tÒ¹Á}:1'÷¨‚Á¼xv§»¤·Š|ä. ãÍÖ.Éx‡¦Ë­Ÿ‰Á°y¼¡sôÄ¡_Øk94¬¬‚qY¯±|÷¥Qñè¾è¢Ñ ë|ÏÞ[ná3‰+?Y ¤Ä¥ôíʘŒ}zXæÎzvà ÑG–/zj²Ä1Î#‘2,zûIòÂõØ÷ß‚ûìÏZcû,ŒíÚê×úÁ†Q%¬±Ë¡¦íæŽÂMÑÂç=ÞßP ˆ¾²;{>Ö»°Ä=PL¨7† Q ×¥sXñ OªŠ ÍYyŸSy Ifc<+ò~ÂŽó„'ßñ–‡|Y±ËEŒ¡øÞPEûq{n¨·ÃÆ ï/sc|ï–ÇùÆÈãs¢¹Î•ËžkÏ/± †Àλ{{MöŠ ìµ `éBãEn¿ò>”ºáV^ƒ,ýž¯†Š/•Ó“ÈÒP1•%Ö®ˆ 7_ÜÌs~„ÞÌ­<8‘éÚëýðNä©®|óoX>]D–Ó¡L)‚ 4 ½ä™#Ö*Š .Š^K›ê|n`•)0ú2 %³Êçõ¶¡ü¯ŸâÛ è»qVo3FѽÌVþçÿƒ­üŒé|ù{÷Fq.ÏœwãV>Ä„ƒÓésúMˆTMlâ™)®Yº¦Õ‡ÔúWbka•ø8\ZýÞeó˜ò{×Ïù ]/û»×=êdƒÏâAÿ´øÓ¿Õ>{ÛôVü O:Û}kŽâЂéH“Ïb{›çg`™ççô,ÏÏZšŸÜ#R³ÚŽÛ<”=Ë<”•J å³±¡|1Uyù>ø÷,é¥ãGeÓ"í~Pü(+IIJ‚àøÑš[º«! =ÕÈÁ§ôP‹ÍÐ>ÑB×h××W|1q<|Â;çýR(­ÏŒ_HŠŸ†k3g÷¥Iü߸ÂÿÆãñþYáwúb˜SÏVìP}Ð.¡†–"6Œ«×Ws¥×se'˜ŽŽý¯$cI§Ã3]¶.mçQ8[l;$·ŒOscܘ±ÿÕ;¯¯¼Ò`ó‡®Ui§O$íwT|•¿Qp1Îþ#‘2„£rÓp=4äù ÞŽF¯¼çr’3½P©~ïP=ÏÕ‘kØt¦ñy¤Üª ?ô7ýÙ uÐßô7ýkƒþ– _Î#un€o™“óH†ýû;‚þœVçj„7¢;tNÑžf´„"y‘3~tjá ^û*ˆ¼U8!íU ÛjCÝÔî ËjÇÓL‚¶§\zv>É Kí=¹ÏÛ…OÔ}“Iñ”â‰UA{&hoÚ³Aûê ½1ho Ú×í-Ä4TCûz`§9KøÙeŒFÈå¤kP#ü‰Õ†ÕÈÎ=ªF˜.¬F˜&¬Fˆ¤‰öüL5B¯«ÑàœSYD¼›Áéú‰àÉV5Jº:äöÑô \ñOÆ_ò^âSd¦p:ølV-MELß'ÒPðÑÕB Zâ 1õÅg›BYN5Gipì~<zkU¹iõ`ü~}’8i‹µHƒOÒ XoŸµ£ŽÓ±¿Qÿåoý(Y£MBÒ¿ÙQ„*û(ôdÞUe» Ê ªÊv©*+Ĭ„H -¡„¿=9äV^D廵ò¢V¾;nCÙq_¿»í [@§ÎåÓd± ¡7?– µ1xqüåÚàòʃSÍŸl k ¾MßçÙK?éËÒÍd»­Úí 02@ØxÜ+óD¿¬ª+@ÕÝYùŸhÿFäøgºŽ—0þ²wQÛ³¶úÙï¬U³³³ß×øÖ}0÷«q¸?Fwi XÛ}ûa÷ùÕ#ØßÛ3X«NŸ,Ú§tåóI›ÿ!D)Û»aônDõ3U¦f×È˘!~Bx R²èS,xÜG/F™øŠ$² y±lÆãŃǷŸÉ$N…¥4GFÉÎ U¾ýd&1”Òcë4pfÔ<î¹ÑTÔ°»stx ÆýzØeÜ10î¤2î˜2îäBëÁ‚+ÛÇ2!x BÉQ^%Ž£}RºPP"T«Nß”C&,ú„sßYùã„“ÿjŠ[´ûl•i;?¸‘Íi˨ ÿKž@‡O™¹º„Z±Ç‹]9V,žàíÚÏÿñ2ïçÏL²Å:KëÞò:Îñé P”ÇV}ojA§Á$õ•IÍÿ)—lZ²U1A“Bt°Ÿ"¼ŠËšÇxZ,p#VãŒ@ãûŸ6¢è~—áÞ–RuÎç‰(AâÎ:¬pÞ¯±Û*¿¹’Ku™à"˜ ì 7]T(Û¡P¼?-ÑÕÅÆKNóNßùnà’ÛÀ4pM¸¢ \³ ÌûqôUdÝðí‘,óCúưö˜å“8¼/˜Ç¾ jñ#Fì©fóšwG°+ø²±œ_¥4Þ ½ddè÷ Uòî^[p¾sîý.â)GárçAadn»âŸ¼ òÐ'x„å"Óˆu'Ÿ‰ï8’Ë 5mªb´Ôxzý2fè(?,ÿu_‰ÂhéÑÏÝf!ì^f!Ü8ÎBHwÛ•‡ëEÅñR‹i7¿òN„bÑkËqu)d:%Ç߉ãèI$JÂLc0µmŒÌC_ÆÂhò¾´ÓH5ç·V¸í$—1\Ffä_æ2fŽ"|#-P¶8ê 0ŽãˆÈžUGÝž(]mžÐÇòÞϰ©Í#`íCŸØ¾xç-Ǿ¨‹PôÏH¸Ê!a&¥$¼£BÌ¢øÃ*—Ž  c6­ Jʬmˆª¸N°IOXÔ;á«sªŒ<<üg ]]) È(Š Y9ŒwlBGŒÈâN\x5˜¨§l7âáçLh%çâè‚€Û AÞq}y¡’Í/0ϯ&ž?œrÙQ’—ÒÆã«ŸêE(g#¦ØMí@¢]NhB±µ*QMÊk-ÄS;´¤h¼UÞâV¾•oÐÊ×kålåÐ(\Ž=ÒüT64^¤ÕöÍO4…OµIÌ1þ‘°Aãç“ –ßv†¹s%ÐããßOÒ®9; GÎå³-_­Áa5&ª¤ øèùLbü\‰ŠÿLéºNŸx]ÿ0²ð¢u=eåôz\hÉñ]ÿèÆw°±îÄ1¾pBŽ2¾ÊÁC`f>ÇT‹åÂ=ÍÞµ¨¶mÁ¼0¾Z÷WÜaqÇZS‹mƒ®¨ðE0ßÐ*ú‡»Ø–‚:¶ú¡€GdÚv°‚qƒ†AèóQ&þ1…‰'¾;ÖHÇ39§ŽÖœD;#z9¢Õ£aî ÑHØ6UÿÔÒ/k§$‹)¹·òñŸ:çŸÛìÄ *•$!¦Éª~å?aKÍYS‹>ÕÂN²‰dJ2 ‘Î<4\AsPdE† ã‰©Ü×Å©¹ ¡ÁŒ……«ö]p 58f#à˜ÜB8&ý_I |þ¿à ÐoŽYR_u¶ªÆ‰ôUg‡£æ©"Q¡ESÓìBj+Ê瀧0 ú†úLeñNraqv§<²;ÖÕ#¸­” *Z=xyx)1pá¦yÛÙªWÙS‹G)ÝM¹ÑUfPf›T™uª2Û´„¦Ü¼„¦”+˜6»•oAå]Z9}'”e­/â®ï¶‚.ŸË§I¿‘Λ0§9ƒ )5š®”³´%®Èx[ÅÊߦ”œ¥­ Ø ô×2ï=õe¾ä›Åbö‘D4iðÎiAÜ.ü˜æ2lÎêRCÜ€’pb5FÜ蓃¸ñ‹O5é$Å·läqFÜ Ÿ]ÄM5¶-Ö"uq›CLõ?†¸}âLÒá‹­©›tI7¹ow««ƒ»¡ƒ{R²Zt«î‰ÍD´3Ñ›Z¸ø'(È^·ò>TÞŸÿ¯€'T}¿­~1Ìuþê‹5‹½k÷¤dwá vºc"'Æð5ëŒ_ƒ3^_ù½Ëâ¿‹³ŠÌE¾ð{Ùºãe_¶ þ}ž· .Úâ¼B;sÈ)'yºÎ" Ýpêy¨)IB7‚"eÅÂ!)éhXrq+š÷@ÉH™ƒ%7*C”˜«6Dd§†ˆ¼ë$SEB½û=ŸÅgո줔}ïQ.ËÇÙì)6¦ÎÑýèÓï™)K?·{í4÷Ì9ÅÇö±GyxSº'»O<qÀfê4NO-< |ñTÓ4ÝIɯuý›6¿RДtéîÓf;ºÍ:ºO~“2Ì úï2ƼilÔªä-o" 4ý´]l[×uæ#)›²”î”A\TÁÞÒ"Ôn§b2*¬rFgŠ-'r¡­*ÊªíÆš£ÌjÆ´BAXÊ(#z¡«…x‡:…ƒ80» 18 풬ȶâH¶d“ª«…Ú=Zj"'^L»Šµ{Îwß{¤,{–"p¾'¾ûóÜsÏ=÷ÜóîÁiÀa9f%pÿ§§¶{­L¶)$o®ô0óÓÅŸ¹ÛÄmÆ[-'ˆ²Ü$S„µ¯U~±“ËÃeŸð½B•–½À«­SOr›[U'D¡OuÁ=Л·1ÙÀ{ŸZ-þÕ¼Á÷7Ö«µúø/øþ=¾¾Š=¤ë,·-n…ØÖ‹÷=«x8í™ÉEy_À*–ðzlŸ=çòÁ·wSítRÖ5îÌÀ‰‡ÆµóÁáb±¶÷QÆHtŽ éúÑCgE6£õNý_ÿh§µ~õÐ*[N¹T¤†;Oõ?¿£dø®VÉ•&¦FVq+èƒ9¾&U0U1˜Êóe(È®?2íÄæ}j‹Pñ¯å‡¯­ä*õ¿šršæú pi/'ùefäiÀ A¿:Kpå í¦(î|âö—n\âOàu$š\ÿ²¼Ü€Á¹žÁðJe€rÀ@5 f=ϧ Ü+¨ º‰F ,TÂð}_½‰[ Éùv ñd˜ÅõF1–Ÿb}GÊiò}v ³%¼bÍøö¾,çâû&_ûÆí¥ð߸)¯ìá„! ]zôqÑùbU»vÑf`ªâ¬vMÉ è‚2IC¥“| "g=pÉvH.­e}&üÀ¥¦—Ø?lÉæôÈÈv*SÄ#”GðÒþPqNŒiê.•¶¬\) €—´›ã,ø‡mÆâÉßø®("y×§Ú Œ: ÿþ›=7éaüFŠ/sJ•ÔÒ.n­+–ŒŸª³C¹¤]3˜úZ~àUyG'YÔ¯ýÖI§%ö¹ä;XdˆDzâ†pÏm0>zæªóÖBùµ(Sw×=ï(ȼFf®ûêò™†Vƒ5Gç¶2Aé°à@a-;¯U$”e]' !€Šuår™ ókRÓ…kms eP¯ù¡CÇ÷ÉÕˆÿ¦±ðå®õa9ŠìÎD¢Œ—R<߬X‡ü×v ·U|¢ÍõèϺ _פâÆñ€}nG¸à›7õn«‹%gp«6¢$…F'8ýhôƒ—1ãú¤37#Kçwè+zbûÞŸæÚ÷ŠóºIØcÝ5—[ºº–[wó,]}cïÒœç2BûÅ­Žšù>$E'󿙾¼Ü§ulªôŠÆ«–ÓÒ$þm0¬^¦¥WúßyŒö]%ÏR÷– «ßòöGÐþ(Úï_Öþ(ÚïWKãIŸ‡É6F\ rŠ›ìçùC¼uâ_™øGr²\ü«ä¸>µJ?ýsGþIçœ ÉZ|fv“NÖÓQåþ6Õ¸“³%×q†¿.[î8ƒ$†ãÌ>%×qFÀrÇ™q2#L±¡YcಠEܱ*Ì_vC¬-äÆlÒ™wÕX$j 6ÿMçá5œ‘’PpCüþµ+¹>@ô­íc·\ÓrÄ‚LüiToüœêŽWÙ¨^+ÊÒ÷|x3Çÿ{Ç!z‚ãÿV#é ‡ø7¯AH8I;œ€{9‰×p¢äyþ‡öÕ¹qoÑÊŸœ<†]¾W®¼@Ô»ê Ý¢ÎÐ-ê‹l¶•üjŠVÞåǰËoÈ-¼…7…7…7™…K÷ê’6ððöu¡MªõI‰T$Þ^ú6ìïSJ2ô˜´¿OäØßáÞ€s4e,q²KN*Â­Èøž÷ð5šÓÜü@¨^ŠCÈaW檼ŸÍ LžÿŠ<éèÍ9`½‡¼´¨øÿøLÆê0뜪  —ñµ¾t¹.å­HA)ô¥ËÑ“«¯i¸_—{L«¯ú{¾âªÒŒÊ¢\6ê•k¸ÃPw8!šá+B3`¸%u÷Ûõ·—>—¯äyI9üÅÀ'€È¯ÖpÐY¿Z‡½^m š4ŠKMáÛÿòg,Ëšyv~GùÖÀéæÀÍXÇ,sï3}>ËǨÐ K; Üù2\Àóxµ… ɋԱHÎÃÂÒ’»H¶b‘l3ÉVc‘l3g÷·=üuÇð}U• †¿¦Þ€¥›(ôI)Z£ÐÙªÔ·‹¤yc™>iê‘´vˆ$ú3%üØààS^~£«øØÔ+o›z¥û%yï’ñ}nîÉ%Ç<›/1¾$´Ä>øÅöÛü‘º¼V¢^ay_mÊû*c‹WnÊûò"yÊúñó¡¥j²CiAîÅJ ûr­3Pš>@3ŽÐp„¦¼.­‹ƒa¹KÁêÌN"ÿ''ùäAHˆõ¬¼s`¶èÇÖZËE|ýi ^Ïí9„Dê œ¼øb™Ó­éÄþoÎÐ]WpjxY”yŠëªÔO)Q ê÷ ~L²þ#¯¶¨Z¿>ן½õ×Ëú)Ý C\ÿ á\âðŸ@{‡¾žk­ÁáE‡ºvFì2~ ¨“ù>Tnþö*M*’›ªI’óo5†Î¼©ÖÐV·ÓQ +X›h|{ ÁR"Ü/yõNçzi ™…]éÀ6t4u®úVÜWÉ"SÛöqÛ¥Jí—ÐdÊ tƒC¦3Jè{$ï³G¾ÀÐÀ»2‚”ÝHy)eôž#–®.V™»– £¥.Òï|¥ôÄ©2¦ÎÆö?*ÊËé%Xa88@j:“û]eÒhÏeQSèoµÍ T¥(ë¥ãCú¾©%„~vÙCr=¥®ÒZôä>H_‡ÍpÒINN¬’Dr"'ìÜÓà³ ®hxrü;DàÕÍŒ:2Λç‘1kfÌrÆ—?ª‚´›ÅsØq1ŸÝ¯K‚d}•¢Çì.¶É¦bKEHBNÁ>$ù%¢ËôÔÑo}@™ÄÝ]?^ä‹?˜ý˜ßk˽V“7Ðòñ†œØÎPLuÙYô¹ôÇ‹Åþn³uÙ«ØÕQªJo“éõ—ùú›<„ ôìû7WˆGrgPÈŸÀÊò‡ƒÖ[ñGÙ×kâèöFåÆfFžîÂôáÖ$$]8Ü.‰…tAí-¡ÇÒ\u*”T;T´$†ŒÆPK)gÈ3ÛfùRlò÷_Cˆ>œö&(%qnڛʦ}‰lÕk#.ø;¤,yÂFòQàG¡(XkXTå7 iL‚Šaå†v[pµûX”›ª]s ‰ÿrh·„VÊ‘£–ì});½%û~FðžCŠ>]éøµlÖÜd¡W2þÕÅÈÆ×ŒzÜ_2+:‚üKKIÈ̱0²HO„}èÉ} é$˜š<Ïmü+ô–èh%$ùâ¬%¸ IR¬HÊUBò§–¸‘ !±èи}$§ÁÞƒèBF¾F¡#Ë'2e¬8+çq`¯ ×´InNÒÏy”߯Lwn[F¹ö¿“|fÉE3Y„&÷ ˆiHwõPЉ"Cˆsºiÿ‹YƒÀ8<¥hÞòÓœâ>HÁ}îœ/e¥X‹w‰//WÕ¸¤“­ÕfL—µœ ]Ð)fyCQs ºij$$Ý剞±–ÉÕ’ºð¦¬N TêÌ)*ˆ5Ó·=,É>t §éFÇLkRګ̤#N¦Ùi%øŽ‡„÷¤ißµ™ ^¸xLÐ{ \ÀtqãRgÒîi”GÔ¥!B2OXCVáÆ¹>I!6“édXr$K6f8y8 uù%ñíõW˜<½‚"bà’<•ÒÉç¾ Y Š„}îi^¿ã Í  ýß’Ë Ý;Y’çŠöAâwÎÏÔ‚âÄ6v»NF ý7·––ˆ\Ã÷ñ»Ä„òÓ¾²ü´ß)?m8JéÂñ")q¡rŒ;ñ$¬¤$ëÓR°Ø VQ bÖöˆ1Ø0áb8´ùu¬§¼„JFTd‘†ú®ràþŽ÷±AˆÜÂP33âEåWÚ: YØ…õ*¾¤AÕ`¶íAA]¨Üô"­;M¨˜ˆž¥½ŠéEÒ^¼ïÃRIzˆõ×4"‡ Þ´ E¿¬\ëÄye˜ï7E='²ÓõÇÅúâˆqšà°¸tFV. ZÖ8ß‹b·Cóí²šw#}9=ÈID¢xœWî"!"9T¸ŒÓ-â²Çx „(íyÙãŠ!$Z6­Ë†¢ÅŠ Å a»µ)fÒoÅ:E™Ò³¬V“^9ºMòƒ»\´†óšÕ»ô†HÛšGòŒ6"è@‘”ù÷÷]©6%® +—ÌÑ}SPý— zëTû ƒðùÍjì2fºg𦹠\;Fç‡÷SÈ\…_HÁ3H‡>m¦hC Æã³§H7Æl,~£”Êr1%@1°øî@[*í²è-MO–_Ð\öÀûVÁÆßÊ:ú9¹HH@ëõ¥ÔŒ¬=Ý5T ZPERØ‘žl7(ßiõÿ´‚(àJiœ… ÒŸÌ^™{Ε:—n<™M ™²;˜ðïO MûOÒè·cô“ Ã4È0ƒ©ØD»?LEÉt¼¯µ¦"÷{.ØÚ{¤ÙQ)Ê…¿¤J+“©øô¶lúÉlð´‹7©é¤ì¦RÄJ˜J‡-±!xµî6³ìFê±CÎü’²“g` Ù⊱Ä‘­Ù¬©Y&Læ™@–¤YSYfLæ™A–Y³–Yd)5WœR^q^ F:…ÿD¼h<¸‚Þi¿WŒïçç}…+ê» YŒ°ÖMûÓ¶B ýmãû'¢Ê@¡©f°¶·šÊ­Ãiçí%í499š»<2NŸvò…,W·¾ô•ÉŠIö'úÊxÅøÆwÝ}ôÌ_=Gß±PØ;»2äüjèf%j8†Kä|ØÉ[1ºÐoÛO—ÄvVÚØÄÅEO~ñö‰OùØQÇâ<  VE§Œ (Å©¯þ ‡M¢¿Yû ¤ª8K> ËÛEmCØþ°Ì´•ps!—ýä—3h³µÐ†Ô~Þ¥‘ë)©‘øâ•Nd¯#m©è&ï¼ê:ø¯øÔ2½.ÃÝ b¯º¼=Õ¹ía••2m5dÖjH»lˆl{“¢œS´€ªæZ/è÷ªu¢zC Ï+”ûª±}”[sÒ_Ø,vQHXÞ¿O=‚+¹ç e\nQcßÂ÷·ð(ɽ&w ¾¿=$7™¤ÊÈm&oCšµË·´ÉÍZ»r.)çµ~ñèâÆ¤£Ì¾1#¸¬û[¡=sKÀæàpÉïñY©üMÒx‚qŽ>ƒfC*ýfUDV|Á=¥>Át?ªg³ sk1ŸMðÏ»¶ðâ0ï$åLšñ§¶NÕ ² †þ$Œ'²Í}Kö7/‘” rÁD‰¤a&’-ÒTâ>øËÛlC#R‡á7,í#Ü}&³ýNéAÒáîÒ£·7\Ðy­Äu÷÷ÏÏ/¶2!ÚÄ ô fj¬0ìaÇŸ}ªE×£âù­R:œ*†x>ÅßtEÕØ“œ4ŒFc€Ø÷À*Þ.¥Ss±ù¤Ÿ¢êÈ÷0˜$Ó€À,@쾟 nð¦(¸™Î îç‚Ûîç~@; ètº=€^@à ˜ Î—Ù¸ü$õ,¢N 8Y@'Yýê :; Ðó€ÀuÀa´ñZTÀI;ÊèGMÇQÀ @  F£€1ÙP@°n×V¶ƒkS úÕòü®°P¨Ôj^@ ÐhØÜ‚_=Øj:ÝL—›b;Z`‹ÝœÊ(”ÖÊUOqÕ1µæ)nxíSh Ph4š>@3 |/S¡r/—¹a/S¡j/: ¨Ô¼€:@= ÐPÝ\f9úZéæ27È>ª5€Z€Єñíàì͘ݠe  ÐðÚdïÜÁ=êBön¼ëôú‡ÀaÀÀQ9¼.³ÞcM¨ÜèA›>@3`7 Ð hø퀠Sþ¸‡k ìatîኺö`Zz½€>À!@ëNÎÞ¶“ùÿ“³·ïDE€N@ Ðèô"€Ã€#€VðNxÇÞi€.@7 Ð è’ìUÂeÖ•p™õ%\fC Ø Ððš»-€V@À2ÛK˜ž”Ù‰w]€n@ ÐWãÇ3d32œ[ú÷XÒîøHî2ÑÔèK\ÀÈÅqÀ`0 ˆ€„‡AÂ# áѽ¨ pœÄ‡Ð³¨u=;‚~ôŽ¢€2 8¥'g?N‰îD@  Fähü?‚Æ¢ec€ @0 ˜Œ¢ö1Ô>Ú“(z0˜è€yÀ²_Gö,²/âmƒà<€YL2}gŸÇ$[À¨\d‹[ Ê”ˆRNÕ‚ JwqëvYJ@*Qå€JÀ@Õ.öð0%}†¿@„…Ç©”Ì$ a ò6Šƒ‰BŒDXŒ°×ÞŸ‘m“¤É› ÐRH¤ÐwêþkÈÇÉIl„ÖZH~Š+ ¡¶Knõñ´þèÕX0kµÒ^@~¤e0·|Zß,Dù´(’gRŽú¬ši1ÈÍE«‚y§›[¥bIC«Ú–UC뀑ƒÿ¡îmࣺê¼ñy a¤í`ÓZ(£‚IWZS…Ýè¦mª´¦ÝÔ¦šºXS¥6º¸\ô‰%5ƒÍufÚ¸OtQÇ•®¬¢…Ý'VÚFš…h -¡…Š5ê DM+–üÏ÷÷=çÞ;“„—ÚÝõÏçÎÌ{Ï=/¿÷·£¨á¸öð-9óîñÌ{'çÝÎy÷ñž÷@ y`˜ÖP¬–K½]ÍÀÙ´FyÚ|ÇûHyôG=Ð@díçfï€jó@;­1C¡ É™4àØ<`Nk\PˆÅJsÞx}4ÀÊø†Axȶ"7Î#Ø6Q‚I2CI²C$I“_ÞÊ_ Nzß¹òQßùr „K'Z”=⓾œ5ÞïYãƒ\ã.®ñ0'NaÈvÑFvÑ&ìÂÛø†9°Ì1b¼sÄ3€õ9O¨§û>µŠOùnc ÆáÝûM&è‹><ã ïŠpKFŽy‹>\ðK|KÅo”oÓ_Æ·¶øåÛŒ_ñΛxg?ï\Ä;Í;?’wÉéqâôùpˆo{d’ÖŸ^GÝ=b¡NRMåŽX<]ð[Õ…„+ÖÇÃ&°?b÷>rjÉM>|%Ï'ž>€{³-χâÔéJðè7V‡Ì'Ì3l”^|<è<Ç0ÈÁŸ?ð>¿ñëCfœº}îÙ1¦¾I—9ëa‹sÖCgÈT¹> aØÑÇC7¿uíGpþޏ8\núÇÍÐ6qWå×F¢G®“ûxHF’'Î,ؾ,px²ý“ÇFuI¸NV!Uß3‚îºå#0Jà—ÊÁZFàÃŒ8]l¯RÏmŒüGôãá¤9Y£$EœÖœIÆ6£°p‚ˆ+‚ö裸o1©ä¯2Á¾Ë9mÀ9•ãÇxÛÞ-àᤛ´>ç#¤6{ÎÅÜìôô%o’­ Ûoýõ‰Ñd‹xŽf¡>ïOˆƒÿ`>D¢>åžbêKö™iñl•kÌV#e(E‘ k¤S7¢ëzô:%CùrºÄ{µ'Àl³<“à3Þ#›å™HQôñØ5ï 3>õ gôý!7g) ~=Õ팮ßóÌ ámHÖRNò›÷rž$4àQT‡ â¼é$}¹ëÙ)þ]ØæY­7ÀM&]ÊÁúþ§ïz-¢îÅj‹ˆ/å.‡BºÜå×Lå½As¸‰íl¾m6ÿªÑÑQsú<= #žç¬’xGqZ“ŸªxC»K=é% q¤[ÌTÞ£þJÕß<%”©¿ù‹fÛ/·×ý£ìÔÎÞ’²8ê]@pP?GìVõ³9DyñzKÐ \¯àöko÷è¥G÷Î: ýÙ¹F4‡$·h—ܲ»ûÄ¥GwÏB:B~cnQË>'·¨î™ú j?ðè^{‡L ÖNë±s+´|>cµ„™ÛøŒØÕ#tô OÑõuòÂÎÑ•ÏÇ …IÞÒ|<ØÒÖU‘ÂÀá©öWVdFâW_›ÈÝ>^nc²VÑÙfb }^`idŠääd8ˆZŒe¢VÀ8gYðã‚ÒOÜ)ÁQ²íjÓîðylª¦ƒgõ/.eYÑ|y\Àð\æ:óæ$’6ïôIæÍaŸ«T´Þéò§K:((¥((9- ÈzZdšIj¹Sž»Ïy Ò{Rò’»?ª 'Ì4ûBzRB¹9;Ðã!É>þ’//]¢‚Ã`È‘àƒ¾Ó§cØó?ÿž\DbO?Ù/š$'È™ê“Ñ{§+.N™9æ­AõÎZ‰8çOÞÙ{…'™}(?I¬\ÐÝ7ðÓî‘-Õw‰ü§K·×Ü%kÙ,fSw—€(î“|wS‰nÀ0f4ßæ3…ù2аÝú‚xØDø>îWo½ÖïU‰P¥;†©0ÿ—òfÓ•,H•ÌŽrÉŠdò"¬!u ·¢”z‘S®AîÛÄ£þd™7ßõbDõ¡J;£$CÖܲrWŸÈŠåí™~EX{³‹*äý"ºEü½ªx)ÎÐÃzÕöC’úÐ7!’ù5£=jáÍLóz½ ’–5¬$ws_¿¹«úý°È×¢êËm>­Åêª/é¼.õFÉ-Àm"ELïŸ.|¡?ªäš<ù _î?ldü—ûN²²éþ‘yˆú—ï;â©éžyI"] Ý*¸xü×'Y²ƒš>O) &ªþ.³‡3©7þ\¦wy5^>£Fþ¯Åÿ» e:ÕÈàbT¿´ÓÂ"~ WEÒ³ŽÎÚ +£ëJÓ·¤¾­ÿ¤<‹×e‘’»S²jñ|élšW™ó©ƒ¯â¦|tšRÖÅ™—¯AR¾CUš'%cpËÞ‚ýWDAÀ@Š Ö}Úgt)׆íó¾ÀM‰ y%#òbžUQ>4¢Í Ò+à N 1D’z, $XÙ¤öª:tQ03кD˜t ºD«–ÔìßÙ' D‹ÆÐ%ÃcAcHšIß D´.›*w©C¹æä{(ËwÉß|.T9êÓãGE¾üTÉŽeš®fôwòÑ*³ Í6T9ÛPi¦.öÆÝæäÉž$Œš±ME²' 3É#}|DŒðN!@ÅCÅfV<íìÔtEì?B ’³9½èÏÒͯK ì<³ø­ïfkû·íNý ÕÛ¢|r¹¯_æUq,dßšÈUØžiÞv¥B½jœq×èY¾‚eS§rä fäŸC%…<ïÈ=ð²æ—WÁþ½S¬ç‘¼OÞö"–øÑè2SÜ.º®ÛI%R˜4çk«ÒyŸ¹¸5Ìó›E q°Y.Ž»'·ƒKšbÔ5ÿþÞDb OSSî÷x%²’¢#ÚËœ1ÅœQ©*<~ÞÀ³ú–{¥FJMùŽý£ÑО&GÞè¤ëP%ÑDéoÌ¢JÔÃAù®£G€Y?*¦q?¡…+žXFr‘Ê7'–åËŽ¦ôÏÆ ”^ Ø¡èýa­k¥µ¶ŠÛûºPü?ßµÐËIŽÓdâ”ôÇ ÓƒsÄ7éLJi{½^"".Kúæ9êÛ¿È< ‡9»Ð€•“OC õô/æù-Îê ®¹ç49cS¾ÖÏ>å=Ÿ ÑY‚ðÀ-“³ì†&RE8f9fCŽÝ°ƒl³aB¶©îâÅfú0Àxi¨c€±žvMOƒq‘eiÊÇTû[éO—®a%¢†x¹ýá \•ïе/ÄóìË.¥6âÓSD(&ŸmS_Äžâv„ °;¥id#qxî §î˨Çú„úÞu`}zLs±ÿ›r*¦ô“ÏàÆ×¼%´[GJx±¤ßÜ Ô[GM8~?1bx N¨¸&Ì‚8ŸAÍÓaoíò±JÖ…4Õ…#öÑZ©«!óÀƒ!‡Û!kçNŸ93ïN9öáÞw²øW£±{õ‡¾€Çî¥îÞm¬ŸaÖ.s§ñ¹+Ydµ[¥×î'>§þ Çñç%ü^†]IÁe ý­K«Ÿå]AúÓù—ã‘%¹íÿ˜Úڌծ3äð2uy•³2«ôÊÜ:n9žEgˆ˜S `ÌwøóÊàËçá€ÄGËçcÆœL3ý¬g‡¯5bTÿ].J¦âö]rqÍ›#wQ$½Kæiß]ô cßÐ{>*Û´:_—›wbÍ sûºL,×´­ò†—¿zå á¯åS‘Y0£Ì¦)ùsú¦Ko•ɬ¡*6Æ~ÊCŠP™5ÇîÐás3„wNdÞ·Óç˲17’¿ —Ì.Ì .I1Èê9K)d<òtôJje^½¿æÜèÕ»õùç@²¾wjZÒ–¥ 9å8 oo£f<Ù•%gÅÕÅŠúŒÏÔÈlç`Ãö›ºOŽšÞìP½žII¾C5&–gC¾Ãy%~¥2ŸÇ‰ó å³dï ¥ú!#çŒ÷Íê5|+ùq‡!ŒëÉ(¥Slš|м†¯Î|¡6]ƈÑÉû»Œ&,$ŸžOÂ@›ïðZ}ºs÷¯ Õž ÂÛe®lÝ( šOY¡ ¨¹våë#r¾ ‘A–÷JÏXÂõù½8ìs× Ûät1Õ·Å·ä»[®«ž2uo‹V}E[íáó; [ï1êØÎl…Ö£¨µ’‘¸{iérGQëõ(j{dM¨¨] êõ*j}\ªýfuû ´ïw tÁ'p}1±`ILˆD/œ%%‰Bɘßvïz2–,.€#gÁ ˇ/—ÉÑböèî{JÔ] ±’>“¶øÁül¡Yÿ|F%ô®¿–‚Ìú÷›U¶õ—x/M#óà…Jˆëi>–oTr:Fìr1E àåQÄAˆ³37)'Zû vsˆ“nŽÏœ7:ªë:›Eoã¢{eþ=fY빬 ã-«C–sƒdíÇR!`š:èaˆiÓ~<&)sB1²Ü2â®}à|Éà[úiƒ…íD\0÷Fâö_ßrÊÜÆØïÚ ?E‡ ai.T³™cf#þ)¥Hgˆ¤ ¤±"Á9¹m{pz)ÑMpÏlØõz3E¿-õê·ýYê¾’Žß©ºêËòþ„º£ë´#.èø¦æÙé¼gg¾)ˆ9"KГ£Aws[‡Ps“²µ4žlh½‚#¬'¶²½bíÒΖžŠmé9 Þ2Ã=_R2œ—H¢1 è0r—®†£„IIú:Ú=z©uìè.ëè¬g”®‹ 0ã`”4°v¦µ3 쨄ãXC³†­mþQu?²ÂÒÌ4ëŒûêåVIþðÜš`H»ä¨»×2#Ä»‘–÷¸°ÐNææµ37¯¹yÌÍëdn^;só²:GšÞãSØrõ ÇGÂ|²‰ñI)jgJQ;SІpþŦ£Ïªî—+ùE’_¤zªç·ˆîÉ“ÕΨv&@eÈ› ÕÎ\¨væB½b\%¯Ì:f=#Kˆä¨´ÎÂR:_„ä¹Çó8äJŽu!É C7GwÍB‹E RéÒ:=/Õ‹Í» •ÃñïþÛ炸.òdYÜÚgIføhhE’UF YÆ2‘!˜ó¦ècò+R=k@‡‹ãðë2×J/"1N‡XF@aJI½r>ÐC'F“ú§L|ˆ Ô4ûÀ5& tŸçóµB‘ö²a² œ»bÎ/6œcÄáGòy~nÞ@·ËõëAÑÉs\†»ƒWhÀŠMú@J·p ØrDR4=#¨ô)+4QÃêÅ€†¤Î¡ô2§#fd õ@Åž¸ŸŒûŠÓ±æò! éöÆã3…›Ö¾oÏe<òx†x¸*ï‹°¶¯þGñç÷ÒÌú?òR@Üý?2¿YFîqU²$²d>sF{ï¹Ýãª)ôÚᅅ繡è!§ˆ²8Ÿ<áëOåqCÑå$ˆòaç™~#Ý{윣׋RA…CC-•Äç1|xu’ì[€âÉØyNÀ»ºyÕ|!í^4׎)Ðz…æ ò¯ LýØËû²"›ºPÏYlåy£®«ÉqI…œjÔ!Þ—?°^ ­^ÿÕÄ~©ÈT¯_Jó_Ê=Õ'Ûñ” %s´P/„xô_È Q–ÃoÅ®ˆ\Â,Xø5ȤPXÑØ,Æ dU 4k[tÝ1ÕJø ã*ö˱ã¦`7l”÷µ$ão8?ß±%ci¡]"éà%t}AÀ ” ò:CŽ˜©y(Ðgh¤ÿÐ7:Ga“!”wøc¤¯ŽþãuxÉÜ*F‘$=çs ¥˜Xê5õ …ò/>Ä„g襓‰°we»Hz²ˆƒARH«ãåŒæ iaÊådŒÄ¦Êú<<9 žOûß`{jÕ§hO…²B£ÁïK:´ÆÒAåUE©±¿ Œ²‰Y–ÁY]ôÅqh•`­6QI'@;hGxMÝ>!ÚqßWÝž…vg'ÂÿÛY*ÊÀŸ§7œÕKßå,çwêÓßáw$I/hÛŠOÕù›N ÿ iÎïs­[úÀ­ã.˨ ¸vjç¼>ñð¤<'`¹ŒGBˆa |qÝ»!³<¦L”vO—4öçE°éÑð;K]v.xšn²Y}  '¼ áØ¨¿]e@Z¿j‘éE9 ]M–Cý&»ç#T›-¨q {‘ì…çÙÃïÒîc•Jz²"äÑM9~ÊŠzLóg„¡Éöƒ_>Æ´¡‡äÔLÕ[ùžp,’.dâcê3Þ¶ÃY:áé’¡©J/ÑUT¼É8±7YÂ%™ ¢ àS:/N÷üºú›¨ÖT+ǰy%”èE'ßÄ Îññ¸†$÷„ϧ“Üõó¸ ÿs“91°kyÖÛÒú„·uüTª~—ùè}õ1à!s®[ø±<†”Œ=<uO½‡Ç·½“‘ëS%À'Õ!è¡WäH¡SnÜX§òì/ü]ˆ*™ ›fm·v7o¾µ·ñà>“¡°oÖ.“Õz»Nt_25+»¡ÁÍn˜5¦Ój)r/{Ãʦ«ueÓ$A”ЕœtᣒÝPÙ >®³Ž]om÷¿Àd®Gw[»fí3Éî˜Äµ!_zú-€z\ˆ±[倩ܱ0cWË ¡Ê5„CBÚæ"˜ÈÿðwYÛâ‘%r±Ml‰0õ%Dö¢%F¶²ŠT)+*Gro=ú¼"&8®§˜OÎd3‡ë÷æ©o¦ËxÃ|6ål*ÙT±©fS˦ŽM=›¥KV1x¸¡>_É$ d‡œ\|#ò„;¸$ ñ"%7Š_‡ˆvÒñ[%Æœ²N™ðÐw©;+Œµ!ÁØ$ Ëq¢©Î.£•âó ô—Ûÿò×ý˧ÊVèžu°°¼äZÇyÉ›@®åƒŠh¢®þ&'êê=_O(•õôÜ—¬!LuÂLõiÍ_fèçü÷€Z¯½¾øÏ‡|Nü§gùji­¨ËµóÁþÚëA:oâo'´z¾¤x·™™v†œñ&öÉ™êÑÞ[ÃnÇçuä:ö8qjIXœZ…¤ÖæŽûl2£ÀS‘¸z§ «ï4ŒÝʼÉ< Û©w»X’7™ýÊH/â”°'«GÁj Ékô†¼ÛÝ‚B·:i¢é¶‰¶2qÛø80Q@„ƒo\@Ä™qà3ïYŒÅÄmd2.¬Ö8¡—íÞ'Oy C 3]”ú´ÿ¥ôG¼`Ðv›+êS”U°p›»è),ºL¦8n ÖÇ¿_å¥wm·9¤Iõ‰^´ô;ГÐ;ùàìW«Þ¯ÿK?ˆcwŸ¦ˆõ0¸!‡6°Ù¸6@? Ä±ì ™‰FQ£õs´GÊdÕSã¯z«³ê­zÕ?;êbÖv‡ÏM$‹¿‹…2ü#u‡³PDlkëœÚ<w‹t Dû„ôh½ÿ® žH³w€xBÍÞU3¼EÔû,ó—±Ó9Àkö{ƒì7´Ãÿz§íØ>^ˆ:GMÉ|½.,QAÁ\–+®]‰š#b}ôŠßÁÞ¿q"åVß&ã…"•¼ª”¹í«\ôb"·öóJP¬F@ëîå^°5CÀJŠcP48qCÒLé9Ÿ ?˜}Ç•<ëõ¶qg·qöòÞ'ÿ¹ÅÙìCtz†Ñé;Òt~+É*»æ •@µ@ôÌ䙂…Æ÷_j{O}6?m@¹ÐøÞz—Æï¬wi¼œveRhÌ Ï9ѹ;Ð+ Q(–psä?¯¼ÂK0W‹dLzŒx™ùààn|Ü# µ»$ë\BÐ׸Ä)'}­¦@OæP ¿˜ôòyB·ÖŒO·Ö:tkímnzR/åXn!K/ÜB¯î½ÿ>nüùÖw8Ûw˜ç–Zñ¢z1Z-¦y ¸^.Îdg3§^¤}Ü iÿŸ”Hü¨D‰)…å6yZ×/dÑ‹µ PбìÄjÖÙ,ââlVï¹ÍÊ4“wJ@N[<Î;ѵ9€vË‚&Û—*ºäý2xAoô»HôMšDž›aõLueÊ@ÁæŸöDënÏ1x nb/ˆÑ6¢‹-Ìç몛SU¾Ž/|x£'¾p¡cyªÌg}“Oú½Õò"ܶ Oµ¼Â'?©‚æÓH(«f^…S3¯ÐÑ&#!çiÔÌ;sm/‹ézj]EݪÌ1'è!ª±#b}úæåÌIçµãSe¼4ɲ–BU³L †²†é¬Tä­öE…ª:>_q“ÂÕ³¥xˆ®ÔQ—n |L¾‚곆Å=åÔ{ˆü\&×>ÆVÒž[³lœÉ5oš$^“é¾=¹éG8ÍR·úÃøÖS}´Xi¸3Õ4]0c-ùÔe‚c‰l[’j¯™  œSP þ Ò•Äpœ²klñ\qàÁ;¶oLß9å24Ôž¡üCÑÚ@r|l%À$ße¦SðÔôf½¿ $Ùrƒjpñø þW½%׺xç6=¬+£†ÞÉ‹½lö°éc³ŸM?›A6GØŒ° ÕIacSĦ˜MœM)›26ål*ÙT±©fSËf1›%u2Ü–Á±—¿+èLW›±ò³®w1n%pøÊ$![ë³Æ?nü:Ÿá⟵¿³D*J¶ñ„lõ–^òÚØÜ2"çWäšÃö¢ŒÈ1³ÿÇĸæÖù«›P?düÂ![ÿö ¦5OáÓ™Ö^ºACÎ+0­ÓÚÑ]ÒS8ä……náú:i}øÒ:¹ØÀfy0öF4ºÑðSb€T÷CÑ&Þ”`“bÓÆ&Ãf5›µlÖ³ÙÀ¦‹M›^6{ê‹oåqû+Ü¢!—ðõ É-½7U.¥g,m<=£|Ęm¿©Ø„úTqšÂ|,%¢íSnrã;xw¥ý»oÝ­MÛÝÒWu`|Ч¯ZÅOsÒWmÅHâ&6¸!¾(}Õn^¬ÍÊ{|ˆîNE?7g;ÛþF»[-‹AA´ü±­u•êêBc‡¨R_ªÕ¯5Lá¬ÛG‹å{¡Þ'ævT.oÙ¿ùX¿#»>sÕ×F ÓÏ×, [;ü»ÓÆV¦§ÿ–u¨g:ʃ&ÿ!cå ›õÈ¡×XD)S-³ŠÛŸ(f¢ßT×,86ý·É±‹5i»˜ÄO´AɧÁÀŽ©ÎP?ÁÃMo.&ÎÀÛèùS£˜ôYØÞ(¦.ê%[¦êd;|W}ã;#r¨q”b9Z!ÁÃ<¼Áµ8OA£ô<©wN·óäÃkéÿÕ/s:“ ߀ûÛÜl2X±m j+õÓU 7ð§Üó ª©Á¸•ÔÅê y;˜…äÈd=.§ˆJ’LÕ©¶xémî:ÁND+S†I%ÚfÔÆ¤’§»O]zôùÙIóJ´ÕHˆ­Ðêçq!Ç?þz«LÈÀž~Ÿˆ2-'Y^"}UãIeJ½§-4£íÌÊ—“Ú3X©=S© ÿш&‚”s”H̰÷ª¬ª Ž0ƒãC ®°oŒ Ý´³T9·Jü{Ëråðç©Î^1¢ý+ô›Cš®¹Vk‡CÙÚaãíðåwžAÆ÷Ô‰?Œü½ZÆ€Œÿj–ŒŸ£ ý¡<$§ñH£Æ%>sZ,x .Œ[>Áû[ؤ–ˆ@:‡‚E+/¶±YÅ&Ãf5›µlÖ³ÙÀ¦‹M›^6}lö³9ÈÆf3Äf˜Ì;̦M›™lâlJï”}X®âÕs‚>ÎŒ-ûåÕB4(M£(æ |Ïﵸáo»2W±ßÁpŠ#èã³§/ˆÑÀ€eÈ.W/²¶áðª c*žºâ &OLÅéL¿.×@q&ƒ}Ù#Ë©Cýò¯C^+N–8çÁè1•ç³0ºƒU:oœDQM¾ÿþƒþ—¬?ÒÌð’úUuª±öŸNj«ÏÑ9àVØ?(dµs,o9w­¤"ˆü 5._D–Ñþϧ½Š9Vrfü\D{®ù‰+a Àƒf±‰u)dß÷·ê[Մ‘\«‘Ù­KÇôœƒÂÏéPøÝã€9”]5‹UFëÎ; ¦0 $>‘íŠQV¬ H…üÖÒ&¿Ežq^@*”È·‚óR“dš|›~ïŒbr·Ð Z‘¾ŠÉ<ª.©†¤â3©£á’bÅb Í¿¦ü×*’¼âV?à¬g—õ½h Ö>Ž»¬^.ÎgS^/ìKìÙz“ ‹êãºÊGÔË–D8Þ…õnNIû[Äô„jêÝ™Ôò†ÅlêØÔ³i`ÓÈ&Á&ŦÍ*vŒ¹æ fñL Ì·Þ<§‚EnM6º}: ”Rš«’&„"Ÿ17Êæ˜ṳù.ŠPÁˆxjŸž®2Q•B²ªø|£Â—Û È‹#®5A¯i£V`ý1Ç}jtyoôÀ¹Qû‹Ž ‰_ðßAƒèÿ?ÆÏDÎÿˆŸ‘!»ÜS;gk¬óxE‘÷; Õ=u‡èèMòÕdñEf½%ă¹<ªcž˜k$þ÷õÅìwþ¢BcÞ_øß³™õO£7ÙaºvÝ!®‰º›ÜÉð‘Èc(’@“NîÇ1Çå|Âôòmßé‚^¼ñÊö"QÔ:ì¥× {9-nø‰CÓ7dHcqCb_d™ôÈîýÔûâ%Áçû’K‚_ì‹J3TT×d%ø:P*10g¥”¶O‚×;$x}6 –õ ¥Ãå¿cl×_RÌ"o\ }Ïeî)f ùºQ‰ý!Âq̾*â ›Wò¸NF͸’‡DÍ@ò(ÔÂ):åyÈ8pr`ªÛ—^³gJ:½‘1j ÑuÏXÏ;Qµª²ú’nþÝíÆÄÙ0îØz¥DŠí`oÆ8$16eWTØéFÃxbx½!/µÄiwIL VÝËÄåfˆ–›¬`—1Øå vÉÅ®FƲ$²Š{±«…ÙŠR•xBìzƒ^®Í?·€—wžcÀËšq^žšâlêa§„|Ùm^å`þmr±œM›J=Ëhô´¿ra¶îƒŽ]òàTÿñƒÃžøýŽ“öc³Û3#+fœ/&€™tÒÀ=>Ô—Iñ'c'‘±”FÜü]\R¯Á%1~ËÇ^mÂ=¥lÌL>-Í.Œ÷ªÿ ©<‘¬ÊùbÈy;J¯¹Í¨DñÁÛ0¥‰Pè=ª¸ÔlÎHÝ;D~x„뵇Ì,büNãw\GÖÞ*QóÈd%¯MŽŒ™4Ð&óOð'S•®ŒÕ|gþ ¹£3~AÖà|gGL"á ÏWˆ²2…16’¥âËüáaEHÇàÄßÈ+ååGLî—^ÇrºÂwaä‘¡^™ü«rïø+8þJÏøåP¯2ëEBÃw$ë¨=p”ô3µ0|,!xd¼œCÀPT/wý~¿§vãˆ[»±Ê3ÉÖÚýY/F¿ÑÕ|ÐXÙþNU…†’¦&Ijy÷ÒŒ‹~¬PŸÐ‹ø­äƒ'9mihuD/á"3ëj™5$ž*gã¤r›q ÕDÆs Mhð?j¼øQËYìÁ¹ªµ8 ¾™ ™ohŒ,™SŒÂ“FìFÔzs‰=T¯D%ž‘SÚXòdìâ’6¯ÀâŽÞddºV\¨ôw Ãu¢taj‘$J̇J"-ïh6‹O¶éd:©uâë¥ÔF—gi£ê^9«\ÝÊÕ"[Lz0e`Ë)ÆÇ©ûj³Éú’GY0¢©ê/ú¥x ‘p¸ gc]äž3A³–kó¥ÿêˆÙ|’,Ð'O í'Ø`ÆU¶xò?+™TF´ßñÛ¬ÁW‘E¼ùŸšj-ñ€Ùÿ±àír×/”ÕÊ–FôzÔ[šM{ß2é6N:«B#®G Mb~ÞÀççúœ$ú„GB)Á (Œ•þQŸßAÚÒV:(`CØœoÍ{ú³œô§ÑC–LltV]¹5&„ßTŽÀ­6´œ)œ€û¬³öCÓ\q½ƒâºS…HµC±•3$¡KÝ1}>ά &„íø[Ú©Ú{š,G­ÊEÐ>ä´ãZq‘TçÈEQV>ÛêÌê¬6ÇYR°¬O"Þ$0Cs! ¦É·œh›9õ1ññ’0.á<Ãc K&( œt*ÓäÖ”d¹ ]Ø>·@3”Ú>!D°â”Á!“LDtÈÚížrY¬Pctb©íãT¡QkÔànb/«„Ê‘‚öÇ?5ªÏa4†ý–ˆ{>…™{‹™{KÖÜ“m ©Îsº³ÛB½JMh1ÒÎÆ›ØäŽ&Þ4i 5¾²ÏMTƒ?x§ ¤={™çlBÅ¿+áÅ Kðø‹ “YðÏx¦½u‡Z=ó3Õ‡ZE$+áYÕ‡Žˆ’yô…¤SdI®H‘¥Öˆ>Ä{Cv…¥ì˜æV®Ø»¼1ÍÌù*‚æÿô”³¨B›—ö­"íËD¤þ”DCü2Y œÅLMÙX—™.¦iIŽIýRÏbÜb…ò°E/:/§% 6¨œZ9N±mçT#)¨«Tx1隊ºûû÷ŒŒºzÚ›Q©APü̽ިzMš•X¨—IPe75ýUÎö:'qbV8ÿ7o âãÕï[í’!©«NƩ߷&â­jµÆÀÕš¬{‡pé®d[¤—‘G¬ Æãã™}ê/5TòÖÈûfÖ±ðè`µÃ¼Wæ}µ§Xv…ì\øôÒ.Ö­@›ÈÉ,ãÖsO†ßÿ¢.C»—®'ì0¢èzÃ;²Ö5ëdYmzÝÀÅÍc¯Ìân8ÍâÆdqÛ>>áâÆôâ¸nÁÃßlÝ0)gu;œÕí0«»€jñzGï“%æùƒÿÇ'„XÈVö­ŒôÕÌ>À©Ž2 ® _ÑðýÓ„†Ãň‘¸HÅ }<®2^$nU”²¿ýÔ¨9ßÉ!­­õ¨G?^ž#_ªÞåE<ŽöS>S–¤3âcY’–ÛOŽoq—(Ѻ¾÷–Èøõ½o`Äᕬ¯N©ogÄÔW7BêNg…Šé!FwITúž.•¾Ç± H¥ïu¢sçø8LµïìòtöòŸÒ\t{Étôþ€tî%ÕYKñœ*‰Òu2æg]ŒNÒhS`OWÚî=!ç'ïÿ´9?9à0îrfÜñ[ò7â­a‰obièÍ‚8O©ä)o1to”P¿þÙ]"WØÒ3È®`ÙÆÀrà®·‚e—ÁX9ƒ·SNÙSÁRÎÜeË^/ªdU°$Rítj'ï  œ4ç{ôdÄa×f³'2^äYÞÀw¸L{¼àÖGpÛoÀ ßUßû ÙŸ%{è^¬ðàÅ„4ŠN–2¢ì“¾lE.öIœ–v³ŸìfÊጫßôeu-o-áãà¸D32°-àµ_ôÒÎ~ÒNÛ£?ô›Í°³È§Ù&%“Dr˜”¦Íï¤7ÐÛÿû?âéÈô$‹ÊºúIå×LŽOVèjR]¬ƒ„Ì5šS/«ù]]1…/Bжû7¥¯Ô«®k¶÷Ÿ§F½w'S!q„¥D¾5‚޼sxžlÈ„¿k/¼XÐÕí\PŽÈ=®ùoòÀËx õ†½Ò×—ÔWàÚ7p ªÆJùü*“ äxOuÈ %1_¶ù¢õÐŽu gï©õ.e«ôæ-nJ8,¢e£ýû£Ì ɦòýûˆƒ|Gˆ|S&¹ùÁfÿ=øGð£|eùêŸNŠ|ÕŸƒ‡E9T0ž¢œ7ÐH*ðÀ`¸@`0R Y®|‡ ‚+ÖÞ÷[ïD)O&ÄZ8á’\Õó^$ž½tìEbÂKǬ㋹zÔ¶_4Á¡‹ÇíG¢!Ÿ =ó+qÛK2rašÇÂ\ýOŸVú Î }åÉh›T¡RÜ ûÄÒKóÊté%GD÷(¼dBg£ü^·`»â%?-’…Œf1ð(¿e]Ðú[eRUÈ™£à ­_" 0 -V 7Â(ð)¹øºÆÍ"û¦~ÏqG®Àr–°+°àÐ碟9ôyðŸ9ô9Cm¥ÈÅâbo¥ýéu#¨%[\ —fxŒ•ñ‚ñ£Ø·Öã\žS ¸\jà ßaÈ7ˆ\:‘ÃDäÂ\D¿BäͨÇtƒn¼éàYÜXÄë©¢6a biæ—Ÿ¢h9'k$ï—Ãaê\¸çy¼Ö‰a/&*õÝá†Àᅢ¼ç™‰¼x“q"lRÌä#ý¸-+]úb4º}‡@N'ÝÒëÒ1˜¬hô¡‚ Vú‚Uõ vÀ¶å³Â÷^ýŽYÛÕ[çȨúŒÿ“²v(Êgµ;ºO\jõílš_€j–»à™5‹Þñ{ýJå²*ó¸¾ÞóÛ+ù²ùƒ…òÛ8œ¢„)¬PY 1SV[/¦3š‘ãÅ2z¡mùÁ=ÛÊ?”ä(ö³dš‹ŸóÂC—rj÷ÿ½‚!å<”f+ AƧY]Ñû/ĽþVwF;µ³Î[!¯ª`< jêÀ#“øÞäÈQ‹¸Õÿkã%pûêl|Ùn ó (½ò´Øþ"E¬Oùå·ðÈÿ²-qÿ¡ï¤>ÿÁ–,“ÞbG Zl¤ ·œ)¨Ö(ʧóÙp5Bc˜`V–À1Ö6Œ_pÕè…«&ÂUÂÀU“ìDÖ8Î °[&À¬+9€ïR@«@Š€Ýj»ÕYng_Çœ­3õ«Àø!*CnˆŠT£ò@•:\郳CEIÍ”¤ªŽ/TeIK¦êª cscÍ>ú’ृo-ÐÊ)Z€ScÁ%á€K¢@û_¹þצ9<ávy§”Ròi'£·¤É•Ç£Þ[3Õe×md­2jNgòÀW†¥þ³fÉûB:OR¥ÉÃÚðc$þè"Fß„MXÄ~9r¤$Iè3"t?åWYçíd?§¥ ßË4l2AY¶m\±v9'«`‚j $Áù܆9¶QÌ!\ûÿ È®ØÞ¼)t5UöÃswŒÉ]¡;–³ÕðÍÓxH¯oº`zàŠ°N¾hÓ#yúƒbâÄ­Ý×âû¡¹ÛÕ…]ÙY1ˆ7{zrȧ•*Î`g(«ÒIVOÊsÛisd8U=G¥Öp’ãͯ8=}çI]¥` ³ãJ½L9à Dö1º'Γß%°u»)únÁ}Pp)ÅÂïÛ%¯Â k­¤o,âfÓ9eVL¨IÕaö€.±b_+ìà iȳ©YÛrá™·åøxÛÒ¨¶åÝ“ÆÙ–¤4àí !óÿD2oçଂ5:i„âPÈ‘]>0ªëÏç¬uÒ!^¾iYØs†|{~¤ÉNçôQ/JO2'“‡OéÔÑ6ÚP5¡tÂìÉz™ Z /à†¦É»rPärPýnjk?ÇcëÔV5B;§„CÁRŽ+žž^wJ#²†ƒ*5ÂW™Î$ËãòJB4îÉé¹ÅEìo퓇9àÈ4gÀ.wá4gÀ…¼'6ÍplZ΀w:îr\¬œÖæ€êxÕi†ÈϪœ…•¬¿êøB{ OÆ[4íÜÎswÓ£²êexJ¡”Žê±_U<ÊR(YµN:9x§ØÉéO¨ÇiíïåP‹yTåië—¼Ù/õK¼iOImôqŸrâõ½‰Oí°½1>([ƒǦà^qzœüH=§ËQ°_°Îš½rð]Ëø©)'•#•¿3nÅ.ˆŽÜ¸“Õ(m%;ÑÚóš¾ü¼³¶‡ÿü¼SoížÔ¨©ÝÓÈOs›IÐZ¬–d£dG|É&‚öäj~’f{t׬è}XÑÎx#šc×ßõdÐÿ”âW‹ýKšò›ú Û{]DPsi ƒõ²û×ÿR ï—gÐtÄ× 9ñ:ËSd—u!$·ºƒoÞ€ªfªV³Ç ³—óHÅWÝ!S–Žkãåi^Q˺ЛWkÖzL!S*‡Eß@ˆPS­*^eßøœlÊÌ\Üüó *ÙΦì×›¢~ûñYTT2Y2`·€Ë÷öÈhãÓ<öë7®MzÆBßzÌóùiŽ·xyRß)^îr›ñŠ')zhÿ~· xÎ4ŸS„gßÜW²ªbzò= &~Ö#ÔÒ7°iöo°¹›ßŠ*3š»åÿœL €þcîT—2“]cò”§wyqú£ãáô4·3×(=ïN ~Œù÷ó¶åfÜ{,àûd’qœ$!K#ZÿzÛóŽþUŸ9ê„į®÷Æ·¯©—·âbV|û¥Ç$dwSïmë½MxÓc££ûhõm.gl‹×0³£–Íb6uŒ¡¯f ½íû­ÏRÎä¡Òi®V^çñ<› 6 ÙT±ã~:¸ì¢_|¦$Ú“_:¯Š;t g¹8 O­dœ^Åu¿…;t#w¨F¾å}ßñ[¹_7q¿>ÊýZÄç>Æç>Äçj§ù£ÍÚzïÒ¶×ËÅõl:HoáRlPßL ['ŸÂÈI*YÈ#éÎBM“ľtÇ m_"q2õ}ã¸?ÄãzPÃúÞWå©n€)KÅ—“™Õsä[ žÚÍáWe½ß,‚ÿgäf™U[ÜþŒwƃŸ‘n‡Xwlè3ÞU<òy§.3=òïŒ}wy×;t—wgÂwÉ ¼3Â;eÝñBÞ)å©Õ²ßåTÑ]^¸(æ  4ó./¸ÅïòÂÅÞ)0£Ø2ïÔE®çñN]8»Œwúxç|ÞYÌ>Ëyçj2ò Þ¹‡[Vy—.Þ凪îònî"Þ‰ aY÷'%”DP_šlˆ7$ãË“õñÆ{¶Œ¨ ßÜ:ο{)þ.RêoµÚÚÅËja‡w'hµä‘m€Š/€¯}ÓÑgg_>OºžÈ“•âÛ§\Î)Wð·J6 ÙT±YĦšMž$›ÅlRZ¦äðÚ8¤U|m†Íj6kجeÓ®š§’œÑŠ)Jy-  LÑ 2úÒÐa"‡ð–ƒsLV»ì4ä> Þ¬£«Ú¹ïíÜ÷÷=!ûž&hZäÙ[SŸ[Té™\–8›±Û¬MƒŽÍ.d+M}æYÇA™ùúF6M\¡›Ž¢–£dÃáðñ-z㇂ø˜z–F²ïb¹8VP.¼`{4ýŸ<(ká©$‹ïàðŸ©$‹êÆ ÞèHâ¼\ÉËEN"â{zúêÀ¹U•5%¸‹ã†R¶[06!gÅ|îq$á´ÅgâW“ìÜÚd¯%l¢ëvõ-ÏÛŸZ­e>ÿ›V ^{&g¾ˆØ;“%º—½o ‹q’à= YÃ×È"ôbzd2X¸žÕüü>§òX'×á·EtD·µÕ¶eQÅÚ9wüå¿ .‹½ŠÉB\g ø_qÌ«òk#r/Þ%5`$²Bý*&”ÓŠÞ`‡Œ,˜¡fÍ·,Ôo[ñ@RS# ].%¸†ôâè¨Éù„öˆ"”!rhcKj ‚ÂÔ8"ºö³"ЖªÉ ìU;…o7”°½Æ=qï¬_Ü]–ä]Ò²„I<ßý›-ê}þž¹=Ñu[­'Ô& -ºÍçÿ÷XviîÊßEïKA9=¤ù~ßa¿Ø¸¤[¸òWᇋàE3^õa®h\Ú=ÚòˆŸFÒâr¡¯•]Ñû¾Kó¾ZÛÕu UÁ1r$𜚫>àT[J‚¤ØEFH6üé™x/Û«4E™Ìdñ¤¹Çï}î:9_džYÛ( Š•NNƒ½C.WýxÄ¿ã:_I¶Þ´âWêM>BœôUŒìkÌ¥„kŸ$Çä=]7¬_™,}ïÊß5[‡Ùv’ rôÄÊg—…µ¥ý½êAta„ýczX©à ât±’×ëÞ¿sm=C!ã“\Ã!Å(¦·óÔ-k %`ÄŠ¿¤ø-¤°°$•A•Ç»úE=¨ÃjwÄk‰MœJ’V èÒåc½(Á¾—ꎥÜNPAÄ6…Ì–4àÖ§LPîbõüÜ«%šHˆâÑèºãÖö¹›¬çë÷³@ö°=s)£ô@@ɳËþÊ ›“”œÔ+Ÿm›ÌäŠø,k9`<¿ ÷îiê|„ˆÃù±ã†k€¸~.üb‚Ö¡ÄYÙö†:D_¤BN§Šhÿo°SÖ@Á¦|íÑûßEo:Zùä²[ÔƒíyfË@³1\ çÞÄÇ£ˆÑû®‰ˆÕv"ÁWNí©ë¬CVí7GnZñÚâÓ|)LŠv£ýôíìP§àft]‚(Éu#…-¡™…ÙS<(L³l·“úf)Õ3MR>™‹_´š B¹2ÉÛŒèŸo Ùc„Íq€¶–²+„OhXüVÉ‘Vh]ãðÿ èøSƒ u~·W¡_-M¿„_v“Y$H:\;¨/ü åœÛã-¤ÌK‘vËQW¢Ç¿Uœd!>¨Ÿ¤4ëA,ÎlµýÒGf3 Š~@‰éTÀŒ ÷c\s_½F‚2{ˆ‰ýÂVz Åà™]sáÁ”‹mqq·A …T¤Ÿ5¤ŸGÙxRÉ{8kcú°£‰(oÓ«Ò''¤Õk¦{ˆ.¹Úë’6ÐØý~‡&#ù½ô¿,i‹ëp6¬ƒ~sðo7ã)>âAž¡C¼}±ûLÅzb®mm}ŸµMQ†*ÙWý ÔØ¿‡W[=?¶ä[{T{ôØ·ŽžPÈ3ìüpô„¢òÓ’Ü $ì¼_Ý‹÷úŸ¾qÅÃIY²1Áýîå1‰«õ†@êó «m!AÜÃ÷kš±ŸÑá#)-¥„vß„¨²Áz½!Ö$ú‰–Ü|Ü¿l2×ÊÅ䤛Ä@¦å~­0ÁIC]*ÍÅ ÚIYYŸ7U9¡¬lÌ{”•}AGVæÙ•¬­§þŠÕßLõ3ÐõWªþæG±TG`~ë#J`þºÿبñ½,ºÎ¡¥íbgH^çÓRá앱œªÍhœuA™º0Ö¨­-zïÊÑè} D'KÞŒ—øµP؃›h Æ÷.n“ 2J4 !ÖJ7•[ÌÅõá@tœ¤®Œ»ÚAŽQÎM]Bĺo§Oº–Wg³Â 6I\jH?¾'Èÿ á{%Z™PÌoH~[3ó›Ou}’c —èQ°T]™/þÕ2ŒQýÔÔd=æÅúVR]’°ô Xƨ° #»öÆ)Æ'uɋ²Êª \±žüSl'È%‘ŸÕâÀ¨üºâD¿âófi>BY@Ö¢ûLõáz zœKØc¶k'hâ&ìJù!9.çš/Ñ”éÛî¢ erÅýzþ²ß•@(•¢'ÄŠhšR! fÍ1|ßžVF~åå ÖêJÉøkÈxpT¨Ì?{[@Z·0»… =Úì5‡ÄdLJE*ÑÆ ¥7Ð6†…‡¢éÿòQ? ´ãÄôäŠE©\±È‡Uðr%/=&bQ†bQÞ¼ ÄÅWœía¦lf™úsO$x´”VÚQµ’ö—†‡G¥SËã펖òs¿GKÑbCîRwQiÁC¨_„'v2€›/\#ª–Ù3Š­ 2–P%®ëV&ü¢@hku+‡ÐDŠ™ 0Èö„òWvEWî%—¯Ód¿ÅïM;_^Ê¢´ªË’@1‡ïN´[!¾p6Dí—á\#0¤Wă˥óE½üä…˜L(Í­">}T-Æ*#]µ‘´´qJ–²ž~Ÿ‚´™Ûý[©À¿díõoS%lž ZytÄÿ’7ÜpãŠß"‘\º“"×"Áµè¢¦¬—¤U3œVBæMo¶½yÌÉD©øA))I«_G¼Ÿ8"/°©akÒ þA*ƒCÄïƒÄo×/Þ²G´ïrÑŸ.í>t)T…+æí£¯¡Œ¼'DñÙ'‚æëÕ㦾\›€Ö¥Ýö¥Š¤Û…²,{›!73隈³™ž>òÐÇ92Xáo«ÌzñÂןQE{S-'¶ˆô«š RÃç*hµêU_”lˆW'ã5Éúxí=[à©׉yš÷ Ž…$2ºQàã#¶/±l&q¯4°Èç[ _>‹·QÉhA¹u9›F6MllZؤش²ic³ŠM†Íj6óƒòÊò }zj!Ć‘‹¼lªØ,bSͦ†M-›Ål )ÄÑÁÉeÂ5øŠµAYævö¾ž7w°ÙÀ¦“M›-lzØìdÓË&Æ>‹‚ôË΄ߜÏä q6sØ”²™Ç¦,èbCSÀµÌà®îS—Z¯¥oßRFŒ‘wv%ënN»Hð¾6)Þ×ʦWqtXüSøÔjv»„÷µ°[,9*°‹naÓÃvòö^>¼†ßRÚ|…‡óøp5ŸªaSˇóv­·ê½‡Ô™æJ € ²ˆïpP»(˜Z·†•$äº)ÂÆGœÜ“áIѵJ㯌BÝ ú Ï¨!û}Ñ£N–:Ô¾èÆXÁ¶w¯Dð•&k¸SÄ™.­ ­ž$¤¬ËPWÌ£Dq>I¯‹.×)4ðqÍëª6èí¥º:¾Èøéª*§ˆ8U £S²qÚìF6 âÞ!¯ƒrSC¼6ÉmãEEj’újõ±2^kÁJ¦E/lgI§4I½“ݺ^8¥PÔFÁÕ}|¿H¨¿Gl>@ßå~“ÖÚ­>­­+u¹Z\mPUçîjîöWÍ{n·Ê"ÁK‰â¢íTšYìëPó~ñ;hÀ›–’á4pK°Éb¿•iƒ—¡ùþO!7 >²²s$^ù¤f=É·'iÖRClx»zÔ ”XÊ* :e‚˜TZxx^ôñÈg_:™kÚ¼É_BdMë´Ú ñ=‚ŠŒr_—¿„(…¯â»ÁñI lT"ð ôD¥CRfJ?´š[»õcpW:ö-ÂÍÖæM’:/þ%[{ ñ–!ëfˆÈJhþ½Å²í»U(á#‹E{Õ\71,ZPd`ÈšúS£ú¢7•4¡ÈhvßÂFDˆêK¸¤x'3‡t}ƒ÷X×ùÔW-'øŸÂàš7CÂ^.«Ö+‘äăYËä²5øõFï€ð@,eIB £xÜâ±Ý"û…5êÕÙúƒ" ¥²TÇï=ÔÜåPI›ë]þã÷îfÈàâå²öøOº†Ô¼ŽƒDw´oUp£\|\Hd1Fÿn€­E*¼–uää×UAב¤/J5KÌMaÏþÖrc{ö—e!¦IEˆ ÄGLEB*¥µ™¬:^lÿábI‘+ZW|ÉÚ\&‡€Õmäð'“þ{Ù[[@é¾Ò½ n>Á¯Œ~—š¿ZÛ$§åö||ØtÆYÇA£¨Yôþ§˜C½ž„ÊPOZz‚šŸ8vPÙfÛ¯ ¸Ñû×Ý(D‡ãH¡x©;ME€¾ur¿:ã;©úÍ×’ éDÑÀ5§h²pÅ“âíô±Û{~ ÿ,_R¤P”Í·Ëž‰užâLeJb¯$Öò{¶@ö¥éÄ×9Ô2|avõy'F“!ÉàFhŽº‰Â,µÒ£C#µ¯¨ÊÔaÒü’%I*˜ˆÂNóx/`p>ip1y…Ò•íÛƒRÍp¾8òì}|¡OÇyi¸}D‰m ÆÀ =F÷€X—Þ™Ô*}¯µmî°õý÷Ý¿ ¥#%Û"åH{›éak!:é×A ÚÛH‡ôqô”øã è'‰f•a±š&ëÅj'Õ«ÅÚ=9ª~µQŒš\&ž¹‡³\Þ¤–P¨ß÷W©OÌ7ŸžQ¿¿ÿ­Á ;iakñuz{HÎTGV6x_T`óç²H,°x;{³>‡[½z¤Ñ°…«ðzu{²«_Hy¹!³×©ñF×u‹«ÀÎ ŽªÅÿÓo]#DSX~­à#üAVª›¥¢¨ÖSf¡­×Ò¡‡’©ÐˆºaÁ¾e“ôžµwNò®: ‹øaå³ËòlK½+É.„x\ÌÁ”£_¦#ˆÄ’Q%– %¦èøŸî—¯¡ôšŽÐQà{:vO2+çYÄY2îgížœ)Àv÷ßÃ>/Îõn³vX{­^/a?AC$%"2½¾eèÞdrZ~qçøX¡¹gÀðÏðš»ay*"#ŬšáIŸÿJ–ê*Ö ^ý¼¶¨æ@4õWøx¨yÓ¨ŽþÓnh#ÁhÀ“6ÊN0”FdZfÍÝÞ¼) Ø´ëŠH£%èa‡eSVüM’½4w¢tµõœµwî¬á£}ÖVÅ4…¤:° +Ÿ\6YËÍÍÛüÍ¿ÃVsåVþNmõ¿ýz8.Ñ>Ÿ±ìîƒ 7×&ÛeEa…ÑÂÄ\¿cµW[H»ƒÅÄ\(&f2 ú’CÚûjü¿6÷—Ò¡¯)h,gzô˓ҡ튡«èÆH^Û® k/¬±ÑëY3ÚH…'ÒH¼Ï›XìÊx ^¨h4æ÷Ð?¤µ €6åm‹ŸÔkEV@Lã ñó¥4X(`ñf–_µHžzË)]ßÆÌ´*lhêV#®#$O ´éÒÿGóçÞ$€KFæX©R_Ó a.¿mÞêoÞÖñ|„Z‰èÛ’ÓgÍx}– M”vMv:<¤;ä9>­ØfÜzmŒÐk“ˆ9ƒv³­°@… 6Ó¤*zÔ’{×=̺aAjF£ÍÝ×ÜPšžª›r«4 á˜z9D¨!ò`…1ÁV¢Ðl“4äÌÒX¬]àzxás<Ž 7½ÿÔ¶ÂØ"ê&~Ÿ©“(Ï1 5bGŸ¿{É!xÎÿ”yb[2jÝx?!ýQá8è( (˜E¨ÀÅßÒâ#‹QDÂGéì­7ªÙ›>9ªä'l—UOw0!©Á=W Ï…å¹BûÅ·|:Ý ¶ ûÁ°°uÑ_¥|‡^ð:g$u2’å<ßO½WºR"Ê×§ƒ›>*Y,jc£M§÷(žÆ³-gì~Ù+ÿïÁÿN*tA¾ÎدþOÏXÏ™x3š>Œ/#òŒ/Oý\p¬´%*"Þ”Ù´üç¨ì*ü¶M"ìÀ eÅÀÓ |“ºlò&·\¢ FĉÙ;]Ö¢ž€¼4@bw=·f©ð9IVë‰]Mj˜ïÕ:„Ãk¢Þÿj‰,ÇXêéJO)ÀR$§cî¦.]0#KS¸UÛfï®ÕEªK zäî^çn¥@æI҃ijù·?€’‘B(& )vˆ¨½¶ßÿ€Ì _•Òø€,0•dVØ¢Fœ~k­`Ùe¢§Vƒù=søÙ*Ë?ü–ñï¥Ln‹…) Fïÿí)_V­ ø:Ü Aå%*u9Ř·C—ÅUÒ]M¡¦R^´Mq.«vãˆf`GT—•¤†üód×}ŠÍÙC­f„#•XÆí:¸ÊÙXxƒIóqw 9E_OÒå Ù'o2$~ÝÃNR>‰ûBl²v¦âr‰V$ztè‘vxbNɪÖ5Þ•ÿ:Ég·’H!¥°²¯ÎÆ0™c6Õk¥’TKU6Mó$`‡¢EÁ*™ÕY ³F@¦Ý2Áé?ÓçK¹ù m›(GóîUp“LðíÝŠ‡+IM½ꇿWŸÒ `ZU#öYa¸©Ös©·!6§©ßMfìâJ‰)óÉes³æÒ¤çbô>Ô¨é¿ddôð[­×t 7kŠoK¦ÚåæT;nÔzÇ!^ p75aZ[üFº[Ëñõ°iwG!ûYϽÁM%ÚŽ jÙŠNÑEÕ³v¤CvDk:€=íºѨWÜT³8м"v˜ã"ó·´uáý5„Áa°ÕÀ #Ši5©·ûà¤t¤7ÈŽ`+†´¤×-º±xºO±P%èT ~Û©¯Öc}Œ&²Õ뀉Ûi£n·öã nÀ5·‡kØàwl%B­ÑVH!Ö:´æAmY*ÉVÐëŸó<Ùûêèï NO¡ã_L’½˜|i«.ÑéHhPØqg¼ )ê°‹m¹YÁa¢T«­,Ü£98xjo³"Ìk±#£Ķ^ÄîվĹ›Œ8¨­W€f ²ÀaxÂv©Áiã ìÓv—rÅ+¿=7¬Úb–ê©MÉBêN¹€Áë5¤.Xí®a§Œ«ä=ÀìÚÍnÃ6q QjJ‰ÀSDR€1µV“[nQø {"ËiÕæÿv]‡]d‹újqð˜ËN›X¡% ¡ƒCŒØ›ß<2ª¤'H5˜3s4;×mv®ƒbCj0@z0Ì(Èry÷Íòâ%N¦4ø/ÛËÉ¢+ÓšÕ÷ÐKnU}{D›½Vv-{w’û-O hb®-”Õ– ìMN¶®ôˆg‡ÏôXŸ Þ¸P£€D{ —’þ·gh ÀŒb>Eï‚eÕœ>4²ÿ(ǯ‘ûGDûluo•ËÝ'äñŒß‘¯î<Û.7]|Bžírˆ¢&Æ Ïí÷Ë}µÇE•éuï•Ëo>&8¯‘Ë›¤>¡â?A‰z¬&ìn'|¤_ŒH·“"]E:·”ô­?Ï<ÓÚÌs÷ 6~T¸ØRE 2—+˜m4ZsÑ­Š UßJÿqL·âûP$3~«Ü:‡M)›ylÊØÌgSΦ‚M%›U¤@VD[&_Ã"#kÙ´³YϦƒÍ6lºØlaÓË¢ž{Xlªõ÷³ãA6ýl6ûÙdÓÏÆŽRÏD¤ÉÏ |“¯ÊJ™¯ýõ~ 鯕’Wt¡ØÛ!žD ?RG!bOýbÀ—~OX=²ñ"ŸkŸrlý1y/¥V¹ gÙy͇ýˆ_C=«F,8JúÂ;ŠÒ—/U]Y¿HÞmÔŠR]6”Ö1‚åqû¥(élcÍ„!»åAO•’YŠIGÜoÝ–÷Ìi&+ØßW™µ Z`ƒ˜Òa÷µ¯Éî .ò!€MŒXnâ¿!¤Ùhqü1)ï¢´Ê âß®ŒÇ,fƒÚ7?Ì‚'Šªôkžê–}¯—¸›!dšà/ŒD†7¿#¨“¾ÉB!¶„ÝEmB†}'+Õ¶IYZò4ŒVV±í§œÕÆBxxXõ±J}353|j5›µlÖ³é`ÓÉf ›lö°ÙϦŸÍÊ1Mº6Í2¢[;§/Û_x$à‹><-úðôƒj6 vEW¢ ‡9×·',0¹“&…ˆÉ®Âw5öÞ°é³ò•Â>üÔ.Ì´3¬ 1\N€›âžê¯XýÍTØã9ê¯Tý‰OÂ~*Àk÷ëתþ÷óÝ7äûÝ7ö‡W¹)gzÕíxU*>ÈŽñªAv<ÄŽñª!®Â‘°† v~D}¡T|˜OV(¸?» 6Òé²AÈXe¼ÜþE2à3gR ¶<”ƒ"ÅhQQ#úaŽ^"ÒI"Ò)D$ÙÎa èÌñÙmü®iKÂÐM¯*Ù§—¤u IC!žJ´°†2D€Œª£=€ûBÔ½o’XÏÐ7S<ÏØ„qÒÂê°û£Æ•ÛDÞv.HÌ ü$1lmmÞê—P] /º®;˜0¤zžh&Jkº‰ÔjoB”Hwr·œï\MäB¨1/îáåv’Œ"~.NÒ –(=Çän§Œçä¯Im 1µÇcSÜ„‰–ÿ§èÎÙ+v l2<²X#¿–ŽúN{lº)¥fg”vä«”~¹ì?õû@‰¢F»õ /õê~µÎInV“Ö!÷¹I=ŽXEoišön9å2,¿ã+à©CN„®E £Çn|ëÚ@Ò*†]Þ¯ˆbÅêËÆ$d1mZ“f’â–zŠrîäNõ¼ÌpKÜROÀíî½li•ÙR?Eî¨àê…â?Ÿªa9e7Q@iŽS~SGÙ>.«Ü/×nLû-gI%2ú’¡!û É\µ‘\q¬9Ö~=V~ý4ÒÍ£âW”ÎKåI@p<×ÄOspj·?kÿ•ÅÇúø•YM‘íJ‹<Ìþ§{>žâØo¿7›þeÆÐ¿L.ý3c?’3öD|¹çøCÌ^]=T,¬}à«2ˆ&Sß­ØQ²DqÛøÕœÿÉW)RµæŒ$¢$gÔ#“l®A€ ·"Mý¼”Ã[ÊáEäŠ|V/#+´ëðf–‘¶kÔçJJåeÎ ðvrsÄ ­5Æ‹L¡Ê‚<^yâLȳå!B:ˆ<¿WÒ‘€ùIkóʵK*zßVŸ¹¸ïA™P’:³Uǘ1U8rIRßÒ£;vñçîqùŸKÓd £[Ë«´)uiƒØ&àr,¼' ¶f£€õZ°ƒrÊatåRTl§gœk¯QØ¥c› Z;Iµ:ÖÎý¨Ž=$ÑÎyµÿg­˜¨%­/.Pƒð¼ÝóZ£)Ö*Õ€oL:AMEjÜ)Gœ<Ý´8IkG­b’V (Á~6Åç.CS¼dÕl ÖóîÏ› ìà64Ä )Qgo +LÞ„5ž@ܼ|E–¸¹F`BqóäÝ µæ¾¦ëç2»8úðyчgÌ+¥ó…èÊmù¦Q‡(H¡Ælfœˆû>*— %?âööqúûÙdÓONe3ö©“Æ™.婚ó؈ΣMAmñðG…VÈkhæµ»¾7.äy¤Ð1G»–JuM*ÎÖRðÒ-+kÈÊ™ LÂÛ$Šïb'GM~§\-HCÀ«N¹ký¢þˉ ýØ—¥û|ŽV\±pôñÐÍ"µ'DjnŒLÿèÇÃ:ßÕ"…Q‹±ß0#­§'(øVºz:],ÒûsŒØ9!&Æiÿ°1 #]3ƒ˜N¼`–n ç)‡S¿~Ò<·Ñ!Íî³ôÜÕÅu貉´¢õŠc†eŸq#Z˜ºŸÃù,j_'Õ>…šä=PûüOZÏt^ztï¬cO ‚µ‘pçUùž´R¹*_„*_D¹«D¿•­òuŽQùƨ©|¹¤ÑUùN'×7*Ò8íŸ]©•‹ë‘M<*ßù9*Ÿ^dʬâò7zßø:ŸÜ2žÎ×ò?ªó]ú…Óé|g«î]4jâ+LjO—)ñ gDÊïo zb–µ…2RcøÜC$ÎÄß²,àlÖQd·åX–޲i¬Žâî·8„·¦¿0~"?¿!úÉÒ†7F?qkƒ]¢zxqXïŸ}bƒùÞÅÑ·|ÔgJ´&ç"xF}Oþõ‚“R¬»wxІl+ì«òÁ1®JÒ´/ê© 8ðXO§dÌv:é 4¼ÒpJKÃtjûrÚ½mB> í1®´žqˆ+…„ +IV¸ço‡ôá8jÔÒ·bûöÅÏGª5zdhÈÕGD5 € ,þ¶Á+%œp»ç,EsqBcPQ£CXjƒ%|æ2î5,çAh/œß€ÛY^‰>cGB&öÜ^š¯÷$ŒJ»äè!-~£R†ëz8p½ îq»;ÉãÆa€UÂÈDYÒFñ=Y‚!âú­c„Bÿv#òoñ0rÒ°-ô™ÃÈm®y‘ýŸCÇç€Ñ%ñ‚xÔ'µIž9¬õZÕ0Ù¾ýáaÄ?øˆ°š¬ƒœ š]Ëö¨fl Mš"b~Iõ@¸&‚ÑV1B¤ß„'ªïò*”N‡úHà}:™T"íb~#ñfäíH€w¡ˆÝù½ô70¾ŸÌ€bP¡Ÿ*ä€ ýz@ 9c‰˜A˜,ÎB/ð”-)0 !ÕV¶*ün¸À÷õ&,UCænâ(%Lîù kK¨›W_Ò!|:ºîÿ»_bÅèAé%÷Ö¥t„&e¸x¥êdÏFï{ÎçLÊêF-‡ ž!:½I–'T?á¼F̼úü8Ua ¹SåÇ$§£F*¼ÒˆdHž²ž:*œ;€Uî¹³KªÑ!„I: q‡ÿ˜Ä¡ KÔ ø´ë¯"äzô¥î{¶ÊYÀ¿@´ë’Ƀ8îô=uâZŠ!<˜÷µ’^&ìBP:Å/Bò4ÏëFÑ!ÁÞ?8%‘?ØpÆ3ŵ¯9/-âÓ1'n(&ž¬ûNŽŽèK‚ù|Èó<@7¨á:AÚ’¬åÀ÷“ EA¹©ƒ‡H¸5vt‘®¥ƒÃ§èýŸÚm¤¦Ý»±U 2†0ž¿mpè†ê•tö·5yh \L¸S¢{Ê!¦~GW—þo¡{·‹î]W|L´Š±>‡š~w,5•¼HPSDœjŠ`®ñ©i}ÐKM»ü§¡¦õÁs¤¦ú­>5ýäáã&èl5”tħ)i˜”tu`öÞS£I9L×¥Ö2JÚåbôþ÷`„vsרÕ}eB$˜ÕäwŠE'ZÌ6×qÜu‚YG_ê{t!.‘¡¢—kBñMŸ¬‹ HTÄ®6–ráy—FIÄsÒ—m ß8Š|“ ]¯«Y¥§¡8Ò¿¡+kýƦæ—Q7íêiÿKà"Ï&ùn~:Å™·¯ŽŒ\Rð%\d½Ód¦Ÿ2ó(TêŒ"ÇŒíçTä3cT+s0µ»<¶DµêÝ´XÆÓTså*Áöw«›¿!a¯í {í3'Ëh%…a°bKA ¬Ú~ÄÚ"„‘Oxm–Z·ù^ÇŒz†ß Iq ìkm§¡pkŠâ<¦”ËM|,ÖðT['L™äŽ-î²äPçµZÎ}„X.¯pÅCNΙD¡ƒZX,+£²^&­‹¤IÚÈ8‚¢õø†U¸ Ir®,ÓCŠ_Ós xàÈnÈßXzò²œ¿ æÐ-NÀÐò™™îë·;$£ëŒUdðöb¡0{Lþi’KϧCd»tOOÿå»$§$$_ËgÔm]N:õœÖȆ=¥0—£©?]ì“h¿wo¥ÌÒ „E›ÝíM@ò=‹¹kÅ´£Wãaô¨Ò +öÍ_K+Z z´ÈêëÇú Œv¾ª>^ÃßY›j¾ôÉÀ¹ºjûv^uVo‰ñ-ƒî[ù–!÷-C|Ë÷-GÎñ-ÝÈÕPETUˆòMîD?>mýÉzuî!”Öñk2î‰e5jp®C/uÚ°2V?×ÑYVlD¤ƒ=ò‰€ÎfÞÿyØ”†Üð¹—}Y1gï6{Å*o”5œ! ÇKòçºf"mùª³zËÉÅc€AUTWz¸i‰ÇÎjLÆtrL°=¸ƒ,½Ø5c9€¹çnOüçFs.Xœ97G]XçÏ:+l´ŸåÐ'RÀçË,ŠÕÍõÚ§b\e.ÐÕKêôLõ‡h»9ê¯Tý9Î7ràî¿ÏrŒ™]k©Gì¿ÿûlw˜ZúF†yiL0§Eµzðd¹¤|¼ÀN ŽˆYP÷þ\üfõñòŸ‹ß¬>^i±ìýoóÄ’J¿rÛ¸ÞN¯wÜ¥û†®ôS!Ÿo"Yc¯;ô±Ã=ý±67Ò3Û©âøh·×æLä‘Z‰J‰è 1uœ ë©DÈï™ÀÓqÆñƒxU¨ó،Ѩq"³ëÒ:áqi!X4Ç¥å†a-vþ¬ ð\¿–Ü7ž_kE#(‘s»)¾®Ix!ƒT.Õ›´š ‰gÕZOÏz>Iß×Ü'!,Beõ#ÁNÊ Sº”ä^¢?)1l—œDoížµCaµÒÈtÎX‡ÏQ…L’Úš)×'E8Û‰¯TLt¾Xñº‡¾°-ìh§Ç¾–·wpÕVÁWxÙ´Ç™C\©½èßÿ¨×™]ù)0×lÿ…Ä ÞtGdÿ›h+ô¿}ÞÈ—&æÒ?{ïGÇ:Ãm"¡0úÈLn»&ye7« ä•)2Bþ äÕë› •›T¯‚ÇìfÓÀr ÔY±Ôêø †8b'…zÜ|kÀ[n4¦™QJ[¶ñÖÐà†ð±q‚#Æcn„„>¯XؘÂb»¯&`êOÙ;k¤½`x½áã`¸Yq,µW ò’«vÆÈÕ«éË’ÔÆço”i7(rUY#›â¹ËŽ291w'þ¼˜»o9SÌÝ#·œ[Ì¥îøë Ðz°¡¡WÇèlpc¨axÏSÃÑRGkš˜£¹‹)ÀÜâå,âÝ•&Íï™xH?¬ÒÕƒNÛÍ1V¯väBH‘AÙ»r½wÅŽpl,Ã5 8›í¸µ½¿ût¿v Å—üãqh~íD4ÿªÿmš¿Þ¥ùBßp¿þõþW¿Q„¿^~#Ø»ñF7TK5ô&ª—PXlŠ®|ÿGGux9ªÖ\ñÔȨÕd<[tcÙUbèÐö‡²«``ÁxØp$è`dª„ú¥,dkë‚;ÈT}^ËЛv6’À쉟~G®O¿@=*ÒêÎd¤!€ëâÓ—úƒZ£Éu‚¦‘­¥92¬.Ž~‰»ìzn޳Šã›Jå»_ã«\%a³–6o푃r$®ÐïúŠÊ©–Ó4ƒþÆÀ % l@DOÔÔ†)ÉçU÷¨,Û^ÖGËŽÀ]Äd›jµ'D—2¬5ž¥Æ4äs]8G¤Äɯ?Bó\&à…3q»ÈÍ][x»|®}°¡¿‹s y Úíx@¥¼‡~Ÿ’ í¿Œc\׃¡ðqK+"¸‰V½íÚÆgLÂ[A¾"ÚOsí{èËkßÃ(³ì{Ǿ—¡}#¥…î׋G¬Ã']¶•Ū]SˆìŸ1Ììá2ŠeçÙè}? 9†VŽ˜PÛ%Æ*jûÜÂ~(ù®ã¬Q@¾@æ]O·öLJMxmRøà»EÚà­~‹B?â‹„Ž"¾HFì"˜ÃɤóÖƒtSÚŽ›Òßk²9YZ7E_$Ë›úXô4–¦sr¢½÷iÁ:Œ.y,›â‹ÌЙ‰j–7Åë’œdßÓ6<Új`×ñIJ'ÞùÁ #<~‘㚬!÷™o £}>kRF×dµqMî'€ÖšÐ¯‡ò ù[ªûƒ¾³F¼ˆ2EûÜ}÷øߦo–ëŸ|Á5†[ú¨É”&€TÑ JÍ1nJSž«mrRÀ¾ëjx{}²§Ä—í~ŃOv½“)ŽNŸÙ§‘zæ ã¬amuàªã“ü$Þ9` ¬êó¦|B‘øqr&!îè'@öËâ¡«#̯šÐ#µ\Šoú>&„b»Zå ]òø§zà³Æ¤qЏµwîq– Câñj·——<Æ5ùô¦ñ\“ÿ'Ë5¹ÁM40Šæcþeyö?Ü/åbûðÑSÆèªDâE~ µ#ó°rÚWëYoó»X*¹ 'šø/Ÿë¼¬`¥…”®´@ M×_v]‹ÅŸ éÇ#±¸¡i¹¸P_xM ©hªýêÓ@·-¼Sû³–Ë(–…íæû†GY?¾ØùbÒï.gº]2Ý÷üZŠvêxýz¤ªJ\d„l„Ê~育|À»­óÔåI6Ö­>O.sèVÑ;©‡o¥Å”›¹UL#"[tÆ oõæ\Ån%¥¹Õ—[<]TÁ#wI€ñ$áf·Jß[nõ9Yçmñž[½Ë½“âKï­2¦=|a_ÑÅWØ–Jݦ¥É†xC²1¾¤d·‹©ø5Oñ¤ª‰Ši©‚\ÉÞõY§ÑLúÆÆÔ Â»YƒH$nÈP;îB ¢¢©¬A4ÙSx›(YI-|!›*f¥,šê3G‰Bn#ŸÇêõ͸¤jùÔb6KØ,eÓÀ¦‘M‚MŠM› OQ1SÆ?·ïªf}_xeŽ. ˜Σ‡£OŸ9•Uˆþ†ŠfÏdŠç“}Ùˆ&ÓþÊJúb œ,ïØ3ÙÇr@ò1­Ï©ª•Ôß³/@TUÉDúµð–óÝ7äûÝ7ÊÇÚsË2¶y- pLö9ˆØñ;—9WáÈd Eü¨ ñÉŠ³®°¤3‹ÝD¿6§Ñ׊ñCznc”^{<¤±ß‘ÊUˆe_hqÑyÏh;­‡;9‘ˆÙ·÷­ÒÝ·÷ÍëÍå²yôæ†õ4‹ÏršÚ˜ëNóŸ¯É™æ§®q½ò7ŽšóõŒâˆ !&ÅáåÑÇ#×I6l*^„‰]ŸÊ6a]ÃÆÈ7 }ºÐ¡O.ø:ÅðÍä‚oÖ2¤¸ º” ½ð¯¯”cضX Ù®»:§²Êß] ø™1€ŸÉ|“ðÜÏÊÃB°0Öé;Ãräw<=½‹Ÿæ¨§Šé?ëR6ÅL¬†¼Q$“1ƒÚk+ròÿZ‘I™1˜”ÉÅ$§” Ë1/"/ÒuDÏè|K…ðó> ÚB ‘S8›:4úA4ð?ÿ>À`=3;R¸,ÿ3/ ´xŠOô\(MšsÉp~ÿß Þ+å²#<^ñ‰-ÂF ¸6z{¸HÀ`MØH²¢]l5ƒñI£O‘ß²³ºBꆻor³ºZtäвº¾ý^±£{“Õ%§U°C¥Y`ú’Óõ:§+,¨ˆ 0&¡Üãñ«zoÀ»fÚ¸ Õî&$¸ •7D6Êþ|&ç9ß­²;ß­²?ßõÏ9ß­²Rx¾ôÞõ&.*¿¡SeåtÛX¥øiˆWØËß#Û™ºÈõëµ]$C^s‘«æ­½ˆ~½n¦{fâëå‡áü½ˆé;8[²õ"–ZIH ªÖ·–‹dâhŒ{¯Z;XàÞ;VÎX ,ïïÔç}Sm1YÖÜÇšLß/K<¯ìá·œ /ËB7Lín$Ô™B´n-w¡=Eh÷ÔðB{·Ï].ö¡Ý6Öëy³£í)B{;³³|<í7kMžük¨ýÊãW}˜‡ˆýƒ¿9[˜¯óLF÷V‹ªùz¹)Y80ßέ¨[;LDÙŠs¯²²ˆ±õÝð¾ÝóZ—µáçÑûLjA¦ÊÊÙU¨Ò²q³–Ûþë€"Õ¿tª‰°¡–S»é ÁÂjÞÝ`¶ð €É&í¥<ƒÓ÷7 §ïQ0[ÈË>§/woëµjS÷$:ç»D¾8úpÞrÈÔ›£+oWZš‰P뙜Åk³–CáÚs)œw·“<õF—4Ááˆä땎Ø)T¢@–î/^­^Ç6¡€Ö*ìíó=Â4…Gæ‹LJIÌ­KΪK²†ç~#q¶S|IP|©”YäÌû';ÀÔŸMI²Ê›1ÈnÂÛ—ÍgÄ«ûÆA¾qÈ}ãßxÄ}ã‘ÉΫÎê-ïÖÕdyÓ‘[ÛÓ!„møØDgˆ—¶›zðØ)ï#E´ån¯G‘-E ZÁÙ[­CNd<—jZóumà]"ivä°w™èâ@×»ÜðD0/S(C˜W»0/8LÁÖ¦’ê‚eé¼ 8K/r=έ9Ff+•˱rJv@'Í.Ùñ.ÏHÀÏÍHÀÏMÈ"ø¹X¹ Y‡•§ÈÊ'*ÙñÔU9%;:¯’Ú¿÷!î©k0{꥔íFH,JçÍ™bJvOqKvµêÏ)Ù!ºDÑU9%;&_å–ì°]sÿ¹‰ÈúA›"òÊ5þÿ69ÙI`|’òŒ2GvPdÚGhØz:¡a¿,ƒÖÇ—öO ;|È0ž³––¾ótRƒÔ?p䆥cäëµ±¡F—¨¬Nýƒ–ÄH’fçˆè.jÒá‹ pÔWrâ .ö™S¾’ LAµI‡'k–”ÔêâN:ëTw¡`95嚸h 60ŸJ4Ìl§1¥vŠ)Uá$¬µcS`"žêË6ÓwÿШ":‡:Á%–&">ž0¡1›nÝÞƒ$-ÁÐí©mR¡‘»žà+‘ÅSfõY ²"8g¨…7H’-ÀÈç„älZ8Tp$4’¬M½„ž¨‡”tä z }@DŽÚ×Ïšã_tÖ±¬>²ŽñÒ$Os²Ž}ŒÔéÀÞ NT¦ÁÇ÷áý¾|7Ô‚©]çe-ûy\öór–ýÔßIÄ + FÁ Ÿ‰w‘ ÛË~vb”ñ,]ù>7žE½ã|²b{·ºãÆ©r¤ƒ.7&;É”WBZƒÑŽ7ÙI¶°uì>²/ ‡tc¤‹Ü$—bÚ?*ã3í—ïà㇕O6äÙ¯6ˆóIzâùƒN&°¶¥!ô ~2Ûâ8fñE˜‘ã%Ó§jkš¬J,kU"éAú{xð‘ÄõçHÖO<|ƒ^ÁjtF Ò M:£ntÏü*’ Ýt«°'rè¤Ââ»ÈˆÂ7?´ CåÜÐLÖÓæ”=L8²ŠÏ>/丹ÛÙ”mþgŒ­à¦!+Õ>𥆯ðúY;›}™~#‘Ù:(Û[ Q6!£t|[:9j(HÃ=d0¡o“W<ÍÁt ®¤öú·1¾H(!ñÞ?ä~ǹyœrs·s¼j›, `æˆc{agÚ€þŒbl¦¼²,n?ýíÿ ÃÇû]ú?£+æsIž–1?cø'ÔÞ†NzöY ù¨OŸú…y•žv½©q€»E[gª4ï ŠvPE¢JNî 1³P±hrè1ÚÛïÿý ã_5= WùÌAZ1:#Ãöc«FF6s­•Ã~‚׊¿Ú ,f‹§þYZÌëú//eR…ûÚý|íA÷µùÚ~×fߎBÿ¶’l{fû{fûDž†,•˜¬Ïâ­úh7]£²Äcc…öÎD¥ç”ÔæÐv~Ä·üÖGúoæ†Yžçd<í87ûZ–çÚÒXèŒçæíNó¶·{¦)ö¿·g{0å,"˜¾<‘cýÿï5û—å„X¿î ö"ªvnŽÙ¿vn6@gÆt&  öÙ¦ótÞR£fäÕMqCÄõýYì…ý眳ÿê9o”Ù?M™ÜzìßÌAt˜„œ ö#oËYðÃoÏA›/ÛsPx¶j‘~2”3r)š8ø‹²¬Ž¾ÕkY|–U ›{ÞŸÏÖúÞ0ýhÑ[ÿ<ýh¬7áÔ[çêÍò&¸Ôî/Ç›ðö·ü¯zŒ»Þ„ï©Ï¿Q¦ýü/òóâg ùò÷ä÷{&€û›Îîkf¿~ÚXoBþì¿oÂÊËþ—½ ¡Ë^—7áófóÎÚ•ðYgr%|qÖ¹¹®W÷¼›®D9e»¾”§] ÿ Ò÷º™ÿÒ÷õê-²²âéÐõVw:öa‹Õ«4¥Â ð Vñ7Üä^Æ´Á7Öäþ…KÏÒä~㥯Óä>Âoã˜Üã¯Ïä¾ù’ÿ!“ûG/É1¹_É`rßé˜Ü»þ;Lîÿ1#ÇäÞ6Ã5¹¯ñe›ÜÏZ¶Ô®ñÑäÞöirÿqñMî§å©½§á©½oO ¿~ž:ÖÎþð›In;1:j¯Z<0Æ…úÀ³·SUÅÆ7<¯÷gèöž‘¼åžC¬øåË­øµò=lãa—1º¦R{dµkVnœ’c++c…Œ‰ÍÊú`j1+Oó³r#m_㛕“˳ÍÊßùø°©xÙÄfeÛ˜•QRëõš•§Þ¬ü¹ÕgiV¾nu®Y¹Ý&³rÏgÝ–ËÿÃLc]~4Ì'*]ë²×$ªÞ€_p<¶<Ë´æM>ãßkL¥· Ym¹Öe¯q6˺œâbE°X½f±h×AÄþ×NŽæ˜º+ÏdêÖöQ':Žö囯³/sÒÍ›ÂzúéÒ6SìˇNŽz ½ÆX®Mo]Èʲí„S F{Ͼ“£t<$,°'ŸW—;8貸ýW­Ž}hûtdBû4pÊcŸ.ËÅ9í‰ ¹%ŽÄ>mj”ŸÎ>]F¼+¶¸×µOw²Çrô]a'_cìÓoþŠœ#o¿ó~ÕnrÈð…n±ä]8“`~F‚$_ì–C$f½`²0RÌÂH1³Cí…öèQ¡¤«S]ùnQzatwê 4]ÚrÝ p(ЇáÔîýðµ{¥†ÆW¼¤ÓK’;üj’© ÖÞîßäà‡8äðJ~§dC!•Õ %•´šù(È,Z7ì?¥ØZë3¹VŒü¡8*€á‹ûfˆ0på}MT’É[ªà’ëËÞ|RÏ/’\®èÊ¡X‚ù1g ŸœÓˆð2ÐíÈ›æXQvGt]F§‡]×-{sïBãïK:˜“¼îUEŽ~Ó¿Õ¨ì ™G22ߊÌCÂÙ^ÿóðžd8“^á¤>V0õQÒ 9Y‹M’+FÿO‘àg?;©vÊviïx2Œ ªøXÐM|6_öžìçÇAÃT·ÝÒ‹ECáQœÙdêWã75[ù %“<Ò 6z¾Œ¦ßØèûpÏ@÷/CéØT/$¼âLÜ•þЈÅdïqÇɲmu²l‘jŸ¾~PªG®ÅM&±g9{°É¿9˜!œðtài)r]º´È£ë¹ÈÀÚ. ƒê»Ÿ; „+ÈÜÚ/ºX%lßú¬€&“l‹Œ@îÿÊžùiô2fÄþÉ·Ú¸ÑÀtö¥ý/ê§$Ïbj>î_öCÐúÝô?,éC¡=›Ôê´ ›µv™Ü{ÍhñT:ôP2€ìk¸Øe‡ur"Êþ}˜úe¾Ašþ)êP:ô5³7Ýé j¢-kÊ|­ZÛ‚]º[#Æb ‚]¥qûù Obn‚]Çý ×$¹?îN%Y:!¨+ê°IòÈ2Âq™¤V*8xp²©Lžˆe¯Î·(›Éêôò”ÐŽ¾ i|Ý‘~…š¡<ßÄFPuöbæñý¸O/Ä4w!ÂfÅ j¼ð¯'<•¹ûü.ÿî—AݽA÷À€n½]I}šÐ&ë«ÇÔEÍÙ·D¬ ú–Mo>©ÈQ {Äl}d^ÜÌjú™ÝŽ÷pw›¦dKjÖ.A»¯oÈËO„wQ< ‘S6bn·Ø^ñd’Û“^½ì®Só&(¨1p:B¡ ¶Sâ×â*U!ÀêIW¬\„ÍM¬9  W][Э$Ћª‡GšYHèÇF%Ùˆœ81:]ƒ·QoÕ0Ã^¿›¦†z_f6à:xW¡HºË>>$ôø³b"8xö©|rÄU÷öm7<:°Ú—-p&YÚLÝŒ‘¤c÷L,2¶šMOf”ú8!wc {¹Ñ;›þ1r#$fƒGìš^¢rO+"š&…Pàå"MåþîAá5SÑÙÉ „™vø´gH®+-\½pÙȤ<4Ù÷ááÑÈ8’KÃ~µ±–Ð-¹€»°„ïJiøß€¯0áM§¢)”vTÐ ÐXÍEžê`1oXÉPý{n·µC °Ö¾î_¡ÒQ¾@w^i™«¿-KZ¤8¬ô=Ää;ÂâA]t+À4CÓ MÞæçËRÊö 9Õ†1Úѧe åZ,nw/‹‡ž¸ ïøÐðh–ŒÁrEãG‰à{ýÛñAÆi½?æ/èøõ>"Ê ]ŧèý¿Î‰1Dãµ$›È><ÙÙ æMàÁaJÇh ·sTpÝ÷§GÀèìÆÄ8û²œIZïho‰¸B{›|³:¼rûsÚ~áµAœH–0 ТDòÓ_å¶ÃgfÔÁåœ~Ñotemº‘õyꄫ߀`~›É¿3Åà¡}‚bõ6DìOß4ìÈ÷g¯; •þbŸ9ßh&)P ÖÌ‹}F_×^½b§¶šún×ì81jB}ç‹©[‹Ä!Ú"qÑÒåÍ¢—Ë¡Mºn¶xâBé­…MŠMë… .X¶Ï³dÇ‹óÍw!»¿Ðk¿ ó~Ÿ¾ÿå+¾?ú…Îõ:5Êz¥xÄÖ?yòAkIš¯Aý¬ÖÃ$ÿß%o€ÅBee@õ÷{Œ¶Ï +'±=*~¶¦^.šú×5ÙeÀÊsˆ§èÔw”.»RÉÂ2ždú•î‘ÜÕ&˜”LA‘r ã’® "p³lttÔ86¹Ö)o²ËÒœ¸SŒZh ÿ ¹·ó¼è‚M‰½EK· \ôÆ3Ù–ˆ ³‚¦©v©äé€ ÙT±YD{U1ɾø"©-Þ_ÙÛ ÷ݱoɾk˜P÷zÇx%PÅà,KäÔ?èœí›¸þAÔSÿ ê©õÔ?àae l–³idÓÄ&Á¦…MŠM+›þ„¯²Wƒ3d†fÈoGØ ³a㻄`Ç&Ì&¦ðz RáÀWÀ úk@Ýį!ýUêõKýƒ¨·þÁü¾ô{Â9õhN[ÿ A@Nøtý¼õ–LXÿ ÔÔ?PzSvýƒËξþtg»äŠqêà(#û‰YãÕ?èš-c–ÓÃi&™†úsȬKÑç®R§þ5÷±õä4%©0G‹Lë­ÙoGýƒ¾©P9ÙSÿ &¤°2&ß²©Š ˜,bÅç#Ðê˜àI%£Ùjbžú|j1›%l–²i`ÓÈ&Á&ŦM†Í6kc´çÄ|¬p§þÁ;$ž«Áú Xÿà­S.ê2ãuYH¯K•ëu©¢ïs‘!ScÇG7¥¯§ðÁßÅ^£_«ú¯ákÝ7Öò‹Ý7.žì;÷Âv@ܸKÜÀ%ì¸Þ¬§¿t©ëÆ]ª_¥žlÐ>ú×_øàŽ@NE€ê€$™IÏŠ÷„ú6M¦Uý·DL¹jê)_ø ‰Yèü,äDªÜ€Ÿ*®ë"ü`BÿñÆR·ðAÊLóu>¸ÛŸ3ÍÏúsÂÛd2ZM¥‡¯õ”þP]ð"Pf erÈød—Rm±ŸC½ƒ«ÔU§8‹Õdx–·€ œÕùËúI4ß~…渖' r¤l^×ò"^.Íq-‡gKãCs.>åœò|WÒ_ix¼‚¡Ùp-c¤ÎI¶³àÕ×µk:€xÇÁŒZä·œclÕ wØ<ø‚ì9Ô<øÁI¿ÔÀíz—GhNFŸÁYñ.ÿ½Ë˜™žÃØ(Åš“~ïf˜}hã>T»ûà>xjä ­‰RŒÍp£‹g¸¢vé WÔž7ÃR,šAY칫ßмî(ÅĈìhjš'Jqš yÍ4O”â4¥ˆE|.þ0ŽöžÆ‘!Ͷu3qŸRéý;àÉ™&Ãk™¦)GN€b>Þ¬Oðû™âžßü—ðwœ8[€ìt¿ó4¿s€÷Tø8Khßpül¡ýÇ@»á~.´Fõ–&gÒ‚² íÜ„úñX´‘ -J__|¢>THú¯ù½o÷¼ÖH¾µŽD—Ô¢3XM†J­Ÿxv{® ÷d˜ºc~?I-Pi0"TxÃUu Ìììúö# «;S|â‰aÿêÛï–íõÍv㛸½xåØ`˜©ûZŠ l1úðyчgÌŸ¦Äç¢+ß7)K|6Ur­=Wñî1*Kj×^–$VÉ9ªÁDÌL0×<îÀÄ5ªQBFƒ³«°sÔŸ]óœºLiÑ+v£ˆ^m"zE7Ëq¤ ž‹érD–ö1"Kû"ºÑÏ5àò½jXêKÜ7.áëÝ7ÖóKÝ7.ì;§€Ë¾×ü4: kHÇ*¬Þtäz‹õ\a×Í—ŒY?ÜÏë™'i°×h~¹Ûۖ˰LÀeU cs´Þ€K à9\:·Vsí¼×dáJÏp¹ÿO~7àrš'àrš Ì —ü¥ ÞÂ^:ÍkÉ_ÖÓa'ŠÍ8±–P9³c-oñ ¬Û ¬ÛXZÁºÕHÀµM¬å8\;E®=Q¬åïø³c-¸/õ{âvºŠ¿ÙNWæŽéd¬åÚˆ‰µÌDœXËUFyúsb-EuXÀA»ApsÔ3R}fa|\‰øt±~°ÝŸkùß!$; ‡¯CLxï1al¬¥+8§`̦žìÄZŠ‹Þ‰µù Eù ¿eÇZR>pc-}gk¹êÕ×/Œe/7¨Þ¾…XËÒwšD’®˜ËúÛâ[br±‡ÍN6½1¢CLȺý¹ „“†;Åæ{-à“µÙI‰`}³Ýã D*«zhþ®bÇÉò›VÇx=Ùí#2Ãc|¾L.Ážê„‚²¥g¶ÀÖA¼ùM°ëõí=ÉÒÅt;ÅÚŠ˜$ž.‘¸ŒFìËrÖéßÎ+æGŠM ùÖtÄJ¤Î–PPZ‰¥6Â>ÌPPÖÒ—¢D´®Ÿ<¯„6`Tlöý°>úÁ:$g˜ÎŠ®Ûä/IŽ:RÀ×ÖÕ¡ N Ö4ºHhL®¤/‡`xC\¿t„¸ÎwÃ"£>Çc{™‘`¯|áÄhrz¹’9`» _–•Ÿ­Mt iÞeŠE°˜ŠETkÀ†m7 Móˆ"WöŠŽÀA‰äòûËÄa[Íô¿&O¨ƒX­žŒÞ÷=]ø M›­_XûrÂR´­jœ‰Jü'æÆVIü§W„ýÜÄÇ.4:wm ²ÿ—qÿ…Å]÷…¬øOkÝ}x½wÈNE«ê‹yC?Û9¡Ÿ1†~zQA뱉B?e+[!·ÒÁ¸¡Ÿ#žÁEh+žï†~z"æsC?3ëÝÐÏr°ØD¡Ÿ2V9à¸e$Ù1ŸŒ÷Œ9ñž1Æ{¶;%½Û%çOžxO·‡L j _ÄûîOÁûýîææ_ùW¾]¹Þ—½t9®_U[{ O3P3æúÞá}_’¨ï ÔL‘k¹¤Á绯;¤¡B‡[¥¹ž@M í½‹íS?9â¾\5‘ !:lº°½°ý­9¡ çó ›X¶?V32jOÈ…ªut]ð4@Fƒ]Æw™ƒEP˜½û—!õim@~>£Åuõvµ r½ìky¬Íþ?¦?0bÁ ‡Ð@±-¹dĉ1hÓˆ<ÙÔÓØ›ÅIr„= Ïiÿ¶ÞœHÓÎv8%‹¡vâ®Ah0fÄ|ŒÀ ÿääh²³l>jì¯ë49 yDbþøñчc¢—ÊU2eõ=X߯Â`‘Ô…O†cúÈCdœ²CjÛ:y½QL´óé+í'%O]6>šn„HߣƒÀý/¤¯”°[BP[Y98UŒÈ$Ï¢ {9Ūµ¢¾!i-Á Ž3¸AœÁïAÙ0ÙÕ…•tMQ:KXpÚÆ€° µ<ûEôÈÆJ&bÓˆ•OÏ¡&ê‚¿7½PE*Ù8d%¢u×y&«U¦VK¯‹^-ÿ¦ô ƒ¤Âs4ÖBiz‘G_Þ‚IH`œD[´3°³€‚‡DGﯤg`K–gÀzMAi©Ì#J"˜!³B&¢PÔÙrÂúgË 1µH6=ÈE®“¤Ø`$¾Û}KO 8VÖR«Ó{Öªq¿UÌ ,ƒ@€æl=Ùöx/>ÖKæÁžÙ£]ïa´—8Œ¶ýtŒöMï÷2Ú©ö[/uêsúˆH‚EŠ´‚ ë²øˆ”$â)šÒél»°Ýÿw#Ž©ÉÎzMvn€{ôWç{É‘S8©#0Ýú©¹/p/ 8ù2œ¡k^Ž@?º\Ýc±Ô@쀘Zbœ5HÓç|LL™¾~ÑÊ´åôªƒ*CõRÃùf[…@ÉúYûŽî[ðJƒ£å¡GM³ñÆÏiDlcÚË—qRïKò\½ô­ƒ’nâ!cW¯¸Æ|“‘ù—€š±r±t 5Û?x:j–@ì‰wÐQ¢Üæ!îßóuÁq•e/¸³Òéš$†û“ú(±½ÍÛf’àp™‰Eª³?[Öºf­m=X.Ø[ù#Æ F ;ÒZ2}ë%Ð ³^ùlCÄÌÐ,þ¶B%kDï¯S(OC·X-® PÝ‹\™H=C²IÈ#öš2$›g¦?0héóííkäq1áû·Õ<Üí4\ÀnþþcØ6§¤…lPyÜ~Ëaµmn›¾ú¶­ïè1LÈ MšóYÝͯø nla^Tå2ZÏ–UEɪ:xÝTóЬjïH  1iP[U’¤ÌVo÷AÅ´ZÓ#™²š1»ð¢(^?]¿¾=Þ5ƒ(eïW|õù²X™¡ž:HF²¿c Ã÷æcRýÚ[‡%²óß?êMHêºLŽ™Ú‡@(sª°DCu0ªƒÑP8ùÓzæèÞYÇM`T†Q)[)êGõ¿‹ê?ýðA/ ‡öBÛ ûLJR¿f%öçµè¬Hê;Rñ¢€¼ØˆQ—Sh–«`N¨=(d³$%ÃN2p‹&€âèºíIÆmñšœ–½Õ„b?Ž9”ùm‹®;níðŸpê·q@g2vÑÊg—}q Q0°¡ÝQ% &‹®ã¬]þcAvž‚Yë7áFŒGÎû“_ ½ûÀB„rcqûÿÄ;å™ þ:\3*'“#'rL Wg“D”Ù–Õª])«r#xä>qø+ ±MØï—Ò%þ>äÖ‚sñ€É6a*Í-[½ÿ»#îùrŠ{1¶«Ô€Û±‡œã-ÍY³#~ƒ¨>Õy«a4±)Ù:©FÏ•]wÚ‹©#¤¯¾sÆÔÉc°sŸÐÏ,ü´)YÝ÷iN[H|·—bå.qNHõÒm$F) •ñµs|?‡Ùa¿!O¦¿<¨.!¡1ýåõ© Þ1ÖCÅ ˆnÛý=šÜZ<8Ý$/Q£ÛAB»ÈûÃöÛ¿-dy¿`½–qÝtÚ@ý«õ®¨u!bž ÈŸO H¤^W,Û?ù®:M3²Eo~g"T„°;ÿàˆ…qŽaü'9/ØuVú¼r˜>˜×_7ã•Äìî©#£cŒ­cðCð¯Ü®±øoðÏIpöRꆫ³ð;o<üüóFÐOrŸþ1eOÝl±ü{ ñáâ†ZŸ#,ûÈä¼P–÷þmËÂ?_Ü0¼xño)ðÏUgšÅŒ“£¸øgö"6!§Ì¿ )Äêÿ^ükŒÍ|AþÊÄ™/÷ B«WÚÍ"¥ÓW+b]£Ô²Ú$ S`[V4b»v™ZOÏÚj ¸_wÌÚlvU†É9ÂQ‹u¬Wu®’5 ‹ØÃŒ™ç6ô˜¤Ž>ÄÞÄ´ðTI»<½âÖ¡Ä#ó„µmî¬cG÷Éù¹Òó«7Э –cÙ>÷Uÿ«nÝ @àô¦i¤ÎðÃÉAØ9'£6zàý7®hOrO–\R 7yì_â‡y²ÏÐZ¤h®.ؽ¯› Ç6Åòa ¥xäÝÍ¿ô¿“ú~4#©‡Û£+Ìy†(©È"oÌ}ò)l`q—­×o°^ò¯Ÿò{W¶\¿Ø& ‰¨ˆ)äÄx™ãå"^.z,ÆË²à«¸Ìñô YðZµà²àUjÁ5¨edÁs–x¢jÙU õDÝ%¶?¿S✰i®ðâ7p…ý;ÇYá±±./ìðûì¾Á:oà÷”ª4æ=ÎW[ ÌSÇ…Ý¡é¾ÁzZ¤ãG_°vûÿhí»Þœ*n{wÍݧ0³GMáhï¬îl̤|1 iQFÞ¥hѪ59H© '×–p…4iM¾C¬êµ#Z]°+š·¤^Ë^ÏJ¢Rî ’³ß «·Ã¿]ˆ¤Õ§†¶IRw®×öHÈsÈaýNû±â»ºÏ™Ø— 8†‰†þG=‡"Óª‰Y,ÌzqONnZVú›ÓŽW^œ£ç¦œL9û ÿÊ¡k¬ “οؽÃç%y&#<'?iÈzteú˜âߊÝ)&Y­˜db’µ÷l—IÞ3˜ñi´S” VP„uê‚Æh¨ìbYš:%WÆë´pJéuVµU‘îÕšjëñK»Gsi÷Ÿ€ K_÷¾Ü´b«Î_®Š/¶zÔ„ Õ„bjBEjBÅ÷lÁ¨7óünŽŸAH¨—C¢$e-âºu‘Àn!ùÈMMu{°ÍM_¯¤„ëópì’EI—nAúæÃ…öÑžíKÿ®Û¨9?ÒD› «{¦.§Ó¼ Á–;=T_4¢»Jò0Êš!¾+dtÁ^%"»TIŒcªãܤË"õ(Þ—¾fH›ÀñÎô‡†dÜ'OŽžAÓË6%¹<¥È‹LjÙPó¡›Vµ^SÊŠî‚|rªËHAÎs¼^§ËDï›{þ®Úµsejçæ«+¿gËˆÏ Š÷ îg˜HVþ±‘™ZK}d&÷.¥>?ZÄ(ÕÖI"ö2d’ܺŠM†Íj6kجUMrúA]oó?šøÍd“³R€«éË+ %(ùØd\Ië—чoö]×ráû?¸ìOiíÊÄÓWu;2l¸òÏ%¹EÖþáÿùÅ“>}a¡–Æê—÷€€÷ž (fM@ N3¶`f¼œ,®Ñ ù]‡7Æ Å{š ‹WBØà`T³ÁéýQ·VPUH6˜•tÈ£SŠQ”Pý•ª¿y&SÒíŽ÷è<>Ri¯xÂï³ C÷J‡Ô{¡“ÛmÍ‚ën²ò'ðyÀµ¹ë<÷Û&õ ›Z@ZcßÜMªo²2ìmvºÊ&¨éË›0§zÑÃVqiÂêÙÇÏóñ ç™$å6‰­¶ß90^ 5ã JX›ùˆxûÝÈØÞô{Ŧ·Jh`{ž+ÔwMr  /“d«ÖçÉ~ôøvò–>ÞÒ;IÈÃnÙ>ÐÎú&‰ˆ²ŸÏdc³bs„Í›Ðdi"lblŠÙÄÙÌ¡cãDëÏŸ÷;ƒñ俨ïù£h‘ÃUæw€ÓèŘ„F+e|‘{|.l.õž¥ Žzñ³ tzËXÈà@Œ,ûí¿ Æ£F5˜‚÷<Sã3l–ô¸g½D§ôñjÌœµV¯øÚDñþµñ2ƒ£îIIŠ+ÈÊy¬ˆ T/T¿U)Ä_¤>רϵ ÖêìOoRxñlþ°c‡©ÖÕ<ò,ÇôÅ_W£GkNõؼ à%JYFîLs‘1S~d9÷¡Q3u¥‘ÛÐD²ï¨"M¼1ÅáÉÜ’çË:£Ã o”c,ŠÕßLõ#æõWªþÜ;œÃT Ê£.JžA¹“ï`ò#"öà¿)”‡"sÝö„ºÍI\F©”<×.#]p !Ïn"¥Peñb?)_V¿âÍfYq'L{?Ä4Q§!Æ* -rØ€ñ}W-“ °3OÔµåT×"Y€ÝÁ5æq¼Ò¤Õ=sœ@/§´º§OìZ²ô§µjoov1ƒ©Üô„3*°n³_·UW7Z¶ÒNiý¡Nõt÷'`qÂz<}×koÖyZ–íJ|Û•aÔÉêÇz¥!§Z|“®>°Y4Œí¦e](¨ž'à…WŒ­?CÝ­·á‹­4<©×´Eóûá÷ÿJ£¶p¥…^« Í]!×ÀÃbE¸ÿ$ G¿å&vòexç÷ûÔ Í&鏿iJ‚á|-lRlZIéš `oÞ­÷ ný$R (ü–³n‚¦lòTu“ˆ m".¨—µð[‚ÉgM“r–饖éuÃE"œJ“”jï ¹ïÒÂ=pu^îw@rDœÏT ±ש ÒÙ’5 !–ÃO’±•€6m´Y°kÅ¥I„£ïâÕè}?ñ™üTŠºüC®tÑ1‘t‘ ù®t­¤Ý(Ø@’8«4IeYÄuÃ<>Zi_®tq{UÞðèu7Eïñl&¬ °kÐêÎ<²¦3¬Mle…úvƒ¾Íz®¤T~ަ@aI’ûÈñM©gødúYpãI¢.n(a{W¹ì¯`ă•?†~1.èY=eؽŠ,ènx‡ø‡Ðû‚C áëü/Ý´¢ãðÇ’ÜÓ…zo£÷_‚¢•ÝSÜ݃$1™G_&µ2!Ó@§ÁJÞ`±ÞÿmÕÇa(TX@::üPëáz½öfÑ bÏS×âÒ¯`T¾LµC ÐÀ‡19‡`üé Ü¼˜wÕ‘ÈÈ·XÜŽýÆï;ü#V¢óǤóL|õd±¥ëu\Ãh–Õ ÃƒÏwÊ}‹yCN¿¿ÞŒEÎ1žCù:mÙ(¥ŸQúɲÈ›wÞá™øZŸö;ê)'Œ¢oqÜ’xíòóÊÃûß2“Ï®öq*”Ô˜×iô^Kͨû@Þ|ܨùÅÀ¾è¿ÂÀ¢–ÔĪŠ7jñ!Y­”þçù"!"þ§Ô—F}vÒÝï /j˜½àÀ²)2ˆ/©A\wÓŠ_h DÝWr©êE=Rzséš÷„1Ìö²i†ûÔ \#& >tóš_^% ->9l>ïÅ“÷‡£—}—£cWáû‚í+¦‹jÝ@ž_Æ» Õ1ø9uwñÍUýx*tóÇÞÎ@°ü} Õ:/žÛgñ(·ÆO%)¡‚t¬"ÅK-Øn–$IFåK=-hþPt°úŸúõýa5Ü% v5̲ú‚ꎅj>yöçNUœrEŸµ/È.Õä«'CߨyK+FÃX0ô¾‡Zà Kœ«@†Æw'‰Wÿ'ï~Ì1ßqÑ'#?Yx}kxÁ+Ë&©¹Ô.Poû­jêÆ3ÆÔ^׿{ËçûƳßUÏJØæ¨ ðIUÌÚ …?€¢ŠòÊ á*ÕõdTmÿ·oûvñò_¾k¥j˦×m]‰ýúìçæ® ¯|-zßL8r‡$._»lŠ9:ªýcø ¢À‹¤- œ6ª¢ˆë´WÛ $€éÎg»Èþà&Ôñc¸kå“w/SK¢xBm Æ1©À݃Aº±o….ãßj÷?›ÎëÂÜ6ûwGO¶|/ϧ5‚´6Ë*îµñóÇFüÛ|%6o`u¶†›ç_ñŒÅþ•|¯=–y]dœ‹¹>/}Ó¢b|„áÃØg6ßç.PÛ»¾( ð‹#TޱIêÖ–"£©lKƒñS À¤Š!K·Û8ªÄþ)̱„¦  Ðå—èô3âAy=(?6ò«}÷lgR{žRsG퇵 Èņ½ï]¢XX<-ê@žï|¥ a¹jÜÝ@ìN’ã‹q5A>Paî.¾nœ;Ÿì¢ >ǽøwž?{Cfš )2`—ĦªÅ€äJ˜Ñø…ì ͶÐü œÎ2_òy@F»Eô8v3Ò“õÄD1¬µ6Õƒ|BbÁßgüÛҌͲ¶úŸ?ðUàçþûñÿKÝ÷l•=Ø&xÚ S¬Rì7â`±ßq0V“ce\ödÞ¨ŽÏœéìÞL>Š ß³I"½ˆ¥ÎÓR}ñþ5È$}âˆ+V£ÌVb°™íÞr¥{‹DH»g

>Kì £¾É^ø§££‡êñ‘]~4ãÎ8›‘!¤ c3À“Ó²%m"}ÐêëÁ‚IJّ_:öñ_¤~&+y_`köìó¬·ËÄöÿXûjÛêóFñnuÄì–kú±Üz„Í0›6¾¥ ± ?(ETós)ÓÛ/|PÖ'Ɗس™É&Îf›R6󨔡é”Ãþ7(ú™|Û"íÂŨ¢’GwÍF4ÔjË*>!ƒ¨ü„è¢ ?!ï¯ú„ü¶ˆM5›6µl³©c³„M=›ùœX9šŽxçTÉ!.dSÅf›j65l–rH ŸÇ—sH캉M‚M ››V=@¾}1ß^Ç·/a×õú lØ,gÓ¨‡ôSy¼ú§² 5?•ÇkÊI³©c³„M=›¥lØ,gÓȦ°PúŒÊŠ ¥ÏâBn+›8›9lJÙÌcÓÆYÅÉpAVs¶kجeÓÎf=›½f\ă2£.HгmeÓÆf› ›ÕlÖ°Y˦MW)ÁUjá*¥8ÛV6mlV±É°YÍf ›µlÚÙlPÃ}¼Â'@Ûù Ö®^ŒL*\—:3 ˜9¥6;Ùô²ÙæÍ~6Ùô³±Ù ²Ò«Åõé ÀlxÐõTwr²]l¶°éa³“Mïƒäpˆ]޹æ|û{ýŽ#»ÇoîÒ.2ë©YÏYw=™‡¬±%“¾ìae$àºðôÁzhpäÃF•˜ø\°=> *¶ õ_ÁÛþ„2 ¹“^þõä #NÖ">­ø/ë5CËz‰ÿph*º9I|£?õ_ÍÌ@d‘.Î.BÙªBù€‰â„ä-?•‹Bä2$r)!rêLuKo©!$ I‘†¤„†@´š×}êÒ£ÏÏž‡rļ4Æ9BýNö³ˆ{UÍWÕðUó Ù½¼¥¯ç;€ éŒÁ¤=¼¥‡½ìd/½ìe={éû©¨?X˜í`Œºr‡x¿ºÔÂ'oFI¸éRN(#nàšÎ—# Å\ —ô–‡¥[«r†AîÁ•Æ8ØÕ·eõC,bIwÐ{Ü/DŽÛ|Rz0­»«”¨âŸÉ#a>RLG"œTŠªÏö¯&Kâ>CÕnȳ_ùÝQ˜ç[o“ôo„¥€ºv¤º6cñ’ò8ŒÌèè…Y#£V·Ú^ô'I„âo=–äçèºníávŠû´»öÖ™šHçÔxL«[XÑ,øÿÀ½L°0µîaîIe;7_5Y–Ù>é׫l–WÖ5ÁeÕñ¼WÉÑÒ޾r+ÒË­±ódsÿ°¼|.X9Ž¢ÐÇüD|˜{A”‚ØäPj;ÅEÿÜ®ç$PßÃît Itš$„.Ñš"qÊqBL)-ËàÐCƯ•âå”® ‹ÙG?ŸýJf8µL¼K=§Ãåf;‘ mw= º ò¦Öa1 ô°`™Uü­¶GìÍ6E7†fHC±ðеCp_‘¬ŒÙ¡¾l›õ ËŽ®ÛhýÀ8ÓNZ… 2Áa?=by÷Aè}ð˜ ;› €!Êx¯¨eèÇêC9F|“!SÃ÷!!é;¢ëúøã^]¹ÍÚ*€¡D×aÖb½{ÎÿÔë gZÃJ›Ç~ уò÷!]‚>,Îb?4¥< ûßyÏ&/Já:¨ýœ!£µàSô~Ô23{;“ÿØ•æChêûŒÃ—ï]”;BòN;虃ž¹ÍÔ|äAÇÿ‘\Àz `ódß>ùâ7¡™ø¿| ÊÄ×bÔ›AøÔwXš°òCÐü6—dó¢ëöù_jñSmXž˜;lÒ×#³<¡°0}¦ìB)]X½Å¡Ð‰.å9(8eƒ ÍžTKõ 8d~¶ÂÆ Ô÷xßÀQfP9Ws­ß“0Ÿàôºu,)M¯Þ^Õ³ÆëËÙ³X<=IHÆTm)xƒÐUž2[ÊüôØ#ó8-|·çßìGÊH’Á6þçý»ÁÃÿÃ9?ÐgLOåLlr‡˜Îxrïô&¹w|ì>dþëXg+þYÀ!+ÂÈkQ¬‹Äj³ˆ#ë3Ö«†>áîÀÍFþÓ=[›¨¿­xþGH®PWÁ¡ý’]~÷ßër ð—´‚?fË´ßù¢ Y»Œ‘ìí½T—(˜÷ Ãªáá¤íDŠöìQØ#ݱÜ:÷I®‚È>)™›®ò sBiÂêÀqT‰¬xØ/ÔÃý^ ~ÞÆoZgIQgI‰Î¢D5é÷÷);ø­Ã«È¤µrÔ¯|˜køpÎèß«Fï,€úwIîL’˽O­à”²Šì\²ÞI²þ[EsŽ%¹n$LâÀxÅÒž‹L¼4æ`˜9L¡¼ ¤M“î^ÿÞ`'©3¾š,wgžƒsô”¬pé Â>üާÒpbt$fD=80[èâ‚ñDê¬WÄzË E¬oF.[ž½êWGa}Åp!ÜI¾&£_k#ƒqVïÄËaí ¸”€Ù&LL“9È=°}£™jØ„8„ó\³þzAAÝù¬}ñÝî˦®/QN¶%³p HôRÍèû„SÈÒPû$õCò]¯µÏ(TÍu%5€¤)"Þׄtس§ù•7 Í×Ä%R>LfÇ%Á¸[sÖDÖX­Éó$ü²ÆX“º€»&Xó:³ØKòÜÔÙÅ|îÞ‰wÌ^ñ·²W|>W\Dïe¦÷²Û»X¹7q,×¢Xñ~ óyt¥Žæß0ÙÅâB$Ö Œ}Œ]–oXëË‘#×ø¼r$„8é;#ƒ*ÉŒaëô°sZ4åȘÃ%-¾àßìÿ£õ’fí|6ûw˜ú$áæåj÷¿õ€’*N}”‚ìÇ.Žß0gmöé$á°NÂðoÇúY’s!·B—îùn~™V{Á¦e„Å“±N«HQW?è ‚ÙÉeŠ–ªÅêþíz à§=(.øOÚOÑ?_[D Qìh‹)âÍia>Ñ·Ì‘ÊDZx/Cç;à‰M´^Kj°"h.èY–g[¿8:ªÁŒw.æ+Š–ñ)zÿçOBþH ìr|ZÈ”p¨‚z²×©®Ù+Å–vŸpóÇSBXøüNLŽ"Œ\Í>Äh,}ÐhüìñÑQ-ÌjáMÝ”pªÎùTû¯À4$õ{jÜú=°avrÈÔê%KF÷?•›V³YC[ØZ6í4#4Ñà°¥FnÙUŒòÇu”ül­°¦hÍìkfZCÛâ=|r {­ç«–²É‘AÙÚ#jÙòÛN>Ü@Þ¸œVF*ÚµÚøQÃüî_vnÚ{©¬/zß½àÙPÑÄÙÀ3H¥h ¬ y\%ú ¢ ±á`o fû,änpQ9Ò F89LÑÏ D5k#M[hô„ÉÉO´ž:Ù­qÉÚ¸¸‘G1ÞMÈé’^:ä}%ÿw_^ÕUæ{ö9û´G8é öÐÒ6u¨=£¤I•΃^â¤×t SZE'µTñ¦“*cÑ&G,М(»;â˜é€æ¹ƒ–™Û(Œ¦*– ¤ô ´J¯'@KZiù æ®ßû[kí}N‡Þç¹Ïsï°OÎÙ{íµÞ÷]ï×z?ºdèÔÊ~µÔ·T›µ\¼‡$Þ‹êÖ¥rë¼ãÎn5§E´ä”¸jÓÛÑONÔ:µò9ŃdØt»ÌyÍ瘊M¼áÌßVÄÍ¡Î:…šA-‹–"‚ƈœ+§sßM§õÖKÿˆ– 1ÇJN—[ëR÷üœN1±šâr•-™í5n™²$¡[IŒB.µÇÙ#b•`ÙbÁâ¡Ý8àÒæ_ê_¤¸Þ\=³ª¾¦)>Ñ^Ag1T”'lÉ„VY)ÿà@ö™Üïkwt2zø^ï]ØUì¿ëlð™&ï¼(5-ÿÕ`lÕLâùg_?ÙtË–¦k¹7ÇN3…ýH짬à‚LCƒxµeH«ÉæY†6xœk™Ñ\aFÕg$rVùZNHû¯]v ß‹O©% Èa÷‘B^¥Õf±Qdýº¡Ú÷Ö*ƒj½€í`‚‹Z‚„ÕYQ¢æ L¢Nix?¾Eü›ù'÷åvp©L¨zÝx]ÛªôÆœ>د{Kð®æ<¶Ë"£‘¬ æÞ¨à°‘lðŸÙµƒÂ‡€/GiE(ôαœå1ÑTîÿ´~—D÷Éb^•]¹ÍÐb@}ÏÔ§íË©œý †7ø¢±Û™øÙy—DŠ”ýÔâ%Q͘žá¤çg¹Üž²Çw8§báÄ)Õ8af<‹óèýJd÷È]UUgæ½G™- »Ã(¯¢m¡ËöÌlpƒ3óqGCBßj5 ‰îŸj@Ðë³)º÷¢RüÔçÙ4@ `ç¿ÉÛë$o–ý5 MäcЏw@ GõìI¨5Ž]‚{ÈõrɃ¼¬Yx½=`©M¥ŸZSƒVê5–¹y»µs&..Ë.J±.òå®ÙùËEÛwFvþ3ÑðÎK ã“Ó„ŒÍ‡P¡ÊhˆPš×zìjheIcãí; ¬ÒD?§6x,µ\ëôËî „9N$äCC ·ûIÐäZÖ¸Á|«ú6ã"tt"]¯ŽŠ¢ôN*{4vQ¢@ÐÇE@¶>GAßHl´‘‰´ñ֮ܺˆ5ø—,s#äMþåÁZ¢ùÈgSù[ÞVeb˳'Bë7D¤ÈSf2E¬”²7šFæ¿³Óø/Ñn¤UÆRºñ}¢¶æÍ޳Næ§aí¸¬pæFB¦ÞK…sH…€ ¢ÂœløˆUª!*,ªí³;‰h•äç+µ6 Y~ÒZ©'`­—»piˆõ¢¤´nó𔸉vKü^§¸ÌÔe•-|sˆ·½hÂíPï[-r•?×U®üÖJñ•µVFcËCÍ›Äpâœ4>Í—x%Ü.u:k(Ä:ú¼)#Ÿ>uz°uƒ]Êœ! O‚$ù„Q\–Š: ¹HaÞ뱎°Ï*:ŠåaÖ$ç1Ö}ö©bûI$¡­ ™Á{îÇš^¬¸ƒ¦†yƹðx¨2Ô ×ºy`ØYµKN+àðÉ%õFí›’®3\S¿šþ=L}{ŠGLBú NHnI¶AÙ¿tIw¨ wF˜ö|EZʧ¶ÝIÃ[ÌÔTËïÈSZï4uOÿeûq©€{IDÇhʵR”»"E¹¯Ÿ*¥žçƬÃ×2ùÝÿ"g•ø³ù”“ÊVǪ!† ¶YX©æ¿:¡š¬•nÀ…w™î d4¨ËÚþôB€^{%üÁEtȹ½ði~·~‹š,Þ™sÔ5¥½õHÒ…Ëu£ó’ê?ù—{·CóvIï7Žçd&¿ÐÏA»ñÔ[ò³¢óŽL7œ§3Ä…½š.ÑD¾ò¸ø‰}ÀçÚ‰ÀˆFà1z'޶«ëè«i°¯Ìä?÷½Ø·H3MÞ&öDhûêzX~Vàåe‡Û¾|‚L(!Û·e®Ð{7@ˆÂ„,¸½²æ’a0QfÚðIqkÿë¦ú¢äy•VÞ† Ä M+iË&Ó¢ÿêLЈ”ßðâñÁ¾ŸSªt°àL·PÚ*åeAðµR@;d‡i¸Ú”sê·ºk‹¬z¹qfÐyåg©žŒ$jk§¼SÑœVn.ý¨ŽD÷¶c§ªap iöØf?åM9"2½½9vh£3¤šR,CÇ:ÆSÅ×N8/>¥–DN‹¸XÈ&„‘ÞI~Úaÿ’pÓ¤°–^TN”r¥3'uï’;#Cz—˜CÓ' ‰&RÐÒ@ À–ÕÄÍÁ¨Vz•5ðdȬ¾ŠçÒ ‡ŽüB}{ë^8²{¸Š‹ºøbZÑ ¶/íûnaåhÄxH¾Â7JB։DŽÖð¢Áêo!|[å#•Úa¤KC]F´ƒªHYÌæc®ÄYÔþD Õþ‘"…´µµeà ¨×;ã{ üp˜y pF±6‹äM1ê€RV>êó4¥êP*ûæ‡U>Çv64o’Ýù‚Ä÷î´nM­“uXÚë íéä]ÔC/´¸þ\„þï¥ÖmÀ¾nÊu4Ø=é¿£Pç¨êIå~O•6f“á6E2 ºÕ€ŸÛß#7ÚÄ{üüÚÖâÀß¹ÑKß«³e“¡ôûºHágêo˜z Ò]Ò6¯[s­Í.t"ù/o÷è¡)LÍ.1ö6µIüPµ%Õ²`D@cˆÏò&…Ðo²\½Ý×l½…ÉÄ›¨£¡Þ"´…ËßRf°QÉÝ^P ¨}pø|ÅçtšO(!ü’6“žŒ_û½xèµ£ç7q%qnåÅð9£ñ-uC}¨)à’«\¦Û.yG•VÝNòÀÎôë&îõ’ãØ˜Lì÷ÔŸÙo©=j‚ÍÛ©g-µÒŸæ/7“ÚÚó{]]â%–ÅÙ¤~ÁF÷ë«ú½ô£A''=¾‚XHýB¤¶­îzVIã^'ÐÕ*yó««y¬¢Y¨{ùÞŠ!í¤TJˆ#F€Dë%ÌwB§ŒÈ&ÙXqzÛíӜ¦Z­ v*N¢AøYYêr.§nŒQ¬Š±TèOj'ÙBƒº:»‚@…Ò‡YBSÖŒt“ú öš¿ñwᔨÔjܱmQºca1 *;pǶQ¾Î*ðÓ§;K"–“Í‹6×Ò°®Ž*Àâtu6…|‹0Ó@ØŠ­Áaôƒ‹äE r_Q¹w±³ßg%g+®¯ù„J˯ïG¦¦Dý"/|v ľTŸÉăäp8ËIä“´÷à-#=V®û©¢u+ÛKÏ÷<{,-ó:èˆßª±ò“,ðj–ú‚6>¡_N݇(h|œ•Ñz |)áš©s‰R£À¼ñý„˜o‚O/+sp6bþÿ…ˆWZ„Ï;‘:o¸Õòx‘SL $}¬´Ü8£§™ãÁúÐñàDjÒ@¯–Ó]ÖÀ/ÏB{u¾iY\h[uNц‡mF¦]’i¯¸F¦­ Ë´êÅ­é=‘K›îÚÿRÕ[T/Þ™Xþ`šu‡hef9ÌÔ€¢Wª“ ü+ªvhùeµdXûPb©æ-ìI‘_YʯÚLÚ0Z‘_YʯÚ̘_Šüê üŠ‹üªUò+ªuŽ‚&g©u­Íü[J~=¶ANûIËA¥Õ­×l¾ÿKFþ„œ±–x ‘¿'fy¦Þ—¿Z¹Ã8 • tîáÞLÖµ‰„Ú ) ]M7E?­eÍ®&“xôlÇPOéý åÐØ!&©KIï6šö :ª1ƒ§*È+ÕÕ¼Žÿdç¥P½©w¿„sl¬õc¾n³:ï‰yUtšÕ~„xè0W¦å´[9_º”roä…{ŸlY;Uâ¡éÊÔºô·ÑÏO¯Å³W¿p jååá¼Õ|ñ3ŽÞ5ÑÀ ®µp”$ž(P>2±0è—è!LL˼͊åŠð¾ã\ZVv5êJÏ;Å!'Õ:ðQ¼OD"Z™Jæßùïb¢Ê«ÒË|ÎÒOx½=â¹ä"Ý8ÒÙ"±î¢ÉëÄöÙ²}¨0HÆ ( :k²Ö!׊ìòAæ—… œ.á•–s`&KÌÒ€ðî0­uiC<3µâbiåbú~4dwÌéG #E­c¶ÞxfÐôÏЯÖÕÁà¥,˜-º eƨ߰$ Kä?&Õìg9ÆM¬³Ž!VÉ™Œ€µ^¶6Jí ±õ W0RÛ«ï†k#gQ8S‹_z¿¨PÅJ§æu~B)øHËusÌxf^ ÚÄÂÕ‰ÇÓŽÐ-îÁÛ4]˦ïûêûE7^jü×>‚.¾BX2%–ŽÐR©{彞6´ÚD1âVÒ›‘Ýjëíú|—¾o –n>S¢[~=ï‹0Dh¯!?È…‰ #SC!M’vô̱×Vq¯iÍ ¶zLŽ¡tõ¦+qh©%_¡– @h©còUëSÙœ–ÛÚÛ²ÎàN2ƧԒ,O“€ naMO­wç xw–ï48%ýkÞ‰VCÕl`„Ehcà y Ÿa^)÷º#eü¥à‡¿ì© ¦ŠùÌ-µjØD­Èµf# ½n ¡¶S²BüÄò #e¼Ò‘œ»|¡fˆ/ ÎxÛ¹€ôHZIÝäÅøS(xÌHÚÖÚßPÍ9"-Þà/jšèñíô%9®K²à˜(ãôãÀßNp;ä„í£¼&¦–—p¸KpÄéH7™ñz–UùƤ•Jû_áxÄ>¥–üêk]áëe ”ʧù±³¨À|ÿ àøûjN %h£@¡/j ¢QŠðþß2ˆ>ôUe-{R "*<ç"1-´¥«QÑ%‚_'„k5j¦5}{ÝÐþ¨h7y’³¿²rž·ž¸‚þÓqE W*üjºæ½4mŸ§M#y•I9šØ(ñþ½¦shÊa?èka'8ᡸZpCq0h¤ó[K1EÙ>F* »O<[Œ)ð¢´ò=R[$P£:È´m($H]Ea'o«ú+3'6y{¿^6LØ-Ž}ƒ‡gÀôÚˆ[àÒpýrzë셨娫ìYMV2|0Sgàû?½sîƒõdø X„næZ…Õ_ÃFÄž™þ6tW ?’ˆoãÑúÅÅû½oGE‡d¹Âdû£(8H¦k20ä:»Ó§{Ú²âo¾CoÇH™_YnÝêõxé+x9zLãrzq€:ê€2„®‰'Oƒ0¶;¦¼n¡§` ÉÉ ¨D/É'˜1JÕ¡TËbÚòãZ¸û îêÙÒBDÅtãÁº…ð¯7ƵÌÓž­)”Ø¢ItåH¹kÖÈ@?ËÊ—Šnðe‘kcæ15Pù¤ ªI¯Ø˜zìþOøüàë,ý]¶2å¥6eåÉ ^LS;ýRœäônñžº64•ž;’bìïè˜;RkBǨ/Í#jŒ ßm X¾)„iq‚tÄ’éÆŒ"µ²C"D÷À€à‚´Ϊ±y-Pùö4h£_¡_«~Ïf2qŸÅV; z ,m¡`ŒÔŠŽh×n… :eÇ;3©ÌÑÛÍ`z51‰Óº,î€Ñ/·˜ ¦œÒ úE³â )›‚v³sT± íô儞¨ÚÓÔ€éS‚Œ!tÉ»OZ#ÖgZ:ôËR+ó>ÓÓ}·¢¥ÛŸ÷Ô@*ŸKÂzuùáÏûíú×ëªN4Þv¸ žõ5Ž’#G—6 žÊXŸË­<+ àÔ’+¥ìðu>K.“vµ÷wÿ äÎ&HùK}î€@Ë9üa½»Ôz)â¶…­ÖUÖCîŽè»ù-á®åmºÅИçªÞîië\M Ã;E}´Ž:]ýH«Óõõ÷‹>ÑfÚhÒϰîÄm«u´ÒýÑnÑ^€éŽy)Ëÿüö¨¼ž>Ø:£»=©ÆÓglŠ €_z»+ÖÊÏ©Ö@å§øÂi4—#C£€y0Û·ò-®‹˜ë"0Sgÿ4¤Ïgx\Ñ«OZP¸J<Š#pÜø÷4eÀQ¤ârŸ%º«ò©¬ë|V—…©}tà,gŸÕ·Ì$•VJ¸ïÊ»…~ Qbh~-<w÷ÏÞ³¼q–Ž¾Ð·î­ÇÂo=~«…¯€¨Ü§àÃÉ.YUÍ Ã3Bý£Fxꨅ¹ÉEÊÐD Ϲ‹!cÝ ¼Ç47(P‡"oæü´ŽÕ4-þ ljGoñ ˆñüÚŠ½^í_ï ü±oèÇIÄ¡è"­#õ·ÔOó[ ÿ•½Ðó;¸4eú»{~ïêÓÕ6{¼ZÞïÕWõïü_Ö ÂÔ™7ÂKna°û3ñHÈ͆-³¢Àÿ¼ÇÀ®7Î’{3/ ïBè9q ]rs(b[ šÈ9:~•°²UÄ›Ð4Góë x¥g9ͨÖëïÕ2Ï¥Vv¾º„X hi_÷ïW÷PÏ¡³Œ9ñ,㻀ñŠç­õ¿ÞxÅÍ‹Za(hAÈå¿(TSÈ’8à¯\åÂ𽌥HÉs+̾ ù`“#P¯Èº†šô ‹l`*>Í_ªg.'ôÐÊalêëþºßK>œÐ¿)ëë ×B€®7L1I²­äiϘxf«ó•'X Öj\À‚a 貾謌©A)·`Ïý>p° n QÐXòª¤©½o>9™ï‹¦Z©ÊÉßm]—”©Î¥ˆ”“zØ+UèOJTmfR5²†çVPˆ±µ‘<'*”‚õ{ýÐÜ8G¬[ñ®LcTÔE…NíÏ…Œ¸Bi=s]­òÍséöðæFmZpÆGæFÃÖW¿9óEmKèH‘âO9–]ný­{©rÛtÄVÿPJ‚„™¿ÄxÛ­ÿj‡ð­9Zó³\Ág*L‚A» ¯˜ƒlvפš7¹Îkð n‡b?û!¾‡øf/ç:Ä/<å++ô^zÈdùÒI­+† DÖ¼MˆÒ?¤¿²£MÐ2†>9€û:iü hÈûüEÞqõ;ÓÑàD½¿"Jc°Fn]ÿoÜ+ƒ r·¢}ÞãVÙì4]¯fðı¥»iN㘦:ܱþŒÀÙ( ÉëúÎðµ2Brœ^¨ñ¯Ú#|73þ(ZÕ“Z<#¤gÀë7†Á÷Z¯Â+°ÖRÑÇö“¥ôdÏ :¯âV¢eŒQž¶¹²OiŽÈô^òv³ ž""ü O9‹  ¦:õ-~.Ëg8²T\N­Üâ»#=Öcnén¼FߪpXŸV¹ Gþ  ôHœï(U\Qèjxy¥5Ê1m¬ V¼f[¶È/MuZÇm©¯+ã6à#˜$½Ö²bwÔá{lþ˜ìcýPUOS2ÿû‡ç •V ®Œ[Ò!‰i"JZ•]ÓIÚ¦åà°•‰)µÖ \K†2ÁЉ RæSd™Ï}Ìe›Ìã7m|`cø¦môÉwhôI§´Àp¹ñÑBŠª4„!ÕWõÞ©-ôxl©u#!žmé¾ÿŸ¼¨æzA¨N'&RŒÂ£`@ŒrÄ£ÈöÐÁ(ÄMçEö¦¸ FÁ A0 ô«Z«¹ÕRsÓýµÁ¤µÑáʯ’ÿŒsûÿK@ÊO•–¿âGâ„' µ¼#gQ¾dØ™à9ÃTÜáÃTfh$a*KGŠÂT†3Y>~·É,á7„eÃ!çm3âo}JüðQÇž »¨Uxì†ôžîˆ5@Óº´TÍÞÒó¶„¼~+cw‰wiñ¿ úådµ3v“kP7áM ¢_´-T…#( ?ï{&b7å¼xˆ›ÉÜÛ9÷,'M?ö ÎF£|¥ËQBÑ/݈~I2ú…ãk• óÁ‰„JHϾx[ÌHÒ¨®é-o¢_Ö$ôãNÄD¿ølnŠ:‹¡  9Ù(‹˜àjÝvLY¡Ðã_ª{¢(÷3ÑYK5ÌÏMHs§SWI´†¼-¹Ôç·[/ñµhuÜémEÞªØ-üýboRqø‹)¹œð‚’Ë–a†}Ù öSù¶9Ä:RGHAáfq#h; ¼…$×A´ÁÝTËÐ)F¢x"þ¥“t7%R¯’ôX•(ÿΕAäËœsE¾LŠ„‚h&÷›^Yùc—Kñ÷¹6z|.§žµ"Ië¸P‚uiyq,Åß÷4tjÆâתñ™KÆG÷rF,#=Àý¶6n ºVR(>ºAñ\›I½×8Sѱ2Cgl~›Ï›,a ËÅàªyR;C ^–¸Óøp³9åSbìã¸ã /ò“ÈÙ²ñã&ý¥.4#¯Ñ®ŸlþÍyó¾µþô`8lAÛIpIG.²f’Hî:†NÈz%ŸÙHîÉ!É=[´ÞÀt™MuI[stÂA<ü¾†h `#XÝÆ˜ûÅP¡œײ½!Z øº‚”N(Öæ w¼W[3ÎzÈy01]îLY/›äTh6$©ýA ÿ¡Ú¶J7|3Ð YL ?Ç€dVÉÕ„ꉥK>¹l–÷‚’MnM<€_µðY”C!÷¶ æ ¾«xÄÔð«æDÊ„>ˆ¬5d—õä>uDúÕgMvŸâ_¯JMIlgzàöTË+Ü~’xé÷.;>hHDºúÈ\Kv6OË%— /|^@áëêL~õg¥›¤¨T{i|èÀð´ü<›œŒA¥œK2jõï¢CóS#Ü Ãäò î|š¿Yãv_z¡ŽXd¾bŠóµ ’õ=éL~öó§%)pCóo–WS-R~=H ìbR`caRàåëNz O&¹T™Ä0Iõ õÌÃépRàXf ÄË2ù¿½³0)žš¢¤ÀÈŸœ±II ùS”˜t‡$jž'/0i ðIaÂ.FõCÒÊ…„˜XJ¼³épã„—?wFô炜À•ìû*°`DÓºCrë|~}a9’ø…as¥¾’Œ¥³å­Ã¤‚ÝŸ/%°ÚµG7ä’ÒÓARËh…×XÔ ^cJàlk Φ8ÛJÆÙÞk¢Ì!ߘl÷Çd±FDœ‘Šü ’ ¿öìéÿ{É„H& ì˜Lk²¿.‹0YœEXzþ,Â=¥’E¹F0f©½î´1É;E)+=!ŽqÑÊ[ÞhÄ™Ãz؈#¾,àð¶Óx‰Véuk%ï¾,·Îò–gÕýº¨7ôuk¨’˨uN¤¥ H  ve²IM`)kÚ‘Y„¿:YØ£3Óʪ’rÙžicÅÉR–ÿn,ªí½”(ƒYsªã1yŠ<ætX…2}øe¿œÁI¬à—íürkZ=Â/—òË>ÞÉ/;øåD>¾Š_.ç—«øe×c2Ï1Vßbþµ-­¦7“¦4zïå/ùš´ù‹tÊ£n§#Ñ)¤¤ïKv LJ;³h*¦;e+¬à‘ö>°”'Ûe¼³ ±¼³wfxçrÞ9ŽwvðÎJÞÙÊ;ÇóN]6t‹aGX ;ÿý&)¬ùˆVàm]ç¯ý¦Ú7M/6°ÿ…yíß¹¦©ë)Íœ¡ùK=J$ŒTªÕIÞ êK"—J·rW›xÊ”é‰Ù–@5d–Ï•op6xû¥ç5€@B©µsêÔ¤òw}=Š^u ~ú"Ó Çœí fKLgY A:&•eôù²(¡wôëÄÒ ¾ ‰e­Ë”æ?°âä`󙘴…=ÛtS.î^*¾ (?øÊƒ*¥»˜ÜDV´¾|‹³ÅÛÎJåÒt\ 5_‹F<7:q)›Æ«7ÊáUZÛË{”×Ûsâ/$ø£N[€sÕú­7y#')®=5µäÃÚC7ŸŠ5Öçâ 3ÇN‚vÊÙ§i³þô4ÕÛêm \ë¼I‘Pý¼[Ü=Oà m^ŸÔÉ1>S~Ѭ×Ô’26+,j©"¶ƒœí_XH_ìž‹×@—ÐÞÞPd’D}fFþe*R˜A(Ž’†Î`€b2’(–GL­õ}Þf?=>µZ\ÿ¶)sJïmAÈ[Fý˜D¡>‹³qãã¹’Ú€žñ•‡ÊŸ2¦›ùïåòíÎöpDOËç¾GQÅMm¹’ÉÖã³ÔãúüOÝdV4B“Ç•:e(* ›ù©ý]2ìþNãµd&§ëuf"PÎ+¡G&.!û`•÷-Ç} ú¢A 7:—æ^RÉ…%r)õ¸Ú̘üoßï°¿@uÉ_>ôíê„Å%NZ´Òø*¯Ï›}:h+ØVË{]”+©¼wŒ¯t¬ŸàX.Î&l¤•Ï)Sd­ü„÷áhRJð"‹O4}sN÷ºï3>œ¢ ,Bù¶šžÕŽ8&þHsB­õb§Î'EEDÕ€‹wéÓã1z¥y}iŒ‚·§¹[ê¯ÉÚœPéñq³³Û¿m­7¥¿ysióÆäÔù8sÀÀû²;÷”ÐlQ½šuu™Ãˆü•DNüþ“ûûöuì\]¦ÝRªdƒËFÝÚOé¢G.uÏ% CäxŠI¡m Ri a´Ì”è–oUÔé±h)Q1U‚gò>”¾.#BÆäŸ¾Ô1ЦÒìZ6‘áhŸTä3b_|‘¢Am.­h÷e~ór÷˯¿üìžß¼ü:zªÞû~ï̾ìü°çuù©gÏoùÓ×ßÜ×!?˜Õo{ÍÇâg{ô³Šž½yêüïîÛc¼)´g€õÜLjk¥— 7@~Òmó¾Ec¢¹§Æã'Ÿt«&¤Ô’ gL~èy²>aH-Qf×`þ®m}¨¡¬´¤pÿVèý_Y³¯63s]6¦çfdfýJ¾ž™©þÍBuïˆ(/«Ö%A^P·xiç¡§¹ºLƒÇ³+¨N¼¬àå^Vñ²š—n^zyÙÆË^ðr—ãˆv ´â± Ïü^A )ž¿Ô;.MÈÏ(ùdøúLé?-ÌMÁJZu>pÏÓ?yÆpðPá‘ÖñlŽyu$}Câi­*É8ê½Ý–z2•z2vó'ªzšÒ·6Ù£å2'¨ï(»¤3éšèy=–ݽ/ãý„ð¼v5¡»: ùÞÕevü @ÇÛ|óÓƒèÍVñúœ·t·¡k¶k‚•-]â¦)œŒ¾˜ÌnŠâdó>TÑÝ9:‘¦vc¤s2¿ð>¹³.˜˜×wKðš:‘³´6Æ-…<(¥² •ûà"tóÔO¦–Ü2hëûæÿú»Êæ~Κ®Nª)Ãj¬pêÉ‹SOŽTðíøÚõÿKî“ý9(;³öü&–‹'7#álËM>!úb'—Q™¡ßÈøç_ùG%‰o,Uïþ%@kP/2lJu\N÷Õö¦QS›Þ4k’ÞÕb­åÙTK-ÐðA’·û¬ˆœA·6†dïAÿ,õ5Aí!¨ù¢ ÿÊÿ°EáçnõKîÆ2‹ŸçROÞQ¨™tsÕú¦ÄÔ¦~QÎZ^MewG-<ÝA“¸ø·û΋©wEÃ_ºù3ÌÝ8¶9Â7ö þÏŠŸJƒŸJÖ3ø¡hÞ}úÃaHPS95+ï€2§µÙdÆ;t« h”C]|Xßǯ)7"}Úïo©IäoÈ\S~=ZºR¢HfŸˆj¡²•døx³µ,]R\Ž8DÖÛó‰­X÷@Ãÿˆ›ÂXþ¨ªm©–~jÙ"éÕükĸöÏÊ…VÍŠ¢Iw¨ZéÎîÌ€n‰óœ@Un°m»PÐÖ] 4í< =)íU|ð …†Fú%|ï|·? u]‚$¿RÊuÂ-áÙJíãµ@/ý)µŽ>äApãx#†Ù )³4ü±'> ï‰ Áž8øá àOûû¢=Ñw{bBñž2û ÷C*´t¯Ý‰z7<Äø¥ dX'ÎÁ°–Ý#h"òwð>9L#ûCÔ¹…Gæ £¿ùº§®égœZçNù韖E± ô6º†Öò¤»ÈÕ ¬–§-ÕB%$RBtdÎ8­¼—LÚ1C»Û5½áB´»úüô/ Ñîê/H»ËÅÿìáµ»ECñ?û”‡ì½Ø9›ÊCE±vwev—Ÿõm¥6\”°ö âºCAººUM¥@Ž €­ iÑÚ?P©èÏÞ®ç@,W"ê]OîS'ä˜Ñ²O³·è½;ýy¨wm†[œ‹Ïa¿Ònøk~¹^ôóòñÔèž@ýΉÓ nÙåÙQèwCQôå/¯ß EQä+ŠÞó¢hQ±~÷áô»_~K!êó¢ßu\€~·=j]9Z– ­‹vgiý,’lÎ ‘df¸ù¿x’l¹Á [§$ ê+§4~z?f÷M$~(Øà}@é.­>P¿ÛÖïkvíæFwøÖ»/@> øÒ»‡‘O#â!ù$úݧþ¹X¿³ò©@¿Ëèw|ºpý®ª7Õ’Xå&÷€H§óp¡_Vœ°õðY]ãÛdüjw¸ÁÂU˧ mcƒÀhò9A;T»»‘½¯´+c¤ãùxïæOϽ@­®PÞ<£ûÏ÷})0ÿWivÞ»gÝ o„³D¥;ßFøÇ;‹6Âeoc#to„Zªt[ Úµ\Y­Þÿ 6€àlkÀ  pÔN-MP•‚ªgÿA`Þº³dÑVö…»äÎ[Ï£´Ý1wñÁ U ¹]>ò\õb­®fX­.[ ÕM>‹V7¬:‡írE ¥\ØvyøŽa¶ËÔþ`»Dív9+œ Ÿ˜% ú±pàXx™wÞ|, ÕåÌj•¾(˜ªÏò?lº@}n²Þ_ ø¾Þ_J§»³éœ:ݼ!:]‘~çF†œo0wºCòâÖŒ%Ê‘÷Ô˜H¤é—®ôà•®Þ(Þ§nÎË ^fò2‹—^fó2‡—FF:HQ¨´D¿™Oö$j`*@þ¾JÀrKþ»¨?»¤ —÷>tî¥fˆ¸lTj]åí½÷žDj]òö„º" £“D½µühªuB $´O¨ü¡r¸ ½?˜"?¨¶ E~^q n¬ ÷‘ûNbcÕܾc4ŸtæFM7ä¾|¨`Òm¼¤f´¢ª­TBw¥žü$xdÒ•£#L 7PÿÖ ¡8PŸE=dñGù~ñ³l1Qß3™jüë æ>ê’ÀÍADV›»"H»‘€º²L.ýSŸ©ÚrÀ޹š#º{;â ÅàÓGÿ¸/+ðݡ5´mT +Vj/!C툱mcÛc*Œ½š$é!÷¿å3»÷UgÿÉ}l泯,“ÜÅBÀ‘^åÅ<ð:ú\rÕ{¸êüŽåˆÎó¨MšøÔ¦xþ‡ÿ¤¤7ÙZË÷£¢$ŸÀ)‹ßÞì‘‹³”SDOý¢s>³Âæ F§eѺ‹üA»D«>)qö5Äø_˳ëÀsL…o,G—+ÜÑ%K‹PL­ ?øIGꧬe|e§$WAŠ»ÂkóŸ˜æ s8 ecC¡þ–r ŸÁÿçÿŠæÃŽ_Ry¥ºèlìí9~ [] eºÌÛ³ìøI¿dÂe7$–)Àþš~eÁ| rÌ2t˜Gníq±çËÅñ!5Ä¢Dƒvcw|Ó!-3cx×ü»}F†éÊ’J¶Õ’5ï(Wö‘·ïø>çßýIBMÖg´•zS·Ë{+›©Sb±ÿø¬@¿¾;àõ/;~Æc•Újjö5󻆢ã¼Ç·"ü­ÀR—É"³rzÞÒ}•‚/>ê`4ï­ò½~í®ÔÊ -X] ¥mÞVtª¾Usžÿ;=R–>gÅÈÿÙü_s0ÿ9jþ sHç™uT¼õXò«¼ú¼Fô_¥ë«Ï¿ý·#Ó¿Hc¼œàe€5U\\^¼$y)åE—Í×¥ò¥x‡ID›ÈK5/5¼Ôò2™—:^¦ñRÿ8ƒF!ú~Qyß ‰»¼VógTÿùÿtõŸ`lï$÷ŸqW_ÄMžX3ËXKÿZ¢vû õÈÓW„ hqöþ¡È‡¤ö^Ó‘ðA²=Cn¼&wý5Fn- ÏÕ“^Šé_Mˆ³Ž((òZõà"£‘¡t°"¥¯¨›5]Ñ”«îö^óö˜Z’rWó§éRÿ’Ôºô”/mþ*öz„.ók:5_úü²j» £Žêðç_!ÖÜã 7¥žN—lþo-­Gsì9°•Œ»’cntÃebd&ò\¢ÄÓõ˜¹5ý\Š|ôßeØ”I¨+‹ÉïºÕîrÇ>Š8êªi»·‹öŸw ˆïf(«êoÂ]–Q¿‹Ñ•¿¬5X@‰$N*e‚•/0O}lÌh ÑÜõ2®Òé.UFZW2^Q¾è 6ÝkLãçLSaÀßÕõ˜ÓG¦Ëÿ3ð¿õT–ÌÄŸWÏRÿçJ&^&á•ϬaèáYf`Æ­‘WÔ´HWåòÎZƬOæüÑ— é@ÌkG§ðÆÛ…e¶’ +m´…¦FL‡L6䩿FO¸L)sn°Ô®¸íÔ /"=µR~W—q|Ç8†šK‡­.éýB(ÔäG1Ü£RÉÊ»# ´=×ó=bÞ.g“Úcxzw€TÅHf¤¿™.ð Ös¤–öoœ6§ÞàºDFk¿ âY1•Üß H¤¢²ÉsSOè@Ôi¨T1´”ÎOo?) }¥|b–ù/‘YnJˆbýE6ê²)BC›í†É aÀÄuØÑš vÐ@h`…Ùœ¥ÀÉ{«-#£œÁÜ™m™â0|Ë!µžŸŸ©«Go=º½öÎê5,†"­žyAòH+«›l.ßšjÝšVŸN²uy`‹L6Óv'ü WÎþÜ}¨ÅWŠï_¼û]ØùJ²uÿ\ýt<÷‹šÁA4ÇR°jÂb„ª?×I(íõÂ>u@­ÒtxÁÆØ9oç>½×c¹n)˜¼«…jŽ‘-Àq¬ž›x‘»® ¸ÈOÆä×äÒ«þÊN*ªt^É}z@'Üá¶_Ê%ž¥ ¿×$ÐT=Ú YÞ«Åx‰‰ßµåfk…´ç}Ôó èç&1nScû³-¢¶Q´Æ3`¸xªî==æÎ9µæ%ìý-}o‹ÖÇ‚¦…si·2+„ÂÐÜ'ͽ Í€nòA:ewP ‰û ã7÷ zA»­¹AÌ‹Î&è'V¶=$²íŽç e[›ÎJÑŽʲ¹ÖþÒN,lŸRKnüïEŒ]œ¸"׺ʵ6#×îùŽbÓÿ›·kŽê:ï{w%¬ UWÆÂU²½c‹hI(clË­Æ•u†¤L7ÔUÏTãÚyâfDJgư²uÙ]#OÖSp¶ îÐ)ŽwiU#À`À€1Ø$Bö@|y„Ê6ÃS–z~ßïœ{ï !;6é;g÷î½çžÇw¾ïw¾×á¶FííBÔ“ÅX`VÊæ®ÈKÝKß·îÉž”‘x°]ó¨ @È1‰gv"/¦ú²òâU»ÏÞawO½lrú„C_þmT-<÷q;ݸy™¥Óüœ”ý't ¨EUùaK˜³2KÖ…Ùúè–‚ |"Yzt\Y^˜-|cfë «ðú–‘ŽWÇ…zøH¤=Ÿ‘Àwë´¦òLЮ÷ž<ÒE0´“•㩼%‰’|È[Ÿ9÷Έ Ãv¡ª_!"9op­%ñIAÅ^ôá¡SàP¯ˆœˆ‹S¯­A}ó*‰Bü}Áæôù^þ¦„—MZ»RžMðtf›/Óxò]tÁ’øXpœ]©e1pœ¤œEaïHPÞx°Ø]•!ˆ_ðÕ #NUA'&¢÷&Wz(.1¢… ”ØØ˜Áé:$ºŸÖ Yñ¸êž¢±äÈ ” BÇ¢¬Ðú}š ½!VU‚)·’)ãg‚‰%“5qXx.:îå—M»Ñ–‚3Ó$ß óFj£ªå—c­šF<¢Ô?K»‹½Ÿ&W¿Ò$èíÛŸºë[Çÿxh Ö`)µ3)~½cYrIÚ.‘°¡˜ÌÉUŸàMö{ú¶'»ÈuÜî5zÚz×B‚Åã­€†äxx—í CŸ SbA¢Ø:‰4nQtÂöäÍÿê´A³ýÜÈÊÂÂ7+ {Zæ|K޶±ÝBŠ–nRv¸pèhI„såR¬1Gÿµ{½Õr[UKà¢nì§ €bðyaó)$Rý?õ/܃¤ýNH 8É™(ZÅc´Š a*}v¢ â[2ˆjσ–À$º•ËÀàØ“é] œš½µ2#Œ¬=ŒÈÎxâ~X8j6<…P0\FóÒÎ$¥+’L7Õ$‡@&h§hîš?Á?ñgîÖþíø3²¹lâíËþ¢'däo­$'í`¾¨‘¬.I@ƒNEÞHÆ ÑñyR*Ü}¥X­!ù'árm*e‰‹ü©Í×Ò›Kºßu÷ÃHãµÿò¥!µØê=vð0 ’3ž¡}êÅAÜŠ Lý™¼TT³8íCrŸ‰Öš#ÑfïæTºÍ„=i4éÆ@ÿ„[‡Ø Èn wÙæ)Qö^=ù:¶Ò~‡P %ôÛÖ›bGÞˆ‹”[zi8Ò¼%0 æÆØZ:«Íó¸m•šÃ1)•ó÷÷Qošo¶f2´4òÄ‚רí\YyeXg²b¼]E0`‚´ÊuÝÎÄû¥Í匟…ÑD5s.š©Èf’ÝÛý~q÷e¤“Ã_ÛIùëÌMöçï]Y>‰ñK-AfynÍÛ³¸v®95t«O=µù+AºW÷˺N’°±x.SQ®>Qõ™nã,ÖÙÑY6²†‰¾sn´ÆY–Ù[ÀPigå®aØs[h!0:Ã<ÃU”-ÂÁÞqÿí ÞÍð~uûC­mÆô9óPT±ÕuCƒ!ªÊ‰¨ «nɸқ$>.Ðîúáöù·xà ZVKL»î¸7(&&“mkŸ¿æxt±y•ùפž ¤ŠJ¦¨A}[½°‡6j—\lÛ#¯C™iµD˜?|þÿnÒ:Ðgag(ÖÍS¿ÔÅa™hqŸàÉ5ä %ü¯”EyŸ¬vž‡R¡~m–¶Ec¼a:‹*Õ,jYÌf1—E=‹OôÉD¢y˜ÈU“-h…\Ïý¢‘¨£(«'ê(¥9äÅêÊŠ4áòÞ™èb[ª…ìÁðVŸrõ‰ªO…úÄÔgºúT9Rbõ›©)®7ªM|72²æ¸etÂæÖZìbù´ÝÖª¼ÛD$B´B4ï½Ê¬<{$øV¦Ë  ¤jÈ>ìüô+ ˜Þ«ÖüüÿÖ[#lƒÑ±.æÞ[oæÐZ­Ôvh~ü7Ã}1Üt´(êLbCY[´KÝJ÷=dMѺÚ@X\ž ` /Pm]ÅÊ‹CbW܆w¼ð‰o+´óyË;]Ü ‚À°ŸÇíŠ?=M×ó–Ù¼Œ·íyo4cïQõ2ï6XGöǧ°²>V\5ïc3²/ÕR͈bZäeÆì[Ë ½ULAÅë1¨ë¼AÅëí 6²¢uf– åLû!]n¾†]íŒ]¬š,ÃûW@i3¬‹;ŒÓaØVZp-þï7˰Šåàw ¾qXíÍê!qõ袧ŒXÚþäàFMW­‚¼?ÖÈýÔ«ßû=ýfé7š…~·{ýÆëLÂÒ.ÈL4Ðâ.ÕNiåU™ü<€Í>ðí6 –YLuŒÖÎ‰ÆæžÀ2o I3y˼IïëþmÈÌxP£[3Û¨ &d`AÕëóCŸk¶ï/–^ã½#f´øç­å\K¹„ $XÌå.Ó’áæJ»õö„BØë9T·.zÔÌá›ö)ë-lœ—ÉÆù¡!š:E s¦bããþ:²þÛÄ)§x!§ø¤Â58Åðï§yY$önìeV&§ QXiÑ` Îû…ØáX’š¤®Õª±ažEU†¼´9a4ÔR«PKm´º]h)S œŽå¦€ð.6ë­º¤yìBƒÇB&#Æ!#Åèà`@l ù2¹DÅêÊÒþZ!¹\š*:J£aEªh¿ÅRlŽúZ GØa½¬ù£L1­rõ£»A½êd½š ŠÄ¾Û{G€smÏx½ÃÎý)6õ>$Õ`–´Þá<{Ç Dcéic 1¦Ëˆ]«gÒMý§Ê ˆNÚ¶5[&÷0t6Í–qr†·ìcq€Öž£ãe’zxñ(‹~'X8,X\bxNŠÅ,JY”³ˆ²¨`1Å,5,êXÌa1Åc,ž`ÑÈ¢é9k]Ü59§n¯7ŽØ~2]º~TNkºÓ¨ÅpN iDæÜõ—&B*íG÷cQgÿfh­H;UÑŽƒW–ëy6ð]x÷ ’žŠöoXзV‘”ôšûjØÚ}uŠÝ‹:„R2¤”zñ ókznà ÖX¼YH¤)Zâ,¨Ô´¡§q¯ý[°RÜ£.ií§Æ}yñsƒãÏ +ia‘|NBžIF[9´iþ·‚Å*kX¬cÑÆ¢“Å6{X`q”Å ¦«¨Š:MðÞŽ—( âlùº•ÃV2d+d+ [É­hP=7—*aSªú(z–is±/iTÌ./º©PK"WpÈzÅ<꣥ ðX×g©):kÓ¸Årsõ¦oð©Z[¯·´¤¿vš‡Äs1FŸNÓH_ëÌ“%Íà ¬azZí«˜^Õ$auÑTQé$ÃþâSä[MŠ~êëœTQšë‘tCA<-ðÛ¯«|©¯s»Æ.5²KÒ%Å7…M—š¢u›„SÂiª):Wý;¯ã+$óÇl—óóO jzó°–‹j¿Dƒ¸BbǸ.¨-Ýòj áÉ ý~í/%¦NRR蘺âTþª)²O/wÁGÐtMûB›`»u¡Túªø¿sAíôFl‚‘—}`Ä Œl |™œºQ˜D-f1F•›ƒ|Œ}=%Ò9ΈãjçžAŸrg'­Šbz+ò‡ÙÆœ ꬖÚÓÔÞå‹6Йk´^IzåÔæ*P†i¼ÜXšúæ `Åà ƒcÈX¥>¾.ιªPó„ ?Ê}JÖµ=¹¾€!ÏhÞ@½ÿнŠÑYð‰}Ü>l¼v³rÝ–]xÌróÇ¥¢ÁzÂ@lü0¨ÿ0EUöû¼LÓŸº[Gváào›öÿÒ6jÞ¢…Æ’o¶Æœ¿¹êOÃ@ÅWŒ‡M/¤ÿ®V&å§>=ÝrOd’°Ë'Ú¤zº4\¼ªvê°Kê·Ò[=QŸŒ¼Qö}1í³>µ³Éêcà©I Â}§"ñw ¤‹R6«©üÕSþÔoF õ-Ýna­¦òÏOÒ:¸™Î$ñÀ‰©Á‡õ~q!Pͳ¶Ã… )W%gDC·Ù³G·Š¿©÷¼$ «.”…ïŒ[?¦JnGiŽJîgK·Î Ÿ,~öš2!”óÛ»aRBF#ZP+‚¹•:ÿœ[›Fq1Ñü8еì¹B¾]„|­‡“wRÖÛ½#³ºUùmˆNüö Z;=SdíÔá<Éü3Ó8äNÍt!gúõ‡E)wÓH¥Üb*ådÈߤF¬…EÚ8öŸp±7÷ØÉ4Ugu• ÊËઓHfŧ¡“:¯ÎÊžaŸ¦‡úŽÐô¡®¦‘Q®¦ï˨ù<¥O[à‹¨ø¼KÅ÷Ù ¾?§ÞT†··ûý`j¦ø3íM}gP6 òúª(“7’R½×o¾"ËþN‰2ѧÙÔ»Wá3–NøÌû~ Ò ¿/ªï›u%0†¾Ïhøà¥ç1Q•’¶æªýÎYâ4ÿ™j?´œj¿óÜß µßùàQû=p9pÔ~.pgµÉ‚›2¢3X*)ž–•úÆF xÕ¯üߨŽÕ…=54Š] Å.,²‹§.ÆÐ2<9/JªC~ð’ðÅÅ=­ÇF¹ØÂ"É¢•ÊB܉¡À8a›ÓÝó§Ëù¯^Áˆ¹xªÁçùV_èE^¤i³˜Öµèa¸ÊáÊnû8ïþßkwEÖVIœ‰”§T“PŸÝë½'ÁWØŒ¤S õ.&A¾=õrXº-ƒ vžßuVßÿ§gèï$í|Ði¬å*š“¥H'Q¢`ï¤7תgŸ9þ¿hŽwžÚ3Æzv«díT´ñ¼çßæ(’U^3MXUÈ&8w‹„\åÔ{ŸÓdÇÊb–uOqL!õø…$ÅACýøYþÚPÿÙ æ]íªÉõc^|”DâbøYþ Ÿ*Ô¨F½b‚<¶‚£Ì¤È0ÿòâl¡ .*¶‚_2 ‰tÖPæþ›®‡ˆß}IHHõð[Ã:$gÂÕ¾i=n†ßR[¡—_Àùuáò®6 Ë,ÃÂçÙ#6<²÷ySÙ:Ìy Á ôVCƒÔ"©X³¬ «×3‰ãƒPˆ•á8PÈ•Ô¡éŒø® Æ¥î.ˆXrë(Oã±A÷1ñ’ÑÝÎwoÍ Â@XüLÃkà¨òÀ^£Q½Oß}\x##V» qä1¥½{qªêó|zwh/ÞÄ·öØñì $g8uœvPæã¢É ~W&$û5—™q³ýô׃ß«M`R˜K_cØû[¾Æ0Æ~_Ð8ï#Àh –Ÿ2ù…$Ïöh0w˜Aã¼Ù[ýnƒâØš‘À}í!:ªËR*ü+q¡E)Úü·5õsñ7­çi6jÉ[;SóÎêôƲ—+Ÿ/'Ûø´³žç³t5]ö…è. Гæôx.›ªŽ&ŽÀ¿'±ʳ'8"”aÀ­Ú0hð¯®]'–‡wĦ FŠ= ÈâFïôczX1SsÌ!Úãò(|{&aHJÜò¼ÆšÉÊr²ÔήÐ#iã} zmÊΠfI81uêû=Ìþ…Zi…‰_Ø¿ §Â+ô‰tìßÛ¾þÅcOHØaì‰ÞkúÇÊéߺ†Š¸Ù®éßžI0@ÐÍ9­3Zo6IéX7h3wŸœ†¡@Zf™o ƒñ^Ü+äQ]£Q}8ë¿*z\AC’Žólw€¨?L±tK¹Ío m~ƒ>-mZÚgbZ¸+;¸PÖWÏ•kl«m9p -e†Ç[Æao€=)p¶ýõU7}ÃyÑœÁÇØO†˜ëÑtÄ–,¨Œk yá€8Õ$Ñ)…ž8ó2M+‹æˆÛö<×mÛ¾T™/®ÜEâÊ-‰¬]¡‰âÊ=Aô1mä``ÉÇ_d7+ó¥¢¢yîC•Žð?díµ$»„±`”0n<2 ZðS<:HŽƒžsÆÎ ôDnÓqžêfådyëLy+rX|¢þ@$Ž>ÎHJ‰Ê8cº:%r«ûCuÓ%éÃÏ6éM”°3SwGÖ¶>±ÏU22,²vÀ²/†:êÕš)½q™Ÿ4jœ¬,NªÆ»¬wäñ—‘»„¸dx€dˆ9£: I¨§nH¢¸HDÖIN<(!À¢{ísÇòû¡·ºhd˜2ó±ôÙö¸§Û=ÖcÌÊDj“uŒŒ.•” §¹–&'œ†jÈéi¸‚÷@6r¿=íÅmøC$\¬²ÜÙV[kyyG0¶H¢ñšï|â¹î¡¿Ø ©1Æ+Ì‚ž*û7XÑ‚o°Ú­¾Ôß…÷uPö&™è6 i½å€W¯^³ewYB:`º^òÃ×X~f$×o&ïé2ž´YŠ2d#)üO‰)èÁ^Ø+ÛNﱨ œSgvð¬|½®“äÓÙKF‹N£®L'ißEyÀSØ[§½,Îà¾íÖ^3Éq™ä£ß8–q§[Âêž9¦óÓäî½j,CS5œ pˆ£¡Fƒ !Èm‚™‘ k-?Aºø“£}Ýùø:—ÿ¯#ÿ‘=fBïȉo±ùâF5tãç9EåçZ0ô‰ =÷]>B*Cš ùi6VæýÁ»¿p|C´.L£OX@†Óø}“fûÙ´> +ß©ú¹ÍÂ`€øïÕïÏ,@L÷‘O—C-Úr6o\ `Œæ0רì|L?Ke ™Df1³‘Ȭz‰n¡ÀHÊyဉ¤ìZ"G;tq§ZjLã ÛÔ[b9á1& R6Z*U<׫*Ô;ˆEKSt@Q÷—¹ùºÔoçÕÿ¸2ì™-ÂÆèÕit¼ÅZÝ‹„*l£kìÃoŸ±O72UTSf,·Óù­B¬Ì%×µ2‹YÌèOÄ…ØX^«]aF¿´Ý˜é¼0f:ÕÔF ¶[rÌØ’g®*“ŠjQ«n‘ñô‹ñ´\‹ñõ¬x´×G«œÕÇåaLó(€¢p}ÑU¸u368Ǩ6’SÎô>Ûê²O1¶Dâ4õ„[RKDOèžlæ³ôº¾L®¾LŽƒÖê¦Rgüñ[oÜìøÙ¬ÍA*?Ip€8Ü'”*¤á™êýv¬‘q=[¯;ýÉfúô`›¤p­Ô£b^8ÁÙ芩kMGÀõiÍªï©Øß®ˆoe?QMhï M·F}O«/Ý'ƒšÌ­3ðÒèú‹[,7Ñ\)’nä‘Ð+ZÄFk¡³l9¶‡ê;jˆ‹¶4Ì_RM}´:Å+êk¢ÚŽB=XÆBî7lˆAø\Ñû´¿,ø ð€t§é˜Ÿ •ÅóM2V ¯ß]Ãó“(mY!ßQXþ®Ñ14£µÎ¸mŠ©vNµ9¾5å5''hÀßœUnsÌš2ËI·Ê]O×mœ/´#Åw\G ¦èó4íþ…µh¡V6ã\Æ XäzeÊÁ8d™æ÷ç]>è³ïHÎÊùE®—åëñ'6zùˆ t=”¡YѺ^ø£Ü]Pׯí…$F•½Ÿä‰]¾»xØøvmô¼ ÒÑmåâN{Xì£óg—vþ,0Róy‚çä¸È¹u|óº %G¤  9s¦!^ç ´uÈÛSߌ$âáÓìÉ ÊñQ%i;6ÍV œ§7u‹$CÌ#HÈ£• 5¦&:€°÷ߎ bdß+ñÁë¡¡ýo`œË zЗ¦òë'›8—9“oxœKk¯4b…†¿þ—1ê?¾lý~q.©ë:q.w£ªåYyÞ˜q.«ˆ‘GƹDƒAµGûz2º°`b‰™ä5a™da¢{‘À÷ÿ¨ûþøªª+ß{soä&ÞxãkòÄ6Ô ·Ê5¡O+´¤ˆ‰‚FÁN:µ-ÓÇgÊk¡¥S­¡µS$Ð$ÅÓs¯äõMS‡Tæ 3/mè¼ E˜ð3üò+ b‡¶'*"ò3š·¿ßµ÷977Ô©óùÌɹçœ}öµ×Z{íµÖ^ öõk†zYBû:¡× .¡Â#$—ð2éÜ%4p,UÞ®—Ë©ÌÑêάKòUáZ¾Ù¼êªº“>(¾'n–ËD¹”Ê¥\.•r©’ËL¹Ì–Ëœ%yc wôÎÓÇ|8}᳜ëFù1© P"&µ…áÿqÞ6FWñ6³·utRÆðÐ~<"ã–Kø‡Ø&CÌUw/\¡7G86~¥ø@f¿KdBóAqorMÜj>< GúüÜ•uæá+ÝWÊÇaW&«Z}app ÏçµE±Œ&xâF·Eÿ"QË-n ÿ¢%Œ7^2›Ö ð ðXîÊw¸7¥ØÞ‘dž$G~TÂMt%ù ß)€_“1RŽMæºlh/mhÜ5ÑÙvhM賞âÂT·k38x-ŠŽÈvIUŠl0©|D:áâÅúÄþ±Ä†M4qÜ–û©§Õž3<±¦çþ9ï5Œ®y¼˜ÀpôÜlÅÐ×úŽ…Óõ‰tºvsùå\k¿Õm,:ÖA5ˆ¿¶ƒ}IOuAJ‚eK/D(ä,83¨w¦)@1‘˜jyq"“°éNLí猴ËiÀæ«?Lä3ZQ^ÔøF8ÏPãGY—-]Õž†ÌyAÀ…èÈ 2'¬v‹/du&ë$Ÿåa5G'8GÇn WÐéJ.As=o&ÿ× ×’=&¾ Ó?:D•˜ÏG3mè É´¤T·àI£Ø¨ÄDÏû¹?eî—N¢u'Ûeî5GWj÷ÚÒÖ³’îH]¡X‹˜Âsk@Ç9èu½PO¨¹ÔP<ˆØh¨áTI0ÓÓÝ'&Ù¥Ò0£Á»Ýtw× ÖsÑVI²ú˶„^F¯;ýçô±=›Š×̲ŠNý癣ØÎ¬dÝ5|­»ì_{(ÎЛFðCšãÎÉ3ÉÌEJ„ÕãÈ:>·£PDËõU¶ÚäïñìÏ< o» •+cêo÷iþ‘¥‹.z@´Ú7„[tË'À"1€kšˆ÷Æ žþù2)I÷¿Â¯Ä̈!+!rÄ Í·0QëSÑÍ֔ܩg’‰0űƒ)Ì9îX8[/±ül‰ æÛ€ÄÞ®ÑÀMmªÁÖõ9ñøFÿxg*ÍϲZà¤ê;ž_±x#>š^³[çúêG¸¸oÓÜæÑ`ŽkdéD“ô ŽƒrµÂ¥¨…£‰,õÓn4Mí ¦Ž“­vÛzœa¤n‚èZÚ€ ™] i’™ê?5½†‘Ÿ?TÕšV ÉJ} NÿÚ'ÛFko옵ÿ.ðßx;^òf¤îVÕë»î­ù“-ƒ°öÝ©ë⌂Tu‹­ý^·X'ævPJP5MU¬µöÚ£ýàåO=¢ \»)toÍ©ýA‘9fçäÜWù]vàÇf _˜1üÀædch‘0döó…$Oû\; ©uÍÝÜ ÆåÕ2èŽ!¬f}*™wþ1`mõ_°%öw²nô6Ð2àVã?w¨-„§zmñÃ-jäkY˜;<ÒK6å¢{j|µëB÷Õü‹ž¬7ˤ ˜¢»Í ¼«K²'Ù¿,Ò„*â(ʶ5Ÿ—奤SÉ_Ê•\#~o)ºz8 òHpq?Ó"§Ó_‹ô¥BMÚ££œ§T­ÇËì{±]›U¿™jãù™Ö[Ç‹¬“ªúYµÇ3|9ˆ§ZbRÔghú´žQ8qÎ:©H±gxOÐøeò<4|ÿdüq¹ 7Q³÷òTŸ>',væx¹… ¤´•òã÷Ô¸¦æZMñR’n·PQZ}µ}‘øoµ ntƒ,wðÄæ)î “„wútŽ!â™o-$pZËZŠÌUÒ‰ß Û6ÝÝÙL„q,œ-ÏÀù©>ü]vU°@ñ›Õš û·%Åœ”ya*i›Å ¼=ƒvyqUW*`jG¦c¶NΠuÁŸB—öªü°öë®o˜û'6krŸä•ÊPÉqŽiYÄîÔÓ‹è@BoôOU+>‘®‰ cL㎀â¬Ïx|ôz4`×±Aäråw3W8Öù(X`†:Ü&$Ž$G¿¦Œ•šŠÀá×: Òš¼œÆßÔ›Xï{UG2Ü–Úƒù5Ût½mó’¢g¸"‘×é?YÌg­Bñj²èhÑŽYëæùcÕísEK«‘o5~iß³eµÇý‘¥·ŠŸµã3š#ǃVíÚ eàF‹Öû™È¿x"*¢}#U>`ìïW"[i“‰Ô^‚`–äF²¶ÒìïN@¿ ð}²¯F`³~Ÿ+!úUÜÚHøÏÿo:}ÇàvZ;€yšÎ Çý5+4NË(ñ«ï… & 6Ù;ìA˜2TI@ÿ-Ù¾†¾çÎ’ŠÖÕåsòtò‡@¡#ÉJ¾C£ÊûS.(Ÿ†ý.§0Ø­ÅÔ< É“É<Ó¿Š†L£Ù†ÄXè‘8šZnÆ%‘÷Œ%Êð*s:_Ëè>T…¨ží sþ¡Âœjzàb[ÂbË™“5™‚%µAç*WUÍe—mÜåXõ82‚³~ë´xœ øŒÇÁ€Œ”áÆ©ªM ß!¡Ët'Âßsõ™VùÿéÒi²03ÛA¡j¦p¦–D2? d¦ÙÀ:0|©üÃÖ¯xZXÒ8.yQÆÚÚ>v/ô‰œŽ±Þœü ;WžC̶ê›lï#–\¯K²ÐÎú%±É£YÔwp}ψ¬™˜9í\M(²¦8ós£!ÎqůÏÔ„¬Ó±Cç×[[ÖKrüh‹>f8X~\ˆ­òíW`X¤nï°|{s¦v¼dµ gOä—ªAZ¨‘5KäÛªpîR3x_Í”ïÐJdÕÕ‘U“0†’“óR‹Ûtæv ÉD*€¼Âv™Æ6iå„Þ\$fô› +8EëÜQ?0YþÎëgÕ€[+?sÖR¶zƒíþ6_´á#u>»™±Ë…ò,ù…C>‘rÈ òr7ý.$\*÷HmÿÌÚõ3/•?mDýQ~ûŒþ5§ôzè˜{Ô}Œp\&nž+SÿÄ™_®~&ò£×»¹A¬œ•ãT‘6õÏÊY­þ'2ŸGU(ÐΨ¸Sè%ÿÝçkF•L48µˆ—2×äcm»oá=ͣљœÂëâS÷PkÔˬnƒÿ؆HëqÿÎØÎHëùÀmèX³OýKÇ'¯ó'ýûØ9èŽjÉ>À^O+âåv« y²Öª¦w¨¦g4ÇQ<§qœiZ;™æcxk{É; xà¶j|=ʪðùø÷Þ§ä÷—üâu€u)1 ½Ã¡ ÜŒAY„aPõ¦ƒêG)Å¡É*™¨4cRü°ígöŽuž+POÄ@ Ö&:Â|Œä¹4’ß(M1E€Öò¦š”ïúǫ̂Ù2[%ˆIú0kÿØ ¿lOòfÀÚ­àÒŒ¦ šÕqÓ$ ÁvµiŒŒ´înŽrr¹½æI‚‘óS=½fëßÕ"ìÀ_µvŽÝ´ð‹ö¤•œˆÕîDp¢ü^æsÚVX}<Õbçcì`6šÄÈÑä26I8U“» Úƒý&r¢2^,ó ~mIJç„–RS¢„HþW,^/·±¿ýÒ诎ð=”J¸yî1þ⤿y©ôws<@úóEñ¶WÆÑ%耷Q¾Oê un»uþ…BÂæÇH{u22ë„TëHªÆh¬HuÇÂéͳX|Îõ½pÎÎ^Š^0ŒÀmS£’mè¥y€³Žai÷¾@&nT븤µ~¿uºy?8”B¯+Ñ¢—n¿—ôÚžF¯vN”ì¢PÀØFvQ(ì¢pvÑÐ<ÀñSÚocûã/Ã/BlÿèõCÛ‰ˆaØÅÔTvÑžÂ.ò ôá.º2óÙ ½éüSÕ|hÿ˜íñ9©ü}®‡üãÇ?¬|Œø9ŸcØH«¦ÅˆÓ)ç8‘ˆ×Zc‘bà·6Ý¿ð/íI@¬f ŒµŽÜÝÉགŸ{+,'v"ÒºÎΙGæâ·ŽqHˆlŠrÍD¦‚\Å[´Ö<}Ážt–Ó ä6†‘]œIìp.ZÚ3NZB±fÎEXµ´÷"-©A²% ´t[ZæµÔà6òšЃB¹fÎ4›zž¸!»— {eö ]“{å„„xŠ…Ù¦3û«ƒÙ 6[¼^Œ•Á>óžå‡9no*ÿÂÍsóÈ~ûÉŸ1.…umÃÛnŒ"g[fÛõ—~ùª‚Æg>‹‡ñ‡nòém}²GŽDñ\†ó‡ä+‡ñÇ=—ámä ÃùCŠ8Þ¹üE/!N\s(2Í½ÃØÁTRvå¸N€1<ׂúóW^ïI#Pû;0¶^Îʨ½Êž„™jø5µ£)¡öå#Q;&ÂÎCÌòÌrÒ ªÃÑçùÕºnÜÖ— Ÿ„iiÞã1—•.sY6Rs€»nnÅõÒň—ͽÀIÒJdÎÚ#!òk¸¥^„ö~v5õjÚë½8íY§]ûõ¡ß°üo0­çpçÓ¸r”»-«ñú¸áËEH€ÑðVKë¶9äXS…cÑ· Í2Àw®;³wZHNc*)~ ªT²ü«ã::&È×G¥º|½‚_“èÆeˆ€-Ñ*¾Ž“­RºÁ8‘S-L‘ްcöˆ¹x9DÞÛ.¼w¦@¯L| ¯iû›ƒL»·l¼8‘Éí¤_ò¶-ú)y»\¿(N†‰–èdüš Š£˜Ú¯¡›`u4ìøžõñ0BΊñZw 8ßp¨?¸>‘ß‚WØW»CT1Üqñm}Îüj%¾œl‘”ž›­~Ù‚ûöµõ¯.ŒY­½BeiNÉ Vç¨BŠÀj7ï­9cMÂWFaÕ‚I¯.üôÅ?4úíé‘ÖÍþ¬ä$Ð;å4c»úÝŒj±ÅXôr¶»&n—ó?xóÌ™Á ûÀMÍ1Ô ò|P¢)º,ˆ:o~gpNq[5` :ÏïLsÜ̺¸ã&κ8{Ô o­E¾ùjº"U·óðÐZè³™¿RC?Ñí²¹úlu–LDîóYÚWÓyâ ß8iVù}#†¿D+^h&v¤¦Çï¥bZŽ ù—Kq-ü´-zsŽÏœ×Q5L”"“åR&—©r™!—*¹Ì”Ël¹Ì“Kµ\hv#—ÇrˆýìK8êLïô1^Ÿ ³/ÉeíPˆã7çÿy?éO\çãü‰tR0³¬v¹‡ão~»@¶ 3y¥žIKR*¨¿Bø±Óƒ½2Z¬þn6Μ û‹ØRé ÅÒ³rgù¯Ø`ZÏú¥g'¼žžÒ=S:åvj|”Š&2 £â—l7‘¼Ôë2ƒ/C;ÉÎ]$~\î¯ÜügE"MTŽ39{ì|2»p†q@ì³"h‘³Äa↟ eqa8aŽ#Ž•ÄÈéÛÃ`¿„×è×±b²<ÍsnmK¨Ý:wž®þë×øÄ£TЩ0‹—hU®xXç÷ë7Gâ×¢ü1ËõF™˜5äü^§*=QJÛ”‡D¥uCÜà*ÈïQ§ù»3LJÓ¼f¨k‘||Ÿå¤E•zÊ=qÉÙG3û^§íïà[!–H…Ùœ o0Øc8~žûEþq{J’Ï>ˆÒoÈþD…ÿØ’ýÓ‹Ð]_òV¤õ°Â“‘Ö“³Ïe¢ŒÖcކCÝ&¯ÔÌæFÄ8X-«zjñ–-j^¨â®€î_œ H…–\î«yñ`oQ i'gxnÙVq¯Æ«޳¯LZ"â=}°:µ]$ÖÅL|8Õ:EÛo×AOBÂx)‚|ªà?Ç@ ÓhŒ–¢p{eæ§BO Š2‰S¢ÒÜÇCØm#ü0[i_'` !Ë3µÖ ]Ì‚„¾¢dKäYx°œY‹"ÕsŒ{e§q’ì6VœFúX˜z÷ªMû–Hë>k“¿=*Ö3ßåÇh£Â–Ò%Ç"¿€¿ŸÿL½4>7"{I/êÚÚ“þHÝ9.ƒj멾e"µÊ4˜lŠ>–Å’lQ!ŠíÉd™]Â,Ï7g`‹Äkf&Ë„§b¦ÂîLÑïžhåÂ3 cÑ‚ïÐ0=ªdz”¹Ñ©qOÉÐÑ#-—ŽÎž‹0…%‘gÄèL'Aý>ªD²bîH Y;ƒ‰ÂKP´Éç5°]q¾N$ÄÙïßi_;8?lV–儹”.é‹ü3ª`.½ð`.a·¥Z6²½ŽJ»–t/¼Â¹ýØà`ƒ&vÕE_2ø‘CqNÎ^ÁŒîdÁG@•ÍdV ççHƒÙ}ÿ*@tîP¹.(m¶U4”×pm&¯RŒ}Ší´^H?¯{p¸/YpU ‡œ8 2ÎÆêÇ+@Ü®l‰ŸëæŒ,×\^âDê#>:Z •À'CV H„En÷`LÄÏø„ âØõ´5W³ÈBw— —!zÁó»Ìòa펴ŒÄ>Ði‰{ü2ÑtŽŒòZíù–,¸š–ëœh÷-‘C]£@¤ClˆÃØT"œÐFu¯0cCžŒ±WÀªº§q¶w_dé÷x¾Zà ÐÈjPh2Á°W €¨¦iâŠ,]1àùÿyü°#Ã¥^|éó»öîišF–n?O#?Vgp¯ ƒs)a‹ž]ÄpþúºÔÙmDаúW#õŸ¹ŠMQØ §ôE…CIßü+úÿôdšW^ï­+ ‚òY¬<¿!äÎÛ•„%‚ž=‰¼Œá¤‘ô>¥ÅÅ…ƒ7£=ìÒ<‰{ë·ÒpXó4ƒauòM]4¬jXû>~Xk§èxV—-µ'ëä»}ÖþØhÏ,'ÖemR”†?%=o& J*üGî«ù}²' ;%ÍQ¿™Ì<¡$u·V ËÊM 6±šlcá7myl)Q“>Çè”Ìñ(‘º”¼fm”%]çgÅ÷É+¼¦;}¤ïáìd#*ù2ÙSá?<½¦Ç¢œ»:…‡jDË•}å—@[h}KºÅŃŮ؛àgä“[q‚cªh ØQ ×JöLÑõ[§ÓGi~4<ÈcÛÑ€1¶¹¥ŽJÈæøAp”½;E“NÕí¾ØIÃɰ¶‰6"iu¦X»õÝ%îá#j|­¦àb‡Ç…'?ú ´Kx£Nšû¦êUQ ‰uÞ…AÈcôf¦Á$Y,ȰÃEvÞ笼"+ü9[^äü„’q¹Cûn”iGEþՃ̧—j8 ywÐÍìË&û¬Ò›_ep³åuu†ñ⦠ÐÚ»k;ÞÕ‡²¹»A`Wë¤q*ÊUÓœëÍù.Z2…s5ZD¬ËrñQÕ€‹fú ¹Ùðu} vKèH_²'òãeJø¸ ê|QI8&ÌV¯_mІÂj¥š0+F"‰ªmt6+ÅEvø5Õ|a¶l˜qBX-&ŸüØ‹‰·kô@Ï 6/>ç`µ ˜U/©ÿü`j|Ž:Y–ëçøÝ¯Á÷ÜÑÚ4‰À¯PdB-“–7š h`ÁFÉØÅI<ŒÆš˜S0àmÉeñ¹²)ß«SQ¿ï¸ÏƒóÍÙDkL™Z*ãK7Û…5M”‰›(õµ ôH{l¶]zÞNµï“†$¹iÛä߉S ¨áxh9ºfñyö'?µ?Ç¿¦áCŠÝ¢ðo÷:€ŠOHçÐ×2f¶DAa‰"Cœ„«Éj®N ßa¬Ã:Áݺƒ¾¦ó0‡_Êcj±€Ì#Ð-Ì„–a¶Ö2$šd<3Z–Ð,¶ù•ZG>’þªs@z²9ÿ\ÊUÑ©Èɰš“òhÒ28?P¢`B²œÑŸ¸EL âWµ™h#Œ_UÀ‘Uª‘MÏ÷à˜®;2q2»‹y°{æûÙ/~N #ߌ<^†sÖrÚŠ¡pÚªBa§µõ‰¿v (‡{CÚp…½¨ NdÈ1T ”%ylÃn%äܰä<ÜÙP'æ¯pæ‹quŸœŒqËZ…›œ¼y€oÂòff6#(øÕihÕ"ÀŸç¡•V-†Vh ÁÈ!šm¨ÝpÒ‰$&´üóø',—_ŠѨ2F^ÔäÔš˜Ë ÂÓ»ÝÌØóěڄ~!Ú–ó™¿Þi£¦¬v;ÿ…½mT©ŽŽV…Û¤ðxëp‘h&¿C òz`Ńù(PîÆ…Ñ,p™˜2‚ 3‚ÍáK¹ò°ØŠŽ¸ÿ|ÀdtçágXÝhY¨€¤÷ª­`Jh ÕÀ¹˜d4¸QÉrné¢FkÔX˜¡”Cï!Œ²ï‰g¡¾˜ÎÒä¿ÒÔð8¯(ºonJ Ü9(}PÌ߯ZNqô¨˜ä »ÞwëDlr))H/Œéƒ"FÉþz~ð®{åD„3âiÊÔ·KŠh9^¤fE(x¼¡‚^ÂÙTű<5²%»f:«öÀ;žäM™u¹‘Y©9ä>ºN›j˜ý4ÈùCömÔ>˜AÐ7BöŽL§ƒ9c.×–¼i ÁºÔ–þ·˜ò3/vÖ–çC¿­¾?!ßXLxþ”  ­c±ó‘ÖÝ®^:çªx@à„ì(5H0ÂTMhãD*ZnôcB³ÛÕ¨šÐã²õÜäAw©aYi=ÿhñšÜȧ¨\µJå£úð1ô&Ü:@c»Gbl¢ác‡glZ.TW§ŠööÃO”8f:ÝÛ) #ë¤R\úíüBïxõçßûµü®fv^Ÿ™ çöýRÚEZÆÐ åq;\ÓíÚ¾™±Wâ”5‰½’ðË\oU,,ÕêQÑêñ ¿k—‚,3CÀ³BF« WÈôâ(b$~J ¶G/ ¢Âg‘Δ#vEçvÿ^Ø8Î Œ¬­‘ÖhØÅÆÑmIÒMp)6^'†e‚Ú‰a™}Þ/P+t£Mtž >(iš¦¨ÈÒÿ‡žÄªÙe) Š… @D9ðJˆrrþÀy#Š7èøn{FBº]Ú[0ÓûÔ»çS7´fz¿$^ ³eIMqaèœr¾¾Uì³¢¤¶$Í³ËžÔ ݧòCášæ–;îœr1wÕ‰¤ÕÚœ oïÖ|,Õ‡aAá+Ò|Ü•yDä\˜—.˜ÄYû÷aØ“âÃpÿ…3Fô_x]ùOõ_x0Ãõ_`ë®ÿ‚4¡Þžuý†û/ õ_8›æ¿pÖïû`þ þÿˆÿ¾~?þ èf hv´_Ñ€ÿýû/¬òüÖ»ÛbÆÇ1þ SÿB×ÿ”ùPü¢Cýžhþ³ø/üíùóžÿÂCCýúGð_8áÅd¿¤ÿ©÷í¿€jšÿÂÔ¡þ ]ÂF»%c`·äG:%,ü„´wJüúÅA´.í¿€ñ_øfºÿÂ)ÿÿ€Tœ«7z…™*+L—ö_è.¼^+{Ö»þ ²Âxø ·=Ù×ÔA]d UQwn‰¿WÌaÐUõŠfó¨tc¸§Y•ùu7èSùʯñêuPô¡e ­_ªŠV&òÏÊ¡`y¹Òm$_½ÔaC*’±¡zIh™ªŒNU׿H•º™éüÓÔ ïöý™ý4¢7?Ü/í§1ð!ùiìü»!\èx3ôÁãÓ0›rÃÎA„ˆtÇ%õÏ<­p³h^ƒðÊ û$+Ò_}ã< EÔ=ðAýZüó¢asæ2­ÚÞ‹EX«D;k;¯’Ì«o¼EÒk䬔_ŪÎv9|«êð4}µ}uÇv$:œÎ`0Êõgøæ¥Óº¿F%ëõ}) ’ëQÑzi}´šZf‘Mý€fõž+CŸve`h¼ryî1 1OãjqJç3L竽Î?Ÿ+‹ÝQh¯Œ5te¨Ž–9+auÃ,¬ï¤ZXç`a…}èÛW?õÈû±¯Ué¾ÿðöç´ç+€y\^¯ôfçâøÜŽ['æÆv|o†›S½&¦z3LNõf(ýOðf¸Ñx3œºñÃófXþýÛ¡l¼ñf˜<þÏäÍpa¾ï¿²7Cé|ßå½¾5­}pBÛ\}qBkNi_-ò®£=(Ÿ-=znp01d5ÔK >` ©+KdŒÜ,wlVüýúÀš-^ra§ãoèVP¿þˆ+ íASª_˜>¿ˆô‹”ƒó <Œ³ÕK 61}Ë!AÔî,zi²§õ†=άä9ïÈ¥_.'äü7‰AíxÃ)¡id±)VÍbZ­ù‹éóè Âl™‰ÞtËßy†l¦Cº¶^úÛ%cïsëNý³¾2r TºôøKM~ßðø% 9¢%’Ìù}Æ(m¦Ÿ5$ÿ’OøÇ<¿g³_'ÍüAw ƒÙÏ¥OËš-ÐÎTL¯9õ§­I'uEf`äh‘Mhþ Ÿ€h²…°ùDCjÑtžû­Â¸­=çŸÿTjG¬·\÷Kb`ÊÛ}þÃÂM6±;èŸIanºdÜ ÚgʈVP“U˜Án™,³?Í4”-(tµi¶Taº%½¬=ëŸÿ¸­÷·Åø‡8!³ãYúojïI‘)½V[Ktím¨EùzBf¡P6'u¢²Æ6ÜOJ¿%Ô»ö„¶ºÁ é&éÙ²5vàvíc¢mÈØñ¿*CÉ)ÆÍd£µ×Ú{C!Ý‚Úè#cø¶ö âäQ¼,¦4ˆ#N½¥Î­“°å©³ËW Fý?2—÷« W\¶ÂßM>¦ÂŸ ©°z.JEÕ‡!Ñäƒ ÊRŸzêìÿíix|#£äìV4㘃u[îÖF>ên\„émò&’áTœ¨tN†.™Žøçe:PA™1ó²Êv]¥Žš¿ÇTÉsTëb=ú ˆ-qõ'¥$=ÝuPIkŸµÝÚÉÉ™,“£#Î>-‹fÙPÚCYv4oeÂNy~`s¢¸ääG†àôý°&]¶Â;¤Â–‘*üãR+¬¾ ÓóY1µbPÀË™žw%Ú¼±/ï€Ø@賤¥ªŒ“·êô w¨\DW«Ê_ÄÒH¢RÄËX4.k)}‰ñhDËs,µ‡®á8cf¶¹ë}žª®Å%Lq‘2lÑ·ÂRf™tm…̾(éŠÔ}KÈ£…4øíŽ0láø½K« ÅíWGuG§- ÿiÈë1¹4¢(; ¡‹çSéd]kc MºÐXš+ü`‘ºc¨©[ëø(† c|‡jK:½ÊÖ[ùD‡´ÖMÄ&ލðk´¸¥+85Š£W%kU-:2iŸT0qPMÞƒ2¥¥”Þµp’-6 õލ¶#hí÷o²u›w@mSg× o”_:¤ÑÝv‘¥[Þâ£ça? [nìô6ýQ?ºG>jñ&ívϧn½.ºžEÞaÑzrq§zÈQï÷-ú\÷‹aÍ¿5?·’µÔŽ»˜sSùÉênzÍjý«]‡˜!øänýiͶ û/áTçïI‹ŽÊoô» ¶^ ­µn(¶±[ôä­"àl‘U¬ÊôÝtK¨d]¤Ÿ>Ÿ)߃*×÷c¾Ÿû“»ºèÅÅ6©F4} Ÿ½<Þ'ò > ·ú$î?0²ÚcINV 4dÆç¯g!çëÍ3ÿ:¸!Úð‹/d ®¢&gÜ¿ž”ø‹Èb:_¥yâÜW|#ð¿9¸(äïJ<ÖgVȦ†[-Zg>×%ÕOï3Ÿ‰(MÎÏ/0 Äxß… éÖ3»Ç´$®98]"'x“„î1ù,Ãαe~Úá?`6».Üì”Ä&)ÌŒKÖ`f7$A¼ÂóÓpy­‰€\ ëþó˜Lîñ Ø£ÛG†\çöaþ5ð~kIþçøJúkþ€æåÂ`ƒ‘o¶¤ÈÖÉ¡L\hTg\$ww^¸Î: ±/¨×ŒD>!YåiAÂβð iX±I] Ój¬ ¸Ø=$]LäŽ[wŸG×8Âm¼ Y +5?K8~t8>×zZÛ×ÊŒÎÞQzùš»™ ìR;€rmâÇ[—mo0ñ3‚·Š[ϰ³ªû‚a.‘U¡Èª|ß®H=°oufiâð•Ö @A%)v¬Isr:\ïaQ×0:|õAÁÅèðç¿~ø´h|êHŧßì¼0BXïe}—Šï-n²Š†4/·²õÙ_.U³X'På ‹åK˜Ñ†`­rÕ¹âdtgzj;Ö¦Î?õr¬×>ûf°òŒbôÎßgøß±µü6o|?t}x{ ãàl¡º;óNý+ÕðŸED¢ÐÖEgÜbµg|\ÉI5×Z'¿ý 2¡ì»Ó,¹7ß~OÍOçjÿ!’«ß¤Wò2Ó}‘ ¦iI"²´xÐï™hÚ‹û_Ê 7T7¸·Ý$Œ <ú QYÎ}TEgKðÿòè¼çƒòbV@½T×9ÖéøhŸ{­ÞÕvæòa@}ií ´Hµ8Áfîê´Vôû×ÕnÊe ó×mÔ33ÿï÷WKΙ}Ö~­½ÖÚkï½öZQƒGœ5©åLí´x¦7} KÞ¶#=mäp /€¯³Àhî:Œµh#Å—¿¸ü²hr¢_þ.N B4š|ÎÍ0“ l’)Ì-aùû·•Œ*¶uE<ÍÂx¦‹ÎB~˜³€9ËÒßph17n6Qotv5eMËn¦DŸÝæ?6…½•þ†–aãI<ÏÍnÆ –b¨5’oÆK6QR®¥†\hþÁšBÉ íæp ÛMÓ0ƒKDØ´õyîWßø¼½2Í˽'C»×iu-Öâ>)©G¦H=7ᔃóWjåÚ__bˆe°À €·™TZQ¸©´K„ý·bA½ˆXÑŒJÄU¡ *‡ƒ¨l?eÙ¿äØ¤•ÃLyÝñQ]lç¥Ës®ÍÓÍY~Ç8k¡'ÚSÚõi9‘š~:š#•{99lý´5.}ÿ7]ûFýšð{Á¸B°U$–ûôÏ1^—š3ÏHR~É!@ï©9¡Œ²­b†¾ØÝ ún/šQ™Êç6¼Mš‡û#mÞ [AZÐ~Ž»ø\?Œz\^ÑÏÙ ½ß Èž9~¤%DpóÙB¦3Ü©|.•f>†|Ö%ɘ¾ÍN~<Ï~¼ÈýbVäÇA~¼Ét‹ægäÈׯÆèHÕ¦E“"|Ç”‡Â@щQû*Ò¤C:k.ÏR¤w–ÿöj˜I»“eÍ”.ÈÈk=5¾÷í yxB” M÷³<–â*ü½ÞCbƒn’2¶\ê,ØöˆØ„g-ÓÚÞõås‚KÄé,"(•øÒD&$Ñ”|PLÖÄ%(>Hi™DfÖ]V* Y¼^LFß'„¥i§KÞPGc’Ý©q¡ƒ§·²È¡O;°ƒ|ÉOÈ.ì ‹¬³ó0û-ÄK ¨žðaÍ)Âû©$îß“öI/‰ùÊõ0cãa+ì>>ðЉ»þ+UÂA"‹õIL)ñv¡O<!lÔƒ}2Ý|_KCúRœ~ÌÂ&:^ý@“Û¡¿V††n„)\ eÒ`Iè™ÂµC?Šø“¥;ûÞŸß÷a+ÑÄÓæ.oøóYc îaQ|Z›œ8Y=£Ø]-xÖ–Éä…š-ôl>11xí€[òÓâÓK¡5<!–ç™÷Oè>ÆÀõ'ûË1œ@œx¡Í"xtÞƒp¤p1n‰QDÒ®lµ eÑ.£Ÿ[Žõ»™}ûøÁk"^4²'ØFv¼ÚHk[4CàYß?ÌîQ `.AÃWt, ÙÓ¬þ™qTÀÁÑ@ªõ¾qöIø=¹5tø…ˆ‡Þ•èÔ{ßûÎü…ú<­ÑxTŠ_ùÇ6²C|D‚ÌŹùAMrQ 4Ê¦íØæˆ¸<ÌGž1hY$>u>v1ÿ±šˆ#HRÔà-)Õßjpo`K)fþC°~dXaÞó[æ¹õĬû<—¤æï`|‰j‹zõì?‚2´#HJÙ¶WÃ/Õߢ÷ìDLÇ- …L°örH,7È?3âdÀk öë}žxÚýz‡ô¹¾´©AC70 edø"_ãµCiãâךÈp¯„×j­šoJhÉ>« ´ó믬lö÷´ëiJ]ÂöïŽ~²¸ÿ«½>¾IH*Ó‘ t’0$n‡$©¡½iRS·½ Ä2šž§$|M³œ[b¡Me4MgCñÆœ5šAbe{À­Ô—Þ!¤rk„¨\ÃÚÄ ‡,†[ŸÖZ‹ÔRÿ=ƒ“ AÁø|fU-г_o%â†FXÔ6%㇋)ÒíX¡|k)GÜú!KQhãàäHk¹ºŸÊËxÜĜư>ó¿¦ q1ý´áUîú;ÛwO·z Bã ÉI7ÝX®'Œ¶Â˜ˆçòt=§ƒ¦ƒÉr}N“ÖV á'?ÎFI‚Ê%à¸wàϲù6U›ÔT¨¬Ç!FR¡¤QA…6Ý[ÅÊJc®/^‚ØÌ‡«·÷éí³Cˆ:º[²K<@2Š Rº(~öÁB\&%ÍZ:0‰¥%ÎR]4!‘tÁø¨Ô¥y;ûõ!bTú4û¸U¬´X·ƒñºÅT䦩ÈÏg´r2 PÙD-’÷&²Ööì“wk vG»5æÿ\èÀ Ð:«8É´«Ü%.‹ÛÑN½0ÛmaÖ'%úˆ´NmÌv3f5û0-¡–uÆ~r 1³Ÿf_G;ŒÍ?IŸ'`¹B¹ShùTCÜP,}¶_úP`ðjœæ[Ð'ê#„Îg„z“J}¼ 1¨1ÒÞ¯ÑqÞ - Þ@7Øõ¶nÍê‡' [¦6Œ—n2H'ËËé†åÞBo§JùW³õÏmº—:’I>œÕ‹ù4Çv³ÅÑpÃbßÄâ»èÌøýys„¼Ê¡î®ã¨»È³s„N¦Ü=5îßw'ͨ¬aŧD\’Dxù’ÿçÖ8Eä"†öÒüNÔ‚:Qî^ýýõ9bAAHšÌ¸´Aë‚–µWàKl µW?¬·ÍW¶m'‘¹þµÜ/ôwfâèÓŠà-éúÏ!wáó¶ô‹¥oé×µ\[ fæü†KD%ˆ‘‰Œ‘Éb¬'sM„‹ï=XH8š„„cŒ„£ŒóЪ3íF vömÐ×uÒÌý ë[l µ¾ÅÖ=GÖúVléN燈QÈR~Ì⩜&äQb+ÅMjτѸ¢µÖ¦Gq½ ‹áT&(B}´vGf1"& D8‡½¾|ëf¨!MXS¡ì˜Å¨f+©R 'ÓÍEL{k{LÆh· heIG»o@ ž»ä¾GŽ‹0éõI¼:…-±ò4!šÔâþCÄqæÃĆÈÕ:2Ý/ŽÝDIBCÕ^{µö=ÿˆ«7So-Âõµ¦¤ V×ú±‹äÍuÜ7T˜>(}–×n°h¨WHæÐÚ›m5ßໄ3a±ç×l$#â[6øTî¾0F 1H|@LÑ”Â^Œ´k¼|(Âé¦GT,åå qñAV낆öl'ºîDæI™)ü´xªÿ£‹Ñµ*‡‰~yrÌ—WžiƒT~&>X×9#…è¿è1Ðÿ ÿ¥ýoG7ÕÙLÿx iÑ?š°ïJá… 9¨÷~`¹ÈWøqoò#‡ ‹'²Û¬Éð`3üí w*ø13øQÈR™xh´Ö¸Ý"áË% ë"ÐÒÈ`okÎF^õ¬áªÖrUA™X‡‚ª5rqø±‘ÍüØÄØ«Xa e¦  s™ódŽ|Vˆg2ÙöP,²Åœy ?–òc9?®ãG-?nâÇ ~¨2Íô$KŽÊ gTðÎÝ»úuW^Ë,¡õÔxý‹ÞC†£¦-Sç±( žYì2ìÃ636ñ¯dð*Ɖ38{!ÿ*eéäÄW¸”ƒü Hn;ÿê’YþÈqùSUGZ%õÔtq_gåš…‰aÄ>ìóŒ¤ã <°“³s‰0âg[V~ʶV”a¸Ø#&ÕÇ-]‡Xí„8‹2ŽI3쀢#ìPWyLÖ{ŰþGè3žçK/£Šw  ¼7­wY |ÀÅ«§Iü@'\|q›Bƒ–{tÍ!}° ¡ÏàÌ.ÞiElÑ7KXö5<ކ‰Kà×¶.ÆîìIüLñxàìwê¯V¥´ÏCŒ„—"h=%ºÃÍ›ÎúiD–9¤¯ IÍâ|„x¢EVx¹5ƒ?³f`[.>`!t£%ðÑhŽ~3ƒ#E,Á6dçýJ,–yß[š°Üd{P0>ÒóÝïVTª¨ð·%ô%²–"—þ¡?ßÔ²-ËÊu–ä:/hxS§6sÚm(´L(7RQ™z˜t…%¼µ¶Azl¨¥2R,·­|µo’,ça@já{S¤î"½‚l!ªÁ³ïJhŒE#-5„,¸Š£Ë 1v™FëYaŠ2ƒtqò¾ˆó'y‡Ù+¶Zrbۯ㮿Ô1v×éO ‘w âOx¡·ÏäÓ’ooKâBëš÷D¿Á.hò_ײIÙEn6˜…£‚MÌÌ32f"V8'¾×O±»Y|1[œK(w/f”6 ”ŠQ$匓Ÿ(¿Äk¿æ,:5‡l(¤IŸ‰lÏYëâsTmÔ5²« *ŽF‘œ#@@ìA ç¾hEI N¦K¸à¢ë¡tÉsç$n=IéFë”NlÁÚ™oÊæá‰Z¬jãð¼,}Άv÷DD>!5š…mH©d£ÁºE‘Å õ.âl¾÷œÍ· —3‘½É‰èUŸù_+wGè^_îçÉÄiNâi•G{\%\¸!qoø%íY1gÎ6l9x…é®lkI mÀr‚ŠÏ×?q*|¡ ±ÐÄå\c-×h§©bœ¦q/°^–§è‹Ë]ËLC«¯wrO ¿@t Î 9ˆ"äªü$ñöI²Û’‡mic6fø@? Z­$¸ÞqñVr|– 3Â-ÚXk£Ñàù8‘ˆ ]ÚÀúi€gª¦~Të\ Xã^»x«娔Œ8m¬5 ’¸.Þô±2™ x˜ªZ Ü=ŒýT®«äµ\އ‹×ö:ÿ;G¸<Á§rw›ãc5¸Ya°Ý@ç¸ÎßO¾ ,O±ø‰æþZ—­ùÒ*:Í‚9|qN-o62–¥Ä™kž(lÌIš*(Y"¸lâÐÔ\ïÇë@»ØÊ2Aà¸Ï“^¡â}¸·$µÙBdú%ž©šGúwê>ëxŒƒa«ŠÅ¾Z0¢a­r÷<ÞP®Å5B ù¨ìbr§õ„;¿C ÿÁAêìZ¶€²<Ðüµ‘æ/áলM<•%8xhää œœÉkùwdÍex_Æ“ó,¹:˜wš ‡º“+\9$‡ÆÄ CcÒ¬„7âÍÎ|‡Ã¬¹£'=Yž0zWX4gi*ç’¬.¡ø¡'4º¶C›Á­Eh剿žq$ÙtÀÇÃb$yÕ»ÈbáuqºŒ$×°ÂÄ7‘Ñß‹U\âõÂb8áxzÈ¥Þ`ïwÖ°‰Ë'‰¹†Tô—aäo} ­XÅÝ7ÞÙK¨ô Ô@ãú“ÔTôíqŸƒÄñr:Ô<]â%ìK“>Ómƒ„Ãâæ~û£µóÍ.Ÿ[ì‹ïé·Ä`YR(¦w&Øi¯ b>ŠGÊÝ ˜”1‡þ꤭ìpãhR¿Šm‡¹{]bpy?Q †.,í”TáÁ実 D8-1 %*ÇñÛ© ƒÉ'®¨Í¸ù¶Ë:A1ã“Êú¥6i_\|_â­MUxÖp5ã"§4g­8_›—³¸ý¨Þ71ó¿"&y‘i»5­+á#<'e ø%¬eàOK5_žàDƒº·ç¸S7\=)4mç)Û›ÂWRh±jˆ­ó±jêë£\ìã\Þ.h+£ƒEà2K¾óñï:ð” ÂPsks–7å,]÷"ž$Ÿ„:×¼»õµ9ôôîÇèDoe ¨h µ*ôâÚ3Ÿ/M~ÃùƳÎ×ðª„u¾€ŽØvÓùÚV˯Ü+üÎñ…ìÃüxŸ—™¸¿‚31Žú1œŒ#y ž¼»KÄþ_šƒMCqã¼™É ¨Ïe³¤Ä¥ÔnÚßç0ÇP"žYvX¥\å,~ÌãG?óc ?–òc¹Xòc#ëeÍNjÑ&.ÿþö0?åÇãüîâ·òCÄDÙÎüÞ¸q™&—)bÙ‹¨n~ôñ£Ÿ±ÓÆ7?<ü¨å)gƒgiPØ÷ås4("tk#GönäðÝvpÕF~l€G~¯ÁØkHºD6‰:Å—¸þ½‰Çµ )tÇÀ)îžê¬äŠ ñ 6Ç-æ¾.áÇRFÀr~ ¦#<¦º°ÛÊØ<އû{žÝg!v+#vë᥿.šoeäõ¶ÆÆë}PD—…Ç­ŒÇ­gÀc„½¡ëlG¡oMô)¿ÇÉ›5ïskEôG/É(²„Éí„ÉÈFkHÈ8N\J<ü¤°9HÌFhæ¦DþÛA g  ý´g.âkD¸¹HPø(>΀™|©Uä]š=…è»æÏV’–»œåíRîìÞY!gÿ“øY ‹ë<ûU1Å6neÉŒ¿æLâg±}·ZçìtSÙÖŽ[X­P}3Û˜áºx-Kö­¬¥6Z‹%"1±}AÖ¥hb†$ÆÓZºó´“V…ÖîÒÜʶèb 3àV.ív½ãbm}?”mrñ–Šþªk+Ó«ušÄ{,.ð„lK?[ØÔ7üFœ¯“Öà<Ý$oÏÏí37½ýìwìÞBÚXÅ]_Ã]o¶º¾“kÛj©†Â¦QÁÛ|bã›ðq@T°OöýŸ Ózöȃ| KpX4¾+v ^­ëïè=dÓ‡&+(«1ð.Ù®€«¡¹špã“`YóûN^'>Ïn‹|6üJØŸðeñ Lβa_™vGXÎ ï·‘éм!ä(Ð9R°9áMŠbÊF0Nȳ³1pRÒîÇ%Ô£R*>3x*¢h‡ÒëèÓô5ZdîªøTîƒÃ†àïÏ\ÌásÈŠZN…¨Ÿö\B©èH%)ÉÒ^Ú‚g}(šŠeÕ”Mý~7õC[!Þ½™èÂ-G¸òyÀa¯;hšödÑPüMžW±O¤ˆ½7‰£ÚGœMˆ› ¸a§·OzžDiëQÙMeeŠ@v:…j|ÀeïÊâ0‘3ÈnレÌP›{fyÃKbý·[Á­¢c‘÷…˜—˜ßR¶u@#¹ŠId ù«®e‘FÖ°žsÓžˆé{?H¡¯ò$Ô_~®ü¼åç¡Oqk{:ÛO? .Ô?ú@¾H”á»(¹°M\(O3±°V«°‹È£ðÏɃïK¢¨—µglûYjøbß×>(!KØ÷¤—#Ãt>¢à“˜5ægaáÆâœ5LÈñ‚û•ŸµÜú+VqVþ\-3øŒCKÿHï“ÌÈTl<·*ë"}ZŽùÈcÜЊ„†þL4”Ky]û“h"-`Dt„%Ö(íŸÄÇ‘0 Äã‘]úÜ2óò¸Ññ³ Ñ 3÷1r[g‹ÿÄÈÈH—Òs4ͳéVDèlÏeϘ&£\èKRâœÞÅÏ3d·”dö2̃?uZöG|vôìJ$ì g¢@S¶í¥Ô¥Lî×Ùä.vÁGdç‡Ç'ñ_ƒU>w2„¯uŠ¢±T,ÔŸ½(–/Òr Ä µéöNÄPÜNtY ›!9ø¼- ç#÷î·¹w—:÷ ð׋÷£Ý_ÂUîzŒÕ)¶<Æ]:_™ÀUd|i}ÜÀ}ÔÛ&m'½Æxž´˜ÖO¡S§`°Q{YO烯~PÚÖ‡r m±ÿʶ}€ TvpÉE~Hæ·#*ޤ½?äÃVéCéò†/VõXïK_îí••0IÛ/æ´ý„¦1daµ‡d;-Â"âÜêaÚ'‰Ÿ­t•?OGP@Ï3¹LMÒ˜¦±Š•ÍC| %ÎÏØ•˜Y=›”­£Üªb+Qé"ŒÝãkçB«[&M"?9Çœ;ÿL +\Ñ Ñ¶?èHåÑ—[×ð"O­_pÑÜð(P 7aýѽ ¡÷ƒÃ|TÜîmÕXÚj«eé-¬cè}–¥>ZßÓ¥«7È©¥$²¢]Ê+k+i—³œ%«Î–æSÂ…BEt»°ò'SòpÏòµ.ʼnWÈU¾l.sjfD´=ò,ÎñšÓž:ay¤û ôs‹ìA÷ªùn+-ÞóǑƭ؈Ã/þâýÆN<þàazø4üùƒÃ.›«Üí¢ûæ~[›…¢ßØ?ô²7ä¹Ñœ¢žW:âìfc'±Ëö¨$œÍcÿÅ$Å΄qw‚™Çû·ø=¨°›çÿ ¢ vó˜:P‘èaÂBÁç§!à/~AÜF!ÉœñÇ;‰ª²þ _œnR›dJxæû¡ÐW五C¼Ã]ú;¦µaw;xu‡*äÎl‡­º'Þ e®¬Sc˜~<Ï~¼Èýüx…ù!nvóP’u1^È"žf/ŒÆet!ëþ ëÛ­ ä)¦ûFr8@†Š­;Ãÿr ÅüÛ ði¸!¬¢%×PqƒÝ'^0µvÁ°•T`h9 ré—˜„ÄCÓ:|¼NW¤èÚLÂý×wH…Ë ™ü›ŸC&…ÿÅ.Wîú¾5Ð9ÜÛ £ø>q` aÙ|ã]Ùlµc¬°aGø¥zM˜±s !82ômáYƒ.aÒ9¾Á—×ãˆì“ÚÊPa§šÚ¥w`VÁ^)Û¾”>§=¹-\ ×ÅÏöë#]ìR®Z|n©¿]œRUAs Î;ë'\øq/V7Þ.Ãs7êß;0'm§^$´¢Ë¾ƒh°ú`_ø˜h·‚ UìP\Œ¥Y[ÊÝoó¥}x²­o•ÅRGl¥ŠËÄû¹­ WSar¥šÙéÓ!ZÄÕ¯óH ÷åZ·,iô8‹sº®Ð¢l|µ(ü‰,‰€0¶ƒÁÖS“ø–/ JÖuY>ƒåÍhæ¤øe̓qœà}£Gää:C\­ßD>ÇÔla/IÆ% ˜‹›Éä¤ñõÀ„3~×Ù n­°zˆ¥‹.Ñ *]èg3÷wq§²‚ó3¸ó‚ÏYi 0>lý­†åÔà[-“’FAi}˜±ñg§°²`|®ŽaXð´šéä ýÒ[úé±¶5|¹†œ¯Ë¹º/_ú€¢ãYªê‹-<îT,‹ÿ¨lû †‹Ê=.Æ@Ä\{MÂ% ) ·¦‹†ËM16YôСŸÀÃêBŒèÚ&µêH¯6ãm ÖÞwõrZæáò‡œì”Æ4VF±9¨Nõ3mÌ`¡BþT[•O}Mg;o} ÓϨ꧜/ lÑ&‡ðÎf0ç@oaÜ)ƒ%*]²ÍÑ]øqX Iϳ =¾b£ÿU)|iVí¹]Ò^3Ëœl¼?¾Û&Dýšìkü˜(GWÈ!=¸âñ6Õ%š (Ù3äÁÞãTé~n Q‡÷HŸdkwhÅ¿¶ÞþQ ¾ BèˆH°S/Hè4R½†]ò1šbsO¸DhW¾ùƒT„Q:Û¤·}s»&ÒYÙæ›šûºî™õ!;°ëGAár;÷ª…Û¸Qhy¸Tî~• }°¯Ÿ$¹´3Î(½(.8P„u:ìSŒÙâC¹ûçl°CWß/@‰v-¢w±ÄÍ2ºÈeûh'À|ˆº ûï£ ü‡`î°/ïobMç nx¢ì~O°Æz\¾]­,AR¨gUj×ß¶$ÔHC¨Ø‹wòu2A©ÍWÅpc-cÀkÍ_îmþ‚šääIãs˶ §´ø4†~i(2ͼç¸)>ÑFJa\k/è.%t¿ƒ¶›t„­|]§±Mhù0JÜÒÝ7ƒè£ EÛ®¶/bó“"Ç?q]ýý¼È•Ü„¾¹g_È^8Ån=ún´ <æèïH4½!z'ƒ—{‚îüŽú›Œ×Á›!ÿ^çØá#õKÄ ‘±Ê=H%À,óÇrXn¼¦ìHÉZ”Cò[Õ³õɶá¥;’&¶Ž=æÿ\%9Êü3ç6¼®ìŒà„·Ú3;'Aÿ&K¹I³õý¡—ž¶ÆÂï¥9ËqC}æÉä¬ ¶} ãq¦,ó› Ë—Ö¹üuÿlùÓ¿¥üu—î´õáó^`ŒÝrkì`ñÀ‘‚Ü|tr tÙ•¦ÍD¶³TQ Ú- ŸÅøäàk[‰D‹ eLjëù"Äý4 ‰ÞÂ@²ˆw€$‚A=ž“dß]=t•ÄËê¬ó²[Ñé%žÚAãÕR½ïjQ‡´¨'7:ê©ì‹õä¿G~á±iðô˜Ã<¦wŠ"üÑ—O_‡ bö}3þÉ ã?<ûmãðOä¿-1•þ—PgvMu¥¡¹€'ïH{Ê£?»]-9ÚS‡7I·£÷Yi¦ý¶â^ëMoF™l8¶Hª )¤ûá ýumqªCƒƒ1=»=eɽ"QVÓ‚ƒ ‰ÁP½ÇÁsdo;bWV¼¾ÈÁÁØÙ(ólÞ /F™wóóðlOiÁöᜱÏaùèm—qRjÄ;íþ.jŸ¿›}ü@5Á1 èj>âôÌprÅ2UÑSìö¨©ðWRñ÷WDü}ð¯þuU,2—OÁcb_¸E+3ü}›±5¡@·Cnø»¨˜Íˆ¶h®¨Ëj4³=e§@JR3Ü¡µxê˜ààÇà—×(}Ä»ùEêè@ö |ÕüŸÀ·y)|‚äL‡š³Ž°‹§{ð%só´{1ët165(g{4 Ð3IBTá‘ZÅÕ9!Oå1?’­À|%úÞ¨TÜä”ÎH_Õ«H.±ÉYÜúm ^c”H Ú—£qpÓ8¬#”eÌã‡ÉN®|ñ#Y€{ªp¥î3÷JãC8¾þNÀ» ÿŽÁ¿£€ÿ£“Ø.˜”h'å Ž9ÔŸþ£TÖf¤ÖèrìšáÊ _¿±7ÑA´¿šÔѸèøPÀ+iƯX‹†—–Æ!R³iÜ ¡¶ìÍ;±'¥äl~ñ9ö¸)}9¤G®ó»×~ï%”ûÀ‡F•Û(÷49Oí?qêKSÖG`œb9áÚ¶³ÜbÿÝÙjzÎ)¸a±Sº?Ï>C}²U4úýfð{FrhÏNúbbþPŸ[›Ðž‚¥È6¸“Þ°ô‘Þ¡Ÿ[D‚ Æü­Hp&ô×iõוÜ_9©±Ñ,N•’Rb7ô¸Ùvö§I ¶ð|‡Ã|úQ,3v)~¤äØë/í‹ËÓr·‘gÔ{„¼ÒGï;µ_Ùq8tÆö1Û_n€±Õû Cú¾u¦>téc©S'%«ý4²W¢~p†Á=×Üa ƒëez9ãøŽŽï7ÕüÏŒñ¡ùõÃbsŽ ”<ÈØòš½g¤¡¾õ›1“8Ü,´x†{Ž×¿0Þe2w*÷èæãýÇG å¨åõÉ’šjuëåý¡@¿C ([OO¤*¨ô6• j1S”õª£a™º¿Ë¨ÏR¶]‰•E®Í„õ®zmè„S¡÷)ÛJÜ%>%\FjúíÞhi(pÔ¡¥‘޽<ï%f³tg~kà‚æˆo6šo–w+ÛJ‡Ë‘ÅÃ=zÕ±‚b·N¥ü?•‹ Ê;×¾ŠIõ?0ægì“Ä®UC"22™£Àߥ¦E‡”wié0GRmÓõ?žÁ…‹ŠÃöºt·QÕ¥l;˜ÿž¾3¤‰Ù5t% ®6òLìÍåσ­ÏɬäeB^1ÑŸ*°€üÕЯJÃï‰Ôý}¡Ý0çN5üÝÊ6*”_Yþ©µ¯FGUžE"GEµIî§ý}0G[Wï>eWÖȪUî¦b±ýzù–ö𘙱SyGò#ø¸4¢ ÿù»° FQ½Ø›©û¦"›Ïsgéó¦Êœ˜­/žê.)X¶eí›y1PªBm™yG [”ÈÓ˜½|«YE†‡š= ÍxÀ¡ýŠ ­½S† ó¿,]ý¾Y·v¤,Õ¯ŒxÐ!B—?䑯}XZËFȘ7D6ÂøMŸç• Êh,é6¨*}±Û=3:UÌ~!?ñ}—j â<# oîË•­l[<Ä-݇Æ>(ñ¾¤Ø]ño™¥‡—ÂÏüöÀ´È²íí G¹AW`1¾²Íwgd¤S›"òì_HËÐìÆ\kß Çê¯%Cöü“ c 7ñ´Ä(BÙæ¹_/¢$ÿdýßs[ ª\ˆx÷|º‘ÇGäBD½oªîË3O…Vžl”Nuë¥yŒð·B-mD» q¶ÿ ~lç~{Ck<’þ>ªGn½ê¨W/¼Ýÿ(Ëg´"ƒú³ŒeÛ‰ÜÐý*ÛüäV6µ*;Zuÿ&ã9žÖϺ‰AŽ»”mD"ú¨ÁµÆgT= W¸Û ½$R–m™:™ª¬ÇKç ê·€¨o¯ÔeDð­ ¼O‰ ý·ðŸµû:Hl÷Ig»åÊîZJi¤†¿6÷mºØYæ3æöëåݱrOæ ŒAûÑÏø-´O.3Júu¹ ¾¬í€ŸÚמÒ_yåâ¸ß¢£Å"//&´áÈ2´]IàJøC’ } àE¨—}‘iÖ'gGfe\ªŠÎ¬±:ƒ/¦ÓêLµù«!ÐLÔ :c ¦ŸåýW®¹ƒVn|1_"rטßÇܘ¨,æ&༞ wjôìhI?ð.?‰‹ê‹"ò*AúüI—G‰—ÒQÀ£R5¿ýÛ͇œ¡O:µ³ P ~ªì×}iâeqšÁ0.Íñ­² ýy4bí:~uBd”w/Œ]ŠCa.‰ÆbL ×~æplFŒ†^ôÚ¨ ¡e.¬Â?÷BÓ8 Y[Þ€*XÖ¸¨»©´Í=鿬N!©Ñy3RVÏ)ßS[‘:Ê-¨¿Â\õ÷X,:,9í‚®XLÔéŽú×ÿÀ)Ï@å@Ù}k¢¦;Õ³D»´aÜä|i7Y]I$£Ý̰Zº€U—…®¤V57v)nCÆ.ÅŸfûX˜hùµtºø6lèEOèJÚ‰U3c—â‹y„L@fú”,žrªÜ Ÿ–aµ‘ëÍþïßÌîû,þóü3üGàÿOøïŽA6ÿô/ó_é ›ÿ>ÎøÿÿáP˜‡?µø¯VÌ›£Äµ§óß ¾žÿž絞ψÿ’Ò~ß üÇu&óߥ0€¿9ÿQ»,þûóÇv“ÿˆd´eqþ#XužÅ™‚Ý"éÉì&d·›ÒOc7ÏÙmŒúcX‹Ån´÷Ìo¿µùí­ôß>vÛüVï>3¿y¿•ß¼ßÊo>‹ËÆÒ~Ú7sšÉáã›Ó2Ý6§=ö/sÚ{i6§­NûVN[o3Ó¿Äg³øìJ‹ÏÆ3Ÿf}ïx V•¨7[üæd~á0kYü6ä] ^ŸÅoÁÁÓøí¡î$~ûÓùm6ð›ÿt~»óÓÓùíŠà7Ÿà·¡‰ûŸ:A!1Û#‚ƧˆFY̶êC»½r2È0$ùØ€Ï<’ùàW6¼šú¯óÁ»)6¬J93džF! d~+ dY,0¦ù[è?ëÿ1ý§Äé_þ×é_ŽÓ¿üÿUúÏ$úÿØ¢ÿ›=eYôŸõôÿù?OÿIºÝÇN×÷®ø+ÐÖ™èÿÎ3ÑVýwØíHÿ0$eþi]ðUîž½ÀmxÙ%9òz"Y»ÿ²ÿÄi“}ƒóÌdŸ-ȦªkAþ©ÀH¤ùì$šÏ?µö3 ö”‹Þ7‹3t sHœ>h•á5Õ(qãž:5ÆÏeTu-Š]Šeš[>²Æoþ›€kü8÷ˆ˜ÖÇ_Ÿ8Çþꦂ¡9‰=÷=D ¡OA_Ë!„KœW¿Ÿ?uþsøü™dãó"éÌøœxF|NüF|Nþ&|Nþßð‰ešK>´×?:&[øœ<Ÿ›rí¯ øœœˆÏ·þjƒ Àç ¯M>Ÿî3Êç)Ò¿.Ÿó6bߎ9ΈةŒØëñ©ß*œ;…™¤ŸÄó¿%‹7Æ–,ÎÅÆþk²x¾•»ÆŒžr|›,nø÷dñÿ›:²,]Й$KoˆËÒI$K‡DËA–ÎŽ^ÆçµGÏOÐ.ûM‹ÜÑ ’“?=ÊÉÃAþÆå©+žhÉÓ_…\Îk‰3Æâ =àž*G®ïL´“ð» ·²­Â+5ÏsÁX·ˆ5¬ØE¨¾ÄAåF5Í‹·}þÉmçô !}×£‰­ù_Z_iÞûþýúžŠöÓ™@ø×ñÀ½öÆÑOú& %NΞdrfs:ø4T˜Ø%bÊw:¦27÷%%‘ ú“XFNpÜ›˜äD†í¤Ç¸¬‰›Ý÷Æ™Âs¯Õ¬ldŠ8+MKf¥é›½v®›}6"CdÚŸJ7gÙàE†ˆ3à¼d¬ØœmçZ¼9Çn†ye¢ýiéæÉ÷ZtáD†8m¯Û<5©‹ÄqN¾)™“W$p²šÌÉk8ym'‡…±˜y˜ÂÓ¯$~¡‘ÅÒ€nœ“¸:„k…ÍÚxê¸ùqÀm„ðœqóÕÅÍ[m¯ÂãÍOØxìºy» m„ðÐi"„w…,ÙðöO¢˜0Bh•°y¿ SÌ W¯ˆ3૽6’>VLchþúÛÞžoô±×Q3â\£_J,Ñs–¼uhÜ€W°Wýfi¼‘{y’îûîµ–œHng¬çÿX;ß?og°ç´v†:eh©'|¤>üeGSv¢©]EíѶ³Üfô¯8¯»á«§2¦¹Í#ü»Í*ãÃj»ãݪNŠøOU˜/üÕÒwe\ɸFD@ ¢ç+‡cO\nJNÖdúû ؈[ W›ßÝ2K6\ÓÉöMJU›s@ÐV›ïáß×ÚðïÑWðïPwäúî¸nŸFïw'Œ‘eŸ¾„ÏÙœ‡ÖO /*;zôªî¦"ÛÖ®3x›'UlÌ–õòcúkѱxŸ§ÊmÜêiý»gÝ_ɦâ”Kÿ¼õ¸ ð|¿3P¡½YzÕv(2Ôš­—?a:3¯rXmW¶¡“ox{Âðyõª-FùvCvçŸ Œ@G þ­‘Òﺌò­ð½Às‡æÉ?©)FÕ±üª-h¦kpƒºsíVÃ+’.Ýmø}FUŸîU¶}aø3õ©á—´!°T!£wGZÁäÅŒ*Yg;›YuRµùøxm‰1¦ Úéý¹ãWÙŒkœüpÒx7Z¦@gA_ÌP ;U Óí²@?Z¡äþÎY¡¾Te=ZÁÄrÂ&ZÓzéÆç+¹`ÎuJ¤ +v¶ûò‡ƒôa‰™IöçÛýoò—7éË<%2(Á~#ÐÒî?ÌßÓ÷B%ò’#áû‹íþ÷ùûûô}oHÙß÷ sq£ü(}Ÿ˜ÍÆfà\½0»¨,æ°õØácRvÐuKvèEàÙ\ûA(Ð kÕ'áÃõÓÉ1ÿQ( Zû |r* °Ÿ¾Nù߇–`36É΢ӥ4Ä‹Qó†¾`G6^ŲÒHþþ-Qó¿ Ø@Tlì'c‰Î¥ñÚž'ˆ¥1ÿAÀ$¢qãs ‘ª4¾O; ¢6æG`c=š½À÷ÑòzòZØàpS÷o±‡ñQ6 —ÛÏr‹!쨗ˆ¶èåÖàu££ª-z•5h.²vk˜ÈR›`¬é;Œ5ѹ°•Gál$vI—Ÿ)#zËŽÈèfØ!µêå[i>âøšùÔ˜=YœJþ-<<®kÏÃñ–CPîtQ’Ë¿_GP wÁB››ì±ùUl©(Öå‘ÀÇ)nã$1PêíTr…]r å¾I%Èý]Œ˜ZA¥.µK}ž@Æ9`ã“bèÔs©ÔZ»Ô ,ô • c¨h^Käú‡÷Rf‘±©GÙ1Çcœ‚Øê¬É•bT˰üÕŽ¹_w> ͤÜÀòÍÖwÌ-e=õ5ô{'Ëæ Q~kÝÕ -ÚÎjs|ëè–ª@{€ò¤·um'ó}'ZvÕ=æd¬š,ioÎÄê~:qíïàPZ˜dÂAøìªž®W½óC{Ì‚j /•¦ è‹¶Á@"P)ƒ~a§„µa°í'  ¼-¨zúŒˆ¤ $ÀHz‘€–R4"vão„ÀçÄ¢-TK@02‡ ª†n@9ð:ÎÁ~ºCI’@oÐACìá}’ÁŒvKž3W£E:ï•Ûê½Oȇa­L×åÖÐvÈ$ßËíÁÔŽ< æù\n fÞOx¼h¹^þ¾Ÿ'’pðÚK|ønÞ“ñÑCLÅÇbƒ½fì*Ìÿ}ìªÎÄoÿìøÿmãwmÝÿuã÷ÓÓÇoç­ñã[Ým^ `s¡|ú0IÆÔoÁmß4‚mýWùoã_ÿOñß#µÿ×ßø¯ïFkü†ˆñûűӇnhÒÐ¥£þøoðŸû/øÏÑ‚"ñf¤8ŸÈ1llgÒ½OØ®/p›3‰âÆ`ÓÏÒ—uá-ÅeÝØˆúÄÆŽ3æËzytdSù cœ èÀ¸:Z@˜ä¾Y¬óÇÓmòѧOq7ˆ)®I:xƒû”»ÌM]õêWá9â|9*î ÃïT½Œ6æûhL]ð5|DÕåÏ=Úb”º w¤Â¥l5‘ŠXøÐZ¯uÿW¾W—>ç¶ÞJSsj¹·ÓþŒh:j)ïsA±³•^ãvOèv7P`l¥Ûü•­åØJŸ9ýhÏ—¼mt–UþJ/~û •­>¢uê'áï3I{U¡+ÒÑڈإøbêxé#å`ü@ïO?†)x,PàU=£ÐýÜ(ôD;íó ÜÆ;ˆ÷µö…ðå‹Ðí^‡z–þ®ñ]¯QâÕ‹¼è´é)DÝ,¹ã¿ÀãPS±Gš¬¿iTzB?ES@’ÿ‹ÜøC륤cŽ9Ç~IM5Še½HýT†1„÷‚ ·–¢Ïrà >ÌòD3H?ŒMÎO-E€bl¼K¯^ì±Èz1žvŒ·‚%n-C¯pG‡ó}øVቦê#°œHIvÔ™×ß/æQ©ÏåA[ý1°«æ©4Ëñ·ºqÇÍ¢‘9ù\ò;ãÙf“úåÛ€bìÉyDµù Œ°FX+Š”]›s4¿k¥œw$:´ÎQaýk¥ UÍŽ©žÚ§aº¨s˜½GÑÝŠ:8R2>稾ħO,ÉÆ]Àn‹¾* ?¢fmdÉÑöBöPØÉ’ýy/„€ð!u¬þº!¸@^; \@‹<Ñ¥è1¶wœ+ÃØ\h¸ $ÍºÍ‹ÒªÈ ¢@_"ëW{£cðK}º~µ'ªüÕn@îX,ÛêïºN¼_‡½ö{ ‡Æ Íöp¦¸ÿÔβ߲­›~·±=Þõú–«ÞšÚ tþý0•¼‘FŸkŒÝ´/ºÚ[-›‘‰7txjÇ@íBÌS„y~e%å`Ò…˜´1MÜ/‰ìžˆÔ½÷¡:ÞO… j÷ùp¥Òˆûú¡ï<Þüy¢®ÄÅj؇{³ÓJøÍ¤®p 1WM„zUaP ð A*"þ œ9¶ÂcîÏÁægá5©nhAh7£ÎBç¹y(DÂåyG"OOÃkDåĆ«Ïwj»e}ñTžnºM:™Zÿ!] íØíäÖDá*î=+FßžŠí—!²ÝiûÏ]LQÂ_ -ù_î,ˆ–Ø Ù<<ÁÐßìoÑ©xËþõþÚõèa¼t<)YÝ÷QSbA´è7ç Ï$JøÖ”$DPàII ?ý5,Fcá˜þ¯¯±¡„ÍgTx º=’Êßg»uZ,|ø»+ÌÄqžFUM´ª†û L_ç*á¹è¸-Ž|r†ÝêÆ A‰÷1Æ1½Æü`¢]úïPµäªJ|´:Á’v#vò)Û|!îÿسPÎW­ÂX ¥™º|1<²ôÒ‹ñg6<óoêTá¿=ì݉æ3ýÜG]¸BV·õŸ©å±[=æùñV銳`ønÈaÿ¸¢Ž59”ÆûŽÒl$ ÍÝ ?wΘ)[Wĺò^Ê?r#¿œ£»ÖHL W#‡öf32•m3¼ú Ý—Y”ÿùÚ ¡Á»Ñ4U¶F/ö4ÒNìi¬4žÆXÇjÌ»‡cû3;~'%É„·ö(/v¼Ïzp4b,24èʽý«©÷óa "š?ÄFØ^fðžõnQRÏ¥wl¸S¡ú*jÌ÷šY{mQ•Ž{œVCp˜‚îT-Ãð÷[ó£¿;á>­DüÚíå>àýâŽß&r„†õ‹õ€(/¿ ôvOÂP9µ’8bas3"i†ŽÆžFñ‘TL‚´z‹:-³J“ÕÌQ¤8½Oý¶Vj!¯ñ2D2ai…èßYßʯG¯ú™E…s¾… /d*äùçß'Å:‡E†6ŠR©k™H¿wº ZNÚ+èEïíësH«GRˆÏÄí·ÉöÛÔ˜åÛáL²Ÿùß<â 8û|朢->7¯p ´kÃÚÕ¸±¶÷~mž·_Åz5ÓRp¹©“åòΞ"І£Ý«ÿq ŒùåþjíGýÍ ù ¹LÑÉ_cÞPoñÜÐò‡¼ž8j=:+Í{ ãQv 4õvæ®¶±ó0éðøí<5_r´çaÅU.ö—îÃ$1(©4(©MTÖú«ì9Ø$_B_Ó•=ò%€ž¨Œ/ù{µI‘©Àïi˜ ï‹P£*D+Ìj±{Û¢ýª’²ñrwÏǸ ÙJøœ BtQpÏÔ‹Þvœò)áãLVÖŸÏ'X׋€‡‘¾‘~ðÌm%”Ÿg·•>êŸÀ÷éåý/øNÊ`áÛ€ooÒÆ÷7õáßÁw‘Œø–ÝQ_3ðj ›«·-‚æâñ_Þ¡ü÷£C­Y¬ï,2&(8ëô€YœÿÞÚ¿‡Ýè%‰bЃ`÷`mX2µDÓõQiÞCëGãŠi‘@—8³‚Ô‹¶;P½8VcRäg'3bø»”m³ì-þÎÈõ‡÷âünÈ©<³ÂYâ÷Ô_ß䂉qðŽ.€Iñ|˜/‰ú›kÐWVl¥Çü,G¢ÆÿÖk ãìß›Q¯ÿ}–Ú3Bû¼óÃ= á©f÷À;®{Ä•Xc¡lÌÁ м#lû°ÁRìßoIS}‘Ÿf¡1D¬‹q3»$ÿµÝyGò¿ L2ý­ÿp¡Ÿ´}.Пʽ +hâŨò°àà6¤”ä¹öîbŠëUq+€û¶ÆªS Ü ta`lŒIÀþŽäAõAµH7Ðsp3¾õVâ6ÌÑéèïPÞÂD¯–nBÛ Êh˜\‰k—ØåFy×Bs†ßÉ«PG:•¡^Ö:%©cÉ;ièÔ ¥ñnzñ( š¦ÞæÊêØå´RΆ¤»h®ëvRcú«¬Ë€†Ð÷Ëóì ÐŵûÇ¢ajne$$”½º\3çzô3œ¨Kÿˆ~ûË=õF/úZ¥hÿ1ÚÃðD‡aÏEÚŠœ$å Z®yƒ*A˜>ÅùÇfüÝ`a(3¡!“͇®³Täë E*ï‚FKõ ,Ø2ã^Te!Ô‡ *¦Õ{+kç!³]½Øc*η÷â'ƒ -(žV?´Õ?óÇ«¬ hP¬¼S _*ÕßOÞ·'—šÞäéÆÏ’oÛÜIP{„ðëx†£ËI)(ÿ:ösŠ›R•;v°B!Øñûo˜mJ“äù(q<þÝùÈ1`>¢1(£ù(Õš²Ä|tÙ<áÉÖáïFGªÅ|4æ ˜î€Y¤(ÿ]1¥ ªBǵ0¥‰‘Â¥y/õ” :ª^¹6»oÆ OG°0)å.Ǩne›<ïšñXÒ°å·ÂÄ­Á‘i™FÀWóH}spoDoËë1–õhÇ?ë/œÞŽ`DO›Š¾Ðw€®\3I½™IäF… ’ÊIV (å'á–v®µ”}T?ØdÝcýw-;ZÕ­ý¹á7-oñµN‹>{ZTîB¿Â45^HSã°è˜gÀÔ8?z3··'£Ü³æÄ“x–åίÁÓ:N‡U!|IÇÙrÐC|(ÆðãjâÐF¥8.Ô’Y±È<ß!¶7´Q0‡ZÝJ‡ÉT¹ûzVŸÅ¢™Ö-qîàÆj¹õ3—^µ¥=¼ÜÚ³ðñÑ4PKG 9,|æPúȶ’¿FÚw^<5S÷M‡G–¾xº ÏlxºÉ‘Ùì±rÙãì’$Rõ„ξ¾Û1?ycÔ#èÒчß0/ûÜ“îÃwö Y$Ÿ”÷!XÁ<¯¬6Ð3e Ò=NËÿ$•2o$zö(7@-öº *\÷åSsî2üOèþGÛýSõ¢¯ÀQõ ß·G²È$K?œw¨WÛ¢û6AcÙãì©îMá©e½%?Ùó:AëS"O9¸œ3üÈYÝ­Na?—ä?q¢s ÿDôTø¦ùR²ýÑ­¡¯ìžÏ¿‰¼Õý.ÁÞN|€ÊÕâF2Þ}T‰L–ØX^˜ÅÂ䕾ð<îT­öKê9Ë_dœkÊj ¿¤¨·vPhV…Q•¹–£Ò» ÉéÇ4Ñ- Q%ûÿ2ª²!1gO:\ïU^ÜþüPtq³Qž_2ÑýôçÝâ1ÿ«?± ó’+«sÔ9D…3¿ŽÃ•«—vÌ&kǬEñ aŠ^d^“X °C.TÛ³ŽÙal^ j è“Úð? jïi_âjã›dpð¸¤4R8ôµ‡ÔñÆQ©=†Ž W{3”Si$KgtµÇPÆnôY‡°›ŒªMUû•×2¬KiüÁŽÃ®°ìÂïMeã0†•Õ[ÉÑž§ ¸FÕFtn¸ñ•¯ .EC~ö,¸ŽUv*Æp©ê9äfÏ‚»IÀ5’³Ä>ec9¤ ®"¿ž–¼¶v[ú®×Xí! Ñk-5†Øô/NdÇбÀR%Ï·TÉq‘Ưˆ„pª0gòR?:‰é-fàFkhm·6Œ¬¬“PS¾ìF±PÂx ´‹&0å.4<%Uú¾)l±Ð—¡Ni„‰#£ß'ý»o:9ÔçQgDâo,ðòjÓŸKšct,è§¿Ú\z'x*ñóï/°öæ²:~!êÀôq“l½QϦY=Ëаè™è§yÛ[E=Í úq¨Oó]«ÝQ§ëòžSb®}*Íek,ÝóëË(øºÂ¡)1ºª¾üª~e㯅JÚiÍAë:²üÜßîßÂBÂÝSèö¨gÁ_IaTe/ª]Œ|]±êøqÁ4Íb¡þ:z «ö.v>9Œ \‚žrqþ'ùŒ3D©”©Ëyä”xhùÊ¥Älá.÷ñµo ïÄ1ôO ÒþM’ö[…T.ÏT6¿»2O8.~Sõûh®Êcxœ“"ÓIÞÏKuKlDJP+Ã,† ­u‚Î?3Ù±“'†¸ÿb˜?æ¹Owa\î¶[óz1¶ Ÿ'á^’ |©êI¾T˜| 1„좲ñRÌxÄIè6YRîŒÆî9ò}B¯²ft¾:Áòú»I')³)ÿ0z«ô…ò%T—šÅP‰¦ù.eU¦¿5¸nóØÏÓ)4ñÅë¶;iö«Zà‡yç¾{¾@NNpŸzs ûTtÃyT‰ôÑ~|²ÿTcfŸ]‰óK¢ÿT º™ä?]Š>¯Düöú7Ð s :ÔO@MG%¿:ž¥f }ÿ&ïºÚ‹ÜLrË`¢úÔÁñ’8Ï`c–,}’]Ÿã‰¦bޤäHù–…8=˜KÑ%Ÿÿ!$îdzÜÀ‡Þˆžƒ«²{îÇ:keš6a–Ú\ˆºÖ> ð  G*ˆCÍ4ÊÒXO…ǘíÖÝÑ¡–b®zSb“ vE¤jË¢…æ['›¡ØÍH!ÆÙbÎQÂ_Ùî‰]»‘ç˜O,÷Äì|f––øÌ’à|øK¦Ã|´ç“Çœ¶¼°Â,2OÌ"Jã ·Y·aþÈ`ˆ¥qy‚óá®dçÃ0´‹ùCiœNpËcÂI1;ó%ÒCÿ¬M×1Â%Æ([:#eë0ðè ;®yÙ®ŠKõ£«âä ¡ ¾ŠãL¤ZÌ lr­öòÉÜ ôE¢,îk8ËXä!_‘nb ®‰ÛksS^ÒjÈ?½‘ çäT$ÃÏ&òK?uÜ(I nJ\¿KÔ? ~5;Ôï!ÃÜæ¼ñæÔ€ˆµ‡-ÒC=ʬéK¤¾{$‹úÖ“n“ÝÔ·šµ$éVà®h¥Eÿs°ž[ºvG(ðÀy(Ò·Srœæ¯˜• õQ1‹ÔXJÔ7¸ ª?lSýÿXZÔ7¸!ˆØ °Ž€}£+bà…ù‚Ô%I>‹ÏèŠX"f©TÉž‹—[à8ã Ô¬üD~í‹%ŸÝ–â>f å¼Ö©k¦Èæ(?ÞçÇa~¼ÉçYÍ—(3ù6A»¿…E(žÏ„5÷5¡öl=ð Ý=ÍÒË÷Cz¨=S¼h”·ˆ£tø +µr¾Xrã­Eßtx“òaÉ‹mÝ—ƒQ+wó¶?/Íý-k÷À›p#þ/+€ø`Í»ÌÖ^pâ±à—S´±¡ÀA …Ô`n÷óØÝŽAÔäÿû”õëˆØßt¨° ß¡ ±·sÞ' 0#¾”=þ/#‹+êUfÇkÈ3¡Àa‡:žZ¤çõÊ6âÛA€jÅÁŽ-D€Ç¨¼c\w'ã¬3âÓãåuòýFhðÚ|*5£„OÀoàžÔÎmÚóÑLë<:ð¼²-Щ:a€¤ÓF¦#—NV¿ÌVÇó[ºÒ8‚ß&«ð7W Ï·šè¥~ŒÄ¥TøŠ¿ÑÜÚÛ.ÑÂްü.ÐZ 3=BMÔ†¡[hMÛüÏãˆÊ÷DÏ•Ætâ¯뢾f±>%~ñôLLõIX‰:;«ÉØ7 Ä3iZZ™®¦ÉQŸu]r¹³(§ÉÔª¡T¡iUXz›êµl½Û¡llL¤_AÍÇ’Èøp5—0:¶~MvOM3ãô¶O›‚»66•ýþkãw¤¿3Q’× >Úÿd×DedëÅùuSk«ð÷rü=‘ç£9‘„VDE´90(Eiñ»ÂÄmöÈõOœfcQå¦#‡¼—¬c†NUQvø;Y?(Êo]{2øSO*(w×Èú²þhºñSýFq&ä¶ë“"Û'bÇ+¹& »÷fêU]ÊŽe'õe‘ÒÙ_n<¶ˆøfc ò½F k’üs {ê7)Ë{Æ2…ex #ïT7k»Ó±Ýÿ—µØÚ[ǵæ.’‰Æ]wóSñ>¯†ŽÀéBYÄ‹ëÿl‰-}Žccý1-«/$Ûu_èTLsæõ°tˆ¡tˆ–…NbÚ‘ˆï!J[ i±+Ô³ào¶züMW³áo®šƒwüœ¤TÞl§å.~W·à$å "Ó>ö†F[xg÷j÷ªT̽[‘Žx (•Íᵈ½`µ{õŒü/¦GæÆ¿ÈzWîáB}¦»=$ö²S/·Ö`\2mLS†TØàÒbÛ ˜õ—Å/ºeÿ§[€ü ÆF×"é  çš/x—erÊGÛþÃc”o×Ýx¿2/vFëCónHÖÀïlõ|ø›®žYÖ¢¶ÎŒ›q°Å€Ë¶âÅ@Rn±Ú©ùª©»ªívâÕGÚJ/já8·8ñ–.FKÚî©¿Ú•›[[ÑZtm èñhî_?ݶÚ¢ìI›l(¶ÉÆÈè  =a¯‘óo!‹h±‘†ëßî•ïD[–†‡ÉdÃx‡m<³}FÏ4¾ŸäËŽUÐs矗…Zzµyéãd¤a܉óWNŸGÒé­§LòªSB{PJJÀŸe9m^ŠœZ$Ü€ÆKÀ²e9ø‚ˆÃD¯—‰=%LvdEªñ|4}ô÷—úsO¡¯P=/´f–£Á«„‡ ÈšR‡r§Ì ¡ÂÒX¨bV¬£›”¶~£Ðw.”}ö•øGË Î—œÕæ×#€dn¾æ"?$ 1JÏÒ”àŒøH?œ5"Øñ—ÑS8"[½8T˜#…*&:0Òaµù‰#ìÝO i?»!ÛòQVÍÊê²xÒî#@“ø»èÿßß l0¥uµù]Éîñ,xÝ…ûG‘@6¾ªÛ(ô6•zcä‚Xy·•#7žc$¾F¥•¯Se# U4\Í£âïµôOòcx*EG/A‘e}Öùfµù±Ã.‡ìk@$ø»×ü5ZOñŽúD[oäš·ÅsàÚ'Z­ÂcÙúqFy¿Qä…7•:cW¤\š—çV/_þ>¢år ?¶JЮ¥K<Ã{þî‚bæŠAUGÔ­ŒÏw ÙŠe![ã ãö":´&4ŒêØŠLó;#9ƒäׇbùØ€ón\ÏÒ]ƒ™#Üê¨à#zšóç`c´2zI ÓêdfŽQ31Ô ‚åCžæUÁßn@Fº¿[]j +Ê~}fŽ>j¦çAÝ߉N ü}½×wêûô· з•wI¯° ÝVÕ/½]種¬1G?âpÔ˜5ð7¸`„×h€qòèÓ£ê öFMᢊó«_"Ì%Œåõ$>ÝP¿¦ŸÆ¿~”¯y‘ðóFüûç{Ôƒ¿ÁoÿökÍEŠ$– M õÁ:†ìG-vvýÛìœë)sIê‚ȲW*c«¦ÇVM3[KŽÚÌýg¹+Í ¿°Ã×.¬ )ÿ+æW¥–ñ²ñ6¬ºvJ¤ë¦Âœ¹™ 5üûÏÈÓ¹Ã,žÞoñ´?0[=E†æ­6ÿc–eO6$zusLÛoV›¤Ï­¦P­5ø¥ç!ä‡ýÆ’ÌjüÙûS–ãGÔôêJó­‹ð€5kð2NwÏ'ÞÍå2ôìbäiµ´éA| õ¥«)¡>6ø9:šÈúîCò`-í9<7}oàE3Œuù YÎâЉáõŸ[wmlÿ£ ¶êj=9^MÿÃqªß <²Zš=¹ÎÅ-€((éI%RèÛʈÇÇ·–MÒõ^<§t%rÞ¡ô¶ôw0ªÉƒ›nÝ> о¬ª¢AûŒU^Çz^ßx]l¿o2ŸDtü8¾¿@õÍØÓëë[h,óÅžB$ÔT›Wl¢è U{â·jóäÏhë›ct®âò³æ_$òsœ–¿Wä'Ÿ<ß”ÿ2‘ÿñÓó¿!òë ùÇ Ì?†óGG5Èý$çüö¬[T"ƒvE#¯ïZdpº£~ª±¬OÙ#¯0/E×b{q8˜>|. äãü@ùûÖ„ÚiWŸV+¡>ñf„JT("¶! á§ö95û’p, ´ûûQ‹^ÈôŽ5¤jƒÃ=«ÒáqçqVõþ@”SF¹/ô,ÎÆí|ƒ Ö×É4“{%mÎçõJÏ:d–l55FŸ ‘5Ò Ûž\ŒÐ^‚ÎàcŠlUšn àJó»#¡ÚbTYbOÒ™…±Ì[‰ „yõK°LÀÏ–¥1ƒÅžÄn›z1©¡Îø!„ís–è¨b™7tÊ­eTât_玦5“MSõ"ó¦lÛtÇ2é1BØìYuÙæÞBëëLÌ?&nõÓ ¿–ËøŒ¡y0mçbyYÈæO “š˜‹„ܦú†§¡°ðÝSPÒ›ŠÑæµ¥¡=„x5¿€^&UGîä’~”Û‡Mo5QÖñXœ Êbe¨©4P$®Lˆû²°à¹§Ï¦ÂZXE \c‹–qChí]¬½*R)1HAÅ´µÃ«ÍûT?·'óV!‹  /Ì`?|NucQ] a{¯×aÝ;Œ8“*jÞ%2|Çx„pù†‹z'Ê•ؽPŸÞ“Pøõñ§&~¡™7Ãî­/á[lVU7•¶ùhý‡ý½W5‡ƒªÍ^qO“GIñnO‡nOK왩ؕ?% èÙönî¯ YžŽg JÚ»®Àn/Ù7JÂ1õl Jïë=\e/‰@ºtÒ¸i»à$Þú¡±þQn»¾/š‚þâb6"™ëãX9ÅcÝØ@ïî¦ûñ%êüÃT[ *{öV˜¾‚¡UÜŽ)S¤3÷#®UæŽ ýý㻿xàà żõEv×½‹Ì/­i7G¾×„0òSÍ^a}­`NUpºk7o‘ù”ÿÂúž>Òë‰ÛïÇ÷6ÙyaŒ²°Ãoìâi¶É2Í18»¤!zÇj©mþXiT†¿~¶x!ÏÝL§ê˜FÎiÚ Ðm²CKÉë}J‚ù”vòÈ_†ñ”—ˆM¿ô.Wˆ…ØS¶|ê{˜„Xh U™´0Û1¹´'®Ü°ÂCòk—_•$¿~ØMò+·÷6wïGmþSS°O§&÷’èÚûµ~p5Cß;é^<×ܦÉឆ•@òn6(œî©—ûB±ZRJ e í"!µÖ¿.ö)TZŸÚ…e¸ê§…b?¨?›92c!AÓÏúQ€TGtꋱôú³8YjVi®Á+•+ãós%ÐËa¿=6EU “ö–KIÊJ07žjNžn“ûÙR¢ê çKAŽù¢÷½ð!å®{T”EuS£k ã%VB5Y˜oç}É1 Ü—ÛßpFÖŸÂá‰^yæqààÀ‚~b}Ój+-Û›¨ÇÚEXlÐP_›*tÚ@Ì¡¦6•Ç6¸ ›ÊOÁ_\Mt§¥óæ-ß´ÂbTxÛ}ºi:î~u%ûd~H ~X®WÔ9b„pAŒ~w…Yö ¤ØÕUUU½ÿÐûZûÆëoç¶E¦­Òµ>ýÔ$­G¬'à µ¹Â=ZÊí¹`QQÔU‘PZ߃ ôï…¬Á³Õ”à‰@°[!½vä:Õû3rÔdÞøùÿ‚]D¤¹{×ÌHÍ—!5O°¨yL25&j>—í'Ðó–  ç;’é9š vâqôh¶Ñsˆ·(M×%ô¸$zùÁ‹¦ $é+¿* Dýࢮ¢ž9¨tYBî×RãÇÓ¾>'ì¢37ô‰à ÛÿªÕÙÄ=$ƒSÝš@ÞFyûc¤¢&ÿ)ø»haéhĵSœ¼A§ÃãtòŽ\ßdoú$ÆùЄ TÊ©”‰Ò¸ÆüñÏñºÇé¢xX¥uÃà¢Íp¸g­»€D^À;Nsï‹?µ™¼HWV`55æ½ IFk­*<·Ë®îÔý𓧈ºÚœ¹OÉDà«Ëáb:I g£ÁY¯‹–@™0¢>{DAcÊ»$®Fw'¬õxõí–ù Õ‰•æÈËíÕ]­,+•BÕ³p£ô&öéÕÞúQmÍÀÛn¾ž wñb¨º×åpJu>Ãè!3‰J•=)Óòò€ôï¹Ø^0Bɲ6. æR‚ù± 3¡Ò\q™µÄªÏthiy-°_娌­Ê4 Æâè’‹hî#èÜ~w¨åËPße=z­Žå„söã}ÂØ]´ô¦…a´Hïá7ã~lgî^ý ~'¾Ü9Ø_‰ÐuAzçôrSAY\”`cÛ•»ÐkCµñ°¶„#ì;÷’3'¥@ 4ªÿ“jóæSä ztÝ\­+ºŒ×›Z`VWÆv`žØŽl¨Û<`c"?vW¤Üöatа÷½‹v ¢ã¬û7´!÷Qü>}"Xø±ìBqµÇ!æAí‹ß2Ø6ÚDW(¡“NuaƒÍVÇv «–o']êB'e¥ñgؽ=sk™¼Ä2óÑ<¿_?ØzbHðY"±38z‹°'åOU½–ôƒ8|v8¾( ¾á/¿$~h|Q?ÁÔ$WãVG º«$ËÞÑ|yGÄFÃÐjó׃p„׎‹êRªÍ+ìI9})E–uWŠJš›i$5/–þÂQºqb¹éßà ®~ ƒÓ³ÕÁééêWÁéjRaè¸[»08}1L‚ÓU¼G(.–ðfÔøo|,‚ÎD³Ä5:;Sš¸@²÷rVšÓ†àæSWòÙ-6Åﳎn57m³HeÆ´·¬ßhFßë L|§`’g`¸¤–ýÒ>ÉÝ{›3ïPþëlý $ù!!:"üRý#Ðß”¶!u¦è/›3;æï jø”*Ñ´¬ñ†ñÑA<>m©Ùe³Ã/5ôÆw©x,dt—ÞŒÜfl@É}]/ï¯ÀÍ/À:"øÚÁxÙHð¿Ûx„d\ ȸɡi•³`,̯³++t{¦CõVÇVfš'3•ìO²ÚüÏi¶0±ef\žx”õ¸˜y²ü4y ºòÌ2%ܸºÞh÷PÜÇfX‰sæƒ<:]VL¨6Ï‹Y²b.ÊŠ¡|–q ï'Ò‰‡ÚC¼ 5Œ£ýÉUï1èÉí±EBsâÿD<¥*O¨o°²~wuÓ~û¾Ä³xÓ©ýYÌHtCýÙAv&w<‡i’Æ9HÕï'ÍLþZ_3쯊ý5•Þ<¢Žè«=g(I±aéBÕ„ ,h¨ D—­îðŠ&§ß+\}<6аê²LÖxÜêËŽ|HâÇh±ýËYû àÍ6šÇµ:"t•#0è9âÝÁ8>Ïao`¥5*® e›+-³uízÐ_g…úÆ®¾†á ùëç[[ÃþPÀçh¸ ¡þìèD¬!±IS¢#,ø É“ÌÁ“â:‚57 ^iF˜E±'u˜¹‹y SØGÙ†®p¬M﹓ËO7îÄ<³¢©ü’{ø6d&n§OãU]YQ—²ÈüM~¸_­ØËýóÓIñ6ï•ã}]±ÌT‚fCs÷³=RkÁ½¤qy zÂrí“I Ë}P:ÒFéB3bcô"P•r­õ»é^kÇÃÖžhÇãóÜÓqC "OË­Žé)I‘T^oC5²ÆÜ{/No2žÿìÂùÙQ¾©[a`eÏÔ½„诳í2…=XÁg W5äÖ &g˜Q¯* ·7‚6G/ä­?Ê¡µþõ)wî²~HjZ(„7’<†ã^®ÛÙzÔ}®#¯;IéuI´Â¸— œxÔ̯”®»É‡–OTbl–Ì/¡52š¶º¹cÑ51«VWpÍÝÑ}>˜ª²ù£Bt©#;~è"¿_‰%¼-“©n #u ž{S¹Ô¨vê(±ÊP#”é´°u){º0ÄÅëèµ®,졬—Ø«ý¬—€Ex´©ÜŸÈš˜¾ ÇBÙãmýĽîFÅ,)ýeý^„ µ8E­b° R¾è'’ ÿS°Î\å Ü)¸ÝãNÕ<í†6•ÑñüN×@‡‡vQv-ƒvÑn»èŽy4ÿo¶öŒõ„N¥¨#¾xâ_¨¥%Œº*tж¦ÝC´\n9 Ë-,C–Dí¸×¦_§í/÷`-‡3eÚ™”äL¸ÂmfņIµahê¸B²ãn…ã¤8ýûè:Œ&\ ¬è©ï燷:¬Pã~iä PÎ PÐ \†òÂ!ý^œ?¢ßý'«ÑI:HE—‘@¹ìŸÌUY; J¼øƒ[ˆ|3°Ë –ôËìoòüu?z—5!½ä5WDB8õÁy:q7ŸÝˆª¾òíZ_5{—ý@¡»÷,¿¥G¨ Ù¢¤}.Ê„VzO›#»p®vkm“ÝŽ`~¶šÌO׆ƒþf`jqðŠlµ;xEºú ¢eMΓ`­?Es5K3~¨z`éïž1’nÖ x3wšXAÆȨã»_’:8Ü£¥·IS£^l?—MirnŠ ‡öj›tº~ ú*ßÅ;\8çËÊz¯\[@¨ó'A=ùS4gÑÜðå.4—Äò›†±û%e=nÚ  \gðZç9G”ÆWáiÁIÊúß!œöwòTÐŒßÿ;á{š²^ßï·¾G¾§¯ò’û§”Una¸l®öIôÇ‰í æÏV—ó¨Öóç«‹‚ù7«åá#õ³¹½¢˜ Á~u\ðD©::xâzÕ+žÚºN¼œÎš}Ï¢“‹ÌE·±•Œø:a'ëô†žÅ ªž"—¬Î%Òø+šn«7J8€!ÀS?‡ïì÷Çßh¬Éì)Q¨„qSJ¡Uß*[ŸÀ1¿f²1gªN×vÂ/Æ*{†ët­­$:´9D—´Aé/‰@° [ŠD='ŽÃ᜘Şī²”5²xLL§«I °µQ±¾r ½ãœÐ•ß±WÈþFÜÁ r“±½Ú\£pªFPãi*ñv ”tJ¸Â¥›¯Ž· r¨Þ¦Q3›¤"¦T?)aPüó`DCa6U¢ý Q¤Ž˜ ,튣*ú½HÕ½ªQ?Ø^8ñÓ^èã‡JØB÷‡ÔÁE•1­Ñ|í,û@)–Š*h£¹Z¥a õÅ(ÚÁa˜¦ÓDe©ÛÝSä”Õ£h©>ST Å(^¢gÒ'©PuE×UAÝ‹sÁ't1?d«ÙÔô1¡@d^ì–›b·ÔB«c+¦šw±¯D$(§¤C÷Óv•ãFÏ%tú Õ´]åø{ý^á„ß‹ñwÊ®åð€ b·Æn™Qi–&”äU§CIƒw äYÖýN«¼Ë9ÿ4+ÿÚØ-k*M9ž¿ØY¨^x¸€1¬•ç¿ÜʯÆnYQi¾˜Ï/¹Õ+Ïœ?ûôüOâ±GìI$¡J³>¡—“º‘Æ¥Œˆ0 On¤6PW&à j©=Å©NuŽï?T<6Ñ_o=>^ç»Çt9†6¨1Öµ ¦ø«—’!7$O”âɸ Jq‰Áu:UÐÁ–UÆ0‘Ù ë¾¢y˜´h¥Ý€vŠqO³ ÖÂÒBïõH²zy¼[% Ý©½ëGÜÍØÍ*wìÖű[A .•…! ’V?¡%©’Õ~Ä×AÎuØÊE~¢þMÈ´se*‘’%½j¦±÷yÞí¸UŠÛÿ¡È˜Di£1Û£»;0’ó™SM7Š—·£b£žIêp–KµHÔæ)A6Èê(àêáLü}ƒGŠŒYÇn©àO?NÈ 3:qàb®”ˆÑѱ' ?Onµ.H(hwt"E2„[Jâ (ƒhÿI¤ýZM󯎄2¼XFœj‘&ÍI4e=é°!þ3±Œl,#N dˆˆC¾¿”W˜ ®¬·¦¯:-ô,«NéFQŽ~bƒôÂgYq‰7èÓ-ÿ¬8^Å9útÂK¡êŰ;yHø¯qÿÓ²Iÿõòd(²°#-÷ÀÄWå  øzéåýEQOøPýØ&ש¤hNY°À¡ýð|±MÊ.š>ÔЋÇ4½ Uñ4ËR¢9áœ7ÍAýº®ÖÊPwÅ"ó{׃BîïÏлòŽXö%dp|¼.¥ö(âæ›éìíxÔ¥Õþ“Â7Sþ]é„¶Ì` Äà\::^YaÞp³}Ï;¼iêdÃun:°Á•¨ðk¾Ð®LÚ6{ _̶µ¸¡‘imJÅ㸯ëĵ#wÔ˜óÒ3¨lÝ©± SiiÏ‘eôÐu§.çŸè7êÔ¿½À˜fÌÌáÉ¿PÔL;o4žº·'­PÍn'DZ¤Â¬·N*Ö‘Ïn$Íè4ªpNûú‰.ÞÒøvøž™)’ÿ¼Þ¯÷줭¦ž¸>ù+„­1§×ÀWzÇ^‘g-·zNÃÜìE㌪Xm6Ðû ÈKVHÍ‘;»&úf¯Q'™«àq.+9¢£¡„ïSâݸ® «Íñ”àrzÖ‚ûJxn??ñï´…%xdëÅ^©á ¾0ϽSa'|-nlQ‡F"_iòHоzôÜ?åÞÐx!&?w¼ÔH†"úO­ŽPeæ4Ž×3S–Õ‹òzŒEзç¦p ÿÁ%-$äΣx³Í :àÌÌ(ùGœ™i8@™Ôµq#.(‹æÔJS߿ğ@ ?üb÷àŒq5]?\œ‘ Ïi“S'—ÁŸ “ÿd”UW˜ö,{obÇžÁ Çæ/ûÙööÊ7=’–Q—jÞºŸÆ°.ff¯Ä‘½¶ X'fþä%ºùu÷©žgºÆC„dÌÓ±K“Ę. ãæ7C¢<¦ûoµØ™Q ‹*ÌhÔ/ÑE}"ïUš«û™YJèºÐ.ëº.cѬK@`^"3õ¸²ÕÉí!›ÆC6o¶h|'w ³ì‡j‘ÍÙkB܉á6|yRÈo&, OQk@÷m„H÷c»EK ƒ¶ì^×Ýgjì©Ó{Êj,²ú ¡ÛeG`Ú·7—v2Ó‰ Ñ^—[?¨²E†ù³“¢Ù|Îèáù8¸Ø±OqWœDä ÿØJZd¶âù­ì¯bN§ÏèצÚD_ùuŠy.%=„9. ½˜]ç5‡SÊ_¾F 7h¨éÀ¤Ž—ÓO«ïÓ „}öëx} ãõyÍýôùTÔÌ1Ì|š’&Ùõ 17SŠF@?@ áf3&u\“NH Ñ÷ª¯©ÜØÊ~óïðZç3DéWÆÓÏ£n›ÔŒ—f„9“`–‘÷Èœº‘æåô;=žç‹¯ãyîÇ<£Ìáó¼œtIÇM)ÖüV—iOÇ/¢/æÎ„œK¿&ÿyõÜâ× ns¿]Ë „½ò }Ñû±¯«±ºÑd›XÑáM¡œ?§ï?Œçt~€ÎÛèë\ÊŸPýý6Ðs1G‚2§Úš÷t?5ã,s*Á8© ®~ cXµb(}þóI»kûEû{Ýøå¥“˜ñ™xFó»ð^—e¦Ï§k9+ÜTÚ>J¼/^Ú…Vi¿£/·SiØçº±æý”ä¡Ög×3ï¤ßC‰ã¸8•RÊâÅ}tÒîýx³š¾N¤"G&4ð9HÁñ§ÏéœÚˆùÿq2vïI"/}r‚ú@ü{Çç)özšÒ‘†`»NØMYŒÙ½æë”¾™³7cZ¶¹›Ò.9É;Ûüoú½¯:æG—­=PÞƒ”ö£xy2—·ŽÒ+ãé3š|’ë&˜Ëæ¢Léç˜åôûöxwBž­˜'ÇÌ%˜“€\ÈE?æPÙ@ù¤&s;£ØJé)øÞ)Þo·¿R޳êRÌöT,ôÁãÛh=]{)H5ó/DZ)}Ô”[ìÔZi~›v.íkU˜ÏT<SÓÌ5©}Yâæ*lüyæ÷èC„>tÓ‡Ñv¹«©lƒÚ¹¨£-…Ïsþù¾Г¯S°†}Ø“ÝÇ©ŸQRæq¤µß§¾CIåVÜÆ_ôQwÑ·Ž¾xµãVß Tj ù½ãñrQIYç²xXCEÌé³õÏ} Òýú:¹Û3æ8 î™”´»/.Ý/¥”4ú v¾y&utº¨ŠôýÓ^»Š`_‚ꕉÿ{‰ÿûøKšh¦ÏÿÊÆ(b®¹—R7Q¦;2Gͪ»À|ŒVÀ÷Rú瓽ǀñ@m—Թͫ©œI½8F£ûìñïS› Û™nN%Àk{ãt´¨—3ÕôÑ·&ø]7ÉL£ïö`ËÚ{ãr ƒço“üX>×c#«³M¦X¨æÆÓx^ó¢^bØ­SßC^{9¶ôÕx†Œ^âÐõt5¤3ÄõЬT‡:&ê7Ò÷|H­l^C?6ô n€7ËÂO‰£b9ýnD?wá\JêýÊ®¹9Þˆ!µnŠé$©ñôÝ=ñÞ|¿GÈÒlü² s\H´¡ì—œ¤[|Er°ë+šîžÆ´ŽØB?W><^Éu‘&§â … •û*±ò‹1ÇÔŽ ‰Ö'PülÊ{V<ïvnJ:æEÏó¤¯Û¹‡Aþ )u›iô9@v4™¿âV!aâ‹ñ<Ëâ5üæƒ9ƒ@¾Žƒ4}oõ…I­^‹9¦EkPþS®ÅsÉñ‚«ìRò½ú_$/¡à·º ž€9.3K)Ç­ÝÔ-WôoɸÝgÝG‡úGhôK»ðÆx=oAjÝåfArâéß¿þáKæ¡éæA‚:õ%ÕùªÇ½jx†>èñÎé¶¥K¾ù }ýÑ—ÈmWwÇ[úõ—ÄàW˜k`ΗbV¸4æ]Jt“‰ªÏ<ð7hmÌ|ñ9‡ƒí""29«6‚}°¼µÖ‰éYSÏœ>ãÒK)=Ùž“6uô/ÙÖxΚtXẊJæÜÖ«w%Ù!à*¹ie6IEÓ«®9·õ„­ÍˆÅ¢i´¾JŠëGÓ<½•rxXÝ0ºhÎm'l˜P§Ì[n÷ÒNÇ'i¡½'C'$åþeÇÁžYVëÇԺÈSµxê¦õë]í…¾§Ufê^£z¶’×NóÅïÒå¿^‘e”d?ˆ‘‹rô…l¿^1-´ Q|õªÒ¼®€ ñåÑ5ð¾@íD\ˆ¦ÃHtàÀBÜj†173š!âçfîÐñØÚTÍ>¤y+k§ ü»°l¿ ÷?B|>Ø1ÑÈßi>€Çy¦ýÏpÑcMEåBsÜed@v ìúØ3ŽWÄA3$Œ÷Âñ2Na§hñŽýóè^a¾§KÆú_øH`²g\4%|¤~ÐܲàUÙêWá# ƒkøÔóblæ¼ÈâqtÌIösÐBåx#R"U˜7ׯïØ@2ï9…<™ ¬b*Úð4¥np–ÏÕzÛœŽ¸‘ÓÉ(à ¿•=ƒJ"¥ƒbÁé°=‹ö'Ã/©gé§f6 OòålrmH-™­ý¥-m€}§(1š‰{®ÃÑò€åE‡ }¶ihQ“«dúAõCAy‰÷XÊÑ 5¸vP,[Sülú©öåjr]‘ª /ÎYœq1ÚzÊc®/Vÿ–×’ÿ²æÁ4eS yI¼![Øn*wo(…{Ôѳk°$­t£ÿŸÝ8,ñ°»éóו¸ñ›Þå*‘ JÜ·B§$-ú—ÈxÏã•ÈÑ4r l7ØÎ®Fçeâ*ñT˜OÀŠ@Z‰a \õNÝe¾àoèæB¹`h`„Qäiò¡3ç ÞX‘̈"ƒ‰Ä;¬·M'ž}r´AИ+ãåõ¶PLÒn2ÊÜe¼„î]h^ņŽß7ª½.Ú]掕ÉÑ™`\ëÉݧ÷å­;¬ï«äÖ—¹]eÞ ó Ðà¥kÝÒµ á=ù'^*±S²îëxr? Çž ÎáÆŽu%ßÁÂÔû\erA™»~&Fá¤FB±ñxÁbÝŸGc±uûÁFµ[?œ{°bQl•ÇTn€Ïe<šbãvZàv‚~­¯se²« {=üb:Ô‘ H=Ã(²1FÕrD`cq¹oÜæÌ;R)ÊYhþáöMdFÆɉ4g²IÂøDì~IØõÌôå(áGá­Úº EW[×b3÷b±çÓ‚*·6 ˆ‰oÅüîùѧ(Þœ;R:$–¿WK™]ª÷DæHzy¿Ks羆÷-ßž¤¹£~c¦ÛXàA‡"ú—ùmÐç}•d)0Óíš #f‚.}Ï-}FìK1bW8¬»@ZæÎý0ÜÓð ùáÁ÷oûà_ÿBsӣϔC  n­0ÔãXuEhfN,T31Fî¥öéoë‡{oÌÑýÝzUŸþž²­f¢TÕgÌÌ!ï„}ƲnCë‹*$¿w!’÷ðJN=^I›ð5æ„ÅGðÆíP´E“MDC¦ƒlž†`ÐØêLó‹¿Â(´&ÅŒò C:N-zy½sÔ§.|g+’e6 ÕO$m#ñ,²>ǡ܉¶­À@%³>»äöYÈeå}0 ;‹ ÀXF‰œ‹ß>•AÇ«'Æð—vú½ŠJu™·Í‘ €hýöE^ z¶(áÿ‘¸žÕwlÆó ºÕwqí4xÉÆ+ì½ÙxٵסT°¬«Þe°Õ kp<ÍJÚ ¢_˜9÷$V¸Tb»äòÞ s3°wGQü<¥Ìwn6,?®Ä?Újë¶à ¡zÐA$Tä€ xÍ(ïÂì)cçlýæ'ƒ,{¢…u2¥¼ÙoWŸ#*Å8SÔ´ñonñsuà9(vNõY•w E£å_é„÷ Õ:(¨W¢;L³p Ò7”÷Æü}0ÁãSÕ ¼Áã“Tðøud4‡üÿzóП‘=0zD|P—ˆ ꌦòû΢vB4[«JêNÇI+ýÊž²NuŽ“6ŒX¿µ9JÍFæò¨»í묽õöuÖ~{ܽ[‚_B4'DÚ4îæ ²Ýñƒ²àm€ƒ€±žLv¯ÔwveEµùÚrŽdæA«¼Œ SÒ¯²¼Û(ÊT4QVcf~ Ãÿ=gü¼?zt:• ±.œ‹Ýâ‰Ýâ­6›Q§ïR‘—c£ôÀïž" Éókb·L«6g»Øà`§(jÕqBâýJL 1%LÎ÷Š`TÎrÔÊqºì«Šû¸Å=E6¡á~$Ú²~î¹þ.HÂò®ðKõç.¬ˆQGÍW¿g#@-âÎÃXIwü¯°E5•ÕæCN»ä «öF'wýkMjû'€«K¸=V‹ãç—hVÞ œLWÂ÷3&C·e9”F´·å ŸöÞ–eeéûrßÐ@hKÔîD4Ì!MÄêEZ¼ÚHш‹>¡ñë:ÊM* ÷’ÊÉ=,µ-œ§÷à};”*½ÑÑ$?›ü'¯ iIMßZ[Z ¦%µ |m!}Kžõ¹žÁ\ÿÉŠ³ßaY:¥je”ðg".†í·t»—[«¬Œ„²p©¡#ëŠØSè¯(öš+š÷þ€köÁV¬;…}W‡ˆcîÈ©µ?醱õ1(+›Eô¢/FèzÇ:èØÊ]i¾ÿ=ôì•xÝ$rïd|§[*í¡ÉNëèkªý6Í~³nòðÕ‹eO·õ¦Ó¸wA‰¬eWWZþ%ñx ôÙŒøGpîˆìjóá?C“‡•^mò¡Õ-è}%îw’t‡ôXf8V¿T”{$.ª4'=Ü*?™WaéSÚX)ç¶åŸ5áT5üt•x9Oëç &€bÑ+­tãÇOZˆù=—p«·Š¼ˆfðœýU÷¿3g œÂ?ž‹Ç¼?˜Gó÷§ñùÛj˜ŒAª<¡ç*è:WNÞKÆ/ð5*᪡±E¥¥Êû¦™E儊ó͹ì^2Ô ;¨T`’¿)¡Kk¸æÊ;"n¨¡S_Þ7Hn‡:4ïHµy³}ÉéÍè4XäD§±³AÃxjv/üÇ“A/ÅÛÈKñïÂG´_£Oƒ´d½ØÒãÝz€{*~›j‘Ù“í·i.f;ld5;Ê2/‰‰JJøNΚNIuç(;É«ÂyJãD~»HS:ÆŠW¥q‹Þ&k—ö܉ ÔBõ¾súB¼|ÉòÏ”Æ1(›c’²þs%nÓcç(áq9K‹òS|É=Z <ÑT~jzyLÍä¼x§ßQgt—UþëÒåÚÂÐ_FÓ0üÍ~†@1£(è–þ¤Üõ7îùD%üg‡‘:ŒÇæ¯íÆ£… E#up¯UŽDRsX­Q߃Ò.Ðfæµä) Šœ+ê‹x‚ìX ]FJgl“‡g—<‚@k?ÑïDo`4\5æcèæ#®ÕµD‰«ˆWeLCÊ@¯Ð±óÐ+4PÄD.šJµÉ^ÑXgÇe¶>ˆpê±û‡.«£“0n€Û†çÑ=­\l Ö™®MI$°[ûm„ýÑ!îag \¡MçŒûùF–+,ÔïÄMet~‚N¢çSgSgÏ‚ÆR¤'«±)Vcµë±G—ETJµé±üýèUè=\ûoƒª0îDzÐ>$±Ýx®‡7¨¨©j¶hpœÕIÎðqµªb~5¼Ëèà¾XÖ¯–1†¤;õÑÆ5nŒ´YìÖ¯vÛ{k,$B ž¡¸—s)íÿ¼2}9$IõKàoŠºþ:ÕyÆ÷|y=«½bÄ¡–¯C}«óð2Å_Ð+í4¤Û}Îhîñ:pŸ,ücWšsè7Ìr”°vOÒ@¨¤&ï† iƒ[ô ÓÜM® Þ ³\øµÂ‰Ÿg9¾ÏJÃV¤nÀY)›°M³d,¢B†2’î°-ó„êÝMi'É×^‚—·ÑC·Câ9 îë%î:èhUb—0o'ªÑR\?Wº ªÝñI» +=fkU†Î[\„‘ª»0Ðf‰[厭ò Ü“Ÿ±¢bͽ 6sc…® ¸k w|®BD™·}†Á©Ü:;g$¯ÕæŠç,¢Ë5äHM%¿V˜~È™)éÉ÷õ“m›ì½UÍCÆŒZ:,eÏž>T?´iȆòXMª<}¿ú™²ã ²ÃCoI{Kö\cós».በ^0öd²_ KàÁ¸ÞÝMž *HÐ#Ÿ£•6UÅ6TŠh±hzsSÕ©éU1ípu IÀÇâ };&‚ÉW›Êß,–ÛOsSøf@àºvÒ 5¶ï©©6;:-¨/ôÃqKÌ„û:Y‘|Töú–«ÞêÚ È Cßi„>¥GÈ•ËÜlXDnω;ã« ÄñÍIÜ/ªèû—;íámrˆ¾]dõmü™CEôqÓ¬(‘¸]šâ‚EŒË¥uYXkÜ£jE†¼H”+D¡ºWRè‚’µ6Vì|7ÄWÆqyò-/&$ɸÐôSÚó¡˜R"åG›\äŒbÝÿQ2a]TaZr/üÝô·›1€}þ’è1&cGÿGèã¥EkZ0ðÑyêwàoŽö§èåMU ŒòÑÿGÊžƒB€¹•=®PËQôåàÊß«M?·ÄÖ¿>ª0ŸZbþmþ²@ Ï'¿Áe+áÒãæ`\—Z×9çãöðvÀ’S{c‘¢~Ó~;h¿½rÊ ›ÙÞo½÷´‡_´!ZÄHë‘÷ÑçDøÏð·íä ¯|n“N©Œ!xñóyêH~ÉQóËEJxmy‚:«Ñ>– #ž{–½"^6šu4ÑgùeOK¨o¨²þ)v{1äð†qˆbã¬e\Ýþ ²/ÚMQÂ+!gä¾ch¤B ʶ}ºü‡2Ä„…½èU0ìÆ_ŽÀPÔl9`Í«h`£s¹‡qF¹Üú/ñ=ïw-W ŸëÐÝ4êQ¢²±§¸_"‚£x 0ûÚ¤?c“דԶÅV¼c¬#[õóKº:à1Ò#;áoXÓ}øMä`"ÈÁÖù"áÊØÐÒ,ìÓò°ÿÅ?lìã"‘ë¸R ϤUåÌÿM²SŒ,0hœK"»qõÝÏ#ΦG°±ÖzÕ÷4‰Êfˆ²M¾B"¦äa0"<ö32tú]Æå®}Ѩœ:'R2Í›xä ÎÍÑé-t;è.né%ñKÜH–ÔQÈQègð«0â˜Ð~s„+FŠÌSbV^â{@–ÝBøwÁÍÔw£à0J0.Þ$ßy\·gë·yBôÉ¡N1èEÏ7Jrðšùd{ÿܳ0*Scˆ™‚¯à¢$+¤*¨ú[N%Ç´u}4^´„zµa<[ÈêHž`¥úÁ @žAž€î^I´|Þßè˜aHô–öTâ Ù?­Çï%g†]!\Ü‹R80“ö«¦_©NŸ¨b~ßÎF7²¹ê˜è?‚ÓÏW#ø¾!8ý5œ>Yiü)Ya1ƒ®Ýmg7[÷Í'¦ZwÚÙ'„ØÑî…Éhªë¸%¿;[’شߎÙoGÅ[B$˜‡®àÝ+”‹3!”Ë…V(—tÊeló·År í!st¹?z4NÈèæFËsIê9‘_æ@ó­@/‡?ŒÅjiI}öG¬*ûŒÔsq•¨‡eÔd¼}m© gC¬zÞzŸ~ÝXvºT³Ê}­ÊŽV=ì8ã§4’•å5¼‘b(F«¯éIuª)Ï}JRexC‘Ï0^¥qÍãd·BiXÊï-úÿ%¦äpJ²-í/¨æ†vcÃê¡ÝjMãyvý±Sc«àÿ“ͺíc¯(öqAµYù†auœ°†* Þ\ôæµÓ<ø–oî4G5´‡ûíÁõ 8<©µ*GÍ͈Pç‹ð~©Nå³AÈ`±/…ʳçéwüë,ߺÑU“ÁºÄOüÄ ÛÃ}¢ÑBŽ/ûï7FEi|7Ü"X¨Ë¢–t•sZ$™Ãà×n$šùÛû1áí¦Ú{(åÈû– tMíý”ò’2«ö!JyÆN¹¬öQJùµ’Sû[J¹×NV»•RÖY)ªïa^í¬ÝºD[Za^c)áw vW·«ì"†qxâ:àìhEÈV„äþš¾„êÛ©zç™ó¦’Ъ=÷ð‘xÞ·)o›•¢7=t`PtŽWí±„&>d*CS-"䪆ï#<ðq¶…‰¾HQW耫§LÎVÙ#ö Ø~±/ÞƒûœšRpıËkûê`7úüêÚi(ælƒ9ç¢A(7dS=wª.¼€è^wÄ–#šŠÏ ™·È–)‹c«*ÌF¬-ã¯XÛ«ïYµ©U(e×{V=ƒ:¦¦püÞžTIiü5ò·URalÕ ó fB,¬õQöµVjzè@aT#üõ×x?¾k•¯f² f™Ì”.;¢%zOí9Ö$»=™µR£í”Qw¡½4Kt,'A‰îÁ,«·qòíÏŠ­*57¼ }ϧr^×ê{u­?¡…Ͼkµpdè@öÀÂ¥è¤Úy І­ ï@×W€¯ÞvX9TòléJã[‹_ÝÉÒýÄahM5µ¦Äj굸ÝÉŽ ›k¯I¨ï,»u NrDWÑaÁô¶`ÎTH¸SE¦|7¾óµ;.O\0¶°j«½6á϶Ñ[{5m‹¢tŒuY³%¢¤§ÌéV›èbÝ9ßwÎÍ,ìÝYTÄõ‡­Þ<ã¨Ï©½9¡—Nè£%£çÕ®L€~ØæCÝ/ËmÊV—ñh#{ÊR$ úŸKý߇ýG.eó ˜¸Pøö¶gã` ì´˜HVÓZb(ó ‚å :I¤Ží&ñÝåÇòÓ°ü_¦Yre8zÎiÜIÞœš¼ñm\`ï&‘¯!£âB rz ë}¡£ËC}ÙÚh‘¤*¡Ý¤®”Œòß­.°a.µ¾N6î|%Íô˜æfÀh®•„a—¡ºuŸÆNBã‡é=Õµÿ«½ÐÚ¤’ÞQ¨1î|Q4çÀ›¬ìQ%7;ÐÚÌ,{Fõ§4ªw¿mª‡Õ¬ó£s€þkà äô£·-â™(f «í”±ÕµùØ’­Ð’ëS­ýK.ëh‚S½YŒ ¸AGÐ+RŽüì@ÿæ½M3¨iÝoYÌ}Ní]”òÉ[Vµcªk¯À²–`YOqå¦×²T)AD“'ˆè Â\€eóLó€]ö¹b2¼Ó.{¤ˆ³×ßeÿÌ’Ÿqeã(â˜ô#£•|š%´jƒt‚¹Ó´¹QIA‰§¡Ð £`î<íR?5Œ|"tí\þí‚ßÈÊÚã>”/gŸ0HÙ˜PâËß«Bc.ÄÆü“bßï³u–ÐÇQýDè_úëú,¸Gß K}D¿^\‹ 4¾ˆ^Pv‚Ôœ58k”³c«œ\^pù¨¯;~ŽòØÖB¸û}%F/?$B^Ÿµ(Ü­¦ë{²LÝ,ÚUIbî£Ô»ô¾AÔk½Ø·n·Åç 5Ê=ÇJ“šÇn .9­w·Õþx’“ËOì¬$)áuÐÞv\0©åµï#Æ„¸é¼5Ý£"lS_LVm.†Åwlª9ôÀîoiëaõwòZúŸEæÿâz_×,¨®Y½¤ZДÐr§š·{0(EuMeìiL1o<Ä{VtT5kÀâÃ|ñââñ 1(ë¡zѼÐnZ»hZh7 u-[d|ýËK“zuÂTQÓ¼n·5¿hÓì¯ã°gW‹´òt‡£ºv*Ð…{ ‹/:…¿v+¿Ë¡eÄç*î:>Rw“JdœOt]ïI Làö’ôÔ÷‰‘&@eÛŸô9~×곦éK¦ë­íE9ˆÏö¢‰ä6…ùãN4 Rî 3û#‹Î¸Í;¸Þ…æÛùäÄè~Ëùä! ÚÅ=[éÆž‘iÓâݼ£[Ä¥êTjôœ6ÔÑܲžb_¶6X´iÎ4ý E©í…ÓHM/ô Þ.ÆAj/dÌ͆XiКRaY#7¹½ýš:ÌÂId£Ï\Q‘…ýAZN3Žà¬rt‚Áis¡Aò¢Â …ÅBÑŸÛÏ'ƒTñ«õ±¯ÚÜ0Âw¦PÚMKdMÎ䡟fÂDñ‚ƒP(zà1Ø4/[ù·ð8)ÍÆ£çy <9ÁóP»&>Öµ©£ØwîÙh…‡´¬ÐO Ѻ§8ôÓŽU3¬Bëp®Ÿ$ˆ¢däÙ°ÕÆ à¬XÀá-îxÔLãšLë«‘ŠÎ¡Í»Ð?B<¬è¯_9ž¼RH±±QO°õm÷wò§@ þG!V~}>ºŒñ,"/ͳH-ÏŒøûu¿iÅãˆöx ?ÇK÷9^i’ÝF•ioGÅü¯ÌÔ‡C1W=ž[S¬áôEæÈcìa«?²DÛƒºÿ}½ê¨kÙûõ£FÕ+‘ÅCe½ê•¿S Uu¡{Ic¦jéÏß[?5uaCš–›ÿ½«rо‰L­N‡N(=5ÔæÇ@g=„ÖÂ÷ü[ •»+aµôükf(ëg!cA™ ½ÌªØ)wñ cQᢠ³ãV¢06³8ŽÚ‹éîý³î?¨W½iTu+ÛÞ–à%Чl;)Þ4üª7±å×O›3ì=:¾6ÉXVÛðwU]úÌR½fVûL&þ™Dü‘ë·ÇmÃĹr¢1þWc;šj © 5”³…ÊoA_ÆP.î‚9pޱÀ«—÷Ž›ä 6ÔÜ¡™¥R¨f–£ ÖÃÖÌ””ö }Ñúœ–h]ýÔÀVu%žÈnkïÉÚÞZm^‘f‰‘[BšëRŒúÌh LwÆtPS½ê êÚ‹0ˆ=Z‚FÂý½4kV¹ìƒ²Ù´/‚éúôöB®J{S1Š6$8Ë—M¢ ì-ófU¶ê«®sÄžÆ æäžÜÍn†¹ÇÑsO™Š QQ) ºÿ„—…‘ZBÙBm^‚là W™jjpÖÈBœYÞƒ¢¨ës¬ùCKÛ‰³A4e'Î60<® óÖ9V8Tm•>}‚Dzü-¶"3ŠqœÄ9d‹ ‚Aj:¤ÔïLºÝdÇ+±JÝè´ÅÓŸ‰Å"¿îêµLÆ'HØ åàé%{~C„V‹[næºKìëbB5 ‚¢õÂY¿žiÖ¿Y†h”ÐâÀm-1âÉSšFU*v8…'Æè‘’:ùµ–ßho5 ^p£ÇÚ«¦‘ÿMÇôö&ßï²bm‘!GÀËw@oíèYÜÑa" —¸B}žÕó0(È»Ð×Cô*Ú¿ ESËKˆËœ¢ŽŠfÙçw îØÓváÆ`4eîFJ€œ«†ˆjÖ‰ù€ö jüýù™êã÷Ú¨ ÒêKåu§Ì•§¬-¿y¾îks¹”Ècøû ste©4‹ìÏc,Ö˨6_ ‹p ¤§Å/”ˆ»auRÝsg^üÖšRÉC8ëièH•ÞÓ^|ñzñr~,åÇ~ÜDc· »„îåéî^hM¶CM‡Žá‹Ö«WdGSõ{ñ‹ ÍD¿:0wäÿ¿iƒpo”œƒÂôü3|æ_“­‚X̆§Ö‡_‹³C·{ÑÙÖJ¯¹4™ìö©”0Õœk%\G ×™WpB¥™—'\q-d ÛÏ™¥FͬäPëÓ-aOÁØAÒÇn’ž¿ÇsTWÂ×WÂ_1$ûÌi0GÕ«Žþ£8 tal÷òc ÂIåÝFÕQš º¡à‚™9§/¨™¨eôÌ‹ ¼K&¾Ã1x<]šI¯1±àÌh¶îvžHÑ~B¦¾­úÜÈP‹:äˆWý1̼zU§¡AÕŸKZ'Uý†TÕYcžw…æ~ Í_Ö sdN~¹¹j|ûLÖ'g²>‰áÜwà-èÌ é±i©5&jj|«'ª2˜~3Q‡ðX8þ'¬’iÞ4ªú0ž^Íx1uq=Ç;Iw…âåBÝÿZÑýã’ŠÖŠn¶ì—y@vôÿLç=—µ¹nh+‘~ÒVâ¼µ­Ä¥¶•Ȳ®’”ŠE汑Å ÞžêPçgd¢Gj›« r-€\‹j]íèBÐ)#¡ÛäÌ áO)þ)Â?‹ñ£¨•p™x完wk/DÓù.K(«óÚCt'@F»øÓ]GYÙMÁl#”²hõ‹læÏè´?:Xïì?ûɸÿ«Pg-›DI8Ú”| ”ÂÇ@íwZfíwN´ß¬ítY‹ßÜö›}ަXGHnq„”õm'HFê¹’íôŒql[‹IhæÏöÚ›ìtk,ð] ÆOszíO'I@=€Î3qÌKþÿŸEþþ\ãsÎfCM%eL5_vÎB04= ýöt.mT=@:ãFê¯2î|[ì((žWœƒ9?Ù9×aô14ÝuŸŸÚñÓ dÏð€•õA½¨T_8«:¦=`^tÒnz!·ÔX¬È4›¶±áÌÐæêÚ³±´Û°´LR½R Uh´YöpelGíêàó¶}±Xí~ÚÚ»ÏÚ̺ä†P½ì@«f`9yXÎAîSP…ù¾SÏÂTŒJ¤÷䉿վ‚{^þ‡+ÌŸî³÷O«k§#h×ÿèÝÛ>HøbF¤}šU!ZJk+z GIê¤ðX”-uÊŠ6]lYRa.´6˜ÔYÕ毠ÀhQ褤Àbf’Ú y’*\Â+håD{„ ®ºâ×ëÜÕ¦ïet±ˆ¬9Ýòc óU‰/´‹Y ãɆ±‹Ã^INM#_Ò½3}…XÔØJ£Ä«l+qWÄVú̽¯ZÆPgw¼Œ„("º'€üùE²x³§g&®y*ͦ7˜v{”ð}h0_{â«å¿_ëã÷ÃB·{†jgUÖNÆ›ñ#Y×›‹Ÿ÷ÈŒ•>ãv/†FsÈæÜsÿgüc²×}“1™MsÛ^³ÉNÆÉ´a",_&àøó>ê>蛿 \ ôU¯ªD?éÞM6É>- ÷ìîxÀ.ý—Xz ßSï¿Yø¤œö¼£¢¥%nŽÆB_}Ph¥ùŸN[;ý1Bÿ,ŠXƒ0¨4ÆVÂh_Û XjCª¨ô„N¸Š ÀPŸ[Ýú›¬¦G³ÑômXtôsè4zŽÞ󆶂߂ ÷‹…7ûÜ­PP÷×½¨Úœr­â‚AzUÖIѼoP| ´ÀÕJ%Õÿ÷PO£³#Å'1y(š×á‡?Þ—…(Þ"•÷A3^c¿«Í D¾¡Íˆ0JÚ|uÁbx´Ž¡¦ýÌR¯†aW hÈ/µ†üÜ3ÛØ½sG~°°÷aK;×J7>d+á_6»@ ÿák¶KˆaK~û¹Ø>Á&ªÿÛ=¤>~~¢3Ã3ÍW/ãø¸{e4h¥Îa¾uŸM*xd0F=›ˆë©{lâBéVi~ò ËÊs/^v³î®M8Ÿ'.aÄ ræ;äÉq¸qo V\hùplÕ3…Ž``ó­ƒ–ìI¯¬0'üGéÛý5ŠP–}}â5#ëêÇ3È~=wo>…¼¯ŸbYW’´1èj[;«šEÂÿjý‰’FI£€ÛÕ§r€;ëÂH%—-,æÍ¿¾@¦cP톜¼–üÃq|W$8Ã;YŒwEtÊY"æ^û‰ôHr,»3ÆkXŸI8”ðÿ0^Ãy»ìÜÃCìPÿËÁ!DÜÞKKŽÝɱV7%Ån º¿§ÔëÁ•掋&nàí¤œ}^fæð´1‘n~Èü(åÇ,Ü徨Ø#¸ì„¬4óªÄ™×»…ö×6‹ý5+ DâúÝN¢xr£&ÆT ÞEžlGpõƒÁðr€..3&vuhp¾ä¬67êØUî£+ÔBËÍi=%ÐÕQ˜&ò?vCsR«ÍÝ/ð†Z‰¯Õt@Ι ¸¾a8o~7æÚû¢CõžêجÝ\Êw£B{hm§™bE©ûËïOàåÖ‡`oÉùÇ HØËmï²ßBË‘öŒðD]°ö DUa^<’ó&Z}Üz)U§÷ö;låò[‘¼ÃV.ïðÚo–êÙSLž°Ÿ³ì“Љ('4Sð$‹$çIJt?Õï6 -±îcG뎓<¾È|úE¶?’a˜ÂW¸XÕ¤½½w #~ü‚A¨Hß)`!m÷½Ó™ðw±Òéõ²×Å-°Gîƒ Ís<]¬Êgè“#°4Ò?;nq:l½sÙ8ôJãƒË˺—éÈh"R*(™W?h©ŸÓܽŸ‘òy¨Ðàõϼ´Kú¬ÛRN¯~ðAÐEYÅÊQ ý]WBo.vÆõÐ,ìÞ»%³ãÍÊÐXÔD;^´ôìQÇ ‚O)IúÝ-²ËT½XLe:çkØÁQÐÁØäÛéJìØÐí9ŽU£PQ.Ê1N´VõÍzÕ&ŒàÚL¤àß$ò%°,õ7êU sïõz›þŽQÕ¬l«Ú ½c”7*ÛÊ7IŒïºõÃÎ¥5lPöŒ¸,/cG¸î!£íƒâ³Þ¥Ÿ˜äo<«jCc¡å./)žíÅ$DpÍímJm„}-̉…*&Â’ûöBÚH!×&£D§ ¬úŒÍŽÃèûzJVÈÚq1Kˆ)v_¨®dbZ®%•㕬«Q˧h¤è?IŠ~ó3 èÏúýwŸvtÀÿ—ÕÎûTèí{Ÿ±Í—„RoÅ$Mþ¼Í˜5ZÈ”w šÐ뤜g/Z·—"\Ò›4â(ÆÇ͆ÙAÎò”›GK,/ò– ~¶¸_úw™/´GèßkS,s|X):•ð^ÄÔµ¾ÞBÖÀÓÛýǰ…Ñ4x!ƒŒÂ‘@'ÿ¢£”æÕ|‡ïæÿÕíâ+Þr½GRR”ÆKøÍ©4æâ¼+¨÷*gÜÿ§Q&î÷)ëqëÌ @š²ÃÕzÔÝæÿ›#ÝßÙT"mðw†ö9ÉVS‰ ~);Jœqø%µõ¶ùÿο sf›ÿøo^ßT’ÆyR“ò¤$æ)‘ã™"Pi%^æSvT:[?q·¦8Òé—Ôú‰·­0• oý$³­0 à…ÃÀ1ÝÛ%æ‹­rãÕóÅg,µrlÇ`÷Åû~‡þ Æc&"fãßO.‘;†[ØÖJ­ Ö9en˜`4Ü Vªã …;Ù>r› }†¹ÄØÀò’4‡…òîwѸö¤Jêtø:¨~’u]*í5HÿþþïÞR€tóAü½Ìe]Eê5êi „î0 mtÄoVT£k£M†µ2»¦cŠ‹úç1oÜ€ë}¸‹›DWâÊÖÑ((Kæ8u:,ºMóÔ¶nÒEû ¢Ô« 9ä#`zêaíbŽÕöÂß \͘cq5cŽÓÆ#É©£ùz×*àÁ[6ÙFðä£Þ“®fÂ_XˆÀ_ŒþXï¬ÄË/š·×.ý(æ4ëŽÙG²× µÀº"eUb}gAvwýCVKM¼þ9x±´M"Z^ ´Œ¥Aï®0?û 5\õ þ¯ÆõÍêÌêEÔöÝ+`‘$ø‰×;ÊÓ0.r\«ÏæÍdÉjXïE£DÂ*)x¶ÙÚ`ãe>7Ú­4*RüÚä„;}¹æoŸ²s,“ì«h:ØþVÜG£8Ê´ŸYM ¿rÂU_¨ORîüúJ.£uàÄ×c:îûZø;ÇõàYwÂOî?/ ‡ð²0 Ö‡ƒqÄg®®$v#¹;ÿ©ù_ïÞkø„ý¼xÒ?nç¤áâ¾"¡µí‹JGÓÚ‰Œ>”ßj]Z‰ü‘‰”¦ âE@üÝ‘msƒëZ7~÷#­ÕÇ¢êËx1©ê(ËÑ‚ŠiÊÝÏõ£MßC*(žV?´Ú(?ºÐ¼ýEkë&èõ9¾Í›t·u™ÛZúUûÒïw£¡¬û °=4ÊØK`´ç’´"¼&:ݺï †Ï¯·9pš”´0œÓ`ó,^„«4_ÚxÆ…aÆè¤…!èÏ“*Í«Ÿ¶7?pÐ6=Ì x´{ ÁÌë;д‰¾ >CŠõÈxŠ‘m·9ózŒ™7¹(±`æ´zo%K¬O‚œº /ͼ‰_tBC¥ùÑv«•7êOqÊ®ÈÌøbtÖ^‹J†Ãbô~(0ZPi® Ð/ïÛ1{Ú@$øÈ¯¼ gb£㹌lsL©Ë¨Ë¨u¼ü‹‚……úÁÞÃQO<©b‘yµ#Ϻ.»Î‰|Á˜æqä¯pˆ5OÝ :7~+Œgs×yñ›7þÍi}‹ûï(÷åõäXéÕ÷çêÕ2AÝ,ÏÊ?pk—±Ì«ì82i(¡ÞÖÏ@›n©÷‹óHÏ_j™¾¬.®,þò‡©Çòo˜{àÔ^(²/x"¿ÞÜ{¾oÕ~I;imrª#ѧˆågÀáÃ/&"ž†RžÚqt0täºßV"²ô—{‡9zß[TEíT±p‘y‹#~^UW(ð‡KU ƒƒÇ/ª0ç:¬8¬u#§Ãœ‡ñ |žã²aÄ9iy¦±,KxÓ‹Ž7´l½·56uÜEèró>õjÕ߈•ç,ó¬~_K)(w¯~ËøÖ}Š–ƒ†–“Û«ú*b¿o¼Ãü˜ððZßßUeºÖKçX9|jèˆVüÿajÔ[î½Ìsj/ž¦}…¯ê´Ç#)ÿÀÆ]oœ¾?ý°ö$ƒ·ÉW9lOz§w“ÿ¹¼#´«ìZ:1Esï¡+}™Í¡“´‘‘vÍoòC‘¥Å.R|0Ô—¾êoúae[[ÂþMçùpé5q`iU—~8Á¿+ÁÉ‘¥ïÅAÒlá¿‚`F„NÖ§„ö¾u…öÔ·•#YNnìòúÔuŸ|„¢Ûóf¤øÔ^I,'Ô™ cKv"/ðjˆ6ŸÄþ-ƒ²Ç­ÿ©õäøBÝïŸB7iÒCÇ'ißÕ}¦Œ€—¡N ýý„ŸK›“ ŠæàP(ïe×)u ÅWÐt¥PËA\‘ÁBKzmèGÀ+Êž ª®X¯rëûõ÷›¢‚²Ú­= t¥¯Úføûzÿ*N5«úéµÒ”mí’^L£ª3rýûñ=I7o³1ýZÍËǘI­‘ö}Ov•=C¨1eñ–„彌#öGÎJÌnóÉ™ê8§9~^ Nïú*JP‘Íɵ@µÊžÔøÝQº?>ԋʾÂU:Üm})ôF,šÁïáÈß@ƒzåֿʈ}tc ¼€‚Òœ©ÜTÄàPßòUîs‘ŽBŸ8âÙÃG }¿O_u'¾`%†CÇSV­F[ÌEí^.ŽO¼y=ë2®¼Ü¸t*,žÑ| =BŽ%QŽ[Úà‚»Hÿ¡x6ƒ áoô2Ö¿$u&à4>«.Ïü?zκÔíæ88_¶§d„Su_ñVW ̨gÉô‡,?õ’Éí%lgˆjº^’ñ? P“ë\æ¾g„/:íâB'98w… øð®¡ÿ£ê ^2C¯yLû†+'›Z+ ˜ǘUW“¹xIfVælURHúÉõÄåÂ27æý¬m”nfQF<‚Ìx¥ˆ\ZÖßò|\÷’¸D¾^Žî©±·N…^䱫€üW(žÔNäS;^·æéóÔ2oåB¼Xöd ‹C c`^0 ®(]Èc¨¯,3î“…ûà‰­ôbO~µSàlm¦^"·—ð–)cXø 5 –Ì$È=,Ceì²Ê¨Ï½!t;ú”¬4'9¸gÛEʉ%g˜­I,4~oßï.Ñ€;Å %ÞHr¢RÅšÛ6ézP÷Ó«Là RzoÈasŠc°B(í3ªLe[uŽô†±J&ÐN½ªËUÞ9|Yçš3cø5…dBÑß0HKÉ/ï[ôœ[¹‘ -؃f¡ã0híe™“Îgcw{!µ]ßo]©gýˆu›:§¹ýœ†iLEšd>OKg¤ÖO“UÏÐÿ“Ùê fŠTöÎø¸r:p[L» v¹‰q—Zf°J…™~<ÛŒŸ£½§=ßËáK\·O®ï×Ûãt¬ÍØI‹!‡¥“­ëD; æ[X‚ÇÍma 7£¶…]ð¸¾-,ÃãÖ¶p <~ØNe4xÜØvÃ#c†¥ÃK­°DĨ~¼saì8Oý"nè/›¿ì?ñ´®/‚ rØ@ûɵµˆ…£èß¼ñS‡Ô˜·ÁT¶™„Ò‹2¬ îxR\A ]™yÿ=n‡ê//õW>„Üɦì³AO»j~®åŒŸÎO0€€öÚ°êëãU+({‚ßq(àô²DÙôŒuz7Ìn¸7Ôîí!Ô ZGB]gC°¡²Cíƒ:–ñ~m]z­‡ ÎPœ;ÔžÞÞAçIP#l¨‘6”jÏèâäõ2@žMÑäd„\#;Ãë.®-„æ%_óbÆs…Rèò]t'å\»’òÿ—ÿB2ô• Õáu—Ö>Šù¿ä(tHv~èúàŒð ]›JøáŽÓ{äÄ®ãôû‚*±¡|vY2ö=€è=ПN‚;ˆSl8© 6ÝK }O[ £m¨ÐÝž÷¬x@iµŽÏøO6ðØ62¦ÜF~>3ÚRp×X µ§u<ËÜ”á3dp†ÁœÁ‰Ð4ÇK~hgs¦ Pƒ;zMÝÚÑ]ðtrÿV1†D/ÏëA·GÃ"UAô˜¶A9³ R´îȲ`›<.£¬.»¶Ê0—b<¥J³Š,M¼˜éìæàw²ÕôàwÒ•ð0è31_gÇE_Ûþì3–&È)òë±Ds^7 }‚³QUØÑ‹Q„º¦ÏÑ·ÆdÛiu8dý $+XíxÝôÚ 6ñÕ0^)µÏâ{+Þ)iÑ…W­¶ãgí øa Úÿ˜]S@DaüäôÖ¼#ù_FDîCøü?5ÉÃ7È%ù_®ý\?ùu÷?’íâ¯cGdÕÂð½y+«WÎÔ;´ªÚ×±¦úºg1bú}»é2»:%âßR±$èþÛÖC`@vžëèÂÍ ÐÔ ÁOÔä0OBÁ›g°T)Ž”F:í‹?ô÷¥ ¬'µûÞ u‡ã2(²8#–ÿÅÊEpÿæµù•Ôø?ýŽý¨øàÚËc©Ckc!ø5Ì_k¹T %õwkñÏ©v§(¤*Iþéê}#Ršüãæ-[Ó ’ÈÊn²ôi6ãÏ7Þpà ½­'œzÕ£úË­'ÆGsßÑF䤖ÜÖ`ëT¨zƒç*†œ‚™Ú¸’^bãsOp¹%e¡“)õ¿•àh?5Tû¡=ÎFEƒ‹±ü»óÕW^y¥÷ãÖÏ\‘?“b¹ÇõòG›üÊT‰|•þzÉüÐÉ´úÃfd¶¹ k1ˆ{í^œKÌ×ÿ^püNÆÔ{Ñ-Z³½ö„ý£‰ýYqeB\ ¸¡Ýÿž*ÀÒ»½˜u§P룩_CNœ^•®~¥ì½›¤¦„NNѼøGlúùËlüòCm è¨é¸×ëóàùO0ƒ ©âü®¼{ÝKGWƒð×:9³Ý¬ý8!Û‚Â}eh˜žÑñ²”èó‹/ÐhæŽßÅ÷ƒ«<ë~*?øàƒ£W¥Äü]ÑaúáÐQ…<¼˜93Ü­”ÐÚôõÐÉ µë£5ñ\«ç†NNÕrfFKDyåžu·ñ—!uŽ…æQtÀSÞÅ,Ç>NÈ(jZdî¶Ajúe¤äW¡¾Ñ«S×ý™ÖÆ%Ï£uµüÿcïß㣪®†q|&3!8  hTR°%&hB˜€@ aÈ…@€¶J)µ-Â9”@â™l6£±B«­Ty´Ïc[[{E¬˜ ͨ†€˜@€€)œa¢†‹I ˜ù­µö™K¸hŸ¾ïûÏïóåó!sÎÙ·µ×^{íµÖ^{m¹{e V ú=Žˆ„UžÑæ63õ3ÉmN™/¤¦:pÞ ›: @Ýl3ÙmF{;šN´'MB>/j7ÈsÝö.òˆKѶLnow•…u6f¢ÿ¶Ö=XÌ SoCôà×,­ 5X¾ÏÓ¬ú=ëè>lÌ2‡ŒRœ;t-+ŸjƘ(a Ófiuƒ ¤rfX™Ñ{Ž·ÈŸÂØT3zˆ‡õŽaFrr¶E-Цz£­J ÕE@nŒ¤ÚмC¼FÁz i×D0Q uÏ0W\‰*9í‹ -’’+ø ÌïLê ¸Å@×Y«#æTO7~¯zzØï`¡gX«V§çT§†¥c´É*ÓÞÁõ´Ú›6G¹8¿ µ”áooŠÏÕ¦ñ˜^mI׃Ó”@¬Ó<+±· ÜÉí--f“½…µ¸Í5ns9¼VtÙ˜½¥øqßFƒgáÞ d Q{¦–7H¢Æ¡ˆÌCxYƒ£4DÄo ù|Ÿ‘ øì-îì.7(Sa1¯0Ï1OK Ã[%Zè^î.¾Ò\ÑUrñT²”°T<£­¤uul¸‡UùçÛ,³;*C¬¤]Ú¨ÈJæ0W<ÞeœãêØx†nÑhuuÀ²RZ|3Æoæ©Ðµ¨8É<¾Ô”Vò=ª§9Hí³ÌQŽï&ÜUUZåˆ A?O!ý6„xØ“doÝ`EˆUÂй=ä£bájW↑PÌ=•âÛÌê1'%n°Â—ÊÅjSö²(º/QSÅ–”ݪôã­8üÓ$ßx@²_çþȧřO௥Ù­'¢«Ê²øì8 Ï2s£n92g™uc 2¡‹»‘e™@^_gå&î0«W ÊZ(í>éƒZõJ”Ô)>•ì¨Òà3 Å×x?¾®³_ÒLÕ(õ³‡Æ¾§+zÊmÚ¤‘(~Oœÿ%õ.<æ…Ðx¹ŠLj¥ VU™Ö (Xaž©\èé(ŒíZ´å½˜ìVµ|T\ j÷’帬Lm3ÿºi}\BÉ Ë˜9®i\Ü2x “Þ-h°|ÓqfÌËZÔr‹Ú2 (i!7ǽ– ‹8öñµñ`ymšx°¾6C<Ø^›rO‹ªYãZؾ˜MìÄd%wΖXEæN¬1³*Äwþúõðe]Ž÷õjŸbøÓ»ðñöŠïú->¾{*þ,f»Óð!{÷4ü™ïv|°ïN¿GÄ›Û=&íž?ß…÷Gñá®Ý3ñg$¼Ï‡!»óðg¼çâCøîø!¤ej÷–ø|¯ôø¯›îµ_d·ð2ÜRS+£X†øG£Dï=Ck‚O}Ÿ¢ùoÈUt“—x†Cãü{¬´•FפG‰,Ò;}@M?³Q½#?¹QR¯—o÷4üþWGˆðºtÁëðÑMêûø7JzîÞÀ‹QŽPUŒÍnåtõO·±0ý‘–NñHM²©Ï3!OQß =]}Êlûñ©›w‰cår®¨û²wWCˆE9´÷—‰#ì¨D{jic¯ê{o’ëWFÆm.v›7éÕZ°Ó5ê¹h>ÀûBá]mÙ(}e_Š.IxäM|rgúÔ«ÑÒæÒ†þöf”ÖÓ-ÀÃ|á9íÁeÁÿi þQ¬5ªßMD‘^¹yºYÃ-|ïe½K )©¯ïßP\@¨vEÈ·¤˵0ºŒ©VòÞSúÖÐ+"âû±¿!‘à qso‘I‘®ËÀs,ÈN¡éÌÁq$JS+ }àLÅy3˾æ6ÿÜ-oŠbDfÞª½wÓ}v£p·6qƒÏ2É«÷åk,°”cÝú}ì}Çͬ—"xªëÌÆ á< ä|µâ2Ì é0BFŒÜŠ›:÷áòEÿcÿ °öŽ {y8™øü2ܘà¾@BG]Óg·õQ–Ñ Ò¼‚®ÐŒ> ¯f4giG0²C Ë}J? ×í™bA},ÃÆ½&È((FZŠ“-±òñ¼%Æß‹»ÇÈ}wÃý,(Óhžòˆ€¼¦;]éÛÕöÏ®;+®«A¸M"]È“iÑM¾rú­[.mÔÛ6âw¥É™¨7_›1¥g#ÐÄæÇ"¨m2|€Öé!æû­;¢×ØŸjôÛ·KK«Ì')ÜçCÒæÅ"ÜgŠw¸Å/šÞ.½cÿÔÄô-ökøƒ(x¢NE­@¡Gû  ¢IÎì>TdcºgVâ7‡'ÊÒûþ¾ÒúÒÊâ« ™_ÍWÆAQíF¨>+}¡ÊètOW8U>,µèþúÝ*ýà£Ñ/î¿èžJïaú}3ÅÝséݤïG£ùúþ J`pþÖÇ¿©w0îÈI[SÑóUP±H®½·?xþ®r·µŠöL¡è,ô×+9»ÈA£ªüž¶Ø/ XÚ=x#pqw:õ7ÜkÑá¸^¬4æ§Ãý»"ž7ê­{Gô‰ËxLwºäzRhØ› øSÜ=MrqŒd.û·ÉÓ®ÜCým ‚µ<<Ðåpêh›çCºÌàá°tÏX«¸Û®d}ë,ˆ¤fÂ!?Òkq·C‰¬¶G¢öFwÏ¡·H|ë }ðB²ã}oÀR¶Ù%y†»C¢·¿0kþžl,L\:‹Ž÷ŻЎ¤¦G\ˆ%f?M Ý}2’J“Ÿ~[ ¯ß’q¼ÔúðõÝ{XÃý¾‘„Ûý·Wšý1ÒËô¾B©¯ôŠÉú¤ùaë7Vöš¿²€Ë˜ x÷Khu}ƒäkœ¸óŒ–XZðÏHìë‰ô䵯NÌè’žûoÒ¯…2©‡ >SZàÃä‹|ãKØ»LökIv«ô\I݃‰oÍ«Æ,§>€µçjK/ ÞnEéƒ}”ë§TàíÐÁÁ×w®Kدpú¢Ï ² !è' P.Kc€ãe\S>Ádɉ®€žì?PýÀtúFÞméžÞJ:|I÷L6êïÀûíéž1þ÷»á}x:¹ÂÓ tžÝ‘n”\.½ɉ¸Üƒ´³É_ªý›øýôZÜ=OÁ9-HÞAÅݳýo€hÍ÷OïµF½i ÌÝG¿¦‘E kÃq^Nß6y­ƒ?Ú?# É¡Þ¾eÅݙğoK÷üzœYÜ/¹h“ëá¡·Z#áy Z¤ä©îô¾:]ýt1ãb]Xº]uºÐip+ÅX‡”qè%ÃíQél<wêür÷P¡ ÷ëÑB¸ýÜÛ>x]<’ 9ÜD¡ G¹âHÏC`AÕÉ_+NŽŽ•/ÃÃs4|Iþ®‚>±˜}¼Y¸ÜW}ذ>\}ÄPÔ—v±½"~Ì5´D†é7‚¶ßè¨Xt7¤âä„X%"ä+[bR‹ÑþWLö¿Ae~Oÿz’†­>9r Š_º£~.í­rÏϬ¿¡:=Û é-=öÄ£Ð,“z(ôx>?΢¶YO<œˆ‰Ó¾ÄI:-.pƒz½Ðõ›¢±?øÜd¸^Û¿ñŸÚ¶ˆÏŽ{ŒÍŽKê—CÍÓ èRf¯ÓØ ³ºoÑ7V!Ê/eÖ8(þ7k¿£Ñ‚b$ßܘ^w]:[gÓa0óEzö/Ù+Ñ®‰ßCþi:ü3ðÏø÷àgëã¢Ùq1Pî1öŒõCøú¸¥Ò^ë}ê•X9œi)^KFÑ—´a )Ѳb­:ú¿PºÈ丨ëë¹ë!—+eƒ˜·¢{ÓÔr#;6ð¢WbEg‚[éˆ,5…6s]O  i£®©õ×§Z~#ÿÀÿ´æ1´šà1ƒ’س±Ú n¤-ñ`×õw”\ÉE·“MKv”\‚¯ýöàëáó£+唦 MåMך=Pk{“v²¢éëMU'O46iʪÁMuMØÞj |”`¡ôá¯â#ÒwLÜñEqm ˜õU×ÃóÀÊêK®"¨òÃÃ:é}¹£Ikª;t^î·:¬¹®¹ÖsfæÉ:êÒF3@s¡ªŒ^ŠB›Ö»%}¬?áŒ+†Bàý –hèDøðØTW8º©¼±²iJ9¾Ý»ÿ^kºßN¼Le¼w6Nß²8üÅ_%  Z& ˆkbÄ3MSâðíÞXø ¸]Út/¾ãDñŽ]¸U:W²Û¸9–JÚðp’°Þ¸3®!ÙF07ÕC`Ö$èýk¾ ¡Â~ì»MD’É0y'³­qhua/ÇaÄï}z=Íáþ/ LCnÕ»àßø6ñà”ìCÀ€žÀn@ ‡(¾âðHÿ ¤W´Ø*ºˆáøå}Á¿N1ÇsþÐ(LÿÙ·¤?ç»Iúzâ[ÅS6 -ϪØ!ÖÈö þ·þ–$ZÒÖ,ÆEK$6x¼æ _ŠÈó6€1PîÖ_Ûðe˜˜n0L3c2ñ°iÿ‰Ï~œqm¢âVúØtþ×­y ©ªñRӾƺÆ}Mÿ<±(nLS-—ôÎÐ鉇sú¬_Xn)NŠÄZ%’´Žúïpø¸<XnšFSæ‰ÄÚ Ï” ±ÿæäDñoÕ¿7ÄHEp;2ìÉ\ç Gé h‡ òf¸ý½¸|µjx§JŸ§ï£}:Ê” ˆ ôˆÿÅ-m%ê"Üyw&½-`fe×ãj±¸úø”úǪI;‰(Iz'bzbeº`:#¹ QÑ{‚Õ¦xïñóg@ßL§iqOÌž(ÚJuúÓoŽ:Ö¡ËOÿ&þ ÁßËôE½ñ÷²À0t­ôkÜNåÓ³WYo ö ŠäWtò[#ðÿþ¨}Œ/tKü‰†;¾ 7êç b0$§uׄÔz+ýè&Èßd‰_…yÃØ—šÂ¾Î€ ÓÖâoû¡ùeþ.FÖ2ÏÍ(º„‰˜”^¨rGAùÑuÆ<3X}qÑm]Uˆ2Áþ[—©Ì|¨¤þÖå›ù÷z@BÀ Z<`ù—õ» zëðuÝÀ ýòû6‚gtCÑ$]”W¯ý§M~ˆÞü·±zµÅ(GSÔ|‘’!øƒ×♞ù!r>„:SôŠØaõ3cÅU#d‰dµÒ[À€½C0^Y?äÅÒ[Œ~ê¼Gýº‚®à|(æÇµ›Íg^ù xŸX5P:ýùú*ãíû!ùZ"íÓ/õy›ä(˜&(‹>®ôQ{Œ²¥L§°ÌبD{ž<Œ¦vû”pµÇ'G\—sto1]õœ‘WÏ”~£}JÄ”ÍòQÐLa‰P¶‡q¿4¤‰¯à1Híž³Ô @Œè,R×· >–½x×å6]f£D‡'áê ÓÔÄÍn袕5k[4­}¦RŸ¸>‡ï2ŒÑJÅ Iº„ç—Ëꛢ’jêd{YàëÛ‚Xá+ÝSqÐZ¦=lÁ9šâì¸qP` jŒžI8¯‹ÎÔ) >ˆŠænAò _Ñõm$‘zvt|Óý)·ÒËè:.„q(QŸåTÌr?˜:­qAØÍÚ/#HwŸ·^óz#úº  ƒT÷gõž=Æô¾‹Ž{~Œ‚Ò líbüÍ×"2†²Z@0æ\–oÈ@Æ:ºaâNzgâX©À²¾“X­Œ%ž]Kìòãø/Yuüsís6ØFû6X!ËXàßI¬•½Ô JÑ $V¢€¨ "áÁ£ˆS0´oAüý¼²R_°9µ'V¹‡JiF±“ÔÐ~öiü—sí®9Ú·ñ5ð-Ë¡Òþ¢Ò*?«^Ý s—pšK!ë¿.-cùDMï«ò=€},r½1¬ ±Ð¼Ž©ѾÎ{µ/º Ú÷¦‹ú¥wbÆªÝØ>ñ=á‡àG *1P–ØäÏ$Î#éðýŸ¯_W`9]¾1€*vkûô åߣòEÿqùuT~Ã\>‘ʯÿË_¹†å•ÿ¼ÿT^¾±¼¾~byiï@Xßn"$èéBó©8]q%*íKµ}›u>tA{Þw9$DþêECí~dƒ$Ä*¿&ûS @.,’Š„í{1Ï—zHœ·³&µ¢åðL ”ôN¦õï8>.íJ_’ï@’óŽbMìèá³(š±¦Ã-¤A² ñM‡ÏGÖc&RpÆë´ûMö»ÿ üN?üKýð?Ö þó˜ä/ùXüÅ~àiø¿€6øµ ügþ¥ÿ)üÛüWž ¬&²FŒ:W,£ÓˆpÚƒ‘º|:Ï/¨|¬ÏpH/ÜÏ_ø1ï:vÀ‰¾¼í^vºÏwÆŽ•œ创*Rƒ{`tC#‹tŒŒ†…æäáÂÈ¡ F±c߆:d…ìèÁjiºwÛ –vË©{ð 6: m;ñ…)…¿ŒxêÞ­ÔU¶[)µ SñÐâ©ä8nÆéhnz"ÎR²k/ð´wê'–Àk°}n·º ¤{pïD{q»„V.tÉ¿®ªëË[^Jʶ*ƒX·Ûà1J‰èôx–»öuŸú‰ídÝ©{_ öoô©{_ ög0À€ë}ðŒ€N4â9BëNÈv °ÿ`ý6ö^¿aôÐo8ò}j»‰7TïpÇý‚”|#nåT4®u‰Qç\¸Ècñº¢±›‰74añ‹>,‚Š%UOc•j»2`¥ìp…×Vò^ÒÃÄæ : ’,CVQ¶w®ÒÐ\[Ô:4j Y m7’ób8ZS*®ÚÙѪ¬ÓGÂ^ ?/‹†°ÈèÉù# çdê¬ðÙJÎQvaïB7C²z‘áím¡3]”Þ€@@Dd(€îLXT@½Âα+Ò[[EÖKÒ[¢+ì#ãI]†e>Yr–æÚ’£™0öy¿“Ð,³tÝ„×wB–!º)0UÏ¥¯ï"ŸŽ­¦ŠÓ6vØx€é2ðáÑJ>ëÝBéOØï“›:Þ¯ÏøA€LÇA#üi Ó”ímê*€W|a˜Ñ HçlF4¡Þb©xƒ„ö ~DÕT7# -67ûÇn‰”Q Mìp>¤ëð¡3MÖ„M‘ð.±»7"^WÌ{7áb÷õ¸t#'´û½Ü-zð÷^½Üèå¶{ùâÿÅ^ê8»Ð«—GG¤×vC÷F%ìg';޾è× :"ͳcF(ñMB{Pá%¡×W(&_Å›IhE:-yîîlŒpA({ùߟB4ïô)t[.¦ÐQÐ!½ð8Ö?áªVgÃèC·Æiyp²_À9Ô½'ÏÍ€ ©z-p±Ñ`e\CÅY›ñ’ée‘óe¡Â‹7(ð²x«ä¼5@ÎønÒ·9¸`žx傎’ÆÃvG¾~ÒJâ¿‚x0¶o¡ðÚ› P}ïŠêÍãÿ"˜ê¿&‘#@X0}tšj0Ñr@¼¼NrRüõ›ñò#†^Þhø¿LˆÍ½ûy3¬7+Ö›ÿŸP`ó·S`K/ ,Ð\é4ç Ð\cæZ¿æZ¿µ÷-~škíEsÅšk¼‘æ‚‹ñ‘àXhß>Ú·R›vsj{Ìx³5KV7¨©d+ô–>sÞ&}„/B½:Àí½–X“½÷ÀúK·ßqèps½–À-ÖhvÑ´ÍOzngïœ ¥»LÚ.hwŠ÷|‡ða¼|¶‚€`ù¯[kzºMää ÒŠÇ&¤3“N·â”åɺ$J1ɨc„Œ'dT·©ú¯_T¥LNý-ÄúQ²%áë¥äí[(ã'PXŒå¬ºâ‹!%=SÌÚù¨HWxF®“oG=ªX—Z…Æ(t"o4*[0L!›+г®4éj¨§Û Î/ìÁ‰è¨VqÎZñ¥•uõ7lX›SàôUAJDs‡ã/mH}|ÃjvŒ¨ðqVC[ÕgA#5^`UÝFPúðãÌ'ô:ôÂÞ‡G/Â]g1Ÿ.ÆCmÆãØÓQêY#Öd,Ÿ¹Ñ«÷Hï êoÚ(šôJX­]pǼ ÿ뽪ÿ*––^ý¿n` ·t!¸åø¹«*JFòmÄcò0&⣮و_5T|T¢Sô4ï€2QÖßI‘A‡]̦Œ]®Äév PÛ}è¿W¬wLwÍò ‡¢Ñd‡§ø|£ ÒéGzV#IÈü¨â #«©87Š]ˆ¼(ï1â7@0•2o<ék{gø7WkïBÊP&ëˆdÇÈþ\¤*ü’*„qc´bØ òY¶Õo_ÄÃ4…Ÿ±ß’èLd;Vq& çlûFú^¹_§m½s7.]¾ ú¯é& jóP­ú” ´¾êG+ÊÊ€ÖQÔ¯ F_7Ü6è~Q1 „¢5sZ7=2Ap6èó ç×?Z OúEDËz}ˆ?o†EÇïÝØ¯“t`j`͈_Ò#tüîU†ÐŒN1z½¬Wx3L‡tÚiÝýí ¹9jÛxt¥¶Ûxv”ËWcoAÌN~5ŠŸfñS/~Žˆ£X±ˆ~kw5¬¢¶Y1 e›OÑrs´BÌqYÝ몓‡±ŠÎ&Œ)êªcõ²q³áÙxy¦ûñ.r¤fè̾Ì2)O3ÏnæöFш÷vòd´p¥…]élruè‡|dã£,£¾ò¢VÏjøè[v†£ºz\ÓO×é‡Ú˜ý ËnePqQ³ä¢íÑ®5™óPïq§Z˜½‘gDC†sxÉÖôÒZ“Òavž ™Ž°ìv–q™cH ÀÁxê#Wº:ô¸xvô 4˱“­T}3"ÅÞhÊûùÅ7'Ú[×@_¢± !£ ogŠÆðVQÛ£yF³±fÏz\:¤ì­¬Zí¥dCý‰ÙÍ…žq01£eU2!µêB8ÆÚ‡žãEsð5ÚU®W.9'Òµq-áBü{†Ðñ0‚À{dw,üÄ·3¼þ´•]8|/€Í¨?¬EVÂÛãˆNx…‡Ïó¢føtêj0ÀA ¦Ò ~ûÚùøÁ$h¨¦0~ääÞü7–2èø®a‡XF3Û5anl‘ã5²Úa̓qË“ì-k>ôe4Ž-žyß.»9­u׊Ÿƒ!B´Ž·ñ­]´ž´Žç°|J«Oij§€¿ö6¤örù.vV¤ùZ¢çƒ<¼V¿FhãFú¿n‚ˆV½Ï¢LDôßÈ•F?ý·è¿¾¢=Kþ?úÿÿèÿFúWÛ¢ü‚u;o0>ðÿ;ZQ¢]ÿ)­tùþSZAýM+‚ÿÿ‘Vrs%mxó¤(êžÏÍï/}0Á’Pç:ª×$|†yN*0/Šeý_„/lÈlü;eâ/žÇø¤üvµÒì:®t²z-y%ä‚™0Â@Ôµ€}º£€,·òÛOÚù%"ìj¹äÜHYðbÌqmÃ-Zý÷ý\Y•äÌ6â)>*åÐ.ý@/ƪ¥gEÝÍ-¾ª=°ö á»H«§yÃPã²õ bíÀò[»gÖ'øŠ¯DÎ(KÛÒÏZ/í½˜éΩgÞÎ:ÜæŸ§±‹ð Òæ§×Czr$ûhVqÎ⣺"?M+¾ò]¥/Õõ¬yOý¿‡m´½‡sl¬ß*N›Ÿ+ñ™Ã …ýÂåÓ±c¯Xa:M)Œ‘}Èå“Ã5u›ÖÉ bðŽœLq“UŒ¦ö¥Þäú&!ŽÅÖnG¬Ú£Å¥6‡È­åм|Ò61LwðŒ(àØ&_vTfhy_6F[ÑVFâÝiH¦Ÿ"XK,Ïcx˱ëWxÚÁ…HòTß² m ¿Â¸Â Íz@k)bhÉy‡>pÆFí» ){Ã( ï†IaÚàÐ$ÙBW:ä×ÎañÉ‘¬Fi{Ÿ$ ì]¯úÏâ)ί0#Ov+¥™9+ÂV˜´³~šQîäE/–œÃà{%>C,ÞaÈ Þào²Ú’K&¨6²Q~ñ²÷ëÎF¦;3ìbZ¡¿=Éõ=øvó6§ÍPv•ÎËÐMšh1žg¿7¶x•ZŒ¾¾EÉÙøK¯vÿí"b»v§äúgÞ0»Â.öj8 Ivg—fÍÃƵ«‹ý-ßÃ3^,9M-_¡–oÖ•7Y{°å5P-µË3œÌ(š~ Çp·aü û×½ø“ã¨è K8žXµÚƪY‡/j~MK¼´ê²öñ Ï}”—rÞ2ÆÞƒo%çño6†þû—«ÁáÎ÷e*}1ˆŒç«\³¡L/ÃŽÍr5(½gEl>ä—ïÇë©#vÿ€œÏù#Û÷^ MålWû—CžµÂ¬-‡´…¬Š›€à£¸‰gX–ñ˜êgéÝ* WC\ òP@WdÎç6>3®¤‚¼”úyœ`ñž?fœwwYhýs¡~KHýCõƒ^†nÒDcÙ MÔéM”‰6Þ.»¾¯—ݼa7k ðƾ­ÓÊnÑËÍûõ¿ì¶ÑòÜ-Ú»y~î߯ú[µQ ÚíMÚ˜ý´}«6RnÞíÙÿýx¿ýìÍÇÛ|³6ߨÀ·÷ügoч؛÷!îÙl£Ý}‹6Œ7o£Üý¿ocë­Ú°Ý¼EÿFz 5÷ ÅdÒ(UŽõWr;T2Ô_Éxî|‰"+PÐ+QϹ2Öèýâ[ë8¼Uë\€uŒ¹e¡}}úúêÖ`_#ôÛBûV¼õ†¾5õîÛ¾²ÞuöÑfKãüuŽ:î«3îfu†k]ü›ëlä~ôݤÎQg¶ððù—«Žg[äÈ:ÏkPäÃyÚwrð®³PCÊØ1 ¸(μû.ZÙá)FX%uêò€½ÊK†bI(gÁè·;Q¦y俌v¹Ï–Ûœ J?ŒÙ$Dвâ Fƒrÿ2éýËXÆ|ò²’Œ/ S\ IÊMËxöË’†ÊýÔ*3Ouã ï?ÜÓü•(¿N^ÆGª?iS«Ã\¾e¬à (ñ?¬cÏ€2’,a™~ ­¬´yŸƒ5QiÏqç†ÍÓ>vøc"œ¦xýä°)ÊažÑîž–hò<îCA*›÷CYBq ä'XO5CöË`ÛSÍ3ØT3]b£›ŒÍn‡¥p¸/ε …2À‚o•%Ç7ÏŒ‚ÕÅ€°Íö+ûø@¿!øI¾ º,íÀÝ@’”…‡:åï· „Õº»þ®¾£Ì7:"ÞV]ò*ƒJ½ob¼“6h`•Åû+¨$G[1ß`¸…—׿r:`…—û-_ºý~‹ÖÀ€Jøl„VÜ»IèàsâÑÕCÜinqÕVåÒÕr[âÑU_¨WGI›0ÌúÁáåºCʆ¡!òÇwr‚žÙjRЫØð¾%tà&’¹fZ?tÞ6ø‰P‡  ȃ¶*ΚÝóG‚»iŸŸéÝç5S?ý}O‚J«\Çóä8½¿ƒkÒ¨¿lÄ·wxI©èðìð´‘oʽ_…ôæï ¬@zÆ{1Oô¥ˆéòÚºŸO2)Ûºf4ë`GÇ*Ö’ÔZ׌ãEíÕæ‡|%çñ2žfµZ¿ )¡–ã]*ÖRóí¬Ñ³j-=ü+(yÈÛÄ:Ôóá´¶Ô„#–§»[ï¹Ðš O'³.œ iÉŽ#`*h8¾¿Ë?`D>•L#àq¢…â˜v%’ õF=öXÑz1çZbÓª~h´WÚ=W±ƒb¤¿—çiV£Ë ¦þ4 j%çΑÞ~ÝHã¦ô¨>Á‘fê鈅ÌÞŒ[V}ß§Á>À yvcÈp7ÃpÏÅá¾2ܬÆå[ †û>}¸•ŒtgMâEÍc MEÁÁžBƒ½D ö l1˜ét^>`‡Ó ½uçtÍóá¥@íÚ#³ÑL¤iØ<Ÿèö¾t¶ÀuÇßBq¯ã: š4nˆ Ï;×` ÅÎ ÿ<0†ëÞNHr¨Ç (ß,ÁÙ-¡$?þ´XŠÀ?L·þbºÂAø¦é–àoæWæ§[«¹‡Fà*û´×tký·§ÛþÞÓ­õÖÓM*ý%òÑ"ëô\Ñýý †ü, !ÿL|þ[1t\L´ÙÝ02³ºBg™]Ÿe1ìÓ±EÖ2M®¹»Ú|{Èkeû+ÎÓÛÏ3¬¥QÃ`v¡ªÒúïØq²yOáÄz/8«¼e Ç=Š˜Y÷õšYWÔº06+tfYþz³™õRO¯Ñž†HÌ“Éì’z Œ-HFVS Udi»ÿX¨VÁBeu|§u;Bæ:F°cÇÐ;§_Åy“ZýÙb%½S+½ÓxH…BÓ‰+€¢'-‰Ò3 ðÿ±È‘xH9ÝY_jÅ 4O9$”i¿‘Ô=ÃÂÄèZ¼âu&†U»lrªÚ+'«])òƒSp©“ÇOA%Jާ+Få;¦ 9G>-"rÔT0åþS|£€¼6-Æhª(ɱOÕs&Õ„6 >ñ ìT|§ëŠäš‚>ÅÅ0êA×!Éuï•Ð>ÍíÕ#Éù( {ìÕµ®Þ½ò ;A€'¶gC–2Š`) L¡mN¡—ÿñîŸB¹Æ§PÛ­¦PÛ¿=…Þî=…Ú¾i 9{O¡§ûöžB‹Äç•E)Ùuú_L!iÓ'È“Bæ‘´é…Ú K-ž·ðÔ4Ì—ƒ!ó嵄ã^“Åþ-“åøŸn6YÞê=Yòq3£h›uAv.²8„Ȉ©ÚìI02¤ÚgO“ûæüBLçt³^7DìîA±S À™0?,_¯u.æC4xVÏ„©ûeôœp|÷Aø©™öb,–IS»#×\ôt¾˜I÷‘ÐwÓš/ù\ëcPý¢è¾¸UE>esu¸£N`šà³lž•ͳ@±kNów£Qºž”ý࿌Bû•ü2„FuÒ Άß‰×ƒ0¢Fþ\,=gbž!3ðË+ã0Ï»cðûˆ‰”g"å™ÏÓÍü—“©!Ä,%…2'›I?2Ÿh5¸þnXÌ7O£49šOAátø¾|"´£¢ýœO¢ïòýB(7x>>ð49ð”xzU—ïýd8H ßó‘¡gf`¼‰x>ךA&õ6€|ÓýÈšÕ|I õF$m>ŒbCùäÄFù!À&à”Ï>e«Iµâä¤Gú‡3"ǧÁKzIµâp°Iøây™/¦Í­¸ð!ªTùê_«,Pi›ie9V³,¬‰TOÚƒC[ñEøá3‘Q»b [ž{Qf‚:"Õ®¨Âpµ|¡w¾‚ôÜ_êý¾âmÙøZè}_©]aøºÞëV»7x·`›þ:@?[èéµR5ðå§$…j‚/…$…*ƒ/ë=†åêÞà9Ó{ÝŽwtg‹îúˆ.Ø~“-~<·±Å×gej[æêwÔ>ĪryÒÎ<È0Ã5ïÚmæÎúÆÑÕPIŽñJV|·ƒe´ká™´‰’ЀÑrDz‹ñWÝ1êþ0æ0ïÄúÇÚÛíIáH]¯áûšð×ð™£iÊêý÷FíDZÊÍq•ã}ÅòŸbÎõÕû§r`ꦇÕþ¼VëdÕ \ì’äìg –ä/9Z¤ƒÎ-¹¾$µHwW®Cû)ž:þš—/ÇÍU'÷sh?€Ìy¬Ýûsqk…÷rI7iÆ?ðç™çÐÁ<ºŠ%? ¨w,~Óùì`¨zá]JcÕr}ö¾BÕ;‚â­Ó›úcB¹:eNi[ùŒ»0]Õö?èšoD ‚† {Ðt#@³ê¼|Ïý¾^“§™]eíÚæQé¦KÚx˜µçkú%´÷ÐÚsò{þŽ»;àÎdZo„Ó‚lÃÈ A™Úc‘6ý—º©0|¯Í‚õ1,ÃFô (hCHû„ Æ]phkô9ï˜W qí Iωv¾½%'\wh5kp…Îh‡Q°pPEЀ Ï|ÿp<"ô2fÍÍ¡ò—Õn“D…P¡Ü_äZ¹zßAØ!ãR~ÓñxèaM‘œë÷9™4ÎÚ»Dõx¯lrÀ`Ó zæëò‡x{í_îùÛ¸½MkŸDÃbÂaéçªSÎÕ˜hX.Â@ì¤!Ù‹sºƒù·p=§¯…ŽÚß²­ì#öqäQé­«%´õÎGàÜ‘6/Œðq7Íìz!.ñò€Ü0%"!hYû sjT Þ"%dNá¾±Nþ’ó<Í©dEºFÿœâ³æƒÜ«žír0¥ ¹A¿0A•ÊNÃnPмÖ!9_‚Ïî9]<ËÜY‰†Ö.¹~ŒŒ­^méJÊh—ŸT53«¬8¦^,\¬^5×ô¡%$Ý,~h̤M“ð„ôÕ>5éVñÙ&>¤Ï–šô(ñ9Z|ŽÀ)’#¾Ñ’î¹ ˜Ëô|Fmk¶Ààx]:a-öÖ£‚dÒd j}ž5úOžT»|ÀGnŸc!ËBD¶äBr7Þf»ÀiSg‡™ìi+[b))j×­¡3ÌfÈàýý<í‡@yyÀtÔòEÌÞ•v>g9/hÊ2ZÅÍ)exyÓ:Ôôæy–µDçÉù ÙÛÚ¹½%©¨9–³© 8MèL!à|gJ‚iowÏoŸÏó-ìäŸu¸j®è çEí,ËÊfY#ï.B†¿À‚^¹K–'^b3-€É…,Io}Í茥@¯ê½†.Küi  .q‰YRa¤[)Ð],rUÌW×FUhá|[ ÖN—·oÉИ½ùðÙŠ fJ6&-4»:ð®…æ’ÔûÔ¢f“´ù(âÚ›-Û6ai éf÷’ùT‰ë¢yè¬Zeq]”;ý (1ìRçáÑÇÐ-­ ™m{‘ztr:ë}‰+­|¢’]›ÑÆÚÕ+^A¼ÚÊ[ ûª³#ÌFO’gv«)» Q[Ô¢÷›9C ?eaOY MÌ‘‡~£µFÿ˜ö¡×pö/hU?2âÝVÖl•ÙSAú4V|l)â\—ZiKü ]ýÀÙ‘2ƨ ÉÔR¨¥B31»–çiLj 'f¬xõó£ð\@ã†7àe·AW­$¹óý° $uÉL³¯T”xju’Ô«ÐD‘t ZWµAJ+TÅ[z#FÚôY(J"1#‚«y¾¢¹Þ%d]÷ÊÉk’ðN÷Ê…k¾‹/(kºWþtÍh|A1Ó½²pM¾ „¹w ÃÝ+×ã]j@³fKÎix©íÇF>Õš´Ö\ɳJÏxø–ô´yud_h‡U]Üa%Aú΋`î2ûGHrnAr–Ùì)Á+é Ú“fåI®ððWaKüXÚ„Z¦è¨ 1æŽ}LbUᨠ¯É=ñ¾8Nmé ̦asâü\uˆ…Prášns?&xŠ»ÐÒ¥ž1Tóœ®øC<ÕŸ´³•V–R@{Rî|É9ÑH”Ù1Íf†GÑA,žbå Mµ²L‹© Í»ˆ¯² yÒ‚\㘺ßÈæ€Ncf1ýJºQ‚6a´åŽécŒ’“ŽCÁÊ·óéóÅVŽ—ÎGÔy¦Ž…6ÉvÊ—˜¡ÏI#P‰•žƒ y#Ÿ‚ZÃØp*6;âË„VÛ ’Åé­NX ŸE»§ßH‡`-Æc‰õKÐeìÐhçÉ‘¦›?(÷ûs£ôᬂ<ñ5’ó}üíV9@âÅ6Ãb³ç¿zÈ"»?WÃØ?yžñ(<®õ ×SÚYºÙã…€Ðç€b~ÊíÍ s¥™¤XçIáô,v°@¾O¼Â2ZäŸÁâ¤zÌž0õJäša×зúä¥ß:°Ž]%‡mª§|úmß‹{ÊÌW[Ô+è&°æS‹Ö*XÛlê•>ì)Ûšj¾:Š­ŠâOG«W`©Š^³‹?ÞŠá³bÙÌXïÿ~M Ì5{0¢¹À,¡×·r[bõªI„¹~ö¶^¨æã± ¤šMEm(ÁÁ<_;ŸšY£Ç 5ÁX¹æ£nVûtï, *}ÔØå–æÎC£?BKCgúÆÄŒVÖ(9|7ÕçàÞÇÕyñEšOÑ4Ë#‹‚&©aÆ.^ÔÈ֚ѣ½}¬½ÕŽ$Äú!mj„&Éâù¨‡¤µÚœ¨´²‚æUA³ç±¯Åªç‰ÈB´î¹LC“-жzÞ2ðݬ½—Šæxâ Í4ò±a fÛÛ™=À®ž¾L|2¦AF‰dž >Y@ry·'M¶MÚ„÷ñ I†Óί{–ÏÕ$Üω«ûjIl\uËÕSk†j[>¹q:±÷Ô›Éñ0¥d“-á8w @¨X „V·D®¡åá’«Á½®K.b';Oº§õónw¯ìÂP¯J…aÆ“0ô¬’]~¦+þ°y°iA²Ø‘@ôît‹8wP"õ…ã[8°{u6p4¢ˆÈÆP2aÓÍ„â±]>ßÖ¹òüŽ6çg°J˜‘cVÙ­I ¼¶G*P»Ûú°¿T3-‚ý`¡ÍÂÍDšQŸvú@=tO·ŠYkˆD<É7dšðWjÈqÄŒ«ôt¨M×a¡öU>jŸx< câ­….›íS8Áçj†FíÎ,üÞN2c·„‚8Çíè¨[ót"²XÂ{$€fZðk·CEcåèîÂÚ“ïEˆÚ¨1(;Ð[‰?‘Þ÷:àq­\{Ø4A{ÿZÒm0X …­ðßÿK®½¿b$xî߯"mr2ÚB´_€Ç!>Ëg —ÈU/Þ€f…B¨ à!#°]³ç1­3_<€1«IÖå4²Q‚9l5&Ü ¨I£ëkÒÈ@VÛ¼÷ÐBŒë#꬈k6í° VBø‰šªVXÔ«7œ»?ƒq´Ë³È ?;Ä^ˆ¦gì<ï?¾ÄÒD ãhÁçýgÐ÷1ô¬­<޾O¤ïdçdµïOx>™ž—R»$rp4Ó ?¿ÈV_LJ  ½F¯ï=°ÐNï7¤¿ú4a ÂPCz ôŒp%HïMgÜh1Èqì/lYò)fÚýÈŠu©\r§uñLÝd£d«gÌò£$ òñ~kÆ}9Úp‘£žCŸºòä¤a]ž«ß×:…9Ç»Sؼõ¬c/YJßÕóäxBù“uçä€M²À*G!h9¾zV4—¡_ÆmpuÈkõnÈVÈù.Nhðq§‡?Ÿ*€öÿ‡¶`[ãÐF^ƉëOˆthvHÈó¾«lß;ï'ïÔ{µÿÖ@ô{‰8nt  `isoèB¶U¡žîR»O±Œ¶56-¯ÞÏ1=( ‰YZco×Yå™.`Â)j‹YþQÉ9ô¿%:3WÛõ=ÔßäÜí5ø’—ïÈÉ¥™­µ¡Ú>«ë8H²”«91™gk –]AÝhgSРãÝ_AÝyëCê΋¨ÑviWÏù| FAñ¾0ó+-žg{ô5 d»vvQR‹è PºFs¶Áu=Ò§óKDŸ²¨7pê @<ûa_gã芬½csº‚èÐþÅ–`·€cCÇô~}áÐÞ¹„ýÚ ý¢÷ü騫õ£¨W¿¦>½EŸ"zõ æžÞèHÒnч–û ÁÇr´;ô~ØilÆùÛ “[i‡ÅÞŠÚõN<9E¥(êD”Cûbq¯Ñ Ø$½^G¤·>À«Fà¿G½jè~Ø_ À¾ a÷û“âR*|DÔçAçuAŽV¸X€ú0:AÕ£:´6!¢\ ×ÓÓÞÎ ý4ô-íÚ¾]~øt›©÷u?|ÞbÀ%ÕôÑÀ ,é_–tbñâ«PÔfÆfXøÁ„†<†¾ì$Âpçù¤·è³ëø†¡ š¶žkAƒ–ïK8N[À¢Eí› ¡Å€eÖÀsp}8×yÜq²=.DÙ–ÿ_#ÿ1¾GèÖ D ¥ähÚàön5»¾,d9ëó`Âw»3»øT!SÉ‘hÎÐ,¨o¡vd3å>ªfö~Qð‰u”´Ñ"b Üž‡Ô¸7S„°ª´Ow‚´dV­~Æ\™˜ourk©OœC¬q-‚'*°ƒñ^¹ ?kÊ"d‡ôÌÏ.¹#%g&VíÆg¡ñPXì׌@¥³õ§„ãœàó_D5ŒÏ$7Çye6º1#Lµsä6p˜»1³i~%´©‹Êx–5q¿<° Ѓ*Í<ëtcuâ~¥= ¥îkNñí3¨ûh–a,Ç¿Š“@í¾‚¹ñ—XA1ne@Æà´Ïw`;Ìý•Æ]¶KÆ¿;P@æ.êßZóŒ¾I®.A¡k¬¨”¹×â‚T´rïÂÒ—~ OÊ6wѾK¿õíBÜ.¿$Mß$ľ6t í&ù”}Ë¿üjômY>=øÕËô=®ìã-Á¸ ‡Õ¸‡Ú0‚³>P oÙ=É™ª{ì ébäMºè‰îmšx—ÃÒ†ý¶l‹z• • “lŠD«>TV¡ëÏîéF:ÓÒ¶fˆÖ^~£e2@ÿýçÑ¡3áÿ{OàCõMÎ1¼Âð^¼ŽáMö3<ÂðÐùÐ÷£S c ZYA+na™žv+¦—/˜Þ„Óûgo¦§Am&¥õVl!¤¸aí¢£Öó¨©}úßOuÿ׬€ð'8>Á]õtÓùÈÄ«kb€÷Š¿Rr…XßAÖ—xµð,»ˆœï SÂÅÒ¨Q¬‘L¥õìʘZdz§‘éý½×œ}xÞÁóÆùNð7=7±÷™››øyož7m 5v²†¸MÝvÈçÑå~Ÿa:ßE“@Es“ÈsvÕÂŽ—HbHÑ\8{Ü‹¤~¯XÞfŒ%‰ò´ù<÷9‰Ý•YI¾*hƒD»¢o’³Y^¶%þŽ®Ò®M»K„ãl÷Ípç,R)úC«:ëGW¹­I%W(„dF#…Ÿ”ž}ÔHêBßžc‰¿Ê3¬Fqþn±'¡1¼”Öà cííj­·üÓÌ¢Š™’T<°·¦£_ü_`†5€W«m‰—V=ÄÉ–f ÒNÔ˜I@Bþ.‘BE=ŽÛŽ ÌlªÙŒ%òë‚“Êë)#+t¬~àð­~ä"W)9JšëŒï#Pl¥™¯´èG¿°©•6P$ÕŸ´ÙØ*3sÌǸEÑêU ÖŽšiaè$h(A»þ¶ú§î7r{ž4;Úâˆ-Ì‚$¥oq•[2ÚRt/ñœGšXar¸cthGâôãÃ{YI®_“1«‘ÍõšÈxžÛœÄìjQ£¤ûXaXá[qÿ (ɼ Ñ5až6ƒêŠN¡ª”÷üÚŽWšyQ³©¨ˆ·Ž7˜Ùjð®´_À&Q4yG€ÔÇÛº.èÈ‚jðr‰Í4×L³éƒm³â¯´ivªÞc»üÏë] ˆ™öæ<ºDAàY’w”÷ ÏnÆiUx-jÖóá5â@¾èÃx´·¹'FÍ@'Ñ-B2†¿4©À"mZ꧈;€°V´)w)¨] dáiWc#4¯ö§ê<ã¯Ëß?$ÿÿt£<ŽèÎ ¢›µ¸­¬‘%ÆÓq½TóNäK)I᨞¾†ÏÂ_Ãgò«66öÚVt\óo+>z ·×X£wOÐŽ‹{ãEä:joC7nÂavDKÎr£Ø)ÿÑ`»«÷;½ÈP u×i×h±#?^$‹0ÿ¾ykÈ>_+”–ÞÊhŘ’ç˽(ì Ÿ„\¶&‚ó7 úÖ˜”q„™·È÷ÒôR¢Jóæýk%ÚØë#»€mÆ5Nõþ#²“=mæö€Àôé6ß4²Ç=ÃÌ ¸3;êý9ZåšU9k…ažöÙ2­0¡.)£=á³E¬>¤´hž‹æ× ôí-©W9ëiAþ¤Ú[lÞ/舡<½öÌ»ú!;CœúC)Úˆä‹QìBô6{\ünXì¶õùrµwOø| <u[;êœÁÚÝènX`á1qužgë{í±ˆÍ•ÐÃþ#®gú ê®´ù‚NÄ×ï¿”þO÷_NÎû/¿9vÝþË? aÉ­÷_îþ÷_Úø]ìù ›rûÍö^šß ì½,û÷^g\¿÷rÏŒ^{/+OôÞ{±Ì@3[óüw÷^6|tÝÞËϯß{)¡½—ý/¡ÁU¾=…~²÷’©½2Pxzwi‘ÑöËÜ}¼)6µÿhŽ6€f9:1âî[ûÇz¬KâºÙumdp%|Z€H¦Ñt3ø'¶žf¾¥èOZjŒ®zòIH`|4ú¡4¼F;“¶Ò¤2üÛñ Ìz¤Â²¿­ÂîßR9Ô"‡kN×:GbG›ÿ ö—°x‰>D5áèÊ/< ?''÷å+QXY™, ‡«üú0Œgn:ŽçóøHCCðiÞòÝUC-Ë£ñÏd@{~L‹ÙÔ­´i‹ ó)ÛÈš…Q⎋zý'R¿dŠã‡ð3¥Q¾]ü@‹ ”‡+žœ!üîÕJ3¦)_p别C™ü¡ß“³\­íÛëóí'VZI  Á Åjø¹´·QõŽw¬èÖ~uÊç[’çý'/:²%"¡ÁY.Nž"KSyÆ‘-æ¾ðjNž¢\àö#ÅÉaS$2»r¥Ì#+ ó\Æ2Õ°jìÚ î^ûÿ²C—þ[r%‘ߊ¾ã ƒZ™£í!è2Wôh#Ná$ö ¥ý$¨VÚô)r¶«‘J:pZ”v®ÑR|d®é¬Øç_¨þ¿ê?ޣןõWö§åùë¿æý Ì\ɵ›„¯FtºÿcWÒÁmyŸª{_¯N~84±ù%´õ³ÞmÙæimém}MÇ})±kl¹ÚÇþDŸg¡­ä§÷§ÞŸ¶ÚvlÿŠ6úÑŠpD­Šð„ÌY¼Ö˜*¹$x)^6[r…Ó“ žº¿Æ'ó\ÉužÂÓ$×9zê³Dr@©<¨ÄJàYžO¾ÖÏ»"[!_ßä¯QEZ©¯·žA_‡ðœ¼â›Ï>eÕÚŽhPŸ3}nóƒS|Ñ95Ú½†b˜ÔGw¾ Õt6Œ>ê*Ÿdc×ËnŸüÝ&`ØÊ0tžlµ%hø*[Ž¢“C›4Œô­ …¡åw¤Ð44bq—îJ´_&’SÝ/¢Ä…!»Û}ìT|2ÒýiGC€÷ð1þJÖ<í_P&/ß«æfjÇàqAžÈæ=Ñ»~ÖÿR4îÐA å°äDsg¶#9A;nžÜ^å2µïÀbU5á/ëh”œAî߉ÒH¿zîù¡&ßó/ø<?F²jχÄwÊKzð“´ù4¼ïÅGÏo{‚|6†Gƒž†ŒAhÊhW+l,»-žigšß¡¯iàð‘¬g¬g¬ÒÆ ZÝÓ&|‰¡\[Ý+}Ò[JkBy’ÒºÞÁ.in‘í8(kW« VT89èrVËh.)jF(HÕÙp/Š_Ê(n×â;ãÿL[KBWû؈aÁ7˜Å•ú¨‚,k²·gj‡†*UÊû(íÁò”:•÷OÀÜLùµ[bÍ¢‘_ûu)wrLÍ­ç¶PMªœL¬5ƒ£À#ѯu­™Ï5ä± ‚X/\¢Ý+-J˜i»¿ô¸’Jì :‰ï—ž9F|@ã%¤3g´Mµ 3 x–Û{6v&,3øÀ•T|ßÇXžIŠÞ[%Ü‚Ž4³1µ+Æç _>mΰ¸š­±&VÐÂòç³ÕfÔR«l‰M’O;Ó!… ÕxOãì*w°jö©äDg/þ"nl¡À½)Ô.ûC:*õÉ#☕ðìþ5æL¼¤ „wù~Å2ö‘S6³KÞ=Õì@ ?‚â´æwýžUKä5E]P-Y™,öÛ]7¬Ð¨‹9?phSñƒ_ š.*ÿ.~ã“peC ýG‘Fà'yˆÈey„ü’üÔäIÞóâ™$ ÝºP÷².ä9Ùˆ€kBKð û䕤K.s Á+‚¯úû"a÷6?ŒÝ#P¯”âQáá;Éõ)Ñô~w‡9b.–ÛMÌô‘^vIïyÚ^ó”úe*žâºÉ¹ÎÓ÷@໕eÛ®Ku¥yO‘†ä;ÜS»0pÆp[²`Í» d1:»Sw,ÏqHÏb •Åü90Ö¯LAóýÀÑGT¬Q&wh›¦``"#qDùì½PiŒä°:¿¾Ûç¹¶UƒÈ5p™UùÉâµq”Á¤6hwbÛ‹u ± á¤÷~N'½ÿ$ß!¹÷€ÑVu¯þmø¡Öù&aPý¾d$GNr‚ìŒ`§îRÇaÈ“Ú/0w¯þž :'TÉɺÃãâ^ù¹N|U¼ÿ‹$ˆð¥×Á÷d÷èq€16%Ê Æi8ÅÚ“¨O¡`¶(Ð/¦Hê…× ¤¬C‡uo/X‹{ùî¨m@c îKÎq¾s=T·$EÎôFN­<ž2¹‡‹oY˜5ä\SA%ÚXƒ´†LÞ}%S°×šKr!?ÓíéÚ¾1.Ð7ÙÓûÞ,žî’=½-`Ooc bg·]·‰xCX WùV³ç:{ú+XC04P;Ôf*j»Ih \×.t/6êEcjо‚Vóº|9ͽ®‹/A·û3]êgar:šÌ/®sùpü¥’n²™ßUmîë·™_,<Ë®¢ÍüKSÂÕÒ¨¬6¸UÈ.i,5÷õžD³ùn_½'ÿ[,ä/ÿøfòräMŠõºm°•Õþ3ƸµroVÀ6Î 0¸Ã“¡Nž’ éuuYèê“D€”AËbÕxÙ½Íÿ=9W»>/päjÇöƒøŸž/ò“•-ÄVñÕd­³L¨ÂAŸq]®Òý¦þ[¨Ä[Ëü…R>$¾‰Qö·÷™ѯ^ñÑiÙZsOFÛ­€÷-S ÊÕÆ:¶ØRSœ ¥•n·èù²­ð_»g[¦:ËKÍ¡é€ üM‘ý º”Q{ûr«ùd@åóhê¸Ô¼‡•Á+—wB±ücøµ¯¢ 3ÿ\Ž{m™m(víCzÓCG^Ã’ùÞš@üo¼,‡`íФkÍ1–"‰›w‡Å¡ât…Êû|á¯üE¨œÕ0{½ˆ˜PŽÑe«íš5¡?Š¢½> þóàÁƒe¬DÄK[ž)ïn™SÚ‡ÕvžcÙµ<£¶Âcbö}Ê):7s0±~M«Ïô)õ ýN²òÙ ²Ä샬bõ(·ýr<žPµ~c1ó*Ìœ“¥Ýo$A S$µ­zšÑ‡·ô„ÆðLú‰Á€ ¿ß\±9ÊAUî1‰cíkÒXgÅ—a[Œ[nO…q‘ܨØoIðö`àí^x‹¼‚·ás•¨gMÀb¾GÀwÓåKÚŽ<¼pqü!V»Ä?ÎÀ¬“ؤwìÖkjw¿5w±ŠŠÓ–È ¶¿â´-òâý êiSüK¿ÇΰKP?3±¦K¿×}/É×Í–«vE`T®X× Å‹D°HíµK¯Cuž°k—~«¶˜X¼/f]ØzY™^ŽŽDGä°OEÉCßT²^” þcÇ(¶+LŠíZ¥¿?eèë5gÆz¥”k”Bâü?‹/—펢‡*¿Ÿ݆TdQ}FɉKð!c~ñ<î@Ìs“K/°² »«  ”ÂõNÚL>ä\¤5CkPäcÚ^è˜w+ òa¤N(o‹êV\_]ápUÊŸbËÉÕêû%Îêý UuRºÈÅ¢k¨ÉGJmdRK öñ]K°Po?S/üEP­‰–ðg âoaHÝŸöÜx‹úͽêÿ̯5EÜP¿9XwD°þÂ`ý!ñ®G÷Fżþ¡ñ®cùq‚Þ‹lÊÃ:Þ¯î>ŠwióŸpK¬cm_Ö®î‹Õ÷¿#øX[Mø8œÕ"«UrVúŸ¶¾.žHÏý ™b®™®èÅáAÂéfžka'Ž&ÔFV+#x¡•]ÂÄ LiæÓ­<׿O”‡h÷ý7+fA%‚Ø1ªç2>tË>²ŒÏ ãK¢–±Œ£yA‹ê‰pgŽì~úsÌßMSÿjÙ Ïwˆ—ë½%¼£^­ÖZ£%â¶ÞK®™[—ñ%a|.Xp–e´»³[ßCšÂç§í)® ÿò2™q[—±qï×®-ãÙgÙe,7 Úz lO73€e®•-±±Â¨„rÏ蜸Ö7Ø+ïßÊàÕ—ƒÝ|$Û(k'ÍT=²:SÚ¹9š÷ë`¬8Õ!‡«¾ÊYmQ8nQ怺¡Õ}M²¦wzu_AàÌÍQ»ŒO[(ój—IªÝÿ2þmþÁ××Q>Ç,½ûð2:õÆfY¥wçÀÿ ›ÍçD±Yã˜ÃïXsÄHïnèËs¢™c<{: ^lìéX¾!†==‘ωe³&óœ8¾a s$³§Søœq@è2ˆçÚ ñ%yìbä±eŠä¢8)0sžÄù Ӄ͊â…Ñlu4ÏáscyaŒ¦ÎŠe«ãx.Œæ8}ÄœäÓÇñÜñöq7/œÌçN¤ãÙê‰úÄäÓ'óÜä±iç^òó†Î1ÏMáK¦±™“Y~2/œÁçÎf«RØÌi|I&/œÏòg°U³k¦ŠÁžêìAþ²yl¦•Oµ&4°C #+”—=q>ÿ]F JŽ˜Ÿ‚Ü1_ÿ UòPÐwî¡(餇¯µêù:`ÕïG‡Oë鬡;jä<­rvÖWh£òA\‹<æ=UV¶³ n6hZÿRÂw£Ób]ŸGño@*E²AËEfocÙíÊ<¼9ì¨Öú"ÀnatÍX7šƒ/î® 2¢ÂÇpû¡o0VÏnQº[ùã”d´°a5áoèÜÒìmÈ‘ŽN°·~£´Í/ö¢ïnÊÃìVÐxõ*=&ìO#ÓûˆLÏêüaw>JDÀ$ˆ?)ë¿û„ðÿz¶°7y†òô^F‹z-£KõZ‚¾“v¨WF1{+ËÐxQ”7,l&Ûº{k/¾|;Æ cí/©ûlþ3Cœ"1y?»ý—A¦{4Tþ‚Á—ã¢{-Ú¯  ëPí×yŸÖ>Fë,Þ¥AÚ[†¦†êbükT̬¾®ªxw1&)—ü„óÙ+|Úûcèž ôm`UÚá­ôE,DůSf[  Ç|@v#WØ´ÿz L:¡xó¢¢ ³ÏÂ@.V=SfÂÀ€’íìh"ȈbÀ[ç Zíc¦<ÌTãò剛·ÉAMs-,7àUÙoy,Pµ6@ËÇÖ¼2¼³al–¹Æ4G$ÙCÒˆiø>-6×ôIÁÇIøÁ僤I³ñýaVh®‰˜Sðƒßn§7òÇ{ÈuÓ¿€åh÷ù|‹Ú½ð³@ûr;½Á{:„p›Z(t}µ7Ñ[ß–/E½ü¯Ñé` Ì­¿œ±O6HÛ+¤w-_ŽÛ—CVB>í#ȲXÛZk0,_‹EöR‘…!E¶UJï[îÄ"#ò°È¯)Ë‚ëj½°¼ ³LÊÄ,k)K~h-|î Có  Y¹ä± Ç}wl…¯iÚY;n>—¬ù|…aù«‰¹ƒ Y,¹† ·Êü_YF‚Ê”¾5áøŠˆ[þgÌkíÉký7/V'àþŸÁ]ÐîÈÑÒ3hcwJ¦TI›ß#ZhO<*9ÿ„‹³ÏX8`K˜³\¶$Wr¡Ú랈Û1Zã/þ,² ­ø!ƒ9]õ…¹W׼ƋÚ`È"ÑËqÞJǧ|>ypoëMÿL±ׄcÖð°0ƒ|WBŸ´Þ/®ÆêXGÉä¬ÉɃ§ªå±jElâÅUŸ|—Ö÷‹fSž@ô6½‡ž§ •åØù?L3xŽërQŽƒUrCBÌ•À×eªfÂðH6_œË ÙùT3QH™Zi!w„SêI6‹[1@;7‡“1á5¯šðm:—ô6cÑEtY >!ôÞ=òÍjÑûWú óþ~Â*ø5{ÿ‹~-Þ_aÎÝ ¥yñÑka™MðDHº®Ï Ÿ¾ÇRþgÝ$]þ&<½ÛF̳_ñ Þ 3KŠ¢r8ãÔîü ±Öúg¼n/±JîOA9ox›5Y$O‚ŸÄ*å3ïÙÀm/^—Ù¨;°#SB3ˆ:ßÇr‡ñ)¯“$ŽnÀìi Æ(L%J[êFý¡…kÇ(ÿ½Nu§G"ÕÙ[ýë˜Oi'É4F° í™öVïA^tÝtgO–¥ü­.Õɯç":¢çi+5$¿ÆéÌŸ,™Ú‹øn¤&b2bÀÅY(•OG)Ô¡múRhœ PKb´äœîC?Ë“{Щ6‰È§–Ë›lŒ)ï?;¦Ã?à_ =½OZ˜Äkd·JN<Õ§EAü‘aá«ç6ø­6¥U§ ž{„ÏRBѾ-C:äKžzô×Ò/wFO}É9êkáOü´¹ø‘û$ç/pÌC§eF½ö5°Âl(Óp{½{}ô õܵøkîù@ŒgÚEØÇ<–­i ßÄ‘]’¯Ü«>|‡Ò—5ò¸ ‹õÖ^׫Y#ÐuFí6a3RÚ|kÌÈ×5­ý¿ †%ùþ9ñW Ñ…‹)v#+Ò<ë0Ü¢åêPúñ©6;OdS3m 8úVEÁ°zîÆ#b¡V`ñü²;Ôy6ÏÛ×@Q¦3š%ç~:ÌÒŠ7RѾ24ùiŽŒZ¾r<_M±¢FÉõ#®æ¼ 1ñäêH­žkåF–ý6_Íì.s›'ðŒ·iÀ3ìG$g<iVc^VQk©¨µáÉþçL ¯õÀ+tkשôM„ Q\9’žxrÕß27HØVÁI-GfͰÂJ ´ók|ÏŒáö#|}%Tÿ±¥âcþ¸'ŽbJ=r×Q‘#<¦rYÅKÅþ¤±‚ƒ¾3£(u²äL¦ë[’Ò,òmЀæ"ÜÀöVmÝU«nHöIÎÏ‘\6¤ sÏ'¸”âéï&ü¦áæwq%yÃpÓ1.ÇþÇ1î߈~ õj…ýÍ2Ú||R3:õ˜¤ÍÇ©„ôì;ð;uU´Xâá9Ó7©Ï`>mÖn}B‚lÍé;Àú·R° ù»îÕf6‰Ú ZùV: dvÃdÌèß i/¯ o HuÍúÓu`ÿùvô«.ÂKÅ™äNANíñYŒê×î|]ÂñàøòvÉ_>iî>„gUÞ¼ –§%›”6TÜ‹¯AÐŽMZŽfË_n7âuÃÔ.³¥v…K®•d ©‡©Dþ~hµ‚³ñ‡ÝO_ƒab!Òצ°¨wùl5þ;ªž5Ñ3^PÏ\'¤3J–Šn5 ÃѪ]—‚D½ëžjæ·3{=Å9]aæ9±ÆìFŸÒ¨i¯ÊÓS– >Áj<èaZ“ޱ|’ôê×$TQ@9¨mÿT–}гƒb×Öòœ`¨¦EWaÄë=?þšÜWáûØ¢F¾x ŸßmfÙõ<ªÛ{€ñ˜1Ýþgž}Ä4íS³oáEÍ¡,èQ˜4,cŸöðxÔ™jyþ8VPžÐ‚YFyç% ­zÂPÈšš‡3p”½›çç¹Yö›¬à Œ)û&΋CÄõÞà1™èøæ„Fg%4J*ÅQ,ea¬øì·åŸàÔ[Í­§–UÔY*êlø“”±oÕw ÁÕÀ-rŸ ¦á~KÅ~þ¸Í}i–g‚·x¡<ŒÛËÇÚw'V¯¶˜”Ý´·_MÒƒî¡{PjMÓN™½54>Ѱú'šOaüIè,·ÓãÆf7OL®_ó7Ÿ\oÆê/ü ĽWPÖ-‚½K»‰Ú›ÀÎ<ãºCä4žgáiÓØÇZÓeŸ/)mưV=ú(»0ØÔUy4ˆcî˜Ä2Ë C–Ðò`å |U…ÒL–c¹†sਸ਼v8®¾ã`õ­‘¿Çg˜ñ¸ÏE[…O·%§+léó]|%ÞÁ™Æ§½‚¢ˆ‡5Vh£fŒî ¢ñmѦsÅæý'ë`]ÞSøm<|óþwŽö÷(!Ü4æËR¦öÔKd (wu,‘w£˜ä.jËughYîìVxnÉÍÑ~</h‡1õ)­ ÐÙZͧ´d¢ö©„òk×wJûíí¸­§î›õ'.ðQKèÈb¾èY‰½®c‰<“Žû:FžòrD޶ð¯>_~§ýˆ8…^è£j‡¯yž;‰Ü¦wö=ô8ìҦû÷±ˆ¡îÕaÐØ² # g´AGYêäšÔd¬°&5…ì!íóÞCK ;¦ý¤K?ˆSL‚ÊÔø‹BÅ“ž{謂%¡Žl"㤽åxø[,Î:%&à‰7½ÄLÚËQÈ<£¹cÑ–¾{nŽÁÀÛAëª8grÖ±Ãúá,yЖ°²´d¢$(Gç*.ß–G QÏ^‹¿¬ ïP  ™d‡åá[ÂX‡´·~çúi ­\àæ²´RãS:”ó¨E-ÆÂ{ªûÜÇí-é0f1»±]xOG TnfŽvüZñ4NGu”bô³][;d[i=Ð*À"o$8¾[Ðêž5ôP"@  ÄÙÀz ”>{#ùÈúì-O;™¬_ÃŒCƒ'Ux4Jf¥,ÛYãÂp+´H‹[ekRt/ù1á …ÕõÚÇ®‘6믋$‘àÎÞ6/†lÝ)1à ›ôX‘í½'çÅðªQp{ñ”•Öâû¤MŸXÑ'0wENÇâímŒBçÂeýÉ%§2°n}·[€I*ö.Š€ÔgÊÉAæí’ ,¯˜­©/U¹Ð35_r>A¢f)§`H\)Æ ½3Ì\DŸYiIh(I¢âÛ+aå‰f™Öšqó„3«¹;†,@lÅU›zÕ(mþy$¤} ‹-TU/JÎ(ÌþA4Ý"~ŠlPùô(Éyºo0“5$“±+˜ „Í7C²Ùn‘-Fr†d‹º¡É„ãjW›>nÍHœRS0¯õttˆøjìæ„ªeÀKòƳ̉’³;Lø¥ÿÑ"fã‘¢³âBÑáÆ3Füü‹ ñ¿#Eþ-Áüi1!`1×rŸ¸m"?˜Ã²ˆsŠ,ä¶~@ö׃îiqRkšN—jK{âÒÎ…/©?7Çè¯RNÙøvªu}U¨ˆn¼Š™*1“›2™„€…ÚXeèñëm>ƒäzçii4)³Ûbæ÷øvmzâ§yŒVàÛ‰VYi3_à‘¯´bc¸S¨Í’1!b±›íÀXF˜G"€(Oê¸ÐQ®È(LS0²_2ŽÓ±®ŠÏÂé+£x[AIj¬#@MÖgH E3èXúôŒS¨*tµ$"ØÃÇ)ï…*M4ý`5ëpgšaŠc晡s!U^uzP_y¨=áçýøyj¨†[r““ˆ$ÕÉ„Wž\:ÀPÓ¹{Q?,BÞWE?¨çô¤Ã^Îmß*ß1&¢¼%.‰áe¦‚­z€+‹O§DYâv|–žAó¨ˆEVqÚ,bÆÝ´¬C™-F°&%V0A±ÓœB;Í<é¶½T[Û…•Ð}S+f¨•Ó4#( <(6™öÕ6Áæ n”ŽH§æÏ™X•±ÛxJTÄ> èp©6á3dz`¨gô[1ÏEƒ³ÀSÆ(Xkb€æ†ù9Ó{½)€•äÜüäá)ß øF¨á;¼pè$0³>:­¦Ë÷añæ›uß!ÆW…ñ Çñ<œP‡ÚÝXBP©à_£´é1êC(©þ%=—nÉ¥˜¤ªCù¾˜ç¡“¦ËMÆœ·‡Ì7“`ô;ÆÓHüŠÚ®4W´˜\>¶C–H®Ë€6¡¸¹ ¯=! Q¹ƒBšôZR%çFL‘ ÝtGB–cwy„*4*Tݤ{)!%= õ}d©øÈ†?8”¼z|òt¾ÐóWдN]+­H¡îu¾\‡…§=÷ ¢ÙøÁ|Z&­ª +¶ðÕVº4ˆïCÀaêØ9f6 Ê èäû¤ÕãÆãZ„}¾‹It‰ùò—@L»Ä&¦f„Sd9"ü¤üqA]ý(Ÿ7^g‚3&âPS¸(1næ=¡ë“à‚äÍÏq —š4g£„U{B¨žæ³€fÕú’»ƒÎ²n§‰BQ¹›ªZËrãXá6w|Íô‰´W6 õÚ¢_ä!*7šµ'FãèQUùãP£uöër¯îÁë¦.á»fé> ¤kcñõ‰«ÍÆCÞsñÞÏüµaqS^Tš×1f‹Ž>b.‰¢#.Šð¯—0ÿŠn £Øí»õÁ¬<Œ K„O/ÓsAÜc#è¨Ðìiï4Æ<Úó§¯éP|<ßEú„âvÑ£‰»°.–fö„!Ë5Ex[8¼ú”Ù癵˜(¦'‡™f»)ŒQIÏGˆ9Á(< 7?ïÙ„ßôi©Ü®¯µ¢wàÏõŠG¹X…õa^J)ÏybÊT³çD·Àß»MP¬@OQw€Ë7@ýP({2™_ðü¤ÛjhQo+ꈂ<¦£²5•ïZK³Yþ•>µ§Oâ)fÑ›vôu´¢”êþEž´«8"”íï¯c侯Líoð°Ð» N¾ÍßîuE‡ýë®@×·/Õ‡÷ï]½Ðã E‚ÿ9Ïﺮ_ ÇüKÏsSÊ8Ï•N?MóưíXÜSƒßv bºä™È!æ˜i~·Ù3?Ï3-Œõü©…€#Ä/Ïú?õÞt¡ó ºpFœñ<ÑÁZ£=¾ Öåyî« Ø6Ï¢7«çžœÏÅËÁšÍž·àmÊvó “’3h¸Êñ–ÂâíP3:cyþÔ”{^C³ý¼÷rh/»ÅŠi°°ºº„tO¦<ÖÍÝô{QwbÕ½Ñcá[á,¾=–lC,ßK³ŽlC'A¨hžW.!·ÄtŸÒW[%££¨Y>Ì0ZÔòetD¥qÆ¿èˆNe$Ì|†¥ó”6²³Ébª§â"”j„AØw¬Š§¤`œ \<#2µÉÿÝåiÉøÚƒCzzúÑ_Ié/3mÊc ØÉáÚ¨Û©¥…VñÕN R*ª×>„â< §Æ8Ú{”‡ùV[|´Ç9áÐjvúDðJÐ'hïaY¯‡udj¢Çz›èub·l±_Í”G_}Tî›Pî‡ NJûî4Pî½^ñ>O9^¼6ìQå“-y¦âîÇäaÅÝ?’£Š»&KÅÝŠÜ·¸{­^ܧ¼½e†¹øÊäÒŒNÛ·¸¨3Ar®O$g†xz@r~G<Í–œ[ô”.9¯è)Cr:ÅS¦äZ⣓öó%W6=õ™'¹fÑSˆùÄÚýûÅXÄ9p€l÷36|Go?Ûýj¾¤7e÷SŸá›ÞÖîÎ…NJN¼ùhw,¬CÔ— Â/ãtˆºX‚ˆuLPÕAk¾c`WÏ"Ãý’ëw„/áÉó+‘`l $Å„B‘¯5øºÏÛ}0 äý¶÷ ?FÇû¡1ÊäŽ1¸£Ð÷Ü0Ï7é_>oÑ ¯’ð””û¿†Ù,ÂG=Íž²^ç<­èÊn©±kdÞ².oCóã³F­sqÙNët|fEm’ëM]Û 2ù¦÷_ œ ¡£8Ñ O)N|ˆÕÊ+¶åì€|{òCòm¬ƒíOe”iËT#Å yHiK<°jp¾7vâ÷âÉV¡TÁû‹ÁCj| ·g‚¦ø&¶Ÿ5j3ÑÂXíÝË:ÜYÆ2¢†`5ḭ̂â§|Àçä¬ìžehÞ7—¯7G[VX2ZÜÙmó´»n§àìž}ßnw~lIº!¼V X^”>O=Ûž™£åï')SË‚‡åE£ý5à za¥‡nÏN0’L˜o~ÔŽ¤£Ü‡‹;Âl X÷!s‰äú˜J™È¶¼ g°ë1xÌÔšÒõó‚’ó ºíëþr5tnt•/X(m¯’Þ9ÀÜ™hYëaãøsA-ZaÖ}ç:YU>Œv ¾m¹ ã^%-ã1sK>3À ¼Ìu¼t{—MéÞòâðèl²9z¹Sr>ˆ±žvåÁKú–>ÎòRåŸ!ð¦‰û±Þž…w.ƒoÒ;nÌÉMÐÜŒ@sò½¹OuXSÒ†×1¢ž;õz’°#èž±e€ôΪemhªZ©tB[¿Ä˜ª»æ|œu"IN ÔûrÕ{ ç\çBXµ¨Þœ°oƒ¯¯ä¼+€˜Yh„Ó&qÎIý ƒšà¤‚5èÄÎ5ôþè<ÄܳIèE€Èdˆòóð+hR1C0b3hƒÑ²ƒ‚án¢à¸]&× Š÷ã´:|7þ+²|“^Ç ëNFšHþ†‹YÅà‰Ð»˜–X+¹F ²CpñHÞ ÈaëC°Ös (|»  ¦i~Ÿ§}Xƒ„‹ß™ù’©¿È6ƒ²Q苉*ÉâS¨öØ’¶ O.O;e] ò§PÉpLòu«û¢AïÎGY‚ôò%'ÆÑ'Å ½3»Žç)8•óOs}Æú¨_:7[-¼Æ>é5_ôiñ»4ÿùÚçWôÍÕò7ˆ-%ùˆ·D '¡!ñ"Û…áõ$õ0ù 7ü8¾Æ˜|ظþ°yjÒv‘Š×v½§CñêÁïšë*™œ=ÈQÚ¨N7öõ‡~ã;V˜´¼kç:óùdžWR‰qsÙà-}ÄôñlüZ7‹{O½û ¨ù±²·CÙ(»¤WYÏ¥kþ2çD™FøàßÊÆö´îs  Ìܸ’ *ÓoËmbz{~víºöæ_ëÝÞ›TÖÆŸŠײ²$ÏGÝöX‡(õ¿oºþ ħÙð˲-užGŠ‹÷ë¢èŒ/Š.­¿Æšpjð"›{¾äë´ã=H†Ûþ&=kâE1”^ÐâŽêÉtÇà ^ÛË6Õ’ĶU.ÚZŠâB“‡XFKBMÉÒz^4NŸP•,wLû(*6F$`<ÁõŸ{ÚC¦L­®wVòÄuuèÏïS@°æh¯îóùV<„G µ÷0€lÍmPê»Ï§Dgi}6"ÉÅê=’\¯„alÃ(qæ}ƒxQ Ä‹…^УÚUŒKÉÔ*7à^……Û| qº=OžHw¢r#rLN¦Öµ^÷q^2 wµVœðE÷+ãô+qûx°æhë~¦Âö ûöD{|žµ äÌïÚgÔ¡«%§³³51Ù±’3 š*®†•œž0A|mª¸bvÇô+ùL’p˜*®XŒM‡[Ü1.<ìëжc J„× »1èÜýz{³JÐV“? ¾ ¥ÿîò±|sÍT}wç ~̵R°+›keuo%ÍUÌX 0/aÙšä¬ÀÌŠæêX»‘Eu~ÊŠZQ'iuhÊò„ÖA'Àœ› ­ÖT`K<¹ê‰ÄÆa £qå¨< ÷xÆù”1>%ΧÄú”CŸ¢ñ‚6ö©ÏÞÖk3ö´ûÈÙ¡M{ɦîG{ï¾ mj¦=CÛ5¬ÞSF{[x1zÜôïKñn†¼ ÇÕ"›AÚVåvøîÌ¶Š¨Dõ3˜]ó5°ÈÂG±|+êÁØ3\‰RÏšÐGÆu§ì~ôÀžES¥Œ|]mHnílZ­yþü5~û.ô ¾­‚o —xžó‹…o‹E¾ŸÒ·%Ðsø6SäË Ž÷´ûÃ<—Ñç*»Å³‹nÇmñÇÃz;SýÌ‚‹m I>{; ƒEé;BK4âB ¥`•¶f–œÆeqà#x›5úT:$=ó´OìmÇiWl›3µÎ"±ãܶXÜ8„é?Á ÃVÿ /ÝTkLÔŸÕ? ˆ2iF‚àÕŽÈxü /˜…¼°†J³"m::.®×¾,-ßÁKïØÏqë3¼@+í‡Ð®z¾:ñ® $.Ǿ§ ÏLÅ®Á¨ïZû”fœóî¬øôû1è;Ó_l)ÀÛþU°ÅXéŒs™Æ"`ܼ¥à\é¨éä½ägúØÞ»_éíÑSè¦÷]{Èø½¯ùÛõ¢˜ŠÙøÌÀ:ã9ÖsÃZJ ÙóËbG)žå=úMnPÍPMâ­û{ë±ê;)jûüë`a„áÚå`øÅ×7À°îkÀÒ=ÐüÍø´¹†°äª ¿Pé5}E[ø%P}qO´¹×?Í=;NbrǶ7bÎ)´5‰õ:—ëÛ…ç°ŽÀ¶ýïh*Älj¹Im¹æŽêÃ]˜³¢è…QÞ Oû”ïÂ~^»ô[<ÛŽ¯|Vâ^? G$»g¿Æ -¢N·lëÁ)¢ÿ’z;²¾ßn¸4ÜRÒc€µVÎT? »ÞJ()}¹Š ûs©´·¬ÔTãQµgR¡MúpëåP^¥°'\Ô_~q8m5˜ñ}Û¯Â;ÛÞrUßÅëÆG¾R{¬<ŠóÅíwy¸…‹‘B1e%^Áœfæ;0sÅgaœJÅS©C§ã?V]ødÕ@«l‚V–q‰ –>¬ÀV£*wŒMížTØwYâÖᥠð¾ü@#äTkÂ<ç¿Æ’/Oï½âŠjyZ;wtñ~ -¡˜êšˆ·OîFOfœãÎø€}hÖº‹+¢´O É4‚!(j &2C›qA¹·Rn6ûWÈÍêY%Q|hMú¦ÌZw!¡´‚.>œíGÍéÖï5âÛvà30®ûE˨á…Ððhî¦Ì3¬5†0D;OX€Mµx7‰œTƒö®™ôº9¡“gvqР㨟±!ÍÅŠæîÍ}¾ÆßÏ‘|eÎ 67€šÃÞçümá›6K´å¡ýííÔÜÌkÌ}0@ zgc¨³ÑÖ·îÀgX`&ŠÖ¶ÆßÙ;9eMsÖ„ÒÏT3§â«Ï_‡“êÐjMб/h-ëÛ^{=Q‚­;XÜ&Z¡Mñ#@ÀÌÜuЀN9TÜÃzzסÙu¢{ƒ°ïz¬‚%d ,b t~¤„`Á‚…}!XÀ"ž>! à #h!Û¿î5å׃`& !X0ôÂÂY9 fÂBù XÀ"õëÞuhè ¢­:j]·v\ƒ'ùn¨{‹ìï^4iHY¢˜Ås?•ÃGí2¤zöÃú¥æS)Pö\ó_tV“Bï=n‘ã~³|O •¡ÑÕeÝA`X¾ÅSܪ ÷L`˜h§BÅÄ/ÃÔ?C“>å݇ü ¹h&ã\ò'jÏp9&ÀñÆwûI‡ c—< ¦'WGÑÖo;OzTZòˆŸƒ= $°$zðgùüŽám u±çŸà¡z›s±wQ>dÏÃå×ùªå¸Ü7Xƒ–í—‰h‚^4Lr’0àÆ4ÏBŸ,зPÝÀ„QÌ_¯ ä`qoÇZæiy‡Qj^¾g¤-_Š€þÆi7R@¾'÷*Ù ÈLͪä!œÎåƒ?oŸ!÷shu›õÝžfÑŽàî•—uà±½VžfÓªÿ¤þŠ 'ü1æ+jOXJd’ó h)9$²HÅ”êõJ{ëSÕ«ë¥Í;Q»ˆÛ¾«-ÃÜiõêùñÉ‘…Q©nóÏ¥½‡áÓü©õð99rMºO6€ÕÓšRœ8E¹˜Z±öà)PokMº!îAô~Z”ã½P¢äT¼•5úG$cï‘G¼„šäþ5¨òîÁÃOÞ_CµèÃÛŽI{pÆx7ÁGºbíçøÑRÁ¬½ÁWŒãïý‡´wXâaåp*Eñcl†~?\è™H<WŲñÞùÉå¯v «mìOðŒÍò7àÅÁìÍší''ÈÞ¼ÐU¾XžåòÉÓÕšHÀç(çqyb@£û‹4¢g=ç:Yu>“é¼Ï2>qFÉYa4íMÓ½ÕnG}ñÕÈ5·ó¢Vno©‰À½AÁY‘ÛІ]ÐîÈÕ¾c#;^RQ»\P”fw‘ÆŒjuD.S4ío_‰ƒÜoã鱂V6Øûwÿž@ ÈþÚªB‡Û¶Œ"‰VHÿÿÚK²ÿ\Ÿ.ûcDÂ-&ŠZ~gYų´·Ö¸ŸJmÒ`h—#Ym…P™°ŸÜfOÂø‹=q£½¥©è*k\Æ3®–œ.o÷ùîzVèÈŠe,ãjÓO®v„¿ÿòý–0y,;ÆKÎà…jËéO—+ΘxÆåŠ–ˆ’ÓK|¾ÈÊÈC,ã²ô§ìËDëþ»\%mxT•ÎL®ÇsRwjç:óvFÑN‹2¹&ŸHÖÙŽWyí…ŒËL±f¬ë@_x£êÆ”XmûOhÿ¤²tv¨8+9Ë "ÌbmÄ‹røäÁ-Êú$Om¥Ã`=óànߊ" [Ñl Æ6žcÓáK,j_eMh†'ãíÆîC^P¡¤·{Ú1Åðc¾ìhŠÞ¿v ÌÊ‹þ™Æ Ú±ôGÞrvÊûU0nw6†ÂûÈìx¨MõA_¥Ø#Zaß o5ƒFØ1é­£¬‹g´›²Û¬øF˜éÌÞȲ›éA[Žu»>ÚŒÒ?ù”F×¹²‰Øo|tmuñs‘áÏa¡·ÅÈ_‘±. ŸèQ p¢F°Qž³ø&ú¾x°úô½%¾­'êév–ÑÀt?K›ð‡îßý‡ëºlèG…½½?¬Œ…Χ.'«mÕù.ä ·ü!´ëmܽ×-´â‡„±ÁžœmA« ¤¡«L™îÄàùÉ×~îw‰ß?Å“ ò€S2µû¿/0ËÑZÄÜ^ñ—c^`ñŸÉb§Ä‰¾ 3Úý-?Ñ‚H&jã#gcq¯vY|h ç§íHÙâäaSä;Õj3¿úÝxņª‚&SÌ.²þ”™=„,̧\ö~$üµD„åÁh!„8´•ßÓ{C4ûœÞáÑPÔð_KïÐÂuŸ mÿËßäŸN¡ÐAS%œ¦J\`¹­_ÑãϪž¢ù€k`²1Së»ð'ë«rž÷ž1‘()p«!U’\o†ãË>|áv\­j‘ ïo/²Åm¢©þ„N: ˆ…e;ý’p’J»N†lé 'W½7¸ dT¡sCº ŒG§­+÷ê,Hr6šÑa«j¬ä¬Oã%ç=t׃ –ˆ» ÅtÚÆé+m¯š5º`À!¹\a[ѰVg×2ûAý\˜¾…µ¥ Ê‰×¯1$)­r ©ÒæL£´Jz§*Én+‹Ñ’³Û¤Íß…¯øàF|¬Mz«È&½sØø)+jKß2Òy\y?IÑäŸß…ÑLj‹ \Y«ŒãEí0f—a£Å…ñ‚XƇж·C•CçƒFÏ›¸}}ÇlDð„`µ¨Ý m/ÇUn/ð)ªÈ y»Ö½ãý‚ÛÉåg4ÿµ±ŠeΆ1þY÷#»VŸƒ0í[<[“ö®òñ~jò_òäþ"Áô$`él­ø©žñÊyöé\ ×›äÞÜŽ rý˜b¿¼pLI5mLðþIˆôçßÃ]ˆ_±Ž${­´éd¸£Fë9I; Ð IÙ«ƒc¾Ÿ5O6?¤ô™ ŸV} „ Ðm~'t›¿6Ÿë\ªZ䆺MÄ2ž<£äœØàÊÚ²o1z\RF¨ŠK[bJTï\ן¼f}ƒcŒ¾3Ô[¯÷çCêÏßCwà¿Ó|ÝvÈPº]BßÑøtš\’ZÝòxŸGûZ?šÍ šÊÙ•kÈ›ØÇŸÎMhH¼ÊŠ™Òºzà–˜ûA"šŠ5ÊmJNt䪛´©Œ1Å3Z·˜ûöBa&¬  ï¢@ßêã Ú,ÁCáF¤”?âÄÎ>"½ÓÍÖqëÚÀ¦<-p­H1–í£=Heë—ðìz %O…*ÇcvB“ lE6ÆÿhÝ2 `¥“,> ì‹"eŽf p,­[F‚´SZPåYâm<¦û_èøçõl ÷×:Fkìõ4Ïø‹Œ€"¿=ÖÛezÅzî ŒCkýDŸuÜÁ&%ÉCr}Œ¦» y¡§ª;ÏbèîŒcÁ}º{¤½éFœ'%yrÄ–ÛJ³«¼¨ÕaPMÐ[FbÐÔä'<¤'‹ÜÜ1%DOý¼ïõš¿Mß2øç~‚b¥SÝžØîÞÛg4éU·Ï>¼ 6˜[bÿlçÕ`±Pl[iæ‹Ç±‚}¨/KÏŽ‡<É%瘫ÁÞÞ yó›Ðƒe†È“⇀õ[qûG,ž+WüÍ?oັ”Cw]Á+KBì7_OÖ~óz2aú·¯'cÅzòFcÈzrÞüíë †v ]O^¬'ÏÖ“K¦o_O²þÏÖ“˜›®'è—LëÉ¿ ß´žL¹q=‚~ ´pì G.¨†‹…CH’"Y‘V‡Äµ±E–¹ÆøM5¸:d*P:ı:Ìôñ jò³¸:d`16À󃛮×qÓ¾ŸöžÍlðõ«­ ƒ|½ÖŠ5ú¯ ¿8ú-kÞëÖ†ÇÞbmX|]o’þoÖ†GÿwkCLϾ6<õomÈýä?_†ò´6 ‡TèÚðúukÃßü¯×väÿpm0] ® ×­ ãŽüïÖ†w¯[Úÿ›kòÖ†ù×­ ;ß°6\ºÉÚðÉukÊÃ7® ékâëÖ†‡ß°6¤„¬ ÷^ý¶µÁsýÚ€áSgeXå™h¤°ChðlË£‰ÙVÐÕ¤M/È7lVR†ÕZŒy‹±Ôî†ç6ß¾%Ã;y†OŒÉ«1lŬÁÛ–£³á=ḠZàâ!›äš o©˜#*a†³Aiƒâ«*xFp7iïÀø“î©ÆÄj9Þ=ûvøeÖ&V`°*ióOhÚZ“ì–Õ&PKY…—ÍÂë౎éhŒ/-8¯ô™»E*Í8_\t~#;,o„_ÃÚuIxX몱 uÅE^ƒü}¼xEißbsO›àcÙ”i!0µc—†q{k|£´W9ŸØ½“ž¶X)¾ UÚ›q>1£ÕíðÉ›aµ`EVÏHv6Èû/z+[½ŸãÖÏ Ì­·üHhËÐnìuíB•’Jçú~'äv¨S£:÷ ç È}›÷¼³Ar‰=x§!Ü{Æ×m›§ûY@|]UpÌ ,iÆXÉõŒÀ2>8¡c™«aí?ç §0œx£'.Ô$1ôá¦ßáZ.¹Ð¦§¶ÄR@È+sù Ûó¾y–¼ej’!_b¿ÑË£½ÏZäªÛðcäùêù ÿÃÎ>Yæ­ô8-ùÈ•žIê¼vß'ºNOy2 O~Òˆõ$XäI#ŠñwHÒ¼kIî/œŽZù>_ž0)ÓÍ.<-¸ACÛœ*YyÙ ƒY›ÛË÷Бì‡öó&£a'MîZ%ú¾Ô,ðŒ×Ór m‰§¦-5òv † Ñ*>>שî³¾¹Ž©ÉFùÎŽ0‹<’ÏÄn¯y±³41ÁÂgæÕ”ìÖ_0¾²H*~æég´o²ü À»¶&ÇSày¥û43/c´9f¸_Àðôó0–Cûhô½FÅ:Ê¡Fí£» Á‰îЦÓÕŽcÉi• ¡J[ä*ß0R#¨f…BÕH†‘J€µžA/ú1íŸ ÂùQ¶Î|¹PÀ ¨½à¼{ BêÐî¼÷/âÊüà¾8„v¶Ü)¡àí„‚ëÈ«yæÀ-shg@bâ´ß¯ðùÐt5zk9õw=¾ÌfoÁKWÞ„ôŽ ydç¡ÃÄèp…/觇{!Š…÷ùp©î‡òóœçjÂñeêC†µükX8¹Gàáy<}‚i{A{¨ä\iÞ3_Œ'Lœs©x.æIMÌZä‹óxZ43aT˜43K‹Âè–iÖ_Ÿcá9±¬#~?ÿ "t^VŽÏ1™ ˆ¬Rzý 9xg¥ó¿pPçÌæ‹3YíèÆ¹?«ÉX1ð0›3›-ÎÄãø¬ñlÖd昈¯9f÷,DB–ouŒoµÙÑœå[c™§Vsø”FžÑèË‚•©0Åsòx~´º/61߬LÄ-û((<ÄÇ&6±crŸét¹v8µ í¯ˆím6Åõ‘¼_ÂÎjäó6a¼ =Š:ÀF—"Cá„Ï]äTHÔ1üpÌ<û7OûÓäcÇÅbqiß<_®5/_ŒŽç%Êô#È´@ÿ²Ý&ᣠ·ŒÖ,­n?Ñ›žc:±Êø¡ÏWr7:I,¡Ãê™ZRàËBχ跒5Ž/Ñþ³&²“‰³¢ÝO›Y?6Ë’‹hœà¶·d}k̽ñHÜÈæCyL…ؤ\3[l^ÁÃ<¸ „[³Ô§Kü±yßšmÒPþ˜±sÌîälƒNµx24nÌÔÆ²>ÚâɈLô —¥}«1‡¿_g ™òHµ.–õÓÆr÷Ÿ²Î ´ (ùÀŒø*ŠÐñN¶§b’œGÄ#{*Š?eæ÷³§,ì!VËŸ6÷'³ËÓQìi:–=ý;œ)üi [ec«¬ Pó´•™d[¥Y}â$-¶1Õ–45FrNlj2Õ†L¬›¬–›;+ÈÿhªMÖIÂ+*ïÖ¾tœgŽÐçøÓ‹0jäWHð«¬ñíüéù]a¬¨ô ù)˜HIiQÂïÖ  ô)}«c}«£ÜE·Éu[7eå¸gŽËò)õ¼¨Þ—kæŽ(>ËÂ.³V£=J¬Ûš"?†7òÖÇ·Cñö#@½s•AÀѰ£ ¼€¸½ñîàý¨SÑ%§lª……±©fè›jUL|j /8\fjm)a S%W<ÊA jøÑû9€€XbxØøÚÌ,‡V% 6ÿ Mˆx©-ª½ªgñþYÇJ×õXiĸ³¬ ‡ø‹ý ÞiæÇ ^ÓœåNÞ”›ã~j\®ŸloÄK‚Þœü8ž÷ã¥ù:¼4ñBXé4Ý +J³«£7Vœxú {ú¯¯ýˆ9¯#fZ1¿Š˜ý˜ýžë³YÏâýc­¸Ò³Az«¬ü)[|'O›_á ÃÉ\ÔÄ*ûîYQ,£7~ÚA\ÅO Ïh¹~ê­Ê¸çèÇOëuøiý÷ñÓÚ?¬Þóè5?^.êx™ÀËÏ…â¥ñrŸŽ—Õ¶ø‹órÚÏDOú…?ÃWEÓ,µ°ûÙ*³ç¶k(:zϦ¢¡¶J¤¹ê@å ÿuc–ÆDDf sX™ÃÌ–<šž£Ý}â’¶mxQk6zg±íÎ/¡¹\XFðB›Ä| s—~Iç\j\k¿Ž ìäLÅÀDöhX²:¦òýüIsbÂêÑÚÚ ~Óõí½óbõKØþºª\íîVdù¹y{E¼!ç—~wòRý‰Ï´&δöŠAàÎÕ&6ê\åù»!ð@PæSÅM® uäj_L†¢sóx*Þ¨Ãr£X®åF³\+Ë¥Û£Rm,ÕÊR£Xª…Yª9Oí1JÎ] ½Ç¸!RíÎþ=“Þ-.A—œüyîlæ^Š—dòíø0úØT¶ã1Êp–›kuÕ1÷Jú0?Œê¬B]\rý¹'õt¬ K2úË·j§[†oÇZâký2×røûÛþ¦Ò‹QÏ_R&îÆ¿0[J1öa"}“žÃ³0ܹ)}½5‘JJ›ã1e;ÂÆçÆ˜|67ŠÍµ±¹€"3â-k2OÈ—Ìg©ãXÖxxÛ¾U'†™Ö×í*ƒ·Lwƶ,·k=º1=ËWhöíÂ'äԟÊ~*]ÆÂé<לHUÀÊÍóîåKòøÜL¾Ú¢Þó%`jϽv ß,4¸¬y¹¾ÌtÁ¼§WO)Ö’\mïTèÂf!¬îÂTß.Ì‰ÅØQV9ú"úSY•<‰.TʃFؒ٬03H~šÀPÐë,,‘­3³u6¶ÎÊÖEî~ÁãøšÖ-õ3³òŸ;vz «î<É.ðØRÅ•Q£/éà£?Š?&vm_£–xˆ¹‹óã·ãïFK¢ ÖÄŠ:DÁú&¨¾ØOõ:"r¢G¨t°ªà,’JߦP9X ¡®µ'ÿ˜»×!ð_n#Ñݹ虾˜\ß¼É/I¢R¬bcÒzK5¾:ïXOaJ*#èA'[ã‰V‡}Ò4õ¡Èx¥²Æz6Ýì6dÓ-¬–Ы#ö%cãÀ‹lúl–› è;ˆT‚®á,ã£vxô4ÉùŒ³‘r Ÿ÷8†]`³ ¢;L̇¯Ðâ+´B½$%î’iâ_ß¼h¾Äê¶F³¹4{2XeæZâ›â+XíKñî`Ë@–Þ’Lí— y—܃2jžg®ˆýËóÃZ%×ßè„ Ž#áúõ«!><±èS„[QøÖ–ݦ»HHÎ\qÌg¡˜Æ²[y>È G⫸ñ.C_ƒz1%çk¤ÈÈ%ØÖ˜xM펒6ãÁ: Š?ÓÆŽÍ\kCxf‰jµY­0Ï\w ’ØL´ßÄ@ì(hCMè:¬§¡Y˜‚‚Ηƒ#Ë®æøøZÜ©9ÀçÌgÕ=a,£E?Þ €¦F'¥ÂÚý.¾YÔúšÉ碙Û-¾•±¾• úµƒÜ÷·,Gïõ{ic5<5 ñúÌyYÚœ~úž!–ðF\«Šž +ø4˜>‡eŒ>Ã3ó¼¿FÛ[à:n¼Å:K8hÏcƒ'ýÐcxW­è©·œ}Ì¥µâk4Šwª9Ó÷dŒ/Ám¿œ‰!±V×Ý&}2‚œÍ¢å ˼:œòªeÚÆì-ýbEïÑz–©=“‹Â´(x]eí§ Î¦äëGýN3ÓUBhE0iÑcüvï;º_™C{:XL–Ë‘™Òáƒ)V© Âóžúã=t$”/S Ò‹å¼Àš˃Ä–œñm„–`ù„‰·ê•ì§Û‰z/øm}™ *`è®Ø6Lã#Y£úÙ)6r…qE_÷L‹ÚKw§þ±ÝÁ£(¤ûD>²³*í·kÙ÷ %õ“aEëWÐÎFl<ÛRmJFz1NÀHosÈ=F–„uÝd¼…VCŒ#æ/(í S»V —|xÎDß“ûkž»ýêˆ÷c}{y/WúO ²ìfÚšJü@r~`Ær?žû9=|_rbÀSŒä­v^RÕ+á>âö–ÈvX:Ò“Ãö¼C2>ÆêYþ­ÈQx XÄ[¦Cû¡ MÕÔ\wX;ýÆï/9{ VüÈž’sK‰ ÊŸÌî—œ² Óms<òK^\ÐHçí)FóôåëÍ1–\­ç!q)«’œ]À:Ü+ÃÙãõL9²b\Ž6âaàqùî<ÛIx~ªZ8hÍ™9YZJ º|ÂRtP¿þgK€ÓYÎ:åìÒ*Œy^ŇÈÓ,˸uªzÚ‚‡ø]Ua§{‰äÜC÷JοÐÃw%çô0Nr¾B÷IN´¨âžØPgCéaå-^Të³×ΕžÅX>¡ü`ñº0ƒúóv LÚ{ïιùyv*=ÍY^¡œwÛ[yöAÍ4•Âh¡„‡“aŠü§ðƒ%gѦ\’ó²A ïÙ(£ào,9Η3ç.r5,–ž¥-ÅlÜáëb]>å)ÿ}e­õ#`^ðAºi×À£BãjÉ9ƒ`RžÍB_P»~"T»ÖJ®5xñ£bdk§ðÊåÉFÏ÷ñ„ =‡yQ=jW¡äºr5à!º7% 9Bi$‚„øCòmÀƒ’b=±¹Ž+‘@s}É º7 ä´÷„ÿ^±¡‹Jм¡&M{š8þ¶æ†-×áËIfÕËxÚ4Ü<†jvu(°ª.âi1 Õ¤Yi7Å"6T6 æi±,-:aú.„GEó~Æ:r¤wësgÎÓÖÞËÞ2F•zÿ ô;Ë‚’â!ySü~vTllUôŒZaÌ™ç@ú«] +¡#Eþ/æ˜Ífez0ê6É(.ƒ[g%"H¥îe·i¿‹½Î OWœ ¬žnNJ·HÏ|‚Ô7:¡Dé;Xé´[´¸ÁB~[ÉÚ’Êì½%ØìlI}iðo:Æ û–œ¦-©+bKê¿©e”_y*Gû0Žæé±ñµlŽ™Í±²96'šÍ‰bslb*Sß„Bý¸rÃ$Ú€Ú-„‹ûq|n½ •n–Þ1S ^#©°y+i·Çû>n$jmü_hCãÂÎÓªöàv6…Ú~ƿՓÜêI¥Lö·z†ûzoõdkó´“Ýêù’6v¾ŸáߨÉó¼Ñ£Ç±"’ãƒ;+õý¨Áša” öøŠ¾ÎJ±*,ÅeÃas5(Ù­*®·Qt1Ö&LuVÌ7ËÌWÇ&^gTñŠîÕ¶ÚŒ·ÆÕóÕ‹h3”ËYQl–™¤gÿŠsƒvMž'–•䈕çlɰ–öEÅÉ4õw´WâˆR†ý.d«Ä*½“mõÌÓ÷JüvßÂkĤ…¬4{î÷§ƒÞ²á.¾:§ÛƦã¢Lß«C“.Šü’Ó$,ÈÞMÛúX<;p&ÔÚ> £UzN.i Hr¦¡ÛÁ¬hºàÛI‹Ñçb…£•B×Ç®6;´Ýw`ÏcÓbÛ¬ cíñ•|0Å=ÂùgC á/èòËÿù’¶2¡ïƒÜȲ·ò\ Z–s­,£ C¬(Ñ5öbaÏÀCxEút¼9n0ÍûVZìX‡!±^· ËÕ>M(È4¦«cqÏj.ÎÅ{`Á¹8Ï„–á#ûÍlÂyj·Qrþ+Œ.Þ r¯ä܆·Ytp4£Lr6"9äÎfÛé:¹™"JôèÒ]Ä ÇoG˯䜂vV“ÿÕ.œ Ê:nß:–"3ýÒ°2²÷®÷ {¯¸¶c½¢½×Gö^Ú{)3}(SüuWÝÚ{é}ã(N¡–é»´uZ©”´ ;e.@hCt.ÔœY°UØ2¡“JY13ʆ]`ÙN´_f”®™˜]º1<Ñî\y!OÝ)†¡”êo7U¾JViB]¿l§äD—žQ´RV êe¥Ì.eåõáIvçêŸð'WJSYÁV¦”É}âí[‡e—Qäjç‡Ö'ÐÑ·Þ` „4ϵ‚ö‰7ulÞÇØ…Ðm ´mÚÿ¦aS‡÷C(á¡èûKb8Žu›ogK¬lI[bcK¢Elõì— »O7³×Vû1'bTûˆ˜t»·÷we|¨¸ûÝÁh=÷ÝÂjzéfVS’îì Ôí3Ú·,(K8î'ìÚ@zc§›_˜Ô ¢õ£kuü£AfoSÒ^æ*_w@ûó°÷qhšã¹Omÿô 1óåk4÷iÞ&VJ®ò˜,&ƒÔÄk¡÷:âY\¼ ‹’ÉKH\æ™Q ,ÈlX·Z6ÑZ'ßÛËj‰„ ù±™kû–méSjLO¹®w®æFAíñ§ð¸¡u2°€Ün‹ï Õ-ù¯ük“Ú²0_>‰ËȬر³bÔ+YQÛšþú%À]ñõ £ÅµÁj1Üå“wq{[®;f<ÝC;}€XƒÇoüv¾Ë0›ñS’½mU©÷Ÿ(3A{¾UQÚ‰ÕhÄ#ŸéÔ(ãI”¾Q—|-ˆ?Lv>ºBí| ‰íÒ&ôûšQ<¹¯Ü7Én-üÊÓ 8k·’‘@év¦PœfÛ°ûÙíHÂx^F›2ˆO'YÝœ€ÿ0òH°“œ]/±ðéæøªÄhð3]A7ÜÊ“\h„Ê\ ò>76þPbF»ô N|¨ûƽ¥]DÙ‰k,¬1”¿¢{µåúÝ`6<ÄçÎæK2ÙþÑÇŒö¶x{ûT¹Ÿ9æÎfK2ñ@e¹ÃÍ‹Úã‹l0€þá#!D²yϪR¬÷t®¶WÉo¡rÐûI®–?Ü`Xì­@?¥LhO[± #·Å´—˜áwû(|;¥:Wánf»±Ð¬“ ޤ3S뚤èý=~YØÒ[ -égC‡´/‡¡æG ^H|u! «O£bz/®ƒKÎüÿ˜ûø¨ª«aÎd&É'ÀAB­"¨ AÍ…  æâ$á°}”‡¦í[%ç$( gF²³9«Xµ¢X±¥-miååb”„‹ …©DŒzÆIm›pÍùÖZûÌ%€úôyÿß÷ýû«äÌ9ûì³÷Úë¾×^ Ó4H“”t@hÿÆÔVo æU8•í+¦°®¹ÒÓ+…AÅgŒüý?Â,ÐòLèË2ê4˜èßLaf +0SŠ™v1¡ÄmNš­dˆŠqöžˆ¿«˜u*±,BÚ={1Þ‹…>{ïõQF®aùŠ“7l“d¤;`€ß(ÔQV$ŽYa«×c‹HGùI€tÖèéé½ûÏεÄñ„Ÿén‡ )ßÄ Àf_1ay‰còlõbóÁš-ІŠN»ÌòP+å´ #òÒþÀ¼Ñ”FX úO-þG}8?\׈™‹A±nà#€ÕÉ’-¢|W~È•ƒ 2_.3йaßÒ;©\Çέü=97ÙÐCΜ>{€æ Î’Il¸<ÙÄÛÃÐPµFòð•Ñæf^ØÜTkivÃÔ”ÿÆÎö24-iuÁd`bîÌúqÉKl½ìË}ÒShÚt¤}6~ާ«””¡7|Œtü¨œL⃽§Ïzd°ÁWXr^c¤&BŽÈHûj«ÓH•m¬%¸Eô-"AÉ3™y}äÌð0R¹“@ÆâË!Ý$q“QGÀÆY†6EÄ%vŠ^ ´/¯ûî.wõ5ºÅuŸit8j2tH§1Ð5áDè›ä.ëVȯ^ ÅÇ‘‚ ¼”ž-i÷öK$, þ#ŒX‰ÁÃQû-#VÏ Þ— ŒÄ´2ð -ß˧!¡Œm yŽsãÅ O…&*Þ‡×ÃìÏÆ¬ A$x„»örw;Øç¨¼Å¿ÿ‰¿€Zh]‰‰Žb*Þä gqPxZFwfÈ}ï/⎣O“{«b¬ŸIWêJc´Ü‰x֢ƻ7ÄÿOÉùD'1ê •Öð É1îB%"í£4´™ûì“GáS¥F{ž.(î½·HÚmiŒÙ]—­Š´ž¡¨ãhFŸ2ÜŽ –1-WP*å:“»T&ˆîªc - nÂgÁb­° Á°"YL׌ß_YÀÀ<ýº*´²ÁÓb-„}´ž –¾cwùxÉë!'~â˜La;! 9Únœñ–mÑæ=î!g[•$,°4 7!°Îà‰ÎC[&¹z^hˤ'ä î¯Ñʽ’ÝÒÖê£zpKMênh¬½ü% ‘Ý®$Љ1/;»r#í‘Z‹ÆdZt/´L­~Ѐ05P’˜ƒÈæÏ¡Å‚ሿ¡L©Uþ±Ë*¸JLQa*ÅnÌõ‹úŠ¤Æ‘«iéïIóEÛ£ÉX´ë>ï©¿xƒãÔòÛŸ°8ö•Å\Ñy6îÔ0Q`¦…Áа2|'›™Ë fyoü;Ã.}†Úª–¡Á#0)¤H°af“•ü’ißÀãÃæ$ú“m j´7á´te7ÆRõ‰Ê ü<ý‘IÚŸÓZ fU<©W¥–=à>íÝ'µóÂδ`‡Øçày“(ÙõWåï ig“JÍÚùŸâ™”(>03™ÐNž¶¢W}”rÉøgN1Ÿ7)šÇŒ@pø¶'êÛ“_Àç^ëÜXfE¿â#\cª€{l`ì;­%¿°H X{çÿ»ôÎÔ}¦×'¤ssSá­“|Ƭ¥ƒA†±†—Lç¹b {s"Š:­£‚‚ì<ûªÖr߀½Õ? Š‘úŸbhËYœp/~#‹û)Ÿ=Š/HNýDí ,üŠùÅ~}nCŽ€gN²ø#Ô‹¡^äz±â¦†§Âl±°8Âÿ{e¬ˆ~(+©és¹VË>î©zxË™’9³´ÿJÏjdÒª‡áž¶ ¥xÛ£f€¢XÕÝ”v„QY+sÉêÁîš*üEšÔ̲&Ühèý¡¨ 6ºIÿ¼pŸ,\©˜³’Qù4¦Šjšê¬aú.Ÿ£¤Rzó‚.·9„ÏÀ‹>&våŒݾÔÃyfª —¯ÙdT2£mfO[1jÎ<žc“cAWÝŠQ/ñÀعáGE1¹1t‚ŽÚ^rK-=ƒ‹´Üꨗ¼duS sÎ,¶Â:†úeÆYŽEÔ•ä9¹édc2ª+Å g=qÿrk:•¨*s¢¡úªø[/Ÿ¤ý홣Æ,Hf§êõØÎHYIQö-íø?þB‘Ñ ÷E§a] µ¾5ԈʱÂYlvnðSvN8 qØÅÞË`@~ô‡‘Eaêâ°?$Ur­kÃ׈{(Óp ÒNÞHÅ”ájù´'¬ê¡ün±¥¦Év.#ê|ÝYF£÷ž5þN¬£Ö€K‘“ «!ê2ŠRó®:“¨‰GuõØ‚QüžpÜæ,áK-éK­2èñc–&³s/åQË$íÇd‚X<ø +édçÇO=ˆËr,"m‡a{ûöŽÎ1ƃûŽì[1«þ |…æ2èf…ôÂã˜[ysuÿ^#d!|é)á‡7ò ‡ƒÿH”4èËE §zÒæHÖ¸ Ê®Á¡ã1ÁbŒ'I= Ê¢ã"H–²¾]&“²ÔqqÉ]`©ßè8ÅΕDz–ÜBÖ€Ù¬NÁêªö»pÀÎNVˆÖXyhÎFêƒbü å¼\ ØÃ_I=ë¸XöG¯51¸ï½H È}ª ¹‚Qfggðí‚Â|m9ÚðZnÚK=Å—Xø\+F$R2ÄïÐÑæÌ»šeÓ^áŠñQ:ÚBÐ"Ã:Ú6ckFT¤ŽŠð¥ˆžö~”ž:ÚŒÒÓ^¿ZO{ô´ê«ô´ ·Déi‹¯ÐÓnxäÛô´?ÇWèi7]¥§öÿ.=­Ž»jØý6SI-øù\©Ã¨7 Q×^ÿIôTÌb÷÷ÖÓB -éiï_¡§Eç=$] @>ÖDþ¦,Â{¹OÄÓOœ|§=QZõ¬Î@‡]%ßtt½–ÝÌÊl+?Ö»(¨Š…Ì‚~iGŒîþjŸiu4–YAÑþuóï° y /ËfŽå3SnÒÉFµ9Î03+³²™`U¤°™|Çø ÂoÙxV`ÑËR´þðâ†lQÅ0[lvg‹b†”aYr:ØËlÒS' *}à·—C›™¥z^hË0jsI¾7ðI?@ÉÀ£—{ñ™ÿ=^ÿ< ¯gý§xm“¶&fàNSð•šÿ ·ª™¦àÞÿ·àöÉhܶ]…ÛÛüpûå¤oÄíe ¾ ·výÿ·ï\ð?Äí—Æn¿UbàöïKþ/p; ¾³à„Û0pûoÄí׸ý³(ÜP1aíiM½´õ°Q{®”3w«ä¿Lö¨l¤Hk®¯õü\XzošL•;20eÙÏ@Qg#¦âe_<Æ*±Í1Æ©méiô¿aäèt›czbùpÃÌÅAŠÏèãD’ãé 콎:ö5ÄM å.>ÈöùO*Ïã "ÉçhP?¦A•´Âã~X\(œõ–NmÏ„§ó?C91obp;ú˜µc¿B?éóäOLtt€¿é5Ú«x?A"zñÔ•IV:pkýíj‚=‘œ¤)¨“Ͷð6LJ ©±’é©uHéCÅ.´Ò_Úú˜žî±I¾eÈ Œ­é>pM.{Üà³Süû™«™r9þoŽG·ù)°ó›äÄ>Ýê8túÇc›D§¦žg.ÏËÇ8;NMZu‰Ô©ù1{§±içÒüû•Ÿó’f RsIûg ô¸àf¹뺚N•{ø‚œÊPVÒ\ÃWŒå ¬+P¢ g3›Â†âaÈcYŽ •Ôójž^]*«¥jŽ.mèÀTÛ º¢™ÝíyùÚ©¹h™Øø ¤,L’êi†éþ‰ñB÷‰|5Y‚7 Ìxæt›ÂØÍ…)ÏÔ $ñSEÁmX°ø¡‚M¿4L$Sßcà7úÅýúÒ ó  i hºhºIû}Ü éë¸«É @={A ÐyZ`¦”È%WÛ;ã6ÿÁgDÍ.äÁàÌ+Æ©K*bž&í£9Qÿ.‚¿œY\‰C0 ímÿÉ…F4æmTŸÃG¬p,+¼™E øØ[_‘«äi–ü,¬EDXõG$é ðªö{óö´­Cqï£mwµù÷}¿H§(Z‹R/šKÚÈ_‰I"Êmše,åSE§Wh…VëfÐÙ‡,ë‹È3ö#‡¹,lœPxy%Ò,Òe( ùù Ó/ü5r3Dl—žbCJ$/1JÑП8Âþwð<’÷G†ùÆ:Zä5w"ϘëÐÉèþÊŸ€¡±O2RE»ñ™5ø—’`¸ó˜µBmÜž3/øEf)ø]ž=‘Åfß,Ð>ù%’î’(ÒuiyšëiAºè¸ºbÎK—ÒÔVö«¼bÖêÕ³Žï=ëÇ~(f¬Çá„èþ̉Œ¸Ôc“¿qNõ*p"˜“Õ˜S1©ß©xâ:ÀýœDp'ñ¨Atý\GOh¹*&„‰y… ]lYãÇÌ@(ðŒ\«ãðŒÃ‚g°F‘S-°éVž;C÷§å¹)À’WŽ"”kcÓSX®%d+¢ïºáÐ¬ØÆr±ñJ+DL·bãâ,Y€þ¯(Ÿ)>w“*„‚îFž}3Ëþ•Çpëól’dÙ¶òtº½B:ˆX裳!”O<$G¿ª’¡E!:–gÛPu) }(õ!¥Ÿa¤õµ$i(žš"HçS’°,ÒðDðX„ýdä#ö¸¿< cŒÐ…%ߌi»fb6sE Ëý½§{ØàÐ~…÷€)x†ä˨Ô+wƒ½ƒ¶)ú(4í‡hÔñÁÁw¢ö®0Š®N¹¿@eøÄNÜðð.ãÄŒ¹Ñ:ç`’Z6M]6]¶ú.m?H”²d¶l”܇Æ|uáXþ}­,„Ì)†4â<‰×Dïá„wHBqé}ùL (™™Ýè¶Ü“Xˆ1ð’M~PÄ æÙyf’c7¨6ûR9zÊcY·Ç^1 t‰aì0ûŠöþÍU¦lÚûw[Ù {j7Èôdi«ßÿ Ùö˜ÆµÐ–='cl¾?øÛ^ᬫ° _Ëx€6çqgþ,n¿cà0¬kuļÏ×óF…ò× £^±‘›ÞÂó¬Ž&ãÑÔ=Ž‹0ƋދöŠ)þ“0Æ3X=ŽÑTŸ™ƒctáX@6ë2SêÂŒ¹Ê¶Þ›Ü5¹…ÚÆò’³}¦¹è. ˆÞ[6 *v ôÜñsÓŽdÈX¬˜ªŠüÿf^ìmŒ™m6Ö7ÎÛf’sQd‹;Å{c±m{å^®±Ákl÷’w–ˆÇAÜìg î¦=µQ©‡WÖJ|Œ(b{ÖBD‰àó¼;à=}º ÙDr—¼Òû±)PaðQß³†G*”*OÏO‰ò7•%—~¯Ô¼“þ”¢ÓYû`ˆ£Oò^™Oäñw©nÇ6² •'ÂãTŠéT^€.;y¢òÐ^ÎcÄéœCáÕh]µ€Ðzhðí}áy¨51¼È†òÂéiºÿHCÎRÈ“=Jü¹†C»!G7G€:G>GÄDçþ’s³ø#ØLE^/jÈ™Š9·CÁ¢·`­vÕçÝFúšíðcNq^>][· ã1 ´ñ/ùô@Œä[ZúÆœbêXD‹7Lc6Êq×8FÜ0Ͱs#Â܈7œ&Æ;MŒwU­ñj„®HN^ ²ÿll`7ª%_h«žú¼»ÔT = Råx¡=òÊÂ$Cœ†Öš¼¥0öœébìþ:î±³¡ÿÿZìƒþ¨ÅÞå§Æ)¼åG©ëï'ë%Ñ’-˜¿´˜­(ÆpÊk®rÂÿj…Ù¶Ú¨Õaéh]ˆ(\îÓe6I¾ ¨ögÇã2¬Ë( DšÄYJŠ%ùÑÏ äH–£|í3 qX4ŒÆoÕ#7Ãsÿ¿¯Gº|×Ô#ï„Û ŠQ<¤^¡GþJ½–ç‹è‘¹Ú3£ÂjÅ‚À—¨…\ƒ“ÆÎ½rï±xn`±¿Pö&Eé£fˆ­„DCu¾€â .&REžVàà“ õ^á2˜Æº¢—ãÒ(Ð*–\÷]½˜Öµðjg@z”3`ûÞ‰áS 0¹Q” ÀÓ^¤M’¬†ÚÿÂþç¸ê¯‡ã‹„ÎY<7XU ½Ì1þ§ÑО§Yž0R7ΔÆh›¾„•7fÆöSîyPPQ}SÞdÅZ;笠ȑ ñ:Ã…ƒ€¡·Pp{§qAŒADåŒEᨱïSbãý€ ÷"Øvòm†¢ý ¡fOjv/ûÀÊÓ¤tf‡±Õu"‚Œc>ÇÊÊÆ‡y¦±ißÑÅßB]üOWèâ˜ñ*Þ/øûО¼Å»{<åµ9e ÛüŠ[Yß°^…¦É˜Lko;Áb¸ä]Y&“<˜Ï°Œ™¸oMm ÙtË †a0Ó’î²ñ¡³ÙX†c2(<+ò÷ù£V˜7Òb¦ äycÙ£cù£),tÃö¨=jw̘>ïjCo*ß癆¿^{Ô†ofŽåð4…—± ñ¦5¸7*¾i<𲄆lqÀ }rNØÉgøöxöX0S>›Ü‰d™'߬äor`‡õê+yD´~}âçÑ÷B0±óŠv´6Ãv¡Q 7T—€(ièÀ6©«Ÿ]Xz榇ìSÿ‘‚\ù&µä\öBRÿþˆöðRÛ»‚dµ°»^ŸJUT ÏøEÞI1]ýœV|iàyhãÎÕn©BZýGø_Ÿšb夨ªŽ±Ãõ§±Ìò¬j뤒o*@óC„¿pûqûVã6ffÆÛ#Åí¡ÆmŒžÍöQ·â ¼u‰Üšvø]½§§ÇôäÅ£›V·p·Î"þïÛ/_7é°ÌðýS8éïòéŒú@"ÜŒƒ›Ç2î /ÆÂ®jSõu™Y¾:hÙ"%mm’¶L=@õº¤­G»O¿6öU¤Õ]bÝFXv°ûhö©Y×çR¨_ß‚Â\m__‰$‘}D+ÖþÙÚÏ¿0T^4£&KÚ‹ÇE‘9•Nië2Ö[PËbñ‘㜜Œ' :Vèw£Œ>‹kEm”Vu®‰•t€<41ìcä Ð&’@)J¿ÖäÝk%a̓ÁÕ¡;1WFX¢ÐÚÑ¢…›Ç¯¸) î6²;b×)6ö!w'¦žqf§–Œñ^H(Æ>ìþÐû±9õÀ¥³ë]±—ξé=mf‡ñwK(Àt «S®+¿‰§Ö÷Ͼ|vý%vØû/³÷K3¼vùì›—¼ LìqÚ|ÿlvŸw=9Xø¬kjýJÍBøk©¶[«}Gä”ꬦª\,+œ—±U¹±piƒKsU®ÙwD9š‘‘Éå‹«Ç=¶´:G<¯&œRú-qšeY$Or¹´5ž&9ÏmOb-¢Ny´i{<Òf´´EFIç´1É+Ù %¡z@Žo¿²5]Y€³(ÿæq£ªôøpåw,ʘ÷˜JooˆNÌ­<~eÅnò,GåJÆw.4W{ýïÚü#uR¢ä{Ó`ÉøãE㇄?8þü[‰¾Ò…=¡»9@ö‘Ó#îÂŽ<y0H8ò 1ò XPðÅhJ•Jûf€ÈÑcd’çwÌÇà‡S 7±7?¼É¸=ÂÔ‹0nÇ›¾…ìÍÐvôæ‡ìýôÕ«ø!‹n ¬ˆp«²ÈÝŽxaQäÁ¬ÈÝÌÈÝ;{ñ›"®»6/Ĭ~WòÁ¡!>Ø?Šš >| ´ä´“‚/¥¤u]übÇE]¢NLu}ÐMêÙ÷« 41M9mж -ÒaßXåÑ5…Ú–7M1©{沦}3½LsÊûU»«†æ?~C¾ax¯þáÄØý…™„‚F‰f¼)Ú¹sÿ¸-HWϳÁú°|¥‰ÚÏ{z°¢“³uä+¡Íœ6þH2ÏïïbJ ;ÚàÄì?1’ï×ð°ö–dLÃæ[ƒjPƒHâVGsc®¦êXú–³§Œ“|?T°ñLêQ®4©ËGñ~~IÔ㪎õ~Þé«c=ì¨<s4Ñmv†[j²«LÕæx/àõ4›*®ÃCÞîæÐŒ%¼,iÉÁ,˜À~_|Œêê,ÉcTWG­g`2Ìñ1Ì‚ÆÖH I«h“Q¡Œ©n̨ J}™i<‹ Zû;ø*;§ ½<»5x¹b÷´²"¦Gj Šu,Ë*å˜v·•åØr/ñ$kÄb%0Ç–˜#9Vq,XQË;¤@¿!Óþ 1¸Ÿç[´/‰ ~ÌíZûãáÁg@`Ôpg‡öÁãáÊ{h®i1®@¡öè½Æá„@—دÑÍ• 5QóGÅ$K˜¦ëÈç<<à:§å,5f™ÈÝ—p–6ôNÔÏa²hî<§ÓgÏÑX´^ú[aÛ'?|u„‚ÖZ϶ccVϲ¡|¦Oås¬l•Çò9˜wM6ë àçX9æ3ë¡]•3Ž%[ßFXÈõ¬EËÆèl{ð-Ö%¸óëaßÎàë<¶V›V™ÓVV“ÀÝ_ã$*ðp*–Å`ƒåñ¸²°²šXÙN-?ªy6ŸJ6åä#F¾ž÷Ä[hYÏâ ¢ˆ‡nÍZÎc˜—;5mÊcJÊÜ…ö…³S»™îÑ £ÀRÝ8OTlmà–† ápÉHú¿ kèž[Š—Øï—KÑÛ³8Q×çu>ªöWLÐÇð:o[ìtÊ)Žï ¦R‘ §ø7îioµõD~D€5ˆ þûÏÍð¹/÷ÎI11û=˜Œü‡6±ÿÆy¯8º?¿÷fNì¿ppuïhøÒÛ¢fð_ßÁòÁ?¼“Öï|Ñ{j§«møïºþèòýïPííehÌQÞ†GñŠ6 Ê‚ˆQ(Á+ôQmáw«÷á¢Yà^¼z¯îÀ«J CÆ!Ü Œ¦^àf`ÝÃvý…éWfzšˆ•¨f |˜æ#Tž|ŠWt$ƒuÞÙÔß8‰E'0f ³‰Ê(—H$‰ä‰ù ëf9Ðó¶(tvvVÜM4¼4šXXgpÕ¯‘­þ.å ë þSW:‹´÷`ÐsÙ¾9GO^+Ò¾ßwç_Ð>û¨Gï.éÄs Vø‘Ã1:•u}4ãî“äÓgÁÊpíáÚ[i Ž–7+¢­û‡Ž~SQ¤Ý À’»©ÖÁ9À¼üÒ­ ÑDEýh¥—š öÖ·Ø Ô¶ùüKm uÏŽ.JÞ¿ÎÒõ=QùËFl©ó›„¿ÇJ5e;•|æÔ€ÑÙa,ÜÊ\í˜÷"¦Zùª¶>³Š‡Ðw××»×:gænóNþ¾ò%/iaÆ7Äa÷¸rðÌÙñX3iÇ&8;úì“íÚ¶ôDW# ÖRæ´1Õè2PvÄÓÝ2Å‹FOÓüÜ…E NÞ ³ÛMÛ*Jº´ñ€­>`Sng‡‰ÛáQ4IærÊ(¾<%¥¶ŽÆ½pÁ¼ iù:š€´ê×3x³ö Ä×çà';á]ž’£ ¯‹Ô @$ø‰öK°=;*Z?<3*·-}/Áóz'A”¢“$ªôð!¹€OÀƒ|òLÖ 2r!Ü¥z¸ã©p¢‘7C^È]íW›<…¼çKÞ–ãu6Y˜Òè=A]`YjVAºå¢ÔGð倫Éûqgê!TŸ\mÞ:{ýDZ\9ÄœíTÎôó³o ‚¿ãfÐsýûÁÀÄSǹVÉw&VØOªÑÚ/7XÕ‰*Ž` €(ÍØ¿ÒîPÚÀÞ f €böZÐI@Ð>b™æu6[@_ó´ÉVPVA™ ~èÃ=/²`çETA§ 36ÜLVwu8\šÜ›ÜÀ•6„[W†Í$ù)c#Ö™’ž^o(6]Yøà„|??¿öŸÀs,ŽÝÑäCüœ`9dØ6˜äÛ¼m=U™¶ÊÙ6èÜÙh‰!'Z¨Vo½•Ù~™Å\-Ì݆Á/s°`fß®ìð÷3-˜Q¤Ü]yŸÍľÒ]m4ƒƒpB ,>ʇAº0FKål=ÞŒîÑ’ú`¬Kg ¤ƒ€Œnîª.´UgÛ¼§M06¾ÌÚ§©*•ð$Wž•Í´pM™• ¯\dë1’è¤ VUçØªçØ¼m&ï'=}öTͱásžGß#]‡fšòPé2-Á§ùlÔtî¨Î¼yîiÁ2Z/9ä­·0Ûsa@XiÞl1äe<“”m<Nkã;=£[£gÔ§ &‚3*´bª÷Ç,l¦•fdaÃéÀÞµçñ˜µò¿q ¹Ñ¸pâàn¦5¸‘ÙsˆË«.ñ¼DKŸc•­,ÏØ…ñ„yÖÀVÔÙŠ¬×œ®æï¦À=—)=a`Þåè³íÉ\±¥éH¡†&e轆®e¨Æ’ŠǬB•ÂÀ±BëYyëB}`¤>!šššÐóI.ÂÄ—Xþ¶³P«¥TXcDM¹w•÷ƒÎ=H—ÁL™ÃOYI{ð·¸ÞaC)€/:n£ÅŒ÷‰•Óm¦† ±ë&6Ágå$ü ‰¾§á÷ 4̨_cQ1 Þ=–`(oÿìUÓÚIG]1Š’(ß‚jò÷ØäSŠôcâë'äþº¥ÃÔl«Q—·-ºÎ¹šm íõŠB´X9ßÝäSW„’+‰ª)ú1žm¡~•;rᎉîXÅÁx'¶€>²7iÃ}¥-Fýæë ý.Æß;YW¼b¬¹âûðèð6òÆ+×#Nбk¸çÀÅAW+±«Vq­àõþÞö.úÑÜV¯'Ù„>ÿ¾FzZA*‘ó”W ÈK‘IÈKX2‘0Öw¡K`;n>¡z­kIž‰ù&‹BUÎ$éµÝÐãkuiMT1Ý{ÐTµÀVy¿ÍTùCè¢Ôû¥7À§àæ í°…öž™aŒWXyTø<®@ª žâ%‰lÒvEAKû Ä„%+,ÁF¬áQ„±yÁ50§ÀT=ª¾=;Îsanl{Ö1×ñþÜB\Æãáe¼=¯Wñxx‡äâ"*eŽðœmb´_£@?%®_Àëݹy°|‡½}¶‡g C:¦Œ+7<´rÉ)Ú_ÍÑ9²`­öcÁµö.^½–Ë–Q†Ž«ú¿>…é;O‰ôÇÚ.3É}’­MÖp)­.\Ì[÷ãK©‡Ðaàý¼³°H›Ä£¦ãÊä.j“c{Î\o-Òÿ2\Ð]òáV_il®fù#ØTâKH– (¼D݉(ÒFþ1tx¹ºo½ûd£xÎôÒÙß(GB&}Q©E»}ÑçÝlß\d5ò(i—Ú Íyü">qúÊÏPK^´õºN_ ¾]BðüÃXD-‘?ž²²¶î ÖÎÊ]X¡-¸±@;ü<(®œ^oFöYü æ;ý ÜÆÊÕ|ãtݘë§/P’i8Ïä  Gæ9ǘçœT¾vg¨h»ü¼1Ïgpž}Bó4†} rîóšk…ÿÓ¡¢RG¹0+‚èk`g„û'¼ZóS$˜ÁKð™|ï'š7 ë æjïÞ&ÊŒã< ´/  ›3¦!ã4Ü óKáyÔôžÇÿùCh÷ªk°Mþâ_ÃB/þ ³Ú¦+ûµ:(ß½ô^¾Ö_èËαc/u÷0ê¼@[ðœ®/äkñ‡÷"èÎxâZ¸á´ßA}øûhÈVîÖÉ’ óçoƒ –±ø_Àæ¿5›7n†iMoØ8~ÿ­°ÉÿýU°y+ 6§~†ÍúIß›¬_ :^6üð·ÀÆÛ1vñÅO“­‹÷À—™³‰¹CiFµiC;iÛ³@òý‚ˆæý;œw ÖòPšTws~¶w»É¨Ë•Ä•ÖwßC43Ðô8wƒ~ÔX Íû¦•s5ú÷×.‡ò­ºÒ¨ýþSºÿH1w6Ê×óù,Hå{l^FQ§ô/C–¯uƒ†Sü‚ü<ÁSbäG Cí彦ŒÕ.ž+ùÑÀþâõ‡€Rݸ©ÄÕbh¹RÍßU ŠÉ'—Ž+Ð^®1UÞ3Þ˜†$ʆÃßÐú¼ D‡»Y¤·Åc¡nÐ7ìÕfÖ5%E[›å×åQÕæ)“åA¾:å‹}±1QÁƒ˜mßjsð4¿ãù»Ò¬Ù†šÄ”ö}ÎSð`Ê2öa•ó#É·¨¶Ú”Ö59.Éš æFý®ôœ]j1\Oñ6’äk(þr¥¨AžVž¯óz4]¶ƒJ“¯m"ˆ›ÎÎ à¹ko©|’é,:{9Ö³½5r]^“ME&}÷ÒoùÌ”ÉÊ?Àt¸h§Ã‰0‡}±)YÌé]éùƼÏyFò„)4èhÐ3MbÐølŒI ZTöµµÒ‚™È_·rfDõõAŒH+úºú’—a?ÄÈ ±r•Êø҄ŕëè>ÕÆB³@\ßçÝKèÇ”¦à‰jËÜÚ„™X`Yúowƒ¥‘ᨗOƒ`åc=“•OÁøê‚¦{¦Œ“ß…»‡ùÆ|)poxt3ù)Šä/ƒÀêvP‚è´ºÀÁ´Ii"§NxV¦´†¢Oc°cç!½HiÀh‡g ã4éMÐ|Œ£n†q¼üSô8¼þ7zŒq¼ÜCãx®ÇqœÆ¥pÜÙ.Òh¹|v^¾ö@蛡qq¼ß{„›þE—q”\¦qbWç)ǤË=ÈþöïåìäC2`ÉÃ/Z|ípÿRÛ¹pC{áStùøõ7æÃ¯bɇiàù|Sµ¬ýúûÞ;tèP÷iÜoµ¨vÆÜZýéø|m¾—À‡àkè¾_ðΡ>ˆ„²°êOÇ6Ä=h„½áƒ¯²z°UÚ€}¤u‰þ™»Ì9ôÅtpË–Nd‰™‰êÔDØüiuLò6X- ™–ñ0k#Õ˳•õo˜º’¼ÅŽ–%gsðüœø«y¾núèÝl ¬* ¶ßRú¬†¸‡à[(ÊEÀŸlåîÎÊÉ1ÊȆ¸éð„\WCh€C~úB„ý±ãiu‘ê«êcƒÄ¶Œœ"åå{?ë,dGµ™?ÀÝ…j3eˆ&·Ÿ,yµÉSL¦¬l±©£ÚÖ ½“§kÇý£7ð‹sRòìҘŋ;¯·êÄšgÃ,s µicb^ÇV<É»7 S7ÄÍ2ÀÀ£ö¹ÚƒçAÄ„Ç^üèNè/?mÚ‘ZôÆiÌ¢\O!yL'ï–an~ù-ÙšfüWm‚ååÕ«Ð|Ø[åÿ~+Sõl åœBI8Oz~÷ =ä í’ÿ=Å£¥Ö€†+šÝ@Í0ûÞ£0ÎpµÒõÔ™Žä®»¨0ÏmЊ?uó|]qSa\’;,Né8£ÃEÿ¢ Ì¹Ç jåèÒ£ó˜Nb.´‘üI±"[æxL«ã;±Á¥^oî1"&ˆrµgnBæŒg©š@jùÛ.Çþå‡Ôµíð£ôÉÑ€p{‚„/–³Ô5­˜ššB³­ú‘¾ßRUlžWÀï˜3ݳ-ØX»H8Pt·-F4×~ÝÝ£/€>•?EÇ1Ê¥+Î /ÇŠZ5áI°C38ó1Ì€íÆór¢1‡|í`JH¥É#ByDK«­›FCƒœZY…«ÛP‰¦¨I©Hã"UV!±ZØ9*»º8±/Ðæ~Ñ!RpH¶½±G_<)ê Ñ~>ƒðk—ØÕ öÌWâ„]݇y- ÅûÝÔˆb ½ðOᥢ§æé¯#Gr4•Ų&¯– ý¹…ïÄ–ªœn*Ô̸KC“#ù°âx©)_ÌYLS;MY»YȈÿªyòpºQ@¡|?/¬bû˜¿ö2ê ›/5…F µå°µ›yê•÷,cgD„H¿“!ñÿ”†Ù9”Ë[hI*/xä¤StêJµ/MÉÓvž YÀö)¿ákñzFÁb…úü¼v«-FäýÇðìæ¨gCÏäß}ŸwO,÷ãØ -îZ­®¶ôCò.Q•# Àôq׃¯Á²‡åc¡ÇŸ’(9ü›¨O¼¹òÂ8ùÏ¡‡•&+{‚¯ y7<»ÚÞoòsB¦ D{d ò”´#ü¡×Àè œî‰Zç0K¤kbjãe<ü R*-¿KP’] ¯]MŸ—ü üwR]žÁWaBÌ´#Þsºº /åQ~ÁE•a¼èÜ{ÿ?fŒ¨Çg„jG°¶ò-Xì¢ÎßÅôÅŠ˜ÈVüIüMN6%ù^¾}¦ï«ö·™À9«/ÑGs«ŸA”÷~l®<+g¥Ó`äÉÞwéršêGbÎU×"©ˆaÁ:5ê5Ò¿D^sF!k'/î½›˜±ã÷YϺ@­ôœÛª›¶•:ôL ÏI4™ø0ÿvLiã¿zPhHO󤔫æQüé'é%mò¢ÿÁp–Ä^5œq‘á¤àpƒÁʼ¤CϦÁ˜Cƒ![ß„­kÂÍŸ3]³9nn•´ñUÄ¡ö4…(?4´AfO7÷fOÈÈ}”Vúð6‰qŠ€bÖPí:KÃÅØ¹7b®õõÓðuƒ-(7¿>ßøHcš¾ýò­W¿óÜ€‡ |¡E•[¬ì®pðQ ïªýC>;1û>¿JÚÙ\kž^nS³¬ÌyHK½÷ÝÛEe@[ÝÙnr‚Ñ_ ÷~Þä…‰3òñt9¡ÿüºp®&#W­èz܈F«ñ÷(Qa!(‚®ÿ–¢ÁÝÆ¹óè1ÃGï»rÌÍšù¢ÒÜkÌ;éüûwŒ¹E›ÕCKïþ†ô½,Ä}>¼¢SçcÆ^—S|¥^ae®Vîjg3ÂÉÈòiï ÅÝj|EÐlàÈ¥k~e[|è+¾KQuí6<yë:TjXIgšÖj•ósÖ“l«î—ÖUy~Y•ë_’o5R»­:6mÿdçç’ïÐoöâæ­ð3­kŠGò3QaƒNÅ/{þµ ú‘|1EÞ6|/¦^äšBœ1:˜ÕmÅ„: /mÁ…;+ðey ¾([ŽÓT[*œ³š;d{€¨ôPÙs€Å:½õ±i]þ.Ðßþ+mÕ–4Ðó$òÁ‘âhIë nó7Ëán“Oˆ ‘hX¹”ÆO‚ÿªÈMS&+‡‚úbr&Ï2pòJá–y@¸e™Â-ƒ[0j¶‰Ì?à¿d$õÈ ØûÌéנȸÒº¨”xhhÍâQ>Xù8 ­Î×Â;[`lc;ck ®¿rlÂUSÑcŒíÿWÍ#ÕÌ4Ææj£lòblÝFƒú-ƒ»pù[Gpc£gïÁØö_=6¡j¿|ÙÛ³Â}S}åà ûp¸ËV‰>eW%Ö%^.¦‰0$_+†þn™Ú„Ï ˜;žÔÌh²,ùéLXÍÀ/PçkèÑÑ¿5G– àÕ\í/ƒBÞ­£þ“µÅ}aÖ?¬6§í÷a\Ä0„³0]ù·jWq¥òµÕOp±<ž¢2¬¥1‹ß²**ÐþBµÕ?oïÁù³t DSLÄ·e‰©ÅÉæFfëšô—\›Ö«ÚÏ\ÍÜ¥ñ·ÑCæÝô åF·¸¦sÈÙ¬ÊfS¡†iÓNbeV•-5åR°Š¦5}*R!$l¤`·k?¾—|B­"wР$²å¹àǸßœÖÀ2ǦÂúÞeì¼PD£ÝAû„;¨ÝA¯†ÝA…ÀAGêÎV5yRi À¨Ñð5(ä%­Y=QŽ ¬Û«ýà‚±+­ì{èÁ€Ðù­àŸ#o1ù¯#hxU 1^ô[@ÏOkèAhSå òòw‘—¿zÔ„Üü`ð÷×ðûÜòûÜ ü>IºQÞZ½ßD®B¡B·¸Ò^=’í®Ž©*9:ÙyÔFy÷´WK¾ýŠúþŒîF„’Sð£ŸÀ±@*n†àåþÀHtYJMÚ”¦˜ä£ýW'3bLzݯQ&BodeWÇV÷›Ô¨¼ ï~|1:ï²ê~ž{:H ~L$ŒWùºb+5k·2ü RÕŸÀ‚åCÈÄ:ÂÜ5òÃÞt½F¦ñ‡DÚÜ.îªáÏB÷õ§IkéS¯Ü„VÖáƒg÷â¿Ô>íð?¾Ý§^ò݆q×ðXòÞU£lI«ëvŽÕ†fÅ£‹×ðtŸé C_ha%«u% ¤žuÚµ/ÓÈã¬ÙŽ~Xö´Í¸š/H‚^ÙËÓᣋø‚±Ò¶Ù‰‹ØË³pp®Jø5¶þã8æòñB¬Ö£NLL¿KZ5 ?1u²…9«¸³FÚV‹ÍÕ‰O¨ÉÿZù s {e§¶ò’ªúÏãX ÖÂ4ó~ÜéØÓ@éƒq»D¤n |ÈÜ}~Ü}‹)Ë`~<~Í·,:7{ÏÅÃBbb¸XUI&É÷;¬ü‹)Ùýx±gTúZ|oÉœr-#ïwTJz¼“z›xŸšÜÍg~ÍR뽞J3ÌNò÷ƒVzæE)Õ+ìy¹Úááˆ5èGÂÞÍžzÞ„;™¸: LÑúÜx3¬r' › ”ü¿IÀ¢.v Xƒ˜°Õ|;ûë+&‘{Ÿã‰Wÿ~å^î\Í&òéÉŽƒ·ói~Wj§©…»W‹tÌÒ¶¬±õmqªÝêXƒ¿— Píi©'`4ìì‚ßoãEVÇáòŘ¹?^kjd”ŒùõÜbš?^ïn½Ç±o•Åsúë8[~+/²‹|E’ïï€3ìÃÔ3y¥1…Ú«ñivÀç߉§¿„§âuiÕüøt¢Z–·!IMîtœ’¼Åæh’ž² ›@@LmÊô`GÍIš7 É%)C¤Pݾp‚hoo®ŸÈ¨@Yn[¨jê Ät«1TÓŠË7â„s0žjbCR)^ýÇãÖˆR£½ùQ>GWìÚ+pÁ’SÒð 'ÒՆߎє†#ø÷ÔðU´ÀLÆÇ¡˜¯1'0º%Æ…µG$¢@®©~&UMÞ6sƒù¿ÞÓ8Gò}l«šM¾¶½X¿°iû"/*öç¬á‰ð©©+L ïÍ´¦é¨¢Qêø@ï¾$<_é½0Zz¦Ý ÷l/xë­|8è¼'”2ˆáˆÏXw ,Ü´ýÐ8ãè7¡g¼/ëOšÈ ‹éCv¿ÅHŠBa¼í™›)Ç(6e–÷¨m–ÅÔ¢Úén!+a…¶L^h5ÏùÎævhžj.}gó$hžjÞû]ÍÁ´)œjþúw6Ÿ Í燚—~góù™ü…½ä@oŒÇ7&›çZØj¨Š?,Y´ßµ—`¹ÔÎ/ôóÕ°1-¤÷“XÙÌ 3ˆƒã *ˆ·Š½mVüû  ϧbæžkLc¿D:_ ƒöž`dº×»VâmÀ&ÁëçÞŒJÙx2jx^1ŠÉ_“˪¦Ë‹mGÉñlD%êÉ q°ˆÇ‹ì"C~ Rµû{…ÉhʶNQíÝÄzÉÜEèi”FJ¿c:ʯ.ÌÉYñ\Õð‚\˜p“  ¿m‹öÓ¯tOa¥èC!G3#Û~ßïÀˆaqè¢àÙ ÿ¦çÆ@ŠR‹Võ7 và›+‹‰öænÿ-)@ÝXH¦øÒ&$SÖ¢#˜YVÎ7v‹têHtçÝg)Ô&즤Úì(g3ù±CvC¨Ö.kÒ^JA¿—B2F²?àåÛįßFV}â­]|;ÓαÎñwÍSrµù'zôb€DW%’~¥lÓ7!kЦÂý…Û­ý’­\si®% á®3üý“ñ·Âø›aüícüEoþý•ñ÷¡Kb‡àç©G½¥ÚÑ11”g«Éƒ_d-ÝM Ô*$:ý•ÚÂlOÎ\ÄÖ—Eë~µ{ôŸ—Ù®÷ˆ}¤UMР6»k ¾/m«A™œ_jÇ¿ÓÅ_ÅÿŒ‡ÿ±–Z…©h±iè,œXt‘Djjb9Ö@&ü–+ù‡àÕéKUÄ Ôlµ´mÁØúOâ ´·ö¢%ßLÚ65®TQ°yÖ%†åÆ1T2‚eàÐF·× /œGˆ2ÝŽò‚޾ÿ-Ðò…$ÆÐl{Æ퇫\ýr|þ;£ûÈèc…ÚÃB ÜϽbóE“ѹṴ́šÆ`7;ð»Oßåe_©°ò"‹y`¾6ÊèäžsºªU ’×õ0z³‰­DL1;}l%âãTÀŒ}µõ ±@6þ¶Ø’­Á/± ޹{ýfv¿uûålÚƒ¸ûp7‹¿s8f;±<ƒä§ˬ¢ÅŒ1Ë,þ ’O^‹J0Ãݬ[-Ob…ÏN4g[)¢ºƒ:5Vï><º‘åtð™‰æ™V6»F`.°²Â¯ùÌäûtÒ­ºß8Óâ݉—&6û\ù NІcZ‡œ t.Ÿ™äý8¡þãØw2~”Wvô‚÷´ÄŠì ]0³±0³îánÈf„ea­ãyøÝyŸÊIþ'»Ð“šÄv"w È]¨Ó…æí'q鎊œªV∾äöywÜJm6"Œ™§ ÓÏ­ÖË“Q—>kŠœ-Âë÷­„éNßö¯ˆo¬ø7|ín”ÖÖÅ504í®ÛhÏèâ×B‚ÏÂýfÐVë¡J8ΚÀ$$+Ø“•ݽüK©yƒÏ/ÅhßK@·qÓÂŒ¹¢ø6pvaÃÛ@-»-‹1‘MlsïÕ0Z†»0¹µ÷Üf’ž~Œì½ï^Œ õ•übæ{½ÙM’ÿñù½‹¼2K~tÕ€æ—è=?Þ0ÑÛ‹¼+n%ùŸ&¥sï"ž ú :PÕ)ý¸bK¿GZ•†Ls~¨üuÒ¶¼¤P8Üq¶lˆ7Ý"_/mûªþ³8PŽÍJãì’ w†³:x—%ŽRNy—%›Ë?äõñQÔg…¢N½ÔûFîn|× ~Õ‰KèT‘û nà%ÒÖl{}›UÚº,ÉtŽ+t=;™/H45úO*ø*2‹dîØ]¶ €¥½ºØß~ƒQ¬¨j68›æ‹ép%,@™)ϘbTOsé¨"üu<ž–Ý{n”bežFjª=ùq"ï¡*Ž®&Œžò~Öé=¯³rBž6^œS£=Ý f=©‚ÎC3?àfXÙ •Ÿ]ÒïIýZ} EÂbpJ“÷t's×i]ï*éФÍw´€­ä‰¥B»Û7!±W—ÞÞjCT¼}Bxªf»¥? òÛÊe–'œ³r”Ô*—Z`Ñ»¡aåÒ8“Üwûxl˜I²yoåñxk>ÞÂèLÀ‹ÊÇbàÖ÷W¯'}º°â­Éx Q{{^õmm_„×_ :ëÙúë¶?Fasx^”ŽŠFbÌQ'á#ŠÉh3 žbWg% âC½_KVDýÑ48Wã*ÅhÒ´@«|¼an Â»1d”¢:¥—'êå¶"í¾ô5!mxVëB]zM:EêI^t.îJþr8úüº,¥³Cç†ÀRçXH +±7àa`=ت×ÁÒÍ kt¥R›ºã¸’ÄâýGŠe îåk#udO«ƒoéÊjÍ o×óþä[óà©îç[­.5k&C&*}»œo‚Î6Œ†»ZiÆ5¦¥Ö¾÷FˆD‹Ý„7^š„ÉØI©†šëù}S'ë1yEÐkIL¨×!ܵóêa5u×…jù•:?³ šb¨’Qû¨Z m8À˜o†P ?(ÿ¡ìü÷Å^³ó©üG”!º  ßîý#Ϋt<ƒI8Üô4¡ÏÌÙÜ}\ß9žy62¢!t “s”´3g­ô4j˜<ÃBøI‡fîA½Yòít­¾®Ï4†`QeŠÀâç¦,6,6qçæþDÃbS4,6s÷fV²é?‡Å&‘ûçjXHþ£´—]Ëo÷ö˜äQ@‡òõº³+š—fœäPÚ¥§ñ¨Dàwز¤lŸtOkÙ îjñï—­éw,¾«|4Ç:Œ§¯udÙ*Þá%‡ºö+Ù(—rg-ŸnçʼnÌåc%•¼Ä·ò˜LÚ~v¢Ïy(¸i-Ð<í`ŸåÉ´ý+÷ãS>¢ö•Û­` ¹|ÝGo,©d}Z$b€fO³ø*óÀÙÈÛúñ%0‘¬D>׎µK|Á·¸{SêW»ÊÃÑWø§ 4¢ÈÅS(-'a‘âi°ÕIÕRà è¬ ×I†î€®poBtõ~2ª,ƒý<‡ÁtÎ:è§ŽúYv9ÒúØè&ëR¨›I³ÝÏ.‰~†¡WÅÙ<uÐ8©ƒ é¨òŽ¤ê¾³ðSÍh¸€8XÅ+lª½\õËÄÙæ»‘<1õ‡ÒŠ0/ðÆSɿԋ7&?|¯o|ç"90÷îi35àvM•óiÉ×DŒQ áõ‹æ^?iŽàõÂëõܹáZx½>¯7p÷V²þ?Çëõ’?îJ¾Hx-ß|1‰—´ÏÄp&·†—ž¦øÊO.©ãÆtð3:ŸÃœðìKdx¶ €:ÿi+#MQJä±Dæïň‚ÌŸ2_'ù–ÇdnÀbj¿ÅïÖ,^áÎuׂÅ+ѰXÇÝëXÉ+ÿ9,^‘üxXçÛøNdžüî{‚ß³ƒ oJdk—>GÒöàs/JOïˆâs¿?”‡© :™óùêà;¾;ËYC“GÅ$4ù/bB“§™×LÓÏãÔo‹Ç¼¤&2ïi¬¤&ò°üî~>"“kH6>–ÏGËF¥FYŠ“Vz FÉCIÝ/òXï9dlç ÆæƆS´9œÀØš°¥ò"ŸmMw!có´`©Ð}€Å8š”ýfW›£‰¹Z”wož|†žþ€ÑõUðY¢ä`5늦c6Ò1ªž0øi\¨Uä ŸbžMvã+ÀŠÂ‰‚\¤»G÷“nð§1ÄŸÖ_YG|ep’ˆ?­‡žLaþÔ}©7úÜà+lj¯l€~6P?ï^Šô³®iâäµOƒu«µ'S<¦ÐÔ%_™¡øØ{1±ü¿Þ釪߾w_ƒ¦—Øá³¿Qr…Rγ¾Å0WëZ¤jÛ‚^ ÓoýxÇA6µÇ%vvìÝ?À«o㮳¿‘|¿ú7q?5N3VÃOïNÚà‘s½Ç—ÛŽ-ù¼Eo^bÂG“„^ÿÆOéˆ[ÕøÁÀýQ/ÖI%ÕéEm/¨ôó€}LfrÜâÐçFÀ‹qÖ‹ëpê/]³°8ÐõutÎ ÌÖTä;‰EÏ)T÷…õ2H`] ¨½I H ³7 Œ¬Å¢ tô¦Îh€×éÃ}"þ¾Q4С\‡4 GÑe^Vª»°ô_KµN”·N:¨Ë霆ë¸ÜÔ]-w¼Ž¡ó»ò ¦MÐËÕ8Ø0Å`(XæîädËÜ-Xnk_uLšî«“+¤­çªsLpõ3vQÚÚX[ÿ‰ÅW§N.Ï3î˜Ãwî3îXÂwî‚ßìbuN\èŽ:;Nþ»PÚ"mmQ§ fVž†1tf¦¯6Õ‘”vÜW§œªÁ°Ï~þýáL("úìÖܿĠ/øg&º5O_T¨Í¢7)`÷ñî±à«J3¬‹ÿ$ûPòeÓVp3Œ¡áâà«T=·¿÷såE³äK"G_n(®D´„{™"¶ñy¬œÙMZ8ÆX+è2x3† äñQçÀ`pdª§£(ÐàØ©mó+x°Û™ˆ«&o5^;-á&Ìc¿A¢/ÅŠW›ßc3É?AЀ[ÚhÜ·”š"ówµ‚jŸÇû²NvA;ÖûÓÇMǸ§wØn%Õ·Å!ª¤!;›Ñ…×c 10íTÌhJZ?wÙ—»sœ¼ˆµ’~ ,ÕpÕÊ}@sÄ'÷!„,¦³•ªsmu_X*/ÄJ>4CAIip¶lp6’áוvò’ênç“«Z‘yÜÓ˜£N•tïn è®ÌÙXÞæ­äm»”º7ä›>—Ö¥–´ërs´´ X+Ù2šÎ)ÿ'WUÞ£ÜÖ:z bÃw>…½ý5ü›V§Ý1„V¾³[€Ù˜A,öPð£¾ÂÓª®ÖõÛPƒ‘.è¶6-TOCÜW`cMè&&û|Pà°éÝ£SžMw:M_ÑÀwy ¼7·â€î“Ëä€-ϲýÓŽ"îÍd%-ÕðE¥•ò^YùÐÞÀ±Z|ÚI‡ëÔeõÃö¢Òa+-à.«ž¦:;r19V_vF­½k%´ šÃÐßtLŒ¹°n$Ÿx.}]¶¢‹ÆÈxŠkÙß{Ú\yÈ£•6J›¢2®¤„’VT$ó„%Xa$͘]GU: ·[1ßÓ9mcÂ!Ÿ^l1bP¼% `@”`d ,2æ‚™À„îäÎÖnEÊ8§]H0pš€´p¥­“ˆ*is”h’êz;[ñXQÌ#G© rUg{.¸Ÿèò·¢Ë­ÁJ˜3¡x‰ôVq¢p…b Ð※i iu ù·á&W<ôv8ð»¨ú‡Å̽‰¹6þ¿‡—îp¯£%¾Spâ§ÀJwÀÜ6+ýÔj°R¶û‰juK,FùX)À°L5‹˜êFÁ£6\ÅT‡Ñã ¸—î#¦ZW]}L¯*¹v`OJëaª‰0¶ ‚Iâè™6‚%Œra ÓîÁ3øÛ¸s“ö4ñ¾Çþ®ýÝúg=FMB¯'Ñ$/óÕ͵Ñ|Uõ`‘DZüx§öë¸_E_ÝŒ|õÒ¾79\µ’o$áÞFžÄJv0W]o¦ŠmêBLuGðT €‹îÄS7òbžÓmu €F$Ù†Y!5®3xmÉ&ÌÕæ^×àÜ‹ •)À‡ã$c6r~Sšœ¯‹=)ð¹Ä—¯Ý[Õ„x‘Ǿ’M<ö¢™9_)o3X±uÃ:ÓNêòÚ½¹ÙÚá_ëú\h6§üKîZ‡.Ù1|1×ÁaæZ˜¶8ëI ¹Qì̵8‰³® ~Ì=›PJ¬7FîÜÄ‹-`•%À‘·€D \sØAþ¬°y/ôÌè¸ ~×N‡ä¸Ú¿|†YU:¯šòÇåk›¯žbÂ7M±æØ süçë4ÇœcÉúÊô%ù*RH„\ ‘;#yKÐ[ Lm†…G‹Á0A¦ i-âù‘L]ÍÕYHé ¡#r¢™{ á±0"*š…ðpEL³éQ/²ó >¼õ Aäîi®ÿœÞîQ|Úq"÷Læiâyý=WÈŽîJŒÈw¢ÃnȤ˜î±êw©®Ž<ƒÇ5sç!íÍXCz¸Hzä‘ô³ìMÚDíÀ~ýé²ÓED”«éý‰Îœ&‹»É¯+½I^é@ÙÒ#-"=H"2D^8Ÿšˆä¯!?JBòãVC~$ 2¾fÔÊ%c"­¦Þä˜!AÓosx@‚Ì7$PqótfâƒÀ-?¨ÇjÑã¶Ú¡!5i ¤VÒ‡ú…IZ~ˆ—º”VÇNErOä¥à¶ÊgbK%OW•ZŒ¤MÉ‘žn7¶Úüíi©¼7F’!æ“ækc_s¥µ!Þ Æß5¶[CËK ”ÓèÅÅ$E(Á& áòAà¦Ð~¥p>[ x¾…—$ÊrW’ní‚´£±þäbêÖéžiœ 4åb&ŽœÐV&‘©Åáæ.^ ïh}ˆ£ñ'å!ú„Å?Ç[ƒ  sï¶ÇˆÞ1pk^°£†5`,º’¬+IÑì=/?W+‚ ìßdÄà_»Í°Ø¨6õ<ãfañ OôÖYÙJL¡ Zjس˜A­DD‹²‡FÁ¬9毄™ŠÜ)ØEIg”bNš#Ÿò–Ü'Ý“"v4»7SÊá£éxð16h•üEH6 Çó2 ð<^48 ¥@䯭ƶáhø6+iãÉ/` ‰vɇIŸÙ ` \ÑLÇølÐåä²EÞb”>ðUDB忪slUõÞ%@½*çñŠ‚t%Q¶cñà¡”|mê¯ÄÆ2Yy™×í%"POª^Û"nŸƒ…‘0uò"ïyS¹c‘ÿÈR›îlõzZMòÈ{·! xò«(à1iÚI|&­Ù3“+-£?’“pÎãu?;œÊyÝ77ãNípÝ™Ì=O²ôäŸè„HxccÈb [P$^bgØ2‹‘¤ ÷g­€›cãÙRKpf"G×U# äáýiWžQV¬‹×!¢=ÝOPööDû&~ãGVuù7®ê¢Wõ”Šñ¼Ð‚;9«VSÜðX>Ç’†Õ`{/l;-¬ˆua]W¬«8)+Ö¶¿±¶’ÿtVhw{OK`jU9OU¿É´Æšù½°F$f>ÃçY‚‡ê~v ‘í"Û` /ðc:ÞŸðjÿ•xµ“»í¼/ÚBÈèÙíìqK u~˜µ>ž»õ‰µ¤CGÕ;Q\û͸u{[—/‡q‹í+À¼®Žcìhž<+R+A†Wµcv,IñÂ#(FŽ(}9§«ýòùLÖW¬|C(«¢ñÖ:|+’Lµ†?‡!©Ý»Ñ‘£­~:JÅè=`Õ½Ø+£FÁÍ]Oá_«ò!—>+_ÇŸnÁµ3Q&›£E~&‹[žžý5 ó§qìæO·c'ÎÎ2É‘ü¬äû1)+ÝݹäÌëtþ¢Nˆ…—%žAéo¾ ŸÊ¼¦ÃpO¡üEß‚—Œ§±kþu›\•ÉÄïçŒAM£Ånû΋ ÷;îñ¹áDB=5ç.®ÃU@;W¶É¹˜ÁñÖ[ôÊGŒŸÊ™à¯½uqŒFUß‹¸‡¢ý|S8Ôx£±E†ý$†Òæ"6Ñ=¯f¼ü˜u½K^ÇLù9ŸÈŽ nÂ\ZïÜ¥&õ…dŒbÓ×bM+H>w+fÒ|˜Á´–• ‰tt¹•=n/\¹[ëJG¾öçÖ½ae4aÊz{ Û²–ê—pí«š·ÍìýäRŸ=Utkò`+ñðâÊÝëpÃ׌=‹¼ +1ô—J"íµ¥íÇÕÂýM¶›–Q¶á™*q­tã)£+LdKl+÷P¨ñ ›i «EÌ;hqã)%•äK£X:+Šò!P­Læ´òJñS9‹ü e:­µœŽÝ–j˜ôÊݹÂ!Áž¥lÅNrÔJ¾_!“Ü:Õ‰‡L»W^Gbñ5쩤Ýð’¥uyƒ•…ÚkÂõ\8WÍNñ´å²}Ú´uDÐX=^¨ýå P´&}Oþ€;Û`.<—±ó+¦<°ì‹—Açæ:sµó'H)c]Ó+'S.8:åáx*³¤•½UCãlœSsLÁÓ…Zõ{t2Xæçi1/R¹™}s”t3ˆ9ë=VuÎ7 ‹úõ¬Äh3ò8[ß@ˆÞ艪o³²õ¶fAÅÙÌ‘! þ±FX‰>äAÌÁhõvØÔ5ã©ú6PùZîó11FÂwå>UE_‹O1Ån?Lƒµ»äÔ%÷´ó-䡯 [Ý#Òn„Y0L—SGiu|-¾æ½y“õ“ž¯c÷Lç;qt| úžÑMx¾:4Ÿd Χv*1LÅß—ì ¨£cL†ƒ@/ù°xªî˜c‹’½`#|L¹µº3µ•vF­¡T[œnÀMæiË^¥²Î±È©E0å\m䇴´úl¨oÁÎrµL¸Éâ¡më¼Æ£!Úcùj>ZÓŽxwâ0c¤5»gô[ƒ—ùê k‘6ø9!iðM$*Œ®ƒw#©©[4xP¨oÁçÚ§ÇðÃv®â/Ô®c$Ò®ñc(ZÄÄ@ý—³èQ®ÿ¤ûPNÍ ñ>R±Íøxñuðoi¬öXòá”>¡[zô· wƒMÔkp‡ø³æäÇžðW`#bXƒÓz4 °°keÇX²°Ûž@¹æoÆoe4^ oÉ¿X Õ*”“ò 1а)’rðÃßÅÖÒ¨ À"ŸàÕ {¿±°¯†V<ÄjyÇÅÒò5ø>S[ðßã‘õm‰¬ï¯žZß[`}铹Zúqc‰[¢–xÁñÐ÷¿Ö7G¸™xµ@»ýY oެî³×Z]|®%ü]¬.uäׯX]Wi1r=˜ëß/†ø­‹|.&´ÈñǯXäZñǵĿ¦œEøMZdà1´t4yTíTìÝ@͂ųá—6Ÿ¾1*0š×.Â/|–q6!Þ@ÎkéîÄDîãùÝØ)Ûcð‹!ø óÁCë Œž…Õ—ª+bC[,í;BÝ_¡Úœ¡gºñŒõz–˜olYµGèAD§¨4&—c48k“´ÆílÏœ¥7bPfn©Yk(á¯[Ú‡;ëcâ;ØÞŠS(‘|õ¥1¥±E¹¥1Úí˜ÄΉÇƒÇ"ßšÂn[Ùbƒš½§;1Ϲ»®·XÝÏ·Ÿ+6Q(uE”4¯¸…;[… b…DwÕ©žö†©g,xbŽM9“ÔÖê~$,|ûå+Ïß$ÄT˜®–uQ:J¹ÿ”›ä>þ.ùÌ”¾Ê?kPÐ5£;ÆUç×Ùòù/w63Ëá,憮°‡âÊó}åÁtñW·Â máZÌPü^%¸-4óô’f0+œ­Ü]§OÝ}‰Ôòìê~Á½¤|Ô±äÝt¶Ç<•½ÏytTƒómÇ:ñ~({4ª<‹¨¶Wyþ6É7˜.~*ŒâÊós… )íª÷žSdüóÄϽçn’s½çÊŽŠúd1J6åpZ×i·D¥ñÌf_ú‚×Ó¨³©XäAéÎÆr3Ú+6õ°l×@ÙŒ­°Ö,¹±aj# =“¹ZXûÓ{n©äA’0ÙXGïnÖEwïŦ©<¿Tz~÷ ïé ¥1Þ݈|{AôH¹yZÏsäÓ«CB¯c)µ>ÝuÈ“8£Úu´ª/÷ìM=žî9´¼“|^u©î½Ìþ˜\ì,Çá›VR*—™n‘üŸ÷æŒßežFïžXxþÞuÙù@ºë>„ïl¢tµGÇãõ¯ðýó}%Jw8‹‰¶b1¥4¦´¯êþ2°í¥ü\-E”Òvt–÷}ÆÑ¹/fTŹ}Î/'ïsþ«¥;ŒÒ7°nÑbüGÝùõ¿0‚øYä /,¤äÚ˜Ž}Å+éÉ<ùA0½V\_¹ãæ³ðsœ<°f¦÷¢iEßÊcè†Ò©˜òµî§…"4Wþ<–¯W ôü¢\íÅÃ=˜ç:E dˆƒ‹bÆÅÿ%ô% ô¥»$“nȘÎUøóÔ9ºöôËöù»Šå ô;°a¡– ª…& ùm*§´qð‘à+ÓáwýþwðËð\ñÌ‘8åÄŽuÄ“F”>s€2ÿƒ=?VxåÝKqç\òBû7ùïHÞ¦c©•&€Îyÿ? ¦"©(">ݦŒI}Êñ‡ƒ¦‚Ç8õfœjéÇM‹Ö{®¿rV]óPfÔK«Ü‰i;nSþÀƒN¬k1|Ë”_¨-m5¦%rZkKe1µ¡’sí‹C˜äš-"è“].Õ.‡&ѵl3JÇåRR·Öˆ#Ýp!Ôœxþ3F»e•Hà TsM¥ãòµá«B)“ä~Ù•KM1’Ó²—ŽÃrƒ—žÂ‡ ÊÉøíŸO‰Ä³rlHþßà¡Ygêñ%psœRT¹46FÉ Wt]†™µÛãD ÕGç³îèt2êcº·ÞNl_Tˆ^[VÒ¦ýýýQvܾŒXŠYw¶~óGlâ#ïY°VÂÿø#­Ú#W|«¹‹šÈïœmÚ‘vàä¯'‹ro¦èNB½4=¾?Fùq‘Oà J{:Ô‰ºš¼½Z1e1›çI¾ "³œj?É]Íõ§c¹¢a½áùÞzkiLžö p%cÍ0ÙP™»Iò¾K†]3sÖÛlÜUë­Å=µìþd &ƒu¥L_h+»•+›Ï2¦‚q¿UŸøwkº|»M{ýƒÁH¾;aÙÐxI ³ƒþ ¾¥>®;<ð-+m4ÖrO#[–ÃãÎÍ|Vüxv°þkêA:+¹ªiÔ²,+e9@ƒ­5µ°,›ww s×êÎ&½sóþ“ÒUr=s¢ñG{(8s-»vÈó¸Ò¤»š@æfâ©®ä: °–_¶ò£Ê5Y<žÎŸHTæhO½ÐÔç(ýNîiò~™¢Épß×çb€fí¡×†„þÅT¨SÓà jvü¬kÃKð 6”;Etj½Ì¦7_‹Ñ ”î×ëj4aœ©«–=špà4Š’ÐUM;&ò0îЦ%ª%íúáÖº¥ví!PúY½±üg^”È+ì|a2HåšÚ2EG¥–ͱ²<_p3€Ï»ûfÌd8u/Kôw©‰Ê׬o`åèƒÚŠŽÖsÚÜâÐæ“< x'÷cÙøKqµÌ¹7PvÙ¨LøêRèÊ‹‰Žñ´ª÷d 6óöYîšF­…Ú«Ƀ‚Ÿ[±ñ‡c\mjÞàè“û,ÊvCæZŒiÈ¢wåY¢(ŽS¾‹Æx]ÔûÁå$‘¶%4> ¸Ì;KAÙšEoŸÖÆü+ŒáOÔÅ6J8‡þ¡9(ñ€k±ÁÕ¼d/Vœ«#üJäé@œYIÈÖy­9œý/©óŸd·Ë/¢&–k¡$sôL,ö‡´Ðj©~#.°üõÆø‰¬r”NȶÏÛ‘èíA›ÐÕYk¥½Œ§ÆîÃÚöý å i«N}L;ÜLéã(€%rg‡j«S“ŸÆ$t:+°Éñ\òïWæñÙýQ»vèG¦˜RÌ…¹ „þó»³ò)r‚¢\À ä+,Ez‘¥p'šÁCp·Ô¬sH©Sêø»¬@K-‘mNÖ…•ôr,¬¤]Ä6”¶˜¾ íR:‹ø‹®™Ø¡_ï9 Û£¼Î‡9Ü; €Ë±˜sSÒÝåuAe9;1×KÔÔèä™[ó6Xy–¥¾tVð¥òDeFöåËÀ—º€/ñiÖßѾQ<¦ÕTnô6¤`Õ§ýX;rÿËh ¹5œˆ}àN3ú.7Áƒ¹ðfð°Á‡þDr»l| LŸ¹møuëþÀñÊÐy_X¦£Fqf»ÿ>=4fqÒ áÖÅ>¬Z°÷ògÝÅsU××ìëÔb’£Ì—¯2"‹Ï™ i#&[quä±’m×s¡déÓx"ÏÂÒV±¬W»ö<¦´k/„Û]o´c_AËÝ@êwÁø@p~|!­.øü÷â£óRÉÒœYÞB¿W`¾Ù;bÇŒ “e ÌÕ&ù~iê5§ÎK8§ˆ–j8‰7CQ*mì+à, ‘ ÏŒÞE»BÿDÇSóúFòº+׿K-õPK´\(ö6GÁ ¤£€)Ú/~:”ïû IÃJÑ{­Ñ Û ˜§]ûq¤!–7€Íµt;‰Û(9è!TÚØv0;GcÕöãu11‹aÈ@c-’ß)öép×Zz~´u<),ÒÞ]:=v'íÉ ´ß‡oг<­3>T¤Õ„Ÿ$è"ÅníÀ£M =ò/DŽö9ñŠ´“éz8W©‰¬ëO¡ö³þ½Öµ8´'Hà5| ¯7F® x®uU ˵*ýyÆ(X‚dòËÄ‹ÆÚkAjHµírµ_,À3Í£æ‡ýì8¡LÿHkbû/FøuµŽ'—«ö_«ÉÏbJƒû€]ÏÄ/fãgÐ'²¯¼Á)³\?b¸³S¬Ã~8 öIh“VG~ Mÿ¯ðøÞ¥ñ}UbŠaÉ)0ÂâàoÃ|d>mUbŽC3éâÄ'€×ãv@Æ2€¼¤ä¹³ ~8[O±*UŠ* ª»˸öAÑú׸%*kØù$Ðùx‰õã¢w0ç#̽Cò’*ÀBù=|ÝÎfŽjÈN"`íÍÑgZÓ•Ú²[ð`Žíjò3|™õ~ËÂër3­Ëïž)ÐrÉ)'™?˜Ó_{êGaÀÖ‡0j!Õ©!XK¾?b2£Ž±†’7…sû‹g —ªš„ÜgˆT6ÛÒClȱ‰?¢£HCÔCU˜ÒŒ•-ogÝ¢ƒû¸ÒÜE¯±Ð"¨m–x3K¼™%Þ,LòîNÂ_O3LÕÓ$á9—&^fKWö>q7ü#ù°N4±Q$ż…ué@%ÖÇkmë´õÂJ6I¾ÿ¦=©Šbæ%cýîjâs’€G”4)•ý¾£h¥‘çbr£á¼¤‘ϰñl›£^Z}Æ}R݆¹«pÎe  ÐÝ*?  íg¸¥àÜÕ$-0xçén+ƒ*iŨPÖÃ-àaÊzŒDs'ò»x,Aœ)ë˜óîÙ€Ît1¿Ï=ëðº©ËÓ‹˜ëEm Ú[¦7M]šÈ&êʆ"íïuÂˬ¼¨+ësµñ“»×q×+ ñ²+›i‹ÐIvއ$ŒtG 3ºkÏõèó‚ÿs•4Âz_ë]¤}½4Ä›©åˆNx{›iiÈÜEdmÈÜ%Û.þà”4{÷$±’C.òk§Ú€€¦q§öb¹Ò³””[´U娯… Ëz´MÓùl›ãƒ²Gy¡5íd Ÿz0ÕVø‹Ü9cðeÇK4}‰Mûú°« mê”|>Ûª&¿«Ë/5k§0]B¹U;™b5œ¨ðþ îÔäjû M1ØÞÞ/_`ø¨â¹ð=øVðMügC8_9kàX£ÒÕ}˜W.FîWtgŒ¦ =*¶yªÕŸŽÍ×´Ç ·¥ä;E,°ÔhfšŽ†U›ÑÁÊ£á)G_%Ú1É$ûÖQƒ2¤ƒö¢(SãÛywwdAGéÙÔ‘6vJòQäÑÔ‘Ó±’úÔ{ùc‰ SGR4üD&þ´ÄÊIã$ßnìÔ>A‹ïÞ#Ìöމ ƒSt<0R³žUá.ë]˜Ò8¬Âa’| ÃÝQ6Íè讈&3HHÌ<’˜Œ!L„WpÜKZ µž¦¤?h)íb³YO‘ò ©¸L?GgÏø°à;¹ÚhwD¡Y§çPèÁƒÀåø$6k$ ÷å#-þý|©YF­dø= ¦OÈ(ù$Àß<íä&œ>¬óÈdŠhÞö5¹5¨66€^ÏFn“ê)òム¢5¡!¿æ~Ücppk/¾½'d#QÙYL&;ŽÔe4;Ág$V:ÆuÊýâÿ"U“uåk·©XȱCÛ‡žñQwö€¡ÃEÌ,PW£²¸”A>¤Y$JŽØôtFgHUÄ8¼þ‡(^ Íÿqᥴºwßó¿—Ó„<&ººQÔjâ;è`éÒÔ—b®,`]:±ðQŒ\€¢s7í(É#Ô™&ÇÙ”S:™UóMùZú£†ww·ò‰šüoZ^@Aw{zÈÑ¥?ï6u«ò$k¡¶±N"JYçi—jÑ?¶/f\&L¯ OÛPܪ~^åcú¸bÙ²Ï4.“5ޱô¤ÓGÙÔKyÜx¹ÏDçÉb3§M™,/¢/_õå~˜OwZÄ1sRyÊßÕ`é!°A/Dö 1ö¸z’/ƒPJÓnå`‚nÇÙõ°ˆÁ“äÇy[øI&ËçƒÏ’ïdœòÀ½Öê`èä‘ô'/RPÕ"vQÔ<]}LòÖ&wót ­T¢%Î÷~Þ‰~4æéԾ܆;5“¹ÚÇð]ZÇrôåi ­²3U-FfhÜf ˜zÅ[&]aŒOÉH÷0w›Vì"«¿?ØÌÂÈ×›0³n\âÄ´.@á9 ûæwZXI«wÏ(ï'—R[ù”Nª2;`ñn.(-€”EZÖ6#–Úª»3_uu°–<0›\­æºÈ¡îy2".,ÀïÒºTO{ÚIÖ19¯ÌH³‚Þ×®Íô†¶9øåž~åÇw¥VÍæö-1YiVvüRÔ·p•ÁåTeðóÎ"íó­†–Ø‘«M€W‹ý]s•z-e^+`ãIÓS½øÍ´#ÆÚŸÓ¾‡~QiàBÔ# ˯)íºÈ‡ÈSÓ¬‹¸íñ•ÇŒÂÒÌûQ‡É¡‡½n+A¦tVÇûêX·~Ï¥“Bt–.¡ý= åO@kïT§[ó´¶ ì;S•f6;;@W¬~–_IùȰrº#Iþ#+ õذªG¯¸GªYbe †‹Hp¯å›Ù}‚~—Öð3ÚbÍ•Çøë–ÞàÝ“ÌJ:Pæ#Ë=¨œÝ€¥‡$¼{ìÁSÿz'¼Ë&tpe hBz…E{üg†v*©…I¼<ÉßÅÜÊÑàv^då9VÇîåÉŽÝX0¢xýŠ´ O¡Ìø5(?Ž"ÈõB;_Ìg'ÁçY‘-Lf÷')<‰c¤Â̹̭!òÿèzÚY£4ëÑ$¼Pò!§ÇŠÍ«Æ£¦Ø6§+6qžäGE¢¸Fi_ÕÕ™‡GµüžPZƒT…‰UKo„)h9?¡¾ç¢cͽ}ÀK»vóþb¥§d®ü\¬´.­É¦g½î*AÇYyºï°ùVi×W€†‘C¹>/1HÚÕïåEzû÷ Z½çãä‡1|¢Õ«ÇËß§Ëœ(v;1sÿ»~ :¥M»>)\®µ¥õÝÒÁ Qœc½æFÞ¿ ˜qØ¡™Œ.ÉÉ×JkÑ0 Fwë»yÆü~Ê*Òv ´›€ÈçÌ >©Zn¨\ª÷•üûº/ØxgOÄ2¸Ù>y´Q㑟L~•A€YÃ…¥}½ÝҚݨ1³&Ò™ÁV ~]¿‹¶ºÚªæÏ‡Èvâã+?ðA¿»<íuøHI+4SÚu®÷£q9Ãm›ªúecð‹ää·pëuc=‰¬Àa|üGx¼Ï“YœJZ¤]é×`i’ï'±¤ï^s<>Úwy˜>S_ÈŠàÆ=ËzFÚu˜ß#㶸§1[w6VI88|ïVñ^è«QoËÃñõî ÀË LÒHÍ® °`¡Kw3{_žÈ]쫪™ÙÌÕ(¾$ú†¯4cLŽ›¶3 @48Qd­»Y/â)ãÈ“zz¾?õðhO›÷¼ÙØ‚]1Œ+ï4¡Bö¥åm ¡×ñ³¿‘à9jÉ\i£´â&yÝ3gžZ<˜dgx³lRL.™ûS7‘ˆŠv¥kTÙiæòüëåbó4ݘ=m¸:kÒ¨¼R“vû#Fe“¹ò15{3ãgsµ·þŒÊ}ów ðØ|]iÉÕÖý™ä˜ÏÜ•ˆl¶‹í#MÙìDe"WšS•F]i,Ì×lêjÂì—ûð»qªl©È•ôõø0M&ŠmÍ-Wsþ¹GÔ̾-–ŽBa”ÎÂŒXCíË8ª9š^Ò‰›å¾§{¨ÜÝ3*&JZI:Ku¿Ào.‡y;;žÖ/âyÉ·Ö¤G…¶ë¿ ÜôdÔ>Qm¤³¦ž©ÿ8–ÿe#ª)ü¥õx±ÐÎ_ÚD7óg7ÀÅ.úU”Ä`aEcùüðl|ôdâ¯ÓFÑŸñCT½›6‘Œ¾è:㬒ӊ0n›·nŠ·>¥+Ëjâ%£P%ÃJxï¡(×ZžÓ¨ ýDîI3 7Q%ÿÜXáq b‹Ê³§ðeÿæi‘+ðþl;ÎNxO'È‹¹Çîð´ %o_ 5½`®YSS5u …{yBKÈJwÚ%J˜ OË?á÷Tç%T ƒ?s⫚ªóâøÈª‚X¼m©*2{ã-ÞÑçÒ@(àþh?ŠZHDÖÎK:SwÃøX=w¶¤¶8šXI3ûhE,Öø•ª|ÞP¯Ç¦t\,Q“ÍMì«EõÖúÆDüãÝgñÖ[Yì’v¬7ß—»ì þ8úg7a%TKº«EzéI•ïcÝÜ™„#¸Ž iŸ;ÊR¶ÏD'²äÿ‰h^"ÕúqÛô,ÂXò4Ž’ÎòtÞi®mM&ÑMÁí¼dÚÓ‡Û)²MìêÉ 6ŽÃʰL (¾ðÑÉxúðyóR@7ê)@ãÕ”3\IäCÓö§»íeÉ`=W_DZWÍO³ «<)›%e¦—ØÙ ˜/¬HøXoÛ¹>,6X›z^M\ãí‰S~†wRšÎJ:ƒOqW'–üTi_à„‡ê~3P¤ž„‹»|¬(y¹ÇH^•üÃ.DÈfÖôÖ™2þ½`–V%âÅ'çúeÃksß§¹$ñ×/ x¶]ؾFÕ¼4½+9HЮ6‡R@ û¢ÜX@.ð…ˆW&ïHàÖË}x"Âïq« AÝô%"„vJŸÕbì )ñD­HNôc\I|zoš%ÿÍx ÈÀŒGÛ’c€éÂÀgâÑ.ЖJù¹3e´Òˆj^“¡‰S Ùb;ŸÀ:½m Ýäèe»¹Óîp6«žɻѠšï¼«MUS[ÒÜ”ÁL‚nV‹ç¬¾üãÊe–JiU§T]P5ßU]_Uh‚¿3ãªfÇâmKUžÙ›`἟c€Žö!ºŽ1‰ÁÀÄ–Zùª1Æ+9„®Ð{êÁÔÝŽ0[ 'L·T…™’Ù±ú$§³e7{?Åw.ª?`­?ˆ°kc‰Þ:K6ÒÖÙ%ÁØ •tv8îGâàiº³‰(ë :µOsÖq¥ŽŠ™Iþ‰Dß6¾©kA[—£hËeÓ3m]™ˆM$ÿ9Üå÷òá¸ëX¢iŽìÞ´ÕâI0} "m G&rw}ý ݘ&Õ\ 4nw"ÌÊû*ÁBâVs$ìÐÛƒthX/:[ t渚ÎÂKí|˜÷ô¹>ذ`-À,DjÕ^O]œò6™”Ö…e®DÐmNˆÎÌn0õ ,Cû!WûQN«CWÁ7ôñ@ºû¸Çx/‰ÝȇöµD|äôw7âÆX]¼7aŒ{/ˆ†ÔÁµøBà/(ÿˆ®—ˆççúÀsÏ^–.ˆûYò 'ñØÀQLBóºÿ âîꚆ+¹–­ÚòÌ«ˆÛX8¶‰[‰²o¿C¦ý¥—L+Ä_°8%Iµã$ÿdC¤Å“?1…/±À}g'SZä’^T*ÏNôÝ-y¿DÜ=g® ²_Ðe/yö)L—a1ÓÂ$ï(·h»ÄO ˜å(»@bHí™õAH`=E¬¼§/©–¾'nÎÏ+Ô^ý yÎ@6a]?É÷@ˆ‚@6ÕK[«óÅÜÙ9›q ­F—ˆ¢zt‚Žþym:Ú·Jgùî@åéо¾÷JEI[z ¨eaµ˜a(x+ØRý¬D=$¤úEÎ?íñzZÐS™È‡ÈGAòY&Ÿñ9l|fºbg_]M>[v\‰©ƒÏx=ÍqÊj’SËa t~n’WCÁRByu ͤ³¤UQ„fþM4pMbÃó( ™¨æ-Cd- ‰¬qxñÙ¹>ÇØÕczBX]oˆ¬öPD´6&ä–Þ#äÖë÷|£ÜÂ0µ”À1á.&¹ußÿr«¹Ê£Üêá|Ú!·v㯖¬¤‰¹In•Ü4êøOåÖ#ß!·r£åVÈ­› ¹er+Î[ñ†ÜJ¸¦ÜºÁÞû_aåV´Ý0IV3âb PUSêÑÔFG s²ÂU[‘¬ö…W2.ÐÙbñÉR|bA•íÝÂ*͆a,)Ýe'&*'ªZ¥_î–¶žP§^’V˜ñ@òß-­"ºà¿¿™Î y•ޤÖÊ<šÆ¦\)¯J´‚+ä•ì ˪RCVö‘”вjʪ®Þ:a´¬Š&6"¨êëBÄ6i›”‰ìíÌ£èZ:¡J‚Šá»VT®:—@ÄoCò$³¾¦‚+‰ÞÞIÿf9 yÚúák`saVC0ýž“äû5µhÔch?É0+"…jE[,ÂHE^PN!þ隲罰ì‘.«ìyÏ=1éß.{ÞŒ’=c¹ÛêÝ=…¹Û˜Vo]Jw}˜,CÅ•>xÞ± ¢Éý¤u%Á’øëx:)ƒQß!ÈÛ ¦t`Úë2‹ Ö§Òlâè’&®tÀbåO.°³rª÷ãXæjTg‚±Ò,­ ÅšJU(¤­uÌœÅÂÒ+ÿÀšÜu3˜¸Z mKlŒ\eËÔ_לèr‚÷〼3ÂÈ{ s¶ˆZ‡C† ©vζòôÿŒÊez`ißú ±A ž¡AWµ–;¯ÄyOs‘ŽñúMº»ÑÉ­ç(N‡c·ò†Y2ö‚)‘hhH|¡¨k%ioDIÚ‹J,dâµl èâžiìž0߾–ߚÚTß‹Zº9ȼžhc`ì­qbÖ9°Ä0424€4IÌ-š«]¸ƒh¦ˆh¦°·Á‘u¿RÿEÂÊ 1ÉT—æX‹&ÆFABÕaG¹GŸ ý:œ£+µª»5_W쪳%Wx kŠsÕ{÷Žòž‹gÎʽbÅôlŒ9ˆxI-îÝJÂ`ƒÈH3JÜ×Ͱæ°ä~D±ø^ Û À¨ˆjÿ})x#É…m |ŒÄ­¦b¹07;S ¹Ú*â@ô/ ¨NÍÔœ›1»ðì0X wµWÇV™8·@SÝÙ8Ë·ðØG@©‡SÏÜLœàýä¬qˆnnàÎM”SžM ÊWxå.|¡1XV¢)>ݵ¹¬µz`Õ7€ÒÔ–™ ¿áKþl¨×îFXËpÞ„p–ŸB/ÁàítýNÍ Vs1ÂØÙž«+›Uw[¾€qyÆCC0Þ¤Lá剠B4â<<›âE^ê\òáIüngð TV«Ç‹é$°Kå¦(¥3…a·— î5t; ]HaÚ} ð˨¦p3»ˆFøF–à˜$`Îaêb¥QS&\Å1 òîóƒKYü@/ý˜¹k˜{GˆY6íç ý¸Ù€” Üœ0º~è×Y-ù¿Š7ÜœÑ|r¬Še Sx…etÉ&têt0¥6Ä-+ˆµܲTpË QÜÒŽXfðJ)Ûûq‚ã ðJPû¥~ä݇Ê%sû¤UNúv-±Ëÿ¶DØå>Éÿ=ƒa¹™iÞá¬aÊê^²š{ì(X/2÷æç:âœ%-šû‘ä»ã«…‚›àWº§Vò#WJœóX€ªa:˜nJ ˜.÷´Âp”€Äl•OÖ•:æiÖ^O»’mº›ñœ,¬·‚M°Mç+’¯“4üætP‚”•G¹ò `ëõ$ÄððØ ­<• ¨ÎÿÃj/÷¬F]ÉæÚ̳¬Øä‡óyæ9Ä\M¬GTe¨ P,U|/ÝóbÙjÅPÐÓ@tF€£øeèf¬õA¹5<6ý~[`É~ÿ‘¥ÿÕàÄÀ1Û1á6¥.ªúðh›¿I¶éNVPñøâÊ?ç.Ÿjq¤;_d+~_‹!GÏU%pÅgRšf3ÅWuØûñ½Üãó²ÝPÿEüýÌãSÖÁJgçÞä?b¨Ñ?Ö=’LW=M*ÐØíÂ8SÌ\]ÙÍ.§«µrXóÜ&ˆ€ýCI¢lB&H<äyÁCÌâ« =àø’œè³§‰þ’^·.NòÛ‰ƒÛ0Œ¥T‰Œx3¬Œ¦È+źrµüq†±ÙðC¯ŽÈªãɱs¨¦E»âÈÒ%ÿlk¶{öa ãüfðÖ^B³ŽÄÍÎK0à†ö.EKE÷GZØêmÄ·¿ ØÌ¹.$ßçD¡+ø—(UÕÙ—à5à™âÛp3fCKÙß[£Åøˆ) g\k`È%0Ãêx”‚ζì Jê¦fnwt.ù¸ˆ?¬‹%íhË—t„ä]ܹ!De-7 XT6ò„1Šiê>$t÷FSšÃí+káN_µµjˆ¥-ng;މï-ù4¸ÖÖ¸t—¨_W^ãjW-r߯³*ÎÛW®g®õ¦3é®ÚŠ[Ùc‘¹k}•ɤ´ÏÆšÂ÷z+ñ†e,ïl¥Ã:нÁim¯‘ÜkÛÇ ¤GQßÒxÛX±ªxÄHW6ªÎ¶\”úíׯgH+m0#€C¼ÈLß|IãÙ!Ö‡z> Åhût0Nô€âÄí ¬À½”ËÎDÇWl|ÙõWÀÍ7!ŸužL!>,Ðçü·Zɯ^@Ñ\§s•h6X¸°’Ë/D×´[#êây sï Iè&æ [4BB“93½ŸØys& ª´Àœ wnêgX5‘ý—m&ÌÂJ6«J„ÑÊfÿ~”„ž†OMòýÀ0:±óøßQµse“䈬ܽžå½ÉÀËú V>ÓÂ=uÒÖ–ê''IÆB4UÎvÖ5Ãq¢ÌVÕ(°¤jê-íõxïSÅçÕn ƒ–>Ø™Ô3Aªr·K«~ßåözRŸÖqχgIõŠåÕC«odçx/ƂکؗhªÒ®Z&H[P.>Vhí™LÊð)Éçõ ’™²J¥ðËñ¾ä«AÅ´”ôÔ÷½Ÿ'¤öpWé w¯§—¥¹[XXç¡SŒ5Y;zéEé¬ÁÜi—¶^—ÚÄÔíòåÕGTä¾KÅ ?¹AÍ2‘% 6©z¿^6’L»jP9î­ÿ$^ÚZ×gOª\‰÷¶²ä´j»ïðÇ¢LÝÑOê?·ö™ÄŠ-´Ä>\ù1*+Ï#J+}ß5SÿRðUvjåç˜ôg¥Þ)žPê¶O‚>|罃ϕþïÆÑ3•í|7ž~˜(®ÁZwÀœ¡„µ€0&€\:.ªÈÈ“8ýE$pùE1Šï ¨¸wš¨1(@ÄKˆè­TéÙdÌ”ì©uœ—üe"òYŸm ,Fþ¥>Gð»0BZ…GLÞÁp"hdvà_Tدâ§!ìx¿l„´Õ~kº õ{o]¥âzOß›Óç¨ãý%ŸxÏÇ–Wg±KìÄÑ/üG”PéPf.!%¥RðU 1uƒn¦Ç°š$߉ŸÜÿ@ïßQï79ÓËrªí÷xO×U^¨TîÌQ-÷À’.é@ÿ¶0—J6£ dîªó6€É§Ç—^ ¾¯N3÷³.öÑÊÏhA{hAû¿m,(_Á•£5=ß)k8ƒ<ÿÄÊÓ´¬IJ¾ZÖf|ÝöP·—ÄÃÐ2£dIÛŸ©Ú¨KÕ×y?©«¼X©ÄyÏ[V`~ ¥-ì‰ý}ØÝñÀݺ¡§½zÚÞKBOK=­¤5°…”›VÚ¶lã%Él˜©_ào—„žöû›D[Á8ú q˜ˆª6ˆÔ•$6˜ÊpG¯ý¿¯µöÊêŠòÐÂÂZI½×þ«Ö~rÔÚßFkœLÈm¬®ÝMlOÌ´ðb œ”&nuàö‹„û‚oE¡@q¦G£€bƒ¾Iªö»h Bøcç/ôþXàB)Z.¤ØH±­æ "àD—±²„=Wàć߆;z6Nœ¿'^ûnœOãö+¦ñ½ „uйx‘4¤„>'ùŸ9/²Ø;7¥vóDïév1õ(;av×!ã,m)Ö›+›`ÉÙ=Ów ÎÝ-YéîêlÐZʮ㞖êÁ-§I[›ú½/ݳdò’ϯtnFù™µÏxd”ÃÏ_Í(w…åo®`ß]!F¹Y(AOÐÛ‚ÞÏaˆ»BÐúÙka–µ µÎWB˜êng‡Í®WÒQIÆZ!ï"ʤ{^)%m}`\;f$&l­¯T lÖç(<_Òæõ¼[žÁ¯¨³*C(›f ¬¡jö¥Rè{ì/c¹l¥ÝÔ˜ºnųòJàƒnd¹¯,y7¸ÍN/ÙHã(³WÛ†y?®«<_©ô™¦&ƒK:Tg»é\ºs#|&z~k£»7Gé¸ÏvG}؇=›Ù>ælÑJ÷Uð– !¬ýÂ@Lú…ÎÐãÞbå½+ C°ßx5æâãÐj`8^Ú‘,œA̰7)Œ½,+>£‚ áY슚Ů.¾cD(û<‰&I[/@ê/ï!m³ÓÔ‚èéÜÈFV¸¶ÓBÆÐ™†*-Õñˆ¡ŸÇç †¿/ÏFcèçõŸXû$±¥¡y+ð}vqå'¶‹M·Ð>—‚¯cöþ(ˆõÝNðú‡»ñ”@ÞëÙ'Ê­… F‡”‡R.Tt†~*â³v'_±ï½1¢äà^"»€;ŽÃ(£ ¾……\ɱöÛßì}Ð Ó®ãf©?×Ä7ÜèðÔxý;îd8÷ò¡ YS[R›Tû¤ô’½à ykáaõàªX²3áî’³¬Ü;ì¡ËÈ›?,¢Þ0¡ ||ý ÿ~‹-ëéɾä¬à_sé¬uï¸Ïˆí*²÷r釨K>í¯·hë®¿Š½ˆ ØË-Qûë¹ß¼º÷;ö@ÇÇõf/ëÁüã®t{Yì¥6õ"ö@™§.Ì^â£Ä^P'½z;ø‹†üeÖòñûø{ï‡>Do»·!6ÝS÷®«´ ƒö¿yŠöà1–yÙÌ®¼€Iœ¥U•Xõ˜›u}¥®ÃZHOÝk¦®±aÐ;ƒoІ mNI¾ÏíŒd§R£{à¼ðĹhƒÊÞ IÈŽ±cdE§uÉ ‰\Ï뽆sÀÒB»´NÚkú]K{ "RfÕñÆÂØô’:iVhŽŒüEäIOâÈïÇìŸ0j´/O±3ÌÕ‚œhr¢~x^˜‘àD·\;ΆøÿÕ{¶#v²ãlîæé†¯`ôð«âB›ó®Ú¶Åm6cËöaâC‰á¨Ð9VêIñëÿsþJÅ Ùì†p@èUA6M‡Ûˆíkh¯vuĬ4˜«Ó°ªŒ˜¶Â$ƒ×ì0xÍú¯ùgáû¾Þ{cö·Ñ{§/c«3èQÂý½ÀSð3jWwI±!~¹Ô8¼ ·ÿú½aboWø¯¿qWwJÈíþkÜÕÙÕí=²bµ:hÈ–@öjñ¥À'b —ØakÔvnÓeáËn46W%ÿíÄ»6ó{ÝSÏÁ˜Ò]›%oòÄUŒì½ÉJ³Ñ»«’¯þR”¦¸Ô[0E¡« Þõ—zAëbµ¨go{ ûx)&ýK×ïÒÞjìϺÛóq=Â­Š´†EögïäO$†Eög'†> ùR£Ç•|É•Øeuµú¢ M„šè8Ï&‹}Ù‘½÷eß!°%†÷e¿¸Þ—½‚{“\·_Êáé!ß®v\ŠŽaùßê†G¯¥nþ_é†ÿ¾R7lÿßꆿI7|ü»uCŒ‹V»^ùýpÚ¬^ÿŸè‡Ù½õÃ÷¢ôÃ-B?¼r°Wéˆ{ЋyûÿŽ(â31^¿…•´klðUá4íEÿSÐàhyýßPG¤C(î,œò¿åÑÿ+ÑØ´ü6ñÕAß¡#^!ü¤#¢¦&¦b2ô…J¡9P!A ¾$JA|(JA,+ˆÍߦ n»JA|3¤ Ê} ­=Z¤+æDk‡³¾[;œÖ§}»vXlh‡Oüvíp|¯<ߤ®ÿnýpÊúáÔG|‹~b1µt„:Z?´ú¡*'ù.~»~xe Hoýð m©z÷Ŧ+!ýð™ïÖyiˆx&÷y6K«TÔ_ ýð‚P³î'Ö®æÆâyޯαÄ^Zb'2ŸØG %~– cºRK¼!¬%Þ àê¹ TD¦làÎ ˜…¼¤ÃÑÈJ¢µDPïvK>?ÅìP—5±4JMÄ0?Þwåy¡&¾Š¬ie”šˆ§†Ø¡%\TFÃRºÙúgÚ:1ÔE­2&Z]ŒÚ[úOôÅ3®²]¯Þ[º–¾²[Šj-ÿ—öêÿH_aÙB_ŒŽ–0ôÅïë‹"VbõõETÇä¤nçzªe&„C âóÄ_H$Ÿ[} aåy¡þȤq„•ÅŸöDE–d e‘΢kkû =è[ã¢ôEwD_ú é‹ë…¤“ŠX«›€Œ_#}ñt”¾x2J_üÀÐÂúâ͆¾xe@žä`è‹Wåº.cAF¹7Ä(Iù üÑPݤ,ÆÖ¢²øeÂÊ­ªKahÊârCY|$Ì·Ôö Êⵂùî¼2˜ïÖKa8}/ZYVã eÑL-¿5†OèŠ}úâGß®+&ºâÖ~ß®+v†tÅj—­ò|¥´µ~øþîÃ}÷ï ñ÷It$x{8#ú÷-”}ûo?ëžÊΫX™<Ýa$;•|Ý"mú ÐhOïò§±ê"0-ÌÀúžx^Ïçr+½ÆŸÅÜ‚~,YÉ÷†x^ÏòDÊ„ÄßI1Q SO‹ä{L<¿ž/À,y“p¥·aâÿtôJsyw&;œMÒš=ÒÖ£êÔ|K(¤×¨î(9J«ä¡£ü‡Ì%‡ƒXÆtâˬdož_g_a;Ëv^Òê°¼¥ Îâ–çà+Ó@á;&ÛO^r fúô/ˆeµrÛ_Q ;Dw{1úÕö"]·pÖ…[yéØ[³j¯b@ ÞÉ1lòoÌJn©fά◈gºÝV}‰]»ÜG¤.QÁæt6ç©öóÅÙd‘‘֪牤ÃñÀÐýcƒÏ4!´Tûë”cÕö ²LâÉïpg«#y“ª1 ¶½9çjt¸IObÜMxiñà@µíMci'K«ÆD-í:Ñhû›¸tI”5—?G-÷37Ì´\<ÿÕ›¸t ï•$oƒ…[Ó=É<ž¿4 ‡0ž9w”÷ãîd‡»‰?¦ééž:O*ïç8S14½ÌR1u¦6¦é.ó¬>Þ«¼;¦èk´Šô_Ô©•üÕýb~0µõ? ÕÏ‚%ßë='U !6ó^%5 gÂúY¦RSni̇”:”ýF¬;¶7)Cä 3ÞãCðöÊÉ)fÓ(%]Ú6×Âûã+Žƒe·Â¯xø{Ó"že]`N–¶Õ©½Ž÷+Á£¾ð¨¯´m‰-íˆãýrßëM¢"ÝMúØ£fšÒ£7ÄáM\‹9 qÆ% ÖïÀMÿŒ®xn°UÜÔf~q˜†»@òamÄ´®×ñ è4Ú\ÓWùÚ†Ÿ,¼çtù:Ó>jàØ·ä¤ø&-Ôpú}¢,GBq`ŸØ›î>©î‹’Diˆ)è3*§Ø1ñ9J@þ"Õ ‡j”©îNmj¼¨´YX ýp4eµOH« žÑÎ:µÐCå`acœÁö¨=Þ‡øêù$;†IìµwHÙí/²Ž4‰œóÒ¶™Õ>þôÅäÞöá`”²NüêûqÔñpîîT-ùõm±ØF•­¶t`yQAð/f'žÆÁœÓ^ïªv¨–ûè²¾êòñ¶ô»ñŠCÐØH9–¥ä¿…ÌyLb6hXÕ^ÚVÔÀX31é¾ I-ò.³ÄÈÏR&T¸áiYä}Â#W‚æLÉчSºT{<ÏÚ7¾c&þf§Ð^«Ø5ǃåžf`eç{B9%ák×™KÚÙB[ôDÏÀd«Q„µaeM•¶eŃ©œ‚5¡æ’ïo®ÕÔh:¸ ׈í„•<Ï®ÅÒ#ÇE¦E^òü}ÌUƒ"¢,,wÕ¨ .]bäÏ£¬‹;Š´e‹Á uåù\í7â@ÒJä®ff’|©=f76þùôDœÉ#v -¡œéìþdV1ªašÈnŒÝO¯0þ‡?\+ùË鬪U• ÚœvY¹Iµg¨¡Ú·Þ"m»¾jö´ƒ& 6 [>0±aê@#›ì@ê»aê`BKÚ–†Àó´˜Á4»›¥m -̽Át»EQT‚Ôúo†/©é>¦>02R¨6Ƥ6iyGAjùÃ!H}dÚºƒÛ 0±9v‚ÔRë¾ R ˜+ëüûùÃëñ`ºUI;øð’±«‹‰Ç›µ_Ý…¹­Öv“-Õ¬5¼¦ëÁÏjò´ê,ç—¢%ÏeÎuÁ­iÛ4 Ìßìl×Ömf±ƒ¹ÔÁæÀÊK˜†öð[ ˜ss ˆ,nÀÅL+¼ú¸ößðb`6Ü–¶-³™ïF"6_ħéj‘¾ˆÒÒÈi[‹:ež´mþã—å[@•¶Ý Úç©ÉE‹xv¬Zk´”¤mçÔä'¤mËç^r| 5LJ’£ö¤mMjr¾:ñW€ õŸÅ²…ÚøÑ(X5 &fò×-4ÈéoT†y"<ó Wx…€ë|‘»qÏ‹ì~ä+4¢¦ÅªóyI›´Íö–Óå…ó æwjÈX•eÛÔ…–06¡îÆp×+Ò6ùþxÓn³ÒÎ@ ½—Øñ¨RZa ×ah4 Ј Õ‰¶ÿŠB¢»þ+„D/™‰`ì òíˆ7Å6oꪜZh¿&Máî:ÿþð^e4fÉw6JÛÆ{/Nñ:_1ƒÜR%uf0û¹K›µ™wôès€ï®»ˆø0õR>Ôÿ Ó&àM½?žâE­ð-À¤õð†ã}⺒ï.ìoï…PLÏëTƒuñþxå»êSżOM®öÑDÌ ùu”\HrËœÀÖãÕ‰7`š)Ãép\»6ùÏT_p/€V1÷i°NÁ´:ÃŽ©y=ì°ñ+‹¹µEܲMÚV`á#HxÄš#¹Rçh)d¦3Úﮣì˜såÍŠ&msž!›º_†”ý¤ Í6äSl0ˆ¹/ByÐò×þTÅf,3êî̇‘k¿¼5\Ñ‹µò$ô€ñl‹÷\Ïòïq°»ä>Þs¦åýY6ó¬E”–'ÁÕQÊâíó ülëBŠ%íd°eñ6TÊʬÚÏ.âÛÝ¥kѰ.qð‹wgÓãÄÅÆï{è·½!›ÊObíY•{:{×W “òµÃ#Œ4¥’ÃiEªÒ¤<íwÐÍð>:bŒÜê‘9hoŽ1’•J~mšeBžvrN ^§Ø‹ÅÍÐV¿¿Ñ‚êÈ¡±ºnäR¿Zw6<„;Üm+€G€ÀÃe›÷‚YN0rQ§Ànäñ¼À¢Îˆõž­øL¡{Ï÷°™ÏIª9$7çj/]§‚ŸÜ‹¾Â™–à#ï5&ûƆÊWÐo`öí=[ü#x­8ˆªG‰\Úƒxªzkf\´IÏ,¦Cñ´Ä‡Ë]ëîJ³êò«`0k$‰ZÊþÀ«aµfÏâ QN®D¥ŒWÚ>ú9rŸÊI !ï¥ÄK¾;Bn(ü’.Žª€}Ø‚ÕVÖ€}¨Škè´u\Ä>Ô6Åg<)Iªwi’fMVdžFøÂÝö–d«<$W;1 G*:ž#ùÐËPT %Zðý…ÌÿÜžkl’YÖÆ K¶¾‹ó„7&¾¦TpŠºæS_ËptʃDŸ ¹Z|0&¿–ñú9h›NÈ×…> 9©x—õÇzÜz4Èú=š]êóX±h ÎHÛoˆ#T~To ú£§}>-æ5Ð=2}þšvàøâ¶±ÖnΆ[ñei:®MîZ›íX…r®äÿCÄÑúôŸžÃúGÎôï_ñsuùÚͬ ûš{%g˜o-ªy²³7”åµ›WöÐè¾§O\Û³,Ôî*4U;ÝÆá±¼ÿ²Ìôw=ñKİaÆCÆT Ðñóz îÕàX&‹ÁŸ§‡ÖÄþš² ¿|ÕŠÈã€Ó⊠v^{]îÇF|-­ËˆÈºD¼œgñY÷Bc]FŒÃuÁä£m ®Ä(NÓâSÖTÂð.9êXýÙßH~k-b{´Ú_àBM¥ò°’ï3EèK~+í=7óéä_ÆŠ¤(sAF+ÓyV"º”|´‘kA¯ûŸðr:ÀK±e£•:õ5¬^s.Ù´Dü…ÈOŸ8K‘ØÇâ#’#FOÙò 2ܶ§ôÆê肹0uVÒdìɰª¯ódÇåÖÕ+‰½÷c+æ•ö'`µ¤‹ kõ˜ðâVÉ÷oº¸MòuÐÅXÉ÷ ]Œ“|{q«ºkZõ0ß‘ª£ÊŸ¹çîô¤¡gs#Œ}•zž•4Æõ)ËJR&z·ÅÊ)Ü¢"3päZå¾À33lp¥œkȹ©3H¿gMûßGÎÔÎOí=ŸPÀØ1vPz 3Ýq³5f”#Vò£kŠgYÒ-;×Á¤'×Ç`í!L<£Î°:>”¼¿ Ë”<íÝDä{Å ŽÈó*uF‘­†,Ê—Íg[Ø\kÚIÇA¶Äb”³c3F•å³^µ¦Ï°Vdûu%Î{ÑYÑŸ[vÆ<½S^Œ“‡™gXج—S²ÓçŽZÒÌšBª»}`7dY¸ÅĦ¾œlÅÚ;½©G×”î°P|/Ên^Ê“0{‹{uƒÓGž‹ ‹)›´ýWz×5±Z…¹¤Tçó¹è[ŸîÕ[¯¢œ¢îõ+OÇtâQ¡˜ŒPT’v¶ë²Î'¡{=ÐL©+až*¶Oã ðe 5È÷¾uШoä®:,¹ZÃÄ{°þ×qÅÇKjDi\öˆ ÜHz*ŸIù :-ÒæCwsç?õÞó}å¯p¦EVÒx –£Á¯˯ˆ`Eg%Û‰1s+n€¹»²Ö5×}Óý]+nHU*á‰i 6ñyâ¨6çáªbÖ@.jIZA –¦](ÛŒ¡Ó)f-®+ïàç5Ýiÿþ7 ëxr7„6\5< ‡Ý¡=-÷j¬y8…ÔFu¾”Déî§¡|8éýHyT[]–×_W0§@¿/òÐ[—«™òh)®\·Š\3ŒèS•ç qÍž/­óT¤û¤æÂq Ÿ~ðü¾;ò›²ŸÔˆÚ¢´q©LãÙ6ï9“r³^fÕË,ZÛ|Ü ›±2*wÝ7 ´ñð‡ÌohüÄ'À‚Oaëëàîœàa´­·„ìeʵӷt$(àÈÈÖÌÇUÜ.Òþ:¿ãÁWo·ú»˜+ 5ø§ cÄí y _`q¬Å†’ï3@Þ} ½eîb=Mp—ßéïRþ^z›ñpE‚¡Ùï‘¥ê Ó” Ùꉱ1Ý݆û º(mˆÃ_íðßö¶ädëÛ1•F>¤ˆý˜ØEZõ ¾¹v,m úO²µ8>©Ê U \ß‚7üCò ü’‚øãiV|ÄXø»´¿¿Kz:zÚ3J„«lÁ.‘r €nÖbè¡ö½¡è:I&‘|c7¹‰è˜Ìµª¶¿òGRT{9SSP%™ždžnW-GxÑ(uⓎ÷Ùžx¦â_îÇF¿qÏ/îß“VÅÇ£õ FéøŠ«øìuêòOXõK†‰)xYÑ’Ýpcý;à_N×~íE+õ' r$¾W#ªî"1ÅeCgSÒ®)ælÓÇÁ%iûA-[SÏŽßÇ×`7}>àsÙÚd K;Ò½…®Žò5ø×ûE,;L·Ïð-Ø:Ë\nekfѹ÷y˜—îxRón„¡8¦ÄËÃÍkña:õ·ääú<Š1{*¾o:œg`φxCxO2OÝE;7”dP4¬oðOï ùk¦WªûkïNü/Oà[ð‚/?caï4áÕü3Vö2—ÿ+f~lx²ÕxK§ž¼»uêHô`[±eñ¡'‡[Kõ-øXU÷ö ïµòU` áò5øìõ6ÚÃLt¬ÁûÌŸKÿ¢^!©Ÿâ°”¯ÙŒcãkñ&n§¬ARÜòa=Y`ÁĘ58>uÊps Ùq¼âñ Ÿióïgk©c•:ö`s,ü>+´w/?Æ×PçmŠYCÝî¤ÿн­ü†£8ÎJ«0šŠO³¨öñÌŸHk5ܱ[œmÆzA;±ó]©qŸ2ùï>6ëïU:|-‹èX‹·¤Õ)d—O¡Ï/íω2 „-¢ ì2âÀÒ©&ç r=M;kîs,¨›xøÝÈ}Ø=à2âG¡ÏÅ÷gý­Š?ð7kÐþØ-\»¬ò`€_C† ÷+Y’áì齚µ¼Ð"¾ËòÈÿ©BB®PÓFô[ ~‚²ÀîSüIBB¥Ñç8M—¯ÿÌ¢z¾fk“h)1Õ~—x5˜ßÁ•tœ’VÝL+Ý©ËïÑÅšþ=7â:=ÇRv³îO¢ïˆèØ‚?=÷,÷8¨Û%¯{wùK¾¯HÛÈå[ðë…ë‹e=¥¦1âViŒV20ÌÄöH¾uðFi¢æK ‹[ò­Â…ØIƒ'´å*a×R {ÄZÚ"‡Óm ‰eÚZ«¶a¬Å¼’ ò$£146õß>?ÄLÞnŽ`‰·>ÑAÏØòW-¯óþ‘îê*Þ¢sŠ…š©Ä›CRÕ£„jQxX×ß @uúc &BÁw;Q,ÆÉç¡@6Ï (¬åkŸ§ÉÖ„Ø,‚œ—}”v,­±Ï>ÉOYÅGLGn¼Ï£KþExçÿCÜŸÀGQe‹pwÒ!h¨Fˆ Œ8’DQiЀ@ I؂Ό2 ³<…j6 $v·ä¦,Œ£q:£ÎèŒ3®\‚Y0D ËHX”°Utİ%! éïœs«º«¨ï{ÿï÷ùæ‘ꪻœ{î¹g»çž[±ˆªa“5Q5KXµ T¨š áó¿Î¦B󅼘G–¢«XÊÿïBò?ôùJç,ôÐs8wK$CÌ{VCŽå¬Ö!rQtIåt 0©˲¯GÈ«¯ ´3²}±9Z ´,Á Ð|^€.ñžÓâ.”‚Â#ç:àÅÉä»-í$q$ÿeÖ¿å(‘¾85Gy>᛼æ=<ô¬rß8xÄyÄ¿¨ž Þg»q‚•øFi›¤M„Û.Éø¦(e(±-íÚ-„ÝR¯É·|ïf²•V#öÀ·}Ù¾1¤±H>ü";¬í_Éó‡\¼¼(Pi%”`3š,¡}¼‰“µÛÿ’á ¶˜©,„h'®øIVžÔ¹˜õÀGì"VÝÁýlxÍy„”acc&÷¯èL•¦Œ*®ÁðN9së¿ßLµÁhß6Ü~˵áu§öì%yàL÷×.£ð]4¥;XÕ}!ÿ?ÅÆÉ…w\±QEظƒí½6d6J¬I½›`ÛO„ðð: œ®aÑcâè8&©æp¼GD'aÓkhå¤a?2E;&“a¯9š‰|Œ„æÃkhÙêëæCñ€'?ÜVá­ JG"Ó¥~>þ5Ÿune4*VAãqLÂÃ~øOx‹Ww[%j=Òe•ã’œuÌ·~-‹`xhON¹ÙyˆU¡0y‘ì¶Šƒñ$ØYX¼¥ƒJÍ%‘é%'ÌtŸ•¨Td¡=¹ XþGÖÃÚ<-Ö1n{^~ ×A4®8é¶;{DLmî`uÓœ]̇êð’_–±ýcrí¥ýœgJdJî²oÉ€2Ì›ÌvÂ{癥g§•úðƒ³«Ä¼t—T…Õx_Ëž ^4\`7¼øÉÿ5tnèÙ 9-;©:Qjöø[%ßAÒ:C`w¸í;¨!¼å²GÒ»á.“ùPEÑ›J0—8” TÒëʃakH_Æz‘H_„v¢È1…vC¥=†J+ûÁ,›iaúB™|­þ9 ªúO8‰VÏ3?…VA¤{!43`襳¢‘hÝ9Î*þü½‰j™©ã„v­±G0ó ëàHö!,/à@¡ÉUô.Ùóo¤«äã‹‚þ•²,¬‚¨«kÈU Õà4ö2ª'O£C“¯±*,è? QÑ1„‘ärl|ÙtgãšÑRµIˆcƒØCΨ9‚Oöà“-ød >Y‚O¦àSw§þÔ|:ש£½U{WïûžâC„Âä‰ˆç „¯tPIù)L*x2¾¨s.;$¬ÃszÂf¾”â|Íû€uZ*šÄYÍ-æHN<É‘xUôõ‘›êðWLé$w›¯?:«pÚ帵’ü6¼®9 ¶ÃÕ±c&^í@z{êIš{ñjG^ ;¬’¦ÇÆŽ™K·±m|ñ.q©r|1—cŒÚt¶ ž)d‚S¶y5‡-¼~é|«­dõÉHöUÉ~`IÕ'A%^i¿Â×Ql¯öºç„™U®Ð¾Ð«hV%âïCôéx6œ)Ùßx’U-BЪ°VùGªS:Kè_=Ífæ»^•4a#Jk`•÷añJ,MIXªOFð߬j>þë›%RP}ýˬ`'¥³Ø„‚­”N¬%¾ø{â€xOG ¤|f'Nðm‚ÅѲ#UªzKXžFÝ‹PR@ž0Bëê°µñ‰Ö"”F—S}›8Ýâ9%Uª¤&l›Ù—í{k¾13æK–2HMÏÎŽÂÖᩎ¿S‰^³HûVNßá[#|K:p§ÉŽÎq×ñ#3_¹K´¢2Ý E·zªoö4w'l‘'ޤrúZ_=Í­ÎýP`¿G‰õ&uîq·ú1Ùå\›óͬÂö–^U²“˜¯Sas­ðÈ}P~Ó&žºï-7sæAç6*iU(Ù®­èö™×«Á|õþzàFœí˜CÌ3 ‹(Ù§uWÁ«Õ œG<ÆÙ·Ü¬u3$Œy´ ëÐy§nFf@=`ÌÂ/1F€zIT¯CëÏSE¢³9:/xµ$csòsŽ,³Š×èA‰sG*qÀ3¬³-üèð´Ñ¾6&£o…Åxô‹´f,£öK£½Õ¢²Vì'‘¬ÄÍøg¸TÂúþGé(£ÿó:Ègy¦™LÞÔ…ËßìQ=1ìËå4dþ6ßì9™è錑+ð7«Y>L$c†yúò3»EذÄì9•èé‰Yv”ÎPÑ¢äQ‚7’vØ%³Çe·`Ì)rn¡äsR>{êâ‹»NບYÜ…+¨Á§hë\X÷“þ›„_9>ùv“©jÍÍÆ(‰Ú–ÅØxVIËgÄ¥s»®ò¢‘Íß{0Ϊ::QÆmo¥B“xàƒåÊ©ÁÕÚ²à‹Íÿåð\sùÅ”ﺽ‰-(|t‚S# ·Øû!q@ƒ±)(ÅÞÇJHÎĤ|o¿xµ „¾PÊT Ãì’Œ Éqw£Ð©Â¦œUøFx˜nV('†[þ2þÛ¹óˆlË⩱âDàAUøÁs¼Õ|ÈÙ«¸>Ö¼'Ðϸ¯FèæŒZªÄ¢g_k¯£Êà—h]øj¯#ÚŽ–è׫¼ 4Jí Þçð|w%*Dyr*ŸfÞŸ¨Äáh‰)Ç4™Ì4þŒäd |Îè©K,ršÝ J’*°‚æàø»´«x†ë3$‰#äiv~øÂs¢•U=‰ó½Ø”¯LNê1aÙ± d°l+ÇH휆ïUm€šI¶µ:+^%Ñ…RCðÃÉ_ͽbĹÀkŸ¸OÕgjŒxjˆ'aþ‡û1I@oFlMY+øfvëv¹SõóäþFþçMÖ’OØ pá'lX®qQyNãòë%Zr¸K¶<ÏËÈó'7 Ö˜=ß'z1˰&TK}2â¦kÆ$HY¾”’4Ã&É97óCl°ÚaËÓo‰ç1çg¥Ñ)À§çÁS )Á%>e®°îÑä˜ôFý —ÈCñùÊkþ“œ#xû@yz¤Öœÿ­Leki â:Q×ȉ~ˆu!_:Ùœò h(l¨æ2GX‡‡¯äå\Ð ViC”¹€D©bfˆœÂäé«+˜ò;ˆ‡£L>GtÙAÏk2¤Šsº|!½-%)À%Œ°w'uüäKUT®áæ`<+ “J|)OŽ+A×34-cÝý툦}­ EJÍY)ËO†°ŠTS²$Þlg Lž¬×„ îŠPÎ/nÕÑ$ -­£3!grÇÊéHýe~¤.§ßþ)#9-cÑ"'Îÿî‰Nrú#8öÏÒížïÁ¼úùfnž‘þŧô]Ô‚ÉÁ…íºimˆ™Ï¤q²†™{¿Ìüã Q·êB â·Ûã/êÒ¿u}©í¡š±…g4 0d*ꢦ¤ ÂÒnüŸü ;«×žÁÁ]ÚNˆR¯á p¸Ø^aݲóÁUá'†9XÝ ’ÑYCÑxª]K·#-Ünmø}„šË4ÉÁé[ò™ŠAËý9ÎÌט–;d®âù³ÞæjÕ¢)ÜÒ¿{/BVr¦DK-«¤9Êù%Ð/)R®5¡I*%6';ÇëIø=8­‚ï"л™zû_ðu•OvÊô“ÝsüëÑ´Œ€9óïv¨B ðˤ °ï@ƒoüíKºÎKxM¡]Ê·°¯€"­5§FHѬ2¹n4"»Líû™o4BQ>A,?×É·öóú•|¾ØÐ@à}X°U|/áR=U£HÎTÆãïBú@E+©(K¸ÀªF ±Â˜*,é$®±v¤$ãXMC¥J4|mb­IÁ…•S¥r¬”@`r¸jü#¦q«a$‡ï"ÂÐ_Znò8»D}&T"O>5T’ãxOZûvÐÐhk±âÛåvHvB¤»¯TK³,ö ¦\TE¼(*ù¹©â¥»CDs‘ˆæFÌÌ3A'}tƒ$2‡0˜Wë]ü‡ÔLLWâ`¶­¹:@O‹n«2x*sØè-{Ð:G ôT~€ðŽ®ª žà"M 9BD!ö|ç‰W…¨B~(tîIVy-)>õyÊLxákFUAn&å`'§êÔI/Yù12L}dŸà›R»<µ±èB Ï_.l>£…œÈ Å¥ _™‹^§%Hã‹ãrf=6 ³6Ž˜MTb³ ¾jyNØ¿Ô6ˆ}SbKžæksŸeôMƒÉwÄf²àBÓâ˜W-º†¾> £Ñã¿%ƒüÕò2Í×LúìßP[ʵK¬õ¥u“I6E `tpq”à-½’{¢¾Ýw\Nùž¸`$^BÓ:…Ï‘ÇRxS¦QgÑ|ž|xÿîá¦>ㆌ>¡Þ¯pûOû±î¯Á ¨0;/í󙱩 +ãþnß¹1Î*l$`€¼ˆœ@.\™¼ ~$¯ÊVŽ ïGòúOG¸D•g^v¨ªbG'²BIŽrd$’W#MecaU4Ò î1V#'¬¹E]1ü~I²Ý„;6ùNXUù`¸É%HÖ✰>¸aíùÂÚ„F*G`å!ªÀ¯oj]{°X[@ÞC¤ˆÿ–Øý›ù¾œ#Ü[sƒÜ'UÖC¾CΡ}ŸÈ¾À}K}fîâût'UŒ6å[u|£® ”ZnžVI»uí‡Y¹$þ‹;v><¸ÕŸµ{¢jËʱ¡Òr\q5G"c¶Æ4–ʱôÙâiþ²´ÜA¢ø;}ÀzJËmô!?”Pu"l®$ý|)^¾jV‰Q~@1È$0KZ…Á{ÒÍ0R«<†e…Š´àR¨Â7r9ú­Â³sPúþúzºV-°€]Õ§ÐviE@ SSUØ”ÿ©ÊÄYˆ…´Téj@¿×qÿ«ï@¸ò›?<ÌÆ3—Á8' —NÑK:ÈÝ(E÷|sé‹"äɳ¸¬¹Ò*¬älHæCój,úÌ,Ŷ•„òÇÚ9söÚVÄÝÁKóg³Ðá2^ÊŸí©ÕðÈ/#BÈ/÷r_Õž²€¸<'ZBLôöFXÒ"“}Á¡'ø‚CçHØ>ôßýÁ8tЩ!Ý&?/ÉÕwй‚ïü98ÉUß®5Cõ†ò”ø°fhdêÚ3Æ=íåÒ#†\„ýÜ¿ GÁ¸†LJƒo[ƒoK§î~ À4­`טñ4)‰Á{Ž:Ùê‚÷3øLЉ)ž­Ÿe£«j¼gíl³à}õFîW+нVL‚zN8'—?ƒIϪž$ÉòLí/hOÙ99²Œ³è~™„hG² +1}Or‚ðQ 5ËYkR51×9€ì1¡‚o ¼H¾jç ×é>CŸþÞˆZ—UzÛ }f†´Ï?RÔkª®0çKÃZ,ß­Hï—­H¶$Çn쵕²ü÷ü™M|Lë^'ç âìd:Œïp+£&®2óå*lBS8”S€ùYÏ ¾õUh§=|ÕùÊ®w¹×ó))ÞkÉ× ÊøµÆÑ@•SA-£;ÕÔ´øîãqÖ¤jݵQ`—"ù6™xGHÒq}Ò(…õ}ÉPàD=YE+ÔGΣ~…½Zxûïг®íËe|T˜“K}± û”IÈosÏ•ÊIRïrß.U‘hFˆö$‚p-dÃÕ ß‘Œ‰_®¿fCÕ—¿ãÌk@i°pÉÕjéwüÞ8vÜ™pdzT>šå[Ô?ÁÇEè—•Ë-0úì@%†ñ(ɘ’@Šö!j—Šûñ—ˆø­ÿ³…|˜ˆç+&(èeMÐWm! ˆÄ½Lâ> 5}oÅ}¹AÜW’¸'@®zÞà¿ù$îoK…y²up[c‰Eêkñ•$â?•(ZÃØòvêγ£è<«ä‘Ë0ò"RÌ;ñœÿßé‚g»”CúšÉv×øG°Š²Î0ÇZ iÔvêÑèX+ ÇÚL²c(ž›Û„® ,د+AÇ‚6MÉößÓ*ZIE5ÇZIgÈ À’N ]@ÇZI§îX[Ý©;Ö¨IÁk58Ö°Rj H îXÃð„‘ôeÐhr¬ÍêÔkØrBåìNݱ¶ºSw¬aûvÁ{’keºcíNݱ¶¢Sw¬aõ¢*Bˆà]G"¯Œwç½þ'8Ö´Ñ ’|«;uÇõŽŽ5„ÔÌ#98˜ä)Â'î†ùø7—w¬!.‚Ž5üæXËû&èXûÕŸêXà“ÞŽµþß\Ʊ6~sȱ6v³æX;úµîX»z³æ{iüZs¬ÑÑ„Ù+ùÖ5ßZ­ŽwÁ[w%ßÚ«šoí©K0F‚¾ô×a¾µÙšœP'“o F¨}5ßZYçO÷­ñP ’NÍ·VA“yÀ@JFßMO%‘¡cxB¹§î[;qï|kXÍà[{ì ’úìΠo퀰þö¡ØåÃÍW*Œ-©9û.ñ­‘+ëRßÍ5úÖ2h®'à\<ò­q4qßZk^–âú˜¦œ|kε)o= ûÖ~þ±6å_úÖèüi¾5šïŸè[#´@ßÚ1bÑ«µ¥Èh–¨­ŽúèDÕ ´-i[Qx¶ðd h7ÞÎíQzÆIUJwaÛ‡þµ]̇ˆ7Â,vOº¬Ë(ó£ð¦ž+2;ùÁÜ®N/öxÈ!mŽ!嬫Œµ¬2¥“ô.ü–§Ƭ¾T„LÆ%_J§aù;髚Ørƒà›ýkŸp7È_@÷¯m˜¶Ö»A°Ù+¹A&ö‚‰ƒ¢û×&’,Á1¨/ük 1øoп6KÓ©Ôç/Ã?Dû(9e™$S¨Þ¬,’åuòZ§2qw£ˆãÑ&{ÑÖÝGiìR)5äœ#ùFι’àDçÜ‹!¡Æ…Å÷d7»ïäó© 2„à›IιÕ?šp!H_4×°ºÔ >ºxkºn|gÈ?‡ÏÜ?Ç BóÏñšN“w!ÿ¾@ÿV6úç8ý±ó§øçˆ<«® ’ge¦¶ØÄyþÎàŸ#òìíŸKl‰È3GI€ä™H¤ØæŸK$ g ÌÄÎ÷Ï ›ø“üsã~€0Ç¡‘ÊXgybˆ0+ð+Ç›º:Ü?7Žfÿ5øç8Â/ñÏq.oôÏi3seÿø_øç‚«‚nIå«b>¬ŠqóôØê`²(tP*'¥pW)$Ühx ø´B{ïÕ"ŠóèD6­ ¯sÃpõô•Vq—‘/«B–¨ž:„`5B°Vªà!´ïI«ß³ðB¼‚ZGE{‡ßšwÃK“ÊïåòRÕXØÀ½¿FïŸ|_yКèCïéFØ»°‘;ï ØQ‰¢1=»Ö+ ± aðˆ«°šš«v_k(åX V¿ë m­TN l´”ª;Ñ>â8%ÿã?zt“ÿñ²Êi|–µ5Í-š­Vð݆‘,dª°Æ©"l.ŸAë-ƒR'¨´­‰RÒsØ ¼ßÓlÞÙ³½TƸé˜ZxYJ‚ M˜#gákMs$~^ú,vræÈ—ô9*f{Lm)Í6ýÆKáKå?R¡è˜ZɇÇlçñÁ\S6Ë3;¶ J%›fÁdüd ¦ˆÞ-˜·íA‡¥BݳûŒ™¹¡"‰æQœ®`FeÛGrµ*ã¿9Ùþ×%Š*GN_´.‹º„sÝ嵿GóªÕåÉòט°¤׌z{;‡"ð„ð·³ýËŠ.¬W¿ iaèí\ÚFÞÎáïqo§F…«©Uj´ºÞ_V¦]ôÂ^ï¼£¹Ãîš_¡4QZ3;è˜)»t?¨t¬Ðž²/72ωVt¢30ˆ›™¯L/q’&|ALrýtW8&Óò~ÔI*ÑÉîSi$×U}ÐIÊÊSºrܤ8lõ__„{ÈèåŒÏùz²=Ç<-nßò”:. ;ɾêéÅn‚ìLðuE†®‰<’ØèZÕ©»V_ÀbåD[»åç# ž#xO“,Æ%“³Íl¸Jè]>S܉®ÕXÏCèZ¥ 2Hå¸rîZê åª?"˜ÓG Œ2r6øþœÉ´§üìl¹?z£ž}ë2ݵ:ˆìÌEœú|ß‘k›½ÄµŠ=&â…Êd\.vj®Õˮų~šñqUcȵ*vj^pmõ…&8_¹&¬½ªQ|Ézvà !dOÓÅÀlu¼@Oî&Cw™Ú±%èî•/ƒŽÕGwpÇꃦw¬Ú{9VqäêÐϰš1ÞÛößkŽÕAÇêôÝ( Ç*Ö«µ=º–Èí _+ŸOsuop®îëêíWÅò½ýªüpG](…Å “>Emer(e›×”}åÁ%F¿ê­èW}î }@ʈZôGXèW-¢e3ª3äW¥Rw¾x‰_µ;Ì[l’i,Ù‹MŠu‰Ñ¯zÛܯJ‹Có«Ê|Øq!¿jœÖ•DO „ÇÉKyŽw'œ úi|2v—•/Waš¢¨<õ`Яš_À¹éó°qTç+«*Âýª4è'Áò«bå_ÕFZ¾Óüª]äW凂æ!Þ”ýg»zqŒ  ávÍîŠÕ…>·ŒZÕêNÝûÇNÝ‹B[ÀÕZ:Áö:(Ãѳ¢é&gèÞ¾âÅÁúçî+…Ïð åYeO¼ò&m©ý­¡¢÷SÑ»µ¢t;°Ý{YT Ð!|àýd:·•>ŒîƒÝœ{LÊ8FgЛÝ“ ”¥¿@Ÿr¾CØ™ŽÞkOT/‰€¦… Õ©üX=t%—ì°=ÉñŒÈI(ðÿ¾ÿŸ…õ¿t~°oÑ©õ{³ÀLÀ»*†@A,4:Tˆ0ÿ»¿Å¦ÿqîfßùw2&v•¡ 6_©ý;¹`_\|S¾²áïä‚?§|&†­YùÊßè»@oéÝùÊZ‘R‚®Ç=‘£Ÿ 7÷ç‡5ö«‹oÌWæÿ]sîÒ…î–W&ý]óïÎÁ·ç@ú¾n¼ç/¶Ö›âÕ}Q#ô7.¾!_qèíÜ€5^Â/×å+=¯Q;Ú@ïTxîÁ×ç+‡_£*Á”ÍcÄÅPþ«c-,·”¸B«!%,)·¥4"e­øGoõšERFk¾4–Ûbt´få`ð‚°¹C)꺠ÃòHy­ËœwO+8³d{¬óô²±R®2Z'Û®’ȵg¤Â–ÒhhùoõŠë¼0›ÐDÀÕâ<½¼!˜k Öb„Í«þØšótÉ åmþCú]’Å-{âQÑ“Rç㕬rÕ¸CÀ7l é”Á€.¡Iýÿ¥üÚu"eYrù9(——ÏʧBé3þ•sϱòéø³bÇ!ÒQq}¸Á‡ZŠþÝÚÊ!]oÙ O÷‚B¢<½Y»<•®Cä9ø}»X+GXþ´Ð“lZ¹@ªÄž$ê)45×HÊ2£™}­Â“µÂ†íwÇ|I5®“|XßWíŽfê¯<›À¨Cè)œ˜HÙNä(û˜M`OŽò<,ð?›Ã9f%–ËSâ  hT€8¾ø>€”cg5 ;‘S|ô á¾w³Ó%¸/Cˆ6ÔðµÃZa° +Г1ª¿Ò:á:?+;À—¦9jØ4<…϶úß æ[BÞ”æõ/ÙY­F wÏL÷ÁÛ\¯]/ó?Ïð?Oò?eüO3ÿSÍÿàE&æ.|kã ‘9‹âÉ|Lú%Þú9Å"­Å ß ~Må_¿&²Â×;•¦·Ö®¹¼OÁ¿miýÍ`ŽÞ'*x¿A•¿º  gZ¤´±Ìõ‚ä~¡´·ZXÿ&|MY+x_Îòìmê9CSCGŒ\oJº \€cÂ8æzYÊ(Á<ùû†#–^F;ûáÁË·o RÀ¶ƒ_ýPé¸Ô@,+8ÆÜ +lQ{Rwy…8J™ËoÄí¸º³(qЫ£ â‚÷Ãk©QiUŠ\(ÙVÆ£ƒ˜ºÞûèµ4» žÜAëRÆ3ø½Œöª1WÎ.iŽÅݧm‚-S4Oƒæ<þȶI¶x÷m¾knÖЀ²/‡ÛÄ·M"M¢@Ë0´YÁ£tÉ–à}EZa ¢é·tÖÙ*eÍ–ÒìÉiÁ“ŒùxL7âòª¶°4{Àõ(¡m3¿G›Rîä>)¹J@É®ÅãѹOŠËi Vkbéi‚ÿÞÖç³pC±K^©Ÿ"§Zïv~¹z’T…_ÑÃ; šæZ¤ÙVAKºp‹<ÎWÝgí®Q#ξ&¹v•?Öx•ɽ•WáXö° ¬È(*®Âf_¶ ³.‹”û×K•øE¢ôñüöõÏÒ"Ü*õMB ö¼1ýøÔä&Kã>+;Z²msú´$c]¡j~i7ûÆÓ6BðuØ‘?®™Ë¶&t$pÖÆJ¶Y_ɽ'QG =°¬gW+ˆàý 4¬¤m  ß¹“¹öÅ[/â>d×`™o&ð*§W·$t1@r®Ÿ:^e˜ª2I ÎåØàS|@wcΠG)ߌFî9Wê‡,ðZ;¢Î†>ü~ž”wîMX0Ü.þœ@UþUæ6’ŒÌ,O@¾ … ÞÏðêÑHo  Ëc|£ÑÆéÛ@ÉTÐì;À€åQé¦ä*ü"È©ðØ…PúÁ~V•/§¬À?’<š&ÿ#ãOCTƒëàB•r"r»*Ì\ šz[ºÍ*< ÊÉéR~ÙÃ*Ç6Fi#—\/à~PÀýB ÛRÊ®í‚fÌ>lgDÀÞ&ky¬¿–¬%iHž'kAõ)ŸHËâîþ´ƒŽËÁæ‹å RßøœNÛôoF³§ÖêÛª‚û•Ø×Sx0æ·QF œä*œ®Âeš6V‰Wûzê-@PZÑ×±(æF¼Ëð1wR­ ›áÇâ¾÷Ž€»þ§ü‰¤¥P_#Ú(Q[#³­ ÀCF³œž(q”VaûÎ ê+zu)És›•c Çé •#Þð<–»ÎÚël8^Åî÷N¢(A¾¾”èGPS¿  Ÿ÷5:»o8 [žøA@YèÎÓÖà÷1H¹:dRAP…®öHå8ËÎrüU8ÔS¸Ã,<†>LhLû Â`+ Â6;Æ›j ‡mô•`À<ãÖLõtÜÊÎ^ÌX É|ükâ¤IÝÉ®×å¼nq §Ã)x£á+¼#SY„TA¥@m¡u®×‚÷F|4`tMÏšîDyR·à=‰Ùþµ:îXXUm“mV· e¼îœÑM%>‰Ò‰yd ©7à~™º–äñäöBRSú…ER/¹z:ŠÓ©ìlÒ6Äma³ yyVÌX† ë¼À±Îµ}å8&Û®uî\ÓæéŒû9fV듈êI½EÎOdCP¯qÇpÊÉÄ@·LÒ;ÆÈØoÍ…ø’@ïà{¼{²”j‡Ù%UdÒ Öܪi†ï[Àخė™(ûÔRJ’}1æûú’Ê©é\]—:Ô¥>ì­KUD†ëRävx”Üîþ“gz®Ãz%¸œ|±:Sô= ÿ’ '¾™TÝÍvjùŸù¥Ì¯&QôŸTøªöo-#Õ 7YžAý±œ1“Èr¬%¼Õ Ï·;¸[_w{c‡RâÉyV¢_Kã¥H Á;9iæeÁû x(íWÒ7ÍS¢aI3@ë; UaaXc˜råìj¢¦+B×±a}Œ©¤w=¨i“…««ý12¯-'KTµÉÈaªý¼´MjPÔnX”µç1µ*`šq ULäÔ¹Ó@¼à­ÂÍ|’>x¦ã-üå.ñµ‰7ñù <`'Ý.9l†·ÓgØ Úç*¨ÄKãen¼B˜}þÏ•8våÓÍ U"SU>„Çy üE¤1þ7 ïzJUsÃt¬0¥ñÈ…¼lec9è~{Ø7ÓÐü¹£‚몠¨8£¢zÝ9ÃØ¿ ? u» íGUì3½œôbw Ø×&=Mmh…æ¸ûHDHýl¾¡E4(øÞ;KZ¹ú8e>ÅBžN‡°ý*þ÷Øî1øJí¹ˆÛ&îW³•o1“D-à xóS¥ƒ¸Â›þo%Ù@—r.­9Ê…\Ä}F0ð~½Éxè~ꟴ€¶ÖÙ­+¹7òé᱈Éΰ¹¼xF'sá£*^Ôl,|Óx˜Ç¨­ž ië; ‚:§û Ú:¦BAm=êIÒÖ¹§2ULæÚzüeµõ>Xg tç¶—ÂþOPØßC…ýL—>–Kš …½®‹tòpJê­­—xVîí! µ6ýnáÂ…íjMgûŒuÔt`;ö=Û~A^‘ÈîBž{¡/ÛËr›Ö~¥R¥zõüÓ ÂE.f¬^Xß}&Bj·øµz 7 _w®ê–Ó€ýÿ t2Q«]r­d"‰óG|I:Æ+õ%l$Ÿ8KÊm–ˆ3ûv5˜“P›R™«I"#’P2©iÂúßadZÃR¹d[2Ç„/HæªÓWÓT1:¨Eˆ×zþÍ[8_kˆÄ>¸2ã¯Ð?UãÉ} õ|oiˆN2iž›•Ñ'wß 0½†ƒ¥µ6ÑcM¤öM$ßÈë`–ù½kM>Mß%ö¯[”>ù’:fùè-ï'¥YJ)ŠOp@€ôÄ}ÓÖ­¾‡Å2šä ¤ »À:{*.hã±Õ£¸òéëOÙpp]|‰\ƒZe©Mivsøö?ü’kJóìóÁ!¡ÖœÑ¬þáüe(é=°»Îã^rn“œ†#ÛE#»cš’s!uUïÃc8¤²n:gPYÿ?Ô)Ø[…>bß9½äR, ¸µŸ?cÉ_Ÿ#.dñÿ}üoœí=þÚ³—ÿºÞã/Çb0ü¹VЄó¡8I¥óžd ¹_gËm¬§a2_ÔMžz»ú7úN†Ô¸*Œ¤ËSüUMÓC¢éåh ³e*žB´0Aˆü…H&üÉ둈ƒI•øïO}4f½&Âið¥ôÄ;Ø‹úùiò¯xa½ózÔp#•BòN“‚w³ë–&MÆŠÉÝÌMK4´¹i‰µà¿µói¤TÐ$O3sŽÎÈh•'^ÁÈRTWœ¦ÀÑ0¨<Õþæ!ð?­ß©¬hüÕÇÛ¥ Û\éA+0¤U‰Å ¤&«Å­zDê‰ð‚ uakpæ>h4?‘S û óžsà—„º³•”émÑo{¾ ú{,:›Ã`©ý¾,ÿÀä¶‘#ÝN;z’m“ðq܇h [69› #X/àèî„„ÓÎ}Âcä¨ÀcÜôŽî(vVà¿kµ»¥¹ƒÈá E¶ ÉÊVŠaá³Îö]RÁ^Òœ»'¡ è=‡ÿõÃdó%t¢÷F|¢Û³%Þ׿6Oe¹;ÔNé sço`RžÖ<}H7´0âaò‚%tñÏRFczŽÞíi‘ÐNŒÒŒ"Ï÷veå8JVè©@/—z¾ûÖž)%ɶJÄu¢Ø\„»;X¯ËZ#¡ pÛ㎳C í0Õ’k‹P5ý™nÏé _ÊËGr~¤ó+FW ÞL®99ÒY/<Ú†W<Ô ^¼]$@÷ WaÛo[†YÅ! \Ë ‹G 2L}ÎOǬO…¼$[”’³M d`tÂÇ•¢s²cMž÷39k ÇÃ+Ö¹&êCüý ­ç½ù9YHÂî5š‹EŒÆ‹€-/¦³‚û3û×a=½L^áU^Áß$ån‘-ÏISº݇.¹ÞwÖ,¹ÆY#øn¡ŸoK2Ý™>¡CðŒDvÑ^JÜŒS±ûx Ýã  W·äÎÀÍIÛ€ X'H–R§ÃS…Ø!> |<®¤¤ð zÊÇÐ[gûÚñ›è']ïl];<3á³ÙRš‰0šÖàJD’¼ÐQ³„Ï2CL,íö£]Ÿ•“Mã‡%,/5#éÁÌN|¯Û¿}“ðEƒo–FgÎÊYÄž1n±ðVèÑä3Ѭпv‰Ê2Ç#©R9–òÐ{‹Šá‡Õ{>`ÔaA¯$ý{‹ª¢jz!níÈðžÚ1؇èÚ}¤Áõ6ñ“Ü÷Õ˜à2>8öüÅrÆÛYY¼ÄË .¼+פ¼¹šæü2TÈ”hUH±rJp>ŽV½ 3ù§Ý¥¦ŸÚ÷«I'P»xf3ß‹;Ôÿ9¦í0ƒÈC㺠7$¥5£@À˜IÀ\w,$`PW­ð"?/G¼"¸Cˆé‚;„˜¿lÎÜǶ@&Ú«hw0nEñQn šZM üÙwêÀŸŽíÛ¶_=Ôœ´­m‹ l–Q­î:J`×ó‚ÝðÇÿ_Í;NÃãQ(aö—-Ú£€åÂê|¹ )êÞ”§ôíXMs”Gùs•áÕ_¿ƒ®¤A¾ªôYN¡š ñà‰Ö±¶‰)Š0Ѓ[¡â¸ :ƒtJh ƒÂ·@ÕÀ‘Kf¢^é¢Gõ‘gD}hT¯„ÙAÁܵ aÃYo¶a%ÚµÁ¿ûN}íÃ_:‰E8ÉÏ ª ò|{È\ûÈ S¤ºŽôž õfxeœ³'Y>ª¸ž ¿åRÈå‚j˜&$îÜMÙʪGBs1Žæ"V=pWÍËhŽL;ŒâaCÐm¥“mê¯ð£ëÕ¢ñ&uäa=d¸§9„Â!È  #Ó.=ŒÛpê·Í:!ûɳÛßìþ¹7¿[вvOÍ\¯ª„Šë+Ä¥®pt+ìÒäDÿ~ZÛWWï è ŒnYµƒ Öw°Ö»4aœzU°áS¼ðæCzµ§…F°Ïÿ @ ³ü±,÷Í¢;LîktˆÓàóÓxî[iÉ(æ~Sïo$|)@‰oíÒúF*Î2^|÷@ëjŠÞ™¿™ÿù„ÿy–â^è¬ÒEk¥«˜æÝµæ.asmR›³nÙpx˜PWjž”²¶¤V¼Õ+úy«ÅþÂæjgÝò#¬oÈ6gäôÛ´«ý¬¹Þ¯&UûOð˜ö…”JCËmeî¾ZÌG­Í$Çm”\­ Mx{VGD¦ìHÊ‘ãžÎQ6Nn=­@>S:Hؼ+ಲ¶RÜFvµGµLuŸ­›™%—µÔ¿lqˆw׊«¼»Ü}¦0|+lÞïüfù§e3$ÇF6Ê8/,?‹±·îVÙ²YEŠß½\`-îB °l°òòCú%ÓåC÷è1â sÙ™í9žšYž…1Xl]„´®¤>ÎÀWަ³çPbUq-¦8fÔ†³Ã2BlÒ@D9nÊ—fö/ÙI{ j©Üª\ÓC[|=Á«5‚O[zô «të—﯃ &ëStÈŸlHHS,D#RÖ(àåÝXÚ;Ÿ˜nCRBâO^Í%F²˜K|ïQ¹ß:®*rß]ød2¡l¸ð öJÌ Ê…ß"¹p¤g:92·/'¯ÿ*ºK:'þCF$“¹Ðý&±Nª–Ü-gÿ%(ÄõøÞ²Ta#+A©ñ LF.è9jfÇèD6ˆVünÜ8 {Ôû¾mÒlŒ=I¥Ø <¡QÇ»Çû¬'b›ëCá'¯ÓÃOúÓ$ë1¬b å}¡Ë²p g™®ZÃnÿrIÊâÞa(4¡’L5ô`”mð/´I÷_ùè¦Q-&…^iG„Œá¿3xÑQ`§y»ñ±QNùŒîç:lâ ÚȾþY0@˜i@ÕV‡‚a*_ët/¹ã¿üwÇ?ÉÚ®à?Ê#GÞ-ì øÿË'C W¡7â]aCi³=áCøXE¿#už­u¾¿ì }ã}߆}…~ðø_h~ðtÒ£WŠZYªE­\\~p´ËôÀ•dûcWná±+å½\áÿ€wo£+|%.¥&®¾ÒzQ_!‹ Ü!>/@ñ_‡&ãn¨¤þ êpÂ5 ¾gp£ß­$m+>X6Å|!åK Äìegcºx8 ã·²¹lI<+¬0‘åb»œ»%;/_ù>º”¿oãßk²à{Á±ø>ð LäFW¢´í¤²Ën(óü,’Œt¹¡Tÿ:kÌèxªL\¾¡ä>¹°æ”`‹ò.¯öT'úÚJ|˜®•µ ¾¿ãþ>]:‡çd›4çø3ZŸôP®-*r@ðeA9㘧°:Qvmar ­ŠúãÉ0d¬ð#‚Úl¡Mˆ8náž$ÿµ\2^x ·e᯷%¯E ë+ßGÐ.|„êúf 0ÖâŽ2~h?Ë£¥rüUÁ¶¶gåoR»ø/~ÜŸI>Þ£KüdræS ó'Øje–,åE`àzü m¸|[»%ºî/©Ú§]éŽáÑ™"¿:U&WY$Ý9¦ û5wH$Tê%¾<£Í·‹µ2_ ë[µ¨J[Iù{Ä.5¾åû¿T¡È0f»;*êÜrº¶Ó+¦K[ifÖ8uF&xmE¿ÑV=.Kq×v±¨oß:<@¯œ8Nå1ë>Ûv|Šޅѽ9è]Ñ—å A®ÝÕ§wÝ}°F¢É°]-M³ò>xmOÍPìì‘>³òÜ(~E ;ä Ès-€#ºœ”O!Ÿ­]Œ^ Þ·M½–Ma/oï…#Î âïL‘n§¨ž[ñY[›Âú:BK\ü%_›´µºÿš°¥y-njÑWŽPõT;z ƒÅ?»T/IoùIc:ÒøÃwS@À¡iH(‚ÊoåÓ$lÇ:ñ ˜¦WR n ôÇj]-H@ÜjÁ‡Ä#{³s”~à“`ɰŠ]Ë`t#¼ÏÎRZE,O=ìI=¨_^ü¡¡îËÉV>ÂJ{4}1Dõ싘OŽäÝýÁFPY&ðÕEYZ[ jà ´ÁÖÆWöùÞøz·[¤ßHMúáØßÖ¥¡ñÇóØ]?úGK ±x«g]á`7ݨ Aú\oÐ×¥žÿ“@¿•@'w¼úßNr%`x—àŽ˜ŸëÄ<®Š…·¥>ØÙ‹ „ µ<×êL^–r| J"ˆlZè4,¦DMÐÑŒ?:4l5}~V_ƒ\µVÿ{A_M¼üj0=ý_då(ËGp`Ê/üØbšCÀ,NÌRҡ΂Ô{@NâþßuXÓ˜ IË.¥ö½€½å(ñXñKÔŠûŽÐ´â±â¦Ž^oä£W_ê@­8G9ñ E‡;†Tb_A%þM©ÄÏ„Ú ™Ñ²y® 2¢ƒ´^ºS(Ø éÿæúðïA<’‚1L[õ9ÜóWú1B¾šMÛü¶Ò9¶’ ÔYŽ×4-Ĉ°;QÚPEÀÏ=\¾c‚¾—Ïã™TT ÈH#¸òæ3 «òÖ7vZß‚Wòl–±tÐIgå¶²ïy3Yû¾™çuYDýº'èßL;®”€{O˱=f{®ž ý%¶[üCŒ¼« ³ [ÿªSk}´ŽºÃ õêž^îöºìîc®Õù†ã>¼îµŒš1ÆÌ¨âÅ`3e¼9˜«#¤»ñ‹ãÕkÎb®$Å «É³¢;Q<­~zƒáuãéÉš»9Œ$ÚedF©‡¡Lqbk‡&ªøû¼Qï=£Ïž™ið.¡ƒ5¨S0X­ìRÖiÌd“¶Æt€ù)lØÍï^‡ ó¬$‹^eƒÑ™q, ŒÎ¼ºÑÙÛhÍØ‚ßG/ÑV·CÁ(ŲË~®™¡4õ}uµÿ8ë"‘’—ï6f´ðA²/K#T·øD`­ÉÄíR÷X‰.÷µ…Æ*øVž6ós* ýþÓ˜ Ãñ§„UØDïŽâŠ"WW}ÐÕE®uûw!ðÏqÿ¿ãÛvd¹3msKd2Ð¥¼í¼ÛÒ‹vžnÁ9.ø'ùÎ̽РîÌàªÌºüÎÌ(·ApèäÝ8O‹ñýÊ¿„e6Ëà>†¿ïuo[»ï‚ËÀë÷„mÓàÖ~™”Œ÷Ëî¾”P¸É=`òÀç¼e1OœyIcYFDSõÏDß Üä—³Ì Ÿ,³Ôæ5+(Å9nƒ,Îmôo‚ö0÷xÑøQ‚7 «´0è¸ ¯7Pâ= ˯ŒòÍo޳Í´ÙYÛŸß‹V™M Æ‹ÑÚ@&ÇóaÑ-‰EÉ¿¼+£ Âó7Q§ã¼AxŽŒÂ[ó.` 0Xſtê«£ÀÚ09Ž€‹Æ‹’obM])׋ПêŠm@´˜Ú"‹ÄÛ4¾‘)þïÿ8K-°dvŽRsƒ¶—°æ*s]i¤·Z´¤\ï®e÷Äú+ÊÒýßñu°Kš<qIYÜ6¶|”ÙÕJfèëц`(ºøõþ/t‘ï¤mrÿ°ëÙäÑ”´ >¢×]ÍŸ‘Ô8þLƃ]«d3C¥)‰ÕQxÙ¥¿Û„ùRO÷PQLIB‰âá÷*Ô}=È3'%Šb´¸™©ðX²‘a¸e$9ž@Y‹"læè¬ÅæüÀ.6y,&iÊ·RV;¢Ö™ý#Tô]ÃFÁ„ª·óg Mîß Á‚6³ÿ ŠNâ»À: ÞªVýó 3Põ9“ª¿æ¬ô®3ªÆ½ÍËPu!PuP¶ˆ‹ –õLHÛKúiô\ÍnÇL¼¾…¼ùto½ÈÿVØòó Ñ„Æ~†ŠÃ ¢*‚u`¨;„×ê1f¼ú™èMžtœé˜àa¦ÁO8mü7¡ÁCw_/݇j#ìrÙØä8©àX*saz ÄòÝa²Wâ˜=ÖÂѬŸ†£ÙOÐÔŽrKòŒke3ã$·Câl\Š„»é¬v¹8ŽÆå­— ñÑ0å„£oRëåÐ×ÝÓ }‡{H†5YÛ%]©¿è Vcm¼¿þ]áý}õýåúû ³W/vjÕÒ}Ûh²~=àóÉï “uøŠ“5Zº''‹nÑÀÉŠ©“¥%`Aìý¾•õž¯qßÿ5_eÚ|•hóÙùú]¯ùj8õæK_qˆ¿§Niø3èþÔ ½çëÎ¬ê€ ôP¤Fñ‡Tµ»ƒâÕ³$ÃQVOÐËþP¯†g›ÙÌQ¬U€®ƒõQ_é7i"/ƒŠÈp[äú^•¾øŽ0sG×Q¥áêçí½ñ.èZŒBå°y1 dÉ]˜‡¥.Hœ‚òÄ[ eñ» Y1R$ƒ ‚äSùþ̲­.ÝR ú¢Œúñ´ÜKž†ñ¾êÍèƒXq“œñ O®‘•ÈœzèÜ×H¹¯1ŠT܉…ÄL æ^Áê›ÿL^À#¼‘ŇM­@Öb“ò}-?1ëéä‰DÄ«›)X6GylD¾ysEw4|,¹6 o6ZkNZY <ÄÆ6¯ÇcjŠÕ(ï¹½¼_q?s«°Ñ¥ã•í醫ÐýGÊBzݽäh‹CJlj&ÇãÃÿÄ~3ž”^¤!ærpˆó„¼ê]*|µø 3€Ã”\[ñHnµ°¡sÍŸq rnB›`¼Rïñjz÷jï ¬ì<åž~<"1à¶kÃæÖ ,¯XùÄ£Åpdþð~öï—Ê’þsyJ6÷l59Ê9*è¥<ÉO æu3í¾;JbƒX`…]‹PÕÏu»º¢3å2v l…Q;ÚLñ‚o¬æó‘·Ó•E¹¶†ˆ8úÊð%ÑsÈ̾êhëq‹‰VX¥, íxLÏoÂ[Üv©ÀXjQ†]«‘&s5‰Q ­˜èÏÕlîΓac®=é’ÙY·ìÆÍÎ:Xzu9蔾M©[G¡úso¹‰oqåÚ˜«;¤¥ô^“Ÿg.h¸›•åïX¹ó* º÷`oænvÇe+ó²ðšEñ*„qŠÀd_$´Ó%^8Ô[¤Â=õ–ÛM¬ ¾/ôŒ7­U¯/kÒgk1î¾f)}N~KÙc2•Î ü{ËþúL¥=3ÑOqcþ§n‡2ó,N!îñÃ/žf&÷X¶²IEëÑ¡eåz-ó6%rvXp‘º®­’+'»ì–Û säŠãJ&汜=÷‹NsÓË…šk•–XÎú¬YéìZÁºr„„# ÌmH¥¼Ejd€d7à ­ÄRvÍtÜ(ã/”ïÌeKjótÄK…VXM/‰³Š`B%ÂóÛøìøH@ÑÙV2q̱i+/Àœ±Üf¼í«KX{`tOämÆT>æz@"еªÚøçÅvãwO‡Ý}Àã§6ù?¤Ø¬â–—±þ_`‘©óþáXr´L?ÊØ_÷ð+ ÞµÞëJœ\…8 _âèr”¿Æ…Ûm´m'†ïíêÐøÞ65ŒM¬xŸÆ÷>Ë}û²ã{ûGÆ÷öO£ÛB«´|¶”gua§…G‘ÏŒh'ièÆ«–…Íid—MðÆÀþ^ð_˜œe]-Mˆ÷U»ÿ$eÅc0gñgX@ÂFH3,Ò‚ÑÒšx¶ÀÂfŒfk¬,/ž —†c`]¡ `uÂ1dÏi[„œVÉû2—9<ÅU3ÀÆ&ÅG‘ tÒh6i”4ÂÿëPfG"¦B°–ÏF]Oš`uš—WHZêkz"dÇyœ¦l–Û¢˜©Ñ¹rÜmÌÕÊ›öåá^UFkÂÙÀ«÷lŽò2,>h*°Ìªd< «ÐRØ €G¶°ál…-…g0.Cž`3-Äý¡ßäIã²›®™B OX£vˆùåÚ&™ÁÀE‡‘4c¶d–æXœMKI´ekF‰Ë5™Ûç Ä 8æzî~tÜQÒ ÿÖ2}Ì3FQbx}Ìvó¿ò”¯L˜CLóæÐ˜ãcžd2Œ­u©6¢Ô˜°1ÏÙ©•CcþEpÌ9Z ÆT›sª}yšÔ¯bq””6Š¥Y¥4;hM¨DF°4K³±~I»@‹Ežs—ËË$§Y–íaiÿ—eÒÛpý@Õ³¥ÎÕVÂçÐ…ÿ=fTŠäèšo9ƦZX¤”6Z`SGKiñÒT+›m³ˆÀ’xeõZ èœÙ ièc25¤æF‘„BPö ‡Ý|LÄâ`­Àâ‘Ü-Ræl© uÌ«ôP"f°FvA¼ ë̱:ÏF°o¤˜ˆÓïPÐ’ðfÙ›2ZJ¯éŠ`ÇjÎÖ\ˆp~Æ\ÍÂ:Ìp•°ìߌƒ+òdo’\¥¹ñò8äj“f­éÀ–Œ‚.b&X©åö¤j]ÖÁøÙöè ªÈ)eYùÊñÁ¨=µ¢¿"o¶´&Ñÿov¶ý@Íñ©ðX޹=Ÿ}Ys"BÊh6_ÈRöcYW«4{¶”Û2&ÇZÓ‘Xj|(>¡=_yǼ"QÅã rÎ},·©æHD6hj÷!ëgh– ¾ÀìM\ÓÂR¾¶Ss°å)³¥,à(ïæÈËÌx´q26˜ãI¼»J®&yÜ:¶*ž- •üOd*M…óÏ8͈-c¦YuYì Ù¾?[š6ZŽ{'G~ ›ÎRÄß÷`~ÂLåðàéƒvl¡¦m LFZ"T’æ*ÓêÜsµS‚õà>Ͷr™«•Ÿb)þQRæh–ia0{™ñ0lJ<Ë´2{°l.îKl>Ó‚“<ÛÊ2±0›bÁ’³ã™UŠÅËs~K~(`Èi¯¥CÛ£¥› B͉͘îÙ:ÒÆhÖG™g»ÙaΊKØST\‹Ê=Ú;˜¼÷ÁX%}ÃÅÀì¹Øôÿ»dŸ×a,´Õis¤ôD»í´Tò§ÒÈÏJÓFQ.{03v‰vÝ ŒÎV6ú¶}˜™¸"Ô• 9âÒ™°4¿tZ)³ýŸIiq [£‚VPf`I¬²±R[\q|UÅRÙ9þ¢\.±3íÛ`øŽYŠ% Àök !¸¾s€ç€bLÕPV@›s”`(sfûhñí qb(Z¥`ÿóì¹`) u°ú|@]s£³k(™ž.ÇÚE AÜËöOe5+à?}˜SÔX¦®<+å¶²©ö„C ¤^OT1_N±[âuØn1!‹s%1r¦ÿ/’ËžÐÔÅÍÙŠ@E|gÒÿ¦œþùÜ !› Z—ÝšHÌt ²Ñ(žSÕeݦÞÓfÇâ ‡j˜Q¡d é`<“,ké¨!úN“ӣÎãcn3f û/>.-ÏHM›Õ0‰¶.&ñN×X¤I6˜v›do˜0޾Md×1¥ŒÒÍÕ“À°9ØýÁpx{ö5©P‘ )ôcY£B•Ìô'ÑÌ{ôÔe¦4L˜Bý€ê¿r:¨,+³a½¼Â}¼Â|c…E Äñ`úIÍ–ÖoàäiFÓH4•¥Og9™xhÒÕÌÒç‡xس¤džê!7Ç€þsí`MKK3ñ¼Ò´YRn<úbrf³i‹Ëʇ)Ü&•sÏe£™é3Z³äœYÙy<«‘Ü€öVÖGJŸv¨T0Ês4Cq(üY;¤Ü€M!'k9ë¹%Fy.D»Ñê÷Ñuù, Ë™"w¶&@|Áq3‡Ã,gœËZÌ! =Cÿ,RA,t>;Œ2ÞØyô}.Ø÷·¼ï£zßá¸E¸­ãb,›–‚0ü'ù²¸} .FÿqAÒp”4eÔ²Òòĵ9eTò”єðvÊÈ­þƒîLxÝ97ÔFy‰H8‡·»à™²Ã8óN6m,žÂ‚±ñÁ¾CL«6˜Ü–lOÝè jÆ.;ëÖ©Gç5`dŒFØáwRµÁ‡‚·ð$UKC<…¶€ðdu{-&Ù}^¼J˺X;EoªŒí,>l²W¿€{“‚OÅK ÒŒxiM\¶}MyvóVgí±­YŒ& ø7ËcîËd®–ÀS˜ì˜ÕùÌåŒïU_Àý?2z[c³rò”Ü© sgØ.ÈŽ«¥–„ Ò$˳Ñ/kÂP"RbYXØv|µ eRž•­q`¢‘.X‹Ðà€Ò [I?)Ï‘Æ`rw'/°.‹d ¬ÀdÔ$4ÓfÄ™—•Ÿ£X^¾È<õ1 RÉÐlÿÙêÅÛ‘×kcC$è`@aQ… -§Å¸A´ãÜØAúZQp"jÄþð×JG„ ­“|mîQž#VqlZÆL°= i|›"ǤÛýþ2~}ª4Ùêl’ - Ôvl íõf>-¤rÜÝì)t˜yp [Œ—P){'€XcgkllEià@4©5<ÒÖä‡ZÜ«ÿ0À¯Ü 0Ì›Ëêüo\†BBĽÄ|àQæ I»„]ì!;{ÈÆ²ˆ éÒ@—Æ6`vI Ø 2<ý¬F|B®‰RV,›caY“®ÇLÀëÎøÖ!vÐþk‹À%'@¥,Fc…€+—å‚ °:µ' ëqéq`9!6¬!Ö!˜V .›îsP‡fôð|NO¼@ÆÕ¾2n3‚Áó™§`ïœyr¦9›Õ)w͹˜›´ šPo‰4åäe*×¾€û;A×ó’vAeß¶9.IüƒóìÕ»bv·×c$kû7‰ÓSßÀŸî³Î&V»ô®2)âF3ü穵¼Qÿ‰?—§v­ê6±­âÈ¢•f“œvQŒ-Z=¢P´2bç~Ö´¤ÎÙ†´“p†Qþ_~paq”Mš>Ê^ò9Û^sؾíäðÞbø·tÈøîÖjÝÅ/ ›Ä?Š‹Œþ`ø0Óø!?øS^NYøÿ€G¡Í8@ž$øãÃÞLî(yÒ_y’ÍÛæŽ”'õ÷ÔÛ¥!ŸzzzÌ{Ï~¨™´·øKü=Yð}†?·k_—¾üâ~Cʳ+ý-¼ÒÆJ‚Óo¾þ9Ô¬z› CmÎ3Tº-¼ÒTɦWº)Té:C%KX%/ž!¥chÞÒÿÆoG¬yw‰ñã¿ÀÁ›½mâàš“vx¿"àC4ÿ¹à}óò¥‰0{³FÙaž‹ðð@yÉWlg͘Êí¯G ÞÏaÈãí‚÷wèJ!xñ}¥ö~¦öþí}…öþvz¯®‡Ÿeòû?§uÁQ“´Óü%Œ¾'}DÃyÒ¹-†ͦ°;©€±…à Pnù)6Cg àuÀžj»ç”]ð`¡§çÜ’y˜–ŠÁÂîß{ª-žžŽ%ÉÆï³Bßï¦ïÝK®5~úž€ßGŠŽñv11u†hƒ¿£á¯þƃ.‡ßéÞm¢êýNì›Ú^ƒT,šSïY ù—²ógØ€á~!&—¡TRÐ.lØ-Í/9ž6˜'ŒqxX£{k›TTØn‡”)ÉmÇcOð³xt.©¤!ŸÕð¤jßhX^:(£/2÷ï.÷0øP- õ0u¬îD’öÈãüß—ö¿“5‰_'UÐ{…͵ò4sf–ò팞@تŸfå(Î@Á³A; 8eR5;¤_Q¾hÿÊÓc^>œ’8x¼o=iWh·$O¹inèÙq¿wî‡ÈSÅì¦ ³t&ƒ$¼¹dà„t÷”¯MŒ– ìÿ'P<¤<øû‹( A|5DPã&îÚÚ=& Ëú­ GƒfâßÌÚf÷Š@ºœŒP~á²IVóé,<µq³òÜïµ=鹸£C@îB½Ê)Û¢YÂZ‹Wé°ÊŽ»Ð18ÈÿO06“­FX¾AXösÙdϯ9‘‡j•ÛÆS¾/€ò÷hóWs¿=b›™Ù£Ù¢@èÍ䛋M °nºïÅ›16D×ûR¡9£÷pm,ã}1’¹ÞDùª\„(ײÿx¢<ÁkC£ó%5¸0³¼9‚ëËõ>«#Ÿ¢§Î‚¹ª¶°‚­‚7ûG*ó?øXÐ qk#X= HŽs:»¤(®Xá&e÷MÐÔ´"åÜÁÈÁÄTxJ:p[ T™Q0¦›< Cx:¢ÄQžŽh<;íÊçÅíw7˜fq}†_Fñ l¯¦ˆ©ÓïM"ÎÝ‹=¡r óXÜ2…Ç¢àÚ°^azžñ1ÎÑ*>'¿ÝjĹ‹¦Rš `?GÚŠïKRnŒ¤ƒàsY­ÔgŽ,–Y€$`>dÛx˜?˜båã1ܵ"—¿ÝC·UæÁ²–Ý[@iÄ O V[}BÎÏ.ñ—8)¿À³*81ƒñ—]I¾íb`sØêî›­©PêY¦þ-˜WÂ|쎿Ñ] ¤Ûåé€ùÕÄèH¼t?Ÿ/ˈDi‰&ˆUBé4)ËhJjc¹[å*ÊÍÁ!\ø…6ySÅ)*±1™ègâãX¤Œ- Ì_ÀH`}©ÕÒI/ÉÁG7eáÂä°‰SÀ?{ˆ˜É)ày=OõÂÓ¦Õ8Ãózôx¥â– PХŠ<è Óº•j`d¹¡9EÅFžÈáØñžÃk2l‘æ¹4ÿ©@¾MtîËÅ'a=.w}òûóɼ¥¸>ÜœaÇF@¢g‚Žžj=›(B'8Ͱvzjz"ôUx ®Â›`žGà<_ƒó “ “=c\Ød³`\x™4#æÔݳÊEì ÿf”]‰ráVISX¸5©ÏÆ„ñ¹»SŽŽfêÀÉtN*ÏisÇjñþšŽŒ¾…pU€1›à£“„sºñÝdô£xÃ&ñŸÄeðIÜÍûçóø­Ï½8“‹ôõ 6©ÚãÄX3ÂÂ/R=)Å&ñº©b<ºzª8„? SE[êTz´øv¹¿"› e{!4¡KvéVÓK7[ÛwúÚä•vV%¥[œ Ë'tÈb¬5îcÀÄ»Á̼ðxPÎÉVžŸ†Û¨8ÍG€}Ëבüêä+ßJ³}msE΂»Flöæ?ÅZ{ùÏ ­´§…·¼{g„X‹ØoÑ«0|eЖoÛg'Uw݋瞬VÖàa†Á)Ú‘; pzÒ䌖¬¼ÀíÊ tÖá; þýÍ”’ýV*Ýæ¾SÜmJý;à_çöµ‹¥è¤6gãêçÖÂ(J$(Ù*ßw%YÙÒøšãQòS[ º#§ÚÙ´Q9ÒÒQcÜ-yùJú‹zö¡QRa«9¹È÷ÖaÌp0v­ $ð×ÔÓÖÕÏAoÏc›†ôxZ„é£'ñÊ·ý/”å Ñ´Bkß›t ÁÕ—+’¡ÐrÚÃw×þ(zS5v‰ÙLC¯šñÆZúk•[’ôx¶¤jõ÷`Ìx.,ÞouˆÿSKHV~y þŸÀO$ÿÄ¥u—@9äDUŽ‚žùWÂ5@.õGȤÁ ëOX¼ þíÕþ-ؾNŸžXB GØ+Æ83ãïã& }³¸¬_‰.yy@¶íªu0Ö*”Ì‹À;ˆ"d›ý£>km÷³Ý5=#jº¢€/'œM(hªéŒN8ƒñ/D̉:ÏËãžmgåq˜äÀ”ðMÍñh)·UJ³x:Ì‚÷U ><졇q(:FpD>`gIJq°ÒùVã¶v"}÷õb´ë`»Ÿmï‚gÿwíC¿£h#NvĘ·ËqCW ¥©VaãNóîG²Œ]ÂFi³užÀK:,ÏÊq55G#>«9mþFžÚžeÍ  o¿¶ÐS¸+‚å¶°®å‘ò=M8lôN¶¿¦sDÍ…¨„ˆš E¶ýôgÉÕ’ð™lK•%òô«z´dö wÈj.ŒHØê; ;"Y“P‚éˆH‹]ÊU|»V¬Ä}¬ÅܸóhBSê³DSïðaž”Ñ*lœ`ËøVÜ ¸6fö¥sïÎÝ,÷àÒáRî1aãÃÕ0¢1®fÐ#³¢µ…Öô䂃lç’Ó A¶ì«iŽHØZÓm®'橉ö¿ë©ö¿ì©ô?쩎Ô|¹ÔâÆñ¬lÙIõüõ c§Ù„ûdËó²Ã#[vã§&hRŽK\è¹,¿WôŸž€ðH 4ϧJð%â¹Cmºv>‹r;ôé⿟ ùï7jòäÉjÅEZsImêW ÷µÆKƒ_Z¶¢¸ûÚXäÂÕ…¯iE|{ Æ£±º‚÷©¾&SÑx“;ê£)Pú‹’ï¼Ëñ6;-À}q0¼˜Ÿ£ôIëÑoËH†6DáZ"6Õ¬=ÁHúòÄgñð7G‰€:÷Ð^Ô+Øšrs_m1j©Ó&™)yTQ²I±)a qkŒ}Ã>ÀPÄî³|?7ë½üšÆR|:„a‹ö´°!j=ÂÃvýa«þТ?œÔzhˆj ¶Ô|:|Ú|B>Mb=ª)øÔüzP{JÚõ˜t y06"”×µïgÃ>&ŽSÿ~Æo¹¶-gF‡Ø­ÈŽôK_æX;>«kß鬓³@gMl¾pÖ.‹aƒñ è ‘ºØ´ѓԦt<"ñP7GYL„8|b­Á[Iå•WaŒæ‰î„n´ƒ²À ÊÉVRÖÑÝ£™‹î‡Qä0W³RZÀ7SÄÒà=$±°1õEa3à¬U»¬ÆˆXÖ„!ر˜‘¦ë,Z:È»kNIî^Á{–mQç1½¨óFÁûD´áæ¯F~òñ$å\iKAN»¹p¯Ôg¡4nE(Ç€çŠ ÷B3±Å½c@ë‹Ö§ ’]g2åÂÖ|Ù}*oÑ8¥öS‡yèøGx, jLƒâ I¢Á¿gà_)ã ¬×;€%.‹ú0™¬ëÖ…žŽ;„u[û@·Ê)wËã>‘mï.”\§àËPéVìWXWAßå”ÿ+ß[s"Ê ÿXd‹ ¼Uÿ J OÝ`v%òæ §znèƒwò›k¤!0æ´à˜K2öŠ‘éþ:OÀ¼<¦€ó¶G™L“ÝoÁ"rÓ%Ü’p$çˆÕ%tÉ_sHÕjß ?åqBŸbåŸ[øü ÞÇ€)•F–¸ö"¾Á‘¸AE×cË€ä±ÌÝ$xï‰$ŒOïÞÊ™I9ÿ!Ÿ;H€òCdð¹3ä‡ðöÀE‚-OÖJ…M,ß2•_^ ü¢¯œ«dç(OÆès…çüuî_È&ÛïÈÂ;ÿdÖáyÏZ HGÌ*Évãñ€Z´¥üR´¦Œ|9Pžo1Ûjƒ®®o$wH«oÌ “è@©°n,+”IY‹Ó‚7ÙkÆ™,"žÜSÙñøê‚ÄKăǦˆ}S§"LFòI C`–ÀË×'X¼çr“‹3»g6 fVtÒ¬~(l,<%»H„Ô#lÌh…©0÷ÈŽ»kŽ[䔿ȶÍ0?ģ…3íêµ8ÿc²ˆû?è•)a€¿X;aÅO-&Ë.’7'?ËBdÎÿÂ|öîÐiü<Dì|rø¶‰#Ò…Íɽ¥ïN¬¶¯+t®Œ€hÞ„ç½­ÒJ=µï]þ#þ)dˆ¹ð/H‘ç0_Ž«éN¤¸†T @]ƒóÖ0ÉÚ<©oþkCïO.[bðå›CB@=tŸÑ$ç 5L ¶< ¶lh-ßSß>åyj¬Y‹VÓü¾VƒóKØL9~šâu.HÊQðV¹MX×Õ ORZ_zwÇÃë(aÝ1zZeë#¬Û‘ÇÔß²VŒ4ìÛømx†ã»JûÁšV÷uë'¿Žð9Ù /Òù·§ðPe»qár»¼/ÿž×—¿u†-®øÒÈ”ïáÉSR€#~lÖEqÄÂ3À [ódשL¨ß®Ö‰èž«—Âc™‘+z#àÏ_‘™DÙ˜L¯œ g]û9eGn4°.ô© wu;,("ð©aN¬«LóâDáï¢\€²â ¢NX³%€å"è\ð­§À­7ñÕÉÊÀ­d\ŒÃ› ï䪤êK KJuH×è«¿! ÉF9Ð C6žÀ›¾¡×±½!DüÁó›|&~²\Xž~™0D¢,qey þUºâÒÍ&«\º§?¬& ôÀÿcé)7òä•ò¬˜€ÆÍoC<]ì ?S¸ªò’m¸ÐëLáó°·¢,³Iý|¤UçμxJR½3ÁíJ'Ùúd-¨èÖ§@}³#”ãé9¦—µ‘·ðyÈ<¢ã1³q¹T£køÁøkÆ;lò•¹Y`ž«[àGºêÁ|]m¡2¨.>òzZfÿõ}²ã¢pÞ¹¾Yùèè[ÔûúKž<Ñe-õ. ~òö$TˆGuýRðN‚o‹^‚Æ)/Ùí¨ÓÎY ·»¡Œø§E¯Àw¥j4éÉ®7ç‚Z<ú:]oJ¨xº^d¢SqÝìPRµ¾/ñYûn)ãuYì7Ès¼;᜼ô©€ûMωÖ|åÝ‹zÓ/s ßÔLå üb…@¼±‹ O_KÀ\<†qÝ |Ù‚ŒÅùJRçÅ@þbóâ±èšSn—ÑeE¥¤ŠÇ$wËšϬ5ŸÙñÏš/¬5_Øñs¿ŠìÒøâY|>Àbî÷%øš¡H®ƒ k¶Yk¶ÙñÏš­Öš­vüÃúÛaÕ0×˲å )ã}6Ì ?åùÖHÏÑn)·yaÍvkÍv;þ‘m»#3lY¬àm6x.ºÁwÎj^Áɘ'x' œ¼þ8Šw•-}^±ÁOÉõ¾ì°þ;’-µl°ßå¾ýJ,½èKg_ ?ÄRlZvlŧrÜ-Ò`l0_÷—¼ÅæÀ­Ø•÷(EÚ`ßÏ-8M §uí,Ø$x˜4˜po6X†8· Œižäü†¹7-Qåô€ïsmÁjkŽDD~Ÿë×RÁ&éæ@Æ&#Joöœ´ø¸i93 ›à ª7cÄ·4Ù’<Ù*x^ÆÈ¦ öT6Ùâé ˆ}J¥ÏpAYù3K¨Ôbc)Ðnúà7×&i¢¦dVE/xK¨`rî«Âº¯éfÊ`ÁÏ¢¤[96« 3Å_LHæó `><'ÀoòCü!Ê•ƒ¥„¿d׫‚ïÑHtÌ$G!Úµ± ž¿ÒÀ>Øó‘WØÝÓ­£ ŒMRÆÇPÓ@kÌöUX;iWlÇL>yoêcãˆfµLJ¾„™¾-1mÚ]/;]›–Þ®·¿'ÂØ¾àýžDÚÄ™P>ñ³>’ûå ÎÓ€œ%Û8™Àt.Cè ›õ¿ê£ÑOšs;ËÝ´äX°³°³;õÎæôêì®`gƒµÎ¶GK/LpîëÕÙ54PÞÙÙhŒÍÎǶäx~R@yä;í¡9Y <¼Á¬Ó¸ï0@0¹ºI{b›ÄD Z©äþJ`l˜ßh‘R*°êî·ÑË&_µ»QF/Áˆï‡/ûcc¾mn›48ä0“\¯*+a ÿJ}W»ï’î$š»Ý@Ÿa·ÆÁ_4ã_ºŒùËY8mß= 2lJÒ¶$@üKº§=ÁJ„®çH·ü…ÿíÑêF‹É*¥4’‹Ý‰5@ ₳ƒöír×Á/0Wñ#@H×å/èærÃßBÎ]¡ÆÅw¤qäAâcòÿU[*.5xQ1W=„ V7FEÞ‰Ÿò•U»ý%áf!äJòÞúvF†%µ¢‡ÇÂéô°aú™¨ÈþX=k’¢*Ÿ÷y8ñûTÌ}–¯¼xðb@sÚ˜Ëjé”|åOð‹ÕÎQ¯§_÷hß6v“o(_™¡}^ПSé×<µ¾ ÝL¿¨u!<ùÊÏ´ÊsPí%¢T¿§D¿oêévÙ!~ImÆëj$Àò!ŠhVϽ4lïÙ¿ ^LŒð!ÊGÉmý$ýh&›Ä„¶m .+V+Fò}=½ËTæÞò\‡¾?”ã· ­‚·/Òà­Dfm ˆ'ß!È´5$ ¦ÕÓ(x*‰Viö€0Ùgbÿ²TgãÒè¢Õu@(ç ˆW‚"r\ +h•†uîJÆ©³¶ý€¯ #ÇÌà‰>/³˜ÎŠIeÓ8)©Ü"lwZ„ wFizô_t˜È£eå øÿJ@-n qDk鬥[i-‘·Gr· ò(\9'^Ø0C§åàqD,KÇCZ’匚±v5Ñ`æ"9`Ù4OW@¼ZŒ|29eÿêï¥éû-’ÛÎÀ¯z}ߊW·ÖÜ$e8ÌܼŸµÌ¤U“w¸wKKº'9—X`e¸“ç¤uš¿Y÷w;Åý–µ[ýïiëàÎãÚ:˜M¬-2 ßg*£à­Ê„ÓÌRÉÌÁÁ‹‰9(G¨Æ­KÂm’ÇÞÙº´orÊë£R­K MŽîT½\2ߓʕcgì[ÙfÏßEw˜X£]–††t²Ý uÉä$[Ö‡;Ë€i/90/äÓ·}Äih¬›íCºf-{±ÃK¤Ü9£µý«,ó™ìEo 2¸³LÖ]—»ÄAbÅæåW…´QÉyíÑ‚·ìº[•—rOZÒå-x” ñ¨`21mF\£! [B»´Á¥`;Kó?ô×Ȭq$9¥±4ßRâèW´6Úä¾´7$6LFU´¶¨¦Ïšx¶Zcˆ‘š-Ï¥ @(ñ®\Ê’é`!bÕ¬?.W°dýä(gFR½>Íbâ%J3ZJfög×p™ëÓmf–nÕXýÉÕ‚Q¹¶öæVÆ… ¾”98Ñ<¾]ŒïotT£,‡BÛ¦²IóGY7!»ø¼hÞæVਫ਼"ßÅ@]™–ç­ÚÓ’š*ò]&žÛÍ¡Ú9½ÃÛË k/1ÔN"ƈºm˜gÁ´ånÝt¾O±ºåó¥Ü­lˆ”±ƒÍ°Hl†o¹Ë³•æ6ì&SIžÍÇfŒ—s÷-”-ç ÌVv=ˆ›Zø̯vä¯!•£>Õf FkµPnš~,Oñ$ßGœ øÉÏóíÒBš×Ìe§7Mƒj|ð€Õ bÌî´V^¼ÆB1Zˆð×Itažÿ凡ÇýÐcÍàP› åO -7,ëÁC Q¹q;üo+롊güÏÝ O²*Û)K±µñŸPk[BqÒX­˜.wNÙà>]‹À‘£¼ü­Ú“À,r}s”ŒÑh|-¹ø¼©G?adÒ.OG¼à]…^ˆÁû`ò§kXy+H¥Òo5ûJ|3å:ñuß.¹ ߉#Xc©Ý»KðÞ…NåxÑZÔ#F¦úUŠ’‹F\,&œ?ÃN—F¤Ì¼f‰yBiD4wÖ}ˆ\#Q¾]l·/lŽHÚFp ·hp ¶ W3­”8ŒíÄÄn‚÷ (¨)ñbt ô9Áï¯7›&0]#_bølw©û¿J"ÓKÍp¼Ï%–Ëwº3BëtkÄ:}-â >aì@aRCl´‹=h ïÔkÖ:E¿Ïe;ŨËvz«9Ô©¸ÊÐá)­Cvø€ÍžTíé0‹‰ðÏša¡¬ì'…2‰d*sþÌö·€FyÖAÃ$;‰¸B[ÃdŠU÷oóT;¤[¦§Îž³è}`ÌÙÊ™£÷Êîµh¥9‘ç°‚ÁÓUøFü=þZ¨ÿšŠ¿fó_óÅ›ñ×Tþ+I +S‹VFÜÂ=¡E+#Ç tt}äütOM$‰9xž®^ÍK&¹ß†R7»ÿYÙ×^</’ÜR}dŒÿ3”K+# ‘?ðæ߯©‰xÿ[ðm3îĨ{QnSßærm‚°Ùr5̈س!ž¦ 0|`¥ÚÀ~ÑcX\q`zŒ3õèk»¨¬å¢>°#CÛwQØ—ÊÀX׃ãú6®·ƒãZ‘ÆõÛ‹—ר‹½Çõu·q\_vÇUÓm×{Ýú¸ÞèÖÇõR·>®òîиíÖÇõp÷ÿ«qMè¦q é¾ì¸ö¢ûr•q\koø¸<ú/—›ÿÒÆõ;þ ÆU@O8®zÂqÝ Oõæù<µ‘j*N› ÞÆKâ¸VѸÌ8®U4®U4.3תà¸VÇe†q}Dƒêè$}ìsº#> ÆtaLÁ[¹òÚ íÀÏáq¤<å‹AŽž÷ÛägZhÎ>5‘’Îñ% -_Ý)¯ú'.ïÖL% ÔCÂÎ>ÅcH­\¸çŒ8>ûÚâˆÅè`Ù±R =ù¢Â|¸!¹÷”ö.sF‘ìk*rDà^i„tïðwp–ÜMƒϘyIÜÄÆ’%fCɃƒGM¼ä>‘ÞÝ&CÉf­ä `‰ÉÀoÞw ÿú]À­ÜÇîæ€û`ÀÝpïYô19Úë¾À3#5'G„¢–½Õb#Ûv¡IŠŒ1 Ýì+Üõie¹Íe¥} £tè覔¾âÕЙ­$¢t@Ú$ï6÷1ÿúúˆùiðÿþïøC"üüÿÍþƒá/’üŸ…^ŒÃ¿þ‘·#“ ‡:wp8ö¡8sEpL8’Ž8€CÁAZ½ÊÉÞ ìë ÊÖÞ lDP–£y¼7l·ÃÂÙb@HÓÂqËÿ8>½øSàØóƒp_ü¿Á\˜~¨;ègX²žšAžÃÝìxÂt3gç“9ãw L¿ÅD~‰Mžaš{l’5”ÿ‘Óå6uO¹ÉÄa´chWËׄD‚¯!·—náò-ÙÒ yš-ð.&znpã¡Ä­¾/£Ü»:H§ä*ÚY=¶½øOÐMñ“©umL#«mßÓXÓ1¢½±æÂð‘zŽ—?@ø¦Œ(>Œµbj6a„­ðF;ûs“a‡)>?P/·…mÓzÂû¿]-ÅgðáV´Ûcû¹ÞcñaÌ”ýÖ\@2®½1aûÈFC»¹6­5—­\OpgرŒVV#|’ÛÚ¾wƒí<S»©'Ì Fc×Ú3ÊÝE ùì ”ó‹æGÜqü%¾_‡wú唿vkik1$Ãf>=*³ŒcB ªe`E8]Ç„G1öÖó'»S"fØ%G1È gÅa‹3¥Ü8Ém—mOIºÙþövŒú®—\ÍíÇYäÚê¬e¹;––™ ·Îpn]2"¹ yid c‡”»uLA³3wÇòcð;:yNÇòý¬-/¨òà¾ýäj‡ÿú fÓ 9÷®ÚqsÀ¦Jó‹»Yî1Ꮃ!i¸³Öý:4/¬[ŽÆuæ6¥Yë¡tÀ?uÅ€2|a{ŠMŠòæ¸4w :[ʰ˖wäÌ© VšflK…±R¶EáÜÎ2V°faÉ ågÓ’þBǸ¶\›«QÈ«‡_ÄÛÊ[Vü8¿ÓÝ"<úІÎä\Eœ×îVÀÎs5¶ß¿ì{)™î)sn_ãÜî’ìÚ³l`d†Èh„ö<ûMÉÊÒ#Ra‹„§`àI…{®ÞÉ:Øö@FËÊ tNæYXµ-[„sgƒ«çié)×>&úhÁÃl{ƒå%ü ï2ùk¤Ü-`˜š§J®-íMtáúDɪæà¯\ÌñêûóEÍ£øl{a+EsJ¹±è‹ºFšþv·sß’˜„} 0½H¡Mvlbížï#X®uÅ`D²e3ÛÞ~–¡Ôc–g®Ä;”kND$bé™+%µÁên5–ø¯Éµªc(>÷j~xSš5*„[œç”EŠ{*©Zx­iªxSf[­Ù=ˆ5éç/ãž‚÷ÌòôTÉOu,îé©î“»›Yôl ºÝGÙˆy¡Ó¡—m_^ýt·<î)àVÔË¿›ÒÄÑÔKÖT†íÿÛOÃöÿí§AûŠÞ¾_k?”‹ Ù “ Ïz¬ÛS;‚å¶ }Bß±j/ΣôÈ´_‰go§ŠË’ª“]öÂþ ¼Ý” ?VoAÆhyŒvS< –ä‚ØÂ‘¸â/BååIIÕSÅ¡¼P:/°ú°¾$x6Ëü|eþ(3.2ÿ^à]ÙÚ[e/¼ô«I»’sí…Oó3€qe82x±ú´ß,ˆÛ2˜‹èÅ+ÇGçBÂAÌŒá9Üš•GiAmù°L”Uxy‘+–gÐHpÙA‰2ï5狱 Vðjó¡ÚÑVVp¬ 1#<†¹ õä¢6ÐÿÆ;¤wÇüŠëÌ&Þ¢”qÌ ©EŽ»¨ÍÈ!ܱž ‹ôÔYp?ƒö ܱ3Ä¡e’9Uÿ‚qYxv†û$&Ɉ&›à¶›¿4gÀ‚µ ò8º»ï€»¯"Ȭn ó+<Û)NQ®¥wðK°ú XîXLX—¡˜OXw¡úá4wbæ·;„`u.:C|= wÔ ÷)ÿ“ÎÏIJ¤]3œg ™”ò8Ky"Íyfõyº…žµ9?¼3P…Ä‚Œ¯L²<Î,Z©›qq£Íd@^qz‡º¹‡ûŠ9½ç"Á;€à‰ØASŒ—S“Ç­oß—ô̽e}ûQ³4l‚ýw‚ûSæð£éÑ Á¡¦RèÖ=L4»(©ÚÙQØ¿¬Áâ!šuv¬>—TMÛxÌò¼§p8Ý… å¤×¤WÇ$ýëêoƒç*ò1aZŽòÎHNª³é…’ô3 ÒSI»œ…¯¡¬’Æ•±q0üÎÕgüOje†¸#ë‘à9”v—ƒrf­‚•2ÃÓ3b휼PâÚ_ðâ nã6æÃSJ)oç+ŸBßÈr-gñˆÔ¸wyºÛ|åßðO©9ät3ÇGž-ñ¡Ekh{µíðÿ dcgt-<öz#S*‰QØóÌ]9‘…6ÌÍã²æËq%9 æ2€ò°W%îÝå‘vM¨ %ËðÂJÊ&í¿Û'xx„jص–hX™ª—Àë/²æ` ÅåPÕãn5C=K1Ó%‘y²c#â1V¹Šƒák[‡â†·Q¶­cgÊ$'KÆÜmu–©î³0ÿФ¹*~@…гaÞ.ŒÜe´bým¬Nð>@‹ÚAØ•ogg+mQ°üëôî1Sq±JùEê¼W•WF5˜ëÄT4 lJeË5òJXèÌÌÜ-ì‚àù„v§±‚ñZ¤µèTàƒÌ ðâšÇè šnHèLá äs±Àçðd+°:XEßË6>5…±yæ/ó#3¬YYÊÞ/ºh(þª+¦¯tÊùfvÖÙ)?haÙé¥ñÓï~WVŸTO½Þ¯Û:Í}ŠœƒÎÓ‚w':ôvMsîäz^6å)–òxšs?¬á÷±Ð~ï6n­Ü ~VÂò4³håèæÃÙRš©a.[‰!¼9Ô:ž[CžímÄÂáf“¹N•zh3§Êáɦ·mÄŒ;_tóªýzð®$ NCx× ž œHu)D_õ]$(ÇiX‚>”Y tŽœR’¯ˆZË¿¸¨ïKÓÍõ:ÿ°ÿïù‡í§ò‡…óÓÃ~œ|ÝÙ‹ØÚù iLNó;àãÄB¦ç‘k`,W·‰uäâ†Õú(tÂjÐаµÂd9ÊòaœkØ/Ï5¼9¦ñ®· _\‡ V%m:Z³‰El µi˃þ6æ(‹ÎWù)\FùÄžŠ ¦@m|ÄWn!)«x]Z×.Lq%ÛÊ丷q]›A×5Œ,0 ¸‡™ Œ0{NMsÛm®ËÉÙ¦ ƒñ NA4æà4ö³¾¦ã©×± öÙ‡÷* ü5_Ùs­¾œ'à -PlO‡¯hWt•¾¢ñê²Ë®gŸžWXÏŽÐzžwmp=¯¢õlÿõ<»ç ëùW=|=ã :Ú:ÛÓ{=_Óc\ÏʬgG$ßek9T·Òzu áØ<¨\Ys”ßj߯ÓRÍWûóÕÞ›JR´bÿ½¨å¦Ã6çgh»æ:ÄdO爵C²1·^ªEC~Ùò_Rë¶ÈA?knͤbÿìàòloVíŸ ¯ÆÐâ¶ù·È6^c‡®â×à«ÿï—äÓíÃÚØc …L˶֨‘íMžæhñš xΫ!¡>¡¶F‰½Õƒ—]c 4ËâÏMRŸk#X´4Érmš…M¶H“¬×¦aú,i’íÚ4›l“&Ù¯M³³Évi’ãÚ4›ì&Å^›Ë&ÇJ“â®M‹c“ãäµñò²x9;þn÷[WW·7Zóõ!P†‚*‘_S‰ g]ã¦ïo­QF`ªLzZãw.>ŠÕ³ÜY2ãÕ»`¹“Né¶¢ D@w†ïëÃfX8=} óms_ dÉs†x¶Xç- 4w<”´Æâ ˆ· U‡ß[ü’t×ýxƒ»OÊÓï>Væ]þ}¬­x›Éd7¼ZBÈÎ)ˆ¹[šû]õÉh ¬lõ8aC'âŒædacA `c-(@’¹ZG£ë냱 Q·ˆ "s˜bR6#X ¥@`-ÔY`Ç U»Ù^Oû1Ž]l娏€Ø`bê`˜˜.nSôšÐCŒô¿I'H®ª: »öá$ ›Ž|d»]“0þ ¨Á„Õå°Ü˜‰h­æ$1Œ[³ÍPCðþ›¼fMñ}†á*“S²åqU£›â¬žN+«cî-‚÷:´h:¡(¥Ét7'móµ1÷–Ѩ]ÖíÚ!nqN¶ ë1áñžöåVæÚÚàÚI_âoLL¸•>c¹J c”»GšX~,© Fu5ÔqcöÄÂ&ߌfèa‘l«û„”±Ç·M 6¿°yEHÔ!eP‚_d N6çG9¿Zí—Ü{|mî×=[õÌ#.)Â`à<»ö{às?-•ã{D]rT…ÓÍG¢©ƒ9-É“¬‚þ0Si*“±K·˾‡Vâ=- ý¼e&‚1Óºãk]ëõ`ñQÜ·ìé ˆvÖ*lh¥” Ë î®zî2­)U!Ú|d€EêÏpô¾ËVº¦«pÔ<åñGyþ¯Œ}}ó0?†<ú”ì_vѺ.”ØÓÝi<«Bz¤+.òÖr1ÀˆTЕ„ʹV(SI™‚ɳ«Æ¢ú©ï™àY1“'šL=x^*£",-„¦hßÑ‚¨ÞO*ß–hzPÛÂ8É 5b><Àà€‡ GTñžio&z‚a¢?2NáK¦°),¦)ÄÕšÊÊ©ÿ :lâ—öÓ]…zœ¦•ãÁŒóµ‰}0©¤Õ,•Ó\ìr_•Tí),Âô SúÁ¬”uÓ¬àE÷Û¾àÿ¡,¥«gåå½ïCHö¿˜§ÜàbØ_¤”ã× Bo¬Ÿ…:P±³ŠQÆÅ `âU† |"å=ãâÅÀœy:„O¿@üB¬ÃÜQÍV_ » O-m)ê}ˆˆ¢aÂN-•÷„â †Pû‚×D\± žÇŒ(ʵ¥^pXÙ} FȈDÔë0“‹2ñ¤>Ĺt»´ò–‘i”<©®Šá2Ʀo,Bvc<²¨ÞÒÝ ¬Øî`ßA>8>ø4*ø4VG£wi>Ðçk lâVx'Ñ ¸¥Wc¹»€Šò ÇeïË*:™8•c‹ü®Üà1¼SyÔàêµüÞ]È‹ÞÎ r•Ø`¯›,¯•49®Hž>·‘ÉtŸ-±5ÿëE]£ïÉYXŸ:«ÂX*>¼Ô°A%íòÐ72ÔÍuS=Êô˜r1Ø’§ã&a›EW¨¾Z½--êZ$x¿Ì‘»Òâ= x…J°.èQ£Šºæñ´YE]¿¼ßÒCºà=Hæʉ˜G;+Ç›kµðK}±ä„1‚”Î/ÝA~9)ÄúçèŒ øêD¶µ7fН^c˜³¿dãuCÁEŸZôôJ™Ž UŇÚdãÅXaõ…V­Œý)WwšY`\guåzOGް®0’÷ÇèaÖ XÛIÂc6Üä4Õ¦+²7qÍeX›8AØpÖ© ß<¿@œ‡âk×_ „ú¹X}`•yDhlG(éÓ P«?ø.*aº(§ÒŠ.2õ<ýÌêŸèhÁ '9¬Ló¬ŒV™º ;Q>>Z‡x©ðž3çë·pÊÚ‰ÜPsád³à[O~y¯Çåµ`»ShpS4&a˜û±áB †Ê¡¹/ï=÷û¯$$ì~U»s«Áõ:)õ¯”R%¹¯ä%m *”×,6ßs•¥üìm2M==‚¯ÒH–«­ƒ¶t-’da$''/?œÿKF¶oÑeqBPÛ•¯Õn-×”z_Gûÿî!âþ‡ó”‹^äŽ_(•*_1Äý_ÎR¾Õ§äÿÃÊÓjh>üÒÁ‡éq²HØÁ=„p‹¯zMªêŸÐÑJÇŸ–æ\i8cÂWåè2àÎ×Ù ¸ÎÀ_å*#ˆ;ò•GŽ©ÆÿåœbPéx)txKZ1Ó\–ŠÑÌʧŠA¥¸†¤Ám¡öÔóäËT^24Êéð<Çëa8Ò#4ù#”tŒ™êP¼q@"~<• (<ìí©¶Luwª .†Óðù3Ý`æ]aÑY+Òô Kˆ¦aÈ Ñ5š•™uÍ›ßÿcº3„%Àø¦ÉX UMá­y1¡LÒ^‰ cE¤Š&’¶Q®mÞ¬È+,‚èè~¦Áõ _H¡Ë“í\å5¯4\íÌR²$s¾73¨X ¾gáSIÆÓrÁÓÆ•“×kéœx3´tž -quˆÎ~s%:»#ŒÎÄ~¥TúôËÄ®4µÄ¢ëû%âÙ(õøWyþ¸ìªòáHhe¼¤âWúÆìþ÷`e<|1¸¤rKñ “/îäÓE*¤H3¹Æ®-¡ ú}`Í”p~âTohZý寶¦×ZÖk m8 =ùn¸§Æ¢;Î.ïÓ˜N`;' 1CØîš®ˆäŠTú´ºåÀmÊ=ýŽÍÅX¸ú[º×YyèÛ~ˆŸg)-ͽøyþ·!½ŠŽØ±6‰š—ª°Çš£’`ÞçäÀø¢ZWŽŸkŽDfnWŽ ¢®9]ÏGòáH´,X_ó>>НaJ)O³dA½7{×£Þ'‹67ñZEêBJ¥y{änD²»Ï£$$Äæ‡Dóš3høÐ%äF…uв^5ú©¶‹½ïûmEŠºû`#–_Q_Aô* al ÇëuÇB”Åy~ކ+Úw†<¬ž¾êª3<ÏšÆñ2 ׂt¼ð ÒñÃXÚÀ“Þè ò¤1'‡DšhWçtˆuS—±¦x‚×òbmœ†xFÆÑ&Ó•øZa´‘¯ÍŠñ5ècbp‘mà…v½ùÚ¾®îà„ñéš+U_ý÷{$Rg‹~µ@ðëc2Õûð8 X¹"/SR /‹«ÐzÔòaÅ-¸ý¡mÔkÎ œ­ tX,2Qª™@%þP>¿xª¦~{¶ØŠº €#öA=óFÁ;¥nò{”ì´ ÿñúúM.Øí¹Aê-f³®u«¼Á«¸?G]÷…6}ÙrœÆ†x¶T‰t×à3tcÁA¾ ýtñöˆ+²Áû|Ä%Jì½ȳK8ë~”¼åˆ6IdõãVÁ{M„qbïµæ Ø×yÖô`«'ÃyÖ¶+ó,-Çj8ßZI­š¨UÁwÈÑd7?)jähÇN!ÕG£|ÑžZ#G+çíÓvñ³aüìÍvägIÊc]ë ÖÄsX”XŸz={UþÑlàis‰§Å ­Ð[‘:€c¸G[?ÂÓ5ÆÈ—°Gy€‘= ÞžN]s¾‹4ãÖ «ö¡CÎA_c¿ý-}õVÚ‡âʨn,úžöš=ÌjÁ÷èÁñ¬B zXI>dÀõ:²üæþ®Ç¡]>ôA¹{­,l]ÞùaM²æÛÉ?ÆvéjøÀ)­ ú§åÊu”ñqfÁ[cclIR:BK„Éz£WâIN ¢>²¯óKn›^QÀo7ØÊÀçó§^ %3Zÿ8¾4¶ù~„båüt*ÿÖ9hz«&çû$ûø’xöª®±tîZù××?Pi¶2b_Pß¡´œJéסɠkJ9Åî<š¸YqÚ4ŠœNyƒDœž8éU5òÏŒê©MA¢OÏáøƒvN÷Óh ·KåÔéÀÕ /¡·þ —$Éæ*š„Jü·~RÀ¤ÞÖq9 þñI"S¼åYùø A+èRnl ‘_’ß3C¢X•¾ãòVcèÈ»¯ê$F.xcà¡trÏø&a]XÑ%µ‚§_'BpFªà’`¸™K”´Ò«Çï_r\mbeè .ç߇š¹„ÐÝ"ê3õ“ÿ$X«&ÁÏÉŒúæ¢Î¬Ú/„KwZ2ÜhQOòU3ú(¬?Ùj€kÐi4@uGAÊ•¼<ŽpGÁÓêkЈòå¾ïÅ4KIÿoÈ„þÔØ;àjýÒP·b^Wa—‰„†Êp4ôîòmõfìrþ>ƒùt4[iÜr+ªÜµÏ`D´ê¤N[o¸<‡í3Øé/’¾>ØÂ—6t&kûOÅ„^{w ¾Aô›ªn[Ó‡Q#y,!ÕrgÅXªW†÷£Ñ3w±q-µÄÑO"·r:neâ×5}8q„çì Zò¼(mC,¹û*z»ûZ£/»„ÅÁõà£`ñò±n¬4’~Ž¿@Ox.¤¬_Ι;ým•UÒ¨*ù¨ †˜¾D­ë׸C©‚O R#Ó5ÎÛïüUIî„ãEè TâÜÈe9ÙÊ·‹AÀ“ZÀÊgQƒØ,&n*,¼3¾ Wþ~Çx¯6(s)Q>Å;ƒì}DPZHUØ´T‰M³d¶Ô¢þ¾%ŒgÔ˜ðÞˆ·ÅÎÐPC•ØÐBv‹::¼cZ5A ¸Ç!¢70^*§AUXýoµú_KTç@¨Nb©ŒuJ¨ï_¡ÈrRu[5„»DMH„€¾l®E]ä¿<‚mi8ÐeØÐP[ר£ü?šà2 a‚zìäp #Þ€ê´d¸úöê>CÔu©+_£®Ü²lÍî|ò3C”#Þ(UP…£X!G«Q–¥Uø«™4v«þ «i®0,œ­v—åi…·Hþ;÷Ð-Þ´*­–¥}C&ºDOò8EfÓb¹ðj‡q´¢þÓ hueg*ßD‘Õg»õõP2F´¦Ü(ø²» ÚôU'Ä'¸NW9žæK<Ì?v7øÇG‘?°µþhÈSJ¯<ßÖ¢Ò°na¤g k4J9þ[ÎÉ5* +èÇ%ˆdyÖÓñgÁ7ßÈÈö†8~hóz]ÐÀá;ýò‹ˆóâ.Ëo" nÚ»#–¹,É(IúE,–w<¿|_õ ØgƒbÓiDÌÜ ŠõÅÞZ«Ý’#x§š Š=¿1H(¼ÈHJ–,=ƒÇÅ¡pÃi³é x¬——!AðYÈeDŒ˜Ø®'Ur‘£é牓½P3@qßy¢8` ɪ+d 'ÉnY’<Ž$It-¾ª‘cž1–ÈÑÿez£aûë~üªT}¦+4sTÔ™•Ñ!…F;îgüׯµñÄâ䬟º3´1þQº7ð¼¬UÅ;˜”¦/ JÔðbånCŸ“°Ìû_öŽŸ˜ÒžGôfêx¼”ŸX\KRw]ìÕñFÚ7~«Ðnº÷KÃXÿD¶ÕÎí¡~§`™”Kúz1¼ßïý¶}Ax¿_t÷ê÷=ò™rÑ­~„NÖc_Ü ‹(ÕY®¡ït,Sý…>K–IÚ²ýµC™¾¹y¸ry¸]*8ñܯ"0Ò¨âܪJãVá¤!xÑäVyÊÑέ£×‹kQ<Ž×`~3¦%PAƒ†ÜÕ4Œ“pv¯»|€°!’B†ÝPaC2šÀÓ”ÍPv/yÏò£þݬ ÓúÅmÈÜiaø¸†‚Þ*®›„ë]ØŸø–çľ#d4‰…!+á·W2L’/§e(Šâ MSô}sž|·Ñ¼ì<‰¸ÕíðG>7Ø/g+ž­Áõ¿¨œÞÑ+zÃÿÒO˜§^Kx5ÌÓ œ§*>O=ÁyÊW’GóyœH¬kUÇùðÕÙk¢4#´ ðø¹ ±ÂšäûKÏ…2hÏýü«ä~÷PäU<ð_-| nèævm›ìø9´l·PU`< ,=¹ï µ@ÅÚ¨/ÿ?5‚®Rþèl°ãNqÇã§Ñ+7³@KÈýÀL=:¡*–ÐyÞ`zÏŸC#Ê¡U×Ý[¬¯õÖÿ>Ú d²yËççã…K•XÅSï(>Ž5A#\ýÞ(©2ŽˆËA¢—­–ß_s·¦ËADSþ¾"¹H奨Dùý³çºI‚4ß÷>Ñnh\ßÇdÂäOç0»k™Xõ¾³nÙ:þìRýõ&Šr(çÅËߟæ¬Ö=JnüdNļ©Å¦€Xõ¾òía‡A³“çy1 }ÖŸ&Q…Ï`°åU€?b„ÇnAZÓÆŸÈmçp3g£éÿ+3GüshÿsÖÌqìe½¿ÄAjOÆb¸¿¯”7¶VÙgùʰOC^‚+Ò¶^ ÑÿŸÿ;7Œ ¸áGñU†×ÐÍNÚà š"þêevbÄÆeÌN¼˜'dvº¯ ™œêÿô„Xï3ÿ Öû?_X¯ðHqç% 7ã+#ÃUïé$î¶žnžýÿ‚ã&þßsÜ£=Ž‹ZpÜ/Q-¨hç¸ëŒwmÃ¥·ùNƒÆäû1©7»½hd·;~Æ A ²[ÌlřääJâL=×}y^d#¢øˆú4²‰íÉ2'Œã&Î&èZ#›pþ›(Þs10‡s‰{46±|º°aW>cÉœcÉï+µ_#Ǫà«âýô{<]1³Yg³ CX× «»ºø½nFÚQ®‚î¦ÍæH†Ì]~Èÿxp;Á&ùl„eΈӬ}ƒ~µ­®¦ýÝ*,êýz›FEâGA%¯ü ±?\)Ì ýrTôó€Œ-¹¯ï œ"zíÛ¶ö õ9NLOà‘]eæ§gàûùJ]uˆ³<¥$}ÚkÇÛÿt ¦³Ûëȹ…"σúyÏìi!ì,?¤Îè4l·Ø¤rºh’xœdDËlÊi%UÚ|-~~AÃKÝ•ñrùÕu%¼Ø5¼èäæ[ŒnzuX x™wð2 ýÿÊí[B±©ˆ—}Š1yJ¹zKïUö4¿}ï7P“„¡’ýzEg·g5残 £áïº<· Ê~^ð5s˜Íkææ§;ˆ ƒ-·—á§s[.ñÄvÆs²¨¸“ÛÃŒv`nî˜e°F·š‚Öè q˜TAÞQP…”“º}Zê§èÖ Ÿ¾jÝuj7…\¢¾WO¨BCÆ$qNhzu…‰C/^5ZS¼µÆØœ¯tT…H¹VYXÛ›”ëŒ&͉œKL)LÔfÒtöèÝR2 e¡Cõ%Êí­ yÂñìŸò}MhkŽS«{~‚K®9®RË}Ð[8ïÅc±ºp?ŒóäZôê„y4ÿbÒ»(¹FwMógô¯ëhO´eÖ¯®´—p9´oU`„ýk »“ÍÙJñÇF´_Ý{¥Ô·`â'¾³«æóUâ>d>FÜÀ_lÊÌRfÇññaþå¥jίVЀµÚ=wÊÒ[͆̈́Üa†Í„)Ãppø£Þ‡»³&ùmò´ôð6|˜a…Y†Ñ [œÅWX?t,×Ç‘§Eó=½„¾'C d]mˆw¾ãjj AkàthuÇÒf‚ÖÀsè6òž¶…v8ø ¶À÷+ï7lyÜÑßböuøƒé0C~²Á}ùýW™¯Ðc¨+Ý6J î[¸ó‹ª¨ÁW¾´*òQâvw¤áˆÆ£1Ôä2 Ðϸ´IÍÜò.ÔÕVaFE^ACOçšyH³ÔØ­¦ Š¡™ÿ„îÈ|K¢0¨³6—\ªàûšd+mAÀ€böc÷ò>®á›‚÷Ì>P˜5|x¿Ý×[Éü±}Úx¨àÉÆß5Áˆ$‘VeðõÊ…eùšã6’QFÃ^ël)£,™ð"º‚žè4OtQ‘¨d#ö5ËË ¾¾{`Ѽ°3Ì5½GsMïøºI-†Oe_7AËþea» ‡ó£¿é JFgБ~íå@ÙKçŒ Ý7kÝ7A÷;QW€‡‡hΩûÃØ}:Èó•oÞíÝódèÙyzÕýÿ—íõÀxÎã/ßë£üÁ{Ìÿ—*uoö-„Tê Óg ëÿƒ·ÛUý3š'#é2¾ §“©ã’í‚wG¾·hÅ`M¼ÅJc\â¯4³Æ;LJçþf,êþoPc³IØ)#¥…3G³ú|Wˆäÿ•}µÛWâÃíYùʃ í ‚bÛš™-‘É+þ øI²6R÷Ílÿ˜òù*»Dg+K£Ç÷œ¢ø<3†ÎTŽ¡á:÷ ^UcàèÎ(º õÂÆl7†aã. Uw±ÑÏ»­d»{wÐ=±þ-RìC8Q×wþ_‘á "ã·4°[ïã»ÓÛ\SOñ¿"}žÌ÷û}V"SK€ÇNàž„Ã÷¶†6/Ä•!Íçž+D¨‰·÷ŠN{›Ì"ÀPg´M/ÁÆzZ}u¿³ ¶Uu¶ò»÷BšÑß”ÿn4ZÌGèXër§8™öøÔÚÆ ¡rR¹ECþË€?î|e8ä·&¤?ßw%³1%<òþç|(aã¶îæÖ>«bè=Lzô• vÑGùÊï†ì¢ żÑ{¿£d»º[’iÕ%ä Ä÷h¥w‡ Bñ—œôŒ‘¯¸9ýi+Ž+'fõgÿG.,þ%ÈïÚò­ "£AðÕd O”òBÁ¯»z“º‚AfWPÔÕ©1‚ïxg¸J.ŽÔÌ;™[b4D[´æLR3pãÇö\ÉE)Û*´lá{®âKÁýÖ‘Ú¨dãaIÓä^÷;&«µ…FEžp±-ܾcÒ%tk›áþ=^˾·5;°¦ ”¶òJúi42A@ƒ‹;i{Ìü!•?hÉu½L˜Ð]ÃoàöÊ'¿2¸jÔÞaB¿|~úc#œ¡qÁÆ às8 5^òúO f…;*LÚ)Ñ 32¬Ö—ž©Ø·å2søb„A®ãÁG_ße„º;¢×EÁ÷Ø–£ÒM!?vØ>Âɸ¹ÄK¦o1€ø?á^í?äÕa¾d„íu—áG˜i=8‡˜ FØugpk_ð>mêå-[)øþ]×K3ùCN&õ¦Sÿ÷ð±"¨Ž.пЛ¤‡# Ô|§–å"·RÜ&zIÝ1 Ô¥óPKÿeð•þ—üÓÇþò% £Ìü—á EeíO×@ÇU\Á—aôn<߇ËãïzÅL-OA¥Ò.-I,®§ñÜ¢>Ù;tiåÅàxPœ+¯üÓ๎|#Ž¿‡ˆzºÿЧT\Á7ó£'äë(}Fw(8¡ÿ ™G|­ ÍÆ¹ÞÆÁ¾qp•oß0d;ñP†¼×BÐ/èú}m§úôÿî Ç}×—Ä«Íêì½³3=^£Üð†áPÎQºâò™WCÐo¾ð65~Ä5ê‚ößZ8ìÂ…ðг_ÝqÉ>MYG/ØÝAØ×£ò‡× ë`DÂ~ð•ìT6ùuÃÙÁ‚“?n\þÈ`fƒÉžŠäƒ¹£=\•^âÄÁ€ešˆÃm½SßL#æ\xñ†Á<Іª´`Ì4,³ê†hEw]/-ZÕ¨Ek@tžtÿ<åÛð?{ÅRÕŒçæcVûYç{|Ûù À©!öÝß ºó9ܱYð·À¡1³íï_Èý{Ìoq ¸œ<ö©ýÙÊ8 àkÏ…cØ>žG*Œ•ÃÇ{cøxÃÇ{ ëÕÀÙþÀÐ6JÈjh´ ùYK]­~ý‡vV^*¨?­¹Œ ždŒþ%Ôãn7êÓæ^bìׂÔØ¸&¢ù6á\s¸QÄ­†Ý•øfâðBFÑ/Ì?p¶³ËtÉðÖU^F§Æ]å ò—Ò¹·…ð–‡ ôÈ ØŠLC¡ÍÁ7B‡‹/­|ͧùNz‡º é.Ú|Uìç<ŸÞŠ8QZâù {Kà™! LYN¿bàù(Ì÷7/…$ðžÞî•)=¯‡–f¶25ÐM”þÿáîOà£*²öq¼“t @G‹%:è!,JXBhö@ȈFL0$™¤!ìnÈÍ¥1£ è€¢¢Ã(*£ ¨€ 0Ñ ²©í¶3Q!BHÿŸsªno ¨ó¾ß÷÷ùü“ÏÓu—ºuk9uêTÕs«LA‹Ü1€$Ý þÑ× Ö7¨ŸúÔSÔ ¦øGïO´³sÏs¾ª9ùê¯Ö'x3hŽ×Eôö7FoEÿ&š£ó×AÑk8#8"†a_{GÔ„Wó|*I{Äû2x{˜Á ¯ úYû›V±¾ç-Z1G0Wïü¦ŸŸQ¸J˜½,¦sÔèIÞyM£øú^ÉUÖÐ ³r̸bX¨_¯0VTÐ'ûùUPwpÍ1ÚhÑ”e;)Q v„ø ¼,Ʀ&øòpp yæTéŽY\ÏÃïbÈÕtÇäyÙvØ2Ò;¯ÑS'¨wŽ·iÍûÛª‘_y´Q§Á_i×ñyrÝùUÀêrÞ>­óü4?XÄÇöÓgœ—þìþ'‘{hÞNŒ^[|åb.ò Æß-rO\àèõM¤¹ßqN,Ýèêêá!ëT s7ø”íKqÖüÅ7 ¿É9aƒ¯áwœ¶Auë`œ0¾ý„w~ð×¾!¯¬ êÔ8Áök„.WÍÏ|U“–Þ €ãïœÑó­ÏÁžÿ®‰Wƒqù#ýÂçý æF^Öäëg}ê‡*­sÂó~: ó—d}ø¬Ärá ø¹óù`Æý_htŠ—kÔ¾À/ÚŽnÖÎù®ÁÞ¯ÀnöûjŠÊQ1Vâ-x]/l˜xýBN¼»þl}ÔõÌå׌ÀšÿzKû”Ìû%–A,Y Ä¹bŸ¿Î×[]ÊÖÐ3¥\µ¯5ÿL¹ åc[¸zþCË4¦BñÀñϾûb=BþÐ6äKØïßðùtŽÿr.™Ìùk´¤3-ñ‘?¯-@#2sß ú ¼í; r] %D|>]|ÿL¾÷žŸÊ<øÁÓ¦ÐëŒúŒš ÒÌÜ¿{ë•üÖIïÌ»ÛOï¶¾ö’T‡C‚~àx–¶é·¤_2w«ˆ¯ßÃ:Ç3Ú<:ջƓTr~K@ìÓ$òebI÷±øôТ íõå_ÿÍ#¿cß×R×dq £mû[®^,®Ð3T[öáE\MöôuÚ6È•Êßòx?ÔwYßâõ þò¿.í’âŒxÚWeï'¥·à/~Y”\ï’÷:ïàà ^b›ßR-Bö, ±ËoIZÿé@Càbœõª\v€CèÒ( ĽC5†ˆµ88™û†yx-§=ï47úÖ& ݤCGÝ%¬/¿I¨#MÖr¢oœÅÏúåΟø§skçýϯ"7õªM6Ú>lð~Ÿ¾•ç)%[%ÊoJœëPC€ ð[É÷Á¸ëÒÿšïr^ LÜÜžA³r÷¹Æ½´„iŸ×éÎg`] ÔímpæzòU\ZõŒŸŽ§Ù&9=«}ÉÝ+Î¹ÏøµqïSx%‹eM/–uÊo/pqKÉ•"s—’+©æ%W0·› Èë®+¯yŸB$Yù‰¥ACµG]ÇY!òI×’+¹æá!Äõ!n WøŽ¸VÖÕõª7„0mñ×S¯QÃç[pÃõG Ò}H®³QÖ­äÊF[çZùé÷F[;>#Öróv“þ£cÓöN¿µ@ÿª \æY.³ÚRÄb˜Xë@ç34"„bE·ØO¡)“Ë€4]¬Õh£jÅñ¡ãÁ±Õ‚!lÝìÿ•ЂX9‚ä-r÷Ëò+!.o÷ŸeÈ||‰•ˆöMQ'o~ÑšãâÁ/… ÍSnܵG[ÜõNóHü,íe­ÿ½9Ú·¶ëæSÈ;ó1ä›ùSW•W Èâp·Ö±‘eM»tVÑù|jpàß+z³‡°E¦u_¶‡cv‹«×ß‚D·ýßÍ©?õi÷{fÓ¦ g›HßPdI›'ÅU4(_zwU3)Õ9êA¹)‰²Ç¸*`ÝN2ª}Ëq,º–!™Òl 5쯚ÜAñ믊êbi=Î~jé3®Ÿ_òø/³ä ÝÈ+סš¡OùYš/OrÎÿ³oeγk‚çdKµªâšô^gú‡õÓþÍZu58ŠÏNqŽûý¿/QŸJ÷’Æ&ÿðEíhõ‹´þÏZR´©–i/j{5ÏÕù6в¿àñØSî¿—‚Å0Gíç™c?¼°V á†p)Yfàò£熩&ÚTå™tìún×én­Ž;eÝe­÷×ìÇ‹IÝß­}ûÔÊÕLŸ¹ƒWÿ¶|²óî>ôaÊ Äi²3´ÍNo¢c‘:Z|Þœ:ÄÆ­h{F¨‘Æ7¿ ½ë,Ún£å©r‡²ßñ@ü5)ÒÜ"îð¥‹J¥²ß}\ÛÿCMë®WGt7Ęô_ÿÑN¥Ú™ÁvÀüûÒˆˆ²Ñ!+=æh> ¥Ãø0 :¸`9âÞ€³2ÃÀˆtNF‡Û¾Ém¯p-_ 6lÙ^’|ÃKX\ű) ÖHñsÌ05â1¸]¤)]ƒp-5¼û‚ ä§”ýÏ|P2)DwéJXz„bª3–’}†.*®-¹aÙwtÏcª–žWª?ˆlGû-^¡* Jõ‡CttNýfÕT‡(>l).Ù+©]Œ¥ãxºÚ·hnÓRg¿¸pÈ%Sm›:ÝyµßÚg> “òÒXÊèô=Z7ðÒÏô![(Ŧ¸nÙ««’©jªû€Î8 µŽ!a•ßu‹ýL)v*_NÜÞÍîžté¼B[P~D›­^nYy%DŠK¹ˆkÙ3žþ³A\½œAWµ½4úÈiCèüÎÐút81B¬’G›d Ëst¤º0 JOXmjrŒ²_}gÔåÚÁ¢Þ¸ýµW_½S,©¬¡µŽ”#—\Ê1åà§•—»Uº!`±_(;‡AsIùyY%å¸`hÅ]¼TÆ}¸dœÑ./b†Ór+êæ‡œóÔ…l‡3o½°„ïOÈ%GÔ.Gÿ›B¾pD¼æ WßÝÑŠÊA˜Ìó@´†ã¹ÃAÁŽP¶õ`ÛœìN޼øê^ž†.@ºÆƒõÖJëσŢZKZ‹=CSóÈc»•õ¡—ø€#n:>’½Ü5íÎ!áÔãX{ ñµ´p¬¥ï:E5u+_VzP…Âb/;ú?áˆxGù2ö“ÊóÝb/+ÇÄ[b žZ#;úƒÑÑ¿Â]çèÿ—Æ0Nƒ#z¾è:¢Nðf6Š%ÑwD=àò„X<’I;Ñ®§eÚÃnQÄÊ/ÌaUÖSÚ·½I¹Ã´7Ù±†.¦xÒa!<€Ž´mgˆ=Áw”5¼¤íNºn÷¼'Fñ»„4›5éV9,Ó¥*®a<|g´!håçÊŸCïùçΚCüy$ý*'HÙ4†Å~ìˆzÇñ„r’•ûŒ=…Ç~•ïUá6V6r¾^@¾*vڦˡGiŒÝ§ÐP±»•c±WDd•Ob?C÷dÂ+bû}ìÊæ!7"§UÇQÎõ¿¨ë)·{ÞÒò…è÷|Ô€ÜwôÿÒ5_,MÝóQ½#ú GÿçCæ‹.#úÞqŽˆçÈx^®ñ†ã×Sö™Ó=¼ôù>•WqÐoÜkñYº3;tŸ¦Rá-]{š·ÀÄg>.šM`æ]g”jÚw†}ÅsæõjÆYû©…±êNª©v±ÔÅ>£bì§Œk*⪭5!FÛ<†a'c3~ý@6y‡®æh‰J_s ¥´9lÜe;9ÚÝs–Ÿ¯³ì«´¡FϲÊÉ™ u “bÅB !ßdþm, #cuªÊ8xm˜d±Ë ‹Üý(»6óÖéÕñÅ[¶ ¦,è¸ÓoØÒvâ[e…âþ‹øJFÙ)V[¦ßž¼_ ~'5}o•V:.RwRÙ”W¾¿ð†ò‘:t4eû÷4Ltéˆ#­MW뙆أÚ.ðë×ñ‡ÓôDªÓöìUÏ>]ï¹­²cМ ó  G“óž¥ÙËdçß¾lðd¿ƒÏ® Õ¥:oÿšf¶c¬õ¥Êhûž¶˜YšLóqgÄXÔÂԤ˾ÒÕÑÂjºZ½ÑyÎJókSœÇð¸cçÞ«rAý)“¥ŸócÉžm«ìXDbn¨sw«Fw>Ë^5£B¹Ðê¤ÑvÌ{;eÿ3Êš…Tv³˜3¤ýžëÔmt÷E«:£}ͬè¦Ì ™æÙ¶…™ñÎÎî<±•·lí2Ìh{~¦8¾&ö_Ý=Pé8 …Ær昦·î†, !‰êØ¿ˆËt½ŠVõF;}‰Ñ î¤…$ðä1Uyº¤|R•EEf­êâ`ax·9¼ªÄj²ç†¨,Øak6ð ý Ï5x^û÷Ãd7ÚÈxjKçÊ~ÅAÜÀªð4)éj[ G½QíHâf§`â¼4'E¡ê èVwH3Úhëgõfª Ÿ~ý¥Ã•¢¬_I97”ü+öròhîä[ݪƒÎÕ´õJuÜáKÛØgGz±òép…Ô5ä%ä¤b/ ÄF¡a/àÙŠäU?|Ž2âýquŽ1ÜòWÕA¹g[ª êPÊàøOŠrã+û/]J2­ìá¾à‚öCIÖçÓ`[mÌùƒ²o²‡ëµgÀþ¥2r~õ Ulªølü"¢±çtóÛWžG†áÉKÊžíd ºß«üÊà®ÝEºßV·Q‰Šû•QïÐjÌt}X‘·(û¬ûº8Ø|ç]NᡵZÔ0ÁhËs@äZ»ƒ-è<îlðL&ª”çÕgWOºé.UàHMƒ~‡ƒêÁ¤ÉNûÉ€*HÔóÊp´Þÿî?«mI:þØž´âË´Ü¥àÚMš«³~S7Ù¹ã0W'ôí¸KG~·ž¢•:ÅiÊáâaæjGº7öwkèNÊä)ÎË5üUå=–ÖÎq%<«bþ Í`•ßâÚAsã}eÄ»Ö×ÝC'"þ ¨»-Z4zäóñâÛY‘Ü5{Y¿¦¯áú8Ë峩٠)½\,¿8¼ âUªÃ Êž[¯(ëSÝ¥r↬'5{k}<ß*ŠPÙUøê`n„ŒË_ ¶ž]O1Ò¯ŒúKe”½_ÄuZx£gîRç#È@1^Ìã‰ÝÕŽ$UöðÌ6Úo[íHÒû™ÊíJü—7ˆM¸õ“øŒ£•ÆõÔ¶³Y;D9÷ÕVGtÁµŸb:k|wŸ½‚vÕ¯Ï7ö©mÔâ/mG¦ÌQSõs`òÝRn|÷ #úã9ê8œPmµ!̾ ‰¯·|­ÆÅ7m%¸bÝ£Gh/pÍoKÕ[í‚ìÊNÞRñß+–j£õEoµçJÿé×"Š©FÉ8MûOG§¨é5êˆgõ´“íiÅt¼ÊTË=Q×ÓëhËpS­#:R\QMuñèÒ‘ÀãZö ËQò’QãÐîÐ[ý1eªé84@"4À1=+Q‰ ÇV9¨fUÃâ+Í­'U£y[Õ䜣æP—õ½A¶S~Pï‰ÿØ1)DlI©½ìëÁÜz­«x@¦Žãz3Ç5ƒ†åTK#ºÅ UKm|yöä œ«éΑs”¾sÔ®ÆwÈâÐqD«¬ UY½;""•xµ8BYª¯* Š6sªé[‰pJ€µÒ ÆSù9¦‡˜;h¡×*­{»sk¥ÜWá®U8R8²)â*\ aqJïVºÎ‹õ(¥/×VÒ)m\µ½q­µC.íæ‘•*tš>6Ú†ûæôÌ‘ÖÚˆló½qç½íhÖ€ÎIûé{•ŒC“Ô ý{†º¦ ¥x?ä@É ÍwéYçô«®~ré3LjÁÇÂkE¤µ¦.v¯òͤ)ÄÿFhލ~Jz…ûU<¬ìÎþu?îÀvš)rïÐò»?Í!À†o­>¤ŸÛâ4IIªsN^EÉlö 4òÉKí\Þž^WrT íP=œü˜œÓÅŽ—LÔµf´Bº…òŒú:á^ 5Œ[ þ˜¾òù39/–˜qi´“|«¥”¯qž¸SñŸ(‹ºˆpTý.éË’8*þ³ÂsjÇñ‘æzyY¢¢ Õ%ú/ã?[0-΃66QÈžº–èÿAÙr `S¤¥»ud)Ÿ@±Ñc‰zµƒÒÿ±a4’îTË(£â?)¬,W“œžeT¬šD ø¬µ0$Ô<ÒF\Ç65ˆ¼2ßv3EIDÅñ'ƒÒ‚†ô‡ò5N/0K%‰HMÊnÛš Dí°† eW®Ò¸??öÞ1Î@ÅÖ–ž®ü*t’ó¡'´÷Ü¥åXOÔã†zoC¥+T©"‹¯;•0õq~ÝÅF2œ(’x·æÞ<[(5ž}öh¼ÞÙÅÃ%íÊ¡ª˜Q‹¤-û~KRãÄžKÙç\ÿ&Õ8ïÆ\e:KÁ=PÔCæïvÎßô³ªþiuËbYè´^‹Çt6>élá)5©ÖúUXÜ©1F["Yv§:³¹tÁ>u-—ÖE.½ÑÖž[œæpu~¤Û…wËWÊ$-¬f8Õ·ÅlÒY5z¹ú$¥j¸õrˆÂGóÛ—=IYÏ„•\ŽŒÍ?­žã)«Ú®£¢é¸–~‘ÐäbåM:ŸÒ)òdê#äMB )íúç¼29*1þˆ¿LòBü¢@Šô!ñÇŒ+hV BýQÑpÞÌ©îrù|sr)Jx”^íÌr9Ê'—‰ñVR#u:Ë=²^U…¯…1’M+#{¦xÞæ’.’%}÷UQÒýèv’ÓªP“gpïrDtöè~ÎðW¤ mÉd†°;¦Dœ”–$Ô7û 5V ±]¢wL Û¿>î Ö/‘y2ŽE·ŸWtÛj¢"E÷Éã“[)+BíR‘›o†Ç»”mñuF[µŽ7›RC=¦ãÔ©ÅÇG©On¡»Ÿ)ÅG‹ºSž½Ma,ÛÍY]|Ͱµ«JOŠGçúŽŒ+u•fÿöñ*ùDÃaGùAß‹é&yøyç÷µÊ×U±r¬´©Z±ÒÛD¹¸ÿLÍI®Óï'ÀquoàÚîÂAMq®[¥ò/´+”¸– î—!´ @*Yp½EÛ9W—êy‡|Mv~ºŽÄ3Òu†ÆºL%AC={gpGàe²%©Ú:ó!ÈTATÎÊùä¿í­:ÅР×y©/¬F¦Oª1Ú/°5s¨U¦ÓlÔ™oüÔj„Q1ø©µT'ÛCÞæGØ/Zþ­&¦‰¿±ñrZå9E»Ç\lõxÌæ~ 5Q—>uüÙ`@Jœ»ßŽÛýÂ0¼)‰¯+ Uê¬Î–Æ7«USãÁÐHôÓcO+_Sª-uËigöF–ZZ ÆN«ègÎÓì\_>Ãø×Œ»è~ÚùõUÚ©H->­¬ ™¿}v^@Âý¹b:Í<}ÅrÚ5D(ãìÕÃý¶?Â@3‡IuB¯Ù=JR­y÷ÐÔÖ?ûŠþP®F¿{ÑÊ5ÈÜꢕª¬ÁÒzNµþH1©Axl ,ÚˆÇ$)ÍìcôôÈø}…»išr CCâã.ªÏ×P¸_õ*W£¶¨eDqíà‰õE­ÕQ?ªCJã?3ß8"¼OºÿUî5R`&6¨Ñ¥ãì§”èRsš }†‚t„NA´œ<•`¢\W×ò¿Ãv«H¥{4­GèÛ4®©¿àÁ‹%œRØõr6Ðh?ÞR¨Þr6ˆ ðN´ôÒ×Í7z +‡þß—à‚fŸPÐ nP-gËV±vþ*¬äçPsªTb–^Ž±Ô³ÊãäU#=û¬´az¶Ò´dOJÍMêm©·‰õ,(¢!p¿CÍÑ[”õ±ãÜ"ÁJ1Úhr–THÔ6#éŽ3uj·Ø£Š¥–Æ‚•¬:Ý“£4—÷u¹ªK-¥ ”-TJÄÛ#Õˆ·ì,ßxÚ¨ÓõöS,ô“˜.âæÅeœKF{ ·ujÄ–€-FûÇt%ê-µŒ%ꀒ~ZI:nΨ2e±bÁˆ7-W®¦U3Ž«OÊÐ ]Ë4éz†bB{Сë1¤ëDHæ®F[ JSÒiQtÓQ„Sø©¦ŸV“26©ÊTÍ è³,hÕE 6(©Z*U£`›j‹::"ììKoŒ¯VL‡Œ¶¹ád5=ÐÎóÁFªúw¡9.í¡$=Ý8ë͹jF܃y’¾I…±«DŠMû-íËÊý›äÛh*}@b:ªéûËÊ|2a´Ý&në;¨Iû¡å¶ÂÔˆÎôxú&¥Þ²ÞÓæqN§e»hª»p<ªÌw«ú-šlÂì·D‰w—~ª_ާF¢S¬-‡EHÜWèI!Yj à:¡`q:3Ÿcµíz„š/ô¡‘£ö±zs7tÑ•œj(jY²¸C¤Î|—cß¼õOzËWlµ×xú:oFjRš!ÌjSù÷[èPèŸr®!ýœªwÿÃz&pé½C}žô-tQÏçI§zÞ%Gô¦DR ¨s{)G&F(c#Ô¤ê¤OÛ>l~˜[¨÷G*Ó¸ÓP¼Ãó.ÙdÎg×ãQÖ‰¼ÿ¡Gö/¬ë9uôÊÇYZÐ%c‹£¾ÃS¨wfÒƒÿþ(øSŽ« vúÌ´Í<Ÿ€v7ãl|Æs[¶;<[¨Â9{úÂÍØ±¬ŠYÑžÇ_æ7§8[I;„-±Œ¥×,ãþ¾7~_¯ó†³¢:àÎuZÏÈcÙáü@óçtuodÅîy›:ìÎÅ ÷KåüÔ“â”·ˆzבØMtœì®WŸ¦+(@%­»A‰èŽkêã5!ÂrS²6*I[`|&¡vÁÜØ¡$mWÒ7‹ŒSoÐjÒæ"˜2Ûã£V˜£UÓÆ}#ºDê­•úÁ[ Oª•ŒÞ:K-ƽn‘!î3È5ua„2”Z_WÝæß½$ …µ´:õÈœ±ñËOÃa¢ÛÙÅ!ÈI{ÂŒjÈp%¡ï@çóÏD½ë}’ÕÇXÛÀ `sÙq¡{’*”ýFÛ t)Yo?Ì3¨æ;•ݨc¤†”ª+~d«p)…BÞJFÖ ”º©Âòj*\ÇâR½ú[Llý(ï³…w€*ÜVs °ƒ¯)ãºdû­½µB¯F& “í¦‚Š¦H$í_V)¬³­JDgZSH$zÒîÊEÙôíŸ^ñxD;j´Óচ±_6¼èYKxDÂÜE]¨WŸ¤­TëÓô4!qb´öŸÔâýê¨ñ°³Õ¤³ê{¢¿¢.£W#/'Â.Q’ö¢¿·pks‡D$9þJá÷¤GÉêÀËÅ¥¢ŽˆµjH"e÷n=åø•Âºªá¼G1µ‡é{•r¶ÿ¡NÕ‡uóq?î‰z^Dâ"ïÇŒ:M½¯/©Ñzö{a“Ó<Ò6#Ê0e0³¾euíZtYȳå#éGçdÚ5é´uÑÌËõ“ágùèO>ŠÙÇ nÏ¿¡¡E$#Ü©Zãe6*UhÔÞEÌê]®z„På:SOã‘Ü©1m7áÌå¨}Öd}ÜìØÞr~Q{Õã³—Fóž¢^ÚÐ^Ÿ…ÓÆu·0ÂZbnßîK:;ÏÕ«qq‡}C-0º¶*IG˽ƒò+zç膳¾%dx•â­e-»ö—š>PÃæ¨Ñ£½ŸŠ˜Ã=¦­î]%Å #t;T)ŽzU™ê8J¶Ë-øBO£­Fõ1ÚSóI‘´´¬2E¶æ>âÙšH®xÏ­_ 'a´¿¤§”‰6ÔDœØ¹ž¹¤r.˜Åú$u _A×(½ÖI$鲤âPΖ&b¾ï% ií¸‹%ŧ4j•bªã&èIÄ›¶ŠM™é”ÕÙgH+ãr^)ŸF¤Ì¿;<8}oQgªŸHzÄ ÈþÀˆ®–Ãq¹°?FÛù0?öûq±ã»ñÊYßz%Ïòw’ŧ8Ç"Çô"Çò>•GOµpž¸ì÷T~*é”:¸Lÿ¸Õyo©é”ñôSƒÓ#‹ol©0Z“X_a×Ñ¿+2ŸËÆVAþ˜K[jñQ¦Âð OzÒeP3¶ªIʪé t ²—“ÿ’†Â¶ÖâÓºù(˜Cl'Y¡Y¾YMª³PM§Ñ²m»h‚õ¸õ°îÒI×[4Ðý§ì’õ*Ým,_öS”¼£È\Ä&YêZN³&Å5tì~Žcƒô“Ò,>Ú³Ø0qIÍüÌAŽTý|–ש¤¯‘ûÂB3î‚ÚÏ:dÕTs[²µMŠÁՇ̓£%‹ûX¾S>›¨fD(ƒ]]¯n²AM£% zh_ºßÔÿºõÿY¿ ƒ¤)¦Í”Ô¤ÓJú–KY›o&mQªÔŒÍJ5ƒñÍŒšý0'aò¡âÓ7$ÕPAX¶–µaãŠ-Õñd¿…Hç^!û‹WÈâ„u"= m"c£šŽâÝë0wF©nuÿÅûµ*M[AÜ6ÔŸõ}­Z©“‚£UP½\È÷§«ÞÅnÈà9õ"ƒ; Sšˆ[Ò©ÁI‘FÏ3gÔÆgÔ,ø}! ØÄ›N/¸Y-®Aï³_qm?‹³Õ%£>fœtÖ¸œ>Z’‚ãúß7T /åõý&ôÐ>Êt+²hO*íáÿáån<óPÀÖ..¢|xÂzÜÿs‡•xŠ?}ö–·ëu¿Ý’øMO}.=Ï|ðÑ—K xSj:Q{L{ã» ‹ºÕUÂWöÇUˆ®·òå…7 Ž—>£¤WÇŽ?ˆÖ­(Šj§~¹úÖþêÃzZ¸²ôl‡K!U6šA)Ë8eu÷)¹!¡ÆUH¨n.€¢^-R#„áÉ‹~ÂðbóÂ`ª%»B)Ÿ !)|£Okuß;8#²¸º!ôîÎ"†ö‡˜ˆbÙï±T{,[½~wÊ·šdþ¨ÙÒŒxUÿšzñ¬øè¦‡ö ¿ûÙ€š·ÜÿÓ–£? þÌvppisŸº8Ñ¿-F¤¹³šNf¹ýÚ#ØÉká¿ù³ïk¯‡‘ÈÅ?y•«¹JøkTˆÚÆ:dÙTsk*ciÒîw­U¡JñV„A_Œ•u£äÌù9P„ûý,Xî-ÉYG:5Ù€ySbœksG[Ë:”¦àú¹>ð[´/~<+–÷ó}hç¿ÀJŒ¶ÀŠöÌd<óêT/FëÕ?ÞEúƸª%< Y ­3DûŽéx\ÀŒ@ (ÅûKþá‹K”Sl7¸ª/i/:%œ×‚¾cq\ úŽ¥y»cõ5íŽ3¥Ý1JØÕ?øÙ­~½ÝA&Y€ÝñŽ×îXçµ;.…ÿ»cú5íÏ´¦vGâßÿïíŽ×üíŽÕÂîxú‚Ÿ1ùíŽ;…Ý‘éÿTmè/؆ßhw˜“‚mŽf¬ §Ÿ5qš¬‰^3HdÈ”`ªø\”÷Z0Eb{ÛßdÐj™ «¿-Z?´}áøk¢ÏdHg“!Òe 0ŽM “¡ŸkzÉ0æ{j¬×ÿɰÏÏdx?ÀdX畾~òñël†gƒm†Üº_c3Ä76µúÖý ›A×økl†}šÍ°ÓÏf¨ ²vŸÿí6êóÿÍ0õ|›áû`›áXÍÐý|›aE°ÍÛÄfØû?²æþoÛ ÓÏýV›¡×¹ÿÞfø¹k›amÍðñ~‹Í°á?ÿ½Íàñ³~²Fÿç¿´^ ²<µ¿ÅfHkÞfús Íðjm›áh°Íð^Í0¿6Èf'm†Äú@›!©¶‰Í@‹k6CTý/Ø ŸÚ Ëjù3jv«LëÄŽóÅÔü€Wï¿•7I¬vS, ôêCw)¼ûAY˜­bIÿ!KÍ}¼ Yt^_vS<‘ I=Ä×ø%ƒt–(_à‚ÓJG^#£&†Ÿ|ÄMB³P¯.è.Vá!¹oîl }¶Æß^Ëaõ*ÓáЬ’nÂHŽtY ûáR;-¬c´-‰áºÔÁíךÃ5ã.ö v«ÃŲ«d']îe´µˆ¡ý膊»›¶PY˸S("Û'Ýh,o ¾ŸÑþ.ÅBeú¶ ‹«LßoHï%†!ñÆUÑ¢ë)M¼ç¿<Ò‹by$ówÞ.µÑ6›û];Eô¬CÞÏ1ÚhÒÛV|ÂÏ óæy*HT‚÷òÌhÊ# piÚŽZаç4ÛnnXö®/£ “•‹yjÖÖ‘á[ÛÜl8ÁÜ{ë¾°’ûz˜£„iNvAÜ &"»wˆOF–ÝâH­.¹ÜjþOÞ$tÑù» ‚–µ%Eç$i«]{T#ªåŒ%=¼~i¤~íÒog¼f±æoÑ’J®L7¯+¹kn#xð.b7ÓwÇ‚ÇïÈØ’:jгÍO¼|¼e‹Ri´óüåž8ϲ¯=ž¥:¥¾ÕqK8²j˜nÙWtaÙãRñ¥Â þlA¤ÕÕ?škކèÕ9…aá] ÒXv‹kºWcýûC^œˆ¾9ñêýæž ~ê› %Kt¢ô®Œj󤫔«Š{l[…ù\Ù®9ßõ!‘km-^i´ÞH¼„ò*“­÷‹eöãêSò3j×w] ìOé¢ÅYpXص,TÔÞ¸7HßÏrS¢Œ’¾ "ðŸ‘e-„Þp¿ª\ÄûÏ«;³=b³¦Û;™g£ý&ºâгnxx 4¢+ïwà±ëø}ôµ[}{šø@Ž|ÆåE¥\À䃥³k¥—ÇïVöÉ”µ/k-R± Ìc² ¿PxNͰ)%U¼<´I´6*¨3ÚÆ«7Y6Ø©Êv •m[^¤…±W˜-b­Ÿ²eãBTKùÀNÔ7+wÿh;À4 £-¶½Wµ"ƒH¥µlO*M\å²ùF¬Q&–0I*YüÏxV²'¯¥¤oRù 6Ý&nÿ«-5”›h¿ËzþêÓXúF[ÎÆžé%ª®ÅW/ UªCL%±•ª¥$äckãï{NÚd|œÖo³î¤Ó£Å‘Î7SµÞ‡«}ïc*¡ÍÖÑ K\Þ|É#o+Þ4Å‘´q’#ýhŠÇRâ±”;ë¢96Ö½1ôq{¹ˆ“q©U‡e«ÃtT,Ñ£ðgË<%ðáýÍû6òg.ŠcW]ÿÓõVw(%8}cüIãÊÊ.Um鈰ï¿m˜”âÙ–Ì1¡ðœ3 ¡”JÕ´1ä¸uoMþn´èGãWå/Få‚C›Ä‹ÅÊ"r*ÿ~úµ*’–}*d¸5~}2·lýi³¤ÊAãN³£ºòL¸õb·Ø Jújëîå“%‘Î¥)Þü¢y­Å«»W¥0[gµõ».öÃè•ë„+ßÓ×=Gb?2Ú;Ñ4àd²f4Wï*þб­‰È ^C딥@±í(u¯2Ž’§³BF-Q>VÅïbûQÔ¿Zz\E|zÉâvâ›æxÝ-gòl²G¬·ÄÞzÌ;ª«=– ãR–Í“—PY]ag9&zâ?V¶ñƒ)jñƉUü•f ©^h)vý.ûÍòÝiö£¥'Ž|§Ž°/sЭ#5­v+eüxi,k•>~ .þHå(Å~6öqñÉ!{C"ˆÓÕžÊeÅ·|UM«­-]b}SI¼Éf´=ÝŠ>’ uXŽ ùáå»"z=‹W;L[!Œ ø¸krzzºR¯ðŽ—Î)?+kjéƒån*ÄDÅï™QâX¥Š;ð$ŠâÃ.ãªÛh³‚âǃƒB• ›XR¥ôPO–š*ÓZaiõ—7í¼K‡µýø¦¶ÿH´\ñ mÞz.Tù^DüËÚGÿ5$ÌH†X¾ü‡—?}™³²w¤åu¤'~X=µ½¡ÙZ˜¾)ÅQ¼qŠŠ¤˜Ž&ÇfØ<ÕÅÙ7’®5î¿f‹ò}JôC·%w¥ÂóÖ)SœóÇñ‚2IG'Mrf£æ>º¬ MX4QÉØ¨ZV[‹×†(–MFÛ"ú¬xm(Œ6bQd¬UG¬ß¬š×oé™±‘‚¿~++±á·ü¸ó™Q0,Å÷JKÐ5ßX5bÍQº=\I߈ÓÁˆ¡ã^En­š´:¶•—?Z6®À+ÍÑqå×áa«­WºWB©=­2mæW|º¤“ʾQõAG5±_\stéwâ긊áñÕÅm«FØù•Ãâ«ÿPù2Ý Wü­uÒjdÕZDk+k<.öêvŒ q,ò8L›};ªìü±Q[œ'þ‡¹ÍT‹‘;«•“—.ŠïŒapq²/};Xœªì1.§ÏºBø{Éñìö¼ž¼…ŒéɃùÔ'…ki…Üü ýЂS<üå*tRª#ãhªó–ÉÔ¦­¥fiŽLq¤oMIMuNÎ×é&Òü+²q ÅTo¯†úo?ª|´¤­:~Mµ2~ÍѱöÃK€n¢àl0¾OUÛܸó3ë…nü޲?¶:6}“µ¾Ë’%ÖÝ]b?Uø3tåò‘ï”ôÍUv¦ˆ§¬â#xSL««¸¾¦¯¥üƒÜÞ`?¼°íXÕŒ“‹½ýð£?ˆ¥Äy‰œ/Jé=ÒxÉ=ùë÷ISÐÌA#…„nžâÊ:½tÒº;F)Þ¬¬¡7¹W±>ˆ¡7ò«—pÏEKz ©ë¢c½ËÑÕvÇ;-{¶ÑÙÜ#+~…£å7G"”@ñí-ò±Õ á€!µûÅ‚ýÙomÜÉÛv7#糤œSôÅÞÞוõ‘ÜJyF§Ÿeü”YÈôB¦×SX©žm˜ë6å=)ö©&‘6i"ýWÄÖZcý¹‹â`‘n#<Á‡[ÙÉâeZk‘£_*’¹,Õ‘Rª#øŒ~ëL^©öOŽØ‘[H6-âæˆ¸%þ{QtôWÔ>öç¸ÃÊÇÊ‘+Öc:ÞGÉîQÍ!”+—N¹ps|4¾®°UÜEe«s®¶ŸZ’Ǻ'ÚyiM/g¬VöÅrµiÔ¶§öÖŽGÌ~`ÉgZ„ ŸÁÄkÜ;©í9ƒ¦Ç½¾Ÿ¢²ˆÑdËr”Äk ÕOd_\Äæäû}:B`Ú+¼J­º™ÂN‘…Má)'¯SÐK^k~Ó*Y(à‹²€?¼“žŸ’Ê»² E•¡•êûÁŠ*÷ÜE¼YÁsŽ‘+<ÛbdYFsYÒ¯³:Ñ[–ZlÅ'ê¢yý蘆°&„)´•V)p§½,k=r›I¶<Õ[χNQãQÛÈâ€õLf‘³Ç¡´yÚ°)zÇØF²Ÿ+”¤µ–ÖïÂÜcëC q¤rM¢™4±27™¿_ÓÆ髉KÄËŸáû)±š±JìnëåÎF%Y/wZúÀ®Î8Š=6YÐZ #"ýhì•¡ Guq‡{š6R[·»¸ƒR )^¥cÍX¡?¸ø‚X0 m†‡h!KÖ÷ ]“¹ë…@c¯À,B‹’ìˆx~’óËáË(/â3*#Öl^ò>LÃꪶR?Úò£{³²/öc²3oÛŒÌm€½ùÃˈM|eq)Ä1AªèÝúøÊÅx… ýW.”ÞB9Êë+¼óÙ°²×’ªQ.× (F%—NÆQŽ´”kÂÊÚ4™µRFyñÞ^¯|æ7pmáO\ÊËZÐL¡ÝMUS›[¸CúAÉNº×Çh»Ë[ä"Ä4"o¦tÇÇÖpPýÔdß’ä¶¼$y„¨ê×Ì@o˜–qŒ A9r=Läƒ'ɆZåˆÚ–¾Iù6³õ»pôÓ7W11Ù‘&ÚæÒ :ão¶+¿ õ‘‰B8F»ù¾=ËèåÆ]†à´µR×p9Ý7:K°Ì?€Û¹WV^ÖÚ¸ëÓR§¬Màbë¶gtZÊÓC¬W–¤9&^=r¦UÚ€ÍÖóz$ŠG'–´óÆ_Ã-Ÿy–t„\ˆÕ„¼Âqò ©e“ë~ši£Ï cVŽq;&ÞÜêÁ›œ±žÓ{8Ð…­z[U´»œfgm:ãó{RçvKqïÒFÄîŸîÜô/=¨³q—HM˜UЍ[¿›âêñÍ*Ђž ÿECOþ+Š«Iåe!BVܻ䂞<å~5`ÿíAß$ÏöÆ ¡öõ;´iúLbð3=üë¦!AŸ HÐ6QáZÄ>KÝ¥þƒÛ>•sòÞ©>÷ãÚLË-q¢ z*¢fûÔ7‡w#\6Ö?jМ³þ“u)ŸÊÉ:oÕpWùÍ7ó:Á[Ê9æHFiÉ£(´ïy÷‚‘e-âN é¥M ñ›×¡­Óüǘ+hÙd‘¥Õ27ße›¨Äº{(²Ç1DùôÛøÏ”TŠ7-¢M$ñÇøÕ#½Ù¦I03æWR`´ôÒ¥¸çjK¦œªÑÎ#÷5ÐHÖY¨éQwˆa{H›žÿ“E¾ë1Š|¯ë¶o´}÷ñçÜGÕŒ ÐÂ?‰`÷?Ä mϤǤ;\÷Q,‹Q¬Ž¨D•7òP®T~*n/;ž(!{‰ÖMV-¥®œ«œ}"ü""ÃÆ‹”ÿŠ õºù“`Õçº1x6_Ðd!•bá'>1½‰+DÑ6ªQJ¶}{í•Ô8=¢É{ÜÿÐŽÕêßý'7:}Òd¶¥SCP¬®\ LÉ™Ïok¶9x[³?ã‚T2.}ƒW;†¹ú]¡5Iyvgoë·Ôÿ«:ÖÖ}3õŠÊ¸|Ô·¾)¦$øò±/ƒ:±§9Æ·}+t¿ÍEÞµÔRÞôø88µîƒyóŽ:/ÿ³I:iéÀ€tNöø% £˜±ÜýO?ï3ž}ŠzÐ36œ-à5˜¶ˆùÁ?û?ðGz`°|€¿í1®êAR-šƒ1Ks_ˆ˜¥i0AÍ„íÊ¿5ùøGƒ-åæþ^õ× ²8Æÿ…DCÑjj›’!Ë bÛµ loüÛ›áF[™xúÌ!/ÛÍœê,.ò´õ’S'(`¨ÜùÞÏÄ´æšhÉ3ˆ•©ÜÜš¦áZ¸žïRMË#=n§‰Í?t6ha·Ã¿ÄøC ÿB3’Ô _¡u .4€)—³Ò¡®ý™0‚_•ÈmôÛC€ƒHªÝt–7oñÛp®E𬥛״Ð&ú\÷žõÍÚï>Ë -ŽPæ ®›Îúâ•lä#_½ˆ3î)˜ öò¯iL{ï²/´¬S)km‘À•ÿu Š¸õ£`Áv¿P þÂsŒFûC5¨¾ck|Âçvy'"]-kèµô¹–Î×ê_ø203ß9Ü6¹Öd]=¦]pÝâ=:ù…vôò¼æ™âLÔxð ïZ¿ròôHšÌO¯S“¢TS5=Úzå1"C$Õ2Ûñ¬ÑñuÇ#5þ¥ÕÓeIçÒ4ÿs+.û(ÔVRbÊ’œG¾gϨ5ë­IgCð€X˜Âêéf\5ŸF˜'Ò2ˆû¥™!´ŠÝ£d8aãñíAâ6:ÁíÔè§ ±8¼áî¯ø5ÊIzÑ™±ötù"»‡­¾ª+J‡+Õâϱ•“”±ŸNrèŸJžìü¬ŸÇw˜¾®»(¼Ó^$âFåÓØÊª«xŸœáîš–qVKo9oý6ÄÜOM?KãÇS£ÝéÒnŠ„¥-¯å~äÛ‰öâZó Žá!ô‘vˆÒÂ’b½²Ìü‡eW¨Ñ[Òó6GÈÉòƒìr9[Näùr5©NIŠTP ´;g§kôý:+Ñ™ßÿ€²Þýöܹ!“';; ‰ËÚÑ-úÚnq;¹mŽQÝ\}i4î²FÝ“ût£ØgЧž:9Fy”t*Û)Þž¾b•;ð÷![Šk«LNê|‹|«(¯Ò/§\f¯Xò£ëëÆ€o– jz¬ô8OÜEÑý£= <­Œ¶?ÔÆ1‰9Õôî¨wmTS÷A£í<ü…eÄ”µñ$EwUÂÄwD½“8Ê~ÀaN®^Z¡&u¡õÅŒ«H•9"Yne|œÆí?ŒAžßìÿ´õ¸ZÜ¥ŠVOב܆Ø+,!ÉJߪ*ßZù)ÉLRŠt~ÔŸÆkUSê“)RTªú¾Ö*½ÊÄÝøj¥…ÒX7ÆÜ^m9 —•Ö}zÛmŒåŒ„˜jÍU‹£TZÙ›Þ¥/ó´t¯‰o4·;<&þ`qUÿ´¢jxüÁÅ?ÅU¸?Q£vR|]¾,b«xŸ?ë6HßÕÒf¸šÔ½LßÍNé úr"äˆËE=@ÜH€®(§¬ Û¡D*}ªhAvZ¯å¢k#|eë>;XKܹ~”¸:zIkýß$®Î¼Q&®Î›¸'¸Ž"qíxÿôòr½ÄÚôÄõ²¯m›±@}66¡{UÞÎL¬¯þáG÷šÝØ,Ýk¥ðúÎ?üè^¢¤{iWÙg7ѽF‹'ÿÃîUÐØ<Ý+—Gj7z[ç=*—G¼/ 6Ú>ïÎ} ›þáÇûz¾;<\Ü”÷E—{m3»Sÿ€NÐ?ÕÈ1÷Õ³»—÷Õ¡;ó¾ønÞ×9æ}Q0ïë´?ïëŠZ¼×¯C¸Bð¾Dôï+*Ôo,ìª0¤Fû?óa3¼¯bæ} n†÷u`²—÷õyxvÄ͆Ï×?ØØ<ïës;Ý!Þ×ÔÆæy_ƒDtÞÛãÇûº¬óç}Ýåõ{\UŽ=^ޗѶÖÏï¢%ë‰ûµVr¿è•®<à~9ÖÓHêNºHô¯ˆOýk]V*•#F;}½¼ &–Q§|&"Þªêóõd¾XZÆ€Ðtʗ˾%Ë>Ñéê–*;ÓèayùÜοœ¼1%µ‘Òü&†×ñÝÍ0¼=A /ÒÚþO½ØÜS_5=µ¯1†•üT×-ÁVX£/ìRš—v´y^ؿҚã…m£Jiióyx2䀷Ãü<|*î ¢†¯lB ›ܧÌÔ°b·$†æÆ©òÛO)ÛVRFo+åJ9’îì¤;eË¥v3Ýsð=â‡Ñ=æ‡ñ?~Ýðã‡q ü°¶Ö¤Ø`Ð?q3mF°’õF‰Ôåeö+yb¡7µHú.Z‹,º{UÖaUÌ‚{åWLDÆÇãȼ¢qÅf‹Üöz'·†^LÍãóˆ1›§véùÉÎ gé|Œ±Eð4Ø.ri2Sì½¼±>^ÞØ¼ÇÝdê˜7yE½ì±¾J2·ºž•õ‹9/66C#ÛÉõXnÔ„MÀ’†$ ÛÅÖÝb­hún]]Ï eœÇ;™ ޝûœ—V¶¼£WsŽ’þ˜YöPGf–xKõkÕA¡‡±šq¬äaY.7Q kHó÷\Cž>Vù8–3Øëus$Ål£ºõôå ÑÍ–Fj%Ñs ej§;’tf§+±•ê6rC>^ÖÈ\(?ë Œ‡Ð®¤t…F’Š#={y9Uëhíi=Kù]˜È¥œË¿”DÇN gŠÃ¾¡‘—!§Qô¿ÐÃyât«oALã| 0®"µéØFë:Ä.Û†ñÝ 5ö-¶5®ãS«;T]CoU9Añ'e’V¦ƒ¹j#86²skæªqt5ºŸXZŽ*¿\u ãÜÜÈZtGŠ£Æù«®¡_Á[ƒ-N¤[ÇzJE1îÜÊ<¸Êo™Àviﲥ줶}I¤óýžÞ E$6¾>À¸ª¾5å\û*Û/•í‡Ê¯Ã•Ïb¿4Ú{kT¶!,äUö^*,l>E•å©Yu¥\­y¥Í¶MlÓ°¹Q›E‰;…Z‘¨nå²€òüQuhÅUij,6 ^O¯ñ‘Úr&Ñ5ÏV»Ø¢œ3›*Ú¸T¿i’3*Æ5‘Vçžä‰?¦üP<]”@•f²¡u£…ר}8“ûs¶WSV¯‚ñó‘ïT[—9ÈÝTö‘¨Ü@«m¬÷=³ø r2öÂXãã´Q#ž’8yEp墲"ìú„ãÎììĶ,Ù–;)¡ñ¬2PçÚ0Ûf9ç;)–´ 9EßZb\µ~vÝ‹$ôÜFa9ì,Í\>`œ=†"V§¬‰†K› §ú÷Cå•n*Æžª'¿ÚQ©ÊÞ¥QcÄåŠÖF'ãæ0 U¶•pîÑÊ'Ì‹c%Ø“•`O®ZUöÕšÙ£Q#ÈÑ‘y˜ê {ýøŒÈý[ÓÌ;½1#·¼ÐäbMŽž´òD“û«Hmüšδ­šU¬ÙR;)㦨U‹Lr,ÇÞ³­Ä§4Âo&á§÷w®\ÃvF¢»/PO™â¼»;³<(HOàMšäìÚ]cÓE©ë¹ HTøLåR²î¤°C”m¬2lgZR[I—B¶+D±[¿š«Èz®[Ù@ëÉÏË·­äê>I*¼*;ífA¹­Øè;Â[c|¼».BMUÙÖhsÊá¸XˆsI3õZ’UE1v7TÓš¹ôi'ÕAÇ•_…‡ñmëόߦ©uý&.M…c\eß$KI´Ê|z¢è­c5Dd¤u•¥gU_ð‘"«lÞIo¢$ÕU¾L7ÃÅ{Cø¥"~RE!A[å[T ‘ò’Ô=Ž‚â¨!aßy–×0¯»êcïå©;EïdR0søHÔ‰ÃGYH>>gß­¡Äá£ó‰ñìÞ=x=yc vÐeâð‘k1ªœ­ƒ×1ùxÁž)žm¡¥SEc“êœp·7M°SD™;¤88aDì+%‰}šº†Ò¡®d3TòJ±ÅÍGK:¨+×p2VrDÒúÐÝÔ<|®»Õ«…µ ÿ)ùÛ=€È1$MÌø[³‰K“¾MLùÌGð­°Þ2®zÃ[(²P£ì‡FŽU·ŠsA¬S×wo¼&^7iаC„ê›"4Ý×°Ë’`SÅ Ë8ßRÖP\\´K»Ô¢Ä¹AÌèòÒΪC”?=$àùQSPZ„”óËUN1zÀcÎt67Ô³­Ž™vôëLŒñ’q´ÜQtGqÎPa³Àí‘ÞLlãÀŒ+hÞqÆïý\>±üfëNúí¶äA•oÛ+&ùóéñC…P'£ö‹vín>öà?‰°·š=·5áêzû”qÕ‹ ¾DÊ “3»‰0;m„R¡T¢ærí$ájoͭᯬ¹\ócÙ†q%H>aŒñUýÉÆn*²b¦mÛ¹Ž³…Te7x›½VÙYû*Û"XÃhÐ…- •£¦Ù/&ÓN }–;X<Àr ²!Ù^ÑÙî{tW’ éBÙEˆš°÷X  |C:o¶²-É‘MÏ¢Bþ~Eeij ²]‹xH!¢I¢ ]¯6â!Ç# Ù}5Èý´H(®>7«ñ¨²†+?ãšÃ•ˆÞÂBÌQ‹åsÕ¡¹±j8W":£J¤ãZM¿ÎÆhçÖ/å*¨H-<^v"ݤ¿`v¢½18’cÊ&€FP¼xU3í§–‰#¦)XÚS$M$Ê×P©r»0òÉôÅ·¯$TÖVŽ6'Í~qɧZ"½•èæhN‡ûï2O]1¢WàÞÌûÂÓŒüÆyñI±Gqd"¹TI*ùü˜¦½‰ÕH ]“Õè© ŽEbfJãõi \ ‘?±q PlãäTWa3:w½ŸÄ¼ÑŒÂ P¸ìÛ½üCʺž\#iàöP™B"É"A¿NwW)"îª#Ò+ b‡pÒ£NÔ|¢9Þt‘BXÍáİð±ýØ”éHF¯ó¾›¼ÍÔNòçOväXZßQø`3Rå[XÎ.ûOšÉKâ2ЩÍ+?®…?Ò³”TfAÞÕ(Xôñ&³ é± £Œ¶ ÒΗ;,ÍÙE»bÄûôõd労íXc?ò©ùªV}ÜážÂêgFd'¥RH]³¤HnD=Ûè®Kæ¢Ú)´g£N¼"ö#ñÑÈ&;¢žOqîÆKxq¾žù¨{ê’¿)—•ýþ´6÷ÓÛéLcIîØFÞ˜(ÉRýÃË"ªñ•FQ•…̱&'ùµÜ·¸Ž7Šþ¿Ü[Þ\EˆAÙû{î×SïÖŸ?ùJe:Ùò…rÅy$¹ä<ÕèFÑïørÙ;0~‹žÇ­g½á7y]Cv,[þ’EI3 µ!˜m%;év£Mõ'RþQ)Ûø‡{{)9´&tCI¤ä@Uý]„àRŠJêräŒ8ªÄÃ=a¡µQ5<EôÊ åK1vc\õ5««ÑbBZ ZÝFg•ß„z#Û>”#ûÐë~Œ.ZVåØ4C³ŒP×ððŒyóòiÁ´ìüºßÀýß„ˆ¹Žß*¹˜ÒB£"cRíú#NX¹Ÿì%e¾ì7Ž=}n¸3r³sÕÕ¸K$œy™œJb2Ò'nþ|ÄÏ_“Ëhø˜Œ<@GìLzܽ]ã#òŒúFÿaã^“ ßB¶Æ IqZfߟ`0ïµ&Ëv´ ~æœoÁ4ó $+þ5cÉÚ&ʓؙÞd õ#hR²Z¼&i–¾dÉÚ”,ÉÑ|I{_<|àÕ`*¥Ì“J¹&±Y#ž?!bü¸°-eUZÏž[“ü›¿uM bkÎiò ×Õ+AÙp†Æe·-GôMb/¸N}'›óàº^úNè,1^›âþ·älžù·gó_tÂ’ã¥mò@ŠÂ£¬ª–ÌÍûÃý™›b ×ËÜìNÌÍ\™42®\ôŸ›_¨ ÖÚÃÃý¦ÂÎ "æÿæWÙ·è}Sa’¾9ž4}Ž·nÛÄSƒÿæ76R/è›ä•雃´9†VÖ”9JŒ3—ƒn¹¦Q]õ!Év—qU¶‘ÐmËýÙœù‚Íùá&¿wÇ…ùØœ!ÃC8ñùVÐቄäÚý-y#ÏljûKí–¿“@˜d1“ÌŸºø¯>-2©)ô>O tÔ_›PA÷ú³M‰*Ó#ÊyO„P§ËÚèG3ųCü&|Ç0!Ô7©d\qWˆßDÑ9™÷¼£ Ë˲ÝÙTžœW^r(gý/®M8óEÉõe¯VUEt;…Mëi]:!n»¶q÷[Èî8çëQ~,Ñꞯ9l¾CLâ5%Š^ùJ#Š~ÿ•6¿'‰¢ëùÙSæ bžÇ½[LÃôdpü¹?広Û1!ލ}©RÚoð^dÞ(OÅ\všØ£AìÑM^åÞ@ {#`þsc“9Ù§ƒ™ ‹ƒØ£76aUö ~¦½`rf¬"m.ôt˜ëÍËRog‹óç¿ö£_¾®cÝ“¸Ñ×êhJãò¾_û¦¢“á·óF_.ݨñGÛ~ÍüQÖ@®>_RHÿýR iU@½íŸØw_j’عž Ä¦züÒp‡ ?,}ÉÏuJ )%¤ …´RP &ø?ð˜¤ò’Bj8CÕ³QRH'úQH}sŽL!=õ•Ÿœ|ü ÁPÓìG$5ˆ×~ö¢ßkê|I$}Â/ ›ý+?ôIQXO½èã’>è% .iúWdýÌóÿÜOüé¤}¾ ‘pŽžd”Þò…÷¥D*ýŽH¥ÿö/Ã[_lB*µJçéﺚJ;£Xƒ32Ôõnc òÍšpJh æ”þ!¨Ú/z¡ §ô§`vÁIÉ)äWXl`¿ü¥SJ—Ì\ß~铿GHþ_ð52ý™S:Ø:dÅB£}Ê—Ôã<Ôyi¥ˆ°äê÷e`ãspƒl||ºcs@ÕXK¶PèiÔªs§|Ò(9¥\Ù_;Eo ý륕òõ'Oæçô Mh¥÷ jP§]p½sR;*ô ÅQ¹?¯´îD^©â•Fé.=z™'”>+b^©jéÂÔÒF²;èrìë•K::»·kJ-e’¥ò=Ó,’Vze€Ñv#õ$¯t3®ú–f?ÆIZéaI+-®Sû¯P,Nâ~»/îp¹¸ÿª—Wzq݆”#S$µô‹÷囈W*ߣ帱tåRU¥'\¹\y&œ(¥ïS‡kRìå5©Î¡/y’óÑV’]*éë}Og峨*¥1ª±‚w¿î>=üa/ èÄ ÝÖ¯CŒ¶Ôø š©“-u^¦©‘[8fÖ:Í3•‹Žá!jFu¯¯VBvñ°Ä‰¢®8WôÔ¬{ è'èÅ—¦'Ì]âO˜£âOˆ¿PÜ2¯RÑÿyxü…Å?‰'þ¦ÓÅè,÷/óP¤Ì‰b²|IŒZ\‹üi+Ɉߚ&ž\÷¬¿uÆùæù­òpàjo`+½G%ç›á·>|žz-.Áoü¬ßØÖk‚ßJšá·Òå^F[ó[éÝTæ·RÄ4~ë½>~k7Áoå»Mø­—™ßJÁhüV§?¿õSaâ­{Ư‹ü¤à·Šè ~kŒ?¿µ•x&Ûÿ™~¿ÕÕÓËo=ÕkXÛ› §vŽ>ß<¿õÔët‡ø­#Î7Ïo)¬¿kýø­-Bšç·ž†Þëkýø­u×ä·Ò+ýø­(GvÒEâ·ÞµQò[ér ¿Õ³Tù¬UU•}£WB6‰#Èüæóžä”ŒWÝ0åKâºêJ”ä ýIüžz9Wx€ ®kíÓͰVïõ±Vi‘ÿ§Þiî©5=EË&û÷«J‚Ÿjãjßdù]ºêÇums§—뺿y®«+¶Y®+U(⺞ê ™pýŸêC‡ïq]kŸjÂulöf®+I±—ëJŠ€¸®‹)£·-<ïãºÒ溲ÿ@®+ß#®+Ýc®+_ñãºÒ ?®+×6/ו”œ—뺘uHÁy/וýp]¥Áuå3וßÙ×UDÆÇuåÈx¹®içý¹®ôbוîy¶ÑóèÍPn8×ínÂu¹$¸®{/×µ»—ëÚ•¹®tSp]µär]éªäºÒ¡²>—ó"û|s\WŽ(s]…PmÛ®4ô!iØÌ\WzÐÇueí'¸®Áu¥£&\Wö9JúóçºÎ8ïÇu¥ÐÃXå‡8È£·\וZžkÈ“ÂÇ*Çr{½ ®ëj!tëOŸóçºp”ªîh\WºB\Wr‰ëjê@\W~ÖA!i\Wºòj-s]ÿê¥^–3וžõq]§r)?È¿”DÇN gŠÃ^~ž¹®G/ñœX.{ ¤:ï»U‹·äºr}áx¹®ÐzzTÙÖŸï<Èueß>®+2וުr‚ˆëÊIj†ë:cC!;÷_md®+=èåºÒ s]98~¹êèϹ¹šµè@ŽGóW]C¿Á\WY~XãºRp‚ëJ;øq]‡aˆÚù%‘ÎuA\Wº>L㺖píö+¸®}Î ®ë]縮wàºr&;Öžg®+­Ë£Ø×qCD7|\W:\W-âºR‰ו^ããºÞÅ™D×<[íôº¾„3›*q]éM’ëšÈu-ç Ûý¼—ëJ^cwvçLîÁÙ¾÷s]9΂ëJ1.sÁu%×Õ÷L0×UàãºR„%ו3Øy«ëJ g•Èu¥@;)–Äu¥èû¸®ÃuÄu¥°v–f®’ëu^p]#Ï ®ë¡s^®+ו+0¿Zr]#Îk\×ýç|\WöÀ\×ν.ç5®+ÀJ°'W­*»í¼f.DŸ×¸®tD\Wº×Ï|\Wzcו¼p]£Î ®+=iå'$וR¿&ê¼ëÚDQ°fKq줌›¢rT,2ɱ{϶ŸÒhÅ\Wz?s]Ï7ẞg®ëðŸ‰XDA:z±wãš—ëÊ5P@¢Âg*—’u'…¢lc•!¹®tÉËuµ\×ó‚ëÊ[Îä·­äê>I*¼*{í9ÅT‡#瀟ý¹®,ë6öËC ŠP\,Dƒ¹¤4®+¿ÖAQ\Wç9וޙëÊ)øy˜ÆuZkíyÁu]Ç’±ö¼ëJÏ ®+©!Áu¥¨cŽîùsZ%cŽn†‹÷†ðKEü¤Š"®ëy/ו 亮åúx”„}çqúµŸ=ÀuY¼“"%¸®$êÄu¥,$®+Ÿûq]é|b<;Äu%oÌu¥ƒÁºL\Wr‰ëJÁ^g?tIr])&BK§ŠÆ&Õ93Ì›&æºÒUÁu=/¸®ŽÖ¸®Ù5”u¥¢Ì\WÖ,‚ëÊÉXÉAH®+åÒ/s]¹e¬¦q]‡¤Ip]×riVã<“ò™à[a½¥q]9n¢ü¹®B‰k\×.ç¯Éu¥××uµWuו^Àu]w^ãºrÑ®¡¸H®+K$Q¯3ºL\WQþôx@r]éeÃ(-BÊùå*§ØÇu¥3âd‘Àˆ_çÔ(IÓÓrGuЮ+ëJÉuåâ·­¡âàºzßÏåËo¶î¤_æºrD‚¸®tMr])!D‚íÚ®\`×àºrØ^®«H¤ 2Ù9ÿÇÆ&\W®¹ÌuÕj®h eÍåšË6L³\×`‘Õ¸®\ÇÙBª²7œÓš‘ús^®+•é6Ýy×õ87ýf¿H®«‚©‚Šü¸®tN\׆sÍs]é¾ÇAw%ו.r]KÎûs]É«?וΛ­lÄuåŠVÏÂGþ~Ee\WY®Åu¥Ñ$Q^®+Ç# Ù}5ˆ¸®\}ˆë:Lqpõ¹YåȈG•5\‰øÉu­×„˜£Ë窣þœ?×µ^V¢¹ѯ³ýo%òO¹ÊÔ„ëJ7=וM€@®+—s]9ÄuF\W‘øÀ†J °O?®«7¡²¶r´9i‚ëZX‰â¾oÔ¸®üJâºR™k\W6DÈ/q]ù…vGF^ãºòù1M{ÿ2×U© ŽEÃ4®ëu‰¸®Rˆ~™ëꕘõ~óF3 7*@á²o÷ò)ëzr àºêYÑÓ¯Ós¾1ëª?Èu%=ê㺞àºÚ8œ(¶YØ~lÊu%£×™Rר5S;É_ו.K®«hd9<~Pá°…å,¹®]Îr]5ù‘\WJ*s]cÎq]cÎ ®k7ëzËÒÎs®+Ûv,‰‚ë*Ôü©s’ëZ~>€ëJ·›çº®äœ¡wJ®ëWו‚ ®+½D4²‚ëz /‘\Wù溒‡_Áu%o‚ëJáוñq]é~³\W!H~\×rÿòæ*âÇu¥ÞmS®+ÙòÍp]‡œ—\WÊå`®ëk®+Yþ’ëúõ¹f¹®<³­d'ݾ×µ›µ)וC»&וUõk*¼\WîÆ ®+©°*ñpOXh-æºò@ Cy¹®Ü™\×!çý¹®tÖ ×µð±&\WŠMó\W>â±`®kÏÇšp]9/×µÙÔ{¹®ä1˜ëJÂÂ\×o×U&Jr]ùŒ¹®¢­r¾y®«¨ ”9–Ókp]é–äºRHÌuå˜øq]y0ðZ\×î˹®Bˆ˜ëʃnÍp]¿/iÊuå¬ 2x=®ë¶’ßÎu]VòÛ¹®I%\WQžÌuÕ’ÌuíZÒ”ë*jWP²šãº~¾´)ו¾¡”kÒu¸®\•Ö³gÁu%ÿÍp]5yŵ¸®Ùç%וÄçš\Wlõãºóçº`®+cy¹®¹\—³Ylùáf¹®b 7ˆëú ÌG'®«o6Œ¸®b°¶Y®«}IS®+O‹I®ë°óÍq]'.i†ëJ^5®«˜cheÝI©a®+%• &tKr]}#Ä"ÙÄuå¸*ÛÌç¯Åu=R|]®+”ñØ q])®+ßå¸h\ׂóþ\W1’­q]å ws\פâ®+½ç¹®¬¸ØòCc ‡™•8fŸ oŽëJž›p]÷.þí\×òÅ\WŽü/r]Xü+¸®æó¾„rÞ7Ãu³Æ‚ë*'×Õ7©¤q]er])·–í¶Ò.XœW^®+gý3וŘ/J®«/{µªÒ וû¥‚ë*dwœ³Òu%€ëÊó5‡ÍwˆI¼¦\×ó^®ë¿¿Òæ÷4®+?{Ê|AÌóוÞÒ“EÀñç¼\W!ލC‡ù¸®t‘¹®<C\×a^®+K‡—ëʵ,ëÊ—‚¹®öE¿ë:iÑ5¹®RÓ4ËuíÚäU×ãºÖ>úÛ¹®ÛýÕ\WÎ Áue…êÇuzþš\×)r]}š²)×µç£×áºR iÂuýyáoáº~´ð¿ãº>¹°®+%äZ\×™ ›áºò\WÎÆf¸®¾9G?®«”Áu¥¦¹)×Õ½ )×Uä·?×Ujˆæ¸®¯.äº ¶‡?×5`v˜‡ø—lôçºvg®+GOr]Ûá}ió\× ~#×U¿à×r]9#›r]÷Ìÿ/¸®«æÿz®« H®« p]éR3\מó¯Ëuå<Ôy¹®ˆ¼Ô„ëú…å×p]/žB­:sÊ'’ëÊ•ýy溒þõr]ùúŠ ®k‘¥ ×µo0×µ³—ëúª—á:Ç{Ìu=û«¸®Ís]+×uØ’ŽÎ__ùu\×aÐÇ×ÕíÏu=ö \×7þ®ë×ÕñE£?×õž_Áu­äºÒΔ’ëZ«»×uºàºZê¬û4®+r(ßuÓ¸®[÷ ®«Xö{ÁC¼1þ{s‡¸ÃãâOG”«ú§˜ïzrñO°Ð[Xæ¡™‡‹™ò%ÝÑ5B2yæ·URy2™çšT‹¤eZQÐ&/Ïuo W§éíÝú!•®ûu¢ºJRjÖç>º«®„† W• ¾ë^¾ënÉw]!y®c¥{›ä»V4Ëwm %ßõù¾+„üz¾ë¬ÿ/ù®%ÿ5ßõ $ðÿœïJñý¿à»Þ‰û¿æ»úÿM™¬.»GªiÝ£ÔñÝ»(û+]a—Ž[kZš»&TÖ„ÆVÅî‹Ý]é uØ*~zü&ƒ§Æa¾C§¶èª´TGê; ×+£ôêHC‡áe”AÑax„2*BÙax¤2*RÕax”2*JÙ¥Ãð.ʨ.êÈèã•QÑŽ¥1Žù1Ž”˜1–7o¬¸tü¡é{¦LNOEŒ¢£.ˆM´ú`÷ÇÇýW]:÷⳯ºôuˆÓzX¢¿Ê¿,nÅù@ž…l'“fNX–E³bK+¿êfݽ´URò3Ô>ñÕ¥%•g:«I†Vé ê ¸‚ÚÊÌÈ¥:\9aj8°‡Ú® (”e»=è«VÖtƒˆm器Ûaˆ–´ªVL E½ŠIMj¸WýJ§«ó´ªTÒ땤†ÏMõZXh,"Kw—™~®<ÓÒZ³´Uu©ég¾Áÿ;ƒ×ënGL<­ªç(¦z™Ú™Iz%ýÇSóê|{®[‹£BSƒB2¿›óäij]:!}ïÓËvúÑZäWzêó¨´X˜b?°ä&uÔT59o@P!æßãúMSœQj£gªº‚6A÷Xºx,Q“S§x’»»·Mqþù«ûë‹£BBÌGì–vRGzŽÒ?»çÆcèM‚°ls¿ì|ËÞàñµ•QˆâµóûaÑ*S Uú…‘š9ÓW˜n’Tc?`yç}³“úMÖ½Qs¬Ð){”cvWM5û¶BA((qåsuŽâ³SœÎ;{iê4÷Ùò)Îv =ÓÝG óSœgæ#El¸Q§yæÒ÷fí[†ýÔš¦H‡X —›¢^îè«\0Ú×óž´QT¥âX—,Ô×T޹5)òbøD.Æh/ Òᄘ——ŒöghÏíÉw©™ÕEzÈyq-í 9ì§>Ô]MÕ«ÃÑ*™okáX¡,¯'ÃrWýB9FѤúHÊpÃŒ¿ß„&âA{E•é¨HÝiáT ç9f£:Z¯$R—ÌP§ÃÔ©VGf#øÖÖ…úŒ¶\ ÉTεÎTîˆæXìøÑ1å¸:ñ8bçÐS©ÚB1ÙÔád,ZV*mÐ݃“J‹z©I6ã;©ú°6ÖË-ö¸¬>Eñ¥ ЅΊm!ñÖ=†Á¥…Gh{®âò%O«#ûS”·ŠHîÎálö‹òfuò@u¢¼Åå–F[I oMÐU>r æ¿óGuÒvõÑŽèΈ²s±ÌçC}”m$ðêòíôÈ8}Ü)šß¤ÅÌaêTýö×^}õUåÓKß*ՕΰøãóC•㎨aËÙ–ògs±\˜ý”¥µúT§ÐÿsQ4Ú¾£òºda7†M2X+#âV:~£.§â žûƒ$ £õƒwŠºÇ«¼Yi;*‘ã•NƒÊ׿¨Q ¢õª¬Ñ‹íÈ𤋮<£W™ÊV¾8D[|*¬¥b§Ý¯ïì±Ö”¤ b#p£í3â}ˆMÁñê$£ÚZ»,!¢Â©§á‡¿ÃÇàU¤åŒ¶ø…Ðî$ÿ-«+ÅQ8LW†´VVéI%.§G`¿’|ít¢Z6¨-æ†L 3Õ¢›çHÚ€Nó»aW‰É‹†À´AYe 'y·oeyD¨Hr%„½ÚúÞ0œSÐÒ¸"iót·—´»Ù€VQÜSy q•·>WºZ«"D#óßÃeoÝI¿!ÆUßµ¡8Ê*YÅuTµ¬µ_´´*×Z œ{æ<óõž{œ5C„6[늾Q0­5æþüÃdê½üµ5ÛðêHb+ŽS'Çx õsõεuWŠR}?’÷€úB(Ê?\ˆ§Ô¶É÷ÆØ ßfŒ¦%O.T¦]õÌ]ê|¶OƒçÃÍ4âù/ {º!Ä/q±køXdTkž‹; ®á™~.{ç¬Öb†ò„PÁ¨÷P-ã÷,è_ØCÙ­&âwCrw§x¶ až …ëÜÚ›Ó‰øòö[ê€R˜Í‹`e¤§ÞEñ†ò‘QW·Ñ Â:¥$gGŒ‘ˆ½÷_Õöhß©¢¤‡ÜejÆ5l®nRŠW” Î{F@­_¡Ñã¡®÷xá?¯|É£p•%Ê|[ü~£½˜ÊmɤX]ÎÃ…ïú²?Ô}‚ò«…Û¥N4ÈŠ`P׳H´qÑâ R(¬´Û É׉J—¡ò+½Êk†„€‰mÃŒTUÒ×)Þv”7c7Ú:“T:äì6ÒõÊÚ«´llD…Ko; F?%* ÷¡¿³¿HÐnq„ ³€nœÛÀB­?ÅU†k™¹í z¡ ì´[¸jYG•Æ›gë¨ÒlŠìE•IZ§ˆ"6C’ªi…šÂWD•Y‚겪ËCˆØ{ÕÁ¿ë9ymÊýêË¿é“æˆEFUKøå­Vå¼[ëî’ÐQ‚\ËyKó‘ µÐ@òµoA\áí¨ÛºJˆZå$±s¬ØSÕ9¦—&jn»z3ËÙ)ó§ê–°5,m-Ô±wAÎ&y匷úëà“³§ #¶õ‘r–¾!·CÍXGr–2WçÍ4Ú? hU4æ~0Ôµ¬QZ¯ q¹¨OIA«6ÚM$ÿO±y Ià¬à±4èóv g H‹Œ•)3µƒë¯t½8í·Ýƒ¦Ä¡¦oQ‹7‡|ÿ‰¹³’´]ƒôQo5}‡bªp%ÿL-PLX*z[\ÃqV®ì﹜ZtÇÇ”xשz¹–šRÇ¡!õQ—Sûˆ ÉMUz ·SJ=7OÊAj dë½Û|3ÚahÔNñ'‹Ú—£Í ¤šlÖ݆–ñ' Ïûš¡û)åÉz´Æb{D£5¯VõÊîÊï *ï~7G˜²ì+jƒŒï :T¼2ìqnuî`´DÊÎ…,€õaé%V6jµý'DŒ®oæºÃÛ6 ×›½~ug±¨;¢ÞP™ÅÍ™™«ž¬1Z#“ÀLw®/›êË&ª/öA²¾l’5Eê ÚªRV–±úâ} ’<ÝwVPMáý_UNƒÒY˜&ÆÇh› ׃—x*”k݉w©Úé(–C•[ÇFº”ÇP.«¦•®ìË\G¶‹­ªÔE\GªšÖ‘®#”óö;½ud™:”ëˆuÄ´RV“Ñw©-*È6s"œ†”ól\A6¡B»ËUÓ&ælŠ·%Þ„úñú}¨ŸÉú±FÔQ7ëEޝ^ˆæ:}“Â9çÚêW/ZˆÌuñΈ¯AäbˆÑµÆú(#­]hggúg•ç •ßÂ\- ù²h|çrX KÒFÅžËJ÷+)2ï°}B}›²IßémrÎE³O‹ m€%Å]§ ¡ñ©Ù›Yl6ˆÍF› ½¶ÉFÍ6™íµMü “ÙBpŒ+xõÉî;kHxØ«Ê4¥µ&<´Wº«ÛOÔNóít;¤%„‡=Æ®á«ühHk÷¼áêнú(7ßB^šïÙ,/ô´ó§ß{åe•·ífy wh¸'ûä%;H^Ú¤¼dk ÷F!/pCêFÌâ!˜Ï¥À<ݬÀüŽæ‘F_‹½QèÒr…Sïú@JÌq´×µBL8BZ»>¢§ÒYq–гZ->¤)Îã0³PgIq&VL5®Ù?øgµk2ÎÐç)AŸç…ÑÈ2®Ójç–/`è>ñ˜1ƒJ~(Ê‹vçfO?eµóÏ|{Úý–ž$ Ï¨`°}M¢WyÅ8`1uëßÁ¡ú€Þ]c|wÕx’çFÐàüWᎨã­ã/ðx¯upˆùé7­{bÂV‘Çø”K…g\wÀ×ÅÄ.¡–Óê8ƒr0,5ê…r„n­q¤Ez.w˜»o­¼u·õ›ºØƒÊdýï °â[Ì £´8'öÕ Òß«ãºX¿jYùUèûÃfN*:rY-^k=cT&”%Še-ÙrD‰ø°; e†ÁÙýàZ¤Ÿ½tAÕ9?w•Ö˜ˆ´ŸÚž Œ¿mH†õP2PÑïÈ’šœ=woO¼ªˆS¿ç¾8ú¼”ºÚ˜e•:ã͆IËQåÈd¥ÊY‹ÌTNV~§GlÊÊ*.Þd°~m,5 +Sé¸Ô°oXˆN¢Ÿw ®Â9…b!ÇÙR•c–Õ®¤Úþ™#Êу²vÄu<ØÝhýºNɨC[IþÒ Vj¢‰ 5£Î‘¡¤Ôôв2²è­_=o=ƒ®=Ïæó%ÙuŒ·l)«&mQ£W“jú1èÔWÖ„Véy<^Ù–^§LÓ‡™êÉJ²¡ìIîÌóÖƒ1Ž„ÅT[ÊW<¦-©ð5½ÖRùu¨r",©®*6±Ô…eÔYÝJÆVçÛû‘á¿”÷©SŠ7W™6‰>ì~~£e»ÑG*Õ´-·úv2·¡Ûá5cc•iƒðºŽ–<¯ª´™¹ý€¥·j©ˆÿÁÜcŽj¥ ‰Bm|·Þµ³= ¼žiðu~9·AÍØ¨&F£ÛÑEU<¤ei§¾MC„D¹êÈ/Þ¨N¿K5Q)£ê¡ï¡XªÓQ5LMßû"i-êŸR|HI_­d”C;ãYú†ÎŽørtœÂè«LT~º¹Ý';ŸäZ§\šf´Ñ‚†PVÒ¸^K:l»âEÃoµ ‹¸ô¸XcáÂй—>U·—#Bcì%©Ôh+hA›¢2ÎÀðWzœÖbpLò¼0 •'¾º(T©¶:[ß„2).uŒØÞúUCì!J¾bZ‰˜«Kì±ltž¼È_5CÆ•*£}q¸N'`Œpb5•£²”ó\º½é_ÞÖ÷Õ´Ý™*ý2žßq ù5"Šiݧò%º{»ÑŽ(˹dO5Ú©H×A´ëJ¥ÒÕ±ÝÌ DÊýáeõmòçXÜBw¸Ò‰¶ß~ø‡—Í¡s^Ž#µ²å¯ÞKeò-0¿]M¤AÓv˜;4Vú×'´xüä}.d ¤e3±Ða]*Õ¤ õÏ"æöeϰø~Vr%VͧAè£þIQOq~úȨP¬ì½bšÑ6„|×B®”]iÅ´íP´uxùSÉ\‡x¬ŒbrŸšÄeç cqE×uQµÔªÛÉ£ý.f¤‚óiú’—(Ï«0y¯dl·ì¾nBއ¢&ÑϨ@=ÒD¿B}¾Æ¯¾flQÖS£TÔŸsügE7“ëYò½ Uyp4äqœŽŠÿ¬°5Såðdá!GÄ1fUAŸ?n§„6 ÿÓk<—¾Åh5±P¡î¢Û”ç˜  èåñèS­'û¥ŠÍOž“êìác•-5a–Æ÷_aq ldü±¢±§0é…õd ]:¥ð¶ÂÔ?xW}†3ü”ù1Z-¶]uDü]8Ö=úÁlOš'Ò}Ëy„X¸Ÿ4"ûwhñ*ýÓ”4K[5k‡¸Øm 1šâMãjX„¼×cÙ+È´ÉYgBóý®Ø—Éfj‹JаgÃÞ£k•~ŠóÕ *P6ÒE¾)ÑOF»• <½õõ\vÐ&¤×º¦G-™³¨|2Ê£Ò÷„ƒÙª(ŠrDmW[RÆ6XwëÅ5ô:ØÍ­¼OÅîjN¯Uøª«OðU nk†°˜o Ù€œ¼K¥ã:B_—ÁE.Ç$*5oÙ Y>¸ýŠÿ‡ÛYÂQ¦êí§Œvúj]}Ú)fì4 ª¾+õ ÇçÓ+Ôg9Ñ%Êà²Çe›¢|¡®à,:ÃS‚¥|˜¬·vLÕ›;]|Œ®Ì0Úž#͸GOì'ËwÊ=3J*¯„ÆF׫ å+ µùð’W¸r ætD¬çÚÅ»[+ “œ}NA±È¸O3ßëXhPй(ö§âÙÂ-t rfK²lšHPˆãzWe¨@c›= MtÜíx3”•:çfTwGÿåL}‚—¸Ù³ái;Mk¹>º*Ä„óÓ•%ú›–íêCú‹V .AŸ´nàXxJIU¸:6°Mï~*Åùãù+žûyŸmªª©úìÕÖýXùäì­8p挺ê™v¿ëÉË™½º5e¨r9®ÂõœàOÏÕ%;7†RâÐâ¸"áxÝKÍm†"ƒ—í/P­dÆÚ°éú¹ÝSoiðÄ]œFÜo´'€´þßx†ˆ[ÇÖµq×jmFÛŸBe»øH¨Ö.Š5Šši‘i6´9í­ß6Ä68Æ#¿B›8)•ÚÄ}ç}m¢å.ÕR¾ì>Žy­i´ý»ÞãIu ¦Ét}$'ü¤+”[ÇòeƒÈ/JÑh[âךR}t$š„Âõ–í3à†2ö£Øm´ÓX ÊTµ¬¦VZíDfJu‰^ù“^`PÆÔâ (»§ªòd½9’ °¸%ª ù;•!î—±|lš¡|f´½EyÇÍå £¬§ø…zó­èÊ £É§ j?5iµ§þI¯<ªWS Ê$ƒ«M= ›Ï"ÊCÜ57m5ÏR Ê êÄHîêŠP æjÔ±|^©ü1’΋ôê’HeÓ+“ø`x$Âk¡$óI[ñ¶x¼uQ„Ù d¬vý…>ÉÉØêþAIÚê^‹Èº—YkžW‹W[÷“È*Ó ¥œ ~½¾LÁó_ÔUdœOÉîƒâpvÁÖ¹‹›”`¹ÇQ|hŠÈùôý”ùÑ@æSµ2ÚèÀ¡ÚEŒ¶6ô ¿sXíÏT—‡:æd&Ê·È¡j¼e½åÍD~‹ûT‘õdƒ ÅU$}£R¥<Æ•äß®\Zý5áYOÕ„}®WÇkr*Qú‹"=Eò­ƒ°ÕK÷[kÂ4ºG¸rÐz&,E S.Äp\@?"1Š&òq”H¯‘¯T9 ôêcR'C!ó óÍ^…Ü¡\*sgMŸ‹m¬l }@©sÍPƒ/SëÛ¹ûsŸ‘<)EM멎èá¼ Ñšvÿ }w4®åŽ­w ÒýñÝ£¼~ÎúùÑæâch¬bkjª}Su‘¾ò¼A¹¢ŽîSùµ>ì~½²}ÞÐýŠÉY–Ø–ó€z7'v²žµÑ84.SõsÔˆ?iƒm••5ú°å<Ò¶Pnj¢ÚznHHRíÜÏ;[¹ÂÕ¡sgªuª¿¿Jì(¥2®‚–ÏRö‡ ׫’ydÀNl±0ï|Ç ¹:R\›Æ“w]õ¸ßÇ£‰z·'¯»º–f4”c•ß…)0(#žToD®R’œF;\4<…fœUG›Ãþ¨G£Qé6('Ôä>•_éÃÆêËd‚ñ¢ƒFûjn£½ . ?àœà=¢>N$ø,ü®Ù˪é¬óÙ;8Á¤Ï‘Ü=aÓô/pj+Út§ÒŠ®Öù¯ÁLÔ„'µ+'<ãlrpX=‘ð·†°nî÷ʵtG«7—ðhµbª£m¾“œêvšÝU·PÍhß «ì¿£±§ gtrÕ°²E˜O… &Þrj.•ªÑPá¦óx² 3êD§Ž4[ô{eVÖgË¥»­ ¢Ç‰*Yf I†wx¼w4$¹¿ú§Å€^jF'©Æ~Êò®Z|¶jTO]÷ —‡Ï@õåá_i ê¥vµ$#€{ÔÔÅȬU• ƒ(¨Á•çBãN…-ÒÇÿP´©<Ùc1x,Nä›'êùDâFýPèv—«…ú°~)¾{Ljy·ÕZ‹èù¯ú µÜÍ´<Äf~pFÑú*îMñ‹Ñs#Ü)üÎõ¸äèÔ#BsÝÌÑKÎ~‰¢qñ>ކ{s¹7soo.s7z3·£õO‹ucU8•8e!3µ¸eÀG¢È½ÏU+çÞh=u1ÂxPê8º=!ÇãN Î8]´Ã—ªé¸'j­ˆ÷éÂoÝ/¨cõamü²òSŠä_›Ïʾ÷y³r™Ìʇ(+iJ¸¼Ýé§ÿlH·Pþm¹]íHsUøJ\"ñ{i”ŽåOÓEò—üÎM†ít—¹o× r¾Pý<ì.%}sÜaêõoª2m«…ÃD£í‹N7¬mš‘ËØ¢–rþ=¹™”¤uJúZ1š¯o¡ÉŽ{C.̱ QÒWí˜ ±AMZ©¥Ø†%è©F”šï÷,Ð{,¥ÎÆhìÀ¸z·ñ ÷Û/> N2ÚIú©çTNÃv¥Î“ìçþiFûÈ;/8E6|9û²œ¢c.œ¥¨(U-[Ôç¨öÅyâ¿T2lE94´Œ{¬¦ÕR‚%Z& xüÐ4ñzûEõ¼|D(¿üvñî‡>C†Fû@ÿww õ½»ŽG .¶¾czu˜iDÍXö€ìé-4C:R6ޤÖhÛC1Ù7âh­ 5¾[ ÉØ ç¥ ÉM`ËinkGÒ·“ö™¾Eb|·oòä*ÓÖ 7@ü\M¶óV%c¯uo”bÚ^eÚ1 ×Óþ*Ó!:ª²/–cq§vq_àpƒºxýÞÒjå{ꈩ»DÇ£Çz%Taßó¿°V´·Ö4Äî¥agë7u ZPyýÞäDg÷ƒ žéð9mþ9å{WKêÓ{mCÜEšp¬#þsÇò8ìš;ªD´jD¨µî5xí,âxÃ÷q'}™„’;ÉÃ9î#2¼½%Êgjºªá´»”…ž$“š;»U< ÂZÇþ1µ£IuÙf9_9X^¸1 ¦’u0ze4êð'ض…Èrd¡9ÃÝFÛ–OþþìuƒÝº¯Xª«L{P6š-gçh›Ö”©æ_ÈT³/Sõ û¾^¦~²f1|Þ¯|?¿ù“˜EÉÜuR\$èëW=b>Qk´#tš¹O—ÇU¸¿U“ÛÒ*“m1Gs%ÅVI*‡z¾N„mÿM„mˆð-ˆðýð9¤ \”…îJ †G96.Båyâ°R&;Gï“ZÑ–BÓÒF)Ò韥ì3}Æ"ÝDz#‹ô“HoDwˆE Íæ ,Ò$Ün¸fb¶6›˜Ð&‰£J='f+3©ªÁó‰´ò³q±ÜßÈOŽy]ëâ’*ÓÙ³¨èJ±³ÊT{ì<û+cg©ü÷qv†NW¾7®h¤}‹¾ñ å žt™œE4ônô]mHWh©Üóß=B}°»a{6¢öÏ’††ÔÑTý–[<²-w˜ê­µQ°>¢˜ùΟ״bѯWÓ%çzÊdkm¢Â3—b>\eª­¼¤B:…#‡~)égK õöí¥Ô¿®ŸŸ¬Àj–ÜÂKx¨! ÈÒÅ~Ñ|:±JºS>Mß*˜œ4¾¢ÀH?®&eò#é´îíÃcµøšë¶L¶;LAš©¦ÓjúYþ4ÍH˜j¼¯r?I6´ét¼éìü>x‡ý@•鸈4ÇɼF±8és†t§jêE¤D*£õÜ£V.wšÎ*û¬»YÒ~|úé5éP|RMá5ý4^ƒ°(=M‡nBÊMHÎiæwËÀ6^KÁT£R¼œè¸:’Â1pÝ'¶N1U#xú"H5*Kª>âlµgY”8ÅÃG¾S‹OÓÇIKx¨B&+õÊ÷—,gñÒ#Y”ÖKY‡ãEU FÂ1Az¼´N£íU/¥HÇÖßø)Y¢)¤3Ê÷ˆ7½™„Ò8ât£Õ¶L5ó?ô$ïYL)soe™IMyá¨)Î`­÷|@®9ÂêÖ{ªÕ0\°ü8õ6ÙúûüýOŸ\çï#ü6ÌC$M¾*|¼ìFj^ÿD^eRÒ…¹Gêì4}÷ §‘œ-ÉdçAø{`ªûq”ëQíýævC7R2Q4‰Mظ«qAdŠÑ3`?¥¬… ±÷ 8„SyñµöüZÒŒ(‡ì>soÄ£t'óeÄQoFÈñ IR©*­Åu-Œ6DDçýʾ¨œæ¼c}Z^§Y3lDœ!~H¹½F‡>šù^Úɱs´a×®P†HfCÇ!4ä?I÷Ý`­xa N•T`9ˆá¼ÿØ9Dºž[ö–íùËÒŽ:Ä÷}§‡ë–Žè!ºP]M‹NBrËN†ràßÀ=†N†ïHôiÕÉPTw´†‰aÆN†@'àb»N†ãÀ>à ´=®Ý€kÀ>à`%°ˆIM›˜£Óý«_'Ãà%À ÌÆ}€):&C€;.@ à‡þ ÷"^ÀSÀ|`*0ˆÄw2³€D ÐÐwèb†ÆèbzS¶T¤âzZ'Ã`°è—Žx[K@ÿÉH§DŸi Ë€-À%`؈;ÐáA„¬ö5oÍ@šå@60ˆb€>#=@ à›9 ïO…s;æ£{€NÀÅ„ Œ3™’u#LãMi&]äJ„¤J´tt2Øàn‘Ç„×ùtÀŒòN3°Aâ[`‹ß±?Ž5@òŸfûa¡ž¶5@ø¾ã˜:]5Î÷¤žhþ~þ'ÐÂûaM ^xªyT?-ðúÚ@$ €ÿü háíùü¤dYëð"°PºJ‚ÎËuÀmÏu2ü$] ºçÏ# u÷›RuéÆM˜8eܦ‘c&˜FèFŒI1%¦éÒR&¤&'¤˜&¤éRM“ÒáŽI¯›fJ™¨›>~¼näÄ”¤„´4<1|Ì„„”û„ïRBòÄÔ´”‰É£MºIé!~&N0éRLSÆLÀÍÔ1©ð‘lÂqŠ)aÄ””1i&>Ò‰C„C¯×“šFuodNnVŒnpÌøœ<¸xlä˜ñ&ßcc&LJG´u‰ã'¦št²nxBâ8Ä?ÑûÖéƤ …×4SʤdWn]ڛРÀ7Àä-AÀð÷N†áÀ~ Ó[(  öv'ÃQ`ËÖN†Ìm¨¿ÀŒw:¾ ÞE}¶‘Û;â€ràmà[`Ø{ÐCÀmïw2Û–I™æÂœ…1™…[æe噋bÌù1ÈȤôñ¸V˜ùhLN<äåÌÂyVL^¾9fV~ÞœüÂy™3s³tº1¹¹YgæÆfæ=ƒË1ól&¼" ¿?Å’gΙ—3/k^~á£1™¹¹ù³2Í9ùy1s2sr‹t’LTx®ÀÂï6gâé˜<¼Õœ3?K†JaÎÎjÆvNÎG² c36Å[>E©É,*ÊŸ•“iΚíç'k¶ö¼÷ýæ[ bfçgñcHæ¬ì˜Y–ÂBJ¤ˆ{ z¿iaAÖ, ü ¾;^3'§°)ÉÎ,ÌœEQ£\ L¦ßó×JÿýÑ’o¾ŽjÿÅç Ð#ÌûMÏÏË)*"—ô¹=t£óÉv"Í0+f‰·cQ˜5æ«Vÿ|ýMÎñÎD \ _*œœ|–3oû¤[=«0¸£ QJ о^£÷£Tƒæà}³}§^]Î}‹f®S™û鸜¼Y¸RDúM727?“›¶b|R|½ «Ú0a§ÝD|šjvÎ|t cf>Ê ][n3)þ>›µGhŠkQV.U™YˆŸ×ìäœÕ¥>Z)'ƒ´!’­ë./'rùA¬g[æÍ{ÔoDÁwÌB†žï5í³³æää‘ÍFç 2©A!‹óÜ€˜óÍ÷úI^_þü¼ÆóAqà‘Œàˆˆ‹Í…OUÂŒNNòDÞ‰A£S˜3Ó‚v ? ™xCÊôúÔz)×MAP<šyš^ãm²3!²ÍG'8 e9ø%~wšæ¿OQÊšòóÿ7>ŸFÑ '˜O¢ýñö¢d[ KÎä–Lª.Óœ"-Ø´àân" ~ž›{3ωñuh*oðý0”€Yë1Ri5ñ„·Ðõ 7qidÆ!?3 u"?¹F_;ôD¾…kdøá,Ù8"´"½y¡KJpMé×éHúš‰)wìÉäÖñ:åºåŸè_ôòÑÞ ©©éI¦ÞÎv@ü†ø±h‹‘ÌkäE›Þ:!­ÇÄô´Xjäé˜ tằ‡}!Þ“œbJÅ3\Yå«ó ¨ú"N×}>¨||U3'°ž^ë/¸<¯r¢Í8E•Ï÷™—×_¢ Λ•%Ú”`û…¿Ä`uðëgsÏÿ¦úÙ\ul¢£®Q]ü›Ë€÷gÊ>Ê,m|…cYÇsx`.XàipCÞ'#®õJãíËÇbÐâsB‚¥ÄïùÌà1·¢"ø¹Y Å÷:åKï ˜i2˜ÓôÚ l2Øjœ10žt,Z¾²ñŽHëR-3¥ö×É&‚cÕD÷±G6œ¥G?9m*Ȉ—9&—ç}´lNaþ¼²iYS…”øÛ>éd茴ãa~îx¿ãîb^·;M@->ÑÉðÔéN†¾p#<'Ôÿu†gRSÒGë†OL-f»xö55a²I—š>u~x”®€‡³h€Ÿ}µö>.W‘‹N˜Y”?Mua~ j¸*£µoŸ82mzJÚô‘ãF¥êzÁ`È´äšgAÅäd>œ¥ëEø¨…³®×üÌ…4²Q¤ëeÉËÑgæ<œÅƒ¤ÍêÇ)™…ÔˤÅ9†»TÂ6à!ÍîÅøBi­ë•›c6çf]'Ðÿ"|ÿ0ñмü\ô\¹ãØ«0kÚ¶~}‘Öø>y¹Y ÍEä†ãu½æeÎÊÊÏEÆä±K)çƒì¬…Ó-èºr‡òã<9!£øKéÓ:£czOŒ?fx ôHL/1$Ã3Žy; ÿŽ)Ìz˜‡ý5ßÞZ@|#—™˜<=9aÄt]RRBòô¤„©ÓÑ0Išž6š¦1ÑÖÊ;~çº}Ïv6| ¾Î¥Àƒ€6@$Æ‘Îê윋гó„ÐHR'˜‹ÄÜç¼"1”Y)®Ï““سd7³@L’ÆõÏe ¦Åj:zšÉéiâɉLA•8qÂdák4 ¡„ñcRaCÐ$éø“ÆL c¾ŸÄs§Ó¡'aJMŸÊQÌÇOžNÏNGP#éÂô‰Éic&NHÕ”`Ú4ú¥·& Mbʵ”àﻓ Û7å±?§:ÚN‰k·Àíqª©_B_\Çk¦$¤Lh.£`5Ž˜³Ðï˜shÄý’Æ$NŸbJ§ëe†Ê±äÌîÅuž£Í©éãL)LãµÌImJ7]µ2K‡f»m{‘®·¥¨°7::…Y½©×B£ŽÏ;žÖ¯¯>v€jà3꘩ºñ F¥'Œ2é¨çR”eª…‰W&¤¤šÒtct¹¹³ ° ©:ùÖ»¡S2›‹M!ªDè/üµ¦ŸðÐvÆàôöKþµ 8Óÿ¶‡ÿŸü…´hihÕF§‹ÔÝÐì?±‡Ãua~ÿ¡¸¼bí¯®5ûk¥ þ£,Ãtz„ÐB×’öÔ…Ê;7âý]ò\òèJt%—<·ét%møÜ÷¯+é¢û½®'b×UwÕ#|uÔ ÐÑâÂÌnnÉoiÇ©h¯ë ‹‚¯Nx_+Ĭ bÑ÷ºêºÈ#cÐBç k¾#ͽ©Iêtœjò©g­‚ÂðO9åMgyd ºCˆºæ;ò=ÿT».ÐÖØÅð8ÐÌ‹ìb¨Šnèb¸<Ú¾‹¡øèÚ¡‹á•Ž] ý üZÿ 2ƒÎÍÀ÷òxªÄ2@‘מ’îs@ܯÄT™†×€}À)yíÿUšþ_ã¿;åkéIiYðq¡˜/óM]û/DBû+ȵfæÕ剃¢¡AþûÄõí×À=÷ŒÏœ9 »‡³sæ>’;//¿à…EfËü ]”j³ÈiŽ{%<™N–(1 h­ÈB“hÔëðÎ=ç>ê½C†/…Àl,2iMØ‚4²„ësï|‹™&Ù½Ssü(ÌÚœYlæìÙ…H‚6JÇ3›d+•QgZ˜5K›Ax'§ý¦‹ì¬ìœÜÙZ”ÐÊIŠŠ6F'©¸ºdJ_wŽggå „ÂÓ"1žÑ"§‘st#¼‘…'f"ÆÌ´=*&F™,Cy läY…ùEE½d¹9y%§fÔ2sLQà© Ç;›–O³™y~ìæÃˆ|nî®. }Y‘C¾Xr~"Ì,ŽqNbr³æ˜c88^^JWVÖ#ºt“{1}DЂ^FéBfæ?‚—ä TÁ-à)lAíô¡$º§È¶Ù—³8s~>ñ{åÜ2ui½%>ÜY [ægæäò,ÆHmVP#ñø.•Œ–o|‡( ,ÒÔáQë¬"%aRÔ˜ÙD™aBW!Äa>BH̆œ s&dž¢=>k>îôå°‹Í›•]˜ŸGÄVy£_Lvf®Ùï”x(fÝxdN³Á%æ›ógåçÆÌ¦9 Á)Ë4Cd‹Ú–˜:ÆÇ8òK½ ù6MB²Âô¢pµ $¯YE4 “ô3‡ºxGf^þì¦OÌò¿X”›o•,?OÊ‘¨Z=3`ˆiVæ< “Iœ¾è¦åÌc. Né&о‹¼¨H—„tS—W›7syYæù…è’¡©¹Àó 'i Z7qæ\šËgâܼ|s–ÈkšËb¾f2ŠÞ™0›è~9^m›Z8O°0øŒ¸s–r·°–¤‘:‹*ñLb § 5„Ò£é¡Qj³u©2Û¨ŽÉ·y+!zÖ…E(¢ê‰´hO{W’¬ÞºåM—¡·È.Y ˆÊJoG5Ì| ;m†ïº7 9™órr º› ã§‘lÅð€n‚È ž“'j ß¹%>‘ÉDÁ裗rE£aЂ¬,Vþ3ýE(6_ºü¡Ñ·ÙTÙƒÌÖÎ/2û^ŸS˜OÔs~L6nø%Ö/âhh. n>ÜI…ÔfÅL€Àp%B‘ÎFœR½5<)A³r³2i¬P6 SMÆLe(ç0™N…8‰EYó2 ²ó‰‘èK&7!ÁH‰¢D!8#rŠarT¦hƺrvŽež¤M†{X»Ä*Ó—¼Y4‰”+h“^…NÕ"¿0³ Û’ç‹’Ž8ڙȋ‚BšýŠÉÉŸeγS¢½ñk2¼tR]ÎÎ'–…ákqH±&ytÞÌü\T>Ñ0×â×ÀÉwn‡—_®cΪ{AVÌÔQ¹ï9ÛG7Oàû4Š–© …5ãK§»Ç(!I(÷Ì»óùSù„Æ‘£€ I[òeÖR`ŽÏ`É"ƒ'3è}Ò@È}”óUèiV!4þ›Eæ ©*‹aÞñl¿é^îZÞ’oÕÄœV("ÿZŸï-ø|ÁÔ.âë:__ÀÂâe?j÷µZÞœ à:+Ÿ×é¼<âLä÷ÃyZs”å³Ç4U0rT€ë³|uWSˆïóúŠkV&Uf?™3ñV–#´ÀE") "YŽOy¹Â×ð'?“~dœ©½|^sӧв-æÙ‚çì•áBmÚ·È;ò[Dƒ÷ÍL#œ½x“¡Ð_ºÉp p70¸(Ê€uÀ Æs“aÜ“@-P´«¿ÉpÐ<<,TàoÀ<·î!àð ûù&C'àv`6îÇÁä‹ÇM@)îQ•$í2³ùÅèŠßUê£hI>÷ÁtÈ%áobjLÂð1Ú¡ï:]ÔhÚMïç%Â"Õæé™l¼¦Êm°– šî´­j_" ¥ ñÏ㡺V­zÜ^$øKüäíE±­ÅE¸ƒnçÙ¬ÀLšEÝmI ÷VsÉw$-è¾N|µ ýñ`L /ñUD`8R>z³|ÀÂ(`»R÷Éf¤â+Êz˜McNc`àÏ/pîç¡7þ(dæ±´L½ïÌt}2/-‚¨&FñT`Leï‘ó.ðŽ Öâì\JbXê Äh¯Ógáí}îÌ]ƒŽmQ–ß)³åù´…­i&˜Yf~^ ²gœæYæ ‚¿Ûï´´nZ äwõTŒÜÝÊœ§ /ÅÀ‡ôIF§È™G°èaägÎöËfó–üˆ¬¥Âa‘ôòóäGyÒxí?guSÅ'JdNçÒJ0tEªéstOéÔÖ^šwŸzx8+írÔ îR@FZë¼µî÷EÈ9б­)&ôiëÓU¤‹†õLi4¡ÈÔIš¦šù 7-E‰#è­ÉZ-¾Æ*ùyY>¿Üá‚›?›bHž§—×Ó$Ü•»^謻sgß]”7W_÷Š»ûÞ»ûè¦ÉÍ^~wãîŽój ¾Àzƒ>(}BÑ£B½LM~îÓfy¿êé.o uâ™]Å_°r:$e‹ƒI>^C_ÓR£…")ŠÕIaD.çÑÀZ®.æÛ‹2h¶n&ÚMÝA™‘¸½É̸½è÷T/ùLHDn~þ#–-6œØkµ'1=ü9; UY?ëÑXÔ0Ùõ–£ä”;ZÅâ&Gò˜îÓ‰è´ÿÖ:953~Ì„q¦”˜áé£n½õV}‹ž“gA*É?g©öhŒPÐs ,¹:1· ›’LÂÇŸ;wŽ%É&+wNoÔQ]ß»ûßÝ7®—înÓxݘQ&¦˜|ùÃô¹¯Ž{ÍËŸm¡!q‡n¨¶PI¯û,³Šúë†Òo¯û¼Ë—¤'¦öê?ÞÔ»w°O(ƒ¡ÂõóíïÇžè{ ÿ¸£šY4+'§y|K„PHCšE×z±Ïƒˆ}ïÞ1cR'öŠësOÿ{zãJÿÞâúpS3wSÙmzÃwÞôÞÄÔ‘}úô‰ÃsOúî¸îÝæBžBÄéitÇ["i#ú¤ t¹Ws×é|L úKýš¹I/€W#Í™˜Ú78N}Eæ5wÝ—’>×½wݻͅìíöá^pPKà=׸‡Pz¥§6w3=µWBjâ˜1Í>8<©ß=÷6w'1ùZ7R¯çØø&â¦å% bú„1‰G˜†…D Õ .ˆŽè7(.>¸YFïóµ¦~ʂҤ°ñçïÍæ'‡3Ý=&e2½/®9_ZaöéÛ§Ù@dR¥¼™LùÿÇ¿ŠšºúV¿Óy`l:5Y Í:¿kþÇÓsòrnN§™ÒØ~d0ü*øÞ ^Ú~ªß?T o|âôÄ´û“Mt0!=É”2&‘ÓÆ$ñ¥Ä‰ãѧãä‰LiDܧcSjjÂ(" %NO?žœä„dS ‡’ M1"Þ84ÓxSòhúTŸMHMO1%Ñ83‚>9&1Èh^[ó‡;FNß瀟ðNц€.À­@,ÐH’ÿçé„쉖Òm#ÑBÞÓ®¨pCÐûO?vc“5µ~ËŸ·¬4‚Yн“úÜdÒVнt¢¿M¡2žòõ¿1δçÓ¤Ÿ| p· þÂdúÚÊk^dÐûÃe¸† øÿß oæZˆ®ù?ÿð‚]ÿ¿úfâî‡_‰æâx-ü–0-®•gZ´¿àwèýŽÃ~ºëÜûµa\ Áéiy2Ð]þ mæÚÿôÞÿ¦ÿàüoqc-}M9„¾¿ÿöÞÿ¦ÿkÉxk¿c­|¯%3׫¿¶j× ç×Ö;MŽ›“¯ß†?B¥¤Ÿ¥Ó‹Ç#µ5ËÈ/ɹÖfø·¤OIoG´™a + ÜÄ·ÝÚЋv¾ ½¾HW=çD*'þ:±áC€û€aÀp€Ø#j'Çã @2¢íÀd`*0 xx˜Ð@/cÌèkß¹M:R›C,{+¢A4"Ô+~° 9˜à1€¶¶YÐ:üem¶J'X ÝzžhªgÚ¥Š6¦Ü¼Ðn=¯´!ñ«m¨ñ@»jÒFz[Úpg»N¬VMûfì*€ÝÀ^`@;ÕÀa€–¥?ÐRø'Úæ  8оiß´ñwmp ¥²/´ÁE ¸ ÐîÊ I(-šhj ÐV[í€H =tº]hà ¸ èÜôîîîú}þÀ=À@`0¸ hOï‘Àh`,@û}ÓNÌ´¡P @[ M¦Ó€Ú‘d0˜ ̲¹@.Ц©…mM5 ]uhƒ{Ú¯f P<Ø€åmÆF[žÐN;«Úˆï `5ð°xX<l^6¯›€WÍÀmû@[¢½ÐF ´?ߎ±ÏQ°Ø ìöCÀÇ@5p8 h…“Ài€öŒªδ‡ï7€ø íºÏuÀàGà"P\€F€*(@›v·hcùÖí4߈ÚQ@'  Јnb€Û€îÀí•v'pp7Ðè ôîh§AÀà>`0 ý F£±Àx` ¤iÀd`*0 xx˜ÌfÓ¦N@60Èò€ 0ó…À"`1°(lÀr (V«€rà `5@»Î­žÖÏ€À+À&àU`3ð°x Ø ¼lÞx- Ø ìöûƒÀ!€vç©GcÀqà$pø¨Îgo'ðP œê€ ÀÀE ¸ 45<¡€h€Ö@ЈÚQ@'  Јnb€Û€îÀ@àNà.àn ÐèÜ C€û€aÀp`0 ŒÆ€d H&SiÀƒÀCÀ `&0˜d‡Ñ( ( 30X,K€à1À,J2`%° (žVOkguÀsÀàE`#ð ° xØ ¼lÞ¶ïÛ÷À. Ø ìöûƒÀ!àc 8 ŽÇ“Àià  8œ¾œÀw@-p¨.?zà2Ð4Ôð‡z `Z@; hD€.@W ¸ˆnºw=€;»€»>@_ ?p0Ðöè÷ÃZº0 ŒÆ€d H&SiÀƒÀCÀ `&0˜ds\ ( 30X,K€à1À,J2`%° (žVOkguÀsÀàE`#ð ° x ý ß¶o[w€íÀûÀ`Pìöû€ýÀAàð1P ŽÇ€ãÀIà4ðPœÎßNà; 8Ô€‹@=ph2TC=Ð0­  ´¢€N@ + ÜÄ·Ý;€ÀÀ]ÀÝ@ /и †÷ÀáÀ`$0 Œ&É@ L¦Ó€‡€ÀL`60Èæ¹@P†Óv¸(`!°X ,J€Ç°(Ê€•À* xX <¬žÖÏ€À+À&àU`3ð°x Ø ¼lÞv»€ `7°Øì‡€jà0p8N§/€à pøpßµÀ9 ¸üN»I£üË@ÐÑ è€h Dí€H =tº]hà ¸ èÜôîîîú}þÀ=À@`0¸ F#ÑÀX`<0HR€4`20˜<<Ìf³9@60Èò€ 0ó…À"`1°(lÀr (V«€rà `5ð°xX<l^6¯›€WÍÀÀà-`+ð°xØì*€ÝÀ^`°8>ªÃÀQàp8 œ¾j€3ÀYàÀ |Ôç€:àð#p¨. @#@¡€¾%­ÝòZ@; hD€.@W ¸ˆnºw=€;»€»>@_ ?p0 î†ÃÀH`40L’ ˜ L¦3€™Àl` Ìr< (ÌÀ|`!°X ,J€Ç°(Ê€•À* xX <¬žÖÏ€À+À&àU`3ð°x Ø ¼lÞv»€ `7°Øì‡€jà0p8N§/€à pøpßµÀ9 ¸ü\êË@ÐP‡?Ð-Јڑ@{  Ýº]…¾ˆnºw=€;»€»>íýÓ¸ †÷ÀáÀ`$0 Œ&É@ L¦Ó€‡€ÀL`60Èæ¹@Pf`>°X,–%Àc€ X”eÀJ`P<¬žÖÏë€ç€ À‹ÀFà톌ò6o[€·€­À;Àvà}`° ¨v{}À~à pø¨GcÀqà$pø¨Îgo'ðP œê€ ÀÀE ¸ 4 ¬…z `Z@; hD€.@W ¸ˆnºw=€;»€»>@_ ?p0 î†ÃÀH`40L’ ˜ L¦3€™Àl` Ìr< (ÌÀ|`!°X ,J€Ç°(Ê€•À* xX <¬žÖÏ€À+À&àU`3ð°x Ø ¼lÞv»€ `7°Øì‡€jà0p8N§/€à pø ])¿js@pø¸Ô— ‘U[£ü=Ð0§ˆÚ‘@{ ètºÑÀ-@ pиèÜ ÜÜ ôúý{€À `p0 ŒF£±Àx` ¤iÀd`*0 xx˜Ìh±•9@60Èh™$âLf`>°X,–%Àc€ X”eÀJ`Uk1¾G“îkÒ}]ºoHw›t·K÷éîîNéî’î>é~&Ý/¥ûtiÌŒþúIwŒtS‚ÜÔ w©t«¤»_º¤{PºI÷t¿—îéþ ]§àøJw¿t?’î?¥[-ÝÓÒ n˜tõÒ —n é¤ÛJº­¥ÛFº‘Ò½Aºí¥ÛAºQÒí(Ý.Ò½Qº]¥{“t£¥{³to‘n7éÆH÷6év—îíÒ½Cº½¥;@º÷H÷^éÆKwt‡Hw”tGKwŒt§Kw†t3¥;Sº³¤»Iº›¥«»U8!Ò •n¸t[H·µtÛH7Bºm¥ÛNº‘Ò½Aºí¥ÛAº¥ÛIº7J·«to’n´to–î­Ò½MºÝ¥{‡t{H÷.éö’îÝÒí-Ý>Ò“n?éö—n¼tMÒ)ÝQÒ-Ý1ÒM•nštÓ¥;YºS¤;Uº÷KwštîƒÒÍîCÒ.ÝÒÍ”îLéÎ’îléfIwŽt–n¶ts¤;WºH7Wºó¤›'Ý|éH÷Ò-”n‘tÍÒµHw¾tHw¡t•î"éþIº‹¥[,Ý%Ò]*Ýré>!ÝÕÒ­–îaéÕäî6áv”n'év–îï¤{t‡Hw¶t³¤;WºH÷¸tOH—'®ð"ÝPé†IW/Ýpé¶nKé¤ÛJº­¥ÛFºÒm+ÝvÒ5J7Rº7H·½t;H7Jº¥ÛIº¥ÛEº7J·«to’n´to–î-Òí&ÝéÞ*ÝßI·»tgH7Sº3¥;Kº³¥›%Ý9Ò}XºÙÒÍ‘î\é>"Ý\éΓnžtó¥[ Ý?J·PºEÒ5K×"ÝùÒ] Ý…Ò}Tº‹¤û'é.–n±t—Hw©tK¤»LºI×*]›tíÒ].ÝÒ-•®"Ý2éªÒ])]‡tWI÷qéþÿغˠªÚ† Ã{ãDETìîîÂî.l,TìBEÅö1± »PQ» »°»ã½ÖsŸß|ïwÏœsüÚ?`X3›Ù÷µÖ,œsp.ÎÜ p!.Ÿ—b(.Ãå¸Ãp%®ÂÕ¸×â:\p#nÂÍŽ[p+nÃÜŽ;p'Fâ.ŒÂݸ÷â>Üð Fã!<ŒGð(Ããxcð$žÂÓxÏâ9<ð"^ÂËx¯â5¼Ž7ð&Æâ-¼w0ïâ=¼ð!>ÂÇøŸâ3|Žñøm¹ N˜“aJL‹1'Ä’XŸâ üÆ@Œ6î—·›76ÅfØ[`KôÁVØÛ`[l‡¾Ø;`nǸ#qFán܃{qîÇx£1 „qÄAˆƒq ŽÅq8'`NÄI8§àTœ†ÓqÎÄ`œ…³qÎÅy‚óq.ÄE¸—àR Åe¸W`®ÄU¸×àZ\‡ëqnÄM¸Ãq nÅmÛqîÄHÜ…Q¸÷à^܇ûñÄh<‚Gñǃ'ñžÆ3xÏáy¼€ñ^Æ+x¯áu¼71oám¼ƒqhûi°£&@º`>4‡gô>tÂè@gtAWLˆn˜ctÇ¤è ±zcclŠÍ±¶Dlm°-¶ÃØý°vÆ.Ø»a쉽°7þý¿ßã_£&@:£ ºbBtÃD˜“ ;&EL†É1zbJL…©1 ¦Åt˜3`FÌ„™1 fÅl˜s`NÌ…¹1æÅ|˜ `A,„…±ÅbXK`I,…¥Ñ Ë`Y,‡å±VÄJX«`U¬†Õ±ÖÄZXë`]¬‡õ±6ÄFè± 6ÅfØ[`KôÁVØÛ`[l‡¾Øÿ=Ð¥—0:Ð]Т&ÂĘÝ1)z`2LŽ)ÐSb*Li0-¦Ãô˜3b&ÌŒY0+fÃì˜sb.Ìy0/æÃüX b!,ŒE°(ÃâXKb),^XËb9,°"VÂÊX«b5¬Ž5°&ÖÂÚXëb=¬ °!6BolŒM°)6ÃæØ}°¶Æ6ØÛ¡/¶ÇØý°vÆ.Ø»awì=±öÆ>è}±öÇ€qâ`‚CqÇ8Gá?8ÇàX‡ãqáDœ„“q NÅi8gàL ÆY8çà\œ‡!8àB\„‹q .Åe¸Wâ\‹p#nÂ͸·â6ŒÀí¸wb$îÂ(Ü{pÀƒ‡ðÅãxcð$žÂÓxÏâ9<ð"^ÂËx¯â5¼Ž7ð&Æâ-¼w0ïâ=¼ð!>ÂÇøŸâ3|Žñø_â+|oð-¾Ã÷ø?â'üŒ_ð+~Ãïøâ/üð/Ú®íè„ ÐÎèŠ Ñ ¡;&EL†É1zbJLi0-¦Ãô˜3bfÌ‚Y1fǘsañy1æÇX aa,‚E±ÇXKaiôÂ2XËc¬ˆ•° VÅjXk`-¬‡õ±6ÄFè±)6ÃæØ[¢¶ÂÖØÛb;ôÅöØ;¢vÂÎØ»b7ìŽ=°'öÂÞØý±/öÃþ€p Â@ŒCp(Ãá8Gâ(üGã‹ãpÁ§ø Ÿc<¾À—ø _ã|‹ïð=~Àø ?ãüŠßð;þÀŸø ãü‹ÿŽ ô²£&@:£ ºbBtÃD˜“ ;&EL†É1zbJL…©1 ¦Åt˜3`FÌ„™1 fÅl˜s`NÌ…¹1æÅ|˜ `A,„…±ÅbXK`I,…¥Ñ Ë`Y,‡å±VÄJX«`U¬†Õ±ÖÄZXë`]¬‡õ±6ÄFè± 6ÅfØ[`KôÁVØÛ`[l‡¾Ø;`GôÃNØ»`Wì†Ý±öÄ^Øû ?öÅ~ØpÄAˆƒqÅa8GàH…ÿàhƒcqŽÇ „qNÆ)8§átœ31gálœƒsq†à|\€ q.Æ%¸Cq.dž+qž¿a¼€ñ^Æ+x¯áu¼71oám¼ƒqxïá}|€ñ>Æ'øŸásŒÇø_ák|ƒoñ¾Çø?ágü‚_ñ~ÇøáoüƒÑzY3;먵µ©·îobméÓØÌŽÞÚÐ[_Y[{yë+)/›ÙÇ[Ûøj6³‰·öðÖÞÚÁ[xkÿnmßýTWÕSYo PÖÓ꬛KŽRcUÍlÚ§ÙÌž}¶ÍlÙØÌŽ=Ôfθ®²™ýºuÎÕÚ®oµýÿn=Êf6ëÖÖC6³U±™ú9›Ù¨_±™}z¬Š³™]ú#›9ϯ^ÛÌý³ÍlЭýù¿÷^U®*±òPž*ýoÌ­}y»Ù”—²›-yE»Ù×´›íx}»Ù7±›Í¸ÝìÅ}íf+níÄ»ÛÍFÜßnöáífníÁÇÚÍ|ŠÝlÀƒífÿb7Ûï%v³û³›Í÷:»Ù{‡ÛÍÖ{‡Ýì»ÛÍÙÛ vó‘%În6Ú/íæŒíwëÏÃI?»“ÙZ{(O'³¯¶¶ÕYT'³§¶vÔÖ†º”*ëdvÓUÌfº¶“ÙK7TMœÌFÚÚGû*?6Ñ}ØATCØ>f÷Äæy:[çµH…²k^æy{æ¶ÌQjŸŠVGU ›åKì”o³M~Âù-äïê·²ë¢pVnÊ]%W©T:vÅ9Øb?ìÅf¸*;ak#ìÍ.¸{àŽì€­ °?Û_k÷;Œ­ïxö½3Øô.`Ǧ֩pµCíQÑê¸:£.©*N=bcûš]íW¶´v‡ÙÏ&v˜Í¬µ•µ6²Ö6ÖÚÄZ[Xkkm_­Í«µuµ6®Ö¶ÕÚµZ›VkÏjmY­«µaµö«ÖvÕÚ­Žp˜­jÃìSƒf“ºÈav¨«f{î0{Ó(‡Ù˜v˜]é‡Ù’^s˜ýè=‡ÙŒÆ;ÌNô£ÃlC;ÌÔÕÙl@“;›Ýgg³õÌålöEœÍ¦³,;Îêl7²×ôa£éÇ.³7[Ì@ö—£Ù\Nag9—me({Êul(#ØMîc+yœ}ä6‘±ì ±}|ÍÞñ+G»‹Ù5&v1[ÆTì³°YÌÇN±ÛÄò쫲I¬Í±![Äfì[³AôS]Ùú³7̾p{™ì³\Ë>p;{ÀƒìÿN³÷»Î¾ï!{¾7ì÷~°×saŸ—‚=^föwùT!UŒ­]96vÕØÖÕcS×”-]6tUOå¯T ¦F©±*ˆM\0;¸E*T…©5jƒ W*RíQÔa£Î±a»ÉfÍڪū·ìÒ~ª¿®fƒæÆîÌ“Y•GPET å¥Ê«Êªºª­ê+oÕLù¨¶ªƒê¬z* Õv_Ø{Mgç5}×Rv]«Ùs…«Év+ZU§Øh]f›u‹MÖC¶XÖë-Û+kwõSýV•ÝMŸ ”³rUn*±rW*¹òT©T•Nep3›«lnfo•ÇÍl­ ¹™U 7³±*ëföU•ÙVÕdWUŸMUöT>l©|ÙQuþ¯ UoöSl§†°›Åfj<{©)l¥‚ÙI…°‘ZÂ>*ŒmÔ:vQál¢v°‡ÚÃ*šÔq6PgØ?]bûtƒÝS›§GìâÙ:½eçô™ÓOöMv¶M®ìšÜÙ4y²gJÇ–) ;¦\l˜ °_*ÆvÉ‹ÝRE6KÕÙ+Õe«äÍN©¥¶ì“üØ&ug—äÏ&i {¤al‘F³C bƒ4ýÑl5O-P‹U¨µIR«ÔZµAmV[Õv©v«}ê :¬Ž©uZSÕu]Ū;êžz¨ž¨çê¥z£Þ«Oê«ú¡~+ëƒ ”‹²ž]šDy¨*•J«2¨Ì*›Ê©ò¨üª*ªJ¨Òª¬ª *«jª¦ª£ê«Fª‰j®|Tå«:ªÎª›ê©ú¨~j€ TCÕõ«&¨Ijªš¡f©¹j¾Z¤–ªåj¥Z£Ö«Mj‹ŠP;U”Ú«¨Cê¨:¡N©³ê‚º¬®©›ê¶º«¨Çê™z¡^«wê£ú¢¾«_ê¯rÒ?Î*¡J¬’ªä*¥J£Ò«L*«Ê¡r«|ª *¢Š«RªŒ*¯*©ªª†ª­ê©†ª±j¦ZªÖªê :©®ª‡ê­úª5H QÃÕ(5FWÕ5]«9*D-TKÔ2¦V«uj£ WÛÔµKíQûU´:¢Ž«“êŒ:¯.©«ê†º¥âÔ}õH=Uñê•z«>¨Ïê›ú©þ(»»®åª)w•LyªÔ*ʨ²¨ì*—Ê« ¨Âª˜*©¼T9UQUQÕU-UW5PÞª©j¡Z©¶ª½òS]TwÕKù«þj ¬†©‘j´§‚Ôd5MÍT³Õ<µ@-V¡j…Z¥Öª j³Úª¶«Hµ[íSÕauLŨÓꜺ¨®¨ë*VÝQ÷ÔCõD=W/Õõ^}R_ÕõÛºÙfR]ÿÊE¹©$ÊC¥P©TZ•AeVÙTN•GåW…TQUB•VeUUYUS5UU_5RMTså£Ú(_ÕQuVÝTOÕGõST ªF¨ÔX5AMRSÕ 5KÍMj=ÏW׿Zª–«•jZ¯6©-*BíTQj¯: ©£ê„:¥Îª 겺¦nªÛê®z «gê…z­Þ©ê‹ú®~©¿ÊÉC׿J¨«¤*¹J©Ò¨ô*“ʪr¨Ü*Ÿ*¨Š¨âª”*£Ê«Jªªª¡j«zª¡j¬š©–ªµj§:¨Nª«ê¡z«¾*@ RCÔp5JQãÕD5EMWÁjŽ Q ÕµL…©ÕjÚ¨ÂÕ6µCíR{Ô~­Ž¨ãê¤:£Î«Kꪺ¡n©8u_=ROU¼z¥Þªê³ú¦~ª?ÊžL׿rU‰”»J¦©¯ê?ì |EöÇ+ÜPE3ÖA!wÂ%‹ G€$áô€ dÌd&Lf¸¼âý÷Zñ@ñX@׃Utq=V]„xñGeÅ•UVÁE¼PÄkÕUùÿÞT׿¥R=I@…Ïß©ð¥_½º»«««ªkº¾?Ð!»àþ‡€CAGÐ tÝ@8üô½@op"Hé ƒÁPp2F€Ñ`,(§€R0L§ƒ™ Ì>àA°œÎ烋À¥àrpX ®7€›À­`9¸Ü V‚{Áýàðø+x<êÁÓ`=xl›À+à5°¼ÞÛÁð>ø|>_€¯Á·à{°´éŠûX 8tG‚£AwиÁñàÐôi ä€Aà$0 ä0 ŒE`(“Á4p˜f/¨U æ‚0˜s@¸\.W‚«Áµ` X nËÀmàp7¸ÜVƒÁ#]å÷C•éòA_¦j£LŠæ¢æ?ÂäþLf£ ¥›èËìÙ¢q>¸[¦Á-Ë!\Áì ˜\k£Œš»U¦PÈy^ehN÷Lfï-ä÷L•¯¥¥ÛƒZüºçeœ–ö8-m¿f/ÖükîÍ^ äœ5·/bö ÍÞ›Ég8èg2y“‡0ù\&»fY™”}Üz;ÈýôÇ9Èýµ0Ü­“ƒLNÕd“ëÜLž©É&;×ñû›ß£=Å?o5'Ûp{OÍ?wçyjÎP;Âï º—&Ùze螥û¾Ü ãaó™\n» :ÞVÍaòèÈ•L.tÇ1ÙÏäbMæy›ÀäS˜<±2}£y„–n[_$·Ó¼= ¶‹ÊSíà>œÉüÜzdÞŽdr“y™}L.`r…CüÜ?oçܢṑ%š¶™1ÜT¸œáLnY1ܲc¸©ôÜrb¸©pƒbäÅä–Ãm` 7•ž2z]7ÙuÝdf×åBƒÝI§Ç;•Ùu¹Ð`wº7yæõ×WŸ&›ìºn³ë²Ï`wÒéñò~.û v®ãíoGù½ÆÛz6èÏÇaw]÷;fÿƒ;×ñ4x};É'2ùl&;õ9ô| ÓìzßVï£á‡û£6œžU¼N•Ù®ŽÖtÔóº:ÂA7ÞÖs¥ÃŸ Ôߥº;–醋¦Ï€ávÚÊŒÖâ&¿¼ž¬¹ÔÜ)MþÜQeåv~¯ØiŒÐtO†A—iÐetÙLGç†Î?”i¢ñóVoý™–gðÇïŠk’n„­çíÇHÑø\Òì5û$ÍN2ד÷·‹EÓç=Ó¾š.Ó Ë2è² ºƒn€A7РdÐ 6è(ÏézSy2Ê”áP® ‡²e8”/áŒåÌp(k†Cy3c”7~íšêökG~ùx,S³giölÍž£Ùhöš}f¬ÙÕ5Ñuz>ÕµÐuz~Õ5Ðuz¾Õ¹×uzþÕ9×uz9Ô¹æ:º4îÓ¯Ë,ƒ®Ü «0è¼ÝlƒnŽAWiÐù º3 º*ƒÎoÐUtƒ.hÐÕts ºAWkÐ… ºˆA7Ï ›oÐ-0èt‹ º<ƒn¸A§Ïk’®À aÐ4èFt£ ºBƒnŒA7Ö gÐéãxÒtã º Ý)>§Kºƒ®Ô ›dÐM6è¦tS ºiÝtƒ.ÞÄÛÒéÏe>®äcÆ~¿ Ì纆Øèãc“ëÜš»2ª?âÔo4õ³Hgêg‘ÞÔÏ"½©ŸEzS?‹ô¦~éMý,Ò›úY”GS¿2Ë¡¼YåÍr(o–Cy³Ê›åP^õ»“ÞTÞ,‡òf;”7Û¡¼ÙåÍv(o¶Cy³Ê«ö 4éMåÍv(o¶Cys 奶“žSeLW¡Ùé™?‰ÙgÙî!¦£{ŽÏ5R›W®Ùó˜= Ù#š½Z³Wivz~ó¹"Í>J³—ÛyæóqUzÊ+Ÿ höˆÁÎßgTkö*Ñô}Ç"Í]×t£ ºRƒ.¢•§Z³Wˆ¦çÛg‹Æs’ÍÑìÕš½\³W9ø§w™†pºÞ¤«ŠáWéùV¹ƒÞ¤«ŠáW÷Åuz^ôûªÊ +2èFt!Û^á ÓóerÓóW£… höˆ¡¬ÜNáù=ÐìÍ^­Ù«4{‘hÚ†LÑâçöˆf¯ÖìUš½H³ÓùIµÃññ.µs™½\4nËHæ×Æ:i¢é}Nú w…hÚN-döJÑøºÓ½Íç'©_Ë×EŒç`Iæó¨”§0³Ó}^­Ùš=¨•ƒtü½…Ÿ¥Ù}¢i›ÔtDãùyº¾¦ó?Á¦HÓñ9pª‡üùCã%þÎgŠ–ÇÙ6ÜîÓìzhò£û£|ðóËû¡ÚÌhÌ×Iðkp“ùû¾Þ€¯EèÃdÞ¿8‹Éç0ùx&ŸÀdþΉŸK>®pZ?Áûéü=V/&{˜œ+š^&¾n„ç×)>^¾NÅéÜ8••_^n~}ø;»t&ó÷;¼­çÏ1þ'‡É˜<Ƀ˜<˜É¼^ðú¯þ>P^r™ÌûxNë ø;c§µ£˜ÌÛœB&ó5]¼ åïwxÄßWñ÷o-YCÂß9ñw}¼_ÍŸ}ü9ÅßUNc2_3r*“yÝ?É|mof2™?{xûéôáí+~T2™·§|-I“õçˆ2ü9ÅÇø5LæÏmþ|àýÞ^ó5Iüù1ŸÉüÙÇŸÕ¼ÏÍÛ9>ïÁÛ<þ®<^Ï¥im=×OiZ[?ãõMšƒ¡¾Åë˜4ñ:&M¼M“fê›Sãuɩδ¶nlõ×Ö^w§k}°]ßx{"M¼=‘æ—¬o­­c?w]ú9êO¼ÎHs êÌþ´EúZ`eâuCšƒ­nÄŸ_ÒÄŸ_ÒÄë›4ñú&M¼¾I¯oÒÄë›4ñú&M¼¾I¯oÒÄë›4ñú&M¼¾I¯oÒ8Õ·µn$žîÿïtãÆÙ´iò×ÖÝFý\õ¿„™‰õ±þ¬-Mÿ4¯±¿g[ö×(üëìo}ËþTØ6úô¦M hëÆQ§…a›#a¦‰õû޵¥eÄŒã5žýiqLÿuÖÿ´èéÆëÿ¯ÝÔ ¹OÍàBp‘{Ö\.rïšËÀåBîas%¸JȽl®‹…ÜÓæZp{Û,7¹ÇÍRp“{ÝÜnrÏ›e`¹{ßÜnrœ;ÀBî…s7X)äž8÷€{…Üç>p¿{䬹W΃Bî—ó0xDÈ}s ¹ÎßÀ!÷ÑY Ö ¹ŸÎ“à)ð´{ëàF¸Y¢{ìlÏ ¹×Î `£{î¼6 ¹÷ÎËà!÷àÙ ÐpD÷ây á‰îÉó&x lrž·Á;BîÓ³¼+ä~=;À{BîÛó>ø@Èý{>ƒ]Bîåó)Ø >{„ÜÛç ð¥{ü| þ-ä^?ß‚ïÀ„Ü÷çð#Ø ƒƒ°·Â‰î“”Ú{«‹è¾I‡û³óÑ=”ìOPG÷R²?G+º‚#„Ü[©8JÈ=–’€KȽ–ŽÉ ‡û.+äïZi;­m§5í´–Ö°ÓÚuZ³NkÕi:­M§5é´Ö ÓÚsZsN}Jõ õ{Nê+R‘ú†Ô'¤¾ ­ §5áüÛS´æ;WÈq.oi\«¾·CãWõû6§Òø”Æ¥4¥q(?iÜIãMgªïúÐx’Æ‘4~¤q#iœHãCZMk¡i 4­}¦5Ï3ÁôiM0­¦5À´ö÷<¿ÿëůøþñë_/~Å×?ÞþGÛš¯£y:õ;Jš£y8š£y7šo£y6õ»dšO£y4š?£y3š/£y2õÛ;š£y0šÿ¢y/šï¢y.§öÿ—J?ÞþÇï½ýWæÇ½´XSCJj±D’íæŽÎdL~›‹?VÞô¸÷%~§pÍÞ¶N.*ÞCl»Š?¹ayüt?žkpQùWlkˆß)lÔ “áLÌü7ö¿9h0çµ6ÿ±Â*óã~Ä+lÔ´ÙóÓLX2êk›ºÖ俹°Êü¸W|8¾Ihüš¥Ùø› ËJѶ¹û+VýŒu©ðíì°ÇІûSõ{åm8¿Îç¡õù翵vÿBìKþm¹“õ.e´è{Û½M‚fè$Fjj¼!áÎÇÿeþšÊ2Qá›ã ‹òP[SVî5!_ ,æ„Êj*Å,Y J”Â!¿¨‰ÊÈ »ʸÂA[ƒ9rK²e*W4OBއëÖ$[uOKuÏÙÇuMÃm}-Ù:áuøÅ‘Â&#îºgÁ ÉÇ'ÚçjöîdkíaÉÖÌÎÉÖÈïvJ¶z#Ùz< Ò¡ü ÇŸÁf°ì»À—à{ˆtZgKû»´¬è‘l¹3çi(Ã\™ŸŽì|­Øù%¸ƒzà~þÀ6ûJ²µˆWáêØŒ#ÈAj‘ŠzŸ§Þå©÷xêžz§ÞÝ©÷vêªcê]ú ~¾˜0¾¤pªÈ+.)œ15+5;%cðþrÚÃ:zÓQûH2 ׳ySµÍ¢úÜh;AË’Ú§FG:4ˆé¼î|Ú9ƒšo}+•ÛÛþ)žö2º©ÛÐèù›OŠÞàûU_q%Ém£gò6ÅÙrÏÎËÓiâÒ?ùõµñøù·<µ”ôme ØYØòÜ‘¤hØßP=§WB;)Ÿ5{TùI ÿ¹cÇ‘žäéUêF­Û¾êz%ϹpÏó$'FR(]’OsÕáÑ|Bνßוâ!¹ðš£V²èüX2…mù¦Ñá㕜»²¶_4?óNÚ™`ïå=?m¥üäÐïÆ [Ÿ»åˆÓèH¸¾¦:ZöCäy6_9iÒ32³²s 48ox~Áˆ‘£FŽ;®¨xü„S&–”NšÁ Óƒùí#žn]WûxX Ò§±y'-ýö¶N=¯iŒOí?Ýi\Ë¥OcøÎ­HÿÑç\Výu.ëÐçz—5\V‚Ü%.ë™›]ÖŸoqY þಛ—¹¬ïpì²Üem“þä²v€/@›{\Öq÷º¬WV¹¬—V»¬‚\ÖSàèöà8aÏ+O¿9~êô)ÎÖ¤Oèô×.kl7¥¯‡¡ôâkmúÄæe±Óo®üû›~såß—ô7BÞf-vYítYŸpYk]V-¸|³y{Êeå¯wYƒä ð_ï²Ænh^¿7,J²vmrY[ÂIÖ IVçH’µœd%ÎO²ÍK²êá¯ä‹ê’¬Å ²Nêà¨âêð¡É-Î+²€(,)|š¯R{0¨µy4GU&ÖœÚnjm úv_óöSšÛÛw·²¹¦KƒLܬÙÿhÛW1ýÚŸŸƒ'‘ÆÅ‡u·®ß®ØÇpK;È£×¶Ï5ø¹¸é~[ÇîVŽkì#Ùdo) þÿÙ¡ùp*Í¥=}S_Ø~÷²4;Ò$Ù­™t͸ÅþÕÒ÷1ª¨T”N“¾yÞPm™_¤yÃåiþ`y™?ì«öŠI¥ùÂsêé)ƒû÷K9]x*#ClDþKµñDZ¤6”V[Yò¦- ¼¸§ƒ"55 ±N5ÁZß‚PÄï­nOýžZwÃ?Rµ3*ü3‚5ÞÀŒÊ`°JŒW8<Æ„‰…“óJGˆ3N]8ítü(fŠ5~£#õ¿>þW²µ<°S’ÌÂ8Nµ0~z â5‘»#6wurvkiNDz ±níWíÔ‘÷eísj*[kÊO}à“ßkÈ«Šâ/‰DQ0 J#^1Å[!JQgF†|¢¤,,àVQ¶œéµt„¯€”à7€ ‘0Œ‘ÞY¢¨,$òjB8B‡„ÆDü"/2G”xkÄxŒü‹ƒóD·œüGÊB )L(* `y%õù) —B.¤ ‘Ú0…{«gyCGŽˆG*™òŠÄ„"á)s{f¹=^·gôOÑO‰Û3MxªÓ<iž…B)…§P¹Ö`Œˆñ„!àt +߿ӻõ¼£÷ôAf/µÝÕzï)¶\ÁÜ+EÃzjzNÒ\‡ZïMñÓó4Ìì*=õdµ¶š§­»ñ|ÔÜy¾1üñü†üð2èn¼<*ÝÏѸ1ÒÎZW_$û™ú5Ì®Üy|ü)»Ÿ…çßO.±ÓSëãiÍE¹h¸jÿFµî½Àö¯ÖúóüGX^ùùQå 9øáe¤xÕoxYù÷Ny½šÎÏâåeUßÖåuK•;lËê;«^Ñp~ùùÜùùqŠƒŸ3'?y¢á÷ü[¬ûܸmy“½L¦yË!¶\Ääæg‹S}G™ä &/d~bÅ©ü¶ Ýæÿ§*ËtC¹L¦¹ç]»[ñ|Xî+Á*°<ëÀzð"ضƒÀðøüð|i‡. p 'è 2Á Òÿ0Fƒñ`(g‚Z0,¿7‚;eyLÏr¥ß¶‚]à{Ðñ}ô)@0Lap=X¶ïûƒd+ä‚ `&¨u`1XVƒzðØćÉV/0ôCé¿ÇJp6X êÁ6øQ²Õdƒ\p=xlõo4eò=dMzÂý;¥¼Ú†Ê÷*ÓDzŸÔÜõ¥¹®¾ òý5ù÷Ôxž9 Ìn¾~мÙâOÌ}§h|ežbÏlPft+£OÏ,ù)žEnO)¤rO±)™fÓ§y§mé;Aùêç)wÓ“ÜoмéSÿtÁ§Mãoixšs\m‡),ŸV8"ß‘= 'ÓíËp,ÈÏO©õ†ÅX¯¿Â]â«j½Q[nEU$2'µ¢JôËÎqgedf¦ ÈÉÎ’¶¬ÌiCœ"#5]d <0%#3%ƒ•ΘÒüŒ´’üÌÌ´)£2ÓÝ)n_ ì ʾ` Ìï[¿ü´ »QúýÝ%UáT÷˜`hŽ7PëÎóû½îAýÝcS2dä¸Ç¢ã¨,›pOTŠ!H|ð>Hû¸Å‰ìßõ§¹ÐŽ»Ñ^€;@0€‰»e}˜¹»qý¨€½lÛݸ®MB›¶‰íùuhû;¼Sç.]8²ÛQG'¹º“Üã·Çº{w|/Ï ½ûô=±_ÿ”Ô´†ùô!' ýݰ“s§ÕO=íô3fÌ,›U^á=§Òwf•¿:¬™ª GæÍ_°pÑYgŸsîyuç_páE_réÿ\vùW^õû«_síu×/¹áÆ¥7Ý|Ë­X¶|Åm·ÿñŽ;ïº{åŸî¹wÕ}÷ÿyõyð¡‡ùë£=þ·5O¬]WÿäSO?óìúÿÝðÜó/lüû‹›^zù•W7¿öú[þñæ[[ÿùö;Û¶¿û¯ïí|ÿƒ?úx×'ŸîþlÏç_|ùÕ×ÿþæÛïþóý?Cãu’è¤ó÷Ë â×½vúErí2õWâk×âk×ÔÚµæÚç#LŽ­4î=èû}»­nÏdþÛîÎüÃûÛ¿j×`y2øù%ü+þ¨Ë»W]|j^uʧ‰¢‰I8öÌuŸ |rãÝo~ùíɶ¯¯’a~‡-I=ô¦wÚþ0¨[§´áãw}µéUkkâ3o®þû×yYwµ=áØ‹[ñÓ¯„³S—žzé«kCËÿ±åÒ´n]×Oø?ö¾¾‰j{xÚ°@Ðв R$ D!MÒ64MJ’RvHÛ´ M“¤KQd—MEYDå=AQÁ TÜAyÈõ¡ ¢âY¿sî,™%ôùxïÿ=ç÷›$sï¹çž{î¹g›;“ƒß ÷›î[ü‰oüÆ›Ÿ.}óÉŽ½Z¶þqf¿&΋ÅÛC»oüáW÷O©[ Ní<0åÀ÷¾“ïýp`Ì)GƒËwv¥4öž+ þTs kñ<ÿÒ%£–Îê³erÛך7x=+»ð›E;ªgîªÛ\eì:úʪ6mÿñïÞïÔö¦[“7²goeûû’õß?úʆÂåÝãÏýcñ5ç^ëØê/÷Œ.ó롹ó7~õäºûo •6Yc^ÔdÄ6Ïú§ ¡©[x:«Í¦œ¥žÕ ¡§g7owݬ¥³ÖÍÞßû£{Zf·¾<ÙWíˆ;ѪK°ëˆ_F´Ÿä›¾âÕ¶3¬­¸7ù–=ßhÔ"¹ídK«}ºÝMŒ69žQ:ó¬÷ï“ÛýÓÐvò´÷V,ïÚ¦Ã΂;:|:ö€û¾öƒOf|8²õôaÅo­x©ëÂn‹Ž-=rbqVøžÙ™S—Tœ[5qÒ‚O[õ;1Q´Çˆ§ZŽÙàwž¾öó¹ë;=óü7#kGL}sÈçßeùo;nÝWàhÕï qõö™¡‡_N®v´úà÷s_}äàíïU7žú̶ÀñclÝØÓŸä>\ùËÙé÷ž6ü‡æoæ \3³ÇCÝÇgFžÜ=4ëtÚé;î©×iÙåäÈþ÷uc7aóç§Ô¼·%웕1éÈFÓÂy ÞYÛvèà[;‡L^ߤřoH<4©¬êÔ'^þ±íMÛ¾ÐîÌŒ5š‡ßû‹ÿµ:üŠžJ}úxAíü½æ;öxãŒu]rËTÌ~·frߪF›è_uèµlvçô¦_ï|Ó¢½_Òm¾IýöÔã#ÿÔïWJ×%G›µÞ˜³dÕ;]ßsŽ?•‘¾mÛÄVÞüõú.‡gtðÇÍÏixy¡ûóøŸ8â¶—Ý2ÇÜó æÎoûàéõôÎÁ‡œƒ_z¦y—#ùÁgºœµ>ðu–ë³7ñNÙöõ¸-÷nizµõ°í“ÚF>ë3é=K»6GVÝ÷PÕ¯ìMÚ¦?\»á‹W7–UÄ%ßÙ¡é»ë¶õw÷Ô§ß<ûö”&l‹Î »šåtÐÅ-¥fÜõkî;w/¿áôì[ܻ盿•»nl¾µAÃë.ê—¯svÜØ¼ÚšÞ:yâ úf§µ6.ÿÎk›ê:Q»e…û¨~ÃÎô&#‹>}ûèª!‹'ïÏËOoÿNÃiÉ×~²þ§[vÎÐç¶»ÎoÍ\»¸{^ÓÔí³\?klÉS7=öZeÊ„%/Ûµ¥å¼Þ¬Üh55|¡÷Œ%ß¾žÔl÷þ®‰ï.íž~lŒû™N×n8Ò¤áÉã­&'|ïŸ}{ÅOöÍ_³è-Û7.}¼jÇ ùëŽx§_ƒ¢C]K»¯Í´÷ÅçoO;zêɇÿá9Îô»±¼QÛ /´œ §‡«ŸðÞøÏYgkŽ>´êØÁ_\xýóÅOÝ·«çÁÙóŽ®ùö“Ûþ¾²dÓÀ#ï~8ãå¾ 3/Í{÷çù7³7Ý0eÅ®a£Î¯m׿ª÷à.]Ý®½µå”Nû÷¥Ý±ïî_ÃìŒ Oµ{dGš3ïû6ÿz¬ê»¢E_4ê÷Fƪ ‰·ïY}Û,öÌ®H÷©í;o™ècèŽi‡’¶åoÙsÿкv[wS‡®í: ¸Îx0RôÊÌŸo¡Ÿ»%R[{âÙƒÓ×M8î?ºÿ¥‰¿ëÙ¼ïÔŠq«Ï}tDÓÿæ_¼5î®`·Isy÷оsk—.zmã~}uúŽÛßjýþëôͯìüð¹È¸îý¿iõÔñ1_6ŸÛ5½øøÒÊ iCÛ,íôz¿6_M*šÒèÁÍsÖíºí»GjÎ6úöýVoÏ×õ<üHþ®æ½îÚ[{!ß7¯VÓðšk>Ly>có±‰&ݳ…½_c>{ÿÛÇß;y{üŒñæœÅŸ?¸jÖ÷ 7­}|ýâýÞwóò;¤¼Ë3GÎή)KÞÝçhïi¦½ö̸ëÏ®8`eÖ/#¾ï˜ýÞ·çÃ,ûÒW…Òš,Ù¿cïÑÕGýëMêÛÁ?eìõæÐƒç.˜?;÷_—}´¹×‘žVþ¥ÛCÍ–lÝ߸b΀Ýož-í”ú»¶û®¨ÞÛ?#üøCù稙5¯0îæ½çõK6¤8gZ¯ÍXÜ,¡ñ@ÇðOÏ5õØüõ“­æ%my_’ó­5úâ®}ÝÙ¢aî÷ë—J÷¾ó*] ólmâ>ÁÚF¾òOÛü/VßóÀ#{rÅííÝ}èÐN/´þúðžO6}0mûÍiëìæ³VîØw¾ùøê¾9™ñ껫ãþ©ÿ§Ìœ»Çz8;÷¤¨ŽÒ—(ñǕ栮Vžç÷Òwµò`s?I¦WÿÁ§öuÌTîÛÂ_#¥éÙzð`ù¨»’éï¹zç©'¹oË´èµpþH¦'-{‚ÿ]¾GÞ?'¡í¨¾ µÔRj3µ‡ú™j—g«ŒÃš~ÔìeÔs°¾OR×Çu‹³Åù¢ÛxUä~ôæ¿­ø]PPðÉþ[Ï‚þR×Mu õaŠ]>Ÿ?̄®0ƒ…}˜N¡FÒšJW vEqÐí »c×á~-I Eêðšñ„ŸŸ)öƒîâ0ÃS”¸Â.®¾ÔdÆv u†F¶*@TÊTº+ýÁ:¦¦œ4÷y¼‘äñ• ­ƒ(¯ K˜J ‡¢Ä‹$¤v¡x‚ܵa·¯„)óú‹\^&T µ”|¤ŒñzBaŠkLávƒ}ôïêKFUì¯ò…™þý™NU€Fwe \Ç”Ôù\•žbàb„ý0üPUQ(ì W‘;^F‡“ÁÎ\^|Ú¨ÆÁ8 ÌÆ[Ùf#Ž£,èªD=Ö¨Øë]²S$ˆÏCøÛˆ"[ìJÑ8äª01tŸp4âuî‘.Ÿ¸rz50³)5eÉ2.§ˆÏ¦\âî‘÷I¤§æ2'Î!·çaÊE8ù´ûvÙ¶»ÿ$}±|zø„@çîëtÌí‚ÿ}ô³/*®•”O‘]màùut‡Âþ ,wY¥ÛGÖ.ÈsiØ„*¯¿˜¬qaI2~Ùâù,ñ× Ðæ[œv“«ˆbµ)1/AõÀÁ"á%Z„uÔUù½DC0å®Sâ)-u‘œgªF¶t i|!O ¡1 VMÐÐ(:¦JWEt@5AOØUÄë 2$în5“êuM¨ëB5Š–!ÍÅî®T\œŽŽ&¦Ð H¡Á‰¿ñlÏ—á9my ÝÎ’åÜo<çóex®]‘BO…sÁ î7ž›à,âO¼Þ¶*…~oU´þ+ø½‚?«|îÚ ¸@(fÂu ÙÒÅgq%õÀh5 ÏTUÅD3r<¹q—$§!©,&>DTM¨*ð]'\ÎXŒcœv½Á4&æÐlÍ5[³Õ8KÜ ŸJ@³Õqùz¯ßU¸ªj=^ ĆLs‘»ØUr£È\¡¶UêåÐ%3¤ÓR2 Qp@õcÆWÌCYQ  ðQ"/×@Ôר÷x}-–‚nI±šO¸å-è&b^ìfˆˆR°H„*ÜT¬äÄÒUíòx‰ §"1ž G à-wW£²-´$ìõp†šáéšðe@Z¢ó+4¤p2†¸ƒ>7‘1°æ%¨·«"ŠšêLdƒ[ÒrbøÆ%îR¾-Œ»dG ­y5…6¹Î~¯¥ÐCᜠçz8-oÀo8©7.¢¥[zr‚Š›DÇ¥$j4÷Æq¾=Þ39`;sï-Rú&ô=ñ™˜¦kf$Ä[ÙÄL6ÉÀ¶0°Z=ÛZÏ2¹,Gýîü3›Ä+Ûp8ÉžEû™‹'bâ4ÆÄ‰÷nÓ±qâ}|¼·Êœ¹˜"ÃÉj ,m` g6ËûM*ˆKxv.9ÁóÛ`¬8åýéŸã¢M²¦5 R\œþðFz°¥‘Õp–Ö³‰z6ÉŒŸð[“ÉRù¬†üN‚û @¬Èýso+-=’Rõf“¸q®„sÀÌQÓ?˜eâ ÙÄ|ï'MÑÒMÕ°µlÒX–1³IñËXiÇ{¹çXè;Þ!,íg5f–Ájâ-,mc5ãÙD‹öûÉ€6ËÒµôZ Ýúi Àýr¶ ÓݘaÇìÀnZúÙX°€Ò°ƒ÷bÌØ“{PÍø{X:¡óXM›HbÈ­¿§»–¾=A oÒßdã=,`©ø¡, ,=˜ÕŒeP;œeªÙÄ2–›Kd#©—–¾S£Â•psË@Ï øïÆÜ7àרÖmç÷ÑÒ5ˆ¶5ótxXMÂ?‘MÍj†±I mâ é –ŽÄW±-„¯¸We6àÑ „ñÄ«iˆC`Ü· êË3µô©|Êb'€‘¸üÀ5héÓ1æx7„Õ„¦,d[„±ÎC àçP´“àÏœ¦™žŸÃjjYÀ‡±š y4׊s!YZZ'Ÿc# cû¨ÏÈÖÒÞj:žg'±KG€š'Yj<«©f“&°š–‚Y²ƒx –w‹c[ØX¾¿M€o¥EKžôWˆô#ö@ýP¿KRoàúsC/Sq½ Îܲ<-ýW Ldœ jñ3´P%6ˆ?Æe´iéõq þÜ Í–C³¥¬÷¸ùZúZ.`™$̈ƒÑe±‰n™(f©Ñ¢<,‡§ZÚcþf°ô$a¾^G>ÑÒcÕpE@Ñ@¬´‘lb5«Aþøõ…Z:Mο¡Ø1™˜§P?(NÅ¿Vãg“ª+˜Xd‰H§àS‡iéqr|.6qQ(¨ pþÜOêy)c'£´õOtã2€½w¸–.Ç9™ƒàä`+À|0}ä0ƒ/ÄŽA=3BKWÑÅÕŸCz ^/¯/@>[x Eíƒú™j¾ZY'{Ûz.lºLÐÁùЦd”–^£\;0Âx0uN\;¼œNXz´–N‰1¿c½5NŒ!P´ MQ‰eZú“:9+ŽØ¢xX±0» é‹à" Äb KcÛ‘Ðö+–Þ£í K´EZ—AÛí^-=PBk.×l3˜L• ÒꃹÄþvç¥wÆè¯Z!¤³q¤3Xíñ ssx;M7 héŸ)….ô8ziÊÛ€Ý:^K „O–ê"aؤ–.“Ëø.4©ŸõµPï”×Ç5ˆ²»êwC}Iý¾íV¨;u£¸mPr{êóÃZz†Z6P/‚ZçhÔ@ð€Ï`wUê /ÿPÏf/ÖÏH ¢XFÃ`‘V À­8­.Ÿ·ÙåP‡ÏvשiÁi!è„ù‡Ï}¿£†“¿iFü[Ÿo#+`[pöêð™ñYjvV Ë•ææñÀ= pÝÕz>~«àmQêuÀ£Z-ýœÊ'¸Õä5Ïé?€[^§¥;ÆÀ9W‚e|ÒuÜsðUö]£§¡³²7’Læêih㜤¥ûËçj„0—@ý"¨ï-¯¯øvêOC}¢t¼~H„BÍd-M©×,Óøi,m'άtňˆm ¦*Vò%“HX"”L9À,Wñînq\÷"ASÔëÄ´!Ýk¡~Ôãþç,¬76nÍ×½u'bÔa߇ .qª„Ù8 ÙdÒÀ«ÁöšÆ`æ§cnÜ$S”CHÿ–tb"|¡¸ç9æCÛµG î‰1WïJÛÎ.Œ$µd+f Cø‹a²0grðkŽjéJcWÄFÚÌjò [ä…ì«, ðKÝׯ9è‹é­èÄñínPÊ8§c&Ü"™þ5/ ð¯Â ”ö²‰ ® óq…C””X ꤕÐ>pC2£=:ì@TD°í»våÉtŠd³Z›ºÔVÉ2;%à™ÏjJÉðܨ~9?F <)9™>¯²Ù÷¢ãN3\𣌛’Lÿ¨‚$ƒE{Ø@ëdÚ¯°óÃxŸv>Ô‚z—¼>$ÄæOC½±M2ýRŒq¬~Œ'áÄ=aÎ÷8ð³Û%Ëbs޶Bâ{ ŒÃÓ³DA“žÕÔt§Ì|&™¾UC|d¬ÏúíP¯È›ø¿P ê_ŒáÿŽgé€èÿÜÚöÉôâpv>®@¸-7ð¦dúÁp5ÄQãàÜ€[¡†s€/½3´S2ÝEãâåí^¨;·ON'?¯¶E% ª\|eÓ è[¥Ð«%°ÙbN$®E:ÎöÀ&-L¡×©ñNf[xE¼8®ÄÁçx&…þL ïåU.*‚±°L³ˆy"9Ðh[»1%fNrª¤mÑH¹D‰d+ðﮓߗÀXøÄß›Ó/\$ÏØ l’¨o’¤oÒBßDkÅÏ$Á‰{ @pÒ© ˆ€ÔwÏy„ó«»ÿÂEòôÈP¹Èãï% í°±î%üyüyüyüyüÿp2u‹ùleª«{zz’+Ž8ñ}þxì’”µ‘Q äYÐTW7]Ç+À')K–‚M‰‰ß/ŸÚÝã ´r¼Ž8²GHŽ#ž£ïÀáêrÙñIËd8/ÁQÚ-íY?Ü÷ŒOq6ªOŠ窘¼•‚ªô2÷«¨_ÄGÕRuÔÊar*_ÑÇP½Õ`²( fG¾E?L^˜¯·›¬ ”£ 3Ûn+È—šívS>£€Ôœæ!&UGv”Û¬ÒB‹ÞjÔ( -æ,GŽÙ9\V˜e²˜‡*;ÊÔ;Ìe¡ÍnÎ6[…FsžÉêPô>Do)P Ã̱2ÊB³Ãæ´Ûòel¢˜U\¦²ì¦Á&«A J™­N“ݪÇÑë…  òíæ<³‚Q”Ã`7™”ÄšJ2Êj³ç镳9tØp% L‡Å¢.4[&?Íyúl5CÌÃÕ½ç釚•ÝSTÝ ¦Â,»ÞÀŸ,*Ûd5ÙõN›]2{”Ñ–§7[åóI 3)'˜Œ=FG6»ÑdWš,&˜x§ ï´+…‰2äè‘L *Ó®7ZLÃÒ P•k5FRÖ‚¼LeOTžÙb1ÙÓ,6É|â2tš­ÙrÈ!° lÊæ}¦riI6ë ^*5 • ’¤ZÅ=tdO•o¹S,Y*×Ro"‡„9b”e³Õ…Ž|½Á¤Ä™U –0\Gvåò  ¦ Jª9¦ì9¶¼L[ŽÉh—Œ=Ç4TŸ-å:m“Q/ u1•oÒÛ6ùê‚—c3Y³,f‰ QÃõ¹JŠÈtÀlØ ¤BkÏV“ ë…ùêµÅP½Óc4/fȵeeÉ aiZM0ÉŠaª‹©,XEN«É!e*¥7ƘMÌ#pI^h„ù5)µ·Ù:Do7ëeƒ¢ìz«ŠM”sX¾z˜ƒÞ¢WÊ|¶>/O¯"É¢w8ÌYfƒ>j+€uf»Jσå‚é08U… w2EOå;LF…Ê~ì6‡Á–/á¬â…V³S)¸T6h³ÂH?óòîL³Åì åp*GÎCZ ˜Êa`Š3í&…8R¹1& ­¶>ϤÐ`½ÝirÀÌÉ m³Âƒ±”ö„·\“ŒË”£’£€TùXè,TZâú,—#–Ë´9sÔ…uažÍ¨2”Í >OQ¨·p¶XfvÁf›Q/Jç“ÊÏ20ʃ2Ç*ÌÏŠa¤Ì± ­Yª2 Ó™£¶\1úB5Jtìv›\1ÀÚ4ºr8í_Œ‹›§jžg¶ªM9X.µNŒV™Â¥jÏ+pê3-†Ry§9ß"›QXGj m Ø»Ü@ƒ»eÔ;õLL0èöa¾„qûª=A¿lv¯v=d£0îÒ-q—z|îlš_h¤Ø[©[)Öë/£ xè¾…Ž!ÞŽŽAZÇ ]Ô1œã«°ÁðÃa®P#RùÀ Æëö•…˙ʪ÷x»¶÷nwKOOW÷È6>Ññ‘‚N¢uO§ÐÜ:Q?ë¤V_' #t’€FµE:Ñ‹þŠD]±0‚ëK~7]Q"ëARNT­¢L ´Lp~•Å¢²Sâ­‡ÐR) EÓ ÝlÄùÐñ1›NTP:It$[´”¸²¹? «âii‘NYèøxFÇ;:>Z¾#*ç^¬ádñZâÜ‹eQïZ,¯Q'q•ÞPë¿]'8‡:!øÕ‰Þ».úêxsL1œçD1Ü`)†óe(Ìá#—éd® guÊXLÇÇL:!fÖñž–ð- w%'®@Æk¾ˆgw%®DÞQ„ó$tBÆA' Zt\,œ•ˆ0{ê8¿JMKDDÃ.)Ôq.ˆ8r!¹– ƒ+‘¶!Ç-V·—ÔÅÆ$²”˯8žDÐ÷QqŽ“¢'çv뢾ªNŒ"¢¿"R…'”I˜!‘)#P.” Ü®%,Š8噼PGrHg¹;èf\A´ÚDÇGÍ‹ÇǸKKÝÅa¡˜R?>hŠüÈÁ°­Ú‡Wñ‘aDÀù «MPùJG‚ΈDGìÙ2½¢¤Œ Y…E¨HÔD¢f€ŠpKœŠp~§ð­£êe?"\ðß ñ¸ˆ¶“‰øåÅdåÊ‹$þUDÐÈN G§6ª‘#fÙ¸±²:é•5KrAVɵ ×LÔÒb¤áÔq„W–‚jŒð 1ÂëÈ ÅL4°dDÐtüÄ WdÚ¸u¡xqaU„Wr^×D$ª&"FDÔFˆŽ‰Du Y^Q¦å‹"z‰é7.«(.ˆ)“K>é]^ôp ÙWº=颌á- ¿x…4¦ŽŒ wene¨ r¤ºÃaòØ_Ìšô-È •ês×0î¶ üDŸ™ûYé%Þ¿ÇëuÓ,þjpn+üÕ°ú«]^w5Ã¥©Á‡v•xÝui† «¸Âçö ® L¼À'EžÁ¤Š©b¿¯Èà{ àŸbVzÂÄZä QÕÀ0ÄÆ"Xp†ÁÁ—CPGñ(ЈËZ'./'É&E­»à"òQf48†Kß ¹'"^¼DFCQIElžÂPó¾ƒ4UERÈ HÂW1òÂNL[K¼"aQaŠ‹OË+^iÆß0 ynÁ™•,‰¶äR9ÑFÉbd'ܼà½ÿ¨jÀÜ®¤ìÙŠÔOÔUÇðš_´òL:Œ9Å+Î¥W2Æß âŽæÛ9½€ñÉɉÎ;çœnâ³ðbòX’õ¤z§KrLÑôÃtó&ˆäìy·ŒäGÁ'£ø Dù¼¶ŠF#\æTÌ÷q‰ˆüyýˆvT—&FN’$.‚ ’q Ššoð)l’yzì¢ó@’1Š gG8OZšì–%j1Ë(ê{’½!)Îsê_ȉGs¹BRnmIšGÈM ràÕ7ÑÌ|]Lýò–™¸„œ³Kê»lWë)æ>‚ó®*'žïUJ¢¨O& ÕÄ5 ?9ÇKâ^óÌQà—z¦„!ª8Y]IˆàC1‘tµ±Q‡ObÜ$ ˜¤.=j5ø5¡*çô“®þ! ï¢ “°D:x¾wÁÑæ%¦—œå`x+K^Ê&Z0Èy®º"7Sç¯b*Ý.°1a¨B[ȧ58ïT̨ÂÆ#§YbÉ€`®d|õ*F[@1YÒêùFr΂tÚ¢Î~ýò äZ¤B-I·HºR$[Ä\‹4Õ"É´H„2šgÓ,Qº%©>ó &$)ïˆKDwbô.ï‚Û$D bä ÜIÜ+€ÈÅ€œÁ•!¸0?|$.H(‡ î™t.QӉ˃ ˆ¹x8:S\D …@LŒ ùÿŽ©d\çi“R/AÙ^мÊò¨w ®ãùM(º"¹"#RÉ‘D|ø‰«GŒˆðˆ²•‰˜ðVLéBGE‚Η»¤Hˆ2Pïd_j–ÑcçX1»‚S¡šIòô?qð›Q¨Úº ä›ðMâø&Î>sE6EæñÕgbЬ(qEvà–à(Ä’KÎ3Çåu¯cɨœ4·GÝ=?SC*.Ç!“wkÂß(ñ3a´>$2 Cð'´øˆ†âÞß¡ÎsGC ÑÃU‰‚Î ³(¤2%/z¹R5>-Î#ÒOIð©‰?öïn÷1Èí¤´² ¿*À¿ÄˆŠq_ð?™W©‘µ\‚„{»^¨ V‹«½²r¿§˜{¡Y'„# áEu»J4v¿Jýô¸JýÔÏóbLÆüOñ<&/xøKÐS†/˜ŠÉ Õ:õN¿œK€Q¼îä:­^œ.ýí º\ý 1}W,Eúçôz·EI^âø·Æ¿ŽKÀê>þ÷bà+a”$þ¯Sÿ…0µ¾XâÿdxÊçð%·—¯B|úÛãÒË…¥…ˆ‡ _ê I©?bÏþ¥ôŸ÷!IÜORê †ðîßÔYÈí«að¿ÝÑ QŽ:_ØU˸¹V¾*üÃl´ ®°¿2Äap•Ýüí…h½ ßø†r”L8X(\Ký+¡J§@)Á˜)½ËÁß 3^Ïí zëOx•e˜eçåÚ¹ÜN+wA“ Pä­~ýBŽÛÅ1´È-2‹›Õb–,<>gÁ 륲(Àœ!Ðñ%ö^âÁ:“iª‡‚ß14>îJ¥ Á/ çA2 «BG“ZŠsIHzŠ»ÀÃÂ@ÐÀ7Í*êpcbª§²žÚ,‡ˆÍ óÈJdBn]Tá*­YLªÏï#¥¤€Û¾˜ê‡à•†b‘«ÑÕPíòV¹yÞºÇWAp­ãfž ÝÕU¤Rd}Q”³L— ^Œ×ñ28hWÐUé&/x&³ÌSíö‰ !?T—ó7 k‚~ø!†àj$õg³1VZqqZj¨Ëï‘—Ô(j"5™²»|Œøæo²Ó­—|ÕŸCÓEiª5or¤Þ’Ÿ£çˆ£äüë!›$‘g—3£õçá8Wøwfãb™ÇÿSi9p³ÑëO|L¢\¥#µ{Fémlzs(øœ™ð˜/Á'ºå9 ÿü]†§Ç%žr1 õâIðüWÑ£n/?̸ù¾žJÒ—³.€—”-XB®-.ùÖã6ŠÊvûÜAšIIWYÚ“½Ô\sÚ ^<¼lxº_––øËÑòß‚ãOž¨p¨ÛSÂ.}÷é ¶Çæ#—lã‰æXT®˜ ì\%¾Ð¿ÇQ„µŠŽ†ÄÉ=Œ¨G"Zlô”ÞÉ%Ñú+Á(ÇÆ)>ÀXÀâââ÷øbŒU„”8/QÆZÁ;ãù[€P˜¼öBä•£@wÞ…Ý»‹=àŠ!VkòzüXdÞMtüߘp áþÈD`9Œ¯=„FI5vƵ—„ܼÈ?õö ¡š‹Áÿ/À_qcüEþD%Ȇ+ÜÓù„Å$ÛF˜Iͳt!&™¿ÌõWw!I~þ:ÓÐ…˜jþr¸«¢ gŒî2ÜG9A½kíì4ÌØ<•ê˜p•F<~üHÅtª ~ùðc4~Í ¾fàþ=¬[]çHçß´v£ï`§Äçú#1p+íòy¢÷z]‘Þ»FRSïeôþM~Bz zx<¿ÉOPãõðÕåãUî/9ø…£\9—[:ªµSáu~‘RõûW‚?%øWO)ùÎr{É·Á_p…9bbú\¢“…W)ù7 üƒŽK¸\2Ÿ+úô~ § é0JGR¹Av‘úi$ÿ^ÿöMð×(C¹‹ð"Ïqy-àö¹C¡&aj)GØÄ–xwyÿ„Ñ"Äl_¿M 8ÿSЄJß4PÉÍ£´O„“SŸ 9|+2bÂÿaq‘+&"¯d,àhž¥}<‹¹û7õX©OŒÚ·Ò[þ1TKõôÄWu0êÚèZl@]‘/Çv¿ á’.…§[z·ÔÎŒ‰„õv“³ÀnEC“öøªÜ,Ãt·ètæ \>|8W1^¡Õ ûl,í¢Ô%­%e—êRŠAÖvJ ÒöRtHÛ¶‘^Lé@!ãMÿcÆ«ëX¯>ýOWöª£rÎ_GêWòîšúã4!~Ù8­[­ÎÕ;½^<ÚhƒÿÇÞ™DUíüº_a«©¬¬QÑ,AA¥p)­a`fpf43*+Ûm÷•õ¬¬¬¬×^¯¬hßËÊÊvÞËÊv+++«ÿïwÎ¹Ë £•Ù«÷þßO]™ïœsÏ=÷ܳüÎvG¼GǶ˜ŠûŽŸ®ò?»¢ù— ã¯Ñ_Úk_va?ô?lÿlßö‹¶Ùv”~»"Œÿm»ï¯ö>«ÿÕp:ž/‰3þQÒqâ¢Þ=_N¹ CÔ}¨1Noßµ•É ‰±ˆžÑÛNøb1¼Ïö[jÍõäÜ6·bšo³Ö¨ð§ÈÅ2r}l¸¿q ÇI¶¿ñÒþÁ;á+¬‰45úùwîBü«ˆ¶c –šÛ( ?jô%ÎÌ^Ü«8wö*“y4*ROݶjåÆ|Éÿµa%{¿Ç>ÆGéãrj,N]‡{tª¸ŒHÂð‚ºBhkÛñÆcš —ãÂãC´ƒµ,mâdí@ºàâ üOý3V;àP#TÙ p¥F™™êrþ‘ïl]±3Æ9–CS€ªò€¬`Mf æš6Ê7:ýË >`ð¾aHrÙ4Îpgçlß‹²…Õwƒã„mÿw‰cGwã ‘Dõ#[»Ç¹®¾]ÜèO'ˆ{űwÓ¾e»óÿë}ÿ…ú¼,ŒñïxÍn±VµZM“M‡Öq\[4Ú/k‹¶ŒˆnI4£aKÇØ]Tj„¨×´Žsÿüì9!3bR`üû(Yçá¯ÖC8¿ή·rgør2ä?Æ]{²ýõ»Ñ×èÜÑ_k—ŽþT^÷8÷Ø]ûA¤U^戌– ÛŸÎ3ò\¥nû.zœ´KG*>QþÈGÇðô8iØKÄÑøâ7 hr_áoØq][ýNÛö×·;¾Ö¯YJõkMÜ]g†}õ䯽/ãí½ñnÊ>g¹CûÙ~ÿ;±Žl{çþÚ²¯/kŽ;·ú«“Æè;,ù*lÎ…†3ÆS$áí\Ãx¿-ÝÕÞL~ëyÜ|5>Hvµ/@¦p8&n‹my_Ü{A$Ø Y÷ •™[4Í©Yó™<¯ioƒîZUË - 2ò@Mìæ€ím1oĶ•Q×sÍ:¸VÓ2­ð¹Òè¬LÂMÞØÖ'.СÞЬ°;V‡;‰Q§loþß>ÏíT÷gŸþ5ìšõz#•ÍØc»á¿£± æéþJmù_i#Ò寗¿Ðý°°Ï¯ì¢E€æ`£2Š&4ä:RÃ1WþQ/+ÃùŸ™Ò1®i´M²_*Z0­,œ#|-žÂcH¶ÈZ.eao“'hw–ƒñͱ憭Ë-öÞkvÑ*¥ÿàü‚¹ˆƒ¨õÕØÖ§ŠíÞQS/q'oxjÇj0XjÌx¾¬)LO%î¢ØßÕü›©‚Na!Öòx¤8CŽ˜9× ñ,QHìj’sOÒ ëÖÌ¥{u׉¼Å¡Dsî¼ a-‚¥¦û@­VË"Û‡G5UÈ¿06:9è1:2/F™0ÔÈ4Pc’Öxäæ±ü/WÔŸÊï¬j–¿Æx™³ÿÍ6lW¬¹Ùã~»*mÿ"÷³+Ö¯ü¯ÙÐ>”í¡ì‡ØÀùÛáëeýÏ\Ǩ‘;®¾Øáô–\bß‹éGµ>Óo|fCj_áçý·ÔJ¹É|ÛT¾ïØ6spøÀíŪC¼â´·¢h-c‰6, á×¥A¬}~üsÿ#c}æ:ynÕÕÛ¨ÝþpÐÙ@pض ‚m¬¹f@bÛ$Î* ŽKlû½{ÈÔì 6ˆòn»Èµè…bè§F­üÖ¤ù©Yc»j<Ä`Wßpäx\ˆÇ6Ø2âù˜ ÍZ'Ïû„œtÇ‹;Å}ó?ö×…‚,?#Û9l7-ž®~'lÅ5¤ÇÉKÕ“¤¨V7…ëÍóx_[liâºÎÚÕdÛ?¥ÉE0š5oă’Çhr¬Fm6YæP™V±kéùä?Ë>û«Í'þVv²ž6¦$·[)þ–e€¿fIŸZÐ Þ‘ÇÏ_cv–Œ¥Lb8W–Fã5"V?PëP~E}CÔ 6‹®bwT‹ÞÌùØß¿oITÃb Ø>†iÌÓÚç~9^cŽÖ^òuXpy3Æ…íØçe¹,5noCÊoDì_Ùc’» Œ‰ÿÿ¸ýåœ"Þ•òkv;[çt|™PGÏÑáÿš3¬sb %±ÓjtǽÁ¨° _V8ò¥H\B£Æ_‚ÿ1r¢Ê²½È†µ˜ó¹Ñ ÚÓHíêª 6QEb®rípÎv|ÛƒÚe{ãÕFý;od_7÷_¹§/&o/_›¶ÿ:HÇ÷hñÎ…©µqÕГ‘¿âæw‡ê¨.›êê5mßl¾fÕŸl3p(¹åD׫æÒ»_QŠŒ±#¶UvQ»CvÉoŽïŠ0vÉxDvÖŽÖsál|¥ó¯Ù¿hîæ;ÀéüíÛµèõpi¶ï¶ÉèŒs÷ÿö—çî0*Ö¹Q{÷´_µñWßoÜí‹òýFí_lÝ7ö™k¼§Qì_ÌËrgïÀ†îd*¦³Øowê5œ]Q>wE=‘“%nèWÝ•ç':„Óe׆ÿêéÞ~ÚD§omS—í¼b…Óñü?–è½ð“}a±ùj®|Ûo>ÿ·_ß'*j‰„Üv3ÁW†¼ž_´ ¡ÚW×l2Tå7F‚}ÿÊe Éóûœ¿k1Íï=Ÿû›N:¢öý¢£¼¨ ð÷Äá÷°ËÞ½À{ßGìÜÞ÷1â»ì}AaÌpçe¸³séÏŽl$ã:Ýã\§‡í:ÆwrhôúÖÞÂ_·ŽþZ{Ä©×u¹æ•ïø¨ºÿC~éþ9ìa;—¶{þš°‡oìaGaø¥°wE{ÉñËÞ¹tíÿKñÛeïù/(CdØ»èþ;žÿËÄö}â“Ú]ªÉßîbs[XL‡¬…îê`S$ÞáZÕœ‹aúdïõ²CeÔ¾Skßjœ ŒEµ^9L’ùK[Wµ¼e†øíÚúj^‡wºîâᶸÄ{6¼Õztƒ7ÞÎR Û+éÌ]¿ôÀjê£OSC4ÿ±û™/>YyË£H:Ñ¡kš³{ë®õ €ÿ`}! N:ºjZ~g­3üÿúØùš3ÎïÒµ«þgÇ€ÿF»tvü¶“˜éç»=ì_´vÒ~&vEÛ‹_e½/ìl ëBîg½;ì¬6T{=š·ÅÑâ\õÿ'›ÇZŸ[ÇÚ]Þèódþï ypíÈÌa:]ä³ìAGõ7îó%W‘GvQ8±g¡ã`:|tdýæ»ûýWL),¨,Ðj‚p$ÓãŽÐwSJ ìV C£5î@ q½g­ÏïuÚÏ~œ¾€Ó'Bp"£Nw(ä^à ûz‘`ÐnpûýÛ¹þ`ßðÌá;HמttSÇŸoØ; ƒÿvÙneÙ-¾a¾áôÁ½ÝðÖ‰—ÿ×híõŒ{׎çjÝ£êù·GœøéÚÿ ñóm?NƵ:Ù¾‹û þ*aüÕÓú¯¿¿ÊsÜat<ß‚êϲ…Ô’gÕüNÍ)pµdúÂAªÕçj¾À|w(3ÒШE¼ Á;DUcMÈ©©—Õ)Uœ·/à Ô9…_U¢a­R› ñCöä ÏÌž‘“ës(¾ð9¥àËtü‚i]’YÀíŽÛ‹ÿñýŽßsG÷·Ëêç¿z~ý«Çï/Rvuyú“Ë€ËËöÊÊ/•?›:DºýI4ªT¬Qqع¸lË6ðK?•¡iÐ/ÙÄæ½ÿ®ÿßΟ~|ùê§678_[èžKZ~_]óç]ÿ?umÆì¿Õú×ÜùÞšH0ílp·°6E~± ·C†îêÇðgçŸßË®ˆ? c½ÚŸB£&Ûà?‹ðßNô¸§cHaå{§æÿÞPÿìöð×Á©íœ­ð[ÏÛÙëàÏgW¾:Ç7,#{˜/÷@çöÃûÅ÷;Ó¿mßuþºi»Ç^·µ»ö£øm‘Üí¾/Ùx÷s×íÆÝzýˆÚì¬ÌÛÿ’xñæß¢èNG/ïîâØMû i³ã´qçeí(MŒx–m/ž­*žÿ«áäì8ÏDç…N"Ä'Kô«Â¡P’bÃ1Êù.ÊS(ñËClˆö÷·«ß‹™ë”ovúÂNwÄnôÖøÜ~gcЈhî¯sb(ØÔèÔ2œÅ¡W|˜Ûèæ_HÒ24Ÿ|¼S¼Þmsíb¾]ð›áŇ¢’¢Ê¢Ž7¾]/ÌÉÌÙA¾ãgÕY;l_vQ8ÛI_ñ>=Jbó·yæÓÑÒb{s7⢈„‚ \ü^ü€»Á;ZøuÖ’—–C³²233'Lpºý!¯Û³Àémñ…#¿!©þ²pZþÒïtl¨ô x›]Í jækkG;ùØôEM°)ð;ßm±yì/ûùm ¦zê€Åd¸ó¶_ÞãýþQ¢éC3³bqœðzGü@ak×8í@7m›üý%ì¿éw˜~k<·ª±¢ã‘õ‡Æ£âñ_ØóÂ5õ¢Òžœ/þRå iâ½ÉBW×È¿ ÝsÍÊÝx‡2¿O™ÎïVþÿʞÖ]»à˱òï¿·S¿ýR½·yìM%37-¼ócå¯ý gÇî¿Ä®¯Ÿÿêü·ÿ~Âï¥Ó/{Ù!ÆïßÌÍð‰¿Öï!z\ž:W¸©ºŽm]2'ÂÂòÊÉ¿§XK†…çw^ýÃ~cÛ8^cGØÓ[ýz ¥µÙùÃúwçUþâå+ó ï€øì’1ƒ]ÆÎÆßìßþàëeýÏ\'šÍcrÎãiã騠ƒnÛ3n<`Â¥ÛíœïöûuÆkr¿ü?ý[XöõkÔ€E¹öçþÙ1í“«Ëþ°~ÿYŸÞ±òÛÇn>ì ŸhýÛÅóýÃß!öøY¼ÍTŸçP Xí“!¥~Éò¯Þ]ìþ‹ã¡Û_Ûð˶÷9þ0úþF_£³úËãöï5åÏøÎ8×8Z,üÃÓ2⺚¬ ;ǰqØ4rj²]0~oÑo½À/°kêÿ?oÜs×ü&yÎ/†±ýy×]ùÛè¿?±gÛû‹NÑO.´ê<Ñ¿s™ý;—ß]íõÝ@î?ÂÎCšö«ýûä\§8gçøï?Ÿáñ/È šÚ¯'ìŒÕ^§ÛãñzøsM0ŽdzÜ­)sÎG<6óßþ+{fm çPÓíýÙŸ C¸š«ó†œ¦†jú¬%¿o£7Àý#gCÐã Ç µÝÈùlì7«ùª?+ÿïüõšüâ“ñ îÎ?øúÜÿý3ú½¶ë;ÿ¤Kÿ%®/ù³ÛÝ?õúm×,ør¬ü»óëøß?ýÁN“o\âd+O}ƒŽí¢®ÎÛÞý‚߆ñü7?`Ú3‘;® †\‘ÞìÑNž£á™ë9íÀ¯w^X¬=ô»Cuöêüø×ý³±î?~½øW‰'»†?»ýïP‡DõŸÄjfщŠ3´K†FyükGüÑó6¿tÿö1Á?2ü¬ _ò'×Ë­µùŽ!…•?ìÝ3ÿO9`ÿá~O‘û‹b÷ºäü†#yRVVv‡M§áÛwÊÙ¾Ó°í;ånßiÄöFnß)oûN£¶ë”½ý[ÎÞþ}elj|Ô–¬_ÞÁe„ç^ÁÙùzxßqç%\±âñC~ëy¿d¿ì’úcWÕ¡»,œïÕãp~Õž?ªÝ;'^µ^Xíg‰ ÛØ“íÎÎÉ &Ã=*#;k°;ôqŸEç_¸V‚íZQm‰Ú'cøë)þí.tzTgFõyÓJ'L)Ÿ\PYYT¨NoiaëáWžn Nc DXìa®¡O~¯§Ãºf;?‚LÛ$ኸØ_=˜º¨;q®}ó¹uzÔýw|œ¿€ió†ƒþù^—w^ØÕô¸È²¥n} lÎŽÞ›ü‹þs~‹ÿš ÿ7ù§ð‡íª½ÒÿìŠñ€ÚÔüοr'ý;»ýW ˆ¶1oû{‚wÔ6Šw“Äm»îÚw·üıãù¿ŽÿÕý7Æ{2xUȾ/&ÚŸ³æ¿!oþ7ıãù¿”Ÿ ŸËÑvþá‹pµ?¾Lþ·çmäß ?*ÿj;ŸÏøÜ쬬ÁîaÃ3ò²Üñ!k±Ï{ß8ßÉ¿]E^ˆÎK;c7×½µDBnû^Q_] òzä+¤všßwö®a°{ûcâ|]†:í° Qù),¨,÷iìåUß9½ù¾P0ÐÀ+Tç»C>wµ_n¾õxk}¯˜vmpGjê—N©ÕÅFÞUá©í|ÁFoÀÉ/ö²Ü¸€µ–[}ál †}j ñïÀ—îûѬýFXÏñ{ÙÞ:óùz‚ n_ÀöF£ù•dü'ºvQ/›çç¹ÎÙÙùéß{~ôýÿçó_>›þŽÒÄ»ž´ƒ:ȬãyÏŽ]WjòOöïxi±öϸ¾ñ.*ŽÃŸ¯7üÿŠSûmã0€ÿ-váfæ/½ÿ¸«¶£yÌ]<·oòÙ?\cÏ.“s-s.þµÛÛb®YÍ?GÍ5k=:Î5·öˆÓבóÏQsÍtf‡¹æÖ^»t®9'+[M+v iWÌ+ædå˜S‹;þ/Í+æd 3§]w&ü_œsÝEéÜñü?†ÿÕñîމiÌŽ“·®ß4yûûfo kWÚX;sFÚ`gÂ0æsíi ŸaÔüî_ˆÿýqNþßûÞ›|MÎvéÔõ/áÇ©üì¨_ñK~6QCÃLI»0Ìÿe?ÛcpÜ–~ûï«ÞþÚ² ß𠱨o§Ú]»Ýý.“®ÏUkø¢í¥qâ§k?ü7Äo—¼›ã/Æ_=­ÿêñû«<Ç]FÇó;ûûâŸÊìà_= †Ü!2´jB< §j‚ˆÛdz:ò… >w Òáå<–8A“ó—žœá™ÙÃ3rr}NqO"8¥––Áæ±ñÜìßٯѺ$³àø~švüž¿æNÿ8wvì€ß‹9ÏÃoë4ßøÎí „véOÏüÞøýÊõ§Ñü÷÷Gœòùùƒ÷=Ðé÷U×­õ‡Ö"¾ºšú¹™5=GeefõÌÊš“5tÔpg֨ѹÃGaž·çÓéz}èèIG':¶=•®CÇgtìþFºþõëéúûtž£z[¿ÿ‚YÑáßîqèú1Vü7Öt ÿצ‡¿!&üE^ Ãc…ÿ[ãÿKùjgýþÕY™'ËðRç?üžpL;÷lÝxÿ8Kç!Ù;U/0m£²wúý·`¤ÿ’HÿvJ[#MŒônþ+Ç ýw„‘þ§ìDúWš­3eFzo=4&ÿöûÒ¿ÎççÌ×jÿa±-tb×úq}êmƒSõ„™©æ9†½`­Š>ŸËa <85êzÆyv»ã—Èc;‡Ž|uLR‡‘>·¼?Pç#é{‡ˆóöÂa·{ŠüÎq\ß'Ú/»±Ã}cŒ;»méc¹ÿãÎnöó;žßnsß'ÆÝìççĸéí>.NøìÇp/q?9æüê8çŸl;?ã~tÿèó—Ä9Ÿýî—Æ¸¿OúV:ž¢c#?ÒÑBþ—Ó‘J玤ca:N¡ã2:î ãE:Ö’ŸÍô·Åo/:¥c 踈ŽvrïšD~éó­t(Ü'¾çŒýâ»ñó/ÉŠvã´ãueüì7”eÏøÎðÃÏý‘ñò9þõøç—Ç¿^,ùŽº#üÓÑžBý‹Ôú¶tùÒõéȧ#BÇR:VŒ~FFÿ$öîÞ?MŸt@šþ•ƒÓô­t´Ò±‰Ž8·¼KpÎLýMa/Bq90Mß’‘&ìÛÙ¤›úZ:Æ”&ìÛ¼ùdÛ.tèƒèó²c—ÑQß*¿kiµìÛ‚wŠÃ»­&M¯ò¤‘-N×Э6ëWQN?~´sðÄÒi:‡eædsæde Ëž•ã\îõ8'¹#Î_ ©EºÉåe™ÿ‰sFÑ9ã'TŽÊrÖ†‚ˆ—ßÒ ýgéÁîÚ‘#¹™üúûg[_Ç[W’“9*;sÄgö¨Q£²†eç•=ÁÂ1;3;3Çòú½î°'ãdœŒ“q2Nþ_?ypÁøñµ^çÈÌá±¢²Þë,õFš}¯³ ö6Tû½!gV樼»©@òdƒü»þwfxõÿû9<,]ªiZ_­Ÿ¶‰þæiÕÁ†êÌZmD'[ïÛÉyL‚¾w'U‚Þ]Ì‹ÞÝiôÐú`ƒwh8œë ×õ…ƒÕ š´™ ªÃÁÚˆÆ EûÑUô÷Nm)ý»—ÆóDý´·Døã¦Lî §súiWÑß éÓUZ"ïô2VéÓ´Ý4ÃÏãýô1ü~M\¸«fMüôÃü£y΂.+çy5VóSWñékMîRûùç·Ô$ðÏ?—t6~í@Î:eådfó/-á;|‡ïð¾Ãwøßá;|‡ïð¾Ãwøîè»ì̬l|‡ïþßý•òýñwZfxACÄ]M#!ù·Þøä ø"ZfÄÛÑ\.¿¯ºÆUòzCÞ°«6 eÖ’³– zÜ·ánªV^ŒoÜt:‡â­§“Ý ^-SøÏä_ “æÔ„´Ìº ù«‡c/Öa/5Áþi:Å[ÝT§eú} ,Œx3 Ɖ¸ë¤Ò~-é*%x]þúÖ®úzú›bsïªþîmó§ÐU ¥ºó-Ÿùêï6žÓuOAŠÖÞÕôf†7Êæ¯ð±t½pBJÔ; c•?Ù­"Uä¯üˆN¦?§ú;Ñæïö¾{è·Ÿëˆú}#¼#mþÚÉ_;ùëÇ_ÍßFò·‘üÍNíèožò'¶æfí¡k7;´õ’LFº4Ûü­/ÊÖ×?šaæD{x‹mþÞ$onÇßÉ6ÉßFòï>N·ùÛDþ6‘¿Ä|œ£É’!îcB¶®=–¡­œZÕá>.°ù[yñ¹ÂŸ#&\Î7Øâs1ým·Ågýs°Ÿ[câÃåff[ºþú˜ðÛ鯓ãÛYÆ÷½÷­1ºW§Žçk3öÐ Õýîã>4ž·å¿ Ž{~ýº³“t¯ˆã^5gݯâë‹w~ãú`å~l÷Ö¦=ôIºt_/~§î¡/Rç_ǽíô=ô¼.Òýî÷§ãøwž¿‡>°«ôÿorw^º‡ž¥îÿãxá“û*ümäÞ¶Êòß­sGÿùW©ÜÓ㹯¶Ü‡Äqo»q}]7é>ŽÜó)¿vÕd~-‰ã_»‹ÂS÷ãŽqÄ ÿÈ,}©ºþ±1î§ÇèKcôÕqÂkŸ•¥/SáÝãþhÿ­Ggé«T|_a÷š,u=µwâøw’{¥zþ_Ó_g­åÿ§ÿ»w‰ÖÅèÂ=-FωÑÇÇè bôe1ú†}Œ~1Fÿ;Fo‰Ñ=ºFkN|¿uÿéô¡´‘÷ñ?2F—Æèª‰Ñ'ÇèóbôÊ}SŒ~8F¿ç~VÞGùGå÷÷â¸kXùëÇ÷þÝ:úo{4KOPþ÷‹qÏÿc”~ª|ã>=Žÿü§­øT“{+•ÏÖ$Y>çÆø?!FŸ£¯ŠÑ×Çè[â\_{ÎzþŸ¿ÇëóYz’òÿ~¼ûYg…·%ƽs÷hÝ/F;côÐ=:FÅh¾~Û‹V}4#ƽ6FÏÑÇÅè‹â„Ÿÿj–ÞE…mŒû=1ú©ýVŒþ$Fo‹ÑzhÝ7F§ÇèA1zhŒæøkof麊ÿÈ8îU6÷±1î“bôÔ=3FωÑá}\Œ>+N|ZßÎ2í‰ËbÜo‰çÿ«<ÝãþdŒ~'F/¼eé‰Ê^é®G»§Çèá1º4FÏŒÑ~ÛF«~©‰qÄèSbôå1ú¦}WŒn‹ÑOÆècôë1úÝxñß”¥ìßžÚ÷1îI=£õA1º FÏŠÑóbôq1Z\ÿcëyŸÍúóâÿWÄèëã„§}fÕo÷‘{kìíe2¼Çbü¿Æî?gëùƒ¤û¿cÜ?‹Ñ_ÇèÝ{ŤWŒNÑûÄèœ]£Ëc4ß_þWVýåŠqŸ£wþëü3㸯´¹_ã~eŒ^£ïˆÑ÷Çè'ã\ÏùM–îQåóõ÷bô–Ýu·8áý¥·)û!-Æ=3FÅèi¤[»fëKÔý'üÖnÙú$ßH÷6Ýr?#Ž{~B¶¾J…e¼ð{gëõÊýö÷Gbô[qÎoïC×WçJîmûæèyódþþ:Æ—„hÝ7FÄè11º$FÏŠÑsbô¢}NŒ¾:Fóýå§eë3•}vOŒûÃ1zCŒÞ£¿ŽÑ=vïx=ç l}¶êŸô!÷ª³unæY;bügÄè‚]£gÆh_ŒnŒÑÇÅè¥1zEŒ¾:FߣÛbôË1úãýSŒîÑ;Z'Æè=IguIV­Jgmif¶i_n´éJÒ›ö‘n±éãH/²éóI·ÚôjÒKlú>ÒKmúŸ“»Èñ–7IßÝ=Y¢“Ôïsxz²~rÿ‚ôà„dÝßCêm¤/蟬s?žµÞGÓ¶^cöÇÞfÓûñÚ…–Aº«M'­Ûté›öN´éy¤“lúÒ›>›ô@›¾œ´Ó¦o =Ȧï%=ئŸ aÓHgÙô{¤ÛHÖS4yÿ[lC†Æó¾y°õ¼»$vt_—m¹'’ûJz>F59Žÿ›G[þ÷%÷u¶ç9„tcQ²îQñ94‘Ç“Åx ëRÒ‘ñÉú1JIz+齕öX˜¬¦tsœëWM°®2¹//OÖ»¨ür!é2¿•_®äðƒÉú]*¼›Hßܘ¬ß¢ôƒ¤=ó’õÃÕùϱ{(Y?Eé7Ho8&Yß««ÔŸÖJÖUî[I/™•¬/Sù¯[_Êäÿa~_Ò«Ëè~”ÿ½I¯¨HÖ§+IzKe²ž ÎÚ3èúêübÒKI·*=‹´>3YÿQ?‡ôÖêd}¥Ò-¤—{’õ;Uù8¹oÇôËXéwn÷uÍ–ûßâ¸7.°ÜWö•z¶Šß?âøÏ:×òw¼ø\n¹?ÇÝùwËý™8îU«-÷õ}¥>NÅçÒí¤ ”þ‰ô†Lc¼·§Ö£Õ77ZñO$tS²>AéTÒ³IOVzÒkH—(}p¿ŽñY~Ÿ\rßj»Þa¤fYzé16]NºÐ¦gÅ _»× ßÇ}ó –{0Žû²·,÷ùäþ̧Éúj•Î&ùŸÜ«(¼*¼ãøo<ØòßNÿ¶ÙüŸAþ[‡§ˆÍL•»3'[ϱ¹ç°Ü/$½n¤ÞßI¿gÓבÞlÓ·‘îšgéûHw³éÇI'Úô‹¤÷µé·HO°éH—Ûô¤²éH»mº=˜€M÷!ÝhÓ©¤·éA¤[m:“ôÉ6=Št[Žeï²v³t>é%#Œw‚öÔ&’>Ó¦KI_`ÓSI]f…4éþS-í#½‡M7‘>ЦO$gÓçžeÓ+Hûmú:Ò›æø.‰ïʘø®¶é»H¯²ÿ é÷múiÒ]Ê-ý2éÝlºôÚê½·jo…öFëMu–þ”Ÿ•/½³ê¯‘®"íФþ>I¾Ó}Múï5€êWÒF{ŸNšßõ>X¹!¿"GÏPçg³ÿµ)z«ò?štÛÅ9zKWé^Dzé «þ˜BzÒH[ù%½Êæ"½Ò¦—òù«Sô†}DÚ}ŠþŒº¿•¤—/HÑoè©ì#Òy7¦èc•û}¤WŸ’¢‡TüŸâû9źŸWÙîï=eo½Gzë)úëêz›9>[ñé‘Líß)úhåžFºå)ú÷ʾD:ñþ}“a‘N¸$El¢d=‚täöý[¥%í·ÝïDÒ+¬ç3•ô™6÷jÒËlº‰ô6½„ôr›>‡ôúSôdu¿—Ó‡OHTú¤õ‡RôL¥×’¾ûáýz¥_ í }¹Òï‘Î#ÿo+ý-é¶ëõ$CÞóHŠ>T¥ é KÑ×(ÿû¦ÈõÒíÒ­méº\ÔYOúLÊÆxótÒk(|]…ï"};ic~ÝKºäÍÓ^šÃ‰·RtŸJßù|þ&z^ÊýxÒíöô"]Oîã”ûßH'‘.WúZÒm¶çqé ¶óï&ý¦M?Nz£M¿œ"×gHÝ]ëêë;dzvÑv'½)ÆÿÝ1þ»>$Ó‡ý;Ioþ>Eï¯òë(ÒG‘®÷þ»iEìÿ§}¢ŠÿLÒ‰—Yá»H¯¶¥ éª<«Á¡WáÝš&×?I÷Z;gœC¬ð¾"Íïï_«t—tù~yÃ=9]¾_Þpß?]¾ÿÜ|ž¤ùýç†{1û›­QzJ:ÿR‘¥§‘¾à,‡^¡î¿†ôÌ‹úß…¤K–;Ìöé$Òm¤Ç+}éE=*û¨›vy:×½]¹¯!½ÆVÞîâë“ÿDåÿaÒ›IëJ¿Ä÷Cº‹Òo®´¥ç»?›þ‚t™Mo%=û2«>îI ‰Çæî =Éæ¾?éÙ·;ôsU{0Œôtýžêú‡‘îª[ñ-%DÚ(¯G“ô˜CÿLï#uCÿb7©[I;nsèשô8•ÏÒ¡­ÚãsIo¾Ó¡ç«üuéGÈÿÅÊÿí¤ëmñ¿‡´ß¦!ÝhÓÏ‘~q÷z¿79¼÷ú¿ñ>Öï9Ìñ¢ïøþ>vèß(w}JOòoŒ%“^½É¡¥îï Ò›û8Ö¶ëAzÓ‡þ–ò é–ˬö°ô"›ÿiO¾U¿ŸAz‰Í}é»»¥ê'v—áqýÑS¬¥úc±ª?V’ÿVÛù·’“jÚ’ÞBº@ÅïyÒ~ÒK•û;¤óú¤šùûsÒ·õÈÞ"=;ï©i‘6Ú³dÒëúXùáÒ­t?­j>d$ÿþÙ¸ls¾o"饶øU’>ÓVÎ"½Ê–?ù~‰¹ß1§+û¨‹6—ü?2 U¿P=¿…¤=ýSõó•^²'·©úÓê~Î#=;%U/VúJÒ«Iõ·¿+)¾e*þ7’û˜E{c´7Ûâ{'¹/r¥šíë#¤×Øîoéglú ÒOØôœ~6ý 鶺TýNÍzÞOÄÜÿLºÿluÿÝ÷¢üá³®ŸDz½-¼tÖä~¤rÏ ½!¦=z&&ü3)ü½Tø‡Ð‡¬9©ú~êüÃÙ!e ž«Ò£Š´'˜ª»:Yñ]Þ o³ /Lþ«lçŸ@z¥M/'Íïz/QúVÒâ=ðÊþxŠÏO¨ß­Üß#Íïˆw(ý3û'½VùOvj¿3Þhÿ³òÝñ J“æ÷È4î‡4¿SÞˆÏBÒü~yãü‹Hó»æúúvÒüÞù|¥_&­f«ó{jï‘n'÷½”û礫.·Òÿ{v·=nT±l$¨ôî\Ñÿ*¥ÓH?sbª(Â^g÷=êÎ2üá¤9Ÿƒ¤žHºj¶å>ƒtë¼úÆÃ¥®#½rIªÙ^mÓ‹Iç¿>P,kaÿ'qx¤ý*}—‘nc Þb´ìþ¦¥×°»MßÃîoYúIv·é ìþ¶¥ßgw›ÞBzís©z–ÊoݹcLú•ýI?óTªž«Êó>¤«Þ¨Wªó‡‘þäùT}®fŸðeªþw¥'’^ùo[{Gúf›f÷¶[ϛݵw-=táiú½*~µûÈß8K…ß@š`Ò-¤ù· ÷ŤùwTútÒü›=”¾”4ÿ~@½ÒW“æßè­ôm¤=—[õçZÒþ‰Ñ‹bô›~ˆïïï¶úŒÓÇ–ÿEzÕåV}ø ‡—Ÿ¦ó¼>ÇçN/rÏWî]÷¥úáÐ4ý†ÎV}±>¦¾(y4]?LÕýÉWÛõÓHŸñ®U"}»Í¾A:Ñæ?Ÿ´nÓe¤ÙôQ¤lÚC:ɦçvØtéÁ6},iÿ´4ÑŸãÛ¤6÷KH´ékH?R”m®âûß[ÿÒýÏS÷;ùßæIÓÓUø÷“žéMÓË”~žãG:[é ¤KH'(ý.éüÅoqz}Áñûb ØWÄúÖ_Të¡»iÝiZ†-¾É¤ mzoÒ¹6} é™6=”ôl›Î#]eÓE¤=6=t™MW‘ηé:Òcl:@:˦ä'Ùt3éJ›>žt‰MŸL:Ï¦Ï ­•¦÷UóY—ø}š¾»­={3æùhÉþ?ŸëÈ¿s·=Äx§ß]|¿¤úàÒí#Óõ.*¿?EzåðtýP¥ùü¶˜óµ„èóÛª£ÏßêJ׵ߚ}~[Ìù7Ÿ}þÆÓÓõ'•~ƒÏ§ô8S¥Ç¿I'¬´ÚŸ9=VZéõ߯Mo#=Ȧ»“¡0ئûìÇóåéú0•÷dC¢¿Aì~sºhßÄø$éÛIã=ãH¯¸%]]éI¤[nM׿Uz:égîI7í7_tº9¾ZCîü;0œ¬}éz!Ò+ÏLÔGvæ—’‘½H:‰Ú»CÉ}Ò'’^¶DöYŸFz½šîKåõRÒm/Hû„û“ï÷B‡Þ©“ô?ßßÏ}DýÍá?Åî#­ó_&Ý:¨·~z²tÿ€Ã?Ç¡ï«üKºëñÝ©tÏý)þ”žž’t>Ùs¤o¦ø~®Ü3HWÖ¦‰ùDÖÃ÷×L8ŒÒ‰¹i"|Ž_é%§{„ýÅþÏê§ï×UêzÒ«÷NÓ/Tî‹H/šàýAÖKÙýàd=§‹Ôç’^Ný¡ƒ•ûJŽï!)¢ü°^MºµG‚Þ¨Üï ½vžC_§ôƒ¬‹¬ôy†tÖ^ý1ß—IçªôÛ›Üßåë-MѯRáË×ûf€~aO©õèz$è}”{Ò[äøëA¤'ERôýUøÈùã~ÊÿHÒ•‹"?°.âð†[ñ›Êúùb½??é':Ä|=û?žôÌ;Óõ}Tz^DzÅsÉú!*¼¿“æßizm7© ×[Ž÷²~Œ´'%E¬`ýÇßvÿŸæß{MWî?“^~ѹ*~½µÝ¨"˜yo²™Ÿ’HWQ~1Âß“tûWýp¥³Ëß·œ£Ò#ŸtëËÅ|5ßß4®XJ{éïô’þ=¤óf¦é÷+ÿÏ¢¿Éáuî¬5“^ô}Šh¿Øÿi¤ëLû]E~!½2µ¯>¡›JÁÑùõ^vïÕOßSùˆã3!EŒ¯²~–ôІ41^-Êéü}ÒôKŒòÃç$ë7*­QAt®KÒïRùuwÒŸœéÐGªø'‘ÎÏê«÷ì¡ÊéeO¥ûG”'.ÈÇ÷ã?¬ÇÈû­üt8éÙg9DûÏá•“Þ8*]ÿy?•^¤[ÇZùg.éöÑ)úu~ÓÑ÷¿„õ>俳ô1iÿ¹éú•ÊÿÒgf%›÷{éÜÔd= îï^Òw’¢Ÿ½»ÔOh•/Î?ëIóo8®Îÿ˜ôr[ýÔé ëù²{_Þp×%Ù,ß©Éõ9·ªü¾ïAVýÅ÷ŸMz)Õ#”ÿ±|þ»ëwu—zé¶ÖD}’*nÒY¶üÛÀê[oLú8ÒeoÈòÊþÏcÿƒRÄøëåìÿÜîúu¹R_Cú™§SôG”û-¤ù·ZËU|%½dUºXoÁzé™ýÒô:¥ßçøŽóO"?‘žÝ'Å,O?³û^iúP#}(aÚÎKÔ«ôß›5Õ=”{iþ]ØUFù"ÝBöïLå>‰ô#»¥ëü‹Y¬g“~sž•¿ç?N&½þßr¼MÜ/éü{ë#Õõï&}û 4ý £>!}ssšþ©ÒíËߟ¬TÏ{3é T?-Qî?òõlí[jFôõ3IóoÛ^¤îçPÒ«¨>jPçO Í¿w”Š_é7/³êÓ0éö¦41$êKÒÏœîã߬Ï'½æ¥=[=¯+I?qnŠ>U…·†Ã’&Æoùú·“¾ÝVž×’^Aía®qÿVûÇúyÒI—¦èKT{ÝNzÒÉú=*?~ÌáONöë¯HWKãåì_BùqYº¸>»÷!½âs²Q>Hkw%êT|÷%Ýzl‚~­ºŸ!¤ýZªXO&ê—!<˜¢Ÿg¤'éD²?Ž3ÚÒüÛ}³Uü¼¤WÍHþYÏ#ß·¯~¨roåø|âÐT×?‡ôæ3’ÅþMQßrüæ%è?*ÿ7‘v® wWõñ¤Çœž¢ßÑYÆç!òwÁQç¿Fšnºþ'|þûô!Fzч¶K|zkï>¢üvÎdû4A¿Qß‹ôíÕi¢¿È:™tÖ+ÒáëíA:ÿº}Óá=Äù™¤smõÃXvŸšb>ßbØÜ+EŒÏ±žNÚ9NµG¤!]uxŠþªº~-ŸŸ"û󜿓^Ô'U¿ÄH¯Ìh{p9i­~¼šïÇ­ëϵt’éEšGа/a÷²ÞúAª<¿’iÙ‡¢ü±{UŠ/cý9iþêt¥»QÅyò»Š?ÒgöKÑk”NçŠçéú§*¾{“¾9É!æYç’^Oý?£¾Ãá=ëÐ÷WöF9Ÿ¿ÌaÚǰ~>E?JÝo-éÁäüª(¯¤“’¦}t&éW¥èýºHÿ#½Šòƒñ<¯"øŠeŸ\OºŒôÞJßAz¥íy>ɺ2Q?I¹¿CÚÙ)Ù,ï‘ΰùÿ–ôÌ+Rôʽ?J­_.Óù»tÏ$ýŒÍÿ8Ò+;YùÿpÒõú*ýf‘Î#ÿºò"½ŒìçTø Hóïx÷SúTÒ¼ž&ì3¾ÿ³³äú'#ÿ]‘]_ÞÇ×?,EŒ/±û㤗æÊùzÖ/²ÿêzNjH¯UóÍŸ·Io¥öøPÕ~~Bzõßú©ëo!=è,«þÛÆá]ìÐg¨ð{dSy:Œ¶$é+ºŒtýb‡ù<ªH¯pR|T|C¤K†§˜ý‡|þ}õWU{u2éüÃôUCÚŸêö'ë‹ùúdMSúrÿ¾d1Ÿ(òé• ûèÇöÇg©Cß]¥Ç#¤o/ÊVÏ·§ö,ߟ3MÌ—Šú,[þ¦òråþ!é5_¦šý•®9Ô>8ÒDyàðHWRûeÔÏÒkf8Ìúï Ò+/í£§©ü6‚ô˜—¥½Âç˱ìKÖŤW»SõOUý{ éö­öwé™é³?s<éüš4³ü.%=xuŠ~´Ò#Ýõ8‡ßa};é ëäúTÖðõ”ÿTz=Ïáu¦þšJÿ×H· Òõ¤·eÒóPíå—ìÿ¸ý åÞ‰:öm_$éa¥“H—t¡þ¼ªÿ ½ÆVG³ûO)fûwéúqÑŸg}ä0ùþŒ®êþ«HG’ÒôïÔõç’^ùœU_…x`¡_’þxŽ<ÿÒÛnH6ÓãBÒ"½—Ò7 ‹.ŸwsüKôͽ¥ûS~Ï4³ÿñ:ëKõ·Uzý›tþ©ýõKŠ¥þštãmdŸ«úä'ÒË]©úmêþúRCµÒV?ìK:ëšýŸê~2I·u¶ìëá¤ù÷/P×›A:ß–~u¤¦éAÃ~b÷ÓÅz%Q?ñõÞJ3ë« I·vï­°‡Ô«IçÙú“w‘~¦Ú²&=ÈÖÞ­#}A‚COSÏóÒ ”G*ÿïsøE)fü?ç†ùþtQßóý}GzíyéúGF}DwÝ VûHškö\#}H·RÿÈè_e°ûœ4³>E:ÿb+=¦·Þ§’ÈûHoŸjï°ÿH²~·ÒKIo>Õa¶ïç“Þ’íë¥DýBšëöi¥o!}Á"Ù¿c}é¶3ûèe_r|÷MÐQéÿ"éåu©f~ÛÈ×/I1ûÿ‘^²Ù§ÊÿÒ-õ©ú ¥{PÇ)¡È/èKzÃ#Éúÿ4Ò­dÿé»/鬩fb8w¼ô}¥ÒE¤ß¤úépþ,Ò…¶ü4‡tâ‡~¼*ÿLj_9kDtyù;é¶™½õóÒýFÒ½SôóÕõng=;UßMåß§H?¶Æ·^Ž ï#Ò%—%›íÍ—þ¿v×OVñÑ(£%4Zög¼\²çËUùI䌘e=ÿ½I?Aùe™J¯ƒI·ÚÊó(Ò-¨>VÙúÓèÃ#¡1¾ËîG“^9¤¯~¶ò"½šì+#¿/i¥Ÿ2é²”³üÇcÕ§W‘nœŸföni•?Ñ>ëHBöG¶òÿ鬥V|?£[ÈúJ¹o#í̳Êo eÜö×õCUû½éU¶çŸEzà©)büŠÃI:as²~§zþHçQû™¤Â›‘Çû7RÌòp }¨zÖª½ìÐê0듾þ¥Éú\£~"ݺ–z»]dý¾‚tå ù|øü«H¯¶ÅïnÒž<ëú/’Ž=Y¥ÂƒïçMjŸÔóù2/Ú~ÿ‘ôÝê}Gœ?£¨üQ³H?˜tû!Vû?’4ÿ¦{W£þ%ôDŠþµòïÅë ûèC”{„t =uýSI¯¡þüuýsH/ ¥‰õ°ì¾’tþn úþ*=®çó»Tõq7í6~aÛ;ý%£}æë½ÑWï­ü¯%÷L1îŸ4ÿ†¹Ñÿø„ô2² ûùgöŸ?@oR×ï3šüÛ싃HO ¤™íÍ!¤ÛNJ5Ç?¦’‘-ß—Äéã"}óãÉúkÊÝo{9ç×%¤[Ÿ¤çÛ]†)‡o{ž×޶žŸ'éÍ3½î'ÝU•ç¾{jO“>“úÛFÿæ_¿C{ë7ªñÈOIç礙õÇ7ì~n¢ißýHZ§üjØ¿½¨b­ª±Æoö:Äz?çQ‡ðø³U¾§“ΛGý5#¿óù]õ 1¾Áõø¾ú 5þ¼˜ôÆ7­öëtÒ«¿z éúŒ4süífÒ›Ëz÷®òþd­ÚGÖ"÷KLWÏÿy¾ÞY½õ‰êú¯‘ny#ÅÌÏŸÂãOýÌúüûC¢ŸO U*Åìÿ“tÂÌTQ_²~öP«¿ÊúÒËZ­ñÉM¤_|3E=oÊ/‡Zö5»w?ŒÒ?Ü_¯î/uOÌ«ñN=I94M¥üÌî=õÑc¥MzÒ«r};ëi¤7vNÕ_Qéã?,z¼v>éÔÞ•åç0/I0íÅ‹‹~žkH·&é ª}[ËþÝ :ï£ö,éO¤ˆõl"ÿDö©°G:“=B:ËfO½A:ã²ý%¿XŸŸÌË¥½Æ×fµWÛHoÝ-ECùïN÷ßÉšéMº}rª~Œ*ÃIoz5Y]éq¤ÇPÙ¥Â;b¬õ|9M#}7ÙGÇ«ðŽk¯°ÿjÒËoL6훹¤Ã­þnËXËþfÿKH/zÊêžNºmJоM!‡Oöó{J¯!Ý:B®Ïg}é5[’õju¿÷“Þv†Ãt_Gú™:eßSú¾Î7‡XãéY¯¨¯VíÏÏœ^/YíQZ>Å'Å¡¯Qá;I'Ù왑ùrŸa?#½Ê“C•§™ùlÿ“½¬®WGú™W’Íþx˜Ã_ÕCw§H}éŒèyªþͤg®KÕÚ[å·|kü€ËÛå¤WîÕW_¤Â¿št™­<ßJúÛó{œô ‡?fÿ/~óÄTý]#=HW…¬úîSÒúêd}ºÒ_çóüC¿G·ýH:÷ÔdýUô Ž}dÏT}ª? ÝúH¢y?£Hg LÑoUá•Xï·ì§uÒ*IÏ’f>ŸZÒ+× ö/?Hgä;ôQêzç‘®ZÛCßë©WÈý˜Ÿ+÷›H¯³¥Ç¤—$§èwõ5éU­³?ü>ë¾)ú&¥?㊖Dýjÿm^mš~˜º¿žã¢í«DÒë÷·ì‡”qÑõùþ¤«lõuéÛ_sè›U| Çñûðè÷ªòègçsxÒÎÏÓ•ýÙM;…tkš®¿=AÕ×ã¬ñ5ö9雟JÖ?Rñ½–tcÄšo¿‰ãó”U~o'½iSŠ~†ÊŸ^ÒjW¼Ìá7&ê{¨úíߤó_NÔOPíÓV>ÿþdýʧñVÃï?Þ²/9þžùd²XOÁþ3ÇGÛŸy¤+mϯˆ´óÞúÉ*½JH¯l!ûAÅ·‚+Ö‘)º[…WEz½mþºt×ý­ö%BzíþN"ÝúÙ‹]eü.áë´ê¯ÆóûUÌõwóõ§$Šý\¬çøœ¨;”~Žô QiúSêþ_#½,3ÍlÿÅþK­ùÃHo §èJÿD:ÉŸ¢?¨ü;¨ TIÑ0ì%Ö ­b}•è?‘ηµÇHÏ^cͧM&½žì×#”ö°ºþj¥…Ñó-M…ÑãgpATã)¢>"ýI¶5¹Šô¶çõ é%.‡9¿ü<_Ú÷Ý”~­0ºýÜLzÓ•Ò>åðº!ùˆ']ßmé?™ K5žÌî{‘^5-M_ªÒ'‹tÕx‡¾Ué±E–½'êÒm¯õ5Ç/=ìÿ–tÓ^i)ŠŽÏÙ¤7º¬ñí I;ÉÞ»Jù¿¼Èê‹û/²ž/ëH·žÓ[ÿ§ª?î ½h€5>õßßñÉf{ü4_?Ü[¢ü¿Iúö/¬ñ”OIoÚϲç·rø¶ù‰Ÿ9=lóÃ=x!ÎÍôê~û‘n×,{ •Ýmó-{‘n+IÒï2Æ‹IWÝ3À>„tëȾºCÙ×SH矗h®G¨äðlé]ÍáÙÚ×ãH;Û’ÍùœS&DÛgóõö³ÊÃÞ ýõgó¥^MÚÿ6µ*½î ]i[¯²–ô¦L‡io>Âñsdés dù}ƒõ©}ô#U}µq‚Uòý8!úùw¢Ž^>Ù³sUx½H;ÏMëõE}NºªÈš¿Î%½„êkÃþOzåyçê-]dy(™(÷ëöiéÙ§ð2!i¯“öëý~U¾Ig NÑ?Pº•ô:Ûú¤ &Zý;Qß“žd[_t éå¶úíqŽÏ)½õJõ|_æû›¢7(ýÖDk~G¤é®sè×+÷o&Zã#"¿ñùd9U|zOâ÷·¤‹÷¡°û>¤dŸß«ôÒ3mõÃvÏ—ï_áóÇ“.»3Ýl+H·è«'ëÁH<8UÏRÏï´IÖú8an_æ0í›KyaÔÔPñ_Ãîoö5ûç·NúÞJŸg'E?½B:ÿ߉zsºt›tåd/¨çñ)骛{ë+•þ‘ï¯Å²o(£´ÚÖõ'íìÚO/Qå't›mýÍ ö?ªþºê/Œ&Ýþóý-å>ŽtÉt‡^¥î§œt×ÅÓ^;†ôà«?ëçëý=Yÿ@Õ'-¤óÏMÔRîÇ‘.³Ù‡§pxͳÁó NJ#¾×G¯¸‰t =ÿÎêüµìRª~¿z>o’¾ 4YORéó1émÒÌùÇ/øþ^‘ùŸÃÛZ½ž«ëá”>cèéGze‰CìéE:Y²i¿æ’^>YæW>âáÑó5e¤WøRÅþPa_Îõ¿U?H·ÚÆÇ#ì¾ÑÏ:…tû=Éæó:—¯×Õ¡¿ ì«U¤·Þ”¬¯TóÛ·²{–Ãl_>œËS²i¯?ÇñYà0ÇÛ_'½ì‡9ÿ>iç;Iúãj<ç[Ò›Ö'ëÿRî©!_›bÙó»‘.œ"û+bý鲬4ýR¥qÃ?Åjï3I7&§éCŒöòˆèúo6é•Ôß5ì¹¹¤Ûz¦é©ü´˜ô3 ’õ©êþO'½ì«ÿ|éE¶õf+Ho9=UÆXOsϧ;ÄúŽßjÒÎÛzëw¨êwÒ­·¤›õû“¤ÇØÆ³_ãø=—¤7«ð>àø·öÕ÷ÉVéEzãÁiú‰FúPÇní³Öü@j‰m=\çžÚ ’èûÏ%=ðr‡xŸ7ûŸHze×=ÄzQÎ3I; RôïòÇáU%™í½tUI_}¡²—#Ý~LŠþ7ß3HçÙæVnì”*Þ‡Äîד^:¤[;'šãCIWM`Ú›£IWžäû_Yžyaй^·”ÃÛ/Yì÷d=s²|×§ê~™lÍ÷²n ý µgÆzÈc'sy`®ÿ9a²|ßÏèD•Ùÿ"k=ðŠÉü~j‡ž¯Â»™ÏÞG?B]-ßÙÓO\Þ]<§IžDõêï¾É õž ÷WóMŸÖ‡8ôv^ÏRO1çãÓKy¼E¾/C¤éÙË÷)±>€T{ioýCuþ¨ÒèùäÃHo>'Ù\xéª}úê?¨öp*éÖõ»‹÷¡±žÍáÝ›,öDZö²Ûó_Àñy1ÅœO\Jú‘/â}r¢¾/ÎOw”Zó{ìÞFzý}ɦ=ú4é'lõá+¤×ÌOÓ;«ûù˜ô6ÛøéW¥Ö|'kmЦ%<™bæžHÈÿƪoS§Xö§Ç~¤gSÿÞ°²IgìæÐëŒñÖYÉf{é7÷±Ú›ª)ÜÞ¥éëU}8gŠÕÞ‹ö‘¯?!Ñ ïdÒm{÷5דœÉîg$êÊýü)Ñéu+»_Ñ[ï­ÚïG8¾¶öu鮹)ú *¼wI?s)Ùk*>[H;+˜ù¡k¥ÿ[}õŸÕóéG:ïx‡9~¿o™Õ‹òWfÍgsx#HoÝKîëùH_0˲—¦‘^»oš9V]fÕ\?´’^¿DÎGóùg.$ûÖÈo#ßÐ]ß Ö+¬&}³YŸõÑ(“ïÛ{Lå×§8¾_¤éêþ^*³Ö7pøïpxëc®ü‚ôŠïiÊj(Úlã§Fçï?Õ/ëHç¹ÒôTU~óHW½`'ULµÖ+qxG³û«d©ëYß;@oSî §FÏ9ÕÚÀá_4U¾/ʰ¿Wóù£¬þÁ䟷ÆGŸ!½ò’dý0u½WHoÛ7Y/Uúmÿžtsüùk¾>ÙÇFÿ¡u¤ÚIÓ*ÿ)åò}v+•Þ›ôšœ4ýZåiÇIÖøèÒ[;¥šñ-'4?EÿRiW9Ïp¸Ôó9¼}¬ø-f÷%ýô:ÕÞ»Ü4s~ùÜrk½3§Ï_²‡Ç+{òºrß´Æ“ï&½ê‡9^s?‡Oö’±÷)Ò‹¥™ë¹ßäð¨¶Ré÷Ê£Çw>!Ÿ×G«â»•ôæÑib¿X?[¡iŸ\k­ëCºÅÖ_rVXë¥Yç¾àìdý4¥!_˜¢TáWðzëy×n”"Þï(Ú/Ò«ÏOû¹Ez’Î}*Y?Öh¿H·“n®G>«ÂšOë+äûöŒúöª ù¾4c=ÊM¤óÎtˆüÍþo#í§òeô‡ïa÷³“Íõlñù[ó£o‘®¬Nõ§˜¯"=èºdýUU?#½1`ÕçßΚjíOø¹ÂbÝ›¢µÛâ~8ü}X¿ÞGoVóS™¤Q}ÖWù/$=Ó¶>ïÒmRô ŒüIº½¢¯þ®ŠÏQ¤“NÑg)÷¹¤ŸøÖ¡l”×Jž³æ‹O%½òäT½§ÊçVF×ßדžmëŸÞFÚy\²Ù~¬åëL3Ç_$]h«ß?©´Ösøßðõló]¦QüšRÍýQ¦YëñD}N:Ã@}U'™^¹¤WÛÖ_Nžf­7aÿ3H'öµÆŽ!ÝvˆüÇ:LzÝ›)fúžÄáMöƒ:ÿ"Ò­[íí*Òm·Ð/Vöê­Ó¬õ„|?m|~ï}®*ïÏòù—î¦?ê”úÒíë-ûe#‡÷Mºþ·¼pÒ¶>¦×t«>bÿ}§syÊÖ#*½ö$]FöP©ŠÿÁ¤êúËêù$í<,YHÝÏá¤[ϳžßQÞ̾ú5~XGz}Zª¹_å„éÑÏé )fú­™=þq?Ÿß5UìíéöþÖøÿ›|ý¤=Âúß1áÿÄñ™–¨—¨þa*¸ù_&‰÷§²ÞŸõ3Iæüê0Ò‰ßXöÖÒƒNÖWzé'¨=1ê‹)|¾š¯ë‡H´Í&½Uýþ§ý k½ »G8|[þ?™ô'Î4s=îßH—dQú©üñOÒ·¿eÕ/“Þ±ìí—IŸIöÝ$£¾&Ýv²¹|ã k},ëÏI·S䮋äzö-êÏ|­Ú‹î”U¶ø%“ÎÛ’,ò »ï5“ëCkýÛÁ3­úžõð™Ñó¿SI·¿”$Þÿ.Êé]­õø>¿_ŠØßÎîÇqøŠñežŸ8t›/QÿVÅïÒ™Öþ5Öÿ }ær²oUø÷ñõ^ï«¿¤Üâû9 ¯¾¿:ÿI~Ð%Iú}ÊýUÒ7Ûæ7²;õùò­¤-±Æ3øÅ7_bÙ“)¤×}Ÿlîr’^z”Ã|Þ¹¤Ûžé£wVîŤSÿÁXR~¤Õ>rxG½þÖMÚc{~OßCاœ~ͤWlp蟨ð–iõ¿Åz$Ò Ô1öã­ ½ìÂt}‹²'o>2º¾xué½J¯uGZûO8¼×Œ~>ï“®·¯×'_ÒGŸœ)ÏïA Qö”µ¿&ô¢ô4s=q*'T—D}œz~û^³7Ùïª|!½ÑçÐ_Sz8éÖö¾ú ¿"Ò…7;ôõʽ‚t£mýଣäûWSŒùˆ£¢ÛëàQÑëeýÕsýè9¬gôÕÿ©Ü/#´a 릭>*Úº™ô™!‡Ù^Gο¥¯~—jïg‘Ö©¾7úkM¤«lóM'óù¶õ+Io&ûéåÿº£­ßÓì§uÕþA:k«=X{´µ>‹ã÷4‡?Ú²çÖ³~9I¿Mßnä…Ö|ÚW¤Ëlã3»Ó…¾¬?£Ü÷ ]6.ÙÞŸt+ÙÛÆxïÒ“îK6÷g<&zýoþ1Öz1a‘^úšÕ>Ï"íìÛO?Í'µt{Ùîºû$©c­Oc½ŒtÛm§èl”ûá®<ÆZÊ×»‘ô²ÑýR•Ÿ E½ø`U¿c¥'×ç>s¸5¿úÇ7Ç¡RÏ¿3U4‹¨=*T÷Ÿ@Ú9;IÀ˜wYã9¬‘në—¦¿läÒ]û¤˜öS>é-g¦è/¨ú®„t‰[¾Šu=éç7Ëù'±tþâ>úgÊÞ=›ôz[þ^銶Ïïæë3P_·»<ÿÒƒ©¿jÌç¯sYõ¹h¯HÏœ“ª'ó‘.Þ›bΧ~Âíy‰fÿK¿¯Ëa毟Ho¥öÙØïÓ‹*¦A.‡9¾è ½Ä6þ¾é, ߨ¿´Ï÷ZóUÖüÇoéÖ­ñ’RÒeÝSô«U|gTñôr²~’z^.Òù‹ºë®R7rxíý'®*î£_«Ú¯ ùú¶ñ‘Uìþþîúƽ¤û]¤¿ì-ßïÆ×’ýÿÜSçqSvßPeõ§Åøß_²e¿oâø¨õ¸ìþ9éÂN)â}Šìþ}Uô|–F» ÔŸ6ìÑw´ýá$Ýzb?ñ{¨¢=s[ûÅx“Ûê³ûhö¿ØÚ¯Ÿï¶Ú3‘ÿH¿™iµ?å¤ó'[ÏãH¾¾ÏçðkHo›,Þ'ÆîÍìm¢¾Né¥îèùž ùúTßÌPÏké5{%ë?ªø¯"½Ò6ÿxû>EÿJ…÷€›×7÷ÕÓÔùëIל¦/Tþ¿pkQë·q|mãq]ªÉž±õû“®úr™¹¿ÑIº-y i/æ‘n=f€Þ¬òÓ1¤·QúNWáyI'}ž¦/1æÇ«­ö^ØçÞúÝõDe-'½ò¬TÓþÿ{µõ~ïšêèöáAÒöþÓÓÕÖúgÑÞWóxjšØoÎúß¶ÿM#Ã&Ò–lîèUcíOõ9éSÌñöƒj¢÷_ cÃh^–¾¤D¦×ä[ùíÜS›I:ÿÁúÕª=™Cºìås~½…t‰mýÐ)5ÖüªhÏIü*U/Uï{¹¼ÆÚ¿Îz5i¿­~»‡ã?}€Ùßx¼ÆÚÏÅñ}‰taEš¾ŸºŸ¤×Úì‘j¬õe¢½÷P}¾oš™ÞýH;ú¥ê%Fýíá÷æ™ëLJñB‚ñÖøÚXeŸñõ‹<ò÷QrTý\AzRQ²¹~p6‡ß-Õ¿‰xäï9ï{9Écõ‡Äþ+¾Þé½õŸÔý\鱯OÙýVÒ³©¿mÌ?ÞËþM0íÁGH¯<(Ù´ÇŸ&}÷Wò÷LDùñÈß«øV…ßNú‘o’Íüñ¥ÇšŸãçÿ£'z½\¢—î÷=ËÞÙ›´óþD³¿‘CÚåøBzæ~iæû¦°û‘½ôæ—¥®&}õWñÞFÒm¶úúxÒ‘RôqÆzpÒ«ƒ–ý¾‚ý_¨wWîדž}•C߬žÇ?½Öú7Ö‘^ñHº~³8¿‹ö–×Úï&Æ‹Ho¶½Ïd‹×ÿë›9þ¯õ5ço;ÕR~8¹·ÙJ®žÞ›tUƒµ|ëç­õ>¹¤µ }Í÷Vkí¿b=‘Ý_·Òû¨Úèñw­µ¾_ØO¤ ÏK6×Î#™­úï=µãI¯ü2Y¼?’ÝÏ"¶ö'­ªµ~/½¯¶»véökÍý¨ÏÔFïzïÿ‹$³½úˆôªÉz7U~É÷³0M÷ªõ±?ÕZë'øþw£ çÛ[ÿYåŸ=êx?aª¹Þä@Ò#SÌõÿY¤·öO×/Ø[êq¤=ßZë¦ðPürUýᩳÖ_ˆô ½qCš9^¶€të^ ú6ß%¤WÕYó—ÔE¯]Y'?ÄØŸp#éÕ¬ýqwžyDšþ‰Ÿz¸.zþxß_I¢x_™¨¿I/JKÓTço®³ÞŸ#ìƒ:k¼˜u÷zk¿ë”zk½$ëýê­öŠuf½µD¬'Ô9UN¹O&=³Šx¿*ëéܱðõ×ORû‰æ’n_#ωõ±õÖz Q‘^9Ò/½tá"‡x'»_GºÑVŸßAÚ³ÅaŽ=XÏûµÒÅþlÎß/‘ŽØü¿M:ÿ«$ó}"_‘.‹8ôS•îL âYÉú*}z“¼Ù¡¯Pz/Ò-¶ðôYûÁE{Gºmb¢¾V=ÿÒ«W¦˜ëMf±aqÃý}e¯Øa¶xÿ&ßïbÒUù{)b<‰ô ÛõnôYã·ì~7éEöõà¤ÛCÖ~ù“žÝd=HgÙú‹_ñýÙÆS~&]¸Oª¾ÉX;‡òsi’¾Dõÿ‡Î±Þ'Â:/JÔ/VöÔXÒg>‘lÎïMšc­e}4éüñô”ö“v:ûšéf=“Ús•>§Í±ækY_4Çãç»fŽü½!c|éŽ9¶õ9d_<Àñ!ûÆ¿|’?Øìó·çXósb|›ÝWö1çC>àð‘ïõ»ÛÖOuKéMöØÇc¤{_Ò…g8ÄûsEù!ÿs}¦1þMÚa{^‡“NèÇúyk~g/Òo>aµ×¬öX”·€õ¾a?’Ο˜ ¿gìO Èß·º@ů<Àï³IÔ4Êû¿j€~ƒjü¾/‡ž£ê«¤Ÿè“¢¨üŸHºí¸d½³ ÿ >¿§×Éâ}×Â^"]ßjÙ)}Ïí§¯¹Gê¤Fk¿ë=-û›õ¤Ï¤ú-I¥_V£õ>'Ñ>’œš&~CÔ÷¤×·ö/xIçÛæ×CüûZÉæþ›ã£Û¿‹H/µ=¯U¤[lãc·ðÀ¬ÂIÇ£ÖûÖ8¼õÖúZao“n«±Ö—ýHºýó¾ºKåßnó¬÷‡²N$ÝjßI™gí·fAú ê_ç)ûï0ÒíÅô…*=ÊH/ÚbÍ/Îg­ûuæE·gn@öaWyד^2ÔÊO7Ï‹.ïwγÞ(Æ÷IçõµÖ/><ÏZ¯&ò éüoûêÇ©øý‹ôàáÖþ“Oø~3wÓ¿õKýݼèù¿Î!Mü¦ÑßèMºÊöþ²=HÏüÜaÚËCH?Ñè0ÇWFñÀÚ^}õKúµ-}'vÎr˜ïÿœâþŒõ¼†¢íÃÓIŸiË+H{ÆXãm«I²öïÜÌ× 8ôÇU}òÇÿýz‚²ÿ^ YïCâð7‘^ö|²¹~鋵¾—Ý¿#]o‹_ï°µÿ:-Ýv†ù}ɉúÞª>BºíÇDݧöGÂî¶ý@ãY‘¨ï¦îg‡¿8A?ñEU¾ÂÖ~bÑrxT¾ýZÒËlés,¿hÉ6Þ·„ô›½|AØz"Ÿ9‡ÿQ_s¿Üuáh{ðVÖ‡Yï¿xˆ¯Ÿœ`îÿx&lµ‡ìþ&û-ÍLŸ|=²çñ ¶µÉâ÷D„=Aº«ÃšÏ±Þ¿Ë:ý?“¨/Tí[iÿñs}åXÒùë¬öç¨Hôø±‹t+ÙÃÆz ‡ÿ}Šù¾”~~Š9¿´$bÙO|þ2Ò[fÿã2ÒNÛz²["ÑõS[Dþ>˜QÞ_'½~UºþŽšßûŒôÊÍVyêÞDñ?:E?]=ÿ$Òíg'šëŸ÷ ­­ë£/PõÏ`ÒK¤ê…j¼±¨Éoãå5n¿ßU× ¸Âw(¢Õ„"áHSmmfær¯œRî*)®¨t¹HF©¢I® å“‹\ãŠ&—Нoº7ffi5Á†F¿7âõdf“£'èªó«Ý~—' …]6änðºtj4=Mâ«ê`C5ý©©÷ÖÌ¥è»)°¤ÜBw'ŸìßDŒO~o eÑz0ôU€2l ¢|6‘»G&¸ŒSÅ)+ÆÅUr{Ôçˆ §Înª®£›ktÕÔ»u^{^°9ÖyÞ›3\ŽˆŒ/äšï­Éq‡Bnñƒ n_ LOËÇפ3l_Fš}ëKã[z„ÞP˜Òž¾¬us^æ¾€Ç%}JdWˆãç«㻹Žë[3(?ö3¨ñEÐ-±âœGE¼ÑO=ßÅ‘ð¶4*E¡Ï’¡ˆúöz=¢Œ‹ÒE—1aǰk.EË[ãsûc$?ǹ¡ ¡"ر¬f–õ»É‰îq˜Ç ºrø¢þ 5]®Æ:*:>¬ÁÝhO™õ•í¾íR:G8´ t‹Èd–rå'™äùI<­@M{ç?ãoŽáÀÏ/àñò9³}ãwGÌò$ñÑ y¼ü˜M Õ^Û]ãTCôÝâß ëHˆ¨L]nÇåŽùVÔ·|–õ•Y`lßQˆÏ¥/m I.‘ú`ß™ËòDAÿ•f¡àY]â‰Ù¿0ógÌ7¦Ï×í1“QhOSM¶ñ!Çø0ÌøÀ-lOTüe/a/GêªfŠk˜+Ž7½Ýš>N5ÿ[ñ Íï9+ÙÃpˆ®Ü=žð‚º¤¸mOÄÓýV»Ã>Ֆ挖™Ã.!Y’èo Ì÷åŸjƒ!z ½ÙÊ{žhæ¢ÝTí“;‚Üš½¡w˜›O9ƒÿl§ØÍ—Ïn¾,óéèWMTÊj‚ä/li¯ßÛà Ø¿Qå•ÕN·˜ª·ŽWä/MÏ– »P–$ÏBã‰R[v‰ú&LM¨Çr³šUÉ󟨛E½‘£J±,âa6:íÙÙ0Ì'&²MÐ?ßËE —4±DkFÆ•/@yÕj=å'ÑÜ-göaruhÞ¥½ÐÁ>ˆúÚ²:f_þ†Ú¯ºH½•nFsÑ!uéŽkêmíÅKDk¡7Ù5 êj{bDµ¾êÎÔ£ÙÔVý„|u>›]A­ŒºV.?iœ]M2_ö´WÿɉyTž K´Ãâ/ÍlÁÏ(¶ðIJ¶>""öS•QbËÂ6Ã17';3×lpìE—Û‹xi̧ªÛl2rc«v®Ÿu5YÅÛêì³ 7øè‘¨SÊY8«}9â™ñ3E!N6õÄ-k”^./5~²Õ(!Ü!iRMÄe£väH~fÍ!w#õëjjr„¥E6“'S«i q÷ƒ<ø©¸Â¾…ÞØï¼ ÖWoCÄ]ãO}ëѨ vô)¾µ{­‰øùûhŸÆ—£ˆ×ET,]ajGÜ!þä 6z©ÞÓDvõ1;_SQ~)qÁpæ°\Noz !o¸‰’Øp²o¸òÒIîˆ;sØ»ïQѾs³b|çfÛ|çÆ„;Üî˜ã8Êæ8<'Úqø0»ãˆÇ‘6ÇYt£ô›(¡ªÝ)ž1õ“‡\CuçÈJ©Ñ¦UL..”_‘õ¬¡¯Ä½1ëÕ\µ£²ÜÂ8¬©o ÌUZ¸Ç~a|¤œ«>z[¸I‹HWú†mpN¾çoÙˆò·âÁ‘-Yò5F¨hz¨ç'ºVê3=AªÔWʯ¨ƒ„Žœ¨jò¥4Îæ/dŽŸúÊ«…¬>j4¾]j| ZQFu²táÎõ.ÐDC*’U”[Úª/ìi)¿7iI™’êD1MeÃ<ÍøÂ¨Æ„0o²)À—æ+'Þ—Öwæ7"Tª_Ä­‰ò«|¸#TÕPŸ«›Ø.ôÎÎõre:×ÕìøúýTeÐ }ØDv,YPT¿‡©T¨v8›Ï¥jR<„FSˆšhï|Ê€¢»VÓÐH6Yšœ&o˜ú¥”èuT)Ë‘eûŸ¨©QäX —£EiB«O¢+ˆYóƒàØúkÙòs©ÇM-$Ÿ@Ñ2Œ^™ü|†K3>j®_Ðíñ£Ža9¨µ ìñ6RxuâL?JAwX4AY5—ÜZˆ¯¸Z¥öê…QHå@W¹6º#õ}Ϊ²w/¿æ€d.Õ+Ðd“.Ƕ¢¯è/èbÚ‚" üœu,eó?9ôÇË]ù¡. Ò§FùE£’2 È2åârá;âšÛ’~o =z¾ô/õ›(î:ºMê½G\Íl»Gèq6Ö/à[¬ór&ùñdSk=_¿›Š _ˆª‡¹`s@¦f8~£„çÄx¦ñ=ȇæ*žâj– ™H¡ZQëpÇup/¨öJg®Í©Íÿq5'µ¨4xúI¤ Ÿj~C©Ë¥£‰z*Z­¿)\ïªñ{ݦƎ™›žx 5§FÆæp”_ž!"Ž[É•e]¨YX^Tó¹²¢¼dÇó’å%'ž*”Š5üoCµÖ ûZøáP}ÊBN‚p#õQØ *9ì E¨Èr­ö’¡á¥ÜÓ,â .#dókDéã¢Øh Â86wxÈD Û?»üÞ÷Šš=”ÿ5îF ˜‹¢K~®òËPÄO]J¯;TS/Ca_ôAØjäÍ+z)"ó±íI­]HDÃÛÒHýa1«g|¤Žk„«!1“çªnª™ë¥Ž“°ö\ó½!_íÍåñ³Åã V‹¾ÚP°ÁUëáÁ]@ø¡{¼\ ¬®Æö¨0ϸ‡/Î¥[ ü#ÿåzùIt9SgÂ+-WOШ>ùâouS«š,G*9a.ÕjToy52z–óÇ>Lm¹×íÃö==5¯¤í"ó=T;E¨·änMsØC%‡ƒ¸C˜%Gܹ»&j,qw\_TÑÉ)J²ùnaCÈJÂú"¬YŸÍª²ÎË-¤·1,«rÛé²jo”ÐÕ׆Ô2¹ê(gʬɜSÍ©õ<;nÔŽùüÊ*(S‹*›4}/LwoˆnD4V”9# d&â²)«{ó:âˆÓ5Y TØÅgöè÷ÑÓéä °õNW g¶2‹.ªÌ"3¨³eÙÆÓ3©¬nÏçiQ©l„'›@Î!Š8ÝŸ+\O5f¨zwÀã÷ÚÝÙ¤àÆÓlÃ)G8QÁÊ Í]2‘¸5A*ð<Èæi¡[‰:G‡D¯]|-š1 ë*ï?¥¤¤ ²(žKå‘eñ¾Ÿ<¥´¨² üÈ8N¥Ó&•ãRY<9nXE‹*â8•”•Ç»FAÜ Ë)°x—.*)*›D‘Ž{ý‚ŠiåE“‹J+ã¸Ò÷ÅŠÇTO)ñ@e²G­H{þ¤/]0¸n¡ø+*Ê¢Ÿ¬‰ U¶Ñ¤]áSug—èo"Õ~몥¢|fwÍD‚d$†"–ÐÔ¡Ñæ4Q¿B!”¸g¹ø«0!VÙJå•£Ô0¡†¹•Ì•²ZÉáBæ*5"Jd£´–lAk~­ª§ÔØ‹˜~Òäwd/ˆR!ºz¯Ÿºª2ûÁùҤЪýîÀܰXöª^17uÍ<²!ëÓ`“#c¹ÞW+>úü/Õ¾A»qû›ÝlѹäŠJXŒtó'nž”2ªOM gh‘…Ê-•/ìR½<ª¸$g¯êšÈæé‘…®¨Ì¸|6E¼jÄT RËYhV•‘…< êŸ¬ƒÅ(®ÈZâSŒ Õ ”L"oR^Ÿ(m¨µu½&=—,í±nÉr’ŸÉèàÏÜ´ˆ&Rô—x4ÓÏR~ /h £€k|¯ù…ü Æ’¨"›j¾ÛçvnM»-óÈJQŸšk¤…ñQ$èb”FÚ\Q™‹Z”l065y0¥‘ìj Ä×õîp½11Gnu®¨/¸\ø} >#$-@E+Ü(@²‘—þ–®šqÍÔé⾟;4—ÍEÊcü]2½BAjœ\ª-#ó¾.s”H}nð¥ìHc¨ ì«SOÕåò…î×fr°Ë4´›©+ÕP-,Lz&|C¼d«bÚ¸‰åS¦•IsÙ(R²ß@ÁÔŠ*ZÏâÒ©ÓŠË‹DbÓ#¡09Gñ°Ç㛯͘R^HMàä²ö#º ”á!)÷êÍ×GDGœ§18)l.kôÁ,ûåSf¸ŠÆO**¡ž0¥|²ÆI5±ˆ¢Zi³ãŒÚ‘’€Oâxù=¼ŒAv¨ôrýÆ#wJ¦Tº&ÌŒÿÔĬ8ÉH²@||{t-9fͱ2*©Š 7»布´b¬ùݦHmžu<(æ j\u…Ôú ëî­ŠÐHãêfN1ºP¡:º‹ZJ'. ô¥Ê›=eߺTØèà7}»Ô#¢º°¸¢¬¤àH×eS(]¹’µÅÀ7ßã&Nã·1Ò qA—ÒÊ‹ y½ßxÙ’›9­ªÊw„Ê»ê.i…Å¥®BŽ-UbxÊÅËÇÿ44ù]žW÷òÔ·Ê~A‘."] ‹Äè• ׌#Ç1e„ÜBŽhÏ£™Ö5~RAéDÊÄE••Å¥e!j$•½¢«Ç*¾TwÏÅãß9g´Sný\Å.ŸÏDlw%˜\…\¯—N/('›­pZ‰ÌáFZdq…PV0­‚Ü\”@ÌÑ#Ír`Ïgêž¹mPÏšR&â£úO(x`ÕzD‹*‹J§SÇY¤œ15‡‹kLŽ· …Í"îšXTZT^P9¥¼"‡+9WåQ-Q (“ˬcJŠ++KdY§§ ñŸ=)¸2r5øÂ5*²á¦j×ÞÍ5á†jêËñ šKØ}êYËQÒ§F+ùrµ®ÖŠÇO)­¨,(­4n“%!ª/¹ WKׄsìw©á©vª½´²ò)‡S‹ìš^ÄËeñ ì¬†6\Í¢§(–kr;Ã-^IÑLWe\ªfJã# nTªÌ]±HÏ[Ó$Ç3íùVµ·ÅGQ gkéËË‹Ê4Õ³ãqµ€§¢ÌÓ9b.Áò©ªHÓ$³Ï×hÔ±¡nrSÄ#ú .1SËå–4ŒÈ¨á`1ö`$œç_Ø[Ù×zÌöÄ2MŒŒ+ú˜ŠK åÍ¸Ê¹ÂæYÃB¢ÊCžf,;ŒOŠû”·U[ˆÈ&ÕÍuÃÌé2©Õ°1÷¶4v*¶l‰Ñc¬ÉU!£YU¹jdU ˆ+D£Àʱ~ÛäGDö² 3IE²ŒÌˆÈ%œœreŽ9žUR@Ôø"×°Bη9…®RRZqAùDêå“-E-x (o‘kQyÇü”ä¸4¨/9¨#¦;ÔÒ^‹ÏeŠWªñmQ»KD4ŠZ²ÑìOB£Z€ ÕNªÒñŠU©lÚıxM‹¨ä‹É:¤ª•R„SJv_E;ªQ½ʤ–yÚÒD M™€cP'êcè•»äîf*Î5õT™Qyä'×4{ÌéÊŠç4J—B³ ”Í…¬ê”Y-Û´Éæ kT¤\e©Õ/®6OqiÙžÕ*Û’…QZA©Ö'V4pÇOƒ*¥ñå•EÅ¥ÇWt\ª ÉÙÍì‘sDr\Ù.i|¸Ä C¥?¥ªêà×R&výü0u~„åbZNÑͬ˜¿âës¤gy§ 1»¡)›ÈȪ“ÃnqÊ‚!¿6gN4[I‘ƒæ†©.ó‡ø3¾€×¶à\µ´¨øÉî3olÊ歙c;L#KžÔnOÉΆFVÿø#\fn½Ñsá”l pÕ$2A%·áª÷š-º¯¶6U=R—¿NÍîñŒ•éCZÈbh› dÙ!rÕVË¥Fœd’X}5õÉÅÔ÷šè:¢èHî—GW¢”¹8%Ì&\¬¹±,Q«ŽR=³Ì›u= ÒC•5îÒVªU§ËýÄ0¬Xef7Úv•y«õÂâr6¾r ÊË ŽÔ|lðHO5•øæÙoðɵeÊÂQ•¢ª‘Œâ% 72Ó< ¨êõ©…”æl˜RÝ!­(*+f;§R…ìÎëÁ'k[ó¾ÅÓVÝÄB³Xu—a/KÕžñÛ´Ñͪ¬ìD¶’ã£bÎÝežzPK(­þ¢èK–M)9RX?ä¥!\Ç3¢ÞÖ z5~_/"†ì䃤¦Êx"š[âgÒ¨JS@­ áf1¬©YP·Æ×àŽ#“ =jíØJšÑZÆ0¢ê¼dÝè (+Êe¬Ë°õªì})J+ÓÈŒ*«Æ ‰ÆÇÏè˜Ðejk"ö攬®85 9©ÇU¡¬]D߈ª3Õr²ͽj+lYírB58ºŒZÁäqŧM™V¡YsýÛï-jÓ˧TJ Ög¥©9㹎—~ò”­õ㢿Á®#ÏõWØ,R™G™ôÂ)*/ïª(>ªÈ%l(Ù÷2Z#¿†šÅJœGö*£/j”цÈaU£¦°ÆLE_›Ç“ÂAc>Nuy?ŸXJeÕ­j٠ȧ½¾Òñ“Ë sÔØW4µs(L —Э‰Ax—\l¯:jÑ„-.š5¹Z2®ØuUZCJ<(R^XTÎÃdŽÊÇÆõkÂM¢ RkBÒšäT ü :t`´PƒÇGiå—qaL–Ý9eáû¸éàõI÷\ªŸ@7;†Ûl4'¦\<2Î ¥Õ(,.+*/žRȳ†Ñ©]p(‚nÏœ&R© ú›jñ)¯†ôÉÅÜæ`‰Í`PwkÜVã|UѸԠœ•jœŸ]ES+(•åâ —ªÎBó\¼°’{Õ¡¹Ü¡„c ³ž4”ìÉ)[W—¨;bÇ™jE5fÙÛr¸·”ŒðØ®©‹¿´¨R$’lÜ Û‰²‡ŠåkµgYÌ$¸ÔrÃ˯uiqÕqS&Ó¬NU±Ë#–Z5Pu¤™—­ñp‹¬X s˨ѕ%!–£°)-k¥l#~6›ÔUVP̃wöþ«mrJPRN®(+of0^äXÍË»x8Ln¯Ž60Ì*R‹ij ¢+íò#Œ‚a&2b¸CæåìÝì UF¼õÄmµÕà\ùpÓÔÐ(Wt™ëfT;§ê²F¶ïkݾøæKÅÉ4‹UwÃL.nÅbØ‘[vjÍn¨»ÅZXã2FNÌRk+ý¾†ê&¯1¦EÝ­2s¬"G5˜”]ÈZ“MêÌ>pbŒ›DOQ]Û¨Q#ubi14#;äÆô±¹öAø3Ó]l¡ †øý^þÒ&ðŠZ­¯…³¢m¼¨ÖÅNÚE¥…"ûN´·ô²Ë û¹‚XV›Å…Ör‰Z££í‰WW«Ì®Vy°á&–Ù¹jŒî²U´ŒýÔ ­óÊÔÆäD­Ì2Ün×ñJn1¹c_£q_Xõy]¶És"Ñ´RŒeöœø†Áv¸Hš°1íç§ö\xR›³¾Ñ¶èŠLq‘iÃöñ Ê)Å®#è¹ç¬$º¹¹š¹¸#îópYsZœYy±D¼¦Ãœe7n¾YLw»Üó­­iÆÃ,*Ëé+Œ©hjýŠ*å ¶¥§åç¾¾5ʧ©Y²pÌ~œMgrŽª¹†WÆÖñ+„|ùœ$¢©ç]s"õ,C߬“䃕¦}˜²€èÙ‰—B¨U.5T ÖQFk®‘Ö쓠ƤµÍ6ŠgÛþ5³ï–+*eÃå›× É2q{ôÆp¤µÀÀœsW{IÉÀ6–YËkQmÛjXÛvqkLÁ¶Ž+*εb5UÙ¦cckÂŒRÛòR®A¬å¥¦Åf]ãêW”EÞœFaŠÈ 3K %7/^9kòëFÖÏÑû6©Úhq•ªÑ±//µBù´ñ•ÅÓ%Œ¥ZaÉ´Ba¹šÍµT–9%†C¤5–cLqu*zâ<Ä«‰75–4§PLÆU`哹ßÍu'0ª:+¸\ʱ[©lŒ^:);”öa`Ùå ù[ i‹WRäYñîø|d/@ £ÈÖZ3QFnQ Ð\æê59š-Þæ ^ÀÀf¼ìµ‰#saµ†QýwcQ…jt)Oó4†Üim™H<äN†aÑ‘ ÊÈ-vÝH‹[ŽMc µª·h4%†Í/æ7æFD«Ì¯Y^àqK‹X­¥lAm¿Ñë’V±e‹eíÜò „¥…n­O‰6ò5k¡qÔ˸ÁW Uš½n™$¼ÒÝXØ«zLÍV —ÝžrC©¶ÆhdþR£i@Bi¹ùÂjÁ/ð£gÆCkMaœŠOUªØÉºHmÜä¡s—mÁ¾±ÀÒ˜ লh&ut]j„?zÉ™½æfl%ÍXçoæcCGÈ«ö8h%Å¥Eœù}a¹óÊ6&ÛÚÊ)%Sf•«i±HƒœE6–TVL)™^ÄóEœï¸ç«ùÍÉIù×¶2Zm¿ß•M©(ž©:\áñ8®ÚdI†Z³Û?×>!ÇÎUãV+j;s×È”2ãöÔBÒ¨ÚF>P9‚*W)E­: Y’ãc·áŠEQ5»4y›9¿AU|ÍFm);û~±”ÊxhfƒkµØ_„#«ýí®[+ŽÍ=湌SO$ö,£ —#N¾RJv“ÍXjéñQ†ÄP±˜+¯…¶ÚÜ´=Æb¾jGM[DÍ0o[mjŒß™YTîóˆTkjQˆù:ûâÕêã•1£]öñ½b±zSH¾°xѰœjªPš|l¿Ø^Ä&æsÊÕ.)—zlÜ̉!@Û’=sU„Ç\&(—Ú«Ý3rFpbyA̲Ac†aE˜ë(l ©l“/j™UŶ6C‹¿ «6 m‚Z[6S†ošßQ©ñî±@‡w »l=w#훩„íV ’¹VE½KA¾×Rõ‹äL5º1Vî‹¢-¦(DS¢‘¨õõ~±T&zÓ–ejò~Xk¹¹±}ɪ^Í yž;3\`’V”Ñ"ùäû|Dì»#;rQ“/üâXø#š1./·ŠºI¬¨Í¦è€NÐT½nëÇGíÄ¢N¶ÑÅî¹²íYê8$ –&êKÔ¯²3l_ÎùT9­Zk«’è»ÊY^îcר×Ê)q\Wxcš×B5³ªv|¨ŒÅÝ0± PDÕ\??N4Z\wÍ-ªHÿX[y2µ(öõbÝ 7­ÕF-X¨f D"NS¸Æ•ØÀÁ;äeMwó]œÁ]ûJv™®:Íxð²6¢ê¶Öïæ5ôã¹í—Å0æõâ5yÔ'âügŸó…ºtJ‡1é·-<Ôì ¢vÆö€jÅà·¹áXœñêRÎ+ªþSkáìí›mŸmôÒGõ"c@8º6Râ5îT¿ñ&$k!—h,ã•rÌœ NÅäb²FK©5((‘;Œmû‚„¡'gã«Õ<¼9-c®©û§Œ=oæL÷Å {¢Ú¾zÞœ³V/ˆj¢í\j9…m/s³U‹™¯k1ž™ñ>Û¸‡¦,c6EÌ3qŸP^T=~o_Æó;âG%¸a–ve^sÊÚš; ?Éá.nQŒqæñ%Sx_,+4罨"²2‚±FÇe›è¸ÐÃÜY¦Þb+©²ŽŽ©R«š›eÍV¼‚"/·0›ÓJ"“FÕj¥—ÏXw-í~_X. ¢(Œ+2—xD¿@IŒ5˜‹=8óå%ÖUÛ.aÖ‹U‡~zAa¡µjÀÖ¥ÑlSQÖ¦ lÍ]Ãv¨6­¬¬¨||ØŠ¬V¼Ë!1êd1x•¦V`ú‚aa0x¬ms5—Ìñ©“ÝÜ$âšX2e/ß™0¡‚w<ðÈ Ûµ±uWضdY-9N“5v­ª±¹ëlLsÆ®ŸÈQ•xñ¶l Õ€™¶ÃÙNîM26yˆepâ™ËÞ—4Ôå©qiùT©k‘ÓaCZ rcž¦¶ÒzªEk¦:ª„«u¶)¦#¶³…ºvjk„mŸºmЭÃF9ôb6FEÎssbH)ž©ctìÊ*Å¥ã+­å(µr™ø9‘¢rj“ÓL-t2 –˜épã(ó½¡j£Om¼bËXLVCECµ_ã-††sd¯RTsSd…½-œf¼Š£‰[ñ…rH'Ö, GLɾ¿ͱå˜Ë ”9#gšmSÆbiTcSM³-óÈ…ÌÒœµuÙ¸r9Ëè1}FÅ#l{”RúŠ9†ùQ‹eºqùäá'Y s)¶ÏºšéÉ‹ G}í“rû%„Gs©‚ÕaÚ2¤5)>½ dZ‘­ûcî‰ÞrUX2mÜãŒ*@® 2÷Ûótû2VäŽ/(oŸÆ…Xjeî*Ž3ñª eÎñ{¢Œ©"³92œ•é Ê7?^³ÑTåg”Wб1õC5ÍÃÎʼ\Â_·-ùPV¹—Oô ›ÝÛ[ƒµœI­Â×\ê¥)ñz¡jYáx‘ŸÌ. BÃjÛÆä‹¿5žŒçúd®“KøÍÕürñæ²­í°Ïvzª­Õb¨„ל›»ÙÌùDµ±BN¬ÏkòÕÌÛž]ES&ÌÐŽ*´­¶Š•pÙÇÐ\ßk¡z¢äÉ/Ͱ¨ák—˜ø±^Pë ɱMkG{I¼=ÁX ïR&Ÿ+$'ŒmùÝ|KÙײ­w·~@LgÓmâIMñƒRTQ,æHœšž»÷a5_mÙ¯"¬Ãç»ÊÕˆàx~èâv£ßéaOÒØÍ¦òÍiÒ°œiÌ-»l¯Žª©W;°mCSªVwÉ¥EV°þ²øÂÁL°î½F1‚²AVV6ÿÏ:{DV®øžÉÎÍѲ³‡‘Ÿ¬aY#GhYÙÙÃss5gÖ+E—§S›Ã/Ø?2㾆ÿDŒþ£«_‡ËpN—–…3/3+sx†s2dgNVÖð^“Ü!ª~œ•™Î 2 ½a§;àqò/‰œ“3“¸5ì5.ä««w78 6êœÓ>a©Dø7—Á_*ÿ î@f£§ö»†(ÿ¹YqËvÖð¹Tæ³³rrr‡™ËõDvNΈ,”ÿÿû•N’™Ók¿Ç?9çÊ^#œYN2z3´D¼YÚ9’¾):Áç'ƒÍ9tÿ–H¡—‡,;¬OC»zµ¬øtŬóßœ0 u¿®zr¯n·Õî¡OÚÐýÓšçG.=×¹rk¿›û÷ø÷ÍÓÆT]ÞyL™wõªö#¾üp¯Í)[úoÉ›¶´oyóß_ºöÞáoÿmÈŒ eçÝsIðžç¯~ôÒÄKßÛ'á¢wÇ~ñÝ“g\5åœÃv÷Xû»ç§~Y{ü¼©iݦÞÝ;eAÒšé7Dúz¯º²Ç”³Ÿ»|‘cÛ·¿íÃOš –¯y~Ï>^T×ç°…Ž%uç,»ú»‡_8â f^ûyúâ•Û^úèÔj›¯Î{éè³ç9)©ÿÉGŸ=âᇔ=8õù-ëWíyǡڜ‰EÃ?ê?ú¸³ó×^Ó¾ú“«o>oïô'Û“î:»ø3_;ëÙsŸn:ëšH<ïÀù£ZòøUϪürá'w?oÉä÷N˜qgb·³_þ¤öˆ×/ú!óõŠ–Ç¦Î=÷››^»vÓÀ·ï~[åíÛ;k;kGö+æ¼:÷›NK®[óøC³ ï?mÌ)~ßwß{|ï¢+wßçí²›N<¼öŒ1¯%¾ôÄ;',ê¶ óð~ÿ<¤ì gÝPÏWîæN·fžuøÙGíþuʕռ¾vàw‡L½+åõ~?-ü±ëõߌ»ã´´ÓfŸpTÿ†ÊÊëßï²Ï)£ªuNwîsÐ[ºß±ÿGI•[.y·5­ÿÃ|{ðþecOXÿàóÿxªðÖQ³óomØoÜøÆ.:%±ëÑ%¯3x¹·j×~àœâôë‡ïvÔšœ©WåvëûþÔõ¾Ò+u›÷ÝÙ'Îykß²ëVžå¾¿ìº ÷ oøtò¬¡Á¢¹G½pÉA#¯y÷²·ïݰ­ÿ¤yÅé5õ÷Ïñ{ç^Y2uÄ “²~zõi«z„nNÙÜO¬újr×SVßð·–ìÝ+äûxð‹I•ËŸ¸j÷ ÷•/~Âá/®Yà€û‡&o\þĈsïO>iÀäÒVW®ÛÔrÕ˜ÐòSö ÝøÙÉ+º,»uÌÿxàI§6\’yΙSïy}nå§g|tñ¾wŽœ>ñ©Àúëëç^7ëüž×_·ú¶õ£LüúÒ†q×N½zåôÀÖ×Þë¹~ðêîœzþG]\vúÔ¿Ý“pAëªÃ¿¹wô[Ë“¼îÛú^±èþ‚Ów;çåM×eý}ø±SNÐïïÚ·Oúà…‡_7ùœ¹i]/,[Ó¾O÷Jý%ÿÔEëþÕs÷“׺iå9ûïyóËßgv©>dÞ´„ŸU»ù• ô; ïyt}rëòG?éqñé·¶ÌêùPzqÏ£œ´tÂgÅ{-­ºä¦ÕW2ÐñéÄÏ•öð¶ÁGÉI}ÿñkgìþéµÇܼ)¸ÖÞÐékýý2Oyñ†ŒY«ÖDî|¢ðÃÆÓ½­kiâyþ»Ïøòå9}ç>ô°~ÆÁ=òÂS·*¹¹q턊ó®8jÅ5s÷¾tù­ýû»~“ÝÞ6øÈ% ç}XÑ•‘Úïržž8ñ¥¦We÷Í[Ø6i?]Úû¡/¿¸ûÑ=Ï™õPÆž‹ûùÝ·†Þ¼áÌãÃ[ïÚïçoÞûÇbï¶=OÝûçÏ^<é’iO§íWz~ý˜ë÷~lÎÄáóæ“§å|ê³y×y/ôò{»Ï¾!ej¯¡o6ïö~åµ3öy¹qœ{øŠ¦ôÉg&~sî‰-ÏŒîsÍA) /ÝTðÃAG\þbÖ´=òîê4ò ç5]Þ^¿áÄ/{ݘxLÃÕWšpMç/^¸¬_ÊúR×ò™ëÞ»õ_Þ¹:]G,këtêìæ=ò]µêÝB-¯zÞ¤”’s‡Ì¨Jünæ¯ýãíVU=òÀÒÊŠUeS.ض$áÄ»>êyÂÈÅ'Ϻâú ¿_rý„{†.Z}õ®Ñ—¾Ðûo/:9±uS÷½µÎè“>«ß¯Þum·Ãno½à¾[]Ÿn¼ç#ç‡ï]ùàÑw¼7âçýΜÎÂó3NÝ·ç™cö[Ÿ¸dLèñý¿úº â»ï»^Q˜ñ÷n{—DŽ^vêIu‰‹·MíWÝåºÖ™û¸{¹Ã³åªÏ¾~iæ…wŸèlŸúr·GÞ>iæËB§Wžz~uÊu™Î§ÞýÑY^qëeΓÇ^švø=‡>1ሬ¯û¯ºúݧo¸ªìâÀ'ì¶6¼½òÙ1Œ8»àåwG_²b@í‡ÿøbôÑ«rZ~¼¤ß‰µ¹Ú³åÉ÷|Þ;ÿü÷žîR6ã®7>üpÒcµ×ß±ÏÂ{–ERïÔ÷¸Æ3òÚ;÷ý4Ñõé±gø“ó?ž0ýÂÏþ±uÞô‰]_mÑíÄ!cÚú•ž¶a·)¬çο4´´[Qð²{´¯óN8ô¼¥¯_?rϽ]¾ïK9î“8í‚AýÖ=“¿Ïä!ïÝÅ„#ÏäܳڟžPvÚ Ën¼:cÀåþ’ ·tÝûM\šQY>åÜòýží=îùAi^mùøûÏÚ÷Òû–^uniãâ×YzùŸîwÚµçþtÞ#¯}PÏ›N93iôuc§”´ê»}Î;æ€OKj¿,ÚûêÒ›ÞÜvÏÀ#·Ö•Oâˆ~®þytú“7,|ªdì ›^ Ÿ^2ÖÝç€Æ<{í·=#ÍÙÅOúÍ G׿}ÊgK?ÚãØAg•|~ÇA¥…ó§î_yöÅYL4²ø“Ë?ۻ訓>ö†¯³×û㉟ùæº/¾óé¯?,½{ŸŸÎMuð™§v;¨hØšcÍÙ.ÉyøKç>–»o·”SÏú2yEŽ×Óõôþhå]²¯JÖùÖHvʤ6L^{Gý„†Ü[NØ2ºâÅGÜwÎ>ëÉWÍ:e¹ÿ¬¡çúw¸hà ïæÜ²ç»Ó./›\qyþ€ë^]rÍ1{÷ýáëŽošÔ˜~í—Ì9fÂi7}ðÍy+ú]+2RνýóôgNs@Ï·Ÿ¹õ®à­Ás'u¿í¼ÊûÓß¾|qq×Q‘Ëï>»û¬¯êõ'g¼vvÙ˜T×®›®?oÔý‹B«O|õç¾çŽŸ™úa{²¤6çü¿=ãÙØwcô'7þû¡I=ïïsʪ%Z·â>çöIì{Tÿ}ÎéÞzæÞå;8ö’©+öï¶ð¶Ko~þ£²œÅU£k‡Þz_ë–‹÷koÏ–»Ý”þÑ«½_|ñòHkR/_Æß¼Ì™¹ü_»¼¿~ÿ¾§?>á°Õ›—”oÎ?õ„˺üãÌ'OЂۖ~{WÁÊý:{ÓKö<âá{ó³êýá¬ûMÿû;[½¼KË­—®|ö¥wVîWzé¢ëN?eì…ÎnZÂóÏŽ}÷ág䟙´D;»×7ô¼ò¨!=?Ÿñž§íŠÇVvºõ¹_ûhði§®>ôÈǶ }£¨ëe%>óÏEÇ/\tĘ£þñï/¦}ÙrÙ9÷?ßçœÏ®?óóO ~úÜÅÿká3?0hÒß¿zï•C¯õªåö›9å«ÐªWŸ¼p·DJ\úvÿðæ¼ç|=pÌs¾;­×ž}¾›ûNý¢czò˜ËO9òþ„/}¿ì¾àß\6÷Õs¦ÜÿÃ÷g}~üç=‚[ÇŽéyÓ^ïl{áÙYcïÿñüW/羯¶=›| éó­ïßñ臯mýñSïÖ ¹•§ŸTtëáç™xÓWS×Ïú6àý¸>)%ãË¿¿ýÔgÛ2Z>Øúþóg¸Ö^zù›Ç7þðý‡ÏÿᲩO<œþù¡÷4ÿpñƒ_Ï=ãÝóésö”/]oÕý\³&cq³k_}÷€Wß{Ü÷§í>àË/O:櫟6¿úø,hùà_=ž?ìžæþõáKçL üøÍë?œ´íÚ¿;®äùÃù~è÷WöózeœÓ'6èG*Ã>gÔˆaÆwÙÙ9¦¹ßkhå‚F¯sh™»ÎÛkèd¯ÇçlqÎÊ"#ÈßÈQ9G÷"W~·“O+ï5´Ü6…j¼aç˜1tf(XSá8g ¥.…shq…4Î9´ÒÛ¡3gNCŽÔ¯(6ª×°Q¢WQ>,·×°\õ1«×°,ù1'«WŽú˜×+;O}Ñ+{„ú˜Û+[–ÓKÜÌê•­NËë%N¢.ÊÐ AŠ0ß_SœÒ‹¾äïÇÅ"é°s„ñ­™*¹:AÙÙÃM7è¸#wóW|0àíaol¸ý,o긊¢¤'§.›TýÃ믖žVØ}Îþ³¦Z2ëÛ~×ÞØÿy ¨¾÷í×3f}Ðõƒ÷ÒªO¬9¿}Õ–¾ç5½uÛ³­uÚï†Çï¹ñ^Å­ó?œ9ã›cî}áŽÈ矯8ö_ I½~ð¿Þþù§ŸG½óÝsÍÏ_½&ûÂôÇ~ýù7GÏ}hîCïí¿øš_¾ÿ†E7ÌüéOM~禮´ßð«F¼òòò§®\ú÷£ï½>ÐôÎþo½}kø¤Ç_ZxìÓ{¼ñÙ››î9ö¬gç<>çâ|tÓˆÜðÖçá'îQ]÷ä[ݼzè–cn¿ô‚o®¾+éô%~ÖÛû¾ýÒü¡÷Ý0⳪ÿYuûº†¾ùí£—ÿpì•_xÿõSû«>è¾»N¿æË9·öv÷}î¿ùµ7¸æ|Û¼ôÞ«>ýbf¤-7oÌ n'îûÅçuýé›C7ü=áÓÓ†Ÿ²ûý¯äß\ñú±®‰·¿56+-|MÒUÕ%eéº&'×üóÄMsZf}œ»¶Çµ÷ÙrèåËÖfŽ8kü•?^½áöÅïn]7~HöÝöI*Yÿ¹ÿÜoß¹sßnc÷ú?fþ)X·n[t»mÛ¶mÛ¶mÛ¶mÛݶmÛÝÈ™{æZ¹÷þ3ã¬s“±îZ”‹vÕ"¾÷©å«ï(×C¶ê¯t >Ä¡~j<™ô³èd¼‚ê837{>­ö£ûЫˆÄaŽkf4›[y"•€^ßͱ†Öσo‡†¡šÞØ€™fG‡ ]÷¥A¹±^\CñD׸\禞ñ?5¼ï"ìI{,ê>N?•à}”~õ7J™ÿb³_Ú¼(“ ¢‰÷kIy†61öøkªõÙ#þg‡| G.Ûºx vx¯Dµ5‘ ·róЕ8ð@o¿Ô'G†ÍÆðR Äó=о'öÿðÆ‹ô éZkU´Lÿ¡¦š¤£X¨£J1]<Ó8÷¬¸Ì`îѳ=WÍRàÝç¶ ››LMhprAÚ¯¡pùò3Ô §e{į=Î)N%9ôËîÈœ“˜,€V›Ecñ5n•Ïøéxd(%4!QT:Ï"¹à bk«@C>7þ9ÇÂímÇÙìã¬ÍREJ¦\.ÌÝ9¸«WëÑC9Ìc£¹31~l.Ù–ñ®…Y^c%=Á8’Oo¦k®“ÆWdEã5yÜÐm6&èë|ãzd ¥×ÁPzx0I UÎúÔØ[ŠËÙL£ì¤$0\…w–ËÍ\¹/A¿c0Ï¥æN“^³dªþ³êRßÜd‘{pCçà§ù5 ‹0¿Sæ2—˜? oÝnr§æÍÀÜ¢ŸŠµç¸ £™¸¤gþ!$@¬fr²\Úù^÷caä9üùQ¨äæ>à˜¥PânV)ìɶÇk»ùHj…Á•š«´bñC¶MæÅT´µ>Ó8@0Žæ©Á¹€Ë¿†ö? ý(Ïp{mHŽ(ØïÒÅiTAW‹„nÎ>:b«X•R!º`©²Š©ÞI6Þ™3ö•t7Õ(®ë€¯(©;¶¹5©MVíû£÷qQ€ 9bÌ“afyx…ˆqMS¸48¥*¤ÔL}>ÎpÔëàXš}ûöùÀ‡ Ý&;ÑÌ“ÏâhÌÒÍ¥ÓsÏèrôýOkÊ­6Þ•î¦>Ó·ü2ý(;2ô+=JŒf”¦êÛè:éRk;fW¿}éAéGýotœèÇôi¿g†K›d¶¬ÍÖ]é¼W—R)‰)‰!ƒwÙŠá¼ÿ(ðåÌçŸ',köÍ?Àx/ˆ2-§Xvñì }×lÓ¡U+ÌŠýµçÀU[ýÝ9¼ÛÌsžBDeX5+?{Ý´?–šúšÄ_›|£æ½7~Õþiø‰šš•ö2—f¥~wW™ûºŸ†ŸñPK¶ôµËc8Õ~Ê´t»&@6á–z{áv+ÿe¢ŸãñRÉó¤¿ؼw›ÅfÛÖJ¸\Ë>ù¶·9 :S`G|ˆ£céÙE*j0&áWñ פä„ð¾8yïd UÆÑKÌ`UÈT4A–³^ð·ýÄæGAŇÅn¶ؼ<߸ƒqÚ³-}V×:ž‰¯ ] â*˜äÐö<é›Ê>¤·¹G±¼'Ǩù’úI®—éÅП¤G?²çܓӛÉëë¿ÃúáèÒø´ºP©ÆB×5EfT™N¦V~«{Ï=¯^¿°òi|į•þ‰fµí¦ª‰¡ŸKëYP“µ÷cun;8ŠË£ÂÕ6CœÞ<9ï$³¹à¡®Öõ¹O=ðÏÓ¸}wEÔuYÐT×vC2?FÇŽš§eÙ9ØX¿ÝH™•a„S¤ÛÚ€ ÚÑ€9îÛ5ÑÛƒ¥ iEõ'ðåc·ô9‰Ú ðP¸(Qd¸ éK¥BµBû뻕ßä1¦Öy3É’NH÷VSŒÎ„œîÜô¦‰†ŸÍZT¥°iæF †‘¡!ê ƒP´aydë÷„¦)Ò2Ìîµb!ùûâ’x"ùcõÃXd=ñµë±ü¦†òà”k\sƒµ*3^?Ì,Éj­‰Aà($H&#– Ò¨¿˜‹¼³( )öá<›ûu»¤0ÝΫŠIÊáWb´ñRn¯Njz£vr©f˦msBÆþûzýW‰ü:M©óÎm¿í¶¬óù/í=Ëä{Rô.¸l\€Çp½¤'tÚ2°åà!kŽõGl‹†q7Ÿ¾wk§@î‡?‚Îl;¶`®wõîë®ÑQÕ('âa´ÉàO5+"täþ0m=³uªUj÷¼íoàëUÿO¾à1ÉÔQÌ©;iÆaySbK“é†d´4…sCI cmC{wóqðæ÷—ä„s²é¯ªnXX¡6Fbžll‡&bËÑíøŠ‡—}&­zÒ¤¢56ÙúúÊV ¨ÝUš…"Ô¢^jNÎ5҉Ω"ÈãJvìlè“9šGrwS½|î3y„Ô£ç©lÄsfPòp³‹pþ’§åB‰‰Žq‡ó½š8à½À­ßª•²–bÝù÷ É®8þ_¿6¥{Ö(—K!öù|¿KÍíÝÊŽ§¤¤¦"®Ã~ßÚ¬ÔR‘MMl FÐWõÓÊÀE.O0^¢eÏ/½è)Ü…(üɳZ)ÒP9Zd;ÔVBòd›ú˜ò°NïCL¯Eþ Jo¨˜}yYÊš­\šd¿9Yè#•EÝãæI¢­wžË½R"2áKc|UÀ•D§>oσ¡S ³r¼yyvÇ¹Õ ­¢-ŽÓ¹Ì!±d,+hr±}ó¶Ž®µ•lÚ2#ì²Iöw5^…N•¶H®–O—7đКú¼îy‘Âç’<º ™ÚòV7NæM å…Dt×"ÅÒîB6¡MÀVfàù£å“¸Ò EŽŒT'$ÆcdÈÛ¾TÙoõ[$E/?+A+סd½ùû²î¼g“5ÞÏduЈ³“›B;·¾¾rõ)=|²8œR‘Z:ç«PŸ®Ž"f¨"Ú|¸…›oŠàRÇhÁ¨™!|‚¯¢,–X'¬ì0DkíªdÑXWçí¹´"Ñ"Âu¾Ç„ñü¶sGI½Û*Ò1¹zË…7tå¨ôÐôû¥‡¸áp4E¥NëÇ׎R˜]Sªûü4æóq¬ ±ç¯–,,á.UŸ–xЧcè42(‘#X‹úA'Ò‹µ‘ëèìz8^nªkfkZó—3]ƒî¦4ø>?,^ö±¡·.ÃvÍcèE´/&ÏœÝ%¤œm‘öXµžTU6}Ë6Õ­›;jV‹°gÀ¶-°(Ó»C÷—“+½Y0Wòè4´—»)Hh…œböYHj€6(âYw¨L65˜Ý…Ç5 ›Èaƒ–74¤}Š,Ô½q ò?|ü)ï­ ²Ù6-AZ®N ¹©}´«~Ûô ɯŸmºóòWéñN¼Utᦓ"rÖ¢Æ)a?vˆV pr`/Øh–ì="˜”z >}5[¯‹f«¸ÞNó=ð Õºà,6¬šWŠL©£üq2âÑJsRaÿ@{LU½®3ÿñ¾~Š¿þEí;…Úì.p9%‹F¢IS^u—Î}Qt°d×CFøC„- &¦çªtqîéæ¹Úý'l|¬Ã,¥Â8—p[†¿ÇÁž;néoד.Ž_>ð«n©z¥µºÏh£¸±¹ãéòð²<Žÿ¤¿ú’kþˆ ‡kJãô;…ïœ7ÏK£’¦²†-Õ„=og{¨x‚àÞrv4\ø¬ç•Ò= „•/Þ‰?FoV °òOW½”kzYÔ¥ÞÇŠÄH2YÕ¢ ‡2éëNó±yqäI–¼& ²oáÅþþž¿þV¡Ëë‡#ôK¯©âóŸgáöååGðgÏÏÞX éÅ“Ç(uÔBrˆFŇ#·÷E¶.ÿøX5Ѝµ²aª–›ªš:ú rmWïŽ?dê“<ß~pòǃK@þTžÞ4ï´aw¨½³3Iýõ¶ôé¦ÓµbŒ=ù¢1>:ÒZq‡òd€ÑïuaÔÄëÑM¶Ä”§/‰³o»Àî 9ÜgQÚ¸¸Œ~=5σ—¨ 9gªñ|¥Ü‹Ò3Ú]+Þ^žbiÁ2/ŽÛðmÖ„m…Ã?_ȹÔÎ'OæêjD‚‘èÑ-.—²?³AÓ|öÙTn “þxjáÄ犞z‚%\?ë·$CÂñ£;Ï€ÔûZð:¶¾¨¡KéºÌ芷¡µYRíÁB=n¿_kç‹,^„bƒ{út’BlîQˆÉ{…?Ð|¤Ïô IÏ-‚鯢Ô{®­¾51ð‹C…½¤Å`Yÿ-DLö!JލêQ¢‘¡[ÔÓ¹ÉSµXPbƒjjÃèzŒ{¾Ï„r^ýÎu¯÷¨î¦†R+”M{ö%˜ö«ô› w½´D…°†/*Œug(y#{B8Ë a¨?Ð*ÃYÏ㻑}^/—çªÍÃ*þoTœý YCöƒbOØs[q?ðC*|oÚ®çù"w±ü-ÉÒ(/t0bʃƒ.{Ã;Ÿªb_dKþ‰Ò’><Ç`6ë8]-ë±óxâç×,ÙÒÓ,Vª-ÕßGµKVÄÜéYîôÀ¸Ú*±d žÁlX`.J~®ƒ´ˆ˜²ñ­/‰¨ërpSâáŸm‰²ËÔq}RLj+}3”.®QcÛ߇þ³ ¼/@VÊ#C­¹ZÃCàY?óïË™L??ºwG•Ù{ÅcöU²‘6žfC<eˆrÂ>ª~j±q,`…¿j€÷Q # sX›®h‚€¼fá3Ñ·DWŒ@&¨tð ˆ 9‚4vÑFÑ >¨c‡‰¡ª 'ìœqœY6²SÑ(yæ²ZnAÍkhW½;ªu-/6äñZÚšG •·¥jGÀ/nÜ®sëèPb¨fuÃ}tmÁ7é~õhè:µpb­þ¬u¿=”.O=#»^8Y´š?÷˜c)‹ õcì!&K^Di!£—2#×È®˜1óÓ :ôU­”îÀí*Ÿ„U¾ù+Œ<¼ ’à 9Nm_ö%Ò>ÏÛÎ(;5ÅÎÄ s Ôï›»Kügÿ¢|¾{ÅmzmLvLµ}­d¹1a‚Ñ™™Å5ÔŒr,²PY˜T0$}•E $nÛX$¿Í³Èó»€Ä¿ÍúbNG›”Ÿú±B»ì¬×yÅ3iùzÛö· þ;áéK¬?ÒÙ©ÓÿÌßˆŠžxÓø:e7]1’3‚ø=¶±0’â.-™*'¶5Á°qƒzcìmC<#,x•@ŸÑt%½½à:žþ¼´záÁF–8§<>Ï |N¥£5O:þ[Æëã•\wÜÕžŠµ.(…Ô¯a©™¸$áâÏ»…q]£ 6)ÁˆfLÉ$ÊÕ½KJ€aM {ԫ—ޱ~T N˜Äy[X„±ˆŸ#…•’Íd#œKÁâ#0% >ÐN¥þ‰ª{9”§Áð7ýÔïoJž~÷=ï×—OƒWìvÃ1jk#~{É«?!ÇÎÊuB×§¸­}TÓE(diG m/¾<ÁEñ¬RˆCVâÌhˆ‹H¢š.l¸Û¸pƒòÖ¸wdöHÕüÜ­H¡¨tr—cUø³+dÚé ¨Q;¥  éD‘ñey°Æå5 R21¤è@@¦gpJ0‚… ¨ÐÚì§ Sv§t>C¢½ÿh-R%©„´w pÙ`ÙãÉûßûkNHsÅ£Ÿk”Fþ¬%Mê.?JëMB."CÙvDBè5>ö¹çð°ñ¨0¢îМbžŒÚ&è.Žù.^Öu\!Е: ˜T"á !$C_ëæ¤t6™ÐÞVå@o2¶„~¬8§Æ¬Œ‰3Ö-—„¬`ÏÝÓfK÷;O*fø_úÛ©½åæ ‰cr*t¼›åËQ)«H#;Ú§jU^æaÁ\ˆÐìër«@$5 ³p™ q÷ä»úª‘­n¯0– ]o¸müÔ§¼uñç~Ò›úV\€»ÌJ€Y>9¶æJÿwÖ>u¡«ÛÌîYà¨_,’ØÓy‚¤­ðOcFK NU}ƒxÏÓ§HG²x¢ö-{]\‰Š &×<6Åf=P«؈’/¬‰y·2±ž}7:í˜Múu ¦'ì oÖ‚*ÕÝ.îAÛ¤¥R&W„+„ŸŠSvšÉÓ=—*z±Š5„/¡bk»+7ɲÇ)ó·¯ù¢–~_Ù]Z‰;˱ÀCz¾M k›¯Ù‹`5,;Ñ`'¦Ey¶K7[ ÐMqÜ1€4ÝðªÚMÉ/¥A»æx©ê"ù^úîÇNhi%$^+óVG`q5$a¤Ú´Õ¶0ï¼$?+Iñô±b0jäPrZý®ïdOàBvÏ«jЂ×ÇúUƒÅ{Õ®‰ÜÌ•#S®mC¦uÚ%‡õ›Šý^Œ»úA¥M%àº×­Äà ´ÈˆûÆrûÜ4åÒÆ.i ýÂàù–L(÷~+dcÒâ™gö„þP‹áI†±†Ì?ƒŒËª#„·ÕPEÞy§Pñ?Ô‡»Gп»²\4ýv5Z[íOn4¿ …Á»ÝÅÖãß°€Ÿ¹­uMSÝÍÅ2eñHúv‹´I'žÆ!”å¾cGæó3ðµê¨»µqÈ/Šj<ƒx{¬»SicšÆª:ç’#~+º¢"Ómc\‡72œ•À)䛆˜ëÆz"ñ›Ú× Œè•ê¯û“;Êw¿'Rü{HëÖ¨Jb•Ûæ1µú«{™´ö7si½“¤EO“70aÓê;túäb7|·þÆLXO†~L”gñtôóxk|wÄÃËóßÒ¦ ?ñ° ã,ö«¦Mîù ¾ávxá2 ¶Z¯×³ÕœƒS!L¾&7Ä©Pø£{©ÈäéA©BíÓ<,|aülr÷¸Oã Tç¢p¾Ö=9=]{¾YŠç5I“¾Î“Ýz:"(‘Qqµ¶Ê6$1ªŽ`¬òÒî”dK×r£ºi/?·úÛ÷®E® ©š.ù< º<Á…w*YØñSC7\¯W²ƒd$‡bªL”š¤\¡†«‡ý¢;Úœ…E XJ 1*ëGqʨ» nUàûj­œ3cñΆŸ¥ÒAÅ–¤þaœ{à‡™å?¦Ì,ÿß-;ÿÿ1οEó?‡™…ùÆafaù¯§GcÏy õö90Ó‹i‰ËnlØ#1QLzµÎÄ24·ÑIËSK–¢HHCNÓú/5 %Ñ~‚ÒAChƒ ±öº9rLyro¨%¦Dv!Þ£ûsé7öGn3õAªIXxËÑÒnÏkÞS®sïS®u{dP®ßóÜýF›Š¶»}kü½¦áòÞêoÔ…ö*µ¯£4[ø¾[çýŠÿ*ª °gŸ«-™W9Jçî•_­¿Š¶i$î3ÎÏÈ~a¡2á”ü ´}ÖŸi§ ô½®éÏ» ‚¾ê|Ⱥq <²¢‡áã 7œˆÝi3¤dRË6âS©2åS†ÓIÏ‹ú‰.,Yò6‘íÁJêŸ-{Š…Êbu&ÊúÃß]ohn•R žS)ã:Pðú‚àÚ".Ü ýV´ñð+_Jõ؉÷%µ3‘YðbGW˶„óråd)R{®æ%áêóI—6ÞúPšp8­Ïið}óß ¼Çe6wéOv^“­×; .k°œË Ù«ŽâïfÐÖèšYtG,žì×t¢kA…xbnãLy¿ÝPãƒê ™º*) 츊×{W­©°½i¼Ðƒ“nËŸÔg¬=dU±¼úÑŸþè; ê÷¦&?Rd¸aåÓÙT.99&eX™Lthœ|t´FØýÎM·^%¨ËK q˜jé0Öó Ð"GœTMʆbÞ*¬pÏ‹a„U=:PÛž±c\ÝNìǼ`µv–óDY»½BÁBÀ¯@¬·>þ<¦³n‰ÚÝìEêܘ±²úp›¹V Qƒ#%^-7ö`Ÿ²èà/ù^€¹z³žÍÉw¦—ÌáHD©{Z]²sñçâhÃhPf”*رæT›3©éP¶(‚ü¢ƒù{†TQC¼0«ëÐ(½äe÷oNÅõÂ8“vÈ~ÈN©è k/Åbþe›ì¥T÷ÒÓ{ÁR_->q×0Uˆ%ƒÉ2^çÊ‘ã%^[sò£Ç²Z ôº¤X™ô*C•:çú+ˆ“àÓ.+7ЈD/«gx ›Ö°Ü lß  0u4D+ø¹2‰× Èj?ŒœC|žËðJr(\䈡cêÐÍÅ~A#[Ð?ÈÉ¢ŠLèT­<° ñ؇´ ÒÓ¬êâF»r]A%Î)©‘ÀÉ f¸ww¾Ø0é' ÁAØY¨ Jˆ `Ð[ºR¤ìb1ûåÍ›()š!üˆ5vbí| ?ë'凜4%ßx´dóy!©øY-•$œ*ô‘ª›Ÿàå ;²èJùbƒ®KÙ•Ãpkl« ‰þ—ŠV‰¤ S ð+ÀÔD ?3£Úê@Ã|ßB|ŸTø¾ÅÝÙ%âøá¼\À‘§»Î’áÆ§Ü[ÀûQdÌ*œõ::yw¾¹DÏÕ4S—q—Š„0úvÄô• Y7Ç—Àê݉½ˆ;z¢ -™·Ì·€ËÙ¸ýM{bPW$ʆ¨‰¥A¹YÂóG¨Ä†Y¬#ž¶¹hÝŠPL #ï”<Þ…–i¸rßšð}›t¯SýRgAWdÜ@ùªê,·N4ÄîiªU¢QÖÜ:ñï{ŒÅÂ5ÛôÞ(¿²Sy Np×\ø`)LæÆJJ½aÅ9ð´N4Tç”À  î2é C}Ž%à³ñ<¿¿êÂ+“­o§&•Ì Ø3ó¡1ðü.rT¦‹§ÄŸ‚—_¬_±=^¢ÛÝöPüÖž#[î¶­PeYÞ›n¡¥ÆNPI¼ØùØ¥ÀÙLú:¿æô‰¹-àæ¥{¿ü¾ûƒçiüP|wî/ò÷9­O$pž ŠF¶òý¦üŒW7ÿ쀓f>-îࣥìÀ |“ý.Àpm`m\0Înì&’„,žf·Ã‡AÝ€x»";ç?ðG"k* ›·Rål>‡Õ!é¸0†€HòÍ‚töÉr×o1£è,’‚ä—–ƒkª€7*ÝCúaƒÒH5›ÆiRÇepH¾,?„¥S5Ñþ5Ïa0Yôò ï—dE5Žšµ‡eqãw~–8e–éë?/eø«"_>¡ÊèÂdn¾ŽôæíS­I§1†Û¿.Ýz[Yi¸…мl'zß\6ÂØí—k†© &•Tï3£ŠŠWÀYñgè½õK·11ènp(Üdy÷ºm5EvóñeÝ4¨ÀeŒV t`ë¢`B}Ä+£ñŽr  cƒ3)™¾T§Ä9?÷ ÌC¿ {£ì‚oÇ'\Í‹$Bʸ-—xbÇÉ’J«ÃKŠ‹Î—\¸z£¿ñ`‘u'á*ÙòÍ|o‰ja‚ Zp6δ"P?V“ÏT*;LÊ;¤‹gðò I›Æ™‡üåfsöÆ,$}fQ`ÆÊl&7&wc‚FظÝ*P(G@È–€q9\J‚hCY勃E‹¬[©¥VÒã{^~+ºé×_wÆ7Fîg#Ì.*y휗þÙ©_wõ?_Íçzì‹ß­Êö­VÂ…æÍÞ:¥!Ãê).Š aš]5¬k3¼o‚ŠOD®Wž<×ëË]¥v‹änûz£aÜ$’k¤ž9yóü1R7i·…äOÑìׂÆ"ˆkö2nÿVU *}ªÔ°ºvó”%%O²Ü¥£LN¾´Écs{9îgìòÒ+uúÓÜ;óúËjLӇב¨[ªrU©:˜Ý4$-Wç—žÁyª„|í¥ª”¼á¿˜/"[úR%c±3õ8˜y«T¥ÜBnœ„´G³qz:Õ8bØS‘šQg!À2CK«MµN¶ÜRj”ËF-_u×ôóË–2œzÛàÎÝ^=¯ÿ†»µÕ;ϾþùüNìÞÎ(q&U—'‘Úž‡ÎM’½|tùs£ÄÎþ¥Ø˜¥xºzšf!'ToÒÎg ¨€Ov5ïXËäØÜoîSŸ@¯ÖRœÆŽ?ƒË‘;oŸ²AÂnFÙÚ¡#ÏÕjŠ‹\>Új•ØÙ¤äõµÏÈ‘7+KBçôÒÓ1gŒì`Ð÷Ý-®NÚU. å˜V•?¦&Òä$þîþôÊ$ ±q¹õ3Úzâbw –£-êÀ.Œ–8!Ù G]UúYz4ƒÑ À ‹W5Bwá#ˆjw~“ÈoªNùRŸµàÛð†&ã˜zä¡6PVùV³%üà²7êsQ:b}=ƒ£½ŠcŽŽç3ôxð%Ä¥.§»«}žß!UùA™3\ò"¾IÉÚÜ4;!¨qe¾Ä×ò)Ótÿm¯ 9T±p ‰5‚ñ\A¡NºÿPTDE¯o:ƒaû$ñ¾Mi¯“ÐÃ?x·oÒIûÑt¯³E½Ðvð[¾mº›ê0¿4F…÷â—ó~SÊ¿ýuj¿Lã½MÚ7-÷xªÝÇóôÒÙ,yÆ}c¯ÏQß+m/ 8`Û7iº,óW…OjnÃ0VÀ?è}´‰,ò :8`‹tºý˜ÜŒ“ô\É7ôê…bê}`؉dîÉÊ›Õã<2ó\넊—+ ÆÖPìÄȃ â3à@«K!@·ÉÊæ†&jŽŒr»¢ÐÁ$ÄISG0]M*…f¬îÌÛ'»ÆMè¤?››.ƒbÍ'ÀW&f1w9Ìàe®‚bêùãÈ™êÙªAy\>º)°Šðâ>¯NEöâ×#¿í'ú°õú鳑;zHAn¶Ÿ\–ÃçÜ¥QZƒG5Ö*»i” ”8GæýÓ •_Ú‚9Œëãh€{¹-?' K!V§oÓEE‹Þ•ÏÄ+iÞÁ3 `ä±!mÚ¥æù±?Û8ÔïÇD²bû\âI¼³)¹‹lãHIÒ -½»Æ=2®ç€\1EÇé‘1ëÔ›L“ç;-”w/U'!¾ØÙ xã½Ú¸%½ÃA½÷×þÀN.[`üV€/й]nã¹,“Þ«‡/]êlë˜6`hך ÔŽaHTˆéç½ôùù‹ó|*…ûú7;â-Âl5#A)úˆo}ÀgoÜ÷ ÕaÄãVÙkh¿—aÎ÷†úffùõq©bNP£¶¸7¬­Tt=oPa&ëØûÄ$^ô–mJÈîžÎ1yC9¿܉V•–r¸|Ž—-ÈÄ xk$PUæ§A:nåíà—Ä?Ï?ê ’å¬ß:7Hö‰;tਠÇÀÅf6ÐÃ~ýR’ ©«k \p—ÀÀ’ÆÎªsj¦ñU¿§'zA“Bzð˜"™UIÒz˜ôžɤP4«…¡t±û'L}%pº¼:ä¬A¸vrjaŸ7æ‚h±rû`¾ÊßðÝøDê= Žj6'3?Ó‚‰ýÅ€åhN¸ŸVã]ÍÜ©5t‘ùLY¹½ ס˜¬ÙÉK²j/`÷ z®!c!æüŽÏÎü&ÒE¡…xHȹ~ùŽ ppO‚²‚O¬‰šG$,ƒµÜ™"|ËH {¾^ÃóP4o˜R>LRNý´(EÚ‘wRDþ©õ¬«BA ¦¹õÔÈJŒ]ô”Ab±J™˜Ö­½ïôð”ÌD@5AÊuÚþü Ëò2¼@| ºZ)^£Òf¹³|øz¿Q€9¤†«J}È*Ød§Ç{ü()''Ói„žÎžÅF©Ò¬d@V 3üZ˜¬P]RÖ×Äê|¬… >­G€ð¾M`\çRÃE<Á2‹Çª-|{r¬ã|١ž¤ã‚ºÚéô÷Ð0É•™%° ¾)äÙGØoŸ"S×E u¸Ï©kŽ™!Ih\ u¬ó¾…h¿yþ›†b„àŠÌ¼Âof'öpœ/9ð©ø'"'òû…×úoMÆYÁJŸì¥Ë7†çòÒ‚æ±ígd_­Gù6›e vw¸”YæòOØ Ý³»L÷¹ö¸§0»³ñaÕ‰BÊÌ2A¶c®ä`”ž.çë•nIU¢“ñ”Éø¿(“¹ð{*ôïö¤KŽQ–Vt.ÈRÎç^%éúýoÚNÚîû+—tªÑe\ˆ6×ß©ž™[÷νd'´û†Ú/L‘¢^+¶ÄYf°A¬9Þ¿Jèžåìo› —¹®TÁrÂZ<çÆSÆúÈ™í‹yê%«þ!Êþ¬êfškGWÖ¶îD¯Éä7nÙ¶¾5Û£PýÖòÅAÅÒÆêŽx©ˆX(zšEù–@0ÖlgŒXt^ù¸†ÙÃõÑ—ýÀzH!˜, ©÷9> ‡!.œÁLÛBıºß- ñÝ,l¹°@¹s yö9ÜÆ#ˆnÚ›I³¿½†.Ø ÍLœêTÔV@géMU9© ½³Ö>ð“LÚ/ZVóI…k¥Ó¾õ$31{ÌmÌÔ ±3Z§ÛúÝ]òŒÛ›°Oq •çL‹I9`W«Ãp«÷9ÿB,†å±ylRÍÕ݈;ÐÖMÑš–6™›ÆÜ„]Þt§àç­9ìÓa>”gKKç£ .t,Ÿ]ó@"¢û!"æ›2ÎðÖ.œì9J€¸Bx1𬯄u@‚|å_Ð40àJiOÓ8@•ól€Ö…2ŒýÄÀh›Xt8¯†°-³/j}³ƒóO~ ’ íšZMŒÂ]A[ ¶ßÖ§h)2å5ÑPø=_8¯<:núÖït2ÿIV¶ÿ› ìÿ9eûï¹þø78þ‚°ý?¬?ØþKëVÍoyí5̼2J¥…ÊÒˆ›ðÁ‘Ñ„­7=]t%å¦6fë…¤N9K0ì-SÀ1×lËJÂÀá~B6;Ël€_RÙ(¥Z|E4Ë™OÃKü†3ß¹¿3¼ae3%”@_Ž·œwž{gž»ñÛU‡…þ£{̲æÙ³TTþj¿Ìnb˜8–—¸**¦&Ý•½Ë¢ô_`@îŽeÜË»tmÝÄÏ Í¥õ¥»»Z‡ÐZöM>O43cK¡O¤G ¬x’áL~»}èt1´3måÀG™7o¢CU¸N2t¥êbÌ“¨£ÓéèQ¡7ÖGŠ”šdqJtïßoç÷²‘SG´8S·iÄŸ¢;eϵº¹'hS,&.¯‘ø¼~¯-ŠÔ¸˜úHSi²­¶Û½;Çþ6­º7äî”ÅO»XùÒ¯Ü/j¿Å­b»ñcÍ‘óçG‘Û$¸=²¸íæõèá`u©ÐL‹"1P*b'Ë}(¼(R`4½Q”PÑù±çÍŽ?ެMðFj=ªq†ö°ÓÐM ™¶O-(-^² “~qÙΚ#CO/±Õ»PÜDy#7qwç¨ãâ:?Ü™ÛÒö"Ñ&Kó«&§Š\²©´%ÔîZ¬|Ûqf›så€YÇyî2M·£[] ìœéDe3Î`tt·Cî+Ž 7Æ-쎺K“!A¸2”Ô<:W߇Œ+ÖŠ7^3š˜ YáC×ÕQö¬„¼·ˆŸ²´no¥t{e>Ðf}à+“ñ¹;ëÊ1z…HZ‹‘2:>ÒÏàði_¸Þ?J;tð¨©b1’¤>Ëuz˜ìÁ€;Ή0>tøIbä^m*«å£#|ÛC±sËáË~ã¬/Hš »õd¢kŠ—?Oá÷°Ñòñ­SûÀóãYCÇÙt•é¸I|ÁÞ/Ƶr§šÛÊ’³<ŽòaøùˆN’>Néò9ÍsÏ@x±ø‡œÞÁ³Åc›¥QBt(0ü'Ɇ “ÃdÐ6­‚ŸQßhþR½9úåíõ±âóJ. ÌÛŠ@yÿ`³¦ÏáC-è?ç'–íŽkKþÚU±WUôô ÎíÛÃQ[)§OÆgéE³àz¦Õ©@WQLûZÈ-¤íºØp°q¢déÀ=­ÊÿJܱ®Tw~wÉüõò©ÒþõÏŠBÞ\RY ÓΨ*Ú@é¡mEç¢['üÓ>RwÒ'ÈgeâEHÔê5°­Y#ÃYG[(“);”ø>GÈ\ ýzÚpú vI±³‚_°’Ä„Õ"ï÷u1P¥„ùu}^^XUôsÝÃMëNJU“=b”j0W`|$3?"Ã7 ¯"µk fÖ÷1HÎßÉü†ùó­’¿Å}Wô ?ÜöTÍ^ >ÀÎý5­,ÊÊË‚] „hkˆšÏKÔf™E×/zY••ë¿R±cÎýØ@l¿œZwõÊkÚi—ŠŸÎÄF8˜Zà¸*<¦Q ”Euÿ›ñ2 LžÃ–ÛÜ1~²Ýij—1¤ÙÔÄX÷ ·´s)«¹öd¯w»—ûªç!%KoÛ ×t¬Ä œ2úÅ#!˜¹¯zíì\^½ú¢ùV{ü­‘*Hï´+G(¡"ÚÄ^f¤2.ô³Jèë.ªƒ‚̶} Ìæ>€Tôú¾;ÄS(©ˆƒÙ3•D»ëv†¸°Aú‡€P%ºð……Êè£)ó¤‹ÒÀ…]Z¡7±„˜¨}iœØXÓXÜõ!DÉ4¹Ó H°`÷!nü‹rü¾æÈÉDXïJ…zÁÊ„îB§ßo/7³)iWzÒÃbÙÂÞ6y²‘#åHz† *õyð•yØpq5$¶1¶ˆ©©Õ2×u¶ëýûÊ¿ÎwŸ—ÿ£ð+‘òLRð¯±"V¬8»(+‰X™v’¤rù-•Clû ,ÇO| „êo'Fp(óÈî9~_î;éŤŸêÎÕ¤‡N^”kœ°¤mó”qÊìš(ù0ƒ–)†­s—šô,Cª"OR÷tZ&ßÚdwÅàs☗gà3dÄFVlê>¼Bgd¾S\²We˜#€;ظĞ ?Àu:–ÛŠù$u{¨a#û¤&ÖÉüdZÂâÝOg}@AKDâåu^?á&™ÂlyÁMµnŸxV»g!ýª§“ žªëàXO GTàÚ8m1`Ó,‰ZsÃEë". $%“y‰1k=ËÙÑ×´½'ÚÐÍ¢—Ôä„k!X7ßa¤:H=5Ùæ*a'¦F«…©wRžf@‘Í¥ð¤±=¸Ÿ¿w|2òÕXŸÆªˆUâ¾.UQ¨äüR7=6÷=ØØÈ¸ñL£n@b—Êa*Ø÷‹w¼BÅm¸Í$šUÖ6àFMTE(®,Ø T µ–€PaÚ“ï¾ËÓ;4Y+Ä7ê>ðÛ´2˜üUO|Iê×!.Bc9'c-ÉÅôÉÀÓ̵ï›.s·(ò ßì,%XcÙgÌa¢o‚{É£ôêw„a`¯Á8QÐwOÚú˰yŸ8…œvÓ=ŒÒsÜ+M mäEi£{êô?˜±QhÔE´œšÏ]÷[ìDåJ¹ßõ½oîg,‹Ã øóºÂC³ÀÁlŸ‰£…}Äû.kÄŸ¸M¯›J¬¥::}bð¸ÌÂþ:Ô– ºuH™rå)ÓLÃTù“ùKš÷íiç=fTøüÁ[qNxE>|³€¤ˆ¡ù…é¿yd„è’Ö9µBj¸\~å ~®˜Lв"ÐGÉh:Î N¬.îsÀÔ,º#>[E¬­ƒ¶âq°í^nñS°Ã‰ îÜ+â¾å°õàá:ÔÏc<ú#Þœ}D€ø¸õ¾¨;+ô™‹éõ{™–1/OÓ·–`>J¹ÎÆÉ:pIå‚§îv>Ÿ„?Ð6¨J§9©Ù.ߺÈ<] ¡…òi,!"ý¼û˜IjðƒÎBÌ…ogƒ™7_¾±hy)²¹×k²4ëEöÍaªÔÕÌ-ÇÏf.t„ð#’¥%)IÅ+u$Ë´ G¤¤Ñ÷S¹P|x{AÝYÓŒÔÆÉwÅ/K]·‹ Ssäuê$JèêÆ*ÒECÆ ‚ÇÐìð C!¶°IÉ™EúÄ%m¹5qÙÊ=ÃgèÄôò8?9;÷S¿˜žá5b2r ÓI4Û¤õœ.¼íý~ŸµÍýöß ¿V7ÚWð³ýD».v@B@ Ø”$ɪXÁµø ºò:5MÓ” pBú[·6¡Û¸>s/ (c¯”…ÝÞvü š˜3y™3È&ŽØݶW5#½ƒ}rÌp«k»]~™Þoº‘ªÉm2.ÕĤO"ÕiÌMÓj‚pb4+óµÁâY¤,2T.мúÈP&!Tša«Ö‹µŠNïØ:R Þ=³¸à²¸°à¢·0èÿô8!<–&°âã…©ƒ´s ÂÝ5”ŒÁ»yÅ`SW©ü‚äBwºzf`M/¬R‹kÖË×ãŒÞ×%Œ†­§+ÕÙ(4Ó¬_®‚Ü"ì«vø£ÿ9•.²†ÊMsUHŠ¢ “ A q×SŒœiDÛ*ÄÂ>u£²Ê/€S÷‡5Í`/¨nC¼æ’ΚvùàÑ™â0{œã* @Pä] f8debÕÉÑÈЀ尚Únß(³tÐËç mL7±÷sÜ BÒ!¤Ÿe¹Ã%¾†”¶ëÿ «å”³"»Ê0ÕÒš³¤{ ✃IÔØ|àÁ$¸Ô ¸Ó_¥ŒC*6îW/Õ5ØÆçýe#•å{;Ý#rCvװɶS5êÆð+Än,P7k¹ÁòÅjxj:6-m/+jÃ]ëâÿ*˜[LªÒVãAZ׋Úc@]ÚBØe?%Ÿ$JÏKNt“¢…­«AR‹è@_ 7^•XÖ“¹í*ô˜‹òèU^˜N|þx3ËySÄ'-"ÇËt°hŽœ~–û¬$5!•ûçjÃM~lyï£ñ~ØŒ•O õ–~îZØVm´û” þbZÇ31žX„ÙŒ”Ù¾E›ÂŒ„ãõ61›RÚÒ0‘%BzÞw¬‘‘²Bv‘ÀH¶.cRç!gw\ MÒ&Kˆ}§›‹“?ìcn_t‰Õí²Ÿm†±EßãÚ¶Q ¦–eî°ÇøWƒ¸¥?¯¾`/~Ï‘È($Z?!:p r|:ÅàC÷ÐåeÕ‡}sY dQ_TÓP¥hÅ«<^ÑÀ+HkNÃL}icaðH‹öý¶‰NEîÏr,ÑðùLœ½ލ €F0iŠLá[:õVõo7˜ôNd(ÿÔ{´ñY„ÂLtÐÒ÷}ÍRWÕK~/…QÚ%~Õ0® Eq,™‚¹øg"ÚN8sæTõ¥¹çÈz|Vª ³´ºÃ탵j®’ÜÉéÉ\?z^æ— ÌøàÎÈ£Û ƒGK0äBq-l±8wö“ÈOèoÓ9/‘q|ôB4Ô6k韭ö­:ÌE'ލ · žîÉ7²A P ‘ÆB§×>“œœ¢ç Ô_¸ô+¢NØ*¶•Þ,‚ ð³¥ÆRÁó{ÎË„„~y+'È2%%„…Þá ¾ ?pÙ¯ˆ!VFAOÈFt"%;­ñ©ö>ÂÕÜ%#îÐyˆO5ó['¥þ³ÀFC{J„JäB™“E2Øç@9a¿K‰ÌÅÕ'?Ê(]!›Œ?±½rõÜóÔƒëÔ$’¦$sZ ©êí‰6|?BÒd™¤³n‡žÏÁ¼0•Ùa UÛÃ/"Ò4†û¨fdcÓâ|:³vܧr®!Åñ'µ²ú]„òM³Lð­l¨+$wûÄd¢à2Av¢3߃J­I^yïÕ®@ÓÔIú œ­Ö©àQ¹S'X¥M©¢±%xªA¿»œJ40˜»ôß>ŽÈì>˜’Uâžû7KæØ@™–)ÅäÚ¶ØVõré=CÉÝ6+0Âþ©ô#Ûþ)Wì›´LT•xÏ ¬á›¢b‰¢Ô/޽=Ä`C@Å’ˆcÔXö±(zƒ@|h¤bxë­f?^=+Á4FÉ/Íî Ú˜ƒã,Ê@½î™Aƒ¶ìŽ@)ûæ0[°'÷+ð2K—[ Рq^°ÊÓÈž¸æhÝ];ªØ LU<º*†¤"&yë®° Ì´q:E´NWSÆÒ ç½ÁÔÙâx°P}j“\á°A2ò”1ª?|G@ÍW¿¶µOvÓ’æç V:h2¡„ ›ð‡šço®>´¼gÌ#GiTÖá•­!¶§{QÖ¡êÕ|')¾Æ µHb®ðm) †×$’Atª„ÕuaÖ«,ueôJ¹ÿ5¶¯º¡zÃÓÏ_â× JÃ{&ê•R. ÉM»Ê­–¦øf&>Ÿ0¼×L)í ¤±<0ãï<É8>mɶÈЃàk¬r¯Ëë‚AØê ÀS‘ÐkèÇ,#Ñ9mó]7%ÙuYÙD9Rºâ°ØBA`‚ò¿¢$`¢ÕÉ— 83NïcƒÌaîÚá?•Ÿu¦­(½(ÔæÍiż'¯ô&xn™€±Oľ‘;ÇQbT-š4ýá§£U¨&’¾ú!ÝûG…¢1ùígJ†ˆ’½B8…6bóù2šr®×›ðÉJß_&ðê4ßë“>çYZåôn¬Û]jƒÕEÿú ]çÃ9¯Y±o^¿f³5áŠÎ‹hö²Æ©RKyÜ—3)Úì ˆB9Lƒ¤Ôv–ÒFZs¶p5!æ•’ ~©Y³ŸþÕ|âŽ7ð•_ùcç¦TC„ç fr%Í6Ú˜˜1Ìñ·úƒö€`Ä8q°ÖÏ=•ŸŽc`/W^ÏûÚ¯ó\@Ò°%Ç=µ¡™³a4:à“MÄ×É4ÝI:}|tƒˆ‡' ïÿ ² ÑK¡&,lñÞ¶£™”aÖŸå~º?ûÊ Ói“ ½&ž¯´Óh¹  Ú\ßò`Ðo? mËs¾ >¤Ÿ®o€¥Â«準·½d ˜œ¶!ôöΠňkìp}bôç£rÉ„{Ť«r ·yƒ³ÓFÌ'J{iTì•lvˆQTS¼ôìÂ3Tµq~šw½ÂíñÍV/¤CJî–ÓÛÆ,…˜©AîáÎSæöÀÌ;;2~%p,cÓðí•1âô¶GÄ507úxCcŠwà4k?iÉh¸uJÝÄŠ#Ø^˜±8}dBiÍôãf£~ükÍÜ™$&KÐÆq»ÔÕIý©ÚY]àÑgG¢jÅ F¥vâŠ5±»Û/ïëD÷‘ (0»œ<¥Û-ñ"M5£‰ƒ)Zè™ÀØ…†äº´‹ë‚zÉ®šokVŸYžû7k‰‚{ý¡ç^jìukMåli1á³üµ±piÖoLÂö¬]–‹IΜOù8Žú’Ví¤Ø‰t€™Î¯wÌH›¹o|@\«*¨VHmÐQÛ·£JªÉ™ÊÆMIµ8¹êÒH‘‚/žTUtÆÑa .Ú†d¼ãý èÄ¡°I¿ñ"}’º]žµâÑ/ã~ØPÑýŠ\µ¥ ÇóÇ7;NÄÃã†rƒJQ0w°jK±wÃ¥ÍÃà°rîxíiy:¿¾3Qæá:~ô¶¾å¿Jk¿€ÎŸƒ^ÿä'Ç´/0³°°þçôêdøoÅOŽÿ½Ú‘ù?o†ýOüääü¯ð³VsO^û5½ ª²‚žVÈ~Š4 ÛçûŠ‹äP|U%­„Ê.6XyÅÁö¨ÈMc)†•I’£n ÀÈÖØc]¸5íï˜FRb“ÄTÓØ7`öǼjæêïuÎSÏSߨ¡oéÚëØ{Þç™Ïl|Ë&®õãÏ3“bfŽKý›üo¶Rz_S©´“Ä…éƒ*¶ž‡j—ü£Ã…ÿVÓêò”^¥àê±×‘·¶°š~6,]*q~÷ïuÚóg<­‚žõ‡†r\µm›ÜˆâÎ)wËxl”Y»„x܇¿ÞÆâ\“_^¯›1+¼œ× ç· ™1†Ý2ðYv¤ø¾Ÿ-ÒÖEü6Ä(ra¡¶*#|wR¶âG}©˜8]Ùuü~º^Föø[ü±'iŸÝJ3ò]©ØRçý×±…?Á)¦Ù¹ÅØÕ²·™lw–pÑÜ׉¾ï/¢^Î Ësæ»nùéÆù‰}ºoªM3<”¼ÿ¦‰uBOˆ†lÏŽ&ÈP Î…¡ÄG›?DR>¤DX€f‚cËÇ6@T´£°v„ç逑ÀÄVäsxp2^Fyœ’˜qœ7z¡ó™Ë¥Lš†»è„ÔœDöœ3bòu[ç-Ò•ƒÑ%Q¾ÛZ·rx°ƒZcW3ï{já³Wvesæ5¥Êf—ƤN‰ÑVñd/6¨,q£bdéHW^†ší,Ö n8°¸…®löyžœ,ùX9¯ÃW°kÙú”Vgb×6~„ÝÈAÈÈÄìÊ¥H>ˆ?£WK>Ž |óÊ¢¼ØÂâ Ú½fï6‰ZtH¶Iê‹ý¶3RÑûu¸=L8 þÇfÇ3õjýÐÆ:2ÁqûûaÍ™ý«Á—…… ¿‰lˆ×cÚ€¼Ðù;ÁéysŸÄÊÕ`ë^Q6º£íE•+H62½ èz l—µÅp8IÒÀp%|°‹X˜j($€ÃàAÇ0ã=‚¶,Pd5°1™Èò£FêûŸŠ¬û ‡á­8ÿzåsÛ ¹ÇÂdƒCì.£ °ó7C1‚a„»¼ì{6^^-•ˆr“z€t»³9<¬úò¬Tþ‰âŒæßÁ#¦tïÊHx[tp¨:RC¥èã˜è€šmq¡“ªâÖw½ß°•BK» =ÂaxºïzÝ¿#ȃg«wÎöê”E ØáÙírzà㢯[yŠÞzõwšhöN'üŒ¯u€«õ2ÎK)ÆúëÒÉìýúû"»W'uÙ~µ¢6Ý”X%)ÿ ÷A=«ôG `ö |.ÙlðÇ:2ól–Sõ0áÛAŸ‘Ó$zÐ ÝX¢`ã #×@Ãa‘ ¹MÀXzÞ óâ#8ìåFœ¦ ù褒¨†;ë$².ÓŒ5xfóÀSüm€ÀâDš‰çÅü%7¹©L¶¶í¹e5ì:ˆÅßÁOVü üHLsˆŸ“QIÅ Ûpú¨Þ–5j=Dý™no9gøfàþ²é…®‰Ãp°®ëÌuпŠ>ë~ß"X¥\8øè}ù󷜑ÇE÷H#×ìÜ«ßâ¹)?–÷¢Kqï25Eâ7‡õ€éÝ}{®Ó6n•rYå­ýªwäYDƒæJ¼ã*<¡gG„îˆç~ ´d7‹=ùP;%ªS]7¼Ç[2µ€J•ã0€HôÇz’:_‰–ƒgóaî*mãNèÂ<”ÁÁƒ—oyÊÁÏÞÕßlb•#â€øàcg[œ°— ƒr·Šý*úá Æ *5“tl¬Œ&RÏÊ]8_0ê)¥àM7”àƒ Ðœ^‘ *ÑLš²Óh#]’‹pTŸ«k#T”Š‹gKPž„â à•Æ’\‡€[º2îÑ^ä3§\‘ðn%;)ä‡(0ZÇs-€¿¥|TŠ{h«5â9ïS¦T=¬»o8«.ÚÍ@ z–ž¸p×-Ú&å$8VºaÚdKyá'Ý1Éq{±eÐÅý$"èªÐF’“ ^–äwÏŠƒyG¡³Š&`¥š õ(×TW6Ü¡®dٲՇóìàaÖ{&¾Ô©zÎq•xø˜Þ,›¶ì3–}q´ûßðÔ%ÌÀf(MOÏä%<¬"<¨yþàF ¾¯öjkÄTÀìÆ¸}!îôH:ÓM/±ËÓþ/¢~`L‡˜K÷ÇIŽÀ#„‹(Ü~±4y**Zÿ«[Ž’|ßK ^AÂ.Q(MnC˜µ¬ÃÓƒ‰à Ñ_ð@lr‹sOôMq/X?Š„ÄéwßeôWÌÛ±‹V3Œ±~LðäBCLLbã-ÙQ,Þ*õ¡£)Ï»?ç=kÑ!aL!³µ¦Š»3ß­”"s@²À aOÖi§kO‘Z|}MeÌN‚sÈ\ÖÂWõ±óïd˜M{âTƒtÖKôÊ=nög¢ÄX;‘ýÐr5´8kgGæ=þܽÐBÃ&Zú1Ññ´Ñ6Õº Ñ3E&Ϩj¼¿‰,²"ˆÃ`™ÌoH­ÆÏ>?êú=³}Mbˆ=Ó-±:âsMïaQµÁÿ„Þ²‹hQ Áܹ 0ÑDx³þáê„å"­3ÿža|«M¹5©B3×4ô”ÊQs ÓDòžS¢&å`KrÄÆá® q$¤‚í_®âƒeÚ”â‚?£}XJ¡9(—‡6Ð;–ٱβd h³TºVÊéE*û»&É ±Ñ£$ìªÌ ’#Z‡Ž™>6ÜG›QÜrð*ô°X O' s[º3ÐU6ÃÓ!“£Û'—ðôE(š€<ûkÉ=’«}†ŒŠò f a¤L䘶„‚>²û²Á¥ ¼Ø¢Ý)¹y Æ¥‚OífÔ'óæ¹÷sÆF H1£±,vKrß¹f(Ùº.ª[ ®?×ÂÅçÎyÝ'÷-SmAdÁpÿäE›!û‰˜¯Î÷5rÒ^µg÷YúU]Õ>¶»à' ¯ŠA·¾46Š7<Â^¹LݹmêN ¤Qÿ¢2°¹0xj•FBÔÅ“Æyö 5n+”®üºäï"&¾¹}2xõ:´4âPÕµ@¦æ~õ®û[4 îô{ƒ&×â­@’)Jÿ › æòÊwêå÷pøö‰£)WKœl^g£˜¶Sì‹j§vÇSÅzÓ²êàínMÙ˜®^¾Æ€öÜ?à¾í ÓRDÃívؽ¦À¶ÿ¢Nˆ§$Šì7ý‘3šå3V-8Ìù¯€Þ,§Ö3"†u_I8³çŸ=¿˜¸÷<"öÛ$.í ÒØu¹sâ¨ÏEؾ~UÂ×*û§r[§ÈkH ì cÿØ"Ê’’,"“Ó–)\MçÌ8/¶j^0RÄ µH²¸—·•—TdɃò¦/×kÄjYFÁÀ2–c*MS„ÑèÚ€šÉú$ôÓÐ%å*‘f¹¡QÜtè•Èaå0\“1ADžoÒÇζê{ÞbµéPækÑî»Íyæùµo»é{÷ä”·÷ž»ÇyY¼TÉqÿ‹ëÛC¹“¢–ó\óEýñljgÝå¸ãP%è¡ìQÛïþ<—n¤ÚòžñÍK»ë»âòÕ~=^‹–mÇê‚§À#­ÚâMk)ÑØ¦wéF%Ç.‰eK¯M&4öû!Õ‚‹9êÞlVþ¤©gáic!ÓˆÏ ¤XÝ? #ÖÍT\+4±D1‡3tY —ºPWgfÌÀmì4°YYýQ÷È;—Ã{6VÌÒví‡ emf^…ã¡y¢Qeï˜eš²dÏ/¯mfu¼P"»~gÍ{ÝR1n_>ã\ ™ØVþRmgÕ覂OXf‹‡MXÌp•ËãæÄOCMë™Éбƒz݈¢9~C‹+ÛVÏ267SH(›Bvzàa°™»áÐÅÍ…Ä2 )ðú¼<À½ç]ƒ‡Ùh/¦¦DZì¾w†bå¾G1¤g bX4€Ü…ƒ§#V—ºº> :Dß b ªy+yéA†¥üg ÓkÕJŽ*o6-]«fÛͺYµ­'ØÞa«6;ßGãY‚säœÌÆ?Ws2|úå펃÷º˜NÄø!õ³#¸ÆG(8x û¼Ñ)Ͷôaç¦ o/”y̹,”×ü,@ýq©áGÛ¥Mt Òn Ò7¸#yª0Ö°Z¾°¡K%\X1×$„ eåŽÛì¦A«Fœaðã‹‚ÿÅS×Ä® ´Sf|Á‡"/sn$™SàçÛ’“û‘Í™>‡Õæy­¸ –ˆˆëÓySàå67G®•ÍèÎv@ïJÐa;Ñ'³±MkÔlšÑÈÕ`t3ƒøiÞ˜nKt5ì‘°ßM| üŽ»H^BÛ[/–XöâYž”*ûäý¹ŽCFå&5¦¾_‘Àimè•É’>}®˜ÚË»ØË>]¾0\Ú:Ù¸Á Á-ÑÌ?ÝÌ;G«xâOº,X |û)‚KHEˆF*úgšÏuv=\0;RÀHY¹Ô=­YŽǽ‚ØEÖ”CEk´}³}³¡&ºÒ<1‰Ì4 |É ÙÉLœÒ~®HHà]ã5…6[)æÚ•YÆÔ†3‹Mö\&º‡JÊ2EŒ} b`aý Ÿì4&˜ð-™‰Â± nãÉéóÈ:T-Ñ7°0¾P#¬Sg& š…%ô#&Œ–å_®4 åŒÔU¥ò&Ò4„Ø+ Î3)¦‡+î‡Å¾ÎÏÄò‰¹ lÕ'2ä¿dÑÀ0îÉÍë ‰ ^¨m8ª½ó$ôçÛ’êñœsÃW´ó•`j6>Ÿ"zC KÊ^yéAÀñ+}WüÞZ 0Nº¼m˜`‚ˆ[uU=ßoã¡ö†bµ|^VeMË}³Ðö¹sõœlž† R"ï ô¿råÉ•›—W…gózQ•rÂ>­@$vªH-Nט£?bLTBkr=¡Ò8b§'RE!¶°M xëUœ!³:VR¿sŽ…Xo ¡‹ çæ„µÙÛŸ®Úë×%Wo…§™MÈ¥’8AîQI#Ó<±îÕ“GeSÈÚ’Î\° ËM§Ô½ÏÒ6ÜÝ¿[°÷­!ã<¡V %V~Z9?=³v±~ûȱR•2]‹†ÈK Õ8yÿá0¯©ë¨ ·˜ÎQâG¨}Àtý¢¦i˜æ5¡ÕG«aƒjúÊ6!AæöDÈ$ÂÛÏJ•ò¥1,€ #_)(ÙdjàyÁáE–)–ÊMźES^Ý&œØ¯.Î4?î¹´¤+®kù×.²Jº6Ž)¿z0¤Ñã4'ìõ®~¸0T ?òþØä¾XËFð·=;ºXmLÍ¥-`OTuŽÉõÂhÂø—H%×1“¹"—ÚHî+×› h¬˜d’HÓ¶†fgÉL$u‘ëú#LW8«¶ª¨V.)z#Xîy À3 UR_niD¡À’,t÷À%õ”ë—›"˱óá.aæàÖ¿">~ØP%Cšµ®1(”¬Î7wT¨¢‘Ë—Ô‡,lì]cœl7€›ù}Îê½ÚZ À–G†{ÏèÇqcøiºAÿÖüÚitAg`Aõµf›‚髨¿[l*óX•έ xïÜ-ÒŸ.ú-ãRhnÇóôÄ¥±]~)JÙå¼›U Q_š L…µùÜUóóüÝ—XÑY½£þŠþä‹OLÅ‘êã¨o÷ȾaH›³â=)´}Õìð ÃûÎz¹Ç²™$ôëdíõæ3÷©ÀPâXÔWªH½”ÑXqçS«Z4ñ Ô.ý®d;C7 *,õݯ\ñAŽñ‡Ô­È(rµPr ÂÑŽéØ|ˆÌÉ£ð—Ûgn~Ÿ5?[ý𿯙î~Sæu’ûy§—ûAI­U>£ÐL÷/VÀDÂÝ{ð ùŠÎV6âì×à×T¨Ú2B^üC]ô‹¡¹Þ °‚ÔF½ëÛ¾®>ct˼Xo§ù·Í#‡½—.\Sz<”ÅbÑOWNþhøÆ4#¯Ú‹ÈOp°§¿¹V‹»qÛUWÌ'¡á•a{Çß*³49½?ž5}˜z=Iþåñ¨YÀT{¨ >¿ÂN*žýõøØê¹“¼Ó<óÉvu›–ÈJqŽT¹r£®oÈXèæ o4åj¬óèVvd—ÿ<±_ {Ø-Õv¥ìô‘ß‹èꦖØüë雲|á&ap ¬¼©é \X’Ï0FmgnJzóë<µ¬£P¶rs¡£»m„Ò ä.7ìmRA·O,\²¾˜—HHÆHW^¯fä"Nù@0¦ú#:Ž g7ïjÓ9ˆHýÚýtª½£¾çSÿYåRõêO;©ë{Ýs¤ŽÏ\ÂØó×øeÕbnËR(’ÅðäÄw^W¯ÎCT«ö«‡ õ´í‡°5/rø¢^5¡Aê+ÌH®„t"àÎ&9ù¬¿j· ŒeZa¾ÖÃ%±PcŒ+î¨(ô•àÀù¶›d“ˆ˜‚“YŠ&aR- HPÊ¡3b¸þàõ,XJ_Y©0e…Öââü·Îþ¯BÃÿü¯* ÓϪùûò'Ó?«æY˜þKUó­ºòØæh½ÂPZªVÄ"¥nG‘†4ÆÆñ}£#ÚÉ-;ã `”ÚÕÈC ¦÷룲ÁM-UT¢`ƒášX1GÃЈ©@xªQR©Ñu›*:5Ë/âÏeé߀޳™ðsÖd–*¢P øwÞ³Îygœg¹üã ÷ùÌÞÍÞuÞqЋ¬Oâ/dîŒ;¼>ÐN>íï}Ã"þÑ¢Å÷Öeìú³lMœ­­ ?%ÞoE?Ýî]ǯ.ýÞï£G©1^0sSš˜yúknU¨²«X •«ÓòêôkÎVÎ7ïV½:éêyÕþõjVíêqh·jôæØ¿…žgMxéQ¨6¶µÄlMÇÎwo¬L-Åm¶.®åþ6wJg›¯„€yWÌ.œ®â€E† ëh=¥1eåУ3GËtß}„¸' Eµ«’ºãó‡àÿ1ô×ÎÁˆ9ôz6âqœ)†¡ØÄG‡¦Øe>Û9ëÈð 4à°c¸ "¹­5…Z(µ^ »û‚NÊÒŸ:.oÓ•GgnUóUM–þ:ý *ÑŽHó¸&,¡®–”Õ›@áÓÖ£õJ;3¬UK”<ñÓg@0Œ¸sïz;ˆ€@8"pç>> Ä%GD ØÝÉ4Fp‚aæüEÿ¢›œ¿ûdü«&qþ”öá1qwhì Œäûµ>Ñ=¤¶ë ÕŽ0Ru6•}Õ¼Te(iÝN0€àOË×ùZÖË"ầ­¡¯ >ʲÜó'F•Þˆùà]¨¥#Ö¾Êe D69ô”_,»/O½ÛŸp„£ŒŽiBm„€Ýp(æ…"Þı:ESÉŒ •Ái|c+sDù°Þ ±^…,Ë¿w"åpÉ„½Úãª3ˆISžªÿùù7Îø ‹¢ â*5´¶3.I@Ò|`0W›´2 ?Jù¯÷fßA½TmeYÍš—½Íï 5à ÌpºâÖ¢Tb‹–&Ùs{ì`i»â~òôÂéP(Ì-¨5ZûåÌg¾2‰±r¿e  %š„ fv™¥…v‡|Ã]kóðåéTë:O´¢ÔÎ>§„´vé œM·”CuÀM ú lØ4ºëŸ¡¸FŽ[‹’¹?t¤ °’P ä·ÈÆî1ã,ƒ(ÛùgSZ“Ë˾f°ú9). )$:]¡»³¯øÁ rsrs¬ ä„ÿ*HáIY†+q ©Ž™Ñʶ½Ç:ŸÊ¡%ø÷†F¬»Ï¬' O]·CÇlOÉXÁ”/]€rp‹Ê|úþ`d‹”ïÉÒä:HâÀ§‹Ign0E´ÛP«@íÐgS~ÖFòNüþ ‘•Àªò–ïüÜ"zS‘v_‘¼¹ÇF] ‡]•a:)ÍI2o‡6n6æ<,ˆ'mª$—Äšðª6K©Íú¶8¯['/dÉí†ÊYºƒS¼e¿!”§Ê¥ìê÷ÅØ¹ºl°•©+Ú,ß“1€$^åø5XÄÃK"*ú›yþ%1 Ç͈%6û#IdV#éµdK “¶¼v߆1’ V-κOÍêÄ’~H&<¾šÜßOÆã I-3 ×_4gA0^ËÀ8 TÛéGw®õš!ñ‚”t›qÎÍCÐ÷éËC]ó›¸OÑ% e¡¸x.q4ËšŸfΘÛЊ“ŠíÙ€8÷ˆuJt}d<¯X’€¨Áz']o”¤â.ø µÂ>ÓùƒXN<´"m/‘]N‹T“àN þü"ÇzýR'ñ…§)8t°ÔúøÒš²<Ç^ëœ)ï:"`6ÝÀè1ÿˆÑ˜E„¬¸Ë\.H£äpÊçÄã‰Î *¤zZ'qið];tôpñL4{€‡ì£ùc‘°Óšð}Ù² ‹?5’'TcFì‚*‚,H,“õ¹éFÄÖô´4&‘„othšt$WôÓ/´I Ƥ¬U@f èàTØë€I´GwõDÙŒÆG‚Öì9dEPü÷Ý¿¯n]i¤ˆ]AÐ+tÄ-4p>b‘6'F ØC€~—CQçP[l+Þ¯(DQ¨´ì—¹Ù™`òÃõqÚ¸ŸÏõqbmýÀà«ÔùE¹"˜iI0:ƒ±±ôÅIÀta+:fAû†t@f‚|3úMjüµó3 }Û÷öÉnÌmo)ù$†°–œ3à~>ò>x›Ÿ³L€¼– &Ñ:Í:’\mžXø“äFF"Û[Ië˜ó› hÌ陉õÑ(&½­8¹mqñø6#Ž¥h‰[Î^»x%—:w‚'Ì82“þG(m5hM²-œŒ£dbq­‚Êb}R EµƒH‹ÔƒQ%¨^í>ïs"‰˜0¼«yµåçf2(×Ä>‚ìòñ‹ng©.]P ™ÜBÙåÝF·TH"«)@›G¼n™£¦ó¬%`Ýd€01J¤C2ÚÁ(yˆL^ŽUÝ…ܨ÷Û P‡¾µ¥ 8Y.ˆŽ&+Ëãããkì£NãÜ.Ù\­ãÜæsruÌ^.¼p¿ÖØ Ÿ#Æ•ËrŠ«ÉäAbdÜ&ä7 `9/— í_úÍʯ:Õ>[‚’>Ñaœ¦ˆïiÉÛ†2åÏFtø=¼…ôXpÛÁúÑíš\?‹¥óK¢~gòåÓP;€zµï`‰½ø·Žú~Vƒ\#P˜…/·Ãu£n¼ bÈk þ—'øOžkë_1q¹°?_7u~êê½ãßJ]ºªrnê•üÍïÓiyÍc•wôÚ_¼J n;6ÙðWÝžŸ/MÜk@Íš:ì…òüôYhçǪ̂µð£Âí‡}§g¿(ÚÀ2{|$¨ÅÅÿ&¨éÀœŠGvп“Û(z€Ã§kaÒÇ2i)î /k½!ÒFÅчõn¤NØÐ$òÈõ}áQ^ìt—`ÃÑŸ•AújÀÏ„õefK¹MÓh3N¬f`pöžG¸ˆáܹpv(×±Už¡#†÷Iã9¼LU1ŒäymáÚ3} ŠhÐ[Œ~j| ʵ·«+mû’|2¸ÜÁr¨&y Ÿ¬&ƒ'þ…2q?êgNËxl‚"<7àvßø€ÒÆ ;ùüb{ÞBSÏÂĹóH¾þë¾%¿±eÒôšKÇ}ºl ¬Ñ²©  Ý€n0¸+qVî³ÏFšŽá*E]ò¼-D K»è÷åÏ0s@¹ñØ ŠmDÀ@”ˆ‚ÀŽNèƒ=Ÿ%CEŸ&Kæ Á2®­ +æïùûc•.?qóÒìÔ­Õù‡¦wÀn‰ 9-×ÌŒ¦ƒ†Pe‡ gÛ@×äR­1¿‰»«0rD©"@³KÇáÓçöÁ=é¾Ì¸¥èM…@G0"ÜIû•š M²šìÝCñÏû×·ª(yó½…ŸicÄúSÈbÁÄ-Ÿi½à œ!ßÅÐhØ,Ê3e0óæÒ™Jˆ¾—@¦!VÞô,Fd,©:§¢…Q¬H=”&$ ½…ƒ¦«¯í¯·°«V®wEí/)ø…895øó&Ë_(¾»Ÿ²A™]o¡2Ç—¹ecÑ /7;›(]dÌ3tñ j¼vmÆn íüÎ+’DN4¢iBßv̱ëõÑ—y^û b­n¸·‡¢Õuþóêú9ê÷Dß]~Ô/&~”öcTØÝr‰Qv¿Ë«Z¾/çÅ**Τ1y!Â;Ž©§*UÏ´ôž¤%0óµ nCógÀ'DOøÐ° ä>›ÁV©æ’ŸÈ*SêîþôKwJ½Ha.‚r»ö¾ª¹zMëÖ@ qŒ]›;÷@Õ)µ]>Ñûä*¨óØ â6Ä«gÖ£) $&að„F ÿW}´)yàV å@,uø‚Õf¸Ûâà…ll“Q0+Ϩ7þ%@ÿÚR¦çLç,IQÇÕœƒ¾¾Íé;ßÁ;R``ýü®4ùýrínëh³¼")ãCfyÞþ¨1ÎŒr“EŒ L LK­ú%¬ûR $eoKÅoYjŸ”’¶ÞDib«(d 9g3Gëi"kVÌTŸ´KêÂúƒE,> WTE×üÒkÌ-?ÿw7cT?EÕ\‚âÁè“gbŒ•Q¨â—¬ÜC(˜È˜è¬· MÙ¯×@É Ú•¸¤õyÈÛà(Ù¬_-Ú/ tUj§´ÉÃK†•œt¼¥Ýïà?ƒÖר†Wæõ6ãå5sâ#÷ù{ðbj•©E•ðÂÛáæ%Îe#¬Ì~XRH2¡~Œysê8Ÿ·uŽ+~´‹³^ûÄÞ÷ªÍÚÆ3ÿØCÆ4Iº½mÜ/{€áÉþøùÈ\ŽëUCÛw0‘ÒHc max“i€x°Ñ˜öÜì9Ç[|"çØ¶Ä Þ´@­eúÄ«ÀMŽ~¼’O°ƒ¡Úx•᪳ÒK›ç—GJóüE9¶`•7ž£ÉèZn#UªÎâÒ2Év6 ‹Ð+¬üù©=Ö+!š Ÿio* ^ÂFB¿ü­ŠÞÀünsÁ¾v}£ë_5ýüããi4¡OÅñšâ&VBíâK+Ö*,,Y™×ªÒbÜ8§¶ÃåŽÏ6 w⣢ƒ© y€(Æ,Êz>ù©èbŒHó_«çÒûï0N†¿€Qž-òg~aL+" ÷éûœµ*åíû;x°ó C­«Ù\ÓÄ*.H ™»V&F36<¥"94Tþž^M[‡¼Œ¯'Ã÷µ˜Yô(ã©>¬vFyE•ÍìÚï¥né’û­(Ûv8?$Rˆ±ŸÜ©Òêzh;£«\ò \°$ö°â3HÔÐZC» òRr|÷7õ¨u Ó<¥$²Íê!fSÇ´8›Ð_ÀëþÕþVMqdÄØEÖDøªsÒw‘p©æô•˜&½SîÊø:Œ“ݪ<u³ e‚À©2SÅŽÓ®¡Jö*OPWtnÅÅbVi… bšEõÌãÞR,V¬oì`ÀŽë…Öbë€îqåKâšuM逾°]4÷m¢ÞÄÃ#‚%ëê\®Ïtí”qfó/ÊáVì*Á%F1 ©ýž¥:Qúc¦ÑˈH†;-ƒR†j£ÏÐ\»È—‹t°H[`W«'Sѳ—FüóÆ…ºìˆÉ§Y©§”V“Ø`g§‡èò¥C¿Œ0Öoc'[@8½¸‚4yú|V Rì®<ÝYâY¯ÕåJ©‹ØØgÙÄÀd'—oÍÜc»æQ»Îÿ넊‘/žœy²^•µn¥G”FÉa0ó>aí2  !´ŠI!ëm~¡»& þ®ÄÊDd”_’ñzcø o‚îyÎÖ$= Êç.ÞfÞŸht”V¡ò™Àgsù½ž!W©[ œãÖ·™³ÒJ:jšQTQÁƒ§J¢èì'º· -•®M×þ…~3SôÏœÏüŸÅÒìÿ÷ÍfÎÿž9Ÿù¿ùÏÂÂðÏœÏÂø_Éù¡ºö(k˜½U¥ŽDZ”fé¡hG­¯ÞæŒã`)"W*jÊl;0z‹1¼»ñH î­J)DˆÞoÀÆôf7 ÆÄEhC²ôÄ¥PNªâ’8ú§L߀=U›R3ðçO½Îf<æn„BëWÌgÝgžù¯žüA=„ö ?‘{Æé›Ò7¤öùš}£tžs%[ŸrÞ».u;ZXð‘öÃÙcŒ¾ö&d)[ÑkTÆGïo!J¼ŽÇ=}t¸Ò¿½=w1ïu}d¿”mƒÑ»ì¶o}åå!ìýþ'“aÏ‹kSš¿ÕUO²þcZ«úSÓV^/AiÔñ±Wß]lyÔÇÇ¢sßß37ß®—lIà­ÑXzÙ”z˜YYÜ|«˜š+Iólö `³õûÕŸ6³G€»¡ºPŃËÖbQ¿ðÈ@—=†±£šR¿ÉÙË¢»lÄ­§ÆÌÓÊ©:»<ì…²1»w…Wí§g޼ªX 4ÚÎö²ªPÚû´i¬ »ÇWʨ¯O'¥ã=¾é|ÍkTÐÉíe{T7ç&QcR}JÓçS/{2ÁìE‹Ët“ÑbJã 8¬Èk÷kÀ¶÷{²›¼ÁH^CŒ$Ëý…*N ‚® ®O"ÖŠsÔä^½HÈw4¹£»,’O’"Ÿ•À/jT@+ÞÕ«ü»ÅÇŠw=bz¿»ž•XŽa3æø±¾½PÙ‰¼°Üwƒ™?ò¸ÝÇdE×t‰ï­¦º&M`DŒ'JD…‹{òvíô_¯4´7Œ5¥ÃQⓠ̾'~ú !£Ç³â!Y jRR2¯O¶pßßJLæ7´¡¹õ¿£pÉk'ÔKY©¥ñå-’A=óÝ뤭o}opËlÿ´1^°-áÌC›T™:(‰%È3—•S‰ŽÏͬ9· `Í›^ºÜòíp@hÛÉâß2?Æ^þa¨ÐÁʨ—G›¶u -Õ.Ô{(6AVTêgTG¬8›ÆÍ*!ö¾þûR5¶%OÑÓ¬Ža—…höc Ä»¸­TÃpÇØ=Ž˜[fê°ݽ™³#ÉÄêðÒÅVÝ$-´˜Ç†±Ôtßéà÷dÂ…ÄyÀU‹£°¢ÇXÜÂWÚa´Õú~£w›OGÆ¢ÛÑx;Õ©£ h—Í>'úCÚ•Ì Åq~#ýúÆ£·Nì©“g8ŸV?ÒHNÈ™b²€òƒÎÁ„ŸE`0ҳɰ|:«bÚ[x7€ù2‰6b*ÎÓh¤M“`ÜvcžJ|¸}u¸Ãë\ßY,RJ´ë£ë?X^³¸Ñú)ÚQ CÆKc5ÿ‡S»bëù™ÕKcŹ4¼M*Kqc#Iü“D2Qôãâƒ,µ¿mæ€P ú€Ó}ƒ¾êã‘ üedˆŽè+§C”SG=Â>Ðpú~…UŠ)Crãþ“ðùŠšázcYgtèF½ɓ×>6a!a…@õ­!n«<ÆëÛ­·kDw Ìɤ†´!\ßÁûhÈ }†æ|•Ï¢û§ÓªÚTÄW.ŽÉ#<[kò¢¯?¹#MŽ‚±’;"Êõ!R¹€ ÛЛw±.†Vö]ÑŠB4/KšY“òʺß¹Fkx…NYÉ@kóh°Ùr©ÆÃØ E˾Å-w§¥n¥<»[V¤Ê—ˆ!ö*°øÐw òd"úý>N)k|ó¥h>\ 6^i´ûôÕd!@”ù^a¿Åá"¾Ü7åÃ+}<8Ϥ´3P¡‰)¯Óïâ˜Ä°NQÿy!‹·Y¢ ²ÕV`Éi,BìÏz&µòp xbÖǯބ?PkUÍß_s€ü°ýÖ Ý7„Òu~|C4-ÝËãûßøü™xÿ2……\?«3ûœ× ½ŸNÔ½åysÍßMUªmA]rÁTæhSàÔ§ŠëË5upãªá‰†“+®Ù_5‡ÚÚ‰³¾kÈ×â=_ÈÍ`. ožÕ+¸ßfˆÔïÇÄõ`‚ìÄw.Ô†Dh¥Ñ$©oð’g,*jã»- ÂùŸéR©Æ€ž»;. –¥¸LÑ!hÅ~ƒù îXŽ´˜þP³† %Êâ/ý sThíZ1¤Dƒ’¿2D‡9’%¦ð1¾$¹‰¼£ÏJv7sS’R¶¼”ÔñÕX;Ñ-He½¦IÜRK(âÿsï«[€uknÛ¶mÛ¶m{ŸmÛ:Û¶mÛ¶mÛv×½ûUwª’®ÜÎM¾¼ÿæ¿7k%k<cŽÇ‹K°f®¤Ò Ã}d¢l Ȩ܀°Q“Ž”ØÀ¸srd9 ´è° pŨÜ~r GI /€îQ$’»™×㩾`˜a‘ Gp$—]¿S£a—1T3Ëîx|‹Ðb— \{J€ªD<ã׊reôòûD€ƒÖ-Â|¤~ìì•#qÓ¼x-W̹ýÒz}"ÅJY!3–SÆ4_œGƒþÃyt˜…«Ø¡cYgàM ÐÃÚØÇR¶`È™o\‚ƒTïb5ÿ–…DÄêÃ"bä…ƒ{䄨ôW—tÐïúÜÆÈJeI!Vð82óàÊAÎÍÉ¢{ËgL×%Dke¸Ô?èƒi™zÂP¿@=dzMêÈêÄ $cšgm‹bqeŠtœø=¼%Xr¯ÍÒÞmAÖÏô6ß¼›Yª¸BUÒ$á"¦œ7÷ÔRùôfTðYÕû© U-Ý\œ›ÈX(‹ .j4]+Bü)ªåfM.ÔPàö82R–ÿ²GgÓ«xücL0a͘½Í’’ Ïyžœ-볉! x6¸-ŽÍ¾È‚ :¯lÇëuB±~ aÔœ€}¶"¦+L{è¯ø¬z@ U‘T!|µnz‚+Í·¯4ž ¡)p{Õz–¤¢,k e:¾Ú5–ÚxŸû×|O3×R4™˜ü»¬Cs ëËP¦÷KéÃ:7 )µÅÅ}Òhh¦Níüø¤7’µR×ÑrÆ7òKãn &ö&Ûzt¼ÑIÿ—Ä!_ªžÈ‡¥ËhC«\3<D ‹>CÞ M&vq±{>ŸÇ¨/ר.GQÁG\w Æ–Íð†¼nµÁ5g1ÏB "›´àV0*ŒþwßJ-÷gÐòÉRÊs¯â!R‘ëB–0ëUÄx(nÿelQ_ýf_ÿ÷Óy¸; äy‰‡Éƒ<Èê²ã›Õ4 וÆRû×\^`9­GÆž2®§ætXŠz0΂žØÆ×]¯][¿ÖïßÕµó¥—ÿ©ôÿïNjN¶N™ÿ{ÒËÿd•ÿ7½°üzaýÇ5äe°ßQ{T$¢**l‚-ŠÁÈȬ±#"$S“ËŠÛ³Ò¬¢GÙè Ö–”PòÅF‚ùÉ@`9TLSu*rÔd[œ+‹¬*%–+^y¯ ö½z_ÍxÞÌeTU‹0¼N^OºoÿÇ/zÙ(±êIþóïNüj))ö¯ÚOøNJ èw­$%B-ý®U Ç6ZØ‘#×½ùž«vØ{äöåy;#YæÕ~Øf¦Îu€þ²ÛK¹¸­.ÛøÊqÔætʰÂQ”7#c˜ˆñdþ›»#)·B¸¨””ü@ûG  _%o íó·”²í®/å±tÆ v#ð¼ÆQqC=†  é¹XçàahªûÒ’ jb`½ªqïÖÉù]L*,­Òéž]+ïÜc?<×Ù{(¸ÝA¸¶+¶–i¢ý•S›ªÇœÍmÐ\ ÝCÙÇþ×·F=Ë$õ”W±t`sè[›£5Uq±éàYÐ)°ûØ.KØ®‚‡¤|ùÎCyƈÂq°V¬Ì]e³Û¶ì~Xùƒ¥ŒÜ™‚ú!‰þLIÜÒC ðáÑGÒ‘]­ MàAÏ"Ç:¢¨{ˉ‡ÕJxÃ~Nù×M›m]ª›/”ÅB1È_Öþ>,rN ·¸_ûâ4xϧQùÓ¨ø©!pœóáend“G×Ôå’ rxÇ}¶` -8JrHsG z¬ÆAXz–¦ähoÿî^þ›¬É¸BeÇ@ °%Ä|N~oݵXåCJú=£YÏ÷öúwþÁUÌgtÂPRb%6^ àp_úŸ¢¼@Gh7Bá™#6Á¤­’Ý{[P?NB•ÐêIªuÛ+«t è÷–¦´ÎÙ‡RéÓÙK¯u˜°ùrቀ±´Ü_Š‚xÊA })¿`>ãº/{OÚÌt'1>ÑHWô6h0Ü¢é׿»Å ê“j7_¤V-³ FöiÚ!§:˜™n&/ß`Ì'šÕEÓ2Mä_¤èÆ·ÏžÓŽäúç‰ÖiJÍ bâ7¼x ‰Ÿa$@wÓ´…©â~ Z–ôšR·r ¦?Wèón|‚ñQá¬òV ~ð©ßÎÌ–œì׿ÓÎä0tK/¢’ˆ29¸^îYþD£IÕ«É:«¯Oö]çkŠlÜ%å>L¯š/²U–’í…Bþû ’jÚ¸Ì,J¹'l 6¯Ëõ|Ð`Mî„ôbú#æ p áÅa˜ZeQÀ³dàž‘|"Ã|´•”Qc“é­ØÏ~ðsð@ê›9«ƒ¯-Ê÷lÄî¬òfKòšˆ÷Ks¨ªtÙ/wûÆ÷wgZÛ„.ÑQ:¬>±ÕÃÿ]õÆZ›°ÙÓ„—1µ_7Å©‘rÖÖž!êw©ŸÆï_[×eâmpó¨÷Õ¥’¾„‘ëÏ•ªßÎ,‚ÎîŽC!¼Ï°Go˜êI­f^f‰D ÷ Ü6´VŠ2eÚh¤ 'hh%ÞŽÙ*£6n˜Ã{6ÙlvŸTØdBsúË<¥$òÍ;9%q­qøY‡‘HY…Uø¸;â²Ð‹& Xõöu㱺@·Î]«fZ;¯‘”,ªôé ÒÕ}²ä{€!ÌN&+O:ÞŒ)(÷ TžBnn)~oyÄ¥œ¾Þ- é@¾å‘ö9ÅÑ0ì?Âá¼4”O¿!ÏØP®>½T4y›µ‹v| ü.ÂSGwÚÒEœÜJ!oo'¤ûá~Äòã Á5é¾5ïUšKHTO¢½™Yé$É,ž{G„ƒ(µÞv¡%Á¦øLÙ +¥ø_Û¬„©eÙ ÁØ¢Ç4_>™JÜ ïzç¤<ÖïÆ2ýZíyHX(,ªr[™9Q[`}[9¬kåpÇ5;¦è Õ®OËn²FaÝp:¶•Æ’þ!’kU]fÂé(/Áz!öÏâ7¾*<£¨šþSèµT?NÎ8üž„–Þ´¿Ÿ(ÇhàÔÍ™P*d:˜!#9!WšTj-~-Ÿ§vc ÝÜ©Ä+Œ(Ñÿ2Uåè$)Ú:yâ Š:\ˆ ±a –ëŽLŒ(ó›ìëII@_$/Ò(–‘h/†Ôî&ôÌnÉÄïŽ÷ÕQvñx Èl£ÆÊ86â*Í  ÓîfF%š¹”ß(¾Ì91ƒ`w‚}»Ï*Œ¤Züü‘n(A¾ñ¦üQH>˜tÑ"»¨ˆ-oÔ«úô¡e´6G~L“|”X/‹gZ#d—~+â¤+2§0Öä¬Oñbì§4ÂÌŠÞát€FI‡:¾¥‡#¬óBA{F†‘€®ÌP&²—sXÜãnbè;\ÎööôõwJ󉆰W€·ÿ¬Ø²²KÑ95ò'‚…³çñb¿V£néS|ÆjÝ͹‰SÚ€²ÌOC€ªE0Ý£”?BÞ˜PµÇ<Ë jv“M Ùäô/|~ËOÉ÷ßa³ÓQMå„Â`1lk Ô«åȯ |'i2É L‘ &÷Há`jn’O&‘ ¢òDiU£ÈÊc8,°&Y+(ŒcÁ´+ïkš -ˆôËàìrzžù¤ã}j½¦ô Ef޶[²éÛ;a[ûÈ­ ×Dâò}æànƒWi~·÷šžhþMN_´uJQ—Ab(š)`~GÒyežL ¤ üô³>hqЮ*è~]Ѳ©Hn踓È“®6³¥¯q4º ÷êà\ŽãY§ÿbä¢à“@¯¸{ýøB¸ñQà(!ì†ßµˆîcû9Ê¥æ¸ÕÆ—¼­#@Æ™²esÛÔ¶kü&µ¬’B…¾Þfp¨zAKiW@£ðo3= ÉJ×6ܲ@¿t–Õu‘·¶ÃŒa°–·vÙ»OÕ2éþ¡%Å3 «°ºB[.Q3þVE -‘ š_!¿ ÙQïîè8ïwŽ?j±¬%Ö«¾çê±ø¯d•Å)÷hŽ’ny€×­]?eõ)@¹PéæAÌ´UŸ—¨é~s…õè +jãJ<µØ ¹èÒߊ#3øÞ}o‘ª>Æ~£yçÐlE‡È~tf¤<ÿ¢ד»eE½¼Öì:yíž~GôIÇ ’ëå‚®©èñ¬Þ’|Eç¥ÓBtO¼Çqñ«K®•„Í]¢øBØDè]ÓéT¡.gïÈô!åÑÜÈ;vpE‰Íô>Á¶ÌÒËߥ5µÖ9,ŒûÃ5’@Tb3»¥# Ù4X*<{JŒq™G£¶•. •S`Úú'!…ω†a¥Gѧ9KÙ\DçòÉ›•eõ¨ HB‹Îeµ$#š(«äܺÓóOS:Hýä±½S”İ/eZX‡7ðÏ(j‹ý¨øëJ´eÓïþ¨{ŠÊ Ø5ÜŠ¸¤ SógS7nÒ°Áê°…ë%¢ý"_Œ¸Ð˰Ë_èÑg"³#ÒYÿËb`dýçôÿ`»Óÿ–8gùqþ¯­N,,ÿQ«S²ÆõÿhuúaR…º@Ï•ÉðŠ Ìgë_½eÅõÐDæÔžohs™ZŠªÝÍAG/$3ZK†ùƒÃ]€úØD5^–B);&ûÉvým̯ò™Äo0ËÙ{9ùÍ)·J¥TWëGÊsÊ9Ëy ÷Ô™øaþ%«cn•®¤óUõCî ˉlÉé¡å@¯"íSžÈ÷¶ì«zÿéý†Ñ¾¢-C7Ò”¼ô-¿4á4»ÐÃíõUņ~+û©Ô~Õ}Pž¹a²Án˜ëÅÆ\-þÜ윧 ejF‡’¨eyþ5`sÁ×’…¾™ÃŸÕ€žû·¸ô÷‹ ?¿¶ØqØ„*õÅÔV]»öï‚OˆÒ;~Ž~zúÌHŠœÈŽ§‡˜ÆÆç*ßi¦ÕY´ '„Ï҂ל˜Üðמù}èõϤ˜…¹{«®W‰QRoE®ëQÛì€\£·ÍÎiÓ§æöãñ©©çrÿŸ´^?™’RdÅÁ´´Œ™‘'‹ý­)–] žžÇ}lê¤iÔâhF^.Dê--œÐÓØñ[!LŽ-Ò]e̪ò©aÿé'ªœ*ºRÇÄt̃ûö >ì?ýì¯íãû9d.êóâJóZg ¨y!L¥ Ãûïž½ÌQÿáãÅ«jûÝÃÊÎßí—?ÍÂ÷¯aY Ÿ¥{b¶{yþLÔäzØÉíSlñSçR¬À)AÆøÖc„Þ#á§'O œ™¨ó"‰ó¹w(,H=Vƒ„ŠìÏ”^Í@„µ”sc¶†Ú—âɱš0PæèøN®lï† ÷÷qÃ5Ó¯U»zÅ„œÀÎð¦i¯¬6-ˆØP¦ì˜‰_éd æwbèoh°\ú/6>67Ù!åSîÑœ Zù£Ú¥×Çœg¯å’ïþ9Èá¡„™7ÞcP“¯œ•K5PÔ¥c ˆÝ9üÅÓnÝ0ž8vX–5Å×b0!lè.IôTÂôl±&åù6š¿×#HÖŽ& n?ʆM1Úನ™YRK%x&·§)%E ØH06DCOmTšòއ|Å}9üΞ4kÔ2š<ÇP(¾Ãé[ÑÜ Ž£YÇê@*£[áÖ•je*ÛQúÎfcH·DPê¸Êž¸7Þ…˜#Øï½ëänÝ¿cÍ"nú+3s¾é̬V(8a>6ËÖÏ–ž¹ŒÒø.9­ô÷”NÖ6òeÙ”B7)ù†hРÏèÜúýª0„Ç5ÙÄyÇ.0¦Žç¼1$Ë—ÛÏyMn‚däù!TÒT“° ÷å2_]7b¬öoMƒ¬‡}—L¯”ä7(,MWs¥/é ZúᇊVe Óú5ÏÂC‘†lÖqÜÇÅ^ ’[º©pÉY/ÐÉZTc—!/6°…G܉Pü20ueJ‘ôE#€_!qÈP¦`=Gëõo± “xÅØÁÎX°K =ùCøMôÇ2‘t3•ߤbW Å Ëá›ïl% õP8Ôø¸þˆ—>7,WGö¶Ò˜§½R±šoÀùèbúÔÍjþ’_ò•¼é¥jÝp[œ|+`þA2~Pwp±åjEĦBš;Šís¨ÛÝzøa4Áj¼›Ñw/2ºLÙ5Ÿ´²IH‚ã#T¡I<¥/((¤2zf/|†ëŒw}™ãÁS×DZ3?Ë»ží;A5œŽÁ<üÔÊ€ì{›Ã ‡!~‚}ós³W±p]ñ†RzH%ÿ»É$8ÿpK8á©бËA ¸q(—­‘ÓÏ¡ š®q>ÁLdI’Sëˆ[Â@Xåuðñ­Í¹ (-q—¡²›'—ÇCb’¢íK³œÙqÄ÷=ëëÇZN28`ÚQ¡ºÄù‰¸9!7ð&¢²ò:î `íÔè:¨u)X÷õµÔç÷iG¦ømThA}CøÐ3æÃÅ \¥|Pµc E¦Ð¿óû&·÷ŒQyÍŒFÖ2)MŠÌÑâ4$;ŒÔÖÉ©T«èåk\6Ùö½´y/ß¼_‰­Õ7à:¾!†?QÏ0µê‹†—Z¥»´Ç42|qYabdÓc•6W3aGcÞÓW8=bnÝ ÎOþ]Ç{§€_"…R£{-ç™O ïÄH¹*;Kƒ¡Cú+àú)U9·YUèû’² ,©èö|üµœ)gÿxE+\³)»òqªë7¨ ®aêô²ßwðHŒ¿/OSü?ïý¯99ß©Îûí¥ñѼ„ed×o˜®c²x*mèm溎aq…&ɼ¶¥*üÏmåz=%8\·ìFéíAW㦢Ojöšhžv¹î±\nS¬zÖ‚Øé¹Ìò!l¸Š-šPj…ï&„žV|pÓë¶¾d/ÿž{3–ÙÍ@?•4—({#‰R{SÓlɵ•)ÒãÐFª÷Ÿ×ý«5žþ?_¡Ü7×¥‘ëßß8”ªþ¾)9˜Ùa3©†ÊžÔ•¤lÏî [#ºÙËâ$2»ªãc|ž­Zdˆ¢\_VÓ+O#MÍ<’y¼tžÚ¤þÖfbâ¼#±â‹¥9m<(F…s÷4ØmU?÷³/D¤Ñ•ÄD:DIp±b¾H>ˆZÉpb(- áüH ~˜Í)nïj³Üh‚·7þLUçñLì2Öèr–uÍÂPOPd”ûAÜîùQtX1 šs¹èü 0[/˜XG²×nõ‘l©zgüÛòþÉõ`\ˆM âªLí/ØtG|ÂÁhToÙƒ‰±´êîŽÖCs–m$DãÛsGÀKÚ‡}•Ûf¼,¼|[ŸôBx~|ÑCMó7ôŠM2£õN1<GI¢¦=‘“ù„ã1+{$‘2>Em˦«pÄvÉ£¯~f*¼Ä+#ÇVŽ%\«öM±ÑZ½R,qN‹VÌS)¯â+f“ØŒ0Qr\žý {¬îÍ]˜uH|xQ:'Qk•ÀIAU£u|©:Ö´Ê®LÃÕ÷ÚëFá(sáålÃ3smQ@›½;“ïàÚÅžm$xu½ÝºÁ)N0âÁŠ™|¸B°£‹yQ:užla’~ê,dj_ ¸–õÞ5³T"¨K¯Eæ'có á}Äuˆ¦áÞ!¨š˜ñÚuñ‹¼È#Ëõ} »`œewR Ö{žŸ)ˆT¤å!A«¨B@ .M#3èLýéú:ܱþØhò@˜@ôßð ç™ì,ÿ5eeùoj"üK…+ë¿rÊÿ<Öùpʶ<ö:êí ¥þ„’ˆºÕJд;®÷€Žh>lxU Ô¡…½}Fl¯p˪ªh2 ˆQ86Œƒ½CÚø\Ëx¤ªªmJj‹Ýw\Å ÇVÏkóªñn=!¶hýýT÷iNìî{¶SÍà Î[¬¸]«ùs`bÎrOAkȾÁgˆt 2ÄȦµ´í[ت©´^,øÌNËPby­týgþØÎ@¡7Ý ³ïweØi`¯e/CÕMËý¢<™ÌCH+‚ ßh©xxqî}ÑÀuÇMö•~íé'V«¶PæVƒ`¯¼'¿ ç¡k0í6ïÖ„ø×„aë´É-¢ŒØ¸B7ÝÚjq*OÖ˜h;o6™q­“^à/¯Xm¶¾þV—tIª²øo‚ ÃÑÞŠsQ—å°@Nœû![î(-Çç¸ÖF]²ÜImÒ‘MŽ.¥¸c¦¨'VNˆn½»ã<òlɆÁmê…Ñ1`Z¨9º¡à39³]‡4SΓ?V¾©'<©ŠP”u¼#6%½êþ´3eIû6»>j‹’œ{Ê Zä¹ ÈÒ_9rÁkðbŸ’ ä§+q^¦’½î(Ëq >ˆ‰±¢)‹)4L-Ø| „ï°/ °¯:«­'ñc Íu m"Tgih¸Š¢Æôóôjl0ç|"ñ‰Ò‹-¾T¨êÐ$JrñPS*s®¹ziã{’ðn!ÁÎË›D%+²oôίS`u?Œ¸!¾MQÑ=-X…ºÃ©r¦\A€”zq–ˆ\Ó×M’T< ¤õ¡ë„¥ÁíD²úU $@£<Ò^åèÅ´“Äýv÷ ™œf ZôM†ß¶uP~æ°ÙÚ¾\Õ«fì`èÞüý;¨„I»ÆHô¶Á¶Á¿ÌÑ6r­òöœçZDDªí—Ú-¸ ¬°)ÖX(¿ xȵ„_ ïÜTµÓMÍ òÒÒº[vy¯_=%[Àë욎ØìÂE為‹%RŠí;ºaêœsìÔ¥Z„’·ÌßÔñ£%ḻ{–ö-KÄžŽ,DsW£6bEz‚ ÜIÌÛãÀ›wç‰ÊˆlZS €ãÀ¢øãþ"`ÌoLÁÿ‰Æ9X?s Ðxá5¬ýó‘W²èTVƒ™§6á@“ep{ŸëýëòãžìJÒ¼¿þ•ü,·¥´1Þã¨nä—%wôó‘UD…-‘zo3È»d“UJ±¡ã¢f+¶OW"ø²9âØnƉ®å$l<ùxoŽÀ$wAoRÑ:IïM‚1¤ÇW¹+6äˆo²øž6íŒ­Žˆ§ÁÏÝw¡â9ayo™ÃÝ Ãêqà0–@B+éZ.Uãö9z"TްÆ¡$G¾¨9ÖzìÂgùÞT)ú =pHQ­k µ)YwCIPGPü6töÔ•(°çJ{«eèíïÔ4M%Rž^ù!P¡—lâ¨ÕäJøîrYrüf{4)±[6I6É8Š;V47!HŒ‘m~EöôÊòBôÍ¥ÇÐçÁŸ…YÇ­Û·­ûÃìy³²O—7¯x7Jƒ<ô· %Gë±ÈM`:³¨ s€Ý¿î]pÙAJãïï¤Ú}®_iÅ+Ü¢O)‡ D·k­¿®A¬À~—v]›ý¯~‹rá»–ÀƳF…„L˪£+†Ò#H)DxB9ñDeÅÈdmêi¦nÝ—†(ÒRÕNȹ­ø%‰­Cº¯¦i¯`oZCt3jhøƒTÜ[›ñ·V¨<€M¦g`§åC0ß–Œ˜+Ë ŸfÃr$Õþ[@) Ýl ¿m í˘ÙûQɶT2 OÔ´­”gµçšbŠJAEß©jîÃ9>¶ÿúņŒ “ ÉìªCV¾¢uÓðT!S>¦6ѼMà©_OrКù©ýfp¢@vØe¶»Ž0ê‚'D\;NÔß#§ÊQ7Eª%N&ÐeEÛ÷R5Dáׇ89”"‰?#!íàT¸Dvä7[H‡ãªipÉM6¸«x?p<ºc2A“w4ë }˜s‰ÐÐ9ÂþÜ’Ìñèw»Åj7·:£·TÙ‹`nbmUr@ZÙs‘ÑȰÀôŠâŠ“õPœbW\X'½¢2õ éºïƒ¬÷ÏÈ,¤w"h¦ãÀ „ݪSʼniþÍHnq¥¨÷†ÐT®Qí/ñÉ*õù°U=¨XE y¡qxÅÃÓ?ì·í]¤­ÿŒ­—o?N™™åxýÁÞÝàI¨7c\²ñ®Iè¬À©”ž€#Š0¢ôÿ‹,/Ä¥’¯(–‹—Òã¿C’©UˆY©¬½bx^¿B…Ž Œ[Í ÐWÞºã\ J¬,½l…äã~òˆÍ~{ø¦. ‡ËhN…¾·ÈæÙ›_@¬[;rv°wBB®3…çhÆÿ…TT–TʸóM$àœ›€CsAÀ$U¡š\% f;üÊWHÒy^Ùg?þÇž%g êïˆÁýVQft⯕1C2ûà…î<eftŒß`ök­ú[ãî±#Ð>ÚÞºÍÅììŽ×ó㯽yLUœ_øÎ§îŽïu8RYu¿ð–"ÿ;=¹9 kð”öœ(¸VÑÀi_2“±œCÂ*ò!F¬v˜Âå:4Œ:aq×;Ä[¤ê2§Ö€f @OÕ1ª Â6¤íhã.j¾Ž ì…E•ôÐ< ‰›)ªøé‚Û²ƒÀHLÖB>p´À5ðt<ì¬/PsRÅ´ |Ëçia*ÿäñÞê“GÒî22.l ˆnPFˆJ¨äæ=Z*ç³/If³Ö6ˆ,º¥qPÈÖå ñsk#¾SÓa–Åeð¤fsÐðŸÒÊYsG’»í+â•p5Vùè-²VÌO‹£(A !9 J¦ÑgE´…ƒºaŠ™rõ/ÚÒi8@mÜÛ®œõL0&Ðaë°t̘ƒšÌBw\ÎüKÖ~ShO&¹ýï$å½ œ±aˆ YL˜¤ä‡]ù Üà:PŽ1ø}ëfêÐ)Î`®õé„jÅ;ï4é½–Á!:aÛŒ}§}­‘ {Öª2ž?ŒœÚšÆÇ"–ã±ïìð¹Vú-Ãkæ&f·™~ °1C°Îü#¾E'Óž®…PŸ`›€\EѸ Òqå ãÍ0`]eú^ÊmÛtίâ$á&{¹DjÉõšánýœGDæ²ÓZ¸5%q¤äý‚åéÁC"^"^~¨þUÃÿó8=;Ë?ƒ@¬ÿÍ<†9JÏÂúo<ÖÿÌcÐü‡vWG󆺀¥è\@šBP²©3ïï%ˆÈ€rj‰$^í/cÅó[ÆÄ•®¬ØÐÍŒB(e‹é‡ì§H<|E•JT‰H¨dƒß¾6Æ­†÷Ñz†_sšÑÑŸÅ¥‡Ò\;üt¸¹ýšáìuºÆpÔÂyý £o.ÝPF#çµþÖoȺo†Ïmá í±ðr*ÃÝm;&>pmß«¾]˜JvOóéYÃt=ŒhW¢ÍË¢­úÖò¨gVѬ¹ýjD¨¨âÕ¡¡Ù3C P0s ëÒƒpN³ïTÑIoÙ›(æêJi²0CM÷P\AϽS•¸òU/IÒ¿bDpÖ=Å•:Ð"ºËHÏ9…,ŒE›ƒÛIœ,ë€{ª0;g nßÇL>8³¾¼±×‡8ŒˆÃ±áµI7¼@þ¬õYU±DÜfP`£ç c€tbá³à`댥×Í Ž£¿‡àA ‰íÆW@Nìj!9ª™bk°;mcÖŒ´q²ã £RwwX"U¹­Ƙo°IØñþÑÞ‚bžo“£TŒÔ°º|úñCU–Þp UÛ8À¡ÍœuÉŸ÷»ét^VnïÙ-Uƒcš"DHzÛ@Gª°•X ©ÃêãmYjª™)âYx8„c¡%kÔ>?"9Y2ͽóhµd_3Oèïê+L×KXÅÐ%GÝ ©8˜mRf<ˆ"ä1¢hdžûË#ŠA#™mΨ‚)%Êj[Pm‘²ÓxcÚKxÅfG9‚9æÌY®ž˜Úà n\íRƒ† Œ$ÁÊÞΑHÃç2«ëÂ%>wXøÀÝ7Øu©ÿ™öŸÀë$Ï#öÇŽ±îÙ7%[Ù¯?r÷ȳûÃî7ŠSÚdž®AÓ?qv¼´¸Co£ &¶Å#þU‚þ2u/:žà^mð92÷(9‚±²\tÏ¡ôñ`ÕÆh­¢×XkUƒ|¶|J  )›…êiÀH¥¯VxÖ[¬iéËÍpLUâqšÏ*=ýîk#ïfÀ'w!™ÀìßoÞ„ÑËJS ¸»]BèQõš&nZB9v Ø: `‰½îÐ3¦âœ|Êql€rTÛÂ!†;UÌYuŒ­R ÁYAþj†r2±Î´hïQ²2 ‘›,tœf š¨È7`0ÛÈ*ì³¹ž¿`kÌê£I—²`ærí N3ÂAÂëðP±kæp:Ùu ‹±¤3Øw&¼[1]'ë‚f’Ýb˜;¡&jM`ל(õ'=YQu £Áz(Ž‘‡jìù©³•ŠÕCIúÖP‰·ªâ 5°–L|ÈÊQÃJýµÂèÛtø"žŠbÓlÿ©hv"xQ¡Ö¥×¾£V8{Î ¼UžÓóí`ÿ)+"Mê ¯†¼^‡8šÚÏä’×p‚²ú™yõC’³Ùá·s»aîÂfŸˆ”Ÿ mÖ #DBj8µî|`Ü“ÁÆá]L3Ì4Z6„È1j’ü€c¼´ nC‘²®îÏ%Zr×89¬ð‘2Ñ#_cò)å"–ùž×öD÷‚2òV Wy^þìœjÂ¥ºê;º¹$i²°G¢—påuœU)ô`¾šÀ´²„/ ¢“8 GÝ+r¸OIúÉg¢Į́yâÂo¯ UeûdÑö7Ó9³ îÆÝËlQŠck÷FšÖ’Cð1w»L>Pº — Ù34Þ¢)—ˆ­ëAØ~éè»Ú¹ù]Ñ*h\G±qŠ2™Æ3X!P„N°…"†ºÙòvïP$Ê¢a“&Æ5ªÔ5 B{}îÌøHÈåÁúÃIMcÛ/Aß_·ÏjŸßp8½#µ÷ëpÁRƒ±3[!\çu½©Iž–n=€|N¸Y öµ MPg’HKŸ’|«·r…îÀ=¸œ<úRÆ ‡P‰34Ôa=|s­@÷«:fd€ò5ž'#‰RÂA|övÎ>„·lD®N<†]qL!ú0ÏXöÆRú0=޵´X¬È›ª}öýñà9Qêz3ˆž $³³~B)€juýì,Eô,EÉÆÃ}†Ã€#äÒ¿†æ'Þ¬_ß8Ñt7\þÀ=§Xšž7@)½ÊÙ(ÍÍx@}c`>‰ðƒÛod8‚ä刼#W&zD¯§Ìù¯eGŽqÃ]ÈòîÀo§VÊ" phŠÒ²8#î3]ä k J…5ˆ¢KV0y*Ì Ÿ«’~Gvxœ—¶ß>i%¬öqÙH#%®ÕZù•¹9ÎÍ$à?…‹Ä ðƒÐ/MÖñ[÷Tj©–ÏR­dHtO%Ô%%åòú»;DŽfê|IÈJ0ÓeÇ_DÅF@æ±]…à'ÖæpbõhË×®qÈ•Ú'íû ¿â#ø”JÒÊ)¥åÇ þ&¤dQG¬ž9i½3 )ºPÉ`±¶zÜ)ƒc†Ùâ5R´PãiZvüµË„{ïyE*߈KÒÚ©«ŽÝî:£×¾ ­íѲÕ=÷ÆÇaˆ7<Âd;Å/t¬&A_òE»§ŽmEDÀÞöT—+˜š-ò@qæ™—Ê鑸%TVc§É™9ãzÆBŒd²¸G¨à:Tâ»?²Š±–”‹ùq‹“úp ryAàW—Án|ʶtCV¨AZ KM¶1Œågmî³\»cäN²¸Ì{N ÉÀ ø5Øy‘¥qŠsý£aÇ“ùWÈc G½’1y—ÖÙ`5cXœcyØêŠª’¡ï»ƒÆ©Ìñn£+ºL¬{¨³8ín¥—k}œÔ”Uº™‚ÛQ6?©{Ÿš«|auTÙ®q¢_^ "êv¿gm0"¯ôÌi ŽƒyßãÎ[È£ÂòßÓé³»YžÏŒ,­Ë—Ð]Å„œ‰UÑ`ÛÎÝ] ýÝ9Ø”kù‘+¼Û9œn¯8©Ëoß²`Ó™šÞÖUìð`^ç³vJv¹½sG7OEÖCú$·4ó'å]Õxj·ÂPô¢`yU¼ Ö&ƒàkyÙê)Ô÷¤ùØÛ©ç×÷…©iM§9ß+2×+I¬8¥&;7=—ÝÒ>BÖ©;ôéúcÂK‚¶ÃÜY¸› P‹/måãÌá/äiMHìSaR»ÓTùŽ1éGÁ#øÛ8³|ISø_\Á?\Ãט–ç²+v=m¬[%,ºbÏw™òôß4],'ËÁzu3Ž­›šÒcàp"®” l-Lå,3úë#aC­†Ä\~¡X,Ϩºaž%F«þPWDœ|Äyä›}”»_PþY ôÔr¦Ûý å7ƒIÊ…rLŒ(näá²NJ7¡9ª{"ùM2÷×¢¥óý&+ëæíÞõï”Î<‹u:rzÐ?óåñÀµÔTÓMAL&ú «ù=(|õI‰Ýà·úÅO8}ü7T÷ÏãÿtfØÿ›QÝ¿82lLÿJuÿ÷Ñúÿ/ª[Ö¼–×>EýE"DU]„ˆÔà#éÑa`ÁÞD¿ºLû\•ŽRÄò篱yÅþ‡-N¥* mƒ+d蚃C,Äp™îˆRtùEh“êwË7°2¿³jÉ1üç)ß«#þ¡ˆ×'“jÿ‹GŽ“ïiÖî{v©k¦pݡߕӕڡÊaÒ^žõÆè­áÜêš“ =DEáKjo[6[éÞ?À®ò6åx¹:ÀžqþüSÓx6ï£éØS¼ŒÙ„sÑôš­uSFhVbtóiñúÉÓ$sŽ¿Kˆº{€­ŽEôPÊ•)ïmp¸ë„RÄ`}.¸‹t6„LM(%úÜçΆ·E®•ª¶';?vdAÿÛËŽúçìPˆ+¶i{>©¡ú ¨žûq=˜£ç{çžX÷ƒýÖ…s;ä erÕ}ªW7°p5F½æfú$î¸fâ„­>³Qß“Õ`ðNàé>͉NÞmT¾Ëä²ÏÙi 5š\ z=ý)ÿ$ƒEž½oÛË™ýíâ=)Ý£!V>¸<0ç@Üq‚ŠÃш<C¶¾ D. ºúª!ÔâsõcoÓÒpéõ&óö³sæiGnœŠ»û.ºq•УOø¡]ÀœÂ?‡zOþ>lº Tº`cðÝ€àú¢žN¬˪ Š¢s¯[bçÖ„ˆqUGu=¼iÒÙV÷^>C= 2ÿ}k~ªC5QÓ}±˜3ˆ„гú³Iz©öQãç^‹¤¦ÚL¥¢ÛÚ'êytfò"â-S1¾ÍS˜<`V,àŒÑÁ…7š‡Ñþ;ÆG”\ØdÔ±_?þçß-«Ò‚rÌ`¢<š Nî w ÅhÿíåÒâx¼NÒbßxTðÆg>ð7Q4 ß%ºŒ)8ƒø—f§¶MËÆÍ“æ õŽi&†ã{è»RPËÐ?Ž,üJ‰ì ì”x—4.‘24åuðH¥R¢£ä³Î¼Ù•> ³¨wÔª”û@þQøì€µ\iêòšÙü¦ ŽzÓ«Ï~Z -è3¶F•ë²Ù€¾™²B^ÑÖAGŽº«wŠ¥¡ìíšóÂSó}…G}²e\{éŠ#攉r- ¿y«¶~ˆ'úçnMA“ýLݳȸ&r–÷H=@Ý+ÛƒV¡¨J†¿µÆñSÙ¯ôæ uftøÕ 4Ê4R÷ˆý×Μ.C˾+ÕŠ.µû‹S\Š­7dÂúÍtâ?p$@}XœÂS_('OoÕôVs8ka›ÙAHÖè6¶ê2sèMµö:ri¤GNNÉ\»j˜I4¨ÃB4Œ9|ûÍHf‘8êÁˤh´û…Å4?³ ’ (þb#nféòè–Ze%E)x™¦”jû÷9’ñ%Ýš-Däl~øZãEÌ4otm™}6iJ…èrâGϪ®ƒ‘Õ[x;¸îÓ€¥1œ¼1¸£–xj|·‹m0›4Ò´¤{\ß¡è7ˆ%åÉÐç^¿‚ Ë~~#M Ò¯5“,j3¶ž ûa¾‚ÁE" âââÆ”Œ¨InÓP&¶í.:à3þÙ·vyÐp#`2ˆ0HJ0œĵ¦ÕÅÏ Ø Â¹kß­!Ï0\Òé9÷ñ7ÚŽ#'] ”«fÌŒùS…eúyÌÛ€kõÇ1·‡µ» [–÷ A”§ÿýI0”™—å~™øƒøöÇßK$FÀ-JñNa}~xÒÐýtRB‡±ëh…H„dœ Ñœ‡yí+©§Û½{zô 64ÜèàÞ;eí ½çžÊàI·ºÈB“nåqÔùˆ¼Ïu ¬¨Yt“oapt¨EƒÂZ?N†]˜+GhXŒ€:òØO{41•Xn¹tÝ?ОN\œžØ ËÏ¥5ÒqŠdìi–8•sEØòU Õϸì9mRj[¡”’ÏlÙïí´ÿÊG ’-/2+âçí Ù›åì{’žûMÚçC´åy.&*Ä·Lm&Uˆ;|ƒõø3j®O[ ¸4ëH;àþB—“ëlzšþ±¿ÃÉ Mt`cAŸÌ³ïMÜ‹€5H%¡+·Ï@$ ’çsçøu/6†ß*Çh3@Æ‘)i„·Þ_|߯`3R‘ßدO(²žyæï«‚̰SG냗1ðƒnÄÇôL¾¢¥ ãú5äŠ$(/' æ‚@òL)wæA°_ªc¹)¼â›êûá¼AQàfUsF;2Ñß3Õ(ÂÆÛ»'ö­ícæ0â4 °Æç$o††ÇÕÒОvÿ;_Uÿ2%t üeÔr˰Áæ†v „–Ð’0OXjf$QÉk/£&ßÇm¹; {nÎ’/Ç«{—FÈë{Ûv7³Í^2In.µrЗèÆßwº—hì½Q%LÕF<îÞjkâVØ’ÆÌ©Ò_—y[˜8ƒ%óaÏ9 ZD†ØTX÷#cq§ïtEÂh’/q­4 j¸¨?ÙÄÊ÷ÞÔ6>á$•'Êÿg'pa›äosCòR)2¦i&îÖOqK±äF~g~±àˆƒÛ¦ÌÅýŠ8ä‚ë×gŠöÙzù|¦ÜMßð¾½WÓï¦@´Ôan˜…õÓý’ ¾Ãئ|iáAp=Ûˆm;•_µu œöÄxá(äèe¶°MÅ“[Ñþ=ç 'ñxÃäÞ_qkÊ!†!B :UƈÒÉ‹÷Â#‡KñÌç·Ï.椙â{ÚnÏ)¸X¯ç%yÖÉqøP†¦6ë"•W£õ¹.Uül¹´pnÕÃU·Ÿ˜Ô{HuìZ¶d¯I’–Å6æÿ q0þsú0@ö¿ƒ)lLÿ‚)ÿ&8ÆöÇšµ¶•±WQoM´J̸¹–„õhüãçjŠ–'ö…ÔX^–‚x„Ä&Læ‰ÊÇiQ ¦Ä! h 1€Yö í|(˜%ë¹%Ésʹ=¬ñzž³ÇñçÂrœnnÜH7-™ðl:_s?³¹O·¬kÅQºÞÄÙ=Ê™”ÓE>¦ÞÈ=$ÏÂUØÜ $U±b;î3ý‰@L1{"t*ø FƒýKÙ—j@aï?.°ÜöÜ'óý[ï“ѱˆjUØrÍ*à féß‚ÃÕ~A}¯àBDŸ¼îƒR[ÌÑ7"72õ%õ¦£‹µX’§Å•ƒ€™¼{=l]ÉR°²:¹”Ù»“¸×10¤¹JØíÌRêê¿~“;R±±qqpqÜ7z´Òv'^á‡ÂRŸ­nuWÎ&_KÎoâ×üy‘ÊûŸVØÕís=ÖÜŠXwù‘•¡ë.¤Ì Ä zñmƒÌÝE }ÏÁÕz½}sôÒ*E˜¹ÛkLz3æ ¬ Y*ÑN"ß}ë¬N7@øâOÐ:U^ Ý¿#ÄÜ/Ó÷­|!ýì[Ú‚èD­ Y93«µ—o‹ÀšÝÛ g¹ÃÚBn°oüU¼^ÊEغî?„YóýÑÇ8vÖ Ý½·´¬M¶ó´D.Y @t¿ùNZZ€æÄ¿Ù™]´œ‡š»@gƒkÆAmÑ à2‡pf®eè"ŸÅ0‘¨•4m³)&àp##]ÞøZÍXÒzÊ‘› wÙyÑœ{åRòvZ­|agÃÁ¢J´È”à23ºÅÊœ¸¶á Éà uí‰& ‚ìMKa(¨/°ºLý¡³AKµt@Õ‡mIëÔ„¬eóØNëNÌ1&\‚—dE–D.ƒŸÃvÿfæö+’pÈ-”â„3sÁålPìíÕ8`qàØq0*ZîýЈÿB;!Þù ¢¡ 0“ ™côݹ¼«¸ÞìÈèÖlƒç2ƒ(!m#'Í C@¦N\{“á·ñÞ´V€Š lË‘UÍ3,9ìÿÙ3…²’žÙÝ;(¡NedßQ­à­3b?Më‚‹À:…"®ŸwÛ+¥fëÝ$”á„7¨ ñD°£8¸^Ú3bÇœ”ckBRÊòh»:‰óWy9ækNÕÑ(`_éÿúyOÃ’¼I45x~ 4Îób'«3¡Ì¡¡ˆï^0ÂÂHÿƒ!{ÃÉV$ƒ‡žm³>ì–€ðjEoZ°ÁÏš¢©tËëÜOÖÆ¹Ç6û$ôÄø€®/—å u ´‚‰½ámÃUÀ¯‘0…°¾¸?îΛQ‹Æ:r½µÆseËÀ¦%›7Ò„*†-24ýEÃÓw9ÑØºq 9Y÷€N73è‚"©Tx §.#´ee3¿ÄU³ãÕª)N5¦R%,fl´ÊÅQù¬—)ÊÍøµXÝñ¬ûNшô’D’®Ñ ˜¤ÒWsØŽ{w`U]6Qa›Û‰×p®V„s6™»²-&iä4M1Äë2£;[Ía­Û̬󮊒[üÞ·W;xÏñêí³l W?Çyi·-¥À˜Ö{°ÛâÒCh²¸¸Ó6w’ÚY‡T²èüñpx6nÁvÈ’Z:øv~–§MYüÇ©¹b¸úѨ~q$~÷¶ìÃ˺½¦W˜ŠQ°'!v`%óQâyy‹,´…©ÀÃlѤÜd­} eòé¬Ôe­¦núÍðœW…8Oˆê-J} ²<˜” …Ø Ù¬'„r—@²‰HÝ÷"÷x/É{N w¯–‚ëªK×´TP³{|ÒÆ DS9à›ä† s0Näœ­Y¬Ì¢L”¨¨Hó!$PŒ˜wóI…ÛtíŒ6|ïh2¿Úíœ({hî*rÿ±¾‡L¢ià‚crýÉ<å ëtÞc†8—B;S¢‹nan-‰g°›ßTüp±ü"lÀ …N™G‡à¬ •þMre„åh0™Ã}¶ªC#[’?OÔÎt€-n6ôm…´ê( Îu­ÅãH¤k`3êÞÆöí›LÔãC& ¶B1S…Œ=ߨlQÛ“» „PDc]O’±r.ý[-•Edšå±½ˆ…o¦P¨úR#vÿe©ÝŠTW„ãˆ]@‚µzÄfsÊ>>˜»I¿î»²¶×õ(:¥5«·ÜópÂ.yw߸/&ó;eR3•,>º“t¡_vŒ0hÙѾyS…ˆATJ ò…—òà 0W`ÅgöÂÂÙ…ÐRôý,d(E7´öŒ¾pjî”ßkCõ²üž|;àårÔ;É=HI3‚‰äk²TÑbžz2KD:œõ tÅMq¾ Èß8Ww-ÞP8NøÃk((©#ù¯ú€­Šw”2[-IýEµnÀ3![‰Is"ËŽA¦¿Â2.Ê*mVEk@…z}i“Õ×N^eẩ Slm¯­âûlJçû™!C|ýõ!|(‰{¯×HÂÆÁ¶)•sìÙuÓ{ü‡þêböæä^[eAÈﶨšsW§2³¤A„ÊìƒösÎ÷8PâÀî8@r<ÕN÷hÃò'þ?O†[îÕÎ=Óy]Åð…5][à%ý•…‡«8Kh¡ž–—®*`n«ó–Ž‘¹Âç÷dyN¼»üu!ÕkÎO¤™å‹ì”d¯húàØ^šä,: (6®‹jLtûs¦ZW&ø©?óäô ÏKcƒRG$x :Wk“I¹Ü …CÕ+“$ †Nm¿¼bÚÀ÷F å,ñãµ Æh™† ¢_õ‰ DÖµÊrªsÅÞ€¯ '”fbø,¦Qä£.yFÖùÜ,I˜Qßx’€O(÷@æÕK»£Í% âñOý0qí0>‡°±3ɬ´êmûãÔ —ئÚk[9ñ.ÎXáWíã±³üî°}d™ñ³oE› Tú1œØÛα¹¼÷ÿ|ô\ÿWo­Â<÷Œ R?sΠØ1^>ÀŒ»t~鮽ª×ë×…hBV¨ö¶‰ˆ…©zcî¥ k{á5h¹]$ùQvi£Éöú“Ö´C®¾ßHJ]Ý ß2—1½E¨Õ g‹3×!¿BWOþ³Ù#[íš*'Ì–k‹+3Kù5_ž[CÙ Éå’Ú;Û¹ñNþç¾ö‡‚ã†o?}öwoÝíî&Ýiå¢ÔÁäÓ Â5I¥ >]®¡1šõë-$ܾ‡Iù\} ´v·‚O‘WcNHo¸Â]p ±Æ.u¤¡ö…]´þýnù¾RN° †ŸÞ»ö!Äþø½´](—'îE*|›h—è‚Ä õPqßÝ»`¸'o—اí30'nØh¶—¦dL/ŠPß? Ôý×OY.•™tOXYð [æ½µú¾Ù$ˆ †% æ|ZÉR»—𼨠¤ß±p¶ÛäÕøVší$òÄú7n–'ïýHz…ѪL)©íjMr³õú0ØÇ敉¿éVY´ü=ÆH©P{™Ñ—Ìý'ÞaV ó ­kWRÇÝþ v]„égböì ®°D»¯›2î!Ò² ÈÎ<,ÎJÐvÐIº+l€¹~ÞêjÞ¡?19ðÚ ^6ÉÖ ìþ¡i±ÿ|ä©ÕóÙ©e«h†ÎßÛlz®[Ýž[A»¢,(£Nóv­fªuBŽU8¯¤[ÙIn—ñÄÙ&–ä;#húÜVÞãù›Üõ´FÃ7šf`Á¯¤²›Â/®i ƒ ò¶%§:Qk‹ ù+­ó‚¢9¿…ø£8)/öËsrŒö1ÿçW¢§dPQR)!\%°—ãAŸ}Fý»+ýçß÷ÿŠ}2³3ü? Âÿ¦íÕlÿÿdÿ7íÕìÿQ{u±æ¶ò:ª_yœD¥šfð™t8sD!ÂÕóa,ã8XSÞ\BÂAµ[ŸNlvZ¸w›šºEq2d0 yZ’©6„Ç¡a3’¾T³àæôG€Õ&ùÎ&ß¼mñ üç©^ìiÌ´xó„pÖ}¶×ì{öÿXß’çÁm âÿrûÚvßn.1?Ö¿‡ŽÞï˜ ‚[G”[INí¸8WÀìÅç ¥oÂŒW<ýº:–áa<Ãw‘ãÉΘ6û{6æÝD«Žª¤¯aHƒK=…ò¡AøzvQ|”ímd¥ÿæ­{JØâµ»{káÜÄá;-]=ï3ß›Ѩ¹~ á^`ÛOç†\}œÒTõÚ˜ž”ãÅÒËBgÃ$U ¶DW.jåìœè“ÓÖøBü¶vf“„{= '^+'n@Âç< ·^É5 †­Q:ŠåèÉ„+?iáæh1—ëÉtÖ[#Î ¢ïäY…A/»5…¥?nF¦ndx—÷Zü®{ôIýà~ ØsÈ(¥ðg?µ|nÂ…àþÖ³tfãŒ0:žùÊRÞn\‹°¶{ŒÐÆIÓ•ñÓ÷Q]e•Ôõކ?‰ ÊþŽÃ$¥ù°z¹¬b¿%¯,]øa1E7²š(ì_“ƒ“Ai›Iùí,¸½þH½ÓšËãçQ˜»ÐI³7ì¼b¤²Øä£v)†ïÍÅÔ%”îÁ _FºH ÀÿŠôþ\ö‡f®R-7ÉQd#ÜÕíú–o§£“Ú½®p>(^uH¯ôô]-üËw‚œÉȯs鎃µÏ5rˆˆU²áÍ{ùs¶ÃêÉÝÆ‚†—¯Žèç׿ĵàwÐõô«°Ž¢¡"ip¡Â¹^*: ÉèN—Y¼s‰‹×@ßóJÙι-I¦F€§CÊØÐÈÕ†ÂËÁ@&Nd‡%-I»aà3cjÄRwÎbx·©ó÷}l Gê/0>ÊSÀL/Ø©>8PÝ£.Î'SÔðʵ#RÝè{. ¿êeY:”8'!?^æa¹väãR7¸÷W 9™sp»àºvÑ•.¾ å]†Ãk4ž<ô;ô‚|Ð b€³Ùkœxø†)züòH "è EÁì7b×h"ðjEÓ"Ç–Än²± ‡ —_ëÄëâžJ·l-M}rhé¯ôûþ< ¿gkaû‡V¡Ù˜¦È¤ž£`JF–«`Žî–°š¸8MäÐÐì±"à©hKn ¦¯3Sð{Ê®@·f,¤Ø÷Eé@ÄÅË¡D*RvÝØ:-T®€3¹Y´vÚ=‚"4ÜÈõѤ¹ƒ0¦¬[`$·îŠ1¯©ºE9#AQù‹hŠÃºõYó‘Ñz…lä=80Ú=½…W`Då¦ëwJ¼ÞKæóžtAô1¬ `Öá$À¦4ì¬wÄ#I:QPº7ȆÿÔÐÂ[K=A èÝwÃJÿö‡²y‰Ç=Î DXằßÎp ædðÔ´ÈyTµ¶9:¹3*Ëf7Pá$iY. u7WN ¸8KwŠ gv;ÇjVKØcˆ¦²Ï¶¨á}^ÛÖ±Ô1æýhô7‰¾mØ¥]J²Ç  mŠ¥‚€0¬àÍíi%Ë_ïZl$YK·}¤÷=è24¾¾…CÖpù²P»i€ò|‡ Òp ùv@¦Ä^ü>ˆSmB%Rm † *(…°²à ^妡GÈ!äMAïQ EVw[UѸëÒ{"èÒÍËGé åÛëÓxPû«ømR(Wç\ZcïÐ|ƒºÚg“a8óà Rg‡“‰%6ïNCêÚaY[5éeÈþ,PdÃåÛšpg³¿°ýçÔå`<ìj2ÑÍNq¨¹¥YB§}o†‰¬‹,¥Éw·cmÑZºIÕ%î בּ=²zˆ)·ã,*ô:èö`„vˆ„­4ÁÞf§Ò§`gÕá¼»%?BÇÏo¸P¸OêŒk‘ƒÓ9Æì:ÅRm+µïùý"ËTªésö-óÓ‹Ã sG™JZ¢w×ï‰"Ñi"fHÉ¿|"+ÞÖáÞQÈé¨Ë¦*\ñ#–‡jÍÉþ)ë‚*(ØÑûÝÜD/ü”]AYdPoà>f~Öí¾ªseËWâACìŠfýGÌ]¿kŠ•ßüý­ÓÛØv× V¤ qŒ ¹TÍ©Q|l/pƒ×¨3Û÷*¶h^Ý ýRC^c}£ÞYí½á˜ýƒ18,üõ8óëøZPVP(Ä6E\;/2æìRõÖ´©ÙŸwÅ=Ý6’Ћò€ Y<È “mbóº X ¹\_4B”¤=\7M²¹ÆWˆ:ÕyUÛüñNè¬î|Ü[ätˆHëSu–k» ~†JY$½¸ý¹”ƒÒŽ,R´ð#ùÀÓª WÒ²§êøë6v Z¤ =¥F犻ˆ1=@à¿£6Çu¥É»„fª€\+UŸÚf“¯zúÂõ*ª3ÞõÚ4/+Ä[uG|͈E{¼ ÍŠÊ<6Ùô]¡ü)Fµ˜­BP5ë…ù‰ÄäW*JÚ5­ظᥦ•Q¼ŽóVí`£OƒƒiQî3@š Uo⯀@ipÆ^éægQŒ¬Íz?!d¢cTX¥µyh?ƒ®Ý ‰¿¤Fíw†çÛ\3““]ZÏœ{ya”[B_i,qʲŽ<•àÖƒ'.+yù¤°­×Å(Ó÷7³÷ƒuJ$(u|5$A×Јs­âK4ºë ‚#SµòI¾>Oò»Ð§Zà-…tïEÇ:H¶>èE^5ô›¡òÒä’yIþÏú2Щtý²¦ñß®­ WŠ¢JCY¿³%ÈCsºš{¿TÞÕ¥£îÁvV<¥}ŠX´4€‘{¡¯ÀÌ= ÍTófiõÁq,kn‹û¸+Þ})#èó¡B—½]ïæBîÒ%¢ˆ ôÒÇ“ì3L‘/ŽJ¸Iå!ÛŒ%•Þ}˜Õ'lÑ9©™Ö qÀdtæ,?JÂpÄâï‹Zx1!0Äíú_òC:™êòVrÄ™Â÷Ì"ú™(vÜ3îØŒ,uÖÖ”A.l‹j‡üÑ)]¢|hEœIEUS´17èO.§ÕƒŸ?,>4úÝb=–Ò6:¬ÿŠÁn–øA<8¨ôMë­Ô ‰¶ôÂ(VÁ'jÑÌJŸèS7Øü%Æ´L ñޒߣ¤¯Úk$w @@ÜãÚ™Øn–ƒàÃ,Üb¸Ê…YBeˆŸ8 ·‡#ª4÷ ØØú±4÷ÅÆ ”+$„€Kx¶whÊ/ÂÐ!ŸFÕà‡þÒ¼r%³Ë±Ìå‹;á½RÝ¡‘Ã*ZÃ:®4iðúÓµBSYä³b·qE-[û~C&”>$ª·<8±…ÄÀp?’Oèl­QayHª Ö Ìјt#ÄhÝô½ ýI¯öQ² ß#6Ãн_Ìÿ´²Ÿ²Y™1®½¿šÁÝb« ýPk»:Ûh—wõ\,»  äH`³EXuU™N· ».\A{Chz¨¼ïx™Ê ÷ˆ w§2ŒÍ¢ÑŒ™… ¿#ȨU?¤èÁý`„|€ë1—6ÌÍÓäÂà]ÓÈõ½ì$¦z2¨iX{\ ¥KÜA9%ažxž®§aEœ`Ùà’Žš8®W^µSS”ïHvÆØÿøÎá~z_ ?óÓñÓñ X´ÒŽÿ¯DÄþ¿Â‘Ì ÿ¼ÛÉþ°û‡„Øÿ¥ ›ýß4a³ÿGMØÅš¿òÚ«¨©TÓJ~„eFJÒŒ%bdÍÑß9ß;NyÄúhD(¬QÚ³åV_ Êô ;4Öf 22 #k)-– ’‰%–‘)EˆÉ &—j–½OøÜå—TÕ~}3¼·û6 jÊ(ø¯9n7œ¹œ¹N×uÜÑp/±¿0¹¤ØH£å¼Õ¾ùlyެ/8-œ±|êK.”°?EÑ® SHÞ–Ý6\Zo—Kr„/¸&µùûb½3—د ÏŒ:}'oåL˜“5¬ˆ’cc¤Œ4xñ´{n¥Ÿºßö‹3ßÏlTäð¦aB ó'”æ˜2BÅÅKîêqîÃ"‰ß”ê¸oÃ\†ëÁõiÃ"‘Ë×6FÅéiƒ¿ Fg}E¾FÖcZp¢Â"®%®¥æþ=>#¿¬#üeû‚ÈIÜ{r7ÐÊ ó‚ÑÐÒk=\Î,£À+\ A[ƒ$SÊ7jÉ {œÊDÂù ƒ¡’¤Ñ#Cã¥ÇCw£@‹m2¶ˆÔ²pÄè?HŒ®!míEòn!RÄÊ C,¨Ñ' 6WŠ—´/äA} ¶ïÑfSŒ-ÜKZ»8½º1ÿûÇëôúD®ÑH-ç̇ÈÂãå\Ýå´f:X6€[¢0ñÚ^f°˜]è¸.÷˜$eB‹8¤åOPНl̃ý%†µj5W›ŸÓ®zÂUËúØ‹µ¶ŸñŸ˜Æç}eƒÉ°p…¦à@Ó¦gÄæeü¦+Ë=ÖÃc4í¾½×%­SÎç™iÚµWDëLwý6{LᣪÀ¿¹ÆÐãB=ûœÊö2ÙõÜÚW…'á[œMô:„|#ó4Üþ;6–ºeÛ‡Gc³ÒHJÍ«{CpÌÓ#©Ú£#@=$ W®±ošÇG¾ÉÊ>7¶Ù†¯ËŽWI~Ü™Ë=ˆË-‹Šœ¹±"nPtfn_à[rø¤ì¹Ž´ *7#¡j!n埃å¾^a{³á$+¸bL×ñïc3SµN€Gà$˜C=?–Y˱¾_]²‡{á›ÏÃP¸ÉÔ‰Aë²2åŒñ™ä55¡ËˆkagÔ×`õmWï–´J뎎žƨ@I»„ÕFŸMXןݓ+e®O¨Ô×Mœˆk¨4WTY”ŠÚ8D>ëɼ÷×û^–J¥)§ ÁÙþêbÂOáhXõ¯Ò:ª=†y[IFªnfÆŸ*õ9ýmijó1Ïß—Ž!¡¢×ë"±WlŒÀÓÕ·´°{ÑõoV^ÐÝi‹½ØÁ sûá?)Qy”6"éÄj Ü&þ@`tøÊ·uÁŸ¤ÞåcŒ&™&«-Ú.[ª2Šq‰î;Þ×Y*c„ÒbàÃ+ßÕ2 ‘8öôÎ$Ô©|žì.´C`¦ß_SU´r\žÄ͵P‘¹Sð Èœzø“Ž¥Èƒ´§üd1e„ œ¢ÐÉ¢@œÈQš§’_G1'Oz s^߬¾p7…/Ý ŠØ>m2³á•ª&¤C­¼v±š`6²ž7pN~Ÿêy&) Ä(uï(eÈgE~zŒ~˜Ê9µUšD¸ÄÿWé Y‚ÒÇS*¢2é >#NI/TnÙÐލ¸ïqÅYDjÁ 2QªeŒZñ(Ù±ì#Î1’$¼3|;ikœ«!.[J¸áÎ輆`¹¬srŸSbZWLz€€LBVŒ{ŠwgjOÅŸuÐÞŽÉ•ùüJ¼QW+¥€Cwž}b¡tŽ­?¨Ä5Ñâ*‹”PÄœv€D“,Ãb €ÄM ªºîp>°vxEƒ=Ì}+H¤f5ß8¤Ð8âèDKdK@œƒíÅasUW³€è€DEtêç¬Æ¶â4^Ü öš1 ƒUÀ]ÃesåÒk"—’H¾žlçh/¿g¼Úø‰Í::îo)%ƶ”-UÖ  V_>¹ñ}:T É뙯…NÜi È^c9©œM7{ì4àܤ¨Ôl¦fJB$Ù+?mô_p"_‘G«2 memµ7^šCì¶×®HC-z€Âçbä=åkĸ7lŒ.Ñ´+CÑ—/Ãyg÷´UñåHüwOì*.¸9!g‡œ;ÂE9ݘnó¦@;æ,žÏ³l¦¿1#D»y¢Ä ˜#ºê¬Pȱd—…'^Ô#Ô£xA~¹ŠÛe¬<Æ+lF”%ùŽñÂhl—†z–nðµ+Ni°zìP¶ªòÝò>v¶”ójàüÕ[i¤Æ³Þ%¬/z™F ¸w£zÚ£…T/å\¦š²£…®ÍÞ½ûíMJú×¾Ù·=ˆ¨µ$ZÜ2Lë=U ºáy]-ŧ“ó2 AÆçÏWÄõ&~ߌ"ÈšÈWb}¬3¢T¿g¬°Ô„`Äüúâ/Ћê  º o¨ö·ÙØ€öÏñ´€â5œÚäm~¸/ôLR€ÐVHY +Ìß'nƒÑìaÏJn¹:v*Ó°É× |Ýó{y^Š“Õ÷I0ë>€ï”›ódU׉ }MD»9 ß5ÄMÒ5@?:ǹx¢‡9‹ˆ2µÏº¨ðè¼àY¥ÞQ™ÍÐ%®xñ<•´»ÉÒŽ±Ü·kŸƒ(ôDËé,ðÌ?ÆTçê ½€;΃vâœ<øpžC½ìiö·O4¼‰àâ¨Ã–•6¿:Üž øÏ•nývÂvÁÒ@rµ¥ºs·M6lùúøÈ7íŸwLš“¢{ªÿ‚büÀo”Q=”}^ÀKúˤ÷·¥ïWšj¸}r$Ÿ›> ó`ó:Ý^}“WÛu "~ÞN?ÞÆ±;Ër]¸—&k'ç]Ú³C7ðAˆX $è¡Â N³Ћ©HjÏSeØ¢ðÒµn¬´ÄXâvFGj#x©Öy)çÈ>c ¦Èì@Å䢗rà½W1»ù'l‡9‰bí}ö¸n X›¥ÇÈ&""#\T$ çZ¹y‹IÓ¶Ìæ~WÐ"^ý¼r¦XJ®ì”­EuZÚ«_"3lÓ¯ÖQ¾ „vá ߨª¦\ëÀZ Y„¸»Yª“g,×{¾Ù^í¸œGW Be-vBõ?Ûk#°ëW¸½êøˆ WJ\P3£®UzŽÁì\‡•Z‹~> OëstTì—5“Üê·•-Tqì¥àPµøk‚%Àç»ØLÝ®VÝ>dGˆ—w—ýƒquRæ]ã@.(‚J+à/ô>”u£¤m ¶g0J‰%™+F:ú­Ç­v¶:ºPïsT®‘ŒýQ݈w3®LÊ19»ÿ¢*¼v¹Cn56l‚è¾ÀõƒN 'ÿN†dê©Fv{?9 ÿ!?]C–‰ÒÁ—‰­s Uc59Î#JeĬä:*+5ª=²4•™º9ÛÛšcT]†ê´ %˜<”3«a7âW˜Ë)k—à©8ÆÇDŒ,)€u·«µ)µ®mÀÚ{£ SÃJ”ơ֗èÍ+ïþ]êð#°Ž|~æ¯Ö'Ü~%u¯M@•eß]Ìû.¦suãðuˆ=;(á]xÒw<‚(Mô hŽÛ \6f4éfˆh\À=Šm±ñØú›Ã ‚Ù„ñN÷G)ôŒ– »àá§g[sá}ðÀáÚãDÄbìÔnRè“#×i“’nèC TBÒ(Èì †ão€E#¾Tãë]uïŒj4´¥`Ç ¡ú5¢ÇóE­Mé5þi“M†™¬i¦ËƒÐt@Ù¿f©$ƒ›×S ;´Å¬ÒîOsuÊɘìÞíÉ’#º C¥²µ2ûy |eŽžK?°¥ÉkÊUŸû’#üR·‰hö›j÷u1•iîgûývÒÞš´kT˜`x¦ö …Ê2T\‡þ“kž-˜]!]ažAo•ŠJZ=yaÿ 0ã±·Ý¢YIàbæs÷¼>Ï,Jú§»À³å’{œ¬%C{ú’µ†MÕºaDïí8—YÎý¼> ¿ŒÌ¸ÐœŽ£ùÕ=uHI}ø[KÓÞ=¼2•#®™®Ûý·žLCGÖ±R¿jŽhK®jC~Æ{÷3–×îŸ[#JâßðàÿÊx23³üó¾+ÃO‡Œý_JØ9ÿ• 9˜þ£Œª¦®Œö)fŽg€ÊJ#–i²'#cöçÛ-Ž`”4[#Js´òj¿3ïÛÚZ1à¦ÃªZ"“°Ð$¤x¢¿ mb «­Ò’Ue¸Ø*èÆ®©Û¼¬òªê†kï«Ï,ü)7›uu$ÄÚ©÷îëßícOîäù‰Î›ü'.¿~nõ¬ãŸ¹_TþÙçÐKn/Nvt¹•ËZ®;øÜ>Ð/ß7bïžkIsf·¬GNm=œ–æ í,<¹ºÖ5­ùæ0ýò[o-]ZÏï¬0èI[¿~;ÜÀ¨Ó-=t_‡.ªëQÒc%¾œ¸Ñì{}ý^_ÙotÜ{ù}¢Ö0tN- X/4亿rsGÖ“Þ£Þ›~úx)+f«hÈÄïîÖùøl›ÉÄ Zd¤”w¶ l-Ñ÷w&R;¹ª{qÓå!B|¸ÙŸ]s¿¥Ø]hz2cÛÎs;[Þù~÷ŽÁn^<ĵè¢éƒÇêä§Ì«P>ë†kM.çf)ˆÔËXÖ±ÍÙîó†üp)<èÖÜTk ÚQÝAñ­É3f)zÅÈFa×m°)¡a׸â1}`£6€f÷eùƒ×Ïö]›a@Ý‹ý‡à±ëÀÊ@ú]åú.Áž·Þ†×_ºt:˜‚Z2ºy¶ƒW@šS‹×0<%_áoOUQÐèÞ9ëzÌžy èBŸ' ¬/ÀæÙW}«)3¥J ¶ Xõí¤ê‹ø~PJêtÔÿª†Ú}2â ¶|7Ò:ÿê ¨›©»ýfödÊvÙÊ‹# Å):œmþ‡þ¶cyñÝxm)ºÃ?%,B¨ä¤œ%£\Õ¤¹üšM?}¼zEžZ´`Ô"Zwk\Õ1Íöøv©›Á…a‡ZMÈ Ä\Å,.¢â(€nåç‘pê …^-Íì%·œ%àÄ€hç`©hŸ§4€9Ñ%ý”^EÂB-³7Uÿ"„W( TD+A ¦ê·%×ĺòDöm„XLÈNh<#Š ÐFD\µz;p’¢Î¡]iQüV»E£¥KÞ**NJ»f˜<C\@I£ø’„OüÄ1ŽÏGíæøæ¢ÙQ=NêÛ«Ì…unŒØªfبTc¶^áiê|oW|ê–#Ø?oÌ…\ÕvD±ÝÀΦ*p‚Ä„ ñšßƒÖm?zuý*бëeÜ›Kêø¥Z }h„J2}g ‚{o†½Qn€Éˆ°R{È1¼Ãñ¯)ÐU( Óã€,3=@¨ uù¸¡‡‡'ü,r»"#™z€¯HŸ¯Å•¢Ì3JsNňʠIRÏ<^²N‰]Œxi ÀµbßOvB8­ˆü-ì“ÎÓŸ;>U ±“5ç|3¯D’·£ÐyJX&Ý),w³dž  pÌSÛøG/î|©ÕþÔê9=&Ð,èÝ8gWQ>ëÌR6F’£|¶ds€5QN… B¨Ô~!½˜±øxæF©,!Ô±æò|)Zjv†üVÓ'ÿÏ&ëˆ<»1¥ÚMß©›y‡¸KÄw¸@oVkñè@ÆÆÁBÃ/#Ðä…‹|³È«ô‚|̪%­Ïçm¸Dy,ËÉ .¢u1÷eš]XÙY_²zc~ åŠ1†“º§x˜BƘE­#Öw`Çu4LH¸õ¹ “¨ŠY¹³bñ§g\Ùˆ¯3póÛ—gG´¸¾Ý@Q å°Xp†f쾎·™©êÓ]ÎzªŸDç ´‚ô%9”п‰H^0Wæò^á2{ðoœü²„?25²„¿»bråCÚO/Ÿõ³©=²ý;øbg)!²VO²ï|{zØUv1=C'Oõ¤Å8ÜNá÷K_׳:ùž|n´ŸK…žg}²ÇQ³öP8éé¹|8º6Ø/¯Ã `øQEHj“‡€7÷w‹_W€M:;[wÞ–ãU㯉;¦ßhäizÜŽg$ÆêRº"£ç\™0oÝ@{J¦»ðjߦ7¦ åîqŒ˜['+±«¢n{BñyõrTǧ9A>¾:UöEnÙ+ÎB¶AÉc¡¾‘@º*™ÀN`„†'ñãì”ùDÿةϖ1gM•p`i©ëuAsŽf¹ŸßËyvZYÿ@.©¾S©)ÚŽùI/Ëh‚ƒ¡¥–Gµúãçå^TÉÒºSð?ð½àe³˜'[«íZ¿¡T¹Î1Xï¼UN-¸©¤Q–©ž!¹b âr-vú;˜éß~ŠÌ0,.AÕzIØš’'ä®Å)=õ `bÂp<œ$§;ãòì’³ªç_ˆ4W; ªUL«Òn=µ5®ûþµva‹êÑÿÒo/×ÈL®ñ}WvDP¿‡ËHY5¢jøÇ÷Æ5«= …çr%Á½n‚ÀY µ©X33T–Á©‚ËåM T2G‘}Á¬vY¸ùzx‚ _q4—kôþTzΞçڦţ MÌ5ÖåbFÖ!Ùù*¹q#YJÄ3’÷ŽþZ7Æ_w¯g% Ú|I8¯j Œöî›àP’þ–Iß Ã8NÊca!«'Ü·¤=6±µ8·~÷À«r$FÏöùeœ¸¾žžk~Þ~÷ŒƒYY(Î¥\š›€ƒ’åÔ‡¯ywµ_ D‰üÞ›D.‘Cõw Nwî9Íž8' ù³Õ+ßÚQ •àÈáñ+§€»îÏÙá¼Æçzç?ô&î̬œ=«Ñ$ïvuŒLsMAm›Põ9—²Õ’éq2I OÔG•¶îŸ‘j¼éj‚ˆìVxM¶oûf7÷m:cÙZõ-¯¸| XÁèpâ¬4‘‡ ä‡,‘ Zu}=Ü¢K‹Õh7[bÕ˜Ø&ˆò|‚Øi/K3ª U0M^_ÛádT!ë>¹Ux¾‘å.%õï‚§ÂÚ š‚Õ6®ùÛæ¸‹a¸7|‚Q©=§`e7K-”¥?Év|èO¡=¼3$Õ ÈX£R³yÈt°AobÇ×Güìý¯T4èWôDe‚²µéàf—»RµüCÍ¡'©ÿTóܯg»Ü‘¡¸O˜×X2Þ!‰¤¦ë$qtD3¦w¥ÃŽO¾{Ã-ÛŽÍ® åÄ%Ÿ‡WÀÑP\š£ñ Ûäd6€Z-X6Ëä(”­½ ,Ü_$±nõÓéŬ°Xh@«)(Gê^Qw[¯‡\¯_Ò°B ùcò#-ß1|í¥0ôÇê#ëà¡ÖÁ׸Jœ 0IìØ{ë Ÿëº÷T2ñâ„Ð.vËÎåHöCÇ 2Ìtb¹Ö±&û$uRý ` bÎë9…­¹M·ŸÙ¿àûžHa¤u2C†žŠ{ïЭÞ:gÔ÷W:¡Q8 ¡±l“ !ÚJº:íÕ>+± ñUvíX ):©JDÁÊ+c7}óÚt·vñï38:N]›ÇH Þ„ƒ)èì—n²}/Ö+‡ç…-?‘oÕúãíÊÏ}GðŒ‘ô.•xXç¿ bZ²BŠi×ÔÆŽ¸ÔâÍpÈ(.6—ŠÈ§o8Ô4~žÍdc |µÒán›ðFÒ8­íiömÄRx;3µÞhþǹÀÍÞQB÷^ sRBVÀ#k|=ã¼tbà1ΰ774õ]=Zì±ýãÐeŠšæ_Y•ãÕ¦0³pþÓ»äøoZÄÿ?ÉôÿͪÿfŸ’ã?Ú§,ÖüµS^E½…W.K&‹¬°ÉLJ£w"pýêyë6‡H¡ÕŒÚ©ft(Áâç–ã•°™ê€*o@’Ä‚ ûC0NTMø5wÍÞ$K- Úœ·bÙkûÛ§fy=Rò݆ï:Ó½JÏ7 §¯’?tïõºãÄw:yšå †Bþ;d~¡bÝÃJOy¥yMì"Å…c{}žˆB™aYMû|ˆoHl U‚§¡ô”t»ß¾Ð'dC˜M9¥’ ;ߪJ.]Ør;ÝßÅ“ÌáczΘÓ|Ÿmzþ¥zH§»¹aº_<»þ¢¤â ë¼ô\*”NÄõeH)E`!iFa¦í€scw}î'J…6Sâe”°ðHüÆùu(iyí§èYò\ü³²šV^<°/% šå'& 㞟ŸÐ¾2¬Â•˜]þi}žc¯ï•7ì2Ò0„ ßZ0ÊïqlÛ&¡¤ÒhyÓñ'QN¤iƒre:¶EJ«;úÂø™KJ‹Øßùv%‡,HM¬Ý'ÂPJDB_]fTIÆÁ·›¿ÉØXXš¡FGÅÁeÙ”X4#G–B~|@dsWCFâÒ~fdP+Ò­°€ú2’'ñŸü© ÉÕYQ¥Õ̸ïéŽ^ P ¥R÷ƒPLöU¬z“œÕkR"_Œ˜&ŠÔÄSç3ÊY$¶ ÷´˜Uý7‡þÓ÷M([=X"puÿ-³›Æ;®k l>z0^±Íi4µš{²š‘¨r­i˜ù‡Å=×þtÕÖüÆûé*ûý =7›6ëý{È Ÿ>ÿod7G}b&‰°L:±Ü|ßÊ—]E"@©ŸˆÜ3Ãô¤Ìãƒ;ŸæÝ ØYÎ]=º°þKâ$Ê+JäAg´}+Õ•jY§bÚ¤5‰Ø7…tHèÑ2㡤þfqŸÞ¯¯XŒn‰  5å-ô'r„xƒáe¢}Žžðô˜É‡!Ib¶ßh¨\Bó6©ãÝÝ©vÃÁóm*RŸ…wIÆm˜FÏÄÕÕ8Š#…Ùr„j]7Ô—ÚpRÍÐé4i‡LÐY`öYF¹ ^vÇŒW#Ëù¨6Äí›f£ÂÕ©t«™¡+€RZО»’û?äî1#[GÊò–\“µ»]Ûf'8”ÜlDð­´•<ø5ŠÏ+V÷{I£jèéóHïâxp,–f{X¯[Ìú#ñ)KÜcÁiš®Ã1¨CZIð|X5V7ÛHçæüŠvaÃÐùüq=G®™&+F`˜ª ]þ©áU~¹gÛ‰+ ãšñ›ÇßÇhˆ@ѧ!â ƒbF4ì ¼À=@Aƒ*n»qŸW+…&å&Á `í¸©9Ï¿´s‡­ë²yƒû›p}‘þN=({ ûÎÓ¢Ið]œ¤B\DqF^ðúN;Å-⪾}õB!tL¸„ ~"±  ÈuÌ®1×¼Ã+£ .‰”å>i2¸FtÝáÊ“A¬ÔmB„ñª‘¯cé†×]å8¥¦Uå³2Sñ33ƒh“eÐh¤Õn þ.ÙìЃ$kõ"lÖè»Ïã¦ÑÂ\Z 3/>Œ|>¶:Páõ .,³KªÖ-( ¢Rùã×l/LýYÃ×å"ºzÉçxI$oN×Wv.-૯P¹²Ü›þP©‰æCÐ”Åæ«¡±¸SÎk·ï8qG¸Æošô¢[(‘«uKØ5ªšq¼èÕçthZFpJ_'—P#Ûl]žNìFK¯ 舯o›~KgZí Ò+ÀA:z”é<äu…ö¢T]n™¬ïðôÅÇa€'È‹Dž|'ä š1‰Mãa4g_2Ÿ)Åe¦ ò¶›–YÈY»fƒ{&í1¥ïÙî`ðA¬-˜ÑïR'VÆGMëab@¼øtüó±˜<«árÑtãj9ݬ%“¿:N¨NŸ”nÍ`\zO‹Ü¤ÉuÂe^7>*!Ù—WEjD3èù‡á—1Mßíeè-çÝÍ­týB/35Wî¶¥±špCo½Zl e+lײLs…cd$ÖáF­šÏxÄæ»èí6쀞Ë÷“lp‰Hê—¼qÚà¼W… ª¸—©sWõÃÇT­õõúy±ãšýØÌÅ‹¿?ëû(Ö:­g "S ûÉÜÊdp´Ÿ†Jöxà;ç­p3\\›D®Ñz°ä¯à+†æ3!¤"Üà ÖØrŸãiýð¬‰ààn ïÖøåHw{Ïò€:"„q»-”ù½ð@s/d5¤w  –÷ì|þ*K†û¦RÎÐúàs}sLÖ)òjý›1”‘Fæ ­A¤¿9CŸp^g|œÇ^¿2ÎßÒ¾1—æâí#ðŽqð¯oçî†<3æšgë¥âàÙrPÙs(X~†ÀÐxž„'ü @µZT‰`ÚZã¤r~ݘ©]tXðcyó^xÀW ºUµAhÀöUmÓ9<Xxˆ‰Fe#»*„ÿ‚6v9Øo»˜2ô¦ àÌJLEnío;}åmå·H›´.u³t˜^ršèà`Ý™uÀ®,¼‡«ö†Sß& Wv§uÁ€ã«+}eÖ}Xü02õù¢Ó{¼÷LE/‘Ü`ÄdØ PŠß넲ݔ 4¶Eµ#3hÒ )&›,síþàóO‹¨ ^zç .ÎŽ¤K«Úgaçm‘äþðÒµº;U¤ ÇÄ-ñŒŒ"´LñMÅ`Õd Q âï*ÕvˆAxcVp"ãbÞ¹³Ft(L¢bÂ=ß }6Y/$y´<Ù‚GLF‰ÄkŠº˜Îrº£¹`ÕT—†+…Ö9³>ã­qÂ9ÖÜ?À©Ñíúµ»¢½<@W2‡ÁÞ:|Þ÷÷hЀkìN.>¶º†«g•û¼pZ×w D¾x†·®Z®è5fÏyzä7 …Í_X”:ýeëw‹u®êe®Œíd~¼¬8w_±ÕK3͇ye›êÁÎûõšÞ0T×.·8B"¨²}NÆSçöVm¤=Xs§GTÈ;½, {&¿Ñfí‚SEí&¼]· Eiöº@ÜÞ]ªWϺÚ>2µ[ðÏë“nY`Um‰Y•Ø4»ÍÛQE{þvñ‹Z—ïZÅJp[ÞϲJèºÒtºAÝ ™Yögƹ¿u=f伎¹ìhó=q« .C1´"ë sÁp§[Ó«–<ÙQÏŽè’Ðt=˜P3}Áò×pˆÌ×Ê ´äT$º‰Oc÷2ô¸U;5}œé³Ë€ê&F"WK<îÐäµÝ5sÐK„`ú›}(¾Iŧ/'ÿÌL´3'ËÝZAUžŒ=É´²"êZ¬)éÙâê(dÂ"2Iô†2Ü-—t£®J[çGk$:4w95ó{Ô¼ò lǧöoÐì¿í˜ÙÿkÊù0Vúÿ ÍþeÑŽóßÄK9ÿ£xi³Ö¶Ê*ꬴb=•*JõÃÜš™æU¶á©±¹™&B ¤C´ÊЀÙ8’K÷á󜿶-BeR 0kk¡õ­k;c‘8‰a<„š–—b(Ô¨Ñ+/øþa,JŸ)a9^'3î7W7ÂLŸŒn3¼ø½ÿ£êf½ŒÂAñ!¶çd†† ÆÉ÷´ëhÆw<ôû:kˆôvF) kÞTñÄY6¨uÜiÿ×Û‹7»9’{¦tZe+J§3+7󪽇þ]nðîóæNŠ¢‘9¦uˆø ¯>}ó—í½œ#›ù(aÿõЪCÝýT†Œ'¨¼ñx¡o΄J{üetr”Ì«¡±»X‡Jcå!ä ß»¿Ë|gF 8¤Š5#¸rE£îöÁ’ØÚ4}›ù›ö8@ä²?‘¶šQ1Ð5Ä ±Aê€Du?Á¬-}“øbë&qk˜|·R9W½Hà&ž´ë£),*¢s÷owÐ.íÍÁs|áN'¬ð¾ý5»aÒ)ÈÿÅÞ›ÀSÕ¶íÃD¦ É,JƒÄM¡Œ‘Y("óPD(S¦2„’h’FJf!2DDE$C2†D%2fÊô­µYËÞlê¹ßçyßçÿýZ÷ïÖ^ûXûÎë¼Îë8Îkíµ§ó#ÅßôŸöCðÎæ'š|£Øž!ù}.šûh®Žô5²‘Б·¿ØOdO±` ½î$UÐì>û&§)¸'’„ŽÖ/sçûÃòÉ»PÈ_£!»›fPмÿ”EÌ‘q¯g ¥ÇN ØI6 (zám¾e“~Å7é÷\/=‘{<9QÔ­O™¿oO.§fêûûû^ùÛ'qǵ˜±•‰Ü‘óRÑœ¢£«£¾¦õ3'ëÀ¡7mÕïŸ>lôeh}ŤZð,T†ÜŽo Ûê|ìî§"j“ý+¥[›¯ístoÝXÞcÆwâ¼ó{ª|¬ßw¹1 éuç(Lžg¨«´'m·ïŠé'¿¿^•J‚Adí£Çå÷+-ÆLM6¹ûŒ—{fJnºÌäY³5™éja¥´¼‹–sÖö+jîˆ\î:³¬÷›¾É‹ó4Ù¥ KÓnpªm°¤‰×€‰Vý†(ã]½ÓÅç4’^'D?½Æh¤LÂË‘÷…„|€VíGŸPqˆŒ±rÉ#šbdÇL}Tæ~½!æI=lçåÊø¬È¬m졨±oï¹ý•H{L/v§“>7Ì>vãP€ÝKµäwÅ·&Snpß0wä‘~»?œVÍô`uzú4T­XàU\øœwæ‰h2 )jÕ§Ù×Ä„Ðk…Ü%ªÞ° ˜>Î]+xUŠV\~ƒCÛ3ºCöõ’½ïíÞµ—¼n<\#˜J4ÚWûžm9«bâƒ4rƒÃkóm“ä={Òþ1ËXˆæ«¶§=fŽ/ŸÑ±ºÇÄäuúÉeoÖ …äWª©M¿ $q›?`¼­ýå‰Ú~Ý>Lïùk‡{2•i¯\ ŽxT¸=õSÆî.6Š›<1{ø§ÜÄFòwt’4Þ»ÎQñ“_wó=–(o'ñú˜[4$¤ŸõßP¦c™x¯mÞíøuÞQïõ„:%Ãñ²Ð“¯ƒŽV”ôn>ʺÚ"wª8®²ðRT¼å/£dÒõqW/´$Ã²Š“>÷zÕZû‹­‚7ÝãýÈ7 +š+Õ#Óïs¢Ø×Ö8ë×VÛWño¢÷ì{úŠ^ý6'íÕëñ3á{ßÏ؆Ëî”?vooa9w*µ%Ǩ¬ßÐY’€v®5¼£Í¤Ð-uAóp—qöúû¯ûåz4Ö½9Óœô1âdqïîâ]¹ "<×ÏórŠS ÿòmT⻂è¦Uá_Úîœ!«nhÇhïûÆû#>Ïe-;õ^—ñ®'Ju%©qܵ5T"Ÿ~2èy£ü ibOÓ ]´Ë ‘íJRc-â`oUÄ•p/¦}¾Á÷vg =xöi¯Hߥé}‰õooÞ¹ªJv Zºåƒ.…þ«O¦Žz9P·Û­ž~ûɺäãyi3wM®hþÌùTc¬‰yxïTuÙóͺä/“žxOb¨øõò>íL<¿u¿¦ƒ)«{Os·9I]šzä  ý†8es’²†þ}ǰwuêQžžëã½ÜcÖŠE la§Ýp½—añVÑý»j÷™YJ‰ZõŠ^M›ØF}ÑÏ/£pÜN-CþÛ`O `ݵ‡GæMéî·»íï¤þâAù8¢T÷>—¶–Û&ê—v±ÿ±f“Ù!©·i¼êLñ›ô|Ú;Ôv̵Ñ*"Nâ{ö+)†Í³U'œ?ç]¼(H±ƒûéõN_‘bZª­Ø_÷¼2£n¨sD´ôˆ;K›Z‘î)—Ÿ&17|Pu¡?JüûùýÙ‘mEú>²bçNôÿ¢w¥ ÚáÏ׺5qò×c÷9Ïa­«]›¬ƒBnÓ•¹ËΜž}jyçr$­GêJs•^®bþQ]¹“ŽÃÝZvÏOT9^8í1ô@2^Àyœ¤À:êƒ yÊëb§èËÎ]xÄt¢÷Ô‡ÒÌòÎ:ò’üj ŒaV^±eÕì/õd¼6¹‘Ð'UÑšh¦¢ÉL­záó®±Ó”tT-å3þMãB쉯ê¶mÖ |)^£ÑŸû",¾=`<ëàã¯ßFš¹å¥Bü.ƒ¥ÆT¶ ¡µbãé¯ÄÞ&Ñ<9Weep¸>ÊõnÌ…CFlÛnºÑ¬y+b²†ÉY#x ïóòQŒx ó3†ÃëbÝ ßw‹ì\÷žy„S&žƒŠåúç MQC§ï”«ìÓbL »Ú{öÓ8C½rý­‘ Û{7ËØcŸûù¾«»^XÓ ©ô—b76ž1®í v½í‹ÝþB‡ÐûWÜelÒ¹C<÷t¹ÍN©UÚBCy(m¤âÙÖ÷TŽ–£ÖÏÚ•²7¤ÚëyQÚ¶Ûqûp[9mT²À¦^zx@ãé‹Çó—»cÍ>hÑ_ñn$W±–óëë·d ¼ÀÀtòr_ÎùîMT/¶ØL Ó ¢ø q“ö¹^ÌŤMY_ƒmÒÃÏ¿Œ§Ü}eú^icf!ç)TÕÀöm_U¼EÔ¿U¦lŒNF§\r¾Rôúd²ºBpa‘C¸¥÷¾@zõ°ÿ9ªúqÊz[£~ Nåýþ§^=è"qAÞªv?¶ûaëéšqd{­^®'ßÃäv·£ƒ‡Ÿçh¥Òô–0;:¼”«Äe°Œ»_mvÚ7"Ç9DŠlû*»s"J¯$šú™–S5×OÆ;Ÿ“„êXµNŸ+Z(Õ1rí\`ÑÈÛo[Œ¤;½®¾ŒôÈÚϲ#:G}6a`cˆŸÐeš2šôƒ»}_çx÷µÛüèÀ“ ŸHúÛ?ÙÜ·‰ß-}Ý0üpß&ô«ÂQšë–¥ü†îÚÖ|­ëò{bBÞ+îíøCñǧFË_¡AŸ=×P§™ˆŒï:«唋 ¸h]u–ʬVù{ÜšS:k· ßé“͵ˆ«d®TÒùDê>ŒÎBøbÁ× Õ—aýår¢;ù­¤{ü7Mß켜[¶GV½*X¿œ;ŽV°¿#$“Œ'Bî¤ÓAz]Û¸¯AׯBu¾5 :b>¿Xb4л‹¼”ú0];¿iIYŸÑüjšßþùìîm¦?]϶t;7„ÿH=µ7Y¦Úëúá_Z¹hÑ_|9µ—r‚/c;Ë;¶ê—x‡åÄR]Þ~:ïDôÚG»¾¦"ßÑI›rÓò’|B\!5ÜØÕÕQpÉð‘øñò™£&›ž9Ú³ñ\¢½¨°§$u¦ÌJyz´öcI³d¡#‘æ:÷÷ó²‡:^2úrÇ‹Sã¸hfT©sÓÇìõ¬çj6y«g•êÇà lÔ`Ø,‹E [™¹‹¡¹oÒ=U|S£=übR:œ‘ûÍUŠ*Z‹˜ô3Û¥©ƘÏ]ŽxìÕÔ*=F_·xOõŒTB·ƒX÷™È§>U—™p;Hî9K98|~ÂXšyÇVY²(³]áκ/EÆØ·Ûr1<¥ßo¿Oºd°ð$µd;mó ߌÚÒæRöC\oœ;£c[ÂÄžU•TŒÍpeg-I¡´ÐÏÑýáÈÙÉlHаsm±ÔypEÕ¼ÙÏŒVã]ìdzZö¾ð…gW¨*©L4u3 §l=ƒnõH~kú”ë$Ö°¹dŸ}6}N+—cæm¦\q©,Ó“˯Ïmô;*{9€´G‘Rùk•Æ“g×øBß¾Aej‡yô%´ÅëkãŠ{ÒË >…SVFrXól5Ô¤ ï9²#Úo*JÑRQ­¶íZ¨9ïG%§Ë·5»¸‡f»¬0ïØÆN›µßÚéãÄ,“†Ò£}½”“ë·#Î5‡ =?zârñ~6ÄV…J¬8ù¥¾x$÷ȓӥk %‰EÛíšaަ»RP:ðàÀYªáµü4DnÈ~Êsn£WÅûÍúa”[„¨Š,^­*neD|cñ¯î'ÿ¸ñ˜KKu±èÒZÿ£J#[ü×¾Ø{2]v}¥æ‘#Ø.Æjq#áý4bõû†uuÃoŸd4zÓqøep±{rÉ Ï1/•3w¼g²§§ 4/,¢>ž9zo-_e³•¸M€XìƒÓ¶VŠH‹û;ªÜƒÉ»†P[w§‹}Ó^§@±[#̶À¢€a&”íò¹{Õý¼_Zü6‡$æoxw^Wšò¼p‘$CB[ò¾?ö+½É½f–ý.Û$Ÿß Jò¼\Ī-0íkË.{E§¡<¡÷thŒòÇ7:‰f—[ÝÆßY3³u½ìuõ>”ñÌzŠ)è­tÉ•ª."Ö›óS“.ú9q^pî-¶ÜÈ·?Äâþ„ç›3wö—³ìÛ#F·)½³gÐ÷EK-º«`õ$÷ ]íeŠ«U‡§Ž]Óa©*ÖôrÇï m7ïiD!÷´=Ufä¿Ù·—r]ßѲ~{›Õ´ž=2´à#O±Íîm?ކšX¹mnªztiØ”/X–«uíõ22a}_™É~IJ•0}±‹Ø{1½ù¢ëOªv…ò(7w~ÐzÜNý@©6¡ûá齊 4lÖº?iKQHªcöyÛQFV½®æro¬JÆñw¼“ÖL[R|e»ŽÉq¢•o&¸øÀÉ;°º ¸¶HØvøÀ2ï¨ò«ö5e;YÖ远ÃxÛÜÿF)óxð9™÷¦ä±’‘[ä5#3­ƒa¿*}¿Î•¸†Ý¤ýV™}É»‡¼Ì^ï{/v·ÛDó{ûÄ+& ;ÂøHiºŠ9{7×Û0GÖíU2Ó1Ôrk;þÄüeG×Nîu±R÷‚nïL¡.ŠïÙüB;þJ+¯‡Ó€™™sqë3mÚN)£¡];ƒ×#‚{‘W•T<´Ær|„óÍ•ðõ¯Çò»Ë_?Xqv?WØË÷%ù£[È|´ê5Æ‚JZGRÔboIÖ<¥o:þ^­à©fµ¾¯÷Ë:Ö)þãŽi¿îŠI£ªÊZ¯×Œ!—*¤˜ "½1q,é'ù«’#I2Ò›¬q8}Öõ^B‰y¯þý=dÖ™}ª$6÷¾Áí+2Áf ØëØrfï:ú«u¯Bø§.L$4ı=={&]Àº:ªZ’5Goª±´¨ÿ²Èó6Û§çýLqUªVÉÜ‘*mØ|,õXô±§Üé²ÎBfÇîl7¼2Ãåimb z“·—™÷Ú¡àbŇW'8§Ï;'|G¸ò>¬>ž¯ÇEý&FÞ7ŸÉš–ž¾Ï8Íø›É­ûœ”hë:¾«=Ó¨)z–›n¶ˆÐ¯’Î3åg®HX‘hñßâyŒ4–Lû¶ò7c‹Ý.¹õ?fåÄ>4P±ÿñyJýf&“m3vOb| ™øñØA*£«q9 º%.A/¾Še‹ÇmÚtáeNñÊý×G_ä}L œàÛáÙ›H’þ^uïK“çCBÞºØIdeý°¼s÷ÝAëú#œïU,xg>|9ïzÍÉÏãV#ÿö6 –o7v•R©2H7=r3Ý}];mÃæÑÉ£;o}Mxbò&´P,L©…‡™±gÿáB«+¤ùGÖLl_kä¬6œ*f†ïútÁëÈÈ,Ö„Çã=# ·Ý³¿æö} B ÜC+[‘µ<“‡.Ô>¯|ä“âç±5LÄÓuIZÃFÑû™–{ŸZžM½r†–QZm3Ûþ‚wwÞG^Ú­Ò¿i• UWmŒ!C×»Þ;•ï†Îpº+\EYø§ Žó$äUåršOGf68üì‰Êª âÛsÄ•|s†–nÖûÝ¥AqÎ\1úˆ/H:Î’’ÈèŒÌ1LËËÖ9iuÐ…‰57Á(Q³Pi¢ðÜvö±ýfžÊÀ œ¬(ÇdÃÁ—gö%g2µîº8}5ñ¬ÜÉrsc}ߊƒBbî7Ñßen1ýº9ºràȉéU>Ÿûà-=é;L)Ö{æC®EòþxÊþk¯Å·ynvž}×cÁß`d"ósoì]ÁK-jï×oà#ïsÛÈà=¶åªF£§&rÙl×ȸڑÄ/r7<„^œh}ú³;NˆQölܸ&¿šµ{xÆ›·Ön]؉’×ìío9rÕ«%õêp{ˆÆäåo‡j<øy]«j»'¾1HO×|SbÈéóU@mÎ:ñ&ZfÓCýç{œ[SeB²Œ»ËÞZ´Ë;ÕfRÛ¦ ï3éå ܡл–IL4˜ûúå{£)ÙBÍ6ÃϤ£Zlu³VÝvØúà½Dê ÁVTοjf\>ûªýÜ«½LÎ ¦ù/q"Q‹ïbþ+Eà¼ä#¢DD ØŸˆÀ½®L¯Y^óúYôîÏ_›½ÅßrÝç +WkkÖ×JŽˆKb¯°ÁTyÉ#;Î2ÉÖEJGÈF_˶ýõúAûTBûd£s³Ï}ºõÍQMMõmMõâõ &Ò=1’ã®GŸ{Z'ÅÆ²<Úùõjô§=×ã8¦”çÀ„GÅR̘òîIܤjå‘êe×o74sQÒábž¼ù¶ž¹}ëx¯þîΰ1&çë~< -3–›ÎqÊ+x/5’ùðø*2¥Fay¶— ²T^jß¾‘aþh#ª{±Í(Ï`²¡$-ŸçŒiƒ¢* ëåÂ2^³f“:œö²{e\7SIï­»'a¸ÇÂ^c„o¶ëì"©ñ)šáéÛµUgHN3ôvDØÐ~ŸTÍìçš,ßJ¡¨eŒÙì6^©ä˜åwçþýǃ|»/×07ß‚1‹Ö|Šy´ÿÚÈí‡a鉚B±ü*¯¡[Îy<¥fp8í)rJ']ÞÉU±„=_6^®9§äQ) ÙÚ™ë¼ÌÉø„‹ÙÖºšWï~èöÀÑqýþ#ÃÊŽþ zÑí(ùú­,•“ÏÍʺB>zÒè•ÝäDÿ&Çä¬ÍÙÛ¶G…ñ·”1Vû9ñ8‰ 7â²Ð¯n›ð!Õá­Ùæ`tV’•uŸÊ-^¯`£½ºjñ/f^kêr´ ÅXÇ<·Pz—îTèøXSj ii‹ž‹ø^Wß°qm’¾¤ëO™%…äë*ÑëÞVÝ`!$§bCâ`øÅ볓µ‘è:ôMD®ÍšJJ¾ýÅFÔ>?kç“æ«±U.纣˜¸vüÊù8õzŸSçuž×Ïü¬yîÓ\®|þõ×B©‘37ÞÙs`dÊõÛ¹ºs¯Õ­z^œëár®9Óyа=Uü°S¶€&Þ\Ž#EÚaí-êT_#ãØvÛµv¥<Ï7{õ ö0ÔþhÖ¾(A±Þ“²S9þr•ÊØU½³ƒ{H’šå?~t²:墾ñíw|÷ƒ77¤iê0ÎúÕ…::¦ñÅz§¡Òú5Î_Õ'éÇ´žá>ñå¦*Ëöý³t2ÃW5òj_\ÐS7³%¸è ý-CUáÞдÛÖ×Ó;m|~-§ÝaöµB'´ÝèS95#]Ë$½ø!ëݪ5YÈk˜¬[…ñÂ×ÛŠ‘ÚÑÔ\Pt”Ëy¯pÏ6íÙäÁt]Þ“#l9ížM»ùüjnÕFDQú^·T½¤-ؽÅ5ÂÂFï=i‡ O¤:£O¤ÓÖeë¯#Ôk®?öŒ?u¨Ã”%÷Hijt™KøðÕOo(J;Wç&égT|vx¸5éÛ 1ySÉä±»½¯L˜y·Ñ¬¹ð`çÙ'×ÒžsÝQÿ0m®šÉ—´FÐäaêT{Ç«2TEAÝÞBÇÓZm~²ú ¤‡­ºý’3=ú߆êTìã~×ÖM›öœÜô5}ÕÉf(Ê”„cº?ÜÍíèìäS;#ÃbNPjë’ IœjRg¦O±8¦Í~­ëf–¡îºì–ÃǞϞ<&ºQÞ0ú‡ Z0Y@GãR}WoÙ±áõìGw¼RB¥ãÏAÍÿÔ>¿•ú½ÏZxJg½§E¥tKTddÁ­'VÇ韵‘l(Ü}ázÒÕ«ðɆ|“£N’ü…§’£eý¯ÙæÊ*ÛI2úéžÙ—è¬5ê)®òy!àò·Sr¶»÷Ûs•¸±´ Ç—$½çû0ªu{hçzáø7Ýëúн˜ñxÛ7ŽI39?¿õ¶‰~w¨d}lâî æ¼=W·È䵸l¼•ÏÊ+€!ÙeÖ–V`ºß‹2ªð©ýý\*‚îÆ£t:Oý>s‡¼e×Éu‘Ì/Ö O¥Nå3»}âíÆÎtÉö÷Ö #qtuÓ¯Ú70m·k"ý•b½=ê¬Ë9Cq™u-k_Iú³j+>½•9ÙÊÜí|ú ‡–êR…¤­ŽºRi‘uE94’ÁoeøCÚÐ÷2=ÛbwHÕ:_Yk¡DV$šá4à¶÷»ô!IÉŒc1œî\y'­¶ú´¥ö¡GÜø8$7¥¨ ©—Qo§S¾L©òú«P¾¬[YJC‰_…Ì ’á:mVsý+]vJïFœ‘¿ÓZþVÝ®|x=ÇáBŸm7….x™dnØ¢r YÍ\ñŸ±fJ ÷ŽÛ…ÐÊÛ„=}P¡~r¨4Oç‚›Rg—Föˆ“‹ôS³†E™Ä⮽Ì}“Ž×3¯|­ëkè* g½½9ytv¨Ú¸ËÄín«•Ã.Þïc7ÝpÈÙºbZé¢-ëßÖh_«æ¢ŸãÛ'D»w`î{ybßÜ…‡ê¯”seõ¿3ê>nûR„DìË]ãi„¸Pf# wtÓe­oÃçgßPÈ»‘ÿY\ÞŒ´ð ùÍjê”¶Ay´ÑÅ}V.—¸ý=NÞmÙŸ&Z½ßy ÓúžîS½ô“)|ê‡úžŸJóè?æiY²Û‹ÇãJëš—Ò䃃Á|BµŸN}Ó¼ø‹dÏAœ7ª«è—ö7nd««&q¾ðˆ3þvÚ}ïC’º'ZÝû,cpL5Iš=ÀI:$ѰõÛƒ[ûD2æøÞëPo8:ur@`²,Ñ.âRšƒ¢÷pù—Ò‚»'f§­9é.l2h ¥0qÏâÎÞJ–ØÖó~™Ê5ºŸ‡|¤’ /ï|îÛ¥¿ÛÃëõÇ/_tó?3³K•EØiâ´õtwªÃúÔfwé§ç¾Lør:S>Š•yÊ{¢%×É. µíÈÆ¦OæÀB«&©¿áÍu ‰÷·³p8[üÊõÈõ·»: /Å„ËäK®<’p¶ûõ¥—‚¬ê•÷ë/ùåÌ)ÍŸ\.–6å ŒGgú¸³]Q< XµÇ·ÿ“f|³û—›AùÖ˜mÙµ6‚.]›¥­Ÿ·×U>ËÛú9¯+p=Ów©¾G\…:êÞnõ­SÁTZ[.K5(µˆ{ìužîh×®¤®Š,bwëƒ×œjÒð Ü{)mrð:b'ã5òøãÕ¾6áLدLìt¥ˆK•Ô6\k'J¢ÿ‘bv¾|`®Zöêe{—êŸ_®éžó§gÙœõI#»½ZÆyìcbÏšËÌFV,»ƒÖY™p]®ú)=x—7}]"“DV‰¦y8©>qxM;µ–êG/þcÈHKwA ÖÊÔ–Ö)Ÿ¡×_oÚßNTz07'1#Ìš¢âÆTô äéÖ‚d‰ðóƒ vÓŸ#ò³xU ÄÓŽ…÷Hßý!7>¥íq×K›­zªDíó—æ9û(‹¶Ë4:µƒÔæ=Û˜|²-cܽULS|†éyÄ9ðÌl,ÊÇdW3ð°¶p T†Ú«»Àž:7¡;$±wg¡â¸3¥DQ¾Y¨Ðc^Só ůï:Ró ŠOÜçíØhòði·²Ç÷Ì.t¡ÃÂ<\/7xe'9è–†¿×*øÄ—]=Ës!ªf’ˆ,ƒ~wP )¾ø.ö_Èñbó¿‚Ž§– ѥ€Èm™˜?»-ó‡a»3G=K˜yµ..åt¾Š5š“·*§?0úqÌUÈª]„Eô‹Ç{%”•ë°›7Zÿ¸ˆ½ñå>ÊUýbŽt`ÏP-Ã[ÕIŽí;lßä ö¶¥œ¶ÿúÚe“Æ«ý¹ùãÞ_[Î|=òPq’}2Ýû®4O‹/Oîýš¤é'GjÜtß ²O×Ê?ä³-µ2Ý¡g$Qõ¼9ïgÒwa·tæY¡[{*CÓ¾žJç?^ßH!|óÝcïÛÒï„“_&š”¦0gS›Õ|Rš”h0rükÏ‘)5U­º ÏOÇM_Ñò;R³…¥ïÓ ’ɃF"wuÚ¦ÈfÜg7Ý¢ (кs“£ìZxëÓðƒ %“[2Ä.ò`Åõ„ô†‡&¿i‹!ýwmµs÷ÕÉÕÜ£ÅÓ5üÄXß]+&sf’rl„ù»öÝ3O=ÑéqÙ5š­6,ŸƒM-æ:RÔÆÝÅÛ.'•ïYÖÿöÂíGýÏ…î¾Ò`,7þ<ÿb¿ô¯Š²Þ®³‰o¼BÕÜ<Ž;õ­ß³Å6æâW b°‘ÄôTü¯Ò ·SÇc­G•)PÇX;vÎå­ÁÔ˜^søO^Á·¨[áaÛrÜ­2NT±õx_á3dšIŸ ±¸É=’çy{»eãÔ®ïÒ…TÞlÍôõùUúúá*‹!%«K{ßÙ|Œ©æeIY¿@&Ï›†;%$Úð=æs—šqù ¯¯Í±eã“Ýn,ÎþÉï¾Ý§1 Òw`»“b’âhÈ–µ×Sg9+Ë¥9î¤èoh/Æ6¹ñí Õä¯qy#èñäñv¥Ç¹{EYî´è_@ù¾ÆÿóÐ1T–0¦yf½²mcMT\üŒ¯­‰MªêÃÏC¡»’hTå'7Û“1éõQÏQ¶þI_¿ã¸ô¹¦Á´ñ{×+ÅÅÎv¿´±QaËÛ‹ºµCì¨Íú)YšM¾²ˆ¦´ y¥GÌC…{róIòF­½‘cÉÉzßÐ%­B#Ø`R'¢'|Òø}®kαÉ&†3_Ž%s¡o^³-;~š;ûKûnšÈ€æ‚›×<µu¶2úµ¶¹__µe&pß6:Liêá ïø¿qÓ|͵¼¹9;ëç½%“³R¹Å»âÂÒ·…EMz¹nP®£-¬¹…*xœžbÙÉšüóì.µË_<ër™¤ò{šEw_ÎSÚ2lÂúPbŒÅãÇám†X?¡‘B‚MÃeìÏ›¼Ì3Nzß#Lß%7&¯×-O¹? ì«lÇ¡X]»±r÷)m=t“{ÿû‚pºM-’,Ë'¡‚îêtž/í²åØ}L>„ZÑÅ’•f›ÞðK5;-³¿á£‚œYOïx›0±‘{4&àÞçéB†GŠuS—kêŸ&¹<¦þÈ´í,âÁ³ŠÇîo]Ÿ÷JÜâ‘$c/Ël zyòÕ;Ú±™†ìîPæ‹ßÕµÐfqNžãß·6èy¯ yÞè(-jÿ$Ž©®+q—!M暴WÞ¥Rô£kÃág.lP¥9Kþ@ñÝLÏ0G¦Ãì§‹MÏ“é ÖØ2]4yò€F¹·“þœ\Ò×X“£;Z7»qIV†’׉M–{hÔdjTª#5¤Ïóž?Jcwo˜$gšw÷älyŽÈžQ‹užÊؽVÂüŸ&‡ïi†øæœ~Ÿ&–¯JNUæ“Ö·áEúë²Ïï²übþ5÷ÎèÆ]v,ßÁ˜|= Ž˜dŽðÑŒ¦OáW é赦ŠÓ[èè9diò²³P¢ý/«žùõ_ÛäÁ&±¦›4cÓ¤iÀæxŸ]¿ÖlZ\Ûÿ«×™Ã:+R&õ3-ûõ㝏‰rd0 GŠìèØ–ùSê³L󅳕Üòü¸¶ìù1íõÁǹIé”sÌ»¢é×=÷•vâì²*æëæ{ÿøÖºš_ôã¾Ä_!I ¥•+¤o=çäpRŒÝÊðaQÀUZV³Ž‘Á´\ö*g^Õ’DÒnpyGyìS‹eù~ïf%F^lÝÛ|z?œ’ð¯étªYo˜äýÙQ™, í3«ÔPˆ(¼ãQ˜Þvæ~®ºVjÃ԰óf:¯™¨D”“lÇORºÕÙúõËÔÎUÇM‹f߉|˜wßøôéói§O(¯6»ë}0vŠÚ£.À>¸yŸàÛÜÕœÜ[æüG÷4FñÎø”1N8>à4íuw¯÷e´p= ‡´@láÕ`¿Í™Ü7ŒhàúY$³ÝwÍOUÃc{Ì Ò¶Žª< éÏfj~¢&ËîæÁ&·®ãî9®“YJ©§\t¿P^8Çœ_éXÏê"{2UØÅ¸ß.¹fûû®2æ‡ÒÚåfß[j‚»ý27øæÈïÛCÉ[¹1zý^ÝM';\âÜYsc¿Ý:2٤ݧéÅ-,Ñ£º¹”-^pT§8¨¾1ÎìIUUÍ—$‰Ó¯ÚkÅränX«\¶p6yeíášÇ—7ò¸þç€<ÍÖNõôÎçžÑ÷²½à§ýiÍwûÒ†Ú΃oºCÉÇçØž6ÐäëèË(•2«g¿ûìË$jæF±ã©b¥š… ÿ+k‡"›IiYlôNCÓã–»®u4 “©Ø¹G4r•üJ½ëè@–ËxúhM|ýèî—Éh—==½rJ›zìd ]W©$çÆ„mÜFEf+›½!å|g÷­-ǨÎ_>ÛÖ³¥·iB‚D·bsße5%ó“ƒÖÞ![¾lN¥g:š9¦øýJ´q.÷ƒ×;´š÷½²öð:Ú0ô¶-D'ÙøÌ¸Ç#.¤w§ÅÉ=·LÝGã>¯Û]”Rf Á$}ðÇãÙŒvi× ~9*5Â×Ä®;‹ÝF¢_ÐÒûÌíeæ…ªòç•‚¿‰ßx·õÌÏYÉã!~·˜©^Ê»JÖIi 0uŠ`5¤˜8Ùåu8=›{d·BέɭdÌ‚fFiöî8~W~YÛ*Uÿ öŸJø&W»¶$FnÌÉ4ã¨uj]×è¯ÓW¶‡Ž’ÌU˜bÆd8µwz-gðEH½øîÿÁWzþŒ=.»·+²üÙ€X‘?z6àGÃ^g}–KL;®Ù]´èÛ9,0f`| ›ÓÌpÊøð©ÇLfÇ‚"®sÝ45ÔÞ°a†jÌûϲÁ~þ×È)ß™QÎ_®]]5|íYƒM©©æëŒ奲¸gdžü¤2T¦ÝÀÌ·s·Ñ÷ nq¿¹XšHY-Ýzåô—‡Ã}µ yn. þšGò‰Ÿ{®Î…8‘ôl 1y,5†z§ã)’˜<âÁ;óëP[OØhÕÝn0{U`vŸ¼èú_Ÿi7ŸÎ=w²ßõ½õû‡èBZ‰Ž§³Í%—Ås©ê9X±oM½õf×5ÊÌŽãñÍ:9RQɨùë\U5eog‰lùZñnOç,ÙF#–#s¯ùOõw¿dH ˜@·•VÛ`èNH’¸JœW/µÚÐÄy¥J*dçí½.ý }gx}¢´‡¾¥ÿìúðiò¦—ÛTÜó5˜”7'Y‹G[$¥¼ïÌõ8ÈHµ¦èœ!½N§¹ßÉ¡ýëí *Ýÿ×cb1TYûÝ65Óać‹K(™ß­§§Qz¥wIxK“º—P8&@uM†€‚Ü+ÒoåtÎëf¼ïâ<”8OÛ4ìUví¹\6í³Jöc1Š#IUr·Æ~Gmµý@-çÀxâ% †µÌû¤â£¾Š«ñŽ«v üüBNªû–œåÓCÞc5WN Ï½§¹|íû ¦Üû½òcßà ²˜=’Ö9„¼RŠøòÎÛ8Q缿$çXä¶ÇÇlž{‘§œí–ó‰±2Nõpðýä|þÓùâ/•#ÔçBŒô+výHh{$¥»;6Ž£½ Wܹ7ëmTƒÆ)c 6Ç ÙÉa)Õ±ïU›iÑå/û.NúkëQ_Åì±3fâ§Î¾­â¸æÊ±_SÇ7”o\cÔò1õ¹ÞÃíÕ\Ct劗ŸŒZ1(^B`Ö›=V¶)Hø)[]ï¹kª~ûu6Òjw4»ùÔ:ô[†¢¦‰¬Ñ#dÓõÌÈsR´ž³ëžïÌ /è'aÝîf}ðêˆÇìöêÓÊ5Fº §êL‚›G(¶ C }}‡T´à/#“²vø´ñÂÇ(ç¾ÃGI(z×Yð‡6°·-,ê}´£½kàj-Ý.2’Gõý ››w÷k½£n\›só>-6êÉì­¹oþÇ)ÏëŒþd_ïÕMÖ\ÍÇz,Î:œ¦àZç&3ɧ­JÏiÛ)ÊQä­ÛØ*ÞD¸¿þ쯆¶”/é›âl‚KËZ^:%Å2í ™’ýzê¨o§ö°¹&òÅ)‹'Ÿ<¿‡´üèL8 ·¸ÙPG[[ìŒdËnÖÌCûS³ì¦²™¶´SèW ®þcÏ5õ>RæªÕÑÏQþÂC*[NýÔøþ«½ù¨R¢Äùƒ,ÕÔÌ\ôÍŒQÜ’½SÏäOgËñlKaþÆQ"Ÿ¢úÖ’ÑŒQp×—û.¡Rí”eyûl‡ì#¦ÍM?=5Þñ÷Tøýšû¦[ÖîuŽþàC¿SM8‹¹c»¶Ïì·r™÷s7žû O¨mÑöJ)å•,áKxË/>u£ñ Gþ +g±]$ò¬¶|Ï…¯²³¾—<çA¾1ü$YOÉÚ¼3\»okaÚŸA='÷ÌÁüáÎQTÂõ¢ÑWŸ}Ü7;ùA,¨½ÜòëI»}ºNß¾E¯«‰J˜-÷5Öªiv»6ìÏ£Ñí<5Ý/ùŸ=üyã͈~þ£ŒÜûŸ60oþ($é!WæLÂqeŸ:÷–‡N‘^è' ²‘ŠêK,ߘOuS>åÕÓÊd6«èÙ”§ÎåÙýâSTý^­(Ô"?±žvGÙq†1ÇÈésEžŒk%Ѭrïêt%Ru_r] Sh=F›‘Óâ}½lïÁ{´õÇô^V|>fgÎákñqB-€Íf°lã­™q:g´Ü“Ïúš”¿eéí{wóљʧ×:í‹fž9S$Bc;ôqSãÁç)úØúd;ýÏ<£ž©ûòS µrz0~s¶l2{-•¼>å™?šîÈ\Qìlì˜#:{LÖÌ(²·}ÃQÙµãÜüRÏåI?srf~o1åˆÓ‰ÝÒ2^¹íì9VM±ûëòJÏß¡éLì“ïÝŠ–Hã¯8²Ñïƒ_½K zoZ·V´4IŸZ†„ËA+ŽŸú&Ms辺]‚©U{…Yh7ßu4Ú052ü ™½F´>f$úÜų/K®VhPÝŒ;¤yNcç{ZÛ2ï •$Òô åÔ>‰.{N›€G‡n ù³Ë²}¨Ž¿[¶Ø©}²|‹ˆçÛÁ÷>BNf²çP¡ç8¶ÜûËÁ„;WäÔj5G°4oH"Ä~Ø|{ðj ‰b‹‹‚‰H3ƒ‚à#q>Y7^éþL™ªË§è¹¼ÞF-uüÛçm‡j+· o%g‹ßfe/gRopUöý¶è\Ïò’Ž˜ÝѨ8á6¦Ñ.ë}¼™Þ~ƒ‡5wH‹4µ¦^¬ê¥âó«»|ÈZëšûûûî»^_èÿ’²!KðŠ­Žôhüc:ÝôaÇÏ2Ø}ÐP¨ åÐ(hfÍl¥øvcK6;RÇ@Ô·­Dפè¿#B÷ê=Sß×etE‚Ïø›^pq홡;BÿPVç:†ÍÁÜoß›ƒ<(“334›âc·qaÙ®Æ[ +ýe¥èœ=o†x—Ñ$¸°ÿÞúhÛ ¿;±7îlÎÏ =s45ˆú´—¢jÊ òË Ç>½žõš1"gMe‹4E>Šg[¾ÝÕ÷½äãiÚ¶óé?à ¿|J~šTk×÷øË#lÑÃÓc$’vâc6i¢åÎÇCl^Ç ·kn–ì x]þ–*œáqç»òb|6ž±ÍU6½k­Ò(õDMÃÓF°›9øÖÌ×õÓ_¿W=1®F_SzX3r‘:²îuafîÛÓ­k_Æ•¼2$Ÿ(¸»û¨¶×QMõœ7b>aè 5Ú½‡ó ‚C_î¼ä¿k-Û‰ÞFí¡ƒ ©sk¤–)«y ‚»]Y|÷ÿà™ë¤¬æu¡²#¢¬Äÿ,/oè¬ÓÀBÁoªüáPH_Å¡Œ]†ŠbÒã±çDŠÕs}¿Ù¸;UáÛvÞMÛÅÞng3xú6E³¶6¢¶Z=®îËCÔÏa†a²_WÆ+D‰¢ýŒÇ¤Y•ÿpfc¸­*P4Ôf}7ëyÖ‡§»=££»Öqμ›žê»Ú8Ú8º&m®òWoßÕ}*vDz‹Xõª^''0ýäIÙÁr0KvöH®¶÷Çnm»ïkÍÅck”Œ¯­“5í>2Iå‘õÂögˆtý‘Œén‘_Å>_½>ª¿óƒ`Ö0»[Ro{‡Ða;Ï|i ržŸBóé¼ùAê0îEýàÇ÷ÃÎÇ]%n °ÐÄŠ9ì:|á‹Ê¤[¼ë Ñ+)¬ö<ÝkïÄ(–º»¬«âPßèY$qW*æÓák«ÛO¾:xw¶rÐ-lóC³3H’5žJ¡ýù—’j& óO_Ý{uh­î–Ô±ªÑ³î>s …«_¿Þ™å´Cݽÿl‚+­å¹¹îCê죟íc[7Ý!zùE§ÉO¶Ì‹ok4ì ×Ó Ü«Gé1Vma¶ì¼/rƒurMå›°Ù/kEf×ÿH93ùþ¡>_¨šç‰_?çq?ó£xǯíû3LlÌïö?–òö§Y³²Þý–ÖI'j³ŠÎdõÚÜ9“ÎþNOŒËó¾8õÂ}Í(çú¨¯‹5±ëÞ?}ÇL­ù#s›üá­ÒeǮի”˜$YOÒãhWN7”þ@ô&OrE¨ÎÞ-™ ÷9×ÕüҾ㦦'*ßµþ¶éáPù©Lï¶¶úf¬Ù£žO¾fú¥lÇD{ÞNî?wËlç"ƒ]Ý‘ ñÎ}êN ræ]—fO%¹¬ÛŸòF|‡«ú{ÚO.5T†‡"fضÙ`YÎúîÙ®»VnV?"Xîûy2V ß̨`LANžíEzbÊK컺ô׳Z:g%KTïJ½He­ÚvœòúðI–ˆ—öª[·™y|òÞýTm “ð3FÜuŸ>¼!ËÜûNÈÚîÂñ{ߊwùëï"YçXD~XÿZÇ&Óý/õÐ lªŠÕé¢ð•«w¢©î›„é>[÷zí§kµA…¹ÝdBoM£•×*³ UìóÿzIG>ªNâë“ÜŠHMÊ“Çh‹Zœ…~ÒxA^»öøxôaž;:ã.ÇZú<†Õuþèð–Ë•–Ñ‹cÈ:8m4xYÒ ^`®nÿø “Ĩd‡—êö§'iïI'}øÙ_‡ÝçWà¾Qózç-Q–þ(ÿ­Ÿˆ»-T\tÛÆ¥¯~§¼Àp3ñ»•_]eañå+¦ßVŸöHɹӮjÿm„ùå×#.Øê¥ï¼›Ê¡ÒÐ<µñÚ«¬¾Næ n]Çä¯rBF³F~f9˜}ûr€îhûú„ËCò·24¥¢r›c£ûZ#Ï+26’æ¡!uu<}µ—õ«0o›¿@ŒñÒä=‚>:B­×kOêëÒíSàÛ`–«Vél.••ÒF®Vš·îÁÁ¸\® rÆqÖ‰®UJ»Hî§iïìoÞ—1k¯q«àƒ`XÕä½k—¤'ñ§?ŠRJSÔ\72b×úqžaÝů%—û›u=ÇÎJ”¹'FWHhK:wæFò܆R7¦O_É>'Ó½Ós»›}cvPàPXΖ¶˜K.,¯]~lïйssG +iyù39mÁ»y´®?wðõJy”n \g{î ›êÅë[ª¸ÕÎ ×¾ª<–§ÇqDí¶–^RšžþÛA¡'QòkŠüiLEmÎfÜÄ B·ådÿ÷µ#ä”­gÓÏ{E6_ÑaqÛde$ùÜ\±cW^ÜÃ'Å —ý½ŠØ·èhWS?mvàÚ™øþp—裡ۤ¯îZ7—¾Ï•ê,¦:io’#¨ÊrçÒ×F*Ež‚ø´«æ¤gÞ4Nß¼=#5sÏÄE]~w[)•MßöC(Ý—ûFú›*[ÉÚ½c¾Ãdêì!âMÃxW°\–í¹õLTf™Ù[¤Z‡ÏóûÛæ¿O ä£ú˜ÆDI‰ú澦•œz×Ë; d·©“œ÷¶$Ô2¤ŸØt^sï&Wžm#E´qÎI³Þavk¿ŠîÓÛ~=|½M&›g…÷a,ªÌº.b³Ì^Žö­ÛýŽ$=óÇž4ÝöøÄS›vLFé*<9»?@À£o_i†TÀæ´d®Rõ0†ÊŽ ²Õ-’"çd©Doþò¥Î”ŒÌ)Ù"Ît¢D!ölZcP…y4J1„×ÐÞ b eÓĹ0TcjLvþ=‹èÃû÷¤wuÉ3Å«êkÍzhO‡›^j ƒ~šS£J±º¥/RÝÙJ™|åºÔzØYÝêN]àu(¨¬¸UPÝ}·£l¢µq’Æûl L?EÔ;y÷ºî£=÷ ãÉÙJ×÷‡æ†ZZêZïx;äN²£1Ì7ö”%¼Õª=!P-JK}|G §‚‡'ŸüÔ‰5Ô$MLAo4]~íMôi%ÛÂ2Dr õT³êwÖÑY*êA'´ü,cUILhîg2E­—1ì§’d«ÈK®”÷“ëûék°&E Þ´=¥ÇHÒÃ8Þ¡ÒÚþîe4Ÿ¶Ö+𛿇z¯TdÍÎr’ó \·¡Z;’I}½ÝÑÚ ~ÿâDÞË$ƒ ä„¾!ûICÅÒâÉš»x>ÙŒZKP>ýr§+¬–ìõU06PÔ”Ÿ¯¶H¼¤C)ÖV°žFDLìÉøÄ!Äa_uSNrj6DCÑİVõÞ_tmB¦"ß(žÖó|xÓòýÒîA.^®S3ã.è-gý›ÂP5"Îmu=Ñ"Nç¹Âöu–P‡„3Š—by6–ªðf·^• ï?,v™áëÝç ›Ž¾J0R9è¢ÜuW8Á"˜ÚðÕÛÙåé—@ÃYíñ´ïm”rëŠz³?ö»˜Ôbš™'¥j~žÚM€“š$‡ÞUátàÔ¹‘ zq)1¯K²çs&JT¼µ•¦_mÄä]ÖìG•vAÞu†sÍNŠo†m.úÂ÷ðÛëS´¼9*•ž¾qšKtý:v%¾Í™/wzêõi%s‡ªÑ%3™»¦ØÕ°ÙNõŽ Måw‰Ó¹òx3§XA^_Hã ¥¡ëÁ±'£ûJ{›mR쌓´~$F}9IWtðK‹'¹ÞœùŸ5)ܽ?N±qoOüìuþÕ+Ú]Oåöé–Tîݽ>Ýž•û;¥ƒ‘•Æ™™¤ÑDO³I–øQ¾g"Sbk´8`Tdµ°–9 ,ÙŸeÅ.Ulºn†îO¸áEAU™yÿÍÎçÂ-Ã6֪ąyØ×=òØð°lýÓÏj<1õÌõCœ›ØÞyÊ]Î!9üvlÛ¹´ò¸Ûƒ³?üG”ÅÕOËJoìcµ0¥—fX[p¹c -ȸw€gm‹Ññô¯iÂÌbG·ë¢ò©lÝ«4Qº>lr’…ëæÇoîÚ7·\:eÆî×Lî7õ”ûH¦ªBW°N¤vJ{¡5u½òãm!Æ3‡^Ü/šNòäÚR¯àr¹n·¼÷þļ>3¥ê<ëíÙ¾'J¯Uù‘¢§6.?ÚMæqŽCÇ51QB;æb}“1cÞÓ«F¨ ÅË×[é¿¶Îlze¤…H›Q@ †Vù±èïyÇWP\#}fë”_ÓÓÎg©<êëS»>V6Ý¿8>wj¢çtÌvÇl„´Ö‘°†çëw9Q9ÐwÐQ"(xÿ‹@üת±¥*Z®rè?R9‡ ˜”˜‚¯»qÿñ*'Œì°ð«Óª!žQ&²Ê/„îë²wVómTQ0üÃK¥`«KðD7Aó¨éû Ä:õs{Û§Þ»¶µÌiî}‚ÊÌ/¿sòÙ˜ì7#­'MQ™ÎU“_$Û£Þ'eÜ&Ó?ÚêÔ‡œ­q‰”¾ºÓ þ mSâÍ ³7ñ‰7J­<°zÑ^ZžÝß9²®oÍ=Í<§þÍ_žÞt®öZãý¦FÙ¾Œ-’Î9×+j]Pz%ŠÚ#ooŒÓL–h&†XlRÔ½z³¢Û+?Úá¥ÅžÄ˜ýo*BOOÊ®ÛcÑE*r‹L§‘ôÙ4ù©½uá½E ¦Ì//S“6ÎÐþpdÿLÑî1÷+«œ¡-;Yó¢ƒ%Ì/ƒ^iÙáOµ)-ª¶ÌvÖëÅvZqÙ_8’gy9«ÐüÜeÃ/Öϲ¯—µø…àÞNûÅu-R:6Ö~z›êÞUä»§9ß:Ô8;r ѳvg’«·+~v~is}ãàK¯j”¤BUËà¶—:ѬbÜ#ŠæVž7 Ǻ¦xëºù‰W‚u]Ë´Îö‰‹ù ² a©]·yŸ -Ç:›/ëe\ûäÔ9¯ù ¾5ÓèLjOêóÈȲ“ç™e,ùë^y_xgûZ¶O78OÔ~¦¼tFº¹è§H ÂÓÿ½¬@0Cóñ#©êkXQøâ.¦ñÀþÑ ¶ÍÅSöŽ•áJ9 ~ö¯b6Ëoì ü¢`É[q»=Ãúóš–Nêënˆù£Ú¬Ít‰üœpùG,ù†¡®ªvßÑËuhBñJìc<`5$Iúªo@3¾jâmx²¤Îã£+^ ;ª:µˆÝ­f d‘Ó?Ä|%¢i’öîDYBÂÃ'ö‡Tn¸ÎnÍ~8ft¥ðéb+š‹ŒT§2¯i‡ïGûú³wî—ñj'·^Lh0>ÉÏdCíIt³Vv›nÒñ8õT åúï7õz³SóŒï* štO+2¢t…nu|l¿né*I.¯õ¥´ëƒ– Šv\þÜ]ÎF•ïËȯ¯Èóü%“j<úÙVãèäÜQ÷5m³‚W¥ëÌî™Éa=}DàÄO-‰Ÿö;Äsû˜ñÓÕÇv´±lJ{à°·+þRgµ‹íMöÄž³ÛuV ý¬nÕºÌt÷h›RøÝwmw÷ÜgŸSå¢ìšx½®àÛõzÉHtnÞ³&¾±yŸY/Èç‘ ¢“¨>eÄ¥í~ñS™ã/.ÝûZ;U`Ë­c<Ì‚±Ö=îÖ3ò;®HàKö»‹¾O·;²EYò’j™ÿµÏ}côÆ'yÝ©¯+©½z&Ö¦6È[/’4úHÀ-8‚Ð(V€Â(î6hL(d×,z Š^z€ºPà–H´Šˆ£-Šb@Að’X!N E‹«è$ Í4\à=H¼&…?,¼Ðœ< âb4ð$ÁÒ@3 †3¨ËXÀi¡N-xÜ14ð²,t É€M¡`z!ðŠ´[ú 4=¼z‹Ñ àU F "-c*²›È”0Q“+›îm5S'[7C°"¼¸¿FÂú¶.6Ά4à[¸ˆ‹1¸!pV^ƒuZw†s6ÜÒ‚›c¸X¯oVSÐEi€5°`œÙ¢Á^!ð#Üd™-àŒ">àßü×# ÑÀꇞ¯ Ü2%0Æ3çO"¼€w#ø+Î×€Ù…žïÎcDh€À'¾ÐQÄ|Äç?7?éçÿ†sþ-1ÜuØ…·hŒ2°ìó 0lÍÏT -`¸…ÀÑ1à/nºâþÉ y¸‰…¼ p: ÌñaÞy¡+?âÅnOð 0´3˜Ö¼¨ù&1ƒXÝ€¸%e>vCÿ“ˆÂèùç"F‹T)¶ø]¹¥TVöPY$CHe7€… »Àê9)˜ÌÈ—‘༠Lm ´Z A&Š€Ög`ªb ƒi)gˆ~âÐ °F‹Àk=¡Ò@Â*—ÄThÒ!8††× 2¡¡Àf>âÂH ž£!.Œ`(Z ¨…†¸0`!h1xqÂ'PѸõj°š£EáÏ-€+€º ¡p‹Â0ŠÃ@ø Ac`ò-¸H`yGCËà2hh=² ‘+ €Ð Qð¢”Q'`‰N n+&O£ACk0XDÐPàBÁ q$õ ð†–)4ö‘À"ŽFÂ4 ¨ êH€%£‘pi@ÑðÂÐd4¼@³ S€4£áh°f4ð†Ã%À¡Ñ0íˆ3“; 4XTËU_Fâ ÌhXTñ ‹*€>£!GBü- ˜ ZgòAƒ‚VJ`]NàPŽN Ò€¸Ž‚åÀ¨Q°Ü˜ ^€Ë- ü£`¹pÌ3&…‚¥þa:,Ê(X:tNO¢`é!LBÀÅ–NcGÁÒ  ì(X:K'`¢£`é„‹†å#X4,ÅÀ§ºB'@Ñ‹d( ‹'QË©* Ò? [Ba`ª ÔƒÕp¦æ@s` LÌQ‘`°°ê)°ø£` ̦J@Û ¾ êBÔ"1*…t(øPˆˆ{e¡E "á «@S tHp¼1 Ð5 ‘z4ñ@_€¦è ÐL‡š[àCS `hfã M,pD¡y(4­€X‚fªQФ"5 ÎàÈBó K(4!Ef È¢ Ê„U4ÁA…f :QÐ"' š ò¦Q"‹:M>$øYxI ABi`˜‘ð4(< -OB€AAs+Ð Ä 4ÿ€‹áÙ¼\èÀÏààÔ+5QñE¥ð<<©vX¬!-‚†üœßPøG. 7QÌ¢nÃñXÈg€Ð‡Z åb‹š äа(Ú XHDáðŒ§É€³Â¢ x±¨ÊÀd ,ËÀd ¬ËðTðcX—’fb‹º dͰ0Câ 3X—Åà  Öe‹² Z”e@(‚e. ’AÕŽÂWeèEU´z³(Êx¢ %¾¨É@¡+Íb‚‰OÂÁ p_8VDš}¢xŠ ‰§ÈpZÊ“`·aÏGÀŠ ÌJ-FIX’©+X“á4äŸÀŠ‹20‘µ¨Ê@•……›'²(ËÄÅuè¶°,ÃàÉ2ðh,ÅÐeX¡–h €…Ò/—€é”È¢r³j‹Ò p[Xºö‚…˜jQºkÛ¢tAãI7 ZÀŸ”$ÝÕÅU1‘Eå²H¡aaá&aåªe$^„ðuE`‡^”qH0êÀ¼ Î8e"°÷ hs£<±‡ÁÓz¢<­ö:0¾ÂÊ @‹ ]0·Ð+@¦B\‹^ôº DHh•å#Ì,°‹Âd D ±HÀÂ(ˆ7‚ bÜ:Ðʰº-p`A0»sZ0S 4Ç€G !£‰# M ))æ¡%ÖÀXÎÿgg\ÌÁ-Û@ ÎùEç•"TS ÎBãT-°XÅãz‡ó’ùÈÐl`ÞŠÏK8\$ÀÎ+L\|Ä… \lÅÍC ðƒÑg~F/ˆi^Ñù&bu×~€À 0åEÑ8¸ 6qWõâÐùà‡›1b8 hEà*Àç@É †@€(§à§ÃÉE`¦^®*b uÄA@‘ ,µ ˜ÜXæ%:°²‚ Gœñq´Ç:qË 7^‹“ò`\­ˆ«7ÏÁh êo`S8‚ÄËy½ Ì5`ú!p£Œ[¾ CÚ\,’ʰ­€Þ€:‰‚ßÂ-— ׃41ØY1üpÿ¡Åqz˜7À5˜e(ÿ…óÂ2æsÀÊŽ˜7f¡m€½qí—+`Ëk&ì‘ÿð4;Þc–(ö}ÿ.ÅŽƒu9ÛÄ`] X—#Á§î@' ‚Â8dD0 B¬pÑ`Ä…7d`Á A˜¡Á”,ßJá¬,ßptÖb$µA‘Ž„¢(Ò‘XXVƒ–Õ@¥pî °P´u9f@Fba‘TŠ…‰P)¦(@¥wY³: R Ó€J1x‰™ ÐhCöH(FƒÂ¹¨ò,ª| ø*¹¨ò@’dƒH4L Já@Šóõ°°*EËP)´êäbΨ3 þGBj ËH˜Ì óQ`©p•ƒS ¸Õæ¡@¥(| ³J@)!áíqpý…C>Ð$,ùÁ <•Dâér$>©°’Z ‰P¤#W R83è0$œ—]˜Ÿ€™Xcñ6{q[´°Ó£ñS p&УÐB J¥Å£°‹™ü=`0—· Œ—I“áp*ÜŸ€S ØÅM``õ„ pXláy& §À[™`æ‚ÆK#ˆ‹,¦À­8 Š—EÀâ¥À=ˆÅ4‚8~ÔìpWl1‹ †—EÓ<0ÑÃ.fÀý*8‹Þ_9 N|eqG ³˜†õ€ã/¨ú%Jœ0 B¡ÄþL‹/ _hçTOñÚ ·Æá‡³-nìÐóʧµpSTl~OZt^?b1¼óK 0FbóBPta{X;Р<ɰóÒ·Îàf58ŸE7g§ŸO ˆÍï(ƒ+=½°• znvàÂ48Ž4óû°¸Tf¾Ï¸ØŠ³8Îiq³aasxá‚…íäEÕ‰‡¯ÁùüB~`^!ã¶¡ç‡Û™Wï ûô8[Ì[X〃‹ù yÁ½…7£@"¾°ÃŽKVÌo¡‹Ïç5À(·°:Ì+] ¨õ²æXÕùR-‹›¦ÀR 2Å€¬d0@¸9˜9¦Ì|‰P&3Ÿ$˜'4ðºè’’a!þg2Îà]1OÕV“Ú‹÷¤òâÝ“êÌ+|ÀÖ™×p!ó¡ ¬ðó÷Ž¢æ© j~þl`á|~6Ò æ# zá«èy ä¿âóÿγàß…ëÊCcÎç×àß…÷± Ÿ]øÜ<ñþ]ÀÅÞŸgw ¿œ¡½ð¨\í…‡ži/|E_{áK,Ú wåjÓñ Ë9œï¶Ç»±Ì:r¦.¦vÖ™æ?Œÿ} ÞGäœ,M]lNÈ›ºXòn—— ¼€•p r x¯Å)sK'ÞíJ꺼J6Î.ÎæN¶Ž.¼˜Ý‘xã}—Âò¶VV–N–'Ì- Eh) ~Ñ\@œÂlÀ¬CàbÒpå—2pQÀñ?0ƒñ p`Ôc5È,@" †N0 ‚$ ¤›`ô(ôARŠ[*A¢ òVpI©,ÈlAÂ." áW}pAy0sÁu¤Ç gÁQ.6ƒ‘\ªAâ2j`ƒ„äÜ i8ùA†.T C ;n!WGȃdd ¿C:HœÀÕ¤þàêR#P€d” àRŠ“ –×P_€äe îuHë@mP¯€k:¨a@nêœÎ…(„@bŠ#œZ‘@œˆÂÉ*mÅ©-œþÂ)2œFÃÑ^œt›s8}‡S|8Ú‹‚8&‡Ó‡8ň#º8!‰c„8}‰cL8Ù‰¢8Î4¯Oq’GYpJ§mq¤'yq"'‹qüV=8|püà‚\ü ~D8ŠõÃQV™ÝJGgÁ?HÁÄ¥Ç$?ÁQ0aœîDZðøpTŽ#8Ά£98–…#Qà°ppàè"ÀáE€ã ÞlŽKe€qn ~e€`.‚£zàð#àH#À¡F€c!†› b¸õGb„qôü ~t8êÿ€Ç!Ž›=¸é#‚KõàÈ.„Ë áä.U4Ÿ<Âå“p&\Î —…Âå¥p™*\î —ÍÂå·p’—öÂ%Âp©1\² —>›O¨árl¸¬.‡ËÌáru¸ì.Ÿ‡Ëðár~¸, ./ˆËâ8.ˆK)Î'qyG\&—›Äe+qùKGÂ¥5q‰N\ê— Å¥Gq S\ ü~ƒ  Ðâ}Í€wéwóÀ¼áâ—ð—61^0ŸgX,"¼óé=^s{Yeae5^§S–ÂúàµÂûAXXVSŽ!¬(,'§(,¯ Ôq`ià×ìNÙŸp/¤–µ35?®ìŒÀ} ·Êò¼ñ~~ã¾`0‘ò‚~¶ßÒÖÚXÿ7”µuqÖ´t’s°wt8~!<ÿýHÍÑ,ÉâA:77KBô ;EóÁux‚°`”¢•>Dìc”°-}—B204H¬yóÇÒF.–·¬Dsx²‚8D„ÝÂïø…&>‹U@íÅ6ó…pFX&9 Á±*´øjáX¼v±è…c±òe*‹î )ÜÖ…Cf±£Kˆgž¥–»¯€¥,1~‹—ô¿ŸKúŒå’>ã—¿¤c­"ìA_;Fp!Aë k&h=a{ Î{IàÛK¼ßK—x¬Ïâ•K5ÏbeK')Þ: ³Ä‰p¥àŒ3ŸÀ#Á;æ k–´b¡ÓÐ5³ ×8;×á'—†%|dIü–Áƒ–¬f xP!´JBr•4æjÉO¸K×¼†-‡VIÏ.¤2‰!ËSÁËóØÐc1XQ¼×*òÛä6pÉJÙí…íÜÒÛ"bpz[ñçém²¹Ž¢ÿ{„r%¤ã¿é Á›Ú”xÈ >² úS`‹)ŒL“"¸)‚C—"àKµ,ZŠ€fÏI–"$ ÈôrDf™XŽðÌ#ƒË†y¤c9B9-GÈæßåéw¬„.½†]}Ma 43±ÕŠd%T†ÐTDVÉ•×Ð%Æ D—ÝD€.»{ˆåYÒ¡åŒbk$`#+2â_¶"`A+ óäßw”gni£ðP¸äŽ‹¹%GǪ(ÉjèôªhǪ(ÉjèRÙHˆ.½ƒä_)ù7Šbb9:oIŸÅ—DPb·¯à}€HÅx(Ïòã¡DnÅC‰Üæ‰ßÐåÍÂGq}ò] •YÖh|”gÙã£Ë>>º¼Køèò.á£ËïP%xã÷èÊjb™9P™ß£E+¡<¿G;VBW×)€®¨bV×8€®WG—}©é_EW\þ¢ËÐWØ¿èÿ"º" ú‹þ«¨/øR¦c5Ôgp5tnbJúF‹V@Iþ-()1Ô<íÀ¡Ë­ñTæ÷è ΦDPžE´cl-%1”á÷è4îEÑr”:å!†ÂŽÅ3ç;‡wÌ_ßñ-C %ØgŽ„ ™8'‚.‹”8ºÐ%Jà"èü¬¾2€Iˆ ð–À 1~¯ƒ(*³p^D…î·õ%Š’Â§ÄÐ…¢ç¿ùã Ÿß‚Y´JŠ_‘c¾`"{ÐÓ®°àS™¡7Ñ¿ßû@¯¼÷ùûø¢Cù÷ñ'‹Þ¥B8Fò÷ñ' Ýùûøðøûø“eÐßÇŸ@ÿvHfEèïãOþ³ÐÜŠÐË33þBÿ¿þ™‹â Ž%Ïÿ#ÌŠÐßÇŸàCE°PÂ?|~Ù“úûø“¡¿?ª_úûø’¿?!è3~?—ôÿÊ¿?!"žÅÊ–NR¼u@f‰ý}üÉ’c•ä'ÜÆÿ–ÇŸÀ?AðüìïóÛØ•óÛ¢«ä·ÁçÒÃ÷ö£ÿñ½ý‹F_ ÀFZ@†]L¯,|„0±0·"P´0¸0»0·"P´ .rªéåÉÜÒè5Ãb ¼ÍÊ%¤F<ë àSK?,ø7Aøë+! ³Ø^B€<õ%à1Bxø<‚A,ÙGø`±ëD€¹ mò/EDžtüû"Ìx.÷/DöÈÿ÷€é¿Àø?Ú‹®èí8 ãßý+€ xîû/$DŸÕ€CQöb±€Œ§Õƒ~Êx´žà;NdU#ºÜ-öÈÊIlIÅߺ ðà³Ø " €d9À€²ô5]#à%ø„…à(Z Y˜^ X‘Dú®šXIKß<*O¼Kߥ ‘ã/ðø üþ¿Àÿ0‡ü~øâ^.ˆd)E¡,%ø;öЛ¿ÿ BÄÊ¿AˆXõGÑȘ¥\àš2x”páá·‹[>Da_xI“ 2x½\lüš‡¼D}îF-U­K7g¦ñ^'–ÀFgÀƒ‰ïj"FçÁ«‹ˆÑeð›²Üè>øý\nt|+-7:—”àâeF'%¨j™ÑÉàeF§$èæ2£Si™ÑàeFç! eFç!ÞeF—!ý¥F÷!t­¥F÷!tL™%FŸ#Ão‘.™8Oºð­Æ…?þ¢ÿ6”úâ$³á}‰nùW?pªÿg,—ÊHˆÕ62_íYŽú®‚únë,CIþ%òTU’%7­Ž€¤ø9X"èô*(á—–(X²ÅaY•Q˜A¹xþ(áð3,¢Dœƒa±DP¼m"ÎÁ³Ø"¨Ì"Jdøæò7(‘á÷Y<ýÔÅ»˜ØygWA ¶*– ?)~÷WG— ?¾ÙÿÅ~‚m¥eÎA‰¶ eÀ?[6ü ø­X]6ü<ø½_]6ü2øVÿø ¶ª–9‡þÉ2”àdÙð4butéð“ÎŒ?@;ðZ¹ü›zøèÄ*(áŽãÒá§$Œ"«£K†Ÿ0zý:wJ€2,E‹VAeÑ%Î!C8™WG— ¿aY]2üK‚ן EðÙ’Uq JìÑÜJ¶%~²¥tu”`ø)—RÖ?@¡ò–¢<„hÇ*(ÏR”`øy–æ|WG †_f) øsŸ¥(!J² ºŒ¸8Ç2J„.s ‚á_æ¿Cñ†Ùàÿ:?¬”ËQ|t™ÖÁC—¹Áð/sß¡xÿlðÿ]hà2”õ]]æÿÌ5~‡â?„vù.Âêèâðü?B;HˆÄ”ù–Â(‘Œq ¼á'â¿Cáá'2ø„Î ""(Ã"Z´ JÄ5ð†Ÿˆkü…‡ŸÈàÿêK$¦€ìD·Ÿ ”HLç ê¿C†Ÿ¨kü]~¢ƒÿG豘<Ú± JÔ5àá'ê¿C†Ÿèàÿ:G,¦€„!t…Ë…á_agrut~ø‹WÚ¶üôóJ¨Ï<ºBÖ‡~] Å ÿøJ[Ì8tÅ hž98ÞýËè¶zÑ¿]Ør÷ý'èÂ~ósô¡2« þïPžUÿ†yÓ£”« þïP²Uÿ†®þ$ïß<ç{µÁÿê³Ú^Çÿ•YÅ5~‡ò¬2ø¿CVüß¡”« þÿ %[eð‰*ücµL¹ÄË÷>"Ï{G.þÖ-´¡ÂŠó.îD€{#à,øÃk _ο…ÁýknO#«L#¬¬¶°ó^+¼„…e5åxŠÂrrŠÂÿ{×ÖÄ™¯ƒ\‚@ê…›=f UÛ*’ûeKˆºÏj]mÏz©(®Û§ŠVŽ[-Ua€pénŸ}LoèÚ³B[ÛÚz!Û*^V —ó‡ÝöÙÇËVQ·@ZúTª4© $’d¾33ÉLfæ›!˜”óÏa¼ÞßKÞïý¾o2ßïûÍâ'ñ×X†ä*’òmݼ}Ë ¿#ˆIy 7›Sºôw ò§‰5¥‹‘ÙÍå%‡&޽ÐrW\ÿý©œ7g<?ãlõìKµÒ»I7ŵ3gHÝýQïÁ¤”‹ƒËb×-Ƚ•º51'i±ÇäªÖ”Ü.7éš-Òæ‘»OÖ6Õö˜†*æ^ëo8<ä-7¡Û¥Ëœ-CÞµ'.bé ÈŠ¿¼€¢wþ+»¥ÿÒg“Jf£ñð·ã_O`;U^ì`ãVpn‡Ý¹þ˜¬ûT)ÖeÚ ߯Ǯ½Øšå,4Ç×_Ø!É=~òHFIM—ú”yGfl|ƆÔÔy æ)Ö˜+SÒ2ž‰ÏmJx)æb{ë^üûëª\Uàú¸w’IúÅRžvSAM¤Ôk¡&R µŠl&¢‰Ôª`)ÈÜDjÙDаM¤V 4Ñ!KÂÂ#Ó L† Où‡àYB˜ÃŽÿÃ5ôà°®”¶Ç‚ü¿ãŠã¼ö‹N‚tÐ+Å9=nWèY%­W§Û 捻õ¼ÙØ^ŸÞ€Ýžá“Ý9<ëÎꎺt ¼´3ÞQçx ¹î«é­Íú}ßôÙ‡-*ˆã×S é©–Ëù,¯RЖW)ÂX^¥£åU !=/NÂöŸ×%O7}™ð–~CJn²#U/7ùkèx eNê¶ÖÌ~[´Ð²±CâNÌ(3õ;bËÞþáÀ±§~e<Ü V;“0ûˆw=jB'WlÚÛñƯk†NÍ[X\×^¶®ÚñÙ6ñë«û2[ïMª¸‚|~nÛŒ]y5ëæÕðe_Vëo’ëÚçÛ“¥®]oÎÍ}1yÙd}ióñ于K7lW=¿4Ç–þ{FÒõîªÿì™wéfµÃþífé´'šgfd”?? )ÿ­Ã”º`ýܺËhò1{‹ë“Möb0âØŒbÿ°$·ž;ÖYtMzG¾Þv6c~{Ýõ,I¾ìú´Ÿ“žOùaoÂŽ¯ËÌb}h‰,ûøš¬ ="¥Æð· î:xÐÊÕ뽆êú@Ë)5TjC½oB<® õþœÕþ´|v(}–¨gL=ÿ¸ ŽŽïøôO(Õ±Ò“.ÌýrÆLG3S.íCÊMñÈÎrS?èÇÿ,•ä{Ì(v l©¼šQ|âD}ZÆy±µt±`WУ¿NÃ×py©® 3„é :û‚Î 8úg¯×,™ù9Š|ñ©õõ…?ì{øLuc¢±Cš83qRŽÜKŠ™eÞçúý’–«.S¬´À²©˜”òóÙ®“»­[?¼ø+òa_|yëôþø 8 ö€þÙÞ@µoƒB\±«¸¤So“g‹Cvf;øo“_ºÓÉ)@‚‚øÉÊ6t`.{÷_“Ï¡õ—qlK<Ö¹lKžk¨uÊÀKu­CõY…)Sv\,L˜Òm3×$—t$×'²*óÕSL™ÍU8Ý’ìjß¹£)%­ ©Â2»êÓ»)}Šýâ0RžsJT•ÈßP:¨¡ºP3)ä:DNÿÙ ày=ÜÒ xÐS J¹‚ê1ÄÃQ'œ0¶I'ò·4Ò¾Î"‰Ë˜ûKéíåíÇ^x³zˆê º‚?øõ÷^ÚZ/ðŸÃ4x·àƒRò@‡½ñýW»°¯JÎôXKRå—ÿhYÛ\›Ö¹ì-ó{–Ù“Žî1—tÜði,Éø”=¯þÔœÏå!‡æZWª±êÊÀÓPjXg\{ =[k“µFŒ@BkˆÉZ£ '³Fhª~ÇfÍBªû:p ÑxqçΨg… k‡ â8ÿ±Ù®ƒFG{Ý k¶±·½ NTÀûû©Âçʨ„seT£çÊ(#Ì•ôÙ5yá ̃™–ÁûŠøn»ÄÈŽá©CXä+*M_æ ÊÛñ&‚Á‰àDp"8œN'‚Á‰àDp"8ü)‚"ž qô hüƒ@(ˆÞgÅ¢ï3F ÒK›2"X5æ`ÌèAzaºqÐèAF~•˜¶±ƒ.á xô`oèIgýZ:Æ` dæNANú¨Á*ú1ÑÚœì÷Q‚Ì$Ô'”q‚¬EnÇò¬tI)Ç'¬‚&bN›±ê•Är‚2(ØÆ|÷ I¸â¢,¥9ú±[—-Q,ÛQl‰Äì [)»s°Íidl‹qZ!†ùvc¹Y0³È9i(ã¹y²Ð‹Æ@•qç)ÔÍC·S"^3Ö‘o—üQ)×l¢P‘1äaêQG'(f«8ÁFŒó~èL©x_´ 2^”û’"FÝP¾Œúy…‹ñ?+¦ÇŸ'Ã/ó æñˆ91žu:¹D.WÓ œ\¢TÁË‹¹z¢1 *ryQ\]$Sˆ¼B./*.~óIu¿Ãèl葞Í÷˜Ý'ëÝ7»Pâÿžs žŠs^g…·Ó¶º1·ß :Q¯ ¸1bYÉyáù+Nätej~êî9Ñ[Ûä µ _v³—uõ­­­v³ùˆÜÖ¾A-vňRùWRà´…6$AfEO¥¿£^‰ÑŒ¶cPEu'+¸'…:„g”Ž!ƒI°]’z!! î˜ BÔáb"%A}>6RÔx¡±ÌCÿ$ú­Ž%ÄIÉåÛû$+½¡dX$rKx‡dô‰ø¶—CB=‘Œv]à^á÷K’Á®‹½‘¤°ëbAÛ¸‘İëÄ *O¢®ˆ"!ÅÀ®“a‘D°¡Œ¾q$Á®C=‘‘`×áßFD‚\‡{.2d(ÜNãH‚\‡{.2ä:Üs‘‘ ×ážGä:Üs’¸®Ã=!‰ë:â›ÈHמOÇu„ç"$q\Gx.BÇuÒÀæ»HHCvOÇu„ç"%±]Gx.RÛuäÃI,C‘vWËu¤ç"%±\Gz.RËu¤çÆ•Äré¹HI,בž‹˜Ät鹈IL׌+‰áº€ç"&1\ð\Ä$†ëž‹˜Ä0””ÚË>Ž$†ëdXT$†ëž‹œr]Às‘“B† ~_íºê­EJ¢]ô\ä$ÚuAÏ3‰v]Ðs‘“h×=9‰v]ÐsQ(×=7Þ$ÊuÔ¨9)è:ÊsQ‚®£<)h(ÊNãM ºŽò\¤ ë(ÏEA ºŽò\4¤€¡(;;)à:zºŽ‚DºŽö\4$Òu´çÆDºŽö\4$Òu´ç¢!‘®kÂ~§†À¸“8„GC"\ú ‰pí¹¨HìãNb/‰GCbB†D¸ûIHì ãOBpt$#ó:“ÄL…$1KÈžc’Xnä'êð±I(Ü…"ú¥£&Ñ Q“è Q“hõ£&±Îï¢#1Ï ¤Þ@›Q§l½4©ŠRÎó@Lí’ÖiÔ„wüªU¼›ßõjzǯ^fǯ^=Æ¿zµÐšü,Œqœ@>λ'Ùž?éºdÖ»I½û š/Qº«lØäºÚŒµ¥qY—VŠ%Û¦Åûã$ƒ©ÚÆ4Y³éÔÚÇtyqâ‚ÆI˜|jíòö Ï’Ÿ¿˜±“÷wz‡¾àJ ð@°ûpöz¼ÃÀ=ìop»vtk—ÑnöÈýþ†Þ ÈãžÊN×ßömr¡)YVgúèîñú §ZotI­¿½¾ªà›gíÖgººMM•âÆÿÙ _ÏŒm;ßsW\ó— \O?l» Ïmtĺ,.¸e\q%›Ú®ø_|(Œ ËàöeÐá›?¥Û»tçSúãë??«cYûŽÅ–•›ß²”^ͨ³×§#$Ëo[âïIÎíïË\¹-¾æIÁ¬x£°J §\Pû|5ì}¾êÑ÷ùª#Þç;»¹ü`Û¦ýÕ¯›þûØÂê=}i+ç<÷ÎÙꎞ8i´´Ç:ò› <‹ͨ|¢ºˆlm®>o/°TîÛ6-¥ìåyëe'^°¾íÓa-^Ùˆ½¸ôøòœD›:&#¤fv™ˆŽ/Qðä™c¦ºœä'ž²®ì¢à»›R–ä>¶!³)W¯ªH ‚·W+5:ÞLü/U‘ °i[©6¥ºèuDEµ!lEPE‚UÁŠÅѪ3Æãöv:¾ã=ü¶ÜTi*j©JUñKfŸ¿bÌ_QËGÉ_Qhéü…A9öü•@Æ£˜JQ#†ÛÀŠ6q`Œùÿ 8ód~h^ ¡S?qð€Ré¾ì“D楠*ȺN%ç’`d]릓qƒïW3¯•„jïö lkÌó°6¤3oe€Y9· éL[) …@Œ 2—5èÔj¦Ê¼ ý#L•ÙŸ'`(uš¡r ãä”ÙÐ!AYÐ!PÌþtE±í4‚PÆhôpA †2õ*ó‚ŒçÊ¡ìxÈ(4”ÓÎçí!Agü4ȬñI ÊÈ<çiƒ34©ÌÑ È3¤2/È*áI©ÌÐ8²JrR‚24Ì4rZP†Æ!Un“28CãÊ,Fr†TfÁa„%'¥2/È)¥P™¥1r §eiLœ2©AYS §ì©,VqA #,)•9`@e–œ”ʼ '7* 2Kã XÍIAÛÙrÀNH ú 7¿ã‚( ö › ‚Bùvce€1^Ž  `ˆÆ’‚r³ yAFÕŒ0 )¨g, ¼Ýãþ@jl a9@,§ïÅ| Ǽ`,,çý€1<óƒ"Þì}^…åy«gó‚2XNÐË)òJFaEü³yäñVÀŽá““·Þu,Ÿœ¼ ˜ON^PÊ''/ȹŽA°Š¡3‘ˆÚÅÒ8PY¬÷xƒ,©:,eÔ5>¦œÆ ƒù@¶Æh «ð‚l9yÁà¸Ç–3JùÁ6”ñ\å‚ Q>mÄÈñ\à7‚oû"Âç>â½3KBdÔ1 Íì.Ú 8aw")1Brïè-&~RÆé$ÈipƒõJ¹7ÿ† À7‘¡|s–ŒoÒaìÿb½<Ï\Àó:”NœCÌóÓ¡k¥¡¾È ¦Ê•©å* *àk  ¸ j®N‰(4º¤jpg’’ÜxCáë äÖ$œö:¨ÐÞ$eÂ'À–¯¶w:σó²Šs`w¾×é-¯p÷¸}ùÞ‡E?þ¼ó&R¾9¯Õƒn–:oVØ¥w´Ã²ž“wŒȶÞôTvž÷÷H¼¨xÀ[‰Í¾Ù>ì­ðl®þFcóìÚµËÑ`óÞìußìÜ=³»Û[^â½épÚ†½»ÄÞ].þ¿ÛævJÜÝ=ç¼N´s·ñ¦ÓíÃ2€6`)¨LœjÄñ‹Ó ¸Òoï>³§pÕ½OyIhY@ / 0¥Ô„Ûã©æ©&ª‡Wër>)ü¦ ®ÕɃHJ¹V'[åX%´TwÜUXXfH ÇÒÅOú½5òÑ § £’žÏ•jžÅ¢SP†Ó—¼äJ™tä’—<ì.càŠWIsjsÞݬ¸%òîÄüÔŠKÅ-J1š¾{ê"òÏ´7¦·8úóÓo執'? nƒ¢(>ö€'°÷Ôw€Ö¿–Úm×$ï½Ú?¼}zù³g3òRò²ßÜCî ŽmYmøWäo¯Mxšd ­V„šg‚‘Ë‹JÄ@¹Ñp£AGÂð4KxÑ  ;Í Yñæ×ë÷€{M¦d'42»-Ù6‘ü·+ÓÉ;‰ÿÜ-@Zä:»`¾¿¬¼H¢Ìzük£ðüª 3}(Ãug ÏôÁ³^¯ÂŸ7( B\š à<ŶɕÙð¥¶m¾Ër§þÁüŒ:`‰ó˜óM§*Ø®}B Ö¸¥x&Ͻ$䈚ž›Õ'5(ø †˜› ak€«OKšWÔHãÉ'Û+QºÛ{m5Ýw­]¥¬¾Œ=RêÛß”ruF¾ô¼8ÜøP‰ã%þUÀ¾Zx‚Q*yܧ@´Ôi›ÖfÕÆ6jNÜ~·Ô+Û%µ‹ŽÿýÝ®•à}—}ðì,Ðòþë\E%þèýþ2,k¸fä‡Sæò{Ùy’]Þä ÝoGÍ^©³³²Ó…õtz]í~àòåÈ‹œƒkð#K'à/û ¸»)]èääy»¨¦Î4½üÂ$™¤h ⎹tû#òî%¤¨Õ¡ëtª3(1­¶Xlãv»–AÈÕ„:3=“ZÛÕN ê‹aΨØ*‰$m‡2ík\m‰™êVŒ–Ô“HLrï·÷&¡Eó}¹œÙ=O9iî…sòÞ÷{Þç}Þ÷ý>Erؼ#ìJ|IKº’·:§Ž‚„/%’çÉ3âyr’ç-O¯¨Ò5 c—ç \iþö-72Ç:|ü' =mãÁC5ZmÁᆠ¸¦W6*/‹È•¸ƒ(‘Ir NäÝæãòô>&¿˜Ù?Ô:`¶lpFwnEžÏ¢€¥]˜(R2µ¦”©íP¦œ‘ÊP°~à|9&5?i³.,d‡ŒØÇª§Þ…\>¯šÐ¢wkšÈ6ʆóJ­³a—Z6ìÊqgr4/YólØÐÒ|—²ÀTwl‰¬„CZÒñí 5á¼5xèÂu«Ð™ 0“(š·Ùá¡€ÄËi¦`+,Ûšž®1Å[$lAÐŽJË(g¯û„×#Ó5¥tFéšu®ÑWi.ü³v¥­^œJˆÐýj¢ñ?<#³ŠçÀ¡I«kl¯ã–rµb–{¢¨¡€œ1}]3±<CŒaŠõŠä#•%£-QS,1þ ‘bŒbfb ô²öm{ž§ªà·YßcçÕ˜–äË¿ÌS;x!åÄuµ~â¢ßãpMFÀEà¡(7¸(N“Éi„2Lÿð¹)$…>@”‚€ÝÚÜæp`°T›)ì z‹5éCRkÓ‹Í%ã•ûå‹QÏG Iwî ‘Lgy(!À}ǺP1ýH LN˜¤˜ljYȤ)y<}rà x¼ µ*R¦”aïK;éüQ;Äêh]URï.fˤ‘Sï®$g´qjì*c ŽJÈEåГu¤â)ª/§\Ôõ­ê>$ø°\iþNré\ký\K¶˜>ñ6[BÆÁþ¨•rúÐ ê¡§þ?ð6Å*¿ Ðç2ìô‘9û ¨¡Þõ¶šú¸^úv@QÛ5³•±ëô]­{¨¥s °¢ QŒ~¨+©±_ ì¡ÿ¤z?pŸ(pdpwZÀ(¨An›¥dHEdŒÎŸULð¨L & Q GˆVMÓ¦ï)¸œA“ÏL“£)¸5³Ù2”§¹´Óû“%ü%;ÖDll̨ó+m§šÂc:üíŠÝnvÇW%>p¯õ¯™|œ8ìxÄ@^¼®8î?¯Ûruv›Ù$è2TÝ”"TJ«ÁH’B3š’+¥3£äÿ‡ÁnYp°ì®ìí‚yuyušÓàÎË|æ‘,nÿy—*5 W0…[l“½d&9Œ.?¨_±”Êr$3JéPÚ×}š>råyúÀ… ßÛ¡à ðz»g˜?4‡[±pÈuUéÑ8ì{n‰´+#ð:èÙі¸˜EýÇ9~{\«y…ØÜÛÊ] p/gUí½–\îœÝfSaŽ”±U©#€¢ŒÉ®ÉFc(óI$²)—ÈRÓGê†ñGê>¤Þ“Cy)í¦ÂÆßÝݰ¹5íªß¿¾¥~é+Ê®×c¥#¹<²׿­°ìº·¿£~Ñ^³ú¼¸»ã·þY¹2~'‹SÀ.0¦’Ý«ع„ U uÆÄt&S~¡‚4í‹“Øb)&ŸŠÑò)}D¿ŒÄâ1.9*F0'“"9o^/¶!dèø§^ªÜ„ÿð™k£„f{ð[‘P‹}ïÅîÈŸ´ÖÏbg‘ ‰CRØ$jJÌMŒ¡øIlˆ™ž G€¼iÒƒ¨¹ÔÄiHþÖ·gÍšûs.0}SY"rÝœûfㆨèâ-’ £j=ÏC&îÓ_8ýŽ:û[½Á«ÅËŸý…qãöˆgëºáCžA¢E9„”Oß“©QžÅË™øf9 Å!"‚ SÒœQCñ_L\HFñ_d‡(WÜ›ŸV(xx1ÖŠbc‚ þoõ:2¤t<ÙÉ-çqxn‰&Cø„¿Œ“&Šó^6;×€r`¢—OÎ}¡–‡(¾Èi©5ï«C5}!àžìäˆ&ë ¡¶u e¼ÊâXw:Ð0SžÆ•Lt¯<5‘W2¡T9„ÈCÂ@qYRo-cÇ.À» ¨Ëÿx{Ák¬5TØ4Ü`2rs Qõ‘Zr°‚àÐ<3ÐácŽ8}8qˆnàÞwXVÇõÒˆ›°Eܼø5‡«¾\/¡îÿ ÷¹&míä!wtqi„CýNà þ—ˆ!¸apSÿEÑ—r>.e4pj>.g å>~Gbü ”ÚGTSX•ºyD5³æòéîNkþÖU!⛆›†Ÿåº–ä_ûªÍUz Âá )j£OP¦^¤8£¥D)a°–jµÕgBuš÷/ÀÜáÉÞ ½,“û]!W­÷\ô>…“z )'½a±GÀá·öÁâÕÎÒO6éÃÞÿóª'Þèú ™Åéwª°ËDXãÁ3ÅgZÒñ¢íÝÕ$HF1ÑH ú I¿¬çÇD&Æ VJdêZwŽUÈNÊÊpÊÓ³FÒe Äþ~í)L¿ÂÞY;þuF»87ÈSµ¶†£šC}&lÃ2’ûT>Ó\Ws×¼¾Jßa*ê7ú ª¾Í6üõ‡7ãün®Ú.зºÆ¦¦•ÀìãS'ÕÒËÖ¼`}kp»ÛyQË«peû?êÎreåñÞ7šþÚÅý:äižqˆB? Ó╈a,ªsPt,A’Ä ©sˆå3Ó9ÄÈtöLuÚ~@VÕ/Ëwqîflµ{P=úö`°q­!œmÔ<­èhi\ã­:GöøÎª×ôE¼E"ÎöA½g¹Ò}°¥"WDßYë;Uöò£…‚¦Í^Ö«/å°xK¶(Ñu§ø7MÁ ˜==]a÷¸‚=ÕÚ°åX* ›ÑÓ‘Yr÷˼Jx›g,ÌÓ³+íOWìÌ0˜þö^Ï—¹6­¨î^øilBç"äAó¬–f+N'ÆîaU¢ŠŸk|wkŒ¤R¦L”¨Ö¾ÿMðí:ð2ëSÖÉF 7òÙ×~zŽÏ¾š¹3µdÂÆ:øœþgá–ª¦l2ÖÖN0ˆãá #¶ñòŒ_^5œYF®à×K7*²©OÄ5®ö¦ ÀL‚V¼ííî2 ¤a+Î=Nÿ,žè¢¸ç ê$(îÙݳ!Ÿ|w6§ð0õo¤"—†½p‹ÎßIèI“¯EªûÏQ¶ì ÝDwnyõûAm¨I»Ÿì÷kŒY9]‚  K’šó+˜8¿DÂÈ-/Á/ =)«b]È yS%…;·ŒvncÓ’ áÛ7ŸŸs6÷œ›Ñ?Éw;?êá!e$lÁÆá©Ìº SÅÏ}ˆÓ´XRM¬éìRÅXb#³Ë“õ…ió°+àz{ÇiÕ£çת3ŸëìñªÙÊÑhÅß8Ò’„Ø(fŒ®ñQ cöÆüê udõü3³†Uïæø²uénÍÖu=<ëovŒìÅò ¯iþhvs–[ván µiA˜‚½Iž×Ö¹y‡\뿱»2-ì…_ûu: þ†¬"K$©ypS)‘Àö Hæ±”qU’„Ñb7Òè*ÉŒŒ®BõÀu÷Tñ`íÀ­#å‚Pe{éc¹óØÐUL¿ß™=X,šoÕG ÇŒúZº4PÓÌôBÂ.'>åoj7¸uÜj¢3™†ž#@×k93vÔÉy¡ÄM¿u mW³¸Ø1)Öø4;Å/èAvÒÄõ©«Ÿ©¸/×Ü ›Éö–`Jebñ*ãÏ0fu˜~MýU̪+ªèßõAæ,Šõ”=Ë-6#îí5ÖÏô}vܸ“6ºÎ¼xjÝbá2ÒŒßÑÛÌ l&eP9O “9`µaÕ.$D'b뙘è¤b$3è}g «T¹´òƒîÅ…cöޝ|$ß$h¿USÉ•vø9yÜpþ˜ÕÜ>P ²›ˆ¦Yã¿f•ý]ȹ± ,z¬ d]ò L\9<:¿Šggaú~ÎxKsivÓµìÍÖ§Ævóƒº^k¥“¤© ¹ŠÙ+!„\œ,$‰i˜ðJiÊ£‹Ì!Eïëþãm9ûùY IåÝOW=7äo¶òȪæçá|—aÞdd2Â#±Ð±f`s»{½¥œšÍÖÿZãl7šGÞV¢Ñj¨ ñ®©™Ø‚õÝcû¯0wÔö+U^Zù0üü/úïîp;F݃÷>‘=g°ŠoZñÛVó…gô®`Sͤ­kØ7?§EO`í@Wg-ȇÉÀž/^µXP/ú®Ðµ¨ƒСD ÑdTÎ,1FåÚÔ:üÆyE, Ë –ÓÄBÎ8Ø$G‘æî][¥¯šPY`ÿçê°‡¨È¥hnØSó¾šâpv“¯¾•º »Æ)¦GO<ØD}ÙŸ¦ ¥`¿RHÔ„´øHUtCcü«&úc­hRuõ3Ê™{¯³ýïˆ.çÕ´>+ö¯mÊä..œG%î5/ø¨›X.Ï'_ƒÛ™¼›•B°ºL âäB.\ÿW¯ã¨ ¶¾$ÿÒÇ:ãp=²…„€S/f †D?erð¢n+›Â‰DÏC¬ œú<Ùn4PÈ™'Y@é@ÑÞœŒM‡w, ‡„0˜Nïå›mŸ\äè,Çnõœ]‘­BPYrl†•v(3ÊÊn‘Ð:n!+Ÿ‘[Èýžâîší*”žÊèïÿ7¶eáÊQ'Mä ÒQwìWgw[Vo±½oI»üà‰’ìú’\ãi¿®—¾<#M#xºC¿”ÂvˆôôëuÛÏ}¼ÙÔYê8]ƨ;@Nn“(`qZ:…¤ÒÔH*’JHzóù‚Ê8Hz‘’})x€®¹_~üTcM€zÓÀ38‘õ ìܵòdñrÊÓà(KírÙŒ\CŽªév÷w)šMâß}2Ÿ“ÕU9–£ó›|–(¼’Êsà %Áw.úûvhi=«‰ÖïÇŽ¯÷qq±>Ÿ®õè™KC[ŸæpY>B‹}²Ô¥“P.‘Aä,4(Š»E‰ ¡Ì4ˆ «¡@cËYyôí»éEâå¡ç ]·;«'ε՞×LÕ¬üuÛgíÕSø$-ƒ4ŽÒ…áDú*þÁý!£ ±²0³û#«ÂÝ]]²á z³Œ Ä_ÛX¹óD!Ï_Ó“×Rgï ÌóÂ4‹ŽÔ½ÅÛ6ÔòJ_ÿ±J†¶åßh0›tÅÁºÆ†ÊO­-1ž.͸Թ/0»±öªr¨yáßawaz³šGFºìGµ<*}Î:Šõ;‡ë‘½+ÈvƒHÙRQŽIÊ‘¨ÇĤÄ#$±ù4æ £?÷Ýw´—ݵµÈ=%°Ýú$Uõÿ÷ñ–Èü¯qNgùûýFnE'Q裋ÔaŠêiþSÂÿ÷¯±ØMà |„/ª0‹°iì虋Õ!7;ú ­) !uÌX¼“|?`?Ma –\:eJiÊ„N.QB'G©Ó]WÒÞÊü¹ñ÷­Í&§ŠÍç4­W:{þ{ÇÉfõSà÷PAÃ}Äk¾«MëŽWhÝÂÛ\ºµHÙA@Ržìö ,›„ò”@È\BŽ~ÙUUÙ9,xwËÿÚ,¾Ù.дy%…|MßÚõM$ݲ†ä¯}hûÎú2EÝ…sV#+ {‰Ú¯G}¹#ˆ;O¬ Ö®'¥ •Šq¡K„Ц»î^×zƒúòÙ"ôƒLoÀÚ1c¹]ù!Yе¢"“%%3@%KïÉxÇ*ý&§lá¨a~qÛ+!=Þñä—v¬ô‡ à­ÔDàê(K›2=±´é15•6ñÉÜ«'gƒOØö3dÐQ“yJý÷e&t—…6?0jáÑx¨±²));ÁBcL-‹‘± X†¬¢ Áö )z.Cò­H^9á2xH׋»‡g]ÕÐÒæÙ¾½±¥mÀCïŠáÙÞ2áà;.FÕ“ea|œÊ9nÛ­{·ÁàV7qø¸Fç{¡Ø”½Õyý)z3Þô{Ãð¼œP!UÓ0(­LcÞ €3o£ªˆbÞEÁëOA®®ýoÔ ËŸñwèÜ”NβiÉy¬x S¤cÉ9sñ™œ8IQrØø¯‹:u Òª¾©Ôùkœú.'Œ“"ZýŸßXè³~6Š­¯¨4ÏÍZqî‘4]º»š]òdÆœeé¿»:÷Í+ÿôEõ¡öM-y¢DKù_mŸ$¶9ýN¯iÖyÿ°ì’³y®j!º:›êŸ¾Ö5>ÈÀ¼T UúSvU0ØU13»¦Ø`áå ö¥ýÎê­÷qøK¼;üF–¨¦gL°ÒÇ_®ìñf{çZœ.ß0¿/á?ƒx¬Y XŽ;¿v3~áFïÑœ±Ü¼Í/ô^ðZØÅÖ9YfÓì“cUÕ Ñ ²À«Ž©T›Œ‡È!z<9¾êÓÉŠøÇðÙdót(²Èn,䃛¬ŒiÔ‰×È ÓöØ›I˜ôÁínÐföî¶§èC€ îßÑÇlˆª Ý`‡â ‡KLz"ªð±væú0ºÝ¦çqíýÿÉ †–Î:–W,­\q\;N¥0á“–² ‡nÕÀVívrœZN{ɲ“Ÿ,­z¶>?üÜ£m·¢b’$hR“™£ ‚WK³7¯¤o]W²4­ ™îÀøU0q]>ÎòÔà,Ÿ8Ë‘sž¬ßß…ÏÃÖgn.–q½DhCtÞä­ÿaîz šºòt[ä_“ÔV¶jëÚ©J$@«´Ûj‘ÁvZµZ lm«¦,´; „W$ÝÙmE騵=­Žn’™SŠ]„7IÆ­vj׊% VžQÚ#Í+KHHòÞÝ÷ò§†r//gæœîƧç˜h÷ßïþ~ßý¾ïÓwS40‹Íb»Dî?¸bƒ‚×t>OŒž/Ôlîƒea¼ YNp=åÌÚQ>¹5wG¡ÔÖLzÜ"h©‡Þ¾M«¶ôDëÇUÖ‡û]E§TÕëåªòXE>5qïhݶêáQoîüžòÆ!S=Izdõ¯ê+04+"̇…dUÊ ¢JþB*e†‡*!¶¾½ãÓqú±„¸ªÇ®kÔ&¢Q½ã«UsÌ¢'FÒ¯*X)—÷6I»a pᘫÔ;²@-E­Ô¼ùÿ£ñÄg˜ùÔuMÍäšz p“û;îY&›?°óµW«þq!!©¿K‡9 „dqB0Ñ>$ä°5–Ÿ]ÆN"ñíÄZd‰ÃJÌe¨:ýÎSlÕ!ÛœB÷‹À’VÓÊ¥ò͹©ª,£¼«ž" Nзäg³bÀ¢Ûôª±{[TƒigíÒ}²ý‹~h¸a¾»põÚ5èR¢Ò—Hg®$vb±r±ì¹X¶5³ØÍ>›ssBËÅòÛ2kÕ§Œ‰wE˜ÌÆ»¢„yõ½q*¯ØJ?¤e!Ø%ÝŠ¦Á[âîÒÊvÍš—N§+:uÛvÄ/‰X™–uu7…©Dñ@JmþxÞPŸðÄ¥òFO¸•™‘[ýý5„UêÏíÕ$äß%T.‹û0Çe%K¶%¤¸Ô‘ÈìbI0 ÷æÌ¾aZ~2ÄÌ­Y Œ ˆ—‘§O½Ìp¢ÔË)¯SÒ8]Ò¾;?ÍÛ¯.Äf­vÌÇ•öïjÿòQ×ev”-¹ä4ÿ`Ø)¾dÔ4—˜xï¬ç™ZžJmàëdw S*ˆx&ÉðÑü-À&Až!úØ$ÜgˆH6‰îùY$h'-Té$Ú'ãy˜÷ÂGwVS€ÚÒ«ßÅPOhªqUãªÍ}ïM×FÜã±wNâž›Uë´™m˜ÝÌ»xUÛTåù:S4˜ŸÞÜ ž%ƒ‚y@8r¬…ÈO o$þáC|¸ñ¿ú>zÜIуÅÀ°³J|ÉE5%gBæ<³P 㜬$˜Áÿ£Úª¼·ä£Y}£Q¤¾ìÙj:ànÞ%—1ÖŽç–^0 ûXÞzkç@Ñ[™%pQÑ ŒùbˆW»$¹EU­ßöOêÓx¯jñê]ÄÏ „¸ÝCÀÖPhHf÷—³ÿ|Ëýà/ôêçbZ {îö QT a”'©摬1Nf} ƒíµV `ýîâDÞǽñ™ƒÅL‚êòŠÏ4ÊCKlM.Ð²á º+fß129kGƒgåÀáÐ åIJ! ÓhŽœåwõƒ‹JƒµKº?ùÐ?è¹(»ëep;ý¡v½ß×g yHyŒ„"À·`ÍI‡÷M¹ µ9¼ ¤œbNÀoÚRŸÕŒLb5“ín5“ý×:Í Å\vÜMý%‡s êC7(îŸ`ö•—#æü.E='­ "©Ÿ–.r.=ˆ*–.úÒê…ÓÿH gFxN7çþ#Øø®¸Ë‚%ºý‡!ºô@®$ôZú™{çè ï:ñ±g²f9~ƒÉϧõ8’¦­.æ,X¯VÕM}ò/¾¸!ñ$rQÎKd39~ä7G<;œõC§G˜‡(ZóŒ†ÅEàü¿'šK¶ólêÈNÍÂD²túì¡FÁß,£Ú䣀‡]ÄX*W‘›`1¥ÀŸëå€ì¢Ø[”.¦ŽÀmö}ElëOÕS6¬ù”¥Î™ˆ p52ÝÜVÜ‚•´Íº9œ~Ó9ƒ9Ä6`Z ä æ0]}h0焲8tõÙÜ_0{,ÏánDXÃL|³/eMž’$¿É·& Iúò¥…qU)Õ˜¾º©<@ªÉ÷ûLZË” et8‘5žÏ;óSÞŽÔ6nh.™ˆWmj\ø¶½àŠÅ^°N{¼ª¼£õîÑâC»­´üw©¹mKëøiGTåÞ’|þg[™:¡¨-t/¨R¦Éº.XJ±+”µì8T¶Éö;>‰ÛºóõnÁ2Ùþd^iÃfqi¤qo„97ߤ ¾ˆ _"þ¿…UN’Ú ØÙý¼ë÷™‡Kžx¤>yd•ÌÐJ÷>[z¬çÕÈs/~Ý¿¦ä‹†ÆŠ‚üŠ-‘GSd›bn.:}Ò£ ×›w0ðœ´Èª¤ÉºGå¤Èí¢s/lDž/H`&k|¦“ñÉ€ÓW@¤C„ÑR6ÜË8sK)Rívpƒh˜wÂ$,Š‘7TÏ€cô•hK(ÛŒÞðŒb|®ù¯Ï÷wç 2I Vlt‚sVpœ³8Æ9+¼qFÊÌòóæ‘õ×Ô¦èà‰5ÕKçT›G'ÞÉ_&`à3;ûÇÖ}äÓë 0óNì“ùc5ÛÔ1Ë3hÞªÐð¢ò/fÌÒh˜Ï< 7¹DAFVF 7ð²83$!ëÓ÷÷­ßB>]S¸}Ù¹¬úÆžH`9nÅù¯PÆãŽÁç1“í½?W<“¢.+…—Ûêí$…§Æ²ÖˆÀSˆ ‡{^˜’nkB¥1ˆ¥ jf‡<¨]ÈäÐ.d†§]@]2²D÷FH>–·Ž¿àbU¾UþÕåMºÇÄ÷ÖGM¸« L6²¿™IWÆïÁ1ð?y;ì”…îvzŠïû'Üúñ' Å–—Ÿjkëf¥’4–˜ÌHy Ì,BªdF=È0 °©£žÞ¨£Z}²%ñ_cÁ”t­´ùÝß:þÉËÉR¦“8iÓÄïûöz¼ãÂ|R oÄ`þ¬Õ{ìpþ£YZ £™Ï¬Ž³f(| ä¾pŸ!‹[$"¼»–_«~Í•GæŽÒó.çU¼UÒÛ»àbž[™W=W§ž ÷Õ> *>’»7gÕFºõØûnÕyXsq`âÕÝî#¥F0ÒB=M“ÝeiWé§0×ÊL“¿ÞflŒ›L°( Í~zÑe%Ó­åm‰f^ê»{f‰ 'ñÌU‘ÃR/}åƒ(,ÑG½àÆ‘Ô ¶¯@*™2‘çˆÉMSÓ¿z›¬§ÝQ®Â Jn:‚,hÓãk'ÿuüyéØ þžâ‡;â3 Ì<Àß+ îï–OIó‘\m ÄèA’±óÅÖÜ`û~ëÙà~ëaœ£h8G[£ëvõÑ¢êÚKu"BCÐ 5Å}7j†;=Nà]Ål`Êܸ֚>Ì_»Á׸Û×Å7ÑnƼ«''ð:üÌ·çVÿ°ó*}jØR8K/À®ÄóuƒÑ1&ÐÚÆœð´¨8qD7•'Ù]õAjï¿Üµ"fÑå'iÑ ÖH‡AôӯŖ&´äK‘ÛÌâ¬Ã:5X¡—…È`î“ãe!¿«Y%t¿i:‰B€%¶Ù\ð)Kó˜¹ÖgÆÅŸq­ë>ÐùÕçnšÙ)n•ð+¾2&îÅìߺ£/õ9n‚Ñ:‘ÞEXÙm§¤ó豦+žm”ætiÓ?ýƒ]û—%§Å8iQ/d‚Í;Šô€FÚªI Ö !0: $Içªa¹€xI:‡Ã§„ P”@|@¦W )¹bLk×i€b‹1ËÆup(E„þ™œÝsŠ˜ÖÎnà0^Èä\R㘠3ËW.JBÊEß’‚¤¾j‘{I!«Å?˜^8ÿ‘ù9þÄÌðø…žÇÔÐJ&‡Jmýx‚x”J%º†X&Àî›[ž13–¦ÀoòƒÆÜ®ˆ<ꡈ—éµý‚³›KÔ<ÁF@­6ƒ±ã€êp€¦+zk˨¤š@çͦNP ݯt:‡ØßgÒ<»^8„U>à१ô`Ð+Æ™ÿŠÌ(!îÓg‚/z(@®œËfÉNì̽­ôñ„åúÃ'õaýëÿJ­Ï’#¿m/]ö É¶­bÿ-d§¥ÃУt;Ü<óX— ·‚™7ÇC應ÅLúᘠ³;­væÁ´öžI‘½k(‰¨#ÍvÁÐ,S vqÈÌ”‰ Ì*É ].¾=¦Ž—†§ŽG“Vv¸ŠX°s¼;u<õZëŽÔß|Ïã…O›4<²´”½=µAX“#7E7Ì]öõ¡ ƒm.on“f”ôg³yG"ò[qR€ ü¼ò DMMt¯¨wr2™²U*¡¥˜á$¬§€Ö7ÐàGw vPJàM³½ lq¸nžÛÂë?àÐu^²µ­¨W· W)w çØ*Ò97ˆqÁôoàÜ÷!Úè8Jf2ÕP4Yx4¤6QègªÕ/—²á_n7˜–ÜùD€[ämØ3á)¢À$Mi­Ÿt¥~(3m.[±v:Î`:÷ÒQd„¹L;MãÜ.a&³“¸( ‘XDzxXª ËWESMÍ)š­½ç¥ BgæIæÌ¹!ñeÖìfq;µöó0~«4$x TYÁ|,pÅ+2ee„€²P¸¿>°ÌýWR55ëÓPÎú×õ|Ä9ÝŤзÇÖ®r—F ö e¾%ר»'Í¥Önå¾9uüõV?®t{ÆšÔß  ˆé@:dí1ãþS«ä|ðY%pÏn«„Íþ&~Kn=Ë2‚&uèÑ…mq°CöÌtVÚ{›™…°ûõq ÃÐù¢"#RÜèÛ¯}ÉÂ=-Îhæ¹jE*ôÔ…¹@®)õ»HBÝ æÒðÎËQn÷ç·ŽïŠÓ,2X0É^ ,d¯(cž!à•¬Üéñ=8: (@bÍ_>ˆd:I æ°zÉ/¬™ÆUD›ˆÃ3/@q?” ¢Í F¬žxU;H4 hÂnW<¤7× \•§+EPN{ó…Š54°ï ´ô³Z¦ÕΡïV ì4AÒö!›6c¦'¾Y&kàOudOÖ7iâJгfk +‹3‚§¨ž0 φ…Àg Ó|¾qOcò; +—ßLš¤(G)Ê)‚iúÌÅ3ìÍKuÀI3ˆ--À߈>á8Æ”:f~]%½ÈÄfv³Åbêšà‰ChB}fFXCŸ‰'v*eCÕkÂ"í5¢dÈnïR]œŸÕ5VÖ?h¿fnÒ$쉚E“&™dCgþŒ“5dósÂk>ª¾ùP–HÄÈí€ÚÀ ‡öY­à•{ʪ“½Ž2ÛëîÃߣ¯Ê„sJLÏ¿:µ0!ψÞp Ž 3‹XIÎŒrdk¥á™” OÈ×ÿÙ(oàÇ­\ü]¢¼§´}$żΛÕÕGßû6eµQR´È)gA%íL½ úæàÞGFÐV+ðæ^øÐU¬Zûäaâ“xLБYaºA^æ}‰žô°D boíÓ2ù׸ÿ; ‚eˆÃòiÍ@2³‹´®ü‘­& …cT/{Óû\Ò ìü\j³¸™_"+8sʃ9q¬¨À$A‹º¬6¼lÅJ©:’E§ïé0 ØùK‘É>ÌI"3ä¬f!ö Pî³\dÁå"ãX.²ð– ò~ß w|fLTo_ü]òBáÚU”«èdy¬˜¦o”×9­tåÁqÂJµ<ëµrª]@¥5÷ÓƒÛp/.|°a›°Ù»?aŒOÇT£«[¹'6¾é—5}Ҧݖ±mýz£8Æ6ö€é\5;´^”ÎÜTÍpq;ô^7§qfÀ—7Žøoõ?}!ŽR¶;~ˆ7y/>ã0BÕhÔ0Y¢"ŒaÜŒ„Â¥þ®öŒ),]äoɃ ¥OÔpôþ[8ëI çö¤…ñyR©©V+›q~ã-™û4Ý`ª=ëñp—4ŒQváYc®Þ•†^³¦}M˜B³Ûn›¼­—5[ºB¾ï¿ YÎ6ÞrJ/2âØ`RDbVs!ŽÃ•«ò3!žWmL~ë™NþÚƒi¿0K{P¶€™Ñ«ÇÖCÁÜë¡ ¾õ U^´N>’v!3»§xW¦Õ ( fœ 4žE‹”"UØ¢Äe˜ôÊGð…ÐnáŠa-¯äukœ]ùëÿå|ŽÕd8s4¹? ‹±a »§ß™ðÿ#ÁUO¸<øéÒôþRé˜ý¸×Yj« šéßjteÊ-umËö9´b˜x¶ˆ]Ï:©±PÒ›âòæ.J›xµìàŽÂÓ-ΖÛö›ÎþõÐTŠ6ÜL&ªßʃ3˜½˜Ây5~•Nb òäÃáÛ¶j†ô‹‡2÷å¥É÷[’"¿’Ë›·¦¯& ž·¼YË͉L*ï3Éœœ'ìV#O„ºìlùɶ§N·”W+7Nv­×–­xß&/#ðhÖºòK;ioÍwléòó‰ [sœXÙùœ‡{­æÒa.ð£ëHç_ ùÃæva¯‹:KHbùÌqN²ÄtÒ 4 ÀÆX,\Yqì&äS1cgéQ£Bë}Û¥Ü÷íãºÆ{WH=6¢ãU;#ØŽ Gsç ?ã“+uT0ï3WJÿNTî~5aÊ–ç26—ï¶VOî¥@øç†qú›—°;q§I‹à‚9ªškåxõ•(ØMÉúÝa!s;VRÈÀ,œ»Ÿv Ë‹Ñ@â¡,Á…Ó5±g¸š€‹‰S$MÕÊ z ó6!¾@Q-6”wtGŽ•ŒÌaLOãÇnZ<âÍÞõ—'ëã'K7ݿҟoJŽ\$1Š£o QÉÇ‹7Ÿ~Á&PM±~®#›}ê>5M·žã97ã[9©®)†L7lÿHº,„@Û¡BMmκÙÞ¿¬N²Ð§¯Ð'±m¯,ùP›ˆ iùÙ›Ò]‡FõP?Іõ׌|Çÿ§v×Ö m[”•¶ká7½Z£…°¥žðV«]í£Õ¨üÑ"!Auyû¸Õ¥dÇÉÌÞ:8°œsÓDµK·°¸3@ véñ¡¼_ÏÿIÂ\ÊuÂOT³£"œ(æ¤#œÜø"IÂk˧ëSî”ì†ÏûÂ/æ€YX ãY@“°4`QŒ´7ãSí¦§ˆþZê‰æüE±:¿ì¿þÖ!ø ÕÉî¢p…iÎ…8²ßîw¨Gµv—ÒÓ°ï” › (Q*{t×™î´g¤JQˆ¬/^ÀÚÊ’?Š«(é`9Ήs£gå±¢BVÍGŸ­}î%WMñÊk µ%£"ŨáÇ !Á°¢ýl€ƒ;l¯òAØ¥1§îKµïÈ{1`î¾~­dIEID é,Ìý®‘’—bJÚ¼Ÿù,–XyëÚ6ëç2Kó/ÊqÃ1+¸ÇÂ'¼Ä1ÌMáœøŒ»iñÕ÷¾×ÀD‹…ÅRÒÅÝQPR aܬ'ÑÅÚ"¥Ztú¸ZtRÀûƒšDõÍ´¾,Bª\rõŒ ¢µûÒìüaXÞB‡µÒzlñ~ Öåè.˜ˆ5½KbZuÚ¸0­:©ªÍÑ×®øë¡ÓvoGvØ —nRœ\¹³6û0ìæib³A‘E<ˆÍ­pvcìΔŒ«fpk—«$ik¯Ý ûPÖˆ5þ)!ç…º'¯Ê<Ùv{I¯Ä©¬,<Ýh·Ï·kÈÔ*sDîRÁããß;oŒ:7¡jö3KÝt,KxVØ ¹j Aéᎃ§*Ëɨ¤ÿÁ–S™cÇù;mµÎÚ2§,庯]“ÊÕ䊣ÒÃ5t(h&"Ç=ÌjƒcUÉde]|­ë¤[!–ÝÖÙ,dŸ¦º ÿZöÞå?8®1‚• Paû€8ÞÁ¶@-DX€ã¶îZÈdi8h!WµE€^²nÁ£wÐ6‹·ã‚Éö‚[5N|³Û·`ç ¥‡Æ½†Ô¶Í{—ýÝtXÿÉ5Õ%]²¥¦Ú9äó(¾&¢qäÇ m’µÜøÜ¿d_éQ ü¯Buímß‘ùÂI°wdavbÔÈ“V’!0¨Hö$KÓÓt,›¤[9Ê –1¨ÆÜ~>{ùÙ8 Ð/\ëà\0ÎX6DªÆÃÓ2ã„ô¼®‰p$ös]Ô4Å*,¹Ú´5fdåÂOÿa]ùëÜuªÄìçþ´°ÿ3@2°æCyC³ƒžÆa˜ÌTåôˆ7×d¦±Lœ}v.¨ ‰)»±Ñ*ù’|Ù‚øø²õU·¸{ÁÓ¦»Œr_/Œôš<ÍxdÊ«‘ŸeÌrWÓðm=_ðñY!5îR»„°yÔ¨¢pë ‡§Ôá¢!¾Åòñ¿‡è¡ú9\Eܳ¯ˆ'“œ s‘;t…ød×+Zño«uzÜ“V¾èš9V6Jp„,à\1aÚšftìvÉcïk2k!4ZŒu»Lá%Ï\¾³áí^UÝaÎl2rÅxÄ °äâ•ä\ì‰{÷a–ðÌ{ú£×²>§,­Ì•Q:³C|.i‰<c•+fЋºï %™)ÿÇÜùG5qå ¼­ˆ´‚Õ …§A÷}çÉd ­"îëK±k÷ÕŠ²Úö)ÚØˆ’‘ŸñÙÝÕ=öÔ®í)ÑZ±þ€h‹¸ avßÒžnËÊ–Pð1¤¥[)êŒ.ÉÄLfî›™@‹r/ÉÙ?x/ç’I‡ïÜ{¿÷ûýÞï÷ó C„$/zÑÖ××ÀÉ%›·¢y©´¼E ©«ú>Òríê<.6†ñ2ý·vĸ3ü;Ò ¡)åXÆîÛš_E&SM•"ruí”ŽÇ XMXøÔ!éìö}åqKâ–ΨQºçN/ªú `àÝKÖº'låé¬Áâq çùð NV¨=à­£iÞ…_Í lÞ³ü©¦¶JÊÑN*ÏD8\›Ú¶Dš¹”¹9Ñ_ÖÊqnõ¸87jÜ5á±rÐYˆ Q‡q!oûÁŽOä….eIp6nTèT]+i –p‹w@~)´ÓÒZÙ&ï± .Àx@oçÍÑÁ`ÔMH;{¢Ø(æ&<æZìèÄûæW{xkÞö–7Aã—é2ãÅgÃR¯ Â(Ð‹ÂÆ‹bûVàçq©çcðwt¬i¬‘Nù¥ïƒúšï ÿ^g|^Ó…´¢1S7Qécêñô1Ô}ІwPË>ˆJêx+ù¯£ð¾QÚÕ;Òû«Æö°[öÒK‡ÔÙ©ãÅ ù@¼3/¬[Œ§œ¨Ez@Œ¹©…27Ç6õÑC ¤¬YáÉŠ:³•õɸÏGeèõ7  0QQ:!ï9tãkfL4Ò¦nFû¯È¶/n§÷?{ó‘¸ÿ®³FëqÑ ‘\qQ‡³>«RÊBøÑb3Šs8.ÐhäÓŠ¡R¿/ÙyæÍçkîË{æ˜]è…ÿÁ6s,Ì9z ƒ]>„ -:òæü›7‹NV͆åèã‹Õñƒh<`BÂsÚ Ñ9äÞ¤ ooBç.æÚU|äãÊêØÝìûÕ²¢{”Yå ‡üf`“õœ·òϾµÃúפåf¼˜snIí«å‹«ÞiWL¿ô× Å`òÖÃêC‰m‡[®$>¯hhšÿ{¡NRk£Á ÑiB‚zÑoö²_gœËô™vnÊ8Œób04&dßšºé~:-&ã=ã§Ç×-X=n˜÷%o\óNù2%û—»m¬;IJ^¥ ¤å$œa°!Äyþ°Ûúñ=îEîåûŸóÐìHäÉ+efO´Ì§N_Û i¢¼½ñõ? -Ô U +°ð/ñC \2ÉÙòÌ~œ©+ò#ïààHPXô·–G®X+îö¿@öåÁ „Mý} GzNôòq×óž‹|2îgÆ@#$#º„$üîÆ}4Ö0+÷ Wºñrýßw]´&ÒJ„è) É? ž¯È¨üíñ¼Uk6­J@ b0B(ÄIÑNHE@ª‚ð¸ è–¨—ß›]§6VÆ,Õ纘ݯ$ûý¼~Ã!æ€P‰ûqÑþp ‰›óÖôãx©8Ë‹dÆǃŽL¼ž"‡7â\ NZ‡{6¸ Ew¥†TÒÎOKÚjÚ" dÚá„‚2²RÌΧåhJ)f‡N;Cúj=Š|ãð†¦Àî+é®ä¿ëçG:ª:KwæGùV  ,#0²_´ã†A÷ì¥3bÁx8þGs´ýPä0¥û /<è+’ü—}Ûëг£€Y°Yc%¬£mPÜX¹‹{hÃÙÅÝ^hW;Eç¥tgSwåŠyeqkŠ2¿Ób®o§ ¨ B?²_MH?ú^®AÈ[õTêQ´-ŵBm¹)R ‡*Ÿš÷þ,@ìõˆº@q%ݨ| ñäás ³ýbËîΑy1(˜ºíîØˆgbô åXÊ™GâT0>8þ3Rçuá™W£6̯ƒ_E AÈ„ß+5ÿø¿³úìƒÉúÃÉäqró‰ʈ\ƒòJœYÜàëD™Ö”ÆÞ)fPÖ.ë³Þ«™Ä@ÇÆõ{š&‡£½C—?ɤ‡Äâ ]d³'°Î‘ ììð"È4™ïÛª@W~ž4–¾"ðEÚ^‹MôGƒ2ò5€—6ó~¢Iz;LöÚKDð³ñ;+ÍÒÒh>ñvì3Ë—»•¼<-~Sxyiæ·Ä§Ç»'qÍ! e„C7E`pûºN¿T4ôëÁ— s@°ƒ¹ß"Éöx†ø4ò.L3¸Wj $ƒg$²Ajk%Φ¹mÁÏ ¿ÛÜÄgkž@Æß1ú¶üÍPu+­†ôbœBÅQsßâ…âêOî~röÒøÕ2øˆPycª„7Ä•ã!†¤&^â…| H¼×N¼[žs)Jñù^I“î•¿ï«‹6ýzy>2©ZQ£ÕPÞEöc˜{ÔEF†¹±ðÂÜHlôê;ë¯ó@Ô‰Y3¿íVÚsÈž£¼ßÜÇ‘K³x–ïƒX‚æI@±r öÏ/Ò4 l¸@³T#N_O¤‹/3}D ÿcøå¸Â¶4Ó½8£â÷6¤ #Hç^†Hc€4 ©–ª“0É£aU(ް*Lް ¥¸N€['E§¢Ÿm§Ð%É áM©¸·4a‹§Do?$´ –§©’º·fË¢v)ÍFùÉí[³Cê TÿÖ”~ÎçÝýØD)n%æ~…ŽÂÈη1üCø1Ú›x/¤–¾wà;e ÚÑWªòR…¼¡ñè 3NZª}ÁI«²&FW¦rœïà ¤Kœ‡'i®ÁÑ㔜:܃ñ¡oÛCªIŠÞãdªN[ž¾ÿpWl`ñÁ¡“o.OХܩ„ûåVW5df†ï'¼P¾‚"O/}£ÀcšÝf—@ô·,IÇKoZ†G@i>Ãp;ãOxJ…þ‚éîÙß?µP΀¶i`ŒåÛîb¨6› ²|ÛºÕåƒÐŠoÿB±Â1ØwüŽz‰AT „{’)§j2ÆÇp‚—1œÚÃ9g´¡h†`r'…Stjtl÷ôö7ó OÊGšß}^û,¾ ñ®a9£l%¨éÙ0·ÔÛêâ?¤†É†ù¯iü,èe¥îdÕL3-h¾Æñ\,ˆá¬ÀJ $C9WU&äϩØ, !éÂLì ¸`ä}P‡w&ÑŒÜà@…Ç1€2œ¥×ÍÿV)¥Ú·“¥-œ›îWš¹>Ê;/I`©–þþ:†'bA³hQÒÔÞ‹Ìÿ @QX!‚vlÔN^æ¬ ¯ÌY‹Ø%©³²š[‘8rY_DÛ·@Ь €›1´ ¾ T¼& Îøö@ªõfe°à·c&@Í ¹Ù2.w)v[ŠGsÓˆc{'™ý0žÜs#DfušŸ¬ ŸŒ¬fÜõÙ²…ÌŠœ—b£|9…¿fkjLeä\í‘Ü_ùc þöØFxe( 4J'Œ4M¸yð| 箉‹ €¶tïÜ$K ÜöF¼ï>®˜évŸw7Ñ+²Ûj+LUç˜öŽÞG¯ˆ&…t3”,$͘G5ÚH™M«Ò„•M«BžKThûû9†#¯ ûßÜc q>ɪ†œ`½\Ë5æŽQ'­æ £m1ªœk‰bCÞs2ð[æ9Z “˜y#æ.g"9•°´3‡êò­"¿©Âc£SxÂoÞ|V%OS¢K\X`€À]ÃÄp±oCî¾ÖÊ=-=¿d¨ç\ŸÚPu¹€¥Éf¶¿®t_^PrUKùÌ”ÕÓ̸ÌäöfobAôÃm5m»×˜6=˜ô !UD%dV¦ÌM”î_PQÈU^Ð’$> e*:R¨8Q/”† Oœó¬¨Äwä¿gt¸À A¬и?=N—ëGâÌÀlíæŒ1Õu…ÝBkíƒÞ×·(•võØ–Œw‰îƒ‘v¤ž€‘U‘„·Q=‚¿œ™G÷AfdÌ4=SQu#coô’Ô“ËHS2¹{ë#14‘ôéqSŸ ¢|±µñß°ÀÌ ßJÐD2 øþf”±îAå²¶i}  /#¶s¸éƒL’ºßëÎbÈ'lë^qW·mÊÚ‰N¸Ç ¸U˜ŠQ1`Yã5„áL5DÈu5‰†Ð—Yhˆ¡Eý@óœ¤!<óœyÅÜ$nU¸°TÝ„@$²E¯&¼®Ìè6*• /f¦Å-Ž{¡ÞÞç¶ÌPT,žäîý SÜè'A;z¬ÂC'g‰k)s3åÊù‡ŒƒØ¿ulY n.SØ)•`¸Ýï]áÚC®Kmì%ÉèJ: K…“=DÉ5ãÉïBV)Ȥ±Ø.QÒú/}r$¶¾\уáØz)Ü:ËmêxùÇ.^“~«^sÎzúÑÀÁSxíAt‚j„%„‰¾væ˜á“¢sGfx;2úL1¸kcÊ…ù‡ßµõ™ ¾VifI·‚’j¹MQîã±ÍýeÚt®*³\]ÆŠ^E‹Î-#˜‡F¤TZÂ…7]Û‘ð°ãˆþAsZáu´“ÓkçäìB—ÀfüB©G€v4>Z‚Œ€Ë… ¡#àÈBc¾"áü 7V–ç–·ñn`æ(–ö•±6ž qJâw‹WZØ·x¥OhýÊVñ‹Át£+_`,3ˆv\—;нÅNr±Wèb'$·íôÉ—ž©±wÝ;t´x™2;>Žþü_>ÇJB²ħs¸8ßý3îÿ8*ïõŸ¹j:Þ:ûú*ÀEe<µ87}@á•Á*ƒSÕÒ±¦wì!oHÒðsÐÞò܃óó›`’.2îüÛÂØ*é“Chc* É)“’4ÚŸ¤É¢ Oä NXª3}L9(Çm#­œ¥ÖðZ¸„ûÉ>ÞÖL’¸“Â9ëËC#ó–â‚{­g Li ëTŠ¢èÅ•Hd6#†ÁBgÊâ©4ã̈ààe¼Mx0&d2\Þ´ìúêh[lC>ö}MUÁ¥˜#þ¼«úX^ë¯XÙÐÔî±§ð•~>=ÎÂ#Òæ¸ÿ—@Pº}<ÇÛú•V®¯§ÌÝjë'{Jl„ =¨żÖJƒ: ™ÜÌ ÏDªcm)ÞÛÛ‘Ïï ütâ3n÷ÍÔ8I;'(½È‰„¶¥‚04DsG=–P¯Š'kMñúDZ’ 9 j”|§; œ{sK‰×ÎK"éfŽ,]îrñ¸à*P0“hKíJ­‚V²NQîì!GgVùÌc ÕLUg)^«µW´š«ýO-«³û)ß„/ÿT°{ÀþÓ šÌR=kS?¶¥ûŠlÞKWÓ‹ÎVº<޶Å*£”HK®Ár¾FW·B X0.áT.ÔÓÕÓÉÜþõl³ƒmk•Üû¬efi¯¸0ÍQN6aX „K8àÆ øZáíÖâ—asñ‡•k¯¤¦>±Ý´ !ZÝ(™÷aþ Šî¦¨ üýÊC‚áU_cpϰƒÇVíŠ3¸§]‰3×ylÀàiÕK7í쾦π·nMXÙ䮸âpMKêž¶_¡£B˜Õ>¿:vMiDR{TÒ/ÿå§dåQ$xz×¶´„´yg‹ܺœ?u2aMᙤ™h ÂRgÀ (º1OI79àZàZ‡p”¾«ñ–æ¾-÷œÓŽåì3Ó±•hÑÓ@ÜìØkx?`Z,t`Ÿ‚ $]Ö<ѯd±s“JüêF@€€žÆ.§ÿ/o×Å•§“ˆ¾KP’Ð_ûbB(*Æ|¨.»mè.MdŽ2!†¯«¶‡åXò¶*èŒay'ÊÝâªß•ê*}÷¦víÓñwœ*vô{‡îþuùÎRÂ!1ÃÝÃG©B¦RjñÚffÕ³+_ª/þØ~86:vY.ƒ (²BY²„j%J=¨V‹ç6Úê“+×EQÊÚRmžZÎTæqEÝÛ-RÅ„ªíÐ ÐÈÝÌiWSwLJǤ,þ­ëן'·–Jì̾<'J¾ kç}ò™‹&¯ÄÐ&»¯òËÕiÅí ¬&z‰}%…T!ä“–‰ˆc&O±ÌÀeÌ mcŠòé8¾aL®(p®Œ7–TŨ‚sËNIfýÆÉÍ7쩼Sö›Zø?{(8´>‘2cÅ·I„^ê]=icIŸŒÁ c×1 ,ôÆ‚•^·®ÔÎ- S¼$”+Ääŧ”ìÇÝ]'h1 …ñ¾§Ã[Qìcs$”ؾxuÆ©…Q5¼ç3·Í {­œ¸Y”ü9¾Òÿä¡„Ÿˆ}qÝŽ\ɺV›xÕÔ"«v@ʲlS—¥SÅU~£24Â_£ª,ra•²cqÜ NQ‰Î·jo&ŠrsϬ*±ãJ$B‰eà9f܉Ck¦WH¶‰èÙ”`êYŸºEÌ‹Ìû™ž¢Ç}q'*ž]y¼*ó%›õÿ¤vÖÂlÊU¢ zªsŽ%rf·`÷ =U5®¶6o’³`­‡µ:!Úv•]øú¾ö™ç|uÎëXì+s¸öcO%”p‰é°=Ét×v0æ:rAc]#÷PÐw¶àÅçŽÙ~Çys¨æƒñŸQ9N^hê;» 1޼n¢`èŒãgÙã‹€â¦Õ;ß·¹¹ëÒ%ñ…z26Þœ|~Mü’ø”èüðbfh¼vwL=6{G"DNnÁE†›¨ƒ‹Pâ ˆ† %¾·]ÊšÚv)kz¶KY˜À<9¿ù76FØõ³Â’Ó?½£žŒ_EŠÝ¾Í[ý9›Åõ)Ú£î.m¯×±Öoè=è7ºßåš»Ÿ‹•µ½0›RØ&o¶AtSWR»®¿ø"w¯àMÚEUÚ}E¼ûªNö¼Õ¾ž5K׸|¦ÆRÇú*c"ê ;nÄÔ>ýc `úI„lHZ"HÕëT.0™> ø Yì p3B×»±pétIú†[fœ¼å`„´}çú“·\ÅKf(ADÊS9-Mšêy¬”ÑoŸ ÔÉBîË$V2ão·ïx%ÌQGD6®xGǺL…WÊŸ à~™á£§O;úæ˜4µ›ÞŒ¯qÑN‰wåDˆýÂèœÛœ¢¬ž5i«gÚcó¿Ào1(¡ÔœÏ§¹g§œó™Æé%ä0Ù–…ïÉ…oäoŒ)¸©.;z·zÞr²ÿ¿¶½\þrî²p©Ãæ1 Öx“¥Læ6ûMÕ9¢`ÕòÏ)èP†CζǨï‘?%ÞïûEŒ¦ú÷µ5µS¼}”Lýä·OÔššN?±èo»©ú‡îuÄ&žìÛv¼r¿#¢ÑóŸ3+#㫟*” ±7`yë+ÝÝý]ëjš6Ô”klaGnt¦F¿>/ ¤²«}Ñ‹7"çyDžæÈ°ë/rø·JW#w¼qÝ»¬©Í9³¦gΙ…YÇ÷oûè‰eÿú®mÕ¯6ÞueÖí—úô쀭 Ûè©jé1ò­ÖD_µŽsòn±†…­ ¸°4#‰t+,Åð8Q —Ê}”$¬VD˜ FœŒg7uèJjÓºÓžö¹¶ëŸb}©_>ŽMÆ‘5T5v©¨åó[hVð‚†lÀBÐÆ¯:V8"[#ƒÄû¬`z(§Sk:$ÑnÑM‹¢»}á¤í1 þ ú iFT2žÔïxú©w<ýôv‚¿y‹‚Y((‰â?Ôƒ¬€-lzWmaÓ)õÚV¹ÿ]­aÕ#;ÖTQ4 ÃÚ«rƒ<çj¤’ñ/Jbœ»¤áQ)ÜÃpEr“ƒnöÁ°“qÎ%„3ýž=T¿Uzá—-‹þÐͮNû9]Ó´UëÓ5•³¾É%r^­À¸d9ZâEÊg‹¯*p‰ê•“ÔKN­ðÌdÅ»ec9â(êÊÄW2BZÌ#0V¦šù JMã+¼Ôd ÷3 ©Ilòç“{÷s²ß$) Eö¨)n¬Ð„ì€z™ñ›(Q½lQn3ñÁo3~ãØ·•w1öm‚âÆ¾íÄv4“J‰Ñ Z6Žw›f…P_Êšžú®¨µèí½ÑgJºžÑʳ×ÇçÁŠýÊsá|åŒòtlWNðåv€2–’$‘îÌú¶e#ç7ÝèHѶ?XXµÉb«Ìs@ù^Èé.玬"xóK‡‡“bÙ'5Uäuì‹×Õ^Va¨¼"í¬ý±0¬b8‰2§GðáT6ç¸[B†aê!˘.·ÌßÞþ¡ѳ­;N~Ì<¬SfM+¯>‡«¨ê/çÏ•†â Ç{eBp¢2-ø©œ$,jkQ@*C "]懆G¦ ÌQ^؈êPf–šKRõ·’I™¨.Œ@Yl§Mg;•='yEc5s¥­¡ ØM•1Ïì?¬9<×Ù|~UIGJ¶îÈš%Éù®„K•Qíó<{O ŽQB©¾µLÿ沞Gl3{Ö²šSd•&ÆÈ9aTKœÁ9‘~sôˆ\b âzðÏON%ȶäÑK¶(GtlÃr³¡cöcÃ>½öࣩ—+òA Ø>k‚^化üñ¦¹€°gk#:ïKèÜé··¾|_Œh‹õ”!Q<„®ßÉc8Ðcx•öç×+ö—V<œ¨”¾s[µpQ cìà×qË Ý©_ʾɩ¤YrK§p(«Žò.±ôóìT³dNnÏéhŠ~=òÛë¯,§\CaIØ-E`@% Ó&50áÇE?½qÁ70=ó&á³…‘_·®¾zì¨úÕFå€Ý ðåÑâƒóp´xtm­¦ckò‘5×büòmÊÊm2Õ°VîËèò˜f›WKSly¯@YZcD&ÚØc¶'¹šÂ5'ÚÔÜ™¢•)<ÀÂz`û"±¦™$‚å–…TÒS<‚ÃØÒ§5Bz\²çí“7l­tÖR¨“<°«Øª&¸jN(áÌØ‡Z¾Éd”‰3ò€¿¾’;ðÇ¢e…–&DÐi<ØÇ…u'§ç4Žåu”ØgN¸ÃÙXPv®n½ÆÖE„ÕoÊݦ%öÅÿ?q×ÕÔ•­ßX䇃ÏVb­j«ôU!Ü:BLuìs!¢¾¶‹±jLõ9*u`:V)î˜ÄÖ¾JK[«u•ØQ´þ V±*ÜIb§à´•B% N¹¦ÒLÌ$b !ɽçÝ›Äês’Ìt=_–Y`Â?ûžsöùöÞßþvÁ‚*²Ø:‹köU%­ ŸË«¥Ù’ë°Îáv;€Žq-$èÅY´À ô»i>‰˜ÁÄ·£óØpüÌ3)ÕξÒòþÓ]f®½Âœ´Eß\Õ+š’,Ø“ñ’qçÞÕézd%$ÆÇ¿e„‚°âRE,¨I]1 )n”5éM&Zݰ«#~ãä“_o;×3=kú¶sš+šÖmo n·î.Óœ"läU"²mÏÁþf¿¤®Q3(9öâ®×³›Ô¯‚‹Å·)½.ʇõ€‡»a@;$d·0ŠÝÂØìFÝ(g–s; øÝFG³Oé)oa~<7÷Ó»»yÄm®V^/huö“ÕÜò"e°Å}]ZN2.#Í È^¤" ›› Ãùlm#D¬–„Hd¡/Âõq²¨ò¸è‘‹'‘ÎlÜ+d¶ M Œ&…Ñ¢IaŒÑ$²´v¨þó®)‰Úe/++JªUÙ\DXfÖE¬zØË)ZUÿ›ñœ†\uûÂ-Žf'åèOâ2a½ÙÁmÑŽ&ë?—Ÿ§}Ù§‡AØæÐ Æ]}¢”™ú ºY¹“ÚúÍ~ a·Ñª¹Ì†­\Ÿ«Æâô¤|YÅËãVØ’*NÙÖÀžS$[¯Þ™ù_ó»Phƒ “„g*ï–tƒþ«)ôk¥üw¸ÞúXûAVqG“Ïw.}ãK©Ü6(·Ë‚>εð\¾ÅmvlÉZtÒh›Mí[Òtè@Ih¥R”ÊÒ†2•bT¥2©ÿë‰Ê{Àhü‡ e¿Ö{œ‹ÖqM¤^]›ºDYX¯Ä]ìäÐkÖÀŸ8G1f_Э¾“ ¶W¾J°ñ[³"»Š«N=Ï›¬hbr6¬òÀVh¦Þ.hªÐ -‹¢cdhlÌkZGË&q uêÿ8[¬ñÞ¤—òGÒdN‚,2 [è{笟, ËÛ7¢{0±Z 9ê"VQì+ "Ú@Ú•ù<¯±ˆVÕÐ\¢Ú¼ðÛ²±Æ”2v>í7 ¤Lˆw-Ò†A˜Þ0ÝÎ\¶° ¾S®*ÕCàX °¿ŒV!‘í­QÖm(—7ÍPù¥}(dTÂíµzˆ‰fœF¼Í£gBÙ[3¶ÞÑ@Q(h^È5‹Qô al©kÙ¬›_2¨â~Q²Sé]:»Þ¸;‰ð–u$ënî¶ ®=“µ`ígª«Þö§*‹V¥Î½ïg¯¼’2µ3yùü ee}và™P•øÉÞ5üTo®È_mu¶—4ŸW×["l^«;œ ð†ùQ`±= dÊ^¯ç¤MÕ;KJdC;\“â *媛‹Z †á²:é v*bÍ>þe£³› Ü_­Ei‰o¦šŸIÎúù_žn.k.ÉÐÛ‘ÝŒXŒ¤nÖ5‰B.Evɘ(&³1D¼‘n<æß÷š¾ŒÕg)Ýþ7Üþ™úœž3·eò š<%v×4O5ÕZt´§ÜÍ„^ÀÇ\í×|`Bs]9IOqZþ~Nç.Éê“©‹ªªzõÏr’Sž¬ìéߥ E!Ï`‚ô\BQLžKˆŠ»Žúç²Ã]qèÕÐK?Ž'Ýýèà ƒ¡ô€â;õö;Ú}Á†Ï¢èù7¤švó%˜&ÕèúløÁ¼Ï’—p:ñˆ\¶•í¾Ž>Ëi3àòA/årÐÇüp6^£¨ñÅX+•ËpêÉÙÔ`Sêo»0_’ÕŠA‡BÚW%,ÜèДÇÜàçp¸!‰./óø1{í¦æ%QfÖÌu©kÒßnx÷í•2W#UÛHá`§<°¸þ}V’îs€Ó­srOÁ_m­ÌY“Ü)÷ü¸4íÿm ¾k?*‚Á†Bä S1Ah[ߢR  H¥Š ¼QÈ#ýÏ`ÖÁ¥q“ßl ‡Ð>ÀRØô[ ®Èך8ýçy«êv˜óÐqíÀ!,æœ<¼”„yð@1Ú˺pQtl¤ñçç % ?[6¬SÅñªŠ]^Y[ci™Ld‰;kÕ¬cr@O+#÷Ëœ-Y&û!mW³±ŽŸQËC†ÿŒ² Qtf‚§±+ B ªKµÆŒôXGŽ¥_õ]VÏkjÿ¾—7ÄáÁÿM&ÌŠ!íé»’pͨQGºeØÐDÈL^féÆÂ/ä’ðWô%Eá/A†^ž<éÈ–îͳšRŒÝÉÆ6Â$ç,{JÓž}òñ4Séæ®Î•Cûó^ÿ·ß-[(üwCe´iä\Ѭ¨x¶h—"žtÆ#$R°Ô½yQìÍ‹Í^dÅäã<¼nó”DÏkùò*e’Nå¬aü¬\ùBÁ,iÇI>¨ŸÙZðQ€~~¥FÐ÷õqq¼:•ˆ_Ф­aÐéŽá-39á»W„ÂÝýjBíÞÿ¸ÀÀ޼Iw  §N Sk¼@QèŸ{­ÍèNYûÉâ÷pl²#d¤»€·îœÌ?zóc[@äcÌÃëz=«;ñCªÀ¹¸Míê7œèòY+ô`˜þYÛÆ0´¹ È­Cn?Ôg÷mœS Ð&)vÊÕ³ãЇ–€„cÇ1— r ƒamtìøS.ÿܧÏŧ>Ó“üxÃróxdC¥Ø‡;Ÿ`@sg@) ˆê_‘·É‘ã¾ Oþ!ÿG£†ŽON¼\GÝT'©®eË+¬éª Ø®î±h.f¾zàÉ} Ö¹5çæ²;4dfÞíVq¶=EWáFVç'¦•=PXütZÉë{S&Ûñþ4´&9ƒNÿgÒ-,*ébÖt5›–q[m&æw‹§Êó>4? ƒ¶ @p~.›z îÙ³TŒ¡¬•Äæ!éÃ2ýFOúzŸì°ªVgÈÌRq»­Ê8J™`dgØË¤`tÜä?©m´éS@bô‚G ×à'A-(ë]­=ĸŠJ7¿(ËT3U¿ íœ`Ó9᪱cWµ¡óbÛÐÈ…ÎÔumÿnþ…ànî]#´LJ‚“í¿S°É ËnÆþQ«4ˆ‹ßëe:[ K®2®‡JÁå ¥U‘.I’“K’ :óÛÕRÆ».¼*Ë,{z_2* cÂX`%™pG‘µaÿç Öò6ñWbÆM-µ>Ϋã©_—œaqaÝ\ÞáÝŒvô¼Ñ&=jýý¾¢üêµ=Žt|"1ÑTË}e›“ƒ¶ïþlö %«Ëþâ¾MÕñ©kœÿö‡6Á@jé’°Ì#2Ð d£:ÿTæñÎW4‹ )}ï^²<ÝœÍB$,ðìYÄ;¥<Îx#qhò”¸ÝÝÀÊܲÊк¶LÄ.÷ÑÓ·½5¹´¡é-£ŠSYš3¡ø‰ä´–ÃF¨@A°èVÚ"ä£Ñqœ$¶8™¶Xl¼Ôè\ôÁŒÄÎ-óæÜ_%û¾Q¿Nwt¢Ä„3÷mÃ*)8?ƒ¢(ÓÏ«ÚéÁÓ?®Ñ^$2Þ‘‚Ží‡iBî•»ÎÉÆŸâ$óŠ’eµ²KHPz›Qµ v 9i"gôÒÑu¤P^ºiÃý[ù?üåüCæÛ#nGíÀåì4¿¤’®{ Þbptý;€ƒ»À`<ßK2F3úœÿÃSwË.|•Ú3 =ïƒ ë…¤*‚0 CþPÈý"eðâÌ?ÿ0x/WÀ+j€¬’rK7óéŸ üsÙIp=üæ¿TáSë –o”Žb‹5ÈU† úe%ƒÇ‹å¦çÜrW9Aw¨%assXw•õ.ÎAÕŽ_QMÌ ‹—•F(†ÀæòBê;wŸÝ5`io“…æÖŸ /P‚Qã' ÂÌ( Ö?%l;AؾCæHE±!äÆÓÿµWƒ:àâßÄz˜ý×ãU–“ ik,Å]|ªüp=ž áÕ­Úíd‰`3J Á“% û'ë'À¾Ã‰÷®äÒÅ+ë›,»bAè÷ûüðÛÙî’Ž£hB &‚%‹ ðV|kwŠ#ïNqlv"§gï÷ÍyÛg{}oÜZšÒ9¬Áª2øÜ´ñoÙÆ6€&Ö^9¬”˪¨Ê¢Ì§ÓL(^†¦Å@GFCг¢·ˆ8„wPÙ?qnLÙ?1’;¨~P_èEÏÇñ7P ç›‡Ö‚YïíÕª3üŒn}?émÜ—8]GSÔ¹¿ûy mO°{Ÿ%¯ÏR%!Ûc1X[`‚MZóœÈkžÛš£Õ›/Åñ™¸…Nžƒƒ!ÝÈÚXí)t?™ÐÒìôU*¾³u't—80pª­/SíÞ/ãŽ"ƒtØè|˜6I.ÛœŸjM»ËÏ}pÙ„Y~ôæEäìßKW®äœ˜[qvu­ª‹ªòg¯rgPLã±–¶˜Mq·à²sДÃWSà#Sýýf2…Œà–a0"©ŒfîD¿H<Œf¢3†Pè÷SаbvrêŠJ™² *«¨*¬JNmÛßêÿ|ÂHÚ)ж2‡\g%ˆò+nTç¬T‚?þã^çðýûv£aA¬COîæ2ùãF²ººúz¡Ï\M÷›i7í¤hÀŽ6§ˆ`Üx±|2æ­ñ‚• Tn[CÈÊzZY§:W®Þôìúr!âw/'qàb3Q2Bd|ñ^CçÒ÷¦§g\¨äža-¸ ìçJXMÛÄeqðc8o9*eE[F'9a³r>l‰C„ã[·&2Ø \›Ñƒ-¤ÆïÇiõ;nÎß?émÁ U¼³¹f¶©ØuãëÏaK²©CZ“ãzn\‚öQÏJަCP%Œ'Œ¸ ì>(™õ'níz§+Ð ÜàÂêOó}9É7!u›EÛíp^¸ïTÜslKÄ`S˜…áˆ9}b1«~}»±>°¹B@ ³>7z깜í¦{¤Œ1ß‹º#Èú`Xlê¾¹¬¢O¨²"‰÷âtÑORœîý_ m~krž¯7Ië8á(A2;™6T†ò 9AŠ’*±%aôP =e­Q§õ]!kÝVšï#ÀŸÛ×Ù.W#Ûã0 ³µÿÜ= ÞÃ+ÌlVSµÅ+†ÖyM °OÒRÌ}ÅüôÈ ÀÆüN§y|Ê€Ô.ÆÝ§1÷:T-àSæ=úTýð"µµfßAô¬$ 2åÆB„U‰ÄˆÖü@‘(z`s¹¤+ä{71‘¼ÁKæ}¸‹Ùƒe€fì%Àõ`~Ö!_èÌÌo#̵FUÖ1¦ßÏÞãTø‹.fC§ß3?ï#0py:f† þ†èÅ*v'BEÑÊrbËâ!%ô/V6°=_ÒÁ»ã¶¾Œ:LȘ¯>æ±P`?dTÝ MæRÅúÇð+ ãÁ¸’wm“ÿ7~J*>´¹^±ÞÏ»z÷×ÝþÙ€Íè°È…yï'N°¿ñ‡YHÓÈ&t‚ŸßX¬¹öÅž‰yÊfÑmˆòÀÿû Ÿ0'ٜ馎ʵ­ÙTmšEãö‚.Ïj®È¦²ø}îÕ‡€éûÀŽÛ«}x-¯¥i’lqú¥D‹ÛNù<5GÓ›€ßAdë8.ÔÔP¦Çvã Çø¾4n}©lâÀå„ÑÚ³øjÜSN’»ô` ²åò¸3'Ó8RyS€«V_¤â6ÛðUÕÅG<š›wT µ–7‚ôùˆ³wªý#mÆf3²)¥øDã|¸›$Úx¸Ý—òkiK¿^!én!ìVewø”³Ù^üÀ5 ÷Õò­”Øoà`3òÒÃTa6Ž¥­£R²?Ùs­i[Q¡Þ%sÖ_~døõ·½T(À¢pWkMÚË6%¬ù,Ûè—ØsCìw^àØ¬Ù†ñï{U`ñчŒÈa˜VJƒÒØYŸ-¼Óg£È A§½•9P \/p“£Îåf…{„ÒUÛÏKÈÓ\nkëùÂ~³ÕînãU»ûIÉÅý’,Ï|/°YuB壶Y·ë1}tF°Š¥}Ç6KAÀŽfG,âe-Äb£»#3¼Ý ¯}6J«2)pÃ1:ãŒÒm¦q=}1‰aµ4˜HVØaEX%ŠM„<Òaíï0¶‘ê«äsØûõÂÓÌÕ×çIÌWÌÜIK¿¯Úª#ðŸÛ!ÆõÌZZ¼ùH—}ûI^–QÅÙ]–<Ór2êjÐ.–0 /#ÝÅRÿmNÇkŸíà[«©9pÂrvø 5—¶þ:è2ƒgøòS>ÎQdtã :[èÜÅ/U¶Ðoúœç/×mÎ[ÖˆS•î"Ü‚`p¸XrX>?HJú—½ÖÌqøÀWÆø™?¯=¶%{5±µå¸ sµÆq¥hkˉÝk™eð‡‚zJê Oƒ®òÅ:Ëñysÿ¶s}Æ{98ºÞ/†-hâä.unPñÖ d¾’ZPçM^ú’±Â¥¦% }}׳¤‹íÐÉ7Vþ2!é?ËÝžÉÍx«ÖÝ[©ôù Ðe ÷¬é•=Ï{·à8¦Â›£½m½’6‚äúçŠYù„Ð2‡0G~:|æÑE cæÚuC›3:EÇÓBªþA6X&Vßî —&9;ÀŒ‰ppA!L`ExͪÜÚþÜÄ™x켂ÌÎ Ô5„cë0¨ñSëuñ×Ú^~þm4á’ŒÅÊÌû¦€"šÏãÀ¿ãWàÛoÇq#Qv`úOy‚7ɇ@Fä+,¶+¤ÂæÎiþIG«¾È1qþ/u×]Uu¦…€ ñÆG%#.rq X‡Âyïs*#øê’…Õúè [#\D,(«kÅGÔÐâšQAÐ*1¹n[_EƒDr‰2£#à½RÈ ¹¹gÏ¿O‚ÂþÎ!YkVi`~ìsÎÞÿþ÷ÿÿ¿_Íçµ_Sëº@÷?O„—žuÞªSreÖ³É8RP븇í°ŠëԽ➴zÿê2þVEeMO“ö¥'s*8\ÙFçDR¿¹î@óÖ¡}§u\Ń÷z2Ÿ,”ßáŒüR¸sÓ¯Úu*öOà«Þ©tݶS Hà+Õûÿc$knÈÔ7'û~2*• Îþ1¿¤“ïÖÍë§Dþ¶ëÅ ÚkvÎ\Õ‚èóW´?YóˆÔ;‡-ò|àÍX¦ßÉh¦3œãÍpºi†Ó³f­ óŽXöqYÀ:¶3ôöKÁA¶ïIm>G–ž×³NðzL bæzϦ…‚¯ß³Gô¥«·Å£¢åyé%ÑõM;CkËÚã‹cîžYL®o|±í¦ëþñß*/._ºáß7[îoyê´Ž…9ÞÊßš±ýUþI8䡦Lhã¶Ý‘6AÔ×*¯/ò9­Í߉Õaò© -Åk¤ºQ×HõOô½ß-šRÝP¢Ìp¾VެIžñÏ—~ÉË¿*Ë4—´âɃ%É–ÜÛës<•MͳsxS,í&ÆGß³¯áw¿ªËÛðÇ3ÇL Þ°êsæÚß`:ØîY²ˆ ~¼ûº’ô‹5½,}÷‹5³ôÏžŸ·-ô];jÈ‘¢H6»˜­ã‡ÄY=Éh†Ç;.͹Där¼žgøGÉÄ$÷ü‰ÏÕ͵^ lŽ=,N>Ê¥ÄÝ“Í'óc½ƒ™›Ý³û3ÅÎy‡Dævîè~§eà!ïü]lIß%£¯øuíšr~uqUG8ñ!ë˜õRºŠ·®×^™Éô.™Ÿ]¤d[›wÎFóú—ÖEøiÞç§hªß%;«‘Më8·±NÝTïäîìûdÉÿ` q”yÂQ>V ¢è=J8_ŰbÊÀy'ñ»Žþ,qI\dµI+&»%µYÞÄóÿY1 3ä…øÂØ¤ÄÍnIeKÍ3õ #·Î¸¤že÷¤#¬²feÿpU°ôÛîö9ù¿zËZu{Ÿxõ;$.Ï,¹÷g—?ÔN_¹äôŽô+¾§wLjkê k¾ÞÛVÅ;ž:PSðHG)o<°úõý† /ÿÓœ-ý,ûxdñ¢‘J6ÙšåÉÒÌ¿þ·'£ú¤_œÒXøÜö¾»×* Â[‚wàøé³+û»< eÍ¢ ÚFt„Nodõihså³vDvOÎÉî6'ñøüD~²òëÔ|3-îÎvlΉ ˜žlm¿ukŽŸ™œ1zàªqÍÂ×ÞºH=ãaÅå÷¯¹èṘ‚¼?7öø:Z+ˆ¼y1`·ëCÒ’÷¿ueüwÕ¡ò¼PÁâM‰Âlzw,VÅÌOôYPësn.]Þ>zêGGŠ]T’$?«ã©8Á;‘̤’Ùêx²ÊwSŠ×¤xm(³7“LÊ}1êÁʼ~§0~Kžü‰¬”Ç &²zψlÀÀPzêÓ¡\¶¿qu¶~ÇÂÂQîÐÚÝádväÀA'g·&kµÝ>¿©i_kº¹$—·6½µ,‘=È>î}U6ïG/ }?‰Î]<þµ9‘²àL»ï©˜>k½lqÇV§E°:!/´ö]ÁémÍïv¡¿8½²bLÿôØË¦î·ÎÙvQŸÐ- Âåu§ ­~zg´à‹!ƒ6íX<4Ûx`[|òÞÉGp~Ù.™]’âíÉDêh2äîá‘Yë²éĄʊe”GÖ*Z˜7öéDѪÃyç¤#ÁK9ýŽÃô»ÂÖw8w Ä9‘ûdFœžqb'0¤yjÊùΛݘ‹º¸[|ë°²ìÄ(ç»Æ?1lÕQÎ_œ)Ö lÜä-8WÙvwß(Ûã¦ëúâ¼òËÜÑ]ÜÝÓ>‘ñÜúõÉñãy‡R? åȠꎘ»vHÛd¾¾j×QÞþ\,}!ÙØÈCùß•WÝÏ~ìÓÇ{-ÝLß ¶¢¾'cúhwc™u"« >ØÁìÙÁ&ä¢÷ùþ§ÝÛðaÝ=¼¥·:²}RÑäÖågnnw7ßZ³Ü=¿5סT ̶æâ¡ƒ%5nÉÒ’]iCïç£2wÜåS‚›ìwˆoæLnrpÊ·g™³ &3‹–õþÅ}¬…g2䈉?éïd6¾¸àG÷FƒãÚžb)VxR8d;'ÄEª¢†Ö~ê9t¿v+(4ÚrïÎöÅâ´yr÷ßœ+_%î¹)·¬’3<étúVžÎ}ƒ{ÇÓgø^|™é{Š¥ÏÚoUd׌c×þ‹ ùšÎºŸr “‡æi·U÷MÔïŽe[›6¹©þe‹s™CÕ¹ƒ#YüÐ^AÁ`[$—æÑ¦D<6+ª.üú›/œžå+4vú¶ÏÛéÓ}ûz°ÓçeO3ß}£èŽÐáÛ–4îW²üδÔ}´Ót¥³]ÇÒŽ=ïXÚîÇ^б´ƒOÏ;½x<ûùe 5c~¦LÙ¸1>“H;Å®<×·c§{_ÊÅî¬#|·°©óÏ5Å1Þmóþ3éý+•Gµ‡¸[äýgl—÷¯ÜÝ”£7ºË¦ò_ Öne¹²`ùø£æoŽ%R˜Ïé±cý/OoK}àis3Þ!ÖÞ(®dšdß,ÅÏkùoL>Îo5ýÔ"Ñô‰D üÖ,±-tÕеv²ÐÍQ3æV&ݒϲ<Öõ;ÃkÝ—'»~ ©-œvÇœ¬ÿ>Þ˾DÕÅÚh)+ë;Ûó¿ÎÊ®ˆÕ´f“Q‘•Ç:¶òÞêÑ·_(HGçK,¿JÿÿoË\0·bz¾È‰XùÊ7?¤KbSüô°‡© ÓÄBï_fÇ,Gl89cº˜¡<Óq óɘí ëDÌÃMÓ‘²‘žuär*ùDa dÌ’1MX€1¹šå­ƒ—1&W× ¹Zy2Æ,Á?%Œ©rý C\œ ˜&—3 dJ˜&ËÞTÊÑ—e˜ª­¦‰{@eÌËJK˜²7©ÏÓ@.¦£;²ìMÇ»/\˜"Ëž0K~ÖbÔÏbÞ™ÚæØ€Ù:è†e[–ü]¦Ù–ü Âà}L×a|0ÝRe0ÝQäö†ß5Äy¢2¦A™á&c6ÔŰU ÛaŠ-‘2¦PÓ€¾d¦·RÂÊÅ´U(g© »ÌÂñÁ,ïú> c:Ô™:¾Ajò£Žƒú1tˆ0 ŸeØúÁr6¶ÍV±Î¶Ø¶(cš…å¼›ƒ$ÌÛG&aØNf;ø>GArÔ!2Å ÇÀo8– uq˜!—³ü.að][Ñ™Ü^[1@¦¶b‚¾ÆäºØŠßU½­ŠcadL»k«Þ¹õ2úb«–uV°„ÙPMqdk*èŸM> d ¡$ €'¯€rÖ”³®ÿ ̹è&ÖY· h/ÙD¨3©´ÍÐd&8ÊÙÐlÊé†%cL…1c&Øgn ~Ãîc›â4˜2fÈõ#ÌGV¦­ÃwMl“æ /–ö^¸7ø®å(P?¢/Цâ¸dø›y—HC}!ƒ jh›­¡LmeO]ƒ¶‘]ƒ÷9:ŽKÇ[•&aÌ‘ßGÞdJÙS¯ÁtȆÉãF褣8à+{åk•e꨺.ˊ̸)ËÀQ-•CR…¶‘Íg5ì½£´W³°ÎÔ½Ð6]+ºê¢ë “ŽníԠΆ ýK–¸€c /ŽÁ€G8db¡Îį°œ>Ô1U°Ñ:¨ ™,ç#?ýa–sPVj@9KóÃÀG9ÄÍ3}ž5}žµL,Ç€[†ºfÙ²mW)„@Y1ôçDKTè#f¡^1}±u¶Uˆ[ŸBp~ŠRpœÛØI‡ LSˆ„€œÇ|ø†cƒŽ« ðq ÷E“ma¾¸Š, ·`©ÈuI<ø®¦Ë¼X`ÐG"±íÐl9—¡©º ý¦ê[Æ@~dÖÀþ©†Æà}†‰ß5À>æÈœPóv€–c0UKÁoXº#ë y9ö#Ì‘9YDÈY’ ¡ '|–ù¼Ï}5Ô™Ü>èšÍP¯ˆ|C9"ž +Ç„vÐ8—íaº§(4°àfD¤™‹j `9ê, ‡,1åï’Bû”ƒ|a ü¥&˜Œi–Ó ð[¤rlO˜ƒåt tRÓM°%šÎdžHŸ…\3a8¶È#ƒm× >ŠZö…Ü4ØXÍÔeÞNäà ƒø\`à§Éúa;h¸!fg LŽ£ƒÜ aެ§ÔE*øU’øÂP rF„YÀ‘4‘| ò„ÙÀ‘ˆáw)œ‘ê'ÆŒK•:`:ÌWÐû 9"ŒaÿRW"¦ù`¦Ï³6pÌ¢¬“êú`¦œãí}a¶l;Å$ŒU]ar +Ø©Ÿk‚bÊ}¤“C‚vc€þ ýƒ:3˜$üŒ®BlJ˜zªk>u˜ cA×lè7ж€;ê:äK3ÁÆê:äù5ÝPä8”0 ø†n ßÒ âÝp`|è&äà…龡›¦ÁÖp,0d&ð?êàzº¶†Œœkí}aºÌëÈK[ÑûÀ÷è6ÚݶéäÍÓQ_xQLèsr²u†¼·°»2¦«:Œ-CÁ±`(–.×Ïðáü†â@lOÑè3…’0Î)Š’õ0ÈI‹ #Ø:C8yÀ˜œ»! r_ÔåpC7äyq˜\NÈOÎ…fÊó3$QŒ Ý‘ç÷œÁ0 Ç#Þ'Ë€0˜S¢ÀP.†úL¦IÎ…æS?y±.&Úƒv(¤§ò¼½Ï=ú,·ÃîLÆh¨ÊcŸ´J¶Ï¢œlÇ Ód¾FFø½ÉýKæ-èYàR™Y_¨ÈÊ1àÊ“y1a`c¢±`cÉ›ƒ ¨Ä=&™[˜–:Nè$ÑbYÇ©#ÙîR]l?LŽËij>ïSA×,rÔ §L•í¤('çþ 3e_¡šïƒù<ÂÀ§fo2˜ßµĘ rfô ÆŒ k&D9L5'"U%ÏeÑû l‡mÉõ# æ„)„9 €£‹¨ô™šC¦ËyGb±*ô‡IÈ:nŠd)`&ØzÈžÙhÇE1YV¦Â€³š ÚlŠBå˜X¼d`¶œ¥rŽìE9à4D ‰©h¦€ÿ5)*–ûÈÖ0 lÙ°‰¦óÄ„2g%IÁ\>•³ÀÇ›äË m¬Q" s¯¦s„Áœ¦fš˜[ "á}&Ì;k‚fC;,ŒÉ&BÎôLÈ’Õ@Ù[¶—Áú: ȗ˜ s&s€S›6ØS·›6Æ)¦mƒ­£hâ#ÓÑq¬:Þ>Æ@Îä œ¥À|7a°þ€0X@˜íµTä– óö„Y0¶,±"DÆ(h‚ïŠL`°~ˆ0q”¥!§&¶}D ÛF.êLA„¬WÙbx–¨Ô…5´ƒˆ ´×+2ðû²LÈ)fCîJݰ,XËIÄ«„1GÂÿÂû˜*ÏÛ6LXDàÅDe_KJ ëŒÓ!'cùÄ–ùvËQ!Gf‘K†o;Ârä(˜˜bÌ{%¸<«Â¸ÓQ²œÛ„¼(ýF‘ôSM3óÉ]3¹”XÆ~•Y_s*¿OÌl†¹F¿@VÚ†ëæG…5ŠX›‚ÏBnXK§áYâèXr¢¬QØIëææÍ̼½bnþÈ‘á7̼§Bl¸>®¸föôhØ[c¾>ßÛø™;ÏÛa ‰µÏJ~iéã¯Ìïõ7ÿ3óÎè¼»æ Ÿ3mú_ïBì–¡ôA¿Åÿ«Ô™®ŠŒƒªöR½‰ ²EábÊÓèVþzUúöç.ѵáp¯ÛæUÜ9ïåfEæÝ9sÖwQ£ïô§ôº±Wþ@®å—¾yð‘góq›–ØÒtýˆ+gÞ>¯bnxÄ•·GæUŒ­˜Vñív ¿9tãÂko¸ù‚ÖûúDßÍï—í¾gûÜÝÜüóÔ¡¥;¯ÿÉm—üb×ö.Ú÷ûÚoaŸ]¶sÛœ;†¼rÖlja ãØö¢'üú¸ç.~úõ\äÜÚ¢~PüØÛýžÑûõóþ{u;óg¹óãU[Ù±ßÞùÕ±÷R‹>¿ôóEó<8µ÷ƒIݲ¥á¡ƒ—ï?f¼~wè•‚Ò¥Ã'¿ÜðÐôE[òJ¯K ù»ð·ë—ÙÿÇ}Þk˜¡üÃ5?VØ´¬OÞzàð6»ðð¯/.ÿý#œvÇØ•u×þêìFþܼo_eѱ˷ܴµÈZ^1í­£3~xðƒÚ8aû¥­éêŸ\2vyõ›R6=±2ô?Œ½S”(a–4Z¶mÛ¶mÛ¶m§lÛ¶mÛ¶ë”]·{fMÏ¿nÏZ3o™ûé{È̈عc©›r(á³ÑŇ<·m‹à‚n¡=k aiãùç4êÒ™äáÃÝ™Ÿlcd¥ì [™YeE'Ë*/^Zjqå5¤ &e=„Ôöa}#xs@Á*!À |œ—xOÿßò_E}áÝ(ÃÇ­\kØÙœ¡ q*¦áµ’DþM®×Ú¾ƒ¹ßëR×^‘Í–3v{›/£Ÿ*@UûšØÂÞ æeTÓÔVTS=®}‹Ës op>oZ4iDm¾sÌVw8mxqWÔÆá—*uè"œ«ú/›Rõ›‡ñÕ÷4«9YŽ,’jm*KM$rÚWt}ÞKûöOëÕÉ =úcp0í@lâþν†Æž~«F°;ŽœN«+¬›ÊšÍ‹Í‘…´©?)¸q¹Uµœ’“A{ô:¨¶u?–ÒãÁ+´… ’_&Å„‹’ˆ„wCv²[žQè;](”Jã&&rëÚ‰ŠÛI=%É(£ÿ¸ñäÌçDX’’ù‹!ƒŒBÍg ÂêÈÇqîÜ|·=S  T”;+÷~€\®P|h_>ïÇ0òQ1ï€1Âp­q먂Á¯ùYáð§˜ñвý0ºD#[Ÿb¦ôó þgÎ>#(ÀÓ2ñvÝäçOB‚dæ ;¤çj6ÕÓᛳÀ¹©ïŒe Ñph“1~Шîz¤’TöiJ1Eâ#µ$UnOÁ°FrÐâ<Ð÷E¦"Ïæ“/XáSÃ!}"iJw CJüë—Oò= ¤E`œcx@Ñõ‹Á_¡(F¡AÊB”ø5‘ÀŸC Ž; ܹ‹ö¹…Ùšú_#kK§>!k³ à)£`#á—›—ÐBÝWÛðI¡ÕqÝ ª×È„º§z=ŒÇ׈ªÆâ6“{®þÅ¥}–{.»!±íú~}Àü6?£þ²®‘ãªÎl_RƒfôÕ·ýN°_}ýÈ©‹ÎúR÷æ×n…ì*{°Ó'ç?›jWYÜOW“—YY$¾Å~7'ÿ j$ßI‰akº6g{WMÁ]æjl`2JŸ>'”¡¿¨?w¨f>x¤2G0œn5¹%Œ#ßб”³e™bkæõ«§¡âÁŽ·f…" ®©—ñÌ%Ñ« ™Ë@Üe,D€™£ÀÿìN_QZÔwØÜîú™ë,l-@­\€ë‘{œÿÌ\Øác.fm‚÷é…‹®íۗבâô:Ox>³–"»WVV^ÏĮ̀ä³<Ù¼÷È—°ž´F²rǦ8^§5Ë’Š¾þH€õrIRMLëÞûo/,Ø7èX ™‹ÿ·-Aƒz p–-RÞ@uï03(-2ØïÕbÐÊyÔϼKÙG›æWŽl¦Í¥?Vómvæ~:Ú]¹mUe¹\ñ ø£¡«¹ò¯õ×X"Eï㉖¦äõì‰[Ÿ n?9þ®ú_›€ˆ Âà"%Iê1ÜÂ%„…†Í¥c"rRsY½D0868žg¿uŒî@6C/ò;Yd³°’ÆþÈHqð¥äKì^å/ úCÛû"D15ëH`%U(ŠŽPéM¦çI†U5)™!Ét'Îÿ_ÅH:ja4\\žwÐT³h''å ë‰‰wº(Dѵã€t&£xÓµïŠ~.8^fr½ò5ÉàmcÁÑ%Ó9›¡Q—M÷ÿÉ]©ÿ7Çæ¹eYÙYÿ«ÆÈð?lBø§îýßA¨$ù[}Qc,†ÌÜ(½ÐøZŽº_¤Ã˜¾šv)fy1,sçZ´©ñçý×ÿÜóƒ(°L9¼©Ëñu»kîñ›o®‡(…TŠêíj[^{2ÅI”"/Ú®ŒV >ù„«€„C½pž‰O£å2Q”G+˜Ñ‚r$AQ0&vÄ”2¸‹]j£žˆ)›rÄDJª^zÕ,íÈ +èN&"£+I¹á‚ÃÚ\S[bÆ¢IK.nÊ oi(Æ’™„“ß}ŽÁ¹óißú†z¶A©½Gµ„oí€j•/ôÈhî÷A¨½ôÐeUÆAd«ÅÆHÑàðA‰J˜ã¬E4cªöÄ•V μXd6r*(#´¹–íBMSs‘³üvÕƒìçx¹h,¬ƒHÊKBÞv®§ôû§Lž«ðƒ8r‚Šº°’ƒ<½œ&`F¶î}Eâ5&EmÚ³Â|¤~ß-ÿcøÑõÏpFXsGi«Ê2‹ŒC†Á1}óì+íV§åQÞÑ =áżlïš;6¥žÆEo÷¶lZ†e÷ää%›ÆjÑØ‡|wNlÊ—w½s×>Î9I„¹U'5|uT¯þyÐÅÅduo‹åñrC¢À'.Nü4óL5o`ÙŽ>õ€ ?ëô@2R&踙¡`bÖ½ic÷Ñæw†±;R\ì´WTWëž N7Šã1 êJü{åFÛ6ö¢ƒmrXÆãVºÕgW„6øœÎç¿IÇ÷»ÈJ‰»2Âú—ë™sŠÆ>©]SWàáIQÒ[¢¯~1Iö¾œLÒËÈgn˜}ý:¤pËú¤?£ìÙ©øð¼³ÚÏÖ³µ÷Ühªw ¾Ö“ï5ʽØCŠwŒKý¾¾¹"ñÁÑy%9ÍŠù¡G×Çë̬Ûk¯Œ€Ù÷ Æsƒúö 60/þíøÏgý?lØœ,ÿ*þë3þC ýï/EŽf¤?òjmˆ?aHŒM]‹n*©ñÀì.uŒ4ñCnÝZüÐW€¥bYaá$2ÞÅÓ€fËÍR[¯¤§Ï33w7ñVÓß7Lk÷Yö½ÏÝ×Ýí”` µû¸WÏ›—þÀ.&¢¹¯8ë¶3ï}e1'oÏ~{­!‚1žüI´Æ÷ÏS‡4wõmÕ/~Âçgq%ïW¸’ªmàÒ Ï–:x"î¢ÛK‡ê:¢?QÆ1ÍÉÎïNõ'ÆŽ§o Íø®Ô m—µû„Vã«8š-´LÓ¡¸¶Œ .ên"ÆóXWSðcH:½ÎÖþ*2Ä…Ü„¢+Ý‘ÈH¸àPÞHýF!2´P81Ì*`ý]‹·§åÒý:’PºùR×(Ùù¯kŲ[×Ãõqx„n -+a~€?¶›Ð•l;N{*ƹ‹?c£ÖU„<ò¥LÄ›õ×1ã`;©»ÜȶWŽoï=R°“„×è\‹gií>¤¬à×.ÕXVÑ:­+×™]™×´˜{NâáÂfÙ¤d¸c`k›;϶ ¯dÂW9‡k)Ã1hÄbÏß∌ôù¢ð+$žñ …]6P2^ÂØZ€“üüFO¨ƒXWÚìuÇêÈö]š;|„.LÉÂPl¨¥SO(~þd,-¶÷ÛŽ$A8ÈéˆB‘&Ù6®Y˜° Ê®¹€Ë Çú~»öÔ"ã ¦OU×¹rO˦n çʬȚ-¨}#Àd`ºVí£·'ؽ Ë*Å1"S1M ¥CsOÂòËÌrÎyšœsñ”š13//°ì }šEí·DšˆdŸ†a!—Tguv¥L ÓѸ¶$ž]ŸYô½<»'âF‚GÖØÂ E†Ð‚p²‹õ«t|¹ð³÷À•užÄïAw¼iÔKêÏ(µ+“³¯ÃqÊKF@o@ Äá¯êͪ»ª.˜¬dU)P¥Ž…BöÛ²æfdoæ•ãò0”@؉Ruª&ãÑWu¦2Ð0r¼Ü(øZuò$`ÑãÛQX¶=dߨÞ™Ef+Í¡0lY˜ÝG”.tFaž§pRRÇ>Î4RáçdÉÇÑÀ’ô¯­V,bn› eò¹§^#„Rû„h›ÎšÏJÍÈ}v@3Li«žÔ ÈÄâ$rÛ®¢¹"| #¢+Œ§"õº}ùýddUóœï"ÿv»œ©íÛâ"Ó¶T§¨·æ¡Ç.³úìáÙªHï÷ _š¯oYóT©Í+ö™>/~·a^ãÒ×L–ý`–þ½¬ÀŸòœ%¶8Æ /õjX M›ÎxS—üSø œ!bÔ{Ïåù­u¡­ªg/ÀPF–(º¸¤†b¦¯íq£ëUô·þúÛ­Ê^Þßãb¦¥'ÎÏnu—è·¤Ê~ÍÏ'Ò ý¾C‹ƒƒ[Ï¡5Ô}÷¹ó«øe)ü$¯CµËñù¬å•nA”°7ëÆ]úŽÿû½ùÝàFöü3µ#Çn^ž_ëÙŒjcª}#¯4“Ë‹†)¸àúàLß3tüRXF-I¤Adú‚Ù20Î÷{<ž«§\Ù³æê%s–š Õþæ¼1!®/…Ù]m/ÏÂ'ýƒâ=ýhëx³ç›ä=ðËñÈñA=Vßù¦öþ&•_òÛì|iÑþÝ&¤Âà z zê/Ýž7Õà¾@þí¤I‡ Jn½ÛFL*ø²UÈXâAH¨Ã©€uÞoØáá½4ÁŠCðê¬?¶\‘3u¬ô½´õBÀ' ?ŒÁ¨HÓ6ç=gNÉÿœ‰BÒ¤Ö«!ÅÚÏØ´½1w3û˜´«hS3knk=§÷à%¤{Œi{òçIœŽŠ‰QLéĆDØ%lc t_6Ä@½xÂŽa…¹jŒ;+cK± äEÏàä y>h¥fØ 9ÖïâÒZä*Â!˜j3a"V~êÙ(½‘ñ~D†cÂÎ;ÂHe<¥Ô"F¦šÚ:êÑSf¿Ù%D°“[ è4 ò§ÀCMŒ¯(u¡{æ{ Ǧh™§r”ðÌâf‰âèÙK•¦w@8'3´$˜ m½˜Û¬‚C PO‡©I$™Á–Oæ1€q% ëaˆ'­«8¥½Ô¥¤¢íƒèíTrY³X+  ôçªkªÕžuÝÈwÎäÁÔ?@ñX>2íC¢fb}<}W³©2^‡N¯4âðÜw©Åsà,’ãÎ  =])üH›X¨Ü œ6Ú•ìÑV3(ÐËEéq¿@\uº„3Ë×ÑÍV€, Lk°Í ä¢V™†Ø1=¹ýÔòþ_7Ìð¤|Sßc{mií–4æIHöãt¹f»ëp(+Ðíí>üo Tº!s¬¿xh$‚=Ý=KxÌֻA1Á79ŽÚßú]5½ {;Ôíäqñ„N/BG=<,í¸˜¸p¼Ë!~ÎÏÑõù†‡¦62 «*[ ×ùú¾º¡Ó4þÖ«,Wñ×"WþiùÛ"Ú6嬬ëdWÙP––¤€°ÿøÌtÊéŒ æ®à3¶ýu_=/š ?ÿ¾´@1Ñh+¤×0øÖN ·ìñüõ4±$Ÿ÷3U4^â?…ÿC1a»“´Å ;´î+ïXoy©™:ìMJž=á†>ú<3¿A~˪1 fôÓ“ÛÁ*DÑ~zN½¤Ž\ã„Ê›Zðš¿{Úù&ÞÔ‡ksÁ¿]ª‚bP[€8X!LE W«9€'áÁâËvC””‹*«ü®ŠÚÓõîÎÊŠ«ÏönùÈ!€wLÆÄïÓ(·"Ö_üäD0z ÆRªmAw€]-ÊÐQDz£$@®Òz¡}™ù·†¶)þ=C®ìvR±ª¾Ÿ3y]“̵ã iKªý-;D% Ñ'¢‘­Âßnc–íV—rrmqn0¶‰xAa|ø™.Î4&~¼P)sÎ*‘|U9ØÌ>ü±{Œœ°alMî-(]#;h&T‘ïú)öâ&7×ìLFÎ ,½Hhï¶wËû¢ï æøÎ6&=dgY Ñß¹'‚?á4ìS–ñoWG§\AUr/l´æª¾“C–4ü2CÐâG“¹<ï:ú^¼]W·ú!´+X—Wînžš2rEéý¬¨¶Ú »Þýû-zÂ3îJ,µT%Xw7*Q¿±íû6ÀÏ;¿bQÛ¿)–ÿ"ÿ¼bfdý—ŽÿOóÿO²03±þŸšÉš¿Îÿ,q4SäxïL4š|#©1&{¯ôp¬­@d™(‘X— qÉj²)s-%%(’…¶XH98*¤K/ìsà,¹nöÖÚºÚ¼ÛÌ%ÙdK™s.\Ú>_n><ó^]tÏP%Åü»÷:¹||ß:‹÷ÍŸúÚj¥bWï…„•ŠWOtµÄñi\wãiv²Ý‹WW&}Z\M=X4Ë7¡®´øqj»0cF  Ú÷õ¤cþ´¯m×4§KàFâÊBeoDN_dÇË£”Hºù|„RBã“G%•<,¤Çó§&4*úôOpñ ¶ÐúŒ Ø0ð&Ç__Ïw‘þ9(É]LQ¡¡“ii=×ÃÖÀ‹‚‘¥l<•ÈŒ ÚpÙñÞ$ùzWsÈ²ÂØq·´Q/æ@œ«%;XŽåÕxu«‹M™·R.Z%Œ‚TÞX¹0bIsmìw$<гsN0²!>µ“mמ²ˆ+\om£D3§ê”,Q­jöŸÔÝ«ˆô1Z µ BŠns"΋€¡+m•3¥ë A€Wû‹7[PçºSOˆç‚Ë/å,þ}%qO!šÒ»>ý‡u¦¿`tXKT|vNÞØ—¥2î r”éŒrêÚÎ)‡ÝŸMêäÂA[g9”²Zgš«NL”M!DG=Ê!ªäíJƒ«^m¶ Óðñ03ê´‡©ƒ`F9M¥ÙëÙ¸{1ùJÓËÍÌÔÒñ´çÕ~yÑ.•ûDÛîYƯ׻®µ»‚©«¯my<€\UѲjñýX½ÎÝ >t£Q[’•/—:ß]©h‡j|ÐFm;Êã«0‘3O­ý@ZÖ­ªŒ¼ïƒ›|;EøµjH±ÕÓ ³ô¡[<#f÷"uö'€X–mÁË£ØðˆÃÇèΨ+¥)k=ܸÁŒŸ]µ6$H+AÓÄgØí×¢î¥ìoY }=¢Kå’ÝÁßEsiy¨<ôŸqÈ=ÏÈ8 ÜäYЏš œÎõM–8©?E’캅ËŠPêQâÎB,îJyzú „ªýr %埲&¸³» Œ/ß–EÂ~8d¶8oè=k0™ß4÷Ʋæñ¡>Qk•XºSQŒL'šúŽÇ¥õÖ_7PwR½l˜< ˆâg†¿…Â=þHÞÛŠ¹°]Yçg»Ã¯6(:Ute»â¢¨ºrÆ7`M­¿?pÛ¹rÃB.w+†׸n_Ö<`îÈõE+C¤R…ù›{ y®›Ê—uëÞBœu/7ýôîkRmµÑ¥.š3³On9¬†’e§—f&æ @9~ÁBŠKå**7aø™Fç,OÙ©öÂ$*Z7:v/¥~s@ßù)L®ŸÀ§ÝN{üv®ÀC»ûy^Ø÷èg?¾Ù<Ô]ÁÓ%8™ û%÷Ý•t]Nx½aÛOÙ_õu1?&h·¤Ñýöþü%-L´oºh}Š\»ý¤Á¯Ø íy²AÆëq³Ÿâ®°±?Ô}óË„r˜ñ ~Èè$¤„;À¢;‰%¸ºÚÔ³m«WöÀÙVÏÈ9(œ7$0­äŠS¤8Ä ÇäL§+Tqh ÉCˆph#0[‡¥Ç÷ñ¯AxËϘçàŒP‚_|â11Ó‘Ø'a1õ:ݦ¾0^M®HßW–¥‚¢6<—' Z8^ǵ8ßé,cô®Ø)Ám¨b¥`jˆ¾Š#ÐÿûX‚ðvŠ< Yh®Û›ê t¬ax‚©ßÏšy`{‹†e“€gt‹ôu@: Uh}raÄ'¨ [`àŽtTîŽPÃ’• "¥£Cè„áD½C…ÂTð“=t"Ìx~{B8§ …Ì!î‘ðz3Þp=9"ŸïtṠš÷Á’µ3Ý,{¼b Od?|(BK5›è­]kÓ^K:Bp`à\#´­GÒŠ1t]gÏhÔÅÃò:ùƒM'0à÷Òü%ÊÁDãÈ÷DÀÒN’½zš^d9¾;Y#äÂR@õ I»`ªÂÔãAÕßðG,KÃSÜ,¥bTë9Û~Ò϶$¬ò*³&±%¾$9³8⾣˖?—ÅmÞðèÂ6ûãV zÊ¢eRå=ËHÒ‘õ'ÄŸ uŸ‘4¹Úÿ[éCzž¯Ô¦q0R™c´Ô(‚õýœ×UßÅaŒ¿}²ãóðë#C'‚ ÄCG—˜WJ`ˆNçòÃ¥THüúÃÆHÒ œÂ?2Å­£²É `9c”|¦`;th°ë”é_Wj5±vŽ%ס8f%î™^%øñ®P€ÈÐÑ2]¤yTRíÃrÍKáÚ+‚Yƒ°o# M§|gƒÀÉÃIæSðšSŒƒ|S®žß¦|¹Ê‹-¾8I#ÔІïÓ‡xÎIL3"‚¿[ÍÉYý²TT@:„Iù±ÐÍÄó7¶†ùç¼÷Ãf‰>È,Ù¡Ñ.ß×îßùîKM ¥†{@$´%ñ›Æ÷@ÆŠÓmdÇ pÓ}‡jÀ½w[ܾðÀóûÆŠ6%ö^Vµ(N yà'˜ã&•áÌèl í„Öâ`‚07$6a&û`àœ7â(ùµj¼Èã1ÅCbæFã9ób†ËpEµóÕóé#} LPÙÑ1@Ô‡pXYG«$sšÅ¾l·–Il%_)…»¢ £½‚è±ÍölÔ:ÏæMå:aÖúç!W\m@ðëÎv1áìDŸc~5ž»5¬òsQ„TUámÈ@AO¶LjiÍÔIyUê†-Å‘YÍhñÇ Ã4BÓ(yüK?[ùŠ…,mäËSÖ2Zúèü'8ûÜŒzg1Gj ÑàôÖ8¹g=èJ¹mÀ’󫛉=Ydu)J{AV«TË,Aã»”m‚¯ãɤdOXªJ ìHÞAÇâQsØ$»©eT„ˆ1Cè¢)LÁlÃë¼9>ÎÛo)êÝË¥¾§âŠž‰Òý(~“¤ÙFvõpŸ‘ÖM a¤ã'€fÖ"( ºv95ö ÒÆsöˆì7@jÉ–’¹Ï ”’Yˆ 2ÿ¬‹¸ª˜¸>÷¡²â'Ûq„ï÷hvÎò§2E[>Yb_WîÙ°•ºÂýÎ61F-œ§óãc¢"=±—ÚÀ1ïñÔ7›$;’ÓWͱO²_ϧÃ(3ˆy¼§ªÂÈï¡áÜò:áB”Ï÷lÚYˆ¨j?{3ýÄ-›Ïåv®ÈèÊ©nw°×/ÊúÍbqØ{±Ž4Ij(¤V~Ú:#ï13O¬ÛÄ¡-@´FX›4ÏÈ’w‹ ©« -þ^4ÃlMßrõ·][„&žQÒ‘B-¨ëF„Ò5¹a±Sá”%xa¿U„1N¥y3D°¸¸þÚn³ÖZôvM`µÌøýéâ'>oÜý, ˆa¬ËwêZqÖH›Í¥j€ ( Å#2Ò;PŽ ðÇ6ý«-8ü ìz&Rè÷ŠH%ïNG¨ßøFä@´ñÚsáý™“´½å•â±180ÏÿŽ4Èë"å|ehú5¹ùYüÃÄDþ–¹®‹lÂ÷t(#íeŒñýÎNKþýoÔü? ÷tŽÿþÅÆü?ZÿÇŠ‹ÿšÏhþ*c¯!²C8B`8Ž‘ Îp"mwy»wkŒ92f¬G¬[êo/²Ø]®ÊÌÈD78ÖŒÆ&µKjoŽš–Êj»—êûYû[þöÞ~:•y ®Kšs帿îöîøv}¾_ŸÖšMÎäÿß¹ß=íÝôU¾Ìþ>ßâÖhÝåõÖøUíékú'ÏpV§40ŸY>s¿+ïèò&Xlf©15}»õ…êjhýÊùû»…ZÑ0góમ³O!î‰ÅŽ,e< -ìò…Ú8c†ÑöÊÌ‹_G–­{¶ÂêOSJư± ¶Š—užK/=­Œ_”%¼M§³¡èŸVmSAc†i8öèŸÞI¯ šÎ¥û~Ðq,JEÐ÷”Ý%²*­/ÝÕÜ% òâúé,¼>ù*•[VÉ×QÂ#uMfÎîö C‘ŸšO(Ç›fjM˜0õVïË`Fê\|úÄÚ7Û6ÔRÓÐéo›sŠ=¹Br†UrÛc®×—ž&VU|~ôÖ>¬~|Ú=".ï¬YÛÔé®"´®O~j±Š>@ÊL/Ú×B¦Ý¦JX,7‰MÒÌV.Ù”A㉦ã_RÁûgJw|€§Œ1’SúÄû~5eáßæø=$0+|¤§í|?=‘õ©­%éB*ëžœåEÑæ¥øýõ8M+ÞWkõSåjŸHz`[ÛKõ¹‰%ï;—ÂÜËI²Qö{MÂuL¼Ý5êJ÷M½0¸¯\yªÄ—!€|¡¹OI*ô}nV•¦fläMÎÀ¸‰6w¾ Øˆ¬Š§§~Ø! *|h{ß•©®2|qû†Ð÷ðu¢JÄ3¼}×<\6ߘ+iÏz-¾KºfNUÁˆüO1ßšÔ§ ¿¼£öÇxZ$½iÿk3lŒUð—eƒŒ{r¸œ„Á•¬˜°Œæ8ñƵÔÞ*…¬Œ­D6O’lKPÈ]6¶–¹HVÇ®÷Òx¥(Dv Rˆ¹VŒ$ò7™„ˆš$á:ÏzïÔÛ¬ëÊü§£>¦?•vÐ/›‚‚x ¿^x©q™þZ®áÀ¿p«!mùkLŸô·s†í"V¯tŠœ@H`Ά¤g]¸ÕS ø$– kÏìS}ð%;gJ$åŠè½‘úÇÄ™D |v׋l·V‚‰Ÿ~ï×%^À8t%¥Måd&ó8QyèZ|$2é€ú/­ºž¾Žr•'š[›>ègÉ÷Ý7CwŽŽ¾YQîíedÕ!ÏT«üq•‚M@º À°qd å q(Z8òvà°B<›ß°U¬h*¿´x˜|2qÄcmâ vã™Í×!m.jÚÕø óÚ‘–uõ·l+6BÀ]Pº1¶’"\«a;GÏðã´Ø“Xîž™ÛûfŒŒ\l !Èu íiû2?Æ p ;fŒ@Ë–Šf!ñPÓf‰äàÆ¢ UA+2À’••|`|eÇh¯ÊŽ4“ (À› â~5Ý@õÕÛª„4¡Ϻ×Í>xkg¿2EÁ ´­ŸkuK¯WuIþ;”Æ!×:Ó=’ÆgÞij ±v!Òz' cU–#ê@óÍŸ¾¡ÃΘ/œÇG0:)ªÙÅœY Hk0IÆÜÝn¼›+¯,ò ·ÎåƒáÔúývj½ Èu@Ï©¸– “p.gêI„f{@áY|iàÚ³Åf.Ú}T-ñ>Ï?kã3Ô <ø"° °[uLˇÚîPlû±á[Ãm°»\³ƒÆL™#ô&Õ0Z ™n]¨òqÆ FÁíÚ7B±½&VH×PN.9zùÀû¾>(E‹ˆ R5$x=\ô=·ºDËSgXOŸxs+–_õƒ²~ÕC2™Àæ·_0¯_\¤\2põ߇LÔB_Ó1¦„sX"ç _޼‡ê¸qâ`¢Äm-ÛPçí0ËRõà–ã§îY¨ufBaÖHÿú% ×Ñ©­Ž»è5çå è‹ÄŠ !É:XiGº‘Ç‚™~é}Þ)]€ ˜Å6„Yxð‚á·òÖãàHl@ÔG¥¸¹LCbý͇¶dbéð᲋0‚ºËŽÏr¥pû,äêƒÁÒuIÑÈ/·-T((sÍj“I­[±¬0€)›-¶Ó×Ò[sÑÂ0 " S*,Ao#ÆY‹&©KòAläa”w™T0“4d‹®ÍÜûx`}«VMJCšŠ*è&Ã]dêÏÝéý#ZA†††Údt>õñðh_aaÆö~Ê}†D¢/È—ì|•—–½÷æ5ÈÁ¡_aµE%‡ß¯lähÖê¡Fèéê5oi±iºLˆè0QÝ`p+Ö.éTp\× Áü0™É¤ö+*m šW< Œuò`w"±›"ŸêÞCšh/ɳõ†Oš›Œ=çŸõÝý@ó—ûYk„;Ó\Ÿä‡ã¡ì0ïÄÕ&$A;¤Ü&Œ ÜgN ïæÅÔhÙâFƒ…ö\EškÃE,T~0ülÿŒ÷Ḏ•Üz2+Ñìð]¢Mf`n±Ÿ,´‰2Â6“›Úå"ƒA-ÉœýÊK·f6}³dòiÉ*±G,‹Œ°q=÷Ö"Úíõè·>k{ô Úî°éÒ¤øwÐê²°5þC’zÏß¿fV§:€ÄLX©’OÉ6 pã¢NÙ`…ìÅíµ«œ–͌ߖ1~î[³T/:åTÛR&ºƒÔ㥽wŒ”^nêþxXœÓ¸©› Ô ¢šÄÄÇòê­!.2–áöhˆâ M ñíMlãÑG63ö+ÏçÝ%eÎÜîmò­× øz cC1|Yȃ+žÇ׬ýK66Î|¹‚fc¬$f“ãÕOYšÌšl¤$Û‚Ë8õÛçt(ƒ< ~ðEX\zïHòO±“ ;…øLâæs+†+(ƒ 8­æþż‘._¯£¡1ª+bê”û³ŽÖ—Ûcí›f/áͰP/ÜŒfÉëEN½ΰ€lgöv²NåãÙ®yöÂÓ׳ÍG _*_­°ˆ›3¯–³DàgN¨3CS‰­Ž:|y/!Ì[µ5xOלAöÛvš[)ãª`r˜Ž5­Í2`q=‚Ek5‡§z3V€í%Ê‘Ž2~á—Þ5ÙŸ2Ôä#EôÒ ÞGE¤zfdÀC×Ke˿ը3%¡_ÀÇhóTEjã–­8‰ìHÞW¯Ïº#u–qx—hô&ó"ëúª¯ãžfá–cBNúeFë¿´@17Ê&ZíõR·ôú~tb4ù_.ðÕÅ…†âPp°p€ulå•+-UßO{þ€ýyOÊÿÎÙþ«QûOÇῪÿC#3Çÿ©};óÿ´ochL$%øòJ’hMön}rŽ hl:"iƒ‰âñ€Úm™<À~lòCa”¥ÁL$„Jù]7/èoæ)ýõ÷nwsìL1‡žÒbHs^n¼?wÏ|w½§d5sD¥ü¶×ªØÅìÿì&#úžöèô²s9ËbNäÄ*Ú[ÆvWiÊÖ^VÓºÛŤ¦Qç̉¥® ÙTpU_é`Óö1£`Á‰&$”ïÛŒÂÅpfÍ®zð JãÅȇÈ|Œ,K¨Kj$r²<ÏÆg¶]\(ÖɈ„l*ΆT%ɲ`4‚iEüÙrRv™”l Ib6I±Ó¨}Á}/VVìÊù¦S$Ø[u)¢#Ήü©­l±+«Ê*-t½ŽÒójfþë0õÕùþækÂVë£ü¹¤i´ Ûv‘©Ÿ8FÛ$¯v)_Vâe;³s>ðMÕ2€gUùZÿ4\¡K­ß™eŶk½d\†ç'ýŠQTʦ8’8ݧ ‰Ñ]|" %/Ïë3‚«øÜiõÈÆËDj5pôµ¶|/~šî­rI!Û‚è!eüóæBŠqè$ V|­¾vý‘…÷³åëæ;sñ ƒä©Xòû4¾ø´3V>ÂÖjj ñå…˜µ~ˆê(®éF5ùõÝ•-Ô4§ŽÖÏe*ޮܣÝC‘Gtת}_esõXÂþ°'ü…«Þh³Ô”¢aªÕ/t­Ýž9^¦6¼5ÉVε֫ۓҩ¼ãH厚™Ü°ío—±¼­.3Èô'ËóE¬Ë{:èÆyp‘§ i¤)0(V{ðΈ¯,Áx©†@јÏEò¼uLèW“Â| ÔýÄ€ò%ÍÜ$6¬"ÝV#ñÈä ¼q™) %ÿœ¥8Ùè¥;›\xÇ©¤m§xlåã¼·e·¿á¬¿"C ÂÂÃ7û+¨óÝžF î¤y ø÷Qæø ÖKt`féc»û}°ŒÇ°%2?ynlFH3SMÖÁêbE ñ”Qª²—üÏö‡ëí¸R<‚È$SGÇTzštJ<‹ª‚t—,w*²êZš“bÉ̹ÙXÁåCÃ5 3Î:ˆƒÿš·~å*±/˜š\v$Õ//»ˆ•4¼/¹ñŸÉk£u` ˆ„À§ÄÎ|£$ ½e½Èxø™Z@Í¢¹ ‹ûûj~5\šÁD]ÑeQÕ¢;ì8{íÆBÉÚ ™ot£b•BJµ¬BÓyB òÑEŒŽ`8P ñ£´ÃœëÈ¡=r‘~R x²¸.vÆWz±À= ™@Ö(R­¨›Ô;GÏ/pÈêyùÈ^¾‚–d¾Åª äGÄftNóeú­(C²ByæâAìlHÅ,YšÒ°:¾ÍCx’?ð …±¢êuLš“‹B—¶GÀ4hs¦­RîóÔ¦ÀÌðÉ·E¦«¯]”½š\`úøqõC@cæ¾î0¼È¾Ød¸ð,‚…¹“ …I2‡dBCbºŸn{F¹x¯q&ÔÜXSF˜t)•¦ÕCÒ/ï퓹X¢Ã’ÜC8¦…¸ ÞÚh²ÆúZqŒÑfùÜ3Њl^m¦æãD SÄ&0ÏCï€\¤‡`¸-U RÄVõc‚†ÜDsO²ÅXߊ܋öBûoÄnÃb*oÙfôžPWà2ÍÐH;ÇͶ%qùȃ‘høŠZ‚‡ûXéÛ>òßË硚ç‘ôŤêz÷·¤)ÔºÔ%\V-klµ¥&üÐM_M×~³ ´)е ¨ØBP§I#L± Z—éÒ­ÈÄ%æ‡4—ŸÐò…¯zvÎz¡ïô?`/@Üèú¦®Æ‹K7«.ïÜ"8¹6ÂC­‡\=ˆëQ&G Â<Õ˜(òhñ¢ÕĮ́©PJƒ–) ­¶´+²…ÁÎüv=®„.Ê4jxÕ”f?8NUв§ 7OU~¾iØÌk6–g£¤jM‰ÇèWGöÒWÅ‚Ï ¥¦iUMYXòµ®Éaâ#e`Z~³ÌðôisÅ«jþm^¾vû“lËĨÌç}ÀÓ#Tç}šºO0Fñü–ïgÔVä‚´ F(ñQ\e°‹}™žíÔâÑçŒI Ú€ÁŽW@'—ßà¿ô˜Ø›×Åê»K¦é _gÓ&Y™à£­ì†â}ꎹoÚk IhÓÛ’÷+L¿Ê $G·C Ö£‰wñXØD„œq•$tæ…­ ¬Kà™‡Y—~kб~H\Ý…øS~™ Ȩª:<9FA%ø² ÈÄuíÊØ·§0]\¿,3ÃB1YRêôð@Š-%p‰¬ëJ%íx´D­ÎŸ \±´†¦$ЍÎo–FŒ„t  RÛ·f1 ¨ ½ÊT,Ö"ÑÐnØÈqØÔ×Ô ›çïiîåë`+Ø>¦«ÐIF OØ'M@Úñ½ÙJ½]šDxKËŽMFkî-ö«÷àš$óÎÌ– $.ªË’üê³zSÝèÛÔy™Õ~V=ÛéÛÔçùx­Š¹€Þ±X+$WFŸ’—¸ÇÞ›”ëhKíþvöiþ{ÆpÓ»ÿ§)! æž”ú³ÔüYQÎttþcàog›Ì²SáS­˜3×wA£¨»ÂÆlD³wdß=2}¢t û‡VóûÀ ÷>š‰â2"²GýWÚÖ*½Ò|‘l˜¨EÌ¢é鸯hÈ,^µÿ5ôª ójp.%TiÅ…Âx‚¢ô/lK€ÇãnTûz:ý÷Oû™Â™‘ôÕÑö¯¸¨u*QÅãDŽw2 0×ËþRËÅ®-Á"7]^“ûk5hSTY±ìmö¹ .¦yæAƪÖ#Ïï=C¸!Xs÷Ž,}SÝo©{í‰Y‰¾‹§Ü%`÷V *pú/Ýj·c¤vÜÎsŽßjüF—@«‡oww¤Î;¨zÞeÞ±`¤‘sÝï™BnµrÍ®§oò×üQ|SÙ¿×ÅfÿÓžý¯êÿ(Ëü™ªÿ;qU¿±ßŬ#šJ¾îWDál$Î(@MÅZ8H(çʼqkRÈҲZ ²Ã«g;„o:Z®P¿+±M5µÍlÖm*ù®§ÿfÊÇ~y½éàÞ4Ÿz + @º;ñüýÎ oƒñFÃdûî³ßÁé`uš°‘ýêv]ÒÐÀìðYÜŒà°ZàdŽŽøl*hpr.þÙŽ\VàJš…Ik‘ªmx¸BDGæè|ˆNø° Ýä`MS•CŸ3ai=ûø»Ëáûäðåò29ܱ”qPVãŒÙŠ~'³ Ž3*ßA}7(4í…aìD¥•W^z^xÁlušAÁÇm)Sz1{z›mƒ‚ÿ©ý˨ßVÇ3Ô¸µi¬-í3å|]q ¢3ä´þ1—Î;¼/?ì3Ÿ]DzöÐ>¬O[_axeÿª´"£–5a¢^8úžÆ¼v Ÿ*{\àט²¬ÍŽ×Ò's¾y£<‡Ê·†Ož²ºFÕ±¬ÝvÿnÕÉÓ¡V"sœfèhKTu¢•Þ‰+R7&ïk¢ñ¥¨œ¬ò«ööù¶tªUHZ*Àùú\öQôr4hþ>÷šÁ2"ã¸C!~uÁQƒLb@×H:Æ9LóD´õ*ÚØœjœÑÆ >ý¨@œôU\'1(´¨ÁÇê'ÉÖYõÈ®âÞeO}šÖ¢cz©£ršÞ7Œv™çoþTÌ6bÇ] ‘Üájƒø"/èªZJÖh\ÕâD&ý\¶²Ÿ#gõLº¬´‰Š|<Æé/X:,<ˆ¥¯XèŸéoÂÃvch3V†w†ß’ל'ãWµ|œâËZQú|Ƈ¹´d½ˆsÉóÐo¥Œ<ù¼¸qì*þ\óâEˆBìæ™ ¬.u–W©+:^ŽDz úMñ¬qáAãúhìI‡=aaÂÕ}*ªókñ½ì£bÿœ’A.Iº¼ÒA! 8G$˜H°¾d˜a¸½Ã“ìÝ ¹FÍ©Óq†êȦBožºGrBú[1ETEq 1ÀD ´[±œÅó²ÃC»%žjuúNEašPÏ›ðÐq)‚Æ€°b­(ü²tÚY;Œ»ìÞÌèäb¦Í|ÖJ£!”¢…^£Ÿe”f*`—:‡Z*Oñó9¼mŽ‚G^`ϱ~‘T{ؘ$r3v°ƒu÷€u¯J†n—¥-Ý$ËѪڭ×ÞÓi:¸'ê¬XçXî}I+¿m4K¬Uõ.ŒÝ€ð꾊"Ľšª¸å‹Bý6X«3Â}³úô|ú—ß!Ó7ˆâ¡â³(+åÏ©OM—Ö:SsZúâeÞÕ¡Ù½Ô ;›ýe–Ûª¤B¿¾$gÆIjØÚvEo‹.°SE“ÑÚÝh~ë+˾k'Ë>9ó¶Ê‚¸í¥aüÏ~Ø;¾ãYý:Ò~+'~I5}Ã|ì}»ðçz¡ÿ˜Ö±Ù©—oä\ ¼óÜÃ3=ê>ñÖëÇüÙ·¯à…7ÍÃC¼Ô”çGß»Ñ×_,–~kÞñ¯êÛÕ›òcÓ:”8bþϼ]³ *Lé¦e¨•â¾ÑD .¦GªoöýÙæ;{ ¬k”5œ¸b­™1~‘º©'eó\ãŸ+œÙÆa¾?¦ŸEÉW‚¬‰XA°æ\N by'*‹°ù£`NµÕä„w=ÅòÍÒI¦h뾡-8×Ñ©Ìsœj óÛÓ¦ Öó@ù¹‹'œÕ'\9ƒæI±«uø˜"1É»q*rmÛ $͵r[Tþó›½ø?_¿åŠ’¾ìI¬ì¬‚(oŸ eužOVN.Ð'vŠ1áf"±Úd0Mö ri°j.¸oLñtÒTŽrAA¡ƒ#x× –è8m»0Vve ÑVž¡eÈ>…‘Üü´©cúŠF??v,p”‘Р´–ñ~.àýŸÄi]m@b±L–?zêöÞ¢Ÿã䎬Vn1_ž|¯æVHFaw‘‚û•Íœ-üÓ6Èp8!ÆI…%à ÂÕc48I±E‡¨@²~4^™‚‘SƒM¬"n×­x&€¡å+ „ñꃂ˜ƒÖ½§J€Wbx4X—ˆ’Wt,RDXÁ âµfÀï½ÚÞ¹Q©h-gND0b»÷ìHe…xö”g]ÍxÔucz~²d›E¶J\ðØ©u–œæY3™0©­e¸ ¾ÆO“B¹ë£¹†Á”FÄ[óðÁ²w·–[§kð™Ê#î`ìXÑ‹ÀnüOWزíèQÌ3Ý>…¶­(Êæ‡Ç$â= T¸@HEßå1u€\:Ê®?œ/qæ¸2QèçTU)¹†:ðÜe’#¨Aˆ¢ˆ}HÖþ,*t'±N%€Ûeã^Á\죨ßâÄù{€Œ(„f•æááù&p¯ö‡‹ƒ:ecN‰G ­ ~¼ÓÓ]žý;ƒøWÖú?þ»úï)žÿ±Ùõg+¶ÊÈê(l!3fÀÈÆañõ4Ž Hë]wY›(Šâ ZÈ%K¡˜bÖe³ã1> (ŠbÖW5Øú\ß¾¼¯»;3»éJ”—çýý·¾œgÛÎyg<¯·¾’b‰AþÝ¿m·¤·ä·ÒÍï¿v;I§X‘œ’±Üþ¨ü—Ítšœ7±Þ‘‹)NGvF§<¸å›Q`GXmÈ%Ƽ »è'FŽ»ºèŸÛ®îGL¤ÅòÀ˜½g&/*vç"d©gÐA0ÂNäâž%8=ppb³é&qô9RRœ÷q\TQA%3 ‘ñÏÓlßéÔýþ6^Ê@®”Ù+Y÷©ô‘ÞÜK©­kPr§ðÔó?†]°Î1ôT|ÿÝ3ÑÖúìù°JÁ\Û2<T“»½ LáFp§Ñ¯W{c'ò”­—äÒýõoG…cIÏ0òznC?K½á/ió®oVÄÄúûlÉDrLððƒœq=J¨[YYœ3vó§OôËì|wkÜby |?<‹RÆ]\¢¯È8êa¼DÐ=Ø™=±"ˆ!Ù¾t?†QÅ?÷b„-‘]>*€c»¦ªwŒ{\-¡øÒÊ4ŒPÑ÷÷Ow’ï–˼°PiŠ›€ô®Ws:¯v]ì]íµš]<Ÿ´ùèì´rß~H«X:ÌšõÁ—±8‹ÙKº£ô’]G¨¶Ê–™ñß›Yé–ëY¨nRû…šEí’p´Ê¡ŠoK̸iš2mè.&Hö”!:ÆÀ´ÆÑ4›~ê,œÒ™AP¶™¸¥ÊtÍi»)íÙŸÑE7Sæ&eKÁÉO®(‚^ÚÓ%-Lõ%䛨¾ç®‡d³;#/'ÊUä+ÃBÍu¹¸EäÒè²HÇ)Ç~.Ýô~é͇¤Ÿö×5Z~ÄWý™ï–œ·Çíkb!ªAH—üR©ò¨™Ó !N&R,O²“ÌRI-jŸªJRÕ8ºÝqä¥J£ÐñQãíÅ Å}Åb÷qZTôõ™<ìf:FvE0ZüÌtë1ÌJK@dÍÊŠL3w…7ÇìƒX8Ôꯧ¢¿fܺIQÞðÛ<Úç,­0·4S)¶Þd$É'3 U=þÓ§•Ì[)Œº1 Ðê²{T]x:q¦ö'ü”ûª#"€y²µÕ2c“C7(ó`–|øÇ8x9†¬4¢øÍž-­÷7ÂÞ§ýíV~ž©;œ2pÉ¿[aÌôt<_˜1ey/£ôã/|+åàÿdäÃ;9ÀÜ* sbˆÜl %«ÇÚE {VçdWè/c ÍØH“§‰Ð™­‰‹YsñOx3Üj>,÷†Üý0þ‰ƒr ‹S´–sP°]¨Ü4½ÈŸÙ]4?ÐÙïdL%IáÇ8ÒW\d_áY†’Pâs?£eu–ñm²tPÕ%}éÕ°%îaå¥D#ƒ*ÆWBç.$æHRÆiž»Ï•$i¿X Fñ°ç”›’Pä9nÒ  Íü:Rfîqá¯ô©—nšKçKVøµcø¾ã_ê3"‹-s;%´Ô¹·³ï”7X}Mì0Z$µ*ô{\@½Òï3{H—_käŽÛ'9óvo‹‘—šŠähcü»¥÷elç gÿðÎS;gJF%•c…Ö8ßåãEÀ2€tT1o­ìa]%ìþ·ž~ÿÙÈ|ïp_$ó;—¯¦pé5¦¸_—%¸ñÄTéÕEå•ÀèHÈm3Zÿ+žÌq-Q3»ÁëZUPûǃ*+÷¼n[“d†½Øòë©âRì@Êÿrå3²3ÿ )YþÝ–ü9Âÿ;RÆjhÛc¡Â‰*IOZÉ.¥R$V‘6J„'¿øâ –’n„™ ÈŠ ‹’ËÅ4CÆ Ñ$˜HGbó£øBÌÿ°]çí¤½¼>O§x«|.ÎNsšÏ~û•¥6ÝjÁ}#úó{3½ºÜVœ4ò¾Ÿ5‘¯žØo9ÕÏ‘\ø ïzŒ6çjËŸvÞÍC½õrh¯aì¤9ûÅ\ àŸvªc{²OÆV­X‹Ææ¼'ptÉ¥¨±óéhõjeÓZGL99.O V=„ÇÌÁ§¿ÆcT­’ˆK×àì<ñTˆmõª°[©ÑÊ˳‰mSí¹ê:…ßÂ?ÒÐGn¬ªÇ9ÕIjS§ÂIØ›ÖÓGQRgØdh÷êXÆÎœtª‘‰__ªèñ^Ó¬M,ý½gk¢J´b6/îÕH vªN+U³c9˜tеô ·Þø>[©^$rmI]àõÛ§jCozª%¶×´<¹j¡ ?›*RJ-’îL˜AqIb°¶;–rnqúa|+É¥¦Y³G…Sú¨amãÓßЦr”Ÿ˜]ˆƒOÇîoÔÝÙ¯ÖZ ÄçŒ-’âìþ–ÃÛÚ#Ú‹ŒßÀq’ÿÕ—xe“ÆP×Ë£V¸»ÄG—D˜ÊZ«’XõϨ҅ț«›65%dEøT>2·ÀïˆVÈ%Éàa$ó$º{VÊØ£X®T)&×Ô'ÛXðÀp ÔZ¥°ŽÛdkÿm£®!\’ES®ìP!Ÿ‰ì£/ö®=é¤Uɯ^Ÿ3¿èzÇL¶û£rФ ¨ºT1é^¦dÙ1]¦”"MÆï,7H¾—buÆ™©˜ÁÁ£°•ZâTØãϽà!QòEð²—‰cZK^v&m®Ðº«.zá]‘Í>_²/”Êž¼!¡]"vE6I)á”Öä½.½wšñ~â“:÷ºg·§\fÌqAcCü0,V#×¹Y þ>ù"„\`Y¿JqvJ81Áh:Ýä¦](úÐbç4!G3¢0C>–í&¸‡îb¥Ó-g÷ˆuÉì»í±è?@wO{éÑ©×&/q×ì¥Áéí Åï~›ôœÁCʵt‡)oñwe#Øü;éòq2²Õ>oƒ»Ø]ÌkNQiV_Rn¡Bîc¸4ÞÛ Co}ÛúK+M¸Ä©JÐøó½ ÎD£+±˜lÙ6‹·ûð® Õ¢79;¢|BS¤7ñÉnWÎVÖÐì«N7 ïBî÷‹æIíÊm¶Å™L9¼,ÖÔSò4o‘nO×Û4ßMž¼'ÃB°³wxCû=æ ³u³D'jÙ‘êê¹æ¡„to?ƒ}O»¾¦)Ú D´™¹™y|d×Uª;Ìõé§ŒÀ±!6’áÕEU±µ½=Ðóiyçª;æXì Êa)ÉæHÞftä÷ÑéÔŸ7Y/þLú_¶CT´©i¿÷5†gÅrôñB'pqnìö<0ì¼RDŸÍ¯5y`EãFäLÛb÷ÀýËfêMi¢±ÛÐSc»T|ÐÉ9íd¦fVÓæèŸÔ¿N_Z´¤þ•1Êp.¿¡±ªìñ—½XE¿edê;î‹äi×AZè4æûnxÝSkå£bBÀ£Õv­W ¹¨ë ‡¿fÜ1sL;ðébÌê`Cúñ…S{Ÿ¿ÏMßÐØ8 ÕÇúpQ&….u‰U„NÓ-PHŸ—æ>Z¨÷rUcPݱ¹Öt„?#Øš*-~|P*c†`ttÂÜv±ŽøÃì2äxƒoæýj’0väp*ïAëD×O4…Dcùcz`h`‘2Y¯x³ ÔµÝÁ˜éd¹6=Ô}ØØœ0.MŒ´¨oÔ™!è N~ I5A²ª÷ûN«¿‚`U uÖt9{Gq[ØÔ>4uÁ9Œlj/vC0lÍ©õqW”90ýX>/NèXƒÚù°Â°¤°³v duL? ô;0¹]Î! S&u éÓÎ Qbu´;¯^»YOq{‚þPpÃM²¤:/3gr @FœlVq_¯ä´ñ=Œ Œá3´~4%€a8 £÷ù3Ñ# N!‡3º‘ñ¤¾YÝ_9[¯oÔu+¦ºÉÑ‚÷5ð±@•Ò7;Lª¼¬¨”ÆÆº]oT~«¬ {³LŽû›,[_di5Õ)°ÝH.´ËŒxûºÄxj' öDJå÷ÆLÞ[RÂàñ9ŸÓÂõ¹SíÓ=M ±BÇ»á>M Úµ¬óºýE+º} ÿ²\·Ù÷’TÉÀ﵊Ã4Ùå¬÷c÷ÿæGfú7ñŸÜà?õ6Ó¿ªLÿ¾ñ‡…éÿ´ñ‡Z…ažY…@"'{Ju\µÜ-Xq¢JŽPç£* êü‹¡¤“ ¬#!72¨#2#·DH‚.-¬ÐL-Í:BˆÀÇ)÷ßÊô_Ôæ¿ç¦Yþðÿ?è?×!ÿïíÑüÝYC¤û'Ý]Jl#••.¦’òîch¤mJÀÕF[-4^±fuÒbu4@ÛÔj  Pds¢üPÈø\LãCEìï«s®íÊ2a¡0 ØÝq>Îx7;Írέ،ªµ:Žûõû29ÜfV-»ž“_ž}¶_Y¹ù†dlý1¶ªêìl3*ß’'Ã:#Kqq@ÀWΰ¡AÔ×Íèžßöã1äæËøžŠ ÃÓÆƒ 3M4ßa\Fû¬-ŽvcB­:Uܤ”ézßgÈS’jÉÇÄIÆ©SŠE?ýºˆ¾q§Zi Q‚‚+PV†+a*¨ZÉcðŶŸ]¯íµ³ð¹yþ«a´»—‰ú°ÓÌSK¸2¾P"t¼Àþ^|•›¨¶èˆßœI?|@Ÿ‹¾:ïÕ‡+MV:Æ\ñ½oàäÃÇ1-'ºfß}6?¶õÅøBüäêÔï™^ÌÖ LŸ ×­/ìüÖ¥E˜EºZùÞ•b•åÓÈ“ã_H´R–èN•Oj~E÷›MIÞÖïv”Bu.g.U ½Û,#ߤ"üz^¶GL|™ºÉ–^&‘Ö($úÕ!T SðÙé^^@+^Ý*×VÙ1b³XöÆàÌ=d`2çå›D— ¢‘Ž|BÖô—— ¡ã”ÿWd”î˜R)©+®\C"UÞtrÇf—B»¦wêT£SÝ‚@“TÀ[°‚šíç#Ö³:9^æ`ã]È¡žU=âFݼÑÛ¨—–6’ÀŠ×ðh™'ÕCF·N%Ú²ÓVùõÝ;2À”Ïb9>˜vˆAu‡é"||`ñ:2eØ6dý ÷{"ea—+,ŒY#¿¦Qq­°É_þ4ó¢uBœ_”)å¯KÔíú²júd+NÎyºÕ”‘ä¾û‰í¸:ð5¨ ÐÞŠJ°öþÚ4;C¢}ÏžìÞ®}O9¿º>øÌÜv*: /Õ1ò!'2#¶»Jc’B+±é^6o­=ÈL¬ÍÍñ#E/ÖŸH„fgóÒUÞJ|PY/R¬ŽË„&q+o·?™¥YµV°ºn‡o+ïh.÷àVãy0¬)úe78Þ •¥KìߪõÓ‡¿å¼ÔôWc>ø6#çb0‡f­l¾Î/¢ßïNôµ¦Þ­IÖU-tíñ)0åh@_mµßÏ\*šÌ×­¿…c“uá^öÏjå9„ŠÚÓH½JdP¡î k‘9 œ2lfzßYœÆ,xÓµOAž ½¬ÃÚó']fôl>”×€Èfå׎k}L{G)uÚú€ £ê÷©hµÝh•PqÞB´¸÷Ýä.ñà ©•q,‹m“Ï¢pZ|Xó/ñp™ô»R5 R²ú‘~¬:†þ<——›8ÃÔ³©È$e gUÖI=æâ ÚªNÖ=‡\U”¾ œÈ#- w¼j±w±€'…¸‹ÉÓi>ÜÍ{}r°ïò4 ´Go+¼Œ~gø†Q¥7½¸Ê$1ô¹”KñÏÂA¢Â¬± 5 ÉÂ?•딥¨J¬¼‚ŸOQqäÊÍêŽ-“9âËæ8…‰U4 Ò”'m;âÊþ+ÂÜÆÕù‚‡˜Õ®ÁSј¶R‚õòÃ@ø¡þ¹ÌW©\™1rÔJ“t¶SP.xÏ;Q‰b ¸àPVu ¨OĶ•äFñë2š“÷#ád‰ŸÅQòpJ¶œÍËß|¯ð& 2úÖ/‘Ȱ {ÁBã4.iƯþÂ@sàáèNû¹ÁIÏú…´c#öá*š4TrÄ‘mõÃüß¾öÊèfñ­œ¸£ŠsD]ãwÎþ¢û©$i.”yŠ>WóeW€Îꕺ`È{Áל7l:ºbHOJMO‹ä,Ò4BMƒJAàŒd\ø qÑÎïƒ>Œút7}òóbi‡éÔ"©ðn€,YÍØ­>˜|YW–€òÐ,GÅ#ƴݘxpã» ñ¾Mûfáy:¾”`ª>{œ°¿$Æ£¯P£L<èZrë“îSÅ Å—-4Ò̃Û©ÁJ®Adú+©Ù¨½o¨©Ö ˜f´$ЦKïd6ªl–ì—ã0‚p¾:ÀsùŽ\Ó)‘8¯ížÛ…ª¹”7ÿÊ v2­ëed5ð2æ»×ñ«žQ*Ï/@@ˆäFµ´:i1â)ÃEÁm1p‹°îû«þR´øÚñ—«>⣛=Ÿ8êó>Ÿ ›†ÑRKÅ’êR km^KÛè¶ÚxËñ…ÌLˆþ¢Þ \/ð1PôH¨No_b™‡ë(q×[AЧMªWQ¬»a5%èÿÄÆ)^„(rJ(9`ä*„6ñ ëþŠP…_áù|‚:aã#4‘ÄŠãóÅPì £`ĵ⳱ü Äšg$Ø‚°¦¨x&l€‘‰Á‹ú‰¨>%`4Åûª°Í ÒÛ÷î¤&#‘ÍĦšä"Øi §‘¤Ð¡¶ÓH3™$4 .e†¿p3IèX€~DD¥Ýš°CƒÌfQAâv£¾ÍPè"”Ú0¤;L DÙùTáo„‚H.AŠüÎ;!ÛVü[«zAÌO¿&+“>VØ Ñvñâ.³ú Aˆ¨†1w,½š@ÔiBݾ1Nà+YÊ=xªMi¯øÆ¤ºNBût$…6̬Õ7ÚßñikÐòü›÷P,º¹ Û,kx„VÄÕ‘XÍÁk$"E+0ªÊpQºËMfüX˜ÊêŸâ¹ŸmiŠØ¢D‰0{HÓÊòç1…ørš^æê¿4´$° 7ñ«¹XR1¸2hAVMMRVÊ3zסº=-Oêù›6‘È-&Á”&A"ždùXƒ&álZÈub)HÛ‘j;NınóÞUSàÐGKÔPšGÛèéø¶ë¨Ãî/ ¯--ñÍxë÷DHËÅg>¹„^0à’£gŽã™"‰Û,1)H¶Õ ‘T:ã6Ìi`Ÿ[6¦¢ 4Ù¢c¤‘ø\Ñr/A°ŽôZ/¾¿Sæ­w‹Ui(J?ec.c:›˜ .ë.Áde=pô±Ænþy»F£M„žQÛ«9öj½:ÿÉš†s^ôÙrÿñ¡ãï‡Àbø\ƒúfˆ*Œ]}(VËûù0…>9•¡õ*×êÖ¨X›’–à7Ç{ï9Æ6ïIÿ,I¡Õܤ¿Ø2ίQø+w‹Ø£ü&¦WÞ2þ¥q ƒî@Kì¤Ì¶ß+ óz‰ëFN&48“¿A—%1wÏÞº’'ß÷ ”%ØùïôŸù¿,’Lœììÿª²ý€íÿ$jÔ?å±ÅjOmÈpŒM·Zé†ÿø8t½6CC:/‡–¶,ñÐ5[Zh•@ÙÆkAı F “U|Ä=µ}ùæìôèÚáb¿’"x¸››÷fä¼›}‰°š%XÅçíÿMOSzíYU%e[WHÜðÈ8)æø8üµv¥ÿqÃ#¯:³ÎŸèOÏ· V1gÖì‘q¯kÒ½ÞP«ÿÉfé6À›Ø<¹jh?´'=?QuÃä¬Òñ€¤Mñª¿³§W)"nX¨7i‘ 7š‚9æçÁf>2Aï '¢T%AÍPñâáÎM^™P>q"mlÆÁ¡•‘S FkKL´#?<Ø‚ÀT‘Lä:²þ ®ÙòEìV©ýǰ²Ôp¡H÷”þWìõü]{†»¨3Óójm˜³ 1\Z~åSeo,USF€„!4T]èúŒue¦å|¨M–ê9&°á3pìéHô¦Æ‰cdº øq]ˆª1ã½ÐW쩜ËN2!3~¯¼t ÞéM럔Z’£59UExÃeIƒç&`"ßm¬0+"W…HAÒR®[¦ Ó©Ø:møg÷|;ïTt¶‘¥kÿD"o,ü¬˜Êr£Éºíù}0Óý8Îk×›zøôè~K¿és 3acöp$akùWy6A“fxÔÉÔírA’¥S a}'öÔ%vZ’(Ò /,¼ö÷X•KUžþܧöe‹#áBì°ÖT‡ëÃH(àgx2U“™Æe¨“2±1¥‹ ë°õÚé:¹4Å‹?«QúÀ-*³'×ü®ôhæ)A#®­høŸ<Á8tŒtªŒ/õe‡ˆÝ6ÊÅŸµ­Gk|Öò-;ØM÷qކÜÒ<1‹g”J3¶Ê dH¤=E˜½óY7õµ¥Ôg¶}Å7L)/6„Ì cv®k`@Ú†ó³ÐÌ“"²¼­”k\à›Kz4ÂHE%@úmã}…Ãp =LO7SN§™÷ô'èVÜ?ir²ñò5Æë‚”©;xmÑ·;1G­6ôô«Ÿ{d ªìÂ.»}ŸåvÎÌéVè©üž/¥n7'£ {V%÷œ´ Uޱ€)P=áêòÝ“¥ô/ÆfS>cJ>ñ¾k÷v5ÂçB<ß3³“Xeÿq))± $XÇ­‹¿6Ñ¡ÈóÕ’A£C(Y]bM¸‚¨U(ø[>“擤ÿUáb¢ßU9óK¦ÚBòåcmNº Eº¼ ‚@z,»· }5ùl®OYuÉ`ŠÉ¦%S² ÚsíøS”ÉñÔO¨;àg…QX¤L% €Wý8¡áj4 &ÉA†GyVÐŒœÖ÷ù@ýæ!Ð}ã‡ßªH+“–e2ôø¬Ð© †Û‡í%Eí7òFѹQ³Ð_¤­ÂÄcœÁfãÜÓŒ©ñ¨ÖJ8ûI$G†lJ=…¶j ,ù°XW_ðáÝ”Tú/Õà›éèídè'?ãè³Þh¼·‚[l¦y·aÎ(vVÊmokïÊ‹\ÄŽNß k_«¾?– 7.^ºãI¼ì|Y &×Gfëyýêe—eGBfˆJpV#òäfžøCµøg#cþ•uåšy3˜ÕÔ!´pó<©£y„[§Îéû¹Tñò£ü#!!†£|Û&2ÐïNY.‚†pó¡ÝÝ>óP˯2 Ž%EpùÓò3e„ÇD‚Ò=„@`Xº•Ó²µói–áõÅœKKÆ ¹pÚôÙ‰XvZU¢ D<±¢ ö¥QµÔ`Uã|™C-À®E N jK¢êÀr&`“bû4µ`oW1¢Í€[9Êž¬YÔ=žD“¾ˆú 8ø"ÙlŸUà€P ÌNh$›kÿ±·¼Hg®ÐÆ4‹Á ¬¿rgöy°CO@J øÅI†É7܆3¨[ôJhw¿Ûe¡6øO×’‘xÔ|8cCć¾ÉœïäŽïfFR:ÇG­ýÔE°o%K“ƒ ‚AQ$—¹£‡ºP,&ÀИMÊ!ê%žüAN|²º9 hNÞ=flãHÝþ˜Ð`„: àíj¹x‰½ÒF° sûblN7ÎVÞè³¸Ž íÌLv.ïÇçoøZu¨2va/o÷™V¡7¹“›Ëó¥ë~ºqûÝüHܨ‹ûÝX|/†Ô"ú/c€[×.=é\–_I><¢‡)‹þ; þkS#;ó¿ªìÿî caÿ?yÃZ4¬å·Ô0ô$‚$¹B‚„°94Er ‚ç|mÌq¹Î1±­($œ»Tk6k•…µmVkUʳJí>ëýëé?7å?ý¹ùÐϲ j¸J@èæ>{ç¼[òÊGib÷‡üö<“ýý Gýw<‹é\ó*n¶¥‹¼îÃÍiWæ«ËÜðJZàÃŒ"=˜rqè(•+ÌÎ ½ìbõ˜h¥Aÿlvd­™än´V6¹þVxnhˆÔó TwFøJG¤±öaKËèáLQû¹ó¬ŒŸ¡¥Êª‡—l g\{øñH>ö›˜/º cˆ-›f §~ÛUr ÚÂ7¶Ä@ä—ˆ G8u7zLžVùµí îw™K»Ñ.èžsÑiãKÇD¾ºL‰I°ÂFÛdš\Q«lv€JŽ’«û‚pž^Úù=z!mèÉÚµ‹íˆ*€ª5·gœ%r°Dpø­;×y9@i˜‘t—ãõ7 äª%›lˆL蘆ÑI”*n,”öp¦Orn5gcâØ¦\Nço{ðÕÏúî¶Í ¦VJrEàlÜôÒL4Ù4ÉïÿEÄJ/ô¡Wv_|e&ƒfÔ)°±šôm4ªBð"˜âZStEN|–“¤”ÿCQ°ÞýDò]æá;q÷‡Îg=SÏÅ8r¦z—*5Y¥¥ŠôÂÓ@#ûBÆtÑ?ê—ò¤sï©ëŠqbGöšíZÃC‰|NÅÕS]uþÚºt©neÓ,T ~ò¯¤`À×¹1"^“¼z 5÷ãÜÆ[!8pùR <¯±‹ˆS½J\î∑=U€H0QK½ü Pv!(T‹„Ä3ŠJ'Z 7'“jÍd±À«òùáÀjß;›ZV1îÈí»;Š8äó­•+-¦v»¶B ,’ F¾EЙӖÅ.à8#i‹ ôáõ!烆Èü×iyyEjÕQÀ´ÉÑ$%l²e:¬Ð%gЈãu =ºeþßÞТîA/tx²´»ØÈx2û“ô².S*)ª¿AÅ/k}JSMI=JY8‘¤tZº3Û0HÌÝzºCþÁã4‡4ÍŽh¥‡ÔèÒ~ìã]D3E뮀SíyÅ€hòœ‰ŠxuÆÊ!軤U-oRñ®8… ¦èhÒ˜ÝN öx²7ìq§bZ3–ßÕüZ_¿NýŒSC]+êE}ëYfÚÙpƒØá°1¼¿ Ö”®²æ°¦œÄ«|~z]›s¸óY1'D7ÿ´ZsûÔ8,®g®©Øõœ ¿Èº A*ðß9h}hÍeų á;Ÿ+y›Òzh[ð—ðÚ¿å'’b'ŽüÝ=Ž:·—îw-ó}sú<°,fgÄÅØ'Åøv»^Ì?þÎrÿqÅqzŸ<‚¤ð±™Û4}!6/÷9'ûøc›ÖH*é@óö‡8û|¼¨&°è(û‚Ö¥¸u@¤9ÎJm® ñF¬0Å?ÍQöž®rË(/{9?âYœ•ÝÂijùÔ­X×-Ý=(ÑMYÒ};Åí»ÖÇã]¶$feèq,¸[¸+K¶KûêèRë;7qsšê$5”WîÏü(tŸ”¼¥Ÿvq^ü$º›r”ãÚöʦŠÔ{íš ï—¾Ä"X~Öøe¨r¾B"L}Moð§ÊûC0¶0`“ò·rÛѬ¼ò:h•àÜVép…À=§FieèÜŽùæCüz£ˆK¿°š×çÜë¡æ±§âÍŽãnmOYPêo÷Ôç[›”—‚&/ö¿rˆ•J« ¦•áÒ¡s¬m*—eÇX†¾ÊÀ#ɨ³±eªë°ÅD% ¢üNω3F!À’‹L*ÐIC ÈÍqÁÐ @ú4MOb3Éô1‘Î ¹ê"€C1áP\Z'ìÏ^ôWÙïÇ‘àq0;|¬üË+½’Æ7†"qÖR5ë1¡£;v¾ íÒ²g,JS±?' i³ìô7x(o̸ÃeõÔàÈ#ÈÏøÌEצD,o:êþê;&ÚyV @ºßvœå¾¾çL ÏèˆdJþÜï¹ãÅðàx–~È~u> X·ŠÏ²³·¸‹X 5¡Ï83|Ùðc0ŽÒѯn½ŠÏꛫ€ lôrecJÅçôŸ]›$Vó6àÍRÔJÁÛ×Axc=œ›Í.»6ƒýâÝŽÀcL¸PÉYNϧý•†B]t˜yâÑŽ bT #E;ÚØ>6)¬”…-žJ_@3¯”Ë)jã8L­vÑš–'ž:V!¼´i÷Žàw$Ø3ï‚ÏJ5{Ÿfé[¤½e:JU¢2A±‚áG¢k'†þKŸbŤpH;«OÊ6"åYyAÜR¿;!i®@ ÀÆomüêH[Ýx2H1®R9ß%˜¿¡6}öÅB±²¿×tâRŠ«ÒÊÝ1)FØ”­tZµ±XT>aÔÎ9Cª´L!ÚÀN˜1ñÐP¤¹Þø ºádA!ÖYÎuõ™¤}´cÞ‡‡Þiø]µÊž< :Úï,2MFÒÛÉrŒ7Ö óêúÖPáþLnø=YÂ:1¢Ì¦«g<9’@€ãüú~×ù{ý®ü¶1hR…è_ÓóYsþ«cëDû›ÒÛw/Ññ·zÕg5Ãê©:ÈÙ{97LL>ÖÑÙ-÷z£"M{Ï–îúÌ®ïÚêŽútÉmcZûÈyzø4›ß±gã²ÈÉ™‰Ec2ËVÏæôìiž¢hÿüd~üYÆnb^‘NÒÍÍW\â)æ³›6Câ÷ oïzeõ»)}Y;Ö?ºMßh¶þÏWjâ<[hoäÂÈ™ ¨ty€æ{ý1)V»u^,w„†ÆÒå–|+‚˜=£Žœ¤¼W0«çÌ“Ö?<ø¢èH¢Úpµ‘AW7®CYPøß"vuü×{Hßíù]uK»ÁÎÇ¿$r~Æ`ßuª3!òòÊÏ…mÑŸF³ÞÁvçÖ>·–=«6÷à›×)ªÞ[ð• 6ùñŠû7a5„|ÛVè)fíØ·”%,Ž6¢ƒ¦£í!¯ ´Í ÀËs§f*%(·v€øræÅC ‚x>¿!^Û¢7`Výlïú)MíÑy¹¤AŽ™Ò%1´àâô)’ ã¤N—0‰†HÈLå‘g¯î2õ*‚¨Ž»bCh¦V„È2áb7Wl2tïÚ’&o jS¬Êd†36#ߨqL<!K•BÀ`‘–Ú÷þ!à6‹Ž¿Z¸ÛRqÜ=[ó”4(°6e´%Ü—OÓ—?T >& ¥‘ëùµ—®Š ¤‹Mͬ­úúy§÷sSÔw5"†\{R ¿èV@ÿÞ% ÀÛgºNRãÇ6ä žJEo›®„LGølÇ–ž±„˜4r fNÏ”Úø²n«žÕí¬YK³üܵ y…baRÊŠÃÅ„À¢4_RSÅ"€(‹¾åȇ{kJžèû¥fc¬"Ì èdwJ‰mªR¡Fð¨-Ëe„LZù‘r@³I¨ 9¤G¬𓬿M ÿâëšze95ƒÏýžÌqµ'mŒÇ„îDŠùO!óù£†ƒµ«c7šJˆpÞ+÷Òï06Ê'ß®m 2úýÓ©dʦñµ²NãÄG6Aœîu2 µoGŸ\–¼Úsiã\4½o‚¶éMŸé¥?ç)ÓÀåWÝùw¥ê÷´³|Î>0øWpÅð Y„èg•<¹z¬á_éæÄݶßÍÔgÅ®zÈã%yµ]©öáëÔôXœeNºî˜ÐBd‘cýŒlå‘_FTvœýmâ½Oþ„…Ö®½{%÷áG}‡’¥L8t;˜¨‡¤;¾-!¤‡¢™`W‰¤¢5Ñ”ITH ɳº©=ó‹Éfvã….â«}‹T #ÓzmÅHºf)Jv&M2 ;ñ¥Ž4a 0:LϨ웩ZûM¡é“ͻӚ|Ž=ë9ØìE‰v£ES'ÿJìX¥‡[…¶KÁîhìô:Ø`_;?Ý9žÒE9¥¥y$û¸wJÐÈäJt µ8ZµP,û¡2Lq±ÒH:¤"Õ³Q\qƒ×Ë-D$3•ÛQ¹¢]o߈<â8¤‡„©4 óJÜnÆ58„p–£©úø_?€¯HWÀ[‰¿AÜä3T:]8çŸã Ë|:bܧ—uS­ØÔ&öÁÊV3Ð6GðGjZüêÊÉ.‘òB°Û‹.P[~/õ©k·¢²J<4ÊV²ÙÈÕåw¾QMœâqüÌ`-qîxãšû­óx¹þèà;l"ŒÅ fo´sPY†$®J Ò˜ûGôN³¨R¯utµ°…¬¢‘ž¼Ko3ÌÞSH§ÁÒ¨F0;JÑ{Áþ-*Ÿœ7gÅÆe!‡ëϦ`£„Þ•Œlkð…76’(ìøÂæ(þàðÙÒ’·Àdξ öD‚ œbLSª28”²| ÓÉÚ> bŠRÈ9o0'ͧ3_¿!IÊJ§þ8c[­ó…¹TFJ^Eu­¤¢4öñЧ Ÿ§Y+#$8´SÃà‰ ÛMÙ"y8!²Ë!*ÜÒ—ÒÒL% u¢¦}¦x_Š´‹—-•.!ðJ!$©"áìH„ Z½"}ï+Ï·ÖôÕxŒø-¼ wÓ•z=%‡Ö‡)Ûð5øû PïŠuñ‚ñ¢ÍQëž"Dw®Þܲ487jÜL6Em{s„øpÖ×"%úçßéÇ¥J21r2þ«Êù?4Ó9ÿOÍôelQ òÉÉbK$È4 B§·»=‹ZÊfÉ™:.9Ú?®X´Æ´ÉDn˘æOÁ5+˜}Ÿô×·7'l°ˆ%pKdm¯Ýü}g¦+W+y¿žw†Š Qëoí¯ ¶,IêªÅlmIA*Eú6:ìª[Í—µ›>éÕp0ba… 6u2¤§™ð‰WÙ ²¨VG&¬ƒ³¾†!å™þ·7!˜4@Tç x]i~-)¦už7 ¶;ª[Ä/ m:øtYh ]— #½RðfþŒ¦ób`òÅrþ%Ò½‘ Z““‰YPùѤ¢ÉÏŒÇDD{€2¤"’ëqk Ú MÔ‡ýAãn=ÊË+:QÐ5RQçH1ÓWŠŒ^¯zŸqîÐ\PY¦ÞÍÞµ*}ÆÌÎí“ôd‘E •ò(rS°žg^Bà7²‹C;`Ã+r*ú3Xk±Î zÍq‹ËVß9Áèö '°‡Z´°†ðx÷®°ÿÕ+4.ZQÿE’«µ®†xÉoH." wöK•í"£:t­cXŸctžžM'ª^*]S¸öâ†á#“rÿà–ù.±NaÂY(\B™¨šùK„fŠêâ(!)ò(EèîìÅ‹&Zô}:úv{sÜ£âEU@Òý’OÒ“É‰Ž¦Õþ »½Ý\ÖVù€ÿÕT†*š ¡Ø0„%°fĘ¥kXCØR.¢¾°‚ˆz.ãû'+ƒµ¦nú†þ1Œr²´C¾!¯îlíþšëÕ\жÜ4mìr¥íF4Ó8``Ðq(*Îi3 ;ybëò‘*3¬*ͺKônÃD=ÒºpÀ¾|!`N¸²¯z$Ê6ew@…Žv% og=od± Zu‚ÌpÎ"ƹÊîC³ª?Ã<Ob|Ò&Üp  žßVFÒV#¥9¤utéPúX­bý<Ô"YdVß@MSÍÜ⎦­yrC„²hÕK× Æ¥òk¢©IÐÃ)‡¼7°Î‚`ƧõãXÈWA<†Dšë½߃©ú[^CYl\lÈšaE¤ 4 ƒHWEª“u^>ÞŽ¼Å›ÑÇÙÉœh„@²MŠtÓ§õ<¹¢ÔP` ÇØìÅN|èð0;5Œ¡°í†bþzÕ# ÐzE‚VdgL{ß4Ñx…‘ 8m(b5‹R…ªiIÊ ¬H½KØ$>²sˆ¡RjiçIÚÎf=ÖµB` t¨ªHågqÇS9Å$9qè°!LJ<”ñ¥BE+[Öùb;´3Íð8ŠŽ4lÎgK¥”îh[>—€¥€÷µ° ÞË'rw c—îbr¾GÚÞ“]K«âÆ11e˜Ë-Q6Œ^·Ø®µÅ·P ÄÛàê'yrßI.¨•×1üQTð`”üŒ}|Xú)>Ϭc0äDBŠg‰ Ù¢±®†5$¼ ‰‘ƒ.ò5fHd,¤ˆÏë{†ªÊß²@ÛÓÕL˺D»>*R·kº-/ýã3k3Dð„¬ö2ŠE±­Ò·íéÃÏùÛ¥Q,¸~¼©êJÐÑ=zü´}…Íû⥠Ô&ªJnÓÐ7rýx>˜!ï@)¹¦‡¢O÷“ùn{ýê€ASÆ^‰®_¬_‰kŨ!³SM±V͹ÚD8¦Gˆ® Ûu–xéâ¶Œ2œOZ“T é,ÌÂà¹ïTZØ ?DsU•j[ uI’YÀ]ß’¸ÖÝ¢d¤¡í§©*_dT"‡¾²s}3½ÛvR;-‰&o'葤ڪ‡x˜›ÖöBýé2ã×Ù¡§wÄN½hëC¯Vê¢ù¥EÐYª#”òçÀ†ºó|AË]+àÇâôìPùÖhÙôZûGævòGƒ³›Q[ƒ0 íºAò<œª Õ림ziËÍEX.ú¦ìD`‘&ÊBdrzË©Š·®¦Ë§ÉíÆŽ<®Ïâz)ja.·úÞûUô·T3¤JÈ,Uöl?<)vdôÍf¤ ma:.ffÔNAÿÍÚI¾WÅïâlèù®·mÖ‚¿Þ$®])Aø÷Öpú|þö4c»Ã _9ySM{¾Ïz©oÇÂŒ ²B?LætPÚ-Ç»ÔÎBÌüjìâlêo"kÐ'dÑì¥Ðõ34ÞRB•"‚ÑióHÌ'“×Û×:µvô°¸mõ“~^Ôè´´3º<-Ò˜3t¨3îÇåª,—Nw¦£žgÄ%±Zzû­Ø+ݯ¦v>âÙz¥ ½n©ÖÞ=±N5Ú”üt:'­ÄZü¢U˼AŠ=ê'Rv<ú7=8Úˆ§ª@µ+/Z=ÚW=×=“9×¢hþ¸Ìc9•õköɸÄYa¸%ÝÒ|èµù*mž¿KÏ:¾×™Ô-ÝúÈÙ«¬]ýxô³¶ÎÕª‡ú³Wœ„ï‰Ðcúžåï|‡[ó 6lÿ^]펺ëôÔkk÷jú§mA{ã_ë|?Òb|aý˜ÞiÛ‰Øfi+¬ A´ôÌŠÍòf¾‡E·ÐærQ/ª8Çö³wîÕQ<à˜ F‰Íáþ½â»éAl-Ûç87IàÙ˜\XÅfsé[}»ú–*úÄú¹®ãçáDIlæQâ3Êm÷M© ùÔJÞ$cÓðozniÑ|6Œ[»_E·^3z×íy1,at÷>˜ù°Nÿ¼·½m뉵oë½°í>`H&Æ<{Wmcnzô¾Ý”—?,ªY{”—um :ôÄ„jùóóü§-ëÜ÷½ï®íå/FüŽ3óZ#qóªÒª–G ³Bm†nój]Ó ¨ós³úö^ †IMûów KÀø¡(òq»TÉõ;ÁÆÌ»ˆ°ì­ÏÉôunqë«ð]M›|† È28®¬%e˜¦µ¡r¬½7mi bÉБDy£Èêä f¼àËn¨%sЉ¸?ÿX3T?°2„§K'ð|¬ÑÏ×F™UŠÆeÈtE ÚA¤„Eü‹ß‘&”kg&¹6":~¿§«výão•¢­ˆZäÍ£I ÜD“ÈÄ\||j?UxpÚ •z·›L|–uŠš´èxŽàÅH9®<ʧ·ÖÝ £ôÒõ<»|3Ʋ#…ñ\z‘ .Ú¹ -ýi{-tÎvÔ ¼!›äÊúú>¤žñM¯Å _ÒKa¦N5Ïyz4;´_¥¥Ù;ã:Úù¤Õ‡„e ˆÍX“ÚFÅÌ»¢@cñ0;I‹¢épøçÕø3¡@©y"gܘKå Tö~€3™̬K똪äJ/šf¥TC‡xgf±h‡#¤åE€uE:·¡Xóæ"¤Ör’  xyðýi2=¦Ã©“­cTUm`²÷ãlY_’ôgC¢É%è6”b×¼5ÆwÓæ5ˆ©3¬>õQôäœ8m£ íZ—›³.D…ú{ >qŸ*RídME NJWä^ý@yÜÇQ€Ùe%çдBí1=êu#˜¦’|F„C¬ÌGùö3ï?§Þ“íŒú¸1S¦DÛòŒ®È¬ªÉ™¥íI/Ö”ó&œˆaHNd3±„Ìj„†$‹ò#Xümu$•B/A8¡’Ї’Ž»ÉÜèNà>ó¸ODHÇŒ­½‘ñg,Þ4×îWJ4¼æÕæ– !⼫½´pÍ„½ÕÇjß¿œs¿2¼ç|®ÀÖ9;’lvÙIA¬ 7šrïë™Kª¿ðLWœP€3þ’› ÃÄ)í¥•ûªúË»fи8èŒß“ ;„É­k›•2‚ßÖTæKjS’󇩰4jV*€Ô{9!;0³÷n[³Á…Ù â@d·åØ_å˜ ÊB•OÇ€‘´ ˆž±{±Ÿ~ ç1¥gGÊ­ð…£SàQj?]…ld ˨áŒÝÂ`!ޤ×t„ym× `©VñqÓ»`Y+»ô¯à°Ž°b)7”/eñN×Μé̳Ùèßç•k®!åEÀªªJ ©KÆp€9J¼¼ÇÔBaÀ¼€¾âYÈq-!eŒv[•Ô¤/fR‹,O€íS²æ®F”É-GŽœtH”°E•ì.(c—¡ÈUëŸiæVÑïžd‹:=“˜†¥¤0 ƒÞ’«,Œ¸ýp@òí¸2:”ˆê+ƒ£w0J=£Ÿ‰&ö½/W»çp ˆL„•è0›LDÇ}è$s¹P‚àá áK·¦y˜Î±gØ’Ö Rª`°|‰l2Š @ ãEÄ'Ã(°”~ƒ¸Ý¤úØÝx‚ÿ9æç`±ÅžeJG*@PÍHÚË¥R 9»ßez>º`8ûì!òEYòJ˜K:¿q–ĪÖĨêßõy¹GŒÑEõ!’®TÖ¥ébr 1yUF\A5©Å„hÔY‰¤}V¥iYÝtj‰¦9Ž(É¿HoÁðP >YY¥‡µ¼)oÐ ‚¨Ðûš¶²Ð_mWjUCžœ‚W“ÊçU,GdâøÞ;ÁsïÙ'1ŠºÀí×aÐÀN5ŽK­ŠÑ§¾74ÍŸ¯;RÈ2Õl]×±ºmP8ƒº*[ÎÊБ¨úýA ß;º*„Eº•{F¬tÌÕÑ—f-SܹoÝÜJJôÊû»–ð<¦ÝszúE©?³P®×Kï1dSýƒ ýjÕ™ƒê8&X‘ñÙ¾“ˆu·©—òiÿ|êa8æèD>8É‘2¯#ߥ˩<õˆ«Î.¬´ãŒ‘Æv¹°ûÙenÄ\%NTëÎKl†ÒŸã°|­éÓÏ iPœã½ŸÚ£ÎÍ äÌÆÏ‰ÚŽD╚ºÌî®1‡oÈ«¿qlœâÛk‘˜Ž.­ íu€aÎØ ËÊAo’Œ‹K Ëî?<­«/åØ2 (߸ŒAܘŸ(¶ëEÚÈ›ÈEÒðÞS)áéî¡7¸}\£[ìÚßxn÷£P#5€^ÏÇ8¡®¦ª-uòŒd+o ᙡšhu£½¯@Ä¯Š¿’ úé 1iöËCN%…_ùü9ßýT0þT`aá¡·Ñ›YldHGN€õŽiÃ'ôÅØ1#úìðø}b¥‰ ½&"Ã/uÉ –Ô/ ² |jŠG^] IAlBаŸ[é{îC²A„O.Fþw\ÌÒ –½3‰ÍË÷qv•¶áÎz̯Ú 5cÂó”Ž'í²^° ³7†v½ÁÆ#:/¢E‹õ(1@`1€àZ~¨øª#<‰D,šÏÍ f–sÅ‚"1ÌcY ‘rw.1ëÈ,bºš9ƒ;F³ "D×âMÂÖâ¯##>â}IÏÄ•.Sòá…["‚îååù0X©*žZ2\©Mü%×¥ ®:ìΗɭÔO "Õ¨=çqpb~ï0&-$ßÉSË0þž>ʰI?­€ÐfMëq¶Hîº3Ä kaW‡2€BB†7µíìc~{)½Ÿ´²t“C!Ep7u¦KYÇpŒ6ù[e?0˜Ÿ\0z´ÚØßâ, 1ž ¹Èa‚4¨O$ ¤M{Ðt‘b{þÕCo’Š^ñP …DZê^p>³VÚ¨:ÙÃ/¸Æ¶æ#JÍ…}§p³bçEPb¨yÐ M‹E®v‰'²M±«.iŒ€hê?;‡aøŠì B¼t¯ä‘52 :êú}Fvé<™³#5o j‡ž%…tGÍÅ_1˜q¬nÙãŸxŒuÝF•GCÌJYÙTRC$aïÒ*âR&ã^9Ð )È‚fÑ¡DceÝ:È4#ÊìŸ<ÐûtŒmÁn¥UÜ”4Á1˜”§M1Äý2–qô«¦ S(Ÿz_:ëû…½w€°øuÙV@»cA í‘ë¹ìx5Μf˜<õÓa=+‘TTOâ3m2©žÄ +˜åJ°Ònø–±”BŸx°’ ”ð4Ngy)´9Ò¨lù–r†æ±/ÄRHës‹´Ç… ÉBv ƒþ?Æþ)X¸¨Im}ǶmÛ¶mÛ¶mÛ¶mÛ¶mLnߘø;fúµžöŽŠ¨•¹Vef„bhf(ÍÜ ìˆò[Á›Ž÷E…4s”guB­“Ý…Âù%Üe?·§gØ$Xòÿò͵­ËÓÐ?ô¼R;è1æÊ^½Y˃«}¿ð®i.Iî(°^ŽâÐÒ7Œì“Lã†-—›°Ò¹„ø‡íZÂ.`¤ªÝ­Üíi$ }³5e%ˆý‰ö‹5SéÅ5˜û?:ÒÍŒ Y™¼9åÞÉ>ÛK(T™ž@g ps E’7:Š"Æù¿•|sb ¶ù–ñ’܉+ÅK =’˜5ÒÉ^Tû·„ >ߦߖ¾Ò伬PM>g » ?éÕÈìç°¼¾ï­U£ÜäW®W1äë¼?ÀøM”çÿÈýq"3Ó¿³0üçZ Ãÿj-«FõJK ¥ÖfÚsgRf™uÔ½Aµ^J£‰É‹¥}Óp™´Ñ2Lœ<\²Æ>ä/XJ9ܼJU³Å.žlœÊÕÔÕ´çÈžBÑ„~:Ã)Ë©÷c»J§í£¾.¶qlÃUãïéP\çÊ8mU%ß®I{…øï½þ¶¼÷hËòŒ¼Ê/Y:ºx±âÙ\#35f~£¤f~ÜõÝò ¿Š¬<›ÃIgÅØq9ËN`X‚–»3ëª< B6FF¼œM–5Mß³¢›+9ju"›‘—!·ôƒ_Ÿ §…xhªsvý„–ªœ,tÍœŸtjçÜ‘ÔÿM-ªC;ÒsˆŒø*”*ÛŠf;$þcýSÍù̡݈³\‹ÝùÉ«Q„ öâ“«óuÙþ £Îü·_iæ E¶%)jfÐÒÉãöLLýä/Þ¬jÛâ øÃzVá'HóM›kM¶…É2ÕßjÏÔ~aѵ™É8îùP¿¸¯d™”ÚlsâPÊâŒ.(úiDɸžŸT½Ü5ÂÙŸÇn†&žgë$Ç÷×ÊëAxÃom‘7KÝ\syþ•þ2‡þøOͯ†˜ðÍÚ¶YpeœSQI êMù¨B=ü4‡©ÁaЗlƒB %QÚêÄ”áñÃúAÃÅ5Ú0LÌ´,7Èì%ñ¦5»Ž Hé¿~ãEž¯Lzje£v1GccîU¡/=áXÑ£’›æìU5aA…Ø_õP/±KBu1ãR•3Ié~„ƈڋy¦£;Έ/,í÷–¬ó;Ô€ÿ$VÇÖŽßÿëdøzãá% <Ÿ3‹2ípó³¬@6kâ¼– ̺ýëDÝË>TŒòßÓÇàR9t©Ñ0Äöb„"[TøÔžE=u?C âÚVÉ $â˜ÝEc•Ìf — Ž8ipãéØ!¤§?p`g¢D”lõ|K6¦ _”›=WY1œÃ…¹þW6}°º]°zÿ©iTÆIŒC€Œux,罟aRÌ'áABÄwÏ©Mª¢du(i¥Î›«0¸KLUo-Ï@²P…>—kÌîaîUt[ÃFDhßfz“.AÑ‹¹RþQ"1ùÊžÞÏŽ{ŸöLˆ(õlMqûÚì‘;Í…w£hÏÀý¹Øý¥_?á[‘À™/s»C¦_4ÌU#“êþ!÷M 0{äæLË`wè3)ù·„ѵíhsÃçwž–Td´Yœß•—Ýô^OÜL} w¥žNïJà)¯ ºŒÝÙgn(ß³¯hZ|Duš¦}П¦!9¼-TÑ8«Mð†ïD3ʲ_ÿ.M·–{?×Â}‡Ÿ-¸úÅ/Ú}2.g†Ýžãíb1ó@ygŠ}m¡š{’šŒ=”½Rîû³[ÊB{Ò2±.•{·=Š8{÷9˜j(ðWéÎ?òÛGVè u|èá;`Æ'·‰´ponÉ÷­Ã‰ƒyZ[,ªVpC£÷ºŠ`µôÏ¢ÂÒ‘}†&üåjn’èDzˆ„ŠÑÇ!KvïEà("y¤Ç‹_rw~O[ÒœèÑ’#{2÷é_f_6´`/0žýH&ŠÉzFœ5U„…“Û/Í6V-œ‰Tï_ÐÔ]Sÿ1:ÿßñÿuÆÈüG'ãšÆ²0þ¯LcÿJÐeÿ¿%è%ñ0'‹Ë0‡Œ, “¡ÅöïîµPÚøit¨IÿùÍŒÿǦŽùÿÖþ‡aÿ¿‹×Ñ´‘Óš@¥Ew² Œ>"9ѯI['›Ëé°ƒ3‰qÎBB!a€T°S, v΢l°‘ÀßrQô]_±ü¯ÄËÜ[cªs]m¦Rùð¿Ûî0›õ˜Ýbbò°YS‹×)ûÞ3«ÕëiEÄJòËíiÔºiXI¹~HÏÖ,âÃÓƒ´Æý/ˆãË¢ÚÁh[R4qNÏ9i&Šôj¦p’d•ÔW ,4bìÌœƒI™Zšyò°QÞˆ¨²IÏÔ'¥ÀÂYݪ»åÙŠüîúõ¡n’Wã;›VëÝ=‰B:^à9¯1£ØZt ä'ÁOÖÏ^‡Ûhõ½PG€†g¢º)I6xqnΚçï—aMØgZý¶vp<~lNê‚€7+*¶éó3™†ëõ]ãŽý™òàêÍšç‘X,4þ‚Ó@Î??ËÄ“ÝI6*é ˆÿ _°ž_'î?\bHÈ\%GŒGmT(åýÀ©$~K²&ú/2ŸëKRÇTý0?ÖÜÃúc Tj^à<¼"›£µ>gÛ!ôðRǼ¶ëÐD’-n|€ å!‹- æÞ1´)ÜM‰¹1kÆØ,úbÃïj ‡Oy‰Àùü{pÒÅ1!Vc» ³¥O8wd7É8rûf¦!jØÞÇŠtNÐÅÖ—3…b^=}c;Ýòv N1sÇÇâýÑ JňUºTß1S`ÞØŸË}3\N›2ÎЈ´ZUîå,À‰@‰*).ì…D¬‡Û‹yõ#­c6çe˜#ŠýhØghj-r&ÈW³sÒŠšT’0lJ 5·QV‡z°¹}JP2„^ÅsnÙþM.44þÛ$”bÅÈ *"HQŸ5m}Ul¸6Âa*GV$ŒëǺ1Úçö ³T÷Ӹ̔œÚ+ŽuJÔp†L ?KFÛ"QlgôÑæ%7ãËñÄ(½A25û@pipôž!eÿ)ÿÚ…Në‚c¨y+€zÜmv)r ð± ‰R| ·.k_üQÅ&ÐølIÍá£OêO°¸\ŽI´‰´¬yºx¤âì`>üŒ•"JŒ¢H¨Àö-Žºåî=³Ì\mìSÊ‘9=™;nX :‚fæL“ :%×gÙâ1¹«T`*K]ÈÏ»¶'-l8!g· ÕÞà‘°®zçgÈ9C/•´2ƒp)M&°4ݘ‹ó\GÁ3¶{+=Õ ´Èœ©þá9j*(éà¨xHZ­0eÞ!RFË”žŽF0³‰¾aJ uuÁ>?rjn×¾þ¦±úvHíäöpoil•Êf2Úh7ƒ‘Ð#Ó`¾H¡x45$6Ù­t Jõ`ÚÌX¦³cÈ€\'q°ø¿l9¡M@‘˜ áÒEc›ócüJï¯G$7ÊúÍ õ?7CV1}Úh¢ŒÜÚKͨ4b àá%Ôt5”`¨EûØÕ­)»4ꪢpŸoÈÎr›üR›Ò-*Å—\Û3ŽŒˆH=&íÅb Be5ˆà’‘0*¡ë`vËÆüX“Íø<¹goâ}6ç7öCÊŒ=ÞôwùßIüvrÛhyçòÿȉòfã¯S~ihXߺ@áÌÔ&=ú±óÊ?®+ öÔ¨HX¿ÞDÇ‹F4ušT¢(óW¹¥–¤ŽÍÚ]›É©èïmŸ¦‹&åΧ³'t—µ(l¯ñ!›ÿýÓðn Zò$‹íßwoŽÆÔYoA;]—ÀW«ß°cxfëâK¦TWrš1}["S”„ #¿ý«ƒ¾jÔ¯®ŽÖcáô2Lç±°„8uö\Çÿ›@TÊ·zÒÈ»Ð[š_æK=¾Äû"XÂd1P©óànü«ž«í€(å+ÀPÖ,°—ܘ=ÓŒNÖ—÷hÒP§þº QÔ[OÍ-Gà5!â÷—;—›¢ÛײݴA 7“¿? ÎD[º|‚ð̹ÍÎzÉÊNYñrí1ÕÓ™‹§¨)¤wñ¦š6ä6ü©ÿEw¾ɪ$@ÊžMj®mòº]´Q\zÎóóv=£ÒÀƒÃ!hç™5}Êu/p¿«×™‘¤ («Ã{Y ZR÷â437–9œ]Ä…ß§ž¨ÝNÚ¸â]>—ÎoP&/ò©y]_ßqbÇ»twÆ‘¹ †{}¡_JF}í'³#,’­4,^ ­ïÓGƒCNWú`Ã[ä‹"Žžwn¹«–5@øÊüË|5=0ü´SÁcEÔ|\¿9»²²žõ¼Cîmê¼qa“ñÇɇÿ/T¼utêºá‰m*~‹±œU°=¨Bj%¢ø”:J=² •õ0£¥¯a\Î3z~æ%¿Ý«?´CH &.iÂC=²(*·"Ÿ ØC+2gòd/Ey­½ÆþRÖ­"€¢õŽ:xùÌú[ ‘7q˜,:uÿc^ÚàéiO$EYž‡-ÿñW¬¼XÁ6Lˆr%v¸ÿ˜ÀU,㘓‰^ždXßè›nO”·2Smã?2ÁÓ…n óÈô­êYcÏ¡”©§É¨¼šsä ª¾¢µó:úøÈ?w‚óûÀmNÞd0ŒŸØú3‡ïOÉ1"̼ºA@P’yMðü‡ýjÔrn߀T¯³Fœ†ÑLC³È6½œ6MžÉ7Ô#}PP÷YU„Dì…rPÆq@)ªÔƒˆ×{¹ÌKqë÷äúâÄ^úžÀ[Çêò«#š\Y:ö Gœu½ýö®¯®rA:»ó#Ò­}öÒ¬Çhõ>$ÂZèIOo¸h¼¶:º©RûRhdXKwmj…UX ¯*Ïj°ÉÇ,ÌxÎ×ÝõnµåYdÁ#‘!=’:>GΞwjZ}좿ཛྷ5oÿ¨ÿß™,ÿ­;gaúOe ÓÿJÐóÿy¢§‰j%‚60ÄÒxœ$o=®¯wÛ³êoe@ ÆMbÁ Ûo%v4Ó¤,’àZ*¶X4},`úYte”!ûøò¼uºCl´ÿw¯oQ{ËöºõøÕ°ÍxU0Ü|ûîquº_ݧIªgù8Û”iZÀæ^¥ØØFOÖ¢ù$pŽ5=½ïòpªoíÛífp·N°{öY_ñ¶ªW5¨*û¨¼iP÷+h óE;ä`Êž¸¥À<¶þ»òö«9ÍéfMµ^0c‹ßvºfHænó‰%žûom`7õt‰íä¦+ôÙà}mÄ“Øô™ M4Ïν? çH5˜*{o<áh°élOÅÕ­Ì¥Ö¿”¨¹_\.¹œÞ”Ì&aÉI8#}xÿ%w6mar«º“eIòLªýFNÜþùdsx8\aÃÂZ=Úo[-Êï–ík䪥ýrí½¬Ýõ]¯f}RÀÂcºì?ëÕ͉+*6 ÃÕB3u-Öl—àiwœË¶cHàá‹C=uc¿t0²Õ1‹¶3êõt.'¤§ »qâϽ(&L¤_„÷ø;»ñE&„H .ÖYŽ“C!ß#æ]’KÇ&׬•(Œ¯Ñ»¶AƒäYRØåË[6ÕÓÒ·ªeV’ӫʶ†Ïû˜K8ÃòZ?¢"4öñèR~Þ9ëüB"”±¾&¸¥‚¿_”º>‘«%T=é;onaNjÌlIо"Oç<’B9£Ñ¹káQ÷Âúz±ÃQ£,,cÜ̺’ŽCu²*úíw§ØÊ£z{6‰œ ó”d h%BÖfÝ(l5XU_ y•U%S¥“V6å~Çø5ï—(+¦Ð6ìÜæór®M0Ó4ÄyÆZ:ú—9’ÛkÌ´Á¦þÙÈ DÿÛIÏègzg€_–Hì`ìäQ˜HK0P÷‡saêi 1ª¡¾.|ªŠ&\ð<‘ÇègPr›a 7s—t‹ZÑuš4£˜¿5«Ebz2˜ë¼*TÀþéÖK“+)~<$ýìzÝMŸYD)BÇYÕ0Ž›|˜¯oKÔºÉtÒ5Ï#˜‘êÁæÅèÁ”UEO§’ ¸vJÀ]X{­š1Bëª^ Q:å,7V%Uà 3&bT ³Í ø>5¨ÃqT@ì/­úQü}±•‡ó}´×+}™wñAÙl‰81à‡ÚûþIµž-V±¥4²ÎqŠ¿å¾ßt½èZÝÅhø9'÷˜—) —SŸÎZHLw±h£aøƒuÅ!,¤Ü|Ã÷vV¶‡ýQyOû|¼2ªl)±ùB¡¤¨–ûbÊ“2è]ˆ„Äy—c@BrÂÆÌ¨JP&D€“)}Yㄌ},>—~–{uÉieOH¾'s®ÜszКÚ0ÍŽð Ã/=æ¤8ÀkŽØûbþâªØÇäÝQïcJ·Ñéfœe± ohÑÀÍÁÍåýÝO« `r€¸N¡A'C3=#ûs9àú"ë²ÅîfÌU±WG›)ðºp/{-îC³]³Ëá¸Õþnõž½lö/ÆË©iÈ-éSD6Wôä¿ÆK±ïb·¾<7P üÙ„\y„Ñ”v{Êò*“]»XéSân¨OìdÝòðÏêŠØøîV`Ù À¦¾íOÅË€J,­Ž8Ç÷AÕ]Ï\ë’ßÉ Y q8}ë‹Àƒí‹ˆ¬l.bß&iÿzÛü“Û~ê2"— ñ,â6„„Ý„ÝgòHÆ Œ¢hÇçR¢Õ´Lt<·ÓÜ-ÊÊž1ù{\µZ®˜C&­döê– Ó_E^mî©p:|¿ƒyÀ}˾`8·,"GÝ ŸQȇ—)@ÿù™,SöüœyšÅn…¬ò(¸;ÒïnÇóêëë%ÉjQmyŠ:hMnæ—=‹GÒQ4;½!a{–KK³%Ð}ô?wXz‹ŠUv‡ Y*Šéü{&®aýÑØhì|ÅšÙ•·nkùYA'> .XŸ÷œ…°Ÿ¼‚8°§0¤¦LdÐ Ÿ$ÎþÓ)œH*ÑdW(ÁƒÌöϧ-±vøÖܨ  &Äÿj•iáÌÚž¨]…ÂJß3F˜ÅS:•™h#Pgå;ùû´ô¥DILZ»Aÿnô‡Æ‚|eg”v±ëuk„¥E…ÿP“ÿ:åY¹ŽViqS^€Å¦s …µéöãõ$*'® L÷€Ñƒ` ­’÷”ˆ y1 ˆ°((Ä©™@TÑÔP›kÐÚ—j®‹àóõRþŸ,1#?x§ !\—¡!†g|Â{mÞÕö¶:E¨ FC!áÜJ  ŽÀ -àû┨¦w.0Gã‘ØÜ8è»)jHØ+úÐÚõäd™b·È²¼®çRCºŒ‰¬† |g‹Ôtf3΢‰ËÍ8±v©^þyQ±·Ïé>½æ"BFÌòOŠ›P*Øù¸v>ŒGŒ†ÑÚÝ5¼ð Ó<9£‚‡á4*÷ ³PäyØ4v€#ºæi€áù–G£Óø:#F}{Qmèà:tq­©0:€€x<ÚXwÊY§h[V裂„PG“ ‡†+¸s‡eü^UDšÖåîÂ=ˆ‰ÊˆóÞn¶;AQé…sç¾E¼úæÂiÞŽ†BO º fNª¿ ,6È­KŽtuÕ¶ìeÔhOPR'„o:šÍ0“=áö¥KvQµíPå7§ÚNí.ø¯³™qWóöûñl*ðö .ˆ6ÀXAχ䕮bŸX½FIØE«Çd=ëÔk¸Rº)»D óì ‹hi•Dtéºq?T &ióRàŽ,éóoÎ¥TÙݵò#<;’Û³X+š¢o` Ø„'®Á½š3ki-Ñú°z$ÎÔ©WŸ¿Òͯ'Ú0ݪöš×îqšj Ìãw¬ú XáÍjõ)ôѽK7·g=€³ŽD,عq1|L¿ÊP˜áVƒ¥0ÿÊü&€ñ•~ŸVr™¼WÄ;(@D-y¸1Àz,V™„îa‰ ×.i‚*¤1%â¬+ jýVi2™ŽDŽŸèØñcÂEWÁ5›xX#“x÷¸‹¤gfØm]™N É_Ó0àÏìóåt=o**å“¡ÌÏãI‹ÄðU(†ld ꙘkÛQŠå9qý @âc“ 2·šh]Qôì­1±ŽIr/¬-9¨oË:óübž0¬ø2 ¦ÿ#Âa¢geýï*ËŠpXXþW"œÿ³K=N! –'âÕåhL¨'¾ëùrÚYeõçÎ ^”åjXZÖ‡˜Ÿ˜—¸*Ú›Ïð½bûíÍåy+èÑÒ`ÅÈÚÇ(îñšë8ûà:ÓæYŒ[ˆ¹óóý #'k'åíõ.ŸssRÊ;¾ã¨¹¹’âJ½Õ”[ë‚wŠ!ŠPfÌ‘†WkN°nú Û^f]Ç›-rà\çÎ…W³&:^íɳ"[:’Ó¬w ôiÁë$ã@91BjøŸŸìu†ÂS['rî¥[—?FçÈXå%¿*{x®ð˜]mµîý¢È¥ –³™*•åù—&j51yaŸñN»w²,fõ­Çš¬Þ)ñ`BèovaÓ[›€xlÈ‘ M¯ Ãk¥Qs 2ã\ªµ ¦Wž]žÅ*§ÖÜT¦:vYDUV·Z:„k\#c¶ïÒ..“Gw =0ZÓˆ–RÇà@H©z䈙#àÅlŽ··7Ô‘èî™Å3xñm‚àž¾ !8Üñ8âUpìnZÈj\J0•‚¡#aöŽIìLáçÂK™su1-ê%Ñ_jcË…"ÛŽ~c®ÅÃtYÔ‚°ïè÷+K&T¿QC\X†8vuE%¨sA}k Q6WÜÜ41±¦PbÙÈhd¡Qÿ´añ2e¬.Ž0„ZH1ÆY m;É$5¹ÏãKj> :“±Y!Mº·P˜J¦Ì‡q²–×ÅÙ’>Þw°MzýáäíÚnÒxÊ”Ë>X~Jö2F—:éÔ´„C&ðäý륪ǧXÚ03®ÑAß‘JO°Œ§¼JÏN’\ʺÁ#ž[UÌTÄÒ?5¢ -£† çÇÜɨŠy_Ëèäeçr-4 ’3K0m† “ê…°„ÞV„"m¥åXlvÿo0b@þí7ÜðEe*hÐ,<{b¿ÞÚ®-&I›ÔØ¡si±e¼éW‘û@%Ùòõ ±ßWº øëkÜo\‘cNSôâvŒkÓøJ†{àB€ì½jÂ{Ë/ɦo³¢ÑÙÉF‹¥nšUÉt+†@÷€ ŒÞÓ¼8,à3ð:S-MŒlT=ŒPbÓ²1[UXη„SšT jPKÊ”iaÇ‘º°W•“J ŒÔN·´ÖqnòÙ¤æIëµ Ëžp*ïq'”î­¤Üî·ÖÛÄð‹y“Ÿk"õŒ›†+Ñ„š_Å&+òYäˆ]д–7W†1ýbM‘Ÿme¹Ù,³Ò0ST±‹¡A%vTZFŠ¡øz ¦öúcï¯Næ²2²Ví¯<0``SU‹Õ ÑJåÚ“ÀÝ\à Gz]/´…Ѹ¸¦\๪®P×Ú¼º »V–è‰p$mÎÞ#€†‹Pܪ²ßš4ž_জ,.?~HñIîàSP­*U*=§:ܤ Gà$N˜cZ÷iª£âDåg.Kï•ÍE‰Ì Û´ý4•o!î-5AnЦwÎ_ÔºÌh7oþVÌ>¤XUØÝ V¢äŽÇ3ƒ4”‘?t<õç$uÈ- ÔœºJzi{ gùá;ÖaüÖŸ=4ÀƒÍm=h‡@*)ñëAçLj›šó÷ˆ€|Y œßOú¢!B¸ãùjn¨q ²_¸¾ဨ¿]þh©BhØê'‘ÏÁ¤ÙÉ«Í+–ÒϚŽGÅ\Z,‘˜Šh]W°A3úÍ,l±bÑž÷ Õ›t[­… 4Á› ÇšøâöCýF¨cúuö/öî_qz£ø®Ü®(ºí^@¦¢Â%-XL‚4LfóoM6Óˆ¦á¬D±àÖéÝ}.µt!ЙŸoÚBмXì÷Únf¸‘H‹~ÐïØ• FÃìÎ=.¸hQýi>œr¿”ªÆ5k0Õáz¾R1³ÓàÁdý=7/rl•sšGŸß2m!èBnÃó½¥À¯¥lÈ?"¾è”öËÇì÷9”0ײʩ§OcS¸²íúLǨ¹HÑ[œÜü†Š„ü/Çú·@¢ôbß»¶Z#nÏ"”ugI¬XÔJœS…²0Ö¯‚+Ñí”è¢-¥•ý~‚ºm·Ý£Vž¨„*E}ä¾ðù.9µÔ“ÇùGáêaré‹vv”‘P\Im+<'—®Þ‘=õÁ”µ°]PÍÍ\ƒáȃ/ªñ‡Ëµ×AÀ=W_Ç”¦]·¢Ôà:ŒQ!]ÇXÂë;¨ðJÊž Ô”]#¹æHˆYŒƒ½?€Y2vŠÿ„…,ÿmtÊÌþ/œYþþ¿ÌOÿÿ[Ñhþ`áŒ$kÑxd Íñ˜$¢©qƒÛÝN0˜²õ- qÿ`~q± Tn)T]4Ù1sRéôgÁ’ïÔ3´ŸÞœÏ­®‡ >AÆ…;÷ªnŽ×íÿšùÌ5o7_Ľ{=½ž÷,x‘Z=ÎÍl™–qyV6yY)'¶žƒïYt•Êu»š»ÚÅiÞˆ¾-Ý9 ²TÞ‚­*´z†ÖŽ%]}…2>gÑ#Ìm8ºû¤Ï2}BgïN^KÙ¶•Ê|Fó¨]SÖ‹é=¢3œ;á{Ħéá1”ÊĹ’O0PÌ ÄØ§óÔ>ˆüÛY Î,%ÃΦ/k´þPóî¡ކØz$ø™t™F;¤^lyœîûµpšjoÞµ³Má³ÚÄ¿”J®?#%ô>+:ÕŠË«N…c:•:œþ"šXªŽñ½¨˜å*!j²cu·ObÿNÍÁIÿ¾°_f·VE.¾ãˆÊyLH´iÄ©Aø°§4Uf=:à:]Ëåù)})y“¡úîu?ªZe‘ê%•ü°À5ÓÔóæó:ºãÿ‚yõüúxZ»ÖØúkíÝóÿyÆ&UX°UŒP§hÐÙ‹ÄÌK­K¾¥ã«Ô+ÔCš[µ¥y9é<|Ÿ!vH2ä9X%»îÑ™)Ðþþ3”ŸÀ‚ÁÊ«ÅAzg·ÐÿD}<Þi;ë‹Á@geÙÒ%eË…Ko®ô냘¾ 9Ú»™°rý‚,Cµ½GÍÞA¶òÊ1€øgô)Êê nrÊvõó™J+Ô~wÍÚöoµ§t;0žç/$‡2‘ ðM•AÞ™l“ù sÂ¥ht{sÁ»ëÈlóé>y †.þ|õ== 1 Bê2ÇäN)%'ªð§ó‰õ/…¸-vEßbašµÌÞ…XÜ4Ôò“\ÑŸi7~ôP´`üb6jZ¼^´m0M¨½1MÝWM.MÑw‹…ceâØ”jÓTVìádÉyCìPŸˆ/¼§¡\9×B¹§œ¼JLñnYC2WÖ&“w£¢ APóÎÓ ÍÆñ½NÄz-hÝÑã«Fòk²Ìb;¥ ŸÞ¤£žŸqEâ^F•ÂF«šôV$ÇÑ%6D‚œMF*³ûoáX¤×ب=‰ƒ(o§Žlë•…t‘»…ÿÜÍx·á̪aÖ?:ýlæŒë•*¾Q$»_²µôƒ.å“S-=…Ñ͈È0™\2«Fßp§jN¥)¥ÂÄTòŒ¢Ê½ÐÛ@Lw Ž°¦›l;ñú UG-¢Fø ¤è-¬áµ}@ƒ *~ÿ Úœ+Êßnu¿Ú¸\Òè 10®= +ë¿åàʸ:³§Žc0cðO8‚2¹åØŽ–%@.ÐácÖ~é3Ë0ñG%TûWÉRÎD£ao: ‰%,¤nR‘~ËçHÑÜ=Hí‘§ä*~¨®É`4ŽáŸŽIëpTZ¸Ç«ÁêTDÙ:>ƬMÂ,Üž{_Æ…NWƒª·WQ“ÚIì•ýâQåöS‘U8ÄoJÂ÷nm=:–5l jqô ¢ä´Ef‰ ]¥â¬JqB)KQñmkþÉ„ýŸÚgḵ¾…³’Z\N.¤ûÓ˜fà%xy¬ÀA[.À›Î*û9—§¹¬¼oßçuä†úÀ§½ 'Qµ¹ô/Ñ4UŒ¬vA­f±ÀxAݩCBUm±–ü'ˆ4Bá'\¼ PİFbî‡ë€ôê&ž£â¸!BÅ'˜óìvœ8bvt—4—ù~9¹Õi*36„VÙÚ*ôáÃôLÞä¤uפþôUÐXÜÌ•óg‡‰øS`ª >f>ùêêgésúó§OÙ`_¼¶à|Mký7öjmº«6‹å‹6aãqô¹”pÃùMKwëw¾ÜÐõàú‰÷àcqgh Z8Z…`Ai$s*’î20gáÑÌ°Õ 7Ìóƒ[NV-PSÅaÓÒ4BˆÆa`ša¹Ü=îp*æ5çܵçnn-‚w’ãô†áÝüU®ƒ‡Ãk††½ÎX$NÀJP€áàCck̸̈eÀh%¼øÔfêÑ%~žu.šê¨18¡–)³´ò×ç¬P†°Ìj9•¬jü餸B• ‰%â–·a14©¨0–¶R£©ôÉb†Ì`á;ƒ²‹FÚËÚ.Ÿ†n’àÉþ.±ÀR­Qÿ*ƒ?ÂÞê†ÔÌ3 1ΡŒi3 e o¢,8[ròΜ¶=vèG•{ Og¤Y"mÃaÄ”)d„ƒoH Î[ öÖW6‡+°,Ô"0=;ZH]B6s‘­’uÎQjeKG¥eÆÆ7¥ÈùÀ›á ލ«meHd—ñ$nÛ[8ƒ©N„µs>šÇ‘é-¨,¹õu#¸}²‰!o×ø|º< ~VÄf¤°#Ò2*i,•X<ãÑK=6Ùg8;%/WëE ¼[Û˜}pãYƒ“Ò¤±.¼u¹þ4rbœ?5ä'Ìú“í¬­„Ýš‹—!1Óù±ò@2TuÙÊÁ£¶þ®åœ“‘ãÌŸ-¬—Ù_Š«ö¢#^Xì’|<¼¦-ˆ“|/–iy®Ò%K׋á“:[Gǘ1R¿ž´‰¶§ag ±z¸Ôq1Ñ£aU×åÈ%Ýääb-Ú‡L8çgK¶TMgÄÂ3ÕÂå?=纒zIÁš×_.­Ç;Ø9<‚mn):0~µL×Òwñ¯§QÚýKˆÅ®4¶ÀªHë½à^1•Û%- ÀÇ¿%]òqRÚ˜œ­±Î3ÿ(R3Ž!ߺ»cõå’0Ò%é;»Œ½Qµ«|í uÉèÂTÒGDqW?ÜêÚxÆTÚ_Ix¹À(mŠÓ ÷ËéE׿›R}ÑÅè¸[pÓµ”¥ R™ bÖ=Γ…(5/~äüƒ»´9)Û $HÇVÕ0Ò¤ö°$ÌkÄᨚ¼xø›¹æèŽ4Û±fõ,Ñ Ì$(Åžê3•W÷ñ~?Ç2ñ#&Û¥ ð€ÌDÔ‡ßbÍQ{Hµ˜Í“XOV Š…0ë {¼€ŒUºÐ¨#ƒ]äEã¾ËƒOEêòzœ*¤1÷xžI^¹;ÿÀÕ3·MQ•œ‡kÀáÒìH»Ì[Iÿý†<áûOÎðß1LôŒìÿ·úŸa°,lÿ«0ØÍ5d5L¶`gñëô `þ`$ú·Ù¶KC ã×ᮓ–Ö­ÚÛÉÚrë–±×lWžVžO?k¾¿=Þ7—ÓQÿÀ0xcÒ7Þ7ž:67™ªé¨ßˆ?6Û³ÛÓÛÌðž¤?ÛmÖ¬šígäŒ-ŽŽfY>÷vé¸ö˜~ëY¸—bÏ¥ çÓœD†äšÖÞY½Ó,Ê ¡k…ùòl¶Øç%¶X‘ŠÛSJ‹Oó¯Ã ˆ;ìl,¿RQ²ä2#¢Ž_ù9Ò4Úÿb›†:îbGFçê£èœºÌrõKeYÕBÄj1nqv¼Ç{ËGš¥Èø¯'ƒÃ-õŸàO‘ˆªPeQ÷‘µ. T¬z™6pÜ?¾Ö ÿfתë?Ÿ·aQõ¢µÖÒÍ «çGÆ Ô}6¬ÑdCT˜}/£D(³sÒ©³q!¨>”œupˆàa!´>ÙxÛïó_ï6ënVÝ©ª[Ç3MS–¢²Uöí†Eê#ŒçÊêèÒxÞ ½° o<žìÄÞ4~ÈÜ\N7Þè½9µË¢¸µˆ«kÿ´ÙVUs¿§{K¬ü‚ÎÒœóæò:†a¥A¤tôFWtÈHq^s ÕY•È^‰‰EËi—0¼ÌFHjÁMs°HGtëî×hY?¶vÛ1µ›b9vúšÖüP4›Àb«dè#¬«„è [/!Ö#«€kH#Ïn$´’„ç‡%³2‰o[Ù'»¬Ê$e™X#+$ç+Œwœ/@œ´Ý°^œ‘dX#ç1AP¸J™)"à‰©É$PN,aO=¶ö “À°ÔSf8,”Òê^›%E™º‡‚’¡þ¤xÙÙ(×–RÔ*²WÒô¦^WJkDÁ’I](úq ùߎ§ imͶmH-§>|罌…4F8Ž…@‚…ý÷›kˆ±Icr¤ðL*8¤Äõù$”¿’ `k® i¹0ÐÛÔ/t!MxÜÿàÜ/ïÚX±ëúkl:‚¢fÚéÌÿ6÷±Ìc€öRʇ¶mÈ'C™t³ k’öÊæÅ.}3®Xuèúbm× õ]3ã.ì˜ S'¦0š²~MgçÕ Â_?5BYˆ²E64©­ÎÃŹžv2gä€ ‡bÆ…Q ã¼þM¼É0=ooŠx?»êU ¡¶I£fŒ:ÌôZº7A ]/ó°ÿéx·¬–S& žær æ|0DùÎ"ˆtjdТÃ*ºŸ·»eç¢Tp.áÅDã³,0°õ°àý¹ N‘?d ï­ç‡[ù¶ŸtRnhóP?ÚŒ[á‰uÄ"5ZGæ’} zƒâ¤”A²Aƒ8'!­CÌà2Ñ©ÛÖT–*A똺L‚"žJš¿ïê« y¸ž²R`@/Å\fHßÝ4m@OÇÌÈZ`F6®¸L÷9ȵQQ§n(8m:Þ$aÜÂMíASµbß1‰¸‡PJŒQj+ 3üÏ e­0N¾P£;ç ®¼\_Êÿ³\ãq™zšÈzâPA÷_dY\í³±^K$ðì›Ú(zÝxz3P†*>éëÙ…mÆbq8óDÍl7¼‹ûð'¬‚¬ 0ÜyÄ@.¯Æ>W¥‡¿ÝŒ¢ëý©ì¾&W;®QzȲ³‚ ÝpLs€©aÁZ”óäS)ힺUšÅ¾LŠ6æõ@þQ³$æ(ÕØ$¡ h?·èŠ…Áű77Ô 4ån7’30Ò\¹*’JðDgXüÆnn-+oéGð‰²¡Ä·ü{-ãI“$õ¶¿btŠ÷cï µÐ é@Iõ.±¶aû-¯¾TËrùë+ÂdŠ»ÝC±½—ÖŒ¼p,‘ Yü‚#ˆ²ÌÔ÷r«;Y¨±ã„3­@>˜HO}$#A^úrD O¹UG{Ø^ɶ¿$¢Òã1¿3 ù¥µ-Y×¢—-v\P\UCî°KÏM´[½¸™Sdü! -"È N!ÏÕ´æM÷9.éÅÑs—þJ}0õÀ««â——ÿuÖ §ÂŠ‚åBøÚ*õ‡ÞL¢‹`|]áPm§Â*6^ﬧ‘ r¼Y*— |±Í[DM ‚ ¹Ždk¥”>ën½—zhÝNÔ~W]¡ŠÊaf˜¤¿Ð½Þ§¡<–ßÜ`ÔãNõ2À?Å"'…D"n4uòÉ÷n—p¢îS%9x7sîª2†Ð¶üNÔ²u·½ªK*z‘ÚàI~¦sµϺê;‰³šršö~ÞO ‚¶®¦‡]biVo–Чëý@I‰-!½Ø%ƒ<¤S"œuG˜—ÕÜ«½ÊÀ“YÑxæa×LLlc¸vR-_¡”Ê{™­„‡fK ôfžU¶Vß¾ê?²U"ÚbIdÕ¼Õ :X$L¬z¸Xé¶"‚^ÅK@uØØgØ_Ä)/–Þ8‚Œ ÝUØuB²Õ±Z“ÀÔ‘ð£lVoÑU{CgõœLôvÜÙ9îøãkUΑ6¶Ê}òüÈt–«/%ÝÍ(×mP«ýgg¹˜f–tÏ2×Qí‘ Ÿ•J+#Ö«³²Ò© Έs¬c|Ì#)ðÛ´j¼|õ_Yý‰&AoÃ?1Ë×›z™mÃ9Ò?a-it/û­¿SIzc?‡o«}z^·¼FlÜ|ƒ‘{—s}Ü .Ð0;êÌÃ’©äiÕ‹òÓI¤báÕêÊ STau]-[)ÖmÃGt×äd„阈.6Ã脽ˆ\Ķ„–ÿ¬¬;ÐH¨š}#ç–48/²EýG=9+I“èØàŠ-+Þ©X>"K?üo•*þk‚#ç#AÑRÂÉÄðtÍä‹W1ªCãÐÜ<€îzæìq>ÏÄãțҡ±·ÍÆ,¦È"¶s!¼±†)¼I,L×·¿iÒw˜Ä·àCÉÒÀßRbi_;ÅGqXâËlºäO®]³ãÉ&ÐÒæU.h?NR+'Èü •3 ÎÙ·f"]üÃ_dˆýוڪªÈ]¤«l¬`ë]ÕA¦j"~æî¯?ÞÄHÐÛã«ùbá¤É Á~3ª#ì‚@´VP|'cµ9óG'»Ôª`Ø¡-·Å]“%JìWaKw^i§R„`£â¢áæhüvúDãDâ¶FÌû÷cÁ¯s ^ (ì•»âOg»=ËòÏi)jê”­÷‡ÍgFø%þVŽŸ¥Í}—;9KÏØɯˆ(9ÿGÎÄ^ß·ØIɈñ³'(É äkÛ$Oëm\祓"ÿYؘ‘ ºÄ"Ÿ JÙMÙPxðî³ZfxÁï‰?" ÆhÝ?{o˜sS:vÍ%`ZI¯º¤Ç¼Mþß§y¬ R.ÝËâÜôàk‰-†”€¼å9QYŸw]Ì/j`5´Ž„Ótµå|¡Öq/«>X–ú1–ìd¡ò5r óŸy|7ðùê!Œ0ðÂí (³¼§žÎ[Ÿ[MZ›¶qVìxßü8GãÑdTìÔ:JÊÎZV½gÁ€gGÀÊà‰yþ&¼GÙb0{ýˆFÃ÷lìÛJ­SÒb\«}]û¤« +š„×£Qæ"Tç"Tþî÷ú‘P¥×ªì'Wƒ{,F?X‹-ÙѨú ©óaŸSWÔœX z9mu Ä–Ö¨¥ÇéƒeÆÃyõwÌ–ævMÍHÀl<:'OtRÜmF5¢Ï·Ä@g¯†¹ì¾SVSø…‚6˜%Ha R ´”ÇsºÛ˜Ë±â‰õV[®z›…³’ݤâÈÚÔê5…-ºh=—'N Ϥy…ïØú8_T§¦5ÁvȘû+³Iíצtº/2Ý<%r5v¾ßø5Í"ýR¶ÿ#üeb`ãø¿Õÿaßžíµo¿£ùg§µ‚:悽U ¹Ïê`Ý·n~­XÖ{·óö­«)˜XCK0ƒ`38hŸ!)æo›¯`AYlb-¸¤Êl±"Ü'ÐUl±ä«Þ"{t·Åñ¶Õ5æ! ”Ãj!¹2<÷6õñÙ‘çtû•¿™i´‚ö[¾—¶‹õ©D‰<÷\'u§’¶&K­¦áâc%osˆgã6[×êAÿOem«rvše•>ç½ûÒÂhÍQÙï’ª/âùìY“I}2õÉ𛃣7×s2W—εnߌî~¥Úà¡¡fmÜøÁ©|›ùUšT«6u üuŸñ›àˆøð¨ò{H.æªWŽ˜òNl´j¤Ùý›ç£}‚WµíŸÒ`†ýÁR]ëØZ»UëMÆ‹­Ñƒša>V§e?‹—î¼¢W&–e7Û¦&;eõ ð 9ÂTâOyL+O'9.ºÇ®»“GÕÇÌãÒÌ öp]¦m”ˆÊh +^”Zr{X.é¢[«ÙšÙjl€þ«ý¿Ü­ÉòM瑳µ‘ÈnJ>ŸÈ»_RûèqÚð뉅&׆&Ÿï£#¿õøCŸBâÈ@²äñ¸dá‚xògÏ÷“¬?+"ONãYö…qÕHÃŒ´Æ^`á 6º­¬?v©­%mù„ àWöU í„¹0hF–Œ)éJ׺ê4ÅWVjÿæd8©+cæ'yØ2Hâ‡ôÙgvòÇDz½b'­ u¢©51øªN››®ÁNejª%}¤5^žt ,8½ôqÔ Ì¿ +a›­l—JÖ…žÄ³½Ppupßò†Î,^hQìiˆ>Ç:ÔtïôQ1Òûý[IØé§ƒAe`ê&²oiã*ÄŸK32GüiÇÖD°RÇ2Ë(-çïQ¹‰w[O0cʳМeÀ™OµewòšÄzVn«Amt¸âml×~\óÄÈùˆ0Ïá†cã›{ó-Zœ$Áu#ŠE£C½ùÕ| „}4%–XaZa¢m²ÎÓE$Š%ù[ô§VhvYÛy¡Ó·¬¥–æÁÔÀ€¤³XYÚãÇ¡Ðúi5üdrZàˆ«øÁá47¼Ò÷ŽpØ`˜Å`¤%ß ©›˜u¶‰±ÓðkµyôjZB×—NM¡ÀYt¤ ƒ³Î4¨ U±†ÛäD>cΫ™º äÇŒo} äiam~|Â󠇀:…ã`i3 ÜC=ÅD,ȌДʤª®À1Ÿ&ÌYóy-0 §0ªõ–¦L¡åù'ô4ެzµýô)\µšñ¿ÎÈj ø@ êŒf !ôêF!óÚ#èÃ@ìùÀ}tP=»¨èIQ kk„À¥ÓO¹/ ÃNCÁ¬.X<JôTj¤]. l‘tw&Ô†ò(l ôè`î×÷¶ôýÿõ‰(9ø¸{ÐÏI·×þ@zü¢@sf{âñÙf—[ýKª×½|_ ãRÁÊOëøQF!TqêðõîQÒ:=vÉ:…g°MTK~2Æ]†{dÎàä¿’Ä–YãIòMr_Ëinü´î¾°þÕa0*勌Ù ôE†m¶Ë­EB¤i|; ìéÀøö‘µ²ìÃAy ·¡xÖ• Lè¯öÆÒÑ}TfÀÜ›‰ùäÑ ü§Žì,Pö–â8160øÉ¿_ˆB0z@›ø‘’.ÝõqœÇÜ‹îÒ±Hö˜ÔEÉ"[Ø~|¾8ÃcÔNhàÐñƒÄ²»—^Û“NLy‚†áJXJM ªÁqÓá! p–¡H)O÷ô‰½ÏÎÌãKê…\‚Âɨ0tO‡¶ 0'çòæèœøö™"Ÿ–“ÍË6þ~ã›tI-ºätÖŽ·cˆ(àöRMvÅ-㤈¿¹eGš 0m%x×®‹ôs¤y<ý÷y#â÷ˆètŠ ÞÀû±¶8ݱ{ #€¶ÓËP™œš³iOìž ²ž:lê›ôÃÊ üÍRæ7צѥk®ØÇ¶|QAfŽêwÒÖ–UèŽü úì!æ½×Nu¸óÚº¿d€ºÙ|6j[ØP˜fåæªöJ‹´p„q Yc¼ `bÇVõ©3”nüSZ{¸HŽr?0ÕL¹ cžõ/¼Ž¹]SÁ[Y…™næ‹‚æºþÊ(“’5îÒ Hãxðîß5²×ˆNÜ¢™) £;ê;6ì(zBlzø®û©8tW¹l^ŸU>ƒ,óKDª3Ü»q~Ôzª WŸÊPÑ]{Rß0]c‘…ˆ2ÚiwI&þjàû-}6fùv!Ýr0>kƒò·›¾Òyn +Ah¥®žô,-¥`°§0õ‘µÐ-f[F^›¡Œ'}òëvþî V9ey…zÄôƒldŽº…FΑF¾XL­>ƒÍÕ¼ò°U?¨ '’—ùÉï*/!–}V#ì=aÐ…ŽÓÒô¥QéÓ|sð})} àó·Yª¹*‚64#ºcœl‹„8ÔjËäèÓ!#â<§|ÿðÔœ_öj=§ï¢8=ûû;¦SÒ–ŸÏb7†Ð™LŒÉs’abA0¨ûð[]‚jg£“É“©'EykÏO"B¯`ÑÍd|L‡y_9³¯ÅߨÒù%…lót8¢’O]›Á²ºQ[`bïø#—ýïß#ÔPÌ[,ÄΣÉÆ±ÕãZ„ypLú(ÅzôåÀXùI¯Ö8µ[aÆcχ-¼TÀ,ªRe&¢(Ðâ=ÈeZãÉ¢ #¬Ú’ø4¹š ždëäi„Ú+Lº…§èKÅ¡Y>Üåñ$H"æ)~€°I•ž`†’HH£¤¦[„]à‰›ã£)†4xŸDßA{Y%‚ÉI£ÿ­»üî6ã§Ð'š£r´×ºhfáêu‡Ã×/¬Ø [ƒ†Ï}Q•K–Öw†®R‡4ÖÞÐŒ>Vž!ªóÄ•‘„3 Q7 ÊóÆ™q‘pçF´ðŽé˰ö‰Y_„HÀ<\”A¨àé®°ž“þ|Š(PîW@?óñi ÆÒ-Ó44è§dõb««ö[—.,„I¿Ÿ~[âÊÖ‚¿å’á^Ê+‘— †c vH:÷xñC ãXæqµ¡ÙÆírx§ ¡qÂvå'Fùåþî? Ö\Þ\æ êdq0ÔÕùå¸áªöi·ëygÿ<¾çdÁwÅp±á!S-& ŽT1™rž¼é¯ÑewÁQ›Î½I—/¹èN>È7ÍãÜ!š\üaÿ"Fz¼çöÄØÉŠvΘ £¯‡ž‚=Ùqµe•snÜyXæ.t cžŸ´ %žûÐþ´yÅ2f E‡*’bÍìÒöftº½ÀÚç;íI´ÊêƒlÍdl?á™õ©4 æf]OÌ~ƃkât’&ŠMD‡xÅáòznÛ\C¤Sð]%,2)úÞlº·á/¿€¸"›HòJ¹³ëNÅõŠ‚£ân»sWÕ¶à5efi½®–N— (ôø=9¼>…ðÆiÒßè }“nj™¼Ç€3³#µô¯š9†\Ÿgp™G?ÑAN‘a ÈË`=¯žã B|ŸJ;©÷ùÜ7à˜½@ÝŒýÃþ­€èÜ%Ë\l•ö’±X J§Á—ŒèVµçÏ”ÿÙ&Ëö"óu°(cwí¶zãA*;?!ž^Ó~ºÄO? jŽî H¬ñÌÊ>`H|èFe¶HŒæÓ!þ„Ͻˆ|pQÀil¨Wj14ËR ½¹é,‘$Pß^‰¯&§ƒf]¢&®Ãt/µâ @ǰ'/Ü~GÔRO“6¶ù%çà¥À¼ÄEþL$é°Ùµ -®â‘f: 'RDQR$u]ƒ»Xã²ÜêIJ·×x‹Eª“èRCã`mkù|‚’ü‘î|êtÙgÁzšD˜~ær%©3k¸I½OÕYD3V ÌË „‚è66dU ô§_;ñáâ.·„ï>Óñž8&ÞÅ-5I«|/]ƒ¹ùî¤)šúdÎ÷œ("Þ=´”ìåBØsdpé°ØEVâØ[ŠÅÇiŸÀ÷äK\Ï·["ÔR¨åêÈÛ@»0™VQ)«ŽÐ^¬AµÖ®5\zÑYc4œ[™Ê³(bG¦C×xI¥´ž¹Ÿ-a»÷­OÝ=Ò-,°†lIûw6º´±%—$/ÓpÀÚÈ/ýp¨«>Ί⠿d:½V{¥UÁqô/øXe?öÒ„jà“Q²ãJ㎻¸m8FœV ±¤²(¨0S= £Àb5²q"¡ŽÈ<ýìÊQ˜[µ üå:¿GK¢ý%u~b$jÉëè µàME¬±¤árY©µÀ@nBs¢ Ô °tÕ¸¾ëjÂuq AK¢×£¼ºÎk-DE_oh˜7óã>‰éH ú©©ÏÌâψ€¯QÏÊ»†ÓiÌá¡af!Ž·#óÇ~t7HË ?!Q5+kyµÕ¬Ö´ç¢5ƒcfÈ–(Ù΄õG2ÉôÏó3ÅŠÉð•• <´-q-ðj£iŒ4¹¬&çqÕ Èä ­§I3}×f@b»,ç¢á£á*çFL±@ßÿ5½dnJÎ¥ËÌ”Mln#p5W¤VåÌ`ºµY¹®žKµ»Þ8'!ñ•sq-ñá*§ÃVæ˜ß-Q3ïÁ-A/îÕmk[M(Ö£p_,ÓÚAŸí¦è¢…ümæ`Áên'Ít\ïJÆn{¯Ó<…ÃúûÏðÐ=ó¡Å\šÆ`ž0pßHÝÿ@žÿ[RÂNÏòßUv¦ÿ$ÏìÌÿÛÝA¬ÿ"Ï©Ç)Øq5ìp¾ãj¢$G-o·»>Gœ…â6CŠô7œË Û‚4¹òšš“ÒÐB_Ka¯wWo-o“ò¸!®Œúo»NsGn¸oØ=v]Vîyï_£^Ewq½vȯҿG<]+¸:µ2ׯåÚ—ûaãZE®ÂC-ö}l›î†îäyTÇPD¨V½ËÖ}L¿Œ{Ëèž>¨Ì˜MÃì¼ÚÅ«¾NÍ Cu¾Ô½#ƒ%ïFXÎŽCœ8yã/r0|ÕTÇk:¿)Á½êi¹èÞÓz”êOr²[M×Ï/©øXò+š7\×3Nß1BAø­>‚SxL‚[Þ1Uk­¬µ¿—öo‹Ë1W'%³bí„Ï7îÖ#ðÃp¿7œ¾N„—[Ä󞑇¶;5~íŸ.Wl÷6¶Ò:m·66Ò;2Ymë¾úá­Û½‹z¶5‰±ní]üªyŸîмilu´W†dĈ‡ö1\7A᢭Éç+ÍÕ?‘)¬¤uÒCg)C;Œì6çÇáÿ†y.j:ÕzhÜ(mÖk*NV¨ø(FÓâÒOýãÊÈ´AõÛøzœ.ÜúàéØóþÐbŸ“ˆö§éYcw;´úüZrX·¢1ף躾àEw‹nðZb®ÿÍ–:dG¨E×å·]Ü®ñ±ù?_—:|CƒMùÙÿºMa•§gJfÉMÑ`PÅÞ}4ÚL¯ ä‘¾¦fN“n¸W‚»LHž“Ó+²öÚ@$Æu‚XHt´Åúze]MãH‡-³¼µ;£S–Û8áPÎÛãŒþ8£C›¶M塇ɹ2yA•IÀþ|Þ_¾I ™ÕÔ€«Å!'¾Ìý-+e%,žúÔÊü4w`fuÿ¾µXd¿E{èö˜øñ¨ËÜðª{Y¸ùˆc Ý…=û,§Ú9ÙÁí<caÆ©íü…¢ßç? t¯í3x ?û®õ±1ý˜2ð° JãŠX<ùúíyuC±ÎVº}¸çïo•Ø Ïú ë¿Éw%TNôOYbƒäÞ?ùV¤é“£jóHÈÕ ýqÙf?®å]faŠ5¥|ƒéTǤ9¥<£”Æl?k›XµG»Lgªº€IÌÊêjÓ¢lY•²'çUYŸnqÑÇÔ¦ Y=YC+ÔÔàIk[~垦±·â2'øâ–ʸ«‚Lÿ*ú8ü[]a-Gè ÔÊRy¨Omèaêõ¯+-ó¿Þ\|f‘nrÄR›.‰±²pjÝÏcM]_`˜ŸA©Aê£ôL©‰$þRµèÕD°•8ä÷ Œ~†kìLÂLú'CO~BÎ~s¥?ŽD•D«Uþlì3s&ú¯T¦tü†¿Û$ÚÖ9V˜“ó¾—,}ÚŸ¬1^™ 3¢'Wš> ¶?ÔY“}ölÎÏT}ÿTc¾ À °7*N,E([4bsï]`%®+5J•tД ß\¸–´ÿv8Ÿg«J%ðÙ‡o(Yˆbæv½nm€îx‡ G¥_©ƒMÊNC2 !ØMcY‘'Òa—ÐCWx“Y™6X’8ž#Îkq8“MŸÎ‘“ #gx­ØGãn€c…æ,€¢æ|:xñÈñórti”°°v…GM‚¡RˆcXÜ#=Æ#?B™d8ñÉÉäp?öôAl­´-¿þ¡ùÖÂ"yè{N²îº;yÇ QTó:ωÌDÀ“Q¡}U'\*WsþÈÙf.«N³³»—Òö ¬ÔEÄHR¤•!õáF(ÅèŸû{ÿßk ‡®¬ÿj ¼†Š}Rqƒ¥m§üpÍkÚˆŽûxpîJì—\Ó¼9_4É7 è|ùãϵ$X}9LüjxÁn¡…Zd/A’$BV©¾5Ñ%鲤ÆefÊ3½Â(}BÉfJF9Á´¬0ÔPDC&°дH*:áš9eã”r[ü€žØ”Ðu= €4Ç}ww†T´P'¼7Ž”@ÿÔð+ÄÓ°ukŽJù1"•òŠ<Ï+sH´A §InÃÇMÉK=C<±Ãó»Ñ~ÂéÌòŠäV@™àÄÖúÛžS£t±¯›{#žéÀ>Ujm'g¹MË‹_0ÿcÌ…™t «æÌ𓲟c}¢’h[å cQL¶{X¥×8U+V!i—^9OjÏt BáAsFÝgl/†ßf¾­Ic¨FoÇn«æˆß`0×,ÜRBöÿcKÌÄBÿådÿ%äø_Q /%¬5T64ã`iñp‘quB¤Ý®¸®.FÒt0zÄe£xúÚŒÉË2I VLK†F]®¡Hl[Åyùyý'O/Ûe¯Pþ7ÑL]qOï9N¾gç ¶Ó„;øï{?à>q_¸Wá½È~¯xçQ-½UQœ‹Vo_ËŒû™M±·›î«kVðŸPM+%†7U½Uy%©&žõ¯"zƒ#´1t¹DâÍd5&žŸ°­½ó.Ý=ô˜ØñfÐ\ÞjÙ¼‡Ñ墹<§%Çv…š¢j²ÑÚ0yæ†z“O ´›2xU׈Quи”H&ã°x%Ï >?Z¯ÖZ¬«4ÆK4~„z±º¢¤>½by ³¹pA‡N@ÕiZ4î™~ÜZ&r‰[Brz¸–rr㜎¼Ë8tjŠl§TK~ÁÛ !µõ‚jêö MÃÖºã;É|˹)¹ƒ4$[Бº¯é¶n™ Ö-_YÛ7f_á›÷¤M©¶Ç¤g­40xT¸¸³¥n6Î` iUÚ8´%ÐÚe-*©Æ$4fžµ`[Þ°J(©KÅ”©mµÒJC`“ϯó¡„Ü­(+Ífž «Ø GK²ÛpAH¥ÂMV8Â@ÉâÌ;Së@G0…„ÈÚ Õ‚WoñÐîÒúº~>ðػڊ@RÂ—Ë ™;^;ÐVãvqáïvyá"½ê¦0LjÀ×­\J[Yï(ÌJeq3Ökšˆê≮Í8;‹!7DâI`˜aÞ̽þ×î­¹L¯¬“åcì¢YmÅ›»AiÇ›jTÙR”‘c\{/‚y3Žþjznˆ©Ûç Ÿœ_~3w/ç-Á”·ì$_ñ’xÔ³Bi=à9ü5¯f¬Wœ¹¥’L"Ó3Ò«É.¹–}J7Ê‚8T‡„;ÊFpm³*èä„,°Ñ–æ4¦Ñt ðÍR>¼`4ëF‘zØëSW³Ò[!¯˜2€u"IBiCæDRÅCбHrq áö±ÉÀêÜ—ì­&´)4hpäünÁჂòíƒ" >fÍ=©s õzj³Pk»¡#à–Fžyƒ]¿ ù$QñYe˜ôlm‚ÈYRk·;,Žˆ¶ôJö5q×EŠÉGPBZÔÕÜŠÉ:7'ôCêÊ ÐŽ¸¦å8ð¶PöOí%º:+ˆâI°ç“3a°p ½<–…Թɿ—©-íû©?0¼Ž¸§ÿ%‡YÔ°%βCó0éùæ‚' ½Tâ…Š³Ô¡”-ݼ¼—†Ò5Ús(Ól•†™Ä¢Ë(y #’4åïM¬®7¢r¹ÈÄ‹.í«¨2ç8}D\ŽŸ¬ŽÙs~鮢†‘›iÖÌÛxrÇXf°G ¬c³ þž–šo5ÎB”ŽtH4bá:F2¾݇À¹š †‹ý,8«¹lsW¹céU¿×÷˜]–. ré²_ªK“&È ëåèãÒçûC ;U8³â»GOø´”`¹'wÆ– ãÄ©îùöéï¬ï™ 3”È 0NeJüXÎZÜ3ºÑ|ƒxTæÎ“2 ÃöSÈ1)>–뇛¿¥zZ bóÐ-P«%Ý æU,Šè­8èü=  =%Vò¯Äo rð °­œìXäŒ.ê{ª@ôÔ½t&’@8‹ÌpM[dúúa«Q²T}­rá#WÐÞ÷ŽDÈì)\èýWäü®ºUwfa@‘b¢Ø[¼a*\¥KÿãÙm÷^ßàá-!ÁÑ.tzºw‰ùr¨iŽõ[ƄؑTè#€“P“vËx˜¬DëLxÁ! Ÿ]!&#‰Â"PÐ*JÊ(DœA߸<*Å x¦Éž¼5v„ÓăÔò°¤ú+¹ˆv_h`ãC·@íÀýKFxN!¤Y ™‡8íeÙѸ0x銄š/1’RÜ%þšNDOËÊÄhäyÞZ h‰£+ržÔƒ€žõž â{öœc„]³KÚŽ‡+ÌV"“ÍSrÍ%)nXXh¹¶ð5äl7ãÀ'³BPdñV Ôf÷˜ Lœ7çkÔ2Ò…û›jMY#*!olqä4æd|ÅɼPÄðmeõµ‹q±öx1¸dÉxë"‚ k7Ev‰>¦Qšh:cƒ8ÌšomÇ>õؤ9ë`wñó1 Ìz†ïxû9;WÇ’y³ pšC¸¾@(Pä5ó>®Agå45ñÖ@l“ÿ`˜eDAS«¼¸õƒ1÷/o¡¼Â.õƒ ,DƒŠ7ŠÒ»ºE¨øØÖò|”lù a‡FÕC®Ø¬ÐrÞW|¿ÿfóAª £D¢‰^8,£ Ð;Z¿.jù£wûINÂK|CŽyôÖfQr†—[§lê"*WnL±„±v2»ùmJÖá ðþK2Ò¦{$ˆš©·qüѱ\[¶VZJ"*Ójt1ÓjŒô1¨àf PóT *ñ#÷`ê¤^]dï9igNzµ-iDÏ]£Hiê1XA¥VØÁ}A#*ÆwüÓäy ©¼Ô”x¶gˆŽ f—!'”ôë”ü2¢€Ød(îø5Sv;¶Ð§ž"/ù»ÛÝ{rMë‰M ô4TÆ÷Çá˜`˜‰)˜ùŸ¨£¯a÷~¶Í´ÁÜ /F¯ÄpPxŒá ãkBh#bN•¯ååd¯.ÁD§4DΊDêjÆÌÜ •~G=ÑÃVE"Ãc3ä[¯9„æž\’GøD¨E®K¡ÍG!Œ)7Ì'eGè9T®Ã5dä¬h‰wÀŽ@äòç6w»ùäÑ`Å Ãq”Wá}­q(PÞ÷\'Ï-‹ïB9{^*mÊûŽ:Ré1HéÀøIÖÒRWCzvüèÓ_[â–z1_ši9iÓÑ>6Ïf“§»(j¤½ õ¶”súVŠ2Â)›Óßå¸^~ x)–W¼7??ÐþËÿ$Ìÿm`Ìö߀•þ?ÓJXéÿwÑTêrJj(mÍ' –’5ÒP4÷›*¯—î';o?ˆÊçÂÂÄ›Ÿ&^‰ø“Œÿ&°!l-Ã3¤Z3ÞŸ|÷äœ6àŸî¶:ô¾l=`¤a‚_w½n?\ç>²Ü«1a‹1ßÃ|jyÇygyU7Žðªà—M©¸ò@`o‘ƒm<2Щgór·Ë®©ð%Lž¼ñVG‹, v¢Mo¢ì>ÃÄQЛP­OÚ•¾=Çz›gõºŸ }ð'j& Ñoýƒ`sK8T¼uEd2-E.ÂÕW::¶gšöÿ²\%Xˆr4­^œMc*qÅÕ^+3UÆaK"!†~çÞ9Ù¸ž´@ €ým_½dDã¾Mj| D ÓüâšHAhN©ÐÊwçªSÞ–§ŠÛ'ï?Èš‚7¸J ÁßuEZÆAY–Õ·^ôÙ‡ü@‚GÅ͈BS«É £¥€ø­u±ubùûPRlÁµÕî jã2ŒòéXpíÍ ûG-Ð-–´!J8Áñ¯A¾";vr‰¾~ÔØ÷;”?8@‚éɪÑU¥sæj.üe\å…=°¬¥æì)¨É¬lÔ|Xë^jw†v É¡€! ~›šÛ§·Âz¥ñ:Ú˜þ¾òZj«EÆÄì"¼bfÃWýMÌmÂ¥LKHm; ±n¦íU&qñHƺJ)ä2ÊÌÀ'6à]UuÅúßÓJÀÇÀÍæêp©#Ïä¶ë·Oú¿ÒeK,30/„¿e*è³^JôËç¨9¨2°õ¢&ýy™%dzc‰ïä)b6\š)»¢O«7¶Ÿ®NA‘õXñ†‘É[á‰=¶8Ñ ¨]߄ŧfÞ%m¢çº,3¤ç§ i¬eܪÙ4Ú›v–¿ ?o;l÷åb.‡ÖÃzÙ•Á3Ç"§èsÁÎÚ‚€QDèÿð—‘,uxÅkÖl³oRÇ Qk›‚g]><âæßfh—d °h¿Ó­;<ê‘p¦`Ãm·Î)zm'ëÚNÿÙÖ“Ûº‚â’þ~L×=$8³F¢5 _oŒlK9^‡½Üø8»séèsªdwqKñWøÅÇãl`WA$ƒçàB{Àи"ÿ“[¤ßIžò¥ìh,K6ÇèÆŸÚg1N^F˜(Š+Ž9BC3“j")7lFÁª†&€s°Ù >¦mzÄzÉÇè‡^zRRÐ8ÆÜù j0°ÿ-î3ú2ŠYE/ôÚrŽlî  ° Þ$$I‚1?©µ–h\@ârÔjL}ê~ lµ‘ÿwÞ‹\žÚöÏ,ÂF` ]Q¬1Ž˜bòÂ\‘ È̇‘RXª”„RÊò ´n®¤0ÚÞuì}‰!˜©‡Õ[òù­/š2™2%VR4œ ÅVœ ü‚öeSÈ›~M±®_ØøËù¼«Ó]tèEe *¬9œž‰åÿiâçÏh’ׯ%¡k®ÐÚõ Ç‹¸«m@}Nu&CÊþ€¾ÉiøPÐ !ï1ÖŒå?ň@À·ÞñJÐlÓ”Öã2·±½©]”épIl†ähÎQSÐGV‡ª¤Ý*ˆ’béh5 µi˜ÊRð%ŒP!ÞQÕÉ·;Bž@“16|s~ó¸úæñO*{8K›[Õ-®–œÍ¥MÖŽ7{™)©v´U ¶ZWKÍ|,KP£lt+ =ÜõɺêÄÜzžÝ ç)a)àŸQ².­ö(±0•äHïQ’Á@¿v袌ô~È<>y hîµÀv1'é;¿vŒG­{ˆ¥‚ÌOÞ 2¥wˆý¯6œø³l{èÍ ûe¡SΰiÇfK¿› –oïûb _3„‘/Þ6T°_ÅCu±·ö̱ š½æ¤ªÍ)„÷ '»‡¤‹^Ú’”ê碃ágåjêAØ‹ª)47O9Þ³•$þü"ø‹:BÀ´±øÜ⳩dP|PÔLý\-p'ìîÀ…™FT[ïØ÷×Ç$ÿÔË­¡iŠÂÇv¹ñÕv.G7%µÕÑÀßÄlìvWÓåðy"LÞ5ú.fœêȸ"]`b-yDc»ra¯½sRF7êßÓdµ¬¼žl®öQÇ\Þâø,nSuÙ÷’ÿzíG÷Û|ñJ|² {Š+lá-ܘÝX–YÑæÓá,91ܺ€nÿý@Óáö†Þ®›³Æj«ØŽ ©êx9ÛÃ!ÞR”C– ‘z<Åk_°÷¸còý8Nù^$…Ïð9ÌZuׂdœALÍõ~U=‡Æ;ÙþòøÄyòµÃbî ³×6{ÜðsM+ê³ft.ãàLÝŦÓ_ƒÉ|8^\!#•ZC¹„%ÚÑÆà,åwFlgPõÚoÕ~õþâvθ­Ü|vbI¿a…ÜO•LàVøðòR|µÃaÐ~ýW»·’„¶/1 ?Y™›^Þ!âG¶u…$(Wé((Ì%õkqÀŸ^²–EW¡¨1’î ¥9âDXÔ)ÔAæ”EçŠÝ¯aŸ_£æóöV1€¢>Тy¥ y¥úZæTc?¦oŽšž·ø°t_î[PtyW&ºá¬ùT°rX§Ô‚#7dË+’a›[{F¯Ôx6Ë“lëXÕ×G[¾æíƒbfBÓCûViŸ)KH?^%YÚâ}Eðoƒ<Ï()óùßnHÖex+dº½Ø?“‡˜Ê¯Ä† i|eKópûŒL>«}nŸÉ%IÑïÌøœÞ³Ef»0rѲÜkαD³ÿ¦œVl’í_Hýn—>¢°ÿH¢î*-Îï÷͘på@mü½¾gFM£õü+D>½}u¬HëòXôBùYˆj§p͆„"̧·²ÐsŸ_þ)4ÿiN¹ºo›2îæ¶ÝÝèdK«Ð˜ oaÁˆáw2]töI³_Ö·íÉRȼãD”Z Ý·“¬¥½—ä’†K`UA :ÚùYzrF“/´˜OoYÑÀÑ0â>¼¡ç83£I*à½ÃX`b_¬‡$ÍŒcSýÐc+”>tlR: STžV³íE(u››kçwZ®×"G•úô¨I™Ž4ƒ8^ܯV³&eH+`×®J“&gBR q›ƒSã¡Â’üýJ“v"Ǿƒìwà&’hIûºá3õ’x[DöžeàÚ Ëç•\}¨ƒš–%È„Î@ƒ3г”(ÞÆ¬£† ÔÅl–Ù"Yãê(³ÄCýÚTξ=†›Œ˜¯§×:¡×`HJˆCåÌóëB´ñgÎ¥$ÄoÆY’,5P"Kã»±™v ÞGK¼_?~ík'p'T‚ óä{úúz¦)4Ö”ÊznufÛ\}f U»ÂºA´ú¬*[·ˆAˆ»…–-€¸ì›†¼T5ŠïD´øÆ2€Æf`³;rbg÷Ú•ÊžWælßÐoœ]wëDLveGíª "PèîÑŠ‘Ç€ÉÍ“ ^{`–w÷É`M1²MLV€,Œ&’æxBOT‹[šÛ°>âíFç·¦aÂÅ@¼‹§ft ÷õ2qã'ekû¶Ý½iäÄŠñ¾‚ÕÏÉb›ÒäKcA5Oo£)´Ø¥ƒÎ˜\iç7‚yÇ׆Òh|îoçh‚‡dE>u©5`e™Í¤ù‘"p^ŒÙ1¯îŒ™ÑÆ(’ÐÔ.™¦ó&3b¸v\cY—•?½k×sŽE㇠QO9)0«=D𽬬ñÝmˆFîaêîOå€J ~0ÆúAþ¯.Ñçªï Aj5R›_+¥vNBPÍ´hïm |ÝÈÍ›òA,Í~¾Jƒˆ xyÇ·òlÆ•éã‡öËͧ´Ò»z¼_Ý[¸û£b¹oÔÛ[†“g„dõ}²ˆã&#ŸÔn?X Ö5"ŠM›1O[3”=9ó–¤…µö¦òƒŸâþ–»DxŒ°ê(ØûŸâ·H!½ÔÝ•HhSãxoøWN•v„"¢÷#¼´1†K¼& ÐÉÓ4û¥òEý¨±&ç•.ÀAh£Ëy“Â=nÝ¢áhZ[Ô¬×G†p %EIÁ4 .ù‡ûñE5Z†ƒc°ZŠ˜:NazEʯ&ôTټܒÿ|àÅ•Äýxôÿ 1þýïêÿvÎú¿K;oÑø‘ÚÀ€c˜5 ìß`7‹nÐÐg`5KÊùÑÍÛð.…,€ ï,&é(ºi€UD5L ÅŽ¤]ƒ/q»Ô)jVtù'Üÿùúœžõ['@”€hts=ýñÞ5;ÅÁŸ¤Nü¯Æùívíýåÿ£µ»éU®~ÑÑJŠWÚ½5U|(š¹L,ÎhˆUîÝÍåqî,aEˆš-šWËÿ5þÂv’ï9Er2>Rع™#Ä¡C¥ªþuóá ÄeÞðAîÎvœ€x‹gg_ÔcÃ6|”Éú ÎD½&Ž¡~†KÏäÝØ»FçÆAå— ,ø6\F±8›®Xß™|—c‘&*o±É­- ¶8ØX›  Æ´Ó=3êØ¬[?pÈ–_ĽFÃÛ Õ+{Ú;µË…ǘúi@èlnu0¶ •WCgØý+6;k@)²íì]”"<+W§å¶z‡¬¦Z#@ƒÔJúKhâŠ^Y@''qPë’˜^ rˆÏÀT±Ûºé€õ iH1W©±L,U0ði¥MùvPŸAbl¬û’3:J°±Ïbúö‡Ï+¤77­þò´[Æ—_›¨‚Ä(<»94]dŽX†l õ-Ú½µ×›{vôÅÊëþT+’§ó΋]\_°&ÖYoV(Ö€±b2`’W‘X©ˆë#ÝdÏ…Çû(P[—²³¤zˆõ}@ÌÐÇPŒ }õ<¶ àJ 'Ã]ËBåC8ëÑ‘-‚ ÅU,ƒ2äØH~‹„ÉšÛïR#'K öiË6÷ É"6®G¹ÀÌèÍî:A=-v˜ŠR’xçº1jÐ(ÌN+«ÒÙHµy»3mœE-šm´pðx†zw™;òáû*Öª6½õVãÑ:´tîÖÁ–v íÐfò@P¨AUåGjÄaôuÍ/û§FÂoF§g¸+;в=ޤ­O^#y¶áMÖÖT\-˜¾=|“ÿ Å=sæáYJ™…VÙdHÂâ‚Hæ‚V¦²[­0.½<™—ð;d]˜œ¼ ä £8 ÕÁd€Žïâ[…8欺PP¿Dd4£ŠŸî›ó•€Hþò§rWYŸÈƒêÊÄÇ‘ˆ;ýéÔ¢W^SL¤›Ûã½Kû¾ aJnFDûíjÝ-m W (+–HìUiÒ-ôøØF?ÁCõêЗ ƒ¶³´°;œ1À«_ÀD´kë®D"Êp†ÔÙ,Mr_‰HÝýaÀ T;ëc†§“#} ôìfu)k‰8,±Ô²U¼ q ¢x_%(ïÄlýª2E·ø-@w½Cq¨¥lŠ]–]ÖËÈÉÚJ¥;#¥BÊ£®2ܰ ´³ùš½ìyõ\:]ˆ†HÁŽ?2g=T‚rgs€µÿÓÆú!—éÚìoÜ÷îÿ—é—rš€de àiò{Ð9Ìñ›¸ÛµÃ䣀‘LûómÏòWìûŸ‰Ÿj;=~O¤]ÏìoZÓ¯Ú°L!H ‰x¿X8;Îr À~ù^Rð¼p%„vüYÎ@E°ð¦s–ñCŽÍ¾ƒ8Cq–r½m•ö°¶(´ÄV5“Ö„FD""SU ëÒ;’Qœxól+V‹!€5ض,õ„ÈeÍ„ÊáåºM¿c¨¾NeBà@¬:Å$†#ýô)öXo’«½=Ž»óPU°×—¿óý) `˜‘ö·5UaõûX½òûÂCÖ sT’eÅUriCº £ÙI¦„DâÉ,J& ¸+å}‚_@P½©F"ü[(þÐÐì@žJ­iÃsøöö5Õ› öåàO@TÇŽ+”R~‚|érÓ®ì%yAë$lù†§Å:úëO>†ï¼!óm¨e°eÐÍÚ»“áã«u1a§-‚Ú}D6­­qÁ«%o4 žèˆ(X€B^rVǽFQGÝO,4ªüN»Ü ¨=>>Ô¨L'NþG1Ùý\Jrd•Á@Á*ë«m÷ojç½ë‡?G¦§v·¹•qhFôŽ~ÄkdkL5βzh‚ JÓJLk5¸u*&Ï‚¶¶QO Z­A(¤™;Ý€Ÿ@´jAhò˜&8†ÌÒ.U9 ÂŒƒù¸% Æÿƒ±w. ’¯mÛ¶mÛ¶mÛ¶mÛ¶mÛ÷¿¶==oâuOD÷¢·u¶ß‰Ê¬ÊÊ<Ý?@ÊQ© µ4IûIî6 «g:çª1¼8ÍY"͎у‚Ô Aš E½^°,Û[ãÇ|z¸A|VЧ<Ÿ™ûY&ö¬gÓ6¡]_ÊëG¨ÛÒÒžvA•OO†¶ã|+—Ö@þ†¯ä¨ƒÕ±‚µŒî)ÙÖœÃK:ëÌUãÏÖØNŸ¼üwÉj™ÇmXò~,m«ï3ÔËî9ľŅw¡=‡xÇcÏÙN¸wj‘ƒd¨O5œCö2`ót12› ½<Ýn_?èepn0=9ÞªY/@v¹Àæb—6êä”o!e‹s6{¦Á|žÖñ¥GÛìMhž|¼­Â`!Ðd"±eŸ] ÞÚv¤–¼¬ôr™£J– yŠäß<*D-/(ßÇ™ÛqKuk"ש")sj7É|kZ_à*êët“ÆC^l|½Ð9ÍŒNÖ¯K#7¨íþ˜G% ¹œŽrHOG%ÇV&‰!Ìûç ©Ö‘:Š•ØßEádöã)§”§*ª <Ò5ÔÍÂ$Ûê°+™YáÊOQµ, ÊSq˜@‰°5ž½÷³FÃGÙg³2Ú)Ò;ÌîøOð>Õë~è[û‚óÛ^/ã ö ςüáꉠCwïÔ:C¯XÀ|8ôq²èW6ô†ÅÅ3÷1wm´¶»mûê羽ïIÎŒ³'æeBz½‰¶ŸgÔ {ª}vRî¥ û˜²xwcr–®±ÙÕÎbälV3'eõ¬Žn]4 ’bKÎ TI= À¾*˜ÔœÑ5DBN‹A÷¢íÙ2‹i}Sxx½¨T»–qUñ 3Oc^f#ÏcÄlÛil0cí=9=q\á©óTƒ`Îq›×á#—‰#¸èIí%Ïv¥çÞ6•cáò”»¡ –®/UŠöO—µ‘c7°©;®æ]Ú’¡V–äuýÅz“áú ¶.»üñÍü1`!\î¿»e©lR øï˃ƒHM£W#‚Û^é Ž1õ9?PQ»ÅøÙì³ø[;—‹Š§Zs®`kO£×âo-_çpÞ#·¯Èœ~î!+kqöÉÖÒ®–µøßøÇ?XUÿ3þgD,;3ëUÿ‡ñ,ãÿj<Û«õ#¯}†ZÇ8–ApÜA"{Óe œóÞ»ŸŽ Ôš…•’´AYÂncǵÕjµBd+›ì&-Zͺ¼%±©Ï`¹ôº\$¹ýÛ—ûöÔ7Þfޝ*r ×¯–s–ó”óôÙltLDÉvÎÿðõKŽœ/ë£Frûíú—lÔÌëX©I2úz‚£Uîß1&Ú}®5'Ú¿ñkRäÕ¸ökq´äÊ×À¥mÏ_féÁPûó+ò’šˆñ3’>ÿpáaD“ž#ßøÐ>ò¼Aýù|©ã ’/;ŽÖ¼t½˜jM’ô¼™l—ëÇš˜C_„zLüv\ý”#~ŒT|Ý8Šiå8ìRäÙ5ü‘y¤“Óû é¯Û.3M™5b¤ÌW€¿Kô€óÊ“„‘‹'Ÿ‰7« ǤlS¥P{ƒÐ¸¼eÁ„:Oz³¹ ];âÁ„ʳ¡¹Àî#óÝ'ÀZáÊ$?’üO¹qñ]ãèUˆ27òl)ÔÃ.®·½g-½®£š^RF<&:Õ,¸xuúYà¦Æ³c¡KLœ+P «Ë—IÝÞ¨¸3®²u‚ã¼M: Ç7Î{ñ¨[ÊÇJn¸¡ø,ÃJî1]ÅRYàð—fªLz€ŸFºCÃ%4ž‡ËëE¦Î%JâB¦|aÐúeˆ$/ûé“.u‘ Cc6iF˜§¤:oØe>0¼ÁÀlZ¸/¨—llS¥KÅÄÀ¿‹éãá]LØó'€=t¿a Û˜À±öœ¦[ƒL¿" ÿj.¢¾€ ³nA¿+ü-Óâ å^™°ý… ×óò|z¸|(Ng«/e:­nªa‘dºq§R\<óŸ„ý„èÙ€Ü ç1§ ´Ì5 Så©9aØÜ)ÝÉ¿§‹!V3z úÇSœŸ|É,#F¥1¶¶Õ<ˆó²U¨b ÖŒ¥Y²Í+[ÆànÏ3é^Ú1ìv_\äî#` JâÊ»‚¡÷:ß]¤äÞ_Pi/&7'™d¥ºü¬yr»…ŒlmSbÕ×Bü‰¼UR²2Öœµø–Y]?¤®ñº˜4 …e‡°Äµ$:ózv¨_\n2 tùk…~ °¤Ù›”Ê J¹L¾nQÊK_ðŒôJ²Ì:L~¥sÒ‚ñ3§Éoxë<ãÊÕ:š–SK4@ô@Bo"׬`á­!¥¼-sèãRÁ Úž´ðS.L´:dâ{ —‘ŽL"ñ~†PÌœšzŸ°‹hqë‚qé«p#ÃŽm *H èàJ%xc'sT…/¸0Á3cành¯Ë S4 -9…›é׈ִÇW QÑ"†jáV,B‘ êäBF3Å“À4 DêƒV`Ũr¢yžEêÓ×»ŠSYÑNÁL“¨íq«Šôyb¥þôcMMõk÷ª¡ŽñXxB !ú¨¿'”~_”Þ=„öv­Ã}”IÅàš±ÈÇ´ü^ü;™^´ ó{P§JQVÇ*««´ÓPœaJ‹ ‚·yÿ*=ïU¼ÕôמJ ¹DÅWœÀ>è<=÷]9M)æß‘ÈÈŸºÝ¬Ñ˜08ÞaÌQDð6*+ l8¶¦ÓŒ¼ÇCó9ÂT¤" \ô 1¦€ÃØZQ€a ˜÷â³¼!X®Ä\ž§S@3õÓ,œ2¦‹IâíøbýVh±$‹îWî´b¸X!ÜUZ5Yã »Ç*:÷¢à|Ñ€BÓþjžò œx%îYInÚ/ ”²NÝËçÉ9~K)VC=Dd'?´ •7:fn`¾bsDƒñ£‘Ž-±VØå—(mñIÅ»€‰“”cÄûÚ“HZ’;úá»Ý¿Öz§S þ©º¤Hó¢Ö0Nð‚/åH¼•”ÌáçaÍ^8±$ú=Îõáòg t÷ÁGò'ÓõC¢IS¹4®ª`A>¥¹pÊiçPE±‘¬½s8G€`´q”Äa'WG¯÷lXÈ‹†—q²A®6.ËÇsfeƈ€õ©ó÷xCW¿_”f…E#ƀș4Ù¤–Þ>úà[Šöˆ¾ðheqØl¹e¦ÏSŠÙTý*|³ü²×{îø»SH.Úä(³aÐ_â/:3Ò.)àqrÇE®Åóªä5T9sD¥{–G¾ºì™òâjI¡¿?†T€íúH=;´®t¨*| ³Õž?n*:ÛôÓW\¢ð-M)S=#íR²MEo#+‰ÿȦ)Ñã–àXS9 GÎ:7"`~‰¸ÚrÞÖtýó™]:¡ÜÈÁ÷ü”.˜nh#IDæ]30ö*@Ôä­Œà)xQv™Lk3=1î!dJðPš›¯D$”‰h.„Rþ¼µÎ¨ØZÇ¢Zg²«3”n¥_ËŽ0íÃŒ³é#-ëoŒÙ›JH,.¡«ôá(2‡‘½;&¡ª"€• þE«\Rúp!ûö#º‹î),3’²__°‘J¹-ùØî2ÜWÁ^íì,B)²¡­MicV½û6•á‰PH²@†W·}>¡Ä‚—|\©óPÔh ±š.ûÚÍE–=]ÛÛ¹ëѹ½»¡×4HÎ?Ûzg冩.ÒXçÛÁ®é›¬•V¸€»Â[¬»¬ƒSyº%y‚V…ç˜Ð#•wÃõ: űæCó¨jÓÀ’ ‡[ŒôÊBTÁ 5»ÊK²j9¸}Y)i«W•…R½´üÃJä~cëxú*[âKhv töOAÓ:Ź:GÀ_¾¯+EÚÅ£(ÇÎ[a“Ÿ‚ t¾Übðü»æË~õi|ôTðæèMÿ1jN¥tÇ«÷GâðJçå²]‡>½X½ gÇïåàsoðÆYé꾞?ÛóJÇ\ ì³¹šc[Ñk|^›)žNOvï ëÞº|~99~Y½¼«®ÐA·§1ìû4¡‡ÆS냰¢mC¶ô0üQòbu¢­0ÃŽ–yoÈõ¿¿y–y«­uÚJ=º!ñòûÕë[ŸBÈ »Çh ¹!bÖóøê £ÉóéyDýÜÑ\>Î4®¢ž&f©"<ÌÒ ±á×E†–±:\Z*ø7#xƱyÓп÷µk·g·Öï<70ÿöb?:W×sP` Ð@{ÙÖ3j8¬~4 *ûù…m|Ðîœ3×QNYå?ʨ Úêã„ 3ƈÛ$ñ<‹è$úX1#Ã('üŠÓVðì·u{/B?ìb1¢ú¡« ŽY¾A¤Zˆrˆ/±U{w·”ù±}#[ú|0é“INìµK È-~*ñÄ«‰õƒ< ب0œÍn¡²ßƒÒ"$µkñºßo¾îFéeËΙ7Wxug•†…g´ Š'åã>àiƒ`^<-ü*‰µš0Ñ›0Ìȳê­ÏEð(É}Ìðæ©Â/^¦cIl½ ʲ€£÷ý¨"<Õ’"a~~Ê•,Óz9PVD¿¢Ï9~ûrn¿;Ý\¶w©ü0°¯ {ÔSrå½áü‹ªŽ4„Ënwàó$"ôÉF]Ͻ}-{t”ï(Q–yžâ­Fµjz,šj9Ìãiêù'@°âÊZæh”f’þùõMàÆÞ©… 9Á`‹Gs]¯õ¬{Ýúrs´6ú­dòÄÏ5]‡Bž®=Äoë¥ykᢥ¤úЊ|¶¼ØbÄe{‘ŒzAdôüXËœü,ÃSn}€£ºgį‹£-ˆÅu—ÿ¼½èPl-cäqèë¨+}O`’vM9`gÉ*Û`ŽD)]ñ!Sªƒ%«èßQSwCúd‹¡¤SÒt9Ýey]¸©sµöbwŠØ©v8 Ý™~“›¥Hå>eZTš%táýL›\)ƒ‚£¨„KûâÇ\è…Üg£j‘¿/ª¢jBÍbô™¸%@î Z^nlYKõm·Rî¡è±<ÍZ{HŠÛ”ÐŽ½8>ÂLŽVÌ»Ž6¼Z´ˆ[¿$™ÆÊƊ߼¾N°Úª¸%™tИ’&±=ÜÔ?eWÊT~|ÉgŒbt(cžŠœshq•¯q)ð_š&BŸ¤×¾.É}é Dá#dk÷§?LÎÖ ©yþÜtz‰¦ÖŽ@Ø.SfIÁ`ñrÿë8~H³qM©X´¶Û©úÁÓ­J3oãëûÝ·Ö]ô}ÿ?Î}ýW.0xY^¢‚8™ÏIé»D©Tµ::~6e±ŽH³êõ1™®ŽúÊÔšŠÛú¸vÔú²:ºß€:â.+¯«ZªŽ‡ªÞÜà¡Ð=—Ì›aPe×ìZ×C %1N 5!ã %ÑÖtåM«5°Ûïøb×–¨«­3ÕÇ7[ͦï›X¨Jý[nuõ+úÕÖdòO «;î:¼Ìu¯±?yƒ>>÷TA㢒}wÀÙ õCÙ 4£èû|&«Gæ…åjÿó.o¶õ¹U¦CL[aËc ‹_(Åß_Û÷¾äýKCg]ÿ-~Ælp\ÏkZx,JßÙøaqZjžëª!‹mÍõ³ÈGW«ÿ³¿ˆoÞû—³CŽ#+o°\ͳm*Þ¾¢þNo'†—Ëk7•ñh?ÊŽtã²éÅ3®î0¼ l,™ZþO¼I sÈõ‹rÌç¾`œÀéVðì}²9Ê}Bβ⎟žÚ o|†ˆwŸzA¸tÐÂ÷øá¡vº9÷çRâO£Ñ—h÷(ÑòÓÆaÞkÙ‰$_Òˆjvø³?k”N¨ÐPÜ¿òhâ_ñ¨Ûš†½‘¼©’ž=º;ùy¿?pýf¯Üÿ@¨9ÿÓÆ†é¿5û'ÔLÿ+Í/edi´4q·kÁ[ XˆBÌÇ2Ž»ÌF"J{u‚Åm¥P-›ÎV%Ò~ j¥Ë[§»Kþ!û·»íåÝåÜçwÔK;ÍÄ™7OŸ³œ»çœ¥LÝÅ{þ¿»ætàz0=J®Îñ_ïÊk`v4ÝJ[˜†RÎïQV3šÑÖœÌ%o΄¾•ÝÕmäKÈC¬«ù•_.ãP;)w]¢ô¾˜gˆ-,¬wXéj^|‰·éå§z’–ãs)_Š œ¼[3β¹5ýË>²è—¤iªÞÜeýp6P’FkEÓ‹~Å×Ñ-´f+3'8þIͶbê°³¤lø.ëâ`Öˆ?ww ú†Ç°~ãšþêö{L.e,ñL/,øÉJ/†0¶p!i]‘CÛ}¸q³Ÿ‹pÝäa_ââ¥w†¾\ö'™.E\½Ü  ‘,Þp±5XS²ªÂRļ[â†Ë,Cc͆ñ‘uŸ8=).=ù™;°îû9ɖȶ¦ñ&o±Á¾A {°A’!—ôÁC†Ùv'k£&¼°ÐâQ³p™]U™`ž;«×™§”ÿ{ÉŠú6Á˜D‰ó'H1[WY£àÏ.²ãÅWŸc.©}¡L"‚åUèýc €|PWÙvÀ¤Dû{™ì íZZ(„í°m8£Ç¥ïñe€Ù€dsàUÆÒÅá袅µïšú)<=«$»`—*vÏ®VÉ<Í]ýøÙe"ÀP$F_Pk†5fªaÀ5ÅJÁœ~†lá ¨ ù¦øø Ä]¡£Þ ÂtTÿL[jÎð¡ bš™Ì:;Š®ZÖÐWº+2j£u]Â$S<©qgŒ±æùµo®S¬º]®\š<¹¥-ŒÁ¤q&Ï4·~W….sòÊ–µI5ö;Öí®1å{;NóFBJ¦¸jS†ãDÝÊÈKÚx‹–rYغUã€p!jž´u_®Îi×<û "­o„g†w–8É‚yy!´£Œ†çü‰¸í²&°³ 8ùTÀ˜,͔ۙéÛ©Uv^lÐ÷°JÌ8Œ›MšuÆ ZÁE*î8rÐå^èR‰BÐÉBØE ™b{G;$+•صV8L&>=æÁÈÇKýòQÉËPì/¢„ž¸ÎÆ_iä½öþ¹(ÔìÓ§SЦŸ%ñyæ$•#H]÷œ?ãÛF5gS±õp¥¨Vc¾#œ”€B#HqQ Úr}-D29C…#™–É#a³MmP!Ú:·}QĪOj%9ON:ßœë½ÊzüœI%M›RE•@óÿª sM€aË×稢%) …YúŠjj`E¯.‹àMhÍÏkÉÿ´êŸ ¬A¸ËÁ [¿§hêï)ö ~¦"ùþ*ý¾-æÃ;ÿMÙžMpþ{ããjt½´Ú³ x×Õ}i^ši&^…¢IÙô–Ç*0d`dmuk• F~~™ö©I®Æ½&s{ÞyI«ÃBG\õ5·ÿ×è ÓÊOîjLWòò†{Š‹Ø"×T9Ù™ìšÖ6ö1’Ä=±ÕÖÞA\#I– W¹]®œ&ÂS9y«áׄ¿vÖ–P>š01Z¼ûâxˆh?ç™[qàŠg ©…wud‘&ýôEbhókÖI<¯o¹\CäKJðî¤÷^Û#ȇïÁ˜BS4ê—âî3¼ÉŽDð¶–Œ-!X»xì@ 4¢ÿ­Ô!ðËKô»*H‘·3 DïCõ«$\±™jFè Žñ¨\ß"‡³w jmlâÈ;DþÇy`Q+ïV…pT©b ¡ÙBPºp&ýÀT˜U_žý4W R6jØØŠ7òöf²æuûÑ@–Ã⪠Cª-æÈú®QAZ—»¤ 6ÃÍ?þÀa-ûÚ£Üej›mîè}@1Ù«*o3"‰äeÄœy 2ʃŒüÝBñÔW®Ré;ýÑúdX x]–ʽÁVñCô.SÓWŽ#ßv=jI§VF ±ul`ŽðÊ+ó!u ââÓbø̓èkk¦ñZƒ„,ð°WÀ"Tö+qkQÈŸ>Ÿè¶“XOz³Á/•æ7_³x€6V¨I{›P»Ñ½"‚Ù*έÅÁ×<, ]S¡ÃsЕ¡^ñoöÛT£õ²kM´s#ÎåÒ[ILõ[ŒôÂ`÷ãbtþâAàßFõ:}³«.#õó§z¼Š<\}%ƒžŽ ››lNì`ÔêñNøWƒ°yÇdÐwZåy·TŠ l¾JýXúObòuvdØñâ˜ÊžøèäQ¥âIwêµu'Ñ81jÓ(–Ÿ°Pèùíj¬fÂøÑK;¬¥¹¬‰½ßËÈLJaîï­E6 õ¼½å-r;y,a¶]gÍŠúISR³ÍÑSLM¢$^C²Kæd*îrrµ‡›Ä #¬zwÅS.ÇBc+@½Ä•«^sÌô5ï÷GÊ(_Çä77:¢×.ušõõ}ÈJŠÝcT÷;É%yíÏ?yÞ½t\JãÙVz¿h~£p<åõ8ßx¥aÕÄZŠªózœ}mÈÊ’ É][ª‹?ó|¿»‹ ŠŒ²ËnªBJn dYQ¨ÅöhfŠfÙîþÅäx˜Cî·+)§€ßwüõ]¾ÿ2qüW&ò à™ÿ{&2óÿ.ùÿñ 猂 š мÕsÒ_·»ûšÆ ÚJT¸ ­Fžd)k“ª¾ú„ŽEKn‘õ [­îµV}¢ìÂ|qás_áÃØ"Ë¡6ÝÏÌõ<ùñÜ=õqûR$Wðßý%›÷Ò{éCPåÿåñ OµîU6@µ–÷ºTÆô¡´H S`¬•¯ä½H1wnÕ{•ß&„¢i©~5©g 4£2U[§Ïú¯¡ Éãlc»w §#ïH€Ôë]•.˜Þ,!lï2õêþxh0 á`m«ükÝxa`'b@êîB þÜ1X ¥?<¬J»­žÇŒ[€d?R`Ïë“-3f§T‡í9¥~žXÕ$%"•MØŽª½ßþªÕudï‡uâ~»}ôŽ9¹PR(bñG‡?›\ TÈ® νÀ[‚©*ü°¢Qn´òß™²w‚=tO ûסێ± Ø ÎÁu¡9\íçÎ „‰ŠMÍ£ÓB*´Š¾€L±Â²ºiÑŽ3uʽl§)1ŽZ³Œƒ `•Î1hÉŠÝ}GeÇU<“btœ~â}‚’Pq1~ÄÒã$0?~˜øÜžúÍásY–o1Ä‘ž«ØÁßaŧ;O4(idÏê¬À½³­cŠ7ݯ~ˆÙêÇOKQ?¥Š—,nnØë'|kl“àZ º+~³géÃV/ýÏ}ÔÖ1N;pѧ3k6{!®#mžlUTÖçœ Y2°°§rg×*ëïïÒoŸv<`$ýC)ŒÇ3åtP‚½ ç}d^æÈ\zÑ™]´¤z!-V ç Ü;®cóñË–èïƒï™dBºZÐîˆãg„Sy¤HVߦ ¤%J‰Ã×5¹ÈÿæÞκ˯<‹°© ‰1ô°¨h4 Ê!”Uú× l‚ì$Ë.ø$LØ5¡±1¹ma ÏÂöAþ«mÜ<7÷8ø\ëàd ÝÄ;ÂGT*ÊþQñ#ê{Œ(}Ù?…ýàlÁël¾·1éjDiÜêóÞXëÒPÉBS×Ð$pgo’¥ØREF¶6Å‘ë}Ï’õ¥ñÆ­é¶å~á a:üðŒÖ¸Ò ÑVãÍ̓ß)­¬ñì½ÀŽ7Øîç*nQˆ¡<C•yyü ¥y‹<²ÄŸ6þõ®™nÚê¡Zþu|[£D;,ü9øóÚóû¡ƒee߇òîcX©zêàÀ°ñ1êvLUéãGï†é¨Lc´s,,Z³ ¤exþU±$>¡®â–;˜/%ÿhÞz>x"E5?XΫª\  „ÉÛ3Ç^úΠAQ—;‹Ôª²áá2åd%ÅÍåõ!Ø/h®aÁ­Ð‘ß,»$a[GwXiËTj£Ú3j£ò6û¸Œ‹®c¤“*?¦Þ–7tHæU±¨~‘‰æ FÝt}-_H}ÔÈ^Ñšù·fBÿü;µ¼ZIR>X&*>·%õ¥biøñ€•Xd«ú÷OPޤªLk­ß-fGjœM3{Ë|s Äp¦C2-ÓÈ}¨aÆ/ÁdUØè“ÁíOßî!Þ|ˆÇ×âzÌNx¥f3[áýhÝ,gCBb`®šnìÏ!ó†ÑÏäž’°myÊ?“ ;³¡ iŒFŸ’%±A“Ÿûpš"¢Ê¿î[Þªj.…Gžxcˆ¸fF‚DƒÞGe}ê$wC¹5WíÏň ¥‡¤ux§@qK‡ÛÁt¡Gfí¶ƒ®gßêü­àØ·òCþwÎ P”™·³‹Ë¢ ÄïëÞü‡5Š MÈÉÂÆ0>ªüß¶ý2»¦ŠÀ¿¸:'qn!y¥HÁÅ*ì)s0"LQr@Nj±ïŠv“Éœà«MÎÒÄÉàà¡YE‘iàAÕÍUX¢8U?±&c‡†›ÓÁ¦ÃÌXŸ¾ÕiñAç»Á¼; ‚Šú°à¸æ”b^ ™¾È/' =AØ}Ø` ·|$Û¾è16µIZ³ºo?M#–Ìf|yRø1dyïsþÞ‡Cè3ˆKÄ=@?¸Yܨõú8×ðMý.(2òÀ] a¶ y¸7´3Æ}pZ°8£rzùr4'„ÿiÝÏa ¶Ï ™)F68Šy‚P2ý¿ÃÿÚßê'ù›mØQ ÕlÉŠ’hÈ)½å~©›½­×Ü¿ÙûMü%ÿýêÇ,™’±±Í–´@C “D3-çH~·^éJ7N'æQxîŸú50:¤ ~ÊCÐÑ‚»½T8…zi»· Üof !£Q0ž´àaóˆ´[d‡E#âß "Þj³}ÞíáT'»Ea± ^•Œ0?"…„3æVßdÆÇúþ¬Ç€*] UŒ ÁP… Œ–.aÌD5}ƒeRŠ>íÉ÷±ààj¾n§«øÂñæTCF÷žßí ønüw\Åüsc™˜8Ùþ«úßÖؘÿWaK£ZWÿ¯9XüŒ1i&""¡ZS)vàíínww”pˆ!ÌáRÝ.“Ûù îq†¤öŽxØ$¹ü–ÌÎzI>Wî«ñéÍþºsþµ„üåÅÆ ÅÛŽóï™{Þq3_ü ×ñoïÁÅÇ„Èuæ÷Ù-°siªŽcâæ–¼ÔÖÏèÐ/£îɬ¶Ù•`““ãˆø á½j,‹ºsº]M¡ !nÔxòà!BÔpµŽƒ‚í®üZ•Ñò£N³+½æä‚8ô“bê_ÏÔäD‘åꒃÔ=è*æçÞiÀÛD‚æ1>ìçbûh¡é¼F$ ¾JÆì@¾Š»nòÛfháàŒU>N Œ÷j½rhamæÑËa&ÑùœU™z&­m½]&Ñõâ(//"»ßœ¦…æ8q™-ãÆ;›õ#gÞL) ðϾ¡Òt* #c‚)ÑuW<HËŽ$Ƕšz¤¥Ï¸‹øvÔ‰8±9:Ì‚ÉÞ› %|ªÖáu[&¸SËž‡uY†{Å%×S¤F#ŠŠrè7³W²'ÐêáçКåÁx„8©-—~–˜Àì+¤üöõ€(,,~Pƒ%©“Æ…'1Ùžnd¬–‘Ú¬"ž~Ú G_ÁŠ¢‡'TQD\ Š<ª… 'Rò P vÄ%"ŽFP<‹ ‡ ›Nh,Zˆ¼_÷* ¹-¸è¸MçP»WV°”búÝíÞVÒËjsÏ&g™qºñ(Áp­[71ì ’,:Ý’% ƒ`ó3S]5‘°ˆ¥,‡‰Ä"ôØæërÖ÷ˆŠgPY1MµXL ,âÕq‘¶?’)?Vì )¤q¿1¨ز㔧ÓqÁI3÷ë‹5ÅFGž7– >êz#ú ¯Pd2´ŠÄå;äª píDж%ì ë‡ê¤àZEs¶Lt,“¾£ìqçû«æ´Ôà ¼¿`.¦~ÎÌ— C[#_û"úY:z63_oçkF`:ðÄz-êß FD•õ íBÏu Á¥ ¼Ré!s¥'C/8Né@ïÒWÇŽïŸ^Q™­aW8˱®Íi¼Ôü^6·,ìãÒk-3ךDÞïÔ`é²Rn}»9^É»ŸbgÓk'ÑÓiCw$Ô 83»cµM)ýüÞ¦&{³ZÇ™Yw[R ñÀÆÝHµÂ§-¸à &´üô|kû«î¸/Ø_+rŠ~ˆ*z–Z gL»]­XÚ\›p ×ÑÕÖG&ú)ú>£ÒÙ‡h9²\‡Ù?EþV•×»M3Ž-ó$®YâåZ<•mÕkcåW†Ï[a+ÆJÍÁG©yA¥¢úÔý+}>t:ŠÄh‹Á `¥câ?Ù¶­àƧ †5!Z¦5Y0 ÐïK“À޽3|߻¯e×Ç\¾C UÓ¯½ï¼±|ç\8÷ÈÙEI‚Ÿ÷¸¢¸(—°/pKÁHÖ0œˆUB’'‚µçn«:3ð‹˜âú :†7#©§Lù¿&Ü´Ýç6·.Óùh§;wË6Sc¡t«K«¤­µ¬´V%ËŒÏwœPƒ’«½+YTÊ¡‘ŠlŒbNÄG’Â\§$4{Åóxa«¾•ßœU-” £ˆ| UÄ–Óô%^+ž¹»at Ëóœ ¡¨]*Û{‡GÈoVÓ=™>&H}õ‡žË„O Œ›m§Kþw|u5Âr›LüÜßßÉ'C´È¤èv øÔøA¼IWw™õ¤êë˜ùOw»0n¸#‹µ_Ü‰í¼¦×ð&ÍÑ,Ç®1{Orl$ŸÔ}È™î^ûVÏ,$uqÜ׸ªŽÞa¾9²ßhiöåžûŠƒzçÿ,óÉ7¸³+™ÉÖmÖ/`œ´†A·í…ëÑ)hù ¼~p>9~°7^Ç/¤àNfNŒ¦B©TÈË‹'Œq±ü§|¸íã`^Çza‹–Ë»ׯyiÇVWþUWÄ™­“ê•Áo~¤©5XTÎZêÓ$Á¡Ù7ÿøØÓ©‡Š¹¢ · W,X9ª¡6­²+ô*¸õ7«ÁO«?5ƒÑd¼x03#‘ÕeÓÅÇw€ÑaøxXõsHJÙ¦‰hМ¾WIØNnÊXÕ4PËG¿Ž+Fó·B¶¯°;Õ¸'1 S…Ò=A}¹‰¹á:nê®Ê´ßÉu€šMÛ·û,„úºr¥Z“ßgöÍ+è#*¡n†áBqȨ̂§{“{vàæ'Ö£_%eŠ]ô&Ä;öÖ±U¬X^Ws¯U(äðoyé>¹+ GGYÇÓ­·$6H_”‘\+sÊ%Mø ÿˆLTFál²ÅDpðÌŠÂöé§Ø H”»±-5!Ì+£-Õ±×É+®Å­ëtžóÛ³l‚ÆT¶‰À´ÙÔÍðXã=Ö‰$^ÕÈÇ6®Ò°^Ÿ;›( ­ÁY’Õ—ÆÆýëv–Ÿ¶E°ÏjŠSp#§Áª<2wô³±Ic?Û˜?öÜÿø{àÃ×11ö)‹ö`j´ÈɹÉ'ÐÈÞÅý’F¸ÀŠŸ[yE4„~Ù÷ì_3[åг1‰ º„ãÿEÚŽx[7û Ù>k ±73t§>lõéJ½ôyZÀ4Þ礵‘º¶îmÛÛeºÖìèH‹c–t#êY©@|©ý—¬9¯a…7ûcuûv£†‰dwå}SbíèpÝŒUi#xRz×"Ó[oí»T-Ü3¯U¼ÄƒÅÙÿÛÞ1þm¬h|‘pqmâZ2yŠ“«ITøÞò}Ân½©¬¼ú·è@e5ÅO`åEÑHL èz³ø)âö Ä\Äó.HŒsÛèH#­”¾©GE·"b£ ¹þ”à.n“Sèÿ ý9Öø?‹ÿ ¢a`û¯ >Ëÿ°Ágù_mðgµ¢•±Ç1Û%£ÀMh¨BrL0¥EÚݽéGÝ``Zi69xwÝ,/×ÜfX^€ËcÇ{’ÝÆü#Ê™oþÖíÝíßÜFŒÌ¹fÚÛëï^¾üöÉw×cÑ–`‘{=ÉùõÅ]bþ:=Åï\˜Ÿpq/vsaò·Hþ:Ì ¯èÜ´úöz“+{Ý{TïöæfúçË´âì‡fnken00ÛßSä7àòÜ„O6_†ÎŽ)i;²Ë°iéšr­"ÇZ…ªûð½¤y1þƒíÅ!óåËX)—O@0}8’;Go©t ÏýeÝ,Œl´¸l‹»HF ­oe0r‹›i¶¡Òõýúô>0tû:š¾Z)ð×ë¯,eò|ó“ﳿûHó•¬1˜ÍBƒi.OæÚæú7•_„Ài, r eÔÁÞREçSRAÞæ%ës§aã}ج-£¥á³óÙ7¯×º{¥[=êÃÇ.²\ßU”âäòúâ­ì+Æ NQ¶ÞõOyv´> ?u*oý–y&Þþ{µ? ßöÜŠþEÝ_B‹ºRÙS#KH—]vÖÁ \š á_"Ô/tü£Gñ"ÊȯIţæëÀ¾¶²ä 1`Úõ©!eGïá̼¤ó—¡7þÜa71LìýPþˆ–§CA¾q7Ÿ"&½”Úrì°Bì>07Ùh~6{÷QÚLõ¶)âidTÊ‚p#WÊÒ-T¦k¢Ü8rŠY:d½…ì&?æ…0)ëô®*;ŒÎ|Thlø~sZÜÊØˆKtî$­È«ž ‹O³u5‰ždã°¡s·";ä‚G  7Œ$*‚dÝŸ©$\qm8ôFPI;AW^Ž4T|í˜ ‚G‡vƒµõ2*V mœf>e†=ÞrA¢ãM„º•›÷u:¦_ñuCŠG©´V7³‘”ÿFÎpI‘‚í:Æ2 >’éL¿1MíM0¿Là 4')ªfFÜ]$Q$Õ ãVÈý:™"Ë‘ÐÝ:]3îQW@…#D«vOê,„ À‰TÀ’‘O30Ëœ‰tO’Þ[ Zà6/º_¸}‚6lbÀ ÞV`\¿îÅ¿›¤Äc—Ȱ}›hI…í¤ß—ÚMb¯8ýBÓ «§Ñ9s,þR;éË n>ši+gÖtÆ×õ¬ÖÆ™doÑ"%Îékº±>Ðè]zi­œ9&š‡e–xÖeÌÏ ˆ¥˜’Kp̺fdÜ¡–EÛÖ~gvôK­´DÌh–!tG"ªßÉ•ædÿý¢ÁÎE'dÞGÒ<Þ8™ãî‚§–™çpl 2J=\DK’ØõÀo‰·Ä-2ðòÐ¥Š[{Æ‘goL™µIÉ€¨½ .øehç|=·<]Òs­ ¨àOcn8ölÔÒÆ×V`zñ$Uf×YAÁò>ÌÚ›«çíPø8‚|Õ(k5ÀM[Ë4ÚÕjKÒžä¯ã³áY¨£©U¤î,mtó«oT©:Ùú ·&Yx• ru–å_¾ŠsǪ0ï{KÜÃäÆ]Q|i¡Á`B§Ò^X sþÞ¹Þ„¦p7[ó©¬ R93¤¬/á?ÊG ‚…ÃßWíWîL¬¶Ñ~y¼S7•ü}]Et€¶Çf”uéˆ5!ìJEŠxæpŽ%GÅK¤¿V@rhÜ»™„°ús¥ úeÃiÿ4†JªiK1¶"‡W—ÆøàGšóbìà–ümÔ9éFÇ ÕÅ%…´ÎîØã Û ­Hs= G¬Y@bi¦¹þ¯ ?lVÖfYβÀ kG‘,Zx4Q) . ·|I k‰]˜Eú>¬·14ª½òÙDAæò òù Á©A©n\ö°4kJfF^‚ÒDHD³P‚šÐrrE"•b(%Ä,Üe“²è¹ìs-R2 4S!hXX‰©’Ô|©’…úÑ2rƒ±´4<Ž|uÇßTDÁ®ª›¶”$&cx!¥†í"‡Z¾i¸ànŠ)†.ÇÂxbÖX¢õù]zçÑý¦×%íüXŠV*‘L:RŸxA™bAD¢\iþ¼HeÎV9ŸGˆÖz{ P†”·¥×Ãk»4Lsõ:%kb‡b%!¥õR;ªhTd»°ô¢„m`e=΄12e/›7ûe'åò ’¸Öt ìÓ~CëBƒr+‡³»Äšt_O™±Äº N7h)—ƒÌÓ¬î²ã9ëOÚ(ßÖ¹3ô¨êå]jAøô‰v€L*±ò¹]5ww1HPÅ6 *¤HaŸôSnÚSh3Müw:LJž Ç,}½“G+þü4Ä€ ž¸a’f¬Õt`Ì<¡èj5„^)<³Q€ B)GÉ!Áè“8¾¥QÕ»p`èú¨Èù­Y:¢ÍT”äV&Í«T”^vZ| `·œL¡A´PàIMl&“ƒóDgHU]"e×±Ó¤³§5à²á2sÑ!Ò§‘}nÍRôãC£„o®Z7á?ÀSœ8/_JLw ÒÚ5šS Dxm9 ê]èц€ÍÑ×"pž\Àžs‘2‹ÁJÙ2ççV è& ÃçþôÕ2I¾pj.Ï„Ëâ"g}ô€5ö»ÀO#éK´×Ⱦ†è¬¢#E™Êm¨øNXQÏü¿T¥‰Èx, å‡"k’:D "×­Œ{¼›-ž×O©ž{aLýwFÖ¶²5º>|+t’Äâ­Zì+&Vׯ¨Ð *꘶ Ìàõf…D Ñ#¼ûBjÛ¼y ö7×™>¢ŠL"S(õõ2œªÛNÕƒ£ [#1Þ?ºGëŠøvµƒöe*“ã8ZO“lL¢Žú²š¾BÐÒjÊ—7šjš]w067õ{ g\L,1<²ï»Ìœ¿»e–RƒuMÆpmÔ¨ž+ q—A ~CðOÕ ßŒä­àŽKïa§þuûç×,ý\¾OÖO)ѽÕk1Í gžï­§¤L4ÇöX ¥Ò‡‹9îÔ¾5[ö};¡7 AïüÞ›&{“é<Ëm«ß¯Ÿñ©ø#6Ü^˜ÌÙœI å^—WŽ”`øqö8 á÷ƒüê»”Ùälv3ƒÁàq»íþƒ3᫆êZçìØï*ë±ê{¨¤ï ßonAŸÀ¶½]{§Šü¯?ü“βShcâf8pÃçλê@‚Z ù€+’×ïÿ°ü§„ƒ““å?«¬ÿƒg ëÿÎ3æÿ[5ÀÃ717E!¢™"­my¿Ñ‚+D〟£`ozt•‘Î-ü;•Ì(38äx-±Ý2[*I†·]ÿ,·Ï”,ÿøòºu¾C¥ŽXviˆ}½õÍyâ>ûžë÷“n§#Üâ¿~ëeÛÃò–7‰ùëz ÛÛÂëþæÅ½Øþ2ö©Šäy%U‡×ùSÞ÷3®ùœ9¸W°¢`UZ‘*n½Q§«¯[R³κI7„Ã4ÏV­Ÿâ1á¶Ù+à¡wØ<‡Àkž¶„àçôöb«}ëOöbcM ƒ/V>¹9EC.8ô´Ù[=¬>™u¿À^~áÑw§Iï©á‰«R¤­úW*ÚÔ=ºõs*öCÑývÔº­xå§,ùúÞS!åäÈó‘P…¨z…†¹i˜•›§H†fG¯ ÊÝÝ‟=ј§Cµ–¹YÆìweA`ª“ó†&ô ôh·erþ¾ íú‰‚…ïÚFÙAŸÈ.¦6†+ªg{ mª×ÚRÒcïN¾—½qÓS~ãk³§l––Ûaì'¬¯¨ªä¾CÂíת†ë¿Ö\¼l>¾Ã]~³q{yˆ2a@™ŸÊÛ+–ÏkjL€B¢e,Å Zÿ~Ü}i—ׄÍïìÿ-¤-~á1&?!gGÔu”䈱÷ÈÝ .O¥=>æø#¨r5ÅôaÈ/Ì×+dAE0Ï+œôêÕ¶(92 Ìx f}*Õ—é/¡Ãpí¸69rª¡/ü÷ÚµGcs—N?Uj—R‡©U!Ž®} uRÚ5¦ø£Ð½ª—_Rwºî4;䘡Kž¡‡Seþ8ÑûBÄ™}õécî]”*¬ýºŠíEý¦£"ür–2ѬKŸ¨Ü² F=MÁ¯ß@ž"JöHˆ‘på#öšà%9¢(´ÖJÃö-¨Ò]‘sThácàóX¸Ùaá#Dkë-/;à­ô°‰ˆð˜üsèø|Û:téä|˜HxEŠì¦ÂÍ1¬×7çúäú–4sãÍí†JdAØï$%(N¾n%‚p.]=­u*¸§îEùÕ!´uüÔÇ¥ÙŠ,E\Z?wQHü” ¢u 3ǧ+!.³ÓÎ˽ ýLq«+Ç<=húíÐ|p;Û )ÇÜõ”ãè„óË9“€%‰í·èžjƒ6ÒTÀ¡;XjMEê HªÒÌ-î:un¤%•P,éwØEG^°ÔKÄ0ò–(4bT…H„`÷|jÑ¡E¹½,á¾ ÿTO’6¢xôŽ×©rèQƒzVP#•8qí²\U=‘;n¨¼[ŽxÏïbµƒwòè$éz Q€‡ ´õw’­Î¯£%€:²é(7‹€¯Ño/žÉô±'=† ¼9HØ×M`}Å+8¢ÕHÊâÓ¨ùÇài²,¿‚ qªÿzñ×ûTÎf·Üá[‰#lÃçþ ÏÜQóAüKˆç¬ìÝb…cYð±¬í0V‡˜>ºŸ½@eløù™ì'•B’»¨˜ú¯®HÆD—+t?“Øä4–ìÌ ¦ˆæÓC87¥|TÊ“4(4‘Ø“LE“Þ¡Î>¬Ê]š³­/SÇá‹·²ˆº¶ŸB''š”É÷E3úpŸYŒ!âBØüÎ)Ûý„ʱà¬à¯Â·´Ú”,þ=”›t¿\ÈØ¹]…{Úyt1¡èüVø9z^<¼ìôÀºš0”ºßº8?qm59£OÍËf¦w»z\n¼@C•µå‡¢Úy­A·ÇŠn­šÇ:ŒñI»ïMú¶´ÚÀûm.Û¡æ€O…µ iÔ~ª4|a’®VųÚHáL¼WΖr:é“ Ìiº“.Åb3t¦«øp‘D°Ì{LÈÕd;\Ù+D\FäAY@Íd­õÔ^Ú®I+-+ ï'-'^h%„vJSL©hC‘q°õ#‚Jg”¸…$ñ,r(U»)æäH(n¸ˆFîe Ý7JDô¿."Ð.î¾k1¬Œ¹óPà°„Xsj…&;Ôo|ðoÙÐÿ>—®KÊ ß|XzIãQ%µuáÛ=E“+:N˘Kôžú|§ïè“óÕÿÅ¢vvÈ™>›þ6?šOûÓøK½ÂsäåËùüfÓ·òÓþq~Ýí˜ëûà­þ&ü¨$r©ÀA¨ ×C8ÖqÝLb³«„h:vƒz"ªG¼êáêoM6Y³ õÖ'‚”p›£!°TµV˜³ %¯Fkü,ùŸ¬JŠÊr;§a”&gâÉ|ê´}4¥†N«a¯¿Öô íK7eé'žé[âaêX‰«T’{ßád”B‚Ù à €@†&pc÷11˜|ÈØ–%—NP­ÝãÞRÔÀF5ŽSSz¦¢Ø–Ý}ßñ©B:µ[< ³m…5"’·(÷‹ù`úGzØð0t±¤»iˆqÓ¦òíM.ÒÈJE7_âpÂŽýÍŠ¿ˆW“çÜhMêÓ.ýi5¶ÕÚÇæÿÁ¾ÓÿwFÃúeRÌŒÿ%žbåüáÃhn4må±ÅÆ œÙ"cޱ02†1Æå|ºßäp¡èèc¤HÈ^„X*±(E…!ÄDì´> #Sþæ?¢wÓ·_j9Á‘-¶ZRC^_ÍÜò2=ó8ŸTÔÈjŽâß¼Ïç—óÊ™¬¯×çŒ;µ®2k¦êx¯ µQ¿ÃAÉ]6—f!Åëxo)ýX¹ô«x/3sеY—-Ìo¾òŒÀõØ]î¨Bê]†»/¥\­§_뺋“º±‰ÃÌÌ+K*†í;8n#ߺ¹DǹÚEm²ËÜ}i‰`}ÕLnëJ»˜—llr¾³´\p/›À\šNÁ¼(¨øšR&JÑ–Ã?ÌO}/ö¦w¶µ¹¨ð;J…{ä`\> n7h»HÛ3T ÙïygxêµëӦ瑶•©³ ‹ÉYôŸòË(hûë¡`T¿ßde_fnßVÕï ÄxÝrÌŠ›h‹¨°BãÌŸç¾”Å{ÕÈeç Äì[¹,—äZý—烛W%O•Å&%ƒc“¦A½ NéçÐ20PŸ;}E²œÖ-[gp+enuï .vE²Ô¦E”à·ÀyÜšªÚ£-ñëýMÔG1ꜷ6mÙ~W¶'ë R軑‚¯±™|H4%6Ù4û\hÿ1qú`;A†îîêMÚãVUÕîò(·ÑQïqmÞ5œÄмˆ—^*РÜN?ŒˆaÝÆ5ëb*¥°™ ˆµÆ€,äéø™¸Pýh`Þ¸¿ ú4„z´õ£cb‘çÔ0 À YgÔÐ7º,7ë ž/¤êúá슥H,vîÛqæ%æwnU½™v+v`à¤'.ÖÝNˆ‘`áL™š¸°!wr3E!8R¶Òt‰=Ô'Ζٲü å9¸K^8¯ ®1H †ƒblÖw–&–NŒÑ$G§Æ°ô¤ hS½C¬|a\{¤e1ãØFÙã˜M,ò’ÓQìRl„zQ3'`ÎèDÙíèºÃÓî×N²”éùÐÇÄß-°i2ê>yÓн‰ R:)e碀r²‰00e°ƒ•ÕmhäëRepVÕ°Ýa¥L»„àȘƒ â”¶Ò°+ˆUuu#"iñQŽXT·õsȱ=NÇhãDuÙµŸ|ƒwöÜÀbvQº ¿ºÍÍÞÝŽ6ãᑈ!h F™mUóX\ä>põߥ啲%S‡øFÎ`Ì?=uݤ]ÛäÂacU4çùejóN±“¥LÚólµÙê© øtvAåQc‘¹widäæQõÜóÃÛª…„„ÂÈú‰šNåe¦c3Ú¦À?ÎKÞF=&½àrI_ðEÇN )ï”gï€Ït6I©±i¤Äôs…Ä^¼X²Â"§ÉúÇ)`Ù÷:—N®däG]­á'L2”]¯à;8O]Ëeí(ΓÙÕ)tL•f¨ˆþ˜Ô•(óÚ´àþÇC&>ï¬wÏë¾³ºúWÝôÏØâšMM±Ëüõ<'sœ¤¥M² k–mîD  14md›Ò)IɆöÊQoÅûÅÐEâ=^}óY¼SƒXGfy¬wÙp†„‘Λq d%:Y>¤›E'H)wÀwÀ»¼)ñ}ÉÇÅjfÏ«LÁÁ¬!N[gü8²DTÙ˜8ÏŒ§´šÍ²c´\ ŒS-s/pn *MÀOgº³jk7^AÄ Æ0Lh§–ÝëihŒ"…“Ö ¦)hœ"{u”˜P=¾äpbŠ Ê?t6¬ãsÒ¡ƒUèK¹Û×>zcˇíl#,r*<$‹±£ÉÍ¥µ*“ìGYqmn­?ÝS身ª…ŸóŽÓÌOt)¡$L»]Äéßu>ÿ„­Ë ™$o©]ö´o ’ jÑHÆ…×-­R.Ó(­ HŽ>™“K¸…ˆãÂ4”€ÜüJ]hiŸŽ#kþ|I=kî\Qùô6ðÆj{*òqîròáæ¼oÞØÅ¼@)èòÏÀI¤’Ñ+‡…Ñt–Cµ›¨ áQQ^o&àÍ +ñäôÇ5ÅAŸ*Á€ŒÆª$£½2]¥¥Ý‘T;ely4þ]áü•“)h¹M3Ð?Åð”‹E?øbäN”ÒÈ¡æWã±ÜdÄÝô2ïSÛ[¶_„p%Œàº¶x9n÷ÔÞû5½:9ØÖ÷g®§ ·¸£fî¾G«È)ãÚæD–PæJzí×W×Ô£=llx× º·.[ÊöY€À¾–|× \°êq‹È™9fðPv—&‚àr Cñ²·z FHUÄÐ_„ÅÖ×KПMÙžâ±ÔŽ&íúõ.†Ñè{ÏqÉóqÍótZ G>f CôÒ 5²µèKC&äÖÅ©‘)T*Và•©±òð̦hêÎx9Ñï}™ÁŠ|±AòT÷ÿ£'Gä@hTÀËçŒ|gÚ‡‹<¨ø#O\NÈ­‹ýcˆôø Â&/àa,G¤3ù\bq¼lé©t&CÔy( ß|§aMî§× À"Ä`Û[’ET1¨LW2EáQE‡(‡äBþKª£ó”‚ ‹ ‰\8‘ÝSÉø«~dGe;Œâ~eŠNr µ7)‚,"¢îžÝŒyî‚ì:Hã5ª`âˆCSH„éì/!’Œ@`ÈšNµnc5ÿ~0¥'—a§K&¾ytw>ÑavK§´{wê#«=˜Ïg¹à!ùï˜âÿ …ÿ3%e`þ/LÁö?è&ØþWº‰Síÿ3%mG‚`n’qð„b€:é÷5¼jŒ„tTÞV’9bÅ£´ýÚgI™pç;,sá%ÍñO¤·í?V~}yß:½Õ©KRä–8ÒÔÜïxÏòxZ¯Ášl^Å¿î'–ËÑŽæWøáñ5·g©×iMXãÅV–¸¾ÁZy.Ù€ª?,JÜì˜3fM…O¿e K?'RkiÐ 1ö,ûà­ß;5oÒá ‰ÖaGÖ=Uøpä úM7Ù&íÑÇŸÕÐ…‡ï Fý{›h!!pÄë¾V°¿Ó×Gè]…rˆØNùñ|º;_e;ŽòëýŒ.²Eÿ*æÖ¸$ÿˆüßÓå@ÄÔpŸÌß>æ‘öÙ¤éaÐÆ{Þ-[/úý¾Ž¾>¥ßxö3º¢>ѧ ¿yO¨òF¿ØO¾‚ÇÜ"‡ÍØbF9²èå]}:ÛI„ñ/•q¸ŽŽXó}k·ÑŠ$)ýñ3Rô»ÖK x…üB :E9´´e–R‡9<7ž` •ëõ¥v{€å—è*jåœú¥ ˜T½·Àäy¶SÈ%.¥•ê0tÀ—ë|÷Ø›Á!8%•Õp:ÞÏ(œ,§h#…N’,òýà¸J& ½‘=ß=†9^Öý°;.¤ÛÞs´—.·)R×”AÁZs¶ø…Ò"‹Ã–L-¸ÝLÚÂ`ôíèÆFÖœ9ÎiÚ^¾t‡Ü2ì>í¸ÅÇ36|#î( Õ¦_¯Ðõ_ù”í—4(aÃcYe Ì­jxGVÿ §m¥Í|£k ¢_ø›¨à–- P¡€’À*ç˜ÂÜÀªÿd¥U4à¾ÌiJ.m„PÚU ²p­üƒÿÉ›‡›cáy‡äò3“Dx¡9‰ð|ãê^mvòÌû'Â: Ï:áÍ¢0×.¹xæÖºèê’ײŸ½¶}ûªNÍË=Øî%I P»×ëz¼ù™5hLÁUC¾n€kðbèÇÚlWEŸ9{'{¦@Çâà1¹ØåY™1øøjL¢SgÚpúÌ #“ÆPÆDƒÙâ;˜ý1´§cÏÁ@©ÙŽZ½{ôk~…Ž.¡Dˆ@˜uåÐ[ÚÔÞQgQ2¶ðq<4x#Ò»ÞgV¬@ ~_Ÿ8´åäÛîJïQòΪ@ÞH *’Åø³ü:í¶&x|sà6ˆãB‚kÇÚß–{;Žz`rRΫ6ŸV¾e,¨ü¨ïŸõ•æÂ>cá9ShÊT'aæ"N'ìõâ#¼@ÀeɪKì¶ xƒn’_a?Zë9x*;U^LŒé¹¨¸çJh°g­Ýüǯ÷"Åæ­ ‚ÕgÏIAÛð/Öæ.^w½×ôëò½h/^·ÓŒÀÊñ{ÍÕä½ËÅîdœ~—¼š ÄÔeà AÜ€sÈlÜ‹_Ž Qcœ%ä³ëžvÃþ'K¨‡9pÂé7’®Áq[8Åå[-7ÒDFáóÏŽ =³gzF¶£m aNq·ëŒKÊ™ù/¶²üÆ¢ÇVóýqíH'4>©Ó9÷Ý.%tÉÝÜÐÀŒ­ihWOw|ª¶:T`“mT°•cí/&;1½fÙGŒNL·ƒÈwÒåe*ÐŽˆ\¤4¤K17$ƒwí_íp Èñ¦§`MC×F¢á™ÎgßÔlu¿¿·“\ÃTÊ“éWL‘Þ¡ƒ~•ÞºÀ  ”r æñÌJ¦u7¹–pvŸ‡—b#GJ‡¡ƒäÆ”¢YÕõA$¶ÀÚ’SY«±‡*ÞÇkÜ'›º)Ûi´ïøÊŸðÖv0üßAço¥ï@³T#QY°ðAÀ3ÙNÒIg4sEðUÈREï@F-#ó4¶};Œ4¹Ö|¯&—3¼Œ`Ÿ¥òI»æÜÐeöÔy*¥grf Vb ̦Ÿ~/dÆUúÓ¸ê€NJ¸;¿æ°ÎΜ 9~ä7á­¨³-ÙÁáv÷P~?ÌXKºñX‰ÙÓºl°iBÅq…æ?ÝOáNÚ=±ÀT¼døv™“z«%a4¡ WÌóeñˆ2Xú¨ç°qBƒDPÂÈ@è•­¡RñF^Øbë üÖF«fV–]ÿ«6Ž ¶ÔÚ=—A,^¹ß@€’$¹ ÔnƒOöÔ™A`¦;T:cBK5çTØ™øVZú¡žá )ÔdÄK®À´AÎæcØ=*LZàp¾*›,é“ ‚ˆ†ÁË?ïh‡ÇZ…¯–‹N*øŸ¸2#>Àþ]ç&n'ÍF„uîWUNôxû@âá {û©{´€²7â@ªf¼‘ã<žiÅ8Òz«Òmƒ¬ ¢lwüÉô¹ôØÖ¶F5Γêj°úh3[ç¤7#üR/ú‹K€ Á!ïÊhÌóÛhàÂ@‹-Êœ=ïFé·×Tûm·#ÔDŽÃ^%þ¾Ú|é/E8á~>D‰jîäÀ«æ…}2àzAn« Y‹óp7ëE<]dH!Øîù˜!BØöb6I/7"[¨öít-5=s€„-ÜH@ÐË·ˆ ¿ B|–ºÁHÒ×·¤tæ gD…qg}{O,©‘ÉØi5r‘â¬97*•Œ*;µJ­},ºf4×ö*ófú¬Ló*g gS*,ƦÈ6¨6²6N¨ÉJV¹žúeýÚ ùôí¤°W¡ U8‡à„¾,âÁ šfçÇÐ (&EG˜jú»ù­aèÚPimTUÔ&2ÆLi<•¬G»-lÓ­n%©*\¦œš— !]"Y¦Ðo'"»d¢yËì i :6ÃþËÆˆ|Á+¡ŠðF‰ûöb¼  “<Í” «í  P <–z:jZ©²ÀÌ(°3çÿäÚ ÈÍ>)LÞ pª¨ÇÈœRÊö©õ®Ú¦âádU›³Ò§€ß`2ÿ5!ö£V#ŽÝ²×Û“î¼éä@óÿD•I¨1pŒËq­&sîÛû¨†ù2ÐÐ ^wŽõw^ظ_Ýb22 \LãöúÔMµ@ø_PÂ-ñU×ûB¸… ®ðÏ.±ë f¦^†Q‰øpµƒ”~äíØ›¹uÍd!ð$xo1ot^«¬åýÍÑ;œȹ„#á cö£ÖÙ0,eå}Ryv„»UÜ; éÔ÷7ý[}Uê—ÓQ«›QÁ<ß>£4r©â™-r«¿¡4ÙVtËÅÉ£æ;Íà :&ꂆŒþ§)äHÛ v½Pª¯XÓ 7¡Îò¯cäÓryãºjPÀ¥8Ÿ ._V6|¼:Œ¿qcЦB £(3² ыȱfÀt¢ÜAuÀ³±Gçì-ƒÆo¢bOã›CçÃÄÇÿz9·wÉ窹U^ð:Ã}´îZ{¿b&¾>Þ¿ïéÚÛ¯PË}p!AØX[øÛß÷hóˆÜÿlo³›…ÿáó=¶ñ%r~í9ÿ ׈™üi^Ø¡¶ÍŒÞ,¢¸Åó~4Û:?ÿ×ófÕ{Þ}œÎù·¨³pÄ÷‹{~ŒNûœ O;Í® éþs©Êôì0äæá*«ƒ'°Óû²l´y´¡ŒM÷KËnaÃ{o[CK¯y8õŠÛ}¬­6Ô”–îžt]•F‰a†qofZý¾4öÌáñý”ôûGˆ‡sRÀ°ÖGùfrûj´·ºÖH¸@Ì4|¿KÿAÒŠq€t‹OâáQ™µúMõ'z¤ƒ®ÉQ~¸8ªîþ‘We„ uÃÓJ«Úvˆäåz0±Ð jöbûœE^*3UøÒœ‘ 7Ÿ!¶ÞÅUÖí_³^Ruå3ÄG:ù] ØÐñkh2ÏHò`ý9Kõ?’R(ÍÅ`ML¾á WØé7…uó\„6IÑ8§R”®[ðˆV{Mºm »½îŽ\åêñ¾ªÆHó@RqMÝT@WTá¶ôcP*UOiÝÒÂò-ï.äÜâë˜A5Rw®‹cÓÓ`Õ´bÔÕ¢{¢Ñ„˜ƒà!@ÿÂúe=Ìlÿ?¡?ûÿàÌÂþ¿rf™Õ¸’מDÕ7ζv©'7ÈŽvv³îuÞ§;<óÞ¨&Iâ&H4¹`–Tõ¼!±(½¿VûÀ¯zÕî¿Ùo7ÏÛaÔƒ¹¬ÓâìsžÏáŒßçdî÷¬Í^N³K‚ÿó{°:Y°Þ-2>º¥îmecY^¢õµu—ˆ`›€Ç—åîºóX.ì{µªàÊwµ½™f†Ï¬¸ … Y׃Så'<®Î7:™tüPæÁ'Ÿ÷ÈWÆÚ“VŽ–Qf}•TqtE¹«¾;¾Š[uõÆóïË\‰ÊOB„Ž<µû>Þbä•E Dq_9mÛ#NþÁ—χhoí2Tßzå9W´õ.âÜd}¥iKU&ñÏNŒÔw‰ ŸT¹Q$¹Gdé@¦ƒ•+mò¨[eó]„±¶4;N- =‰²Gý1ƈ2-"þ·'2.βt{ûxEƒ1,Óz„€¨XS²Çÿ‹’c Ì†T9“†bcÖäøæa*× ”ˆ«îNù‹vm8CVøòö¢Ì0¦ZVr¸QF¾'¼ š˜ %Dt=2àêîöïas` #הز–ñ⟅å½Cê»­BùEQ!BVnì`Wp5j.ˆ9Aæ‘f—–ýVHØwcT*œ·ËÀZ˜8yÃÃüf‡iØÐ`HLn _Õ(¬*©ÎFM.¬7Xä»Å‹l擇4êV&“pVÃP¢ûù½=‡…P^”à(‹BѰ~‚á„áp“h»Á.Zx0`0Ɠ˦ŸÄ’)4‚Ø Tӄʯîô¦Wp,} J¾O…Pϯ|)†• à¢XK*¦NåS2Ž~{íÓÃ&öÛ(^üT4Ž™iÑ i©IÝçý/-Ø–¯ÂD¹€k*!ÊE5Õa“Ó‹Í¢–Y-ÆAÚ.U¨-Tž2U¡K6Z,¥6AàÅØÝ/¯UŸ!w\%1Þ¿‚IG;ÚÎþ²y|ùÀzŸÉéEäy5ø˜¡wœQøGìÎâ6ðÍG ¥X`­ö­|ëØ¶œ¡cç‡Y^ È‘4G")š³ï[-6ø–ä„cZÀzÐ#fî­ö†õk÷Ô1rð_\›·¼µödN›Ò•ùG‘÷»”Ð}kÿÅøæÔçä¶1/;ÆKöÓ˜‡Øâ¿L)ó4mOÕ‰ YÓvêxÓŸµÁ5䮲Sj«A€ó´+Ñ™ÇÍ\ɬÖZñöøãÊó©¦sJíIvhý¶rÇX(.²KØðRf$Ýí>ÛîdìNò(w=õ%¹g² œfwòAcíò—àruIwÏy' ú}ÊlpWà[Íî÷ØëY¤7&u™üc­æ6]ÄØ†æí¯þU‡V·z€~ûû^)­rŽ©¹x2Öü“­ÏÝYªý_£.»+æäå—oRtÑA‘¹ƒ êðrë1­6Fô\á(N#¯OkvÇ_kÇÖõ=ON_ÞwÀߟ å$ã'Bæ[süX7/ÍöXR<þ•ÝZ|_òǼe…¶üÿšyðÓ¹k‚l7F?I®ds±¾ï -ÊÉ ÎP’÷†Zºò€®Ã¿ý ÷µ:U/Lu0‘¢¬qÝt®„Ü'D³Bi¸Ïß« ×„zÂâ7öÑß&Xº‡^‰ ¬…OQ¹<¹ZûTÊPÇ Ð%bjû*ÿŒì^]4ûÑaíXp޶øêö—kÇ)ØGå| N ¦Mл»õ… 38lçVðì^…ÎU¹%«h_[ÐfCx¥J d@ËJ8~Ð~‘%˜gë.¤ÚCÍHà6à3ÌQnOÜ´a”¿‹j<Ü>s¯›µÕÀPs·=×M8ÑÑRµ?i®V Wrí³5†àzÏ»fÆŸˆ±to­±€út¦÷û¢ ï>pÐ'-üN¯•Î\*½ï`õ'»âW²£1üó N÷À‡jú­òåé«®ânTƒrª> @†U¼ãyÔ†åàÉa˜ä6¥¢›7@+7DJ çc¬]“`9ðŽ|”Jø¨sHRJtr:þNòZóbei°rЛróó%!¥?B6sñ³vÒbáêje0#F7r…`Ä·£CCû^ªwJQ&œH×M¤TŸæ“‡<È®HŠÔ!7{wEáuÆoäá•|Ïo üéBÎ-÷é*@18³îÑSŒ/ NÀ¶‰qH¼ìŸU¬Á‰Î¡œ«åu»ætWM5¦ÄÐg!à£d#JŽîûUùP¸ÆñeèêÓ‰YØù„¬ìh¶/cÁBY ðaL‚Óòˆ§c=ð ?ª®ŠpPòN¢(DH¼Í°¶(çYJU‘²Šg9 ø:qð——´"ö1¶‘D‚ á$J»OÕ€|hvQ…CÃUÕ èKŠX¢ È’C êòÔõ³/Sþ©9ÀÞ•¢ªÀˆ¨cK=g¢ ÜOàöä÷‚ ¡Þ–æMZ‘ö´Ã\L.p¶Å4ý‹ÀŽ“Ýà¢g”ÂZ~f1É”á U|8Òªï£ÊQïçᙬ1ùdÚD¸ABÙó„MÞÆWëœ@Ö"Û³f+t!â‡ê壜ÙB€¶¡YÚ|L“¡®]îcíÎ9?9K$W!:Þt³ƒ0éóKàŸÄµ Kl‘A\—û‡¾ÔÀùŠö3ÆêíJxüÉP€ ÎöO€7Ú+*¦”*ÔZÉxjÀú‹ÊšŸQõŒ]yÕÐoÑÕî‹ù”w_qÏÞóiyç%ÈÏ$7O‡•¿¯cjQ.†ô˜b}‘:ËË ãÛß5äDM°CJ÷”jÕ¤ˆÚ*&#£ãµAVsêB…nHI»Ë#éÇ1 (áæ ÆÏÀÅÔøúCí¶ü›Ö×`Ö³óGQ wÞPd—I¸ð~è S‰ õž?¨hºn8BLÔûãö?x<…žð«ýi,_±ô-ï_ê]ºCbÎÏÎóÒP.œ"ÑO3i<á|?H úõ ÐëcÝÝüéª[ïõóës=d)ëÏÂÇ7@Ÿ ¡öG|ìÿéÃÂÊð_U¶ÿñ±ÿ¯ŸæŸ¼ö:j=ã›HÜ1&¦Qpþ.øF%~ÏW?8hÐÖÒÆÈ&ž ªrQí"¦2•–åO¡5‹er[[Õçp ~õKø·/÷[õ¾+ d*™ôÆÝ ¿Î3gþ³o¸x_4J®ß†;oøp|X~%Ìcý7<ªØ÷;ÝPJYÞÃ:*Ãü:ÆkJ:Ó™/©ÿ†§´-h°°§Æ¡'­žïw™rMµÀf,ý ˜Lr(«i@âI9M2dìhδl\ â±ø¼£ŽÈ—MåÕ› þÌ© A¾%â’ÛaÛöÛ2wæÃíØÙϱg›p…]£{x”xŒ†NÐΊO’¹ésRn¸¨|‚¨¾1¡ÈÛN”× «ëAVã­u^áLU‹¼߆sû9%·Ë™#éY‰¼“§°&áb%¸’Ü4j’°:gþ íât Á$ð'wkÈg%Š>ltºÂ½Íƒúº¤ (˜î½ ëmÔ_U—ÀròS:ýûH¦·OTÐf3ÄO¸ý@ÐoH§ðÄBÊ3¦š(Ãù´å@`Åxãaêc]˜Oô»çðëïàë7Šœ0Ø•’Es{ªtiðïÄQѾ0ªLˆ!¿Ró!ÊŠ& òÂÛh{RrDj#G9'J#Ë’;Ã,Î/®tùájì3•2Ž|ðñ1²i®R(ÒB3†ÄÔK>ø8Ü(ŸNØêÉ‚e×¾˜ØNTB)…Å}¨q’ô±4H/0Ë#R˜y!ÂÄRh‰|‚½­·½W  ƒ–œ˜üx(€‚ÓÕ{ÌŒfs~`s\$£ ¢Û”†M! X¡uCLª;²§0GýtAPù“¹VmÑ ¿L–_sšŽ~¹0')Þê£9sÝ,oE}ah.K‰ïTš}ñÍ”µo‰[ÝÄŠàlcÏž_¡ýÞb„•ô± -…Ê––Ø®_)u˜Ù„fÉó£ì"í…ÇÓO xÕå°½‰ûH~³g`ì3j¢&1Œ £P_+s¨oàðµtÿxlq£ Å\WÌÈÒXb ýt»Q(vÓõÜÄÙ¯í¾ºpжd#ñâjgÒœ[kNAžX`´0›ÀÆ1ÝlÝIü,qCØÿDñ_õr#ýuiÌã5Ê.DáY[+»Y=uã©0)sºÿÚzõÂÂOe 0@È ‚YžTȆÝK"irG{±4vù}ÇísÎA–®êôtØQɶŒÿ§…×ÿMeô˜ å½=ñÊY²y“|¿e“}æ©ÌÖóJ.i¨‡´Áóyh‚WUÐõš³o¨)ÏîucO!4÷®Zæ®u¦,‰§Ž¹A~>±é&fxQ›ü~ûDÇw–$öÏØR|ôe8õäÏ´G%åÌá=¬Ü"ì˜;ˆ}÷R4:ÔNªÑ&œ4ÙTÏÈRí4ójù±¶œjDZ7I÷MNð<Rf¶UAÝéÜÔ…¥„-À]-¡O1:ëXS·J>ryõeÑÉŽ¶;©òìf@ˉeÅpH@BÌìAˆ_@ÏzuL´þó;°È³íÍ¿°þ(êøÕñtÖRj™¦Ø’Ÿ\}=ÕˎعAƒl¡ƒŸT^ nñøb.»è&DX¾pÖÕ´jÇÖdÖøKó&wôã8;³òž·”‰û|ÎPjÂÜl£súW)X*V®o°êVʦáJ`9õã"3 Oe?t‰gÞ¤ìÀ!Ç'»Œÿãú •™ 2çèÈmNÊâ"ô&}K_¾¬ÿ?˜F­L?óõª²?0æ§Bá‰-â¿ßÐ3™•Ú:¬m…^^¢×Í9ðû+PÏ"Ö¨½Ê•‘˜yÍÁecÁ%#0o°yTh¡4ûiš…Ì(Æïor¦ÎÁHú[.GÉ ÿ?d´ê“‡Ÿo'£,%M–Š¡Ðýp/pýÏI˜é7yZ¨‚ûMäPx´×¹P©HŒbV!n§J¨:°ÔÆ{#ŸjûØæÌ-0kckÂa»‰;EÆéãÖ;S¦ž¹O>ºß0Å‹®˜;[“gwCi:”‰2U+Öãוk‰,vQ`vÍöeí£.^'åW=5½H -Ä)ÃV)u®†$dšâý Êâ¬ð¡&Ù7EZU—‚Žì ˆWLå …5&ų8™Ë3J™Üýl†X ÅXŽaŒÓ„QÓ¨7cHЦÚ÷ÏÖÅ‘t$U›d}¸HJmœÃ&w‚,ró Z/ÌŽÆíQËJº²Í¼fKŠ<œ}éRËø…, ¥’<ÃÃÔäƒ ÃTæãÀ 5ªV„ŠïåCxÎ.ßã[í­þt¿Ä?32É÷Àó^²áUò2êýª}’þê_êŸÙgük}Ó>¸bbÍ(G<º‡µÚ®ÕAe¤Ààsl¢¾pYsÕájXàv+DÛ¤QÜ‹fÉlÃ$ÁÎÁ-˜d\¶`Må9nÊ.¨³Ç¯À{ô{¹ø Ø¥¦©›]³ÁY”`Ò¤ê0ìºþ‘ÐûÓ:÷1r{áÊ™fzá)­TšT›f‚Cž‰‚Ц¥É.x|ê>s•¬Æ…yHšÙq åZÉÒÝ4“r’kä}Ñ4Ñ6ûpå›Í’;tÂ[ñ:DòG·!]B °Ão\´âXpNÏ®lÉ£uô ÍdЄÈ]ìM¬X¶<{¿/âÍKl»_¾èiFk/F”¬˜¥)âKŽ÷yçåÏû€NÊpÊ,ür¼ÒvSÛTsˆËש<‡.Œ^äòO)'’É—­oŽñI‹¢vê%{;¯˜pptÄ\íú÷*Â4ÎH¼}‹_¬{6RîÓ7;¶ƒŸ`Ut]NÇTÄ€ZÂÓÝu. Kt¼êØ)•’;÷å„GÏ`ËpaÝ ìùÝ ë„˜ýy\ÿsÓœm~°†ýÕý×®¼9íC¿©_Í€ #én`|å͉’ýñåBÀŠÐqù=·lj-»5kˆ°I€ºZÖ‰(3\¶Å~¿‰ÝjW¯ÓªƒH€Xˆ>¬ô+®ÞCËsrÁ>_$“ª†Ÿg·˜% > ñ/€åg§þ¾ô»†8^¼œ‘¨0¶3·½“;šö¢ô¹Oq~U·±.¹¥õÇnßGg÷ù,š|VuãgP¿¾Ý'Á[1*.7wi–¯HóPà_Ö¸‚yø³Îðc8t\ Íðíì&rP‡Fw^,ý(Ú»‘¼Ð*úø¦éF_1‡ µÉ3úÆ¢…ûs8"dÌ/ƒKíse ü~íÂHa­e.:Ja ÿ4õN¯¨0?òÕRw•l—Q.’ðÑãO—ÌËX‚Ý ü/c–üœ£‚©;¸lqãðyza'FiàÃøç z«;ÖYBî{fœNGÜÆ]u§[5»%ä²µÓ‚$ª¦~Õœ¥wõ à¯xä^?_| êûû{V·1C;ðmÜ`æ«+ú°ºÆKyú4¥jü‘]pÞØ)À€Ú#¥ú@M»®#@=Í铯 ÝÉã9vehWÖƒ Bê}ÿohÿw;ÅÈöÿohÿÃ):Çÿê}UóÊY¡Þ˜Ûû‹Ò/wVpn%}gow8#IÀRÅ"—¢"]ED!1¢ ÈR°R§¤JëÅߢÿ1¶¿ÞÙ»ûlwƒƒ­E2Á”»½™›;~Ÿ‡ÉâjYb-ý§ï‡à‰áIAÌ$Öw×€¾…‰9Ý”¤ýÖlCö}˜±Œv³ñÚRÞŽw¢?véÁ„‡S+!êÂëJÏÌÌÇT ,Çr7×$—I™þ}{ˆÏ$Ãe¢¾ñüÒ¢ÁÊã™'Η‹‘ìC;ŸDžD\ù^Ü+IÁ­oÌeß<:ĉ²Ä¢,šws…VhÇǸ¥gyËþu§Ö Ûöò‡7œØVsHP»{R¿$Ϧ/¨v³JfžHÒÄ×.=<½•ÙÏëd‹~"µÿµcÔÙ4Dx±Ÿ”ZC hžÿñW`"‰5¸Fz°kü~¤j2%$é×mº^=-`R¥šà02åÙד¯<©ÇdÃÉ”Ùë˜ÞùÎ÷bFîwm\‰2ó±]Í((êùÛóE¯–!ÊÝg°ÎˆFé[.:PF =°^%‹A4 gk€ÄN¨)¬C·ñDBK£–¹‡)˜D²¯F%Z^Ñkšº,0¸öŸÄ—6à¢PŒ4î+È¢fM@“ÃÙìÔ줚Âg~ÿGµ ýR)ÈN©‹O†vsB4‘ru§†«^¥ŠzdYÆ('}°k¤Û/›svðU$3â¶ómw««ƒ9×=Ѓ¹HRIUTÝ;NÇ(R3sÝzgM<ÙÄ+WV€¼@"j§£léXݪaбÒ0y"& P±N>9:¶ØÉ¿U§†ÒÉ,né„®ûR*U"Ú6L£’…˜´¸¢ˆ«r›L­í$sd$éœÇÕ¬œ]ˆ]]¢ñôͧ˛ÙU_Á7†Aï‘Ж„!¨" ÕJ±ôªUÜAîlë2#½RzáàÌn˜ƒÊ ; J2ñ¤ÿR E,…Û1PïßÔ °¤‡sd:ë–.5„î^lèæ®L5òlž'hð²´é>­O¿Š\ØA<*˜[,f&¾ †l0wôËn>s¸h s åú‚wÊ ®Z'êùñ´çù5½Êj©€Tê!óE«èÓ<ïO5 ¡ã¡3Ú“¼hb^-úõõ‘Ï_û Í5È4xZ }#¥ !ÄúÅä}e¤]§ÁÓÃ`*²!´sÅJ¾êØÜL}Ä=wi+ˆ´êeëQÄ£—e×0y•+³Uæ‘,9ëüJpD0VaqÜiI·5ØM<ÃË ëu°;ž535wT ëXUIö&Ç< ¢üö/}p°kf,ót¹Å³Ã;g²` ææêAð«Ê÷~´› =^ri/t´S»ßæ4ò Ö»æ)_®Aü}óñctÌæsuï€B+šöCŒÌ㉷÷‰ÿy´‘‘ù¿küÿK„äü?¥|òÈ’(í-¦ÛVR‚0)iMµªÚuÐÜ_½ˆƒÂq8£Ièò¼¤‰ør ΃È·àó'¿áÓ?ýo»ÙìÜ˹M£A ¹›ìw½=ìö|öúÕŸ(Š®Ÿèß|ž©ž¹žµH9Çüòz•ѵ3ÏER+kË0è«ÁÖ2™U֜ʲ­/TÊÚUíz&eöÌ‚áS­~s+dޝdÙ¬¸Ëgó‹žÛPbŒ\M×(øqËÿ@SŽìˇ€–U¢s¡©ëNp?|{äÙl u+¶ƒ ”(õJ˜GÎÀ¿ ¥sÅ/±e‚ͺгºB‰´ÿ…«ó¸Þõˆ™ÂÄß½Þ(¯zWár–Šßµÿ:Í /‹ßÇTdˆF¬VZôy A„˜ºÕ9dè6_†ÜÌ >ŽWP˜$Oá´o¾ôsFìVÊ qþÑCªÇåpšE_ÈJ“²9¿¡ç4©.‘pü¢ƒ{ŠD”ZÍQ»ôY‚¥E+iɤÏq¥E¼‘ÿä.ªÐ4b¾„d‰qûw8Í«¶ô©NœEaךF“6q*$?¶«“©‰+CMSûcÇr{Ô­³÷ç ÐØÀÝøô'ͧœ‡8oÓñ§‰=QT=öHè⦠¨‘M‡Î†KÆ@::V5ܨ ¾­7•z ÿÇ?Ë%U¢1 FlìŢ…^ŸH1ÖÆØŸ!0O7‹Ë¾3“|k¢•AG(Ø^Ø5dÝL±à<·;yæåêØeõá=YCûù¶É"1T|D'’ÉÊ´ØÃ· ²»:ÍçÙ€r3êÜÂtòâàž†¨§A1„"¬C€Þâ¥YfžhÝ/Ð*çühx&ÈȦÞy,ê` Âr)¸œc7 7dfkÈ–5qN,M“Î>ÛÈãt0¢Q@lÔ€n넎Jbq@ÀX…Ö6 %T`aS]y$qKû)XÑ#‹B‘ÁË@ 턟‰’>½f;nÀ"%s:÷>1èˆ3GbJcŽçoíûArÐÍi¬èŸbáiè˜!ÕoÿJßû“dº!°A/¡0‹†‡nŠ@;ùãDÈ^óqwfpq>Ï£…Zÿ"¾Ùεž°Ü»eÂ[fµY‰ R4¯­zŽÀÿ&¬&ßÊìÐÇQ_„ò [Ú“âMùÂPþñnó¦ùÞΞÈÑH@ÖƒxhuI »UÅñÊV"»€šÎA…¼àZñªøâȫìz Ûo26súÁ+$·uiï¶Þ§± wTÇà}ÔÖ¾(~]7ÂXi*‡1´fUÃìcmVß²íQ¸§«Ó«ŠÙÁÒÃÎÆ\³§I¥f&º__=ˆjÏ&÷·½zgwn£¾@ÙYEê[ûNòQL{ÇRSi²‡Õ5Ò¸qbx«ö¯DÛ;ä%ÊHXW.\¯ZÃîÖïëäY]Páê(~k]2uÊ®£n~½!ÄgCœÐT¯ôˆØù‚qü†Pg7Ó½ñ–Bç#ò_ö±ÇS°[Ér+: †Œ¥ÓHµÐ,‰™žmˆkt^ËÖ’0=‹ÓoäÌ.7<6{[µ¤¾XŠ ÔCÉÅ‘+~{9aUšÒ’ˆûñJåËJ ¸þmÞˆÅk’÷bœ~€eä"‚5£Ã–.çqþ5¢–‡Ro ss£‹ŠÞýY²”­ïªm¯.W¦Ç qírG¿)^Í_8¨ô=C}O»»î. X ¹Þ¼ ‘æ…?õÛIÖ¤=&U¨ÅaÜèÙ1ƒç »:}Š|¼`9Qx` „Yø¸„69/b×|ü‚NÕ>ÊË-Ž8uÌaRkSÅ)GÉTÒQЫQš4 Áû.ô ÛÂ)¼lñêûTr$po§d$_Nš»ß d§œÑ/Éì:‚^$l©-‡úî²Búv*KÈ¿æzO^ƒÜòv] N<éEj¨T/È“GDpHŒd‘´­Ä‘ÒéBSb³KRöC÷{&ôÛðá¥ï—1=\%HIx#*%§ß¾ jäKK>ä9I[UN·|”ïj¾‡‹œéÂ4KD›’ÎÝ‚5úO…'{•Ë^Þ„}ôÃÞè¸ÿÆSÞ æ¨eG¾¥¾ü\ù×êïko‹ÿ¥{h™§G¶kФk]y…ýþ€g¥¯ü/!”ó¿B(ó­r2ýÏÊÉü ¡»šÚöØã¨q"ŠÒKaBÌ.”™(%”‘*Væn¯bÓU"ÿ”TÑ”¶KhØ©ã_¬XѲ¸Ê`‡Ã<%è?À=)ØùIûéÍëv -7eŠ(@w6™Íç^²íÃàeªCe¢#ç½ß”á•àeFÆNÆ{¿Ìʳµ´Ø7y¥$É~ŽÑyÚ€š½ùU½í}lˆÐâGÉŸÄ5ï~ùZ[ÚÆÌ7A†snË †ÇB›¶VïE’…7МŽ9ã#%¹¢€PŠåÛÈóèLbï߃ßCßM€úHÌ7¶KãJâb¿A_ϰü—I⎳؈®Oí/¨ÇÙ²# Û«à‡?Ó7fŠgs]Jß:" =â6GdŒ_¯³¾-‹5&ÛšåÙ¾èå/=–_"#sØ«ü´v‹é#­-­ÒÙ:"ãˆWâEaë3miÓ8Ï«Š{ù=<’k#ydi1¸ Ò¡©›f¯Õêôš6¶w:5&mMÙ™nvŽÁœéÞB*|‰È Ì mß,‡SOÍ·ÏtV·F<|t˜­š÷3˜as4 †'^uÓüXkXßO¬‹°¬ míV§hæéYjúú6­4È|3˜‡´˜Ü§ÃZŒœ]y€7Ò,õÏÓZß{¿\ŸìËŸüë?ÅeÕÄ[Nž1aêv|ýÞc½ë>zýë>ÔÛ=ÒkLK¶³‚ЫW'phiMåߥº©eòYÜ€QB]óçGù¢²„ÈQB¯Ð*˜Â§$ý÷ LJ’‚ }SøÀ Ñzðb!Î.Bn+²¨{Q‡‰Wà‡Þ ŸÜ ’¯÷ËÌ —Ñ’ßÆº=‰1ñÂÉÅÌÉøUaâ÷ëC^ö^”:¬I¶G$ÆÈŽ#ï=ÚhR±êYLûóEP‡“eóu.Ì9TYŠìŠ7÷þIä<Ζy(R K•~\ŽhpúU· ËË ‚÷ª3£-[·Ï¡› vÁÄÍÌ…´^j“*m†qi`q±9RÖŒ{1˜DÔ¢ïâÐpû°Ö "rTÒï¿§·}+…²7­ ±d(ƒxcÙ˜7mqøÊ ›%Gs¥!ͳÛîÇDW'˜ZûÙ–òþ=|Šöñ˜¨+éx÷,ÁýÓ¦A €Ë’ Ùêôë"u!…XÒücUe¼)Èßœâcz­æ¦¶#ܪs¹þ´ Œ0 Q× šˆ1­Ù¿D§?¯Ù¹™ñ2¾…ž6‡Î¤Ðêª+†Iµˆ4Õªo‚¡tø_tb(É•1D b´Õ¤WÃöbéé,:–U¬Eô커B /̹ôx5oü† ˆHÌÙŒ!ï‚Á@ w“ža"a‡]#½|Åb³4v㲬TT„(JJáToórA1à~§8…¿·¬Â˜nž…]‚¿pá:˜~ö»@ð:­¼ã¶þRÅbÑ٠чP¦ý *,„¡„µ…ð_Ð o­dïB)|ÿ3·(ƒ*â)ÚUêT!'À?”¤©Q&Ïð¥¢J‡YÈû›KÒÔÉ‹°UY¿†¸^tÛ˜‚ë ŸÐ²Lf„Û­Kc&q.“îD1}š~ªYœ‹‡7uJdgk´A&6oPu»X›ÐmñÕôëRQê]}BÍß âÝœ0·7´eJ¥ãPà°y¢ ŸZ@#âγ2kä/ì#à-êaéÝ·òÂÅo·\¥MX½‰räÔV#Q¹|?÷ð!âæLå@Ç›—у’_º³Þ.>ÕN¬3«šš|tJXÌê|tWm«"¹•ó 2s„  ²Žö71/à©§%] Qc((Œ³€@mHAØ «9ÃKõ÷h<Í 51,L7,ÀfqÈy<õoì¦)±J\߈£Aï{÷Ð@ç*›éX¢)¡™‰o4Ùnk ܧžÃ‰Õ›Nb!_<ÕÝÆÝåÑk‰\ÕÞ%–š§k¥ÈÆVß]hùX,S‰¤U®dò)b½·MOêÕ€‹“‡›¯SE(òX©i¤ºÑ™'À©nÕ9ÍM¼FõÆyMêiä¶æ;ÎÚ¢ú[ÓL…w#Áx[))sÕ®ž#ÃØX©°Æt±þã‹)gFF-Ž”Z¸íël¯ ®9&BÛ;[•m¨ÁõPËçš6ݪ`‰È®øW¹òxH›)Þ|)±OoÊ Š´JÖÒ›šácþ㩉À&Y# A‹¯÷M+NQ›¯³ŸÑ/,ÄñC#ÿÌÇêÿ·ÞÎenŠ£i±ð€à?ü~´$.Ä—fÏô@Š·þNÃB{·É{'n¤SÞß2Jyúrþ³ë÷RøÐñ@QÃ_i‡€/'fS÷ÙûŠ@ˆ[úèy:vL¥¼¹¯ûu¥²ŒŽGß_u_®ãÞ¡áp!e?¼RÇ d-ñb=ñäüŽ·¶½ <á׆¿öÆÁMrÐÁêÏ]£Ïj™òyvðEÔ.RæZq6ŒEí&ΘmFîÌYS|u:¯…)rÞdHK Q ¼Ê̇Ã.ßsÞµ(±)Òv|¯èö¢Éó….ÏIÖáð.ŽoÛØ•ÄuÛ‡R¾w´[ŸÖMzÀ˜Œ:¢vû+ܓҳ¦hòµ‚0î-“Ó.ñÃÝÍ{DéøS˜òÛïÒ†°y¤ˆå›U 06ˆ~è5%7{œÞóÔæ'5š±²Ye¥‰â´7öyõ‰”Êýò]{Ïø!4|>Rq¼Ý‚–#¢¹ŒÈeÑ"ŒRÜG©^ !µ¸ÙAŽ{C)Ø {=FðFúù<åªg™èwñ|q·ÑŒFì’Gèj‰²,Ò—ƒDl.©‹¬@§“\ߢ±ÖÖsÅ;uWíUçnA ˆixwÔy†uÓyc±tž“²¨eó:[÷Iì*PÒç·ÀòƒlpÄzñ{A> þ?ð!÷feéµîã<™žOšv— Ñ—çÕBÞ¶>û®”­-3/‘Ÿ×Eìû §T6®7mÜÏûK!½&NDÅIùovl;oènËc›Øã|ûNCoÚk}Œ»"TŸQ+eÁJôŠ@µÄNO¬±ÊûFªxmY¾ýüc¬ÀŽ:Æd0rÙ˜`ùÐ’=Qöh­ÿLÁnò½è¤Ç-€8wn’¥ ,Êø#“™ÞÎÖÝì êpE¨^âýÁ jn“wÎ@r…Ê3SkZ‰§2…ÇBß0Ü»hÀ)5öº=6ç;úap2¡²$Éüæà'…Ïþе{bѳªÉ¡­À0î´Ú綤«*þ÷àUê|ùòàÿKyÿ ãÿ.©pþ/c“œÿ§±Ij†fAŠÜœiÕ Õ ´`ÅÉN(9BO9¨0(BK†Ò.‚°ÎļƠÎÈ̼R! ºô°êŽ<3 ´të!t €Âldàÿåaÿ³åÏÎþŸkì ÿ³áÏÎðjøßhmÛckb’;^7.O¼´i:9Å7«5Tsd:gjG ­/Ü’FªínuSfÑPÑ¢aY€LµíFÔxÁ>ÈßÁó ì»Ïe:›ÅÝ<ÄHk¡¡ˆ*2½Î¸øöß¹]Ÿ—µÆÊDÿ„øçódûóýíˆ|³~œO27¯çï_fN\çÏLks_ãÛÛŽ»$¶ÇÎþ6¬Å‚£ä€™_·ëdgNßøô8|펺ýM{ŽÍ¿äϵ;}#1::ˆn¤Þdâ:jîëÓ¥Á_ÅêêÃÈmzã*É^w~ûÒYŸ‡¥­õï¦ZBhFÙšÙ­Þßpyç+Ð×Á¨„OÁ¸]&ßvç)2Iqúsrhמ”ëLª¾±øögÏÎÓ¢M&¸6`å¨Ú½´ó¹¼ŸŽžÎ¸·¸£«UŸóxCnÒÁ¥ž7û¥nÒ’ûØwéädn[Óð×°»mj¯$o2¬¢.ø1ÿ!$@Íup`wnŸjý6ìmP¯`pû+Aö7’äj‰|ìæäÓ‡]¥Æÿ½3Ù±’rÔa!ØÖä݇K1Ã2|yˆy¦¡!Î?”Ê f‡fÜgq¦W;áœGŸB%€Ö­åà •°±TÖŸ5Ú=h¨ãÆlX»üHšàO¬ã×6’wA PÏÒ¨-뾨{¡°gá@ŒÂ(Þ"¬‘‰„´LÄn•õ‡lÞK’µñéSÏÎÜHu…x :8SÎ;]94jÃ)évà–~å¯4t*æxÃ%Îí}Ü“Ë2¨T©F,¸¯Ñ¡ÒKç†Â6PsÜÕ¦vÄà :Ѻû§3 "Ъ(<¬ß3Kv¢•166c,R<)œíôph"ƒŽDg¼c$¥j‡çN\ø©CpæA^Ç&¤—¸Ìʽs1'ö‡Wæ+ÄcÕÀ1(~ó­GŸ'“v7*Ô<µRÇ-zá#‡"Æ)Ƙ¬Æ¾R¾!q»$¥[ÿ#0x²[‹Œ ÜÑ ª¾ˆzùòB£°ö®ÿ% }u%\ ‘!'jt). Ï̈2øÓQ€öA;³gŸ~Uo×Ãé³ÉîoÓ¹©Ï~«@oéÝÂ-)Û"9½´gÃë±z,×w:åGšÂ•OŠ´8À×FøJ ~paÝö5Àh²”áT›z£ÆŽÆ§éµñkuµóy;]ôöþçó°Ú}öNó¦â¸ÅN{L¸Ùîgóмö5q¡{¤½_Ý3\µ4z m:tÄïŒáv»»úÕïbºÍä;Éå;¢1rçÝ•¡©;SJ¦D0v}eät\sé1€xùz?>y1@ÍßÞ3íbÀVî¼Eø—X‡bÒt)» Í+Ç2xÓ7L»ÙncÆêÙ„¸çf+ø›`du¯—|R(œgûoT0U¶B#"'öU“‹—­çqtPm6#¾–”­h𢼲⛙.Áã’ I ž{”|¡ÆóÔ¡2Œ<ã)ÎC½@BMØ¢fœ!f4ŒZöëfÿqzÞ´·]6H ºï8W?ä©R5ñJÅùNïŸKÑ$Êñâ5¦ñèv—‡…XáFy–·dMºäõœàJ.»i);Ìüýïþ¿š‰ùÑCh÷ËÏpñêøüxêáƒÃäªC§#4ZPc£FþHõ ¼ÓÔ¬‹š¾#À¹Èá³÷ßwEPlüŸªÁ2ÎðØº Ù —H(çåQã «J±üX5á¥B°#×6.I£\ж¡€,Ãj`³/б5…8\Òý\ùM­ÄêºÔgHNô<¡9u1yBî"¨˜ r„e±_‡Pz#öMßëì蓚ÍÓK«Ð@-´ìð\ÿØh{Õôh÷5šÏh15™]æ:ìþÒàfÅËÓ/«N°í+#ã}|yŸ¢8…±ä=|ep z šÔ4@iŸîß@H&¯k0^,w¿åWžÔÐããÔBãhYÚóFâlÃÞF-Ü•NÚõ¸×‹©‘d²øF•µú{ØTmd[lª…‰´^ìh¹x¡W¥){±B½ítÛøÖßÞ” •j_v@#þºMµ¯Ïûewвmç–®ã kíÄÚ9Q¯ Ç3D:¹95©ìŽ(¡ºI޹õe§Zi–§*ÂÉ’"85É.Úò:RpáÊm __³èÕ¢ákuê³èGpëis‘ƒwÄRJ æY€|Eê ‰1Ñ?üÚ#{3¾½…‹¢×°vçöîˆÉ£Àx¤zü X.É8) ¸„a@'€ˆXöGjî̸M”Î|”}˜®º?ÌS k^¸®E=èá=/qxÕkgC1™5žÈR£*’£P§i÷ùLɤOKÈl'©…‰ÈÕò³.Nnçâç¶Å8i\H¥1»$ЖJ.ºeëç†5 .£t€ÕpNŒJ²Ú¸zÜéŽ&ß(J°tieÄ 7qõ Òêyã’Yc«1FgteÜ|U”웲|ÂÝÒ7³Ãƒ#˪—¾I²ÈVáµní+¬È€Ê“ÑH'¤ƒI ÊIPå\•-<ì/0î'‘™ém„¿ÔEN @„ePsï‹îbpŠŸJÒoŽêÄú$œ}êàæ[—Ù0¢Ÿhtk:¥Z‰§åÃYêP;…« Ÿoşĸ9:®öv ‡Ú¥<¼›ëìb2CêŒUކ†aßOƒí˜RÐÖí‰ÿµt×…ÏÚm'Hþãã%Á“×D>SÓ ‹ißjý» 6³QQÂ×-XwÜd_Øìn‡úÞ^s÷_6üÙæ|? }·Øÿ´\þÿéÿå@fÆÿ^ýŸ _ì ÿG…/meœqT4­´MÒJÓÐuP‹N˜Œ!hÃQ—7U:LBãI0)QHJÌIGI¢H\Ãè*]‰C§ÓAú:•oâ$ðþÂ?úòúeÞ,lêÉT))ø¥¹ç¾ô»œ§Qy›s¤&ÜOñ‡‹äEr6£ù}x¼mlïbkl¶¦78±Ó¾ñzDn‡éÄÞ7–vΞΞ·Ó‹-q H â7¼¸×¹\ü"û"…ï:W«gwÿx–š÷†I¾ßwª¿.v9ô0F4ããâFµìøÝ£»„ó(÷áOòº>áü®Ä÷9óFàæXý©Ýãá/ºÈˆØáˆØOfoÒ±‰Ö¯ Þö Ü¥:ËOéY>výè²®ÚÍwB½½ý<ã§Ï>Þ_ÑêY3E‘Ó!⡾øk¾?ÎvÖM‹VÁ‘Ü>‚© Ð3Z?XØ»}íxïÖÛ…{Óô¸}ûñð.J½“ÈBtæˆ ¿¤ËÃ)ðåÙÂÃhÇx«Ý¶,eD ×ÚÌÉÜPѪ•oÓõ¬JöIüÛ™Ùld"ø¶C<¬¥r˜AÇ£ÎÕü]óe#Îî°?Él`³‹ê}Æy„{|/Ë=¿­NæßëãÚQs¯ oºÅÑçôèù÷ˆdÇÏÛEHßxÜ}1½M˜}ºë> ŸÆO=¿:ù“p&œJÈvNR5 KSai~ƒ6p¹¸˜Ud_(àaqî‘2yšûTÐõô:½Îžçôpè¯>Ž@Ëý·%2ã—A5ïBgߣ£åUãÍöèrúcÓéjñÜô{º\mztvw‰±:|‡C–;ÑéÇ{Í-CU8>õÛÕòÛú<M¸ÿÐÞáë·ö.Fz©'¶8FïÚ÷—kÿ!Óƒž°æVòq]`ÛÓ£}¥Ql`+%ÐS‹HàÓ,cýÝp³Ù1«f–|—.P¨$ÆÜƒUÀõ!eÍeÉ +K²ËÏxbÔÉò›à¹1ß4ÊË@¶^SB©°3ÂE™ø'¥áâ«2òB1ä¢ç"Ûué3¦|‘«ÊàÃËO36º´y|´ž5­C gåAÂ-þ¨à%â¤Roô©ÀŽ›ÞRÊ‚×9áƒç?Ö­xvSžÃfì,¸«€òóâdK{ì(L STS½¦Ý¿Q:[:–<%)Âéà›®Ú†Hœá ñ« Æè¡éì3Ne‘Ð ì/KN)¸geœË1“g4ŸªmüC¦´O´±?=‘J}æDuí“ÇA‚ú)!w‚x8eûØ-T•ërFBʹ¢Q3\WB+;Nfó(Á0…Ô”`Ï?ªËdö·L•8Rs$£Ÿ #IM°àêÒ‚–Ǿ‚µ«¸¼`vý‘"šW¾û§°„¶_м|ù.ì×=WgpaÍѤá×/Öý±OEø‡™:>K-È‹j¯ÞzR„™˜¿«¼ÏÕ ¹›™&’¿eN§èà–EÐ)EA&‡ìU2/Ê^<'%Éq® u~×:‰bºY÷A¬*¼›{4åÃ?c¹WÍó .ì+£0Ú†áȼ<‡ÍRŒó¢¼YžLIàLz—Âij™|©3rÕÌÌU¸Rî’…|Jv+R¥ƒiQ-ìv}r7iOÏ·U_ Ii¼:$öÙNÂm”?ÈióèijÑÁ¸À„ÿ,Æ›—òí¬eùe.¨ªYvl“Fýq«&r* WÔŽ=Ä/A[p‚ zòvsˆ·àfx;2zƒœ¿ñˆ¡À}ÿ‘ û4¼im Û[ºüsIøj'8o©þ!уÞ\fÃãq|«|¡5Û8Þþq\Ðä©wÑ×!ϦqV—m(nÞç5ï®ÂwØoO çP£þ‰·›>Ï6oaMÂØª ¥$ ¡0<>%!<,¡ *Á–p¤Ñ·&6ÍT˜ï[þ3‡GÜç{ǧ–{4ñVLcUMM\ÂhØ{<Â8¡`3,U®FJ“‹mIˆ2äÙÐw‚ù±˜Ã'|ÇŠ†©÷.tê+Þå®·RèοJHÖi“*½hNÒ¬kC‘4*éâ¥x°Ä&ÔWÿ6¦«?¾\ŒnLü†QYÍwƒAÙ2ï&çI ÇÙH|Œø/ç Ž{ËEuÌ<Ïö71O~Mì* oͦú¨»ÆHÐR‰$iTñªÍ«¸vù¼ç&:í‹ êi%Xk8Áb–ëwÙj,|6õâiÊàUR ‰˜vº&ZS´šr §Øå|¼îÉÏÝ læz,œÁ[[UXß M»Ö;ù1e󬳕[è:0xï\ÿ_2˜Û{lâH¶ñÁàÇ%æ?x| §aC6uN‘ƒI§9{t„ñSÛ-]PG}ãœ%Æ~MÎ —°ÌD‘K˜¾]&˜rˈ-ò¾àе—¾p¢—.s‰Lö’ç6Ñæ$Ìì{+å‡7:·Z3Ø¢ö¹ÂîÉ8èƒh:˜¯&UÓ »Ü+aB Û ŠMÙÂÒ¹gbðÊûådw0Ü¢íñ%Cÿ´Iâ(Sa˜Z2i½ªU™lR6—Ö•‚Ŷ¬5ÙÄÁ:û=ˆX˜°ë ’“R.7Lžî_éÄ&@_Ýq¾)ªêQòÂR)²%~™|™ ð±+n-¸îˆG§ż!±ÓÀLu !×ÐBWx¥û€3#Û*]î›ô´KΖ­…8(O „Ü&Gºï©( N¯BénÛÈ“Æi·椿ڞ¯?ŸwH g… †Aö§ô;²š¦IÍÓ 1ªÂÍЮ(KµNrtôa®_ñW%çÚ˜G´é¤@õ)nïvÒ}¦>HÊt½tYΔ64Un%‘=©gÝlú>–+(Åu^ÜDl˜B2Ú˜”´ÝĘ [±éO:8`ÕLÖåZµvÝ~&L 'ŸÑ­f„¯2 à¡ ÏiÛ0xÃÑ^ýÕ4dÙ,`2ƒ_Sê}F<±D ÀT Ñ*Á sS¬‹÷k¢U®)óŸ@º‡%ËLlÀ)0ج¬Ø^"µê¶€GÙA«su¿}ƾ/Ð9ꢥîj¢ž eöiA‚¦lâ é•/šÁ¬”8æ»*át¨t/KV£â•ÏÕ <‘\ »:*À†[Et™e]µµ¹ÝpUÈdØÁŒË‹X0Žr–q‰F ¥X1ˆ*3ÂÖCX™Ñi?Sc~DååðéŸl&Në.¤^ýZŒâ„/çØ®´•ˆ¤¹ ì›ÍʨF‚ÎfÿVj5)ðÏκÏ<'fs˜¤Óݹ…3€ÍÉÑ겂è [•"îþ]ý5›y[ÝÓöien;vÙ†_‹ÄÜâáËg)ûHx Ñü>Ó¤kÏÒF!–l ǰ˜åæ±àƒ?Ÿî¾õ”„æ ‘oËC§ K´:«ÝJˆ„á+lßÖNó»¸%þ?À¯,Qµÿ…æÿÛÕŒé¿ôzÙÿgU—ñÿTÕÝÕÒ¶ßC‹«ö…4Q]rB‘N²(Ui™<¼?smiCÚ–½)¸ƒZ¢3Èn¦Éxæj;®²4 Ô[àoŒ÷ÝÞow>TÀÉj¡õ´0a g>̽›Á™{ VÔTýëøûíògõ›Z‘ÄøºßŒnÔÎÞ說2º·þdSãÏ8…"kQ³at7êó´%C”*C¾œÙäà\·ú5þ}õJ¦[*±öœWÌi²ƒºFÃ%½‰“Û-=`Ô©¬ü[™KÇMÏ/g~O­ú2vOܲ[Þù-J¢¹íÚšÍæ°o‹Ê?loR]A“ Sfîmj8çÙI‘ ú¦slõw ð UwhØ¢So’XÛ u¥F´Zo£#Ÿ†\Éš±[½ö‰z~*ãÚÎ"M¦v;'Âü}¥R…E`ä×KÕ ²é{H§;œºXO02ýÒ°ó™A[2-}jÈ)7\Ö=ªA&ìòÄ•rÑ·rÕÎ}L)B]÷ñÌ9Hºž»ìœ“´b¢Õl¹–xU%±?é|˜D~¦½EfÛ¡ˆWoï’ÙÚgêqù˜©ò!?ÍõÙpDàPË ††ÍTNÙ )´ùd®¡a÷ûUŽEŠqÝŸuyǦ¦u¯Þ]>'- ^¤ˆ8˜CÙÀp§ÎežTýöøÐ±ý¿`v9h@uŽ/á^GèRÕfjª!b¿…_¥k´3qÔ.à„?ã[4ÂÆt*4BzJ?²k­]'÷³#,p¥áGa± W>‰ã#3F`¹°VÆ#0z2ÏTV¬áQ”@¾´ ë¨|ª*+§N¤yå['AùÉc`²lÇ}Î(ÔQÀÒgžr@V#°<òOk†,ÌØ‡";‹»RkÖ²*êù'p,›¯©r«' s2ŠŠÁDX*/š&Ð&äóa0°G Ζ ÿMÌÔ›Åk}nlã2ë2V:`uLч K ¢`Tás– $¼jŸœ¸&ÑxƒiÚ˜(ƒZ†$ZâùäAóÐÂÊÅÑîAEh< õ1à±ÙACÑH‰ !tiÈYP¾ *Ä‚…™ˆ“£EÕ^˜j™¡ ICónC¹4ìÃMÌf ĺ î*ŠIpFb /Ha?n€¼Åðq‘Ö%¾Ú“@؃ðÚT1<»¯À«¡#ö=LΦwبL³‡nühsd°–;°´~‡¤€8Ýæ«*^͆1>M—§^ ÆÝ”Õá k‹F=l²'ø†äåó`wõô²Á\Ý`0ð@sÏÕÀáX\Ö*4+°ê„ðmÖª¡±ï‹€(ÄË£x‰ˆzÖ¨¼Ê¶}¿ó8ޱ4El†æýø°rŸÐê=)ý²Ô˲Ác™d­CTß%C·HÑØL³ Ìÿ¸~B0Y<<¥Ò×&×DÐ\%@ Éd>Ž›Ì9«Èb0÷ìÖÉò¡Ôo!‡3:ºÇ膳¾¥Ržšó‰Üàçš`C/e”Dˆ³*6bœË±©ßå·NÖVÇ©…ìeØ©^…¶uªŽÖ¢ýá¸P-’{‘×Qa­]õ+矀¡þšÙ)˜úÈþvw~DkrNG¸Ž•î«X{€ð|1å×&û'îuŒœbû¶¼N(×’¶[šOqÅÒß©TæˆG»–¯îW©g =z3dçJ¡² M XÚ^°Y'⩱…— /ËKtCyÉ΋Tý¹ [vù2²”çÇŽa±^Jëôs†‹¹/7í$á©”/ÈË)ºóhKο^SÍêœM”-w)Ž-y³õ·žð?Fا\ͤ_/Ï:]"¶QdK—$ÉAgÚÔ޼.ùê’Ù²i>©×Ä›[˜¯qÀÃܳUïSOI_xfJìR¼9K¿–‰–×·‰e\–n²FÜ‹r‘èJE«Çþ°ÆØ0÷ nInôt!¶#…ž&9·èmOìi.Ôû{·m”ÛÀ¹Jƒ«b9·uèѺwLGùmDjY¢±»I£à#ô7t…œñT­­;_¤¢O¤ï×8jöÀ³• ¶)iÄj5­ÎïhXÁ8l!ÿæ ¢bö cŠ¿ âµÑ 8~ÚpÐÊøVjuwÒ¸¬'C8—Kº^w¡™MÇaã?—’a›¼Ä죠æ‚Ù•}O™Rh™<ÏûQz H¸S„À{u!|0t•c_O5Ù.þ›ÃJö¶ýõšé?üjbãƒ.ó:±ËzÎ`DØýpfUyÖ¾d$¬,t0Ro×aq]Ì—œáwœ½Óm®Ø_ý¹s4ߥ—ms¹.?d»Ù´L˜»ZîÓrTçBt¿(ùÞÓÓºÇY^‚²k=Wàb·h¹æ€>°;Õ;h©sT÷É—Ïg¢di“¸ÊmRüVuRM~'œÿüÛøç"ãWgfý/EJv¦ÿ©HÉÎôR¤¬U³–ÆDq}r`4j Šd4CŠ®[ZÍE­© ­²m´‹J©%hƒª•‚}–”x€Î¦wË›´“a©E’p;Ûó¾Íd6gv½F…°yMì'G߬¾F ð‘ûÉÑ ¨%èî%€k¦Z5‚§Ó ‹‚Š®éäýt£|ÏÒõ¥Tj”f˜…á3ŸM #ê#Ÿ¬$Áî¶â±º84 Cï÷¢«’µ% CHê4´æIGïì&û'2¦´ˆT´0m“öîôlbµB±l—Œ"ÚÐow/ä´ðB¾ Þ…$ýʈˮ¥u)€ŸÅ.k~›Aº‚˜è*WQfaœŒ H4A×ð¬ßêû|M¼‘5 [aߺxbä—‡¾Ì3óÄÃ&"Aà·ïÀ´ÍËT…J{ïZ!÷ƒHPSÉ©ÜÈßP-qé¶ú×Y½P€pà‚PÄ|2•½ŽòÍq3kÙò`€½$‚Ù±áÖÙUϲm ]W["çz´¬‚k°Xkx·èS#w¢Uipò+¤ŽÛÆ6j)ÑU2¤–8™TÁ[ žj|qÚR¸ ‰ÅC±•¡&›ÏÞ!êpŽT»X…ÿˆìõ}±*9§^5©ô !MzœŠ&HwÅAY†çÖÅS%XÄxÊÃM¶#7TÇЇˆ>š&ý QNGhº±4ÝŒ9ÖAù#G‰LýFmæ‚BG*«ñ–C!FÅØw)Ý-ºéqmzEŒßÛNñ‘ºì‹ Hž£É•O¿‰ݼj‘§hh#*6¯€ä·S—ÌTíäËÍáBd;â2’›´]­’M³?8%˜³ze©–Y”y׺³¯Qí°ì •å°uÕ‡µÍ8NbÒ?µcøÑfäY·¹@€ç[ÙÚ®ùÀ àµùú ÝÑÎà Ðþ›øÿ¹ãdüïv ëÿ²ÛÙþ/»}Tëëÿ1Li£‰L dJƒÕ€WÓh$ ¼íCGO éj›Ë á tÕÚfM^©o‘Kf¹”Éú†þ)\v+cÎü^øþSÞ"RmæK– A,ÞözÏóÆÝûœoù¸ŸF®ðÞ^wÁ‡áe†ê&ùÛï²voCë$gn‚ 9[dÿuÜ÷˜}‘f´ÏþãWg‰ñ·¢áÏÌjÒ¦KÐýQYäòµÉ*f‹™uñ¨Ë§zÖ_LJl6ã-@'àóH½-÷\úO¯ª5â4]X¸­<)S9íÅk,½öÜ“æÛÏÕâ3lV õ…´dµ b{åÓ÷2œ°ü*a¤-{äãÍ™K ·]ì\.d\4hÏ/Ùö^×ÿ´¬¯0º¸½Êxܨ¥é×ÛGŠ6/ºgN¸ò:Ø”ófJ™¤_&«—_D½¦!#:XuåÓË ^„^¯žÉ ¦ðΑôwðªMÛËþI ËøÛ”y]Ôô%¶áºà$sÐu¿€×ˆlÛh_sA¤ÉÓËìW¨CO+&×kíûåK«²ª²íLî(‘Út ¦Üz*eVˆÒ*–§±AØdÜFk¡ÃøSgcS=\Æ $Î?‡FœGQ§úP5+ïTb~H¡–)øC*O°O òЯ˜Ù10 oÆV2ql€*(Èri\pYÑ«T0«länÉÙfvæ Û@«œ:üØÏ¥˜gX¢ÌN“6´4«×á–OsßV¡fJß ]à0s\†(I(ÐRx,®µEºÀKµ‚n×2€7âž‚DkOÃ=…±gÑa«Vù_†ÁÂÑbÃï±»ì·uŽ)âŸz7>'8 c2©0L@žy¨]Œ`-M‚q!³Vö‰l÷‚Ù²9EÑ\¿Î÷u![a£yÄ¡G€˜6LðípMœU8ÛÉÚ•\¹00ӌߗ—¥9I˜hFj€Øu „Mø›¶Ž ¦·èb‡Æ/èmC}/´@À'#¶‚R!³v.Y`—ÇÞÚÊÚ×p¤]§|1þ{[3£Šú¯óÌ\e5ùŒ·|DQúŽ0lq½]Ò2fJûÕŒå,ßql¬güDì| ûÒré¸x8ɨAèx`9“ó/pkÞV`>—ãÉÄÑN ñÉ{ftç˜üà,±?”ÜK¬‡i?mûGç”ç)vvÙ2õ^ó¶kA"X¸“€ÌÇɯ+›Â]§¿ûn'{žqhU4È \p^ FÃm9ˆ|žü4@ùV¿¡”¨J¥sÄ ¶ÔfÛO:ÿ H ˆQ`© pDÔ»ïGøôi²×CL)1ÜüA)]Üý¦mÿlÇ!¾üÁ äÄ^ôƒ{û­øàòú5Å­xcwö <¦;y…ŠP>ú'f,ƒÑ9)gRõˆt´g C 52"±–/v)þk·0¼·Ï"%ÂA¡ú+À8þ¦.w‚.®Æ×_F‡xÔ nøF dÍ"—*÷Ü,¼€¨–¸b„×n‡À¦€; cðœÃŒÀ8Òì5VÌ8’棯€[{3ðÂÚö•b£XP#K{;î²4T¶%,•4’=œ†'„gMž×¥ Ïõ ±­š¹HùÌ#*̸¾&àiŠPÙøêGv w˜ªz5|2åÂç³.0g»i’:‹z öNÞöîøý~à©üŽkk§Rè{‡\\ءɕûY´î¡³"ô 1MBˆ]°F±ÄòžØ°dáC(jÖÅPQäMÞ„ÌÛ i=r%.=„Áæ}Å›:óôœ˜8ú€Lî\.e± Hµ¯NpPÌT¿¦>Mκ‘ ‡U½Æ™;û© ý ay¡„ )û$±  ¿ýDŠ—%žaÝKqæÅW•뀗°º÷Y|jÓÑv¹ªl`ZDUv¯uK$<Yt,ŠŽWÛ.Bu¹È\eAª¥^¨ `áB­Š'Y¹ÃHÅ88hLt b¼BV0„Q(»Ó[†W7!^Í-µj16š’÷(›¸ Ü ÔéC+ÆÕ%ãûÊúúª«© Ã…wÁàÁHküa=(JêLfoÇBˆ2‡&ÕštÕ=áŽ%úÍÕ°&.)ÌÚKسÔÝE¸î9ds ’õÑ.IúZ®ªOÉL”儊8^ªý,|Ã|¯Œ¹Sч~Μ…sSw3êu⡺x@€¢^’_PÄ[èðÄ:‡0$ˆšK…g R‘äÄp6rÛv»ØS¾dº’iB^—ÏÎsw‡+QPfŒ‘6œÿžx¬É&B16\ñŸ¢¥û÷ÃZò˜ðñåÎqÅ‹¦q*¢ãêªG ÙGÅ€ô&Ì€ÝHk~óB:sz>Û†üÆ5»Uh÷DYA¼•\Êú«¡> }g›fÎf éf@†|ÿpŸôT›V6%mŸ¶÷#ñ¶ývq.س…<¯×ÏÎÔ訳TÑ‹s÷±zB@^ì{^V4C˜m+¬ü}Ïõ¼»=iT"¾&g[ÍÎûØÓû­‰Ô:ÆX‚Á±Ô1±ZÓèoþé¯ny¾Û¿S_p|¬?Ð,K¿˜`é÷ì6K£?ë¯}^>ÿø½‰oì7ÊÛþl¿èeX¨„p=](x¸*&z±Ò s1lvþÐÆ·×ùÒœKfyåÃÈ! Ô/?yÞ¸ývÞ÷ŽïIÿu×Ão®`ãíÞj{ßÕÃʾ€LÏâçÇ’ÕËÛ”zRÈë’\è«À``ÞC¯™×펙ª®;²ŒtÍV-†!ž\>*%qlWÒŠ[Ýl% a©¹O®µm퓊¬­¾c`šZRÝÅX—¿XV] Ãג;²J™Ž¸J°Ô¬wdcÕžP{nùî#äòê¿èkŽŠ,_=üŠ3øù€ Oo뙫~(FÜl÷Aý“Ê;m“”›‚¢ß‚B£hÎÒ Þ¤ôÓ•LT×U"} säÖâ~t‹™“ÂQÍ#šC¡ÚZœÎè;1#iæ@°Š‚oê¨oâPÕ<½zÕ"…ÿ„Pïðï59Î~ÕÉÅû5ꕃ\¢OY¾²€ÐSs驲ѣ sHCâ˜G'w˜eçpfîÉ«'b‡lz>¦Ï?}¤êgŸ˜òÏýÍDËSà%^V¼Ê­Øp³LÆíf°‡^ôL[“'hZhˆp3*£UFFwZZÞ¡=9dæ¥Ú-§„îŸ+_)äÑÇŠðLšjû vUmÞÓ–oìÏÁ@T`qચŒé"ßèO»­DXfæÆÒu9©”7ü’é•Ý›,ÄËÆ›:£Ðƒð84Ä–`½AÉ|v® åó*“Â+ÎÀP“88~Èe’Æ£ºFÞ¤usÚÒbx+à¹['ÔRvkÏõ{´™Óë›­#ˆþ7S:¢l£p¯<Î p±+ˆW¡Ì¸J˜¦‹§ªûãÄáVòˆ] ™®½¸LDïնZÈóÈU*PÁê@Õày6É™ ôö1ž0ZG‹ßûD›ŽZ1›˜>кশ>?TÞvÜ‹*)nüRÞ× /¾ªµe `óïª7yÓÝÄXTkþ¡¤ BÓã®å–UD ©C*šG(n¯þnóN²÷Csî‘D‚±àîõhð–@ôj4ZCzÝ´\@LK+¿PŽÝ`Ëv"°b5ªˆp`¬c½zOÿa¸cÀ#p,Ž“1ú˜‘ÀøŒÄ°Ñ¥RÏ <«ömtšëY¥jî»j£§'½ì³(IéGmÔµ*µˆ8%DOü+|ñ˜"§ù¾LWjþq…›D˯JéNzWÒC)\#¾¦ÌÞâCì†Ô<¡æøE°€3g†úŠZ/èò1ÔÖõs\ßÅF½ÇÞá°ô;á "Õ\zV^° O”K x¾ÐSäÙ4î_ ðß! .ý‚ZH¥Ð˜Ù+†”Á@ɇ[ÅñXUÒïOaT듹~Òm0Ÿ äIåpàW‰íós_^Á^XÁÄ\/`»ÆƒF.uŒ›Ò(åRðú ÕE•—lU +§·`¸‹3Ó]/zÿv¡WUÚóH X2u¨iž°©—Œ—d¼h\ö.ÆIM›¤ôA× X wÎz÷°5( hyUΠÜ'1‹º)‡žÌbÔuTBŽÜÌö˜ôFr“hy8¤˜”òhb/ôÁo’¸àʃŒ¼¾š0Ûu!æ ¨[§¡€"ÙK‚q¡7±®›µNƦ¨!T³ë‘›zïKGÈ!ý‹%½T$òi›1²:iµà wI}Á-Š7T®œS!ð·à¦_{2.þq[Cµhó'ƒ•ïX RΗïŽÇóǧÈRî0­"y%)׸všêmä/’ÒÛÕNåv…Ob ïŠv6::ù^ž·Föæ‡ úž2ø²b4«Îáú2g‚«ã¥öt9*¸Ö¿R¯ú«„ ƒ&z¹u* ý”ßot]jHœÿ%ÿϾ'3Ç—ÞXþç™gv–ÿÓ™çS-[yìMÔ8ƹ 1"=t(šÁ˜H`·ÙLn{8éAM!Mr+H2ú›Ûô6íPª U4‰,ŠM‘-Ú?~+þv?ýyßS=c’×*ú(€ù\æó<ç<çùœsŽxÙê ™èïcÿ~Ÿ¿?¢.²_Ÿ‰Ö%fVäÌØÙÚdø>]G|ïÔ)ttéØúeæh™ŽÄòôüféqxFžµwÙ.Bò5lùdôd±–Ô"¡ièï ЗÂ#…ÙzôwßëNÉxªsèU0ÝÚfUô‡Õ*lˆMƦ(a?WÆL¬HåNl™º]”¬¸ÐË›.O×ZFl1ë¶*m8ÿ=Å|Z´Bªp4°;{Ò¢ÄàíeåLê7LN¹ "7ò°M@¿cÓ¹ù=Ÿkÿ¨ûËø;Ãu Ý—~ØOÁ±EÆžx›m”3õ“­Ù6Uеgj˜¨isîN¦R]LoWÛ{ÿÚdÒpÇÏ•¾è÷ÄK?øº¬¸Ó4rA¦ÞVPăø^WÛÞÚ¾‘üô¼áÿÔÌ~Áa¹g ƒIa¿yË/Õƒ¿²W°:ÿ…fqÚOßu€ªôÆ^ „±Š1XáïXaVzÎ&Ì›± ÷+’ï9¨ÐÄð㤠ÝVX ‘ùÜØÉŃÏ5ëÒª„S¼XöõR„npKm,+׋!“$V“§ ëqÌ#Œœ‹#üC{vÇlh·F°Zw-º®)ç |Æå·žñó\ž”ȃ;zþv7jìõE½è ï9ó”0[f«¬Û;×kq’¯¥•ÝòYÿlœ><üÅn8”uæd!˜ó/ÇÞäâ’ÛžoZ¹Z/²Áuº‹“Kÿ„ãІ-±fÿˆ^ED¥-×§×˦¢D‰´²ÄW_ˬªÜÅ]P6•«ÝxÚÞø÷ùë¯Vû¨–äþ¥ ó„×ïV'FêGgš‡¿„š‰xÎ]iNÛNhrDyêf¦YDÝ}óˆ's&D~u—é,uª-¢(õQ·}ÇÇÈ)tAÈ­5&Yk«æÜbÃνÅÉ?5Q@·êl¿<Å©ÇÂÃÏSø‰CÿÍV)¬pSñn_é!û¼åôÝèCd)Cš[Á¢'¿_ 6¬A¢×"Ê,/À§ˆ1¯/‡ÙºùíÀ´öe©’Ói«›¥ªS0=6Ž!-²=¼øúíº»uM^Å:êíÂOcÍ]¡o»ƒƒû¢VþåüÐÀ?l“¡y2‚LÚ/¾üÕ&ÿì©»µp•ÎKêñýÜYxI9æ: ì}37¥âãbëûKÈÜX9:p÷›“Oš„ÐhâöŽÛa,œ0ˆ7?..^1¦½“£’ofƒ‹²›¿íPþÕöµÞ¹6ëæèlûv1Oš´¨ÏlÓÖμO‚ØÍÏ´UÏû7ï_1ÿU82‰+ÄŽü|CÛYƧÓFK`ßvŠ_ŠŒȤ$ß6.ÿš\ñœâæYqÙKâµÿ$¢•Q-÷kÚ ×oošB¶–W‰ßA´œ=¿gAá­¹aƨ»Åœ¾Û#Ýês8ȼû¼Æ²ëÉ8ÝÖ î6£ÃZdôzuÒ 4[µ€Þé>^“©Ãâ{Z=Õb:×—1¥:‰sú¯V¹… ÚÂÉ®vã»Æ³"s*º¨¡ÿñúÃ.­ /Ö™ôgÃÅÔÀåP\hù·:˜)¼’V˜·Ãö×òk^¿Ôü6“‚÷Éù±úU:BÉëÃùIÈË1ÓÊŠ³¦sÑH#˜áP;5\κ€ÍÜü¯µÈÛÍ="Ʀæá5bQ¸îcç Å²Íæ?*‘Ф$fN{ÏSøÌoôŸ]Dá OAÏ‚.I·©‘ ŽGfšæ3ð1 , ¸6­ u‹I{»}œ1‚ÔïÐÎÈ8í_‚Áµ 6Ðz•~ÎéÕÊHkc†e뚿̫c ƒ/µËxŸòÖÄäpŽ$€ ?wT™íx¤¹Øx#Íc{öÇž¿4,—‚æb£ýt1.:~.b®x~¿áú?6,¶£§¯¿À R>jÈ!̱øÙñžHxîÀ㜑ðyý?šj5wÆÖï¿àÏr)ázܶÐnßM‹QõB$6Ö‚¤z j'D]üwKž”ÕDÛž>/Oíâñ…¿bb(Àó’ºËáBykN¡4:R¥<«XÌ‹ŠfN;h—Ó¾ºj‘YŒbk ”h­ÙˆT9¥m–-¡üï<§Q‡‡Á =l`Vð)L$Ô]' ­Ï`‰k†”W’ñ'UZýòš¤d ôëZ2×L7!âÌâþo­)gäöJ\S›í¶šŽI3F†1ŽN°Ñ()…Ș»h#÷wwï@”XBZ+§°„¸?È ƒHÉë@<ƒ•÷=¢¬ˆ;­0Â;QR»¢ç+ïX/îG‘˜ªdýT¯bX€øô”LH 8YâÖ4Æ1p¢¼®1ÒzPá!¡ÊoÓ¨ð(™Ž=X "´Í  UÛŠ="`®fÇÆ ®“‚ªÓmd=r‚ êÉ_štW·íĹu&&«ŽávB€—CU,xöDNDÛá>T% *8 ˜<›êçL6›é–F©Ln¡@SyúÌ Sæ²ýËN Ó3ÌÜÌ·œ™ykzx¹šT7 ôÅ–Þév},}\/¯f¤T7n«ö¶ä9UxkÐÛx4û~/0Y1Ѫ˜þ¤ âk÷îÉ0Åìkz7ðÌÚ¼ï?`ðÖ>²Ï€¡{ãV§ë‚éYX§·ÖIr¡H8ëì(ù6S_CQŠ ·á0›6Ú" Ü5™KÔ$ýU_‚Ea41Ôîn=Âê ùç+˜^/@¥çÒGÖÞ „ú8Ç‚çnœðÞ–›®“ á…q5÷°øwºÛÇFÔ¿•>R¨keñ‰~à“¨j²ÿ‰d,Ìÿ[7”å*¹±³üŸ”ÜfµþÓPÉ#„`ƒĈÚhpo·›þÈ 9gƒ»<ÚœGr‡Í6b˜%9„Ä•K/×2«mÿ³qÿ³Ð¶ïôî_ç9ŸÛ]SÒc.°D÷›ãÞ¹û\/>æ£Ì+ñoÿ“àø|ÉŸô¿ó1`qóF×ghü*Q‡«m†Ïk€ï‚lü´¿R/ãΞ>ó¢úx8Ú¹ýêήöI“µÍhþ¢‹<7jܲðˆØWå0Ò4ÒQ÷É]æáÛ=’Ç%ÊC;2öí\ñXP¦ìKM‡ ¿ë>zÑš·~?#óW.;Æb+|Lt&ð ˜ÿ¢K›ÚœzY2ÌÔ Vߨ= žvÙÄñ0i®—3XùXŸ¬4s•‰Qt1?Yï˜!±Á¯ˆ„EAHÆp}(R™ë`”‰E£þˆDd[qåiLÍœ¬M̬$ÍÊŸ@}„ësã¡,TbåÙA<<´âPßš gÈðÕ½td]úÌ“|’Q&¿Aó¿‹b¢{Þ6ú¤~z0 ‘°-‹ë¢Ôâ¸>æø+ØëòàãL­±rá;vé›ì×â[‘K¸ûº\ùú3¾jƒ²€w•аG¸G˜[ᨰ¢É1F[®©k@\)”2.85rÃPQ¥Š/FT² aä%hs)\”ª„ššAߌ*¥z7#塘ûC‹éè‘>5Ë\ð~îX.N•y[ªNVžéÖ‡ôi\FiuÄŽl”}ð@ID‹Äî•.Y$öÄuGBÂCYÀ;æÏ8_ñ@ÿH#ÓWžs‰m¥Öá(“䨡}5cÕÙµ‘¯˜é`–Øì"ꟚØï&9¤\dx¼+è±)I.$hfBHªœÙïÞoÆ©H°/0ƒˆð`¯,7ê$Î@É|;g{ù9Êj§Q޲ˆæaº ¨¶cVl@Mæf°-õ» V¶YýUR­€íM“àœûƒ’¼QYçXuÒ`Õ(±0Ô`£Ö"hÒq°ÿgrò|®I\ÿ±»»?¾&à~¨Ó¬S‡~Ÿ™q†ç:ýª3ŒÄcÜz MžS»¹zZº¹g¯ÛÅÔÂØ£Ö·ô tÅ¢~þõ'4s°¿¦ƒW#–ó•¦åX=£Æ•õñ¼Eþñå0¸³´ õûtZZXìpË7çîcj¦=6=»+k]byc¯:ÙzY_G7|þø²YÍÎÖçÅð”Õ˜ oL?Ï—!Ø["o“:i£1 ù2HOQþ€¡;žÒæ>£Jõâàó6}C:®ÿ Õ4éò¡<¬0ã9¯ÿDfJãµÌúëÌ“YòRÈZv,‘0•rl9hfãi º~—jÊÐQ„òH$Ej]èd¾Ý"àúÏs ôÑ…{ÕšÃG ]’#œ ñqCåQ€üà•0à 2§ž=#Ðwˆp.h{›+‚4 <Ò¦8 TšGÖœÚ«ÎæªóÑÈ.ûÔ@À$ã(³–1øŒ\#hߨeL# ~!Å)tføH܈ÉEŒMÚr.Ç'b"€¨kyu#@Djh`ãøÝûÀÁ#hºÙ0oȦ Å1Ô™ç¥Rk4ÝÒÑIZ “¼’5e,8ÇL% M90¢6@"ÌXd¼%¥˜Éáù‚™AŠžWGRu7ýÒŒøqt1 šV»s¶")ÝI:ÄEÕ4¿e¤ „Šrƒ·=3sˆ±çDÉPø·™sÜ XšÀHµ¸ÀS¿GJàˆž(Jmꢳ¥Þ fšhß[æàˆ$IZ{Tç¡sGÁì«Ú"G=ôÅDÇ;Yݰ]TVÿß‘ôþ©~0@RL¼öë4õ@~}ÍÉ· Ùz­äb3ªú´ŠI±4rz¼»^ïG!^t¬†*){×ÝŒØ5Ú¹}¯/d?CdÁ‰ì)ZM€X!²ªÀéq6§µH”‡WMОH@’ô`|+ÂTÅZoÙíßE•þM*Sˆ¤a¼eŒ§ÿo•ïa8“b8UEU¢(ŠþÍupETªì憀t¨”+7ÕÌóìÔûÜ-äê±Ú-L˜0ûûfšñ¿4b•#Ð)§@ˆÉ't¨~~AC=âÑW“nAÉÆÅ#2,k£¨L®Ã¶R ,ò…Wc¥¯PpÈ)šÔÂæ‡[N~ÁqåÜ9¨†mátÂfÕx›vY/Tˆì ™ˆúÒîj-CYzªMB>-CLýœ.»:ZXh¼–g²z`ÕC.âíšõGÔÇ'/oŸ¢±“/Ôv]ÊÊÉcƱ_4æ.ýelCYêë¿Û)Wø—(ßÃA‹y Ûõoª«ÕR”+{¥p¢ d–¤F‘æ ÂŒTžV ‹b8ê$kkÈÐ à‚#Š/–¾$ÙÓ=`GkíŽÉQ¾Xž5ÙÕÕ8jÒ#º©À΂2±OÏÎEyåìêo ²Ƥ±Ç—|¾œ}'mN?ÿpq¸×4 ^U‰$ÖÄ|öè‚ü'Ô5 ë4ÌŒ¼òµ×Ü8Sü“2‡†‚ñ¬Å! ‘”‡ˆ¼§¿Zå¬}.ð®€Rò1N‡Êí@äÔ ¸(éÀ38ÃÈ”±/Á8¤Š=þO’œa0äÀG²ÖÁçÍ™òy¶0Ue+c ÖRŸåÅs-å(„k©EtQ »™[Ýîò@{+ë³Ì¿ Fq‰°Ó|pT4wþþW̰ÃÂðÇÔÃÒBú™iùç 9—Ÿ<\ݯ¨i:û”2ãØûs‹«‡#Ù^sñàXÁµòj¹?ÔJýäÉuÉæå­û`i“×›Ÿôðsÿœ1×^‚ªe-ï6§yñ}_·ólûÆ^„VŒ«¼cÊR.3&¢ºû½ðÅv¦Z\Ôìx{d±+èÓwÕ7Gñ"XŸ Ö5íß³á/ƒ÷ø~üpç"56Ë‚‚-)&œ÷vÜæ*üáP1ù¢Åסe Ü%ÊZ¼¿Šªß‹Ñ$£Üº'Ǿ uIRÍÌÂþ$…™j= RcÞÔÙƒ‘ƒéAü¡NÔÍÂÀÒ/+ÜŒyÃ×þ–œ'ˆêØÿˆ/ûD ʨ‹Â}¬xk "Å™ì<ïŠÔF #Ÿˆ?­õªÆæšS6 EZ(5’D¬SÕ>Ôš^Û*­üÙ:£MÊÍ0ïŒ ] ÁÑ5ÞÅÀñþß¼yƒÖ™Ó[ÛÒ¨¸p=,½¿Ó ðÓ:äs©§K<ö:«$B¨*±/þZ’ÂkíÚ¸ KìOÿZ¸rÄ\=T×P¸ò°´ÚêKÐ/Ýí]½NƒQv¸²°LÿFnxWÇ}§hÏaÔ0+–ÖG`Sð *¡"Iü†ªºÂ<5•äX67r_Nœ!¥K=ùz t¢ç¸Û¥<¢ë#mÉå›yäEm h3|0ÎQ„QÉZ¸` ª™B_È_F¹‘WVŸQuG%ÿ^ƒèF\®\ ÇäŠÑÊÓmÝ=õÓ˸–!¤Ðn(Ÿ-²Ÿ-³¨DÕ3Sam“çÒŠm•VØ*uÑ¢ÅÏÚç'„´[j£§%±òONæ(9"GÁkl°¦š74=RŽõmÖm’·#»Ü+·¯±dwúØ5SýþåŠY@ñUSiš-}‰Ê¢ŽX®îņ¢¶ÐMʸ„ ó;†=äY0JD}œR)zqyA‹·iÚzNƒ †” C¹j ª ÊSï­>ÿ¬†?ÄB†­á%«RdË×Oy_>ô` ½9âdU ¹‚E[:cGv;váXºýp¡,íÒ9÷‚¾q¦îO·fÛ`m¹RÂû(¯–X’¬¸µ8,\Q-Fz˜(•§ˆŒ¶§d©TT]•éž9ca'•x¹¦ö=’wq:©lG+ÿ­G•Ò¢Z—Sª&5#8­5èD=òFÖ4ƒ†h@4|§2qƒƒ03Xdr@F+:»²5¢w$pÀ”5L·ãº©,•< Åíx[‹^s¡¦[ÜpTWF¿ D.3Úí¦ÀŒŠ£k9˜dÇÍspªÇÙ,ë6h?žy&ÙÊK_÷ª­·Žßäпt%¯ìsKúv $ÄT×­¯=È¡~7‡¾6‹lÅ…%É!xJšk+¬h õ®dÖ‹®¦nöU=Õèèysðà\ê{²rÅkãçGÔÁßgu ;ÊVtEÕ⯶sˆ|Jör!ÌêêeŽ9{U2+Q\¿É¹« Û³M{×z? ‹ê§ÞÃ|;†ˆjÒð¸­Sn£#TMÔ’èa*ËAŸ@J4ƒH(>oÙÉž”r$WÙX›Ë5Þ¸Q 0MÔ\‘C22‚:s6®«ZöœP•šUÖLÓå§¥›SÍZÁÙŸ *Œ-(d­¦ŽKUr³É¡_U‰œ*™œ¾ôEo¬¶òVâÝt”»=8åКÒ$§Òp³¥N¾Üú8>Ó¦Â2º4æÿ½yÝ„þ/©â*–2³2ÿ÷(Ûÿ28Ëö´rÿsFG§™$ߌa¬pŠ'×Ü@:fnw÷Þ¡6)oC‚É "u®Ä’2[ D+«}H3Ù))a¶ÌúF¾´ÿ õ×ß¿½¹½©jB s¹Æ”ì¶ßï«ÏÛãc®A5Ñ8‰÷õû69Úa^dý}x@6îåv´Ý{{!gDß×s„Å÷¦.\ôeRìß¼ðãr¼1“¹XõeQì—R÷Ç«çê;nxySÊtaËÅ·\\æ!ýt -«*ßK†_•^tþô޽1ž7•3áÂoV­³cDОl,Ï%®Î€æÎ›ž/¡ÜýbÌÔ¥f¹(ßö/ОAÉ`ÖK„÷0àȦû“$ û’iË«R™„s¢¡»ÕádïO•• 5ÄØ»N™iú­‡f¢f?i2wÞÕ´­Û]G¹Ú»3¹òRÉÏŠËË›?ëÀ‰ÀrX½¡äÕ›ŸœMoŸÔ"åíÎRüøV\DëÚ»¨” ç6Œ¢„ú ›\+wé¸jªrVoÔdØ1‹kÀ\E1=n³†íß@D/¯“Ïû—À«-r\RtÔ)ý8É€uV?åñ>ŠóW“¨|Cr$„·¥¢žî iSÍ|€KÕN~Bw>`ÂiiÁ[:~ÆÆ¥ l8C³Ϸ>"[3h;}¾½®N}ªCõ´\¡ÇzF=#¬m½ãž6Þg·cèÖ{RÈq¼c Ž’!&&wÍ('abL ÿáûÒ˜âÛ˜l+½Ñ%ãÅCýÔè,#Æ•CšŽ@hb ) ž9"?Mô.q? {ï˜2!Acì éÍlkFƹó‡=,ÐFö°9ãŒP~£inƘï$§LòRsÈX[áEW{¦AD0ØÈòÏ1€»oö¶jíŒ:ýiË+ ÔPjò9¨Î¢Tû-ó›H…³!g#'SÖ4Ë£‰5×O&ÁYìAÀà£<$%8%¡I ’2N–¤Ç0lÛÁ¶âÔ»+ fB¸åÂFýSSÁ1üH6ày˜†¸Y+osÕ|ÖØˆœà9º€‘/”ÿ·ÞqÀðÄ!ûøöHœzŸzÕ®-'ÚuMÞ†Êæ:–¥=ÇÚÎËiaMÙª!i˜,É¥‹¸ÇY«O‰“Ð-Á¤ {ô=å¬îPÑœ8p»Kƒí&#UÂãzÊ$δoiÙ{Y˯Œ'JXz*·2ü´ƒ¼`-2OÈ:¡_F úF’-¹¥ÈŠh1Pçç X«J©Ï× œ‰[ßr)êÂÙ³JxdóqEº{ü}/³°mKÅÔ–­[™q †rjnyÌM‘Ì+Ï‚¸äW-â_`ŠíL12Bƒîíò²¯[ýÐ}Ö’@(ܹ;¡0*ú¨KÊï¢hQɷȨ%6Žå±Ç?d+3$•g[z«Š[”Wöö³K5ÃzU_Ïçû‚¶ruïðx9?Ô…0ä‰Q$py‡ÿH[³¢óqñi†¹Ãkçb­î*ÚY_‹Á¾©nÆá÷ s€§L–ÀNã!ìÔÓÑØmdÕ£s—oFóÜîœßñX³FaoViðDb½/|Úb¨{oG_LWšãá¡þ¶`¬¾„ÚÃÃhÕç>* R‰½\†&©jèê!yu»y“ógðƒ‰å×Kˆóªx `ì“Õ€F ±9!]žz$Æœr˜¬àŒdKPZܬÄ@IùA`V°I6V\E©d¨w͸8HŠQAÌ4Kéÿ,w•Q=/“V …ï/HœpP¶~™šhGcEæ(<ì•r¬F¬Èlß§´¥_é&”˜kÂ&âdª8k9ÙÈcÐ"†û¨¡o¡Ô‹\*„`§MÒœ@ Öqtò¶$ëÌÏ&Ô™ót©‚Ùò²Ñ *HÎhÃ03/” c³ˆïJ3š1u$(ŠAàù^@F Ý‹`¬B’–ôˆòÆêغñƒl”±@ÅÛ–O,J:Õ¢qÍ#:iÆ:MÈÃ?@äc¸ÝÍÅ”E¢2¶Ùca%^pBº]LI@,°Y&3ä/©3—8zñ*=Îa«“o»v`P)A÷Ø0KûD_‡y?Ð Ìw,yRÕ9ýlEËE Ã5ÞË÷‚ƒðžP‡?° Ü=úé ìªÛ\¬5{¸ÌNS½c¥ÄÍÉÒ­fõçzÄ™ß,XÍ ÂTïPý‘ßµúÞ¬1 ðô-JÎM&õf#6äŽ~)›µ¡­B«KÝÿ\=ô=ô™õ^_©MÒÑ\BŸ„ oð(´h?¢Þh‘7rô´ïù¶þEÓÿÉfÕ÷ÔÏÒóôþ¥~¼éb½µT%C êÔÛLã:wG ÉhqtrBãRZÌÕõ»§¿Aåm8w‡…5»x4VaT„µˆC²ŸßìDÊ;Ÿë÷6 °*ضSƒjÅC«[8–E†ú,Y¤Ä/µ‚æ4•zóÈí­ÜA9Š‘Òý–ÞÇ®ýn©XPQÉ®@XM4{ ò{~È®X´þ±´îÞ‘D%n€à—&f̪›9¾± ®$I>A#TC”üìißíoü =¢ÆÎªá¤·‰h»õ@öÆã(©‹ùfm‘4Öv<¬œÀµ­9Í:ûÚV°,oáT³L]åÓ±r0yfDNú׫HÇ[hqNa4®7Êyàxöáz¨‡8^áÎ7Ovå,¡ð'(Ùîý‰“J‚E·ÓJfƒóO^¾¬ÞâÆâµsGçëÖ¼^È vÞGÇ6Áúþ»‘R!(8g×G÷ê_[áÍ“Á®*¤áQ\‰›C,(as™ ¿cÄèýÇ ¸„aëÊÆMŠèðŒ+Ë•!™ÍöW ¿ågÅÇÚ_ï®çn¾EÉ6V²ëÙû´sÎçnƧ܊¥Äúÿãû}O!™¢CÐ8)xøôç xçQ´ǶR‡«Ò8q\Á;Öäû”7çiÎ3SbîªëWÊâêQI©NM©P£åòz™á½Þ¸­‰Ýgê 0ŽpÂè uç…hSÀ<Ú\—ƒyÎxuÄšæ‘V*¿ pÁü½|ä£tl-ÝÀötH<¾Êªlþ ôjùÛܪ•³’³ÈýM®=s¾¤˜Ýð¦æj.9 4`Zí&0Xµ@5:ñ<ýëë8ªX?ÅQ+BÿŽKO´vedྼ¡°°åaV"_X;Eû—¦Ì ŒS°:RÉÕ’(Iy›Žïôä>½‡+«‹ï«ôñäoqÆÍD“+A*­Á¡Oxᬱ„–+úÿÝ™BO½3Øi΢|ïj#ˉJœ˜I2‰ H…™ƒf0\|’ 5SU7÷ÆÂvÇßç†(},¥VbÓ¯"‹Ð #ˈ^“¿›%Á­moƒø?!Øaö!Ú·2’/žA/yÁmÅ£þca¼¼û•Ì 7SaiýÕ6HÒ+h¹Y.ÜL#&crkïLî`IÓ>BzòÃDïd$8ã^}¦FN¦…ŒøóÕ:(5‚Ä’¡†Ä ·§¦„k ýþ^A¡‘1ßô!L}Þð³úàÿKÓz¥VØ'ž¾U`e-€±àµ…”Ö Ó³`ü†|ßÙ¶˜²Åô‚a+ k¢“ÇÒ–÷OçYäDxÀÑÍPÕÊ[íßš±²<Üúžal»„À1‡Ú«1¡JÝ'Zµs64«ŠJZ¸¹æj†³¼µ>ôC8b¾ÅÍ’0äHÀÌÀ*‡pø 6¡²‚…ÀïÕ¦_ˆàbT-Ñuˆ—€¨zè®ÔI&3€ºK£Wƒ‹¸¤dtp}` *\™¬Ï.Τ)ØåfU^ãIùãã¬iK;ï’3¿n\Oé¡dq‰Þ©¶[“ªùw7Ûïjœ4¡cOIXHJî½îËdE¢°øiž¼)WCˆ¡nNùöÕm½ןÜ%–…^C‡âú2CÍl%·º°Ã€D‘˜†dø‡’è]'L#€9n@ÚÃ]‹ó P2ÈEÌÆK娎ƆàÄ{ £+°2QöíÈ6ÖL®3 Û:ê…H-vÌÞDH+,wàŽQwí­ßA ·]‡O»O}çĽ$bŠJO>qž}ÅE[¦¸lif±6à‰3]-HÂN;xHo’«]À±¶Òíû{xpí‹ ;×íϺ,ŠÛó÷¹upD»¤´ýìÜ+ûYÙ­5«&»²ÏñG¼¦RÍŽ¬æJoÃTΞ,º­{>Ӊͨæ¯?¡‘¦Ü lxÂbýɉ=½P›%ÑØÕ _Ñá;‡®$Y‰b&½ e5^cۿыٽ{ºÕ„³vôL9Ê@ÀŒa·φ‰=ÕE˜FG$&ï³:…„EÂD\Õ!¬3BÉrÄ}Cœ‰‰<ÙAª!R„j‡c6Ž5^EÙ µâ¸ÐèQÐçgzû[9™¨Xƒ˜”1’ÉÓ`[‡g3É”)_ŠIt3Г÷æiኢkòvŠ“Þ &‰IGrçd*ufÄ{¡VD˜˜d‡šÂ"2Ã’bn}fUTÒz)åT+ªÚJ¨‚¢ËW=üé´ŽB0 -ªÄÇJ"_;ˆœ‘I˪*G–ô¨Cn[“£IB÷¶EÝ?Þ„¤›,x*ì¡@LÀ I`àÁˆEžbnÓ´#¯’›ô#uÞŠc\ê#Cà "b©Q玕dˆÚBI.äÈœ,²€ö `p¢ñÐDp à© €cä •A"©gY B:n1«Ø×Oâ­­õÊvØÞê@©€¤Tœ“¿[°ú¾Ï8FЈ¯‰g}Ž4'³­,«[)x.Tí1ZÖ ñu>еÂú8‰"ù€i­"K3둆g7•cäÌ û̇·0!6€CÂ(I¹æ•|UÍf$µÛŒ=CpòÍÃå(@N'®‘ˆ²g(gt¿í¼þîuŠ“l%–ž2´øI*HÝ”ÃBÍwmh¶ƒ‘&†Û0‚%GkŠêTÜA˜N~°– Ç<½CFÁ:k8N¥œÝœHùQ8ý$ÕX°4L"† Ú ˆÂFuG,ÂðR‚A¡ÙäM\!#¸›¢KH!Ü‚UßžLÓfíÁú•³†À)ksm¹`ˆÝ»+ØŒ¥%ÒÜE_¨¹=‰)$㋈ç„K=#lÙ$^å2¼¶w4P""ä­‘Y™3¸ý¤{éÈFœœº—WÓg2 ÉBdíÀ´[¦ í³>ÖI@Œ"å!±lDfn84LÈ=åáÓ>‹1ÏüP6Ÿ$d'àT"LN§ƒ9¤ÌÅ]Žq³ý:G›E<_›Yuˆq“[мøÐ[ŸNÖU:±Wl{(ÜrΦ̬/çó€‡Fj·lÜ1‹X+¥ÙDêâ&X¾q¶zqøˆ?‰§Ç—Å9 'Æ›ŽŠ¥ËBÌQG¦ì›c_1äýZ¯úCcdHeiz\¶1ÃÁ Ïá-STÓ@R==¢#`ŸVªÁ8Þ(E5Ä(Ï YIQ[B’ƒU³!vìD­9‹ ¸36=¿gBró‚“ûkŒgy¾^ÿÃ#ùLÞ¹Ç!×Ä›‡pÔ>[ÛÈx_§‚©C—$JoU£hbÞ0­(’‡3ü¤ý; ¹eó»='ã©¿£÷ï>‚6¤ÊæК¾7”.ê º˜Ðgk¤™¥ÇSÕ¥1ð¯%(ÞTÁÁCYÓàÛ¿i±Ü­mXØÎ• °ý™ TMß`ýLI‰öP!e-Âv|R‰ýdoB"DjœÌ÷ñ#×Y£Ç§Eé3ÿä@ËÁ)—aÝ ü"€Õqkgð[ò`úªFÁf‘®Çfµ ¸ê(Ñ®?9Þ1}âšçÖúZ;Š;{0©Ýɼpö2¤ð+&iIÌ/">´.N.ÉÆ£sìysžê¾WÅi×AFUÜåß×"÷¤kÐñÃoi\;ý}Ò ~B±¥©Òq›m¾+_=‹œnî‰áÚöÁ@>Y#‹WÌ“;O£@~4@Gô4øŒ“à…X[ P‡ißW³Ifë²àþ=O%õÕ½G®]}´n/™ïué˜H ÷è^Geq\Îh;~©+9GÄ/‹NO ‰a¦\n° WýŸ)[ÙVÚ/Q­­EMÚ¸Q!qöôàǸ¨¥¨ó¦ }pbÌ(C¯ÀsÂÈ}M ÎçôORÙ˜6yŒ,ø5Í·„²”l–° s¡¬‹ÿŸûÝ14| ‹Ndtˆ·¸O5{aj††évwŠ‚ÄöÐlwQ¯‚’²!jIÙÉgФ­Ý¶m®(P?âH8-÷ ö6u’ia—Yu—äÇͪ®Od(þ°ÿT|¹'Ö‘œamˆ4œí \šÚŠ—k;¿ºÏçÉ¡¡e¿‚ ®m>úGUbçõF]hë°NoK švô¦QßóÉ_þ–àO³XÃ+‰ú<~ªšùëæn´öÃÉá¤íRÛºæúϺzT-¹þÊ÷”Ñ¥g–6ƒÓÌëX1æ·âzš½%îìj¾Ý ܤDB;÷\ïgsXÙ>K¨ÎEΙOó—w¥ Â9ãö«úèö̧¹Nhéql'ôð/`žíðüŒ‹öãô¦µ'­»±Õç nk¡žò»¯Æì‰¶©+Kø£ûùW'¼uT…k‚÷v½E­™Ú´°µ¦|Yô\í×ü0¾|„*{×^mcvÕûUo mª_õnéý}ïF4îÝ(š\Jmv IïH_ïÇê }ÞÍ`ûùÉ%N÷¯Õ±µM Â&þðß/ü¿0×ÿ™M²3þWYží¿%ÆØÿ— .öÿÛ—¦¶2ö$jÍdpˆ´%tŒXS i:I™¹—3S´ ›DL¢ÏtÓé?›ÍÈJ†tÝQÓuÉÔæ9ù é¤vßíýôåÝåZKÏ!*Êõ:}ùüé·\çg©åË“üOÑ'Õ'Ô°‹Œ¿ï¡kW$åÚXK\óI>–±ß‹ Wikn»«\ôI§Ú^¥OÙ'ϰm+6`5×<’ió9±#Eß; G½2 ¢ÓO6ªœNd•9možþxÛiþ›]`¯â¨\[fÅhâáAÖ¸}nI1FënvŒˆ¥ÿêš]YmÅ™qÒåþå>æÅ ¬Yƒu7¦Ð»,ïJÛQ ©e’ù™”2æÇÖŸBU¸º0ñ¯LRÓÞ˜ö¯Ù"puús'ëh”‘‡r¾ ”3¸ßÚ€½Dîƒékýn"?¢^†© _º¥UAMV1 ÂVY=«–2©" —¬@.¼.v9Âî®ËÆÄÕì=H%å,Ù¸vÜWÐûPêG˜‘ït´ƒÚ4³.–‹c,{~(nðfïx’+´vL™°Ëê³`ÎÂôLéùØÂ¨ÝhcsNÔü‹3ë.ó¦ZÓƒnds¢‰ø «[ÏìgÜA¶|ŒB Ÿ`а¹Z7’MÿMòkg}µÝ®¾^N˜VÑkPöòmHÉÌ·•óõm8Pí“Cß_€efd59ÀÑ)[)­ü “Þý±–Ælr ¤qŽØ̦ù+ûö­ålUת R¨¿Ä¥›ˆ¡yB¹»ï!­íX«»™ã_eßYÌÂÜ`òùãèÏ¥‹£5u“®¯ÞžÚµ?°¯_ÂÑVx5Ë6îÖ;¥Ûµç$BÛÚ*µ;_VCu Þ]\£ÈzœºíRWÁ0†3tªïÛ]¬œnfÞÝ®s“|˜Ê”ëRíú==UĪý˜ä}dñrÖÌÕìþ9)RTf¯âÒ<"‚‹ô†Y‡é,(eóM îpRÑ̪l¡ï,¦ü3 ÊÞ*(Âbƒ2uò¡(›NÉ*–;½¿¸×‹C ¤vNŽ!aIóøTø;-›;–.AFø÷‰ôkÇÚQv² ð«î~yØf˜Ÿ¥&(Rßt¬ª&Å]ú³4t$¬ì-Ðã3›À¨÷F¥×éEé<_­Ã¹±XGý™-§•Ï$F_^igkȉ[žþs­C2:œ$†æÎ ¢œßËÿLNÓzš¸æÝýôdßßü¯YâO™}ÝN‘¡;ÍF"¼˜°`\>`X³äˆI¢%²)úѨ~hñË÷Æ2žÐcøRyÐýÕá¦ö/†1™Ñ)—¯4‡®lKÌ@©´V}¸s\Gø ’cua Âý,ɦڽj[u›)ƒÃPiuæº4:‰mnª+ïtñ?ªŽ[Ë:¥„FK£,Ѓ‡…¹Út ]sM‰9qû>$·$G£#?¹%”sö¡®”éX®^¼›ímAP?¥©ð¸˜îi•b΋_Ȧ·”‘íw£%¬I‘u€c‘~²œ÷¯¤&ÐRJìX¸„ieË8¥å6©í©7 eÝš‡»¨Q M¨_jÜHÑ|A–>)ª¯Téè%—]öfŒDxü&ìÜäuZ¤ ‰X¥ê•öÆ@Y¡diBãÉ Z¿¼'ä/Ñ%€J 3£iR™z€Ÿˆh)?Êþ?‹ Eu³w¿vÑöA6€Ûqsù]d“ BhFhu>rg¸GÊ5ð Fn‡ó×/ò‰“HiFè"£ QèÉ “h ‘Ìg½:g{óTÉ í'g _*®ƒýMH؇x5“lñ’Â=ªʹ×ļe6LÏN¨t¥QNŸ¥¹2 ÖíÁ%Rù-°ògª‚} “á÷©n®hƒå–·¦[í‰~ °p³J A_Cî¤Jbì¥@ÄY)¸pbîP!^Â"͉JeË¢gÇ3:Ôù'vvV3Á¹›ð¥†!ä•àÁ ?S'ˆiþ‰D‚"G!a&|7¾­9àLäÅQ²cn]ŠŽZ´{:϶¥¢¸PMÉ1idq¹8’©T s³#ÈI1 qŽ=¾^Pm4´ A¸£§Ðé* ¯+?ÂQ2Äþ¯¬¥iiêrÒX-:úÌ-«À ϵõÅè€ìs/8UÒ ùLˆ±2u ‹ëˆ1?îä«DÄÍýÛÔ/™˜&K&†zýô²ŒíùÈéc,´ö 3|t2¿ZN¯Õq†j¹ÙÍÅ©cåY)$ÈuŒÏIÀwó‰„ÙHöºÏ>+ü˜Âßõ6i·mÙ"´æ ß0MQÔG«A[Í>>{Û³nY¦ÚŸDtªYÎíÀ7?™p|ÒU– ;Ú@æÂt“S‹£¯WÏÛ´8ÅŽº”ÇO,—úÌA„„ }¤Þ6r¤ájîÕ¨½X' ŠsRM§z÷f:Â"€˜|Ò79€]Žû‘À /¥ö2 w±‘äïÛ{…Mî§°½¸Ü†.4ºbȵ¼Ä¢P¶éôŽ_<¾°p*ê@\Ýæ„e©zòêΘ“A9N\3·pŒã oŠ®zZNnÎôäÕ—0?+Þ²¶óiPºt&ä$çvtwó¤† *4…ãÄÆ ó]j–h©.ÆøªÕ·[º¼x°yö *7-.¾N:úŒ š C ©‹~-ÊúâñóõBZÍ_æ+å:´<íF×fÆ®Ž½Ò¿»-Èg/ËC™¾9CkŒ‰-Rn\çºPú8k>- ]P:ï¶ù5«ãYÎ óÎh&O9(° ®­Jð;cJô³µþ´TÙ7‘*謂®?ÅÃýäQÁmn5+îj÷ù6TºÝ×òkê1M1ç“ØëŽÍ4ïlB ?W±TŸ¦Ï'ŸpÚ: ÉÕñô²>ëxÜ}D¾™Û_ØWìeì­äÕ¶•Áává„Ҡئ1aûÂírä¬Òߟ¦±M…ŽgäáèÍ覙¶·cjR´½Zά/þ\ŠÖs†²…¢2)´ÕäÓ^̈³ª68k ´È‡[J#žHfê“à¿YÆŸQ,:{Y?{#¯—Í$Ñm,¢iV6–‘PB]‹z󃢼º”g¦ÕäDw˜º"yI7)ÂNº BÃw¼ˆ?sÙVæñ¥~Ü€/s»3)ôwšxºž3!F* Vª“]ÿ'¢.¶úÚ+¢2Î­àš¬Xú¤…ó¼lUP«Ï­Ç§ùëÝ­j)ê Txþ>lb ƒ/?…1Ä|× 5i.Éà& 3 ëV…˜{ûM# &RS£<Òa>8œŒ“y~ûךæé(Ô £2®A*žS[|Ï]Xí#MÞľBG¤Ç]'E1"ÔCõþëæÌ5°¢0—®0©s𦤊¢Jƒ–cw—ftd“[{dÊXåtQ=ÍÕR“£bL›û§©=”àé¦dJÑÉÁÆw¶m¨a˜8ÏÈ•:ï|cqµ÷ËlÜ+à,J‡ ÅQT…<Ö匲_ù“(âb¨ÜÙÇáÐÜîÛÙ⽸ çv|qì;3`¬ÀмYVÀ!NR.0™*x”å‹TÑ€uÔS^åÍ9RmB0/õJוiYÏÑ-¯ÅúÈ5A¼gŽPM†7ýÔ¦P¹ÝÜ'u_nnõï¹êŽHkE ·à®‰ˆê0‰†êN1ÄFšàYmG¥p™ÎåXê©4]Áz*þ9 ¤lTõÌ‚§çê¥Î‹µI3Sö è4pn}_ÒBÀõÿÇØ;ÆêeM£Û¶mÛ¶mÛ¶mÛ¶mÛÞgÛ¶mžÛßûÝ·û&ÝÉí?OVFž3+™µjÖ£jQs‘Ͼ)eüR §¨†D¡‰M¶´ÛÆÜä ®3‹á> +)ƒV*fi·Ÿ÷g€ëV8 y©:pÓZ˜¿¢w·—wµÓ¹®ÔZv»Â„¸Øö¤à!ú‘˧Ð,!Å̽õZˆR¡µƒ¹]hûbêâ†Ó·(ÂVüåv±ÈAµ o¥¨˜wá¢Lhû²£·!YLºy1êwŠ’7ßöÌY”z¹sÙ°³©9º¼ÜlžjšÐ^”˜­ý1—÷9+CÁW|i4MЧ'åm,PÞФ`*M²—蘲G•ÅÝn¾ñ`ˆo²^w—0.ûÒZê»\äfñ“Ç`AuaÌÔ7MJ63Ÿo@aïÂu,Ÿá¸Ã§ÈÆ×¯Š>%âÁ69­iÙ ]¯ Ÿ&ËÁÄE¬°ãÈ¡„T«î4êXÑòH)à÷Ì/tËÚ6ËÞcV÷³L¨G°æG\”WR4gî &l;}t\8\8H&Þ†À"díWrWƒÂÍ1e¾™¢¯^‡`®(·må~I6—Ï9¨w·qŸúÃe了ðÕüÃ…%–iEDmΠX¾Éb@vÈ7ä˜ÐIéXÝ”@‰ŒËzk)‡‚ÈC¨•a­ü…•éUË“=[DôW!Š17kÉEˆ!R6Õ {<äÐŽ•xAИ_˜0 øGiOvì…¶[{ÙÔv¾l,wdŒQñÒ¡NEÉ~½h>s “jàLøãÚGe+âyôÛ×G@¥ØÎüI‹õ¶+)ûsJVíFàöã™9Ž– Ghø¹ÄNÒKqÒ –ËZV/† Ú”1öãÚ%˜HårªÙÎM†kK]º3ÄO…xvà9¥”"ËÕFþ15Σª4…£i54I‚!7ðÙùÀ)§cûƒÓŒÁ‰þa¿á™X"tŸA?‰"€êöa$ QRn¹‹_ÚysñŒÓŠçƱß4ò;Wâ;WÐÍÒZÑäJ¸F<쪱]ÌÓÃÈR*Ÿ{›$oßÁ×ÂKꂸô™s”„REÈ1©gtÜ ²2{é6€BßD»åõ亄ðÑ•ÿØÇõ…UNJdز˜Âñ¯Ÿ!0Ž#-eªæÏ`üaƒB‘vTµÇ|¤B­ÂŒr€h¤«<i—ZÆì?¾…–Ñ,F¤·¼1½uñàq{ˆ.ºЯNÝX. /çpâ¡ö|xèò¶üZ!NÑIAV?órv0¼Ç´c¢œ¶o´|wŠ›j¤èd¨í÷«¦‘e™_`±ÆÔëHÞfëÿ^ê^H?osEå’!.¨BzŠšÌ÷úêP':ìd8ðž$´8EÌÝWßdO¾"Ôè‹ðOãK]ýñ^ò2诅æ")\µ™y0ÿ€,ë’aY}í6)bŒ5?Ò9ÿ¼yAŽ!SMìâ0åÜ~YAfT!ëov‰Ö™º[R ÿ[LȸF‰”̤â DÙzÒÑþè©‘3¡„…ÂnåÄòÚy›V‹‡x<ÍI›Þ¿5-è~ZÔ8`šUž`j,(ï[cê®îÄb¤c’DfhÒ¿v@ ×2œ+'ƒóJÆÂû:ºÃùÙOêh¯i‚Œ½>dgeõU.õØß#]ݱÁ«©.5¬°ÎŠTô@~üNÕ[™|Ý·ÁdwPï7‹rýïìù8ñÿ°gv¦UÿCtÇ·òÿ*Á #ûHZ éÄ%€& #rs¾&A z †ªšÒb$Àª×eFÆU3Â6>“\'×cô¦ýõš<·Ê¯ï¦/ªËL!ïÇʨBa³Ôòo?þ\ÔÏñÌ?ƒ–\¼‡ÿüþ΂cÏ¡¿µ¦žÎ“Sc-f ûX¡ú;Ä‚j;Óš®e½…O±³«QÏv çûH•gÕÙ̜ڇO¥ƒ5Zð`áËP *&Éhé—5O%J:±qÍM_{O7nxÖŠ¡2u ŠÛŽˆ!tâåsŠÓæóÂ’%uRdºÿ©Öb{d~š\ó'ÑglFlj©Zؘgß òü6y‚JVä瀊KTÓ’<%?¼ÅýΡYň)ÜœéØ¤A®’‹±Z‹J®dQâÓ'åÀŠ7|耒& ~ÔÊÌIVÍ+·õOah¥*šƒ. Vm‹•@dø8¸)íh’°¶}ÜŠÞÉ‘¤ÃA³«FÄŽ^Èêжµ–Wí~ª埫“1«t“ fOYCÁu$ˆ=Œ° ñ„* YùäúÐÔÅËwÀ“vB†ÿ¨ïïÉÊ-6]á~áhúÂ߸)`7.ã>åN,éïqM™AŸ­<[BãÌ—’U#Ô-¿Ûx+ûÕ]ñO#óN&]Å€EEû¨sUH1>Ð0Û3 [Ë8¢[®/% ù«m…—EG<šÉ7IB3ëQ4Í ö:?Y:xŸ@FAüvî¨ã̲óN“)§Ëü0ÞôážùŽf‰“™¡ô`ßÄÑæQïß¼÷*gûÊÜ¡ç"VW°>ÛJĺŠf >ÞDü×µþŸr[~æÝZDçlwôGv2¬ÂÀ½ÍB0pµÓIÖ˜àH’ aRuu2,{ú{6”2%N²'çë'—;5Ë®=A>è-Â.¢ØaЏ2hgÆ>ê°ÈIësË¿7f×+Rº$‚AÄÄíÏX»DRÒ6ËP³E*A»ƒS¾¯ ­Ü*ÝÈ [Ýb›£vá€ÛШ ­Ê\ÅO„÷7¥Dz`ã8 D ªû#AÂ3©†A"ånºŸ gu4á³|Ôá[“ iÕ©Ï&tý‚×5ÔÕý˜í‚Pÿ¬ŠÃ3ÎðkìˆøPz_È#øgÐßx?ò%še–4uïm»g¤ƒ˜–ÍÒûÏžw‚*@wˆÕ2â=¦FôŒÍÁ‹ÓP: |´¥aPzY}Nvk§G#Žñ¥cúàÊ! F»pÿÓ5‘PšFZ?HA\àà(×r-|y~¬ä¾±‹øå"–”eQ5üuw]ß·kv²:¼U:¿=hÔG%w¬â«ä´ùêJ Á)£[5FcÀuTŠ9à!¢ïhc€ 5ÆôŽÄJ (KÄ<œxÜ¢Un÷Îå8þHÙP»~çâ3ˆWëRÀŸ¬DÆm@uŸ%y&®‡ÿ䯭StF³Â¸¤CAÒ¦h¿„ C§Ùn_œc4i­ü±‚øûŽ´tƒöøà?ÃÇX8þYåü{œÿÕÀÞèÿµÛÓ3ž0ˆˆ.ƒ1“Á5"æ~È}sDïdsœ ŠÌ%½IˆÚ ³k†Ú$h¥!©¬PÀR¹©Úªš“µè¢Vý™‡O|$ì¯?ëû³mc"Ù%„6ó’ë<Ç9ç¬wÛ»­<]ž 5ÆýVîî}û²­ŒˆyÔÏ×[½šÍ[N_!aK÷v_Iú^›Ë¤²Õ ×iõd'ÿ§aÞC½ëJRC5Ëý?Ê-µ»‡»gõ‡qšä@NÃ{W{fÍ gº‚œm€a«NXÇeEĺŸqù”2ÚŸHp9ÒÉõÕ0óâŒêë_öˆô}pþ”™d”_Nèÿ‚ù›jYA.L:'/­Lã£a¯H]:9Ò2/x9øÙìPÏT8ûÛÁÈéôêëŒ×ÔÖT“ÆöDò%Ç-eëVôÑø–®Î´ö%à ìï”e¥Ò´&ÿHn¾§dÊæèÄSòb.“b›±“‘ªÆìÇ_\y®Xùu{­0wOÕ>­s¢!oQ¸= Ñ?¦1f¢±€ ¢ÁyÇ@Û1‹î'œ«‚ƒÉ²tÂo,x!l¶ÛU·®5sp‚D0›¶¿>ºGg2½aö‘.;±G*'Ïm@ZGeñ†/¸"Ð!ôÑŸ¾x²Î6‚ÄTã ‰Ïäøöt9¸ Ð:þ»I<α/¶Wx?r&æ37ã4Ÿ¡ ôáäí¤áåäaüȰµÕ²Êå†ÒnÕ­£Õ½ÕF7šä‘Xã¯kwRä Õ>Ó“˜AŠ&Œ3µf1ƒÕ– ßêcMþÃm›î--r„YÕXšZª5[HaU‘¸…]ßÖaJwìº3wÕs›â‚ÊI‡Ù¿° C4pí¤ütQhg¢ŽÇ¬ƒW/EäW2­û¨&Ù·HHyµ¼ÊäùñØb e´ç’dOרt.6ä"WMD$Ä5&|вôÐÁ²›wÛ·vq'ŽyŠ ª8â‡2¦Šøb¯?¦m(šÿÑPÝ ŠÁ ´"áåRSí=2 ï*±5qz>Ô„+n°ÖÑd6Þ\+sõÇkU“q¬Ùwò)Í×·ga¥–¤'5rê÷cžxÅ‘¬C á¹ç3P¤¶˜XЩɪ­,’gN-FãLKìXú›¤¢–+”>h†Ï«'ùR°AY|²yÚzÛ“ž~¦ä‚Ýòy¼„É]šAànÜÀ7jvøs HÀaQûA-µqä¹øÂ…§î5„Xƒñ71˜û ´Ál†™°ÙW€éþì©5ÏBÌȸ/¥³ ñ1 ñ12í9òa7R¹–׆½•Á‡i$¤„D”Én&ÀH1˜û…Z‡4 7pšéáôz†Ý¡¢LëvÑ/2 è(%WF¤v7KóôÜöy:ÃÒ/ˆ#ý#¦”k•±$&!£º°ÝÄ©áe^fRÒMÅÎÚ½’Ö–óÖ)Û"ƒS†¡>±vh•8µ˜¨Bƒ"xÜêÜ éEÏòú¦T¼q\$ת9œbä]lM‚C¢¦’\l¤Ÿp0AsIýìOƒ Ƽ2© ¬3þ‚›ÈFÖPa1.–{mšÙÕŸÐL†m°B»‰ÿŽZŠ­¯Òf>Øbq)Å!È\$•ÜD¬VCÆRKH·ýó¸"ÂôÛ“zìh1¸Ñ ‘ M0&ìóá$Áˆ“`Âf'˜f˜ÆÝù 8¤K¦Ü1øËEˆƒ·)L†v'ZEÃâ5 ¨?ã|&‚±(ó9ô¥1dðÒsèä,6J—§(º”°Š”¨djIè†ZvP§}Iά|ð?´¢ä ïQ)ª²( ð-ùc<:¼±³'bÙÃ4ô×´jhãÍ5År¯Œüqo ¬é +%dt¿Tá gW¼¹fDÒ*•¼’vyRìÙüµ¸&9¬8.m@~b<¸ÒH.‹"¾Ïï3N4Zâ¿îßœÖ#{;‚äiNY95õÍeIùgaV¦æ‰©©Ð qÔ` ĺè#%‹DsÖ ¢ ©š£š§ai pql™:‚x^·nÙ}1?%SÿÞv\³,É“=A¹êgˆÕ³›§âå‹ÝV=‹Ÿ+’šX«¯MðØ7_ ~bMij—Y&8GjËpr!ÄÕÆq¯™iñI6oŽ„÷ß«;\•£‰DV0{{ÄUÄÀ3øäÊ„_…@·Yü°žË±Êïƒ:³ˆÊµOó²îg™’ÌÓżm6f·$–KDÖoO•ÿ6;hBe€ÍL%ÔÒ¤ÖÞ¦µKÝHM(Ân=ýLÉç^§úG*&‡b_†A0–ö©ß%DTס=ðÅX,¥ÐÒ|œµÀºQ“{òG~ÞÈ=äÓGÿ% FY©t$/á VfÁõßøë{:É^ß;ôô÷%ŸTŸÄ=BY¤ø³ä³åSeÑÉSsZó"|Ôyñ°­V¼Þöý_~hsÊ9k‹Y ~&zË»î}Ê\äOª¥a60¿*ÝÒ}º>µÿb¾Yžiž¹^ˆE@¸|Ò™~Y*Iä,êš =;U­¿téè¡ ¸‚”ŒïXCgûU÷@ãèâ‚øÛÍ9%îã{!/iH¤­¬hÙæÒqò±œ«¸Ó0f’šµyßy,— 1{)±î¢gjc2§-s¿U #òC*˜µø`\a±Å¿$˜òù¥¹ÂL\«]1±j‚`Ò½Er#k8“õ›k~äV8’Qie[^{Öä~¿ü phgP‡ô¨ÿVHAgq® ïõÐõ]ûÓ1Ž›ÎhÍdîEsz†‡DÃÈüôNQs¾ÿøè§DÎtx³±¦Y÷øNBO{Î+Z\‡è­^6½ªØÍRûp6Ì÷óm)PWNÿX¯D΂éXñ²ÿùieäXèÊ7fV;7[¶§¢tbžaÏÈê(M“¿’žêïç\]öµC¼,G¡[Nºär÷¼<lùˆ~"WRv’êr_Í9·6¯ß?‰þímî æ;f-²Ðµ³­×ÿX2®no±õÕõ2Y¨·Í%ÿ Þc‚ ³ÃÔ]ê_àJˆë¾ñÅ•ÜCïZkÂTµš¬- úyÜù€`†óg’n'õöQ³›ÌÙ}Mz Ç<®ÍImév’ˆ@æ›OÅÙõ£½çÍ ÛÔÚ&/Ù(IYéSY÷¦egèPQâžËe9Jè¤{¢ÍâXN’È——À¼Ðªq …Å|(M¶Eú›ˆpÌ—NâñîWÜR+ñÎàĆÅ“ÛÅ—W;3U)ßå Â -uJ»Â:ó*ƒ:#3óJ…$èÒÃÒ‹òÍ$ÐÒ­#„Ð!€J<‘YþÃbÿ—ѳÿs© ÿÎç9þ+>¿£}¥¬=ŽÚî!9„7’Žà¥&˜ØÑí~ÍQ9È7(sH°ÑÑÉðÀQ(k´bi¼TÂ\ižô§dé•ÿ<\î«pI®ÿøîjã¬W¼+‰¡õ©ðh°­îõ67~ï#·yúL´Z. íoñ¯ï»ÇûÓÁ\´ÏÒ_{˜útÉFG†šðÕwÿû•›"ño.Z6ª•a+N›]º±ÓOg'¨xËìN•o]!É…²C쇜õÕ—{# g>ž¼,Èø1±€ñÖyh/Õ=Æ;Ç ws'#è " G† @^zHÖûòÐÚÊ™k9`i -ùœ væà¶Ó*èg?¸çfN;Z G`5˜‘(¥£º3THc# 3²šº@¿±e¶Ö–ÕöuçÊ@¿By飼|ïå}<&&ðWœ™)H™¼|$¥¾æ²å<®ðÚ†Ž˜çþ…µ¯u˜´“Wês.Š”Oç%‹Ãøûh«N6ÜmRiü{ ‰Ô!Š\xøæ:MÚ©ˆU#ü,"gÓ@yÀ(*ûíÄ$*ÙÀG ³fÊ7¼Û·ðèûü^kÃTêü+1+ì6 Í6cí… 8}‘ê|èAøA\Ô ¼#’ÐýŸ´Š'ž+Åtqï6JezXƒ«—7•9²¿“2,67¿c"?G¾¬Ìع3 |lÁfXÔ¨³› ‡Ú—ÌM.»ÆÛO–/K ùäÙ‚ƒ·møºâÐr©ó¯B®¬?­ú0mÒkš`»§~ïšßÚ[f¹Èý…»]•ŠÖU(ù3 éŠ÷¢>Já©ÇO¤¾}¶è”ް]e¤—­ÓCŽ-‘‹qN¤@‡#º‘„êPÕÄÞˆAõÛ«y!©&.þz±Ö¸›!Àk‘¢Q1I¿ïi@ëI^»È‹Š9zir6p`Ôï]üÙéë`‚UJàÎ:´&, ÀDtÀÁ,ézÞðmêu(RÍÏŸ+Ipž&#üüqÐâåêÕðËôù=Å:©2v•?t;ëGí/¯ÁF±cËEjEôy¿4|‘Èû’,VBF-? óÏ0@P!â±ÂÞV¬vh $ääc5÷r>XÎ<÷HIþØßp+Ù€9³›FÇÚ¿ØP)¨…Æb-tÊÀ@B ó•ÏÍM•=3ðAâü® \Äù“8\éN¾Qýš{€c¢>’X»àK"¹\§é»Hî/ëæ$×>Éjºt¿_Ðñaë·©‘€×>»¾îOc;²³òÐ ÌÜJ[n!ô^ G0Pç ˆ¦Œnýy½v¥Ÿ uŽÕ©½öÝPvx›Ï—5sûŒ ½æÉzÐÙ"6 %w¤x´`jtÊô¸F ã>‹Ç#d7 @—æ3Lø£…Y{—“N¶ß×–W]5æ+”ÏhÓ—( \ ŠT.h{½CWØ· "$g~—ûv d3HU’"µžQ2L¼’iÆýB3@!¤ß˜ÛÂÙ$¤Œ kuË¥ C,ŒÉ㆞™ø—ß"í*מ}ZN¡àˆõvüG­Jc‚„æ*V›©h8ãb‡‚ìÄ. ¤jÕÚÛµ‚Ð-ÏU«VÚj¸¬•«Ñ’Ö(ÔÜÕ¾Ó*ö \1*”‹(Œ õíLhdU¶»ó¶ÃNå€f[ Í&Û£v¬Œ¬ÿdtÅl1rƒ¦ø (àœPÇÛS8,ø±­ÕÎã+“óOAIäÜ僸Ýݳ =KZËÞ¦b€ÈÑÄ!ýÈœ/-Äkº2e!œIm5lÇ–J1xnœYîùV~@ÖJ…|xÑî¶ž‡GaO}Ôœ­‹ Ùˆ °¦L5P>äZ¿ tV~]èÉX]XzLö×2)Æ2Rô¸$>ëU¬¬˜2uÄ®ŒØÖ×íË+€™ðIÚ寗!I4 I²ÉíJÒ%‰ Òï÷ÿݼBTÓ*€ž'8 H«v‰zCsE Ûg mc¶Xn­_ßexÓ8)¤Á UbIu%r.ìI!ï–> q`â_c¢ãáœÈ­æ'÷b#ö œViW¤»y¥Åå¸@Œ•ÁƒÈMâƒÉ5±—€‰ìSm˜˜kîûvžâüÍ~ ôzuï«ÙhÂÏè›ß´Sm©Ð æ ÙG`€Œ;}Çýt¡9µhö¬œVÔs¹‹à£ñ耎5N ÿcÇ ¾T.µ¨¦¢Ÿº±í߰㬌¹‚ÔVñ38»Q£'‡š›GRäÌÅž k¢ôªß°©Êz Ôb…E¬à`(ìr'"[þ§ïè—¾¯¹ƒìïÈ¥€F±1Mj'Ó8pn‰ÔI (mÔc´E( pˆ`Ê©ùSãмqÖ)nÖ;äáÒJ8xv®Ë,—ÕaSĄĦpÝñAVÐ Üw"ñTàf¾y—©­Õ ©Ú0V#³‡xn¹`¢`Ž2þ\EŠ$Ì6ÌmÝG@'O1›§¨gA[øJÚ5r!Ë,{áwÐjî‘9gâq¶ÅyBŸ®T›ËDîÉP-“1=ç>$Y/œÚÞÑ:MÍø)6“« v Ϊô‘¯G˜{]J¡yéžK^ áY¢ek8Åå”?Ëe÷u²Í µ€;¥o2‡h‡Êkõ4&. ¢-ΙU°Z¦ÍŒ_¾ŠR±¦"ç3€`›’*s)%h5ëp„ðÌ*'Ìýî&äùb<‹Æxš¹œôýз<Ìík(©1MûTM EÖ»â +I+åuù/‰_¨? Úœ§†ªM¥ú$“w]¸šÎa ü_^†Ðø‘޳òÃûÙGÐàÆ‰ÇF@üZQs¼^ÝÁãDsöWœ‘µŠV¨I,XU@~àœÈ•—D£GôF¦ŠZöÕ¸_ÄÐLbó†}gÜK&ËËfC5Z›»ÅøTFž¹ÈÚç4³n̯×a#ðdȦ‹Ùms5{³³øšþÆÇúh2A‡¥%ö=‰:wu‚Ñw2lª'ä(3<σî¡’z佉ÑQér1ó¼ìšæ~ r»uªr„ŠŸ¾mÍ[Áþíð~ȶ…‚zJûxT¬=(ªQÒ2ÅyGß’¾¬O¤ÔQÆ]CÔx©Y!&ï®ßŒ9Ë!‹ekþå/4ÐŽœ¬¬hòUÕxú²Ò–Žý\ å*ØK÷ÌÌtå· Eö"ƒkšqOq¥*‡T1ï)Hr3,³ãnýU—C†ÑLy°é'¿na›çfJµçµÇaµ¹†Ù¹ÈFØ5Tn­ðÐÜñr„’5Òò¹4àÿÔ/¶WwcQ°*G}“–M“{G ¾i­¥m 90}Ž*_,Ž|z¿ÊżyÞÕIñÊéBp}ðèuè/­@ÿ½Áã•ãÜ<áR{ß²-8Õ0?¿þÉxéZÃoÛ‡´WŽšê1Ã..b˜M¾H,§]ËÖd$e)bœe,¸52ªoí4+c|ß9ÐáÐH_ƒÕ¼„ÀÃn‚ÃËÌÆ:eâí¿ÊÜX“¯Ï{Çê„ö"vSõ@oíDo,‹k° 䃶FõŒ*ÏÖ4ãŒ'ÓC`;œ=þt.3N³>)†[¿•cä¾Tü ¸ïæÞ[T–I[î”cK:™D¿£ºŒ~ùÄ LQýUi”AT§ÈÜ£Z×ÈFI%…6²‘ßF‡ªJC(- ƒH=qôäâNÎNëG„×NF.9焺¸?f³ß&S$äçj³èÅO¢ÏÚß ÝÈÝMo1Ê|zqåÀ¿'xàÒqyä,O¶ÑI ‡ Hæx쪽ýtD lœäg«ãEÐÕrЧðP¾ÉWXši±Ù´RÉZ?ÇÒŸ—ƒ…ÐXõ*ÿ½ð W$—ëˆø#¹6tI|{å0_KȺqá-ctM’µu$ÛûH¢ãÃÕÈí×ã«ä™ä׿ƒCç§Ù9ùí°ÿ%f)†þâá}T=¥KˆÒ`QºûŠrùÛ]ŒŒ³k¨¸ ÝSÈ'ÇeÏqþÕK®ÒÀ>yË4²Ö¬i¤ŒjäeýQ;iÃb T±ÿn=xiÅÆ/pÙé)y‡ÛâØ|p4µ4¥|Š¿Üç:7<—÷å{£ý×禳ö¯7?ÿû"üÖóuV©Ýl}o'×ß•ð“Óæ©æ)ÇËRQJ[ú뾸n49ñ«fvõáQm&îNˆ¸¼•ÉäÆ&œ@òƒðlËC'>–P°ƒì£êä¹W¹1{Yœrwjm{¨â§-Hµé¸âh}mã“HídòÔòiùEwö6ºTr{ÙË4û?©äjäý)Xeå:¿ºc°ÕG«ßI"¼±_söôü¸Þ÷kÉÔG%’éè"X¿NJéuøóê5<>ö_b£Xý\ý v¥ö691ºyídw±{}Ný}6¨©.¹Ý8îtëÅÒ²‡qi}½ßÚÇ·ª#³‚w¿ú!G÷ùàý{ö~O¹Ùg÷ò­üí{k¿y¢ùùÑæ‡À|Æ*Ž™™$ç,‡Às ö±sodei’Šåçö¿¾j‘Ö>H$.[3‹{9éÁe連sÏJË8ƒýG¨¶+ÌÞÞßcI}“¿ÑÕÇÇþMrø¿RÂÿybadü—èÀÈòï¢#ë#:ÜhiKc ¢¼¦‰¬…#µÖ…¥¾†Š¹»™Ù¯KY[S¶ÁÛF AD”†~i}.C‰U ü°ÿñÝÉÌݘ¹v}EŠE"Éäu>͹óùÇO¤xU˜ lÿù×`¡S Ne@Lc{°°kum}¥€­¿b†´Ã3«pkBçiÅpiçSɬæÞ+HvtõñUxú®ûN@wý¦e\"x}¯£tq1ué÷ºNï£Á⇈ª*Ù;æÄòEʆ\ý“®F)'ãŸh6|z»et5‘ÄJIA“È®æ8[‚OÛ<™±€2©Ú©+ 6ç2*(9uF}OßÂ.἞b(—S­òñ¹†˜Ë瘊ΥlÄžNö>®~…#W!ƒùIåD1¨!6\T{9•ô+Ô d†QÏzžH4ÙP,¢ø®î~:­¼ÉÒ@俯¿[¾Ëö¸ÙþÛýc¿{«–oÛ?>bc`{ñ“g“|« CRR‹2`>ì##m„|œ•ŽOŒalvþ(:íLéd•±xÆÚ¼Ä,4vÀõfmߦy¦’m´ŸV5iâó¦ƒg­îh‹lW[:8³®Œ"P;¤ª@Èöxv%ao8Õm„‰ÙŠeÖŸ×öB{f‰FpÖ$›²ʱ!§Fˆ¿ŸnÍ‚ú+ݞּ阌B'+ó×ËFƒöž¶·%ñ3¥(ÃO/›ZÎôˆ½èBÒ6@ Š©…!™^I´ØÏÏKYìÕ©Në|ž/¿&Kî'f«k‰·Í  XlS™jÙjæÀì–Âmdçg°øº_K6µÏ÷šÐ·5ý•qyEš§mƒ©÷ oÛºíÿ–ál=ùwœúôù?OŒ œÿ´Aà`býwœúŸÂÿqTËVY{ ± @ˆ‰€º£"’º0@qÛyª%Œc=9€›}¼…Nöfl‰ai,¬£1Ü$Ê©ûÈžþF\ž¹¿Þ[Ï5ÎåE(çÂ… ol±×û-oÇ÷uƒ×û¹ÔŽ`˜äïûß|?Æû“t°¢µÿ|?Cp4~=öE^„&ÔÇÁv4a÷žÐù ?F….…º]|oTäçH•—]Êhü×1ã%ôÅôC~íNQ·ÌZS¯eráh}Üœñç0N!À~Te| ÔñÝ~–¤Zæã¢Þ¬s _¤ÌÃYÁºáþ^é>N‰%Ëhrºª.‚eÐdGUª~'Æ%ù;gдYûƒðKä@¡ éÙwÃ~³Yš¿·B+–ÄúÇD^¬SKó¢3¥4ð‘wöŸuæáŸ¨ŸÿÐoäFyµ‚ö~˜¿‚DWj<{ ù–<×ûW‘êÜÎÆÐÓÙèwâÊÃXuzÈr´âŽ‹?˜ áJ¿š ØÑ#Ë«9ZÒdž¯¹žÐ[vÕÅ’ûJ³Løí?’’·PÈŸÛ«°g¥µÔ õÐ$ Ðêu>Ù«r܃Œ3 S~ZIR/È«ÅLJ)í+èäM­QŒ”0‡ßÆ{·LHU½ ãáÍ) [-ûÌðùŠë‚¾cn!„³úóͱ:±$D4HyÖ§†[$hƒ(‚•ä0é,ÅíФ9Æ}¼uü d{ê€äîSSï‹'MöŠi)ó*±¿pð~¿[ù­Põfô}éaôIÍGަ7=è«3„\¶;óxCg B÷ÑÆâæÅ„þ†`<©-kx+ÈH@|E;ɉâÑRµy§È<•ž:C÷­ï¨`!e®t†Àºïˆõþò²Ð Ü!õ­ôc dÔ‡¬D|‹)rT[œ€i §ÿ±u ]µz6Á%¸+žÆ„·(B„OÎt„Y5’9L‚¤Ù4¥áG3ÉcÈMDYÖ¶–i-´Â\·%$ïwû”í½ #¸Þ&âšTÉÔZOaãÞ^{»AÔ]° 5Òî…`‹<ì¤I¿JȺiZ8¹*q3M#¼øz‚p­¯ ì{¾Lâ¹c©È-aÊä;&×o:BÇ,ʱÈêzJb‚ì&˜*6æVTškW:lŠÓåæI­G¶±è-±síE14‹Ò4n´i”«Æpù„Æ pÀûg¹›Ý#P(͇¥UV £¼‘Ç#¯ÙL£~«(yêRGy)*o§ñ|gí«ôçê7ð©Û%‘¨ÈúºîK”z9²í¾³üÁÌ`=mȼh§9ª?o=€ôdª2ÄvíËSIwòÆQÓ¨ƒ¼ðbâ“—H…Àg¤È6-&u̽ÍN"¥µbvõK­E/gªLeM§‘wžh¹Ö—h);1híF8%Ùå$fve=P:*1ß!)5»Ý¸‰WµF/Ÿµ>ÝÎS4k½ªæÆú¥—UkÝá#°,)ˆýê ©‚4 Ìd2¥hLù)H-'·öd•N CÞÁðíc°O­aUv©x&¤6$½íuOÅtÌ1B-È1 ½ÑÇÐåÆÉbˆ‹ŽþLò *_SŸ£ý+[¾@Y&Ijk©®@«Œ8§¾Ô¢Y2««‚űhéX\cÑj'‹x–á< Ƨ¥ïGH–ÔTA`¢=ÄÉ8GŠYc,¯öb7 ¤©—äw‰¢­>°ßØFæá§µ¹¯‹å){+º5ùÐŒFžE'ÿž-À·;‰*†&Ö¯·3`Zež‘VWÁæ½®$]L¾²AH Ëvïgöö[ý¢ÖÅÐ$šhÂu“7€±¢_&YàÐbZNá««®öÖšqksúîJ‹gWÛHd#ÓøÂUséXè¡zÇ·… ýÏ»¦áY‰Ó_Œôøz}æU–“£i-—}OßдåvX¸=,^:¾¬¿TŽO˜>c'¥‰Ô‘É+¥‰Æ:}“iÁ$œhyBÁzc¥-œÌãRÕûé?wu³üR¸>¬ÎÐéê1Ø^ö(|Êó(£žÜ¡àÄrƒÉݰÆX銎ŸÍ¡-™zy™¹þðyò²ÌB鬖– éN§cT›>7}Ø–w shöܹç±Õ:tÜ¢FO¿“ßÓZ¬½LJ£ïï/”µÅN þîÆ ¹oÀß'p·7w9|õ Æ$‘¹}u9žÕàþÕ$¯+'ëM _\1yYÑ:`±"oÎ ÷SØ ¦Á*/¢Zù‡ƒ¸oÁ:àÎa¦Mˆ7Ç0‹é½#Éæ¡èª¾rÇFŽ™V­Ç·³tž—yÌŸíP·ž¨ À!â»As@¾"XŽh5x ‡HPì7kræz‡Lýð£û Eé%K厩ÙxYƒŽ÷*éÚ.ÚŽ†a@…½P‚Aˆ"1EY`e}0VTŒ¹Ye^h0S•e}ZÙüå•jÜÊõPÊ¢N—ò¹zå3f“y864j˜{P(v'rš&‰V· So©êÓ­Lj“$?#ñÖþ’3¹èŒ–* †±Ê…ÕYN}ÛßBª t½[h„ÏÜ ËnÉAG²g*¢\&¡«ØÖaʲq ¡çÀ`a N©g²TS2' $›½¸âFÚƒHñ² #î×åjx+=“èóèû=ð+sìÞó@ñ|ÕÊÜPt|o™Iuö RˆbL`²¡¸¦GXIW{"`ˆj›ê7[‡ͧ+5MV¥ïM¢ó“…³qf½ðf[¬\!‹­ŽƒõÄÃFÑ/MÏÈ–Ñ!BAŽå¹ÏÅ©åå'F\±ïÚ§ÞñØèõžX¨Il¿ñˆ)Ñ£#÷è©fâºIãF»­õ™ÍbµXÌi±Nåçq¬q®$‹¥±öFµcQèV'%îÞ'Éù¨+;„û,zTE_Ï[ßÞÎSpwÍËÚ©éSµöû­/VþINe{@aUÈ㸇Ù9¨(ØMæðJ&(‘;MI ¡!-Üh¬HÇo(<õµŠ]gÚ §½xäs«ÇGŠrg¢/æÞ¬6â#0¿…ÁtM8 ²å[ÜÊKíÈÃ! ª*ÄáwK´Ã/¦õ:( ÄÞDÃÃoœm”æ !æeJÊr™¤Ê<ÿ›EÚ™3­·81Œrñ$žHh[¢0 ~°¶a’‘OêÇWµrÖ’¨”Ô^PjàùD¾‚‹:.h‚3e(›b¥ fäëb´Y{*ö~€Çï&µ˜ŒU ðndåÍkÌ‚e¢‰qy†3D6“WÍy®ß!r*Æ Âäô"(òýa†¸Š.ô~;éi 1lN(½o/è½·×ÚhªîˆlW<:üjx‹0Б/N¿¦ú\ƒ¶puFë#©&{ÐBJØEžŸŽÏ&/-Ü,ª’V´Òò͹{cUÉøãœß'|z”|]‡§„ÜóAPˆâå„®^гÿ g<¸n;¤ñl¢›Ù½À'¡r.câ-~$9‘æ&s2Õ,Þ©7B^r­{÷˜/Í™´²¢P³SBß9ú„ À›U-«=”$7aŽLÅAÛé½ïRF~ÌÙGZ~†g†v Í ·:ؼ–ó;‘B°”èÔIùÉX’²}m$Ó‡n˜QžoÜÊncçnžV–sbmŽAùÑúØõç¾b½²\ûMÅTg}ÍÚ¥Ç^Yg¡¶½œÉ^QèŠü¸¬wì©ä“òQ^Q#‹r"¦Œà e™øÏx]S³Hg€¬ÙÖ{·£:û¾òž¾£Î;ͱëžÖ ›‚Aí@ìÍkë/)(eß<ÞÉÑðó¼™× A“³ÏE,+‹Õä‚ÛÔCK€8A§Èß÷2±°Bj¼»Ëža'šáCåŽ|#1ýM›ë»^8cju²H?& »ß¬—3½ç…É£Ãbû6±‹Á‘^¡tÃ@Q·{P·á†áÆù·â·iù·E‚ç ˆ¼õ2{¡²Ç¥ôsÆÌ;–øÉ”á]câÚ¹ÉÅ»ØexØcMfN Ñâ©ÂÀ3M§ )1v·ò 4ÝØïÔG¯Üõ¹2»òßL›l8jûãÝï¯)}u²ý»—Áv[qT)7~ž&ÿöa±ÜkŒ¹‘”p¸V¸‹æ½ûÌx'4Ÿ8áx0kýü²ÖGâæ×ûíˆV#”oÚ%§pÁöÑβ¡«Iµ§ý;LÒðC‰âYõª±?oøŸárÿ~JûW<3ç? >8˜ÿÝúœƒù¿²>¿ÑÔ–×Þ@Åîd ›Œmô…Á3B»sæ!(€t6¬ñý4q]†:T,j [¸rÑéEÄÆu¯ÜFt©E;̬EæÕlJ"»ci¡µ,î©_9öç²Çªÿv?‚nÙÝÍ1ÿ2ï+züëý¥°Ûñ;½8|‹|6ýõmöìû®”wÕ§ÑÏñ[=ƒPŸþfê¡Úìów¦o¸1ö¨ÿioÎQ†»Œý"p?Ì:¯·²ÛXVt+ŽH0´Þîl)²Ì»LL†ìö£y¶ Ùxê4·ùÄ>½¿ºû…}îÙå¬è'žy–vLúÍΛF¬«b£Ç¸Ôû*ÎÑøB¯ëš½¼´ØuÒJq’î¸oŽ g?Ð ¯k¹ ;ѶPùŽæÊežt¯®âþ@ì ú¥Ÿu¯m<{7·&å ÷^™Ä¤Æ`]B ‹-£x€BhÒôíwƒ¥ qÏŒžÝ(B\ªz4eYžÂ|Tñiô¼JìYº[bª`EaþçI]á!%£‹±)‚Nx&U_õ’4 ò™ªAñòµ¸¤ÿ\i¹\±Â°ZÛVe?BÔ­‡;ÛéjÏ6‡¾'ÓŠxÌÉ>€‘»¥4êÎñôs¨9°Ï 0â3eðSqéfè l<=Š>£Y˜‰\`¾5 ‚n§-† Ù¨‚Ë!îÒ>m+E ´nQ߉dž~Få¢Õ¬@;hnüÌìPyÇ2žlÙ˜ô(îë%þ\ 9¸ªV?ŽÔmi3¤·¥ ;>uMfÃýš[2Ã%Ä, Mæ%‘Låäƒp–>3®R48Ùµ´[Þ!uK,^<¦pŸ$²d:t²õ„›É·ÅÒNðI:øøí ÷òRh85Gý6.µu]°¹tHÄ/Ižs“¶»ÃàBOGNµqµ|}%q¿b-àë)gXyÞ¿ÑëO£VDÑÃjÙÁ5iD­u´‹ U_œ,êâ}$ÌVf‚7ƒøCÚ8šMjîИûæ*N@Ú|[¿–eZÀu…´EØ%Ùýêy Sª³êç ‘fÈþ0õ.„ö§GÙ•.h»º”A¨×ª™ ^yĽj±¨‰cË7Ò.À ‚àöU­FW±6bžo"­lÚræáödšèdÜgônüå"…«!}«hŠø°ì©&lWƒÀ•0÷…Sö[·+ò3'æð\Xºa–š‹/vxœéÐ+HëGàæ$ØK '`A}žöæ<øWÖ-¶-“-uI]g2YÆ¢SnЩbðyÖ×o¥–ò0oJ T¢2"At‹€Îl-™w5 —åØ†Ä >×9(ß8G¾f ž£càÌy‚´‹ï‹N˜¡²Ñœìè~6¨ÙÒc!‰õfX§a¹™|EÓ,Â*›1’˜Mëd–˜BôÎQº¤d‰z§ÕNQI·¹¨vˤË.<*¬+ê»jÇ1&t‰n3ä2€‡vñnx¼'õ&^R#òeûØ‚-Å ÓžŽÛœ¨Ô9ÞA…þÅ &ÛräÜ›»ÎæÌ–Öaí Š@}¦¹l÷Ù=A+¢[û*71ÈÈ?¸kеMí æK¤èWX¶‘fÏĸPëòdmu>Ræ^KÝÅ‘¨ôí×.Œ1½¾ß¤ÉL¸šÄªÒºjÁ¸¶SÞÕÝÙ òH‘Göâ4 beøúÉÉÞ3A÷VukèÑ-¦®0Ñ(+\‘¡¹æ]&.¬‹´½Q[Ü("ãôÇ(òÈ<-‹°|{ÿ&k$x[…ëGï{F_k nÙËø<'óÑ7Z c˜ÞáñÓ÷SLøÊkãe½£OúüV§V®­|ª­Œ/ûóË«MvÑ „uz2¾6æf]jÞÁo}3¶þñ_ÐÂ/Áÿú»›òÛˆj5oPüM¯ûzÑÉ~!*а©h,¨N«N`ZQ»“/\îUÿævü·Å­hÀÉ” Êó´N$'A²â/ÊÓ’Ó£‚Ê5ω›ö!ŸÞRa¿¬Ü}‘Á*ÿp ÓUÔ~¡Ù2 ñX@”'ò´[(w¬4™±ðUˆÎ9v ÿ(°ÅCBní2T`]ú72U; W‹#aÓU@ÙQÔØ2Òè±ß3Dy‘TÔR k]Õh ¦ 2j>çÀÀòi$l=¤Qè)!•ÊÙE4A7ˆ3Ih,º‚¥­ò¢"4%) "LgÕмx•óSRÏpä)Ï}ÔÂ)7é”81ùú±ö/}ë똷Wè‚ Ö‡ûßtiYÊtð/ñÇnAÌɘâs@GyÉìÁøŸ.~ö‹12%¥Ð „& åþ€…gÕé©8}[kWŸ`i"¿Ü<]ú¶2R—éOL‚ÂÚ‹Ôœ¢,~”ö?:¸ª!¤‚]r8 6ÈÀñ¹CÌ:›’•dò¦l éЙÊsv6e郔±̉ Ÿ˜™œš1/Œ®Ž¬ÒÚ$_bJðFâ„•” 6XžHD‡–ð·å]wé%ÙÓå>5§‰Ç¤ŸtAØø+8úÓ.÷‹ã¸6~©¿?Ø}RdÿNI™ÿé9ÇÈø¯ê¸àdþ¯.8Gµ®”±×PÛ<ÍjL¨Š$v»½ßH¹Û€@¶F@‰ù“Xqd®–ÝŒÉ*aݲ]2fH2/d²þàsý¬_„ŸÞ]q¾•ö 19n>xÜåyßvž}p›{Úi±i½Ëû¼»œÌ;'7°~(7wrºTZ"9;»K$©= z±Z}’Tlœž.>föU=Ól2ÛåfKŠy#w>Tl3XÛÇþ´™Ó‹y£ƒ#3‹U¥²)%Û!á‹/&ÇÎVaÏaÇßm÷zxW­ç‡' 99”$`œÃ‹/þŒ|¨U7}L&àjÀI4t2«ìNÖÛóµV)Ž·¥ô‘Zî¼tŠÏŽÌ×uR/4÷UU&gs§ÓõNÓëô¹òF}m-£¦(ráR¶@ÅNCÆò/(ÇCyu(99ã~…m& a|<$T—`ÅL9,$F啞îñ?‘(öp¬çÇZmóýÊç`úUÈŽ*Œ²'êä@ít,#£E“8¤`Á˜0€ƒ* Ô?,UÉY€“–wº™Š;‰2^Í@°$H 3XPcc÷—¸¤¶·ds¤™päaS.W& ýxÍp.8k˜ö¨;ŽÊ’û@ŒÏˆ›b†«ÐL½E Ž:ì¶¡¾î£Vèž§È6,®ùK(§'Y3"úRI/’Û3«ÓÏά-6wcaÝäïÆ`ƒÊ2Æj9Œç~à†itô» {ÿÈ%ê~¸ ,Œ#)‘7>®ÇÒyªCå׉îáØ]›ÎêOWýç,Ò’Žf‹B y,Š"Ãd×¶<΂UsKô­ÂŠÃô€;Dª^ÛÃ|È}UÆ1&í¦ˆÜa’J?îþ"Š»§ë£V8W’5茼ˆŸ<宪(‹¬ KAãkj ¼•µê³§v<œž,Z‚¤°nËR–$“N0!ˆ.–w²îóÈ#ߘ5Ô2_`O·ßÖws|{è’€aÀ£t4½1v;¼"ÊÁFîä:õŠ ^3ÒÜ0üN;é28¶VÜûÍ)GÕ{$Ä4maO e=·²œñº~ô¥QÇa™q‡–ÄýXpÐÇuMã,&tL¸€× Ój#= MÛzÂÓÜW_"ËÖÆ2«òI«&bdÔîlòjzWá²ÓØlÔ\,:Ö ãËì É+Æ·}w úG¯Áå5ëTž…g"Éimýѵïzj‡ÐCíŽ|=‰âî¡ó”‚­b .«þEùtQ¹ É4´ÃVSCtv×¼säJ”jðÍRE–w@×*LGñÇ‘‰£ˆjÕ¸õàc¯™Â>jÎ[Üí©câµÆmðšøïíì뜤“ÖE)ÛzÞûóH…/’(bŠð XÜñ¾ok«?:§u¢gc-C$\KsZ;}ϛֶ݃– !ÕŽVøîçåéÐôóëKêF·â îS ˆ½ùÁÛ8ûâ±4^cÈ'“¨IÖiŒ šÙ¯Þ´F&u³3´ýpÚs ÅÌ¢ôÕF…ÁÆ™å† Ƹ˜>ÒÆñ©*s^ÐwV}·›ºz¬n—5x»09LmŸy¦––iNWÜÓî ÛŸ§\- £Á!C=ã‚¥ýÍT«õÏ>ϺOÖï¿–vw6¾8×jý¯£Ô6þʬm~Ï¿j?‰µº;¿r<þ 3™xå_µÃÇ^[kï6ø|ô×O±Zsâ ê…ø]¬–•è.ßeY%8 ebè]Y£ô ­ëØx CòŒÈCo¤¼],\«›ŒÍP»nìAGšW¤‰Rƒ(¸ cÙç ØþD©–[-4{K2.¯Ì6o¹`›³¡Ø dË{=³V#U…bÝ«pŽê¿«íޝJ‘mSåaÙh¿lç–6Ÿ‹¢^ôF½TA)¸å~4c•¸üà…E®U„x4L/ÔAàÞ”Ôc<‡g ¬¼ðÄõ?>-¦ùè¦:”–eÂß›uÂwÅãùÉ`Wˆ ¥9!]W$‚eÆlœ²RIc‰ƒgž–;^!ËÛs›¾™~ÿrðÂv'‡—§?â „ŠƒÃÐ)ƒÙcÜBÁêe˜0W80N·æ(”±)Xµ›ì:ÄüÉÖÒ>yˆ6÷’|;k­àé\"Ý6Pþ„Eáæ47þU ª!Èsc|#Y.è…¦e–{8N‡Ê‹vÓÜ>ÓŒGŽá©z)œþíîF4éÖ­ÛýJq椚<˜€×:ŸvX±¿Ìl!V^Šu¶Ú™ñg¹$_#SNÀ¹köKí¶¨žßçjSñh@X¼ByèJ¯)7*àí;*;yM‹>t@ÉÉsbÙ*Žygt~~b-qõ–¤™æ’½Ò-­ƒõÌÒYJ̵ñí¿vÓ^.MßUu/ª®·¦Táê1Ï`îîr÷öc‡f‚ž€½Qvý‰SV5¬2Ö ¸‚ù›(çBù*M߯1IÅÒ W YmY¸‚,k~U\*3V¯€%æ‹ìD§§ÁH 7†¦^gˆ–»Äåv{˜/åeª6 ² 7O™R­Ô{—4[¢¦±»ÖúƒÔÜR¤ ëtÆ·ÿ–¶­°YÜN)€L2k&¬r~sò·3âjJ}‰YW½´¢Ç`T™JN‡ó3–Áû­*µuIÝÌö¬wðo1kíÖp~¿µ¶ , xQ¾ú€œÚrÜëÓ){8?N nœm-¾ªßRÛ‡ÕÐ"# @ëŽù–Ö,ÈBL¦9ß2ŠèroZu6sR±ëÒë`© ¹Ïp) žÊM<²¸“ÿ…ùñ/žÐvâG³Ñ›s]«Žv‚0Ÿ×%¤qÜfÎgÂ2­ðYCâ$â¡úo>Ÿ5·Û°|Fke=Òºã¾#A6<Ñ/l *â÷›>ÝêÔï8ªüo73#Ë¿z1YþÃ(Ë5º‚im¬Ž6Þ8ÎFal%.wÝÈ8Ïüög‰,$!)$¡Á6Béeµ;0m¥H«è(P¨ªb‘˵ýô§A˲ÿ:]Õ/¯3~RgÜ“ƒeK-ñ&Ó{îËu®Ó³èÒµärÿ¯ï;ÇɃˆ¨‹ì7O\;ÒÑ•’v<ÊŽ»êxËlë ‡â‡n‹ž­oÆß{²àÑ.[‹«%‘”ŽÑUÜÜú¸¤’c[Â-Äà3¢;Xý‚û7ÜvðóG m7l*§s' ‰&ÕØúdخƙ“ÊF*Ì?›§ËsâÊSJ€FìD†bÄÏÓ{ÝàŠklhŽv»ê5ˆXy¸„Ð,|5AÆO¦!kÝø`_£áÉ]p¹ÉÀ¹ÓãNS§¯Œ±Š¡‡bSÿ§ =–÷¾[úT>aîxåÛZ–Ù®~·›b(‰•ëùIUÍ-RWžé§§é¥è/ç%_žîŒ²oáå€LpÁ8ºjZ:Ш£ìÚU_Û’éK±/Ñ›³++§4Ýd lB$ŒñY¤çMÛ¤å¯äQáûÂΕlÊÌQГe_È*ýDH†©˜0MJi—U•$-Ž×yx‡‘ö¬˜5¾Òtº™Û]óUê©§£t¥šC­ÝßçqåvITU¸=Œ{I©“·Ñ•Ó•J’z&v-Ü㮆Œò`iç‰HgHÚ"?N™X9oˆÛÛcšº»&sç}]ðDd¦udZf¸¦—æ¿àà®Èª·Ò^¯ê®Iï]x ôVÿšMÏ!½©¦`ôßøÊúCü‘ÙS’'5;¥,Íãüõ‹Ç¼°Õ†õxMò©:MªúÚûüÖòÛ œÿ½¹×êræýÕòЬ;]ß»€òùËþÞ0ñ*ì­²fçâWÁ ÀÐ9c¬õQˆÁyP§A×БcÕTÑ•Òs\„ßÛà×ük !£^”&þרžÆÈD;P#G“-ô†ÅÆpB ߀ !Õš#'m"| ­Rnö$-Z7ßA»ø öÐß}sËþu„žö" ¿ÊÞ ¬ù$âk´É¯æwšg_ƒæïõÝóFØ•úÈ.xÑ](Ñvå9¶v]êøÏÐt+ö–ž·T)Ç2k…ïî':®h“éôÅ3¿p6¦ ¤æ5C 0ø'Bˆ«ÜÑÓÍa?Éf ÖXþ¨-NÓ.ÏÚ…©T W ü?²5a$=Ëœw|”4"b –p¤â\¤Xbu„]óšüÜ)ñ#a…ƒq5Þ_e„Eh c*t4&éТ¤»rTÅÄÅÌÐÄ&–‰V…«“aADóV“/I°Ðú“º]Ù:˜RaõŠ›IpþI. >{”j«G\Å1AŽû4÷òq3ÒßèuÛrýã^üô ùŒ™ð åï:€™ d0¿ÁCà]q3b9xÊc¨Ç620‚¼0ç‚Ö±–Á ià)•0#‘Ru5¾Ê‡6h3£ƒ*«0a½1ÕòŒµˆ†opžð]Êò]ešú„BËRÇëã„‚ÑÐWP°“BNó/®láN˜£&“3 w}»3ê<ýö`…Ä"v 뙿Yµa¦‚u(0fŠô¥À†Ù !0—âƒIù4’¤ ÚËBq;o† úè©KeÝo¡uA‡('šuÃÑ 'ð¯™tކ! E¸ö"v1kð'yºìó¨k€v¢£f÷--> œŽÀÎn¥Ó¬ÜîþÜz~l\uÎÌNž®W¯½YÉ[;SáÔ tìÆù›‘…°0Ó'‘ZV`'ÄøTþ0 Â^W3ñÉj§wD€4‡ê:(f'Á`^u‘Þìõ¢o³»*j’TØÅ‚rU–`eȯubl©[ÚÅh'«³–Á7\WÆo(çO–ÑPL¥Ñ^¹ÛY“’^¨1š~•:eÈ®^ñ‰§tG'Û|7:f<Åñ£›~ö³ïT'#k?UJ+ÍFÉSõ|2•–ÿ½Ÿ¬~\ùñÖ» ‹“šÏ2;–ä |·]Š”%ã{`ÜøÅèõÒåȲdø‰ˆòóV4–RYdìä}Õý¤¾©g¤—Ë90Qõß%£K®|h[ºÿНÑïÑ».\8™¨[Q>—`_ ½©½K©Ú]KXë›” g³=ØñK}\—¸åŸ¶ˆCK[nñ È›Z–ó·Jó7ð[Э¶Ÿ‰òÿ`r`oùZš¹çγ#´¶û8ÏÚ¹L›J¼"QÇà2ûKuðÙ.cXÎ~‘'GÝ­ÄŠ—w¾˜Û Ùr"~âĪƒûÑ(á™ö…;¸£Ìa³ß{>©¢9ß»CÞ<óã>9ßTݳ³0fJÌ"’ß©_8ôëG™`šMïN!§'樅͟åw‚×킯Þ¬“îzb«ŸUÂR0ö`óG>/¸Éà»T0ónˆšÝ \æw¾3uÇ'Ö‹Ø“kV^´¸‰ÝK/ÃG'õË|ÒÎ;ÜYH¢Éµ‹Òl‡–ãËå/eƇd·¹×fùC¾n‡ÂÔL)¥Ul<&—Ò¢Úú×>ŒaÆ¿“–h02üK?eù÷ü9–ÿ*®W][KÕDp ]·eëBC°à¤‰»›»»D¢2LVVYÛ‡a#b5œ,k½|ld,$a=ÜJ鯴¿¾»™;˜©}aˆééן;s0º¤€ýWó¯˜þ}ú‘Õsñ/ö÷Ç3w Xå¼M´‡`0iªy•ª€1Ìüì)ö¾§Ýi…aµXd¾v³yçÄXJÃ@ï¶V™> ²&cdÒiüZS]ð$±4⟀*¨¨×®‡`ŸVc¡*ØaíÈrôd"«Áy˜‚²Sã>¬HZ~ýý¤hǘBmZæ]¬“¬X¹fµ<UѦڣ[ÎÈ~)¢RaýT(Q½ÌÓÃjh2ܹCZL¥ÕwM û-‰ µçQ¯nO‰—(‡"<“þD’Ø:ߨ^Ò<î4sEEUEÂlúúØœDv§ Ž(J–3÷þ{çߎŸêû.µÞ_ˆ‰¹d§¦@^ L2ñú_‡=ËãWMø}]D7X£Kç 7Yeêÿ¾»°¿´(ãê 0A«0?‚׿ÈPÏ1›5aí- ¿’pÂQ‚ ž9½Æë: Ûu½-jgDc…%ÍïaJI¤rµ6…R¼A'þú Æá?Ñ‹-ì+ºÝ竦HX² †öÍm ÁºøO® ÅÞ_Vn3÷UL½ÓeöYâÊ<3=áJ¨ë¦—n`• šyÙ>g;ˆä 0£µ| ×e´Ø÷Ö" ªÀˆãÊ´ ‘ÜžùÆðtà—î²¥xéœ sº^ Aw&¿ëãÜ¿¿àŠþŠþ‡ýþ¿=œŒÿ4ç`ý÷ˆÖÿ*¢çDcC[þ¥sÝÖȺ¢ŒD² º›ÙÛˆzuµOEªñ³„çR˜ôKD‘x™¿Äþ×7777’ÛÛ>N¶0$á˜û´»ÿÃt.°…xÒoa.¹Î.8s~}\ýº%4— ø5s@Dô+n µ€z³ rS·ðÃѵ}å—ÌÆÇëhBHRX£Å—ŠqŒ;¼N:¥ËÈ7öÌ&­æBÆÉŒðoK›Ä1³3é„Gðp› UHÎ3>]Õ‰‹Uø!Ž‚_çìYóå1ùúcê•C™¸hÁULö¹‹´ˆŒ?‡Ú›:S¡‹Hù)Ól¾G4î*¶¦™&¢¥>» ;Ç@å¯MJ£ÔkfO!p®¡Q´*ÐsÑÓ#D) D jcfgïÓÑ+Év-=ûŸRv¹h³¨€ ¬7½r‡w7m¿ÄŽmì/íbÍxe⎬ê9nyø­0µÅÓV>jw"Ðßwî4k‰µ¡Ú‹N- >n8w©ì›°,ß®Ú ŒÓ¬û=LA9¿¿òå Cì™$$TÖ]v$ÑRÙ$VwÓGÜpa‚eZQ} ¦Õ÷¢»»æ á  òÔΠP–ï.HàÆ8Æ?n‹ª³¸/+"°Ç2=0¯êÉj¼‚!.› ƒ÷¢hÚ­ôâÞpã8?X¼š‘LbL«ùíÉbüC6½b¯·X‰¼õË`©vsŸìÁ¾ # ?‰F%ÜŽ-§@•rH„·N†ó^¸nì;è÷Z§<Àúï[™õ/99Øÿ52ÅúïÖW¬ÿ•õÕŽ†­ü‚4-K"X à ÄTø"G®8¶…ñ?^3K¬bŸªu |²€Q¿R(ˆPJ$“ýw©Îa‹ã6 L•ŠUþÝIçSî]‹/ªE××C¿;| ñ‰°K¬ï ž¶léÃI*XËißÅÕ-ZcËôHuÛ*‚¼ZÊvü¼Se–·”m+‡ ÷½Eѳ‡mT’Ï‹„€rÉ4~¯©‹Á‰P¡Ö޾ýO ¶vŸƇ ¨shè¥I+‹Òó:4Ìôã¤4·¡Çç¤H%—¦[:,ð§ÊÒ¶eôdJ¸‡e^nöû²i\›¢«?Pnd†³Û³ Õœ\ÊT1qípT7(,Y+:6_ù‰ÛÃÅÐí¶R¢˜a¼M_¹Z4í/_ù¾W¹ÕÂHØK²íΑ3ׯe¤~ˆ¥µ1îòäžßÙµíûÅäñgû¼Û• 2ß±­?Œ_5H6âñNDùÚ9¢MwÇC [-Ÿy¬rúq' õs™Î(Õ*æ˜ ¹¥Ñ«P †Ød@'ÇŒL˜þç@4*#+ÂÊ7‚*Svî±â^S ·#-ØjV“dœ‡1Êz±l¶—Ï2p¯èï?’äÊÛ±6D¢ƒw%ê„èÁ~ƒöÇ'‘®½ÕKÕ JQ\rjÀeã*=¤“î…þUÈ úJd& \WMN#c¹p~“ÂÜìРÜšrdÐ¥Ó©€p5[ä*Pëiµîk^PkÎ|«ÝÌÁZ¹U¹ÿjbˆ=wÖÜ× à¶ú‰þIüij úPähj/«Ktq½äòQµÌÐ%U3{»/ø0è{Â2úyt(HÀPÁsÔ>~ÐBÞ­÷¥1taßAžr ‘Ímti”hѨÙ ‘ÈÙ†/5‡Š5WBÒcÁ_§éâîºbé-жA\ÜEßšž‚Ó€…ç59ßh¬¨¨}s%“;1¨Ë?ÿ{¾æS™BÚ5BsÜhøëIºÚšMkóÊ¥»·@†jBzš&Aâ•’÷CIw×JŠ‘ù«i$Ÿ#›èòäŠ?= ;¸kH¶?J_rz×–G¿!%¢é£Ž ^£"žZWÝCNJ}!ÙÊôvM„ŒìÖÎÎ÷>Ñ.ÙûQ“¹'¬ÔU˜jC}'ã™–ÁKsn,j××|GñÊwT ⥓ˆõ‹7ù[10ÃGÕ1¯ˆa~ç­ßÏè*ss¤|è°QÔDÁ’[Pã°*Z¥g°“õ;×UâÁêšäßS–²m«Õt::Ëó+,_ž¿hÂøÎD>/ÂèˆÄ‰•—KŒý„ÎR S†ç»#²žÅ…³|Ü.k«ìÈï8Ôñ ‡ãŸcš,,ÿ¬²ý “í¿ó°Ó°ý}@°[&9 Ñbl «â$ Ì۽ݥnºN‰ZÎàXy ú fhyÿœÝ[ëîÝ9~íÙêÝÖ%‘â#ÉÜØÉ4?ÝØØàM]%¨Þ ÷ÁÏ•(_¬„iˆñÃÍà–µtsz  §Ú…G¶³hªÄÄnÛæI¼ôVöŽ=•·|zÂö§Q=†³Å“~×xø“žM•H×î/‹…A†Ëɨ=pÔ?ïJ (gð@®o³ÁÄÐØ £»f:±Õßxð®LÏ`·œ¸¦éÛÇ¡O+‚3P²IÄìŽÏLÙ7ZËéîdé• P’L×YÕÖ*°™ç:ØÑ1"ãÍ©ïz¤^)‹Öˆ“……ɦNËKOo­P:´È‚6ϲÊ®¯_ƒçªÕ=žúóǽÆëªÅâJBìVÆ^ïì4¨Ñª*®–ß±+ÊWQ‘‡°‰’ïln%‹Ô8t¥“ ïÊãI ˜Áƒ?‰ÕÜÜ̃˜7ÔÑpŤåd¾)+Ê(ÍwˆŽ»8{k]ô¼Øb¢úÿu#œA-®Ò«{k™†ÊM˜¢¡ øÜð%¥yaDBcXDQåÕK>&µ¬ Hr†ã¯‘„"|îKµ[0 Ú°X1 Ï«¢Ÿuê¤} EEðDFï~!SaìIº>€‹_žÂÂR®<†Lc«q">W±¯ï—»õ†)‚ߢ“k¿ÐS„ª…µëÆ/Íî½vU•öcqÔÉ»»ƒðr´Ç}óÈžŠ{{ºÓõ‰%Å6Ï!ó¥Þ¢}Ó¨˜N•ý›ÆQÿ/sýõ’,¹îX¾°¤àƒóf,¿×8YçR÷žçþ:þHâä,xµyÛ¥Ù¦n[C¶gD<Öføw0}bïDõIkwxøh4tyLøÊŽÀk§r8¦sùPÉ|§† ½qý ô±VQ1zc»bG‹y6¸1¯¿¶Qö“ÕÐù ~Q1$þÌ1l.ãô®˜Þ\ÑÓèO—dBÌžžò|A-åþ¡ˆ%™{i° Hè÷"oãÏs0˜ðƒ ü°°NW!Èz¥Ì¤y ä}#NÑ&lÉEFÉEçæs# o­‰Hiw ·ª” ÓÎÝm¬CÙ"`Ϭ¿@C1 ±}¦˜@&ÏÐ^t²¥Kv%7RžêCWdvy"´Ö{Go²žú|e|Y‹þWؘþ‰+Œÿâ2lÿaü›í¿ÿ^Ѹ‘ßà$!õDÓ\™QžLùúãÞÆ- IYKÕei3Ù"…¦TxU"©b¤/e(#£H¢ ÊVë?Ñ÷ðvãC?–޾ÅXh…**ùgnëÎÓïmÛ™Sᥪðr7Úÿöæ Î ¼Jpmd|·ï³!Oûã{EáªÞI¨íзQµ2-²:NkoÕ>õ²ÿD Qp:¹ªõ®³^|‰øÍžRùbnÕ¬b^䓉²«g4ÍV›•¦‹‰%"Aëàêöîy0ž‡,¦“2àp{âÛÅ+W–‘°†./mä..fçÇŠ7wÎc@€ÎU|±-¤þa¹â:ö E—,ýDõÒ®¼0:Ý­'¿¬¸F¶¬ù­\)s{óí•ã"Èõ)›®†ç-í]Y_ÆÞ–¥¥¶†Gd[º!ŒtoúFA¶L3ìq…ûÅpî´»R€+…vŽMžúæ±oØšþý {÷}_EË„öâßͤghÙvTj•%ßú#Ôðž­ÙÒ~VíëîJøàOÅÄ¥mŽ¢óYå=Ô0 Š"¢{†] ?C$æÙ¿ú&15û牬ŒõyÞÚýyIv(q h¯ÆRÁê„4U$­ö"§¬T‡=@eÔ1“\îè#{ GØ(Ýù6 í#Ñ‘¸íŠqå,¡ÈcÃ=d…ž"‹K­vAùŠ5`†g/:îËG:qGÁ&åç=ß<òmãÚÖqÏo˜+Iam®aCù 46G°o=“ÅoRM`xaÊ÷„žÆAޏ¡ÃÜò»`X>%Xc$ä.kcøô4Nª4ìý‹š€Iœ¹UVöÛ‹†¿æ'7úÐ[㛎µÚ\Ÿ¯žÉUH‚ÀƒD÷¨ídèòfñ-ÃÙ×òñífhfùÇì©àÍã'³CB¿ƒ×ø3ê¦Ë´]¤íçÒú‹ÇÄü³µæ'ÓèÞþiýZú¼¾U4JÙ8d©r’yø”ÑU°)¦YèÐѿī™`øw°™È6æ]L]-5šãóÔ§»¤úÒÑ›íòMa8ÖÉ™æ@Á‚¨­wå—.± {Lå?ï$ן×lõnô.»_9š¬°Ò6Œ¤è¸Ì×üÆåGñŸ¬³dë…&à~eå@GCxO¡‚±W y’6­_Aˆš]Aahâ K;<-nNq6SQmÇç}Nò­ì\¢“êÕð"rÈÌù_b”:H;Ñ:пØÓT`jò$C•¬j$ˆ´×/Èœømboµ0ähÂÓÀ5*¶ÓžŽCe±¯tÕ #Áñ`¯ËÕ[d)bæŸfG^Qaš&­LšY¦VȺêÛ6’'ÿT߀×C¦§òhw”×àìã³å`Ó•n‹Ðɧ J£:^Cf ÿ9'ßH0Òñ©Ë±´{I°A |xAæ©7:)íL>VùœOÐmå±°y%ט³Êš{Š÷¤A ä.a+ tuâ¿Èj}Ž÷å½€3Ð \j8°ìÅÿVÊ)è…fGJÔÈgÃB³ÂŽxlðº$`¨Û)Ëys:»éyûu„ÿÈ7l®³;ëYû ʯaö ñg®™þ? ®lœÿì ÿåÚ±ÞT@ÉwõMçºQÓ¼ª# 2z2å;Wë²Û™žÒXCyE±\ ~ãȘg²2ü¥ÿùJÛÞÎ>#‰ŒÜAPœç=û¾å=ûhÀ…k8…ö… [ŽÀ„›º7€€c±:pà.o 4öKüˆƒ0Q¼¬ÀVzo{Ýäl!]’â.>'Kñó±ôLCM8Téi=fbÛ[í7wÆT•djÓ©>Æ[c/ø!ï‹O±VøÞE¢¦Ú7¡øÃ¡~ èô®’Sàs“öš6¹¢Óª¦1ÀêÀ´z ±GÄ’ìè›Ý:Ì©¿M¸ßè<™²ÅjYz¹¥­0©[B®œ€JòÙŽ¾Š¸_‰7;ØI-Q³4Í_k=Ñ úI”b@[úí3?Ÿ¼w©¸yÑñŽZ¥·Q¦Þ ”#¯L?>âCÁMk1ö¡Þº·WߌŒ_ýµÃU,Cšò v¸§4€¾ACm {ó‹X—ùˆ÷ʶ¤ YÊ·T=?.¿ØÁ$Cý–¡,³ /N`L1Ö* 1Üa—´yÕÞc Ên¨B«¥×·]Õp5"Åm¼kÞ:(êó<Ó\”zfÕAÕˆô‚K\°¯ƒ–þžlw‹Ë=$˜­­Á/e–ЕxÙ ÄõË\WŸFû,ç"P"ã&;4à˜v›åô–?c % Ežg2É÷<ŽnDa‚‡–nêÕÉY›ÿCÑ·Ôƒk²y:"øngð4;7†ÈÔÜpø0§Ó”à}àV56Çq„0ZGd^  Šâ Ñ7-¼ÿW™×@^yßÝu™[¬8Kà–tRû!÷8Á6²q’1Y”;I>3CIJƒÅSò~#rF-s¢r;ãÖÌðÌSa(Ýç9¢t¶ 5š’× ÑtŠ&Õc¤£ùþá¢ñÌ‘ÄéÀݵìËa¾çáQ.kø»ÿxèn îpRläá‰9£Ç’uŽ5ÇœT×)Q%¾|NªGëÎ9¹TœN„¼³ƒ•üT<³ãC—hý½Ú¬Kn<=¯î¶ŽÕA&³¾Ÿe$÷ß÷%ûÿN=r0ýë$Äþ„TöÿJHUÛ’ÛbÀ( E™°[m•aaÆÂ:!²E>›·¶´éÞd‰MÜUM‹‰–5’g¨*º)é¸õèÓµô‘H–SFimü;üöÅÿÞ xS¹yNØü#ÖH¦WÌì€t^;gD;…uoΊ»¿a·>(`Oƒ ¶÷²Ú-1/¬4Xº»~¡Ko]Š.-_µ¹T KóHЍœÉ¤÷‹@ëÎ5ð|ïDi7ï ¸êÍ?†9xÌ5\ШºY½b½iÅÉ$LÜÀaóîfiú¤©Z½Bm±ÑD¸iÒÂ{iÝÛ3ã}h¢ûA–XÇÐT‹õɲµ< ÷Ùâkåi­Ym£Þ:µiuç…k+íU[sº Ùèâ ç×ç¾pgT ×êp‘ƒç3¬˜§ûÕâº'–Ö‚‹?ÐËþÿ#ðæªÓöàÁÁd·Óèx†çO:AkÔ6w^ë³ëwFµì‰Ò×­17UV{í‚Ôg)çn`÷0¶|ßu~gòþ¸æ>S‘ï.$s­Ò~tÉdó>á«%=œ¯,Oç’â8•S@ñÈ¡ÄgéØƒ=Ìf¬åˆ¡h„S]«3ó‹×½Ç-¢I8)·/~PX\p@jMH›ÉPG¯n³[Ýr)Ç{G'‰ o¯UUÓqÙãÊJ05{ùƒÁNEÇ*!.¶Îk¨D$^ÿä£2Œ «—ýõ‡—±@'¹[¼ÙÔ+o—<² ÿÉSŽÄxdˆ‚ê·±òÊqŽù…™Ý+ èÀ85¶a¨[Œ4”§CqîG=ทû‡;¥ vKåbe²1Ö4c0þ8ÀÝc$ìÓP:Jè¶|æ\䎥\"rá£ùùÒkÙ%ü;Nùnˆ®5(‹M¨™ª¨nC4uª7ø¬¼k©‡i˜§‹[žFÝTy—î¡ÚDŠi‡c¤F ØÂ1g\î4ÎŒj,:,pxúŽ´… X­g¤ŠÉ„e•"Œf€äX(²5»Û‰¾ðŸËgý&sÉúê„âëëLö¨ƒ¡×ž†bCA©®µ ”¹ç™Sàwm(»¼oÌ©Rd—Ä€cÛ¤ÜCZi[04± Ða—Ážñ^¥õÉè_9×çoP6ýðîÿ°gÿ©˜²2ÿ«øSöÿ.aUCñSÃRoÌ"`´¨TËÀõ¸˜–Á¶ðØpÛ–E¼*)à±a²F}†Ê,¡PKÿv¿=$r¹£Åu»Í*Q_ŠíŸ¾;¾ü;/³Mì–`ùg_«Ls2¦_W«ÛÕ˜Y]äŒVä`úÖ ~Ší2׉0óU¹ØË]¯›ðÆB^Õ›õŠ>ƒEy{!Æ[J<†Ñ-¹‰®íwÎÜ9P* }NÖt%=ƒ«þ{_ƒ’£ÃøÂõLŽôm\î2ÔIìþŒC.yVrœâO'Ù¢³§§Ò!¹@…ºYè¶fÌ“Z»Ù1ææh"€lt`Oœ£–UOÏHÈ€`â^K±CÌÁëŸÉñz¼?Ìœ%r-6u,O5 #/š{üt~v~æU½ ¦‚ðÄÈiºÍ»] ýÚ,]Z(-[õ 7Aö¾+ZÝv5ÝÜ{ l‡“6¿Ä¶úž†?„Ô2æ‚9óO¿¢Ñhõü¿®6~ޚϲ[žo«’¹£)‚¸K%g%–½ªcá3/§_±Òd`Ê„²<Ë⫵[c»Wc\ˆ„u 4žd&ÝŽ¿™"̈ã×-¶W9ÏcŠX5VGQzØÐnð£=õ-¿FbŒ”da…™Ù@™1š¨`æ¢"ÎÚAd„’,ÑiãM=nºŽ²¶3 Ψvž9pµ{äA÷û.H=õQë×Û¨œ"ÀÉs~± ¾‰$Êäû ɧ—t%uÙ”7ÕägCBWa‚Á€2BÈŸCój‰pnËxÔVŸ ³’YUE <—Š§Þ¹ó´FU=º9x¹ÍH[ã+¨‘SÁ‚bšQ{«èªMr^Aó‰k½æ#³ê“ 76 Ó£ÓB<6$ûÆG„³P”?.ºÖb%Ž;Û—¾ÞG,éï¢ì¾[ZNrOU*xÜ «¥Ítrà–ñÆ’ô«™R:uªvÞՄýÉÀËu±B s» KØåž*®$ÊÌÕP9˜û1$Öây8FÏ)"x[¬Ä<ò±ƒånî¾ Fo-ü©$d‚,ùQ–œÝËÑÿ†ó/XÏQ["óîi좔Š0"»¦aì7”o·,ËOˆdV 3+B)g}Ëüƒòø¾+—(ývÀö]ƒÞø÷aQp¸Þ%†aN=/ƒz|Â$‡*c·`M*Æ‹“ÿÄG½¹¥€+郺†úª3ócžñߦYÑýPø_M““õŸ1{ÿAÒäøïº2ÿWz!Í\E¢¬žÁ"ØHÚçÞ2ï‘*¬:o$S®ÖJ¥ðM$SŒô¥„Ý1!,­Z•»ÂjÿñåÞûÀÉwüã¹Ã"ªxØ}æ77ý“wÖùÔX³XÓ÷vOá›Ã—ˆiÌ.þ˜+ö ¸3%`×+Ë´™ý1è¢ÃƪÒv:¢ÐíS²üÎÑë–…U¯zàÑÕkÑ—'#·Óœ%©·ŸALįŒ¸œ&™¸ÇÃe“ÅÄ0ñ ‚¨¸ršÅn÷'D†çÍN¸tKA'K3{j–¤4ÌŸgày !÷s6ºSgžÜð™Â Sx)±s¨†-³æbœ´.ö{¬¢Ù—,çØhÕ|C¤-úªÐ„ñ4dÊìâL–ÑM½^[ºMÊ\]VejpÖòM{÷º¸·L–È„9èìëÿ ò”A;¼¡7›˜²íj*³’HT%N–ÿ+ä¿ÌÜÏ´hzœ«®Z6¬ùa¢>3 쎢9ƒ ä"×ʤ:¬'„iÁ{u`ƾڹÁyæ{c¬À¿P³xA¦Ç­/j@j¯9ñåöÚ7Ë"\pˆ³ZùV¿Mø¿%œwUÊîvBò—âíõíð×ò¢åsµ®%¨ QNˆªê/AÈÞ Øšñ¼Û{ù0‡‹U$/Áœd©óÂxÂJ¬—/¼N‘D?Z×ãq±±:GÔš­ª·ö#vE£™1d”pF-¡Sæú6mzéÌ]-Œ$2.CëL62oÉ‚‘ÏÃRžteŸ*T†’úˆiϵ˜‚7ÄJþ„§-‰“î<òrÌk†?üo‰ÂÜö¾§«E¨\_*L'ëó!Rús§ïBÒIVꇥ%€D£C´U3¡x&$†ÛM5N[mâ l‘þx‹Ûo¸?_Ã,k€>•Ⱥõ"/Ñxš·ÞZu¦u¦­ËæDbIüp5Ç‚¸`Š®ÉKƒÌx±Ïr»à4ß®ÑèGóˆ‘×PY§¿¹g÷YÐsƒzÏ],.Áß^òdÿXs¬‹0=¾bÿ­bO:IêÄbµ‘_ô×s¾ÕžíŒ»R \•ý “CÜ«†D±óññsØ•Iƒ¥o…v·B¢.}¥HMäܨ·WÜœ#gž­à]¯d§R•qUÙ8µšD°K‰½*¢ccXÊ™Ù1Ì‹ÆD£äž^‘&ôÆEE½Ùð4rËEV†r%‚µêäéˆOSåˆüx{§(á¢\]´lÛ¶mÛ¶müeû/Û¶mÛ¶mÛ®º}ξ½÷§û¡_î}Zce¬53Gfò%ù2‘Hà ¨5ž_7±é DîØ€(òó;þÆX ¨°6–5Pa‰¿?¾8ïCäÇHB ÛÃ!G«Œ´Ñ)Fó_·/óJLщªÝ:ÜhÅÎOsøðÌ®®³¨¦r‘?ÂýÜÂIÓCliH96»Ä´‘ W·ÆgÐßL6ñ¢ ¤ažº`l8Ä=;¥ÃÌDËåýÂÌmM¯0LÄŠä ´›±òHèz±[ù⊣M꾄DžR´ð AàzAeÀR_ùI3–ß®õœÏi䦢7µoðïá…¬MkO^dƒÀá?Åh0Í(y(Ÿ€Ö\•íÝ©}+ÏÕT 15u)V«Ô›95OK3KL¦UuÒ0ßÉq±£á•79ãp_U˜5©È ²ÈðVÔ-²Þ8«s]‹_CI•9Wíh Ù=ô(þ&µBÄŽá°80!¨íA9Îù«ÔevžQÇ!vÅÊ ÀÞEUˆAâ’ÉKo÷ú-¿/š & Lð¥0båM\`®£8¾Oœ´=p©³;³ƒ#:nŸð¾´Äãž„ÀxÝtÍï…¬à½î«×océ`–¬ø‡ŸP>³L4ÐÁ¥h¨[¤9¨{ЮÇIïPáf‚¸2ã½5Dúçë™Tw^~¥Q©(…IÙOüœ&8O›ŽÄx—çT»ãÌx‹ââÈUÂ^ÿj+zŠ×Çœ¬ ŠjæSÊ¡ì‘'‘ÇÄÏù4>¿;€t)¸èh€Õs_üÅEz«$ÍØ!ˆ´A7O­GÂWêº\Yç–­âCâTû²äyNà¦ôF ÿÑÃm)öšý°21³¿>§##øjˆŒñ+õøó°!`Ú&7’K¼„ÝN­Å-ªéÌG ªœÑï1æ6#¶Põè£ :þ6ª……Lc"îHòê?U–XÂ×ÅÚ–?`У Ñ¼>¯>†CÆY99[ðò8Ð?ðÊÏòªG׫óÎgÕ»¶ÝŽúÕô¸éáM„¼ïÎe•Ï*Z±^£Pè}èJ0?äDöÖØœmׇ¿Ä#={g¯pfW­©AßµáY?w¸»:ÓëÝ{ûè5Í+¼ÌlÐy×y|J=õÉϢ߱QI= E_˪=¥>é6ï/}î²)bB»F ’z]°µ°ï禖s[çj>×b‰ý @¡ûv:`FØ`‡hÜ(ª^sú;˜Ç§È n  ²º{í Wó{ÀѲ² z5ÀøË¡VIó™ÿOÐáVÏa•VÖŽ£;…ŽlAeívü[¬Ðí6ñª÷Èýs|+*Ý›eRõ$½…n^¬•§†ilØßêÙ|¤Mã>!«}G>šG~‡ñp^PîÞt6°.âGfäØ?a¡OvÀ”L¯,âLv6Iʤ™ÑÍý% u‡Ú=Ûú›p¾Å|^4‘™R"WªäÐ5ÛÌ!¦wŠ¿É zÕÄÀjÿ~¯æ§ÕŸ-1hÒ”©¬ÞÌ€y}ƒ’–vø=Ï€‰;¢Ù3E\Hœ°‰Ò'?»òG'º‘$s´ †¯ã‹œ-nØp÷sð†™ÚÌž(jë9üýÀÂ- Ÿ¸IõÔnw+ÓX¿ø™™ƒãß„ ÿ¬|01püOº†ãßT>8ÿ£ÊGµš­ý&B Íd· ÃEÕ´¤]=Õ0N$ ©¢fè‰)îJ‡èê’^£ nݰdŠ$ð§îgäa%‰g66I@>þÎöãV¼º]ì–¿ïÐë½Ça…Ã1Y¢þèéÍOãé,èÍS¡øS.ˆ¸]àÁõRvû——öbãÈ›øMšBíy×þk#ôöÞNg¯ÏÛ>ö‰ã˜îÀVéÀ²ÝÈ($³µi…£ø@íü­ˆŒ‰AÀWÌI3›Vˆæ>pÉÀ¶Â–—Vó¶.»6«UŠž­©Ñl…ºó3KN©§ Ô_7Ù{ÜÖ3$‡0>Ý"7çÂmv«”tÝ¥sy¤Ò3Œ[è¢Q?UœÛ·XÌÇ$C¼nï”·>/1Zb”á|hFú£`^Ö*ËY“ObM ó†Q ¿HqÅ¢6¨ ª0¸6–®- —ë¢-g/fÀÄÚquÆh'^‚ºqm„Œ>aÂ7kôéßæû±C힘 †¨"Kþ`DWN  úàGÉ[)]ÐQŠXzÜIÓœ€¶“4§~z®Á¶Ó|ÊÅýuM»ˆNjER,µ¶.žfK¾¼ÞG2·8öàéñ†þ_y칓ù%$yô+|²×·(&’ Eˆ§öCM·ïZåè.†/ÄvàŠ%6É·'ÇÂâ² F9¹¨’"¥æ~4+ìŸ!¦ðM9?¾o2Ñ8ù'\c'`›äŠfÐBú½"øÛ‰Bú‡H Z[>ÐW§´À &ãÃDÂÂP忝9PË„ {p¨Q>èC×ìvbDØ”Ë^ˆÍmPþž¡ÝÖwº/a€­bI‚{XG3´ RêO(Iñ­NÜ„;çʈǔ¾r•zLÖfÛõÐ_?ï=§Óh¢_K¿˜¦˜jÁ©­ôÏ)Ë«µ°f˜ã {X¦\Q¶U™6}‘\ÏRL_4ó:%ï,/®*€ÛFHqDÖ÷ ¹z*º:xžXšU“Wp¼‡¢EŠà%¨{’5‚OSÿ[¼È°™ëªyþˆž6(V¥¹ˆwÖµ€K´sAÂaÿ4Ý¡¶íјjÿ$ÙLî8öÕNEsðU‘ªLÚ¶¿9LÛh0![4ÓL…hzrydØtUr8qdøò—TðœŽÄAA¼B+óËUä·Ž]œjX¡KØ!dARc$/‰ hçH–”úÊ= Ko_ÅLÊs¶®C¤…ïœ4äUè`œîšn\Âlƒwû}g_ÞÔã©æcDÒÔQC\´B2ΰÖÖr¹Y{Cižì/jX[ Êáóg¦>ˆÉ œûÓ쟗¬Ÿ7ï‹Û¹ÙÞRŸÒü=»8ÿYbdü?Z8ÿMyˆó?*©Æ÷Ë1 Œ€í@”ÛÝ{ 1jØÝ9—züÑB†‡OÇ“Ñüýü°Heåmz÷ÙýܱÞÌQ;VòZLˆqˆ?¯¶4$óE‚Ÿ_Içù“’ÜI¥h!ùѤ¹¡ÏäçƒÓES«aê•“Çó'‡škg5©ºÍu#ß+>«ðWöô ûÞ¬/’T!fK–:²çSx_w:Qkã¼ØJ·üi,ú ÞÓ-O§²Fñ²0z—Úá áe8‡Ÿ ßÿü@àá—˜*]a®@¥ƒHŸâ ÓÔMq«W?ŽƒÎqÚÚøÖŠ¥?†fuîñÌ^æ²vö2³äÇ}|óC[ÊP›h•Ö¼òßXüŸ¹}&öÿ©Çý›‹€9þ³‹€·µÎíQÄÑÌëFy5^öü½£Ì·Ø€s[Ï/jzpBÓÓ6'ÀfÿتAÁ6jd’  ˆ }BV7m|ÁzykŠ~þîöp•êu†2BíHP“ôW¨ß~u~Ô_× lšúõ¾âEóáùØ ÷”ü´¿ŽÙ¹‰Ñ7Ù¹áEUTÃ}ÂCn£ÎÆHÀø¹áE³ÅngèK¼’UÅîpéÒL«™/œ|½.œlâ{÷Ø&ŸNïç[u¬^x³JA 9ù5iʼ–ÞêTk`™÷> ånƒôÞ¯ÇÖãÞ.ÿEÊm±}®¤²ÛÉ¥ž cô;ûuÁ…^ ðaÖ“§žˆÇøl›–âÎÆmF‚{FÚÜÌB‡9ôЉ’ähùÆÒûQ¤«×ägê6{‡x;ZñÙ†XF2ÿé¢^{=ª5¯^N¯@•I] 6VãÜîd›uû+r£!£Íû±8ƒö¤Êßÿëbòà⤙Œ|ºú\ÉÐ]µLÙ´BòÕnÚ‘©1Ê}ž‚ ò¸½ýA[F3Ka$]6s‘t’;$~ë <1$wL•£g-M?úQ´ÆÆÌí¥³t„fNçH¼õX±bÏL/iÈñ{¯¾öfý”É ó±‚çrS΂frð/E#lf÷ì¤þrŠ8 õb£þï ’òMyN·€™EcýR/îÒæ“ß{è….5íV&=ùEÄH†ç dÿõ ‚‚kŒ>r«îÜÝ"ïcµëO ‡úÐ%ß}cT–÷‹Òö {´PPOø„Õ/¦YÝ^‡.eÜZÿÓ²ƒ˜3ñ¾dGâ)2–¨-Ú›){&쥅îC<íy-’<ˆ\ `ùCmžœðÚ/¤²ÜZ˜hi5ÛŽ&©ê T6ÛYiØ4Ÿýi^»ñÂ6\í¼~Á8;RE¨|C‹O¡; Ç¡1×#.äj't;ùL¢/Q.c™·u.×Pz´pù‡Ûˆgݼ·œÔPªØKž½–4t¾²¥Ô@& «@$O=| S¤Á-õÔµàíó 03ÇDþØÇî]®Í© æÁ‹cñ¾ÔWöY‡CµÒ‰f9bÒehJ[™5‡|íó•þ-Uܶ)ƒ€ˆÍ–'<ˆ†­+5Œ“³9ö÷ä`ñ§©¼´³Tà&6#OÛ8Ž«v­~y&ß9e(C¦Æ¬²*@§Ê:#3P±²fˆ¦r’[8rø;”;.ÈÇÕzÕ ^g¢Ë¤ ¯€ÌÙúZΖ¢÷(ÿæ ®Q$¢^Kð`™ºIf@àHeR…jXY‡ ‡ªú¶`§Õü¹öáá£x$2ep+²ò9Bd¡ø£d†3ŠíÔ`qÔÏÜÃÑšÚ 6ûÀJA“º2„QŸi&x¾Ìv0'd€(­”ômÁ¥•çþ»…Ž[1¬ßSvôJžvÄj³(KrI°|2iB'îlØ?NEðmY^ /]ùlÛþò^u3€iP+Íù`{›yp Ó× D³ŒæÆiï=USÊý²¥¤&ªžs4ËáåHïô`•||m›5ïþˆ´MÏBÿœ˜kH„ÝìŠtªˆ¹}DšîR–øß¨5Xáhé+&¸ 9ð^WOÁ2”I’Î$›WnÓžk+d€”Øjœ‡Û°BÆA7ò-ÛAAÌ$˜ƒ1WµÊ†àgh”ò ¡7*âU¸º­²çQ.B¢ºó–ú*#óx”DâÈÅgYñ©(Lâ6l?òð;|zàE"øWËPkÚoÏ3 K­¡X²%³ÆŸZÁ^™d¦÷ÂH…°ð$˜¬U¾»3AZÀ‰è–Š@bËœêÀ°™j3ÓG<ßH××uˆU׋i„éh”¢ªa˜Éº{˜ «ä‚*º´­öå}£_hÛ‚è©û–*0PIÆž]A—ˆu|­îÆ#Ýtš͸ûxÓû¿9×Ú$© -çÃN߇)‰äÝx«òJ° N¹å¹ ]<[âG2,ßͨÁQÜTç·\"BC§VˆÆÝû¯,0—ÿËÈ£éÛíë×jù"¢ …®œsf:äù®^Vô}" œè¼ä4¶OFnÖ앪W=´Òãñkò'uïËüM¢6Ðs>h¿cèÇG¥9½®ï?0îÊr¼l˜c›¼i_Xn޾ެ¶:g„(áN›Ë…¦¨³0"PD¬Àž*Ì–þŸ==-Ï!y`U1AcƒûÃÅRãˆÛ¤|6vf)ZiMNS;׳÷»”ÏýÑÅÒk ½!ÝDÿŽTfâͺåÎûãʃ[r§÷¼²…OƒmnËØƒ¥ò`¯D\Hu¦å$wóË¡RvÓÊ'&.PŒO#zæÈÆÇ{p{+gkÈ‚]•‹é†g8[ˆuÚÜûˆÇ“W„_n‹¯Õ×ß6£¦OFÖö‹îÏ’4­&™áù>Íõý‘eæt?Ô‹n²×èÞdΖíõIÝå}iºž4L[ªÁrá†ùšDÕØp¦9®<Õ‚U_Ël|·‚ÇIç¥4Áú\î¹@ 8½êä,ÌLcBE›ÈºyP"û¥·ßö}Ë*†õò*4…¬e6ÓžJ懺Œ´<1pÇLaïÂyÝyB {ÊÎ5ïÙ•ÐP°Ì%ü÷°°Éî\È)Ó>7Ó~²¨åINfq'+Ò‹,hÝt~¡Txc£&²K´ØŒîpÑŠ`Е‹ŒX\V…C šbª4)ƒ!Ÿ|œ÷“‚ÆÎ Q#€×˜NŒöÞV?в-v7á‚TSÜ¿<ܯ"yòIÌ®à;ýNé1ò•aÐŽã@ó‡rü*Aø…]80HÆýk‹‡KÁoÝ5rS6eóדñRµHž &†UÒúxvö%kÕǪ†Vêôp²¨áQâc¹B]»šSf$þOö¬Œ”jœ2¯NëTñRíÄw–ôžo<~²ÚÃÏçj×\Úѽ-¨jŒf— þFï ñ=ë|h àã%åk‡Ù›…Å2yݧ9zR*Ã'û: ÆEª°>ÚçÓ.7ÔÍ*1·ùÿRã~κRðÍ:œA5¹ÛÔÎaL¥»_ízÅŠm®æõl´ü¶ý^›¢ÛmüÝ…ÖzÇÕaö¼öù\;K¶ÎšÉï} V[CÝ—ê}ñ€O'áø+™$έAÄ/£GtQ3',åü7ƱÉáÆpÈéàt¤=SÛi¾+ƒz‰u•:HÇÁÖp}«pñ$þðîÒê§a檷Ú(FÇçw7âõbqEmjp8OgxàA( þvoßñ•pÂÚØ"á˜Ôgää{¤Wœ»ðK)9 ÙÞ@¬ÝamÔj˨èµ9À=É»mÈ|ZÅ Àè/=ÿ²s6VqCÕ67Ù]×\'sB€g»²Ñ¬²Ï¾çFuñ9DÝá+P&lÑü(fú,]4‘ÉщY-בù¿”4L/³'ìsðÐÈÜ4¬ÖüÓ|ömg;¾.F NL}(ŸYâÕå­Çú¨eà0p.Ëý¬MÅÅ´„ÏÂQÏw%¹Ö7æÁïÕåì•z˜X#uŠß°“à#?ÇWÅÃö­Z«5MerÌÉ›ä–Ó 0=NNd(ÕH³™¼ZÐû‹Óþ[Ü&¯~“q-Fïï\!ÌEaCFT#úTPÍZÓ0pÖ€,èíàõMâö¥Î@žýÃW¨i¿Ff^;Ž Âw´‘ZÖ\$Xì¡<í‰ÃØÈýT1Oùs©á‰Ð»ŸšxŠ+±NüÞóÃ]hG…™ßôTlÑé¿AsÿlÊ`faæü§”“á_ñ3'ÃÖ^©ù¿Çú²Ct׉£Eà Õ+1HÄ ½ÜxA–`€ÛZJÇÙ¤U¥¢°[ް˜•°®UG†šÍ°œ³ü ò9/ÈO? ÿöæ|nñÜK|äã…w¾æxåô>r_šg0вý„Íf—~Ï~äZþ­Í.ݪôó$Öº”ìݪX¤Ïá<¶È¹–Õº´ôû¶{N^¹ý(õó ½e• ¬®Þ}Z­­¿}t™E¨,$†ì¸?¸Íq«A‹°Oµ«ÛƇ¢äCŒõZ7«Mó¤Ü2÷ãGq[õšsBZ{€ë°á>¨Í·âÚšLIÃz¾x 3²pÏK3RûKÖ‚²zƒw.h†¬\‘v-k@*>Ø-‚tËl©uíy^ÄÃ1ñ”’3±c–l)^Á'cZFë¼Þ”4åˆÖI:¹-tp¬‘Im/Û ëöŽ·í «ß6÷Âç(#Kî})Õ£ÖÅþfô•÷ÎóýÇòXÌöNÏ¡žù­¡]£ÕìWäõn>lt)fÀs âÔøÍÇŒ·¥Ç{ŽgÌþ¶Ëª‡›Ý«I§m¼I¬Ø3±Û¡ù"“еÁ ,wÅQ/*ô™Œß[½ƒx=t&;x=|¼‘mg7Ë kãjÞdߌ«J}'ÜK–ÜàØP[¦*˜¤Ÿå7ŠçjÁãÞ§…ØÉ$`X5yhÅí†ý#õJß4ó¸s¿úå>öCý`Û¹EoYÓÛÛòàûþÎú厺½?á vp„i˜)¼ÔèY6¾u÷¤„#¾ÙûGõ[ûé†ß°ƒC„Ò $Òi³¶sÕ}ÅôºàE „WJ*\§£\pkícC­`«fªQ ²ˆk\¦2Ë œ!ÙR‚§m&Åô;!"òÙ&únÓU³'ÄÊŸþˆJxŸï«DÜzC£Y×òÔ+îP‡Ÿˆ”Ñ@ýr/°«>Ù¤¤Ô~dFU¬EêX‡o«SûúKÃ…$sffí܆(yêNx›ÈJd¸~›È:tU[z_¯-×+kŠ~-%ÊÚ&Ju°{™Q-Ê™µ·”>5tRaÀû+÷ -ž}J-Tàz¿NZàð½ŽoI0“‚/Ã$LjpÞö`³¢K¬×'œI¹¨41]‡T1Ç(Ép¬úy@@'úC|êYÆO//Û\O˜|“æN“a[¹úž&µ/w¢®­/çO-z„NK‚Ž­zšÍYÌÂì–•vJ†´S°4áÁhļ†FRÎïÏþˆùØH]ÎLJ›^ƒèvD®?ÚòEì½1QÑ£ MïpÊŽD’4`e¬¤Yw%ðB^ÆåîCefi×X¡Íüâp±£p0­=ÝtC‘ EEÊU›q…ŽÇعMmùUv/[^eÇ´ßßýSSͱ€‹øEÊ“ v8R?ÖãÊ (ï¢Z¢y„u=ò&¡Æ íp•ö¸èãuGpƒû¨™>¡)M:(RÍ$ñŽóE²úûò~Öv¨ÐZkkúQ}6øÁ‘HwpÔÁÉl1ø0è5ôƒ gov”御›-XÞv4V V¦ß¼MÆt,_²gvWEëÞþêú¸ŠÌS¹Osšdtsß‘²j¶ÔÎça-.OÆ3‰Õv$o3µžátl¨˜‰ÃœXwdCÒÿ)t߯2SO›q¢À_ XH~—Rl¹ºÐ5‡bÖ®AIjáEš1?Vï>ÇŸTìs®Îp3N7ý™ì3¢\çĪM] 6ôóýòìÍG¥˜ni´â IOdÓrxz (µ›Ž\Lº?¸,뺽k‰…ÎÆË`¥=ß“[{ÝQK°|êùyª Z•ó¥ÌMªêŽŒ¹êT/ä‚K`{Ƭƒ¢F „f¥:5Ö"ÆŠØ»È)˜Ãü} Ü©tÇrpÿ­AEY®[¯\½ô‘O{zB†óžm³»w ›ÚÈ(ù—×à0¾j¬†÷+rò]o/«íMI¸ìù—íïOUë":žPõ$l~ܤR#p((ùV¦¨j¡åYÝç×Èý†§Ú.çŽîÒ×—[çA yí®Þ],Þw²íik[„¢“¨Ä!ž¥ÒEÍØkèô³½ÀÍ.:´o†OaI qpÇÛ!÷…N¦ÁîY½};]rð¥Àcò©h\‰ÁýP½†–øÛÕÌíó×ÁHZÛêÜŸ/t嬌 2ÿ+tüß%V6Öÿ–2þkë/'ãÔúÛŒe­Œ¬¹‚ „ÔÄ@‘«„¡üÉ÷áÊÎÄWP£ÑY­3ÑÁÅDÜÜX 7Í1,·l·<3c¿ßù9oÿùù²eþA–0‡’Ñwè4û™¾£-3é·ô™¨þ]û©Ï-‘uÞJ^›µáùû^[Ã1¦¹{±Z‡ú[™s¨¬›ý¬þ}LìtIÿ1«ŸèϪ巡۲˜¾”NDÎTÚƒFàF ÁÈÀûÅq·¬–ó ÑDüÓSJ!€AÚÿ.’]òFù¼¤_ˆÞPü¥‘‘›O JÎD*ÃǸD®P%’¦:g­¨€D °âþÀk™©2^ -‘Ømn?[ý uûÛqÒøÊ©1üZTöµ tš04þGÇôƒlvu´¹ŠEéþ9ö éëÿæWX‡©ëUÞ#\=NdƒKl±O0§è1Ë’¢þ‹”Žôo™rÿÏä¬0m£÷ÆøÉ0&Shº…9oF¦bàHNŠW»î–»ûû}ßEsƤçâ¼NmÍ»$‘ ÔKGO5 ïÑíHŠl–Úø/ó±4*‰¦!ÐUOÐ 7™“é; I<^de UÖîH-è+­(C ÄàWŒ®çÏÏY2H)äAÆK©Þ?Th,³,¢±xE³Ôb_Ýû;joÆž’ŠÓÎ…Ê­ƒó6Ïù•χ-ð¬†m¿¡v…#(rÚ!›Za?¸°Ø}‚êây{N‰CŠ •Ì—²Aa#« ºJèDgp„-¡>à0lH>ÓÍIr°CR29XVq(Äí„Ê\„nµ±rªN˜?Ba;˜?ž#ö¡ÙÖ¡,hÓÏÊ½àž¯#(&ŸÃÏBsÝXÌã_Áx<§åƒ"¿3â®D/J<…D@ôÁU’Ë ’ÅÑÄúñÃØœ¬€úq<íIï¬îfÑ™Š;EvßQ!E³,ÏëXYi'þ*uÏ¿ÜÛøN¥'EaÇOA0ÖŒÇ~(¾m….½÷ 4ƒRì?êä4—+ÖD-*zlN*zš ˇvfà†f\5tTH ¿Æ·¡ ²™5!£ó d’å7Šä7ÎÃ=Çóäøñ9Suƒ9BÒÏYx-2Í<ìAN‚ÞÑDhZ‚8¦°õ£¤Bú¥\è^_pKa$£_x åŽÃÊ$™dìWÄÛ þý&Ämm8,¾‡¡peYÀ#UÄÒp è0èl/‡ÖPœ‹Eó=,6up¬˜Ž4@"%QΩU¦Ó(òUJŸë#r}.;'Û S'/Þ4<'´rñø¸OfN­ž7þ‹ƒ#á÷%g"3Pi>ry9ƒK‘eI m¬‹#ÃÛ µ?Z í¬§½šò9K_Ëå·óþƒy„þœÛ;®o¥ß/ú=¹šEü½š š3Ô•¢à7Hªàïõ'‘¦O´âPCÂL¡(NƒMqDÿgÛ'ÊšÌe¹(ÅGÓ„°¦Á®qL¨­"^T–d5SeëÕ!‡Ç7&3ʼ·‘$¾™´_¡€d­'€î¥²iòò„ ªÌþPÉ.1™ûµ.xù±GNúícÈz*»rÝ¡N;ñ ÑšLŒãx¨Mrš¬€bOÐ ËÕ:ƒôMÀ*;³´B‰dš*VÌ2ÔKá¬ùz°©5źcÁ•L˜lº’H`xæJ·Ñü?Hã¹é<¹(Š.7,ˆÍÐíÊÔ‚¦Èˆ‰²àð É6ùMü`Rì€ÃÎÁA˜XÞ¡0:Às²A €0ØäO{Œ±ÞUMh¢>-<3ߟ斊“oþ3yfýŒz¹¡Œ´—Pa´òà]E®yH©@eR@™UVºYò0Êb›®åѺ´-„ÍyˆK ³Z‰>P$¨ ˜6TÉãåÎ2Zf×cìØ¯²–°Å!ãZxîGùK¢)xϼ•e t"‹¯ïGµ‹ñµ~üêš&!­ñÝ1M‰ª;XŽPEÜ€èÝ÷\|Úþü6mØ >ºÅâí”B(‚BŠ ŸS'MËÔ[aQ1×fzä|œLé-óêl`#*Ë:^ä÷§qÐCƒC) ˵¾ýRÁÂN/f—u `ó6QÛOV”Tw`tÊ jú¤CNÔ¿ç—¼ÍÛU£ë4«hqý¦Ù4’@gL½È «Êâ4U‡³VÓ×Hˆèéò´ƒ;+}¥¦f)ß4¤¿8sSÛ‹fè# Å[¾´§¨À‹xøÔK7egf®ÜV‰_>ú$¶¡Ë'Jîƒ Zs™§e|Ônçߺ“Á •õÌEŸÈô!–-àíHk!Eoa¸…«îÐÇÖJO >™ {nâ¸a–ËêÈ)óHÜÿ–3õÑ"jæÃ·JCõú~Öç½Òجr}ñþE“篞„ãdKµ€xÅ›îÀ&g—¨[RÍŸ+2v‰L«õÌ '÷Cðc.žeŸß‚2 ³Tݰ7wM­8°q³pº»–·oèdîÈ`8Ò9ÚŸu•g«ÑÑIû¾Gê…ü® ‹çÍ9!\Æ”]¼èLg_=Ý e^µD˜B³zÀeH8êMFÛ¯võÚJµó^Ã颿+k…LÒ°Âöôs4ØáÝŽ<öTĸFYÊÚº*”këà~4» aæu<<í^ßõ//Lî­/D%O½àè}ÝoMß à"G=ÎÏÿ ´Ÿç%48@À[а‹ôòK]ýÈ(íŽ}HïUA+½(n¼ -¥Ýð´I×Ëú¹$Áüi~ˆ¬Šè“î{”2ô<ëLßv²oxMQ )½õg O¸¾ö4ô41”X3†FF.åAð/xÈã¦þ OÓøu…ŽÍ­B™g5ï.Ñݨôjš{Yåœ^(дJõ}r™ö°!<žeQ–8\‰ŽËΞòœêôý.¡Ý¤)±1wj.Lþ¥tô 1ÿ ¨¼}.Ë8’o PËzjÑ_‘›ej‰\ë\ŽQqˆãá”zž‰l ‰ŽÇɶŽlFœ”8ñÕ±;à Ñöå-#·b6µU¤fÈ%½s/œ9½•J×Ky%Ó8òlFIH›C¯0 'žŠó`ã›qJFbupÉÈî}Pd£·rË_Qíá j(ð@Fj[#çœÈ‚N.™¥–mÄ ßî9¯ÒÅ9]ü ÌøY´áÛN °ÉÎõÛ±Ðlvf=œ ÷7"Œ» ºç’&£3 ˆaâÜJ9ÅfÄNNvêÖ“áeH†dT†˜‘/Ë.dœ™¦(Q¹>^îäâ´” Coi+kŸC7-cÖìï,ìT´ÅÔÕpB`eE°†Ð7RŽ¬Ç¬WÊŽ“b ¶­ºxï–¥eŸ2ÚSiØÐKÖŠy"Ü9ÆZºRë©‘àÖ(Œ mЂÌnò„:ÔQ[…VœÅâÛbÉ/,˜YDsOƒÁÃéBô2ß¾ÉÏcùŒ¬¶ëYVX-¾RN(ƒCQýðÏĸ@@÷„ßPÃ¥-*ÿøräÊŠàA0Æpj7¥¥£Õņ>Ÿ¢ÓŠîÒ‚e{Cߣ‚ÎÜîðî´"ýh½×è; ‡+ozæ¼ÒÚxþF…:)d¯æQ{4è×OVˆÏ°¥™[b„X^Ùþµ¼ú”bÚ\N•ð6úì餤aB.áûe`¥¤Yñ2qëEAÆÞYêÍHl|îæˆ–¥XªP’ ZÀ[Iàí ÉAÇð”KÀ?Lü+ÁÌTœ!ž¯y?#ÍËܪ=!Éy‡x}Gi"Ï}Í€2’ˆnÕî%m?&¦7} ê7Ndé9,`ãW®ê÷mZj­¡€2FíRž ”(¹©Æçi©˜Šç(oƒV5ôÒ@DQ­³êŒou¸ÑA'g¯‹YV3æ”>_ÖîÙ<»„¢,ôEô³RìB]ˆ¡«ò̽ևkjÒsoÚ•o©-¾Ù8ë]‹åœîƒ¦¢ˆüÉE¸'¯5LÄÎÁr)xæ–ý‡UG!«?Ì®5o·¦¯Cw‚“ÿn­Áü~,+½áO†|ZÉ{v¼Óº¬"U&"[¶Ü¼x]­Žýùùzãìù È; tx‡Ù½"‹Ï†y{¥í÷¢+Öç‹çYcrj­Ç$^›ŽvbŒ; _ÞŸÒŒ3ºøÓмހ Y¤}È¿°$¦‘Ƹœ㺈éÃþRìÉ»±ܨCfÚ/I×Ú¤rCUz%Íë 5˜žC³Lk¬=OsäÜX4{f&èð E!þˆ¬Ãì •?ÆÆø¤;‘+ÿ™nSm'šp!‡®ôœ˜) ,|>з4„Žu•¸SG:.{µu2G–бîðK³…róXûÜÖ‚ J9¾õªz]’ÿ¾Êjh0ÉLÍR”½r#¼Ä<ÍBaÈçûN¯/ã$¬l¹~Û–p¡GÒóò4¢±¢’l[c•UnOˆüˆýSSß×¢ ¹jÿ$o”'¾jÿ£ÿë=ƒnµxmŒœµjšzôøœêð'NøM¤íV̯¼ÝoWÇ~G‘ˆ‹äWgÝò@Xƒ€„$hÓ(­ƒ5 ÉùÅÍ~,5Ý/ènˆK :ëÌ«:¨´[x…<1öày;ð¡ûhïEß{©û¶!Ò ÝºV{\ë/û‘j¦~;ÁE¾è[}_1äL ‚ºœqÛ¶Ô:½Ú¹¡3䬃½¡åŒ¯©ºa8ïã 4oiðö]ÜFѱjEççÈù÷úI¦ƒá&´ÿÓgUŸÝÏÿljduŠS¤ðÏ u›SËÙ9Ñ».‰öxüUQx¾» x‰ Áa‘@N'Ôq4hè e““¿˜ßTç(Ö ]5î2þÖo2E…›~âÊ ÅSÙQuùyî翸ò@B:6ÓxW@†îÌÕŸ»œ¯¬´HÀaOzKNGzÑX*m«whB=WyÍE6Òº ¶˜BÿÀ“–óóÍÚˆP[Ð$œN¡Ä&cç'¥m]b'Zì!˜°¤ÊÆE.<Ì`âʼnX7Ï”éƒ]ºß¿¥H0RÅνh±Uï–ƒ†åùJ›“o¾+•:kBlÆYq,Q¯|—QT$í< €i¿ÿফ>»¼u¿ëÔó;o*3êr³¤S»Ô¼hì^Ñ{ŒÔo~À¨$ˇ8A‹˜P~[Êy(ß|zÐå0݈^êˆ9L¹â;VÄöüŽ9-ÓU×Àªôæ –Ë)^Þ+ TaÏx=…ÙVJ)Ô¼039E´S.}lFK#YÚpŸŒG€QÈ“»4ã„qV!çƒeáæÏâb‡ÖÍ›Ö ÕµÚPãèl¤LžC¥oö6¸bÇÙEž½è\(brèxÒ0šÇä>7­„ÆC¸´¨¼7<Ê›<ަ¯7q³–‘“1[Ù‹}lO²¾yˆÝè⋚70Wv6uëãÖ{^f¸ŽÖñD}›¢ ­|«ªtÐä £.ld¬«:ê³Z>øØ/ Áݨï#²@Û ™bÓÒ‰øé*0†ùöè¾»¯’°r(¬š#“£ˆ ÂÏ‚2º[D„çÌûÖ†îʃ>·‚…•4iÜË¡;®{¦Ã.€õöÔ…ý4Ä<œ7A@•ž›âËÊÙÇ­±ENF­JÆ› yª.5× yÔéáˆÇn À&f¯¤ÐsëP(Òô™ÈÅ4ùZ…+–äŒ)¾2iW¨K*~Ð-¾ÉFK}¥+n'qÖENŒ[Ìm«/èxÿѹ© |ÀÖ›GHžYd®U;5Üôõõ:z–¯ú^à{…Äá|1?¸_Ü8[h^÷Ó1ÏÚÓ ¯7È6)Sk&1íðRð4Å™é£+F=5Å6Vu" AÅÿ;?,_àãs½ý2ì[8¤^ýNåçn‹ø‚Ãà 5!®cUJ›Ÿ¤]•><ßü*ÞØ0僪çX_Õ'ŽOµ‰©nì{CåqÛ"Tóœ­,~k`®lþQ)wïøÍG'î ­*à†ô˜=Ž%%KÓN_X ,bަ—ÅË£¾Â]¨ý¦u¿y¨ÌìÄ@ÝšÁÉ‚Dþ›"=8o²M«!ÙȨ2U—ôrª©]‰}ñJ˜õrSx¦‹ICwâ¡¢¾¥‘MÕWêD¼B#?~VôùrÊýø)›kC¸†¼ Ç.ߨq1’+ž±¬ÞÔQÃìý9júX/–¤›¨´ŒŒÛžØ½‘u&I€ãö6Сq¶X~Œý;¹š 2^0Ý»Œ±p(b¼ÿškr0î9z $T£†¾Tˆ]Xˆ7ßÄv¶®þ~|1:zß"fù¢hË» m­Ê?WN²AþÒucè)µ‘±Uéò&rqK0\ÛVÿ‹oqÆj`|®‰ÉºC†$Õ2S‡†­õ·¿Þ¦JPA¹”öáö<¶û§#t¸yÜ®&Ì¥â¹ÀIQ½&¤Ô_Gpο=zx-ˆ>+«mÍ:½9HB¥Ô1z‘9S9Sxã<¤ë(¨ÿžèƒ8sRn¶oiÀ:¶Ùˆf©`=èÞ¼<.ÌÂ@êò”zO¬`ÖµŠàèJ ph&ún@SV47VP镇m&⹩e[~çÆo㙜|sùª]¾QS­}Ð(ºSTeµ‰±ñAÃ`1Mü¯‚rî1C•Lÿ*Öî#ÖS8îmâ^ÑëÅ‹«¥÷J%VîÑû£ßy¥W¼á'Å]tqZ´0th["N9ê t¹ucÀ¼Øš„½ùÐÓQȾ“÷Ÿ.¼WvY_çS-—›­þ€%Ê\ƒóäÉd6 RàIKâº"±*A›üøèðU‡h›«>ïÝ1\˜Wyi¨úi—!`Â0ŒŠ BèÒp|àD‘15œqåÚ];Ýï”dâÎTŽÊé|BŠ\ºŒÇ_§¦<2ñHÙ}wQ>9-#uá„,uÖÑœ§ë€ëÜE9Z¹ßƒ–õ‚B‡†BIÇIÂÝá„‘ºº›¬PØ™y8~‹AœÔä.ãÎs-ömÜZßxNÏ'¸KÄ:üfœ®Hætië![!Öƒ ýúÄ¿ó®¤tî;ì7GôWÉÌ/{Ù‚‚Nž!ÝV-Q:䉰®N©?]Ã}ÝJ"Ñ©@}ÈyÓw´­¦ü¤c»€‰X×Í(%GD íòœûÇ ë„ê°»%öý$e1US«ûæa«Fe[F´ZäÂ2ÒÖ+aA¯jBº•D)ôZ×™ #îžCÎ׋•Âú±°=— oñ›i*O‘ À_ZöZÜ!}Ó&¤g;Ÿg grÆO½×{ Z{Í Ö¸ÙËH!_ •Yüºòõh˜È.…«Â ¿Æ“‚ão!Ï(H42Bõ×µcÕp­ÊnäÐÙð·Ûp*š8‡[0,ˆÀ/y½‡è¥lw)z 4ã{ûlÀûÑ:ˆèzÁ—©æRÞ¡‰ Xnå§A{X/΋}šV—6) SåºëÊ—†þ˜3X-°™M&–!Ž–@aèdç=-œž×=u ììÏq‘Ôï‡hdV§¬ä+†žT%õ—`SðmpŒþÝ++R¶'"}Œ,´W«L·7‘‡HÜŸŒžžÁ4*…mûð¹çÓð7¼ÿh'‡Þ“¼#§Ø)“Û%Ó¸òz㦠?Q‡¹Óø! °>º®i]5ë…›PŸ³ùئøš~%„7# ÛQ"µ¦{™Ëð¼³P }ីèÿÚ|ß5«W„ž`Õ³]Ê'<‰<¤ÐÍõŸJª ¤àvçÏ\• ¼Rån/"玅—¸:í ±ºíþ7hâŸü;fÖÿ&Zp21ý+š`bþæ¥`ÛþMhA"5 L ""§ü=Oõ~AE pÔ º¬)tÉêÜêðr”ÚΉH©4µ]Þ Ý¬ìüýã‚_ýéØ{›s“s“—’¼´œ¬wCþÝÕëú9Ôt1Ö´–{w$,–“V;Ž—N<›*kÂæ Nbý}pÐaÛ±Tþiv8/p,Ò|ÿÝ7  xÆT6œ\n@Ÿ|ÃéedÂásr` ÷ @U’Jëe÷&É]šÿò~ºI QH‘ú·’×&yc¿ôzÄ„-×Èzìq`xÿ‰¼Ðüáy°ðû+ Ö¤„äl‘"íHœ ‘€fvü¥ÄY ´‹å…4ñëj€<‹L:wxüåxü]¥£—!ëf£_/Å‘FóbÖ„5@E©û>1>öPœJÈ =“˜±˜sNJ‚FIA] ý}µ^¹°å:c¨ÀÛéÄE²BÐt(#ûp¨¼vû×Ãég}næ¹y>èBô1Pàtd¿FiQ q 5æ ´$= ¥oWÕ+uµé@”Τ“s"ÒIi+Í6 ›8m3‹žã;…V„íϯug³~VâÝmmsî _/Gª+†,§”ddÀOý:Ùƒ÷Ïû¬C:‘È4ÖÉ%˜ök1H`·ÁîØkÚb¿/q™œ}ÑmÝ.Ôˆ”¼%O"=†ò!ÌŒKqìTR)ûˆ½l*Z9#hÜ~ÏcÂП,”‰÷$wb’xÏŒýÝ0ŠØÌ›’%䀽½»è¤ʗ錭tºb¨wŽ))î, tÔPýX8·`P¸l\;€SÌÃ/&õÔCÊ”…ôÞnÎî~ö°„$Æf^“ÇN}{ØÚ£ˆr]j ¡4¦¸£ö!{ÙGää³”ÉÅbû9Šéó55OÙR(Þ{b„²~FaUž3Y»¤hEIÅ. 3Ï4Ë~ý1X@KfA/‹–tÖðu?.àù‚pìô´‚1¹~3AÉ/§î/–2>ìnæïgÕw6x= Bh·wÆU¡ †iŽþ…ä)Ñéù‘«È–¿Ûónú¿öþ9,öõ¸¢ÃWÅÃëê¯lò³hŠâ ž#¥#]¢;#/Ï|!8\Xˆ ž„ögg‡+ñ÷ÿ~®Š¡êA "àÄÉn"}[ý¸"ÍKÙ±(Ú¥²´’|/¸²¼/ãÔAèÚHNx1;=о=æy"Ä–ÆL¸Ò$¯Ò[k9éÀ–B8e[0` 3oú'·¹Bk¢™‹¡‹ë×àuÖ7Ÿ¸7[TÅ„<Š­ŽÀMÌžäbµª³ËÍFUG;êN=*èAqAáÓ‚ó®a4>[ý,JK×®N;9 «|x.vg¨¨ÁŸÌ¦Ÿ‘áqâg¤EÁ›¦ ‚TÑêhC§=D5°6°xù1Õøªæ¶Ê¼ùüà˜ôhÒÎ^-žð¸‘lsh˜]+¤4T+ˆ6}þZJiäÞþ§øù|¢¯ÑE茼¼Šé=__íNìØEG.§Ž¼¿°ÒD,–É/JôäÅëPöø€‹@Èă pÒA`žÒCAR Ø! .s—âE8j ŠùzZžNî¯AˆXºœtf„Q.Pí`á“‘圌=2úúaIuôšç—Ä= òyqÝÿNˆïŠÇ´8áÔtLÓÖ'ƒ,ßÊê'8@U’‹0‘Ý‹1*lãWNŬ·ïÊg <Þzþ„B£@!Íô Èj®6BÙîZáFµ i‹¥TíyîšMÊ-AO|42=<[ª™²5ù ä‰÷0”o©ZæªÏ£P¦òO£Œ}ç ÕᘺñúŽ×>er(™U¥ZDðR׋¼@qª›à&ÌNì1ÕxÔ5åKϱ??É‚$c" Ðåju©bLˆ®CÉ?¯ÓÔ°³¿ï¿ FÈ5ï㓸q+Þ¸ÊÅæH¾ŸÃ49ôÿÁ¾x>{:ˆXêƒW¤–+^yN¼çwC¿¬ëÉï*éËã/J[j£L$PŸa³-À@l@r•ÀÏ“!Ô°SX(® ÈÊ ^>À¼Ü, F$xn„ 꾚±Qs€ÊñGŒ™ö2T ›§Q)™”oÌ‘HB4"ÎãÄuhH ú€‘J’%íx÷àÀóYó47z¿4œˆ¥°„Ô$òÄäÖ`íÒFNÞ%Gdš/¶s(,å“ û"/°#É=m²cŒöÐñ¬È1;gQ[é‰.á –·uÔ²NeËËðiúç$¬ð"öè¶î•ŠïŽžDS_C_jŸä¾ø}¹ìK#;ФÏî/îw&ÄOžI¡„qÝŸ!)žº%‹§Z‘9µE†¢NÙÑ n\óvr\qÚ­nû£þ!ÈßÓÍHÕ‰m˜Dg.`íSÔÚZ(”»eSRÓ®c—çÛΖ‹¹†"Kxi“ ]÷ô"’¤´¬UÀðÝ·{¼\RÝ#ÐÀ!ïNœ }·õ0uüy)7Ê«jnãKt1Z .»œŠ#!ISk^ö²sSxžtkú³Ã·4ÜYõ2¤<ÙÚa§çÿUv+—%]½r< ÇŠºÓv/üÚI^Y?!þ6ßq¸˜¯¬Öu#Úq];è¯!K J¼{ýž(:ô\3»ëèº*h§Î^pJGÂáàKYßADsÂVØêËDͳi×÷Ï¢3:i?*Èä´ƒ’f(w³Ôa ë/¸SÁÈ›ŸuÇŒõñ=ÝÐu(GÚHLßT˜Â>ºuuËÈ©AEÎ*ã[*qBµª8ó°ÃcHäLÒ—›Út? ùûÊ|ÛØVY÷Y©,<‚‚îå—¯[?K=dåà.üp§á{Á3ç³Àг «¡Áùbf|Ÿªy²kFɤšâ™‡ö€ŽÆ’·nmwù¿ËÔ&/oôk§gW&l­ãµ9Q6|rÔ^++ïL‹kˆ‹ëOƒ¹Twë=GƒýÛΌ奱ò±æc\¯Ûð¯ëÔ’‡< È=ŒÉN*ø’”åæ!ÂÞf:…ÚFõÛ,% á<”ê2–ÎåŸ×‡ÆTÏ1ÞŒ¥éÀݯ/Ë ],=¤*hºôü:FÄÅ]ÀO*žqÓnÊÁ¤´ƒ †â’Œ¾4É׎†›ãPÒ@_ bßIlkE…ìPyÚÑË:ŒÎˆÞâíaJœ-Eŧϖú¦j©Õ!0Åá®ñäøU Žá¹™ÌcRÝ“‡?;™7Ø×³¦r`^ï?á~ “³O¯p™GÈŒÖè·±6¨ªO«ÁòAT~†räÉøø½õ|[´rSk‹}=­x¨ùúñ,=õž9|µ°íýúwÑ(ôþØâ&åb}®N>°^€ªÞ+ñz³rnüZîµû¿Ó·ìð9þ+laú'u€™‘õLlÿ¶°ÿgE_{dq´Qɬfä$Ž~Kœ,ëÜË 6nîÏå`–¶èÅ%IJeÏV‡?YEjDVqg‚ÊC•á]DVßj¹áŸÔÜ.¾Jbžnº)å´Èñu ÏkŽY¼»? *´ª\nå³¹þVx¹UxÆÔøú„ÓfŽ5 €—žÍ®wLŽ«§ŒŽwœ†ú‘ÿü±ò¥ûì_*îÁr¼WxsBêt ©”îçûþôtweÍççK%L¡åþ¢V_ ì~BBöÐkãJåV:š™1%§L”£W0âôâÌ/‹–¡3ò´ÑAu$]Ö¯X*™]ÎT±˜ÍÍgÂLÛŒ˜˜¦Mî‘àüÔ‰ÿÒqdu&œ$Cãy´\¦94®ÐŒ›Òƒ05^ƒãg• ç3fq™däÁ%Žäû öÙ¼‹g›ˆ Ü8¼Š~'ϵãídôSŸ`*´z1è†dñéX3‹Ì1ž€ÃN›S6¹‹¯&öJƒèTŸŒ=i}Z8Xy̽à碿¤Ïbû’§•ii„ ÕKîör9î*¨ ÓÊc±5ÏPâ˜qöèøy41‰ >Úk+Õ‰k—®¦‘Ê>¡ÇI®vò.Et )dçCq°^@²ý?tcp¬l@î‹XèUGžK8Ñé9$Jjc3›ë.è§·`BÌ_+ º¡0ÅNèÒ3Ì[‘%³Rëò¨e]—9]Ü”Œ44’ã½½FG/Ñèèáê‘•r Tœ†úK††s¡À5ÖQ¸ebGc®¾ß… ÓnÈáì£sâs/7ÆSĺWS\I™Î*DÐ:9£CûÕ-#´‚Ú¯.;®êy~ö|'XÇž óâT¾|  ‹Wzj¢g@ز_€6k[L¡7A^ X8ÐFÃ…±"ÄÕ¾zà,ZØA¨D—Ž8C¡ø¥† Ž!ÙêpížÇ•Ð54þíîø»=&Œ­ÂÏGžˆØˆy+5¼LžоçåÑ ­Õ†çºÙa©!¼ÍHRƒø aЙ .tH0©Z=h yéMîTáËPzf[æª20 UO!õâø÷%ÉqÆU˜S|‹º7½¶&LªÏgøÁKø)æO?Ófcˆkc¥~Û¶á·Ç¶•{Çy[ ¯¿-Ü;l¶·5¶w}å¯Ïïg¯Lö¯˜¸Š Ãà*ÁèÒËéGyù´íy˶ýpÓçSbx¾Dß_åõÝÄ[;â»Ô-cáäÚFÃûbïÊ}Åð^!‡h‰Hfb­¯UˆL×AÅÂWŒ›ÛÂtëÈ"ˆPÎÀÇ.Õ ˆݾ¤L‹&ktL=9¬ YXå`zYÏÍ.ñƒÀÊ®íÖÛáÇ–CîÞ\h0\§~ðªHo¯~ŒÂW61·¿Ÿ9ÒÕ嘽.Mðç(€÷µ¸Œ=ŽÃ‚ „°Ä5%·ãÒTÉ>ØŒ”l±ên6å˜$­zm/<”~%ñ PÌ›eHÉ2Vd ßW”|É€¯)Ÿ>»§¬8«‹3SRðreJþqÆ´W®Ž‹™ttéªÊÕø>èŸÀ[¾{£¬Umñ Círÿ‹p +tíSëbJQ³Ž>e5¨? B{ÐÓŽ2­Ðx׉`Ùc²Üpgð¶Ø‡¦¥‘>Ó›*NÙ;ùÞC•’:^–ƒãrT°$M_°ùXsõxÿ+æc€D#PWœf×Ö"¥&›úØ¡¢GX¥?}¦,Ÿ Ææq'Ù A‘s.*ÚXudGB6òØ=0rý“7f4Ä»®UO!àbÍßZ³×vÁ!Ä!AzúªÊ•.`*#Ë*6áO51diªÕ§Bm ø#3{y&à X@=%K6DǤôâAˆœÌS· 럯öt°†¯`{dds`G4Šwé=ìzF~~73Îøì,IYp/éDó ï©ª©MÖ·že"%ì­õijš¼°\ pLlϱPã°[dd> gVÍ£åzø ×2”,¶hH‰`Æ=áÂXTPßÂEM™ÂetD¡z`J.oJ®@<<ÌêÂ$Šø8À’a Ì(V V•° E…Â7!9žç¢¯¶mýìgµ5³í¿ û,â}–ÚÉÒ—Óü·)žàÇA‰L›€ TÝM„lT ˜8‡ÎìÕÚ`’±EÛÖ5 „hfc6úñ <ÖO]‰Ë…&b¿O2#ÁŸLÒ„¯æO‹© šÉ«kwr»²²°pǼárƒ´˜;˾ó\³5a£cÔ|ÛUßÉÊt—j-žö‰¼Kœ8äU…8 íûp³!|¡ÃmØñè{ËöŽ—·}‹µof2Y¶E\Îèú–T§(þ¾hª# µÅ0LnŽuM›žÐ†oܪO6­Ô¥")QÀ”ßÈ£»Ç4\ëbÀ®ä¾-æþq‘‹ñ°{U¸‡Iyݰ³!ý] èQ,QâÆëµøl¨®pªˆ6ò~î`F±–íõ;nƒžv‡c=ÕV(ç=Œðb,XxbÄ‚e°*‰†!geò¦Ê*í1®hù´æ¯ê®HÃÚR‘Á×w‰§øÞÁæyÊø‘©´×ãSÜíJ CÛÉ|ͱ¥àK‹æˆ¡FF&ÀcE`’i“lºŸ‰1gŒ Äœ,ðQ÷u½Hƒõñòã¼â¬—ä£ívtôªÉ[áJ ™SÊ*ÊÃM$ɲډĉÚôÙÆ¶3|õE=:Ã`fßc— à ì°4<ÈsuWO{}âôÎ ¢Ai×€ŒÙg†íá|³wÉ/¡5{ñ.(“Íóº%'Î`ßý e ˜çKޱ¶i~pMÄBÝu÷³ƒhkóÆnˆ`Ó扺éø¸^̶!Øb‡ß¸pe~‹C!ËêQŒpjâ`j]¦É™I>xƒ!#TŠf0ËÅ¢ïÝ:ÇÎn׈ٱ<‰€5Œçr…hÂ2”£ÚÒ%½®$&«Þ%ŒdLíÝ#ˆ¦†Ô¯à $ägÈ,*Zµ&î@—b€½Ò~ЖU1Ø >o*I?jL^Ä&CÓ}7‰Æ&8m|Zc±^zÍ÷É$² Xç{9=œÝ,¬t[Þ3áá¬ÅÓ¿fÃÆ¶}~†ÿÒ]ͺĜ‹›ï .ŒÜÍ2Þû lYލøoÂeöÿž¦Äö?=CÌ ÿ.33þGÔ-melq4¶†„?ãþ‚C)‚Ž$žfžtLdbõý ʨ› ôãiT£ÚrFl% Ã#z£”öV‰¡$ÍŸð/†Öøß'»­¥¥^%¡‚I°FžŽ7§—NO*ËËcü¿ó‰[‹[ʨóŒ?÷gá×Çt¾UDͭɇNÚGðÚöÆËlÕ-•/9G¥XݵNèµ áléËŸLê¹Ï-‰çùN¥#b‹æôòs”­k(ÂS’q†£/¹E>¢ö¡|»÷”\™æØ?g˜¬õ¿,.’éãh‰&0œ1ü?_6VžÎÞivõ3-s²‹¹q iùÚPˆÙ·‰²$¦J˜µ 6ÛÇ2pÒNô¾– ëI6©·:2%¡Ò…çûQ¶æãÔ§4°æ ã"îæGû´ „k‘ÓäÅçEÖ|õè\;ϱw…Oï\^vékBùéέ²»Õun)hj÷^dñù_ÂëÛv»Z*aWcôoþ¦®ª¿œx5ë)“a8d¼’íÄÄfþ¶ˆiõÎåîjñòßv\3UÛŒ*!šÉ|ârÒùüh§ùý•i.^tŽêÔIÙii-49Ç@ ²´/=e=YY|Ó'-æVIŸ@‘ž¸BI7‡^©ln.ßtJŽ)ŸqÏÕ(é`ä–jÑÇ“"•ޤ$3†n6-óŽ³ ä8ç[\ ïa£µ+C'1­AnØ2²¤XngQOMÔNø3*6¸h»¯™+©Ç•Ñ  #¾ .]“I# Ð\‚§äÊþ§ÍOQ“®XPìÈ¥™ÀDÁ·|FùE°D0Tðsor*Õ-¢Ø»“Oùë{@Ç”¬ÒDpaýè0)¢}YG9¨™ý†ÐÕ×ìyãqcË%«žR=q¤©¼»ž×ËáÅу’ùÏrË›±M«Îu¯Š:eq‡ñØ ߺÐÕž+,››¯ýÕûDå.L_â@èrЋ¡C-eî„A™ƒI Ï_ƒ×~Z³C4lB*Áá žÂï‘ä„<ÂtùEþa¥Qk…’8\ÄàKùs™Ô ›.ÈÀFçÜÓS›¾˜Ô“æú™#蓊ŽQ‘ÖÜ3õinèöôzGí„#1–I×á’Þ”âMÄúaÊÛÒ‹iôfôéS=czÚx¯Dm¸?Î šê܉¤—W—$lïwŸ,£‚}ª  ;ÖÌ»põ³·*y­o¨ÜÔVÈ++U~¦­/ÜÍHq †Lþªè{¹Ôî/6½CӰݲùõÌ{«¹¿YtûÌŒtxöìfžÅäg~ÄÖfàÓÑöè)φ¢*Ë“.„K¸Ûç¨þ¬EŸŽ!!öœ,gÚÜò|+/ld°µpôÎ-u,'»*+z W¦ÎJbÊŒv¹sÊ!c:ßÒNr‰‘ƒ–WIO/œ´™>fç†ûÖ§X}À’Ò\ £µ²÷¶øú²jL8Ò2%¦ß›¥qº“]³×þ–q× ~áë b"Šo¬EàQbT‹¼ºsß}#•Ò‘hç6Ù´‹ê˜5 nme-¸À!] ÀiÛÌí±Ô•KÃóÊCôÙ\|âêfõÅ2V¿Òê-I  <„TYrúñÌóÛÍú± 2ÅÂ/‰Fq‡ãÉFC ì]Cy´¯·'ì¤UºobÇ‘BêÜ»¢)È2½ȸÖ,Ð?Mª“ô¤ú™Õ$qòk|˜(( b¾Sâ Ì~0™7<¤á¤´{SˆÖ£¸€-ëÓ 'S »í7–¯¬<´Skë{sËZL#(•®œP+)Bì»z¤` H µ\Q Bb6É$ô ´­Î $/À´ž#ù÷Øõd™jC„J`Ì8¡J¦}Û“l' /¸9)àÒÀ X=Ï–É:Ÿ§xQA3kˆ2iÔ(Âí"2ÇÝ^Ë(s@»$‰Á;€w20ú²µ'Ï(XŸ§M­×“êŽÀ½XGìCpñ Ò0‚~*&ó5»ˆ¼Ú€š§Ñ*UÀ^|*50cÜÁ:Æ ƦÇ8“"5Ò}«*5ŽY«IúËéúÅ1<å/Šì‹Üð öÉÖ¬5ÈWYï‡g)ÕÈxűq¬¥ÜNäŠØ—üd¿sá.<ðm…bK„„+§ÝQÉK®Àp´7óP‚¢9 &uLÛÉíοûëÒž°¨d¬z^Lo)/;k<÷Ù Úö³D±Á”¬Ž’·ßhÝl„||ÏÀëÓí¨"œ}£ÀMTëªÊ×TÏûY£l§!â,¸îCl×*zSæ3é¦{:’ÜE /&™@Ra'Õ XYÒî-3)X4Ó“ôµ…pj¤DoÎHB9ðE§ÐÑññÿM’ˆ"'mTé1Àï±m–ÏáT·ÆöSÛ|†§—˜ t0J®âû+ œ®¥Íoˆ¶ÇƧà7RÿDn£îcÝb˜ÝÅb¼£¨»ßŸŽœo  m õèȇÐOn¨NØ€…9ÛPïÆM®!îj[|„ó(ŒƒíÁðÑ”å¹ w›Q|85‹Þáþ‰Šà¨Z¯‹Í]¨ÒÁú<éÊKÅC‘¢&Lë캙EæVx··ŽVÚcþEž>ºé>:Ü]´qË\Æë"Dï¶pEia0²¶‘$PWƒH´=²‚ÊZáFbÊç³¢èuÉ„›‚T"¬6B¤8âc ñŒØ¹gŽ¿ËakíîÓ|§táX“CÏ.GÎ=2RpWD¥ ¼Dwð2]¤úd¤àV.\µöïïhíñÞ“/}ý{¼²ä!°­ƒB„_6ózÉ•ázõÌ÷ÒVþ0`ºµ—ù ѽu9 ‚>ÒRˆrÞ«aoýܲEzÉÎæv¯3oÇD(ÎQ•`Á Ž¯3©”Ú¤ôÀÔhn©é§€³þ\&%Ó… Ý‹ÄùÃùŸ“r.ÜMÖmãÔˆEÂ{Fi@…U’㻮𗠒&ê?äñ׬þ´b¢?€kÀ«6ËÖuhmÊ×Â0AºZ‘=G6åâ´ÒZms A“x(3M’lŠ|ÁÍð*oó$%ün‘H­‘ÿ ;`ƒ¤}{UHeU¢^ W{׋"TW ¤µÞ?Rnº¬và`ïzZ •êÂk§À’³½T¸´ 85Ó ]-óäzðײt€J$8©áÒC(S‘¸KÐ&§ y`¿Äk:40~Q„÷” ±âc¬£[´;#IL`ŠKº=U‹ù8&‹Sih'^ilF©×á’tJl­= !¹…u MvfeS“FÈõ„éþxº(½Á‘û*7é"-LVô¡zÞR¾ö–’VxÅ`³ k€ÆmK·°…1+E…âZ¢ò ¸rè‹b/š‡Å ë˜v,Ñ—²)šKèå%´À°qy·ú‘.”ßï{› mÒÁÉ{q3#®;rlµn½®Ñè[²{|>Œêk^cFb7ÉÛu•2» ÿ;"}Áã:hH»×¶TÎÙÝLn°.Þc]iSøÒO†Ó;µê Ø6Ž\Ï_\z7Ó{ò—Zš} +Ÿ\›_€g…ÇÌVoܬUheë|Sn‘q·½?U~ý(5yˆ²3~“Î6ѳÁû…¢ öíõSö°s¾¬àA%àŽ;[!ðæq?Ò¯­bQBjÎÿÄ¿¥ lc‹O ”~‘i@<3¢ãÞñ†¹40Ïp±m‰JñAóÊxMöÅŒa2aOÀ®ÐÂö´‘jR¿i-¡ÿ¨ç •áÞR‹³ãvÙz¾ïɶÂÕ—¥Ði¾ÇK8÷,€ _Ò Ç£ÍÚ?Þ.¬,Œ­öí|§OÚ‰÷ ­¶ÒI‘móU0øÏƯðÓ÷úPØíþ -Eý+ˆafüïœ?;óÿHYþ ˆaýÏrþ¶ÊØãˆ-BH  8c@õÎ"qkëëê_H pz8»ë ÓÇ+E8»œªnõŽ%ŽŒ`Üõ—ü$ø üñ±¯´½ô¼Ì…צÁ -Ô”è Ù×çÿ€4Ÿç)¹žA\Ÿä¾üÞ<_&oábo_Ïwõ+6°µ6"Ö¼X)Ú—Wð£iưòÖ¼x5)VÕö¡êý# A~_Þ¼o6·Í=x5zð|°+¸ºU3³¤ë—á³á±ô²r2>I¹'öДtˆ±àofär&¬·ø³nÃëË žr<å’´™)o,ÚRŸÙ69•‚:êUrEtAhêd%!mqºùá”Á0§HlŒEë$jŽ;·$Êî­û’î·¦5‰rÅÕm; Jë—: ä0¨dJ˜!Á´Ø*ã4&õš Àk4$4z”¦óuñ¶VT_vÛMáùнDÞ õ#”¼ø¿Ãæ`8öO[˜Žúí37€I’y‰ÍºæÆYI–®hŸ¿£³›ße ÍGáÄû&Z˜ø˜øc4c¬Ž0ÿ0Ê`UÎ?@›È‰[šQCM‹]üZîpð_1Àá€o ˆ‘kQ¼‡[˜C^W}4ŸH|Û¯ú\øc¥ x¢Üçﶇ\Óöã}Eý(úÙ¢‰ˆ#ÎÏ& ¬™ƒXû°V°¶½6GòR* ¸ÁëªIòÛ_a3Nˆþ‘㲇OhšM 1ìÑÃnD€ë nèj¹r¤…ŠåÂ/X„Šû¢ËоT!Ž£YÿØP#ÜÆ¡ž‰™5[xŒô¾½Ëæ&ÒÂÁÌ=ÜwG¹[VD™òO©ý!ôÆ(CެÝ4œoA¦^Lxý;r!Ÿ÷‡‰f“U°åFO¡m­ÒZ.OŒ&aûO8t±k}¶ôßz$ Þ%ˆm¶÷ Ck—û¾Û¨Ò¯Áõ)!KšÑå’iCMƒü½`~CPº;2©Ëà%\™UðÁ c"¸J¼K"Ï Q´Ëƒ~Ó¿ áŸp„t‘~Ò: ç$Ǥ;Ñ{·½Z¯À–séƒ[Ïo;¤À„п|7FˆWˆoætu™E¶¹'q÷ÛZäGY é m¸ qŒ¸Ö¸˜BÂf^ÃÜ}Xþ\b´®oE±mrmxQ7¼"q™wÌ(²ìûTjë†= ì7?ÇECƒ/ûz¯Â…ÙmÛ´er7vdˆÊÖ¶E!±·ö£³7óãýÜMßMðFÿaí‡É ÂÜ̵J aoiÏÒØÙŠÚŸþ#„ÛÆL<Ó ñ¹¹r¸]-¾E«(Ø~=Á v2ø0â•Cs‰@Š(èx†UòÙ¨8h…q*ò8ø½M¼*¯5‘üŠfЍü«b’Ÿáž_"þ×f;ÁüàëZä¡u '6iïÉ©Ä/½ãé5/ãùWYK"vAÈ–¢vˆy'p9Í¡ ¬‹àl&=YÏ*{dí ýÔ§Â/IûŠÂk˜k#Ì­ SžÓä–::{ÓMŽ•?Ï-ÉT·¢8ÅeYG(Vr­Çp’.Nº¿¸ÃË^7F]$dÒbÛC’àô=u;tDfûœ^/-ˆv]8‚Ý Løv¼#ÇØyûLpWtÝ5 šL}º~kkö!¸^g=Rj®Ææ–6é¤áüŠªô±bRÂ<‘ù®awœn»Ç >[§ûÃ>éúK«!îU 3 ±å¦¼„—Ã! 794íÜ#.óžû‘í}JƒaŠÔ({²&³d—Ú2.Ý/i"«\ßøOgJÑÀç2É•ŒFI¹UñºLO\Nî¶> ýÕŒü A@½Á9Ysì÷PSêé7–ûá 6ŽpUM*º”A¾sø)¢” &('hs6èäýã²4-ì`v–€§ßdìì®BX¡šK1;é3v:Óß!©~\s²My2èk¢Û]õ¾ÔàcÂùvÔ¯Ù–H|“  €Ò€fÓ® ³) ;C·lP!®¬b ¿$ìÌR)âd ëzC£†û²£°~#+}Ìk4¦Œò=R0c¬Ã·Ì“Ž ³k}2°Ú·e”H·/î‹b}Ø"°Ò†tÄ^f.–|¹ØC¯J²AhÒ°.‚-Ê8Î?†x¶¨uV-›ÄÎ.Èz]6qW!ÁX»ùuy"Z@ nd¶÷qþö÷=á}Ê‚4lWø ÅÅç»Þ ¨ÁÅi¾¸¶¬»Ãt­Ÿ]œì³3æs#ŽPárj6.ŽÇÓ<ªÙSkÛà8FXaâî%“–Ióôïg[(€ä¿7œì0&ÏÁw›Ö5BlÅ•?g§ªS?[ß ­ž"Í‹”ÉÙÕ gc€±2Â4eŽÖÕL¿G¬Žgõé[ä'ÈÍ÷`]/g}û_[©q¯Æ²^D´«%pÛD;eÂÍ¿,—àRêÅì¬\NÞÍkï£Éþ¤hÙÊÔÌdÝ%†ßh!²¨doSHgöh}ÑÔ}MÕ↠®S=ê[,è¾J ´åÃí‚2h3—žwÖîÙ÷¶p5ǃ­Êâ~6wlK°ÿö<åï½-Kv#%±Úr¸w·z'yÕ5ª¶Ÿ®ÖX»-Ô'b¾yÿØÅôYÊ^¢ÜlrÇÜÿÞGC˜eïêWu¹¯Sµzÿr¤Qr§x«ÊütãçÇ{Fÿ̖摦ê'é¹Ä¯* Óp-zËÙ¹?xâ[÷ý ü-ð¢xõ­BoÉfš*Ïïþ>oY±»ÿÓJÒÏGvÉHÕ‹¸[Ä Zí$7`|.¥pÏ$É‚Ü2á‘+<‰×÷Ñ@ƒn%o’rÛBžÐ…$ìz3.T4ðw²á(Úît ¤žo•N–ŸÇ?¢åÆÈH¡H ßÀL&UÁ’‰âZ?Ó¿%–Lª'ÖžUE¡&ó#…¾Ù㹂DUSÅ–Æ`ÉgäB¨ü—U§ÈÕ0ž.ÝÌÉç÷Ïuí»Ü3«³ñZpò£"^Yˆà՟𚪜·´€`“L½CŸàòž1¼IÁÁzîO¯•4‚â_ÌôÑMûe–^í'Íûyt«˜ûVl×.n‹×MX9ž[§K…Š*߈à…:Ìšº¹Åo½XƒË¯)ñ¯N±ƒv)„‚Cz¹·ÉQ òixÝ{x§°D5þÆ µþ»ªÈ¹9 a6TtS¢=»£5&¦ðËçPM“Z7z^k¢™«) Qó6ÞŽi=[ÂÀÎç.»¢GkÞŠ¨+€x¯8'Ë2Ÿ!KHfi+­(ÍMQœâuÀy0)âroE* Â ÏJ+ƒm³i'þWc3ûwK‡úoÍò(tÎ'ošÓýšÉNÖm2ÛÃeË'§V ªú¨S¢¿FÊHP_¹0EØ.éKþæ]H<Âf¨{˜í³iQ‡˜û¿? ä1Ø„Qe^§ÔŸ—‚oe 2愪}ÃlEX9*dŠû«G+p³­ÆècÐÉYâæ²(8¬){Í‚°Š®b©%½Ü}Õ߸ø|9MiM~¿rîÆë¶'CËɬ+ÓÃÓ7*”<·:q#..\CÏŸ—? ¬…7*¦öLÎ¥oì|W»~€‰MWÿ&ìeýïÜ=#ãÿHÿ ß—ù?âûkÚÚc£År¸â˜à°BÚe¹hÐp¯Õ˜»¹º±É [eüÝC£¨—°$¥T‰KÝd!}m‰ J†/ãpîÍ£Výöqsu5ãiÔ¥·loÈr7ŸÍñ8™rÒ;¹â­VÕšþ¬ûu»!»%½µô¹÷s»±z6{(MeÍc}MÔi9øþUQÌ9WÓ¡õh×À¡fõ×õgÝ™§ü¤uüÉNÜ8Þm„‰¹¾•nZ1~ÖQy,ÊkpÌP="瀈/o•ÈÀŸsÔ¤ÑEëÊjßèëkÉh ¢¾?}­}½ }''=»ˆ « XˆŒ!Ÿ€C^  è2+¶Bá»™j!d³|LCœq™ãŠjó8½°~üJƆ qôšò6ÅòŽT–¬%¥ð°Ál«A pˆÉ´qÝ»uÃÈ `fñž+ÓèÀÇó=ÀO3 娂Ì_åÁë6ÅÔÕ`î²ö¬¹ú]ýÕá½CÉÀ:™!ücßµYfÎÜÞ OǺH] ~žœk?ÖæXÍlÕ¬|ªŒP8f˜DáKTÅ¥æõ~â9”k>RZ¼î—K±¨u5yÔß› 6?./s;~òõ/q·­‰­Õ¯­žÍë¯4;´À‡»Þ>ݾQ‰šFq&ÛþKbåñàÓ*þ5 ßh±ô†^D7·¼¯2'IÚÚXÝ5+„&ÀSÀ³f­ċQg°·Û}æTõð0=^Å“sRçý´¸¬T_î´â4nnû·¸OÇÃÒÉîÖ*ŸD<ƒ8ý\'Ž38î®Y™îz3'™@Å@®l¶wY3!û€¢3ÈÕäÇ„Apð»î¸`JÛ- ¼vŠÑú{ Õ0aåË(i rá%ù.ÔÝÛ ø-×ÌÞ„‘9·‚NFJ.3 7ŠÓ{DîË€–=JÕ„²Ç3ewÍû¥ÀPêççc 9Í(«œ þûIÙÚ˜²­D…m¾géãê»Zíèèæ÷ÊãÏöäú˜ÛÙþ7&!php7¬Îên­‘Û¹?²`d÷åån2‰2Ó>Çõ€  :kî2½Ö'÷ á¢W”þS–a;ž¿Eß›±éÅ¡#E®¿- L£ú´××µfé9P§Ü‰Ñ}bŠÊ åZ!Ï_}€Ø}† žÓ"R!åôT{Ãà³lÛ˜]8ò%GÞPߥ¥ÇßÜyIs¥§kdÞ»êx4=&Ð2NV\±‘¼°ÃR’0pŒ@aÇ=*ïýÁÆ/Z0Y_JþÊ"·o Ð.,ìÇ÷ ‚Ó7m!Iª\wæÁÊŠÛÕPEöŒfØðo°Î"Íÿõ2×sWÞ·{!NtûàW‡s,¸Õæ4a[¤/úÃa\Ä0£ÂáŸ1ÆÍâ>D ¾màpU4/  \\"2•$á·cÄ ‹#ŽU´nß•áïG0W›3)§P°)©4 Lâ”%˜£ / ¾°×n©)oÀ ÕÙOÓB_}«)Á{Tû¼Tí.{ú$ŽÙ8ÊÇ«:Q€øB â¥ÅHFÞ¬Çqz˜å—­Ãÿ3+ æÇù4R×þÂÚeÏ£tLGØ 4@|Èäß.½ôsî¼R¤IaÃIßÑrDª]Ì?2/¼ŠƒçsÉáÓ KàÙÚš±áâxÆnˆúîu þÇ*OÊÊpÑY`YLÏ<¯Gší5ã%6(·—ØRxßÓï"éy|›zCÃÑ:Õ Êßa®JËĨÊòs¯è'õ¢Úìf‚UMö› tEN_;‰’sÉÆMSBâÔJ,ËÖ”+,~¾ÖhmÙÝå‡=oÁ Tx WÐÝïò˜ExCb"N˜«>ý#@Ò#Óåã_Ì¿Ò-¹´þ25="Xa¶µþ ¯±"“z¢½H%Ÿ+_XªöÄzvq[½‚1%xê¹6%4¤Ù-Ú»4Ä tãKÎ}8: ¬ž®M=åÄݳŒÌ1%ÓeÌ6/MIbHÝ4¼J—¢Œ¬tùèºÃ¨°ôhü ¹_ví™J‹ÛÊ©Ÿi‘o* °óñpŠMÚŽ”:,¾öY4Zr«ÞÛuéà}uÀânÐ_T).ÐG޾{vý»‹<8ÍÚs¡=ìC@„U÷Q¤1 ®³\Çnc‡ÅfwwàÔá>œxÆ­¼Iե࣠-/>´Kc†âëÝP÷ž«âoòÂÎà"ÍÕ®@?Ÿ¥4b¢‘}nR©ýM¢ï©¥ä¾í¿žÛ6_‰T¨¿a¨ BÞªé%ˆÒ,¯¢æÄ²ðßzvw¦¶˜þêL®/‰Uݯ;c+‡€äÝ¥Rá1u V¨™½[¼bt?t&2)¨·Ê;¹oîÆ¯ñ,´É£6J›ËT6[¹Ï‰}UÆLFóšÉõ(ÄPè9˜C`FJ  Ã.!8ñ¦íꉴ¯ç4WÙÃkˆ3ölC?íº%‡6¿Ï,˜²Ë /‡æ@ìÞÊs Sƒ …¯è­Ã÷.§¦/Ö†“ 0Ùš¼k>X-„ÁG)s/%Ä™Ó6T>¾µíÙR‡/²[rszt°JpàY£×åÅè@¥‹ì¯\…Ri¬±”ÓrâÍ=[s¥0©æ…j\r$±Œt éªx(à÷þpCæ}.ëëDL‚„€T.“ڄ雺3â¬@ø:#¤Lðh/g¤²z5Ó‹Zû×6Ôâv¥ŽÔmKR¥Ž÷¤ƒ@8kê>óöÓ·Å^ú‹’Óg8×ýÊ’óQd(©¬ èÂz"¡ßìÛ]˜°^,…–¬ÇαW¼šY€ÇDÍl…úª«Ÿ·¾Ñ¸e‡6Å\‡Ú6ž¯|¿ÀóÎfÿ&Àù'‘‰‘ýšXþ ‘å?¢ Nk]Û/Ša”&±YÕ³üM† «ÉGJ*âëÍ¢×-:ƒÖ ¤ }¤r©“ËA²@.Ž+§¨âXü‰òYG_êµ?åÎ=lÄýLèXD 9}tš½õðÌö[©xtøåóLðIñ#À=ôÃã¼–sµÄ˜[Ÿ|(w9 -f…1À,›É&_Ÿj~”v-Ÿ&SC[9?îμÒZT âYõȪÎÊg_Yk+î(T¯•á:l;ד÷v(aÐþ²ù!Êþn¦~}ÑäZ@ÒLoÍ]¼¿ÙH†Üç³q”%Ë2t®¥£5¹*e~T «çæâv °p8\?`Am¸¶2úCxú·¹V¢.D5‹“›’ÊcÙ—‹“tf%g§‰ÁíhYr¹½ºlgK‰™½ìˆl”ÑÇÃÕê<’¹êG©ä†é Rn^²u-«#@úlhx¦zX¸ÓHýZJVßÍì<',»»ùûëF=ó8ÔõìL˜L7“¸·–Ù?ÎxmF˜h³Jx› €%íì[Hº¦áËŠ Û«ZD…¨A@·x—{• ì Š¿— ˆõ5X“ÃõtÔµæ'Å;v®óC;É©÷öì‘êšéÁéùi~©pXþ\ØFµ»I!›¯í˜Î“ð4¹¸ìµ8OOÔòöýî1RÃX·~¸ÞñxËàÈ SÉ º¥0{å‰Ð×±ge0Í7bŽ—YëC—¾Øóg±w÷S{âl”˜ÛÌ%u4„ÓÓ'âÑÎÀqSæÕŠ„')F·¸¥ÕÙÚüVÂ!‰_˜ŽÓU±±¦{~I|µgsò•=,bæú®Mž*ÅŽ…ZzÞ¢¼ÎÐÀŸEØ6ŽGnBË+’ã•îíùÝžß4(M·ãúk±G|ȼu¥/ýê-EóÓNt‰Ï™@×ö¬éíyÿʪs“²z›·míµqœ–‰#µk¡îQ½((KSPMš–Y)zžY¥µ” ʯª ¤ö’‹ñ|ìŽ?›S€/^4½(ó$]vÑ¢¬t’§é±¶ŽIAFØç$gSäy,âX­OÚZ…VFßaÍ=LöÆ`^׺^TX;™f"¾,˜üOB?oïÓZÁ4 ¯¸m'†ÒŽG„ZÇlbº6ÁjûÐÝLhâ_!U~úxw Ψ&–F¿”NõÈ3¢Åg'GjÑxrö½¹Áy¦Õ9øªÞj˜IS\Juk„z÷§'"68JÕãÉý¸ìñÍf ù^JíÕŇë;‹òÏP‹©di•u›·§²£»4øÏ‰6U"¸cÉT°qA”.&9d=´¨‰Ô{MõäBóË£»¨¢%0†-Îwùs7g¯óFZÉî·O¯ø‹‹†ÐŽŽx± )@èNB¦…ï$f`óvœèòÇa© „Fãp "KFÇsÃs)õ–t•Ž|øç'ã³nçc™@n_Á‡Qý<„3F¹B)ÎEšÁįÜ廌e•eAí㜷âÆIçpzÍb"Ì`»"$³³²†%~ε6$2y©w‰µ«yLêÒ?Fq{8ëtÇßkßÄ/‰ÍÉ|é\¹Úå\¯5>M®J‹ˆ8îÌ‹ÒìLÊg8Ì>¢Jê̬8&<ïïÅyÑoT›¼KÿÐ,?Ñ=¶—o÷žè%ñœ_U^]7t­ ¥–…û‚$¶[•Zˆ&Fd|æÅrúHOß.eó¯îŽåŸÔF6öÿ¡®°üê ËD]ÙÖ°UÖGÒëƒ"t'´è ÜÙþŒ ÁB®§tÕR®cëæ:,2.•yÈïÁæŽZ<Îûá?‘.í­õr»¥s‹÷w•1_p@rr›ÍyÌ:í²}i§˜RlðËÚÍ Î Í‰¨×Í —~žÛRw%XqRi1ùm¬(£Þ¨¢\É ~X…zÎrz ϳ“^î…?&¯*Y½mw¡åºêõ0G‰ä!!bJĬK…Ý~?x:B^þê¾!@pN\45_6®¥ªxde£/ „¬íƒÔÄy‰²# 5Ò.ó8€x㡬JP XFƹ{P¯Íba)O ʺڂ!Q\CÆh‘d%ïúé?ªóc ИÎë&¾X0 CLx…kcFîPe"¨¸*‘-LùÒ°X„VñäZMÅAÊ=œõ:j,*ÃBÉ74ÏÝN 0‚“Ÿ)S½#CVõËËAñ'gF“ gÔR·ihßX[MLo ’y«FŸé™Hèß¹ë•É<Œ‰_(Y8¤ž•7°´_°²sßÊ{˜7dÇVøÀçÍîæcÆjdÏ—[o˜=tÊÈúñ‚ÁLÑ‹+ÿ{ÂVjY³ù>9EÄfŠž ³ŠÃÕ‡Ñ$)V•¾ÏR¢˜Tþä” *PÄŸ)Û_„å$¦î¡¾pBIdM¶žÎq¯ÇÓÓÎsúlŽƒë†ÜÏp;$iãõ©ÔcF½9Í2©´ÌÕxl"+Š&ˆ¤¸R+òøŸ¿b¢ùݤ֨X•‰é* )rÎ➇g,T­˜t«¦¤ˆT [ðÝ*õ c¯noÚÈã«5ªD/,Z ]}¾v·ÇR_vÅ<> šÂ~µbn‹ë#ñmÂÀ°š L$Ä Û6p”»‘¶"¯•äí.8Z²QsDÎ7"Uá¦5ßCËÜT­½íï… ¬Àùqº,!F¦ú¸ÓFH{ß*8‹¡É ª}r€ÝAP‹ˆ”£ðDšDýÔ€chÎÞ;äОnl©…Ço„#0y$. nxO’ÝØ#™ É­P£™¸šªË?RXKÜ—h]ú Ö¡íƒ=ª*—×,8¬îÓ˜k銜FdA.Ò•#M°Ç8,ã/¼$dÍןXš±¬_TÎJµhFÙÔJÛ€N*fTÌT§êµ˜Üûâ,E)Œ©ïƒ¶ôÔ5jWÄï“1à\#ñãYš;1ò¹½¬òé Ž XètÓ£;ª—ôL>hâ¦ÐY*ñu#YߊÞ$M÷Ÿ8ŽgºìûøûDó<²â½ŸØìÞ ¯¿Ì#îx¹Â¾ùnlä"èdvé¤Ôö}]Z(Â_F“ Ž[·iQY16âU¿P“áØÈ­’|)힨m(h÷#æÎ%6>´½t¹„ý|©6ßäÈê«Å.qµ|u?ºMQ[¸qâ–W׋t?áüÕŽW´¬?¢UB¤8tÀDw¹|™]Lj2“Ešl5O³©Ëü'QŸNv:ÑV«O€RŸ.‚7>‹#’4œ#šðÕÜâ{xÈT— Ï)„Ë.k˜¢L×fêíŽ1’ÿ~îæÔбx ~ê-‘'`I’\g 4M”xŸK† =[FŸNPäŠYN]›¿}K]ª†}5ƒ$ÜœiE(õ·ÿaKªA”YO uwzÜ6A‹¬‘ò ®¸RÍuj‚ ˆ \ïµh£Š¢sì@Æï‚h—ôH'RüL›¼ƒ*ÍçÕ}^e©y ^j-ýkˆÊÂ×_k!ðTÁ%عlNÈ3t­<\P¨m.Sý÷ã’ÑÍjÍãÌÀ*6È‚ ô³²†£H5Ù0óHw ¥U2F‘½uç¥>AûJÿݱTÝžk´`ùJDÑ9o“=fæóÐt3pd7Ïô¥v{² t&q½TýÉ^øZï¾Ü;8èÇž_M½ô v,ÇĄɚ6µ÷7?3+ÔõÈU²ÂÉñgOd´?+ë$¤éË0¤)åfõŒªlâÓwý|~@õÇàãAYH'ï—}óòØåk­QPßÛäB*çã’”3„àçxÙ*rJUóî=Î2å‚äf­’Ú¢§àÎۚˬÕÎøH"$u/Ç¡«ÂŠÅ.¾[&ãZa³½w)x~ã«mÖú5ºÑ`ÝýP5E.ŒýûF”j‚l (OO0Œ/)«xˆËgýØwÓrŒõ-$IPsz´ÛúHCw»úªÐË,ÿ´î¿ñ’ÿìXgdgþï¹4¬ÿã#U<þ˜Ò+š›ÒËššX Ù»hÿ¯vv6F&vN&](z%{çøK†|åhjçLð¿±ã?ĦNö.ŽÆ¦NÿXDÁÑÞXÙÔY›^ADŒ€^ÒöË Ы˜º;ÿãQwgqåÿ½#ãý«!odejìüÓ Äìíþ×Û-ý§L/üÁ?”9°ýSôÿn‘åÿÃÍëþ/Mÿ§2öÿ?-õ_VàdûW+02püßvàüÿrkÿ·89þ·3Ó¿±'çÿeæÿ‡½kjêÌ÷(O4¬VAéÀÁ.ô¥’œœç¬ Q·ƒR«=[_MØ‹m)Ò¸Š4> &@¸íνMk[ï¶+­mU¸mµ…ØÎ°¶3—b+ ½†Ü²w¤–’º@RBòÝs’/9Ÿ­t'aæNOâyä<þßÿ™®>i”\Lš'üI£ðà“Æ ¸¦ þ¤1ÓÀ5†Aƈ¸Æ°Á'%¤yþXý$ÒX*褑Fû‘FÈ‚o¡Ž@*Bæo¡XD’B† ÷OB!>·(i ÜŸ4jH£ AP"ÒèàƒÁ b‚ö ‚ dTpÒX”@ÒŸ4vŠŠ!V$ЀÆhÒH9J×X %åÁ×5RŽpP¤Ü_×Hy`Ô$’PA‰û;&r‚ R°LR‘Šà[&I",“Tø[&Iß2I’EFú[&IÉ‚O…ˆ4È[¡î8iÁ4H¥k”¤AÒÓ k " i‘®1ÁÏHE㟠lðI£d(\cýI£dÁÇ5J†ð”Ìרi( P(ßI‰JT€}çd’PÜùLJ> ÜÂI%q lR7™$úS¸2G)‹þ“HB¹qJáúÔ4¸qŠ@ PäÆ)"øY9E¢,‘ ’ ¢%’÷M‘"K$ƒï¾) %HÒß}SÔ4’BY$%$D‹¼•ÝN ‰Y$Ø*þd’™Eû׿):x™…*tRŒfD¸Ð9™$”/8)&xõ0 U£ ‘œ†Å¢Ô\T£ Ø ª9‹RsV¤ælð+Ô´ ¡´Ì_ÝiYð!”–#IËü!”–O´ê´Ü_4À]ÜÉ$¡¸%êÞ2²às‹A“™?·˜ihÄ0(_ɈŠJL€}åd’ʈ|$ƒ/b(*ü¡”QLƒµg"Ó ö¨ˆ‚!DjàˆbI$Âñ0¢H‚!ƒçx¥ éïx2xPÊ â-†Ai€ã­I$Q(œÅY DœB5ñJ„SnâM"‰F©·¨yÇÐATo¥Þ´H½é ª7RoZ¤ÞLÕ5{Ã0"õðìÍd’Pê-š¹a˜ ª7ªËÊ0"õp—u2I(õuW™igde(n‰bVüž4+CX +óç+~Тº¬¬ÜßÙiè²²·†‘&’æ¼°xð‹G,Ž(L²¸ñˆÅƒúuH"`qÿ%àtI*­`Ei; i«@™(­`Ó`¨ª÷áR“H›†*K Ì@TCe‰àÕçY¥þ„¿úßÒ0ÌCæ!i7–ž]¿SI¼^Ngsä°å g}[ïM°š €Í Ö( VÀi8AÀ!ôŒ ØÑ# ã'àý¼#«œåàP&' 98nÈÁÙ>Òqpjƒ#bœÇâàð'88ÖÃÁY®ppZ„ƒ#œ‡ààð;þl¯s°—ÍÁ2»¶l•r°?ÉÁ¦ ;pl{q°ÇÄÁ†»(l]p°OÀÁ¢<+à,7s°¶ËÁB*«—,r°>ÇÁ¢+P,÷p°ÆÂÁ«LÙ9˜'s09å`FÈÁ4Œƒ¹Fù ­9Ïr0ˆä`äÆÁp‰ƒ± z]º8ú‚7‘’ƒ°ÄA à Áq’­o{Ì®çï˜-– °cOÑs»…â [½ K;®ÓÙ“°`WêAЖìóÞ4·4$n†ä·«%¢ïSÊ'Èåw{~_,°ÚºïfmÞîB ònÊ žÛ ž~¦˜ß—ñì((Þ½~û®•ê¢êçäxãyAžÇð\Zýøãçi¼ç|×ðh[´[Ä9þ&Ë—ûä§ÀÉqá¥ÕiˆÃ!¢=I"ÙY.9ÚöZ¯®Oºìe}¤>²")*)N³*.^u8"W³ªŽ m ‹Y63¦YŠ•K•Âβ°ÄNuÖÖ©^Ýœ6t´C)¬/õ7§– ; S­êöl]ià2ÿ!Ü€¡£À¥vת£ZÆôå[ˆ0¥¦4¤œú]ûñ¢ö¢m›3¢¥u–hikÛ°I5þýE`ØT@XÕ ö½GîfïÖ³ŒmäO½®³¾™ië(üùÖ—ÒpŸgë~ø ý6lWL•í zÛé±]Aßb;Î2ãlÿ*ÔüÈÅ ¶"œIZðÔºÞŽ|™4¦n÷Â\ÍÓwÝuÏ=¿9´þÙÔw“¿Ž¾òF¬C6F[M±Î²Ä—IÝï\&“Vx»LÀ €`2ƒ>n RÐò놜WºðÎîºÑ9ÔœžÝÝi«©û8µWo«1ÞÿÐͰÊåcëþõÉøh}ï¹îãI´ÙæX¾&ô™ ìÔ&kUo›ÍÒd­p–Yš„•ÉÒ4hç_ÀbZ'°ÃûYÆåäÛs‹Þîw×òZ¥Õ‚®¦7èvvu;AÁþÂ/›ÿozÙE;ÛfíHH5åÓ(ÜS —yÑi”G YÂSH£ø‚iTæØ…g_×½¢üS+t/õÍÛpßSþX×j “ê¥Àj]^›éXuBÙšrE¦®Óµ˜2ËËŽìº;fçÞE±ÆC;O?g::Fos78“GM9UÀ2–>LBâN8¢ýùLõ._jÁú󧔕 £×±Ö\êÈZVœ°³^ÊisÀ%¯ W×-ÂŽ¥Ê9ì#®*»ÝjÒª¯d˜ò2—«ª·{ÐQÖf»xäY›6æòM)Çß¹ùa"“ß1ÇØ}e›Ô¸ýêÆÌ¯o2n¹rMY[€GVÿ5_yu~è…ËÍHý>—i〲kªÀj+·)ÁõŒu—¢ÝsÀ%Wñ=é`tt‚ ulÉl•»fõ¾ïf÷‡Þ{&µ5Û\²ª|ÃŽÃå;U—*s„<-aKìÚåá?Ä6¿Þ7îpýú!qhùŠÿr \ð„ð*o_Æ÷Ê—#þRlg$ʽ0 ÆÐãvÝ8ÁÂS;ózq‚ŠÑ>;Ûí,矰³)Ù䨛·É¿æ·VY¦ÜÖà‰5‘ŸröKuäÿ_udâsµ|\'ÐΞ$<8*À*9V‘Ξü9¨JŽ£ªfʼnY}Ò‹Zló;ÆûטCÛñïŽ` LµtNkäÛëÒÍs±O÷aºãIó’ô±Ö™±6ÝМ}Qtñ’¾t=m¨Vu}ùÉ!Çš$½¶9gÍXƶû,í`ö@!hMî:©¶à6×3{—_iMB ;2¦³óЗ9Ò*u]J®p”õƒª‘KàC>èíq‚6©Å28Ø3b‘ª¤=eÉMªÇÎˉ…ù'fcÝsó>É;ybÁ˜lKxiE[¸‘î–=]›Œ}XcÌàÚ“âî Áf¢í‘™¢=z˜;žu³ªSQ䄺©˜`WV†š_Q^¼—çÜ¡õe™ºµv×íqiÌ`ü¯”#d_ô«¬,*Yiõ½æ„èFœñÑP¶á™²8e o¬‰ý-qê ËÚ!ËZÛÑþ––£ß¸F[Žžù=‚4¹]B@gvo)Û4á>ná€wR Œ‚®À•î6 ™†ZL駺Î,é(û(ÛP“·¤óïiý†šµñÈj”†Ùý†¸­²üÄšg^—G¿¯¬ìÈ+NØ]—{>bÍŒG±öŽ»³’̹’‰"¤t|Báãñ‰gœàÇã ÿ–Dáã–”{|æ¹Ðö†›‘†oÎ.|5‘ OüX—öy…ô¦¤Ç›oÄxG?ö+ILÇPvè“K_SG-”¬r(m:úXì ÞœêÊ¥u£ëŽ]kª¨­°(‡Kêê¯zoØ©Qj÷H³†Oœîpǃm&\š÷üò”†R~Ó×(MôHfŒeìá·M4žÕäð¢+PƒæƒÉ×κ¯(‹€ªÞàî*>³`P•nè(‰]üaÓ‰„\ýâl^ÉüÐð„ü¸¸EKÉ7ç• ÑEøâÚˆçgœÆÿ^ÿ¤îû™¶w{g†`HSˆPBŽ€ºÅ4ŸÕìxfC²0Õ'àIܱÞT*5þ‡¼BÂ#îäÝõ&SÛ` hI.m–;šR»Å>¶ÜyoÈ÷ËÚz0ÍŽô3mшt°§Ô$ý–I¶4}›qW²º‡úZ\–X§6rÀYæNé18K;t_“Žýû÷[«=½öž¶I×®95¹Îë`㈳m¤sé€ÍƯíöÁXûµ6K³sPÛv £gÐ>8F’¶Ê °Ì²¨D Xl±C9.õ›úŸ7™ødõ² 8Ö˜mp¬Ö‚¬E]9é’ó'+âõÙ.½rÇlWž¡úʶ.Cu[¶†ÏTÛ væ•Ä̾"«¶©*«Ûóþ`Õw›+y.’m‰-ýKÄó¹Ÿb'jxVôìÈð½{ân2*yª ‘È0–ÁXV%ë9`ÙÛ¸-OåŸ?=)²ãó‡õZà^Q“òVND\î™×"PãÓ¤?Íhú‘ Þz#J¦ûû\ã ÓUˆìRÈ.$ÆCŒðìdž Ðk{Fyøb6x ~ l Hàœ‹!æÿqìWq Ò…sÂ’æ(¯C[gbÿXõoC¼®*/ ¿¾~ŸsÔ ï.ìvàØF6“Áí*q%”ÍïÈx¹ÜúRd{¼ÜøÙcÆ‚Y*’cm:väl]òÌ]Xwš_"”äÑĶ,þè!“_úXBÛÕõ,­·{zE imOÅ-¬×,# º½^ÓÒjO{‚Ї{ ¡Ïª´VH“´]j{}´XÂa%f«O¥I}cÈÌ÷f2„òÌf÷»ø4N3“øä÷û¾Ÿ÷ó~Þo2Ö:G–|ç0ú™FSÈRp.ùÙUã̪"—§ª€ü 9 «Þ)›S%ãd*æCÃsJ1¨  2óªØP±¸¥ùÊ…‚Ë;OÙâ.TBíÕá—ko÷NFûw=é¿Ù±kcIë…¬tC8mAm4»pB5wl„ÉùL4ûÇ2(ÿé‚ß.Ú¬/ü4Iå#¢ËÆÝUH0 £2XëPªq \C†ºÈ&´Såu¨< Oö Ì·Q¸Üp]¾7ð›ÄnœFÜåÎË®¤´¯Ì+6¢‰éÅy.*Y9JO7dXIÕ³ùà‚rKÆ×”,—˹ðƒ’âòXh"e‡7—xBÙG‡t¹ŒJùpÇìÙ0i†³)yl4}Ø/âl*8‰Œ¡gÃØIXs5Æ´H䊌„MuHJZ$-973Vˇ’ò$Õ÷ d Bþû§Î!ߦ5Ýmm%ò¤×òzì)€Àܱ'NÒRˆ†Q`÷XœàÔG¥öN·èðk®Ä‰—î®xæLzŽ0'óí7Bø #;½;3>¦þFÎ6r¥ÕìÔ8ÝÌ*”ÏÌ´"‡´¢HnÄsO ëX°ÔöÃ\,–ÔqÃ-oYÞ·Eê…¢ÊYoúã¦-³­9|Døj¤áƒJúé– ˆ‹ýgVfåÅ"EƃÖqçTOÒPð-d$i(!ÖÓR8c͇bl!À¼ër0e@L=Ö~­—k‡IÊ0¥vÁ]\¨ ’¦o”/@~6I©!‹S‰Ð%\Îl¯€}s¶’Ç” ØúG“øùφòw—;æNHV.NßPÒ9²@°{l~òcÂ%Ý‹—Êô’¶aÒœÚgÎéßKž¾¼GZoíK¶n]c•cÖ‡¬%‡/1¥l^‘&Y‘h[œ_Ü(yþjþ¶§²3þ縦'õòéÀ!ÑÞq¢8DZ囚tƒØðŽÁÑàHýÈËé›äŽÙ~óu˼¼ôz`NóôÞÃÅt«¢§¶3å.@ÒH.¤Ì¡n§j*³"ܰZ…!cU8çÆÒ»Q©ïÈB“8al¬@>–l¯Fˆbé­I÷†©Uk˜Ù™$³JCûš…ý‹òÄ=“À{‹ ‘xX2Frºîì´¢PÀ<E4˜¦ÉåKšÜØS§†j÷?C¹SãK¢º‚_ø58â·YlGÆýÝÕ5ÔÑ‘ár2c¼ñ±âvfŽh×dÊ pvÜ8)uÕ¸ü¤Ç5éwÀZ,/ž·Œ²À3¬ˆò÷ÁÍíR.8¢ž*g¤Z©!å¬3NÁ7 Ú°~Ä‚n\§ÖÄŒëÔš)\·zN^±J²{q‘CâŠó7îIjò‰×œÉò4 Ÿ ™'JÇÁ:pu vE^J®ÃíÄ 0y‹ì*–y_ö‰:ü]í'>P_LètÔuѬ©3T[ÎI¨!™Páu¨/K-ÜÈjÂx¬ Âb¶‚*Ìä"R°EoÌ4wpYRÀ„|ª-t–¹ð1—Ï«# €¨ÆÝúJò-ÊÒÞôëW6äruÉžTw iŠ~§5݆8Ëpa™æâV)s@0` í7ÎèçDwÇàu«Ô<9 fY(}gó@ ɑӜKäÔ|í¾«†$+X”£ªÊÓ™Ϻ°†z"ʨÿ{—BAß h} Ó@ ;™m„ГKí IG½Ü„/}9 –R/Ž7:LÂÂçé«êöPDW`M »B}K×QOá7í§?R×Üg2]gㅵРý\¤€†§ðPò:~ôÀ¨å ŒšèQÃÇj ÆDÓPi r«ù(0uì˜úä¶&TYéú˵Þ{W‰WíÞ<&KB†LFß0f;Wµ¤&8tÚîoÔìsƒ ›Y‘ø(À½Ö/FÄ8qÂðÉòâuÍGþãŽkóêÍ’NGMÁrNÊAàÐî :+!Gà˜"vþ7¤dµcÉô¸’wIΤ§ëσ7f\ë«?;€Ûwq •¦oò ó%¾$‹A`·ÂÒÀ KRï0\áò ŽlИ˷¿µXßN®[¥žÓ588e…̧À›þڠر@˜·ÌẦKðèí=û'd†u“ðÚÁ] 4°—‰ÔÓ0êƒÁñô¯ÛŽÔ —Hœ½«ß{²ènKšpÁ¾zsVÎIRcÑ#?+~ŽbÕÙ‘ ](㡔ײ¡UòFꊘ#õž)ÿœ—Jy(í¢Ò£¦ßŸÚWº­.ƒÛM§7¨7]¢¬êqý}ÎÙ´¾ ?,ZcÙswgÓÖ‡ù«tòƒM¯ù?<äJpú‚”̤LSœ p¢yŒ£|ãé!ðÞHŸ}øê lv§•ñ³£QG2³:ƒ Ì H–3Ñ'–e£Ždæ$PÀæë+l·1ðv-þùÑùÏáw^smAIIÍ|>1¨îY$z!`<ù¾Áúå1äBWäÅ Ù…D 9¢µ¬,’“0šÈ˜ É”"òè;æ2ªÏ1§@ôæ·þƒ˜¿ÏÏ–¹n.|§¢$$»8AdH碥${øÆÓo/îÙ{düÚŠÕÏÿÚ´eAÒYOù¦léC%Ïrljèý…\¾þÂô±`ïçC˜ZXô†ÑZcÆáéèÍ"Dö$z31¦$qÃCqY’GW"U2$)ñˆ_+3’²É¦_5 syìž Ù­>êoä™By}Wê@!Ù5zDLÎíê‡(„˜R× ë…íšî2²9¥†¨ô¸¾&tã -ŽøW)ÖZ;w€ÑFßÀÓFî_|ÒB€;,ü¯PÍÒ 0?(LàR PüUrרÐÿ\o©Ùa¦9KCº“Eä`«‹ê²à´.fÈFpï{«ýzΤ›°MºEÌ9»kk¸žM] ÷¹nÙ& ·:Ü¡•9“)Ô{J»ñ?MÀI`‘‚‘7õß.È¢åÁß ^óFÇßj¾ð¯…àïù‡÷ !P•‚h#·WË#ÑÆ.ÑNÝÛ}qU7\y2±¹·²÷y¡kUÆ—ü!ÌKv;a'HY;„MÚ3”Cä5=Ý9ú ÃÚ¯ÅúÃOdâîöÌí-1\Qªý®@PWæ¹èb*B–Q1’žì>@ÔØÇìþÓXO÷ŠõÎ-ŠÏž+ zÿåO>õvË—œÕ––‡§ó!Ôé»2Ãî6ßbÎ…ÄH¨¦B…„‡®¶ž%’ÔÌ YÏ0I±¨ä4&©eS¿ +iŽ#ÞïTÏ™{6îI¹¿ILÏW­éi.þ®®—])7KÉsE¶ÒSúŽv3Rò8)üÇ 2Lª®nxóɲ&óÒN“/BºÛI5_̳{ãö u´–Ñ5Uµ~½6® [Ïp¥ü:$éÜݺ¾ï ÇÆ+6Ö“{º ÇúCyMÕ¼ýÄØ~ß݆öIïRYÊ7=ÝežÕ˜ûXu^šŒ¾²È×ÂŽˆCY’Êm^Á«;S¢U;0îvR.OG¼™E€µÏr:¢R`Ùi5ŽÅçJáƒo¯þ»'¥·E¦¬ô²¤ñ¬@_ŽÓÕ¯^xçê;åBºÀJ(¥ìÈ6gäZnaÞ_™j[޾(ø\ðq‚›ÄI?Üß/Nº–°1WÏ=‡ 5‰Se¿ VT&“ãA#¨kÝ8·‡tܶ˜ýðêÀؘs®I(ùÝc[4ÉÔ+œ5—'Ù)øØª\Xƒ&¸b0&ë]ÌkL)Ë1cë}D0æÁÖ’ òÀ|ÐÎáAêÏÙ¼4:Ϋþf¢Œ4ûªu"ÐÖO½Ø’Ç{Ì´òÊ[ÖŠ•†6²Ó¯7ÍMm‘fÆã€Ó«¢{ °G§ïŽËZ|VgÊDöÖ«Â{e­Ÿ¾Ö´p¼^¡eäüë©C 3iC¢#ó 5Ì>ô¡šÙ¢‚>T1{–ЇJf§úPÁìD¢ÌæQ3þáiq\WîOÏBV£ R˪†×2dãÙÑ(ˆ§„C¼6–ž6%Í;Z üƒÀÚlý"ÞùH¢8±¡îEQÜ5*AÊVc¦u¾Êä†VOay¼2˜Ü]Ó<º8‰ÂŽ€P­Ñ¦‘è‡]Ü;ÿ{0I¼BïI²Ÿì'&…ÙÄñG<§N‰^N&]ÉzË­þίÍËKÏÖ·.êÝ.àT\  ÌÐ\"‘#j%B¡]š=`<.Ü“SÂ̤SCê˜èÛ3t°³ESeŽ—ÿëg÷¥ÌmÉJ5ú; ½@\G­¥ 'è)?ºhS4èDYIWCmöt ‘®vŸ±îÔ×—åϤ¶|‰ PÖ0‚ñÖ(¢Aiö€bÌB }%T5¦Õ± K5"…`é¡gþ©w ð8ë¡EîÛÍkGû‰¢µž×Ík›v%.=¤7qŸ( AJZH:¦ÌA…Fæö²=‡ðZ@¡ºÊpFÂbÉÆJíÔí=g RÑ—C)UKïkª®l7özØo˜ùž{úþ¤)´¯g¡PéÛG'©ôÀ£¨ÁQ”§-ÏäPò¶ÕÃâ!ÆT¬vˆ{%0Ú¡˜V”vè`ç{²+é…uÏËý+„+³QHºB¯êiÂûÜÄjuiÿÜNÝÌ—‚õ¥`´'‰20xý×û)IÑÖìŒËŸM½[9·(½TñÁ=å©y“úÒ—”y)\Ïzh.Ù•¹1›]ɪ—ä÷´Ìwe)Î;â;;›dY¶®Ï)Þ0ù i/þàé û,ë{wØŽ[â®N/y wþI [éé4V_^¹ð‰*óAN… Ù÷D¡†"j›¢XF3E1Ó‡1¥¨©ÙãoÍŠ[„\×›Îk1°Q—ðÄBd¿W—„õ…òöû†É€¤’’ªÀÇC|›²¥É[2ÖŽ[Ïn°<›Ø«=êK6ÎqëË7µŠ¬¿ß}ö’Qóºþõî”Õ–=¸l¤°v©$ ÅnQ‡kó÷=®„nKÒ²ïüÆŠ’æÌÿˆ‹b¯èPHÅÇQ¢8è4ˆN@±QŸ/„y<SÎlu¢E?ÙèäæöÌüRpœ&+©pøÝ»òĹŠÂ1ê TTãäô+fX†OT„B6k˜QSóñP(d›T)~Ôˆ*’PY1v˜Ã„jÅÂù‹¥¢VE¤év€¹ìã­ûÄo4=yÆ2/P%«æv;¾ }”7ÊAFôQ¬ GÕÄ*Ö:,õ–á)ažJ§ÎÇ´©kžãiÞ3\qmd,q•<ÐüihŸ¯t¢…Û °X•ÆÓXB5 Kp.JÄ´x"PâæöÒúÝÑo0½˜4Ò*â1ð+‡ßñ!EétäÁ'­A!´¨ŽEUŠÈÒQð`ÑðÎq±aQK™ F ‹¦Æ?×aŸaH; {—0v8H\ooøìbŠÑòÁDë…5ÉZNóBFO(¤À p¶œMï¬P ÌÍCav¸^ׯÄwÊ̖B VÝ_ñø³b“'¿ößR…m÷½û´þ8Òlð¬½å£² ¬çY÷ •­ˆI0:Ò‘^JŽÔ{Œ÷äÆœ7õW5ÿéŽyˆ—Bæõ8èÕ|ÍÅ­¡±MT k‘1E‡fzÑ¡æ):b²ÆÔüη-ùͽ’ ü¯'Šë{$ú/š%Ö·oÜ\IÒêZì‡Ó¶­/°ô`Ö‚õÜß—GºÀ›”`CŒÿo0yE~£nëømíþî"÷ÐÞ u»\Àé™:ô.ÿo§¸n[x¼WFŽkóÖîXâxó°étöîàTÑ °ÁËéš7žðŒ5*y³t®\ª™†K£ªØI©M1®þìÛäªtIŪ?[ÌNOyëùG\u²¶¶kè%­ã£wÿ´‡êÕ]ÀÓIØÅ#cèÚ|³Z&XiÙýïÂÿº™ñ+z».›ÇdÀæAÿ[ƒ Ö¤lÛùÛŠgè]C8¥—(ßt#_»…Œ7ÂErá Hoøs' †õ!ð…ƒXL³A‘0wŒÆžš§#ëy± ,mv®\®Û˜—_9t]}¸ø˜ßc°{H×uìu>/Ü6°Ùæ&ê>Ú,09·U-K³gá¦ï\w­ûùêNîå™Ôð–šÿKÜÕ@7Q¦kiiÚnšM!ŽM*RE„æ·I›–^T¶bëÏJ¨ Ýš®WÛ¦#I›pö^/qQAe—‚ (?Éî¶üõghf]‹Wv»à’Új‡°¸—jboÓ¤Mf¾;3ùi+ß4;{Îõzއ*‡w¾oÞ÷yžç… áNy$YÒ„ßÖdI#çœ,iäcõ<ÞYž±þW¢ä­úW2ûê©3t9 L‚í%WwgZ †CžZ­å;Ý ð}ÔÍ#ÝІL«÷»]µ;þ©›•øïø‰ê lÄIPGº¶Wàç\Íxo™½uöÀÉ4å¦mFo‡±ÄÄ£%Ç `žut’§‡™·áAN8®¸©ŒK›¡Gù~y<­†J‚„)½œ†Înƒ¼¬J\2}qBƒB×êxLÂø×â|a΂ʣ¢(;R¦aÏ£4Üó¨XC_j<()Þ”(ûN¬ïV{°:œÄ^ÆÛqµ´Â`Ákj¶,§qZl¯1xP!ÚÒú•£H?Q§mxF•´U9‰¦–ÂrwåBSj•ãÖJZÂ$áNViRP “¤‚…æ«K3Ùý¶Â´œ‹TÉXaúøú%Ъ­¶Y~ýô®ìö¢-ˆó9à³³'L0>âø—0n$‡‘û~“%jª<аÉS©äœÁ³*6Uܽñ7€iª0åû–5ý­ @Í+[Ж¤Å·½€úàÐÎéFËŒüŽ×$gÖÞ<ôÕA¤ÿ¹Ö@Ý›¯Ò¶ ì¦a±Á¶õú}‹ ˆ¦©»ËMºL—Çÿ¬  @,ÀÃÈݳ`×SØ‹—0šŸV:”ITšèã ¿* ZFUó®¨8]‘XqûÝ*9êÒZ"¹¨ʼnü™ÀEýZr\;ŠøÚMnd¸ôõÔ´£X¿%}­T¿$þ~î”ö¶© ÂGœ8·×›C¸|Ð÷‰vƪ(‘…ïƒáÞ˜AÒ NÄì(’þíu__ÐÄH€{| ŠŽúè ÄÖ|"õNØB¸wrl:AFó¸ÂÎ5ÂãbÏ´ÃD.N™v”È%yäqQ¥7ÎùÕ”³ïšV “–2üÔ·àõü½vî{ðºÓ˜¯2û’ûÞ¾Yz©Ãl]ïàÿçic÷“YÆ´ÆÜ;X«…0 á„ ×3Ayr%lVŸI]é6ãïC#eÍÂýU.Óžc¼ÂãÊZÓ±ŽÙ ‰¬#',ØÑžnÈJׯ!ç[è jv‹®¡ç–´¥|Û sÑÆ32]scÙK¢ìÄ%9 Þ7[ ŒÌ–vKj  ú. \Ò׋ùÂ5Tn‘–ïC¶Ù:ß2g&+úÎT&|˜py×ï=ž! ˜’Xc„{(‡é·ªèùìH‘?†cá=<Í©lÎ>`¬’e=M¦W+Ò3íÞ¼ÀŠ@¾ÉÒ[»Ø? †‡E^oW­ÞO¥ýmƒ³þ|ÕäÝú¢=%]ýênCöh‰KË¿[läJ¢Hx½ ÷Îï!^nsx[„Øá¶Ê+=e'Ó2$§²Ê›ëÙ{°Rå„[¨Œ›XAˆ‡ÿ¯vŸuÖuéÜÁ»~s§æ _[/3=;Prë*9áõ˜ÅÄbè ¸>£¥dS‘þª¦¦æŽ$ëù|‘Š÷zÒ]WgmêÅÓ2qÿé Ì)‹Í,ý¯Í@D’eØ]¹HðZZ:­Ç3³(UkF!TÂ3N9i~åXl gœPR€†sÆ‹*g ¼&‡â¾Ëu™ -Ûzd÷3`º¾|`(zJ¨äüÆe„‰’Sq&J>®¥¢¤Ü¸ôätpÅÀGàéCK¦vi¯=’hbŸ¼–AH¡PÿUzÜû„€\úlÊ~û®Ÿ¯íF!Á;´s :ì†zÀG¯0$F½«šÞ\²qÚ¶v¯›Íoj){ÖQ‰v $m­×Ž£f¹`wé^Ö lêh^Ü7Œ; -[2#"êqPœ>g⚈ïëV&†=ŒÑ‹–HD‚äÐK€rPã öí™Á×WŠ=žÓß„ÅßÐf\\›†ÁHcîúsì×>ÃØ«o¯lr{9±ibö~¬å告ô½gôâ•7>UAo¶BôÀ2@fÏbq¡ôÊ+µxèO¾Ûå僠'èbý”AȨP6œ¶3lw„_ÊÚßÑÈ8{SM¤8ýÀ]+ï?œXuýˬ/çXšŠ|vXü.´<Ð÷O¯t#p‘Œ:8Ûû@ ¡êl8tr#‡žoË Í»‘cK­^Ç?Zü¸ÉPw0ëgç7l(}kpŠG¬› ÌZ¹\Ê–Ç«Çåñ¬±Iɽ[Ëã 5/Y«AJfJW)šÒ2ïþTõ€{ëÒ<ð—Æ ùb /Ë‚|Ê»èF}Ä‹¿Ñ ï,"+•mï½YÓ±ýyÑ[Â/to~¶ý…dÌ0øñû“k½"oëì½ ÂžP•ŽÇs“Ah¶N$neÂO•+ ñàÇB ö}ŠNé~*&*3–,¼!Ѫ/ßÄ -'\uÓ‘~¹ "„•ÎQrؾÏgŠº‹{‹ Mm¦âmFïó­òª¹Ä.íþF¬Ðå¨A‚A¤ÎåíýnvwÖн6Cyjofу쇡ÞNˆq;5–*4`|d¤8ñ¬ÅY÷âl´±uàP‘`>ï Äúy^z `gÎã33Ó%Ô3>âHeÏ3­úн}FýšÅ_r4Г¹CÀMÚQÌKÃ<|¨ å̇[œjš„TѺÐÝ Ê›/õrð+9éXÇϥż4ɹdûó|I—0ëûÈ%„;áÇͽ`œÕñip\×ã¬ÂÄnŸ}dØhì]HÍÿéèãÁÃ~‚ìYì›·K/£w}ë¸|¹¬N{ýËlÖàãÙæBÁ •@D&ò&·YžÇÙfyÞØäÏ»è¤Éþ?d¤LªÁ|‰::ΤVOŽTÔjÎHEÛÛtvj ‹”Ó6°4²Êz‘±[Ÿ>;¿-¼ñ§·kíѯ§¿V „ð; 7ˆÄaÉjâ:ºx4Ù¸/„'K¯Z‡ ,utØ#ÂaEYaz §(¥ÇÜsàãUÊ–¤ŠÛÔj.”nêðÖZdÑüÌ DˆÕÍñýÁ@l§©è€Íé<ìÊá-Ülýj•c§±áó½jÖB„ +—Âäù˜|L9>cu;Rîn'ç' Gë]7WîÕñ.ÕP›£+Å—(ØÈo¨±tš÷ 3.JÛ[Ðcub*–½¸ P‹ß‹$ƒú¥Ô#=0¢ n™Înþä~_×ïC¨¼®ž4îóû(§¥#7ùÕ rºzQÀywü…¾z‚–±«G¶…EÛU›#ƒ9 ³^!dÎäZC–÷nŸ ñÇMþG|߬ÜŒŸ;¡Ò7û…0t¡‹ÔûÍ#Z¾ìï«‚ûûSÎø¯öOx=õ@âŒÊdÌRûoi©œACêðSõ¢D5è¯Í±_òêRD3:^yfÖ`U—¸c$at»´NÜëÅñÓÅè. AñHÔX‡®ÛSßVõñfë“6ÇçÏ]Eß‘”²ë¦|½PF¿»‘\1òTX÷=hœ‹+šÈc™Ÿ¸‰\ñØÁu½‰/X ˆ¥8Ìlžiè¥p3M '3@óEóªf*âØ[œ!U (hî£ÿmÍ n6a:Påe(æ#l„ ô„¤(õ¿²? H@Ñ@ŠV¨!fz,2„™z8õÈ\¤šóP—"¦’˜CúñZEùïq;^ VbuAƒ¹ðßÖÜZ¢îÃz Ëi CÚq$X÷rÿI „aëšÔºS³×”/ÊX+ãW¤=h¼‡ÕZ&Ô­TÑ£Šk£³ŠêðXg¹ }elËÇ9z÷)3Eý‡#‚‘óÚ˜þ¾Çƒ÷‚Þa1 bÖ0‹Qr­´Að™Gp?FÙAŒ¥ “L`Âs$—QŽÝmhDÉýjdžŸêJ5rYÁÙKîíkßýÓKg›äA]Ó;!-å'u›Tá×ÞËà*fÔ$µš¨Nê§¼&âHR²ÌzI#H¾ŠŸöÜ£¸™Œ® /Šá÷S±/µúfêfëó¨qgÃ凭Nöµ¡qê‰q1”~ C·ùÖ:wu’ÂOªFžUÍ][µ¾UŠRѸÝÀFAXޏ[äªC.¤x9]:`så¸Áª»HQˆúX F‰¤Q@N#©>"Ç…{\9À9„Úœõß÷5´„4 ’CO¦Ÿçc/YÇ¡_kâF+ÿzbO%þ錋˜K#´÷q´J¹‚âdP)L éªÆW Ul{zÙ>§ž{,Óo\Û‘›NxDù0 N ‹øHèâë7W€x®Ý¶ øº¾¶:qQؾ5¬.䌛•h0è<ìFƒ7}†šÒìÆÜˆã_üíe}a£#L“Y&v®¼\ At0úŽ\q„ɧå°,Ì'á´*4¶8÷xëÉfÖdòÈÛ%“ØiCaŽì¶Q[¦n,‡¡«8óöc£¶GÏçIdd§qñƒûËóçM)úï‚ro‰C߈㩠ŸÓ¤L{“ÈmýⲤ,¿ aVòò+K§”'8‹S=“x×# ÿqcÖ;ßÞñ×â“;7à:²5„r„ßÔø‰×^‡Ë”ÔííT\uÔÎÒÜ7ÉÞÞ8“´ñ²E9Œƒ ›¤¥ž^nô©æÆ{ª¹ÜŸê¸!¯&Š%_·§ì{ªê¾ð_\ox•öî\ôÈù?.+ÚøR†°sÓ£–á” ï›c²ýÐ<ßœÔÍÆoªÖ.Z6¥‘u_­‰!Ê\UÔ-ªâ¹Ew·¨Š!âݼ]?ðŒÖ)Ó\D`}ˆA‰þSrPˆÈé¾ä}wï¢R¿áB”õ¸aÜyXõ>îäÓìv†jNvæÆöy½[°d½ÿæíÍÙ–l4¸\ ”3T?®5èSu…ÄÐŒ~5yüáý¡üimúú>û¨Aÿ3ïû-}zGÂÚ%ÃHóè8â)~¶Ð¦øqjÇ(~g¥"p}i®ëBË«öï.5¿G¿°ÖÜJ¯!MdЋJ—Ýáé>ž±Zʾ”Æœ?ôGÉa„tؾfâN¡?p§–À«]‘y;.yÒ¸y;mÁcî!}WXpínìúúGÚ‘yãá\û~²}Å¿–jûER熿^)Zÿ…qzGUqaÕsI%¹«RnÎ:sÏœÅÆkÖ­t?«*qÙjpí2ø ï‹âÎV²RbäÖ>´’¨`êóÕñÌWs7?Öz(,¸Ó»ãªÉ‘|¤3h©SXþ ÓË ØfäÔ´š2SÊÂ_ö`ktf>ofZ—‚»@¸úô%ÌùQþ=ÜÏÿ>—­Ã© qª{D»Ç/QKÚ´¬h°áZèýÃlY¼F¥Ïƒ/Êl%SWÈ‘…¿g-äp ^±BÎQï!)òÇ”)ŽŸJ¾y"ûÕ$ü² ùŒ®Éþ8?£StLr~IÃò+Ó:œ…/MÛh×§˜g½×¨J3ÿùW«v?“& É(uU¸'™QVYn›ä!=8X`þÊaÿ9Å\6±Íð!æra´Å±ñë®\Ã’û8¾pŸå2³—;²$@ù›~ºv<ßDOýÖM#‡†öéôîB;²¼cvWS·®ë•-»Ù3LT‚-ÄüÀçNbr¹‡˜Ø±F«p¿Ó!,ð–” m,XìÀÂÇòEÅ—ùºÏlÿKܵ@µUæyÛ"Ð ¶@:%ÔÙ–ªPB ºmÖZµ"U[­}²V§-r‚µÈëZÄÇŒâÒ•ÚUˆ¾¦Ó’Œ[^¥pK2nÑu-S” uI3Ã(•b®HHHrïï—”~71Î95§9 —Óï~ßÿýûÿþúÆ «ØeƇ©MT… ˆËêÜð—/éVÖ÷Ÿ®bkud˜ŠsàšËc™Å¥¦x¼£”©=ÆrЧ¦¼É©=Õº5ìñ6^ܺ™R²(3ŸJŒÒRTá“q/ GŒÛÈ ”Ëp[‰?ë" ܺH¼ 8óLÏóû&Å5|j~eêã78~FÐÈ7t5¾°gwÙú».MŠ7úS´8’®ÝRtƒG$á!àî:ýùQHë$„Æ6¯+ZDÑ¡öýmWÍäUv™vÙ`»lB»£‘j[Z½ôBu$ÿSÁ­ëØdf<ú"ßR¶¦FîœÖÃèŸ[ ÁQ·2]Dû•}ËÎfMÞ®”?p_]Çu½¼þz E8 ,âT„’iÓ»îœ/XîÊ${³Ç^ÑòsXûý’}K^)§K…¡Ý@™ì_ð8¨zRæÝ«â¨ú†áê¼á978_~²$ˆ›ßÆwªj›a*°¿¼œä×VPí2KcÌDkA¢¦Î<¿ŸÕfùa‰U5õ‘¨öÃÁ‘*ô»ó8¨ n¢µÈi$Ónn…˜¸Bô€zÕLì§³H~µ½l ÿé–ÁE—u×b™äy¦–jûåþ¢rÊ0j"K(·O>¯ éEÝ]j ox…¾©g=l>+3Ûn­Öäíüä–õ>îÆØã’¢î…O·|>ÎNZàgÇnT¶ï„åÍéÕŸ¿Z˜yƒ 󲘸¹‰¸–ÄXÆBíL_Ì€îÖš{9F";® ™úÏ‚Sü™ú”ÀM}Š7†â«¢Ìq*g|¯ "|dx?W¡Í]€ ý[$˜j73WóUƒQÓ°Ç2j_ùº¡ŸÒæŠéú`6gÓ¨7¤×ãì•M›Þ‘ÏíÆná§Úb<Vª<Ÿ9ÞR•ií„CÖ8¹q\pÌÆ‡l0iI÷´C™ ªÉ‰:º²=WÿŽ‚÷Óv˜yEÂsѹ.ß þôÓ“âÜéqÉufÀoÇ\‚k;¾iúTÕÕ=ÄÆàs‡cЋï+ÊzAl][S®0—‘;£‹²šmzêݨª£¨ÀÚ¶zEëŠvSÞ¨©‹¤M¤¥s}ý‚q¤#.«[…Û“eMšæÈ°Å,N`GJ‚Ó Nd”Û—rC9é.ŧмÃmÑ¡¼‡ã#ŽCG´á»^Œl¸AØç™òW?VÄ÷ÎýXËþ(lVp‡8,Ð>ý†Ð‡[7ˆO²MÅ>U³Þ‹«ˆ+‹-lš Û¬Êü|?q„ßk¶Ð0êè&îºVTFâÊdø­cá›Àñn’õ‘3z­m»PVõqAyÌ@‚²3lÅñ¾päIg>θӞaw°°ï›eÀ¿HݳÇm†9ÙÙËàá(Œ8J[3ÖÈH¼(•jaiÊüxÒ¤ÛŒsŒËÀ¸¦–”&ÅŸhσyô…ÐÜ„xú2Ž»ÞŽá\ºÞöGF'ÂqžŒ‚àô½}”uSž$|Ý“ö¸–€ãSõÀ¦EKPÎWÈ2+¯Îk?†Ýùš6\úwò““}ÑÙÜÇC>„móuê3IòÌ”6 þg2èUÔdð‚áUqÅE9ã/.êÉê(›7N‡h³á´ñÅÈlùÌŒKçÙiGµÜV„]v™ê£¦}¢9\ÞŸ÷\yì§o‡¿¼ û¹ÕœCðD8¾¡t\-0ÁÀ$ÎíMq]rvk&âT{Š«Ñ7 ‰.k¯Ú±óƒ²=y/žáNLXQÇ;]¬ß`sÄ‘²´Þ îÃß@ì´µˆ0ML@¹µ¤H^ÖÑÉ—‡Z(î"=Žé:ÆXœ„"ÛP:‡4Ìpª}Hƒ8piðé}ÛÅ^.ÌÙBPz€Þœoë aÀl40f”«2©zQš¾“@ºy}‚æù ¸ß§Â[‚¡/ó Äܧcøq˽i§£íüÆ%ºï³÷ F—;:',¥Ò$·Ð¤ÉÂŒ®Ü_# -(§i%L£ÉNØ ¥©cB`j\d(§t¦ðA‚ýó2NP©›ÚOzFàèn«|÷þ3O¬ÝtT±å…½ ‡çͺ2$Ò]SÜ»JB•´ôKLí勬¥BàiÔ^¦ƒ—Ù#+·(IÚ®l‹ÁÄz­|jسmØg%hË6ÖSÒ |ó IÕÃIêÜKTçükвòb"­I_=ìãÎøéxõG²'Âñláú Ùs•êôz¦%œ¡1úW«D`^¢½‡ny»‚»ÿÇäܹAcÐ04Ý¡Èí ú5š^¨0Æ„[³¬vÖ..[]n%8’P/`Ç>¸Z`ï0žiîxm*Ëç,?ã­…~c ½^4“Ó²éR4×Ë&¶füO ç‰óц’’NAçÄD,m2•Ù Jš9ƒHš½WH¡ÅëM°²Jç³7Pj-l5Ûd6žMÏë«3«š.œZ±?ÿ¨ž;£‚!èB ã0#ü‹Ô߃ÄãzÀ~ `þädoâèH¡øâvUÙR`C€¦>ÍYݨ™\ÿïQæ&²H–+­æRgÐr^OÂD”ÞT9ù`Ëy˜ý£¾>[Š•æé¦ƒý¾, _&ë\ÀSùWW Ù/6Û¯C ûFËäpb¯Í[Ì ›•¶â“E™=;ðú¡÷+‚ʹiÒD8’2ü8Qtc¾}æN¸”˜òYܾî8 é³wX»NjT[‹Qühi”²ºê›WëµpŽ7ÄÃÖ|¥ šœ×£ªg_`CMkþD'gŽãTã(VÏháά&žYõä’]m†Ýâr\"‘?mNÜÔCøp|ÔØÞw}«1Œiˆýñ—Ê£ž³§‡>ÓëúÿÕ6²â;ѵì;ø1“ µF‰¿³öwQ Æüj7q;8R4|||s Cua]|&{ãS‹¥ž]š|€7´{€*³8z„Žo0±®¥Å€bCò*•¥I¼‘åÍ÷œXþØÞ×jVpŸR”òàÄÓ ¡ØµŽ{[Δéç½s?>®ëË~lâØëÝõÎ%7Õ­Êé"™ŒGµ6’vfRUÈ8—)†AtÛˆ:È<2b,KºÕöù£Gß[»‰·ÓÇ6c¨¥q†í&ä?ŸîNXöþV&2û1JÿÎE3k±2}0(ZÉ>Õz´~ÂõÆŠø¤ÍVö#—œìt2”GªÉüÍ#kõUsÿûФøÁS©¾d— ¶›¦“?Ô$:5÷¹ö:}“¬qãŸéjwØý¨ŒJ0´˜ Åb¢RÆ` $cÐQËLv£/uŒAÈ$cÜkWF3c:L€ó ‹_¨7¡©Ô…ì‡cŠkI¬9 á"kk(=k|mßêQ(õ\©žØõì›cù×T¢ökk å‹Fí×Òš/”JZu— á£Í„EWòÊÙñEüËÊÐbùË6èðƒÊÀ8p­æÉNb£´iå~œ;pN8œÇ[ïßÞãW‡ VÖ‹‘àšUe+C%«ØpÆÿ“5n-0A9ÀÜÙ€JulJ£ž8ªEK@|µÿ§>È ƒÎø‰Ï dÒÝI^?D.âÀ‰\¦C÷ÇLvá¡î3NØ>"zhŽØN°ÊÏÑ“<ºO,¸‘uÓœo­‰Ç~  T°4ê2ƒƒ`cL;ÏÉKꀃo%ßÚv&YñûxÿyÚõåCŸ¹;äxð™:4É~2l9×–¦1Õ ,·@²“Œ-m÷iv‘±´©^26ÕN•¨U‹2©†áaymÅKˈã¸Öàˆ‡mW}=×#ã…è¤cï¯ÍòàLþD.+·,O')ó±·’À÷V23iðWÙÐjä…v' *ÐOhæÊ¤êiôVƒÆt? î3À<³=Xö§jkŵ¡`*4h­3¥—{­âÀ×ê%£Z.|_öÉÉ-ùwNGªÖÄ=}gæÁÒ5ËÿÎRZŒŽEË„€8™lÀ•YÅ6ëRcùÍ6.7²!gä ƒ9Gø¤`è9+ö€Ïæã€ ?à^ ÊÉRÙíéÕõõŽCªŠÔ¶Åée„Ò9E¯_晪Ã#W_ ê}ƒ‰ÚAÙM‡f—*‚Šäg·Œ“{ßÌÞ Þp’Œ74_}êpkãB”wèy–³s/Çí‰ë?»iûß3o ëÑ•gž{þŸ¹³jâÊx[Ç&iÒêJ„' ZµgW!0 -#¼ªµÝ]wiUB*mmуýX¡IqûêÊ–÷jk=mýxUIì©¢E2&YW|ݺ,nÁ‚%dåµ²H'¥@b&3÷Íäˬܦ=Ç>œsz9=çÎýßÿýþþFÆ#;ÄxÙôÊÆhÿZÅðÝiÉŽ£Õ·{MÀþWÏ ÄQéo»á ú¯EJÎc ª§äìÕz çɦÏïÊwhÒ>‘xp&°mx*j‹>ó’u/øŸwå@7»u‚ÀX£°aÁ>NÀ8ñA}F0;'ãAÏžÏiL%£W‰k»«œ î™e%÷‰½3+ zJ¤b\{ÑýôÐ!OArŽô¹åg²k_®\¬{ÛÊêü›”; Ùúž4­)ÞòÞ¹ñ¿Žã6ŸJz‡j`$ „Õ÷ò’)QÚÃ{öº¾ž‘¹ÕåÅÒc¬Þ)CB‰wKßÝÇYÇW€…G~ôˆ05²õLÜÚ­¸ó½¯L3éøœÃZ¦‰@X¤Ðúû$ E»ò¸d”–w2¾ZÌÉQŠoi+Ô=.¨€W¦RW•ô= ç¦ ëoß¼éu¯ü”ÉdmÏdïÝG øQèà5f§³‚KÏšÊJÏŠÜX a9¿¶èúÁ•ü`sR¥ƒ£ô]2ÆíF‡N ï-0uÞ?å'¹ã&«-ªvöò]¬zŒj «W¿Kn\ãÆ^Ml º¬í/àw^ óî±¼$·1“H0N‰©è%\„Ëix/°÷üªF |3 Ý&¦ª›ux:á°2X5H0zÂü6hmFäÓKCó[xÕQ€™þµ5©vç)F0éÏ?ù(¶ ᯇW-õ¨§ÙÁô^ÒvSQ‹·ŽÛÔŽÖ’79Þ.O¨.Fr’^g­MG XW(¼T:qþÛ' ̋䓄ZoþùoÕKàÕ‰Á<6ñï]Ȧzµ{G‰|FDHƒãtKÒûéÖ‚mÉ«fê„ô ñÜ{ì‡`Š iSMY@ ô×ý?LU&ƒ@ª-¸;30æ5¡#/ ÿÎ_ØøÖþž¶  €ZÅWÀ7ç…Á#ÞÕÒ~Á^F‡Àª0¢]št‰=:˜y©;‡¤avký‚J¹ÔŒÑÊt’…À¦ÈÁM YpûeÝìWª¿®;¢+5T×Í„9ëØ|ÿÏå_Å °Þ **ÔIô_ éáW«Á(Ü` ] ×̪¦©´ü¥ŠœnçîÍ7$‡T69÷QZÔƒÒn_7}ñ·oMù­ A‚vzÄŽ5¢µi†®vu£j½MŒ›/•Yôý–hŒ}oa´ÔTHK.ó•;‡—zfú_³UzFR±,ôdå!áÜÓœi¾xÖ/a[Œ!“M”V„É`d†g0|…’©0N}X¸=Æ ?x’3ó¿c®e/¼"ó.ùötk´pCoEý:[ku'ƒÊaiÈ ý«þÕ!²)d‘E,ÛHJt Ô lMa5<ê¯Ry+Ћ«Õ$‡áaÃ2d©’Ôàq z|v• :.ïœ"1¨Rƒ¹¨ã½Úû“¨¼µÒ“¾5|zNø’`äE­…i€Àȇrˆ‚eÆ}×€„qŽSa£‘ÈAÇHHåëìžÌ"ü“Ž?‰˜}ßaMÈ„ ƒ}šQ`=‘ìI¨ç¥QùN¥n°æ¹RÕáD­Wqí¡À2bB ¢jøÜyÉ‚šÝU0ScÙC!0œa:ìæÏšpŠØu„ÿE¤#‚§èçòîÿcæá—¨93(a¥¨—y—\7[\ü¢ «ÿ;‡Ëæ†À ™)f…PÆ`®‰@ð3Íÿž­#"`|¨£ñlæáÍ”0ëïÚeW.ÕUJÞ®?øöÓÊÑRÓ@¢`·Ê·Vï~Ó€Mõààt›ÞÆK©Å›å©…¼•;ôEôíÏP×y€Uj!¬Efè7›êO¿³¼i2ÕÿƒÊ›hƒŽþÊ™—›Úæìq¶8¢=ÓŸ5§t2Ø |⡤f-.ž©¢-ƒö- ¬U\ ¥]f&ógæTÖ\fäÖ\æí}Fk^œënr”®•+3:ªŽ¡Ÿ¨ª~C%¡\jƒºùmK?öÅïz+¥=_—Z¢tB,úIÖ93  n LU½…Àh„°’ÆlºcPÍ$fSäüîРš¦Õ–¿68;™Û±-{q|…òë†ÆÍ†ïϰ¢ôy¯ß¨çI’48½"Íœ7*9[Yû?XÒ» p©ìÈ …©<ªÑVeÔ).O´†§Ô(ÿÊzAÉ…˜–xS¸( Óé¬ί "éÐ[ £âäY{ó®€dlånåX¾M‡Ýù.צêTŽ‚Žr±†š»ã­™õ‡ß²h¹å©3òVòâ&9bs(u ‘¤güÝôÌ)üÝô̈ýÝôP×îþU¼³Ó¦)8<ýó–W7sKjbµÔ'œ‹Ö˜NgýД՞Q̉b\ "S©HúÏ(•êÖ}:¿j$ж€1;nsÀq ˜ZKZð›r[Iϰöfü²3åJgQûj³¨ô[^ãu&²Þy0ø!L$|…ÙÈùoöÂì–þ>úûh˼óç ®?7hx TàÀ0CI ¸Ü1£Ö1$_¦-Û ŒôgR¹ƒ·ÄüÑÌûD?#o݃ü]¬Þ„ÙÍ{ܵX£2™ó+zÚ㎄©þJ®x}·atN5è@Ç0g=êl`¨÷£o£àƒÁtkElQîÓ €‰•L‚À ŒÐÈFšD´od~û†½g_&‹¸g_°o¸»6/lMzï]Co)FÖŠK]6Õ€²2 j‰âX91ì‚–¾$¦¦ÅÜÌ$wv°Í©Æ4s¯³ª#ûžÎà[1m¢wÌBÃ^d¹ƒIg`h©M}K²(:;M5€äˆX >’1–Þ¢¯6yª$K–ÐÌò¿fKhFÔk\üU#cß+71Z–pçIö€‘§_e·Ó¯¾Xù­l¾£`Œ¯K µáf@Pbö¶FI„mm“ПAžvÇVÈ cOÜVPVvWÂd„&FïZ…ˆ4eDøXµciŒÝ!¼ Ø?­­´–Oh(ÊF\U:¯”`§‹ r²sîË–8(€#Î917·¿ÚyðÁcͨكvSÓ£e›¨V²›xa{7¶uA­ç>¯üÍMW¼ià®amô@`¼F–Ári°s)¤u •Нv×$›ÆŽa€)ùbzhÑx¨{ªZªýÇyk Š×ŠX:yª|0Ù€ÂF¦PØHä ;Ä’m¬ãT ³…KcjFÅŽ¹Q±º÷7ô¿Û©iXmè¨Lq)«Æº©OÈf œÝ6à­Ý7Þ€ãd7zSŠÆO“'NY´v“Õ&þˆcê~¡ß²½h?{ÌFŽ”C<;_lG®žåR¶/à‹DƸÚ¹æÞz{†Ì_P)õ›49Ï*‚oJ&YI˜”;ñÈûåy\Kºÿw‹8þ$÷„ì‚qàóEw­”þåS#µþƒ Udè)Ä6ye­^I+ÕZØyznvʉ¹ÆÅ†q ŒÓmâ’X©¿ŠºK{]—Ìÿí‹fc#/ÖG³+oa.ƒE HdaÅpuykq( vrÖÜLÃH‰þT]õú9p8…ÊÓt)} Æ•óMÊ›2 v^ÄK*ã-zöèŒ)Ç‚Ó f»ÌŽÓJ‹§ØåyÊÚI©cêF §ŸœeÇ™§Ïϲ1T-æÁ€Àp'CÕ"­»¼€½t‚“ƒb䑉>…ް7fDDÓ 5f¼ŸÎ±X©nô%C]ϧÆC/áô.swٙ퀴“.¼.GUE Ðo€¨õzÍ®¾oZpÊî¤ð¾!ÒCQ£×§ky·š3Ç«õµBv.!ÌAY©Y$˜ÔE¦(ºA"/ºABý<ËÞšÄ?ˆ²—ü3aœ$ÇÔ$¸ZJÚéµáäE†ŽúÑE?bJüð쵘#.€¡…»ˆÝ?‚€â ~:⯚JŸ”źíIYy!æ%ÛóV¹Ö¹òBÌñ¥õà4íÆBq­³¥CM€á7än`÷.Ë[;g„3ý–dmùË‚|C¿½¨Ç[d ñ2Z†·uõàý6}­hÍÞèÙ<öH6 !Íß§NHÌL²ø¬ÈŸ’ùx{¬g°ö nëz°2—ü¹ª&àÒ†kæbïP_¦ î×Y7¾4=[´ÜÂ^_ #ÌÁøôšît-Ù×êw#"ZkÈhzÂòŠE¡å ³ç¯hSŸ¸!±­öf´\¡~¶‡t ‘’”ØÅ@åJú¬êÚ~#À¼ÔN9À»ìK€õ‚–ÀaÀÇÚOÇ¡üf‘l»õº³c€{™]ÜañwȎ˧"p¶±ßø^vÎm$–{ˆsÛ”op+o\l°Ö2ñU30àà~§àÖžÔLjúØÎ#P†šA·SâǶ-9[®‹ò5 òßiDI€OÒU ÈÁ"­Œœ§å<}*9O\ÎC˜›Ïî¹h‰×Ïÿ*q¶`•¨*Ú´tº”¢®—j\*$0Ìî ë× RA¶{ ¨2غ¨žM„¦§ ÂÆ2u^·èuQ¬× ym%•¤Sq¶à´ÌˆyeiAí½ƒ1nÉhEEŸÑ…iݼ| @+°}£°S€~lÀF¿ =Nà$™Ùþ (nñFÙ× qH¥°£-ÉvDg¤ßjXˆ+#=b¡ÎnîÉŸGŸqÇø¥Œ8û¯'ÔÁ,ÄA»ÿq£„×)*æì7¢$}c;V][+®2Ü]FµV$uMz.ñÜ\ý?²e¬íà„ΞŒÌœ ï‡ÀØv0½8ñþcÿõ‘ Ü¾þòî]i‰©©´ ”Rûq²­ÔÞ l7^ 4xýzŒ– w}±€ÿ&Ü\ÐB¾’w¨7zßÅ3ÒBQav¶ Xð·RÅÄÀ\!« ÓAÝFCëJdiSiˆÈYª² #Ó´Úö¼eVÿ¹¾½w¨‚Ã[*±ç_ô‹”´:{Ó1÷b÷Æêª—ãgRÊíåk¸‡ŒQVúȽs23ºsã°X1 ¿Û‰ñ®¹eã´¾°n,—š&±ú ¸:fläf`J ,>v3øÝØÈLüÛAÆF¤½h¥#F»h†  |yõ¹‡øÎüDU…æ£ T0a®îãï°T•0Ù–lÙ?\Ӣש—Ô 7–—,ÿ¤£ Ywåo)ÓúÎ,ßp#ÃR¹¨SíÄ̘ó0Ó×ð©6¢Ñ|ÚºŸßÿYôi‰ÉÚ¾%—Õd §ßý;í5øüáïí-C T,#‡îœÒÆ ¡ú1ów›´¢œËËGê¼óûª§UØcŇ=Uª£UTØ©¼8±‡,>žâ~rö~gIÏÆ9qªæ_ÛÏŽ{s~ øÇWìŸ$¾NzŒþ«ÿSEþù Üh´ÍW'Á GoGÿ·ójâÎöx[Á€Áº G‚n«ýãŸòöIê;m—RÜíÛ·nQ [»UÁ†žZá%Â(_ûºÐgÏsk{ßÚj[Zè{Ul!™Âì¾Òí®ËJ%¬ØŒ©t·èL-ÉÄLfî›™d·¿Á¦Ýc8r y{j>Üwü“7ù[ã`DPqáÞ'Yí ªíUÆq¬£?·ƒêlvµ`ËϾ¼dØtµwª¨/Šl•`»yŠ,øTž»šìù£MI™ß¨˜œÌ¸ø×´M5ù½ÇRÕõ—~¹NÝŸFÄÛ ûCså)3áA÷ ¿j¤gë;<ƒZ¡•î“ÜçˆÌ‰:r ¯œˆ³Ktœ3½„ÿk÷¼ŸÅ]6ů[”xWÍæuËSWÆ/35ª ÔÖ|O×1²3´÷Òîw-¾LrjÎ/=x!Áå O‚” a8üŠ"…tÀãRñ$~a‰<Õíá šö¨kú ü×Ú¸¤9&z½2þKusâºÕíFœI¨üA…§øºy„WAwM…Òžò)†¿$&–ˆ°àMì¢ÀÆxGUÆÞ9#6Ùð*3ÿZK ^=M<àØò¤·±w›¾F¾d^‹Âžhކ!K¬½òû£ýfR1¯YU,åW²câ¶M§ ÷<–f‰ Á§8>ƒ 'üáþ Ù:-Šb’Ò^Ž=²Ô9ß™…ަ¿CkÖÑâ¡E'ÒÊþôâœå µ¾4;ç8FêHvË…óÚ‚ÿÇðWÒîfGSÜ}FuxUiK];fêâEE H§(HéáÑ6a‰(9æL‚ÍÂÙ„¹'É/ð°8 {Tž#éì£qps¹]~xPl™á™ò&u×ó&u±{“ÓiñÕëÒLÃËS×îfóÙbóq|¸¸¼ï®”jßô¾-çÙ†ºO9aÁ+éNîíá½y=é¤y‚±˜a[­×é dxÖo¥‰:$6ŒË_~íË yÑ_ÎM'ÆW«ú¼Çåb3- o‚–œº!,ÝwÛïy¶Úµÿg|VñC¨„òÚ¸y¸ÿ¾EGp¯àþ·AQ‡W@&ŠÎq¦ìÆ®A¯…›Çú­¸çи±ç\cŶÓ0è«Ø![z¯E OÕ°’³=È™ýÎ#®JlšÓS;µ¨9=ê=D Bé`(Ûµ«yÜH³Œ‡Å:iŽqqbT¤4!ú‘’¬Š!–„~ʪ=V®,¥‰Ø€–͈ð”0À‰¿¿\æÂ«ÊÓ8¾å¢Îûáë”o¯i2Yˆ™ë†Ø²¤ÆÖò!Þi_ؽS¥œöá¦GýR8Í{8®Mî0@‹>È×ߘò¥w;RG‹Q„•CË1/† …J|„c)3´˜ mÔH@.ÃàÍ#q²mZ é€Þ°{<úrKâÞäu™tÁçy¦? yæfÒs«y2¼òcàóQ…"çÊ&ÖÂøçéíkRÅ4“ï ÷‰ÔÒÔÒ‚KøUÜ–þ—1°÷)-ÔEÇÊ6?ʵWéZÔͲŃÚoЏa¼Ôæõ=[ŒûW¼¦{þ÷öá°I¡ˆÏÚ:ưGüÁ-õ‹ÃÏ8²xßÒ·ÕL×ûï*íäë«Ý —[q”øPë.uÛ»û¼M—¸vÝI»"³I¶^Q«™á > lz‘ò„ÎduLÿõÌÏ€ÚV"‰Í)G4Úª —õ¥"½ ±äñ¦3›mnè×ï°+¢ƒy%}´˜MÛ ‚«LùVh>~VÙØÊ•˜8#¶Û%‘+ɸh‘¶ânÌÜ…Ü—RyënˆK.¶§^¢û®$‘ЀáKi®èr¼ŽÐfNìB›Séð;o긪[°ó–Ó:`¯)köWâ=& êh`&0Ð=µT¸EÁ†Ó/˜p÷¨„ȵf[–p飀 ±)… ÁË…µp¹œ-¹¯¤éႬýE ÅðzÑþ®Ö̰¿ÚLÕʨ˜ò·°¾³Ì¢P]‡ìG&)zlM'È[hc?¶˜N'”ÛœM»¥.¾m}Õ¹ÆíІ!åÜ•ÆýêòXjÞ+Yä]¡$Xkî4³“!;/œßA1 !´ì"aÏ—„ˆëH,@ÀÂ.†U8Ø€ÃN—$Ùèó›-žSg åD‘°«­Ó:¬½-Q}hÙ¿÷X•ºªþT‹üp¡Ä…Qê*YZñP-¢™M<È+FfbVŒÌžÎ<Ø÷7?Oßü6ú¹yÖøÔ½+Š8h¡„ ‚Íàö •Öv쨭VAôÕþµ‰//–èÝ]+ö]_L³”ƒÔÎýj)»µ¢02§Ó9b쌌å쇫úou¶úv§ºf%ý«Ì½êæ?²þ$ p›’â™*î <ý—@ˆ‡ypðKƒ8×Íצh×÷èFw_Àp𰉆+kZI~Ãby§-ÐèQLIÛ2ÊyQ_§¼Y¸ f+&üM´)=¿·óûÅðákiDù6…¯aÞIûmit+œ”ÀÄc°Þ”úÚMc À0Q;#X"'A”„’¾?hºKZÃ@D/?FBˆþ‹„8€!h/>6(|J€µTA°QXVí¥±ßjÚgA'jQ ä)P®Xh‰2s"[`vô}„U‘¶ÀìXž˜œéîÂG”¬BÒžøj'_ЮE! ˆc‰#’~ç͇®êâwÆ}TR†p‹Ä¿áàSD8á ·× ÐÑôñšãüµ1Y̬E[˜‰ÍžZÏâª:L‹Â ·7In<º¿Ï¨#\-¯6“—9-6þœdPqä–3ÝL!î~ÿdÁíñõy}øînán`‹ÉýDÏšoð1ï¶Â®yTýÖ:[Æ–uâ(<»+¼­¢¯£ðõ±äJwÿŽ”Ëï˜f³¥ß°.[ý5')[…ìÀ t±„Ó0ˆ£õ©¿/Z“¼*ù±ãmCÉÞÚ¥sµO3‡‚¸åàyåp{ûâÿIî±y齪eGËF³ïíßù0\1*ÚÂ+êÁ× lt?ClYÝqžPd†ä  C æ‹FØ+³¤šåèv’ùQ´ÙNbÉPi¦};k ~³ôÊγg¤TËŒZ×»ÝÆ»K´<‹W‹ gó†‰r}áþDXFgN¦æûãkø‡Ÿ£÷ó¡¸`Ñ$g" äÁEÀO<î?~¯-؃oÑM¬Il.½÷­m!¡€Ä”ç•áIxáˆéª®@¶ÝB‹â šˆ"-Í[r/ûC(***fgkQxTE_VŽøT43šb¤a@ŠÛGºbbš½é®˜7€ß8ˆp·|&æu¾w@vgEq ˆY‘Ø”QiÖhJ*G.€‹d¤bŠMw8=´¯gÑšŒø¼¼9ŸÍëJ¯¢êh ˜§·¾åV}ýö†ò÷µBؾã&Ù¬'Š<€jôPK^{öL¯]õÚcÙ¦¼ö﯂ë-ÜWðIá> ¾³ô¡Ž6<4é\«8Ï”)쇖€{Ëçõ´›O¨p»ÊÎsŽq“Ò‹[.rx¼(ç!FD=ü·!|¸i–íá5¡æVˆR…Éàdeå^s‘QjVnÌΣð7SóÛP~¾2¦xpQ}Œ&)Çó \0n¡ë‹8ÖV·c?PމA ‹F1¤œx-€ÅÌ ×(“X¸Ì§¸áôO'(7Ï*G(ÖXH †AhŽ üSؘ‚W‡ð…ÖÀá@`¤×8èh»Ø§„»îoJ_Öx J6êCÁ PIÛÙã°&›~.1ï–8º“®O4¶r+&“-áU¦P­…³±¾_|L¤o3_é +œÎÇùÂúz°§X=§ÎŽÚSS3OÝ+"eä7ç™È‚.ÐJÑ#Sèÿ˜ši=ªXš¸h¯p‰Ø¥ØJá¦ìÒ‰ÏcÈ«ô3ඉyJ©t:{ŒÂ;!žQ1’"•Xذ&˜/áBŠú7ëYnwO÷QøÎiõ–Ô7ë Ųù%‹`#d墎ž#ÜÓ™¬CCô}YîiLµ)ÖápðÇ+“Ï ˜k j­0Vkå¬Ák·çPœ3ü‡”“ØÊëðâ¸e„ štÝ¢b DÕÇèK¡ –?žCÒP¼©,1‰õû¢ P]¦ 49’EŒ‰`{­ºâ°ŽC#Lª¾Ò S9$,-² š\­›±Ig9>c0,nÂCŽ×­;~óqòP:Ì2©(½ij,ÜtVöÁ2+²ýH¼tªß0Kò|²c©­Èºæù´:ìì)vŽªX>rÅ?ê=7¯a¬ÃŠ€Èa8 SiÃŒYBfî ÿOÝÕ€7QæùJZmJÀ¶´)¸ ®HÓ6Ó]ÚdE¬E<‘£…=OakI¹S[û‘Ñ&4øñuqw© ¨·@êÞbÛŽmÔÅÛ‡ÇZ ÁvÉ8Ú»£Ä2Cm3!“™ÿ½“¤%Â;• Û{.@“LòðtÞ¯ÿ×ï÷ûÇ>Ky‘YÊ8j3Àð¯–~iÌ×­XµS­¤Û-¡…¡úÌ }íXgãw'ÿ‰ñâ–¦ Ÿ}çªróI}´¼Ár4‹a37±Áû!fÇCÎÆ"¾å[vt-[ÁÌEjl1ÕB#5¶¹Í”T¼$íÙ=;î06ô9b¦Sœ6H2õè9Ó´Å;ÊdŠè5 ówêÌõUÃw÷&s—Ïíiža›ji#Pl¡û9šneùGÒêò‰"•„|¶~^ÎÿÇïÛÚ)ýä•+MÊ…z,IO(cª‹Í %1ÌpïØ⫋½;[zñÎZh`Á£ž‘Ÿ¨§¿~.—$¶Â§•èú¹,‹úç.úè‡ †?U€Ë£SDÊìÈ'Jänó"`Ž]Ì•Bý¸Ô]³í¥8s¼]“мìM‹1ŸIçÉ`ÀÐfh¦FŽôôt Ì4$6}ü÷©õŒÃ#²ž’ÂxÁËFádž²Ô²¬ÒiÉÆÏïǘÆ52–+—v S® ÄÎkvû5ˆË/¤¬L{ˆ±§¹JNÞ¼OKKékÁç¥Dòl$©wMÕú+ßM¾•–¼- ìϪèà¹> [M2¨]fb¾ l¯ "ï­V<;qÄi\óFt˜èõã¬Ôˆ¨-þ@QÔöª°ú{ž˜Â-}ƒ]›3#¿ÓѶsÝÊKêùçQð ôœmܲbF³ì/vÛˆ”ÞCŠ£áÐðêòDmpñ[yË{I—d´tN7.U"åcÈ:ŒA•ñùhõë/ãäâ!ÿH¹úüèì:¦b2 N>Ôã-uD*)Š "vPÇxÖñ·OL»WuÖ7+þřݷ•ïO-IhœEÛg˜ Úîûjнƒ£Èýæ,œ¹„ã^àBAl€¼ z×à꟨b‡%3¨÷“"UËÀ°Õ¶Ÿ7²@-ïoâúØo´î?qoþ¥¥«Ävœiê´û×w%ämkrß3œþÏcYžò©…Éäà4·3ˆ±è„øY"öj&1‹.žZÀA—ê.‡½Úüæ·]U=õó}Z‡´‹^õs8骠i@n=ýWò-±"‚ƒ3Oñ~‹”Þ.Jâ¡s¾Ô²ôµâaʦžWgMVžÿ®† §uÚŽ(v¦×DèÅh¤ò®r_éâ-À$òq€d«[Õ É({ bêV8ÞØ_î§:N’f¨¶òèààE‡È€E yÖ_Ë;DŠEgÃúÑ•vtj8(]éG_ó“m;ú"Eq½Êˆƒ‚¨dÀýè­>¦áùl 0Ìë,óšÈ’#R"/ªÇlnø²RÙXÊ/y›A~zPQ…À±¢s±kAî|“Õð.„¹Âý®á~w91A­ÆÄ=Õ)E`?Þ½q°à$).aÎzÇÞ¶Ð>äÉпvÚQïru0Bû{èu•bB`¨ÒY¹XL¹-J^TO”¥3:Ü%¶[U=Ó½¾„¯­àk;\–`®ë¯†*TW}§Ñ“d0<¡7œ¸Í=j.ßGõ%U(SÙ ËYN8ã„Oó2²¢Û(¶m׫¯¦ÀùÎ/N* €82î¬É–+<ºz¤Ä“âñb«Uº0k,–ý0^ãyc»Ã®‰›ýâ'£fácÍÃüwòÊ£²l£Î¦Atzk2ºå6LÃi†’’öö‰Šá<¡O º0 àäÛ§.ÿôß¹(ˆ|¡2ïÿüëx¯†É{wqçÔçñÒêBèè‘fevœâ@Z²ºRÙÀ* |L½èâ[vL‡WÛFóŸnPí¸¹vq§ÙžªØG–Ðá"s¼Ù¿¤¬²Ùvs‘úÒ²¡H{^1²ÙQ^½‚ne5î!\,)2´C§á4}!Žài¶Xš§XиB ií|&Ú%ý÷ Båê Îm•æêõmÕÕ!¨sä/ gl‡ãæ*¸Ïç… ÆÂYŠ ²cp“(x#Mõò-oë—h–m-ŒSÙ„Z`qièM"%qÇ¿æ)nXý çϰnSW—ž(Ú>¢¥YÑÈKg=²+‰l3‰Ì6ò‰´ûŸí µT• @--ÐUà¯û9©1ò¾ÁóÜñDUÂzåc Ðã‘ý“§*KÝò•­ËÕ£Ò.v1ñ'viMÝL ¹LÛÐÊA~‹à‚Zi Çwj1°§ª¦Ï[éÇÓúË i‰fûûœy½²8&‘uy0­"÷½8A" ãl¼–rÆ1´ßÓ<}á*0´ãíÃïy{CÌýþæOª¶êÓó\)Ò‚\؃–€i?‰j4§m²é~˜áÔUr<ìBns-ø­ò—ýUò—]2§Ÿ%ÝpÓœi”àP 3ˆh ƒ´¤t!7mâàðG Ç7ŸƒÌÊÈ×EAróuJ!aèÜÏ¿*DnsÃê«çæN“u27<7w÷ºÙ Éwí^ÜB'Æ÷ôw/в×V š;Z»Kë-Nͺ½¿(¥£ÕMIÉà{x‘eüÊÇ_jAV°ÝÒÀšÄ0^hÝ o[f Ûëi€S5¥5k™JÏo;™;ý¥5¥š¸÷-TÏþÅ-=œû¾5Y½tÁ¬U³vg¸÷+EóD4=xzô‰'ñGŽë‰h#ösŽTA«úR¼‘²4@ìãx£7v©þC]êÖmŸ¢îѲô(b ÒµµýࣃEâpªlÑ8>h i Ø ™´ÈÏooEÛ"yÁa²~[(u­ÒôÛÕúDYåkµY¥XÈ"0­²ÿÙ€s›÷IÅK~güURUH~ZQÿÔ EKÁ—Ÿ}±AõbÑ]*±ÓÆ™ykªÁR)ÑAC]¡À[µ,IÁ&@îð´/ì ø—ÿ1ý§þLJ¬ûuC}ƒrŒk£Ecå„°“¹QÈÉP"òNlU+ ÔÇ’b‡NnùÚn¢y4¾õS´Œ¬XÌ’, ÕfeS„k’Eæç¡ƒmL¹6,_ÇÜJ8 °,{8¨y޳u -û´ÀH‚ˆü1ÇœbRóä¹J· —³”‹ƒ?;Å™O64ý’³±À»LŠÓ9«¶™}¹Šœ–'?vîæ¸Š\³uCr ÃÜæ²îßÙm5.ßÀ‰ÛO¤åÙV[ªçièXl3ÉÙcŸ,’…ürÙà í {«·eÞÔlŠ»~êcÍb§ß|.I𯨶|K?´z´4Ú ­4ˆ ¡0ÓÚ‘²±Æ?ï‹)?õ/hlX—è3N]¬È`›nc:ü '‰¢ÍAñCìÙë׃——¥ëÍÐBÍ9°û²)/¨ÄÀh+š+…è\©yÁq±’!b[~4g’:¥ÛÔåõ Ïz²ª©\c‰)š¢oa¯ hÄLÓÚjõc+^Øj:Ôø^²:ù®"JñÂð÷²³0§k˜»Ò}âé6 ì¿”s@SÚHñϲò÷­‰…§o(ꪭ÷!?«ÿ¾"¶1­ÈV{ãÇf{¯zÆ)\A—œ–á=ò=‡âE"z`q?Dì `ìžà€ïŠE¹K\T¨KOÒÚÖ'ÝÒü¨cþÍœ™W0ºü†† VÃyèêG²m„Š“f+ŸŸ²Ò{må!ï:üFp&.7>bÛzÛƒ‹{”7:N4M 7/‡óÙY¹ i0r}~Ðùùo7Æí¾äfHfü% âÅ'ù§¤dü(œ”hy˜ä^ ¢¬8èe×x¹X,ñÀ°(äòyФFîúJu½€ŽÉvµ•ï—øþ ŽgeëʹúiŸ8¡Ä%Sp˜{´|Ðxé³ ¾3rDä#屋)ØwÖ>ðd`Mbâ^qcy`õº”5ÞÞöÖ#¹fÔ9h½^¬^309Ge„—µ½\´¶›É€{”!I¯[J ¸àö›œ€þ2™ Ö¸ ’[œ£h„Mà•Û!F~Ž=…Lù%S6™½bdÂd­¸æ{£~q‰2¿LP'@70¤ÜüP$A'º‚†$€¾g§ à†€H¢Q3À´E¢F(4ž^÷¨SºýWÝ&÷ •êMqº· _3Ú›2’2Šž«V43;ÖH3Ö–÷YS–ùüYå ƒL pqïd®µ¢i›Ü’«Ÿµð®:C?[/°ÖÙZ‹Ð/ ´ÃoñA;Ú_ZÞoå%ô‡‘À£•17<œ"EÐþQð¹§‹@‚È„ÄídYþmyµÑä)àCû<2-bÔt)¶n&¢I£+‘§-à©+­´_ §bÏÛá˜dÙ˜9”ŽÇÚ›g…‘`!„8^Û;„ËŠÔ5†ÛŸüû×LîÒRåÒ†3–m4)ˆ˜·O¯:‚²ÏóVyõ=éh… œ|J §y‡ìò@PG‹.jxz9Kѵè KÒZVÈxü ­Z8Â2Bù±E™f±QÑQØéT¿–p©êìKKIf8n¶â^Äð̰"í!2cN(,Œ0­r”ˆÃD«œ˜ˆVcáÑáG¾ÒVž+~XÅÓhÏi‚~=ýß$Z{•y†1–•ƒ“fÊ’éNúhºShµgcç6TôÎŽ‰R>Vó>â§æéû3?ܹ¹n§W/LDó´Doû·¿'.¤ü½œ‹k»Å,£‘ «PG c9K?’îðãT͵3>+²õ4™Å³.~PìHsŸ¢Ô+Ò³U©Áæ9ê;f–؆Ón?e©”„é಴jDÚ2ôÔÍ Ò×u=;¯ÿÚ•8çeE>)ámaÄP¤Hœ;›Pb”æF`±°%.6ÅÌ™¶:cdö¶–Q Ýõ´”d5ùÍ­ŸÏXBªþj ’3•Àò2ádXæ¼¶œ ÚŠ ²#‰Œüqшæ ǶK>W©ƒÙrjê‚ ‚%\«[=¶ÖP0Æ™‰ô^Q¬5„[¯ÄTkk½’alyÎFñÛ(^ßs÷”­úÔÕzÁí¯x*XX!lX¨=2Ô«í÷u­ ý‚yC{é÷¦d.§_èrúÂy&Ó »ðùçE»xßìídM£¿„ÔIÜë»`U--ÚHÕ[ì.MR¼=Øv!©á‘›A‘_CDÓ¿þ½Í í¯‰÷ðäÚhLÏKìšÎ&äzB˜D„Þf]Á,ÅŽqþAó…‰$p|;œþ캩F‰;R&ÕÄ’¡-ó¨^!aàÄ’g6Ý“´eJŸ™¸,&Ç?RŠ4×0pbNsŠ~ D‰_Ma¯³K-A1+O}àû{EKï—_ ÿºUŸœjÎè+K]ºPmTÝ‘45qÎÎYI['˜JL6‹§Íº¬Ió¿Ù± üf_Lå_§I •´…êûñß´>äÓ9(¦ƒGÑÃzäh‚öÍN—xºÍãÙ͉”Zy–g?2€èST  °ûp¥¡IÓ3¾úÇ5Á;÷¿°$]C3wR̦v÷AzÐÂy§S¾ëiiùh{¾tÔ!µ2·DyÚe’ΚázïÔ”pܦ#å£5’g‡d¾æÆÿ¹ïV/H‚QçM=Y…V@Þß䌽Қ‹$032yMÞü™­l¦jVË⯽qv[Ñ_·è‰»¨&Ît}½ò»@CµW¨TûC»Û*I ²*!jo·‡u¹÷ölµõ²v»¶ê†½]…5?s%t·{®´ž­]ëÖì¶j[ I[ÔL÷h{Û-U×Т ³rZ)`¢ ™ÉÌwg’¤ò ¥mÈ9’Žßïû½ßû>ïó ­o‚>!hNü-àÏ-þ2öö—Gv>:n*$y×"„¡#8R¸šÚQ.übô±Á¶ S»Õ²àhkï֪θ^Öù+ZnWŸUADÿ •R!æDO@.&úáO$ªåÿók[ÒÆSáLfBlõN‚ô[9ájdGÝâÈ\—¥ü›>Ò5àŸu•3´7@p>Š`¸5!°†ó̹iƒ5 å*ðªc'">¡Y,’ÁuZ‹” ÓwE%6?ƒ²Ë–Òg[ŽÃA»°~"ˆ°Dÿ^¾$~p¾ïeC¿fc¡:¨×E´ìÉ?—û*ØoäãÙ,o©(¿‹r9ŸòŸ!2EM»&ά­æG/ì0ÄÜÉ© \¬våf•„ëYTˆùƒ)É+4Â>×(â÷¹2ü\t£'D/Ýè{îÜŠÇ÷‡=±”4àIíÛIWœÑz~˜Ñ¥]²ñŠ3Ì€ŒÒµ´ŹU(i=XΫwVÈ]¿KÒq{6T˜’ÑY?E¬A±q°õ©” ‹=ùR^CUyªÊ8UÙomöìþÏŸ8.4Ìœ—e¨±a>6pPöqŒ8¿¿ (Ø $K¯±ŒÅQcNÚ Ð#9Æ!-na)ëà D+U!¡- °€¤ÐÖËNV >=ì¾àÀ÷2¨“]K¹|ü=5âþV_ׂ¥ 8.ˆÚ ñþbN‹êAcWÓ zL¬=44·Fð®”!n/R<õp"‰×’#·w îç}׳Jfåü‘óZ+ð âF?\Â1 ÀÕ,ÇÜùŒ=à:rêu`Mhù8[,ôcÜùî0» ä^4¬½Wjazº¤ÛÞ‹wר1»(¾I +@ƒ‘â}KÝ}Û¥ø‰ŒÙ½žjuQîŽ@ ŸßË„òøîBA!,4ƒëQór{HT‡>νèÞÖàÕ=µí@Ýã—-þËáÝëæ‰«ã«ØÖð«7|nÅóéž`ߘ‹®Ž/ ‚µæfÎÉ„¯öjXÑ@«®šàˈ#‚¢|9!ðnä¶ Ó¿ ^[™òTöœå—²ô]žr¶kí9yOËz«±¼v-{ÏÀZöœË[?xôò¼Awµg-ÚœW~œ¸üW »müqÿÑ Œñ>´ŠOÅìõû‚ÓYÚÞVÇþCtíÃn‹uQáp’_½’­O­Ÿ×l o¼3 §©ã ã?†HlqÁ¦n†ÑèêxÉ5Øÿ[ÂÓu¸ffù@DIV'´…U‘"7q’UEâ$«ÑbLm²>ëI­“è¸g¶T¶2G²öt–_ÇŽV3> ŸKž± 4ЕÏ>@¯Z<Ÿ­>=TxWò•u‹ñlaP¾áÁ˜¬:xá]ÞÕˆF¤Õ¹#èÍR3yDÁlŠÄ¯ÛQp¬«KmºõõÜz¿µkZ¿qìtêÇ\ºß1NÐctEÓDGà\À‹é ‚hÉÑ^ l-¤7Û~H6·Ô‘Í£®Î•G].¾¦¨ì3Ñ –¦‚TçVLÔ("ª€j™u°"¬ ˜¨òDºæ i`àÒ2-ï{¦(ÔTCÄŒ ÔíVI<âL4¸œ%܌κ¾ÏÒ…f¶©Áö6ïÑÙŒál¼^ѳ6tä÷²Ã~c­Á~Pð†8÷öïå8%=MƒYZÒŸ)Û§H¶f¤ü:YX£Ž—/zœÿ(nÖbÆ%VŒ33÷º08qîèÔÉÈ™6uñXq˜g1ÝÔ茷 F†/nW nÝ5>´¸ý&|¼7dWÍzhrô}l~ÅÕáj\õÝ9æò7É·M•N{¿f‰;¢0!(¬S#Ä\‘0é@¤lB~éR¸l"¡jwE\—š7åi§êSø%+GÁ°hußþºƒJ6u$M -Q}§cóܘêjÖ䢒‰W½0¸W7¦†Á–K`åÊJ!2óGÂÍ¢Üãʼn³WÇØÇ:ËкԺ¢Ü¥,Kʺ”mpЫOK½N¯põÀX¹ ¬½7#|˜äDi/c4-•ûOé}Ö{ðZmã‡]â«‚È€IX ˜djB!@3WVÈÄàÊš^Y‘HBP §ÏÓÖVŒ€é·Ÿ»õ.tt,ÈÇzwó×6ÅœÓcwR¯‘^¬wŽ„:3è ´°Ïll-x˯í®5)VÛÍÎíRZî¬ÁéV– Áê°áõ1(mÚz„öpù£^i¸Å}‹xt™Ž·rÈ5‡lì83YÞ›9H`â%0_^5É q™*ı÷‰ÉXF]¡“@VõûHzwÎ>ä‹N£þï&9Qj§H–Åøïô€ ý‹òÏHŒ¶‹"ü :Äѱjˆ<„BÃÜ©&ɉ÷6ŒóL¨·Qý¡ªuw¼1û–U+ïžõ/+ä¿Ýiðõ`œ IšG^4–D×Éíöp9]•öÔŸÈùñœgë’§púâ%!tü‚,/›¸µ9Óhƒ›Z‘qíå|Uá?Škxl'M×éšé6ª!÷?%4³X¢™ DáE(šÄ($Ë’÷º¤¼þˆãÉ¥wX7ü©ñ¬¶•#;œ·Tþn ¿#Ì\A1ÃA«ÑÏAÔû$° «¤õµn;kÚP‰¯‡%…ĤM÷œ€Õ”¢€F{…Åw€Í¤Ù¸ð•ýÅm›¨ÕSOSW`±Õ„ÝbÅmáD,Í.nK,QcÉ/³ÿ•K“[?ýgÊ­cƒ –ÐOKÓ‰žQ#joñ±àØ÷6 ¤nÂO}™Î1aÚ †–ø@oËá«»Y³×èE“ejNQQÓ”RÊŠÔ>xØ–„V/T¸(dK4‰DAŠ&ÒNù“®4m©l‡yÜ›ÆrÒŽ.ƒ¾TK¡“›SË·ñ“*`ákËÀ`™9âÖ#‹¸‚ß„j…ø~Œlß[ƒ:žL{ú-›iŒUâíFâVÎJ¾±H¸að.Àù¾Ôñ ¯ë éwå²Ä3ŸNÚaËð¦Z¡¾‘‘šé±ˆ‡'ÌÔú¹©ö_¯=ß*èTŸÍ…ü‘CÖ¼éV q6\!J2ኄH'Lø[m¹wµéêRg¸Üõ xÆÏZ\Už |í¹KœG QÂâA¼{­"hXJ æØ†ùºŒŠ*‚Ò¡èI ßÊyD“.H<[àƒ:þsxÚcP”ÄéNÕ!J.xvhJâES¦ iP$NÒÍnô÷½ë[sÉÔzÓêkW‘Þ1w@»º‰Xö¦ z!}z”óJÁh—Óÿ«ñõ^ö^nÝ O+Ì,LɈd5>”üö­¹¬ñ9Vÿ-eWÚR1Ϥˆ+§«G$î#‘ $ü|fyÕÿ\W}Ò£J®“T¤íûº`ÜtÿŽUì€EÊêÁ8ÿÅzCÎqpt¸°y“µß”srhž|‘àX_.{਄è1»¼wK¬zÌ&®ƒ( Aªb(RŽŸr…*nîC uaá ÇLý±;ÔÒ´…õÒš=’-s¿x¦»ñK×Ê‚-sÉzÜ–­GÅ ˆb²YSCfpo ”‘5¬Ž€‚Jd"ñê0((¡ò‘(æá˜¬Ø±“K;œÙ¶ò©MdR¬9¼¿„ 3ƒ *°g |6¤e(t£1hc}è/õÛ½$—w¸åDiàt_gý ù E†5½ÏsQè;À8ùuàEßürÖ!×i°5¹{ݲ­çºË­ëäU;õ¿Ã3dgE‹mEœíüwÁêDüº˜Šä0TÜ7wyž¶ÉŠs„⛢Rû/‘ÎÌ ðá&œ$>ioãt[–øPÁxËäpævÅÄÍ=„½¹+¿¹G6øÿÓ4¦J[‘ü ;(:Ä"zê˜[¸‹c,2à?a&ÁnÛ2.ï‚@–ß 0–ù,¨MË€`)0i˽@ £Ãݨ84–ù*C ŒeJ9 Ï¢a)ާa) =¥aI¨'‚ëJf¯>ÝÎIÍq¢ôãYÕôHZ)Ò>´¤½‡"Ҭƿm6»íxŽºLÏ’Ÿç êòct«ýÆÿþ𛕺Eu´¾/ÿÅòŒÝ Giùýi¢’¡Œæ ÆC£ k¢Ä—!…‹U!%T¼ RˆfÖQL0I=IȶD.6QHÂü[QšgÇù¯æ—¦Y“ûåËFü{ÿÏÁû!ö¦¤É™ uý8‹¡ˆœ/ämò‚•T`·úX“¼übÀí¬jÍÌi¼.2TÿmxŒ‡H!¸iḲ¥=k¶ã>Þ¸F‘á?—ù€íÉFÑõ !&ƒÓ‹ð—lþòQG°ÚÀÂs1†åÄ$䣢v…à³ÌŒ í—íO̾˜;òP3>¤åAá¨H¦…ñùìÃA«®9Ÿðµ²¤è‡µ÷pù½`oãàïæ×ÂÚÀeJO1Br™Vå¦h¯L±™‹ ·—¯%åŠeS'å¢iÛ*Bæ°èZs•’¹ sXöAØn™>€Òh„¶X¤\ð¹ºßÿÁf*ýQÖ%rK%Á-ø… reŒ‹S A¦`ÀN›F¹Q°©°2}{ºù‰¢ü•§î[,n ŶEÐ;`I'ŒAä³XÁq‰.ÿÉ'žÿ@"Ëáe]·<ª+ûï§³v»¤[O|Û¥Y˜i‰Eêk§ˆ€”åB¹Œv6»Qe™—ï.ÜàY÷hgõº®4I›eÅ“/Û‚Òn³‹£ 8`ZNrüPxsâc½^Ö3:ÒžL?–Ù¿/Ç/Jé@ð,P2nõ$Ž;ñ3»(ñ3; šïìÊ ÖÍöÌê³ví4žü´D©Àï¢+^7ÖºA}Ü;O»›çƒª6P œÝ?2hìA=dݺsª“ò™’œçÂÂó§Ê»g½*±úhS)ãcHðCë˜ãçÛ«ŠÅ§x4Ìxç^ym">ÎËüôP’¿/íÜ·äïd}"jêãËæç¬8<ÆqÜØTM?žaÈÉÝ+a`±›Ox~ˆ«"ªE kn!Q·ï½Mw§¼rJƒ2IRýÜúT|±.Ig½’”G¦^’æ¢b5Ø/èhÙ0&ðc€àj°¾ºmµêß™¿S™U ¼}cmy¦Û´è×9ɺ>ªÏx~çžNùhñq2û,˜Ap¾ –Ã9éf kÉi®Æ×ÛÚ~ãkùCçÞ¤Š]¶ìZyEJºxQýh.™Å—kß+Ë– _•]Ûðn¸õHûéµµoM FR–@ß l»1ø£ŒYÔÆN‚} Ç m™š‹Æ ßyú¾û×èVú‘©Êu,ȵ§WþúøÊ_Ï|{F8Þø€Òvã¥O5™ÅáºåN--;øóøËs¯ ¬ß¶-N/€Z‰¤ùÄj‹SP"µ4Ö†‰cU2¶¨ÊR€~\4Ä’tr!GtñP·¥/êôD~uçm["%™ÈŠ#EÑdrﳓ ‰3 ÑgfC-ÒÿÐv7à½;æü¯5je°¹ÃÓƒÐàXG3)ßÜòJªdöÂÞÇn.h=©$8óbiYteíMßß¹=võÄê]/½ÛþÙ7’Ÿ”×4v­/ÿiïfþÛI|˜èjZQ|»ñàßþxÚ̇¦Ï ¦¯V¡€Ù‘À±ÊÈàUùÖ_ á*‚0„+û2åC\c^0ÇYâõŒçêâ˜WÁ‡F}Z‰äC½±¦ÿåÃI®®‰F¹á‰Ì®Æ]ávƒ ¼+Ü®TÏ Väu,\YÕ½jÏðU§Ê:cœ}eÑî¦Ãê*ûž*\Û<«¾¯õ,è{ Vuƒ£—ß\ÛDöo÷Þ­ðóqªwÇËW·}{°º:ߺ½vg šåç/‚çáê…=Ú)}M×0l¾Màûލ*R4YDÃm®1cà°/¯/£\‹mVõ‡Kž»liã6‚ÆÃž¶Ûûvüñé›f/Ë€Þj{º¶ŠOÖû|àš/JÉ@/ÙL\ΘºAC‡½”®mù›^K°åGœÙÄ\×qcºã™%7^zßÞ7±ühdÚ?™D6zP9KìøôÞtÆ Ý<˜H&Ю–4hîÌeß <¸¸dúÁ@?XMþ>žËæn‰ˆ$Ó`Of:ˆš 耛ý‘p1IQ†‹]ùp1›´ôÀö+ÖÍç&×Í*/¯[¾áÚ¢™ß*ŠVôM‰ÜqÅѾçëíô–¦†¡TjbölKz4m@q£ÏôM@* ÿf»†1»A²?›¾éæd.Û²1SÝ’éO?þÃþhóôUÿÑQÔöÈÀÁÓ½_‰–6Ϫ‰½X:åÐuÛCHŽ`>³°ƒ«Iÿr±3¸q¾)ß8ŸÆÞèª(îøInáÒ¡T¤9°£¡#£,Œk[¸ÄàÇl•1‘)ÛRå¬Ç?€ÜÜù­ž„>»9ù¯×ÿÏ·?¯nI§{²ÙLC4u,‘hH%[úsÑÔÞž äó–žLô<¦¤êAo&Ì Ö€Tà\G0YÓÑ\hðƒ nZò•lŽÌÏ/]¶¬I/>xòÚ5¥÷65õO\¨y{ø–žÌð-–Igƒ5ÔìòïþDׯÖ]u«f<0çØwÃÏÕfžíúiÅmûÖý隺Äê̤ì™Ôîl¦f#è¨ÏeRPä“ '©Z™›Ö¾rËûá+U³5s]üé d£#š¤œW ãÆF®…qDeÏ¢Ëû¸„ÞáGbÅ\A/Õ.4¿‚þÜɆ;ã§fz}óÛ‰BËÜ–ÀÉ›Š\yɳð\N–+Ãä¢o¢Fâcíüø•ÝépD“–EYv¨ ,…75fx_jŽ/—`åéÏÏ-íWþÐIkJûŸOˆ,¯‹Uìÿ椾ÈK;ŽÔ„O]=sïáúk2ÝíɪßWõM ¼›+Ó`(Õ‘>›ŠäŽƒøãofz;VT7¿Ý~LÙöÆÌÉ‹æí蘼óó¢)½q'(\ᨢZ Ñfßi¶¹;Í#Ã’'óÿfnéë±ÄöŸs•ÒXzÓõ7ÅÊ;ŽÔ¼v¤¦$Öqt¨¾æ5ô)y d/»¬þEo:A2]ö×¶ƒ–­¹ãUýmGWõìjž^ñƒ¶µñ·¦žm**™Ú1ñû'Ãu0x.¯£ž«,UGp?~S¡átÂ"äëA8¤’ùtGì_ÀÕ¯,ºlÊ/^Mž±B½ŽÁÚ' ü°ju{ø„Ô\EGè=Q[ ¸%Ö”ôÿ Þª×ÿSj«´ýççÎûCḪ¼Ñö#j4"ªH4ñˆmƒ±=Â}ù†lÄöK'_š =\Ýlæ£Þ*"áÏ«Q×,’ëû»O´]S¼fòðíù\Ž ˜°yˆê C0¸*äà]zeÈR»¤uȱøŽ/ÌÉÛgÍãÏ/¦”®ÜôË’Aex:Ä/©dânüvÐ Z[é]©TÌ»ûÚàêJ‡/ö_ mi%%êŸ÷¥\Atø ÿ»à‰…ãž=òuŽ‹(§äðÕΠ\ˆÅÊ jRØ Oö “>H,¨;m%•ËdY°_š›b}½MWÏF}Õ OÙ9E­Hs3kú?987Û~áõš3=Ɇ®Ïê{À@Gú}øóŸ,îü·Æ÷ßdrQ;.+¨(ÁQù¹¾Nl¤’)w„U$$Áðæ#éàáS :üBÓç—U7å¢Åǃ )_Ѹ2 NK"E!ù±Úòì&¦¤LiBrWbejË+S’ùÎê‡>ôÊÃÆÓ¹·Ïší)Mкõc[4±Z}4uó`| Z³ K¡ÎÌë=ö'ßÁÇ!*R•ªC²!E)¼æ«‰ßñ\ó}§vé5À«÷ÍÞmlع%š}yú¶Úò—-::ÿfäXEÑÀkŸÆ*w·Wz0Þ1¹­ruÛÊ­¹ÒiE%Êo¢ÿûÎýôöe•€¼wípó5ø½‡c©Ò2øÞþöÊ^ôÞæÅ±ÅŸõ¿xðmᦠ¹‘ ¶¾~q)äRC/ÔþcÕùBQò5wÃ%’ì†xáœc&Zå¸ÖaŽFµ/ý‰îùx78å.+Rm¯B½‹ÇZu0›(îIÖ§:²½ &‘JíKœÙþè™h:»gjÄØ pKd”v MLI¦“‡¹œdUUP‰+*ê´vŽŽÆ*Z±+ åV*µ«Ð8ÌKuîÞZ2èüàÆúžž®þ™]ŸünQS®}xs×ó=¡ýðò+oøî¾û—¯ÚÓýfbkëÙ!P1vù1÷BÆT= #æQù8ß×4ÖÌåû⽌bX/ì¶äå’ŸÁ0ªBù¹Ag´ Žë/hL×åCÑ£ž–h ã9q-\F=p"ÚÃ×E|þ&õ¨{¸¨>ªŒe޳kŒ*~Âwù^lwÿ¨öá²ÛjžX_¶(þøÃð(Ë–>õàzôEô½ìÖ'ªY³ö‰ïż^s‰¯[¼®æ¡'á[ã±êKÊâ*5ð¥Òq >ÿâ9sjêV *>bص•øË ãë×­­[AZÕ¡Ïðëk×=¹="¦”Ý'/õ²{×®YÿÈ“+BÔ]âÝ"3p3Ëd6c4½ïKñ(Wˆß…·¨êÝ¢êÝš!ÂÙq+„ÍGá¶½þ–¶#¹k‹Û5®À}UÑÕU±y8|Éiî‘!€B¢ Éå+þòóË7÷/XìÝc_lá UEñ>}I«4‚d©œ€xùÌH©W.`$bÕ!ÿ©ž@Š Nœ˜†äÖŒsøÁ0ò¶ÉÛ¡‚m.‘Ù¦JÒÞ6‰Ò‚›×MÁ~t/Ã*¹-O ØùÇ¥Ùû¸ëâa*5˜Ú‹e¨í’Z ¬r¼â¬‡2: 2•Wm„YÍQý“QÉÉ8!]÷¹Î&li‡l…žœW›ˆ~BUݹjÍB¥¬’ÄQ•¼ƒÄÛHÞÙ‚žƒ]Ù”`Y¬”bRÔSz»rHm!$†Cõ¾Eª1]ª÷5RÁîÑPaÔ"Ø8®!Í$ätCä~r‹øÚP™À›&=1‹Ð[ÕH±h!‘m<ªÏ±e‰Ì ?¾æ¢â`¼çMã©GO¸jÌ;h3äÞu 1ÉÉYïNË9ß_ùrÄÊ»í$^ì‹Fø½k+âUÞ)‡R¼{y˜/m*º ¹†‰yX%÷¿ ‹:ŒÇU“²~HÓ}^4/ª†Hʽ{Œ–,xq8þS±ÖQ±B-\ÔÑVÍ#Ìs dd’[Âx6ArÜ£Óˆ,–Cå]£Bn»…¨R²j –\—¶gNžÄ©lmâÓÍ<ÚŒšæK©@‡´u@±HûŠ%X5Ú¦¯¬lª¡Ò¸ÅkcƒIe›LÉÙ”¯´UqP›©ôgUHBS“ªëõv&†#“³;fˆ£"5P»²oT¥œ<t1D—åXÕÍ;ø»MfŸ°ìÚº£04tQÃúîJƒŒçï_Ö_J*Oƒ9WÄ–2nüeÊòžšgò?’ºC ø*¤õœÇ¶ÎqŇðˆmÝbçiS©ƒücëã›r‡C:ÐbFñšæz,¨¹L²5fÉU…‚-DŸèú¬fø¬¦3NÓÔ;d0«Út'œõ†²Ä´'dg“ªZ$?¸ jáa™8碚–,ò͇¾X®Ç—h/Zæ ¯³ªgçü“Håª)B‰€åÏ™¯Ð/8çÛ/£©{¶·Ép£EÚÏ{ÊKÕ˜ý¤xP!3ðÁk: dP@l†4—j´ ŠGbXyÀÃÒƒmw¹¤£l¾—KJf¸Óéd¬°Ç‘:3¿–Î̯Fµ,Bƒ¼Å÷9•ªdˆ ˜-v|Vy¹Ø.3âÌî"ŒDõº%ăhJ³ bé8…•§P±‰EÏÅÒ›WÕE‚€—¦BcbA䋟2-8”û%ÎÄ&óá½sÐtv4L#A†Hm«Lm;>µ¨©C Yþä]¨°°¢Â* ŸQ]Ô`ºÜ'y´TÁ±ãª6éD‹óT†éç–ˬÝúT)[ ³³&=&¾dggº, aº==_²®Eˆ™Ê£Â ¬é{¯KRèâ$jº YI:(£òà?XÅ4èê8~†¥þZù$u‚Iz¯´3]¦yMǧãÓÎa˜žÅ:Uï¡´øv” øBy0ÑÖYûÃ#Rdé‘yn—i«îeR±ÓaúÕ´™^6mê~‘ K¼teŽBlWh¯T´pi}ÀkP“ÄqôÁÒó7Œ“î‘ò—M?ö* ;ޠᛋúxÜe7O‹™#­î–Bx¦Å‚ͦż~ÓbRk 7׃‚ºãH Ѥb¾pšÁ1Œ¥rÂIÃMp‹&s¨Mª¢à™QÚeñ#.²2øðêÞÔoAÌ%˜d¹•ÿàP±‰Ââ¨8Œ¼€¥9ÜZ")1 j¤]øšŠª_Sý-„A¡J8SA|A5$…jè×0oÎ4.0 _;ø¨ÍdÁÊqU•ÙfrlE˜~úÃô3ä ½)¾^UQf\˜ÚT „„5U:&¢ba¼ÌKz˜ž®Ub˜šHÁÀíx•“…¦] öYî’8FDF$“Æ© õiœ R‰Æ© õ)@ƒÔ§áQÓ‡mnHSýU zˆÅ¡Bšê–(q¤ã~óÒQi•×už%wŒÃ–ÑHåð4)³)æL/Cy˜Så­o0˜ã¯J&å‚é&Ë'B¡Tüд©øeÒŒ"Bf Cq¦Ÿm0f’M…¥L…!{“bF¤hœ lMñå– ¬sÑ+ÆYPcÐ0«¥•âÛ» ²$?W©"W‹"*m4i"¾ÀíëÇà´<ƒdS¦óúØ`FD¿oIA;ÇråjHÂmTÙß4Ü`¶H S®_à$45•´›‘¾4ÂòâR.·d¼Œ?«ã\\·1ÅÊ@X“øI'”hKR¦¤ò^ ²Ò'r2¨ÄRA*JMŠ6u¡ 15÷ úÖQñâJzs<áèÍq¥¿ m%žpÔør ˆ'ÚŠ' ¬ôÚÕQº2Õq„o\S‰¨¯}¢¢}-«Å·:a¤²cÐĽҧq½t?`\ùÅwÊ(>sü€q¥ðÒBW𷙍uÖ9T•ÈKjÚµúRÚ‰žÌ:«/w넣Ǧ£‰Œ³)ÇM·è8„cqÇ#̬HÒÉ!J:JxÒˆÿ ƒG/Ñ„‘]”H8qê¤v,'Œ¼€DF'éÅSŽ*/¬#å¸">¤s_¢Îþ,Zþ)¿¨%Ò½Š8AÊm3°‚åYÎ<¢¤ õñêøá8hL-g馋E̲˜ ¦üL¦%Q ¥‚ÍËãï9í@^™Žx:åB©S=$WJ{D²O>j,RZ_¿ùœÜD®Ú)è\kàiA¦ZO ZêÅ#V˜Ò£)AØÚ­Mxq@ÄÂÒZwJ¬íWMQÚã)V‰ö² ²Žk7+q(íg%¥•CâQmߊN•~4×ÙoIJ´Ž(H6®]®ÄÀôzH’/Hûy³â‡‚@h,«ù©ïÚR«E«RqúFKß„ø¡ú!«X‚˜c:¡T¬å˜ŠfGIí×F¨`f±ŒÎšý8D/D«vé ÞËhC˜šÖ2_€£Í[±ÚcŽ>+† ÝbbQÆ”Ž%?V,È"ÑšE” {í3ý8®$Ñ“¡ švÂDbpJÁ¦ªø¡Ý墥dd饡ӊÛÒÊ!'zO)Mt®¤W†¤»ô¢%±2¢%±2”_¤lÊSWHC‘ÃË“T†}+ÛO ä()•&߸ò©S”F±F1~%™R%™Ä’ˆ)É”¢(™òÎR›Jv/V*´{CåX»WÒW´©$“ ø˜’L‚ÆcJ éD{jG1hÑŽ’HDÒš)‹6µ¬mÊÅ$­cÊp'ÚV†»Ö1e¸'¨M•,Fm*…VŒWïR£¸¢bØNÅ4h!(ž£H˜’:â[¥9ykîAÏ8LL³ ›æžˆ£ìE´JSŒ‚öhIs²bcš+¤hgæX$ÕÊK'Ñœt$s”²Ö´:wu2éjÁ¬´š,¤³Ž| )çèÌ‚ µØŽÒ\(Wj6cñ„¾ÌZKôLÒè1C¤ =ʔ銭‡p¾ŠÄŽt;®Œ„¡€ÓîÃ!§æ's½àkš}¦t,9æÄù£é¤éNÉ” #e?æì‰:A‹h$VglcQ 4šˆêì¬Îˆš†¼¡RD‰v•½+$›fœY'FÉÔé­3鸱I(a¤,F’†’N;¡´¸ÈbTGÉÍ­ÀiÇÿHê›ÞЫs¶˜µ ˜q<“Ù¬öLFSQ´‹FŒ qÂÙz˜N8Þ%öAKšÉ:&Q:¢Â÷âï´²DOñ:G,‰E¨‚L©¸ã¥JÆœífÙ˜‘¹)V¶ãg‰©Ýg§ µ]C¬½  ëÃ2‘:í¨àÅ ¬Õe|S³ì”zû‚21—Õ!¦5… d&}"®:N)Vã’Iä"ˆY—Ê*ç,× SO¬,vJê,ï”ÚùuuŽ5Ó.Ìʽ³1rÌéz¨ã¾øïH¶EYŸ‚è…Ø”Z*wÕ_H|pf+»[žò(¯¡¸¼Ä>+=ʲ!®ÉÒ)‰·D|þ‰d¬%j\€ÌË[P‹˜N "ç&Mi7´\è.ZÚ´šHú¶§ºEª!þ™Gœ®rMðu®Q–m¶˜S„!yWZ”åYµ!>Zæ,‰›ÎEW*NTo‰ÐÊÖš]ÿ¬5!Ú\­8­s•ÿAëÙYQ¥ãÑ Rü(KßÊV…*ÕKJûtÔšhÚ‘QÅp[‹*VMÂKï´£¥¦krÔ”¨ZˆB5‰¦Õ$ªIŠöF©hÝȤd¬€S;hª|ärÔ‘¨âÖB‰&«/špT¨âB$éÔúg¡Ä‰Gˆ*•ˆ…žâÑdU*@’C$šwëòi)–Bþ~-éÅßNÚST[@¢/móƒK{£ND3u½ÖWê¢J]¡p–báqGÓ ³VË·”£g Tï]ú„Öb¦ª4´ƒ¸«Èz‚· ¢¯ .ëh BíÑqÇ 7å ­¤ w\ÜP’Ž Ó*@"¢U þ™N„£uhù/X¢¢ÙdÊÿ)-Þ3iG¼ Ë ã¨ ³é˜#Ä# $]+múhV«…Š3ÇñO1åhÿZügŽô'·‡NÂ3rjH£t¶Á&ùŸ6ã€Ìª¹U’†Š Ó(Í ¥Ð‡t”2­U–ç²ñ˜Vi­t5v9j?éÈo¡ŒéqSz P”rJŠ_ÒoÏ´ZöÕE"îö>j7‰ÀªŸ‚mÉU6EFñ\Ì™Tç²¥¤_††Í "–‡'V(!´Ë7‰Ü Zê´~ä6öHÖ$‘(D¨àHi%‹ä>ÌfeuÚdfÈGÔªA¿Ìù³)ɵêà› h1Ÿ¼dp1CŒå.ù€ GHÑÊ¢K}žJ=I¸¶‘—Ùöt.;Q²uÊé!h_y9;RÓ.JÖYbJð q¢õÃdZ©X]Æ!bµ^…˜PÒ,™¨S‹1Iû5[”ŒH9«NGIÖ¥[Tɨx¶Nç[P>²fYJøˆ5 R›:%Y6¬@Xç»1Ž®xºH= -“ˆ4™˜,²p³¶C4œtÅļ{Ý{{KÇÇ>úÑ|â#¿ÿ;ùä‘:±@Ä$Š S-°.æKLƒ˜*AÊb-Òʤ…Jë––1Í7¯l¢^Zí´:ˆ±O ¥El‚f˜8Q1"Eâ/Än˜Æ‰G¢ÅATFŒŠÖQ2ñ/¢ "4bk´îh¡·#Ê`§¥Dœ#-Aâ•´èˆ}ÕÑš!J&ÎJŒ–V‘>ñ_^D´|ˆ/ÙÑz'ª%–M+–7qrbÄÜi¡¿'öOtÌV;1 RŸH©$ÓƒL2MH#‰ô2[H#S†ô\Ò“ØÄ!•Ž”²}ÈbãˆÍ%VcØŠb=5%VõØÌbõv9à Í~iöT³ŽØì1a¿6{ºÙ÷ÍÞpö³Çœ}èô?ôÍW”&Œ\ì7c§Í<}²ß‚vô? öð±ßŽýVìM¡ÿɲG‰Pì¢{ ØÅŽvèÑÿÐ'4QšÇ(Md”f2JS¥¹Œ&™Þè šÎ(Íg”&”B!D„öøÐÿÐ')ú„¦5Jó¥‰ÒÌFij£4·QšÜ(Ín”¦7Jó¥ &'ý/“5}B³,4^v¼ÐÿÐ'BO¾«Å39kL¨ «ïù|bù;ÞóÁ–w¬ùƒO|òw>ñ±µ-é7G’+n¸A~±îù(iQB‚Gô‚}$…$øh ?‹ ‹˜X¿ù}<‹§#©¤ç™¨ÇöçY–x°ëY$‘"n>£ÿ¢Iï3¯ˆ§ßT–oŒw?ËðÞw¿Yúå}Æq'Ï3>ÆÍõLðsïxųiNîgQv\{ž¥ìg±HÌÛo,ÆYXžg|@•ûYœ-@ϳdÒú6žÉzqK°›ßó,máEâIŸ~ß°Æ‘ŒÚ´‘äaï3‹—V—°àKòý—Þgöx“Ù”_*b7÷{fã Å<ÏÒ6Ì©Œ sšýšÞgÏŽ§>ßú¬ËtÚ’ñL$aÕ˰Öï}–¶úÍÄìµ*ÐlËv•¦-þ,¾µpId½¼‰d|ÆzKØ<"ãÃ7„^bá*ëòq›²>tŸMYü>žåÓÑ<Ï2o½D$âÕiij¸…Á-¹•ˆðA.žgi‹ˆgÏND²^}Hpºˆ…ûD”#Ñžg¼]ÈóŒ·ÍzŸYx«×âu‰X$cõ³iH<ËZ㈥,¹šˆÙºŠxfé* !à,øâQ{Žâ6ÿKFi#ž¶ôñÌZ«‰¸­—$ĤÛÏ¢ÖÚÏì¹L$lÜ'RßÏ,y.X¶wÅINÏð>³tŸD’7ÜyžñæuϳŒ¥ÛŠg–ΚHE­u”H%lúK%-HÙ|M¨¬–î“HÇíu”Ž[rZ¨¶ö\¦3–n!4Kî iµúÍØ2*‘IZ29‘IY:M"“±ôº„`aVÙ˜¥ß'²qˆÏ쵟MY6˜ K¦$…îè…YˆskŽ’‘˜µÎÅ3 ÉHÒ’ÉBðé#ãÓGÖî#µð"4e‹g'£¼[Ûó,méMÉX$bõ‹Y|#)þÏj/fÛ=ÉXÆ¢ñd,k·'”tïx#ɨÅÛ#IËNáÕõ>K¦²X„ª’ñ>£~-![µäy2•´ôˆd*c­ó¤Ýö³˜ _:añƒd:°`ÎDl÷Ñ×’Û¾LfRöÌdío³¶Ÿ!™MØcË&lÜgS6^²Ù¨5Žl6ãí#‰YüJP‹…«”Ї¼ãHE²–ž“ŠFb^X'¶ô’T4iñ!¶,™œŠf-šLÅb–N“Š%,ºOÅ’6̱´e¦â¶M"L–xÒZ3©xÚÆU2Þu'ñkÍQ2îÕÍÄ3+Þ#želºJYü NaD/G„ÊeÍ¥P#,ž“åꞱż~ÑGÒ†/eåÄÄ#i[EÒ¯®L‚Á«# r‰ya°D¼ú©è#æµÙÅ3Ëg.úµô!êÃËÇ#”ãàm/™Izé@ô‘´ç-¶i-mÙâ” âÕÅ3+.)žYkP<Ëxm’x$õÊ ñ,aãE)ûÛ´5¶hÄÒõþâ^^L¸òÂLË׫Qª†¥ßG#Q‹ŸF# Ë>xöòDRº,Þ$°çå÷¢½¤å· sÕK÷â[KÅÒw“™ˆ•÷X~Lñ,c­£hÔŠ-GôêfâYÒŸXEÖ¼EŲôÊäHÚÒ‹i–Nª…÷É´å?}ļrZ¯Nˆ¨¨½VÓ–8N)¸þR–O†Rø,M۹´ôÝD&f­éd4añÓd*cñÎh:i㊜xV¿¡>,¾F‰ÏÖ\¦R^Ÿ‡P¨­8“xfëÙÑŒeˆgvî ñ{/^(Îé71ZËdeù£¢žõ,³ù}ÖòS‹gi/®Ä³Œ7žE|lœŒå¿'˜-û’ü–ŒOE,¹‹Ä,ÜS"™÷[",«^Ô^G±hÌk«‰gI¯?B<³óOEk–Þ”"¯¯÷YÂÒ¯(%Õò› sÚ»~é[KÏN¥ÒÞ¸ZÜ'Ž -üÅâ– ÉÆ¼¸¢>,¿@JÏ^: Äp‹çdã^KßZÏÒq+®'ó܇埌s’µ÷YÜòõÅcvŽ—x–²ušlÒKkŸW¿PØÏ¢µxÚò ~å]«â[k~Ó™„—?Ç)iÑ’ç¶ÿž¾õòÝùÌmœZvwœ’ -<'ø'Ï3K¦Ä) Ån/mñ5J>²æ-õú<â”èaã/kéabl^;O°q+÷-.D·M/É”%÷9ÉÁû,µdé§^Ügi¯>$X声ØûSb©¸½/&óê Ôž%³+Wôa囉>ÖXÊÚOBY6Ò1+î'ôq¯—`±ÖŒàj–ì¡ ¦Ó¤åû§ô5ëY*áÝ$ÆkÛÉÂÚ÷êÙ¢´—ÇR{^ŸeÌZ¾‡XÚú–ć׆ o½1CŠv[:½íE-7}ëÕ‘¢”me7cûÛ…]á]3QÎŽò>KXù¶¢=;BØ$Þõ&¾µr€„ÙcÅÅã0³öVE­Ø}ëÕ©Å´Y¾–8¬ùˆZ¹œô­wýF‰·Û<"ê…úðÁKÊ白ÿC ÞKÔ¯W&G£1ëYœré,zÉÚúd,kÙ¦¼íÄ‚/›¶|2ä´´ç×ÒA>¯ f¨•¿A™G,ñHÌŠ1GípjÏ ewZóAû”,¾‹YkF|ëµ5Äв¶\ˆÛ¾–xÄÊóÆ[ÔZoq2¼-˜[í £ÄËw…Bné„ñ˜mo‘²b?Kù|kïɤŽ-˜ãvN`4÷Ú’bd¯|¨OXtê“Ï'•ËK“ñ¸åýZ9åÔ‡7^¥d?Kßtjá9±üÙñDÜϬü]ñÌÊgÇ“V¾…x·ìÚ¸k*žÙ¾ ²X|#–òÎ×ûmTð&Ë¿‘ŒÙqzkŽâ)Û¦Ë×â‰q>OÛû%)}Òš·L«c éaåÑÆ)ïÚ¢tÜ+{ij”Åsâi+n§ýL^{&·øÁâÕ¹„Rgû‚’Q+-úˆY1‚h<êµ+¨=k.…ÅnÙL‚ÝÛúU<îõ­Ó·^ø8,nÍyÆòŠö–ì¡ýGÞ9JÄ£^ýET²òwEi+ö.Ô5+¾§¼s.ú°ø¤xfûU„ÙcÙØ ^¹OßÚxI'-ÚMF­ø¯è#féÏñ¬µ%NixÞö¶/œ¶ZZë²DÌÎwŒÚûfé[K·¥œ|æ” su±¦#–¾–´fõ›²Ï%!¢ôÒèÃ’™HÔâ% J>²úHXz»`WVL=‘²ÖLÎ~ûäÀ‡?1ÀgL “Oü_ݵ×ÞòÞ·×þó¿ÿÿýÞ‡~gÍoý?ü;wÿÁG?úæÕx ú JI%"ömG©d¥ŸÓ { JŽÃ$qTñ\X‘H %òÀbýwÑcKKàãùd¹Á D}òc¿÷ë€è×ú_‹X¤üÿuøÇ÷v·dëøa¬¥%ÞÒ’hiI¶´¤ZZÒ--ò]‚'¹Rœëeø5½‹ó_Q~à1®Mï’ü;Á•¢\/ů³Ü³óHWJâ]ÊhJ7Ç»´‚*wt=˜¨~ÇT¤9>´“R-ÇÍñ¡ÿ´‚(aŽpgÔH¢æøô#]ÉŸnJ7îŒOƒ rƧA׃qÆ—P£N+<8ã‹*leþœñ%–c ïÎøâjvRj¾œñéGº’3>Ý”nÜŸAåŒOƒ®5é3aœòÐgÔ8æ¡Ï¤ Œ‡>ã‚ÒúL'<ô3Žzè3c (é¡Ï´ ¸‡>cÆbK{èS“Wܳþ¢9'<ë/asÔ³þÒye<ë/cWÚ³þb9§<ë/es̳þé¥<ë/jl̳þ’ée<ë/nlÚ³þRé%<ë/flÔ³þ2é%=ë/mlÜ\#^Nª)IRnAo1ü6[Jz(A~ŸPO“zÆæ÷¸›ŠÃ'ñÖKCט(õ6íj)ƒJuºÈš¯…ÍMµD-˜¢„+E[„·C6*‡£‰æŠIYO~ãÔN¸ÙUF~/*QÕæÔN²E ‹˜ª‡oœÚŽä,3îêLY¨º n§¶)µÜ‹»ávj›ŒÐ`ô.¸Ú&kt±YÛß&¾%$>øŽº×EJ¶*{ðâÛœyïˆêÁ‹os”ßn/¾M *|;p{ñmΎ··ßÖÂvÁ­kÓob8>”î]ÝxäbxäZóº-gÙë¶œ•®Ûr˜nËÅ®êxˆt~÷YÖ¢ZÍ’ÓúµrÏ׿(쯣h<í…ïçiâ© ‰®+æD1I/Óõ2Y/ö0Ý(&¾Äœzts3dœ‡©×±è¹ñDæ£éºü)Û‹àû2kE/ÑJ†š Ë2²ø¾„õã²Ü ÷ (bQ-jcJ ¤¥Xt}oôž%Q­¢a%j>’ôã)nÈ;þ&ë{|‰V¼ãŸ$0û÷Ž¿ ‡Ðßý[ã7ÕsÃü ¸^,â˯©Q5ÿ¦6©t:|‰V\ß›sõ¨Á†šHO_  û÷XJí“_r+®ï½ý{4l¥?šã÷áÍŒQ5ÿÚ¤0L&sü®ï͹ˆšj¹ÛÖsßæöNÿ¦ên¨¶®ñ›ß{û7ÍOÇòps’¸jÉÀ„ÑFÂ0ùÓÞElÀaÔpë'uBµ·×¥wÔu¯×¼DÝ£u©%¾œ£MûR¬{^â. ’£uÍ‹›÷šüÕ söM…Ì¡„Å\ó’pÓ‡—O˜¶»£ÓF Œ,áZ9.âtÍ¿kh®Q¸&P´ B>[ªK»w(×HIðñ!”Ó›=˜uQ𧦛ucÓÄ’êO#ÁE›b¤©²VCiKÈkÙx-%ã—_`Ü„ß'PËè‰rÍ´9Ÿ1—=/kÅ£x\§Šx¬lõ¸«éDÙºeÃSÞµeÖr>Ôµô£xÊ púì‰K×ÁY@q:Éž½ÍDD Ô|‹ÍDLO¬—p\,¬Ž.€÷|šðTõZ×g³Æ¦“å¦)‘òGšc€%¢ +¹L ŒGHuÁIÄ‹ùGEËGͨVŒõ¶hÂeÀ[2N芳q£ nÔiфˀw^‘CÀèmÑä¶Ñ~–X¢Ç7êDÛÆ»],…G§E“Ïš–I©xc)<:-žOÒÄ£Ó¢^©:&òú$½1IíÆl˜ØL×¹Z1[7ñåRj/1Z4±)éQÅzÌËï5|Ø¥`ÄØ%=úE’JE¯JÂè´vcÇÖJij\¾e€éţъٺË[é‰vjo3ZôâQ9Ì%…+wº žø§/ŒÎ¨VÌÖKEÁJÂè´mAPFŽZ…l¼1R#pù¸M>H%=úFÍMOµáõ/Ù" •ôUÞh#¦ì‚ÑŒC˜~p“90¦”®Uþmx¶=‘U#Êîߢ£;§ÞX«Žµ˜¾r“90¸3qêòx›Ñ“R-:0–ŠÇ›0šx4ýé&s`4pgâÔ¡5£õ¾-:0FUëQkz±_.yqs M¾ÑàRxtÉë¸{jzô—£K^'ÜœBÓãY#Æ&]ò:æÖ)|cÈf<ÑÉá1fÙ%¯£nÂŽ*›2ÇÔÓÌYvÉë”[7Sú£#QM™S F—¼Nºu3¥?º"ÏfÒF—¼Ö¸3pêE›qI'Șe—¼Ö¸3pêjÑÄ£©§™³ì’×gW›x,£K^+Ü™8õF°Íh¦/Œ.ywkRZÔ+ÄÓÖ9I&ݸäu­í)ýÑ‘-ž(·o‹.y­à2áuÉwÜÛ¡*“n\òZÁeÂ[*û¡d‹.yukRZÔxtÇÆÜ&“n\ò:æÖö”þèàÑ-÷oÑ%¯\&¼.žcw®u÷ãk1%Þ"&_³ødT©ÆúMøð5«žW*ѯ9s¼Þq¸¼»fôуS³1×¹‰m‡oXüÅ5{²ù‹I _³ø‹‹º¼õ >iÕ3û5ù®·_Þ•,5Æ—*—"Õ™Wéóž§À5 )ùYyϰí—Ÿ™â³”û×ëP¶©Ië¿¶¯Üõ™‡¨µ’kuJi= ÏØb†¯1ãù¨vÉÄ=c‹+›Y«‚¶#Úœ€dÄœósÖ¥ìzgÕ¥ÎQGò×iÊñD>³^øJË7|®zº½$wúê²$})ìdC[/,ŸJéj)k)TsÉQ-~]’ |ò{{Þ%%?ôéÙSG“ÉyAZ¦GŸQ8Ñô’¬IôœÒØóǦlÑÆ®›—ˆ–Òóž— Pš×–D|I”œÆ’ÔWT»úðéÜ_ù#’‹ÈDþúCæ?;È_‹ð×¥ü—i]K ùecÝ)ùÆ©ãTocóhsYvÆKá6%½ ç†ÛTò|åù¼„üշ¬PŸÁ_àOÖ>¢Ãþl^’ij_o¾‚Åþl^rF}Vfl~bÇú,•:/yî/ˆÎͧP‚ʶç/ÛJÁç¯GØð½½2¾›;Q_Å9¾øÌ*ÒŠxj›²=¤•ÿ+£¨Ø9¿À\!è!mèïwíTæ$¹ÿ»öåÙ²ÔR€ÛO’—ç#åÀ)õÆ žú¬{)G Ûéá>ÐXHªÁfä7ÚYé¸/]‡Ì÷[¦Ùf£¼—S\J}`ºE ­6U&=X:‡ô,'Ôöx¨\µ¥G}2Í=µõ"Õ<×ãÕrÕÖ®›¸ ÓŽG%®>pÇÊ L;þ!Wí˜á20]¢míô‰¹0]¢í¨1A†wÅ™ù¸4Ü$¦Ôª3+ã¬8gæ]µѦ•_#Yª¶ÍEm½.aÒ‰Ç^1½eÞÚ–Ùãò™yk[BÌGçK˜twS¬éÓÒœ'îç©a*FÙÌ«¤Ó —Ëf_ÅŠF º=¨¡{+˜;xó*jÆüˆŸåÑHÂR%¢‘äÙù ¡F#)Ÿ6ÒÐ,àéz__`m&õè4tÝ^Ë«2ã=:›6V])eŒ~ÃÀq…ºý]%ýïb0ç0_€|î ÙZÊèrZÕ°—¼Ž®|šE¨Gtõì’Ó^\¦ Ç1"¯:íb^”]ÅA$ç&MD_¥&ªç;+ÏíàQçp QT \ïD.;7õ z4‘týò¸¢ À9šñ‰y¸M³9µ5oá†fÕ¬3½n«Æ¬š‘õÎՈ ³ªèsYZfUÝSÉ䛀ÏÇ3_K*s¸ì«ð½§¦ã>†û5>0mäù;è£ÉWã6¥»x¹®áíÐ5ÅÛXÙ·ñ²oeßž£k‡r|Sþ*¼³"µJWÄR⼪˜ùÞc$ÓæŠV ?šÌ¼6ü éãnJÙ3E)ÕųúªUR%o\*©Ìq=[-©‰óÏâ>ÏÿÉÿãs`DÜÏ{EºÛœ—Y‘ˆêŸ¡í ›44Dûzöaj™È9˜"¶âæ²sDkÑ ÚZì|±œ‰—á&™„/7É$ý§ü§ÍŒ°sPÅÏÎ,ìC9®qÖìj2iQwÉ•ç#Þl³ò Å'Û¬g±qRŽÅ” Ãøó'e˜ŽNÊpœ”aCFíh†U–ÿRå×Êæ£™ì…ç»Ùù9¯Ëp$$\ÀÝ;%y°k?MIçbLg™wÍÑlâÜÐ]Gf›¼^E|Ë8+¾Ä×å‚)FF%)YTŸG¦Úq&ÅWÈÈ/†‘àúÂ16Ñ{ûðÊä ÆÑl9%7›ñ˜Y[lÇ('àÕÆE]á[ Ô-y}_¾-¡;wK1™šPvÆ;Ìõ"™ŸÐ÷Ç9½‹É¼†³™Ü®_anËÀ“‰å&bh†gjÅ"éW©+Ù.بh-Ãq.{Ṵ́۔¾Ú’3åñézúõQö‹d_-jqX4rv"+±úcQ¶ ÏC,›ïtʈùÔLœ…[ê1Qx4yn(ôV4ºT‹[dúCâÏ\ÏæË-ÅbÏ&¢K1Ú³­ûRìKŸuuGçø³w¦%{ΩDBL†åçA>2üþZ…hc1©ï–ÅC,?_uÃÒc±sWaü“é;‹Å^•õï©äÖ‘c±Ô<¹âÓç‰Å2g¥[œÊ?߯d<¹L‹ÿ¿ü÷‰ôxàcðû¯eñ_:e”þŸ~GS‘?¥S‘X*ˆFé'SéDJ< ý%h‰¼–@©ÿîùäÀ‡?ÑÒøøÀG>9P¦Þï}xà“û½_D¿Öÿî½¥ëíÁ`Pÿ®Tø×}Uµ Q -^ÄÏ–@U`y )°4 k¯¯ª¥-W Õô¬!ÀïÛÅïöh}-ýëý` pê½jäû*QŒÑ?ñ-ýkÓ¿*ùï}?Xí룎h†ûyÇ{>(áÆ?‚ჹo8Q[¼EüYÜBÿscraàÑ}¾ãþì7s?Üpl®»çýk¶}daíšñ?ïûК 1þâŽVNnÚ$Úû@‘*ßyß¾;«ºóBâ×ýg¦òw~t×}®¿~â³õµ{Vü]§w¾áþ'^—{nÃDÕ£ßgžÔï9þH5U >º/÷¾ý»!ñ[´yéÎ_¼áDh =<3µauâó_1ÿ`Uྦྷï r£áâËÜX˜›SC¹íáqQì¼W 'W.öˆêùápà7ÅÏÅï]Z›/„«èÇÒ*ú1®?þ[­ø{d8¼^ÌXý¿-]ÿÞúÚæ ògõgøçPø3x;$߉Ÿ¹Pxd{x#ýÕ®ÚIžë×î¢éÌu…CÅßûbe`äúâ“Ý—‰gÒPÅ·GÅ´å~™¿%¯ßðõª ߨÊNÞsñ†ãÁ{N<tj訨Y6ò¦9ц‘ûzB|ûÁ€ø2÷:ñ-}7÷`#¾;!Þ«j¡ð×Zn8|L´\üÞdU ·gÏ Wç<ÿ䲩 !ç×Þ\cÝ÷ˆ†ÂíôÁ©ïTr{óø\´ÈÂEz·‰Û»çÅ«s‡ž?´lRŒ<4²´·»¾–)„OÕp[„eþº*¼+Ä4ì U1ªE[ Øê©*ú=Q¿¹¹©=§®Îí mц‚¥‹a ßñx•Fmà6€!ƃCÕmü°EHâsnh8Üp£˜» 7¢JŠËQDP$P´¡è@Ñ…¢EŠÕ(Ö‰h±ûÁJÝ}ÈAuqêÛ•T­j£$´‹G2Ì¿kqµñ„þC¨Ø(šÃ°ð¸›@†ø=råA±s}áðÈ•ûñ×ò‘7­¡9ê·‹ ˜Ø]nPà²+\+þ5‹-â_«øyˆAì 'Ä¿ÌΚõÜ~ÛÎyGñÞdÀ›<€7ðfðf@Øâ¼ÃÀé÷HuCLÙ!¯®Å_ËGª‡»ù/¼Ì ܈Î:¬ ~ô* ¼V€bö#jÓo±r"‹@¡âIãH bã®J /ǵàâ_³ø×"þµŠÔXZ2Ô=á¶›@$Å%µX/¤È½(ì ˆ.1ŽNTlÜY‰áuâq7íªÁ`øwàËLükÿZh¼ø×*þEÄ¿DqÓVF\q=h¹×A\/0ÔçA\¯Rˆ“,k#n³FÜ&‰8¦Ð³£Lãêk-`vÅÿoL—k ÊOŠŸ ]ä^%ËY©2ìæ6½¡×Ó&é ÕïcÖNzCsHê º‰a¾v]TÒWðµNBoÈ=íUЙP©¢ñâ•upñõ5nm õ<ü>&¤ˆøñ cöÛõ_½…ihјö_(Ò~ãŠu ÁhoâåÙÖþzø©(? U´›JÈö=ÿ”À—`Ÿø¬ŸõŠ_Šíô¡‰U¨A…57)¸çB…µ(P ¢B1Œ¢€bÅVÛÐ0‚Ô‘=ÿSLW«1 ý¤ÀºÿÉú!²7@µfBgjÞ] ¥›HXI¨› “r‘µ†\­ô›5»i¾s„¦(æûè«gd1ÏwWxU.ÆðHé “Ž[%ù ¡üŒ`ÉÐÌËFÔoÿZÄ?bËÅ¿Vñ/"ˆ-¡†åÈÁÌÚj‚FÓ!ÞtЇ]‚t‹¿{Åß}».Â'«‹ÿø7b•üÙ×W\ٻƤ kؾpÓ×b0Oè÷Ã-@ë1»+„!'ðy “tRлFçhªÞ/Ö”°`n‡î$½ðf£¨´KÂÔ!þi|T,ú+xH>z°S*ˆômãw‰ÁÜÌ:ƒ°EV‘¥A,m\Sb¢~TA¤Ô«X´8ž¾‰‡I…f[®Ù™8Àáza5.á÷ôCÀ~†EÏP¸;ÈÐôÐB~ƒ„‘0×1Q(<žçQKT>æ‡kMå½JüÚU%Ñ~-ƒÝ)•ük%–FZsyŒIÌA/ß¿éà71ñBq½–pü—¤°^Ëú$Ž×‹¿†Iš®ú÷Kk÷ü¸"8K !a+ 3%÷1.ŠÝÏÃJ\ÏÃj»ÞV×õæ°º¯ç‡½×›Ãê»ÞÖêëÍa­¡7õx³oúðfàzäÌõrû/.­ex#×Cý¾ ¼[þŽá _Ëð¶^ëÀÛv­ o;Ô隆.cz\ÓÐKo$–W]k»úZÞå„ÿÅ;ž—ð¶\ËðRQÞ¹- ïèm ïVQìêD7c·™ðî¿HJ·0·Y¶xÓ™KIl¾;¡¢d'ytÒt3wÒr3¯ÝÈÍ<Œ #q3VT‹è«™–[õŽÀëjÉ®¼™™.$§ )T…YÆö±ün(®DûÄämÒ§]ƒ8r?<æ2\‹·1¯˜»){UåO'èüämü‹¨~×OÐâijýüèup¿Ÿ‘ ¾N“÷8=ÙÎ…à’þ˜ùÃ/3ämÀL‡(¾V 6×ãBOïÍ€îfN;†³ZüÚYÍ©ÿf“\ÖÞì˺›y }Ñ uÁ o·j}Ûëjó8ƒ¹™Á¦Â[Té’î@ÿ/ËÐbq«­p=÷¶«r Š­×3¦·‹âÁpÖâï?Áv^Ït1.НÕ ûéï‰fþ{òz@¾Eü½žVâ›&n²=¼îz˜ øk pkX!OJ¿¸÷cuËmȵ:7bunBQ¸–áÅÎÀº…>ý ½íZ†{»±×òBœøáå´BÖ`®‘ËP€¦I€`úý¿a˜j{¦†^g¶ôš0…{êeÆ4|µ_ÕËíSá×þEh c¿Öiÿ kÌS×:íïdøWpû;ÿŽðe”ÛŸL_ï´_tqè`Í$Ws(âÌPüÍgškƒÏž8–‡ã7 8FõµõŽ1Z_cøv,¼ÓX_[x}}ï‹<ðÍX_›õÅî7ÕÓø_8=M=MRýñðô Üú‘Ýa?·~í_rëãh}¼Dë¿i´~ÌhýÄ Î*:.7r‡µ72"W‘¡D¹ß[D¿Ò`ñtô^/T¸ “CµŸþóJ­…î-2‚ÝÞÁ]6ÝÁ4ßáXmUwÕöc£ðv¶Ú¨pYm†ÕvèB´6Zo¥ö.‚iІ.ÚïpиœºX\½™ÑØr¬Û;nÃÓÅ%è¢Óè¢ÛèbºXmtÑÅ],A袣\üwÑot1@]T¡‹!t±ñÆä¦;øa:¼S9 „n¹ÃÑ&Ö2 ËÃÀ°¦ +Cã Í7²Ìj½‘»Üè :ƒ7m7bÐäGjº‘:üᗸƹC*Jvøà&îp›1èwp³ï~BA=:<ˆ7Sw8n§A-}™: ôöRáø {D‡·¢Ãc„]GF¸Êá¼é7FØÉ#¼â¯x„ía{¹N;œ6Fx”Æôt1‡až4(çÏZ]Ƭ.7k÷ ‹ÓFUw2äwrëMw:cjÁ›ðΘwR‡Wþ5wx ž*×a•èPyœnTQÒBxðF‡Cƒ—¬/Ùt£Ã!×ÖÞ”ýk–½½Jö®½‘y ¦ìuq´áÏWj;»õN§ßÄLúwò›Î;\Fxh³£<´åwÂ<¹ÓŸ_¾Y´.0³™@­·İÄ0v£Óú(ÃÇþ†[/€ 7ú·>5RISÑ}§Óz/ ¡V’fªÿNgAÜÉoÖÝi˜9<œûÑa†ÓUb8¿5â°ÿõ²6Þéhm›±Ñ;Ùâ.~….ÑÅ`‰.NWjÙ¸AûotFqøFÓG6mÐÁcïÚ`™Ò­dÊN qg¹55DýÖ¡ß­ÆÐ¶ßé¨&ãwj› ®‰;aî·³á¾ýv¨~·`¨[î,Óohذ2Œñotú=u#¿>}£Óá1èßý/FéŒïH¹ñmÍ3­L´2EÃü œ GA+Çîä¡$À«Ÿù‹Ëýw²¸¤¢¤¸|»h]@íÎ(Bí¼ŠšÛyÂVc8-íÜI­(F®û£Í”ÿÃkö¢j€ž¢È †CˆQµ9½ ÿûSg®NsuÒ Ãª>æ]Òëã.çxš~ò¨{šŠ˜¦¢¢HOo7zkèsÐ×Ôç°Üå}<À. °µÏÑ<û•?zR¨‹ErŽõ1K¢‚X’·¯Wrõ'Däl·õ9^ ®>ÓÏÚÝçðŽ 5¾ôûße.ÈÔ€œúèó^^t©8F/дÊèmm¿0ºé£õÓ^Zï)Ñú›ŒÖÑúÑz­oîs–ðzFØsßgÚ[×Ç´G‚=­?±Ñ[Ðú¶>f©;¤U@Ò8¦‡Ý+{ƒOj.µÞõ¯lgô9q+/õC1eä÷íc€ R¼0¼Ë€aªÏ!Æé>Ç^ìcƱ ŒãDŸ³ŽSãoú¢èK@Ë‹à[´þ@%KPÉôçœ.O]žîsÜ¡»L4Üå øSÉW~È‹€»ü)) å\‰Q~äs›jºËqE´Üåðò6wÑ’»¨¯ƒ?d]ªñ.î‚ ¿.*>ç—¶»Û¢ã.#ðt³©Þ»ø×*«©ò/äÊýTY¹ö.'Ú΀üÑ1$@2%ùãÏ VÙÌù*ÅßïŠIVSÃÌlým#Q`è6~¸Å0ŠM¨B5…²X Ü8qô‡9ŽNµ|Ù•o¹a‚LZ¨ýpâé2}3û™’®^3è¤vú[Ÿôͱ÷ÉôÍñpw÷[+>CØ€ò/dþEñ_þQ&lJ63åÎè0’>ö­[Ä‹U'ñbu£N¼ù£@ÉÜ‹‰6F £T,Ë6Æç^õ«lc똇:žjã ü ãÏgÙ‹¢þá6f)mN Æ´tV£B±ÍIÁ8 s(N¢8¢ ÞÿŠFÍ(Â(–_Ï Ó`(ã2 F Æ×·»R0–œaÎC@²ÁÃ í¸‚‘äŒaN(¼s5¦M§ÿ~Ô'cLeb´ùô3ÃÉh2Ó1Jÿ}Ó1Âí»9cÀIÇÓÇT3`de4àËÕņÁÊ@ñ¥̬ 3AeéVœ+7îÍÊ0ÓVÌÌ+™E¿wµ•LÞÉYCQ~ð¿_Âu(¢¬ò³)ž¼›9ØâÉÉÀŸ 4Ž!žŒBŒ¢M¬íÝ‹0HNo)™²Ò#³íÃíÅ+>S@–íwU ÐC‘çÝGÿ_…Ÿ0|V¬›ƒÏÉ­G>£0ë1¸Ø¿ÜW©#™æÙÍ{ŒÃ<*^l„y”pG˜'<|‰_˜§Í¡fGþý´"NÈñ9ÄRñ깑KHÂs|…”ð;ƒŠ°UÅõî8„è‚B~²–{5Bj‚Xùü%Äî9B²{'^uq¿èBÅOÇ1 Š(<Øùsî¢TDaé¥_æ.8¢€¢d¯7ºèFžz0$­5'<5:“;“Y@’n)Tµ›Ú Í‘Áë T,þÇÿÒ}¥ ±…®Þ€¯Fö×÷:¹ú•yïuõ ð FÙÇ_ý“O7Ò¤±…ŸZ–¹×‘ää{R’œ|OJ%2}OCð= Á÷´Ùýä{ÒméÊX%þfTõÁ{v@¡ðäO—‰2È~(Ê@Ù0·;cåðBõéãÜEÞÂÐíþ]t}ºL\!ð»ÐÜ,5m¸™ûnw\&îõág¹×z”èõÛŸ**+o½®7Æ1‚êë—R«ÐŪ]|òSe‚̧ Ì£ Ž TÿºBC%ºhøT™p¯<„Èn5ºà8ÀÒZJ+ã(üt¹ÿ1è,º¦vâ‚ÃB{°sa„ÐT¡ý#Q»BótñÎAgA‘o'bˆ}ûjõŽaAÙNýÏý÷Kýœúž.þý¿8]j¬º`Õ¸ÒRGB÷Šñv¨úüÕ†G‚ö‘O¾ÞðÓ`Ý;žÇwÕ;ª¸qú[ˆaÃl0‡¿ê¿ðÇgΜùÞôƒÀlD¬7X%bÂ+¹Óõ‚ÃnØC¶·þÚþIÔð\­o/'ÈO“©Aš=5ÿB°þþߺ \Û4 Üí^Ži: ×µtq$©8æò¤ä˜ÉNbÂÌî!žù>^éÚZ¤§g=ˆ¥£ø‡ý®Ý Â&@ج¶JlÀÆOrp={@ÕÞ5°¤býI° h)]ÌJ3uÆoÞ]˜½+˜‡`RvX­ ÆL27oUïLªÅµ¸î=? 7(èëïæÍwM’4†‡€áÃÃÀp—ƒá0Üãìfd />­ â¤$ˆ³`X™Þ ñÏ` Š ÜýñJòÓ1rû=þ/ÑöÏ@n‰¾J |•1B¿Åº¤•4Ò~šÙ)|Z˜ñPX0=ba~Ë9[$fu"¨và³f(‡-€Ía]²­®[í&¹óĆq˜‡b5²ö4ɳ³Ù‚då-÷Ú„=¼xÅïÂ&&pë×mçl·¸ývËÎ÷2z5 8é"œU‹ãT‹CÊ`g5œU+ÖW<þÛnf½ÝbÖ۽̚ö'b êL ¥#0Ÿ^|$«t„Y—Žà gUÅ*ÀŠÚŠïðiÊ$5ø…ÕõŸ¸°Zïî,pŸþ÷ËcCJë_. (¡‡½^éaŸûð ”ÜMïÇÖþœA"jwÃd’¶©¯.憷B«hÂPÌ–HÅŒD¡¢è®â×WUŠ;Þ®-üöaš å› %{ÿÏê?ÿåKIâP’ÅR]5G #!QñcOnBP¿Ÿž’Wk-µ4Ê`ÅŠÉ A’–Ts†b¢ I0òau ïЧq Ž‹ŒíÖÛ½G*¨m2årÛCB´í¸Nšu¦oÄï0:¦á7)þkÄ=%ìDh÷OÔþbêDbä<_ÊÔEäªLkPê9ýAŽß*ñÇŠ½¹§6ì æföüÌõéJÂ0 _#UEÞÚß`ëc'6¦sæ Ÿ"Ú¡¡nØCÓ.GÀël¨‘$Oãp€ÑDXC5úKØf< rØó£ª‘Æ?Æø©‘œ²ó¡FÐ;!’‘Çâ7?ÃǫɕŒ|³u$–q­bÿ W@æp[–ë ðpˆúè/uxÊQ\ñÍ‘¥Û˜Ê¡n?’w ÿ:yË!àô„r·•ã!œ>:p•°lµ±?Ìþ’._  b(hXq­|=ű·‡· \Õïn^úc 茲Q§:à5øÝúÏ·(&¶ŠäñÏäžsL)=´òzþ‡ôó¼ï%:oFŽE4˜‘ k 7óU<‰´ˆAöõ÷óÒ{­Î–x«:[¦ý­R–ŸåD>sç¿Þ!–;´8-§þ 5‚à(wLÏ$ãàˆ6‡!+hrC!¿Òwåze&S¬¬Î`Áòï=¯PÈ tÄãÔž£•#›D}^ì{bÅ ¹onøz%xk¨‡Ä’„³0÷Tð1ÅAr–s;J2U_‘|Z´þ¶ÄÂFò™—Μ¡ÐèÂ9͎Ѧf¶äñY$–In(]¹½¸¿Ï‘€’NKùŠx*¹ô>rTÖa9ázˆ‘³a¢2çÂp¾À¾ÿÉúû잪®º¿ê5dáÒ¥%*ðl ¥¥ w!£œ¶Òì«­¼®WP_Å b!ÿÏJåñÑÜ–`XQ©T›fIi­qÅáJ½þ‡ø‡D¢šòÓy芺ը¦¡:[9ÌEAÝŒ,åtŸïŸ¨ßý¹‡~ÆKyH˜Âø<´r¤êO+‡ø+Í݉ˆƒ“¬ªõ—jÙ»¡X‘®ù½ŠW7g®ì¦svýQñ©žˆÖ×§G:‰œ»G®?‰«h2߯_®u–å&³ªôd^bL&ûq:Â=â_¯ø»ïÁKñrµx°F<èå@ñÍ}™PDg)|ÃË•õ÷wAp3R÷ìù¡` ÷Ub~\œ!¸W† ©3Õã·Õ×Î 5®¿1øÁì÷¦ë‡ª‚¯!W }@ªðK³O¼ÿŒøÙ=²´ /Vѱyoã/×–á·®³ÎÊa¶®f¯õÃìáÙ‡¯cY£xøÛ^>s†ô Ð(¢’ZiA@u¤¿ê¿0wZéXLàù‡¡ŒÐJƒ2BÕa³¨¬²qå"ív”´ÿUTJ›¡^'U“T“¿%–µ¸öMðûÎNަ>‚õ[ÿo4ªøh®~Ã7*H ø¹..Üâ0kO¹É=G«Fª6*EfßÈÍÄÉ«ÄojyþJ v5»µ³jÍs¬µ¡)Ö²ao¥ìÃÔ Hí¨tV»k™®§˜}€.rß!ÌOT'UHêñà#J`-ÝD£ZÃ{iQÒ1hsK¥ÎP!ueQ7€3§§þÆA2îÈÒÂôñ«'å÷Î1j ej ÆÓÀÿDgóÒs‡dL;È Å‡6ì©‘¨¡¿iêùx)Ɉyì¡<Ž•ZqÈÉÉ0òL5]œœÌnZWeìRntÅúT´ÏËú¬SPMûOúiåÔé ¸&y(Vîèvù÷‚]R60ôäFÞÔ·.è›GŸz«´—ž€âÔ:òùv©])z”9+'©VItÅ2¡tñáWm»*á¯i/¾õ}œñK nØ{‘ă\¤ÐÙ¾õ_˜ëTB‡ÝXº°±«¶6e%'Úähǰ…¤W¤áIôîxuA-• ÞÖ}Áƒ†ëÛ”ãt]›4TFHCzÏy2×÷œ•¹Ž‡ù€ kй2ï:´â…ü8v£½{bÏ™«ŸÿβJpÕë>Y¥ŠÍU]áXCí±B®èZÒroÒû=hû‰€w'AOàN‘V3R=)àÈâq0”Ö‘ÝÌ4…Uéµ¢:UXEEÎ8€Ak‘ÃøÚrªéªT«`Þ‹K4ç@"ñNa81û̃~ÜqÓ6¾ûëb¦¡ë3­ºþ×ÄLñÎ ÎL»¯WÌ´óú ÄLo}'O^ƒvS5µ›jÃ^2äà°bw2ôʵìYªÃ¦PHeu°R©³ƒN€kÃRè/ñ ņÐW–DDë°Öa?~Dè°Õ†õtáb‚ š.à Ïæ’žgw\JȬt‡¶â†.Žõ´\* U ûŒ€œâA½]FJù¨ßÑuÁãX£šâ‡Å/> yÔÎùg‰ û•‚ï»+ “°f˜CôšÔw-Hºë w*Ltõ¦üV‡ò½Ç¹o÷箢^Fv‚´–q’{à Šò7H.¶tyì<‡íž}Pr Îb-pŽÃƒoT6œˆŠÔw[1vg íH‡3 ¤ÓH'Ò%âJ÷[WvÀ{ÀrŒ›‡ (®«ø±·Wòô‘ÆàPW€îu¨«@÷9ÔÕ‡¡®RÔe_}êE]ÅtÖ"g‹ôð0ŽÍwæ™ñ;ßh Á!§¼…•rrx’FÙ½õ÷? Ó‚R÷ÄË!QdÕß?äaP]!Ídb†4á:^-’3_‡¥¬LT ]tݨÐHžThAluÂWhQ¹“„iÀÈî~?Ëï¡ÓËàÚ` ¼k£fû¥\s“øU<š„ix) –w¬Ž_¤|l<ˆç(ý†þسá™`ýÐspñÜ Ó|sKªú0æ;$;}ˆ– *ÐÕݨ@;${^'Y??Y9ÆÜv‰¹-`n‰Ù an;8••&=ÍgšÎ4gœins¦¹Ý™ægš;iîr¦¹Û™ægš{iî#jÆ4“›°VS*¬¡ôTè§+ÃZQa0 É ׉ ƒ¨0HäŽù[ùãI/`n‡0ïC˜ÛaÌû0æ¶€y/ðÜæ1ÓÔd*oFM¦‚Bx”¨àòƒlp4l ºøÏo€ŠªXVü+ñûøåÊsÜ/»Pа_MŒÚ¥ ”pÏ.]}£8}7J“ìé9¯ÌÑ’»¿Õ~!¤}£)í·Ý¨øñ–]Y+ç¦îZ!z1ÚOÈ¥g¬‡ã7!£–æ›áiz³¤¿G%¼|Ê’^~3qš‰wÝXé\JC¼ºi¡ô‚R3Óô^53 ï5fæ¬S¢aü§*³o;ÈÚ6ÖEýÐÁŠ Špw‚Μ¦¥c’–F®ÜÚÃ×5ªÄþ”QVz#¦ª£øÔõ wZåìTwµ+€ÛÛU–÷”C!縥ÕB©ü¾ÊoGñõ×_€D.÷ö”mêÑv{{ÊYô&Ø*Y¸qûÿ´1¨í¨Þk‰¶{¯%RJ+”Ôœ‘s¥µêmj žjÇt4Õ³‚ê"k‚rç[i|« íÏ,`^Ò!Iûoª^CÒ^õ6…óž·)Ò}ð‚’ö©ë.$iOh€w(€—f>(ã[Ãü¤0Tw|+öËÇÜ”7„È“#­99®Œ²…”:þP­“xÙùÇûÂ]âGxÛûÐx»ªXsÝXtD¸ã&5âÌMjÄ«äˆÅàœó濘 œjþà[¤Wü`ö¬÷.®-êÂM~‹¹ÄþDåPÓ?g\·|)Ó ·zIP{jŸªçn/µ˜Ùt[¸Y-æ¹›äbvv28IøÝÎÅT}e@„¤V¸ƒr‡tzLÒú,)é<–vÝ &³ƒéw´·~ f­ÔÞÄð<7‚)ß¶tèfp¸YØr«A¹™(¡½E)D-ÔÙoWÀa­hèTuñªÅGõ<¾Yê=Wnº ¼*ª¨«+u\”ŠW-nëPG:”¢¶ÿƒZ ŸC~²>•FŠák”þëäð,¹ÄðâÍ êêáM/Çz™?Øn1<—¸¾#EÚÌd–žìЇP‹¨óWtÊ]×(Ò¾%áÚ4q¾Ù®Ý΋ûoQTÑq ¨âá ¨ŸwNŒcçDÛ<ÒÞþ6Η-ô dE;|öH;$è˳íxgܵCbܽCBåƒ9[r.»÷—ŒYŠÉØ«Ú_Òòv5µ§nÁÔªk§6â6ÆÒÙö,Ó–œu1>ÁÔ»¿Óÿu¹O¨ýK?Ýó£ éH NtÒQ êÈ\çXJ¨“Þ¸P±)VcÊ« ¢KÞŠÑJ¾‡²«Æ·S^»Jã¼ö3õŸÿ"a„Nk§S (Á}¨’2‰(ùvD!ðå‡dˆœG²¢¸žb‰#oâ8$â.b8sÈoᬈ °TZÐ8'ÉqC0Ñ ‡åÎÃ4Ì“;Æ"‘'^í”c12‚¼.ñ‹vÄí¦xÙnFÎ㩦ñJI—RE–•iT Zưx}Vô© Î•ØIÍ1®UÐRó7URV4‚*Ë9)=?ŠÔJm R&åÄsYŽèn¢ÐôÍà¡ûËÇÉÑp~9Äûöü晴æ bü'ÿþÈ %‘ãYÉ%»±Jj9„-C̈™cÒQçüØGÊŸÙ°§R G–`.cQ0ö ˜Ïé€ùñû‚å¦0ßG•‡–@’sޝìÿ 7Æ-Æ2dî q¦±Drå0çœó²'¸l¨x«èš0âê˜bÕ”«ØxŸ“¹Z‡Ó÷V\ÉDü ¦K¿ã#ÁoçöŸ’íÈ4º Ý UÝùGÓÿˇÎ3š~݇~ÑôøuEÓlØÛ9õŠ=‚'Au{8°xçÛ¥eR½ýíÌ­[G>OÓBÒÔŽ¤ #Ù¡Ê+d&^Ð sNú‘JÑø×ÖJO*–_4}ˆÉaÒÕ’}êå3g „ð ‚iz#è£e¯®6v{»Üpw(=éäÛ¥CÔ9Þ%/3IÙóÊÕÏ{ÙqÃ_ci¥.ùêÒªO  OH«¾pèÝIó žñ^éÖPG- uÔ«¡ª´rþÒÅ}j4K»ß¡ ¥õ)Ü÷p2Y)øèu±‚à¬Î|H´õuÕ’yò sي˪X6x߯aéQ¶~%hçÐN-KÜ纫¾ÎáËžœÇåÌ\ªþÄý˜O¢ã…Ns¼ñýçÉ;^yßÿ4ÇÿþÞÿ@iŽ;ß¡< Ûß¡ÒÏœOšcÏòy¥9nzÍ¢+N¥îž|‡d&F:Fî€û᳦ã”0z%S]õ† ~\G_§f"ÎV\¥xt”MÇñ7x‹þF¥R°WSª¤ˆáøšVg¹oØ[ë¨|›´0ØÄÂà¹_ia0âÚ]“‡Ž#š¢Íj…ÔTÚkTÇ=Ku$NT-TÂ;ûšFzvj|nïT„ÑW¤'žÓQüðµ<«ñVEĵ·:ÙXç~ކñká×ú<œµ·*7åê[u¤äü0|ƒ‚þÌ5|¼UÄÄ­Î;÷ópnäÅ; Æê†ÛHL+õ¥Œ˜8bÚÜŒí(ðá Úª¤{¬ (ë{¤zÕmŒí*ÍД€›Ì[ˆ4´9µb28ijNµŒ>™büB§×”ñ츢Gªþ böq•œ«òß ~C€s²2 ¬‘©©qrŒTߪFn›Ë!1¦ ©!uò^Cq]ïýùTïÈÒÕ·iE…ÛØ£¬µdMÙ{…™ôÔž—®æ;Ö{ Å¨¬ÈÖxXîTñ˜^Ú[pyËÈâ5·!ƒZ§hJ¨¡#|K|«X a=n¢±¸ëU|×uôRå§Þ;RÍ:¹5fMðs¿³ž+ªQ¥ÿƹ)©ö;*Qñ#Ôæ8ÚäÁm5Š·!‘è̘þªÿÂìËîM8Òÿ¢˜¯g·½Kq7dí¨WÖªë}ËÊÚåïTlªùRÖ:»íKÊÚV#Òâ£ü–—µ'¯v³‚Q‹ŒZ¬`{yV0ôNÅ Ö½S²‚A·¬5î¥)¬#kßs5ËZmR´½VŒ÷è;ã=üNÅxûo»0é$Ÿ½ê‚3Þ¶wiWþ»Î‡ñ®PŒ÷GW*ÑöZ©”›ß¥È|ø]*agóùaø*…áð•ã"¤‘Å·c± øÕv:d`}Åb‰îöW]“hPFÅdg!YýÐKU\‹~lx±®þóH§š¼“1‡aÒ™ ƒ÷ÈcÞ–G[¹)>çëÁo z¼rÌ|=µâ¸Š¿'¹ÙàŒËgí¯xf¨xòF9‚ía:Wæ–·¿ë½÷îý$ý*›1 ­)ŠÈŠ B 2ÓÑD\‹Ç!<ÖÊ4/‚äôíõ8lñþÛ•¹Ò~”iÁ ç°ì¤oò¾¤Å¢ÎåÙÎbBæäÙå±$ÿÐ5X”oØ_Üqq%qµþ•Ãèn²ýKÏ¿œûÆýg„>GFõ§[¡ú[¹bg¥6”â§ÁŸbiì“~ˆF}¦<’UÉ¿Pñæ‹9©À~ï=;dÎù˜FþÇÅ•&ÖåÙe#À2 ª1 Î'øÔâ±d8M8Ák_<}»ûW2ÂûHì3Â)5ŠqŽ2Â=(vìšù¯Q\|_ƒÞ÷Yë. †Xïƒa;[äÁz L«ðâwæ.žý+°ö9‡¥ìzèí(­IÁ+>.¡Ü°÷榞ŸÎ}=÷¿Àù$çÅ6nlÓlã¨dtœ"}ûôJt)×ù·H‘˜ëÙvzËŸþݼDéwVêXbÕ†=K˜5JÖÜãv0…r³w?ÚX‰«TFÞG§¼éŒŠâ³ v›q'ÛNïUçËQK·ª±±Px§«“½¹CÊ)ö, ØâÝ•¸ùt¤ó¡CžyX[äŠí¹d²:s±ŒÜ*PLS’«“SA{@n|ñÌ™³HŒûNœnaz[+1 äÃ:Aƒ*¿¬­Ñ¹o§îl¢ R áŽFNò©àkÈpé_Šn=(zQô¡÷Ê[× 8}9·¸Bè MtIŽXW`5^ÁB(P4¢hBÑŒ¢EÅr­("((†®äÞ6Šâ¡&²GÃÃôw5ƲéJ®U@±Å(Š-(¶¢è¸˜ê¼ m¡ËÒèï 4Ô}1Ѐ¢EŠU(V£Xƒ¢ÅZ(Ö¡D±ÅŠ(†QlBQŸ71pëšXp61:×7ásQ £Ø„¢€b3ŠQ[P½ŠÛÚW_;óèÓ³?8ú·ìäø“šú/22)DüüµDÄVU#KÅÃ>Òùa´eQB¾b•¤i`#¬°1h•"~ð™—;/‚%·ª8¬Ô’ýì‹ìG©%ôT¸ÐóBϾ ÿ;˜›zjf €× ?Ó~jÏ ?8­~À?&~¼ø™ 8ø‰Î~ôÆOèÿü¼ìà't^øQO?ü˜Gíˆüì8S¡ñsÙìÛO1~ ü|ÏÄÎ_vfª‹çŒµ] kÄŒrO/< ^höWñšáïõwjü5œþ|¸‘>s©ßÄ_¿k_qð·b¶æyÆ_ãü½ËÁ_ã…æ_o˜ÿм\að¯G~Åøkú‚¿O:økºÐüMÓ_yþ6÷R…Áß>{’ñ×ÌZ²‰OKù7Œñ¡T?ÃáÚ‘)TÔîÔ)T<ŒŠÚÍãOŽÞ)}ÕCÜ¥¨Ð=²øQøSûÈ¡«ÓeNÓ¦#Þ|øW«É¿*Jò¯¹MþõÙ_òø¡%ÕïUÿWUŸª2ðBªh•“à¨ÅÞw.{òSÕ³ÿ7(½Îí¹5wà&Š€U3ÆjEqœÃ_ô{ÏÊa~‚*Ô] IÍwm:½ìÑúQÒBòh<ß·ñ´xK0d÷Õ™HUêÔ†¹à² ¡¡TKÏA¡r†0#f–ÅÆc}ÏЕމÌùQeÏÿ®¨e8Gî<ÍÙWòtõ1¹:NîrÓe²K'´ýzPº[ycvÙîÝu&sUñm/pZG¨amšµ7ÎN=Ãèc| ¬³Ëýô‚Ù‘W„Êü\^NÂT;™˜‡ápëÿu:`«æ'îüuê€'ž7yègæ·‘yê8¯1z 0r^èyõ*à7Ÿ3Yäïü‚Ñ“ø¿=†˜8/ô¼z ð+¿29hÇÏqôÂyKàºÙ_T~ñ¯AÿËœöÎCÿ;éÒÿ~†dñÿ ú‹¡ÿµ]hÞ5_ýï—.ýï8ã¯ý?þ ý¯ýB3·ùêϸô¿Ÿ2þ:~ýú_‡Öÿxü¿>ýoÎ¥ÿÍ–Õÿ:”þ×Z]Vÿk­6ô¿ô¿„Òÿ"JÿKxõ¿Îÿ ú_§©ÿ¸óתÿý‚õ¿Œ[ÿûwœz¨õ¿„¥ÿElý•ù‹%éåk³=àvÙyJv¢¼–|à%Éæí [ž$óß$_¼âç4Æû’jÅì?ÿ$ ‡Í‡Û«Ù[¼”]"ÏÝÈ!yŠòEö>ÿdnêÚÃÑÈ1D#Ç8 Gl!ÉS2»$7͵)>)Ò…hT!Žb½´ç¥«sÓÏOå^XFû²&ß=ˆb ¡°Ã>)¾%ht;¢d›Ñ"ÇÚNɬºÜK˯2pù·¡hGÀ®Ã§"EáFddo(<*[$ˆ_w2äN-›ÎÉ€ï¾cøðõTìĨeDy Z¤àˆb…kñhGH4P//ûfn;Â%£—Œ!\R@¸ÄU±x7n4[ÂÊHÍV|ÄÁü—÷¼|u®¨±· aÏŠÍÈàÈþ‹2³EV¤0¿ ÒÔØ†9"ªûq]ezMQxtDFW‡ÂÛ%[nú9µlJäÆ8 G(jaˆw þ4Â3G0eGQPæÁIXNàÍ\³8âÙÎÞŠ€ŠÌˆ>dh }pú†w°Wò+Êå t¯ä¾vJ˜.³;9‚àEãFdDo(<Žú[÷Œy 8¢@»€Gë'PŸcŸxzÑ~ŠU„­ö©HQQq"fûåò¢ÜyÍú$hõ èæ’Œ×ð«àŠòŽ!Ê«W>FÁ!_••Û«>º{¢:'#Ácˆ"\¢î‹Ü³ ßoÕ?ðõÂÅbÛ±ž&1Nì™tXÏ©>cHõCªFÊ‹ËöRP¾Ô§ËñM+ò‰(HM“®¤'î…e‡r{ë8Dâú žæÓ(”¤ þ“¿jCÑŽ‡(:ñ“M<A™'»BPú mLË›Bó >¤Ýªo»:… ¦Ã¨Ï9/ÜýhÄÌPFŽÅr,Æcá¡ N¸xñî'#fRr0FdR‡ ÙÉ%þ`æGQpÒ…·“Kü;¹ÈÄtrÔΡÝ1„vÇÚõàã¼£ç‹JÆŽ¢±Ž"Ä:†ëB¬ȆQ‘â­b8†[[Âp‘$¤£=R ŸXÄÇ™uTss¬ì½HÊ^Ýìµjÿ+é¦Æ× ¯‹4JÜïÙ©”¾®RN¿<žä¦V"Hü&q»çGõL!W{ßÊQ–½y™ôÈžŸTäæêØÜ›GÆQ.Ô ”ÆÔÉŽ?=-Ÿä¬, åaòÇ„6—›©àËrñ’Ûå¶Å«úžΈf¸Ý*J)äv‡Ãaj·ç¾Óò tY|ÊRrzÏъܾúf5½&±™c™›£×Ô?ðLn:8——³1˜×éòÁHis0R¡0ÒŒtÚiF”¢Þ]íÜÔCs³@Úw¼Qœ.¡dM~%ÞB[ìæG¢K©ßýÝPðiñ÷r²0;–Ìquòâ vàMB.^‘”'‰.@«àÙÜÓÁgÙZáå°zùËà³¢’ç3ÍKüzí–½®DÖÝ ¼D!DÍ¡„{•iJœ ¡Âð gè½´èhÑB+Z´Úݭ̘.­mw©z/óý¶n];¸É´”ÔôÒ«äÿÊú‚Nz]«C)Ù[¡_l“jF“c{í`©Z`½eéë…UOGýWsµuùAýWÓ»Ãü®þ«K¯¡_…ð]üëÊ0ý ÿ&ÿª¾–~ …«šò½ßÐÇ[«VaAoª¨íHâ³7à³Uøl9>û0ÿZ¼Ýý6º{#ºût·ß­Æw­øî#XZœ¢KÐy¸{Ç%èŒ ÊA¶ÔJÚZk ©øT²BoédÊ ¯áùb+DL ýÊM òá?ö¼M®Šüè0¡P‘SÄäÝ¡Ü3Á=¹ÑåÀ¾3‡¯—=ùéŠã;ÔePÝʘ¢‰Pëu¸0ÐÈõjéU$r±AJÅÈô@ÙKý}€fˆ ôk°©®:{±Ó³–qˆi­&¦îj=¸ì”0óþ:àЀA”ëœèÎ$ÅÖi‚¨Öë.· ³ÐHÊú £<~m1 D÷å ÍœJ<ÙI¡câÓ ŽX~¨#¸{6Üö)ª»u«g¯9ãN ñ^B¸^¿ª÷ø+N½€ªÇ LÕ? /ýµ§þáðúF®3XÍbpAÇ÷u ‚ÞªŠUo¬ )Ëo˜(‡¯ÐDÉ ¢,ÞxeEÀo¯§®«y|Δ¬w­o“1SRËßçñ+wH|3äšFu¨¢b‹3ùÑÐ 5CCÄĘl37ÜHï;eEÇÿÚÂãzÇõ¨´höíß ?76W UÅéåìGâ;R_ÞSq¼®xÿþ3g˜¾•Kf«´«PS”OËÇáR]\*çâRêâRy°›7à»a|·ßà»øîóøîøî øn%¾Û„ïZñÝŸÉŲ, !pr8wl\‰ØìVܬC[pÀE¸î½.ÁŠ&o®Ð¹h̶‡ ®ÕUP««àùÂÐàÇÈs›^<-`ËO¹!óÕ÷_ëqf´Àùž¼À ˜Äšãf®/½ÿÞß-h&ÿÞfÂÀîÆÅá¿l¦ãAF«©ÙR­˜ìZ¡ØÑVÍŽ¶€1´ƒm3¾çÁºuÙ£ŸªžC­m’ØøËíÕd ¶íJåÙáâuŽö&“Â÷ˆu{Œ” À–5‰µÃ)ҳؚ™NåáŽÉ7—=9P=© ¸…âºcÎdÆ\bbfh˜P<3:¼£ÙÉ4$®¥ZÛé’6;•´Ù©›a*9ö$øý»Ÿ 5p¬jvš1µü)ë9Ãpš–V®L"2s&5‘ ²¤nWÂcšÇ<þ»˜ÇW‚/ˆ—Ô]eóE¹™[¥Àš9¹Ióp‰Â&¯¶àùGE#ä åF^Êý2ø’¨Ë^ÑÐU œÇT+Ãp¬*p+Ó’§ù"Á¯|éxc­ yXóð¦z!תh‚ܨ.`Ø¡ê†[†OÖ«% qc1£,)Èô‚-7#&’<â7y5Ùêš1=99óph:ó|Œ8 =ªºŒŽÍà–n•Ì—×ðà‹lÁlw‰$Vp™Õ -˜þZpÝìÉäýîŠûmQ•Ùµx ²¿#qz/ÿ-ô—7dœ«ÿü†ËFiðìõC4L*Ñ€Ö*ñ^·)^ð~4“ÚÉ›)ToàO÷ëɶ'õx&„{¿|«ÊØAC?›â @„ëcxPò?ÖËCêM+¦wX7­U·)(²ñ#FãGÆWp­#fãÇÐxQ5~L5^ÔUì’Ñ1 t˜ü”Б¯ªãpYoëL)vÇÔ)·êì#v7]ÿÀ^–mâ%Ó&‚Ò#2Mi`ô´Š´Lîùû+‹Dܦˆø¾s%Bt®:½ø±xñóÜ+ÁŸçcÙ©/Ö&¾¸á'As ð6—$g¦­Ä>3²¬]r@úNÃÊM«&à‚aX§aîcå¸ËEòuF®XÿÀ7‚ûòU—e÷Ö8öýì2R¬8žÌËy!1RåžGSé`cCM³o J=êLtv¯@÷,´=ލØðlPu²h–ε€~ýšE/ßÜ'ïá0ãjeb“þL=x žv÷=ÉÑÇŠ)¼†eV;û®ÇxŠŠÚ(VKƒì/ó¥`Ç\ô*WÛ´Ö#¦zè4ó ÃzÅN)¶"w-Œ†O. h£Â½äÔŸ‡§—0qrŠi[¸ø¦ë*3…ð\53wJ¬Ÿ¾HÔ 4âõ›×ü¼ªÑñĸۭ…™Ë©¿Íáâ·²N»Û9!}úÝT-ÔÈ$ÐßFñ+Tm”«Qw_ÆÏ“Õhd~ž’oÿmž&íó¡€r½éa~/~Q#ßÿ¡èæûÏÎ<*ê5ˆ®fž¯¨×éÉïÏÒOñ¿/ŠFyŠZ‘2n*9²æFŸ‡-ŒÆv‰ÆŸdL4FÃÿŽ×'—7:Ç=¹ÛmÛ$?O Æ çD¥Æpñw3Œ¨ÓQ½«¢‘[3VÅÛ;œ6Æ9 ñ$ÐxڃƄƒÆˆÆL£¿u¨ÑÖiPt–ÙïüÓ=KçCw?ž MAWÕ¦‡CGíGsÎ#aßõ¶ÀާÅʪ=þÒ>—¼òw¦úåä½(¾ë!äÕ‰Q¬_No ÷‘õòÃé1þÕ³÷—ïJåÐY[¯YÀûû.HÀ•ø´£¸äñ ò¿zþî…2!ÿ‡Ù‹cM(¼RËsõΛœsAÅš¢»½ØËâø yZFç5RuR9H…iš*LS /znPÈ)†dY-8}“5ÃüN/ Ü5Þˆ“ÐZkÌ6e“GM–•D¡¿÷Üýh(x ¾éW8x`f´qÓå’[ól…ÊN¨uðêV¦¨{¿Èl¶E¬4\£˜4ýµìÑú/¼GØ„,î¸+æÒrÀÍ5J¯¢¿^¾PÃuû.™HÛ¡Ñ R-Ó¢tÌD¶°¡¾hÆÝÐéžv1ÿŽÿ-£‡Ö]ívŠÚjLÿ[›Z¿mú®gûßÖ»¿æ¿¥ÏSpD†áù»Ï„„]0 çç¨Ë¼Š|£Âúÿ¥´“î~.üåôp3ÅÈ¿ 7ä÷_˜ õ]®º*î~2<$¹ÂÝO†ƒ‡fFQg/¡½ÑþéE³qí¿SÞê%H3z’2¨]=;-¬wË«ÐõªÞgŒzlTäžËc"Q3¢úÿWtÿ.û@agXfÑ´ƒÎ+Ô<µ»x¦Ÿ¼£ÆñãàÍ5t¸¨AéU¡pní¸ÓÆ0/ yîö¼oŠœ»ÅßüAÊ\mYûðKÜ=ÑÜ#pÞ¸Ø!¸Nêx<ÜUãvÁwéqtÖ.x¡b®Ì«·„´®YدpÛiŒï¸u7ØIC©¼lzxÙ©:ÞÊù‹gít•êtž›5jn~âåYToµ®·ZÕ~Å3‡rýíª³gH›žJ$ýñýG¥V5󦊻êk¿+´Zªõ¦€øA’v1OR 9î+Ž_¤NAí¯‘<±’ý¸Ü8ÂAÄ~^ÛJfO†q®Pç ø\!œ6ŠÃ…Ô!ã¹gœO踡‘1>ш2D.ç/é¨Å_ø¼šΫ)༜ø~ÍÚÃé5Ã8½¦€ÓkFqz«æÝÏURÚÎÕÜáQ˜³F°—€©–AѶħ¯vÔì@•NdÒ9 *GèÀ5@*1eJ ìFJ <*børÖ5 ©®Ó»N+$ "ÈOŧ2I?ÿíõS­Geœ“û™Ïvzì]ìxà¿…Òò˜ÌÙä›u¬5²bx‘K1„ž´3²Þ¥¡—uP 7ÖÈø°'Ƀ>Ø6T#¥M,$¦Ó¶JAM}³KrhkM£”m¹ÇëøenŠD3ÍAVï†4ߨõªÙ(ջ߂*ˆAw„z¹^«—뙅סQª‚¢!¦B=SD=ÿíEý0ÂtGƒ`ª”¨ç¿½¨/õyyü}ÃÇ1Éoøoï7›épM×(Æ=ŒéÚâš®­€¬€éÚæÒã·›¡Ç﨑:ø)ÑöɨéI^eº—ªÔx·ªšô$/ÏR“ö¬L"jPèUj+=!ýjé2;Ä3Z‰òæÄ Îÿnד'ß¡'o‡œ¼0Ñ  ›lÓöÁ6i<÷Š´F5IDnÑ´EÐW^‘D!`¡1óR'ël¥<žE€æJ¿”Ì h 0ûØ‹ð÷MúÌ¿Üç'ó“;4¡¾Š_Eü¿šÀWbPŸÿ/Asò÷cìc˜üI×ätã˜ü©“  ¨iA™ \BDØ8¬( ‚´%f™&­´©šUÍ6ÔìXâC+@n%†À´Ò 7C÷­4-qÁa=þi=ÓrÓŠÔ´$ñ0¥iiJÒÒ/^‘´´_Ó’Ä礦¥IIKÿ$éÃOO:âÑ“Ž¸õ$9GkÓ@<ÆÕ’kê޾â;⪇øÜà"&ôÚ#-wÅvÜÿÕE ü ʼn‹zXsøä¤bsªÊÉ9 ²QÃ@`U^0-Öiôƪÿ^ÙßOA!§Uc§tÝ Œü>jv¬I/¸ÛSè¶Ûê¶vwZÀÝ6,0º½݆Tc\•»mD·M ä0U•&Õ_-jp{àïÑCt ‹²SöÞSqüŽ<°*×zfPn_œÆµ‰Z±¼@-n£ÀcÐ_Ë&îý·RfVëÓÌjeä¯ÄcÇÌú®Ä‹´¤ëi¸qÐu¦‡†Íçâ»Y>•ü*cÂíÊë­Ê0ÏZ(7¿‘Ÿ5_ ­âßÊIL^`ëhV|³{…ÑñÛy©ÀÒ ï3u—¦ùJ(rpRlŒ^ViªÈJ]°µñ'Ÿ¨½N(öB¿r|SÇÀÜŽ2ëXpüRŽoš™³o_ «\P€\[4µ'öøe”? œ80»Ç“4éîl11Ë&>µpöKâµ<5±  ÜB~€¤Û¨üìacÑ:[Qœ4¬¼nÒ‰gü’YÒÔ­Ä„+¾-¨—»GœïâpÀíèÂIvGãèb;º ×¿à—¬µÅwóò}^Tã¶·£m®–{B<­‚ßmæ‹»ø¡xùDîÁ'}såv“íp…oòkÖêBoØbÝ‹$eLŠøYó›`‘`–{A‡»ÔڇѨòÖF%‘.íäTR÷Ê€ué´>ŽÖéór‡‚/83îmýÅà hvœš}VÃÀ_ñ†<ÿ&kQ2uop)¾½/‹ï™æJ©TI}${h°òxã&bØÚ¦=Z£éöP“RƒÏ<ËÙ.µÊîitì¥×IÕ™ñÒ÷,g¼°EFn‰øOwÃNjsû¤ÒxÆXŸlD’.3çØ¦ŽýgØ»*’_qüJ¯ª-L«Å©[Û—P´àêÙÎI÷ƒšã‹h}ÿº Íù#Ì#5Ò©þ[sÞÀH^û£×/py¡¸VÏÞPÁS»ÞTZ‡€”J•RªÜF­±"ž³f*òFÞ¸¯«vý•Õ_óF§ÙŠFj/·2†VÀ>ž™×ÍüÐÌØìAO}ª§aâ«Ð6«F¾ætâr×9-ɹj”G¶ìÉÚYºû+L,ÿ¼ ’ÞFÞ†Ò&‘Žqé qOÞ†2LËæ™­UyfÆ‘-¸¾Yük¡+CèvºèKü+qÓå®exÚQ¼s;ëà _žýÅVžØzµmÄj«™ý%Ýÿ­©A¹ntêy¾–v5|®–w5l¢:U´kåNc¡»æ‡sŸµÅ×}%Z»Ì¹^}¼Nà·øÐŸIúVû$ŽaŸDao1y=¶˜læ_Õ×`‹É—ø×â0¶˜üj^‹š ™í$Çg® `‹ Z¡{hÔEö!ÚO!þ,~•„Ó4ZbéÈ{ÏFÍ¥³Kg«Z:[ÔÒÙª¥²Ì÷føØ“›ˆZªWýû¥µÿ³µtôrcX;Šî~´1_%ê©»'Â#‹Û¿'ªî¹éHW d”Žð=À^oа¡ôÃâÊŸF[´µŠ«L'G:äBἜ­©M0(‹n¿0öû·OMÔïÝòƒ/5‡ØªÔÃøP‚Íq LUÅÚ“š6¼dÖø¯_έš…oU,ü_a¾Å…P? Òy.ÃáÓÍÎ)#t†Ú-Á—aŒá2Œ1\†QÀe\†1Æ—aìŒH\ü½«d0ˆ×t-†à,œ^Ì—f=ñüwr/\3Œ'Ã|_ÆÃº^y—fŒáÒŒ.ÍP÷lå©O põ_§!#ïúàÐ:#^q†8°a…yP|Åá øi´{â¾"`¡£ãwn°¶¢î6|ÉçÇϘGð'{>öè&Œ|NèGõª+q\AsÀ½{ýâoò)óf®É¶î\“mšulAƇLÒÞ¾ÀÿŒ£e¨µ]¹B~L ùÊ1æâKΚgÅèÕïÕpo©rXZ­¼ôH,n¢°¼¼bE«ÔÈ µi)mZtF$& !Š2‚Z†2‰ ƒz¼–‰x-ó,6ÀDC p¨ø±#X)73pD‹/*6c·ohðZO´¥ÛVøŒ¨)±ZCÅÃbµjûZcû|¹#ß-d›É$r ™ìHÌæÎî dj‡Û¡ þz§”T¬1ŽÃRžP–2ÿ&%tBû3¨ ìæ}Ú3sZå7túДáß9¨T¢)ÝÃÔ…äM”âl° ö'H–ñ¾Znþ°É2¦Á2Ž,ÈüåiÅ3ŽhDwÊx5ú¨ÑúQƒ!MÀYuÔlýZ/êñðˆÚ/êö^`–yÂd™ÆøŸÁ8N˜Î“züs ¾“ÏÄwG!W§Xa¯ÿ¯|n œ¬ÿ¯ÞÃ?PãòÁ©îô¹SÚ¨Ô.ª!¬2ZÌú”êF¼âe<†elº–¦à)Åë­—¹\KÒ² /w¸_Ò¢©Z";1¬XÄ¡¼Œ“Ù¸ ìÕ,Çl<—³GUL⮲EUÙ†*; œPºáÅʳIZËs¯Ùþ§?—vé°Í7ÀÎw+”ºhEÙªŽúà›ñŠ.íÜÅg5v…»Šÿø7l´j9ô9Š!õyLíQ ©Ï1µ!áí冄sbÇÃÛ[¸ØJE›qîd››Ìíb`¬ªåÏYgœ]ñ¹°yÄbÖ-<ÐñsÌ:T‚™›‘‡Ä$Gí!aZ›RN“ÝU´Óß$G£Jî)ÌäöNçÊnšÍ]•˜P±iTT€Ëˆ¢ïyÚÜÆ9q©…査˜6»Ëë>+Ɀֽº©…sw¬ÜÔªÃ\xjGqsøažÚÁyLícm-Îã|fÅŒžÚ—Œ©ýÅ<æ´ûìszô×=§¥‡xþsúü—tcÇÕYªO³÷þ9C{J+=§HoæÓ/8©ÄÉàø{hu哨¼p¶CÅ?† ¿´Øâ‹Z?**ýè“§°SRG•3ëˆVÙŽ@e[4û“çµþ¥ôƒvµq€wøj€¦ôKÄ'y©ÿ00SJYÛ¯Ù¿@žÿòÙçôù/®ýe~ÚZ¨Ö‡E¿=í¸¡©5Ôúû­za Ðk­§5ÖrãMµ² þMÍ7éæµÙæÓ#}•´Ußk,%™‚ö—9Y‘Ž ¹ÖsDt,n`ƒ^k@K-(\+ç‹S·áZ5—ZéÆÞ|Ö§|s }Êe8ºÔòZG—0´½[êùË嵆.ÕZË#ˆ(BçßœñX«È€5!y½Z¢ÖÙ°“©eýËQ‹2µŠL˜›þFçË6tÔ^ëÞÓ^«è° HZK;Aùa0¡™ÎZ÷†–ÎZEîht9æAV{ë RÙc}âT°¾À‰%SË(6Hð-{øA›ëà Ø÷½wÙ>¦o±ƒÑ®Z‡æ»ÈÈ ¬•,³[Ok—zäÕgT|³´¢Fç1t—WÔ;»¢FU /^–{Š·ƒF9¬5J£` Æ¡¦šgV:ãPSqHÇKÎ Ûðr‡ñr:|Y~¸°§h™Gí™-0Œ¼!­»VrŸ3¶aÖt|ªdæB¨£·–YÒÝNbGD@jUmé]’TsftXææø7X·1̃½T§¶¢J®:mxíÖ§(á(nŸÔÅÀä0¤ñçou%£m[7êÉhÿ5VØ .f¿L|#08ªXÀfÉ`iFö#ˆrÐD‘ëC%£Mဘi}°œ‘Œ¦QrgÔð™ßÞd4M’Eœô;çwÒ/öoËçOÊÑÒ€rÍÊjãf½L6ã卿ߣµÈp¼Ê•á¸Ù…±Q¥~¢$ÆmЍáX'¢Â†1í7Œ ‹ÚˆdN™žÓQÍRFA,_¸Fí0a”U…•k¦ª¸÷!yáÃÆ×’w÷Ÿf£ Kïù§9¸°®ÖÑB‚›^SžÓàá9 ÜÜÆbü£èÛœwßcèÛ‹K>Ÿ‘ÆnÅD†qj¼ Lª„ŠOð"åEŽ#“„¡1}Ö%.g˜‰Ê¾kÂ\ðÙkXKõZÂÞ•Cê$þióðíI¡ƒ>f"áè嘽h¸ŠhiÎò¶ãëÕ¡&ì‰qÓ¼Lg;¤½À0Éä´™ Úm"Èá>:æ>\æ¨ñrÎý’uþÆZÍ7ÌVZ\p ÖëVÉ鸇§mýoOÛ®x?*Å%t‰=•ˆ`°]ç™K h œvCøêǶg¡ó"ܦyÕ60¡ízím—¼ŠSPƒ›d²g§^еr}ݳ¼¿^z:”˜tLÆve…®QúÉ3s†~Òê²…ßa=œ°b%×Ì1+iÑz¥sÎåÖwÔ:ÎÄ—7ÌV°¼ð†nC±PXv*bS ïN†uÃÞ å8t+¯ “7èäœ|Èœa œA¦³9!‹V¼L¸_B±X4½ø yÝË*Û$rM£D\Âä>F•™ª%¥Ï.ª8~›°vZŒ}ã·‹Å™3 ð2¦÷ÙÏ‚Jvj·ýÅÓMHüÃtLTäŒãS.œPÑ[v©™& E“‚â'ŠF-C9 «ó?‡ácú)úÏ ÿóYDíý”õôBÍ@ÍìÛÅ£M~¿qþuü~ãw|v¢ÖÏë·`ö_9þ“Gí÷ÛéÉ+ÁÚøJ·žp§(»EÙS|ËV‹ÖúØN¯†Üó¡:r ׺S‚õýd·L™Ö÷apžiÅyø7IûiÍR± ^MÜÄu‹žÿ\ÉÓ”KÃ%9zVLv6vfz¾¤s«¯W8έJ04ž²v36³»¡œm®8sS_¹í 'è’>Ñh+~â>ž¼#µ<úÀÒáˆUÓcr Òïi¡¼ò8ÖêÀ¬ÔÔÔQú“©‰¹­»òʽÛôÕÂdPgû%åƒ:*¨óëA0yáÀ|ƒ:¯wcbœÖ2|ZÉðÛqåa[†Oj¾:Y+ïÏûÌKòþ¼ýnÎJÃ×,u\)¿|Ñ“ëŽü–Ù·¬ƒF7ïcqJÅpØ¥±ÆbŨÕþãhÜ¢²àæu4®Ì+à3Ÿìä„Ý †åÞ¿2Ý¢sZSÃ4¬õÏ¿IWJþ~Òäï§ÀßOüý”âï§5 S. XèôpÔˆý=¶ ÐkÝ~ÕBn¿v¡Ó>?¢öé!j­ž¦ò¡NŸ?­kJ…hÌ3µ)6A†•÷Ü\eXñɹÍäãÞ9÷“sCÑìc2ÐA«<k‰½%ž÷ $ÆêÐÛazûM:ôv¶þ'‚ç婹‰(Ë lG¼ÙèaîŸç°(£sjêøFîÁo䫲ÙG@Yöö¸âÆçü^C¿qï–ÕÞJê‡ñaêJß ¥ïTý(œx¥ë+ÁSùP0{¡ Üô²)gK,?Ï“‘AÔª¹Iú(XÑ]öÐ@åñúMjý1ÕDT©]¨ýÅKóËZe:ÓéSr}1+:­YÑi°¢…³U/Ëø°¢uR´<¥@„úE]7ûO:÷o…œ`dÃB^&ý7(ú§‡ÐŸ¦0Nì–q¶ÉûSžvm‘16·¨ü&l’Y2½ç™ýpå°µÙù”ÃÒ{\L'–”»>ü[ŸpV^ãfšúŸ£ýåOp­&)Í@JËBɹšFZ4FŽ^HŒ$^3Œþ0 ßd4Õ¤–°“å œôý!ã$lâ¤8‰(œ´*œD4N¨‰ †“Ì…ÂÉbàDO§QÓ¹–Û]Žq 4º£ä*—Xèä%ô¢¥Zž[•2 Í92ŒÑ•xl^‘¶ÒgÛ©TÇòc$UûCDZySꙊ³5àU“ñ*ƒÓòÍW ÎK‡~NåF«ö •TêŸM¿ß>ãsíFb¡ReªÞbë¡]ÁªYñºñ …è¹vž>t.úTîéè‚‹êÙã¿Ï4´j$37«šs‡®©å˜ü}œï«oê¥}«Øk%7×ÔY›kzûÈ·ëuÇBÿ3;¿£&§SMN§žÞuQbjò=‹Á¹®ÄI â¸AzΦ·ZkÇíi|:Ñ0=9=Ä•㥹ëTswÅÏ­a¾—×tyȺK“u·I֘ចŸûçzj­x!L_rqE^½}§üšâ_Ç÷óýêÜØ…] (ª½¸z.ç´Ò®ZwW׿ñ ºê](FÝ­ˆCEI)’ès­Ö>E}š ˜鑹ýÙÜqÎ/`Ŭ=ÐO§»ëÄ«nã•ø§TäçÑûüzš«žä™&ÔÑ·åu]uÀì/~‡Ç¿YSîfEÞ¡;{›Sæ71]áÜ…*ÞÇAÅ•m~²-òŸ²í,²íª³l%ÙvÝo‹Ïé›'@Âl.ÛºP³Z1¡LVÿä9ßj’Õ6ÕvEVÛYm×sÈv€¦Ù ýÓÆß„Æw˜¡ñªñ1ÕøN7#W # ªè †ì!ACm“0m‹¹Ïè3NàLÝq7>ÚŽŽ>8á:QAðq±P;šÔÒã£_zØØ¯-¤J¾jçí~t Ö–…½Ç;¥†˜Ç-¢4²îþä=2sg§Öôv*M¯ú "¨.ƒZ¦ l׫m»’ü ;Ú¶¹4‘2ç{Ž‹Š.”/íó}÷/äó})F söót/—s$Ø$4Ôq ñ O”ZtS`íû1‰‡Õ$N-’èÆˆÉ…Àx8¸G¶:x¥«ÞÛœ†k~q˜ùŽÿKçWNjzÔˆ<¸¿ðQy¸¶‚| ¨²€Í®Ó ýO3ø%¨rÚ¤Ê#ÐÑ…Ê8„GD˜G]Tïg†ó˜{Ç\f¨Œ”æ¦U&Ѥ@Qn&¸Gª”¡­¸.ešeÑ¥•JXôª„[•0Ì÷Rouî¥v%W³žHÉÕ+ ÍíWi¨ø²ê0_V½U_V]T¼{Ð{À©Ž¯KµhƹfÏÿ®â«™#¼'X-_¯óÃͼ‚ôÅŽŒŒ¡Ñ>ä­3Ö{—Àýµì»¢ÿÿîU$øþQ½PŽ.”ñý·›ù·G<Ë%ÃkÔ¹ùäö1ìBEûU|¨FÛB­dÈý˜µJšD "iÒ;F°“og_a2…«s b<Ì-ºÂMB XÈR¨YTØ|1Wh!§šç *?‡zË)ë‚ñ÷$Zj5N¡FD´´ã n)A:*dDKôg1þmø’x­»wÁñë÷ÅïÞ*ÙÓ žk!íƒ}ŒV}mŸxÇBùT¥ {{ŠÙÜ|m¶°žU$?qv‘üÄÉóÜ:K"iw}õ=B$çë„Hþ§;þêNUýßxÕšÙÖ Å8þSß)£ï¼ùÃØœZ'ŊܽV[çÏðß·ˆñO¯5ÃÕ1®Tü›/d¨3¹}éÝkÎ ^gß»ÖXçtÊ­•ü%½ÖÉ%Mu säYü›ºi®3…Šë*nÉ![ê´ýþ5~4+ÆÓ¢ÇCU•wZeSNƒßÙ+ûVúž™#*ñr/Ý/eš¥<›i£ñ’c¬|a•q`Žz™Û[YÀA"ÄuÔ}8ß…a2Ô*‚mgå2Š( å‰QÞ£Dtú¢¬»%gà0Ú)Xípþ^Ë^þüK0ûéJŸÃ[dú›~œuåJÂeØiK›q~‹‘q(“{ÖãåFãeî%ñÜ8ªÅøˆÌ‡í&šX‰s¸òã â.+‡¬Svær§‚s ƒÏç<Ól@!^2R3¯r!:jäHR›þBþ*Ý#Um¸K¿Ú¬k6×Iùþ³Ó†|or­‡ãJÊ-{RȲØE-\'õ;GW »šQþ=©…-¯3µ0úÅZÿáuÌñ¬õaÜ«õäöÝ,¯Ê×*”s2Ÿ‹¶‰—ƒ»â`r‡âz¼Üh¼Tñ³a¼*¸¿ãÉn¾JÕÝ¡àÞÜh#'“²^Gp³^÷Fëàz‰=ŠÖùo´¥Äœ<^kf³J(fE¿)G9WÃÅ|üj[®z$_ò— õ^î´Dr§‰F#z¢œ|e f‘TÀ? è]®ÁMm0U¿DQ[¥Î,pkµŽJ/ÝR·ag PE¿‹ÕÿtÂcáLÛ6È”£·6EŸŽ³ÍBéív²ÂH¦^öè=u³A•q¶ê°Åå¯ÇV<µá¥à=µjXñ¡¥~x f`{¿×ñe,ÆvS¶v@¶vÖI×'ý¦Ô QˆQ‘{üí5||ôÉRÜ›(âùüPQŠy¡ä ùñC*Oíx†¨ ç·©ó‹ŸQÎ8ΡÀ$íܹ@Ìù©JªôØUšYFFÉ!pÙ¡Ë%ÅH;ôüÁ5Fž”:á¥zö8P"×UqûP«ËD\7×£”úM*¾Ó£ùŽ<ùA cFÄ(Á"•ò±pRçÕZ+¡ÜjÍ»»ðIÏÕ.ùMã†÷¼¹,£G±Œß;Ãn¼nMŽ>ÃÙ&jeÇ[_öÆÞ¹fF×̨š?<í {Iû[⯷þÞ +¾×Ä_ð·Já¯O)u«\PûI†ÕžeºÚµLqï*ûoó^[¥;7Pn¥´ë,e“è¼: ¡éwǯ—Ó+hJ´Õï>¡Ñ·Z¡ïVo2D•ÌZ¥ë®ª“çg̾bœŸÑç"&é}jÐB·A‰çœdºi„hsúÆC`ô×9cû»¹Ÿ5¦ÀX 1 ÆZ¥ÝèæûÍ™°[ëРÆôÇŽóg=d¿ )泞G„;ƒ: ž±¢X¨Â Ã[›$½¬×@pcnEî­ãupïWœü6iŒ‡w49êøF! ’aÐ#TMBŠO58¿¸€— /›0ª‚âÿâý&…š‚ óN†a×ÕJ‘žæ§¶&7-t/rέþb˜R|Sú¤T|]›Î8+[*¾B„ކ ‡œÞ¯!†öëìz{J)BCPÛ¤=JÓ‚®®Søsm‡­‡Î¼ñbÓЂ¤?'-ýáÿ$ ãÕ~"÷ÕxãÞ{²·Ô)¯éh¼¦ß š^Ó­˜ùÍ ¿mu¦×t;¨i Èa‡bOÛåÄê£K=(£Í Ôlî© û*òŒ©Ú½:çâ\­Þep6ƒ!÷ÈÛssj: ¥vÛ~ö*QΧJ]Ý›{6¸ á¥ÞʉÕÙ­Au WY*=U`×>¢TÝ!L­Q!ZâB¤Æô½nwÔa_Þˆº~m«rƶi>¹ û…[^ч¿Ë&F³Çm˜'û{Måºò•dÛÉÆvDÛNžaªôµ’q“qû£8EÀ8’Ô$ÙÁ:¤Ñ¬_btÀ†8𲄧•#ÕFäc•£8†t­”¼q’{ùÝmÍÎIä5Cä5›f,Jyß hH-aª?_É©&]Ÿv>L7©¦¤L´ðØÚZ\ë™Ûn‘m72¦‘™~´Ù½ðÅ›cÍ<Å'šK3•9ŒàT³ÉTøŒ‚‰f USñ|Ï}v/ƒVh¦{‚»Ð7Ö™"¡ É¬ D÷ë^ä0Ð&-ˆŽü>—­cèhgvPüiÀÜA1r f¢NÚׯþ‰q¥%Ûþ‰q ¶ìbBëuÎþ Gî749\æMîH\Øojr“ÒAÅ*'Œõò•·ÊƧŒÆ»Æ‹P§ÌÆ£ñiÕøaÕø´n\o(/—EŸ¯ªcoxÐwªûÑVc;8r­©Žå¶xipm(Þt°u¾ŠÂgÜ3-O^*cX*jo-”|s<;]_˜Øp4¨vCŒb3ƒç‚s7„ûè$Þ Ñ|­1ÏfŠgU<ŽM|‰`ê/æCÓV Ê~õn;˜Âô¶ƒ0+îvŽsͺ'4ûž›ó‡0¼`¦•þÚmꯇ5ý©KÜóŠ<Þ)I‡õ×ÝØ¦0©eD§:)Hß‘Wû?«¼ƒ«ž]ñÚeŒ\¹GžÖ©üò«¯tüòýW:~ù‡I*¸ý¿.÷ñhÍ•ìrßÚä¸ÜW]É.w*rá®ùºÜõQ ÏxˆOí ·=T‹‡ÞYü‡[±ùLàvvÓÛþQŽj¿¤ŽßøO´–Fë{:­Gƒj$ùE"©¡9 ÏË´ÖÑ1°ù¢TQ7Lõ$Ñ1¨¨sÊBB£•x¯›/šš=køÔêŽX>a_0ÔmÏéE;Ç Üûe©HµÃÁuÒ°O¶âøQOš6ÑiŒ%°H.×Ó ßZàè§ûȿì¶)7Iª†‡£Ï—£g‰Hö—’£,Žþ´’íàÕšWËÍ&ÌÍ—ønc‚+·5.W[ÉL¦w/Sµ )¦*fë;Uuß‹ùÛ´È‘¿ñJÆLã"Cþ6/âéjY¤ö%-’‚³…'ím² çŒ6Õ°›;TIî€;2¡éhMWΜR‚Ç k¼±ykkÀÏŠeÀúï%î= ´ËQÖ.uËžR/ÇX½tÍá$8^Ÿjv5Ïjå%œ(ÝÒÄè´ƒÉ寶Üx*NT»¨„fy’ !‹º½Ë¸“¦‘áp˜0,¸“xzì2~JéÃHƒ¯½"˜©>*ØçÌ×5u Õÿ‘‰¯~NĨ>êÔî• &²½B0Œ‚£8©÷#90ç>nËÊËK1„’°Èý¡= õ/VÒ "ѱ‰N¾{ðSµ³wÕýxÝŠì»4ô`!õ.’ ¦GUé]$i¬ 5ôÁÍ0NÆ»KT“·³íjÓ}rî8Á,<>èä÷Í÷úÔ³ü|g7è™]Ëê£p’^ ½‹¤—æ0Ž;bÌð-=ê;p¾3§7w ­g(áԷȨ¨ÍÝ{«g8MnÆÙ_Ut†>jË Ÿ™ºíjpLÌŠI>" ¿Ãj¥>­Òk `ìW]¯A[ô›5Qþƒ8Ö*£Y’x&®µ^¬+¬ÅJÞØY@ŒiB×᯷ »Í¹PvŽ|ŸWã[™N@MLãÄž ³š Ý¼@• ¨ßš”ðä‹ ¸úÉóÛ/9£ýrhDÓkšvËW7‡ Í~¬òÕð'ft»]Uð?9œ›Ã­=g7àÏájf?Äù³Šy­ÕümfzPñ·uªÊ ¢…µÿ?æo¤›jþ6èáok[W–¿åÁ¢²S÷VoÈë›(ú”íðÀõoñ[f‚ïm9­Ã+’¹­7 w\ÑÃýc8|k½i¸cmT)­h£ã¨*AF ›¤ö”+ŒW€¢4 $lV ´ iŒ±ˆÁQ1P«tß|¨aV˜u¨⢰â·]âæ¢—8 ˜a ÷ÖúsƒÃ‘p”åæû”;Ä®2rgªÛlájC-׬m#Â)›\á™8±º…[Ź-à à'›µJ¾ÆÁÈEÌçoæEÜ*©…í§Ç^ÖöÓnLnHS€×%y·à¡æ},mu6AünQâwT7¸Ô³MQÏVUe;8*ÑEN¯NH“'Q4†óH¦_ÞòEHTP@Íð¨\¥s5ôÛùúRûÉEŸ³;V‚ïiëpÛ"yÿpëÜ?<ªxêVðTÆ¢’¯²Uµí½Þ¾ˆRHwæÑï™G½ü99‡‹ÏÅÏO/¤ó×èÜ /Èï4QtG4÷ 9!ËZ8£Ìͳßyc€ÎßÂÑEŽGë¦+Ì9ݱȽ §nöNþÜ“ëŒa¾vjûµ€GD;5ãÑ¡Kßû㜠òün_äŸ5þ+hã&|€o¿ß„‚o¿†ÏI§ç§!Eª.÷èVú¬äÚËYãh¸Ü<Ò‹ÕF"©‘ËrÍáW—î¡r@©o€\¦Oåó»£9(œ›ï“¡2éÎOëh¥¼ËnSšLH_˜i\LY:{«äå”NÂæ¼¯¦Ì|„ƒÊû5—Ú¯Dò Éš¡ha¼S3¼‹d|ëßsQ¡[¾Nú’{õìÏp`â¤IIAISJ¾Td4e“¹ï!¯&æ{Ä«Å=¼È#éÿ¨‡4“¨bflçˆRö¦•²wDëƒåïrVÂÙwp]äŸýïA01x ,* S,j –º}è„Z¿ÎÞƒšËû‡2WX÷Í-rC1§©DÞ?Ôv…uÿÐÉEî„Ç“š åýCíà˜¯ÝýC§Cþ÷r #%EæJ<Î=vsn‡ìPNŠ÷ÚJPÙ½æýCîìÞnUÅ\ÍFînˆwÇeÚñþ ;ÞqíPÿÎQ„¥{œ¥w *˜w¦Ã±üð('C[—:—R ây/!ªÈ=Wòþ¡ÓP]!ïýCU!ÆÇi¬ºÚË#캈jš÷ÑoyJeˆ+ÐÇò,ÁPùû‡B!7‘Òï’÷5„ÖýCôŒ34%îšjž,çPpRuüïþÔþ•KÀñ2 …¤ý–2·©S~åN>‡¨#\U<ö¬-ÍUë[‡Ì¤–¼‘·ä{ü$_½ \™Ù®;é© –(…ëBNË]ú”‰…³„Réÿm ̶)Ä(n9þ{~DŠ"j§/‹ñ»†ÁHKó^Â@iirãP+^%ŒWDu|ÐzyÓK}TÇáÕ¿L燘÷ ý( ™Xé#ë=‚kþ· Ý‘¿p2Ñ}×#Q¯–æ\ÑŸÆM®ÕP↡Â|n:7ø^ÍýB-!îÖ¹_( Š*}¿W Z$p¿Ðòs‰ÖDÏrE†­¼åýBüÍùß/¼¼–· 9¹Ö¯ên¡°˜!4ö® ¥?¨s”ÀµjÆõB7ÓLÚ\¼¼<:v„$k—üó×s½Cçp¹+ G].Ô®WH;^vh6ÝBbp‹ër¡v¾äèU;HëÌAÔͯër¡ù£ƒ.LöŸš1=¥š‘t€\¾ðzu»ã̼]hõäíB­a­J®}· aáÉÛ…ZBŽz!åÃkÅqÎ÷v!Oϸ[ê[n†Óßq¯Ð¢¼Ì$ÕmK[%˜Â̸7é%šg¸. ¡ä×%BKTr÷ªž§¹[ƒl\ &2±ß¸8HuÀTbt¼OYûM,Q‰žûñô îb¥ß AÏX7Ý>|‡“`ÍÏ™~M(¸ hQÙ ‚:¥@¬ìˆ+Êß îWêQ\‰2|&ÛktAÒLÎ~=P·æ6Ý`#=zñôHnÓI+Nèß2]õ¤6ÔN.’÷}Üÿ~ Ǥ›Sz}èYŸûNèz'T½þ÷uÍâ"¹¿ú½Ïû«¹¬UF÷m‹Y$™ÁÜ4í²¹çq?Ð9)[³•ºèáëe\ëÛú@)«¥ðo²ëV1Ûº·©=4¯åÝ@Pæ}3P­¼è9çn æç7"õò7ý)èc•´€RÎÏ.¸öbBÎå~ swáT)íº˜R´›Æ´ƒÚƒ¦ï°˜ÿ¶ŠÕ`Hk$Cú‹€áßV|©|i5¨mm(às?E¿RdÏmE¿–ß²“µZ~¯ ¹òV/SÆ\­²ßß@Èß÷÷ˆÌÉ¢xѬÃ0Õ¢áߤ;jÎv– ÎwaBiýÛlM«×jyå4¢è >Eû’ ë0g³Œç}1…# ”qüšQš}¬ÂÌXobn˜Û¨íãq`R#¯s>6¼ãí8;¤Ã¤Ý5Îä^ŒÀé° â&€XP“»IÁWpÄVç`™j4½™¿ÙU­|’›5iêóL|ïÞ© œïÝ;ŽyTâæe4^L‘5­ñX$îm½ñªóTqò¼M Çl£ê²ì^Áko•þÇ /T Ú¼"¯0Õ)q($æÛgÿõÄÏ6êå¼v}vö‘— ù[ÐüµþÚjœoö`3KÇŸ$â"²ã×è vùˆS€u^|ü-yµ®o•kžïÿ©>-ïÿY§?W\ƒPœíUÄä—)¬:-ùF9Èw¼CÔ¥SóAOÓ⦠]-GêÔIbÇ›<ŸIþu¼zöÍõîX€Úù1r;»GC¦êá9èw‹Ç¸E£‰+äÓ1 » S Œ½¹x±çØÁ· ÿ¢òNoUjÅV …yªï;7pXBàäݪ\Bwg ëxöMb[P¯vöœbO<ª«Žª&¿dâì7Û<Ó±­ÜtlWüÑ™‘íg› ä/S²«iNy}å¬ìpú'_9µF¶ÈM½2íÎ9Åœ9ÚMtÙQ3—ûŽÀ~~;ÀSocL|ïøÔ@€}“4°áÖARȾ|RnF¼á-烗ÒîŽmµ¾v¨õõ~ŠÂ<ç>Ÿ>¯Ð@5·‡¤3ýŠ÷ jQ×Û¦ê­ÅsDÇ¿«51·Ñ‡Ÿ’»'ŠM¿Té9NÑ•uů¿ðÊ—ÿȼ{bÌ g¾Çô|4†qˆƒsà Çn]±ŠéÅÓB-?è …ï¿ …âÌh¡³%`þ±3ä!!”W4í”ÈàîÇ¡®M(ŸÍ8´¦ E.¡¥Ä09Èõé˜tRæhóŸSÔ‡66sP@‚`‡èMŦ¢âøÆ¼„C÷ËkL/®1µ¸*yô¹‰òýžÅµß…lå´2Ã/£áa1Ó3}qÚG O:œ0_Ì·&]ËUJdÕJGþ4ÎlrD'6¿Ê¹Ęù.¨îû/|li¦O4Áœj2$ý»Lù#Öéðû5Šö+UŸ±PdD­Œ£†hÄ p}ËóOå-›#?ÌSOz§°ú¥ˆ„KPßo5 "9ÝèˆÖßU:ØQv0 %¡è÷~¨Gmµ¦CzÌŒV¼DŽó¨Æ·lú˜^ÐǘŠîÝ*÷/Lk:’@Ñ(:‚Á|áCòü[¿» ŠÉWt©ðž{ NxèìD9&>碤9EIsúy›c·æçæúÂß$ÿ¾£ä³P=±ÅË—ˆŒó%"8ßÌssÈn_ìÅà³ê\´N|×­¿ ¾H›‰èîÐ¥ÓCÍìÜᣊ*’©3£!Vú˜Rç^f ^Ë'ô,œPõö{%߯^Ô‹!é_ù}­¿¹éÚ9‡ök<ÛÕN7"æÕ´›yFü®æ¡­¡Åy5BK_U…żMVÌ-e‹‘÷¯ñÁ©jFT?}p•ÚFÛHÈSjCôE?^§o@¡“,èƒ+ÔÉ´!úà0@ ­Êù¶¶øûu:j9šŽÏ4žäÿõ–JÁí§·'!LÍ^>‚ãlÉá,‰u p!§m9µ}‰3òéøtÚÕö‡Ì¶×©¶O»Û>½Ð…JQ! àþêB¤éôtÊÕö‹o6Úä¶Ã |"1'CZ*ÞJi Óêåcb™æµLiòB´…p{é+óˆ˜8ÈI±ªÅ¦ó³qõÓ`R¡ÅÒ€£Ç*$sÎå2ÅXõ´žjq_¥syÎ8Æ9 —áÌÀÜ!vÙ®§!7ñY»XñŽZ€â®9Ú½ŽÍþ3ò|î" WFU-V Žþ¢óUÂg¼ À ‹ýµØsÔ »c3šø7q¸& %5ñ5nŽÎâ< ßãFÇÃΤ·±É*Ïý8†-±JŠžä6'ÎNíšÉmFœß½ÚÓŒøÈÖa¼)\ìŒóÙ.–D,Sj‹ÏÜ$ŽafÖ¼ØäÐô‹9t³žÜTĹ Ó[ ´­Wf:Д6/–ÃìvŸ¢h^ެ–Zr™‚!‹•ÐbAJQƒ³“pt/H7ÄúJÅœ+½j8vZ•èo ëI§B"!5ëHÒê¹YÒê'i9ü€dÍ©üxë.ãnÝe˜Fnè.hN9'ør™>Ñ߯^,Õî[·Ëå{‹ª÷¯z.Ï·kÒU›Kÿé›_6ü§•:¡uþb6Ÿó7ªg÷/¹™'ˆS«>ñˆ\aê`5êf@;3ô¿ñ¯ÐÀ‘k²‹ˆ>W=¢. 8üyÎ7hÕ'ª/_¨ó Zô þ-êÔø?ÁÖV}nþQ5€!\ÆÉà4ªÛº‡5;è¹ ”àœ{f¯&7Cõìû‚ìDXÊiGW²ÐêÂE­¡+Yæm¿š ¦áJæótî¨ÙˆšÍ¨Ù„šœK-CMN²@MÚˆ/j†Q“6¶Ó8Qsm¶¢&¹kEÍjÒž Q3šch3ƒšì1…„ó®ÙŽš P¬„ój®Ù‰š§ÛÕ…š”qO´ƒšƒQjCィ¹º…kö¡&!‹ä`@‰´ÿ·µÂ¸ß©£Ñ‹ëŠãÝÑ•¼ ¢häÎ6·pgt5#¥Ç·pg¤P‘g5éWg7´Êr×Åv?7‰~*øšƒ%ü5q6J\ÂýôcPsK¸ªBGpqËœ#µ²æÒåT«ñrsèM—s{·wfbÅÞ›XÊ y7$^ϼíôôä÷÷lØSÕyï/¿73óâ†ýƒ¢åûNÐ%¹¾pCn ÜHNì\D›3Õë©ÅG?ýf:÷ìt€ÅÅ$}öŒèæñÜ\ûLÇgNOwm8ýý=í·Þûì÷fÄ@Ä@ïÛO­—€èyú_+úȉçÄÀ•ÂFÞ¶]-ä¡{°‰N’¯ì¡JœC³&åc(v¢G1¢µŠ4ðŒ$Dñ`5VO¦üE;Š(ºP?›j0íâãÃ-Ρ8Ó í#(Ž¢8†¢ˆâŠ9'QœB±}9·¾C»Eë[„17FFÃ;—c@(&PìG1‰â Š)‡QL£8‚â(Šc(Š(N ˜CqÅ)§QDÚÀ›ÛÀ”Û¤¶6` EŠN](ºQô èEчB.¨cWq›Å«¸ÍW'QœBqE˲ E-ŠŠ,üÆ«¿Ut+®hX.æaËQ´¢ˆ H È h“,E‡”.(N@ž[Ì#8¹˜;:µÀ¢\`QÔ¢¡h@ш¢é"'Ú|‘Cö-9”¾È¡´åø¬EEEEŠv(:Q¬¦†$¦Z¦6SÃÜ&›QŒ¢Ø‚bx·±‰Š±pa¾yj¢Ø‚b+Šm(¶£QmQ ƒ¨68 (6£E±ÅVÛPlG±CÒÝEÜf÷EÜfÏEÜf/†Ü‡bŠÕ(Ö èG±ÅŠu(¶U¼_x 2i4¼(C±Å8Š ûQì–ÆV0H;¥q `Å~“(¢˜BqÅ4Š#(Æ€º@Ý8P7ìG1‰â Š)‡QL£8""Š! nãE<Ìa nPP@±Å(Š-=(fùó)Q<$j=!–u¸ôt]¢8ŠâŠ"Š(æPœDq Åië°œPÔ¢¡hÁ C-<ŒQìf&?nmB!µaËQ*¦@E‡ŠiŒóŠ£(Ž¡(¢8bÅI§PŒ¿!ÈçFŠB±¦ýôHHR*D§(¦PF1⊣(Ž¡(¢8bÅI§1‚@= ªžGP[|¡h@ш¢ E3ŠaËQ´³`–N²mf€±6í(:Pt¢èBÑ¢E/Š>«P¬–ß]Çu]ÇÀw_Çõ`z{Qô¡X…b5Š5(úQ¬E1p»ZV¼ÐQzËé2J[ù‰ÚD‰fßEæÙÌhxᬕáŸõˆuôásÁA¡'Ñ^J¾Äü¾~"ª×Ûxô=`=pˆšé ‡§ßBÜH銧!þSTFE}ÅÓ0oÂã&°¦ß#K·õŒ®I@âÏn×UK|©g3ÝŽ%þ…Å¿åâ_«øçœ¡O8³“Òë·íºßwˆ§²Àé w/pœ‹Q°|ö[ÎÛ/:žÊç±ßª¯yÔ8誦þ‹¸ß]¡â¯%*ö;¨Ø/Q1²tûèf²EoY¤ˆþ3>M|„>>*%>Äñ¶wçE0¨Vð|ÓPAÙÙ±Ç(ÿ¾ Ô3Ÿ ~Ôž‹/š{.^cüœrð3y^øáëV„¶î‡Ÿ?^ü<üœƒŸèláðsðÿü\ù›?Ï ? õùâ§ÏÄOŸ?_þ•ƒŸËf~¦ ü¸6|ÿ6|Ÿø-׆ïÅõ_¤Ý2¿Šö}; ðç¯%or8u^ôaHËM†¤ØïEàožt¸b6>É,ûðüÝíàïð…f`o˜»ê—&ûå#È^ÿ‚¿¿pð7}¡œ¦¿ò îûϘ î_¾Îø;BšB;tyüÿqÝ#ƒ¦®)“ FÅFµËq7¡bÓ® …ÇŸ§ñˆñq—¢B÷Èb—sx÷" ëì0Ú ¬Õd`%Ø÷çLö/ûyü¬)UÔïUÿøÓäY«6ðBÖ“¡mÓÐdrÊ9¾Ó ŠÆçÚoøÿù'uÐHa©æ/R]›N/{JíÃsêG‰DqVKÏŒA™rf0æEœÃx¼ õ1Ê<3WÎþ&ŽQÎ2d{þwEå(7rçiñ¼[Ô¸‹k™>´Ø/?M&›ÜÅÓÔn{ðõ p·ÞÆl²+Ü»ë"Lâªbúl$L*íg«÷1ÎöKlWØ,OQà€[;Ù2ÕÎù†Ãá„å‹7¼(4ab÷½M˜NáÍÍ,Üã`9€ÛÔ«ª¢ވEMGUo™£¢>ªÚCý.W³&ÜÁ8>b79»4Ëž&Ã}MÆù c´'ܶó|ÏŒsc´KhÂÏý,¨1wÝìc{Q;O=84û«€Îþu¨Ãsš†~ëשîM0¹á?L 0?Om¯†µ½M¿uøäyáçÕ«{;Ž›Üòþ‡?§þ/Á¡Ÿ:/üøhs?åµ¹M?5µ¹ìfüœ>7m¤Úˆ©†üzÖŸ¡ Ÿ>/üùhsZ)¯ÍuÏšÚܵ_C²æŠÿø3´aù‚ò/­ —ç_ E“ýø!Æ_ÕüÚpÕyáχ¿iú+Ïߦ~bò·xñW»â×® S—Іyüç¨ ûð/­ [j–{ü?6ù×?ìâñŸ(¡ /äÏ-¡ ÿ´á¦6<m˜rú8)dN©Â'½ªphżUá…¿vU˜€Óª0ÏÑ9ªÂšGú¨Âƒæ zUáÖc¬ Ÿ2Táëf_ü·€qÎI­Ÿ¬–ùEfîÏœsëÅœaL“¼BÍêuÙ—ï]˜g ¿(·¨Ôía—ò™7uzóö¨Lì™kä” #¼W@x¯Àá=µ":ô'?ÿíÜ3Î'õãÀbn,|š‚ĆüjO!®tÅ4ÂK-zdÏ+WçžyþPîñkÆP{ŒãG‚0dL*°œÛæX–_탈ƒM¡8ŒpG·ü ¡xÝtcÚ®*5ÊZ`$„¢qޝúABW·ŒâÖ¢íÈÉLCGPpÜů‰c¨]DµøÅ‘¼Çï~®R|BÑ« …Ðkg)Üva ºQô`&zKÍEÖ¶8Z?n@ÛãW—¨=t( Sж"¼ÙˆFK¡x p»ô4zjÂG- ‡} û8ì³kœ¡zñ†c?~ƒ¦hÐ®Þ þdu wı'A¿²£†RdŽÔÊÕ ø£|Ä‘>¿Âg9zªEOa|´¹òF¼-@Þz o9>ZŽq+ªDP$ð0ƒ¢ ÛK5O‰»¸UÊ6#sZÑÇÖRëkÅØId"ø‘³Êdv÷s‘Ü3ÔçÏ'÷̲hVA_[Ql+Ekßs÷£‘Üãâíóß^ö %«€è†@t ôÄÑuoÍ5 ~kK­Ë¿o×àº@pôÒˆ¸f¢œÍ(8vé;ϨMÑLÑÒi´Ô†–V!ȸ!Ç5(8è×ÒZԦТh‰Ã•cáv´D99*Ý—s HÌ) 1g‰9ÃHÌ)pbÎî&š²sv5àÓcxÍ):ߨsæêÜ IO\!"d %íì TrÝ9Ô=‰L¡SþŸ¼ð±GeuÊéG®Ñx¸`s(~¡øBñ„âÇŠE(¾€P¼V(8¿{†R ÖQ!H—${ìcßݹE±{º9$±ªC…"Öè ”;u÷D¥ûÀ½“`.”IEMµpS]äd+°Xu¥>&ƒ¼§]W4ÿ+ \qP—ØÎ ·‹r"Ë.çT–ëOÈ´„•íI¨l>«KªlU8c¯¶Fï/ä'¤´Õò!9>þK>–Ô¼Lêqvöó©7£¬ЕV¹Ž˜fqª¤ÍQ²¥•žy™„ä¾T×ù ¥&wK,$C•$\kœ¤õ†3µœ~qjyƒ>›,Ä×±•óˆÚ»T$3¾ã*º8™D®è‚d-n^\‰LÚúCófœFë‹@²6ijßD²u¦9È—o×ÈÌëÛŒ-H•>ßA¡ýrRxÑG_1öWéáHýÓOü§ÆÙmÁÓç<íºŸ¥‘ot”›.šj˜Jškœó šÔÍ®Žhw‘[ÇŸžÆ¥VqÞ%Í¿¼ÎLÝ0é™{}ÍpÕ1‚j§gãižžÿaÌ¿>dø!vÒ1 è¦Iu£Žf h *åÔ$ƒ´(2h™4®xUdPqŽdÐR’ ø¨MͨW7û:[@žßØä™…‚ps’Îr €Ñd-ç9%› ìá Ê™ÝZƒý“z«`«kõ+gÀZ$‘  Xwµ‘—Âú@¡Ÿ´ƒ¥W£I˜Â\±]àÔu1½Û8Ìï꿺´™~ÂQþuå•ôk4ã_ÕWѯ¡pœ®V_ÜBM ²¿ÚˆN‹Üä•-ø,Ï–á³$ÿZüzt—Bw× »4º ã» ¾»ßeqF˜Ç¿çGb«ØyßiÁ¶ÕÀãœê lŒœžpˆÂ»+aÏ7o*ÞÔØbâ¾ÆÜÐÓÆ'}Ü·i܇ƪc¢Ò›§ò˜ñ»Ÿ ŸÊ 7“^K›5èSÞäóÏJê3]-pÖÿ n`Â/ ÄÔVMs­Š6ŸyÙ¡M¦4sÿ¸I:íÿrè§ÝE?®q…;œq3«ép­Í<¾É¸§zöÜg¶(«¾Ë…¹.…¹.Ý«¼Ò„‡É|åÛj‘3Úž óžpB›xD½Ö?0:FØØóCFð!Á‡r£!Îã}¤]ÀPÅñûzøhÞ?Œë¹42;PuáìÅgp?µØÛuÝv…ø¯xOõ¦x×)SxXî9Ôû‡™R‡†·¾;ªx©ß=&Ÿ Á| ¸wä¦#¹ª°‡¨·½Õ!jÚŠúÃ+9Š«u—Žàï§‚“#Gr¡°§ñõ‹Æ±F±ŠÏ58næ’3w;œ™ÙR·fKLO/'ë¬Æ<‚~ñvÿý ×Û‹“8xšõIj†ŸÍ»ó ‡y† c„%Á˜yó—øŽk~7œÎª¨æ­²cÞõ¿Amï éùÕGRÅîéy£¾ŸH}1®\`&:c#ؼθÿH3ãž~ãȆÅK8ÛH×ÂÚ@A|Wa‹–óH53Üáp/Pw¢‚ÑMÚ¬àyW€çõ‚ç5ƒçÝžw%xÞà•WWÞI wi xxVìÉ î­ÀM23ûÀT—¡ƒ»ÐÁëÑÁo¢ƒkÐÁo¡ƒ0¾[…ï®Åw® 8˜«oú/0u˜âaƒdx/ w-®È‘>§¾p#üÎt»{}:èÖ‡„EåÒ V+Ý`µ[Õî‡]l¤aN/žàæqçdnÈ|õýhÛ9ˆ)7}÷D(¸gf44(ä=­ëÕr]Ïç³èu½\¯ÿåjýßrJ¬¹bÂ5æô y’Â(ÄòЪÇÍùX€¼.¬»è,ẪøåmâqO –üÇ&&*ÙÙÜ WýgÚé@!Ú¨ºíî#_îÍ×ïn^úw škUã£C‹uéÀ^w‘žöüðÐ8l­þš€‹sä&;—M|já,Õ’ñý~‰1ækAZÆ#â..îÂHJàX6Z̓ڀ’ZP7yW‚÷ÐBR`óÈè©tÄRÈKë<‚m[éäsƒdwû¢–g†ªˆTfF‡3×9‚’Dаƒ5:¿A±ÃAÅõ å!dÜϾ’¯k±—°WYºî´VŒWŽAé•éÝîóµxT媜´«Ò;jš*ÐàfF¹às©jd6Çí¶òw…¶[%Bù|m¯˜çë„j\üµ×h»\#AH€÷jàžÇøcôIï¬Ù¤îó(ðË(ôRUX‘ë ŒD×$|Ø !’ï< {'¨ý†ÿ½÷«ºîEçÌŒ¬‘40"xˆE™4V¤SÔÄ&ê‹BD"ˆ æ^¥õÍS_ÜVmMñ{u9urU,¢qã“3%™¦ÊÍ´Q¿ç×§æªX¹RlÙÈÆ€ FÆ‘¸t„” §F¶ï^ë·ö>çŒÆà´Éí÷½W¾ÏlÍ9ûì?k¯½öú¿ÏPÔåo]`~&a÷ñ„–Ë¡~/H¶侌2™°yø¾ÅY·“`Gél›–?~q=EkuO.š‚a:òXüŽ_I½+¢ù8ÊvÀ½Ž Wd‚«WÜç $ÏR¯~jŸ³~ªêR¡ø‡>Éß“•A=#cBá÷dYPß“Á÷=›âÂEŠÌNðç¬Ó凟ÏÚoX³N|…¢†×¾5[áîÉ¡š${Ca÷d|Pß“Á×=[âÒ I*¡[€ÌeÑXÁ`£Ÿ£ºŸ·Ô`Þr`ºpâï¦1%þ"Aº·¸µLm]‘©µhm­±j?ün=´L†ˆºB¦NhÔ ë/¸1X ®Ð æBñuå Έ (ùǺk²qùĺûh<îÄ4'êÆe¢?y~Áägñ«DHÑC×¥LϬ°'N¿¥(|p¶‘¤¢F~ɇ¢ïå "µZœ‹è3¹Kµ:óa‹§×…†;‹6¼ ×_¸á ¶< Ëe⽊¹bæÔÌï—æÏöÞÏŸM± ®©þmœØ@› êŸÇ Z…O›ó{Ü’Ì 4[jdæ²ï€~¨ÂIêåïEàø7Æ×7É '-몋\Ø Dùm÷À>°™½à2ú<,Iþf9Uú̱݇S5³, Ùè¯ëF·í•¬ <ÖËœd:!AËŠé^#3ߢ£ìÚ/gój;—ñØ ÿ’Ä#θg8:nH‰]U¦CûÐÝû‰#£óÁIV‘LèD·§Î_©MøL½pfhƒË äpQ €ZxÐ;®!Œ+«Ù!=¨¬T¿™àѱlö7…?£sÏ3½ÝÅŸa¨…Uãc“ÿ!Êé…á%©Ñ™UÖÒiHûkÆöcÑg0p<‰3Jfh+xlì-f-¼FEÂp×béº}‡õ±ê÷ÆØ8Šóãwz-Ú£©LjzÙ³7ZJ%“áºÂ3äÕk¯æˆŠÜ%ÓdîÑÜ:%ÕT­½½ƒÈ¤¹?T4ê§,—åþ|qváÏ7ñʘò™l@î'ÿ¥Å_܇P‹¦‹NÇa-iPÿ<¡×jŽ£û,ð+=¬Æ]vqç’u.ý3ûwYÿ‘×Á?š« àò¡OÜób‚øB‚L²çœóýóçõyˆNÕ¼٥­¥.ÅY_@qÖŠÓê~¿f¬#8ûG¿m‘ïØ©b\;U´–BÚÖ3l¡ßPêÏ·½'Iwéu†TCmEºÙ`ºÙ »yT#mº™ íq=™vw2dʤVØ”iè.Ó8qs¢ñ²›;#‰Ší&¢sóSÉ0S’â Ñ~\Ñ0{^ñøËÙ8žÛÉUÄD…|©í¥¢‰ýòŽVBº¹š…kÖö˜üs»xÕÂ¥F<žÊ$sH³ÎPšu¥ÂŸº÷§øéRq6jciñófSÁêoâcA3ºSIFÅÐ÷¾€ÙrldÂ_½™ƒ³W‰—Š¢ üúåÓy“9d7He³¶Ð¿ÀpùRVýç&§DÛOºd"6 /SïlˆE^ÌðÍsSïnà<Ö­H/½¹”¬5UÁÙK‡«ÐôæR1 ‡8]d ša°v›y°^gØÍ`z<÷.(9†¯Qœw ?¤x&72æàBÎyðö0v}Me/ÅYñTSÓÈ­·MGj¨<¼°çPPÊ*ʳ½ûô3öäõ2HIa•âVäS‹_5Œ[45ŸOí+ÏY8ºx"¤á,Œr3ذdµ÷åúîŸs_À›¦»›¶`é*õ*¼|œ¾·"”âOÇÈœñÑÜ¦å “äT¼&C ;±º þt1þlûº9Ÿ œÀI‚1›T¶uøÂ[¿“:/A€SÂøú=Uý ^¾ø¼½h) ¤}@èðSX¤L©Óu¯}Láê9Q½`Tñ*¡ÂzB½<™#yýy¶ {|ªÂ>>GÆ€/#<î«ïoë5D_æ”6'-|îõçMšeF9ZR΢&ªQþ»P5ÚNœ™æÂˆ½àoÁ¶=jŸM^Gw°ˆ2A ÕwYÌßjb*ýéÐù"‹Îpì ¿ƒ|ÁÝÓJdõJ‡ún®P8¯G?¨WbúŸ…K—¬í?I>kNÙ°9Õ†K‘Iþwt&ùA³`2Ë!³`C²`WÈhpŒ”ºÔ\dQþÔ¸l¦þñÑÆ-Fh€qõݧI0P'J P;É ºïZzóŽL9ˆO&5jÔU&K^Ò¨‡às?8Œ“+uù„ éïõ (£tc‡MGÑÚ´î郞2­û;ŒmKú;ŽþòèoÎÛßGÐ_^7vÜô7/ôU÷7¯«œÒýG9sZ¸q·=Y;¡¹™‰-áÙOóý&Ìj€¬ÞFÉ>P»[Žù5»·gëp6²n¦c¬ööüÏúÿOuÀG åw?ݦڊi¼Y¦ˆh åv’Ü€ÜuaŠüâÊ"/WF¿˜+ã? Wö¢0dœ±öv{èäRñ¾ÝH”‚¿ / €X7nêí,VoN×S┵GÕZR »’Ä¢Ð]$ …]éyÖÈ ê0 ùDfß(ø•Ãìkv2‰h„ç:Rjø ¾4ïGX sÊ¥MÞ»{ù —“>HµÂ<×—ƒŸ/™ùM£w¯¢1uPM_æ…üÌG–™·?o_ÇÁòÌß™ûU¯”)¹ÎU3Ï—¸¥•‘€´šÿAÔªÔWÔÓçUžGµ¾Í—ÓXé xЖeÿÚáWľAÃïõŽ¿dæ®GÛŒM·ÝnM„ŸgK¤×Í¥"Õ?Œ»¶kô çq=Ótb%0‘•z" =zÂuØI*‚CªÄ=2½³ò82+ñ߆5S" W5f©ø5¤_¸ 1¨Ç|VEÀÁí±¼~“ ÀPOAU‚‘ùŠçYw¾:âewA?ê1‘&C?Èß)0׳0C“C㵟`.·±ÅËÊPˆ™ñÜt/㤡è›î áhÄ˦ˆÞÂM¬é°ýŠ>î}3öŒ_·_òL“:4wÞ¿ýœÈh´‚uY<¡Â æíùú^PšM‚J1Zÿ§¾¨ž§ì½¨þ‘ÖëH¹Ô½£ Ó9z¯%úa½!×¢GO5ì¥x‚åÏëóš¯ó­y«ï›õá¶[=ë}ö²¹B{™w½½ Sáz3˶`‹’1Ò ¦â÷üj5`“­7`[/`ûÛEˆÅ]eÐUØñÍFd.¯Î¬ô<¦»PÌšîÏš½È!Ó=–t€î[êÉg¬€ç~ã•ÁW〉˜ù¦kŸÒ$‡t*Š-‰ƒeu|Ê,9U›Þ«#bÜqÆØ«|Gñ¬všhÑÖèbô—¬ÑýΣ¼\®÷§g¿ PŒUÍžM8{НçŸÅñßPå9a ·2‚VØ/Ð~^ÓŽA´âu dv ñ&®Áçƒøœ*¾n¿ ž†!“ï`¹rÔ|Á~ÝzÁæ°êÃjRt²k©«‹È‰º ÷€y8^.hÇË·¬3dmc4¸\µÑt3»þ¶qÈÅ$ÏÇoÚ‡¬7ÕwÍÄUœ¬KûdíRp`‰ ¢=” ¢¾/ä;:ƒ³—^à‘<þ¥éŒ¼qJô33‘Ÿ ~h®8d˜b‚’×~:mÄÅéRÑO}æ”Ç~Êœ9‚GÁ'´ù¾×"C‹ˆŒßß{Ãß,I°vÐPÜï=‚öÿ Î^KÜ5x$ÃGLn§’Ùw©>GKå¡£'dëÿ`ÙlÍ?ÿþ¨XLa[ÄSØf6½¸ðÃó¿ê’¯F\ÏÿtrºÑ¨ätŠâ(:àø_x£ªª)Âo9"ü6àÌZDÂRÅĺv9‚Jè]ì¡’8‚J~‡]r-‚J~—]ñn•üž »‡{¢™{ôõf¤W—h&ÇÚDgPk"š?ÿ×Üf›Úøø¹·|æUm_Ñúà„öÌײ‘´GŠ9'•Ï1Ôù Û½ŒãFзM×?d£f¹6™ËÙsýÉ»G)ü§ç’ ÿ|e›)µ8‡A\|=D,]Ñô’úV– ¢=É4SS­Av”ã@j^ñÈ¢÷ÜðýJ&:"ÅCõJÕ:"†ÛM'¶bctFt„fÑ;Mã¨ÿ¶XØÔáv².q Ó'aHy‹9ø&;_ßX'¶8̃'+yœhÂ茠/Yɇ%e›ç°9¶­äŽ(É„¾Ï R²N8’WÂáu&:…–ù†˜¥a”]‚Íÿ`Ò~anJÂ4­™dÂû[]ç é23à>äþ¯ØßG}˜A(¦qÒã ¥p>â:B€ÅÌTPû;¨dâû“` wú‘Æ#ZÞ†¢¶Ü{‹¯Þkÿþ«W•ÈǤ*Ðõ‡-Ã17^ä5Ø= ã/ÅܸÈëü¼ñ6ÑĘõãqLbvœ>ŽFòÏÎxÂÅìŽ/™Ý/ ËÃ<¶ãÈÂÙS¼02Ž—”PEý¦L*>™1-¢NŸrÁ1QVISŠŒ‰’¨ `*¿â Cq‡¡¬;ôùùûgu~ŸÚíÃÐwFDM±x†Ý3·6Îj~›òØÞˆK`//㱤¼6 Û§ lZØ>C`{õæi[³®ñBÄÓ³£}°uwsƳ›YËQ? Ù=ãÝÇýØÇ;µpׯDZӠŠwÿô<ÓôL? ¦yÀ;ý!L?«§?¤§Ÿ5ÓüNØ3ý6Ïôçà`1ìþ¦?ª§?¢Ç1j¦ß†é‚ï£uZ³;öç’[°•™ÜØŸæ¼sYñˆËñˆßTL¿ Ôt¼¹2¼¹@ Eõ]‡¡÷ ¢¿Š‰"õ¢¢§ ß"i–J5šÐ>K¼–?a-¢ù\¯™§.ƒ‰¾çy‰¡“sdr ë¿J);°ðUžëO·±ÝÂú²Åf±°‰êG—a1é7X±A,ì F\ïÉûN ûÏàήÎóœª1 {Ö³°¯︦mFƒÿ«×4ìNñß¾¦ÿx¿ilV§]ÅÉœ¹÷w¡”1ȸæ@޽Yà{ÉúGVšÊ£ZÿØò¦Ñ?ŽøŽ,î0+g]’ÿb³\çßµ<ä;zùXÞiاÉ?2{Ú“ÿµßðO­ÚœÛgÔ§GíiæŸÒf0½zö›Í`6GD?ÕpB·ïsšôØ—ržÃœ7¸æ¿ñ;<¦œ÷0?ŠÃ|ZwÈ¿ ù¦}l–9c8œW+ëÆ‰V6\‘Û™˜$ç+ÜÐ0<ÿ©2°8×pù…S×WÌü× ù©lиÇ=J±Òà£>²k÷òQy40ÑÁEaæ 1¼…«©kõƒÑ˰˜Û5jn‡yn~Û”͹†kФ÷6w\|þ³<>²:‹£2$qñš¸ê¨STEL˜7¢ˆ  #ÓšXÔ³ZгZ4³:õsÎ*w‘³*—+|Ⱦifö‡ÿÏì†E‰›Š1r2¿CfÀÜ]Þ²lIVªp™×kœ~A•o¾Ì]Lçï ['›¢IhÍýtî¬ÏçxyØûÞ­’üíLe^m‘¾Ù÷³Ë—·‹Sä››Øú&öºB£}©›¿}í &oùŸ¦9« ‘2´ÇÓ #Ú³7>¡r¶ gæ5‡:Êf–ÿ¶øÏ$ù"BÕuvnûÐõ•Û¼]ô$I»}ieYÙŸö](æ„®†÷&äÑÔ¤ºÌøgð«5ð« ð¡äLÃ.s1ý2õïdYÏ5”ç&r¸Ç^FJ¯Ä#3¿G)ž¾hR©úSïy³ÆËü¢C¼,àgõ5X“Dz&Ìlk Ÿr°ódGd¶Îµ•ibNq"²Gõ9TS‹–ìJtSï‡/KNôÌ;=¥vÔnJ¤¹Ò×!¹&ã;É çv@W+uW²‡²ïUî´Hä£VÈŒ³Ê€‚ÏéÝÚæ#7•]“#ÓOóÒiûìZïäˆÿY8è\Ds+/²¹\B77•IêT5«ÊDÿ[çñtFŒ½ë¶î‹Oð¸ÊÌ~…]e8Ld'M!ìñ©ý¹)Â\–ÿp%¤ä èHY¥ZS•\EÊ:À?°qŒ;:óÇä>í÷?6ùsL6 ÒBKóé8q]Îõ¯û5 ôá—ùH þNÇÜ¥3ô7#×±OÙ/Üù ûìØÙ§Ÿ»îu% "w297Ù/ßyÏùu®°Ê0¿S¯Ôß#êïÇtiõH‚Ü«zF˜„)¢aVz‘‚™ Å_7^lP&ÝÆ %ÃÕêASþÿJ2#Ù ?³ÿ·ŠÓºÕî!ƒ8©²€Gƒ… gpÒ¤ô¡ÑwwŸˆø%%Mfÿë=Ù¤÷d“Ù“žüQ¤Ð¡ôTÖɾAQGƦu´”dÏ 7.Í’–ªJ±ÇCF£Ø ^[—xœ$uáZ¢Öä”n(¼ƒµÂ¤Æ2ae_:W$‰êjSoµ®·cI\F±$š°¹Œ6þÒ°Áµ 4RÌ+È–ÁшÖÀuÅXWƃlÙm-ózI¯ÇþäF’‰¶2èzËû·Žqaì•°u@Z¬šXá«w‹ÛP›Ùèm¼Ñ·ýò¯H£^QM«E+ýÀÝçýq|á<¦ ÐtƒASª¥Ñ´hÚ¾¿Ú5~µûðK§käÕ–tiæÔÊý8ÌyésŽ0)“<Œß[’lƒ™û†2ÉF~Œ…ùÁƒBðƒÙoºVHòÖÝ_â±Ín,s÷MÖØfKfÞâm, ¸Ìð&,âf½ˆü›Ýè|Gœ±iw”q³‡aÓn*ñÚ´ékÓÞRæµi±ÌkÓþ,¼E](7-÷¥X2G;àÁΫC©î~‘óÆ šÊÍæW/ÙüèŠÆÔobø®ÌÿÙ¾€–R%¬¦Æ`mM 5ÙµÏx’QnÅ.8Šd”Í%Þd”[˼É(¿TæMFùå2o2ÊÿZf̽LÈ2_+£¾eÃÙZf†Ã#SÃ1nL÷ì¯2Ÿ#‹¡5¦ê-Ö`ÝÁ3WƒW;Ë0aÜæDUþà?òâw2–)ø»ÌhÜÄ:]e®(‘dćp¸¼l— +oÞÀ„T™`2ÿ&Òž2û;‰ev‡lçôðltõµd²§–$Z³oKpö“®?@ÆGjvÍä–’™îâ9¥ YHi ¹é<+v˜½ž&ÏјÝ"XÏ„ˆù'îMØSÖ˜ð¨ÑxXÕ|™W5‘×ljÞ‡’bÈ1H‰>ŠI¥f„s•0$×å]œÍÒöåÈœºt|î*38‰c§ã<–„òúݲTÞxÊ›šbìÕ0¥¦ˆn¤ 9O®ã¼!U°“‰ò6EOmfI¦rШ2À8qæqï\¢˜6(3­ëý'ìÕ£Ûc :(¬ ‰’Ñ8$$ڈ˟ɡÑê2¹K‘°Y˜09ä+±×LZƒ£QœýªrÍU»Ž-NœàïkÜ”K íÏã“•G0sú­ŸÂãzº“-­RO'.á§ Ä&–Éaœä?ó#¯2ŠSåî…òmÁÙKówFQ'ðCPñY"àK÷@„x¡7C±4iUUùýÊÏÅ ]úæ†åêºûãâœf8ö—KõW7ü|/¾~Žá.²°€#)R^œÞôž^z-gXUê&ø7g¦+'j_Uî§öUåÔžû&³{öGí=ÖBeâä…äK”NT»m‘5Zbk‚Dáõ r ˆ}š²÷¼eŸ&¿—ç(éÏëÎHãz"-”ª˜tRÏÙgOT?¬ˆD(Í}“Cछ²ÓQv‰â,=Ô™«¢Læu~©Âd=„«ÊE ;SLŸUiêUêz… …Q&1J\(f*^ÎôhAø§¥áè‰rG§èÀrÄU=ð2*+Ë¡a.ç¡Õ—{Sp¬Bã ,ƒ^þU<8:Ìð¹ý,ÃI[Yéc¢ÅÜͶ0¢»ž¯>ê6KíIz«rNoµé­ÌrÊÐêËõ9V<ЖƱÀÌŽ¢ÏÏ”ú¥šÜ¢µº¼Ø-ZËfþZU'ýÚêò€+,4–óì›Ê]ÿZ~ÄîÓ¾…)f+j.÷ÛŠšËõaëµ1J+Ì.÷r.ô‹9—ó÷2™³Ój–VáJfïù˜zÌ«#pâ5¹¼Ù—¨. OÕøòºfK]ª#ì¡êyÉðû z} ¯ý¯É'ULž£Qk·Zæ¦J͵ðbÞ[>ó«çÅÿs‰^xüãÚòâ\ kºÖ»&ë°&­åÒÄ:àF«&­>" ³€¹*Ibµhw3Ɖ¸ìl´½RoëÖr1…í$­Yc3âfƒ«Íå"Ÿ\cîo[bÜÅnDv ˜’uÔß_ GUX;ƒIò«4|×'.ª^úO­JÜ;…,ßù[‡ ŒÝ#‰õÔv½Ú(xÛ4~»¦ˆ6?Eu¯…Ò(9{†i¥+T>Óa¹þco_$ëÐMòë‰Úg»ß²¶Df/üòo­ñRΦ ž³)ë9›Î‚òoðžMí NË…¦Òoµòô[Mˆ û©‹+œôÙ’â´“l$ dño:#Q)sàçíª¥•ˆý[ebÿ´*–²ßÓÅ«dÇX(Ì~?¢«4¡JËÒ*|éjøÆOÚõu/ªcà&(íÚÍúA 7“°ŒhïÊÙ@À¸MÜÔÚäÜf®CSuú­FÓ¡iP‡¡AâyEð©Ãͳ À«´›ÄŠ:YÁ5u0â$G9€+¨Ã´tûÆ Ÿm–æÍ¾;v<ÒÑQ.2…“G‹AGLŸÇÙfŽƒ¶rk>|¶0[×\oj®×5_Y,”D?&ðÛzøÝ¦h«~€_—†_§fŠº|£.Æ% ¶iÒ·MzóU&À\‚KL¯äK‚KŒ«¿é ]ý üHoœý Y^©à¬ÓÍÐ.&5?q¾€ÿ»LÍ®rñ_›ñÞ_ÞéC&d44ÌO“f~¾¹ÀXßXÀü0MÙ±Ãsf¤ÊÝ3£îfîg‡÷ÌèÅ™‘ÖgF¯>ÄÓ¦ƒTùÛrW}h!ƒ9}ÉåšúqüôkÚ©‰O?Ï ê¾ÈI‡ùêÜtjó Á—~3ˆ~ðC;ͳüЃ¢ã¦OAËDUéAL¬ñjí$Qõ@y±hÄ’™« g¨óZ bøCzøü›ðfÈ,—' ñÂwM]Ðv…X2ö,ò_îå\DÈÌ;u²VÙ#Ú¢fV&Ô¼/ • õ¿€2Á\¢Qóƒ<.)¦ßùódTC´cË‹k¿±DY/z 9F4z kôñË8X(ÑÒ­ñ*ß-~͘ê`õ‡ u’éøû¸÷„¾—W@dÜ¢Øé¸è½¼'ÌͬÎE$÷'ǽ¼K’@HZpsࢼ·üš¢8|]§AÆx0Ž vÜÒs¿ÚIÊe@Ñ[é2 û‰P†gmçZôÄ Bo|¸ÑKÀ°]ŸÕ·ódq;;u¾Ú‡§ÎíÐÌ<7üxfF‹•CÓ¾ û¤"‘áËcFKè’³„ª>_Ï“Æõ<ŒŒàžöèëy²¸žÇ óà›~¢—$³%¬‘üîA0êã<µ!!gd!k C¯í(g6¹×›?Ì›ÿÈ“ûàBQufJE£ê\æ‚1uNRî¿­œùxÈ宼£Vô¯QèßQXm¼‰u'~Q£Ëðè<¼ÆÔ[Y\ÈÇ]ÑLÕ¡_<þcÏÇÿ•…MŒ§Á+Š«ù5}{ L½âa`XFâªóÝìËÁ#âëx0“㺉Éq%³ÂÎ)¾4Ë›UßÎ6‚nä%µž‘Èâì«H*‡ÕêÅF–Ðy|Þ=Çö+Xo† ^‡œ^Üwæ^ÚŒu åÅC¢H¡c°¤nûãåØaâë}îwþ—°™ÈC‹]Üü„uà†Äq XŒËìÝ„ªúîhBUØ$ç– ê±7ÿ×l$„ÎhTsFSoÉ -·u ðQï­î†—ô$Ý.8^)Œ=ÄÉ*øx-—,Ü\Á…žd ž€j1ÅšâV(:[‘›¯¨q„¼²Ãͯ2 åFN+7xï¨ xBm=·ðF”Û ò’åÖ\$UëÉqÈCâ˜Ú ]¨•ßöÀ;Áò_ÏÏ—=÷vCϹgÛ)cÑhz¬y{O(ƒ±‡Èˆ‘ü0®id¤4¼©,PR·ò¬Þ2¥[çij=âÝû|èepèaïóÁ‚£ðh­Wê³w+øÒ™øz·ÇD–qWJ¤ ì”@¶’x8}`Óêe€³;}N¿ÜvòRi» êµ®¸¶Æ[Qá_N¬¯ñ°›=ÑVÃËÞ^S(ñ˜êÕc¾˜±:ÿÙ §'‘âIøˆMà —/Ùwµù™ÍÀŒµøoÔá{éF-ÁÙHþÇ9wþ#F6Ñú§¯ýÌc62§1ÿ ‘lH oWŸbóß »ŸÕœ¦ë>—fa‚6ö×ãD¼èˤ&À„ªöþ¯ù”Í“›& w.ùÑs«Ô¤f¢/êV©_eÒÌ_º8lf˜G²í¿]àj©\¹?­8ä¥èŒMéŒý/盎bøÓF?œÂ#Îåi`+YCaU‚·{T „'*†9¨Ž{U y¨æ´Š!¯U sfºm¥/…—ýëp£iÕI½ƒ×³žÇ|MQÑb^D '"jO-SìÈ"cÆMdŒúŠwDÃÿ¶f>–íž¶´’eAthå<ŽJl–;4#t€yp}ÁÑeúv*Ï×oh¨PÔÀE–Ñ«×(´Égor.frGUùlkïì’ut°vkƶ”ÌÜ *8gvè\¹ÜÏvû9s?[Þ·`¢Ÿš68:­wè÷á¿rÔ‡EH—À:î“$±Mt!KSÕužÐ÷Zë—ký”ÄZk»hûJËØE7Ñßb}Œø¿Ý³“®šÉ$ºTA&Ïõh£ú»g„Úä¹e¹°;k/6ûQ6wv$ÔàÜ[)a§€¶D³zÓ¢ª­Ëÿ?­l/'Gþ÷ŠšKй4þê/Ï¥ñ߬iI6ññÖG¬m^°¶*°®U`ýÔf°žÒDj VŽŠµîQÁ 8*Ë‹]?¨€b´6\!Û†ðÞ4Mº«Ú‚Mœª-È)Î_ 0Ú¦F%pÅÛ^?©ð˜ú*ô™ÙWÿKÔ0çCe¹ªÂ=ø‘ºª ½³£®ŽGÑ>OqÓEÉLú·joû5h?ái¿F·Ÿ0íÇÑ~T¿iÃÑh=Ñ_Ó·,€Ð»f>&ôñw³²çí(üØ4ÿF Ÿ\òõ<„”ÇëF|7Öí%óI>¶ëqkŸ¾qÍnÐAûˆ—þ%q={/?éÕ§'™áª¦°:Ï Ô{Và.´´Ò»«° ´Š?KáC™þàÀYjÃuž2®ä>ššqQ—×îmD]£M³§´æÁ£ q%0fê $0æ›3Ì7›hWž6i&Ö;&æÙ“-ä Pªâe =Uì)µó™}¾š2(¨Sg¡LN;V‚{f³†™ ¢Æ~n¸âæ#L‹,<- ˆó½ã‰jÕãê î1®ž.^Êp®QO«½—Èÿä=ÀTÉqEv§’\×w½Ï7ý×ûÔÀà-Fm¼j¢6N¸‚håøäjIT3ªQ;bÐ_e¤¾‰Y» äè‰ÉT×ÐT5z`7Áú•d£‹ì — ÐÞ0¾?EÚ«$Æ]ÅXÕŽ=±éRoîj3¶ëVŸJž·«’´ðŽq%ZÉü» =|9*D>yuÑ#Ÿ¬2´·¾Âð? CÂÿÜøó?5>*6ë£cKf&;3«f/½× iV™QUUˆeqó¶,VšñD+¼.½üK~•þMØâ+þ¥3WÐ6þ­elÔcͬCªoÀù¦V K_†ë¦ ¦7Íð/Æ¨Ó Îu—Z!v†>}±FK…ˆ}˜n¿ÏH|â O­D>\Wi{­Pµ4ÿuÝ3rªµ©‘S¼¦Æ=ÅùïÂS|†×ZQì_“vèe› á½iš¨lMÁ)©)8Å×›•“¶Û µyNqoÐOH,/œÑoìÞèÌm!W¾“Ø0GT¡xßµB‹QÁÙË41'æ|&lý\-¸›qÌk¹Ù½_cÀn 'ƒ†„8ðÀºs|¿#^Æ {¦Bî7x⬹ߠÏ4füë63†|§n EØÌ'ÂÎa½Y}ô™‡=#{†u•Vu„Ð…mv±?s•ÇvêÍ.륒¬ÁxÅ ò‘BûqØÕ^†®ã¨GסžÚßÙ’ííb©³H¡‚„(.4õê.(H§Kr6©à]ƪ†ÖD\=eUBÕªÐB"ÿ•+Š©¾üBtæ—¹ç3 ‹Õ©ÿɯ{ý'‡4A“ÕàUÖç¿´íf ­ðt»µDºÕÙä¾éÍ&šý£^©¤ŠÑ ß%TËp‡–{V#©BWú]zãHf±7gç®›dåÛ‚]ÙÆrÝRiÜ8kÜ4ŒR£ûM f¾ƒ¤Tªå̾ÐÄOºšøà,izVºMÈý:º+¾($ÍCÒ.‡~”*^6«'ªµõºã~ÝqCŽ‹øÑOTøóùL˜#Ü EСãQëç¨7ÀIxåƒn·~1Z4 zØ,ͺ/w¢]OëûÊ9ÑÝW.W›«G\矃öK Û•m$µ[([¥ÃžŽèø7ìé`…8¢|Ös99#!ì·†vMTÈý)³ç ï÷5Ž+ã¦ö¸n·wI|”7´AR& @=éªq–-¹/þp…èÇÝuàˆKþ³tì=… óLœÃ‘ m¥)ƒn.™¢Ne¸ààò I$™v¤{Ó6îß:jVäè…×Oî§.’¿l®€ÞÍ™}ÂùË‘ÃFùîÚv,úBÒ‰y ›×™÷íTˆÚÜJ³³h?¿„lÙgïùIÂú©.;[)¬á!W¡¯Þ±±©6g‘7_!zß{dÝÏq˜DçŒWÉÛäš´ÏpV=Î6½üË'ùÊDû.Õ§(šO»úóEÜ9ŽF½Ò™Αþgiܰ©Y©[ìZ’ÏMc‰å²Úö8›X8ŸXÅi,¥<›U´—÷ {‘ç¬Îãgοq¦ ôÁo‡*ú‚={E_Ð}íc7˜Ke,WÓ+T‹½˜¤FW-deLî·‘üÞL–ÍÜ–@îCSqÏý‚‘O]Ï+º®Ðº‘Ú½F}Ë! MÖæ!ŠŒºèÆ7Þ`æžûPî&_Ûƒ­ž¶›tÛ‹þ¶Ë|À¤+“tÛQL¹›ÔÐ}ßém¼™Ÿ]±\,Ò;pÕEâ¼£&ÎöþRKó?BzVbkSCêM;Ëwÿø* j‰Â½Í{õÍ*¡$쀤ñXÀ/ÈQóö³\ca{eÌ–±È©]+¼ñáäYXë:>¯2»z†Ú`¨PƒP¡Í¸\Tzc³ô°ÞlŠú(ÄçÕUô­|•ä-^2óÇ!Âê¨çÀoŒ2|š¢rnðoŽL2Ö¥sœå Æ[Š@¤}åIÓÀX¼\;§ä:®&2QÞÞ«‰ŒeÖ{5‘ÑÛo¨VèíQ¼å;‰ /.2a@¯ã%ºWqƒ&ËþÇiø‹mÁ}D=¸c’q¾º=P”coŽz9fúÅs³Y=¤Áå¼¼:‘$b9§*Íí¬êdV8J´9 ÿºÙ¿ù×®‹Éo)8ŸZ|ÝÉkMŒ%Ž8Ä1§k™Ý ÎûÅTb­Û2UÒQ-k b´ ÍŸOmßù´ ˆ"7Ü\:oOÐZ°P–WÔ•€`Ë5ŸŸV£HÐ(ÂÌ ¥ýœ_îܪ9m?ïKÌ}„PaþžÑ¨}ÈR¬QlÞAÃ`ÖF…÷ù`aæ"÷þÖÃ8´Džÿà…ãß›Lí&Ýö¾E¶»7š·”øïúµâÃS6•õyŠ8¨uŒ^ì”ñÇÓ…ùÒÆû2­ý£+öyüzÿ%">Åʽh®]XŒˆ ó/ý¬A^0.œŠˆò"…\ÿLbæô• '¾Ë!«yså ®žÆÕ<¨i}ÄþJÔÅj«‰s…¢ðcùÝ )N,ÞEW4·ÞÌ Çñ¥7óÁš•ä”7#ÁR-Ã=‰šäGE®¨I*-Š‘EÍUH‡Ú‹š;q…l5ÉJÕìCMRv’’5É–Â]Q“TòžŠšl²J%P³m¢&™>(²5“è=‹šk1£aÔ\Dï#¨Éº·Tb59d61Žšá@=š1΃¨IÀ2)ªˆñØt—çþa5Èh!°ƒŒP!Þ.ä ‰Œñd¢_I\z­¤ú…‹‘ÉÃ5é_oçÖYÐXTsfö‰ç¢Ž²¾°kˆñèÑÞjÔäµRÇ jDšP3‚y6£æA^-1ïÊ­EÍ, ¼57ÔlP“W\Í5×ÊlP3‰h§ 1ïʵǼk¼1æÅÅM¨Éø–LlFÍJÔì@M†žZÔ\¬íDÍAè]2#P´¤@©’kî@Í~œ»)Ô$°ÒO¶*`ÕjKlv:Ngb«³)ÑyßøˆZ—=½Kþ»o®ž·«ØK¸3±ÚÞ”hT»¶ j· d™‰èS`uØMýÔ¨þ~´šr4eMêïÇØ/w$ÑÆ2 X‹bŠVëQ´¡Ø€¢E*Ì­÷R‘M¤©Iôá]E?Š(P ¢B‘E1ŒbmG›y´9‡wó(N¡X@±ˆ"ÍVEEEe ·Y¥ŠV“ñ`¢º„Ž£B ŠŠ•(êQ¬Bq<ÄmpÈõ`b.ğχ0  (Q0®0Š˜Ö¦0¾™Ö „5è@…­(:Qt¡H¢ØbmŒ¢q€fDqEÅQ|d+ñyÞU£ˆ£¨A‘@±E=ŠU(¬?f¿mE}Œ.™>ÕrZ®DAß½¹âô¡ëé.ÜU5Ó“ÑC ‡xóP{Z¯6|;{Œ®ƒM¦0¼vûObÉŸÅø¼d”ÞÃj6ùÐ)¥Š5ª‰ÇxH#ÀçÝœ¹åô¡ë&(s_‚Qû5ý~F}ÍXžd,ïÁF"h`ÉwâݾD1„‡Y„Éj×óîPl2¾;Œw9|pMhQ¥ U’¨²­lD+«PeUQ%$cûGPD!‰NË:ổxWVA®PW£ £mh;ÂhÛ#X¯(:¦ ã^NuÍm¬äeyMR\­Îý_R¥W­m ò±ÅËtÑÊ·MRàfõGíñ%kéÑnÅž†[|Õ{f¹>ÈÒÃZä覶µ„7 _jmû3±ûÿZ4î€f«¨ˆš •T\)e§\ÖÚ¨x¢vê£÷ìOÐAMþ ૟Vœ-µÏÚÆƤ ªa?L´*¨}ܹõ gÓ!ÜŠíJq?J¦hƒmœ1&\Þ½7|ç¶Ã6šC~j¥{”r?Ò_ŸÜ–"ßEõq\kñ1õ×½[CÃÁˆ›48¹Û‚±ŽÂQ€àL\áa|‚PöqÚøJ«¤“¡“ÕiNT’ß±ªØ hc`*ƵÔA¿óßýÚðóª¾Öû[ô<¯GxMržbû¨‘=µ¹&b×»Ô²Ô _hyö*ˆÒ;âŸ?NÀ ^s-qö-êÏ\ûûæíy²x0 “Ü,i]Ãl€fO„)¾šðè/‚/èÚAW²c<ÝÿmL„^Ù¤ô\$ƒcÓ†XDõ±ÃÌ¥‹Q”è1a-<çùQ(µ*Õ…24_6Êþ®rqXµL§.#Dþ>x5ÕÉ,ÌÃÛ6~.j+¢Áè¬)ÈR‘!Ð3Ü=AX=ù*i ›¯ž¡ ñäTxuíÌGY´âï±ö‘šÿ>`?aІ²Œ/.ËÅŽYǬîØöI=ÀPêt*^.ãÔÐp§¦g£ Ý f3N $Q"ÉèûŠBß—r®ÿÍjÙ (- NÓ"Ñšý*úâ5#×ãá¤ìSˆ |h²jAq(¼®Íj]ÉI›¾|žZÍ“4¶jzDÊ¢“±]uæ^IÃÜu„N6LNˆf“ã1Äa™½±)‹–H Œ¾› §F§^™ÚŸûÑÔ+/ϼ”ûÂï;!ØÓ±]#Ü‘4XÄ3©}±]”‚£fSjx*¼Æ©¿)÷ÊÜîXîÇh÷ó?‘ާâ7Ûõ7 ¢¨o0Š×¥‚±YÏ`R#›‹õjP ”,|ÁñXÔsÛvêoÌÝ*ãÙ£Ç3ÿ0™²©—ú_#Õ· L5V)¨Æƒ^¨®”Y4 %ymüR¦… ¦>Çxä4!쑽ÏY˜ÜQ^3;GðñØšˆìÁÆä;r—pëô»ûM«#šoèœÎé r{^¼$â÷·ú° `daC7ú4ÝȺ±` Ý ãtCÎô(膜¸‹@z®î9û¼aóc@6Ä3À»oùF5»òŽ*Õ0zG}ă¸!Q¨Xß—d…÷*1µ+~‘zyNÉ mNàƒåt÷¾è'·½ä¥Oć:µ…ð!Á€iŒ­ß{ŒpƼπÅàneý%+ŽI02˜qÔrù Œ¥‰…S[Ä0å„£.B¨¶©¿íûc÷ËUÜ=ùgq-"Žƒ–ð[Ç-ð[»Á ©¡~hªÀ1½½Ðƒ©tx+2 ½< нPã4Åßq!´Kl—î6‹nïa–§ÍÒ<Àóä„J}$¹V¼)*@½ÛO*Ž M f…ÂŒGü¨¹î`lWó‡’¢„uƒTSËÕýxøSÛŽ©Qq»™è¢›HØø‹üÛ,œ?TÆ}4ìî1ŠbBÏ;¥güå0Ý.ˆÐÛ°±&( ¹l1àªF‚cí4 Äë,?§D5{Zj"h¨6<ì¼æ)½†@’>^5l?øKðkû´1•ŒÒ0`4'ƵÏ]sUÐ7ö ÖËFØäŽ´ &ä„°y™¾úùbØ:6öâ'Ræ½C¤Ää` ж5ëçý lâºû1UšmÚS Ê"eäQÔQ|”á×2øhάdÈs?a‘ÿ°œ;™Œ.Ê Ñïe•3ØÑ!ê©Ùb©ˆ©@4A·T+^˜ÓÜ6˜Rè„§ô[Õ‡]©½èwþП M´ÓŽÿ™ý/†®¨qÔiý»¦!”Ó&ásÚ;B,=™'{¹Þ̈́ӵ”9ié3f­åõ¿›ô‘jIOŽ:yæÞmªFØôTí ûÉ[íוh{­ÅyÉ“ßc½ÕóÉyƒüíÿ;1x·mfËÈÜEMG€¸k]lËeeãÑ §Ú¾·8[~k÷ãÑî=ÑOmûž €=)¸f6ÞZ,ëð!^´÷=\ ªh¡éoérÍöó±û_%B|†DAZUböÚiº³ÄZÂãg ˆ»9òÆb³iOèå¿h“è„%ú ½¤›è5å©ÁQ½[è Š(ˆ¶bFí¼Ï·|ÚAûtkJTZ›¼{‹=¨H-ÂVÅ,·W  µ°ºÛ¢½anîÆ™Cj,Ms'‰ ÀjDz~–$\Kd_L*¡X}Tcv߃5ÉÌZqÆÊ}êh¦‰í/~ü`îÎÅc3j#«“ïŽm¯OeÐS S¡\¸!@ƒÄržJå|ýØGê 8R¯Vš(æ BLCص¿™YÑ)Op›º…\½ºÔ×àKÑ?uYæÚï$”QJˆpG§{‚N‰Œþ–ɾôœõ3ÅÄP—¹Ä Si/ó©éDÊÒ’ÁÔÜ{¸oü‘ÎM…?  TÌûþÜî©1÷Ãݹã¨>µÿó¯¼tdj¿@l*þ‹ª›DÝýÜìç¥Y¦NŒ¾ËÒš,Ÿd0æ90 í'­½SáôHv³(áÉøFrƒêb=­•%#¡Z_¬š*iÙÀ¶{ÚS×è|ù½S3üÿh4/6}Q¾ÌMÛŸ LUÌ2Ü jiÚ ÜÜjèóV´r§Ÿµ]¿JQ^ªS*¾*ׯ  ¨Z?䉲l2\Œ!Ùã6¶d˜ÙPmx” .YæETõƒ(†PdQ £A1ŠbÅDàù CðT!±€w‹(rEEE%Š*Õ(âk°* @w%ÞÕ£X…¢Åj(šP4£hA±m®C›­hs=Þµ¡Ø€¢ÅF›PlFÑb+Š Ìý @·F5< ÆÌs(Ž¢˜FqE>Hw€)¬ØpoI¾õ³çRòßfþhÍ䟖ä›Ô3Å’•h¥š¶g Aæš1Ci®/FÂÆFVņ7Š‚ÖK!pÔCͨ±P‰¢¨ÄÃ*Õ@ü9|ׂïðn5>hDÑ„‡Í(Zð]ø»ßM³lì¹ ì8žçÁ¸N@ç²ÛÑÐF´¾ Åf<ì@±¬E'¤òî°ÈX³ImöŠ-†’É `?wÝ“ök±]Ï’óiV‹êÛ>AFoP‚ ht3hàxPs·ÌÏînvæ›ÕáIðŽí³ÁŠzòÇ>鈲þ…[í<§ü%ré´Þ·hçIí„C]…„MM•uç¶'C$Ãj{ÇCÀ/,h‹°¢Ûî×_FŠïàƒ #Vÿ"ê¥ äu¤”J J%ËËÓœ¨V?ãùO}A5x)ùµ[ ß‹n™A'iØ@á(ÞŒ8± ¿·6ßÄ)m˜~œŽízSÀÂê9{çNÃsª×Ûþ?¼`Äh“£•ùÌùƒ_—ìOë ´¢¢ÉþÔŠÇëñ¸Zßá@¿{Jºˆ©iN4]lV&ˆ?͉õÏMvõð¯àÓæüh™Èÿ÷×ÏžWœ*MŸTHª¸#öÀõKœa¹[ÎOfôó Å{?'Bxç !8ÿsA0¶+n©Ìa ôíÛ¦õ Ò\0e¸) E ÉÇYyYÝmàGÌØhB=ýx킽W‰bŠû˜æ¾žµŸW½ðöœQÜ„T²K(ŒžŠtÍ3"qÌÚm–û2ÝÛ‡¾}úM{Ù­Ö±;·eÙ?šºÿ¨ƒŽDâfcÀ4úÈøÎ Iô&P•õm˜1Ýs}c”kÚXûD"ƒ¬’í;óÆÿ á”~²Œr @@/d™rÛÜEeícTˆoPkIoh?I"ͦD»úcol×kóS/¾úBl×9 9ž´fÕñßî„ì7­Žã0iN©?kZPÖ¹BËyǶç(Hí·ÈRVAÃWƒÂ “G]švrÖõ3Aÿ܈…p‚"›°Ô^e¤öaÈ)›ÁädÁTԸǀ/øŒìfT‡ð†È/Ë òi†ÛSXH¬¹ý,A„{Gø&_~T²®¸Y‹“p‹¯е ñ]–W@¿@ˆâ¡©õ;0#å9î€Bm»ˆRºcš$Ì†Ü ~,JÜÓ¨kCÖ O·ÂeïCó…¾Û~ºöMRZèMA‰šÆì§ÔòÒRþ𔾆«4aºYñü é킆ŠL5!Þ-±]W²LJ5íðÕ·:ЭYÏß¹mP„0Ò>ìÀG¬:…Ôf£!ê-ù¨Ê)1²ÎN7â°IbAÍÊg‚ „)œå‡ÅœiÜ`Ì»‰|îg“×k&zôÊ“5+?àÏÕ^n y 4Ž 5ŽõûN^±À±àØFÝÓ Á±v½ÔX àX;€ÞëoAªWØ¿Û|øµAðëzw”Œ_í˜Ã`Ø»7êN;²°Nü+²¨àô*˜1p°:cXÉ……S0Ȱ6ÈB¹ê»<+#O–Ù2îå¤ýšý¤:¾79x§ÈÞfûˆ_F4‰Ò‰mæývÚ:IfZ¦æÄf’ìÕ'Ö Ö»0O@žqÕ˜Dh l¡h“ˆG´†I¤]¦ëÓ†Ô†Ú‚c¢$¢»]L±¶Â$2 8=€OvÊ';ñ aÓíb=0rVò›»Çí8¼ïi/ƒfÝó·©ðüƒO&cå½t›ã´àÆöœƒÆìÇþxw¾ך®“p=âvŠy¬¯-Þ¹mRÁ˜º ATCb‹ôºí¯av?ÃêÈp$Ð/Y¥¶÷)ù9lØ®^NÄÍ`£×‚šwà8Ü€ãиTÚBVÒü(ÿ—ïE¦KìÃap`I¾Rop7…ôbTi´Þ…Öóߨg1wB«V%æ®Wç\Û}ã$Ýqôø¥.ÚÀ*ù·Z£q­ˆî‡…k: ‡÷Nzï¥SfÉ2X`ªÃî;æb1|>ºøíÓçì.v…?¹í„œ¡“¼Ë‡BTØ ?+’{ž)üŒß7NØ÷öø¹ü,ôo 0Õ‰=ZuÉ_—ÆUYEâ/â⺈4¬Œ=½ãg–Gì§»_·è ü{jæ5^^ó·jwwï¶dæc?"¥$¡I÷«'ú‰¿QEOUïp }³¯{Ì"ý%YÎ"t~]ÑôÒ•ûë騣_]Y¯(Ç­ùîÇÉ©û§Ö¶YÁjI}(¸ãH?»+¥GêÎ[2´ØâÞ¿¹Tqµø+„«Î—Â/…ó!a}3ù%2—{´á 5úëÇPÉ´zxóU–sžûÆ•ô¨ˆQ¥ÅÄè,Ò5ím¿ ĺbôwb‘i~­i mš0X‰4X®~…ÞØ9k´'Ú×sѝÄ#Öž?:£•¯”µ’4ŽTé釹£çcݪz‰uïµø×Ll¹LÁËkÚ$_#”žž-ïWKLþV‘ZúkÛ´”æÎóåìy?Î@‰Xû¼¼ûÒX‡b…/a ÛÛýj@DÌÿçªzK„ºUšçÔ+õï(~'ôïjfuÈù’þ˜­è%” D›&¥:a6ágÕw4þ§øYOø>ò)…Ѥ'Í31æ=%ŒŸ[/Ä}€ñóŽ%ø‰qÅúµØC%ãj•ÖìÛò%ò¡ 1ðŽ•²Ø$#Y|€‘C5FíIøØš ÔGÀš‡í Avé¹{Na]Tý«˜[UùÝQÔ'òÿíc(OÞÂ_RîÄe†Ýc¤ƒl]žî×hë®fö….c[ºMí¡ß3þoVøß¡ð«E§Æ¥éå k@Ø«¿f­’yÕß” OõÜr®:⊋(q.Â("(¢(:–së[—»*ÊNõ·Vþv¡…$Š(R(zQ¤QTƹ¡ª8£iuœ‡8:©A‘@±E=ŠU(P¬FÑ(ßap‰å¼ïV.ç6ëÑß* (V£hDÑ„¢Ÿ·,ç!­Åçëð®Åzm(6 hG±Å&›Qô¡ÍŒÀ«‹æhx'*  D1„"‹bÅŠQã(&PD1‰â0ŠŠ£2;@ºn¤×bëP´¢X¢ Åí(6¢Øw éE8Õ¹:LSêùùù œÄš\´“ƒ›®RÈ­ÈØëÖ¶WiÊWÞ'þûš„’ƒÿ"@_òò¸4ìpØ+¿„D<Ѩ^OÕ}âÂ^6êH Áß“t·jö^ëIöØ¡éÜ9O¬u'=¿cŽìÀ ÿŒû¤D„¯âN¨Kya¯¥^»wG$¡{´ÒÆ'¼ßqøÑ_±n§Ã/…q(4ˆ+ƒH•¼ùCŠ,Lkv]xG=0 ˆáà47ÆQ¸ÍÀµÒÞð×Ù§´g÷/Ü#W]>iíí‘«Ëuï˜wAð:ëFynDF1£ 3Å t<Îà stà Aƒ„å9úK\ gÔPòÆŽÔ _¤Œò‚ ?¦øçLWV·+ÎP#íCd[Í„í7ê0¼­‰h¾ý}Ì ÓÛ‰ü?¬‘³‡-Fd¸ñPí¡GÙÒ¨ˆÔU q×ý‰KÄ%âò$’÷?Iæ l¢2=B¹» ò 5æ—†ˆ‹Îÿ¨šûE_´¯uìeäiÅÄ(Šq<¤ÍíH<9%vãz™~Š7¾FŽI|Å»»ÿx@"d¤I¿ Aö4¦ªÄOd6'^:†¨æÖˆ8xCh€ÌLARLh1¥p5ÿâV<ä]Å­7¡u"À"ŒÐväIyÌ8˜Q†_ƒá7£å¦ê%ÃgˆoF]è åv@óC{i´×ö’h¯«p¤ïEC£hˆh½v›Ù€fÚQlÄ*¥°›°‚D÷’ÊY2Ž.FÑ…k3¿ ¾šZ@C½hh­ê0@péV­O£õðÕõÕ­ÿµÞHÜ["‰ÛIm‰‡Íý5÷Öä¢(4~ï„û3¥iïa¢HìqF.Š,¢xµÚ1CŽ â[/1X…›`ÛE‘‚(BaC"?P{ÄXv£]¢›tsÏÑ®t°ÍÝ´ñX±‰`;‹„DšNÏå¶„í±‚|94ÆËåËgIá²*´åÚQÆ"§nÚ/PÚP@…,—Ì!#:ꉢØ~H¶nŽíšµ~&aj¢ð6 ú£š§¥‚^wŽ9)ŠÑ¸ñÊâ/ñ>Á µóà Ù?`ߨ«ËÔs Ž³Þ íG)Ùá÷>e±Î„ÌN¦ð-ë%ëlx7³“Æ,J@7-샪K¾‘ í êÔ|OË(ˆk[8 ybj˜¯ø¢ÃXÖ|í-/-פ8 Å%U)ÿÄÇ:úH‰¯»pEˆM´™ïðàKg–FÊ>pä£ú€3kF‡õŸ“zÍ2X3ZÇ'¬C –쥟eÁ ÊeŠê°§ÕRM±§Œ<“zW2aûƒLÞã@Уœ`'DŠT´)€µd”n’Ô8ó;T׈‹º%¶ëeí#IQ?¤Æ#Î[q@ª&(¢þœý2_óÂÂÔëu#<ÕØ®3Ö›–Y¸C_em¿KZ¬3ÖnrÎà?¿J¨O/-bžº€½ÔœðGr¾Ò¹TÎçRÏCDz®ô.é•·pëüù-#¤ÝàU ‘‹=%]óàùx–U‡”OŸu?NWÀä¬}Ð통ü¹•Y€/œg&Â=A‰êáØˆÍßɼ‰(.Zv’vg=x Ž8â áaƒøj¥ÛÁû2Ó® ÑßIóhF4Ì#*¥œ` þ0<ä Ö †ÕoX ~t0ÖRÜÏšO²ø$oX <÷v9ÝŽ ÄV"õ µ€ÜÌ L`™PâŸþDUút öhüНFâ’ήWu º:.ôòHùr\ÓåIx,¤Q‹É5áD',Vô¶o•D¿—$zzC ½‚4£ì(D E¶>•hI“HŽ›}ØŸ0› ˆ¢;Åf•ä Z­_Œ‚ðWUáÁÂrõÕXÁ8àF4Ê —om¯GnÕóa‹,>’ýÔopÍD¬çcP™ÀF `#à»Æ‘WIžðªŠÀ'¡JíFàPÅN—kÝ;žèwÏ]¿£ë«šì†ÄÙʯXu%gGÔ¿¸úW£þ%Ô¿•ê_½ú· Zº{©5±z˜­ü͉ƬÂYÜœ?2ƒˆxØ(í~H&«€4NúS ¨ªÒAÃeÙš¨&† ˜HP`'„†Ä;L'2jPÿV?Ìzk¢1›P¾áé³d#áÐhJ4ÃÌ^šÙ;s¥ ­·ý´¢RÄí)\&6oìŸÔË×­×ÕiÂS^¤ú«´rŠ}ÈÒ‰Jd˜-[.ô.ÒÎ*€cL\O?&Øž‚àŬY£\–ÅÍâ|àöhÈ{ K¬¿eÕHÅ¢¶™ÔÇÊ㤠áòžåþÿMÿãf+°C‚-:t8T‡Šª 'aM}C=!åÎÉÀ%T»ó€Hò,J$D# I¨Ò^9¡;Ôíø=¬”‚JUj»å„ƒ%'#šŽÕA!AžÙËuµQ7b¦›õLÕ1㈒£!2{ÅÐÐHž$Ùk‡œÝû,uÀ4aÇ5šÖÌ4í=” ÍO:[˜Èc©/áútþ½û¼L Þ™EÖ£#—&ò¦tOy’‡°²Œ’§e)~ñ2Ö‘«`ˆ§ÔèrYö9ºy9¶;x–öœzFž˜ŠÇ¶“Âu“Iš=4¡4D=“ ž©€,÷ŽË™‚¤P?­Õ]{¨{Œå;/8B¦Z©!€@Cì{þšÖXÏ]‹âƒj2µ†´"eFPŠˆæpHŽA[~¦ª`?SÒl0ç“ä‹ñì}Ýû*¥©…à6ª ®¹§{O¥°I$A†\~!…üÌß ‰ÌÐSJ [ϧæ‰Èæw#WöAø~|lg ËzZ5‹>†LËdí iü¡¿¶}“âwJ.*sŠsìÄ|ˆÌmR§eÿ‡ø,Í÷½ß…îf¬Ç¤m¢½I½Ÿ‡L7¼\ìÓBëJ¶Z#½m…<´Ù³vñ¹>8¯ ùNñ'\‹Zíx»d† au ‘ÁK΀oã˵“Â&|>tÒÈ-ªn#úÙì¡c.•j;ˆÖ2t`:ä}Ý”A§ Ɉ Õä`©ùG¯ÖfŸ6[ 6—V£hDAjuSsÈEýÖsì ÀT-æ|znÍ¡-—“w:¡Ìã¢rzu¶†¨HH³j-@ ‚^ìÿ—rªßBö4úLÃi¿x†B3Õ Øt˜†:¸…÷SZ¹+øl€££å˜!‡ÀT܈ž»B†Y!¦×=Åe—ü+ÃÐŒDã&ìôëiÃËܼ}´ãNÇ´´ädå&ÚÑÄ&Ó„u@C>R׋?皉ŽÒ¼óøÙó³ÿ™OWG$ºªÕÿ†Ö“Ü´Ítc‰Æ©µù²ò¶&¿åIïcXŽtÞ;“cÓឪ^'YµÈé6R#ꄟýˆ¸n¡¾ì§œÙý9^‹o/Rü ö$64ÿ½}gÏËÅçšyc‹M¤ŠUÎHñÀwΰb5àÉ wTd;ìKJ¢U©$¾w#Ižµ_›½Ïž"+E͘ÕúÉô M,Ôðç©óWF´~’Ø:”sbÐ úÛwðúá>õ}Êððß ®Š¬™ïX¡•á?¸Îý0ÿ7{ϺùãkÀf¯†dܤYr}U/«Ã¢”L¶ÒÀ¤’aò§§L.!+-˜9¾ÓüòÕ7ÔK6¡‰`¢xØ£ —üÓ½UulR¿`võ»TëgØÇ…Ó´óÀ,Ãé‰j`'õ‚#MBô¬êŽ_I½+b?GæÃ$AîX}—L¦¢Àylह9,-gW"²Lžï «Wc÷ñÜÕ’yˆu [= 0gðfxsÊìtú‹D«·f«H´äXÀçC§ÊZs$¶=W¹ä´>eŽòšº1ŧQ½ä™«>¦˜G*±G3!ÓhñS¼{C¨¥ ŽFɉVžviåK߈iÓæ?þ$ Û„1m:é8Ý»ý™-Q)ÿv0 Ì?ƒù÷‡tPÿµ‡ät6ЄC\øMØ$ºÚ5ÿ‰_u·9yjÏ×R“âœ9Ìé"ß–Á-œŒ¢õÛŸé¸F\F±YØy4›äT‚š–Ú/(n“ˆÖA·é¯mý>3"ê’Z¥›6L®U.îrç @ ‰‘=)¬Ååv¬ì¼f(”Bg‰x(Erh¿Ïstsh‡‰Ÿ\§k©º§Ï½pB€ò¯'¸Ë.šQÃNøÏ•|IR¥ß­%œïÂB&Qkýj%Qkj±°T¤ÖÔj†å[—Œ¦—` q0PÔ`'ı‘88æIèzHO:á\ÂàOh®ieÈ{ÚØ’ÕÉœ8œ8È¢J[•£VžRÈBÑ5µ'€§ìvFÙtvQhNø²úY"j‚…eKÆÅe‚kvǶYdiEÕ,·“#„?aضBפ“›(°f\c å¿Ô”%Í]:j]r W5Ϝз@ÌI‚+ô–õ´õ‚õ¸p7šÊ'ySÆúm¨‚gÖË´9À7™ƒM›³î[ôŽ›ÓÇŽM/³÷Ô>!xÜïcDX ô{á]VNgËȰb?8Êî"•Ôß”&¨îÌ5Q»Í©#TM‹gÅyÎÇ‘Ný¬h ÈF²A€Œå´¯>«;šqáÎsÁ:c´è­ò¸/û‰}ç/ˆíº4¶ëÎEi¸Iñž§‰ÎZÛ& ˜8î•v÷&ŒAE‘Aà£`tÓ¨e‚}2² ‡ýÏeñWF;q¿ÄÁM¬íiüë üÙê`0qÄŸ6ÆÈØ®#ËêôãÃ! F„R¡×¬#6n…pà@àTUŠ3¦BF9.B=á¯@_JvУëlS0ˆß^Z#úójžL+«®´‘ ʵ\‰sæ HÉø•Á¯<~ Èäðk}ìÄ/‰äêǯ>ÔÀ/qÇË]1:­£=úñkØ£Q™º[™¼M!¹g9 .±P6#q ua•fVDêRò¬‚ÃtâÞGòƒ)ÞÏÎQ@ŠB(û§c¯†\£4OtÍ}&«6•@kƒ4oQÚáß>ýfOôA%úptb2JLm¾}:Õ¾o ¤‹ £¯c´ÂžÐ}[=¤%=ý–×Z'“¢Ö¿éöÆ„]õV»‡Â ¨³LÃbxÉ;Aï—Ä&Õ—¸à&¡8²¹ÛÅJa Ú—kJÞ‹QÒâ׉e3 Õ›@8ºCS“AÝ~ÔÝ j@ Žäû”35†P#‹ÃÞä íµ«P^ë B OØûjç±:³u°¿ÒõOOدSH?3àö[c?…D™%¡ˆy裸ù;euˆB"á5ô!„¹«b…Námö ü²d„¬"$ÁHÑr^ûGܵ_ÄÚ;ÈÝÂXdHÄÀí‰(‚{ ý¼‰ UÁI(ì<­=0¦c9e°ùæ²Ã|²ŸlÄØc17â³­¾M@¼NPsUôWìã*o7ý-¼ {e?Û•'£x2®#î1Å;øÆ¤Å¤,"„DwùŸ½.Hw„ÒéԗоÛ‰ÊáRa¾D" ŽéZ\=˜re#òŽ¥&éÁ : ™C‚Ç„ª…°Å1Ÿ"jw[äH€$ˆ oM~á6÷tàoû3÷~БÏÇ£ICOÕƒÖEæ!Îl9äÝê¯HsXþk¥!¬4¢/ýµík2\…ÑwãöAz÷°ÄxeJNf¤x6©SvDͲR0í£T‘ÅáÇ{¢Îù…î1òâD”lˆX>_!ôÞ:(ø¼áÀ«Œæ„þÚö`CÅ4T‰sO… Iås–"d)z¨'ºƒnÕàÝI|ñ±W—Õ’¡[²2“B¿9`N£[èÆ¬©¸°»‘KQ?!WàD7p%ß Î@ ³àôQ+ÔjßúÒÛžð×BøB}ÈNþ©0/èþ-%ù÷=t–6ò°U-†Mtÿ€dÉ¥/©s¡§êëä.ŒÍ×€îx>Í—e“·Ù(yx6 aÞØãˆ']5=9åa”˜î/'VÌ â™®%ûѲZ:ô8ªùñÚ°È|Àkq’ÑV,29iï e˜PÒúãÜâüri¦]NHÁ3„ ¤!ä%©’ÙS«¨î ¼Ûz–P懎†Ž€‡Cõ½ök!“’!³¶rpûþ?½ÙžÑ³¤õ£ì~„1õe…©j£j$uníã;úCê`Ý] P:É”j4Oz=HÁ’`¯ÚˆÀÕ,?‹È³V1žy=`8t8‡¯IÎ %u|¾È%“æÛItºÊlûUÜGÓˆTcº®áÇ;Nr×ëÌŽ[Çÿîòk­7 Œõ t}æû>®¸õ†n$ÿVˆe£ï‰°¾çƒ'¸û9óù>úSÒ‘º!ÿ¿gÜï5ænQé̵Ò<·t¥ù„X:¨9“Mð1v©I4]Í´½Î¥ÍWó9AÕ9ñÓuJä¿òF€“_h$ˆNI81uÁ‰‰ë}õF¯öú•_ôMT/Ìõ´“Bª®ñ:‹…¯ÁYuM@§º¢‡T}ñ$WoºÆë Ö| ÜE¯ñ¶Nâù'Q½ Õ›Q=‰Ö»|­““yþ¯P}ôޱš†ejÓC=Ç/žd>®”œ¼D-„—”`QÄ(D!M„æP¹œá\…ï"ø®}Å—Ã)ŒUʼnüí§EÒ¯“y±¨‹ûæF°X&~ŠæúÒŒqU¼xKT¥‰€°¡/6e1wbª­{±é¶m'_Êódƒñ+ƒR—mMêcË‘’Ö«£ÛŸéø=EøFÌ*R©æG%JçÅæwGa¼?iëÞÖN DN„ÐÊÔþž/^üèbnîd®iqjý¢z«¨ËíÛ^{)÷RÎÄ?PÛM2 œ}4¶ÛÄ‹0öÀžgÿ{Øsß8d‰ß‰ŠÆï”ñÔrÔ‡Q†Ò‚‘¹Rœc©ýG Ì&¦ùgøvýHr¼+ á¹y8 Gl>à'5ä 4‹“(ø›œ™ ‹6±kí§­0ÿØ£ÁÚÅOû´‹¨ë4_»¸}tK™ø \»è aÐÑÉ€Ö&Ò€@ò 0ºçǹ¤é÷8óì\€µò{Ió¹†CóoÅm­ÑÉðÝ™¨„ H¡W]Ï øDKˆÙ™7MÎK“äü š=…féX ˜¤DuùÃ+_O‰Y ¿Œ¥>¿þ=z^ƒ Lø á,ƒÄdŒŠÐVÇ/¡>)gŸ ÿ:×Ë`˜Lzªî#"B5“=ëõ*‰f˜ûPrM%%Vc6M 4ô² %éùô<§ãûÄÍ*ÛµÄrVŠjç°Þ$‘âøz÷É:ÐsËåäqõÜ1Ê©`ÉÍè¯aþ/Õ"Êt Xü×Þ&{POkÑ,ó"/ó»Ä‘B&Ý,´ƒE¢º"¢/ˆßJƒ°žçÒ^6B!¹ÖAü>LØiVaÿ¤]4…¡yêÈŽiGm“a®}°Þ^ûßÅ 3#÷/Šâ™W>žÈ¤‹,ÈkXVðe”&‹ôƒ÷à°ÛNg0î—dìT„÷Æ/FÑ•¹.I¯1 i³‡PŠwÊlõÃ7¢_z3Üpi‰dKH•Ù>Ï0:äzK“+ü%£´ýèÞe HŠæ?wÒ"–=ù·@¾yC™6,,ÄŠ_1ÿx\•%êË5{bÛïFF¯9dlÆXiµ;oÕ˾‡,³Yæe˜Ñ¬ç4tÃ×Ö³<²f>–¬ ÿõZÄÓˆáeeˆ\6sEPüƒ±c©‘]qFvh˽zTIߨFAÏNJ¬Î¡•OøFÅzwTÑ¿kL©Qˆ%¿i¹£2ƒ²ÿEZy‰+gÔjZ2)ûß]V¿=÷I²”:!„AKq¨Í{ÿµ_‰=—|‹‚õÜu†ücS H`?)«çF~o˸Ó]€ÀÃÑ×N²Ý5€8 «úãîý5–ÎÝÏŒÆHÇjÏ) ýÌÎ+ÖÜšP”‹-ˆöSÖ> ·oµõ‡ÙO!@øŽÿÂróç/É6•…œ½Sè¬>ÃØˆy‡CÜæÑŸ¾Ó—?_eäóFÈëqWå#á.Úh–ÆÚ’µ[Ž–µ¡‹¦¥×‹–Uû ×uê„2í½ÕA µåSw ð-YøfÎC@òM²¹o¶Ð07åVp­suÔÆ„ é#ç.×-ö<îÐ¥/)'1]'<äyy쟃…^O‚6`ÇÖ’¶K¶ )wé~´èfŽ€`ÓWÝJøåÂãšLîÄX¨¿53¢"^óÚ–«o½sÛËš'¡Zùãs–õ[ŠýcÔ­Ñ£5?ë¯y‰¿ÿ‰þžžçwþOÞ®?:ê*»Ïd&ÒÁ ÛìŠçd¸N{È‚=œ.¶¤²gN$bøa“nÓ< šnÑëA“¸|ýf mc«Ûì)öÐ-ÔÔ¨wF7dUŠ$*JwÙú ‰nøQ@Lßç~îû~g’ÀúG[ÏÁ—™ù~ßûî»ïÞûîûÜ1ï?Gnß¾6 á|ÞêX×(n5òg½…MŒ†ÏòV ÁKÂîgûƒ‡t¹Ê¾•,ÑåïÀßÝB·îã4Ë%ýâu…#¥c3Ä ¡¨Sw;·ëM»%©УÍëÅ4…ašº[ ÿÕ¥:ZÒ¸FÏEØ[Z¥ .Z|íÞQÛ]ó‚.­²½©Ý.žÀªÄr‹Þ)ÝêT%j#ÉÄò4AœC¼(+ÝHxÇÒÿ&ä’Ô§nu¢ùELa:¹ñU¦0\…N®J=VéæßíHWΖ;> xSs¥‰ÛÜnAœVùÓˆ€ã†ý¤Kó^C(k°oµß¦Êz!7É{Ø9búç&gÕ9Éßé“ £y ýªOõ ÿŒ›þ\|ñö­ô2íƒ`dª[›a¯"« Úû§†*W2Q·=¦'¹V˜õ©V*™èÀvÇD¬I,wÎET‘„Ñ*MÝ?ïX5>e¤†áŸE†ü†#œšè*õQb Óè mÂüZW‰¶SO˜j9WQ«UøeÓ?릡ŠËârÚÂþ³ÆÜúè*§>oÄüi,wî¿ð_'õ¨¨>uð’fð%ÿk®a’Ó¹ðÀä÷,øÁ| ¯Ö\º–ñóƒõé*±n+níÝÓÝûKe÷½âÒ ñŽ«ÝïE‹ñŽ•Óã÷”þ·ù+V:„_ã·”6M _púdzÆzd¸dbû¨ FõÇ}ÄJQh†¸ "öf§6&¨«˜ °äT»¬IÄäJÀOÉóxÍ;‰KËfMFäæÔTì¿÷­¿ Þ3Ÿõ7øäÁ›ÉœEÞßÒ͈ÏM¯×OòæÿóÅÑ–ñêTÉåÔ©KëW¹ô!¶¢KÓW`»d#}¥dŠÞkÁ®'Ë@Nt_V-[$wÕÖŒYpÙXõÌ,h–ÆÌý…ÝJÙ¦ŽÚ%´xîkñ¤~U¹þ[.UñøÏb´uЧÐÖ¹a¯y§ìäê¯Ú¶+‹Üâ4 5€E5øÉ7ŒYôÆ=ñU»ÁU4ú¬µ‘Ð(}Tyk.í s­Ýi¶†6ÕpU‰5¾ÖÀ¶ðÉô¢ójù[µ7ÇØvLFõ U˜E^ô÷°ax§3¸òuhòá}nñ—ÛÖúƒú’8Ox?¼èã[᧦žÕùÞlóeZ­1,«ÂªüÃ_‡&‚þœòÈpÛDë—ÚŸ[“†Úvq”'†ƒ­¢ŠgÉW7ùBÆymæ½±5S!Fœºç3CÛø—³¶®äËwqÌÙ¹=Vv`ÝNõË™¡ã-7ßšê¿ÐÛü…~‰þµ±Î›Ø¿«LÿÜ[cM¯ ³®-ÆuÞƒöu+2< ÈÈ4’6†K×Hzqë>üb®÷pL&Ƨr}LJ :ÍhúdÝ•V†Sr誦OÖ^¹C”_ºR‡ò½ûÿé⨽*¶>”©€0‹—°7él±Ž†'-GCÈïÖª7oqZ;ÑCÑÇŠÒÔ°+¦A-•ñ’zNð57¡ù.P´D5e °r Ùo|Ls®íà/:GGmáúïàŸ\±“¶ûA²:éþ{«¨Qºß(}v*F¤Û¿Îêv³TeªKWŽ«PIE—mºøbu¹[9¯éõµå¢“@==¥ÖyûQ¾ÎX]e„NØ:ÃÍ‹‡Eë¹:ËHÃî¢[®‚]ÞKU¶†ï—ËÒ»ñÇ¿j&°oý¬ñᢛÏvAh!fO—\ãFækwúX”³H²PÀ`Aæ ÷ž»ælŸ³ëº«·ËQOsŽŸ­œ»¢`Ú/ÖÔ—‹l„N:Ô”&ä:÷Ò¬Ãí>„žb²ÌÞ*¸Øt&¾q? •1A6sbÊ¥+b ÖžA|À¼°ß„¤šg--!_·x8pc¼y'+}p×M®>½O½VFMw#줕t=²ÕÝ(º¢Š†Ý†©††Vø(è+ŽêŸçh©v;ï–žtú`ÒÊ0q< #„ÒÂeÕÛ2nr{ÆInË8ÕÛ3ºØ"<‘Y’êú¶3;.Pr@R©<°¿• YäuiÑGt6ùið‰Ïy?ý²Â/‹pˆGýû<ßá.r£?wYɱ!¤P¼‚G«Áy­äW*ž+ë7у³ÑÈ5¬µE•jä×Zƒ§ª%Óôz¼Q½2›-cmQ’ëˆÅkìÑ6ÛÑõY½èU¡.Sr¨Â9î7†cÀÛÀÇñV™W«“\ ¿Î†¬nU·dâÕ]fÊÌž]ýd&báª7dÌ:»ô€SÕ•Áþ_¡SiáŒ>™;þK \¡%Z2ê“i:¸àz2Ð^×G¬¥««‘bo–:oÝì÷ÚX›3;EdÄ;NE¨ðºÉg’v*üábcÿÐ=íZÁÅ€h‘xֈūÔmfZ¿Û4ºÕ¶.Y„[™Ûm?h3»'¶ýIŽéAøCíÚ'Ïø¼3ÖsÓqQìð¾PB˜µà»øJ¿¾Ò/¯¬¸àãßY1›Û8¾6‹é%ÓìÌlš4OçS05Ò„ÃùÂý¡ ÌÝšË+iº¿eíi’9p‹¶˜®K”ËÉÆœï„à„°‘ŸÄ†Q ‡¯|N³\ÍêrúŸøWÌ6. ¦~Å›àû¨u—ˆ…Kx è§ÕÏ‚•¡>cþ0¬`~³Û2KSGÜ;bñŽ?‰YXZhâÌe·Íßd¿(¼¿E,ÏÆ 8$V¤ZZ”!i= ˆâš—šG~pº%×c1Ñü«ÿo¬ý*~µ¼•=XÏé)µ¥ ¼7]ÞŠåáFC‰–ƒ&p z»?S[ý¦"Â)?k!š&Že?°%æ=ïx¶*QçN]yP„‡XxgúïpŠ®±!òÜx.ižÃçâž2f¦i2Þ±,¦æŽ'¯?5:jÏ9cþô7·Ëþ\u¹éÏŒ#ü×0¼f¢… ÙȺë–l¯1 ñ4Ö.4[Cݬ€7m˜¬½ÜRà} ×eÖÂlxuÍ÷8ŒåO‰É¿~{xõ&M?¸º#©¦ÀkúwÚo0E8Žh,BwsÞ_÷;Î{dãC¥Çà {ÂNg7D'ñI8u‚üÙô~|ã7mb……œøìÓøYíp]ÛÛÅØˆwy4ØÜÆÖn(ý 5F¼ëNEÖT×?úÅé’G\kááô» »¢ÖëË6Ž=áŒ}¶ÔPLÒ —R$‡õ"<ç©»Âå‘y:ö¸J:Ѧ¡£—ö§wì:øÍÇÇùj*צ ¸ÑLUaÐc“Ò±}‘樼R2¥úÑ’{€ÐC­´kêYW¡g.†~‡¾¬ ü¨=¦cϺ1TTÖ_­œ;¥:ü†‡¼{š­C%ª=1V2×_á-0ˆýŠ´3ÍÝŒww`)ÁÒ©§G ƒxx*sšç7ýþ‹Y3Æu¶GüGäÅ TdN Þßë…VSÖ[Ÿï=é^œ´[<ù5yBþ/.Ö. A*”íÛ[\ ~ŠÕð7ÿfúP!±5âžóÏZ !ñ½„(6!‚£–T›ÔiVÌל~=,)õp•' |¿ÎnœÏÚEcsGaûóQ u=Ÿ§&]qXÕwa²@ÆXV …:µèrc5i?ÚBãÒ± ¦ ã…øÍHØFw"¢ d¨SpI¿F6iï3#yéV…ÿÕ;wÞ|ž“ÀV Æ.•‡U÷yï¼ÈzÉêøY8Þ¤¹LQ¹Í·ZVÂ&MרÃ}ÒäTå‰=ñ£±cãG4Q¸/]™QÉ*úâ‚ ±× §˜wˆ]fX¥ Š)‚ÛæŸQkùBvuO¶‹Ýºp·ëv…¨Óìò=ì qÆÍ‚ÊÇå-ü(e™hErÜÏÈ¡+üçœøŠÖFáÁ/–´– ›’~ãfi+“‡÷ûP.f; ½ ‹C.§ÜmIüxk,“ï7ÂÕ9LÖ9í¯N=ºÇquâ¯ø¦^àÊ"¬8lßï øFEa_ð•0Ëuðû¥#Kåg±Š-늱cç?¶ ›?*×x %á¡Ò7é/‚8$òIb:(¦"9¯ªÀV{x=ûyŒûŽ ,UÉHÏATíd?þ‘"NHÞË>ÜUÙLq|co ÅœE'îë™m…ë¹n Ø9 w'ž1$ñWÛX›)>E¤8¯ÔU[‰Ô}<‡bÛM¯ÇßôŠ Ù;I,æ=îžs{ö–74Ëé ¦M%>ùQã˜hɵ^âF=(£ÌÙlNähÝâ=¿†<¾ˆWó½O›$~ú R')˜uƒÈAR/’R¸RÌeÅ ‰%—}Ý$ÚòtÏJÉ~Ú7Y<3̾ɾ­-¤wõÕ¤1$ž_("¢ ­ÈP{×ÿjt4Ø3ÿÅð×xEprîùèDñ3.Sj¹Šî¼{Ýlëz–°ƒv¦5[+’ìý3‰ú ÍÓÐ$^4óµ%Ѓ>šw²ä;B„õªæQ ¿ÕV~>Æ_ñ/.”Ópæy0dOk¦*Ã[·‚Þ:yâ¶ Lç;~9:jü‰] ¿ ›­¨©:ì·\ìåTÉÌg¸§Jwjˆa¼y€ý”µ(~;=üÉõÛ ~;ôÑ¿Ÿ†ÚÒwH?ÞúûÑÓp4ŒÈ[zóÞº×CrâàEçxàÁJÀƒ'Ü ^g°¾¹ $·exoÝy5âÎÃËæ KR†þÔy/ˆêäÀ<%ƒ,ÿù¹šPÄ¿z,ç €c1øm¢wø–ÇÇG&šb‰ éïÖV =}I½Ò"ÛkÏF—]Ò¤ÏY3#1€htˆ³s {g¯íB›T3@¯¤ó®s¸ô¬óZø¢ãÌedI‹ÎÏ@ò% j)SáëØ‘~çŒs ¢5ûî_a“¯[8¾Ä¤½Ž¾ª}þ×òõBùÜÃÏçìç-v}DýõÑ•³>º‚†Ôg Wæï²™nÎNOÈWÄ£·•_wqFèÄK/Ê 薣„šù:Þô›aökÇEÛø;*l}ï,Ýò]`òYÜDr…³"›¼fû–·n>Ž·Êëg«Gq ¹#3üAFÝRþkºú«Í|88P³ÃŸSçåÇJ¨Èæ#ti ?t¯Ü[‘V ) ýÚí8-ŠŠðƒ1o ‚Eaeƒ†Çè+’l`ÓÍpðqý]>üèÿÍÿ¤ó¤n¨U….é†Ê ?¾™Ø¥vÚvJ½ða®SÊêã\S6I£½ý„µjIŒâo8^}åö«ù¾š²ã›|ªHôk²Ž‰«íáòÊIðQ¬;½^IP~ÎM‘f8¼M÷à}pD˜= Ô®Y(FØ™ã%ox a¸ÆM&jBý7ô¶ìŸòªùÿÀ¨“õ{è>ü5ÿøÜÿý‘aÉ*5Þ…KxnÂHðÇ•z'‡w×å©óÁß²ÃÆ¥Mò=ÚL¾HúøRÓDœ&?žc‘aâý·(‹1E,˜°Wo wFíð4U¬tÕ?Žh޳§Â ŸpjFì´ž-êéëR}/u {X‘µ"½®Öü¾Â¶\—Õ“]¶ šÎð­xÇ)‹ï!»¾ÑkFf$wçùøWu*x= Þ$ëϦ.?†Ç.ÖVI!ï8ÔtpÝJ’©›YåζÔsÙ»,Ù4qœ\Q…~ú%“ƒ€v‘Ñû%·.<Ë$P=«xH%ÿC$^0ŃE•EÞÔ# ®ÖX­'‡ÏÉjZɳÉXOeÓÇL¦}<—>¬f~ï+ךÅi K ® È#ó¸Üέ’T½³é®9yj!Ü·LÅÅÜqÓßø)/ Îµ#(á Ñ;ø4“çQYó%wƒg@À¸AQ ¾.#êP»}ŸÊ¼xc…<*[÷Ñï§ÐÑéÙz£âI¥9]5 éLªBfeªj†Òy±7öb?—¥rùýÎpÆÖÙ{$ûì5œ0ŠüÀ £ k§ˆ ½¹Ÿq_94­£TuöϤ´Œwì2<´Û°H—3®^Y®êÊ8WFŽcOߤÝZ`Õ^zô*Õ³ßT1êŸ4dñ€Ô-<0Ãò€JÞ:9©ˆÙ{êŒKœG>(ö¾»Ä¼^!B|ïÆ7ªD¶8AUCÙÓ–²Å>eÕ8’CÙÓ¤ìj«“ïË&¨|›%â±”=!”=0f³RóçáYTÞ#ÖFïNry­Ý1æŽçâCWíÍ‚Àø(V‚ A— E¹•1ú:½å±ðû†8*Ûhühn©}Ö´í·wEvßìtZj˜òr®«õiFä²Oë§;'|¾æ²|SIft´biªÌ­€ÔS껲ënha``å”ÛۉͲôð^B†û!@°fq>=]¾œñýs]²£2y°%"%fZSŽ©N¼^ 8BLÕ²¿ ·àÚš1ÍÞ¾É9°HC“„H³H;å |ÝÔ³æn— Ç4VÉF´ö;»—p "óûoû÷ðB̾„0;;¼ß%Ê€ÄJüÃÖ "Œ‹g.I}x“6ŠÌ Efé\k¸F¥E£ÐâÏq¬D8šC„c$ÂQÁ;¹=4AŒ$´³Ëçÿ[Ãó«eF`%ˆFûË}°ˆ½.f1E ‹éJ3XÌÒa²„š€É'†íÕ±XÅ¢žÅC,Ö°XÏ¢‘ÅGY§àëÓJµ Î<Ö?ÌçFXœfqŽE†EˆÝ›Ã!ÏåçqÈåü-É¢’E‹e,ªYÜ¥ƒdQËB3[ؽVvéI6ÛÆb3‹-,¶²@Jƒ²Ï]Ž(5š³a•¡+,4K3unfWJÆ¡¼à²,ffÓ^Ã>ª8h®vÎ{;ç ¯¦°J“µ®™GdnOj£kOØinç4·O0Í€ò'=V!Sù™µàΛbókX¬'…Yl`/jØ‹aVqŽ=Ìð…[щFRšpw9A8Ww*¸X–\AÙ¾xú?Bòâî£1kWÍ¡1OwZL}ž… ×¢G–óë$¿žfs5âsúËëïÓ±ÄößÒNÀD5ÿJÌ¿éæ¬’æß,óo¶ sÌ¿¹;&­—êæuÍ¢|NzßvŒÕrË_ À.„UÐdÿ—Ãxîoÿ¸Á ãÑïêù-¸ÌmÕ m‚)£ÙÞn™Ér¾³Wå¦1]ù :€Ud)Ò >UÎdY.^yp¦³çÚýÈõ|Ž|œ^Ò(€ 1«E`x°‘•PËPMFn°)a §€:ä¥}âàLø|éùxGŸ£ÊûI—•;{"¬u&‹xÇÛ}QÏXO-ÎêPøÈÒÔ9ÕvÌÈ—qõÒGªÇf†2õ¯þlÉfíû ² «ý×îqãû¡øÿÆ +æ E­„ªw›"`—_ÆMD  Q57UPPüQ›„¼ÆZZ@Ù¢ŠºYz > 2a !Ä6Ey>u!ÁÂ_&š<Ø"a¢…LƒžEÚ¤—­Tjk©§]•FrËaÙ5XL8Dkͤ6Jœ€T‹÷K$HUb÷¨ûø¨ª+áy3/a€tÀhãËØ’kÒ¢KšèÈ h"¨ Ò5¶éûQ¿´MÛKÛ„ÄÎDy¾Œä³Qq-nh7ÛÍ6ìnÖ¢E›’ˆA"$‚mV'&uƒR`d¾{þÜ÷ÞäÕÝ~ßþÖßßä½ûî»÷ÜsÎ=çÜó'Zù>ÊO1ò`vÙ°ÄJÁ_7gÒu™~ÕË£GôcW½¹i±Áy¡ÌnG…|K‰qz•®Œ.­ušô‘ÝíPþHk¼È”¬°¾í{¼ÿ£>>Fê$%ÄŸwxp¹´j@¬ ä…ËØ2">ŽdìOc¤µ¥kU \c ‰üO’¸ŠVÓa¨˜}:ÁdÐæŒÙTÉÄYª’dz@”í 1'óTŽ?÷àk~Ì»0‰r¾v ä6f 4àíÂ_Å”—ý¬(ûVWÿÞ0óxa_ià'sÉ$Ø´ãæÒZÇø“Æ¢kÿHãòÑdô<\ã¡Xв‘¨— ê¯ÐWÈÔ“1¸T?õ´`8£Zë9}¿Öj­b=7Äì1e„)Çðb>*SPÞŽPû©ŸZÔ¾€m²1Éô®üV Ž¿” ïçtošm¸y~Ôq`{àËÝ™&d[T[æç:ÕìT0Ö_„â0s¸,/Ò¶\O tTûRðNpæO2Óˆ0\“OƵ‡—yP%Ý&š!½ÒÔ^ñ 5§ô±Øêê3ƒé\J\2ä0¸ÄÝpð\¡]H›Z«‚(±ëJ¶…Ò êh{‚d˺™PÓoE³ J0¤2*ÔÙt6¬þÀ:|!剆fRô§| À³'›“ m)É®eä`¶˜þ* ‘æÒZÏüBÚ%)¬Wl¶à_˜wô=¹_rJÞ0±D×6ÒþØñïN¨lOœ¹Â d–:Ù¿; $Å#½‚ë#lÓ†@!˜ $éA3äQ(㔣êd³fÆË0íqQâ€"kbtÃ;‡3 oÕ0ÞÙn‘$!ˆŠøç:⟧ ³áM8•¦Y[Ó‹ˆ­…5jÆPéU(¥l¯…ã°é¾G¶¼Ûm±6à±'“ žº™…¦Ïy¬¨o€¿sPöËñ¤Íñ IrŠj^f}-þàʵo…Þ)8C!âì 0jXi¿Fë1f±…%y‚χFÏ>1z^Ϙù`ô¼àò³Ù"S³nc ê`Qõ3 xî@ôÞÝ4ÀaVÖ‡iÂa—™Å¶‡^<Á<ã½rš_9M¯Ô±HT‡¼{õ<–jL2DÓâÍœÐ9%8n6ãM°Ôc‘*–ûYa*ÄZ^‹If‹ÔòÊ#5"Ÿx*Yyg2Ñ ÉÊý–¬¼s&W>~e¯‰ó7ª„À|Û×?ŠË˜-Èøn&úlh¡Tñ~K…µÕL25îTf†õ”Ó“Æ«0 5šüwâÝÁ×#u2£ÓÐ*,vÁ›ŸK;-2Ö£Eòä@ÊÜ Áp öÊ›m ZûˆÕ-¦Um£#uÖÃÈŒD‡ [áNÆ Sßm^}68$þ7qßËdeâ(XráÙöÉ6¿%´G­’ǸKtAFƒŒç£gaÿjQåÆI fë^8Ö¬`ô,Gˆ­ Æ(¨ F¶¼¨ºŽòGµã‡6]G² v ÝíÒŸŸl*|˜çèÀˆ þ؉~OïKЬ%YáÚÁV{´4ú„]r¹OÜ kG˜5w#Á|s¦¿µ€ŽœÉ÷ËéÉ K!©zÒ9¾Eð”|ªdÊ0?‹¶^„ùAÁað*ï6};aÝ"Úø×ÑÆÖ@:?JX`­û `vè4Àf¯…ÄLÒøH™l jÉe*U[±»ÍR´xYf)~`Ž]樓¦Kt`h$ùÃ33“7ÛFb®à½/‘±Âà•— 2 i­ÞË rdq‡bºøÇ¶œŸ@ŠrB $/1s[DóÊbæ×"ΤԂóÝà²>cä|HmôBí«zñ“±*¯Ua+©#h«D ¢+À|8ÀtÊ_d$ôÙ®Ú–w8 ¿²—^iãWÚèÀO!š^'¼ê™×#þ\Ì’¡k 0ñ›â7öºÚ´è?G)ÙÚ¶ñlŹ:Jb¯ 9•’—k­.‡tú îû6ng°_P‹³@…)¾îy™'|Œ‹Øf@-D¬ <ÆuzÚ58»7Y'Ù¿a¤‚óóIxtØ­$uŠÑ° 1æ)ƒC Ü/:H´Ž¬q;òË¥&èâÍ È6PG@¥ø>¤¾L„4 Aˆà`‰à9ˆ³Â¸3¦bkD D_ô‚ƒmQu?«#Ò¿dmÁÌwÐ̶³¾½÷SªÀI$âÒûâqäF.ü§æ ;\0 Rh HA²è6ž# ê ¾'£7ߤtø$“8±Í,p "–w(ãìRçc>sÓ‰?öÄèÝOü`eØž0#øë–ê’8õó"Dí6‘Pµ$`+³ms£Cfâ×» ³³“3û·HýE §„´ðZ—e_OÃßLòd‹DH_Û¾éGÀìÐâÄ¢3íem¤–ž0ùðN´áx2Þ[†… ¤f7fÛßNçŸAe9ø’ÊUŸ€猯Iˆí¸Žp¤~’¾Kg 9ïi‘q~@ÒŽGNj¼XT7^,’òévÝ6K±¢X””R®¹±Ö©×÷ÜLÖ5ÀIüKÿÒÅ?Ÿø·rw‰Y|b.ĢߒgQ,*ôå=·ˆ^-ˆ® þÒ_[iXo1µ”ç›–ÂbÃxP·“Ò/é”V•CÂÿŒ×—¡ª ‡8”¬”¼ÕÁc™ ÒZ]OC¨!Ž&dÀå¡¢¸Çh—_Ïl³b!M }|‘Y è2@,Íá/S tÈ©š…[0ŸfæÚT>pQÝïÈ T/÷|«¡x…ÒÜV¢§¿ÀØ*¥«b- 4 3¼6€sûPÙGjœ/Áá¬À(ÜFÁÀÓè]È‘¶ÐŽf)—§‹`¬Ó_Ë/è&Hêyé'ÌÜËüf/ò›ß^þwÏâF–V˜å؈†UÚ ¢¤aóÒ01ü~RGˆ¾û‰¾©6-H¼][qy¨?Íïxo>¨ _š·ƒÎÓÞ£’øì@Áf}«?Õ€¨5¿#:_ð‚H r–àg%»I§£ õ‘nëÃ}ˆ/&£®OÍ >¼RµŸg’½©”&¶†øW1d½—OFÑèg`W+õ­1¾b£Ò·Î(÷•Þ¿·2iâYæýñdyRJŒk£^î«ç¼9yd*Cë|Þ98ÐïtÐZA/”9A+”Ê(­ ÅÅࡽ¸ÚFU(%W4\ûR`¾A¹*Èi=„F0Um°³¾Ø«fuøûï‹_ÕOÊ4¯…„MèsÉB-u`Þ€¤¡R®cøUýijIÖHŸ…ÁÃö€[ê{–Ø Ë¡“qéåªo•{¨X²xˆõo'+ûYS––2†:ÜŠÜÖ®s…0¶Ç%^oƒF…íE0|šÅ^mòÙ:ÅŽÚh/DoØ2Z„—ËA‘€³öb4"@H_–ÖýÒ4²§ã÷Éú±Œsúˆ ¢u-1¨ ¾ê‹BŠõÀ–Q-X9*~ *ðQ«NÊ~v6êZ&]écZ‘ñ}-@ÂV÷Òz\0#F±.ø°J¦[èâysÝšz@‘U"Øu¯Âäè*¸åØñÕNP@È‘ÞÑûÍÙ›þËy$¸LŠï/ìJÕÌ%ü¦€îF‰٠I*ür)+év¾¤‹FÚ0J1y Ý… ;øádh¥>¯äÚäq]C¯¤I‘TEâ.Va.õAôP˜:ZmxwQ„¥!0é´“ƒ­GAŒX ƒÐÛ€n×Óí%‘:NÐæË‹°æ*JÛíÌF* •„¿I ÜJ@Gi@‘ZZ!S’îÂq Èê}Ií 鲃ð-#§1H¿K'çxÓ?te~ã¤ÝÍø›ŽñH–ëŠxvÈ]¤ ·Tñ¬¯ä4ÓÿßZÞ+ç» 3¡(~ÕóþÔZKû°cÀÀ "²_‡.ÑsH錰q}Ÿr´oň±:&DE<¢Ä–ÎÀÔŸûTˆ‰}“}j­9²;+Õ/áóS€&nGTU…Fñ'¬ÝÐËÌ:ÊMNÇÖ˜ ŠLê¾€Ôe²·.ì­æ<9½¤æ%à›i…Ô-«”'Lj9/uœ¥ú$°Oô“ý[1òñ€ùæzsØ|Íè[4ñfd.ÄÖO¬Dò„=>¢r–c¢{‹¯fš+µò’`Ûã€æ j€¥sgvôƒÛ™eô¢_o‘Q èoèW›€‹ÀQ03JOT{J€iù/Šï=êä<3eÚÐ2"Ït‰ÏýÞñ±ŽÀþe‚åë~`O—‘Â{‰‰Â1G'†dµ³¬`6Þ›] ¹@.4HöˆŸ}Qy-Âo õM» 'Zg &Õ=e˜á•áYeƒñ/Ðëñ°šFèÒŽyÁÀtòìÉÁ¾ÆºÒY¤m``䕘(›ZaÈ+yèÚ–2:]3çáæ^Ÿœb7Á ãŸÀ„Bhd›b„8'uôè{³™…Sdrƒä|'¨]jt.…TÂß²ô ­ŸÖw3¼«ô%9¾¥¹9.&!†ñõ…wÁÂôµ÷½Õ÷RïÛ}oAbÒïgèõQ`Jï[ø¨£÷÷ôè{ï÷5âÞŸäûÐDþÄ.>cuÑÁ]ìß…øþM·j[6"-³y—s܉wÙã¹–)íW~Èê•oPDP¨xm;MºZ¥ËØê${ ùÍì ªm‰Çâñèm·L–FÈë¢ùb´ÑŒÿ„#yà záÇ<Œ°Ð-XB&udê9`Ï¢#!IÏ0õJ­$³ÒAš¸ôÓe€.Qº Óe„.p#õ£›„§_ä·ƒÁØŠ öAN|a£7ùzFHáäÜ,Ñ/èr„_Gû¾Ý_<‚^ñÌHæpÖ:ÁÆc73¾•¡È^€„ Çf(Ž?“G¸Gkíã3eÞsôcyÀ¾}BÆx/“ÎúàX>5ép.}i)äþãp5’ðH2ã*–«Ÿ~:ÿ[T̯tÚ®=¼–t œ/ì½ìàã*k¸p0ÐÉŽwœBü.'"õ¾Î®ýº ¿Ð_Î8²\§ `øÙá›™|P» ÍÖZk§ÎšÝ d©§"p@Ë9+–~0ã¤N¹mÀÜ´3€»ÂËRyÄýäCÓ±))Z²³á. åsÑÚGf€¾»öï)îV†<þ€záâJnº PŸ…2ñ/#à¥Ðô½ô†—š¦Ô¹Sý…z™Ã|Šy€G"Ç@ôò¾a-î¡@9\ÄÒÊ—8ü‹_Úœ‰!!o þ9®k__#-0A¼y¶Ñ 0Ša?Ÿ‘ÀºvÈS ƒ’ŠÁÛh»l㑌è#p¼L ŽÂP>sål(ð=5£=üÕ]ü‘–£¼¡¼ykõ›C‹86ÄE>ê:E “üöt…Šƒ¯Qx ®’é¯N+Üy/ºÈ¹™[s€Š˜pÝS4á#ç©Å´Tô h&qƒ¸ŽYùý§â¯>ê‡3N¡õ»O4ÉËJÚÐm«Õ7­÷Tß|?ÀáoôºÌŒšr”¬kÀZ8`K"'$3Ø çñÖ ­àëáq©÷¬ýOhåá I›+7‡¼¢LÕTXœŽHÓÛþr{bDpj"ZuC+ÄR”üúû‡†‹µðƒ(±0–Ä ñ¬¤ÛÆ(K}•à xRì;>ý¨rs60:|“Lñêƒ`xÔÂT夨åÊûÔ/š¸zØ(è½»×séÉA£Ð·¸/m¦hR)6BŸÅjòñçÎì£a¨rΜýPæµÖýJW_ÒÊoa81q_'Ïß ~!X£ûÁVvfô^ܲ’ò±¤RÈ\Ì¢ÖoÀÒ¹R15_7_±ŸÿYn¡YŒf4.ÞÙ)ºX¥òWTú p9ê<ôJ ïœëd Ïa 5ÎãÆTWÁI©þö¹xÜ—i‘‚•tP“ERÂ]¾Za¬ Ÿy \46›,n’ÜþÊ$ùÝHÍMˆ¯ª8x¥ÊÄ<àÂú:øS%Íç]íPL¶èut)¥K]ÖÓ…+:£ïŸ•䊿±0í…®‚5o)+®þtWÕ¥l¥—LÛÛy ©Áy‘ ¸h¡Ïì K]vÒ…MåítábÃ\—ò]¸jùÈ ÿp ¹º²#/¹²Ã±:]ا ]òè’ÏnWt)§>+¨ÏõÉžY•l½§ »ïl¦K]êéÒ@—­té¦>¡¦ºLT •pŸÃ…h Zîì¦0‚0…„É?Œ.û9£Õ3t:.r×ëó)´‚@ ¦!;&á¡€bE5`1jŽ®aÙ…jACººì¥ÉvÑåTmãá²"ÏrtÄUc–-Ë–I`1 ÔF© „×hG|¾>&º‘ k!еL:Ñ/Ç0uQF#\O/vFÚȽÄß‚[ƒ ƒàP®mš(®Ÿ(ÎòêK‡êf.–&9bg!(†­í¸¯‚( _t܇F/Ž}µ÷U*–Üm;îCWRÍ·>ÙqŸŒ؉'}¾¼g‘~X½gÃ]s# X­Õ$•0 &ðøjÃÕæ«ýÚUÍG~; È`!sýA¼\§ˆ€ã"+^`qG´µ|Ìgˆ\/€Ö9ˆä"‰ oöx°ÀYñeÄRXh‡xè5³ƒÄ!^›@¼bª.PF»@í&^ÏŒ®Õ¿ÿ!–ù'‰@,˜2bàUæßAû§Ó1-Øœ" !!ótÀG*{$áQß.  !Ô-0"^$hµ¦Nò¢À(*n`”#»L UA#`tBsÚJƒnä½ ®ÕOJWtbXOè­J3²¡=šRië‘H¤2p`ù 訃¤ .\@¬7ÃQ½ åcWÚôEœS_Ò …(;žë…æ¥ìÎØ­µÅ•Òî+¡ 7z ¦î¨‹øâJp·’‰.~Û´x§­W1úÇ{èpƒz[·L÷x.þìh× Û7y‹ñöÛ ºi‡œ™ÿŠ¢Æ Î1š^í›0'ðJ9)„7ÈíD Î"2]âdil7 qŒ¼´¿¨_Ä%Í#8*¹p¹LAVḠ§~P|½·ðb';úÒ¾è_]½[?#ôœ2zF•ñ1§Ë ²÷ïñ¨úÔÌÞ«ÛÐúH£°ñÙë‹zŸ?–¾$|ªf‚G{åå—×Ú½«L?¸M³O½–ûð^›ØçU2NçVÑÙnÙÙµÔYGè-¾QŸ~8ø3þ~ŠQhòl×û”Ñl’®@V’b߯è½Ðy‡!~ô©—ÂÓi,ôޝö(~êT*B`7¯éoêcJ4’ƒ§Q¥]+ú‹þÅVšõÛ@¡Ys/‡ƒ/ÛW|§ÓNéZk³\± Håà–ð XÚW Jinµgõ?š$'ÿÅ«HAþ+¨k§Ü°EtT™rÃnD­ï„òÈCÓô3º‚ÜÅÿ›²þ4ûá5xl?Qܘeˆ×6L¤ƒIŸ¹B{&©æÛTF^•î#@3˜º-råõP'Ì–öïA×̆ ëú<¼ö»…‡¬Qñ´*}f™`>ýR¥,¡JXh#T ÎÇ´¸nH÷Û禦BOÑåÙÅI¾G/;wÇ[Óøè:¾nÿ‘¤öU—AÖûÍí‚âÙo—EÞHM ܃ðmpÜyæIÄ)ÌmÏVqjÄæÝqS¥ºêu>0Å£¾YáosÑ6'Ï :c#Õ76·u>颔w2eŒn–€“lN  C•þwn¸FÎÛ™u½¬² ^!Á ‚½ü}̵¿â¼Ë,àý†+BGgfá÷Ÿh÷7Âù9ãÖ~€ Ó­3fÔA¢!@òHÇùùzcŸª0$ç"$ÅWÈi Ž«Ûï³ iÏèKdæãLžªÔǺ'¤‰€‘¹Çý‘›ÏÁÐp†¬ ™I Ž‚Ç+&ãžÏþ‘C‹áìèŸÆçÆß| AÙ™‹ Üù ‚ }–êH¹R# x‹Ñà‰^ÿ3äœxŠ•Â‘økµ€};“Æ!ŸÌ뤛ÕÀ¢„J ÙÖºþ4îµ°¨kž Ò¦¢Ãß^ó1ñ©f|j·ãSößN–jð¢Õ±§¬¯IY-Á§8ƒÈøržNÉîxWÁÍ67iÖmKÚXë¹p'ìí µ»ôÎŽwÙíéˆÁs²øÈsôЋ®Žw*ñQ·Q¾pryÀSà¦T£Õ¾Háý|&ÜC7>a6 Å+ÿBl¨Õ—ëüïW]Ênýè þ¬žµô–ꇆRØ)BÖ,ÿœAÃΗçv=¸j[ŧÎï™XDtòú~¸•[5f{”> kÌʺ½@¶ê*åfñYW!áúrG Ø{`« u¤àM¤õA»=İŒ›†µVÿ°²B°¼/ôSê)W`|<j? C™¬0Õ—0à…ÓU!•@M4=à+4ˆ øŒ^¸™{´Ö5yz±{XÐÓèR]Š÷n©~I ©Pàgh_Êêê.ŒŠ§­¢pŠØ×ÄÄuUõè„"ècrýÚÜ|ˉeõc –€.&îÈBà²,ÝLÀ YŸ€Ïš¬pØFÚÕNºì¢‹ítIoIPÀÈóš#½ éæDL¨Š¦þ6R<¯Ç„ª-ø‚¸gÿ9]›’¢ÑÏb‚|´pléÎÙ_•}]*ÕVÅ5G]úJÍØ\ÅVCᜭBe„¥ \lÉ`Çá!¢²HÐMš›-šiôëI‹,#- pÞö 1„ÌZ¨T¦=ü5i @Û+œMáYý›g1î 5~ð)S^FÇRË·ÚÖ¾´)hðkp‹É!…\“IÓ0È'È ˆ„ñ=HÑhcç­ø¥NåXfE¶~¨œÂÄ Íôf<ºHž\1°ÌÂ6 JÙØL(†ÊË„ ÍQ“hÒÓ๒¡¥m9JùÏqáцÚ!ÇٞÖ.+ºN¶î¢/³ÃA ÉXÝÒz˜V¶€ ©ÈÐd@¤R‚Š{Ða*KùÈZˆ“X'^ÏdM2: )±›Ì­²—Ö“ ½-ã)¡»‹Îö·íDý#4Çp°vñ¡; >g¿®"xp±¡ïIyÐå4À¶ h¡„d¾=Šô‰A(µ1N .Ç>1„'GÀõŠ6€ix3ÈF÷²3Ì;†Ì‹žÙ ÃàñSbx Í»(úú,¯åµÖƒÊ „B{ufm{Õ¸ ¹kŒ‰ƒú9ð¡ÏÏèÖZ÷)úÊ+õÍË£ÿkœ¡sŠžFÆF™û<æ0­Éìû•Ñ¡Õý+¹r%Uv«Š¨bøæ~†E–’toåˆÙ ÀhRç΀ӺA„í!6#Æ`©`$7èï‹ ¯èûØ,cDÙÍ0ÓÉÑ ¨sà ٙEà_‹Üàwþb¬´4õ1Ò);<œÿÀP]<ÆdÏì'FÏâG»h4ˆ]¤"Ð3Íb° >Vn2H…`ªíÅU¨ÑSq$d:œêßìå²cç\¤?e²³&{VíSŽÚâs ÏBƒKMµz¡|§g¡@(Aà=~‚WMm3÷½n%‚}Ǽèò:i &ßï¡•í´°0vb~³Š=©´-ŸGÜÀl©û/ÏqfXÌÁ2Gj©|¨BîKàéFú<¬}Uììp¬ýàºu¹âvÞý:“ƃG¬’¢6Ný€3°‚\uTr¨y»J落Ch\›|ZàIJ’ "÷/÷'Û¿ }Uâ¦q ÖÜË[šµAø#žÂËðG¯"Ãá“8q²Š¡¦m9,íy”Z耜¶A8aÚêñÝîH³  è6j…î6uô—Ç]vÏdÚ Hcãêw&;¦ôŸ’;ÒFM¶ügÜÉ–ÿŒ'›¦ÐÅK—Tº¤Ñ%.¶Ÿ2ý"J™EY8ë=f˜Òh†)f˜Òh†)&g6: ¡XàÚš i2Âhþªã£ù£¯-È¡lþ˜ž¨Å·=Ùaº}áHÿÐÂí~褄½w0&–s ÙÓt6b¦¤çœä³RFãXO— t)§K]tÙH—JºÔÐ¥…:ÞA·QHøNz¶‹.ítÙK—.ºp]ÃnºôÐ¥—.¾d‚r2ö¹(ûÌ¢XL—%tÉ£K>] è²’.…tYC—0bÖŸGhÁL}àH@m ËVº4Òe]¶ÓåõÑO+>@¯GéÙ0]Fèrš.ct‰Ñ¥˜¦µŽ¦UJÓ*£á­§Ëº”Ó¥‚.ºl¤K%]jȺ›þÂs;YêhA G˜æ\Á¨‚G &Pe×›û•Œ?†üÒÕÖßr5bw¢ šw€.iú•t©¡¤[Å /ò&Ã?%]Fäâ·Ðâ·L²ø‘:‰PÍÔ.ð…Ž óõöVÊ'Ì/ Ëĵ]0þ´P4ÂmôMXJÁˆÂtsGBê +sYï—”@#çí T¶Ì£]¶s6Ê<ÚMçp=ÔÐ̦ÔC·{é¶™yþŽÌuTüÙ2^¹Øáˆº¯@ýÑô»æ4~ýÿrY¾i¬ý¢˜ÆÒË?Bû3 ™Ø’åÀËNHðäO…ë„ü©å[ÎëD(ø ü¡àú±ò§¶/úóá¡RûC¡ËøC?øýÙý¡àÈØò‡BßHð‡B—Ið‡ÚAÞ$;œÒ ›€] ÈÉž?µf>@‡ºmäÝc“ó§ÒbOô†B\þÓùS›i’¸ß€@4LŸA €FÇ9vIÒª’²tˆŽp@W(tÙYë´ó¢®P˜$ÅÌŸÚŒMºAmTH †O 2é#sÑI¾A_YÉ_Ãü©ØÍÑí„­*‡Ý ²ƒ2Ë ˆtƒÊ{eHÌÃbn cNôɃ¿À'®“äOC‚º oM‘?Y‘•?W µo(ƒ™=`³GCÙfrÏÀnÁÛi/<€ü©à–K!|N™?=(j=!Ø^"pl°dÔ/à@;É—›åR×þoO2½òë õ'$™¹ü¶ÒЀ‰“’…9:¡3|ö #mvÆØ£~\UàûZkGŽ´c^'eàödxZÜSŽ@©]èG9¸ºú„Áwx/OK±ê«Â8—rû«ð¢´ycî ­õg\ºUrk= éV -½7²ˆºÛ õü‘zš;Lxƒvûàªmi‚°@v§ÌÆ#϶Êi×n7·k- R´*HÐe#5k£] ½Õ°õÁÑ£ ²Ä&^I"È–+˜çlbô,zJ§ÑA;b¥i§D–>x;Î35Ð×A#r›Mf6›<›M&6K݃£‹¤d³ÉS²Ù®6[I†×‘ÍÖ0›M¶Ø,ú§#›M–lÖãJd³à:g±YpéáúAÀl+%³­!ܨ1™mØd¶ð9‹×†‰×ÂWtNûÙ€ß^ ×ê_òùJ Áœê¯ëK*«`ïHT$À;’í°Ò‘!Tñƒh¿‚U²y32ÇF½õsÈKí®‹˜6“ùoÎóa‘­Dªü{£äçàE .ºÆŸ‘¸É) _™i ÷7Ƚ¯œ¥BvƒFê#œ¨²5|èØËŒÀ”‘HÎÉi™Xw*ä»ÕIêüN©_ï’±f Ø`ZF @{…({8œ“¹œAú'7k ®„¡Žh‰~E°Xm#í/dNabI(#.ŠÿÄüÌî–ks)#Yk½)¦@¶1èG9ˆ' ƒl¦4˜ÓRxŽÀ,8¿È¸Üsœ6”,GP¥ÈAz,ÿ‚ý2k‰*˜1U À‚®â…Õ¶\Cî.ê\«0ê´ITY'×0•QŒ©Dõ=’ij ë'îëx¯ø­öµ››7‰RÚ$Ê,2æµZO›D -%&ÜFœWgS^Ú6&ËP5|q²¹=O¹$MxÕÌf“'K>F»kŒ¡$& $äf²r¯m,B&¹*ѕ p Ò(A|‡³*AL$öQ"¾MsË]MÍ”Ùp/Ñåà‰)³a‡O%öþA”l D'Ê!Zƒäükk#¥t{aj!-4È<Âk&4ÁÅHꪯ[¼n—$ËSwçàÞ9_ξ$ìf‘³Ólv6€£{ê ñR —= `íêÈÊZODÏ‹³ˆ¾—À&'EÐ2€M @ ²T†Ù’×"m‹“œÎêñSÁÛä`qõaJ#ÆÛÀÚµ‡o‚Øwdï`Q6§÷¢@å¾â‡!Ùö½ƒŸže¥&ÁšWˆ°ó~õm Û” ë!’J¹°0Ê]5=Uè0#|‹YpXIµÓUët.€Í¬¤Úð—4K%Tw1§i%Õ¶™©"lÿ Sª/Nüe¿yúf‹]°wö‡â,Èå(Ζ'™ „´Èã‰Ha4©úG”U{1í¿Ž´‹j4Ôù¶'Ëášx(÷.Í0c‚¸ _ø0ÑàNßäAñ‡P¹o‰þ1¬ ¶¶÷aT9+gÉ +iQЉ,$éñ$„eo W>sæ©,'×g9M”•˃qíb³½•^È’‚7—¹±ñÔ%ÄS7PÃí–àMõã) Á‰ß( ±ȸ)ÌsåV°ñÖTáÖPÛ5V·SH¿ô}x¨–‡[d‡Ò%qÌúм5ðà$½b,Mo£Ø }•F¡oãqŠƒærÜqò¬¸SÙ«B4d®>ÆËI`wÀ=®¦œ<Û÷)ƒ"WBg•ÀU~ðü‡Q+GVk[~ÇÂż/òp ˜ë$,Z‰É\šª_)$€/"¡‘n½¸„·‹%ôJ¿ÂI•Šù+ŒKXB\‚›I÷G8°.¶VÒ¹²pYB4vb}X8Ö27°Øô Î.õð’3ü웉OC.{-òm'Ú×ÑSéóH®?ÞC.é‘2ä”û¼¿uÑqÑ8CŽÌîÝKxN‘Yë+Ðõ1_O³Ùs>·ø—&þ¥càsÀ·Pü[$þ%&ù6³Y>{ Ý-ÐÉû,ú£«hÌÒ¹‹œ·*ÍáÂ8yˆì÷Úøï’‰¾aˆÒ^îGë|J$U(9d4Àì‰y§òlÊ/2xLÙ&]l_@ëxÀ—]Åu¥è~c´#»Gü¯Ò»òŸë{jCPH)ù0 I‘a3 éLÎpÉ–´Ù‚oÕGòá4¯³6‡$âΦ¿1Hλ¶é6”‰¥¾A®?ÁFuá‹})\Ä'Aá‡dÛ;MŒXhð­ÕÁø%ctqL]nÑj¿ ¢BÁÎÔÌKö›¤Ìse¶ýå4í/ùˆ¤ îâÐRª'­§}£lü¾ñÍ¢,3äwÐ~;FޏUa= :dÖQá°TkX)“øëa™ÊAœ‘“Óa°Q †Â®ó€0ë¡6ªŒÝDÌ–Èå!Ú·Œ|X±æ%´¢„…©Á!7Z*@>Uàœ|€ÁxÄ,õS¦5ËÜrÞÕ¶î08ùŠ™ª}£A [(U»)àpoÀSIÒ¡|í!_{%æk‡n(ÿºy`ø.ª*c§Í2ö¸ÜsqOw"÷T¥â‡åBþ®!‡-x~Ô|‹é-€úŠïrOô^ÚÆé—ªÔ/‰¦ÊÏäKe‘Ó]xåZ@P8高Â$àP‘Öe-uƒbÿ„¹Ô¼¼÷S+ÌëÖ`»ÜÆ’§¹ÐÛIÛl ÉÃÝÌdð¸Æf2øæŠÃ3<ˆØÍ¢(·eš‡}k&ˆÖþR¡`æ&úcç Ë”nQñµnVš K*tÄ눩טüµÔ…ìt%åA÷°Be™y¼Xkĺ¶ƒy5á ^µŸb´©ö‹Ôr± +·ùp.ŽyQ’-/yð³þ½å£þ÷RÿídHÁ×ÿ)g7€h:¿cp¾Ð)…Š<*øY⣟ò•Ðëý¶×¿‹°eÏ$üV1Ÿ™ÐY–›¤^®{ õƒ­É§D¼¦Ô$ûPÓè="ÞsÐ1ft1°È aµàûtñÈÂû‡cnÇÄøÁ]>u:Dd–ã»á&VØ3y€›AÊ…qå—´çMÇQˆn'5 Z»¹õ³Êïë‰ÊSÁiÏÌUE¯›9ÑõbçœÆÈ¨FªÈ\*8T¹/å9…’k{£ä*¤¥¥ù¢ÝAIà¢"(ÐÇH·Tºô‹ÀÔæ†@ªyÚ3WÂwr^\¥/òaª¢òD×çˆÞFò¹ ÿÐþ‰‘G˜=¿Yà+ƒè-ŠYQbߘ–¸]“‰>+0}ÊÎñþíï—èÿN¿síFÐmTy²w&¥W^ lŽÎ$Ÿø¥(ð«¬ZÞÛ`þ1Ûæ_Æ Õp4+/u’WŠ_BàŠ7;sjfÁýôΤ^yS L«™uµø«&´Éã ÔÑN€n`ñòšY ĵf D5Vxš–ˆÆŠ”¦ÿiºŒÑÜpãº^ëÑç®33œô‰e*~âÌ2·',þ¯¾ñÇÖDücâßiñodÍíѲk ”Ö[Û\aøÇš`4¡ªÓŽÀÃ?‚Ý4؆2ø[rüC©IKxþ Ãp‡*ŸJq®¨™u•ø+Å(x*¥©':ĨE¯#R3ëÓÜÀÛt¾ZùTª#໡‹ÚbÁS©MmøêN^›Á;¥ŸMÓx2A‰ëí:PBŸsŠwÒð£ø©t}.¼·\ß=¤,{È©vçM¿oTŸ›ØãCÎeáv-?ãxo?ü®ƒ×á~y?A~€.Qº Ó:ÐÇ‹ŸJ°ocØï”°Ÿ°×Â?ƒõõ ¸GÅ¿ñ¯_À¿?•·ZtR÷ã[¡ªGà;†¿ûjl*ƒ©)CªØ¦œÍÐL”/fƒšªJQ‚‚¯" 64KÜq§ÑB(¨é¸n€ÈùâkéMKªÄL žò5å‰ËEŸ¹n5x¿_üŠÜÓs×W¾úÒ1.A‡F‰Û(ò<ä¼Ðu5À446M{0"Ö)î«]¹k–›ÏœQÏÕq <â\M aÆb³ñt&-?“`ºn;åMΆ>M7ÝAn”‡f‰ïÒŸÓR³$9MW¬xÿI¾§Ê®!.shýž‘ØÅ>Ë£ö÷Ccîà‚Τ…ŒÍÔ܉¿  ¼Á?òÇ7™_üÖEà´Í×)çëJœ¯š0Ø¡4º«$Ü5–¹±kÀÇÅ@¶sa>6äVȤÿ¶ úŒ_ñvüðK{,~Zä6²Mæ7Ì}ô± ]Ú3½¡óbmŸÆµ}rƒX[}LLHßsÿïqNç]ú•8©óŠ?®ì ?6Éâ^-÷Û⦾Lº¾—[ë;Õ—?ο:þ}½—9cü *‰‹¼Õä×Ô0e’†¸Ôß›2öå^ Á’b[îÙ°^Ÿ`½W¨´ÞÉ´Ü—×[ïŸ#ûÑ™¥ªH†tóE±PUÌ¡ÕÀ[ÏÕœKÖÂpÂ÷Њ™íÑ$í™n½¤ÿièS÷›Ò´Öàc‘¯¤ 2ð•Ð9gp.Ôû\îÎ]îÕjW Àÿ㔡‚PU¿#8 eŒ¡¿Ì~Ip³•º8§£êsõï*¡P—ºµÖ‚KÕHñ¥½d w™[«MÆ÷¤.Í-®<Š+›¾nÜš.v tÝ7;¢‘9rý#iC³s‹F‚Óʼn_[¢¿<ñ‹õ>1Z5¢ûO%#ZkwÎëZícðÂ4Þ]C7àâçMFÞCôx–|œHÚ€^r²ÏWøs.T­Æz…ø×¸ †ßïÖýc¡½n±çfþÓZ+v'.øþž9*_šg”xnç7bkÖF1<Ø?&öhÉpõ3‚N)ÔHµÄýÐ2Z±.½¨¹³ŒÃ¤²çDàwÕu‘` ákD½K(—Àª‹SRuoy¡[(¶Y*ÝL׋³ÜËsïn®ìÉŽ ¡*´/5ûxnU³ù7x½¨E@Î÷P•ǘ.fÊÛê~Stª|@æ?‚ü %ôGWB»Êyª²éûO5h…‘B0]©óŒG¡]cD ‘Q8[5já™^˜¢ø¢Q<Ïmà§ôb·û¦¡,Þ?üCÝñÞ…_Àî<󌔌ýö­µÏv+¤aZ]1tPÕ,¦âo^©×–Š?s:«Gîn‹w~Q«õÚ5Ð7¤µzˆ¬VtSD]•ë gè‡rŸ‡·*_«oú x:rÎW_!Þ¦|÷Þ»Œ¢Z«ç1½hÇòœó›ÞϨjÆVâóUŸ¸{îS¨ó#j>€Þ›¥{³â,U/ÎV‚,·^M-TÕìÎíô7#eûwÐ¥æÚèQ´Ú¯x´Æ­—lßÕ‹¶wú·³çmú”qw¢ûVÝ¿MkõoÍéÕ:´g:t¬ñÍžŽAÏýo!œui­ˆ"ú!ñ×F¯Q²U_ãîÌOA–rwó-¡óÉÚƒÃ*²úÍ‚ÕwÖV2vø•[4¦E¨æùåóëÅÍN Êl?¾òü¼ÆwJ¹%ýZ ›TÏóùr|ºŸmÎ-êÑ"¾Ÿ×a/âÞ©§þêsKvi eì/TÕà,3ŠRôzÞÞ½½êoŒàV­5¸MâOJ¼Â»Æ(ñÆ_ÕýHŠZ­ޏŠR”ïzÅBl¯|}èý½í/èÞµãßx XÁ6l~B¬›ò:áVU{Ü_oÕçíÒ꾃„ÒìT–¸«ê@Ü_gøërý]ZݵÔÂ¥…ulQ-zãþÍFɿܒ­îül¡jáÿ…-ʱÅ@Ü6ŠÂ¹EýZݳÔ"I û±Ål1÷×þš\ÿ°V÷Cj!¸ûl±[Ä⸔ƣ¸Œ%cZÝ_‰vƒàÇØÌa©›êþ­FɽÄĺÚuŒ bGØ”-/±}÷µÐ1 ¸n-xJè‡Øö–Ë]šBü–Ð}–xOÌ6Ÿ¤Eb)úÍîÎeˆ¢¡ª­®Ì6ž& ºÌ@hD`lGúEsãvo$ï'&6ÿ…±y»ÀæúìöÁKœ0‰Õƒ§”qXÌPŒ€¡¯~RlÚñՆσŸUÆa0¯{äÿmØ<ø$ÎH`p¾ƒï‘ òè¤ø‹çvüý‚Äߌ)ð÷ |£ ÊÔÄwŽ…ª…$à37¢3Æ~úÛ%#yf½ÕÝiböalvÀ„ö£0m@ò¢ºÜ"ä©&’cx²¿×j\!ofÚ¯{…ñ=ðcÃ?`5,— M´„Ñ>p»PW­†dã¨FHZÝ*Æþ€€EÌj¸ž˜¼¬Î.þÆÈ/`ظۢLœÂ6†"ODÕ#i/Væ^éù®æÞô¹Ð )âêÌŽ_?¢Ú%ŠP¬Õ{wD[æ(Ž&¸©c[[êU±šÏŽÕhÊè>´¨5«]ù£ûPfÅjV¹Äè=FUìújUï­m¯r…Ú]cN¼uSröqýBhŸ;÷nù6­}(ï %øµˆú3¨˜äÙ§&+FÕÈ7: nt΀]?â­%Šóê½àFµ&oNrp®Q0G ]oŽØˆnô Î\VûZ•×(~\lSû܃q‰¯ô%§VÛÒnÃÐN½ì¡|S³ÂiÂúv¨rŽê,¯)¼Ñ­d¿ ¼'ò¤ƒ¾[°Ï#^$1ĵªÓðZAŽj¨õ¢+]}|™h_ùîÐwp<øvÕ×å›g:U¤$lóáÐ-õ4^WpiÄû³Ž·]ûÔy.1šyÎ$G$ﮎw8¦áÌSáG¾€†<à—€Ç<þòˆ_)ËÚˆu"÷ jýÉ#pƒ$Á2Ïtêù•ø"\t·àSFјµõCúAÀŸ4_‚ä^éü¹FHÿàGôfâO¹øÙ´ñÚ ê}þjÚû€æŽÜí5n‰éE§ãEžÜ §ê È¿{ʘ ÏB{ÔÆò˜®>$žTŠ?±éXgR—xJšËþ5t9+yÙq–†#w FëÍC7`s­ö$ò…1!àEp–c‘Å’'WEò³r¯óòdRådàGÔ)'³6úóÙb2pSǶb2Æ,ü³(–{C¿.߆ѽ³ùí;£_ƒ·á¦Žmámlœ}&7(,5ú˜èò˜ !]ýgPª¯¨÷1êÓ#]½Œ\&hà²ä ßüÛ=”#Þ åý³3ø)ñžÀ@xtGL÷NãÅÓÔ¡¹ÔÆôD¼÷ÉN_!Qy?-`Á½ŠQtú¶øu°ÑuCñ8áÂWÞs8𢡽)&hC Å‹>oPÿÜ·EóB Û—}\´Ê½{¬êÝìsç9¾$ç)C…yI?X)¸ü™ iÓÝŒýk¢÷½]’xïs#ñ8Ó=äµëÿ‚Rá(M`öXåÏpèÎÀ§x\ÁKhÈ_ÿвºQ&ømjœÎmw‡n@ k #~˜!ã×ÁŸÑÎ+ÅFK?cB¦³Ì°¡½žÐ h‰ ¤Æ¯ƒÑãØ`ƒÙ@%üT$M93h@?š¥8ž†ÏF£AI|ÿdŸ_46‘[èf‡únó˜Ô÷þÌÉ©¯{êK£ý\Ð_÷Eé¯Ç¤¿ÞC=ÿUúûÉL“þæÏüÄôW0Ó¤¿·füÏ£?XŠhï»’þ6 ¹©GÒ_ÏTô7sìãÓßHŠÖμ‡ô—pïWÂþz&¡¿ëÄþrúë±Óßïß2‡,èQ&x·EØ6P(é/•É-2=‘ÜÔñäV>}¹õNJn3Ū?Ýc#7´=$ÒÛß›ôöÚôONoo¹MzÛäžœÞN\”ÞN\”Þú%•]‰ö´©)­ŸÐá­ÿ4¥¥ºMJû·iŸ˜Ò^ŸfRÚ¦]”Ò4‰éÑÙ*Ý élþÔtv9É{SКÐ*An–ôæ$zƒ¥ˆnô6»O o¿¤7pÍzûÙézû›‰ô¶JЛ"½=ðîDzûÒ  ·~¦·9vû§. ‰í)ÆñkxP’Øî;iŽWM$U,ÉÓý62 3D:ø¹I¯$r:èK2éྤÉé``:¸ H`à¢$•$pEýEð?ú_Æÿ$ ÿÕOŽÿª…ÿêÿTü@üKâÿ·û>E%þG§ÄÿSÿd»&Ê{_zGàt2ü`2ü&àÿ 9Þñø/–äéè$øzq•Ç(qŸÙ-H Î$ý.Å‘}&’öüŸ@û·&ÚW;'GûaF{±0%#«s.TÍœNÀùœ •ïÑu&H|ŸUÏgèÍuâø xGm{ ÙXî›:[¬ŸË(¹=~ôm~S®ß­=#rýèí¹ñà=Ýñió©;B€ŽØzõëf•›0@ÿUÌõéè€}_ž?r~¢˜ð¼V™ž§'…çé)á96<Çþ±óŠ×Å’gÀ`?/¾U¾}gtè‚ãb¼¸ú?Ç‹ÿœ2"/]=œÀK¿añÒL䥳‡Š/]5t=lpÜè¶xçõo‚k‘{ès‰·ßí§Û— þkñÓ Ðx†|ÈOÿ–r5»}èãJXR–.À©räža»Ÿ„ßm¬qk­kR”zð´Íng–­ˆŸf+âK’ˆ÷P]ôð/”æSeS\í§°iªÙÔkoš.›âÒ~›¦›MÓìM áç3¯Ħ ͦ>þõ’ÍuKŒûãnží1ê»r¢ÿÕ$¾VËUô&2Û‹5u£»‰`(ìƒåHq¨–ÿ±ÜÓþXâù4òÅÊ7–§4Ò-ÍXîmZ*è÷¢ËS›ŠÍGiMëðÑz”ÞTj>ò5•á£tz´°i½ùhQÓ³C1¬¦róóà “n,_ÜTa¶^Ò0;­óšöšò›ºð¼å6–40­lê6ßrË‹›Rªä£uMÞ*xt5=*lJ5­iJ3‰o•6EÍËš†±Cp}Ó.sÐ0ûcù†¦|³£ò¦ìè30{ZÈäh»‡~ψ wÇ$þZëýîù‰ëíøÿ°ÞÖ¢zí‹Jƒz¨Ðû­çÇî^Üÿmº}4bôwDúüÿ£sp*Ã3 ožûäp Y§Xàšò¦Š…ΞDt&w:ñh»ØÙ!å©Ô¦ ·j€ *XJ¨I¸å‚›·®¢¾6m¶E9¬t ‹”'’Ò’¦zóQ^SƒIù@[ÍGMæ[)@&àš¦mæ£â¦íæ#7ÐJ³ù¨´©ÅÄ 'IJ]ß´#aŠH%—'Rr…’‰”¼ÑFÉ• ”Ú&Fó%FN¿è9~D’¤EHô@Õ!КÒÍpêØä3¸œ36-4€¸Ø´Èlb„à8¤)ËlÇ®M‹ÍéFòìN`!ÈÅ+y„x ²ëÚÙ„¯„¦•Uò5¸ë$jør…E€¯ŒšˆòØZ #è¡§?úñéF¿RRÍñÀ ‹jôë$ÎLB¡ªG`ŽåÀËdAŸî)°¹p”6é±»¾"ùDâ8ãgþÛÆyâ5Κ3ÆVÅH=µÇ7MØã¡$¬~±fCû®YîèÐ;°¯»ÅSÏñ ;zœþÞç¿0ã†ÿB›ãºÿ½JÄaMôwïHÙøºÇ!»“QÅ€8óG‡ã‹o*N`Öèú;4,OáµÑ¯–®q‰Žk:ú¾±£ÔÚè͂Ѯ¿ÿ?¸þßþÿñíÈ=§-Ù>qîúãÛm.·ÖèÄiÛIÿôut>Hî<¨? yQ{æ6^rú¡¥¦¯ÝpÍ=ÉÁYÆ*U/Ð] ñ&%nã{žŽ÷=÷¿ƒ>\Ò%ÀùþpÕ½¢Ahwš^Ò&º u¤ëE;ŒªáÕìæU$²6­Õ“¢Ã¯†7E/i6ŠÚ Õs¾j.ªó·D îrE-ây®ç'AOÎù f” ä”4ƒ›ÄÛ€z¸²Åð dDw~¯Q2¦§h­þT=«ö¥àl¡ª Ó»c¼`²ãF‰½³ši÷*k£Û?pédŒgîô ùyðç¢e=è89µg´ððL“½]Ì%ª:¬Õböæªx¡äþá•¡±díAð‚‰ûj»À£õ¥ÏâåÜ›×k‘sSµ³ÓßMºñÁ:-rúoTíêô÷Г|R¨EfÚü7ªÚ;ý½ô¼Ÿçk‘—¶ç{;ý'èù |¾˜ Ræó.v7ŠúñùªU䌭ºZ?# {ûZPX¢—<PJ`‚®ï¦‡özœ£•o„ª†…®ZíDx¸~´(îï}‰Ž*#9µ0fÚ©ê§Kâþb$0Œºô³viáeØb/¶(ˆû{Å\`"u7R U cô|U;¶X÷÷h(êbè,1œ¤…/€_AÕ.lQ÷w H랣ÉZø¶Ø‰-6ÄýÄ"À Ôm7"ðþø›}&»g:u³¹ŒÛÈ1|<Êh 7)ˆÍz‘\¼A¬èYÒ¬—ÈEt¡·ƒh#— =µ±\˜ÁZ·‘K1t 6h¡U¸ ]ÑÕ߬@|K¨B#¥C/jÁx“Và#¢ScÕ"v8UüÍ´´®•¿¢åxÍÁ˜»„{rù»th*ðC¬;÷6±6åæÚüRv[Àݺü{±y¯…qu™¼PcÏkÌžÛ±©ÀÜìY¬Øû¼b5Øk©Ùë.lÚmQ@Ý?óÒ®Æ^7˜½îĦ‚„`¯b ¢iv{äžF»-e%:›z´gnöH‡SÁ¶F®Ù$8W’±VêoÐc¬õt¼ç¹ÿmäXç’—ÈT¹õ3À#•ç Í}izpXŒC/‰é%c¡³‚à1xN<º^öþ”z"xÇó‚àïsHâ Pyr¿'è½G^Ò. S@=èÉ]+HþËØaÜ+‰2Øï ¢ÇºgðÍ.íäˆo ’‡EEyÞ>À1F0Šo ’¯—Ïáýnð”õänZøÙûø(ª«qÞ?“d’l˜6 @Ð(D@‰¢š?lÀ@È’¨mÓÔZ„™Â&' ™Œ«±þ©VkµÚ§¶µµ*¢&à“€µ5‚Õ ¨QiuS‚›@"ûžsîÌì& íÓ÷ûý¼¿ÏûùÙ’½sï¹çþ9çž{î½çžë­¢ï]L6_Œò[:Y Ò²\•vUjSe,㤵„±8ÏúŽ"íbã¾­?û€ë·±>¨›e•Þ.ÆânŸ±í·œæ'™ÐÉöÊyJÅÛ7ÔGË­þ‰aú€¿ÈÐqh6J·6ìƒáŸK@¨Œ€ _zr+Ÿ>#&é 0Ž€^# µ„{ço/iˆ¶P eºs+‡Ö¡x ç`7]{%I ´hò(“¼Ï2A¾ÇçlT£E:d•ŽQçY=1òºÔ m#ù^jS:Nð@Ì7cäs©AÌ úx ^¨T)}…Ñ, ¥‚Hæþ¤J¯(ñ÷.F*CHt(Ò+D®w¹¾²ä p/01bí÷Œh]Ä<¤µIgrÓu&õ~El%.ÒK¡ŠÐÇ£¼yç<ŒâfÂ[fâ=€=Q×eC_œ¸Œp®5q¾†Ç¢#åÎçu‚Š™„³ÆÄÙ†ÝÑñvg­.žŽÚÆe’~£ßRÓï¬Ñí(¦µ…˜ÂóâLç¸ÑäuX„ûÛ˜±˜üã!«p‡[§7Ù{ñêÚ—¸–B¾M³É=vyÀ*òò€ML Íoõ-åm¡ËÂ…¼Uœ;£â(PN;®F… B})¶zc+ cµ¿þ˜”^ßVP£u…FÝÈð §„[ Ü©ÖMÐx qÛõWxÓ­1cÿlªëR“Pù ݬóã°úbŠ6…Õˆ§êÕ”\µ´WYÊ…Yÿ@t‚Uµ+…ÎöØ•®ˆû$u¢ü*q ó }ŒQ è3Ô»beù¿ ™ã³M³å4ÿÇÐ+sÔNƒaA¼˜ˆ”¼4—ê”J„Zˆ„º :~‡µ!µÿ–(½¦Aˆ^ÉJ©¦nåo_`î74¥_Äöo ú%ý*4ZÍU¼Z,‡or,ñZGR/g£K¼ˆê›L}xkó°Zb”¶ùGli@’*-§-Tßø3ðï˜e-âXÔ…±û|ì~ž…Äë,taؤ޳QêaOEiѬE©÷ïЮLû×´«8×xûwé7ý»èw]íÿãèwûÙôÛõCƒ~c~‘M'µ5°ÖVpg“qÔ02ÆŸù6 vüã;þîüÇÿ¯Æß£5ÿ£ß9ÆßÀÍýFéôûùñ³I7zéQüÆÿ÷ãÏÑ‚"öf¤~>yœÖ‹lH³Ï­~ˆªöÚ—9š²Ö³í¨vÕÃú²©vy« .Óºì#Z1e@P”=çdÀb(hãÏô}ãXÙÞagô.Ýv½zÄmÎa7«>I©îÃ[ŠÕ'±õ±•¢.ã”ҡи–"FòduŠÎЀ)µ´€Ð˜~¶ÎŸJ·É'œ=Åå®Ó§¸“ÈÒ¾uü¾ˆ§¦:•«ðqÒï Ãw¼RDË\DS;¤úŠó ¸œ¥= qjaOÈ®ºOÊìJW»f ”Eü‡¶™þ̹{îgK¶ô{4ÉF]ËZ;÷즃¦lŸ Ð.V7:Õ­y+ÙÈk¢²õÙèÒæ} õ9Á¶&ø7:1iòÇ„[9á?*õ*ƒð÷Åa{UòÂõt´–¹š‚—>âÖGÔØýéÇ1r¢Ã§æñ¡/ÕQYí ¿š‡ÎŒ¸ö6öâý:lµÛ¡Z?nhvúÓôûOþt3”aÜôóòêôoÎsÝ :«jΧóïïÃTr8’«Ô=´/º‰lâ´7“ÉÄ<'ø' fæÉÇ<¿4¢21êbŒº3A¿_Ø3¹{îCÑoÏtˆX(4á>@€>”=¦?o–=³‡Í:‰‚b{ÜÅzã«´÷g˜Ø‹ª%« (D©|1íÁÞÉ¡LÌæ û}Ê™]ήZ„ºœS%¥)Ü¥ð“®,º?3à—õüÛ a£þïô[ôæ„rÿÜOM˜Ï þ-CçªydƒC›­õ {túï†æÇü!ìp,É"4=`±Ä°fYhî±1ܬqj1g\ëË>˜ó&z³¿X¡»ÖÈL ®Š“÷e¨ Ò„g8•ÓŠ+-?çËmïCE}w£i*gP/òòNä,4àŸËz1TiwÅú§k&Þ±˜šRï81“ç@jÇl¨Ò•{ó+i÷ó¨Ãb*@L´l”ÙaûØïñ ñ cÅmÒ„•WV¥½×Ê´×6QÞc3*‚dòyOÆKIª{ȘÝ'cîÓZi¼È{œ¬ x¿8ø›Ø!ay¾ß`yƒ#: äËoR€ßî‰!•M*Œv,Ì`<ëHšƒ¡¡‘P| C#­þFN Ø81-f„Ö(¿Ïù®ZMmt^ÓQ>ÊHŒ%åà“%ß9Þ ­Ñõ3ƒ —|^̸Í?ÿ9+ÖZ 64»(žš–†|ñ;‹ÎÄ ‚ÿAöíû zÒû¢sG&iõÈ Ñ™x†še†æD ßç’ýl¼³CÁÈžÎFNÑÆ8׿Ûôn—ÆÄÔ«éÎÚÞûµvF¿ýª¯WÓ …—› ùË-í çƒ>0íî˜Jðý5@¿#èÇãÅ›RÚ§®çÔU|`³C-íÍ]=·á6Uġ׾²Zkͼ=)¼öøzsð´8}~‚-Í¥.ûÙ|½Ë¤L¹Ó)íü8 £€­æ*¬ìÀ­¸f:]¯Ôm•%g§-D,÷«ej© {ϪݴÅl>Üâó¾z¡è€¿™b<ü½DU©Ë§Ûe·ïaç…º× P—•yÁ‚èÙ一rÏ Ü ¥¤÷«ÍñA´S‘½»,Òø–ŠW›»¸WL¨›¿@aŠ ht*‹®K_t¡ç;}½tI ºM-Ý¥”>¯”îbÀHÃøí q­PŠZút37!”ªßv­ ½5ˆ²J CÙÌ÷ð°¶ÿp³Ùö]¬†Â]¸oeu,Êjƒ²Èór',µê«!6g9/-Hm t”?o]Îè-ìuk±Q¥Æ{mr[ON»4>4ÊH·å¸Ÿ–Š ˆ¿pQˆþ "ˆÚ){Ÿ·4è?(ø©wü 4õQï,ÝdöÎ#¤ÃcÚ…b" dJ¯ÀŠ«Tß_º£t¢ÄQâ[W3ýövµp—Qj¢°—» º'Äa gŸ43PhÍu;ÎWö¨Rez-´J}÷¶MúeEeàån?ž±:dþó"L¢‹‚˜{¦Nô¶cãÎè>Î8aÇtv‚µ†ÈÛ0w}hÜé>I°²_úlRDµNZ+|óôMN¯øV%° ÒAÑáÉÙ(9rxDž­ÐQRL†ûFf@wV;Ý}"Wdî“èÅ*ô#o}ü°r[µâ\ÍÀ2É Ç8j~Ú*pÑ*„\º3&c㨀ÜG¡&>ˆÕ=‘œè€PÃ'‚Ìù%]÷9¶ÂaXÄtëÛSnd% ÐÞèôxaG&ëôUØé]ç®+uù…f]©ÃÇÿý}6¾ÑßÃ2ýÍGFô·sX ëïokÃÒßùö·º;äj…±ZÅÌÕ;Ê¡ºxü—}(ç=ï¹=é;åªW§Qñj9ïmû\öžD‡,Ã8=žL‘Æ ç–P¢Ö Í>ªJCh\17àíS¼ÇaV°ö£í¯zWi³P&¸{Ù TwŸð äì {‹Cª»7pSwì^œ›‡œÂ‹ëmU¼?\S‹&ÆóÉ€?%´&Åé0)^r·V¡¯¬ÈF‡v=,GBG¿ë5qæ÷¨×ŽŠ~O²ó`’¼ß¹ÌnxO5O޼ãºW¿«®àÔ%¸š}”Ù>4»õýû§DWàöt4†ú7³ so;™}4ç„w¦êjÿÂŽ~ÒöÛA*u®(£‰w T¬q…9'¶Å]LýzUTçòâ¾­ºÜêÔr”.|_9cþޏäú$ŸŠZ$üì{Cý܆é™}Þ]–1Ò)%ªª®íÈg’fypí¹R-í[¡-p›"¹u¤3Iâ Iò«8™¼“Êg’…¦»)àš~†¬So«§2r%-„iuÍu'-ÞøˆŠOxj“ "”~e¶Yº¡zÿX¯˜˜å Ⱥ²W›¥eÞd‚~†Ó5é‹ÐÕØ^ÖRgèR]_óèõ?N{ŽÐl¹·>s˜r5—œ>LŸúùÇøÝ`ôPZLEfißh¨È7©‚µ´*m­_nÀ©÷"èÌ M•QÎ-›[ïôÔ\ƒƒmõrsp¾½“TBš[0·~´Õ?íÇuÆ”)íü—ë‡êdžïÛ“KMçðéÆÍ$ŸÈìaÎ%¨ºð ¾Gäè³Q Ê¿àÃS åàN&†P÷-³C—~A…£ zIÿ9k®™•–Ù·Zï僧ÄÈ¿Üÿp¾!˜fPnvê­±i4÷”ã)‹œcj>FØW`„1¹˜gV˜6%{ñQŸÂ•Ãb·éùõø·ÎGÍÿçæ#Ëÿv>²ü;óQ,M†ÏG±ôøOç#ˈùˆhPDóQ¼1¥ëóÑ×èžH®öaP6¡‰,ÑÕƒR÷ Ï:„½O­¸/·â€pçu Ö.4ýœ`»£°›uXæÂïmáÎ1 –7£=NÔáîT+îDç†w¾ñ ÁʼnKÈÏž·^‡cŽ*{…;ÊàâÅóÈÍžw‹×D΄;Ké û*ðë¹Ã×Ö¼¡ï:ÕMÒÆRc”Éÿú‰ì‚Ë Urº¡JN Èø"gY@ÆI¨L+fKýÐLÆo7ZåÝ´ÝÚ0ÎSkEMùŠ›õÅ€àÇ»ònšÀ„»Ðð”Téûg3‹…$qvC2Z$Ž }ôïdq–<à„Và7"¼²Rsg‘æš ú)ä¯ÔÖ^Ä"LþÝEÆÞ\zðçz?e¦©±¢W"jÙ\£e™º"¬·Lo§¶ŽÙ[…­1ú±Ü€§ùöM|Èf¿2,3NÌÆµG«Þlèžç)ã!Ežo‘„®b §bH¸ó׺JÚkÌA½=L~룿Óý|8wˆ“à¯UJU+2ÊkVâ_AW¬‚?N ˜–&ÔßBï¡~ÑÜÅÎ!‡‘ÞËÐS.Îÿ$Ÿq†XdMS¸lrJ<:|åRd†î.÷ÉmoëÞ‰#蟤ýÛ$íŸÖ¥rišðđٺ#AÝÅo¼r?mÂU8T‡mf`Éûkâyk+D jd(apò6èüÅÃýÛØÄõ_ óÇ5üÙ.ŒKPwc>@/ÆòkôJ¸t/ɹ®xqÔLWPêl¢pçå˜Óû$ˆy gîNAcw+9òý£RaÌ*è|õ|Ãëï} I™ûrºÑ[¥Kα¢ºÔª“J-‹5Í· ÏPaÊ»P‚}‹Ãœx^ˆ£‰§m:ü5ÜI3¿ª¹n˜wî3ç É1îSémõaîSÑ g ýøáþSÝM¹n˜}vÇÎ/±þSéEÚaþSÑ¥è+BÀm®½­0× óHå dy*ùeÐðtet( íûïñ®8!¢3Ÿg,—[ Õ§ÚoÖó¤¨%œõKìÊG(s¬w 'JŸZÓƒ¶]ò¹Ô…Äx–ë}Ê"øïDÏÁá;ôcmM›@€G¬öêG ¬m‡¼ìÐc^‘(bÓÔœõ+,§Ì¡.æ>4ÚðOÌŠ¾/¶Êª;£,PñTù ío§c«!˜Õˆ#Æúœ#ø¿6Ý?¶íN6Ç|l¸'f·afi‹Î,1·ß0d:Ì'>s>y2Æùp·á…f‘kôYDhº#ÆùðqÃù0ÌI "Nhº!ÆùpßpçÃ0têó‡Ð4ànˆèNŠ™3_b=ôÏÚpÁT»Nàlë99[£ƒì¨æeº*>e­¿]Ï ŸŽñUD¢1xdï}öMN6A²ÑšüE¢,êk8]-w¯a} ÝÂ4¸c0X}ÍÑÄKZ­#ÇJ!Rál,=v(UøÈßðK±ã%f<o¶žK nvT¿‹Õß§vµZÄëqÀlqècãqÌ)K¬‡z”V5Ë}÷X îÛAºMFاsß&¦%Y78ˆw‡<ÿ/ÁrnsDš†ò*å\ëp†Î¤"žÇgþ:éNÙû À9(ò·Íj9Ë_1Sb€ÕÇG V?j(Qß₸¾Ûäúÿ6´¨oqC  `€F>þ­®ˆa,,ÓÇ‚¸j˜Ïâsº"†!1Tªáž‹o0ÀGŒŒ?¢få~0ðkWdøÙí"ÜÇŒ œ—zI3²éa?ÇØO7ûy›ý¼ÂÔ,ýe»MÐénc"OŒ‹aͽFîÌP¼oÐÝÓt¥ôÄËiŠ÷5µ´M?J‡TX©•:”•Vo-ºæAˆSK_ƒ%,¶WB¨Vʳm¶4w·mÛ klf„pŸ(V`kÎjSCzՆǂ'fK“eo°ÂÍ6ª0«÷+ØÜ`2Dµ¸OàqŸ°£‘˜ým‹Ëðci”¹sŒ$ˆW ¸^öºOV–u)Zð¯8fdo·EœJZ$f‡¡Ë6àÚI€bYWð)bÀã„ï8+»—õYoÀ¥Dñõ²ûPáùÒ2š‰•ü¿#ð킾'µóé•Pšqí}ExÆÛ«x{@Ö³(Ì¢“ÕBÓTJšRYh–˜³ÿ2£ŠNjÇ8l>HYŠ…ïxüFskg§•F±' ¯yÓèI¢éXEi º…ÙôŒû¤(wOèm JQÚp‹2;ðy)a“’ b/Á-ÊÄv>IôV‘¾‡ øÉŽ _‘jšŽ¦î!ß ã? ç¹òÄ åÍ%–§à… ›Y„í‘óEä²’H^qÙ˜çºpO[ˆ¤4ß2«­Rû&Xfõ†òòøcQrA‰$ø¾Ÿú¡Òå+IõÿÈp„óR3ÄKå¼L«\6Â/Vjÿee/ì=@ éðí†Ô)«ddu[O%(è%(P=`œoVjYL½®7³’Ÿ‰æÀµO¨ j…DzõSÔÒ!5ß 5nYd‹ÌûÛF¯ÐSþî?*e1 ?60H×Ñ%ž1Ø{É¢ŽŠO³þÌuŸôÆã1[Ç@¨ƒ úÝÅŽ–7§†QYŸ¦]})²“ï¿ýP,qÞ ’ë%ºkPœÊ‹ã}7§ö¯Ð–-ÁWÑÊè à§ÕIq¦Z5Cn‹È‡`ù0€§yð÷$tF¢û¤¸VEW”CJq¦2ªØñâîE§îþ›z•ýÊ;*èÎÏ”öYÿªÂ2ô™Š!ë;µ–JO•6áQ‹¥J«‚¿¾å©NµèäPæ…ί…Ò¨UyåeUÚ׿@˜Ë ÃëItº¡vÍ;k<þú1vÍ‹„Ÿ3à>}î-4©† èû/LûBö€¡µ9’†¬Ü“ À:†ìGálÿ‡sv$\d·ŠËÕox"uó"usµöEKÍ,X=Z’[·Ã—.®ù!Üo”i_/2Œ—õ'ÞÆTÖ¤¢DºqÌ™ORÕ}àœc:kŒ1¦cÚ}/NC‘!9+µï—öd£B«[#Ò­Ì«€tñb•Z…)á‡q<PW¥UâgÿíLŽ+=Úß.ÁÖ˜^Ã/£|÷JìÝP.å—ð5r‹¸¨å! ȉbœ<àR^¦£ÙLÿÂ`ˆN‘^ÆsÓÐè—ñ^(ImÄÝ›Ómòé±õ_wmLÿ£ ¶+nœªüUùŸã¯•½N¬€¿6ÉžŒìà@”t‡U¯ÇXè¹k##;x)ƒcâ•~<§äÕB.ûPbGâ»øªÉCø6]ã~ E©€"iÐ>£ÁAÅ_ÜÁÖ7N;³_„ÇN"‚?Žî/Py F6àìòV¨Õ®ÈsØ U•ÚüûˆAZµÇ¦Ujƒ?¥­oöFgß>2¹žÿ¸å¬üýz~òÉómù¯Ðó?yvþÃz~%&ÿÄ‘ù'²ü¡ñ­#r?ËrCÿ†ë€K8ЮˆòÊ>]‹ôͳÔÏQ«„½ÜØ2ížnLBr0þpÙ‘ ê=ø@9û·uA ´«O«y@©2FQ‘F„ȃOéKªöeþˆWèt¡º˜ñ§?Ò/¥øÃu‰@£3U?+ 9H Î)£Ô%¿„³±Eš®b¥‘£™Üi•Rq>¯Â8X2Äø%A%Uª¤J¶=YíÊ‚vt;¦È­%þ6o2{´kÇA±¨²Dž¥3 µÚéAB[j–ó1Ù°4f`‘g±ÙšR@j¨-zaú\§å:ª¨vÊgx)ɃÓ}-Jh%›¦Êrí– ÓtÇ0éQe¬vIYm†¶/ÏH-Æü£V?0-$»‡¤´ÐdÖŸÑšv­´—5¼X¦Ýž7¬ŠÃÞ"!·i ¾ái(,|÷æöÇãcèÒZy/u¼˜“K†™•í¬†¤e `§UÇŽG•²ª<Úòõ+ú}YXðlÇé³%¯VQê£×Ô&%­“÷ÒÞŶ«+É-›»ml¥v¿C¸‚÷²ØÉþgW›º1¾kèA‹xU–5ƒeÚmQ(4‰+Ô X5W‚æF xg‡£þˆp¾Ñx€ÌÑ*NÒü–ÒA˜´ç%IWVâ]bwj÷ƒÃq •Zw²a¾ÞŦŸþöZË´cWTþAL¦™•Úf¦%ÙG±liœžü_f®Ù…÷Ðr¨ìÝt€uLÙðÍWE9 æ} šðd1o×Ù·£<.‹ìDÞ&À=ãUiu;F´àhX°Xä,“Ò+c€æòâ›îÆùçvC8tnDZ‚³¼—Í\)•X –uмË{]4¼ADÃòí,½ÿý6ȉb<üuH (Ú'„²á#‰¢R`Táî§N°îM€˜dŠ%¥Dãí«ñ®t¼}/¶ ;èaĺ—^C•nÑK³ÔG1 ï? ¤)FÏy  ÌÄ“X`‰£ÛÒcønŽ6u¡Iu›=Êñvqp’Íì,ßóSXüݨí0]Ë&•ûÕ/ÃíÉ‹7Õ@RUxuñc—TÖZÊk㨷÷9-ƽÀmX¡s´»ô W«R_¶SëtÜãc›÷Ô¥„cßE>g8ò‹µìfk]1i‘XTíÚæ£õ¶÷b\Õò&Wj§ú=EŒo6{4{nlË4Á,ü9눖=ŸËª› ò5&Ë Ñ,>ëˆú6æšõ%ûFêDœf@)ýÝe€{U0â­ƒêÈÛ¹"óÖV‰‰•³:•ý¡8ô1;²\Ûí•3ŒÖM'cøoy!ÛŸæ˜QØ»¯Lûd>1Bª¸Á×(ãH[ÖiÖqí‚nîÓÞÿe¶|XE刳>ßlº³\;a4Hº5p}0v åçh?œo¤–±‘*àt1Ù¬^¹öœ™ÿâåÊÞÒëi´?€áÎvq„²0†ÿ°‰gÙ&s4Çàì’€ãÓ9YŠïpG…8øëf–¯ÆŒsžñ©81f eqR²¼…³HqÙaÐw̧´“Gþ2ÔçœÄähú¥ôÙe&Äž3åÓÀ#$Ää‘Bl¼'h#ôlpŽÒpT¹a ɯݺüòüúáI’_Yý[øþ;Ügfc›ÎÌTï%ѵï¥k&UCÙ7ó^ünÞ"qþpÃF`yž™?ä-ñ‡ë§d=‡PL-É%†2É»IHms7F>…Bëå݈Ã^?WŽü ~û²5¤EdAÓgýxèTKè|Ô#‰õ“X´µaŒGÛŒW*7Fçgð3–Ãv;LŽ*ÃAöÞ`V©ôsã9Ú¬y&»O³Æª0àœÑ´81_õ¿ç?$ÜuOŒŠR^;'´^hDT2hy9fÞƒ–xw]i¦áŒ¬<‡ä -ËWTi–&\;EÙÄqB~üœÍÞË£›ì­º>‰†q.4á•R&•2VWi?þ^÷8[ñ!ˆ‹6Ãþð6>—"Ïëœ"ñ»&£Äo%/Òž2,¦J»4ÉPQ$‚gõ™Åy>)R}ޏ«Ã–õG No5#†¦—zœõÛi ”u™)û²¨}2f­ÇÖQÏÑ~`‘+OœáÑÆ]i®&èjeÑ"«\Y‚¥·0Ÿ^Aô>ÐI›GÞ¾àÙõŒ×·›-†*ûí›Õ".c0Ь ãRaoÜÛ`ý{.5Œ€™“¦ ƒùÁüØ„9ߣ­¿ÂXbŒ“ëÓ,RBv,Àë,žH]š–;©K.¢YAçvórÛ y`”°½VG2ýÜ^¼O¹‹–Þ´0 å+aRÀzfíSº”íÊݾ†¿ ë‚fñArSAYìa€cÝ…»ÐkC¥p0m F˜ïÜGIÎ Z½qtÒªþO*µ[Ï#$hÑK¥¾P5[ohYé‰ìÄ<‘P¶ö¦Ù9‘»Ò!fˡٺ½ï]´KšbÜ¿¡ ¹£÷q(݇|`ôaŠ«}<Ѻ´/~[Ši´‰®PäA›¸¢A€j‹“ƒèêÉ·A»ø#yš~ŠÍÛ‹€^JcK,-» Í󇔮öÓSidèñ—ËèƒTž¤GöƇnÓíIYRÀ‡®#ý ŸáÏ_Šð€_ ?z|¾ŒI05q•¸ÕQ…n & ÃeÛ‘\ÙGõ†Ñ•Ú¯“‘Â;RtÇEµq•Ú|sRÎ@_JꓽÖV¢¤äD쯎ұë4pÐH,uàsêw 8¨ëпy¾yâiß¼Dñkß¼‹%kž|Š—.öÍ[ “à<ïêKØfÔ¨è7þ”CcBéú5:3S‚~¤÷rVx´¹£pó©oøÙ-VÅí2Žn%ž¶Y¬EꃴW=¤¶¢Àï·PO\ÛŒìé«úh‡å€u?€díÛbË>”ó–7Cé‚(7D„RýëSUïPKBs|±â*Z²8âðjø” Hm©AÜ<5”ÌèÓŸQ´Ø°¡?ºKÅhÁ¡»ôVmj3‘¬·”Ò¡2Üü‚^Ǿ./éãŸW%W2n–\"ÍS´ÐºÑ Vº¼5Í":+#Ó´Á4èJæO²RûÕ\S˜˜23*OÂ\Ì€<É;Kž0aÚxn™âoó®î¤íê÷±¬•åÌyt¶¬8¿R»0bÈŠ¥(+F³³Œ3x?‘N<¬ò^BìuÆ”0…ö'cT½C¥_VS$´Æþ§¿§TáR„ûYSŽæ}‰—ð¦Sçœ>#Ñ õ—’Í8Œ¾ŒqV3Žå USžš6<µS“ÌTÁL§C/#´Ü¨OÒ90 &,]¨:?(ÝmÑe«;œzT‚SîÀ®r ú6ð Õê4¦ñðâlÃŽ|TìÇPùe«yúM3ªÍ&j1U¾ÊâM~™Æn Òçel ¬´ÆG´ m£a¶.Ýúk‰<0yÓ Ãä¯_fl »e¯ËÒpQLù¡XBl•f‡R øÔ˜è™ZĘ̂Ž`Ì ¨—Z¦<òGìÚ‹´¿_„‹f˜Â|TБ­<ß²-1¼áOT·cž’P< duo@fâvú ^•ž²Ú¸rí·4ùá~µ`.÷«´OgFŸ¤0Ç^)Þ×Õ—™âOpÃltÖ>u±ÃÚž{/i\•~a¹öɤ…e½]:ÎìÒZÀìÑK@UÊ2Ö|˽Ǝ‡©=ÑŽÇ—Yg÷ -ˆa;/N ÆYE^oC5²JÛw/NožÿìÆùÙR?]•qêVd|@Ø;'B™þÚ‚h—©û׃|ºîª†üÀªÒbaÔ‹BÃÖ&Ð&ðè…¼õGäLZ{à_—p÷—vãÃ*&È2ÞHr¨*þ¨÷²²mí=ü–w–[»«^ õ^‚²áQ3 R¼RÀ“-]>ÆH ÇòfMÛòxÖ°ÐæˆŠE‹ëYÉ'C7«²y>ª²ö£ÓºèÇh'¿_ë1‚Z&SÙÀGâD<÷&¼T©Nj( •Ѫœf3z3dööáo¡×º¢ a‡•yµŸñ* FikO`sDÙ´ö:Û?æ?f]QbM|]¹!å6›^ªN,(‡”/úD–!áÖ™uÙËÇáv/9: m*CSY˜®Ž•wSv)‰E²n4Qó&êà5DÈÿ“µ=g9ò™815&ÅM¡šZ?êªÐ(ÚšæGIY¬æ$,eSXʆD Þkò/€ÓöŸ"e²Lif&ax&\á¶2Á„‰7ahê˜o5*a+Üh§X£ãë?﮳ÁhÂ5ÀpÁŠžÚñ~¾ÿi‹QªÜ/LB®<ëÑ:†Cxõr/ΡkÿÍb’Ö.£‹H \ñof÷ÔLEB'~°â8‰¨ØdKÊ•#ö7Ùüõz—U%½äðæù§>X#ïD'îÚKw¢j€Av»ÖUɼ˾/ÐÝ{&¿­Ù:¦ývÊ„VJ¸Ã’‘·T:5lN©àå—‰j •a/Ž @cùrM¼{Ô;ˆ<-(`ìlá¬õIj>¯ßß•ÛO¶8ó|§Ä¿ûN×KÉÐ ô]úñiG}œïtº”LkAV?2µe:#­u³Ãl‡@yµvp¼Å—“!&ør¥± ¿©[à›Ÿ!žôÍO¿ð ªn±-˜ kýÙ’½¥Àºà‡¢–þü‚eu«”Ë6sçêë/È¥)ìî—ULñ‡¥ÄëœëÏð‡âZlÍÖ|(Æ"ý¥Ãz¶~ ú*ßÅv¸pÎç„.¶r} „š/g&”“3[²å/õîBsIÄß2:Ÿ¹_vঠšÀõÑ€×8Ï9*4ý~ 8«°ã·'}Nž Z1ý1é ÂEOÀHĤ'Ö9ÉýS\¯›V/•>ý8¶~¾œÅâZ_ÎÅ*_Î2±Ü—s«Xê?Z¿˜ÕWGs¾ï´[œâ;½Hœà;}“èò¾Q|§/“|§Õièüü³²&ƒü?¤ Qô6p·É]±oÒBR﵌†¼ˆ`& ÀÅBÚMøN/c^Ê|§(4¡À­BÝ#õòò«¤`°ÎÒWAÙGqK©q\,4áÒêþÊk k,`£•Gêz>æpæÓ&T(øË=@/cÂ,¸÷^ÄÂfJEŠ4ä7$èË9lVäºêí*dµvov,n ¨f—P²åd‡õâ|€ŠÐYƒ Ë©¶ú :½ñò¡„È(ñ·5|nv Vmõÿ·µŸ[MÕí&µ(Òú»c×a¨L š¼i0çóÀœÈÜ¡"¯ëTÛ:ÅÊܺ ýY( ±pðu­G ž9BÆÉ†¹‘\5’ÿÛdv0}“¼uà&^ÞJ|áÊ rN1A؉e,§©Íûu :ê }.¼j U[èïÆù¾^~èm]ŸYþ(+½? 5‹VÃßñ0ûO|Ž˺µ™G»òvfmF‡# áB«S¼LÞͬÄF©…d%vž>?î6lÅ M[±ÂÓOöNº±$ý~ ­iò)-nõ5Þ·Ôjóh—õF"¾˜–œ!º!\Æ+eœÿ˜‚‚ w‡eµF¤!mÛ&fGZ’š!ÓV~¶rÀxO­±/§3Í>|‡ÞÈr­| ³Š7êfqœB!|áY¿AηsâRbý€»©l…Æ­ü^|ÂÁÛcêgÎüþ¸›ÔÍiá¼Ô<Á›â€…V}u¦>4_3K]2G¡k;þƒÞÉÂÞ± ]k+ n•é’6(ý…ðåfˆ!=Rbž§ 9g$ÚA¼*KY+'Fºš[ `aP)ŒsB ¿ã\!»›pÏǪŒõ•–ªys?‚ª/Æ­VPÒ)b¾]š²Lœj ²ˆÎ–ñÅ-Ö|…"æu‰ÔMNÁnÈË B¤_b‰ôž ^ÚíªÐõŠf¥¢IéêÌ›…ýÓ™çb?"õº?¤–{"R“ö×IæR$UÐ&m“Hd”"ôÚA7LÓ zaì¥n>œoãÄ85­2:¦(oœZ°JI£$kžÈ«ù7ª>ʼnsÁÇt12Ä ªúDÙ뙹í–Èm5PëÈú9Ú]ÌW"2”Í*@óvŸß–‡. îtå‰ »gãw*}¯·Á÷\üŽÛ?P@ä¶¼Èm <Ú¢LNq`JÙ= !'÷; |ãY~—‘[ä¶Í‹æ/°å‰WC0Q÷käw±üãübä¶õíµ¸h~+/.lœÙÄDµà†NT,"Ô2«8–É¥djí)kŒlàÄñ0ªÇ2~déÍÖh§p˜ueä¶2–ô㘬À0b Ï –Zc{tBäYêŸgŸ6.ŠA¼;!–#o6&ñþ³Èû5HMí–NÄå‡äIí5Ë0ÄgÏZLˆ_ÅâÈ@QÆ`>p7縛@y… ba½18ŹòKLuJTó3•ÓÍNÐg€„/1ÅiD®SæþY‘^™Ê<ê—<щÏFìb{DºÿÞ÷+Ã&ý×7 ÷‡Âév¤¥˜ø*œþC^Wÿ!¥t(?äðªŸÜbo¶æ/)òåZ¤/ Ï;¬ùKü‡úñ¸Â› ô¡*ž`XJ´Æœá¦9¨_7Öð¨ ,+×®¿ r÷P’Ò—}Ô°¿($ƒãSµq5mØ7ÞJgo÷ÀOmBMFùo¥ü»©ÛÒ|Þ“ —ÒÁÐ)O™¶îVó )ú~<ÛáMg©ö a,D…_rÉ»ÓhÛ49ò´Žm¸¡‘flJEßqoìE‚š/wTiO²9$\ *j<3t*)áe²ŒÝxæJö‰ŽqC6å+ùUFÀµ8È7Ž}ÛU1ÐΊƒ_ÅNÈ3:Éq,©0;Œ“ŠFòÙ¬šK.éÜ1Ãζ4¾>\gÕéÄëýJxm5…£úä/¶J›W©ÆV‘g-^<¯Ö¢=áDã|U±Rk ðÿ“¬ZÛûº¡'×¥ÖZµ:x’€?ÿ˜n`øEÞ ‘\©M¥/ÃÞñ1î þóqûü‰_Ýá·ÂO†ºCß+U]þÍ· ü^$ ,¦ü6H-hjG_qÜ(ˆ¾~,®=…onº£_އ0@cPÄÿ1 •*¬L›Ë^€ sœxIvø1¢ ´—S†ï3 À 1ùC×Ð{³°8-Dþ‹ÓT (“Rr«ÄEE¡Ìëèï_à'0è¿OÃÝ·`ŠELTº‹| âáYe:¸øYEðçâá’Š*Ë´ó,yobG^Ä ÇÚ/†˜ííBºÇ*%ÕÆký-Ѱ6¢elDÊ^WC'¢½ù;ºøõÉ31cžñ5" ïy:vi±²žÎ‡êßZ‘ÜÄ|l¿Qc[Rü±”—i¡Z`¨_ ‹úرçÑ6 ±ÁRH×…v×…p! ¥XÂaK@La{†8«S6y\6yü ƒÇwÑy×Ã~¨‡¢¶ßšÐïİ:œ„ò› KÂ3TÐý&¨2é~Ìn£|­ªÒ–Ý[ ®Êž9«²gŒÊâP_'oå,Þ¹ß]]ÚÉL¤aˆöº¬öÉžÚOõj³sF›}Í4Ëðwý v®î›Ñ®bí^9JÆé´CþÏGþPK?«eE™6ç‡QÒ Ã}QYÌG¨¾ Ëg5Q,#ê8ÏX†G Ÿ SR¾Žîáš‘ü„vlA3èôëÙ`òžœ-ªµzÕ_k7²åvá=*XÿJ %…¸ >jôâýhŸê–¦Ët/¿ßiêðG (Kà~üQîÇ ÔçzHušPŽ&]ÖšŒâk/°X : —#éÂŽœd܋ܓCT›¤ÉT8jZ}< žàü$4QçTÏr&[´*JÎÂò(ª\kÇó?Ú8T;J›GÉèצRC_ùµ‚vE=Œ9.“_˨ujc)æïß Ða­Y0*øzâYå}š„°/}-oE´<§v€’N¨š1Ç튚i–7J{‚b$úÕZ1*¸&‘:I¦ôŠoodãÌäÒ~Dñ £ñR³5ªÆë“ªL5y̬§]I߉Ñ<_}Íóæ¯%˜¿ãå¤Ë‚·Äó[mšv*SþL)Ú®˜œk¿!ÿyÁzVã·î‰!³”{tÈ‹”¢ a[7aqÈ6±,茣œ?£ôFsÚ¾‰éÎ-”º”rçÄÿþ 4Q[I@’ Ì¬ÔFÇÀ½0DÕ˜¤Í!!ê2‚c¨£)ù“A³Û†ôú÷ó˜rp3¾ͨ] áÚt­›’?§k™Áõ–‚ àüGã‡vÖÅFÌI=ýzx«™JïpLªÓ:ãéC§ðm£€º&¤šö÷SX•ªÊmfì›ëѾ‡U»€öµÊ´WNé\¼c´Íñâæ*¬ü…Úõ” „“”0ÁÄ»‰d¨TÏò`G;Ïù÷Û¦æBK¾‰ÃÞÀ–ì9EuüŒ¢ÒN!¯ýîUð]Š*5JduüùÕq7¥¢u”NuÊtGL¦ ©ZµiÀFø^ @Üõcp:Ù{Œ ×n»¬–×Vž™ýH£ &ýû£ÜfÇz&jsðºþ(•÷³¯¹(­¾kgj ôq$Œ5ëìÊ ›¿5òcùrØì,f›Eo¡–i¿ŠÆ«Ñ¼Ú%ý4`Ÿ&˜ú0qxÍx¬é_¢’úi„î  ÕÏ ~¦Y©uLÔ n¦ôˆ­MÑÖÐGsu¼YFnŠÉÚ<æw“ †X. ¨þ¯Í’[£•øbkgk6™ß޶æ{a]–f`Ê3˜ãbº  ¸ÚH·øšä`ß×4ݽ€qÁðÜ-|l´þÍO ÏEAòb ?þulá—bŽ9Á$+­OýbÊ;)š÷yV•DÌM dठrùÄÔ^ª%P²—ìhÒ‚¿dµþÊŠ‘¯EóTGKøoÌs|iù:Z닇Õz昪BùO¹~ÍÅEW Øåä{ ô¿(Hv ⿌E|>æ¸B[D96œ¤fÙc CÆí.ã>:”?@C'LäMÑrþ±µWja ‚dFã¿ þéCó´.‚:s‚ʼšÊq„n„^¤%ZÂy'Mé’£=D©?:£mõÉhM¿9A|¾¶™–œÐg…Ëc`ŽP$O&ª.íÍBm#Zæ# ³‹pä¬Zõ=Ë[c ÿʆsÇû–øã?Üž“6u”ÌÖxÉæDXáÚó —léWú†Ù!à*¹¥š¥µXóçu‹ö%[ÂþCÛ’ù‘P­¯†½ëFÓ<¥r8˜>ÚÛ2:¿Å^8¯Kü@ç¼Ø{,¥h†êÛ–É~1}ŠÙ‡Zìó㥱9¯‹£| .E[Onâ|îRñŸÙm9¯KŒîk# ±w#8£·[JùæÒˆ?,®M«±À’<²‘G'þ?½ú°ÐÁÜMOo,ä1Mé³r¹…¼÷oò«”Ný 9¼ŽçpF ¹P&9Po·~½Q‰ÎËÊÄ^è(Óþ+ëF|Ö9×^oSì&ñõñ Í\ÁåŽö¦ªùŽ:snvFò9ÖQd0{‡Õë`5GÓ‰gõ‹>™R2Tf~ ^¾·È«t‹ZÄç9ðºs…v3tüžZé„x½ÞE|¤ˆ C„z#k¿2ó!Ô®[Ùïaµ/âíEÎ2í+Ðà­×ñÖë@Â;r½NÂØk5îë8²>ôG^ò-Kå±a}Ãï`!•{—[Ä×ã+ÜÞø€™Š,?±ôD"û±ƒÕJ^éÎê*+Ô94a$1H‚Ù·sƒÐ·ç+×ñxC-âìEйƒèá P Œxh@ü9îD‘1:¨äÜD›¬NÉ:¼Å–}Ô£ãY¡ýé4¶MdÆE#Á"‰ç²IÂ÷‰˜û%ݦ(\ìÊüA¨Ò¸ EW[·a5÷a‹1ϧ¹¼4˜‰Ý*Џùe¡çè½9>°hT$gŸ·,´V –X•Ò!»Ägýï[¾3SâCnµ˜W—;Сˆr"§Ú¼ßC–ż½(¦n½ž·^O;¡Sl¾Å ØEÖj>ë¸áEò×ÊîßÀ¿¡ÚT´Êh“â}Ë=‡Ý—ѣإû›r M2µy='4mÁ ª˜Ë-vÔY'7¸ÐÌ _G/v(ÅœÜ0ÃÒÀKyrC¦¥n¾\œ‘«fDȽÔ~奻ÿæLÅ}R©PÞž©ša­P‹3É;á€Z}R•BÉïÝØÉ{ÙJN=é¡Mø*íü•‹ïæÔN@mÔdÑf!›§Qøè@dSšöÕ?€ íÃÞŒrêþ†œZ”Ò ³WŸú0̆X>Ç1s¹~¹h‡g‘õ™a;Ú¶ÂÂW2ë3ZAnOÂQV:Ó°-FŠð•È¥˜Þð‘\ ¯œÁ/iúý•ê"g‡%Ñúí« ^ ržüÿmeålz$øžWЭ¾5êus!WØû3ð²k¿Eù0·º¯Þ®z±Ö+ªžš‡6ˆèÆfÎÄ×Z™] Žòþ2í ÞÁüèyJ‘ë‚ X~,Ä?Ò&ã¶à:¹šLB…óÚa¬©¥}À˜á"æœm¨Lû8Ù°'ZQËQÌÛCfñ™z¡øÎUmW4×ÓX® žƒbãD—Qx- ÿJßZ!¼g(Ö¢~+Ýa*A$6—öGÜ@ß©9âE Nß©™¢Ûwj¶8.”Iþÿ½ýÙèψGŒý}P»þ.¨-ÏRÌ;‹Òi½ÚRŰæø…á¢T›8é$¡¡ß>„#JLe ¿íOÙÔÜÎFco½³ÑØoºw‹ñKˆæ„È›êÝìٓу2ß诺ƒLvWƒ î›æ)«Ôþz{ÉÌVxA!Ö_déI5?39†4¦JKûȽ-z^މ…Nåä|`Ö3"‘Û‘Ûœ•Z+ªñ”nÍw²·QÂðΖœ^¹mn¥¶ØÎ¦ØtTsªài+Ûÿ Èüä|/¨º¢ÄR¥sŽÍn^UÜÏjÎ7 ÷#‘Ѫ‡XË•# Kûüë/XQ¡†j¹Þì1Ÿ5he½›à‰5ªòTjÛÌbpT¥7ÙX#Ðo! ]“zþcè«ËX}ŒGÏ/ƒhVÞêó& þXOÊ[Ò-BÚÛ²G>êß’®æ§+û³K ´­TÖˆ\hXBšˆÑŠ„h+¤qz%.ù˜VÀL4^)7©(¬•„'«ÛÚ¼p¡Æûv(UúCH~¶¸çÓ´$&6ÇEvœUƒ¹Ãjà¿.†‘¾†%ÏÈòì/b®€{°¬J²–Ž£©2‚ÿ3ý] Óo!éva;/y<9—º:².‹<‡þŠ"Ï¡¹¢vïXÉ. `Yãl»8J?æþœZsÑ“n åø@9ØØªÊô¢¥¨òƒÆ2èØŠ÷hÇ®GÏ^±×M÷ÎÂ0ÝRé”gÙŒ£¯9fh®2nò°«+Æ=ÛÖ›Nã ùÜBNʨôþ%ñx ôÙ¤~á[ššQ©=ò Ty¬êqh‹ ­nAï+äGÞIòÒÒŸ#N¤~­Ž÷Bˆ,÷h+cP5Pc’vbŸÐêF.«#ç ¨ g*áÓ^èdð´ j(ýÖߣçòT^Ü Ïàù4ƒçâì/òÿÉ<ž4r ÿh)óþàš¿?Îß.¹a^©pÈ/—Ñu®ÌìƒêÏ1²âª¡©M¥¥ÂùÆiù¥ÔUÚÛK™{I¹³P á0Sº.-áš+û¨~C ú²}ý©—·ˆ£³Vj·š—œÞÍ…ENh¶Ï™ú¾§æ`î…_fïÉ —âgÈKñoýG¥_£Oƒ„áz±¡Çóøô÷T,4Ç`³í³ÌÐ\;vXÉJæ(K»,¢? $ø·ÛqÖ´YÅ©Pv¦Ðt©¼*\(4Í`¡K$!8Y MËíš%]ÞŽ Ô<ñ´YÈEêøHážýŒ)*ÆÜc3çP÷ÒÓµ^¾ ZÇîÕéQÚ–Ïðq*^aÎÉ+@¥¶þeƒé²T9RåaÁ¼2Í yÅVeø}ýá¶MæÞªä cF)–²Ó–øÕnÕ\)¢)Päæ?vv ;ÝôF0loÉœkBÍñœÉ\—°‰ ^`Ì“=ÊVt|.S‚¸ÞÜMž ÊHÐã>OZÔRi®8"¡ÄÖ–Š3ó*"RweIÀÇ£ŽÒŽëÉWjÂ?!w€æ&ÿ­Ð¤AJ̾§ªR öP_)ÝQK̘û:éº!#ù¨ ç¹n•5çãý.H#ô)­>J®\–fÀÊ °53ꌯÆy4…תÿi ž‡pR̵ˆs™ˆ•c[ì´Éi—÷õ”k{Cf–u6tì™k‘ÞªÔvì2o;/Çå,ì…¦l›!‡ùÝEq>꜃¾«-â%ß^äÒ(<>8©i€ÛkÆ`S~Úká ,êrhr¯º|–RªáË×ìܻ؆Æq% Z¾}—ùþ5ù“鯌lš¡õìaÄãåÁ¤†Ù•ôÚõ¦Lµ´w…VúºYÈQ,&‰ó’ÐwÌ” º”“…¦V 8„¦ßàr S•@AïwLù/Bòê^“cJ|ðz¥í4‹ˆÇ" ¢Â]h|̼8ÅL¾ÇWЋח~fÂâ›Í¬_„6)aÖ2gèÃÑ‚Oé+tqEð¿,æ|nàœ®}Œ*S,ã #oÕoÁü“(üðÒ½†Rª‘:Kk5S¨Ë3­¥½‘RMðד Ôʆ· ¹³,RÚ'øÿ†vHaãjÆ!a_B¡?óÎøÞÅäl²ýhcû‰oÛ£ŸÊV¶Ójø{jZJÈ#ÈÒP(›øÚõh- Ñ[\ˆKÖ_ºóz{Abï’žL®Ÿf¸ÁHñPäæ65tÁ9žˆ”Njc¿67xЮùD$nz`Ãnfú9$Îlàñ‰È±¡¶âûãûE¡µÆûR_¥–ù"ãž©·²Wjów±˜°qˆôÍŒÝ/¢(ýÄ.“¼-½m—m›zî§"sXŒW"q»4΋»]ê3z­é) ªñ2ä%:&X!ꪻ‡ž.X`5ÖÆ‚™o]te•×™L¶eGt F2NžwFúaö!SB ´§ÅÞÌ%88p÷ ky™–—gÈ=¬tŽîï&|ÊPxlÆÌó—X1þspXÆú8dhÑ’äó~x¡x5üÍ”þº²¥âÑ/†|ØìþPØÛ¥ 0^Øk—ÛzЗƒ=gŸ4 «~A¡©}X¦Ù>5ÄüŸ:Üf€à_F~ƒ?Ìü‹"¬oº¢ºTcï5l>îô?=‡ìÔéÇ·ÇHQð¿m†ºÌÐgŒg3;ýŒp¸Óÿš Ѧ‡˜´8†>'üŸÀß2´“§^xãK“uqø/&_(ŽcL1….ü»isÈáS˜í2¡a©p)ösx$îõQÜhÖÑBÉÜ»ÂÞ6y`´°ã9æö"äî? Æ! zgë ²Û_OöE{¨GÿFȸÿ8©ˆðÌ~…ûSö„Ñ{¡«`>؃_ïhÔlÙƒ5y“Ãzá`.w°>£\¼ò geMËüÓqº‡ ¦ê…;ûqŠûvpè|F(Ì~Ž:)/ m²ÃÃê¶ÒxïËÈÝ,(.P‰FJ`üÍgk¹Ót†L!†L1Ω¯Ô=Ýœ`ô>-Ÿ¡÷¿úÂì}\$²2 þbʃ¨ñD3†5p3fËõU™Ùñ æ!PhÂÊ{,Ÿ°÷j…:B 0Ðÿ¾gC”.c ¡[Ûè”à|½1ÂÞ=+{ç ýIœNñ/,K‹u¾MÌZØCõ¢âäýeT—&¼ì—ñÓ“FŽÁÏPlƒNt¼ßÝÈ–\( Yôq ìÂ^îÛƒtÈÙ:Gd™ÿ@#d—NX`¼«{„ÊžW —ÎUXYc½êzÄ eS Dx†›o¥AÉÈ í$)ô]Äðn{MõÌY(œ«r­:x ‹—f*’·‚îÂ[ê_:í‚h«8G{è'å/0"Mh¿9À FŽ \#DŒ¼4î¡“wAàß™W¬ìAÁ¡â»dx“|æ±oÍP¶8dJ²ˆ³U (9ja&^3ŸeîŸ;V„8ª &ßx£€•ÕxRTý§Î sÐÔõÑxÑpê”Æ°Ù‚DZ ÖZŸÂÈó ÈÐÝ=ÄËþ“ŽF…n댧t3óOAëñ{É™a—]ÆõGî½(…½Å´_5o¡ø¦oÞ i<ozÚ4t#›%N }á›7] `¸Ù7ïï—*„W] BÑêý’çP·¹ø%ÀGSK\¡«&%€eéŸvøÄ;ýzByì}Ùÿ¼â@¡éaÜp R»Á-;é*çN´HÒžâ×ÜB<óÏcÝ'Ú-5·QÌÑc† ´¦¦Žbš1%5[)æE3æŠÅüڌɬÙA1÷š1cjF#F¢- âÕΚP—ðcMË´5˜à?5Ǥ]e¢ÃPà‰‡ü¦-ØŽ#$k¯æŠ)þ7T¼íÜyãIhÕ<“·ûh4ïNÊÛaĈc£U—ßL]ƒôªy-¦Š BÓèxƒ YQ£`ì#<Œã £¬”b Ùå7íá".C,7)öQìRì«÷€boQUr»²æXL¹ç›•ž^Y3ÅüC0ç\’Œrƒ1Þ.Úñ"ßø&ˆ-K(}¼ù¦LY©+Óš°´Ï¨´¿¼g”6±æ ŠÙýžQNrpN{çMg8Þ*4ýÇ·)/R·@›ÀŒójNRömB1Q~3/$Qÿ Æ´ãZ¿˜Æ5“ÉŒÓ9K¨P רŽE‰5Ó¬OZͨcXÄ3f|ð.´—fñø(Ñm ˜9q «X†Yã’HÝ"­ù´}áyëˆÑöÊš ŽEkøÒ£†ãä73F"·†fÖÌŠV hil]_Aõw¢È"É3P¤ M³ã•.ÝOwCm® ÚµÆh·1GЭ5ócÊ›dÖÎaÀY-¡:š# ˜þnæè +îT‘)ßͯÇ|ÃGå‰h «¶š«b:üån³{kЍjO™1Bp²Ý˜-±KÂE6^hj‰á‹tç|'Þ9×Ò±uƒÄ7u­wNª/©YÓÆ+»cÚhÈÀÐ…5ž˜±Ýæ8TlQ\<Ö)C¬f4Æ…‹â¬´?‹Ú¿Û\Š®QaâBáÛß™Ä@Îf "NLhÿ5&ÚtRæ¨Ëf€ÐL=v‚¼‡Äwà‹øÿ/ ¹Ž2=gŽS·“7 ËU¾ó\`ï!‘/á@Å…@à´€Säžä )jdy©+Å¡üçÅå&ÌåFê,uûc(iæE$ž†²Œ(|vŠkü42•£„+k."ÿWû ¶_ēޑ'ŽR·¿¦Wçè7NôšT%7;ÑÚL+z¨º†ãîw ª:˜š5=´ø¿æ¦vúÑ;óÌÐg ÕfÌäÊš¬É›íP“›âýK†ë<¨‚M¼U§tq‚>‰ óãcŽüìDÿÚïÿUûUíäߌÁ}^Í­óñߌb'VÖÌG\«×çq]9¤éµ(Þ#¢ÉÄNô¡-GÜl¦yÐÄ}>n7qÓßÙjÜ?5ägTÙèÁ>&ýH-De#‡f ©R%]#wé\i©J\’[èhÈSIÇÈ]zt9€_€F1ºtû¶Ã7e)U½åË´Ó*)çºrö‰P™‹±2?ÁÊÄ™÷ûLEþ(¤œ–?v%¾¥”¸ˆâe,õ±û•‚$€ÐôzAÙC$¦²¬¾’ñ¶àÓÜp|¾ÆüÊcS U£î÷¿½üeðJÉzàp^LTö©EiŠ-”¢×«2ÄÜOÔºÄdjµRàjÜcŒs  -ï gÄqÉaV—œF˜7ê²1ü±µZ#4§¿LbiÍ1ì1]Üô^ŠšnþlÓ@DS©ýñ&àŽ9ÚèW¡wC[«¼›Ý6ôþ¯þ»ÿ-åÍå•Uå¡Ë*užÒµÜ9ÚV>JQY剼€1Ú͇˜Æž_É4`=a™ž@ïäáñ P¦‡*ù×È{hí"IòêR†žñ­‹ /Mâ꘩¢ªµq1¿HsuØ_Ga§Uêq¥‰KeÍd ‹÷B_³éþÚüv‹”«XËÐñ‘д‡TjdãâëzG¬e þP?IOe¿Nižù³²ÄÁÂJ—R2WY5OiïÌÏÄþìÌŸAnSØøØŽFAÂ]~6üqˆ.˜æ¬ÜÚ;9äÄèÃùä!|´‹µl#-#Ó¦•{ØŽn>êÖÐe8mˆXÍ® )E¯Ó’¹J—Á©ysIMÏs Þ®ÓAm.d4ûõ•­)Å*1A¹Yùè×Ô¢åÍ$}6*ÊÒ±½ HëÏÇiÆâ+YÏ…ÎW8m®PI^”©´°X¡·gët2HÕ¿Ú/Ò7ãEs4¤ÚBÑÆäI)òZ"KœoIª%È·§ÁDñª…ºPoC»g^lÕœÌʪÑ3Ì~t¼‚''xj–ÄŽ5ôÒD¯Zàº`Záá)]¾=­{ äÛXêHkq®Ÿ©3EÈÈi°•&ëÀ©,Àg[ÜÑ&ˆiêš4#UGçÐÚúÝè!ú¬è¯ß85|$ÞÆF}<ÆÖ·ÓÝË~pjNÁÿÑ+¿žŽ.cå䥹„Ôò´€{HqkÆûoìE{<†_â¤ûo´p¼Z¡©Þîfn|ÄýF±âí–#öz<·¦·†˵qE˜‡­¡À m)îcJE½úØX©G­x#°r4§T¼!»{­rEº—T‹9¹m(g_ýœœMy RVÎõ ê2Ѿ‰L­Î\ˆN(UTçÇAgÖ[µ…ôœ yÂÝ ²”˜³f°£àlp(dVÅœr,PËóÊË4÷Jâ0ffpìÕ^ì“ýŸ(î.¥âmµâ¤ðÌ;Vx„g­Þ·Uw—Zñv9³üúIluƼGÇ×j9‡¸ªxÕÝ«Vô)Å‹”ª’ÎbÆüÅÄü›žÚ†éçʱÆ\ø¿*mÌ…T=¹xÄ#7”2 •߀¾ŒO¹ð¹Uœ÷ná’˜± ÄËÅ‹¬rU‰¥ ¶ÇÚsY÷~»õe)ºuÓs#kÕ{FÀñÆÞ“±½3ºR›Ÿ`œ‰‘[BšëâÔú´PLwêÐ>!p{('Müqô^UÁºé2êòÚ3ÚÆ3Æ–ß5ô6|í7Ú fTvÆDÕ=™Cc(‹GË7“'C/©R{•,Â%ì %!z¡D¿Vk­Ý¬íÊŽÞZ<Œ„%/@C*”pgÁ4Ö n`?kÙÏ*ös Ñn76 ÝËÓÝ=ys†EL„†a@êWÊ2Bñʽ˜¢óf¬_˜;r~ŽiR2î’sP˜žŠ¿9k2D‹ð+ `jA†¼Õ‰Î¶6:µµÙlmCs´¥FÄq£6ŸEx´ìlÝñB†nûY¼H­*þÔú‰Ï¹5íÄ[:¡‹Øø‹y˜«_¥¡¦ÆnáDUEÓoÇê£ÿ «dš7ÕŠ|O¯jª>u±rîœj± »+Å eÿïPM†ZŠAÝjØ V;@v„}ŸÐyÏöu…ÖŸtÚ6tÚÅŽBîb懫0®¬\;>Îb¡·Ç|[ã-â²<ß‚4ôHíî°A®å«¼ÆNÐv€Þ‰Ðq‡o2è.íâ<ø³ÿä㟕øÇ’GÜJ}{å.‡wk/FÓù>C(‹×tÊt'€C»ø³]GÙÍÆlôF(eK픇ôlÚOé´?”¢„õá¿øÙ¨ÿ+¹·†™D9º/cø1P;êÜn˜]tnŸa†Œ':é² ñfÈx}ŽfGH¼~„”þ]'HjüVÓèSÞ4m-f¢ ˜ûA<ÿÙgn²Ó­1ïƒt“–ô›Iƒ$ D癸Gæ$ÿÿEþc–àÛì²x§1CŒ'eb%»ìœŽ`hz@úíƒè\Z­xtþ¦;©a\§nklÉ-¸¦ 8s~ü älÄ(QžgÁ²§cR'&­#{†¬)ù‹”%•éAí’A³êy¬†¤FÀzd}šÖò 3œÝZY3 ±mAli¤zÅA­Ðh7Pýˆ'²3vu0EÛ²?©yŠö‡öí76³.['×s/ÔjâÉF<]¬M>æû\Œ„±ø*‘Î>Ê®y÷¼Ü”i·ï7÷O+kæ!hßèÝÓ>H÷ÅŒö!hVyh)-­ç·Š3ýGaQvÃø3ÆkãÐĶUeÚ cƒI,©,Ó~ Cùò UJE4%ã­yl’Ê[ÅVÒʉö\uE¯×ñ•šëut±ˆ¬5úºáÇæ«B—¼›YðãɆº›={eµIù’î/vå!ªÉµÐ)=Œæ­aÜsÿ)ËøÆdoú6c2 šævüÕ4&Œ“IcôgÑØeöþ<‚¿ÚæB„ëeïÐdñ*úIwÞg²ì VÝ=;‚[4±ÿ±{‡õø›ŽŸ M‘^ÑŸQ‘ÕBž½ÆB©.@êÑ~e3µÓëi •Ћ5ø‚>ê„ €‘@íëZ¡—:+<ù4ßå^œÐú'&†2ÐômLhÂËè4tž~Ÿ¶‚o|‚ ÷‹uoöYO¢>Ö^¾¼R›}Õ1Ä ½<µÖPÞ7(8Zà&ÁCåÿjihq `£G£y&üÏÝxYˆÞ[$|ï·â5vý»R»HÏ7º;Œ¢ž¸Ç¸`16TË æþÔPWÙÅ\"ùåÉ/8·Ý»]Œò)º½³´³oä™áC†àÿ%h³ËÿŸ¾aa1oØ’ß~†v@&¢û»=¤>9=Ö™á¹æ«àëH{Œ`÷„²‰Wj-Úßî7YOà€ &ŠÓˆ¹ž»Çd.”níãŸVžûð²›qwíüélâÒ8AÎ\MžǪ÷¶aÁy†Çv%‰¡ÐѰö·.Cö$zÊ´ó‡TúnúS†}}ì5#ãê{CN%ûõ¬}9ôä}ýlúz¼Ušˆ®¶¥I•L$üá·PêOÌ÷'‰JÊá\zØ®>ž=pg\ñ0ܺżöWÉôàR|T»!3»-§Û;…Ýñ-pÎ’Rð®ˆB9«¬y9ÝÛ>¶>:ü-»s¾×°#úTç„ÿ/ßk¸p·IȽŒÄ¡é÷öÄ‚þnÛKþvC{»aS˰·H… çzâÑv¶<±Žm— ç|ä²°ef&›6f°žýpìgû)!âÞàŠ¼y—Ý0!+ͼÉœyOÑþÚúþšñ DìúÝN¢xv¾½"öMEß]äÉV}W?ø^PôËŒ±Mí[fµUjw*ØTÖF»ÜFË͹áBhêxz˜&òÿ9 Õ‰¯Ôö¼Ê6Ô ]íš‚oé¸ èëucÙ–áµ0×Þ­„+#;±tm-»%掠¤é+Jq”¾¿|ì|¶ÜÚkч7{’óÎGƾÁdñ>3dѵ¼"Òžž2×Lû¦*Ó.Ç*(æ-´úh@>¯P¸óS¹¼ÃT$ï0•Ë;œfÈP=Ãä ûeÃ>©€˜òüVz<É`É%À’VºŸêæÕOÜȘé8©¯d­F-Ÿ^» EÿYRô[_EÆû¨èyQ·£ƒñEͬ÷u½}ß‹¦ù’®T‡¦ï!I“¿ð ÌÊcœwªÐo£78§•7î£.éÎM@ôá™a¶eyðfàÄ*˼aƒŸ¡ß/ý»È%ïÕõïmq†9>¬m‚öÔu®þ<¦'vºc C  ƒŒ¼qÀ'ßGÑQJsj%»Ãwë¯@u»4Îxo¹ÞaîZȀΩËXÈ&4eá¼É­w [Ôÿ§Z¤ßïvàÖ;(˜s Ó„öö¾ÃýOK¢»·¥ÐÚìî•÷ÛÈVK¡¾„…¶(|YÛ{œîÏÙdNëpx3𦖖'~Xž¸Ø<…\4S õàe>a§ÇÖþ1ß‘gI¤/kûÇÎŽ¼xö5¶ýã´Ž¼üÀ ‡Þ㺷Kƒ/RÇãÕíµ µrr0…Ãýc=Á¼ß!ø¿zcÇÜùùèËã$äŽã¶±R+‚uNŒ„;ÁBe4"o³|ÆŽ>Ãì:m`yI šC¾ìD×p¼Uœ©Éõ3ëRYh¯Aú÷oðÇx÷–H×Âïj»q©_­§%ºÃ<Ò„€[+«D×F÷©ÆÊlMp¶ÚçÐnnÆõІ>Üõ›D UýÊVO”%mŠ8ÝšvæS7é£ýëUªÙ9ôȇWsÔÃÚE›,탿I¸šÑ&ãjF›"ME–'°ë]u0o»Ï4‚'‡õŽD1 þÂBþâëõŽi^~‘œýnté×@oN3Ý‘½Œì"Ù«Ém°®ˆ«‹-odçëSõ7d¥øØë_ƒ-–ž±/¯^ƆÑO–iŸý„ªF®úõñ_‰ë›Mi•åT÷=@¹UOl½#lŸ‹9p‘cß4mö଄厎ún5J$,’ÏÖÚ̾@™Ï*Í M‚5zmV̾,í7Ï™9ª­æU´àf«ßG£w”i?³’~¥ÔWò€UØþ[ô•\DëÀ ®'ïÿF÷wŽëÁIÁíðÉÚφ£Ø²0ևɖhǧmª…N|;‘5çW"°ÿÑæ}µ™°_úb+‹«ßW¤ní¸ÍàÒ ´¶F&£„Ò Æ… 8>ÒÓ¤d¶ð‘¿;²mn°_Çcºy­þjƒ«¯`kŒ™=LŽæ–Íî~ym*Ø=¤Ü‚¹õ£+ÕÒžÚÖ׌­›DXü¡×çè6ï°»­Õ¼±ô«üî¥ßo'@™büÝ+ÀNyñb/m€ÑžË°ášÐ<㾃¾0|e‡9çZ‡- —4˜c/Ây´ƒwžsa˜4aØÂôç™mõ æ†âûÚ¦‡™ö#Ï!˜vSM›(õR´¨Eês´ˆìØb˫ŷØ)2·xn½ÓÃ$Ö§CNÅ„·ß uƒGûðy£–7+ϱ(”]âèb´dŸÁ%ca1ú åz´:/­ñ²¿»gÏ"DŒŒ‘ï•WàL¬–â{.ã:,³k“j“j,¯ÿ=[â÷Ò•¾´VùôLi{‘6™æ7îáÀÚ‚.„ tɉuÿTº…g:böGºP"›×®‰[ëú”îÿ®ÇÖ¾I0Atÿ“*ŸÎ«“÷ Ùå}]Jw{H·±ÊÞPßøñ‡( Y}Þ¼Š:À±xäÞ4 -Ù‰¼ÊVC´ù¤ïß3{yåÏíƒSó7/ŸšM7iåS3¥ïê^1© ùè´Ð=DýsyëpD¡L$…ðä>PvmÖ¾ÑM×*·uአZÖ¿ŽþÆŠ°7‰Š+P*xå€òž@禨 lâ¥do_bÝ3ª{ ÿú©fÅ£öBœðL§Õ M­è Üt,º'ɳm6Æ¿Fµ&³cÌaµ±ý;ÙöŽ¢ÊEkâ?œ÷:RìXVìæ89WçµFÏK¡ Ðéíÿ‹‚FdŽÇá¥@±ÂÞø‡€ùùÝójH€Eå@^ƒwÛʇ#¡$î‚0°¿ê… õsíÿà°÷Ñ%ŒM/ Jx¨Xñò„"E¸¡Ž¿ùHþØÍî? õû¹|*±î~ùªé—OÅÕùŒJƒ‹ê}ƒ~|âÌ7zd\y¥zy,žÑ| =BN%Q‹[RÊ.}t‘þCïÙ¤äÁßÐLÿ²Š38…€ð¤Úx<óoxظÔͳwpð}ÙpaªM´ûÞpV–!Ì‹‘éY~*…³: ™!ªéJazÀý@ͪµk?xP÷E']ºNöþÑâå|K×s²×…w Ýo¨]JáÅò˜ö 7ÎÒREÂfʼnڳóÉ\¼0-+sfU˜GúÉMFåB5ù^zÈ´JÔ6SF<‚Ìx¥ˆ\ZMÁšþE \Y,\츾ÝSc+6ÌVyÀ‚¯G‰ÐùoÐ{R»pœšïuKk¼}Jz´™ÖŠi&J.s’V0 iôÞ¾›÷ÝÚ€; %ÞLr£RÅ,8$^…aÒ÷â>®Thªû8Äô¯ËdæÇa…:ú_­Ð„g*3­‡Õ:Ž@{•Š>{iïØê>@g_²`ìš<2¡jH–ârJ6!?gyV`çB}Í,äS@´Î¢´™Ó™±ß™GuWWê™~Ät›Z›¶òAœ†‰¦zœUË‹ÆÅÒ¹õ…ûɪgtØýl†˜ÌE<óÎúca7Œ¶ˆtQMÞ)¼Vt•a+”i‰§"‘'09äPÂqÂ^~QÝ~xyîû£|C!”´‹CC'kìE;ý0˜Ü~+üÜÚáÇçfÄ¿~nêðsð³¡Ã??ìðÇ3ø¹¹ÃÏÃO¾–|Zaé/F ák|6ÌxçiH7 ô—?ãMá_ FßxjìÅ‹à:;4Ó~rM öBÞB43Ç~ˆˆ£ª´-0•=ABé5VçýT¿‚*/|°a2oݹ©¨_øò {¸)ûbÐÓBÉ/?vΤó ø0Xó*ý? Ì¢…&”=¾«-BÓ›½ìM€¨ÒZ^4NïÆ˜wÊΠŒPÉ5=u£ •jBeÈÉÁj¶_[›XÓK€¹ç@ÇˉAô¦:g˜ RM¨q&'w&GÙØz ­"dh§9 !7sïØÚKk2 Q»ìv†Øï¹º|ÚEùSj<”ÿ÷fþ‹ÉЗËÇÖ^^ãÃü'Ø+tÈf~hzJ_ø„¦ï$ ?Üyv‹lØtÜâƒvï#¨BÊeââ°ÝèD C{Þ ¸I&œ`ÂYƒøhÓïÈÀ È äƒèyÏx(¡¦‡€ÿlOî cÚ”òó™Ô‡»ÆV¹3!øË Q†ŸÌÄ2¤° 6Ì€Þ@ :}¬ýf†‰çÊ%ð¡5µ£jNtî ÃÛWÇúaTèÊì0º=¨ð¡À„fn\qÄH'Õ¾nJRQmFMFe-¾§äÑ*ÈÒĉ™¦µú®Î}W' þù@ôbÌ×¼äÓÿ€y†ãtv üz}$ÖÆd…S7 }‚3£*¿¥/¡êZ¾Dßø&ÛŒ³ˆcY"Ó }°‚•NÕΫ¹«ø—Ó@¯¸š‡0ÜŽwJ@ZôáU«ç1ÁVóKLx íá_˨‰ ¢`¤7ãHoÏ>šs›¸ásþìMnáÆ6s¹…9'¶}©t~}ò‹ávñ72Gd•ºáû¼S+ƒ®·H5ÏbIÐ%•ÛARÅHœp?UV4ù.S‚ìºÀÒ‡› #ˆIqOÜdÑÄOcRI^H BvNÆå½XiëÉCîG~e«ÞG¢2(°2)’óÕÆr„޹ó×eªüÆvìGè}Û®Œ\"Ž®Ù…H0u6K­aX•Ò[ð­AÖÿ,Á.Ö‘T “ÊŸû A“R`aBO’¥O«š‚Ÿ»n^·n]°ý´M©xLy½ýôTÕûXÖ»Š÷±÷ªµ-«Ý×>Šnv\Å gc&€VR 25ë4Ã[X$ÆÕÿT‚KÐÜsÞhéªô$3*JÁ^ŒÄáß]yã7ú?jÿÌXðSk$ë”RúX‹û1Ž á®RÞ*\&&ÔwkÁ9XçN:4¬ÁGÜköá\¢Ýv7½ ý#â½è­Õ\û|„ùGÓ÷gõ+úŠuîÏðT–ÞL§±éj}(ž½/ŠONœö]•(~-ì­›)ÆÉƒ³%'þÑ7}},e1¦üPš :j"îõºx~çÀL_C0^?¿+=ÙxÐbékÐýuʃË0Û­Òc²M$(ÜW†Š)IÁ×­±þ¨1¿ž•F2Ý®p4ÞÎ=ôÐCêâ"î¾Ð¥[îÈË–Io†óXÛ@!­Mß’/–n UEsmZ*Α2‹C…:¾RGã–2ªÖ²BëA<¥}€f¹?ÒðQLF½¤rm SÒ/…¿”&lŠoü„ÖÆ…¯ u5Çzn¶ÈCÇJS`}±‚²ª–ö8EþDp… óÅ`ú;,>³ˆöþjXnöÚÝN«»·N´ÛìL?÷öYÄå÷Ù dæé ¶2ÕÝçoóÚú»ËÐ~[ËÆ?º©wb÷`ì ­W:£~—kýu4v$®àb¨”(…µ–C-àÐ'Š tÚÚÁ±Zr–:khÒ›@”M)àÐBÜ6܇éɼìM#¼i)pQ%·EV=޲]¼º`>†´!†FcWî®ý”«ñ£H‘4žÂ€´²?¸C°à=kàut$,ë(¶~¯£Ø¶,4–­KÖÅùÖeù¶"ô6¹ß¾wtt>í°g.“N™÷doEšp{]¨>‡;ìs0½Ãšn ¦!½Nã¬Ñ݃z§êîiïáìîÕÛà:\|¶8wï¦HèÁKñìÀLõ•i«Æè$ê±ÔÇþ@ê—:¤R*óß}‰•2DÜ=Š, `á¶*÷”k…6|U¢‡ÞåP×síg\ÿÀ~j¼zÉWïlìÀÊúÃõÓ•ýÆx[Ê\¥l&hצ&îS<\ûMÖeþpÃÇôŠÆq¦/¬â¡ÿ÷cj>4Í•)psší…ß#ì8tÈ@ê5~™ttõ]ÇL鸘í@XŸçÑú6ÁŽýP_™ë>^o‡…²HX;?B>Äâäœú)-P@þm–ž±ûrsêS"}ÕaÏÆVzÓ’ˆ›R$gnÅq)Y-=Žä_$Dæ@'kê¢Lî} üåñð×ñ~ÚþÖê5™¼º‚S­úΑÝ:v§oÖØMÜ­Ê n5ÀzÔµ™Õ®z8ù´EÚ,§]"ì9 Ÿr‰37äËA-J„?ì;¬5¶…ÑÔþ‘ëì’İFUÆÂ¹ðPTŠÅ2'W®´)ÑJô9ÜÓĬýG†e6Á‡°çu,òš çAá]‡?kl¿Œ•Öø1åx§Ø±,Â)üz¢½Ì@; p²¨Æ×¡V…YcûkŽÑ_#ö/éfÿTù“,ÐzÒ8íò)¨½[ÀîÀ"õ¼Û é°â}ÏÈk—÷ÙaVi΀ŒíÜ餹NGeìàêè^>ð‹ÝíÛ¦fö¢–¿†vŽ[[å^îá#Û2mXKÕ²Ná2ÌÊ\_6áÅ6¨ æ?rK&‡°JÜÆË=S“®U¹Ì'x˜Ä±O8X€ÂÉŽ'\,à|" õžYsdö(¯=ŽéPÄ㘬@ÎÇÓX€Q”=ŽËöÇØÎœŸ¡¿5ø^¯ö.º?½ƒ¿mÏwÁjð¥Øê'ƒ6ý×8جԄîã7zéëüšÑ8ˆwÁ…&t@ÝÒ8ø|‰7ñQíÆÁNü¸)ØI ” ؾO.½ˆ·5d6nÇÐ÷ÁZ¼—vàÇJrÔ8¨âÇuÛ*ïÄPuhîJÜV s»ò1xÓ®ü¹N ï*Ä@Å®Eø³ ¾Ýpï*šÎüÍí*ÆÀå»Jðçbø^Œ v-ÁŸ)𽩻VáÏ(ø®Â@Ü®<ø¡Ný°1aý÷Ë3ÆsÓÃ΋ܼڊGjò>—ÒŠ.þqSbø™¡#;"ï&oþõ£UͤØcÁIÖX?ÿA¥Ñ3E."쌇eúÇ òétñ¶A>=IœC‡›=Èwº5]q8+¥Ç@ƒÏM°V8†6°^-=¶B{=;tâfyDJ&wÝÁ…<®ÇJJNÈÕHÞ·€Ï¿dá–tâ}ƒ3Ĥ]0G2:lK0õ5ÝèJ?žèp2⮸¾ ÂczT™èAž2^ßò‹¾½äænݽi7>p×ܽ  ×ÍC% Ï4Oì¸1ʦÏQP:â`¼{CtŒ)„ÑØßnînÞÏ}@î>ç ;®cî>3>Já }”»ª¾HØéþ–‰E-î!üÁ.¸%^ç?ïqàÐwâq ¢ Mñ”¥¡(¸4žäŹëã⇿ß×ÜÕ¼ÏwVf¾Ók¤Y‡¡m-%Ê´¢à@!ŸPDŽZt{ýÁÅR2DZCYìý‹Áú¶éïÍø—Ó·]?„ 7²=h‡bç¹xã$Q§]h,žÈ wæ£å.AÙ ™ö~ ý |±taW}el¡s­Wh >@ù9„ZÜ'Y]ú‚ø"°o°ˆÚâõú&œ]_DSç­qÆ)ó‡÷†¯¿C“ÍõÄI|f°Hð߯VØšhðÇ7¸Hð«è7ˆký·ÙÓ-M§ööF«Ug69ŽÚ|•3¸ÊVœÉücùÝÒŠ9 ©˜8€G~õ z¤Ä÷QdêPšop}%âWâñA²£IgõRgô’¸]ˆè!žøãßm/ŒšWX7åA_Awz&á[hG§PÑ“GvÄõœÁSãwCA²Ïnð/H ”õ-¥G›W$ôp²`ÿ5بÿ’¿“…ûŒ×«`™änH )z[!××:bÚ‡õ$w•ã;‘=a 3MîØhÀ·_bÑ¡÷ Ò¯qà–[M‘Ø\ý‰ZÁ:1)4ù)äYS: Üý_´FŠRó«?‘z b^:/Fÿî»{(×íîn´Ñ;˜øulÃŒzáD{•vÃI&Û¨ ³Fý” ²8vdé¹Ô9æyµ)齟XD'Ö ™Õ@B¾lN‰W:$ý “…&4 þÈÜÿô£‹‚he~;‹‚1¿±?¤"ˆM/ γêßWÀ÷Ä¢à ãûBøžTD¦€S¤–¦…ó㬂߯cš°/w¥#ïl7rõ}—¼?›_}ƒåŽ(Añ ^c|¦å®J)6G=m5ÇîâoˆÒ±ˆ×Úεhñ¯¯ƒê û6Æo9>”Ôê,#ù<®(4ÉëYb¢o0Kð¢C®«ÆÛ áYD Ù«YÄ‚@Q’ÎVƒ/J¾Šá ~€ñ…Uç ï$ë€Aš…V2ªÛU¤Ì…ã|]^îÏÖ“Œõ@[LœŽgÛoŒðGRÍ“Á w¡p㨊]é¹ÞbŽ!@½˜X~È· -C< . b\,¡M,‚ϱ “ä«,Ûâä«-Þ$:Å1ÿ1C¸iÓ_í;ÛQâ³é 0¾ÙRB>þˆ§ZÒ³ó}¸ÿç£ý¿1­†%‹1ßÇÀÙº$Ö¡úueÀõSaïþÀʲ®³Ðé`ï Ïè¾'C±Š0¬‚l¯®Ìäå^Çûï§gj—à ]”™}ƒëz¶Ö?’†íÁðËÈÕþÙÿɽkÕk2oT®ÉÌô5€yd½Aá!v‘RÂɯ­ýN,ÿ Š#²ßÙ9í·D-ÈFúÍÙéG¤+k3z8u-ÀBËþŽ*û>ÜׇÄïªC´þ‹ôú—˜õ/ù÷ê¯lËLSnÉL‡|7*ÿSº-UÝ–yƒ°×q‰|*CŒS´¼_êý‚¬!%MPĪ˧ÿù¡‰Š˜é‰g:â!“+Ù%Ô>8UÑä6«òÞè¯B‚.õ~=JÇÎRSl1#Úû>ã#‡ÒÕx³ˆW5Øúß;rüá{Ï;¢9øÖgbòFÛ±ƒÇ¿Îþà Þ³4pG´¾ÜßJ^þýî÷ã,›~ÿûÝG´ïêàÆ^¼üs¤)³ âò$?eÕMQ›2ÑI¢ÜfSXèHÛ‘ž#dúH™8rZ…ŽÄ-2ò òQG¾ÿÑ‘ƒ¹)þH{÷Т#q× Ügµa†z'+£SîÔËèþ¸»½û ”uº»Í(Mxÿ”×S'ðÁˆxÿÀ¥”žî¸•ø÷ àŽ[¡^?r°;n-†NußI¹»õú1\ïwíHvàn ¬—'òYðïRøW ÿÊõ0ÆÝ ÿ|ðOofèGânÀ"ŸdÈé#´Ì脞P¡d)zúÅfäyEÒ|p$®&~„,¯!QöãÇ —Il„bZ 9‚Y;2Ýj¤Ï8gºö,p˱Ÿ„Gkýè3]åABh?‰D^™þ-}>Âøó1b©6ƒÇŽÄ½FÜU—,sdáqüšÝ‚ˆ:2¿qh ¤ïûöt䬯װŒs’¨|Ôn3jÏŠˆÖ_O_éí=ÎöçˆþÓÓ³ñ5”™L¸KWG+®LM8wÿ˜é_œùîôsöï6’ßl,¨Px×`Eö+o)ÝÊëL~oûVÁúÿ,øt&z½U_!²ä|cê)Æ}7w<Š)÷e¢{n%h}+ç”°]eÂÃÞQÄn BÙú&„q‚°þÓ­*:ÊÃõìΰÐôyƒÒÑ|}dù²œwúõdåy*çÑ;YÉ]6í ÐS)½…‘ÒæªÈr¥oÙ´6©ü4EþºLÇ2í ¸Ì¨oW ; M;$æè˜„¥w³P¬|µ bSU ´/žÖR ÃÒ±áõlT©w‹ÅÔ½ÔŠ§)ùf·å÷r©äDðíˆóOlÇß´Þ–y d®É9zHí±5»#¡dåTãGôQQf™Ó9äæ!·C»7sÏš|tþVFSf+#fô:8QÎØŸ§8hÞ²Ìù¼!A9AëU%¤œY6-"+ÁÅИ:íŸÐuO3~{%³™zp|1ÑzÁ)¯/™vP¹Âԃ͌ÞyJ‚-Ž‚é@@¨¹€¸)ŠX ƒâ¨Š•/5ƒ:N;”ÔQwŸ=ñ®ö?MÖ‹ÈùÂk Ù”/ 5Où¦m›ª>OÍÃs¢ÜÅèy„[^ê=‰GJ \Œ–ªOÉ´ƒõ3€ %JW´cè5“ýY' ö*ZÚp’ò€ŠpßZãïæm@õ¨'h9"09ôãbPMôú œÅçß{¨ÈkæÀ¾qZ›Ê¸TS_ŠÚÜ´Cõnõ}Ì ÿ$¹‹r:¤™¤÷€¿5Ê›Y_(YŸ/w/«wN‹Ô;d&Ô좜bˆŠA)°Xz2¸4³æ%f…HëF„ÈùLZÅ=©'ŸÉ¦S.­~ªòôºònÖËÝ&U¦E¾¤ðÒ†t¿A?×LùtF½nxG+ö€³W`£óçhz[¥ïAÝgb¯Î`ժπâõžêdåë½>¬|ÖV~¨ˆáv¦Ï”±|Z¦°}àPŠ=@b7»4Ý–sÄbö zýÎ-I”ðYó“!¨Ÿð@veæ-ðíÐNÁúwZ[ƒÙ”íÛ×gå‰ò{ÿãü[(ýœ?‡òoûóŸÂüÒÞ~Ê/žŸÞ•{çà2ÕíT+\þH§»“Í]õnösŒýt±Ÿ·Ù»ÿ)ñìrÄæ›ü‡6/„å%ÞðéHZU¥¶ÉB<òkþƒâ¥½ÿÞ×òTJ»Dk‰â~[­@Ǥ›h‘è¯8©”vÌ1µâ˜êîf…„~©| 0¥=ªÔ£œê?â먢u±RzbUïñàFˆ0ÛVáB³kj¡ÿÐðCýäB?0PÜo(Ç@ì=ÆÞA˨+Ãû$z‹û%èQÜÝji´g’ šž¯-Ñe2P+èm¥¢O)=©¢¹ôÁj£*½áëwðJ×P¬Šøº »>!óáÏTï1ˆúp1€N4bJÇ¡ÐÃ7a[ûoz# êÜT?â‚á5ùj¥Xé¬ o)¥Ç”×ÓÇÊ—Po,QE½Úa-ˆwÂsÝ=u¯FJ»gz±e¡ç[ÏÍëßÅÝØÏ1B¼Žž7o^_¼Ž{ÜéxDên§Ë”î^äö6ñ »Ò„òüâç7Ô øÝE#ñÆÙü?b€°RCw¡>Cüß­JÝÿ÷šü b¡£ƒ×ÿ¿üÿÿòÿÙü/÷ºŒÛ—ú•ÖèÝËÿ{¼"¥ùÃÿ)¯xßðGþS^Aý¿Í+Œÿÿ‘Wª*=½½´W—µ+Un·e³Àgôõr Ã8Ž{‰msg()ó FIíÝ>ß0ï~©å}œÿ¨Ô¯ti¾Ÿ\*¡Éh<ÝñHƒ ¬HO)/¸ ¤]|=»ÒÖ&45:u|œÂk®ï‡‡Ê~¡©‚Ü/äE(—G»òz6¥C¸+‡áöhoéYÎ\­ôÕÇíºjÚ±hÆSø Œþè§ú Ìß26°¤+;â;•¸©¤µ°%9ß%ìýjAb ²Kù릉 ªr?-T¾‚8H[YÔé •¿ÖiíŸò•øn¡ïÔÅRa/Qé”zwÿj’}Hù’\×þÅ·¯JlÊÃÛ˜óRsYe­­Ö®]dðŒt¾ê}°ñS¼ØÐH¯·Á:­ú)µôiå@ã ; Mì<ú¦¿[Ñ*/(am“QžàÿÄ»ÌE%ÒUos9¾Ùj×v]g”˜¥V<Øø1•xšJLY¢Ð”LòeX¹ÏB¹È€X®»IðÿåŒ^°rJùjXÁ…ø€t ¢yE9zo×®2Kž®–>Øø•|ŠJ‡%KO+}Ñ’ë-•«–6)VVô3HÃ]Ù0Lÿ>*=í¶ì£9û7:•%qýc sNl8©y& F– ¿ïf¾Œ_Ÿáß ¼Vñwÿ!O`M¤LJB½àêJÎÒªçQÞ[ê?$}ú»c¬¦ÞxJXàl¾ ojüÏý}(öC_Ò¹D…ÿòw¸´–Óz ÷_«ìWíÀð.Õ®–òëÔôù^xq?™Rÿ!q iÔ*6Í4L$Hæ¨M‘Õ 3<Ÿ¶*Ý¡Ïÿ%Ž*À±qÌøV±m½Úšy´­ º§ŒØ¶qg·íÈð¶½Ö:g¼Öußwãüã}:΀Ó6ç“ç§mû8×8çœç# gÅK´fø»ÿ ZÁ‹‰ƒÓ!è‡åÚ­èGˆ·è†üðŸò]ÆX›Éíº€æAåðB+Ì„‚|ÇÍxÁôœ6$>»MéÞ.|õšÅ –ö‰ñ-ãšIÉú+¸–ðÕ[-ҥ넯¯SJ?Wç­k,ýܲÐÚ¤xdZñùºÜñb²¼ŸSsaÉñyèŶÐ>Ôaç­S§È?î³É6dRý9äø^§–BA0O2¬Øß”zCwü(õUªlåÚxasò>¬j|ÛæÙJ‡ÕÒ¾À¢{ð¦*SjÊk¨/CÇ݈x‹Vó9hÂëâÕXvW¢pälÅIž¢¹€‡ß4 _ e¡z!²¯Œ”s¨ì.u5(ÜÊëÒkêh a*F‰ã@©[¡5ÌÀ+‰ ÄAéÝm 0c¾7ž× a_N„Æ´ÒÐÓhOÖ làC?$•Úï QPï—=+³Ã0Ë‹É5;^+ÿ)pŠ:KÅ}Ig‡U—óÎÆÔ@!¯òø:9¾J\$·9sÞÙð¹|zª°ͨÕI°F8\Ó.'šÞ¬>>_¥Ú+ÎÎ<|¶Öò~e‡•/Û?â:%óg0¢^ƒ®{Âý« ììöp•S@§ GœˆŽ-%\ÇtÚðÒ£²„S6ðʇéV8ûPèP`‰UyGYŠ –ŸoEå¼#È•¨4õ*ás·ùº{bÛ<ëœm¾cx›ën¢ö¾ËÚû’€‡,þ£«ÄL½½c; ©½ÊäÝà[YƒGaƒMáÖ´…¾Ži͞нJªtGè+ó¾ŽG»l5öôjñ`Sò¬¨Rk­iÆâ^ÄÂôÄ5 ÐUßÝÌÞŒä`ˆTs¯FhúK‚þlºoþc^"†îÒvÞŒÒïæ,æNŽà÷QÕy9*ø ¨qÎaáŽ?ÄC³ß²§ôàûÏ‚ü‹xìE®¿ƒ.G,QúåOÜÔœ¯’#B]NxÑTÎ*^*ÿÃ*øñÕwÜ?*ø-–#¥+G²ÚsÞÚæRoãä \£rÞšlÌ.]¯…YW|ß‘Õ5 ëªz54üÞ¤¨ÖT·#jHäwO]ªÖv"é´ÀÚÙò*ÞsÈÂn"–º8e¿üÉ€¾ªšŠìF OÂý׫n-œÇn\'¿ êjº)4 .ÄP:ì ±gÜ„œ¡ ${Òàq$÷oÉm—¿ˆ.ÙºDïä^Žä>Cn¥ÓYÍÈ}‰Nné3ß9rUï±™ÕÝvow”Ø ‰Ø×3bb3b DéUk ÷‘œhm r <‚N—ú´KÉO¨ö{¨[ðŸø@XWè¡sˆ³¯¯x.¶¯×è}mÃMM¢öFpçÌ“±½ó¾1¬qº«7d9\˳ZÎjÁÑ͈^ %lå@¤°þ‡á–†ÛT$Âw ·l£˜Ÿsg·ãbâËDÓʻÆÛñ{¸½>|¸ÿöá&4ÿÌB–¾ÅU¬…{S,–5«SKþ ‹¾L†³vÍ Pfé@ì(së£,]yw¦×ÑHÛ“uvpcØqåõöÏh€½®–:š]`tYUs×Enl¡q`½U¡Öì£A‰¬K†¬SòA›²4vd•<{®‘õЙaÔ^„ˆ±Ìm ”òŸmÊê(jž+´?˜Õ˜¨ ÇçßàþWÌX§÷KßSŽ´“Û?³ËОnª°ó€°óPÎ[âTTšÞ?]tŸÓ/Üq‚Yo2ˆœ·¤ú»š¹©Jµlƒ„Ví]PI%P&¦@ºKðZ—<àóå q<'^¹§:qÎB\H‰YäÂUÛ¦åÃZ$4-†ÎÇV%D[540¼UA¼§hÊDêík¤Uç"˜ Í!ÜBGÊÿã!4ÉBUÖ³‡Pï· ¡Þ{=?|õ~×j>„¶& BkYtŸßB‰g ¡KÙ¶ÿ eRÌ8¶¿GWbÇROðôùãå˜ñòDöÑ ƒÅý/ˤÿ>×`yfø`Yƒ{îeº.èÎ^ÞÃTFLÕ,We®Îw_³HL¡ž3”˜þbΟõ »è-GÍd|—“õƒÖî¿NM} ÂòÇ6ùõÅ …³îº~:=˜y åÁĺ¯ŒÈ¦ËÈß ÅÛë¾ÀÇWS êÍg^kÄþpÀõ>¦19«”;”r²5Ô}¤¾˜†Úõåh‡ú3êØ¿LǘT¢êdäõn'Æÿ ݯ(ÄêÝvÞ…gD<Æür¼8ã'Ÿ Ì\‚q`j1§þl„=«þ2€p´>Hu!šËÓñïä ø[ºc¥‰iêBT¾a Ÿ¤NÆÎ†ÕÑ͸‡®^NñañR¦”[H=ï2CÝfè˜Z«ë÷ŽaÝÿC™Ø0¸Ä¤71Ï?µc “†~3xuÝFui Ń vFµ¡m^N·8zúT½æCgg¾'tºKM=Ž#¢’WÁG }ä;ÊåøÜŠÂÓJbošOH¥ßãúkH]ʇRéPáï ^9¢| 4õe$mûçq‡?Nt½p z;8u&À‘(¸6ÅÉm׆^ÆOО“ðóÖÐïñ½‘ãç¦Ð#ø9ߌ‚Ïm¡€»68%°ˆ¹•´0Äl"-ÌD1Û‚š Ö?>€&¢ô ÖÜñ…òºÝ™•Š„WÖ·”¿gu­(Ó^_¦û„õ²¿JÍ}< J®ñèËDtrý]µÖi€¤ÒzjEÖ G)íÓÜËé %ûÞFœ©|•u:ž ¿nS<Ü㈦»ÏÚ—‡Üõ~×Å=aå=¦J—á—ëq䥪JúƒGE$®*Òe esè’„Õæ4†û•ŽÕþ°rBhÂ÷5M€QðQ©9!ÖÜ‚ÿ ZÖë¾PåÑnCß)þðª5b:m¤ùŠÉíp¡Òú)ó :Ù8H+ã0åíU„Ñ—XâŒ{qºœ ¨¯½^×Ò”1¢COÄpõ/¢ Ô‹úCv›¼°7€žÁîk+¹Ó•ÓÚ˜+Íáö +a!”¶v9ð4oØ*«Ö/ <Ç”ÓJŸöæ¸è&'xj<ŒÚÏ:ã‰úÎÐܨ^~„Wð$ÒÜ|üÍ7ÌpAt"*£$h•ÏðÂöàTwFØ·×i‰éõÜmèù˜{*†.mç¤Ç—³Ý¡i ö}eÑYû‘Ž‹v›ˆ\©ëìëjÜÿ ¬¼Ê©º{µy—YìH–dÿAéÓN;‘å+ ÄãD’½8¦ÃŠ×8Æ ~4K#Ü«p(UÞL|Gxæt#¿ƒ”v|ÏFýq!ÃJǵ8ŇÅQUµ0$VãP‡ÒwÖ˜šj#âóÆŒ)<;ÖÙ_húŒÆÔ+^t¶cJ]ºô†*ùEêEilc\i"ÿ)‘ÝçÅíµ0{Ì(°l@]ÁõïÃ¥Oðÿ[—Ü3[Ú'Þ&kœ²¯ý3›|:qÓuòi®3ž¦"æc­ˆh&l¿ï?œŽï,r°h'‹žBÑ|g‘‹E§±è"Eé,ަôàIè¹²à'dµÑ[×Ä ùuƺÎ`¬ÅŒeöo®ÖÇùL«¾992‘E? ×bg ~¬BðÁáÚßcXl§1Þ²޴æ@y÷-ØBd»iÝÀs£.3 2`.ƒÍÙÆv)ïÇñiQ³JŒ÷ÐEçºõşc*po”7kqü“¼øå¥Ä˜œ!/\ÃäEÌ#HÔŸáBäe ûP•ãð­mþ(ºDˆ˜½µ4|v ‚Ç=§Š¾ºTíšÎÞs’Û’å¡ÓÝK[NñÀdaÔ§.™‘SÚ»i •·BÖ÷Ô5™þ£Jõq1E]Ê+K2a½ÝƇ^nôöFðmÇ—¸Ñ%õ¶n‡¼µ_­T—:rŽ ½Réq1äÈ…è-x3T§W¾ÆÆY•­åz¾Ñۧp„~W®M‚¾[BGn[«¸{T©O]V£V÷²ÒãÌ3M+:ÇÚ‚k½xu…c¨Î=BÓ•´ßÖ§º{r½½Š§F)€…ƒÕެžøÔ—r«éî ¬ì[©®á•/AÁ ­Ã=€¹ýLœêíSV8”¥ŽÄ¦×¢À_Í£eîõ59'”%<ô‚àG‘¤—^w>dIÐêwôVC“u+]—s='ÈXÉ뚌•TûJù&mj»§Þ׈ØÉ9~K©¦¸þG{@ ¬9ïlâüaôeq¬±ÓBW¶Ù…ÿƒ*®ûvË}Û17°ô±Àõ+ ‰ÿ+)ñ­ÈûyÿWb¿Q)]9ÑxÚ{hšV}L¹ïAjÑŸê­„R¥ãj=v¥rjfi¯Ò'ŸÐÅóF‡r¿)I¾&³+‘=+ŽÛ+z±k½=z»ÏØÃ·óÊíŽMvų mGX šÆÓgœòWµú¸üW+úsŒV6pÁvZO#*c[8äˆOä}Μw¡¶¯€z†ófX¥Ô2ÍO©íš]qk«‚}øÎ >Éݧ€0–LYíž•95º¡‡ÁŠ^h Ö$B3IÕJ£.X“ƒT“%\ݯ2.Êùp£ Yjµƒ­D‘uªoèœÒq@¥^Çïaû'±]Â::†uë&Õ‚_ÓX`ºn`ý¼º\ü@…3°þÚº‹ñuÍÀú[ë¦áª™õ›ê\øæ^ô³¾«xŒTu9påÖ Ì\3€;]]Œtõ¼d³_K¢×ÕÒû°È̯ w¼OÝj#­•öÌÚÂg*µÁŒ„E'ÅÔ`ÎÚL¨Ëªp!g]].š9I-äU˜½6;”bÛF&¹Ã©VtÃüPÝ¥¬Yúȱ<ÚíV¯ç€Ks'㶃pGJÀnu!RrfmM]“tRôƒ.¸Lx¦Tš»ÊÊØÖRS‹õ½œ®ëÑÐïrHêÿ ’¥éV×I—Ðþ¶ÕBÓh€ÉêšñwPþ³U¥-«,v0tì¢=ôוp•†÷±V·¡D¹I;ƒ3•Ô§qÁ+!xÖàÐÐÛ8eùÊ`>Ó1ÔúÀÜ©Y§ØÂ6‹ífH¥ÔË_]»_'½º¦­Phè2Ì϶a·,PNã²ułʚÐ&ìÆÍMØÛÍMØÐ>í²F:w3ä€  *˜Á=¸†Á³Ð ©ËûÖâŒQq<°²1SnŸ¥T ŽŒÓgãýTö0i+p;Œx5ŸÃƒ¶Ó¹É0Bu>{¬JE4FF¿ºBØPjâ÷€‹Ã‹.å¬Òr¤B= b4ŽþÆ= ôøC~ §‹ôdµTƒÈv<¦r÷q¹¥½‚ÿût©Ø¥Ë%ùÓ3J=zÑ^݃›«9µšW–® u "·oíKô¤-mhÉûøÅ[N6zyšn“銊f€t„Ά–X YPòU­ =Bë}ê»tºAlj¡ZíšììóSt$7ðaÝ8mÚ»g«Š­çÔÔeœò:t[;-.@é«é¯(ż½9§•w6^­z‘¥ìÞãjåÊœw…¦5˜XÌŠð¢y(CDñ%·väJ½Â-ø½y½CYåP yåÄÌê^›²”rOBbŸ¡eØåÐCÌéò5S8+=$Ç—àÚj”ßvworEoþu®šRÉ‘@6¢ãð+N),vÎ (ÊðÈ©ùº0ýU”ÏÊ1êqtä>¶ú:U:F+¦˜±:;u„5YÎ)¥´Gü (rkÚðé— ChÿÁ‰_{Gö)2´â–‚zÚÛ_ âL¹S7òò)4í¨{WEcè#NùT¼r»³®CÝèR6¸Ô­iò)P/Òê^P·¦+·§«K3”%¡ß@ÿÚA•[ÎßÂúPÏRw¢NÒæÌéØp9õ\²»wX×ÚùæLXDæsvo/jÝ0Î7¯T6qJwL@+ÿJ4Ÿ@´[ÔZ€t±u Z¹þ·¦ýwŸ¼ÑSz\éšþŒ’ËZ‰çU§Ë³¼¾üxßÓyÖåri·Í: z»aâÀ›}3ÝÇíq(Abv¬„íÝP$íZÿz†4?¹ƒË‘Ž+ÕÇ6@ Žoü†i*Á„Ø­ñ'ˆ4kÐ(¤Ê–?ãË¡¿i¥—à3󱫟FÙE)°4r÷)nS\u~ErïÀ ôÔè@5­¥y4Na;ú¨B–Œ£ÓúÀÒˆÿˆ8z†sº7ƿՓӽá4–ÓÖ×>{8)á@Á¹Ö^0¤D»³ëq: j¿íàõb'M'ü‡[D¯òAÿEÉ‘i}õHù´°ÉfýH¯ìSN€Äÿx ë=âXûê±S€éE<»/Ò£©ÇáWˆ{ùhÄ; ‰Ý±l¢sÔś‘Èj¥ÿZ€ù-T”(û`•ƒs¿3罺œ™ k»R&ö€ã*£€|ަÁ„dPŽVà0¨óçª5bž¶ZAµ7(rù—´šzœÙ˜ªôÐ*%VóG±û`èn„-Õﺖê,xF,IxrÀ¿é²H¦ÿ•OR€€e›¾÷8=ôØ`Q¿,àI†®«»‘¸DÂK´hX1xÁØ‘Ï0f#r4QRú®#{™˜¥¾¦@ÞÑ¡}ø“Ú†àdš¹^V&ã±AèOƒ oÙt\™Œ¡_±Ã†ÐÏÒ B?5Îi`î_iO†`jDçCOM Zö}†Þ%p+fù¹±›}¥æÛö…û×°àŸ€õŒg€h߆)ŠÇÙiÇó›ÎBrAÚYH»7´Ó¾ê%ÜÕÇù÷°¯•E‡0«@nçåÓ õ±;f{£¨x–¢ÜK''©Ø åÞ4 cãÕŽb2(»EQñÔEMá)~ÅÓ¹šIñx¢¢ÜK'**´¤Ð¡‰:¤“Ê¡âÑ ³Ï¼—ÎWª©xîÑ)ÏÑÏ‹”{ñlÅ8ü¸¥·™hìáG'´ŒúJ»4©Ã ðpŒÞ€z¼‹í×Vó¢‘8îÕ’ÕšV9ñÿaî_࣪®pt&3! œ 4*¬D š$ò ĶJiZ«’sˆÄ™ìlÓ*>ÚRÅG«­­µ-ŠX0!4“ ÕÃC ñŒ5€&BέµÏ<‚Úöû¾û¿÷öWÉ™söcí½×^¯½öZžô^ž¥›Ù”\çGfùÎëIŒŸ°@Ý’§~ú‘§Þ$‹^/w·ÈÃI§Å¶|P@˜àü;„MÈߺ÷’uûu½Ì³Ÿ†Ó'뎶 ¹È*G#hyZ Û2ø×¢/F^pwËkõaÈV(å–ƒl~Ä“üb>Mþ&‡zÀ¶,Ï¡–žÃø0Ä¡ŽÀQù_×ì¯#«ÿ½7 ê½ê¹3 ú=ÅŠ‚·P °tz6ô"ÙªÇ õ—N±ÌÎ56õ™wÓ‡’Ø¥^{—N*?ê2,hâl7Ë?Ñ•¥;§YùjÕ*4ßÌüRƒz¼)(täåÓÎV;»EŠ— ÊR¾š…Ÿy®êkBCâ`F›ƒF8ÿï`Î+oÑpžD+D¯šqs…bõ(Øùû,¾­ý:OÙ®‹“œtÁë—gh϶ºOH®R2t"‚i|e h¯zä<€÷-ÖÏvt„ËHÕ 'whÍ…Á<ûã åXþA`Ø÷ç©5?&‹±’IÖ⛺Ó'åùÚ dÜaC¿ñ‚8ž™Œt¨P£$d¢®ÕWðs‡ºÄÁ//šHótî³±.õÌ84\ú·³n>ÆÝª|¤ã¨~ ›åJ¢_'bÐé"@¿þ‹1½³24¦{ÂÆôÚJ1¦lÍœ/º]ëi›XŸ§lqoh`#êF¨V‚Ê ÓÇõ…C}í<ŽkŒ‹ÛÀÈJ…_/€ºüž¨9P—å©é:¨·¨“Tƒ¸vëPß<8Šv·Š¹uçòxæ„–.õõk¾øt;·ÿù|þJ˜Kjð£€;déoÞdé 8‚yñÕ(j³³“3-|®`bkHC_öbx 4ézí>±áª MîƳIM CË·$ž ã* ?1¢õè¨f™µç9Ä>í9á n/S¦„ÔíBùÕ¯ü§„~¡]ƒ-Ô~£É)Áÿ(Ú-µaìd²&ö9(@„oðdõò4!SÉCÐŽ¡ZPßBíÈf6ʃœªÙÿEmÐÙQÕùwbäÄ· 6nÃ0!,Á†ª>‰*á’>›5:߉`î,,W6Ûë¾K÷G½îð„@OŪ;ñµšú#$‡ôÌ‹—•Üž’+ ›öà³ÐxÞ"Wa÷ü`£‹ô§Äœ:àKŸœH5–/ ×Ô‹F…,[íSrõ8Ì=XØ´ßÒ´9ëWÔòlkÒyD-Lª49ÖyÆÆ¤JW:J!—6®9ŷͧá£)í¡Ð[Š‹ï¡~Ÿ&ÕyVTɹ?(cp2VðíØóÜMµñä†í”ñßí( s7o­™Òè‘{Rÿ<)y*öŸAÛ‰s»Ê’¦6g_}n³Èq¢ì_5<ôÖxÛ¾êÆÐÛòÍú9Wöó"Ì}b܉ËjÜŽKŒŽˆUG_žg€ËCsÆ_Åc¬ª~]é«Ô?Ì@)lUnèÃ?P$[õóЇ—áŸCø·ñnH s‚žÎ„ C²®>¦ñ_ Ð.&k)Û†‹à«E=Tð`ß*<øÚ8Rw±ÐáªÎgà#1tÉz<\2~0(ÿì.¼ñ@¤ÀÝLó,%´¾MÛi‘c­ŽÖ+‚hØ5€ÖK+ZGJ@h,f¤"A„>fòÜ@å½ä&“gM:7—ë“Î!.7 \ø«ûn_BÜJ}2 .¶ÊÜá¿}Y¦‹»i(ó…78"/¡2ˬf{ûƒþöê ³SìÐùtñz1c³Jð†T……}Ø÷¶pþÔš÷™Ã‰äñ<µ¨SÓvàä.cÔ¿ï}bF§²ý ÄùîêœU6û®:xÆ»Äã¯B^#dum—~­õsõ¢yw»žS%×ÚƒÁ° > )x‘MŒ‰vöÉÃv1„î6€‡2qŽv3EXQdå™6ˆê‰](gú8rÔ{>Ä‚Ëü§¶FÂ!‡»5_rý#ˆE7£›pasÓÿÚ…qFÀ…ñ0Fò`\ŽÞ ßáÂØõm.Œèa³ìJÆw \»þ #&‰€U¸0î:­i%…!Æ2ñúæ"8Ió¯p_\@î‹–5ãY7ú.Ztà„p¿EË@` ùhº[Ð ø$º5þ} ÿÝ’xÂ÷€ðžüœow›sã¶x˜‚xØ^j0„ßÇCsÞàp²ñDÐeqÆ ÂOô4Ò͵žâÞГ§Œïœ0#!DW¿sÒK†.c[RSÙlgE—´†9çÆgŸâüÔ(¹QS ^;«_;!N'=Ñ^;i'Âó¾ºôuyj`“^#àÛ¶t ðâÛtl Ï²¿Cxè½ç/°ƒÜ' åQ^;YÙh%T)¨ì ÑW”ZfÙ·¢•©Õ·§¡û;íú¿®„1o²!d×ßãËN{—)ä„Ì+º:VÇ£|‚vHÏ:KLãØÈ%!³ ýOö´ðÌ®jóX²ƒ©å75ëîÕ AÜš‡îÕiè^=Ý«g ÷êDá^}“p¯¾N¸WÇ ÷êѽz¸î^]¦ûg„ûWã=žÌÚzÝõ’;]?êõ˜g¹ëAS•܈p¨„ß9<É•ª{Yâo¢/f iâd‡Ñ«B¸ŒÆ}çE2T‚N²iH¥‹0¥ éÏžyFº‡Ô¹f´:ó­oZ&ƒøÿVàÍXF‰à]}ðîIã·Ü=y>Œà=yÁ› x<Œà-£cWº÷0”nžL.ê`Exì"zêw½BAô¦‰Þ¿=Z3)ßEöBŠ÷Ö%j%ëàg€ðý\¼Ÿ^ôÝ~×'têá<ÈôÙ¤‹kböJ¸ 2Ȭ¹6Dú’.–Ÿaçò}aJñài“í]Î&#ºi¤›D'Jvâ%Ë5ƒýÅ× —òef༳іt~õ,ÖF¶4Ëdv¢‡ÃN ‰|JŠ,η#ñØq™™¥™=©¡0¿ÚT~_-Y¡ãôK¢¯ %·Æ}’ëç¤a ¹Îø&Åî7óû-úuÏ/lÎ}6P$÷vÚØj3s,ÅxS1΋ðïÜtì4”#O ;ãs0r{'¦Ã[cñ@17Â<'}ne(׸ê,YõetŠK|Ÿ!N”šžØÛê]׆ŸÛKî_‹ór¶ÔkBW ys2³·9+Ú$}%0HKà”d^Ôæ‰ž–£™~„ÿ†o áXL3pº#Ñá)¶)¦É€½=-ëÖ0ñmf?²ah`wÛ; € !zFÜà?GÔÉì@R9[%F R÷®t0Úøè÷–©ŸÄYMB·±ë±Šbå“„Í0¸$Âá@W’r;¤‡?&=(“?Z’ܘšfs6²s“sÕ Š¡Ì3XeI>Ëm7)í°:ÜÞaÌm7¶™ìížØÁ×Ih0µãeFÝL€§SòÚÀ¹ŸòÌ“8†ã½r’Wœ4U´cBÏwlƒ™•Á‚·s¥Óø(v‰¢Éíx<è༧³à‚!€,èlZ.±fï\›¾Ø6+þ•6 ÇAµøðÖâÿ…>´ ˜i?YàC76è4KòhóÄsOâ¶jÁy­èÖ÷¹ ø8¼Ñ— æÑÞé™8ƒDWÉPù&nÐä"‹´é®F\ ˆUjP›'*Pv!¼ëjlƒîè9ßÔ+Ê?Vþ÷—(³Lw^hº1)©u0kcI tÅ2Õ¼éRJr$ª§Ïáó†Èçð™|ámŽ}cÅ;ûðxµùw‡ìèqx6^Aî¾öNtÍáöhŒífWyQŒäª3Š“òû»ÜÍxÞéG‚ZÔ¦“¸»JÌŽ|¯-"çæaç|P[z%³cR|6ÏŠˆ |RYo¤M¿¸áÈW§Å `ôaðŸÖåòFOa¯¸M ] /&t‹Ô½‡¶í“^;ÀsÛÜ­žÙDÎ4YØÌràþM‡±µ%gaæùfÚ^J Bi®`îÖïïC{Ë^ › G‡SýÿÒÃÖ›¹=(°~zÌW'Òï™oâÔ™õÿ­r'>sv©!GÍA$…B:&6'gv#³¶ > Q Dèž‹î׌„é1ÚÛS¡¬rÆ×ŽôÉio·ù¿ k¡òô´4ïŠä ç4ÓF(_‰bNïIŸ‚ÌïÌîôMËW_ÿ@Ó–ù¦ë¶vÔ9C—jÔЛ«ÈÂcã›}ÇßpÆ"WÂ/à®Ý¨ÈÏô#Ô]éð¿¯<©6ü_Ï_þ°Dœ¿|ÖvÅùË/àCÉwŸ¿¬þž¿8ÔA0¦bßPØì–»¾íì%~gðìeåÿòì%rÉ•g/ç8{¹ÿƒg/G£€™«úþ·g/^qöòË+Ï^ªèìe Œ;±Õ]·=…~vö’¥N“„w~¯š{Ž_–ôëëMñLh­שÔá´ËÑñOßf¿£Ç(%š¡›]× ¡Dv‘ÄLÛ9ÂØØFx²ßô'õ_ciLf ‚ñqdÐFˆÒúxÌXD—ƲðßaK‰V`Ñßì Dcøû®@¬†x’#Õ‡2»{‚ט'šþ öGð¡¸D_"o$^¿Þ‡ŸÓÅ„USQX¹ -[47ôaXÏë2q=wÏMDè@O9«*w±¬jþ1À?ê¸k`[tÒ8Ñ¡-‚Îç,%kF÷KVàG¯-_]ø¨ùFÒ´ ’ÜSôñ ÒÇÓùâìÿ} %ŽpÄÙ0Øg2gåZcªä–àGåÚˆE’;’žLðté2>™—Hî³ô™.¹?¥§A%’û˜ê–€X 4Ë÷ÞeýŽ2’òÏž}U¤©:¿õ¼~Ã÷a_Ø} v”yÕ„1 >gióís4Ê£‰ÑÈß2Tâ–)ÕV]›B{Ç`ˆ3ßy¸uâûê1qF.öü…2T“žÃÎ'48²Ô·Çÿ‚Íp,Ûó8>䨯S[©)?¾‹8L6¶Á2à^,SÛðv)‘× £¨ø[(´¬8` ÛP ðùD—tÖó#‡ú ¾°¦y¢ñ•øŽÏ@¢Çþ†@®ôŒÃWòhQ*e>ùŠf<„'þÏÄ3q¥]:£ýÎx]l\ð¸8 µuæÑS·Š²æàw"L®Æ"áðÞš‡Ã#)]o”â:á%6Éý[d”¢ëᎴ}3ÖÛE~Ç[‘ÿ3:òðUø¨à,ת››}ûÞ¾·²\Û_»Ú(b|­'­Ð`<´«þI°‡—]Ô¢itÇt‡î¾U—ç¶b,’ Æü%¸Öïgó3x…•”“êÞ ðBh$.T(¿Î!‰76Øbˆ!Ny3ÀWì68æ² š  ÅsPR *‡A]Ž}ëÇÖ‚2 bëÿœnúÿEçí´BòÀ[$|ÂÆ·áÇuX§ÍÀ. ù>;¢#'9AÈvF°Ópià°ä³ê;XzÀx? ]Þ¦©zÙ®;¡@ÈÏuäkàà H8 ૯€ïàÜ£tÆ;rùÿ ƹ¸Å&‰1…ƒÙÄÀ€è`²˜×¤¬[‡uïX+øS8;Ç@“\ƒÅ=É¿Ïá6EÎ N½lŸ¶¹¯ï »4ºí^!:Â6ïþª98j q%¹‘žé6ÎTÛ¿¯óïlœQß—ÏsÈÆÙ´qv2P{r;¯8ØùFxwÝ2æÝ}…óil!b§ Z3Ut~KˆVT×.÷uã}»u^´d6Êéžu½¼]¡?êu~!g óÜšq¸—'œÕ%þëÍQ;æ¹ò3ì"Ú1¿4%^¬ŽΚBÇ7ìü¤¶js”ÿC4eîÒZ|…ÿÁjùØO¿ÍjY‡´I±^q41ɸ«Ûƒæî볃öJÐÞ@î{ ÜñNr#~£þ$ ýif0 ÒOÒ@ò¦üÐx?;_Í×Ë@ãþ%ÐÀ‚ŒByB­laúãÍP¨V¨'!?^]=iÐ}Y~'Ô”-µJ½oÝĈõža˜Ù ož^ÐèÖi“žï<V0ï5#R]­Ê§/‚uרRS\­Õ#”nn·èår­ðœÐ‚'Ý5i®ºjsøw˜ ¢MòŠ Á4¾AË俇Émä3wÄUCõóF½oWF•F®j!oÕ+ …©ŸGÃ`þµ Ï?²êU8´·è—úö[h:š…~o0–6ÞÇ%X{Uò¸‚‹Ã,7o¿«w!*nWhüL°ñÚhÌáÃì-"_bFồel´«v }õML3¨>ªä¡J–P%_º&îÐ"¾€¦±|0ëòá=ýžÕЛº—ºñ…í×”À$AÊÕXÌ˧b[a%mFALX°ON +a¦/+HZf•‡ñ¬ìoêŠ !¤Æx«wÜ ´²ÛÂ&m ÎÛ“ÖP>Ö}‚WöãБ.*8]è—áµç„úܳ8IoàïÃÎÓõúïÃφÆðÏÿ÷Æð³7†W#ÃÇpjÇwŽa@~¹9=Þ Ltð¥”Ø XoÑcè/×·ÃL<šØ4¤QÇË­ì<~<Ë”“|ž•çÛåѪÿ·h8^dǨ˜+ùU+Yî‘•|I/‰^É2"äEíNß`OîÈ®Ûh dÃØ4GЯßü6ˆ9¾›ˆ–ë£5üï¢>­:Zã$âÎKîA;Vò’¾,:Ã2»<¹o N‡à àöw7†Où ™Ô:V²Ûðή®ä¹gØÛ+Y~ôõ^ŸgfË++±±òèÄ:ßOúiTÛCûáoµðbgè…ïŽPl ì´SõÈ@èØfsäç©þË¡XkNm°éÔ†+gÔ‘x\”j†Ú|™dià÷Æ(AÐÌÏsö"µPâ½&ù*õ‹ßàâ ,¾ÎGùb³ôúí+é[h•^_ ÿåYØÂ¾8š-œÂ6ø=œ%3G¬ôú†(žÃSÙúhøacëãø†X¶~:_ÇÎäyñ|Ã$æ˜ÍÖ§ðÅSxÞToºP“ ¼L±p.sÌçyÓ™c‘7=K|_Š` ȇ¿ï <É`§Î¿àïc¢k(²Â|ÂhF«qGƒ§A Òë£Øtúɶ²ìéu‡…eôŽ(– à:àe üβa$ËŽãŽh–=…;bXötîˆeÙ3¹#Že§pG<˞˓¼©þTqR x‘75^ü™$þLfã–=Ÿ;¦°ìE&);‹;¦³ì¥0.´B\Ÿ }(cÔÜ_sajùU øÁÙ¼c\¾‚—°sCޝ$P$7ÅóîXhX&Øla4/ae1÷«ñaèIÏù’^2—-˜É góòù|É"¶:…-˜ËK²xùRV8Ÿ­^äM‹X쑺l•§Y[١ij‰mCê•ßøâµ@> P!Ç}U‰—0†}T Ë“|èŠ;vS”qÒ¿×ZõrÝÀõ‡ÒEÀº÷剟£–CÉž–zuB!ˆkCŽûOÕÖî°U޳䂆õ‰¹ ÈšCô<š›_)B z®°0{'ËíRr0ûÖQõ™§v ˤT]—ðžî¹]ûB„¨ün´'G…îóÜv笔/0ÎGf;ëÄæ‘ÚÃ7{'R¤Ä£Óì0¿ÑjúS0¿‹Ê0»4]½IŸ ÇÓ†y*‰B[uú°«%" D„”õ»Aaô#ÀÏ–¤!S™l´b½Ko%äÇf·*qa³w°L•WD{€„#è}k×–tùjŒ¹Åºžrî·ìãœ"ù?›ýdˆè —¿`ñåø˜Lû9T±ÕHö©Soíî©Ü…¥AÚ[‹&†ÆJüר˜YKsCå®Jü¤œ>Ë-ÕÔK‰”+Ï™Yƒú9üª~+E è’¹Gbwâ‰D Ðn|©Mýá_PÀ¤ÛbŸbYT0a÷Y˜ÐŪšƒ…0°žäBû:š2£ÐÖŨ@ÿX( yÝZÈ^…DZZbaùA·¡«êÐc?@+ÄÛ®|ØIøÍƲ…f¯© Ç$´‡Oã:ð÷4VlöjÇÇøÂ­Á§øûvVnöVñq¾ØëôN>ŸJnt–§¾Ø¨iÅuüY¦þñq@zƒÿtXøhÜE °F©/£çþZ•‚úø«¿ÁàØ[¿89ÜR9Ó m«—^;´j>%îaGÝ EŠÕ-Mꬲª,«òØ>éµã«îÆ*ãÚ°Êr*²ìŠVÏ®º‹ÌhÁ"3©Hax+õ|žfB÷ ŒV¡”<9ñ„6}ûx›®ž±ã]qcÉšÏñø!1w$Å’{4zÙHæ S¢¼‘ø'nU-–mú5õ'¯ d/lLă6ƒ§¨Ë‘§fdÒaÑœ~üÒ m~ƒp¡+é¨äú32gÍX>¼&ÂU'[fOr£Ú뙎Ç0â‚ g<¤¨³r–A2Ï©ExV×<Ç+:aɆ ÇÙhÌìÆç|šnHl†½Ò óum­S5ax!›ïîüd˜…§™ Cjû,t4|ÊyA’Í"«hçfÀb‘ú9\/od´N%ý'±êIJø‚O½÷´B³³Ùèÿ+ýðÿaÚjøkö?K-þ_aIooãŽç:°Î&x¢Iº¢_©¦Ÿ­x#¶5à° žîÇc #–Ù…?ñRæV5Åe=9’îÔ©×½ŠK¬vüSÖ%5ÈÃèB<£ƒtÿIUŸgÀŸ¤åcÿ™à>zó:;º›…©x°,ña”±Y‰¤kߘqyŸ|+›ƒÏˆÅÇáù½Š²´º=¦€{+Ö0›èÎzƒ¡—^³N²ä¨“’ #ýoº›XU’ƒöÚo‡eø¥îJP¦} (褞¸ô- ÜTü.–ß̰ìÒé}O[–:÷—ÆÀBlMç7t½Q¤¤Ì¢x!£9œYX;Š<ÐÍ(¹æ á¶Úè!BNYK‰áévNmBKP |Å£VÿÄfç~Ëòb2߉2Ïkd°H7;{%Éõ IÑÃåx:hÓêfüX»£Êë»[`3H¯¼ëžeõþ—õ§Cþg=Ö$ÿö„wÙÿIïJ¿¬“^kò{àé‰:ÿWðçñ:ÿçðçÑ:ÿøóXÿüÙVçocݘF˜¶h™¾\™ Bþ >Óþ8%)K‡Œ¾@‰!³‹Ä(Q¡µ_T€’u’;ŠÞc. ³ÂÉk¾äîFi¡…¡ŠYø-ÕñýD·p*hyx@!¹vëz¬UÚ\l¢§A’k©)b #&G]«"úµÍc&xeÉRŸÁßöXj"¦!,\H`R¹>:„¡uÓßCã†Z’b$×< }Þrö ƒc2¡O—7Ù|“=pG‡ÿ7v÷,Soó CP;³€xí†âVÉ…7¬œ1F¿EdUxëMééFƒïFá«€˜P±¿æ*Àù¼¯}gôÉè5-¹&\¾ëÍ•wÜ"¹Ç5ß–™-ê[¬Ê4ÜÞây(f¤óÓ¾„>ÏR@ƺD GËUÕå/ãÊ–*7;o¿V‰bÇù<+ÆÆù›®¿]`ÕÆ›‘Ò©­1#]WÕ®g †’ÂÀžø+àèòbŠ}È*Tß: W¨D»»•¡<Íkç†dj Gmu4,«ï|1®Y|O\ ÷ ]Ä 0s(*ÐuæIÉu€.t`F':¯B‚&¯ÇåÈlâ÷Oåë +VÑ&¹bBn΋ڒ>,[†Ø ßó­ÜÈrÿÎ×Å0û_j=æi<óï‡T ö#’+ƒÎõšWÖ7Yê›løÇdÿK†:úþÓ”õj™TÝGaC4WŽd$}¸úA™¤ ì«èˆä¬£(†M|¾81àίñwV,·áíƒæßµÔ¿kÃ?žé˜Ò‚Ôõ'TåÝ·²þmKýÛ6ü“ΊbøËÌ&@ Ô™’k6¥lON·Èc UM¡õ8L„½CGy–šœfk’ësD— )èÔó²R¼‰{ ß)G¸ùuä$/ƒî9°Æá ÿïãq‡=†þ E-Îz3+Rœ&j|Æ“xy¢ß$m>A5¤­¯Áßy¬·¾Ý’ÿ˜³´Ï /8–SßÚ­oH­9½çÃÙ°g(p€ü=O™™Í >¨U>úº˜aöÀfÅè‡ï k?÷F>”êžÔŸ®»ë:ôq­ÀÄÜLt'‹ §þøˆlFí«O¼î¹x‰wU—h ŸÔÌg5.%³ÿ¼¨‰§Ï6)¨xŠû MhǦL5Ï»åÕ«˜N`¬³×,G;{#%÷ýd i­äûD8ÊòÑ1{;á°g},›…“¾6…E¿ÎGc¯ ÇÙQçm0ãYçG}€à4éŒ>Ë#İÆ^‡«X».ˆ~Ý“fæW3{  Å -5ó¼8cn›¦´©/‚àÃ2RJPŸ̼>ôöófà=oí-²€^¼L"A÷‚Ö¤±Üƒ¾íûµ‰çÅA5­¸+Þâûéer%„÷“+Úxñ$¾ô’™å¶ðèKþ·yÑŸ¿ÛÿÂs˜æ¾oöa ^q2œÝ ›†eîWoŸŠ:S/œÂŠê[A0ˬë9Á–¾²Ò pgÂåîâSyþt–û2+zc²¾ŒûâQ½yì_Âö:¼¹ Ó…ÉEm’“bÚÁ,ec¬õÜ¿Ë÷âÖ[í§VÖ7[ê›mø'9sÿê›àƒ»•[ät¾ôlÖú6üã1GÑ.Ï%nÐBy,·×M¶ïJj,³˜”]t¶”ÐHÒƒá¦<"M¦¹§Ì~/­O pÿ$ó)ŒÃv;/~rnÐð¤Ù-kþ¦É-flþì¯@Ü{šâm€^§ÓDõe g¾)—Âä4^`áésٻ걯4-9}þØVÖ8ñ(;»ÈÔEy"ˆcžØ¤Z¼°v;Œ¥$_ÆzˆPå k Q$ÝçzUħ 4ªïo 0Ê¡‰­•ɨ¥/˜x8O=ÿkÀêÅò°Ê™éʠʵFƒ‡¶zü%lÔ ˆv˜îtaLN¶ÿ+A•ÑÚ÷µiêèÀÏA œNÎ0•„ÎYJ ÙBÈK ˜|ÞËÂq&Û±êyÜGÕµ× ÷Ü×+ÿ€Ï7£ë;ÏG[…ϳ%ž 4°ôúz~?æ1’Îç>¢ˆµÕ«æOì MÎw®EKÄýi›ÿ_¬›õúOứðÎÿ»<õÑB¸i+”¥,õÁ§ÈPçî.‘w¡˜ä©èÌ÷dªÙžÜxnÏÏS:“œÃšjJH'tÏQÕ”ö,ô‡=•X×wå Ô®Æc=çþ¹Ð.Pâ"‚ Â@Šy à³wÅÀ’x]½ Œ¼–åÁyê»×´Âûq½1ÚÛð¶ÀwÑ"‹š¡ö ô4ìUçÁoÿãÁµˆ¥á5cÏ·eFâÍ섲ԙÞÔÙØ 75…ì!]9o %†WïíÕ/À–ÄË«C¡²Tþ¤GñÖÝnò·$6“MdŠ´·/Ç;{‡È@×’¯N­1€/#õ/Qø%¾(g<ëF é´ˆlP#rò˜Ò¡¾ö¡~“¡ƒ·€.„·û”ÄUÑе:¬†àÙ·\Tcq5+±A¼%èfROŽCâÃ+j¢ö®¾8 /¡oý­·þS“«™Ö/ÊÈ#k"jÓgƒ%A=òq? t[ž0Úy¦/á+]x‡ E'Ù‡ì°|MMë–ö¶ìˆuªžåæÚôjc)êùœíÆòÝÂíí°f±»°_ø¨ü¬<õãвˆ7#º¡£ß³©åj•mÕ-€«‹¼‘àøzrQ‡gáhÐ#@‰54W+ë‡ZòØÓwÂÐf,—†Ü¶ @ 3v}á}ÆÙìb)Ÿ'Õ§‡‹âÞy³…6¤†|44{ùÆjövŸs9`Þ^ŠÔŠ ‚·x JfÕ,×åucè bÒ"+«7E¤6pMŠ)¬yÀ9¶WÚà[eâ žY  …ŽOYQi­¼EÚôž}óK#p;V¢?£Š¾#Èæñ–¤ä²BvI?í`’н“¢Ñ šóáHó6É—GK©é¿"¬r£Gj¡äú‰šÕœÓp¥¦Î7s ä~KbkU2Uß¶8O ˲zSDæWöPrs c@ì@ýE›ó¢QÚüË!ðm,ŽPAV='¹¢±ø‚hž%LüÅ ñyÑ’ëtT¨5¬±7T „͗Êپ£X¬ä*+ý.O8{#ؼ)kÆã–šƒeEøžõ1aâ«ñ§©Z ´¤`*Ëš.¹.Eô?YÄnübH°êÂøðéðà}¾ÿE‚ø»!¢|M¨|zlX̽JÙ C%qaLÜx˜S”uÙ_zæÆK^÷\/í]I{(¼˜^rþÒ ¢¿H9ãÛ¨Õ‡ÂEtãE,´ y¨ùí0°PÛ7ôø‡lšAr¿9êZM*ìÁ¾˜ù ¾ A›—ô~£eÃù6€ÕV:ÌóÈï·bgxR¨/Mɤ0±Çx‰mǸ2XF"€¨Lê”ðUn È(dN(Ê/™ÂéŠMýÇIô–Qì£ÐIÎ8#F㙩ï/Ej2è³ô§°AèbÇàÐï¦Iy#\i¢íܬۓe†-Ž…„ï…T¹Ûô¡¾2k>áëø:-\ Ã#¹™É„’ÓŸi^ùì*ÐF‡›Î=+†jÀ„üψqÐÈéI‡½Ž­Ø¶E¾6 6¢‚$’¬ð¢ZSÑ=ØÍ‹¦cNYÒ6|–Fó¨ˆ UÚ,âw=@ª[Y$VЛ'ˆ 8iN¡“fžéÒWÛ^­®íÅFè½sÖÏw¡BmÐàAq¢ÔÛ5Z*¨Qa$N:uÿ©‰5/O‰†ØŠÔ•j>s<–zþ€µûŒQd.± <±µŒb2yÝÓƒ°$"@™ÞˆD¨$×v¤‡¬ o\nÀ_45|»@‚G¿: ,À¢†o«yò-Øb‚ùÛÖ:šoëë„õÄõ<œØŒÚeü ¨œ{ð_£´énC8ª>’ž[,·äVLATÕ¡|SìóðM³ëÍÄ’W‡í7“ ôÛ§ÒNôŠúÞg®o7¹5¶ ÃGHî¯`ÚL4õ@ÍÝ“ðëNåv /1€ ¤J®øID•ó`a–mÆ8JAÍ?Uš®îÀ§›)6}zÚ{ÇRÿŽ ÿàBøPòê×äy|M[ì_AÓ:ÕWÝ”B=ë´|‡K¦>ñN.²qÏRb“V§¶ð2+%Ýá;'pøuòb3>`Êˇëèû€ÕçÁK43ú~!“äûåÕ`|±¤=Ói¦æGR”/BüäÂ)!-»“çLÕ‰àüé¸ÔºG¬›yw8TX ¼ùNÁ¹R“Oaôaõî0¬§ý, Yý}ån§{…Ûh£PD<JâX~<+ŸÄ–LõΛNgesQ¯Ý.ÆE¢r›YýÙD\=jªp j´ Îb½ž²~L”VÂwÎ'ÔÝ ¨kcm -Iõefã!ÿ§ õþ­auSAtºc/¶FŸ>".Ib nж®×0ÿвlQíˆúb8ŒK„²›*ÓwVäxTnö¿iyŒïÏ—é‚rßI/…ÏívÂGwc[,Ýì‹@’'Zìoç„ðÎÍš3%˜( ¡o0.3ívS£š¾wpæi PmÜü ß&|§oKåj׊ÑQ°5SôÓ>¥/È…õe¾‹¾<â[Ž_Ò̾.éüãR° ŠÛ櫸¤ò­Ð>NžLæG}÷^ €^Õß:¢@y¨l¥ñki7Ë7P©‘¨¨®ÿo”j„oê‚ߣ¥Z÷/ò¥_Ä¡bSQÔÚ²Ôáa¹'=ûtµoÂö˽Á¡o»K_Þô˜wø$ðñ½Ô{øbzÌOø ~1¥Lñ]è L£)gÛ†Õ}^|·S ÓyßÜ` ±ÇLK/™}£ð%Ñ<Óò8ߟ»ñ£c…øå{¨;€½ßÊè|#/œ/D<_Lw¨ÕßÛ_‡Zö=òul›oEØ/«ïư’ß¹¯B-›}¯À¯9ÛÌ#?”\ô–«³üU橇N¢3–ïϽÁEùõ h¶ßŽys¡„ºb«`¬ø «»WH÷dÊc—¸‡þžÓXuoô8xW¾o‹#ÛÇ·ÇÑ®#ÛЇ 4µ ßÓç‘ZâwM‰R¿§ £¨Y>*0 zTÇ(èˆGëŒÿ¢#:ÕA”|{¡&?¯‰@‚ ;NSoƺ~ëÎR¯¥Ç·õ>ÑëÄn©±U^Ì’'T^¼SŽJ¬ À„F'¥k×u ÜûýâwŽr¢rmÄÊ{5¦ÊKwËc+/ýDŽ®¼tŸ,U^Rä¨ÊKkåÈÊKÊßkæ›+/̬ÎìqV++z%×ýâišäÊOß—\7‰§E’k‹‘ž2$×E=eJ.—xÊ’Ü%Ýz^*¹séiPŽä^HOƒAÌÇ€bЮšÃ-’kýúÉ®Â_Sè×}»*/ƒ_ãé—²«ð~³Ñ¯µ»nû¿aÆô]x„!H.ÌàçûÄH>ñÐsªä^-z.h‹õž¯§ðFöœ@¿þÚ/z¾™~=ß/zN¤_÷‹žgÐ/¼¥º+ gÚU+ú꣛߃’û= †‘cöÕšù𨋲£²âb¢œ ÿN“¯ƒ¿/¹½TtÈtɽ‡ž¢@ñʼnóýY|¸Uy_¼Ä¨7þ·áÍ÷•·ÄÌ éÿ¼1¸ý;»ä.pDw 8¢›‚Žâ‡rñ~zñg1Þ³Û3äý·JÂÑñæÝhŒ2yb žhô=7äh3&U³¨òòQž’ò°çð%wB3³Ú=µîwZÑ•Ý⵫dÞ²®zÍïDu÷×îh"ÇgVÑ)¹_6PÚKÉ7}˜(Abwe’AžS™4‹5É¥5FW{[¾zö,y ëfRªI3Rì†YJgÒÛ«§å{q¾¯œi`õJü~2trHgGáñLÈÀ”pŒ`mê´06ú÷²nO¶±„¨ÑØŒ'+¢òA øœœ•€Ü³LÕÿòªÙ—†XJ-YbZ<¹9êõWS lßmZзÛSWÕ‰nHA¯„Òá«æ¦ç8Ïteå©?<@2R–º VÁ‡<õ¯‰á+ý”ÉD8ILèÚN|©É@¹‹»#l X÷ !³Dr D¥V[U‹;Ø}78 °³Ð:·MÒ Ü’ókè–A€íÁÙéCïžC̳ˆ„^ˆüAF×á9â| šTìUFX±ùtÀ¸+&ÝDJ{Mn|Ká-Ë"wác}¶6#7¬g6âЋÛq/³ú ‰0ºø-©IrCe‡àâã½A‘ÃÞGï§kÜXJ@¡íD(4ZLÓh|Ÿ£z½ˆ¸øž™Ï›†‰bó© Þ˜¨‘l>‡Z‡=©[ñÆòÜSfÐ¥ œqÕŒÄOa·s è=Âù([ >`¾äÂXú¦˜6µ\,ì>Q  çT/°Íõ«Ñ¸tjV#¼ÆÞ°_ômñRzà^í/J£òÕ âHI>⯓“ØštŽíÄPg’ó0ù 5|7Ákœ}ØøÐasZò6ñõM´Zãý§ÃçÕ‡ïU÷E2 ¸ú‘£¸Ñ˜aŒò€ãkKMê“‘¡y&ϯڇ1LÙ¨šAbûø6^ÖÍâþSo>³Z¾;¬îÕPwÔ-P×w¾/PçSQ§ ^޲±¿I‘xf1“/‰¯ª§:Ckƈíí»¯ïŠþ–ö ì¯ÓŒumüÁx‘Ö”%ûÞ¹ìu‹Z¯|+Ðõg†›Ì…¿,×Ò컣¨Xè¼.:±•îØñŠ˜ê–>v ·¯°y–JZsÒ&†}6=;Æ+bé{Q»'z(|¦xû#yEÜÛ\t|ÇVùhk©ˆÿl<Ä2Û[iKV·ðŠ)ú~„:¨dy²aÛGSµIâÆv{È¢yæÎ2e©ìaP$~Xèúa4 ‰))Yê¾ xVaá¶Dm9ž@wÈÓ)§(7*Çæe©½éÞ#®óFá®Ö¾‚b0b¬®¢.ånŸ öˆ<õó'ÑTØr‘¨oÓ(ä¹Ñ˪>úÃPûŒ>t±êtn.LMìv¼ê£ƒjëXýňªÓÓ¦‰·Çê/˜=±C«>–$\¦ú ã±ÃížX7^öu¨K«0h B×*{0Ø­z «ÐVS8 ¾ ¥hëðÝ­±B³7M?ݹ€/ó­èà•meK¬¢®î­¤Z ‰ùÅs ËU%W=VTw÷Ú¼"ºç}VÑ:I‡»HUV%v³nºæÚd È¡¦"[Ò‡«–Ô6¶u"ž¯•çâÏM™¤)ñš§)±°†š¢ò¢Nö¾fïp˜ŒN{ê-äìÐÅæ>esîŸBgïZ¦ºŽ‹ Þ¹Óq kñÕÒÙ&߀þ})þÍP6ñ„³Âfkð8´ër­4–µÌgvÕGÖÀ ŸÀ ­ì*ÆœáJ´óŒ }dÜGpË@ áÙI …PêÃ(ĆàΦ‡°7ß_.ã»ïÁ¸àÝjx·¼Ä÷Hà]¼+å~NïJ`äðn(—Iíž¹·Fø¾BŸ«ÜvßNÊ.Ûî{ o€ÿ§-±;W‡`"Éé6„EŽÙ,Xí3ÁjMH%ñìEM4°ñÕ¹ŸòQÀo8?¶ ³M!)B³w¡ 1JÔþaxíƒFdÔP ¸´5«ê4²Å•0MñøÂ‰§2 éáõš8Ú†ÛST›³Ô×7ˆçÎb‘ý¿ß‹'†Ÿ”݇ ^§ì¾ (“n$Úµ¯C!ñðƒ¼`òªÍ*Ôyè¸X©>ª-_ËGI¯Ù?åÖ‡y‘Z=¡]ý‹ÆÁèˆwEPg9ˆð¡j!·ðì©@ôQì…ú®uPuæ§þ‚Ÿ~ó7è;#Pí.€wjXqÒk™Ÿe‹€qsMѧÕæ‘÷R€èc=ýzA&#F Ãô¿è ¿ÿ¹@È+ꨚ/òßñþoð Tê`š}Oô9Jñ­ê׳jA3×áyí7{ŒÖg ¶÷¡híóË¡ÊÃìoÂðøåoÀ°î2^&Óïmâ-ë¢h$µ¹VáÁÌIļáE±"xˆøÉ"X}!±c@Ì.‘¯™"_5û{ò¨TÔid+¼²À+óìï)Ÿ'E±·.C¥ã씿¦ÈÒìqÁ£z_åÅïÉi•Sä›°_\Ôr“óÌ%>8ì×åP*¤ÚF ‡-ÅT&ä&ç;¼Jg茶fM§çHxV¾â’óˆ¤cò“¨z=ÊŽ'ÈÉVR®èXf,\–¥Ý†wOw®Ñ…¡(ç;ÆšQtßý>ꉖ/Xw£ÑŽ7®®É6Bã× ìc°·¢·(|A]~¹yo‚†Qå²ÕiëÐñ­ ÐÿR@‡Ú†â˜Ç3d…ªÎéd²gÛº.bR—΋xÚÒÿ6ÑÑWIó¨Ѻˆ¥}Ä=XÓ#Gõ'õ¬d¤‡}P<áÝCÚ¼ª=XBººßsŸ6WÁV]´áª½&Jô…o‚íÑÏt›ç¡ïG'ôyÅKìPîØ¶6lÃ5‡Ž&±½CŸæk;±ó<¶çüQ·ÿM…XÌYgr¶÷y¢q7–¬o|aT¶ÞÁÞç;qœ}ç_À³mø“ïÄF< ïŸ=‹¦öqšѦG¶õc`”1~Éy5’¾·þ~M»:ÌRÕo¨¥&˹‡æIr=H§˜øˆáÖåð«Š>E¢/÷H˜¢òaœæTÚ[{¨©Æ£Îþå6é­-߯7Ì‚aíwGŠöŸQɹÅÕjÆß}¿~³míõS¼É|äÛ(g¿•Góò±ZüNëgÃ,\¬Š)÷c:Üt3ߎ…ë?ŽàT+j:ð®ÓOfÑ ôúý•ÐËJ.±QÒ[õØk/üöÄÚœ—f”G­LÚr B)¼¿ùþ.øâôFø>»Œ5sM|ñAw…‚7•¨YžÞŽ|(hK(¦º§ã¿Ûf^BOfÜã®íø€µpݹÒhuÛZ2` ¯ÁDfh32tQz •f‹~eÒ¬…í#ŒoIEß”…ëÎ&Ö– CÐ˯aÛ§P÷“.é9føcÛñ×­¢ãXêx9t<‘{¨ð|«×! èä +°4‹“hÁE-¨¯›©C¿‡Ótò¬^ºa<3.¬»8ÑÝ-¢»?•Æ9žo§Â¡î†SwXÁÿH /ü¥.}ùè|{u· y‘Al, 6&Øû–íø fºèý–òÀ`¯ãTXtÍÝØJ?ifNÕ}V-І‹ÚP›LŠw.p-»mkº„hÁv)TÝ&Záå5 °0÷`Ái@§ªîcýÛPí:1AØ%VÁ¶±: kÂfÁ6 ûÃf«ø…€/TŒœ… l»<`!ê®ÁL ÂfÁ0`~§„Í‚™f¡î³€U|ÎËÛPïÐAIGuÔ'ºnmïƒ'ùh{^ iˆYb|XÄw+ÕÃGõ+øê;ü jES-Pv÷’NySèâ½Ï#Jœ“Š˃_é…鯽†Z|•—Pô\&ßϱÄNä1HßPzpîÁ_&¨d?¸ñAƽ‚ÒŽÈ@z9t¥óD/ò5É{ºˆA8ññË矈 IoMðïGz†T 4“)înù=gÿ5rlâM½@6–÷%˜¾T䎢¯z>ô9‰å=9z"H%úðϪéÃ,êH˜Ôbß÷5ACõ>—àè¢5$Ï×ÈÏóíÔÊ 9*ÔB–m_Ò„ ½h¬ä"aÀƒß|˵X o¡º'„‰­¢)Z™¿^@ÉÁâÙ†­ä¨y‡ÑׂB_)|[•‚€þÖib@¡/ÿ"Ù ÈLÍäÑœîåM6^=_êPçÔè§?<Ý¢ÁÓ+?ëÆk{<ݦ6 ýIý?|ˆ-§XQ{κQ"“\_@O³ã@"¢˜Rý~ioKªóâCÒæ¨]ÄoKfU3Ö“Þâülêì!åÑ©ó/¥½‡áÕÒ´x={ÈšNvÕndžl8k!žR™4G9—ꌱvã-P‡w0º!îFô¿ïÅäìÿYï`%w£šàßçõ<à an(;^jsjFÐW)öˆZò­fÐ ;.½r”õòÌ.Sn€•Ð;ÙÛXîIºGЙç@Ýn‡F‡Qú+MiÃK$[œfªÎýqÎ~3Ã,OŠ5”g¶¹›•d÷ e"^Û)ê’^éçŠÊ*è.w(=ôã¯sxåÃ,fPQ:ÔM¯`76ÿZ3Ýih×r;i̲óÄ-uÒ+"ÁüÊlÃ'ä§èN‚Òìß4,+OoNû³^°}¡ÿý{.™äF¾„Ì9-¼»ø}³ÇÉ@Ò8^ЄnX”Ó~Òì܇s1ÛL ²â¥4â@¦¨èB,Ønö¿fë²b:ûWŠlU—PB6DifØÜ–Írib+kë™ÑFQgËç«Ü XùLkToÿÍÒ`y2¼e·giJ´°l¢Q1Jœ:T»“ ×ööÅ~j4øÛñþ~i®Zú€nËxA§í HêÖ^ßë{#JÇÓ{5 Ê=‡`AQ­/[#}ÕÔ‰¿á×F=ëö8ð"gÂö´3 çŸ`xöýq”Š"ÄSvëg]–>vHXë­wÂÄfv § DÞCâú¨º~¡ªí’Æç`Œ€Ðeõiü6`7ÓÝ‹v›zÇ˺÷¾2ŒgvVÎNœ#¹J‘€yÍü6´v+‡ÑªëÆ}éÐfôbÓÛGb %’ë2ŠÛ€•R8•.f­å3°×d*,‡S:¢•ôS £ ÷Q’7E6‹…nð‡ý_‡GFáJ§IQ=ðÆ »§#¡¯VЃ¹ët~Ú£ÉWg½Œ†Ö90ž”,õf1²U/®‹²¬ú ÚÌWK×ÒQ¦¿#¸ Æ’X´S¹5#Oíÿ‰0:ƒ4’祿ü,õ:h!T+]Úô¿©×–Ó-x~OÝé;ŒÙ¸OD’ÀFÀŠ¡˜ˆý6 þ ñsQ ë3  þv#Eƺh4|¢G /Â:˜MðÁ_bìÅ£œÃØÛN¢õÄyº‹ež Î ?[MþcØð¿÷Ç+†dè'å&FX™ ƒ7þ„¬¶ Ëäë‘rd©“þ>t‡:e>êvâø¡›œ4’>C« |CW™Z݉Áwïå wˆ¼ÎcàOåLƒ<¼tN–zëÅf9FmX2 þRpÍ‹,;Yì¢8á÷tfW ç—}8É„m|<ÌÙd<+À«]íûê^ àöXÙÊÙcçÈ×9͘ÏÆÝvÆýšZšL%;Ǻùƒf6 I˜¦|åGøk‰ÈÊ£ÐB#p¨÷ÿ@7îVG@¢F E¸C½¥…ëZ?úþ$Ðå* ´U"i«Ä‡”Ù-mPi? /‚™lËR7lÀðë½:W.ðÿ3H3¦&3ÌÑU%Éýr$þØ?¸£ÕYaÃ\Ú¶ø £Õ;F¾é, Öíô%‘$•ÎT¿é$W½ßpÈl@ç†t˜ŠN[nÖIäj3£ÃVÃdÉÕ ž¦J®Í Xá`¯Ý†b:ãDIÛN,ÚpHnwD0c^b+MtðêÜ&f?¨ß Ó°jŠ\˜’u!YéSHÕ6gÕ Òk Év[ÅdŒ’œÛ)mþ¼Å×X¢cÒ+6éµÃÆ÷YEgFÍx× åÍdE•ïº «‰¹»V™Â+º`,ªªÀN+Ëgñ¢v`ã£é؈ۡɿ¡óA›ïe<¾þpNðµ4ÁΊ.ƒ´­.¹e’ð)ªÈ¼Ý­ë^óÁíäríu²bY¼aR`×ýÄ®¿‹0 í[õ²~5›L¬cú6±w{Þ_’Øšt‘U´1¥£lDMì­ ÍŒŸgÔ%Ü”\èÈ%T7iS-!4Î`4Ïì¨1G ˜ÂNüppúΉéû[¨†ö#%x)܈˜ò'ÜØ¹G¤×.ñˆ•ܺ6xh'Ï ¦©ÄºƒÔrªÛRÂs[0(”œTÇî‚ M.²UØ4ŒÿÑQ3`¥›,öE‘2O5P8–Žšñ íT5øîó‡Àéø”¯Ï?Ïla#ü¿ÖgÔko¡Ex8PeTùä㯸lÀ¨ØßÍÁuèðÚÐJ ÓÜqP›|I’û]4ÝØmH } —BðÃp«?ÓÝ(íÍ0â>©*׌©Îmðïq6F@U4A׌Çñ ©)€xˆOóuà–Lªª'|êcÀþx!£f8Ð;ß­ÅÊ ¶}q—Ÿ]þHo*t|öÖÅ ²ÁÞçg;.†ª-ƒjTí~3/žÂŠö£¾,m efo”\“.†F{”ý”-áóÍ€þ ˜TÎÒoÅãÁ|.º;!þ¼ˆ|£Ô’Cw^ÀT%avoç'kÿ=?ùrÞæ'“?QO‡ñ“ÏÌÿ™Ÿ`h·p~ò|Ÿ<ä'çMÿ™ŸdÿßøIì·òôK&~ò‰áßñ“9ßä'£ÑO£•ÇÁ8q¼`B’ü3ÉŠÄvV'WX–l˜0Õ wØÖ.¦tˆ7‚;,Ðø4çì­È21ÈîûÑ·r‡Ì+¨é‚ö»™º’;o© à kôÍŽžú¼a÷¼á…SßÁНÍC§þ'¼añ©ÿoˆíÿßó†ÿ?ÇžøðÏ–øâ è!Ξ¿‚7ô}ð?æ Íüyƒ©/Äz®à ?ûàÆ^¿‚7Lùà¿ä +¿Á–^ÁNŸüo8ÿ-¼á½+xÃN~“7Ü­ó†Wð† '¿ÁRÂxÃÍÿoð]É0|*ЬL«¼¶P žk¹3)× ºš´éQù†-L.°Z«c0׫í~ xóÕ5™þ™ó5y~.ðe³VTl5yFWëÂÿ° jÌÅ,›äNƒ_©X":q¾«Ué„ê«ëyf4P7i=iƤF9Á³èjøË2­M¬È `TÒæ{iÛZ“í–2¨¥¬ÞÏbjîã¬{ã«‹>S-©‘ª3?«¬øl#;,o„¿†µë’1 XÇêɉ͕~ƒüCL¸¢tÕØ¼û—£þü=¤cÿ@f±›¨´–£å[ Åêøž¢B Ph™þ¦ Ýfà£À·ÌŽluÈÂ7½Ä<ºcUÿM«º$Jè²z–úJðÍrß[è·’=…/›ŠÑþ³§³e3qÆxÖ›ÙP¶Ð’Ó8ÍcoÏ‚YÔÖ˜Î#L↘l~/‚­—œofÅæ²Á<Â׆‡@x4Kcʳ$ÏqhkbÕ‹qAaùc'/6{fÀÔ²„µx3"Ì4űAêÕI8™è!@.KaçV“0ÿОz2åñÎæ86Tíœ(=`}j{êÑ‚¢1â«)BÇ׸ÙŒMš%¹ŽˆGö`4ÐÌoeZØ,ÖÄ×›‡‘Ùe}4[oãëãØú˜—p§ðõ¶ÚÆV[LÍz+3É&¶:ÚYaÕÄMZì#Í–œ+¹æáFI³!Êf:ëÌ=õä”fSÆöðŠÊ»5Š¿ù }ޝ_Q#¿F„_mMèâë—Ö÷F°ŠÐ/äa#%§G ¿[€VqPSjeqZY´§Båö#ùë¦ì<Ï‚)ÙšÒÂ+Z´|3wDó…6Xt™u0¯šJ¤Ûš"ß Ê(kIè‚ìG{/QFEÎŽ‚òân$ŒÆ¿¥AÅTÆ `iÁÒÌ0 –fUL<-–*“MGgJDbkšäÆÜ½>µF|éÿ@ÀÄ•6¡)+Û¡¾- 6ÿ]ˆx©-ª>©ñÿEŸ•Þ+g¥ ãÎg8<@_ì1§Y`^0=ÎÉlÏìMùyž§äÐö›ó’ w'߃çóròŠy9šš•ÓwÍŠrÒÝ=pV\xû GúÉåÀÄ|¦OÌÜàÄ<;*|b`ñ¯˜˜zÿŸj‰ãJ[» õV[ùƒ¶„ž¾´^‹ÀÍ\ÑšTö= £YæÀùéq9|~Úyfû·ÍϽW¹ÏóÓqÅütü÷óÓ1p~X‹ïξÀ¼œÓçeQp^jF†ÏK+ÎË-ú¼”ÙÎåä9Ô‹"¾ô _ËWÇÐ.µ°[Ùj³oLŠŽTb¦b ¶Z|s7ƒÊAÿ»„EZ’p2c™ÃÊfæ°Ðð½<'®ê| ´æ¢wÛæúºË6‚ m’ -ÌSý%Ýsñº×~)AØ!ɕЉì1À²»çò­üsRbÙDuúô€éŽÆöFx±–v ¹!_=Ó$?¿`¯ˆ7äú2àN^­?ñÖ¤¶òAÐ0Üùê×§†Äfw]¡˜ÝW <”ÛyšÈà R´;ª.)੘Q‡åG³|ËaùV–OÙ£Rm,ÕÊR£Yª…Yª¹ÀÙo”\;1z¿qÃg?Pö˜ôaq14xÉEÁŸ—,bž»ðeI߆§±íwSk±Þ«»™yî§#ðÅ„žÔÅ%÷‘zÒH'»±&£ù6šÚy–k¶a+ MŒþ2÷*ø÷)¶ígø•~õòøfâüvK5Æ>L¢wÒ#x†{°T}ÈšD5¥Í øeÂÆ—Äš|¶$š-±±%0Efœ·ì™!¥vh+ú©ôËçñ|s5{(¿À¿——ð%Y¼Ìâ¼ñK˜©i<ÑÚ|³Ðà²sòµ¬t›yß>äžRð’|õµ4Âf!¬îįÚN,‰ÕØQ¶oâ9ôÓXƒ<ƒ*@'¬d+Ï a@'0ô: KbëÌl­³²uÑ »Ÿõ9DN{çÇfå>/nò¼XÖØó!;Ë·cOõ&L<¯ƒGL|'á¸tìY¶í!\µ¤CÌS‰3?5iþÝhIrã‡5q¢ QÑKïÖW°^Ÿˆ<‡*$ݬ!´‹¤ê¿S¨¬Ø<”ú“Ê=k ø‘èî\ô,­<6_Ë™ùP‘dªÅê7&?dI¦ÎËùö‡ ü’Ê:FÐÉÖÂÕ±„Ÿ´M}(òÀ¼R]c ›gö˜G°yÖDÓ«OìSƶçØ¼E,? ¦_œ R JÃYË'øÐè ($› #O—$ÝãÈœü|ÕG†.¼‚%·…¼긲ßHà ð»}Ëp"S·ËðPwê—o˜…–nžlb.½RÿTø0ÙùØá‰o§K®W`´#hùüÄ 0vò2‹Øõ—"Ä.phå­Ü í’”¸S¦mˆÿj91¼Äê±Æ°%´{F0à2K, ÇêYÓS žPÏ€–þª,uh Ȩ7¢ŒZà["bÿòB °VÉý7ºaƒëHsýüÅ0ž8t‹©ÀÄV¾µŸåvê.’+_\sãÙ(¦±Ü^ò‘„n¼Þe0À(æà_Éõ)2ò¬ä"Û/²9/EK›ñbÅ_`cǬµ!<·³$g£ÙYo^°î<|b lÐ{Â1bGQ'jB×Òe=Í t¾<ìIv“0Ç'4áIÍÛ|ñRÖXßÁ2ÛõëhjLr*ðî×ñg…Åé¡ï$ù\œäv‹vœv?ˆ~] ÷ý-Û1ã(mÌËS£‘‰·dåd«Cuž)Xx²ðFÁÁ³€ƒÏ…ísXÆè3<«Àÿk”±˜Øù¸ñ;ø8°pО'‡nú¡Ç2Ю&1R{—ßI¼|¶ÎËóÕ½Q:ÿ„’”ÃC¸îYÔ]§Œ†{'rqŒ›âÈáD»ß¦®À¸JËÀ¬ÊžéOûï×ñ!vrÑX6X'éá…ˆý™6ù‘¤^iÓT>T³sf”<$©·ü+/Iè…1{ Œ€„91õ ´µñ w,ukxj“Û)+ä'”/;P~êÐå'Œ|lÝ›3åÜ7%‡RIt~S~²«jÓ}Ô+BWÔ¯»[ŽrV¨F% Ö`[cG•§yzÏ HOYfcYf–ÿâ¬gÅB¡¬è]ºèêrÈCSÈO_r‡-©E—Ÿ`íê‚!aò“äFÿ(sX>8Zµ^êçpÒ& cÏËW€Ò´õ#aj9‰Þo3X »*Wðy1ÉvõŒPì1³½ýËã´òh²¥šç™îÌs¤ÖP}1?š/ ÌM>kT1*'¹FÑ "'lœnyðb]¾<  É—€_O¸1=ƒ¿S+Qj%PqØ@ňš¼ÀÌÞüQÆ:+:5y¸wN™æG¡ì¸½ÓßCÎÓò€`nH‘^icmüu$ÅO•s€ñä¥LlÆ“"c¢?nÄ|ö©fVbñ¿¢.¿ CZ“k^;¼p ¶T@jH,ó w ¤¼ÜD2áCÖ„2á<CN£ð%‘PE› ¯b‹ÍôÀàð…u‘Ç'ì*òd¡y¦IV ÖÃFø¾öO¼* ÈnÒ P-dû¨2+· ÖHN·ð²¥’oóìw+³¥Œà©q ÍþÌ¡æ}`4`åÔ)<{*ƒÑÁñg ŠOª9K{ VKôØ¿ÊÂXe@0§dÃpHAÎæ#Ðrm.‹ä#ýÎZuBBÐÞ24NŒ­gYjw0…ëˆ)øÝµu%¨³)…úàQ¿ÄŽÓÍ”J­&õȤ€]ÀÿšîWæPËBÕd ©™)l±}zÀ ¼oà+¿-ïè #±n¥3É =YÇ‹¬)À$>¢ê#m#ôìo &fÕ«:@Ù‰GøÏl}Y *`è®Ø6ÌåãY›óãSl|©±4ʳ¤AÅâl£Ü©÷Bwðh é>ïiˆCûÆÕêˆIˆICeàhC‹ºØø mƒçZÍWQ`…ñ~Œ0Þ2,‘%±Û¹n&f!nˆqÄ¥½ÎÞÕ’ëºHt™_-=rÉŒ?‡©/ÜPGüïêÇË{ñºÒ[xk垤³¡4jàG  P½IÔÐÃ%×3ºéÉ’³w²äZ?R"7¼ÃííCº€'tgÌŽØýÉøx{dÕkÄ‘£1 Ø0œ·,ÐãÜhª¦ æºûÃÚiè7~kÕ™óÀñ‡ôW}аTiQáLv«äú™ ÓucÒK&.jC¯²¬Vœœ·jÅÅa–|µ–HŠÄ$WÏý‘잦)’§Ž»h\[¡§À¶L„FžŸN5´æ¬¼lu~º|+:¨§ÿ©pºêXœYÝ€1Ïøèh·dYÉ­iÎÓ¼ÄïÆÛ”•—J$×_éáf`%ôð=Éõ =Ü"¹ª"è~Ö¼š«\­Õ‡•×yE“foZ"mÅ>™ü`広zóöv­´w †Í¹ùìTFº«®z°ò™ÇÞÁsªCÓ(|†v@hØ8¶ÆqëÞVuýý«úѸ%¹¾2ˆIÛú}*(蛯åÍåù+Ü­ÅÒV:JÌÅÓ¾.έ)ò”YÔ— ñ €þQ†ÝÀÅò`^\›øc0œÕ=H£ÈkÕ75E+íicþ/jY=9=)ƒªš‘ „ß mBÃLÏ 5êº`R{_;U«>5âä{Dè ÎÞ{åÎÞµ’{Þ@|§ÉÙ)Lµ<¶ÑWŠ7é9Âw7µãì-—ÜÆKAÏн)HñÊ!â-Büù4à-@ÁGlîÊ`€9‡~z‹è†WÜÛ„èqÚÿA €8ÈEåDÞàMèž.¿=F{ÖïÐòf³Æ•<}.!5»»à¦+xz,h3éV:E±ˆƒ” £xzK EV€± ¡QQý³î<éõ–ü9êÚ[€Ý­dÔ¨ÿ¯€¿ -(!’7%`GÅV}ÿ„Rc^ŽuéClßÄ&ØX‰Ý)ò³Ì±ˆ-Ìòa´m’PLá~LÏ>œ y‚ó@£Þ;ñ ó;¥6A=Üœa‘~±o1 B‰ÖO®2è”è. Ëù˜ªè(*kàQTð;xõ¥!pØtŒª:MGQÄQÔï‚_k©¼ò`žúVýœj”ºB`¡vнž}‚+Ü…lÃas·*¹µ!~ 1´[&:+–[hæeqIgÅÝTLÍ]faefÌ×ÂËVÐ! (• £ÙB3I[ÿŠ{ƒNK~A$1:Ù'/®É´VG¡ÂdJ{‰ÎHÑÊØ—ÂŽH¬Òk¹V_Ž~F°÷–÷‘’¯rÒwkà;è+®çe<Ã69/eik¬õªs¢¼ä2 ˱SЦ>ï |ne‹Q‚öù>€¹¤£É•Žî c(±ö“«ïÅzF)…¡O.3;Ô]×âÈ`&§Ç&u-[Áºö‰ ä£(Þî?J¯¢#Èý{UµBÏy‘ånáù´(ç[Yf-†VQb¼öJaÇÀË~˜}fŒE{ÃkßB|ÀŽm’ZtkðØ|õ­‰tq‚Lbºú7Ϫ–à^¼îÅZ„ ìßf .p^2J®O"(‘ð†! ïJ®Ç0‹E7@3k%W¢Cþ"¶Ò€,ÉÑ¡'¾“Á(ƒ·-¾’k>ÞÖÓH~W;q7(ë¸}ËdŠPÌôdaµdç}Hv^‘®c¼¢W#;¯†v^*LoFˆ€ãwÝݼöÆ$ú½q§ËIô^Ú²­¿TKÚ„Ú7 ´ ºÿnÆ,Ú"l˜0H¥–¬—™µcϲ\Ú-3«Ÿ”[½12ÉîZ e¡Œ×îËPMŒú?›(Ÿ! «:±yh®Kr¡+Ϭ Y'÷!`Ì­fõå‡"“í®²{y‘‹+Õ©¬h SjåA ö-csk )òÕ¿N @ü tó-ß°þŽD™~—XAëÄ ÝA[÷qv6ü8mšv×iÐÈá jø(ê~I,§K±óÕ¬ÄÊJ¢Y‰•ĈÐ×Î3_‚Î>ÏÌn[Û˜9›Z#dÒíÝþ—jùUzÀî;t;Ð`F«è»å;¬¥ç¿ÍZJÒ”¹ýFû–Eµ‰'|S„=Poò<óSb&uChËÄ& À(¹[FÀ–´×ºëÖ½­ÊWóü†¶9Þ÷T3„Œ˜¿é£½Oû6iŸäN!OÉJ2DMï Ïçˆwp1"“KH\áYÑ ,È\™pX·V#^'ß<ÀZ‰ˆŒüø‚µQµ5ƒª© Öõà‰Õ’hh=á^3´Î0œÛm ½á:%ÿU€79¬)Ë å‘,Œ›¼0Öya#«è\3LOþÛ›ÐÂ0J\'p‹kÜš¼“Û;ó=±S)ÿì¼ ¢%Žßì{_uÃnÆWÉöÎÕÕþ¡Ìýi«£ÕÏËÐxG¾Ò©ÑÆQúFækY\Âa²ïQêT´ï%&uI›Ðßk~åÌ(9*Ùn-ÿÚw æx²ÝJÆ=rü¤¬LásškÃáçv! gb¼ÌNe$ŸG²º7ýg0`'¹0ª/±ðy愆¤"èðc]A÷<“Üh„ÆÜ­òp¾$.áPRf—ô0n|hû›g(J—<’ŠÁ$®±°.œÁ„£üiÝ›¨3?àþ²a_²ˆ—d±í ö®4y¨9–,b%Yx‘²N„ßæ] 6XÀÀò‘"ÙügœRœÿt¾ºWÉo¹rÐÿ^¾ZxÁPì¯Gÿ¤,èO}p5^BîL(ê2–˜qÂoÐ(ö{}}l5žbvËÍ: âJº²Ty^£ôdaË@¶j¨5Ѿ‹š)xaqÕ…,ì\ŠéÍÈ7FU}„Ši¢[“„4<:Ô¯1¤ÕßñÊ›Ë È«PÚZ%*¾ ð÷çBt¨W7ц¥çðéßT¡¦ -0U(Š©Ñb@6‡º,ÕVRDœâî.`]J í‡:èŸèçÅÝÞqM˜’«k¾¡òõ`Ò@ýŒdtì‹Ceƒmòk½‘O2J™dæõõ÷<õgçõ âZ½šŽÛ™”¯çÐÙ7ÌEX¶mr¶µþbDh³u¼h´Û”"a°Rv«P"ûš}Ë'’ÝAh úÏ-ð€¿Ã:¶aÇut˜Ùè › t°:VroG”ïÎ ˜p00æ³ez7tÞ[;‰ÊÕ¬·êc´à\oEó q†4Àž×-9«g²±òh$o\…Šª%€W…«›ÙAuS9¤~­«šò?ÙùЦ9±ÎÿR01ff}@¹äEÖúe£´ U›žÕ?@Sl*ÅV¥` çw°†…3ÇL>ÊùÑyç6ê MΩCj$äA¥.*¯³6ÿNѶð%‹dê5¡»ÂW‘Èr0&]ÈÞÀ‰[ôü:\è_tÔž–èÐ)Zu¨_\ýŸ›Ú¥7‹ë¾Po°$OÓg A‰@Ÿd.Zˆ«û!’L ¥ômu‡s¨°ÔÿA±lþCaç,w!öØ´/ ±ieÄ,Z¾ƒÏÃ2ÅKüÇÆË ¼›õ¡züá˜Íñ·òÌý<·Ž½=ä°¼ÓݼñU -UàÈPþ/YÄAài›Ø•"G%½óР¿L:\¾•Ì[å3aýŒšRWjP ¦ã‹ZçþX`ÿ?#ãÝÀ¨ƒRê»ëMŽòL"?LDyH£‡_•Zõ^øZ\0ðLÁ— ¤ÛRƒ)·.Jå«ýcP2Fh&ž…R<† ’1/KìT`ÊuÆÜZ™`BLxf+1ƒ¸ Ý‚ÆZnŒaC¬<®_RZ@_+ÞzÝXYÿGb-„~{=4ý¤}k¦ Þ 2ÞÛ&§ Ý Iȉýn·l Wïñì8Ý¢Ä`b¥á7ëò¯ådM6'Ú˜ØE ” ®Ëu%Ê6QF¸5ZƉŠe”›ÍTQÇ6Ä-[Î3,“3ÌhªÛ÷/‚ÀzÇIä&ÓÍ9–g}*I_jé\¤‡,Iõ’“´n*aÊXÄ6X&S»ììq–aù$yFV2阌òIñ¼E—š^Ë&±2kÕi­&E±€Z04±UoîU3øBKRS™}ÿ³({˜^Â&äɼl [8…/Œ¿^#Õšt–™X™…-­"ž-4c£ï§8ë§âýñ Ôñ¡€ÒÅZ¹Ò…ÜšÞaùKÒÙŠö ã: SB}ÂYôžÃ=ñ,WM8@×üñøzrn'èq¹k, Ns¸½Ã3ÝBû¤Ý­1ÕE9ª6!ÍB­õ Ï8ÃqŸB@ߪH¾®Û §VE‡±Ë-e娿ÿzŽàý€ zÀýϰžžSù¼B5öä{fGå«®Aë|‡i}< :¡åŽæåä«?Æúë©~E»/F¾Ïº;ÇkïÀŒUêˆ ¸mKh½˜Wr‰üÄkï0•a0)OÊÝ@Oì'Õk±‘ôxCi,ÏŽ›Ô®º1j§~h—©º›•ûxÑØ¥¦¢ŽÉö6h±x’<”usŸ*·óâxÊVt¤–o˜Â‹-U(À†ý[ÏÆà%Èâ),ÊBêO¶VS"«¹z™&½’SU¶Ùõn>xºqw+ƒusnf5Om„×Ë–û?s¨'ŸÄüOŸÎ"Rý/8Ô?â ßê°­›©f«Ûž[ WWŒyíZZÕÐÊ+Fíùæ¨?1`Ôë~ F¬Eâ€èýÂ錨ԺYß9¦!ÐÈr“ES­>¨³ãMk¿íÕ4ª=D£Ž?ÏÃsø€ö?.„y…} MliS'/@(ÐŒ,KÒ ‡Í`M"–6j`ó-O'N–n]Ó†F×ÃWpá}Ýa^ ÄðÑkATÒ¡)ÈD§ðt+Š.’‡ÒQBVúÃÉhÿûNð£&Ò,$<áü!z?éqÈ…>în–¡š°äI®k!Ưa ãÈKXæü¨Ÿ œW8ýg‰¿Ä%¨Úú¢uS´Q¨]?@¥Žòï;»B/º:eö@é÷‹“¸±ÁSÆé)…á2ç(ÉS6ϳ~¾lÑÁº:±8JY,['!xüÿbÝË×ßêË &'Ñšð3œà IÀ=Š/4ƒ™ ³ž»–WØòÐ'*Y廄jv4OIÚ¢McÂѤþ5¬ßÙ]¾d‰«Ø!vŽÎþMÕÆt:ûϵ°Ñ =ÀÓc¥×LXÿUÒí1|kž5}YJ±lZâÿýwÖçÈQ³–Òá<žÌŸÇcàÝ:úքÔû-;.· õŠ•ÌôfžmIj'4$]/9/E—ÏvŸ/`õ£±zPjÂh‡cÞ¬ÉäL©Á¦*¯<ä®udå©ÿp•œ5 Ñ\â?~¶¬Ïª81в¦&¶¦ÈwÁ´X0DÙÿMÜëlŠžmÒ×7ÒÙn”³eë‹;Ûy]¿~l{åY®~À«÷’u–]ÃAÜjôï£3µ¸„CUõ„§%€m/-A”ð?Ƈ²Î.B;bÝ­žÙ·ÉUÎÓF_¹NGqú~¡[¤q¡²µœø0{S)ìäÒkKM«0ØO)Õ÷‹…ÿ|Œó’ˆx"O%¿KÏ›XFÎDá‰ð8|ù•‹Ñd'DT3ÀxŒ8݉cÈû&Z×Zñ¿Ø_xϱÆð§Kl Ï›Ÿ¨¹[½³i’–ì8ñç[ ÚÞ 1¹bª3ÄÄgŸè A_2&‰?‚ÌdçõJoÆ\Œµp½ Ó/¨†_|Ý£‡­q¨çk¥8´5óUµý1j;þ%›°‘ "KkàÍ( †…·¸wž€Yw(ÇScƒx¡;šën纇¹îo.8OÀ;OÀ»y—^5´¯ˆO~sÊþ¿8aSv§è+‡úî#_÷”ªþÒLíÅu×#È ctvXk²–ìóìî:^ÍÆüÿj±G=¶Øƒ¡Æ!\ÚŠ\Ö+i/6÷ V¼bmÛP€î”ߺʃÿW+Ì^ß¶º0G<:\¢.é6%×4ûÓ§â5Ö­'"Iâ<Ã’Üh¿çÀ9Ý(Gý bYPŽÔ•Æ+Göy`øÿïË‘Û<ß*Gn€×Å(G>¶õ 9òG[¿MŽÌô„äÈ,uèuA±¢Ø÷J!ßBI£ ¯<{,(ô=£Ÿ/ì Z“Âd ôQ5ĺ&rf–&œÝÞc–:{5Ùä¼îË€|1Ÿ¥+ÞGñƒ2˜9Ùa]3Ö³@cȧӴ•`Cò´è?-òãuOôФkFT¬{AJå,¼šz ükàzÆ6=K©QÝû%<À†`ÓEç‹È¾`ÃBÙãiFm©÷ “Á<Ö¾ôè—FŽVdºGïêU´®yß4$‡Þ¼Â:ñ"‡UÅ Fa&€ŠŽ|µ–“ÖàCý¿Ièÿ[pÕwý‹„ÌYPè¯v¨?Ü‚Žð? G€Žlu0^Óï ]ÿ Xy}d¬±€b΃€Šâ›2âz æØéµ€ G&Ä«u" ·‘s{—~AÀ ¼r¦ ÄpX?÷)²ò¡@΄yt;ù{º }—.fÏböû@ÕG$tb‡±ÔÕ‚;¦‚2ŸaaeSƒ4S?´ïÉâCYüÏWÈâ…ñj>Ôÿ‡À™¼Ù¹o*ŵ&5Éf¶ÏŽ[XTP®NCÕdrªe ž`ÖÍòˆî4£QŘ'/Ü·$4t zeõûƒs°ÐœœiÑý;w7Ò1ýÆ,>BXVäø7îÅT+Á³§°¦ðâY6Ȇñì+{À uL6ݯvj*7ðTÝÞÕ°bÍÔ)ê@Q¨ŒMˆšÿþ0ÿ¦©@Ë{ÓÅ+4ôÉA#ŸnÛãéS@Ma0ñédNtf"Œ|Mã¿Ë€”«¯¤áòyøs€ž‡¿ ÌùÄÎ+ÊÑÚLê…z Ü@>ÚIÅÕ@6©o~K ~Ë¥ìw«#K¾ÞSÔëP¯¯œzüuˆò#ñQµV¯z×ÜΘ ~3 ë®0‡a^»+5ûNnþºáÎRÏUã^ý vàÿòùÜx _o­>ÊÕd[ɼh’ÕXf\sa0>ôø›¯gˆ×7ë¯123¾/^Ñ_£mŠˆç5ÆYgã–ÄCoiýýýÆw%'^éI|·ê]ü=Orc¸ë°¯/üú.ã|sX_ ,ðpxõ²{ƒ_”‚–ú°<ô!+ôööÐÛi Å‡>$„>Œ½•BýºÐ6±®¤ÁYgÿw5ËWÏ<$ûS\ŸË#f¾'”Rï³ÁËHxy4¥¤!p¿] »kŒ5W§¦¹ê d›|Nz­Ezíí„”¯KzípÏqÿWú™ ,Gb]ëуÀ²·{;ÔÌšVH.Q޼,õ ¼ÆRLBç‰ÌýóÚPw3`ª¼rAmšôZ^EŠ”Ô¤tI¯­7b¾OY~Jê•ãÅ@à ýn’Ñòñ¬¨¢ŒrÒShdEÀ Û¿¤ŠàIJ—2´–µ8÷[ˆi`qÿ+ÀÀ:5;ÆÊÈJ'µ)‡áåûW¼”úÿäd_H¿S¬ìϵ%œM:ÄN­žì¼8xÍUìXÏ1çiS¾óϺú"úοàüÈÄáï¶€_€ñ(ö̾zÍõì•^²øòùçûØ!ç—&ç&¨vùü }N¯{|dZ²˜Âïþ=°`;˜ù¢xKB}•j&ü5×D[ªm®V9¾f©ÅX…i…cà1¢:+­ðhªÎ2¹Z•Ã)))¡X¾¸z¼ÂšX—Ô//¯ †”þ²ƒHu®+'yôÚ >Šø=·>Œ¹ˆºäåP&.¬ÌDé5dE]ó&ÇV±ãÊàšá®fåEÖrenŒ¢|Æ©g•žŒ¢ü–EãSêíÃsït^™±›,Ìa±’±Ž/ÕÖÿ‚~$Ì´I®tò‹?žÔHøƒãA¸…öWâ!Øaw‡öÝ2Øö¡óCæÀÆ}˜ú0¶pèƒ-ô!HÿÉð*á.JÖoÐ ²·çGgënú@zx½þzœq=®¿dü7ôðííéáŸ~ýí7è! / lQ«²ÐÛUha~èâÐÛÔÐÛï …ׇ>\ýí´£ú]IÇèà°0:hÔé Ð5–OºŸØÝøÅÞy‰º0Ôõ°oÞM_âY:ÂÈ*¬ÊGúÞ{‹d¤7yb­#OU~g4$4²ãÆÆ…΋Æek†ÖäÚªÇdø?†v6b¨W-¢Ù÷ãTBa±GiÏ8;ãÑ!´sÆ8~©5ÉÌvž Öm‡å+µ©·€,¬Ö~²XrÑ¡N;¿?–g­pw3¥öÚ1úAr= w­¾8 ð¹¶¡8äA¼ëhl,³¥&Â…6æôÙ·H®ŸB JØx6á0WZ<íü´Oä㪉p~Úåªcýì°<c´ÐUmv–›kÓ«5¦ ¨çsV1–_—½sd€„,ácQ[ÞdÁöƒ žÌ®RC6»èÉìÜU4x¸EýÉ:Œ‚J æH€I“6Óa£BSs1¢"L ìÔ_‘@wRAzßUY¯:%PyÏU¡rùJ^q’å[1JÏíÃQZÑJ CîÅ`ÑÜÞ«P·½‹:@ŽËs°Fù. «EPk‹áéјÀ˜Õól _†áSù2 +¶ð¾ Ãá[e“‚~†…cb>“–8ݨºwp¸å œ ¹žµ©éxíÿëÔyGÐ#ø*›5ÀjÓ*³£jU¹>ˆá<÷+D9^RÅ´l”<W¶VV+Û¥æ„ïÄâÓAئ˜< ÌÈ×ð¡p 51 àY¤nH~âЬIÍX‡aq¹]Ug¯Ã¹¡ \þ½¨gØ»ÔIôŽnùÖjú½¢‚hnò¦ÃKŠMèV̡ۻ±Ý/Ö¢ÕçäHM[&Äú°Ü_yÔª:ÎÕ³!ÓõzJÚûMŸè—>êyóòÑ]PÙ0tW U@Yy—7TwÍÎÞãŠÏ‰Eq¼þ£µë%†ê5ÿOêݪ×ô?©wk¨Þ_/ûÕn™³l9YêÄ€bD—G]vE© #´1¶ÎÙ1ŸbŠc”TÊkñî-€{ê}§ûÃ/Aâ€5ˆ0ø¿Þý© ºû¢Ù×+ ;~ F>ñ/FPÚíFï ‡›}#àw³oá3 M_qðÙ½›ro¯G¥Žâ7<€O¸EDŒJ_>¡Íˆr ïF¬ò݉Oˆf¾;ði#>ÍÀ§JøÇ7™”Dxé›H­ÀKßUôË *$<™è« 3ÿPÎè˜.èã¬lô}‚Ot5vvÿe˜Éà;ò…Ec0F Â;ŠJœ»[­^ÕÞÿ¼>¸Ild‘ù)ëa—8ìç×ÃÐÙÞU>‡öðÚ(bf]þFÊ_#[ÜÝÊYÖïÿ\SºòÕTPRÖ¸ŒüéáËÓùê¯$<¥\}öT¿ÖSÔ…÷,Ðm‡?¡—ê½°?¼x %¹ðš¿2˜{x×ÍCRÛs_Ž•VWœBÐÑ~*’ô¡ÙHrå:èÌË)¬Žj6RR?Zéµ&|å-v¥m¾"Þ¼«ˆšg‡ %ç_iZCXü²q“€kÀ8A'æ_a¡œ²]J³«@èZ>ì׸…ev`PÜKråÜ®úМ•ß6¼(çþèÀ}³Üv笔/xQ06Ö‰ÍãÊÁ7{çS Í$fïÒ(G«eö‡g#ôï¢2Ìne½IŸóÑÐÓ< …¶Òøryù NN‚QNé¡ã%Yzù€µÞgUneïÁÀ£áS ‰år|(>~WÁ]R¼¼ö´|5 @ÚüìB˜|¹ë3Ä×Gá';î|(>Ö ŒÝUˆ»&‘æO”_åÙaQúž…a±mé|ÞÛ;¬%—¥{Ê> /ôÉ YðÈxKùp§R `›?C.á™I™íòTdòYìëN{‹™)í€ÞÓ<Åæµ&p7Ð\”ú^#ÈlqžîJ8ˆâSf»³.ºþtW2{¥3ýôü „ÿ%n9×Ý &Þ>βH®³BòQŽÖN¬ìµx¦{Bvœ¢Áö•Ž$¥ô *ÈA½ d`´÷›ç9íGÌ ¯U´ËVA˜ó¿ èÃ+TžoÆÆó)ƒN;Fn˜DZÏìLÊTå(,2+l<0·î«QrSÄFÌ3%m}^lºÓðÃã8gÐ1v¿bWŸÆ3ÌIûгɅ†q9AsH±¾h”¿çlï¯NµV.¶Aàö6@Kt=yÀ‚“jqÖ[˜õ‰4–ÙÆrÛÑ f&ÌŒêNöŸjƈ‚2§òN«‘Ó2ÛiFâ€X|‚ʅκ£¹ò‡Ö~g'zù¨[†¢ÏK—¯¨ôfn«É³Ö¤[6¾Þ2¤¥:–ðFW¶…-4s€¦ÌÂÆV®´öëÁt[ýÕ5ÖšeVg»Ñùqÿ†êeVüγ©?’uhT )‘.ÕìßÊ£¤3£&õʉÈ6óŠ6Lsð€§CâEõff}487kÐA^ÏSIØÆûá´6®³á#º9|DCZ` 8¢< †z_gf -4"3K÷¾}ë,•?Æq€äFpá8ÄÞT‹"sÅA.oîãÃy‘š¼Ì"[X¶Ù·ý ³-¾×PfË·øvè±2üç=à»ý2…'ô-¿~Ç=–+ÖD w¨.Iér¯.k颱äB6Èat¡Ê»pÌÐz^.fÝ(Œ×¦…ïf»*ä|’ó1ð%¦¿íÊSwQ¨F̱ ¬f³Á‡Šå]¸/?„‘² tCeEþßãyx§¥Açúõ¼Ñ^PZLx€o«œo5zSÄé›8 K:/Ç`‡FêOÅþ*FÔ‡ÞX˜o‚³Áì¯áíó9­ítåã¨(6ù&hñéºÄt®˜ï|ÛX]l­\b5Vþš(ñ~íè 7Ü2Ü;¬ÄÌÖáÝ&¼Bû˦ì@às9îJÿ)^dcÓpïaSä´v(@ \²ÁìoÂùè£çßS còÍÕÂòÛ³÷yŒ5°w`³p—dåá2¾\Æ[³ópß®âèœ<\Ä÷ÃR™ã|.6²‹ê³ÈÐO‰çÇñy_V6,ß!ýŒŸ5ð$HG•)båÆV.6^½aPx¬,X«flàCxVß§ù²9N—q=î¯Naøã®S"ü±º×D|£Qr¡¶É¼}‰uÁ¼`Îú«§û¢ÁÀùiW^¾:ÓWNo)“°v›lXUô)F<ôD0¡»äÂ#¿Òˆ,Õü'ЩDO¸-‹äfâÙƒä«ãÿ¸üg'¾z뇗‡YÞÀû¦}ç§´TúüR³ºú¾¯{Xc!’9NÚëéâ|ÐJ>}~Õ”’WÂÞÚ¡QOþ§ÂS&݇IÔlüÁø*/Ýî¯Ó•{1C›ÿe‡zè1\9UJYµ€ñÎÿ ³²Ô-·hš>ÖO§ ÓÄ$špœ±/ƒ0ç2}œÛpP9ê÷IÛåÇôqÞ‡ã§öÐýÏo]+üŸ:•:Š1€ÑñpŠú˜—æŸàj­ˆ—`ë ›çÇ]ÕéÓ´â’,Õû=‘fÇáPÇ=ŽŒlÙr†ŒÃÈý#Ýc Ž£và8~þÇÀ8îðlÃ29«†Ÿßü9FµÎWšÕº$JP¾oí|¬¿ÅzÙѧzú5îP‹Õ´¾8/ìŒ7¯…NýÑa”‡o@EÎWµO#M.HŸÿÝÜ`‹ÿÅÜüXsóÇ›ÃçÆ¸màÜ$ýáßÎMξ17†ÍÍÓ÷çæù™ÿinÒ~‰èø­s3¯õß̳sʪ'†[V==3{ Ë „UKö£ž´Œ5K®_Òæ„q¿„ã®Å\J‹'÷HŽCuýèçåŠáÊÉ·þ„h©£éû<ä£&‡Z¶ÃËe6¹›w­€òÍšÒ¤þáœtwk·7É×ðqSªÆ×Q®e£ñ $Š:eØ| l°õ§FT?#;ÿ”€ü¯Ð ú×£}¶ %7*Øþ_î耚‹g‘Jä.t1×}c€«¹»òµ”L>¶ô‡Zø £žå=å¹>P$ù6ºþŽÒÇáK¿/ì^Ü$Þ¯‡æ‚¼]cbݳãå)ÕéinMŽ«1Íž%tÕ)Ÿ5Fœ1 3ê¾5&ÿG|Æt (麘ĔŽFû)ø0{=;VmÿPrývm1±{Vd/ PrUÓïÊŠS K­‚çÙºŽ$¹FGè‚¿\F!j‘f·ä«ª&GƒH“£þ…f¼Àx~™ï_;ûkfÏ£±—c>Û%(‘kÊØÚtJ2麃~ËggÏR>÷Ðࡃ.)Â#âÓ|Ó»²âC€¹Ñþ>@²ÑZ# Ðøm²Q-² »ÚH[iÃHä;ŽàQ΂°¶Þ5ˆð±¢-K? Ìzlç]ƒ\‚m©T¾Š+-˜\i”†æSÕ Å| Œhw:#}"™Òâ?^cŽG›03,˽¶h)Iõò øà¯\×?Kù”¯n(Ú0ûù-xûŒ÷ÆMwc3 ™Y›É]ÀêvR€èÄ:ßàmô,4’Q'€…)m¾1(Ä Ñ: Áx¤—(ñ|S ŒHn‚âÿ8vÁëCÇ¿ü‡ƒ¦×ý\¿ǯú ŽGûŽ÷ L…„pp{‡¤Ý×vù[!òí¹üí€PŸ8ZŽwÂA¸é^yY‡£è2Á‘‡Á\í§Ž™—CrPô¶G$¼ ÌG×Á’¯Š†_´øêQ þ¥Öç¬ðBÍ;ƒ&·ö\ ü*\žÃšóöÑÞ÷¯ƒö|„ç­fO4c¹jýGƒrÔñXo0ÕÐ|_¼ûe ‘PZCýGÞÈXÝÝè9så8 «]¥FØ-Úg¹ Î¡-¦“›w¶ ILµyæÚŒ ó'Ö1Éé5'µySÍ6À=ä˶– óέ"kqJRÛêóx.è&«y¬nþÄ}l„ ´*Øl¿§0ZÞÈ8è Y¹pü“-<·«r–Aï4Ã2]&Gwn ‘?ö~b](ûªgÝHq,#ÇKÙ9Î3]yì°ê¸OjL!šÌ~²äTgÍ6–ÓÒÅ¡ŽÇº õlõËø1ÝžóŒÍ­17¢%Ûvÿõ´À¿òC5›Q}x1¢Úý.üVî¡ì5X@Í8…œp¹ôؾbrAä%Ñ’û_FòKK¨ W›@Å0 ßg0[éóT‰Žä~ž»©}PÏ­PŠoļy®îÈýWŠä~§ô½Á•ÖŠ ÆÁ܆0ƒX9±4^/`ÿÃJBÉ!¢¶a¬ÇÄ:¾ ô ð˜(û¸_÷˜é d©O\ÄïTµ×r·_Ö¯ÿËw{¶wÀG–êš×P¾@Nól;‰!ªÉEÛ¢íDˆ´XËãÁâÙ>ãï0Ñ<Û‰…Õ%£ƒ£û¬Q\s±_+†6•?éIÇÑË¥;òŸP9Bäª ‚ ŒàÕ`lƘ—múrÔÃñ‘&]@„üˆ–V}fi ^9¡²W7Â[‰ªèW°É¼•H©²7«™õRÚÕU]€E‰Í¢B$ÿèZµ¼¹_[cü ê} ¿öŠSͰgÏý™võâ»)Þ èæyQ¬Ä ÿäõ=O¶¶)RRKYkqªƒ¥WÚø,é‘“yjÃi -4Øe’ 3Ž—sĘÅ0Õ(z·Í—†„¸ÕÿWµ"‡+ʇ±{ù5kdî]—Qýûe=§Ð8Ümlû_xj•·¯gg…‡p¿öÿrìùòNZ’Ê‹òa¦ã5jÊcZŸ­î9N¤˜5*¿ãÛñ]~F Á*dyÚNì^½Ùjqÿ1|CÆø6"ðMþƒÿÙ; ܰAY<µÚRcŠ,ä-ÚU‚ ¢§|6–tH>øü ±’SþŠüį¼x‹üJàcSåÅYJƒÿiÁïÆ¦×Dõ¨à)#ǶOAš’ØêÉO£j ôú>ê[ç I[×ÈÔ` ñ]¶æÿÜîÖ`»¿ÃbK¨Ållñ{Ð"» Þ mŠ3ÍŠ¾@­UÓ±·ŸÎ'güAX¶:²³Ûz1A—n®œiP,|tW9ʈYzÝ,¬{Ë|‘ËÑ‚Åó³èh§Gô_h6-3ëLNm8- 3öqÖ«nQ¡òäjF_Êt7û¶ô„äÞI®f<Ìí¬Îù ÃÊ´vºg uvl¯ ØlMþ範M˜jÊûuØ~.L5?Æ]³P‡-³¢Ê ØÈ»€óo€»xùßGó&`£oÿØš¿ ›µuY‡íÂ|SsùØÄÝ´áðL+h%Úìõ\±I.Ì;*Ê ¹T¨&ò¡–D#Í!7ƒjC§Pl\‰x"a‘µ‰uþ÷x…e^ÒùÊÆ#NÚ§þwjåö¡®°GT8‚šÂ»þWj¡_’ž=Má  œ÷»kSI1¨1RÓ0Û¶…œùØÑ@@ûkÐßrZžjxWଜ[˜5p<5 #²3;{r1ƼsŸ5Gm<ÜOñ@ äÉTÞ³Þš¯~6Éb—~›™ôÛÙl™9@ÃWý¤•WvNX@þ•l0„âªégä »{0sõ£Èfï’\·G\y v' ˆ2ÑËå¬h7®KT¹ò¡Ú-’ ù¹X’Ø»LööʵÚ-ò FÃ-š½¦OrSŠ•qhT¦>šÎüÛ“Âöá.¿fà ž‹™2>ıá. ‹ð9h £Q°Û=+níP_nÕgFr=íÏ #Ý¢¿E³…VÌɨte«ÕÑzþ²vŒÁ?M_¬Ì¶f£G^ÑUyÇ-tÏp†Õ[µ'(Âæ>–t`u·Çr%¤ò2³<[S:<³9HLšëY:xtŽzFÐÆ#S«°™qÇ›£ –ÅnM…Õôýe^±Fþ÷uŸ’«ZœÉõÖ¾¤fvôüï$79jœ\_Ò6M¶w– ‡æ’b7ɃR0ƒÀ9øGr§ãÎÖm·²Ø]óXE'¥ÑÕ3|Š1½‰Â; ;&…”Ü#1íÊCTæ$‰}™èŠœlu£._Í3O²ã¦hþJu^0â–Ì“kŽùë 1„íÃó¿SŽÜWÿˆ„Ð@Ú4ˆØfÌGåC1°æg|_!]¨°r{§×¼K‡èñª—Éœ°É%'…Ùäœñ€|;¬8e¹î:<ÏTY.ȠȘJã1<ÿ„l\™FaãzY˜‡*:¸~ÙÒ¯¡}k™,9 j–úÆÈ€uë°ûÄ®™†áù5¦ÄfúE 8€ Ü•†~èÊמh®Tða .§’W†¥Ô°Ê Û*ß¡¾J¹Õ—ƒ"‰™É’a# !Û–Ù° ›mæLØ©þí‰ÝAXu×~–y„gªü ´Ð€z· -CYá%¾Õ8d?â‘MÆ<õ¥wa '0C€ ³Ê–³ÈYEU[>!l>+ ˜þ7ÕŸÜA6¡ •m&sÐg $2¯ò¨ÿ4žÃ{ÒêØAêØ<x€Aß±ž]‚h¸9¨Q˜ƒºÐôÛ 9((èxÍ~Ò;³4æ¨I·y•?ñ¢“¾Eýa† ÌÛ«ÞxQ?•VšƒV ú0<ðAþ›ÿÏ‚·é„üׂЭª:¯ó;, åçdàCàPåm¤åo!-ßøÔ‚Ôümÿ¾Åî3)`÷™ ì>1šžÞÚ³ÄH®B B¸ÒQ3ží«1Tže? b£¼ŒWtÔH®fÅmßÐ]‡³”„†)ø1Tà˜/Cð±Ù7 dæR£Ú×ÒO&¹è<$³‹A0&¹îYä‰ÐÞsié55Cg6)¿…ºçüO†Ç_öä>Æ+lz>$¯ ãSަXKMê­#uû‚TýgÐ`ùhR±ZYn­|‡š™O‚’€áüDæ!>·›gÖò_DêZÕ„çz‡Ï&¶ ©W®ÇUuøáûñ_*Ÿxhšk©—\ßÃNrkùLyŸY«ìL¬ë±Ç‰¬C‹¡‰W·tŸÐK̬h‹¦ÄÀ{¤öhõ‹D²ÅØkßì¢s3náÅ1Ð*ûÕ|èt%/ž"½¾Ø¶’ýj—Y ¿¦ÔŸŽd™.ž‡Y{<ÓmÉ·I›çasg™™½šÛk¥×waqÏôžØ¯G@UÃv6°ðrvÂI^T]ÿi$kÃ\˜Æ^ç鮤/…ÆãbØKq‘qrÝxúf(Kan¼†Íw®279{ÁBbbxØ\IFÉõfþÅÐìn|hˆKÞŽõV¿Ë)æ2Òþ{ð4ÀCÁ÷PkÓïôÄöð…_ñÁ õΊJŒNr…RZ9ÆG)ÐÊ£³³ÔCckÑŽ{Ûô˜O:Squh&0Të«xð0ùªÊ=6!¹7“»D›A,ÇÀ­¦[Ù_c1ø9Þxu7+wpû^bãóc“Þ.¿•Ï3óÛºŒmð± óW|H Æ">cþ1Ðp›¡p<úÑÿ-ãQlI" ÌÆcl‰YŽBn<õ™Ik‹F0ó¿¨lšÙØæ‰¦gx…¤„åYSy^t xÆ, ÅcÅ¥ÿX<ŠÇŠ·Eü§â ÚäÍ ßñ‹Ï…â+ÅKÿcñ©üñýd@5¦bY¦B3›M=â‹å÷î§¹\ëFãÚùjÙ“Òùq„lby)DÁñ%ÄÆWÎv þ½‹oÂû©g™ÓØhOçÅ2Hïƒõˆ7P½» _†,0 Z_8 …²©¤Ôòìd“ϒɪ¶Û‰eãäAlœådà8˜ÌãIö81‘ÑVàª=­ì·ÈL&RÔuòjïê!ÒKªà^â@[‘)‰|Fò¯nŒÍY²\ÕrG ØÁP…ݶMýÙ9MÃ[XñÚhšm°7_FÄw'a"ÄWYS$š(ø«‡“r£#E©Yß›èfUí½Â77“q¢ªÂŸú 2’ÙÛÑÌ,ÞªúIb¾F ‰æœæ ®ÍóÝ'!6È&rî²õ©x`ôûÉ%#6(û#>¾Aôú $åÐ&þQ‡D‹¾S£ùý–eîîåÊà,µåd¿V3Ñ]‰[¿R¶jAÒ î‚÷%oª0R_À\k,4ûT}ÔWM„Ð7˜Šm‘^/žRÿq$úƒ‘ %ß Lz}J \©&gs/æ'†åF*Í¥ï7 ¾y?ôë»xe"Š@v+ò b8ÚNüסf pŒPìÍgШž²´ÈäøhüwAOëÄ£yê=BóÝ ß"rD‘‰]YꠘƆc3¿Á~Öûåe_M.7çñ|³iDާ7r{¯¦heÀíu @o2²*Ä“ÝŪ’NùLØV1ÀÄ|éø»~û¿Àt8HÝë?3±%–•ì‰Å8iwáéË]¸c9b{0Mƒä¦\ë-"Å‚ÉëÍî‹’o^‹Œ0Â}¬Ç³&†å©<ÝfJ·0 D–ÏÜ­çÐÄ&–ÑÉÚL -lq@`rXXÞW|aìÉV=‡®[hvîÁG#[Ü»f$'A#i^§ø2±R®Ë¹o$àVÂÝØUTcº-ÚšXäÁ7ýÒhœÍÇçw,„Év×›­D76| ½íîAnmYu?€¦Þö=:3ºô•àà‹ð¼äñ~ʈc¯õÍÆ¤"HU=ìKÓ)-¹×Ž÷— 굃ÑlÜR’R(’©ÿz›°âåMØ-ûÌ«0(-¬åîWoµ Á ×ÎÞiÌ(m]Göþ·N„¹úJnóýÎuÑFÉÝJt~ÿJçƒ#M’M5 ùÙœ½ðã9#Õ^éÜpSœäÞJBçþ•< ôã°é@tôÌÊkòíÒæD$š+A䯓^?À‹ê`z¦M:_6Ú™l–¯‘^?Wæÿaî_࣪®†a<“L’! œˆ!TÚÑš(*CC`Á„0 ·€íÓRšÖçQ2PÎŒdgs0¶Äbk,ZliK[¬¢L %á¢H!@”(©œqR ‚I!ç¿ÖÚg.´}Þ÷ûÿ¾ÏfÎeŸ}Y{íuÛk¯ ÂqŒ\m»´"Àí¡¨žg,Éò9Ï3I1+Oó£òt2Õ¹JV¦Þ â}=wÖ¿ÛŠ@q¢*®~zGÛy~½´{е¦Å$í~&ÑÐÅåzºž“Ä—X õ¾³ò@>Ô„Fªã.nÛ_¸€¥¾²Øúߣ+Ššuö\óóép%L@¡ ݵân,HÎûSq4íž®dÙÄÜõTTô{q"ï(¡ ŽŽôžò|Úî¹¢±®ølu|¸  J>j=‰‚ö£è3?p ¬pðúO{´‡£R.+óFK˜Nnð|ÒΜÕêîç ˜í´_(·5®ä†çÝE wß)l •~go4 |¢MÏC•¾ÓŠk y¾yý3ÆuöÙÓäÔŠVaÒ;¡`ÑêXƒ+áKÌ@‘²j.Z‡&â#ôμ(z:> Eƒ¾Fiœ© >º!j¿ó ^õÒÚzg^)ÖY€ ŒÖWýÎR÷ð¼( û˜£LÂo·’!Ðs;ðd«2;q0æù¸4Yáõ‹¦Î¾gIOJ«§¨…µÊSu‡=±p%à"¥Å)m¥E[iÎS³£ÐÖ„kýQâ‚kÒÉSOò áɳæXÞ2¥bðNbÈï጑ «q§E6WH‚öÜ Ù‹RÜE˜ŸPwΠţÉIyê(LŠjß8ŸO}ÅŠ æ†cû’wnÂ#D@:ÉMdÊðÞÕÏ€Ñ2¦Ð>°Þ×g‘(ãSy/_MJ¦k˜ú×m€ŽX+ÁÓ5@d”ã±—…@ê|?‡÷ %_½>Í%é)´ƒç†@SçOI Ë·Öáa`-Ь¥ª Ø¥š\¤«Ðßˉ,Îw|¾K‚gysULÝ ü7ð¦&oTðe`@¶P10žâÜ ÔjcAŒºÊ óD9¡Ãþ:Èlé»Õ18Ç4ÕêG¿ .ÑùþN  ï¤EͱùàÔ ZTvÆ"ˆ Ö:”;¶a|=̪ŽG®%ïóh+€£,'üJzуe9à¦êƒù¾ü³°ÚiF›½˜‘ÑCòâù6>4f(b§`ìuÔ@],ÔÙÂ^ì9ßΧ™åÙˆDÆ¥:ßcº¬»üilè¶1B6 °Ò_d²Í7ºæsúäó "Õs‘-Jþn„[\^ŒU\þ.m«rêƒÿvì }8­—*ÇRï™Pà4Û¯­°p‘3ɤ=i)žÔ)×ÐÊ Ž©Öl;!Œ’ãMÁÚ¥pƒgÍ«Áõ3÷]§úzwF«ÀòêÕ< gÖ³Jíw­Zúd[½kùÁLMÏ(Å)Ôïxåï krlåëhJUÇR„Hý ÞL±XQä¡y9u#*HÞÓ½ÁüK1aõÿE~H»GVFG6†üê×·!­:qÙÛ%ßålf4Æ;ΜŒ÷|?r°Ém˜¨ã"m} p]úäýõW ÄŽÑO3ù7­§Š6x\Yž«©+ïyKò |D_ö°ÓÐh¢ë;†Ž¸ÿô?ññDR>TkA¤_´ôcR“cG›»¾XŽ£^¾‡þÒmQQKçû;.GÆÜÀhM%‰Þ³˜ü ‰BIÌ—¾¶F,¥ïhƒ%ÐÞw Œ(Á¢Ïhë»Ú#×|.–><§ÅŸ±Úä[q ¸"ÖE^Zª³ °ô ¥j'V6?"ÉiŸŽó¸xVw‰Øû*B„ÎïºnGgÚD½,•ƒ3_ ËÂCá˜Lw1g¦Ý:X•¦y«]«¤Ý]%Ó põ8»*í®/™]sÞè­V&ÞâZ¤?‰ =yDb =yîÙÕ’i±Á'ÊœX×·XwÍ'Fiw“2që^ÿ ô¡}rÚ©CÍg‰i§¼Õò¹Rtûìï;Š„"¼Ïî.ÅmNtú‚?÷a ;ó´Ô¼\u6¸ Šp?Ï#~*7¼øÎ²Ó’w m7ò!è.¾J% xÎÇ]‘¼‰dèkÀ Åõˆ–0c¿"m|íšÜIR8úXËÃ)Cx#º âqçÀ`°gŠ»-(PàØ®V€ú8Òi·à¬¹vƒ¯~"á&ÌS‰A" ¯ÆÌWßm6¸~Š 7 ´P¿ï,0„ÇïhÑ>›'°vÖ­žLÀzÅð1FÓIînƶ»Iôm²¡‹*IÈöF4áµA_@CôD=#šÒ«&úÏu#ùr¶aŒ€Ñ¡f’¤ê¦ZW?ÑÅÉy!‹ál¥’,sõgÆ¢îhÉ‹j()uöÖ¿Á¬³×“âבv¶Gq¶ò ÅM!Ï<¦L•4Ï~#È®Ì^¿²ÅS=ØÓÒ“R´Mw¥u(ù­Ú}YÓÔ´í˜3Ù¸Š.Xù/.-š% «Á `øöß¡Á¼·áoZµzÿPšù:Œnj¯&‘Ø£‚øžŒ§UÍAí·®$ =]Ð& ín€µP2q_† "Œ­7¦‡ìó1Æ3ô”N×zÒnø’ž¾»&Â'ðPÿ*VÀ£±®ïÂtÀrÀ’—Øþi'÷OLfùM%ТÜLq¯L|XßÀ1k|ÚY› óÕMk›y‹Ü‰a.ˆÎá“–¦ØÛ²08Vë‚^«ïš-(÷0Ô7$c,¬;È&Þ†SO—Íh¢Ñ#žâ\ð|SÔ Ë£™6JaEe\¿ò›QÂãƒ+Á=iÄè:ŠÜ–K¸ÝŒñžºÔñ°Žò¸ôùFÝwPwÅ[±:DFÆÂ$cì  ènoÎá&\]jw¼ŽÛPt t¤‰Ë­xlXT~‹-_•¼”ßÛÞŒŸÀŒb9 m¬×˜“¥Ø[³°ÃýE•¿UîÁ˜ ʼn¥7‹Å€+äÛ¨ƒ;$ÈMs°O˨É·0A¿â ¶cþ?DäAœÏœ;™cÇÿwhé^÷jšâ!z ¤t/Œm‘ÒštRÊö¯„®VwF£—©‘|{AT3‰¨î4jû Du8½ÞŽ{é^"ªÕ%%‘Çôú ’c/Ö$W³þa¢j¾mD{GÈ´4A ”Kc™s7žÁßÃí;ÕMDûžúS(xdéÇ{õÜ„·ÅàZ¢«»4*#骆cÀ"›còvõµØ0]E]Ý…tõN’¾wÚ•’wáÞžÈò÷2Gu_¢ŠeªƒDuoà\)€‹îC¢©;x<Ïæj¿@#‚lèp5nÕimþNŒÕæÜZg¯E‚Êäz Ãÿ„+tT}É uö—‰Äžx÷ð5åµÅ x€iìËSˆÆ^aö—W¶†¬Øºaíig5WymÖõØkš¶Š-Xù9wlE“ìX~;×!!âš›v(ëY ;¹CìÌÁj±eÝø˜»w"—ئ÷ܾ“Ï7‚Z«¬zÞ-Øs ÔY ]x»Êìéî%žÑ6Ð8ÐT9þ¸b+_hˆánÒÇ5å71þë†X cl„1þëUc<Ž1[Qz”œtÉ%B&Èíá¸%h­¢6ÓHŒ£I'˜ÀSPµþü¸L%™¸ÒW‡ó‰Fî>*˜ÇÒ0«hÌÃf0‚y¤G|È®ûðÔqæîÆš ôugpŧ¢å>™¹û@Z?é:ÞÏ–0ïpZlVwàŠÉán“ö âhËÖi\#·U_Ö¹‡ƒ¸G6qPË^§MÔ6<á7€.›1\DX¸š1€Ö9ÐOHãnðirß%/·!oî‘æ$GÑ2DZbØ‘ŸhÉß„äùÇÝ:ÿ°ˆeüŒ¨™Kú@š }9ÈIƒ,'¢ßbsY¬sXÅmÌÝ³O$ÿ KD{ü¨‡ŤÁÄšIêZÒ®òü£=iÕì\8öDöhÜVùTl©dkòÑ‚ÁËqiSp¤[{ÅV› v=%§Þ€¤9´ç’äkf—¹Ü\§¯Æ?Òjl 4§—§‘“‹AŠƒÝ§s0„Ëþo÷+…ñÙ˜Ãçy¾Åõw$úeUN‚u)ÇV΀Ÿ, Ý:ÃÈ'ëgBE Y‰cZp+ƒÈTbw³–χoÔ„âhüY×Pí¾åâ£!Ñ„1Œ÷[£Äï(x´(ÐVÊuÐMNÒäÄHòž=7K̓ÚŸ¨ûàß¼Ìðèˆ25³3@¸¬Nò9 ˹ —yÖŒ’ûA«ˆ„ò•L3×x>–õŠí§Vå¤Ë—“ ÌU§þZlÜÈÄ‘—EödáúGõZ–qëL„¡“—y®VÚ–ùޝ6köf»ÙàZ‡´wŠ'½‚ ã¦ÅwRÙY\nõ‘+;a?Uýø) TöSh¾ƒ;µ·hö$în³¹“¤gÿB'DBCUòæ–%žoe÷±gŒz*ÜŸ5nþ¥²ÕÆÀ>ŒD†®zíÏÆçÓ¯?£,›–!¢mê/({z#mã¾vŽÃ³ºækgõ‘³ú!eU*Ï5âNΆä7|_`LÃl0Á}'¶•&Vøº°ŽëæUœ”s;@Ÿ[É÷<+´û=ŸH jÛÏ­Z'æ×Ñ3‘^ýáKúü.â‰$º•8˼2`° %æ¬åÎdži\†n pó<Ò6u‘9ê%oI!É|‚>‰;j¹½žÏ3aÍË<î£QÓÀ×ãƒ(úœ•¥ª1€½Ú•©­2f©ïmÑÏÔ,‘v_¤À3òd ·cèÒjõ/[ô^Ó8È£¡žóð›D{p!¬YÜkD`æ‹|‘1p´úñsˆlçÙ† {sÕñ„W‡®Ç«*î´òԅг{ÙÓF&Êü0j-•;êµqƒÔÄ-Á£êí(F–=nÝÛOàÖµk!Übs0®«í$;‘íšΕ`] nØLIñâÈFŽË œÓÕ!×@áùLÚW´kd0ª¢þUËíðU8˜j)ÿº¤vîGCŽ|¢dS„ˆ=Èsؤy°VF…»:žÃ_“ü)1‹šuÝÊ75áÜ(’ŽÙÖäz>“_š}™?‡q€ÓŽÛöóM­X‰½½P²%½ y@ÊLw¶¯¸ø*¿¨bác‰gPø›ÏèV¾ˆ×tî9ä¿h[ð2° «æÏQµIÅ“™¸ÿ…Þ©é¢×Aßmïᤠà~?Á=.+ˆ@ˆ§1YË·â, ž‰³@Ûä\Œ àxjŒZÑú­|1ðš§:–Q¯jZ`wcWÔóë‡oeÔ·p·ŸEWZÿBÄ&zæQõ¯³ŽwÉꘃ!ÂçÙ)AM˜Cí;£À ¼˜„^ljC9úÑ4çs6c$ É‹üAjY_g¡£ËÍìikîúýXZ“Ûæª{š{µºéј=Oxèí9,ËÖK^¹/±«ž–Ïùž~Šéææ=ÌÖãáÅõû·â†?Î{xëÖ£ë/¥Dª5§ÂÙÂýM¶Ÿ¦ÑeÆ3UâZîÄ)¢˵°æõÈÕøÅ]4…%Âç$ÈØ’Jò¦‘/‰?Gñ(g&³›x‘¸•/!}£„™vy-§£C·±½~–0H°(Z± µ’÷×H$Ouâ!ÓÎcEWï!¶ø¬)¿U·’¥uxE9¹ê7p>—.tbçÆº[ó²ØAuúVZИE^¤>^‚Öøo¹>àöè¤ÏeTý}Å´{Œ£îÉ ssíYªá, e¬cFÑø{än[»ë<•™ßÌÞ,¥~6‡ÏÎ)Ó OrÕÞ¿öj¤°, œÊV«·Pº™ƒ äô0€1ëÝ&eŽ×¯‰<ö,ßäoÑãØ›‹÷ÿ¶7"¿Íú6”;XY2AÁÙ̇ž!u¾»t·mhÔzX&O›Y)K¥hÛ@ÍU-eQQzÀwùEA/Ç·b·?†Á*Ã*9UÉÝ­¼‚Ì"ÔšÐõØ$v#D‚a¸œ*J«æåø™§;ü%ë/m®f“fð*쯠^OՀ竃ãI2âxZh§ÝT|­pÉŽˆ<:ú`è50äTÉ‹É{PtÇ[ìÃákŠ­ÕyŒ)Í´3j †Úâôh8­¦ÿ2ÊzšÑ•’—CÎR¿sš¦V«À‚ZV–¥>Y” `¾×8TD릕ñ´™ÒŽ{ª°›QRÙþ™ýËðr®²Ö”§žø…à‰4hz×Á7Ëq©)*¼ÈÕ*ð½ú¯“ذ•+x‡Òu‹®±1d-b` þ»2éU–ï¬è;íJÉÒ>±ÏãëåÝð· Zý0šl8ëÔ@S¯öÖìØ¦@ÕØ+~6˜|XÞùw †ÕÙM¡ Ÿ…lXëÛî‚. ½mò5_#¶}‚QayK>$Y¯¦RÎBWâÜ\ ñ‚0l‡\üðu°rê5XļqbÕ'ö•àÄŠ—˜-Z^†ß3¥ ÿž ÏoSx~•EÌï0¿Ôd–:å”>ÅMS¼ìTpŠÜl‚ÃÜH¼Ä”£~ù:‰7†g÷…›Í.¾W¥ˆÙ¥Š|Úu³Kã M°-Ê5Þ LÈò]üÆIîŠ NrÜ©ë&¹Rüø"¦ø5ŠY„mÒ$»¡©£¸’+GË,5s–îÔÅÔF²ÿ(^9 [ø(ÄãÌ‚½ŸÓçÒÙŽÜSùCX); Ó‹¡x‡ñà¡ô}ŒÞ…Ä—RÊ+bF]4íû(â ù+˜£3øNÓß±>ï,sõí “ú½Ëô?,ˆÊb'ÙuöRÄ$µ¾‰X;;°`õè”™U£¶ ”ðU¯îÇíÕ€1q²5GÝtZœB Ç«/ˆÊ)ˆÎË*ˆRïÅnv<ž8nk"ûQËú6dÃèÔìù¤ãœ;«û*ˆ%ý½‡¸l‰òX¬ˆüƵwr{¢PN´àèŽjÅÝZ7õ¢O̱‰§1¹¹¤?1 ï!×EW¾í¡0\-ë p”®¿íêçëp]œ˜ ÿ«]#šcÕ>­9ft%p{#3ËdN¨ k˜_t%Áu¨.¾Ud­0AYø¢#¿WÄÔyz~#¨öfî¬Ö¦îï!±|JIÿ@- Õ,©³nj'íÅ~ÎM9h?‘\g?JÛ±özüÁae/€BEWîÙöŠ®|Oò¡‹Ÿ ¥¸èÊB!BJûj<]²Ë Öý§ëÛ®,OW¡ÌQPŸ zÉ&K«öحƈ0ž“ØWƒ¼àq×klêF×àt{ýÊÔWlê1#è®þ Ò›a®YR}ÝÔzêúdæhöcîOO×jÉw;qÂ$}=û͘ÝY‹ ¦/º²ZÚ¼¦ç“î‚(Ï~D¾Z`=RV¶ºo3Ù4@+B—Ð[AYJ©Iwu[f–8N'pwmÊ©t÷Ñ5ídóªNqÖ2ë r±yýOC›VŠž1Ü)ùΓõÆŒí2w½ç@4¼Ÿ:¬|=uÅovR¸Ú©xýküþJ‚Dáîü—0ÐV4ÆÝ°7D$(ÎÏç¶½47Kµ@o¹:lk_™òŒ­ý`Tòª®ƒöÏ'´ÑÂFȘ·h9þQª.ÄO"eÈ}Œ‚kc8öµ?)¢7‹\êµö¶¢½c.Áí=®A¥³ Ë^p¦ìy_.YêJÂÔ='Ϻ`A¨@òýÍÚ[PŽÏ‡‡÷ÈyE«££äìPF×g°²uÅ@‘BõÉŬ32œŒò”橱†Ûçå¢Õ–å·¨¾ß«!ÊÞs0#š|ÖíÍ_߈Y42` æJøiVW_×fu9ÿÞÙ[Ô¥ñ"ìÀQÉWCem†èND¹4-¾?Aþq•OÇur€»Û”qš’TV„5q£H‹Ù¸HòÞ'"Ë)Ö³ÜÑXóI4—UÌ÷qË\O© *[ÝTIŸ3 ö«ÌÙ yÞ%Å®‘Ù+õm6î¨ôÔ$sw%{4 ºÉ`igÓ—š ïæò.À³/š´q/q§ª¹î5«ß@'0’®¢¦@áM|Fý;´¥<­ÙÜЖ‰6+¹»ž=cîqû.>;.•©9oJ9Bg%§s<¦QÉ2Meä0u¶ÒÐÄ2Ížý£™³R³7`ïí»&b÷Ÿ%—®ü£h™C‡uúŠ^rÆXËŽ½®E\nÐ Às'ã©®¤jt°výÊÄ×&#”K²x<¯³È sÔîWšÚÙ¯=ÀÝ žÏG«*<Áïµ…˜ QmzaHè?Ÿuªê1˜AµáI<·»—aŠ%h‚ ãö£a™Z+4k ó¯ÃEï ÷ëqÔÐÏÔQÉž´øm8Œ¼D4UÓŽ‰k8whÓ,J~kŽv\˜µð„nU]¤³Æwh¾ë¯<ÏÂWYùÒ$6ˆÒ5µÖMåJ¶ÀIJÍ|ÉŸgÿŒd8u+/´ø:”‹|™%øPŒÑ©ÝhhíR.‡þ‹1žäYÀ;W6Å¿äWËìµþÂkzfbÿ—=Á+$:5Öݬ<:D,±™wÐø æ4jÎUw„,(hð¹ ŸëhQ²‡DžlÌ“ƒñ„Ô§=âDZ6pýœ¹êœ#:µÃS/ Y%zâ]@Ð vd®ìXÉdƒ·Z™kpI™øÊI…0:8s¶û±÷%ïÿ€Mh­ç-}á¾ >ûþ@ëWeµkxéúÕ––9ýM’¥[=ïŒü™§-UCÐ~„+“ò½ô§ºL“„íºLŒµU—Iߺf‹ ØO׃ÔÇ[#úØúèJa[‚ý#'lÿán Þ™ZòÖLúúJ $žÀß ñ£„(ư8L®úÞ½úä8ÀµèÀFž_‹çª ¿,<ç8–_-"‚µßl —þÄó«}gÙ½®-(‰e)È5‚Å~j¡’ò7bçüÛÉ^¯÷Ïÿ”ˆ*Gà/a=mO/ꄎöJíelB|sGX”+¸­2õEPíp3¥ÍK®ÌÂímйZIÚ„Aè4–cvÅqÉwH^Äçµ'­jó÷ Q ó`ú›÷gÎ%Ï òr…¯5æiyV T4šÛQ Š»¥6 CJ™XÍçí3ÁZj os²̤7ÍÈò[µ'¬ C©«© k—ܞǗ5–iŽêõtÙùU>ÜæTÙ1Ü4cLÖètgûÊêÐÇìíëÀ!rj´óAÌ©zêL|¦¥ºtIÐ¥•yfŽúƒr K@—øtÓhß(ÃjÊwxêFcÖ§C˜;ò¡rT†œ*DôÞÿ@ Ú.GË…ðeà˜N‡þB|;Ì| Ÿ9ÍØºéÿTQð¼/LÓ =9³Õwýn–7™ú›–g`ÖcüWó*ŽËì kW£—’¡Ô—Ëz‘å•] ¦å30ØŠ£-›å·©û~ –>[x&¦¶Šf}ʵf3¹U}1Tî6½ûJþ ôäûåÀ‹iÕOáÿ·ùÐŒçEx$MY…Ç“V*Ö_Ã*V’^À¹ž…-NÁgR‹ãØ—žÀÄ9°\?bÝÜÞ.æá»?ˆDœŠ˜`2î´j²c¨Ú…ú÷.õ/úÇ’FCç~¢#‹i«cŒè’yP ®Z?ì° Óòüfàçö¸±7/Ÿ(²€(ÎVLãÚ×EPªã–ȬaåãAæãùfÖŸ‹\Üi@œ3ç^ÉGH* µðI<•É• sÌ ùm¹’€† ”¤_&ˆqYÙ¥9Àw>ÅcX!b+òï ãS’`ý”¥X¬:iQàµîû$+Çe˜af³¬|†…ÍJâ3¬lVrÝ”DVí4m–)]®,¼æ˜®$=ÏŸ1= ¼â™Ð¼Œ¡y:Ís`"”\qúIêÆôWŸûAðЋ‚P_JyjÖ’÷Į̈í.]ȇ¸}œÅ±ºžâa…è,•Í1ÖM£ÖM3‹‘Q„!ª›F U˜Üˆ™-ïe¢‚G¸ÜX—IŸ±™F"¨l¦ø2S|™)¾ÌMôìOD_w# ÕÝàÊÃs. ¼Ðœ.×®{þH^ÌÍo¿Kż“uh÷H¬¥ª-Ok´õÂòwJÞÓžTL>‹’0w4ð‰@#òä?ÈŠvßdÚE©çYÜèž_Ïgšù³­FÚx ú¿^?‰î°†¹£ pΡ# ÐÙ,?  õqÜR°ïÅl’ö&è¼};ðt§ Aå7£×ÛàÐ0yz¢9-üAMgòVf™»·£qMÌïs÷6¼Î“Êš4KslQ/­¥½% zÓ•Õ6>W“·ç©V +³¼E“·e©q5tË[¹ãexYމÍ2‡×IŽÚŃœ zº×? #º«ue½Ú¢À€c¶§M’Ò;嬧4Õ¸"áçSg Ú6œhÛ"«ˆv’;ÎÝ@z¬ Õ8]ì&ÔÜ(w3zåá˜çcž0Ž MÏß‘§¦å×Ã|߆ó§^^¤Í”‚rL«|1YÇÓ ‘Iwaèè²û™ßÀNQq…´36ÓÂZ¹³žå%2w= Øš±ðÇ*ãN>˜Ú›jè#¢!ùY‚4iËßánfL®åò&W>@´i_ÿËos÷Û3¦µÃ1;¸c›ba9VV«Ýø562þÈ@q«mŽî_ðüFÛp1¶D}l®GŸ_7.w…Õµ‚¡-´†—[ab™6\¬'?¹äS­¶vÉGޣζ“´i°ðM‘Ͳ°g¬¢3ð)˜n †¹™aâ«Í<ïÃzœk™aŠÑŸÈí€^@”D_Ó,IÞ}ˆðe¡TÌÏD,Œ™fNwÔ²)¦5ÃàdUú政J§Û«Ý_0xk¯\(euþ#t¾´»¨LMËoêACé]h˜ÀHŽ&ÖŸ}ðö6ËX7EP5¶nŠ .S¬âG'¿Ñs ‘åõ¿xU翘;Õ t$Ô-+u¯¥d¥Qݰåµ`b9]ƒ²iŸc¶}Pø$Ï5¥-åSo¢ºÖ¿H3¦]¶}°BÕV˜Õå?½:׬LœË瘔¤w5×Kjž^iRgÁ/“Mº^<)ÍRO‚Їå­ýçjónIž¿Úƒ¶¯ãŸí¡x嬎g`ŽJG{ˆõa\¹(WÿRx¡ÙÛ 7hQ1/R¬¬æ“è¹êö§u³¥ä=G$° Ähf˜ŠU‹^ÁÊ­â)Goê1IÄûÊH©AÒF{Q䌩ò§­<ž;Û2¡¢ôAlê3;'yÉóhꈘI}ê$ ÊR7uyÀïxRñ§[ŠÆß#y÷c¥ÖûÔ¸h=Âhï¨00QÃÀÕ1êÐPy0î²>ˆ!CÒ)´ƒäƒlζÂq¨6@G'BG÷…%™Á‚cfÇ´¡¡>Á r¶­hÊUëK)èjgr«ØlÌ@$ÿ€A".SSaïÌâx;KM›h¶ªäzðP9>žÍAÌ}Í£ï_meÆð( î“aø„Œ’WüÍV9>Ìóˆ$òhÚv™Ì”ÀŸˆÈ—ÂIôññt¢ÒjBE* îøÒ«SpS þNoPG¢´³LöWäQì Ÿi)²Ý«ÓÕ þ‰š¬c®úÚó šÚÔƒhoygë2\XÍapê!Û¯\îœÏ‡Î’Â:½-Á·!?¼³±Ô!Tg|§ ‡=iÕïþÔÿ>F²˜ ëêr|E^«‰o£¥– ¾u}ë‚ ˆ¥O¢¯àdûiGÉu»2Ë`;ì2L+˜ÀN(s sÕô'uëî~ù¼’ôM/  ³5=LÓ¤¿î7t*®ñ¦\õg«Bk‡Öœíišï¸2û>S]lV‘U)y„ gÌb:‘“ çDÉ”° ^a0„ ‡™{‹Òïq ©¬³Uã[h;uÏd^N¶º½¨UÍ¢¢§´{滌 ÷Lfõc½éÔ(›Úk\û[¼Wq´±¦lP›Í*ƺ˜FÕó$D\˜€?¤u(îÖ´³¬#¬sž¼^2ÜתÎò¶%Ó°åÞþ+OíMX5‡[+¶> ÚÏ©žˆn¡,ƒk(Ëà…ö<õ‹Ýº”Ø–¥ÞŸÎ÷u,”kÔ–E½˜¬€¥’¤§x°Í´ã*úÚ~¡~ í¢ØSwÄ#tË/!í»Ê‡Z}’i7?½þã¨dLÍ|e˜iô²Ïc9Àäö’8o5ëtM—öUÃËÌðËûYÇ«IP“´ï»Â“J§ßR2b:ú_aÔYißPCá\ïá{´æL;G›´o`°XÒÌõç±Øôe(Šƒ2¥Ô§}› xϺ2¤}GÂ@yù{ ³cgØUn,™VS7P¢´¯žß.ª·ÎZÿ‰(}ÜuÂænsY  «'€oLG±:´ß;Vn'ñ…´¿q`©ëx‡ç™ø4“mÿš$Û~LÑ´þOyê3ä¯ðcË3_ϵò%I|N"4Ïò¬li{4T™Àɰ#%fÎbN‘ÿ·ÑÎ…Y\ÂK%/RzÌØ¼!%Å–Ñ–E’‰R  Š£=&ªƒµ ZTŒU î€!ç¨Ó~Ju/Dà ª{‘öíçÄLOœ¼þ‚˜iÍ5¬t ½ëóTØ.¹fxIpÝ-íûãÉrÈ·ý%Kûà»ìpmpß Ùs%Öõ#tŸhöhq®ï€€Óc»¹ÿ¾bXur‹z[b(]9J;ró»3ûkDvŽùšëù€©@Œ³AÌè’Œ|­ ”±&Á@`t6¿›Q’gŒï'o i7Gý6,ò‹Ï*Æ‘E«µɇ¾¯3€Œ·÷†í¨A…›tÒóq<ñS ®20ë¡i‚Ön©l?J̬dfÐÿŒÌ_I[-%°æ¯—í¸§×*àƒv=„wxÛç9Бüfédi_WßW÷è4ä"7ï,î?_$/½…G¯êóùDxŽáë?Ãëƒ1QS0ŠS~“´/ý&$Mòþ4šäÝ›öÇKû.?¢fj …Ì0nLB_Ö‹Ò¾cü~ì7¿ÈÝõS4{}±„Ãïîß[øÚõwìßaž¼ÌÀ Tìæp ªt6²÷]㸣ž}YŽæŏ‚lÕhþÒT¼Xjå/eÑÅþ ¸ØGwy‰|Þ@#Ë»‹/†-M­›žDôuz2ýÄ‹‘õnú8Rú"}èô³JvnÀ8͞ꉞšÑ™&ÏOF‘ 3὇V ,+HYxNcmì[¸;Ô0ÜD•| £…Åu°-JÏ>š?côgî&×*|>ÇÊoag<ŸÄ»–s·Õæn@Jžt5íŽY5¢´$ªxê #w[x|‹ÏL·[% ˜ oWžç“J²ã‹‡ÃÏ‚¸â¥†’ìX>¢8'‹óbDH?FÖôTÇø]øÛ#m°àÅù®~'Ø-•ˆ¹þïÐXù ÿ«×„<Ç*t_=k^šÖ1 9X¬]õ'ÔÑ9:±/ªÃÕäüŸ e²Žøï¾–‡Ç!üž6‰• –A'µD ¡•Âg5é»Br-‡f\v´c\í‰| Zo%ß|Ë ¶%EÑ…ŽÏ£] -å×òsûèQr=Šy º $N) dç[ù}¬ÝÓÏÐLކQ¶ŸÛ­6{£ân“<;ôUó-€w‰¡xê#@š2˜A¬›â=«YùqÑ3Æ"iC.N©$'¾x°$'®8׿³b‹çDãccqvŒ'ÞÈïó|ÚÅîƒutÑu¬At¶ÚÄRŽAP~XþQ4…æ[Sޤì·ÑÂrÂpKÅ)™¬éÅåt©pŒçB4~3hYÍaSÍa þ`)<ÖÆ,žjã\[—V| °è*io³MGâàmº½VÖej¿Xf¯ær5%3“|ãh}›ùR\]ƒõµu-bm9ÌÚdsÇdD‰âGmζ•ó[p×1_UÉì»¶Ú= ¢¯aÂA\[ÂP†‰‰œm°¾G3†I5‰ÛiáO™x¡L$n5‡Ý=½¸Î€ ï³ÎVÃ:³Ý¸Î«­|¸ç“®~‡Ùð@%À,¸ÔJ<îêXù9,2>­Ó\ §Û6>,:giHð?ƒúC–ºb2«M“BZ*¬¿ðºû¸Wÿ.‘ôÏ…ò•´øÈèï¬Ç±ê8ÂÀ²^J´›OµhòÆ!§¿‡)ò YÒ³?†bNuÚ›èø'%Ìõü¨6~¬³XCÊJüÀÿò?Z×+Äû®~ðÞ]ËÒÅâ~lÉ<ÚƒPÁ¸½nqwtLÇ™,'ÃE³º1ã†Å­O;ˆ‹[ŽÐoÿ O{£OËÅ;˜œüDŽÒñ’o‚ÎÒâÈž8š¯0Âs{;“›\ù}V©kN: ï~Éó9ânW̪QÀûźìÃÏ>0„Ö%zXÌ22Ésò-Ú.ñ‘zjy;ò.àX‡SÚg}dXÏÑ+Ï'=Š1ýÄcæf窿ûY΀7¡]É;/¸‚€7ÕH»)‹ÇßÑÙqÍz— ‹¢|tbýëæëè<¶Éí+'r2(w›j|øzEA[ú2¨gB j9CWðfÐ¥èQ'Úý-Ȥú‡Ï?ð¸›ãÑRiáC‚ËGÆå³6´|R§±ÔÉ鲕}yãòÙ kÇaIxÞãnŒ•7ŸÒI60+?…ós¿šò« “ˆ_å·Ê ¯™¯hÍ\Ù-þEäÐH«æMe­²¬{ðâÓ®~'Ù}«Çö±ºFgYk­AþHiLð-­Wð­7úZ¾…nj£ý'…¹˜øÖ#ÿð­~1}PùV[çÓŽ ¾µï–g²üæ$¾•O| ШíË·žø7|++’oÅßú¶Î·Œ‚oÅê|+Nç[ñ7å[# ¡½ÿµ&nBÝ ƒd5".æÃªjH9‘RokbŽ£°¬ðEñn\VƒŒ+ ÈlÑøf5¾1£šâÙÌÊ š ÇXRºÃJDÔeQž46J¿Ü/í>£L½-È­0âäû^$· Ë‚_}ý:ÓùU:.µfæVÕ—Ò¯çWùjÎuüÊåñªWô‘+yÕ3È«:úÊ„‘¼*r±Ñ‚*¹5¸ØÆOgã'#yë†ÅãÈ»™L¨£bø­ •£Î%Ðâ7ãr'±ÃÈÀzZo‡'|=Ÿò?mCùð7 saT1ý‘“ä}JÔkQ´‚Ë03Ì…*EYLÂHI^OáýËMyÏ{!Þ#]ûFÞóžÎ{,¾™÷¼Á{îâN“gÿDælE`fš<Õ£;kBË2˜lPî‡çWbAkòI]‰0%¾jžLJ'Ô÷†d¾y&“Û0ìu¡QíSnÔâ¨ü.·ÁdæOºÙ%WŠçãhæ¨Wf²Ò(múšJÅȤÝÕ,&“©—?DšAÜq#˜8štiKlŒÜ ËÔÜˈO´ >AÈÛ<þ?@Þ™!体ٛD®Ã¡¸†âRìœcâé~<þË:åðꄚîhõ .Rœ¦£±rab0.›£-°CÇEàº2ââ¤ÀnÂÅIÔ»¶\ÂÄÚOd(,6Qp?¨@- ¥ï¨Gc©±7à6I•ðZF“y-ìôhq0ïV½}PK¨~ßnhêž¿±ìMˆY±ZäÈl[¸Ñ HCÍFÜbÎíÌYíùDˆ8GuÏ+D¯B/ÜÎ÷½l ‘üT á%_‘Q¨áH0ž1†ô•Y,¿’¹÷¹WÜí£Ü•PÚ¤ø®BïÆ£ô³ Èæ:ûNì@ùÂaŠShvº±Ø<„?8Åói`xÿ3”S¨™UGDÝ}#SPLb0]ºX®W}÷Þ@1õåÔ)æ=a^ü-€>ò1s–2çÞ ±¬‡µ§ŸCÐåãj$R¼0sBïú£]g£äû2N7sFÒɰ`L=š¯2ŽÊ߉F6&W©å*"­:µ,Ôr{µ´"–é´Ršâù8Þvh%ˆý'S>òDá’9½Ò;µ]IäòÇÆ0¹<(ù¾¥,P7'›€vØK™¼±”çoän+2̹֫«Î¾•(g~ºæ~$yoC?ÇSJ® ƸKwWJžùH•‡å<P<\ÕMn‚ŽÑåîfèŽ|˜¥¢t)oÕ…?GGº!š)GßÔæ9 È»lùm+§ò š\ÍÜê©×“Mg#ž“…ùÖ€± ²iYò¶“„ߘB¼E~’Ë/¶ÞFL /€N±ÔÄÓX>Ráü?,ör÷F”•l¸Â»x¦ ÿ°ofî£ÌÑÀzEÖYö²ÙÒªo¥»·ÞN@]õä´£УÀ 'É™º s}Pl ·Y{Ôì¿x¿ïøêÿª³cà¨w0à6….*>}¢Å×à2kv/fPq{cW^à¯b´¥Û·°««þX‰.'ºŠã¹ì5È s˜ì->æùøaîöz›GÖ|÷(s{e¿iˆŸÂÙ9wúŽëbôO4±‰ ¦+îÖØ}jÂ=†¨…š¼8šUN7jy’˜ócœˆ €}È£ìD"m!²YÐÑ*@C‹xø?'7§£~:Çìn _’ë¶ÆJ>+Qp3ºq —Š%V‚oº–1È0’¬R¬#KýÁ÷t=c—n‡ÞæU?Á“c](¦Ý…zÅñÕ+þW°­ØŽë Ûf„-ôóëÁ[Ùƒ,f+±›ªð@ûO=‘\QÁý‘&vùÝD·¿ ØÌ¾5Èßç´BVðy=ä Š¢êœx©ødÑ6<£¡ÝEÑß›ü£Dÿˆ(ßNƸfÿÐb0Â’8ä‚ö–)Ô Ì*¹ÕÖ¾âc NÀþðé`ÃiÀqæØ!mÀPÀ劇Q.‘Âv/“[€oÚì^×=@¥.¥lÏǧä{°‚-æ·¢.Ÿß$rûv"¥µÜŽlQÞÁãÇÊ^ ¤)q¡;wÒlNoa·{KLųÅÈ-ÓàñÛIÑÞŠÞy9.Ø'òׇæ¸ÄQL“œ0Íc/ŽõôÆ®T…3Ç6ÃÅtG媻ÙE}’¹c[±Á ·ÎÁœÂ{ê‹ðq Lï¹Í4ˆ’½A—ino .#x æ¶Ÿ¾žDn< ¸qÝX1«xÄH“w(ö–,`”Ú½7áÆÛe{Ë-0"€CœˆLmHÞ$ñìsûÔ‰í^#ùh{5d0~NëÙ‰Óë_‹{È—íÛ—,µð¶ëàf€›àÏ¿¾BªîïwåµäWº‘5W«ŸÝykÖI¸Ð’WvGæ´Û%êu칌’‚9kƒº9BàФÎÌè/v^@‰…2-0;ðo÷×µšðþ‹Ã<‹?edù»¹Â(y—ïrB÷^ݦ&y¿«+OXyÜ(Û¹¼SòBRîÜÆ@óÞ©ãeM·‰Ï2rwµ´»©äÙ[ûÄD4ÅöVÖ1Óv¦Ð\\/°¤xê­5þ8O·aÕ…',ƒ¦~‡ÙŔӓA*v¶JþØùö6Ÿ¶r÷^›{+qõUkJ†Ï»¿˜2Ís5Ö)ˆ²u…ªÈ­Šñ>i7,”«ëP ²ÃZ{>ƒ2ü“øó6`ÉLÞ¥Üøe{_ò–¢àRJzÊûž ñ)½ÜQm¸ÈÛhç%¸ÒœÍº/¬}»)îÒ-WÀ%§›ø}zž¶P~÷*Á.¬ )ÛN1;[H¼plv¥ñüÍñT»KÀ…¥ 1qhj =–6¤C©éXe"¿x§üja¸s3ôÓp¸}šä‹3FH6êC17µ=ü:†4 ›³yå 4?Ô£L‘?¦¯LѬä7æ\¯ŠÙ‹%ïÔ]¦hô—|CIÄ(†u7 ±sÓÄR›Ž›4~a$¾ùÚd­h¥©³†p»UÚ}kJ‹WÞA—/vûª¬w)™áù‘J¦4QÐI•GµÂ¤Ú•€ÈñpÍù8iwu¿™(rYieÅ'Šù‘c‹4u'Î×\0õÏæiˆ^ÿ1 ë¯ JË ïÆPýRàvný ú³^ko(tÛùø€¿é¡oð½<àÝXzCi;ߣůÃ9(£yÌFÈQ È}ø`Â¥S"‹Œk<§_D‡×vD$ÓYõ-«ž.rÌ Ð ñ"B=Z+z7#%»+mW$_¡ð|Öæ˜ýË‘~)¿ øuß.mÀ#&oa8$2+Ð/Jì·êgä!l{¿ðvi·ukø6Ê÷žê"Ù õ|òð´~'lï¯8ï¹½2U™ÍzØ™ŸùŽË£A¤Cž¹‚„”"AWÑ-ÄÐ ²™çÇl’¼ ›ðß Ž÷o+lǨÁÂi%ÖIžOª‹º‹ä¦)ÆI0¥+Úо-Ô¥ü](Y#k§ì¼u òiQd¥…ï+Ó C¬ƒ}´þSšÐ^šÐoéJÇWpæhN¯´‹—úœú/"Í?³þšÖn1­o§µ_Bµ½Tmxœfä,i‡&+VÊÅRÉ­žóÕEW‹äXÏãZŒ€®´¹½½«;åHÓå´- §Õö9-ä´üf 7Í´mÙÂó“ØpCÿß{„œööh\¢Í œ ù†(LXTLâJ"Bi¸#çþ«›Í½¼qÕÊàÄ'c®¤¾s?Ÿ1÷ߣ¹J&ø6f×î$²'Fš{5Œv ·ÑïUBƒ7#P`~fD¢€l†º‰«ö¿ª£B¨±+Ý}ów‡‘¢©[ Å^DŠ=¥×-ò0Ntè3K8Ñ{Nœþ&œØÛ+°‰pâÊu8ñ›¡aÜ{Ý0¾ÕMØ1N#Ÿ‹-$! ìòœä{þŠˆboß™ÒÉ-žOâÙÕ”ìLŒ³ çi÷1ß\Þ SÎ&­š±OŸpîlÊLwîP怔ÐTx+w7•Ä j9]ÚÝÐïÄ#éîÀ“W|*h¥}'ÊOMýR‘PÞråFB¹/H(wö åF$¡=M@o_zÿ]Ü„ÖH_ ÑxЬ (u¾ÄTg+;ãx9…dÌò.¢LºûåÂdi÷¼{Z1"1akM‘¼T`ëô~'àýŠûåè•Üþ²2»(ˆ²i:Êê¢f¥B¯°¿†é²åVC/`ÈZŒ? žÄÈ/û?èD’ûòŠwÛÙ‰)éù;¨…ÖópÏÇÕEWŠä~Ó•¤áðbE›bo5t¥Ûw@3ñTóo17ºsW„ŒûBgDÃ^|íÞÅ2{“ï—;o€· bíg:bлۃ¯ƒx‹™÷®ƒ<¾Â~ǘ‹¯ƒ³îxiÇ3q 0ÀÞÄöv×~J B£8Ò1Š}|'iu ïs[ÐL’vwC}Ê/'‘´ÙÈihBô´ï`#V9Þ¡‰¾ÂÐY:†ÊM%qˆ¡â¦!†žz$ÏFbè…šó¦~‰lµQHÞ2´Ï®®?O`»*ÐôÚ)ð*Fï€XÂ;¯ ñ ¬wý§¬^¦ï¨.ÄP†ëw0 þ|Ÿƒè<Äòò7Šö£:…ÕMùµV7í¯tôÉÏ>ãFÁ¾sx ¥‡¬}×;d±Ùëj¾iè:Ö…»q@ÞãÞ+Ò­…6rFƒ”› RtnñÿLøg¿íº}ïa!÷Y7î8§ˆ6tø&NP%oXÛJl³÷A*XN»Ž»ˆ¥~_\Ýp¢À] ìõ¸“a¯åÀ³¦4¥4(Öñéùµäà y*áeÉâyS&ÃÓ—ÈY¹¯;د!=lô0jÀ‚ÐøLº!û~‹.®Éºâ’ _ é¬u"ïïD÷íʳö1éÉË\Ú_oRwÞzyÑA—;#ö׳¾~´ößì¦Æö%/ÛÁ|ƒb¯7yY ä¥2èõ"ö@™»:D^â" D^P&½q;苊ôeö}dã²ñ÷Ýý!)¼­žºètwõÛ8¯ÒtÚÿúM(Úw‚טæe´¾ƒ8KŠ0!ëÛQc4m½¦Á\HÏ=CU/cávmІ mNIÞO‘ìŒ`çRŽ¡yàŠ°Ä9hƒÊÚ AÈNê¾cèdB£uþvt‰ÜÆíÛô½†. iÁ]Z;í5Àú}&šö„§Ì†ïã9Œ¥ÑéùÕÒÌÐîù¤IÏbÏÇèŸÐkÔ/ϱ‹ÌÑ„”hR¢þx^ˆ‘ DwÞÜφèÿ{¶'r²ýlâ麭 -ñ¿ÐÆì¶mq›Mß²ýÑ!KÈ+tI8„ºGû´ÿœþ€P1r r½ÁɦáX ‘@)íÕn ÀE:±q´ëZ•îÓ¶l¸Nköê´f[˜Öü«W·}^í»1ûûȽÓ_a©‹hQÂý=ÿsp±«»¢Wß }\ ŸN^Ò×~ýá0±·+ì×_»«;1h¿vû5îê ïêˆìY‘ÀJ $d£?@{µø‘ÿ¼ØÂ%rرÛpMزëõÍUÉw/Ñ®]|¢{}JL!>ݱKò$"MTÀ×YÃÂû³ã‚ HÞ”È~%õè »¬ŽêдP-¶+l‚Ø—Ñw_öm›%´/ûYwh_ö:êM|ÝzM‡_Z¿Y8lë‰ôaù?• OÜL6Üõ$~u½lØú*ú:Ùðé/¢_|¤Øõò7ȇÓÿ×òámÿùpJ_ùð½ù°Bȇ×wöñZ1ïý¿“…ÿãdô×obù­êKƒop§iÍûOeD@ƒIØòú¾¡ŒH‡Pœ£1qÊÿ)þ?’õMËo’ÿ2èßȈW… ?Ɉ(©¹†P²?Ô…BaŒ•Éùþ‰ñ‡âü€ØøMâžÄ׃¢«Ÿ.¢E‹dEÿ‚Hépö¿—‡¤Ãéß,Îץß[¾Y:Lí'àëäÃmÿ^>œx|¸åÃÛ¿A> ’˜J:B)šuùPw•“¼W¿Y>¼Þ¤¯|ø„‘¶T=£Óå |øü¿—yIˆx&÷yvI”_$ù°[ˆYkU²¢ñ<Η1K)±‰ÏHöH‰ŸÆݘ®—G†¤Ä»Ã|°z‘ÉÛ¹};F!Ïo³Õ³üH)Ä»ý’×G>${•BL,ˆÑÍ'¬¿"ÄÄW4­ñÔëRâ‘e5G ÷·2L¥‹ž­¥­]\Þ*c#Åň½¥ÿ¼hxƒîzãÞÒÍäÅ ÞºTdkù¿ÔWÿ#yQ¸e y1Ò[B—’…¯Äö›Ë‹(޹;íÛ(—™ ˆ›‰¾0H6·üú+Büq‘h‹#$,þ¬7³d²é,ºúg³ƒ¾Ñß!B^t†åÅÁÁf`Ù‘¼¸MA‰ˆ•š–‘ÿ3¢`$/~!/ž?Ðåź¼8F—¯wÈ“<uyñ:§<GÞ$”µABIŸÿϺ°è$a1Ú_ŽÂâçñë{´Š{BÐÒ…Å5º°øDЙ¯¸ÿ׋7sæ{àzg¾»{BpúV¤°84$,ÆêÂb •üF>!+&„džYVLÔeŃ ß,+¶eŇ¹èJ‘´»æ–CÇúÕ:¤ïãéH(ÐöPDôï)"úÕ—;°ó ffGåOwèÁN%o§›~ -à©ô-ß„YhaÖ÷ÄûÝð~!7ÑgüŒ-èÓ@“•¼¿ï_„÷K¹…"!qÜÀ¦î&Éû”x¿Þ/Á(yãq¦÷`àÿtàôrãÊDnO²Ù¤²ÒîÊԹƠK¯žÝ–„VÉEGùÆä× `Óq¿bùµix~}‰ìŒïðüf›ñMyH&7þZ™ßIý¤ç`¤›~N$«™›ÿ†BØQr¸«EïWóLºn䬷òvб·FÅZÌêadx&D±òW•ÜXÂìm˜ÅÏ‚gº&m…UÐO„.ˆR@ç´7f+Ö-sÅÙd‘Ö¤e‹ Ãq@Ð}c‘‚Ï2 4–øªe„cÅü6t²PâIos{³-i§¢12¶Úiè稷9ŽJÏ¢ßMhjñà@5ù¯úÔŽÓ§V‰Š˜Ú­¢ÐÕ¿àÔ%RÔ\þ *yˆ9a¤+Åû³Á©~/'zêŒÜ”îNâqü¥ñØ…Tfß»²?w&Ùœ tø1MKwW»SxÛÅUÃÒ «±ö”ú´ã…x–Õ‹GÍmï¯è7ÝsÀ לz‡:=»Eý÷_Rù¾» ¢“oÀs= ¯ä­…ù "c¢@Æ7S2Ê­B …÷)4"wC¨»/amÐO9É&7ÐKî¦³Ž’úÇñ¡Yr«yŠõ•¹ÂÓˆ¦ÈmÒòBSäºÏ_HÜ®B,ž5øFrÙh†ëÓŽ>G9sBQÖÑï@\M ] §]º½˜ ¦s4KÓ¢Óªý#ðü§(1PÄÕ’ÐÕ=d.©eîz ¥ÐP ÛiCMIª"ˆÈ£Aæ5ŒÔâ +çKÙÿc×è(Цð+dIt­Ã|DT§/~Qè*-tºjº–õ˜gŒÐ ÂÅAé¿ügÞìO;` —OÌíoZ¾œ¢n>gÓƒX€æI‰g`~§Æ˜®ïè’_8DÕñc¬Æ\ëme²úq¬!*v…M-cí¿óáz°ósìä¥×µÌ1?-Õ I[9Z}4N|á¢Ì1g+sLÙÚZƒˆ¨1 < æS}uÓ0®TT`Çòûõë³i׉å“õ§=Ð |–jä3ý‰uù\ýI=I;Φ%ÕM£T¢t†¸4­š§ƒXòû1¼ Ÿ¯£Ó©êQÛ$/ j·j\9œ»Õ˜teUmV¿û¨ºG¡ˆ|\Vcîǘg€‰ÊìÔ{²ÕRDž—¥’W¤zíy ýöXç¥?)kïb“ðdä}yêöŸöjlZ2ˆâp GXž—ß’E|Ý´dìFxörÕÚ‚ª}y$²Ðdûg¡_ U©=ˆsûM[°0K}ä§3¤UÄ ‰«‹ú^áÿD‰Ù»ÃxÝìµh FLÇiÜåŠ\ ü‹½6q–ÊŒÿf÷¯ŸÅm¡Yœm¼Ù,>`¼~G¯ŸÅÁÆfq&ôKÛ©i¤Þ<{ÎÁ|>Èv[¾ ªS7Td|ø-Fû{1`¾<ûúÁ&ËÇ{EEµÃú: m ýW5*åú®âÜ27ˆÚ¶ŸógÁ”×zº¤UC‰Ì¼WDC‡0–¡ÀUõÛb\Jmr¯ö[/æ«MÌqÃôïøP|¼~ÂèC²œ.íYhäðۑ»á.~¿½Œgš–˜“¤=ÕÊ8íýUƒáU¼Jö¬0§·½¿ÒûêF‘‘îÛÚýX£*OêÕêbñ!ÎÅ‚ºX¯~I ƒµû±½èCïæ/ 4‹‡jÿï"Sw—H^̘Öñ*¾’z›eørnŽºýq‚…§KsÝj8HlWœmÒDÝB QÂÞ»0ßPìMwžU?“’HaˆÉé3"¦ØIÑ ÿ@–*ˆƒ9Êg»:5NdÚÌÍQ¿?Š¢ÚǧUÎkgíêwé¥|HØX{[ 5b÷‡üvªù,;‰AìÕ·IØ ¢Ž4ˆ˜óÒžYFÅz ü$`poë- ”²vlõýXªøîlWŒskZ¢±Œâ2™Ó €+ãiÞˆ±ãhìL—ú+ñ  j›b|„¾)LPÖ¤šÓÂoV…ÂzÈyÐ,%ߤÎc³Q°†%í¥=y ¨FÇ‘NIj™çc”늄 ÜMË<ëLQ®"œ)x Úp V«¾gía¾CôÍJ®½&±kŽËÝ@ÊΓ‚1%¡µ[cò[ÙRsÝtK~ü@“ž„µn:EM•ödÆ)šˆ9¡’ío¡ÉPo8²çˆí‰„åof?ªÄÔ#§D¤Ež¿ùæ(Å ‘–;J•y‡R—èñó)êâÞ<Õ³Œ,W“7g©7IA’;™Áeã«Íì)«¾ñÏgXp$OXѵ„b¦³G“تäºé"f¸Þwe¼Bÿþ£JÉ·’Ϊš´hPðQ¢Íi‡‰k†2î犵B0ô&iÏ$h5ÆÝ ’(è(lÍ KÝÔAz4ÙATwÝÔ!f„–´gZt>tÏÝd¨0ÆÙ(íYjdÎí†#Ü)’¢¤¶}=¤x~içIeÞˆHH¡Ø•CÚ‘§.øQ¤¼? B꣩í©ûù|³&¶ÀJÚ®Cjë×AJue«ïÿÑ6<˜nÒ¢ÒŽûO÷軺x¼Q•&`l«­þý¤K5ªu¿Ñ´À§¥Ù꯮a:¿ÑZ^ÒBfߨ öL7Âøcì­êÖ (¶+x߆ìò¯ïÁ0´? }µ„ÙwùóHã\œl‚¯@W úçÀciÏ3昇pN-ãÓ5%O[Fai\6iO“2q‘´gñÓ=¶#®;A•öŒT¬‹”¤¼e|J´’­—”¤=]JÒ:iÏš…=¶ä“ æ/ãøRò¢×ž´§AIš«Œû5`CͧÑlP®Ú> « ‹‰|ÕKõåôwÊ Ýœ„ÈïÜGC^&àÚ·pÇQîÞÂ@¾L=š7=Z7—ç·H{ÌoÆ`¸<Ðp^ÆxàŽ£u™«2õÅ6u©1„M(»±ÃÜñ²´Ç’Õþ¹•É€@µ=ìTD*­…ò0 4š hD‰…ª DˆNëE ÑÃÿD¢— „DÐ÷x×½ˆ7óÍ:ÞT T8µÔzS šÈÕ¾ãüGµò(Œ’o¯—ö¤zì[&zì/Çß’ë%eF0ûÌ¥ê»öj €îùo½Šø0ïj>TþÃ&àM}4Žb‹šû&`Ò6øÂö>Q]Éû ÖWÛôéyÕK9ØX€WNЫþ)Ç:Pš¥Î}cC^Žà I‚/r™½Èzœ2n$† ™x ŽkU'ü•ò .ã9Pêð2æü´SP­.²“Jv/;¦ße2§ºŒ÷H{rŒüvbž'±¸R¯TÛš ÇЙÆvõ·RtÌ…®;bdUÚcÿ˜htÊAü>õáz€6{N±!Àæ> ÆA›»|õc *–bšQgû\è¹úË»CM0Y+OD Ÿbôtõ®ù=°ÃÕ/ÃÓeX3€MAež5‰ÔòĸÚJAX¼OíTcSLKoÈÆ´³¦å¿D¡¬Ð¤º»ñy¯z‰Ü5©˜—8ðáòrýõzmY¾]¿ŸC÷Öº)”~sÏ*ÜÝÞ7G¸’›8W}a„¦Tò¢;­Uš˜­¾ñ=¾GCŒ[=<æõõ±z°Rɇ¬-G]}¯–vv?N#ߋ囡¬v?þífGŽÞ¥iz,õeÇá·q‡;Í9ð ø—ÙÓãŠ×cQ§ßŽÕ¸RyŽQ™í¹½êSe¦æ¹ÒËfÝg)ç«1KýÕP(øZ´Î2öêq¯1Ø7”2¸‚zýûÇõ’oñ øl~À‘©”öTü$æÌ¸j–ž_N‡âiŠÿ—û2@=Ô\¯d€Â¬ÎK¹(ä|Þ+!±æÀòL3°rrt¥UJÎøx¥–$ è¸úù05'yïš¡°%MUýp>f[™þ 臊8QQF§¨âõ• šl‡:òaà5Ž+¯ Ný ´ê’O¾åª4O ¾_"ùÎÀ´ûÏ‘ÝÇÜ7c¥êÚ5ZBS•çÓö\5z11Ï‚‡eœÓ*ð¯:ˆžƇù´ê|óu» `~«ð.Î5’Ó˱ô/Ã‡éÆ²­iÉ‹gÎ4úJ”6¯=$.¸ã ~6¹ S6Û·+[½0˜8ËW? àJê|¸Õ`‹žø©ÀkÛ¼Š]®a}[8íÿ>ž9íPŒÂì©ÃŽûw ŠÓ°øÄ²Ç {=¶jVséw’ÜøŠ  ÊSh¦r &d©Sj‰ø§G:½ê(˜°™¯DyJãær¦áŠï¬âJ‹^›Ìí ^Ý‚»ùisÕÛ‡è ¤ #Íål'4yIf.G<B¨¥ª—ëéY‡.ïÀ‡²Y{@ýhp0sG%– 2me©!GÝ=œ’ç¸åàé³Ô’N'ÿG®úâpŒêŸVíëXä:ÈÚõu–†csMq¹äiL°šàYj"°ºƒQåed©è2 (X-ÆOfíz<#3·áÏÄ—5Sdx"î][_¢³5!½; u6ñ`'X1Šd–OÁ/ò/í釫þäË‚;‚  g ,—¼cði‡xZ;(˜/g°1J$æ‘S(çÝÀ~DÄö»ÌaåÛrs3bF½ ¨@6bT[ßñù’·>ònºS¼yL̰n~¯¦¸1¾}fƒSœê\ô¿Pò[r€?¼„áûµqH WÖNÛˆª&·€LÖ„î&VµÉcÔÊŸãDM¥ô°’ª=ç1¦ƒØ‚à3ŒH?ŠAQ–gðL &º”¼{)XŸ­î¯àå €—lž‚ZêÔß`öšOà’M·à"?5q‰<=°.ŽÉGDN>±" Âç½3º/VG&Ì…¡³ü}O†}Tr«÷,;åšÅ:ú±÷|l¸ҾN¨¶è*ÈZŸÓÅÝ’÷Ÿtñ=ÉÛL÷HÞ*Åžž^2Ü{¼ø„¼‡»jö£J›~/ÆQpÍs7펞1ÈYŒÏr®ä6èÎI×l<ßt³þ|7ØŸÁþ öÇìFúëÛŸZÍ^ ýÁ°ëع]Âñã(êµñvnÚouq¼ü—ëÙ¥Ò¯y‡þõêôMxð©Ðã¯ýE1iË}÷Àœh÷ªß'*jéB%K+zZ»ÇÕuÌÄ ùJJCÖ\ÕB‹Y“º£9Ø[AL¤d¨Yê‹Nâë¦$‘õxJ¢§ëÚ*c›’ÈÎø{@å<wwÔNƒ!=²ö’£–À¥Ç] G£×Ó(ŸE(_ÁE‘¯Àö4úþ(|¿_Œ²Šý¨Ç}¾Ç€cô=zœÜðýmH¾TE”RBNÿ£´ÝÈ'[üèC o‡0¯ m†¶«CïìÕ–ú»¡Ó ,Üt)別”§®|WÐ]A÷íÅtJȧomr”ÖÅiµV`NTÿ—ÈîÉR¿c&ñ <eü¿€ËÒåÑž{R»jÀÔ TI–ôn¨ûèùRœ· <‹‰i]°~Ô×èÝÿÝú>J ÏLœýú'ËL”Çyž6G»Fs£‚‹ß–er%Ì0ÕÜU—!bQg<Ïù»‘uDÆ£^Í1ЉscÝK|†Ñþ&íÐõVfÜÄF‘ë;¸Ìì›³ÐÆœ‘Ì;^|ŒLSÛÖÕŽGf¢2P¿ÅEªþ¾ëšÆ-hfŽðËÕQì s«ž¥ø1à•†ûÓ´êÇÐ<7Vl…÷LÜëʈ™id³5zJúÂäg0t¨ëVžïåîR‘Ç–Í7³é¦p,)¯AþFž§þu ™¯ÿÙYƒæYâ™F>ÎÀ\¿xÖÄ\µà» ¨®ÎkA¦:ðšgÒw$_ Yªa²HŒƒªóiÀd’[pc&±*ôŠ[{·8âËE•1³xpÕt_ÇÚ‘)rw*Ö°¼î„ Íqg1³øŸ†ºòÔ~“ÏÎw™õ ñß‹BṎ`§:?Rà–¥’U0ð‡à£”§¡u°3¸iå܈I '’\¨,–)žýtdܾ1OçÃUMÉÓÕIÙ(¸Ý“³ pê`†q©§:6K“M8v=B®ÈøÒßÌ "#ÃLÖþ‡¡gÕ1ØOa´vü¡áGþ”PüxÏ•øVÇN²#Òs¨ÛÝOè-ùv ŠdÓU×^ŽÀµ™&ÛiÉSĵg"®ÍGdsåÜ׿è¸v„­áÚÌäÂ;øìW×Ò¹±*„hÃ#íCÖD©Hü1ØTÀŸfŸ;¿Ý«©÷>Gƒ:|m¾ÊÓù³§Ë Ñ MZ¡QMZŒ(I£](] rÔø!^wØÊ9,}ž.CûÀñ@EPç§xA #@‰@â\†Ôœ)¸å¥úðû“KAüê`>ÌŽT盈¸Œ[Z®±|‰ÑVŽ%ï§@xr´ úêaSœ6ÀSþ€¯CþGÁ÷ô—oÇéÚÉ—T’a˜˜á2y îÅ`RmŽM8ÅÖÅâÝ6øÿêÁMoEé1‚XäÃà4Ò†ÇðËò»hÔw–•cÿ¤b …Õ¸õTò*fH^tjâ÷·c[üö6ø]=À×!mŠ…š€é& —› ¬©^мrdfê’¡hþIÒ‰Þ°š, W³LŠùoü‰ÑŠu%SFã’ž‘3êó¼deܳ¶÷YÅxìŽc þr²ùôg>ñ,5ôLÚ‡è¥íK®3Å®®¹}ÑV³b¸²¾tó"J²‡nlÀøËéÚ§±ªdš©¿³xÎFDîHBêÅÀ‘OiÍþ~Ò¾‰1S ݶ#+ÚÒhYVÃN=Â˰š~ð…VžDÎoiÇ;+èê/Ã_ÏgÑì=¾È+°tfÌJ+›Mg÷al½yq$ªÞ]±MŒsÝSŽ/Ó©¾gÇÒoàú*ø½áX¶Ž=­±ºlóž2qŸºvŸ(P¢(XSç›Ñ´9MÕ¯çeOÞĹîãxÁ×\4²·ðjñEûùÿF¯¬{¶YÿJ£š<û-U$j0¯­XžõtSE«À׊RÛ‹öã½å@ýB ò2|÷êVÚ‡µØÊð9óeÑßy8 Ê?±[òeV¾x¼â–P.ÅŠy„ ôf‰ƒ{–bÿ”‰·Ä”b—m§VÝ)>á³Ì¾C¬œ*V¨boÖ°ÀÈ1AyÛ©•'yUÐ&ž2ª¶Šþþ k[ÿºÔØ.IÐ# ³bMe> ÍÕ-¶ýâ|6æ<ªÂzbLùˆ+ø–¹þáe³ÿQ, ÃË XÔi‹­IG“ma"5¿z§•©#lÁDu@¿ " ÚZ €HŽLSï1BõÓŒ(o¹ùCH}ؤ0pÑ£à„¦rÑþì¿óy÷²:õ_W„9eŸÉ5àW—aÆ=W–¨¬úÎf%Ï5ŠvÙ ^…ô‘*H¨sÕ-#{¬> I`ç9þ,¡¡Ò¨.NÃeWj>5*îˬ<‘æ™bqqQ¬ŠX]ÌÛ8“¶sÒ†14ÓX²f’&æ|Ôh}×éÓŒ…c4_"µ£#¢­o݃ôlTíŠW=U´ü%ï—Ä5²x¶ž«“¾hÖ[`+D©/YBDì€äÝ _XÔ¢x²HÞ 8UÔyB[®v­6²'L5ŸEçp˜O˜Y"›lh­˜‡³¦˜õ•7p¥ñ³©_yuü#y«1Œ%ž‹Þ±5_¯©öü™žj >¢³–¹9êCNbo:IÅOªEà‘ÄPíkøˆ½Ž"ç )x屢¾þÙ(s<<+èdQÎË7Ó`Kƒd–EÊË>J;™Vßï ä£Èè·›ólåx¦^ò-Ã'åËé3¬òÕjú¬¶Ïg“©P5Âcò¯&–b¡¤ÒˆB^Œ…Kb¬ä›ûÿ–o2p“!O}`î2ˆ.-±àÄC¨›K× ”žGŠe«‘6 p‘uñ2ÊcH Œ—cYv² ZYs«ÖùѨÎC0´*bhÊÀ†æÛ+Çÿ<Ò„«È¥ç.wÁƒÏີíšÖI‡+ø—™êˆýR/×B‰)9êç1š¶` ;˜òQnóÇöø`•ûÆÁ%Î#þ¢x%y_êÁ Ö*ð‰:aš>²…+ø¤hâ@P@Ú:õLŠ=¼J|)¶­aЉV#¶ ¶®Ùé±$±p¾Q¬¦Î“ÊâaƒC ˜´ «Ñy íEOÓ3®ƒ X0Xc–úG¸Ñ»öKPXñJ€“!Fnð¹Hô¶BLÕÍæ±PМ¯¢A˜Ï½¾]T•¬Ñl€ ŸÌ4Ã<å9`5Ýi@<ÉîŸlÀx.yñÀ æ<ßå·°ª.#î÷ þK»«+0ª÷B‰ù ƒÏÓµûñû‚8õVx¾`~ðùí~l¯ V¦ò¿áþ$>b^^w»)ðÞ¯¡ûmxï]t¿ï_aëB‡@ì 9–RÝNì´Ë ]ýƒ÷rçB¶=¦–d øP,ø¼þAcÞh™A#3²§MÊl¸™iá³GƒØlefP†ˆ¼k2&¥…%Ÿ‹»<'Ñw| ôN%'inA´J±ñC:X»K›‡Y9*æA-íûÔläSG›x¶•/ˆâO1ÉOÌüû퓈~›ÙãæCþ/<—;AÆ@½:ø_埉€”ί\EA™ò§;;ã-¿˜Î”'0%l~VV{ÞJ†Ç—^ç%¨ä±÷×c)£çc£ V™¼¦¿ ú>~D°0…¾O«ö¸-QÒæj¥ ×ïŒQû÷¡_ù—>úÒîÀ5ÁwvõŠ$–S,ÁSgT*P½ 5_AA¸«šI¤¡®¼]Œ¨V‹cз_̼¯†5«×JÓù µm–\pÅ }‡pûÐiÆt­–¹9ê;ÏÌ‚öæ•ä~ŒZ3ŸÀª~(à òÿWhÌàvÌÑ‚FAc;õuÐP" Q‚Ð`Mþ„†yðBÛià”F&èÓGÇA0ȶèÇ_ûô#ÁIÐ,Š¨å³ˆýÔ‰ú1‡¥æãhJ”VbDhoÄ4:Ï5‚è:ƒù5àÉÙ$ýµœÂ©(””ЧÂ_Ã%[=£Q±r‡‚c’ž5ŠÃ‹Ò_Å粉Sí1v“’”f;À|Gáne4ÃC‡ÊÄ{mçX2"é9T‰Óe“k(žd» ·dH‰¡8fJñ ÉÊ—8•Šq[Ò«°‚U?c½¬ÃÓf+[ró4§•L®þ…WÜSÊÎŒuZJúÛ¾,V(8ÍéK1î3;Ïm_^šUâö«Å†Âã¼ ?m­ÜJ”œo1@ñUàCh<¢e3tÍvnåg~rÌÞ@;÷5“ÄC¶Sá é¯vKŒ0¼처Å“`5R1ÆB‡rZ=®hîó²†deü.ñ‹ÀN9Öm‰ø¨1⣧úÃ,haš¡Lž^(ø:> \°®JžÉqŠ®œP÷JxæÀ ÐC[yá š¤mUâú 2¦Y ÔpJ§^Ùs¹†u ¤û Vå‹N¥éUô,ÝógÄ÷‰EAy¶‘•v•áJ•J_ÛŠ¢É/Ñ@+ÖX œåTt,A$½ +_9ÛÖ°v /§: pl{Æ(•瀉ѦÐ÷¿.ËFbÙÝ ñ{š½aÔy¿Ø†¦†iòDŠe‚…ÔÇï»Løo1ô² }ŽèXÁ·!´þûÀ˜&Q`G´`q}?l¹þCÿ?¯ý›¿‡úšö/Žˆ³Šg€œx ½ÂšÆz³HÞrŠÕÔòÁ@ 3Veâ\e\•éý&O·‰òÄ  ßÓ ãä;Z@~:ÄG™½Aò"·âö£Ü]k›n’6xPü?Þ¹ÊÄìõuöFJKioÆ{gwÖÓ‹VÌ7Û¡‰œ/SËZÓ:ЯוÕpwÓ¬ã„i¾CÅ1¬^öcF¤j×·¡~iߣ±¶÷ÝC€æÏ:C©&íËŠµ\ÓÎåF_‡ügOmªÎ]8&3:ÊåÚ:q ¶s¥Þn ˜»›™»ž“ßîJÚ6lñÍÜÑL4–Õ{Z$èÈèÉø¿Ñ×Q³î3vÒó©$º7©æ3cqŒü¯€ÂÍO¹½…öõr°‚½‚øp1á 5ŸF÷»xì39‰fø$žÛ¡Js\Íg1Åýåù)”;µb+Ž |ˆ 4Áälm Îe„ý·œVdŠ)î0)ù—Åá•:{ N¤GKpÉðgÕ2‡¡Ð°ë=šEþ Ô ï¤Ð;’ïôö 5hlVå{G-Òù1Æu4C=ÌÞ$7Ólè0 }Ýu[£§-Y“1Õ€³'xp)ߢÞñþ=žZ+°£ý…@ÓŠûg“)¶Ã+.±&27ùž‹˜ùWƒ¦˜ú•š×rMã&¦Œ§hö §-ö—Íu“Ñ­@8Á{º5⣮þaw±Rän;k?\R]T?øÌö,È«n3n:|bTT&=”z>Žv ¦ÈèOªffLþŠŒÐ·7dÊ2p£Ç7ïªPaê|C]ݺªÖ¯²Ð›æWòÖe¾Ùø½o}?N/±Œš¿ $ÖÕCô#N®ñ’¶ß*ðÊ×!ù^N§„Éó¥ãc¬ º7°¨r3ÌÕ'æ%aª²ö:_–Þ=W6/C¨l@A–y&D=õ]Љð‘&÷çåXNÀƒÀ\~ù*z¦ ~ŠäýósÕ1OGE- 4hX…zp`¯¶$ð£ÊyŽ£èá(×+ÊRƒâh«ó%…†Ÿº²†®,¡+sèʺ2†®¢BW=ÝÁ«®ÐÕåî ØÛõg}_ÀUrQ˜2á\Žý+R\ö9Eü,¹¨{!;'mÀs†Ò>>äI¾j$ÆòêcMZ y»YÓ§$JžôLuýmô(ΰjbÀå3ºÉÔæ€FÃ*œv%iWvÂãšó ;Ü’8vê-VÄ·7ÓÜ»n±æjs“@Ãña!>;1qììDÊ&wXòíÁ\è¼¢ÞʰFuÚ:%Ï R¿©ó¢šâû’Å&sñ™êÏbØÉâ3@’ª?‘x †<‰cÙ)ýqœç‚U¬ÖßУxVåÂûsôê ¸”vY|¦á3Vµ»V… °ŠŸÑ7%ó¤ð¦ÁÓb`¾ÇàQqV¢F³:VñC,^Å¡*>u ±ú³hqϪã_ß|,1q }|3/ÔHɼ@¡P-%S%S±oÞO˜ìéÒŠËíÆ ž¡O°kŒbÍàUÛ±„ñ—hŸh”ŠóÉ F`]3Ðz6^ÑZ„Òhn*§wS‡ ‰Â5R™˜Á+¨ ó>öA穚/F>Úï6qˆÞ5Ñiº¶u¹£Y—§:ù!&zírý]½k€w ð.íìCQ<0_ƒôÄ Vî ½¨BEë¡h½§ú^OKOJ­2u´ÄËèm9¾õ´´ÛÎ@3ÊâèdVŽ[¢ <þä¢+ W%KûÊ &ãÊŽVT7Â-:6žÏ›]Ó4å›v&F,Ö©´o¿ôÜ¡|åxž9?\eăÎTЪX|X_ÑÅŠø®Fzãí5dÇ&‚ {Gñi½¹rñÙ鹯Ï òEÝ[eЛÖ‡xtJÐpç߇ĀZ@Œ{ÐçZIõßÚŸ§ŠXƒ stÞñ®`uÊC¨Ù?¦g:U.(ˆQ_.Ä3¸óâèó¬1¾¦ tÝ/×âIÖ'Œ|í]Œê/‰÷V»¤‰ë\ý9ñJt.Ø"¸~ØHG1GÅÏvàÏÊ£Fý`JåU\þšêéêÇ>Xå !‹§yÏg©žî~J9Þ³šU·ó!Ê8&íŽVf?Ñ ¬0°û¤Ý+ žÏS=½ýVž§ƒ?T´(}´ä¡ƒ)nðØ-Fô™EÊ-¿‡C*ÇkÏäõW/àºztýU\Au>U_çÒ†ŸGï‰ù•á•ï8°0…>­¹7Ò‹ˆSÝŠ+1™UÐòyãÜn¨¸Iæ3Ž4ù­ÝÈã·Ó¡I\*yÇb¹2ªpM´¾,Äb ü>GM;‚‹c¡HÜAñº;›ÄÐBÌ'ˆpþ¡ˆëÛ,q€H¢£!„¨ q±]ø¢3©:ߎЯ>Ðr™‘œÚ0ú(W°"%éd:UX•­ ŸHÏRfˆ2"¸e[ño÷±Oó\` ž Î4¨ _x>m7œ³õÂ*$ª_HÞ hc<]ãW`ÑK¯w ]Š—áÎeZöº¸ê<@¸Ïén›ø*¥ú%ï¯ð|z D¹J*OtÌpf®VÃÕh‰©Ÿ>e ñ‡y¤@Sà2£ç@j‘-JòQVS/Çl0[à·0Ž•o!º…8q´2Ë"x.´³ªÍ8ßQyêó©½0&,£XWVÌe¸ ¯Ÿ3ñmÓç°™x[»­|±.ä’çôJL—U/ê9pŸrùË^íÔŸ£*¦´‹‡eâá³ô]}î!yJœ ßð)]Šñ9žÓ̤®¿Ý”¥Ý'8ZL¶«Y_€njÔ31é µžjSð銢ˆ~0lt_˜Ï®ò2úŽÆ|ÓÓë Öâ~ÿPø³n)†7òt\ñˆñØeã ʶ<ÍãÃ_#»Oo›jö0‹ÊW¼.@d#Å?§ýž{§ï#qš °ßÓãÚáé2^y-Ú®Aô³îOWœ+ÖÓ/ó*jp•‘K¢MëÏ ¡q@SN—ëî~(#bùðxtð+Ôȇ‹Íl›ed…&ÿ úzâMû"¼°‹çôpáÀ¬oˆ°Æ'}nøR ¿ßy-Lˆ@k‡ü7FÈÒ ñÌ0!Nƒ—cƒë ±iâ:É÷hOP/ S`Fð<| Aüì`Àù¤Ý’`~ÒîU:U4¬ú6§õ äBIŠñ×¢Œ²xzƒ´{­ÁóEªGë·ò,kB±É'#jºvlšFrȪB 2 #˜¦äÜ+áÁj‡u®Ì¾/YHÄ‚ž•ÄO:½®ŠIö¨ÉJ6v!Ť'þ#¸DžIÎS_„‰äÉe”Ù1zu¿f©‰Ijpm• ‰œhàÛX0ÈäK¦&Þ)yÑ}LÚ]-xŽ´)«¢£•v?­Q ¹°™aÊD¦Ì~º ‚!ËCp8ϔ˄—]„ñx½ÖÁË/ù ÉmÓ4Áa¤ ¸3„O¯¢ru÷†üq‘™TàCeöˆ¾°’‚r†.eløQ'‚ét„T†,¥æ²”UŸ…¡‚TS’$QmfÀLZkuf‚;"³Lh5„4)¨KÁ„™€3=Z@ ùtLða^LOïüO F|ZÁ¢E6œÿ+Â5‚øôYFý”Ø{ƒ½!Ùî×½˜ Ï Ô3’¿Ä”Þdµ rf»aVBæ§èÉ8ùý—„ B« W@‚ß O ¹èjPðÛ@WP,ûR—êbPAÔ…´¡¾tF0þ½_õaü ;ûoûwc=aL½UT úÅNIV~Z7BÝ0„>I‡Yè†>¢ñôõ~Êî©áöèë$à#ÐܤJÑ„â#Á®DH¹ßÁ™ùʇÕUB N»ä»øn V@ÿ—|=_@ʾ =yú+½×´M¨Ì:JÀ‚E’÷0|BüKy9Øw¶Î7~HÖù æÑq[xž‘Œ4Õ|>’dzŠT¤ºñ ˆê<Ã|c°ewaË.w‹mýܸ/*èo ¿ ö§$ßo𠉉žªÑÄg*’ñ…w½ ¢TU\aUc„øÁØ*,i#ª±nW𠬦á¼_‡k€^¥äÅÊÊè£2ü(…º)úU9Kh £D?1—úÛÓrSÆY8µ™R4 èÔp®$‰–ôú- ¡ÑÖBÅw\¶òr RNàU‰4Ë®8$å¢*ˆäE_îKªŠ—r†‘æ!ÍÝYhri‚£ÂIBçd½u×EO Dt¹èfÇÚ[4º*HÕd“:t% sXÈ-zP» *O#¸£©*—LU]’﯃ØäŸ~-­ gŒJÅSï™Vî6ñ<½éy‰ú’,¼½8ÞWѦ[3`./"ÂSEYèÓ²»)'O=ÔЫ-\h)HÍQÑüŸ±hóD(øcÁÝ9êHK•¼)ðHdò.#°wÀV§[Ó§'<5ú¥M±úO ©ll^àïA ëޏNÏ´¦gRÙdã›fõcÜ߂乗nW2‚ëSW¸ÂF.Jpìù3ÞFû1@/È0ú¤KÞ9´ùcâÓ¬éÓ`S b©obìxÙ1Šá¡™ ãѳ$Ëž–ÓÜîg‘¢èý´æŠÙE„ÇœÅ1‹yú6I¾ÀAýI”†®nz;£7O½RQ“ ¶oN4 ìºÁ‰ÎMôh˜h™&zN´û‹àDÁô=šï®¼lõôû½Ú’¥Ó©yê{ïë“;>ü¶àî\õm|„GlH´Ó&’EÀgDŸ9‹áœ¦ës8v.ÌwÍw‡äÝÚ‰¥4ß´†üÏÐ|ç^Ò+ƒÑ©þ DM’t|ÙˆtìË™L¼ž¦¥úTig‹ªp°ó¥ÍÀ£ zSéï]ô'TýìŸ8]f£=k±×ÝœdQ whói!ϣФ2êÞ1Hà©_$©!EˆÄÉ÷Ѫ0V(Ï„Ï ‚ É*šQ“SŸ«²;Ð;§E¥…”æn%Ô¨²²VRL}¤Ÿà“‹2³¡èJ?]Ú÷¥în¢,ipbü·àÝY)|üúq9ðyÏÆ¨Gä&(±Ú”:_µ² ×5 Ä<„}TlNŸåë/1z§÷É×Lb ipÏ ê@÷»ƒú&Mi¥Ñãßâ!je¥nk&yö5”–œÍjP^ªñd ñ¦h´Œ ­ @ŽbÌBqC’§W£<áfLÈ÷‹+‘èáÃ$:í3Ä\z“R;‰óTçÃüE¸k„›x2Á õžÄí?ýfë¡`T]˜öyÍX ¯Âqÿ·ïäV&ÈB¹™  ¡ð…¯G¯üï„Ы¢]ÀÂûNWzý¥«/GUÜçPXùÑn$)’õÎQˆ^ 4• }«¼f°1±b-l(ºÚOäÇ$ÝMÚ×íëP– Äzè1PÜ”gR¸iýXoÝ ±¿±C½áeØY[YC±Êñ­€›ÿ@g±X‡¦4*âßbK`ŸØ—ó €[ãqknˆü™Ÿõ’íPPhú&²÷qß283“Ä>Ýg~ô4[ub£® ”ïUC»u³2 -Hü‹;v>3\È þ{Âê| ÍÂÂbYêÕ·l‚:®ÛѺgãOQLb#úä_Žúɶí÷§wÇàjñŸÁ¸+eF±¢˜OÏ)‹Ã"í!c¡ÿÍž`wÐ|@q›Å­…:‹ /¯½*â•¡¯&;wéOBd¾zx^âkÀ•ÕÒS¢`[Ç>îO’u¿z!,–((]×|íi¹Äʰ¢’2\q5ŸÄô«ï×P¢$Òk£§åƒ’2+½ˆ/,ô3 •”™éE<¾(¦ö85"í« ù|7 ^¾jV~€1H$Ћ?Ž{ü^©™U´âKE¥"m¸ªð‰RF‡–«ðïÜä¾ßÿ¶p]«–ØY€®ß§RŽQ _käiªª « ¼Å«¢ ñ!“æÖ4ø{‡°¿úÎö•A~ð³H³±Û x0Î pàÂÉÀzI¾«-ß‚û" Ù| —µZ¥MÏ] ó|¨Þ ‹>+[ZGLy¯~Nž½^ТB°4_[Œ—ñr4¢jiM«&âºÀ€-¦”‹-WÈVmTᎠõ¡¿ÿ$´vß!}f…¥ÏÇA(ºnª¾fÎ ûÔXV+´Hï툶ÄÇ>þâš¶Ä¿¯]ø¼Ñ`v¸ÁžÖ`ƒþÍäÏÇ•-!¹Éóq|ÊÊ"‰8vÿ-ØÍ™híŽuQQ‹–°þö£gÎì NKOZ5'C—@?zו 5ŒSS@iÊ‹iº6†¦«T¿’Š…ñÖŽ‘pMp£Ò4‚éž~šÄ"EÙHƒ:AVŸ«÷öÐt†ðÔZ†µÜB†µ‡Ïþ§†5t:¹Þ°6ࣛÖž¨ Ö~X¥ÖÎ4¬eWé¶—†uÃå¸&È~m­A·­íÂ]òø:ÛÚ6ݶöâ #F_òý>¶µù:ŸðO'ÛÞFûtÛZi÷n[®@Åݺm­œ&ól*EÚÖhz* ­#RÊô~mkûÛ~a[{¾Q}~wȶvVÚô?§‘íŠáæ©å‘5ùsNß`[#SÖ¶5šk´­9h®'ã\jÛÖ˜„m­=7[u¿CSN¶µ'ßѧ¼ýlж¶ä}Ê?<²­=ÑýŸÙÖh¾ÿCÛ•èÚÖZ‰D¯Ñ—"£Y¢´:Ƨúe$ i‡ŠªpÀó¥Í5 Ýx»Ãöµt“ª–ÇºÑ íkÇ™+qÝ ³x•hÒM XF]<™7µ\žÕ-å^íÒÅI¸Ò6àXê ’=8r£–ULì&¹ ßåª)èÁ—=Sð/÷MìŽXþ6zŪ¦v‡Í ø$lAûڻ ò¥O Ú×xt­oÁj¿Î 2õº>‰®íkS‰—àü×®DØ×¦`ðoȾ6O—©ü¿¾rÿpYF+Wr…\õæ½e䯷üÓ¯Ð:U‹{Yœð69…ºîi kdáÑ$lÔqŽøçŠCKs¯D‡™š`gåéAÚ,?$æ3ÈÈh’ïQ2έÑéÑä+!ü¢¹†Õå¿›ú§c—¨-hŸß¶Ïáµ°Ï „ÐísâF·Ïéü.lŸÃhŸÃ#ísÏ~ÖýŸØç=«‡Ð³"K_l®®ôüq„}ŽÐózûÜ]D–=sÔ ‰íK%THíîcŸK% ˜©ÝÿÞ>W>û?²ÏûÄê /ÃÎÚÊRÈYŽoÜükúÚçÆÑlâßûœø ö9Aå#ísúÌ|½} ü/ìs¡UAY^ŪX «bÜ¢ ìÿPÒ(‚" /#¡ðx $Bix"tµZ¿r=¦{[ÑilZA'r·ãêIàO “¡/«B’èÿü«PÖ`ÖñráBû&_ó¦QøPÑëÝo '`eò²Ç¿”@4–v ëß÷Ñú§üP¬¼¨MÄÑsÊh›o‘öãáòåä…Œáåu·^×0™vŒŸù¨ºjù¶ˆRÖ•!×aÿ¿®öy/£ öKüÇP?0%ûãï{ƒ &ûãÒÊi|Æu5-FÝ›m¿ä{=YHUa aUEÚW6‡Öj% NPIj%ÔIÏÇ ýžñ–~‡Kô›î·–#Cæ“Kð¶¦%_¯¿vu æ“èul¿Ãýö—ÐlÓ=&µ/Q~F…âûíç>l¸ßaá,$%iŸòhw¤î‚ŠR1õM×`ÿ±SDOŠBÌNKÈ`é„ð7žøeæm¡¨p—a´À+˜QÅüŽRNµ*ø7gn`;'¯r¤ô×WwPĹãæÒ߯¼HÑêæhù}蘴›¸†Œ®·vÇÎÀÃÖÎÎÂ"º´ÉÿAX CkgaY;sÿ&¬:®B¨V¡ãê¦@i©ž¨†½>Ÿyǃݯ¦£4•¯2Ì”¹®í ®A`µ~5÷f#ó\hGS!CޏYyê4× FR‚dŠ/I!Ÿï ÉÌÜk$åt²@˜Ã@U%dUßY4’ŠŠrÕ«Î>FR¶ÿOï÷µÑÃ9ï‰õ"{ÖEºß¾ñEÿ8-h$;Ù{¹ ‘3Éw5&bè:Ë#ަÕÑÝAÓêËX¬Œpë¸äëÅè}ÄÁs$ïEâŸd`r"R!ýMÌT»M«‰žgдJN¤*Ie´š’Rš•ªŸa7g–E­óý,4“OèWysç*øÒó1ÊÙ÷¯ šV‡ž¹\`Ÿ¢s¾Á´Š-¦à¥bŠÄ\æêÖM«7]!óþ3åcpCØ´êêÖ­àúê OpžzkŸúªF‹%ë­;Š+„â3×´ùþÝð-¹•ÍeéÇ– ¹ß~2¬n<* «? ©R°j¹Î°Š#÷?‚íÐŒ‰ÖÿD7¬^Vg÷•2¬bá auoPJz…¯ƒ•-¦¹z,4W?¼z½]Ë_oW‡;„ÃG2ÉSTW–襢`õº°¯>¹"Ò®z?ÚUõ~p@êÈýh¤n¡]µˆ–Íèî°]•J)/ß`W­Às ¢ËÜ‚(Õ´"Ò®úÀû®J‹C·«*bØIÝa»j’Þ§+`Âã”Â!žO{R.‡ìÆ4>›ËÎSª° ]PT_|2dWÍ« úYù^ŸqT穇Ý×®JÓ‰v¼ »*~¶«šI Âgº]õ*ÙUÅ¡ ÅÈv„xÿ¥«×QŒ !Ë!õA˜bƒL_h‘RÕšî )ögÝAS,ÒŒÕþ-—P”ÆŽE—‚¦Xê;}²XÿÄÿߤêNö‹‡“h'ã”Ýèæ”Mv=9—“@tV~0(C¹†S6аvæŸq(h¾ jÙHÿ½‡„ù–®ß›üI‡¯N ŽH ì%f`ÙFô!êoùrÑ$ˆ] ž‘Íé4¨Å£#(¶9H±­›xV³ŒMðï«¿^˜#žø†è1îÿ5 OTS&€RâÏÓ®DÅ+óßD¾¬›X–S´ ¶…!Ö‘‹¨Î• AnnAnìM9ýБ ¦Ð[aZþA¦ë·¤º L'í«˜Câ\•.ΑZäªtS4ÌýS&Œe2(B«¸açYYCOðo6 rJ<½·C`ÄÓbãÚ¤o\Wé¦è¯‘Þ¨*ª¤·7Q/FÃG”ä»Ý¿_àÒÐ]E·S¢¿ß‘¹Œ¦c⢚ Æà)ñ&>®„U$IN$¬wý.€›×…ŽDòy¦»”qâÇeÔTÓ4ÐUm§ Gé˜4u  K†@6Åø3¾3ÝSm¶ZñUŽŽt>&†“æSjÍÿÀWˆ8x9{SÀGçׂ ƒ&”"˜ÔIQQKý×’áuy²ÁlRfö~¿#eâx)š`óÔî×ÉûJÁ÷òÔÏ_'¬ë=Šg"í®ÏÎSÏÐ{¿†ÖÒGòÔ#z‘?Rp®°Å=U€Ÿ 5÷·¯‹ÃšÏüwç©›_×»tF!E˜åÕµ¯ëöÝøô2pßíÉûÕµPŦƒQÉþÓ×P" 4|7O¬ç»øÅoðÍyê¢} ’÷ ËšRÃfá)|Vx3o i4R’; øXµ?­{Êgo©³o#0Ú·ŠŸ-âg³ø)?-â§Zü`"Œ(&K¾uÉž9Ë“I}|ãAÌZ:ÃÈŸÍÜ;Bo3ÄÛ_„Þ¦2÷v N%™@­õ4]’÷EøÛ‘9ÀêàÈP>TÉ{r$}œû Î2òÌ»˜ýe.¿\ç­–6퀷×IÞm#ÑX^Œ­Í$ÎPÕð‘Jn”¨ªÿƒ¨äB?&cö­ÜQŒqþO@(mE=û¡äa7`)  [n‡»þ(tÜb–å·2Yeî6õÜσÆ!¯”DárEF߮۠9£úò—;ÙŠˆ.yß¾*åkM,y1n$»uÌQ»º}w†¾'S\£ô~¯µëý–|Sávv£’†N5TÀ=s_¡t£®t`™ŒÀÖð†Ü€bÜÀÒ2­J»¯äÍUñ›^-pŠ»·@g¥}¦ÀvoqMèÓ×}Å\¡¾ÖûÕ„0¥ÆëÍ}øÍͦæ îÎVOΆ2€Ç`Drÿ;×ïþޭニ,éî¹jàøð˜kY\ã¡»Àjoœ–ÂþuQcQòZNl,ðëp…± Ñþ Ïv##˦Æ)\w ¡+7âûdü~LoÐΗ«Ev‹¸F +H&Éè÷Ø)ðÙ)‹t“OcÝRq}"†å÷T”Š+ದ+V1û°vq:;´Û’r”å×Òõ§íx„\‹frËÇÐLD6uX—J ÝûGÅñ ÂSdŠª2ÂUÖÕ&V†ÇÐ$Ÿ?Ì?ÊN?²ú.FÙš”ÅJ%§,[¾ìn«è–ÕÀc<ã#ÌøâSÃÜ^j蒊クÆi*M;¤'a%©øüxÕk;æÀóꌸÏ59ð fô5ÜPÆÎX¸ÃËËð*f¦éÛk¦ñ*|‹ÞyP_häÑŠ¹œ–´»VçÛÚ6ÐÔSã¾ô:·,¾apTüz+ãXY9~¯9ŠÖWaµEÝM+cäM¼ßp Ž/òÈoz‰a=OHC öVÌø~¼j’¥é|ÜÛ eÇss%¨Ó¹‚ßJU‹KzØGžŽ‘’¯Ë‚ôqíBVŸÒ•vÖvÐÈÍo³.7NaÔPJ/,kÛ¥5*øL +íPJ7§áÛŽ1{£{8fñHz›ÝŠe>š,>¹¸¦-å* ;ÍâÔñÓFèSU1ôñ¡¹¼+t•¬͘  S±ê’4¤ž y$·Ytf´á÷÷L|ãG KÙÑ%Ñ'cá“E ¤#1Ë•nCáe’÷È@ñy<âÃ_RòßÔqêè—¬Aù-¾³ HN•nJ¯Â7’’·@.¤2ઉðpÖ¨rüáÊš ü;VÁ'žºØ:{ó2d•J*R»*ŒZ ’zdzIÚ ÂÉÅ9¼ ߌêeã£õ‘sû˸¤É/kX—Zz HŒ cða=K8ý€¾ Öòü=XKÚqà<›÷ƒèS6•–Å#h—ƒÙ—(dpãs6mlÓ_G‹g¿ÉwD1ìîIW‚ÇÝ  ˜)"NrN—{¥FÓÆ*05±ç J/º‹bl4É»/G•öKŠn 4ù¨&7À?µŠ¸¥@_ã2S ¶fÞ Á…£E™’ÊH«°~[9µ¿¦„ø¹Ù$ „ã”ò2„žÇ’ûã¬mg#0•¼ŸÚ£$ånxSªÑM¸£QýC}/!¢£óúvÔúÍeqМ§ ´Á/ú!æ{Æ«¨UØè/ÃY¶•á{¸Ç}Ô =6L¨ŒÄýŒ%}úVÒ/Ô·ùý"úæ7õíÛ꾦oÐ1O׸µ3=]÷³/%/F,àŠÿÚ$>­'ݾ]Éíq òtÙ$o<¼…®˜ ÍË©ˆ-ãѵξÝ-yïÆËˆ®àYÛ“ªL둼Ÿa¤ý9VUÇt³I–¸c»mN•x76ˆÌ£´ Ä^MÞʾ¼æÊx2{!ª© Ãa‘äöfO×2×,*»”vaën‰A^™×o,,÷Pƒµ]aCX÷º%‰)æÛlÇÖvxºûIÏ#«Å¥¢xrШ䥲aˆ (×Èýæd¡£[Écl·æJ4¼I¡gð>YžÎ3,0›®‡yy jíýºd¸ËÊv>ÌBÞçŸHBIº<Æ|B[RUí ÊR—bB²Ôßc®—¥ÊcúÊRdvØHfyôɳ- wàwùŸœë|‰A¢èû%ü%Ž»w¤U÷°czìg‘Tz[yÿq÷6ý f]#Ñ 7Y¶ üXF„ˆˆIL~%ýµNYl± ³~Ðì òr„“í§»Âd¨"y§G#Îl•¼wÂEIÿâ„LÏ` +Z ·¾³¼ ÃÃ+—ÆR5W£ƒ26¬±ô¬7%m²£quz†`ÚE×tNEPšˆ¦šÑ½ä¥mÒAMòà†E„°6ò+ ­ Єjä·xùTË$KÞ*ÜÌ'îƒg:þŠwr±¯Ãõ=1¿Ú’íÒûÌð¡ËÁ6€ôù4|$Jc2:ñA¨}÷´ »úT5ÈEHTÕÿ†ËEKE$1þ#sWeø}d¬>Bã'Àrçª_lÙ¯‘}4 ÕŸ(„¬ ‚j¤)¨Þq9bìï“„š]’ùoUló™Í$ËÅ`_ÿ%´¡š#ÇqÂ@Ä~m®ØÐ"”|o^"©ÜÿE>ÅBžn«´ í*7Ù‰±åøÈß{ ·MämsÕ»1’Ä~T†ë0“U…•¨ÂŽÀ?¹—J/MÑ9ê•ß_Ã}F}ízÓñÐý"”?inmú '(äÞ-¦Gø"¦ÛúÌåµ/ƒ`poôc¢éÈÂßóx ¥õ1“uiý(|à_Ðó5Ò:†BAiý¡_´.,•®t!­'ßTZÃoÆBs—®Øÿû›(°c.1–ª ýÀU’ÉûbÒõÒziÍr>ˆ¢ðUå—-[Öé¯éŽfGXWÍÕ‘ìXÊé—:¯(«SÙ$¤¹WØ)ælZwÒO”ú'àO‡F÷!¤Y¾­åýy¦iŸ8yýaÐHN<=Ës¾ÅsàG,¿Ù¹ ƒñ|†ĨS¾ƒn>S¬Ïúv ï¯ÏÞ¡@õ¯•ÖEWüÌ(€.=KÖÒh˜ W«¿]†U£?=‚‚y4‘ùuÂ;(uÁãû“ààzÌÓb|;ðã¨çŠÁ•J 1/uÒ"ô6t’d£Ÿçó{€òêáß#’w7¾oÇrÛ;1QigX ò¾Ø‰‘H:¦uÀåú¹ åDir­zm=Rý£cÝÜQËŒoxDé¦ù-Ì~ýoøìg{€è 9³ÉÁS_4׿@€B'ˆšŒêz”¼ÏÎtˆfAË[üËž‚„™sóòÔ1ÅØH«Ö¦>ßã‹9š”ÉZÚY‹í mÅ£ŠK:„oõh!|úP4\š/UHP›® ±‰<Í@oî;¤;ÿ¯†d?ŠÜ|îW¡!¡Ôìhñÿô«› ìÑ ×lÒW¸—ìlR2qdÇidw£O“J|.,®JÊñ‰¬•—#DÖ?Á¶V±ïr°d!–„L@é翱ä÷/ŠÑÿýøÿpéúñï¿t³ñ?wýøË° ¡Æò›Òó>d'tÞ“”!y;[ef½uÓÅ¢v4yZü¯Ñ{R¤ÆU¡']®ºäU5ͳ¦­mPFÊRO<ƒ&0‘#ÉÇ€?¹½œ(¯À¿3<ã1ê5!No¢ ¼ƒ­øß»Höf”6y0®GPRÉE ÷" ˜[>¨iÒd¬Îçr‹P-QѪ%~ÿ­‹PŸFñü&e–APtFJ«2õÖhFš¢õEríÓ+Out ¥ŽºŠ=ü2˜O#HQå¨ËÜa^ÈŸ4Az:u}I€éþõíAÔ ï`r ÿ²öPÇ™Ü1hÑýTì$Æ=#hÜlþcít ,Ø£Ú`¶ê[¡Gß…Ææ>}ÙÿÅu}ù=÷0¿éAÚÑkàæJioÒÛ¨I{•¶&w4;àÓd‰r'¤\´–žo Cã¦g”cÙVŽ×é¹±…Ðû£‘E1Ëž«ÄgÝÇyþQQÒàlL¹ øž#Þ¿QD:_J7Zo\¿èñÔ&û:dÃLæ<êëó`ÅÂø#*˜–«7£ÌÖ5üOYÁR®Š×ÜÑ0%G™7°gnvŠ»QÍÕ/7ð‰/bõšëµÌÀor5¹–(üSß[GQ—ƒšæ¾u(@%£¦)yïÿ'/¬múGNmÌÞòÿ££hȵ¤;¯ÑMâ«gë/–ߨÃÝõ\®/g#;Åõ5b¥*× =žŽ‘)dÁ(qy¾˜|â<+ÃQ2··_9Z¹ü_µaÛºÅÍ¡Mœ»© $DsŒt6Ÿ¤X«¶· 4Í0§Õª»Ö¡¦JFçƒ|Š1‰ÕסÌï•|^¬fþ5ÿš6Ì&5Ò?«Gú¿ ˆß#r•ÄÕT½:¯¦+–¨9›B‰×µ ú+U•ÙÊÄçòÔŸ¯…qbÀx²)®þ”±#áArTò¾ ÚÈÌÏ"ì~)ÚœÆ?ÛX‡O[}|¨$ÏÑ+ÍU3Ö¥t`Æwà£:{ªôÿ¡ /Å¢ù•9¹u>Ì!"Œh( s)f G#©Ú醮íGJh?ʬ ç¨¾Z|@fj-ž?cq Wð'ý)³´ƒçóÉÀ£kÐñ.¬$¤ãYºÝÉÊù>¹KòŒBrÑYB܇SqâÓ~” Ƨ¡U·¸gàÞ´C@L“¹±ºÓå©Bht=!íW\Rz-åcé©­sÝøJº¥dö¶öu#²RŽä(Æ’,ìcÖ\‰ˆ’:j–r$ (ÄÔ’žÀGz"û윹4~à^J¡Qfvê›=C죔÷ë|ót<³UÌ#òŒ~‹îû¡“/Šf…þZ8•eÖç2x–òÐs£ Šá‹5§RŽ@gü·c7¨÷þA$×úý(š^IZ7ê-Ì1:–:ö6Z€N|RgßIôĹË \&‡ÆžW­8vfg‹[ëì»° Úó4Í x+|ÅiUðDeb9"pŽÖÿFòÏœäŸrAÓ:ÏøÓ. t±å±·~üÿÓªï0ËCó÷[qC2•¯ Æ@ æŽÖ0ƒAÜo‚y¹9êV†v1<@h‡ã7‚.ðô­Âƺ@êOÓî`Òêõç….pÖ•½yMôæ(üœþüìã­§ñŸkI;ÔQk]9ªýÇÏS·' 6ÃOàºuœ4†A·"SŒìs 4Rc =jè°â®ÎSò›r re®ºÇÛÖ´ÄzÔ‡™½Ó~ýšâCÐþÖà^¨š+“«&H<¸E¢7¬obº\0Ðn m…ºÂmÐ9b 3ÂÒw Ô¯}rÃL´Á£ «ÇQ¥ß‚3¬><ªßöуž‡)Øä¾a€¬?´a"Ü5ÃßÓŸèÃ;œgIÅ"˜çgùÕÔóS‰auíz1E~û'×O†ÿ^x9ëE€U£×¤žßwcÏ•üj˜&Dngå\õ°7<ãh.ýg?ÆU³Õ‘Yc£xØdGsÉt³ÿa|ißV4>Ê?êã ËpoK„à#]Ã1²,üY܆óÿ³%ˆÈ²ì0Èß ö‹®Gíž6†Ù·ùß ® ”úípÝj Ÿžhï/êûêþ¥Z°+cZÂZíøêqúj†…OçªøsQxß¹àg/ž `9žÿ£.Acyw1玢 Qò­ÁgÂëáÃEì[¾b4“wÛo® £À·¾©Š3ÇvÉ·j÷O 6h?—Èï…ò`• *ê^ÇóM®Lïñµ“¤}ûÓ:lVŽ€‹É)J Ó&®+Þï’¼Õ«û{«]¤}Õ¶«>aí˜!KÚ—­)S4v"íxç%ÃÁ€?­:pAølä°÷¹…†:ælg r‚îó±ß¥$íáöö”&ÌžÕ¥XÓr”¤_æ¨{&µžÕ]:S2DÚw\³›XÇž´‡ÝâñgÊ—Aêfn7•Xàºíæ=¾z°÷¸7ƒáSißÛG«þ^:‡[÷°APÆveÕ%ô½•Ûã>? P¥”w9ß´þ*r€•CÕ—Ÿ &f&/Êwôt C1»…™%Â@3ãK0Ƴ¦åˆëjÆ/Ñø[|ã;>UàªZ¿C3ª#°/èÃ2›\Ì|¢ 7åK²£½@#:µTÔëׂ®-¾®ÞPjÐUmo0Â*eýò½:4ÂÑdÃPòù—i†‘p„gPÖƒ¥½‹E£VD%DþT Õ‚ã¡'‹¡Ø÷&•û/ë׺Šìz"È|/ ‰ŠBÞðHð‘++Ä~2„øÂ¬‚èçÈHÜB¾o¼Á”K'úCF¤ºÐó±N«ærÛ¥?qè Q=±·ÌËͤ%¨5‰)H=ç ¬¼•N`…¨ÅŸÀÊ£Ð÷âóÑ÷$ƒ|OÐñ„F,÷];Ž`š›Âî'{  Iú²òZŠûBɲpà Î2¥ZÃf~ƒJÁõn(4¡\¡/‚Î(‡à/ÔIù¯|”eT÷I¡Gú¡HwGXÑQŒ`E½èñ±'èr'Œî;Á¾¹¾«ìÃo…Tð(€Äékÿ0-ä¦rrh§§ÈÿÁ¿™u|Aþ¼ðùlM¯ø‡˜1Ý]…ž¸&õ¨ˆ!¼ÔÛw{ýhw¤ÆçêŸ)ýš¶[EÛÿmŸD;xòº| iã×y­ê^+÷㇠^t\I}ÿZß•û„ïJÙu¦ðßóh IK©Š¯s_i¿t_! ¯A|‘Fñï‡'ãøÈÿ8|#× ýÿx{ø¦ªäqVÜE—]Qy)‚-Å–×j)…"”‡xC*–}ÓügæÜ$7Ôï÷ûûüý~—ÞÜ{sæÌÌ™™3gŽë%Üè·+‰{ŠÎ–uÑ_H¶³‰Þè#ìRt'düV6«)±Þ±Ä8Y.0˶]Y9¹Ê=+ð@…¢~ßÿWdÂ÷¼³Ùð½Ïó˜È®.ÄÕz¨…Ê.º³Ôño|0H2þñÒå†Òü×RQ­GÇSUøðÅÇæIöóó*.¶( ï²rGùpWK± Óµ²VÁõÜß§Kçðœl*àìF‹â³nʵEEêW&TÓÏ: ʇËÖ]Ln$®¸³ž CÁ ?¨ÍFÚÔ!€Hâ æàI2É_ÃÍÉ£„gq[þ:£ñZº~pÓF­}ªë;0ÀX;öÊø¡õ>–ÊðWqÛÝzŽ•­§vñ_:7¼ìû$o‰Ñ%~29ó)ù3lµ”Ç2K†²‡ÁÀux ,Úúöúm”躿Är—za¤=šGcdˆüêT™\eát?ä°íد¾M¢E%¡J¢áËSZ\µ¬‰ÉøRXuʨFUšŠË>"q©Ê-×Çøe;.ÚÃl%PEŸ´œ¬îôŠ©ÒšÝ43Ë->A&8cD¿Ñn_\–b¤îbQß®Ítx€V¼2’8›ÎªR÷Å(ܶã'8çE…JТ®+AýR»32´ÆÁH¬1\§Ù®–&y¼¶£bvöt$Ï“í¯úhdÐƒB`x%@}¼½‡ãIÜë>¡zGÙA"È÷"xs“¦KãÌIã 9o˜›gNœ´ûH‘·ˆ›€Ó((Zª—7áÂ,¸~q½éÀ³…ªXœ²Á·÷”η¡´š¥å¶8¾v5 ®yPI¿iaÒ#§G…€$19,´Ë„à.‡¶!Rµk±ƒnÊDaåÚ#OÓ œ_éCgsùifóL+æ‰DäM #ñà›Yyf¿"†tyå™À]NʧÏV-£W‚sƒ.`YðâÖqQ/8ÇaªˆT3Eõ܇Ï*o «îl °¸øKΛ´µzì– Ö¼7µè+G¨ûB+z ýÅ÷Ý ªÀ—´ïú­Æt¤ñ‡Nˆpr † òÛDù4 ;z¤à±N|¦éÔ‚§Z‚ý©;Ò§$ sæ‚ZðÃ!ÓŠ#YÙJOp¼…Ÿ˜¤qXŬf0ºÞge*C©<õpô6êÁýåÕêÑì,åR>U%Ñ×ca©ž~Usõm¼Û?Øê/ÿÉ×à«“²´6iÔ(ÀhƒM?Œ¯¬+¡øú°K¤çmªõñ¿Cóãç±û; ôK 5±x«]Á`]« iAñr(è¿ïTAψÿI ÿ¡8Bîx÷WäJÀð.Á90¿Òy\oËýxG›wò\8¨æœLe J¢ŴСa¦áêBG3þÌ€ núï%rÕÚýU»›xùe`zz¾ÈÌVæÀ”µÿ3=÷8³`x¦’ uæŒ ë$îÿÝŽ5µ šÔìRîíØ[¶2+~‰ZqÁªV|VÜÚRñ>z÷m¨g+ƒ©"wÇJ¬Šã¨Ä¿m#•ø¥@›ÁÑ!SÚ6Ï D·‘ÖKw ù[!}ø7\þ½×GR0F‚ië~÷ü•žŒï΢m~SÉ SñÔYg`þÇàÆ}”Ÿ_¤Y Ï|B.“å¹ì„þ‹’)xR”@ÂŽ£ éÖnÁ¹.ŒŒÙ²1û¼iÇ/š²#'ÃkšæaDØ\m¨"àg._ß1Aß›WðL*ªd$ƒ‘RyG3誼õûµ­ïÂ+yvÈXÚï¤3r[Ùõªž¬}×Ô+¾µxÒ’yÒ&”%¦…í–bymÓfž}@O‘Å —[ç°*){ÑQ/®m|J.zTX…ºsYSeè;\Ú„‹vµáuÔž&-}¥p;Bdá']ünÌ«M/2ø N‚f øžØìŠžÝôËýn­ÓÑ®ú*z¥cA=ŠŸºL9ÓUåß{ððÞýÇË—5ºo2ð<S†UОhOO™Ï݈¢ž"špcñêïnìT—nC8Œ×ð: ‘Ý„ûú÷xÎLtˆo ÇÖ‡í¤Öû»¿îö;ÄwÐŽ+å#àÞÓ2l™^)gB±i„çÈU˜mHÛzޝõ!Ð:ê}Ý7w‡¸Û»é²»O¹Vç„cøäj°×^™q‹WýÍ”òvpÉÁ\Ý_ï¾åæJR ^²šKº†‹ÝŸ7c0¼ÏxZ]ñ§€Ûˆv™QîSP¦¨ ±åýUô½Þ¸nöÍžžið.¡U»'`°ZØ¥¬,Òè/È&mŠnóSØ|ß½æXJ)¼Ê£3ýl&¯9}Fg¨Ñš¾ ¿/yÌg´Ê¸ F)–]ôsÕ ¥ù¨Šî3Q×àKUu8Ròâc–ôF>HöeI˜—ê}ëC˜Û¥ö»%ºtÜÕ«àZzQ;ÌÏôcaè^Ä øŒ—0ü8!¨ÂVzw9Š\]ÿð»ºÈµnþ.àþ9îÿëñœ²©dªif±LÚp)'@;6†Ð΋8ç~†_Íwft|g¹2óú;3C88¯øÁ¡“[tã<1ãÆFÊ¿„e^÷—Á} Ï1¼·¼‹t>xç\^#h›·öK¥$¼_n°÷¥n…›Ì“>çd+¯ò³Ä þÏòaE«ÃOÆa-äÃz,0¬Á×s(JyJ…g°»ÞsýIðœô9ÖqDk½—Zç ‰<ŤŽh””QqЈ÷ïüý¼ïiñyÚã÷µ9ÚÌ€6ÑYOó$M¹V™´!Ü•A.1K+kh‹á¼W‚ÿ©.Eÿµl3«7x+{{ët{*m„ök¬Ûb/iâ–nÜãþ¦ûRkéžJ¨sýïŸû¿«çwÍR¹ÚÚ„…Kr{9N7{­ÆâÜ^jáïMQ®Úêñºâ­oŽ'Wå#ÍÆ“ЫšÅW³‘,%–×(lî+õ†å1Ó¿<ŠÈ kJý4ZEÕ“¡ºé{›ür¦ž¡â“©—z¼fú@1ZŽÛ,‹3k<[¡=Ì=^8jˆàLÁjy :nÁë ”xG[Â⛽C\ɇ{ §šÌ¬…K…ï…Oèuöã  Æ‹Qê@ªÇÇóaÑ-‰…Iw Î¥šÅó·çê«—‹çmxkÞ5Ì„úë]2P½ÙW5ãûÈð“ÇÇ€;òŒÕãã¸(ü·0鬎‡®ÃŒ´þ¾×UíäTGÛ/`pÂÊpø£>{‰ÝX˜4Ÿg „I÷áž æV®‹»A»6×(§|æh»¿züÝ(¨„•)zjäÍ#½¨òéÁî&4 EÒ/u¬â—¹jíý€ž&²ÜX–#Y›|^q¼P}jL‰ÞYÎö‰Öä;ÄqèOµÆV#Zt-á…â¯T¹‘!þïÿ躄+šwáôl¥âNu/aùMúÊ’pg¹hH¾Ã¾“Íõ¬)Mõ|Çù V7â’2²ØMlñ½µ‰ÌÐuÑ„`(ºx]ÿ—NZÉwÒ2¾WØõlüPJZÑëîÊŸ‘Üqü™Œ³Zɤ‡J†—Gàe—ž læË}±›ŠbJJϸWá>Ú2süÝ$@q-ê@a*<[Šbd nI1Ï#¬À%lêÐÌú\o-7&iÊ5RV;¢Ö©½ÂÜ軆 Œ€ ußÏŸ 4¹\wú šôž@ž:Äwžq¼u}Ÿ—èª/ë4Tý5¥;:4T{›×¡ê jÿÚ"·ZÅ~š=—³ûq^ ÞB~ ãRˆ^äy?h ùÕê(BcOMÅP1‚*‚u ©ÛŸ×ú46Ìxõ3Ñ›<= è%ÓYÁ9XOƒ¯h× þD`ðšÀÐíwHsãPm¤“]V'åˬ˜ž±üXWÐÚ+qÌ>ÒÀÑ´Ÿ†£OÙÏÓÔ±Kò/kbSã${ŒÔßR“„ÛcRY$v¹ÀŒÆÖ¶kÐøLÐe÷£¯ªízèëêAß©nZôšì3×t徫Ó_µðþzu÷—sÝþ>îéïõµZªkM–¯Ç|Æ´i&ëÔ 'k¨47'‹nÑÀÉŠ‡U'KMÀ‚Øû'|+ ¯­ÿ«ù*Uç«X¯øëÎ×ïCæk|ëO˜/Ç!þú·ªøÓèþ½Ýí¡óu‚Ë£»w;=º#øÃXwW=Ä»/µÑŽº°û[zÙ *âÕ°S¼òt=›:„5©ƒÐÕq°H÷ÛmÁ&£åB@d°-rGH¥)TÉ,ÍRTI•¹ÿÛ2ˆÑ@WcòŒ¸€˜S`-yó°Dú‹Š q´|ùJ`!Yr›o!é§YH>—mÃŒ {*S=çÕÀ¡/J©GãÃäiå*ß>ˆ%¿Ó_âÉ52³½@¹äɶ®è´T¤¢,$fP0÷ò0Vµ@·À»àgò*/á /:¥kòz3è”_îä'†b<‘ˆxÓ=Ëf+ž¹Ý^¾yóhEw4|*Y· ëkŒç¬b‹Na›w`ƒÑEîb(ïhZܳ¨'-sO`£ù£”½©š«Ð=§KzÝÃäh‹CJljÒFáñá÷°ßôÕÒë4Äo6q–PŒW½Kk‹¾¥azq˜’u7É-6w,ÿ TŽÃMhŒW ï¯+BÇ{3Ž·ofVŽ2·'HôÚÍê°ý¹u¼‹F)F>ñLQo™§ÞoÅþ=Ri¢×s9GÉâžîNòrÎă z)OòÁSB‚9€CÝA»ï1ó¤>ó°Àq,°Ä¬F(€êg=N‡]íÇÑ™ò µ›AaÔ1-ºxÁu·êóï ”‘÷Ó•E6SuØýeЫè9dzWùœm^ÚzÜ¥£¤%Fé1CB+Óóèð»YÊ‹ñæ”·ª¤É¬ubDB&ú³6èÛ@ò¤›˜õPª¤·T.ºç@ƒ¥X¯2Ò¿R3 ÕŸ!8Ët|‹Ëfbz<¬#åÐcxKnŽ>¯ÁkoP>ûÀ²ÅèŸ0`ð¨ýöæeö{\–ò|^³(Þ„0N0˜ì‹„VºÄ ‡:B*8Te¸_Ç:áû<Ç(ÝR@ðqPõz°:ßl-ÀÝ×LåéæK”=&Cyí’×;Çs¤”0à©ÊP~‰}Ì¢Ÿâ?2¯)á$!о ”ÜaV“?ú£R*h½vX -_ÒS²Åz­®ÚåúTÞÊýØJz#L ›b Iž]¥YÊùÌn¯£Í;S›d&½©X?Ž¥7Mõ¼ @íÞÐl‰5¦8j<+hòHR^¬«~©@E‹/î‘nïŒYî…d?§Ç¡I<´à¸êHÂæV¥¼Eîp/­Ý€/<¶KM˜UÓq  Œ¿@¾3«)±ÅÑ/› ëzE0¡†Ãs)>Çlpél)~pØÙIKÛaΘ­oûêVÜíËùF0•¾ P†ˆbM„ªþyYûÝÑf¶×;<ÔÆIÏ'›UÔø&–ÃÿóÎ×bÞ?K¶šéGyäán/~…!d£­ú´`TÎÞ„8_â貕ûFÆíÒÚ¶oÛñmhÐŽ=¸f#o#³m¸îø6üÈø6üÐøTº-0J‹§K9FKvQxz8Ê™Á­´ÚñªeaGŠ7ÉjœÑð†¿\$—û$eEIãâ]åö?K™ñÌY´ HýÙ`iŠAš3TZÏæØ”¡l¹‘åijAÒ ¬+0±ÞìÉ.`Möœ–ù(i•œ?£p™ÁS\5l,->‚\ iCYÚi°çÖ¦LGùL…€OG]Og´è¯‘7$TUt‡É1Wpš²˜­QÑS£3å¸_1koÚ•ƒ{UéM —¼ rÜËÙÊ›À|Дw‘QÑ;[-MxxA#Ä–Øœ!xVã2ä‰^6Õ@ÒúLž4¾vÓÕ ³qQÃÖ¨b~¹–4=¸è0’¦L—ôÒ ƒ¥.¿¯D[¶z\qYºæF¾‹‡Ý‡Ž¥Ì¡lÆPiF<‹´„á±L›adãâÙÍùÑR_9Õ–L‹”3¤â (檷÷æ‹(¬¡1l§gm޲š›îqKPµI¹-,€¶bÏ!Ö’£Œ†ïcgªgç «¢Cl>GÙC§›0s†Øƒ>ò²9³Ñ|Zâ&(`Ÿ·µãÿDÿ;þñ;‚ÇßS2û‡î÷?:gw©oÌS†PbxߘÍ0æå(‡u˜CLó=úÀ˜ŸåcNÓiƌ֋;_ÑØè 1ό٢–Mc¾Ë?æl5Pc¢É2Ѽ8EêÙJ ±8DJÂRŒRŠ´&T"ÃXJ K1±ž‰µ Å¢L€¹K‰åe’R ‹±ƒçËRé©­È¿^PõLcgªœð_èÂó¶/fT çèš o9Æ&X¸”2Z`‡J)ñÒD#›m³0ïÂxextöôêô1éªS†ò?Ch…BPö ‡ƒ|L$â€W€y${£”1]Êk¶Ð(=9³ xY koÂ:3Œ–Kaì„ qãòöa–½ C¥±ña,ýlBEÂ¥Šö0Ë>fmVb†«„£`ÿ¦_’ $û Éz\š/tHÖÆa)ÆŠ6ìaáè":aœ‘ZnM,÷­u0~E6}º¨*rrif®r®jOMè¯È™.-îù7»ÔZ_q.L*8›­oÍe_V|&¥7èÛ3•cXÖÚ$MŸ.Ù‡e+:²¼ùÆð'ãZs•×øWÐqÌK†»ñxƒœý³ÕUœËMíýÌͲÚ徕kZXÊÕ²db6¶’µN¹’=Ï…Jžç3”gV\õÎ<ã<4¨ ¦7›dÔe²f²õX–4i¨÷A¶ü,6©lœßù 3”Áƒç¤Ú±…š¦a0)á2Ø4WFË^˜«ðƒý"ÛÍ×\µüCÑψ’2†² ƒÙˈ‡édâY†‘™ýe³¡pQóœäéF–…Ù–œÏŒRÜ^žË`ù 8€!Û¿u'Ú*器ŒXXÔØŒ8Ќ鞭Óݬ¿j}”:öê=æÌ¸„c0EE;Q¹G{“÷>«86]õNŸ‰M÷÷|Hö™Ÿc¡µˆ–p½˜-¥‡±›ÑNKþTù%iÒÊefF­hö„QYÊÊ¥Ö`f"G¸?˜ ØÖ¹Rš_*qÊtÏ>)%.aw„ß Êð.ŒUZ7ªÌǹ*–ÊÎðàrð;슱7†ïè¥XZØ1U øù;d(ÆT õT`>[y †2cºç´ß'†â¡U ö?ßÁž"%¡¸ÏUêèò{,‹@ÉttƬ˜ÄÃìØDV±DùÉô˜ª Â0qé%ÉÖÄ&šN‚’zQÅliÅn‰·c»E4†L.•Ä𩞿IVsB›_×g)z ñ‰õž­Ù9Оw¡Y1ÏëÕ³‰3Ë#_bõ¬ñåºÌl¨-ã&&t÷Äti®AŠRÁ^~WR^Ó¢pà„Ú /Æp¨{Iz d3€còš€¼H—\Üî›Âþ>ð[(0V³<é«lïý9JÑ£ÝÕ0qºœÌOSVé-Öf¿ìË%ó{º”:°=EêÛº³â˜3ùÎ ¸ùñXW‹ü1‹*Yÿš£ 0:KÉz˜>ÖÑ©ºÉÒÔé¡ü<ê­ jÁ$™% PÁ¼÷c27«Î!Hû!¤Bma„×­òáuAîü€@àùW©†Ã’`QK7-аLèo ¸.bgÎ{C wÜþ=§w‡b€uq7õ¡©ß#i¢qÑy\ “ÆuUš¥æh}„ö<§P.¥› ªYŽyÙ²w‘ÀjJç ŽÑ=ÄÞ–½‹/ƒ¦¯#‘”PkËÏ%¿?Ç$…ƒ€z}i §Úùª:ˆxsØ8ƒ”=*°þ,ÍÈò‡ûd“úÕèi`-ÙJG+ÞçöÁìgpÕòIèß’¢×‹1(]ÍÃ2 €>ÐejøºOó¾yE&˜cHÊ3Š=©6Í@©4ÅèÚ³dœo½á[ïa±Ÿip¥7²™Caõd Ì4²”x0ç/å‘ϲ{Ë”`9ù^mÀ~g/òs…u“ø^¢ßFàKâ± ã9`'J,Òó Ÿ4d3@룪Ç'a:ÅhÏ©j5îqÏm ²‰cñ„C9̨P܇t0žIµTÔ]ÉéÑ€a çðÑÖ€ȾÂÇüéò”dPؤiÕi´uQÆ;]nÒL0ì–f®7’¾…dëY% ŒÒ»0lŽw}<Þ^zG*P$h ýgYæ@%=ý®ç=:ªîf'W›@ý€ê¿t2¨,3£zÜüÂ#¼Âlm…ùÕãÄ:ìïÉéÒJ’ œ<õh‰Že©“Yvš´6°ÔÙYö,)™ºÉ‡ÄÍ1 ›¬i)?Ï+Mš&ÙâÑ“=Mšï]£ôHâ6©l»œ…ffŒœÞ”)gOËÊñæÄ° Éhob‘Rê4°C¥¼!ŽvÐ ÅðgEXåzo 8ùX È%G{„áh²Ÿ%î÷œöéò™–= –hÜÙ˜ñÙÇS£ ½œ~9s‡Èö ý·¤¼Xè¼?vÞ×xmç¥Ð÷eßßð¾ÏøúÆÅÂÅP.îf“’†nËuq1ô\ ý?â‚VÃ!Ò„‘PËH쉼9aHÒ„¡”Ãpç„Ûv{5º3á tg[,¨òB3û6á2Þî‚gÊNáPôؤ»ñŒ&Ñ?˜&u0¶Æ,GåÐl jÆV3ëòQOÖ€‘1a‡ß‰å Þ“X.õw˜¼ÂêòÖ˜dôyñ&5ëâÎ ¾¦JÙ¢S:HõvÜ›œx*^š#M‰—–Ç%´³cèkÊ1ëw[v.["õbaÀ³C~0ú‘ fmô¾€ÉŽY¥«~&|k]^û_dô¶Æffç(òC°æN1%´Ë17KS íRZ Ë1Ñ/cB;(ɱ,,l3¾škRŽ‘-ÁD#À‹Ð`ï’tSqO)'&…ÁäLšc\ÎæAȸÑL›?lJ\fn¶2ù«Þ\ï ¯‘Ð • Íö?“­^´e=ˆ6Ö_‚æ·à·åÔØ;,í87yfXý Œ¸p"jÄ^ð×HG„ÍMi®ûÇi£Ø—6 ÃÆ™^†ŽT¹M‘‚ÃRÍO)¿>Uo´ÔIÐj;¦„¶Ö*=ŸÒ 9îîuÄèyp <…‰Oºê—Œ²¤7-!,P,<Ыd¦Ùeã :îvœ ]XMKU~U" JAj’›²¿á¾ t¿›õ{…»Ù1÷$ÚElbÕ/ëÛûôT‘ùnN°6ÂìmmzY_Ñç ?¯HL`HhóxˆÞ@·ÊÍq•ÓÂ«Ö Ù4<±ÖrQxq§ü„7úËt oõx˜xk O¯˜ofù&–ooyÂ&Ű'cÙ$cµƒReë,?†åDz'a‘-]&ÔÝ`pj¹Ž÷m3'îqtt oTä>”½—ÌŒ“8]6N,·´ /–ËÓ½Ñûà%TŠ b¹™-7±åVƒD‘ZõÓ¡@° ?Ôâæ=§†\åÍéÝÞY3Y¥çÝÀP@ˆxXÃcÞè/| J)­Û›X‹ Ô²'ÍìI{Ò &T§Æš[Ù%`ýÈpô4jññ$a+ßèùš`‰XfÌaUž·üçgÒŒéq0ÇE ³ä„Ô‡ÕÜ|=ÿûbbi&‚È6‡q™Wtš\}¤ÌX6ÃÀ2c=f^wÆ·´ýö_K²œØ•²hU®¬&f`㯻½>=.5,2ÄV§‚iUm5ù|î©“»y>§ç_#ãêh)·ÁàùÌQ0‚wÆ,9CŸÅ*•f\õÎL¬…&{WÂuÙ9Êï^Åý¿‰ë9‰µPÙµ'[ŽKÿh¹tsmôÁÖ*Œ„`Mb¯ÂQ:qòØwñ§ý’¥ŽíÌ T »Gÿ9vÞ-„ÿÄŸË» ŸèÒ±Ýâm…Kõ:9åª[¸4 ºE¡pi8LÕ~Èžd¤— þÿ £Ðfì-§ žø ·^=BNëíé!§™œ-öp9­—£Ê,õÿÌÛÝÝ­?"8ŽAÍÄ#E_âïñ‚kþÜ«~ÍÝÿÅþ®”cðWú{p¥çµ•¦ßÐ|ý+9ÔŒ¾6çÚœ¥©ô«àJc¨’ÉWéJ·k*‚*9ñ )Ë@ó–þÔ^Äš³VŒõ^ïlûUœ7Ã{ø¢ø‡ð9s}ó˜“+=³7mˆf1ÆÑmžš(/>ÌTœ†©Ü».\pþ†<Ê,8®Ô)‚ó×ðßoRßOUßß©¾_£¾¿ŸÞ»WÁÏRyãω/8jè¿„Á÷Ä/ýh¸B:·AS ATàжðipÊ-?Á¤)ðRp¼ØQnv\0 Œ"tt_^8KS¾è/lÿƒ£Üàèn[˜¤ý>-ðý!úÞµðVí÷‘ï øý\¸3Ê,;E4Áß¡ð×ãA‹ÃïôÿÎ=¢0ÖùØclkR±¨;wŽê_ÊDÉŸnû…˜T2¥â¼VaóAiú()æya³~ܰ«±f-i…­:±Iÿb[+«ˆqø?‹gf’JðY J,wÕCÃâ ’>@=PØÇ9kíáC¹(TÁÔ±H܉$í‘Çx¾/é9ê«¿N, ;vÊ“ô™ÊSº½¥`«~ž™­°w à%¿’2±œô]Q¾h=ìèÖ/DÉbx¼o=±6°[’£übnè™q¿wæ'(SÅS¬¢³t$ÁJxoqŸq©îW‹%åŰžÏ ¸7Q¹ãWq5„å«:Œ×q×Ö1è1IXÔ«p)`8 4ÏÖ2Å¿WÊÐõàì­… ô «I2ê/fâ©{•)T÷¤gâŽY‹z•E6E±„u'n<ÞäƒUŽyƒ}=ï±™dÔÂra9Æ×&snÅ©°T«ì&žò}”Ÿ«Î_Å£æ°=îԩݪ- $Ð ¾Ù¸@§ ëÖ!¥âÓûÆB#rz9îášXúF1œY7¢\åÕÖB”õÙ_–‰ÒBLÛN¥Ó¤,½.±…ÙvËÛ)7 ‡ðP‚:yk7Å)y7ac2ÐÏÀ9ƱHé»Úõ_ÀH€¿ÔvÒI/\’Û ‚‹nÊBÆä°•SÀ{ÝD¦p xÕçvÂÓÖdœáYݾx¥¢Æd PŠ%ætƒi]…JH92[`NQ±‘gx³9vœ—ñ…tS¸~&ÍÿX ×V:÷eå“î dwßä÷â“+8K?ì18Ã1[Qˆž»†úÐSîCÏVŠÐñO3ðNBwEw˜ G þæy0Îó-8Ï0ÙQ0ÙGM6óÇ…—J³·`Nݽ0«|‰âÙk×p¹`ÛDSX°;±…ÏÆ„ñ¹“ïT£#¤>àd:'•…çÔ¹c;ñþж0Œ¾‚pm£6ÁE' gtáºñèGqMâi>‰žÉ|òþù<~LüùɃ8“ó}ü lb¹Ã‚±f„…»Æ:’‹tâíÅxþtóD±?&Ц±éÑવ&› ×öh·²K÷•Cû­\-òR/»$‘R –êÅýÚd1Ö˜ƒ›,;À˜Å0ñ!03o<—s£³”W'á6*N3ÄÁ`ßr>’Ÿ4B\åéªwº«e¦hbƒ˜׈ ÄÞ<XSˆÿ¬ÀH{ZxË»sJ@´ˆ=ç?”ç÷_jžX^ÔÙ€çV—+Ëñ0C¿OÕ#÷Cálô¤Éé™9Þû•;é0lŒ«^üú›)%û}TºÅ>Fê÷´)õÚ ÿZö®X E%¶Xj–E[vDP"AÉ´iÚÓ‚‘åÇWœ‹_pB9tGN4³IC²¥ü!Ãì9¹ š±<ûЩ IŸrÃ>ŒöÇ®• ü5õ´{Ù+ÐÛ«˜Ç¦:5ž˜0uèmGayåÛŽž×J³Ñèákß›X_mmäìJ‡d(´œöðcŠvþ (zk!v‰ÙL¯ÞÄWkéÙ©ü2ÑÏ–Xîþƒ×3næýÆñ/ö’•Ÿ…_ƒÿ¾øé­­€@òO\[·y/,ÂäDU΀žùá —z!dR?†õ"¬ö›ÿ†´ÿTŸî£OG#°ÃŽˆÑ–Œ8ÁùœB?Ä,.«–a¢Ë¯¼Ø+›ŽÕÆ0Ö$Ï Ã;ˆÂd“yÛ`—'“5µzØÁŠîÁ —.%äÕUtD%4ãFüka3"®xå˜Wå‘Ï˦KòHLr K8Qq.J²5I)G›^p®…ÁàÃSz cô±˜ðÇÌì±X¶$8o5îi%Ò·ßñ F °6vðåÖN`8ó'¸køAqrL´~¯÷t5Ošh¶ÐtìŒò¼éØîyÊQ®úr©‡ &DMÌ˲áÕóTŽxœd¶• ¯Ê1Ùp?ÕA“rÜðyŽö$ù£Âÿt{…§“¡y>U‚k8<û¦ëÀË8 {ŒoºøoÁeBù{Â2y|˜{ÍUâ¹Ä÷᫚ûZã¥~ -q¹ûÚ˜rs¾&ŽøfÆ£±Ê9‚ó…:]á(=bÛP(ƒý…I£çb¼MgÌ.lÇ+öƒ×}r³•´qÝjàm)­¡ÕÈK$"ÞTŸ`$=xâ³xø›­¤@¹´õ6¶¦ÜÛCeF5uZšž‚‡&éÄÁ[ïEhÜc'XõÇŠØué‚ëçz_/ãh,…þ§µ~œêÓ¼êˆgèJ|ž‡õ¾‡÷|ëè¡:bƒ¿¥RÿÓFÿÓjÿÊiZÖ#^ò?}êÿúšú”Xû1˜XŸÔÊ*[±³Iâ<Œÿî㷿܇ƒÛ– £“ì>G¾K_fxY+>’¨k=`©”3Agul ¾°ì\ÍúáÐ?bìÝ|DOb‹2öiXOvqÄ‘ÅDˆÃ'Öä¿•T^zÆh~Û•Ð…vP&XAÙYŠóiº{4c¾F‘ͬ JI•ßLûHýVÓŠ…¹oÁQ4ðœ5©—Õ8¼a‹ê0;3Òt¾EKú:kgÛŽÎ+À¶…ÃÄÔÂŽ{çóQš›¿jøQÈÄÏñ$åL©?KAI»£àˆ9O¹$cÀ‰s…G ©ØbÁ‘a õEù¦ ’­ÍrAS®l¿3?‡¢ìüǃ2´?ü#<5&Añy´¢Á¿Íð¯”Þ ü:D⢈O’Ⱥnšçh-¬Ü mÙ-'?$üL6}8O²^€/¤û°_aåú^#'E¢üHÅ·zøÇ áýª·±P¢×ê³+ÁØ¥9Õsg$ÞÉ#ì¨úØSüc.N?"†§z*^ýâèBÎÙ¡ÓGt¿Ldè[áVÓ Gë {!]ò×PµZÀOy¤Ã§XyoŸ_Áù,¥’ðbë@Ä ‰£ˆ¢*l|7³× ιá„ñ‰âhÿ­œ)á4{%Ÿ;ˆ—òC¤ó¹Óä‡pö C&Á„Õ;¥‚:–k˜È/¯yÑC¶)YÙÊ‘Œ>WxÎ_˱yl¼Ip.‡Ìóg½°Ïû;V`uĬ’ì o¨ESò/EcòÝ‚+ Àó=°ÌV5ÇÇA×^ë É^«Õ }u(VÞ ÅJúeRÖâTÀ£àŒEñšÞœIÄc»¥«ÒO<±DÓˆ.ô© wu/0øÄ 'Ñ Ó™FFÄ.u=v×·!cÈÚxûw„ÛëOÄï?¿Égâ'¯ ‹S¯³&ô—h‹ßx=pÿUº¢ÇRõ:O“\r¨¬& tÀϳ©É÷ðä•ò´h¯*Í…xª;¼#øLaÇökF´¹=äLá«íØ[a¦^çþ+>R‡nK;—N<%é¾3ÁÕ¦ÒÚºz'¨è^Ö §À½¾-ãé™mG¶ÖÊ>éþã§}xŽÙŽøºTá>Ûðƒñ×€wØä*½AROwï‚©næëjنʠ{Á•€ÐÑ8ý­‘˜b¸ô-˜w®o–c¾:ú¹‹ˆ’'Z%±ÎzñçR¿‘KH!RØùKÁ™ß毀ÆÑ—pâW¨ÓΘ#ú·»¡Œøçùø®lJz²uýLP‹GA_1ƒ¢uýQñ´®ë«£Sq]ìdb¹o_b_ëA)},öìë8וpY^ú”×¾ÞñmS®Ò±ìª·J÷Ëlèwl†2¤t³ ÞØùyßö"`ƜŸî9.ïtÁ‰FÆ‚°\åñö«ÞÜúw£kNY)¡  ÊŠ›’*ž•ìó*ö+ö™ñϼŠ/Œ_˜ñ³¯Eq©}ñš,¾`1ûF ¾¦+’õø¼Š=ÆŠ=fü3¯b·±b·ÿ°^58KÖ7eÃRúF6p7ü”gÃgº$[Ã¼Š½ÆŠ½fü#›†§›2YÞÖï,2]¿Ñ„³Š·q2f Îq'¯?’â]eCäÛûQC±n”cŒoaG²a'ëwßÙ6¼]G/zÐÙÅ·ø!ö–zaÓrÌnÜqê#Çúaƒ¹òÈ¿å,Ð{ïî”?•P¤ &ðý¯§ £áÔ®-y[GBB“úö­ÂfCËnÁ1Íi–̾u¡[Nõºê™u«xÛYq:,¼¶Ny¶J÷zÓ·jQz¯ã¼ÁUo?«vfI‡nþ‰cÌ+ßßÒxCÒx£àx#›6›Ç²ñG‡WŒ,î›:Å~×ÊŸ¥hKv‰ß¬[¥ˆšâi•_Á‚I¶µÂʯéfJÁ}Ò}›åš™b1_ŒKâó `>5ÃËoòCü!Ê•»á/ɺVp=ŽŽ™¤D»:6Áñ ìÓ ½~£=„0ݧ[¥ôO¡¦†Ö˜épP;)7lGO>yoêS툦]2¤%݇@ÂÌ OÍEKLvë›ëÖüû}í Ó¶/8ÿ…'‘jý8ÊÜ)Ùßg¹ÈY¸‡“ Lg~BOجzðp¤J?)–½Ì¶uáYg¯agc|ÍéìgýÔÎöFIy¯³ éì(ïìR”ÆVÃǶð\n¢W9öõUoÒ˜šÀœÌžÚ¬÷Ѹ«¾:MHn…NWŸXÞVq8P­ÔËOò1½ß"06Ï®1HÉk°êî¿¢=–­®r{4^‚ß_öÂÆ\{ì&©_Àa&Y×*Ka ߢ¾ËíHcˆæîg÷5 ÐÍì¾ã¨*€ùÛp=ó—‹pÚ¾{ Ö° ‰{a ~3ú¸úœ]Ïî#ø þû þÂe5}¬”\Cn,6kÀ*ˆ 9f íªµWÂ/0W“„­“®Ë_ÐÍä†@ÎÆÅ¤‘5äAâcò¼¥²ŠÕíõ¾¨˜é>‰ ›—ÕD„ÁO¹J‚[½ý%á3r¥òÞºjA#C’{M7…óÑÃæÉÍá½°zfšâV¼^>ï³pâº1÷Y®r¢þª×=£?êßíÉvÒ (¹Ê;ð‹íœá¾ƒ~½¨~ÛÒE¾¡\åiõóœ.ü¼„~ÍrWuâ¯ôkŽûÙN„'W™©Vžj/¥û{Jô»Þ—n—ä—Ô¦¯s‡,Ÿàͪ¸—†¹ôÁ‰‰>ÁõQ²?Æ’¿~¦ “MbBÛ–j««• ¤õ}½ËPzOÂõd›o(›Gog¤ÁûˆÌZ`- yœ4ZkhkHêGÜS#86­Òìa²}b¯Ò±–šü¨Âe•@(—¡ˆS‚"r\Ëk’uÖ& äÔ¹³µÞÕÂ’c¦ßl¢Ïë0Ó%1±t'E •Âfñ€AØüàÕCþ‹6y´ŒOÍ[ôÔâjZŽˆ—ê—î#^"odo6çP¸rv¼°yŠ”ãçý±,iIf–=d:ÆN¤›yÔDµž/q(K'9:½âÍR?”“IÉÇ–}/M>fìfÖ~Ôèû>¼ºÝ»üRzLµž»€±€¹^z¢m¼e´ý ´°+ͲМañêç“< ’x¬Ë"3¬ØíùHåƒ1çT>˜N¬%<߃nˆ+.2Ã&Î2g‚9‚sPŽ Pÿþ‚[—„)Ú$½¥)¿GRòSË"ÆZšB›Ýc}å’øž”Mꇱod“9~ŽÖ±1ª4/ é`*“ÈI¶(’;Ë@h/¬Ÿðé›¶qšëbG‘®Yz#Æ^ÅðÉÖ(§7µÎÔ7gÍg¨ .Á,“ý|®ËZ±¯ƒD±~ñMmÔ‡äŠöhÄ[víMJX>÷¤%Ö+­˜&¡ &‘Ðf$5ª#°%´K«­ ¶“Ÿ ò¡—Jf=I"ÉÉ5%¹†â˜ž…+¢tö;A{CbÃdT…+"A5}Ydz-{ #Aª7¼’*l†E‰weUþ H ‘¨f½ÞÆ’Uã#t\IyæªƒŽ—(Io,žÚ‹ÝÂ×$¨X•jÒ³T£*êKÖFŒÊM7µÖë›_h±àŒ¤ÌÀ‰æéôÍ>ÀHðþÖKG5J³)´mò“4{ˆq+Š‹ÿΣo™ê(w^õV–ªyÞÊc³PE~@Çs{ 9´sFhÀcp{¶ ö ´‡Ó?cDí¦õÓ`Úl»·þŠ Á“E¬rñlɶ›õ—Ò÷³))½†M1â-w9¦[]Ñ)Á¬Óç˜Ù”‘lÊ(ÙvtAß,9§O–rË㸩…ÿÁüªGþªÇaT5éüÑZ­õÊ/ûƒ¦ËÓD¬æû¨ýʈrs\µjHóò™ìâÖÉAPò°ê[„ÙVˆƒŠ–è!Z ñùšFæy.P~z<=nïèq+´ü™¦åêÅw;ðP`uÂ@nÜ6Ï¥ª8FýÜ®ð÷´Vc@eëIå¯ØÚ¨Ï¨µ]8 i¬FL—;§ìs¼o™ &[ih$.@IX†Ùàzd+òh|͙˓³W¡Ÿ0<±ÖÑ/8ï2 "ZpÞf@ùt +k‚U©$ÌY΋ë“o×¹jåíøNÌjJÌÎZÁù:$;âEcaG´>Öã¦(¹(tÀíÆ”ìÍìbIXòlÁùøU¬W–Í]²ŸÇ"·HÔƒ«–ã…a‰{Ü{$8nG8nfj)q ;€‰Ýg ðmr¼• }ŽóxªôºqL@×޵°ƒ%zìÓ䇧–èÇáxŸ ×ï³²S§ña7èôªþÓk;Åd.ARClTË7w:\¯vŠq¢×íÔp£NOéŠOh:¼ vhÅ3ÙSËmzq8ü³| J(K{JL"ÊŒÿx½Ó= Qž>¨N3ÓW`ªO±êž=Žò)Ï”á¨4gÏ_ ‚9Kiþ7z¯Ìžµ…KõÃÅT¸ O Я8üµ€ÿ‚'<)]>{\ª{½ K´Ÿ(\~¯½®*<:ÕQ >Œ´oÃíT…Ç{¾^Ú»&îa¸fìqø~÷8a‡áfÀžØ˜Ãü±Ýj·)ØíSÝZ Än º}@ü®ûú@LâïGÚ· " çü0 ë`èÙ}]ö_ÕÂÀ®jaxòªU* ®^†¬«?Ø«ÃMW¯ ÃAÐ6 ŸðÁðœïÁàà¿ài)zœcg¸{&0;È‘ÁB?1¼ËCþS‰ÐP™(úsë‘çÕ.χvy4´ËÝØ%ަɎ9Ü ¼Ã]š1Ö•Þ°OdìÿaŸ‘?©ÏC7îóó«ÿ£>}qÕ&v²Ëï¿„N3½ŽŠ¾ŽS]ì\Â~t_fe“órÌü«ÞyÕºßaþ.£òü—ÈJ1D öX|rb³Ë`S~fï\ÍPâÿ{ÕË£qTýø&›µjçIy©WšiÂ{ÔnS¹r ¥N¼µp‰÷nqà‚»³•¼ÁøAá>Âá@RŽ’˜(g­x±°cŒØXØq·½Öó éƒì(ƒFP [g“¾ÃªÚàoŸ@mlˆGV¡ ZWžÑÞ§¨S§Óë„P»¤3ÛÊ»ÿ¸Ôšô’ˆGA=‡Ôƒ²H±¼Õµb ÑXøÆn@ÝKý8C¢<ßayÔ4m& C·]–mM,½)ëãý31××qãT)›2ë<#v°3¦ÖÐÛˆHëLÂ#GåמÞ&ÛXzCÖÇCgaÝC²µ¦Úzö}rD¢&b©‰CÐD?[¡ °Û<Ÿ`,i£”b·*â…jÝ# ž{Îqøb¯O!øe«¢†y)Û$l¼1¾YÐø >[µÝæ¹HçðP¿ °ñq‚k½\mm£vò±[ÝÕ^¶¨(uðö²”ž,«óåƒñŸÇ7Há‰{ö è©!¹=hóøHôö—_A"“§˜²•GíÝ^–f ääô¸Ç}¨L§ã0š1§°µq;!‘à«Nåí¥xÄuc–ÔWždò~ˆ‰ƒ«­—yhj“ëËßE+O@©”¬C=ûÅöFeº)jÖéšVD×°­Ç¢k*Ú·ÖT´ºÍ—óÄjÄP¾)ƒ‹Na­èŠ­X'a7¼QÏàܤ›aJ`†„ÏàÔ³5²½`ÊAOx¶µ±¨îC;0º¦§Uá=ÂÌ ÐoE{oZƒZköÞV£i×fR[³*ÐÊwºHobÂg¶¦Ö£¼“h„èÀéè[»½ `4fµ0ër&Ðy•<ÓÌs"™ž–b–öè K/%–#æë-„+åoõz¾÷­›Ãqz<_ÂÃçFÔxá°ê9þ&8ŸBUöÒ°¼8<‹’'ǼAqc±úÝúÒ’.iF—4¶ÍÒÉlffÞ8¾pôâPî¡LJðfV0@™_\~›×Ç_âû•xGœí¸4³KMƒŠÑé&ýÅaP™¥ŸŠqÝ,­Ôb=+<ƒ±œŽ?› ˜b¬ç˜"ü–NŠë§J¶8Én–M/HãºØ±ÖVŒ"®’¬ ­çX¥dÝmÙÉlû”ê vO±ì^88)¯!?Ü›¾ÌËay ÛþÅgá{TÒŒ¶ÅÇXKŽPåñÞ|;ÃZ'ö èçSdÛYäÚ‘ÏqÀ&J³‹º˜í¬ÀpS“„Ú²Ó¾šV.Fcm æÊ¥i« tÀ?qIïR|azM~ò°XU÷’»¶”n– ÈmR^¬4ÉØ– b¥,ƒ4ز—¥+,o̾‹ –º…½T„³îºÕ¦QÈË]ÅÛ¯—ü$¾ÅÞ(<ó¶ŠÎ$›"Îjµ+`7XkZÝö¢”Ä •Zö.޶ìµ÷O²ZÔ'<]ñ¦×@{Žcº¤t%ÿ´TЈÞçÁÀ·I‡ªo>ÀÚØ^ozãÒ5èìÊ1°Hw7jƦ0Ëjk ÎSþ`Éf–}4b°yÛ[mx?„Cõ:O…dÛ†Ž~¢dÝÕZG ìÑÇFÞ5w6þ²aÎP×_®ªª—[ š(:P²Å¢oãiò†.ËÑ…Ñ GU`ºŠ“³•µ:¾c6ã’~ˆdö·õÃÕŽ>™ºïä­ø6,¡KO]Ò7±¸»I[â{¼v슷Æ{? (M ‹[œã‚AŠ{!±\x§n¢ø‹Œ–z{_Vç;Ï÷¼g†'Jxªdq/N´Ÿ?ØÀ¢¦mT<ÃÏ œ6¼nûò²»ä‘/€´¢^þ]—"¥^z±ºRlÿߨ~ ¶ÿol?ÚW|í{ÔögÛÓÍáé±0 ò´g»±ƒ™­Ixö3ÚHÅÐmq¥Û¥ý/<Ë9Q\”Xžd5ôª6àÛº±ðcÈŒ†gÉ;ï¨6$åÅ܆>õ)æu¨¼81±|¢8€Jå–ò±ÏŽ˜›«Ì¢§{Þ€ìÊRß*Gà¥ÇX›d3¼ÈϔŕâÈàŲ‹§¿ ºùñl?Ñ‹=VŽ»‚ÆjÂqÌ´à8Õ”™Ci&M¹À&ÊxŽ5–gdH°šAyÒÑÛ@Ę…gÖðj³¡Ú™&–w¶1#<‹¹ñ|É*M Ÿ+ŒwHïÎøkn×ëx‹RúY=0R£7r}ô5(!챎  wTÐ?Nþg{ìq@©¤ëû‚q>x0sŠý<&¬H!›`7ë¿Ô§Úù1]žÙUoï!Á¤wo¦ó<{&NQn¥wðK°",{,&@KWô ¬Pý°è;0†ÝŒ÷E°:òL×c˜b¿àYmÙ'–&ÖN±40)ù9–ü|Š¥yÙºÕœµXö Î)¨:bAF‰W*žcµÔ½ÈÜhÓh×F’>ƽ£›û9½Ûàc€à‰ØASŒ—“Ÿ•G®j=šø̽aUë½4b‚}5Î~)³ò8Ǩú3, }€àPS)ˆV>E4;?±ÜÒVЫ´Úà šµ´-»œXNÛB̰ Þ]0ˆîV…å¤×¤×˜4ß×eßøãôs1W¶òÁmœTgÑ %ñg@¥k-ïàZ%,e#aøËš=«Õ2½Ü1ò´ÿ\C«5†r0=œ2ÅÑ=xÅŒœ@"Ô»xqXn½#·ä€ÃS/Ér•Ï¡o¹†Kxäfä‡<}j®òox§žbädt§²˜mŽ]ñ&‹Õ´ýµãù;¬51º¡káÙ/л•¼‰Už9Gß™^`Â\/Vc®Wœ­`n\({Pâ>ÌVžnUu¡x^€HÙÉ ý#ý‡¨FžYm@€†•)z ¼È"c6¦ä[ Uö&=Ô#°=]:˜#ÇlA<Æ*7q0\-Ëãpù€áÆm‘M+Ys©daI˜ ¬Ò0Ñ~ æšÔ·BÅ©PQÌ[û`À]zÖßÃ*¹KðGØ•c6de)-Àþ•¾îÑçG\¬Rv•:©òö`¢}¥8 'Ó'RÙp‹¼陽‘µ ŽÏhÇjËkoEZ‹ ré^äyÜ͇UÓ® 5ôE9 rOJ‚¨.ú^6ñ©)ˆÍÑ™žnÌÌT†ñ~Ñ…ƒË@•gÄtˆ9WÏ.Y:äÇ ¬»˜?Ip6ó»—"Ç:ª|ýÚ“ìÜGáƒå¢à<€N¤ÚI–c‚\ÅË&¿À’ŸK±Þˆ…Úù=ΰp«å¦ðØ{Ë̠–£›`N‘ %*æ²”hÂ[Œ»’çWV‘gÚƒ˜7H¯ÓWº¥nÚ\éŠqdÑŒ›¶`—/ºxUt°Ñ i áÝkO9"ê’)Є|·ë*‰@9NÅôÉÜð<• ³åäâ\ET[¾ëªoŸ“nB÷Éóÿ\~˜~ªüx|`°ü¸8ðÇåÇ×!òÃÔÊOÜb²“߃'29‡\wsu›D‡ ¸õè„U ¡aj‚(4²•ŹÔ0__jÄðæ˜*»Þ‡nTyq;2.p%mb³HDl&Þ4å@[²•ù—ü\~Ù(—dà a$¨mœ»pKBy‚×%¾¶bÊ$ÙT*Çm@¾ÖÃbäçk3X`@qO1+aæìІ0vP_™ k›2 ƃ:ÑX §±Ÿ…qžŽ§^ï&`°ÏHÞg 4È×\åЭ>v‡'~@=2½ÌÑ rôvG+âÍ¥×ågEËÏ17àç˜?ϺÕÏÏO?›€Ÿ§w߀ŸÝÍùodQùôîîP~¾¥[ËÏÊðsL8ße+¸tï&~AÂ19P¹2f+¿S¿"VÍu÷âÜJ%Éj±¯®ª¹ÎðcžÉ²mW[Œ˜äè¼¢æŠÂK hÀo ¾"µn—ü èg MTì½6¾ž)Ū½²àÕ0bn“g—lâ5öûAüú1|õüãšü, }˜@û{ ´ÉCbÙî wxk£!J¼ežªN¨JØY¡„ÉÎòoþh2zdñç:)òÖ0%¥nM1°ñ)Íxk ¦c’ÒL·¦˜Øx“”f¾5ÅÌÆ›¥´˜[SbØø)-öÖ”X6>VJ‹»5%Ž“WÄË‹â嬸‡ìïß\ÞZjÍOÔ‡@Jð«DU%ÒœŒc˜¾©BŒ©0‰f…'dtѼøœÙeIW¹‚åN:¥Ýˆ.Ý®zɦ8=} tí±ß dÉsP8vgÍ¡´iÊ–> ƒîžN8‰Afñlf-ÂöAX©³ÇòARyÒ•ƒ§ÁxäÝìø®ÓëM8ùaGx$é{ò;ž—'õ;ø-Z™x޲–¢=:Yðª;Ú;'/ÖÝÛwåç£`e`«Ç ›;`4' [ò+@’ôå>T1ZϲHÜÛ¯‡Fí1€€x@@œ˜“|iq0Ç-y½+ Îƒ8RØ~q´ãX;`ã ÇF;bƒµGWÂ01ýØÖ0è5¡ ‡îYO'n¶·A=ÖöašŠ‰­§?²=‚.4ÜÏ.¬ÖaE÷boP®Åáh­ÚŽÓ2Œ[}é PCpþ›¼fuº®ÞÈerr–•êܶ_ºZ(©á^˜h¯O\ßÎ&bžã×:}1›¢Æi@V¤j]ÃóÇâÊ–ÊBÁU> Vn‚YØy‡àÄ;Cýª~ jÈ*ÿ™ÁùÅÊvúÝÄ«ç©Òõ>$’ŠFWK—Î=Åûì/JeøÑ@—ælÇi‚æÃÑÔÁœ{†¤4£àÀ2ÂfÌ|9–ÉX„¥üe?ÂF7á_š ú!8Kuc¡¸3j]õxÑ\½]vt{E3k67Ñþ¹ºnÐõ<Ǻ¥·IÛm./ ÀB÷Ïpô¾ŸÍR†ÉtµŠ;G·Êëå9¬½8ª·Ì5ùÒ$yV]…® eWs—WŶ#=Ò• 9Êãß]õ2"Õ9tÅò&–ÙD™g†“g׋ê§oèxoϲ˜4Ф£øÞQ óÆ2*ÂRh:€ö1„D=ð~Æò3³Mj[wç§FÜáÅóÏhŽ<â½RoÞLô8ÍDoÓNẠ),¢)DnËʨÿq>ØÄ.õ§½ ÍsXtKGçj#1I¡Q/•Ñ\ÔÚoJ,wbºÉ =aVJ»hVð›2éR뜹ž“™Ê¿žÁYùL™{1€dÏë9ŠÐèǰ§P‡_×zc=,Àè@Ŗ휈үúo6¯Á'RÞïë¾ê1Ëa^Œ£g ~žø°w<³Ü§®Ý-Ч`.—„Jqo½¬¬;°ßߟÚœ:’Šˆ÷̰¡ì“pûÿ”²¢ F0œ‰¸oÇÌ ÊÝßgÒmÅÊ,,#Ó(y’V·®;øÆâ¼7Ú#pî]!`ÅvùëT»óËÁQþ§!þ§»}htæç]e1q¼“èFÕ’›1#Ù@E¹šã—Ø€ŠÎÇʰE~÷ªÿX×…jp=ãǺ@Y´!Ç/Ucƒ!7#Þ*hr\¡™ß„]…Â`|ÓdÌ‘¶Oà­91A‰ŸÒÞ…¤Š'mcS°¶!83ÃoÀ½ñpŠý¥jëKœ —ñš¹Ê›èÐ\}y/I’¹\Œ›êW,×ËW›þ¢œ÷¢–srBXçÅÿXgu€uÄe:ûíèlt‰=K¨ôé‘I\©j‰Á§ï‚gmÜ'à_e¼¢!»í¹Jëég¼¡$àWúÆÌž€3žºêç© ÇRtî‹:ø4G )ÒL.7«,´†~×/Ÿ,Ï’ê]U«¿ÞØ–‡ðТÚ| z òÝpG…!@w\\ Î1s/' aýÙÁŠÎ°¤5céÓ².\~¥TðÝÙ¸ GºGq›ÊßðCòÍù"R[3®;’Íúm|U4Nº€–¾û>Ú‡âʨϘÿ=í5;zëÝyߣgÄ2\AO)ß6hp=ƒŽÀ®®àz$Úå• åîÒ ¾œ³Ã‚4š$Õ·“î7~4éZnøÀ)YCôOìÊu”QqzÁY¡l‰Òvt„ ã5ôF¯Äþ’<Öúð–/¹mzÃ~s°ÁVö>Ÿ?‡0J†7Àÿ¼Ì{<?B„G{´ëüd*ÿþehz·ºÎG&¹8K¼|U×X:Ç«äžÔøJ²”¨c~}‡Ò<*¿:˜ ºö’Sì3ÙÞ{•5‚J‘“‰"ï”èÓ'] ªþ™Q=wŸèS³9þ › Ò&œ!’ʨÒ9ª^BBo=›%¾’$é·Ó$l«Ҽ:÷¯Ú®·‚¯õ™â­ÁÊüšÅXAo”Òïh€ü*‘ü<XŠÝÒw|½U:Êî›:H Îhx(ß=ªNXÙ VtñNÁѳ!h–Öð•`ž¯()%7:¶ðœ»Š•¢+¸Œ ç+„Ï-â~©E?ùO¼ÞîDø9žQß|©Ó»ÍíÁ«;žßVW÷—Ú|Ÿ0aèâþQ›÷º‹{©–¢^ó _º?l¾_W˜jŸÐ£rrÔhñ]WbH¤„óÎéÂUN3¤âˆw¥MÔO ^té·íi¶wiŠŸW‹Ÿ.Õ¬®Cßk¹Â>Œ»µp‹ý[}¯€Óædî[4Ráú ÕÌ¥ç šçgP_=çF¾‚¹lQä¥n &‚ëòÆcç%$G‹i-ê4W9£ÂªóM¸ú^DÔç(H¾‘—'&ØQð¢ûhDy²>à{ñœÉT†˜ÐŸk{\­Êt+æøev9œÐ°) ¡]npß‹]ë5æÓ™,eëW·òçÊùcà ¬ÉGê´õVƒì¹ç˜ÆNìôEþf¹—b™wŽ…z‹žìf s·Ÿ%0õfµëøÔƒÜ–«Ýù<,6H2÷ˆå_àŸxS?À?ñ4…ŽNj܋֨èC¨ƒûû:&8«úL@±=\pN×ep^íѱžç}& ”ùHžDYH¹ê}å`°k{êtþ´urO2Åÿ‘©•UΔú¢ž=ÞI}¥íª)þ˜âä®{±v‡{x’Œ--[êëÙ Í·å Îv$[×tN$N1W¶¥5Ó‰^OcæQŸKú›;’Ôý¢¯µ‚«/ý¦ª{–G2jÄ+ßMÈDµÜ²ænªWŠ÷mÑ3w±q-µ8¦§DnåTÜÊįË#9ûq„ç¶5Zò`¼xks,¹ûÖ„ºûš¢®ËÂbo??¸(X¼ìn/7VjH?Ç_ '¼PÖ¯çÌù ZŒÒ&Õ&>ªÞè†!¡/Q+ úUéFªàó¨ÔÈt-ðÁ9m"w¹BtŽx7áÜÈy¥ÙYÊ7 `'µ€•M£±YLTP*8§|¬"üã ŽñauPz¿P¢ü|cüâ}°µ¶cÓÒ&lš%±|ƒûA2û¸*„ñ†0È@¼Ï¿ì 4´ šÇF¸‡7pVmฺÐ(ö‘~Húû%•Ñ ¸OPýoÔú_Kk¨N} Îðë÷vo¼AXË5ë³U0KÔ„´†ЃÍ4¸ç{®[*|kØ€@[k8nqñü¨ — ÜgÏß>Äkp@ro¸AÒgˆº¾EêÊU©ËVš¥šÂ@~éj€rÄ{¤5Tá VÈV+¤—fªžÃ´µD“î?c5Õ†…³ÔÂöÒµðÆg®z=œ+ê¦[¡‰+qK~€‰.Ñ“<ÒE‘Y—ÕX.¼*`$qÔºàqWV†Â~I…Ý/wùø¡$*y˜hL¾Gpeui´é›¾ËuºM£h¾ÄSüóP{F~l ÿ­õgžRzåø¾°È»•†•óÂ5ò8]£Jÿ¿pyL®QEAO¾‚H†—m\³µ‚ìH°³ù‡6¯Wú ¾Ó/¿Ž8/êä°ü6Lã¦}(Œ`)ù3‡% W’ža‹áGÛ×án GõAPlý!ˆéC XEP´s(ðTõÖÁ9QOPþ¬Y¡ðb)I2lq´ý -'ƒ §º€âÙ/C‚à2ˈ1‰]1NÚÄ—U?žÆè…;÷ßy5$¹ý$™ÌI²K$Ï!I]‹kUrÌQ:î&rôüMi; Ùþz¿*ïì÷)43ܨ3+‡:įõ3ÖÿQÝ^TR‚õtlŒo{ ÝŒ›y^ÖäÆ;}çõG¼hBIÔô™†eÖôÉã'&tç¥ü-uS¾t»·¡“µ´FãV˜O©³ÆhúNÅ2ªÑÀghÃ27ï Ø~'[¡Ì„š€›‡+—§ZÑ¥‚ÏýŠ "í\ZmW¥U0iλZýÒ*G©¿‹K«~èõâZÔÓÏᵊ'†mÂ_ TP£aøwgU £ö8îÑNâu÷6‡óA¸'a7TFØœ„&ð$åPv/9wñÏAÖ‚iÕ‚îÄ.®¡ ·Šë&Áz—ö'¾å9–GŒ&± `%üîF†IÒõ´¬Á%}AQœ¢jŠ®WÈwû,ÍË+˜ØÙ½þ(Û¾ÐØ/Ÿf)ÜãŸQÏëÊš/B¢7ƒÁ–MVþˆž´¦Ž8·ƒÍœ-ºÿ•™#þ%°ÿ9íæx÷u½¿ÄAjOÆb¸¿;^)¶}.Û—«DT¼ÿVîß"=ÿù¿KÃp¯Fþ÷Îex­¹ßì¤=,¿Ù)⯳#6®cvâE/³Ó~«÷5Èätÿµ; zû7ÿDoîèž.ê¸FàÞwD+pÝs;Hº­¢›Lÿ7Éûÿ^âžéÖH\Ôú@â~‰jÁC{‚%n{¥VâÛs­Äm£Ñ˜\?¦1…ŠÛ«Zq»ëvNŠ_ÜÆ¡úFÂ!-iI¦g_麾,2Ql£>µbbo’Ì ãœŽ‹ ºÓT+&,? &þðÕUï .%æªbbñdas_®|‚Ä’¹Ä’7*ž@‰µ†K¬5Sç::£§³5\PLÓ a^Oë®åy‰‚hGé8tÕ;i:@ `æâ“žçüÛ &Ée",sy@’fÅ»Œðèm÷2ÚßÝŽÅ@½_eR©HÜæW’ñ É€ùã R¯GE?÷ÊØ¢VúºÞÅ)¢×®=+žw¿Â‰éy<²«tViœs•U$Ë Ê×U!;Þž«i€4õ˜2ˇœüõÁ«Þ¹Ó'°³ø¤{J‡f»Å$•ÑÅ…$ã$-Z¦w¾¸Éìå¼øßv/•7ÆËõ¹ëFx1«xñ‘›kºé]Ôa9àeV;áeúÿ•3ŸbS/Ï—bL^P>ÿ<”Ë^ä·¹a"÷jj’0TÜæ»®ÏÒÆíYU¸û– ­áﺾ´ñ¯ý¼à;ú ?šSÏÍO»?š-ÄðóI[¾â‰É¬Ùq¾°¨ƒÛµv`$·»æh¬ÑÝ:¿5ºD(­!ï(¨BÊyŸ}ZîÏÑ­A?]å>שYp‰ºÖž×P…ŠŒ4qF`z}ƒ‰®^w´¦ ߥŒ ¹JÃŽ)ïTnÚJÊ•Z“fÀœkL)LÔdÒttûº¥dÊg•cån4Vþ´#à dzÊ«•­9nL-ëþ V,¹Zä¸MjîƒÐÅù‹õ-ÎÃq™¼½:AÍ¿é|]ßâsMógô¯ûО h÷¯Y¿¾Ñ^Âõо[~¼S³;Ù¥üa»í¯î å”Ê¢FLüÄwvÕÃ|®rM܇ÌLjø t™JÆ@>>Ì? LÚ©ÁùÍ °mŸ¶C/ eîÜ0`)7§»å[¿âžÛ‚˜Çtw"Ùü"Vã»ù:þûHï7h6l5› âàðG• wguòò´ts4PÃa†Äa¯ÌâÖËUqäiQ}Oo ïÉ9ÿæ@™7kâGßL ÌP­®XÚLPxÝF΋¦ÀßaÁø~壚-Ñ=ð-¦v„?Ä?~?Y¿´oqa¦Æ+ôU4uå³RüûöÜÂíÔŠàÂî¥íä£ÄíîpÍg¢©ÉWgj Ÿrm“ª¹åÌ÷©­>~ =•kæÍR·ª‚*bdþ¸#‡ñ-‰¿Î®Ù\šsM¨‚ëkZ[i } ûx˜÷q ߌœÍGAaVñáüæh¨’ùû´ñ°†o<$i7\·øwx ’DZ•Æ×+”檎ÛpºpÀ¤Ùk.¥—&^D«ß}§ê‰.ÜN$*éİ£ _Çòr‚«Ç!`š×¹¦©®éý_×¹‹àSé×uвgiÐ.ˆÆáüÌoCAI€bñ;Òo½(Gc霑¦ûµû:è>ìê ðð$Í9u »ÏDy®râÃОÇCÏ–vèÕçÿ¿n¯õ£¸Œ¿~¯ÏÔx½ðïÅþªÔ¡â[¨Ô9Êã±\¼u`,²òÇí'Ù {»5àà £ÊøíšpäßûÑåG¬½-]ˆNàýç»W)WŒSCr6ñ4,ŠÄ¬váUiÍl æŠVý“oÿ#4«Ãér·Í“¨ã⽂s®÷‰c°&ÞŠ$ÓòŸøkÕ߬ʎÞi©ÜߌEí_ù56“´;e¤´pá¨w¿Ú ùd_íáö•øG{f®2¿?¡TPl[5³%2yÅ_ƒ)öœ¸Wuü_‘áð#cV?2þ¤·Îç(v'ÔœWMñ¿"}”Ä÷û]F"Sƒ—ÇN c§áðMÍ qi@ó™{ƒ5ñþè´ dö:£­hz 6Ö‹îgP÷{ãcmUž¥LÝÐŒþ®}¬ ´˜Ð±¦aäN±Ô2ìñ©5Õ[”¸ššõ¢q”Ú¼Š¿ä¤§|Eväô§rWNôý¥°ø7¿¼ûþ&¾T¨5"³0x|¸”0~Ób¤uú ‚ŒN¿>èS§† ®sÁ*¹x›jÞÉÜ£!š¢Tg’;÷1~lÏ•\”²iš #xÏU|ÿßz³:*Y{XrxfÈ}Iîg[£"O¸Øì@ïʸÆnlÑÜçÆky®„Z³ãkê@i+¯¸§Js4¸° “¶gõ?²é-Y¿ŽçPÎW|¡£w¡o§óQ­…;…[¸·dh,\ FÔð!X¸‚ëûË¡ÚÚF¨Ë.ªCš¤/zåô ø_Ý8ábâ*öcâŸýƒÄ³W× ^ò½ÒZدy—qÚIÎ΂G%e“ÆÚÝŸ£4¿ï·<=ÿQ†l Àò¼dv©rWkv©î¾ÛàßúŒ\å¨ÀµtfhIè»)ÜRžØíüoènç‡K7>•²šíNLl“£¤øáC§½”Ç7d·”ѵø¡^}•ŒÅ\åvjÇÕÐy{·'ÕRùÚ6Àg héQÙ©‘ôô ÚÙNíÉf]Ç<œ1=¯ c~m'R#Ñ_ÀÃrª‡ÆÚÛƒÛéèŒÕáS‚^§Øƒ¬×±e‚˜í¨ÅƒUÁ9Cïc„Y‚!ù_ |‡¢ƒxï£èˆ«sF_3¼¸ÿúƒì<…¾p†ÌhMhÅèhÞ¶Éöê2†˜·óWíþë /hòþò#Îç[ÍïŽ73üP¼ÙWQ׌ÐÖ| ü{”ÆþÆ;”a„G'i&0=*$xäâ]þ&ÚQm êÉ (0ïìÀ ÷7lš_Šü©xpWiÒÏ„‡±‘?à/ìy ÖT]GâÿžbuááÀD XÄ5Ž WvÕõŒr­Ïª Aݤ¡O剘hF-¥áˆð ò»oô¸ášnûü:aB4#¼“Û+ß?¤qÕ¸CÄþ ¸ÿüÇF8=Ü?B-ÃÆõæs˜† /yÇç3ƒ:õ”h_i¸õÀµg*ŽîºÎ¾¦Y Wòà£^i¡ ¡(¸žÝõcTº5àÇ¡ÀG87—xÉÔ]ÿìÕžòC^íÁúkFØZyy„™Öýsˆù`„Ã&ø·ö狺oÙRÁõïÊÍô¶r2¹qáÿ~"®ñ«£¹â&ùÂpÕ]<^Ír1·0RÜÒ¼!«î0¯Õ¥óPƒÿ­ñ•~Eþéýÿ øÐŽQ:×kRlÚù“Â5БknàKÓz7žâëñw!1SÿLC¥Ò,-^TEãá^º´ôª<¸œ+S×k|#·“o¤ë¢î®ÿôÉknà›ù­ÖòU$‡>½+‚л­<âë‰Àl\5ŽŒƒ3ù/M¶%`x@ýœÎÿÐïìÐ@?@…þßÁ¸f½&^mZGô–?ô©˜ÿá=Í¡œ3tebá;èw´ÿ„MñA i×À>+‚Ã.´‡žýõÁköiJÛB`··ùa_Ê€÷4|0¸ aßµ6{•]zWsv0ïü—?2˜©Ú`²U>˜Ñ­ÁªôßSq0`Y&âTKÈ`ªZüƒ©Áœ ßÕ æ±T¥[ß f–ùù»šhE{eˆ­‚ªÕ¢U ·]!Ý?Gù:œü^H,ÕÅn>f°Ÿy%à_]ñ<#Ä^^§Ñý.ãŽMšàmhÌØ×i|!n ˜_Ópøîˤög)w«ßz9ÃcSx¤¢ÆX9u.Ãç>ºXw…ù­.öû¶QVC­ÕPÀÏZúÔêu?´£°ôÚ…úóŠë,ÔiÚ(á_ò…ú‘qš…ú¢>dûàz²âÇjl\]¢ù6áL}°QÄ­†ƒ›4ðMÅጢ»ô?p¶³SwÍðVnºŽN»Ê~=ä¾J»Æð ôÈqØŠLC¡ÍÁ5B§ŠÚ5L+ßÀ#dr©¾“ÐP—þm~¦Íu‹mÁ’çʯq.-Èüy¡+ðÔÀ LYÖ¼£‘ùíæ;ñÍÀ |(ÔÀ½1¥çtkf)):NéÖd9¿FJ7JÔÆÐõ@`A­Çµ{­<¼Æ,Gù×Ö̹ú“%ÇQÊc’ãmo·»+¼-\#9œ ¯ë4‘à†Ÿñ{Ô8 «i?©ÝôI ÞÎi0ÏOƒm¿åZûïÇþ©å{ Jÿ4Já*®ö™Î“â2ýûš‚ ãõý”ËÊÐÉÌ +dži¬ÂΠ•c4 ê eÐ?NLšR´›àlð©^ãx‡û¦–kù}h#³Aw”dq•…ÜïÜåª º£àõµ³Öžæßׯ›ã¡wòG¸æ?ƶ*í”×çuJ:åc\ùC,ä¾ëTPv9¿M«yÝñIç•O½ÞIþðgÏ1¸÷í¸÷Ú˜1?àŒŸq£àžÄ`ïõ­ÁAs·&V¬ußâ%—u_dÂØ¿khãõ„ºñzø‡O° —Ö`3óØ ÷ÃÁ \ÿô–ï(™ÿ$–‘§,`‰îøàú?pz+¶¤ ë÷u7þëúuJ¡Ph ÷°Ï}H£P(r·¾ó|„tÐVÿyPê׌MAǧÿ MçòŠàø\£ð—ÇŒò§Üè‘YðqÈ1ðí[ºÔ¼LÏÏå矱ôíkDæžàOëÂ~ÀWPjB‚f|àç+õ¬“Ay}”Fîö¸qJªZ}H₳¸wš&¥½ûó¬üô{øËaÁéÕâPý9žT!§IW¤0úÂ_…—Üâ~ÏßB¸/y‡û…áÂH¸ážãõ5éÙ¯æÙ(\Øy—à ÇÌOw ÎÞôðÏåæ7“¾Ó‘€3R“ ôŸºà4ÏjšÕ(ÅXžë@ðŠ ¡…μ…A®zXÊÔ4 ×&kœ8!\¬È¦ÏäÙkx`„š°u½ö”Ð?G¨$ÿ”{ÞQO Ñ|{žSí!ñgPzéUñ)êïÇæçOrBA§TØQéKîz—˜ÿ¬¸ÇÑv§Èíz—X¸ÞÄîj?A Æá©s´=d?¨Î5ÞÒY9òé§Ñ³Mk¼—ë"3‡UdƒÜ÷¼Bº7½¬Nýë^>vMuëBêÈëPÞ °rúúÌÄò.vÒ›êC™ÙJkžz) «VåíD¥:Žã‰)’Y×]¡ÆþÓGw øÇòü«œ]ì=&¹êW¼ìnÛ«M³¤œ_K™kÍÊ^Ôhšïd*sþȬ±R)}1tO¶ØÇ*îÌ·QñúÛ½ÃúsxÆû•ãõ&£\p6Wy2ñR+ÚTº·}ÑäŸýÝ÷´úï˜ÿçEL)ÚEËÌ¿ûîR^  \åzËëÝSYª½KÁnœ'õOôÎsÕ.éí›ÐˆÏô4Kö‡áõÒ© Â%+^ªòrv÷nÕén«I¬wìŠq´y…²ÊI”Lj”VÍfºg8eÿ¶4G9‘ˆSŽL9ʇ‰¸;½Ÿùè0ùšá4:€ÆÃ|wšð¢û÷OàÝuvßm£¥Ùê 3¨¿CK¥”n#k[[XÛí©óÝÿ!MbbLÜ“ù¿þo*õý_‰Ñ¹G¼³Ød*™ o©ðŠqô†}è1d><À ûA9¥ ~•G™L`œLÐãß› 4þ†¢ð×~bìØ±E»ò{ìá‰å•üþRPEçñ›×ÚÄ_¬øžÕl3÷Æû;ñ¦ŠT#«ù,Y‡¿Ñn–¬M0Ö÷³(þÊU˲c…âI” ®ñCÜÛ´7¹Z–$·ZÃIÕBÙ~_Þ†*ek'hÊ}ñçǘ7°µ²…!4MF}uUÚ§Ö¦mø‹@h”“Ã+ÎN8 vrêÖÁ.Ofë÷ ¯ Ü‡—­vDUtF$ìL¨ty™í,kŠÃPhTUt‡©·ï°Ž„½ØÂa¨bßÿò¤;!o?¼”òöëIyÊ$j—ÙZ=xŸ¨u;*YwW´Sûm »öºê™õ³Õ±:¡¯Id;+:ÂdCuq4¡¢Â=8a/«c¶]/·vKöC ö]Øu—~'³•K6e˜­QY+›šecÖOYÝËÛ xódy8´Ü&Ù?Õ~ZjíLøp{qI¬dk·M8€wÑ*ÌÚH'tX‹”מwVJoJ¸$/ëéeMž“PÀQÆ/F$ãó%\* ‹¾ÿÎÍ ¸MÜ£N{"†¥ÄÙožî ȺágÄÇÈõrr´þK9îcù™[ßìîm¶dö·Øš`Êñš–‚$<•ÞçI1ã„-Í{Ó² ð7ÁÞ„—Í4âU£6ó8ö¤™M49vš5‡.õ™0OÊìï9ÄZ€þ„zC;¦–ŸÅ&źßØWozSÑN$Ñ%Wè:ÝmZ GÁU>kwó ùÛ÷è­ï.áê¶!Èü õñqª‰gÉÃK²¸æ9Á,-‰¡Çµ6)#ží–æÀ/4¹v˜ˆÔ»·þë½÷îâ)0Yæ:b[Ýì0Û{ »¢cp…,áÛžŒ M+k/ª@Œó­Ä–ÖŠp²á2àÞòÂw8í·o~F˜G²7üòó…=bGü¯ô­rÌyä­ú²éÃp»¶|óÀUfY«ád28°ÙÙ¦¡¤›£ÞI—w«¶Qz|ÔõWXo«p´'ñ¤ZË{ð;C’py$ßnE[X+=àÖº4ú³‹LQënþg?ÿÓ€ä—ê^{¤üžëälêa'+¼ÀBá òȿɦÍìd—ßNè`‡y/ OJšüéŒ`”G–ËqMòÈWõÝá49n·@嘣t™ÍgÑæ¥Ô7âeÖËøoâGÁY´}øF(«`t¥ sMóO?æãÆÝ"`ºu†Õà½3TÊBMŠk¤¼³®ú% ÒväT—W(vS€ýÂb\õBYyb£A/8ÿì¥c.T6-kF‘:H7¬›ÃJTüßc(ÆËa÷m'°‡ü¡Hx£â¡¢SÓÆÞ¢Šœß,Ñ1 Šå‰@õÔ> ïSümœ·:[¢dÊ “Áo¹!’›1‹íœ2Å­c×–‚‚3BtÄÄøoøŠÞü¬Û„­x^å§dØvžmÿF÷% á÷—l»,dfŠYœ·¹wa1uâPâÉÜêÑïÖöäô]™| dò2epÔˆ3gp¹átÀçzr裻 Ž=Zw¼Wˆžc$zŽ÷j€ç¯#ø÷èžc”î±þ"¹œ€¿ÊÑ _»O6´ì²Úù:¢ «òŸ‚ó¶nŸÈ²ŠwhY¯‹®ÿÂKùì».½ÃGën£l”ðùѽ¦ã°®D/©g××mèÅó1¯;štùkywƒÊ»ˆw­ëÞå: Æ™BAy+¾ÞFšA“Ÿ]UF$Ý m«³x~P—Ë~.÷±ë†cìâc¼˜pô@»l¸Ç(¸ÜÜ¿z —¯áC›­ÚjvâÒ;îJÊ{œX‹òm§…ï® /Ý+14#ï¬ûÊNBÔÔOh”N<Ò¬¶ã‚DpöoG äAù×HZ¾ aà¿auÃèŶpúË\¨‡¦%Ò…råM9ÎQE_XXÄóN`8|Rd˜ŒyJ@Ÿ¥'*Þ”ÖÐâ[“®ay÷| Þ ƒá0õ#yNÃþ©—í«¡u"9$ZÄUz¾«-„nnS÷± nÁKú¥ŸëõÎo,Œó;h2¢NùŸ+ZÒ‰þí-Å“QLœŠ`eåÈ'¥’Ý!úXvV»>Å3¸´Hl½êsàoTŸòo—šA]e'Ùšõð®õ$«(uŒ†%ª/Þ‹¼3Þ²wa“ô€´«Ê—6asކ.}·ã\«L¸ÄŽ8Ï\ëËÖâ¿ý Ï FÒ@/j=ÍT¸#í‰Õ—ad¢Ü %ØÀ8ø·:"þ¥Pôˆ!ð„û'¬—ž÷¨ŽÀ¿÷›·ða Þ¶¸HØŠø'|ªh˜°_Ù4V^¶j,s½‰@lßÿv%–SA®®KÿâÀK2¦ÂÆx^BJðAÜŒv¹oí÷þë_ëù•v¸´*¯ü S%Òüriþ£¿ûk5EÍÿå‘|Í•wó|77U¹zé|*f:Η¶ãÜ×±‹Íÿaû¤1»WÚ/¢›¨õ <­ç-ŽÓ] ‡|·À¯yNclE|õª·J÷ËÑóuÞÞÆ±Þû°j†’÷*î^f(o5tyço†ŸŸ¢ Óe+ýÎâÎv¼£Í˪çí¼bfuvÆSé⾨%}¤ôµE§tM˜XMWˆÙ•W\¸¿–«TAuyû®«jBýÜ¥ðUËðnB¨æG ”{t{ý7ðÙwIyå¬9ú˜àlFõޅ處-Á¹p‰|Ïï{n’6á¯ÄÑM‚kî¬èrè„{7m Èx%ª± jl¤+[cÇ ÎßC™\%ñ,FÿÑÛ£X?L~8Ñ™<ÓàØ ´Ô´Åú5Á¿Ë\†^yt›à“]Òv¬È)6‘åñû²z\ N™£:V&bø >S{Õ©]¸d/ÐKDØáeo’“>óÍ.ïÛFè{¨ì‚s*O½ð7ÛÍdŒ ¬ŽˆyŽSºÔ Û‘n–ú!¹†»°ËÁ·Mð#?Lêfu¿6ü°àÄ«Ÿ¥È μ…ãc²Øšgsc°ý‹s¤œú262>)?û1P£çt‹nªø5[YåVT=Wœ2zw`ƒž¤M8Aœq?Æ9êºôÌÆŒoÁ¦-r«rTÅʤ¾Ó-§P ‡”ß5EpN¤= , R»/'-/5¨ìvwy§Ïä,¤Ò³ôì†_|г@å©.Nü²Œ|™£Ô±ÀíX¥2ýegyž“z¡•¿ ¥â;˜î’ÇÚe.Ð9Î5å(S t\ÞNj=xû+;W¹²€<ÄcÅQ@&ðmâíeø%+'W9Šj!+WÚ{(­E´«"e°§D½¸?ŽñEð§Byw×± À“9ï¶Dv{Õú~v–·lQø³Ðœw¸R¬ÖÍž?Çk„—¥-)±°8`\¥”bd•·u²5Ë7Rb$Z@äÃõ(fok³Ð§|“D½M¢EHxú-\ëéÙý…Sjæhˆ‚s4‡u"Àº`…2 ÈýÅäO"õCªrÕ‚f.8ñ¾m©R_‰ÖËÉ›÷$ØL·}iÉ3 ôëI½p}‘즃ÞBn•ã›'`ֳ–*W9Þª=YºÏDª¤žRK‡àü2OÊ6Ì•oP©°e¯÷ÅH÷wU¸ÃX5)Xø¶@aáÒ³Ô]K7*NØR¼Ç…{oÞ 8ïc†ùCu@ùF]7¶êþ²b^# ­è ”-ÌNÜ“X»Ñ§¬y}5Ê Þ¨å‹jëYlnVþP¿[ ¿¶³’áEiÃ2uÒ1_‹×zÖ’~va½”Þè8žXÿàLEÍήHi 1‹½ATIcáÑÞ mµÐ”gJ²+b„´ÈìqCßj—*égó“¤ço ó—¨8™D¤;ÂOº½|¤«WI÷ Òãóa®rU‹¡ˆ¼Ñfiœ5:ºlJ óZëp5’ êÆKÏoÀ¯GXÁ¡ü!ˆ³°¢„ê‚:X†YÌŽj û<*WÒ›8›#o²HXqâÄçÅt™^ª¯ØÖù˜ïæ ¨ ik s`o|^<ÏárbT'îùä6øãÒEÜ.'SS¹ÊäR_#_Áº‚ Æ}Hð¼t—d£÷K¾v.Ðe{7c©åÀkHžf÷iôuÝW‡„|ö>üÚF†À;¨K"Û*BF‘•‹°|¬·R®±K*hò‡R¼5hæ!àé ‚«™„èejµÚzœT€&ñÖ¤VC MI/¼„<ñT%[drµØ¿‘ÒãÆÀ»¤¼—hOÑå ^¯(vQ/¸Dµ4a$ʇ[@Æí|«z‘XšòÃX“C‰Þ¯‘¬ òì03Øé ÇÙµ½Ék?®L‡¨s‚²ÓäÎo'œÎŸÀ3(ŸQþÀÄÏ‹ÊÁn¼©H*8ÎV"@âyn³S Ï×Ìzœâô™ý¸;™ ãù"´áùHaÄÃô&.×\^–Þ(N! M*$ùS•ÿëR)nK‹ƒ8HŒnq ËíC@ÎIŽËH™]’驇@£5=¥¥À2ûÖN³T-܉۔+Ñ ´`Il‘ÞhÀvOäßS*ÅlJ¨‰‚Ƥ©mù=¤ñ—¥äbËñæ4(`ò×ô|UêWR@ Lí’âŠ'¹êY\±ØwC_Æ&=û`€¹–B[ Vĺô}ùt·FS6~Ãm ¨‚ßH§qO÷zµvÁì–B)èõên àª‹â¢·”"xG£üáëâÍ~Åj{ïK­P ›¦’  ÷‘ìgKV‘t>^Ø&f«BÌ~<(õ,{‹ú‚žZÚc½IKó ;3 tno¯¡xûu; _<›q9ú#=UG+h)‚7gQ„ÄlPvœn’'böFô³G›˜'‡p/ïL©døP*ƦØœ fú(M2}èÚc?çí)Í5¸ê‰ °1µÀÇ–"Â’àj u£I2m Ø ¸¾À71J%DQ{˜í8K¯óª­‡ˆ¬ˆ0,ÖCù“J%Û!)¯N2=¯¶ÔU䣮—¼ƒLä[¦e&ß"8#qLéÇùÔy­‡ …à %Ûqé)•Æ2«­5´€¾B„–W“ÿk\ƒÒk¤˜bé)l6ÉÚ˜ßO6¹¨”A°Ô0ë~Á¹ ›¬Á ½ýíQÚµßÃû.>àk¾j¥#ÔöZÞ٠ð%{¸¾¨(Øåó·Hl»ÿˆËØOÀ"‡ö‰q0˜€`Ê&eó£ —õ5ëÄ»å'`ñm€^Ÿ4ØO‘ÖÞà½W)Â`üôiœ‰«ÕÖñ-χ`P^PÊP>g<Ÿ;Nƒ ¬§“ÞŸJo ¼Y4ì ÀÙÞ-øGÉC!׌ÏíBŒL5±‰&)ýS)ÓäíµÔ1Ršaf3Éh(øÔ»u2¥ãøI&Òý‡^Õ¾øöMvù,Q Ø£¨lèŸz”ϱ"´?#ʱ:i‰Ñå•fš¶žö`ÝÍ;kÉûTŒ!ÍöSïd8åÙ@»yŸUã"Ë×sKõœ¥üY-‘÷) …ö‰ØMÙû~øÆÚYYôåž7}–‘×þ©2ØWNqé&Áîý v%’ð¼]JµZß೉&¹Ü•SsÃiöƒô"¾ dÓ†™i¼3IÏ6è¹æÆ]ËÒ7€ò™ÜêÆ§,}+³­çˆ“úø8i}>¨2[-1+Å8ɺ¶êÁX³.ÕQaHÊ۰𘔷–å5ÐÕYR|lÖ{NÖ¤%&6W_w"~âê_®A @ r(@ÎD‹Ñ~%ÔB0;ceNª $} ×}€ñyÉ;Õàþiõ)’6 PPsI—=éål·à| _e\µ´ƒ*ÞÅv¡LH.–V^&káb ½*Y£ÇÁ¬[Ëí'€S᯼¬Ø =Ei?ìҰ̉{á6Šñ €ezÇZ,£@»$ýí&G¹A2#Ûƒ‡@¤ï.ªàÚÙFf€9…¤ÑÜ’ö¬d-êÒ#¸tz½|\èÜ”òv« /DŽBòHˆ±Òƒô<^¥ž$Í4à†ÄÑI µŸ” vKã'ƒ–8_J?+}Ì5zK§T„].§‚^ÂÒw½·;©‡Ø7†lé\xå(jÐ9•ßW6½$éSÝ; ˆñÎ…MÕ)tG1®‡¶]¬”´ÁÏ¥é†ðÁÞƒžg½1op Zè>fài´¾>ÃE«¤™ëä¸ã†5#Æ8cIÞ’¸v?ÑÁéÙ¾_N¿¬äàõ¨éÇ9­óe^ÍŸ e2±ÄH,Q@%VÒz~]‹0ŒqøwºoñV ‹Ú€¬ÍínƒªÝ§ÛÐIFQpÞ ¿Ür·Y3 ‰{æ$}Kù⻫ހ¾4îõ‡ í h ÚXAÜ-19 Ìz1þ²|€âü“/b5±<±6àj¥k#K?Tê? J V Ê’HM J°R°±$Jر»ØºM Ÿ'ÅMð#¼Öž…ÛÀºD)<ÝSmm"œ‘ôb˜àlàOÃg.Ÿ¤=ªÚjîA6ÀÙƒ\¡ŸÛN€%!¸Þ6àÈøjŘØÞ^tR)·?Jò$;—Þ€idkT0Hº$}["pÂÙâôzŠ÷mµ£ÔNl),¨÷…V1k9÷›€%a±näM‰µÞ¡ OŽž¦Lùè‘ïL¬M²íÊ€ü C7ÚeºÅ™¯6Â?‚óûpMô{¿ñýך|%¯Ð9É‚zÂØÀ˜clŽ¿Ö_°V¤­­5œj¥×KI%†gÊýÅÖza³­>Éf.¸#É^.8ÒI^bÀ®<ò@>ͳËQxhÚªÒ(¢PròØL0.£”·QJ7±›%ë~˜€T0NÀ€˜_T€å ör×-‚‰ÙOz’}?,Ë¥ô&×ÉzVVÁ¹7X뵺ÖcîÑÑ}ç‚.¤õjÝψ¾\õ8¼BÁ…Á4M²Âý4îš4à³çu‚ÆB³àаãÔåC}êç#­áº^x?}«–òÖ³œáý¼ýnP'eS¸ZI_p¼OzN„}cI$Ÿ'ÝTl¯±Øýv :÷Ù«~"KäDÖåÐXØ54f$Lï.Y³ºÑóªÿ´*n[¹Õ„iN«VèTÂñ1¨AMä{åªÿ@#¿ üBGp_€#÷rK¯OJ7 2í3ç5Zòß¹6ëñÅ¥‚°>G4ް+Ñ­‚ 3$¥ŸžÆCK*ḿӜéÄYøyÏï7e¨ïP¦‡©³€wÂàD¸ñ>íÁËf½zï‘ÿj7†¼Ô“×wøT¯}öÏ·ûßšÛ’¨§¿…—.Ö‡øèKéƒzŠK'pu—<9LÔîBz³;±œ›Þìdó€[<Äl5‰µ–½°ºåÇ wFÃ"7ÊÐC+>?‡®Ä¶ÍY[ TåÄ”’¼z‡gxa' .®œ: šë5ÿ°_Š4pb¨Ôiˆáï×'qŒoØ@ÏéüÉ¥Å4^lZ‡çþ¤ R^óÓǽúøi:Ã+¡:ÃkÍ?Ag°t_«3ü¶£ùÇu]÷OѪ|:ÃvÎТ34·7ÿu†íÍÿ ¡¸=T´»/†ê ‡Ct†iP'DgXª3üéa×ÿIgXðÿZgx¶­ù¨3ä©5þ7:ƒûÖkt†—Bt†îÖæÿÎPÓÚü¿Ö¼áRˆÎ°¤õ©3¼¢3ü²õ¢3L»¾Î0¦=Xg8ÖrÎp(Tgø8DgøGKˆÎ0IÕRÛ‚u†‚–ktLþíÓbÚ~Dg8¬35Ò1\v«­¯ñç}!¦â,?9θ.IÔ”¤9w3ºý $ÜY¾|dò q¸?‘Å^ô«+' (s(?_8Zg 4ÎcZñɯd4ÄSÍW¯ Ñ,1H‹‡ð,<DØ;{­ÑÙkÕ­^m}“ÿÁ]%Ý”4º$ÒU[ìÂÄ:‚sy<ñRêÍj:Þ ;¨€ÔW½X…+.ö…Ûñõ=‚32ïSÀ ¨xû2•D%ÖÃ9¿Œ¾¼Q†‚k <¦òB%†¾Îr»»Ä0"ù—ËÉaÕ>L*°›ñ‰‚µé‘þÎÓ#­½Üì3©ç#¸ØïØÎÁs$òÁ‰.HÿZñµžê<¦­óN$0ÁÇa)7ÀÅm;\AÃ^ðév Âç¿þUocŽR±Œ¶öAÛ:x4bµ^0¥Ø{GUxáCÅ®D ^x”‘=Ÿò#i%ƒäìšÂŽèEWüC¸…ƒsê>¬¬QÎ1”V;*%ØòáåCýeÑS e7©e@7Ë|åžXþVaç\ñµÂα'ƒwct3ž;æqürÞ†ìñ¹JÏ+t¼Å¾U.Ú¿¬LôñzWèX[t=P5VWt _íi\ÁO*¥c |¬îðOÇã€ôâ/qÅŸ R(äžë—Xß|Fɉð̉¶ÖùæëÔÒ‡Ö:’Âcch­žîB³(áA˜±ÐŒ Oª3&¸.“áo‚þo[1¿fO^ž«|÷„Z‚uØÃå Cdý¥‚7AØõ<Q ÅÜXóhÄ3øè¾ ÐíPP^¦¥¡y™æ\Å«{,AaW3QÚW=³—2û3‚³/¾£Ü%X‹ZTL†)â¾ÏdÒG}é(b>{\ªZÜls¨«˜XÅS :„³\¼PRFœs~8’\GÁkfÁ¹ðfŒK(­¶:I{o)‘©Œ{xa;p×ùX@•c±>h¿â‰]KÂ8÷> ßFFØoMUA2ô¾K+‰ärÃókþ¿—¶Ï÷òËšîè‹jž½›ðƒ—RÀ"úŒò^ ù®-UxÚ­í&ÜøŒ¡‡Òü~ª‚ü˜Ø÷<|²•Zv²*u$ù7•ôà£Xîµ:S,Í /HyN–WXMéH¡M7an`Pj´“²7ÙßD5°Îm)Îm/JÒ‚U\å¢çú)é[2I/ÙKGõGÛ¬ÔsÙ¹‡Â$gÂM~Ñ6KŒF‘uŠ4þ–ææÏQÎS˜¤—rÿ·íJ£P̶N¢‡›“þª.”ëð¾Ë6:õ)ÿ§¡q˜­Prá;KÍò0V£·&THöBýŽî;™L…Ó× Ïbþ6Çvüy¨À¬Ì²ù¬÷P<ïc-ÄË^à K4^º|ÉË“·¬Ë•Ó×fʶCY^{¡×^ª4Å4Ž]ñx¸½”Ã$¬B±*Û7ÊÖC#&ú­TxØ^ÃŽµ¶ðsÆ pѰ[¿Mâ¿°Jái<Ö¥§ó†S-ôgáФ5X,_ÿÐ0zH¢#¨‹ñ¿öhÀFÒl×þÅ{r½trdR¶œw([”ƒkÚK¸ "Es–lÛ˜•­äüU§›Šû¯€Æ2„Tšìªñ3Ùuˆí[ÞKš\VÃ&—šèª]q d€ÿ!…ñdm1RØ~ÄÑ<˜Nà°Ý 5 ¶u޶ØåË;c0:†Î:žg¶õÕ.tSXUôŘuµ°ŠøÕöâè¶«vI¯‰’?ZìWíÒK<•8¥ØßK¸Pú%^Æ0:ýž™ ËH¤‰@¡ësÝqÚẕ3ž¬geØ“gɃx쑺^a„onLéÉ©.VGr7ÀõÝŽÅoZönÂ_ ô^:#ËÿUNPÏqp€üì-à1ºùMø, .;]Òƒeû…•/áþ]÷u»uÐUqƒ—gû.´Zò «¬èŒ`GAôóû´öf-Ð]eÓ¬ÏTA,[æ B1:âäi®õÕb¤sœ7LXzÙ=ÏË•ölá·ŸÁ2µêþ«!aKÊ?ÆØîx\ª–ƒX@Žë!MãŒ1mÍOgŒ„ôuõ‰ñ¡ ŽAuGKBîÏñ}«£`­>p÷6¿Š˜Ø¨`#Sï¶®ÂÕÐŽq°´:>‹ñœr:p• ñË 9ÿ‚Kdkn¥ßÀ5Ôfë·ì0«´|±ØhùÂ>´ñ›Ãeüî¥;¶:'tIô"¿>±6áØÍñH»o#Tε‡Óxa;]Û}:ÿJç>¿Ûûi=R•žÁè'¯9Moã4½ÛÊönÂÆÜ?C/ï1~O5’´ÕGÒÿhñŽöX&I÷ä… „Gâè$ò²®Npqàð_œ’DÕf•ªMô ÿU^³ú©Z;~#7§lLâ&›Y.ò©ÃÿòoJhO¬e_°ƒúNÇaÝ£äò²nQ?…u¶Ö»Ór|ÈÒ´0:±…Uº‡“›sµ«~¹ þ8*ãA:¯èë“Ëy«YUb½»g·ïzj?H˜kÏò#¾p>ý Ýx¶ãÚs!–Ï&È…6å© Ï5È»Q.gé/Ù#çÃ|#íCâ €¨I®R¹3q'gæFõ÷ ^`[±D”þßó(Äx>”„ŽŽ‚}IŽŽþ+fíO ‡sxXë%T"l‡:³¸T<œM4%Ö³®ÅµngA_VT’R­#ÉXn°ì]Ö̦Ášá¥-¨Éº¯ÀÃBw™^ÐhB'¨E°¢dȦ72•“)åZ˜/Œgd–­_þ ¨†5Õzj¶Â0Á~Ù³Ž¦™U%|zæ²Më¹] o^z ±T9ŽSEôNƒ¥bY39QhÒ¹{Ò¤¬õOÊ!ʯ°ùê°ªÕ’- rŒLá} !*l=f9Èêï€rOiFÔNSQû"ÊïÄûˆox>¥q\ÛéˆKiI$îº<Èš>6¿ÌØNé¶Âíøm¸à¼[{-r_Þ¢Sm‘.SÚKþ±2jj4•HIî|R’‡%CÙX°†1õˆ¾§îèÏ!)ïMÂW¸#Øó9wÚK/”3î~¡,€i•c¶c¨¼@®(xSñm˜ê¸íÿVˆúæM–ìÅî?\%ôñQÐ!D†”•þËCÄëñ£¡¢Ï}sè6^¾à£…,`ŠuGdz+1Äc‚s|·JÙ®­]xWRWðN´xM?žÏ}GbõíæFÚÑkv[úw…@ÕÙ<’›Ž6‡^k¶>ôZ³çà…*d܆.¿t wèÄœ¤´;¿>úV“êÿ=I‚ê;õ *áéñß¶˜Ò¡ìʺ‚úS¡yÂÊŸ}Ëe¿ÓÅ}£EÜL¯ ­gon6kÇyWÝ5ãÄÔAãÌñjÐïX6ÑèxGh÷‘ êÑ/;áײûü Ó¾?X¡­ð8VHR+ÐÙaÕP¤j¾èù.Íz¾KÓ;h+— gç7>ú¸OIöRq¤_üuqgh;Ä0§ö,L.ÛêkÂùŸoüœ%¼öMGüÑnb¶³¸0ù)ÖË¿A#(h¨Ty·#­é@^ y ²–Š=p.Ò½ä4ïK²íßÉi^¢±n¹FØ#kgŒJh'Í~X ­LÚàÐICL©º+æÞÝ 3BmAÃêÖÜ!@Md„pw÷WÍty‹æÂ¹ÈÐ]Kå´ðmô¹ï?Ø3týâ, Xq¸ø›Ý·ž À5ÐþêW¾Hv¤ñÈŽ%‚«ô ú´_£ÛBªÂJú“Ô¸ÿz&XDd~JØž÷ƒØàUÚc\s€}'6ˆÏãöoDº£°[<®¥ ¬úÍ'ƒ‘yîPèÚä^s2D»zÊ÷Â=Èÿtì„ïé”óUq Ô˜}ŸëWÍQn3ãf¾­IJ‘¬±’-ÎÑùC¤7R´ãYA¾‚æØS(ÆO:¼±Ëc•a£qÿç6xÀµS’®<3É•×(égõP'¦px «¡‡y*¦AÜ-ÿFé!#¤¸§Y^cECÛ—PÉòÐñèóhþŒàÞRÜ ±¨½Ï)ê†ÃŽNOtÙÔŽ\^LZ}UÇ3JG°l±=¡"“M8)^ÈÈQŽŒðzkñt] /Žw‘ð>v ¡¢úÁUtONЧa[-aØË÷ŽoõâÉvýÇÏâ¢Ý¿u'aïE¹Ü~;ÕUÐ(ö‘SôxH[Ï"íYŽÎ"ñ×E¸è-LɼE“ºY¾(»TÝ-ÇàùR)½‰¥›Ìæa'tº'ÌÐé ±BøÉ6D½ç£úúœ¥/Œ!µ¨7~ÂÓv¯aL`S?Ø}/zào'ê ãQãø÷Ån~Ïm=õ—Ç{™ ç6—Ú«¼—»PÉ€ÐRÐXmUÐøæxM,/­6l8> ÷ȇñJ€ÃF>ì´Ö$›3¡x8^FÐÆ¸±DňŽM¦UœXÑp E*ý¿Tºr93ºË Æ0›ïÜëpY1ÆgÅ(ÌÏ]VìÁck‡:ÅÅQ1†ÇLJ¸ƒ[»È?3CmX úúÄØ}N¢zM´4“ÇÞãÆÆyÜØ…|Çnóš7ïl;)ëÈúŒ.ê] ©‹é<Y’‚fæŸë…354À6Ê«»Óò¬hünÝèbÄ#PFOÚ\–¡¼}ýVvÿÙ^䜬ґ,ûÁÙ$Ëæx½ºÇ0Qz1Ã|¡ÙÆeÕ/ç£8"u‰t<ŽRÁ^Ò5ål•]~¹Ülq¹ÛÕq¨ÀÐpGAg®D»þ¾¹4MÊd^%E–/*Ä[Iq+I‹Ê­÷ÇzLÕJ<{ÚD^lä+&È^¾›Ÿh¢™D9M¦öDš!Ç*úô +ÌP'Öå¸r ˜F=J"í›fÏ4å-‰Þ½:&Ô˜Z^kzkI O[ûŠŒ8j5Ø ºT“ÚnŒd³jWS”lm¸ˆ¬Åuq5žÌ?yЬÜ0¨ÍUŒ¢WS(ŠFýq| ·æÌÅÝš]hE3Gb‰Óáë(N+’Ü@®{/¶ƒKù–-=‰±½¥ÜúáOᓱñzm¤}.¾x½¿VP¶©ÊöE÷žRýýèΈv±‹²]A#ïÑ&¤=”Í™aóÔqYnÍmêiÍÏ¢m±„¼¦aMÚÝE©éu¼äÔIÆö…<÷&L«fKÍ`aY}ªñ¡¶ T®e6hòˆ*ŽvÝ “55Z÷:!&u=žÎݘ©{OÿbÑ­Ò=v²¸X0E’F“ã¨äñTûÛPu§Æ¡ßjĸný ‰4Ý ¦˜¤Ÿ§mtùyþVÿ ºïÚÈr¼¨ÑÉ¥ °øDpý€ž€À©·(;l å\sË$ZÇáøÜ)¤Ý°“HÍ5“$‡ø­ƒ…‘öNšM—9M¨N ,S£5ÓþœVÁôx¥ó/Øÿû¢ûÈHƒ‡Ñ$BU³jsnQÝÁmXÚ%âÞ¥£ŸR d3›//ÒK¨=<ù„\ƒ`5ƒ`5]«GëL»“È‹Ò. ‡£æÃĽKyXcü_aç5†¹’…0¹ª´`rÈÙÊÀä~!­­‹WQiÿ9$o `d›n&¡¸&ƒ¢š4™iQJŸI,ñƒFép?ê$Û✹ݕ3œB ã¦&kì(R(Òä^c£uÞ(—¦«0ºèb“tžì¥Ö$Ê.Ô ±Ý'c¬Ä¥¢Hì»®NºHc'hÕ̯jk£»7ª€×£ámж®Åï/¨ò¹»a¦zbqwOy¢.‹FTÏžŠ˜·—¸M6LˆÝꄦø~ö>Þïd˜8îÞUZÌÛ­‡j#ËÇ»aÆèz–½©SâíYÕû-•yz z+†#­¤(‹?6X¾ðHå=1oÓHÒ@÷3¸Y*õ²R‘O…(§AT-†ჼºGtó#{òc>Ã|à˜OïÝk$EÅIBÁdø`ê`ø B0|<'ÃwA>œ__ÇsÇÖw!>Ô›¸ †ÿçG ªµ~%á㟾ҔI@‰Ò3d°™aMëµÉ™§H5Ÿ5ÝdÃö-š¬À>–fÄÑ£³’Ûä7¯·œe´ÅÙŒ6Hë¿$vcxøSÁW ~t‹ÖA'à?Š•¿­µ€c`M$þâϲ7ñÛÔ™Ð3œÔ:ãV¤}×)ª w¬Ð¶-(¿ÖØ ç]£ÒÇQ]c“ÌC$t_;]"]Sªá°lz8PÐÆyKC–ÞÒ®¢(˜G2\^|ŽaJÿ#“dàþŒxJ-Ú"VÎÊ ¶˜?=àš3Îfe$íðiMªò`W;†‰;ãìFgÓ`"Z¹§”úßY†—ð3úÙ?QÖÜšÄçÈ–› ÞÖ¶,ønÄ5pƒEbÔÓï—qmÝHŸü€½N&„‰£®3ºXvo¤ý©£~#U‘Ó¬ÛGʘ†¡lѻϥw‚!ìôà #Yõ8ˆyR?¤¡1E‹òÜ0KDíéD8ƒЫñi¥+}æ6Ðrƒ$ŽtRÆ£qÙt¢–Ó‰×PRN\@ñÀ1w*¨õ¶Ì“#bе‹«¥iÒ( 2ÔëÂ’øâ‹ÇB UÞJ±Ù4í@Ë;n#='^Évô½ tšª’o}kø^™š!mMFÀ']« 0åìUX%Ïßs£7¨F<Àè¸T£gRSÍûj£‡ˆ4~µ!µ8®Œ(6n¢EÓ3g¤ææ‰¹]‹Y—'àV„.S÷Ý¿ª«¦GbáïPi‚I”Ó$ðiõ§LBd7ÌrÏä ሣ.N'žÌñü(¡“åTÑø8Ì%1éµ®<ߦ’H„YÁü!à%§‘3ê,[fÎ)íKwÊ …¤Êpóì'µ`?ò¢©¤ G§…‚Ä7IAâ(ÈŠHl ¢óá³ÏÚ„·bDßÛŒx=S?¢æv´Äèë~˜ï9×)k°f[µÌúIDÕ»ÅêòB‘D3 Ô™:¸Ï)ó¾ÏšðÎÆ©"úºT"ƒì4³âñéÖV§>œ¯ÚTµ8á>ÆNmyN?¬¿ÄÚúÛˆ3—’ü÷’”¤UñŒˆZ×1*‹ÍgQ“‘{Dj{Z¾ÿ°r¯¿é" (/þœßëñí6ÈOþ|JÇ\ÞE(—ÙN“—Øèª)iùÞ±ZöÆG”pÝú‘Íë0åÌ_Q”xq@6iè.Á$–$q{\$fAÊ HY,÷oŠ R²´ÜP”,Ô(‰¤XJqRóºÂßï–… %~–¨eV¼P, 5\‡^¹Eß)k7‘ö= WSÒòB< ÚHà¬ûÏEž°gQØö—Dž kPš<˜å©FœËG\ótù˜–“_ìÜÄuêR`˼­µ ÐzÅ[Þ#¼eg-ŒÈ%›,mt¾Çœî5JÏ‘g™–a¦«pž‡½T¾À/Ø´Ó™©>;Ä\ÉZ‹‰’Dt%IOeêÇ\hå÷dÊ|&°Ž}ëìR«á%Ÿ¹:/²IN.“­ɈŸ¸yÄÓ^RÑðIF.ÐÎDö¾.ÈõUÁeãwŠ0ð„KgmŠã1ûAÀ +‘óØŽ!Ùyúý¦5ßæ4kVÂ'œf%¤?AgzÍúVÐD³¾™P˜¥ß,å]YÍRŒæÓn}9™mÈF)•NÎx€žÄiäß!/—¹¥r¥.&Zé›÷¦š²hÍGsªH;’¥†ÝX—M,Ç‘ï&Ñ}©ÞOؼÇùŸzúS‰Y²^;©°ïÅlîþ$Àlþ'´ÛäBŠÎUVCcfEnÞT$7e ×#7Ç•‚ܼ[é+ãúàØO溋µZii`+¬_@Ì'_ 8û/Kü­0…o~‘~–çÛ1Éu׋ͰkJßDRâ›—»{ CZ“hM¦¹BÖÆÉràVêûðÕÀ ±4»o»’UOÀh#±ûƒ4ç? Íiÿk îšbŸæüb —pê¸vÓRnÄQŒ`·1ñ.eqzËr»Ó[q¦V²#z£XäîŽ$ÉJ¬Y¾Ís õä=¿MгÈrcµÁ™Ÿ,]•1c â\Íî ­·¿µWpx@H©­{‘ ‰9ÕZíG/dC !’ì —$ r k^ðcR¥()½2FAúB új6ªÚ# ¥î„Z©Öt•â; ¾ß&êo*E–. lõ+Ýó.´—¥[ïDRWJõqéñDwÙê«×uAD7¢l"õ›5>Kz³ Kzã.ÌþB»Ã\âÿþÛAœt܇X §xŠ(ñ¡W) ÒO•~ìÃÆ59Pi,•Þ“¿«Öä@¥gew£<ƒŠ,J½œc;ŸÏaJÿ>Í”þm–Û¯~>‡)ý2›.ø@1¥¤Š?òaíðNŸ)Å¥æ}©½;}k¾ öÿ¼?ÈŒ'SZßzŲ­i'¾‡Q‡VŠB|`)uéÎðàsxµ|üر&ä+0*ú£ãUý½¾5*¦”Îþ|/j@üõ°R^¤7¬Ïå«s°Ò+{³Ô¿v/¤^úÀ=šë}Ë9êr¥;r¸Ò2 àJËÝÝX¹4S„Ÿ‘+5æ#Z𯼗£GZÔ¶œm½ÉEK Yꟳ´Vz¤6;ß$ŒŒ´ïÅîÇu +ݦ°ÒEÆøeú| è›ÑßÔlëû«=®ô °nWt8JQh釿V5+U59“–í‘î–zº3¥úáîÝ¥@J/\ÑÃÓï˜%¿šÖhýÓE—J–K¼zÎÑßö胎D=W/ãÛ/&öõ:qxs! h9öµî)ŒÄ–aðÌÔÂáü4p„#Yk5ß®0'· ´¾RâT_÷¶^¸‰Ë;æçœW•4请¾Ræ|;¾ªD~iº£yXݎ抚mSëö-:ͱù’Gô’‡&Öí[ø¥äx®  ª`þMK3ªy’l–·T‹>sôsš‚yfsî­pž[Ò`WoÁ[õ[ÊõEA|õ±ÄWË š_ÚŒîí[?»pvQc£uC~×40yéµ%¸5ÃNtCyêÜ#6'$»„ÿÿHMUÿ/”™kû«ˆŽÐ5NïΘ]Ä7 X‡OvRÍãRþÓHà(ïx™%ךj¶ÀN]æ8*{µ¡u°°å³š-Ž,=%Ø£/à¥ÔÒÿ‡|kdSw†p+ÀVgê4i²¶å«øÖ'þ÷|kß¿ßúÄÿßzú¿$ß:î o}ÀvùÖïÙ9|ëï=­y&À·Þ`çå[WHÒ“ž ð­(Qñ­ná=Ú vßzƒä|cU€o½ÍÎÏ·ÞÌåÀN¯°6ïh‰‡oý‘o-)á[ïZXÛz^øV$È÷âò˜Hì^ò­8q¾îÌ ß Á\¾õ2Ÿo)|+ïæð­‡É·¢—oµ‚|ë;2Å{ãéÀWäG„oñ„o­ ò­C$ÏŠ`ž×ÿG|kªÚã[{ÇTGÊz“Sìü|kïZÜßzµŸo½FfCžð­'æç[?–‰ÞŸž ð­« ŽË·¢Êßú4’ÄEð­£W)¾—Ã|kf±þþžm•g!ÏÊ‘cókì 79ñZРïëZ°DO"‘ó}Òùì]ËOj…¯Èb]+ŸÊC­^–É¢Vñ‡`®??™'×ÒY¹ðØäà÷ª_fç:%uf:kæwðX€u=åëúZ~Ö5Í˺¡ÀºöŽÀˆøNæÞ1ŽyðÅ@A™*ŸÌa]¯Íž^LÖVì±®`]Bщ¶ÏºâYW¦³®¼Ö÷ȺòJ€uÅëJoóXW9u]È2ÇöXW¦ ±®*½°®”˜¬+ëÌǺŠ0>ëJa<Öõ;Ⱥ¢bŸuŽLùo3ІÕöJë*ZÖÒ{¬ë(u=¬+n ëê6/̺âªb]q¨wÝM]Üiçc])(YW1ŠH,qÖPkXCÖ}Ö•ÑOXW"¬+ŽrXW¦œ¬ÒY×ÛìëŠÒ‹ò M$ôúEXWŒÕq$Òylð8J{I…uí£ëúcuàC×uŰ®øÖõïÎëʼ&JrYW\YýY×¾b½ì 늼>ëú=öòÍüDÍ$Êi2µ›¬ë»¹'v7 ©Ö•¸r+Ö•þÂx¬+ êBV=1žw'ØaÖ•©}Ö§d]Q«Áue“ò°®( J¶^;–&늌늲®,Ž•æxj³“Qt…¢hÔ¯Çg6ë “ef—uEqºâÅÖµÀÆù–rë¾¢,Ö×\Öu ½¿áX×q¶°®£íë:Ú±®T²¹Â&ëŠçòèÚJD¸á³®8Ö¦Ö= ÖÕø¬ëh* ×24d2º–PÙp4°®¨I±®“¬kv”í±®HMŽ¢’/¢Ú_í'ëJ™…u…ÄšH#¬+R¸¬«Ÿ'›uUø¬+V¬+l]à³®hhCF˜uE!GÍ$¤ë ñ}ÖubXW”ej´f:‚b]+la]Ëma]ßè÷XW‚u¥³jźžj»¬ëký>ëÊd]çP{Ãl—ue ‚Õt­-f»Ó…JÛe]qÖ÷.å™Ïº¢Æ,ÖÉB¬k…-¬+r¶2‡b]ÑÚºx…í³®9‚‘mº™„âš ŠjÒd¦E)}&1ÇCȺ¢~²®vëj“ux( °Eš&Êr¾ÅŽ=”öYWz À$g{©5‰² õC†b]qÉc]c¶°®¶°®Tldmmt÷Fðz´Ïú]ŠiÀ9²j¿LYWÚzŒi¹Ä Kà¢Õ³§\Ö•ÕšQXW«ßg]qLÖ•-8ÔಮµVØÂº®¤e¬°}Öù„uEÖ¢€˜Ã=Ÿ˜sTÄn–J½…¬TäS! ¬«í±®Èf]WÐß…±'·ãSû¸?ÄºŠŠ“JXW˜:XW¨¬+Ϭ+ί¯ã?°®HFÖõ&.ƒuŰ®(¾~¥öÆAźB‰Ò3d°™aÝ^쵉¬+® ëj ëúP¥ËºRØ8Úa´i™¬+#‹°®lF‹P¬+´ôõ¬+GÆÁ—um‚kÖu{ómçü g9©uÆ-—u¥lÒAÖU‚¸Ëº³Ëº¢:°®^è늪C¬ëJÛe]ÙµqÈ¢XWZ$Ð+G2\ë*ýL’A±®¨¬m+gå[ì³®8“ƒ‘O«Éñ(…é¹Ú1LÜ ²®Œ•Šue÷ÇâèþëêÕÏþ‰²æÖ$>ɺR,Ö×늆‚’qmëþt6ëÊ;ëʲ=ÖU©Šœfýd:‡u¥ç’uu=WFÃô\z~”s˜¼¬k¶Éº¬+}œ3¤íh¿;Œ ö{¬+ú4Q`û¬ëvý(È¿(ÖUŒ`?T2XWœƒu=ÚŸŸuÅýŒ‰»ŠuÅ…0ëºÄ²®Hd]qž×ÙÀºÒÑi|HwÎ&¬«ò£ã±®(Ñ’P¤ÇºRŽi¾u¥û€umÐMºÏpƒÂHV=N'bźºFLÑ¢<7ÌÁþ ë:¨œh?ŸÖ™û<' ¶Ü`å°®¸yâ¬+§aÖ•½CÖ• ëÚÖU¨¤)¬«×På­›MÖu0ìD5Ÿ§]Ö•U‚uEŸ»¬+'"H Ö•je¦ÄvYWž¿çFï¯g]]“šjÞ×ಮ_iH`]•}=ëêYLWÀbÖå ¸¡€ËÔ}÷o†êªé‘!Öµ„ŸVÆN‡Y×;̺"Žú¬«b]c,§‚sÎsYWLz­éiw˜J"]ˆuÅeÅºÊ Ëò˜QgÙ2sV¬ë0;̺ºö£XW4•¬k•źVÙºŽtY׋gQçAÖ•s;Z¢°®æ{ûÓŠuí°C¬+nçg]Û¨Ô©X×].ëŠ"Àº¢d…u}Ï©D±®ª²®Hp¬+’ ëŠrÁº¢ŸuÅý¼¬«R€uíö7]$ÀºâÛm.늹|Öõ [±®Ðr6ëú 3‡uÅÌ_±®{úÿ›»w‹ªZÿÿ70â€è ¢™YM¦¦å o‰—’Ë (7¹{a”[sQ450·[ŒSfVVZVžŽu¬Ì¬¬@MÔ¬ÌÌL­Cf6„%™G=jÎïó¬õÌ0 Zï÷÷û¿^|½ýÌìËÚk¯½îëyf7kë*¦`Þ*~Ÿv_ÇÖ5®üZ[WÚum])PM÷ø:o—­«ÆI[W1¥"ª§ ËZKØºŠ‰1å¶uƒ ¶uqÆÓÖ•¾5cëúüŠkl])6ÍÛºŠé#11ÖÔÖuÒŠkl]EZJ[×fïÞmëJ6µu¥Ì"l] Ý÷(m]ù¦ØÖU|¶®²­q¦y[WY(qÊE>½Ž­+íb[W IØºŠ˜xغŠÉÀëÙº&im]e&¶®bÒ­[×;´km]EÒyÉhå…¯ƒ&{ö•¾÷r”T¼tàõËP{ê˜4ç"oÇSÍœ°ØL«bU}w{ÉŽ‡üb®,>Aí“ØúPqÕ‰›´½_ò­-¶ ´ ËȇlùÚteïNjD ÀCY¼Ã‰±jUÍí8Ù¶êDPwtD‹ý¨¦+Ek‹ŠI‹¹Ò]ü2èwŠRïô«R“/ª1W¾1]t……Æ"pÙŽå¦ÿThYRóße¦ÿˆà/"øû±¸¼Ò1qúÈRMEÈÔΌשÉçŽåÕ7¼s½daw¢´`E&™s»cé·ÔºtÄý½K ,Ûè?W+ƒôJîDc-nrÙÞ¢„²½‹nÑF§iñFll‹ ¼lwaû-©Ž]+®:Ó´‡é%èN{'§=(%1Õß­î­TǼWœuߟíåeû¢lïCµÑú{FëžìµóæÃ¥¢‚°¿U÷¢ãù¥Wœ me¢˜¥Ý”UvPF´ÚTC…¾(ÐÕi‰-ÂÜ$¦¦l¯}2œ7Î}e›Jve•ܯ¨;ÕÃóºi¦äûÖ²‚PÏÒÍUÌRÊžLuü}îÙ iëNV¤:>(ºêœV÷ò|ªãQ|Nk5©ÙF¯}yòÉÇB[²+1«+g»ïxÍN­:ŠLK ÜL@peCú¹{Õÿ”½Ós†ÃV_­½è¿jKÐBÆÔÛRqL'cŒ†­-µVh:FßÓe±zÔ°¼Mdé^[ gL ýõ@Ýãž½Ð͹f$QÙ¨»´©ÑüßœkÆ€³º 4Ÿ)úƒ45/ò™¸¯M°¾ì<žŠ¡ô7úÖáøß zjž7ãÛçuê­5øN•ó”@u0íSo=Iÿ·vàùsù{–·ÖW›¨9,oÅÞFmQÊ|cæÏ…cËÅ RfÝâ¸ë·ß¥ýŠÈ¡E¡Ùûi÷ãibùqºÓýÏNÙÉKÀàN,цYÞªøUBùvÇŠ^ôÃïåæ‹“ÔS÷ˆ°fy;¬.ËÝ¢›±‘® ¿v–/lP»Òd ]£WqÇ•v]ðÁº·Bv… cù´;˜êtÅÑ1ÖÒ›Nžš)âž"iªªjo÷ÚóùÅ Ý) ›oA©hõ×ZÓ©YN]¨¬ ¨¹þ$ ²Šðñ{úÈÇSN'ÎRd’B꽄œ“ß.Š+?ÖSQiÜ¡ö¤U}É®NÁ•%—¼mÛ6*Ì ¨__xšÞˆ|8P›ÚMKÔiah•lm}|Ëç¨K/RÇòƒ+ô¿•c-ªŸ À­„éû¿ÜMÄä²ÊjÓ!ywÇ¥²ŸÄfÐÆèÔ˜ýÚ¢éÚ4tuh‘ÙÞ¿¤H×ÖPšK!™*D©3U”Œ*_P~®<õˆw±+×TÓ2ÍW5•jaÔY´¯P?6”NAÝ=§öWߢ ¯-ÝF§ŒÓ£õMúE1›–¦ÛöW^yEýüÂê*‡OÈ‘9Þê‘ò Q‹¯Š¾Üˆ¿ÙÉŸ +;f÷×V‰;´Cþcí‚6AìÑÄï’ùÜì3^_Ròµ½å”¶”Ü'S£þ¾,{âWÞJèu*ôDŽT9ô𨖥…ÊÖ«ªF'_Gnxû WUÕ &LY}*x¹~|ʧ¥ZFo¿6lÝYrQ¯Æ¬“/7”~Evò¥à¸ô^Ê£åôjíå¡•M?¼Ž#†¯¤ZÎP:ÿ#Ó¾OÇ·4¬ª’ŸZ ë*‚¡Ëª+uT%.¥SÐ¥üi(£/š}æ;Ëk¼é4†yå1ë0¨s ý,yј֩+õt¦xÛ·º4À[Þr2»Úz/ñÂpq- àÞœÝʦëPcŽÖË}šx…¸&^}®v.©ihXBݧxö%ïÓÿ^†•¿’ià2§}tñJQF5ûš²óv¿ W „ïÎ9zçsˆãÀÈ+²6+BïŠ|Lkl_Õ}óa½¼ì/úðZ$Y+ŽÓRŒN‹n–Î1æìeÜÅ2=·7I{–>"ST|˜†³´Öõsñ?uÃ[lû^׆.ŸŠºpޤ߳r,¾âüpÍx~IaOÓ{yÜ\¯ÇÅg™Pþb9,x¯ö¸XéÏÞ‘á/W(/ˆ‰z0Ú=ŠeÈιƒ,=ÕZ¨>drîŽç[#„ …ëØÔ_Ü'â+^¿¥ ®§ ó¼íS,G:­7Å•G]{‹.àÓ1!>{›¨Ð·LüÝõŽö]žt˜¾n¹6eæ3KŸàÎêYGªõË4{¼×»öñÃîüÅŸZh"GÙº†ì1”-¤ç¶’òr±¶Tdñðk¿¤@öx×}Méå[W«Åé¹ èµgD–hUK?ÞÀ™¢„ÞvCùëëªZ}Õw:Müf ×>d0ùF•äµj¹xí¨x»¡ô&Ê•åüöRªëÕÇé]¥ËÇTÖêJ÷ÊÂá«e¡é> âß$oh‡ü„3—v“¯Eµ¾ZQÊl­×ëdMPFo ×ìk©Ð¸Ól-šïCò¢ÈĬUe È‘/Ã-íC¯Æ%ÏKl‘EfnŠK1—T½—|÷j¹øÿq{­*<ÊËäÒü1Y‘QÑ’ÇŠW­òâm­7×}B™Žn¨v©øKÛvyCšEOùk÷Ü`Kw”mäº*dµªñòͱòªŽÐ¾®¬VW¦Ý*òÙ1ÛçÈq”ùÍWÛùl¼;Ÿ‰W}û´oÈgÑiHˆ·ús>K^‹ÁP]¹6e-峄YŠ;ÑÑÞCF«¦9÷}Þµ‹¯ÊŒ6ÈÑÄsÑVsF;`(3Qþ_-*!™ÆÈ ")Ä\€Èh¨ÏÛ¨"I„#-–3\ 'jûÚ—iûÂ@´ßeN4%ö-y³¶p“×W!ŸÙnRc¶i±FÜV“·«¦ÊÚøÿP dôIÄècsm¾U¨{îYJ-zùˆ%jHí±‹ü[jj½xâ0µ¿¶”ÚGHÑT%‹vJ½(š'u5PÜ:uÙa»í0jÔŽ!G­í*Ðæú ÓL¥%;ô^-CŽZÎ44CèÎãuhåë %Ù¸´®SwTý¤×ÄÛï²´€ÔÅßQdx{/•¡…+|­ÂŽ–H}¿HdÀ‹>ÉÅ%N=½¨µôg/9»¾I”ñÚ¦0Wc³Ë£ì,eG–*3¢9³‰¢Ç%ÆÕÈ„ŠF¦›(/•—T^ìù¼lä’Âõ½ª’ ËXW9}ÅõæÆ8»½¿ŽJŠxÿ«&îA½IvM Kè5µ“/ˆ¥PQ2h·WHÝ¿´2úÔK„Ê¯Ž ¬Û[¼W½¤™VÔf_ed›|U•6_”‘êkËH¡(#”ãÖ{Üed±6R”'ʈi“1½5ßFä-[“Šøždܹx›( Q ë*4ÓF ÝÙwK¼åã™ûQ>¾âòñ¸,²l4.9 åB6×ÉU‘rµ[<Ê…¯LÜZñΈ¯^¦¢—¡ö-šë£„,éDovFFÿªêŒ¾êGtW‹½þƒ¼hØzÉLJ2K̵,WTºßq–Ù*ú'4¶Y>> ò'])¯¹¸ú'ó›fz*)1tj’iªÙ[E¶ÙÐ(Ûl ls_ˆ»o²ÁÕ7Ét÷M<:&™2ã¿>ÙíýJÊ<âPM ÒTWæ¡w¥×Þþoj§Åî÷i·WKdq`¯ÇÅVqª—Ý^\á#íqн6O4ß2¿4j¾3E~¡³?÷tç—•î¶[äÙpʆ;¥!¿d7É/—(¿d»î 2¿@½U¨arG"Ã|Ãæ‰f3Ì”af_mh±7Ⱥ´Bw_ûç˜#h¯OËl"’ÁË¿öc:+YTœ¹â< -Üïª8 ›…2KgÌqÕTS›ù[CÅy 6ß0æ‰Ç˜gý$u®TÓ*Ǻš+èèNBö˜†l†*yj½Ú[öUŽÅb÷Ä v£X$ 7*tؾ§¬WuqðÖoÅGm’®®ÆðöÊhÊ;ÏFÐäüw-ʃnùÂP}VÌ÷– ÷²ÝƇ`gÉN£ÏJ:0äcõ‚åDmu>¼“·ý¸6N¯îóI ZX|«¾ä´±<)ÐyáH¹­›áŽª;v”œªïµOMÑÝ®G/Þw–Ý‹ãþ®é]Ú¸N%ßµ¬úÎûÝQ3Æ[¿¸¤-\Sr ¦èÕEª} õåÈ$âCeÊ)zÇ/;5«.õÒYMq|ý;ýÆD`Ù±mýqrÆßŽ·ÑÇ£÷Pcy¨—j:½Llqš6#$ËV-ùty—„ªï½Õ¯}bê«Cé%–ŠÏ”ú’ºuÊÇ´}Hð¡Ò¾T¼§N]¸©Ú´QŽa÷ˆ+Ú·Jƒ©J5mCË­½/ÚÐm8tʆjÓ:yèZ!-ÅNˆ¦ÑËÌËöÚûiöÊßl=³´r,$š.†·/–½ßŽ&^O\q”[§MÙ …wÁ°£“¦9Ä”–½ö&M’ÉUqá Ú´Þš‰ž2ŠÆªý€j:¤ùhÉÛпˆYƒò§.ܯ&¯R§T vƹäCW$Fñ8ùÌÕU›èù)³º¥8v¥N½0ÑPö­/M¡¬ y½–ô±õ "ƒž¦)Þð¥ñ²#ò7ξ†:÷ÂçÚ¶ D(ªÌ©Æ,3”úÒKQ§ãƒ"»b貨ÙOkÛè@µËÛÈ0‘*¾OÔ¿@‘xNC—wzúê”möç[|„÷F LYJ%Ê‘+ëWjÏÕx”×)›Õg¨Q²sÈWÖ[éø’“tp—P”‡wAy_G‡|e9’©‰p¦eyÀãrΪ’Ü·Ñ^Aú'ŸFð"¸ä͆“èTjÐnJ¿×ELP—¥!S=Cý—jÑýkR79ÅgMôÔd·4dÐÃöZÙ‹ 9lMï¦záê ]8¦Š× Óø4àmíI‘àÇl=älµ|íjyÀ벃S²S7\ô'mq´ß~!ZöPƒÈ.Ã#zxµî º5{kͼ'.vèiŽfáF§aM,¢¼Ëi߃^i££&Í{—·å pé&E7ÕGd•ÙŸõy‡¾”TëRO½â¤*:é2ÝÔ.O„ÉN{‰èàéJ^Í‚6!ùtm*èJDa³¨~6Ú©‘?ápÑ«°•mÓüG«c¯”ìÐÉmuCÍ­¾K݉ª9ù´*¶Öö |•Ã[ŸCf±µ¥¼|ò6=Ú/È»DælÏ1†žšûÙX:|!Æ?Óo9å'MWvÌPF^ëÚ¹ÊPF« ÚÛ\–‰ùùäJí)qÓSŠÕáËá6EýV{X$Ñ^£X\&vàÆëÊ–§élÏ/¡-Ó ¥ÏR͸SGÖOöŸÔßî™R\uÙ;ø †^(•DE¡ ª+~I ÀåψÒ%Þþ]R¥ï¨9ŽŠ…ã>Ñvoy‘^Åàn¨|?8=žÍ"CË:)³9ž›&Ê(dSûªøU†J4¶ÙÆ}ðÞm¸„°PVë›PÜË-¦O8$xovÚFËZµÿ.³‰HÏZ³oÚ·iSuçKìØ„úÄÿŠˆ…sUµ®ˆ>}ÝêGÚo—Ä{¶©¨&ê²m¶nIEJö*|pLó»sâ„ÚÇ.‰5zû~uáñòä=)ÔZ_nÚå0‡ÿNõ©i2º–\ÉjZrºKù´f?¢áß"´«G‹55U§"unYþ”¬ñž+ùØèDk-¾¢Þ¦)›®ôsöµÚ”ujЛ¨œÖÖ^>ó ïç÷…:ecíK´å`íF ¿1ã~Gã…6Q}˜Ú"Û%¢ÉÀκ£Ù6…T½\Yû¬´Ÿž¥Ä;VùÐ͡ũ Äad×ý­ÕH$ðC†²õ4ÄG+9eÏ4ݬn‰Ž]qŸŸHÎ ed@µþßÅ ‘hÚ×W^¯],5”>èÍíâloW»(£¨™v‰VŠ6§]ÉWz])F:~‡6q|"µ‰[ëÚD{oÍ^±ø>óö®¦±ô‡‹NgbípZL?)r’z´Ö[´Ž‹‡Ñ±xІÒÅ^­)•Çò˜ýãñpÝÏV E54eš†2š‹Á3Õ쫨•Ö:R7¥½¶H§>¨Óbõê8½¶pž™³ÚW<ä-à„"<_5^œ³W ÁUçØôê”UµO“KΔ-u¿©1[êÖ ²u‹KjžÓ®*ÙCYV¦_&nH\Ž.¿\ ë_4TlÒ9OÍôE™ja½óZú±I~ö!å ÷§Ê”OÞC‰0 ‰OÅÊPJ.€#b h(mE.üŽ g.;Ój40§n"_…§ªq•Qt•ç"ÄUê^By†ú wE$yƒZ­.…ä‡Ú\úõ”„åŠ( »k{þ.m¼Rɤßè´êH·ö²¯¾lOIËÜ£…º¯ä„O‚棞 Þë˜þÆáA´ð8µÁ&L twòÕêòB¶„ëdTÈb‡íVw…ܾ‚+ÛM®Úø—^W«®zORëåZ3ªÁ©õ´´î—}Füø-©[ Ñ-ÀÑÑš8áa]74®å[zPF¤ýÑÝ‚ÜÇœô8Ƶo¤¹rd3ô¦Òl›jóuUgôêemLÿªïu>tênŒy½½ö¨&ÇòðÖ" htsÔPF½g×l—4]–ð k²­ c-Ÿ¥b¦­H‡aj¸æ?ËË+æô,/çÖ-¢ÀÕcpg:íxÉŽÁZ\I?Ÿ¥îñ Óiƒˆ™{ ²óq¯w ›¥ …§ã›„QÒçwgÝ»85\Wça“×M[C+ê᪟|Tt(ÓnF‰®Vc†2êpÑôîpÊImŒÍçª:½úµß¿ê;ÏXÝòP¾a\hŸ¡l•h£Ý7\H7<µÑ ?,n¸P‡¨“7|7ü¶+²—4ÓIÇò»Ä S}ŽÛÝé3Q·^Üm%î6Ù¡vFEwÚñåpa¨ÁOZgqãSNÆ7 «7nü ܃ÏíuïT¸î»‹v«RL³Õª©ž^óãжÑê®¶™h†²ur²ªìNš{ªtä N® ¦læjoi‰·”šKµz ªpS-šú„Sêå Žj¶.ï,/õ™ÞÞcÙŽ’}z9âD‘\®§E†­b¾w rò íÁÈ}´)5Θš²cö·µ…'«Gˆ¥ëžtñJ‘\Cwuu\;{ÛãÀ-qëCMƒxPë~ñ>æ3_ò›ucE¼Ó®wÚH7gÐsádõ›¥®®B³è|&4ì;L–w[JN#zž³Tcäú]Ì'%Ž©[‰’MÓv1Ôµ#Wljëè÷Æ´]ÕOÞjr¡t·»úò¶÷fyˆÍ\Ýð)5†’W°/Õ#FÏRŒ°ÇòSí#l£©C,dÍu«ˆ†O|v EãÔý"u›*܉۽¹ÄÝàNÜ%.Pì$!ž8%¡°tÅm Ž—©÷V"RoŒŽ†>bRê†=^SŽ>å¸u{C2j¦#Π52ÞÇ-?֭ׯê|Zy$åçÉ—›OÊ®÷»“r1'åTJJZ®¨ÐZ-¾UŸ\¶WýÁÞ]ë@=æêØDÙï….ø v\Lé8ã¦Öúm´WØB 7Ø:!Ÿ©è?ê­&o >H£þÕ¦ r"b•a`(ýÖKÜ7zÛ´"7e³¶L¤ßc›Ä䂳VM^#góµ…›i±ã^¯³Y%üÔ䆲öÂb³BI±õ ÕQ‰Xf›àœ«sÚ—9~ÙOs†U; [ÏN(;?I›d(£ÜO#§ š¶[æØ'Ž™0ÑP¶ù]üàõá+ÄQöcôY<œ‡PP^Ö웵g©ô;Cþ¥N)µæÐLÐb1b5köb (Ñ2QÀˆ€§N”—/;¯MÂÅ#¼ÅÅ»ËkÇî—S††²¡ž×¾Ý»áÚíñyôð…¥–‚Ñ™ÞHfZѦ¬ð™¤§þôfZ!ÔùŒ£\k(ÝI1Ù…ìXRãmxûrƦT­=Ú¨/R–6ÎWÖŠ~¦ ¨‡›VÍñQM«´ðÔ›:¯u¯Qj†Ò7¯*5fEíÓbjM™Óvzd4bÚ옅¼ø”¬^w»C½׎:ôYV•íÅÀ2yƒ¨7ÔTUNY5+0<Ñ‘ûÅe„¸Y5òTú5Ši†Ò1·Y}²H ÁŽ‹!÷ZTûØÿä j’'ÑÒ܃:Ÿõ°zÙgš¾"KKôU?—·CëG>‹O)žÑFgx{D¯%¯óA-¨ î>§RhImÄV¢K&¢[]÷O-f uïcDi ®ŠøùÜŽ x«ß–œðò±d¡¸öÇ4›0¼½ãÞ]à%¯«$ttŽj¡: ªP-Êë‰:ú=Q=¯Çt¯™*Ðe™w/ͩʂ; vUópÉ—d“äïúk#Þ«ý‰úEÚ$øiCÒPÑsšå_óãøÝ¦цÞŸRmÚÒ·%*€¿¤¾óuÊ®’]Aªi[µi{8¶«¦=Õ¦ýô©ºlÏQû@Œ^Ñ<³kÙõWÈ¥»ðòƒ³ä²·*ŽžómIe»’š+½vÑ´sÉ©z-¨ÓöÌ®øpGÐÇWœÓpäÄ9¿¨¿Ö¶¤1½» >O Žõd†¿ÓÖ¡"ØÉãB[mR€ßUÓ%»ôî~Ùxãè#òL“;*¦sê¾àðv«_iÉz*†{«ŸÊz6ºÔb°[-&DD­Sö)µ£1zmñ&^¯ÎnöAW©d8FËiÖáAôm§zñs™æ„˜ì6”nùSøŸ½*æ`÷ ì«öÕ¦]©”Œ¦ýYBÕ9Ûè&~®—¨¶†DÕ©âè%ê‡{¯8'âÈ ê¯sN#]Ð%YÉÖy|p%rÐC~wÊõDW£ ¸2YÝñŠàʺµÄvYµ©t²ˆæ Š­Sêù.ýo"\Š·A„'àÈi” *ä“ ÐkC©áQ¿ö ‰ubŸ¶ )Ž¡Õ\+–&PãôÐUÎÒÉ_%ì6}%²ô@ÊÒD–>üeé ‰,†fS±ÈÒ”¹‹E–nöf¶4{3Þ×ÜŒœ-P/Š›Ù‚› ÝsÅ9•²´úÃÃd=PwŠ]ŽÅïZ/,®6Ü…‚®.tT›Nß 9OþÉ4JΓôü«ErzOS5<|•Þ[tʉ–§é¢KJö9jôûÜ+ýÚVTW¸þÅÈ#º[€6¹›~[6¢öIñ¤‘^õ´T¿îö+NnËËMKN¡÷$,ß…{ŸÈúµd¶¹NM)9ÝŸLá…=.ýóÁjS½låÙÒ!…§~÷«É'U{ öË–Ñøúâœx½f¶-¼`Ç5Ô²w*;o»ƒX5ÙÁg“¯‚ÉAó{^*zÉG´˜C¢ 9' éÏ•ìê/lŒµ…ûÑ\·ÆöÁ)HÓ~Ít\K>)‚?N+¦÷¥ê£>´éxˆéäœþ¸FÙÞjÓi'ÛãªÝAî ÉÍÔ ‘¨ŽÑ‰µzÞð¾é¤º»äüíöd„’||®^‹ÙSc¡%ÇeÅãÓþ[pç&ÜÎqaßÍJÅo)˜j4Š—ÂÚTaÉÔÚf„ôªWM é„ú+âMWD"ái|á¨ý…~mËT3çCgÌ‘{ÒÕmy&1a½m©A_rÑù©- ¤Nç< ù`ƒý\Ú$ÑM¼æOùŸýýOÏ—Üàï#üõÆbê^W"‰l÷R~ Twj£t#ß?Õ=kÚikï˜úíegšÓàHƇDGþŸ”&NÅ0tÿúJ ÇFnÁtì윽ÿq?½sðÚ•(ë_q¦MÔ:¬[I3Õ-h#]ÚÞR-£­ðNxv:.|ƒN7Éî¨û—¢Èù•[7жc6c…œûÖ~;ZcçÇG8#Åñ!þŸPvlªý;÷œŠã–+κ£Š0‰O.;¨þ`k•}œ.²{ôÙ iëO£:Þâ"6ØF°Ù|u ÚHŸ]‡>M‡ò­œ£ c¿¼â¬nqŽo€®ƒ&¸2Þq"V-‚£u¯*ëǸÓÕ>c}o‘R¶;)mÉP:J.XWÏ«Gµ±Å!ý´Ilw¢sqfýˆG rpO‰“ÝÛ§•>Þqð%aÚÕÇÁã¸ÙºCŽóÑËW:Îl‘Œw¼‚ã&¥Õ=‚çšäº¾­ÍÈé’Í85 }Þ+°A&ŠÁ9¸_ (TçàeøÊµöâ²TSâ9d×Oo…=´'ô%}” ÁóCã¹’UÏ—,¬÷5”""ŠÛë<,gù8"#ÉÕ ¹^ñxM©A2¢Bëòx1e´{éÍŽmôŒ¢9âJuÄjCY‰"WÄ#VŽyî“6z[»xÇc—iF$­:bõ(Ú†ŒÑ‹ó…Í/䢭…cõV´¿"ƒlÀ±ê n޵ÇÈ?Íþ•ÓT¸VÒZÎú5”sE¸mãEÇÄS¤m´Éå¯×Qp&Ò¹ó~§´ÐF+ ú”2g¢m¸zU»ß9Gç„0‚¥U”\öE1âY½Ok› œ¶gõŽ›èá%—Õ¤8ü)FÎIöÖ¯O¼º…& †ëÒ;ƒ7‰§±ÿW·XÇÉíø­í§6x3¾¦•Ÿhû\½ Í pÎÕ;ïuÁ®TÇkG/ cŠóö“uoV8Ök*+ø™ÛorÞ…/Že8ªºÅ® ×C¤rHG9 ŽR9¤eÓP?s—CžÓð[OÓºUPòî- Ž0,7M°ÿ¬ >'mtúR]’¤MÔ•«Ó‰RÕÛÔ#Ú}Ù^ lAÈîõˆ8bù¥»ÜÆ;Î~Dªû^æ9òê°Ÿ‚4Á›¤$šÆ'C£B£•‰¦„8%69:Z‰ŒKˆ MJÂaQ±¡ DÃ¦Ðø¸Ä¤„¸ø1&e|r²_l\¬II0¥FÅbgbT"Žˆ7ás‚)4"5!*É$>)ò#¡Ë+ÑQ‰ITö"srÍFe¸1:'ŠÓ"£¢MŠÇiQ±ã“m%<:.ѤÄ!d%,4|âî¾jÏ䨍¤‘84É”‹;& ·bûuðÝ2”j½¾'˜`È< ¸Ïœöéõ‹?FùÅûõú¶ŸàY7À!ÐÿS½~<Ø ¾-?ù „Ðë›ö-cÒm–œ"cºe¦=Ïœo³mF$dLr4¶YÒçsòq@¾5'ßÍÆü›1£ ?«À’—>#׬(Q¹¹æ™é¹FKzþl#6óØLxVP\?ÁžoËÉ3óÌy–yÆôÜÜ‚Œt[NA¾1+='תĆƘèYà¼B»¸¶-góqU[Î3‡Jafš›é;ÇàÌ#bÆaS¼ù,º›t«µ #'ÝfÎô8Æœé:ß}ý™–{¡1³Àl§á63²v‹…nRFNÒäú¦¢BsÞƒ‚ï†Ë³r,VÜIvº%=ƒ¢F©Öø6=οÞýçÙsm9…¸yç™òެ×ÞhÄH£qÈÉÊÁQt-»||6ŠUVNns©ÖÌõç¤[rDÒå§ãq™‹2ÌæLD#½('ÏžgÌ5çÏ´eßè|qZŽÕ˜[?7mËNÏ÷ˆ—ÅœQ`Él&˜Ðˆ”ÐØpSÓ{ÈÌÁxxf«Õxƒ› Å–¼B‘ çZrlxòîký©ˆ¤ BŠKh”“cQ¶Ç5< `ÏÊÊÉÈ¡ýsÒsífÇ8&4ÞÄÙ"ž`’[óÍ–£5g¾ëá5›þ f+ž´± Ë(jÅHS‚qnŽ-yИ5Q„cÍC®ußIÝ’áñH“²ÍƸ„Sã[±Hg»o'çpa7Ñp~b£scM8“2dC!¼Aþ¡óó3 sPnÇ Þú'IÎwI£xîV+“µ[ðæä?`ÏA-’eÏÏ :äéßpÛ U‰Çm7é™sÒó3ròg£úÅ5<Ÿ?<ÿºYË3}ѱ‰ ¥R1Çl¡l¨`©m±gØìóµíŠëÏ”Ÿ™ãQZDã5z‡ˆ›ŽJJŠ6ñ% ‘ä£] =Ž™›“ŸY0·™ðcRE5e1SÑæÚ%ÍfÌ2§SÔn|{JxA^^:’C4õÈsÝ`ŽM”§?8?ц«XwÅšRïjÒá¶ÍE9V=’ë¶£œ¾9y…¹h!l¹óŒ…æüfÚ°>}·=®ÒúGñóLJj‹ŒÔÅ“C1uMžÝÚ¤·âŽÅ9•s~¾ì¢ N®@$ûvop}SÓœbÌ 2ŸK5ƒÈ’ý¨Ýµáz¢hy¶Ó”Q¿S½‚ì‹ò©ðŠxÓ³¨T[Ì”1zg¤g̶¦g˜{S$‘½Ýé†ZaÜHyAÔß9×vq¬È9”ŸqWtV“¬ŒGô5§7~2ò,WA¶[E{ãªWÿ å:­qü¤óíy3Ì׫yå_Š«Û%ê~Ä: M»¡æL<­L³5Ã’Shk\•»Ï§£ ñ|dwÕÝs¥nY.2ñÅ_v?)q\gð-ñsü£óÅC÷ð׈áf£ãî'eÌØ×®tÿÄóièŽSu‹fÚ‚ìŒGЬÄÙ  –ÌBe"j3qkª4ðoT?ÿaç[¡ûËïc1š¹ý•Ùú:Ϻ¹?޼sÍ ·=_d¤ÓöÛ ªö?<¿#Âü¿t~^ŽÕJJõiOeLõ¨fÈ(@·Ä=°°˜óÐ=U«g ãM‘&ò$ÅDzp¥‡“S ò™»}RÂÐW7[š4‘•Õ¾îN!î/g¨eáz™ _Ýu¹[4³ž¹G—“Ÿ-Vª/Q£)‘¹é¢ù½˜†\Õt{¡ÙBm˜ì§5Ù‰ø4VfÎ 3扆*zn3(þ }>”YƒP\­æ\*2ˆŸ»Û)RVIœgE.–_†¹¦HŒ®¡;oÏÙ:Óž—7ÏcF¡a ˜:z »¨iÏ4gåäSŸ¾ÏM§Y~ot€h@l6„õS]xãüçàuÎo1“Ñ4"rcsáS‘°a'¦wŒht,93ìhÇðŸEÌ™¸CJwé¥ÜðšÄ£™³é2îö ;Y¶ùè4½ÏÙhYeÜô"{®Mÿ†Š’KÊ_Lÿ¿x~EƒfœÐ}’í{ÅmŸ.Z2®bÄ3ͱº‚Mjú¸¯É 7wýfÎo’oÀµù GÏD%`séi]s®BÛ›\I›;ÿ/•ÏæŠã5uÔuŠãŸ‹sÙ²ÑõÓyŒ’áš_¡Æ˜ËxŽ˜˜kšáirƒwÉ/×»¤gat„ù4#Z|q#Ms‰ÇùéMçܬVƒîvvz¡+¾7x¾t­F3×L&¯½†kR}2ôÕD 󤈬ÕðlÜ3ÒJ¢}×þ 7"V×Ô}â@Ñqæ=òéµñ²sź«˲ä©O+²RÊB7öƒ^rëótÍõøÜM®ëv£¨µgôú­gõúh`äïDà™?Çtžš>F ‹K#W»ÄêkbhŠIIL‹‰J’ËYÍ.xÅ' :s/{ñŠ­<«‡¸¾4Ìí('v–çx—Ù®³šç¹dÇ«x bM©J\4-ÑÅGÓ:šk©P,ß¹–ò®]çËŠŠ2ÌÏOOÁ¿õò³'}Á`ï  3€òQ;?½'_5Cÿö~úbPÞþðRû†ð\×ïq«Ÿ>®Ïv=êñùìí9`¼–@Px‡Ÿ~)xêˆ+¼{ñ9ƒÔÿ…°=¡0]õGRhMÑ*É1¡‰ãš©_’²©‚+¤Ù59šýÍ‚¼BÓÑàGÌÒŠ©C3Mð‹£üÝçcÈeå¹èÐÖ‚,4Õ–#J¸ U†¿‚«ÇE&MKHš::QéƒCº=×–*&'}¦YéCƒøBT …6¥Ïœô"šÙ°*}ìù9®3rfšÅ$i³õcjº…F¹Ã\q6Š!•ìˆ!­îY ¡ø+}rsl¶\ó ý/Â÷ —È/ÈÅÈU ûXÌhÛÀ½†ôÏÏ5Ù¬tM†(}òÒ3̹H˜«Pºsñ!Û\4Í^ˆ¡«Pþaüš.Npÿèþ\ƒÑ¨~qÆè¨°Ô#Æ>rJF¬8æ‹y"#BrMÁŠÁ¹?F¸ø¨ÜoTÒgXãé/Mü)I1ñ¨¿2¼Ùy¿Ÿþ0Õ<´ÏuÌ¡Rƒ g±oÝ(¹­9‚<è?ÚOé§Ÿ>F*AÛ”pÔ_á Û<)Óüöf¹Á±5 œ¯ñ@â`jÐbÄaÇõó8¶î(»S”Ÿ~u“ëôÓp¬ëþú¡œdô³Î³ö›m¶ä›sûX-èPöˆ M f”ÛÑØ r3©”òŽ 9žiFßGM²kíŠË¯¿Ò/Ó<§_¾=7WQúåáZ  (Å Ot<ÍÄüS¦y†}æL1£UP0ÛŠ ¡ Hôì5̘“/g‚]½î…wø+®óm…è‚ ³ÊµS‹Å^hóW²,fóuO E&ÝØ=s˜¿b•)3æÙPæèo¤±{p»¿’“/&–¯Ý!ÇŸ=sò3rûóòÒ { £È‰ÏF‹y¦˜öwíÞá HìÈ¥pââ§Å‡FLSbbBã§Å„¦MCÃ3-i -c¢­å=ß•Kùé½WùéýAgÐlǶ àš ’óH¾5*³Y…vYÏæÉ:Àe¤QÈu‚Í*×>ó¬r*³0]nÏãE쌢¡BÓ å"ipy¾Õ,--òlqbáL×yéò¼¼‚92<›ëz‡r™‘›•k·f+8¼L›œÈLÏ(ÌáäÉøɈY9¾ÐRåyÙd¸Þ y|ÎÀ¡C”œAôß`úoþCâb<‡>>r­…§ƒÞ¾Ç%DŽŠu0…%ž†‘f|r’<3N˜ ‹M‘GAG(4:*4}Z$Žˆ‹ Š¥ÏbŒX;†z]©ØèD±9.:e; AEÒ†iqñIQq±‰®J0i"ýOW E®‰©Øèºü½ò9ÊØ ø³'€ÝàSp˜·} ÍKœ¸LjhBls …^cÄ4t =>‹Š˜>-Õ:Nég¶¡Ê±çdöe^D[ ¦¦3%Äš¢]‰>Æ>nš‚j%CA³mEÛnUúÙ­–~èXÌýhÔB³1‡üô `2ȳÁàA°¨ <ÐAJS¢CcG'‡Ž6)4r±šm#ù0qÉЄDS’¥äæf‚Pì ¤)|Õ¾¨SÒ›‹EÂûþüé¿Þm MwÐ>tzã¿Ö¾éþÚÉÿWþ¼|[êýZ)J Ò¶Ùd=ÜBññøç-^®Øõ×JñÇù)MÿÈáÒGÑ!_¥%½+Pñæ=7cý]p^p*ÅJñgWE)n%¾7üSŠ;)w)÷ v•ßò¨Ê`…Î>…¾Âº¹¥¸Jqí”öJŽêˆëù!f­‹ÖØ×YéÄŸ Mö75ÙÖðÉ¥·\swЏk:R'Žðk†çSÚÜÄŸ MöM¶5|j8?¥…¿>|â|ýõ€>-ýõ›Á@½¿~+ñó×//€£ +À_¯ý þìqÿ w4ù>¼ÎŸ;1¡ Š·¥°N¿¶ústâ{˜ –‚§9Üÿ[÷ô›ÿ6î”®…TOrÏB|¶Èõ²†²ëÿy1®¿Â\»%=w¤’/?XG69¾ð€ƒ¹whHúŒ îffçÌš›—_Pø€Åj³Ï™[4o~¢]®"ÇÑ:œ•ˆÅtꉒ…­¢Yí´ˆF£÷Úsež{u|)aE]Fš@“}AšYÂöB»­_ÝF‹ìî¥9q*ºµ9"ØôÌL ꚥ+›ÔW&SFÅTdÎp-€Ê Ü‹ÓËÅ6#;'7Ó%´rl¢âš£cS\%žîÏ*Ç™æ|²¡ð\‘ÃÁ³]‘sç(îÈâ a‰hœa·Î“ £ÂX†Ò@ö‘3,Vk!7'v“[ÆW›˜t%f”µñWÇ=›T@«™ùÖ-ÂF¦ss{•$Œee 5ÄR¤'Â4‹è͉1לe3Šdñr›t™Í³• “ûóiÐäbt_H,KÁl\´0§¡JÛ±„-M;=f(ÉÜS&[&ÂIœ>§€ì{ym™†´î'Kš1É2'='W¬bDºV]FGb~—žŒ+ÝÄ2I¹“»:bÖÚl³$Â(**“Lf„A—ÙaBÏF>ÁàŒç†E;Ú<{ˆ°­óò3²-ùdØÊ;³Ósm_ÉŦD#qš .ÞR`+È(È5fÒš„´)K·¡ È–¥-<1ªÁâÈãî]Ñૹrˆ¹]/ ×µò«ÙÚÈŒÂÄdzh‰k¤çd^{F†çFknM²‚|ÎG²ü¹Ê\CLÍéy¦0âlˆnRNž°e³SJœLy´Õ]€¬J ¼®u#¹F‘o¶Í-°ÌVâQ1Ò<õ$MT+q3fÑZ¾0œË+°™eZÓZ–°×´"¡èš¡™dî—ã®m-yÒ C|#Û9{¾kbMŽí èäü̆G$!sôlŒÓ¥½ ÙSD&º­b<*$ÎqJ¬˜) †¤-ìº¥ÈÆuâd5H6m(!t?®zÈ(ŸZ¦’ÈÉFeŒ¯æ.„Y[¬x&dª'ïÅu¶»âŠárà.[îûÏÐýÈm¶Ú É”•®Žbh–ö„Mö4n3¶»ÊJÏËÉ×do(ÇÏed+§”X™@bMžL=¾Ûóq$ƒ".-ú袢 Ñ4h¡Ù,*ÿÒüEVl ÷åq ;eRylN"©Œ)°Ú._`´i­À˜7ëq443-M›Ï¹ö$"ך±È0¢á‘f"N‰îž/L‚2rÍé4WÈ Cš)6*MÔˆ¼†)Ì©'¹ÃjÎK/Ì. ‹Ä†ÛMHÓS8GÑ ¢Ì89ÖÙÂ8*½ÁÐLÔ•™9ö<6JE 7ÓµIT™ ·—A‹H¹ÒlÒ]¡S±(°¤[èaÛó¢¤vz!Ò¢ÐB«_Æœ‚ [®\’íG“á^ ãê2³€¬¤(Œ†‡ê@«¨IæåÍ(ÈEá“ÙæÚ=8¾†´ípÛ—+ÂfUf{i¬˜îšDcÏÌsóP±ŸfÑÒ]SaÍ¥(}ñÏCæ$<÷ô¾•…ÏpÙÈQ@ÈI[:Êæº£Fæ4tXÌÔáIor=î äÎé*ëiQ…Ðüw®™º7TUÑü˜QØgz,÷*Êõzh¸J½&aÓŠŠÈ³Ô¸|´Ô¶ŠíJCŸ+2‹ÛúѵßUÊ›«D™åóÅmGœŽôž™ïjŽÌ ý1WU‰|Tˆí e×U ¾Y¶¹äÅ•‘N…Ùó˜ô¸ªÈGh­2R”†d9 õÛVø:DZ{Ãq¦ö‚íymמeͶÛ2¥³;[\˾V÷̯•&ï›YFØuºµ~?8 ®‚6?·Ö÷! Ì @PþÝZÿô]°¿ß_ZëÛÞ`8&‚Ù@ÝpÞ3ÐMà=ð¨çA‹3­õØßÚDÉ ,ÙØGñ\‹Ïoƒ}àp‚6õ­õ]À`òÀP6‚­àCp¨^†ñô<ðÿç»A8HsÁ2ð,x lGÀàh}¶µ~âr3t¶àûq ;{I`Ø ²±ÿApŸ—C_Wðyô3p (¿µÖw].´ÖŽÆ@§€l|^lø\6ãópô¾ˆð°m;ø ?ƒVçZ뻃á ‚•à°ìGÀO`Ò£wFÆs¡±‰QÓÒöÔ'8dÈÐ~ýÄzstT’¢Œ*6ˆŸ +f]Pê¯/ËÁ-eþú hwèjèceÍcý“ûè3ÑŸUïÏàó?øz®mćàuðP™Ôm Ÿ³ùXÚÃúŒtnviãïÿ ®xï.•|È×ý¿Â4½_‡ÀQPN•Ê{> ý­T†Ñ\Z5½6Ñ„€pN·¶e2=›~œ®cèsj™L+Wx³ñÙÎi¥6¡éõ›Æ©¹4üŸ¤­ë\Ïüq£ë\/œì<3w^£1¼’QhWú῜ü¬…GõèÄôÃ0^lŠ1ç‰E¤aÆîhÀf‡Ñ†H‹Ùìþ.¦Èólé3ÄÙòk–•¾ã¯ÚÕ~rêY|¢YOšËëÛOyÈéE?`N¿Èó.£c“E½,W1”øèÐ$2ëP¢£Âhrݵf5§[h^$Ý–­ ®$O%-Jˆÿ³È,Ûó‘Ý­Ãùhôü겉®^ ÊîV%£É,†*³Ô0×Þ aéÅá ·ÞAkf´ÚMËù¹ˆÍþó.Ù5&E'ŠN’k³°æ—³+[iŒâꑈ1˜‚T’ÇÅ%Câ\k„ Ûi£Ë ÁµÓí^"{¤®uE:'FW%Ë5Yž šn#ÚÖy.O¤‘” žiÅbvûÎÈê©·;†Š<Ǩ4XW›…«¸6YCù¸;úб'r+ˆµ—™©œOk¹ŠqRwëZ­›6ÂUÝ¡2£J ;F øÄ1˜ÞÝz•KñMæˆÜ‚‚ÙöBWlÄÍ^¯=1öô¸ÉL3Š0’>c^/”0zó,9¥Ž«`‰&‡í˜îSdt×?…—¦ÑQ±ãL ưäÑwÜq‡B¾è9ùvÜ%/’ÔuªQVÐYÈ,¹Šœ››M·L™O¸;4³‘97«ʨ2 ï ¾‚û(}MÑJÔèØ¸SCc>“Ü}ñŸ¼‚L;M‰#s(#]?TÒç>{†u2’þïsŸûçK’Ãû Š6õë×ôHT#¥zíyŒ-k(ŽÀÿžûqÆ€ë=ÊÈtkFNNóˆ]2 MiZ¯wá†dìûõ3F%Æõ î?dÐ~Ø2¨ŸÜfjfOx¢Ðkw4|¿v_\bdÿþýƒñ¯¹3ö¾áÞæBN%ÃiI´ÇýD’"‡6>’6Ðæ>Ím§ïQ / lf']|0.4dx…q ¯¹í wÒÿ†{ƒo¸·¹ÝÃ>ìk:tÝàëìC(}’›Û™œØ'41<*ªÙÃb¹·¹=áñ×Û‘xÝÐDŠE_“Ý\i)2brlTx\„),j4N%T‘¶ Š8¡Oð°à¦Q䑯ûŶkiôl‘Q®yØøóŒ÷ÐfÓS„3 'õJH¡ë7w”ëaöпÙ@øV¥Iy3‰òÿǿʚú‹WDõ;MLŒM£†À\dS<¶y~ž–“ŸÓhç4Z‰¡Ûà +ø~*xîxTýž¡RxÑáÓ“&Ä›èClrŒ)!*œ>&EňMáqÑÓ‰1q±¦$2ܧϦÄÄÐÑd€>-4:š$>4Þ” B •§†FD$à0š)Ú?†\Ĺ¡‰É ¦òÀרrˆŒ %c4·[óo´j£ìŸ‚¯ÁàWpx´Ñû pè<ϧ/ÔŸhÉÚŠñå}®íd Ô´mrýéó[]ó›ZåÏý¬\fMþèš4æ¦!½Z±"ÇÛôçÍñ àm4þ6²8sŸÄÇ€ö /‡G>|­y…Øäú-8\}<ÿšîkÑÌ6/¥ù?ÏðšªçŸ/£k&N-<ðú“4ÇëñWÂü³\/Í\÷àúkz ÇgŸ?@¹Á¾?Æõhz?-¯ó tM¶7ýónfÛÿtßÿæñMÓß÷:Ÿ]÷w­ aÃß»ïóøëåqÏ®ç{½b>Òõ›et,åsW›áÙ^P}Jõv —vAp0‚®  |Ñ[‡ïôî/ª«É< Îɨœì×É~î£@ ìH@íäX bAXb°”‚¥`XV€• < Vz ÝðX žëÀó`x l¯€Mà5°¼¶€­`xˆwnJ°ì»Á°ìô¶žà 8ƒ#à(8¾5à8 Nø œ¿€zpœçÁEp \W5<Þ@|øƒÐ‚v t@gÐÜŒ +èz€žànÐôýÁ0 CÁ00ÜF0"Á0DƒX@Hi`"˜ ¦‚é`ÈY Û‡^€çòA!°˜ŠÀ|°,Å` (KÁ2°¬+Ax¬«ÁðX žëÀó`x l¯€Mà5°¼¶€­`xl€J°ì»Á°ìŸ‚à 8ƒ#à(8¾5à8 Nø œ¿€zpœçÁEp \W5üÞ@|øƒÐ‚v t@gÐÜŒ +èz€žànÐôýÁ0 CÁ0@¯K¿ŒôÓý ŒcA4ˆñ $&‚É`*˜f€L²Á, òA!°˜ŠÀ|°,Å` (KÁ2°¬+Ax¬«ÁðX žëÀó`x l¯z?ôk`3xl[Á6ð.Ø>•`Øvƒ=`Ø>ÀApGÀQp| jÀ pœð8 ~õà,8΃‹à¸®ê¨zðzà@Ú ÐtAp0‚® èz‚»AoÐôÀ 0 ÃÀpÂ@ˆcÀX bAXb°”‚¥`XV€• < VÕ` x ¬Ï‚uày°¼6‚WÀ&ðØ Þ[ÀV° ¼ ¶ƒ@%ØvÝ`ØöƒOÁp‡Ápß‚pœ§€üNƒ_@=8 ε ·KãùƒKà ¸ ¨Óï tÀè?m@ h‚@GÐ t]ÀmÀº‚n è î½A_Ð ƒÀ0 #À}` ŒcA4ˆñ $&‚É`*˜f€L²Á, òA!°˜ŠÀ|°,Å` (KÁ2°¬+Ax¬«ÁðX žëÀó`x l¯€Mà5°¼¶€­`xl€J°ì»Á°ìŸ‚à 8ƒ#à(8¾5à8 Nø œ¿€zpœçÁEp \WM|xðzà@Ú ÐtAp0‚® èz‚»AoÐôÀ 0 ÃÀpÂ@ˆcÀX bA0 „ Æ€± Ä‚x’@ HÁd0L3@&ÈÙ`Èù X€ ÌE`>Xb°”‚¥`XV€• < VÕ` x ¬Ï‚uày°¼6‚WÀ&ðØ Þ[ÀV° ¼ ¶ƒ@%ØvÝ`ØöƒOÁp‡Ápß‚pœ§½¥ò'püêÁYpœÁ%p\¥IU< ¾@O6% ´ A'Ðt·#è º '¸ô}A0 CÀP0 Œ÷Q D€H0ŒÑ ăR@˜&ƒ©`:˜èÇV²@6˜rýLÙLY€ ÌE`>Xb°”‚¥`XV€•þr~þþÎúÖWY_c}‹uë{¬ÛYßgý€u7ëW¬ÿb=ÅJsfô75Š5¡‰&6чX«Y÷°îeÝÇú1ë~Ö_YϲþÆJó"¾¬{X?fý„õëqVo£TVk V_V=««?k+Ö@Ö¶¬íXÛ³±v`íÄz3kgÖ[X»°ÞÊzëí¬FÖ®¬ÝX»³ö`íÇ:˜u뽬!¬ÃXG°ŽfÃÅ:u:k:ë Ö Ö¬›X•;¤x±z³¶`õeõgmÅÀÚšµ k k[Öv¬íY;°vd½™µ3ë-¬]Xoe½ƒµ+k7Ö¬=Y{³öaíËÚµ?k0ë@ÖA¬!¬&ÖHÖѬcX£XY“X“YSXSYÓX'°NdÄ:™u ëTÖi¬ÓYÓYg°f°f²šY³Xg²f³æ°Îb͚˚ǚÏZÀZÈú«…ÕÊjcµ³ÎaËZÄ:u>냬 X².b}ˆµ‚õQÖU¬X²rå»®R;°vd½‰õNÖ!¬#X3Yͬ³Xg³aýšU,\áϋ՛ՇUÇÚ‚Õ—µ%«žÕÕŸµkkkÖ6¬Ö@Ö¶¬íXÛ³±v`íÈzk'Ö›Y;³ÞÂÚ…õVÖÛXog5²ÞÁz'k7Öé¬é¬3X3X3YͬY¬3Y³YsXg±ÎfÍeÍcÍg-`-d}€ÕÂjeµ±ÚYç°Îe-bÇ:ŸõAÖ¬ Y±>ÄZ̺˜u k k)këRÖ‡Y—±ª¬ËY5Ö¬å¬+Ya­`ý룬±®b}œu5ë¬kXŸd}ŠõiÖµ¬Ï°>Ëúë:Öõ¬Ï³¾ÀºõEÖ—X_fÝÈúwÖWXÿÁº‰õUÖ×Xÿɺ™õuÖ7XßdÝÂúëVÖ·Y·±¾Ãú.ë{¬ÛYßgý€õCÖJÖ*Ö¬;Yw±~囵šuë^Ö}¬³îgý„õSÖÏX°~Îzõ ÖC¬_²fýŠõë׬GY±gý†õ[Ö±Ö°~Çz‚õ{Ö“¬?°žbý‘ÕÁZËú«Ò]Š7kk kk'Ö.¬ÝX{³bÁzŠÕv·T;ëV…/oëøRXY“X“YSXSYÓX'°NdÄ:™u ëTÖi¬¯³¾Áú&ëÖ·X·²¾ÍºõÖwYßcÝÎú>묲>0Pª…ÕÊjcµ³Îa-f]̺„µ„µ”µŒu)ëìËXUÖå¬ë ÖrÖ•¬°V°þõQÖÇXW±>κšõ Ö5¬O²>Åú4ëZÖgXŸe}ŽuëzÖçY_`ÝÀú"ëK¬/³ndý;ë+¬ÿ`ÝÄú*ëk¬ÿdÝÌú:ë¬o²na}‹u+ëÛ¬ÛXßa}—õ=Öí¬ï³~Àú!ëÖ¬»X?bÝÍZͺ‡u/ë>ÖY÷³~Âú)ëg¬X?g=Èúë!Ö/Y³~Åz„õkÖ£¬ÇX³~ê\–âÅêÍêêcõeíÅ*gp«7««Žµ«/kKV=««?k+ÖÖÖ¬mX ¬1¬±¬q¬ñ¬ ¬I¬É¬)¬©¬X'²NbÌ:u:k:ë Ö ÖLV3kk6kë,ÖÙ¬NW::¥z³ú°êX[°ú²¶dÕ³ú±ú³¶b `mÍÚ†ÕÀÈÚ–µk{Ö Ö¬YobíÄz3kgÖ[X»°ÞÊzëí¬FÖ;X»²ÞÉÚµ;kÖ»X{²öb½›õÖÞ¬}Xû²öcíÏÌ:€u ë ÖÁ¬CXïeÊÂ:Œu8ëÖ‘¬÷±ÞÏ:Š5”5Œ5œ5‚ÕÄÉ:šu këXÖq¬Ñ¬1¬±¬q¬ñ¬ãYXY“X“YSXSYÓX'°NdÄ:™u ëTVaÐ…?/VoVVk V_Ö–¬zV?VÖV¬¬­YÛ°XYÛ²¶cmÏÄÚµ#ëM¬XofíÌz kÖ[Yoc½ÕÈzkWÖ;Y»±vgíÁzkOÖ^¬w³ÞÃÚ›µk_Ö~¬ýYƒY°dÄ:˜u뽬CYCX‡±gÁ:’õ>ÖûYG±†²†±†³F°šX#YG³ŽabË:Ž5š5†5–5Ž5žuÏú"ëK¬g}…õ¬›X_cý'ëfÖ×Yß`}“u ë[¬[YßfÝÆúë{¬ï³~Àú!k%ëÖ¬±îf­fÝú—uëǬûY?aý”õ3Ö¬Ÿ³dý‚õë—¬‡Y¿b=Âú5ëQÖc¬ÇY¿aý–õ_¬5¬ß±ž`ýžõ$묧Xdu°Ö²þÄZÇzšõgÖ_XϰֳþÊz–õ7Ös¬ÿf=Ïzõ"ëX/±^f½Âú;ëUV'«ò¥T/VoVVk Ö–¬zV?VÖÖ¬mX ¬¬mYÛ±¶g bíÈzk'Ö›Y;³ÞÂÚ…õ6ÖÛY¬w°ve½“µkwÖ¬w±ödíÅz7ë=¬½Yû°öeíÇÚŸ5˜uë@ÖA¬ƒY‡°ÞË:”5„u8ëÖ‘¬÷±Žb e c g`dË:Ž5š5†5–5Ž5ž55‘5‰5™5…5•5uëDÖI¬“Y§°NeÆ:5ukk&«™5‹u&k6kë,ÖÙ¬¹¬y¬ù¬¬…¬°ZX­¬6V;ëÖ¹¬E¬óXç³>Ⱥ€u!ë"Ö‡X‹Y³.a-a-e-c]Êú0ë2V•u9«Æº‚µœu%ë#¬¬c}”õ1ÖU¬³®f}‚u 듬O±>ͺ–õÖgYŸc]ǺžõyÖX7°¾ÈúëˬYÿÎú ë?X7±¾Êúë?Y7³¾Îú뛬[XßbÝÊú6ë6ÖwXße}u;ëû¬°~ÈZÉZźƒu'ë.ÖXw³V³îaÝ˺õcÖý¬Ÿ°~ÊúëÖÏY²~ÁzˆõKÖì_±aýšõ(ë1Öã¬ß°~Ëú/ÖÖïXO°~Ïz’õÖS¬?²:XkYb­c=Íú3ë/¬gXëYe=Ëúë9Ö³žg½Àz‘õ?¬—X/³^aýõ*«“U8Aáϋ՛ՇUÇÚ‚Õ—µ%«žÕÕŸµkkkÖ6¬Ö@Ö¶¬íXÛ³±v`íÈzk'Ö›Y;³ÞÂÚ…õVÖÛXog5²ÞÁÚ•õNÖn¬ÝY{°ÞÅÚ“µëݬ÷°öfíÃÚ—µkÖ`Ö¬Y±fÂz/ëPÖÖa¬ÃYG°Žd½õ~ÖQ¬¡¬a¬á¬¬&ÖHÖѬcX£XDzŽcfaecgÏšÀšÈšÄšÌšÂšÊšÆ:u"ë$ÖɬSX§²NcΚÎ:ƒ5ƒ5“ÕÌšÅ:“5›5‡uëlÖ\Ö<Ö|ÖÖBÖX-¬VV«uë\Ö"Öy¬óYd]ÀºuëC¬Å¬‹Y—°–°–²–±.e}˜u«ÊºœUc]ÁZκ’õÖ Ö¿±>Êúë*ÖÇYW³>Áº†õIÖ§XŸf]Ëú 볬ϱ®c]Ïú<ë ¬Ÿ~%õ3Ö¬Ÿ³dý‚õë—¬‡Y¿b=Âú5ëQÖc¬ÇY¿aý–õ_¬5¬ß±ž`ýžõ$묧Xdu°Ö²þÄZÇzšõgÖ_XϰֳþÊz–õ7Ös¬ÿf=Ïzõ"ëX/±^f½Âú;ëUV'+ý‘›™Z“O=ý¾ ùÒߤH?zò¡§%kò—§%©{éO¾ñaŠô‰'xò…'?xò'ÿwò}Ofèõmz[ý¸äB°”)Ò§]S¤?ûßéËþ„"ýØŸQ¤ë Šô_';Wò]ÿ§Òà·þ¶"}ÖɆµR‘¾êÕŠôSÿD‘>ê_(Ò?ýkð"ýÒ¿W¤=k-øY‘~èÿV¤:ùŸ‹ß^-A+`íÁM^Íû˜“ù=^Ò§|°—ô%é%ýÇM^Òw|œ—ôï%}ÆS½¤¿ø/é+N~â3½¤xž—ô·zI¿pò_ì%ýÀU/éþˆ—ôÿ~ÜKú~?í%ý¾×{IŸï—½¤¿÷«^Ò×ûM/éß]å%mo?ó’]–o¼¤v—´±ýeoÜ»·ôµ6€öÞÒ¿š|«owzKjò£&êÁ Ä[úM‡zKŸéÑÞÒ_:Œ÷–>Òä=¤³Ot.ûA[Á\ö}~ˆýžËØçyû:?žϰ_ó‹ìÓüög~}™ßïÁNPÍ>ËŸ³Ÿò1öMþý‘ϰòÀïÀ …¢ð­A[ÐÜÌ~Åw²/qö¾—}†CÙO˜|„ãØ/8ý§³0ùç±ï/ùýÎc_ßöï-gŸÞ'Øw=x¼ Þï€ÁGàcð9ø |¾gÛŸÙ¯öûÒzé¤ÿl+ô™%_Yò‘%ßXò‰%_Xò%ßWòy%_Wòq%ßVòk%ŸVòg%_Vòc%Vò_%ßUò[}P'}UËtÒ?õôI}R'ýP_ÐIßÓWuÒßômô1­ÒI¿ÒuÒ—ôKôý—NúŒÖꤟèo:éú»Núƒ¶l!}@Û¶~Ÿ·´¾žÝ[HÿÎ~-¤Ogûq†³ïf ûk¦²f:ûeÎf_L;û_>Ä>—*ûY>ƾ•ϰ?åËìCù:ûM¾Ç¾’±ägìù5ûA~Ͼ?³¿ãöqôò•~­|¥/cö_¼}{±Ÿâ@öMÎ~‰¡ì“8šýcØ1‘ý'°b:0³ÏaûÎaÿÂ%ìO¸’ýŸbÁ—Ø?ð öü€ýÿö±¿ßaöï;Áþ|¿°ÿÞ%ö×óeÿ¼vìwûßõ}@0ûÚ c»0ö­Ë>u ìK7‘}è2@È;˜‚Å Œ}âa?¸'Á3`=xü¼ ^owÀû  TƒO؇íû¬‘¯Z-8Ã~i—³¥ôAóc¿³öìgv'¸ Üúà^0ÜÂÁh0ÄD &i ä€<ð°ƒÙï«”ý½V°Ÿ×*öïZË~]ØŸëUð:x‹}·>;Á^öÑ:ȾYGÙ'ëûb‘Öö½"¿«Ëàwà^~耠%ð­@k`mA{ÐÜn·øIŸ«;ü¤¿Õ]~ÒתŸô³è'}¬Bü¤Õýì[eb¿ªqìS5žý©RÙ—j ûQexøPÍfÿ©Øwj.ûM-dŸ©ö—RÙWêö“zœ}¤žfÿ¨õìõ2ûE½Ê>Qo²?Ô;ì õ!ûA}Ä>P³ÿÓçìûôû=}Ã>Oß³¿S-û:a?§³Óeöoòbߦ–ì×Ôš}šÚ³?ÓÍìËt;û1ug¦{Ø)˜}—îe¿¥‘ì³ÎþJQì«Ç~JÉì£4‰ý“ÒÙ7i&û%å±O’•ý‘æ±/ÒCì‡TÆ>Hûý ¬O€§À3ä“^/¿ƒMàŸà ðØÞ€*° Tƒ}àp|ƒ¯Áqð/pü ü~çÀp üè}€/ w—h:€Nàp¸tw»AÐ C@îaÀÆ€q ŒI LSÀt²@ÈÀì <Å < –ƒrP«Á“`-x<^Á?Àkàu°¼ ÞïƒJ°ì{Á~ð8¾GÀ1ð-øœ?‚ŸÀÏ ü΃ÿ€+À ¼1@hô hÚ‚ pè nFp'èzÞ ƒ¡`8¸„‚0Œ1 $‚0LÓÀ `Ù`6Ș 情 ”€¥@+À#àQð8XžÏ‚õ`x¼^›Á›`+xl‚à#°| >ŸƒCà+p|jÀ÷ਧÁpü\—ÁUàÕå´þ 5íAGp3èn]AwÐÜú‚`0Ü †‘`‘ Dƒ8’A˜¦‚t f‚Y +˜æà!°”e@+ÁßÀ*ðx <ÖÀKàï`ø'x¼¶÷À  ìÕ`ø_€Ãàkpü œ?¨¿€_Á9p\¿Óm¶Aù¾Àh:€Nàp¸tw»AÐ C@îaÀÆ€q ŒI LSÀt²@ÈÀì <Å < –ƒrP«Á“`-x<^Á?Àkàu°¼ ÞïƒJ°ì{Á~ð8¾GÀ1ð-øœ?‚ŸÀÏ ü΃ÿ€+À ¼ (ÿ@Z6 -7ÎàV`w‚ è ú`0 †ƒû@(ˆ£ÁXâA"HÀd0 Ìf fƒ|ð°¹`>XŠA X T°<ƒ5àið,X6€—Á+àU°¼ ¶‚wÀvð!Ø>{ÀÇàSð98¾GÁ7 |NZpœgÁ¿ÁEp\^(ÿ %ð­A h:‚›Ap;èúØ;ð(Š´Wðµ FÄ ïQ!䂈 9€$áT$!31“™0™áòŠ÷… ŠˆÊ*Þx®Š+Jð>p]]q=PÐ…ÕõZ}tÝÕÏ•ïÿNumÞTª' (ò|N…ýÖ[wwuuUuMð€þ`  2@6 †ƒ@(E ŒãÁD0 L'ƒSA5ð‚9à4P@#˜‚3ÀÙà\p¸\®KÁ2p-¸ü¬·‚;À]à^ð{ðXÖ‚'ÀS`x¼^¯‚??ƒ·À;`3Ø>ÛÁ'à3ð%ø| þ~ÿ¡Bî‹ût{ž`Ðú€CÁà(p 莩 d! Œ'‚Q`4(cA98 T‚)`:˜ª@ ˜ ü B ¢`8œÎ烋À¥àr°\ –ƒëÀJp¸ÜVƒ{ÀýàAðx ü< šÁ3àyðØ^o€Màmðø|¶Á§à ðø|¾?‚ KoÜÿÀ.öûƒƒÀ!àpà}Á±`Ò@&ÈÃÀñ`$È… Œe`¨“Á4p ˜ f¨u 悘3A8\.‹Á•à*p Xn7‚›ÁmàNp7¸<ö–ßU¦?(˜n„2©šÿ‰šÿ(“1y¤2”n /³g‹Öùàn™·,‡pù`4³/`r£2jîV™R!çy•¡9ÝÓ˜½Ÿß3Uf¼––niñëvž—qZÚã´´š½\ó_®¹5{¡sÖܾˆÙ½š½“OuÐW1y&“‡3ù,&»aY™ÔÜú9ȃôG;ȃ´0Üm “CL¬É&;×¹™\¥É&;×ñû›ß£G‰ÿ~Þ fN´áö£4ÿÜç©=Cí¿'è^šdë•¡{–îûƒŽ‡-`rí2èx[5‡É%k™\ê cr€ÉåšÌó6É'1ybdúFóh-Ýþ¶¾L´n§y{@m•§ÞÁ}“ù¹õ9ȼ,br“y™ýL.d²×!~snÑòÜÈmÛŠÌ8n*\Nœp&·¬8nÙqÜTzC n9qÜT¸aqòbrˉã64Ž›JO½®›ìºn2³ër©Áî¤ÓãÊìº\j°;Ý›¼NóúÇë«_“Mv]7ÙuÙo°;éôxy¿F—ý;×ñvˆ·£ü^ãí=ôçãHƒ»®;ÙOppç:ž¯o§0ù8&ŸÁd§>‡ž‘š]ïÛê}ÔqüpÔ†Ó³Š×© !ÛÕMGm1¯«£tãm=×Q:ü™@ý]ª»c™n”hû e§­L‰7ùåíôdͽHs§4ùsG••Ûù½Vh§1ZÓQ<]¦A—eÐe3:ü\P>¦‰ÖÏ[u¾õgZ¾Á¿ÿ)®IZ¸Ñ¶ž·E¢õ¹.Öì5û$ÍN2ïжד÷·ËEÛç=Óš.Ó Ë2è² ºƒnˆA7Ô fÐåt”çt½©<eÊp(W†CÙ2Ê—áPÆ ‡rf8”5á¼™qÊ›¸vmõ{úµ#¿|<–©Ù³4{¶fÏÑìC4ûPÍ>L³çjvuMtžOu-tž_u tžouîužuÎu^u®¹Ž®ûôë2Ë «1è¼Ï ›mÐÍ1èj :¿AwšAWgÐ ºzƒ.hÐ… ºƒn®A6è ºˆA5èætó ºÝBƒn‘A—oÐ2èôyMÒt£ º"ƒ®Ø +1èJ º1ÝXƒnœA§ãIWnÐ7è&t'túœ.é* ºJƒn’A7Ù ›bÐM5è¦tÓ ºD{hH§?—ù¸’îF™Ïu ·ÑÇÇ&;×¹5weTÄ©ßhêg‘ÎÔÏ"½©ŸEzS?‹ô¦~éMý,Ò›úY¤7õ³(¦~e–Cy³Ê›åPÞ,‡òf9”7Ë¡¼êw&½©¼YåÍv(o¶Cy³Ê›íPÞl‡òf;”WíhқʛíPÞl‡òæÊKm'=§ª™Î«Ùé™?‰ÙgÙîa¦£{ŽÏ5R›W£Ùó™=¨Ù£š½^³×ivz~ó¹2Í^¬Ùkì<óù¸:=å•Ï¿5{Ô`çï3ê5{hû¾c‘æ®ëÊ ºbƒ®Ò ‹jå©×ì^Ñö?IýZ¾.b¬h=K2ŸG¥S´<ζáv¿f×Û@“Ý僟_ÞýµÍÌÈ|¿Ç3™¿ïáë øZ„þLæý‹Ó™|&“û2ùX&ówNü\òq…Óú ÞOçﱎa²‡Éy¢­áeâëFx~âãåàëTœÎSYù5áåæ×‡¿³Kg2¿ÃÛzþãïqr˜<„ÉC™<ŒÉ¹Læõ‚×~}ô÷Êðz”ÇdÞÇsZÁß;­}(f2osJ™Ì×tñ6”¿ßám_Åß¿ud çÄßõñ~5öñçW9É|ÍÈÉLæu“ùÚ2ÞT1™?{xûéôáí+~Ô2™·§|-I“õçˆ2ü9ÅÇø LæÏmþ|àýÞ^ó5Iüù1ŸÉüÙÇŸÕ¼ÏÍÛ9>ïÁÛ<þ®6±¿ç:ö×*ü[ìïùŽý©°]~íÓ¿˜. Ù£NöGR•]›wëíŽ7ŽM<÷óâ˜þ[<ÿó¢§›¨ÿ¿uÓ$ä>5ç‚óÀùBîYs!¸HȽk.— ¹‡Íbp¹{Ù\ –¹§ÍUàj!÷¶¹,r›à:!÷º¹¬rÏ›ÁMBî}s3¸EÈ=pn· ¹Î`µ{âÜ îroœûÀýBî‘óxPȽrr¿œ5àQ!÷ÍY rÿœ'À:!÷Ñy ¬r? àiðŒ{ëàF¸Yb{ì¼^r¯WÀF!÷Üù#xMȽw^o¹Ï› Gl/ž¿4<±=yÞïÍBîÏóØ"ä>=‚„ܯgØ.ä¾=ƒO„Ü¿çSðø\Ƚ|¾ÿ_¯…ÜÛçð­{ü|þ%ä^?߃Àÿ ¹ïÏÀO` ÂÞ '¶ORWÐ Ø[]ÄöMÚ ØŸí¡d‚:¶—’ý9ZÑì'äÞJ€…Üc©8XȽ–‡Ã…ÜwéH!×JkÜim;­i§µì´†Ö®ÓšuZ«NkÔim:­I§µè´ÖžÓšsêSªoX¨ßsR_‘úˆÔ7¤>!õim8­ çßž¢5ßyBŽsi|KãZõ½¿ªß·Ñ8•Ƨ4.¥ñ(CiüIãNoÒ8S}ׇƓ4ޤñ#i¼HãDÒšhZ Mk ií3­y®ÚéÓš`Z Lk€iíïÙ"qÿ7‹ßðý/׿Yü†¯¢ýµÿ4_Gótêw”4Góp4ÿFón4ßFólêwÉ4ŸFóh4Fóf4_Fódê·w4Fó`4ÿEó^4ßEó\NíÿîJ?Ñþ'î½ýWæ§´X[CJjºÛG¢íæŽÎdL~Û‹?^Þô¸w&~§p­ÍŽd'owÛ®â?¬ayüt?žepQùWL6Äï6fFÊðN&nþÛ ûß´˜³;›ÿxa•ùiâ6fºìÂùi',õŒµMSgòß^Xe~Ú!~DÿNjýš¥ÝøÛ ËJ‘ÜÞý¯~Æ»ÇTønvØ#EËý©Œú½òVœÝóyè|þùo­Ý»‰ÉW[ÞÇοz—Rb öÞvGk“¤:‰Ñ†_XBóñu ¡¶Zxýsü±@ªk|¢!ìFÄœpuC­˜¨Ö‰š`$ Ñ`MÁ‚Qtw"!W$$ck1ß¾J»U¶5±< 9®z(Ūz\ú«Zo×´ ·î•«ûFøÅ‘Âþˆ¸«žR,O´ÏUÑöëÆä+¯{Š•ùén)Ö2ø]V€^Ð_ÿªŒc%Ž·{Á#`xlo‚Í`èhœíïÒ^°[{£ŒýçD”aŽÌÏçì|5=—bmyϧX«€xþ@3p¿˜b5­ ï%¸ƒ­t|9ÅÊAjC‘ŠzŸ§Þå©÷xêžz§ÞÝ©÷vêªcê]ú ~˜0¾¢tªÈ/¯(95kpvjFîþrÚÃ:vÓQûH2 K}óµ$j›÷‰éóbí4-×4>]èÐ ¦×úshä$ j®]ù^4&÷°ýS<=diÌå)±|Bλßß›â!¹téA)Yôzü0 Ûòu%‘¾JÎ[Ý80–ÈùÇÿ-;ÉÞË7v~’¥¼aÄã„­Ï{{¿SèH¼fi}¬ìÝåy6_9iÒ32³²s† –›?ª ptQqI阱ãÊÊÇO8ibEå¤ÉS¦N›/|ÿ`4àìΟÏ]ícŠ}ìÎÜèT«·!öeŽj×­Ïb¶û1ÈÎüöŒÏ]oû¸wÒ§±ù>Zú=lz^ÓŸÚ»Ó¸þ@–'JŸÆð½:‘þ° .+ï2—µ¬[ÀÞ‹]VÐ ¯rYiW»¬/sY¹×¸¬Êå.kŽKq,¹ÖemZå²¼7»¬Fp.¸å—5ñ6—5aµËzŒº qÜê²æâøÂ%!œññôÛãçNŸâìLúįþÈå­í¦ôõ0”¾S|MŸ¨\?ýöÊ¿«é·WþIäᣋ\Öw»¬%¸¬mk\Ö7 Ë£¸CÞwYÏ<é²êžrY+×ÃÿZ—õÊúÖáõû°in+ðâ«ëa­k½=¬qŒzX?†{Xëê{X_A^›!˜ßÃ*îùR—ޣЫÐ&·<¿\«ƒ¢´¼Høƒ4_¥ö`PkóhŽªZ´¬9+µÝÔÚ@õí0¾æíç4GwéieÛì»W‹L¢ÙûÚöALŸ£ùù%ÈGݺõ´öß \;®O²1©²@xN>5=5wÐÀÔÂSn#Êðß`OP¤EÃiµÕa_Ú¢PЇ{:$NCì…¥EC¨Ñ¿  ø…Ûã¥ÂÓènùGªb¦703Ôà ά …êDñ¸ÒQ3'L,œ_9ZœzòÂi3ð°œ}*ÞøŽÔÿzåëu°t³äGÆqÒ¨ƒñÓ{¯ ÷»ñ¹°›³[Gãp"ÚOˆõOý³›:ò¾¬}›ÊÖ™òSøÈ÷Zòª"¤ø+¢AQ ŠÊ¨OLñyE%êLQØ/*ª#nÞê…äLøh¤#|¥¿á˜€t@˜h˜„1xdùf‰²ê°Èoã ˆüèQákã1ò/Í…¾ò­/¤0ᘀ€5µÔ €> ¹‚F#:⫟å S!:"©@dRÈ/Ê„§Úí™åöøÜž’ឲហ·gšðÔ§y¼iž…B)…§T¹6`ŒÐã CÀéV¾§w/êyGïéCÌ^i»«õÞSlÙËÜkEËzjzNÒ\‡ZïMñÓó4Âì*=õdµ¶š§­»ñ|4Üy¾‚qüñü†üð2èn¼<*ÝÏѺQdçG­«/­¿ýLýfWî<>~”=ÀÂóï'WØé©õñ´æ¢F´\µ£Z÷^hûWkýyþ£,¯üü¨ò„üð2R¼ê·¼¬ü{§¼Œ>M`ñò²ªoëòº¥Ê±eõUŸh9¿ü|„ îüü8ÅÁÏ™“Ÿ|Ñòûþ-V}nܶ<‹É>&Ó¼åp[.cró3Å©¾£L²—É ™Ÿxq*?¥H·ùÿ¹Ê2ÝP.“iïù@×î <šÀùàb°,ËÀ p¸ÜÖ‚ àEð:ØÞïƒÁvðwðøü|þ’ðüÙ ô}6KÿGàØôi äƒ1 LÓ@ÌM›eyLÏr¥¿¬Áfð9õ)@Ï÷S¬ÃÀ0P "`%h›ø ÅêÜ ä   4€&°¬€f°tÝ‚x·HÿÙ8–€SÀ° 4ƒmÀÚšbíÜ V€u`Õ«mYŒü_—žtÅf)/±¡ò]EeÚ*ûIí]_šë$ß_“Oƒ'â™êÁìöëÍ›5üÕÜwŠÅWí)÷Ì^0  «X{z†a)Hõ,r{*!ÕxÊMÉ´›>Í;5;¤ïåk §ÆMOò€)òN¤OýÓ©ÛÚÆßÑð4ç¸ÄSZ1>­tt;#{HN¦ÛŸ1,è.*,(HmôEÄX_Àë®ðׇ‚¾ ¨ƒ-Ï[Îì­³sÜY™™©Cr²³¤-+3GÚ§Èœ.2rs‡¦fd¦fbРÒSY‘VQ™™6¥83Ýêö#¾p°:â«þE1ù+H ¹[¥?È]Qì ÏñÝù€Ï=l»pljÆŒ÷Xt¼‚µÕó‚îÉ‚J1‰çî„´K;œÈ®]š ý׿r;ÚG`Á1 s»¬yÛ[×BØK@óöÖuÅh’º$wíÖý¬½z¸zî²O¯}{ï·ÿÔçàC=ìð#Žtutßc<Çöë?ฃR§µÌ§?~Ä #OÌsžV?ù”§Î¬ªžUãõÍžSë?­.P 5Ì 7F¢óæ/X¸èô3Î<ëì¦sÎ=ïü .¼èâK.½lñåW\¹déUW/»fùµ+®»þ†•¿»ñ¦U7ßrëm·ßqçê»î¾çÞûîÿý>ôð#k}líãxbÝ“O­oÞðô3Ï>÷ü /¾ôò+_ýãkzý?¿¹é­¿¼ýλïm~ÿƒ-[?üè¯Û¶ÿíãOþþégŸñå?þ½g‡2 ûF}fS¨Èå“Dá¤R)äNÓÅýRÑe˜Á0ŒfÆ]¥‘(ëRm¥T²ËªDi“Òî[I”•Ý.«\Ri“KþsfFˆÝvÿçvÿçÙ=ÏóúÎwÞËyÏ{Þó~ß¹|£íõ›·íï~{ßñ¡³«»çc/2š÷ô }àþ2 ûwŸ]CïEÿäÙeô¾òßÙµÿήýSg×¾Ÿå‡CþÕô+¬£ñc5e@~à·Ý´?¼ÿó;©þ›r¿â}ùUþfO‹ ýV26$‘ÔÎ1[Œ‚[2h6¿»}¯#_zxìf©Òº9’“Ô_Øÿ…O¿H1`§gü½2^VmMüTÅÑWëC‚Ü–«I¿¼ºpÒ1ß+ßOœ¥¨ºìž¥‰¬k¯Ïy¾Û±¯>°Þ蔺½¯¨‹­k n¿õªnå{©/WöguêàtûñÞ„×Ù¦§p33–g&Î-©UV»(/uÉÖÎãyZyXBedq¨µ1¿CçÜÕï4îÍ yy[KmÂTåBÐåTºÜáçŒü–ƒç <öLwYÝýkúˆî‹•¾Ý¼Âg准äí…O¿Ïûz ßWÞ+œž&ëYÆÎ?jÅ__ºë˜­ê›ù™ìlIþ±$yõ¯3ó’jî–W)ú¨|Yí¿-‘Ú”&ót=ßyjÄÇe]P‹·WÙµEù²âÌËeµ5‹”jônÈZß‘m5ôMèâü¼Fý7+µ5oeíÑUÕ¬p›§ù`Uk«†S»á/•¸¥>W³Îè¦NKk<2rJVÖ2v™÷%KZ² Ê“üDµLùð„šÄQ— *V¨9QovnŒòå”ÒŒ’ãÍ­Aïz»¦-dµŸ3K™Ö•øÑN¹.!¶6öðá³±tˆÝ¾rMÓ¶«§tÓfd®ø%q–ÿã’ýOLny[&g; ½zògcèRk3Vñ´Ä'îsò:gîïÚNrn¹”5ž^ºeÁ(ó1±žØ Í·ítÛmj#êsgÑ].ó§œ}~„š™Sž2ÎîýÑ]O3Nj•´w}Ž•þ•ƒí†iË ª¤”«kµþÄéÌK"5ÌgùK?1[¼¦ðö¶_èv ÙõI|ë¦Ð'Ï$nµãÀ³ÃnA÷?|CåÇ—…ÛN9íÓ3ÜYúбòuupÜh=C¥xzdêvÇÝ`‡oJOÅjýMG<šœÝ4o´¬ëjP‰{ûóˆ^$ŸiH*7¬wå$íÑÉ=bå{Fÿ-óúR¯ öHx’¶®œ–Ê}[­¦“{âLT†¹‚â²–.ç]ÖjEò¥Ÿs¨4[}è×EÌÑ]‚«?ìÈ«®¨žÙ;?Ùꬒ5Ë=çÍm…ÿ¬En32ãèy5ÎʨÒ?šøÒßydÑËëÑÔQû/GÚí¿¼ÈÖl²nÿVÙ„ãç÷ÈyïüÀ»îH|¯MÚ*²¯ùÔCåáËgç_}õÀ·±-ÝV°9Ér}F`÷蘔LÚ¢-šfxîx¯è±²€“Òƒ|”œ¯uüÔs¯ÏõWܽ´å¶–µÚ׸¹(™Ô[gŸOàï=«æ¢ôã®Û /쫟s+Lfýñ²Öf7¹ªãþ½Aïºâ¶tm\öJþ²UŠù¡„fV‘÷:½Úo,±íÐÎËb\£âäv/Ó­Ú+­¢Šu„`)ך%k c mRS$9‰?•5Ô_­p_“/«ÐyoŠ9^ßãúþ>åìkµ e©§Õ;ã‘÷Þú–{ñîÄ®™÷Qc­nÛ«éójê.wÚç)+þ˜t3|q(¥ÿ@Ñœµ3IÛ@îÙjí iÕ¿àªÏu^¼Ïñj}crš1^7£i”JáüŒ×uo¹®~ohPV­tpÒ³üÉO’î Ôßw©+>Ñ(ýe§û/ý+é¼ß”mö¼ª_£>&oWÛÝ1ÖåêÔàêtæ¸üäÆ@GÞñÉ]ö»žÙ2¶Ý“åÄ–= (ùz…¢Í•¥ç cÔÖ>Ôœsk‘ºjã­ß„>>WM+³xQðøB¡_ Iy¦Üͼ2SVÀÑÏO\‹• Ú;Ò£ækê‘2±ø ^ß´gLGÒT©-UÏògŒ•/•’þª×bOžëÄBù0{åè1íôU¬÷¼ä8¬g´E”d±š, * deÖ¦=¸ÖtÀ=}MíbGëÒ•GÞÏ3¥"Ùlîì =¥–¹éÓËéœOd¼%;(¯/:|1h|Tƽ•%Š)FëöÚÛHŸ6ŠÏxq‰6êF­.õfætƒæ•¬ãZ# e¥Û[•ÖH¶p“æ¾Ùmìx(íªÕXÃâÂÌœÐòÓŽù©ž×M¤¼z™Ós-_>~tmcÓûï÷þÊn%LÆúSÔ¢Nk„t aG8cKì oúæ@sýëRGŸò9ºµrf}RJÓ¡÷gÿ¼ŸYdÞxóNüYãTË^ï”›o·OcêVHϪ\º¼'WÝ4ÔÈi².eθ©Š±Zµ5úój6}€ø¨£êûÊõ]·üXü¡9ô¥wÚcŠÉeÃÔ9UÙ³AgåÚéë5´K¢ƒ |¢~­Ì±¤êë%§u§åMÐÔU×2ûʺ~­÷¹„Ї¼ôü䔵m'êãò¢Z¹íü¯ÏD¿kÖ^[\ó>+ »ûn#Ùôºüã«xÓb¶í»ÙPÓ›™v±°Ö"Ì |ÎU•Û—ðIç*îœ\0Ýô¹ÒÑÖ•¿È'ëø´f}Ô_¢š©uÉDõiŒw,ewñ¶¼ÊÙ/÷…wQ^ÜVº¶]oæ“}Ž•ò³6TG|t N‰ Kðe &ˆ2<‡ÇbXÃãÐy­LˆC÷›Os .ÇòbM&CÀá}¹?Ô›/` B…;^Ö.®ªŒÁA_1a;7ºõT;º5j‡„âŇÃåÿa¥ ‘³…ö¥`Â#vL‚뀬Ú×Ãľ¾DÇÜFIÑzâþ8fn)‡Åfì­)¢oSþ õí‘ôí“ òõ¡èÌCl/ñ²ûùAÇîþIý†Omâåá¶>=cE—Ža þÿÓ»÷³ûÏ5tw¾^˼#ûâ1¥¾_É/1|Š×(î‰ãõ§²k@ñP;¡ØÈßx,¡›û°¡‹bpô¡Ð¡j^È-a 6GèÃ:H6O¤ ”ëÏò >4 o÷q ÍË=¨ ±þ},â2 ô–þþícÄPg¸³xÁ,¡Á§9“‚…³ý¢1m¡oˆ†ô`eÄÌL–¯˜¶Ûú” þÂÄ|•Ó2¸„$zg`B„RWè‹“QÎ)'§’É[H¢w{´gáÔÙ‹ö1 Y|³„¥Œ”M9^RÂP-Í (Xq@Å ½¯ν²Ÿóˆd¢ù͵³·mX™ÖÃÊD{·7\‡—‰öñÑÞj©{gïøA2Ù àV€j%”iDíAõæ»/«ïÛ9²„؈ÍͯHãoIý,¶¥„Læ˜hžcX); i È" €[ª ÑÑ_˜'[Ì…yª;:oÝJ¸®G£à^Ø:€&jç~[ Ͷ¡zH8BÂPûhÑ~ò¸Ñ\n(m ­Ð$véŽörKµ`ÝÃÈu8éód‰EwäÕ€êÐóÕcy–hSðÜz[l”„Ö÷ °™°:¤F´«ÐÃX‡‚ŸŽŠt´ -:‹‘i‹ mýP{HløBDM] Èn€*œC–Bú´É|ŽäPúEPõ+€*ÁDÀ$–2ºÜ Wª+Ä.D úQ_âÐ7~Ô£àëÈCdIN"Ö,)%¾Êˆ®P>Y8·µ†¼ŽÓ(ø7Rý¼t±l@–| é£m /4IUd͸´D(PÚUI‚ršgÁöH ÕAÊp‡íFtE¯3‡‚¿ÆN¶€p…dÂyy¤#æRðŽaú8@Ô„l¡NžãâCý í9Îò o¹‘')1#É—2Oøi+Öh™Rp½Á}l†æöLˆo‡x¦ÔP=Nj 3¾js`«9 Т™ 0ØKÎÐ=–@“O# ®¯Ê[bE~1 >¤?²OÄoøÊx+Q},XËz4^}ºÑŽ5ÿn€}l„í„®&‘I=†¸ ’oÛÕmCÁóIŸÙgdÛÙ2 ò‚t¹v|y¨_Àa"O‚­³ÔÑ0h†>á°ŸüaÌ[HÁ‡é¿x€Çôõ×%ô­ùb ¾j(7ÔhÔŽ4/@ dd¿vHÏ´§àúƒí·U,ìØOi¿€4Ä~L@æZ(” pQ‘žÖè· (xÀ`y @õä(p Ý"G þfh¿øêä 0ü cãNHkîDÁ— –¹FD!òƒRH³ÒÌL³Ùáë ¾âWÑK„ïFú8Sp‹Áx7dá³p†m‡ø„¡vµ8êìå@e9ØÿÃÞÕ@GUÝù›0Á›ÉLjü~¬ì!Øð2$Y,’@HBÁ&“É›dt>ÂÌ„A˜©Ðª­ö¨Ç³KW»Ë¶gOmëZNëYÇmüZ©k+vEa·¶µ»ìÊžu=ý°°¿ÿ}ïMÞ›yù$çr~LÞûÿþÿû¿ß÷¾ûx§Þo€ÎU-vþTzÛA s1ÔµPÛÑêénp“à^iQ¾mÈÞ^-/žïÄ&;_kkîžq³ìð‹¼ ±êpJ?oçÅÎMpŠdïC¶ ²ÏdkàÙ¦ §-m0çÁ:™o¶ÉÏù༠Î×i"/á,ú¤\êC©Þ¬¯{³vFF}G~åþúáGñû$å•ÿÀâV;¿7³>l#•Ñ!pJ·šËHä'Z åwò ä/fÚ½;º) ¸6Qž§À­Üf9–6‰þØ‘»ÕX 4.Híë6;Ë¢O^™#Æ¢\´X”.zúv¬DµðÈœt·A÷‰6;?n¡{Ó0ºäë£ÐíóÙ¹ÇàëUc3†LNEm £,)¾£Ð¡÷ˆ_¶ˆïZu>/"»]D†Öž‹>·Q§y>–°vþ¿,­/Œ¿I¨jã?¸ñ.;#»]4 ¨Ûõ6Öî+;ï4×/Ì]¸' wÝnç-fùvjƒTwA¾òë ò­šîs†ì i¶×CNõöäü;ߟY7¨_D·®úhÃâÞÁþlz?bÓê?äônöƒFùþ¢j“•/ ±äëZð¶í¼ÄÀÛ Ù]Ñ»Ý;3}¡bߪ÷ Á£÷¾_ËäaÈÈ}|&ûGÀ£wį6ð6ÉsÕñ2zgü+™66Ê%h®\-ÇOÀë ÛyEf?Ÿ{¿lCМ‹J G;6cNp¯lkݼÚÿ×Òmçó-l~Õ`“êøîõ=ø]ã/MžÖ+]“lSÈeQVOCdzóÍeµU/Ë7 _ ùR³<¤çÛiÈŸ†ÜaL‡Ö?8pò9ÈXf›C3ͽ[æÅdm†¦b¢óÖT¾ô|Y!j˜ƒ8Äí±ó'2òn_*]À9²#³ÔÁ7òû0ä÷õÚ9=ÿ¼’äõμUš¬²Ã2Š{²þ^C~¬¢ò˜±Jf5¤os¢.€S¥sV;ó0Á~I]µÏœŸ{ÖP!Ò:Òy ä͆<£xoÁù²vþÃ̱ µ¶Ù Î÷ÚyŽÅø‡¥Š—&è³vÉÙ; î©ûì¦õ–ƽMOŽ‚ã¹søô|n—gõÉj=> NœÍéXAE»IÖê{I!êÃvÍŒæ^16Šò/^]º½Íò,ZèÑ<³œþÌóL}ˆõ*:sGµåNªYŽ5´ør½' ×ý ÊÕBo­ 7 òí2k§.„|"½cлéQy8ŠÏ_³óÌ4o#¢/1U§{œKÁ¿aç§3ÇZT¬ËpÌWÈsëå’±´¯•ç7b°K¬ÒWè+œjÕ×íø»Ë¬¼J.Y _ŠÅ3úƒz™m“m«„ÏäG~t¼‰u¬…/éa%Þ ü@ñæÆEÆèo×y)aA¹VWÎdR…¡çÒQ“oÙù›kÑo Ÿ_ÒSŸrè6Ãu ,³ä?E–¬Ò³ÿç1Ÿ"ßhú>|{ø¸ÿ·EýL*•GkRy”riµžò”µ‚·Ë \›RnÒ3©AžUOé¡‹­ô7•ï³!UG}—â¾Ù(Óv~Ÿ¡þ5Þ¹ XÝm.ÂÌ™¯¤Ô2,ôWjíì(ôg´óyÆqÏ|I(u™ y¿ZÖÚ‹ “æÊ1êQß· z·œ4ÌÐoR?Ù‚óûpþß-úµŸŠ"j®çþVDÒ ò…©ïs„n×/°î±(«Ÿuï×êÅ¥¥º”`?eˆv°Å]39 ûýïÙùÇÆµ+YÇ ½Z¶mÙÚ-þ§JvF¶Ý¬ˆ ‹¾oÙøº§€;,Ö·GÑ)S™¶óQƒÿÞ"/°ðï¡E)ÊTWôùÔ±JrlJõI‡æPŸíà‹,ôi§öècûQp¥"¿ÒPŽ7Ë%bmòd‡g9Lã”nç ló‹ä)Ôýªó˜ð'³üOcöš¸3ÌbnÕçQõÄ-vðÿÉàî6qi<í÷ô¤ó[´9íAÈÛæ:¸×,ékó§!ï‡üGé8ŒüØ.–X÷ÄÕ¹ÇøŽË¦µ¹êÛf1÷ Ž Ã>p¾žæS­lëÕý.gV‰ƒ—[Ì‘IÞ¹ò´k@bŽ-æ¿!ÿ¡Åüw»Ì»Só_ðJ/wðG,xµuñŽ€—ïq ^¯˜¨©¼ð¶]áà•ÉkÆ\x—ž>~)ʼ´yåm©ôC¾ìJ‡å¼’ò°òÃ7g䳸 &êgœ·¯rð…ŽW«o ;úºÙO­\»å¹!±¨òj×Qž!_ö;ù_¸«RׄQãæ®¤‰³à€;î·3íÞ%Ï ¦ìRº—ÁÇ¿uòw2¹¹A­Ë¥Ž [Œh¦+Åð$®6B·ñ°Óòšä ºí¢GZ#:‘Uivô½ëÌ÷%è ,zãïÙ{ΜïØx µ…³j çÖ–4Ñÿ³ˆB÷mP¨ÐY£²QP†ºçAyDå{Õ×Μoÿ¤2Ô<¬Óî%P:\«{ c ‰{ŠFڦ𼄾w²RïB)S’“Ú;ýÜÕÆ‰ñ.WÖÆTµqÃÒ…’4¢¦!íäNœ/î¾2rg(;%©#„„…ð%Ã6³‰=Ä?þ]L6Hbi©3é鮑”—Qþ»]Cæ¿~o¶ÐpÎlE•çk~ˆ.8‘oQv&_Åó& ‡EÙ²?N7_÷•-‚Þx<€¨º½QoH¡‡KÈë%þj¹ráÐ}¯ê‹9bo[­~[šÏ4šz[}˨HûÝ.šð å—>ß³ΙÛÞŒé=NÔ|wº¦?kûÂÚ®mÛT³=]ó{ºÚ¦kR¥ ÊD÷\¶ Ì⯅Ã]ûîšTŽ!îÒLæ>?a³Ð½Dü–¨›o¡ë¥n¡…îlñkõé4sÎaeópbòpЬ·-Ü2¬n^¿as=céßÁ9â“Ë/L*©—Þ¤w†)b2ÁQÖ¬ŸÌ,“È9ê*Fò¡¡©¶ Ýçºõ74®®3»ÂÌMMìû  QëáŠHc̈́ק‰¶×L v°‹z¤WÄvo 9¬UGJ*Z(F‰ÃØÐ ú«%¸fª zAõã]u3µj&>]4ߢ¹ÍaTo¥Þh} æ»u*R\£ã¤7è§ÖïÊåú=Cë0ÕçD-](&mϱ‰I{$ÔŽa½n<•Èsåç¨_¨ò^º~ý7Ïpθèý“·ËUê]\U¶Ôåu[ªÙ\V×YœSmbï‡ô{Yg†IÃfo4,6~iè‹G½†@ t†#Q¥ÃòŠß`¼õ®nZexÄF!ƒ“qY½¯:¨ë] {:í£1ìUìÁî.ïhˆíJ|T¼No(dA摌L²Å”Elp» Õ°è{ÓÕXw£œO|º†eH1M“$±‡Y¬ÃÛ ö„D§Ú@¢ƒƒ;1ÚàÆb’a`è ¡1ЄDCÎ Î\pBO†ÖQŠZöøc-OVV0VY‡ÅãrÆ<ža+ÂÞâ½×ŒÄ™Ìm“Ö>Œ?‘ô-iÄ´ïTh'Ú®æ zc1%Õ.¼QEa´Ÿ”`©õÙ$¾¹Œ¿1ˆúÏØSÝ'Åï`»0‡½×ì-N?7ö@q%ž¦H ¥6m ï€ï­×z‚Þ(ŠúF¶ñiôžr÷ˆ¬óhî0Öë^zH•§o +½úu Ôƒ·'ÔíéšA,ä Žô9¹ D'1‰AëŸÄÞº¾Ù_ˆß]3Ù>Lfø´—6dç9Löø3ù¡²îÝ¢ÕžÉÓ?·šÿÄ"ÁJ«²=ÖŠt´¢WÇ (ôºÍsŸùcáû"Á1ñañÔ‹/¨ë¤ÉÒkùOŒÏS'ÐÚ%t‘Ô¤éÎwÿ3¼N…u'„ú=‚ÎÑØÛ…tŽùç)½n¡ ´ûËýH¹/túºî}ùÕ.Ù•ïr—W¸Ê««$WuMeUMÕ’”Þ™¤“|üx8üxø¯7œü-à%à[ÀƒÀn@6À€ä¿8yð øÅëNþcàÐx$àðêQp€6@^Ã1Ð0 ùÏà`60ð*ä@  8ñŠ“¿€`@òe€É—p x$_Ä1àìÇ1àü1ŽÀ€ä?áð0ðâ~ðS'ÿKàËÀÀF  ¸°o/ÇÞA>Ï<|Ø t °ø0`@ò¸“ÿ :[å€ ¼ø6@þÕÉ À0 ùs x y< ÀV  `@òÎ>À0 ù¦“¸ð?sò#À“@ðåÀµ€ ø¤õ™Æœö±<‡ä`¹ì6“å3Îò˜å°íË Ål6›ÃJØåì v»(dEÌ)¾½4æö(÷uy£åþjWkP ·Æ£ÚJÜù®%åîJj%‹kWÖ¸Ýç`"m>$èIt t¹"å<Ç¥‘å÷7yzÃ÷=˜[.ž·èU˾éw/ø®8ñ͵žst`È~înLÄÞé’–ß$1‡ÓCrΊðá06ÃÚ‡òž‘ã·þnÊhƒgçÿ˜ŸÚæÐwòy?ðÌwÕs”ý>ï'‰"~dïÕâ<ýÒyý»*ô~$ýþÜï/?*äô}ñ±ÂÓ7¸×Î3¿vŽkßÝÿ5¿qÒVñèջ唓O©ööΰæh¿lÚožö¯§}µho2Úûöñ¦½äioWÚÛšöo/)ppÚÿ™ö`¦=žŸh?ç ½v¾­×n™Ý>íã>”ý·‡°ß2û´ïûXíÖÚcög§½yi_cÚ ìÓžêzþÐ^ÛûøíÓþßFû´—4íÉ­ûOûS§ÛmþýƒiöiÿiÚÏZ·?VÿGªWãåNõàÙ©¶áÒßÿñ\ìèóœC»ŠøY-Ðqr×ø÷ãj»³hÜe4]‚žÿûÆ‘ÿ‰ÝE\Ï=¿Kî2ç¿ç®lþôü¿g<õO‘³(èùýèž´ú¿çÜò?±@9S\ô÷H:ˆvoûœü¶K0Æ_[À6¤tôùÂpßd#}Ò%'æ˜âÓõ2Ÿ7:¼ya@ÃôüyðD!';m>e‡dÏ,äÚ=î½Ï䙹$#Ž.ïO““ìXÞ üßÒä$3ꟶÐOä¹3Ír’õ‹ÓäNn–ÿÙÌLûÄÑåir%M……¾bÐoN“ߘoÖï°Ð'Ž.ß•& Çßú“À-à÷¿Çß—A¿ hüÀ]À#À÷€'Ày¿¿ÎWÃÏ¿¶;€$äïßÃßß^~œ¸½——ƒ·8?³žP}p«õ5ýÛƒT*?c-£z`»ÜZFuàÔ•Ö2*dzŒòŽÞ™¦²?,«mO?§s¨Ü÷Õ¨zú·u•ùÀçÌ6u•·ÞžÓÛ!•µÞVÓeT·ê­ãe¼Ú:¾ô òßam1 ååÄÜŸ˜­–Ãiü~HÅ…¼èÅæ2šŒõIz–^ãà¯õ×:ø1 OrptIŽq÷Ñ#…¦‚1Ù¶ý¹ƒ'àO|¾CÌoOà—¾‘A߸xnžCÌoé;}Û!ÃßË0m¤^õœ«wp~;ù;ïø`>Üâà®[|@/§ë}ðxŸ2…Uuu5R骦M ¥År…¼˜Þ&[ìªrUH¥•ziLZ÷ô©ÒE• /œNÝÊ–j½ç¦îf³ÇÙãÉ<.õúo¸Aª”]æö¬túb‹*äj·¼d‰ä®®®v-vW–«­¹Tݲ[® '€oLÉ*g•³ÊYå¬rVùbW.­­«ó+Ò rUúAK—"5)ñÞ@‡"ÕÆbJ¨¾Zï’«—¦ˆKÅ@;±Syº?•uh_åÙ¬˜}ÀèûÈô’­ìgKrh6;'9;ÏËqÌÍã3Åõµ#95å]‘Rûpt•b‘ö=ì–ÜÚöXÄ_ö(Æ¿6ü>ËàúdÇLœ9)ì¯X¿n…É.}Å#â'ñûþz’6zæSwRÝÄ ˜Îy9“S¤sôˆ‹ˆF.Q—ƒô2E«^O¢»z3RÙÄ_ÿÇÔ7vÏž=©]L<{vm®¾kšzõÂU!»iK’ì¹ì¹ì¹ì¹I;ç–]îì¹ì¹ qn*ÕûaÎ19¶3÷¶ã7U»ô¿á@œÉq¥/ÎZ[ƒv_«?ª(Q%Öê3Ù1“£Ú?K—ÇzÚ5Š~Æ{ÈJ”½!…É‚/‹} p þÜî‹2¹3^{,–Ywœ(¾Hˆ^‡ŠÒÞÓÉdñ 9‰+ríŠÕ‹âÞNõˆ6\ÉïõKØø1F_v ú½Õyû¢Mýþñ’üÏ£ý.0ðêàäõ7ä³à ZýÏjoþsN>Y¾éP·\ãьΞ¼krR¤Šíñ¨Ëv>oUÏU=FÌòx—÷ÎçõTÿG¨¼DOèïШŸ>¯çÃÇ •ÐÏÈD¯gàl5—r£Õq¹ß-Wys{=™SÏ./ÒÏO'ô×!ÇåN.wvz8Uú7ÿ™GŒõÿ#ÙhÚßÏh?ÿ¶;ÿ­ÌPÿE¡ÿÆý…þÈſمl9×—û#ÊqÀSÀqãø¼.”ü?õáy^dÔç ü[lÔg#þMî©ë³ÃUž7i»üáò\åÅõC}Ë»©ú6Gˆ7MÂú"íùÎÿ-Bú”ÉA)éýQgÇk/xwW| {jb%>ÔéòX—óÙù:ÿtW|¶Ë \^âòz—_ˆÐž¬[ƒä“ã½æŠ¿çNïòw.Ÿpùw—ã£ÛÚéÏiº½Wü—Ïwy°ËÃ]årŽË“]¾Õå.Ïvùa—W»¼Öå .osùu—÷»Üär‹Ë­.ÇÆ´u’Ë}\¾ØåË\ïò4—g»¼Ôår—Ÿrù¿]Þáò>—º|ØåãpN’KµáùféñÖ/ Ÿ‡ gâE’á¼H6|^¤ž©†Ëð"ÍðÆXUŸ%1j=ÛËW™¨.Jù¸¢;Ñ&‰ï…³{Æ+ÿ®:Ÿ¨k´òçðÞÒPùO ^Ô> [Øbë w‚ ÷… _ 2<n2<n6| Übx|Ìðp«á•ð ÃÿŸ6ü<|Æp5_" 'êìQí;îìó]?\ŸïO"Ä[Géøaijp~Êù9©¼þâ3óÉ—(e7M“ú$À'àåâžpùd¢›ÄépÒ¢žâKáLøßâ1íÎ>~qž>~.âÕD12^ à™‹ôx¹›Ë/%zYÊ[ØŽÏ7ÑKâr¸d)ÑÉÿ4Ç—•Š_„OÏ%ê«üœ6“h¾Ä÷Ãg•Éøk„3þM)¿®»í‘ô'àšéDÅQÇgù$N¹ Ç—üÉp%\,¾Nû+Ño’œt/Q…x,\}Ñ.™¹ñg÷_þúÿ¦Eˆ·®ÐñÂñ²U:>'^9Oê·(BúœÍ:ý#‘êS¥ãEˆgíÔñ âÅ{t|s¼òýRŸÝœþ5¢âà¢Yúzî Üø¦®ÿa8c/ÑUâcðøjñIø¯ŽÅXT)ãç¸<΢ǥ}ó"äo·Âù‹#Ä=_©~t¼,B<§³Ž?!žŸ¤ã"?UÇ7Gˆ7õÕñmâûéøn¼ªŸ£×·wàFßñù3ü/ιT¯Ïßñ†OF:Þ`}¼?"Ä+.×qÛjoÊï(å'[gç¯ÎÔùÏC¼É¨ï€éëô—Gˆ®ã£9>7H—Hy7DH_6B§çëÛ|#ýMH_1Ör>$Œ–x-⃌xþ8/€7]­Ë› ï0¼Þm¸~Ýpü¾áup½áðW†·q~>bx/ÇïR;©ï~xÈ‹²ž;žÚÖÓnÖn„g8£Õùk‚Sà$9ŸG,õLg/iÿI˜Ÿï í'í𖞟õL“x¿Å_¤ôÐx€÷î´èŒÄûÀÅ©(VÅÂÙ+õø ·ÌÓãcœoħÂy†çÀ5O[Ô,õ)†+žµè€´ï›¯-zÞR~.ÜdÑŸ$^ §=`Ñl©ßN®ÿº=oÀ‡Ð¾#²Ÿ×õ»,:(Çûœë÷®ÏpÎ ‹†J<Îëñl­´èÿdÿÂYk,çÃnvg¸ò‹~w‡Óö¥ÁWêó1gį„s O„'¾Î5<^_mQ'i߃pœ,.ƒëá Ň‹w[´E¼nzÅ¢§Äoñ-øKq#×ÿU‹Hÿþ Îû_‹¶JüG¯º£êôœ‚ówùIÝ¿ö´Çßô¢ ³A8û\°2ä€çBxæJ}ÿ#ö}d…÷ÛËàZxºôçŸá¯p>$>^oôÇõpâW„æ7Üð¥E׉ïý?\nä_ ¯5ü8\ax£OÝ?Snçùȧþ‹ñ‚7ºÒ¯u¥o~Yõ§ÿÞ~Ü¢2Éïñ ûÆO'}œ§#¼÷„E£¤þ|/õ€Qþ…pšÑÿƒøÛ½z¾ñü¯4Ú{âuFþ±pÂ)‹úÅ©òo„3µ¨‹oºŸï‡éòïkÍþâú^ ç£þ<¸þá;Züt®´ç9¸Øð‹pmÄÇÀ'\ãg½kü¤VûižŒŸIH_ù6Ræ[Œ¯âÇa~Îû´´ÌÏe§‹ßçú_iSøsnÿ6í·Âüœó#☠®gót{»ÃüÌrèzx(c´¯où®2֎ϳi°”·0¨îO«x¼g[P=Ÿ*ï z>·FüaP=?ŠùùÑPüdP=ß>Ÿ êùÆP< Î*R¦¸;\l8žPbÓõÒþApÒJ›NH}GþUvxÿ¹ŽóÃWŠoƒó~óËþç¹ ®\cS“ÄçÃéÆ|+åú!}‚¤/êa?7Â1â-p‚ÑŸ;àŽ†kúi¿Íõ_¥×ãF8ňÇñ“pòó6­–ý :ÑãùÇ·äø~¸Ù¨o7øÄoz¾¦s¼Æ¦Kþ!pëv›Ž{•¯Ÿ³é9é‰pÃk6M•ý6Þþ‚MY2¾fÂ%[lzBÒ/†Sú?§^§þ;¼#&@¤~Ïsy_ØôµœßìCvø~C¼÷Ÿ6’ø§pÒ‡î7 ¾²iŠ´ï8È'¶Çþoÿ\¸ò;›¾ôÀ«ô~˜ 1Ò_ Ç.Ôëû8Ëˆß ±iQ;U¯®õc=ÖdýøÒgùÂg¢½áë…r¸*ÆK#¤~OÁéð2‰¿ŸŽó†Ç÷xM\€‚ÒŸÀÏÀ¡ý켟WŸjÏ×A*ŽRíi‡Q±(HeÒ¾NðH£~½áìUzýìçã“Û»ÑÕÞäWür=ãŠô%>/=&ço4œj{iøú¼?xi¿´ç89à¥ÑâYpZßxÿÍZ¤©ÿNï 8ûMhÿ(4ê»ñ̉Þðþº†Ë3Ú·^fx ××ð.x¹á}pñM^ÚåÑç»ÒÕþ!hÿEÒþ‘¾(_ÿp¾ß¢Ëû.G|²Äe¯j»mu•_ˆò{Hù66ÎVäï#ù»ÀM¾eH €SïðÒÍQº¾Û]å-Gy­RÞHŸå×ùsàbÃwÂü,ç8ñB˜ŸóL’ë'90@Õ¯‚ùÐ$ñûœ>!@5’þÌÏ„†öþÈŸ õ‰“`~N49Ô˜Ÿ Õg4Ìφòß󳤡õz1ÌÏ•f‰7Â%AÉoyªàZÄ{H|—_¦ûÿNoœx#œ >Äùá|ñQ8ç>¯3ëu¸ å§œ£Êå7i¨O?åNpÖu:Þο3@Íc”/SxÃïW¯„Ó _ÍñúÅKý¯ãòàBéß›áÚTÚÿ8þ¡ö|Ž~ˆãi¯å¸áÍoÐÞÉqÃo™oyi Œ·áâ}^Ú-ýñ5<î /eÈ|>Îå}  ’?º3Æ÷Û^šáÑù—õÒq'Ä‹z¿ƒË s¼¢QŸoŽ7N…÷vôÑ«R¿ÁÕ3¾+¤üL˜Ÿ÷½W< ægCñ«a~ø|ñd˜Ÿ Žÿ…oäóóÁâ¹0?+/‚SËôúùœîr†Ë™.4¼®5Æë8ßðvxZ™^_…Ï\ꣃ¶ªÏ»ÜŸˆgIü#8g°žÖëE•k½HÕOÃe½øšûÓ8ÞQxÆgz>þÂí1®¯âP‘z#}®3Ün6|>|ÀðÅpƒáËàFÃ#áÃcàcã|ÎûnÏT¸ÉˆO‡¾žVª??æöW»×_´–´1×oŠºJù+’øúÜG9⧸>ˆ_$Þ '#îï€SœïáþªåõMÀù½/ö»ì¬±Ê Ü£¾GàØÕÚ­ð #~N2â¿óñ ÇccJ1ÜN5ÜN0<€72×ÀgŒã ƒ[ _“‘þ*¸£áñ°Ïðø´‘J~ê£Dù°Zï?»áCFÿ½Áõ3¼n6ü1ÜbøK®ïÃ~ºXÆã÷œ?V×ï'Žoò;ûÇ­sq}‡î÷$Â…›ýtPÜήôÓÏâ>ðúíþðõß?Mªò‡ïŸBœ¿çï'âx#àòù^÷âëE8g¾z¿ËÎçÊ畉˜Ÿ·Âo«ëÎ?ÜòˆMQQ*ý.ÿ«xg½n¯†ëæéüëùx¥6õ–øV¸æn›RÄ{àØoÿNÍó9Ÿ/±Ïõ„8ÏpYŸSÿzLœˆ…#s˜í¼ŸcwƒëF ŠQî 7u‹£iv”ãKà\¼¿é/éÿ Ï-°©^|-œWªÛ—·žcÓ[RŸÛáiOÄçÀIÅ=¥ò/å…ìh<=f)¯…}k;ׯìçà½3,ê+å½ÔU}>Ø^ò×À¾9¶sþØïÂùFÂÞ l9_ÇáâY¶óy,§Å…^ÚV?õŠUî ×4].å¥Âü=)Ÿy•G¹©êþ+{,^”\`9Ÿ³sáF{gÁü}‹]%^’Ìíï&õ xÊà¢(<ž„›0Cå?‹è1âÉêûåþ"ý±Îßp>äö„«¯ñщ7Ãy“-:Äù£1ßàÌã–³Ÿpyü oË>%ç÷ƒÙñÝp¼ktûÆøãñÖ®½Árîor|0\x›Ï¹_̾†ãoëÄ7³'½ .€·.¶éR©ßßàœ×-çú‚ãEðòyúü—ÂÉ%¶³Ÿrú•pÕ?ýÑGÅ+à”b}¾7»ê» Î\ê§g¤¼ý|ü«(\¿á ˆþ*ãÿ \tØ¢•~åo»éñÍçó'>^y|ø|þówœ<,NèŽë»"]Ÿ¾ÝõùpæœÒ…Âóixwõû;d>æ‰Ä¿€›ÞÒëý/®ãð?üÝKý»Á…˜ïwIþ¾0'Ò©Ï(x}¹^¯®‡·Ïð9÷Cœù/_h;÷Ùs¸¼w-ºHÎÇ"8û!‹âä|/‡³úøœû—|üòþÝc=¿Ös~ì¡ö§èý‚½Ë+·¨Dö¯Z¸` Ñn)?ÜÐÏçÜæx#œRêwŽÇñoRø|ûh‰ø8\;;ž¢¤½¿Âé?ÛÎïÛ°czb}|Ì¢G¥‹¦H}7ÁÙýÕçoÎú7øìðþ|ÎYoQû•þ38ýêïÃpý½?~ËåI2ßOÂ9–óþœ}NxÏrî·:ý×›×}>ºÂ[ós¼|Eë%ýhxœ‘~*\ÛYŸÛá´6ÕÉù¹§·úîc ­§pB¡Eï†Æ§ÇüoZ_áiõ>çz€Ûû\oõû¡ñQÓ»íúÑWŽQŸÏ:ý­ †ëw”ƒõJæÃÏp®×ÛKùÀÍÆ|Ç@©]aÓ$)¯=\¼@]±»ÃÍ?’óy³>Á•Klç~ {§GŸ#§àú4ÔÙp^g¯ò¸p¬¾ž¼NO°ëöt.ïxºA<®ùˆœÏœñ§=hóÇ¢êúžP”þ¶<+á¬$Ÿóy§_Çá ­•ø>Þ·^š)ñ}p]ÐçŒG.ï=NŸc…¯'>†S±Þ†Ö›ÂÓÆÛtø'¸"?žÎ•ñð|f¿Ú/õª¾^a·‡ r½ô}œJ\[§÷‹+à¤ö6Cû;œ0ÙžO×þ‡½/ŒëªÎ~'z3–³€—:@ö(Š6oYŒeI¶åÈ’,É[âäyVéE£™É¼-Æ€…À¥!0?ÂÒ’B€@Y¤!¤!„,ü¦`J6 ðB(ÿwÎ=wy#9K›Rþþ"¿ï-÷ÝåÜs¾sî¹OÀ»Þ›ðÏœþø¬'÷¿øÑûU>áK¯i…¼_¹üx•ß´DäãvÆï#TÞñÑïŸ>ößšýÝ2¿¾Üâ̇{€›™0úú'À'­N²Åú˜ö›,’öÅñÈâfÿߤü%'ß¶úa)ð±_öMû^|ÙdÒO ^}B|>¬N=£Ù¡\ß¼öCào2àÛûŸúU¯wæ×ÅÀ¹÷$üÏH}Þ |p™å[o¦ï%î—þ»ŽžwôÅMÀ?»Ù/ËýO ¾ÐÄùÌw€+w4›ùþ+໾ø‰Ð§;,?:øÇy!ðØ3“þó¥ÿO¾óúÏ_Â]À·}b ë7ªÿà7^ºÄÿ‘\¾ì&«/·Ó·÷Þ"xø`Ðlæøzg|ßt¢Ýt´÷³ß€pq1ç'ÐýŸ:Qå{^'ý}ð5¯Hûô àkOJrþóA`úÖß? þ ð@¤ø:óAà,6ã½ø$ÚO’0þÕ1À‹^~"ýûçÀ«‚Åþq‚[[γþØ*àG¿ãûwKýº‰x‚èþÚ|me±á»€÷c~oÒò|ƒ3Þ¯¦o™¿RæÏþ“âþéU'ÅåóSÀ—Áÿ{›”ÿyà¶ÑÅþbé¿;€/¾Ðú÷ßmxþÀÅOø~¨çð¥ãÖ>?ódÔülDäw1pªÝŽ×±À—ïnæüaÖßhpæKðªo@_Éõ~à³û0 ¼öÂÇ«˜ÏÂþëù±ûdÛ~º¸ÿVËû,=_l6üïu'[y§ûßrr¼½ï§ë°írÿµÀ¿ÂÖç+ôÑ–w&ü_Èõo_ï🇀sä÷wÀW¾"Áþ;=¿èÈÇ ÿS2^Ͼû•ßHÏ<\Ny<8uƒÕOÀ×M'Í|í£ _÷ýI)o x÷Çôië黸ÎAÕßô|ø$§~—/š³ïpøÊn)ÿjàÜÐÇ2>_<%Îÿn^%ûåh¼ïî…?Ð'Ïÿò¿©­íß" }Sv‘ÈßqÀ÷Àÿø¥Üß|}ºÉ?M®w¯‚½m–÷ï…õyÿ.àÍœG×§ÿf‰è·Ã½i*ﮤ‡”÷VǾxß«šü#¥ÿÞuªÊŸ’ëWÑý÷Z>ûIàݰ‡GËõ›èºc?¼,×lôõ#À½è/ío&A ¾©õtêeÀ·ý‹ï[®ïl&y<x÷1žG¨òÇ€orôÁî;ô|øš—$MÿÌ÷Ê|<æ°„wq Å–>}ðõ'7›ùý>ÂÏ;Ü_&|éãÀ—–†}¸m§õïl±û7iüJﮟ‹AT®Høàg_u‡å7|u>aü½Ó|I³‰OôÑõ IÿˆE_¾Fì ÿi*Ÿw›Œ_xÕí #3§Åûs?ð~ðÝ{D^Þ œrä÷³Àµ?oæü\ºþuàek|ÿï´~þè àJÿü ˜¾!{мÿ­žç¿#áß.õK´Úøó[ॡ՟ϧĆ­ xð½ï÷ <ø‘}Ö^¯Þñ%å_Sùg·ÆÛ·˜þÖÄòþ|k|>—©¼³“~Nøß«é~Øóårÿ€N[}ööVËOèþPy|3_?|‹#7ïºÛ÷ß)ý{Õö÷ºÿZÕ7Œäú€røÈCTÞàbÖGtÝ;Ýú'„Àôm^ùsà·Þ‘ñ?9Ýò9æk§[Ú×¼o‹å›ç®«Ù_­í °«Ê_%_õoIÿ[Òþ7œ?í¦¿±1¬õåéññøÿð²'ü–û=t}›úá'û?õýïî~ì¹Iž,?m¶ÿi¼7ß {ÿJyßP›õwéþ1àë¾âû}> ÌŒõ.l³üîŸ>ëKÖÙ |gy±ÿ/òüÛ¨¾*–ç#ð-É„Ÿ‘ö¼øs¯NšëŸÞŸDÿ} øàÏ»™ð׎ô¯}|pêkV?{0ìûŽLú•ò¾Ö_´«ýšß¼ör™È÷àeoŸ“÷m~è!ßø_;{ã#|9 |÷Wûç¾Hæ_»õIÞ§©>õ&¯”÷ràÛœùôà.§~ï>öhߢû?ÔNÓ`±ÿÁŸ¾ÇÑ/ÿ|Ò|›ÖgÀ-—–øÆ]TŸwùþ÷d>~Þ÷œÅþmb¿~<Ü‘ð?.Ï/í°ûÿŸ§ïùÀô=mÝÿ-Àûn<’ùõ÷`ú[;«¥ü¤XLøÿGpxØá#{¯Â|ù¤”w)0}w[ûKWßpbÂPðÿ>°«Ù_#õýXGœ| xÿ ¬=ü|G\Þ¼Ö‘ÿ»k·%ý‡¥~?ê°ñBzþçTÿû–_:Ü[ÔiãtýHàÛúþ¤>Ï~xÒ®o½8õ%;ŸŽ¾ú{ ÿ/E~º€éûãÚÿèöïòý ì´þ=¿»ÓòªO xö{>¯7Òý/ëŒó¡K€ïtäë­¤OšüK¤½ï®”`¥>¨¾›~ZÊû[àGœõ£Ïw–Õ¿_Î9õ¿Êÿ$øË"U¿èyG_èØ—<ðÞ/Ûxyø*ð¡s¿¦+}CWÜÿ<Ðeý]ºÿ£ÀÅ“müæ3ÀKyþðîo4ù5«ûØEùvIc~Mõ…ýZ,øËãöcð±W*~DåŸ ¼ÿÜ%þâÔýk–Ûø]ß|ÜæfÿRéÀôw­<¾ÜòÂÓÀû^Ùdâ=onûà_n¨Ï§€¯ÝjãyŸ^ ¾ò>¹ÿÆåÖ?£ë·,·ãGøà+OM~xøÞ¿ö½ú!p×­?üªïY–/¾óßY¯Y¼ïÞ&»ÔÙŠx¼÷…Àkh2ñ¶—§.jâ|hÖïÀ]—ÛþX|àfk?¶ÐóßòM¼øÜq¾’¡÷Ÿi×§&€[”öÔkÎúë^à«O~sñ «¨¾¯_ïï÷ÒuÈg¿ÜÿyºþZ»þóO+Ôß7Ðöñ;Ô¾½/ðgŸ©äït?Þ¯ùÍ€ƒ¿u¢àŸQ}Ÿð¿ ãû ªkþ‚Ÿ\qÖËO]iù;Õw9°ÿc»þ¹xØ™ÿ§Fþ”ŒOa¥ÓóUàÞœô?,×_¹Òú«¬ÿÂþ¥äýüØ–ðþkºþº~÷‚?|·£ß¾¸’âIj¿7= Õç£KŒ=¹˜þÎG›ðáß­´ùÌàˆx]ÒØÛ£€éoI¬–ú¦èú«›Œÿt<0ýÝÝþîUqÿðÒËaϤwß]¶öu˜þnÜn)øsµ¤±ç?¸Äúo¦ýÃßx7ðÁJ“ß÷?ìØ·RySIÃ'¯§ûQßñg¾¾*¾Þuç*Ú­þ&=ÿ¯tÿšÅþ¤¿ƒ`]›óý¥Òžc€o¹µ™óY~€|]ÉÏÇÕñõþS€wô$9¿›î?x÷|ÃgΦ¿«÷aé¿ VÇã·ãÀ»v/æý;ÌŸ€ÞgõÁ%À©6~÷—ÀôwR´?ÿ.šßô>¾šêóÛ„ÿM±ßÿ¼ì}ÿ€¬/}®Ÿ˜dýÀó ø¸ù†¿ÝnS•<ØÈë[aïå}Ï^ûš&ÿ÷Òß/~¸ž4ñ¼Ž5Öžpÿ¬±ëAô|ðuÏUûÑÓß9Õö7|ÖŸ7›xøEkìü¤ùøæ5ÿTë;ôüÀ7À}žÖçÀm¯Òúá(ï‹kÔ÷`n~v3ðÄÍ~EúãŽ5v=ÊûÕõy½ÖßÀxEò¥ñxßÒ—Úø ác'¶6û7ˆ?qðÚ¯Zÿ¸û¥v=œípêÖ„ÿyßùtÿƒMþõZ?½4ïÝóR›Iå_üRõýÍÇÞN‰o{,_ü{àËî³ñ›Ï_ï¯Ñò|ì¾?¨ó!€®Ybâ[? ú~d‰á“Rý:›ý=rÿákÕ÷U> ¸å”fÿƒrÿ‹€ïž³ñœS€×n±õí¾îQ‡OïŸJø?¼ø–U¶~çï;µ™×ã¹ÖÚ|0êYàÙûm<ëuk)=iü×7­¥ïø&é„O:ÂÏëùüäOç³]³6îï~¸ÒÑÌùÀô¾/â õ^›_p+p›Ã‡¿·Öæ±¾¾ö*ß½àßÐó/³ãµá²3ü½ ºþBàÙ×/áý]„O;èû/ÓýG÷_²Ääg­é¶ëUÌ?»Õ÷[´~¦ïoèõ×øÑW'Y>éþðC^³ñW&w\å›|‰àÝŸ±ëܲ£™õ=9pï}ÿ‹~xÝ_°úóƒÝÖf}E×{$ןʻøè“cäúAj¿“¿ñpWwÂ?OË#ð¥?Mú?Ü´ÎóîrÖ[–§^¾ØOˆ|¼p]\ÿ­¾ÇñÖ¯}›oôm?ðî¥Í&ßëè˹u6?‹Ê ð>'Þq½‹õ/ž-.6ùÒ^gó7_G÷ßz¤Õ3T| 8çäÛüë:»þJ÷?Üv¢õï~AøÂ$ËóM(ÚËà¿éþ\FŠ÷­MþoåùSéï j{µºÇæ›p|øÀ?Yû=@ø¡%æþ '¾þ[í±óîŸ>xñQ~MúãµÀGƒ J}Þ|ÃùIÿ.-/ÀkÇ|ÿËR¿ï?f±É‡½¥'>~妽¿î‰û— öþß&9?Ÿçð5 /<xí¬²¿„Oë—ßÜÖœ0|axãsþWï~úUÏ¿<=/ë¼> |–¨_þZÛ_¯èµë½tý ÀW;òøNàâ²f“ÿô1`ú›™W4)ü à‹ï°óõÛÀô75ßû1ðØõ Î/'üsàƒwú&Ÿî7½6¿‰õyìñÝËÄÞ?¾üKñ>èÔ¯xG2ÁãK×—÷YýÈ|¼/¾¾rðÞß,1ù†}r‚÷‡±}ÞýèŽ_Qüòu}6Ÿœ®¿“ê÷ð-ßõQ¾Y“‡\ÿ»>Ï&ÿ©ï'Ûœxþ—{™õo§ú¾Åò›ï?|tÂ?Iøù¨¼-I3>ÿ¼üT¯‡6­·úŸž?j}<Ÿé¹À÷:ýõ"àÿ®ökRû[€w}#é?$å½ÞúOô|/ð-àO:ÿ} ðî¿\â?r¤ÈÛúøü›^oóQéù}ëãýùFàú¼ xmG“¿¹U•÷·ÀG)aÖ»?üسšýŸ þ"Õg%ø¡Ì×›¯Üô¿-øv*ïµðÇ¥ÿÿxÑ“þrýaà‡œ|’G׫ïS=O¯§nˆÛŸfþÀ¶-¦¿Kz˜ôßK€SN>Ù©âöº¸7LýØ |ðÛ ÿg·ßãäé}»~]£ò—îg¥~o |)›?ô7Àö=ï¾ÒéßÏÓû -‚oØÏÿ»•Þ÷î&ÿï{·Á®WÐõ6Ä× ÿðçïWñXjÿ31±…þ8Bð³€—ß½_êóbàµoJ>t ðnð5‚;€SG5›üˆ5­='¼ ¸ø ›O³øê9¿Ù |ô2Û½o·ÍïÚ|½“Oñ×À—þÖò£Óý"¿)؇OÒõfkß¿@Šk0á_)ýÿOÀ/ö.ã÷Ïm¼„ð½Ào¬$ ¿zt£Í¿¤þ;¦ßòsºþàÎx-ï§ýfo¾ÍáO;€—˜4ûK&›ß—ô-úâ•ý6_•ý]཰ÏÚÞ¿©Ÿâ×¶?ß„ñÖüþ³øµþÎÍt¿³žy•û~ÜÿÓ~û½így‹¼G€‡Ï²úô›ìú?ço?ìÄ;N>ëß¿Eî?¸²Ã7ñ¬àÝÇ6ù÷‰¾9xþ³ÎßÞº)žuÁ&›_ÀüxãmÖÍm²ù Ü›l>óGàáö¤ÿN‰7~x“mé·¯ï:Õ®GÜ ¼ÿ䤿Zúÿ»T>ôs¯ÔÿÁMÖ_&üðÚd³—¼Ÿ‚Ž;ÞÚ÷£k'üoŠ| ܼC}€ð*àݯâÉ4ƒÀc޼ì>'Î×fÏ!¾t¤Oß ¢û_ |5ü ½žuÙ9V¿±? ¼,½Øo–ö_|éþ¤á‡×·ÀÞè|àÏß³5iâ-7S{œñý&ðe›&¿ùnàë|ˆïïv⥜cãßTŸŸžCö×úk¿¢ûo²þì1xq娄ÿ~©ïóo;Õ÷_#ãñbªØ€ÍíÞ}O“ÿA½ß„°ã¯n¾}‘ú^•?1`ýÞ<ÜbùÞì€Íg¢ë¯Î=/ÁßÃa>5o_ü(üÍw®ˆÛÏkì~^O°þÝÿå«¿ ß ¼Ö±?ß~¬×êß{€:ýûƒ¤ò¼h›Ïßàùº9ÿ=ø–å¾ÿ;é¯ç¯½þö|1üqmß6Çó»†6Ûõ.Χnvò Àš-y½íß&÷_|ï½ÍþÅòþË6[{Dø]À©K¾wÕf»”žÿðnÈ›^_üÄæ¸¾»•_¾{³Í÷b{<û¼fÞ¿Äó¸âä§/#±ÿ[¾ÉÏ|Þ ÝïÄöxQgÂÄWÆó¯×:óå°„wðÚýMþûe¿çùÀGß’0ëM“À7]h×£çízáW_ {3ø\…ßBåoíç;rìÍßÚ|m^O¾aS³¼æWÀ{{ùýA›O@ø‡À=¿Ùôç£Ô~±? ò‘‚½<·ÙäÇýÙåô¾¿RßîÐùÞÀçù&¿cðÝx¿ö‡‡Ô÷RõþÚó©<áÇTÞáÓ›ü—úï²ñ ºþFà½ð—ôúÁ__¿Ö÷?£ç#½/‘àï~ÿúþ믥¼¿¾·9aÆ÷+C6^Oò|ëPÛ|à9‡ûGÈõíÀÇ^‘ô–þ- Û|æKÀ{?»Ä¿†Ÿ¦÷†a›¿ÎùÊÀW;ûMß;lýgÞ¿Cõ{E“Yoù; ܵ6>ý•áøúÏ­ÀmY›ÿöàÔv=úûÃ6›®ÿˆÊÿ†í¿ß Çý×E[l~"óuàÜÕ¾É×Y ¼tö(ñ¿Þ‹¯÷ü}ºÞ|Shó›7l±¯ão‰w>ð‹šÌþŽò–xþq ø†ß?\ìÍ^àJ³Ÿ¿@áK·ØõF^Ï^{±ÍG{/½?±Äß/ùZŸ¾xI¬ï]¿…¾¿öÑGzwm±ë‘tý_¯½µÙÄ~Dõuìë/¨?.XlÆ/1?3¢¾—«ó'¾éT›ÿ~ðÝëšý‡Äß½t„¾ÔìÿNîß8b÷#±ñ/ÂŒØüvîÏ›ÿBøå#Vÿ~íˆÍG¥ñ{3ð&ý[õüž…ÿþ)-d¿¢¾OÎü}Ä®'¾xí¬ÝMõ¯&ùû@tý!ªŸ£>îÇI?XDŠ÷Þ%¼ÿˆäñ¹À¸þ5°?™ô_'÷··½Ï÷O”öŸüàýIãOl~Ôy~û¨ÝßDã“¾ç “õ2à}ßkòï~øWÀ»/9Š¿÷Cíy7ÝŸWß÷¥ç?|•Sþ×Gm|ŠíðcÎõ/í~¯Ã@tî)Úþm¾ÍÉGy6ðFÇßý àE¶ØPë§1»_”ð&à~×7ñýÑ1›oÄ|ˆÕt“éŸ2ðÁAØ3iï%cvý…ð[Çl|Æãê1õ½kí¿ÿý˜³Þ ûúÀͰç:žóÀœýÍß³ñzêŸï_Ó¡¾7ÄöŽî¿±Éÿ„èÓŸPý¾mõÓï©>à#?>Kôˆï"ð·ëäùðåN¯>øº%þGäzðÀ¾Ù¯táo&ü/ Þ\sø}fk|?d|ƒ?¸ˆˆ÷c6¾} ð2è{äúÀ×Ýå›ýÉïþœãO\¼Ûág_Ùç«ß~ìëê{wtý^zŸóüÏéþ#“ÆŸÿðÆ] þ¾åÓ±ò•šÍþ‡eÀ-¯Xlìà À•—-æþ%Ü ¼þ¤Ž÷ |§oß|¬“¯wÁ¶ø~¹"pï¾´èëiÂÎ~½K¶Ùüaºþ—ôüWšü‚Üÿ7Ûìú4áS}ßëû÷ÊýŸ¾ö~õ=H*ïvªÓߥö¦áÏèxÔ¶x¼åÑmñý7¿~ÔY|Îvè“s­ÿöâí´ŸÊêëS¶Û|4æ›À}׿‹to·ö‚åk»ÝMïÝ®¾/¾_ä; »¾t"ðu¾É§íÚ×ÇçûNÿïÜIñÇÿ£À†ü¤ðßžö{ TÞëwÚü$Âï¾l§ÍGø8ð76ùÛEÞ>»Ó~_‡õ;Õw§õoÙi÷÷þ>ðåðV%…/Ÿõcï?ò\›OEý¿ìܸþk¾ªÏÊC×¹ñùtƹö{ìïKù\êûóÌ7ϵù „ÏÞxŽÍ7ÍŸÇ—ÎUßCóÇ=Àkï¼xÙý–½xßxÒø§ï>Xkòß)ø£ÀœøÀÇï†?¥¿óUà£ýþsãüáWÀÍÎøRàôâOX œ;Ãæß |].éUôEÇyv7•× | ü3½þ½é<›OE×G;õ§@­³ß':/îŸÌpòw_užÝÏÂúxóGçC¿8uòþO¿-ýCå9íûÌyñxÆ—ïqøÐíçÙï‹ð|;/Îî;òŸíþÄ_žgõ;áÃw¡ýßh6íY\ÓþáÉÀo÷ùû³Ì/kµñæ5»ì÷ ÷Òõé¤É‡Ù²‹ôÕ¿Å]ñøÔEÀþÏf?êkŒ&L¼÷-»¬}¦ûß|e9iøá‡¯wâi_ØŸß_ßeÿ^#ÍŸ€¯ºb‰ÿ=Éwü-ð¾û­55§ßÖ7Øk_¦z‘Fô}lKÍšR«ùbº–K­Ü0ÚáeÊSãeY:†VÃÒ8ΔêS™|Õâ(_IWÓµ|0S®æ"œ£ ¢f«sè¢*°½­}5Z7]Ì—Æk87+×ÔÍüæ|.~ÿªÎvÜ^k³s{pf u+MSå iª3Æó¥<¿7ª¤³ù`¼Z®Wøt-Khšœ(åg‚™¹ìdC¤ÎªhAt-À°ª—µrP®˜›ƒ.u4U¤º—²StK)—'T®Ù‰tiÊ×jªopáWó¹z¶]tèƒN}@EWË3å ]ªUÓ¥ˆÎL§s9ú'O­žÿ‚iU“é*wætT§1£¶Uƃl÷Eç‹yúsÆtfÖ¼}0¿T<Ð[£°¤þ kA©\‚Èð+§óAþ¢(˜*炰ă™szÙzê£Ù…žÒ¤E-]d)Ê¡®amÎ ÃüjÊ8A ͨP—•Ƴ9%§Nç—g‚|v"_„$ªª.yîÂÊ•AXfªé &õx6ÛÐÌ ‹˜˜^¶^­¢v¸¡Fµ ÷äÏMå§ì©Z~ª–o¸ON6Þ– åùwòY÷Öl­Hçãwê“|#Wƒÿž6¦{•®ÒQ®\ÉCš<žÀ9è‘iOªÌ÷¢~aÔÚÙ…é‡ÁÀüŒê²Îå^cJ"; ?¨Ýڹ½{uüî®¶†»»Ú»»ÊîZî^\ÕpqµsqyGüâòN÷⊆‹+‹+ÚÐP b•™«å#c¨>=ÈÙjz.¨×Bˆ_ÖÛ:º¹¿W‚R(gqŠÛRÃ//(¬nK$·Ù‰ziR0_o<¡ÃRNó³5tugJЕÔÿôÜ¥Y@gyàê™([ +5×ò³AºŠ*É1F°Ž‚Ô)¹—µ2¾H’€I–ÔOÓ %|¬e¹Sfå,K2ô½W®×ìS èÇä’zÎêuêÌtº¦3żz‰A¥¢#ˆ™tv’µ9Fê ÿæs!u Td9¨TóYte±ˆ³4Pt¹”à º1,]T«|TÎW«dŠgªzz ”þëíj`fj¬ ©qåêœ7‰Z;VyA&){ô®:ÀÔAH÷ã ,ã7ÉH!À{`‹:¼ª-7G«<6‘­íí¸_êêŒ4z®D5TâX/‘NJ×È ¢‰‘>ßp¶IAÕ|:ÇÿÌ Þ8ˆje`n.uÝt-L«Ó!þ-–gŠ(®éYêúT:šô¢4T`-!-Òºr× :nÕj¯æZW·yµ\Xm]ÝN¥¹ ‚N j”ÒÅp¼Ô©‚Ò¨Z[›úaºaæL’K¯È$Sí’Á…†®T `ædd+µr!›#¦R+‡­íæ¨Ãuš£.s´Ü­°ÏÚGVé£;(;Q‘3¼Š/zuXÝñØ)šÑ±[DÓС®•B¦J«ÀÑISõ’•šÈJ_Õ3žúªf²A-Ê›»†zX{›×—K0›!Nå½hç(ßy †¡¡T¥Mæç<6+Ü™,NÊ ·Õ)nš…ªÿäAæÚó˜>¡'5Ó´z‰^Mê»c¡“öœ9#8]ƒ,J/Ëq¦N¬4?]žÌ“"™ fÒÕS±ˆé‚A+EyXað‰Ò4t[ÉÔNÏBEpGWŠõ*ÌS~BÆ ܤ u[ÏGQEÇŽC!¸¡ž×·Ñõ K%qbT =€‚åˆ9ÞÀ¦n§Ú D–RXzÕÒLPu6=xúÐ JôÂtJ'W&ŽØDsQ._Ayãü¤ªF!±úmó`*HSò)R)ÐíSéÙ)ž\÷4´ŽºZIÃh÷HY•Éi*HÉT Cï)s¦~ ЊŸÀ˼¹9îr'p\m§_ø•˓נÆËµ2Ž*êDE ªðÜœš7Í…µˆ´–…Åü,Æã‹ßåÕ(=ŽfFå*\¢È5 gebŽš8ž'!àixÚa©¦y*Ó˜a*`²Tž)©ÞŒ0t<)O=¦ ßwÕì f”r=¨X³P/x!=—ɫˤ±ree,ù^¾u6B£K¶>Í•² §ô}¶<{7fyUÎ5úh­D]Í*‚¼iîzÔœAïÒ쨃±W¼B±MÙb>]ÂT˜'ÜñY˜-ØTŽÜK/PTcž´ÙÍ0ë€v Úb·´/tK{ì–Ž…nÁ D/fé÷TÆ«”£p–:“¼ꂨ~NÖj7ÊWk˜²¤5¢<ŒlÒ\ž ô š#à;å,Ï>:àiãM11à (›È>Ìsäp±É#˜ÉAþJÙtÓT Ô!_U'«µb˜®f'T)t˜§à6)¿T)â]°hU®F~¶”ƒúþaÔ&‚L=; —¯“™N0¯†…9/ÈÉÚåÌ…yfÀå© £@/à;¹ô\žøŸ¼¸SòÊùY4ò£~“ó¨ŽØ"‘Î+Ö–+kõI/Ïå3õñ Ö„™q¹ÐjÐ[ùRVUÏÞoލöìu>¿Ã9Qˇ€ÎK¦sh§üÐ2Qú™(‡™Žag®H Ê…\ÖXÜ:Ò廘¨á4GdDIØ‘gªÏ“=ÌW"¥ÊÇ•j/çêE¨þ\Æ#mËŒC2Õ{ê$•g.;êœzŽœر°Ï[e0«l`œgÚš¯¢!l¬ S¸ð,D47•º7ïáàÇ=5!¤lŠ€ÐÅ£Íd\] KÄ\ñÕqÆR(1f÷LI ƒ4Ìeã1fÜËÒ¼07+½¬ËS&„ ŠŠ£}A4Mãi4‘.åŠy÷:2žÆ†C€kT +X%ÐäŽpçf˘ð˜Øx1‘P÷1Š[°ÇʧÙ4µ¹J>è z†ºÇúº2¶sx¡ó›‡ûƺGv.pipëæ¾‘þž®Œõo^°¬¾ÑÑî }£ \îîYèÝ –ÔÝÛ;‚Âzuß@ßðFTzÁ÷wnéÛÜ78¶ÀÕþ^œï_ßßÓ=Ö?4Øpæ:Ä£À}OG2¼tÈîGÎgÏ‘…¢S˜Êì#zUŠ8GS¼"Eâ?SËíh©ØÀt= °D­ ’X­Yà•êœ ëð˜„@h·t*Â"Ô.¨ƒQ‡ NFi] f.gØ%hE ­$RZÌÓÑSwàè®§Î/ð¬`C7‘/ÂMS¸'ÊÓŠRx™bº4y{òÕr^=vå½Úá‚l©`OÄ“ƒ +ˆËyqDÔ¡y¼¶'¨²2£ùY¯å%Èè•ak{Œª¬í!'XtN¨t0ÇY´ø¨á tº‰e² ŽÐ7°J×{êýÚÚ¶oDb©>dÁœÔ1H“iaÉÞEòŠÕQ47R@?oN¨Ž£ÀSM§Ã"óÜl™Ü–‹ÀRäh&«z-D%ð2ô‘7ÉÊœµ(8QM $TÀo` øôD:šÐA[\b'h^éP—ä•0µ¢ @p¤ˆo yBÿFꪧÛ8§‹<½tu’è"dŒÆ1€‹Ac‹aFÝK™°ñt©r ·R‚+U'¤D“Z½Zòʨ ™UjX•&SšVWð6}PÉêö∢[ ^Õ2ŒS ¶ ô~¼u5÷>¼\À…[QO¦,¼$ÎBÂÕƒp"4•®Á a2eez¬ž†÷0~!ÔJT«d+s^:• `¯äÐåî—MÃ;äIéÕ”©ó”¾Û C›LA•dI°³’cUƒD3Uõ`@½IEüÁp\F*¨”.‘†ª¨à!Ïõ Ü£© ³Fô3U–I¯žŠýãÁËÛÀþÁ-[ûGú¼þÑ`”V zFvŽŽup¢£Q*ɉpýEN(.“žƒK?QcOšbðÔ&'^Ø`™¼#CÛƒ¾ž}CƒÁú¡‘ÍûÒ: ¤;é½Å\T¡¸7ÑxÌ9ÒJkZ?0Ô=lîÞ±pŸ×96Eé&ƒ7„T}¼KEsˆÑ „bŒfÒ-P܃Ŷ‚z­°ÊV> (]Ù#…S¥ŠQÜÉ4Ùª/Ýzývgœ•ãSG+ è’aœÉ¢ê + Ä‹Õn™n@¼¹ðcˆæá!ð¤Å+Ãé\ØÉ÷QÔ$­éñ*ueŽxð´ÔLA•ͦk˜âÎP…0›¡›§¨q ýšªƒRkÊâ?‘¨27»®·COT›ñ0§DºBÚ=T1%ñ­ ´ÖÔŽ6 925¶bÃá‘—T…h¢ woÙºƒõ#ëMôC7Õˆåhÿ`Г©0i\ 4«B«0"wžˆŸíÑ }c}ƒÛàŽrãˆÆ5ÌÔ€ôÕ‹tíèÐÀ¶¾ oË((\/æÔX‡·‚:6Äó£[CÇèÕrµ–†g81CÎGu¡ŽÃ…\ÑÅ57ÁßYš%‘’· ZLŠê@´˜6X¿º-è ÆFú7«Úb1£"OŒ­Tœž¡(A[W:WÚŒ ‚?…×ÁDªP·ôô m†lßÙsÎÐúõÆò©âh.g4Q¯å˜äÔmÊVëÂ%nÉN²n"dø„«l•Ý)8¦[ù>¶×óÃb\GU¥B¶TS6!ÍóKGUˆ6?[ÑFZ&™hvgup#(ÔÀÒDI(Oå˜ò@ØåCcò5f£ÔIõÍå˜ Šã²jB+æE£8dH,JñÙ Qé 4’ªÑ–\ëZºS7 F Ãëö–ÀØ™/ÔÌ £ç(À2KeÐ ~:.&Àâyâ–'9J&ѤÔ·WœÁTšÉ*ªeRµ‘9ìJw &>7¥ÊÂ3ú‘8 &%J6.d•d›Áãb½$ÅO\ùÓUv¼ZmÔìçñVQ"^ŠÐ®–òM(+IT–ß+g—¦¢qŠÏ²îò´éa-†YôGa¸û¡¥u¯zÊç¦~­ÈLƒg›6^xäÉP®ßTº1B ”%zöiÎ}­1Ù®j‹>ž•+¡OŤzUÚ!Ì.MFæ›Ô#åRqnöªS¹ýPÔÞ“ÐÆ41åVxó¢S•rńъã‘ilI\¨ñÒtîÂ:y®Ùr±>U’”0ÊQ UŠ¥ñQÃ)-ÐU­LþªBa¤rÑ'Õ‹Êm"Ÿ"S$&‹±7_.pûCÙ€'q£ï^`}bI Š_ v  iFI*Ñ’|o[Ry²FÄ±ì ¸ìuC›×y–uË<ÏÔf(5†O9“/éI»‘vÆzzª¢9Ìr¹(}Qbš…t¸°]¤†Åi¾‹®ÿE;&éY»zh—ÖN";ý©L=¯#b0Ú !Ê~\$Ö­\Dƒ´Í㠞ѕÙU+Œ÷yŽ¿[!¨0=›$r[Wýv«DáQN]Õü££¨[ãÌU”^Œ¾Óéa‰cÎ1: «ã­ï¦}0¸ ¤Ô ³,ˆZ¥ÉŸÆô]µR9âägà—£ÎŽyzSü"pߨÄì7¢þ©r(éÒÖmí¼„0uˆ,nëT5Þ… ” Š N—€(’wÌ 9;6‰-W®(û]1a:ÇR©o jKÔÄYsµA“Ú.]ä™4æÚjc»­÷:õlìÜÐŒöa06(—¤Ž}ÔRa}bb*ï¹!ÉÒsÒUøeB:Lb×ÐÌ•lµ‘²‹Í:SI‡Âœ4#g'™õ½œUýX ¼¶õVªOé=ÝÁúíƒNÍ\›Çch:€^ã¹C¹û(“+Ói¤]@Ê6¯ÂªÕ[éPÂJÆ··`êϦ-i§ ã̘Eukÿ•(YÒÐS*ÿ&Ci´KSضÞ!EÚgbÒ×=²™¼L åÌ9Ó¢R‹3æùn¼I1ñjQÔŒ®Ñü.Vü=Je~<Ž6ë—Ì‚À¤#¨@ïÕäí•D÷³f1Ы“UÚ³#/oŒœ*åiž(¥QÔ¼X™H‹Õ¶Î;‡rÐØb5äFN4ù%}É"æt/;„˜ù°*ä6rð·gãÇ~Ýtºù+ÌJ@Éc HàŒÛ~”$YS©-7•Õ³)&J¤"šhŽäúéÕ¤À]¬eºÀé5ZЛ(í^g.©Š“æ4 <QÈØšÆ+ öy0góÜ3=f*§\‹÷GÄâËuŠŠ»¦¤Ì½žN\ÚVÎ\hükáÎ*k:«SÈ(®ìÂÞ·ÀÜöPv@²ét[¯Ë'$Ô³†ZË›p}ÑÏr^Ôšh¤šìb5V9•%K%[®ÌQüWcÙ#‰"C} aóìÊ™·Œzh2_+¬²©¿ñUkÍc¹+P#òO•rb÷GEutHÀRN²(ÈÊ?žˆàêRæ0ÚÞú‘îÚØî7ŠEç‚Vó’5IkQUelM`ZYб¡¡í}#Ÿ®M©å3?ìU4+ê_'!L¶Çñ¹á¡ÑþÒ\R )’M` 3é⤷ diÃØF×TÑ9QãÖ &Ur|b“¸.‹òd@«’ aœ^wGŒ£âÍ ½^´1QÔÆŒÖ5<2ò vŒÁОkl ºR€‡Ì%â\-c™zô{ãSÚ)Å@Üq—V茙\ˆn«²­ÓªH)ìq,ŒÝ: sÆÔ‹ÖW´Y¤^Y˜£*SɤµŒ'‹˜f˹»VW°‹ÿYJää½ûLÜzHvÔù¤GsG$µY…’•ºçHˆ“¹aV÷r&;D²MbÌL­:ËìNüT*^ß/””‘*8O8êê\WÏñ¥t“ݼg¦EéÆSú„ãjÆ«ª/ÎlMç Jþš›XäØx>µe%´ĦÑéäc«ÌR“2ÖZ‡jË:×O·ƒ}hñÔw!Hiiº^,Ö<ÞÓ©d É Ïw^Tö‚½Šõ ™Óp”´VÖj¬{`´L+ËY»,èÏ’h]°©Åì]¨…ò‚²òõ%KSð ÁrHæ¨Î…7 €ý;X×Ýsù$ù‹ØjpO6²©Íý<ÁꙊÕÔæ­4{)å“¶nÉd›mrSïTk‚qoÚÆBUjn¡˜vEò—I@b#·/:ùž»¤EâKA1³¥e²dlBµ¶ N ay,9®þuö{ÄÓGd»^ÇŠâ³S¤k˜Î”lWæU$otsÿØÆ`phds÷€lb±©¼,|ja)#KJ&Æj–G'ˆc: Ü”‰•ó¦îx Ÿ¬¸È¾³˜Ñp“ YÄs6ËÌØ¹mvñêž×ÛÌ”Ñ3RŽ ÓTX?Ò׺kø¢¥Oû ÀlÆÎ ¡[4s6ô öt Œzó\måÚƒßõ ÑN*Ë1!jLK;˜z¹6p"ŠóM·ì‘¹ä’È5c2¹Lô—…(6õe½>ÔùdŠï…‘ZFñëÀK4¥‰mgÌ,4R1fkªÍÍqÒ™ é\ñжu÷özÒy}*lÚJ;ÆL(Ù&þ¶{él–£_dæ)ïŒýlãåÅœK:KXŽØjål¶å¤¨ñ,ñ—èI3 6 ­ƒØƒ¥Â] ƺɟ¥½>¤Z¥ðÈV¥¹ Zs 9+ <ïù+„ž¬:œ%±P9Ä:3”3xÜŒ7a–ì´kÝàé)ƒ¦\½‹<Ùّ˰²ò(SM’MÜØ2ȸ:g“?˜—«¨üPm`µ¤ð:»Ð ™\í3íáµ!ZJxu™ÓÖ ÚžÉò¶“{ê®ém§ÓùjF{8ú³:# }Ó_Ž‘±ºªÎ"†:KЙ£"̸8‚^̵Û3 ZO«­â!©—´,‰6sò>7J:tž?°uxXûî¢ÍÁ3ÚVn]¯D"vökElm,TêëosF6M9Ù¢§Z%A ,žsĺ!݈¾ðWU •nÜ×q ¡/0ýëÔGÒ0f­m —R}”8éíÔ/b[gCoÿç)¨å@;ì¤Vsz³’ìh ˱ðiÿ+È/2Ñ:e}ÖÈx›§†zRmÐ]\™ú»Œ”ÒÕâUŒÌã—Æ˜D÷®ÅA↚Åm1¤²êÂËÜ•z–=1•6¦éÜI²I”T’6á˜5$,²>Þ |XŽª=":oDµMMðX0~½j‚…*ùMËy*©ÛnÐé°2dט0ÖΑëÇ6d9›Ý¤ÓúX…uøªÎbû¶ÀZ„XT¡´õÜ$‘©“¢¡EØ©÷‚Õ[ŸÔçtú¹Œ]0dcEIg&³ÛFÚ/ª‡ÙIÞúô ­ßgŒ®¹~{0ÿž0yÜT”¨¤¼ 8°j·i‚ªä-6èww0©ì·@›þªZ÷p¤Él 3œØIo³Ÿ¾Tyg–æ ÕõR…è<&Ùœ²u ¨(rz"Yv±<†ËÚ4ŒHÄ¡‡ŽÛß°èö_ãVõ}E5v˜  ³¿<;QšçRk·Y­@Çë)ß@cö;3Qöà9© ¾— àHÙõý:êrRN¿u—ôTÐÀÆVÜ_©LÚ¼`7kĉ‚ê»LŽ_¨v··ÅdÌŠIãö.EÚWy&€¢–Á%ZÒÄZG˜¨çLR®žv´LCŸ飵äÞØW숉4|{P-H㵆Íîw ßÀ³ÉÐÏEN¬dô¶òxz¼ÉŽ ²£•Ë$•Í{’M!ÆPmU^8 E‹XÊÁ§(ÖÉq"4@ÆÌ Vùv ¬×I~Žùr9|ÁtùB©ñs]9ú¸”©éŸÛq¶1©¯âˆÃâ¹íŸ~žÞýÝö@}Ѥ½öúéþiÃÏŠ®6üÛNÿ'ܾ¢­‹ÏÓÏÊ®^{[GG×ò8Äùö®¶å^ªíi¯É?ußTÊ»¶‰=Î}à<»ÿi?`Yåéh:0µ.=už‘*1€YÏ‚ÄgSP"Q>e¿O”ª•Sµ<ð8}j]]Nvt´§œŸ¥xÙ>ÅëdGŠþ·ºMþÿ¢$®â2}ø z³¥À¶RL•Sòÿdg*/Rí¬N• ©íê»ð) %×¥S§¤Úp›þÏ>6ÿæ±nn]®ÿK¥ôÓrbõjUéV’Ô'Qóˆ‚9Sõ®x}žZ…èW»TINÖÖÚæžâ2[»V'qžîÀ/”K9«a5ŸK‰Õa)æRa)Å_J%=þóæ?y?OóÏÌÿήŽÎÆùß•ð§ùÿøÑãß’jomkImª—ò© Nrcº :kMÖÊ“ù¨%µ®ŽO¤§R;ËõÒxjk)ä'ksÉTò”'û“L=-ŠÇL«dj½«=ÎHºèŒé§á©Ó:§äfüÌŸÊgÐižóm ¬n;ÄARUáqô•ÜI·­K·¤fSgÓôeÑoIÍÅÐÑýc¡¹yìþå±û—ëû‡Qü‚·Æ´Vc—¥V¯N wMM¥þ£]ÖþŸî²®ÿÊ.kŸ×e‡¼õïܯM×j¾ÝþI«”ÑXÝ꯲ ©TXßiÐñ±ÛtŸ¨Mõj¼ãÍ3§=ÙŸdjl"OSj¦¬=Eé?)ñyì‹¢ÖdªGîèH…Q*Šê ªXm"Ÿ*ãW5™¦ø†™vdqäï«Ð}ú™3þ+&ÉE£Ô¤Ò2È9VáÁÙKÇn^ЙÊÀsÊ>=umðêžje3O\Ù4*›{Z]º§ô3oþÿáý¿Žóü¿?Åþ0?Lþß¡Oê‰~þòÿf‘‡f€ ÆçŸÈ{û£npæ NªÁ¹ÿg|)òèïÙ7µ6Vƒ—Äöð¸Fößí´<©HÆ¡Äþ©U}ÁÂvJ\GDù(¥'¿öD®G­ì8% õÇã‘hýßZ›}Úí¾þy|ûßÞÖÞÑhÿ;Vtü)ÿçòáŸþ¡Á–Ô¶…íÿ<ìÍC=Õè%“€OÌEa&ú­›>¿V*OÍš$´¤†a÷Ë-©­µôD2ÚT:,ž]I%O¬ÍÌÕ[ó¹z296©)[E@}çR™|*Ò¶¢L½fL.L5EŸï®†YÅ`p)Ra"V´É%‰9Hßw Db(æ4ß_/Öx¶Wê™b¨v €ÔÚ®«èCÍyw2ÂkÐz¼>¥?fYÌçÆó¹Ö†Òœ­N…%0TÀ± ‘2 ie—O3! 3í’ÉÑ|>ÕÀÂOÎ:ï<µ™ýÆ)þæ Ý™Ä:¤díˆ3¥œê5Ö–âyYÞíW Ñ—™9®qjª:—¢­#ª˜–”ÚFB¼¢W“T#>5£3lIÍL„Ü»yS>ï¶Çù|‰Æ‚ÓÃ#®C>U KõYC5:[;>$L)ù”)‹ÙtºÒÆ‚dÿèPo÷X·¼“¾6Iaž_NIõ)ÚV ZOâReÕ>§ï#s‹ IÛÂÖÔzôe~–;³…‡.VR%O¯GÕÓ9)ýtú°i¹tz•!¦§³È”øº@}ƒAËþ_ö®?(Î2¿¿À’lÖ%¡ mqÜè ]ìš#‘œ˜#Šfs¢¢²„m %Y–„´Lƒea‡]ÊLËÞe ^i‡™2Þ‚I@Å”^‰Í´˜ËÝ 3Û9z¯œâk¿?Þ÷}ž…ÝMŽmÿ¸Ìlžç}žç}>ßßÏÏ]lÍõnxý¸f5{,þ¾ˆM'=a‡, ý‡~5Õjæ§qÀäy=Ç‘ü28~ß D 8ö0${IÈî0>£h1 ?èiB]k²akÑ<¦™÷r74»- ‡ŽxŽj6!4J¹aÎt¢%ù‚×F¿Æbó@ïGjÁÛz::hÞ¾«À¶_LOõ-ä˜Àx¿-C5Ò\V›f{w°šAE¶Š öxÝŠiØ -/ô½G­Ûërrâ˜9ÿeØfm ¢…œC¶ŽØÈOØð7-Àޱ±ëÈ!ô³õ]ò1Þ«s:êFCCK³­÷®õÔ»ëŽ"a‚G-þÄÙƒˆíÔmÁ†õ`²| ÒÕŠ{õûîb"ɔܦ›OŒÐáÕ¯Øö C²¹j1Ƹ]à_æ_ñºØƒÀ—×s¸ŒŸ~öÛfwÚá Ùç~˜#–0{ºãfЪÖa;Xà Ö$Þ['JÑ.ÞÛð"ÚW3ŽL—eÛJ[$8é/#¢,´“ŒFý Ñ ´´¸ì¡°- lúc_Ð-JæmH’Wò*7F_ô™e]Q4ìè4S»?n€ÐT`ûfç:x—œZvR¨ eñú@ ·‘RXÖWÎG¥-G€ÃfÛ O‹Þãq4”<×?°ÚPÇžÁ™ã?SŒ*Ø÷‡r8Ê%8 Æv‡¡±¦€ˆÂ!Ú)U±ò¤9:M†¸u'ei 8,ëíÐiAÉPñ41´låР/¢ð[hЙEü(ʾQ^(gÉÀ\Gq5¾#¤Y´wháS™€žæuÑWk ‹rÏA0‘†ƒ Š?i[¡ƒZ=ˆcÂÁzz÷Î¯Ó r,سΣ©…E[Dðk"bžm»lö#ú8êbsÔ¨ýî¸Ò°ËØå¨‘P"ñ‚™@ˆµ@(8Fá»ø¿]b{ÆwïùÂá%¶¢ÉÂ4A¨2hÚYX`»O_à×¹›qÃÝ\†édý꾌ÃpS3{dví°Ðcƒ¦ØøÛ r\Ö–ŠÌiõ²—ön»]4qyõ¹„¼=€ä€;Öº ägˆ#\Ê€F³›ãŒ ZØ Nˆaж3O QÇð‡… oá‹Pzßx ¦üwßA²ðuhƒ HŘAuˆe¦Kk½ˆâ†í V²Ã3ßÂã ® ï*Ú bÄÐä'b€å˜«±…xke~`5ïöwC=¼z×nÒ1ävïÖŠ¦8’]î×çYÚÄùxç(„Í—xúESEì‹ ©á,qça6» §Z†\äÞa5@ÚÇo³{izàõXx¼ÒG {aEÌ3 ¶X9F>ìÁˆC=¹Q“«b·¡…ƒPAÁˆ~öƒç~ü£t'l¼¦ä ^cEaó0%”—†A¯»ÉFÑXƒý¿ÞÑøÍ¿/ò¯ß ùËÅÀ]¾»wÇßÿÛµû.Ü÷[·ÿ·s÷΢ßìÿýoü;ù`Å7RRRŒçT%M¡§çMfü¶ýÈå-TêPLŠ]ÉQ²£u»ÉŒŸš–- ~Ò±,Sáúv|o«?‘%òçO(›´z$ãøwñcƒ<~LÚç±½uñhÝ,µnç›ÐèæÒpÀÿaDz9ú d£ÃøßÉ-f噸üïü·gýïw\¹Vé|¼~é³¹>ÿ=öíúià?Ú5ž¦¬ôô@û£ØøéçgþìÜ¥²«Ã O/L{S?_èzfíj˜í{§ž[ ^2ß]™/¼ëýŠÿãŽiÓ÷ñùówâ–Ÿ½•ŽMSÞ™ñÌï¾t ž¡Ï›# wžÑ±l­ÇÂÏ:f3$οèÏšÓ”ç—Û~/]ñ‡Ô1xÓ?®¢pýS*väU§ ‰œáøMjtšwÔvlŸ¡˜«Í]½ª²MøàS;ááûfÈïT2¶šƒSj;„ô×PöþŸn{õa¥ãÍ”Îmo§tü<¥åÁ^ªög©ÁQµsªÉ_­š#¨A™j^z4U î5C_g~Ê&;@]kSº(]›;Þ4u¼mºç\Ëoa§Ë)¢ ‡É ïnóÒ O]¶pÇzGø d\Ãb§š %˜…†+Ü0k2 öÒ3¯rqÎkhŽ 3|¦w‚b T ÞÒŽ¹jÕLoÊ ²Rànò…º7ù+T3|rácƒ>…‘æµ>Å›Úá¡B-™,äWÊ¢s®T%Š4±‹IVn ’;Yr$ª è»W­ÛŽŽ<Ÿ¦øÏýõ­þ Ÿ\Ø>çŸé˜Ù꿤?¿ç·ª“)9ѹžTh oö‚‚A±Ø48C}z©ÏzìÓ‰}ž=ûé­þ󟼻}L?Å š€ë Ô¡YtÙÊ\eNl5}Y:}Ýi¤ÿ%ÿÂÙÕ[ýgªóô2ƒO`HÔ t=“ËG¬€š» X¿sŠ-Ë,ÙÞöêƒdY›uËÒÕ; Y¡È6@:tÀ‹~Ÿ: &ót’ÀܰP£læ“Ú~ ^»È¯åòk‹ð¤Åeîb‰ظA4 ÓÕ«.sƒkœ¬p²Æ‰)H‰•“,Nr9Q9±©cäÝïõ£ .‡Ê*–ýe*Ú82„6Ž1í …Ý— }ЬùL;6šðÄ& Ùí-s(IÍõêdnu'Qßþó`5 ï €å f¾+Ô‘dÐmª9È^UVÉ“ t…K³ t•Ks }.|lðQác‡>…`lE:[Å“äNµ©ôµ,­VË ¦ + FTB¾ òÕ[ù•ºè÷ž/¹óCÒö2ƒY'M È+;6´Íô3‘i,òqöi@Ìy}‡@|~ÃÆbÍíy¦Â`òT»é­"H^KápP ù éqð©€ZŠyëÓ+ã†SizëU§!Ìzs)´¢Ér®®Àw³~ ¹Ên6]¬„ºÈÛ°2»¢¬æS ¨R`.Íðbè1 æt›˜`Lñç Å1±áH…]K €¢ÉTn] ¥`ÙóÐÔQ—Š‚¨~™dP‰î ^, ©­˜@d‡¤‹™R|ðÁ¡º pÍ,×ôÀQÌòw1ðö&çá3)çYѵ­ß…\QêEM¦í¯ÁÊŒš«Í @–p‚æÉL[Uà CÛ"ÊTcå­LPì1v®ì­!‚ÛX¾n1Šõ²Lú8Ò w+’ßž‚'ÝLF¹FóÛ1xÒÝ2Ò­Hf2¥ ͤ„»ÔHSÅÅ4-0µv½˜¬§7Ö!ßxŽˆžb‡œE‡41äEvÈEvÈ%N® W¥jQ½2“)¿†/jR]ŦSꙹȤB~:—òfÌCñ0ÎÐ3¦½d|àdC,ÑÉÍdr—ÙWÐ]LLé4¹¢ù4ÅÆLN² a›…ò:¹6ÈOH¡í§©KÇiáz×Èõ¦­5ÿ£ìqÑ8g8Û‰g©N¶ÕÉÙ†ÙVOIÎ g+ýa :›ÍÇÙ„¢ÐÙnfˆ¢ÓÄy R«eÌyåió6@-†|0½&B…øÀIrþ»g"S%[ÈD‡°«d H´Õÿ#ž€úÔ"Ôg)/Ö÷Z%C!þHWN)öu·LM7Ú,sûDùìû©߬*&h‰ãÛ&&v]!]!mÏw ¹_f—[’ÂÐúDzû* eº›'~Ý× rájt¦&id5&Ç ¹Ê"¨ãr®×ØCÄJboøS²£r•†LÚÑN›ÈäŽFûiðL¡Á £Ù«OíW œÓ‚ê|Œ‚VãÔ /ôS”Å$¡/Í>-8[ÀŽ4Î,9‹r9´ŒÀšÓ¬`ÿYïAnµŸ)ѦO¥8ÇÊì›ÿ³ÆœòKT ÇÎù~%1ãÅO Æ•Á¸ò‘4¦%g@0ž;@‘’'1P§ètr fõ£Ùðx›&‚çƒBìíF~£h@ÌýLH|ý .3Ùã rMdb{<ö”f“d'­’tJvìÄKvR{» í¤‘í¤1™ly 'b;ò\¤É˜&°¸ŸH5¥¤"µÑ÷ŸD• —¡X5¢œBÅUÂ]JI…yDTñé“„DyŸ:¬‘tX/µJ:lCàtnïÃü| å;بKqpGÜŒµ|uõé“„Fý‹*Áq¯¤†ªAó QI c’úH «_%Ž{X =ÉÔð¦qì(µ€§%/pè¼(áLÎ÷vÎ8ãŒÇÁ‰5°l ¬‡ÄÈ`}’xG(êJjì%5vÞE`Vc ŽcÁFž`ãØÔ€ˆ ó ¶€ÕM_aOÃþ³qáήwY ¢äH‘ '´õ í“4v]’²%’®H$-ˆØ¸Æ$)ƒ‚ÿ(¡†_!þ—léúü[€™Xæ ³ ˜*Yìß@`¦AÃ$9Ø×%0‡V$•1X¹VH`å£fg0ûuÁ~t@€UJ`UVΚ­g°ÆAzòÊÓèÖA¡Q'Q0ô7.ôLCEÎ ^†‡$.K~sýF£a…ýfUò›%ò›Ÿœ%†Ùoãù§ŽóSà(yÇœG3Ôœ<‚È…$B>Õ”‡yçb!Ö’Aœ” T ÂjŽRÂ8¥ŒZžGËÔË,Ί¼tCœvð\¬ƒØòˆ L6,=¼ZÔût?D=3G½öAŒçíJQSjë3„*Öõ¡®2>pÑ\t•ùûDí¾1T4›ý¤BÇÙxRQ8ñDœ“Šõ8uN‰t@‡å?WôÃý< j@(‰2n>ÿÚI1ïûkûþ:ŽSÃY+MrŽeeÖŸc­ûσï¹ù)Ä °ÞIp>ÿ3.áÐAE!s-TLô1oxPÛÒQOd¼q A1ôX2hŸ}E‚Æ ¼ÿ Î"tÒYDƽ{b‰!–’Al— Ì’Né‚B\Ì1„ŽCÇÏ1މµeJ¦­‰½Ç!áÐ „æªÒ „ŽC'÷þs×ÜVqç%ÙJ HþRbŠ &~ "qÀ$>Î¥5 8CLÎÃd÷7ä@3ø¨‡ñ͸Ô\ÔùX‘Ëê56ˆáįç#²ãÄöáÓ¸9Æ¥ÈB( u‹Ûï÷»ûvõÞÓsè•™þ¡Ù§çõ~¾»owß~¾ßÏ®ÞAœ áípnX›=:Çš,©IuI¿&ù9æÜÃXˆR`Ž\7fƒc¡ì±ð2¬ jAa…û^¹Å"¬ÀK—R €ØʾdÁjeÉóÝ-¦X:“bqšÑ8ÙxžÞΠRœÈÑÃ-Η`å²[L‘D8cž]|•-'®²½{YØÿM PŠXTjwÆóÈ¬ÉØå²&é²&ÇwJµ•#Ž5Éã7O­%‚Sש9—`9_°˜ý-–û&k‹»JuS»hp}&]ãÔ•ÚØõû(θíÕ[òÃO“Jlz§õ”Úå™ÎAÅÀ9"¦2ðÄ<ÁzTqõ wÄ»xê aØÆcðº!ŸOõ2›ùõˤØh«âi‚kµUÐ¥EÉGÓ–Uð9p™t`GЯöŽ“ä¥ݘ ù˜¾v™1y4P§O»Lò£­:æPWõ1¼YCI-%u1lOÈÉÊHÿLò+¡ûȆ ~ÃhRA¦ÎÉÑ[9MÊsÚJÜÿaƒ…Ä}VJÜ›Îr%î‚4$î}ëKIÜü¦BšÚ+¤)ºø$î¹T‰ûc.Uâþ*?'YÂH´HÜá¦QâNÿà qLú ŽPS”!JÒAHÜ)ÃqJNP2GI.)O=”ø( P¢Q| †Zizã*iºuÓWCšî­³ M³¤©@¦‘‹iºîé?i¢¶a·‹Åžj«ê½ß†Í+ÕÐÌrmÛ u¾Ñ*Ù§ŠxV³JŸ~)ë¥dàQ׸ýQb](€K¢N¼èPç ïEâ(Ͱ£FnĨýÉ_I°ÙÝÌÑÃJž#ºP؃`¾¹’›Ã—Rýv‚ÞE'vÏVÁÀK©É6îuéÒ¾M Þä`M{qòjæ‚M % qô‡ŸG?Sý^¯d "F)Ä3•¬æjÖ ×Æ–!0/'µÅÁžÀWHåGX³.š¾»ŒÑSÍn®´!1z!ÎC ý›ít„E˜4³Ú†E&æa‘__´Ù‚Efà„9ν«³SI†cÏ"¯Y¼ÙNï¦âœ½Ú†J»óSÉõÅ›-¨¤ú¸ô'•\e#!Ûs»CHÈDÍL+UïÏK¬“X[§fîºhü xxxxE·èß-É«ÙÍ›ÿñf 7¯e·xùÙŒ­0|x3F•ÑÕE÷É ERÜ£Ê<5kÙ‹Û> Éڌ߹DÖ¬—tØX³>ã5K)úìae<ïÁñ\º j– ñœ°ÏzÍf+dÍÆ•šM’6úˆ‚3¥àL Nú²…( &ô¨Q'-p@ ÜYaCæy¥Ì'‘Ì‹Æ#2e^£™Ï>e”UØ(þ8r褅âïżF;ÅŸi2|úâìò:Ö‚s„cb³þ†Óí”u&œõ ŽIYLJ2RÚ¤…²nŠÀ²)ëL`¿¾ÈFYÇÁÂfVÖ%ô2Õø…Š9öæl$ºÍ#~£Y"~î3—1ÈA†¨üntÿbÄ ùýØ C340Üîòìb—!ìH]ªâE×ä£0dù…ø€ûHÒÇ…!GyÀ©(—Keë–XàÖ­¤Ù£îT"D1½³‹lñü e‰¥xÌÏvèó¤yÿ–Û³gIƒÇܲµnW ”=1¢½T‹=ÊæÜãOÀZD).åš{ËZ,\¡PbF˜ÓŸ,g=cõ ¤j mt‰[‰Ž/Áa8AÉ$%‡( ä^üTUf!6äø‘«2éì3ÀŽ 2ú:Lég7pvÜéÂð8rÒÜŒâßx•E,1/_%êìXÁyKaª€x®ÎŽï«ãìøud_ÛýþÐùc0„µÞJÔZ¨µ¬Ïq<Œä8ªõêäxûçŒïa_M‡ JÔÖ=›—W Ò"/fO½³t°dÇ0ÖñÈN¸©7Ñ/Yówuc„ PA×-ýg * —J;`éÀ¾íGʔВ”¡Ÿ’J†)§d’’W(9BÉ4%i2ê¬xœ­Î!Ä«³âu7˜X1‡ˆ ÿÛŸCƘXñÊ ò/˜BÏw\aÁŠñ9+VöC\üK±âfÆ›{lÖÀGdŸrö¡h™™G¬Xq«+~¢”±âʽ_+>€E§»¤¸Ã8çÄPâÀ<¡Ä¶»úÏJü÷eH.7ÒfVœÛªœv¡D¿ö‡«‘vÒ–Ëú†uBF(Þߵ˲3AØðÍ’ü‡a$¢¾HWjo^—«øB {”žVNNÒV†a8ÓKmHà’@1¡4)ñ¿»묢ˆ†Òÿy©Mñ]ÄíäsïPjAÔobé:«¢¢l© ë{’ÍõlÂ' hãÒƒ¬³Ø¸d„Õ$D—R äzõT‹$Õ¢_©íz¯vÅN!#Ä7£†'"Ôð #¹Ó½ Hîî¿~•†ÇñÇ2^WØí¼¶À-”Îúz„h!–ÕÂY–âG D¯ÑGûQSTú°R:q¸å÷ÔYp8cékʲӷTËÍØFGbJ@úæo}!F b4 ÄkK$DE\>†*¸¾–FcMCm\ñJˆb¸#u7ÀÛ±<Ž/ Hðýj€øî’ìäµQÖ ïçPº9Èk(ݯ”nŒ¨²Ò•`ª(‚©{7ß`L5”¾ï|›8ªyÃW,ü”cð½ó"–Js8µîîò0Âb ¨à«xc,5u-Á+Uñt( ú¶ƒU@ÕñjiöXêàµÔ1²ÆRW,Ú`K5@Ü¥@8&ȺaG5I<Šœ”ÝÍTºAÑm,ݧ”nR‘~FÓ¡¢"Õ%ñ1ü¯¬T¤ˆÿ8ÏFEz” ²©H½{®º f b6 Äz" nqœ&Gº`sûä(=O“o`éÓäyšæž'céÇÏ•¥{údé>(÷# ‚}ÒTØ~ _S=Œò¼>ôAb5ÊcçÚì{ÈÎîª×Y Ü÷`,ýâsq!ŠÜ¡ì\¥IjÕtÞŠB>Ž‹•Jj)©£,(Í+N™Ò¼x©QY`!‹¯U˜ÆG±(>*bS[•ð RcoÓ«` ÔÐ2ºF,£CR:ÍóÂ"Ù²ô$y~lw:z›#gÚèÇ͈Ì‘ˆFùÐ7šÐïÔ¿[Öq@9—uÞ‰"bñÓ®ÝóÕ±]AlUÄÝ 8ˆöJòkîòÛ(É͈‹D£œ\<Ç”‚8¬ ¢Á;¾¡„˜˜qK"Ž+ˆ“ âqJADe‚÷åçq”GçE\¥ ‚FA ¢F#ÖÄås4 ¼SÕgãJ2Nb¼ø|ÏqÔ)=Që‘=§²G"V);|J{ñØ>D,î!VÏ|ˆëÄj±FAܨ 6(ˆaDŒt1Dˆ¡y8$b£‚”V­=rGL›‚¸@üﵜ3ù¦œÉ!Qgr=ª¦Ïä·;l|²ž …OV¼;ÌŽÙ·ržÝV°Q¦=û…Ó‘Ê£ÒŒ?±2‡Ÿxæq–åˆy€÷€÷oˆÿ‰”ÛØ8cžQ~–sB¼öxÿeK·à±G—‘àƒQr †Ó릯e¦g=j˜;–ÁyKöuÑ6~n‰²_pFtݺŸÚ„Õzl)ɈËÔC?©ÏâšE÷—÷—h?“ÌÆýÜb!vk‘ kÄiñ}qNA4í¼p×EÄ)Bœšñ•ÏœˆŽ.1hRÁ¸ÿ§t9 æÒ£Í}h>Äo+ˆå b¥‚VMn2÷ß5 bƒó"Ÿ“ˆGp­Dˆà+ˆà+ˆ¦Ýî£?BDt˜Qbx‚èX*q7Fë"D×™@46ìŽü çqn^D‚ئ´*xÒ"xÒÄ€1û›žY®û%wšíÝõ©SÛÓ¬±þ(» nÚ3øT ŠÓpyJîNj J<”Òrr¿ü42Q‚Î ¢– BêÖ‹ É¢ãˆbþIJ嵘œ®‚1ˆäóÕ`µ®;c+ا”}ÊÙ§â 6T³VÉ>U#ÈŒZµÐþ2¸ËèPzïÇNh§Â€ÚNøÕÄÀ’! —@>(£þËvÅt;@·‹!PwÜ…Nþ£vî<º ÆÜ›òõµ“ÄÅâG턹h©&,ýìwh©f°T#KƒÒÒ ™Tn°´œnWHK+ÐÒzÝÒZÝÒö?ÅRA1Ó7’¥UK«ÈÒ´4D&U,­¦Ûan©(Â÷XI‰¿¨ÅJ:ü×ZM¡«·Wžº½#ëØÂé NZ ¢“X‹„¡ ªE¯¬E/™»ÇP‹=t»O¶w¶÷´ÞÞ‡y{£å§ØÒû± 70ö –ÏGû 6ö“ÒÆ2&e°1E·‡¹#ØÒÃø=6¬áú´Ú¶j¦„D´î0dRİ–Nÿœ 2z'û4š À!ÓÏîB ¡Œø®ßD?‘1A&Mª4I·Ñm¨Ò!ºó ¯’~8 Ù~˜l‡f‡ËØÚrW>øµØÚRº ÆÖîÉÇ«j6ËÝúv݆µûAM(a6LçC'JS8ëî’)2oZÜ…—N¥Œ>!ÀJSÆ÷e?˘·Å…þ!-¶r+\E´ túU !ÐóÎbáçYn8Q×9ûûOXÆZ~Ô¢Á)‚Î1ù+Â*|L ªe•jÐjR§S–ºô¿“Oè Ï{ýÐĉ€ôŒÌ‚ÕàKîÊáR'ñöJBÀ4ÄüßöD.î&¢¤%â5Ö·º­,ÙáÈGO¦£„¡îs³o[à}Š_½ñk‡¶€þ:ÊÿšW‚m‹=Ö£ÁÎ¥êe è-¡lŒ[žUp»æPøR ¨¾ÅéåßsêïrO ¾‘È2í{a¼Å„=¨[ÌÓM£è5<ðaÛX.¨?c¹Ÿu¾ˆúCö$¡7£I¨×á^ÿÖñm?sn{6wÛ1ç÷ßþßÃÛžq²Æ…²¶A…áŠ!BKn{Ϲ® âû>ÿâ ±V†ò„>u–¹ÐµÑ6îÖä/XèwI£®m$‡ù úñV!³ì,ùC}%ØË«I¾¦î]Š w2À>¥ìjÖ û”³jÈØ§Š5-ÒáPzG—(á3Q¹ü!žÇ#ü¶SÖRsÖf cVô§ÞMY5ûR#ue Ú—ÚYK)k¹}©Íõä19¡¡œwúXÆ2‚µz!vvx>z`Å4+ûàG*2bó+® ¼i1þÝG\ü½ì'Ÿq5œ:ªÏÈ™$óAWðà êìáôÓïQÛ‘`©FVz ’íå|¦‚_P#Û+¼³, Î‚+oE·Ô¯åÐú zŽˆt€³™Ç-êµìn„î6²Ë&ºlb—ÍtÙʪ&çb«ª…©jâñ…ЫÖjЕÖêYÚÀÒM,ÝÊÒK›YÚ’žqÂùÒ®\i콌ÐÜê‘vî ç æ”'±ØfÀö#ê/¥iÏœàûF›¯ˆ­<žQ˜»±ÿ|¨’å8ßù^²ô9.ÇÌmw²Feó‡òƒËª~W­òðE&ÀJUÕ«xäÅƳ”{™l1¸[10g­Æå}*åâ Ÿþð·rÝ„!¼·~‹}«Pô­aQa4ØG}«Xô­ÔëÕ¾E£ Eï[Þ·bn__V*A“LË3,֥é¥4fÂéþw ïƆHhMðÈ>(Ø€=Ì3àŽ.!"óûG–U³?\8¶mÌ ñVxïþrì7.'ÈÀ;àÛÄØÔ–k‚Y>öëðî²»;xÞ,ÿ«šª½£z ˆ ñ)LßÖ³Ej½h'›-hÉ@;öÓŸÎàj§¯vÄD§P¥¤‘*‰‰®ƒq­a¢sçåò±wŽª‚Óì¬=£Sh4뎃ëÅ÷«£8ЙQQêèðjv<Ù@˜Þ¶ƒ/ÕÖSù…)Õ×—NÏ`”ÿ-:™ÛþàúÞß0¾ }îUõÁŸž¥XÙ ûnbãÙµeûâmϺ`@9rµÁ%¼k¦G¾p:f~xi*vEl¢€®«™Ò‘K†ä C<鑹8.¿~ 0›Ô’ÿÇÜ×ÇGY_ùÎ3otÒ :©qo‰Noa[.îMwc5Ul±¥-mñš^qK[¶ .÷Þ(‰3©Œ3);Zܦk¸u{émªÙ~X×—“ Jx26øÖ'kt)¢D²ç{Îï÷<Ï$“bmûùÜüóLž—ßëùó=/¿óêÙR]üÒ%vE;§Ù–À–±ÐÚÿ/í˸¡3Ï$vÄv´Ì/Ôý’ôidÈ3v§o8 ¨D0C5I˜¥§ÂÒœ 9÷2ñ²•—ÏRµSY±7Õ ¥½…¦ñ€1¡ÇS]Í afRÏÚæÜê„Gt *w8)+&๿ݓeÛ88+`ç,]N÷=)ù&­ pUËA)±, %\ƒŒOlÈP#ZçÃQ ~{wÛg¶“0r¾¥D¿TðiA+Ç;6‹Î´Cl°²ëG.ŒÂa…_ùÛ/9`ëð±'‘‡Üc«Iµ^†<¡ÔÇÊòÿ=çèåƒ>îa¢›xdÚÛœ8<ó½Ä ±ížÄo»_÷&†pJh7˜.špÀx¶UÕïƒçÙ»ÆY;Î1í}T­y*þÚ“,Ào4Á(„`h¥µ!þðdXþ)ìJ^DL^dâ7€Ô˜¿yµý`ÝeŠ)‰móÒš ­»“籈e=ö°­`UƒOhKyéYdÈmKUÿÿz§EqŽW<5J‹)YZ6”‰…@éu§êÎQ¥î$övÿƲT–ñ^ú3£lÛÝý²Úѣџ^˜ÅÚ¾sç'%¥“îö¥;kFÇÆ‘R´TÑ1̓wª×*õ xVJb@5µÚ5¡‚]ãÈšnæRaÙ\û}C3 [Ž&E€í)QªxB,[£ä©"VÑZåHcÑð+´îÎŒ _œ–'+ #;ŒõI.õa”‡?¾jyˆQÙ PÙL…ÊneTv‰…ÊâüXíò0ÇÞ%þ½ï›LszS“3JıÁIŒLFŠ“ÈpÒ6/ãbkdÑ:mAK8)ʤQðáÖêÖ×^vè%hzÝËŒsP<ÎÏo§Gf>œ9‡Iœ±0“!ÌÒ…^e±õÕz•îÒ%˜¤1Z#"!xñ^G}«sˆ÷-7)»‹¹ê¸v“ÜA7.œWÞ3u+Ù6ß?ÎäÆŸg‘1î¾!]Ì¢þ9(˜”çµ#ôoŸQ²D½zƒfërmÓ:ø‘ÊÏh”Ówta*ÚÀR®,þìxè˜(¶iföÞÆ3.¼Œ‰Ÿ|k×5,À·Cüž0ö“Ìöq8! '*_óÇ›úDŽkhayl9þwe9^ÂüÈ Þ34ÿ6î?Ëêx´SÒv/¶kO‡ÝÇ}3÷yDœg*®½žÚßÝìgÒ_Bï†!ƒ7wàîëÒÅôØ-•±»BÆ®€Ú³T Ýzè:MC÷­ÿ.NGö¨îáK¯\úö؃¶g5vT;šÓ’ ­].²[‡ JØø˜84óm#1ÜýŠ7avºA×°”Û©FÐJzs _ârYs Œ<¿ß„ìèKó&qƒÉ.íë ©Ð>âJ²v9]ý´F]{«KÌ_]€á‡Í«ˆ²e»+•äI5ÇÒ›°#QK[v–¨¶šNÏï­ÕËJö;(S­”“K³:ÞíW­µºóÒ— I3ÝÕ+E#3´ÉøpÈóøÄ¥Ä?’28 R²Æêt¦> 2ìfEûfÂ<_ßp¢LÀ¶Gט×+dŽ3=­‘•؆Ü|ÓŽ5-ár{ƒfŸÇž™»c=áľîw§«ˆNØ0šô³v<Ñcÿ{Aw玣¶’¦÷yzÍ[ènRzžV´†çeU+u˜«î²­D^hIrºHV]9K\,¥X¡Ö\zóv¹¬¥ÇìÉ ói-¦æ£ï'àñó‹`/ÿ—x,sç.µ7l)†ìNU£3_”šÚð¬Ÿ,‚‚ðùË í†]JÞɇ»€Á¢=lô?D ßÓe‰h¨ŽQ¬G•GKü^ ·‡ÕnÛCÆó‰ÓþÿÁÿþDÀ•˜r<þ—ú]´ âm÷k4Ó.Gù‚äÛU mFòõlÞ½†@¡NwÎ6ç8™ cœCK50·ÛZ[eØ3y¾Ø#óŒŽÀdQé0Yl`ÃŽ †:Ý¢M°ÕÁL¶¥ºöhx¿c+ž°Få‘t=/Ï!t ôؼÑļQpøí¬*¼F¸c÷¹2E/‡K ß–‰2Ñ„ô%B”\œ&ÊWê Ý6»ý±í#(0¶v$î@†»)X°’±àŒ±|kyRFFÊQ&s–ÊTmŠÅ‹î©àæÇ~Â#º;ö¶±òú´/ F¿Þíû{Ÿš‚²A?J"¢Ú›(’•³rD¿Cl3ªÙfï›$ÔüªËµ‘‘;©2—±£K¹1FøßRñjd¢o_–çÕ8uYžW#Ã_+|ƒ/5¾¹×¥7Ú׬w‰Eã,®LRÂ,æp'SÛ1í|òã“Ø1žœâr2¨L¶9c²M†0G…0ÉÕÀ$„H‡`(•ñéíXÏPYá 8³~hÌíŠí¸ÉTÀj ]<§„­>^F*;‹!*>¢s% þá ÞÃÇÎÁâjõAR'ú[Îéþ î‹u{ˆƒËÝ1Kùm ¼>•E,¤ „•zs+µÉ>°oÜŠc¢ö0M5ö0yßÙú)·ÂUÍàQøÒ(w.­[ïG¦2O•˜Ñï=¾ïiøFº´¦D’&Uй'»ièˆHKvÏì1zºÏNçÜûTRÒ|àÜøö+þhií¡u·@ó”†ç¹Jk'kÀ>Jj€°ÐßÎÜaìH¼…Ý {ß9\qŽÏu[n5A{p.œØ ä™° S×x…)Ï„m‡¾k›!‹cßËf˜òŠÍ0í[PòÍÂ*纥Z<ñ Y,µæCûþäìA¯6Ï¥ÈéÆý Mµ-سuSÛÏLò 6Q¡–ßJ ë1ï¹Ckïû\§¨7]þ|²^¾È+š:D@?|¨ÓÕšžTé¯qd&×8ƦLÔ8Z=N#+GÉtÀì'^ì~Ù7s·'£”ªR(±sFÃuiߪŃ˦3¾Šypèñ¯±V1Ý¡¶ó „‚®Ò(è³'ˆ—~qœx“ÚHrB´Q+c(76Ñ>V’]G}…ÿB[‚>Ï,lneMØ7ö‰OêÐ…–ý 7ÆÎzóZ]w¾V×ouzˆZý[E¿ÊpµŠ2‚*Ð̘ „€_¡u_¡õ­5pnª65NÏs¢7MÏs¢ßËÿ–f•ô‰OƒÅÍðµÓ»&ÍZq4¬ñP4:åÌ?oÐöÆ)QÓóU]¶LÏ IËò0[Û’e˜ÙÞ¸+—iëzpÂŒáÛéžË:ÜîìÛiì¥OwçvÙ~wÌÏÀÍ#/u;üî¹6.œøw.οúè9»â[ý–¡IÀÅ \Ìèa>–˵q·&óÉçâü8÷^î‹XÞÉM×öÍ\¼ƒ›ñV® ­´\ŽçéÏ–k5£”Ï 2E°Ä¹Zeía@f »Âž‰~›éŸqŸØ=¹¿á;æ§¿@’õޤ¬{n¦‹7•(¾ e~¢bRž_ ªB«P/¼Ntû?/þK+–nú¸ægíæggKóÍÇ–KvçéÐtÆÜ«•Ïì‘U hua‘h¸¡§Gf%)ÏÒÞû“)o×l~ÜäÎ':øõ|éà„Sºu¬õEy[19[˜|…ÞÒÞG3¤öáÕ#^_0°$`ÞŽT†CŠr”|V„¢š—kKîÕ@5°Z(~EÂ:[­ußÊë¾9”¦+´¦Y™Z6Ñ@ž2¡æä  ÏI&ÚÀ#±¸'©Pq*Z-.üÚRYºôÍO7^.Æ«ý¨Æ«52GøFgo:¸;)Åß¹ÛR ƒôÊJ_ƒ ¶Öyìì»hÕÌiíB³FŸÉM Û[(È⨌n†¶V42 3¥1ñw Ž'ûöw¾Å©\NNgÛÕUßÄNö¶hJÂ’FèîÆ¥Éy1;ˆ Ú/”¬]¡µý.&nìįZ0²ËBIC…qô&,Ëbj2> òŸ X—þÌIÚY ÐîŠBÜuD@½pË̃ßq.Ü)füfY_Ä8@1).`@±!1åx€×áV¢‘Ä€MGd*ê{é-µ råQó†·FnGä¢ß:Nå"ÜY\|\bÔBDp(Ó{ÙhÙ¿òó5ºÿDúKÄ7îö™ý7ñšÓE~ÞŠ¤² ¼4”&NBï>1Ý8±ï=%H§&¥éyOU?'LðcòÑçAaLÑB"6)*‰u»ò‹>¯³â«êXä}öʬ1ô‡ /n¿,“Ø»žŸºÉÞ¶RÓjLm+ßZÐj¯­ºV®‡Up½†5X„de¢«7+xÆ ‰xÜJQêù!”ú¸›‹âõÔOp%î§Ç¼ž²¼Í{ïÌwÏ ‡Œ]„ÙŸ'˜~¢ûe74jHémÆ¢R”Ú¼š ·›‰;þEÜn<õÞÊë%Îë$=Ý¥uNAê^Ýã|ç[@ŠBñöÝ{] ¨;æÒ4gT tÖÝüy¹y×E­ní&»A|›*•)óŠ‘°§gøf’ßN<û+ˆ‡E]épFv€jèÒ¸Þ­/¥dz'‹ó +à…ìb¶W˜ûéz5÷{íz—غjdN£¾Ìˆ(¸S˳Ù}œf¯¤âÑë#Î_\çWíÎY’" „zѨ;wa(Œ¾ÐÖ*Oáfáu§Cñ¿¹žyÝÊ<^W}5/¯®h#*îŠVF˜^­8àˆ h­8V“ÅUEøËÅò%þ»2ÅÿQøH°$Â.•õ½4b“ ‘ú›Ï#ˆG<‚õRò2pY¦O ¥|ܳ˜ÉŒò ——þ5Žm‹®@k„Öž¾N¼ìÅ>VED'd$ÁGÄޤ½1ª'Ê¾Ô b4@¬l´†ÙÐc› eåÌŒB²:@ Š-]ÊÁ‡½¶}$´åáöKŠÐ.”7w`ePÊd€@¹º88ð‹òîà%®ø£F~c¨_p@×l9àâ7AýÉ`Ëh×¢€'Å=;ë, Â’Ø™pñ×1fDÛ64?+(†ßØM£*¸½èÖ€ê!—É~EÝÆÕcì²GžWøN÷ëÚp±Ç57gS4ÚŸ8m«Æ/Àh¥ ”C½.%óó>¿íÊñ9„¤KAߥH>C°K::Á½¸ëžj7?¼ÃÇIoºÁ]‰lÜg©;û”(1Lª#]ÌvpÈ=‹?ø»¡©§O"‚òÈä­¼JÕc“,·–®d9¼žäðPU-Ç3› µ,÷Û“þ(°^ºµIXl‡¬»N¹lŽXd@ÒnÞ÷–_ Þ8®Q1Sùª—.3w‡R£rjG¯,e<$VœµXñ漎"X}Ò€Äþù²³ÛÈãÑp@æãÇA>ˆ§L:ŠVÎ¥ú®•úÊä,®ŽÈÓ>—íÝo´¡Ïhe^jØ4ê ØJ³WÂ!¼{Uª·X ~þ5Žôi•åºMéÌ­†ÄüÐ$AûaßçY8Dü¸¢_åÿ8þæ%®Äü‘‰þ¯5©^é«—5N°%Kƒ¥±4°ÆRK…ÒkQºsµÌpÙ¾Î1¾Á[M `ínœ}[|cbÚ¢ñ"›éóæ ô™áz…/•p¤×Ëb­– ÀBÃEL41}Þ wœCƒÖV02Ø¬Ä >Ãc zü5Î.ú J€°æÒðâµüÑAõQ]Ÿæ×!Šù€Œu b¢ev‡Ì+14V(Þä#þTÆZ@V-xY~e…£!© # ·í”‰Ѹ­ „¶3¹™[¥ábñˆE•ë¸ÝÅy‰#›.Æ1§¼ |Ô^BT þ m½7~W©àÕŒ‹#3Ï Øü2÷ãjAùxëq'¤L¼Ñ^v‰Íz¬ÐJé5“åÿ-³\{e Ñäæž¬š?™s š° &ŽÝàRÑ—Ùu=ÖÊ‹³,^–£¤vÙÀðs6è”xìÑi4lîîŒ[¸sR^H{ïÖü¼Œ\–ÝLIAůÎgʹÆát\ýªSÌsŽ ºÆáœXX‘çœXT‘çœøbEžsbqÅ8çÄB{°ð¥rNpœ‹rNhW¯Ã9±`žáR! *&:Ã݇¸d{ ¤FJÀ{þ#eŽu½ü´×¥ã¸]0àî¢B\'ÓåÛ™à¬vûC°D¥;iC²²!3Ï >fäŽÈH¤‚#›Ü®WVäõ0‚qØZF©ªFaük›WÕk7  _#„Ì?ÏvãcjòåûFá!a+Ü6,<µÄ‚% /v¿o‡X0‡ŸèÑZp}…S ^V1Q þ\1×±Ìu2€Ë¥ÜÜ$Ü$5x…Å­ãhYGª«UÙŸƒ.±À4J}q¶¸H„3Z[ĶîWü$¢— ­×ã‚Ë (ÂÝF!  N°-ºÜ€ ¡wÝŒ xaûŒ×ï'Í 5¨Øg£;ýÃj=Ó‚tå‡"Ñ—K»Á,Æû €E‰¦¡˜ïˆí(±-ʧ$ä#)…pÈÇüN¶ß4‘«k%pkg 켄w¶é "¥7sSÒÆp3üªnY@hczM%ÚÈ>®~‘l6ï¸Öç'£®è0íBîužªÖ 5验4±º^Åzy½C¼cœ_è~Í“^þœ+F½. Vrµs=*ÿÅ7Ž…åU<ÍÄ#Ùè,»õ÷Q{÷’rJJuG,ZΧc8<Ê€!ÍUæ²ÎE–¶Ó褞} R¯:DtÀ 2p{„ ŒÝ`­»Ü’˜zD¨à¤@õ”>H/ÉYt§—ùRÀô×Vþy^*™¶~º÷4îëTyœqºmWpzˆXˆk»§C^îR|§²õ¦*—÷"XJÇc Š/¹ÖÐ>¥Zá{¨Xà~­N9ýÈNš·R½ü–ƒIêž Ù//òÛŒáÕ"®o‘ß*æH<ÞØË®ÏL|ôáü~ “ìÑ „C,m+öQ!(‹—Œ¦›m„Oµß·Š ½qäH¼­|é]á „*eµœ0V€ñÎ/^·‡yY>öE~« v ùEï£_¢*àWhÝ,f¢“) N4"¢†† r[ÓQÇ0-ô+qBB$ÅÿYÞÊTct\pcAé!*/K`ç:Htl¢ôXȽΠԤT¬Ü%~-=ŽZý<Êýü[%,œ=eûê$½Õpt°Nm²ŠjÁ´G¼u¿¼ øà–v7‰¶€d27­V+à,çã—ä‹_ýˆÑÚ®Pf[ìcÊ‹¡ø°JøsÀÀœà½Ú¯í«ã*äòö9POR>Ì7˜hð“êÁ%¿4¯(¹ð= (Ø=Û›öÝ{&ïUöÁP&û`ìucÊÛ¡–ëÆP\Ån+°ž°ŸÐ¬¸Ç%YkùQŠGAÅdÄSVéë1V¤=<Ð;n´äBñÒÓ:qw0lÞ+=n¼¨üJQ– F±‡Äo¢Ï1ŠÈU¯ã*¿mXr¯ !CÅyødý}(áÒë@c5†-\úĸZc«2^¸ ¬?V¸ !¶p©14ÕVBg}Bgè—Ð~O¸À5dá¬Ä~àÆÄ=Ÿˆa¡U¼FßAS^àÏSbªÿ/°¥¸ú‘ Ï"8U€7BáÇŒsñ0ë."„œ"(Oeªú¤# ”’Z%Œ¾ZÆ Ír—á"ø’9°XâþÆß°ás1Aª ÙdRŒÏ¤|ü"™ˆÛ†­zü‹«l<(ÕàWhÝ´Ó㘇 Æÿ\†!°Ì«‚£–¡Ê¿ ð'äWRpdsO“̆rA,³ª]ÆÕ¦ÿ°9ì#¬ñ0UàWhÝÈÛl4‹‹™Oüz¬+I+Dí\ªZê V·ÃßóQþÄChð«£|q]ÎMÄÍ+3üŸtnOBF¼Ž•>x¡v-uIº„€|‡×VŸÁlÀ µ öJåÛ€Þ–âVøÁ%ôÔÉ'ܤLÅÙc¹ÛØOJV^®¬íhÜ9Áˈzà¦ÒE¢ø‰^Fâÿy JÞƒ-î1Õ×4ËѨە‰+§)¼S¡–^aì} ‹÷Q‰ÎlŠÆ#®ºòÒ¯‹Çö¤›qÏïã‘ÐÚOÅó=ˆ™xÅûØÆ½KNšy.ñ;í¬3²é«1¶³nëØåH£àt9ÚGÞßí0é=-}0¥ìntöa$¿ìnl‹žš¬÷|> Ýþi?» ·?}5œ…\Z/®FYvûnâãäI=óî&ÅüUn úR?û2œŸkpÝȤkl°¯ºÜ¥IFã‚”X€EÛãÒɘ¤»»csuÓ³¬ Þ€—ÀÙ¬(³¼º'}¯ÚñÔ¹% fÎå.S}¹KGÁ¸uKÌŠ4øQË+}fûL{Mtªì$uHg‹(»ÚË- ð”’`ܬ¸:C­ì…†í*0ES5‹¬òœ¦ a)ŽY€Ô-²½\{â¢Võ»:½üÞ‘µ“l!Šsaã9à²ÚËmœ¥#αimfOâi¦ŒÐ5 ˾¯yNËR#Î0`mÌõHs º÷38ßËû·ðMîG5gÇÆliJ°o•¡Í\U˜Ñ!wüZÝì4q!iƒ%¦´þeÚµ‚ÑO\Ï AîaѵëDñŸ§Š&ò¼Ž¸¶ií¸P1׬ìÄ«¿œ/Ë.·§CØ+b¦_sܾ"§ÿß^çò¶é±´S<\(àIK…xÿ/¢ÿ[Fî<Bg«H™Ÿ­=lJÚ–Ž±))-gµ¡ûh 5?Ä«éÅ£4‰¿¢Û¨Ÿû;C; +ýv¬Éf7oQS–oÞ¢¶YdòfYœÊ…›é[Fä ®±–÷qf·†hÀüÙ_ñ¾ˆ2ö ŽÎæ*[é©Î#ájó‹ÚŠbJh»$4°Ü>X¿)ë·æœW¯ß9’k¡Ìüoó¸I˜¹«Ágl‚ c·-Ûå±} X Ïâ&·m‡ª4`rò€ßÊG•Æd ì ¥ÿJ( ÿJh´ˆJ¹bÒåÍTÍ)ä†éêŒÏ¶z¶‹‰‹~µÑØ؆9Š÷N'å™]nç2ÞÎõ6˜Ž!¨øÅ].«×LHËq½ì…ñ¶SF=@+R1b‚éÆGjDž,ã¸Æ\œëÑá¦x:DÞz`…Ã|<Ëá¼Ècð'¦Ãz¤tA9©pç/Ü@›·¡„b“éKJýCQMRšª‚¯+¬õÝnÅ•µ Rk³ŒBm²ð0&Ÿñ ‹Å§Ù~…Ö=~Ž1)¦Äö`¶*ÿc¥¡+­&ÔáÖñRá&Ë:·‰õ‚“ïƒ{èïSbzë`p 8É<½©È":LN{‘-!¼¼[m)rà[¯ßV?ŒžY4‘t’ÏMе—{ã8:\*årcz@ìýD†( öfMo(Ï §8Ú#ǯh‚,5…â‚ûRA‘¥ ‰ÁØVÏ$Æ-…ÄŠaEˆŸÙ`ÝY)è«Ìÿá~hÏ9:2’"PL¦°gϱR€‘WÛ*ľ!ÓjO0¶]ir}D0ˆ@ȵ¥SÑ9›¾„blª…!Ix‘²81gg«ÀœË]Ú* @|åLâ+¯’Jìa­£Ø0x4üævö€rM%mzŽ¿‰@>’bh”ß›aþ˸u}"*9¼C^l³2lœƒÒ'Qßåy¼÷ïa`§Bp=— ÙŒ‰ìWÅy æ\ûµ$˜æ}GlRDåû¤‹næ"‘X7ªÜЬ}CzÑcºï¢Žè#$f÷+EFŽ~ClÞy ú7ìêts:R@+Á»Ë { ýQŸ%‘G…äUX=G·3õá—3x {R ‘mÑÃNô6lÞŸ)²ye„¥³_5¯NæK}æ´ âØÐЇEMg^ü¤ö‰îËŃ4Fk;‰ÿYö„^x¾Óà þ\[[uÒj-ÿêU-—Uf{¾#ЇÛèÜÎå0iÃ Ž†ÒܦµHM6Y¯ÂXÿ¾÷qõR·”-Ï·“d¸h˜êßç4b­V§ø›êƒV§‚Ü©å㣗&5áßð1‰,¼FÌ‘Ð{­Ú0ï@ ÷åÃhޝ:jñœ£’à+bèøªˆ€r«…åÜ¿?Ømt1èÓýSú¹Z{B¡3D΀Rš{œ T°ˆÈGXD. cû –ºC> 󀕞תü« ¦T½Ùm¡L±Úl6Yié•ì@¯ÿKueùPÁS mé.~…Ö­:ż™YQ&ºÈ§*ï¿ç+pDaí>›” qÇ.#ƒ·rÐŒœ¥áÞÚ~«ùGa:Î>jýŒ‹.E-ÀhKÐÇ"­(º®Pl«Æa¬érKÂŒˆ&º÷„H¤.·Õ~½ƒ*pEþβ„Ú‰VXŒùê`X«ƒE6'.ñkÖ5K^/ñÛK2_#œÅ¡²p"f€&8C´Û©ÊúK®=ƒ.¯`F  ¯×«  S.Ƕ¦/Ò˜óœ w¿ wÃ]SÕ%›lÕÓÜñœŒJn¿¶ï·ñ}½AíÏ_†=ZÒpÕU™†Ù²„ *˜%|¼Ó2‡v²Ô>zŽ“¶œrYÒÙ¹ÆÜâw rÁwð>©N¿u»êtW‘#òÉg^z)žYÅ@æöÝ]¢{7¨º3ÉLSü;Šx„¸VöðOÐÿ;ÝçÑÿùKÿßZxš·Ï‘þß%ªA &zà­ÜO˜åûÃ¥B±t  ZK=ÈK}%›šÖ;þ°Ã²-«€©.KaèȉViƒÀ¢2` ¨á 62èë ¡Wú;Ö¦½®«ðX–š%Ë •š²DaûòXÈL×õ[&Z‹Âþ=h5wP!dæ„Ð^N¸Ìjì2nìü–ÿ+©LÄ}JÈ‚ë”;ÏBSBt6N§gg”ý„|Rk6¯38ÔƒÕ܆eîUÓ2|òçYœ6­NŽ\2.§ž£*§^›ôoɸ<¿vÊ‹-Ü¿ÍÒ¿i>uðEq½OR^«cÛ;·Kqâ*¬’gG0)Èâ%ß[0ö¥oAF’…çK««S9Téìesh"ŠÆ:xBvÔYI·ëÄAR]d~em~úŒ? º˜:Ì™3JÃ~5¡Å¿ÊñQÚ¯&4]Œ“©í<“×ÑstΞæ³?°ÎÊD‡žæ½ƒêļÝÒÍ:3æt`Qi–•(ÝqÔÊH”N‘é+ü: H½_Qgñ ä±©QÝ€]š÷è ÀÎk[”ЇÞyd)raB¬rž¾ê3°=ð .ŠV?u‰<ª¥» tòÈ:³-ÅD.»«3Ø6‰ý€5þŒk¶_OqiVJé5ź)mj×pù4 Nè±6nšMf ¡¢0Á¦ò—KÎw&Py[I¯Ÿúˆ¢k}(Fg”¯‹.Ö‰ô–š+“†e¿áfxc2\GÀ@ŽtµOy“Ÿòf’œšOûE JÊ›ê"•òfZU‘:øÆ™jÓc÷¸À&º·Uù=ž¢zln¼ß`õ§>Ž­²˜zx…þlS/ÒS¿ªHO}åÔ?Š]5»ÞŸ0\‰Ó¦é“p⼦›Ez-gUÓóc!Š£¡7«©Uy±ÚJ|ÜçJ¼ 7j`Ü*vtÔ‡!«¼LJŽÔ³~¥ð<,èT­uIÕjÅ8£]áóœŒCKɼ}‘§iR•^úÛ¡ØW=$%¾ ²ŸÈƃ·`To—œ#° M<Êv‘ãóÜ}†ËÓÁ"…gåSJ;¥¹B]V>OïKvÒF¿ÖIÅ¢ƒqLà´.zfu^µˆld¸ÊËZµY[fe­²Eødi~cP1ªÓ6ôVù5ƒZþô…"… çj$ZW‡Ÿüî7MµÊÑœ¤u²EÞÔÅy ŠâYS_]†_ Ñz¯H2¹Y€»Œ¹> e’Æ™ß@«dJ\'Fµ>ôÎû0<ÒÇÐþÊ¡ûöáÄùÓiS!çlˆêAІ$iÅá F·À–rmœÊÒ—úô< U8G²f؈’ k–P¦¡IÄÜÚbèéµB‰¨¬d›J_çDÕ‘•Ïɇ9]¬¼~*F[F8ÆI×oèú‘Á£ê7omaBEK5¡rÞƒ.®01à‰Ë€ZVŒ#~…Z^Uû“&f(}/nèìàÏgÅ&»„ö‡ZNl\T§ìuR•“B¨#B¨% ¡b¢ñSBãùÒÇæyylÂ÷Ä}jÙ¦)ú”¸j%}’’‘ÈÈ&„“¿Žì€}ébÎؾ¶^]˜.^:UŽ=O8O¹¢ª¢ª¢ªÉrj i ºÐ`‚–Ÿ©pqÛƒ’˜–h·å$«k£‹àóÝ1ƒ‡B‚£ûöšÈë~ÒJÍV–wÎû´¨%ë+¿@º¯Ï_ó01mžü¶hëÃ\RûÃ6©?â8p6õ°Ø‚dRŽË·q9ã¶:O„ZI‡³1Ì·îùs!h¤QFËÿ8¤ÒHãS÷:‘†™Sþœ ³ë4:.ÐH£qj>ÈÌ0¨Ô–Á´ J>Q(ó§—ý`à²¬ÙøPY•ŸöÈŽÏÊî$â«+/d.OD¹PŸ(•™ªN”*wH çÆÉ.ˆ¡F'äºTC®o4±òÀ† .W0ÃÓ»çÉF ¾ËÛXµÉ±Áar x¶ÆUbÚ Èn gš¥?ù¨4X£²Ì•Î8*y§‹Ú£ò—zT®_m€+ã›Åh8†Ü–•Œ‡ã”ؘzWÊRí<­w ÏQùè¨Û5ÞKÑçi‹ýŽðNÃ]"†DÜÒþ+…Ÿ†82þçž ¿C—Uª;)Ö?d+i8j>s^º'?jyØøpØ4oj&æ}jlÚ©§FefÃÒwh° '5=r EÅØðå÷³-m‹µÎS€„Ñ¢gXq,â÷ï6´‡z  .7‹wVÝŸTs¸íÎ# ç‚¨ÂЃܭùüÐâ½Æ< ü¯º‚'¦ßMïÏSó.v¾b@^â×q K/¶ì|‹Ùη×á§QîΣ–—䍨ë­oêù›¯½Ï†ÌS–9R™ƒÖÅ€xJAbÍÝÎ¥.¬@L‰ \ع³lJloE®ÕÐ޻뉱±áK±,¢ XÆžÁ˜êTÊÀ¤á©IIªã̦#é—$Í#yûãÀØŽTNvb¦¤œš!µÏaÕá©6ªä‹a—9Ù>¾ ™ ‘=r…ã¸yœE±ÈÊ¢˜âÇØ%ó:2®¡ÿa°ÿË!óÔÇëÏñ&Qùòå{]P'Ï­ jÚe)­Š>s¡`©‚`?Oõ¶ ³2è~éåŸÖ5á|°® çƒmž`lS&ÀLP3€5AÍ›jÞ\ý@´Ùr±fË¿úŸ†Ëü2lºmÑNºIªÎf\ºkgì¢Kso#-ªm­“þÝšx­ù$˜-pBZöv:Åþ§Ûõr»ÄÚ+·—ùðs™Ü^.·-Ãû7‹i‹ƒë"m=l—{5R€Mk8 A¹u”€¾S©ïÌÒœÆ6‰Ú˜E› Í{WlÏ—&6ŒëgƒÜ^5®Ÿ«ävã¸~6Êí¦qýlâ~ÖYý¬µúùÄŸ½Ÿ^ÝÏü{î'çá)~†ê%º]#"“óF¦8í&"4Dóâ$œÿÅšKCÅXóeƒ.î5_v‡ÿ¼gÍ-ˆRã& só‰#û‡½l?$²iî}í÷PÙäÍ'«‹˜øVúh º_Eë¡1}UÍÅÌu°Óäé¢I¹N4ô@ËEÞR/€&hþÓíp0ã[5ߜ͇@Ñ#¯{Ð0ª÷¦'ö½³¯¢/–bÿ‡ì+B¼l Ÿæ?ý³íhò9 n~:¿¹,]p±ä#§ç•ÌU}bа—’'§(¥ ¡É(dÕOÅ<„Ð)çnd)ßýÎþŠ~ sĸ\j+õ T³¾ºÑíÚ¸èbva÷úéÅÄì†ô3ÔŽ>Àñ?«L¤}STžà BÃù W>À¡šèÛäãv¹l’K§\6Ë¥K.½rÙ#—ƒr9*—Wåb @ãV£æk÷1òî“ÕÁçpþí#¬d¡åˆ‰ÿ¤Á*ÍŸ½1¿©Œ~i*.i9˜,!¦+¾ÕÆ#G% ÈÈŠª% n¥§-Á ªé¥r0¸_Ï`zù°“Äóïªx›F~Qº˜'˜Ôÿ «YÌ >·¸Qä¢un±Y{‰ÉÇe͹ËÍ¡&U{ÏÅgÈÁtüÿw¨¥ á§õr¨ñÛ=ÈèpµK¬N. %€ o5?sÛ©¸£NyU-µ0Ö}®±*q"Ö3–èï>3½Ûœnôï;ƒ$‘Fñ.žœ÷—5ô^n0WþKþ`;oV1‰Q®H‹K‹K‹kîãÛÖ|²KøÌêVõF|šè޽e4”¿-ÅóÍ$‚!ØïvÅÆŒÆ)QøÜ3wû̹gèáç\9o·¨ü9T~us/ >/On>ÙhLä¿“µã&jW ŒPœì=_‡-Eì&Ò$‹”­Ò)zrþ(DN= F|ÝgxQ? -Ù• E44„mC*/NŸŠ(–Q7ü£ù]NƵ¿rñt… -[KPär‰’ât§DŒ2a#Ÿ Ãr»L´àø?]Útñy=8QÀ¸óxrfj¤ ÌaþÃižBŒPnž+YÊ#Rþf†{¿1{¼~Ü ãŽùe<Ã{?í¥ñ1űòçð8)'ú'fö|Ð|rTøÁ,¶L CVC.L\%óR+Um^ãâà¯oÒ¢ÃÏD7bCyñ.öüâîs3‡höº»±MšháoN=!:øëš<:¸H[ât¾šã‹vzco«whž'<¤Ñü”é=Å•&§&Â-ü¿¼Ãã1‹Æ£Ê^£ÑAüá 3þhúýø£ÉÂk âË¾Êøã¤"ûïþ¥?LŽ? àIDP!üÖ0þxòMÆǼ"þPü®¬˜ø1CÉìOÒ6¿ú cw¢¯0û†þèŸ(¿4ÀâÕ>.^¹D½5j­ %¨Õ)Ûõþ¿¸ŒºÚì—Í~²Õ.³äR%l«FV?ç!r#eïëOÏF &Rd{½ï“·AXÖñ¿U¾7þWä>GH#ÛbqÃfÞeyçþN!d `“:â$Ù¥ÿT‰0œýUbG"'pñ¥GÒèÓkÄšÝàºÝxAHÒ7´å>>pÞI;€tXbð9·ÇŠ×V µ˜ñkuYhPn°©{Ð7'CrTæ–ÿ î}ऺÊûá¹3³Éš ™%YìÆ®JìZÙß‚»ÆÅH¢DQIÅþh…†¼/Ö]Åvå;Ûr½3€oW%:ö%-µÔ®‚•VL¶dìI–? ;„b0™Í³Ä$üɾçû|Ÿsî’ô}íç÷ɇìÌ{Ï=ç9Ïÿóü™PGHMyózÞ¾ z(a`ôŸ*…©$÷… \~–fJkÓ7‡Hóú‡µN.Ã?™Þxëë&núEû|m–Qû&½qVÊ×+|Ë­š½¼"ûø+î•ôŒÊ§íUìÏ7—þL_´XªôËÑ#†m= PÙrÚCI£Iå#dq޳E™ÔeF¼Œ#Œ•šC§-2×<ÙIC¤“^5ÃyÐø’WñŠ4ÿ_D}b!ÜY’ÇùÅæeé¶žæŠÒ¸âÂV”4[„Rú­ç¼æË…ù¼µõ\Ü|º \Ñz.Ñ\ñ`œD(åFO=Ûü^³½qŸzÛ{ §8ÛK$Wxƒ¹'|¶Ä]\úÁÉÍJ¾´v¤MZ»ÓÜ„–`@“zn0Ó(õPs›ŒŽƒ¡ªî1C™A\S©¦v7¿÷~AKõÝRbXï©ÓïKÿÇ*ƒèçÉ®Rœ,óÚºš&i‚P@óqêîo¼Aï¸"vk¥þ`ÞÛFù¾à¥Wo;?<¼Æ¥y~Ùö‘×qÜ%Ž/Nt5‚k¸'ŠnÁhüŽTŽZÏQ²ëMNù4e¯’Ü$I"ФadNõJ¹YÝ9Èy± M*ßוñª_ h¥ÉlE‹Ù £¡©òH'‚êjð~# !øy øPý+Ëšýþ›%rØÌ?Tÿ¢æTÑßãýÖ,pyh)úÝ÷žz-½q»Ùέªü—qqåÒ ¹äÓd "σ×!&oºuÙZÕuŒhxð5Är4yÁC¶V½'F ïÈ ¹,­Ïkš›ÕU­=ï4 Ì;mT¹ÉAöÔðPLxÚvŠr¸4»nBé»FÏpŠ{kL5O«Í– šT© ï1P4à¯6à¯1à¯}“*֛пFêOÃzõ¤^½¥¿qFÓ¹õ½ï6ªÍ£FCüÿ\Ä¿ý ”^³IPXû˜Ö­Û½\ê/£Ê)´½ê5[¤ŒÖNC/(eôX¢Ch;,voT—q*ŒêRЍ.¿,°—£ÐåD%yT‡Ìð%˜SIð)½úkÃaþÇx Vœ¨½þ¢øÛp}Ì•ï 5‹qƒ=S®q\¼+V¬X>æªÊâÉâ]ê“ñã4c)TÔÓìöº:sµïŠâ])ó“Os¸tþšðÚÛ}•Å»ªîÃpþôj°íë…ˆí?¹&:ä8²¬þú˜–1—cƒ nÌSš©4óëL/4Å|ÿ¯ÎÒ›_#1ž/" w÷±HK‘‘GŸî«<úR±§xgm±§¯»8½¦¯ûh?>šÿŸ-Þ5ö+ð°€cëóq [ô>ŠN»¢íyÔöŠßA¨ÙèÛ—½¼b'îüIJƒOöYk êš¿–-hv%¼N˜NE—÷JÎöB¥*3[-±È„Ô<žbG™à…©Û•—·Yuo’º8À®?&%5(X3ŽýGDIOP,KiSÌíãÅéƒþÉ…=X·¯˜OZb‰¿¨¨Üº­ù-Åö<ÌÂ+¥“$>JUMüüQŸfD·n‹äFcÆ3|þM¯þ3ò&S$LÑg§(¾É³)ßUÚ˜­ÏΖgKçY03âåjgQ2ôJÕÆÊs¨ÎååÊ_^ÁËø^ÚvJ~ÓôúÒ§&ÐÕǘ›æª-ªrÊž7ð ׮ɳ ÇRóÀ³&ãN K¢¯µ+%€v=›Ù,6ôI¸_Z¸ŸîÛ,.Þ5ØúPêöeE³ªù(…4O‹¿ËþñBÎ ª3œuʼn–g.Ê?×>#ø’-ã™gdr+Æ¢ô¼ÊJÔ¶pEÞ°–;²’c -{:sŠðZë6£]7#àê©[óL̵ä»En¨2üHN~ÕU—ö¾ÝCÏoô¥yk¥Öo þp6žnK˜K[j,ðÑìýy~÷NNþ¼“1Y°ÑzBü°ÙögD‰’£ËWcÁMy¿ E&àÈ%ß>Ѻ}^À‡Vºˆ1+‰“뜢ƒOËþÞµ1³eÙɺ€§×ªÒçïÌïÙgb¶àÍLB@Ú¶}Jn¨†ì÷Db×”nÁ€—c˜Ê(»1Ú%.åëÖãÖ¼$BîÁzÒîŒ×ücK5|F8߬g$‹´§¯ËüÓ¯yû÷˜—à›ÏÒ9-peˆâ#õBˆfL·{ŽëÀÈ–Ç5ý÷\æv^÷éÓˆ3:ç¥3ÿ‹ˆ‚Ó”àÿ¡}ç •ÑJ 0-®{«‹—;À[äjÒ\ej«†êèöéÓî6¹ÄcRì¿%\¢;`€DáÌ; ýïLð˾3>4}e¿ŒrÀß»ÅówžMø¯xOz¨êèïJPÕLl–?ïmÇ›Ðr›èNX¢¦Ù+ÓäJf²þ‘ËÇŠùZù¯ÅåÖ‡*¥²BeëvtMZö“€’…Zör²ÃŒà_d@üë&xEXb>CZÜ$XTçv¬ø#øu`Û!kê²p#ÕÂлmL¾n³<ĉ(H ¡ª·£ø‹ -Â^§!a¼©) jxbMzkêž±;> &ÒðŒxœî¹_Ûå]8Î|F§ô÷ÏÌ¢„ÇQDæ"šll1?­ó^@oÚ–{µÎ ÔoøGŸ¯ /ã ÕDhmqÐÚ"кÁ@kàÝDbÍ’¡Î6ü€ÄZêY- ÒüÚN…ØøžN ±Y5‰¶¶./L®? ê#ÌR©\m¥7ÐP¦ÝêÁR8ƒ­Á^bŸí…gÞa[nÕÍxF?4>ãƒUüê2v!(òè>dx¨þ$è§{a—ª2O"%üQïP13À-f'â}Y¢õ6ó—>m8HV~*îÖnÃ+æ¾ü[Æ—æå¥únIÀÀ¬âÜT‹ù·D ¹á <çÓà¶Í—mKÐq=ÏÈÌÊJâÍÂÑýÀÑ(Ú!ÛûYsß@Eià¹ý£JÎEÕ!cß_}Qý§ïê¨â³Ã| ®¿oùŒ?¯œZJgþ ÚÚD|3JÐ=â15ùëss¢xÈÇL‘o“'>ùóíƒÓä[Rœéÿ”1åävèAcVš¯â½«ÈâÚ¼ç¤V¼ dZŸ{Í*ïó »6‘õô’›õy#Üì½ ÜìxØüÁÖÍŽ»r±Ñæõ²·uÞ‹t.(ÑÑ~г¾ƒ¤Æ>Gø´ìïr²²d]næ.Ìs̤¯Ë¥²_Ü):G<§èt]EE'W1k¦¡¦ôgUˆž'³uÇ„G.½7Âso(Âæ¦Ò º¶mžÇ`ÛåÙ¼¼jVøµ²Œ‰…™—í}pFL[_3`}òOR³ô"1'…?!˜s 0S8N©Vöróæ =Õ‰uLøŽƒ/9~Ÿìâ±x »~wÏ"¯;œ0€ 82²^Ž“r'TTa+:Da’zÁ”¥|«‘Â%|ØY?èï2ÛzðzéäŒë á«Ñv¯–•BZ~úˆÏåW‹HÅ© G„"qÕPví¹¡#¤ãÜióG õþ£Î"à^j_¥DæÎÅ,ì7òºÍ{+î¹lŠÁü™ú OPL™dŒû£°Ü³^ó]º°ßͤäãä ÔŸäAá‹ ‡Ç:þ˜|ó ’/`v~ò†ãiLò†ciðŠ]c•9=.ÛAõ{oeh‚Wz3¹öq2x)’‘ÅÝøu"f¥ó BÀËr¯˜*{êALw÷L2 ÎÛù£ð”¥b³þ›µÆJñv‘ bVC ZÑ‚jøìÑUß3iùG0qîbòž÷ákÆîbŽÛ Îê7“» Uü+‡Ë6ó†ÂiàD©û»™|mk×$µÍ„Í~€¬¸Û³Î¨nÒ÷ Gß'„Í>v<L  …°$âoÐ k BàêùÖDP0ný"n}>àò„ˆ ”Ki«åÒ`çØãOÑj- X©>F¯´–QØçþ[áùŸ˜KûT¢D~oË.ë¢ô«òd\Í=ÝWxú²\õ¾DuVk¶dÌìŸ|±Òž}m+üê²\r["9*5 ¿¦*ä×êh¿mÓ2ïYdÿ±¸Î“ê×íO¨Xdn3ò3Ò#þ¯éíPU^Lžõš*J×îý&ëô›,qy‡Óo(wRPv9AÙÅÍt‚rPî[ˆûF‰ØÉÖ½ì…Å}¬"º&ëËž*‹ÝWËψŠ>W¶;žÛ!å’? R§©Å¦ªõëÏ0¯Jyäüc…׌.'9+(úÐÐâ„*ÛËãªlO;"sÉÆÅ?Íh®«P’sªïŸŒÑLjDÕ®á ½©18Ø•‰¢‡ôfqï>QqäSÂöšÇŸhH †ÄP{p·@*‡!¿5~ÿt´i†6¶¾æ5_ýDò'{Í}/óÓÌ“ãQú%éŸõv?‘Ó‰ŸzžHŽÂ=GÏôý¶/#wéÍaå¶Ÿk}GbIÌUO‹Iõ´¯ªÝ&ò§‹um’qšÏ^ºíò¸8!a wÔõšŸï[ ýqz²xW,¸An8½J"N£öÃ<»ØBŒ¢ûâ`®`èõ·£T²£ºÕ\äú²b™Ä‚LŽþNíK·I\‘ì¶—wåR÷æ*DìvçD 4!á%U©¹1Ñæš l€_wÑU‚ÛøÌx­õÒÅ £†øÔBºív”£W[§ú=Ê'Ñ$²LgƒÚ),H{’5Àñ Ü(}(%ªëô—Úį/<—M•)ÊiÁ›ï\ˆ7ä9~&Š7Ú¡x#ë{Èsq¬É×­¹Z ©ìÕQÝ㌥Ëy|RnÊÈMÒÿp¾çÜþ#ƶ\`U”å^¤Œ•mv1Oµ­¥`žeëóeGÕñ>‡BEÄ|æÈ¨‹·q³\ñŽ.|ULËSPÔ "<\øu˜™x‹÷˜8þçí*úRE÷Àh†¶éGù€Ì+Êú§´œ‡:3eÉyœ—X]e ë±qGd-Ë6²\dÙÛ•QöbQ(Êa^IÏ”S*Ðv«õ]¬ž 5z;9?ïnëZºÈ–ƒÜ]˜Ù„ý\ÊÝôFÞåÕÍx¨þ¬‘»Jl£ö‹:H•¬ýzY)>ص4yʼ ^¡nº&'å#(Lƒk‰wQß÷‡D=Xï¤üz¹|ÍäOŒ)»ale&eýè -d˜Á±Wœp® Ï)Æ¡ª…fr…K'Ïßr<…õY’¸‹œ¾²ÔŽ­Ô/Þîÿæ¶tö,n;{£¼×O‚]áÀш:ˆ¸Ö¯ã‘ /¯öû4ŽW$9Nºë±ÁÈ'tðÇ8ÿ³_&¦cü” ÄS»oAbû´–Ol¢>´œ¾}9u‡„„QZ[‹Eêûã!cbdŸ£›£}l6¦”)GôÆx°±îì_5Ù ßv<æÎz}†aúîlÝ 5*®ò¨„k/BÿÙ}0:ëJkn”äXî´×Üë޾Ñm`u Øjh¦9N0Éà3Cþ'xÌqÛ²“áú0£={þDzµúl°<œÆ­ãÔ›[FéÕÏž·ñSð¦êó›¸$lÒͺYéÕs©´*Æ”&Ž–=Þ]8ûÎ÷í«ß'-žºzên£Wí×Έ“.àçÿ÷—¿WîÿÉ×5@³L@¯—È,{€jÇíZœ_ n³QXƒê6¥{žéRØÜ1”ti!'5ŒIƒ¨Úz–Þà2 F8XTÜ Bƒívu+¸þ°I.X£}FùÐot‚7`ú {6ñÕƒ¥¥¬t2D¹_Vq•(b*òM;]Êñq‚÷$ˆb(ÞÓâ -{Š3´™—K ½I».³i¦#aÆR½DÂó zx™hSåZ•0´¿2x÷à¤2Тÿüæé h¡{e®Ú/<]Q¿/¡å˜·Nµõ–@çŸÅò؉6R•QÅί´B´WàP?‚Ý$U_ð÷huTLø8'Œ{ƒøÝ]“<´À:"„¶pUâÌ)ûÄ]xëæ!–=&L¢¹¢ô‰íB>Bvl‘ó­€cæªïeÛÏGZ»’–Jg_.V¾ ˜gpSIbHìYä‹”“ÇcVHèäjœ¨àÍ$ÑbíÁµ†ù –6´Ýˆú€Ì;Ò¯:`Èì_· [ QN¢JÆTÕT}¿[ƒÂ¬«4M I²ë×Ko¦lÛ„>êï ÷–˜~µù»¹ã¼‘Ö®°Ê  ­Ùž¾Ãæ0÷A`ò¨÷Tð…’W&#†J®Ð›½Bî³CÆlWF› 7&b0ïP¢“ÈÛN"gx_nú X-·o’ú”`é-;ˆú­½‚šò_ÓÏørIUØ}áº\ïw¡òêŸBñ³™Y5Œ¸Lš&ÕJ„z|JÏ = ljÛßü–R²ÀúTð§¾Cñ™0ïoº¼ô«.é_Vö»ZúYK2êyøOP0Oê‘­ö­jZ±ø;Î_ÌÙ.‰ošÿvR”M³€šQ… ­#…/¸,¹‰XüåwV¹¢?‹Ì~ í6LOù…SEÿÖ¤à·>l®¼é~ß7Òÿ/ïKÖ™9`V¹[«ä̾“3j1ÁH? nûÚî˜Í‹ ˜'ƒè¸Òº]f&Ÿ©"_–Kõ&n••Ɇ~ªê"Ø›˜îÅæŸ¼øüÉwDã¨a šáJoOnÿbe4KíÁgœê é­É‰Œ˜KM„ä›:ØœœZlºV9lñ—Ï…—–n•òLÌê{¢¯ŒÐ÷>Û'"^~¢kdi^TX#¢÷ôj# 0ÿ2W“Uœ Tÿ4ÇbTFSt'cŒ7œ+Q‰sJó(ªƒÙ’Ý#©m¥=´í’Ô‘"âtð¼‹lKòõ¶åñ‡6&xa˜5ïê¹â 9”bî©€)O0Í•äÌùf! ÌL•>¾Kè/Iinð§B¬bl"¬bŒ"Õ°¢·áÞ™u‹ }D3n4¦Û¶Ü'·(“›^Ù)?,’ˆÈ[í0ÄeÞÇt"lm]iÖut‘Ù©9;„BfþtHQà…7—™øfñWówGâo;Í8¬­ódÕžÂkïfÛ‡ˆÖbJø©‰ 2Uf?dTa “ÛjBRš¸–Þµ£¼o¯vìèÀ`{Š8©Þ˜` —Ÿ­–õ.öá1Õ¿;Z^‚»—kÙKîŽå¶õ´|#àj}UiT ‚ßè/‹1d_âÌIšh%ïÇ1ŸJ•Oç0ÃÖ0•:|Zöó5ÊÙµ‰*¥Œè†â+qB½N0õ†¢U›¦ðQ€D0áSzõtĦKýŸê Àö*w*=ûÁ˜GË9A‹ä½È‘ ò^º·›1oOY û·¥òþ^Œ;¼QŽòÅíg ¤7 Z8ts©bƸq B‹_€m-|ÜÞ3žØí?4]uiø¸ïˆ;ðÝh­pêÿŠô~©A•\yw}A=Åá´!æ¬ìñ*þ¶'òVèÖwôÛ»åƒ<ÙÀ“w÷¤¤¯C'AöTṸwFiJlslT=" ú8˜ßwïOy‡Ì#G„“+RX*…ÙuÔù´>æœÃSû›® 8ÊÔ盯~û²§,I‹Wðø/¨Y(®s¼ã —¦¾Ò”œú¤<ÿ‚}×KëG<¿)æ| jå¶ž7§¶ëp¶í:Þ ¦Ñz&Þ|µõ%ôžê oR]Jª¯Tã!½Ÿ;éXô¡AÎQ"Mo\tÅ`½P°÷Ó-»EÁ¸ÏϤ¹ƒ€ öYÜ&f”ÖBJi¹ujAãû±!·(§K¯þ[vHö#¬´K.¾pN¬`ÚÍj[¤W·°À˜hE_}\Õ¶†Pk,éíjØÖ÷œ–§ßožþ¯oÔê7¥)dªâ´é$œ[@‡|¨?~¿˜ ârêWÜ¢‰³AÕj xÉ"î©¶K–258¡‡$ëräÁÆñƒ7™«·-{Nãóqõ£j4;C5ªC 3ü]¶\ÃYìÎ~‡E뉹Ô;fÖÍ+zŧ‹]×^U©K*dú­;澞þqÑüå¥wTùÒ?;6ør­*½ñëÕõ¯+/øzÒ?—Þ¸plzã—+ë_1ŸRõø5½ñŽÊúCæS÷šß÷¦Ò5Vœ¨½¸P‚²góÖFv«#¶±z9ÂäÔÁu"¼+t¬­ú+ÝIŸÝêàG °’=ŸðójŸW§šHlWý¶Õ˜ºîUÆ‹$5„?¨"O Ñ7¦gƒ¡Úö·Œ ”Ù˜4v“>߉ÛnºUž/ºµÓp†ú—­ Wi÷ü¶¾»Ç$›ÂÙXþÛ!‹^z‡óPúQÙ^ÿü8“FKÙõªò ZÜ-ŠéÕÏž“[O+%R–þäÜÅüáµ^yþ—ꟳ ž-….ÕÍÕÀ”`œOœm{ásüþS°§XçØÛX‚% úL7´œpYß dçûê ^!´ÅôdÕ(Ø JmŸŠ‹!êO·y»Îá6…Çw[ ]×´¯Úºšê”LœWÄ…k÷žž.…oñ¥ùy_óë¾ ?`Š ŒKý$Í:žÍ‚«šÐÞ*¯ŸÔɼV¹Ü˜•oÓR‡Ëß&E.'„öX£Yò!8c;°¾±©é«YV{„Fì\¶´±¦J»þЋIQÝñjún6Ê1ª2FZ…$Šû…Sû®Û-9À t$`&ô¤ÍüðOâéëñ\´%nˆ_ýIó®oH9Cƒ³ :Ì1è0÷ GŒý=1v¡ýmhu¢M(׺|bÌæ­AcûѰZ.}wÖK§Ðú´×ÖcXàB¯Í幎ÍuíæñtÛwbbu+æü¾œ³OQÛ«¨5#Ì:Š|$Çì£X1—w7r'gp'«4KÐFϬ«ÖììÛø˜íbÚu}Œ]LÍ&•^ÄÒU¨uŽxøR׿Iöíßé¤ò#'u߼ߗÈî7˜Ù:³¦ŠÒõÿ&úµ$½Å#çO³¨Qd&ª·gϹZ9ì(&®@t1ž\Ôåþ{û¿ipîAU¶q{á餋äÀIÐä|ž·Ï =lòNoÍ-û£JôÒ¾ÜGCx¶òìÖ$9“Œô«¤†r197 Ï““nó¼mÈþ›Þú½Vœÿ´wL¯þ9ï~Nåï} „uš/+òG­íaôƒb¦£õu¢ºË^0Lz\Hÿ| xV¯†Ã~À «÷¸ÓˆbFfØw22U”¨ªY)ü/Çm(‘¢³W \IgóäÒ«~s8.Ø)CU²¿t2±SZ7üGŒò½f¢¨«˜…ÿñÁ°íÀÀ§\ü‹®çÆp=ÂÜ\¥ |.ùͰԡº0/~fPK¾òdŸ.(B½Ìð£çu‘`æx†#AâÛ¸  ¦N²âÄÐÞ‹èfªÓí?%ýàäoHªñf‰ÊK?˜ú†–©Bü^Û«M•é'47Å>㄃´×µ3îMÝ _¹AIžÝäóuëâÏk4Hgz0û“÷L¹|>PlQ<äÉZãáäja‚öD\ \4´ïÖ»çÐþÝ„d^"Æé6­.ˆ4:H~G__wƒWzå<ßîBG< u˜Ý×Åœø-æCnŸ:dŸžcx×ü²-¸> aó„,ùpÌæØveb ûw«õ/e„ÄQkà]¿ø ˜Våê£Upâ DbnMzí­Ÿ06ó¤ ÷¼ßôº4õc·×~°º"û£Ï‚ŽÖï$ÃHU|´r>Þ"ÔQ]ñÒŒ6Ö0à.Rff#)_ƒÚÜPçìÊDžý‹¼ ú‡ë.¿³Rµ³eoÿÓ}®Òëʼn—ʈ/ÐÜÝò„ÂÉî#´Hû{øKhŃ©{ªw¦rêɦ+T¼üzà÷Uw€–ô‘g?nÖmF臫ÍCj:5;ÞÛ?4F<à¦A"Hµe¾8¾2¡ —ûÍ„sMñ á„kG]›ÿP¥wÀ¬ÅNãîÅ„? §&¼.B†Þšœx²ZåÔÁ¦”›ðÛ$?WúÙ§>Œ7aʵ—šïÌ11×Âù,ôén‚¿×üi¾"ä³1ÊÕfüv¹âíGžt\|q`íAê¿:_Ò#pÑî¨Ò©3mûÕóCƒ“µò;C  :ž¦â_‘pjEá1 µƒPhÂãe¯œw´=±ô‹p" U‹ËlýQ¿»,?‘ 2꣟Ož¡’ƒüó²Èªäéx4ÀïQä *ƒ’Ù<8áÎõÿúYäêžùÛƒŸ¯ô°g|ÿTý‹éì?âÓé°WŒœœ#}ÈL±s­ìB§éú^Éù˜C¼ŸsIf6W™Ùtnß\ËÌÉ kx¾×H4!}q/“aœV¥çÒÓi«ôÔŠJ>)‘Q¶—ªXõv!mqêÂ-ËC¨T߇ DŸYeU¬©ûšoèþ¹pÐ@Ë®e«‡H¿~^Ãå¤ÀhÛž»±và›L%0ÅH8~ãåBWúwó0Z˜àFúùû„k%˜ðÕXéÃ?`dÞÃÎ4ðGÛžÕc¹ëøDI$ÂýÖ9Oðu[¨ç“škàÈÆK7fä< ”wY½žåu¸T Ï¿ÓÛ½ï¬y÷˜÷i Ÿª„üÇhÙšVüÑ7Êçm}OtÆwœoÖ✴Àf[8Ù)VÉQz§[?ÚsžcyJÅŠX­K¼,MÐDî#¤"³M†¼¨ ¥Aü_²Aü{>0å3—Z£&ñÂý ˜°²^`“4…êözýFøÖ‚¼ªÒ⧣ʵdU‡ôPr(y}:Û˜‹Ìïú°¤-¨þ2äE…£Rೇ2õeKI xñ€|%gKM¿^ÏFüJfwFr¾]‡N¦€Ãx8f“dz99¹} ÿùD»fJ‡’µx$ðev]ŒýËÄv¬Î1õ±+¥ÿø…Èù>15š®(ýùZqÑyä(ƒ5z:fj¯¤É9á»Ä±ð7t,„ïª.õ<‹…ïª(ùÞð°õÔ†(…S8õ™ †I|§D°ÍZ’„ÄmÄ.Éw:WŸûOiÂâE¡ ZË&è¶=p®:©.%ὂn= ¤×¹žÍ¤JØ4Ÿê!”=ꮉ|íyÔ‹Øæí§¯`¢âaW_¶£Ó¥ï¦ÁâC'ÔSOö¡¨”eL: ¢id:­Û*à ¬˜‘ô]Å @…h*)髇©½‰ ½Ž FP¨¬*@¥cL[»çÜðð}BÙô˜\b¿êFìWÊb|U<ܯË_dlŠ2.èäì¸ ƒÙ:î7CÏ¥±¢8DÀç\õ uŠ-ìR~P´Q‡bhïSS;º ,>]$¢¹ §ú¿ry‘‘äOö…¬âë˜Qæ´ÃA.2–¾ÐÅT9ÈU äj› HðAZ;4UWzà)8elt[ß•—„îèÐ­Ž»é k"@ît@îâSo䥰líº€ŸàGG ùMƒ}'ËðûÙ€ìt€Œ¼Š€Ô ×8@Ö §Ï ¸ì”PPq጗nûg> ±K2¤¶Ç¢uÞ&ã8åw¾ÅI6ehšg[¬¨æC·=H߂՞µ¹žÒÜåudZzÕOC_¾oÓsõÁ@+&¥¾U&Þ'e¾üÝað·]þQ!ñC‰Ç @FœAò¿ÈÚÞ¾b{*_OÓ1µ¶^ÕTÁñ½~ÞzÝäE•=µß:ÜVupº›ÝViJñ8·Uãd«¥RµÿêÊö«ÿùË#›O·5T¸Mã«'P¹sJ®Ê—ìÕÃûÎE•ø¬oÁãÈœ·[G¥|ܪBy»Ñ“#4ÓÎÕ´¿!;ú—P|!®åÏò FŸÉïy‡ ’À 5¹} Å´e€ «6K4%O_Vçø?‹Dî´w¯~èÞ[†½ùX{˵#W¼Sʰ(ÔÃ4d¨Œ T_Ô²…çþNï|.µÑ€sJ¸X( V±ñŠAÈ/q9 N]RjH,è„Ø*u†ä yyƒ¾H_«ÁE »€˜F¡pŠù¤`g>¹–®ÖF·úFÎ`ƒg]ê ­‘ “œE|­{p\£ûIÌjç“Øs>9YеÒ–Ê Î„&ôÅÇK°§þROpOöåû¦Ä&ùÖJg“ mºiÔåžÝQ<COŒ·ÊÄ.Ö÷y@ÍknñÞHŸù—ë°U0n±øª56ðªM+-CB8­åoS}2¡.¸)^ôeu¬—ÀÏÐPÈÇ"*&,ªÁ„ê;0?ú‚Ÿü” iÌ)¡%R3ŠŸU¿ü$Å‘qjuIÃ4‰ŸÂ;3ë&sk<«ŒEÚRˆø©ÐŽÅ®Ñý$Jh©‚gm4”ã'1 ««ÿû42…ŸÂ_ú-â•Á‡C¬µajZlUX©­Ø(³kßp™Od8½êO0ìËÆ¬Tø««?#b.Î'rÌCú£ŽTï€#ö—’k~3<\zv¥Ë¿¾0Wgoy|˜(ö#Ïß:hÈMÇÄšá<’¸Ÿ´œžWÙÖÕ|Õ}ËiÍA¼¤îË„ßlyi‚U®„õƒè•,åÏè\ò“A'[À°‚µêñèñàõ䪿LÚÚŠü<òwÅ@ªœº'Ýv{Bö.„àú¶šG+á0B‘F‘«—àŸÍe„ U[1ÕSB1Ì z ¼WGO¯[IC4 ÀhÑÒz"O·#Ž>Ñ@÷°°ÈÍtQ4ÚÄêˆIÏÚUbv½Z¬XYkcA˜™PlÍb²ˆ™-9Ëçp#q“$$ ƒ«^£Ñ*ÑÀ7Ö験ÈËÊ­­E­ž¿å’Ÿ×ˆ©&g£ŒÀLZü”½ªÌU÷xg­élŒ¯«ðtÒ+x»QjiúcŸ·5ÐrZû¬º®t,'¦k  /B_ÖÛtnx¸oúPñ.i„Ã` ï³Nc/12üöa„õ¬¤.®çÏq²ô)æž®0¨£Dfþ@¡Wcd¬-lž±ìI­,lX±½ 3,b MõFïp‚£>‘“ªœ[ÙGía7^yØÍþÀÉ5/ëF° ߯eÆB™ÃeJ`Å꿤wô{‘#÷JÏ:r4jr’@r°Vÿ˹°?<‚êÌé, dÎjx;Û H±¨W¡×ÖÕt¹Y3^tÓ­Ë6…ñ %Îùm {I ²CÒ™×Ø‰ _ZÏ^‘^õeä-·Å$xËD´yKsÀÄ¦Ú ¦^ 8zÈ{-dàlpõ@ý€¾ýüú½¢§ö_·¯|ò¶³kª4Ù® C0úÇ?qû²íŒŸ–  ™u)æ*0ž,Gf#] óò1ÇmP‘å©•¼œâåš_^ÆË-÷Á9˜BS]]nT#'3.÷Á.^k0&+ÜlÿóIpy›'Šø„º­Ò±‰iÌæ_­ù7Öü› *Ë"£²,ª›òÀeˇ¦=ð$öFó¾E¥Ygb’=^ žt7Ü{ꜿ«mØgâÌÒ?³ ~Ì/ÍH¸2.Ud»ëŸ÷žghövƒ‡‘ºKúOÖ fPÛþõ©Ò3fƒœöíÍ›ô þ«’%â×ÖÙΖÉÒý§cQ¨ûÚt–PFµ™wý¡ªHpg*yYÞk¨Ž9$7jÁ\—{»|®ø¨.^k0üv÷Ž»Ä\I %‘üi¦É&š b»ÐÄ¥“§dï°i—„ð¼ß!„Wœº„™íõ9NK¨pô-þèþïSn †,å—wßÀÁ+þRgÙºíg’ªù¿«^ûóýÿbË&9¶qLÙ†Ù á‡Çó•FÿÕiJ†?{ÃPëÙj9¾”ï¾E["â°¬µp°Fe+%™9÷^Wdê¿»§:¡µ¸ï8aವšxWYzéºx̾¤iÃÐÀœ5‘üÆ›íÚ$)á–²—ŒèßšòKwwU'4¤}Æ €£šl¦²”3/A–ñåÕé$€õÝl3.¯Ð­@‹?9+ ,ÿ½Œ…‘úÅÐÚ/Ö«£.öIÁwqßؚ݉;5zp-Öµª°>úˆÊǼÞ†#¯£º¿žlTî'c¬¶$õ÷µêÖ‡Ù©gNòS¯áx5ŸÔÁ7‰9À0šÃ<±]ã9P.µö~É,9@2h|¯1›&”nmAÊ/°äø‹äÈmúÞE«Ã'# ·hø¿Lc·:•Å@ØL[í ‚˜¿[+əťw@‹&}WuVËÓ®tj7®£t5f–.3"NâƒW@}fп3Z¦ÇÚY]µL¢=uúÖ˜=Ì0߆nuo¥y?u`ù´ÝcÕÌ,¹Å)ÄììÐÈòG²5=éUÓ~”ó–Þ0RßùßÕ—´Î~ÎŒ­ëôBKNLæ½Óè;¢¦%ÔæÙéù»ÝA9(fªE[\Ø…\T ÂWó°ØžœüîXlj±ØÓ|u±Ð÷´Ê¦b>…ëO5þû‡â›ëìû›&ÎK#­«ºÓm·yα§ º-Ý6…²7ö‡1m_Sžœ£§IŠDi†”ÙÂûßO­ßsÚžËÈ=u…”ú¿…õÇñ=<žoéÕÿޝllDÑ5×ýíõ±©æÜX…ËüŒc;µ¯ÅÝÕ³t®"êe;©‡ê&L€yÌ+8ä=ªõåVO¦cë¯ Ñƒäæ·¨b2ð¾»ð,@·_C©Hò a¾H¶,ã¸jãž}¿±í>ÿUÁÌr÷LÀ3ú­–˲¿Ã²N¾Í†“+µ¶µñF§{°Sü&­SáÌ®æuŒxgÅx×Ç4ò úØIÞ¼ƒp*è黥lõAÓ¸ôn Js5S-R»âDý {ºÝº{;s«,\ßÖU׫üŽü4ÃÔjÖh|ÙŠ_ÃÚw—&6 ´æ;hi½×n·ènYô]6ÿÃÚ?rdØq˜?4^3W_þaŒ¡a1†NÛó– Ú×#¾.Ëæf9Ú,V4‚B%Ô“£wd"”Xjm WГ¶„Ûû­²¸‰÷¸kºd:ƒ©ƒé †QÊì4oîþfÛÍ=l–~ІâÐ"­KˆÆ%,ì“‚J³ÁÅïÙn]fÄ—ÖèCãÃãÒ“Ú£E«·váòI!ÂbàÚ70æBÒU4ã{¢²Û…$eOã³Ñ®Ëšëå?nÃy$õe»÷Z1S ^´w`ù ÷ ÚœíÛ\«Åcn²ò³™l"c‡•8¡¼×  F’)ú“€BšÑ­ÁVQüí ¸-ô®§DeÑóÜ©½FtÜÿW«á­êÍõ‹Ö¿ hÅŸ'‚QËYºyL[g¨ca0¸²~§Ùã³qÿ¥„ L¾9ñWCþIƒåF0³_ö‚¥ÿªÙ¥jL9ÿÁÈüÁqW9ïÌD4ŒñcdRôP,û³À–½ö·:¼U”˜}ƾÞcíë'O=é ´ Î6hÛ-u þ.ÿô©óæöÔÝhíþé{O÷y#ô‘~Ï@³aÙÖ‹ÔÇ3Ol×ñWœhi¾èüW6Ëü„8ökÍBs‰Ž%r£šÞúÉJÃОÎݰüWUn…Ú¡ÞôN¥ÿ3ÍlË©ÝÍWLi~^ìû¶'šR¥]‹Cÿ S"쟸Eܸ ºq1=wÙDé%Uݾã¹Kë·„íjÏ÷öDxî2ŸZÁ*­©ŸD Y›37ïe5jŽgî˼SÎÌRÓ¿•5ßþºx_Ǭ’¯íuÿ _+ÖÈ×Lݺ„ˆe™«ˆeüÆð¿¦„òã ‰ ,†E ú¿ cžOc~" ³œOWc¸§<’Z‹µ/EôΜ³ü w.¿Ûé‹„LiN‡L|±LÜpŒ•ÿçð°.0ßÒ$¯ÁT±çS ÎÜÊKœ¸,I@}kÇíöà¥E|÷þypPâs7F2 7°2³'á†}|)ж€V ——IØ'yÓã…g+rÕßU¥Ü ÷ Þ>$FŽI¿ Yéß=â=|<ïß´—ÕR 3^ 8Р,Å(̇¾Lªön9ØÁ»)¡äÓ6»Ø) Ú$Ÿä<%§ hl ðê?v¢¾˜Ï0E‚³¯»ˆSÌË-…ž°öÞ"Ž·Á·AÆ{‰ÅšÖ“J‰«â¶÷æüSä¨GŸ6ãvl:ôæ¯þB3;¡DzvýÃ"3fmFæP(k*ÅRó»_º×°}¹ˆ&Ô›¥ÞtEë鸹cî"~6\)´ždjz:ó„±LÄÕûgX57Jî2†_„dæ˜Ï¿K„žËeãRH„seÿ×èé§Mr—ÐzjÈÁMòçêØÆ~ é*îUþ÷Dr"NrеSæõjb?ov·u;Øî<d|Z¶9àœ¨›ÍážÏ•Nq³{h³ìÌÇÍNKÛQQõe’Å Ð $|ÎÒ.£dånþK‹&¿|W>Ã|¾_úÐ=˜‰K!KÁÅ\õ ˜ñ°¾Ò¬D¤ˆ SIèœàIr‰6"¾¡*m^b—쳈ñ—Lj£fÀ8ä½øSlOMúH¸C@ ­=, >ÇÃ6LJ·÷o§O|Ê%7z½ÅdÅA³ô¾ÛRîðÌÐ့ì°}[^Þf4‚€³ˆÌ‡³ÔÎ6röýYšù%AP"=·Î];@Ãgɽp^®YßO»@j’C°ã›ÁQäÒØºGqÙÇ·à›a¸8R6Ÿ¬÷˜m½g1¬Œj¬c±º¸h·óá¶l/ƒ0G5ƒä*€>þNï ÚÔFo_1#ë»mðÐæùšÚ· ÊoKºKp«:nõ1VpL@;R°ÏEYFÖÈT‡#| áƒ³hœ|0ØÖ®±>?™·¸·Èƒo=¥Õ¦óc]RÂa¥¡™÷(ôWeáÃò°hKõ8 ÿ(ƒ}Ü;ÒC6§‘q4ðmò-kM½þî—S»ÈpÅu÷Aÿ‡ó X@øÛ`ùX¹,¹i{ ÏÔ^«Ñ4¹0ËCfXÙ')ktjL„NÈýc| döz]ÍÑæÏÊöÔÔ÷°0‚±!W0î•{.`:¡ ’˜ µ¦pºÆ¼]â %·ÉåçŒkŸ„!.È£;!¡Î&\Ré(©RO®†Xô(v¶voY 1ê@œ"r©•¡gŒŸ'rÉVÿQ­_óŸ„æ÷ˆ÷su@q6½53‹]™©ÅÑ¿<¨Ñ†±[¨¤YÌ\¬&À0ã„vIâ¢Wf|Š<2<ž·hxMË_U‡W ¿uÛ%ì1“N¤x‡™ûãõçý‡¼WdêP0þÞÛåô³™~‚³ '"‘ý[ÛSBäíŽÌkf]ò9v®E2ö¼Rçè¸ÔLoì.<]S8S£ë_™­Ö§%}HÀ£»‰ÝåFI¾àêßgúÙ9´ƒ›Ûè®QîËôÀL»(-´ÿ| úò©ÏGZ>ÿõ|~š‹ÓHa ;¯ŠÅN';å}_’ìðFÏQ0¬µ„¸ÔÑ£]xžyõ/ ¸,êí· ·ÌÀ‚øFdÚet¾s°&ªÔšðOÎTûaQƒá–áçÅ®ŠÑÛb”Añ¶<®ùW]¢ƒƒy‘:,ª_Cçl”•`Ñ7‡tÇ ¯É<ŠjìPçlêß³1OâÊ(IåÏ<™W`ÞôÃC'TÈt-Žà(`ªëJ;ÒfÑnÏäDx’OÏÐpËdæ`â°£ýSþ+fõ\¸LfevBÃDôk£ªÎ§™¾áÏð†‡ŒÆkg¯C§³O %›ê âN!Rl"uM² p io‚…àqîez m³b;&„ •›ÊÊÍHøme>‰Ÿ×ÚOgÿ#ß·!Cs±7[V'É`ðJ!pp)£N(¿Ñ.Ϲ’epͱ>x²Ôý¢`¬@¡×ùýΙ‡:²ÖŽiaÓt-”=gZaÞº˜Næõ@z¬óHÆÖqšdTF.Mo½íL‚IUŸ¿5„šüXçìû‡ül»¼n§§®°‡ñt2¦E\J´Ï’¥U¿-ÑèFr¡T3ýÞÊL5@ø=]}úÁl#Ð=ý`çlù»ñQT–>Õ9 |£ð\Ua¸Ê\÷™¶›~0ßBI?¸y6þNým:§É&¦rŠ|Ϩ"_¶Xs¡Ïï॒l[a“@Óf„§6í4ª"4š~°}'«OH;¹™vé?7Ò¥p¬ªpÚ<‘­ÿ;ô£þn:3¸|."`þ¥]ÛÔ£éUÿxÉ5}*®é´ÙׂŒ~.[Ï ·ÿÕÈŠ>úz+šqኞ¾räŠt1ÿDsî«»œ®Û%\ýšsÒß)p¹ü>?¥Wÿ â›ãQCiJ™Á‚M¨ðfd˜¹Ð_õšX{k›-»¹3˜»É˜f¢¹kÍ:ü]fâ‚èèKþÂ=kÉàäxšë,§è¥nÖ^WÃ;jB}Ì€m¦€twºí¿¸_2Ìh :ÚLPîí¨Ë'eÈ™Ææ_¤Ægxc¦n\BËŒKؽ”_[Äø6vÞIpÌÈ–^íOØTݣáÿL&‡b?ùfù.cÏ^1dÏ7kœdÔµö:ÁÛ+‚ðUä ÛõåÐÀÅ÷’#2ŒÆrz;QxáGLïÉÐ5w0¡UMÈB ï6?wÛ­ôràu_",o’RùGC5à…b>;ô²F©±pEد~Ë¥äɳ^(Oª¨ý§¬A9ÿq#Ÿªqå@ýoÕ¡e`®¬ÝastM #gŒÅ¼ÒkýxæCáWq£ga r7ñ¾½¯tÈ܃Ac>Ûú>Áxâ"Ï5BAüÅ('ÿÜ?rw¥ºm©7iEqe„zgÇÃþ½¸ÈDak y×èÔOIåÚØí3;KkOè3z³X¡Õ?Ür‹ÿcíÌØò{ËxBž;¬k®Ý`_qömó¡g ;LdøXˆº¶ßx‘µÁËgI]s*í÷•ü>Û~o·¬%|,À²¬1¯jô&Å©O{Ž#Êó›ùó;Œ¤ß‚ýJĘ&}!Х𫠟‡¿%áF—Ò‘i^›‘]5P}¥œ$îž:µÆÂù{PnŒQzÚ¤‹ö~ëÅg,,#Ï…=Ux.‘«ý¼¢¹ éKœ.3©™8ÉìCÞcé­™ À`»÷[ Z³Ö÷5Þ;Tœ{¯ÝŠƒf+òÖ'¦¥.'($Zü»šÝ>2n'>,ý黲“Õ-žEø-|tŽC±9¾t>z~MN00(CŒñŠ]¬X•Î~­BF›ës ‰(`A8º {œA>âµàÓCû3óQVú®Öcžá{Ua5„Þ~ øWº8ã¥Wý8ºoÃ4â<¸QõM0™•NÏ”VB}ï3 ²D+vU-’"HQûg‰H’ßî"Víiµ"î`ÌŒ1Èà›Â{ë·ûEÍÙG…¨bØv8ˆ˜pµ)4ïs±Û! ÊÂõñÚa9+á†â¢ÓÔ䀿˜IáöÂ3qÿ!‰‡¯/ùz» (6Þ?„¨>);ÛWÌ'OÜࢂŽéÓá$t,ÉŽÍóbÞÎl½+Ëê¿]»ÕzvÏ×ñá |8ˇµ$Àgc/<ûO¦³Îw£<©1N£>2kœ-Äj¢'°] (d-u•¥¯ü¹yô÷pr¿0TâIîõ"q:+à À5.YžªªÅyõ;½Ç-Š®Z¤1g?º· KUNÕ‰ûÓÖ%Þ-üÝ ÂóýŸŽ‡‘ ZHÐo´[l/ð¬‘$¶X¡ ¹¼Ûì bÔ7 ø®äRßS£ÏX$5àÃÒ{ThÎeèxEß–*{'swÍõ­ÕÕÌ©«4÷ièU±qÕPQ{z?–j—,óðÖ^”`5BH:ð®bÆv\ÇetßùÊUå÷Ó«ï$FiÔ—bÄœVqÕиšܣŒ+2¤KÞPeß uižQe9@¤Eeé U8¬1¡êê²?´ü*ƒ™>aŠPÖ—)°OŸêó †ýèõ,Î]5¤äˉûd-ñèjã–c7p7¥JkåÔ}-‹Æ(CM°LhÈÕg;5f6±½Ò¹A*EOùö)qƒH DI<ÍÁ9}æ˜Üwóo‡‡KÉ™ÚÿôÂâÂÍÿ^„+NLïÁ1¾Øoªk2”ºÄ_T×R¬h‹àÇMcYåÿ<)|S×€¸Š3íõr}¯çëfãk¾n–ù2/¾‹£îû„&îHJùÑ[% ÁèI)ã(uþs“Px¦¢þ·Þsåí(èo¸Óæ¤0©ï¥ [x‡+¸úäWÌÕÇ ÏÛà»ÞÛÂý@xŽsÏeSðÄiqÄ'+ÐÞÇ£aCXѱùOínJY.Ú2ê€OŠ¥~§Ù>™ÕnH,³>æŽò{-›êà3:$"š‚1Ux‚ø¥aýÅ2þþ¥cW°ÍHcªðô¾¦”ëNCôYI¹™ùwÁ,·$)ì~4AîHAK“ž¨°òÖ'UùÝ‘ ƒÝ×%’¹œ”¼!©ç?Y¹®3´ïѸë“îL`=‡f 7©Î|ÑLð)b(£àã™brâé™I’‡fŠWmÆx`J}ËyTì­_r‘«ÆXâ=ŸÃe%w1•ûÔ20øŠÂr2£ L5Ä¢ô¸,i+_ìËg±”~ë‘_*ø9Úƒ]²‚ wØV Ø×!V7ÕOɦZ¥ÍÚ’1zÛhAúf¥[ÀÏõëæ (ê·Ü2ÜàyxÜPSZøMN—n¥½ÉH~J\àýa8K1ÆfÕE¤#gèoîhy—ç<¶\#~²¥5.Äí½Š5Yâ×^b8«ñ±_]/þúíTÖ$%8Ë|jOjlôÚ¤åŒù¤­¸&é@j{L m°÷•6Œd¥¼ûà’ë<1õˆ{Cô&©¾ºVˆ$m%cÍsüÓ„×<ú˜ñÍ(dóèè/^œZ%©cUSV'IÔ,e¶ÅYÙ8£È`ú…ç.3«?ì?Ž3Ç— ¿JzZ1Ö ï’îséÑÕ܌MF1ï“ ­7)N4ŒòAºâ6³ôó^s›‹FZúayÓGøW§ÄšmäÆ^˜¥hT L‚eiµªFjUi –¤.ÜûQW2"ëtÂÑ÷À{Ôþžúd÷t×Ì&µ˜M¨(-™.»ÆÑ×Ò&6˜×žtÇIã“nE[žÓôh@H÷¿x&÷yûC¢8˜DRJSEé\c˜z!Ô!0Ïã*JЭ´Ì®/Âì2I[„޾¬þ9/ÄJaÔÛ¢óä:µ>ÒG©‘(®º¾ º !é} :Á’$ýSK.¹ìÓqrMY9m½-œÇÛ*ŽQÅÕ»8Ñöteyä'ˆ‡'ʨQ^‚ó™˜{§œÏ áaŸ¦>%Ïõ¢ç*Ço¤X· RàOJ~!3Â{Äe;ìò-<÷~5M‰ùÉø³b~ÇŽåïi-ðe‘Ys!„úrúh¿geöôÇ—PGÜ£GäÑ¿;­O¡®!)ù}f~zÕ£1öZâq˜ûôðÏ HYÏ G~otié³xy6/×Ü÷ßscfŽ•>_ 9Ƙ³ “ú¥¤@ÏÔ¾òhÊÔX7Öü«3ÿÆ¡˜ù7‰©Æ³ë&SH6F’¢ïj4Wgl‘¾_u3K´/}¢|mìÑ“Thõ‚¢‘:ÌP˜’¡ë+Jïþ¨ío0jñXé‰t,)« ÅlƒaEÊRÑ­edyüÏ#€ï•qBÅñm_¬´lBü †*î¸ÌQÅñŽÎOÚ2 @9F!É7N86 5àõ°Iª¸?—üX¼™š°¯TUÎÜ‹àûEœjxþCÜ7„šS#¨)ݳ@€…ïjþö†áábZø›!Ê9ôæ4$báé%LϤü9’põ'ñÃøŒ\!¯aU EÙ=$}8éÞÁ:Á<ê8f©yŽe¥ÈYéBDØ•“…e¬4Ô°‘ì¹SÀ¿t¦ÿ< 2Ê"Í 8âÌN,Ü/Utò3…±5&,z““&,0V<$é¿à¡š×# èI¯ú_ž[x@1av ÖI;ÈsRyqš)ï`̼¿}áòõQï)'Ú àÛãÐÂe¬÷´“‡ÐúoÛßô™€•ÆÍ:z‚ö`Ž^w1“”¹g’˜¹Z‡Ô³½—ú2Õ[¶K%³Luçv)>&7çåfÑŸj§Q¿™-̸in@÷ráéDÀ’ÿ•D¼.¥1jrç“à”Íä ÇŠ»ûÖ'å­»öó)¾PžµÌ°’Îz<æ”kqÂvqr6ƒtNÜá"2Ho&R)^ÈÕmé¶Ä) ëcÔH„ RáELÆh$ƒs¤Â÷4â•æqñ½´u‘8sèzl|½S«%Ù¾¤é¸RýJê¸wkÀ­ôþÖp)àïÌD^î²V@”íYŠFñ2Ï^ ¸F¼KÂWI['Ùä,c‘;½GÖ¨ª[µ@ë§ýÛj!ß0Í4/ø4SŠÖÝ6º[¶!œgY\÷L§ÎíoÒpX¡ƒ2>†ŽØ÷§ÛþýR°,QÁò¦¥‰§ÒÄü›²EIcÝ´_Žã£¥¿ßlö÷T›âd±¢TɹDJ²ð¥¯±Qw"*‰íùÍ¥#rsÿY¶#HDÌa›e–ø|'Äç“'.HZuzÕÅãNW=.R}ß™W«.jep”’ä0£Ê˜~ Ö× eMÄ» :‰x½zqs~ËbΗsQÌiš!ëS©Ö14Zì=‡„/)¥lü¶ `Œ‹I:€úw(nZ¤3+ƒláL×'½úÓÃN ï'@„2u'Àžm‹_[Þ‡L[œk•DëóPK­S-c i&;Í_öA[›Ôl:l;eщ¤K‡•WÂDdµÏÛe|×ÔW¾QQ*N¡Ò° w¢ÏuËX=Kè°jP«ßKÄS¹qÍÇ8|Oóµf%׈ ¬ýDË(ý°d”[ÛÃNÖƒ±œâ»h·6áX‹æøé¬Æ3Á(õ‰‡yb<îÍÂ['"ÚH2Ç’$^d›‡÷jG¹’ƒ}DvÑX¯ã««)–eZíYB,ù'qÔ†Þ?ójÜX4Š=˜ßå…ñjµ g;˜¹Ž¥‘ýSæu\Õ8¾ooÀ]¬¥4žÄo ~ Úó˜jS]øª 1"£æ‹’é‰>WZØ%ÚÁ.ïîy1s3dš™i”„'xqD\_–{´Í|Àå£O£~¨üd$"<ºí耑‰íGìnrÔ¹uIóþªÉ²"+¡Ð”µâÌa((èleŸg#Aáa/;M)Z ‡—^ÌÈ7_çœ?¢˜³b—Hߺ{énó ‰¨Xíô¹j¸¦lÓu;´xfÂmÙ¦â€¤× [/¬ñ×ç\®gBQl$â*åœ&â"õ.ªŸBkáË6X²Ãj¨›":#ŽæY—6ÅÛc!;¡›Zñph”ʸI;n¥hq7AûIQž—ŠÈEš:I*2w£2’twϤ'†¬Ž®}˜T»PÏdÏ__H<¸ñâÑN¹¾>>ý `ísŒ/Ò†E²¶(XzÀŽy»~·„¿j.ûžµ_7+~¼Œ[Ä Ê¼Ü ˜½TU5Ñë’¤£µcJ·>æÙ’›!éL¹4é¼ÌùÉËLÅÌA.ö ~Óø<£Pg«pgr¥ùaÈÄ‘["Je²Ä¡’>Þ!I_Ô(xÇqQ”×pžÒþ¨k’Ï7ÄOm"TöS63O:V¤Š9ŽñA‰%”¼=%’MŽ€7ÉH;ÚÒ‘ˆ*/ˆæ©ò¨Y+¡Ò=[Ü=;©Û ðt'xQ ä'⥯«2̈ø}äéLTI·í¨Ø/¼°X±Á ÿÑ“Â93|>#öudë>Z(ž-ÖÖ•Žî•7'¢ Å–ˆyºŠ›”£"Úo²š†KCÙáNü ´g[íλG[’ó"èX-}Fî²IYa~öu8ïå¼Ío’ó¶†kU·RÎûcr^í3¶ž/Zÿœwíÿ.ÎûF,wc¹^å)78ü¨ ÷PËÅßË•ø¥‹2Ýñ×eºYÇt³s»cºí¼#ï˜nžw¬sLwïØeºÓÝÁÛ·¸Û¥­åꟓénŽG™®øo;Ü\:ø¨¤šÛí"J{èD·„°¯®3 yiåõ’'dšÎÄ”ëÎMް¥)d2dŠs’®ÿyu2Fú™“¼ÿKóôó8CóÔ?j¬Ñ0p7!UŸd ž¨lùœ©ãƒœª»ÊÜEOœÿç8×Ç:²çÉ™“Ì£±?èŽ0“¶¢ º^/uöÜiÌ•1ëa9ME›däT·³f«“áâ›È†rc}ö‹¸¶ê¤“3ÖsRm‡† di=ö«ûÑîÉ„fë%޼>8b´•TQ2Ö¨YB&k$¹±íI}öîý“Pö ðJÉh È´ƒ,vväa;= ¶ËÝÑó‡8Æ×ÿ&ê¶I·¡Ðu1#˜?2À&aµ'€­h‘ùav]%‡S¾æJµ›i”¡:ôpçj›9aÐpiý;ªŒíƒ8Î “)J × F¨þ8³e³«ù±*ÌS-}¢GFj$öé f„3µÒÅä¶‹LÿþeÖ™Sï–‹âi"î`æžmzO M§Í«Æþu™+Ö9D¥Q7ÂP&¹àÇI¾~‚7lüiÜvôGZé°Xq(ã47E·Zç)¬âùësÑøÝçiTŒž«ªL­í:¡O9bœŒšÇ‘H[ˆ¼œ0DcF"FtãååFô’|KÀ‘$DhR2ìÊÒOK}²„ãg>Iô¬ôwI¿–…¯ÊiÆóþÂ3 B„s‹5Î''O|ÐïE¿‹¤œI‹™@ee«I‰"ÈF8‘<{ÍŸÒíݲÿóË”õ¡²;©MŒJtßzb7Bo¤{2‚ðGvÊ+ ¬™å;k‰ð5üS{i\,˜ÿºú~e4ºmþioÐF4µ{–ûzK˜Ü(‡8(0’ãyù½¸§xì耹zìhÁ?mo1ˆßç Ž| ÛY ‹.M&fT†dÃøWì”øô핎­OãnLr˜9I0óVÎvBJö§i¨4)z!Àû襞?‡^’NþÙ˜ ½2-Î÷£u¦ZÞÐ÷ó‹HpÀví ø¨ã·¨Ñ/¶O§’ 9 9O£œÃVé9l@¾%Š0[  Aü¾‚ kʳö 3ÇûÊx·° ñÙ} qåQ-N­Ð²]Ëa¯htâµQö}ãm}ê†ò£ ·Œd¸ è—3UŸ¿þ!™ãÌ2>+Â@߀HÚ¥‰A™TøÅvyl-Ùc ‡ÌN" H$åRaÄ鵕¯#äë á$*>¥ø÷Ñ^F¨ÇgM¶bWq›]ÏÑm’c23æ˜H8°!s…¼}(Pƒo¨É¦ Ò²R‚ÌëÅÙ.ÐpVT/›MÝcþí.ö:äEõ3YŒ±+G`=ŠÎÆp¬X0þn72÷a·1í…Ÿ–Œ™+u¡Q>`U^¿ß­s@Ͷ&¥4¯‘ÚqyöQÛSÜk¦¥“Cü¿bÁØ‘‚øŒ4oÞ¦å~se”D¶Óq›ÞZ;QCÚ¥B‘¶”W܇Ú×ðBá oßg8º‚ð {$¼}y9ÃÛ ‚8z oÏ‹…~ßòï^U9µ”μòv3òD|Ë顪D`ˆë‘¡å0{b¶æAÞ1¹ü±˜-ÃÞPŒ±TèÖ;™OP 틸 P¢Å ÞpŸcŒ=6TÙ†M†ñ‘RÍesGKw,ŒXVù‰ŸlÄ2Òh]9?º)02¨çoˆº}¡#õˆõ„Jó£õ‡üó8Dþ­áõE=pÕ|¨„pv®ßŒIÀÆzžxš·É8›÷nÙ%¾µtqã4òœFvÅÀ:ÒÿzþÙž´çy™±’×ÒþÔçå€Lã‘7éXÚÕSÒèm©Æ#cw‚N™0â‘3 [»^ LÀEF&Ã/­‘É]êdOD"“q-™\ˆ12ù¹ëœ·½õ,”3üÍ(I‹»6I Œ¬ì¦\ŸÌe“µná^ý’á'3­vW°Õî­Žµ â;9Ñ®„·è"7;‡ËJþb—/<®\O– H ŒS¹¸ånzö„ì4»8p…èW¥jŒ¸“ZeˆGv³ÎóëÜ;×qš#ƒI t+b`¯+`9Iìl‘P¨ÿi†·ÉR›½ƒ6^H¯*Y¿ÑëT@üŠs C]éê"5ièC–+ÄÖ[:;F<Ám=Kï ´lñ²”¹ÂÓñà l…ƒÇ½G\G AÓ÷o/Ÿ¬ü]Q5ëd}–»„A+¢³Ô(ÆÅˆ>ÆCl€Äuù•à›Çè&úº8Ò¥D}€lÉ%W=[õ¯S4¤%›Ÿ–P ÚI³Z¦&»{”('ª€×÷úšÒ Å†k·tq`S¤–òÑDS\óP?à@j¥Ë­MÍrXû~,¥ñð‡$ßÓÿ ­Ñv/xËNø|ˆX¸Üaárà|Æw‡Vf©üÓª×eO¯z5æ$ü0Ã݈dw( $n`óÏfFtzðgXî«&Ø&ÐCY¼Wd¨e ‰ ¹õ! DXzÛp)qr“]Þ£o–B&R­t0Ñø®ŒÃIÂçáz.&3\,Ú‚mNáÞ97ciEiCµ ¬ÈÓû± PõÔç 9çÌO÷¥®“ QÄ…—IÓå»Biš 4%«D÷¦kn•ŠG['ŒAD²õ7!k„ð¤ôË~!øÝª}óÅHª]‘cŠK¤Òõ<2¨)Zéz>—-·W¯€ìÞsÍŠà‚3 ï…Gdg \Ã×c6i1å~Méȇ…¿Iíë.€ì5ÃÃ#¤ðzµÑ¿Do½µ‚brMü“ä,qq|;Ͼ·Ù#ñdm+K¸ñ1S\VeB‘Z Ý4Dò =-ÊÇ£dkÚXÜ<àžK0r?5F=f2š1uG„–™M`w\ÿ1ïa F®µÁÈ5Œ,ÍT\02A*üB¸a!}"Äãzºå³ JÀcPí0¡é ¬¦çÐ`ä]ÞS’Û(Ùþvos²I%·ì´uWÚzšflßjÖ° {ÛŠ™j™{¦38ÚÞɾLjË׌œêćN&Áùš·Ëð‰\-¯”Hä$ß&Ï–E"³V¡5#ðY‘“šÛÂ=S×4A_¤€ã?å(NÈÕ}é6x“Á{ÆÅFä«Ä—±è䕸¨Y;¼hC©¦´Z|ÊŠH÷å}z )•e®üi†àï©>{‚ç–~ºH?‚„û—. Ø ™Hðá0,4ÜX²{JÅÔñ7ü™ü+÷Ý> òüÄÿ* ò|‹VïÑøb‹©(ñ:+Unƒ0‘Ÿ ÄÅ·—u«KÒÿW-©iΟú§œüªv{£TÂÊXù(/•*)·?þš°œÊ„3$r}ædç;2Ÿ²mÓO :®?(ãn;Æçª*f9oU±‹Çç–¼PLØFÙˆÏÅ& >×vÆÞ÷Å׉ÏEè½ÆçÊ/é.">×nÝš/^ŸÛÚ!~gVq;va|nyÂËH-Y¤ôyñkŸË­‘ñ¹j‹élm|®Ôï÷¢2q·ÊÕ#òÓ" –N ˜z‰faí2W2*Nf¦¾òÊÒÇFIýF[NÐÒ„Ö•áö/½GGö·k`®ôª‚[ ùß°_s‡vÄ40· –be¹eõ´rkù²ÆÔRˆtÇÝÔÆ3&@£sðþñÑÃ{ÉòYsÙßsœ¡ÏƒÊ¹Ä lê÷©g‰;«e —pó8­Œ¬«ÇF熾 =×*æÊ*ó±F=ò]D¤’Æg2:—)ï¾+š¤A6k¸žå\±†bÈ\öÙ<¦§äÑ…¯ £ž„Á<ŽCéã¯,£‚Z'üI@gŽ`jŽ‘?Ój48†ßj58ß$8¦³Á1µ.8×\|®n*G ãs%°'“ª #^jmÄ r ‘ tx± Ñ|6Ü Ž™uP…Ÿ¤ûùI:ò éTóGoVìæ ÿ{†£çw€R‚¡Hj¦èþ©ªgn‡[ˆ\²åÏGŽýV:n«þ½qËÀzã‘èÜ|ß^¾ï8ß×ÅjÝ 0µO2atîA+iú¬‰p$Q9ãö„f1ç6?Ä$K©jÎVíï@Ü ®FŒ»ˆ?÷Üí[P¿ßFç¢[BÀí‹2 4ÉPÞH1ŠY-ŒÎÕÂ"M}\<ª@’»4COà 3_I<œ bÄd£wñde*8Kã6M‰—ňMã‹"y÷@bÄ„@"1b“£ô 1b¿;2È_ C—}/P–È¡m,$?‚N&ÄmŒXã¥)¦í¤ Ñüç¿ÊyÌ ªéB%Úžõâ¤Ã%äåå DˆÉ*…Uéi¢QöR;åOåNË…Ç9zG Or\s?Å‘ÇÞ1ÍQÔ4Þµ­(ð5 JE5"`‘»}‘×Е³ÀQ®bS¤ü\·‡ JGå‘‘ö”Ňõ¹çA>PvÆl|˜ ãÃN+¬¯¯—§NºÖviŒ0™¬ yœ<)ÞêÊ'Ù3ùI1GKûlytÎÅ ‹Õ×E¢sS–Gç6Ü'§xÇâQuâxDÅVE¢sÇÕPCzZŽí£Ñ¹—ÆHFçâE+¦?ò/ŒFô¢°HzÀâbx‰Î-¹-Uä/†ãJšÂq¿ÉSîAr0°®—)ž¥ÄC\”@Ù¯þôƸ<æ¸Å°eŒÖè”_IÄèÞ«²,”ÖLE¯ãŽ%R¥Bñ1®¢Ü^µ7VY(WÛqk"\ˆì[PþÛ]!ÅrXxHßá°ö¤Z곿£pÇrÃë¸ý'¼KsXT‡ýò›ä°/s?OS‚ yeù1¾V;p$߀ÃJZÍÿú^—Ñ4d´•¯§šÌåÿ¿¼]pUÕ™¿7ïeÙ‡/vÙŠ3LAyt‰DÍŽØg¾”?MÑ®©¥íÛYœegµÒ©ëÄîî,D¼¼„dwRµN:µ;ŒÅ!Šn£‹˜Ö$ Œ0¡ÅÚ¾TPF<Èžß÷ûιï…àvw§;L¸ïþ;÷œï|ç÷ý9ß9ß›D5Yª&5ÿ|M|6¾¢?É'Ø ²q}¯ÝÒ>­‰5†òkx0=vNI>¾–8|M°Ï&»Ç' *þ'ñuÒX|¹aã‹Ó¾N#量ÊF†-oàk邯µ‰e ñÓ…®Ë,šÔ&R…P’!‰3m„EÌãà ™>l—ÏfN|ooþZAØí ib†~’^§Ä:-íØ‚Û?õóm ÄΡÅ7c;5VÂî8l]´íªß·«‘ÀHÛ¶v@ÒŸüu®hõŸ©ÃQ. ÿ#íÓBmnŠjs§u+•ÚU¸E1Ÿ¤}Õ°3ªˆ´=pøu‘¶xmèIi›s¤`Hõ-¬½iôâhÞ‰Äbì_S`û "aX'– »Ý\R4ÿkéËú—8É—E(¶ž"]—Ñ^= +FÌÿ³œ0AAá6V):_Åc½Ãwù1™W"†óºqOÝ3 ý4Âú¢7ä~Ĺssþ¼a¨I¼‚¸+~GT§Ô_°`2íúåZç騥îžÊ›sÑÆæœ¯#'¾ŽœF1´ªc8]”Ž5î\{&kèVí§3ÏÓ„;IÏF $­—5š€¨€åàÈ/[:jÆpS2R½%E¢lYjþºéiY‰ŸÉ‹G8éä²s›®#úýi;çÃÛ>åˆÌ¥ÿZœ•àˆ°;ŸâóøýÙ—%øºM¾—ÖÒÆø˜8ÓP.þ׆rá¢LÎd,ÐÌ1²åO†öïlG®Ž•ò-}4RÌÑ'&ôùòhHK˜oDòp5FÁ¨mJóh“à ‰Ë’£CÑlÅH‡U˜fr¸dXÁá} Á§Êe†ûÀfh cõˆo>‡"üèÊ5¾Mj¤Óf"? ‰VðósÂÔ ³Ï¹߃…jy™l¿/‡• ýtê×EñaOFoªh‡Æn°é5?p™ªŽÜ2ªoUÇü[ûšÄzqÀ/$ &Ï®Ðzh­tuã–RrK©F’m1k-ç{®[dúPZÌ ]cZ,R£W ¬³àÝ.Õ›wûo ÿüQ›Ýüñ-o°)«Øò‚X\ÙɽÓé.”ù²I‚su±\—{B~IÌZ9¹Ü9ÎËÅ_bJÓ™˜¤ŒË§C Ô²•Êðú]ŽðæÎ˾|$е'$Ž3•( ê“‚U‰ÉÁÊÄ”W1m™îLˆ„lOlÂᶘÑU—§—ÆŒ>µBb?düÖ>—‹o­57’[Ìdb… x›Qhí3¹êÛë¤ïŠÅ·Þ‰ [¹zG ¸|ŒY·KMÝ&™ºM6u›²v'êò‡ï]ú™ù¯k‰?Ý*ã  Fgá¶Ž¿Š²eˆ’eKí–\`´š‹á†,>‰2 éèVdŸ]¬Rê‹ö¸‚9dµ:´Éƒ}²¯Õ™·¯Ý‡ùT»€s¯;/y`rs;MÜT"†žÈî^,Ô¿ÃU®A*$Ÿ³{p™¬ÚãÐglÿr{ÁóÝ{ì,+°C(L‘åLþ1§>1X¾nW,Ý%Œ Cæ)ƒB` ‹ÿÿp2¾õþœÿ‰¹·®'¶¤þCcÁ¬R «twÃ,óÁ1ÈQƒmm…U÷,2_»§¾ú ¸‚ÉA3¢ù¦ÍËAêá\ÕâúÓ­ù<2æ_wýÏœêé"n©ÝPvœk³:»º¢žÝVýùK o…x(;ãÔE§ªY·?ŸÌuŸË™Gdý"nhešºƒ‚¶„MNs·>íg3A:'ð+ÞršIBÝ‹y=Ƶ·OºOÊ‹çéÕ>¼ƒ%ã['Àëˆ6öÔg—¼8zé€ßï~]1.ÿOš ¬-K :ÎÊ1ކ£A¶cÂh8s…©Cµ 5V†…j= ˆëç¿ð\‰Q5ib¢÷î…3bŽrÄ\ rļV–Cñ]’Ä@ Æ-ÍS¶»u½ :1Ü)¾êÕ“ñcØíþéÙOçÉn,¦™T…PmàS±Gúµ½€ßœ¸Ùº1eU¢¤¹3Ñ "Öñ !=kw^œGÍ_Iväœ9Ÿ€(➌ˆÐª¢(É:'XMé*Û¨c¡p› ÜjÓ°{â&›ÐݪO¦9fÓ5E9ÌÓ>=¶-ÂÃ==ïG%-@Ò)"+Šj^pÒÆ_SYˆe§æí(†QÊúìà–tÝõc°P£ƒ£¹­C⇞@Ì:ÍnÃ6Ï· ħ*)yëÑ4EmIUO ç¼ ÂóŸ ç?·S?a'¶5¯ˆƒGZ,9¢øÉ7¥ÞFOcóMcµ´",}·0VqX§?Òm1™nk‹åŠÝGÔ±MÖ9íFçi2<8N}Žàô–Ÿ˜Ñil±R6l’oßïvø§ªÇBå>3\Ÿ9q#Z†Ê«±êMÏ|»ø‘ýß5Â…Ü- ”½oê ‘Ãö“¾ÄæY„©HÁ« ØŠA0T×°žÇ(wdŸM/o7#Ïa]þBœ¼— áÐbs¿G‹³'C±8Q‰ûº+,ø·³\d|&áß ö©ßÏÏ6Oô~YkØw‹xdãòb øDM÷Œ¸áÚP”HiÑ ÌÛ`…^·z¥¸1$xâ-wú[Ùà›ù"o¸ÜFÇw³û?î'5÷ [¶"¸›£ ü æô…‰­">ëJÈÊ«/âÕâìsÇ/Ž*+ bXý¯O°œÊj4€1À•0×KEx'žp°¡×ú³îé,:p…(x¦™òK‡ýxZ_MS öœa¡ˆ@­”ã>™˜”}öVŽeÊÌϾƒ<É·ï¦ø—Úw6òT””ŽDl÷×8߃FuV¼®BÛ>…¿²žùŽ‹”l:~ú.al¦h …­ì°Ç"ã-OGÿ²˜œ›hѼÁær9ts¾c=ÞøW¾ãúª°CE;¸ ¾Os°`ØÅ›>dßɘÜq[¨œ0<þ€ÿšŽ—>3ÒÉžèrš[I%>ûM­„]\^½nWôöúÁ¡z~]X¬ÅO[] ~^‰v°ìã4°­­áôw?7Müp×ãS™¶D‡Tx®|X/¶ËÙÚ×ðêÚÝøiýnÅßá¯ÊªâöçóžÓ=ç+L©Å¹@Eˆ¢Aq+_Àï¡ïÐÚÑQ{˜Ì4—%°ÀÄî ´*ßÓí¤æíl‡R¦ _ Wý&Z]Ÿ³€$R¤'Ó oëfè£ã¤[„xÒieÖãsƒ§2?űÚRçý#ƒÖ?ê+ Ž°J™…H\Dǽ+PíPjoöœ"(çÛ¼B#a“§FDVYx²“}õ7¤Pgø-uƒTĦQºŠWëù±¶ÜôJËœ_¼ÄG5Å/Ä×yãàkšë¯Ó%=g§“úíààô ‹¹òÅq)æÊªÏ³ÁÇÊlÂ…‡IlVÜæÐ‡*0_Å­ËÕ½‹T6‡C6‡˜§ ŠŽ1Î?´›k¤¯R`0|Ù¢ûÛÊÌ@uׄ?fy7ÖúîËU¡­D“Wù_Æ:M¼)Ãzuã}ЋÁ‚€¤œ3Œ:ºõI(M³Ï½yC _A~oø{¶‚ÁxÑH0ƒ·Ì×%”ÀžH4¬»–"5¿(&ŸA-á–äËÆÀ0§©—sÈ^úuÉaiý¾á¿¯ÿ dzrdVÉõœz5¿ÐÒŒhÏòL.„m† ïç[Y>~r¼.–­­{#Ejç^ª"‹îœÚ3(¬·ÈÛ3`ôU¤)܃ÞªL}¶ íRL†¨ Þ-;cÄÖ… 2—ÑÕZµ2ÉW$Ö+¹jG¬cð?ˬ…”L RæÃÅEtÚÔ}H ¬´j!„ž´çÝ<±ç›ìøˆºñ±­`|l ?d‡âŒ Òð%~FA¶ÛsFÖ,øÙÌËÛ<«š /‘$¨‹g Á‹,cÁ?òœz#¼ÓVô)Öd›=a§œG^cÉ’…9¼U9TWa±9¹=—I>™Sàv¯E(<kÎNmwbJb¿üB©¡´Èç#T)S\•ÈbùŠa#%!8\e( ÄŠõc".ú-¦-6ìç+%úJ‰¼òÕóß/Á×ñýØ—÷þÿøÿµuàé¿ô.;  ªä; ªè<)ðæ›ù“Öþ»djÀ®ÐШ¹( ¼Õyb„oT~݈ÿà•/_Ã7paxâö[ùT©Ïù}ix4‘¾´aØ@ƒΘ?ÆühÕ‚Ù s¾›ÔoGÇñ…<²öĪñû_2ÜÎ4ŠÅŒ+K~›!Fò gÚeÇ @Îï‹rÐR‰Â4}eUâ:•Šîàî!âÓzç¾÷*Ìo¸ÀÚbY½^†è~XP·™ãL_ú±g- h^Hj d¬ìY=![}8ôo¢èæ€ì¶ÍKú4kn³ÝY>ç‡v¨ZŒÎE“ õß4Ýw¦°}áòr¾¨oTøbÚËê #àäêq®Î‡b0P‹VÍÿ,Ω¥R£o̯‘˜A%Fþý„¢BèËäЙ£ØÎÈ;æJx"žä°$áÕå„i]ØHvG!ùnÿÝ4Sþf’e}æ¯?ÃŒŠ2¿¼\®Wö¥“•ýî¥Ì3{2©Jó«²;òì®XZÿ«áEjW(øV¦8:>_ ½q®¢=˜îû~_ºÖïôûm6aæ=¾kü fºì¬ñû~ý> Yø½óëž1$Q.ÓY9DoNMGH§yÃU~¾˜OòQÝ+y»Z’#¿‰|öåÖYlØõ†¥g¿œÕ'NÔä¬~Ý ѽ‘Vð'ÀÛzÙÿEÀÛ(J5éíD:¶ÿ~VGRàšb3©Y} M,­Oci™;6Rå³U”KÉÆ_aK…? äe7#Yç[#«Ä·´1?ôÇ8 ÊPP9¯`¸×°V„S8Ò¾P^,}Ê+àÖíc¸U¾´CÌÆŠºo´ÂŽí¡ºz.ÛðGòøÆüõ›Ês[<Ö¥=±-›ùç ¨bS„&‘ëטǯé7 WcàÆ'Ó=XsM¦×üß' æhË\Ó Õ”oˆmx“%Vƒåã-÷1ç¡7~ë3Åà|s_*X[j (íS)=_……¢²î?M¢‚úOÅ1Þò(5VUØÐE énÒˆëU &ñqñÔöV¨§VaÍ¢ª†Dh0Ðf†ã™ã»ñ±Ø¢-a|‰Ây¼å!æûXÃGe»8ˆ'ŒÂ`Qtœª~ž²ö„l =F¾X[Nª®©ÚiËí ýgÂ.ðŸ¡VôŸ ÌI$š¥þ3\4º×dßIm]oìúA¢ÈÉÓ»Åyþ3)TໄŒ¡.Kœ[V(E £JîX8ðÄB8a-ôS¼éJßÁ!m7ÐcügÞ,ÀcD‡I‡”®J}q&+‘ç?+ÿì§žëÚn¢ö%‚zZ@4úÏ„2þ3Âðõø”9¾(n´E¾Šˆ¤Ü;(ó{sq7ЇÚùÊžLû\žËC\ÍÍ@ï¥õO©-FÕi‡É:L&‡¾ œ>%ŠUÖâ÷Ðܼh•±t.k3UÎX™ÞÃî8Þ_Î7fJK&HKÚ'HKÚÙÎvÊ¥cA/–K/¾N<+×>¯àÓÓˆgtÒ¯‹ £ãœRBU0BCÞ0KºSbÜgæOIoæ;ѱÈWÑvÑDö¡}„€Tœ`K#E\›ÀGF]$“€fÚå Ù Këm‰¨Úâº@øÕ9ñN¨ùEÌZÀ}2Ûw†Š›F1çSì¹:ùfÚsq¡ÞFùƒ“òe$ÏU7§Îîùò÷¾ó(‰OlÝC¤`„fj„å‡Còç3 ÅÍtBz¯DgÙ xÎ9%äIk1ͳ?ºwߪ<oxÜsŽÔœŽ¼cžcsnã~Óêe0Ð!.½$9•g¯æ³W˳Ú[î5É%,œGVǧ÷êM»p"ÎîŒ ·šÂ«uDÅ[î¤dÊÒV¹¸z#BBós†¸¥Þm>Ëñid‚ B¿^`Ý;tŽ ‚9‚ü ùÒlŸÚsùò4gJ&nóTzÌ“2¾{n<$eeĺ©t2±<ã Þ²ÆÔ{pbƒù?3ºngjGë˜ûÝr'î_t÷/k¿4 3¨y5½48èj¥ÎJ†Pê¼D©ó±ubL²¼ u‘~ ‘Œà{7XBâ«Yªˆ3Aû©|sê*¥œ„·[ÿ!KP4p2²¶ù#@þW®#ò[×á߆ )kp}§p´À%ó·MXÅÉNü”^"~ò?-h Jj¾Kêð•ëÆ“>ï ¥½°m"}vYé#mêÖ!gHfdìãå K?|/“Ü’CšÂªÅõ QàÅõšGr"ùo6ÈvBð `ý€-]§J× ­zȆgŸÿšQ2ÁoÊÞB¤v‘Οéó«ÎÔïGënQU¯gtjpáæù]vÁÈLÉÁÝ%_«ühõ•æ§0 ¯˜Z¾€íRŠ´L?ÕDѳ™ÜaªäY r/Þ2E¸yX› ÓaÀÂ6ÏÑHÎÅ©EFØÁ4Ü’;­u£Hyåß5|ý ¡øê¿Ik½ ôL &QTú¾\p¼çÜÔ {梡9ö•Z\|ø-]‚ãíõ¥YI„BGÜàøÎð·´øÆîÕ_ÖŠDkg î(¬Â,ú>¿Gèó_Ô}{|Tյ𜙓äΠDjj㯠hÉ”4Á’AŒD%ˆŸà[µ¨ÑÒv†*f 8‰r895m±¥•Z¸CmliÑ^JÑ¢$¼5<ÔDÑF›ê„‰~Ѧ!Bš¹ë±÷™¨¶ý}÷wÿ€œ9{í×zíµ×^{™?91hÌ7©óV}$NkPçU§°I]ËPEî;ƒ¬Cj×C eD_ß7™~’‰ÚÏ#÷ÓŒ¿Æ&×CŸᘳêó(#sdì§Sè'}뉫ý«Ð´™\˜“€Ù©ï™z+ZçcŽ'ÿE½ÖýßAdßd‰hĉ¾ĵÆÙÿ¤¼nôéÏ?L„÷ Õ›ÿË’nªVýÖ§‰ˆËV´ÏØ•íÇYM„%Éeªµ9Ÿø¤#@ßå.8æ!"2gj·i‰ã:W7º·q0.î?LUØËßΚx*OûE)è­Òƒ‹aìw®›ˆ_§0Ñ+ƒBþ Â> EƒaD0GÝ­Ðx.вß8©¶Òªqn{”#ú.sÍÏÓäµ%v0`é<Þ<o¿eCx“.+«ƒØàÆmùÏ!ެHlñ mÕÁ&ë"·ÔFñËDÙ‡ÈùLŠá‘ Õnø¤8—¯b‰`t¥k7PòY« ááŸ,õ8!Äaî&ôáRÈê$K®WhR˜ò¾ƒ+Îb4– wE( ðÌ j®2îGD†t%]sÀž‰Ð :ºE¥ o½ô2šh×֨׽“Ôò r§Õ$í_•¤£ü›¯5½çÄSߊ½ƒbÇ5Ç}Ÿ(hY¦e¯ÌM¢é û(¼{»»±Béiß ¢7)vQÒFö‰}v2FܽѾÁ»˜‘ޱ FOÌ{*(&Ý8Û)QDZñJ"6Þcë%±E福)„a£“Ãø)°ý{ÙÒ£Š[àö´Æ/‰Ïš¡~úù¨ƒ­Ýoñ2>_¾(¼Þó=P!CîÅnà4ztHzІù‰®0á÷=8 M"—!ÕÊ­áŸöuêâ‘vc€ö»mnAg8tÒ’M¿¯½&áIJÝ Ú.n$Vi‘ÂúŠÒl‰4òû•×Úgoh›¿áí¦ðþ Pqü }C¶èõ˜CFŠÀ[ ;ß­&FI·Žèž.ß:*æ­k‡Mª‡½Áﮎkqó!*o>èìLú>Œ˜lyB4öóõé=À¸‰òKåÍûY1û”·ÌšÉ‹é®ÑäÅçbð ¥þ>Ž<ª¸Q,¥¬NøNÅÊ-‘”¿Óæ+ŽR0; É ûélâüð)%øMÄ?â°z kãVÇÛùKÝëMï;×îî«ÀûGýJO[JC„ïGN_u¼>ø~öÖznPoíçw£9åÔkÅ ‹é¬øKfÒ“ŒOû<™|ë/NÄÄÌâ4“\ð‡WVȹ&㥉˜9“}+„zDÁìú¸!ñ@ÿÖü (¾ßØ=7jNW懚X™ƒÀ2ëâïw8lýMO˜Ïó;þ5V=ÿY°Þ}¶§ZI¬À‹lÌ/"Ì£1‹«•)ñ¿Ž, 6jÃÜÈþ× øÕÝ;¯Æ~Ù»÷Já˜0.•Úˆ@…xýagäÁK@—;øþÚ•GñÂVt¾[P…ñ‰bšŒ@‡*I´Î×Iý£[^ú°Æ!ýùÉ™·þ¿+5ô̽5Jh­¤dRdóhòŽeÑê18s É<Äé¦ÅdLSÂ&çk(騙—åL¡KtœÎ ¦b”Cfîc»üÞ»é£xGv&YôM¶/ÁÉÂO‡@¿ëYIb÷¦ÆÄ¤/¯r&æö´¢ £5¹Îz“raN&yMäͪ,½‘Yš"?0¡H/wP–·ÞÉnù ¯w7Vœý™žs¸~Ä'Ò;¹Õd°ÿN|ã¬uk?—¨†¶{ë•¶ýÓþh}3€´ÆÇø CnBd8`†^õK“g dØ~bçœÄ„¼vÂ(/åGߘ”¨âZãD.‰?'’LñW™Ž5ÒhÝÈà„\´å¶(âüëB.ÃìRö­^EîbDÚ6ÖØ«Å9§“R®ãO‹S|àýn“káqæj¼¥Ø-nóEÙ¯©4^â_S¡tjx£çÔ_i è&C!´–þ6izn“ã68™˜Ü4n†¿;r5 £1ÌS<ü‚9Ä¡ÁFÉ›ù7Ö°¦Öü mx±Åfòï¤v,ïE´¼Àoú‹jU=¿ w^οÓð7˜äšÇC$ØÄ¦”¼)‹úÊRÚ^³aç%rV/3‹-f«`ÀÛ^81ˆii2×½©Îpƒzk;ÐV‹|×þ3É}|s°ã­6þ„iF:\Ä|°Ã^Ävª¼7ñý€Íм-–„œpcŽ@¬É8å#BÝ[ñöPk¦¸=l³xWìTäÞPpUŽÍâ9Äâ?Ä/ÔϘœ,XäˆU„M~;_Èë¨-’%&qÆwºn–¤®IORhØâÃñ¦wÓ,õWGh¡qBÆ4¿™6ͨ6×H)¬î҂ÑVIޝ®ä¹ÒKïjd3P¬)ì ?†Í½*‡U!î²8ãµbݳu}¦P&¯wÍå[ŸdŒò‰Ú‹˜nW†¸ª©špŒ3UVK!nyšÖ‘¦?§YÞëdÈÍúí»û*AÈ.hæk1ÀÓâž {ß·F¯#9ël¬ˆm³Ø Ñu­]4‚žU™–dˆ×Ïa®ßê+Slßs‘8âÓVy?MÚí´Ú¡8Mïº,÷ÚÄÉaR|Õ݇+幡Œ=r&r~Øô^š¼YÅãÀùaj3ºƒH¼»En¹Ç6’H®”Ÿ‰ÉY½k#¹^‘ж×(¼íäð$Œ¡GlÂNF$g%,µ,ð!1À–’E~ Ñä£h‘=S±÷¦,—"2²Î®XGïÁŠ;™>az‘é¶ç:÷e#ÂÙŠØ ïßÓ< £fNPN*[#‘eý§’YÖàhsʵ»}]n=“‘˜­ L q„ Â&×Õݪ²Û‰öZºÅÖû æýÁÀ¥›ãùÅ:âî@ÑÛ¤Œ;Œô1¸l«ˆSÚ3lãíwDcâwûIñ;IpN3!¨J{BÄtžÑ8{(L47ÄŽǽtfsš1Ù½0Y£·“"oû(¡ÊiûA†ù@wK÷ OÐ÷5H#ˆ¤²Â,@»Š®ïßõüãú÷®R왡òø²’d%¤ têjqì”2Q@Å@·4«ðIP S¤^Ù $ræ(2˜pRå( 7™T¸ÚQZ« R% Ç5‰W“8V{ ZMAêòö¾ííQÞž!ñ+l!Ø@Bð-üNV¾PÔ\5IesÕe\õ¨]õ(Uý<‡Nâ"ûÏz½ê“äü›U¬wrÉ0[y­ÉƵéÄ®0h±åJÛL6¬À{ü&W¼Áèƒ^)&p®—¡£Yœ à‘ Nœ’1ÑlD€¥š]ýëÁxýPü§ÞüÇûÇaïﬓ‹!)vM\–ÁÔ3”à„}Œ‰›<"K¯è¥ âfQúëÉâ6Ï»&IÙ¹É÷l„— 3ÄfM­áÎT¸£»–(˜kæ«Â¿„Ù *¾x«¦o÷fö|Œ§Í:ùÇ˾çxL¯µxG…L®Ò…ž }ûåúö´Ò‰tx1Þ×ñ®ó˜ê£…¨@#•@1ÿ±5íGî¯i¦}EÒNá Z7ìÌöý¸9 …²¼OÂRuÍIX«hc".êÀdG^]‹iV—‹HXå„¿R~`¿rÒ¨ã.Æôfmh°';G\1z4Zû¤¼¿"³KÓ¢Ëà¥%ü¨ôyÁR±´F¯@Ù§ÌX6œüñ|ÓMŸhŒs±.<á¤óM©Ÿ(ߨïŒ}“îrWA]`T>={_Þ?!Û*ynÀô»A9—»ó­Ì0<7;^?{Þªg;ö<ãùe=«Øu¬;Ù $ŸåîäS)•È P6êÛ/~q\ü²G¯Åª||Æ®fbxküÈ'I×"±š²o w [`µ]ð•L¾´Ui·®;É×ÕŽ1G —t á’=ÿ¹$x!YRzÄ?>;‚íWl)þå`œýWX¯5½“!¸íÎÃŽïE™Ö ¬kkëÈà[ÕÕu?L‚ö«Ê­d»¬¹y>wÇCè›~ñÄ‘/¼!n¸’"ÌT/Bë”B{ \¯yבðžØxKiâ„RÜ–ô7ÿ1MJÓ.ÚO÷IÄy·Z™ˆr˜Öu'qÁ' M`°MôO¹Þº‰w^y0XgGç=1ÿ÷ mSÆ÷Éì I!†Œe’f/´†˜<ÒtêB£]pŸ*—”,Â$ôÂ>L?ä¸)ÉäŒ2ŒI‘¥LžœKŸx±uLÚ he]ÁGæ×œÄ¡Ñ 2òTÓ¾Éx¼jáñ‚aðèúóïòLgSG†8‹¹ó¡²ÅÊ"Tî¶$´Ñ Æ:¶ðUë„^˜8Ít!ï˜éöÿvÐëY$|‡ôZä>>Ĭ"|ÂyüBâÐ'ʬ”´Úò‘Ô?ý .j"‡7 ²Ï$‡§"Ÿ’Ÿª‡á§Æd~º.m8%]uv%}FýGŠÏN½!âïë™-«ìØ“5¥³<:²¥%žuR²Ë¼ˆkØ&ÇYðºÇ85K;|y ¶‹ýçœmH,ƒÙ¹ÑÊÏS.0‹½ó]ÊÑŸ0l-ú[Ì|à§,ê˜k›ùKdñŠ>ý7¨Ú”ì–¾@õÀ3SXG£"ˆ{6û¥³Ð9 %Ò$Ô0*ŽÃ’/ÿ¢ÿþ’Ó­‘¼rÇ'™Ù¾vyýl“dg±M’¶F,«¶¡ ÆÃ$;oê¾*ŸT‚ø TÀ/!F|]KyUbWý š5ù=zÍD§Cfw·^9"R¬=¬'Æte9…žXYªêHª‚+M[ù&J²VÍ–òõbʨ裶‰Q¹ƒTþGzÍ•ĨìA})ùÉ<]+‘9Íä; ¤®„úŠòï¤|N¤‹ZÄn_¦»irHR¡Åõ}+óGre`Nº'Ý:D ïºÉ¸9Až„™×–‚\ «¾)Wê9ð} Ùá7ÅÄpî<ŒV é퉃€¤¿Q:ÉTZÁ¶Å€‹Dî.óG‹7ªØ%dÚ¸)ñÑß·„˜ BÆæ›Ã¤S¤ó™.¹®ètsÄ9Ö'M±óìóñ:!ÑŒÞϦaVwSêÓ¡ùUhš 8$ãïõç=é%Ýc|„Î¥@n)È7‚ˆà?Jp{bð1w}kY¡±@ë6¢¥ÇAy©wÆXŠß§Ûj žgIÅ)r?ÂHHØeðwîªCDøa¿ò˜7â#­C›‡X•¹E¤yH]NΕ‘‘Ï´…U”]Ž(6àîŒøAJ%‡HzFŠÒ¼©PF×p€ç!d)Ož0èQƳÕ1ŸR”gë ¶1š›ÞWôˆŸ4§p_/x+¼ÏÕô§òwI£Ê ÝF L8=ñ÷ÚÃÉ#`áÒbË$µ¢?±ÁÂýñªÏ‡û•Uçß}Øû“×fËhÐ)3ç­Zó˜,–’g/1yØErøu4#¼„õG&ÇÏœb§#5þzØø_2˜÷„õlrœkÙ3¦îm¸~$eW®ä<ˆ°q•ŠdÃ}ì~‘½·'á&½taZ ôQ³˜á‘º¹º[ßêëVö„›=á}굫>4±ÅîÊÓ,££ þ`fâ¹ÐUåªGq(˜rùþ@É2,Y¦?r#¢C ~rnt©ƒÖYÔ‡<<Œž ügÅ3xÅ*«¼ÿ[0¹ÒXpY7üž¿êãðôÀäÎUG„欭gØßÙn‡ÛÌ9…µBE4J-ÝDÝGHÖ%þ^ǯŒ`\a%LÞßMYŒËyL= ÁóVµY€ <À¤YJI;pkú¹ÃgMD¾º{@ƾٙ«b¿Â\+³c/ÔèâÁÆ4›%•°f‡¾Ê°Ak½%Bç­ ègè h†¾âSèv ,•“( µ‹¦â¹y£*4¨"ÕÁ)«1^QQ¯øqUVÑÊY~/®1¸´Áà%Fÿ.á h1öù´øZß>Vß>ûÉ#ð ;¦R%ÏS eïUÐZO‘hÂ{a˜Ð(Ø#î·¡VcžV³K)©!0Ä“9[5 JÀËQa <<Äœ1Õ™ø>§9mÑ ñR dTgþ^V‡WºzÍ;¨¢š»©ÅÕ™(Q«3q ª9ÛÙælOd'ümNkÄñh¦deýs¢X¯A%Øìë¡ñùzùO?ÿA+ÈqZÓ ÝFV'ÌÌtr³Tê¢o–æ¤ÃÿJàë–o Ìòõÿ^ø×Sv}´âRtuza71ÛôõGp4áP¯#0ÝôõP3D[l¢èKŽ?6®9m‡@JÊ0´pÕãGà‚êÌMð $ÿqOd/Mô>@Î ¼Ž€§:ó?€7²Šàõ8G w5a—Â,J™º«N´éºWÄ>ÍôLRU¸3 ”swN¨“MuÌçYX¯ØØSf­uª­…#–Ÿ0²R[\ëœUvWãô’^ÿÚõÑA#:¬&”w0æ;ùO”ÿt3¸ógî©{À=¶F¸‰¸×kðL–¯ð…ð¯ðß1‰3„‡õ|ÝT+êt¾iú:¨­rk¬§fzb*¬gœMléß”™ˆÁÅ. ‡´ÝD´ýYÐÖè‡ {Vÿ™ætÊeŒ§IRäø‰²3Ð~†¸Kâž“D\ó˰ô=?Aß3õüih|øôúF› òÄÓ)¨¤y½­¯Ð3 ‘úÛgÆL2¹¿(ÑâI"÷h¤×g ÷l•éÎä>¿þ4zï{FŽ&qßLU ¤ãAŸ pèµ&êÖ“Õ'Óõô¾¬=ª1š¦oo5Ê;6a›†¯Ç\™­oY·ŒÃˆð[Â'Á,£_ßZ¬{õÚÙ¸õÛú€'Vu8‚dcÄ®Ì;ÚlŽáëÎo ]RoyçâCɹš¾µä\ÕZp®Û(ï,˜¥éµéT…:³Àß]õz8®¬üºym¬:)èZ>ÚRQȾž@Flt¿'8ÖHêmºñâÐ ®¦?;¶Ÿœõ¾^³¼GßÚšÿ†^û#¬!V×ð "npìpâ›ÈÅ™²8U´‘½$òúÌñˆþüÁÐ|Ê—E¿n 2˜>w¼Õðõ‡÷j°æN1}½úVjþPý=³ó«^Š5ËÝ׋e £d£úúa– ×è9å­Šj¹¶vS¬Åð74×Þ+3N*ïÍ| ŸCÓ¬àæWK½³ƒª^àgx§ ˜—jÙFé•_æ ¦hÅKªŽæÅÁ¨ ï—÷fA¨A·~Õý[ Š× ‡ÜŽÀ˜Q¸p½#x'4®zH…ó×hîÆÈìGç \ÕXUYù˽ cM¬RŒQÇš%h¨cL ÌÒѪY‹eF©G5©¢¹`¬frhÐM»:6E¬>·©®·¼7SÔœ{¬é™ø‚Imë[ŒÖ”GqÒ8½n6j€©øæµ‹ág~shªµd›| ô‘¥®2j˰oXßê}Èš¯4&K[à G¯<‡µª^­¯¼…®|åŸZuÔ&ù‚‘˜þ§ô­îþ§ŠóO­üpb¨  ûÐeˆw÷Í0uK½ÐRñ" ébxóÌS`g–§š%S4£$þj8Ôàf5ûH²}OñŸm·¢×ÞŠæQ™f”¯‡~ ÿæfßFÖÏëèäúeåçÌ%ÛˆÝ×¾°9\Ÿß¦¯kÒ·7¾uHãkÜM]îÕï€|âÒ·‹¯@®û¼fùz£Lk.òJYÒ0/|*]¸[%Uߪ¾¹¶Jp—iáS¿_·Úù»çnƒ—;j²Ù@½òÜRzSCuÊk Ê;t O9ŸÜs•Tº†Jýk üGuˤߟ[FåuÔÞ>z 7õÜ^}AùNÝBY¦ö¡uŽÀ,Óï1î÷ß.Ùúš\¯o n”üã‰/ó–™åÞøa÷DQ¯u“Ÿ×£|Ë „Ø\õFìRckçBc™wáé5Þí n#ðc@70òšñU¨1î«7ýõþzÝ7IPœ x»…î ŒûêL_]¯E¯û2C¸ôƒ –D[Ü·Æ,_SP~T¯;5Hª^ó ‚¨$ˆÎ¸¯Æô×ø;ôºg"M¯ñÄR‚è‰ûªM_u¯[¯»Ÿ!@»‘ n#ˆ8‘Ò|”ÈXÞ¯×}àº.››P9ÌLÖ¦†o½Yþ”Qns]í"Á °"¬ÌÆK…OѾ v €Ö]Ç÷„ïw»aÙ›É*w¦‡õ-³{&±²-âé‡xŒk´æYÄ¢áÐz×wG›Ï!3ÇÎ3IšŽíH€›×{­ÂmnƬ@ÀÍÀÍõy]ç8q"’«»>RNãbE =™õÃrs0™_“ø¹ëKÊi,èn}à°ù?‰›)o"qpQ2ß.9íÑaù—2'%óïHþxþ½€jlͤ¼Lu^‡6€%àDO.±3]ò5J4Z…#g³¼ÕÝhsö!;hcûQœ`™Ü_Wà&g39ù¸}m àexýº—¿0} ÀJ h³ýÛ®‡íjp©¬6ýÕ`Ièus÷ ÀÛ ­Ëêè»öm°~æՖlbð1øÝ–jXÙû+ ÆwO­­¼$<£þ:£ãÓð!ªŸ£ÀÆZ½ËqCtËÅÁ—Áši„ª¿Ô_­+'ö“§@­žï*:±Ÿ¶³¦ z® Fï6CwóU£­¶1ä 7ºšúôêêô¼7Áð~­`‰[·îeÚ‡ ¢oµÔÇ0Ó“¯g¿š®˜¡ž;šK®rŽÄUßòÖ²ÄyMuŒQr•Z]8&=˜e–ŒQáìõÆÀBt•»+ yY} ×µ×\ðcX¦ök]qɯܓS¯ 5@Ë0©ç­-²-þäQ8£Hô®£:ÅÕ¥WiJÞaÔ=ÖÏÜoÉ~7Td3͵P/V+ÉWMµš2ÔÏøª÷cߤñPíÐ×e;f•$‰`þ›WÏãugZÞÇšÞuíWǺ`4ci«ðæ¦÷4¦|Óa”ŒUñ¡°†>>ƺéÉ OžbÄ6q°‘u{'±ûŸÜÀbƒ*³¯ ¤çWðL&\t7è)Óß¶¶ñŠñ2òO6™¯À ãÕÉÀ?—†gh“ÿàCôÝæŸJxŒàKƒ`Az7á¯HcÃhÍZâ5ç þÞ¸ß]t‡.ÀûQ™YXÞ£Î6‹ u-”TuÁOíoNÛ ¥¼siO±óÅ&//.¬ak‰c_üýá®×¾Mz¡ <‹fÙoMµØžœkgLëē闀Q§œÌÂèÏGÃdð¥A°03“~ú f ˆÚ‰ |ˆî-jß½kãKƒ`±6çõÐScôáD‹@† õiÜTÙR— Öç"C=O<”œ2p^zÐgÿÖbùP3\ø´3ø9¨ˆE7 Þ ñ° Ce1Œ+è¶¼Ëe£?ž ƒ¨ZÍä|ñ.Åô÷^Ÿ†¤ˆ.ŠÅãÌ ·w8"ˆÑð^Ú0ZñÐæu€Uø§]5OA¶?ïM€*XÒº¸{mÉ~­ÐÈýnz¡+-LûîÐò}K[_ÍÐ÷—E—ÇÎI}wIO<.úÔbÞäý?HJ† g÷W=FCw>'Æ<‡‡üõ¿ÚCVÃ3ˆe‚÷2lp„€ , Ï k`b|º!ãÓðg´y<,´ü86] ÞëÏ Ol`\|>Dß$€¨  2*R¦œ‘< ™ŠcvkÝ=M¥ðýÆ>ÛÌ {³O#}×¹méûpÔðÒwpéËæõäïàYå¯Õ–¿£ŸFþZÿUù{p”-ŽúÌòW2Ê–¿wFþï“?$E´í})+aÇi•ò×z&ùÕÿéå¯ì…$Yë;Nò—òîWÝ ­ÃÈß4 `×ÃÈ_k²üýù{È Ä2Á% ù#Ø@©”¿qBܬ©â¦ž.n•#†ˆÛÑaÅmP}Sk’¸‘ï!UÞ~iËÛ«#>»¼½£Ùò¶R^ÞÚÎ*omg•·cRÊÆ“?íÌ’vŒÙáZÒÆi¶¤ý>ã3KÚ¶¤}7㬒ö°-LŸIÎæ&ÉÙ )gžYÎÎg{ï ²»J´›¥¼9YÞÑ¥RÞF·ó“ò&\=DÞëM‘·¯ •·¹ o¾¡òöÐûCåí+] oÇ„¼IöÀE$l ¿T J Ûò·íñª©b I6K>óH•ƒŸÛrðRúg—ƒö4[–§ /ÃÈÁy(gN)ÔŸ…ÿ;ÿeþOKð¿úÙù_Mð¿ú¿•ÿ;ˆÿß‘üoðS§äÿÎ3òÿGŸžÿSl»‡:‡Ú{_yø¿s8þh8þïLáÿ.{¼§ó?dSç0üOûâÛ,×úvƒÔÙ"ð‚KqäõYÙÏý¶×i³ý*çðll„)?‹<MáùüÁªãL æ´nÉï™õâ ØÜ§‚à µt³XCŸ: èç2Ë{®‡µé×ð'I¿k>º%ý¸vV<ØÏ¥O]d—jÔ!´;¡¿aƒ¨D ô¿`®›º ¡Éëêñ¹ÂùéðùÅÆç—•áñÙ3,>{ΈÏÞ3á³÷᳇ö?oÛûŸ·½Ÿ½§ásÝD»4 Ÿ½Éø|õ=ä4|~溩w(>µaõó¥Êg×Ïù±¯ÅÃ"¶Ÿ{Ú~¼ÿ¬Ê¹[Ø`±±)öIB1ÿSº¸.îºx"ö³éâkeí£±AÇÙtñªNÿ;mþT]:¿;E—Þ‘Ð¥“H—ŽŽùA—Î]ÁçK+N¤'tçÂÐ"-vIêë÷;øõ¹ ú4;žX.éÓŸ ƒ\ÍkŒcŽG’ ;`O•­Û»“ã$|šY¦é[ËÈá<´{Qß~Û(ï];ÓŽµë®¾ßÌ4窆¿Óx96ï‹”kæ·ÝMºW¿G1ƒ.㣦O\€çûÝ¡» ¼;Û(ßMbö4ÿSf¨{¾óòÆl›¾Õí1ðé)Óë1ÊLÿ6SÕòO…²ô­» ß«äf—éßåîƒîüSAÝ,ïÌ/oÀ0 Ìg…êîª-¦v$=†fú¼fy¿áÑ·~lúÆSjGÃV…‚Þ]“7ËÝílfߥ,ŒnþØY €ãÁQ;¼`?wýÜ…÷•a“_Û§×<‚‘)0Ùëa.Ñp¨7]¯¥$›¡ŒBÉ7}ÝsÂýéúÃÏ­Õ€¿y¿tñy*\s›nÍÆ$¡;V.h¥‚Eºu5Åo„v6ûŽrÉQ*)Õ­QIñ¡Æf_—·Qy‘np$•ïmöãòcT>•Rvy‹7ýT>!4—ƒ1¢¡‹>Àìõ qÃ=çaœp§RŽt}+'¼× xŽV½uÃ^u•“ðáZ19î뀶 ¡ª?@‘S¯¹ ‹B-T:=î;#ÁaÔUSœE·K¯™E{ ¢$îkƒ¹àDê®bU¯É!ˆF‚(‹ûŽ6u,Ñ¦× b\Ah'A,ŽûZ“ˆÆºg"]¯9F;biÜwˆ€¨[‰aDý ü›×—×ȇ£œ†¯Á&ãF Ï2 Ò]Là‡Ã/‰×EÙ>ÊŒrI´.E;Œ$EjŒ$LW­CÀHRÄæÀ¦ÂÙCýÃlâ·KÅ/3;”&ÿ…(ð'¦ÀßYN͹“EÀ©âk`Z0]«~Åä ¯raKÓEK._‹ À@­à: M¥M›'d³%¢Y—o/·%8®n’ Tàj¹Ìn¹‘@sRË@±ÅeÔêb»ÕÚš€º§éS«KíVw(ˆÐAjhмFëö ɾ”9lêÖ·_ã–§ ¶z@W¯Í•f.Taût› ÝMÇÝ«ß%u2´b¾'¤}€àžª“³<ÛvÃ8Œò£¼?ü <&¢+ŒàQÓ×ÜRÏ_„¿Ü!…3¨r|ä})Ž£Fy£LÀzÐ]°Dþ&jð¨Ü+…2ØAõ@è)Í[ÕlW;@©&ˆ<•ìq¬}PÜù0ƒQª "_/˱~+Fʺ VNÝH¿w°n¾ õw°w!hËëÍàŽ…Ñ ÃØG¯RÊØ œ§¼fw°ÜwcôgpÝ&'ã`ùd%xôjìnÅ„ª'¡ 8­–tB+»N7ÊÆ}0žhÁBà¯1LðW$ ê„yá¤D´aˆµP^: ?'&é 0–€öÐbBŽFÄÖý’@ |D"ÚH@K (ÓV°xèÔ‡p öÑ}FÒF€Žm“÷iV‹m}ÎRét¾ç·ÉÁ7C^ô̱û’W|‚{7¢)ê—}bêmOÎ#*Ôß`„ë=ÔÂb~ ðšÌ®œžµ\öamh¥DíúK¥UÑí Îê`¸¨±¨½] ÈDJ `|f—¼Â-O¬ÈÀUÀ†|•)dÍÆÀŠ®ö<æ? ¯›ýîÏÞ§ü…±ò;Š5×úÚ–k(ujAh%í;︈ƒ¶¹@±çZE·t« µU¾ T¼‚“¯ti£ñKm¢|¥Sã þJ0w,â6ê[ß÷ë°Ö§b‘ý¸ ÙîOÓï?µûÓͧ 㦟סlFü¡<÷*ÁUY}.íÿ %‡ès¥²“ÖE×;Âë9õíd:â žü«P½ óäcž‡¤LLº“¶$è÷K;'£tïÄu¨à‘x vN‚„9|®èEÞÙwÚð×Ã>Oæýe8Yõ»qmv¦÷¿SF!æª P­J*Þ¤$ài,a™ÃkœêÞL$?¯I ¤„F˜áª³Qè —e¼0¯7ê ®nÞ©]îàäåÓ9øuÐmZ©?¾ö#ºÜicԈრî„cößôsNÙ6ÙŒû7zãxÿ·ƒZ‹û·+ ª%¼†S;Î5ëËEÕ·ë›:Rß¿¾f9²ß Ág­FõÝDÊ`.èýa’÷ßÃrL­óÀÊû_ø&£a˜÷ÿù;$”x º•§B·‡@Syú”¹Ù3Ńž%êWž'PQ“¢†áz“¯‰¼àb>FÆjÀ AÑw3Žcz¥úádûShZ2>ÒZÁß#¦ÈÊÄÎ|!ïÿ6•3XήZ„²”Sæ%¥ÉÜEð“.Ï»_3à—qþ]™°ÿÛý½:Z“Ÿû¨ ³8ÞëÀÙ(ßâT'E¨>ntAÿ]Ã|™5€ Ç’,|ÃýK”h6Ð Íj «œRÄWÄz²÷å¼€½YßÍÓ]k&WÉI»3”ÙiüÖÙ.ù”ìNËÏùzã‡@¨ï.<šÊ­~e'üðÏ`\G •ê]êµ´àSÖðžÅl¾aqÇeô™<'¶&HŒ!† ]¹7ßò@p=E Ñ’!&Ãv³Ú,ç¬ÂDzFÂm⨕WR©~Ð̬×Þm3ÁfòyOÄ‹IŠgÀ='¢îÓZ©¿H;]¬x¿8øÇè!by¾?byýƒúå) owG5•M,ˆ0F0c$ÁPÑð ¨>bÐDi«¿S¥Ó´B'¤EõÞ‘÷é?DÕØ¡óc‡ðQF,1oü›í1ÿ»À;ÚJÝ>3¤páHáL ÙøóŸ‹bÅC“EñTµ4”‹?Yt¹ Yàý°wß1hÐWí›3ɪGQˆŒÄ“ͧ©æÓô°áÛálºŸõwöäÔŸ gOb½‡h£Ÿ«³l:ÛÅaQt5lé£å½'0`ô|5Í0pº)£1 w‡òÁŽçî˜Ið_+¡ý:ÑÇ‹ómrq²†SV8œJqwî•3ênFPyoF¿)©±VoÀ]êGטç÷VÔ|µÇ‚ñ»F4ÅsϵÞ.íî*U¹_š~…‹ü‡ëÞ¤ÃûsÉ GS3XÊÖ÷‘¶%H[Û•@Û:ÜÞ}g m$9ê[QUTÞx¥X]Vc­ÉP{“Y…^¹Ö¡×ã)e=t—Úl†ŸÁ¦òšHæv‹Nå;&¸½ú6¬û‘ªàÊoSÂl›0u}Òl«0B[…òú©³ã„+´RÝ ¨±„×;Õ›@`´q‘÷múŒ‰¼ÿ5Þ0ÂFj "Éç&èÉâ bÙ¯gé,3¥vW¸¸‡÷ãpÓ¶êZ$¶ï&œ3‰Ìƒ—ëg•EW»OˆXžWK”b7rϪ^«Y7Œåó¾zžà„¿™B<ü½TU±Û'“Øe·ïfû…º× 0—å™Á¹‘½È1‘rO¦ÜsĤ&Ï«ñA<§"y·[Ä‘Må¯6à^=jÝTø…và7£ Š$§²äu)ð‹.´â|§®/ Tµ(ÅÛåâ§óåâí Û0~»4®JQŠŸnäFi©úýg÷2²[ƒ¨«ä”Á7l\÷Ÿm0ë¾Q˜Á߉ëöPVÛ¼¬è K¡ƒðŽ’ZÓ™½SªxU0pêe¯:7çƒ_JÞè%FbЃà‰qX¬´h‰rH/4û°"àáŠoì=£‚µÏî@ñŠ÷X¥J¡j<ݬÓñЧ‡ß 9Ûè¼ÅAÅÓ¸¾#z-Î〜ü‹kl¨öú&; ŒçÒþm) Š“`P¼Xó4W¢¯¬ðZ§z-LG´ "ï„ùè8óý1´k‡DÞÇXŒq0IÚãZâÕýw5O ¾ãºK¿«,ã”…¸š}˜}hôôëë÷O&îÀméx"ób\Ì.È9´ñDöáœãÞ)Šw õ+;úIÛcû©Øµ¬„Þa@L8 q9Ç7ÆULýzUÄæò⺭²Ô‰æÔR]jƒõ1Gu\rm’OA+Òòì{ ŸzËp¦k¦ƒ­¿æI˜èE·v¤ÓIuSËpî¾L)îY¦Îö˜*KÃwáÒº$é´UKÞI¥ÓÉ|Ã]ôàä~¢CosYEø2šñ éNëNX¼ñaƒ3•Õ$!ôý²l³t1BtÿB'LÈ* Hº±W“¥f^o‚~ÃUé+í ¬/«©K»H·×ÊtúцS†5×ÓÖdÆW@¹èò)hpø`øÔ÷?Ã÷:ƒCiQ„LU{a"_¯ðÖâ ÚZ»Ô€-TîAÐ)åª"¡=œ[2£ÖUV½;Û•K¡{LÇñö —IHsçΨZ†æŸú‹uÆ”.îæý—è›êGb×íÉ¥¦+v¸ñ0Í÷<;s6EíÔ•_ðjŽ¥ þ îe)JÁ®ÜÆÔ*ÁàŸ¾g´qêÚ/(3`T€A/Ù?gŒ5ã"šÃ¥û®ÔùÑ –(ý—ûŽ7dÓÈÆÍ6£5ú=¥¸Ë"åX§’ öe˜` Fn晤õ ÆZ|ħp…Óð†Øaz~=ö½ãÑÞÿ½ñÈòïŽG–e<Šn“Øñ(º=þÓñÈ2h<¢6(¤ñ(ÞÒõñèÒź'O˜‡wzG*ôñhŒ0Ý£H~N§>%êR…Žka JÐ+D^¯ÎÞ*Lî. \“ÑŒ7ãtOG01™7Ò‘ËüVn4Þ5ËgmIÍ–Ó Pƒ-Ó¯»’V õÕ”:¼¡ÝšRªrÅcÞ_êó/Þº0À§EE·tÈ•½ˆÌ›"7Bª‹Tfœ~ µüÜÀ'ëAéP—äÚÅÛH¿Úëo¯ê*„â6þZñ¨†·ÇÈ\ ‡E·9,òw¢_a/ ¡q˜¶†ÆÙ04.ÑnbôV‣;—јØ{Y.mI%îÖ±t˜—D-g€<ÄÀKa?®2­”9¡ÇI-i%¥ê$‹¾¼!Ž„1Ô¨V" ¦ü]×3óYŸ@4Óü¡Å¢ï;8pa ‚kýÂ.—?ÙN™øùð§iIrK0Ž>c(}öf¼O“¿FZw^>=MvÏ„ŸtyùL~3à×AŽÌ>d+«g.IåÏÈÌ×—÷yÌOÞåºtT¸!ºïG—ÝŽ)÷á3ó Yî#Ÿ”÷!Xîb'¤(è™Òˆd§Íð?IX@Ïžå¨å.‡BÈew‘s§âyFö<Òîyˆjè¯Öë =ªôûót:’%wd쟔=)^ŸRõ8óT÷®î©u½¡?™ç9t‚ÖÇž³ r9§xÉYÝ-z¼•Xÿ‰N1Æ"z*|—·šþè6ÐWæžÏs/y«{*ê¼þýÂGœÙd¼ú˜je‡åõc±0x%6?|'mBéz—ï¤U8'´þ"}ä\“*ÙCœpK¯xÒK”ò´R˜ŽZ;—‘Ó;§ª¢[’JæÿK)O/EaN ·µ£žË]¸†}Ù)è¹ÍJq:|IC÷wÖ+|³Sýó@4¢ób «±ÔXô‹¾‹À” —ÐiÇôÒH0D—ª+£BwÈ‚bCõ¬;ŒÍnA }R+ž‡Àì}Òº§yµå]:pð¸•o ˜oèk¥ãP—µ=ŒŽ W{1(ß@'ÑÕƒRv¢Ï:„½W)¿7·|/¿åkç(60zÚ3`7è°Ì…ß»ü–a –n!G{œ ÃmQÊ· sÃ-o|GpqÂBò³gÀ­ÑᘣÊn~˯\¼p¹Ù3ànÔáÈYb¿¥˜6RW'fÄέ†½ëRÖ;ÉBtS!¦üë':Ç\j˜’“ Sr\@šjÇ©¾„ƒP‰ZĦúÚ&oaZ¥´ÜZ7¢¬ÆŠ–ò¥7è“Þw¤4€ñwâÁS2¥ï›ÆN,ô% Óê’ñDâí'd÷% S¥>§0[[†ïˆð² Õ“E–£6ìSÈ_¡^}>Kp–áç?o¬Í¥£—é㦘+z%¢šÍ0j–©ÂzÍôzª«Ùy+ÍÙeKu¸›o_ïÐlöËB“Älœû”©U ÛóãËHø"Ͳˆ|š®¼/§|€ßò„n’vcP}wÓßzïo÷<É”„#”çp cà¯ULUÊ3J«—ã_NW¬‚¿H ˜¦ùL©¿ƒÞCý‚¹ŠC#½£§\ÿI?ã1Ïš&sÙä”xh:ù洀 Ý]îãßÕ½‡Ñ?1hûwIÛ?­kåâ4þ±ÎµÙº#AÝÅo¼|-•;§mJ`&éûÅñk‰¢52ÌgpÒFØüE±þ‹ml`ˆø/†ñc±ãLÆÅN ÝЋ±|±N„[÷’œëކLqÇÃàÄG°Šü–K0§÷qP'Ò­œ•¿+»[É‘ï3r¹1ª óÕs ¯¿÷ʤeîÍé@o•n)ÇŠæR³ÞTJIôÑ|;¿• “߇ì·:Íç…8x,¿B‡¿†;iæW5×ãÎ}qæx=9Ê}êù¶ÁîSÑ gè£õøXÿ©ž†\Œ>;¢Ç—hÿ©/>Ö*º}…xÌù¯·Æt)Ÿ…,ÍD#¿*ž.Õ’ð|ÿ½ Þe$´ç;˜ÈåVÁ@õ¹…ÅscyR”ùœõkÐìòB§9Ö8Q’ÅO.ÃáA½]òyЕÄý¸—ë}ÒÂû· çàòŒÐú¶ÎFކMh€‡¬möª‡ ¬¿Õ¼ìÐ#^ZÄ"¤)Ë8ë7XN‰SYàÚPÃ?1+úÞh’OFI üÉÒeêßOE“Á›dÄ‘ã }Ìáýßšî‰Ù¸…1G ÷ÄÌù0Œ,-‘‘%Êùð†N‡ñÄgŽ'G9î0¼°Â(²XEø†;¢œ3œÃø‘Ä âø†UQ·{bÃøÑ®|ÃL‚[Ö3g¾$z蟵 à‚©v½ýA²­g•ldG,/ÓUñIkíEèª86ƒt*ÊWq¤ F瑼÷Ú×»ØÉz‹6 ä‹TYÄ×pºRê$_ÃzGº‘YpéБ½fo â%­æÁýG¡'2álì{tW*÷‘¿á—¢ûKT Þ`=›9Ü´ˆ}m~Hõj¶×b‡¹Õ©÷G1§B,>dˆÚQje_´ôÝm5¤o3Ù6!Ÿ.}뙕d½ÅI¸C+3ä!–s³3"Ð\ ÊËM”;J )–¹çy `×FH·IÞÎI9P¾mVËþŠ™¢>2lˆúaÈúÄ õ¦ÔÿaE}bè³Ôð±ïuE }a‰Þ„1>‹ÏꊺDØ0©b=¯2ÀõŒgвò<xÂŽÝ»‡ë˜aÔób·,ªf ›.ös„ýt°ŸwÙÏ+ÌÌÒ/Q¦±Û힦BqǸæÜ+¥ö ÙûÝ=M—‹÷BºÔž&{_SŠ[ô­tø 3µb§¼ÜêÀ[‹î™ðÄ)ůÁ” &Û²;! ­Vì`ËþljîiÙ¸ æØìnÀs¼Dm¬¹ªL éUn Ÿ&Ž•¼@n°ÁŒîW°ºÁdHjòÇí>~s= û»¦áG,âs9çi¯p¿Êïò,/9 —«Á·°ÏHÞ‹0žZ$f‡€epo#@¡ä@ðIÀc„ï+»›ñ¬;à–#øºÙýF x–¸„°f"1¼ÿO„ÞÝÀ{2;·Š¯hiÆ~´÷~«·[övCYÏh™`í¬ÏàƳ§D¾!•=M’àoï_bè¢zŒÀꃖ¥TxÇw^扉ê%Ó! eŽ_™}N«LO¡B«K˜&íB-i…þY˜Ù†á¥X‚ML‚„Õxx ºla&> ã0$Ñ;…úï§sdEªa}ô øVü4”çÎΓ6Ì·Ô¹xÿÙ0ÏÂo∔7/,•ÌOÑ6 ä¹'î sð˜æ[bµU¨ß¥‚Ȭ¶~ÇP~Dÿ@cÌKž;_ä}ÿ•ú±|À7?Õ|†áå¥fIy™V©d²#V¨°²{÷“A:€[EsmUêÇ”U4²ºA,žµà÷T°ä®Áä<èo詨­+Ô«¬fçÃã\? x{øòJž«iž+ÜÈ冋O9²"9Fà£f]û6"OpÒæ@Ý•¬U<'¤–) OÅËè%(PÕgìoV¨ŸXLÜÍ+‡¿'€‰žÂÕ º¢‹2åAPEÎeO7:-ðôõ^ß-ï‘ßSÀvÞZÜc}KièÖòë{5–вJuÔï-–Jµþú–¦º”:h'§˜Ø–ø>F5ycÓÕï±@£ÈU}P$ žÏ¨sRñç7³ùËÎÎ/ÂÇv"‚¿ˆ¬/Py³WàÌòú–)UîðsÈ„Ê uÖ½ÔAšµG«PûEKß,Fç:†?}pþR=ÿ1Ëù{õüä“çûò_ªçüÌü‡ôürTþуófùµ‘̓r?ËrCõë@J8°®¨ååݺé›i©®Tõñ»¸á%êÏŽã'l&n;r´‡r7¾#PΞ „vZÕ§ÙŠÔ§?)Fáz„ȃWñk"ûbØË·{ЊÕ.`òé×Å‹)þкDø@½3Uß+Ñœd?äÀQì–^ÂÑØ"NR±\ÏÑH©8ž×ò¡zì,B|˜>‘ ©ÐÙž¬Vy/A»:‰mSdÖùþo2—©W€bç¢É~–ö,”*Wê•©†b9?'XøY¬¶*Ï%3ÔÙ„0}®ÓtUT¹¤Ó1© ‡û‡–ÐLgš*JÕ3Ì£;Æ‘EB²ç—Ôd¨»óŒ¯E˜täÔ Éž1MËøùBã`Âöåò²†7KÔÛòbHŒ‰EBnÓÀ|ÃÝP˜øîÊ-è·Z¬ñji1^ÈÉ¥‡º)MŒB²²úÄñ‰Â°à£‘þ¨P#Ce™úÓ|ýÊ„~_&<›pølÊ«†Y”ò{„kh“VK»híbãå2+É-™±qx…zŸSW¸¼×²Øé ü¯¯0mcŒsè~‹py¦5ý%êÍ(<W °b†̈ð>އýaþNŒÑ¸ŸŽ£•Ÿ ¤ùMÅý0hÏL/«À»ÄîÔîbqójG²q|½æC ð»¬%ê‘ËVþiT¦)êcf¦…Ù‡±lq„ž*ü3×´‚°g`){m`#iƒ+¾áòˆDÅÇ ßE'&€Ù»Î¾ õqIxÊ6Üù(^•V6aBö†Ù nö1½" hæph^Œénìn2”Cû&ì+8úH»ØÈ•RªY'É[±´ËMÝT4LßîÇÒ{ÚïgÜ™(ÄÃ_§˜€ª}”– /I””½ W/8e”u6 R’)}ˆ˜I·_‰w¥ãí»°fÈ ß"Ö] U¼Q/YÈR~ÒžÓ0Agp® x=ùjöl³¶î¨oámXTÍtZæ£ùÖ÷œÕô&W¨§\ú=ELiT{&T{FtÍTÞ,ü9ë š=ŸËÈMý•å…HŸu½õ¹&½t¾‘Xâ  (¹¯·£p¯ˆæBºµ_¹e;÷÷(¼µCbùã¬vy‡þâÂ&#KÕÍ®œfmÝp"JÞM÷ãƒfûëtS!ò»v—¨ŸÎ"Ah@7øå`iË:Å×ÊëÇ£êû·!f}qÇ*…]µùfÕ]¥êq£BâMk{@°£Z~ºú³YÆ×ÖSy.ƚ䕪ϙù/X*ïê#»žzûýøÜÆÙ.“ Cv€áË ¼Û/3¿áˆ,?‡Í£Í9;JØ7Ñ/obu™qöFs«Ëj*ß[Óu›Ö¶ñMÅáFG^Sñiø‹³é76oöA°²ÑðMÈ›‹ïI³’znœ‰«_=±>Y ?DI?L×Kj,ab¸.ŒG‰Zø”Øíååå½_É}­}ãå÷²Ú3ÖÉbŸ|zŠØ‡-òÚ¥6»?$Æí²Óš ¢RH‚¬=%QØúŒ’dõZ ÄùNEõ»9å5˜e‹6ïÏÚ $õ†¯¤èÑNBšµ{CÑ`i¾¥ù\CšGÇJó(’æ‰ìüÄ y~2 äùŽXyƒ%ƒ•x=šíFödKÀ¦ëbz\Œ¼\u Ëà Ó‹ôœè¯|”P?8H¨kA¨‹ õÏ/ÊýÎ`iüdFÔ×ç"‚vBÿ Þ0Ù½‘¯b)ÜC’XªR£Ä[‰oO¸Ñšßä9 K—Uª–œ;EÄÔqBþ\ø9S¼—DÙ›u{ƹñ˜”™”ÑÚ¸RýůñºÇ™ªxX™¡9 qñ̰?´Ñ‘K *Ïë':¶EßL^¤ËJ°˜Jõ°$µj£HÏê1‹;}?¼R¢òIW›-ë9Žœb5#†¦›z8ëµÓ( ZÔm¶(XLÙGÌèQs=6zŽÖ ÝyÂä2uÄeæl‚®VγJóq¡ôFæÓ+ˆÞúqÃàÛv=Cóúv°ÉPE¯Ýb³Z„% F–Ô)åwÅ=Áý»/2'Œ€™ÇÅÀ¼@0¿0aÎ-S×\jL1FHµi1!»&àë,eáuijîXl]rÍê6·Ç!µ—ú†ð›Ñku8Ó?ïWxŸ0|'M½ib¨åË!ö¤Ütfí–È›ð)wÓlèþ|€® Ò3K’› Êb§içïD¯ jÀɬ%<0Â|çþžôL¿ÕG;M`êÿ²B½é49B‚]·HìѪØ|3@ÌŠ²ð6ÌÞ–e«o›œÈ ß™)·~¤MÓÏûÞI«Ú8ãþ -È}¹Cß}(Œs¡8ÛÇíõ€“ÖÅoN1m¢+©ß&,«ãlal]=0ýÖo~.õs|ï°z»0ìÓØKÍnÀãùòÖSã©gèé—HèƒT£'vGk7ëçIÙ§r€×®!û Ÿá‚Ï/Fø Á¯ˆ†Ÿ/á'š¸ \ê¨D7PcùXÁÖEDwöa}¡ah…úD2¶ðæÝqQM\…:Ë”3ЗR êD™^Hs3µ¤èBì¯ѱëmञXìÄpêw 8˜ëÀß<ßÌ á”of¢ð­oæ¢5O:é/ðÍ\ƒàLïêKØbÔÈ;þ”Be´tý™)A¿@RŠk9ËÊÔCpñ©'vïIñ¸­[ÑAË,ÖBåZ«PšQá÷ZˆWä6¢xz‡+>ZaÙkÝ Y»oµeÌyÇ›!€$$h©þ}µ©Šw )¡1¾Hö.\öôùÖ}N¤6Uõ"n¯%³öi‹Ï(\àßW×Y¥bmÁ¡»ôfìmJ#v‘¬wäâ\ü®#ƒ¯IÁËFzÿw(¿'W:nªT*­l>´…úàuFc¥K·§YWExmšÚŸ¬dþ$+Ôÿža*SgFô‰“ߌ“Ð'¾3ô SÚÚ³ë‹÷Êvz¢ÕCý>6ƒµ²œ9 ÎÔçV¨ç… ]±uÅP¶—qï'ÒŽ‡UÚEˆ½®¨ÆÑúd”‚ªu*ôËè1UBsô?z<¥r§Ô—ÂoÞêúü¯Ìû/áM§ö;8}D¢ê/%›i˜|Ó¬fËA¦~}(ökZì×Züšd~åͯñôäÔËЖô$oÂÒ…ªs£€ÒM ¡&]¶ºÃ¥“ œ|Îp彑Ø SÐU«Ò˜Åã¦çȇDßqÔæšo¶ênà›:lÍj!UºÜâM~™ún ¶ÏËX˜iŒhêZãØºx=د󥾱ëWB3ô:È_»ÄXöH^·¥îü¨ò3´ÉXB4IÓ´T>5*yŠš2%b#cÚ¥f„) ?ƒ¨9_ýÇùرX_`S˜ Ú²•fY6&†61ü‰Ê&Ì3_‹gY·ò 3q9}²Þ^e%5q¥êS4øáz5oN÷+ÕϧDBR˜}¯ïëêÓLá—¸`64k·²Àimͽ‡,.§B¿0ÝÆóÉd…e½,a²t™09z!˜JYÆüÀÑt±âaZO´âñuÖ™¼¡ ‘3dw£CqVÁ×ÛÐŒ¬Tw߃Çû?;p|¶ÔNR$ºe 𻦇éA¢¿¶ žËÔýëÁ >]wUC~`i²° ³k¾îö°&pë…¼õ‡¥Lš{à_7××vãÅ*$HÞHr* þ(÷°²m­]މ–0²Ûµî æ]öCžîÞ3ýmý=á •­cÚc§LxJ@µY2ò‰'cÆ”r‡ô2µZ]EÈæ†„æBe¥ªp7 .Sî æiB-}çVÎZ›¤ä;ôû»Rë‰&WžïTðß©Z1˜@ïµ`ŸrÖÆùN¥‹É4dôÑQ[f3Ò\7;ÄVäýl¯µsX|9B‚/'Qö›‚©s}³2„¾Y‰ÂW>PDUM¶ÙS`®?M´7͵Îþ™à„©¿cöHºIÌe‹¹3ôùdŒƒŒâ8v÷Ë*¤øCbb›uºæBú~-®ÉÖh͇b,â›mÖ3íK°Wi'øN¶Â…c>Çov³™k(5_Î('gšhË_ä?Ì߉Ç%ÓÐ|æ~‰ßŒ‹6x®;ˆxýœÃ|ÛðkÀYùÍO!œø%y*hÆï‰úžÀo–õï÷ßQß×¹ÈýSÜ:‡~$°j‘xTûE4}¾œÂÕ¾œŸ •¾œ%B©/ç&¡Ø¸v£WGs®ï”Gç;5Oå;u½àöºNà}§.’|§Õ)`~¾æª¨Î ÿ)x(ø…ÜaJWtLZà!q¯i(äES¾,àðÜ„ïÔæ¥Ìwêg|Ã0z¸‰o {¤^‡ô*ŒYú,(û0.)"Ž øœúí¯Ì¶®s#ÅíKþU›TlÚ?Œý}½|í]Ýž\þ2VzoZ͆¿ã˜óŸÎ’ôÓfeêe·±Óf´9’*°º„‹¥ì”Ø¥€N‰£;Œ³bæY±‚¨£Ÿeê{鯔ôçxðÏÚ™G>Å¥±§¾FúYmeêÅÝá°ï§æINn—8äÎPHÁ‚`wƒe5‡ÅuãzvŽt~j†DKù XË>#žZ}7^Ng–}è½’¥jé­ì”´x½~,Ž“é #<ë7¨BùvNXD¢ð4”,SFmx¿C8x Oý¾3¿?žeCZ(/5÷ã¢8`¡Yß:ÓžÀ6_9UY8]¦k;þ}Þ±ü®á2]k+І6KtIŒþ‚0ør3MO™çÄqØœ“m?^•¥¬å£Ã2]M…-Ž ð‘aPèÇ„ ~Ç*œ!{pÏÇHFzÅEJÞtÙ Ê „ñv+é”0Ë.Ž["Œ7YWÓÈ¢&k¾L 3GaHHŽ|NA6äeP!âÃÈ"a”Î âÒŽ«´kåryƒ| =o*ò§=ÏÍ~âº?¤ ––…Åõ­1æ†R8MÐu½@Í(õ…)ÚA Ó za,R·#”oã„8%ÿjy:0†(oœ2w…œFŸ¬y‚CÉ¿N)÷É. ŽÒÅHü!dé£%¯t^øæÃ7WÕá5ÓÕ;™¯D(›U˜ ÕOØñSè¸ÚDb§;OHØñ |O¥÷56xð=n‡~ €ðÍyá›g—©ó¢0¹„™€)eÇU9Ƹßià«dù—ù7†oÞP¦r‘üsmyÂe€ÀÉŒÖýÁù—³ü•F~!|óš2õµ¸H~«C˜söügæ·=ÂÏ¢•©µQXì6ªFÃ’A0¨Ïn!„`N›OŒÍ· ‹±}¿pÛD~§õäx™Ý=¦ l¬çBÓú„!J} rŠ}uQ2ä†äÉÖH2N¨âìzãÚlØ`«”òe˜žÃ–ó¾üŘT:ƒÒVã9 ^¹»Y—Ö¼yy2Þ9 Y9á²Hµ~UMÐÚ;VÍf¬f¹#|Ëòð- ¯æôƒ€(Z‘üÀ¦û¢ä¦¸;fùÿ`䟾e^™š•?Î&L#ø‘¶Alø¿âÚhø¯=ÄÖÏìQ¹8á È%m¨ž$&îø+æ 㥜tìdxöxOáù}°p‹YéXÛ½©é€÷·#µÉÁû» ëUÖ' ëã„u~4u!›ñÄ*$³:Qü¢H½Ð£jø¯8(S‡DçtéÜpŸNÊå \¶¨\ÂEÔ¨nŠeÏÌJÖé_]”õw‘¬V›P“Ó¹ãðàþ‚íø†î Ý3Tó§©æK¢(‰·ô#¿zX®>#ù‰úk‘fæÉä[¬†ö¶ iJ=®;²q7x‹5rþUþC¤J”NÙÄH>¬ŸÙ„Deîªv4,ÂT3«0œé¥jjõIk”nà„‘Ð«‡3ydß­¦p˜uyøæöéQYA`FE7<ƒXdæè¨ð³ÄŸgŸ6ÎB²;*Z"„ÃÓ'Éþ³(ûÕØšêg–(.Ä‘‡j”Iõ5KŒ ’³g-&ÄGãÈ@Á`>ð4æxÀx…bN­1Œ¸„ÒKÌtJTò3åS.°g  _b†ÓH\-Ï4ü³b{ÍÍ”g_ò†ØÎÖˆtÿ5ßgÒŸXë…ÓÏ‘;aà+wùzݽåâ|Íé?X;¶ÉÞh-È_Xè˵ˆ_Aî/¶Y3òúÖõâv…7AîAS<Á8)ѵO„‹æ`~]WíÈ@cèDI©zíõ`{’äžìÃÆù‹:p|²&®Úrðæ›hïínø©I¨ŽÇ$ÿM”G"±-Íç=jpm ,+QWßdn$EâdzÞaªbŸ˜Ý`ü¢[Ú‘F˦ÉáçðAmÛˆ iÆ¢T$Ž{}76¨¹£R}œ!¡"h ÂúÓcÁ¦^¦“ÑCëO_Æ^Ñ1®f“¿‘^e ˜ eBó`ï6@UmçÒâàWv…ò„ŒvrK&Ìfc§¢ž|v£hj3¨À…í›'ÛÙ’ÆÇŠâ¬zûñz¿ÚNKM¡ˆ=ù0ÂVª3+á+=c­È³–C8§Æ¢>æÂÃU±B­£ç¿‹N!56õt'ú¬K­±ªëàq~+ÍjÑF†ŸPâ]X߆ÀêxJñ2<¡ÍGq]€÷Ÿ‹ËäOüŠ6¿~2”ÍúZ©âö¯˜:ı &S~|ÛÐ" ¾Ò¸! ~ûˆD¤±áL~¹žjƒ"ù­Pa%ê .TÄqÂ…Ù¡G# úör1Ãð_ ÈBT~m1Å›…l°‹Ò4òX”¦XÀ˜“Ûçj™ÕÖéÀïßá+èÏþ‹º»oö8‹(wúfǃÀ3bÚ¸ø©…ðç‚Ø?I…%j€y ¿ˆ7±Ã/â…cõwììíœåÀ«˜T¯þá5jÚ°š±[öšrè:auëßèþAà‰§£ú<“kÜDˆåƒBkNFõµ D,P•…Kát~sN2®E2¦&I•¨pÔ8Õuôò8¼”g%áuN)ïëÁϵ’>gay”Tª¶âþ­¨¢Î¤ÏèצBE_ù5¼:‘’~‹9.–^˨q©Ã)åß!Ð!ªZ0)¸?ñŒò>OBØ—¾‹”·,RžKÝKŸC¨1Ç0õJšb–7D}ŒRDú) W›1)¸2‘˜$Ñ÷òïoxí€ú%<Ö¸ÕŸSúœHúyTm•ÈØ0©jÁT‘÷ÈÌšêeôžÉóÍw‘<÷cž‘êp‚ù^Nº8xcœ1¾Õ¤©'ñËëôEÝ•óêïÈ^°–QüÁ=6`–2a/†¼H_ä¬ëz,nM, ºâ(ç¯éûÏ"9mßE±óVúºˆrçDÿဠ4Z]N@瑢̬P‡FÁ½0@dŒQ§Œõ ˜Áa DÅPúüi¿IÅÆþ^~Ù×_ŒdT¯‚çštµƒ>I×82ƒk„m%ÞÁví)úr;aÃ:׌Uï§$'QŸQ3NÝDïÆà8†N ”ºûÍÚW+èëdB9"ŠÀ—!ÛŸ>'²@#æÿª?vO?‰€‹ÀŽž¢†~;ò=øuœ9ŸR‚ ¶ã”IÊrÌîRß¡ôÇXöfLËPwRÚÅý¬bÔ¿Ðûž>¨˜]¶†ßƒ”öó>Žá«§ô²Húì(’» ¹æ\µŠ`.<Å$ýµ˜ÞoäqDåyódªYÓÌ… éô²d€äÿ>>¶·3)'ô|îÖŸo7¿RŽ15qj{<"}ð$Æ6Ú ¨«ËÑîþÇI$¥H¹ÙL}RËÔŸ ii]«D}å¤.Å‹05AÝoÈ—¡n.GâÏS¯¥úp‚>Œ2ñ®'$ ÑYl‹cû9ÿzÝ”\¨ÉwqXÂÛ}X“'‰Æ/()í$ÊÚŸNïSR±Q"£ñ7}Dãúì‹Ð(ž4h³Q?í‹Òî+éëÔ>¤gôIRÜE”´³/¢Ý/¡”ú ›¤žƒIÁn;‘Jß?ï5‹ðõEi ^Žú/õÿ¾¨þ˜&«ôùËoMŽ‚(f©»)õ^ÊtGT¦óˆ¬šóÕG `-ü$ ®øœDç=µ× i»¸Æ¡^Ix¦ôbê3Û¿7"mv¤3QN€×ôF䨴—uÌxÕMßšà½fŠš@/!¤¬½7¢‚lüVÉåË!“Ye˜m*ÅB-Qÿ;’®DòªöR‡}š`jC$áÕ•H雑 I½ÔC7ЕΠþ¢Q©mL´ n ï9Z“¢®¤—ÆÚx³Œ <”8!’Õ™Ìï&A °*L¤¤ÞoÍ’›#D|©5ÓTL¤ï Ejó“®K3ðËVÌq]ÐÜûld[|Kz°ç[î^À´`x’n‹>È‘Î9aj—õAúúóãØÛ®<¡ô»ãÔÁg©`áq}T¸$ ¦“tDÕ­¾ýO 6¬rP;àÈYµâÛÓ[cþд³§¿ò=é¯QzìyNZÔ‘³³Æ 7$ מ_°ðÖ^¹'æÎ’›ªPZ“5f‡`_xkÈpcR ?¬%Ðü*&¬æÉ­”ÃÉìÑÆQù o=eÂHÝ[r»‡V:Ž&H»û¥SVþþ~ÛPÇ µþƒBMà¹jÜuäžö<·„‡ÓÊÒä—R†=ÛóÈk§úÚUtùß3 —¤+bdãüLyÙdÛ+—ÌvàA »zU¦^—Ëâ?lÑ£kà}êÉ8M„–bà !IY”¦%éñsÓ‡t2¼1^tûŠ®²êißÙ ÓöqýCbûƒüä Ü΃4ñ+ÜÃE5%eËÔq—Ò²‹ic×Í<㸄d4Êñ^X¼ŒÓX)š¼cýœ²K?¾‰§K‡õ½nÿao2¿kœç?\›¼¨Ðwy†ð­ÿp]J%Ûõ¼É\X>޶9é¼ÄB<¡r²Æ(°–¨7UGîØ@:ÞsZƒ3ëZ ëœk¯µÉv³ñõþ Õ\Æåõ¦*ùÎ&7:snt…ó9Æ(:0}‡Õëd”ãщgõ‹>™b23+/ß·Ja«x£RèÈ-tâ%t×2õrvÐñ'J… Òuº áBN+‚ågÖ¹/çc ®CÞSƨ/tØ ]%ê7`Á[¯qX¯ ïÌé÷ºc·Õ¸¯ãÌúØ®{É·$Õ뉽ƒ…-(÷Ù ¹ÜBGmFáöƤðx¼`Qÿ©¥+®ßƒ V*rGÖ’Òð:§Ê¯†Ï…¬ DÞäíŒ ðö\ù^çP 9{!0·=üb2”ˆ?Ë(:cŒ*¸7ÀÆ*ã²ÝjË>\¦ãY¦þõÖÈŒˆ$þŽ%RSœíLÆ'bî—ô3E¡"w&ïž*ŒËPtµu#’¹kty>Í-wˆÃ@˜Ø­¢°Ç±D{ŽâÍ9ó†„sv‹qK´«åP`¡U.°‹Ž¬·ð¾å{SD‡æQŠÊR':‘ç´A÷”ÑI"‡½ZL+Üz­Ãz-µØq½ÅfYŒ;ßZåÈúȪ{‘üð¥²û·}ðÿÀ2u<žÊhã}KY{ÆÜ—уQl×ýM¹ø‰ê¼†ãnŪˆË-rÖ[-Õ¹ñ˜AFG/rÊEœT7ÙRçó¤ºL˺YRQfXªœ&÷R{ä÷äŽÞ2eÏ ¹¼Oþ€ßZ9ÙZÞ§e’wÂ>¥ê„"öi<éïÈä]l&ŒN§/£EøJõÜå‹ï†Ôv@mÔt&¢.ÍBgž†`Ððú4õ›Ï ZcbF¹tC2-rq=³¨O=øÌºX>DZã"RídrÑ6÷"k3-ü&<Û £dÖf4ƒÞƒ½¬¸†a[> b”ÈEø½î©*^19Œoâ<è÷&Õ…®6Kâé·o‚x}€Êy’÷ÿ••³þ¡àc¸_A·úV*×Ì€‡ ¼ÂÞ›—]{-òǹU=µvÅ‹T/«ÄöTËhˆn|aæ¬~,ðj+;W‚½¼·D} ºw0?²ŸR螘Ó9øG\oÜ\-ÕBƒ&“Rá¼vèkJqf¨9g(Q&牖Õp”òî€Y|¦^(Æ™"Ò¶G¾9ôo,W÷A±r‚Û(<ˆ' ÿJßKÞ3jQ¯•î0ÍÇ6Hl,î {ú |'§ ç×¹|'§ßÉiÂ-“üÿ{{³ÑŸ‘=0:õø v=.¨M‹g_Ì;‹â)l±<¦:Á~#}N¨0Õ&ŒÃv‡Q×oÀ%$kè/Býk6U·½ÞX[o¯7ÖÛ#îÝ¢üâqB”Må.DöDd£Ìw+ðÀ«l¦#»W‚é›PVR¡¾µŠE2s⩼Œ  ëÃY|BÉÏLΟ,«TÓ>‡æ¿ÖÙ/ÇN™vå¤|Öe“Ãá›á›]j3šñôÝšïb±QBðÊ‘œT¾yF…ºÀΦØtT3ªà)+[ÿ Ä(ãýä|/ZuÙ|K¥.96»yUq£8”o ®G¢ U °šË  ‹{üûj'.+ SEÕ7¯5 ä³ÊC[Yï"ø‡‘¢Ê² õ·6³ìFé 6V ô[H]C·¤ž? ¼º˜ÑcPÙ¿ â±òfŸ·?‘÷ßÏ8)Ýšnáð¼- òù`ï­éJ~º¼'ëJÛJ„°Jä@ÝB²DŒZ$Dj!ŽÐ‰¸ð(Í8@˜¨¿ÖSn2QX- OV‡µ dá<9„÷íP«ôj£H6yúgѰ$$6Ɔ7ŸAÁŒ ü×D Ò·0å\žýEÌðô—Tªã¤ãP*» ïÿB‹aú-$Û.dwˆee)§ºÚ². ?‡þŠÂÏáqEõžŸ²’ÝЂ%õ§±îÂ}›ûcrjÍEvº¡-G~ÆÁÚfE¢ˆ^ôE‘ g,ƒ¶­eê‘kѳWôu“À=Sñ™n©´KSmÆÖ×tói†ùdÜäaWWŒ.{æYoÚ+päpbFE™á_·×ÀžýiêW¾E©êCŸÉÕ2€6¹ñÔ-Ø}ŽÁw’¼t‡ô7ˆÓ®½ZÇ{$––©Ë£P7Pã'õrÄ> •µ\V[Îi0NWÀ«½ÀÅ‚ð´~ f½ÖµlápÝã1ó}¼GÏå©á}ϧ<GÁñŸŒãIƒ‡ðOá6ïOÓøýydüvKuSñ"H¹Sz¹„®sefïS~ƒšg -"-åÎð_1MÍ/&VTªï.bî%¥:ÎB4ÂSº--âœ+û°~C ú²uý©×a†f®Po2/9½«Í€IŽ6Íç Oû ã©9™{á—Y<ôR¼•¼?å?,>> bíbÃŽw`èAî©ØÓtCÌ6M5ŸfØY·C"+˜£,õâ°@‰÷o²ã¨i³ ã¡ìL¾á"yU8o˜Ìž.ùàXý‘oXj§§©â%¡M8AÍÎawN_à·Ð>œŽÿ<=ß0usØÊoþÚBI“ÐmzøÞÿ Nç`jQ|š]r׿BŸh*>=³8,¤±¼x§<|'Ý´ßÌæë†Ûòì_ñY$Æê*£6yÿ£M`:J˳0çbúŒáÏŒÇeà^ Ö˜ˆî4ñþŸâa]º\›'íbá‹üx4Œµ¾3?C`˜QtÃþ'ówþ“Õ|2ïÿÔ¢·HÚã±ïLâñ„ E#ÔË`!¼ÖY¢EÍbP#|ØÎ‹²[²ç’Dx'êåœ>æX ]æÍ?ÐÆ Ï(Èý=m<*oBo`Ô\•ê£èæ#¯…$‰ëH×dÌ@É@¯ÐáóÐ+4HÄd†š9•jã\:±¶à¥¦=ˆpÂùƒ¹û×£¢ S0n€Ã„g­{^¤ËL§E Ø-&ÃþfÑ w2g ±Î)÷³ˆ×z OÞ„‹Êèüh“¨€ TÙ1@,Ez2ˆ3ˆ¯‹æþ=†Pñj dtð#Úåè=\ü‹BE(÷#.<M7îëá *"ÕIdëGº:évÇÁ©¬t¢U5×)_ Ï:¸ŸËÉWrÊhÅ*ÛäQÊJFÚœë¯t˜kkLIHuΡ¸–s ­ÿ|:}$YkWÀß8¡þÚ„ÅʵîìPîz—w.hb©å;©/i}6^¦ØŠ^ig Üî±ié¸>Ææ{8Ý?v™ºÞaà ÃÆ]1c¢²6¹K¬½N˜æh*±7ºçÛñk‰ ?Ï·E}ŸŸ€yá)¾ >–Ä7àü8‚ئù¢(áG̶*§Të°ˆ|;i¾ö¼¼mÑnn‡ÄsÀÜ— 5°ÑÊõUlÀìíhhópþ\æÈ­pxÇ$­&¬uª­åQ :g(”xÙŽ6 ¸ð:Gxážý‚*ÆØufΩì¢Ðµ^G%Ԏ݇+ÑD©·~Á©2sÎH^*Ô5/B—¥8è‘Ê2ö˜W¢z O È*ÇÞ×=Ûd®­ŠN:Ì(&ÂTvÂBÿÁÚ¡MC‹Ã…4 Ü̽Âü¶ü6O½Ĭ-™c6ÚìÏ™Ìu juÆ<Ù£nEÇè8%ˆóÝð]ä¹ „=öàsÄyMåáÆòÓ1¬%67•ŸžY;**I>A€pôí˜L¾Båÿit¹½46ùoÖ·“)²ó=•j°Û€úFČº¯“®d$•¡<÷*ÁUQ}.v¡ïƒ6BŸÒÊïɕˢ ˜nÏŒ8ã«.>¡VýÓT<â ˜kf0ÿQþ*‡7Ùi‘Ó.íî*Uwif–Õ6tì™kß©P7o7o;/ÅéLìù†l›¡c|ƒÞAq.Úœý¾+,Â…ß_ä¢<œÔ‹4ÀíÕ¥X•_u›@EY UîV–N•‹UŒ|@æÞÉ4ŽÉ!°â0þõfükò'Ó[^?YíÚÉÏ!õ'ÕM« h×ë3•âîejñ~³Ÿ¡ZîOfÖ%¡ï˜qAt5(õ'ó ÍôàäþˆÓ! &‡*ÊÅï÷B¡yõ€×äX£^O¦ï…ÛÌ"â± ”¿3ï.!´ï±eñú¢/LXŒÙÌ*ñ•¶^±š¹´ F Ž?©ÏÐ…eÁ?XÌñÜÀ9Iý(1¦XÆÉFÞʧŒÎüËüÿðâJB1Õø:Um6¿ÎV–fZ‹»ÃÅ*ﯥ3PË·Þ>2¤ö’pqïÿ;žC26®ºö%Ôz˜w&÷n¦$S쇖1±ý.ˆ=ú©l.S·Y O kÐy…BвI¾1Ðn™Ú”¹Å…¸$=jÔM˜×Û ¦‹Kz"¹v‚á#mP ÈqÌmª6ñ,!"ÅêðoÍôƒk†ˆÄÃ2¸e;úÙ—$L©s`ˆÈáÚÏš1>ä²P»Úˆ)öT¨™/2éy{ {…:k;KI)#Ö±}3£×‹°(ú~|»Ù¼M½nuöP‘¹}¬Š F”H\.³Ã$Æn{ ®5< ­jD†¼PÇ3DÝt/£Ð³­ÆÜ˜7ó­ŽÌŒ#ú:“é¶ì°®ÁHÇI3O‹?Ë>ˆjŠw5Ù¹¤¹¤N<]t„µ´DÍË3ô£û» 4n›1sÿ%ÚcŒ?Ì<—°@ +Z}ÞÏ®€¿™âëÚeMåŽòq£çc~×]9ø]v©¥ }9Øsv‹ô‰¦ýõq‰jûÜPómó|œ¼ ù þ8ƒ÷Ï 3ÞˆØRõÝ‹ÙxÜî8‡âÔîÇØcd(øß5Ÿ˜Ooœ6Âf¶û÷Ï¡vÿk&D‹þÄHË#èsÂÿ)ü-ÁsòÄ…7¾6Eg‡!xñóyÂö)¤°‡ yÿZrúdfF»Mh˜*\„| ƽ&‚u4Ñgî}~W‹Ô7”ßüs{q5èÝÆ! г‘ñ‚Îí¯¡óE;‰#¼-ä Üw ©¿uÌýµ9apO»ƃøfñEË–¬yómjÆQ„ƒ±ÜÉxF¹òïð9û0«ZóÐÔBªŽ‘ßÒ‹CÜïÁÚ¹¬¡0ûYh’_À¶ÉÅж܈wŒedö(ÌV¨äÀvø›Ï¬é>ü¦ d dб¿H¼Rv"tc‚Á}š>÷¿ùÊä>NYsxåAÔ¸£%¸³™ú嚌ÀŠÌì}`ƒyäðF üËÇïºB&Fèý!úúÂx6TIñbVºµN ÎÕ+3—ß•£ge!qÞÐCâ´ o²,MÖY6!kI`'ÑEÅI{Jˆ–¼ì—öSH#ç²à¨ nŸŽNt¼Nß](–œ–„"ú(>÷âÂ"÷íÄvȹ}ºÀ2ÿ…zÈv½E`‚Aíä]؉M(ï|¥pÑ 9€ÄóU÷ ¤V(›B üVn–•:%k%ÀÚ~v’Lï… ïÆ×”²é 3®Y ÀE™2=I·ƒíâ°îÓßt[ÉVa$ö(è'åM ±Mh½9À F‰ ,æÃF^ê÷À$ÄÝBøw ÁÉ;Qq(— o’ïÄ<öÛ3ä[}²Ózs”‚L¼f>Õ\?w.Ó8"†:“ï ¼Q@ˆÊj„TSÿÉÓ±1M[/B]â06ZpÂ6ÀZkSy}¶{Éòyÿ¤m†!ÚÍíñÔƒn`þ)h>~93<`—pþ‘{jao­WÍœ#¼í›9YÉú›þmº‘ÍFk_ùfNøÜè›yŽ ùfNån!Ë›Ë@7î4·³›ûæ“ã»Fíþ´SºÚ…Ñæï…Ádªç¤¡¿»OšX5ŸŽ™O]úST$˜ßÎb«ÿF([T(— ŒP.‰z(—±Í?ËEÚEÇIÐåþ¨Qìà‡þanàŸÝ*œø]&ozéø(®~œ¦Ô>f¦²[‰Ÿˆ³DÙÏ Èáík#H?’`Öó÷#lë׸ùH¤š`áïkå·µÊ~Ë)l?¾NÙQ^ŘkÃhýÊP¼Mˆ{ù;¼PÏÁª|“ëâvÑ8NçV( ±üÉÿßaJÎp=NA†"þ#ˆf®´ ·çK;-DMÃyfùá5ÓÃëà¿©jÍGæ¶—†u\Z¡–=€aX-§Œ¦J‡';=¹Ì4'>eà“ãQuíþ³qÝ:îÔ…£å¦¨òùx¿T&¼ÊP2ˆVçKžS&Ü:ä‚ÅrÀù:ß]ÿ ºj’X–þj‡W,°Ýß§ å±ø²ÿ9áÐ*|ÃoqÁ-€H톴l£«œÛðD’ú84~õÓ$3ÿ<Ö}¢ÝXý,¥>b˜@+«·QÊ>3e~õJyÑL¹´º…Rž0S2«Û)å3eXõ”Ro¤|¤†A¼ÚYýÚ~¤´D]i€ñþN¨>õírÅ0†w<¤·mÁV„ü!Y}UwTñŸSñ¶³ç'¥UýUTގѼ!ÊÛf¤Ã#¤Ko'k‹±½ª¹g"$þÖ冯BÈŠ}á¡g<°Ò«f—Þ¶‡ ¹ ¡Ôl±7¨Åöb‹}ó´ØÐg”ÜÃF‹]VUî¹&Ñ“*ªg š° Æœ “Qop ¦B›;^@tÔ¿ jË¢Åã¯Ï‚7ßÔ)ËÃëJÔ,í|*íÍŒÒFW_H);>0ÊINcñwÞv…â­|ÃØ¿ Lyáu³ÕYÌ1¯zeßh ¥·ó4‘ø—U« üBSÔL'3Iç,ZªžûL¤±¦˜ô¤U/¡"F™)#ƒwâyi¦Ñ/€ÝŠ™ne„e˜Ï¯›§6vBݯ$<ïtu¯¨¾>ŠÂ—: GHog FnÕ¦Tß­Ðâ𠺾~õ¶Ã¤È"@“g Jçþn1ú«#V»ŸêjÖ55‚Ëèí6溹ú¶¨òƘÔ9 8«E[Gc„ÓÛaÀLVXq¥ŠŽòÝðHÌwŽˆ>±CÛ¬­º6Šá/w˜ì­ÞD¤=i¦ðÁ±vc´D–„ m¾¡)J.¶Ñómxç\MÇÚåŠë;ŒÚ8k«/¬¾3ªŽ—uDÕÑÐÚyÕ÷DÁ ï0û¡l‹àr MBkqD¨0Î*Bý³¨þ{°þèÀ¥p±*ßÞö l,älF'â„„Ö'ð£MoÊ…`Ù MÑSGI;I}×þáˆ?ñÿ.ÁÐë¨ÃÑsæey°°ü@ò–÷p‚½“T¾ˆ'“PNVI}b*Pdxi'™+Å¡þwKM˜KŒ¯S•M ¦™ PË2’0ì2Wÿy¸ˆ&‡*ªÏ'ÿW»Ú¯âÉîȆ(›^Ó‰ÄñøÆ ^³UÉ À6Ž ³â£ŽülCÿêŸÿ¤ý™H;ñw£sŸSý?”rôïF±£+ªg!®ˆëË8‹nÒðZoRÑä bz‚P—"n6Ò<`➨†›LÜ#ô8{-€ûW†þŒ]Èc²”46rh”+²5rÍ)$%¹κ<…lŒÜE‹ÅK|"Z9$èâDön‡wìÊbªrê— §26Î-pç쀘 ˜_"1qæý>Óf‘>ÑäSÒQwâ;ò|7µ¸SÞ S}d¿<·€ox ½ ì$ ©,«oþH[ði.ŸoÕÈï‚¿F}lZ¡JÄý>ï÷£—R¡ ^ž¿$Ü!$Ê»•Â4Ù¦¥ètU¤‘ƒ˜ûè…j—Ø—Lµ–çºëwý\Ä ¡óGº´sŒ4Î":MqÊi<; ú#I6†?º²V+﯇êô¶ã„I(®>‚ÓÕM÷Ehévéa›úÂâ° µÑÒ1]ú*p÷´ô°òûÙ-/açÿæzß‘ß^ZQYª]\¡Ë”nåNWowbPŠŠÊ²ð ˜¢ÞpYìéÚÈ fë–è(îAnRev¨œ¿XÚIsQ”v’R3ôŒïœoxi®Œ**›ëwã‹8C‡}";¡BO+N´X*ª§£]° ªøšM÷×nä·[ĤÈXÅj†Žø†dR£ç\×:£(ð{I{Ê{ô–&@~ëëòB'{–ÈógÈ+fÊ­íù™ÈÏöüÉä6…õMx(ˆ¿ÓϺ?vÑÙ³ðx+w™ú^91ºßp>yƒv±š­u`ÍèhÓòlE7Ÿa• «v1Â(FYh®;CLÑiZ8C>`Hj{Þ 2Óóœh·ëí 5'2ê§›õ™Í)…Ù ÑrSÛóѯ©EÍ›BgôY¯(IÇúÎ&«?‡‹oþN;W à°¹L!}Q¢ÐÄb™^ŸÛ'ÑTý­õ|}1^0{CªM‹T&OL‘vÒYä| S}ìƒt[ ¯Zˆ…z œêÝ3£Is±Sþã >NI0ùè|$wNp?Ô,‰mkè¥ ^e®{â<…‡Äté¶<<Ý3Wºm¶eÝli ŽõSt¡˜ :rLGű:p*óð?Øw¤ Bš²2ÍøªÄ£shuÍô +úÄ'c×Aò(66ÚãQg}Û=Ýì‡` þK!Vž˜„.cœ¥ä¥y>™åiÏ€ìQøo,¢=nÃ/tÑ}Ž7š8‡R®*ÞŽFndØóF‘ìíÂöZÜ·¦XÉ¥êˆOÂÌÃÖ@`¨¶eϹ¼Ë^ud¸Ø¥”¿X>”“Ëß<ÝV©¼ÝK*EœÔ2³»vzÎú¼º1+çÚÙë2ñ|µ:}:¡tV͂ͬר…ï9·äñw•A#‹‰9+gó›çcÇœuN¹ŽU1§Üsg+¥y¥%êØ_’„±cVÇ¢ö"CNô~*{Èåï*å'ø­ïYáÁÛÇoí·zßU<”òwKÙɯ_F“3ìÚ¾VJ9ÄUéP<ÝJy\4O®œß^Ä„¿ˆ„?pýó‘³aú¾rôa.ü·Rv‘'Õ‘Œ”Iu #Åì„ÊÁ^ÆP.ŽÜJÎ{޲Ô%›¸$vXPtHEó¬Rå|Ë\€Øx ©)â´îú²õe1غþ¹ÁTõDïpcíÉXÞZ¡ÎJ0öÄÈ-!uqJmšÃ2ÌT—\Q}!±Ç“ ÿ@/šåvs£l­‹`º<³=ϳÒÞx †"ñÍwg…ÈA÷æØbU†à®¨±„_À ê&rOîÔ2šaì±ôÁØS©Æc‡()Ó!N¼Ž—Ž‘YB™Jmq”nÃg™B¼oþˆ<Yž}:ªë3ñCLØŽ£·Gh{‰ó÷sŒ2°©0Ú4vTút·eÙ·ðš4 ã8é/NuÈ ¦‚ˆ º ÒÑ!¥¼)æv“¯ÄÀºÅfª§_¼žèé5Ž: ŽOµÊ‚§°šð´j\rSë/6¯‹éÊp˜^B2” ÕêþÈä4µfbäf²ÑŠuÞVSGì?-º¡U­s-6Ý£v®ž’m,õ'&Â7Z[M€\h`míÈÿ¦›ÅôvÅÞï2bmÑA¯‹¸ykGÏâ– Š2\`—úœëc,0w ¯írZ¿ IMÌŽŠË'ŒÔÒÍý»(wì ;paP‹Û+…Ûº!z1õúx@ë„ 5žœ4á‘{mD‚uýÅÄòšÓêÚÓÆ’ßbŠ _óºÊLÊAfŒV<}YFYÊÔ|óóh£ë%U¨¯Ò‰p$'D.”èwÃj¬5ÔíÙ‘[k|kÂù/@EÊåPûÜ먯Ï]Å~®f?+ØÏÔv;°Jè^žîîI2,B"T Ä^¹$C‹—ïÁ/ºlFûÕ±#ç7øMLƵQr Ãó¯ð7ge†j1~Å>ü:7CºÝ…ζֺԫ³Y'»}:%LW ×QÂuê,–P¦fg뮸H2ô³ŸEó”Êù±¡ÖgÊž‚±ƒ¦¿øgº¦gß#9*Êà«õFöC²Í€1ªK.?¦xºpèÁØîÅÇÀ„³ŸPÊ»h48ˆs‹2E NŸ[9YL ¥Â¤oÇÒßá<ž.Í$VªÉìðLi6îvžŠIG}[åCŒH©Å*´DŠþF^¹¼[¡è¯­b7}ÈZÞ]©žw…æ>HsªºaŒÌÌ)V×o/böd³'1œ[Ã6¼¥£Ïú_T`z$-¾REKÝ*ª’L¿mC8 ÿ §’iÜTÊû0ž^åx}èbålo±ÄÜŠà…²ÿ=ÔãbP‹Q¨›s‚UNÐ!ß§´ßsi›}u[õ—m¶[Ú ìB[wóÃUWRªa±Pì1ßíñaIžovz¤ö´Ù !×RÈUZm'h;@oCè8‚ŽÃ ºK» þÌÃ?ùøg9þ±ä‘´/£ïq¢Þåðníxt¾ÇPÊÂâv‰îpx.þL×QF¶ƒÓ0Å¥l©íÒ€žMýíök)rHïþ žø¿’º«Ù‘ˆÃQÛ@÷fÄnűm öMƱ‹öM“Í'#Ä@;]ÖbOóɈ¾F[HÓŒ-$‡¾…”þC;HJüD«éìŒqo›g-¦à0ϸÿ³Û\d§[cÞè1~ZØk~ê'õ:ÏÄ52ùÿ ù£ìƒoƒÛâÀ,!ž,–Ñì²s:‚áѲo@çÒJùdó7l¡Šð:eÓ+H±%wîâZ(àÌyt+ä¬Çè£4Ó‚eOÂOíøi5gxÀÈú œ?O^6¿",> ^Øo’žÇ($3æ#kÒÔ¦­ìàÌÐæŠê ˆíVÄ–F¦WP…‡vU•…·¥Óª~QoÝW«´>´{±˜uñj©–³xªÙˆ'ñ`uò 0ÞçbêLŨDr(û°–]Ýk^ž‡JÔÛö˜ë§Õ3´çô.‹y>H÷ÅŒLû,«<<)-® å´ Sü‡aR¶jäi#Ú8T±eE‰ºÌX`æW”¨B-_ê·Š©ˆfþHk{¤òV°™Ç4s¢5Bg]‘ëuŽ Õ½],¢kŽÄC7üXÂxUà–v ó~ÜÙPv°°WV›(’/éÞ"w¢[¦¸ø­Ž’ðZ·ºûMã0Ô„à~D=¢{ȧ¯’Å›=¡"œó”©M‡˜ì†xÿ}x`¾úRäWË_€_›#÷äÛCÅ1eÕSñãcø‘N׫˟Õï‘)kÝÊí. =ŒÇ!›C¸æþ+–ñ“½sðû“YðhnÛ[æa²þÈa2q˜]&`ñç|ä}P7Ï"\#yÆ ——¡Ÿt×½¦È¾`Õݳ#¸åûï»wÀYë„¿éød`œøŠFELT , }uÒ2õ¿m¦uz-u„ù±#8`P'h ¯…Ö¾¦¸Ô†RQæ”N9êò¡ÔçFÕýÆ ‰Z}¦zƒjçÈ¡—1´¼c.\/Ö½Ùg= ˆzX}¥ê´»éÐ:†´WYU«ÄûsOƒ¸ž/£òÿënª©¶ 0·“‡âñ:üð·»ð²Å[$|6ã5vý½B=_Ï7´FIÝm\°®Õ0¨¿2 À+¡Ù…\jòKŒ&Ÿxö3vï`-Ÿ¢Ÿ÷a'íìkìàCï¬Ù¥¼ÿ¯ß±aQ1lÉo?CÛ§wÁóÃRŸíÌðlãUp?¶=J±—iÙ$+5õï÷™¢‚;p £… $\ÏÝm j·2õèoŒSž»ñ²›qwíÜIlàÒq‚ž¹‚<9WîiÁ‚ó Ž­rB¥£w`õï Ý“XV¢žû'l¥öר‡0Î×G_32®±r _ÏÚC!ïk§§«GZÅÑèj[SÁTÂ_ž‚RiÆŸ¤V’åR`»Úxàθ0RÆpë'æÕÏ^¥£aPíºÌì–œï8vWÄ7Û5ULÁ»"2å ¬°æåtli_¼LÏíw˜Æå¦!y‡i\Þá2Ÿ Ó34—Ø“©ˆìÏàÍ6‹iwV=€MÏ7ÃìzÛÀô’&4|÷Û©]CñVa&|M®b\—ÊÂód?…€¿À»· ]}ß«ìÆU¤^¥–¦@èðˆ£µ¤]Ý«3³•ÁivªŸS½¡ç+*úp×oÍQô+[]Kê8a&LºUõô¦mÒCë :ÖË“9äë:kawÃß$œÍ¨cq6£ŽÇ£È £Øõ®uÐo¾×<O1j‰Bü…‰üÅèµÎq^~]½téWG1§™íÈ"#»I÷ªR Ì+âÖE—7²;jSõ²b|ôõ/ÈÁ&K[­$Ë,cE©ÑO”¨_ü’H#Wýzÿ¯ÀùÍú´ŠR¢}çZPjÕû›ïð›f`œäØ×O`‹=Ø%+`º££¾KG ‹¤àÙjkÉ ÔùŒhßÀ[#÷ЦFÝéËRÿøœ™£Êj^E ~daçoõûhG™Ö3+hâWL¼ê“ú¬ü¦§ÐWr!Í'×ñ8¼ï;Ýß9ÎÇ7Á+«?›aÓ˜&["ŒO[_Ltÿ˜Èªó߈ÿ¥‘ê}³í°ŸIúêv–4\¿¯Hlm»ÙÒQ4·F!£Å·‚ÖbÿHCI“Ù$ÀGþîèlsý~÷ ¬Õ^aHõ¥lŽ1¥¼‹éÑÜ’ü]/à™ v)wîŒÚ¡Jq×2õö׌¥›D˜ü¡×çÈ2oÌÝÖ*‡1õ«øá©ßS£€Ffÿð °]šmDì¥0Zs‰™®Ôf÷ô‰á+›Í8Ã31\XgöY¼W¦îÛrÖ‰aÒ¨˜‰!ØÏSÊÔ+_0?´Ð2=Œ ¸µ~ÁÔëƒx´‰¾ =C†ÕHyŽ&‘m·Ú²CJÑvJÌ-šQë*cëóßBNÙ„·ÝÈdbC™úñó•7Èϱ$Ô]¢ÈdtþnCJ†Ãdô~@¨å–©ë¼4ÇËþaΞÑQ>2Ç+/Ç‘X)Æx.#Ú,Ój’j’ª-û“»,¯D>ÐÛQ¢9#I%¥ê•–H<뚌nðù¢K#?Ë¢Ïyj’kø-/òmœùÍQãÂo®È7›ñ-â¿£ØÊy{­KÞ›}°WLs³8=çí[z”*¿íð”*0B]­_€·ÈßRëÑ÷#îøB¹j`Î,ë¾Ò¦ýu:ä1üf½}z7 ìóÊ©µûvO2àüûÄ·!­‹·Dû1ü x0œ¢Ÿw2òi80å¹m])P‘ëþX†Ì’÷÷vH-½”–h#‰žA@%ËJÕ›-‘ýªš<8Uu3XðøÒu‘ňÃZ3‚ññL˜I—ÎÏ3`ì&Œ¾OZœ¦T¥ëÞô´ñŠ˜!÷¶†Ç£[Š.7“—³]¯VùP¸83·Ê¹þˆ—[ìXÿwÅë®ÿO*bfV¯ìPÊÝÈý¾¥ð ð â¿×¥ˆ}îË e±¦ÎábøTÔJtþÿuºæÈ*vŒªržÞÈįùºn³=bò&î¦2“8yob‡ø,oã.·˜žôÎØï&ÿsÙ‡i9—ß54_:5Mtì¢+}iÍÒ©)â‘6™Æ7î·«ç@¸ÀÜR_âºÊüÖ¶¨õ†NKdãáÕ+#ÀÖu=rG”W‚ãWI0Atÿ“*Ê«“vïÓìÒîrGkH·1bWÕÆ×ýU!£çÝÀÜWÑx#ÔmKçD^e³!Z|Ò×oAø]ùõÖþñy²Ç!œF7i¥“SÄŸ€é^…)©ð0òÑn¡g€øsIs,"-›‚|7»6kÏP|K×*µÀL´¬o ýú ¿+‰Š›+—;ä½ò:훢²Þ!¾ y{×mU<}½Ÿé»šå´Ú iüÖv«T¥¼;pý‘Èš¤ƒ-³1ù5È˶1c¨±îúÛÙåw !b #”ø‚äíÇûËJÝì'g+ãœæÈ~)6½ýß((aPAfŒ-ŠåwÅ?ÂïÐèþ˜ÿ`]L*ûòÖ9is·uŸt(¬%±çð â¯x ^®õ3¹n,¡ozQƒE²×A(R¤¾UëQޤ£–Hvÿa ï7ÒÉÄu÷±ÄWD¿t2nÏ Úè\D÷*}ûÄ•ª÷:épåeÊ%ÏÀ䯡Gȱ`$ŠÃq©BLÙ®÷.²(žMJüÕ.eö—U˜‚À)œÀ€ÇÔÄãžÿµÛŒKÝ㈠Rm‚Ý÷†«¢a~ý<ý¡“ŸrÁÔövÎÍt¹ =ày ¦ÖØÕ‚çt_tâE«%ï3/ç[´†“¼n¼kèyC)? Ì–Ë@ÓºáÚ©ê·¯²Qq4H'/HÓ`fÎNGä‘}rý½PåÀ|>ožJTK(#î@Af¼RD.­Æ!å_¿79.º_¯B÷ÔX‹[¦C-^zÖ‚Ñ£`þOj;öS3^·èíãT•«l^,ËfuÀ2@ÇÀ¸ ¾ºœ JÔõ1”W˜ñÉÂêà ¯uaMÆ?¯ólcš\Àµ°%SÆaÝ_¨úËå:g¢ôâàt¹ŽÚ¬ÕÒíèS²Lbaµ˜`¢ä¢1'©£cFîí{¾U©u¸"0¬ÄhAî4ªØ Ñ¡@7éyPö“ËUÅs RzWg²ãÇ`†:ÙºG)Wù­™ÖCÊ:Ž@»åò{q÷ðª@g_8{øÊ<:B1P—,Æå÷­GyÎ*[†ÌŽîx YH'¡ÑÚ Ó¦Lb‡}íyD»¼×¸RÏì#fÛÔØÔÏá0Lmª§YÕŒHZt;£´Þ÷ êò<›!$³NÏü‡3~ÌÙ½-,ž_íƒÙˆzÞ•Æ1X¾DM<?†Ÿ5§jÃ'äò£ø±ícË›øLD® +hIÛi2d1l²ún‹¥§N÷×)õ/Ál7‰¿ˆÊ6š p]““‚û­Ñþ¨1¿þˆÆf>Y.wÖ߯=øàƒ£ÖÅ…==Ú0¹CêâÉËšI1ÃHm €æ¦ïHýˆ×k•‘\ëIýÓÅÌ"­@ÇW쬿•}RcY¦v¡žâ@³Ô®û$*£^R©ºÓ‰*éw‚‡¥¾Qëãë?¥¹qÁ+xºšcœ›&8€±â8˜ßc‹XÁXUŠ»œ,}ʸ°ù¢0ý¦_X{oL7»í—ÕÓƒK'êÍvfŸ{{,ÂÒ€§Î dæé¶ÅÓãoñÚz;Jðü¶Ú?œõtSïBö`ê2µg:C¾—ªN=Î:v&.ã¢Z)3P s-§2—CŸ(6°i—©û†[hÊYì”­ÚloI6y.‡'Äm±>ÌÈN.wHÞ4›æÓ ¹i8Šê1ÔEèâÕ ã1|`áÃPd%àžÏµžt×N -’ú“ø .ïÍéà-¸Å@a ¼Î¶„%mEÖŸ´Ù–hÃÙü¸ØÙf]Жo]Ò–o+Do“{컆FÆÓ6{FÁñ¤yAòvYÄ1·Ëæs¨Í>¿·ÙÁÒ b `êÈuêgõž.´;OWkg÷t)Þ®×àZ൵Ï%{º|ׇëÀ^„{7f6QO‰ºb˜ÞD]–Ú‘È„!¾¬ÃVJeþÛ¢’/´R†°§+PÞ€ Â\@¸CJËJÕF•袸Ü}Ê®õ´»þ3äSý*â’o~¼«¾ ‰õ‡j'É{Œþ¶ˆ ¸‹ÙHÚתŽOÜ-—q­×÷Y—øCuG)ŠÆ1†/Ìâ ÿ÷#J>TÍÉsÓíõ?!ìØuè€ÔkŽ%âáíÄ»¶)â1!!Â@˜ŸçÑü6ÁŽ|¨­Èõ«µÃDHÞ M¸zV˜|ˆÅI}9µã [`.ù·YtÚîËÍ©uBÊ|ñ›6{6ÖÒ›–DÒ”"ºrˉÉJñ1lþy|x:0Ù˜ó€~TæerZà¯ãˆþ:?LÛÓ¼LYœéP–qŠU_9²[‡/ãôÅ;áw«¼Œ»`Ë”«3Š])ã¤Sqƒ’v!¿s¯tÒ-L¹%_ ºiRÂÿe÷!µ¾u8ô¦ÖOÜ‘%‰{aŽ*‡>rࡤ‹ez>Î\iQ’å èí<ÔUĬ½1™M0ÀÁïÜE.¾åÈÁÿåÀ¡/ê[/f¥Õ¥û¡ád;–E8ù'v#Ú‹ ´ƒ¡'KªßT@2fæ×tƒ_ƒÖ/i fÏxéÓ®2u_•>ÑG¨—ŒCCèÅ*vÿ&©ñþ5./¤ÃŒ÷ÿA¯]Úm‡QU 12¶r Åæ<±§„ÈZ>È‹Ýã”ZÆgv‘¡6A¤•ãæf©›ûmçÆLR©XVË\fçÔÌÕðfã_lj0ç™ÂÊ]R‹Cê’t•Âe>Æ‚u|ÌÁ9Ùƒó1{p=æF»§KR™]òkâw(âQü,CÎGÝìÁñ(¢(y1–ì‰:;?x|~9«1^¯ú>º?ˆƒµç›ø<ÕùRî¸ýz°¦_ãêûëã@”Ð}|Ý‚ú~/½Ýo“ëûñ.8߀¨ëRêû_€7ᆠÕ®ïoÇ—ëƒíôRG¹ð[Ý‘K¯ú~’„u™õý›ðé¿Áø´,xlÆ—åä ¨¾_Á—k6–×÷oÁ§*í–í¸¬@þæ¶çããõÛçâÏ5rh{>”oŸ‡?Kà݃ží…“˜¿¹íEøpÉöùøs¼/À‡‰ÛâÏ8x_„©ÛWàÏx¯Ä‡¸íyðCL+Q§Õ‡ÃŒŸ6ÂMÇìyJ3n©I»Ýr3ºøÇE‰Ø=CgvXÚAÞük‡*“bÁ‚c¬Ñ~þƒNÚJ£0…nÂo‹‡iúÑ:éTºps/#Œ±ç9Neîu)À S¤iþuówM3_¬B‚$¡ov§B¡”B—lÓièdT¤<×¼ÃÂì)Êž¯—nã,B²2×ÁhÓ® +ˆ\¨d¸OhK)ꂘ»Lݱš]aÇÉAZp/mìíù‰™Æûc%bœ/ÀmÒÑ:°ÒíÒçu¸|€ñBá]êªã_u{ºðH^ycI’°t*ß|mèß7€Öz¡tXØÂNNqX0’æàÑÙ.ÇäÀ‰V 9ý ·ðµ›csÊ©ï?Q(õ%C› ­-ª‚ƒÉ’“…Nï‰IíôJN„˜€0ÿ~òs($ØH$ìÄ9¶7ùAJ…Õ)}iG’4i÷p68Úú'—¸_„Mn™ÄLË&x€P;âÙÇÝÚœÚpl’uù€6RY瀡q?‡¸Ã c€úâSQ´¡Ò­œµ6NYv¾Ôzz¿ÍFÌHŽá¦Žù>FøÆxL©…±w,­—ÇÑŸaÃMŽì d‡Ú=ªn8œ äâ#`Áëz˜+Á30_->²L}=;´ãbyXL&wÝÁ9œ»äÍÍH‡o¶#Cøš=7¥; Ý×?YHÚ> s$;ЦQƒ- ¦½¦ºÒ·'Ú<Ÿº+®Oƒp›M& ÈSâЗ|…Âï/¹±CwoÚî;f—à¼y`þœÓu ›¯K ²iás”NqÐß¿¿":ÆÂh¬o7v4îá>"wŸ³øÍ×0wŸ«^p: {”»¼¶ßæù¦‰…MžüAܯ˟÷Hè{ñ8Qù†òxÊRW\Oúâìô¸±ñû4îö‚™™ïÔJq*äahë$‹I€2­0ØGÈG’£ý¼~ÿ1­Z‹Ñ?—Þmz¼_ÿRz·ëû‘ðÈ ®žC1ç¹xc$Qo;m8îÈñ[òñäNAÙ íýžöƒç ÄóÂ8«è)a« ¼|CÐè”_ÂS“磥'ˆ}ý…Tß8͡ӛp&½ˆ4ŠæÛãŒ] æïÅοµ±æ|âÆ€é/äý7³ÙÖ&Bþøúçñ~ýqÍÿ²xzÄITßîYÕqf•㨢ÝÁW)˜Áå¶ÂàæË×ï—ýh/H¤bâåÕ×_&&¶y£Pki¾þ%ô–ˆoIðÉ'Á¥rÎà’p+ºÄ!ÉÇ¿Z_è5¯Ì¶®Ï^;½‡“0ÚáqTôØÁŒ¸–3djäö¨HvÛ ùmº¾©øp£óòÁ Û,È¿:ñ/ùE¸Çˆ^Ó|hîºDMÖë ¹¾ÕÓ:8Ì'¹Ë?ˆì1™yäŽõŒý½o}·ÔjªÄƪO•rÆÄ$mÊ“æ]SÜÇßõš#D+©YUŸŠ]03Ý!Bÿž>»g ×ãä覆QL|;rËäjŠðª½R]u‚év'Zèì£T?}Ý>¸‚.uº¹_mjzï§Á…$3 D”ËÆtÐxÅâßñ3߀Gƒ?7×ýРž2ß]…Á7Íwä‡X©é…Á™VýýRx]œl¼Ÿïc é( < +TŠÓBùqVÞï×1ð ÈËíé(;›Œ\=?¤ïÏ”W_©ˆ}Jàµa¾þÅÆÛZîò”˜1êi«Ùw|G-Í@¼Ö†í\ƒ‡ ~¬ó:‰Ý´Ñ È‘ZR³¯¿„ôóˆBmÓ×S…D_ï?H›\—ü¾1ž§RI^Õ"Ì &éra5äbþ7QráècraÕåB—Á-äc0ˆSñ”ŒâqÊÓÁà8W×—ÛG²ùÀc>Ææ£'áÞöƒü‘T9èÀW¡pᨒ]é¹Öbö!@½€D~À7;-C8M\¤Ì¾@Ä3±>Ý‚*\H’.·lŒ“®°x“h[cþcp%Ò¦Gí9ó<¢èÈ>¨¸ÁÀûfggˆ ùø#œlJÏÎ÷áúŸÖÿ†5'YŒñ> šíÀìÄuh~]pÿŠßµ'°¼äÀèt°ù­ºï‰P¬ÌÇÈæñÊòL‡ÔíüÐ"ÃÇé™ê…ØIçe¦op^ÏæúiX|î´ žíŸùÔ}µ²8ó:yqf ¯Ìó ë*Ù©óäùœôÚÕ?ˆ‚å_%;3!ûuSŸ¢Ö‚ldßœù}ß ïòÕ™.N¹`¡fÿ@“}7®ëÃÇ¢!Bÿ<þù&ýóÿ5úå™iò™éï:ùoÅS•™«ø]Î ¥“Bœ¬æiŽbïW´a _ÒE¬º~ú_ÈU”…L÷`<“¹2 “µÖþñ²*µXå†~£ñr¨Ø{4²•ŽÌRSt1ƒêû!“#§| þf.¯³õ~Ðyì·wý^8§SíÜ÷ÎBòZÛ‘}Gö¿ÉþhÞ³ÔqêG_ïi¦¯ãÃŽãV]<ıçÃŽNõ‡\ß½÷M£ª‡þÌ, ™ þaÜ#Ó‡8> Báb  ŠÛ ¯Á/`ÈìŒ{ 7Q>ü¤s€¬ŸÓ¹`×òP>@çÁWzߘ¾~hgÜ#˜ö¤i0<Á_C‡`.åy*Yî±¶´ªi ÞÚëù-*…Çó\_‘¿ný$±5˜8aŸ˜ß¬Ú9§ É™v þ~(oÌwNÃ$å^zAÁV±2—©âó\øÓ,…Ó¼WÉ=­]‰­jâËápE>yèÔ„b¡Nßáo`øçÅàÿ 'â{ð~¶²…%î·lý"M~Oj»£þ(Ƈ».–+döYçcgÜ*ƒÝ·ÄïÄUúfù+©ëävæ™lòw˜h;#QÍëléÈôc¢ÜÚzÒÚ‘È@¢÷up”øÑÉŽ–Î{3çaA-{;Rž†ÄŽ}ðœò ~níl5ž>j•¿i=Êeí–ïÍ\E„=o —Ž”çYÓ70L)Ûñõût˜1ˆe:ì|£c ˸¯c?ùogÿhçëÿA¾}íéÜýoåi D•Ú¾÷£/:ºsýéÓ X³Ú¡(ÉØHÚ±ïן>b¯ù¤þQ³|øvaÐÞbʽEúx…Bîkíߪ¦[ûä¶ÖÓœüí„pm‚ü­õ³lý„Ë:‰üx›3®…µ#î5lÈ}Î6}G?Që+LäÔŬjk×ȉ¸§ˆ *u¾Ärö­°ê_Cm±'F»×-™èz$ß—‘ UkÒ×o”T|…î·JÞ;aŸ—“÷öv0Ö¿p©ÏÚÚgÐÅ=‚üØ'ÎÀ˜Ô>BH;¯ÎœìÑ9/srÇó †}Aüz.m섃B0æƒ1 0ìÕ¡´‡>ì¨ ©<›dôeÇ­ÊÖ{TgÜuÙØwÖekvÎiÀ·i>ø{ÑOÃwÈ´qð}÷÷ÿ°ó‡JŸÕ›)Ú¤1ð^™¤?Æ÷eð½µËÕÚG®1ß|ÏÆh8&³Á;æ»2Tvgª¼QntÅàgß¿:ýÃßy¶üÉ>=†r0 ƒj$düŽÜ!ïgöÁÆï‚ê»_aüG}-ŸÀãã1®›Cë|ÇŸóô×n|ÅPg3y@WÌ´¸Þ¹ÿÃO±ý2÷2įQbçðÿ¾u—vîé8Þùt×:ß$Ai…ç=ß ÄÔ±¿#øÑ‰Î×uŒ s«:_×fê89÷uüMϵžw›¹:wwv1}vF^lÿÓß Z"L -VPýk¯ü˜|>É~0營€Z.Äqø÷uÔ>P½"P Gi,‡£Žï<ÕñFç) GÛIß@ân`-hæ<yÞÞj.uö äÜ÷á§ Ù(¨0"{³# jõ¿Ýg¢µ ˆ À™ØšH¯è†¶bl¡Î—Ö¹‚ÓÖ`Ñ€ªå£“½)ǵçê8ô6‡\FO4`ÉÎXçêd_¡Yؽ ]L‰õ ë¿¿sRÿܨÃB@#b‡Ö}`yæ ìU¸C²žgÞfÛLø¶F^L†tµÂH#óÍÝj2wuÖ¾g˜˜O³:¾BTç|¥°ö+cÇï-¤Â1ü´¾“s’ߤ0ãrUÎ!ï2¯ÁDeëk@ÈuHõMünýXÖQª¸#ÃBÓ“Ur[ãµá¥KrÞ«ëÕ?ËÏSy8OÑeô­%öñ QDéú…ßV.n¬ /•{–Lh{Èi¤·–èX&ì–ô˜ †O ®stLü¶b‹§‘/’¿Y©© [LhóŸÅ#±t6"êý"!uÕâiú|£Çr¿g©Ø;ØÐþþFFû>šñ7‚®Ûm)dV眆y^ía4zÂZ²|,7|)ËSÍéäv@n§zŠÂƽ®cÊhÈlf™@Ròiûó”õÀ[ì9_Ö%ÈÇi=PÖäÓK&„…"9¸¸_'üX÷4“­W2Y#GQœ¼á„}`ÀÝkp°‘µwžÜ†` "`:4Ô @ÜA,‡øm@P$ ¨$´ã„ƒÐ’:êŽ3'6†˜¯|?ÍJÁvÌùŽ¿‹°ª(·òIìL4_Ò{µüßä`>0Ÿo«p&6¡¥vº¡Qßf_Þ£Úž¬ã¸ÂÅoY”óŽÈ.ªû ÈÀ|«°SäìiVz O‰Õy@@µ}u™söÖÞÑ̦…g'òý}õ{’µT‚â±@¿˜©0ÒqžÍô)&Þ2¸7ó–êT1ZSpÞÿ^¡ô aeâ°óY€E2²¾ã·õï‚È;»^¨œæÁ¼º˜Ñ›ïSýä6RR¯g'Iâ·%åìŽb îÀB\¸QÞ›Ê_?Ïì[Hí4/óÆù@ÃÞ-„Óø~vÖÉ!Ý~øù7+ŠlÌ…,1ü{ˆñïjà_ãwº!ÜÅ„,–ƒ)ÀAöùaÊ÷3ðÿÿ¨|ô?õ½üc‡~Œg®ßÈ‘åPŠÓ­Ìjû¾ñí,ÌßQ9_ymšMþ ¾æÉßÀ¼ãaæãcòÉoã.@ÏkÜÒbïqüˆp´((ç-y@Ëü ûj'=óåÅEãïdSÿÀ­”g9 9ðýå‡õ÷F`Bй1r¯Býå¼@:iÐ×w†‚6ì×{‰ž ½—è6‚tÒjÜFºo{ŒH]V!-U.g_Š™~Ð<À³èp*àÌ3ŒCÒ§ÖÖSVI”÷ò[Ak©èÏ.u1¿µU¦Ÿ}Ú{†­¬O^eýcàlý£!C‚Ë̺žâ9Š ÿܘ@y´¤Wé,.ê§ a=èÓó™´4üP&)špXŒ—N[G3ËG`˜qQ%Hö‚+pýBê‹qÒé°0r>Tï5RºÒçVù é¨ELžhùHsì´2ù€.ÌË^¦ƒ¥¸ŸUÄ·ð‘öàgT ` « RƒK¦›_2ßap po&Ƥ $‡@'ñêuhY•ºkÔ»u=¢›VÎL`, v¨Õñ”L¹þîÿ'¤ ÐFkDâÁA-bøSƒaõiVY5ûOD¡•ù<Ó#NH¥8f陈M€«©êi, gJ‹3§B†É8c vYÈÂyœUÙ£ q¢µI§0 Û—UýÞLœ?hÈ;@:¾éçm·ÐË„}:€˜J¿—¦"B¾Nf‹A¦ÎDgf„vN­Œ'ײË3¯†×±Œ„*HY2#5»NÖëÎ*ü9Jg¨5ó³ôð³$d2Új¦a Ê92T×£bp°›yÇo›1Eg*¨¬ósÚÄ)¤³÷’º|;ë+¹-ëË¥ž%µ® áZ'€LÍq~Î^A£bЊÓ g7ˆâ02‚"»%EûZ¤ß¿×è£'Î'Q.µv¼ü´_~?ë«¥SkN×}MÜHÃD5 MaH÷úÕ=E:•Q«k—8êKQã¿n-cþU¯«ø } j½ÉŒ¬Ú (^çT;+_׊1å³*°ò5}ý“ß–>EêÇòIï±s*ZZP€Än²4Ý–Ói±ûj:}ÿïǯ“0œOh©39@Ù¾ÿâŒü/Q~ïœÿVÊ_ûçÏ¡üÿãü'0¿øŸ×Ÿò gæ4þƒôà€/õ_QË3³Æ˜IÞ-í³ÐA,(ç% ëg«´2ŽÑr§ÔÚuè(~2sj3iü9¬OÔÅ$²¯À’ÒÆËò{‡>CÓHî<ÔE38ùë¬ÎC_$@ 2ϱÇé²óCëGÿý ý« ú¯‹¡ÿ üdä¼.Š~£<ϤÿK(ó: _Дè_õŸÒ/£ÿÔ [´¨!w W@Ÿ0Šnß Ã‘è XÕíkÓ>Eê‚÷Sþ 1KÆ}:=s²‘ù:íVx¢ïon™&¿Õ—;õÇ>¨?ÊòQo&VäGv鄃Ž\­sd(ú&޼áÈ;ò?ƺ/æ´ÐŲsËâ0¹Uñ¸àÑ-&ôƒ¸µŒ‡ÓžŸ1Äññ/à?×Gû>žö8¼utâ¶Øú O{Ú|»eøÇ³3;oùç°KpÁ±\‚ÂæCw7r.$׿梿X~ÕÙ›ÆkìøµÇ{  Q.”zÂ2{Ãé ž(ø:L“T+qg÷\#ñktÏÃA ³ïóNh™½á‚fÿ&ŒYðQtäëßäÝR©|¨UsÕŠAˆd¶¸†kö4Ó¬å…jŒ†ÚÂ(  ìÃEf àÚßðM®´žr™à8+Çí*¼1À)ü<Ä Â,ò ?³“qI+½­aWýçÎÖkð%­ÚÐÂÑóÌæÿ†ßÊÐA ™x‹ÈlE¦X9ù$¿u =ÎoeU‘ß²~¤Û`ò[>ªÿŒduÙ2[¬ÒÎÏî„.„ ½‡&tbxRIÕ—²òu(}|bp:·:[?qɇ¬¯Ëº whÂëõŸÆ€TjYÙû 3¯³÷ ûõ3 ø‚ß±ñçïÏ3°ç©ª #¼õK㌾Òú¹ËŠK@Äç™YÅÞ ±ýkƒlj¥/ƒ±YXoö[?ø^¦ŒÏî”EñƒÄ]éÈXŸŒÛc1tP6í<âÅöÁ¼àõE:hF,Ö j¹Õà•˜Zn1ky|à±–:Ï¾Ž©å{ÞÒ±Q½ñÙûåzß›ðY¯36˜Qæå¬ã‡By€ð¸ÎÐÁYçk=ê²3«^—¥àyñ‘ˆIJ‡þõ.DýNïBïs[XzO'45†S ÿï(lªÐ{pÂ;ßÏÓ–HgÿûP,b;ÏÙ€òu]-€P!VS•)LZ?sYÛb±)({ƒ ±·½Lœ·˜âŒéII~ÈubÎ&K^·‚ooÐã„Cƒ;=±$“xñÆò‚HB߈¢íG$|ïÙè@l¹cuÓ_DÓ¡‰A˜‚ÝG—©ƒvH—ïãÈ¿üÙtù»–(]Þaù_Ä#±õ<×ü(×ü‘À#?.]1è3e®ñL™k0e®#"sÇ~\æŽýhí» ™;#s>Sæ:Δ¹È`ün¤-Ôo õG¥M=»´]g=Û˜¥«/F¤d µ¿Uï9ÏgvGZøÀ«ÜK0/w­¨M‚ñ—(î9“âèæVt,æ%™c´üý^C*tè†Ø|-woÙMl'ˆ´sÙ»Iß;&}@Þ1£hbðƒÆšBïe0L<ÁZ º˜uf×å–ýÀdo¦n‰È˜:™Ù¨™ÌFÕy›¯ÿ¦*50&èoQ³w˜¹[Ù Øì•R÷t<~éq)ån¸Ýƒ¹-ÒÁ~ްŸìç]öÃüšŠæôkÃõþƒæHÝNô\×ÕÊ u=Ÿ^ËðïFÉ­½è‡Ð¿O.> XçËžw•r ¸¸¾_FzËOÈÅsD)?¢x:X!ÚÃò×SÜ¥ˆ]òÉÞNH¿ XÈÅÇ Uñ ®…³nånt'D5ôŒ½ì¢ßÈÑ/ÂÈž7äòc2 öáý´dÞ·®ý¤é5î Köt(ÅiPŸ1 ¼”«zntÇGNÎè¬R@ïÊå=rñ ¯¡¦Sñ H÷¥…® ߀b¬ä1B™âé2‹Ò´Gr<ÇÖA]Ò° Q­ Ü'‹ªŒ‘UÅ“¦wË.y>܈¾¿ÓsLn“BãÅrÀŸS~d½C)~#§¸ë–ÙÄÔ.À…tLñ¼1jŽÁ© 5Íߢ#çfP¨©.éBþSéJ Q ½»=~²zd ™xLþúÐQ Y|àš¸Þ®GvÂ+d>ô…â=IŸ.ÐŽ—¢û 1ÅcPè¡ë±®½×¿‘ µ¯/„av,%ÂÅÆb$:«oÔ;rñy?b:* tc‰ †žT©AôuœëéZ÷j¸¸cŠk¦=ÿ=²þCÒ½—ý¼%!$ëÁkí ëË@ÖñîFX<»@ÚÉI¨§¥½E˜Í3àò™ßKòü†R ¾W=F²q¦üê ¬TíNÔ3$ÿŠØaÈ·)ÿG ¼öÿ“ÿÿOþÏ”©ÛmxÕ×N">EÿÏÉŠ˜æý§²â}ÃþOeeôÿ´¬0yüÿGY©¬(«ïÆhuÌ a`¹Âíȸdˆ#{Ÿÿ0˜3—à3ôã82+o†œ²RäT'þ3Ã{=ú4TFK»9ÿa±W> 6þàRïNEûÔg XŸ”_pÓzéµÌUc ßPG Loñ6§CMÿ/ãRœ¼‡o(·¢[ñ¼0å*S¯ø©žMnãïÌa¸ËÔN=Ëé+äžÚ¸íW¥mó&?ii÷»N£±ýó7 ,<öL\?¿¹ )9€ßõÍìÄ@Åù­õ£åP€ûUØ»¾oË À÷Ù‰ò[ëÔÖÏa•ø~ïäba<ë^’vbº­Îõö±)|kýÄ~èóú0g³YÖ§…Õ7`ÅþŒ1Õç4ÇhÎå qêÛ{{{•ªtŒ«Q¢ߤ«w%Qm*× YVW#W=i,€«ŒÁ¦©?e°Ê%ËY3£»AcÛÃåî’èüárôРnLÄxK(¦ï#Y> +xFFõÿæ4Æ?G&ÛàOsD6Ðt®±ÖXÔ__‡—›¡´¼Wñ:8ßpŽÞpÖ«zÛuDHÞ.}Âxrì“M½6ú“à 0°ÐéÕÏ1ûÌD¹]ìÞñP’}PþšB2¾é›ƒ.ÀÖç¡—Ñ™±±¤¢ÆVcW/2dFPÿ9:ìª[20î™Rõ¤Rü´¼·þ¸Ð&vœÐ¾ëíõ ®äºÞ(÷ÿÒÎ^æ¼ùâåoci%nW[®1JÌRÊK-÷DJ^h©\¥¸A¶²¢·bn·X ›þcþT”µöÙ²çìYë’ÛäPØý;L-È9~Ë uLÑ@˜` ò{áÐçèËøVÿþ-Gwaÿð, ¬ —ˆIèx"ø“ ÎÒ¬ç‘?Xä?(~£}Æ|ç*©×=ƒZALؾáôl©øˆ¿Õ¾ö5mt”ûÊÿ(Õpêóðí*ybw+v¥Ø±ZIŸ/}êà_ÜC..(ƒÿ 0ص€W*.eaf}+í\'ko<ú.ˆ¿öÅŽ èqÚöæhüKÿò(ü#Mü0§G/"g)"óÌ"öéE4³2žo\‡ž×Î^ÛÙ ØóÚ¿]‡æ×¾§޳×aÕ™Eü`°Œ©ßW†íìe ìù÷ËØ»ç{Êð…Ãg+ãÿ Œë¾¯Œ¼³×cÆ¿Y¶·eÏÙÛ›;[‡vÿÛíýÈîï©CÆÙë°æÌ"~”O³¿¯ ëÙËpþet´~O®³—ñdë—¡û] Üã³ ’F«býÉh@òSÉt¥áAºMŽržÏ›åíËÅ1p\‰8&/Žèº^uín‰Ô5A÷]·7ZΨ[glÝ^kŽÅ¯>ð#878'NÛ œ™gçÎûœ™ÎégÁ™Îp–³]çø÷)å!q_ð«W{{Á>,Uוc| —EwPõü9»:“Û>‘ÆCùÐ+Œˆ¼tÇ ¸zÅì>DGv‹Üñžù(Ú7 À,îâ›F4“õ(ó8§ðÕZ-âE«ùmûWËÅ_*3W×i™ã«Rè\­”¹:w¤,íá”\˜z|©ý-PdÓv£-;sµ2NúEMj³ùëåª/!ÇåÐj¥òðy’aæþ¶Ø­Ýã£ØS¨´•ª#ËŒ;ÕÂìÆ·q¦mŽxH)î Ì˱¯£QU®¤›²Ý‹n”CJ>UØ/\eÏåæËs9 &à¢H¨\ Ì±~L8Óÿ< ÍÀ…ð-ŽŠp)‡FáR®Ã[Þ/¾¦ …¶LÅ$awË# žƒ†Ä>ñþ–#)Žú~þ®=§9<*ÂÞn9® k¤ÚÓè/¡ ¸Å¡ýT¨‚JÝìÂ?*²C0Ú ÉÕO q¨ÃvÄ(c±0`qm4;¤”q9ï­M 8‡ÌP _¡ÔâÊyï–/¥SãùMè&Hs…CÕŠAã«å+Çç*D½ìjÏÃSg–Çð-;„‹´\û¼d<Üg1R§ ygoï (;»õ3.°|Ødû£1p›ˆó™v:õ”rò-y¥Ó ›™}P;Xh•ß“áÄå7Á›°rÞ㥠4žºåÐÙëõÁÓ > ÀÓÓ·9ÂN%eÞì½³åi¯MΟ½¬f\µz/Îÿò"r¿'®œ¡¨îbþHf€j5×lø†7ôM+ OúL:Év©ë^Aéõ8,æŠï÷éIS|2Pœsˆ¿ã/xìó{JÏVx—~‡›Ök¹Þ6rþµPî•>ï pãsö®½\ óërBóÆsVá"é3+ïŸOK¥JaßSXŽ˜.wfµæ¼³Ñ­ÜÌIŸõÜCr>àlÌï’N…Ië‘8ƒÖý/­ŠWE§ÿû›Uªâqæ€DêûXöt­KU·‡Û-xð'¢äô~è”úø8²¬‹“÷HŸöé³k¾ª¡„kÊãŒ0…cßÅ ½²ˆ“>éSæ ä6ûäL€•ÓÇ7àÅ­úþ#ÉBv?ŠÍ®v™…8ìt‰ôéNU¡m¯EŸp ²ç]!ñ%””¬“òÛò);‰Y`¥K)×úA`IxÂ~è]B©ôEbn¹sÝ9$¿7EtÖŸÆìº©Š·§›®ÿ_`ý'òÞV5¹5hÏÞ«`,g#7Zî^ X_å„ é³´N9$}GcK{Rd×cuG£K]áöÙrv…‚Ùe5c¡+8^„®ðßÏ]úAâm³©‚ ¸Zñz2‘Ü’$ƒ¢€¸’±d §ó–d\À{‚§°‚¬¥­4ZZn‡ÖUˆöê{ù†G£Zú¾A-ÔÒãã#--·JŸ$\%{ŽàöUÒjì×媥¼#ª¹@s/Åæ>ÕÜr»?|%kî õæ:…É3Wñ™RÕa÷vD{5öµ¬±‡Ac³Æ,ä©¥W¬îcs:¡¶Š¾Ò0éQ7/Â%#Uý3ÐüçwÈníÁ³¨“×—>Íë•:¯m¸¸Ií†Ün€q2š;ýÀ§Ÿ&@‘Ã9=£²ûìݬÒ+ „Û9P)ŒÿÐÝRXwðCÝ-Û(æ7Ü™Ýí˜ø2µÀ)ùý˜îvì_înûc»Û±ïïn|ã¯QzE•¬†»R,–•WʦµüK–|üy¨8ëh‹û¡eõE÷2ÞËÒå÷§xõ´L¹î¼6ntT;&ïoý‚:Ø~¥ØÙè½Ë ¨œïÁΦ}Œë¥H¯Òš³EÖ³.ŒéY'¥}6yQtÏšÿìÙzÖƒ§cZ{v &27Ï–K¯Ûä+g£ªQaœZ¦öýŨnÊÉp|‰·¹BQ}=`Éàîwrëv©êÓÄç·íå·ÌyGFÓ‡'E7;rzù;ÂcÖÛ "çñ“ÞÜx¹J ¶À‡fõ}0IóÃ`LLØ‹!"¢ÛB©Ï%äK}Âl©/O¸luÂô98¡²(D¡pÎ\ÚÆÌÁÕÁ='›BÊœðx¯M× 7F´ää÷¥ÏíRm$)ËgõúOòþ9ð>†îËüïðþi'£ë´4¦F|Ã`>Ö*!R«¾ØZѧ©‰Û‹¤Y—" Í.ôÔ_#]¨³ô?îBcŒ.Ti=³ u_êþ—»Ðó±]¨û‡ºPClº=)¶ ]Í’ŸyÖìB‰}gt¡‹Xâ7ýuRT?â7}@®º¢ûRWp+ÞªƒþòFTy,û°¦@gñüHgó?gë,[c;ËJÜØØy³uÁvö:ʘɈ_UËeÐ2Wä{ÏRˆs†Ó[ÄYàµ6aûi4;USŽÚ xò™ÞÞk”Ô'áY:j“ö/é9ûðö-ðÓ>ï ÌS õ'®ûÆHlx „âPº}ÝWÊR—œ‚mÐסWŸEe>vùC÷‡øéY¹Ô)—: [ݺO”Óк¾ÄõP~íFûátLI¥V‹r¢ÜåÂô_cx™¤Q¹+ƒž]Ïà^‘SžŠ0/NÆô±'¶"Ì ‚qâ×"NùõL*9«<œGÀ³9š¤ºÍ%éøwlü­½FÙ<¾ iÊ4¾aŸ¤ŒEfÃìè\KW.¡ôp3Ê-dž÷˜O}æÓ€ùtµnßb8Œ±?k+‰ap¡ÙÞ$<ÿT€Mªû¦ÿŠuk•%d]€MŠˆß|͆–™9Â,à&ðTYü±«=߉˜î†éöˆ ‡2^Rè%߉Í!_‚/ÁÛQùâ·ùш×Ï"¤âŸqþu‹ºå…N¹Â©Àße¹SþHúdüËØ´­_Æ:šè~áp;8 m&À‘(õ¹×ÇI-Wi/ã+XÏIøz“ög|Åh»øº^{_‡I}6|ݨ¤þZ­ Ë4pÀüìªà¸0ÃJh å&²ÂLL²ž¬0¤l ªè¶¤¿6x4¶Æ¿å¬ºa’ y¿Ý••Š ¯¸¬ïÈÿÈ:°¬DÝ¿Dqó!yO¥’ûh̸G¢¯~ÁÅõ¨±Nh$֓˲úËäâÕ³”6T²¢·Í)ò7Y§é Ò~›\Æ=Šø§xz¬=¹q(]áûº¸ÇðYþ€º©|Àˆ;ó(ÊRe…¿ã CÂ"W>`te³ë†U{žîí•Û®ô‡äã|C²Õ,¾a¼T¨à;̹yÿW4­Ñ}¡²L½ Oõƒ~]±RH§5ÿ>!¹L} €WÈ=Ú¯˜×{íD}?ÍŒjÀ”–©u£O±„K™ôþÓt=;P_u­n¥ÉmB%kEIõï" ¢íÓ‹úKv‹4§{+F¾¹·eþDü.ŸR‡]fV—oX ßýf¨°KA 2èAVn[±2xQ8¦ó‘OÉ=êۗ⤛‚<)ñÐk¿h'Iè9Mc£rÉ*ì¯àޤ¹ø(öW ;À ¸°*"MÐ,vð›~ŠCÝi~}Ü.—%Šëy¬Y®Dñ|@U7RÝ0x/·L½ìÏzÃ|a4ÌÃP¸š1T‡Äu¾ƒ`{ó x±±LMø3ŽÐÅ=Ð ¦"¸€ 7Ïr£9®` :ò'lŽ z¡óê~C„B ƒÚPWiÏG1ìɨvi9k{Üq [MánEÞW”P;«?×Ñc0OÁ^M\®Ûìí \ÿ ,¿Ü¥xºÕ™—P³Ø±Y’ýûÄÏÛíÔ,ß@C¥7ÝëV£O)‹–ƒÝP)}ÖW&‹Ý¨ ’mL*Mä¿¢fÏ{ —×B|ÃXÒ§,ãzwãBˆÜÃûŽŠí€ÔÕ—[Ü#Ü,©œ¼»õ ›t*qý5Ò)®=ž†BC¨ÚŒßt ú_:ß^èdÉ.–<Ž’í…n–œÆ’°‹¦³4Òƒ'€s%ÁOéôF÷º&hͯ Ö5†`-`"#= R­÷ó)æÉî6ôÈh–¼ @®Bfó~$!ø@ì€ö(ÛfŒ7²¬Ÿ¤1PÚq#ÖÅnBÈÜ‹Í0ƒÁžü#[¥¼û?|‹(œB|MPt©[«^"àžˆlÖ`ÿ'}ñðE$˜OÒî}Ñã6ê¯q"òžÜ—}°7„ÆñfxW×|YG "DÔÚZ†Õ.wàšSyϺTuÞ'g®9I-ÉRßîé¦%§x:iÔ£,œœSܽ~(•w4ëÊÊLÿa¹ê˜¢,rÈ 3a¾ÝâÐ^®÷v‡q#mó׸Ð%v·~i‡¼«¿Y®,rætâ¹¥âcB6è‘ó0æ §[Zlã¬òíNùZG½·G_ Ïq ý©T¼[JGj¹Zöt)b²¤Z©êdÅÇXä…f þr+Îôâ•eÎõ`:wñ —Ñz[âéÊõvËeÕò\˜8Xíx°‚Ñy3ö”ÓH¦§'°¼g¹²Ò! Õ:Ô˜[OÇ)Þy™S^äLlxñjTøW:ð„îµÕ9Çå…àïG•¤—¾î\<˜%B­ßÓk Uæ•ÛÀºœk9^ºßJ^íñèX1@µ.—®WÇ·ªqʽõˆ‚?7«²çÈ¡ÏZ»4ÛšóÞzÎB_íGêÛqÞ'yØùÍC×sÙrï&Ì "}$pírBâÿFL|ç3iÃÿÐk"¦ËÇ{Mø¨U‘ï}€jô:@½ó™ö "Sj‘•òÉ)ÅÝrt’Ǧkò5ŽõIÒâά@ñ,?f/ïFÖz»ôzËe×!‡osÈ·9×Ûå²x†t¯ÕhÓxz“ßRªŽIoY16Žs¨| l¥ù4¢=v+‡ñyŸ´Û•ó>P»öR 3”7Ù*¦–¨®x:˜ÚªÚeº"ØAÆ@ÀdPÆ¢©«=ðÜ>P톴ʻ¡*HI˜F’Êå-HÉ>¢d!Äð‚LŠr>^ëF‘ºÒÉf¢(:UÇnéœâ1@¥\ãˆe ¿éÓh–0FcG˜V ~K}½Ùº53×åâ œ5W­»_ÐÖ ¬¹iÝ|A33°fý:7¾ …¹ wÖÇÖlÄXL ³_£ÌæâæaPÌ·­Ê\gîn}¢|HÞœi¹·sk›•«ðpKŸRæ$Cê®x¡ïçŒâšp ¹ˆã‚õÒªª'wÑ Þ¿Ÿ­®œ·ùM8ËdeÂÚ¼lE0…N vëFüH0⡤O¬¼?‹=Á‹tˆˆ‰~„Þ#6úô1Ò_¡w¬v»G¥Šÿõ'¢tÚTEÓÕ‹Ùˆ†îMúäŽÞŽœV~óìÿE“sö¬ߪÙ3V®É”ºNC–‹&ËK2 ­'‡Ø@Èûg 'X.Œ %Ã*tõIG­ ÅáJE_Ö;J¾C¹Ùi=$¯qÊ…`ôäV.çTIfhž‹ƒïE¥r@És*01šë”Köªî@åÕÊ-Ô#7;Pk| í·ÊK`NÃÉéÉõýhAð›nV…Š&[ù† 6TR¬]0h‹R·¼þs‹¥'¬\&÷+K–K{\Òä4gг½]¸Z+vÈåïÊÅø†I3P6PoîŸRJâÝÀ¼qÿsÿUu5€£3™ L`à 0h€ QI‰•(!Aó`I†<$±­RšÖVÉ9ÄÄÄ™ìlFÓ*­ÚÒ­mµj-Š(˜šIjˆ(MñŒ5€M„Ì­µÏ<Øöû¾û¿÷úkÉ™söcí½×^ï½öWzØý€_zE9œ¢–¶ô¡°sN-I×éúŽ-t[ÿ#}·uöµMm‚ѺÍf;PSy@§³è(iJÕÍúصúxq✵-áutP%oŠ­7zŸÅi vƒµ3[ÉÐ\ǻР4b中´¹¤vß_y^§¡Èä¸(±â¢ùíeº2Ùm .7°«¿HÇbÒDý uE~Xy\ÿ«lb°Sù2“;:Ù]Ô?½¨-]mbéܘ”ÃLP‰ös[KÍ^"ó~éу ƒ×oÍÖ9Ö~ާ1_‚ÒIoÖ`Íu:ÀRØ›iÔÁ”+£§_Ç3M¸×z3[`BÂVnæàh¶ð¼àÅm¬dÊ#÷cdíæ¥FÀÒ”Ihv]‡°ƒÏÕœI¦©%ÃaX Ê‚K¥Wú@¤y,JÌZ|<¶¢?šÜVгáS߉|ñM3X•(·J»VHÎ1P&Á#9£ðïEÇ{zN&«á*1z{Ȇ¾Ÿõ¨˜Ï£Ðû0R”ûÔAäTJË2zï€7€Ë ƒÃ@4²e˽éBÆàUýîYSÎ Å6AX33³ÉòÙ»ÂíuÊh´Õ97B§¾™X_˜a7¤² ¨¶æ¤æ¯¹éM4–?4Â>4Âúöª3kÈï Ñ ØðŒiBAèD}¡Ó@Rwì]…#¯Ë½¼&ÞјÈòPFFöGîìGQ9"Ïñt#:Ú.¸gVà|ÒïèÔ³¼Ne,ƒv?ÏÑ66ôš²v¹üÀâÞù·õÊ2T¡ !IŸ„}›6=þ‚-¿Á¨‘ؑܦ‚² ÝTÖcŠ­[r}—’šFktÉñÙ «2úÞ4w¢±q…‘›Øâå¾fäö®z ©¢0h9öšîÞðuM¥‰ØíHò€ £(kPG˜lIËÝP)_Ár߯Hß§¹‹¥“$€& òb³änNÌÏð¢¤þ“ë&¨?ºRT¬¿ª¬è.ïçKl?L[_#) ôåˆô>R±Êîä ìHù]¼QÊPÙÅó—'$9‹ðã#4Ñ;ÒPZŸ†èH¶u±ÉùR.}>ú«.ä&Tª~EUŸL ^3ÛaëˆÐ÷óÊ`x"¡gºµË‰$Ìb%mê€.Éjå}$?G³1YébÅÇ×ǽ÷^’ŠwxNë°s´4EÒ };>7åÂ|Wm·‚2Œ%vöÑN£¸(ª‘µ‡YƒäÊs–è| z $§†lŤK]4á¦É³H›ðDÉHòÖ»û]ËcvâsrGù°ƒÉk/a¹prÝ5êþCWn'Öëθšî[J6XòŽ™xÁFc Zk©ì!qÎÕîÞÐ/W²}'ÜóGú§ö¸èÇp\*"ô'`éÙ^v(þ'ý G Èã +ú‘ÄN¤wg™Ä¹‘¶0I=E¹w,ŠF¸3<ª#MØ#MqE¯ß¿‚õ­„2 €Š…l/h9H1›,ÉG×%OZÛ†+lÝm¾3ÐAº‘Øàð‘ å ˜vÔ Ðfa‘{‰Ìõ ÚVdö²ŸŽ7Φ³ö|;i9H±jO…ÛÁðÀ»PÕ—>ªºx<» T]0:¬b¦?Þ5 Æq1»â;ÛÉõÐJýR·}$Lݺ»`Q{$¼EJCÎ4À…€EâÑâ™_@ã¢ÄzJ(^&LÕWÔãÛ‹¢|o'õÂã$â\»Ø$tøþRsQ§3é*ºà=þ~V8|Ï0’ |? øÉ0íWê/'Áãx¿†‡ö5 1²'ësÌn¦ àò³Â}¶ ‹- @-ïõêe @&Ùm„0Áìý7žLºbÏ“IÖ²´¾…V}ähgÀ¹fóY€Ÿè G£ÉqᑪSÂc'boG_ {‚<'ãq@ì‰zÆÁóQFzGopZG¯ e¢÷Óè=YÈy<½G {‚<*œ<-£ÈiÂçÐs Â$rpt­ˆ8Í'È¿ÒÊÇ£ßÃ㘡ù‹Øè[ 8?ŽfgîüðÀÈhŽ` d¥?4Pc°ùöí=Â^[l’%¿b´£­–¢ÖX/ Ê9wf?ÏÖÌlJžã£|÷$ÆÏX nÍW¿€°ç«7É¢×+]í…òhÒi±-ï&( Lp¾íÂ&äkc½{Ⱥý¦VæÙÏÂé“y{ÐŽ\l–£´|Û2ø×c,žewõÊëµaÈf(åV–€l~ØüR>Cþ[võó'ûúVäÛÕ²³¸q¢ìêAøPè{S3²¿"Œ¬¾ß&¨÷¨gOƒè÷4+RÜJ@=ÀÒí®êG²Õè8Õï¸x’Ùº×YÔ§ÞPL/ Hb—z¬=©ü¤Ȱ AŠ£Ó(ÿ@S–î x² Ôt4ßœ‚2z+BXdÏ/ ­vcà è)Ç@ ”¥Õ‚ŸyžêŸžá4Œ6p¾ýžá4œWÞ¥á<…Vˆ~5 ÆbT;¯ÉûØ Æ“@¶ëag%G%ôúÙiÚ³í®c…’³ŒŒÝÈŸ`_™(Ú¯þ':à½K5ßÀv$z¿ŒTû—pr‡Ö\ÌwŸZŽåï†ý@¾ºè ²+6²«7sš^ž]àŸŒÛ.lè7ŸGŸÉX»5JC&êzm¿°«¸S(øåižŽ½Ö£žž„†Kß6ÖË'¸Ú•O4uÃoa³\MôëX ]è×1¦Ç~Ó}acZ÷31¦Í]œ/¹Óß×1µ1'_ØÒþÐÀÆØÕ» Z) (6 L×—võs8®0.r¶¹—/ÀQYĨ~Ic:ý c>dL°÷´1À @’v‹q4ÿ44Ž Þ›¯þù§bVZ›D¿b)3¸•`ö&VÙ£ âAºÉ=šmWúéÕ Ú‘}>G¤W>À b ð?¢^5ô‹ìOa_‹°b€‘•Џ^õº0Ps ®ÈW ¨w¨ÓT8~kW?tE»ÚÅ\ª'žF 8ô%-=ê›×|;ðivnßóø|Õ0—Ô"àG;w0ÈÒ7ÖYº(Ž`^|-ŠÚìÌt›‰OÂLj/iè«>B w¡_z…^»ŽU]Ô¡)\@&¹thùÖ¤cä®ú#Z •À,³Žà<‡øÃg}ÇìCÔíJbHÝ.’_KðÈ/' í„h¡öƒMA ¾'AÑn«c'ÓýbŸƒ€Dø&wv?Ï2•…v Õ„újG£^æP¾/ëƒqÌöšî¿#'¸µ±q+:À„°ªö8Z¨DHf*kv¼Á\ÙX®<ÕãºÇ/Αz\«à zžÀ+wàkUÿ8’Czæ%ËJnKƒGÉ™M»ñYh<”êÖãZlt‰ö”tŒS|ùS‰€Tù" MÍ5ù©°Þa«}F¡‡¸ và[š6GãªzžcNÞ/©‡éA•&×¼@ßœ¼_éÉD)äâ#ëNò­ iøhJc»éêÅÉwS¿¿!Õ9V\Í (cp2VðmØsßKµÑsÃvÈøï6¹‹Æ·Þ¸k‚áIñPi€UÖ2÷zdH•O²ƒîXûÜ ð¤<é®ÜwîÿœÛ5™ iúgãì«Ïm&c˜_Ù·fiè­;ð¶sÍ÷Co+6k~.®ìãÅP@¿—U¿ —1+«¶<ßuãòМñ×ÐU3H¢+}•Gúi•½7  Z/‹.Ó¯©ÆðŸØ:ÒÅüÔv8T}›T;°»pÀNhf£¶fkèÃßP$[óçЇ—àŸGø· ñ.ª9ÁHg a†!YWÓä/QhH“½œmÅEðÖ£žG *x°w :¾«…XèpM÷oá#1 Éúy¸düPP2NÜ‚'ˆ¸ZI bîå„Öw¡Ibí" ¬ÕÐzU­»Ðzù¯BkH ÅôT$ˆÐÜ÷Py…É䛓ÏÅåÆä³ˆËÍ—þj±Û1·Z›Œ!ˆ‹­2—@ø«£/³9¹‹†²PDƒ#ò*3[-Û<,ð°·PP˜dϽ ‹7Š»P‡'¥*MìÄÀ[ØÂ¹xPkÞk '’GóÕân¿;Nî Fý{ÿ84&æQ *ì—Þ{¾ÊVï5gÏx¶ƒxü5Èk„Ì¢®ïÑŽu ~®^ð!ïîåyž¹/{ÕÙù( ¤àÅe¸;ÃïÚ+Ú9A:ÛrDÊĹþƒxºEVn3±1@TíD9ÓwØž«ÞwS÷®ð Ø ‡ì®öÉùN‹N3Œ`!Œ¾õ¿aœa|0,„‘"WbtÃ7„0ö\-„#lV\Âø¾nHcÏ¿ aÄKÐa•!Œ;Oùý¥E¡Ærñú‹Z8I / _\Dዦu“Y/Æ.š´à„ð¸EÓÐ`Åh†›0 ø8†5þu(ÿÝ’tÌû ˆžþ‚ït]-¸qëPA;¤{ƒ)¦ñÑntIÙz `0ùx_·õÔ'’pH­¸‰â«Y¯^ âÖ ¯ÎÀðêy^=G„W'‰ðêo‰ðêDxu¬¯/«GkáÕåZ|Fx|5žá)¬#¡ßÕ(¹r0$ð“~·q®«4UÉ…ç•ð‡'9Óµ(ëñaCŒºÊ½1CM÷!;Œ^Âe4î;.¡t’MQtºT1\ÓŸÝ ôt©{ÝxuÆ»WZ&ƒøÿnàýËI‰àÝxcðìIóUΞ<F𞺌àÍ <FðVÛ•Î=Œ¤“'Ó‹»XqºCDOý&¢W$ˆÞÌ ÑûûP¢§Bk¥ë›ÈBHyßzÄ@Íd]ü ¾‹÷_;‚±Ûâú„¼ŽS€LŸG%_X ´ï`ÂùšóDú®‘¾ä §ÙY¤|_’ÎÖFOad*¨mcç§µ Ñ;…Dï!{ö§@óÖ š—è\¸êY—EÕW;ëò³¡4oÚ:è•ã¼ò¸¡²]ÇUFV ÞÉ•nýØ%Š&w¢{ÐÁq_w?ÀCYÐÑ ´\b‹Œžùm±-fü+mƒjóâ9:›ï§ÚЂb¦õx¡ÃØ cÐ,)¢Í÷ Ï;ŽÛª çµ²DXï»&àåðF[6˜Gk·{V à CY$]EäÛ¸ASŠMÒ¦{q= V™NmB¨àè% O`Áºê; {Ç(jÎ;ã²òO‡•ÿýE”ÇqºóCÓÍ+;Ýæá¬ƒ%'ÐËtãv¤Ki)‘¨ž>‡ÏU‘Ïá3ÅÂë;†¸í·âÝè^c¾]!;zúÆ+)Ü×Ú¡9Ü9Þ¬*/Ž‘œ zá)ÿ á`«ý>$¨Å‰ë³ªÄì(öÑ""à7ï óóuAmé[楌¬38”©ªe·ß¿½›ö˜"‰Å !x¥à†_H{:¾ö²‹ê3'ýþÒBßßyåáºáIíÎy\êBÊv!JÉJ‹Òαâû§³A Ÿ©ýƒÁö jíçaû{Gäª]ßÕÚðýv®äÚIÂW”xyP€+iàv£æŽiÍÉw†<`_?Ú—%W]èëѦ•øÑc)PW>ú½ciÚ†I®Dm<ôñt«»°üWô1’8ÂaGÓp¯NÈœÕëõé’K‚Õë#–H®Hz2ÀÓÅKød\&¹ÎÐSd¦äúŒž†•J® ÀÔ0°ÄJ YÞ/ig”‘¬P|vê%T‘fhüÖ;öRøóìó¨ @}Îö»wÎó?‚ ð2‘wuÕ¸eÊük®O£½£ÓÅéô•aÎ÷ÔýâŒ\â~…%¡ç°s Mölõ½ ¿`Ñ%|œãþ9>äªoRK™¡ Ÿ¾‹¹3íR*¯ 2t£¨X…V”laUeÁb™è’Æz¾gWçâ‹kZ ¿ ßñÙHôØëdàHÏ$|%¥t2ÅŠf<„'¾ÏÅ3q¥£ý•ÆxlRÐ]†ZIZ óø¯Š\²Æàw"Lç®Æ"áð)Çá‘”®5Jyð›äú52JÑõþÀpÇ Ú¾ëí$¿kˆ­È÷9¹<¼µ>*8Ë3kfÀVïÞ÷‚ïÍ,ÏrÙמÂÊØ#_ïÎèÇ4˜íš¿ìáe—´ùýtÆt»¾Õo—Ã\$AŒy5¸Ö¿X ÌÿíàBTvPN²«Uk1Á ¡‘8P¡|úV8‡$ÞØ`‹!†ø£ÇlðW?68 ær&4@‹ç ¡¤<Tzö]¢¹­e@ÅÖ÷ ôýüí´BòÐ["bÂÆWõýÀ:lðÏÆ. ùwDtä!'ÁÎv. –<Õ®>†¥‡Œ÷³Ðámšª=¨¡• AÈ/4äk⣠I8 àk/ƒïÁàÜctƘ‘ËÿW0ÎÇ-¦>@c ³+ˆÑ¡é!ó‚”õj°îkõx G7àˆ`’s¸8')Cs¥irv ÙpŠè¥ø°Í}xw7 ;4¾ í^!ºÂ6レy8jLq%¹ži6Ît˿ͯóïlœ#®–—ý9dãìÚ8»¨=yÝ—9v®H¯ãjXÁ<».³qâÅÑa)vz 5Ce÷UR촣ʸ~¥»D¯ï;=¨ó¢%³µHÎtoèç¥ ýI¿ãÓ9 ͘g×M½|(á¨ö(ñߨl°cž­8Í. ó+CÒ…ÚèѬ%ä¾aç¦uÔGøN )s§¿Í[ô¬–OþðjVˤMŠù2×Ä4Oà¬nš»oÌ Ú+A{¹ïÁðÀ;É…øú“,ô§9ÁL€J ?ɘ"ðCKà}j:^¯ûg@ ³Šä)´²„é_Üß×W/Ô“P¯¦ž4i±,¿jÊ–ú@¥þw‰nbæz÷(àÇ8ýŽó~:uÚ"òØã c«æ½nLº³]9ïðF°Þ:Kzš³½vŒÒË­&­\žžÚУÑ[‘ál¨5†‡ùÀdÚ”!¯X§IaYªÓ“ÛÌçlÿmÕ}¨~Þ ¢÷ʸ²È51;ͦ5_¦~ ƒùûôdÛÕkphïÒ/õ=ÈsX³Èç æÔÆü¸ë¯I™ôÔûfS¥ÄÛ~{ÀLˆŠÛ¿)Øx=4Î<ÌÚ&rð%5`¾»™í@³UÕ±1F@QßF?ó»?pà@=kIjï;W÷hgƒÙ´´vkéûŒåµp[K£×À¬û”“t–á@rÛºÖ–íWÚ0½ø dy±@cÉyXcù·õëŒÚv¨#§cáµX8?G½MOS_0)!™ -Íóõ~.†6ge‘ÙôÇÁLxãæŠÅžÔêË A_—Éú¿Š¨Ó×]›ë"ß=§C±¥À¯;‚¿n_ Á_Sà×uË”¿9N€ÄŽ ¾ï K•¯ÈEtheIÂAÖRXg ŽvÖÇ‹-ÒVó€ãâÈu7²ÆÆS¦¨F¶¿ñ”% ÊâŽS†„÷Îý½NçþäøÔÀ>>÷G-Žâ,Žþá˜Ý…+æu×àåX¥eàÜóМ7bàÜ ŽNk„ß%¬¿´U»ëÑÑâáùì#Qóà¿«ÙVª%JeG)7*lÊÚ¤ý~H7$WjþXÌ•J_è Ïý{õ×õ;£é¡)óA;Vš~½äÄKøøi•÷¡58×Má- Ã³3;›tÁ¤Ž" JÚLþn MêQé¸è—Í!Qõª×Û ›(i3FâÅ{å²Ú,|Eaò ³<Š?hfzÒW !­0æ[½ë&¥Ý6iëpÞ.›´¦Š‰®c쨲‡ŽtQÁé¸ ßk}ÇÔ_>‹“ô6þQ0ý<¯ÿ†1üàÙÐþöÿÞ~ôïÆðZdø>Úþcrÿî<Ì"¯S¦Úùòx Ç+ÐWÅ›´\ú+µí°ò&uCd( Å,PÌ(¶Ù¯þ¾j寑è¢,š«¤Þ>«9 ¥iÙ4+˜µþö›õV ÝÜfš¾ÑH£€F£¶‡¡‘zÐT« ~õÊQ¬_ ðøvAõ÷ªþYp¼×iØÐ_<Gú8ô‘MLÁ8Æ7M¡1ÎMcü†ù3 ™¿áÔj²éŠù3„æoeXÛ Þÿ 퇴ÿ{,¯~<üŠö¡ö/µ_j?,_ôÔ¡S‘;*<_tŸ(ð½Ò¢Ü©Íû…ÿŸwióŸÑ=Ñ»~ëqì‹ÙoëöD&jèì¨4›%çÞÀÓ–çÅÓhéñg(Ù¡Æ‹SØA<ÔµÀÈ LìDÒ‘¤–¨fe¯0³søñ SŽóf^` |”Ç«Ÿþ Ç‹¡ì˜s5¿f5Ë;¼š/‹à¥Ñ«™íB^Üéðwç†ì¼ƒÆ@ö1ŒMóýzò×AÌñ~‹h¹6jQÃ÷êÓaЪC¡9NÂ!î ±äZ°k5/àËÀâÓÌÖãÎëz q:_·ç¹z1}ʯȤֵšÝ~8«ºšçfï­fÐ×Óx|v‘,Ë̬ÔÂ*¢“¼?¤QíÙÚ¯×Ë—C/¼w…rål§ªeÂÀ6‹½ _õ] åZsø‡Ë‘ÿhå´º*ÝEù f¨­—Hƃ§ÍH‘z|mCó“#®Šk§GRû>mè÷æ.‚ Yïè×ÛE>j¡Ä;ú ò5êé_áâO,¾ÆGùR£ôæ«é[l–Þ\ ÿÏ7±Å1|i4[œÈìø=š¥0{¬ôfÕžÃì3ØÆhøaaãxU,Û8‹/c‹çðüx^5ÙSÙÆ4¾4‘çÏðdŠ5™ñøzÁËç3ûBž?‹Ù—x2³Å÷åøÖ€bøÞBO;yî_·XC±æF3^:ô5IoŽcc0è'ÇÌr ¥7í&–ÐÛG°×/càÏh–#±[XN·G³œDna9³¸=–åÌáö8–“Æíñ,g>·Oó¤ øÓ…§@ð"Oz¼ø3Mü™!þ¤â–³ÛYΓ”“Íí³XÎrZ¡‡®O¥6” ªí—W.L=¿?2ƒgŒ+VñÒBv6êèjErQžØ9â~…†e‚ÍÁGóŠVà bù²8^«†_DZòx^«™¨-‚Ø“|A"/˜$7ñŠ9|Ù,ª1ƒ•ÏÒ6&_0‡¤éˆEýå3:âÅÔ“ žóei¼t>[4‡¥òŠ…|Ù¶6-šÏK³yÅrV´­]âÉ‹X챺…l‘™g˜“ÚÙÁ¤3IQʯ¼ñþÀ½@ BNо `ûÛžäk@Wܾ‹²Œ“þ½Þ¬•ë®?’¶Ñ¹/wôä\µJöµ5ªSŠ@\‹:ê;Y_¿½nhXÿT"wbYkˆžGóI/ÂWÊÐcž+MÌÚÍòz”\¼…ëˆúÔÓ»‰ÙèÊ®‹xN÷ìν!BTq/Ú“G„Îó¼NÇÜ›”/1χ­“MôD¾¨Q{øfíFŠ”td¦µæ7ZMyzFøvRf5ƒ¦«5é5àx:ð¾Êa¢Ðc}ØY„ ¢BÊúݰ0úàg+‡ÒG©ÌP6Z9„Þ3,ì~OŠc³Z@•8?…Y»˜Må•Ñn áȺ@ßÚ¹e]¾sn±ž§û,û8§LF¾/€ÆÞýTˆè —¿`ñåø˜!Lû9T‰ÕþHö©=Å}}Õ;Q¢ÔI{êÑÄÐ\ÿê#kkmªÞYŸ”sÃÁçye~õíbº3ý̬I}~Õ>…•ˆ¢tÉ<“=©7éX’Ðnr™Eýî«(`Òi±Ï°,*˜°ûLÌèbÖ ÍÃB˜XOr¢}M¶h´u)ªÐ?ŠÁB—¿PÜb…DZZfbÁ·‘k:1b,€V„§]ù¨øÍ&²ÅF¡'á ˜ßkø$#l6“•`†0|œ/\~ø4ÛŒ¿ïdFÏp>ÎÃ{ÖÉË«(Œ.ÀÀòÕ›ýþ»ºþ¬PŸû9 ½Îw* L||½PèF¨/aäþZSúøk¿Bp)ì­ƒ¯Ž2UÏÑI[¥7®©EWÒø œú)Q·´ètkžÂ*UTeeX•'÷Jo]óp‹as:Útîâ{¾še#gѼAüÒ$m~‹p¡'ùˆäü32g¿¾bt]„³A6¥~[r¡Úëž…nqÁ„3‡>*«“£8üîµúuÏñÊnX²(Œ87¼ñyŸ_7Ôj3* ?NZ…y"±hdD„N¾1©Ï^¿’Ï–OdI­¬·fNÎ?å{åqކ8Gc\òÙµ_ãHÃæ%b8p·6BïCÐËšS8ø?Í×éVxirQ¾í庤VØ+½0_××;T¦²øã]‰Pœg Cê{Mä>é8/ÉFq«hçFÀâH2&<‡ëå‰|R£’¾ãXu]ü‚O½o×Ì"££Uïû ýðýqæZøkô=KM¾g°¤Œ§·ñLÇs÷bMðD“tYÞ2¿æ[ñDþèÕ@hÀxzÝz,³â¡ ¼[e<Ö‡õäH:S§Þð.±Úõ*^]—Ü$¢ñŒé¾ãª,>φ?ÉMʧ¾ÓÁ}ôÞ{èèèj¦àÁ²ÄGÑ}ˆ­J$ûÆW÷É·±yOaç³…ÿNBÿ½Š²´º#¦€{+æ0›èŽF®—Þ?çöѦ\uZ a¤ï-A÷`«JJÐ^{uXFoaq—2ó* `PzìâU@ùV#ò»pX~5WÀ²S£÷}ÙjêÏ0‰ØšÆoèx£¸†nÅ­á¼ÈÄšØä)€nzÉ9 ‡ðð˜…"äµ”žibgÕ´5QrÀW=aöíOjuì3­,!ó(ó¼Ÿ ™FG¿$9KRôhùAž Ú´º?6âGÄî €Ý–·Í&é•|oPÀ3¬Ñ÷’ötÐ÷¬ÛœìÛ–ð;ïûEòÒϤ7Z|nxúEƒïkøóóßðç‰ßiøódƒï$üÙÚàë`½x0m9Ð2lÝÞ<™ Bþ>Óþ8…%é–c(ƒ­‡Ä(Q¡}PT€’ ’k½Ç»€Îˆ ¯…’«u¦Å&J‡*fá×TÇûÿ¼…3@ËC…äÜN¡ë±fis‰ž†IÎå†ð{dt°ÊjA>å+¥ü>+”Š{ ©!tÉË{ަo9>H8î–ãAÙéÉUvçÇä2ÛaõVÆ#€  ¼+˸æ¥×M¦5¿‚}˜¯&¾Iž{ Ü”Çp õ<Ò´E&ÉÙ@¨_?ŽÑ§¿E8¶²“åuË·`BŒ&‹±è÷Ï¡ôDÞù9& mjEPžD<ËlÝÊ!U½„dK‰å±;~Û ,æ(ëQ¿BeɺÄ蘇 ZÊ;ØIvæìŸy^GßA÷ü ûÜÇKxS‚ÝñYO«< ~S¯öènÕ¥e«c?GïÛ÷ÿd¢}Ì3hÎÑ8ÖqjÀ±Ïœp$:Éñi·í«S}a®äœ  :Û…^°åX£Ú1~ë>ž·¯."ÝÙP»W6¦ÎU|Íz]àÎNytÙ­v5k;·¤Tyµ:%SQ½Q¯“œ•. hÌN¼…VöѹßIÎÕzŠÀç¶ ;ZUu­‰¤›%'ÚÊÜy=¹x—k^·úSšC•tžeÁ ºëZžæ¶õä`£Í¬Þ(#¹"°]k ¯láó÷àÕ“Z0ñD2%Qç»xÛìD>ïy’Ä1$“m4aŽ¿LPP¢ÕèÇPèd Eï˜ðÍkXwÊŽXgí ð1¿ÒC’i ¬àÇhÏ´vùðÊÃ2¹dÎÄuËï4©N~¾1Г«®Wý:0¼2e«¿ÅßÖXj"§!&,\L`R¹1:„¡vuÓ눡ñCMÉ1’scÞrwc€c ¡O —7Y¼˜“=pŽGƒ*À¿B½ÕAÌâµ Š›%'ž°rTÆèAü™Uá­wüm6d6gêuÞ›E¬bB徺k;äsÞ6ŒÑ.JƨiÉ9å’ˆíÜh¬¾ëVÉùs\óðmikS_Û`EXP¦áÖ6÷Ã1cŸ $ ¸—2~Ò#R`ØsYžª®| W¶´H¹ÅqçõÊöñA¯{ÕÄ8_Ëe£Zœ‹!°j„ÍHéö¯3"]WÕžguºÒ¢Àžø àèÊÊ}È*UïLW¨D»z•‘<Ãkç…dj‘GÿÚhXVïMøbR'úÓ‹MÞ_\ ] ñæ2PT kÛqɹŸtáNä¯B‚&oÄå°µðfð Ыì\?0 7çÅÉ'ÊW ¶Â÷3׳¼¿ò 1Ìúj½Û8“ÛþzPša=,90Éá|quc‹©±Å‚ ÖW³1ÕÑí¿¡[¯VHµ´ª¢¹r8+ùÄÚw‚27HØWñaÉÑ@Y [øB3pbÀ_âïìXn=ÌÞ Í`jüÀ‚ܳ¦0¥ ©ë¨Êa»wuã{¦Æ÷,ø'“Àô—¶@ ô9’3•®ìLÉ4É Õ?žRëq˜k—:‰îYjqT¥ú%çˆ.UiÔó!²R<‰û1¾Ssã›ÈI^ÔÃs`Fÿ÷³qG=‰ñ ÅmŽF#+Vœ&ùùì§ððÄ AÚ|ŒjH½°þÆNSücÌöÏþ-Æ‚c9õÝ]Ú†ÙšÓ{>šú-%¿í.7²ÙÔµ ”žfݰÇ1zÇ&á;èÚÇAÒ JuOiO—ýê2Œq­Ä º™èNANýñ19ŒÚWñ†çâ!Þ5=R 1|RmÏúýt(™5ùþÁ‹[xfªAéF%À]2mÚA;6ØÔ|7ì–×®ÕãuýF9ÚÑ)¹ cHl%ï?E ,H˜ü{ ‡Ü`™Ø\œôõi,úM>{M8ÊŽ8NhƒéÏ8>§IgôY#†õñR\ ÀÚ iØ@ô›î #¿–YÛ-(Oh™‘çÇéó:üJ‡ú">,+­õ™áÌãÅh?Ožóö¿KÐ —H$h¢ä^ÐÚþ –wÀ»r¿¶ðüX ¨†U`ÅÛ¼?¼D¡„ð~ze/™Æ—_4²¼6}Ñ÷/>ì5âwë«<ï°aþGF/Þ¢Á+‡“ »aÓ0Û>õΨ3µð¢DVÜÔ‚™­¡ï&[vx#PÈÊ(Ä s”·“Îà³XÞK¬øEÌÉúDõ^䱯†í xsB§‹SŠ;$å´ƒYÊÁ\ëy•ïÇ­·>†›O®nl55¶ZðOŠmßÚoÁW;7É™|ùI؆ûMû-øÇmA»<”¸@ å‰ÜÚ0ݺ3¹¹ÜdPv’o)¡™¤)ÃO÷ˆ´æŸ4ú<´>1Àý“'1 Øí‚øéy@ÓSÛÖ½î—ÛŒØü™g@Üû åÛ„½IÞDõ% gÞÄ‹ar/4ñÌùìõã¯ýþ”Ì…ÛYóÔ#ìÌR Sä© Ž¹c“ëñÀúmèË(L>º‚õ—GQå4k Q$-æzMJÍêG[ŒrdR{u j鋦ÊWÏý°úX‰<ªzN¦2¬z½^'G ÓVË¿„m€:aѯ=]“›£Æ?#(¢2Þ»¦:>ðs§Ó³Œt%!?K™.Ghy™/¡÷°¦pœÉ±¯y÷ÀuýuÈ}ûzäïð…F }çh«°ò–¤ct,½¾‘?€÷™Geòù¿AQÄË:Õ) §ö‡¦ç;ϤÎ'âþ‹ïﬗõûNâ»ðÎ÷»|õh!ÜtÉR¶úÐÓd hpõ–Ê;QLrWv¸mjŽ;¯ ž; òÕNÅËÎaMýJH'tÎQõ+Ù{2©aàòA©/\‹n=ǾùÐ.Pâb?%„”ðRÀg%î²%ól:zE-ËÃóÕþê÷õY‹³0ýˆÙÞÞ‚·…ވܡ ö-Œ4ìWÀoßσkKÃkÅžïÉÌÄk놲ô9žôTlГžFöžÜ·ÐÃŽª÷÷k‡`KâáÕÅ€PÙ*Jˆ£xênÅ›’ZÉ&’(íiÀƒÀñŽþ(y èZòµéuÆ1ðe¬öe~‰„/Êi÷†qB:-"ÔˆÜ|¦t©oœÐN24còÐ…ðtŸ’´f9t­Žª#xö®”‡Õ™œ­Jl0oF‡Ô_ÝÄ3†ÛWÕØó—÷Íx}+èoýŸœ­ìvPF[QŸ™ R”õ(Æý ÐmyÊxÇ鄯5á*g'Ø!ùººÖ+íiÛžš¨z†ë3kõu†,¨çuTvê+nnv+·vfÁšÅîÄ~áwZ  ²óÕOÿ–E<ÑÛ< ¥íœMÝ8g»l©m\XäGŽM/îr/z( †€âlgƒPKžXgøF:ôÂבdÄî±/<ϘÊ.”ðy\ýÍ(âb#xe·gAªÐ†ÔPŒ†ßÚA±±~k§×‹w9\cÊ ‚§x Jfµ,Ïéqaê bÒâVVOš¸ÚÀ9-¤°Ö!~l´9q”&’DÁwÞ“¹°dNŠÙdÐŒdð­:é·UÃ#¨F!÷âI3*­Õ·J›>4c,`AYnÇê2úWcGÍã)IÉi†ì¢æí`’нƒ²Ñ ›wb¬q«äÂãeKÔÌg«\‘Z$9D¢f-§Ä4\©Æ„© \dyÀ”Ô^“BÕ·îÎò͞4qsƒ3g$…9†1 ¶¿ñ‚ÅqA/mþY|Û- *Ȫg%g4ßM-0…‰Ÿ¢4¾ Zrž*d+¤ïaó¥°b–o(+9+ŠE_ÑeÒ1G[¸n2n©yXV¤ïÙ&¾ê/ršªÕ@K g°ìY’ób„ˆGÙ$vã—QÁª‹ãçÃç=ønü âï¢DùºPùÌØ0°˜k_ÜÖP*a câúCœ²¼¸Í»ÉþzÀ=?^ò¸ækxéèìIÞMéÅ\ˆð’ãg:ý/€”S1¾•Z}¸)\D×_ÀB{±› ß  µ±½ÃAØâ×I®7á1WC«I…ÝØ3¾Å·"h ’?*dô¡|4ßJ°ÖLÎ|1ü3v†žBmiJ§…‰=ú‹læ•Á2DeÒÃW¹E, £”9¡,;¼4‘Ó›ÆO#’é-£ÜG¡ ’qzÌÆ3GÛ!ÊÔ¤Ófé;02Niƒ0Äþ®á¡ÞK“òV¸ÒDÛ¸Y¯;Û[ / ß ér¶éE}eî|Â×ûñuF¸†.¹9)„’ÃŽŸi^yj èãÃMçîU#ýÀ„|¿ã ‘Ó“{[µu‹|}lD‘I\²Â‹ë Å[´dC4/~ #pÊ’·â³ô(šGE^¨ÆSF‘¿Kï¦R½Ê±‚ž´8A…§9<ÍÜæÔVÛZ«®ïÇFè½s4.tì¯ê¡B}ÐàAy¢Ô[5Z.¨QQ$N:uÿ™5é/êOІØnÊÔ•n1s<–záµûŒQf.± ܱõŒr2y\³‚°,"@™ÞŠD¨$ç6¤‡”¬ O\Vá/š¾M ÁW †‹°èCáÛj|+¶˜`¼ÚZGómb}°¾‘¸ž‡’ZQ ?*ÇnüW/mº—ÆŽª¿@IÏ%–[r)† ªjP¾-öyø¦Ù‹õæ`ÉkÃö›Aúm3hƒÎ"zE}ï56v\~¶ÓGH®¯aÚ 4õ@Í]Óðó Nå6J/1„ ¤KÎGð“È*çÆÂ,Ljy”‚Bšª4%\ÝO·Pn8úô ´÷¾©ñ} þÁ…ð¢ä5è—ð­4m±Mëä@m[P uoðØEZ2õâTà"ëw/'6iv¸°a/7Ó¥;|Ç4¿N_jd£‡LyÅh }4{ÝxèfFÛ/Db’]b¿¼Ì/–¼{ÍÔÂHÊòEˆŸR”BÐò»yî .œ…KM©{ĺw…ó'A…Ê甜+=ei"£kw…a=ígÍÚÛ5–»În¥Bñ¸›š*cñ¬b[6ó`ùÊæ£^»MŒ‹"Då£ú£©¸zÔTQ"j´ ÎdýîòA¼>(£”ïXH¨û ®…u$´%7–õ}Ÿ%4ú> ´†Õ …Ñ™Z޽Ø:múˆ¸$‹¸(ÛºVÃø ݲEy´w >j‹‰ù¯õÛD*»b1½gÄ=0*ŒÞÅoZcãýó%: œÀwЋaás»ðÑÀ]ØË4z#䉖†û:9!¼ã!£ß‹7%(!¡w8.3ívC£šÞ÷qæi TmÜøSï&|§mKåZ׊ÑQ²5Côo¼Ê@ kË|}yÜ»¿d½ÿ¸¨ðÎÅ`”·Í[y1HåÛ¡}(œ<ŒOxï¿5¼ª¯ uD PÙÊà;ÖÓn–¿B¥ŸDEuã ËÒwR= ÓÎæ¼‹_½g¡þC˜U·WÄ¿ð´4Ìy€Ìsx¶úÒó0\ž™Š?Gb¢>ïà0=Æ+i9ûuæÏ‹¿óÔ«S®¢–ÞĞDŽ‘¢‰Hõ]¨Î3qk$’ïQžè/7ùgªß?†{®¦<ï‰Awœ©Þ‚u}^Ö›­^Oïi}bÔ‰ÕTg©¾-O©¾p·<"©!”žßåÞç¿s•cÕë#îV>¬+4T_¼WžX}ñrtõÅŸÈRõEEQ}q½Y}±PùkÝBcõù9µ¶>‘gµº²/Ir> žfJN›xº]r~K<-‘œ[ôô”%9/èèÉ&9â)[r•úéÔórÉ•GOÃr%×bzb>&€vîe”IrÎ¥_?ØùìQ3üJ¤_?ÙÙpM¦_ÊÎg^Æ’úµ~gºœxcúÎ4x„!HN¼ÁÏûO=ÅÄCÏé’k­è¹P¢½'z.Ñz¾ZÀ]Øóè×_EÏ÷Ó¯çEÏÒ¯ŸŠžú…§TwnÀ™vÖ‹¾èä÷0»ä:KOÃaäxûjÝBMìÙ^]y!INgÊ7À¿·K.š%¹vÓÓP|qâ¼nS>/1ëï=xs»ò®xƒ÷Bú^‡7:·o;Àa•\e€è@”OO&€h AE]Dˆ.D ¢‹Ñt@4•žFBólj+>DøòN ¢¾IÔ Bèâ"Ö 0ASĹwxI6½»ÅøÛ$ׂ¾‚'ï3‱)øá~¨à§–à9»ÝAÞß~àÕÑ"ŽÑþö½hŒ2¸cuîhŒ=×åúg¿XuŸI•·SŒ’ˆ””G=‡/Ù¤”š™µÑî©r¾ÓŒ¡ì&U%ó–yÍ‹h~|ìö¾¾’úí-øÌ*»%×K:ºö$dŠM” ©·:Y'Ï«NžËZä²:½³½'_›:WžÀzÙþtF…ê2ô”»a®ÒüÞÚ™@ù^ÜŽï«çèX£Ò¿Ÿ y©ó1·£{&d`Jø˜ígê"´06ûö°^w޾„¨ñØŒ;;¢ú!?ð+¹g6Õ÷Òš‡?0™ÊLÙbZÜyݹê×R¢lïþ`l·»(®¦ÂQ e£×T¦ç:N÷dç«ßÝO2R¶ºÖlƒùê_’Â7Vé&$1³zDøwàKõpÊ}øXÒaÅzP™¥’ë+ *õ¢ØšzÜÁ®{á1[ý8K;'(9àaÛîÝø¡@ÅàFWÊ•ÒÖ&é÷˜;-kƒ¬7x ¨EeFµcV_k*âãÐî!Á»º ˜ƒ(e5]Vó©8ðj×±Ú­™P]6dùªwã#àÙ|$sôãÉyæÝÙQ?²ê†9j]T~a0uÀKêì‡ZgxÞ¹ÞIo¸±$7@w ƒÝÉ»´^äaÍÀ§d ¯ÓD;7hí¤à@0<£n´ôÆyje}hjZÙ넾~ù-w,'øF;[Å'99Øî¯"¨Ý÷f×¢vó#þ|#$çÁY€…6ÐÙ¸m’gã.ÿ‚n)xÐnœŒþè;ÈÜKHèE€(d|úwã[Фb¯ÑÊ-$ã¾W)1é&JTÚopá[JoY¹ÿèsü³ŸÇ ëNEzqîåÖX 4F·¿%·H®I¨ì\|¢7(rØûø}tŒK (ü; ?-¦a<¾ÏU=D\|ÏŒç £D±…TŒ†@o ÔHŸG­Oj!š€'–çŸ4‚.åôó¨f$~òv;öÅ€Þ#‚rêæKNÌå¡mŠ™‰¨åba×±Be4§zm®íX?K£f%1"jìÃ!ûEÛÈ œ«ýiÙˆµ¨J¸”äþ19IíÉgÙLu&9QÌQÃ<úÔCú‡3R¶Š¯o£Õ‡ì;>¯^|¯º.iÀ9ˆÔ0Àæ,ýï1xˆ1¾¾Ì &a†æ9¼ ¾f/æ0eãꆉíã}ä’f÷|;®Z¾7¬îµP7ê–©ë=7¨ó™¨Ó/®lìO>‹9|Y|M#ÕY7AloïO.ëoùÀÐþ^¢ºþP¼¸Ö”¥xß¿ìõŠZ¯b+0ôg ¦›Ìƒ¿,ÏÔ꽫¨XÈ_ÔNgìxeLmÛû·¯´¸—Kþ>+ÞI£cx1ìÏaÓ³ye,}/îtG„Ï”o,¯Œb›‹Ÿ„Ûªm-•ñáŸõ™­3©¶dm¯LÔö#ÔA%ËÛ>šªM0·ÛÃ&¿{þ\C¶ÊEÏJ¡¸: ãùý (æ|õÅ}~Ù\ùãQûŒ>x¡æT^LMìv´æ“˜jëãÆ 5§fÎo?nb•]¨“t¹ŠUeMR/ë¥`ÎM:Êj(¶$ŸXû£äމíSÑ¿rDž>žD¿2ͯÄû•8¿ kèWT^ÜÍ>ò[»‡8“1hO½•‚zØü§-Ž}‰ä{÷ÛÔ \`ðÌ”Ü5¬Í[O¾-¼X<¾ ãûÒ|›¡lÒ1G¥E'=Ùä¶ûoÈ3SÒXÖ¶YU/Y+M| +2³k¼˜s†+ÑŽÓŒ‘qÆ-»#0Dd'e4B©³7ëÒ`€;›ÆÞ¼¯^Âw߆qÁ»µðne©÷ñÀ»8xW"Êý˜Þ•ÂÈáÝ"QÎFîù·Ex¿Æ˜«¼Nïº]¶ÓûàÀøOKRo ®ÁD/’Ã¥ ˳Y°Ú{«5 •Dß1Šºh`ãûkó>ãã€ß.r|jBf›FR„ßÚƒ‚Ä8QûúðÚôȨ¡pisvÍ)d‹«a.0›âÑÅSOf@Ò£ý ´·^QmÌV߬çîqû ~¿=º”ÿ/@tx 4žòŸE™L=AðÛéa!ñ øA^0 yaÕf•ê \,‹T¿ª-_ÏÇIoX?ãæGy±Z;¡]ûÓæáˆwYRg9ˆðÍÓ‘a˜xÎ ú(vC}×<¬Öö™o‡ ŧގÅhöíj÷¼=ß õ'½aû,(Ó˜Œ›ëŠ?«²€¢—Dû{ó[ZA&#F Ãô½è ¿ï¹@È+ª©š…/ òïÑÁ+x*u0ÍÞ_ 9Jó®ÔnÕ‚fn€f’¯ì=0Z¯)ØÞ ÑÚ—B•†„+`øù¥+`Øp “iç6ñ”uq4’Ú<³ˆ`æ$rÞðâX‘E3Ðëí¿ƒ^Vs‰“ÞmÄ^çTîX‹ãâ슫“·\‡PÊï¯nO„÷óKXóW×Ý_|_ÒY¡àI%j–göp{? ÚŠ©®YøïÖ91’÷¸s¾`ç.Þp¶,ZݺžL#˜‚£3Úˆ ]”ÞB¥Ù’gLPšµ±½„ñá-©›²xÙ¤Ð4úùul["u?í¢vÇ r>áºMtK¯„ާr7^höè"yž°Ë0ù6‰œÔ‚ú¦‘:ô¹9M'Ïîç ÆÓ8㺋ÝÝ*º{¹"0ÎÉ|. u7šºÃ ¾Ç}á/u±èËKþí­ÔÝ¢æ>Dm°±4ؘ`ï[¶á30˜Y¢÷[+ƒ½SaÑ5waK(ýd9U÷šý6œÔ†Úb P¾sk9lkËå D–‹¡ê±Ð/­ L€€…¹ÛNåPu/Ú†jÕ@ˆ ¾ËA0¦°50‰5Ð@HX6 æ°YØ6 XÅ;, |¡bæ,aë¥! Ñp9FA6 º!³ð;%lŒ4 WÌVñ:. mC½Ka,¹ê¨O ÝÚ6OòMÐö"%0¼Ò³Äø°ˆ÷6ª‡ê×ðÕ»øÔЦZ  ì\:åI£ƒ÷^·(qV',o~¥Ch”¦¿þbVdòV_DUÐ÷Ip™¼?Æ;Ç }CéÁ± rýàÆ÷2J;& éåÈÕŽwˆ^êåëRv÷ƒp ñ«ÇËDФw§øö!=CªšI¢«WþÐ1x¤x3.P‡Mdç¼I¦7¹£èë…¾^±<¢ç GOA ²D¯þY#7˜MêX˜Ôïí~ACµ>—áè¢ýHž¯“ŸçÛ¨•còˆP X¶~MH‚ô¢‰’“„7~ó®ôÀ} Õ ô&µ‹¦heþr%“{+¶’«bæF_ ‹¼eðmM5úX§ˆEÞ‚ d3 35k’Çs:——ÿŸ´§-ÝqáaióvÔ.â·V³ª›èÎls|>#5ª":Ýmü™´ç¼ZžÑ¯S£Öu³kv!ód£Yñ”êäyÊÙtÏp̈µ Oúº<Ã1 qâ ï#^ήóñ GQrª ¾½žáõ—ˆÆ¾Ãw'µû^†–äQžá¨òîÂÃO¾_B³˜èÃ׃Ÿ†ïÂãÛ/麫ŸáK“g8&ö½o1§ºïoÒž‰É‡”C锽õ²Ñ€DˆÚ]]ág"ñd\ËÃöòƒk0Ô6î~kaÍia4í• |Ín{[õ…¨u×òÊ.níô Gß  ,ÁŒmhÃ.߲/¥²GnÃ(Êqw¥ÊôŽæáLQÕ×ÿ%rÿOw±q¾w>Xýu“ÑV¦8L¨›B­þÿ¹‡dÿe~MöÇL„uÊ }C}ã'FiO‹~?;˜ Ú¤N×#G±–F5&ioÒ~ ›=ë/|"âvqÓÇ•XÇjn»Psª¡Çï¿ñ.àÐQ«™íÂÇ÷_è¬xu´)BžÎŽ²ŽšO09»£sžôçâ¯?1pÛ×ÃkN=Rã÷Gí:Èl_KÎûšp=p¯¦½¦ªÒ™ÉT<'uä¾¾ÂímäiQæx"Û´”˜î­x­ÒÎ)H¸Œ”ë`á†^Œ…×;Üø%NÍû‰íŸT—Ã^#ÎÀJÎHS‚ÇN2ý‘òŽþaòhGÿpÉ9 g°÷kߥˆ»¢C|úÚ×Y6LüD W7­‚=NžÓkÜ êW·ètâíï×`æ‡2{:îí¢ îõÓWÉmâ¡ð ýÞÁ ù¡ÁØ¡Ca]P¾?4¯ÕTþD«ø˜°³×ö[6L= ´kE@»Õ¾oEäˆõðÉ‹.Ê2í¢§ºÆ®Ó‰‘yÑÛWöˆø†½¨–×B¹Í€æX4ø’+{Öš“ÚCéÉxqþâA¨PÒ+‡€<îè`ú1^ eR_?våÙª¿g²â¬ý¾¯ôý+SÏó0Þ eÅCm¿ôUÊ=¢VŒÅV3è„•^9Âú¹­Ç×`%tÀNgÖ–wœÎtçÛQ·Ûî'g”öʯtà!’-HNmªc_œcÐÈð–§ÄÆÉm®V%ÅuL™ŠÇvŠ{¤W¹¢²J:˺úç¯sxåD¶oPQºÔM¯`7ßþz3ièôçuÓ˜«ròÅ)uÚ+â‚øeëÀÇä§éL‚ÒêÛ4,;_kÎÿg­`çbßG}Ö\2É…| -4xç´HðîDâweÓ¤q<  ݰëq£c/ÌÃÛf•]#dŠŠ.Æ‚F߇a¶.3^gÿJ±¥æ"JÒ¦(ÍŒ:ŒÛ²U.Kjg}³;(ëlÅBÕaGPÌ|Ž5«wþˆæi°<Þ²;³ýJ´°l¢Qq„ðÚU«ƒ ×öÎ!Åš~¨×ù:ñü~YžZö HnÉzAgn'HÖßßû#Ê&Ó{5Ê=‡`AQ­7ÇOúªïˆ'ïG|¬×mǃœ ‡Ù'ÐBéÙ÷ÅÑU!ž²KóuUšØAa­7ß këAˆ¼ÅñQ5t ü8B•ƒrçaŽ€Ðaõ™ü`·ÐÙ“ÿõ®—´è}e·uW§&Í“œeHÀCƺh4|bD /Æ:œMñžÆ_bì%ãŸÂØ;Ž£õÄqª‡ÙŽg†Ÿ£¦ü)løßþÓeÃG2ôƒŠ!£?¤L‡Áë@VÛ¦òH9²Õi º]M\§º“8~è$'äôx´ Â7 •©×‚¼÷_ Ðp»¸×yü©ž£“G—ÍËVoû®8À,Ǩo/’)¸æÅ¦À™,vQœðûnÚÖèùGãq’ Ûød˜³éè+À£]&ÿíê÷þÀí(XÙêÔ‰óäÍF¼ÏÆÝqÆM…¦V‚&SÍβ^þ‘ÍEæW¾ö½/âµDfåqh!„ØÕ¾£÷Æ«ç—M†¢FàŠp»zë ×õ~ôýÏ@—ŽF¡ƒ¶J$m•ø »5ϲ[*ꈦý€¼f²#[­ªÂôëýW.ôý-H3f&o˜££J’ë¥Hü±p+2F³£Ò‚wiWZâ«Æ«wG¾éL Öíô¥‘$•ö séOޤP=W„ Øš0¸¡ Cf`ÐÖù[4$9;Œ°Õ4]r6‰§’óf#ecV8Ücµ ˜NnœÒÖ¦ÅS‹÷’˼1/©&ºxu^ ³ÐÎ…i.¬ºâ&'^ɺN—¢tÉi¤jH›³ŒÚ&馫¥r:fIÎë–6Þâƒs"ѱné•J‹ôÆ!ýG¬²;«n²ó˜òvŠ¢Ê?º «‰“¸»VIä•=°–ÔTb§Õsyq'°ññä6âVhòu >èð¾„îë#Kp‚¯§ vTö褭 ‘Èè&9Ÿ²ŠìÉÛÕ¾á ß—ÜJ(?¡ý¯NWLK«¦vÝ@ì*+aÚ·xž*íYëç#©¯Ê£0E"‚éMÂÚyjõCƒ3”ÏÙGË0]oŠ÷ºÁ;âë§þòŠi5Íäþ˜éû³é?;½ϰÞk‹´éÄ ¸/Dë=Až†膤ö”¼Žòq Çoã•Ççç*Ã2àÕÚ¯à!u›?Ýæ/c0-½‡,ò?AÝføjžº°æ3áàÌÚæ·X#® «+ÔÄ¥ºØ‡ïï·.OáÍÁ1Msç\ãkÓÆó.çpü·Æ\湆n•Ð<ï’NS@RK‡[žá÷ª—´£Ù¼øxR;?€´‰}Ð÷Ѳ¤öä ¬²ƒ)]åcêbo‰hNlDø<8² .á¦äÄ@.¡ºI›ê ¡q£¹­«Î8bÈv㇂ÓwVL_¹TCëáR<®GLy7vÞaé‹Ô—¥Çf@™ÔG$ç´ ¡ÑÞe‹FcËB# ?(&Õsô›Ñý#Ø÷üù@wÇÄŸ‘o”éBrèŽóxUI˜]ãêüdý¿ç'Ÿ-øÏüdºà'/Ž ã'Ÿÿ3?ÁÔnáüäù ?y<ÈOÎþ3?Éù¿ñ“Ø«òŒK&~òOÝ¿ã'ó®ä'ã1N£Ç~Á8šqlË 0!Iþ™dEâÛ‰«Ó+M˪¦L5ÈòÌbJg‚x#¸Ã"?ŸéH} ¹ƒ “Œ±ÑÞï]•;Ø.£¦#ÌCw3w9w Þ0Ö?„7P®Ñÿ5oøùÈÿÀv]Æîù ¼¡ä²Ñ¤ŽüŸð†Ñ#ÿg¼!vðÏúÿo(ñ¿ç ×ø?ñŒ ç Ï_ÆÞ‰úóõä †o軌7$FýÏxÛ—ñ†nÓÉV_Á–_ƶ›®à ç®Â>¼Œ7”™®ä ÷j¼aÕe¼áNÓ¼!-Œ7Ürá?ñïå¼Ó§Ͳ™åEh¤°„Rhð<ÓÝÉyfÐÕ¤MOè(6lqJ1¦ÕZ „¹N_kõÁs¯­³ùæ,ôËãðs9¦-£œµ"9 b©Ë×;Ûßñ‡%h˜P#`.æZ$WüJÇÑI íJ7T_ÛÈmÑ@ݤ=cN¸3ôÉÍr‚{ɵð—ÙÌX±À¨¤Í÷Ó¶5§XMåPKY£-Æ«¹²ÞhŒ¯-þ\¶¬Nªµ}^]ùù#ìüüÕ­ß‚—€u­žÔZ]éÓÉßÅ W”ž:‹{þL?ëkQæ‡ÁÔƒCšÈ­] ÒåóäôX,ôÀJ Å]ÒÛçɶ.·Ý/onÁ*ÍÞðÙÙ.ï£ùxÊ׈³5Æ÷^&ü(ÊÜZÏw…÷ ýÆ]Ö/4)9è\ß„ÜmªÔæ¥'ø>w¶K.qBbïR£ ÷}ëëγäjËþ»R½®µ)´æÅ¦ÞL}œäš +°šKê]íj_?:@9#) 'Þ®ˆŒ>I £G¸áÈË%Úôq”òü2þÄ“Hytv®©pµ#EW$±_kõÑÞίrµVýPCy^¾4âW1í샑hÞÊŠWS?„RY٤Ϋ·~¨éôTÆeŠR&¥ÎÝzRʤ4ü;>eÞ±$AGvuÖOüþBaR¦]xf‚ó±üœEr…€@$P‡À9y! AjW¯» ýñˆepŸOž-w^8¸„;áàÚ =þpëíêÑ;Øxu2@Œæ c![,Þ; X¤Wú0^™G’ÑÚškdt½%°@ò‡ ˆl¯ôÆAëóñ®J糸¨K—ð’lÖ2µ#MÅÚžÖ7Ž9Ä–.a%ÙØƒ=‘/žÁÏaöYø3ßè^Œ“ã/õ—ݶã9þu¦\GS¢Ý¯tp[‡?8Óq˜)ž_È‹bûâ’‹ŒÊ,tÙGs˜Âƒ¼$.ùcvT¶€.7P7ÏE­Sû;FÇ 5›"ä:ßW0a§ÕÒ`9ßǘ¯pψâm¡ j¡rR»÷F *$ì¸Ns…Ïþåª?þéØ;È,v•öçú Ì…Ebu¼OS¡(´B{SŽa³ñQà›­+Gmõ÷"¾i%Ð«Æøý57aD)VÏV_ ¾Yé}ãVrùŠ˜í?g[1'qqŒ{£‘d‹M83ÝÖÎl˜Eÿ:ãÐy„I¬*„Éæ×ðbØ q)FVb,Î#¼èB×,)ß”p4×î_«Î^Š Ë;}©Ñ:¯–%¬Å“ùSÑ1Ódž©c“q21B€B–ÂüVÓ0ÿȾF2åÉŽÖ86Ríš(=d}êûÑ‚¢1âk)CÇ¿p³=›’Ss '€e˜XË0Â0X†Y1ðŒX^|¨LF4¹Î”ˆ¤ö É…w÷zÔñ¥ï /®Äô° -Ù9võíh…8°ùwèBäK%h Tõ)­ˆïUmVú/Ÿ•Ì;œ âp}±À;Íó‚×ãÏq§n*Èw?”X@Û+ç%AëN¾Ïæåøeór<4/4+}†oš師wè¬8ñôŽôŸ—ó¹61óƒóì¸ð‰ÙÅo¾lbÑŠø^®'Ž+=Ö«¨·Ö̲$ôñÌåþÜÌ•]¡ùAeß½8šÙ†ÎOˆËáóÓÉmW›Ÿ(­W¹}Žùéºl~ºþûùé:?¬Í{÷@`^Îjó²$8/ucÃç¥çåVm^Ê- gsóíê÷EoÆ…oŒåkch—šØml­Ñ;aEÇ?©z1S1Ð[+¾¹ZAå ÿ]Ä"mÉ8™±Ìnfv#³› ix\ ú‰kºŸÄ Zó0:‹mu~ÝÁ m’‹LÌ]ûsñ¸Ö%AØAəމ‰¬1ÀrzèõòmüAcrRùT5qVÀtGc{+H¼X[)ÛßÚT žîB’_P¸Gär~'¯Õžø"sò"KÅ0hîõ_§ôº¤VWC‘˜Ý×<”;y†¸Á¤hwT]VÈÓñFVÍ ,¬ †˜YÝ•naéf–ÍÒMLÏÒ…ŽA½äܹÐõUQŽA ìß1hÃâb"hð’“’?/[ÂÜ÷àËÒl¾¦Í`Ûî¥×c½efW+s?@/Æà‹)}M¨‹K®?!õ¤‘NwaMFÿò­4µ L×mÅVZýe®5ðïÓlëð+ýÐkåñÍ*ÄÝø/ì–ZÌ}˜Lï¤Çñ, wc©dúþ°9™jJ›ðËV„/‹5ølY4[faË`ŠŒ8o9sxú,^ºœ¥'²œæmë ™Ø·«~e»mOæ¸]OÒ£¿çø+Œþø„”Úî·›1N¥__±€“© ØC…¾=¼´/Ëæå&ÇÍ_ÁLÍäKÖá›…—“[àÏNȰ™÷îEî)Å/)PßÈ€!lÂêüêß%±;ÂöN= ‚~k’gÓ…J…Ð +]Â*²CÀ L½ÁÄ’Ù#Û`aÌlC4èîg¼vq§½ãS£ò8_7}A,kî;ÁÎðmØSãù)SÏiàSßO8*x†m}W-ù sWãÌÏHÞŠ1%»ðú8ц¨è¡wë«X¯MD¾]Œ’^ÖÚERí_)UVHjIýÉ?äîõ„üO’èá\ôlEl?wÎÓ@ER¨k|$åaS u^žÄ·=Lá—tFÐ1‚N6'®N$ü¤mê­D‘æ•êêÛØ£Û8†-0±š^mbŸÖwŒ9Ë,aÙ0ýƒH5èÎz>Å‹Fg@!1ØéB:$éšDæäçk>Ñõày¼Qr™(š¡+ûôÞ/©×»'0u› ¿å0p§qeÕ\İLãts镯§Ã‡ÈÈÇM}/Sr¾묧…CËçûn€‰ÓW˜Ä.h¼!vÝ_aòW˜¡]’wÈ´ ñ_n /5»Í1líž1 ¸Ì2SÂÇ ¬åéw¨g@K_M¶:²dÔ›QF-ô.¹yPX³äzNØà:Ò\?!,†'Ãb*ñb+Jß:Èòºµ ÉY ޹ñÓX^/yápB×ߨ¡ÓÁ(æá_Éù)2òÜ”bË:/¶8.FK›ñ`&Å_daG­· ”ã(-ÌÃÓ£‘‰·eçæ¨Y#5n,¼Yx³ààÙÀÁçÃö9$cöž]èû%ÊØv¼Øù¸þø8°pО§‡NúaÄ2Ю1R_û€ßM¼ÄN/> Ëë$=º±ßfqOî—6ÍCåC5:挣’û+¾öbò’„~³»PA˜3T¯@[¯´pûr—½6yݲ2D~Bù² å§.M~ÂÌÇæ=9ù0S޽‰¹t•D÷•ò“UU[¢´Q¯ P\Q<®^y„£RÕ+#` †¹üìˆòžYȳÒS¶‰YX¶‘eÿ8ëÙ±P(;z§&:ºŠÐòÓWÜnInÓä'X{»º(*L~’\åk »ŽV-€—šNÚ„iìyÅ*Pš{EO˜ZA¢÷{ êʕ|AL ¦]½3{´uÖcœbEœ¿"Ú­€l©æ»g9òíB'é‚5ôƒ¾XÍ—榀5«˜“œãh‹‘6N¯<|©&_…äKÀ¯§ ܘ¾áߨ•¨Cµ¨8j¨â Œ˜¾ÈÈÞüQ&:*»ýòhÏœ2¿g¥²ãÖn_ 9ߟ³¨*Mz¥ƒuð7‘?]¦ÏÆ“Ÿ6µ OšŒýq=ÞgŸnd¥&ß+ªý[˜Òj’ôd“ôÆ¡E€K°¥RÃPbY@¸½ …ä& ’ 'XÊ„sH 9›LBm&<Š-6ÓƒÃÃÖIŸ°«(’…æ™&Y]4\Káý—°âQQ@vƒf€j#Û¯0@•›¹%xÁ`=ð‡”L/_.9ð„1ωqµ3ë×ÊžÒììjþ?ôºB¬œžÈsf0ŒÆ Øhr§³ýÆú“ÜÖ¯³1%V9ÌÄ.鯡 ÈÙ| ZrŒå‘|¬ÏQ¯^“´·ŒŒ£GëY¶Ú[Láb >W½]] êlZ‘6xÔ/±ãL#]%„Vƒz`ZÀ.à{C‹+³«å¡j²„TŽÌ”v?l±½Z ¦æÿ#а¿1€˜x«^Í~ºxŒïLÀÖ— ª¦àŠ¥j>ŸÌ:Ÿžd“Ëôe#Ü‹@TLŽÎ8º;õþƒM)ÝgñÉ}Mqh߸Vš†˜4RŽ6²¸‡MÚ6xž©Ùx %V˜ìÃ<“}ÇÃî12%õ:6ÌÁ[Èb±@EiO„£­ä¼!Cæ×J_4âÃwäQê¶›êˆïͽ¼+½‹§YÞqò ePße€ê}Oz¼Ž¾+9×1LO–ýÓ%ç*ø‘î8Yõ>·vFõOèÍJØõÉøxzdÍÄ‘£ñ°Q8o٠ǹÐTMI͵ð‡õ31nü¶šÓç€ãG Ö|†°Ôø ¢¢9ì6Éù#§Mê# H?L…xypqF=eµòø‚5¿zßl*PçŠK‘X“äìÒá~ ’Ýׯ”Ãe‰ùê¤;Æu¹ -+Dj$ùéP#AkÎÎÏQÖ`È'°¢Úõ?uÃNgë“mµM˜ó¼‰Ÿ•1Ú´š›3§Lxˆß…§)«/–JοÐÃ-ÀJèáÛ’ó·ôp«ä¬‰ óY ê®q¶×RÞä•-~kË2é1ÌáC™ÉToˆÐ) 7fïÕK{&ðQ˜ØœÊNfe:j‡+Ÿ»­]<ï€:2ƒÒga„†GæÀÖønÝ;jNc¼Í ·$ç×:1iÝN]c©ñþüù¼`•«½DzŒ\‰yè áâ\~å¡À=e&õ¥#zB¼ÂB tÃnà`yð^\‹øc0Õ<}“X$O„9þ勞Œ9Dr3åÍ Ê«N¸1€†ü¾6oÆ%4}>vH¯+¢|WŠu_ù!< D D¿ , ¢ÅÅ‚üã £W¹ŽUÝ,€çå–éåf»òq –ú4¨Ý}"Kè AE§Xrý–ûùNcÞßPèY(š¦;r‘šVñŽg{!»ƒ-°x2(C*ŒO'ì3޽©Ì¾|O5¬ÛÀ[“q®?:÷^®º(…›µñ¡¤égÌ w†ÒÁ« žDöPª'c¡èª‡-Aƒ-ÊödÜ#êÜ+ꬢ:Z…5ž ¹Ñä¾6O–øbíðöR~LokÉ4»»êœ÷)ÌWdmqT¶$gfÐvk–÷G˜lñLÚs”ºØú¬Ú‰Þ4c‘7¬ÌPAWUø³ã‘ F§I®u i¨…7ëÃŒxiŸ–¤QÜkÖ65e+íë`¾/ëY#=)ÃjZ‘ I„ß$mBÃLß15â†à¥öÞN(4ªÖ|¦ÄÉû¸Ðý÷Ëcýë%Wž@|¿ÉÙI¼jyaªÞ[†'é9Â{/µãè¯\ú‹ÁÈÐ=iHñÊ(ñ!~—bð à#×1%*˜`ήyoÝðˆ{‡=Nùþ¸@8rQ9‘«<™Ý3… ñú“´7,v~*k^Í3ç£Ó©ÑÕ«7]Å3cA›É4“Å$)UãxfËŒ eV€± ¡QQ}Ÿ²Þ|éͶ‚E¹êú[Ý­fÔ¨ï/€¿‹M(!”7%ìgG„C«qpJ™>?׎ºôA¶wj l¬¤Þ4ùYf_Âg{1Û6É (&ƒp?¡o/N<ű?ŽMPï›z™ù®6A=˘’e’ý±o) B‰Ö¡ærEeuEÜAWÔWº€³é68¢æ¹¢Î WÔï‚_멼òP¾ún¡^¼·j69žv ¡â6\Ÿoö>e¥7t ƒ×G:F[|{ÉËã{ˆª]sºÙ˜6Wåo£›Rl?pñd‡\<éT(ëí‹ç:ÿPOžš«žþg¸‹ç+rèœXpèz_ÔòWÊñq}{5? ,Ô8õ)…ÚX(ôúö ®p² »ÅÕ®äÙÕ¦ø¡ÆÐlM˜èÌXn±‘—Ç%ŸgSñjîr+7âmqm¼|9Q@©\Í[˜Azì/¸7È[òS"‰Ñ)ö8yiÍ\;&CÆÈGbV&þ!ÌEb–ÞÈ3{s5IÀÞ[1@DZH¾Êqïmï ¯TÝÈË y–ezÊö¯3ÛÕkΊò’Ó ,ǾMA›út<3ðI¸•}"f ÚëýÌ%¹~$g&†,Ž¡‹í°ŸÌXm/6z1K) }z¹Ñ®î¼G0=36¹gźÖ“°WL GùŽpÿYP2x A~18·QÓ]/ô|YÞ^`B‹r™Ùê1µŠã±V ;öëÑàqãhox¬[ˆX± ]r›f žX ¾;•NILSÿ¦£¯jîÅ›aá^Ì5 Eø0Â~5[p¡ã¢^rþ3‚.®ŠyWr>‰·XôrÔV/9; –°­t Ȳl‘zêûYŒ.`Ðò¶£ÅWrÎÃÇ;úš)îjîe·n™NŠ™vYX=Ùyö ;¯¸®s¼¢×Ov^?Úy©0½#ŽSÞuWëú›“é÷#S8¥XN¦÷Ò– hý¥ZÒ&4èÔ÷¹¡Ñù·p3fñaÄA*õd½´ÕO<Ãòœh·´Õ><99¯ö‘Èd«s]4”…2«S,C-1êÿl¢ü-IXµI­#óœ’Cq¸­:dÜ„hˆu2¯–5>"?™bu–ßÏ‹\©MgÅ[˜R/K°n™˜WOHQ þ%1ð'ÐÍ·\aý ˆ2ý.3ƒÖ‰7tmÝGÙ™pwÚ4­ÎÿÒ )Ã÷.ÔðRÖýÒXN‡bÝÆkY©™•F³R +©¯§¿}‘ݱ¾90s"7µŸI³wûþPϯÑvߥن3ZEï­ß`-=w5k)IwVPæöé­[Æ×'ó& {6 ÞôƧÅLj†Ð¶©-@:þˆY ó¶Œ-i­w5lxOýѵWúoh›ãyO5kQȈù«Úû´o“÷J®4Š”¬&CÔ¬ðûñ .ÞщÈäRWcxv4K:2W&Ò¬•¯“ob­DÄF~tÑúõuÃjõYé‹6ô¡ÇjY4´žpšç Í­–„þp’?àMvsÚÊ"ù²‘ÅqÓÇ:Î?Â*»×Ò.ÿíOhc˜%®¸Åu.¿¼ƒ[» ܱ3èþÙSDJ¿Ø÷¾î…ÝŒ¯R¬Ýkk}G™ úó¯V¿(GãÅJ§GëO ô:<Ì׊¸„Cdߣ«SѾ—”Ü#mÂx¯…ÕsFÈ#R¬æŠy/ÂO·šÉ¸GŸt+SøœæYpøy=ˆÂ6¼ÏÖ­Œå HÁð& “tºBì$'fUà¥&¾À˜Ð”\ ~ªI ƒ.<É…&AhÌÕ.æËâ&Ûz¤GqãCÛWúP”y,ƒI\gb=8ƒ Gøo´h¢î‚@øKÕ\¾l /Ífû§Õ[»¬=òH!s,[ÂJ³ñ eƒH¿Í+{*-°€å#!D²øN;¤8ß©u’ßJå€ïõè:®Ä׈ñIÙПúÐZ<„ÜPÜ£/5â„ßä§Üï=ôõɵèÅìÑW5Ä•tf«ò‚Fï Ȧ¡mÍHs<¢}55?RðÂòª YرÓ[oŒ«ùÓ$?lMBÐðhWÿ…)­^Ä+>k.¤p®"鱡PñEq€¿?Ú ]½¶E6,í¾žþM:aºÐÓ…¢˜-d±«+bPm%ETÀ9t ®ÞBÖ£D°Ðþ°«Ãþ†q^,Ðí]×…)¹šæ+ *oP& ÔÇHvÀÀ¾8”Qª,Ó«Ìþˆ’Qʽ$£0wpp¨×ŸÓî`Çî÷k¸˜IùFn½j>Àr,ÓsÌ"rA›µ«“E£½†4yƒ•²š…9Ðê]9•ìBÑ~¡ïø;¬c vÜ0D‡IÀ`Ø< #€Õ±’k¢|onÀ„ƒ‰1Ÿ-×.qÃà½õ³‘¨\Ëúk>E Îf4ß'ª ö¼fÉY;‡M”Ç#™xëTTM¡|¼&\ÝÌ ª›ÊAõ‹hMÕ”ÿÆÎ Q4I ¾wHÁÄœ™å’›‡è—ÍÒ&TmúN¨ÏBSlåV¥d Cçw¸–†…3û>ÎñÉ9Çþ46î2MΡAª'äA:BÍ*o²ßѶˆ%‹dúu¡³Â×Èr0^º½·i÷hpa|e0PSDZb@§hÕ®~yính×­Y\÷ÅZƒØ Eš6@ƒ„>É\ZÈ«û!’L ¥ômm—c¤…°Ô÷ bY|Ãü,÷!v[Ÿ´/±ieÌe,Z¾‹/À’è!~Žcã…žMŠúP=HþðLÌæÀŒøÚ¹mÏk`ïE’w¸Zy ÄBS &8ÒU¼ÀK—px:¦ö¤É#’ßxØ#?K>Tñ™·*æÀúéýJC™N-œ…g,êûbýÿˆŒOt£J©l49Âm(D$HB9ªYŽÃ¯J½z?|-)êSð&é¶LgÈkÈ…Rêà”Œš©g tÝD2d‹ L¹AŸW"Lˆ·5°R#ˆ›Ð-h¬&ÁªbÅàqÍø²ÂÐzÛñÔëæÀÊú>k!ôCØë™ é'ï]7CDðV’ñÞ2=]èNHBŽuig»es¸z¾ãL“ƒ+ºXïh=çWI¶ÝŸp•DqB>_k½zëÍG²Wzc¿ûA¿oG}Â^(¬>ó% ;Ä»m1 c>$`vÑÊ ä5MO7ÂÔ= Ü2¡qâ!@vT;Ì@ÉaÞC2ß †!þ^GRk]:á]TEWŸƒBqæøE ½˜"‰qdjZÿG’¼âÈ-‹—á}ÏM§$Ÿ|ø¶GŒÉÍë1GtŽ™[UL˜ndÞßÃg3ûÇ _±3좷DÈ3TÖmœàk‡ñ[Âc¨CÊ|…3#nzFìÓúæ1y³4“ößôL³O%Ÿ„ÕdïMjŒWÔ[”±¹9þæ¨ßÿ ­• V…s†ÜÐÒTaêÓÕwLÝ!i¾náßà9s(Éõ…uí HgsÊ ªþ~<‹FÇr;yðÔMëpÕã“‹Å?+ ùÊ9áÄ:®€CßÉa}{E,¾]­:T ‚)¼B€Žp”);¯4ƒ²o5á<(¹ù`uï5„]{B³Þãê}äNiQvÔ:Æ-Y?xó<­?ÏSК¤Ð@hŠóí‡dçÙÙÆ+fñ9ì'£Ãf1tïç‹:rõ#‰æ¥üo$q?âKãxIlÂÇÀjç)°ðU« ]þ"O–˜Ï¬XñGˆYB¼È"ñ¢êFϦ YÌ/ Ñÿ!Y#ëE!¢‡ BÅŠë£Þc¶-²“WÖÃ~x¯1%ufý¨šÊ-H¥Í÷Á;u'rqkr§ XÛ×–ÔÎè:+Cñ–qyõºð‹$©&Ì®*\;tNýXÜ6µM(ÿÉú×E°Žì|æÁ,V_Á꺣ï@€­=,µ1ÐòP Ý7 ‚ñ¯(×e‰ì%á\òÅò—&‹ïE|÷ DÀú(rö8ƒµÇ÷–=?WådhÃÔìQäK8É×y‘ £ ,”ñ?Èh+V^IÀ2ÉWX5#LF+)2(£½©¹6¢~\ˆ.…ä´÷Ãä4Ñy9LNÛ~¥œöÈiuWÈi¯~+LN[s™œvóÿNNûI+ºLN»ñ 9-Ô’Ó¸­ž-3ë‹ë ¨Á¯âJF»ÁµísCk@Ŷl¨œhIN{ÿ29-<ß!Éj0ÕÁãLdoÊ ¼—£Bö›‘âăœJöu‹´ù‡x+r•œ ÑôZ>•›kNùû`RP ¨#“Úµæ^1ƒ/6%·”›@Ð÷=‹²‡áØ„<—'²Å‰|qü~ÒQÍÉg˜•›ØbÐ*âÙb#ÖÑ{ˆó·qž¯D (=|±™+=˜È­%á}v/2%Ÿ©Œ`ïó±0®3 1%4&œÁè9<ÑÏòÔ„ýtÌÝ×ÓóºAËëZÿ}apšÇ­]îY&Ú'.?ƒQ]GÔ'd˜¨µ>Œù>×Iôm¡ŠXè¸ FjUvé{ÜÑRv®úûï`äž?Ø gÜ÷[Ö×w²€Wªú¾wꈵê:´Îw6ÆÃ ú` P>áH~nú}¬¿‘êWvúö`æûì{s=Ö.¼±J3·m)­óHNq?ñú» å˜LÊv/Ðëqõzl$3^äPšÈmÇ 0åf˜l¶1ž)ì<1lõÌl¿…ïNf^Š`ìLßÇ9†òÄ|÷÷æ3å¸ú›{´+œ~¾?r{<¤:Ó -ãX˸ÑLË+¸ØÄ`eA5„ÎìFy¼Ê ŸBO¦¸½0S8»3Å%†”acl èÍÒ&Œ‘ÞûûKgf™ßîÏ7§iwrIÎçðËH@I†Ð™ÿ=^ÿ$ ¯—üOñÚ,½aICN›ïWõÿ3ÜãN×ûöýÿ n Çíhï+pû½’ÿ·ŸùFÜæ%ÿ·gÇþW¸Uò_âöø™ÿ ·›Š5ÜÞUüÀí—oÝü¿Âí?i¸ýÜ7âöo‚¸}n‹Ì§˜¨¶]ÚÚ(½qP»s®“„³¼ã’ëé£rt(5Ú“sF›Ôa-½}…|Òœy£M ªÌÀTe÷ƒ Î&é^ƒÇx|UbÕi§µ¥ÇÐþ†£ ÍÉ -ë&j6(2/ŠÊD’‡ÑÙ×ïmÇF“›=‘Ø"ö./²f×1åI*”tŽ€zЃ@‡Ï#ñR¡`¶[:­m‡¯+K|§‘O¬œå{mÌꯅvÒ'ÉžhI†ÙúæÇ˜=|ïM#½&uI”‰ÚZ<äÕöúC¹HãQ&[jä%æäARcÅÒ&Œ™Âà\ie”ôÆJ¥YrnDb ¹¦£à™LöèàKã]­Ìv˜r8þ_äÏ@³ùIÐóÛdK=_hJ>ûôŽÇ5iŸ~œpžÙT¾4‘µL·v'[UióQܤVÕ…Y;5§Muµ*?áŇa—Š»¦[; Å’iòHÖ{å>Uîä%ñ8” ¬øp=¯Jä%¦šý”`Ãz˜-gðdI"Ë2£zÞã¯+‘ÕX»Â/½’<¸ÍSüŠjÈëÊÉU¿*BÍÄÌ«pgarÔÊÃ0<ï÷q3^è;šëŽ• †Ý€gMߦðuC~<Ìg˜Üâ' ì¾7ñÞÁÂ{í=ý‘D½IÃo´‹»üëÓ U°§UØÓ°§ÛÔµÔ¹¶§¯å¶6LÈÙ%ñ ¦®²FJ \²Õ´[1^ó|©¶©Ù…ÎP•Xà^o«lS¿\¡mêƒï€3kª”#× ¾í:VªEc`¾F÷ø‰å'²üi,4«Þß ßzU<¬RåaÉ…A⾈›_Æ-]¯;ú®\Ø{j¶kí\Ám®V­í§èôÄñ‚„‹†âN2Ç×crˆufµúÛ”Gœã¸B%FZ­i ²½xý¬,–7GóGNð>pIè8°òjܳ¸/écðrŸ³˜vá/¡—ÍfÜ› wªØò£Ô £ˆ"´îÂ?òd> ÷0Œ7"¹C.vgÏâi³`z½¯¹á6û-UQØf׺ÙÖݸz•áš97³š¯n‚×+Vú>·«ÇŸÂü.ÏœÅ"Ò}/ØÕ?á ïÚ°­kSsÔ¼&±uÑpu٘ׯ§¡ÕŒ¬¾lÔî+G=ºiȨ7|GŒØ‰¢÷‹g1¢Ræ~ã˜Z÷%‚1™´1Õkƒz Þ­ðyÑ^M£ÚM4êè/ðùçð> ç^1 LÈ+ìShb˘1}š@fd›’÷Í8(hk¹´Q[hâÙ‰²¿0‘gÇI®‰#”mf ãY¶1 +¢íšáP¬Ð̲±p‰"š°pa<^U€ö¯0› >óHBFwÏœÆ2¿AäÑÌú<“8Y¦y]]]ÆD ô! ‡y1G<ÀG¯QI„‘‰&òL3Š.v’‡2QBVúÝéhÿ» ' ÄQSé*J–Až~£Ÿ´<äBwµÊK0ÆMXò4L×µó×°Åq%,r|2ÈÆüŽýzßâ/q ûkö‚¾¨CÝmjÏwP©ãã|»Â|WE× LÁèú½áÂ71èeœ•V.sŽ#Üå ÜÊ& ¬k“Z£”DzqrÁãû;ëEXþu5@P7XQ€´à8‰Ö„ûp‚’@<ú¾ØBf:ÌnøÝµ¼Ò’1PÉ,ß#bPs¢yzLò^mšŽ$®‹`ƒŽÁèŠ% K\ò³äû7Ôê3É÷Ÿgb‹¢ú€§ÇJo°þk¤ÛcúÖ|s抴Ù°Ì÷û!á¬7ßž«f/'çןÈ[ƒ†zÅLfz#Ï1%·Œ‡š’/Œ£+R]ÇÆ£‹X#¨¯–ž…0Zaã7ûe ¦ôæ)our×Û³óÕwìd%gÍú"4—øö‡û–µYöŒ¢¤ö4ù˜¦¨"û¿Ûc-À³ ÚúF::õr6²lmqS7 jnÛË}¹šƒWs÷’u– ÃAÜ©÷í%ŸZ\ÂÁšFB‰SˆÀ¶——"Jøžä#Ù~Ç'—¡í±®vwêrã”Þ[¡ÑQœ¾Ÿj©@^¨n|˜½© vrÙõe†5˜ì§ ÎêG%"~>ÆqQd<‘gPÜ¥ûm,#ÛPx"KÄDg ú’5Müd&‹"¯W{²æc®í@°è·ðúµáÞ>-m]}~¬(´û×-T_|ã1íêoñ/Ùô€dYZÿOV!5,¢Å= ÌZ@9zuâ…h®…kæZ¼¹àïïæZÕо">yå”ýqÂvƒ»øk»úøÛ½}ez»ºþÒLUჺþmä…1; ¬5YKö¬…vW¯ŒfþµØ‡v…-vó.ZaÂÛ»ëÃúï"íÅâ:ÆJV­/dU…NyÕUþ¿ZaöæÎ°Õ…9ÂäÑá²íp9ª× —œ3QìÏœÇdX¯vIç(–äBû=·.È¡ìF¹ê—oåHMiü·rä;P£èÿ}92ï­«Ê‘wÂë’B”#Ÿ|ì29ò{]MŽõVHŽÌVGÞ+J¼_¢rJ:¢èrßca‘÷·šagК&c`Œ¨!æu‘s²ýò$Á)0ì=fE‘£ß/7|/²L`Å{)`P3¦ØÍë&ºùòé ÿJ0!ù Zô÷ãqwôÈäýëÆT¬wQZõ\<šº¿â_ÀõôÚ},ezuÏWð‚E/ û‚ § ÝO+pèMz/3,`½áKqihA¦{Œ®^C뚥1 %ÌðöeÖ‰5ÐU &5 3Tv¨Ùo’ÖàEý¿Eèÿ[pÕ·ã‹„ÌYX䫵«ßÝ‚ð? G€®Õü¦@€É~í¬Úõ¿„•×FÆš )ç<¨(¾)cn4á;ý&äÈ„x­fB ô nïÑÎ!DTN"J ‡4¿O±™r&Ì‹ ÛÉßÖí{41{¡³‡Øûk>!¡{;Ȉ¥®ÑÜ>”ù,+Ÿ¤™šÓ¾+$‹¿Ž²øŸ/“Å1 âµ|¤ïŸ¼Ñ±wå5'·ÈF¶×w–›Øˆ \ªÉôtÓP=Á¨™ä1½z½<Ž/2N_¸oJh èôÊìóç`±1ÅfÒâ;g72ñú¹|Œ°¬È7ñM0nÜ‹éf6†ç$²ùƒñ,dÃxö ™=h„:L‚áW;5•›xºfï€jš±fz"‡:P*c¢¦É·/,¾iвážLqÀ }rVÐȧÙöxf"¨) &>“̉vÒL„‘¯eò7°ƒrõå4"\>Ðóðw9ߎØyY9Z›YA½P»7pí¤É²Im\ù-"ø->²ºÚíÙòîâ~»úÏ×§þüµ‹òíø¨xxµÐ»¶ãvÆ ÉÐè7G·áÚs屚°R«÷WPáÎVÏÖâ^ýGýÐÿ øüx_o®=Â6~bYÍö¿h—Ô™æì—œóa0?ôø›¯g‹×·h¯133¾ž,^OÐ^cmš/Êýãh°pSÒÁwýƒƒƒú$éIú æü½@raºë°¯/ýú4.ãBcXŸ-ðhxõòûƒ_”ï‚–ú°2ô!;ôöÎÐÛ™ Å‡>$„>L½•Bý:1Œ6©¡´ÉÑ`ÿs¶Ê×Î9(ûÒœ_Ècæ|(’ÖèµÀËHxy$­´)p¾C {ëôuצg8 d‡|Vz£Mz㽄ýt_—ôÆ¡¾£¾¯5Ÿ ,{RÃëÓ’À²÷úÙÕŒ~…ü°çg«ïgá1–bò'šðîŸ7FºZSåÕ‹ê3¤7"ðØ(R¤ä¥Gzc£ï[p—Gà§ä~9P 4¬Ðïm!?ÏŠ*Ê(ÇÝEzVÜ |Qϰɋ@ªˆž¤ô(#ëY›cŸ‰˜÷½ ¬ÛoÅ\Y ‘Béäå¼üè²—òß;@Nö†ô;ÅÌ>æy–„3ÉÙɵÓ†¯»†}Ü÷±ã”!aÿÀ¹ç]½ç^p|b`ñwG .@ »S¯]w#;O¥—-½tîùvÐñ•Áñ¥ª]:÷€ÃcÄÄŸ–-eñ»o7ìØF¾$Þ”ÐX£ uѦZ‹³]ޝ[nÒ×fãµÂ1ðQ›fx4ÔfœíÊ¡´´´P._\=^iNjH”WÖSJ¿Žì R5¾ÚÌ“¼NzcGüž›Å»ˆzä•P¦ó•P™©ÒÈ:Š{L­aG•áu£³œ­Ê‹¬íò ¸1‹òï &Ý*=#˜Eù]-‹2æ=¦«·_ OÌ­P…ð»É–+ëxm¨¶þô#aŽEr¾ ‘‡Xüñ”öCÂúÀM´¿’»7´ïVÀ¶}Xú06vèCbèÃTØÂ¡–ЇH A¾§Âwª„»tD°~_'ëq{þwô0U£p³†ÒõדôCèáhíõ0ý¿¡‡ï %hï ¥‡/ýúë+è! / T…¨Uyèíš!´° ôaIèmzèííChá¡×^bV¿Ëéà„FõºÒrÒ1A—â“z¿ØGâ^¢Lu}7웄2—¹—ѳJ³ò‰¶·ÅÞ"YéIžZoÏW•ßéu ME쨾y±ã‚~ź‘uy–Ú Y¾O¡Ý€ê5Þg‰hõ~?PXìQÚ3Žîx íÆÜ9Žðj’¶Nž Öe…å+³¨·‚,¬Öz¼Dr“S§“?˳W¹z™ÒÁy¬˜ýG'9Ÿ…;ÿò¾Ó°9·¢8äI¼“hlÌÖVáDsfê­’ó‡P‚.l<“pˆ+mî‡'w|6 î㪋p|Öãl`ƒì<s´ÑQmv†ë3kõu†,¨çuTÖW\‹‡½óg„,ácqGždÁöÍÃtn[O™.‡]pÛºwn;†÷šnÀ,ø â 0iÒfr6*”153*”ÀN}†j<“ Òû.¬ÊúÕÄ@å1b»_®G«Ïñ±~ÿ !Ö‡Ýýe—Ç­éé\}íEäaš^O—ö^½ý“ÁP4/o¹s´‰©¹3†* ¬¼Óª»îKGÿQÅë‰Ä¢8^ß‘ú¡õ’BõZÿ'õn ÕkùŸÔ»-Toÿ¿¯¸ûÕjš·•l9ÙêÔ€bD‡G]vŽÐSzhcbƒ£3b!åÇ:(©T ÷Ç»î©ß?5~÷¬A„Î÷¯]Ÿ »/[½ý’N×êÄdäS_ÕƒÒ>lÆ{WjõŽß­ÞÅ @û×°KÅJo‰;ƒÿ² ¯Ïðýi—. þ<ßêý|¶ÔEÿÖ™ñßߎBÓW|ví¢»·7¢RGùÄ'JÜ€" "Fµ·ŸÐfDw ïB¬òÞOˆfÞ»ðé|šOÕðw:)‰ðÒ;•Z—Þkè–%THx2ÐW ÞüCw¦@Çt@gåï?ñ‰Ž&bÐήWGtÞƒ¡XX4c– <£¨Ä¹zåñªÔ9xŽ>¸I,d‘ù!ëc9ìç7ÃÐÙÚS1öðú(bd=¾fº¿F6¹z•3lÐ÷…_é)PÓ-@IYó Š§‡/¿)PŸ‘ÐKÿsõ™“ƒþ¾â<¿`‚Îh;¼ŒQªw÷Ãþð¢Jrâ 4_uðîá· ÉÏEŽ•W—ŸDÐÑ~*.éC³ä>ºë 0/·l¸:®UO—úÑJ¯7hä3(o±£(móUñÆÅÔ<;D¸(9þ²Äïo Ë_6éEà0NÐ €ùWšèNÙ%—YU t-'ýÜÄl]˜÷"¦\9»³14g÷¢ o„c_tà¼Y^§cîMÊ—¼¸ ˜ ›è‰Äæqåà›µûiÐf’ŽÌ´vG5ËÑêO †ßFèÛIe˜ÕÌ*MZ“^ÇA½®¯x& =Fã˳ç€89 F™ØGî%Ezi¿¹ÑkVncÂÀ£áS ‰år|8>~gÁ]Z²²ö´|- @Úüìb˜|¹ósÄ×'à';êx8>V§LÜY„»&‘æO”_‹åÙ!Qú¾Åa¹mé |1žÛ;¬%¥ûÈv>ôÉ‹YðÈRxK÷áΠ+€-Zþ ¹”Ûº’mò dò•Xì›Yk›‘)€Þ3Ý%Æõ7p7Ð\”Æ^#°µ9Nõ$@ñÉÖéhˆn<Á•ÌÚE×™~vîÂ÷n9×Õ &ž>Î6IÎ3BòÒ­ÝXÙcrÏr#„ì(D9Œí+]ÉJ'èT ,z'È$Àh0.pXA^«ì”M ¬‚0çûЇWª¼ÀˆÐ :˜¹aiAÜÖlSåXd WºÙd`n½if½ä¢ŒxÏ”ôØóš`Ó›~Žsc÷«vð™<˘¼#›œˆ`˜—4‡4ó‹zùÛŽÎÁÚtsõR³äní´ÄГM8©&G£‰™‘Ál,¯ƒ`Và…™#z3ƒý§1£ ¤Ì«¾Û¬ggý¶NAÕX‹OP91X`4V×<èèÆ(uËHŒyéñb0ÖÌuùæºL³ã=ÀÆ7š¢Új31` Otå˜Øb#hÊMlbõjó –L'©ÝW[—e®[avtêŸF5Õ®0ãwžCý‘¬C£Iy4ˆtéFßc|)J:³ëÒ/Ÿˆ#¯ìÀk4âtH¼ø€£ÑÈÌO'ÂDãfMÈy: Ûx>œÖÆy&|D·„(ª ‚#Ê7aª÷ F¶ØD#2²‰tpïêãØ`ªþ>Ž$7‚ Ç!ð¦›|[™+pyó͋Ք&ÙÄrŒÞ=W˜cò¾2[É»]Ë=`;üŸ÷€÷ÎK”žÐ»òRø÷X®˜“ü¸C5IJ“{5YK%'²A> ³ U߀㠭çäÖ‹òÀdÿÌðÝlU…œO2p&¾Äëo{òÕ”ªïØV³ÎÑdâ#aÅ&òÊÜ—'`¤¬ÃPYq—ï÷èï6ƒ¢4ìì vo´”:ð-Õ ÍzOšð¾ gXò99;ÔS*ögW1£>ôÆÂbMF_-o_ ¹ÓÚJG^1Šb‘¿…Ž5ùzÖ„tjfÿˆèý¨<ÆÕ°þw¦I»—·3üžsw¦1àóÉÑÂÄÊé@øæ‘m]B®\ nMñá™FjW™ oôôÆ$ÞŒÃ7vê8 o’ãU× |s’õ~âïݬ7ª|ïÕ_Ö?ô ~›¬òÊu¸Ogú°bS°eïGà ‡ ©lê¸xVð¹u¨¾‹v´<“£2V¶ÿZzZ±U(>"Æ)Wá‘×#‘ײ^$"A¬!êB@vòøÌºso“^^Œy抋ª¬1ÒoöB‹¿iHjÃàŠ…Ž÷ôµ%æêef}õw ‰bï×O®píÀ½ÃJlžaÀ+´¿ºè|®À]é;É‹-l&î=lŠ"ƒÖˆ‰KªŒ¾¼Ã£cô|»ëaLÞùþ°ûíÙG<ÆÆšØû°ŽÙ¸ŽË²óq? .ãm9ù¸ŠWq|n>.âGaW™ã|.Õ³ ê³ÈÐOŠçŸãóÞìX¾ƒšŸ5ñ4$HG”D±r+¯Þ4,(·­æ³ÖœF)y5ì­í~êÉ÷tø‚çŸéí+åþP|‡ÜGwú4c弡Í÷’]=ø$®œ*’Qk~ÀÀx~Žî¬luË­~¿6Öþœ’L“hÁqƾÂphœ+´qnÅA媷.m—ŸÔÆù Ž3*0N ìý¡óŸW]+üO‹‚JåÀìx8EÌÃÎóOpµVÅK0‚· ›\ǧ=vÕáõûKJ³UÏ·Å5ã8»:éçÈÈV¬„aÈ8Œ¼?Ñ9¦à8ꇎãÇ Œã.÷V,“»f/ôøüö1û¨y¡Òª6$Óå{×ßÅwcÁÆ #X?;òtß £ÆíjÉ~)߆?AvƓנ§®<„òðM¨ÈyköúI“ Òç77xÅÿbn¾¯Š¹ùÓ-ás£ß:tn’ÿøoç&÷WÌÍ¡°¹ùÍýÁ¹y~Κ›ŒŸ!:^unîjÿ7sãèN\sÝ«£Lk>…ž™µåÒŒª¥ûPOZÁšJ$çÏhs¸ÿ€ã®Ç»<”6wÞá\»ê|G¯ÝËÕãï~h©¡éG<䣻Z¾ÓËÙZ\­;ä[üJ‹úÇâ¤»Ú ¹µE¾ŽOz©ê>à:Êõl<>DÑ ŒÚŽ –«þPêâçdçñŸ…Õ¿4éu³]X$¹PÁöýlû½°SóЩDîÄs-6¸š«×._O—ÉÇ–ÝjW‹~ª×nyO{.I>¿Wú$|é󆋛&ÒÛâñÐ<7¢ë ¬75^N¬ÈÌpùå¸:Cê\y¬³Aù¼9BDˆ ™Q÷­3ø>á³—EÉÔÄ$¦t5[O‡ÔìãZë ÉùìÚ:}RïÜÈ9ífP7jéwuåI¥ÖÀsj¥¦#IÎñšà/—SŠz¤Y EàiùZG¥ê—£A¤ÉU_¥/ÔŸ[áÅó׎Aýº9úshìåxŸí2”ÈýÊÄúLºdÒyý–ϤÎU¾ððÃCR„14GÄgx1§wuå €¹Ùú@òˆ>ô]ôb½¿M×  ÅíÂÎÒV:0ùöåèÊYÖÖ:‘>V´µÚ’7b;èäRlƒL¥ò5\iÃË•ÆùÑ|ª.b^Füw;š#}"™Òæ;Zg®M‰–%J«íÛ šFZr£| >øª7 ÎUþ ÊW/mJ½U~Þ~ã=ˆySàÝÄ,hfî&Er•C'°ºÝ” :©Áû=ø@ëÝ‹õdÔ `bJ‡w ñC´C0éEJF`|ßTã’› ø;ÇNx}àø»ïÏápÐôºžÔàxfàxbáøˆàÀ«ní€tz;.]Â!ïîKW„ú ÀÑp¼?ÂM×êKÅ—Ž|Læj=Ip̹’ƒ¢ß²¼6Oóñi°äk¢á-¾z¨™ù93¼PóO£ÉÇå.~JNLÏ'aM·qÛÍhïûûú>A«ÑÍXžÚøÉ°\u2ÖÎÇc54ß—ìê>„H( ­¡ñ“Od¬nôœze¨«À’zEû,¯ Ô9´Åtsã |aé÷|‹tþ¤&9<ÆäOº1¾h)ŸX޹|”g~ Y‹Ó’;ÖžËÂstÑ@¿ð²š'NÝËÆ@«‚Íö{J£å‰Œƒ¾•‹À?ÙÄózªçê”ÉžH#|!ÓÕxpü*Cä}”Ôº}Õ½a¬pËÈñRN®ãtO>;¤ÚoFïB2D“ÙO–êÜT}…>#S8uÜæ­¨ïä¨_u¡ÿè9ìqÍ”¼´L·¦v—Ùä'Ò´æ{0Êì|uÁn;–â1Ž}1˜‚ÜiҦыGî³ÕÀÇ!Ø }'vY«LjMj߉Ö8õƒ%”ó)ÀéDð<Ææò3¢%Ûzÿu·Á¿òÃu›Q}x1¢ÖõüVî£Ûk°€šu9áJéɽ%‚ÈK£%×ßõ—–P®(6…Ša¾Îàm¥ÏSA$:’ë)xî¥öA=7C)þÞ›çìœp¥I®·aqÊnÕ\ýÁÚAQÁ<˜[f+§–Åk¬ÿÀ´EPFrÅDˆ¬m˜ë1©ïÆC"&Ê?Ô"&ÆÚEÙê/nDâŒgªÚ€k¹:/iÇÿå{ÝÛºà‡=[uN„k*_(g¸·ÇÕ¢mòï@ˆü;°–ÛÅsì|ö,‰hžíÀÂê²ñÁ€Ñ½f(®N¸0è/6•—µKÇ1Ê¥7Ò •#Ä]5ÁA°#xíÛ‹9æe‹6†\õP|@¤É!?¢¥U»€4œP]‹«á©FUtn¥jL$‹T]‹›ÕÈúéÚÕ53‹’ZE„H¾ñõêOZýk þpú“E„_{„W3왳æ„]}ùNdŠwº¹_B+uÀ?ùAÏãߎ)¹­<‚µ9ÔáÒ+|7–tË)ú|µéì ɉ7Ž—ésŘÅ0ÕO({·Å›„¸Ý÷µ2‡+ÊG±{ùŸ¾ZÖÌ\;/¡ ú×KÚB“p·e±m¯"ñôWß¹‘NÀýŽØÿ?ŽaýÈ—wÐ’T_¨”¿ 3ï§¦Üæeñ9êAJX³ò;¾ ?Ðág´¬A¦‘ïßÝ«·˜u"ï?&2€o þ |“ÿè{önGSw!lP½V[êŒ#‘…¼K»Jð‘á@ôÑëÁ·bÉå#Ïÿ$VrÒ÷7q?ñ_«/Ü*¿øØR}a®Òäûàw3ë¢GÎ}Bð”1ÈcÛ§ MIj÷‚äç§j ôz? [ç I[WÏÜ-—ð”ò§¸Siy\½b'E tà;·P÷’ëœÿÝTÄ//â›11fR»£ßï~å8— ¢Ê5¼`9úÞlÀÈzüF¨ÖŽw+ o'»èçïbcÅDä üIôMŽÕ€’œÏ Fùp”IýÛb œuÔivÝãˆòŽS†êórF #Ïu¼K}ÈInnæl÷6ܪv¬S¡^ ýKÛkE’qCáŽyDŒå[Ý[±z®{7V/XCo¯¬VYr¡ ÆÝ4)­r¶˜1ümÐ}Ms6Ç¿œàj'a\‰5øOijÛÅ•¯žš¶ÀL5âº^ÔÓLI®ÏPî!8W!ƒv$go *áÚ‡³ðHŠqŠÞÍ_@Q@Ü œ ’jôÑ¿_¨¥±4 ‘Erß½D’ ù}¿ïH¾úõ?Û¹T¶ä‹z¹ê„8x â+ßO ¦"¨É…ÿ B1¯û™‡â†_rF£;7Ràvcýœ51WŸí?OÖfÛ‹Åžø~gWÛoÐ(~‰Ïåq5 y@âèzG#œw¡\ÂÍr›ïƂɭç~'Oç[ß¡¥Â7†Y[±\F–ゞÑF_×íò6a´M±ð¿ÂÏíH‚ð@úf@ÿ`sâ] åNO ŒcÚ`cø†Džk4YÏšÕпºm¤NGâ½(lÍÿ¹ÝÇ‚íþ¯[F-æ`‹?F‰ì¼z7´)|š•Zkdìí‡ )Ö£­ŽììŽ~LDÐe«çèo™2b¶V·ëÞºPÜåhÂâÙäÚéý +Œ“S›Žd‹ýŒ}”õ«[@T¨~¹šÞ›vCÁÞ-}!¹wš³½€yݵ¶sò(O†8èAԿȈGÛ—5ñz±u¡­Kr‘q­©ž;B„éõË “Ó÷‘09 “œ$ª¡Ÿñ&æá3X/ȯՕç@·ê#·R·?Ýȳ,z=¿ÆÕÎŽ(ü—÷ é1>‰¤³cò†:FŸ~˜RÜ)¯þ/ÀYq8·†À‰Gp‚Àà ¼¸ÛŸIÀÀ̉¥oÄÒõÁâOè¯Z[Å|3Q¨¦¶€òMÐ&aU*å½Ûý1_jɼ›Á¯â.VdÊñ¯3»3Lvf= &]‡~÷.q3  ­ßÚ¥vh}¿ ¶¬ 5y¾eQ.ž2Ç£ô_]lÁÖ¦å¬ A ÞPiÕþâÄ=H»0±¯ÿ6<°÷jçÏÃa†Nï¾æÃje¨Gå𘽷Ó9øÿs‡šÖBÇÐþ†û{c€ú|,hE:)çÍ×e½4º™˜í8·u±EÁNÒrðÚ´'{É;®õ"ö¬·}ઽ¼9,Ћs ì^Àh ´õ·(Ô°âž$?h«µÖÏX/ ²³ndRoõùµ¶¯$çÜyuI­s­ŸIÎåßì,âæ-ð3©7µRrÑÓ=J%T®üj#´#9_Ó‡jk¶— ý²õÎë´Rà WL ²r .Ø€\•åéXQ6â½Ans œKÚ9dM°©ü{dû‹ý ô6F$õºzAn|ß÷7®tÖ“@ΓÈG‚£1©×÷¨¿ÉyòQ4Ò ««@hüÔײ?P ŠÜ–:W9àû“cÓ<㘹5Â,³\˜e¼ÞÅÂ,ƒ.w¦žÔ? ¿ÞXÜê! †³÷½˜Û!ר\Ózé*ñh‡Å'/tXý€ÖIçl¡Î€í5Û€­Å÷üå° SMÅ Û…©æû¸kk°Ù:)«¼€¢Û¸ ÿ¸ —þ-p4o6úöw€­õJØ„¨ýÌ% ¶Ÿ óMÝ%äÿawoІÃmfÐJü©¹b‘œxï¨(Ãä2¡šÈ‹„ZITŒ4‡¼ ª ÝBm°p%à‰„aDÖ'5ø>䕦ÉçåÐm<ò¤-|æ{¿Pn/ê »E…è)|à{¥Úøé Ñ3 Â9Ÿ«>ƒ:=Ý`fÛ6Q0;HhÆ[ÎÌWuœ•saK³ާdDÖR¢­»/sÌ;öšsÕæCƒ”¤PžŽIåÝÍêçã‘,öh§±™A;ÍV4|ÍаÔÊÎ ÈßStºP^5ÍGº»1×VéÅ aÖÉygÄåµ»A”á0ˆhÒQÙ©_7–¨rõÃcü·JNä;bHbí1X;«×ûo•‡5ënõ[;iú$]±2É)˜úxòùw&/†5À]~ÌÀ—Ü‹7eœÀ•±á! ‹ðyh £Q°;Ý«noW_j×fFrþÛŸMFº%¯G³Åf¼“QéÉQk£µûË:1ÿl4}±r˺aŒyeOõ]·Ò9ý|VOj?Ø™¼¿<ŠÍ":#yÿÚ>nåJ HååF9Õ¯t¹S9HL~%Ö½|øø\õÌ .S³°™qǓ㠖Å>–«éýʼb|i1 ^$Wõ8“ÍÉ­ìȹßI. Ô8&9¿¢mšbí. Í%Çn’‡¥á gáÉ•‰;X·ÕÌbw.`•Ýt®vçÓÛ(¼ºã¥’k,^»ò0•9NbŸ C‘SÌ.Òåk¹í8;jˆvã¯tÇy=žh±_÷±¯CØNœûr4¾ú'$€Ò¦aÄ6{`>ªŽ5?íýéB¥™[»=ÆÍX:D× ‘/d“KI³É9ºãù¶oÁ)Ëëv5 ܦ²_ýÃ0ÐcxC€o•-ÓgS°Šª¶ýS¤D°xÍ$`úÞVpÙ„*U¶™ÌAŸƒÈ<ʾSè‡÷¥Õ°ƒÔ± ðƒ¾k#;/ÑpsP³0õ 9è×AsP>PÐÉ~ëqw윲x˜£ÍäQ^æÅǽKà Axo¯zóÍ+­´­@ôatàƒüºïÏ‚wh„ü—‚Ѭªoð9€, åçxàCÀ©òÒòw‘–ï |jCjþžïW±ûL Ø}¦»OŒ_»ÞÚ½LO®B BÝ\骛ÌöÖéj‹͵±Q^Á+»ê$g«b‚¶oènÀYJFÃü)pÌ›€Î|lõNF™±L¯´ Ò„INò‡Øz˜c’ëžEží=—‘YQ7rN‹òk¨{Ö÷TxþewÞ“¼Ò¢Ý‡äqaBa|Êõ+æ2ƒzÛX; Õþ4X>žT¬v–W/ßÇ¡¦í)P0Ÿ¸yH¤Ïíå¶zþÓH]kZЯw0éLRGT£r#~¨iÀ?݇ÿRù¤ƒ3]X;ªQr~;É«ç‹ðÊ{[½²#©¡Ï'nZ2 M¼š¥û̽ÔÈŠ·ø•àxŽÔ­~™D¶kýÛh‡nOnÆ-¼$ZeÏ,„NWó’DéÍ¥–Õì™%œ­~%6žŠd6'ÏÇ[{ܳ,)wH›`ó癵–[ë¥7wbq÷¬Gܱÿ Õ| ÛYÇ^ÀÃÙ ÇyqmãgÿsÿUu5 ã™d’ aà 0HСƖˆÖDñ21&„I¸l¥4µÏ£d 2œÉÎæ`l‰ÅÖ(ZliK[¬¢L %á¢H!@”(©œqR  I!ç¿ÖÚg.´}Þ÷ûÿ¾ÏfÎeŸ}Y{íuÛk¯Íš0¦¡Ëýi»m…Æíb¸Žâ"#pxq÷-¢0yñ6¯X*dåÄ$Äp±®ˆ. ’ç˜ùC³{ñbbZ9~·ì#N1—‘ö?» ?®¢ÚÆ>¢$tò_óØä·«( F'yûC)mÆG)ˆÔVX³³Ô£ÃKÑŽ {{a£w:'âì$0TëÛ¸ñ0fXQu› ’¼¿‹Åä.V#hƒ+0pkÔ=ìo¯D ~Ž'^½凹}=_láÓl‡WÜçùÉí†&îX/Â2K»2î¬i‰V¬&[Þ/¨XS“OCoØËXÔÌóL¶£Ë—bÿel¤¡žQPæ7Jq‹iaŠÖÙ4j¿­Æpúµ]Z~Ï³Š¸E’ç€3ìTò…삈\õ§@ÕøT+àóÄÛ_Á[ñ¹´naL€:‘5Ë]¯$´ÛÎJnôâÇ ³5H/‘Ì  &7dz°ãQñ9ª;—K|º¥ºûUÀAN¢þüm úF‰ºPÉr˜YS»56ÃV¬³ «†wÞ†ž‚þTcë¢qÅ‘à5 ·FäRuø§½Úåß·Bñø@qé߇â âM‘ÿ®8¨6¹“Åßø·Å'Cñ…âÿ¶øÂ‰üåZ2 ‰/Rð‹qQól<TÄKå÷Ö,WzÑø…v¾R¶ ÃCºÏE:£Xn:Qp|@ ±ñÑ\w‹ ã/àùTŒÀÀ³Œ€iìWhO狜 ½ÇêoàóŽµø0dºAÐúù£Q(K!… ”gÏE6ù&™¬J;ÜX6ÑÃn-B98&óØÄ^&&2ôNàªÇØkÈLFQÔuòjoï$ÒKªà^â@É©ü¾iÈ¿:06giÈrUÊs²`À~ †*ì¶Mê“5 Oa%iCSÈÐÌhínCÄ÷Ú0âÛ¬>Müíð7 (7:RÕi`±Ý\;—ÖÞüÝu$ubBUâ+Û‘‘Œ/GC03Õ­]¨ï$æiT‘¨Î}À˜«Þ»‚k³ãü½d#Ä ÙÈ@Î]Ö ¾’Œ¾–\2a²?áå»D¯ßERuâÚÏ*ÚžhåO™æy;ȱYjCs¯6 ÑQ„K¿ÈiÖ¶#iP+áùâÝ£ÿa6ù² Ï¥†ùFŸŠ»Îðûýw…þ›®ÿöÓÑÚ„¿¿Ñï;ÿ“|Ü}EªñÔòIJÂà£WXSg0µþJnbæ|®`é«¢tÿʱ½Úÿ,º[ëúIë @e:V×àÿPÚUŠ îý_b:R÷š/¢Ø£¦%ìW³háîÃCØ-vùŒåt”UašÉK¹>ž3‰\Óǘ“ a›ÚæŒ2—ψw[óiä{é?Î.<ÞíþLbyVßÖÙL™÷pw{NènY˜ó8Ö9ü¡ì:—¼Ïw %5žU!uñ9;P¦ Ì»¯àÔ±UsLDÿ|™ø‘ÃãÞ7p+¹Q÷0f®b C·^[ž€<øŽ_"góðúC¡DšÝ³{09­þZ{¯¹µiévèšúÀiÏèÊׂƒÏÄýf"NõRF{©o<.¤Ñð¹omgûÒXJK^gÇóKê÷bÑlܰ8}¾H¤þ}+VaÆÃ›°Zö—b PØ~æ¨Uï1!Á ×î®{™AÚð Øµïßr,äê+y}DÌkÝÏX ’÷ÑùÚ%îgGI^4Õ€ägqwÁÍo ôõ÷ê;%ï:k—ð,ÐOâÑQßŸËæ´ ÒºT$š SA䯖vâùÕ°•±Ãm— ‡ºÓŒÎ[¤]k>á8J®¶]Zæçö`T÷s–Dù¬û¹„¨å§xŽQy6‘ê\!+“ïñ¾ž;êßO 8уFg?½#þ­<¿^Ú9ÉZÓb’v>oèâr=]ÏJà‹,†zïy ZLj‘“Ûö®`©ïÅ€,öÌïÑ‹EÍ:{®ù¹t¸& Ðˆ…îZq5$æáÝÉšvwW¢lb®z*ªÞÿ{q"ï¡ Ž™ è=åþ¼Ý}Yc±Ùê,øp^A„yÔzíGÐg~àhXáൟ÷hG$­ÌI’0)œÜàþ¬9ªÕ/0Ûi56>_4nk]ÉÏ»“îînÀÅ^ TzwÏ DÅGÑ&„ç¡Jw'äBgBžo^ûœq}æùǵ¢•F˜ôN(X´2ÚàŒÛ…'o®-ZƒVá#ôμ(z66e ®ÞBò$TaÂGóñ¢öîxÕKkk÷ x}Q¬³þ­·z÷+´Rð¼( ù˜£LÂoµ’!Ðu+ðd«23~0¿Éýih²ÂëM}=Î’ž”VOQ k•§èzbá:JÀAJ)ŠSÚr‹¶Üœ§fG ­ ׆k½&Ä!פ‘§žäFÓ{Õk°(<%dJÅà|¨™üNùº{JdsU$ˆ`Ï]À™½(ÙU„ù uç Z<šœ§ŽÂ¤¨öõsùä׬˜`n¶/y&àv!•—ñò•¤d:oR¿Ðëqƹ»ˆŒÒ£ÝöR£PHï—éÁ½BÉ[GGWsJz íÀ¹!ÐÔùSFÃò­uxXó7k)jz#(6~©&©Æ*ôwàr<‹ñ›ë”àYÞlSwÿõ¿£ÉëU|éßÂmT Œ‡§86µZ_¥®0è4j(b§`ì-Ô@],ÔÙÂ^ì>×Χ˜åÙˆDÆ¥:ïcº¬»ô=lè–ÑB6 °Ò_d²Í5:çrúäóq"Õs‘-BþA˜[\ZU|ýÚVåÔß­ØAúÖJ/õ1–úðÈ„ü§Ø>m™…‹œI&íi³Hñ¤NºŠVF¨ÇTk¶ÆÉñ¦`íÒ@¸Á½j“Õà|RÇ}ç)£¾ÆžÖ*°¼z¥™õ¬Rûœ«…–>ÑVï\z CÓ3JqÊ0å=Vù9tMŽ®ü'šRÕ1ÔE!R?¨7“lÇ—¹©ÃF^N݈£ ’çTo ÿ@LXG}'G‘Ç `wËÊÈÿú _ýÚ6¤'.{»äý:›I˜bǘ£XòœëGŽG®b˜ë?À4½1ZlµëþÔÌÞ(yV n.GÝw'’§‡Ð½8ù€Wcr³sTjÇîôwͦœ<õêÝ‹Ãó0”ŸâÞíîZý¹”X‡Ù³€ð»¸ãÈmކ 爒Ì#„†©Ç¤·öoqšˆñR«±˜£#òϰ>¢oëØ2ÛX¦*½x%‚NG¹TÖU£Ž4ÔÕ”±kxf#Ÿ|alš½™¹Z%÷ (d¨G#v~=³×¢“n±ýEÉóŠ‘8}ñþ’¸R%§¡¨ö¹ðLÉ׸a¯Ù륽—4{­´´«zeuƒRØP¯Ìh(ºÜ¯øôŠ‘_ÊœVÌïcVVÍh(¹9ðzy+Ô_§Ll߯øÐŠ[1žË!¨L1îTœ€w”˜ô—Ëÿi딼m݃~­ˆz{C£É˜Ìs¦÷ØÊ‡¹£u:s¨<_µå·I¢¡ˆ>“¨6õCòøÿR“›ÄJ~/‰ðþcîjÅm?ô²çªø ê±³¹ļ‹ BN :OrHàmÕPWäz1‚eVKž¡ÐÇ’á%RfÍ‘!˜¾EÀÜ_¦höjè>“÷pG5 2U- ótíP(Æß( '6@QL•¿' rŸ”H° SáSjÁË¿°É{$ï#‘×Àìrr·÷˜×Â2=,¿ˆç{ÖžƒñG¤d§ûr7µ Чî×$?ŸzpíA|ËounhM(ÓÓyü¶ü"V߯I"åj­2<™…´m€î_ɰðùVÌ9˜ïñ¿ÃÛ“/ú¬Z Gœ°OhD²‹[>xX¸Eˆ§ÂD”Ä—H¾È ½d\&ºªÂ½ QÕ;ØdX=˜.ëù%:ÓÙ«¡žjªç¹«¡zÐÖÀº¡šŒž@5¢ÏJx=?èõ C«Š½hê qRÝWè¨ÒŽø’8ß%¸U¦¤øêº‹ù ³b]®Ìü•eVÔCHuš˜ü‘MnÃDEhãÙ+d_êCÖÝFÁ+@ß»BṈ•»Z u¸]Slß y`‘a”x½)*„×ÏG…ðz+áõnßz#¼ÞŽ×[¹c+Ëßò¿Çë-’7úZºHxí¼èb<ÏoîL/m ÿÊsÝ´ÔqcÚÿ9Ïavx÷%uöô¥Oçuºr’èÊV¨g+Õó~O¨žÝpM›ï!õ¨ü h·jkùc I]òÔ‘НÝW,Ëÿë½þ(úxÿ}(ÚÃŽ^úœ%„rþŒä-vˆe³(E*æ ´J¹kRl‡ÙP”—YÙ‰÷çïâ®K¿“<¿ùèÑúi&ßz¸uWÑ3Ë}%eùÝ»±$¯ÀGôe;Æ ¹þ·£éˆ[ño±AߣaÑH$ÕèCµDú‹@?&59:)ÐÜ­ðÅRõÒú+·DD,žëëø:<æFk*‰÷œÁägHJâ`¾ô%°9l (}—@,ö¾K`D)}Ö@[ß5оàs±ôá9-þ¸°5Ð&ߌkÀ¶(òªÐRm€¥_ ,UC8±¼ùÁÃ2œö©8ÿ€›þݰºK$ÿž7"t~×y+:ÓÆ èe©t˜¹`ÈXæ Ådº“9š0íÖ’ˆTÍSí\!íì*™b€«Ÿ³+ÒÎú’)‘5猞jeüpçýITðÉ#úcðÉpÏ®”L‰3J;›”ñCX÷ÚÏ íSO–j¾ˆO=é©–Ï–¢ÛgïÁ`$á}vW)ns¢Óü¹ݘ§¥äåª3éÀM(ÂýÜûø©Üóâ=ÃNIžI´Üȇ k¸8ø*•Ìà>Ut%JòÄ“¡¯7×"ZÂŒýš<¶ñ}¤sb'Iáèc-£ áèb0ˆÇ„ƒÀž)®¶<4¢@€c»Zê—ÿp§Ý‚³æÜ b¼ú™„›0ÏüQ$ /¼3_ý t~—ÙàüB€:Ü, ÐBý¾£Àf3ˆöÙ<޵³nõDÖ+†1šNpW3î°ÝE¢o“ ]TIB¶7¢ ¯ ú¢o ê©Ñ”^5ÙЮɗ£ cœ¼ˆ5“| $U7Õ:ûäˆ.NŽ#Y g+•d™«¿0uGJTCAH©³·^„%Xg¯'ů#õLâhå㊛‚žyÜU?E™,iî}F]™½~y‹»z°»¥'¹6`›îJíPò[µ{³¦¨©[1g²q>·ü_\>R4!Bþ!@VƒAÀð½è&³)ï]+üM­VïJ3_‡Ñ-@íõM'{ÄÿIßñ´jfs@û­+‰@O´ H;`-”LEÜ—a‚cë ‡è!û|Là°á4=¥Ó9‹ž´.ÒÀwçxøê_Eà x4Úù˜XXò;-Ð?õ8âþñ‰,¿©Z”›)ßÔwpÌŸzÆfÂ|u“àÚfÞ$w"F˜ "sx¦IKUìmY+ŽuA¯Õ÷M„”{ꛆ’1Ömdoé¥Ëf4ÑèOq.¸?‹*ê†åÑL¥°¢Ò¯] ùÍ(H ᱕`‚ž4btEnË%ÜnÆxO]ê¶XXGxLÚ\£î;¨»â-[¢#c`’1vŒt?·7çp®Œ.µ;VÇm(::ÒÄåV<¶N,*¿Å–¯JÊïmoÆO`F1Ž…6ÖkÌÉRì­YØáþ¢Êß‹*wú‹`Ì„âñÄқʼnbÀòmÔA‹ä¦9Ч%TäÝ…G˜ _1PÛQßÂò ÎeŽí,sÛÿwhé÷jšâû!z ¤tŒm‘ÒštRÊö­„®VwD¢—©‘|{AT3ˆ¨n4jëuDu½ÞŠ{é"ªÕ%%áÇôú Ræ¬I®fýCDÕ}Û*ˆ$öŽih‚@(G2â.<ƒ¿‹Û·«ˆö=ó§`ððÒ?ïÕsº]ƒsi®îШ §«™;ÙÓ·«oF‡è*Bè꤫wô½Ý–Y)yFîmãñ,ˬîKT±Lu€¨îñŸ-pÂ}L4u%â9Í\í3hDm®ÆÍ:­Íߎ±Ú›ëìµHP™\tøv qè¨ú“ê쯉=#ðëá«Êk‹ð/ÒØW'½Åì¯.o X±uÃÚSÏhÎòÚ¬IêÑ75m>›·üKž¹M²cø­D\‡‰knêA ¬g$ìä6±3«ÅN”u³ÿSîÚŽ\b‹Þsûv>×j!¬²”&ìyp´@Ï%Pg<ˆ·+Ìîî^âm³à¾r)üqFWÝ>Ã\7>¤«Ê¯bì· ±ÆØcü×4ÆXcþ–¢´9á:’K „L ‘ûÛCqKÐZ Dmº‘G“N0§ j-üùq™f6–dàJ_:Ä'¹ëˆ`‹C¬¢Q0̃iÌ#-ìCv؇»8ˆ3‰»kÎÓןz’–ûDæjìiý„kxG,Ï´„x‡Ãb³ê¼WLw™´”̶lÆ5rûõ­H{d÷È&îjÙ[´‰Ú†'üÐe3†‹ WÓÐ::ðiÜ ^Mî»äå6ä À=RC܃ä(Z†Hkƒì;ò¤–ü øG~€Ü¥ó‹XÆ÷Èš¹¤¤ÙЗƒœÐ9ÈR"ú-6p…:UÜÆ\í¾™:û ð„óª±DԸˇzh@LL ©™ä¡þÁ%í|œçéI­fgC±'²“p[ås±¥’­ÉG /Å¥MÁ‘^ní[m \€ØUôp„œr’æÐBœM’¯™}Íåæº}5þ‘Vc“¿90½ÄÀ@8 Ÿ\ R„ì^ƒ!\>òÝدÆgcŸmäùçc<3Þ{0«ruíhÃO†nfäõ3¡¢ƒ†,ŒÄ1%°•ƒAd*±»YK7Á_5n 8Æ9T»w鋸hÈ@4ac ã}ÖqÀ;-ð·•²ôE“49>œ¼gÏÎRó`÷Åë>ø7.3,2¬L O-ô!žnäwµ‰­Å б”½„ØZD´0}(FÍ1~%Ð ŒTäHâ@.òÛÃs’ùøwœýÒ\IbG³Ó>šU Mǃ‘A‡D“äÍÃe³8…æñ¼;¢PDþúz¬`ö†ïÂαüžð2¦h•<ô™ÂÀeÕp‚ÏYÎY¸Ä½z`„ÜZE$”ÿ«dй¸Æý©¨Wl?¹"'M¶8­˜Dø&ÊluòoÄÆgÖr{=ŸcÂ8š—¸]G"$†'¯Å…Pô9#?JUc${µ3C[aÌR?ؤž©Y$í¼@gä‰@nÅÐ¥Õê_6齫q“ žsð›@{pA¬YØkD`æ |ѤúçgÙÎ"² A÷/æªã¯^‹WUÜaåq¨ !¡g÷°g¾ ”ùaÔZ Ï¬×ÆRã7Žª·£Yþí¸uO?[W¯q‹ÈÁ¸®¶ìx¶sf(WÂXøT=ñ¦¤xù)d#Çä8Îéê s ð|&í+Ò92UQÿj3~ ¦Zʉ.©ûÐ#/Ù&br2in¬•Q!ÿŽŽð×$Î_΢f7ó M8wФc¶59_ÌàÆ—€fÍ_À8À©Çlûø†V¬ÄÞ^(Ù^’,­Ém³Õ]ͽZÝTŠhÌ„'<ôö–e«%¯àÜ—ØUwK”û\O¿ýÅôsóbkñðâÚ}›qÃ猽„¼ukÑõ—R"ÕšSâláþ&ÛGÓè4ã™*q-wbƒÑ€åZØ2óÚýäjüòšÂáódt …¤’<©äKgâ/P<Ê™Éì&^$nåKHß(a¦ÝD^ËièÐm,A¯Ý—% ì%ŠVl'C­äù ÉSxÈ´óhÑ•»‰-¾Ž5å·êV²Ô·¿('Wò6ÎçâùÎQììWk^; NÝL ³È˃Ô'Š@Ðzð{θ½:™‰ç2ª~¾bÚÝ€Æw§Ó¹¹ö,Õp†„2Ö1­èÁ»ån[»s8žÊÌofï”R?›Cgç”)ÿg¹jï_{5RXøOf«Õ›(ÝÌyò6zèǘõ.“²ÇëÓD{–oòµèñìÍ¿Eˆû~Û–ßfmʬ, àlæEÏ:ïº[‰64c0šÜmf¥,…  m5[µ”EDèßåGm¼ßbˆÝþ« «äT%wµò 2‹PkB×cDØ †árª(µš—ãgîîЗ¬¿´±šM˜Æ«°w¼‚z=aTž¯Œ'Áˆãi¡JtSñ¶Â%;,òè胡×ÀS$&ïAÑclQ° c„¯)¶VçQ¦4ÓΨ)j‹Ó áT¶šö«@(ë)Fgr^ 9Kýþ)šZ­ jXY–úÌýéîZ)yo%N˜ Ï£{Ÿó£;j±ÁÔcE—WJ÷MwÖ]áÞ‡ÈW ¬GÊÊV÷n$›hEèz3(KÉ5i™G\–é%™Ç‹ã¸«6ùdšëȪv²yU';j™õ#P¹ØœŒ¾g¡M+ EÏî¼çÈzcÆv™«Þ½?Þ€O3­|=uÁo¶S¸Úã)xýüþrœDáî|—0ÐV$ÆÝ°7DÄ)Ž/g¶½2;Kµ@o¹:lk_òŒ­ý@D⊮ö/ǰÕ†ɘ·h)þQª¾þ =ˆßFÊûׯpì«ZDo8Õkõ-E{F_‚Û»ƒJg¸¯VÇíCäv%Çrì‹Bšïü¼vÞ¢äh³ó²ÔÍG{1ÎTŠÈÚ—ÔEÜáÿJÈK*ÈK=F&=pb8WaÿÍVæiêb¨—ðvÌu~”£Ý‡sÕP©’k@—߆å1Ö#ñ¿: î;èþÿ—Á±â™#qʉèü„Çú$íVŒʼõ¢ÿþ‡NoQwªs°úsÍñôj%þñ»Çß½ú‹ñ¶5ŸUaØŽÊûð ëX mfçª+›õa‰˜Öê²ÚM’cˆFä|ªà-Âéƒ].U>ø6æ[éHéwgQP·æ!]7!ëÔëìxþ3B½cÃà¡d îž­_™äì?©h¥!BòbXö‚»1Ý`Ï ørÑbg¶ þëxÖ9 B’÷wxhÖÞ‚r|><¼[Î+Z!g3º>‡•E©÷Œ)TŸ^È:ÃÃÉ(Ïhîk0°}^.ZmY~‹úñ‡½¢ìÝÒ#ÉgÝÞüí˜E#Ø0WÂÜH³ºòšF0«»Èù‡ôÎÞ¢.ŽaŽHÞÒ(kS1Dw<Ê¥±hñý)ò+|*&¸¨“ýÜÕ¦ŒÕ”„ ´"ä¨ñëEZÌÆ’ç^YN±žá™5ŸErYÅ|Ãg»kLÙê Júœa°XeŽÉý>)vÌ^©o³ñÌJwM"wU²G ;ЙtÖ‘z&m±¹ð..ï<‹ÈâQ“6öîP5ç=fõG÷ëFòÀUÄ$(¼¬‰¯Áè ‡¶”g5› Ú2ÑFc%wÕ³ç,Ð=nßÁgƤ°Ã5çLɇé¬äTŽÇ4*Y†‰¢Œ¢ÎVšX†Ù½/‰9*5{öÞ¾c&hT›Þ@úÏ¥DªzfP­Ïíîa˜b š`7qû‘L­𵆹þ×€á¢w…ûugÖÐÏ4³’=mñÙpyñhª¦ç0ž  Mµ(ù­9Ú1aÖºV5©Hg÷à\ç_yž…¯°òÅ l¥kj­›(28Ê•lž‰e›ù¢Ñ>÷¾ÑÉqêf^hñv(9ùkç›G1zD§v¢¡µK¿Hú/Æx’gïœýÙ$#ü’_-³×ú ¯ê™‰}{Wn5&³EÉ~²ñ€Ñ†§ÌZòÔg¨pË5û0OÆRŸ÷ˆiÙÀõsf«³ëÔOa¼„f•ÈñwU@ƒØA¹F°£% žje¶Á)eà+ÂèàÌÑî=È>”<ÿR4¡µž·ô¥{øìý­\•ÕÎa¥kWZo‹3I”nõ¼3òî¶] Aû®LvÒ{æÒŸê2LI l×e`¬Åˆº úÖ9SäÅ~: >ÞÖÇþÐGg¼Ûè9aûuñÎÐ"·fÐ×—ýÕ ñøÿ}ø‹%D1†#§p Ü£AŽ\‹ô¯çùµ˜q®šðËÂÓ`qŽeùÕ""XûÆpéO<¿Ú{†ÝãÜ„’X–‘‚ÌQ#XìgÁ*)#vη•ìõzÿ|ψ¨rNðvÀÝfq÷¢N˜Ù^i¢½Œ ã`îëAr·U&¿ ªn¦´9£É€Y¸½M1W+ 0ÆrÌÎ.yÊ ø,£ö´Umþ‘!¢ca>L㾌Ùä9A^. òÕÆ<-ÏŠŠ’¸Õࡸ[jR€1¤”ñÕ|Î^¬¥¦Ð6'ëÀLzSŒ,¿U{Ê :”º’Ú¸vÉíy|‘Q“a™æX¡^w—‘í—ßàÃl•ÀM1Fe%¥9Ú—Wûy˜>foÇX™"§F;Ī»ÎÄW`ZJ K—]Zn‘§ç¨?.ºÔt‰O5ýöb0¬¦|›». ³>ÄÜ‘•£2äPq ¢÷¾û£Ðv™/æÃ—þ£:ú ñužiæƒ`øÌaÆÖM}'‹ç}ašŽëÉ™­Þc˜øè—p³4þã~¦¥é˜µ öžŽÎ¹ó•̯ÙiÖ®F.&C!¨/_ëiD–v¢õl%³-›å·©{–>•[x¦¶Šd}ʵf3¹U}9Xî½»%÷ÁRúr„ýkÿË©ÕþÏáÿ÷øÐô·Ex$ x©´°‹@!ŸZD"Ažµ— w ÿ / !)¢ômdu—oyŸJj’(¹Xìm ƒA~[“ÛÔ_ü"p(ßó9. yï5‡lÍa®Võ§¡‚˜Þ6ߨi'j#OA ¡ÜÂ.°Ó@€YõUÝO†”ÅDG®¤@—a5I^»Ø§Ã]kiã~iç~Jx’›§¾¿:pzì~Ú1rÊÍQÿ|(Îò4Ìh(O- ¾‰ÕDˆ!ÜÚW9ªxå]Œí<ÑŠÔ3¾iZ0V%) Í듽g@ŸyØ$ðê¶„7êC×9<Ë42e™ä<=¦ ì21"±úúãP#¹Rn»,õÍ|<Óœ“8onÐ^ÀNÊäxeÃr @ìàÝ€^MYÇ–+ÖßÀ*V^¹ž-N§S‹cÙE·ü,X®Ÿ°nnoóðƒ‡#Ž|w wj5Ù1Tí¿‚ý{Ÿú ýc IÐùþßéÈBÚªÄ#ºdňk€Öã;äÄ4€<¿ø¹½nìÍKÇŸT/²€(ŽVLãÚ×EPªã–Ȭaå‚ÌÇóͬ?¹¸S8cŽ=’—Tjáx “+Aæ˜ôÛr& %@) ¿ M=â´²K³€ï|ŽÇ°‚ÄVäß»‰OJ€õÿI–:`¡>è„þÔº‘¬”aš™Í°òi6#O³²‰u“â XµS´¦4¹²ð<˜cþ…’ð"Îô(ðŠç‚ó2šæeè÷þñPrÙYè'©?Ó_}áÇAÀCÖ/@}1å©!XKž?c0£¶;u! ãö1ÃêzŠ„ <¢³T6ËX7…:X7Å,~D6F†¨n %Tar#f¶¼‡uŠ árc]}ƦAŠ ²âË ñe†ø27Þ½/|]0TWƒ3Ϲ4ðBsš\»æ!ø#y0O4¿u›ŠyëÐî‘XKQ[žÕhë…åo—Ýa óÌ&À¹Lˆ€ŽfáøU¨?Ç-ûÌ&io‚ÎÛ·Ow˜ðT~3z=€° “· 'šÃÂà‘q&oföW¹k+ÐÄü!wmÀë<¡¬Jµä±ÌMê¥Õ´·Doª²ÒÂÌÕä­yêÇÕÂÊ,oÒä-YjL ÝrÇfžù*H¼,ÇÄf˜Cë$GíâÎ=Ý㛂ÝÕº²^mÿ+À1Û³&IérÔSšj\™áçSg Ú6ŒhÛ«o ˆ¶“;Î]@z¬ Õ8Mì&Ô\(W3zåá˜ç£ž2#MÏß–§&?CŠö|çXψ”˜&€°¤¿‘¼¤>å×Ã|ß‚ó§~½2@›)å˜Vù*Æåÿ¶qÁ¸ë¬®mØ m¾5´ÌØ2˰°ab=ùÈ%ŸzhµµK^òul³å˜¤ ƒ…Ç(hŠl†…=g¹ŸOÂôp£1ÌÍ4_iæx?ÖãlkÔ4S”þDnô¢$úzˆfIòìE¼€/ -° ¢f™xbaÔsZf-›dZuü‚¬Jßœô•Bé4{µë+oíÕþó¥¬Îw˜Î—Vc•‰ iùL=h(½  ³‰õg…¼}„Í0ÖMÔED­›$¨Ë$«øÀÉotïgùG|/_Ñù/æN5Iã~uÓrÝ+dF)YnT×-Gy-XN—àlªÆg™m>ÍsM©gJù䛨®6Á/Rçô©@—m-Sµefué/@¯Î5+ãgóY&%á}ÍùJ£šƒ'€—›ÔðËd“n„D×OJ³Ô âaykÿÙÚœá‰sçC{Жÿ-ü³5¯œÕñtÌQ™Ùd}W.ÂÙ¿^hö6èMZTÌ +«ù,r¶ºõYÝl)yÎ l1š¦¡bÕ¢WA°r©xÊÑS„zLB:ñ¾2Rj‡´Ñ^9cªüY+厶 ¨(m›<ÂÌÎJò<š€!ƒÒ)´ƒäƒlŽ¶Â±¨6@GÇCG÷†$™Á‚cfÇ´¡¡>Á r´-kÊUëK)èjgr«ØlÌ@$ÿ€A".SS`ïÌâæ/KMh6«þyäzðP9þ ›9‚˜ûªFïA¾ÒÊŒ#àQÜ'Âð %ø›­ús 8|˜ç ä+Ð ´ík2kPnl|"" _ =&ÑSÄÇ8Ð ˆJ« ©¸›çûi¯NÁM}(øîÞ€ŽDig1˜ìÝ$®È£Øi>ÝRd»V§³?@ü+5YÇlõÍA5ó·©Ð2Þ$òÎÒe¸šÂà4ÔC–ÞŽÞFCE` „ŽAo§ßÑoÀò—BuÆ{zØ“ZýþqPÿûMÈb‚®«Kñy­Æ¿‡–vX:€úRĵ ¬ Æ! ?¾‚‹uî£%ç­Ê ƒíÓ0¥`;®Ì6ÌVÓžÖ­»ûäsJÂ74½€‚ŽÖ <ô0E“þºÏЩ84åªO®®rXs´§jÞcÊÌ{MuÑ z¨JÉ'L8ã`#ЉœL8ÇK&…L8ð ƒ!M8ÌÜ[”v·s¨He­ßEû؈»'Âðr²Õ­…@­j=£Ý=×i<`¸{"«cìM£FÙä^ãòèßâå'‹œ8uü8çjùæ°–ûc<Ý©!ÃÌùoG±—ÀµÐ²onŒ1°‹³'yÒ ¥Tõ Tpß=¸1ûL¢ÿ ÙqÞv’qÎËþ—Èvr·°À3æê`Ý>4ò Oú3= 7‰]%[Sž‘Ü5£ÈÜÆ\mhD+hŠg»Ï·£¹ÚÕŽ]¸S3@‘ž¥úàMjÛ*´å© ­² ÅMzdhÜfòúø[Æ_£´,¤`¤û™£E›IZÿÐ)XT#ßhÔÝÌ:qŠ-©€Âó€÷-l7²üf÷þD÷¹žäf>¾²Ì\út„@ʼuú.Ý—z"\(ŽöÙJfkʵ)³YÅXS¨zž€ˆ ð‡ÔÅÕšz†u„TcÎÓ' 4ÜתÎp¶ES°åÞþËOîM"¬šÅ­Õƒös²'ì€[0Ëà*Ê2x¾=Oýj§.%¶e©÷§s½óåµiA/&+`)$é)nl3õ˜Š¾öþ_ªß#»(n¯t‡1B·ü’ÒÞ+|èØŒ¦%ÜüìÚO#15óA”a¦ÐË>e?“ÛKb<Õ¬Ó9UÚ[ /3B/ïcoŒ‡š¤½ÇÙežP:¥xxɈ©è…Qg¥½ûƒ …>r~€ïÑš3å@,hmÒÞb ÓמÃbS— (rÊ”RŸö÷mÖï9ãL—ö}åå‚ÎŽaW¸±dJqTIÌTX@ñÒÞz~«¨Þ:cíg¢ô1çq›«Íi€B¬¾1Åêà>~ï¹\t,¤ýý‹ç@joW¦™²Õ…ûöd¹EEÙÛ@VÍ~Ž:»ˆâ‘aæt[¼óÏ,?P«/¡¤W+á› …å,1±:ÝDKp¯£Ù~í^íµîç´Å>™ïã­^9Ò½?å·!ÏG’{X> ²K :H¸÷[ýgÑÿõ~ø–ÿ\Èàò „´FõÙŸëÒ©¤äÆóåñÞæh“ûwó<Ÿb²í[•`Û‡ #ÚÖÿ)Oýo†<ãM~lyfàë¹V¾(ÏŠ‡æYž•-N`ƃ*ã?òc¤ÄÌYÌ¡"òÿøÚY£0ëáKx±äAJ›×¥ ¤Ø2¯#Ò²@ò¢ Q T£ NÉlÏÆ£‰ê`-àV'c`Õ‚Û`È9ꔟQÝóÑ0ˆêÞ ÆC¤½ûø1Óã'®=/fZsÞT:‰Þõy*ûm—œÓ<Ç€$8ï’ö^äx:ˆò-‰ÁÒÞø.;TÛyÜ7hv_Žv>îÍn-Æù}p:¢,b·#÷ß[ «NnQo‰¦+GiGn~¿äc`ÈÎ1_s=0ˆq6è¡]’‘¯„2Ö¤¢#ŒŽæ÷_ú8äãûÉëHÚÍQo‡E>oÿyÅ8²h¥'yÑ÷õ@:ñöÞ5 p³ÎQz>ާ~&0AØUf šöghí–Êö¡ÄÌHf]ÑÿÏðüÕ˜´5³¥ÖüåÀ²ûìÚÏ|Ю‡ðîoû<:’ßL (ííêûên†\àæíÅý'¡ó‹äÁ ·ðè }>Ÿ ÍÀQ|ýgx} *bFqÊo’ö¦Ý€¤IžŸE’¼{Ãþxhßå j¦ZÈáÆôe½ í=ÊïÞqóËÜU?I³×KØ9üî.ñ] Õ°¯Çþ æ ÀËt ÒHÅn Ð`¡JG#ûÐ9–gÖ³‹Åƒ&Nb™õ¢%gâ·´Òˆ>9Úά×Qg?BžµŽFq¼ wˆÆßM–Ô+Pó£ÉGG¹ZÜ—£ô-ØÕø\ÿ^; d_ß5z¼ô;g,¼G)™ËMcäæ\Ü$2Ô1o2wñÎàfÙƒY¤îÏÜN,*Ü”®Rf§«ü/.ÌÄæª‡uåjÁýЙ&fÔ‹Oé™Mæ;O(“Y6›¥îþ+ ÷cM@cgkrS–ºõ¯Ä÷@}æ™$³l(±¨ÊN²Èc¹Ü˜,×kr}îlÕ…E3°ýøC8T¶RÄÊ€õõl7¨¦OЊmÉ-KÍük¯È™áWL¹ÂÈí¹é90‡ê—Ñ”s4-¿7Ë=z)ÝÝ‹ JZK2KIßï®i;;™ÚâyÉwKǵ ²ÐOtÜä”Î)f’Y“/Ô|Éß~ ²Iü•Çñb±•¿ò]Œæ/-…‹½t—Ïç 4²¼;ùB|—R75èëÔDú‰7"ëÝÔ±¤ô…ûÐég•ì&Ü€q˜ÝÕãÝ5I&ÏOD‘ 3á}€V ,+HYxNcmì[¸+Ô0ÜD•¼ó#…Åõ&`[”ž=‰?gôc®&ç |>Ëʇ³ÓîÏbK¹Ëjs5 %wºšvG­QZQ¿´¤æ©æ°kcwµq®­KË>Ø@t•´·Ù&ˆ#qð6ÍÞ@+ë°2¹_4³Ws¹š’™IÞ±´¾Í|1®®ÁúÚº¶¶2ÍÚDsÇDD‰âGl޶åóá¸ë˜¯ªdô][mÈžÑ×0á ®-a(ÃÄDŽ6X_?G3†I5‰ÛaáϘx¡L$n5‡Üݽ¸Î€ ë³ÎVÂ:³]¿ÎÂ+­|˜û³®~‡Ø0%À,°ÔJÜ®êhù,ò`j¦¹N·m8|XtŽ6Òç{õ‡,uÙDV›&6´X¡u÷i¯þ]<é› å+iñ‘ÑßQcÕ1„e½”h7žj‘äC„OSä+²¤{_Åœê´7ÑñOJ˜ë~¢6vŒ£XCòJüÀ÷6ò?Z×ËÄû®~ðÞUËÒÄâ~‰lÃñ<ÒwƒPÁ¸½fqwtLÅ™,'ÃE³º>ýºÅ­O;€‹[Óoÿ O{»OËÅ;˜œüxŽÒñG’wœÎÒbÈž˜Ä—á¹½ÉMÎü>«Ô9+ ÐwŸäþq·+jÅ(àýb]öág‚ë=,f™ä¾ ùm—xÉ@=µ¼yp¬CÉíÀ³> 0¬耕û³Å‡~âQ³³sÕßýŽ,gÀ›Ðƒ®¿ä™XAÀ›j¤G•…ƒ£ïáÈì8„f=‚K€EQ>:±ŽþuãutÛäöåã¹ ”«M5>|-ƒ¢ -}ÔsAµ”¡+x3èRô¨í>‹`RýCçŸö»]ͱh©´ð!å#ãòY\>)SXÊÄ4ÙÊ.^¿|vÂÚÉ´$ò¿èv5FËë‰Oé$˜•Âù9ˆ_Ýšò«qˆ_å·Ê ­™ohÍ\ãÙpßòh¤UóŽÎ²–XÖÝxñyW¿ì^ÕczX]£³¬ÕÖ€G¸4&ø–Ö+øÖÛ}+ßB7µ$ß a.&¾õÈÿ|«_T”G¾ÕÀùÔc‚oíûEÆé,¿9ˆoåß4jûßò­§þ ßÊ ç[±À·n×ù–Qð­hoÅè|+ö†|k¤!¸÷¿ÚÄM¨»a¬FÄÅ|XU ÉÇ“ëmM,ó,+ùg £dÔ‚*aÑ%¤6¾Xd 9€FAHª Iµ($ÁDZn¤c@¦² Aº}.¿3¹¡¦%¥ô(?s»¶¡Ž¾·ú‰˜gß2]ÑIÑú= ù0¶h–G£Ãh@°frûê¬I÷«5_Ä®íŽH ¼„4ÆJT1¶‰%T¢/ ¢(´{ÕwA£›§É•Š£y¶&[{S–°@Õäçª q×&º»b˜}›ü°˜z}2]ÛbD "ž_‰{Dw3Ø*"Ò$ŠçZÌ9L¹¯?­XüÎmòû W´j¿¹Š+xñ%mö}ŠÄ¡‚¤b¼0wÒD –Ù²"Xÿ2ŸbW M̾£ ¯aGA‹X!óÌÖ’ÈbÇDâF(ªÙ[¡ÛQç|$ûAòÑä 7:'¸ÏuÁÖÍHnßî‹@>åÚ+_ă(àõÉ@²,†˜´Ì…Í%ƒŠçŒ¡©eâ$¸‡–ýË_W£Æ>„°v>«Ãy;ÂÙùÂx:o§i÷«Ž{ sÆöÖ,MÞ¡8Zf /Àø¦Œ·Ëãùr ˆõ8×ö—…*—N“«™«Q};åZ²éhÄs²0ß06A6í¯Jžv’ðÓ@’7ÉOsùUÀÖ[ˆ‰ááÐ)›x*ËG P*œÿ‡Å^îZ²’ WXæža‚À?ì™ëËl`½"ë,ûHY„liÅ÷Ò\› o% ®¸ rÚèàÎÐä¿Lݹ>(¶†Ë¬=jöÝJ¼ß{låÕÙ1pÄn ¸M¡‹ŠOoñ68͚݃T\žèåçy¦G1ÚÒì›Ø•¬D—ã]ű\öä†YLöuú0wyÜ‹ŠÍ#k¾ˆy”¹<²Ï4ÄGáìÛ½Çt1ú§šXÄÓWƒkì^5înCÄ|MÞÍ*§ëµ:Çìj _’ë6GK^+Qp3ºq —Š&V‚oº–1È0’¬R¬#Kýñu=c‡n‡^âU?Å“c](¦Ý‰zű•ËþW°­ØŽí Ûf„-ôóÛÁ[Ùƒ,f3±›ªð@ûO=á\QÁý‘&vù]D·¿ ØÌ¾9À?ä´BVð9=ä Š¢ê¬x©øDÑ6< £¡ÝIÑß›|£Dÿˆ(ßJƸfßÐb0Â’ä‚ö–IéÔ Ì ¹ÕÖ¾ìS NÀþðé`Ã)Àq–¹MZ‡¡ €ËßD¹DZÛ=Ln¾i³{œw•º” °=›œïÀ ¶˜ßŠº|~[€@>Àí[}ñ”Ör+²Ey#{€&À…îØfHµ9<…MÜî)1Ï#·LÇ“l'D{Ëþéß ós\°Wä¯+ÎqIf1MrÜ·½8Úݽ\Î2·.¤eV®¸‹]Ð'™gn)6äÖY˜Søaw}>0„é%·™Q²7è2Íí-eÄÜöÓÒÓÈ'7®#fiò6ÅÞ’ŒR»çÜx«lpc¹Fpˆqƒ© ɳ$ž=bn_GØî1’¶GCãã´8<¾Õ¸÷|Ùn±]d)…·\7kÜþÍeR…ø0_¿Ëß©%¿Ö¬¹ZýâŽëX³NÂ…–¼¼;<§ÝúÁP¯aÏe”ÌQàÐ ,3¨ÑMêÌ´þbçÔ™PP(ӳ߹½¿®Õ„ö_2Í3ø3F–¿C‘[€!Œ’wx"'tíÑmj’çºÒñ”•Çü²ËÛ%Ï $åŽ- 4ïí:^Öt›ø #wUK;›JžŸÖŒ‰hŠí­¬cºít¡¹¸^`Iñä;Zk|1înÊó%XMý± ɧ&‚Tìh•Öý±òí-$>mæ®=6×fâê+V•ÜT<çVübÒ÷•hX§ vÊÖeª"·*Æ{¥°P®¬A-ÈkíÅX ÊðOâÏ[€%3y ”rà—íCÉSŠ‚H)iɺÏÇ&÷òÌjÃîØB;/•æhÖ}aí[…Lq§n¹.9ÕÄïÕó´ó»W vaIÙv’e‚°³‰Ä‹ÌÎTž¿#ƒjw ¸°´.*M #¡ÇÒº4(5•«ŒçÀ ó7ï”?B-lwl„^`W¼W“¼1Æ0‰"ÌF}0ꆶ‡ßD‘¦as4/Ÿ†æ‡z”)òG÷•)š•üÆœkU1{±ä™¥ËÍ€þ’w(‰ŰîF!vŽ`xòÂXjÓq“Æ/ŒÄ7ÞB›¬­ô"uÖn·J;oNn`±Êntùrk·®ÈzŸ’ž©dHTyT+Aª] ˆל‹‘vV÷ÛŸ"—åV–}¦˜9ú©HSwü\ÍyS¿Ù\#í±Sk?E¡síeDi9îý(ª_ò¿ÆÎ®=AÖjíâ …n;ë÷à7=ô ¾—¼Mo¢(mçû1tc øu8e4ï€97rTr@Ÿ>˜pé¤È"ã|Ó/"A¦ÇvX$ÓYñ=+ž*rÌ Ð ñ"B=Z+z7#%»*m—%o¡ð|Öf™}K‘~)¿$øuß*­Ã#&ï`8$2+Ð/Jì·âIò¶}Xx«´Ó:5ÜŽò½»ºHκ?{xJ¿ã¶—s_Ž\ž¢Ìd=ìôñ/¼Çä$ég.#!¥HÐUt 1t‚l¦Åø0›$¯Â&|÷Á¨ãÿ{Ê£ÛQj°pJ‰u‚û³ê¢î"ùþ)ŠqLé²6´o u)Š@ÖðÚ);o¨|ZYiá#ÿ‡ÊTƒÿ ë`Ÿ¬ýœ&´—&tÀ»ú„Òñœ9šÓËíâ¥>§¾ HóO¯ýŒ¦µ[Lë»imÄ—Pm/UÛ#^¦9KêÁ‰ŠÕ†r±Tr³û\uÑ•"9Ú}Ù¸ã# +mnoXïÁêNúÒt9mÈiµ=BN‹9-¿ÙWAÂM3m[¶ðü6ÌÐß÷÷!§½—„K´”S!ß… ‰jƒI\‰gC( wøÜs£¹—ׯX˜øDÌ•Ôwîç\7÷ãÂæþ‡4÷@É߯ìÚDöÄHs¯„°ÀNaâÖûî¹B(pÀÿN Ì ¡À´pÍP7qÕþWtT6v¹»oc¾îR4u ¤ØƒH±«ôšE‰}f 'z¯Á‰Sß…{z6N\¾'^ÿ÷8Æ=× ã{Ý„c5ò¹ØDÒÀn!ÏIÞ/‹(ööíÉÜâþ,–]I>ÎNG9ª‘p‘vŽóÍåí0ålŠi{õ 玦Œ4Ç6eH M…7sWSI¬ –S¥ ýŽ?’æÚ¹ó:xKÖ~¡#&½»=ð:€·˜yïÈãëì·]¹ø:0莗z,GÐ#ìbo·qõç”!8ŠÃa£ØÛ!Àw‚Vò>—=À$ig7Ô§üjI›M€œ†&DOû66bEænšèóA ¡c¨ÜTƒz>f bèÉGÒð¼a8†ž¯9gêÏV…ä-CûìÊÚs¶+MwÐÎKþ70zÄâv¼ÎÇú×±ÞµŸ°zšî&P¢ ×» 0ç ¾|Ÿƒè<ÄwâëïíGu «›4ò[­n$Ú_î蓟}Úõ‚}ç¾Ð0xæhÔwG@ªÊ à@©þhT©ÀZ'yÿ%dsSÈò†Õc P’”üöQùõ޲Ä<ª.D?¬BèAi”<-$£îI=h«Ñ-~ìJá0ÅñîION5ñ˜‰PÔV³ì+Ö|Ƚ/’ìcµ¿‡LÉ•ÜÑ`sT Q}9|\UlŒ›8É}Ùbz¾¾<O1Cíu?1:"bÉCZ¬ôÂo0)à®}ܱ÷*Ñ ¹? ÛŽKž)hÈê“£‚»_±¦¡èÚãþ´‹YÝuµ±"ä é”)ÊdbèÄleí®Ûh§»Íö mí Á¼Îù°û³HæØ®ÌŠýCZ‡ÞÁÊbcZ~ƒ´Ï›/á7…w÷¾¥]Ùì,û>ë&ß+lTúîö´ð’€/Ö Ã ås $î:‚[%ù TG«Z•pÝö`kI-š£)´UBY@ƒ¢­’ÿa‚`4øª äy&–¹ÍgÐÛ%×Éã}7KÐÚY<Ù†é xÚT–´ö]ëÅ:@f¯«ùj¤¡ëhî6ÆPy·kG´H·tÚÈ} R.2He¢ 3Ü÷¤ðÏ:vË5ûÞÛBBî%²nÜqFmèð-Lœ Jž¶ÿŒØþf‚T°”vwKý‘¸&ºá@#€«Øë?p'Ã^ËoΚܔܠXL˯%É] /K†Ïhœ4ž.»DÎÊ}ÝÁ¿Šô°QÐÃ<ª  BãÓé†ìûu,²p@¨&ë²K‚~ͧ³Öñ¼¿ïÝ·+ÏÚǤ /³i½IÝ~óuäEGA^îÛ_Ïúö=ÐÚ³šÝ—¼lóоÖ`@äe5—ʀ׋Øe®ê y‰ 3yA™ôúíP /*Ò—™÷’`ÐÆßw?ôqRx[Ýu‘i®ê÷p^¥uè´ÿí›P´ï¯1ÍË>hm7q–ÖaBÖ÷"FkÚZMƒ¹^x8Šª^†Aí Ú  Úœ’<Ÿ#ÙÁÎ&EóÀea‰Ë¤ ªÌàÕÂ@vB÷C¯ ­ó·¢Känߢï5tI ìÒÚi¯Öïs‘´× d÷éÄ&³]תtŸ¶%ÃtZ³G§5[B´æ_½ºíÛÿFßÙ߇ïþK]@‹îïù^€Û°]Ýe½ú†`ðãýtò¢¾öëo{»Â~ý­»ºãöëLa¿Æ]Ý!¡]Ýá=‹ X©„lôùi¯?ò[¸D›Ã¶s® [v½¾¹*yï!ÚµƒO@t¯Oî‚)0ĦeîÜñHÏÑw“•6fÃwW%OMO˜¤¸Ô1Daf ¼[zú@ëE"•(gê_»uýx%ýKÓP+†êû³ŽÖÙ¸?‹a‚ÖŠ´†…ögïçk,€a¡ýÙ±$Orx¿ztP‰]ÖÌ_êдP-¶ËlœØ—Ñw_ö=›%¸/ûEwp_öêM|ÝzU‡­ß-¶õ„û°üŸÊ†Ço$îø?’ ¿¹V6lý?• }›løì¿— Ñ/>\ìzõ;äéÿkùð–ÿ|8©¯|øA˜|X!äÃk;{Œ¸­˜÷üßɈÂÿq"úë7±üVõ•Á×¹Ó´æý§2" ÁìHyýßPF¤C(Ž$LœòJ£ÿdD}Óò»dÄ¿ ú72âáÂO2"JjÎ!”ìÏ u¡På[!Ar¾*L@|Ïi‚òáË$v 1ëQ¢`­JV$žç½ˆë| ³ô‘Û‘øŒdŸ€”øylÀéZ)qdPJ¼+äÀ«ç™¼•Û·bòü6[=Ë—A¼Û'y¼äC²GY&ÄÄ‚01ÝüxÜÚËBL| IÓÚ01O ±n!%^Rsz3ÃTºèÙúWÚ:ÑÅEá­2&\\ Û[úßÈ‹†×é®×ï-ÝH^ è­‹E¶–ÿK}õ?’…[¶ý%tyñþAyQøJl½±¼ˆâ˜3¾Ó¾…r™Iက¸‘è ƒds«ñÅ®½,Ä'‰†°8‚Â⓽až%…°HgÑÕ?›…ôþaò¢#$/4ËŽäÅ-BÒHD¬Ô °Œ|_#yñ³0yñL˜¼ø‘./ÖåÅѺ¼x­Cžä¨Ë‹×8åù:zô¾ ¡¬ Jþ|Ö…E ‹‘¾r¿Œ]Û+ UÜ„–.,®Ò…ŧÎ|Åý¿EX¼‘3ßý×:óÝÕ„Ó÷Â…Å¡Aa1Z£¨äwúð Y1.(+~òݲb¼.+ˆûnY±= +–dš‹.I;k†ì<Ú¯þàþ}Ž„mFDÿ¾‘"¢ïnþ¦s;¯afvTðt‡ìTòtаé/C¡y<…¾å0ë"-ŒÀúx¿ÞÏç&úŒ¿„±½h²’ç·â}.¼_Ì- ‰ã†0u5IžgÄûûáý"Œ’÷ Îô. üŸœ^n\Ïí 6{ƒT¶_Úy\™<ÛpéÕs£Ûò€Ð*¹#è(ÿ‘¨üú£~Lc:ö×,¿6ϯ³‹Àθ›ç7ÛŒïÈC2¸ñ—ÐÊTøN8ì',; #Ýð "YÍÜü7ÂŽÃ]-z¿š7aÒu#g¸•·Ž½5*ÖbV $Ý=.‚í—¿Á¨äÆfoÃ,~<Óí0iˬê€~"ÔpA„:§½1[±nš-Î&‹ˆ´&-[Ž‚îƒ|†) ±Ä[-+ +æ÷ “…OxÛ›m Û%‘±ÕNA¸Ìz[æéyô» N-œ¨¶œÖ§v¬>µJDØÔn…vŸÆ©‹§¨¹ü—Tò sÀH—‹÷¿9Sü^Žw×¹)Í•Àcø+bR˜}ÏòþÜ‘`s4ÐáÇT-ÍUíJæýmVÜ”Vh\1ˆµ'×§ë,ij¬Lv~–¸ô––1Úÿ§¥?:k6iË“ÔGcÄÎ!Ê,s¶2Ë”­Ý¯5ˆˆðÀóP`.ÕW7ãJEø·-•õë³)çñ¥kõ§=Ð |lä ý‰ué/ô'Mô$õ›’P7…R‰ÒâÒÔjžbÉïÃðR€|ÞŽN‡ªGm“<(¨¹]ªqù0îR£Ò”=´Yýþ›Pu.Bù¸¬F݇1Ï•™)wg«%‹¶ôwPú»¡"ãÃo1Úß{ˆså™»w Ü!²||PôPD;¬¯ýÒ::ÐE£RÎ(ŽM³s€¨my2? ¦¼ÖÝ%­Jdæƒ"*Œ8„ù³ †¬‚ˆßãRj“{µßz0ïXm|ºˆ¦LJâãµã’¢ ‰rš´k¾‘ÀOl‡ ï‚»ø½} Ï0-0'H»ª•±nÛ‡+ë8x'íZfN=fûp¹çõ"#ÝíÚ}X£*OèÕê¢ñ!Îżºh~I ƒµû°½èCïæÎ÷7‹‡jÿ SwI̘Úñ¾’z›e¸8;GÝús‚…»KsÞl8@l–mÒD §†¨‰óao]˜ë; ö¦;Ϩÿ“OaˆÉé3,¦Ø Ñ ÿH–*ˆ9ÊG»:9FdÚÌÍQ4Š¢ÚǦVûÏkgíêè¥|HØ{›¿5l÷q~+Õ|†À öê{$ìQGDÌyi× £b?qÜÛ:”RÖŽ­~MçŽvÅ8»¦%Ë(N“9¸<–Vÿí(;žÆÎt©¿ߪ¶)ÆGè›Â8eUŠ9í!üfÅ(¬‡œÍRòÞAê<1kXÑ^Ú•‡J`dé8¤–¸Ÿ3F8_¢H¨ðÀմĽÆá,É™‚¢ §`¥:îv³oöïH»¦aüQöVusÛ†|hà vøÖö`Úǃ_-bö¾<Ò¸'šà+ÇÕŸÀ‡¾YðXÚõœ9ê!\Ć“KøTMÉÓ–PX§MÚÕ¤Œ_ íZølí°óA¥]#ë%!o Ÿ©äDê%%iW—’°FÚµj~í#ùˆùK8¾”<èµ'íjPf+cØPóy$”«¶BƪÂbboõb}9ý2ƒB7' rÀ;ב`W ¸öM<ówmb _¥Í™©ŒÍó[¤]æw¢0\h8¯b<ðÌ#u«2ôÅ6y±1ˆM(»±C<óUi—$«}Qr+“j{ØÉ°TZA æah4Ј U‰Öÿ C¢‡ÿ+€D¯‰ ï±Î{oæšu¼©¨"pj±õ†4ž;ª½Çøµò(Œ’o¯—v¥¸í›Æ»í¯Fß’ë%eF0û˜Ì¥êûôjó€îùn¾‚ø0çJ>TûÿÃ&àM~4†b“šû`ÒøÂö!Q]ÉóÖWÛðéyÃC9ØX€WЫþ)GÜ_š¥Î~cC~Æ_ä22{;õeìH 2~8ŽkUÇý•ò .á9PêÐæø ´SP­.°Jv/;ªße0‡º„wI»rŒüVbžÇ±æ9S€¯TÛš GÑ™Ævõ7StÌùÎÛ¢dUÚeÿ ˜hdòü>öáz€6»N±!Àæ¾ÄA›½´r,ˆŠ¥˜fÔÑ>z®þê®`FLÖÊãÑÆ'Ý]½«¾ÇAìpöKwwV `“P™gM"µ<1®¶RïU;ÕØ$Óbà²1õŒ¿iéIÊ Mª«ߘçy«ÉýX“Šy‰ý/ýX½ˆ^[–ªúý,º·ÖM¢ô“˜{Vá®ö¾9Â•ÜøÙêK#ô0¥’ÝiE¨ÒølõíÇèQð=bôØê¡1ç¨oу•J^dm9êÊûzµÔ3ó|1ù^,m„²Ú}Xø·Q9r§¦é±Ô¯—‡ àw˜sà ðp§ÙÝåŒÕcQ§ÝŠÕ8SxŽQ™é¾¹âseºæ¾ÜËf]g(ç³1KýÃå`(øyþZ´Î0ú÷èq¯1Ø7”2¸‚z}ûÆö’oñ2øl®ß–©”öTü4æÌ¸b–^\J‡âiŠÿ—{õPs¾– ³:'^ä¢ò9¯¥ÅšýKŸoVNŽ®´JɯԒ8ýLÄHžûf(lIGU@?lÂl+±‡@?TĉŠ2:-@ç±SêöhýŒ'Iu¯Œ×@­IÇìØP?xhì›LΡYêéaØSQñ<ɃV†¼ÕbÄï3ïãðx¾¾If,OüÔlzÇ _Œ}]^ÁÉëšO~=ÝÖî,êŒÍRŸ½ˆs¾žþF%”M£Jœ7_/¸9)ø” ÀZôTHû=]òÁo:çj8"5¾G(ý¨Öà÷†ꌅ êè©>K=ð|q˜Ùœò“`ÆVY†s“5”æf7f¡œ/yÿ2ôšþK=–šá=¸ú”Uå;XÖ5ÿZ Ï 1O9ŠyN{_(;Ëw¬í¥Þ}O[¾ù>Ô"'ÜH4E+=Æî±OÜ_gx;Öü 1ÌG˜ñ¸>(4ü¼»@¥Ø—õÉà©ñÀœX_—ŸÃ–¯›5(-΢êÆó² ñrš—[Có²Jp^ªû¦s±>//¥â¼à>²Ñ6ø×bkŽÐbÀŽÆóÉå;D Ò&¿–NóíPG>ö¿©¸väĨ¯@@{ .ùðä[®šNóÄàûE’÷4L»ï,Ù}Ì}3Vê¡®IšªÜŸ·çª‘ ‰y<Ä(ãœVÕ¹Côü0^̧Uç«ØYó[…w1Αœ^Ž¡ïx>L3–µÀ¢•¾l3t¯ÇVÍj.ýNòâBQ¡Dy ÍTnÁ¸,uR-ÿÔcH§—Bã–>H”—«6„¿Ê„W¾Õ¢ £¾qW>t©ZVj‡nÿkl¡ÛeJ•ŠVÍ|€SBnŸ ÏW¢<£qs9ÓpÙ{Fq¦F®Nä™í ^ ÇÝüÔÙê­CôR†Ȧr´š¼" 3ó—"!ÔRÔKƒõô¬C—Þe³v¿úÉà@æŽJ,`ÚÊbCŽºs%ÏqÊÁÒd©Ï#$ñŸNþ\õåaÕ?µÚÛ±Ày€µëë,Çæœãr>ÀÇÓ˜p5· A&X݈‡òÒ³Ôt™ ¬ã'³v=ž‘™Ûüñgü+þ€)2<÷‚®­¯ÐÙš ÞŒƒ:šx0Œ¬E2Ëgàùƒ‡ötÌÁUPòfÁÁ„†Óƒ–KžÑøô~ñ´vP _Î`c„HÌ#'SλýˆˆísšCÊ·äæfÄŒ:{&P ίǨ¶Þcs%O}:åÝp.¤xó˜˜aÍÜ^Mqa|û<̧8ÔÙè¡ä·äxÃ÷kc+®¬¶UMn™¬ ܯˆXý„)íW+5™ÒÃJt¨vŸÃ˜b ‚O3"mü$RE™.3ûÆ,´1§çòŽ%ÓÔ–µŸE´ã‘™ˆtÔoq‘ª¯w]Õ¸ÍÌ‘~¹º ‚`ŽbÕ½?¼ÒpŸMYº·ñªI‹¨v_‰•^ ™òúµ£M‰¶$/†uãSóuSÚtÓŠŸ@óÜXQ=$µñ›¢éQÓl毓&¥ÍO\vC‡:oæùî*ylÙ\3›j Å’òä‹0ò<õ¯‹È|ýÏÎ4ÇÈÏ0ò±æüu’ÿX³Õ‚€> >Ùy5 ÂTûßtOø¾äm!«C5Lé@ƒqPu^ ˜ÌrËnÌä"V…^q«ïG|¹£¨2*l¬˜êíX=2Y.â™E†ŠU$,¯9®^í€r3‹ïY¨+Oýç÷1ùì\§YŸß=(žìtʾóµnY Yýìd–òT´v6­ë1©áx’ •…R<ųŸŠ €Û×çic½¸ ²)yº:!·»sæåNH7.vWGg©£³ Ç®EÈIˆŒ¯ -Ñ‘ñœ22Ìdí{zÐyFMÄ~ £½ÿˆ°ã=ò%ãÇ»/Çæ°:v‚–^@Ýî>B·HÉ» Q$Øf¬¸öj®M7ÙNIî’®=7qm."›3çÆ¸6KǵÃlYצ'ÞÆg¾F¸–Æ¡¢ G´YC¥ÂñÇh`“š WSïú& }Žtø,Ú|•§òIfw—A­š´B£š°Q’F:Q:ŸrÔø!^sØÊY,}žÎóEûÀ1E@ç§xAq#@‰@â\†Ôœ)¸å¥ú€ðûÿâWóbv¤:ïxÄeÜÒrŽá‹Œ¶r,(y>“£UÐW›ä´žòû½ò? ~¨¿|/F×Nö;¥’tÃøt§É\p“zh3î•hÂ)¶.ï¶Àÿ»#ΛMïFé1XäÅà4ÒºÇðËò;iÔ{†•cÿ¤b …Õ¸õTò*¦Ktjâ÷µc[üÖ6ø]9ÀÛ!mˆ†š€é& —› ¬©^мrdfꢡhþIЉÞXM–«Y&Åü7þT’b]Δ$\ÒÓ⣦Yã1ž—¨Œ}Þö!« ]1LÁ_îÅB6¯þÌ+ž¥ŸIëbbP½´]ä 1Sìêª[×m5ˆ‰!ëK74+¢${áÆlƒ¿œ®½«J¤™ú‹1‹Wál„åŽ$¤>Txð!ò)­Ù×OÚ;>j’¡ÛvxY[êA-ËjØÉGxVÓï#>ßÂÊÈù-õXg]çeøëþ"’¥Çx–ΈZnbe3éìþŒ­7'†DÕÛ +¶ñ1ÎáQåø2ê[vf ýú£ß¡‚ߎfëØÓ­Ë6(ãðÉ{i÷‰%Š‚5uÞi½›ÓdýJq|í®Â›ç½¼/øª Fö^^-¼`b¿¦3ÿÃè•uÏ7ë_iT“{ŸE£ŠD æÕKKgÅ™ ,Z¾V”Ú^´ï)êl—á»76Ó>¬ÅV†Ï™7‹þÎÁIPþ‰Ý’¿fè‹ÇËñ!n •áR¬˜CØ@o1¸g)öO?<ª»l;¹âñ ŸaödåT±B{r°†yFþˆ ÊÛN.?Á˨r€6ùð”QµUô÷oXÛگХÆvIZ‡aÀ˜k óZh®†Ûö‰óÙ˜ó¨ ë‰z ù®à[æü‡‡ÍüG±€/'`Q§-¶r|$­O"ÛÂxj~åN+SGØ‚ñê€~E´µ2‘™ªÞm„ê§QÞrñ‡ú° !à2¢G Má¢ý™/æsþîauê¿. sÊ^“sÀ¯.ÝŒ{®,^7XõÍJžkí²A¼ é"U€P窛FöYñ€’ÀγüyBB¥Q]œ†Ë.×|nT\_³òxšgŠÅEÄE±> >`uQïáLÚÎJëFÓLcuʪ š˜óQ¡õI\§M1ŽÖ¼ñÔŽŽˆ¶ ¼u Ò¿3N°QµËÞpWÑò—<‰kdñ l=W'}‘¬·À0F<*ˆP_±‰Ø~ɳ¾(°¨E±d5<ëp"ª¨ó„¶\!ìZidO™j>3ŠÎá0Ÿ2³x6Ñ,ÐZ1cMQk *oã2Cãg“¿ñèø!FòncKÜ5½c«¾)^Uíþ3=Õ|Dg-ssÔ‡ÄÞt’ŠŸ&T Ã#ˆ¡Ú·ð{ÿAÎ:SðÜC+}ý³QæxxFÀÉ¢œ—o¤Á–È,Š”—}’z"µ¾ßÉK‘Ño5æÙÊñL½ä]‚OÊ—ÒgXåÕôYmŸÏ&R¡j*„Çä߈ÿJø[X!ÆÂ%1ÖòÍ]ÿ É7é¸É§Þ?wD—ÙŽsâ!ÔÍÅ«J/"ŲÕHë¸Èºxå1$ÆË±,;Q©¬ºYëüdTg!Z14e`C󮇕ã{iÂä‚Ò _wÁƒ/ຩíªÖI‡+ø—™êˆýR/WC‰Ié9ê—Qš6o;üInó>ˆ-ìòÂ*÷Ž…KœGüEñJò¼Òƒ¬UàuÜ}"d WðIÑø €´uê™{x•øRl[?­FlAl]³ScHbá^|£XM'”…7 &`Ò*L¬Fç%´Yï_ckB‡@ì 9–RÝì´Ó ]ý)T<ŸíCO†É%é>Ëû¿,…ÿ@И“23hdFö¬I™ 7Ó-|fˆÍVV`ex¿È»&cRZXò¹¸[Ásâ½Çæ9AïTrfDª0¤ƒµËÑ´y˜•£bÔÒ¾ÿAÍF>9Éij­|^Úˆ‰H~jæ?²hŸ…õÛÌ~n>èûë_¿éõêÀ•&R:·r]ddÊŸî0{q´üb:SÇ”ùYYfìy7_z‹— ’Ç>\‹¥ŒîO"(XåcYq&èûRøÁÂú>µÚí²DH«•2\¿ÓFíÛ‹:|å_úèK³¸ç8÷S(’XN²8wQ©@õ2Ø|á®j&‘†ºò^1¢Z-ŽAß~2s@ iVo–¦ôjAÛ,¹àŠA{âö¡ÃŒéZ-³sÔçþ0 Ø›—“û1jÍ|«z\ÀAäÿ¯Ð˜Æí˜£;*‚Æ8vòÛ ¡„A£¡Áš|÷ sïù¶ÒÀ)LÀ§Žƒ`mÑ¿öéG ‚“ ¹2¬–/ÂöSÇëÇ|2-5ŸF‚T¢´#B{#¦Ñy¡D×iÌ‹¬O®È&é¯åNE¡¤„^þ.ÙꊕÓ8“ô¼Q^”þ*>—Mœj²›”„TÛ~æ=wË#:TÆßc;˪I/ Jœ&›œCñ$Û%X¸%CJ ÅQ“ŠM|T¾Ä©T”Ë’V…¬x’õ²w›iŒlÉÍÓVJ0¹òË(Ùbëub˜kCÛ?Ãv…yQ^vw);=Æa)éo»X¬PpšSË–bÜgvžÛ.^šQâŶ+ņÂc¼ ?m-ßL”œo1@ñ•ÿch<¬e3tÍvvù>rÌ^;÷6“ÄC¶Uá é¯vK”0¼처Å“@5R1ÆB‡rZ=®hîó²†deü. ñ‹ÀN9Æe û¨1ì£gúÃ,haú›¡Lž^(ð:>õŸ·®Jî‰qŠ®œP÷rhfÁ ÐC[yá š¤mUâú+2¦Y Ôpr§^Ù ¹†u ¤y Vä‹N¡iUô,ÍýgÄ÷ŠEAãy¶‘•v•áJ•J_ÛŒ¢É¯Ð@+ÖXôŸáTt A$­ +_>ÓÖ°z4/§: pl{Î(•{¿‰Ñ¦Ð÷¿ ,ËFbÙÝ ñ»˜½aÔyŸØ†¦†iòDŠe‚…ÔÇïýšðßbèeúѱ,‚oCpý÷1M¢ÀŽ>hÁbú~Ør퇾^ý7~ô5í[g;Ï9ð@7z…53Œõf‘<åÿª)qË 3VeülelÕ´7˜ÜÝ&ʃ&|w7<†“ŸÙòÓA–y„Ù$r+n?Â]µ¶©&iÅÿc+LÌ^_go¤´”öf¼w´qG=½hÅ|³šÈù2¹¬5µýªqÝXY w5Í(1Ž›â=XÅêefDªvÞõK{¶}è4Æ(JíioV´íĪv.7z;ä?»kStîÂ1™Ñ.×Ö‰S°ËõvýÅÜÕÌ\­ðœüv—Ó¶a Œçhæ™ÍDcY½»E‚ŽÌ‚žy ±ú‹HqϪâ_ï\,1~ }x3'ØHÉœ@¡`-%“%S±wÞO˜èîÒŠËíÆ ž¦O°s´bMçU[±„ñWhŸh”ŠóÉ F`]5Ðz6^ÑZ„Òhn*§w“‡ ‰Â9RŸÎ+¨ ó^öQçÉš¯F>Úï#6~ˆÞ5Ñiº¶u¹"Y—»:ñ!&zõRý]½k€w ð.õÌC<0_ƒôÄ Vî2½¨BEë¡h½»úwKOr­29Iâeô¶ߺ[Úm§¡Àiead"+GŒ-Qn_bÑåù+¥½å“±åG+"þ?´è|Ùx>o}YhÊ7ìx–ê¿JAPô[³5,ÀîE@×ãU–DV… û½Yê¬ÑÇe‘äÁÈ»¾1¨à4¹'/hFx×y{ˆó®ëÅÉ Ð_9^T`…êïâzµ¹¾Ïp»ýö5ël¯–>žó¸o9T«Pò ¬ ÂN– .>*F,Ö©´wŸôÂãP¾r% Ï·®0âAçN*hU,>¤¯èÎbE|W#½€ñöý€ ²cA н£ø”Þ\¹øl¿ôÂ7‚ù¢î­0èÍÜÔ‡xtJëÐpçÛ‹Ä€Z@Œ»ÑçZIñ݆ڟ»ŠXƒ stÞq8W°:ež!ØlƒÓ3œ*çD© _Ç3¸sâèóŒÑÞ¦ tÞ‡öÆ×ñ$ëSF¾úNFõ—ÄzªÒø5Îþœx%:l\ ¿÷¯§£˜þ#âg+ðgåQ£~0¥ò .ƒ[Mqwõc­È¤!‹§y÷)îî~J9Þ³š·ò!ÊX&íŒTf>Õ ,3°{¥Ë î/Sܽý–Ÿ£ƒ?T´(-IòDÑÁ 7¸í#úÌ"å–Š?À!•ãµ{âÚ+çq]=ºö ® :¯ª¯siÝ/"÷ÄüÊðÊ{ X˜BŸÖÜîEÄ©nÅŸÈ*hùŒ¼~n×U\ 'óE@æ}Önäq‡ÚiÐ$.–½¢\¥ •':f8=[«Àáj´ÄÔÏŸŽˆ0ÐøCÚРȘ8ïo?ÛXp>i§$˜Ÿ´s…NE•y +nç´”\(0A1þF”QNmv®6¸¿Jqký–ŸaM(– ùdDMWIÕHYQHA¦aS”œ{Ä!S‘ˆ/¦åÅëK²ðÖâHx\E›jM‡¹¼€Oe¡OËΦœ<õ`C¯6ž¿¥ %GEóú Í㡤ÿwå¨l -Uò$Ã#‘É»ŒÀzÌ9[jM›_8ð@Äè—6Éê;ަ²1yþ¿€®;â:L<Ú–Ae9ŒoŠÕ‡q gû_¹\‰®Ïaà ¹(Á±ûÏxéý Ãè“.yfÑæ‰O±¦M9L6ˆ9¤¾‰± àe£Å(†g2„GÏ“,KxZNs#¸ŸyD²¢÷Óš+ftRx»psÄ,æésØ$yý_ô'QººáYìŒ>Ü<õraXM¾EØj¼98Ñ4²ë&:;8ÑI0Ñ2Môœh×W‰€é‡4ß]yÙê©{µE‹ý§ RòÔ>Ô'w&|àÿmÁ]¹ê{øþØh¢M$‹€Ïˆ>s8Ã9MÕçpÌl˜ï šïɳ¹7Ki¾i ùž£ùÎñ¿¢)V""S|牚$èø²éØÅéL¼ž¢¥øT©gŠªp°s¥ûÀI½Éô÷Nú‹ª~ñOœ.3ÑŠžµX‡ó.N²(P€Û´Š¹´çPh RuÏh$ðÔ/’Ô"D bœäý†hU+”çBçAdͨI‰©ÏUÙmèÓ‚¢‚ÒB Js·ÀjÔFYY+)¦^ÒOðI‰E™ÞPt¹Ÿˆ¿.í½¨»›(‹œ…ÿmØ‘Ì\û).>çÅ$Œ:vDn"€«M®óV+ózJÌCØ'Åæ´Þù£wzŸ¼Í$ ¶÷ªÔ!yŸ±; ¡oДV=þ-â¯V–ë¶f’gßDiÉaᑬå¥ßH¦oŠD;Àèà ä(Æ,×0$yr`5ÊãnÄ„¼¿¼Ž^L¢Ó>MÌ¡G!<)Õ±Ch1Ou^Ì_„»F¸i€×¸!˜PÏ ÜþÓoÖ½¼F…Ñ…iŸ‡ÐŒÕð*ü÷ïpûNne‚,”›‰Áz:_øvôÊÿ~½*Ú,<»»ÂÐë/]}9ªòèà>‡ÂÊt#I!ä¨wŒBôj ©lèƒXå 4ƒaˆÕ k~CÑ•~"?&énÒÞno‡²X ÖUŠ›ò\27­=/ëÝ!Vãw Vc°7¼ ;k+k!V9¾póíï "ëДFBEü[lñïûr^pk,nÍ ‘¿ð±^² íEßDö!î[ff‚اû‡ž¦b«NlÔU`ã=3Š£h·®óSVf¡‰qÇÎk† ¹Á÷ý tOX¡9ƒBXH,K¹rý–M`CÇy+Z÷lüi#ŠiBLbDŸ|KQß!Ù£áþôÎ(\-¾Ów¥Ì(À@óbé9ÅcÉ´H»ÈXè{§'Ð4PÜfqk¡Î"èËk¯ˆxeè«ÉÎ^ú“Й·ž—xpeµô”(ØÖÑOû“dݯ^‹% J×5ŸFº[.±2¬¨¤ W\ÍgQýêû5”(ñôÚènù¨¤ÌJ/¢Å ½À C%efz‹/Š©=NH{+H>ßI‚—·šU ‡`  tÀâÏ¢ã¿Fjf­øRQ©H.…*|¢”Ñ¡å*ü;;¹ïn®kÕ;ÐõyUÊ1já«| M€BUUaUþwyU„ !^dҼ”oöW2ÈŸ gð0; ‚ãœ.œ¬—d0à»ÑjÀò-¸/²—pY ¡UÚðÂ¥χê}Ѱ賲ÕÉuÄ”÷èçäÙ[õ-Ê!KóÇÅhpyçÍuïÓ)› d—ÛDÂ-úU6 —û|;öÕýŒ”t¯dopèÉÞàÐöúO~>t©^ Ù&/WËb<ÞP.vþ¬‚Ž"Ž÷ØêaŠrÕÄ>ÕÐÈ|k.†ï‘è ? ‹¥8@ ø2 ÞƒuÞÚî€øu4—Ó´‚^cÞ"Ø@Žäùš:éê’ç0܃zbˆ*kÿuhªzнf®Aò¼€r£°FŒ-ÇÅÞªF"A-'­”mB€§gU‰³l ‚ýUýjvNŽ¢àËlŠ PÊ숔ÒÓ»Q „—¨ZAZS«‰¸Î0`‹ÉåbKà5²U[U¸-€A}gèï? ­ÝÄ·‡IŸY!éóç ]3Uß2ç…}j,«Z¤ç£vD[âcŸ~uU[äÛÛ.| Þk0;Ô`Ok AßFòçãʦ Üäþ46ù0e‘ G»ï©l‡æL´vÛšˆˆ‹Ø~ß?{Ñ3§÷¦¥'µš“¡K ½ëJ…Æ©) 4åÅ4]ëƒÓUª_IÅ¿Àøk GÈH¸*°Q™0‚éž~šÄ"EYOƒ:AVŸ«÷öà:t†p×ZÜW€È K¼ïâ¹ÀˆÔ'Ñþ%ºµXò4Ã~Õl[õRÿ|[7ÉhÇø‘ul0§ BñbcYêcë(Ö‚¾¤7@MÊJƒ§×ÒPX™ö}¥¬ø©¸N{hÝ;Ç*9C9™ ãû´ÑSVYyJV¡ ê—/“ùž†§ ÿz"4è§¥ï8ªóÔï½-¬ž/ûK0/§Xƒ¨(ãEôjk}üˆe”Î×->;º}€)õŒ¯‹Îç[x”Ø&sŽ q:!O†sáÀ¾dÈqâiE+}/|ƒò¶jõ7þa€iMœàñÑ}Œ\><ž\Êbòåù¼Œ8õ1ù^E¬-ÀÚS…Gök áÛù/âÑÀñËÙ0ßæ â5°$X¸x¸¯ä_"ïp;aL÷ •eyFßÏáåR´Ë*eFýl­ÝxT7†»¤®‡ºŠú!J׳ûï`ñ]×±øúÿ ߯™|/VLÑ+:£¯ª% ˆØ½Bì>%œÀÞ²û²0v_A장j+=Á¿yÄîïO‡y2w ]c™‘Ç…±ø bñçä­áhyºƳsh<«žËÑó¶µ¹:ŸðM%ÛÞFúâtÛZi÷n[®@Åݺm­œ&óL*…ÛÖhz* ­#’Ëô~lkçûÛ~f[{±Q}nwжvFÚð?§íŠáæ©åá5ùrN]g[#SÖõ¶5šk´­eÒ\OĹÕ²­ 0 ÛZ{n¶êÚMSN¶µ§wëSÞ~&`[[´[ŸòÏmkOuÿg¶5šïÿжF`%:€¶µV"Ñ«ô¥Èh–¨­Ž±)> hGêÁ¢*ð\ic H7žî}m=]㤪%ǰntƒCûÚ1æÅJœwÁ,^!štC–QEæM-—gu‹C¹Wºt1N.‡´ 8†:¨dߨeã»IîÂw¹j2zð¦cÏü˽ã»Ã–¿^±ªÉÝ!3> ™Aоö¾0ƒ\ôjûZdz ký{3VûmfÉ×ôIt%`_›L¼Çà»z9̾6™ƒƒöµ9ºLåûÍå û‡Ó’¤Œ_ÎrÕ›ó®‘ßõM½LëT,îdqÂÛä$꺧(¬‘…G’°QCÆ9âodœ+.A4νbj‚Yœ‘§h³ü˜Ï#£AHÞGÉ8·J§G/ñ‹æV—ï.꟎]¢¶€}îÁî}¯…}N „nŸ7º}Nçw!û>@û~nŸxöd÷bŸ#ô¬DÏŠ,}±9»ÂÐó'aö9BÏkíswY"ôÌQK0$¶7…P!¥»}.…0`lb¦tÿ{û\þÊÿÈ>7ö;sl°7¼ ;k+K !f9¾pó­êkŸK³‰Ãìsà×Ùç•·Ïé3óíö9,ð¿°ÏWey«b!¬Š± >°»|CI£ˆ€¼Œ„Âcu$¥á©àÕJýÊù˜îQl]@§±iÈÝŠ«'Ž?+Lz„¾¬ I¢ïËo‚=X…=XÃË… í;|Õ;FQH|àÛOE¯u¿5‡–ÁËüRÑXÚ)¬?BëŸò¸XyQ›ˆ¡ç”Ñ6ß"íÆÃqä;ÊÉ ÃËën½Î!!2!í1?óRuÕò-a¥¬Ëƒ®Ã¾]é3ó^Fì2–øŽ¢~$`JöÇß÷@LöÇM¤•ÓøŒkjZŒº7Û>É{?z²ªÂBªŠ´·l­Ô Jœ ’2Ô&J¨“îO @ûÝ-†£-ý•(è7Ýo<,!F†*Ìg—àmMK¾^zíì*ÌgÑëè~‡úí+¡Ù¦{Lj_¢7„L«ÎnÝ ®¯¾Ðç©7÷©¯*I,YOÝ\!$€Ÿ¾ªÍõí„hÉ­ k.K?¶Íýö£ auýaX}2¨J êåÃ*ŽÜ7ì0¶C3&Z;ôSݰz>hXÙP È°Š…†Õ}½)QèÞV¶æê±à\=~åZ»*–¿Ö®*wì… d’§¨®,ÑKEÁêua_}zY¸]õ>´«þúÃÀ€Ô‘ûÐIÝB»j-›¤î]•J)¯^gW­Às "Ëì‚Õ´,Ü®zÿ‡Â®J‹C·«*bØ Ý!»j‚Þ§+`Âc•Â!îÏ{’¿Úi| 6—§Taº ¨¾ütЮšWô³òƒ>ã¨ÎSý¦¯]•¦í$xAvUü8dW5“„Ït»ê²«ŠCA o"Úäý—®\C1‚*„,ÕaŠ 0}¡=„KU«º¦Ø'»¦X¤+}›.¡(5Š.L±Ôwúd¡þ‰ï¿IÕì#ÑN(<Æ·)»Ñ)›ì zr/'èŒü@@†r£l !;ív“oÚÁ€ù6h¨e#}÷æ[¸J|Slò%¼:Ž8"-°W˜e}‘©¿åKE“ v=&xF6§Ó` '…Qls€b[7ð*¬f çÛ[­0+F<þmÑc6Ì÷,š<¨¦L¥Ä—§]+ˆŠW濉|Y7°,'kl A­#P+‚Üì>‚ܘ rú¡-"L¡·Â´üÿ‚L×oHu™NÚ[1‹Ä¹*]œ##´.ÈUé¦h˜ûgLËdP˜ WqÝγ²Šžàßläþ” xzO‡ÀˆgÅÆµI߸®ÒMÑß"½QUT!Hoï ^Œ†É{ºoŸÀ¥¡cW?A‰þ~Gæ2šŽñ jΧ@4ñ±%¬"žHrö8“¢àÚluÃO¿é¶ ·„óe@ ˜ÑW´?,޵OËf>Ý„ñOÁì‰6†›‚µ•™–DaÙc™ªä>IŽ¿hÝË7—L2o5’ì¥$w ¹ ‹`ªTL6Q2żµÈyK H6ùÙÍš½½d¢y+#в¢é!cèѶC¯ë„­^Ã;”ûYKŠäY/B˜t¤c…@Ñ'¨è#zQJ&d÷1VÃóU:„´ŸT玒çÑ\¦7;Zyf+Ao‘›ÓòÕÂ;Цœg•öFMBëµ» >/Ž„ª¥ÕéâX=4%—‚n»Ó4çSnì&#ýq@hÀÿûö¿×§ýÂ…Á¶6½ÝO1 ÌD̵qÄB£C…ð°¸80E(Øø?fö~¿#eâX)š`óÔî·ÈûZÁóÔ/ß"¬óŠg"í¬ÏÎSOÓ{Ÿ†ÖÒGòÔÃz‘?Rp®Å=E€Ÿ 5÷·o‰ÃšÏû}wå©ßÒ»tF!Y˜åÕÕoéöÝyøôkà¾[-’盫ÁŠM"}§®¢Dèo(øAž:3PÏð‹×ñÍmyêý¢} ’ç2 <‹ñåíyêpñIð%Eóy5?ÁÌö³Ì6æh!Îe C ‚;ÚJ"ǯq>é©^½”g¶'ŸÊ`޶pCkv:/H{»Ôúî«–GÌk_n{dFÉ G‹‡ÈwÚ.,¿“;ÔéP;YÜŽG­¹È]m%±Pó<Õ+oóÀlBš½ÍvaE]0ÖÀ>ct@Úû¬æ?µÙ.YÑá?È…¹¶­1=ž¾SÊ*UcÏÝ0×M¢”D'ý=üKñ ôt(¥ÙJÙ×P.7•M;‹Üg2üU_³²™x[~ä,É(g…<\çÅJE¾ÒÊÙ€ÜRWE ¨¿Ú«'¥tŽ"‡€÷«ce‰Ø—Ÿ/q§E<³ˆW`KœZJÉcõÍÜMQfçèj_»´qŸ´óÐ#ý>¢/nã^üÞ[-Dzn À‹Ñ’΢¥Ðó8E8Ÿ£ž¶a4Æõm¸Xä%GPÌ ,—«.„rÈ Qðû<ÇÂj’"¥Ø½ :!߃;CÙ…bÜ—!@I;kÄÚaí° X¦™å1ú¾Ù 2á:ì~öì<è>ŸaM®a3ð>«÷¿Œ·„´)ÉP|´Ú‰Ö=å³·ÔÙ·í›ÅÏ&ñ³Qü”ŠŸñS-~0F“‹%ïšÄ0Ïœ¥‰¤>>ý_˜µtš‘?“Ä\Û‚oÓÅÛœàÛæÚ Ô©$¨µž¦Kò¼ ;2@̇*yNŒ¤oú/<(œeäw2û«\~µ$ÆS-mØoǯ‘<[F¢±¼[›>2@œ¡ªa#ÔÜQÕᣒ ý˜8–Ù7óÌbŒójBi3êÙo&C¸KeØr+ÜõG¡c8ˆX–ßÊd•¹ÚÔ³¿‡Ï(ÇtL4g9 3 :·?ªcŠ9Q¾ß{fõ=:÷åøþ)ÔA[“S¢eZ„,=% “<íØè\A[°z… ˜I|:Qò`ÜHv꘢vtûîL‚¾'Rœ£ô~¯¶ëý–¼“ávv½o‚†N5TÀ5s_¡t£.ÏÄ$2éþÍ¡ ¹Å&¸5¤eXýÿ”v^Λ­þòõ^Í’»6Ag¥½¦ÀvmrŽëÓ×a}Å\Á¾ÖûÕ„0¥ÆêÍ}üÝÍ%Qswe«'fÂéÀc0"¹o÷µ»¿wé;‡o"Kºk¶ê >üæšDçƒÐ]`µ·†OKaÿºˆ1(y-%6æÿM¨Âhhü†g;‘‘eSc€ÎÛÐЕö}"~?º7`çËÕ»E\#Ð$’dtH‡{ô$øì”EºÉ«±n©¸>Ãò»«GJÅpYÓ­˜½X»8ÜmI>Âòkéúóv7^uGÛŽºðü†:#îóDLô†Ù½F 7”±3žéáex5Ýôˆí£USx¾E 拓Ï7òHÅ\NKÚU«Œõ¶T0õÔø"/½ÅíGË_l¿žŠÁ8–FVŽßk™Ek«°ÚꘖGÈýx¾á_ä‘ßð -Âz—Šì͘ñý^xÕ$KSùØ÷@ËŽåæJP§/p¿•ª–ô°OÜ#%o—éãêù¬>¹+õŒí€+ž›ßcq\nœÄ¨¡ä^XÖ¶K«TðédVêÁänN÷eöF×0Ìâ‘ð»Ë|2Q|raU[ò@v˜Å©ãgЧª,bèçòÎàU¢0c΃ND«#ò‘zÎçý‘ÞbAЙцßß=þí'@–²£ÿZ¢Oü ¿é\ÒH³\ é6^"yŸÇ">üu %¿ñŽF'®Ž~É”ßâ=ÀäQ馴*|#)ép äB*ùà4«gŒ*Ç®Œ¦ÉÀ¿c|⮋®³7/AV©¤ µ«Â¨µ ©wL2›¤ œ\˜Å«ðͨ^V1– ‘¤œÛ_Åý M~U«ÀºÔÒá ]0‚ŒÁ‹õ,âôúv0XË‹ô`-©Ç€ólÜ¢OÙdZ  t\fo¼XÏ™´±M3[ÜûLÞƒ ŠawO8ãÜ®f€˜ßLp’«pº\Ë5š6V©‰ÝŒ€PzÑ­Xc£Ižåxé8¨´OR pS§ÉG4¹þ©UÄ--ú§™µ50ó: .2[”I)\€´ ë·•S[±«JˆŸcö¼$}–ä¼ á†ç±äþ8k[ÙL%ïŧ6Â(I¹ Þ”jtêhDÿ`G?ˆ ëèܸ¾µ~wGY 4çîmð«~ˆ¹žñ*êA6ºÊÍËp–mexçæv1H/¢ *ã#q?cQŸ¾•ô ömn¿°¾ùL}û¶ò¥oétÌÝ5võtw×}ì¢äÁˆ\ã_À§ô¤Ù·*¹=ÎAî.›ä‰…·ðÀ•Î"y9•±åAt­³oµEJž»ð2 ¢«¸W÷¤(Sz$Ïé_ÿFއUÕ1Õl’%ž¹Õ6«‡J¼@æQZb¯&of¯¹ò ™½ÕÔ¸a°Hp{³»k‰s•]J=ˆ°uµD€ ¯Ìé7–ỨÁÚ.³!¬{Mœ’Àó-¶£«;ÜÝý¤¿‘ÕbRP<9`TòRØMˆ (×Èýæd¡£[Écl·ær$¼I¦gð>QžÊÓ-0›Î‡yy jõ}ºd¸ÃÊv>ÌBÞçOBIš—<ƼB[RUíÈR—¢‚²Ôߣ®•¥Ê£úÊRdvXOfyôɽ- ·áwùŸœë¼ñ¢èýü%Ž»¶¥V÷°£zìg‘TzK*yÿq×ý f]#Ñ 7Y6¡üXF„ˆˆIT~%ýµNYh± ³~Àì òr„“í§»ÂD¨"y¦F"Îl–;Ý!š-oá¯z â¦ÏÎËSGc# 8¬Z ›übï,–Ù¤LÔRÏ€\líl3U\Ô!|«“„ðé@Ñpp]hÞ!Am¸Œ<‚Ä&ò4½¹ïîø¿’ýróÙ߇„Rsf‹ïgßÜ``®»v`¾Á½dG“’#;F#» }šTâs!qURÇc8$²V~&²þ n|Ó°µòÀˆ½_JbIÀ8”~þKþèk¢Báã/ú¿ÿ.];þ}—n4þ®ƒáÏ×X~B@zÑ‹ì$Î{’2$oe+̬·nªXÔ™Mîß›ôž©±UèI—«.zCgM3C¬isԅѲÔãÏ¡† Lä'ÈDò1àOn/' Æ+ðï4÷XŒzMˆSç¯ï`+¾.}Å­¥ nŒëQ#”TrȽ@æ–hš4+ó¹Ü"TKT´…j‰_ÁkÂÔ§Q<¿I™a‘ÒªL¾9’‘¦è[yGûôÊ]éo©£®bü¿ äÓHR´2ó›NžižÏŸ6Az6emI€i¾µíÔó»1¹†oI{°ãLn´è~ŠÀ@vãž‹Î4n4ßÑv:PèQm [õÍУÏg¢±¹O_ö}uM_~Á=Ìï!Ez€vô¸¹RÚ“ð*dÒc¥­ÉÉö{5Y¢Ü Él§¤ÈPǸéåX¶•ãß5znla 4ÁþhdAQÌ7eÏVâ³îÎc<ÿˆ(ip4&_|Ïïß."/¹­7Î_ö¸k½²a:sñ½ûe baüLÉÕ›QfÞÔ5üOYÁ’¯ˆ×<³aRŽ2g`ÏììdW£š¬_nàã_Æê5ç›þ×s5¹–(üS?XCQ—šæÞ5(@%¢¦)yîû'/¤mú’¾¤6fïúþÑ‹Q4äZÒWé&ñ•3u‹Ëoìá®z.× ƒ—£‘ä™õ5磥*çK=ÉdÁ(É,r5ñø9V†£d.O¿r´rù¾iöu‹›ï|›8wSAIˆfݾÈl>A±V©ÕL³Ìi@µêŽ5¨©’ÑùŸdŒBbcõv(s{%¯«™{Õ·ª ³Iô Åßꑾ‹~ñ{ØO®’¸šªWæÕtE³ý5碓)ñºVAå#Jfe¶2þÿÇÛ›ÀGQ%ã3É„L`  0@P\‰àJWÆ7$L@ ƒI¸îw•EöRÒágFòÒ6Æ•x³êŠ»x­¨œ"˜Ë„k5„@±ØÃD ‡IHBæ_U¯g¦'€ë~¿¿ÏßïwIO÷;êÕ«ªWU¯^½g²•¿¬„qbÂxò).» ʇZQðà²_p¾ã!ÙÈLO#î^â}xŽâ?ëY³Ë»ì¨(GÍTÍRW’¤r`†P©ÚZ‡È„&Ýï6bçÅX4g[fVµ ïáN4Ô¹»o G'©Ò’ •£$´îg‘«Æ–“Ô^1ˆ™J³ãC,n–dü¿Ü$<‹Éó¥ñ°„‡Õ â à$”ãiRœlÚŒ¸NG§#˜öý¬š×eM¡P ¸í´‡‚ÙÉØ˜jÉZ)ìœúr‡ãâØ¯å¥C 9;Ôr˜Ñê‚3“kN µT Ï6ãU‚oñÒ=(;±íš¯zÅ~°¸<—JŽÖ0÷«:f}!à%©T2h©ƒEF'|ÞD):'[W†áy?¥Ãß_?ÉÎLGþr…êbÃñbcÃ_“YÎ~‡Œýé=«±ž¯4^á ¯à©“l•²áUiR£ûÜ%ë&KÙâ–2Á5š~n”dºó}|«àŠâ¢¥ˆ¸ §â๺ ÆåE¯náYœ{ãö€0Ž— EN«c'bkˆø¸ðù˜"X%…/ÐS>‚ÞZZVÝF?é2{KÓªÁi±û2eCQ˜¶9IðBGÍb÷¥„˜PÔá9¡^dŸž™Aã‡ÕKÎÕ#éÁÌNø´Ã³‡ˆýªÚ5C¥3Ëæ$ž1n1ï>èÑäÒѬпf‰Ê²Èg¥,å ÷ Ã+ŽÄî`܃ ‚ÞÝ›ôïJ·UÓ«Ñ«†nÇ;FG`Ÿ¡èàéjëF’'¶Mî˜à2Æ?öìE!rêÆôt^âÍjë&,¨tn´ÒÐx’v£—œá¶@½ МæÐ˜ÞëiÙ·§¹Ò ¶K-uמ!°Ïñ‚ÑPÐóê'‹á€E-Ìžb­Å@{Ô°œWš-çÔeBíÛ²”Ùx<Þº¿¬!Ì¡üšY‹ñÚ¯ßAWR €èÛ U²ìª n‘¨«›˜¢M·ú·BÅq¸ :tR` }‚·@ÝÞÓ×ÍD#¼ò-õ8ªö 8°ÔFõvôLÁaÃYï’¶a$Ú5Á¿G/|ëÂ_*:ëÉÄ"œÂÊÏrJ ò—&̵Ÿ€\3Enë鮓á¾^içcüž dé°‚*‚|ôõË9¥0uHܶmÊ^g`.ÆÐ\D¹ëO!×¼‰æÈ”SØ)6ÝÑT4Ñäþ5~´®Ï«s=å îl °²- #Í,=Ûpî7øÙCžÝžzû/|pcq–¬fíNάëÝÛÅ}b†R¿MÆÑ-3KGyêø÷‹ê¾º{¾×Êð†€UÛjÝMµ&™¥ñcÜ·ø¾À ï:é«öâÉÀâù¿$ :ËÉlä? ³ôAœŸ$ñÜ·ÒâaÌþ¯¿¡ðeg%¾5Kkj¨8KÝ ¸æCëî_gžþç þçŠ{¡{°Šzç·­’rŒb’³våƒÂ®ò¸fKÅ’Áð0>¶¢HŸ’°ª°\œ¥Ëz8KŞ®RKÅÒÓ¬ oÈv¥{åd/;WÛrY_åqÇ•z¾ã1™ì+)•†jfkb5öîjÌG¹I'Go•¬M±ux{VkHš—)G¿”©lÒzJ€r¦¨°«Ök5²æiRôV6Àá6L¶_­›é%«±È ¿l±Ÿ³vÙ-ÎZ{·I ß »ŽYN,ý²xš¹•õ†2–«K/cì­½I6ìrÓ~+Ý»œc,hÇ`I_eíS¾‹™)ʇî;ñÅ@Šý0DÌjf¦WyhfxÆX¿È¸i]I| oo¤Â3gQâ΂rLq̨ Ï._ ËT I0I½q%¸)_”Ö³ðí0¨eónõàš/´ÅÕÚé¿ZÃÿTÙé˰J·~¹Þê« 4YÝ—¢C>LDBšd ‘Ò‡ (éÀÒι¼À³‰HJHü£@Vó#Yô…®O©Üo#o*²éqßBàz¾N‡kÃC¾Wbš]x¬­ ·%r¡C‘#Cp ùFkƒàôÜBw‰@ç$hÀ(‚d2:¶cë¸RÉÞxù} @!©Ç÷–¥u&²”2Àd”‚Ž3z¶î,(ÀÑŠ?ˆt`ßµGš‰±'‰{‚'4êûXWýÊ1!±¹&~²õv_øIOšd_L [WIy_è²,ܨÂY¦«Ö°Û¿\†²¨k M¨$S _0ÊøÚ¤û¯\t˨“B¯Ô#BÚpßi¼è¨F°‹¼]ŒøØê‹N¹ F÷ lâêȾ½Í ‚Gô4 ‰j»ûyýa*‡‡‚uz„Üñ_ßÅÝñkYóMògxäÈù^Ï7|ø8Ôpz#>4„¡š!¼Ò<„ÏÝèw¤Î3ÔÎߤﳼï?a߇Ñs—êOÆ!={³¨•\5jå>¬ø5Úe¾À•xûMcWFóØ•’.®ðÀ»è B‰K©‰›…¯4]ó…¯EìŸã%‡øo“ñTrÿêpÂÕ ®—q£ß®Äí)8XÖE|%ÙÎÆy#ްËí<ñ[Ù¬¦¸zÇ2ãxLd¹È,Û*3²²•»Wá Eý¾‡/K‡ï9g3á{ï0‘]]ˆ«õp •]rg±ãC|0H2þñÒå†Ò:ü×RV­GÇSU訥ÇHöó Ê.¶p ï’RGé(Ws¡ Óµ²ÁõwÜß§Kçðœl*àìF‹â‹NʵEEêW:TSÏ:òJGÉÖJ&7WÜÙO†¡`…!Ôf#mê@$qó†pð$™ä¯a@ÂXá9Ü–…¿ÎƼ®ܼ A»ºÕõ]`¬Æ{eüÐr™GK%ø«0„ín9ÇJ> vñ_:7¼ìû$o‰Ñ%~29ó)ù lµ˜Ç2K†’7ÁÀux ,ÚúîÆm”躿¸R—za¤=‚Gc¤‰üêT™\e¡t?äˆØ¯¾U¢E%¶J¢áËÓš]µ¬‰ÉøRXsʨFUš K>%q©Ê-×vü²— ía¶‡b©¢OZNUwzÅdiÝnš™•Ÿ œ¿1¢ßh·/.K±Vw±¨o×:<@+^ IœÍgU©ûR8nÛqŽœ »JÐÃo(AýR»½[×»aQ:Ívµ4ÅÈûàµeý±³gºñ\1™þªv ÚÕµQ ¯¨±ww<…{ÝgÂ4@ï*9Hù^onÊLi¼9~<4Çà 3csãÍI‚óã«>Rä-â&à J –êå͸0 ®_…Ýh:ðl¡*V§lðí=W— ¾ñ,8§ºn94 jÄUÚv%pçõ iÝ~ÎhkЕ\ÄEÄþÒæýÄâû‰¨,+ñRÿj7 ï>86¤\ªD×MªŽj\¼è•à4„v…çTH<¯µÃó©«yå]>”η¡´š¥eh4_»š×¨¤ß\ÉE˜4ÉÈéÁQ& IL éÚelp—Ã[©ÚµØA7e¢°rí‘gèFÎoô]gsùifóL æ‰DäMŒ ñà›Yyv¿"†tyåÙÀ]NʧÏV-£W‚s£®+À².à¥-]pÄEAŒà©"’ÍÕs>«¼)¬¹³5Àââ=œ7ikõØÀ Ö¼7µè+G¨ûB z ýÅ÷ UàkZ+o£Õ˜Ž4þt@À ‘NNABÁT~›(Ÿ&aW÷$<Ö‰oÀ4½™Zðtsð ?wwó©ñȼù ütˆÀL„âHF¦ÒCoGa1>2~䪵û›«>nâåW€ééù*=SY:„Srõ?1ÓóO 0‹F¥+ÉPg^â|X'qÿïv¬©MФf—rw¿Š½e*3±âרw¢jÅwcÅm­]*ÞÍGï~£µâLeUäîR‰Uq|•øZI%~9ÐfptÈ´Ö€Ís“‘!­¤õÒBþVHþ ׇçõ㑌1`Úº_Å=¥#ä»3h›ßT4ËT¸uǘÿq¸qßåçW)–óŸ‘Ëde6;¡ÿªhž%°ë(Ècºµ[pn!cÖ§1fÃ[vMó¢);fRÁ9¼¦iF„ÃÕ†*~æóõô½ù#žIEÕ€Œd0òA*ﺺ*o½e”¦õJ¼’g—Œ¥ýN:#·•]¯éÉÚwMÿÑ·OY¶@ڌҠÈ4:ÿª¥PÞA`Û´™gÔSdñóÐˬ=#ø°FCçSqX‹ù° kÈŠRŽRæâ®÷Üx<'}ŽuÑ##pOLäi&uDc¥ìÀˆ ƒFô„?àoç}OKÏÓ¿¯Í Móy’¦„UF&mw%.ß….3K«kh‹á¼W‚ÿ©.Fÿµl3«7x+{{ét{*l„öo×X·ÅžÒäI,Õ¸Çý´V¼§êÜø»Ëÿ]=¿k–òÌÕÖ&,\”ÝÓqú’×j,ÌîI æÿÎžˆ¡+Þê‰ærUN3ÒlÄCK¬j_UÌF²”XN£°¥Ô –Çtÿò(>"/®)öÓh}8UïˆÕ,}¯s“_N×3T|ÒõR˜×tÿ(FÈÑ[dqvg´‡¹ÇóÇœIX-§‘AÇÍx½ãh]:À;̵æ5ºÉÌšÙ±døžÿ¤^g?Ú`Œ®¤zb Ý’˜—à\¦Y<ÿ'Œàœ«Y<‡†á­y× 0è¯wÙ@õ¢µãûÔð³ÇÇ€;rŒÕ£ ¸pü7?þ—¬Ž‡®ÃŒ´æÿ®ç5íÔdGë/apÂêPø£ö>»1?~!Ï:‘îÃ= :Ì­l#w=‚vm¶QNúÂÑzõÄ‘(¨„ÕIzj¤A•Ov7¡i8’~±cÕ0¯¸ÂUkï ô4™eG±ìHÉÚäóŠã…êÓ#‹ôÎR¶O´&Ü!ŽGª5ªÑ¢kÍ¥Ê4ñ¼ÿãNZѼ‹gf*ewª{ +oÑW…:KECÂör6?ʳ®8Ùó=çƒZiâHÄ%ed±›ØÒazk™¡ ¢ Á$Ptñ†þ/´’ï¤ybϰëÙÄá”´ >¢×Ý=œ?#¸£ù3fµ’I•&* ÃË.=eØ&Ì—ûb'Å”$”(žq¯Â}´eæÄ‘$@q-hCa*Lž†±®Ò]èƒXöK9õež\#=Ó›6 ôÐÙËJ¶ §u "´a!1‚¹W†°ªEºEÞE·Ék¼x„7´à”®ÉëM_¤Sî)ç'†¢m<‘ˆxË"=Ëf*žù^¾yóh+Ew4|.Y· ÔËÎYæÐOq«ž—¼öHeúeœBÜã‡_<ÍŒíl†Ò:­ÇH5+×h™7+-ÙAÁ9Dêº6JÖhœìR°[˜­ æÈÍ•LÌc9s.î]䦗4Û(-6Ä^vÕ¯\ni_ÂÚ3„,EàŸFû]™Y^{“’÷ bШŸmÐç4Åž$Úw€’;ÂjòGTHyM ×ŽÈ3A£¥ËzH¶(¯µÑU»RŸÌ[¹[Im„ dÓ ²!ÞSYœ¡œOïô:Z½³ÅÄxk$0©M…úñ,µiºçuhj÷‚f‹¬‘…áY^“G’r¢\õË*Z|ÑtzgÍq/&û95Mâ¤GWw#a`nu"å-r‡zií|᱕(j¬šŽ[Å`üòYMqÍŽÖ)ÏÜTúAO£&Ô(x®ÁçÈ.Í…Fœ²ü*̳5àm_íªÛ£}x"Àh¦òÑWÊQ¬‰PÕÌ?/2k¿;ZÍöz‡‡Ú8éùŒb³ ßÄrøÞ…º|Ìû‡cÉT3ý(<Üéů0xדÜ˨œ½'p¾ÄÑe*÷?ŒŒÛ¡µm'ocC`|c>ÔŒMX·‰Æ·‰Ù6Þp|ÿÃø6þÔøTºÍ3JKgJYFK?vQxfÊ™!-´ÚñªeaW’7Þjœð†¿\$—{ǧ—„Kãc\¥ö?Jé1ÌY° HýØišAš7\ZÃæØ´ál¥‘eŰÁÒ` ¬Ë3±^ì©`Möœæ…(i•¬?¢p™ÅS\5l,%&Œ\ )ÃYÊ0iˆçUÖªÌ EùL…€–ÎD]Oo´è—®“ž0ÄV•u†È‘?â4e0[£¢§FgËÑ¿bÖ&Þ´+ ÷ªR›b/{åèW2•7ù )w·ZòšðмF6˜­4°yÃð¬ÆeÈ“½lº¤?ô;„KÓ]§›4{–Ø>ò²YsÑ|·Zâ(`°Ÿ·µãÿLÿ;þñ;‚ÇßC2û‡î÷ÿqÜaRÏîbߘ§ £Äð¾1›aÌïg)‡u˜CLóÝúÀ˜ŸãcNÑiƌ֋;WQbDИçÆlQK Ž 1ßås¦¨1Ùd™l^š$õh!…X&% cIF)É Z*‘!,)’%™X¸ZÐbQ&ÀÜ%Eñ2ñI†%‡X’Áóu±ôô6ä_/¨z¦ÄÙ*'ü ºð¼í‹•B9º¦Â[ޱÉ*% ‡ØäáRRŒ4ÙÈ&Ç@Û,Ä»8FU9³: }Lºê¤áüÏ0Z¡¤=èá Ɇhà`ÉÞ(¥Í”ršF,6JOÂl^VÃ®Š·`YFËå¼vBŠ€‰¸ˆñ9±û0ËÞ¤áRbLY{K=[{¹ìjˆe³6«1ÃUìQ°S/Ë’ý¥d=.ÍŽ‘Ç8$kãˆ$cY+ö°xt;ÞH-·Ä•úÖ:¿"›>]T9¡8=[9×µ§&ôWdÍ”VŽò|È.·Ô— ‘òÎfê[²Ù×eß…H© ú«éÊ1,km’fΔl#2em!Þ\cèS1±-ÙÊëü+èŒ8æe£Üx¼AÎ|„ÙêÊN‡d€¦öŠþ‚fYíòÎÜÆ5-,åj^69[ž4SJ‰òI¦¼µXG'rðhƒ9†–w{oÉZ'YÍžŒa‹‡C%Ï iʳ«®yçžqTSGL1êÒÙ%²åX†4e¸ýq¦ü6®lZ؉ù Ó”÷áÁó*ÒíØBMÓ˜Œ¤QPlHš«4£e/ÌÕ øÁ~‘íæk®Z~’¡à6¢¤´á,ÍÀ`öÒb`:Ù¤–fdfÙL(\ÐÄ|š'y¦‘¥aa6É€%gÆ0£=Œ—çòX~(`Èök)§CÛÃ¥›‹› š1ݳuº“õS­bÇ^½ç"œ{ ¦¨ •{´w0yïQŠcó5ïÌÙØt?Ï'dŸùù0 Z kÕ‹™Rò(»í´Dò§ÒÈ/KS†Q.{03jE³Ï ÏP:ûüØ2 ÌLä÷ÇÓÀ:?ææ—Lœ2Ó³OJŠŽÝæ·‚Ò¼‹£”–M*sEs®Š¢²³<ù¸|ÅN3«bGì…á;z)ŠVvL~þΙŠ1UC=DX¤ÏT^‡¡Ìšé9­Æ·ƒÆ‰¡xh•‚ýÏw°gG‚H‰­îsÕƒ:ºònKûP2í‘«‚ñ0;6™•-@þtczLUPf˜¼ü²dkb“ͱ'AI½ƒ¨b®4˜b·ÄÛ±ÝC:—JbètÏ_$«9¶Õ¯‹ë3=€Šø¸z϶Ì,hϻج˜t‚êÙÄÆ›å1bõ¬óåºL“l¨-ã&&t÷äLi¾A WÁ^yW|NÓ’Pà„Ú /Æq¨{JzÖ Èf&ÄÇä4y‘.¹ôªl ûGÀo± ÀXÍ>ð¤o2½÷g)vRTÃä™r?MY¥· X[ü²/›Ìï™RèÀö$©OK9:fÅE0gòÇ(œpóQ®fy;‹*Yÿ"n”;X×µ‡­Œb)Ñ¢€TÝǯ¦7#]ÿ€D}éFDýÏOˆ¨ûx¶J·ÁdIœe/…7NÎÒ¹u¿(t!š£‹0:KÉ‚z˜>ÊÑ®º Òô™¡üê­ jÁ$™#õWÁ¼w;™›KUHç¤}Òþ]ma„×­òá Anÿ˜@îïy¿XÃ!ñ°¨¥š–„Y&uˆ·\Q³g½!†:nÿÓ»C1Àº¸›úÐÔï?Ù¸¤¿<¾ƒ…Hã;‚ªÍRs´>B{žS(—RMPÕ,G¾bÙ»D`5ÅŽóÇÝÅ^–½K¯€¦¯#‘[kË$Ïe¿?Ç$…‚€z}i §Úãøª:˜xsÄxƒ”9 *°~,ÅÈrGùd“úÕèi`Í™J[ Þç öÁìgpÕòIèל¤×‹‘(]Í#Ò €>ÐebkøºOó¾yE&˜gˆÏ1Š=¨6Í@±4ÍèÚ³l¼o½í[ïa±Ÿmp¥7²ÙÃaõd Ì6²¤0ç/å1ϱ{ãJ”`9ùAmÀ~gOòs…u“ø^¦ßFàËb° ãy`'J¬›ç3>7hȦÖ%†W'Ž"a: ÅhÏ©j5îqÏo ²‰£ð„C)̨PØ›t0žIµdÔ]ÉéÑ€a çðÑÖ€ȾÁÇÜ™ò´PØ”Õ)´uQÂ;]iRL0ìA–b®?†¾‹dëY%ŒÒ]ùI½À°9Þ±}0¼½üŽ”§HÐúβôaJzú3JÏ{tTdO$TŸDý€ê¿|*¨,=­züüÂ#¼Â\m……ÕãÅVìï©™Òj’ œ<õh‰&²ä©,3 MZXòÜ€,{–”Ì äCâæÐ¿Í Ö´”›†ç•¦Ìl1è‹ÉœÉ¦,ô.‰TºÇs›T¶]É@33RNmJ—3gddy³"Y™d´7±nRò °C¥œaŽ« ŠýáϪ~°ÊõÚpò±f ËŽ«ab˜ãj¸ý,q¿ç´O—Oçа̰DãÎ6ÀˆÏ$8ž~€àÐË©WÒqˆü@`ÏÐÿUƒ”÷ÃÎûâ¯í¼ú¾âïûß¼ï3¾¾ƒq1Œp1܇‹‘lJÂÐi¹!.†_‡‹áÿG\Ðj8Lš4j‰=‘7' ‹Ÿ4œr–OºÛ o ;Û¢@m”›Ùw±Wðv˜8ÿ`šÔÁØ3Ã3q0¨[ͬÃG=>YFÆp„~Ç•j|(x O\©ÔÏ‘gò kK[Ê1Éèóâ-jÖÅòI¾¦ŠÙ‚S:Hõ«¸7)8ñT¼4/Rš#­ŒŽ½ÊŽ¡¯)ˬßm)_,6wÓ‹á„Ï.yBÄ#iÌÚè}“³ Wýl.øÖ»¼ö?ÈèmJÏÌRä‡`Ífн*G¦b¯J)‘,ËD¿Œ±WA‰HˆbY`a›ñÕ¼\“²Œle$&i^„{¥š {HY‘I &÷`ü<ã’P6ÏBƇfÚ´˜Ó¢Ó³3•©o\óf{_|„©dh¶ÿ‘lõ‚½(ëA´±~t0 0¸¿-§ÆØaiǹÉ1ÃêŸgÄ…Q#ö„¿F:8"liJq5Û‡9NÅ>°i1Þô t¤ÊmŠ‘löxŠùõ©ÒD£¥H‚¶0PÛ1Ŷ¶Téù´NÈqw¯#/RσKà)D|ÊU¿l¬%µiÅhÙ`Š`á^%0Í.›hÕq·ã\ˆèÂjb"Uù%T ƒ*y½©InÊþ†û*ÐýnÖïEîfÇÜSh±‰U¿¢¿Úû §ŠÌws¬µf hkÓ+ú²ÞùyEbCl«ÇCôºUv–«”.XµfɦQqµ–‹ÂKåò“Þˆ¯Ѽµaâ­‘<½b®™åšX®A ò„M‰dOE±)Æj¥ÊÖ;Xn$ËbOÁ"[¼L¨a³:ÁàÕrïÛfŽÛãhëÞ(Ë~(+b/™y&q¦lz ®ÔrUx©TžéØ·/¡R-+Íl¥‰­4ˆ°D"ˆÔªŸé kòC-nžÑs `ÈVÞœÙé3›UxÞ½ y„ˆ‡50<îø À¢”R:½qµB-{ÊÌž2±§ blur$i ¹QÕ˜]Ö G£O¶ržo –H€eÖÃ/ž©l›,¶JÑ$Ý šk·¸zÏY˜¯œm±ížú‚ö‡ßìiÜõùWx. ÷XòXhMÉ‘tê›Ç§¸“I‡”m¥Ì¶é ¼N¯Új¦ÐD -Þ6ðé>[a*Nù%2 ®Zº´j›à|SOh(é¼Ò2£uf:ÊÕkwf€qd5;N7Ýß3¯Ã7Þª«FQ°¼JÁ9·~?´Ž9lfÏäÁv¦xÜl€I¸À'¡§v¶ª“`rí±‹Ò<£77Ryg F@?Ø·¥>û±¿ÄèÍäègå¢'`Œ«Vîh3ˆ·;ÚÂÄÁÊ¿î¿ôè¶À€]P ø›À^YÕMçµVzÊŠežá`¶Ïaú•Øó4#M|Niæ"ŒÂÍ$CÎù<Ó@z$Fµ ó<4mðiû$O[,ÍŸ7³æù,Å3°#ª"æþœ~oƒs÷×Î@¹yšy,hœÄcQ7Œ7™ž×g|´sô$Ÿ“·;´8·ÒTJ3ìWI[1ãbqÊÝ¡t|6+—ºÍ’Åḃl óS¬˜î⮹dc'ÝV™l-Û+AiÄ O ¸­*¶ç§V¼'å.<«‚Ó™•{~uÍ»+ˆ;üûæùË@AªTz–nš§óJ˜@޽Iw̓>æW£#ñÒü|¾,#¥Å˜ ¶“J§IYj]\3³í–wRná¡Xuò¶NŠSònÆÆd: Ÿ†sŒc‘R+c¯ê¿‚‘©•ÓI/\’[ ‚‹nÊBÆä°SÀ{D§q xÍçvÂÓ¶œá9¾x¥‚Æ PŠ"æt“i]ƒJH)2[`NQ±‘gy39vœWð…TS¨~6Í"€kû²òÉÿ{²»oò{òÉœEÈöHœáÈ­€(DÏ]Ã}è)õ¡gEèø§x'¶³¬3ÄÇ…£‘  ó<çy Î3Lv8LvÒ˜ Éfþ¸ðbiîVÌ©»f•/±Ó<»pí%çU²Í4…y»ãšùÌaLŸ;ùN8:BšæN¦sRxH;VŽ÷”µ†`ôÅ0„k'° .:I8«ÐMD?Š3hOóIôLå“x÷Ïçq;ñçgp&úøظR‡cÍ w%: tâí“Åþ4`²Ø? “ESâdz4¸jí‡Éfµ=šð­ìÒ}¥Ð~ËW³¼ÜË.‹Ã¤dƒ¥ziߨVYŒ2fá&Ë.0f1L|ÌÌ[Çåìˆ åµ)¸ ŠÓ,qØ·œä§ŒP'[¹[ºæéjž-šØ`æß5bƒ°7ÏÖÔÅ–g¤=-¼åÝ9- ZÄ  Jfë•–™q¥€:Nêû2´)õÜÿZö®Z$…Ç5[jVDXvç…Q"AÉ´YLîed¹1eçÂäPÝ‘“ÍlʰL)wØ{cV¶‚f,Ï>4LÊkÒÇwùÍ–+-ó±kŰK=í^ñ*ôö汩NŽ!&Lþ›ayåÛŽž×‹3ÑèíkßW_mmäìJ‡d(´œöð# Êÿ½-»Äl¦Woâ+Œµô”+wÆùâÙâJÝyý1ã6`Þû ¾ÐLHVn ½ÿñÓ[c䟸¾î'P`9Q•3 g¾E¸È¥ž™Ôa= «}—Á¿]ÚÏÅö}ôéhòb8Â1Â’-8Ÿ×a@è'˜ÅeÍ Lté•—zeÓ ÚHÆš„Â9!xQˆl2ïâò¤³¦;XÖ9¤¬= ärìåØœº²¶ðØK¸ÿzȬ°½räkò˜dÓey &9ÐÅž(;.Ùš¤$ƒ£U/8×Ã`ðái=„ˆýÑ1úxdèãföx[ œÎ·÷´éÛïø £X+;øJK;0œù3ܵü£892B¿WŽ~ºZ M6 [è8³€¥Ö [¥µ=ñ”^ÒaxEŽ.+;»¯ìL¸þ„<;‚Õ½ÂR¶ãBÞr5i#¯6„ÙYûÒPy¾w}€+kRv5,ö¢&U‘MýY²6Æî“M‰rd¡<õ–N5™=ò²«Cbw»êåÈPV'bD:"Ò`–lŠ«vÙrÜÇÊQô5ÎÄÖ%¾²=œz‡s¤Ô&aëx^Ä·ì!À°5­;{·d¶ã¹ƒ%ÛYaëÓ 0¢ÖÐ#ÓÃ-åyÆäøœãìÀâ‹ A6-k‰Ý]Ö®¯¢%ÌQîùÄQîyÓQêyÚQªúr©‡I&DMä+²áÕóTŽxœb¶• ¯É‘Ùp?ÕA“rô¨Ž«ñò§ùÿìô Ï$@ó|ª×(xöM×Wp@öHßtñ߂˄ò÷„; eòÄ÷ºkÄsqÍîÃ×4÷µÆH}Z6âr÷ohcá£ÈÍaøš8âߣ1UÌœ/v×éòÇêìa;B èÏ@p.ÅÛtÆUb;^±/¼î©¤ŒïTo‹i ­C^"1ö¦ú#éΟÅÀßL% ȩ̂½¨·±5åÞî*3ª©ÓRô„<,?^'Ù¶a qkŒ`ÕÛ1±ãòß×/ô¾^ h,ùþ§õ~œêÓ‚ê°géŠ|…¾‡|ïù6ÐCuØFKÅþ§Mþ§µþ'”Ó´¬‡½ìúÜÿõuõ)®v;WßJ*ZޱA+Hâäã¿ûøí/÷á À¶åÂè$»Å‘ïÒ—Y^Ö‚$êZX*ätPÁY„/,åK"X_|:ðB$.Ò-DôÄ5+‰ÏÀ’x²ƒ#Ž,&B>±&ÿ­¤òò[0Fó»ŽØ´ƒÒÁ ÊÌPœÏÐÝ£i ]0ŠLfmPŠª¼øf’Ø[ê»–V,lÌ=G‘×ÀpÖ¤^Vãð†,©Ãì(ÌHÓþ6-êã¬Uh;"8¶Ío!&ç·Ý-8_×ÜüUÃB^lºÒªfKýèX JÚ]yG¤n ¤1Ë9œ8—ŸwÚ˜Ž-æZ_¸oº Ùz)MÎkÊ–í²ãP”ò/q‘(CûÁ?ÂsaPcÐ_@+ü{ þ•R/¿>"qIØgñd]7-p´> ¬ÞÝ Úº[NxHó…lúdd½_úK÷a¿Âêuô½FNø†Dù‘²ïÂôðA6ÂGUoc¡8¯ÿÔ fW‚!wþp%pªçÎnx'°«LêcNò¹0õˆšì©pxõK#ò8gK˜N7Ñý0‘}o…[K+­sD€îÅtÉ_C@Õj9?å1BŸbå½J>¿‚ó9JE¡…Ö#€ˆ8;,FaUØ2 y$³× Îù¡„ñÉâþ[9“Bi ÷ýÀçŽâ¥ü©|î4ù!œ=CI°am¹”WDz “ùå• /ºË6%#S9Ò€Ñç Ïùk9¶€M4 Ε0ãþ¨VãyÇ*¬Ž˜U’Äã-µhJ¸G4&Œ\™Pžï†e¶:Ñ ]{­'${¬V'ôÕ)t TX=Šõʤ¬ÅÉ€GÁ…â5õR:íB†J<® ?ñDñà1‡Ib7ÀÔ…–|â¼þĘ%ð2è‚‚Åù7š\œÙ½8³a0³¢…fõ3akÞyÌ5"¤NakjL…¾SŽ|¨ìœANø‹lÚósIQ8Ýì¾Gà©Ô&‹xçû+Á™zy ÔVü”Ñ"²ìBùqsò³,@áü>æ;0wNãgÁ f~Ï'·—k8$YØß•)]ã°ÚÑöÀ¹2"êÍ—ŒÒr_jß=eZ <)¤Š6øV‘W1_޵nR\u¢ â¼U§»‚Sº‡á¿&ôþt"Û’€7øD¾>°¸¿CºO­“mgCÕã©-Gµ)ZËvTu‡OYŽ2cúÂ×i~ß)Ãù"lô¥?u ð:$å0ø \nV··Á“”Ô^ãÝñð:LX}–žž4uV…ÇМ³îÇ4Y+†4^ Îpü`Qài÷ÑßɯÓ|NvÁ‹dþíEOž’ñs½o)#‰˜w ¤aS–l½¦õÆRQÝsõRxî)=JEgüy …I˜¹—N÷ö¦`ÑuŒSv²G#ºÐ§‚ÞÕ½ÀPDà“ƒœDW7˜æÄljÂ?ÁuÊŠ}òÛ€g ËùйàZ OÞûn’«^Z+½÷‘q1o&ÇU R‡nËU.œxJÒ=3ÁÕ&ÓÚº¶Tt/ë‰Sàþ 5ãéù!7²µV¶ðyHõ<íÃã(ÌvÄ×¥2÷Ùf€Œ¿¼Ã&[é’z¦»~$»˜¯«y*ƒîE?ü€ŽÆ™om";®: ç뛥˜ï€Ž¾…mò½äÉ­Æ¢(g½ø ©ïŒûH!–ß~àLo ¿€ÆÑ—pâW¨ÓΚ'ú·»¡ŒøÇ…ð]Ù9œôdë³A- }]Ä ŠÖÞGÅÓº¡ŽNÅu°“q¥¾}‰}-¥Ô ²Ø£ã\GìyèS^ûŽï𲕶×¼Uº{2¡ßÄ4eXèfy@¼Q ×í00ãÎb\÷<—w¦àD#cQH¶òÄÕkÞìEúE#Ñ5§¬–ÐeÅMIÏJöÆeûŒeûÌøgAÙWƲ¯Ìø‡Ù×£¸Ô¾x]_ °˜}“_SÉz|AÙcÙ3þYP¶ÛX¶ÛŒXÏœ%뛲á+)u´~Ês¡Ž3’­aAÙ^cÙ^3þ‘MCSMé,g#ë{™®ï„³²·q2æÎñ'¯?†â]eC··÷£†bÝ$GßÂŽdC9ë{ßÙ6¾]G/ºÓÙÅ·ø!ö’zbÓränÜqê-G–úbƒÙò˜¿d-Òƒ„€®”?Q¤ &ðý—§ £áÔ®-9ÛG,BB“úömÂC?ËnÁ1Í)–̾m±[Nöºê™u›x+/;Úwׯ¥œmÒ½ÞÔmZ”Þë8opÕÛϪYR¡›àsJwaÄ·4Ñ?Ñ(8ÞÄȦ-æD6ÑàhóŠÝ û$O³ŸÆµò6C Ô"m)Ðnºá7ë6i¢¦pF…ÁWpt `¼m½°ú[º™Ò_p_˜tÇf©f¦XäWããù¼˜OÏòò›üˆre$#üÅ[× ®gCÑ1†hWÇ&8Þ¢}4°×Bo6°‡¦ûc›”ú9ÔÔÐ3j'é¦íèÉ'cãM}®ьˆ”øûH˜9áéùh‰©Ón}ÓbÝ–{¿¯ýC!Úöçûx©Ö3¡d¾n’ýÍñ–‹€œÅ{8™ÀtæF#ô„ͪ ‡»©ô“dÙËlÛŸõwö:v6Î×Ù¬.=èאָÚÙÞp)çõñ–£]:Hå]×ÁØjøØŸËŽó*Ǿ½æW˜“yÂÓ[ô>wÕW‡¡ É­ÐeêËÙ&Žª•zúI>²×[Æ–¹5)aÖAÝýW´Ç²ÍUj¯‘ÑK0â{à˞ؘkÝ$õ 8Ì$ëze9Lá[Ôw©ýAiÑÜýì¾ú»ï8ª `þ6ÜÈüå"œ¶ïž†5lRÜž8@ƒßŒ>®>'B׳¤ûþ<„ÿ~‚?EAgO”jÈÅÆa X‘!‡À¬Á ]µö øæêq2ƒ°uÒuù º¹€ÜðãÈy0иø±4¦†zØ2õRXhO¬žž¢¸¯—Ïûœø£nÌ}–­œ¨¿æuÏºŠŸöëôÎfåtJ¶òübå³ÜwЯ—Ôo[;È7”­<£~ž×Ÿ—ѯ9îªvüµˆ~Ís?׎ðd+³ÕʳPí%¢tÿ@‰~?ð¥Ûe'ù%µ©Ü¡Ëg¸D³*î¥aG.ÿ]pbb„Ïp}”ìÆí¸@ò×϶b²ILhÛ\m5bµ¢A´¾¯¡wiJ¯)¸þiõíeòèí<£àìŽ4x‘Y3¬$ãäÚ’ú÷ÔŽÍD«4{@˜lŸØ³8ÑR“ž¿¢å qJPDŽ.c9MÒ ¢ÎÚøAœ:Ë[ê]Íl9fú® ú¼3]㊧pRR-l„-„©zô_´êÈ£eä xjÞ¢ WÓrD¼T¼tñy{${“°%‹Â•3c„-Ó|Ô ?‡èbÉxHK2³Ìa31v"ÕÌ£&ªõ|‰C X<ÅÑîH}QNÆ'[ñƒ4õ˜A²›Y/øPo ïûðêvïÊ_J©‘Õzî>ÆšæzéÉÖ‰–ì¥Å)–Åà k¤Wç8oœâiÄcñ˜aÕnϧ*Œ;§òÁLÚ`Í¡aøtø@\{‘6s&9Ìœ˜˜ƒrú÷'ܺ$LÑæ yì-M¹Ýãž^–hiZ mrt'úÊÅó=)›Ô;cÿ–MæLøÿ€ŽÕˆáÅIxaH;[ON²%ݸ³ „öâú9Ÿ¾i§i ±v隥6bìÅQ /‘lrjSËátý¥Œ…{P\†Y&ûú\—µb‰býÒ[Ú¨ÉYíш·ìÚ›”\îI‹«WZ0MBŒ'¡ÍHjT‡aKh—V[l'7äCO•ÌzD’jв …‘=òW…ëìw‚ö†Ä†É¨òWuÕô϶@ì1‚©Þðj²°%Þ•UYü>"QÍz" ¼%«&†é¸0’rÌUI/Q”ÚX8½'È×$¨X•lÒ³d£*ê‡HÖFŒÊM5µÔë›_h±àŒ¤Ì‰æéôÍ>ÀHðþ—ŽjgRhÛÔa&iî0ã6ÿÊŸ3Nß2ÕQê¼æ­(Vó¼•:3PE~PÇs{ 9T>«kÀcp{¶ ö´‡Ó? cDí¦íú0m¶ÝÛ~E…ÇáÉ"V±t®dÛÍúI©ûÙ4ƒ”Zæñ–»,S‘­®à”`Öé ³ÌlÚ6m¬l;º¨O†œÕ;Cønjá0¿ê‘¿êD"ŒªD“έÕR¯ÜÙ4ý(ž&b-ßGí›øÉÎrÕª!Í+g³‹Û¦A5ÖÀªOfwZ%.Xi ‡5Ääk ]˜ç¹@ùaèñô¸¹o ÇmÐòš–«—Žtà¡Àê0„ܸ­žÊÓPÅ1öv…¿§µ*[N*¿ÃÖÆ~A­Uâ4 ¤±1]/ñ¾ud‚ÈL¥¡‘¸%a fƒëž©Èw¢ñ5o>OÎ^…~ÂиZGkŒà¼Ë€^ˆÁ9Ô€òi +i‚U©(ÄYÊ‹$Ü.npÕÊ;ñ8„Õ™µ‚ó{tH¶ÅˆÆü¶14Ñã¦(¹ptÀíÆ”ì—ØÅ¢„¹‚ó7ð«P?¾($ š»l? DJÔƒ«–c„]!q{Ü{$8„"˜ZJÄ`b7ÁÙ |›#†'@Ÿã=ž*½n<Ð5‚w­°ì`‘ûÄ4¹…¡ÉEúñ8ÞçbÃ;ŬìÔiLÈM:½¦¿I§ÇôÚN1™KP§ÔÕ²'ŒÁŽÒ«bœè ;5ܬÓSº@§â“š/¨Z±ÃÇMöä¸RG«^ÿ¬¤ÊòR “Hš2ëŸ^ïLO#h”'ªSÌ´Ä噪'R¬ºg£4RÊ1¥9*Ì™ `ÎP.}ˆÞ+³g}þrý(1îÂô+-â¿à OJW…ΟìžEïBâì'ò—‡Þk¯« Hv”…ºÇ£h‚cì[áÃ(ûÇU¡1ž/íÂ]÷\3ö¸ |¿{¼°Ë0°'6æ0l§Úmvût§±ÓÄ¢N¿í¼1Søû1ömÃ'Ã9? èúztÞ†ý×´0°kZžºæƒD• âk7†!ãÚOÁ0îÁp˵Âp´Íü'}0<ïûE08ø/xZOUú¹IãÝ‹éÁð$Á ï(uÏæï†' =À°ƒ˜ÔAúà Ê7—ýÔô¿ˆNÞ|õÚ? ñøL–2OñK ðÚõîÙJÛÕP’£î|"TN’á•€ *{ßGrlJSÞÂ÷=íAgub0TÎ;´#d/¿³(d:„2•Äåj¨ÄgÅäBÿ¹d?TÔ ¸â’8$!†ß™Ü¦Ç¿ÀªW1” ØOIö:mIŒ¾Ç’¿Õó’s´%kKbÎj,‰¹?°$vë/Ù –ì,,|?ðêhþõ{¯]ñÚÏzí ^ûq¯½Îk?´ð89†3¿Æ3e燢l¥b ;tG‚Œ1±ì0î:N71[CqQ7èè—ÐÑèÈTRÔ+)ŹǮxþR27 þçùž?Œ‚ÿÅÁÿîõ¼ƒ=ûPì GwýDò.ù;1Ø<„í­6¼B¡áZ§L²U‚¡£Ÿ,Y+[ê(=úØÈ»æÎÄ_6ÌêúÓ5ÕCõJK^EJ¶(ôm ”¦nì°]{TE¦«È3É‘ÛX‹ã‡f3.ë‹H6ìb{[.3\í˜á³éËñNÞ²ïBbó°ôôe}âš»›´%~ÀkWÁî xk\°WðÀҌaQ°¸E;.¤èãJ…wê&‹¿Lk.×Ûû°:ßy¾èá=3¼4Y2ÀS‹~i²ýüÁ>h£âà6dNà´á Û—W¼Ô!y¤õòa]’8œzéÉꊱý±ý$lÿCl? ÚW|í{ÔögÛSÍ¡©Q0 òŒç:yQC˜­Ixî ÚHÂÐmq¥Û¥ý/<Ë9Y\Wo5çõ¬6àÛºDø±d FÃsäwTâs¢ò†¢O=RŠü+T^W:YìÏ %ó+NùX‚gGÌÎVæÓÓ=ïG@ve¨o•#ðÒ㎫·™ó^âgÊ¢‹qdðbÅEÓ_Ýüx¶ŸèÅ%GÿˆÆjìqÌ´à8Õ”žEi&MÙÀ&Ê“xŽ5ŠgdˆµšAyÒÑÛ@Ę…g×ñjs¡Ú™&–s¶1#<‡¹ñ|É*M Ÿ+ŒwHïÎøën×ëx‹RêY=0R£ý:åzëkPBØ£eê¨0 œüÏö¨ibÿbIŸèû‚q>x0sšý<&¬H!k7ë¿Ö§Úùq]ŽÙUoï.Á¤wo¡ó<{&NQn¥wðK°º!Xö(L€–ªè/X¢úaÑ·a& »;ïƒ`µåöŸ&nÇ6Í~Á³Ö²O,Ž«f¹”Ǥ„çY I–K+~¤[ÍY³eŸàœ†ª#d”xÅ’áyfPKÝ‹Ì6y­$é#Ý»:¹ï‘Ó» >žˆ4Å9á9yÌš–£qßÃÜÖ´œÑ+@C &Ø7ãí˜2'‡sŒª?Ã’Ð5•¼HaõÓD³ ãJ-­y=‹« ¢YKëŠ+q¥´-Ä ;pàyƒénUXP>FzEzLñ}]ñoœ~6&àÊT>ÊIõx½Pân*½WkiË{×*iL1Ão[qɳV-3ÈË#ÏøÏ5´X#)Ó“À)ÓCVÍÊ $B½‹‡åÖ;fkH0<õ’°1[ùúF‘k¸ŒGnÆ|ÂÓ§f+Â{<õ)' ;•EîpTƘ,JÓö“Ôv¤ço°ÖDè„®…ç¾BïVÂfT9æ,}{fhž s½XÙrta¦‚¹q ,ì@‰þ$Sy¦E]Ô…Â%x"e'ƒö?éæ?Œ@5rÌjË4¬L Ô‹åõ@31%ßR¨ê°7é¡¥èéÒÁ,9r+â1J¹…ƒáj^Ë 7z«lZÍ.K¹À* “í—aþ¡I} TÜN… 2`ޮܥ6aý=¬‚»ä„Ý(9rcF†Òì_áëýp~ÄE)%רó.UÞBÔ ¯Ñp2}&õ– ååÀèLÏììªàø‚v¬¦°œFñV¤µðDƒLð"Ïãn>¬švHèR^”sQ çð¤$ˆ:à¢dŸš¼¨,ý×Ù¡©Æôteï](‘¸üT9FL‡h‘³õì²¥M~ÂÀz³‹¹1Sç%~÷R·DG•¯_»qŠý‚û(|°\œЉT;ÅrL«xÙ„YÂóI–cÀÛ°ÐU~3,Üj¹i<öÞð3¨åè&X†S#eCQšŠ¹ %‚ðé®àù•Uä™6  Öëôn©“6×pª"4㦭˜Áå«^ltBÚGCxwÆÚSޤº 4¡ßíºF"PŽV±}2;4G%èL9¡0[Õ–ïºæÛ礛Ð}òÃüßËÓÏ•O –ýgùñm[ùajá'n1ÙÉï@Ž“™šE.‘\Ý&ÑaCn}:aehh˜šà Leé .5Ì7–‘¼9¦Ê® U^ÜŽŒ \I›XÆ [ˆ7MYÐßÖLeáe?—_@6Ê&Ùðb jcç.Ü’Pžäu‰¯­˜2I6ËÑ‘¯õ°ùùÆ GôÓÌ F˜9³¬!„ÔWdfÂÚ¦ô†ñ NA4Éiì¶ÎÓ1ÔëHûìÆû ”ùš­ºÕÇÎãñĨG¦—‚9ZAŽÞéãhEP|C~V´üy~Ž ðóœ[ýüü$ñ³ù'øyfçMøùלŸñF•OGvvåçZ~Vþ?G†‚ñÍQ¶ŠK@÷nâ×H$“•+c¦ò[õÛXbÕlwOÎí]©$A-öÍ55×~Ì1Yö¡íj‹ãmCVõËÀ\QxI ø dÃ7¤ÖUÊ@?khJ£bïµòõìH1V홯Fs›<•²‰×ØïSñëvøêùûuùY@û0ööh!S‡E±ÝeîЖ:GC¸8p<žªŽ­Š-/SBdgé‰=ŒÞYü…Nêvk —R ·&ØDƒ”b¼5 Ó1I)¦[“Ll¢IJ1ßšdfÍRJä­I‘lb¤”ukR›%¥DßšÍ&FË«bä%1rFÌCö”¶ÔZó3õ!P†bý*‘GU‰4g'£¦ƒo*S†`êL¢Yæ‰]p/>g¶FYÒãU®`¹“Ni7¢ D@w†«žucÓ œž¾¹öØYòŽJãœy”6ç%’V\^ñ>açIÇå!O£R¿ƒßmAìe5•ˆê£l¥á‹èîà験hôcÏÖ,쌕ڻ¯,õ“§üxð4¼›]ß·{½±'0?ìh$=¸½o°íàyyJ߃ߡ•ù ç(k.Ø£Ó™u¯º£°srb`Ý-²}_z>P–¶z´°¥ ñFs¼°5§°±  I_êC£õ,ë†{ûõШ=ˆö#sbb’/-æ %¯wÔ™gÇ;²#Ž–!b4» Ø8ñq±Á®FTÀ01ýضè5¶‡êù€N$ v¶B=vìÃÛNd{])¸Ÿ_­ÃŠî¥Þ \‹£ÐZµ§e·úR †àü¼fu‰5=‘Ëä„ yÌÎIëit´Y³W ÎÛÑ¢iƒ¢”vÑÞ·ÇÕÌìûYjzù³u¿”Wi™hV?£Ãã"-K̺»Úz(”¾Çߘèn7}8ËlŠ7õd;$M(9× £uì˜/¯Îá1€ I=,”í¶'¥r퇃Í/ìZ+j¿b(Á/F„NS„]Ùa–Ã+<’ý«Ù¾ÁQ9Ê—É #E¸ œ×|‚Gõ»êHh€÷Š÷K©ÇwQ¼ÝŽ ™Fà¬.s`È¡«˜´ïÉJPŽÙVvÞÀFÛ=&ÙŽ{ÎJÖ:k>é®6®m$Tmä°ãœ ¯ˆ‹ÎÛ‡°½˜» ^…«íš6–e=ì÷/ÉID/ Y¼ç(ös&ëͯ{ÝÓ4çôÑn¢Dˆ€h§”>ä&^‹×#U[óÉkêZáå7$VÓÆ+úƒÿiªÿi’ÿi‚ÿ)Ñÿ”àã¥>ÙMÕãé*:4—Ä£ üAM è›uñåë+Þj]„N½'ÃsB*A@q“º GsÈlQexö3<Œ‘f ó-ғÉ;±Áùk^à÷Ÿa8ýã)k8+Á %òÐ kË„-W§S¡;ñ¥«™’î…‰–ñú4ÁõÝ\²!8~­ØWs)jœdEªÖÑ5<¿/¬h®È\¥s`åv!˜ùíwN¼3Ô JáªÎn÷Ÿ¹œïQ¬l»ÿØMŒzž*UïC"©htµt‘àÜS¸Ïþ’T‚ï tiÎNœ&h>M̹gˆO1 L #lÁÌ—‰LÆ",Ùà/û)6ºøÒlÐÁY¬#FßQ³èš¨' Îpàêí²£Ó+šY“°¥‰ŽðÏ×uzç͇®8Ô-*íD´¹¼(óÝ¿ÀÑû~6Cñl»‚W«¸³”ñk¼Þ9žÃÚ‹£¾ÚÆ5ùÒÄ{V]…® åóK^i,Û‰ôHW&d)O|ÍˈTçÑwÊËXf3ežEž]wªŸ¾¡ã½<Ëbüx@“Žâ{Ç‚ÌKdT„%Ðtí;b‰zàý$ò3³Mj[wç§FÜáÅó[5GñÞ©o&z¼f¢wh§ð ]ÐÐ"·&²ê¼6q‡KýiχB Ýò±`ƹšÅn˜¤Ð¨—Jh.jí·Ä•:òò1Ýä¤0+Å4+xá 7ßs2]yÿYœ•/”ì‹${þš¥~ {ò ~]Gèò°£[vr"J½æL¼EزŸHy¿¯óšwÖ„9‘Ž!€øàÃBÜñÌpŸºt·(ž‚Ù´¥ë¡÷Ʈ׃•töûûQû‚SGR±àþ3l(û$Üþ?¥,m‚ŒbD"îÛ13ˆ2Òãâlº­XÉÄ22’'iuë:ƒo,´Åöœ{tG°¢:üuª]ûåàXÿÓ0ÿÓH¹ÙD@;7kÄÄ}ðN¢U‹`F²в5Ç/±5ž•`‹üîUÿ±® YÔà6óc]¢,Ú˜å—*C°Á.7#Þ*hrt¾³åd ‚„L./í~y™=3}‚Àÿê» h¯É GlÒÌÙ_2ðú?Ó'˜ž^)Mßh;cm²±b”°…úNG«VÆþ};ðÌ<-ŸU8”;­™Âê¼PBÞ³@ óµ—VxÌ®Ÿ£zWwSñ&®¼hÇ [.[ÔÅÀuãáIòP¼æ’6JÐn‹è\æè¢Š¡°[@í¾ CÌùR |h¥=ËÚÉÔsôлÿH¡êÉ…(IN)?4ŒŒ¸Ì½;QÖàC¼$FÙ׿œq §¸…È 50ûN†0 ®5ä—w:¬N¶;‰7IÒi!š¹¼DðC4÷%]çþØÍ ã‡ìëÕ;œª­H©Ïy»ˆš(´½·'¨PR¶HÿPæíVºRû1™¦ŽÖNÁµYK–ûë-w’džŸ$'ú'/;XþKZ±oð­Å±þµØ¬x:ÔÜEîGZýÒ?ûc’þ§²”ŸAéø•2ËÃ9†¤ÿ›éJïs¾)™ïyZ‰÷æÃ#M\˜nÕ+‹„ü×A7¸JW&ú@ý#:Zé8MnæÍ†3"˜»(ç“w®¶fx„…ëüU¶œ×€¸?[ùÓ¿ýTãù§òòy͵Ç—¼H‡`ðS+f.Kwct¬òØyJ1VƒÁöÜ?’/SIÖ4ÊéðG:‰Œ×p¤‡¨ëPØ0¦¹ûc{‰äñd2 0ÍQj˜losÏ»LÃàÏt#–s™Á'Z‘¦§4 Cž@ˆž Òtoø¸°XïÓ¼é>™ß„\ƒÂ`|ÓdÌ“vNâ­91A‰ŸÒÞ ù¤ŠŽ"mcs°¶!8ÓCo½ðpŠýåjëËœ —ñš¹Ê{ñŸWWE@Þ‹—d.£§ûKÁõ ÆÕ¦¾$缤圬.¬óÒ?¬³6À:âŠýÏÍèì :{QèÓ#“¸RÕƒOß/ü ÏÚ¸OÀ¿Ê¯ ÙíÌVZN8ã e(~¥oÌìù8ãék~nJp,§1캠Os©"ÍäJ³ÊBëèwýÊIÁò< ©ÞUµúmeZÒ…‡¶\†‡|7ÜQfЗ‚ó%ŒÁÜË hD?v°¬=$~]"}ZÑëÀ¯”Šþ¾;aánîßRܦ2ä»~Hž§+‡Nu‘çíçzÙbÍ5/íÄË΄H‚þ¨…ã:Žj] ~.;šá½_™Ä»æt=Kʇ#[°îú£|ÞÁ*”‚PžbH‡zæ®õè÷ÉÂõuüƒ—¸È½€Ró„Þ_ÒhB±óиb³Kó‚Ë×Àð¡K­µ kè]24ôp›®u½?¶ )êû6¢É÷Ûˆ^åo Œ­äx­þw€²¸ìÁ Ñ£]—ÈÃêèâ~òÏÛ¥J¼ÔHX×üt¼àÒñÓXZ#“Þm÷ˤ¿bމ4=Ю"}2 CÔ¸·µkkŠßñZž“¬™ÓÏð·?\§»™\Ë ×ʵá¹}LðO#Š ¼ ­«\c×:üƧk¶´™äè¿? ¡:›ÿëy‚ól7®Ê…ÇÀÊy™ÂRxY°}¨G-TЈÛêF½êœÀÙZ‡‹…:J]âÝŒ?”/™ªªßŽJS~{HÄn¨gÞ-8'uó™üÎúÂc €6£ñŸ#ަ¯'Âa÷Jä©2èõ>­[[å]^Åþ/Ôu_oö±-ÇiT@fK›‘îª]:¯ÏXð„oÂwZuoÈMŃà|-ä:%öá”Ù…\t?KÞŒD›$ñ‹ú±‘FÁ90D;±‚óV½Ù÷ɬ©þVÏˬ=7—YjÎÎ`¹µœZÕQ«‚ëvXGãiÜüä¡V¢½€TCò;ʵ­„K´/[p<$ÏzɳZPžÅ)—o¡k"Ášx‹’èsßAç(•)§52m6É4Ý·½©ãN,Cú«æµ-´n’­…i‹ôrΦL/‘©Òðÿ²å,E`ùÚX;¯o"AsÁ(û£EÒ²“ Æ‚`Á§ÜCc˜¯2ƌɪ`äìâñbo­xœm>Íù&"R[3®»šõÛøªhœr-}÷}´Å•QŸ=°ðÚkvôÒ»s~@Î踂žRN6hp=‹ŽÀ®­àz Úå;4ÊÝ;ÅA|!8ç†i4ñªo'Õoüh4ÓõÜð€S´ŽèŸØ•ë(c£õ‚³L$Øâ¤è-&jè^‰ý$9ÑúÐî–¯¹mzÓ~K°ÁVò>Ÿ?va”4o€5þq!˜5öx~„öh×ù©Tþ£+Ðônuïïâ,ñÊT]£è¯2ý¤ÆT”¡„óë;”æQùåÉÀdе—œbœÉôÞ«¬TŠœJy§Dœž8éUÕðÏŒê¹ëüDŸœÉñíØ•6±à,q°TBíÌQÍðzëÙ"ñ•$^¿“&a3þ[•âÕ¹Õz£|½‡Èo V>¡YŒôF)}ȯÉ/áD`)vKßóõVè(»oi#A.8#à¡hbçØ:au'XÑ…å‚£GBpIZÇW‚Áz¾¢$ {lñ9w#+FWp ÿÞ_ÏWŸ[ÄýòUýä?ñzW¹ãàçDF}ó¥Nï6_ ^Ýñü¶ºº¿Üêû„É».zo¸¸k)êu¿ð¥ûÃúu…É]íšcTNŽƒº±èÍ"^ù#R ‰”P>£39]¸Ji†4@|¬ñ®´™úiÆ‹.ý¶=Ív¥¦øyµøébÍÚé:ôƒ–+ì#¸[ ·Ø¿Óù 8mNUáÞÞ¬‘ ×­f.=gÐ?ƒjüêY7óÌ÷`‹"/54H˜®gÉ‘-¬µ¨S\¥Œ> kÎ7iàês PŸ£ áf^žÈ`GÁKîw %·>à{ñœIWF˜Ð_j{\­É t+fùev9ŠÐ°9 ]»Üè¾»ÔÕķ3ʶonå/•ÓÇ4†AH“Ôië­Ù³ì˜ÆNÿ+ÙéKü-Ìq/Ç2ëŽuõ=ÕÌæN?K`êÍj×#ð©;¹-V»ó#xDTdîÅ'>Ï?ñ5¦¾¿âi í Ô¸­±Ñ‡ Pöóu0BpVõ ˜€bOþz”àœ ¯Ká¼Ú=¢c'= ÎûL(s‘<‰²rÕûÊÁ`×÷ÐéüiëädŠ/xãJ «˜-õA={*¼“úH;USüI0ÅÉ\/ödWîQñ2¶´b¹¯gW7h¾™(7_p^E²uÍäDâôse[Z7“èõ4f•ñ¹¨·°¥-^Ýx1"ðÚY+¸úÐoªºge7Fxå‘„LTË-ëFR½b¼o‹ž¹‹k©…‘=$r+'ãV&~]ÙS°Gxn[£%Á‹·¶D‘»o]Ww_Sø YXìåç‹—Œôrc¥†ôsüz«eýFÎÜ1ÿF‹QÚL£ÚÌGÕ Ý0$ô%jD¿*BH|•™®Þ#8çá¯ÍäN8—Îïfœ9§83Cù÷"XàI-`%3¨Alå Îiß«?ƒc|X”Þ/”(?ß8¿xâ_-¤Ø´´›fñ,×à~¬1HfW…ð!Þˆ÷ù—þ†6cC Øh÷ðàΪ WÅ>ÆI?_c¥d·â ªÿoµþ·Ò:ªS¨3ªHÆ:…½Ü›nRÖr }¶jf‰šÖº³Ù÷BÏàoKÅo ëhkÇÁ@÷0ÏÏÀºpiq@À0Á}öüMpàC¼Ôiá`÷Æ›Ô!}†¨ë;¤®l•ºlŪ)Üö8ä—¯(G¼[ZGÎ`…LµBjqºZáyL[K4éþ#VS]aX8C-l/ÎR ozöš×sàÀ¹‚Nºš¸‚·äv˜è=Éc\™uE嫯Gý³þwe¤)ì:(ì~¥ÃÇEá #DcÂÝ‚+£C£Mßò€8ä;®ÓmKó%žâŸ‡Ûë4òcGèOl­?ð”Ò+ÇùÞU¨4¬^ª‘Ç©è S¿Âå1¹F=ø "^q´þIpÍÕ ²#ÁΖŸÚ¼^í7pøN¿üWÄyA;‡åB4nÚ‡B–É*,ñ¸’ô!X ;Z\‡;5PÕA±í§4"¦ïÅ‚â*‡oAUo]œ“õEåËš /Æ‘â%ÃVGëÀàÑBq2ØpÚ¥û (žëâeˆ\r‘ &±+FK›ù’£êç£R½p§‚â~໯†$wÞ„$8IvÈ"ä9$I¢kq½JŽYJÛH"GÏ_”¦ší¯Gñ«òÎ~ŸB3Ë:³²ÿ@@¡¡CüZ?ãk/©㣠ÊPJ°îñÑèfÜÂó °&7Þ飬8 Q¢~M(qš>S°ÌLMŸ<~bRgp^ÊÛ¨ã±Rö¨‚r긻öZ—Ž·Ò¾ ô»í&ƒv¬$Ûjû¾@¿“°LCM×~'_ î÷½¯´Ì î÷«Ž.ý~J>S¾t»w “µ°FãVXH©³ÆiúNÆ2Ôhà3´b™û¶ßÉ(“XpópåòT ºTpâ¹_1@ A¤±“K«ª´ & ÁyW‹_Ze)õwqiÕ½^\‹zæy¼VñÄˆÍø+– j4 ÿaÔÇ=Ú)¼îÒ^–P>÷ì†Ê[âÑž¢üÊÎã%ç/=ã9ÈšA0­YÔŒÂÃÅ5ôVqÝ$XïÀþÄ·<Çò£IÌ X ¿½™a#-kHQP§©š¢ëÄä»}ŽæåÀ˜ØÙ½þ(Ÿ~¥±_>ÏP~¿Ç?£ž¿*%_u‰Þð¼ñ3æ© ¯€yúçi'Ÿ§¶Nÿ䌦äo^óΟ9%€¥'ÝÓÚ4Û-&©„..$'iÑ2³ôÅÍf/çÅ]UñRqs¼Ü˜»n†³Š¹¹¡›ÞE–^æ\%¼Ì@ÿ¿Rÿe 6ñòBi ÆäEeç—]¹ì%~›&r¯¦& C…­¾ëú,­ÜžU…»oÉÐ>üZ¡KÿÚÏ ¾£ò£9õÜü´û±¡ñ£Ùº~>iËW<1]rœÏ/hãvà ­ØÛŸi¬ÑÝ:¿5ºL$­#ï(¨BÊyŸ}Zî/Ñ­A?]¥>שYp‰ºÖŸ×P…ŠŒqV`z}“‰ý¯Ÿ^w´¦ ¯ÔƆl¥aW€”Ë•î•]I¹BkÒa×™R˜¨#ȤiëôuKÉ0”­cåN4Vþ°+à dzÊ ­9nL­èüV,¹ZäèÍj‹ó<ë[œG æ2¹½:AÍ¿è|]ô¹¦y„3ú×}hO´û׬_ßl/áFhß­À?.×ìN6d(íÔ¢ý…ò®œRQЈ‰ŸøÎ®z˜ÏUª‰ûùq‘.-]IÄLJù”är Î(hÀ¶~ؽò”R0`)7§»ù;¿âî¡AÌcÊH6¿ˆÕøn¾¹É>ÒG šÍÛ Íf¤A88üQåÂÝY¼‘<-œÃÒp˜aqØìÕœÃz c¹*š<-ªïé ô=94>@ïüÀj`€ÚÀhthuDÑf‚ÚÀ«è6r^4v8ø ¶À÷+Õly<ÐßbjGøó{üã÷“õíNûÿ|Fãú&‚ºòÙFIþ} {vþNjEpá ÷ÒNòQâvw¨æˆÆ³Ôäœg4ÐO»¾IÕÜræ†úÔVŸÀ ½‰†žÌ5ó€f©Š[UA12ÿ Ü‘Cø–Dž_g×l.Í».TÁõ-­­´Š8†}<ÌûÈ7#B祣 0«øpþûhW%óŸ$öiãaßxˆ×n<¸úwx ’DZ•Æ×+çg«ŽÛPºpÀ¤Ùk)¥Ç^D«ß}§ê‰ÎßI$*éÄ£ ßFñr‚«û!`š×¹¦©®éýßÖ¹ àSñ·uвgqÐ.ˆÆáüìÿt%5ŠÅïH¿õF ¢sFšîÔîë û¨+ÀÃS4çÔý)ì>äÙʉOºö<z¶\…^}þÿöZ?–Ëø÷úl× ð^ìÿR¥î*¾…€J¥<ÅÅ[Æ"+¿Ý©q’½H±7QÛ0Ì0ªüz§&Ücù÷þã‚ò¬½­ˆNöçýç»W)WŒVCr6ó4,/ 3•#h¸–c‚Ó­ ptgä?ˆú'ac¦waãA;96ôc£‡sOá^ûA¿{bÍG¤Øpâ^ÓöE†ÃŒ9}}ÈøƒFÜ:Ÿ§Ø®&à‚jŠÿéãàx¾ßï2™¼JÊ ¿iïb¤´û ‚´v¿>èS§F®smÁ*¹8T5ïdn‰ÑMáª3ÉŠûÿiÏ•\”²iš #xÏU|ÿß:@•¬=,Ù´¢Ë}ñî皣"O¸Øì@ÿ|Åutc³æ>7^ËócWkv<`M(måöPi.`‚€tÒö¬þ'"B6ÿ¤%ë×ñ|Ê9úG_è¨ÃïÛé|TkáNãî±§4.£ƒjø,\ÁõÕ®ÚÚ&¨Ë.ªCš¢/xåô*ø_ Ý8ábâ*öãâýƒÄ³W7 ^ò½ÒZدWpÚIÎÎGåÍkw–ré#¿åéù§½¹K–ç£ ³K•»Z³Ku÷ …éÓ²•£×Й¡%¡Ÿä–òôÀn翺îv~°”qãS‘7i¶;1±M–’ä‡wöRÛÜRF×âÏ„zí52³•ÛU¨׺ÎÛ»=0¨žÊ×¶þ>k@KJ¹FÒ?Ò#hg;¹?˜uóXpFö¸.Œùõr¤F¢¿€‡åTw´·;·ÿ–k  g1Vk´O ú+Åd”ßÀ– b¶P‹-ª‚s–ÞDzCò_øEñÞ§?W猸nxÑÿòÙyò}á éšÐŠ"hxO-Ó°W‡±‹y»@pÕî¿Áð‚&ïO?3âLp¾uIâÁñf†ŸŠ7û&üºÚ.Ý`ÿ®±¿ñeá+K5˜Þ%xä1ñ.“!—Pm êÉ (0ïì ÷¿/þ§i~¹ÛÏŃ»J3¾† <$vû aïn×áa]Õ )¨ñï)V‡ž_¢Á »Î‘áʬº‘Q®õYµ"¨›5#ô)¢<0ͨ%õ#4B~7àM"ƒž0\7Â_Þ LèAƒf„wr{å#»ÆUãî&ô˜àzâËÿ4™¡þj6ºŸÃÔPxÉ;¾Ô€˜ì¨Ð©§DóüÂHí®?Sq´òsø×Íb¸šýKÔB=Òe„¢àz®ò?Qé¶€;h„áDÜ\â%“+5 þ9Ø«=í§¼ÚCô×°¥âò3­ûçó!Á=¹þ­}Áù’®‹·l¹àú°¢‹f:ô§œLî_^ø¿‡ŸˆëüêèÃF®¸I¾p\uïÏU³\ŒÅ-„·o—Uw„׿êÒy¨þj|¥ßzÿ?¾´c”ËhRl.ÿYáè˜u7ñ%„h½/„óõøû.1S¿[ŒJ¥YZ<ª ŠÆ3Ú½¶kèÒòkþñàr®Lü@ã¹|#uvüÐ'¬»‰oæ´žoºqèS;Á!ý»Oðˆ¯'³q¥«qp4`œG…½¯Évâ  j Ÿ×þÿúò6 ôýUè?l ƽçñëâÕf´uÞÒæ‡>¹ ó?¼§9”s†®LÌ'ý®«?cSã?ø †]ÕÀ>'ŒÃ.\ =»çñëöiŠ[»Ànoõþ á=  iEØ+×`oà2Ï»š³ƒ9çÿ³qù3]L¶ÆÀó@K°*ý?ÆÁ€e˜ˆSÍ]SÕìL æ\HzW3˜Ç›Q•ny;0˜)Xfð»šhE{E-ZU«E«@ïø‘tÿ,åÛPð{]b©>þ7ÓØOÿ± À¿úÑp"Fˆ=¿A£û7\Á› À;Иùã/äÑ­]æ×´\Ây…Ôþ e¤ ð­W‚1¬ûTÔ+§ÎuÅð¹†Ïu]¬;BüVû½Û(«¡·ÖjÈãg-}jõ†ŸÚQX~ýBýeÙ êm”ð=|¡öGÍB}Qßeûàzªì?-ÔØ¸ºDómÂÙú`£ˆ[ 7kà›ŽÃ Ewéâlg»îºá­Þ|w•ýzÈÇ|•¶þ!€·4hh GŽÇVd m¾®Ùè:UpUôòMÈ„æ¿iûW¾5Ä»¤«ËkNÀåõh— uOýŽGk¡K]YóH€51õ_ä Ñì Ö>GP{Úîé׺8qé~¿·4 s'¥5Ù÷Z@ü Ó*—ÞÔÈ€þ'Q9úÇk –K' ÌWov¸¿rÂîƒp¹'VŸh;ôï7áŠ÷Ÿ¤95…óÈ„ê‰t¥«û­‚6^O¨¯‡úÛ(i6³€ v?ÜÀOoùŽ’ùObyÊçŽ ®ÿ§·¢ŠJ°Nawãû7®S… D[¸G|éC…B‘ãøjà;ÏGHmõ_¥qÍÚt|ú1m:—ßP ǯà‹¿|8fü?å@Ì¢í]ŽïÜÚ¡æµ`z~ |>?ÿŒ¥oß®™{‚ˆ_¯Ó˜xH†rå¥Ëâ%¬Ê­ë41¿ÅáúSBܯQó󺦄جIåÐM¿;(%Ä.MJÌÿÄ $ƒ ÔKjÚjá^}'ŸÏç’ ç¹8h˜U‰^ÊåT±åF®ÐWß%WèÆ.2ôþÿáÚ—fêàu¹œð¬“2ôu vž¢#N‡_ Vj”k¯uÍ"7óš–“çþóé›hŸRV‰ÔäXÀÁ¹÷w‰M>¦ÀqwK»–óÝJ{ðàfÿ¦Ë®Üƒî)vIa: ^(V€Û1Ö ¸zÀ/÷ ïÁ«{_ÓÈøï>Àãøß•†[o”^¯iÖ¸Ïe²(}r±(Š ¿Í”àbp~{®•ßž)öÉoŸ#öšÆÔ÷îö÷ýµH~<5hˆ¯ª»Ž"ý˜ßþÑÄ èÝ_À‡$F_ø«Ð¢î÷ü-„ú’w¸_|¾@ ÷<¯¯IÏ~5ÏFÑüö»g=f~ºSpö¢‡‡x.7¿™ô½Ž̵ùš\ ÿЧyVÓ¬†s(y®]Àg(.†v¨- vÕÃR¦¦¹>Y«àÄ ábE6}!Ï\Ã#Ô„­hO ýn¾êAòO¹çõ”Í·çyÕoƒÒ–ùªâ;SÔÏ/Ì9Î+žä„‚:O±°«Â—Üõ.1þYu·£õN1:Ûõ.±p'¼‰ÜÕ~‚@ÃSçh}È~Pk¼¥³säÓO£g‡Ö*zc×Ef+¨ È»ï~· éÞòn°:õûy|ìš:6t©#o@yƒÀÊ©¤Ç•v°“þÛTJÏTZrÔKIX…°&(o'*ÕtOÞL‘Ì¸á •øÝàOäùW9»Ø»OqÕ¯zÅ}õm¯6Í’r~=e®@4+I£i¾“®ÌûK ³Æj¥ð¥®{²…>Vq§¿Š×_îÅÖ_À3Þ¯üð7ÝrÞÙl%>çJ ÚTº·}Ñä_üÍ÷´öo˜ÿç%L)ÚEËì¿ùîR^¤ \åzËëÝSQ¬½KÁn\ õ‹ó.pÕ.ëå›Ð°/ô4Kö‡áõòé‹B%+^ªòJv÷nÓé†ÖÄÕ;*#­^¡¤b %“ ¥»î§U³™²¹”aü»â,åDL9 0e)ŸÄáîô|æ£Ãlä9sit‡ùî 5áE÷À»ëì¾ÛF‹3ÕfP‡ – )Õ,v‹«mifel·§Îwÿ‡4c˜Aš0Ì·'ýýÞTêû¿"£sxg¡ÉT4Iß\æ£é1{Óc(È|x€öƒrRü*2Ž5™À8™¤Ç¿·@iüEá¯ýDbbbA%R¾q=4®´‚ß_ ŠGwñ1&Q2= £Ô¿fõ¯‘ÿµ7ìñß 2–j±Ý¯ìÈO×ëZÚCm&fm Q?Þ­ì]p¿y­MüŪXÍs/¼o±oªH6²š/tøífÉÚ`}¾ç¯\µ,3J(œB ê?Á½M{“«yYB‹µ1”Ta”í·ñ•¨R¶´ƒ¦ÜnǼ-Wñ [B“×ôGÔWפ¡}jmÚ¿„F9!´ìüØ#,Oa'§oâò¤·üÀð Ê}xÙj[xY{Xlyl…ËËlgY«P‚B£ª¬3D½}‡µÅîÅCûþWv ±9ûᥔ³_LÊQ¦P»ÌÖÐâÁûD­•ì¨dÝ]v•Úo ‹Ý»×UϬ‡˜­ŽÕ …xM"+/k ‘ %ÔÅÑØ²2÷ؽ¬ŽÙ*_ié”ì‡bí•ØµR_Îl¥’Mak”ÇÔʦK²1ëç¬î•„„v¼y²4Zn•ìŸë¿-µ´Ç~¸½¸,J²5„ÚÎÆˆÅ»hfm¤:¬YÊiÍ9+¥6Å^–Wôð²¼&ÏI(à( ᣒñù2.•y?üçÆfÜÆíQ'‡=É’¢í·O€?wdð3l;r½œ¡ÿZŽÞ.?{kCmO£°5½ŸÅÖSŽ×´äÅã9¨ÔF¨¸@Š/l½d±7­¸cíMxÙL^#^5j3gO™Ùd“£rìœyt©'È„Rz?Ï!Ö ðÔ®bjùÉálJ”û=Œyõ¦6”#‰.û‘ Ó}ЦEz\¥óQp±fx·ðá•ùÛ÷è­ï.Qê¶!Èüþ õñqº‰gÉÃK²¸æ9É,-‹¡Çµ6)-†í–æÁ/4¹v™ˆÔ;·½ÿÞ{wñ˜¬s±ƒ-nv˜í=ÐYÖ6¤Ì{‚íL@…¦…]-(CŒó­¸æ–²P²áÒàÞòÂw8íC7¿ Ì£ Ù ~ùù¶‹#þWú9r—<æVý ÙôI¨Œ] [?Àyà*³,Ž…Õp*Øì¶y8鿍wÒåš”ž_u=ÄÖ¡eŽ«ñ<©ÖÊîüÎx\É·[ÖÒB¸µ.…þT’)jÝÍÿìçðür=Àkï&¿Œç:9›zØÉ2/°Phl›<æ/²i ;ûuÙCbÛØaÞKìAàS‡’">#å1¥rt“<æ5}g(AŽ^Â-P9ò(]fóO™(G,GΑþ“çeâM´ë0M{è`Æ3¿P +[‡tàz“bÙZ™&—àË ¯ 4„9`è §UpžÆè úÂJ(¥íN|ïònç^ü(ý QÈdÿ”#Uнy¾(Fâ.!_3Ïiƈ}gž(Ù×쪗S¼ËBå½¥Bü`ÂLî-`l÷3W'/©Ò9y1ê1úš?›•ÛÒ:üìÙ,S~)ÖÂgUÁŒo¦/¯±K±Ç´É†ž÷ÁÚîÍaá¸[;èÕ]2åàcD¼9¯’†F¸$! wïEGŒö^HsŒ$àîO:5Q*8Åì4ÿaŒd}ÚÖfðü >.—ý\îcÇMÇØÁÇx1ö諲aŽQp¹Û¹õ/_LJ6W3´µìÄåwÜ”÷8®å[¹…ï®/Ý«14#ç¬{ e'¡jêg4J'iVÛqA"8û]E äAù×HZ¾I„‹0ðß°ºôâ@k(ýe.ÔCÓéBÙòæÀg©"„/¬ˆ,ây'0>)2LÆÆiÜ$DûEtµ”gôè8Ý{Èw üº×éà4ÖÈTÄ×®y«t÷,ŠX˜ËI¢÷>¬š¦ä¼†»—iÊ[ Þ…[`Æ&éBt™Jß³¸³ãhõ²jÁy»¯˜Y›™†ûqg:¸/jYo)u}Á)]&VÓåcöFå/.Ü_ËVª º¼³òššP?;KÉ?AÕÒ¼›ª…‹B”Oºwzý7ðÙ+¥œRv)â˜à¼„ê½ Ñÿ +Y†sáùž!Þ÷Ü$mÆ_q'"š×.ÜYÑe/Ò/ õnÞH‘ñJxcÔØDW¶F% ÎßA™l%î,FÿÑÛò±¬¯&?”èLžmp”-um±¾Mð/À2Ÿ¡WÑ*¸ð$F‡´+rJ Ícdy|ž®‰S樎’‰¶#Âgj¯:¹—ìEz‰;´äMrÒ§¿Ùá}Û}Ï•]pŽGå©'þf»™Œ±Õa‘ŸrJ—zb;Ò©/’k¨ ›±|Û?rC¤Þ`V÷mEÀ N¼úY„ÌpàÌ[892ƒ­{17Ë3W1y4ùI’ñ·4c€ÕÄÕ¶l¦’}±cv ‰ÑƒT‚Eôǘëql$,ìÓî¹@2$-`¾6Lão0S’ý’ŒŒ<¢'2¨4lù:÷qµlwKË8¤iVA¶àÒ[Æ!­/Ag›/æ¼Ìª²¼Ä×Þû ô/ΑrêïÈØÈø¤üìÇ@ ŒžÓ-¹¥ì@ÔlaÛPôl/;eô4îÂ=ŸJ›q‚8ãnÇ9ê¸üwÌÆŒoÁ¦-r0«rTEɤ¾Ó-§P »”Û1MpN¦= , R»'-/5¨ìvwxgÎæ,¤Òó& g÷üøÜÓœ*Nupâ—eäƒô,%¯>ˆ~‹UZ)3ÜKPvŽçy©'ŠQù‰[P*¾ƒé.y¬]ú"ã\S–²é85°HÇåí”–ƒ·¯C°2³•‘‡8Q+õÅo“o/Á/YÙÊùST Y¹ÂÞ]ù¡€vUÄ#° ö¨÷ç¸7~¸€ÞýTWÞ­<ø λÍÝ:½j} ?;ˇ[RI¾šóŽR Õº™ _ÆñáeqsR,W)%YÅÐv¶nòFR¤D ˆåš$úËèm<-BÂ3oáZOÏî)œR3GÜ£… ‡u2Àºh•2ÈýÅäO&õEªrÕ‚f.8ñ¾m©/R_ì‰ÖËÉ{bm¦¡_[rL‚ýzRO\_$»éà…·[åèÇH£™õ¬°µÊUŠ·jO•î3ч*©‡ÔÛÒ&8?¤,2 @å\,lÝ+Gµ@š¿÷°½‚³QOÑ7zK«ýŒgéœùðÆQa€ÖÞ"Îï‰ì-EYŽ¢Ãn¯jä݇ÂÀr‘ÙkÇßülOLà ‡YXÎq¼::C²5H^5àM¶Ç™µ®ÚÚH†çu[^nm”£Íüdm²€I‡ùµ\¥öCX$§A6<”$Ìp”2ÉZ $Àa>³ÈäñŒ e{¥œCR¨¥LŒˆO­žÆ}[ɪ,Œ Ðd­Ç¾¡É^ì²ô+ËWrºž_IéëìL<­Þ‚c 9dšÖAkºå${“Ýí-ÕÞhi—új…ß’MIYÀî] ¶T§Ãð}¸¬!D"ñ.›ÌÌ"器ŠCõ„®PôXPŒg%ÂpŽ2£dÁù“çëÅ>¾ÖY³£r­Vl@\©§‘Pðäd}âJÝã½\ÿ¢‘ [ËÜ?ð|”j)÷&”)=Ü};}wã:ZÊɳR FÓW‚3)°§'š¦…cî xçÜ5ÀßrênÙVÉrö§K9†íQ;{ek)ËÛ tÀrðò]¬«Lï¤Mfý\•kÞë<œL ‚™íªµ÷€¹ó/©u®=âÒ+ä¸-íz\O{$ƒãj¥‚ðl)Ͻ…`R‹IÞÕøÕrlñ%¶[ùOÙ*¹t÷°HG½ÄÔRË×â89#êb¯°si™YÊ£u p¬•Ǹ[ŽšŒ¢ ÀKS&~Øáåc•l¥Yq{$އ]Œ+…¿n9"Oˆ÷ÊËôŽR³£¡)¶’KÏÆøohMŽÍl¥ž÷ 2+_ØçPOcÜžm¸Säù܇ï1¸‡:|wižaÑ0 §t–Ú¤¤<‡3Ó›«ù4¯½q‘z·5Å•‚Ñ| cðX–±*óù-V4-××H gh묇¿Ía@ ç§ô¼…¯üËY•æ|~šÒ·TˆxóÆÕ[¾f{s£x;’a—ZÊ®Ožh9²ø‚Ôw*´ˆ{½”–è¾h˜Hi¥AÒrdéì8/¬±Éœö¤—©1;ŠžÁ6˜íûͅôVK6H}ؘ§q ĦHEÁDË׋ˊ¥TÅ[€Ó꣘>G#(2.x×tp\‰w„B8(òSFÖ ]úãè ŠÌâLP3#ÞM"õÙ†.håÉŽkè÷§Ê¡ó ò#N[O¬]v*$]éµÖ×ÏHiA=ݤû;ÊÜ!¬,z›§°Pé9ꮹ'l)Þã½7ïF÷qÃ…нbÔub«îÇsahg l~fÜž¸ÚEˆ>eÝGè«QfñF-_U[Ïbssr‡«øÝFøµ• /IW¨“ŽùZ¼Ö³–Ô³‹ë¥ÔFǩиú‡g2jvvEJYì² JJ„G{ ´ÕLSbœáP(Þ®ˆaÒ³Ç }«]ª¤žÍ—réS¾›tVŠ~FzG•ähÓ3zZrKÑ Ø˜ãth~[_tTh¾´zï3!ªz¾ŽSÓ÷eüš¶“gñQçKœ:U‚¬šÚy+'H»á¯~šœ˜l9¨¥IJÄÏ'$× ï´Vã®õ¾Ü$ºL‘vqº|ãFtÉgx¢AêOt91@—É–}‹ËF³Ngÿ•ÊWÕa3ïãú àÄ Å€žlï§4Ó¹êL&!hvÆÏ©Šƒá’gôì’Mýµ=Zyì]•Ðgª!DÀò|#‡‰…#QÒ59«8Ù®4ÈÓ»möóþÖ0‰Š“)Dº£ý¤ÛÓGºz•t"=¾° Qâ*U¹8ŠÈ[m–&ÁY££Ë¦¤¯µW#)¯n¢ôÂFüz„åʆ8ûÛ(('TçÕÁ2Ì"wUPðèÜçQ¹’ÞÄÙs‹EÂ’°pˆS&‚_;ÈxuId[åÏ@ÈÈ ¡r –σõVÊ6vHyMþPŠ·fÒžÚ ¸.‘©ÕjëqRšÄ[ã_\ m,6Å¿ø2òÄÓXl‰ÉÕlÿ·”z7Þ%åå¸D{Š.¯˜çðzE±ƒzÁ%ªå€ü Á#Q>Ù 2®ü­DèFbiÊ aM%\ø¨F²6ÈsCÌ`§ÇggpÔö&¯ý¸2ó¢ZÌÊN“;÷*átá³<ƒ"ñåŒkö¼¤ìěФ¼ãl5$žç6;%ð|ˬÇ)NŸÙ»¸0^¸ Úð|ª‰0âÎaj—k./Km§‘…&å“ü©Êýu±½µÙA$F4;eöa ç$ǤˆôÉôôC ÑšžVƒR`™}k§Xª—ã6åjtC-X⚥7°Ý¹wK‘¥"j"¯1~zknwiâ)¡ÐrDLþšžoŠýJ (ÉRtáW=‹.{ànè+ؤg 0ÀRh+ÁŠX—^¦/ƒîÖhÊÄo¸­Uðé4î™^¯Ö.˜ÛœO#½^Ý \uá\ô“Bïh¸?|]àW¬ò¸ÒŰi* zioÉ~¶h IçS¡ùWCÄLUˆÙï–'¥žeÏaQ_Ðs@Kõii¾a§g€Îâí8Š·__%Bá g .GŸà`¤§ëhE-Epâæ,ŠÈÍÊŽÓMÒØCÌÞˆ¾`öhóäîå)– ŸH…ØÛˆ³ÁLŸ¦H¦O\{ìç¼=¤ùW=V  ¦føØ\@X\ ´n4I¦D×Wø&ò©ˆ(j³g©ubNµõ‘†Åz(wJ±d;$åÔI¦ÔÖ€º |Ôõ B‚wÐé‘0p:PfÂ@ÁÙ Ç”zœO×zÚY¼)ÙŽKO«4–^m­¡ôU"´œšÜ_ã”Z#EJOc³ñܾ֯²ÉE¥ ‚¥†Y÷ ÎEaØd VèåoâÁR$ÃVm‚+©ga°Uüƒ”Ó¤ÞÁ 8±m@Ù5˜aÄÖÝö[ŠŠµKòm¸•G%€búJ¶ÝEEšœ†òφ>RênòŒ´0ÉÔÛ6°Vû›Õa/¯|”üœŠ}_ª£Žjñ—’a£6Aí·Gò¾ øš/†Z)Àĵ½–·D¶ÂlÉÞ®* vEùò-Ûîßãòvã“°È¡‡}²A& ˜²ñ™ÆÜðü}Ì:q¤ü$,¾ ÐëSû)ÒÚ¼÷*ŒŸÚ 7qµÚÚ ¾åù ËJ ÊçLƒçKÇiPõtÒûsé ”· ‹F¼8Ó»ÿ(9h#d›±à¹JÄÈt›l’R?—ÒMÞž£Hý»I³Ìl6 yŸ{·¢N¦tb?ÉDºÿЫÚß½I£Ã.Ÿ#j{•-ýsïbƒò%V„ögEB9V'-3º¼ÒPÓ> ýXwsÎZr>#I³ýÜ»Ny.ÐnÎçÕ¸ÈòõÜÒF=g(TKä|Îh¾}2vS@ö¾¾‰vV×}¹ûMŸeäµ® ñ•SÜÃ:I°{?Eƒ]éÆ?xÞ.¦Z-oðÙÄ “\îÊÉC¸á4w˜Az ßÀ²ÃŒÌ4 Þ™¤çô\sc®g©AùLîuãs–ºÙ>àˆ“zû8éƒ\Pe¶Y"W‹Ñ’u}Õ„(³.ÙQfˆÏÙ¸ø˜”³žå4ÐÕYR|bÖ{NÖ¤e&6W_w~âê_¶A @ w(@Îd‹Ñþc¨…`vFÉ&œT*Hú$6¾úãó²wºÁýÒêÓ$m@¡  æ¢:.{RKÙnÁù¾J3¸jiU¼‹•¡LH(”V_!kñR ‹½*YŒ‡Y·–ÚO§Â_yE¡Azš4&Ò~Øg¤a™ãö Ãmc@ËôŽ5[Æ‚vIúÛ-ŽRƒdF¶'*HÝ]PƵ³MÌÔs IpKÚ³š5«Kà:Ðîõòu"Dp¡sSÊÙ­.¼`9òÉ#!FIË Ò x•jh¼4Û€G§€Ô~JÊÛ-Mœ ZâB)õ¬´kô–v©»\N½„¥V‚½·;¾»Ø'†li_|å(jÐ9•ÛG6½,é“ÝåÄxûâ¦ê$º£×C[%+&mðKi¦!tˆ÷ ç9oäˆfºx­//.ZE—¸NŽð0nX3"“‘F‘ä-‰k÷“mœžíûåÔ+J^šzœÓ:_æÕüÉP&KŒÁyTb5­ççеÃgú/Q`Õ°¨mÈZÝîVh¡Ú}ºý‘dÔç­ðË-·r›5Í·gaŸoPßR¾úþš7 /M¢;EýaC• T+ˆ»e&GžY/vƒ‡­ì¯¬øƒ/b5®4®6àj¥kK=Tì? J V ÊØ{5)d(ÁJÞ¦¢pa×îBë)t=ÉTD óZ7yvåçíCè¥ðtwµµ‰@r¶u£#g%8ãqùD íáÕVsw²ÑÎîä ý =–„àzÛ€#ãk¨cbyyÑI¥Üú(É“Ìlz¦‘­QÁ é¢ÔqÀ g Së)Þ·ÅŽR;®9?¯ÞZŬ¥Üo–„ź‰4EÖz‡2*!Bx†2å£GJ¼3®6ÞV™Ûù†nzh¬i ½[¼^ÜÿÎB5ÑïuüÆwï(M¾’Wéœd^=al`ÌÀ16Ï_ëOX«›²G[kÕJ­—â‹ Ï9”û ­õÂ[}¼ÍœwG¼½Tp¤’¼Ä€]yÌ@@>ͳËQxhÚªÒ(å¢PròØL0.£”³IJ5±’u?L@2'`@,,ÈÃòùK‹{:òŽë–ÀÄì'=ɾ–åARj“kd=+«àÜ…¬uŽZ]Ë1÷'è貨i½ZwÑ—«‡—/¸0Ø&£IV¹ŸÁ]“¼|öü• ñ£ÐÌ;4"Ï8}åpŸúù`dë=õ¬ð ZR Çý½æL'ι»y~¿iÃ}‡2=L¼'Â÷Ah^~r·zï‘ÿj7†¼Ô“×wXq·zôÙ?ßî5·%QOér\zÒÝ]|ô¡t‰A= Ç¥¸ÇZ)Ou“;ŸÞìŽ+å¦7;yéŸ@Ž-b¶š¸ZË^XÝr#‘; À"7ÖÐ]+>¿€®È¶ÃY[TåÄ”¢œz‡gT~; .®œ: š5û°_Š4pbpŒÔÃßnL â8ß°ó€ÒGú“K‹)¼4Ø´Ïýñ9æ¼>`†`ßý9„®yˆbßíµ×xí›”Aîð­Aš b¶0ge5Ñrޥꡛá¾#üžWƒ8ïíÑ–Ê׳ï:ÛdSç™üA°b˜Åþ’ Õr×¼#Øj¦\ø] œöú ò#üÂU³!욨—z8 fŠÝqr„ÂÔž­Žê–· ÚÀcECp8 ®“ðí#º–gcÐp^Gœl„éRbøíÛ;ÊÙTԧжÃ}µ5ø,ÚWw©éýí´ Vb| V|u² Î«w!_L2HOŒDy#¬ ‡ «@*€â;Çô (øÄ]xçPšf€åíÎÿ5è'ZS¤7¸kZ|Õó?ïw9Ç"·t9Çrc½cíMõÃ#?Sï˜ÈõŽÒXÞñóõTÉ‚ôŽ-~½ãu¿ÞÑösôŽù7Õ;Þž{½Þ‘üñÿÿzÇûZ½c-×;V×hYÿQ︋ëéÚZ!ÿAï0þ—z‡˜ÚUç¸6¡h´‰ã¨Mø ’ ª„Ê‹Ò] V ¶Oµ*ƒ+PepÞÉW´Ñ°zÜ %„]Ó*ƒT³Û¤2ž†*Ãh÷ü.*ƒåN\¬‚×ÿ*C•Feø,HexÝO÷jèãçé ¯vÕæþâçè –Îëu†Û~ñ3t]çÏѪ|:ÃNÎÐØEgøäŽÿ^gXyÇÿFg˜tÇu:ÃÅ®:Ãá.:Cä×é «»ê ¸Ng¨ü?é ‹þ_ë Ó‡ý·:àaÿ{Á}ëu:ÃË]t†]·ÿ7:Cñíÿ{Á«Ñ.wÑÆÞþ¿ÔÞë¢3üpÛ£3̸±Î0îj°Îðêm×é ‡ºê Û»è në¢3LQu†äÖ`aÜm×é ˜üÛ§3D¶þá@°ÎPÐHÇ|pÙ­¶¾Îoœ÷…˜Šsüä8k(]’X:¡|Ü ÍÉèöƒ¢PgéÊ1 «ÄQþDÃxÑ’¡' (}8?Ÿÿ€ÎhœÇ´â“_Éhˆ¡šs†"Ñ,3HK‡ñ,<DØ;{­ÑÙkÕ­^m}“ÿÁ]%Ý´º¨›«¶Ð…‰uçÊâ¥Ð¡šÕ4Þ »¨€ÔG½X…+.ö]ù;ñõÝ‚³[ Þ§€?@Qñ ñe* «‡)r~=}yc £×VxLæ9„Š }œ¥vw‘atÂ=+ aÍ>L*°›ñ‰‚íÚôHã鑉ñ›Ô‚ó\ìwíäà9>{Lp¢ Ò¿V|«§:£´uÞÀ‰&Øþ'–r\ܶÃ4ôèŸn·(tá‰w{³”²´µÚÖÁ£a‡¾éiçGRŠË™5ùmK~ôa ç­!@ø°²†#8ÇPZíª`ˇW÷—EO%”µ«eûC7+|åž\ùV~û|ñõüöX±ƒwct3ž;æqürÎÆÌ‰ÙJéþx‹}#+\´Yç-8ãõ®Ò±Öˆ:{ *QWp _ìi\ÅO*¥c |¬îþðOÇ£ôsÅŸ R(ìžï—Xÿþ‚’á™m­÷nTKßµÖ¹.)<Ä®µz¸ìšE ÂŒ£žRgLp]!Ãßý]¶°fO^š­|ÿ¤Z‚µÙCå, Cdý¤¼7AØõ8¶й±æÑ°ýøè¾ ЙAÜ£ÉË´¼k^¦y×ðê$KPØ'âÕL”6ÄUÏìÅÌþ¬àìƒï(·FQÖ¬ca@ЏoÅ3™ôQ_<–˜Ï¬7ÄÛœê*$VñT€á,/•眅$×Ý‘÷ºYp.€q ÅÕV'iïÍE2•qÊ¿ Üu> Ð@åX”@Á¯xb×¢ν÷ £í·&« zß§uãrÃók†þv.ôòËšîèƒjžï›ÞÍøÁK) `}Vy/’|×–*<íÖz n|FŽÐCqn_UA~œ‚L¬¿{>ÙŠ-å¬JIî-EÝù(–†z­Î$˥Ť'Ëɯ¦ô ¤Ð¦š070(5ÚIÙ›ìo¢دç¶ç¶'%iÁ*®RÑÎsýõ)š¢—ìÅcû¡mVì¹âÜCa‚3ö¿h›ˆ%@‘~ Š4þ–ææÏQÊS˜¤sÿ«7íJŽ P̶A¢‡X›“þ¦'.”ð¾ËV:õ)þ³'¡q„-_rá;KÍÊV£·æÇ–Iö|ýWŽÎ;™L…S7Ïaþ6ÇNüy(ϬdÚ|Ö‡{8ž÷±æãe¯c†%š/]¾äåÉÛò6dË©ëÓeÛ¡ ¯=ßk/Vš¢ Ge n/æ0 kP¬ÊöM²õOÑÃèØ2m |QúUO£k3–sãè¯TBÿÎ78ºø %û…Õ/áþmç »uÐUqCVfú.´Z6U”µ‡±£ úù}Z±{3é®Ò€i>HWA,[æIB!:â䮪1ÄHç8o˜´üŠ{2ž—+âÙÊo?ƒejÍý×C–Ҕ¿O$°Ýƒð¸T-1±€Ý]šÁcƺŸÏ±©(êãCA;‚ꎖ„Ü_âû6GÞz}àîm~1±QÞ&¦Þm]…«¡ã`iu|ã9åTà*â—rþ —È:v©…~×P›-߱ìÂòÕR£å+û ÐÆ„ÊøÝKwlǶ;NèâéEn}\mì±ñH»o#Tε‡Óxwa']Û}:ÿ­Jç>¿Ûû'i=…R•žÁè'¯9Mïà4½ÛÊônÆÆÜ·¡—÷¿§IÚê#é´Ž²ÇÕ(&I÷à… „Gâè$ò²®uqàð_œ’EDÕf•ªMô ÿU^·ú©Z;~#7§lLâ&›[.ò©Ãÿro‰½W˾bõíŽÃ:ºGÉåe¢~ko©w/¥åø¥iqD\3«p"7çZWýJüqTÄ€t^ÕÇ'—sÖ²ª¸zwNßõÔ~!0מ•G|à4|zÝxvâÚs!–Ïf Z” %ù` cêyŠ8æài°0ÞT'p•¹1Ô¶Ùq> ,BÛa &Ë3øÚ\XŠ¿èÌvÙ¹@0‘ž úĤñ¾½JnÔba—±ëØ"¤²˜míÔßòžÐ6pYeÅEÝ…] eYàdëÎWt¾‘ÉóõŽöЕ3äé×žŽ˜qߎ 0(òN¬ì凟=D+ýò®ì tÁ³ ù‰È)@¤ö îY¸Ó†Ç c¯²ƒ=òôAsïûààiǃ—]Á°·êhO1îÎ:u™‹†dxvù€¡dBú|qZïù’?“gÉõŒAãCÿ3¿Ž,&Bs{œ!àCG·øÃ<ëÖʇýlÆk7jذZ½Ä ‹:^Y°*ÎçÄŒpì\AfUo¯Õ™‚S‚ïÝè•æî,>PÏ)„Ù ç€P` ¥Îò´Ubh;ú÷œ3iû>ß’ãsÈV˜ÿ$ Â{HªcÁÚH˜Å{Z=ä.‚fÙ÷të «í ­Æ€_0B 71]²Mò »®âއáÉ;¸\)Gç_%¸ÖCC(BR7€<ïM-ô¦æƒLô{âÖ8<(Sþ?âÎ>>ªâÜã»É†l x‚D ŠÛè57j‰ÂÕÔ Al”€!¨ ÖZ‹\m)l½$$î.p˜œ-AzK®ÜV[km%m#Y°|¨¼E$¼Xv»4!°{ç÷Ìœ—}AÑÏý´ùc³çœy}æyž™3óÝ™O§KƒK­ ƒÏ§Ê5yc©/ø¤¾’Fº…-NtEŸÆ‹æJ5×ð†ó /›l-÷$Yëb]qª\¬3L#ØnYo¦}‚_i¤’ój,­}Œ7ÚtzÁÄeò;Ç]©/µ[ÖuptšuŽYY‚m“…H;¤4ÿDc¢Z÷¦ë¹x´qꇇ v¨4)©V¿°hœ¾Dw´ï_×1Ñ›®ÁD <âCbØzéÄ.þ,0C9©T“üõc¦fëªÆ°ŠÕ\P—‰i{®mbZø‘/å,ò³È×¾ó7}F?¸sWwðc6k5÷Â_Љàà_Ťm^Y­V~Yà”²š7«–Ù T^¡©(~Çw(INÜžÒž®Åx û&³ª¥O“øD-èGˆ¼04x‘úßã^W¥Äº¾ÀðØe¾ ëÂTn³SL5½ b®â) KÍönèÇYIýÑ+Ñ£ãò þUW8r«°.n H‰[mÖSª¾¾èšlsÄk¶&öX³§ø édŽ~Ã;&®éÞ¤´:¯^=dÙêÿEy‚ùs¥~n”£R—2—˜ÊxØR‡) aèeÉw ßï ¸^[È&Ë[ÛàÛQ²Yo­çß“ãꉭ£ê9=b©ÀybÅòÉ–1ÞZ}Žzì/<üjácÀôŠX¬³Fø"ÊôÛ¥árhµèìb•æ»X¥9'j)Ý„§ïs]?¾àß «]£ ÷×/DœaÍŠn©ƒjÇÕqÛ 'áYû¹!pųLÄÞ–dÐn®iÆbqí¸'¸·®ù/AQ @þßiM?hÂ’ûy©J]± 7 °`¿È‹•8«þ¡MŒýÖ{ )öá fm1ú¡„µÑÆ$I´Âl´‘±† ˜F¹*ØŽdŽÚE “x(l9C€’˜cÝoØÅá-–çÄ®ZiO }¡/píAsÍÐ{ÕAr ¼ÇîÃu$páA³\³¹Øï²›v‘¯¼1Q oãÌi¯¢ÓBÞJZ6l)ym$üô@´‹bUìàËQfðKZcT¼wwqóÜe*_0`,DR»-~®e3{ý#{£…ùßhÞ3ºzB¿¸Øø¶û3ýÛóŸÑžŠ¨1ó3c¯_¹GyEó+zXY&+Éb#Ü}O†(;L´ãAEû¯cOÀïuG²j²üß‹õŸKøm@_‰Ê,+ótàï¬Ã.‡»ì GS¸##•†G0Ã|¶AÜ¢,ýÛC¦°‹ÕY‡}])ê;¹›ÕY~>Æ£ÇcÅcþ|±‚{,J¯8¸²Qw#£ý“½2#o›VŸ¶‰¥SÔ¤x2×W®îÊý°\s¬˜2Ý¿ãšH$~]w\ÇY$"Eý0××~S“Sìúsua‡‘KÈ}ÈUÄüñ“贇؄BT ¦½Ü?:t›·ú°kˆVlÇ´íꀪ©î¾:×u}èôjFÒfÞ®t¹Xþ6×ìF¹Zx¾‘•õ¨e*oìÃNâ LºÃfã‰ÕÚ\¯ÿ¢¾:Ç>Ç>}º(¯Ã„ºsð¿¶[&pXУ•Ž \Ùþ¿ã…Ò‹)qü&,Ι¢¥§aZiD­@ÛVRz›¯S¨ôKõáö?^¾…\óÛÛ‹!•"o[ͱÀpÔo–¬"“Òó#ùÇÅëÎ0ˆ¤)ž1¤•Óq>«Èáv7ˆ•äŒu*ž—<+{Ù HYºò†ñµÌõJ½[5×”ŽEm¬, û‹) peZúX÷É4åIÌÛo,â2S^ý Ë|’Ugµc÷tôÖîm«:k²zu»-bî•?u AJþwFc~ñ0+ÉäöT’Á2ÔvÍqµ»ÝÁÜ-èP¨áùù7»Îe©Eü¶:Àý–ƒ';òæªnš±—vý–Ug2ìì¼Ë"©Á¦‚°ëÜüm7¼]=ˆ9žQ+Š Þ^øe~[ð–ÙŠòî‚¿\Vd÷´½N?9ÖqAÕ bV–³Ì1w;=ðøå„ý£@o€üÁxî+!Ú$qJ†:ª²c¿–ãçx¨Ù¶·ÿ»P¯\÷5¨\"ðª ü6•ëq='+×cTîi^¹óDåΡ}8¬õ{×`½ÄÞô`½¼+Ãâ0î>Ãq¸—ïR"±>ì;jâ^÷‡â^õ"èoxP÷BŠ÷Òo÷ÞŽÁ½&‰˜ñ˜î57œ÷zˆfjŸ3[e|k”ߢ¸/Ì+ž=9ô4ˆg`p_ÏæÐ €¦‹ã¹/ܾRñÜ—ƒ÷\ð÷ƒÒÀ(˜Î}ååÜ×Ðâ¾èi÷ÕMÜ’ѹ¯O­Ü×_Å(ê¡SGÍÂ%‚ûÅÜWf’e.ì´H]g³1÷UMÜWaîkëtƒûÚ“²tû`çžæ™áÄÜ×/ž€ûšNÌ}ÅùÝÉ£&÷uÊfå¾®0Âjö|èÙJKØÇkšÁ~­”ì² ü$"Ø/­ ±VÜþ•þÀ¿Zp[õ©)^üz¹Ž±›ºC<­}O3†/U©ù[¹Ò9mêÞºCP÷ÍÖ³Hm½‘5Ùã¥O’L‰>R¿Axmé=OxMˆÄ^ðÚÖXO'е/ë­p4†536Ö Àű#¬ä°… ;q»Á…}œ˜ ûäöD\X ŒˆkË =)s¹Ðq˜{Ràë[1hØ–GcѰé±ït…„†=*&pk³±6ã÷vª-õtËR2ʉxÒŠ'ËÎo”áu>ì"<Óèø0<#>ŒîXø0<°ðada‚ìn…cãú§/Âaõä7j¥h\¦QXɉ%]´H†ÿŸz¹øˆîZF>LGŪø³F…1Y1*ÌotVì~у{^Æ“kBÆèŸ4â~ZÚEüé’†Aw¿IŒ=Îz…”¦Ów”ÞàÆFÜØetÆ:fToþy=6 BwY3¾ªÍ I  0²V*h¤j¸®¼ èƒ6ÔB6ˆ£»Ãb¯hün5“Ç# Œd|Ý0—3Bå vXÙâó ÏY*ÃYv÷yD–Í5ZõÓz2¹y»VOÓ"²].D"MðüyM¤ÒwFßsIÀFÐ5(ÙsBéšñËàf‹2ô–Èk‚˜O$tæÅ\kÁûûuab¡4Š«!%åÉj;N%ÅÌ$Ugø?¸Ê`ªVaïi q±Ÿ•LP µòCô‰*j­H§Ró®Ó6ä˜EŸ¡ #$ÿØKôr 0ä(* 4Àmj-ØP§<´ÑÓ›ÂÑ„…ÇšÞãȧKw0‰5!WF*Ø-«T_¡Ä²j7Qi²ÝåĪQqu\.ªR'‰/Œ2gZIó9ò¢7Q¡¨h$_Ö„OÁ­ñ±8 [­µ( ÈЧåØ:’S?PZ×ç;DÛ‰::eKmEß^“á¿ûJCीØèþ¥a:¾¦F²þ1e»Õ@ÙŽú¤¨;r÷*Þïé(Û8Ròvïuaeã#lºä&KK³¬^îÖüêæiÇ4¬ ë«(ùÜJÒ'°uÔÜycT+¿­€Ô`¡³°Ù˜PÛu$$Ü‹¬óŠC IØ0´[¦i”S¹ÿ'ÜÅnÃîÜå‘‚íêÑê{D ´{±’Íý¢m’šÛ:Š„<šÄÞQ/Šqò£¿3Í[/Ó £Ô!Øm£ÙŒ³ðmuwî‘ÉÊ“8¨‘Ç’ øiGpõ¸Ú‚> ²“€ýÃh,‹±e+*Z@.ƒÛÜ ¢Ý°’H’ë×ZQJlHŽâ»{íJÃækyòZ–æ%m&Cø3QpÞl¬GmÁÿã0°¿£¾¾‘Œ¾æî*²Öæ%œh÷f…u"îc2”äA6Y6Í56Im©%éaçââÈ æ‘Ì#Ój÷.ëƒÈËÃ: ‡o®"¦áÙ5tXcô@¬¼#ÇhF®Á¢0¹ì°ÀäÓM1€ÉýVÔ¶ )›„¶5-¡£ Ï6Uk…à*U#•™’K¥´ÔšN#å"(?òWZë›h¤Ct7Lã‰@Æ••þ«rˆò@’-à•—û/ÈÑiºLÖL(`‚JWŒZÉÝŠ´íj ¹ ÏþTô•¸•¤xú€Ø5/'i&ãXG´<Š/s«'s/—¯Ý‹Ó, mÕÛß^’mrwYÂMµ{šô5åbU8.R¢Bj)E»Ï¡W™i(bî&îššŽQëã|'¦á»o_J2=vŸ£N ä:U£Šì«.•`¥ÆšPVO3wÉõ∛wj†²ú&ªF=%HëÂw£{Øcû ÔÌÂÝËþ Ìüm8ÚDÄ_Ó ÔšømêtÈ™¾ñÐ*ù-¥a­Ñ(² ¸9fz·-ȘÌÖ‰kö°æœð@dW^)Æ!ÂuOž*<]e è”lÚ©£ §GjÊÀ)íÒ‹‚¹á%ÃíEç3M´?"‰´>#,e ê"´œ2gTcúéÍ9ãjNR¤¥‡H;|ú'd0Ž.¦á‰€qö£±Iao†!”B¦,Á!tâŒ%jŸ\ÊÙÝŠÏ‘53=ö¶-(³rƒ¸n0I(õný¢_[;Ҥ߰·œD„-ý \Ëš)íN¥áWýf%e’Sü÷`^„Ò¦ú¸å’u‚!\nX®è ÏÒrÉòsi /yÂ6>o1v¼ÊŠ šZ6Ó©Ýë4º‡nìä}Õ–tÒÀdLºÐH‚QÑôñË“Û0´“J€ŸåŠôC.â°!²HâyDÃS âFlH*„.ì5R(g8š7ÄuBc«yPšƒTáÎÂØÆÒ*¨´£3‡H‘wIH2ðb¿©Qä5-(øŒ¨ˆcTÌç"F…QÕ&2"Šx€Œ¹SÑréši!†b2"\ÁˆldÕøô‡G˜Ì­¥æŒHÒ€ˆA'â!þbéDo8šNœH%¥!€(?­½5óÅ7ÂÇ,ÊU•2;*& CHÂ_=UQi­Tlªš÷x͇z% #ºhÕ#ø)Ó@¶x+®¡saÄÐ aó#|R½™T˜ jUh%]o×½7¨Fl`tFªÑP©[µÇÇäž$¤ñ«©†7¸T"+Øø)Pnxú´À¼>·Ù¢1k8ÜÌ(‡K¡ƒ‹7Btyd‘˜xÇ*•P‰ R |úƒH•egZ†¡ â„pøQ§–ÌñÂãHa9¥“MÊGãÇxÒƒ^ÿ ÝT+ÂYaGÊ * ¼£AÃHFUJ[ŒœÞ/õ!/pâÒcèO`Á1ÄEU‰‚¼",(Hüx“(HÜ™©xÚàO ]ôà8#wûFøëéjŸÛ‘&æ¾cºùöá<­ÞümybÔODä0Õ'´.!Ih¤yNái>~¸g6ÚD¹ïˆLD';EË|vªÏ„6çËÓd.ÜÝ{¨Qk~§žR·X±¶à3p¥S’iA0%I«>/ŠZàS4 ÊBçc¨ÉrKÏ}q`gX¼ÿPæF{“‰€ üÞô^·[+?ù›cy¡\âU® ¡©&…Å{ÇFHÙ˜¿ØAóÖÓ5¯»0Ž¥‘¿¤(qp@,i¨OÁ´Ô¶âñ(Åì åÏHÙwÀ’î¥ÉRRjq¸¡))QæhÊÞ.XJa¤Ú-öö‹‰áJ"ô&,¼––ù‡d1QCóPÀ+ÛÔ½bîFi8@îjRXBˆ½ Y ®|K2 {nöVYX"º°7,£Ò$À,ÓYMÑĘ!Ëgi™zÀ²pÍ,l™°öoÚ,µ—¼å·\>Êä’ª,êÈßcÎ1*¥Ž¦ž®"5Yšì«p€½”¶@/ؤ§ÓÁPˆ¹Šr•,&RZ ¨²$í#?£Ù 7½'Pæó–yì{æ¤ømû 1¸.PÞ'.“j ’?q³òˆïí;*¶Ñ0IFš ‰èÁ :H+êÏY§Ÿ¢¸l²¹‚'³(Žmö­€Á,=?s!=-6N·¹ašë^^­Ü}†’ Z-¢=AgÕºÞh¢ZÇ»Ž ÌÒ¬–´®˜jIFó×z~—óȯuA)¥L†,%K¢aˆ¿K”øI1¶”¦ÔL­‰ð®CÊZsz\Ó}1bØyÙ–ÂpÄ»Iî‘@çß°ù0ÿøõß…ÏóµìÁÏ%³¹ÿs ³ù .Hs l“&RTšee^Š,ÉÍ;R¬ä¦˜Ã5ÈÍQ) 7’rÄ̸zܺöÈ<}²Ö›’bY ë æöZŒý‡¹&ñÍïÃÓ?hضGÄÊÛkY ›èø&‚¾9V_cHs·¢6W¦˜'–wÂV-3Ä¢ÚÁ²¬j ”Vñ,¶Òœ?4çËŸYòÎO6iÎ_ÂÇÐNÍÝÔd°&$#°Î{É‘ÑS* o-¿Þ†Üƒ+9“­¨å~Ë$·ÏÚSIæð皥pÍe^ä“ô¼™@Ï$¿î«üÄÔØøˆæ!'N³ÙQsà 8< ¤À¦C†À4Ô¶jíê=Gc Ð(’,['ɬèC{LŸ4B)½!‚^Ë#Å  oZiSp ²>¢¢${¡þ€;lBÅJñývË‚ïÍ„š‹JÊ’+ì–…¢n){:Ñ…ô¥nÓl´'ÉÊ€CI|4õ¿¨X_p¦›’5Å«›Š@D7 mì§ub—xh¡×o¡»·øË‡Y(ÑëX­×ls]&ñâAѾ}:(úÅ>}}O‚¢Í·ÓuD¬ó7‰e˜%ýölqýì ~ù’|Ï5»Í^o~”§T_}À\ŠžÂæî6¥4\çG ~”Ëô碱ËÀ’Î4Á’VìÃè/ju˜¦øïì°â¤£>ÃL8O¥fd ¨ôï€J?·¶áGc¡ROTúpŒÿîÚq4*ÛŒb dRàOáh òY™€ÅPî Ç2¥7ƘýŠÅ”~Kì–L©€É]&là=µ×dJqËu$ph¯©Íÿ ýßav2£‰)-t[²@ñVîÅ{ÉÐf`¥HÄ–×ìî|^ß.;Ów¬‰2• %}Ê­ª»ÓÔFÉ”’±ÿ¾9ÀÿX)Ýÿyg´ )µû")ê)ßþ ¥¯ã…«<÷ÔTVÖ£9^›Rî,MÒ¥"ÊÕF>ç«;rÛÕ^^¢ö›–ÐéÅÁNî‡7Úi[@?Ï0è>`WoÝis’è£ÿ©Tj>Måÿ¸ðîÆa–4×”ß}H_ •ZµÈÝk¯9œßÖÈËÒîÀ½nõ~þä[•7|‚[¶ò¡Ó„RoÛWñ­]ßžo ¦ý øÖ®ßzNÚ¿’o5Äà[—†t¾uF(Žo}O §_tXøÖÛC ùÖ•"è[¾)J¾UO¼Ý{{(†o½]Ĭï°ð­÷†ó­3i:p¹‘X½ñ­6”€oýqo-Á·æuXæ¶~/øVHÀ·âö•Šç'Ä·â‚¿îL#¾ÓùÖkM¾u¤à[éißzŠøV$£ó­~+ßú¡âÕ`yEþ¹à[Eñßšmå[ÓDœÖ8ï|#¾5gð­WÞ»c°³³uR(1ßÚùž€o½)”˜o(F[ß·ð­ì‰ùÖƒb ×ü¾…o}ÎvF¾YZøÖÕH+n‚o½â9É·âv4ßY¤îHko÷>ghÈ â×ù5¡-rJâÕV¤îëj«U[ˆ¿OòÏΗ蓤BÇİ®Ÿ¾—€Z½6C­b“k¬ß$ŠõI8&¶M¶¾WÍ5(pn8fäwâ´…uôïëº%1ëÈMȺ Àºv^9ŠëD௚u¥g`]ñŒXWºca]ñÀº’µ¬+œœÁº.$27d°®6Šu•áëJ%&Ö•òLĺŠÂ˜¬+Æ`]oYYWdl²®xiA|þ6iøë7DZ®BJ‚uEé Ö5Ç`]/ ÖëªW/šuÅ]ɺâ«ÚüÉbv(ëJ%ÖU(…âiéƒ6L6¬!ÖMÖ•¼Ÿ`]QÁºâ[ëJ!Ke8+ëzoȺ"õdrùv v¬+z¼&Ré;£ï¹$`#¨`]— ¥kþ´ÛʺΥ æÅuŰ®øÖµd(XWŠ«!%uÅëz Ù@/‰uE\“uA­<“>QE­éTjÞÆ±®Ÿ 5±‡(ªê¿á½Ü’u%{¡ ¬+jFTµe4=½.ͺRh“uÅ%±®È•Q…ÀºR•°®×Qi²Ëé0±®ˆh°®¸ Ö•’£Ì™6š¤¹œ¼èuT(*É—5á3–u…ÊRduEr‚uÅÁÖµÀúùš ÿ¼¤Ö÷‹tÖµ–¬¿è,X×Q!Áº^Šb]¯E±®$dmeˆXWìË£zWQG„&ëŠ+ÁºBµÀº¢EÁº"“u½‚„„{‘u^Db͵$lXWä$Y× Ñ¬k#lNÈ`]4·5‡„|9‰ýÍnb]©Ì‚uE‰—i#XW„ÐYW3N,ë*0YWX²®$`ÿ%&늊ˈf]‘H¿ÖŠR‚uEñMÖµØÖii^Òf2ɺf†ëš¬ë»Ý늯`]É€)kɺ¦‡tÖuK·ÉºRb]ç’ô²B:ëJ Ì#Ój÷zBúpaDHg]ñ ¬+ž]CW&ëŠcXW‹b]3C‚uEL7Ŭ+j[Д2Y×8GAžmªÖ ÁU2*ªF*3%—Ji™k:4b]‘?±®¡8Ö5D¬kñÉ0À"$©iH‹¿Å^u2l²®dB&¨tŨ•Ü­HÛ®¶Ë¬+n¬«'$X×`]I°T@Ê­žÌ½\:¼vïánbêáßüc¾ [YWÒu…¥)U8.R¢Bj)u¥l5Q°®þn“uÅwb]©'‹tÖUx­•!Áº®"ÍX2YWĬ+Ü`]Qsxfsz%1‡‡)"_;e*Ê']X×Áº"j4뺒ìñc({ëN|zvG±®BÄ­(”`]¡ê`]!B°®tma]q}[ýëŠ`ĺâK¡†Û`]ñ¬+’/\å}÷„d]Qᥧ‰Îfšÿ¾d£Nĺâ®`]C‚u}j„κRa›PVïE‘‰u%Ï"XWªF=%!YWHéëYWê{‹tÖµ´I°®+©5;øõ gúÆC«ä·tÖ•Ê&šÀʺ '®³®Y¡3²®È¬ërÃuƒuEÖQ¬ëªÎºRÓ6¡,’u%zÅK†Û`]Eû#’ˆ YWdV„º-§ÌÕØd]q& #>ý•Ü¢$¦§K‡ixbe]ÉWJÖ•šßÓ„æb]ü©}r)gw+>‰u¥‚İ®¸'YWT”è×6 Dz®Ô`g`])mƒu•”INñ?r,Ǻ’åëª[®è ÏÒrÉòsi “uUYu%§R»·¿[ïFz» ÖmÚb ™¬ëNêú‘>~‘¬«P‚c0PÁºâ¬kwbÖÏ#žJÖ7¢Y×Ú•uEP+ëŠë„ÆÖ• ­—”áÎÂØë*íèL¬+Rä]’4XW*G”yM ëJæÖµHÕÈ|.bTUm"#¢8’uíÕ•˜Š–K×Lëí¶²®½ÒˆŽ‘áÓîȬ5gÔ@q¬+ž=ëJC€hÖ•Z‡XWª X×"°®¢òÑ•H@¥ÖÕ¨¨´V*6UM°®½ÑF”ÿEXg])K°®hsu¥‚u¥ ½N*Œ#¤³®t½]÷Þ_Ϻê*u«öx‘κ~¥"u•Jôõ¬«¡1ÍY›ÀáfF9\ \¼¢Ë#‹Œb]äèñé„ÂѬ«#ͺš¬k(ŠuõP:™4f¡ñc<ëŠA¯jOXï¦Z.ŠuÅmɺŠN–Ò£ˆ*¥-FÎ’uÍ E³®ºþHÖU%Ö5;úf‡ë:Rg]/^ô ÉÜÊºÒØŽ4Q°®ÂÍwv‡%ëÚŠb]ñ81ëZO’Až’uݧ³®H¬+2¬`]·óL$ë*s!Ö΂uE0Áº"]°®HÄd]ñë:.$YWH9–uýñkq¬+Fþ’u=Ðu¥)˜–ÚV<>몼ϺRjgd]‘(s4u¬+½Æ Ö•¦TÈ•DèMXx-b]i¢†æ¡ Ö•^&$ë:.de]q•€u½oCëŠÒ$f]iúˆ&ÆbY× 7ı®$KÁº&¬½Áº"`,ë e!Öu®QGÁºÊJIÖ•®ˆu}Õ¸PbÖUØ„£‘žžuÅ#ɺ"%b]©$Ö•&Ïĺfþ)šuJD¬+Mº%`]÷­g]Itv¡ƒ_ź>¿þ›³®?[ÿÍY×ë×G³®¢=‰uÕ«˺\Ϻ 늩V"Öõ½–xÖ•"YJ–ô¬+™R3¬+Â'`]çÄeq&ÖuvH²®PŸ3²®4Ùja]·[Y׭ĺÒ<–Áº>D¶<›Ô–"'d]Ån ë:SÊ3ã`]ÍÕ0°®b²6!ëZµ.žu¥e1ɺ…±®7®KÀº"¨ÎºŠ5†4w+jC¬+ªJ€ IÖÕœ!ÕëJeU[\¡3±®›_ýJÖ•fÊhî¬+’±²®ô”Ê¢³®sCVÖUÌd묫œäNĺ^ÿjëŠ|¾–u%ÇE#?156>¢¹È‰ÓlvgÔx"ÖãX×uüæ¬kí£XW*üײ®·üñ,XWWȬ(É>ë*Vë*ëj.*鬫l€hÖÒªÛäÆ)X$+ƒu%ñÑÔ?±®¤ÆtS²®¦xuSIÀºÒ{©`]…îÞâÿQ°/Šu¥õšm®ËÄ"^<ë2X×Ï÷éë{:ëJq;]GÄ:XWä’G* =uÓPƒu:¡e¶^_d²®¸I¬+-Å€u-2XWÒƒu%+‹f]éV,ëZõÊ7g]Ç¿rFÖUzš„¬ëÀ¸¬¾Šuýôåoκ¾ðòY³®$ Áº’Cµ°®3Bgd]K_Žf]MOϺ^øòW°®°8Ö5°ö›°®^ûíXW÷Ú¬+*r&ÖuêÚ¬+Eˆb]IŒ XWsÍѺJ=¬+ºæxÖµó¥xÖUÈÛʺJ‘ˆuýï—¢YWA{XYרÕašâÿÉóVÖ5‡XW*žd]ÏýÌÈ41ëzéKßu=¶ælYWd<ëúêšoÁºÖ¬9{ÖUÀ’u°AëŠ[ X× ×|%ëJ2´¬+1á¥8Öõýߟ ëz¼“[ÕþNS%ëJÆþ,±®ð¿ëJ÷—İ®?ü}ëzu,ëz¾Áº¾h®ßòcY׃gź¶%f]ÛëZTsžÿÓƒ}gǺq¬³®A+ëºýkX׵߆uýÙY°®Úga+ëúgÁº¶E³®8™R²®‡m_ÁºÞ#Xת÷[:ëJ“êóGê¬ëûî·ë*¶†ýBpˆÃ ¾p ÍßvKÁîêôFæXA¼ëî…_òú¶ª»ê"(‘«X¬”׌ kº$yÛ*QžçZv˜KÛ´ò†.18×1t,\›ïðlÝF´nð% ®JýÑž°‰»Új1mØÐ(x×Ë Þu“ä]—HÎu²üÿÉ»¶%ä]ò¤%ïúl³ç]ø¯ä]WoÿÖ¼k×À:ïŠòþ3x׋©rÿlÞÕúW9-ÌIg®œ v{N&û~N–ºÅH>±ÓÝ•êº`¼¯+)·=÷­ÜM>’æiK¹3ÝéÒ\—ÙØ€¡Ij*›èZìPKl¢sh±S-u²‰éC‹ÓÕÒt61chq†ZšÁ&f-ÎTK3ÙĬ¡ÅYji›8bhñµt„¶([{$[›š}sÕËÃÛNì¼ûžÍ•Ó+¦ñeòeñÒŒ`3s²µqOj£NìÊÿxö†ì~÷6›Ýñ$ÿT?_TýwÍâq¹nOg®H¯ûVÅùötoZ”VÖ_·ýÝ]TëÛ>+s¦Uô³!ü·V"#Ùø]%ý[7£ IçR·)ÂßU}]#y®¶¾ý™—òhmZ‡ZÒÏSaC¸cbeý—ÒΠûl¶žHšO­èUËú÷”ôêiñÎ"cé¦e%'}ûSÝ]‹Ò:––œ¤ä{yò7ò‚íçÙÛ.å%‰¤u< –ôRÊègÊjű·{Ì3×ÝÕ™IÓÁʕ䑑þšÏл ãõ{ ,ð¡÷2\^Yxça·Íôn]0Õ»µæBV:ƒMÉæ7‡ð¤ì®ã÷/¬ô¿YŽÌ`Kpz¤*+R•9}ZedJN°¥ÒÿØþþHðÀñR»Ýõ‘wë¢a¬Ô™WêøEîæáÛù‹P%wU-Áçý¿ZÜ1ûÊL^ÄØùx·‰‚¶—tÁèdèÙT~‡p“².ïÖª™<àc·9ûñÞä~3ó÷6u³ºý±VÒÅõ~°pêT®qŽM«>Xéð×GO̸3x°±ÒÿÆ‚päžàG\ç+ýOóï3h­¦rö½Ÿ tj§ú¯çaÝo¦ó’5É}OaUèչɤrâ•IÏo3ågŒª_£Óþ_™¯ó”õØP¿²ô'xYÖãªäavZÂd+ëSÙ Þu”æ¨SwW¥/;g¢g«+%R–Qõkµ#Ød…>û«¸7‰¶¨áÒš¨ù¿_Žþ§9Å|&15OºÄ}5uÁNïqÞ*Šç(®ÎûôÕsœèž_áWÕ‹ºø5œó¬ u ž©Äç`?ÿÛå;ïIw¶— ;ÏÐèTì è‹y‡å›ôØñÙE<¬FLŸs¡ÿߎžü iè‚ñ³ßÅ㦴üxoÄØã9"ySùË-áÆœ$•v%°ûës±ñ»ö£Þ»ÔŽ»·nžc£´æ$ùçëäî‚áü&òç¯="3VÔï`2Ùó·Wªq[•#[°ÅL!_OA”ò—F2í)ˆ€2úgñ8é„Ë“•Ü”—B¢ñù#í[>ì=q)d¤¬éÈ(Lçdƒõˆc¼ðEþïý¼Y¸jpî§ýô¹Ï:e¯Ù°¡¨X±©ýâD_pþ[†-èM+œð!UÎã‹]•ªx¯ã·Ù ”…«j½À½ÙY8ké¼pt¥dÑ»MmpÀ%.F>~…~*^\°ªÕlÀ{yrÉaþš§•­æ/uþÝãOƒäåAÉjµÁ‰˜tÚ·º8=ITÙÇ•=÷õv:0œjª,Içu‹äxWïìä½¢xÆèqFGŸ«¸ÛÓ… •'0üPÛ»[ñiW¾ÚPéT•Ö6²ª•ÞãUizį#8#8"ÿá︾_x³|t…ß(”¬tíîÙ8o/¿Hcx6´â-lzvdžcŽÃ?éH¯ÅRžô¼zw±ÿÁW®WòXlpï,hž²á»»Ò‘Ñ”Jî »ëtdÎ"ÿ²üþÈÆw1ãù Ò¾Çi·T.·‰¾ A ¤å°ü­¬‰Vú©íý?(V(OÐD†ÝáäfY°ùÑÑó.W7±ñ΂M\s7M´Œ#Îéú׌¢zòòÒñ[lÌ\8Ìã®÷E²²Ð3®@¹¹ó‘Eg-È yØÔ)³{y‰y%ÖÝyZ?£ýÍ Æ[ºØ\Æf­fÉslåS Pø/+án½³Ç[“¯ÑƆ~Éo)Œ4Êõ‚-Š·íÖÝàZÌ“ÂPã>A"[’‚» ¯Á»Í) ÁÉšI%°yƒT 7N»~íòœ¾}F{Úßæ &ŽaLV`*«TŽ¥ÃØÏùÐJMžÁî¯W›pVé²Éém‡g«˜!,\! Ó}ü%¾u´¨Ð&ñÌ£xÐ)Žån}™ Y™kðÿ:„'ðâ´pVµ FcÈlŒæù¸x¹É”­R…„@Ä¡`¼JoóQM·<;Ý&óèTn.m0—J§]œ½ªÑg3UoP£Å^>ÇOšßEÓaé¨UƒNk|J‡ Ó—®¿ˆ ±yNè×[æÏ»”Û6×:W5_¹89Vœ©ê•®jA/»ˆô¬Óõ!CÖDÚ6€M¾‚ëY¹¡gtÔwòPSϾ?ƒ ¢e”Ô³ŠUüe(¨±Y« gSçØ ¡qEk-æŠÖŽ9÷·“ua¡h£ E£va+¤¢u(Þèÿ rBBÆ\H4@ŠÆýù9*‰„~HË+.C uhà·¸_Áûoo„w%Ué¬âV½Æ¾£à×ùjÙvk6¯ÞV+þ¢–´¦œD”<¿}¼(æWÿÇÝ»ÇGQÝÿÿ“dIÖ " "ꪀ Ü‚€ÜKHäFn„;K²! I6î…›€$ȲSE¤”Rj©E¥H5 %€h)" JqC¨EôƒÑü^ï3¯ÝlB@ÛÏçûÏ/<žbþxJÏzÞhœ/l ùB¯®3·xTÌÕnÊázäÖªpFxz,†D×þIúú$"KÛË›‘Ð?Úý/ãî/Ñ\- ù7ÒbôŽËaa’X’6yÊ T¡û“ÌÕ>‘k›㢪ÎÊxÏÅß>YÐ4ÉÈ °PH©K§&‰¦¡˜½C%›M’Í&I6ÃÚ&›üm“Ü@Û$¨a’«'œèÇÔ¯OvzSû‰G-êUižHâ‘w¥×Þõ?RO«ÙoÊì$µ`·§ÔTµjHdÝìá/Þ§$ôÞùªúÖÓK£ê;W¥YÛ÷Ï®ô²*Pw«ô¢WÜÅzÅÕ^ò›¤—ïÓ$½äû+îMzzC¨›` †"Á|Âót³ æ^I0³l¨±7éei¥G}íL1ÇQ_ŸÓ“‰Š†ÈÚwe­LUpaÁyØ»è¿à<Žfò¬œI§<æšÚÜo ÎõYø†kžJ\ólhƕǼڷ¡æ º“<¦!™¡HžÚÆÝ õÎõÖ»Wû–¨Ù'¸Mê&Ô}Ê;Öè9–Þfc%¶^zÎT‘Ѫþ»ã®NÑwï¾{Oé™óÝz² ÷ÆÑŠŸ&ÇâûŃþé}Þ±íK?‹ØýYèëÃgŒs~xÙ»hméçÑž,£gq”ǽVÚr2$âíx)Ѧ}ûßý¾Þë4ŒG¹tÁ«ùÞKüA~c¢UùÉÅX)ãƒm7SÑz( !é·U)'45æú^HýÁß@ÌþZ]‹ãšWŽîœiÉn’ý¸ ÷QχYžjß)D¦çÄfÅŠšª(céÑËÃWxåórã¾á!šw¼!+æ@L•o”„‚ýléž÷+¢–œ[)¹ý£Š6]åƒuW·£“;E—~qÞ3å<êJyá¯tb÷šåÆ„wÊùŠô(OºÑ›Yµb…´èK?{®ô€ —öên¾šÄKÇîmÎ1Þ¤mÞŽ{“ÎUpQ¿»&´Ú úã={Â2Ï{&ÂÌç+R£<©ÆOªÍ}þ\éASElˆÇ|n¹šRoÞ†-9vx3ÏUtLÛýE¨çã°¤óÕ±òK-lÊùÒº(Ï”í¾ñáôñ¥ê=užE[«Í[ôkØýjîÑe1R¤šw¢æö¾šªêÐXtʦjó}ÑuJêÎ@¯W^f^~ÀÝËë®ø«kž·T,”!4£_»TÑæÍÖÒñúù•úh-(æ6x§lòÆuÄeG{¯×§º´Ü-½¯J¡ ¹j«v¼É;­»×,gY×÷aù¨7Ì›¹틤µÈžE‡<™«=S*Q:c]y†®¼ºŠ¯Ä…SØ\CµYΟ6«S–oÏI•ë<ßMŒ.ÿ4\ºPVJ¿^„|¼)ÉKº)^ —ñòãúo,\x eîwxwV"@ åõž¤åÑeÅáò’CdÆéø /·ü¸üCŸúÑyv†z—ú"¢ÿˆÂdÑòŠÄ­K?»Òí¾Ç¼10KKϪwoòüN=ÕŒ4._ØBÓôÆ$|)5W"³Tª{éåwIù«^ë;Ûk^‡Ë™jÃu§bÈ_¤ñ˜×÷ ü —{{Px–©3s$;º,¬…œÒuHZˆuÏnO‡Š¸ÌÜ ƒr¿ù÷UY®ba¸!æÈnêþò#ßüÆš÷›)öC6áü{’sò¥z`~§7N:UÌ;ÑÜ‘¾ÒÖþU~<þr5"¤{«ŒBGëÒ3À›Tåý¥ Wë¿RÉ÷‹°’ïCÑŠ’ûiHômÞ“ §¡ÌæTyJÕâU£Ë†È‹Î!]yÞÊ fìDA{;_“ªòê+“ ó&©sW¦’+.=½îsÞ² §ãkH0#=ø>ÑPò‚â9/š¼ÐÒ÷LÙéÞs±…1ŠX’þ”*ä#Ò¯ò>W”_§ló<+•’³¯*˜~ä¼C–/=- w| YypG$ÇñuÔÀç3½j¬é8Tõ”ÞgU%?‚øÏ<‡Í«Íen‹.5«V@•÷-™-ñ÷² 6ÔqÙ@\S=+í—jÕüT÷¤n­WŸ½ª¥¦7Kö}Ì]«·ÁF<æLÓß),å³Òúî¤G½VX®O£^óþJEøIW½·ZíjEÔËz§ôÃ`Õžt¥È|÷¿°EÇ~)qØ¥êòHÞ#^mxZÍ}“׺‹{ŒÒG³hK}ôjéXDxo½{?ZAæ-¾š‘¨Þ;¾¦¿WR5SÃTRIÓÛ³a–/¥Õ†ñ¾gN\©—ªéz¼y:>=Bo´—ªž¡ôJ¨2ÏÕŽ—ý‘¨Æ,zþ:ªÞ+ÏV­ g›Š6;½‘£a‘˜ùeXh§ÜÖª}÷=™¨ø¬µê×›îÞ©†‹¥nLByyE…¢~¹µm¯¨6}Ýš4_ö7ß×OPïÙ–¬šnÈߎÍÖ-­ÌÊ?о £¨Ÿ8¡öÉËê½ûgÑ©ŠÌýYÞ» ÊXaÞë³Æý å©y?¿Å›YÃHu(=×±b!j³/Qño×ohWR÷<ã Ä΢í+žÑK¼çJß5Õ£¶V_QnK—Í=òsîuÞ)5xÆ©#Za{ážTµFÒvìm öº ÊeôLY]ûky$gÊöºo»¶^.Ì¥™È½°«{)‘½<¯öR·YäYiƒÜ?Ze‘ÌMžjÏR•IþQ[ ¿þƒœ°BS9a_m×ô1^Yé2¤ßÙªÞi¬G¼Ý¢·Õ—ï/­ ó÷há9XúyXš7Ìs!æ€oú7¸Žˆk#7§6Œ ó´ 4ò=ÕÅïR–É(Õ ×ù–J®[ý¥ñWÝ~Üýcè$Ïyý^3ŠÁßHíÛwYÝ'þñ©ãÒ¼Zyã;Eùº#X'í[qŸ:`)Ïq¸ï„M4lTG[…£Íôy:  ;çûÛ`5Pƒž¼ÔO9Út[Ýqà¯àÂîªûs¥ÿ¸;zï(Q½ÕóyyÍw’Ï»Sîîz·ÉZtù½³ªü^é{ªòÙP&WR]¶ØæšP}$Þ2©.=Õ£Q„›k\‰Ò&œr^¿¨“’­ãŸW”ªòÌèî²|OéA£~ʼn,¹Â(7v¨þÞÑHÉ}½,D èáRSŸTS~ÒýšwÑéêQQêÖuWÙy S?ýº¿h`éêNÅú{Ó"²ÞözÕ€Aœ¨Á»¿ 9¶À0ðç–ÊÔz·±ÞíC¼Õ·y.NÆF}㨫«ô: a¦5Ì;&#ï¶—žCð‚{ þ(%FáðTRúèºUÈÙÒm—$M;y[ê:ù½1o–a÷ÙPOfMtÙ¾@ñêå!4s ƒ§ÔD—¾ˆyãƒB´^B„9޳µsŒÞHB¡—\w¨`„¥æ¿#Á8ó Œº­•ÈíÜ\än DnÛÒGjîèêrÆ% ÕˆAئ`‰8=ö>ñ–ªØmKŒ0Õ)u—=!SŽÇœ<å”sWC4zÍÇëÛ¬ÕÃ}ÊñeÝFïCØAQùò·ÍGå=¿DåFåT‰J¹%\Yé½iõb«1³ü€çîÎÞ¶Òb®n±“$ù½°«“óh2Êo½îmÞõ’ûbêþÝ3¥Ìi“ž %êŠÕ\âu—à‚5“løaµá©õÝ—_ôNÂÎãCÕÎ;ëûN>¤wF—Þ÷]¡ û¾ŸG ^Tæx!é-rÁ,÷@¼SV†M2J{z›Ü!i+©6ºì ɾ<$ÇÒšÐè×#elï½uÔß°¥<ïØp½T¼Á¼ ã`óê9aójo\ÊMCÈ;u/IlÆÊ·ÈÝž¤•µ¿V7¡Ö–×»@«S˜·…µÊC^rF/^÷¶¢Z-†=uh³¬.?€ ËÌMªÜð–¢rÊêY­âÒ}~-nó¨yªüÅ´è²Õ·Íó«yê씺ä^‡bóµRªäIrkîCØ@Ï1Ï÷aÓŒ•yÞôpÏúáÈý£°%ŸËPRd<ÆË¥p¹ ›¤ÿ®o‰wȵg¥]ädP?m(ŽU-§Y‘I_ŽÛgþuHôk}R³ªÍÛ‹N¢øÝi;o÷LÙ[º·Ç¼³Ú¼«Ó=æýÕæCò©º|!û(bN¾¥®Ž\ñ.|vïòÞ¯å¢@¿uW]_ú}¨G-=çÓÒªÖ¥5Wºí•nçÒ3ç=¨Aë]ÏîMóµy÷Jý4,9qÎWž¯k#äš>Ð0Æ\”Žçeþ;®¶•1õ¼.tµõNŠºáGds¥{v–ŒñÆÒÇ}òdÎÜ ÕS÷!···Äó‘7Ó(ÙpbwÏûz9ÛJšÔêb·Zuˆ¨R§ü}©G“ŒÞ%[y¿r0'܆¦Ré`\y¬^‡GжÂó¨Í窳;ºl—JŸêù³?¨>ØýÈû÷ájóÞ§%͇6+}à¨Dªë'"ÕÕ©Zúz‘úö+õ±äÏ×sÎ!^Ð$VIÉÕa\LRЇý¨×ï'ú+í(ÍŸÈêNUÆTÕ}éMBh—W›ËÖ©`®”Ðz’*Q<_'ÀeÿM€Ëà–ð,9MRA¥~&dëµ±Rñx>åU÷‰ÃnNËò ¨f©X–&•Ó£?2Ig~”¶Ïü‘JÒJ’Þ¤’ô±¿J’Þ„Ë!•¤QÑl­RIZwÕÉkÌöf&ôªƒÑ{ <—ÔÁlÇÁÄî¿R?U’´çßÑÉèº3|äXý®õ¢’jóiƒ„`‘¯Ú|î:Ñyúg† Qtž–ó_­¢3tšçëèÇ~”÷©GÍÓô¦KV~_‰ ©J¿öF)+üéêÊ#±S”wr'ãÎ|í½’ICCÎË­ú w]©g]^a¾Tz® ZmÔÈwõxÍ *é_òfrÌõø¬Òs½e(¼+?Ä|¤Ú|^¯å9Ò§‹]¿‡<™§=î¹Ú/_.××—æ¤zÐjæØÂïÜX FZ@îöå]·ã"Ö“éãÚò¬‚Ù'ý{!´2{“Žª"ä[5þÛÒ½½Õcï¢C¨®oRƒícŽÈ&͇¼æSÞÌÓjó§äŽ„¹&°«º'¥ m>5Ð|zNoì£ü@µù¸h&×S·OgÈôyÍíQyZyFÔµçbô›æÓž}¥ïrgbû3OÍ5z“ Lªq ñfžÂn°- ÇæC·ãÈÍ8œSj|77]¦~KÁ\ã•pùpYPÛV ,=uGwš nç=æÃؼ<ä5Z‘tøCß {ðÍ*щ¯XùóÞE§äá$lK_ ‘ì¹äùú;÷iìôC«ëwÖCƒ±£ê¹#!×O`XgtÙ‹ª¿TÝíÒmHKô lésÏ×·ì‘„³ñ¡¯ö+ùµ-sÍœ·ë“Ž?°Hެn»J3éiWǵ4–^ªCìŠ*­3Ôö†a‚ûÛìIª™xÕŸö¿ûûß®¯oä:ÿÛ߸a‘4¯«E®‡$½µò¼ãnúÃëQhYËLWDªoê§ß×g×;£|™øîKÁÿ“²Õª¸ =´±y{è·XC–탙ò£fõýÖmkiôµ=v¥>{¢·í†mÒóWÝB&Ê®ÝjÐ2êŠÐ´d¦ï»OÐãr“ܾº¿kšÞ¿rÇ&™vÒeªÔ;Á>uß…Ú¸¾¿ï/X#Ë÷6þŸP~rªû³@ŸŠïöWêëNhjH|fùÏ?\7柒,s~ó]öÆ(yp‹K˜àÂaóÕ-¢xYé_t’,ÊCùV&ŒùÛ•úêßòd?¨‚«R}Àìjµ9™Q÷mãþ@¼ºglܪҾWâVJ'è7,{.zNxÇ´*ØË;©½ë^4.þµqÈË-õ‹{‰œü‚n0¦úŽ•(¬C½šæ;r [wÔw1×òU¾‰¶©@¦ú^Är“²ëÇy=êß¿«åÐ騤œš§±j6Ú¼mWb‚)ÑõýÊðÅ·P¶ŠlPßo9¾r¢÷µ[))qò{÷‹ÄœJ™{T"B>êÁþ¡q,d=K.C@´ÀSò„å¬0_¸C5È<ïò”6¢¥qàJoǧ4\³¹’7;~e|kºôWy†¬‰./Õô;âñ«†íûüMFWëTßá“ßKHvuüšá2 £Ӆ놗\-|kv þU d–õôíä[wRàÏvTo>°EE¯’{9wJÊUÛ½9Õ7ï¤:‹2M&ùŸ×»A¨?¬†èwþ¢^'àjz¥¥1«¼>Ý5Øó£÷õs ¾¾ØFÌÉìÊÒïÃÑbŒ_oô¦Ê½Í…õ®õFß­²ƒ¸Òï£×dù"%Dõ“ÜÙ¸Añê²5•1ü»~§¾ßVu66áÿêݾon¾Rïí· _³Ë/Nt}àùÎ;'ª~®±þ!ßqÌï{éÄ÷j0ÅE÷éºW+ëÔ•xÛV½Âsî¾µ¾ß^|ñ-ÇRÕ-ö¾â?‰’e)Ÿý„äCùX~$ùð¯|X†T5øŽ)ÚT"íÞžæ…õIÜÿôöséctzJY’ÕÆ;ÑP~²z„Aåª[0ÍsÜ;ÚX~—®6Hîçp„òo|›ê»ð1"©î =ÍɳSme“GÜ¡áM¥ÑvˆÜgÀþn.=µq¾zBÒª[$²SÃ÷‡¿W#‡¤ìW5ý¤%ï ~5DKó½þ»z•·4n¢…jÓ……àÕGáF+ØjHÿã:ÛÀyúq¸q38Lª> 7nkÀ F‚»ÁÒÏ0 dƒ‘  ˆßÕ„Mé)©&gX„1Ü ÂÀ¡Æ`øÈa|ì/‚µ`p‚áÆþ ¸a<v à;c„ñðx¼ ž% ‹fjÒL½$Z†ß‹é`/ˆèaŒ¯‚°Îƾ`.Ø“mÝ"Œ!÷G{ƒ¹  Ä=€m€½ ¢;¶¦“>½±?|½"ŒÇÀŸÁ°­?Ž,y`,èZƒ #ŒgÀ~°¬sÀt0ÖlNÕâÍ‰æ ³V9 Û’Ç&G  ÷dý³0}J@Í´ã·À4]g&èô9˜,0&§ƒ¸D; â LåAŸM]5-uF„ñ… ×à…ÿ#üÛsZsw^ó¤ÎÔé‘ߘØv|.ÌÿiüÛ= ñ 6€*àÿ(ÀvÀ=…ˆ/ÚVØø{+ ŠÁóÀMû)iò½$§hÌéZfòØä”ñÉp¼ydB²9^‹OH3Çehi±É驱iæä -Ý<.NˆMÔ&šÓR´äÌÄDmdJZRlFÖ‘›6›h˜›š’ž‘–’:Ú¬ËLAòKNI6kiæñ ɘ™žŽ%RÍøœfŽŸ–aVŸ4ý#¶#»×Ò3$ï´XMÚ`S¢­Æj#ÍZÐj Éã2l-.1%ݬ¥`Ëڈظ±\`¯]3“2†bÑ sZ2ŽdÊÜÚÑÅ(@Þ£Ès`zI„q9ØF/A~ÿÅKqn@F)Ò~Y„ñ3_޼^†sZ?†t *ÁË Õòãƒ`&¨Ã=ˆдm™dq9lóLÇLw¡µÈå4¹ì&DdRf"¦9,óM¶",Pä´åà»ÕTdw™rìEyvG¡eFUÓ ¬3-&‡¥h¶ “M…7ØÌöœÜ Úš»Èe+´š ­…vÇ|“¥ ÀžcqÙìE¦<‹­À©%Ç&™å\`½b·Ú·Ë‚µMEØ«Ë6ÇÊ­Ê6s­Í´Sí8«Ã„qÛn®%Gcq:í96‹Ëš´Œ5׿~`ÿ3vw±)×nuªÕp˜9ù¦·Ã!©N-ÒdÿæyÅÖÙxÙ|'ìΔgs8q$ù‡%G‚&±Öø0ƒÖ¿Öñº \¶b‰~ä¹ú9¯>þØø¡&'Â`˳a)Ù—[?}. Už­ ¹Xkfÿs,›Šº" N—u^ŽÕš‹`XæÙ Ý…¦kÑLWþõÖW«Ùœ¦{ÑL´+ßR.‡5ÇîÈmf3±ñY±Éqæ¦ÇkÃ8y99V§ÓtƒŠÅ”Âb• ç:l.œùÀ¾~V@²P ¥¤5JΙÉÈÛcNpçåÙrl2Ž¥Àm : é£cSÍLnð4³>1±Àê°›œ¶þ“×lü§Y8Ó&{žI•Š#Íi¦¹6W>Ò )=a¢Ú޳©6p$v·#'è”fä[M)iñæÆ‡ B‘¦ÖV¶13«ƒhX?½ÑºÉf¬) ²!^'ýÈúE9öbòM㤚cÆF2‹YҤλ3(ÃêÑZŒ)ø‚ÚŠvÛPŠä¹‹r¤ ¹Nü7vCQtØ ççGb?=%3-Î|u$bSâ?hj}ùŸÔhå&…ë5ã/³hv‘}n‘)—É5¿Øt¸–¶‹£ùô“ ¥âPÏ#ú¶š¬g²:vÇ5ö[ÔL¹™RÌRà°Zrç›fX­EW›¿8K‘—ñæØÄÄ”¸Ø Ä©ØîP%<¢1fwØfÚ$„ eÿu×oœŠÊwwPR œsJZpÙ¡òŽ¿L‘Fˆd¢ë.à?þEôòZŠÕkÌB£7!ih þ›]Æ¿ƒFå“ħœ]—ÉZ”+‘òÈV„Ü^ÔÃ’;ÇR”c+šiJè•Òp~~rýk&­àøEÃ&!6YrÅ«C6àB+u‹;ÇåvX¯®Wüæ¢\[PêP•㈄QÓ¸ElbBFF¢™´$—öWôXf®­(×>·™í'¥WÅ”Ã*Y›¥?ršË”gµHЮxZœ½°Ð‚èPU=’ÇÜ@%hs©üôë§»°§é¾dóøûšÔA8lë<›Ó%§äšõ(ã×VX\€ÂU0ßd/¶5S‡õèѸîñçÖŸ _pTJ]d’&(β*k ÝÎ&­•@$Ì™(œ‹Šô& Âä¯Tô÷:û77M)¦ÉÓER2¨$ÙKê]ö§²Vp=-éå»”+H¾ØB‘d^.“%OrµÃ* £»i†%g¶³Ø’cí.DòÄ÷” c‡ê;Dùm»º‰ãDÊ‘ôŒ£’µš$e\p$^µzã3£¯åÏÈn§ªlþrõ'ZPþÕo’gºÈ]8Ãz­’WÿËò7»TÙ°Iƒ¡i3Ôš‹³•kuæ8lÅ®ÆEy`}YºçGo®Z®Ò,+@"þ©ðëÍO‰ÿ<$žÇŸZ_Tu ÿÙ6’ØÀlcl~JÂL¶ûg]§ø3ÎOCs\Š[TÓ\ñèñ‘*)ñ@¯í(%óP˜¨ÒLZ£"-hû×+Ÿ²ñ­ÉñõpX‹­¬õd}sÝܯ®¹fªŠÛ]¤ âéa·Ýu¢ý'×/ÆaÑ´~¡ÍéKù#KÛIJ†;š% ‡µÍ3U´o¡ázSʼn¾’f–Œœ¸ÆËÊɱÙU: ÔOÚ´Õ­Ž¦šHJiJß@£î­÷HÊÃþr¾ÊrumÑÌt9çAeœ­(SœR^¢DÓFØ-ªúP­˜†TÕtz±Õ!u˜ÞNk2ái~­\Û\šfÌWZ¬j¹Íð7´ù{ôDÂê´H–ÉAøÍN³Zú|'R±þe¿‹Ää¿tçä8uþ¬sÝ……óƒzæ ƒ¹¥¡×0Kªö\kž­HÚlò}®Ejœdý{£Tâ²»Ô&ÔU¿”…×OÁ¼ÆúM z2šDŸØÜö%K¸p‘“š¢ºwL¨t¶nÔcøOmEõ™¶d ,é¿J¹î4 G3kËnõA¾I¶ùà4=ÎÙ¨Yõ¹éN‚æ\ÿ %sÊÿÿáú éqBóI¯WQ¬ ´T‹ªÉXĨsjsú7›Ñôt_•@ƒnnÿͬß$_wW§7,=…€ËÅ(g명°™ÞdOêlXLNħšéñ©rôµ kØÝ*÷! Ï´²rÄÖœ*éÅ7Ž -¶É±© \3õkš¤¾fBª.ì¥ÉíOˆ×É(×=ÿqÁ§ž«öŠMOÏL2Ç.¶›$ˆÿ |*ië=™×ˆ? ¶ì59£kJfF7©ø5!Y&\7ôh_èûIM3§c•Y¹k{±d_„éºë79? YÓÖ8Ÿ^ë¯éù¼ÖTwúWdy{Cóòºá‹cgpQŽU¯Sš&°Ÿø‹kZü‡ù³¹õÿ£üÙ\v¼ªŒºFvüyáo.Y6Ú¿…×(9þþ©Œ™Çmªc®i‚—Î ÎÒ¿Ä_k—Á%†)p!ÌÕL¨ñÕ4M%Aë[šö¹9XÍí|K±?¼×9¿²¯F3Wu&™®Þ‡¿Sm2´ÕTÄ ñ¤©¤Õpn=ÒZº{KU„ ÕUeŸZP5œ¹`P:½:!#\.Sºïã¯ÁòöB“´iUr@L9äàŸ_aÜÿçª  úÜI¿¯ÛIn@]Ùal·5Âø \ Jø](Þòó¨éqi±q£µ)£õ»]êîkzl–YKÏ‘”¡ßÎjö†WjгÀm/Þ±Õ×êÅojÿ—†¾­qÇNÃí9ÞÆãm¶kÜÍ ¾eÇ»x ’Íãµ”D¹E—š(÷Ñü· Õí;ÿ­¼«ïó©ÛŠšöÌž£P2ù9˜Uà© ïÓ¬‰ hEƒy¨*A 8n}ï¿'ü½†íù÷¿ìX„q#ôQ„ÑÿùoA–éþÏi7¦÷‰«)ÆôÃðpù‰{OÛ‚xíÿ`ÛÁÈ6ýåGFìé¢Õ2“bÓÇ6S¾däKW,½kúÕœjoÚ ‹åšN.~T/]±ê:´J¿Z*2°>.¹œì‹Žá´ç¡ªvØMÈá.‘öž22cZZÆ´‘‰±£Òµh0XÜ®16ËL«ÖC.â‹Q,»´s,ó¤géõpÙügØfZU'i³åãx‹C®rùÃlR—TzÛ@]ÊÝ=§©a+‘Z›ËU`½ÎFÿ‹ío»(²àÊU]8öpXsP·=ØÇ:°wQužË) Há@­G¡%Çj/@ÄØÊräêC¾uÞ4w1.]ÕåO†¯éÍ ñ§ŽÏ1šÐ+Å”˜0" 利‡Þ%£î8©~"¶äï‚U瑸ÂÅGí&Í2Ù*ÙêOËHJEù¥ÉÀ›{ÿaìНÌó/SzY· NÚe}Zs¸‚¨ÔŒÆmõ(ÇCt 2mú”_W"Ó‚9´ìOre‡c?/pü€0üØàÌÓ~hXö› õdz ¶»Ûžj4^l²ŸJ~÷oCޝòIN/ç|g¯ÙVG‘µ —Ýé@ D’ÇÈØŒØÄA&}:*{»É^+¹”3rônô\+*þB©’ý÷®˜#µ^¹Ö9½ŠÜšf5…É`'¨…ªád¦úŸr­3Ü3gª-»}¶;BPèÚmÉV¤÷û[!‹ïŽÔüë»ìÅh‚ ±ê÷Nw±+RËsX­×\5-‹©sî HÍ©w¤Ì˜ïBž“¿¡¦Î1½Ý‘š­Hu,_=C¿þìj+Ê)èi*,´w$™§>›Ö™ªÛß¿t`†CjFl'%uZjlü4-))6uZRlö4TÌ IÓ2FËmLÔµœô]”o4ŽcÀD0\™i4þ"½©Ñ·Fy6¯Ø­—³…zà¤QÌ2ÁåÔï}:õ®Ìb‹>½7±sæ P¶ë7Iczëë;­úH‹B—C­X<Ó¿žE_¯Ð>Gߞ˿¿û‹Ybæä¸ùZn/×¥wdZrŠmj;…óôðÏÓædxá>ºõõòÙsî*Ôm³ôï«ö7C_Þöà€þš­¯ü×Oþëÿ¹¸LLA Yjáì õ†ï)i £’_ãÍ#2GMÕfjf†¾fŠ‚4*.%9K_j4B±‰ ±éhCÈMÒÄø”¤Ø„dù¬æ'©{§ÓPN¢)•œ˜®&â4§$fM“u§aS#e´”ÔŒ„”ät!˜1Qþ—½Æ"W…TMô þÎþù | þÈÏÁüÂ7-A»Íú´;á®›¯^VèƒéØÍøØ´äæ" ­Æøih}V1?!96)!nÚxsìX­—Õ…"ÇmËí¡ò¼ ¶º˜š6Öœ–lNôGNÜhsÜØiŠ• Õ¶u»Sëåv:záBÇaí%W-ÒKP±Åh|¬›ÁïÁËà °‡ÁG Ô„l-16yTfì(³&W.N«k¨¦ŸLì26-Ýœ¡%h¹ÀìÀ æl{í‰2ÅÒ\hÈ¡?ñ)ÿµmÝtF”üöS«7þ»©Ñ7öòÿ“¿ðã 7jZ+íæfÿÉèáZXпPL QãŠý7j‘j¹´¦òÀe˜fÀµyW Ê9·ašü}Wÿ]½V¢•|W¦•ܨ¾7üÓJÚk÷i t´êõ¥Újý4YC¦0\nŽP{i©Ž¢µv‹ÖKµÃþn@ÈnD(n¼Z{~Šn2G¸µÉ´†O~ß~ÕÑiê¨eIƒZâ†&Û>r‰›[ù)ºÉ!ªÉ´†O ë¯ùØh,70?‚“Fãyà<…6˜ÿ‰Ñ¸|:|Šp’Óþ_ÓÿkþÛ°K¼K9É–…úìÐï—5Ü »ö_ñÿ¸–‚¡Z‘þÁ9´Éò½cú<Ø·_ÿ‡ ´ÌÈÁÅÝÌ|Û¬Ù…Eöâ‡N—{ÎÜyó¤»õ»È)rN]•¨›éÒ•rÍé–›hrÕ¸÷lwÌÌ‘†¯lAÆ’&£t émAéYÂôb·«—Ýí’›ì[sjU4km9j³–Ü\‡l$ÖßK§îlJ[Y†2jæyÖÿ P}›ÓA·‹±Ùœ|[A®?H¨å8DÅßGÇ¡¸ZªŸS]çZ‹dˆlψXx¶?pþÁ9Z| °XHD4Íp;çë7FÕ`‰½œã°;=¸…[Ñì&‡Œ¯.Õ3èÌgã¯ÜN 76Ã.w3‹‚F·¨ñ0z<77WËÀµ¬C ¡Tñ‰mZUpd̉©Àšç2©hPá é²Zgki¸LèÚìLŽ ‘å°ÏÆN‹mÅØª>¶@ÝÂÖ‡võPÊpO=Úr±]Å–9vßË{ËrI8ãÉâœÙˆ–9[º‹1ÒWÐ?èHõïÊ™ñÇ›š#CTêdSGõZ[ª—D ŠJÈ•!3j@—Éa¶—t‚‹3ö 7 v¢uæôQÛvÎ/ÊÉwØ‹d`+gÞEÆSŒLŒŠ *˜â´dÕ;c— 6Ä­lØH#—Y’‰gȨAÓ†"Çã/‡LúYËÕÒm’Ǹ·@&Ä•µÃ‰s"Cõôcñ¯(¸’˜y+p|êNY£ÉNw± e•½#Zõñ„Mæ4®3¦6”g)´Ìo27–áó²Õ»´d=‚Ô=yôÝ]„%È8}DŸìTe4é-¶ZUá?Cþ¢l Ç´Šô¾åJ~l¼< Wmwºvo79ì2´Àe7åcFÐÁÍLGÓêsn£9éHµVS2ŒÊD8¥¹Sz ‡©!A9V‹ô²bÈ6''d«‘÷0Õp*„IŸá´ZŠóí2"±á0UÒt¦(éAÔN¼Í9[ ޲4 4See®Í]È!@ãQÂÍôOREfÃáåÈM¤}Ød @—lawXr²ÝE AÒdŒ¶¥qQì»_&›=ÇU ßÒë› *#pƒŽÅe®]FIÉ6j)ª$™_8Ã^€Ì§WB2°ÀTÁqúØŽÀørMYÕ“½>XÑâïDUמ¹ ÃÍcÕ|éE³ø»ÂšYJÓzâ3·ž’pÞ-=íêQ®á#'BJ’ÐÊR.ÿ5Ú ­¡Áb•¥ÉþØ@(˜¯âU/§U"ýßViÞHQ%ýc&5î87èv¯¦]«…†½ØÝh5©1­(ˆ‚s½=pâíúHm§š®5äñ¹*±F?úçûsysE€Ê³\_Óãˆ-ˆï™EþêÈÚÐó¹HGŘžÓwýÅ›çš+OqåX$3/c™½ªt„Ø)AAŠú@2[C9+|åøx—a˜¥¾àx^×Õk9óÝ®\}œs ;ü·}ž_§tÞ7sÁ°;Ê:a äùàIð"؃ᢌ_À—e=QÆö ' Ò@xxÁ3à÷àÈÅzŸÀçÀ÷à–w¢Œ&ИAæƒíÀÖ?‚ý` æI8Oáów ro”± øH“<þv÷€\õ Í_ômÜ ÷cÀd0 ”‚à5°| ¾W@û}QÆûÀ !,`ø%øß;Œ2ƃ\°ìçÁÌt|7Êxþ ÁçKpt5Ž Ù`2¦Ï—Ãð³` >Ûñù=pŸÛÂ6@øÓ®€èýØèÆ+x¬ÛÀûà ð-0"¼íÁý`1â£{N®çb“Ó¦e?سo˜ýôê¥î7'&dhÚô¡-ÕOÐm weß`|“&Ü`< [ácð‡šçÕŸ9O> v|>ôý|®ãþüÓ„zð5x{‚îK`#>oá²2½‚þ$YwKvãïÿ þp‡“zîw(¿ßDš¯Ÿ6øÞ˜@swð ·Ñ\\5Ý·0 Ì¥ÜƸ z897vƃùüô=®üÛû=>ÿ‰qu  M÷ß4LÍÅáÿ&nýë§ëíçZÛÙrsæÿ®î§i9Ån­þ³åÙ5^Õ£Ó —ñjR’µPÝDdêŒ lö™0Òaµ¾«.òB—e†Z[ÿšç”ïøë…zµ—Þõ¬>I¯§ôåõì¥=jN"?`.¿ÑŠý.£’3U¹¬ßÅÐRc3dX‡–˜0B:×ýwÀœV‹CúE,®|mÐ`-Mž©”›êÿ<–Æú|hgç`.öA¤)M65Ñß*AEÙÙ©å4éÅP—Ê|jnŽéÅí©Ç8Cî™ÉÝn¹_€`Iï?gé­QSFbºj$ù'«ÑüzïJÐT¹Fñ·HìêLC,éË¥¤›bG$øï6L—‰þaþ™ÇKô©ÿ¾¢¬“£©’çï¬@ËU· uë|ÿ“HC%B‚ãx¨và ];;õñKjÍÎÎn‘úDxPgu7«q$åÈå6†7œ¬æ"RÍá@´&óƒc¢ÑS \NuÆ4^J*¢ñv˜>z©ôF±jWê÷¥Í(§Ïi©šÆêŸüm\]áj|>ÒšÇl™öiÕ‡ëKóÒ­TÓ{±VãòêQÅ]ã9ÜZ‹¹rˆ]»ÉՀɿËA¦Þó:÷¾¿`ž ¶NkÐW5ú—ß'΋”;Áj”YÐ"Åù¹ŽF_‹Ü…ƒ°\çûÝ‘Wg>W/§Q]nY ý ¨!ŽõŽ.)N=B‚ÓŽÍâ ÃnÉ ŠfãV–Ñ£N?+j[’zÕÊ9|(×^ö¼<¹LÕQ’ætüºú5ÔÕëÉ<} ¢¬‚ÜÚÿxCñ0ÓZ¤ÚåÈê’i$R äºûœˆ9 ˜Œ¶–­¨}þ‡õe*ŽKºõÌrCQ ÄGs¶9N=á†S+AR äd.¾Æ¯Ø‹¬ ˪ .´qí¹BYX‚Ó£a\ÏUÛµI¯Üõ¶®Êî‚ÜžN{O•}5õ¹GLχzöÖfÊÍÍAsczÆJ 5A•ò@‰~M¨_@2iCä*ÓŸ~†ikàÙ½xꡦ¯cÒFW[Õ¬ê88d]5È'ÐÐ×L]‘jü[Ñ7âì¦11"–‹¤c­@3Mêìœ"wëf Žðw(̤茫|b¦wvÞ'ùR}ÓSDÝ>Û]ì:ØkÕ'¦®A™kEFÔçÌï†ÆKoö’Kìø3–ªr8Ži˜¦Gðÿ‹ÔxkÚ”˜<Öœf‘9êî»ïÖäYt[‘G)Ë«(õ¯jÒ è<$–Mï››/‡,‰O=îÐô☃l¬y½Gµ>=ûöìÓCëiNÔF%§¤™*ó™ò¸¯¦þïQhÏuK—8‡6ÔÿC%=†¹sœ}µ¡òaŸ/ÉŒKïÑ7ÑÜ«WÓ%Q Õ´tð2®¼XÿÏÇ}®±<æhC-Λ­ùÔ,} éÒt^kÇ è¡ïÕË”žÒ#¦wÿ¾ý{aJß^úôæfæÄ¥+_=£áûÕóRÒGöîÝ;ÿš[³an¿ëÎmnËãeàÀ´ ™8##4^R&ÈäÍM—ï i¸^z°™™²ó~Ø5ÐÜ&ãÒû4 S=òš›Þp$½¯;7æºs›Ûrà²óš^ú°ÿ5æa+=2Ó››™™Þ#6=.!¡ÙG$=Øÿ¡ææÄ¥^kFú5·¦b,ñªäæK•3“âRâÍ#Fa=‡júXM­Ð#fPÌÀ¦'Q¥‘ÆóÕ´«—itn‘P®:Ùø ÷€fãSmgVê™–%û‹in)ÿÉìݧw³á¡êCÊ›‰”ÿ?þUÕœ¿tE¿ÓTÇØ4©¬ó\ZдàÏÓlE¶F3§É)±ƒƒá¯qß«QÏvAPѼUÙ^bÜ´¸Œ ©fùœ™dNKˆ“ IjR\J"®éÔǤ”ds† Ü—ÏæôôØQ2-nZlb¢(56Õœ¦¶«¯Ÿ†ÅÔÖ̉æÔÑò¨‚Z76=3Íœ$OàkB¼<"02!.V£F±5ÿwáïQÆïAxM”±%¸ t1`ˆ X@qMT£ßÀ’/Òžˆ o$áœçŸ.#Z‚››ìCräU¿©õŸüΕ€Y“?Ù§\sKƒP^­ØCÓ¯·å/”áŒâ4¹þŽ2âÌ¿~—±ƒ[@OnOþÂx|7qšl¯U“ý·àvMþk:¯E3ÓB´æÿ‚·×ÔÁáÄÐL˜Zò3i.Œ×â?ÙæÏåZqæ?ÿ_Ó}‚>‡ýÚuæýÜm\‹¦Çqs`h2½é_h3Óþ·óþ/—oÿá×øì?¾«Ç6üý·óþ/—¿V úì?¿×J3×Ë?7úÿ®·Ÿ›ïü鸹ôõŸl#˜PºIùLõPý‘þß,“e%ûëŒàúBÊS)·Ûy¹a{Ðtw¸tò‚/yëðý@Þý%eµ O—ç2¨\ƯËhøA`†ƒ@`ROމ ¤‚4M¯²@6˜&ƒ©`:Ž^éÇÈò´ï, 7¥Î‘QöÒW$h2 ^FÅ/ ܃)K¼êfßå_äEb«4ýÖŸòöž5@ÞYõ ·VÉ‹*7€ç¼½g3¿ä/y˦¼Xo;ðìÔô_«–÷h¼ªÀ°ìòfãƒàxG€üLý1 ?È{b>5às ïQ;äwˆÏyiÀW@~*û\—Àe o[þH" •>päFS$Woµ­@kдíAÐÜ LàÐ t]Áý ;è zƒ> /è€A`†ƒ@Þñ=Œc€¼ÿ[ÞÌ,/Jòê¡, &‚É@ÞP2̹ äƒY y‰ªÈ«ªæyËŽ¼ð^Þ_³”€¥  ,òr6yмygó=Vƒ5`-x¬ëÁð<Ø6ƒ-àE°¼äU¹¯yEÚ /f÷õí Ñß{Tö€½`Ø‚Cà}pGÁ1 /T8Ny‡T øÈ;}Ï8 äõÝ_óàø\—Àepü$ó‡y‰w8ÍGyó|KÐ ´m@;ÐtÁÀî@ ïN»t=AoÐôý¼ïi†á`÷C£Á’A*H dƒ‰`2˜ ¦ƒ W^òòÁ,PŠ@1p˜æ`!X JÀRP–å`X VJðX ä-tkÁ3`X6€çÁ&°l/‚­à%° ¼¶ƒ`'x¨wn*°ìûÀ~pò¶žÃà8 Žãà8>5àspœ>pœ_óàø\—Àepü¤â Œ D– h Ú€v =è:‚; Ü:. +¸t=AoÐôýÁ0 ÃÀp0ă‘`4A2Hi dl0LSÁt0ä‚<&/ÀùE 8€ ÌóÀ°,%`)(ËÀr°¬«@%x¬kÀZð XÖƒ ày° l[À‹`+x l¯€í`Ø ^»À[  ì{Á>°‡Àûà08Ž‚cà88NOA øœg€œçÀWà<¸¾Á%p\?©øC„#ˆQ %hZƒ6 h:€ŽàN`÷€N  è îÝAOÐô}A0 òºôa`8Ÿî#Áh0$‚d Ò@ÈÙ`"˜ ¦‚é`Èy Ì p9`X‚Å ,e`XV€•`¨O€Õ` X žëÀz°<6Í` xÈû¡_ÛÀ+`;Øv‚×Á.ð¨{À^°ìÁ!ð>8 Ž€£à8N€SàSP>§ÁàgÁ9ð8.€oÁEp \WÀ@ª¡ÀÂD‚(д­Aд@Gp'0{@'Ðt÷ƒî 'è ú€¾ ?!`F€x0Œc@"H© d€, &‚É`*˜f€\òÁ,PŠ@1p´×ãâüƒy`Xƒ°”e`9XV‚U <Vƒ5`-x¬ëÁð<Ø6ƒ-àE°¼¶WÀv°ì¯ƒ]à-Pö€½`Ø‚Cà}pGÁ1pœ§À§ |Nƒ3À΂sà+p\ß¶·KãüƒËà øH£?@80‚HZ‚V 5hÚö èî&p躀®à~Ðô½AÐôÀ 0 ÃÁF‚Ñ` HÉ ¤ ²ÁD0LÓÁ ò@>˜ @(àsÀ<°,‹A X ÊÀ2°¬+Á*P ž«Á°<Öõ`xl›Áð"Ø ^ÛÀ+`;Øv‚×Á.ð¨{À^°ìÁ!ð>8 Ž€£à8N€SàSP>§ÁàgÁ9ð8.€oÁEp \WÀ@:>B„#ˆQ %hZƒ6 h:€ŽàN`÷€N  è îÝAOÐô}A0 CÀ00Œñ`$ Æ€D RAÈY L“ÁT0̹ äƒY bà.0Ì ÀB°”€¥  ,ËÁ °¬•à °¬kÁ3`X6€çÁ&°l/‚­à%° ¼¶ƒ`'xìo*°ìûÀ~pïƒÃà8 Žãà8>5àspœ>pœ_óàø\—Àepüä‚?@80é–^fygO+дí@{Ðtw¸t]@Wp?èz‚Þ è úƒ`†á`ˆ#Áh0$‚d Ò@ÈÙ`"˜ ¦‚é`Èy Ì p9`X‚Å ,e`XV€•`¨O€Õ` X žëÀz°<6ÍFy;2Î?Ø ^ÛÀ+`;Øv‚×Á.ð¨{À^°ìÁ!ð>8 Ž€£à8N€SàSP>§ÁàgÁ9ð8.€oÁEp \WÀ@:ÖB„#ˆQ %hZƒ6 h:€ŽàN`÷€N  è îÝAOÐô}A0 CÀ00Œñ`$ Æ€D RAÈY L“ÁT0̹ äƒY bà.0Ì ÀB°”€¥  ,ËÁ °¬•à °¬kÁ3`X6€çÁ&°l/‚­à%° ¼¶ƒ`'xìo*°ìûÀ~pïƒÃà8 Žãà8>5àspœò–ʳàø œÀ·à"¸.ƒ+àGéTÄùŒ2¦D– h Ú€v =è:‚; Ü:. +¸t=AoÐôýÁ0 ÃÀp0ă‘`4A2Hi dl0LSÁt0È­ä|0 ù™$3å.0Ì ÀB°”€¥  ,ËÁ °¬ŠÔû÷äïwôïé?Ð/Ñ¢wÒoлè7é·è}ôGôßé3´ô™É߃tÖÄéMü(]Mï§ÐéwéCô×ôúZú)Txéýô»ô{ôaújÒFèt8m¤o #ééVôÍtkúº Ý–nOßFw o§;ÒwÐwÒwÑ&úºÝ™îB÷¢ûÑýé‡èô z=ŠM'ÐÓèé´…žAçÐ[è­´v·®:”nA‡Ó‘ôt}Ý’nEßL·¦o¡ÛÒíèÛèôítGúúnúºÝ…îJw§{Ð=é^to:†~îK¤ÍôHz=šN Óé :“΢ÇÓÙôz"=‰žLO¡§ÒÓèé´…žAçй´•ΣgÒù´žEϦ èBºˆ¶ÓÅôôƒvÒ.ÚMÏ¡çÒóèùôúz!½ˆ^L?JWÒOЫéÃôú¨?ÝÝ£»-ÝŽ¾•¾—îO¡si+=‹žM§?¦Õ+ü…Сtm [Ðátm¤o #éé(ú&º%M·¢o¦[Ó·Ðmè¶t;úVº=}ݾîHßAßIßE›è»é{éNôtÚBÏ sè\ÚJçÑ3é|ÚFÏ¢gÓt!]DÛébúaÚA;ií¦çÐséyô|zý½^D/¦¥Kè%ôRº”.£ËéeôcôrÚC¯ ½ôJº‚^E?NWÒ¿¤Ÿ Ÿ¤WÓOÑkè§éµô¯ègè_Óëègéõôsôz#ý<ý½‰þ ½™þ-½…þý"ý{z+ýú%úô6úeúúUz;ý'zý½“þ3ý:ý½‹~“~‹~›®¢wÓ{èwè½ô_è}t5½Ÿ>@¤ß¥ÑïÑïÓ¥ÓÐGèé£ôßècôGôqúcú}’>EBJÿ®¡?£?§¿ OÓÿ ÏÐ_Ò>º–>Kku…ÒQt+º ÝžîHw¢»Ó}é!ôÚu¿n7=‡Öø{yèq}t§ÑétIgÑãélz=‘žDO¦§ÐSéiôËô+ô«ôvúOôú5z'ýgúuú zý&ýý6ýðƒº´“vÑnz]B/¡—Ò¥t]N/££—Ózí¥WÒô*úqº’þ%ýý$½š~Š^C?M¯¥E?Cÿš^G?K¯§Ÿ£7ÐéçéèMôoèÍôoé-ôïèéßÓ[é?Ð/Ѥ·Ñ/ӯЯÒÛé?Ñ;è×èôŸé×é7è]ô›ô[ôÛôúz/ýz]Mï§ÐéwéCô{ôûô_éÃôôúCú(ý7úý}œþ˜>AŸ¤OÑŸÐÚ÷ºBèP:Œ6Ðát7Z<ƒõèP:Œ6Ð-èp:‚6Ò7Бôt}Ý’Ž¦“èd:…N¥Óè :“΢ÇÓè‰ô$z2=žN[ètK[é<:Ÿ¶Ñ³èÙt½?ëu‡Òa´nA‡Ó´‘¾Ž¤o¤£è›è–t4ÝŠ¾™nMßB·¡ÛÒíè[éöômtúvº#}}'}m¢ï¦ï¡ï¥;Ñé.ô}tWº}?ýÝîA÷¤{ѽéºý Ý—îG÷§¢ÐéAô`z=”Fÿ‚NÇÒ#è8:ž6Ó#éQôh:C¥é$:™N¡SéqtNgЙt=žÎ¦'ÐéIôdz =•VºðB‡Òa´nA‡Ó´‘¾Ž¤o¤£è›è–t4ÝŠ¾™nMßB·¡ÛÒíè[éöômtúvº#}}'}m¢ï¦ï¡ï¥;Ñé.ô}tWº}?ýÝîA÷¤{ѽéºý Ý—îG÷§¢ÐéAô`z=”Fÿ‚NÇÒ#è8:ž6Ó#éQôh:C¥é$:™N¡SéqtNgÐYôx:›ž@O¤'Ñ“é)ôTz=¶Ð3è:—¶ÒyôL:Ÿ¶Ñ³èÙt]HÑvº˜~˜vÐNÚE»é9ô\z=Ÿ^@?B/¤Ñ‹éGéz ½”.¥Ëèrzý½œöÐ+h/½’® WÑÓ•ô/é'è'éÕôSôúiz-ý+úú×ô:z=ýý<ýz3ý;úEú÷ôVú%úô6úeúúUz;ý'zý½“þ3ýý&ýý6]Eï¡ß¡ÿBéýôú ý.}ˆ~~Ÿþ+}˜þ€>BH¥ÿF£?¢ÓÓ'è“ô)úúSúït ýý9ý}šþ}†þ’öѵôYºŽ>Gÿ“þŠþ}žþš¾@CKÿ}‘þ޾Dÿ›¾LO_¡ ¤ëiíoºCèP:Œ6Ð-èÚHß@GÒ7Ñ-éhº}3Ýš¾…nC·£o¥ÛÓ·ÑèÛéŽôô]´‰¾›¾‡¾—îDw¦»Ð÷Ñ]énôýôtwºÝ“îE÷¦cè>ôƒt_ºÝŸ~ˆ@¤ÓCè¡ô0z8K ãèxz$=†K'ÒIt2B§Òit:AgÒYôx:›ž@O¤'Ñ“é)ôTz=¶Ð3è:—¶ÒyôL:Ÿ¶Ñ³èÙt]HÑvº˜~˜vÐNÚE»é9ô\z=Ÿ^@?B/¤Ñ‹éGéz ½”.¥Ëèrzý½œöÐ+h/½’® WÑÓ•ô/é'è'éÕôSôúiz-ý+úú×ô:úYz=ý½ÞH?O¿@o¢Co¦Ko¡G¿HÿžÞJÿ~‰þ#½~™~…~•ÞNÿ‰ÞA¿Fï¤ÿL¿N¿Aï¢ß¤ß¢ß¦«èÝôúz/ýz]Mï§ÐéwéCô{ôûô_éÃôôúCú(ý7úý}œþ˜>AŸ¤OџПÒ§kèÏèÏé/èÓô?è3ô—´®¥ÏÒuô9úŸôWô¿èóô×ôúú[úè‹ôwô%úßôeú{ú ýý#]O«‡ ðB‡Òa´nA‡Ó´‘¾Ž¤o¤£è›è–t4ÝŠ¾™nMßB·¡ÛÒíè[éöômtúvº#}}'}m¢ï¦ï¡ï¥;Ñé.ô}tWº}?ýÝîA÷¤{ѽéºý Ý—îG÷§¢ÐéAô`z=”Fÿ‚NÇÒ#è8:ž6Ó#éQôh:C¥é$:™N¡SéqtNgЙt=žÎ¦'ÐéIôdz =•žFO§-ô :‡Î¥­t=“Χmô,z6]@ÒE´.¦¦´“vÑnz=—žGϧÐÐ éEôbúQº„^B/¥Ké2ºœ^F?F/§=ô ÚK¯¤+èUôãt%ýKú úIz5ý½†~š^KÿŠ~†þ5½Ž~–^O?Go 7ÒÏÓ/Ðï¤û¯ôaúúý!}”þ}Œþˆ>NLŸ OÒ§èOèOé¿Ó5ôgôçôôiúôúKÚG×Ògé:úýOú+ú_ôyúkúý ý-ý?ôEú;úýoú2ý=}…þþ‘®§åO³“¡ÖòL½ü¾‰ÑôçÒ¿Ðôñ¬µàŸšþúÿhú3èòü¹úíUnÑàpkHóϘËóå„èÏ”÷ ÑŸ%¢??nÑŸ¢?7>.Df||ˆþ¼ø”ýYqyN|fˆþŒxaˆþ|¸3D.\ž_¢?î ÑŸz °ð™è>ísùìó£|Ï<¯ä³ÎO_gù\óoøLóïù<óË|–ù5ðx¼ªùÌò|Nù$ŸMþŸGþŸAþ7ø„ S´7€›ÀÍ -¸ÏßËg‰{ðùá‡øÌp,Ÿ–g„Sø\p6ŸžÎç€åàB>û+Ïýþì\ÇûÿE=P%¨`;ËÙ*Š ""ˆbGª p pŠK,ØÄ®Ø{׈½÷®¨D-VÔ¨±`ù†ý9®{ˆI¾I^ÿ0øvŸyvÊÎÞììÎì<;ý™­ïfß;Ùô¦3;Þ ° ¬À6° ÇÀp ü n1ÛÇÌ®ö³¥ÕÑìgKê 6³ÔV–ÚÈRÛXjKma© ,µ}¥6¯ÔÖ•Ú¸RÛVj×JmZ©=+µe¥v¬Ô†•Ú¯RÛUj·:PW°Uý^W°O¤+ؤÎÔìPé ¶§«t{Ó-º‚é]Á®ô˜®`KzAW°½®+ØŒÞ×ìDŸë ¶¡ïu{ÐÅвÅ»ÏJÅ[OU1Á¾Ó²˜`ÓéÀì8]˜í¦³× `6šAÌ.3ŠÙbj˜ýåPfs9–ÙYNc¶•s™=å2fC¹ŽÙMng¶’˜}ä)fy™ÙAÞb¶™½ã+fã¨S\°k,Y\°e4fö‹Õ˜Íb=f§hËl›2»Dgf“èÎ콘-¢/³CìÌlƒ@³9Œaö†}™}ápfO8‘ÙÎbö‚K™}àzf¸“Ùÿeö~™}ßMfÏ—Ãì÷Þ2{½âÌ>¯³Ç«Êìïês`Ílíš0»–̶® ³©ëÀléº0º b@ ýÁ`0 |Ïlâ&1;¸™`.ÈKÀ`X6m`Ø̆-‹Ù¬Q[µûà ³KËK6hzÌî̈ٙÕu€°¶ h Zà0VÀ4À´-h <7hü@躃ž „ƒH bA<Ѐ$0 ÃÀH0¤€ `2˜¦ƒ™`˜‚%`9XVƒu`#Ø~;Àn°GÀqp œ@¸ ®_Àmð+xƒ§à9ø¼ïÀGP„b@J‚Ò ,øT¦  P‚š 6¨K`ìAcÐ4ÎÀ¸ƒ6À ø_ÐtÝ@ a D5èA?0 É`Æ‚ñ`˜ ÒÀ 0Ì`1X~«ÀZ°lÛ@&Øö‚à08N‚3à<¸®€ŸÁ p Ü÷Á#ðü^‚× |:¸þA   €!0å ¨ ª@ê3`¬hš€fÀ ¸€VÀ´í@à:® ¡ è b@H}A0 ÃÁ÷` &‚) ¤ƒY`.X¥à°¬ëÁ&°l;Á°GÁ pœÁe ®ƒ›à¸‚𠼯À[ðž~l³4®PèR  (ŒAEP TÕA-PÔæÀ Ø‚†À8‚ %p­'ðí]@wЄ€p ¢A,ˆ‚!` Fƒ0LÓÀt0ÌóÁB°,+Àj°l[ÀO`Ø öƒà8N³àÈWÁ5ð ¸ ~Àcð<¿ƒ7àøŠ”Áõ $( Ê‚ï@` ª%¨ jƒz °6À4MAsà \;h¼€ðAgÐ ‚`"@Pƒ> ôÀ` F€Q`,&© ̳Á<ƒeàG° ¬Àf° d‚]`/8ƒcà$8΃Kà øÜ·À]p<OÀoà%x rÁ cˆë”úÀ#P˜€Ê ¨T .0ÀØF  hœ€ h<@[Ðtþ è z€  zÞ ÄÐôƒÀP0|Æ€q`"˜RA:˜æ‚`X ~+Á°l[Áv°ìûÁ!pœ§Á9p\Ùà:¸ î€{à!ÈÏÀ ð ¼ïé!ËâúÅ(Ê€rÀT•@UPÔu@}`¬€-h€#hZ7ÐxoÐøÐt=A‘ Ä‚x I` †‘`4HÀd0 L3Á0,KÀr°¬ëÀF°üv€Ý`8Ž€ãà8 .€,p\¿€ÛàWð<OÁsð;xÞ H9\ÿ@J‚Ò ,øT¦  P‚š 6¨K`ìAcÐ4ÎÀ¸ƒ6À ø_ÐtÝ@ a D5èA?0 É`Æ‚ñ`˜ ÒÀ 0Ì`1X~«ÀZ°l.'|?Ttu ¨Çé¢3—„ï ¯áäœÜœ!:š¯5 _f·#Ÿ¿ÏFfŸ­–xÎÀó'qrCtâØ­è<ˆ0Î+::¦Û›ó×!Â÷LE×N’—Ô+I_ê祭$ï¶’¼£%~oIxoÉ~µÄïJ„1kÞ?€ó‡Jüu8¹‡}ONää&œ<„“•ÿcYtæ@Ö¶¯Ž¹} -rI~Ÿ'Çr²…D–óó:%'÷”Èr~^Ç_ßü5Züßç ò\ ï¯. Ïïçék޶#ü5A¯%¦½féu"£ããºprÛ+£ãÛª^œÜºr'{h‘Ûrr4'{KdþØ|8¹='w(€L¿Ñì&É·.Ó{‘ÏÛi¾= m-OŒ–ý-9™?·aZd¾lÅÉ^œÌ—9’“]99TKú|x¾S’O÷ [òe[a“Ï>1ž}>ñäöÙæ³Ï.Ÿ}b~ eöÙç³OŒ×8Ÿc‘ÛgŸÏ¾Fùìó´®Ëù¥ºŽœ_*{Èøµé¤évâüRÙCƯíÚäë4_ÿøú)‘åüR]_Î/•#eüÚtÒtùç©)ãçu|;Ä·£üµÆ·ôÞ ½?6—Ù/Õ5ãüÍ´ìçu||}ëÆÉõ9y'k{æGs‰_úl+}FuÌ' ޶áô^Å×)_"´«­%:ÚóuÕM‹®Óó:šO Ï»´îzrº–äË{@K–·èZKÒ¦aùvº£d+É~š'ßËÊûùkÍ•åá&ÑÑt¬et62:[§£ç†žþ\ÐãèL>¿ßŠç[zOs– Ç_ÿ4-I<7¦çÛVäósí.ñwøý%~*óÏ®äËß“Þö&_Þïé9­'ÑÙÈèletv2:{]C]#]cƒŒŽ³•½\y¬µ”ÉZK¹¬µ”ÍZKù¬µ”ÑZK9­µ”ÕZKymò)oáo÷¥þßþÛѰ|ÌFâ·•øí$~{‰¿¡ÄßHâo,ñ;Hüâo"ÕISü-¤:éñŠ¿T'=nñÜKuÒãϹT'-‡x®yý h¿Oú»ËèBdt¡2º0]¸Œ®—Œ.BF)£ë-£‹’ÑEËèbdtj]¬Œ.NF×GF/£KÑ%Êè42º¾2º~2º$]ݳŒ®¥ŒN:®Iu®2:7]+»Œ®µŒÎCF×FFç)£k+£“öã©Î[F×NFç#£k/£“ŽéR¯ŒÎOFç/£ë(£ Ñu’Ñu–Ñu‘Ѷ…íÕIïË|¿’ï3šý2?ÖÕ„!íËùyR²_tâóˆ¶çF¹ç,ª“{΢z¹ç,ª—{΢z¹ç,ª—{΢z¹ç,ª—{΢Ç(÷\i«¥¼¶ZÊk«¥¼¶ZÊk«¥¼¶ZÊ+Ú ÈéåÊk«¥¼vZÊk§¥¼vZÊk§¥¼vZÊk§¥¼âšrz¹òÚi)¯–òÚË”—¶ô>ÄéB%~zÏ÷çüÁl<§£×?ÖHÛ¼‰ß™ó«%~Ä#ñGIüôþÍ xIüî;f~<.J‹ž+?þ¢–ø52~þ}FŒÄE¾|ß1@²_ªó’ѹËèüdtIyb$þPòåyàýáäó1IµÄ¯‘øc$þ‰?JKxú®ÓF&žT/§‹Ê'¬¨çǰB´èåtQù„•¾ûâuÒc‘^WQ2:/»Œ.žùCµè¤Ç%·Oz|q’8j‰_#SVÞOãó×¼Zâ×Hü1”ÄïE¾lC$éó~Ä#ñGIü^?=?,ßߥíFÎB>o˨Ìÿ´¯cI¾¼Î©>V’v(ù²êÏù#Èç¿;½¶ùñIú\ËÏ‹ð$ŸÁR™G¥Ç”Èùéu#ñ«%þXI9¨ŽïAãKü‘äË6'V¢ó!ŸÏÓßWîüû0¼$:~ œÖCþþCûKü;ŸÉ1†3x¤Ä/måÂHÃÑãàÏ/ÿúO»ÀÈü< þ7hÊÉüû~¾?¡.'óÏ9y0'×ääڜ̿sâÏ%߯Ð6‚NçßcÕâd';‘/_&~Þ¼ÚÒãËÁÏSÑvn´••ÿMøró¿ÿÎΊ“ù÷;|[ÏßÇø÷8öœÜ“qrcNvàd¾^ðõ…ÿ}¤ïEÇ×#'NæŸñ´Íƒàßk›ûàÎÉ|›ãÁÉüœ.¾ åßïðmÿ¾ŠÿV9$ü;'þ]ÿ\Íßûøûÿ®²3'ósFºr2_÷»s2?·Œozr2ïáÛOmï®ùy"|ûÊß?"8™oOù¹$Qœ,½ˆŽ¿Oñ}ü8NæïÛüýnáÛk~NÿèÇÉü½¿WóÏÜ|;Ç{ðmÿ®¼°ž î[ëyaýÜ·ÖÏÂú&¸C}+¬c‚+¬c‚+lÓ÷gê›¶:Æ×%muæ[ëÆ¿­>ðuà[wm¿õ¿í÷-lOWØžîï¬oßZÇþ×uéQ ëŒàþ©:ógÚ"é\`ÑÖ ÁýÛêFáýKp…÷/ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7ÁÖ7Ái«oÿÔ¼‘Â|ÿÿηÐiwE¾ø+ª,"þÉì•þéôÔÝߟ"ëË?Iˆ Üß‚ý}ÿ"÷w°`bÜ"ÿôéÿ¸" ¨[)Œû5tz¢»û£È*ù¦qA þZ´æQ ÿZ¤ùÖÿÿºK&Â:5ÃÁ0’kÖŒ£‰°vÍXB„5lƃ DXËf˜L„5m¦‚iDXÛ& L'Â73ÀL"¬u3Ì!š7óÀ|"¬}“a œÅ` ÖÂY–aMœÁ "¬³ ¬&Â9kÁ:"¬•³ëål›‰°nÎV°ëçl™DXGg'ØE„õtö€½`ÖÖÁ…Jp±ä­±s!ÂZ;ÇÀq"¬¹sœ"ÂÚ;gÀY"¬Ás áÈ[‹ç@Ó·&Ïpda}žkà:ÖéùÜ$Âz=·Á"¬Ûó+¸G„õ{€‡àÖòÉOÀSðŒkû</ˆ°ÆÏïàÖúyÞ‚\"¬ûó|á°!l)œ¼u’tA1À–ºÈ[7I°ÏÎç­¡Ä>A·–û-)Œˆ°¶’1(O„5–*"¬µT TUˆ°îR5"صÒ9îtn;ÓNç²Ó9ìtî:³NçªÓ9êtn:“Nç¢Ó9ètî9sNŸ)ÅoXˆöœôY‘>#ÒgCúLHŸéÜp:'œÿöóíD„~.íßÒ~­ø½ÚíÛh?•öOi¿”öGi?”ö?i¿“ö7i?Sü®íOÒ~$í?Ò~#í/Ò~"íÒ9Ñt.4Mç>Ó9Ï=ÿÆüéœ`:˜Î¦s‡’Âë7ù_ÿ¤ð÷ßMþÿaûŸ×þÓñ::N'ÚQÒñ8:GÇßè¸o£ãl¢]2O£ãhtüŒŽ›Ññ2:N&ÚÞÑñ0:FÇ¿è¸ï¢ã\ÚÚÿ¿+ÿÂö¿ðú—¶ÿ¢ûð‘®ö¥£JÚ>g[JE¶O™O<9'ökéçwlÒ´ÿHúÚâ}î>Õ¶GL·8ó‹éW.@\>}z=‘Ù#¿x€EeÒ×7Ï5âksùÿWâþß|rC¿õøó‹+º"ýüâæ¹"âü|%.uâ=–¹äo9þ¯Å݇äÒx­óùk–¯¦ÿµ¸\)Š~íúʯ~æw‰ñ‹±¸ÕȧëSt¢½ò œ¿íçáÛŸ·µVþMü‘ã×ervüâ»”Ö2ä½·ýø¹Ó‘8z5qqañ$:¶þŠŽ‹"¡‘½"I’°Iˆ #qñ‘êDÒ+>(.‚G©£Hˆ:1>šÄiÔ!‰ˆ¦Öàq'1VH+1VH퓳[h +WÞ1¡?¼`”bÁ!Ü‚il;öËxïæ(Z-@Xli\G¤½`Hƒž}lªµÍ@qíR)Eò•RŠ8ÈE°=Ÿa ¸²€üW2„4²±½ àÐEº¥Àw 2¨ šfAŸwéZ°Ê_K)œÞ!ÍÚ(CSáxpçk÷L…r–"ÜN³9Šž`7PÎÅ~p(ça ì‘[#ä"¾Ïßå‰ïñÄwxâû;ñÝøÞN|g'Ö1ñ]hƒïB|Úùzt"ÎÞ¾l-ìÌ­ò/÷8GװλèhûHet@¦T:J‡¶ÍeòôNyí4:-i {[çuth'Æp×0º²:5és®jòd}ž¦£/¤C/ê"´ttVÓ¼ ²Y̸ñT.šw&3LhšE W7œoE×!Ö¡ú=¿ˆ ›½wÕZ@CÂä>nšŠyq!'g®¥SL†»ÛÓ0:4¼“g[ª§ru—(ñBMþeeª(÷ñì(•uónR¡%i¾TnßfBé¼ã„ì´:²M‡ÊS*Teb¸­2[òÌÖ‰5EÙiy‚YÞñ@vnz×N‡­å›w~Š òÇ·m Ó;eu£[ŠÉ¦)1ye/.œgù_NpVÖ6¶vö 5vpnéâêÖʽµG϶^Þí|ÚwðõóïЩs—üâ×Uk¢£ëißÏߟuÙ¶4ÛçöÑS-¾ a?sž£íº¢äçLÙÖ„m8¨«Â…-•O:Æ2ºrlkP€üiß¼Œ$}¦ï×´OÛÚw§ýúòÜ1ÑüiÞðòOJÓW$ê+¶‚{ ZO}…ˆ$H_12\_ÛK_Ñ8R_ѤöÖWü„ílÇDé+Œ5úŠÅ`Ø nöÕWLMÒWL¤¯Ð¬¯FöÓW¬Ã¶â8ƒžHÏÿküÕùÓ4¿%Ê?ÿÞŸûåò—Æ¡ùkKï[ó§¤öÎ?ÿ¯•ÿÏæÿµòÿ‘üÇCþ#Ô覯80D_qzŒ¾¢Vо´[ÇáØ&è+ŠNÕW¬ÙÓ~¼¾¢dêçñ¥×án7=ÅÊÙH¯…ž"¼n¬§P8é)6Gw=Å;g=…ØŠp•[ê)yê)Æ€žž‚.ÎSïÿÒ¬«ŽD“ëíìMÔAjâáÝŠDªéx•¸ƒ87ŽQ‘OsÎ<Ø>qn øí0~ÎÛ_é‚/ê+íþ$SºHü!ÌÍé5’0ÿ †!·Ëú ¿?€çŒ×é’°U1¿µL·äCõ ²ôY`Û.àÈúÆÈèæ^úz<1ŸT^š¿\˜~§;&žÊJ‰³’8%ùs}5«? q÷ò#~]ˆ¿:²oX|BP4± K ±ŒŽ ŠNŒŒ #þ~.DÕµ‡•¹C3óîD¡i ^øÏ‚¡RKMB¼eBDP|˜å€Xu®éXbaa‰Ô]=:¸Ø„ȤxMtXQªBé?¢JP~úGUú$04:06.LEÜÛz´t ôéàÑÑÙÏôèÚ¿swü¯öæ>•_ÿnéóWÉÕвàÌZG.ŽÖA£¦Oß#ˆéÊÑsuþ¼\J뾂¦¡ MBví|YLÜòϲìXÈ•í[ÊOŸ×|:V1Aš¾¯FM¼bÕÄOFÂB‰êL«øHâ”H°/4¨?ÝM7‘@·¥$„ÏnGO…6¸e´ &^AñÄ9.[èQM4qÖô"¾aq¤zþÞ±}‰kX ¯ ŠïOãÄç ˆA£FFÓˆa4fU“Hc'†Å‡ÅÓ4béé $&Î^ÄÇ‹¨‚”ª`¥*L©jÝDåÕDå«Tu&ªKU¨¥ª?•Då!îCAý ™ˆ]h\áý;}÷"Þïè{úXÎïÇö‹ó½˜Êí ŸæSÓû$ëç{Óôéý4‘ó‹ù‰ßHçVóyK÷ñÇ‘ ³Ÿ?.u>áøã׆/ƒt_1 i˜6äógˆVìxÄyõ^äóo?Óç8Î/îçÓã#ÑÍÅ翟ìËòçÇÓ9!äÓo ®ß(Î{weáŹþüñk¸cåÏXžx-aø2ÒtE[¾¬ü÷Nù2†ItÑ\º|YÅoëòuK,w"“Åst‘Oç—?±2ûùó£- þœi ãL>ÙðßbU±s£dr0'‡q2·lÂd/NöåÂtæÒ¿£LåPNîÏ…É/M1ŒGòãÂÿUeé"S.9÷µûýí2qØ öƒÃà88 ΃,pÜ9à5ÐÁ}DÊc`ª€ê@ês` ìhœè:±ð=@ˆ± ?RÀ40Ì«Á°{­P¹{¹¨ÞRë •AàÚ‚n ¤‚ õœ€è â@2˜ €µ`78 n€§€l0P(+è¶AŸˆí0l7Ùh ¨Z?ÐlYฑñ%ÇqüM2­tN®äÓ Z¾³ Á&á9ék¿/몧#¼¿¦áUqªDU/¿^?è¸ÙÚ-òÏNy驼Uá <*FäÝ=ãáq1W Pªü …¨¼å²ùjþyãN[µ?¿i;.3Uˆ’ÞÉ£åÿ†üéó錭_¦_ÐøtÌñ4‹ãáÛÎÒÃÍEim×ÐÞFiÝX­låêâbž–H<âC•¾‘1±ê„05‰‚Ï)4J£éeEÌìì•¶Ö66æ íílŸ­½àCšÄÚŠX;842·¶1·A§A̧Ÿ‹µ¥¯‹e€»•Ò\©N ‹W%Fƪƒ¢#ä 8>ËXågù7PúF%Z(ÛÄÆ÷ S'(££Ã”(]=Í­ZÛ+=ñॎê«Vv$´M¹ÃþTägòç~:Ú`Ú °´A(ˆß&Ô‡ämŸ×‘ðä§Ï늬Ó)RT·Xñ =ý’¥ J—1,[Îè;ãò*š˜Vª\¥j5eõ5k©jש[¯¾Ys ËOãéMš:6kÞÂIû°z×nÝ{ö  ïÙ;*:F×'>!QÓ·_Rÿ 24yØð#¿5zÌØ”qã'Lœ4yÊÔi©iÓÓgÌœ5{ÎÜyód,\´xÉÒeËøqÅÊU«×¬]·~ÃÆM›·lÝöÓöÌ;wíÞ³wßþ>rôØñ'O>söÜù /e]¾r5ûçk×oüróÖí;w½wÿÁÃGsž<}öÛó/õúÍÛÜwï?|¤'‡ö{Ä“DO:ÿ~Y‡ü·ç®Ñç¢rî2}^)œ»V8wퟚ»öµöÙHnç7:§íxöËÌ¿­ÖçdÞ¶Ûÿðþ//‹}òì‰ýmÿÔå'+¿ïêcž£K¾p:Õzï }ÜXý8}Ù•oZÜ/ÚN:K† Û<ÍBoæõ¢ï—±¼XóÑËSçÙºû¯¬=‘i2ÔviÑÚÕî{ƒé—Î ‹]GŸÛ?ÿrÖhKãr}®Eũۜ*“•vAÝg}íµáWÕjh\¥Ë¹–Ž¥ý>†ìNð?^áÉ›°ßêfú¿:”œýXýâä“ìÀW¾Å¾žYAéuô»^ñ¿õËn•6)6}z÷ô”&[/›VÝgTl+÷€»©{úŽ=Ü“ƵiÂ뺻2ªüXý\ó¸§TUkXš®·ÈmŸÙ½Ý/ÓW>^´kuÀß>ï~M+þn_-“¾ïøæÆÄÉëo¯Z1­~B¸Q·~©¥»îŒ\¹Æ%aXæÌµ­ª,sk¹°hÂÚñFÕJ¦¤§¬¹ñÙ=çíB*ý°ÿ6§óÔ¤^¼Y×—]«Rš¿·êhïÊ3ǘ0¶? ÿiÕÁmM²/íz¦tŽ]øØÜè_WûÝ¥êà'çÏ1«Róóš—zf‡«Þþ…Ý™n•Gu92»ÙTëÔ{ËJÔŸ?¿KäÎàý- '&èª{«ÊNÓ%5²RÊî·û©Ø¦ï²6\k±«¼éI™Ó·®{”óò}T®µgØ‹Íåšæ¦i¢>¸›fM¾œ¼dÉŽäáu•³ÂË<´ž\mÒ;CÛÞéCö¾™Ò0âúÖ·O·œ¸°ý"Í‘Ík£Gh:»¶Ûdr«ã¾¥+ÞÚ/ȬÓáñþù•<2Ç´)ëTÞ9¹+éQóù Vª¿¶¼¡‡ï„ú;î.+•¾tOj\E÷'WÏvm=õ¼^ðjóƒ‹^Ø¥v·:_ÌôâeUfgþWœÎ [£°½[-¼¯?5á¦Guw‹G~·FçŒÔß¼=e\Ã)w–øÇ\°Hè7ü}Ë3>ÖOØÒ~^»™W|?»¨U®ÉhþS÷F¾>ÛÆbJø¤÷‡ú˜\ð°ƒÍã‡æÞ¨<êù/s”=6¥Ûéì±»æ=~NÝåË\·›?=vKçcbò}‹±·R‡î1œûlùŪu—oØ>`ºÓwÆ]çv˜éZu£Ñ>½»kÊ/Î\XmxÙgCËå&ùiÊŠ‹‡.Úl=Ñe‡‰kXÇ¥û ý{D4lëo›>ÊcŇê; ªx|p _l>cYÛÇ–*;/%ê@÷-Jgt}ñƒ©£²LŠu½—¾êp)8{Ùènn©=uÃ,ïé×½ÑÊ#O.…ß{šÖ*ñûñ-‡Mz—1pДK&ŽO:?´í:å•q@àêèIï%®N\©Z·ån·¤®Ãv¼ú UlÎÎï,_Çk® wM˜»Ã´¯¯Éé™§<÷λæp²¯Á°u;ãrù[ôïùú‚çܘ—¹£ÆäŽèòÄè€Ë$§Åcm[¸ô?÷¶Û‹ãZ½6Ý|h7çŠ÷Œë½èÖl\@×Þ6]}G&}T4+ÅnнõnS'NùyçkGu¼²ôwoÏÕwR\»1¨—æÕýÏªÖØ9u[µ·£ëÎ=ùCì¾³µâb[¯©»6Ç?iòEæYÙÞz¯05þ5jü‰~ƒ›jô7*Þè×l8c|«2wúÔ©‘zñ¦¢Êݺ÷_-í–ó›ã¶ JfÓ–­¼¾õôŒcf'ýú¼²³Ú¹s É¢ÚwVÖ»5þlb›k|³7m¸§÷õJWèþNgw¯ú¼ãÏÿ:àÃÄÉUg½®à¬xâ×þ†_ûíëŒêÝ‹ò‰_W/×;`æVAWžž+¼óNï­Óz»í­Üy·Ý ªC®Ôl=èdÛjUîeŒ›­¹¾ë¢áNç[I«¯ï]ß+JÇthÍ2'Vìl–¨ê½æÒÝ G“K[|WgJZPÙÖ5褓ÑÃßx9§üëñ–ÅÆœ¿ûsDP£Ìbz%?:ÏYáWk½Q_o«Ê¦Ëhên^Ùu΃èvž&möÐyõ!«ÒCR/}˜Ñ1mðe/«êÇôF˜–¸°ò·ú‡&¶hÒhøûÌ–ËÓl¼ÊÔÝô\·é°KöÅT0ýÜŒÃ['5þ½`½·›Þ¶Æ£§ßßoXöøe³R'Òm¬†­S•X}¯´Þ‹“ÁEÇŽwˆúmVSŸÅ©G\*ØmZŸ¾T³g›ÏÊ©]9 ¾ñ1(ÝfyË®_=:âá«UsÌQ:VˆÐ¯:`[õ¸·‰V‰}—EWø=%·ßÃÙ®=ûij¹-!kƶ¿6~ÒÃÅ÷/4úeAèF§{'ÎŒÞÑtjËÁ“N<Ÿ\Û¢|v½Jówîþ~yµfšÆíë™é;T´4NV]Î2ož5òM¢ÅèkªÍÛcîçõøô¦74‚S¯ë;°ËX]ÊáüÂF)o±V½ÎÖj¥¢–ù Ã>[ÏOë´ÍÌzEšfÕT-Jº^¼kì¡+ñi[›ëIJzºáÚ¨rb_$LÛ>ðå£:C6e½šß{ỳ÷t›3º~¤÷ðxëA渑õnyzê¾õ—ûZíq8RùÔ~Eí]‡ÎlÒÛ¦Ù]“597&šY…ä¤Ç|0ïT%]µß±ÊíAÁÉú³6MXq¸ÑƒyýrõïŸ29:¹ý­y>‡¿˜ôÁG=)IW¯x×Åg*m±Ûô¨E)·ïS^9uéÉEF÷ñhvuVFÊã©—/]™v9ú„—OÍJ§ê¯»—;¾_/ÓãM6±È|ߺÞår—;µXÐêe×ǵÜOޟئm–UF‚yéé—÷\|¸ðaìŠÔAMkÆ&÷,ç‘0kàÄ)“Ç{Î|3ã즆÷ì?^‹ùÁzvÙé™— ¢&´8~07\U÷×á[ã›Îï{±™]âÒÙ>ïÈØ~»²[ô®}ñ½óôÕ•üÆz—°K+[ÔÀÉ·Ë%ƒ‰n¶›î¬2™d˜9vœ¡ß‘ÅÎ!fMo m6Ðeâã•éqáíUø7ˆÌ,öÔ¢]·]¿·›|}á÷3çý¼j¾ÃÙ¬6:©¶U¾sëü³ef™ïî¨ûÚ{¼QÊ‚=‡uÞõé{öî »½ËŽ÷Õ™û[³K§Ç¾çu°ßúÌwÓßâñaÔ{ç®oOs­þ>àÞÈ FçÈÎwÓu]ÝZ<üÈÑ{êy{W7Ž{4Úd ‰kj›³ºÁíðª¨÷)MßX4{Jÿ‡.oíâqÞ"Ú4±µAjñ5!Ù–'†4[;3ñþ›^I+«~Ô¡ÍÜŸ3‰ùÏ‹_ °Ýùó¶ó~Óó[–‘åXnEÃÍ7«lÞ4x‚ŹiSû.Ê\R´”2`ã;ûÛ7Wª»Íû•_ÉîͪW9>:V7ÔéåꊚõYÓ7ž÷"Ä¿òË,»½q÷#^¬füfáí«slËÖ©q¹Ìv•j÷|ý¥¡'< ÝtêYki»Ä±%Q¦”`ºâÌOÇ”hPùéxí¡•báè˜ç1dqĵ˳8´ßMûáÕX˜uYª#ŒÑ1'_$êSTáãBKÈÂâ˜Sic@ˆ»ÐŸ¦}÷TSB&ƒÃHc%¨cOH-þ#JÌt êïçù£Ç÷wƒÍ›_R±þ/¦n>û¬<…m7æ“ ÃÓ>-éP}LÛ’Š[íþ>J$ Ûn^Ÿü"ß’ŽÒçKÝèyŸä{~ùçŸÔ½¤bqà—ùwšùeœ^Ð%Î*©˜0ë“n ““æ}ž¿PC«‘¦¨I$l"çÉsRVÇJÇ['F‡îq$]Q³gÍÿ½ëŽ£ºï«Óо=Ö¶”e)8–ƒü,É2Ø„“túe˲-É¿°Œµº[Ikß/ßl PÆ“bRSqÁ-LqiœÁ¥ž”Ô7%“!-ù#‡j¥¦¡©Ó0 !÷ó}»{Ú»]Kò`džêÍ|u·ïûyß÷}ß÷}ß÷Þî¾Æ÷ûÒeEÕEËŠc¯ñŒn Y_ØŸíô¹råÊŸüƒýYÇSédŸ3¤™™EZDO$’Y-“Õ³e.Òff‚nN\Où3"iCÏþ-nÄ“é!më€(ž0³&=H2ýNétP2[Õâɨ%"#*fK¶Bƶ¬‘ˆjý±d¯Ó2p¥üvˆ<-ff²’UX¢?T ÕqÛÌÌ—D«"ÉÁDV»í6mæ`:ñTvH‹%ô¸ÓT ›Ü„æg{3Y3;(žx…;»4ªLÑi£(Ú¡u®l Ïíln S;úÓzœâX0KfÆ­± SØ7(‰Wì¢Z²w#YÕéŸØç¤ sO[÷÷ß_$…êgHÃíµî)ÒÙ”q’óŒÄyNâ&y¢>´Þy> ²o»ä½vw!õóO'íÛÃ'=‡­|_¼øô‡±O\j>œw5âàíq’62ÙdÅè 1váÏ}Y# V,cÜ’Z2oðÂ?£É­ä´ËÛº:Ûˆ%C^™>¸y”ƒ  ±=:‡íŠ÷&c"BhzF‹š}}FšÔɘwQxÐò†B%"M"cF…Žs0j6A‡àX›âú¦±mM›Y½×ŽA¢IÖÓj­"¦ß54[ Žå‘Î#C#•F ãœôGQ•}>¢²S úNTmç=Ò§²P¶ÏúN´ßÎ#:bªìaÐS¦õè((m]ÿh“ÊÞÜ4Æß¿cÓ`ÂØ–Bãa¡±–Bd«ÊÅuñah/ƶ …ªˆˆŒ–Í3½%iEH©ÉŒ¡ã3"ÔdS©dšÄm5³Z[xCWG]Cã†åèÃÖö%­íÍ^™Qñ)ŠÈ6d ´ù±¤ÕôÁmfÌÔá6¢›{ˆ>˜1Èe&m ãrfœÀŒ$*í Ê9B/ ³y>¼Þ!'ü˜’ÈÅkŠ{v¼Îå¥Ò†+Ûk'z›ü-m7špQ ƒÄaÑKÕé¸å–úÝŒ ® eÌ´¥ ä‘MbÒ€o;%…yMk¢Ölý"v^Þ2Ö¿NA‰:c•‘NÂÇ0›GƒÒVCß4&Zš%|ÃÒùÊØ…£FŸ]íþêƒ*»q·Ê¢ ã î‡T¶ ôè(ö§øÒö`\µ(¬Ì‰“wuHE;XÑÕª,?Pd­íé™IjҧéÙ¢T7ݨŸVÒx¿¼«8ÐÎÕz^ÚÀËxy¿¦ŽkK¸ÀÓz½¼ãÃÓÓ…e,™´ß`]ž>é+3ì+“žÝíò—IÏñéÙêáUž¾:O&—8kàjƒÙÌ­öP½VùËrÎΑ%l;PÚ+?ÎØ¯‹ÆŠ4í,…B’µÏÉîcl…Kd˜Ë¢“³:®ÖñÒVú‹ïr=—–sY|WWÑûp+ñü<ö6cÝ’§Ž,/µÚ¹ô*0yõ¬àZ`5W—;Xzž¼æÆfx±Ûxi×Zyi`/×Hwz–{ê·¨ÛGî*Î’\nåÒ:.Ú8[ÆåÍ\íä4?R=µ(³÷wŒté]·³Öàehæ2TÓ 4a{€ bìE?,Dv»Xzc7°ïû¦×û8[Bhu)—WrUì!_þ[XìÅ·Aõïs5`r-Å¥ÀÎP°‹³\îáj¸wpm Wû¹Õ— ¾QZ¤°{e¬â/q 5—ØŸÓ¬OÈ—ÅÞ6Œ²{JöDÉXÙV[“ËÅÿüv^z'—×òÒâk‹PôIΰA`—¥„]é]•ÝSy©Â¼: cÚM¸ÃàLSØo|ìÔĵ.Àľü8p=ÓöOo´šð´Ði—Ò¼,Kå¨Ê`Ï5¥(ç’_¿S¾¿8ÐÂåm\|-—Óâh•0Ý ùœÂ*óû8L £½}üÚË-ñêñw\ÝÁe³{ Í³\ÚÌå-¼ô..G¹„^ê€{¬É«‹xÙ2n×wòö^¥ˆ³®úV“þdŸ7ÀüW]ü«>µ|…Æ Ùçp{Êö-—}E;áj¯ºÚã6$¿íºõöBQ}îE±}(öM.Ó»AÝÀ¸Za—È^¿À0)ÞU„Ö5q5e ƒ÷à.Ý™ó‡}ørò:…uøôß.Îv8ýu¸ðõ ëñâz¡Ñ½Ð#­›«[¸Lö{ø¬°9ùö[C‹þG?½þâ"ý¢\NòÒAHÅT€A¦’žaúmƒ¶1_žÎÕu"xCR,ˆ·¸ÿñöK?Wï&7(Cø±q/°Ã3vG¾Ì»-„å/s˜Eù˜Ådâ¿ü ÛìÑËâŸ"}À¯Ëç¯$;ˆ¹ðIzü¯yíÚÎuöz~Ízج߉ÁËQ¦»Ba ÇZÀT×EcÇöÓtãq¶Â®öéߘw«m‹À]óE…µ¹çšÅ+¸Ú'lAsÕ«À s™ ³Jïmðv€w…‹·Jlºqú(xËóm°”³ÍB6éy#0å7)ì1w›HK(‹˜ J~ÓÜ!àn*öø;ìø[Äá½ø|†l%æ?às…=èõ‡nÂPíf`n~ {bĽGÀüôÊÑa ®,úó=`³UŠß\Ú.â±XçîPš4†}aÂ~â“›ŠÄ\ÀˆEï"Ò÷⢠nâŒÊv£ìñZ…ýÔ§ìâqÊ’®{QöÈ- ¹t]b•ÅÜŒ)“Q‚¢ðÖú’ê;†2tŽøŸ|껎fU¢²¢2Œöbn‹=O3¶ü’Â~-ĤÀ±Å¢¨=ÿ{øV…½^ˆÝ,†MÔ½Îë–}Yaýùþ…µ üaðSàwåó7Ó$ßÝþQðopñ×Ùe_ïxwÈ^>ùíqð[nWØ.¯oP\DX·t”±y 3Ø7ÆÙöðélöÃnþ®báÚ$åN4–tmnpå.Ür{ÎÎvyu¡n_çÄ„=Àѹïzq˜2“Î$ÿptFüZn%/³æ?ðèÌøŸxetðr Wfõã)àWã󇸌Й›‹*.…ö’gMð —[D˜·âp†v£Ì¯»d’ï¸Ô:¿Ý3ÿÒÒèãtí\6HeÑW‡P¦­Ya·å÷Õ:§/_7ø òùqÇn'Á? ¾ên‡TdžOòŽ9 ÓÀNÎ:Äbc†–b"†…¨ öT‘B»Ô S ¦§Uaû<¶ûj®]óÁbï8i€n¤÷Að-Q½ÿÜDüð´’f›w¼><ª{<¹ÍefêâfÑiXÕPyyÖ3ÀÌw0­ÓJ°Àziàu¯É·'æž%Ô‰´ ÿ(ø.›Q½këVØ÷¼sAno³˜Š…ùÌتè´@/ÝÎ5’wØJ]ÉÛoÙØõÎ|r ˜a`î-´s//ÝÆ-?>I/œ÷*lu!Ràh‹¹íïåÓág…¥½õaÁ¼UÌ¢ÿ®¡PÞj^J=ZgF‘£ùëLgˆý*‚¹ƒ·ÜEž¥.¡Í—*ÊíC¹CúÕ§\›· ðF.õR!¨Ü(w¬ïìÊQ¨3àGý õ¶yµ˜ h‰¥:=ã\ìá ;ékhSQ/¶áX#Öó²0/o[û:~c ÖÛÅ.½ÞÙù#kƒ³oÇ÷üÂͼ¼ eÞ›gă0—º¹Ü,t&=F ÇçÖí£Ç÷аoz {YQ»ú.§/äßã*\çö"Éaè½ôñXaÿâ³}j|{Üç´>§Ðz×} \š¾&ù…0I³cü ÉÏ"Ýhú6t{ãÛ û¥þÙ©*g£%9åTjuZžÓ¡Nà¶» ×å ·;Fjä¥ajÝôØ@ß©׿ ²ÊXg)v±ìÂv»ü¯e'Öf4m`w·Z¨˜09k¢ÖJØè7ÙãìÊ/ÿ®Â®wÏ{ù·„r·™`ûVn‹æìY–£Øw+Êíý®kÝ€¸Iq² ùG‘ÿsŸ¸öcÑE-BõÀ»¢’FaÉ:ϱe¾ˆ}O_½æ.ûs·–rŒ]dûbm^tÏä$äË/)ìÝ{W’ŽIº•ËË…YSâ/9ÙÇ\^áHº‹Øwëåе#ÈTŸýí1eêÓ`jGƒì·>¶ÀÆ6¥,ÆU¸+b>pì’Ô•¹˜´å«~ds|ÊÓ‚JÝãÌíÇ€íy+È®võã ^.ö&'À;ñv0ožräìárŸhžAá×ZÇ”£ƒo}'È>òÌÙÐÂ]Â*æg&ìÙ¯<ØyXqoتA–,˜ç×ÚkÚ=àï_Ïçgœ½ù!ðåwƒìï}ÚqöØ,¶Ø÷d­µÇ(ðm¿æíÍ-ÝV‹µadl óXNu\Þêè]Ìò÷‚ln>F¬‘‰ßþ0ø÷€Ä[¬Áüïù¬7s–Ê­ø¯ û†®ÃÞWîmfdûà¶Š…š…npOzqX owÚÇ®Dþw°p]¹>×~ðw€ï·®$¶€üNÅm0áŸ1`Êd³]Ýö·ÀSŸ¹4OO»_S¼,.6Uº}å0é²NeO»°Í¹{Âð¸²&Z8 ì(°Z·Êž÷ʽ›—Årr©]êUè£í*ûW/6³C.‚”˜0L›Äô$î¶ ì;Tß{’_q•íi‰"Írœß®Ë.Ao`щ¿—îÿø´8cš®ÖM/­›^V7½¼þ–„:îy@¨Ó¥¤C@ÎỗlDý{Í#Ÿ§rÍŸ–ÚÏ(†–ë÷,a*M¥©4•¦ÒTšJSi*M¥‹5ío˜>ÑÏdŸ—T¡ÏÖ¼¹E¹ÿS˜w­;c¸HüŽÀgKÆ- fkÚ„rÚÏ('pŽåT×LFŽ:‘s^eõ¶J½ºêÌ6RlyÅ®¼òBwÖ{¢²O%ÒGB÷Úy“Ñý¦‰t¿¹¯ºŠÏ÷ù{« 5*qôA?^R(:Z¶œwËdô™9‘>œ+9µ“²ÏÜ åÌ¯šŒœšß—>³ZÓi#¥ÍªÔTÎà ¨=ópÞ?¼Ä•g•.D[Imø»{¬ˆñ3üy:ŠwÙ‡™ŽŠô;{œWš5gôq¿qîŒ×€]«G6jýXÈ®™WiΛPöU>²‹'”]][iVWê5UÊŸî#ß/®ˆ{CÃ>q½bÅ•…Ö¥¸òòeœã¸:k•É&Ó-jЖD?½Bn¤cz6kFŒYãÕáøÚµ®¼q¥¹$¸ÿ'†4\jÙeÞÙÅÉbmì89KÏ&ãšõ½¦Ñ/[Ó Ù“jË®<_)^mQ­¶`¾CµÒnÔ8u7o¹ý7o,ÚóVžMà_›`Ìž²æŽyprL ÕúÞõ>yî1êä]*Ú;ŽŸŸ«þԫǵŸ£Ï Wž<®©™ìX¿Ò•÷ÉÆzͤtÿü„º×Nj¼q"9_ž«9»zRkµiÈñ–?µv. ×uÕI…ÿGà|$ª¯1N¦iš]¯f$¶˜édBœ™Ú¢§MqÞ„{ˆlˆŸ*£Äcã½&ز¶°µ²½iYÇÒº®®Æ°#·ðȨ–+¿u(²)Ù×gI°ó̸ÞodD–uM ×uÌÌfc†‹ŸIfÓÉÔ-¤sé²pcgeîœJ5¯áµ•šý‹ðšøùÎ=ŒEµ.®uÒ¡Œ¦'¢Z8‰†&´¥\kѳñsÙõi³@kk“ƒ˜tìÿ–`m줦kÍéä`Š^í•"ñ˜hWDüª$µY³“¶\OëqC¥ªÐ+{+#•â¿ÚUöY½²_ÇõÙŽœ3®öĦ¥rE!wµeªÜ”!NKé‘k*ÁM,®¾4™Á¾>3bR'š‰ÖKh1tŸåc)[_ï‘O]f&¬ƒ»½zÆpaã¦8§mš³EÌÌnMçºptZHðM˜8«eRFÄÔc¨‚þ{RŽŽ<™t›V!žA‹ßÐ<»TØQ“Ž0Û¶Ž%ýfv0j&Ð:…ì×N›!ß6ú„‘Ö#C‹„Í»’YI Òg(!.V×€‘¡#Ž‘Ø`”F‰–Më‰LÌþm] &âC‡¦C±-$¿CÃks—ÒRizÚÈ×X§+-; ßXË*¥Î¡8z#ÃR‚tÐú’tˆÙ:Ñæè’·n‰š™T þOòæL:Áfjhrr0 —tÅ<džôýb¹ïá-o¥®8´}¦[RíM¢+£’±ÍÌJ>µþ¾“3ÐÑØ,‡7Jcñy¼˜ì$!G6…=‘…“ëé´>dÂÍ&“Z&®Ç&úì ¥ÿ…Ns/´ç$ ß>1泜¬öÿlÆBX‘©4•>U)yÙÎEZ‡O’*Ì3ß_pö¯%®<¿{iãÉŸsÎ4õOÎÚÞÙ“Œ%Ši‡ë%édýù¬ŸlBûö³ø¹è‹, ¿òižÿ4PuUU…>o~å‚*ÝïæœT¸¾Á'Ïú”Åo'äûx‰¸Ï}¦úWëé„øá”ÆmØÁ¸v‡šÙŸH¦¨µ :éÂöÝͯ=rûͯ]îÒ¡PŸáÛ_q=å½2æ¼)8Aj^êŠ!öýŒO_"û ¿’Ûˈ½4ýÊÚÄV/Ò°Ëw& î…øcͱí‰éé~ç‘Cèüö‘¥*Ã?½ñh*ýÿJ)Ϻc*]ºÐc½¶ág3ZC®üTú$‰Îy§&DM¥ÏjrÖlôÛÄ‘ Ñ_"ߟ¯›Ë“HŸvû]ìIû„åC7ÌÖbfoßÜ>397’Èšý‘M<¢,¬âUJUõÜšª¹ çkU ÕÎ_4ÿæ\¹/Ceµ ¹ Ù ëA×€®MÍyVeW€.ýç•ýô2èYÐP(’@#Ϩl]*>­²ý aP$FžÂ5(R@£ûõ€4Ð蓸…@hä/­i Ñ¿Ô ®F÷ …@]?kP$FÇ5(’@#ŽkP$FöâI ‘oâI ‘Çp êi QØè7°Í› €žýh´]þW*+•}vú•½ ú)èG —A‡@Ï‚vƒîEA!zçÛ¨ôèqн }¶õ€4Љç ƒB ‰®¿…kP+HNþ5Ê‚F@O€¾ $Ê;¨²g@àHýûs*û!h¤>@{Þý{gE•çñÊAú_N"G@dZ +"t:!`8(JDtP⊓N äœ#Ž Ê(.ˆñšEe‘Á ámXQù¬\#‚A"" ë!#8Ìï_õªëõ£AÀù8º›âóèúÖïÿþï¨WGWúý+ˆ@‡”Ô©Òª(MKp^øo†á‹K‹ÖZœ¦k¤5МZ”/"ÿ&i´+´d­¹ÖBk¦5Erk µãÝ—||ŒLZ\P’:¼‹/tÑØü²’‘cÌ£$M÷uNMËà£$½c׎]ÓÒ~„ÿ¤ï‹Y:§,J»{ñ ËSÎT¦¹í­'¾Xº¼wë·ÒSî:œþijï§óýó¤6åYoïËÚ¿ÕŸõ}ŸÁY3SdµÑ7kõÈ:Û)++¯CÖÉJ?Þ*«ö†ä¬eý×SñY_iÀ÷Þ}ÿ=äõWz|Uy 'ÊìÔëo•¿éÑäXyÏF%iY统’„ÔêÇôÀ?äûÁy}pݦ$OýÉ«ÿ²ÿÙùå-á±Ö#/µçµ9k,ß\ÀGà‚þ‘yò—9®ú/e1û(a=ÕðÒòg/rS¿9šßTóoD±Óˆê¦›Ûعõ¾eO7eN*2¶ó§õûvë2«6êaó¤äß· ú³‹b׺H~®ïŸ—@e 4ïµò±þjy^5ßSx=‚HÙkð‰¤ýŸkaûÒSH³Ì÷Ã_jòw²çrÕ¡>—Ö[áízl‹Cá¿»|6è¢%AÓß”˜Èöç[8(ÇÓåø¼7„c¯pl[ŽSʱr9vÇîäø´yûÄñ-9Æ$ǰ<ˆÄñ*g÷×in=b{,ÿ§ö|þ9ög$ÿ—àŸãÚ^ªÿ‹­?Çåø³{ã6r¬WöÏ1c­þáX¢/ß?Ç7•ýs¬LŽ9jÕŸãoªþ/¶Øÿ6Å?Ç×äx–ÿK­ÿ«Ëµý¹/þÎæ1<óôôñcÝ'3Ý$Σ×d^þ|ÏÀ îËÞG¿”Åêÿi—Ñÿóº¸Éê«¿3»†÷¿¿k}ÿ_h±úÿáËèO77Y¿‡°ú{M7eüwûqý?¯;ö3—Åë?”‡ï_æÿ‹žÿßméäjí å±î.ôÎÎÏyÙGËáçH+ß¹¿·=ÿrª‡›8i=ÍD"Yý³½*85Þ¬u>ŸÖöî5ïy¸Žu{ÂmYcKÝ®³ÖXÊßJÑ+ù}òkÕ¶Þ[ÑY“óß¡è·*zaÿ·JþKýOJþ‡"äÿ“”ÿIEŸ´/<ÿ‚ùÙÆÒ×)zôØöR,Ö¯Bzökº`}0R9Ò“H ‘6 ýé(R5lQ·k‘²îEzé9¤ÕHÚÇ.JA:ŠõHß íAŠG¾6H=‘úA/Fºë¥ûÎ'<Æ2Çë9ïWBË>¬ñ8èóUdÇ@ûÚÈïÿÜÓá÷ϧå}$Úi{Ö6ˆ÷û&·yLZ4Þçž+œa>-ÞßÖñ¬‡¼¯­cUÕx?×$G.÷qöU‘ËSÿet‘IÃzàS”yÈÜ>|vGò#U U"…ï£Æ÷µ Ž:‰Ž9iRã:'­AÊFª¬s^ö9ú‡OëKóÝç¯N ¢>«N9ûÛ–`ŽÎ1¼Ïw÷·§{M_h½q?‹ûØHþþæ¶ñýíûÛ‚¥ F²|oëOã½ñ´ ‰'t[çà‹zÆySNNWOÛ›Üy§£7ÝÛÑ“îóuôuò¥{ÚÞQ4Œ'XyrGŽ-Ÿ`ª2xŠ÷O•'çÆA]|žá%ãÆò 빞ëùÿ3·-~à ž ¯/ü|R4bhi‡to—4oçÎÆ¬Q_Ç´ŒTólÒÖÓ¼iÞt~¹^QAiQ}æúÌõ™ë3×g®Ïü=sÛ^99Ë<7QX€'(*»ä°"O¯ÒÒ¢1…üÖ_Ÿ·KfÈ0Ó¸Ðþœá¢ñsþ–ósÎcÄ\k¤%iG4~¯%Ož÷×:GñwÏFQÁQ èê(רg<7\Õ5µxܘ¢ÔR#VGqêÈÒq…”kyѽ KÇ /3"²'៟«µøŸC­ÇaË>ÃïÛníæ—£¯GA~ ŸOaí%ÔdF!ã§t§¯Y6oŸkÓв± Þc,?ðq˜_ƒy$k>'ã¿VÆ„Öbµãš9“ðìÙ}â!éÙ³¹Ñ"‚šf>•ñ¥{ÓøÍOõÛê·Õo«ßV¿í<ÛÒ¼¾´úmõÛ~Šm?§qÿ Ù¦yKSVPˆÏ²ó³ØZ9vd™æ-+šP¦åçY84xIQQIQiþ𱚗£~jÞ’qWËÒKË …‰µ¥ Ìˆ¿ä-*Fæ‚1Eš×°÷±CæÇ}CK4ïˆq°+,-U _Æ&CÇ1[y‡–мFÐ4ïØqeEÞ^½oîPV0Â$íb—+5ûï}»±´K³âÊš‹õ÷õ«%;mj¬q»9Uú“P¶ø¼V²›ö˜‹¦Å“V#ý‘ÞZí"Ù ›í¢a‰ö;rË.KØñÝovØÝÑ?*dçŸ7Iv»>J ]÷èF¬5ÕßÝ’V@Ú=ì7ÖúÉ.v±°Òü\»ß ;óç}nâøÀ9¶Õ/÷Kv9nªØ¨kvïÙþ&Kvsa7÷§’ݼÉE†]²â—JQ®µ°]+·Í–¶\±«Ù®ß½Tk»-;tMäbiohæWÞo«0žWiö‘ýmÕB_…Œ%z§®í’:Úò×H³ö­¹|ð‘®íˆPnhL‰¥¸F×–›ÇÒ¨h³\îw]ñ·æN§ö»üsýEZøøÔ4+ ©f‡›%óñf²YW&›­„ØŒÃljÉfôlãx0Øì™Ø[ãlFk®È±ØŒz:7ÄF¤\c\šlFe® ±•4bs`ðx29üË1a#–¹‘Âæ„€U¡þ¹BÑ+ÜDᦠ73z8Eôo4þÉ%Æjßžm)µ? ío'µŸgÌðûà¬þ‹Bÿõ—ú# ý‘§ñqd±n¼»’û#Ê`·VŒÏ~Rù|^˜vúðqþ¬TŸg4û\ŸørÜ®Ï ¥>|Ü?ê ùߥøççÔw Ë¬ïº–䦢=Ÿ+úq…££ÂùJ…;(ÜGáA (\®ðc ?­ðó /Px¥ÂkÞ©pµÂÜ?Áæn2Ó¢kŸ*ú ‹?ÐÂM}Dþ˜èpÝ}®}ðJ·ñžn¶OVôëNW¸[ÙW¹©XøËUô¢Hå·rS?a_Æz7ùæøžÁ^󸩱°Ÿ=0㳟iÿ¬bÿ ëO»);ÉÔW*úZ…w(¼Gá…+|Ra=&œ“n©pšÂ™ ÷Røf…oWø…ïS¸Tá) ÏVx®ÂËÞ ðf…÷(ü™Â_+Î n©p…Óî®p_…(<\µ#N\Ø¢µQà/¯·Ï)X©•xVê$~+§$^‡•3oç•ö6ÂJ¬Ä§±B7l`ÖgzŒyþmÎü ޶D™œÂ—ìãh¡ÐSÁ•ÅÑh‡É]Á?£+£M¾¬´ü»µ_ƒ7I<¼Eâ2ðV‰§‚·Iüx—ÄóÁJ¼ \-ñ›à‰·‚J\ >"ñçà/%þ+¸Vâ8Ü¢ÔIÜ|JâÖ`ÿÉ8j¦™íO;wûNÙû»W}`”#¤€îÁþñ‰ý3(’?§m_} ´?Gk;h˜¨ÏƒàAMÆ»¹™gr{’ôÁÏ€'\á0Þ¡Í<<üµà×"”_ÓÄ.#ôäk#ÆËNð¶nŽÐx©aÿYz]øûìËvÐrÁgÁÁ·ˆü.Œ+_o=,¸98Ïë _ÅšÜ<ã:=(ôÎàØë4[Œ¿pEmþo·õ =Â>ܲµƒîÌã¸,ÅA.‘ÿ÷àÀ¿ |‘ÿ0]ë €àç¸|ð÷"%xBºƒæ ^ NÎpÐjq|ltœÛÁ»ÿÞ ¼ÉÖwGÐkûÙúÇ“‡ˆú}Á¾ÊoÛŸˆTŸ1¶.é³ôycmÝA¯¹ßÖ“ÈäI¢>mÀþ ê%¸;8¯½}ÿÙ—xþž]ÿà ð‚ƒ«Á· öƒÛOvP®à‘ê“ü¨]Ÿ¬MÊ›ˆµ¹l~kë%žµM?Á@ò??‚>þ?m}i=q©­¯ÂZîUŠñ³\÷†Ãx§7óù¾eçÿߺÿm[?©~ïÛúézÕ6[ÖÏÕƒÛ¥ñA÷ï“ÆC=»ÆÖ[DÐgjëm Wyíó[xÄ}Àë%¾|F:?ç±ÿE6û#•÷µ]Þ}tí¸­—+ú$pì"ëþÑ­=!ò ;ÿèA©¾Œ`ï“ìFªïIiü@¯¿ÎÂ_0‚}íw¶½q?jÛ¿Ãö Èøp´ÐçAO—ô ¤ïÇ9ÈöN’ø0¸…Äß‚¯–ø4Ø+qÜ—û$nÎ’¸8[âp_‰SÁ5>7ʼnúÞ¤Ùܼ Ú÷ƒó x‰Ä¹àUß޽Æö7øF‰‡‚‡J<×o…®g+ÁïŽÖÞçbÿ“Øÿ;ÀÅU»µÀã«ìçEŸ°ý˺Þâ/þ•D#E/Y‰ý!ôÓ\©?ø‘\1ôÞBon ¾CpkðD©ÿÛ+¤üàg%ÎÏ“øöóy£ÉqZ Á|^iö_ŒöðÅþCÅ>e¦Ù?l?\»™è 1_OZç"·aß@{ ûÑM¢þ»À[%ÿ+¥þßöt¶7>þ+¥öƒ¾EÊ <ð]¢v Lÿ\ðÄ÷‰š‹òš‚Hþ[ƒƒr7IÜ<õçãë;xázµí¹‹óK|¸œ)x8yƒKøk {6Øz98OÒ'ýàÑ‚§³?‰»>!j Ú3|j?Q#1ž¹Íø…ý2ð‰¹ÿºw¶úO×^ƒ¾Mjï:ð–ƒD ï‚wIúnð‡WKûã ®¤Ÿ×)ã§Z?Ã0~îã'¶!Ú‹ã­8ÞÚ€³1{ Îsl„S¢ýCÀË ½àÁ[šé´Eð 0ÇØ,øy0ÇxLp˜çö[í}Ìóü­ûñÃàªëuº^ŒçSàŠL»ÿâq~—Úל‰/—Îÿàî¹:uþ¼¬W[íwhCÍ9í–¿q‰æœöõ‚§$šs®-}N¢9çÚÒç'šs‚Cû3Ñœlé›Ù¾‡›º ~ œ&Á·“Á1‚³.õg>¸±ÄcÀ.‰Ë8ÿrû|<ì‘ô p¬¤Ï™¢Óâz° |%Ê×EùkÁ)R}ßgì°×=¬?¡Ó×"ÿg`ßt¾7ù ×g²N‹DÄ$¡þ:Ý+®· àÚ©:e‹ñuxìŸö>pŠTÿÎà¶ósÖöß>ºÛEWˆú屿å:û·¹J=ï(Ç®Öé„ЧÂÞzÞ1\¹R§í[.“ô7À>©ü·ÁGÞÔiŸ°ß ÎXn_?gJöµÜ¾žöùÝŠgKº ¼f›NÅ™þøüQ£œ?ªqþ˜,Î-aß]ÊïeÞ­‡îzëÀ½DýúƒGƒgýpæ^{|ïÜ㢆¢?'ƒ챯gsÀµ{ìñð×í D™íY f¹i¶hßFp©~ÛÀý–ÛçÏÝ`¿4>¹½•öyÜ%î‡b´Ã°ßT£ÓSbÿûX§'óŸØNí×é=Ñ7xÈnÜ \yÀ>¿ñõ×Ÿí¦¢þ×±ý~—q½±®£¥ú¦CŸØÎº¾fƒ‹¥öå‚gH< åÿžÛ+qcþè—ñü†ÙÛÄœ,î?nóÜè5B/ó¼édÁ²=x½°ŸæyÔÖõis>µKðf0Ï­niµ‡ó²ës\!åOÂ9Ï¿¶Î×>0ÏÅÎ|;s/·È¯k|#ØìOÖG=+ìþÿxž´?¦‚€ÿýý‚ŸÏà4ŽGã~ýÁ¿§‰é98û êÓÎäMùyeBHßÉåuK ƒ·˜ü)Ø?Ðú~Z .–ø;Ö$CÔÿ,ûýëâÛ h‚uý$nËúË6wf]⾬WÚ<ˆu‰ Y_dóxðÄ?:É'ÆÛCààsNZ+úcxæÓNÊÇó ìù‰üËÀKþÃI£4;ÿÖ NzQðFö·$Á¾Þ·IÌz 8[Ò=KmÞŽýÜIëDý43çÅ?.üæ9ò®ó|yKÿÌs篇Íóè‚›yN}±à«Á<¿Þ-8œ²Â>f‚Û+œ¡pw…ûHÜ”Æk.Ø/ñ½àa+ìóa1ûsÅÓ^§YŸûÁèÙB€gëñ´8Ú>_Ô)ç‹Ñ³\ÔSœ/fÁ~“TÞÓàÅèoëx\^%Ý_­o“ì׃·H¼|PâÀ[%®ï’øøC‰¿‘ø$÷ïÕñÆ÷n'âIo ®–øð´ûïßÜþSêùíÿ­h¿ö®ÔxºRøïÚœïÏãi àþà¶à4ÁƒÀCÀ.Áù`ÿ« Fî¯1àìu Æïä˜ÿÎÞÛÆU•yãh2g&)_VAðU[LC2ùh š&iH“¤¥-…ÛÉÌ$2™æ£Ij]«‚k”ET„ªEPÑe‘ÕªÀ‚V­ˆŠZ¥JV@qùÿžçœsϹ“i„Ý÷}ÿšÌïÞsÏçó}žsg’ðm³ÅQ³$~'ðãV/žõEƒ?ü”uÿSÀGZ÷? |”…ov-üM๾øP ?HŠÌ¿~ÎjïQà½~XXåŸ|=Å þ+ÍŸ…€£úŒõ|è äŸÖˆÃÔ~Ìë€ën¯³-}ö\Ùú¸—JÿŒÖçM(¿ä¾Ù¢ùkÞrŸ‘'ï=ö¼Þÿ¾éù±Xaz~wÙóîýÁçwÕŸ'ÔŠ;¬ç·ß|~wÙó;Î >ÿÔP­¸[᳨ÿ˜Ÿ‹Õ|œ ¼ó‹FÿŒ?hÍ_–ê·ððÃ~ð _DýõjE“¢Ç+i|?1ýÛN÷ßVËú÷Ç€oßTëÇ{¾|#îÿTáÛß»¹V<­ð=Ô¿ j}ûâ§kÞ[ëÇOùùnŠO†öþ|o_D,>ŽìEàKû¤¿KøoÀCj¿ô0Úÿãí¾j6Û#ôü Àó6„ÅÈòQºÿõj–ׇŸ ¼§Ù<ß |ﺰ8^Ý_ ü\wX¸ cß|°Hô…ò;oÎAÿ>¡î¿8ÑPÃû]„?b%£RŸÞõ|„ë§þ| øâËÛTþ6à±ßGćÞ¼ù°0ûw„¤ñüµZD’ø7ÀWÀ¿y«ºÿðͧ„Å.…J›;Ìøj€âNÕþà§ÔøÅýã€× qÍòùVà:øG¯Wõ-~î4!Þ¬žï;JîG®Ê¯îYæõ"<¼£É´_ÞþÑÙœÏCëóºßæý_*ÿIà±-µâ¸Yø¨‡Äɪ¾oÓ»„~R#ñ¯€oùyˆíA¿Ç‡âývÂ~Üß!GÃÁ|ÿ“ºðoOªþÁÿ~à}!ý»X_]ûÑD?aqºÂƒtnXœ§æ#¼ý³yÿ“Æ7üÌñ5âëêþ»Ž¦ýl!¤ç<йxó‚õÕ÷1à=—†8šð§¬/%#úù&µw¤àø%Ýß |ãÂŽþ-•ÿCD\©ÇOå ‰Ï)ü<ðãg…ÅBÕŸêcÀOl?ÐýC€wžaÖûhàõk¬/©ü›€Ÿ:¨V<ÿ&5?ÀK›õ=õ˜`Wo>»V|RÕ7| ½<ä÷/|óžj‘Qô|>ð-_âý³%~ç1†~iýÞ¼áªjý.¦÷þ¼Oáë×´˜þüÇ1fþéþ÷€·ÜSíóË}ÇÈü‹/(úûå1†ÿi¼¿~/ø¯U•ÿ+÷®j±BÑg·Á¢ŸÃÞHùoÏ|î Œî¿Nò óðMO†8ÞAøàâvÍ_ÀôþÎÕŸ³/ÏÔò~9á 𑿈ˆQ…7S{Ur…ð%ÀþÂÐw<'êù¦÷"…¾˜Þ z­ïÀm°÷Ö¨ûß¾÷¾q”PüüøÉ†Þž{cp½kðëÞÏÉøݯ.UyúZ¼í5â÷ ¹òƒCj½ÀkÀï¨ûç»–<¿Ä ¶÷Iü¢÷™~XõÿßoO¨ço¥öž”ñ Â?~pÌȧG€÷žVÃñÂOï\æø.áб¨ïãB4ªõxð{Ï¢J­¿ ¼åÙÇ'©ýyÀ7[üÕ@ÏC4ëñkä?áªoLˆ ”~¾+·ªú=à9(‘ª/ ¼a]-·G÷ß|Ú¿Pá ©?;ªÅj¼ÞQ¨©þ8ýÝ0ç÷¾¸öß%¶|óS?ðκö_èþzà†«¥þdùK«ÿ1$öœâòEàf‹?/¤úþâø=ðŽ×(yLö=”?ÖúxÃC2žJôw+ðæŸ†Å•j|ß=.hŸÜ <×’?Qý_1öÌÇ{„ž–Ú›ÿ¤ð! Œâ6!ÎTý9 ¸öW!WøMÀ7ýRîGn~þƒ–/Kèù+ÂâÍJ?®&B;;ìÛįbêïyÀ7<âý9º? <ç!áëóK/Í$Ë xÖGÏÿõÀ‡^môéç7Ô ö×  ¸÷Uxðvk=ðowf„ئÊÈ—còþÑÀ;­òÀî«}úZ4—âS ±âò~7ðØ#BÜ¥ÖkÝ\ù~q¡ž?¸‰ßQíMQùÂâp…ß|íµ5lOÐø/™+ó?4ýlŸ”G·‹Yr?—îÿ'ðÔMûýýð-s!ÿ¿ü x7ìûÃUý¿ž»ÆÈǨþá°8KÕ÷g_˜í7žèáÎC¼D8¼gm˜ã+„_¼ö«žÏã·=&ÄÂj‰[€w¢¿Ú¾<8ý°`û…p'=ÿ½j±Já3€º$ÄûC„Ï ‹Ùª¿€‹«ù ;)à-Gx¿‹Ê—€éÝ­W¨ûR{_ˆœžO`ñp„é‘ê»8ù¬åÑÍÀ× ¾ø”í‚õ)•¿çMÆž!üàê"â÷U²ü(0ú1£OÂ`œ5¿âÍÀý j|~9x[Iˆsžüì[G•ï¤ç·Ë|8Â}À‡î ‰+{Æ{³Ì¯š­Ö;EÏ?‹ùUò¾H÷KUâêùw¯ÿ^Ø ôí‡o´èýÓÀ=w _~ß <6;Ìþá»Þ,ÏçÌRãûpóîˆxVµ÷Ó7“ýmøÿ!àÍo ùãÛ ¼ë´°ˆ(\ý– }¿xÃ}qŒ¦'à-o‡}§õ=ð'DÄUÿNv-~9øÚ‚_UýY¼Ä²ÇâÀôŽÑËÕü]H÷­ñ¸aODdUùÏßt}ϯ_~Ʋ÷¿ü0ô…¶—î'lù{¿¾üÇB¼AÍ÷Ÿ€ç€~ªòÏRÿ~ÿ„¡u(üÕcÕüÕï\_+U÷ß¼k›‘‡ÇÓû*ÿUáV`·¹Æççà%ÿlÆw6rê¼Ï¡ÎŸ/np~•¿`žÌ7½EÍ÷eÀ{¾þùðSÏÉüº0½ó»z~€/^.íy–OÀWD#þzÿx÷ÑÂ÷·~ ÜùLjhVëù;੦ˆ˜«ðsTßãŸUñ^syH< úwðØ z¾Ž~ª3âÛ—'ß ~>]Õ·¸ÓZï>`zÿÿ;ÿ Ïú§y닟‰>/Þ ðƒªþ‹€so‰ˆ5Wß~ªñïo,{þ›À;Ó!‘R÷ïÞq²ðõï©ÿ°Çýþ„Ÿ?Ø_¯GÀú^ªÆÿßâ—OÀü]y¥î¼Ù²¡û§ ŽWÑý7ßý®é¯þ3~*¿xü]MÿË€·,©ñíÃU'ú§òÞ Áñè>ô]£*ÿ.à†AÓŸË ñ¤ºÿ àÝ–}s+ðµÖz}øÁÁþ<Ëcà‹¿_Vëõð3Ke~%=ÿ'àK;„OÏo¸ÂÈ'æô°Ï¿¯Þ0㪾〷¿ür”w ç€ÞŽQÏŸ |ƒÕ¿A๭¦ý à"ì“ ªþÀ×^ëÕú\òÖ }wð-ê|!­÷/€¿Ð¥žÿö[å{èµ~»˜ÞÃ-üùiY@y±’ÿ;0ì,ÞÿHÛÇkÈPøïˆÏÏ1à-¿«G*û'|×RáÛSoÎaüÚ_¾l9ßJë}#µZóãÝÀŸ"„§åðŽ'ªÄ9a‰÷?|½ðã)Oï^$|pV=üg"~üâ Àô½#Õ³äøÞ ¼WéÂõ2Ÿxµ¶w§®>ýõo9TˆAÍÿõÁùÎß {öAEO›ëÍyYßÀ7?á|aºÿYªÿéjñy…o~ü°?Ôüý˜ÞÃ|‚ŽŸ¯˜âÕßGêM¼‰í àžÅFž>¼ááÇžîôB¾½H 1çT£Ïç_ñ!éSýÿtbp|MÀô}-'©ö;N ò÷JàæÃÃ"¡ìÁ TþrÁö,•^bÇ+O4ö ë_àË׆|þ½¸Ç¢×koû׸JÍïç©>èã/êù;Q¾/«GÝÿ&pm‹e¯>>Âò‰îÿâDã~˜Þo­ã7Ïßs½PëÿºÁØw¬_èAåÿÑøŽ^2[òÛ³Àω±HáVàŸ”ù¬l¯?ü½°¸_¬!¯ÊÓ÷ÔôkyÑ\«€Ó¿ q~ Ý¿¸öëßa¿ï=ÎØ_¤þŸ'ÄT{ß¾q8$ŽVÏï¤ûÏG|ù~/ðÔÏBâgªü/€éýîçêøÛØõ!ñS…>å1ɯL?fþi½ßÜ6ïÐò¦Ñø·¼|äÛC¾>?xC“ñwV4{ã9À›?dü“uÀ»]™¿MÏ'çÀú¹Â›IWËüZÂÿÒHû[!1¬Æ÷~àçV‡ýûÛ·4){óùàí³M<ð‹ÀîÇg‹”üþ>õ×ò~¼ãWà?UÿÀ÷ZóQ•çK´ýwð ÷#½¿xjì=M?À=×…ÄTù¥À§Ü}¬ìëà#·Eĺc•|Ž‘èßÞðH•جêî·ø«dømn3íO q‘¢§f`zÇ¿öWº€ÇÞÿ¦po³ñ'8Ñlì%ê_ø+B¼?IåßÖ´§.²æÿ2`÷šjq¡ÿGoZ ý©ú³x ø5¦êû=ÿˆÙºøuÞˆäó7¯µú¿ xûVسdÿžÓbäÉ3ÀKVôvh¡|Ø/Jž‘âzxVøŽïk€ûÿñõÕ?ßpš±N¾k¡ßT÷»Iñ‰õœ@ã]CØÒGàßfâñ%jöÕ _Lýy£`ùBøÃ-ÁøîǨ>ËŸýb‹ñŸ©ü7€oü›‰÷ìl¡ó‚fþ×Bùza__= ¼ú®FáÌW³¾9x}NÚWl?ß[_+jÞ,ËŸJåU<î/N[#Þ«æc 0}—Ü3 ¶{†ýàÅj?^t1pîmµ~oÎö=° ûñk ÿxÅŸ¿¦öËóíôü^à [j}ýD/è¢ïâiPëuì"“¿AøàÝg‡}ýÝLß÷²HÇWéþdµï¿uÓwcéùH. Æ2À[þ³JLþ“âWà¡4ô¥šÿ ì¾þ¾ØýPµ8Jù3WÓw?nPíø¹aß~ø ð¼_™øà‹äyêGþÚ¿hz¸øPË^ù%Õ×öíÙ'©}Œ§GµO/£²÷ãBÀm­ò{Õèù×Ów"}]Íg ðœcBbŽ_'=M çG>x÷Õ’>©¾3O æ#œ|Å2ßœÊg€wÀÿÒöÓ?Ówc~FÍï¿/ùBµøH­¼ÿÉ“‚ñåÏokŽðù"ºÿMêïŒ|¹›ð1&¾øƒ“hÏÄÞð¾/ï§þý@ˆ*zxêŸCb»ÚßšŠ®ø«Ñ?Ç_0òíÇùÀ—w†ýxe ð¥g†9ÿ™í/à±kCþþhðæ_{r0}¿æj|£À‡>Wizv]Óþpï"bªoëÉAytÝÉ”oVôòUàžî8SïêßGŒõCjßʯøñÉdŸFÄNUÿÏëbaÞ/äý#zþmµ¾ü|ø6+>¢À [->^¯ä?ðµOGÄ»Ôý·ßv…ðã§‹€ýüŽÃNç)Áñ • ‹6ÕÿQàߟÍùGœÿBøp!þ¢é ¸ÍŠw8·3Ìïg û^q@¸Sïú²ö¾|èjüñÝyŠüî`=??Þbå‹ü”ž§¶Ït:żO‹ì‘?ï]fû‡õåbøoð7uþÀÁÀ;>UíÛ?¯ê óy%Â.—~>ÖÂOUóù Ë÷…ü^gñb³ÿÃô|;ä»Î¿Y·X¾Oà¤C%ŽÓýå&¿«|˰X¢é‹cߨ›=]¼öÜ]¯æù½xVøMù7_ϱ[=ÿßuÂß_{øÁ¿T³Hø·‹ƒûE缟ò µû^Û»*ß§ð&…k]k}\àÝþ~ĉÀ·ßæ÷Í0?ž\ïõÀzÿ€é xè’oßäWXòâíÀ·-©ªñ]|“oºòT³_Âôu*o¾¿ÿoÀô}lZí8ÕØlŸ?x§ÙÏz¸î~!FõþðÏWûþÔÀÛþñåqè4¬ïA5â^%?;Íè/ºÿFúFø]Õþ~í›O£üö*¿þ¦Ó‚ó3¼þþlu-Ý¿¼J|ˆÄãÀGYúçÀ$Ä;UýïÞ9{Cõç*jªZ<¯ÖãÓÀ §‡ýxå­§ýÄüwšÙï¢ç¿üÌ£‚ã=Ÿ¦ï>ÖúþqàÍODL¼ÿ4ÿįG,¡xo˜÷¯èùã€gÁ;B•o¾É—‡8Ë—È÷íÜ©ìÇà¾V#r:Þ½ÄìW²ü¦ïJÞªî_¼ÄŠ·\¶$¿Ü¶ÄÄ£_Kõϯ·+ÿæóÀ[®2þýÝKÌþ=Û—Ôþ'áo«ö~Cõí¬;Ôý½K‚ñíÛM¾'ï/¶Ë÷Ch{ð`w¡±Wïý¸‰G-¥ûç…Ä©Z¾P}OV‹^…‡€/¾ Ö×Ï…½¦íÙ-À[B5b“*I»|Ív…?œþ^•ÿ4ð‘½&õZèÙ&Þ}+ð3;=» øÞv!þ¤ðÏëþdú÷àÏG8Ÿ€ç§ÝäÃñ~ÐRšïjq„²—(ñøO˜xÝÀ×® ûòèhJLN…ü|®ùÀ§ìøù|'/ úçKoª®á|gjïtà %“±8gÙãç-5ùs„7Ï·Uá —Òû•`/ªñ}xI›Y¿Ïï}R¾Ÿ‰íKà[Ωåól„wßüÑx›ºÿ]à]kký|µ/5ûs¬ÿ—Ê÷åhyø{?Ƨ÷›Ÿn;+ÌôÊùÓKi¨J8Êžœ Æ­»ÏÄŸçtPB~>ˆ ¼ý³_³8]WÃòŽêk¾v*$~¬äÇ à+N2ò·¿Ãøû„=ªï³y<¼ÿ|äÍaêþVà¬ü”K7)Äå øò¿„ÄÙ ß|×·Ââ1=ŸÀ_²ö£n§çÏŒˆ°¢§ï[ïØ%yúðzË¿ÙKýë ùòûYÂ{"~¼çLä,K¾Îï4ùiTðn+>¼„p­ðýßÀ·,‰øùâë:M> á±N’³½G’æg8aå]Öiö£©ü6àKw‡|ÿãàÜ©a¦7·©ç÷.àW‹¿ªçLßIªõßï:M¾ Çó¨ÿŸ0öÀs„wÔúå¡(k?ü¸.#¨ü|º¿ô`QTóÑ Üû¢Wõ§xV4,îSôÓ×Eñìø–êß0ð–i³>y©g©|äwßû›°Ÿ_üÑ®àúÞ |ñ"áÏÇí]Aÿø~zþa>Ï@ø±.Ê'0ñÓ§¨½ž0ëcÂ)«ÿuXÈKï0öÉoø~Hü§–?À+ ¯4ÿFõþÕ׼͊œ|K‡™Ï3–™ýqºð<‹^Ç€o|<âçm¦ïå½RÅ_·ß~}Ïß×Ó÷ªjûòàËa­PøÔ¿÷‡üüÂÿ\fò½ß¼öõo§äÑ2:¿V#þKÉçßQ­þ=Kãùvˆ×ŸõÝr#oÙ^\Üš¼ýêj‘Ðþðmß7ù˜gç~âóu¬ß¨üÎZŽßQ<7¼ûð?•|òõy~h£xöŸŽŸPùRµø‘ºÿꟵ߱ ø”~ãßÞH÷“Æ~úÚrzŸGHÌSþÀíÀ[Þö×ëà ŸõþòCË~¡ç·<˜¶8aÍß_©÷Ìf{ŒÆ_…ÚvMX<®õß ã¿q> p-ìm}žà­ÀÛ½ZñÔÁоVùµ…ÉïåýªÁù³ú3 Üÿ!áç l>呈ŸÏ¶¸î!ñNÅÏ—?Ø?Qxð–·a}½ÜÜù¶°¸WÝ¿xî)F|k…|ŸØj½¾»"¨¯î¶óm~¼ãÙ*ñU…÷Ów!¨æï¯+‚úÿ nàÅa_~Îv?/Ä•}y,ðQ™|úSºé}fÿ¿“Ê_P%âÚÞžÕcò­Fßk'KõYóy ðØ·u _Þ̇üx·Ù¯!ü©îàþéç€ÿv«Œ7Óø¾ ÜŠñV+¼ x öЧTû»·Ä¾ý´‡ÚÿuÄÏyªÛèwÂÎé/טü¢C€÷¬4ñ£×÷?næg>ð+ß­•Î|Õè—3€ïú±§6œnèÑ¥÷_Rýwý^¤úŽƒþRñŸ-À·ŸRëséé&>Ãòxg§ðí±ÏnòMù¼ÃéÆžgyìZëñ(p³¯8ð øC–}5xÍ_Íy¸g2,žVüß|†ÉÇ¥öN~pwÈ×÷KwXù7«÷V‹…JŸ%ä¡öÞìZñôPyk?÷3Ôôý¹ªüÏ0ïo?Ü™å|ø¦ÿ2òòÎ3L>õï>àC-ý àmÛCb§*ÿ<ð®ÃB~<Þ}¬ðãe‡ßuqÈÏ_}O0_í¸“oA÷ë€ß{­Ñ?‹{Lþá3{L¾ç‹_ZW)yžé1ã#ùõ/ÀÛž¯ñ÷[Þ|ïß„X¤Öã“ÀÏaý:Uÿoì1þ8ë?à-¿ˆˆûTû;/ø…Ñç÷ß¼Fˆ*zÛ ÜS'ß×@ø9à'n•ñoÎgZ‰ö-zš»2h¿²’ì§Ùb×lY¾xüc½_7´ÒÈ3Ϲ+é|SDÔj}ì~£šÏkò|ß5öíÇMÀiè/ýà£NûñË;­øâUÀ{áë|ïOo±òE> ¼ÁŠßþûJ¿§þݼ}›ñ‡¼ë>ÈÕß~S-Þ­Öãaª¯ÊäËþçš*q½âÇ0 Ã-–¿{$ðáê}&|¾³×øKœ|ÓoB¾}w–*ÿ‹ýàÛw…ø}At¿§7o^þÐö͹½Aý˜ï5ç-¨üT¯ñ§¨üÀnƒÙO¹¤×Èo–GÀëÿ»Ú—¿ŸÞmÍçu½&¾Iõßœ8$ÄïÇ`{¢7þ!pÝÕâoj¾~Bóu%üAUþQàyOGÄ&U¨Ï äÃÞgöó¨¾××Ùþ ðîݵ¾½Ñ\ÛPÃùT~ðܯֈ Tûƒ}F±<Þ°6âÛw£}æ|,ÇÏ]ЗÞ?ÝØ”wÿ lÛÇWõ™|8öo€o>þ°Â_¾ÉÊßßüÔB~þêOûÌy1¿§þ<òãé æ§ÔoñÇaç`à~øgz?ì( ¤Xûë'ô›ýÂMÀBßô¾NÉû~s^Œé8mɇsûM>;ŸÏžõÆñ&Õ¿·ßféËËúM¾á+OyÂÄ“> |äÏÁ|{}Ÿ/øàísL|âþ~cPûöË÷CGU|ùQà»æ„üü–'©þ]aß?®9S¾ÏVŸ?~ÙÆþ¥úN |]µøo5žEgšxÝï~ðãf¿bxI¡Ê·?ÎvÿRíÛsÃÀmß–ïs&<~¦|_ïÓªþIàÎ;Cþzo=Óì}_~f0?äzºÿoFßr¦‰GQÿ¾ |ä#þùñû€/†?¡ãY¿¦þZòìOÀÅ/ ±Tõ'A°ÞÊ'?d€Þ¿W%ªõ~1ÝÏ„Å^5ßu&¿ƒç ø¶÷׊›øùƒœþ“ïOý; xu~wtÀø×t?K‚¨Xíïïw\XåÛÓ[‚ûO—çšüÀíÀ®4ûíטüuº°{­™¿oý×ï ˜üM¶·€o™ü¥Ÿ7·¬ü­°³‡êûVˆß'D÷ÿ ,N5ùà³Í÷ÁæÌvŽÞ}¨Ïô óµOžûxµ¨Rúg)ðÅ5"y®Ä½ƒf?”Æw6ð–5&?oXü¢F\®òצ¾Óì7¾‡ÚkVü|Õ Ù¥û7?õIO¸‰úkéׯ_øë÷ƒÁ`üáǃòýÆ:¿ôWÀó ï´þyøÈ#jÄãÊßx{0翃ûOµCDïUü~ ÂÇÑû•"âoª|Ý9ÿÍöû‰Ÿñü ™ó,ÿ‡LþáØÑ„Ï2ù¼´¾Âß ‹ïkþ~þü—µ|£ö6Ë÷ͳ=2dö; †î·˜xÒmÔÿåa~ßËàœ%_N|#ìÇö/¹¥–Ïs½þ¸h•¯‚!´â´°øU~ð¥ëCâ-jü.𼯅Å6…§¬çO^e΋Ñúu•~¾š¼äÛÕâ·ÊžÌoYz0¿?‰Æó.à9'É÷5ÓóžkÕÿï«LüŠîß¼Ùº¿øÅæ¼Üo©ýváÏïcÀ{­óROß`ûÃX¸Î߇ŵžoZmÎÛ®^ò•*ñ\{EÈß_8uµÉÇbúÞýH•?_ë€Ýã¡Õøs«Íþá·¯6ñZŸ®–ï3×þþ¶ÕÖþ8ôóuÀ=°t|ç&àÖùò;V›ýš¯»WÓû“«üxî÷W“ý[Ãïwb{Šúgå'ê<*ß ø}t”ßÜ|ó3ÿüJpz âë§3oê‹ðz^Kõöãcô¼µP²ì·­k‚ç?|í`HªÏ_`¯¼iÉï¦û_^cöÛ ß |ñºxXÝ¿ø©[åû:éù?o³æãoÀ7¶ñz}~nm0ÞsÄÚàù¨£€´öO›×ÒûÊküñ´ßf'ë&GõJ?^ ¼þ £¿6¬5ú‰åõZsÚ˯•\ÑÛà–†ETÛÀ+~¿ÓòxÉÊ8Pç*ÂGGÄw}}kmp?ênîŸy?ÌÃTþ€¤¸á9?O_`Í—ƒÌy$äÛ»µ4°× ÿý¯]gö£ ³Îäÿž¿ÎÄó 7¬ î÷ž|—ÕÞÀ7Yç/ÖP}qù},„“ë‚ñÜ,ð  ÏZßHØ1ñ·-ëè}àÕbŠ^¸Îä[±|[góWØùô:ó¾ºõ¯Cøüp÷:f{jÙ¯!üÐ:sŸú÷(ðÔ÷Bü~>ºÿõÿ £?«Î6ùñLgûð‘ÀC>ÌQósìÙæ}<ŸÀ{àÿªú—½ÆäŸ®>›Î/˜ý±8ð‘Õ!?¿9wvPþÿ ð{íóÀÀmVüâ“(T?.þ}ùlóþ ªï޳M>áŸïZ`òåþ¼ä_Ì~ÁŸÏ6ïK"|ÀzÔûFã¯Óƨ>¯Åò øøom%ï7Ãì7œ¾ÞäŸñùõAùyð¬çM| ·>È×›÷³Þ |Ë÷z“ÏAøÃÀ7Ìþ|_½>¸?ð™õòûb´}ûeà-Öû*î^s«±Ïî£ò'‡}ú!àíߪW)¼‡°Ïøð‘oûï7:èz?©Y¯ãÎ Ú/Qà‹­õí~¸ÆÄ?úoÒä?¯~¦-,þSñ{xCHˆµ¥sÌù}ªÿ|8ô!ÿÿ’sL¾Ýÿð<«Ÿ¶Ïo}ùœ ?uUlåSßNå?_%jTï>ÇœW"ü#à[À_:ý!àK­ñþáœ`<æiàç,û,t®y¿ =عA{ä „O1çOO8×èÂ'ヲÆÏRàajö\à%‡øýÂ,Ï€/xÄä3Î5ïÿ"< œ8=ìç½ç\’F~_}n0¾v¦o¬ò÷?? ¼âáŸ?ÞAÏ.üøõwÏ5úýà;¾ýú0ðn+>øÌ¹AþyæûL‰¿Ž~8S+~©öZ€wÜjè}%pOWDtªó›çy&ÞÃù'ñX:íNd3^¡Ëx¾X(–FFêãŽçu õ x=݃CžÔ@]+¼eí+»¼¥]Ë»{ùÒéþý\}ƒÏNäÒÉb2Q߈›‰¬7šÎÇÒ­³+M9ü¥Ï^¢411­[ëêí4i ÒˆšÑŸM­q¿ÖÂD6‘,Ôàö`ÔÎN ãs<›Á3Eºž°ÁH*“ðR…l1ŸÍMÓwTæ³¥ÝÈÇâÅOL>•Å•Ñd&™“^!‹'=]p4Yô☻d!Ë(œÊ瓹¨ <9SêZ&9ééb邺Jk@S™ôg"]ÄŸTÁG“Éx*–ÏgéêøÆ$ Ù‹Å2£èR²X”½œˆåã™øu/“HRy4˜Žñ‡ÒÄp2oF•˦cùÔ¦$}ÌgÏC­æ“'Á…|2QŠGõ‡&|($s1žÉl>AÐsç³.%ót7ŠÉL=ŽRzY5ÕGb>–)Œdó^q:—lT·Ú@;Á[Qu«¹·6Æ à} £œ´r–6¢Sø39÷r£X”+œL'ékÃéÊT>;™Íù¨Å©éM3«ß$gs“.Ž*=êN!•á¿›üÇ%ae½R&EOŒÄÔLÊr-iÍUzmrQŸÕ(õÔ¥ènª8íqÛ´À›ð7››ÙÏ,/ï8/Y£$ŠôÂ+–“´aã5h6%pSÌp³®¶Yv4É7²p!x2ËA~ŒÆãQ¦úT2À‰—0® †—M§ u\ùµ‰ä„¹TLNc£eåÔÅò‚©ÌHvfI¾jÓt=XR_ä‚Ü þj{H–„c,OŸÙ\Ká0×$ ²6:ªË\Upƒ…ú¦fZwˆ£|²P!6µ8‰T‚¿­Þ£ï¶¯ojµK/ –nn(+ÝÜh•n.«»¹Å¾ÙVvs‘u³%¼ÙÒdßl-»¹ÐºÙÚ€bK˜¨áiˆ8^cHY½Èñ|lÚ+SaqgÕàÊîNy j%Ç%K¿odQCÌca9VÊŒ+Ì÷Ë/èà õ19U$a)ïâJŠƒæŸZ >“‚‡®ò•† ñ|*Wtp/9åÅòè’úŒ,¡"yI•eQÈ€o%€SY õÓtARÖ4a•T’}Š)BÖÉ–Šæ) ôcê–|β9ye#$sl8”ø(“¶q8g…D«‘†„Ãßd"ESÍz¹|2Ž©L§q•Šng¸@S™óK©<Ê&óyÒú“y,==ô2^:•¡Õ E‚n*²¸¤ÁeóÓÎ8&´Pms¼á$X²0êxÍòZRTRYü&ñÐaÔÉ«O-þ§6‡õR}c#Ê«¾Z+™ËP%9–2¤bE ÝxA_/»š-¨ŠòÉX‚ÿL¢ßøP(f‰€y¸4u‹©˜üKáo:;™ÆBqHWÓ|”&b…q§Û’Ž “©_ØÆ=„<…Œk[ääR‰úEÐ_‰T¾~Q#Õæ%†©LZjD®R,ÍÔdE1ô £-Ž©þÝÀ9ãDäjV“Éq©Å…ˆÎå@`þEÏ‹çŠÙ‘x‚Œ¢b6UßÓèŠúŸšüOÍþ§ÿS«yÖ<Ò¦?%‰¡„› ƒñ·&bSX_‚–þ$s¸žž(¥eÛòSÔÿÔ¤?ÉŠJ‰ÔFj‰T³C2úÐáqO°äðƲÙq®´lÁ ˜Hž@ëJÎã5KÆrx¼‚IÍÄþ-åúX2>îIk "¶@UNzª)¾é” ÁG—H&Š(YEu¯$ò»¤`8§¤ÚD)c@®¨*dµ!û™Á“”Ž{ÅBÂ[ÙÞÓÓ×Áòßoö*Ô .%ÂÚA.Š¢?ýqÊÚÆ“Ó+&žL¦0kFÕ{å%šrþÔƒì€ÖüÇô-øC+e¨iRÑJÍ5ÿŠÂ±"¨YͲú<\"Ã/¹1;ž$Q4îMÆòZ§t ‡EË’ÐãIÈ›ŽФÒbô,„ Ot.]ÊCÁ%7‚ÈØªáää³YìR²P€õ^LŽB¤y(PJêâiLG)ÇT‰z©[˜T¬>±¡­XÂ4íÔÛôYWžZRèzÝÒæ¦œlzÂsôGÇËPƒ±ÄV"K4\Át!ß¡å'eÿ° ± ðʆd-_"¡í®œ`Fà¾Ç ·äÝ\¬8†î9²0T—©"Y%kXzG*Déæ±Pðs¦§yÒDžÓÓùFúůD’l]ùa4[ÌâSN^È)(;<=-ùÆ#^(ÒˆHî¯ k‚õÅïl†zÅ0áS½ÉTqÌ+b9scÓ4ÄÑ$ÿ¥åi„®ÛȬŽ)Ryˆ€ñLv2#g³P™À0ñ$~õšV.ÃÝìîó&¥z€‘aÉBs\ñFlz8)o“ÄJd¥ºå²\tª€AgL|±0‰—]ÒåL}¦48#;2bߣ_ž–J4Õ,"Èõ繡Gý+˜]âŽRÆÉ9#éRaÌ‹§“±L)7“¸±âSPFš°©U–¼s B‘- ¯Á44Év ¤›×(ÒX©Hc H´Rp f1N¿'†áÍRS´8™ä¬Ðr°ðIBì’ù"X–¤F! 55g§=}xS6ÎÜG˜mœ 6-øê&w ¾`öÒÉ ù“ Ð_&Ë¡bbEO~ä»òb¾˜N`cùø˜¬…Já[:("åF¥@!Ë -ÏÝHNåàrDEô2Ù"‰!Ž¢xÃ¥ø8Ô&¶•à=æS#ÓŽ—H“½àe‡Ù§Ég'¼‘Åh€Krí‰$ Xª5²æØ¸!÷ŸÅ@?ò7…0ä'v§ˆÆaŠ'¥Ý—ÈjñI'’Ã¥Qov8§ÀõBªAn%3qÙ=SÞÿD½/@_'ÁÖu¬Z2h5²1‘ƒt*•͒S0YH€Ó±"ìNÁ™É@¸³Ã‹GGò"› cGŒšÚc;A s¡à˜Ï¾¨„÷òLæ R”[KÑžM”Òý‰a‡¤!4“7 Ê” ìÈD©Ì¹ì¾Èkò9r{ ÇRi¸êº*³ÈÆu6|“y „•ˆc"Wœ–DD¼)Žß/?îH†Pu£‹E"*˜NaµÙœ—·R²}udÆh IÆìàIª`bP³ˆEêx¬ϲ^*1¥fY×'U AÇø¼Â$£ÑX,“H'íûd@òôu8¸HÕ°€•M Onœ"ƒbIL‘k?F¡öyù2«Ž=y=^G_OOûPW¥;Ckû+]_Ù×Û5Ô>°¶Â­ÞU+»º;*Üê^Y±®®ÁÁöå]ƒnõ·÷w Tj£½bMí¨¬RÓ]=]ý+ÐéŠí·®èZÙÕ;Tánw'®w/ëîhêîë-+^yŒðÜÓ'µ¼ô‘˜„›=AŠ.•ÙËtò¢"MÚ)%³ˆ\‚WŠÃisR*P˜î{Ø(fa$æ‹8™ç¼|6B@ÄÆ ]*€…5*eU¨‰QSLÁf ‡laجPk-$£t¶`ÂÛ8¢ä”Š\pPÖ‘×`/0W°¢K¦áèÉ ì ÙÒ¤p†Ó±ÌxÁÙ”Ìg“ʧ$U7Iq)OáJÓËc©þ˜ÊÐoHßlBE>béÉY4Yâ\ÂÉÌ(éŠNi¤Å§ÃÁ§¸IÙ‚¬© O”'@Z·“Ê‘ýÇ‹›¼< 3âÏR1©¢’Nš±¸É•ÅMäF+™“’2˜C”LZü©ìd¦‰i´ ?an -¤¬wdÝlqë72b©?¤a9ÉÏ0:è3©V‘ìQ,0MP~*LOÀ( ‰Ÿô/ȉ‚Mµ1–J³Ï’Ûr>¬õi2.-ôb @c˜#gœ…9KQØ`djR("ûÊ€/Å czë÷F½Àâ‹tj"¥kr2`­BŽ l¤ >¡¿y×Ñcœ„ÓEž^,?Næ"hŒÖÑ£>ËŒ¾g†SųKžcŹ \©ù  ¹KùŒ“EgH­ÒÀòÄL1Úû@kúC.®Ç‹OKÒ–”“§tÌûÑúE<û¤ðOŠ¢Ÿl²ðþQj .¤¡‰X ë0œ•Š¡ÃÈix£çA¬йxnÚ‰ ²#°^É/ J”•‡-ƒwÈL饪s¤¼ZëõõCšL@”ÄIœ°³’`Q‹Dœ*gУÙ$¥££o%ô‚×=Ø74Ð׿V;ý…Ô¨Z;ÏK2± ɬœ ùæt)‡ib˜íHÌ3ZÆ}•]‰gŠRsĘu RFn“S9­©Óžf/WÇ<¼‘"Œ7%ºT„O9¬ì€›5ɘ³r/Jk_«uÕ=Þh!BÊg‹¼ˆ4;,IMxŃš‡6Êdå8H<ÉaÑÄʨ ùøjµõò@zÊE„»»²¿§k?Å2ŽÀvµ×YÕÑÉ´êɧQ–ȼ˜õC¬,8¥zUÁ.vF•aO¿†$>€ PüŸ$röHmWP}”ºÀÒ”¦FúM ™¬œUI|^ÞaQ1M-J%W4J3›GÅÇ GÀ40~8>)u ”JöJ¡šš‰‚3¬Hih ½w“<’â dT9›˜žr1ˆ |ZˆzžÔ¢;¥£˜ Y9€# ¶7`³ öÕzPÙðþioñv´&Wk§$º ÅT¾ ‘|Ú9Ÿ¢éŽEµ2ªm?¹` æ¨q*“Ô®,-I2Š9Y¼C‹þIêa“|^:E+º:Îð,I'ç7 ³ì(GϨë`¼˜ÞëÐ6æ®·“Ê O¦Ù"²ÑÛÙÊÏ%˜•—ªš¢²~]š/’W![SªùݦXŠƒ3Á_Qæ‰2G*Kìf^:˜ΥyËk‚ù€ø~2E~ …¶IÂQJ[Ú[ÌËÚv:Œ{6ÇÔ¢¢‚‘5¼6¤H¤ó ä,¸)ÅnšRHdHý†9HeÆË„¾4m˜Ó2œ`ÄMУ겹™Û`Æ”âœíÃÐ$U¦ô\y%Ìþˆo%‹lÄÒ,•2ĵe VÆKªmÚ*ðKHŒcŠdI3Ø–´”rÐÆ×½´¹Ž Ù£Aúº†SŒéc˜]™®>#ù"0ST% Ä‚tÂ.N±k šG’(1$¾R!·y¼4—¦fJ¦¹H%«%ˆbe›¼3°ÓS©¸/PÈÚWr¥¤íRR ùÃàuñýe^IËÆ&DÝeËÉÕ¢_J^oFâ½ íšI—†"´*O˸Ò9­‰Â(pY„9ZŸÁÔM§â˜?ÓðôC0ëYu¤SNóšS¬Ç7æ»éGm%à*NÄÊCRfb¶¡‰¦-Òׂ“•­Öí£IÌ©RîžÞ¶¶LmÛÀÆù6L€yôr®HýÓö+š‰mm+ ‚¸ñ÷Ö 2ƒ’6ƒ3¸jéò¾UìQ Å®j~%u9®ÈR7/”XF¨Ö¼4zh¢²™ôô ÙÉO$R˜ž´v¿”I™"L9¤Râ 4P¼Êes~ÜÝ£À)œò‘‰­Çç•ÈŽgÓ¥‰ŒÊB£´¨”Ìêô½]K“ª¡è>ç6*¡à©HGª “<%_òç{”NEÞÆp~œlX }Á™t#m{b¤ò˜©Ë£#,_Œ(ã_½í½¾FÐvVQu¤§²Ù9Îé©Î“v"ÓË4Àu/í[¹Ô1ö¶âûáâ$åÒ/,Ù[[Z~*…Ê{ädËIYШ»ÅV“å¾tkŸÃŠ•«¢”H5Lé%„€™OÓõ¬/ƒœ`¨ÄҡʯÑSmrdH Î+qžX“£„§ßO9;¾~œÔ¦ ŒNÐÃDÓ>œå|’Ä–m‘#‘V)›D³yõ§vTêXÕW?ÑÙ·jiO—×Ý»Ì XN]¬ÕÁ—ÚBÊhÕ2‹ƒñ&öãxþHÒ<W£’v{ãr%‚r‹¢¢`‚}ËQ)bÃÙ¼Ïú”fF2t^ö„¦šÒ"›|çœãdÔUÙ1^œf.•-Ô„ñΕŒÏ²&÷|ï%ç(¯g «sUGTFñ‰ 2Y¿2änd §\,!õºÞÂU“*è¥ïCÕ“‰Ÿ$âœLf4ÿV2²­%†HŸÈÉ$«]é%3rd„ŽÄR•U¾§zàxÚÆÔ)G;-±)³óîi¿Öð“áÄÔÄp)©Ã J‘`µa¡HUs¾RƾÒrF "¼¦„££Jtgª­Õ÷, Žqz—u÷vúûžÖî0!rlГ9\’Ó„é¹Êò²† 96 EøÊy[:Êl°Ö"•á¨vÀ Ð½t–µË`U f¬Í#Q‚—ÄC Þ¶Pzëä9Ã…ÎT\º¦è ÉÊþíäH{#E»á¤Áʰá\ ùËs`@RŸ6 <©G¤êäý:B”ˆåÞH,ÑѾt°oÙçµ,'=¡^ém壥²Æ7&ƒŽ›’yÈCâ‚ R&[ÑUße£pƒ”:^º"cydÆr\Û×Z¬ÛiuÞ«Ü©PJN§mJ¯¢ç*¢bm㚀Jq×®èÂâ æ®iu,’^ÇŠöÞå]Þ`×Ö`¹ôÂa²{›,dÓíµö#’éÉ7ŒIî—ÞI^:´~Ë‘Ƥ(˜69â‹ NúdñEO\¥´Ëü&½7лj¥Ìwz;»†ô(´MQI+vÁ8É1Á0q6ÂR¾FûR›@½jp˜ñÊW¥˜Ÿ–rX[XeT~'yf2éÍ(>Í11!›I’:%C63o…©,”!çÑD³iŠé“P*.©Â2+Ë6½xÐkËNšŽóP;Ú†º»Ùá´Cwl®yJ·+°ó)½->ö@'ÎÔ\ø¿ùäù%N%³Ý0Œ±MD›´9¥5¬ßI«ß··¤M(µY,C°Ê€¡õíŽÕŸp§´¨â¼ Uëû´: ïf=QÛ d×É´ëu}gÑ®T0ÕÓ±’+e°gL¹Í$Õ9Ž&§·c¥ÜЂ_½±,l’‡bõ‡¬ÜcyÞ:»DônNïoRÈ~¢ö2iæ ãΛe2é].Ž)sÕDéòe[zˆ&GÄ¡ÄÃÒöÁîAÇ èÉ^ÃÀ©+{†8Ä=jÙF&ÿ õ «#´¯‘nl 7ÎìÁù…O‘g=$ kKS±³À‘!KV{”Ä6cù ù‚4Ä©2Ä)M=,ŸDt¬ÙóMBÁÈ(&éI' ‚ ìÑÁ ŽA¨¸*íWéÍÃÉÔpv“,h󚣬=cNQF,±ê;¶2*ŠÂÒ–åö²¾•ɲF'àJv×ÒfÈ炲]à|,U¥ð£“U©bI†gSYW¤wéIœ}åT@U)ÇBe*ƒr2AO£-“‡ZïLŒ+Oec…0¥û8¾~³)Z…ÚÁlÐE ²4H·4>ºÛ{H02Íkú®†×N9Ý=Ž××ßÕkÜ1Õ]mŠÈ)á©j²]YíÉcéK9§¿¯§} {]—Ùìoïèò7„Ìî"jÉè(¦§¥ K²a>’šây2^ùH*OÞÕÛéH+-_H“Ð`’éî4ñ÷í7%*‰.EXjc”ìNõðâÚ 2t«Ská]Œ&e®§ŽÈe&ïh¢0JIV´·•úJ”/ãY‘`Á×¹:#“¦R©P¶ðxì½]†&“"(W%S'+äÀîcB+ØÎ9Vœý—f§{Ð;ëÑÕA”±Sèf­”½Sa7·US{7L~’·©¼ØFsŠÁ9km‡×¿Ã>äžË%ˆ?M>›‰š8*R_(Û[«pAÌ'ã”45š‘dßHSÀ"yŒTðl»Ò*$¯•;‡×ªá8äË(ìâq?_Î ì¡Tè’urÁ7ò›)~©­DÍv´c.w”+:f: cöùüÝ4uŠfœÞ`7)W:¨gåKYÇìŒkhe2ú<Âù „™Ò„>¾Òî-;«×ÊX"ö6K¾éa9 ™µèXêäÎ4ùÄ) 1”á|‚UJd¤¨ žÜõMÅŒ§@97dbMúéƨ`÷UÚQô&q&3ކ)ÅƒŽ²jÛ¦"@€í+ÉëHwÓbœ\1hycưœ‚|Zë/ŽêññÜ6ÓÅ™s.MTö€¥&s8p®)@¥Wx~N†ŒññÉV>ŒJ6¦4ô™.:»{»‡üÈAGïµæé¼’êZyX §‚6VUí´!ÎÅ”i`\2öb=é@r¡àäo¡rö ìq–·x"¥HÑž~r`!! §ÈÍåpwÇŠŽvÛùƒ3wË%!“‡=F±ÍI=ç4ËPUyÂ2Š~v6¯cÒ:ü¸—Œežç¥Tº£Þ/óì]i6H8õHK j‰Nè”.Ùq’ŸþF†MOƒ „/5k×Íp'õÒÉ´zMU<&oîSpmì]3i@h¶ãÚ0¶ìðy~@Y)ÖFr,®së(æFŸuõö 8ò2ní}K}®ƒ­î}i•|¨ã÷z_Ú÷–<•°Wf*“þîEÚQù53‚ôd€òI÷æ©<§— fŠgsÓî–±gvÉÞ.|KË·³1fE}'gì"ïÛÍ(Ž´™Ôè஽6¨y*Ð#ò³¥„c?M†¨t|ÃX¼¤–˜yT¶‘ÔH|˜LK‚á‘Jam0ëóVAb8fN†ºãÅ‚×q¼¬8;¸Æ8sfk@ûâò,½ÜP] 7Æ1)¤O”Š}QlVžH3öEaè6ëÏÇ(½iD¹Zk•£µãEVWôÖŸéDLZ~* K¥¨|iýÛóI%é2ijš]f“|8@IªOí/O&c㎲Ú'íŒaãrË5VPW=ôý i‰¤ jƒ¶Aµág˘ýmÅo«zaNŸ¡ØXG¡¢ge[ê„ïdÌŰeÉ|(gÙ¼†n²ØaÃàÑI´ù¤J7¥Ý¹¼TÚ~ü]*”¡¾ž¾³ºT¾8!7”tÖOÚßñ­T8u^¯õ÷ v¯Qf.IŠn©S!°/&céqÛß”D%ÌGXøÉº*})À­%•|@Ú5o64:f ²d™4JèÐÐTòaR rø]f®}­á»ÊöÑ{)èö™%ÅÉg¾z*›â¥jrËŸÒŠHx­•ÿo›:3(‘¬åÙU×ybÄï›,5ã¡ zÓþá~˜ ì–i9E‡hJ¹Ê®¤2™}[vÔ¦­ßÞ’19qÊ|åw4E‡Á£¥)Wëe)‰P‰àžZ’òš±òUü=Ì„Ÿ£rl&Ü µ“ L XmÇVÎjÉHÝ4b=a êrIê9ËMÓ#¶“Ä9xSrÕßøUg,Ù>ÖÖ²ì¾ò•‹:…R%êÙIiÞg&ŸK…ÎŘ|A¬md¿‹Æa¹uRSkñ›’çù¹—z4ì¨Ë¨Œ#_»!µ”ìH„¬D(Ìó¼ý)õû#ËÊòÌáb‘oÚÛu–§W{Ï`™Õ-Õe öæˆ~Û‹6¸GL"6û%r«‡ü§¸zu|=‡Ó)2Q¦!TÞ¬">6 ÷b¢Ü?áq)‹kbÿóY]ðD–X+»éÄ¢WιAƒ^E¼Lɯt M±ÚÌ–p(‡ã:zI$gBôŒ¤c£…²³¢üÆص¹õ¶’Z{³Ž¨—"qþ±žñŒ¯òÅŠÖAq±Ê¸°…±u(&˜C£Îõë­¸B9Uø•DsÜL‰Ñ&ý@FòT4È$7À†ÕÖ—áõ·yÇ8O[çÈûQm2Ëù`{0]Qm©³w}a'zzj×Ñ:?4iÙ?ɬçYµ³œHGé<šå(5qÁ²®®`ŒÑNQ Ø0½, •LJ C(‹Š˜fyWo×@ûPßÀ 3Ã?—ñ€¨câj=}tð…ªå ý¨9XÓ¬§Þ‹ö¬ÈåÌ-S?‹]8ô*mÒÏ`óãÏLGöWÉ)G'm»TAno£ú¥°F´!xo{fþ.)UãŸÙ59JVº&›@:gFùJ«Û;;5‹]2Âé©­gÂ6¹ÎN,—A5•‘(}6vÂ}Ÿ-©ô»JÛIe ¬·&ËtÜñäÂfø• eFɯ]ÞÓ·´½Çë[¶ N¤7ÔN^.Î(÷,å&.WVI¡5¢„ù)&%™ûJoGtÔÞ鈵¢D2…ZgÄrº¯›4š¥É&7?L Úá.sñ¤J“>ÞùŽ: “f­ŒHÅ*©f„•‹¿>cÛ²0Ó• h³b328¥{ª°–äg·»’JÖÞÓ&ÞÌ¢]r7Î9m_ncdü-|+#×ÞÜÒ§u7&óÃÚ×ÑoƒÐÉq³è ýµlæt\ÞÚZ1oïæH dÂOû’(p¼BŽžö‘gL§LH¥MVŒ˜/ð Ô„ÎðVõ÷kÁÞ5™Š~⺡jÛSQÑ@ó’'OÉ•öë†s¢:1¤<Ê£¡‡‚¨p¹e¾‡W!O€cæe¹Wô†Å¼Ü½°CË–hqÆ[‰MZ1©Œ“Iiü–Gd©[DUË»9Õ^ŸH·]ýöfTMÚ…'á›Ð‡ÀÔàT6¢íî3äúà-/Ú`-M™à ´C­D“Ž\Y³…œ•§-T\0(Çü¡Ù6-eP‹e¡JhIR^›¤ç[n›‚޹ô¿”#l¹Áþ>¿RÜrǨÓ>™ß:Wгû'sð´eèÄ D‘2pX„Z0Že/&…ƒ–ò¨Î¬‘ åD`¿`‹âÇ)ef3œpTƼ7s[lÒÚÝ 8ÊeiãþqÞú³ ñ]aÅŠ³Â‰RÕÊð Ãþ~꼨D¿bZ_rëSeò*VX]`ïe2¶¯”¶À.¼Êbt?…Þì œ_JÅÇù¨‘×Õ·ì,gçÕØ¦ªMXvôÀ›yÎRù(”–B <æqל”ñò*+´Lo8|2L&zÚàÈ˽‹Ôü#y¾1ne šw™ÊT>"çãî¥LŽüðâ´Ô¡d¹[µUd¬'®ëôÞ€ |tЪòØ‚Kíù+?x"_W! œ5z·Ç³ûÇÇ23\yí®Ëýõ`?Õ+éØŸË*›Å±R"ʼ>µ€]ðE%¨ÓʤòÕ©½àÖ'«Oåþú #žzmi“!võþ_’Þ3'ðKüîÒq©8¹ÙÞ†”Á â©xÜUªÊ±u–c)Š©È×dY©<ÞØ 1‹LÈêqÊÖIסÍñ³hmáùéÏš3:+ËìÂø‡²w@ÊÝS2°†4ÇJÈqLŽ$ušÓLsÃúÐðT‚(ÁQ'‹¹N’dñ¤£’D”V•gÉ+‡½hCc Ë96N¡B~Ç–å¸h{ÓÐB¨]f*ê­®2“Á³ÞyÏ/’¯xa$Sþî´½éËïn…wYGÆä+Š”“äØžõÿ{?òûž|½K=4é+ðÓ€ŸÖæüm¤ÿ 7¶64óuúiŒ¶: ÑhsKëÂfÌrCcSsS«ã6¼)ÿ)¹®sŠÛO9(ýü¹ÿ×~yá]Þ+ta¸’ "ѦÈÂúæV—µÖ77»‹äÿ‘¦HGÌMD:Jn,Òçº#¸°|¥Û9YérOlŽüoêÕŸúärX^þŸýóSCs´¹œÿ[››^åÿÿ‰¹þu®2aÝÆúh}S{z)“t-j‹¬ˆå¡Ý¡zw>$ÃÒ|jt,6á®Í–2£îªLŠ-NGö!JÜ—ö¤ä w9myDâÈío>qbb‚ïõÄŠÅîöÓ•ÀÊÜy±ºáºxuÃÉb¬n4‹a~åI†ÒŸH¤ñ§E õL‡•>EÎšŽ“Eíêôg7;â&aÙ¹äˆÁðcqø‡Yiä$X_ÆêHD¿ŒÕðâ~"ã®ü.:b±;¯¡ÿÍy›è¦/^AýM T íÑ’éLÊoh‰OŸäº‘¡,ÜMW¾w„VމwܦÈÐX²@„O— {W¿›¿âGŒt¸8ݘŒ¬æá\~mn É-pkcK†§KõÉD)K\õnw"6í'Ió©áR1™p'SÅ1p°K_X–OñKnê\ÜrS#n ¿ .½‰ÂMe"ô~G:ÞëÇb\¾”.pÃÍ•†Ó)ùʈBî&éQÑn»€f0#ÃÉH,>žÉN¦“‰Ñd¢¾¬‡ñX:^‚U‰£Šl½)+5sãù陪“c)th˜ÞÂDÔ{7)×6†ñL¹Å¬Ëß…± ‘Šr.½\¢ŽÇÍMè–ÍTd'p‘g!… ·õ¹ñd:M“+È éƒ_!­(JFrÙT¦¸€ßGè´¹ Ã"ÛÏ`^ºùHX<;öèlµ«¿G“cWKšOÊ×Mb©¸lÌ¥3àCŸ”ΣYêÖÔ!¥¶U 4XÊûõ &“<~‚…ºHù hãŒc‘u|¢ $Ÿœ’ÇÜ@²óT\u¡˜PÅŠ0ð®_ ªŒp›'E"ôBP0«ë¥Šè AD€|+Ž®ÒׂÄx@Ó®|»õ:>£7׃õêTv7nD2ÙÀ Ôd ‹iŒgs)L!*˪y˃Ƹ_gÖ«Ei~ùàž¤ é€ÕQúø.€2¢M ºp ë“|9ÿ$¯x’…Û3£i"YÍî(DHs”[ î$’£ù$šj¢OõúN ®œ_JmŒ¥‰ɪMÅ}/ŒÙ‘9^35ˆ2IY‘Xä_tõ«¿‹n¾GU ðzïÎ8-¨ž±Zõ›Ó=l‰Õ¹-Ãø¯¯çLêžÉ¯Ó,ç?‰B]t10˜HÙh¬9¢n¸’ÏE†PÊ›!‚!‰Zñ AS„yw2–)2ó‘XÄŸ½3+52Í%ØMÀhIœD¬ÞR[~¿Räwg²Ä“ÃàT—ßt³€^,å¦éûˆòî<žNÙ)â9‚3ÏaòÊë%ë–¯9QG†è ~¶C ×t–_9<=¿ÎÈ£ ²ù&EŸJÖc.KrE§ê¦ë6É®£cª¯f‰^E—,b$ïF\æ÷#AsYJR}¾ˆ¤Åƒp»)J¥ÛôÚŠ&(™–:žÍæÁ•¤;ê#]RàPðÂæ¬ã£ Í6„á[ »:@ªcF߆O’{ÇQ> kX9}«›„õÌöµ…)¸BIT1¥N,žGO) kësGÝTº `/¢+ûìÎ(w³M5ÕÑCuüÐüH/ˆDª&ZÉ™BNÈs'`ÃùÒ€KOÕ¹IúLdÎT$AJdçÒ;7aï)±&Z3r9á*mÎoÒÉå“Ð}FªðR‘µÍ”$¢½®0¼5-*݆!‘·îFpwS4Õ(4™»!5™ìÈ…H¼XOkÃÃÐcEÅ‘ )“õ{8%mÀtlr¼HVª BÓK† .}W­T²Æ¯‘˜ À¤².­¤ìŽœ™›ÏLÀRŒCD¡ßLå`Lˆã󱯱)<4ÌÓÈ Ruî¼aù¬| 29–äÞÐoš¹âdV晑¯’,•ªjžÿ¤á[0¤>/yšîÊ* KæÅeËù±,¤ÕX2‘Ç”é~SÉ1 ÒR‹M+›)“ćÊ3LÌZΕI µ-«ÂMd‰•“Ê$gLr{z26 IB/—•…´‰ÁC¯Ó"ÝÃ#¶MCgT–ºi]ÕЦFêÔ”‚¢÷"¿^5¡[«[8\·Ð(¸}”¯“-²Â2•³Æbâ•J¡àÏ–©Æš kVÑÇ•°a’y&›žìFÔ³¢v\©(u./Jú(¡tlb8câ±TÕò•unçP;¸¼Îíé¬#"—äc‡éi5,€N+ò jºåýdaý­^k¹)å‰`]ª15’’OЪ2KäƒÖ‘­>ËL¤È<q¾9“tÖ„á³Ý$Ù#­¯ùÚ’ðk×=Š$I   Ôsó$ Xª€•HŽ¢ûÔK-R ,_TJîrꢜœ:w|±z€,¼®¬,. õ"_1cí—Üš‘Ëȃó㚯«hžïw µTîšt§èRE2õYGLvV™BÒ«‘ûJ?JÛÝ‘˜Y¦HwÔjpÞøâ†ùuLóª^í …FÏÌèS]$æËít +§}“Ø0Ѻ$JS©/ñT6“ÔÝç."–™R¦û´ñX¨Ü 馱r£#¢üvÈïáÙóŠøC²j8Dóç»EߪÓ^‹ß7ËkQ½bW šïfø,Ò d‰ƒ"MóÝô Oå¤}x*(ß<¦Å¢_RÉ !_b†‚zZæûòÂölQ®•mä2ª²ž4 ‹ùáXT å"ÐGŠ^À†åÔcTwŒ,µîù>× 6 4|[ÎH?Ô`¤s„¤såŽÏìt.OßR‰rºO2ÒDLCšQ™xåbP)À²`­ë|—ö¥8Ç8òô2ñÆÍCsç¥h¿q¾šþ:ëlô u)W7®K þ®›9Ÿ–‹#値>n-BÖE1x6¨ ç»f‡Ó'%â2mQ¥tœi"™)(zc2§ ©Š¶ùnÅ]Q%`¨ *jE\ ÿøÒL¶^T#ªqÑ|3¾é6UVV«„XàÜ8*¯OÖólL£ÊB<ŸB‘ü(SJ×B3‚P2 bXv9ª± -’e‹ŽÑ‡‚*Ji²ó刨ˆu¡D¡?«A%à}ê£Fh| óU£V‘îòuujÒˆ”5„Å£Ö"› •ÇKy9»˜!®¯±B} ÂXæEWÑUBx-­ÄÕš]Õ$§|ÝU@)²̼rýýó†b0?)9ŒÇt' )8ùB¨ŽYŸ‡É7€“•_G>ÂLΞ—ª;¯n|>‰np¾ÆmF”e\¦_xðˆ¦ B¼¿\³cZ.x낞 K”_KÉ–ŠrÕŸPÈ,wz!¸»ªm°‚}U¦&PõÖ”Fü÷ K¢-»û »€1÷£… ‘xÈw3=K\á•e¼a^Rʾ`ÄU#dj…qùE¤ÒÒ×äpUD((G éÔ¸tf+Fè†ÊBëåÚïe[>߃/F¸@“¿¾Ô#zƒ«”=3œdL€”ò¬¡ûð-rÚâ¥:kŒ¬6#‹¹æ™~KßÝ‘›Ì芺/ã‘Ê­·Ø­7Ï—Éoý{sêÕŸWüÇ7ù±Wlxÿû¿ é^Ùþokó«ïýùéR>k£Û¼Hæè4èÿŸ#Ñ).u[Zƒ>£à4lr[Pã‚}ÔÈ7qÁf·%)«%ØtS#ÁlŽXu•W‚Q.Øj\Ð8³³((ßj°0XpFgQPžŸn 6=£³ÔG~/È"¿`Y] RT°±A,¯ËŒrÁÆJ5Z¥ÁpÁh¥]»`”÷ (ÛÆ.(.W¦yרlº¬ Ëiz[ÊšžY0ÊÙW­ÁÝ™MGù]•reftÍšð(¿r³±­RA«vôqŠ£V¦RÁº &ÚP©à»Æh’9Á¬Lp*Í„7OsQ7H¸åŠã\cÓŒ‚Á ¥i0ÑæM'4Ò-Ù:Úâ¶60áƒË™¯£­nkÛ¾ÙÕ¥‚Ì×Ñ…îÂÆ} .È|ms[›÷-R¨éVæ™è"wŸ\(Wf°•Y¡©ÁÝ'ºª ³BSc°àL0ØÊ\Ø 6=S¤ ´„Me<3“ Q#,ã™™\ˆÁpÁrž™!)0.XÎ33$Åàò1vÓ²‚3¸pP²kS[YÓ3¸pP €¦2i6SR ibìæ2i6SR  1v³Z™}³+ c7G+´À d×f¹2%…« Ò`š›+´š&Æn.×33˜kPras¹ž™Á®¨‘»yጂe`PJŠæ¶M—‹”Vùú©·Ee›·4Ø?|©­µµ!ÚÒÜд°­™‡]¢ f^¯ð4m¨—ÿü$Ký]ã7ß(ëüš¯ðôßm~n¾©róšá:+të%4ßê7ß\yò_Dó/aò£oy‹l¾åÅ5ÿR&ÁÌæ›tó _齔ɯÐ|ã[Ôä·½8Ò{)“_qô²ùÖ†Gz/…ñf4?èS~kô•§ü™Íû”ßÚôÊS~…æµØiÝ応R¯ÂäûÍ·¾òRofóË76ªæ¾ò”?Cì ù&Õü¢Wžò+4ŸP£_¸÷rJ½JÍ«Ñ/Œ¾òRoFó¯´ÿ_˜ž¹Ð¯`4…-•ã?Ñ–¦VÀòøO´áÕøÏÿÈÏ;ºz–pÀ>>Ð9ÈaôÎY‚¾ïjÎïÃ|½ÙqYÎ<çuÎk¿ô–Y‚þm¿ ìп*ºv¨#ï_Šç=Xп5½ŽóÌߪjuþÜLÿð,ýsñ™þÍRÿÎüM1Q©¯!« ªáv–÷®Rý–ÿ¨«¶þæÝ‹=]ø¸g;ýúƑ¹ûÛÇßøûs·>ôî‡÷ö ŒÕu 1öÀ !Î\=¶åk³Äžû ç©K/E}ƒ{¨ðÙïüö?ý<ìô_ôîZ  w|~×EçûÆ­ßyúžã_K`ëk·áÆ×i¶¶lç’×rÉUò»Oÿèø£ l=úºýÃîÞ:ûFútÁÜ ÐÀÖÅk£jÖÓïÅðû’£—ÐçmsßË·k§Û‡ÒïÅsðû’ª§ã§/ÆíK.æžn­û5š;ŒfÖžÂGtn=´²õò¹;¸Š G,¾zÝŸÀÇ­-cô{q¿¯î§~>óƧw_E¯Éáâ׫y8E|¼¤e•½yîí\Ó’9(Ò9‡ž^Á¿{èB?ýšC¥çÍáÒwqét÷šfîyõ¼åÈÃùîN¾ë âkfqOÿ®Åï‹Z6P‡þûOß<ÜÚr(•›C}©Úó:ù.ùÍrpÍsyÐÿüÿÑr}1‘]ç}†…”¤Ü0,sYš‚Â*ãkY‹ª !¤‘:U‘J¥y˜´¤E-J°KZQ‰FT¥gÇ2·kìÅ)È < ÁØ k³6ÎbgÇ6Öâ–ÍÒ„¶c %Ø]­·îªéù~¿sϽ3\ÜU­>ì|÷rî=ß9çû}ÿÎùîΔ„ÖÂJT³¨ƒÓq¯ZÄÐëú³ïW ³ ·l¿–â-4oËoGNýNZ+r=+WÍ“Óì7J~_&¿RáÇÛ+à×ãç׃WÁo­Z:œ©F‡ ¼Ñ/7öš¥¹5YõéDs9:Lé, ’‚Tà~£è£V~[ëÀâè4Xt¡1Œ )Ë”ì~¹žŽ%K ½‚SzìJ€|®žBè@ƾ¯.×àÙ0ZZå&ŠqÙåªá2 cUŽ[÷#˜N=næ[èb[š­¥*ŒtÍ#hCsZší¾*Œt‚#óô¹ïûŽ·# óÝ„²sí“·¿fÉcEÕ߯@9íÚø=ßÄ[Ý'«G~í^i¶ã5ๅæaYIkøƒæõžÆÛÛhÞ@ó&š·¤ÙZäÒç— \n¿PÊ(S“Q¦&£LMF™š§6Åý_L—¶_íá“í׆˜®’õئܴÂl(Õ”›zµÙضܤñ´S»’RãýÙ÷q4—Ã(ìLÞµO¿êäÄ^ÈMVÌŸ^a˜? æÏîâƒ?Æï•ð;޽DÖ¥2zKŒ_¶Ïêå`Ëñw±zY=+J£QÆPeHj¨—1Ô.5ÔôtÐÒÊÚ|öÒªõ °ÿJ§ÃÐioæ['Ì|Û›y3ß)0üoxsßU áì^D0´BÛŸ õŽÓz{+ÿ—JBóxíšó†fè¼uö5úç '§!îÜ<{Ãù°rùæÓïT^¼%¯ßSÝFUK$qí_JÄtÉ=–üÚOK²kÕý¼ ÷Ú~‰z\5Ó!»öï%jñëd8yÕÐ`æÿÖ¹ó"Rçç•ËŸÃ7+—oOÁY;¯e&ÀÓ¹qáµ°óá9[pR¹< Æáçg·J#Îç°Ž•Ëà~?cËBܪûÒ…_„G_=µŠ‘šÅ2ä!Ö#}þ%ÈeÞΠ7]à½5|HA¡¸‚9`Tó}~û€Õ´Š·-SÅò‡7œWà³¹¬`׸íY¸BQšb$~úœB"Ežs®i 8¯}œýò¼qöºóAåò§_¯¼øSyýS%šH¡hBäž‘d ’œ3’,…è–Œè]Ñ5™içΕA^?ª\þè¦æ¼«D7ù2ÇýV†Œ›"¿ü¹2J‰ìÃG R*-­pÿE[qå£üd 2ˆ „^>ò£5:PJÓ*)’ßãÏkPJ#$@½?åtõ?(þSúÿ7†Ðú?uƸÂé3®+œ9øHÄb'ý¦AÔœ¼Oh/HàbŸ_Aœa J¸4$’5ŒßùØü¤%*±»£xºO§ÄvÃöˆ—±ÛO£µ­Íµ`0mømÇz=óË '.Ï%0–ZŽ%‚÷sQy¼Ó{¼ï`\»øÝ“íË¥} ë_‹B ¢žo6µá·]V Ž?'$ä(«¥Ï­=AÚ¯^TÒNò™ab¡ás>øÎë§DQvC¢ºR:E_$F¥¾Œ@_D.Ô—.è‡,?õVâÕ6úñö9Kb`çÇ•ËGçl¦O?8À÷Ö ùë¢ʆI$-6Lx‡?R wF´ãK¢8Sg¨8Â7¼›±Dä·ê¢¯(õ¡zÈ(”ÊÉ.|vx5z)sÂÔ+—_—©ß–1|¨ž’9KäÍ9Ç1g‰¼9çqÌY@Å9‹“ÉœP]û×åÏ%eP¶)›òÛ‰áµ$ÊÜrîzöaÈo$iƵ}€?EÓ nJ茣fƹ\)³r5ú\À (+ùä73­’Ed,I œ7¯ý¬$c‹)õ†öCÐÃU.¿™±%ÍÈ(©(‰öˆÀR°žPR¸œó½Nv‚ƒ8ÁËþ³ëe±îåkmè=j 9-bj3Ðl‡XŠ3®©žõ{YI´—%†—õœì ßɆÎзÑÉJZ”©ˆHK³ni§†®WÀFo*LS3´Ñ³ÆFτӜ}‘óê¤jΗŽña·]6 _4ølÆ:­|.`ĬpZ°0¯‹îÂ,ùñ¹äásOãó¶Ÿ~|Îi6k|Ž{øÌé¦ϵB|.pq‰Ï%ƒÏ¥“ðIÀÌ=`ú Û]ˆFÆvb€±Ýuk"`lw]VÝuY+ŒíÆ>˜þÀØ„E£LÔŒniÒ€± ³Â5Y%`Ö `Ö˜—á,בEšÉm'ëé#$“„>ªIJJ:i!‡Ÿ`Z&ÒQÓJÉÍy•2RÝâ ±‘IY—Æ8©D¬T½7&—ÊlÊîVÇß—{I e@¡lÑF‡ŽÎÅedÅÐg,q3*’{ƒ‘ÝÛÊ{žzèŒÉV³qx>ÙèÈŠµÍÂDZIü¦85I[³Íð˲ő•áÀtÖš Á#ËGVlE¶"Ø7Gð˜Xõ¾žß”¼?ìœdD¢dYh†µß,Z¦¥5´i0dz¥âŒwY ÅŠà¯<µÒ3%dÇJŠÙßxFÙ$w Ö›'ÿSOoT^|?Tèsëc%Džï7v!lDZƒ›.¬·ü°žõìà@‘¤loLM}=¤‘=¥ ^‘ ¯Ë|ÃõÕ1oÀWë|cò»¡SLN1žÏpL9äjtB~½H·ß;û–èö;&å’Á÷A·‡‘«Å"¤‘ÛÆ¬;‘C†s>eœ²ìf©nvÌÜ8×?üßX@O­Á-OµûüªM¯ËÌN-@·§ÚqÝRGÕ†JjÕæü·9ÿµ{Çh·\NeŽËþúÙ›OþÉäê×e$™Vñ­óâŒWÅ/ÃEs ’a?Á,?|T¹üjÆ÷«mqóiÚâ$‚–ø¤qJ<ëâz o½' >w!šrƒOdËQÈ=û~ÿoLÿSáÆˆ~ÿÓë÷?Í: Œhÿ#XÏ9¤›¢ÚÿÀzþg—ÒØ£ÿÙ7þgßõ?Å+€]NnQ|†ºíz¡,Ç®A*7 Ró…Þ››«¸‡îêùÕ.™êº¤¡z[ôÓƒk®¹hÁþÀš×9ÝRA¸ŽûàªV'ÏÕ9$V VÜÐ%ÀN©5;ø ÔÜrQÓ]è}™y'Œ³¾CÔgÍÌ;j¼ó=w]î ÆöPckÔx˜é.ÀŒ]˜s‹v1£›J]ÌÆ,w¸*÷ˆ™û3÷7™Ý€ãE:­O“bnÁ ·{Ûš“¬»‰i¯ñ±<¦ó¸]æqÅyÜò÷t§²öd`ÖÎýNm?NÜ;U´ÿVõyM&Ùr“m€ó‹!c.å8%óp¬Ci=‚»»ƒ=ïz²Î°›1›œ]œj’lQ•ŒYe°8wÀš0µ Ú³ +Êt"“ã²€$†§¡¨IbbFëöBIŒMè$¦.JO¶‡ sÕIL&˜á·•}Ï´ÊyFÆÊÙ†çáÝ`žrÞ¡yÚäɬ+¨yºöÿ8k¤äglSšxø T˜@m… ¨ÃP—mjuäúÞ;¡N B ”ð N „åñJÆ¥ôMø«.…;­\^òN¶îó0›”õ8Iâ‘Þ¤ç)ðÒܘð…_ Rƒùob~ÃS j~‡«ûÚ'ïýPŸgZú˜ÎòdQþ³<‘³B¾#?çU9š„¸êq y8–‘Ai=‚ÒDlPd@ðoƒ¿ôï<ðß ?4šª2àß ¢`\Qæ-@ÜD°¨øƒ>Áý›Lë!ðÇÃÎà?ÌvÇÃÿ–ÆlWñ_ÌýÁñ¿ü·üo€KÂàÿ¾à¿Üà3T§„\Sê÷Äíþ+ŽãßåÄ?‚âßÕŒMâPõðŸøÑ —/\ /|øw7yK™Ûa“×Úñ¤º;L?BÅéÇ#’~h¤ƒþl?u¸ìÊà2=ÅÛâõøýÜdw¡w{rèj¯WcFÔ¾ u“Bë4Z‡ØJlCw)Ïÿðð´ÏÇñ›:q²Û…ØÎÍ­a¾Ý^‚{› {CaåjFŠwÎ|åÚ}UéøWœúœtîâw¯Föså²þg¢kŽü/ÓÚ®ƒ×iõ9˜kÒã:¡¹b‹Š:¦ßÅ̡ߩÑol¼ZrDïÏ ëÌø$’˜aS¿‘vˆ¬©ßIW¿S~ýÆY?õ;Q}L¿þ(»¼º )”š­ßmÕI!åéwãÉ$õ;eô;åFÙaw¦Uê æ¥À@§‚K&xn Nû½wA‡¸Øô²f7<ÎQ=bÏ4‚èÌ‰ÂØs…Á]òÅwHÈ íÕW’ŸÌ‹nPL E5(Œ^W}~a,ÕaˆB #îÆ\ —# ¹}þ*LÕ­më £ XÛzÔ‘Ìjk{äMbÝe ¸ûFÅ—ƒœÉuÚáöØË˜ÄˆŠC±!e‡•É¿ó]Ä#q³Õæ•»ì§I±Kvc‘À,Š\,)rÉrT²'˜-¶‚RÚ’µÉì [ 75 ½‡˜EU‹%U-YÁœjÖ%-Ù9š? Ã3 bòYˆÍZõdd’zÒ+‡Q³Ï7 ‰ê¡mí€ýgZÅtÍ‹­Ó°_3 ß {±nö+Õ„=¶‚Y¤a¯ã—`®Êڊ隟ö¸®1딟íǶ_³Å^œ•¬.жb†²ýŸúŒ³k“A·Ú3l,X]f\иˆ1ÜY¨3önÐU±! #Ç h(Ì Ûýt›žU¹Î ¼ —ë¦ Ay{M’APÇ™A™ zÈÝuéð@̯_.yñ帉/‚ýÏ„_Žéø’[¦ýñe1k8ÀµWáÂÉW._—-ÙS¯Â?:ÿi¦v©“ÀmþÀ˜ºá"ËÈUcúäÐg¦caß™)ìÏL¡N":5haé\wîêSš¸ îm|”±ÅÆé%˜ÓMØÛx_-_Y„Wœ»J6Ô Nv™'qV®F'/Ãþ±2ÌD`i¶!–õÃä5°æudn¬4…Çtà3]Paæ>?ù+ø„7²=QèúçˆBŸ: Ž?QS8æÅŸU¦þ ©Ê­?hFÉTK•ÏŠ24•›l[•9ÕhG-]„µt(8µòRsuˆŽÐšc+êM­9i]@ë"ZÇ«L¶Êè5[«–=JüšEøZÖ@qL…ƒËu^ùKµÎ)˜mÇ!o n"I’"D_-“TúNY-Y‚™A•ÌŸ`Ž»`NøÁ,ÕŒ̲š3ô'ðüÿž®aªÕhÞ˜ó“Ø™:mgdÉ}çÿíÄrœv&aìL"¬Ïÿ‹g.væ2­›¨¶”‚ImdŽÌü›‚Œ”Uj ËWq¸­(fmdœ»'°Tþe,ÓËEò1˜eŸÇrN³ä ç¸%sˆcæ ƒøßâé–¢x:ROwúŸhQ<Ýåú—äƒÇÓ-AñtäÄx:OwRê]Œà’&‚K†õùi©`JÊeªeQ]V¿TevmL%,v`Üú^Ô@›"´“NHý/pBê«f:¹°ª@kâî0]ÿäæÙOYØ»&æ$[Qe¢LÇòUô ³ºdÉWË efy,:«‹–Ê«ÝXÏLKD|˜ú<€Åÿ™£ÑÈ Ûûç°¥hàSÇ#sjù®¼q×o*xÒn`ޱ, W*Œ%éqáÔë‡Ìá£rüÜRƒ‰–ÂÀPðÈò^Q‰ä~a‰d7ÑÔCØkü¡\Në„­H—žüƒLk‚=‚yS =¿mf&Q ©0¸‡?®\~w^ …†÷¦«<8PÜoOÌnì »´a×à±›òñ÷øTyǹó}>~ô1E‡±™ã‚öÇBO% b’¯.ƒºŒ¹è+².¥Eái¿ë9üž6ƒžÃ„§^Ôö¹¶ê ¨ÁÛ‡(¯. ‚޼%q}y?E>`D>€ðô2 óãäQ€Q–ãG"(À°ÆYi w3)I5Š«Q¾ßU#Ù}KÆ=#Ÿ¿üRê/Ã'Ç?¾Êó‰ínÓ Ç«ío—}¬úºš/{…å#’í¡´?Òþ>nº³¼|V*6æP¼±€¢Ê´N’Ñz ­y´¢î›d0¡â&ü„ `ºÀììH+Ÿ*(d¬ÚãSÛML~Âù|© C‹–†8ÿ±dš:°œ ‹’Ä?D~"Ÿ7ÌËw :OL›8_u²SùúA×úŽè yr¾¯ÆTúæÜä"µÿýL«|.‘±åC ª½,,õK¶î[™^ωΞ&7yp¢pµ>˜Û71¿ 0Ü2  Ã\ ÃEáf(Îoû^þ–§M¶âk‘UÖê×Ç ¯N¸ä^]Ò—¬¿ûHÒ%Ç‹]rWlPÁd(ññ÷tHC;b ]t¦#ß­Ð52«:rÇ+¶|°’íåh³ãK_ªX"¥±CάÙñŠïT,Y,}žsR4ÞòmÌ`þSSÿÅ´Ú=L×LocÐ%¦#Ó8Ú³vi·ÿi²?¾Ù(ØœO{¸î5¸Þ ïôyÀî®ñNþæã…À>€šâ7 œ-œœmâ,íálø´wšÀ»8SñG0?å?ÀïÐðÛ2ü6BþsÛc¸qÚ;Øà]†®«@¬ AèóŠÉ²>¦Áˆ5­4±ŒXÓÞ&Ê cMÏU\ý–¸ _Ѐ3ÿð ®"ÿ»]§B* ¾ÀpEú\ÉDZÊá t”¦È§k£tPù¨z\­ÙØ `úÏXl'7ö¦Ü¨l_Ýd·Ô58ë=¯ÐgÐØ§®×jC¡¸cªëž — ßóxtdˆd˜d„dŒ$M2N2A²ØÞ—„¤c+˜ËjÚÖHÖI6H6I¶H¶Ir$;$Ýè³g}öN Ï¾ ´õ“ ’ ‘ “ŒŒ‘¤I¢³è³v}Ö͢φY´ÅHIšHšIZHÚHÚIâ$SçÑçôyô9s}Îr]æHô*‘,‘¬¬’¬‘¬ëÕ½ ½Ô@,L¨ë—•È ¦ÔõÕ²ìçôE<:C2K2G²@²HRû,:ª{ jPäj ûˆ=Ë9“4‘4“´´‘Ô¾È>^d/˜±ù:II3I IÉÖ#x}û¼ž{¯ï<‚¶]’=’}’’Ç>çØçûœcŸ$)’n’’^’>’~’’x3ûlÆ4;›Ùg3û$I‘t“ôô’ôñõ~¾>À×Ù6D2L2B2F’&‰ŒáõèfT;†×ëÆÐÖ@#i$i"i&i!i#i'é~ºÕó úì}ºÕ÷ çN2@2H2D2L2B2F’&é|}v½€>“/ ÏÔ äGÒCÒKÒGÒO2@2H2D2 …n•5ÿ–r£eIõûþìYñǾ\¾×Ú©~oMǦð@RÝüä£[³±u›ÿÞÆ/ùÃ(7æ¢RùÝ­Ú'×c êfÍ’†9w+ð{Rã;^yázøÂÏÃý :v•¼= o$oJyÁ£øc9IÅ£j¤#‘Ì£néX”Ô’44’4“´´“$HºHR$=$}$ýä&R!TþÓß)‘ï~W…y*VÁø'{õÔšü¹+‘*þ(>^çƒQnÇð^àù`-?¥æý¤µ%5]±Ø¤µÁ«ÆI«ÿ1\Åhìê¯ÊÃ8µ+WÿêÔ¿õ¯IýkÆd 2,dY/}A 6kH|QÅÑ'ò¶`ü[Eãßâ°¶½ñosü9=~înLà^ýy‡®UÒ•ËI»¢V 3¥†n—òªQv¿ˆ§ârÜv°ÝË`×b4ÈOÿ¦åù)"fO1xIþwŒchQ‘Fµ4“K±ƒ(gíWØKùå>Nº"ÿÕ]ÇŒêî¥_3Ñã»’_üv(ó?´]p\Å}¿'Ì'ÝÙ>Ù>‰3¹‚Lç’|1MF™F‡Š¢´šVIUgÎwF3ˆÑAuº»XI/ÍH툌’ˆF-n£Ð³-Ét'dT#nEFÐ#Dt< ƒÀÝï÷óövOÜ#¤ùC³ïíÛ·Ÿï¯ýîw÷}÷äêyÞÞ3m¿-uh+uºz‚iƧÿÜ>e³ýV—›@õ¤)1lÙã>¾£)'¶Slñ¶ _‘ÔŽ]m†a…D‡MŠf!¿fÿþ$k¼ÞöIÂuL³‡ ídkh˜æ&Ó¼¦!AÐîË46tèîþ¹‹=kôo¶á̓âßÂþôÒŠíhÐN ®Fƒ4èDBÑ…"Œ"†"bÅŠÑi|ŸféJYÞðÅ"›¬>õiýø¡"R'qøxZ 0¶ø ˜ù8›µ+L{)ÒgC0ô\·}ÞT¦u ½Wrä³A“„ãmæÂ”òo‰¤‘¯“IÆbj´9¾#€qÑŠÎÅröjó-¹®uˆáïÎÄ-œ‰'DÁI¹xä>h4ÄÄ_µø«FÖ¼ÿ8 f0 Ä‹u´˜`‡$4ˆgʘšDÕAQÕ"̳-»r³jgfræÉƒ¨Lˆ¨g‹±öÙ4 œÚ‡h˜îù ºÆA!º"üØIó ¿Õ&Š“–Míâ:¸7²F_ÖùmñÐÃtBM;Õ^4ÖÄu‡¸>Õœ.z9ô6ŸµGËNz*¶Šë&zúyÛ·„´§§þ»Èø˜~­d•NO+ÕþS,ý§²:,%Üá<[„‰i?û41bÈgüXLCI #\3§Âlŵœ*G‚Ìéh" –h )îNÙÁÍžtâÉdœØâžgÈz©ö¬ñ2}gOâÎQ’A—‡0ÞnúXämÓo”îÐäáNù}ú1»`3’X ÍŠÁGܼò9›ˆÆMDã&n"à&‚ä,…ÚÙÍO:ñd’ž¸ð$…']x’‰hÄGˆx[—X£3åP±¦<{½Fò¢¦€×4¬BkÖzP'y#¨H¶×ê$;°@v×êÔzjµK,êΰIíä¼ð)rÎÞ§ 8¥ X\o0œ‚€S@ò‘\R3È]¦•8cƒLÖ#Û8QdÉ¢¢Yv,oŸ6úÔ˜ ôa$ôi#¡}ÑÎí<ú0ú C悊B\¤«‹rY—æ8†p©$ÊÖ) Ò€Hk$›ÒêA-õçD›ÑAý•€‹.@tk¨½Ô«ó×'Cäs¿Ž6AÿüCÛi§™ÔkLQ4BZ-¹ð‡Š„FÈPZ…Ác ähš×vˆàVø#êÙþ´h<‘f£ ³‹K2­aÿ™4w&;Ûfz-ͶضªÞî`Ãê™ýd~A#³­O“—¦õ.h½[Óz;kýºÇY%­Ðz«…Ö_ºQ¬²w¼óÄv Ýòi‡ß‘,²E´ZËM޹¶V¶·D‚{6™…°VÓʼ‰·’5ê9ìϤyuDõ¹™Š¯h5ˆ Â9Ãî`\UN×Þ;hŠV×z¢—¡×½fýâ^Ý«¬þ>¥ÔaÈxDó˜1–qò»,ã0d¶ñ_ 9÷Œ±Sîf¸ñ>ÅÝ8åTŸàQêµäOÌÅhsAE!.œÄ…\øgˆ‹n†«žQÁ†¨›QU3Ñð}†ðÍ0… žªR D“¦V@´QUçg¸ªƒz­ÿgºìœÁtéPšjdnþûíüшF/ýN=(©· äZ’Ã%Ý3Jeý $¡1ÛÅXrµ‡˜ "d1qƒ‚Ò F4ˆq@$5ˆa†ø©“!1`ñu bRƒHiK€xMƒ8ÃŽ2†˜Ä„Ä{×+ˆ b•úk€Ê6a›å;Ç,{;ž/Å›UšÊ2îƒ.ÃŒXYSË `Ù‚€C }Š€¥>E@–¿ªYþ"[þ?|–yÌÀò3–¿Mƒ¸¨AlPf áŒ2„;ª Öâ @¬bÍâé?PåQá‹*˯D ªPƒQ–e/dYU²ôF ¼ÄïɳzO”© ¢{5*<³Š fl¬že*jf£å³„õC?3êže* A¼àWû5ˆ:j?äoBïÍZïAîýyô@ï‹ÞÛµÞ[´ÞÛÐ{½ÖzoåÞ_BïÑûA‹Þ¯ÒzïÖzï¥þìÏ †f¹ÕL~ðG51Ž›4´Šë0Óð:hè ]4<ñYÍEj†Òåù£6ÒeÀTvjvÑÈvñäõŒUs¨·0‡]Ö„Æï™Yîv¬.'.pµŒ'+Ú ždæN0 æ’Ì=uæu5æºÁG?˜K€¹!TkÌu1s?VÌ…,˜«Õ°V5æ.ΪéÌža@GFÙ˳ó> ²`'kÁΫ{„;£ Ê3Lyz¯Î0;TîÏ(v<Šä.Üàáì´ GïTŠÞXò¨`ùØG£Ê NFy9Ýåô™¨ 5ÆXp—n`oqXz‹HpÄB‚ú{v°WGìm{ eæ3‹-š'FJžÚË f‚ŠB>NaÎh -Bû+Ð~Vcb™Ø{#wœí) Úïôq*@[FuÜ‘QË÷.¨¦ªéÍpeLSM;3q7°ZÁD«/]«Ì ¡Éi(£,m r:ªÉi€!~ˆ~@ô[@t„¹¨X‹*ˆuËÑ"sÊw'dÈ‘eöÆ­‡ùÅÄH‰«Þª…ðŠÚñ« ©¤&ÁÉŒ +2úÖÍ"9ÁíÚ硬pZO¯Òž,{ܲ•j]ê‰)4oLmiT#_¦F㬥—% ÛÀÛ†o^…æ×Ъ5´ào0špsÚ²€ KðÇa¼B¹t;ÄE¤å“XýK~ k˜SZjšS»5­sº‘·Í)Shdöþ±Ùk“ìÕ²Þ²‚ €ìÐ CdxŽ÷jXÔkÅ·¿é¡Ív@´[@ß­ ú5ˆ bcsÊÏ%♿dˆ b÷„ù¡m\ƒ˜˜c÷™™Óg„ºÂ>īƋ'˜´!ÿA8B;ÑsjS$É |ïa¡@Ú*>:ǃ˜ŠBƒøì.EÇŠFÇêœÚ,ÛÈ#Æ6¯8Î2Ç÷=¢¦§—h ‚õe Ö[4HǼ‚tSÇ%€ôÍãt!lÆ?¯¼¯sž\Õ#‰ƒ¾dÛç™K* qùÖN媪çySÑà4ŸyåLêçYò V cÅáy¾jžúTZè?±S-ô›æi¿¦-õgNÆíóì¯:æa°( s%â)zѤ3lÒ*Ú43!_øk&¤qž‡?…†ÿGåEtbœ¾ôeß×Çöœ?ƒû'o·iÅÏÜΕ) Èå¡–”ã9*VY‘_»ž½‰wŠ&üaú¾ü¶ë;=Ôï;‘÷#ïî½Ä©¶ñowôØuÊ{Óƒb±í:å¹éßœLu»ˆD{>4B%=ºŽüU¬‡®ï ãó*åôgßûžA_ô)Eö_„=õïÄÇ “œ ¯ìk=“tà‚°.”ÔQ¦Ó@Ü«TÌÆÇñÕ: 2²5ôš2§Ï½nOªgÒ©î¦4¾Öv¨\‰ÏÔÑÁYóZœÌ3"v„ð™Û.L~t'ã8Dû$ýOÑÀ}Ìig‹ñdºÍÌH b!?¹ÂAZkQÐMTl{’s„‹¨9Æb9 kÐ~€+(œ؈Ýxø´aøxðõAAî•¿àÅ[>U(jPPQÔ£hDÑŒ¢EŠöØ)?%>vìP3[zg‘4 ÎýåœÊsÿ;öÝÃLMjÞ†Bön“'zþ2a&St„Î'j{ž³Sá`öè‘if¶}ÍÇO%L ûa\~ÉwGÌDˆ!äû´Xfx™âOVš±9gA ”sÖ‹?^ÃU•¯™û2e¤ãöLjý[i:~×”€d§é õæ(íò{ÅŸOüU‹?Îj „†\Fœ#¥UMmåŒâ<~ÏïÒUÂÙÌqþ<"\^öûhK²±h‹O)”_õMÑl=ø]…ƒ¢‚“1 7M`$)i.$)™ì#$u¼ä,Æ99oËKõØÄ0¡Uåïò²ÿé.‚9ÐþV…Ú‚?3¯lÀqVé{jêõ-qÏ­ìÊ©5–dØÎr‘ªP<így%ŒÈÒÔ²=X2O ¢ÅË|>?;µ\l¬‡¹w²Ð'Y÷ @‘Jf×2ªýtnÓ l¬1¶p]‡~J{ºl‹„óÿK¢k–¸‚Qœ?¥+×ã·]¾|Yê&w\%ûï.Ö.F5¦+áHxPœ¦”-ºB"ý÷L’áQãÁ„þéÊuä¹ Ñÿ]fœ´S:ù“œ‹Ìs1ƒp1(œ(܃ô»l托vÈù˜œuÇa„™ Ä5sxñÍ¿ FèÛKù6[Îèúˈo|mJ@¨T%¥c¶"Eâý˜a«2Mw™¹Å$ôš€?j¶3uôÄ4A:i—gož‰;¸A?ƒÅº„|üÅÐÝ‚\z% sM:ô9IÉÂÔò–¸s¡}Š9µÔãâð‡:$ìÔŸ<Ÿcv;ëæY:|cãs× ®½ì ó¿ Èr¿Yã’ëT€»s¿9×2cL)uò‹sŒÞ¾mÍ>SJãð˜yùSq¤UÒÄAUYe4ž(Fà:†2Ý+/§öóašñBþºˆWs›Ÿ’²$c /),yô¡—E¶ìÊÃöÖµ†òSg*rb‰¼”dÅNËT- LpûȫS¿(ŠÂP¦–"Þ„`ÞƒZ†)iSþÇîRÝÿÞrP‡~s¾©Ÿ¦¨ßwz ^­Ï¾|…Ðéïtþ"é9m˜¶mZ<ŠiÙdÿð(tå:âúèòeÓVM1!:㠪ǦòG @üÔB9;¥¿N)y—6ÔîÒ\‰9ÔÈ4¡)úÊëïqæ/²Ê%ʦ#Â×SÌySäÆñt䭩ׯ»Ñ1'iF?2ýÒÔ¹pÔ ˜?¿Ÿ ÞB‡Ñó‚]ðE€8æKWÆ%‰:îJ…é1XBÝã‚J"P¸=Û:ýn-Ɖ•É'¢sxí¼u([!ØMù\5‹;S’Ùe2¿œé2[MÑÈ¥„“\œ¹ÑÕ$š¿’¦ÿÓ£ÑÍN íâÎ%ôsž‡CÏ”£ä|ÇI†ÆYsb»pÿ™ÿ´£çãÑ_á÷ßbèÄóŠèޠвhdà Où8¤:EéxN¶ q›`\™œqÑÕ+iב&1!^Xº°”˪P»úÄ„>íD!Ìœ€h-p…–Ôw…ré ¢ùõ×Q†øÒjíÔlä9‡˜ã9ˆç´#r®4ÞÁzÙÔ|ä¼1/eõ¥ -›âzÁÑó+ãÑ7¢ ƒ¥ÁžÃ€d)D1F ]¹Ž< ¤!¹ç‘b/À}‚,7ò|ÏÛ†.œžÉ]±§iÒ-º‚åà eqy§HÉñ,Å’üÛyÕÉH‹¢ñœ1s¬^/ží= ‡‘ÚÊ}Q¡(â><~)3Í~ïQ#§9=L#)÷àV¥¡€ —ýUJ+ÐâÆ(š(ý<«ë§N3àç9ŠÓ‰˜yã<ýâ=éçî×¾´|áÁò B?ϳŠ~aâ=º#˜žIrÞtEÿ¡8÷ŠIE÷_f˜Ê½˜Â‹$*xºr9÷ñåËR}ìrÑ鯲¡%؉¦¯ž)Úïa‡‘`;q³GM~¨<*y‘ßf¾Î›Ô|-¿{òlTq‘D-biT‘ÅU•ˆçÜ"¨ë‰:r Z&#éØ,)nÎQ¬’î-Ä/f4ŠØ IÆ'.üÕsÅ] ¤„ÅÝ 8lR,‡sÕ½¨¦ãGt/YØ)Ô“¸ªW8ZBŸq(p—,£¢‰V©!¬¶>!nü|,_4#æÒœ–Ò^©.ƒªošlÎþ×Çg`Uæ‹~œÚHð¥h8€†9m  zÕÄÛ«¡f—Tƒo—<¶4O…‰˜x+õÖrE“©‚Љù›¯äÍJ3Àݤ¤=¦’˜·\}£<;Öœýø#ƒ´4R™…Ž€îÑÊ\: uŽUæG¡c¨>*ÍmŒ/ã;úwÉCPÝ»>qvLžäi¼9Á[¡³PE2&%¦Ì 11dŽ{Q¦rõPØÍ±1&7cdN(cœ€ '7ã$ªÏHcãËxÉÚ.iŒË»r»;M晊€åk;´4À=… PkÎ~}ƒ­0³É 3 uAYáÔ¶¸É Q½dZ¡üªÅ÷—âixTƧþ0WQ‘µS¼UDGrÛ\ôý&[#ÜôÇê×)v]f;[6íL²° V + 5»‰…,ªWÕ@¢ËxEÃnsj)­Ûmú³.ögæç"Þ--0p¢ 6ÇŽà#û?07Ñx4®+×AÌÆ&7Pm»Ö¤qŒ/㥱Ýr°‡ói´$ÎL³7×cLÜ×q¹e‡œ&ûŒ(æ'Wø? µ¾ãézÑ¡ =9®UGºœâú­ZÃbÑЦ54´†]zCû¡r½GŠÍ© ý¼•¶’ýc‡¼Ãeõµ¦ÇwþßÖúr;3 þ´ýÒÜZ¿ô’ÁñÀïzJV®·qT¶¥öÿe½;Òûë†-{ï£ÆïO®‹»¥CKí–³kXÉÚœ`­Dþi¢HQÿà}ã“¡W¢n.zI'¼€êEyÖo R.ñz%ÍnoÎ ›‡÷è0µ¢¶P€±Â«^AU@ü"úí÷Ø×¶oòµ›ã¯â¯â¯ÆMñW ñ—ækC¨öÁ7ÐΕùY@™Ë§yÝÿeîmÀ£º®sá9šŒaÄ{äTÄr<¶¥HNq"RHäXIå„6JJ¥¡­ú•´´%-ih#Ú*¶†˜Ó™1j=IH¢6p/·¥‰h«8ØVl 0ˆca°-a Ë M†Û@ˆ¶ ß~×»÷>çŒ$À®Ý{ýƨ¦í>f/f÷½ÖBQ—.ù€\'³¾áù7G0H\gp%ÆOf~“6p.ÉÔÖœt UåX d‹(WV™[½dúäDì‹VÑD̘ L|²JÝ.MÄÍfö% ¯Ó–§¹•ÐþÔºKKb“üUæ€ý÷$K3ãB[+)4K] l¥Õ&¦È’×iéñ–uø´LA™3¼$;™ÄÓkg?áœAÒcÍŒgXiTÐQ¢†^3}8L€w3ˆAö¡5h·n øé˜Gdi­—Ôy“ß«pÛïzBýñýŒ)€—¦v ¦©‚ŸfØ9³ðÈ·Ï~hS7¢…ÑFå½[%X™¢^î”É!XåAö71¢Æåa„n}àù€žêvŽQg!ˆ¨ê9±çMÉIƒe#×ñ˜~Ø!dl][­#–I½˜rõ¯Bý«Qÿ¤\I~Ö1G£÷’zéõÁêþ|Vã²\>¥+ö÷Kü Šj©úÁ„¢TµT•Ý*ÝU7AUwiq”þçŽ<6[^* ÊiP&Æ™ªèîñÞŸ„3ÚkçôgŒ`\q¢ ®L…¸²ìσ€ò" $@ëKh©¿«YµÝÑ[F×g)]Z ]º´ð)¾öÃcžë³Ðñ+|Þq=g.Ñ>1_´Oj†çRÜ‘פ&ŽöIó†lµB3¼X³È ïÕ¹©Š»”ò€Û!þ>¼¾'£uÖÑAˆ»´so8—\ï3Ãí ãfc}<œöˆoY]ÇkÝ]«vEÝý«vF_+ÞÊTÝÈm¡ÐP¦ŽôüÊÏ(Qq=¥HüAÔ˜zÿðïŒÀÂh‹¹©öÍtfʧ^¤4ëYcº‘ €ÿ=tk¦l|HŠžöM3Ä&ú°c6â,&®ÈuàÀ7îû C-ôâlƒ/«ÙoáìGø]±`~eõ÷~U¿9säüpy’¼£%Í¿oj¿¡¦á‘Ýj¬>ÞÛ¯îê’‘Õ <)\Uð@?<°Õ÷ÀÀ”àA±ü¡Ñ¡‹”¾Õˆ­…'ú$´ÿÈÒ6c}Z+´6S¼¼B‹åeMÐöÈÉ#ê¸Y‘|³"ùfEò¦„{‹ÿ0¯ÖG¥«+‰ ÿT”æ>=u·cœ°ÝQ(l« ÷s‡ô„‘q(sÝaçºÕÌ5'ÄdÁ©D7‚B®“Ñy}}¼²Ä¥çoä”Ånâ•^iU Gd}@ý˜hý­\ÿ#¢¼µ*å­…~õw¡úÛ¤þ6«¿‹Õߥêï2õ·Eý]‰Ðfä/”~ôaîKµ¦Šü‘ƒaG¡ÁµJ)Š_­aéb+,Ž]oµÐõÚ|泂¼î}ÍÇ~°ù¡TOØÞQ(¶#.;hé3S¥ÄÞd§ºÀL•p}:EH5$=£ß"uÃBÞ°Äóž-W7,â Ø@Ožž`…&Z–ùZv.?ý9't쿦Ñû|Ñ„•ð²B`ñÕOEDЉQâéôŠÀuNXa™»¬ãzƒõí×k¬Ÿ-Ú,­·Î ä—€Dk·óáj2³†üm#AúìGŸãè³»>ÍvR>j·s@o§žèCÓ©cM8Ñ€r`•x™ã·ž RGç8êèGÝ…ÔáWg³äºÐLüüÓJŠÖ`ä@£¥+¥ iv«¶³)„+Y<ºpÂÏðþž+¸_ìr7óþ¾+¸¤?÷œÜß÷ƒ^ò»xÿÀÜ¢Êó9Ï rûמ hñjZ¹ mƲÖIN@…Â(r{‚º{Àæ_Vóƒéïкq‹˜Ô´u­Ñ³¥,òè@®-<¼n¢]µ»éÙV̖ʹդX,5MŠ4(ФX@ƒbMŠ id“bÑá€i@­³+Ïy+Ïqå뼕Hpåb(k±+_ê_¹õx4zvÅÀÊÀ¡nXžæ>¹M—\¹å{^•K»üF½üF½üF½üF½üF½ü«†ü©óßãjÅmЦ¿ÉC€>OË <ÏìŸy8™š%uZÊ÷‹ä„@ LѺšÌ\}¾Ùþd¬QÕ”äðÀÙPÜSÎÑCD/;Ó‰ qÌ›ÔÄò3?ë@ Y¹#ºÝ¨?J>ŽÞ.ŠFéí”d!Âf¤è÷`ÏàÅÁž!Šbê©Y·#Ävð‚ÿZ®íQ*ùx¿ïñ‹ÃÝ{Õ¢sÉ9¼­ÏÛàÞ#ûԿ・õ}G~¡†Ì%çÉØ}ƒ»úŽÓÿ‡Ä_»€«PìòÊxj"9¼B–Í_§V =±é‚ÙbS‘ÚÙñÔƒ Wb¨ä#Lm_|Ôì[¹¤J]ñ¾Ilÿ^;þwŒ;Éýa Åcÿ‰=øN’@CþðÓ —ýÿæ'ei³Ð|³Ð|ÑyÉ"é“$tw¿ÃH[ÞaÂá*o·EÒ'˜ûx‘s~èýäC Ú—¿îiÇ_ÝÀÔg“ì,´INâ*0Üž€Ü`&<úŽñÂùä3eL6ÿ×O9~kcØï·QD¯.0S¶ÍýwÌ”å’L]Í(`¦4F¤qÖ£ËÙ'«'°"a¾—°"Õ¯¹r+ÒÞKY‘Æ›¾3`LHm6z¾ÑóQSÄ÷.\Æ„$1í#z3Œ¥(rµÉßÓ;ò:L}ñÏÔçg6%7S_ý 4õÙý¼m¿,þò¦¾¢CN ½Ã‘S²˜ñÉŒ/Óù¨9¾†‰#îå¿q0¸aôûE|Vä–ƒŽ oñ™G:¯Ðá0ç,©®!ä&±"_R +òOŒ³"Oª×£¿zâRHm æµqúÐDêœLbÕ6Ðx„)žmÁFÉ#øÓW/^Ô³1F6ARR?ÞËqÈå$3¥ ü²º9 Ú˜÷{Ü~%›úµ²ÅŸ¿b'; vJfPPŸÑ QñÏÅúiYÎæe-leæëL–îdJűU½a=ÍëQEíÊÌÔгL(}ÐÔøï÷º›,fÿ²%ìf&ÍÉ:¥9Yšs‚?ÄëQ¦ÆXÀ[Ú}clâò:¹¼-œ6zcøúª1ÚyKÎ7ÆrÖ›ka·Fi¾Ø)ͽ1|=±Þ²Î7F›Fì`g„>oßhàë ™Õý&3É¢ṯã`§tÌꆅ™äzÞ"ërìX×)벺á]&¹‘·4q”E¥™£Ôq”M¼E×娏®“ë:¥q©S17 {]VwÄË$;õ,×r–l^ˆ¶ŠYÝš1“ÜÂ[ÐêÍ©t¿¿Nöûëd¿¿œ¿ß_V÷Tg*¾e}B_ÙFüÿ–MòÿÎúÒ.DÃhôºA>º%[䯮„txB…;%ÉóËV(„»Ê"øÿ-Qù¬LzKHÕÿ’Rù9¡þŸ-Éó¹n={¸™0^Lׯ=¼Eš;æØÜ±Sš;fuoÈLro‘–9v°ì”–YöÄðÅzGm¬wäIîkN»ÐiSk*B“æàùBÀÇåàBÀ3 ÷EáKxÉÙ¤‰ÂÏ'iå”Ï´Rª<‘²¨Ù[Qê~|5™`Cþ‘G…GoÕ<ú¿nµŽ¿ÑÆßøšãÀ'>ÆeÒÓÔ¤/#ãùÍ~éî‘ý[ÌË–pØA-²ƒZd¹Os¹Tp¥šV>ÚçY]£"úVõ8ß:÷Š»kõE­÷ݹBMCñ° 6j^ Þ#z¬¶¦¸ÇªÑŽ×Ãd&Ù™~SæÔâ¯ðtÏ®€ºùc]}K¿–!¬jA!½ ügvô. Ðh¥n×%­§žÞgâ=iÐHݨ1töÊï91h=m‘:våê_…úW£þ‰Ã;ëv¤]r +ÍC Á€ôo HS©4i^Z¬Aªuy÷xÕa´dÆõpŽ EË/"_ƒÔ+°µeÛ¥@:YüÜߨ§té#)†8©UÕ+Læ Hà§1R2í~ß&7²çÆKY>.éÖËÇ@¯X>4®Ö_íÇÕ —ÅUt«žWqý qõ3½—ìx{ßͽNaÑÌzõñ{Õ†} UVz‹î6–ñŸ'NtÃIö¸.^è«f·àøæ=î‰ê9â›Ü#á. {Ã<Ç9½tØ¢žs* a$g? ¡b^êUoð™Ô&t\2,p»zYâ&㔌ޤn‹ÔψJÀòäf–K™Wn%ˆò;yÌ+A½­ù&›|“/QvB;Ëø9z¦•[®VñHа®÷}uOü^ˆr—Åœ²rFÐîžfmö§_.¥±Dîîýy‘º)º…œß™¨mâ>µj§ãž®Ö·÷Æ7?«ÉåŒøÔêâ% ó—È9›ï?ôæÇÇ¿V³›8H wÃÔ5‚D:‰óÖ ¥þû¸øÎñvÌ Šüí´Ð& Ò&4&Õ£¶\¸x¥\m…“ júòþ@8HÞ1ŠÊ^ 7Zá †Æ£ÂöV ²hÞ( ÔŒzjÞ4Kþ¦›Œ%é´2«£Ò•l6±Qß‹ŸHN3„ lSB¾¢;XAÇXøI Õ9¢ëSñÍ]…BÏŒºˆ@¨9gÔ1(ˆ8'‰ˆÞøPÆŸ{_}è ‹×r#á½ÙÀuÔÀ•(¹qâ#ð’ö LgÎùº|߃x¤)‚t§éDõ#ÕMkŠ`E-Ikô <_{ð2ô5þ0|ÛƒŽAiÇWpâk¯aY6ЈwÙ8hï´_½;~ïÑ¥3á|¸«Û£ñDýBf?-Šo>Œ[-ÍmQ÷UÓ:¡3˜%z¦n:*f·&Û…³vWÕ¨û(ÎÚ¼e|ó6gû=8aÅÜœ„=#¾ù€sPq mºÐ§¨X‡#Éì 1ý^#V߯Z©¬6³pv¦ù&g/Îâjš[gqû$˯\þYò‰-vú ‡á‹>5S³ eŠoUõ¹ÛWmwÜ#Õ]b°ˆo>£(â%šªHÒJOkV¼éRaë¤ÉcO‡»yCgàç€ûÜÃ^(u‹p<´ñ™êëpdÚðu†vvÁRÿZêñÅøO‘FÈF—Ùxûeð}{µý·3bZÿ|})4K7ÄËù£ßò£€°rå J]ãâô(±,¹ÙH,‹n6Úõ¼z­]O>A™XÀ”øˆ/­Éº‡n¤0nCšï} И÷˜„@£È÷×½Á¾¾2 ¢õ7Üi¡·þæñQµ—NF3“Ø_DQ¼GÍÒL-r½FôzËù´añ[`cZªþïîUŒJήê²erµEý_Èf¦¼ªmñÍ=ŠÔn[ ~£þfÆ{ $ûgA0Ïø,Ó¸ó3–a¤K`îJ—‰¡ë ÷b1yÍ…mKâÿ«ê‹oÞîœrw†çйë]xß0­³ÞnóÞÛ“»_ D%âѪ¼’–W€…*¾y§»Kq 1L]çœ[õ¼s×9û0¥*øø BµùDcdoà™^r¹Å3Øg B–»bðSj›G§*w†\´áÒýö½½ê¾.ÐÚRZÁÑàäL)ô¨>­‹èø dõÜ+ O¥cEŠû®þŠS SŽM%G\Ê(]é,8!ÚÔ¤ä¦F†%™—:T®÷ï& ^ù9O·u¬ìX=eDÞº¸Xn•3É%ü6Æ„MŽÀ#DFÞ‰#ìiÿ{±ê¸–gÁ¡©>öº/¨s@,‡Û TÆéjfþ·¤ aaÚ8·J[ G§rçäÓ£àÚ›x´í”’³ßGu,Z/³}½¼¢Ó@>?ç ®)hk ·àz9&4¯·ðÓU[™Äƒý %\~KsCˆzkd‹%á$LÀ˜¹?ëøÈ¨­_9*õ+_†TÒ%¯uÉÓIpqWÕ‹ñÌŸ¿M}:ÏÓå÷`1nD½Ê³S=U^ãë"Lî ¬¼3d/󜞬ÖO>®ÈOº/«³’û““ç<¼‚ƒèzìI|õ¡·ÓßÀ¸×},¾9/ÃøŽ\i¸ßü´s<ÌC7;MIÁiÎÈJ3¾Ÿ‹Ä«K†ÖÊ¡5ñçájáÂâÙÏ»¸½•Üí1ͨHÞ‡o3ØÒëCÖ'µ_ñ)H1_&Ä嚨¯%r âî!e•F£árP|J“ˆˆx9+"'ryD`^QNüM§Õ÷dÄŠvò½’ß3æ{ Û©žŸƒb º7CHH>£ŠÒ¹qß68@÷U0&€v9 #-î–R/¡5:-e–]Ë•ÊÖLVDLñò¨n"©®c,‘¼æ»óüµU+€Õ®î‰gvy°KÄò©=nA‡`xÁºÂb#Yœ‡kV¦màŒÅ­~÷”^œ€S­mªšJ;‚$°+3QvK9[|õµEr®ÊìŒÂ›$!Ø”÷Ô35Í18ºÓ ^]%kTÂÓ9T£FÀø~¥¨a‚WŒ¬˜O¹À ^Äz¾M.ÿ·ïw¼8b¤ú%f­;GÓöNnUÏô1 Qñ¥Ÿ™G_(’ÄøJ2bJ@§VPsLÔĕ榧#ï\ݳâotú¢z°›.Q[…Ù®1«‘y«Õˆ®šÿ:ùÔ×å(Qz„÷BñFÒÿHp:{ÔæÀ™½Z°¢íf'tÌ I43^©'€*_\Q0›”žM¥¹Ð¬†bD`¦^¹˜¯\j_‰Sn¦0™MгÑb»ÚJ™ ¶2š?s“ØMÔ@Â0ñG£Qš»O:“OÐ÷Öƒ³fGÉAñ Öê¥ä÷µ¤'Ð}˜tãòzGçƒh\þQƒ¦ÉÀçH´ÙÆÄ^æÂ øX‘ZÈüBËäò ÏÓ·Ph9“f¤lx#N*1©² ćÞFíLöð@Ú*YÝ¡_0 ¹ ð“ GÉnÖâ•?QHï¤ô Äu¼¢ÄÖ@%càªûVs x–ð!ÊÍï‹§¾bÚð½Vm¤!"ž"ózÇóCì‚<Ø)/”Ã…¬ñ)aéºRÝqÇ=¯Ð›kã¸ðcøÄt%Ö­~Û5 ´#Ç '§ÝzJ _S1%T§àV\½êU'žÚµ÷µ¯'âPƒq:‹¯¾ÿj» æiîG˜ u5d3¢¡†S»ÚEø2Bq}Ìå™”¼ˆÌǸ@¶øZ-œ"æãÉÎíÝ9.£@Ò}*$÷ã«hꋊågy»Ð\¬O#!Ó’©1o´|Ý£ ‹íæóBž{l8%ïÖu嫎!CÛi7v#lH›…œÁ4yÍPdš;ªÙ¨©Øò¶tÑN‘Á ŠÁmáÈš*6Ô¦SÓ±ŠáÔ>üh¹‰àÞbͬ[Ä̺í«¨(3o4ÕÞW4Õæ)Èvì…vÀïB¤øÞ6Õò=5Õãúø¾fª¦úŒ¡zµuœW˜jÜåäyò§HMhõSd#‘fK˜ÕYYâaPg˜O‡íÉ¥ÏÂŽC[×øZ†°´‹Þ ,â×µŒ“¿jâ|3ƒbúW0‡”ß½c ÂÃòy¡Ï=:œ’)p OWåÝ<4ºêó …çtF£›#l MkTKí `©X‹E·ŒLN¡^†®dxX®`óëûc= óp§&Ù#ç‡sò}h£à¡ $e #ê IáøÝë”üºÍ=°ê´_½d†…7ßÓI?ö„j>Å×.UÈ+úcAµûNêÅênÑGâ›_vv‰²0-¥l;§¾©-!X;Ã]F‡hç)bþtžJóÎãRÒßßFÂvJh@hž-‡œ¬Uc‚º¡ÂŒ•i¢BëI¬š¬/R‚ê·†b­/ô¦mÜá‚bˉ¾…cUâ›÷:½bÁ½^Æá©§IbãTŽÎÿyH7ÓOßöèVD„€…Hpa«zŬåY‹ßÜ>¨Å/“¬(6ŒboÕAôÖ(¡êžƒÚ§D;V’WC±‘¸*ya®)žXÕÃ[ì×ñ`qÀ#B¼M©ý‚¦æ¾ì‰bTÁ‹ù#&à uÞBÛK%CÿDÝÓèîžÖíêv?˜e#µœŠ´œåî¬îÒ¤û øR¶9£j£oƒ/Eí²ðwªsDí¤’º~'˜×žUg”~û¿/Ø—}Z桾îKÆ€L¡5v³‰ÐÊßlJÃ,®gi˜lÙ²zùuaÀ6AP¯Žî2_”¤Ú,cv™é5Ûd¬ÉÅ߆ou ßê¾Õuéð­5•Æ×RéÕñ’+œŽ,ëô½ÌWÔÑf²Œ&ß2òw|Kæ/EIJ¦M·â+Ì&!æÛzÁ§–¸g;Íÿ8é éKÇüãít¶Ô2/ÞN×¾h´lA…Ü*±â§JÓ³íìwDŒHŸˆïÈH±“Ô™J–2•CB±Cì,=úÏæ«Tv¶Ô”JXá.J§ëV1úw8KHwS ¤{¢úP&i¾Ùä)\1cäóßt:0>ˆþàSowƒA8e¹*ƒØ­ÒïƶBPd& 0æx‚®B½Ò)ê)‚,zN×DË54üË5uSäÏC°Þ Švø_{è¿ÄZjÙ‚ÝÅS¿çø¤»Æñƒ®B~p%­-Ë"ï4`Õ`ËÞÒZ¯3ðÊ}¹IÅ@ë.M^°æ4¤!ÿ–o©½kµw]Am‰µ/~§¡ö¦wÎðz_]á½`Íiz;ò_üº#ñ#ÚmïuŸåZVžêo+°ÍÉ©ž"“±þãŒ|6š¼ ££*‡ X™6(âÇõ7y†ÀœØpPGà®:ÌW¬Ÿ©å§õ3=ñCŸ•ºY¨Œ cǾNÆ[J‹Ûz£‹•›WL5rã •t2G%Iaª’¯ÒîYÚâ÷žY‘ŒÖbÈ %\ '¥dË@(;ñP†ê’5ñ´Œo>£ôHÌ¡ú6~Y;‹±¶Q¯—ËÛÝÇ]ÎÎ 84Ó±yéÄœê2þrPÉTx )ß»bºó¬sÇè“'>•æB¼%©‰&mMI½¬ k€©ÌÕJòúÓ.µÊÖ}â5‚L¾¬^½{„:¶©[× ÌE0hâ¢ÖŸ.©Ä5]K2áœ@g%¤¸^ÒŒdãq‘QÊ0ʆ&;ºÓ›.à :àuš7¿õv}ë¹¾ˆu€DÄ2ðª8@†Jü&Yïy ŸÏÐsÒ¾O 8æñy º'§{ÏG‰Pwu°ó'0ãî"o =j­þᆰ~WÓˈx‡ ¥/D0îmša¦µ† Üã) éç7ÝŠg¦g6Ó×Pîí~‡HüòG?±G}ö»»ÜªQI6g©k-f§K°%î™ÂýíOÏÆ–¸º¿T¾º¸‘´»tI“ÙÁ^gÛÙí„„AE…[t&¢!“ÓWu\ç.Æ7?éþ²j8¾ù˜s\¡nšIbó{Ó¼=žúÐë ø½¢®¼kêg¼¡]y?Øî„ò5oq´ .¾öû”Ö°=Œ¾ª3üÌoÄ:G¦Úýá†/œa7•xØ4Ãn+ét ý@#jŠø#HºQý,G;RÉè5 Ï%ÏtɈºâFfª‹P”V~5ïÄ×tYô-:JJiî¶ê²®ÎM¼ÅFIu%kÕÎétYþZy~ÞÕB¢FœÒ['‰*E­Ë5E¬ê¹Étùq]UH1G@G(¬¯¯z´È=^µ`Ûœ§äÖwÑ©'×Úx¬çÓ”ä¤ßݰ†ëz]·ê<$âeº(òŠëíÿŽ@;©Ë7vË—ÿP¢ô{vy‘þMk…²„°zG¯s{ϸK„ãj­ÜÔÌ\Í»ˆ„»¼¯ýOÇ©ÏÜùG~Q?]¶Zž…ŠG ’^ðrìÅ~¥9Õñã`“-IE9Í(CS-ÿ2Yw«ŒÌ§ïâéœ9õé¶Õ½ýT ¾CþäiÀ„ix8ÄÓ»ŸVÊü;ÌVÌ‹ÊÎ>ÅÛ2²€tåö?Ëι+biÅ®z2ž©¦£¬Â‚W£ï?cdoòxë:šrñ:hÍ€x¨:'w‡yÓAwuèq¸Oãülà<$IáS{7Äx/¦¡I`vÂÞT#7é¨OÎ B©d-Fމ×zîÔqE¤Qˆ?ë|ç¬pkh•«`/&€<®¨PF„5Ì‘oi¶ÓQªu¥Ì KfR¶¸íž#ÎNg»V&Gnu#ok»s(3wƒã?é)¿Ý"É tã¾M¸Á¨=ñeÓ2ÉNò®ô\@¦ê4a#}Øõù/É$Ë£^Ì”®xZ¶ ¥È–Ýø0ª`ѦX¶˜ÉSøpXý´fвl  Og|Н}NÆðÿÓ<ªJs†ù0åÊN›HÕ9Ëù aV€çÖêEghÓyÿ9²SÉM3 •NÂ]û¸ Øc›£9Ñ”*JFÞ /—&XpÄ#3d=o!¢nä·•ü¶‰ßZ%Þ¶êe÷Ið¯}Æ}*àÔ­ê#ü——äšÓ·N ±9®ênÀvT—ɦ”„ FHÏÆv¤×(’ÂÀU;³È{,Øò¦¥ :ªã]ÞáØâÑï"n‘jë°Sše¸ÛáVk%ÙÊ2Ûnß|Êòä@–é·ò¬¨ó=‰·®¨!5`øp‡üxŸ„…αAÅê¡cwu"0>©´ZØJf j÷ÿ þN%ù2>2}iþ×ø¢ÜåÛV”.Y,6ò;‹óךּxÑ r„¡{8³9ü˜8DÞ5ê×O»tÜ;ü ‘ˆByyäÏÏ ­‰P 83¿£â˜/ò‚"ÜŸÕ#/©gž7xB·Ž)a6žù*ÄŽã«¶]ߥE¤™\x±0Mu÷åûC:Ê—÷¨5#Òcãü>À¿dâX—Þ S’Á¹™šŒ—ûL!*ˆ¡ˆ#}p´j”Xê>Öû_ OMÏ%žNIs ªQ\,Ÿ2ÿp<Û–Ib®tn8ßü˜[>cÖÒ^ ¸”ƒU’« ’âÁLËNŒ¸¤„)…ÂÝàï/üyf÷«3f¯'¶ ¥–çÔ;ðÖ~å¬Ã·c¦ÚŸG•0¹ösŽìŸ’f÷œ™‚"c‡É«ØDHîXB¡”¬ï^C 3xT8‚Û§Ùõlá Xév ñÈN°B¼1ndÆ$LA–),êtx¼LÊÒí ¤Ü©Oc(!H÷|ÃÙïnwöj– 2j:6ÇÍòéðË,“Õ‡ák9YB¡`áa˜—úO.ˆÞ 0ºýçàwíXÊ<¬ÚWbÀEEtCÈØú4MWkÁVU=Ö{Ï$Ý}€ª^¨}%“ ƒ_  ´~)Œb`ÉùP;Ý&i<#¸BTÓA«×r1(-óøWNHÜ Ú‚åûkù¾·÷¼"–ï-ž5M&C&¢Õ5ð'((W“±W÷ÜùÙ4/ ˜ê¦>”ä)ë/3éO:fU/Õ˹[ʬ»°@»¬ h—f‹º(”Vê,ÍÒeª•<~ñöC3½Ó6©a›"ÔU=Ô×Y&‰€‘7 ]d€hm Éòßq)±³(6f¾ÁÃ~@Ó<ÅÀ„J»oLÄ&fLDòXØ›PÍÂ}%V ®.¤6PZã)H”¾Š¹œ k@dsßóAmcIÜpF—ß33'Ò&›ã¢MB`/Y|14’U§<ÒÝß|Þ=è¼bív<âߺú‰–*`QÜ ?´mŒéŒš{Ôô[ný¢@·LG‰øGð¿¥9cÏZzì•“²¾>k ÖÀütq€0pµ›ÅÚg^¢8Š˜QÂI1eÊ£ÐSâ/ª¹Ãé¹ús)¡5Œ\B4dÕ*&I;öRÏBZbŒ'²‘m:Sû3Ê­›fÖTQì[YÒp1IŠX&“HÉͰ=º”Jg1µ°’3¬ä=Í2hh§a‚™§[&WÝmê$¦XC‘~ 2š¦R`b6•’¿ˆ= (·˜æÍæRÁ0y¨Å¸ïõŠ%¥2'y`¿ú¾´Ù¶RYÈ‘PZ¦0þz|6–Ng†5…h™’IKØ“ÌQ±x¹$£b“ŒšÌŽÌî8¹U>ݪ>õ˧·ªOù{BšŸcÀ0¡ÆÀ…wý(Pl:“ìXbÉüÖ_†|õks¦ÐîÈs:6\75ÊÈeZ% ÆqAÆ«N‡¼€q$¾Àø}OȤ³)WáI)`¤N» û*¥€•ÞµtüßÊÄà{·ÓŠ×j<·=qÍF4‘«ß°OÚ’‘½â‰{Ô²½j€ñ„ç4r¨#ÔyYqäEÄÅQÜÔe‹qcª‘¤fÔDòE¼è¬h¾ít‡Ä©ûâ[QÄùÝß)2¡™úê3üv™B·_n‡ŸÐÑÝüjH:ãúœ©Ë?’cö.öì‰ûŵc0°hþž “"\~v—6†Oñµµô,¥,ÿK…-è½Üªå<ófYoê,žw‹í#‹ùY$à ¯È»1 œÇc `]<,ñ)¾öæW¤”úkn·p%ás×ÃCØ"aWTža’60¶úu-N(?í•Edˆfˆì"E´xIÆG^ R‚/×Ê„ú@ïî*)h°xªÙ_\ÐÅÒ(¸-6@¼}Jw±\Õ+11½]êøÔxü‘“1ºK ˆÿ<سù¢C[s!ÝÖañT#øà“šj—²ì’-þã‹HnºTeq›ÿ*3aeñžy!VŸò"e³l¨ ùTûmMžÏ½À›˜í‰Gº‹¬Ä¤má #ô»–ÝÚ¤-Ê]X‡V$•&ÀÑ7ùéõFDþúÌtÛX -:([¶Õ8»k“L‹ñ~~ìµþí‡nÆÕf¯åïþe°ÉR÷¸â'Ý“?™¸¹âÄS©ç–¤u«–Ý=®AÚ¥Kž”Eªm|×;uMS›e})PM uOÞ¿¼ §5Êl))èÐ<µ ?ÉØ1&е¹±ZWßš[_-Ìl’VÄ—¬#egþð ãšÈddoPë¢/\ª¿µWøôð_ë”uƒÔ¸Â§hQ_ ð@²œÔmkª¥&c¥=È÷ËTR“>§f¨ù¦ DÑuÞ®7¤sóÁÏ¿¶ž;ÿûó¦çN³eÎÍdÎ[,sÞÂä½W'ï¹c-•wþŽ1¾mÓ™UâIrŸvû1÷XµI€f¬‚d|R–弦X“RÞ=àåß P*M¡hì+\àÍÝä%x™Ê'Ã2é&¨¢¦Lõ¼¹§Â¢DrrÛLiæTØÿ2.¿Ef"-ï»ôwabœn'u\¨.™s5tàyWxì«¥òµŒ+ÈI]`6ºÁ .«QÌF^Ž®6X4ÈÙ®º_¨ä}É9p„8§ÜªçŠßv{x¶vËÉ$¦¯ÞÝr§z7žÚç…wíwúˆ—ŽH¸ZÔ>¿µe9:­ý$C%õ”Í;¶;Ö‘3{½È=.EýUVcØHk/¨WŠâà«{îüLšu½‚LÛ‰û;jˆhPRý  Eœt*oì/@ó…T‡ÂÍGš/3]8Tt9ŠûC¯ëÕo,Ñ·   Ô¬½!•ÖSÉ<á§+@áY]ª„>pÌ“³¯™.ÃÉÄSRþ^W=Ù¨Ã|ðº„S€÷^½¾$}èÝ·Ø1“@ºRåt[¡ÇËZŠo>#Üýžƒ^Ú)ëó×i§L1ÚÆ´SÉ+Â~ VŸ¶ïûì?iNDòŠð:Úöž)È”‚Ä4Oi¡Üp:2Mý8Tg ª.S•²2‘™QV:*+žùFز†YÍšN›!6v)ñvc¦/ Ô?3Î Ë&Hp42 ‹(Iؘgvg”"ÚÂFœa$ñ†M–ä1¢äò˜èemÔ“àc Þ)ç–(:çaaSUÓ=>J; tzR·‰>+lY•)lYuE]~Fêߨ.?ËÿD©k¿÷¼¬Ë·_Í/¨G¨‰&?ú÷Ì/gz"0ÓC{VZ°8é›a Vaû”R.h #ÄV}‹9ª·ºÄæñ=Ø­e4gJ í-bB…Ó÷˜“K½<£E‰ýb™(™°aåçˆ\#“õ,–J4Ù=;©t#3¹JçªI_1¬—ž-PÚ.]´ÈÕ‡9ãé±RýI7#fÖІge^ÞR6ÿw¼Ì’}9Öü²)×À»Áj¿ž#“Ш« ¹˜ÐÔ²T¾çˆX0²ûocr€ô¼€ÓÊù«Œ©¢ÓC6X—‘ŠW4+ðK%K§ûPc1‡Hð~!VFçÎ %lèM -·Šâ9A¢°?~\–p»É–wkÒ2Æ?SQKª‚™©m÷&#’Y{pÄ„³^…³•/Èü—Yï2ZÉcw!£"ŽòØÝh­?údXn[ÎÇòÖÆ”ç#8ÒxRˆéÏÎK\Nû€§óùø½GL €%¶tO‰—•ÒH·LãTûÌdB›/\:ÓrðÌÏg0¿Mµ]j^ÑhÒf–x1‰©ŸdpG×\2'zÌñè0¯3È ŒƒÈ”“ÄE s¨'Ç7g÷Sp^¿„B ’©“âxs01‡ÅñÖàÕyf0ÅÆ$Ê”û«‹ *^žrNëì’¨fjˆÖèàØ‘éiNF5e$[¦êƒÕeÒä¥}]X³ÓÙ›.“þ.‘· ‰´_û›ÅC˜°v˜ÿ›fÂ}ƒMx͋ՙð‘Ÿûó?6¸!A9m¡Õ§Š>5Ê8¿FëÔx¸ÞÚ=×Ë}Ÿ¥u)Ø6?|IÀ—êƒTÀfå;=» OÏ+©^øL¨CaÏP»ùõõœÆÄÅôöaR†TJo”ApC6Ö‡fÜhwÙª[PRÈò!|€2@¾{éY9‚ÅHš’•Ê ùOƒy8Ô §6?ÛS¦ ¿LØêR^ÂV—º±%¼$±¯Š—¤ùqàÏðïx}+Ÿ€ ƒ¯[ÕSª_¬€Rj½®¥¢Ì-WLÆx»vðè“Õ™Iº—‚°Ñ50N)_Lö/PìVö :­¾MJÌô1KûÚgz0 ÆÎá†l¢ÆZ”‘Œüv¶Èx¨Èkf´\â,!em‰ÉøàEBaÛÉxÊ%„ò®XþOO^0ñEþ Xô¤KÖ—š°_¢NuÙFueCg©‘ý¸J6Ë”o([W*I†îÓJ¥ÒÁc@þáÄ<+kü|x€¹£6  SN%w ÌTbä6õÆ©.ÁÿÓe˜„œ¸{Ôù"³˜Y¤çÊ4Ä”áœNÏ–÷”O÷ˉš;j"ÇðþÙkŽˆrɈÔ" «OQ^ÇŽ $WÎÃâX±¨°ËE"t¬:F›¡~µÔÇÆ–* cŸ€²q“(‹,y•&ŠÅ‰ìÊDfm@-¯÷ —¿/Ûøy8æ0¡UÇÂêXÅÔ¡;Ž1nUæ-#¡þû¯ eNb’GŽ —O£77®ÚYºj{TÍ“¦0„OÄôaTd¡5Ån@{€Z|Ÿâk¿O‹G ` í±“Xœ¸³ŸÓj°VÀ~åU/B¥ý­–Ú 5aS!³\•.ÌcÄáy^_¡­•¡™ ©;ʘ±ºå1ù“‘§!ö à÷º;Ý~|×;XŸèýi„õ™¸Yu‹wâæaNa(Ã…ÝÃ9ùe¸C¾k˜o/Ø·«çŸó¬n4¯ÄΕ¤å²¢6³3Jgz]‰9 ëøHL‰zˆØhèˆÄê>{ÁïzÕ"¥ìL pGþO‡¼ÂÂ(qqùÂÂRÜÒ_X˜õxüa'ºŽÎÐÜyJ´ô×ÒY`jé|õX½M °àFÏ,ê/['ä"D)ÇÓ†õöôR7Ö%¥&Ü24Õp}ËÃÞ0¡™^Xa„ Íô–Œ"Œˆ¿|Ûpj‡wŒz¤[í1%§h'Èp º˜d˜’)„ÍÌ :C©šõˆßé¨óÜÊ9y™“ qÓCäÇ‘©fÓ#Ô$°"`, ú½>ñs™°0¢.¸j xÝcÄÀa-¯¬ôóÅ=ˆVXëþõ™ºH:dëäE`ÑEvUwëbQ¯8/KT%¬Õ)]Rª×Ù©K<ùLq9®õ›—Þ²Ÿæ¥¯‡´h±‘œL »Ï¦ùfg? lñî†[íCãBŽR‡iz* Y[uÊ_êÍS•¯;“”uëdY·¼¯´ÌÞÚÅækqò³¶$J\ûN wqøkâ/û?¡v{ O'!À ÷àT©)vÓ¡iUJžšb'o£ÑNñÌ—ëbˆ– ù}ñÕ¿WeäI4Ÿéaqº>]ìÑøæãˆ’›G/µ— ‹!¥¾¬­H Íóíé\X t/·ç-À¿*´þ‰Ïòñ#![ _£ÝS(…ÿDüÞ}ŸqEA¥Ÿ>F?CöÚb¡`)üT,d*·ÁÚ4›ƒÃ@ªuJ6qª4¡ƒÙOmEØ0³K_Aü7>v%Ûc!ãוÌñ›´îJ®‹Y,Wß:ôaù¶#öo#²½Nk«溿ºKoÕ)õó&Ü×W­‹§wi»êÎêŒ&€½RÒ|wr_‘p©Ÿ›JvÆL~Û2 ýÚ‚„!ÓþJú¸‘$"’eB#NWÒï&WWJq~ßî îKï2\þán?à°ËEnÂIÄ—!1éÄÖnNá ‹ay›´À¾®”Ø7Ý_`¿›)¸òŽ< y©úú²#Ù k=_³# ^H’ãëët÷å‘Õ__ÿW†Bor}}@®ú²¾¾~áeëëWô…þêëËl® ¾þ?ì éúú'ÙDxc°ˆ»¯ó¦‡õõ—YÅh™$HH=ßFö±‰Ê˜I˜Ô¤©Žþ˜ÈÎ %—Ôã y Tø_û;¬¯ß_ä7h¦ßøòà Qz•†{H®à€éŽLݯ #\‰•À~ÜóŠîï*¨è~_‘¿èþÒ)&ÿ?%ŸYyÿWiµÆ…q•÷wyb™6Ké¾6R2P³Ïàté+²è’N”ÎßOm¥$î­ç$+UŠßP µà”-aú¨û´¶oøŠñ£'+ î7„S7ÍãµæðˆùÀ[ba,콬aqÖ¾ rÍDÃÉÁŠYÌï[ñ5?Ûa ðÞÓûòunß¹WÆüÜõ¨@˜{ÐOs»Â„««Á›°èãlѬUÐì¯ Êï{öæà|M‘8ÿñÅ㈂žKn¹ÑÕÙX=DÞ0šEâÇÇW튤ˠsÏù+ÓÝÛð)ÿ­ }hü¡2ãø¦Á¦›ƒ÷ÜX€ ÝEúÀiáÁ·„ÒîÓÂÖÿì>‰jÚÝ„²`O¬Û»•¥ñ¶ðgùÂ7ÚÛtLJ¥û´’ÀÆÈÒh-õ²µ†)yÑå? 'h̸½CÞ×um¢í&v„B&J‰²_ž•æÙÚ)!2³¥ŒæÖý_ аfš/¼$ÅAl“{)Z¨udX•5V„µ©ç¬¥ý)÷¢‡ä‹ÐÜJM8óÇWÿ5êÕÚÏz÷D©äh©ðu€4[Se˜ 4°ê¼³¢Z]ÚGÕûWuœ{Ö§ÿ ܯ>Û »¼ª7¬nÄý.œßûøÜ`{CÈCÈóŽb>(öáóAÖð؇ÏRßÃ*‹Š<‹_s‘w~ /AuaȼÖñJ-báÓ1UõßUœ¿æé  LÛxïê'Z¿˜ÖÓÙ6ÞÀJ+µ@«Ânä#Î<ÍJ)äì·ùδ°ÞjIògÃ^–épñÂ÷+¥ÏÁ~Lï!R`^U·IYâ=6òÞ‘b»Ì ÝŽŽbSè7Æ´Y²|ZA .` Ê2n¹¤ø0ól€¯À‹{”YuÈ{QÂïP’0^àeœv' GôEu5Ôr«vÅ7¿|ϵôÞH˜›ˆ¬Ô=î^ç•4oo÷åçjpEn.¤‡ƒÿbVüÜCÖõxH»]‹ŒúÜ,†ÑŸ¿jós lš@tÝŧÄωAîcUÆ3wcaÍ{Šå!¹µWBèœåæI碳¨£qJ6²3Û%ÊŠ{ÎÙ•½k«ÉƸ±*¼ZÝI­¤ƒÊN8èæÃêÚ&ÆB7áèñMi /€’”+“íLv[…Iý&\QÝÉb6]¤ ”c{@ÓÎò("¦Å\«ÝVÔg`(ÄÝEl+7¿…5•áY¡Ên)£“æÈ¤“&9Ý=^˺pýUƒ ŠS]X+ØJu¡É4Òúâ»ÕŒÆˆ{zÖŸ¶:VFÀµ@ÿ¹ÍæòtPÇh†ÿçÇ KM…â.Ì´à™ã–'¯`8çd·°\ôе![5ÿénª4ÿh$cÑ:šl}ÔXþ?Ÿ¨’¶7Ïæy‰QQÞ3ê„LWçJø×§žÇ¿€«Ÿ¸ü ÿïñ¯å׳ÎDü+Rdb‘|S1övr«h‘Ý"³BÄm'‘¨2ÏW~E=ÛDg‹%}Hm'JÚýŽ¥áâúJ­+|ÉF>©Ž ³”¹C|:DÉŒ3JÉ_E9QŠsø“žË9 ÀF—kº\‹'2Rjšº*q‹¿ÐÉÈŽÄ纻œsâw2uÈÖæec/ ¹Ë”q¥bp1 —Ï£ÂGt‚]”1ïá”4#Dj2¨r¼÷"àyóüÛ^ëxã–%qáýH›æ§4‘“ŒŸâkÿ‚ MVâm¢,v§@´• Ñ„Üecz»(‰€9Pâí×V\7.sBÆþa< RFÔ¢<øk˜ÜÖ‹« dÔ‰¯þ$½‡¬³t=¤A22¥2wS¬m•ü«õÌ¡ˆfg‹ßHÑ¥¹Ë'³Ü AE ƒáÈ,jÕ¹ ãÎ'’ª´ÐP‰/ ËnœŸ!»¬¡ì"ÊÀöÉÄEVig½¾nÆEw${¦ÛDô\ܳ_äâ~Im’ ‰âü»÷^¸X çâÕ«w‹€/3ú< fÒ§ÄýoÄp¡TÝ&®/ƒ 9µgËlLÑ™æ\z£|EoN„ÉJÔÁQ=›³<ŒÒa»ZžÈФïÙ+µƒ|ÇÒœáò`í NÈ+Æ$õqr×sälØ'2.|Н]tvº°œnõž|Çú|²O‚OÕ­üʼnY> ®Lùü¸(“Æ%î 09íœ 3„=€û3R‹ø8Öë„l‰œÈÌÔÜßvŒ‘æ±´JD垪¾-èÜeßì -£-–7‹°Ú"ÖçFm}NÛ"þ±üïï“­q‡ÃÚÈÕéëò k[û.v B5³¶›d6€laX¿n ™R³U¯Æ3_{˜ÁOçÆ­è.Fõ#XÒ%m¢7Fõ/¨êw€zmñãÛô…;ˆ2¾žØ5޾`X½[P|œ˜¾0Ì›N_`>ðˆ~ŒNáEÐW¢”sd‰R™>b)ßG`J´±¹;WíŒEáä·ö5ÎFDÝ3…Îê~èRP•„2½2ÙxOõ-ZeryÒYÞ9ž¾EÖÖPÒ1üîá*°PêNÈ5Á¼ªN‹M¸¹Ì„ôkl‡G/þ1N„ArËõ®zÎY½;­gÃy¬˜‘Ö+¤#eoS@óŒã9žD”xyä¯è· ú h“n¼*ÈsÎàÊmוãrM7#Cå8ÁËÈ ìWõD”PÐw£s¥Hé~÷˜b(ÂÞŽ9–ùªÊMÎÇ"þ… ŽÑr±6r±M6k“H«g˜:zS/ÍÜäi©Ä—Nÿ‰s\QDÏŽ ý¡zºœO þñ[ZÛ:E.ƧøÚ—Ž ä_¦éÕÆXÅóŸÛᱚ$ÀêÆi6dsq´¥c¯J¯<Œj‡&ŒêØ´qòº~ieP¨ƒll±/ÉáE˜€^qΣmQ[©W©'urô^¥ÿLEïÇ{X.ˆÏB´ö „±ºÅï-òù8Qlñ”ÏÖ ²£Èë¸Ôó³ØLë`’¨Ós×›ƒ%Ña8_XØV¦Y™‘vŠ#7– j¤2¦5à2°@˜=–ÃRªk7Oëm¶еˆ1¤#¹°TÇåäOÄé¨?LlÓ4^¤dʰ(gt+Á˜QWŽoÖ…õê~Ë3|“vúX«Á-ºÒ„8 Ÿ†§xh€LySŒú5™fZüÉ«Äî\jú>v¶ûÖGÊkæ-¡«n! –,d€¦C`Ä]òÓ Áø=­ñΫÿì«æ%h<ïOÐðBcj:dk;tÓÇ—Õ=õÆz¿(ÆB4ÙÙ•ÜÙøæc :ÍD&É cØG¬`ûbwV‰íÑêÎä¼€ü¸ó¢ûŠÚöD‹§3 $ÌtêŠ<ã¿"òé&DƒQ\6DãÉï1þØñ4?ú^ ¾Æ—pÕ(Cˆ¤óß#)‹à+Ð(±åcš¹)À é·çI1Ìæ:ø¯2Q±€IM-îD¼£"ò|¯{B{ ¥Üå"ÎÒÜ iM‹9±®" /Å-âk•4rѨø “{/ÓçMç½F­‘-z£gÈMåZÿ)¨¾A*غsûMÝ9ž¿"šÄS›¥¨- De•úQ¶´ý*cü«Û),Íió”BÌIíSm›p­º6S)Í}¬ê(Ô¸¬”ܤ¶²MÌlÎiI*+Å8;Mg¶nÜëÌÆú¸Š›Ÿrâ)ô|tf{³²SVÖ˜ì”Å5&;eÁ ;³eKš>(¿.¾\s3j¶gÓ®31¯úZµ=ã…&ua‘ºÐlZ$-1„ñ5oxrKù-&¹%r‹—Ü’¶ ’ =ÅJ½l×+Yé¸%>ããv‰¦SÕ’üç«»5c¿üy¤ù•ÿÌ‹yBÚ’ƒËŸýçÂú;rù7ÿYH¨¾Bøã¦ –I·Ü/å9ºXž#ØÊK÷;köÊ{°ð‰òJšÁéÝÍ–ì3-ÙÄO•:pB!°÷1çùlcÇnUä±ìç_F'-“œƒvi,‘ñwŽ3ÌÒ9®Sš¢)ù:T¡>Kç8 ­Nv†ë”Viê¢tŽ[–lVWñ Â]Õ•¥82xEžX–lD¸Vgr1F¶©XT ùq„?Ö’,ǵîkT{Þ’\¨~hÚ*-×Ôž/Sh„í¾³ÊÐk¨ûÀíáÞ•5œÛø.SY§í]º²NŽ½âš’õþ6| 0sþÞsþ6| sì=—c‹¹{Ïåfj¼f ü¸EüØèë3¤(4‘:¼„°)¼Ú æ| H5U:¡ÿ1B/Ã:ŽÓbžµf ÐLI4'Õ…SRPmÁSì?À<#JL¾Œ£UÛà&`ì!›qHÂ{_Úmý“|›qt¶=˜ ¦2N²ê¡rþ”й pñf:çîó5ÅY1÷A´ÅA BEŠûäáH=W}BÅ AxøÔ;:¿ÕÁm¡:¯9Î"”EІsòt:•èþ@È+4OÅ5Õ0•âú«ÅÁÉÔc0DÔ—êw7”êu.(õ¥‘k?"½¥ùŠùùøê»¸¨y½èà=_ç{äÞ³‘ÍXrÑM²hõŽM¸ ÄïdY“Fc»ßÂ|ú,e"÷?©MX’ˆ^"‰èº¬d¢×!Æw“6›ìxS’Ø) €69Ãd½GñÑãyÇk•¸œ‹åbžä=‘i¼óB ±Ú? d£EºÔnŸzšcEºÌPºd/Œ¹’.úqÏ =1jõ\É¿M2Ä¡9ƒ?”¿-ª»d¨øæÓ¯ž&ƒŽˆ?ÏÅ7?®Ö¶qšÜ.a 2þ¦i!›jÐkeؽîãÎÓ^0“'ÆæD¬MGÞ§ñ¨º8TÆä LTé2Ÿ’¼72>b5‡…ÃJ&–(ÒÆçê2>Ÿãó9N02ñ£˜ÙÉJÀ$%+!¾öoXŒS~äè„ݹn/òm®Þ.AšÆézON÷ö´¥ØÄ‡·_n[›¦¶5š|[;§O¸­{Òe²­¢æ®›Æ³X*EɶÎM”ùLü]öIØñö }  Ð_8ûí.m“vIm–ìÒ”q›„×¢³À4»I ë˜:¿?¾úw¾8GàÇŒˆA©+[!„Å|†}ZGOñQº³x$ËØ%2v#*UüF R¿š›@9'Ì>Ý!Çscô9ÿÅ}&ªÙv‰à:b·ã©†ÞÄ‹?øÆÖ8XyÊÿÑ?›ø9ÑêªÒÄ9û`l²žœ…Ó­ÿ?#˜«SQét3ÒÝX$Nà ¯Øþ0䚟âk‡^¾xñįzõ­ƒQ³ë¥f´"J½ïe±‡ÖÚqjeœ çÙ '’öø±~4N6>Ÿ”§œ—çµ´T1#˜—(Å™Vâ7¶z©7'MNב†=R²C‹=œ)8£å}”Cê¦N&‡@,}þé_å!båâûŒíh dz‹d-»ÏDzá§#aÂëüUˆ§ŠÝó”tïêЂˠsÐXï(…1™Äø„=bÌp‡¼bÌÌͶÐÖÙâu”:Y©v¥Ú}¶¬Ë>Jµ9[·-'å/F謗r¾vq²Ø‰úÄ ì¢g?9ªÓëû«‹ø%˯±JÔlYXd:_çc¬}±Õ @Gýý?¤+©Æef«N0çÖO¿dÛVÆÝ{§Î ‹kÑpˆÐz)BHq?ÃÁá¢â¯ ìò麋m‹•ß–iÛÀtû:ÿ1i³41*É|C—Åx4±]ã5±]ÍÉÈP™dmeÈW /DÛÏ÷–1f¨Ž «Ž·Žr?äAÅMñ­lÓµFëÜGzǺÐÃv¶Õ\™Œé`{*D–0]Ž—³¡×ÁVÕ€m`ÛAÑÜ´È\Ù¨Sz/…= ¡ä·E÷ùpDDnÝÃV Îìb«Cébû²©cXäõ}ìiqJ4ˆÞ[cJ±®(/haq̬l[<ïï`‹üJ9²V½ŸÞž#Öjº±!¶èº²q#)j¢P%ígºíSÀýLÿÚFÖµÓýWÛl×»J!ï-lc[#ml·W‚ˆ¦Þ7Çkc»Žmlk}ml½3aÞŒñ¬d˜¬džée5ÏÑÇ–O¬S¿W²y\¥cÙ¯‡)(WQÃßkˆ±søm¿Õò[-hÂn¶k&èf+oÒæd$›n&èfkûkÍ ä'>  Â×ÍíÚLÙ«V¯-*€H‘f)ë¦{†Î:$0ë#»ƒ€kú¥¶H_[Ù¥’­†ÇHÏ^gûÚâ5þ¾¶…ÆõµWÄ=ª$Û‰Š)¹_}7\„}meF]\úÚv^;¾¯­¦\{hhÖ×Ö£#¨5²mmYÔ”¶¶kˆCu6ã¶Ž\µÃ2Åšm×YóÆ:1o좆*Ó Ä†É®4´mfCÛxVãs"™|«)Þr±¯@#eâS|íï¾$VÂf²Š(¹¡VǬcLLÿôK™ÑV¯¢išâh ×˜4´í‰¯þ•_úÚ.­ :Ð4LÉ·¿9•â%:Ç­¡V¼œâe þÀÈœ)ñŸŸk¨O˯ýl&×1@7~]ìÿ‡0„Ã0^Oɹ•«k«”yvAµÁóðÖjÞ£Ý$·g«^íÏ}TÂmžLÏ´] Ê¡¿Œ‹å×ÎŒgc !ÊXEºn†îƒë–O)È{Œ×’UvQÚæç·Ñ‘x ©ËÊÀ º®é…Øì4Jlöµd2\3YKÖ%±Aä‚iœ>¸G -µÓ•6.딜æz¬I•níû•@ƒ´’ãfë¥6J©Bu/ƒK-}°Ôú€ æ_*µÂ¥Š¨4ÑRK‹CÁtÍëý\0ÃÏ s¹vQ‘QɘªÒI–¸À²Dãû©ßv=fòròY'•ÌcHÙ–"{€mÓ\qöV³Øƒ½×ê<DëõÁ”˜â¯¶è3è"P²¶M‚@ü HÊ2NŠ@I‹@rŸF -L¾y>={¹o‰‚Bu×’Í5Ę}»×­›‘Ž\‹ˆ¹?pçï¹Ê¦³úÑHîp•àNCìŠqGf?)îà•Þ*uþöWÓ:ƒðêlo³ºR[Ÿ7'X£ñ ˆhÛ¢vAˆê’ Ñ©OŸ•Ò½85y÷bƒ_/@‰“Ó P¯š%¤Þþ D þ|ÄüŒ“Ó ÎcŽ;°^a0Z7òØÌ6ÃfŠÍÈ‚7ÌYý}SÇ3—v®¹ÏpùŠx‚ì˜: ‚pÍos©ˆû×Jÿ™,Â_ÚäüuÏË™Š£)Ðræ¹Ï¡Û {ªµAù©ô[¯™ÿòV9®ö³_K‘}b?ÜÐ&õ³×”i6c`Û1/õÚ1_²`Âýy°öû^z²’ÇÙœ2Ó~c4?U©eÊú™¢êºqB¤«ŸÁYÛhvîf¬ F,h‚;á©þºNœ(‘Ç*eRcœTÍåÝa­¡Î k»@~ŠW«ýd©‘N–Z¥ºDàT¶¦Ì–kLt'‹Ÿ…Æu¸rS¨÷Ü-õÉš¬»r¶óÂV]ðÙ²9¦ ºÌ¤#Ù Í੪3Z3 vç>v¢{m;fMq³Vïn¹Ҝ՟ÅmOåËžê×ò.fñbJvÅÿ»[Ö-˜¯ý¢¬ s!‘žd4€G®†OñµÛ”°*Ï×YNjޣn9ÃÇÙ:Êhë€Ã¸%K«½ò<•«{ÌÎíô”#M‡é²RkvrO3ç :‡µu¦|¦d®~+ÍÎIçΧs©6„|¨vÌTlußLÛØBqmi‚Ô9SÔÉú¸Ø°V½â¤Ëàò†“lŽoÄV‰sžouï,8)ËZgÊ]9ìxj¦ÜuVîZÂשVÜaÚI4PÆ8Öª'ã$èÊÉS0‚­A†ÜDôÄo»ƒØÖ²kC‚€7ÃqéPÏqÜØ4‰¹ÏQg:ë½7Çqc`Œu|‹ÇDú{G"ÙX¿#F¡ïüN—í³`ÜÄf¿‰M"õþdJ6²GOÏéÍ~bë¸>˜¶zû…¿ ùú`ê—R¥àùÛ‰KJÔ–jИ§ób!S\§@\Á/ÙÄ ëïdõöm¶öcΓÁêíO^¾z;_ÇúÒóè ¨µ±‘µ¥¦¦µ?©;Ð@X§Gm?Ù-Ô†{éoÆq~foïsS²‰^Øœb^óôZŸðÚ0ÅÃê† S<ˆBÜmÓ@ôM!šÅÞÀÀG3œ´¶­$KÉM÷vÒ4äïßëÙþç‹¶c®o^ÑvÄ•³ > h{C…rL:Ý1ÍmïãulEAÑö}Ó¼¢íT'*Ú¾®8tù¢í}Œ(nL\´bÑvL]úÑO“`_™÷%‹¶wë‚R´“&‚ã“)Ú®ëS$cjºÝnר³Þ¦®—TÃxõ‰ÒDa­§M±hJúÒ „×ô%¹Qo <_cÕ›†€æm|M^Èqþ+"ènbÍQ_Å_ñwONÈã ÁÇó;ÒW¤ø?Sþ¯ÛCþôÅû?÷zªÀWt¾t¿‘)þ*ðµ¾nGK½*ðGÅzÔ“p'®tʧüÔ9Å+¨ÔŠ–G)Z Ãu”V6R~ýàëW³¥XÞVO)ñN£”Ÿˆ:tJk,ñöíA:ØèµŸ%>ÊÕ¤"ìùõ‡J ú'Ã^ý]F—Ò‰(·ÿRäÍ G,ÀDt­­Tƒ‰1¦Ì/ S) *«0Sâ›áOæi7‹·éוQž2ç.&U`_QòsØ}QÁÑ=ž ˉ©ÿ(³ #¡ s~BË‚®ßï¾ íÜôÑtGuéÉt·\9wQÒù%–þ6‰¥g’7céïS·aÚ ‘®ómYå,m2Íã¹óÎhº[çLuýáìéÛ¢&b”!ô$‚žQ»Ø:‰ NÈT?Ó; v6tDyÑtÀ.«¥«ŸÐå1W|a¥Tû Ú–ŠÒz+à°^n[¼Þà€Aðòz}Ùz¯.7BÈøÎúõ2ÊιØwg/Øò«ÿèóÛˆy0Áô¬E,x¾xŽï¥ºdtý—ö?à QŸàË‹g´Ÿçz’ܺÂz‰*D$ ¿*ï/°¡±w¹Ù›Ö»Ü_+¹[ iú•ašÕX-Wêb¼€ªæRfhþé¯ÄݹbõXr×…‹Àïlí]nWrK•0aÐäêgâ÷VÎRVÃws\¡Ð^$¬«¨é*Ñ(!'iȱÐ;¦x±Ð1Ü&뒆ѧ7'…FÙ‰L2B1BWP.¥óVWP–ß kDK‚,­›¢U´DKÂ¥LL¶ñ+%oK7<,ÏŸy·ž9ë:ón½Ý"Ø®UnJÎHÉ0åIßÓ¤ùjç)la*Ÿr5¥¶†›ôÿ†“ŒÅXb%á9d¿†\J@ñ¹ë ®¨‡iN>îaÅê~›ÚÏ'¢úés”2È? g•ÍCÔ~Sè#õ™Ðcá{ý¢,ýEߣ`Ê¥ÔšºaÆ?¯m 0ô N`‚†—~뢑£Þ‡³xÓ¬˜_fžÔpqæ+ãê;áÕº¾“ÌâÿZÑr:þfÅ&*0Z HN2HvÂÉ•1S ¹&v©ɉ‹ïûK­K”¥ûÊùŠ 64‘YuÈ{ SÉ*3xÏÓåÕ1’2È÷ìwŽH¥©,Ûý«Be¿+(цIÂWfŬHÉ—Ö‹+áÓz6z%êgûô«R«Ž$Â~q£d¿'ã™ëpØã£,ï6V%Bï”!äAéÖ«ƒ™ÖzrO,æ†ÐÅJ`¼E5¥¤OŒXÍ¡”ÖsüC¥rÑÔ:é®) ±†í™¦Ù}¥¤ž¹Såwá‘R÷‹ {JK´,Ç}{‘‚©$5$ǽ̴’vøª©ÕÉfbÎUGP¹pº‰‘?RÍN3мEv†,pAI#+‹eâû(VºÍä:¶K xç¼×àD©kż oD½ÏÓS±øª=JßËÆ>ÖjcKl¸ê WÕýæØc{¨œ°ËÑÚný íâ_¸ùey°…õu¥Ó´¯—²6#Yþƒ—OãS|íçFåéCžQhÍêºW}‚¢¯Ö%ôy'¾úϽ9M—´.‚Ëì¦/6ÿGéd5¿»_ù’Æ!(Þ$ü%»µÜ‚åæùø½¥FÆ^ÇÓjŸ•3Eúî*égJñ³Ÿú@ÔÊKíëxšZ#ÌÕ!OŠÅþF¨öNPÄ[ÔÍ+)â°]¢’w$Pk0­ ¢7ÖüZ*zOTòV’ä .Äê@lË}_Ê8P¨2&­1CïLȺ˜Câbþ-˜ÿèߞźÞk}[tQïV‘ø«¨÷Íz3‹z¯YºTQïXþ_–]ðùç÷j{Hmo%‰yu'sï ùë{ßí«ïÝŸ ë{'hµšUªÕé³l'±o|}ï]ä'ºIë{ŸùóqöX¾4µ‰òÿ½úÞý¬4$KÄI}r†]$ccn³N_PÌŒ†U]ãÛ}éuÖ÷Æ{þ;õ½1¯K×÷¾á³º¾÷¡i—¬ï-+¼D}o<îÚúÞýF0¾¾7Ð á¿÷uÆV“—”À@}ï¢×TßÛ͇­ÅôŠ«|³?û%X›è_ùÂìî6{ ·±}ÍY+XŸÁúçcþø™ OBm—©ø½鸊ß0Á†YêÛµ¿cVDŒÑ»áÊ#tIGtñ{^÷1,–}zùwˆ˜ò›ùK OˆüÿR ²4ªü¬×v¹ÉjŸj¦è¸hH"¾j½ÇA£+º‰|>äºùà‡ƒA7¾«(d¿zòñ ¡™Æ;iÚÂ"B¦$‰ÁŸ‘ šAO4v¾>­IsŽ”\2TôøOvž4ªùc,0Œ§Ü]áÛF¼Zåj:ÃSý‘8;¸Ù2ÂØÆÙ¯ööëó‡¹L—ßÀÁlŒVŸ8ù #p&ò{Åïý7jŠâû“ï¡GÍk@ÙÅãÜ4O%^ƒ´ëÛŒ7ælì²àÁÝ5E³1$‘öêü¿…vOXûf2É­ aé¨r±È¿)Õ^M󳱉÷è˜Oâã¨+Îú;¾zåÜ ÃT‚`}ÄL‘KÓ,c(RÊýÑ#<ŽýÙæßŸœÌ”ÄÚMà†èvÅ8R½ž1k<“V@o½8®>y»z“ê“o"ÈÅìÜÉ=6õÉ;éåÕ'ßR2ýîYŸüT±×\Ÿ|Ë”+ªO>÷ã—ªOþ–_A}ò3ˆlLñaÇ)ÝØ™›"ÆÆ‰ê“¿çcWXŸ|Úâ7¤>9öBê“oáĶL±ðzýõÉ¿z¾^.̹ÎÞ)ݺߧ¾,â5ÄQɵ›€ºÈ)CN͆56þ ]‚œ_¸@ô:0é–›ÒLü™$ G7ÑEþ~ì:©í|3háœÕ}b¶ï/³Æ°²-ê³nµ<Í0þR:ZsÿÏ6}^‘‚wеÔ^ aã€ø~BZòF23¹UgcwPÚÍ+RzºÉ&= Â’NÆ‚ « {Z_jòÃÖ{Jgu±89JöyÖè2qrЧDb„°^I Ã6 îG€N¨Ô iŽ”z‹ŠÚ`‡Z_Y4Oö‹Ýjáj¯«ôÉ ì§‰9Vÿùðí<ÑJ›‰Ù-#% g'íÜN|JJa¿p/›xBìiÙa!ÀG$’ïÉÁ´C6ò¢¢³É ðNIÄ÷àˆÖ%Êo•°ÌR%åc@öR4³Ø÷jtöz¿Äê)âéÛd¾âËsγäPdÆpù <*žŒ¹"ȘH9àVu‰¤ÑÜ"ðcç…´¸2†#·ªá±aXÉ/œ ÞDeߣD‹Ú)æªe¼wL¨1¢dĆFDZØòª­¿˜“9h;+ϯ“V—?)ºü(;Û”òDžÄ¬žÛ8Áù¥#¡Çóõ^Ô¢)£ñ´ÍJÿpaµßý½ µKKÎG9ë|”s”FVü™ –ÚxhæLñd£QÆ¢ŒÆ½Eðùq»<8ÞLêì :f¯Ae‡~Jk[XE<·}ÕOÕÏÄW‡(nÉœzõ锦U=â™54á7w{š3s÷»Ï*½O§Ø… l §Ç­³ÍgÉ¿50·¯o[õA€ëB&9ë® ®Ž#ÔÚrŽLhü»ÔG'ìèìÑĹF¯w¸cǼ{B¡ ôr¸ÿäs¬¢2G•/]J¯ÚNÑ#íÃHHï¶ G°Î&­¼{5xh<ÉU WŒ$‚º£1dᑘgrïœâÕÀçê²`^â6ãÜ–4¯)Âch\µg¹Xÿ›ó]'aâ„Õÿ]9'éõÒê`x^Aì1ž0§Û)]TI÷Ï•Áj1‹j«ŒŠ•¥Lá5¾Âå´ïdøÁŽ?«È8ï|øxc×AÿÓc?\Àƒcï"þÏ*òð¿¢hrüÇo‚ÿ2¥7 ÿNˆÿ{'Çÿö·NŽÿ庂øxOè¸&*s\§%ir¸|Ú‰¿Õoàtʹ¯klé¦5b~XpAê̲f Ép×_×Ëõ³:©˜U£€Â|5>Å×.Ô¥¦øü6a¡“ªÎˆmÅ4"çÇÖ1y¨†ñšG}!è‚ð¶«ÍŸÃϦ’£¦Â `p¹»A1Œ+·¢þNg›FEÄ Ï—z4)"þÂ*‘ûœQ(êWʤ3åOKõøØÅ¿$ö.0é¥í¥š¾F‹¼ ˜L)4¦ˆú´I—–ñÄÅËDŤZ¿[@ÞemSW`üØ^=[$„¹1#:üBIIx]6²ÝzÜ«žFÐñ9÷¦´¥{wv¡p€Ï&1<…‰?È®s$þqW’Έ§ü ÿÂ×µòÓ)ëA]W¼.ñ"0ÕoNvA^´¯FuNy¡’Ë›•åòþ4AEN?*jï3œ>M°úheCþî 0N#óÿÊT-ó—Ó*’©IÀX©³9NqÒ¢&›Þ#Ó½]«˜bv-9E¼R¸•¸º°1H…—´\’Ã¥ÞŸD…‚1éE ˜·ç7’}AÚnZ¿¾Íæaà@7øÜ. O HO@ª†³Ž%Õlÿ¶LÄbZÇ~\† «çóÓƒ’0ùçÄä¼9ô(Ÿ2e[§kµ Œ¤” –ï;´tר·àÖù}ñÕ("éˆÖ؆Uçõ×z«Þ¥W}à¶PA/¡¯kýÛ,dó áÞß6Ë}V!ª‘ä?3Š×d’ëÞJ4Íÿ°ŽvÄÿ½‰ÑUíoptUé¶P(ÿÊ› µÿm>³–zì_B gNÉÞè:%r |öëó%a™Èß´‘G@ õ¤ìs*WÈn܃½?UÛwp|w2ì¦$¿ìº8y2MË$¡¦ù{â©wÒz-W3ÂîhþOÉé¹ÔûÓ¨sØëðQICˆPÕÄÉð0§‡l2

úùû÷]Ž~¾ð±×K?+æÿÐϦ7˜~úVôóÐWJ?ØÒOi‘Ÿ~VN/ ŸÖ¢ú!JþOÐO…uéT’’6—;IñbÄráõ¬V„0Pˆu׿Ô`-óûãÙï1<‹–<¯.§¶ä±ˆŒxB¹d# Óˆ§þ3$öQÛ-VÛì »ûe »ûš³y,šBâ`w¿žŠ«¨^a¥×ËŽÒE¹úWŽmèÕ¦þÕ¨sˆä 3ü­»®å£ ùû»fløu¥Ã„ã`5¾ršø*\ ¦áùy{Ñþ=_“éúÍeZÑ®*ò7i]+VÎRq›–BxâØ-Î8×K£.Vryˆ¼r»RmY o3¯Éñ5 ×Ö#Åôn*&¯y³Isà &͹© ¨øö)—ŠCyò·{‘H'´¯Ö2n&^q؃8ðYÃqS¥žT73RÝšR/ÿq(f1ÀcŸðÀÂ+"›Ç|•V5%dœœÂyáøæÜ‡ 4L<Èå®quS ’¢qéRøPF<(•rÃ³Ž Ÿ þø /9_ƒÅñV¦ßú`@“íY5â¬îY1Mk±¹WÃ}BúO¨O”aýþ2*ÇÐQñÁïh{ÓèùÔLÏ?SØž?p{Èlgš;œ-¿;­-ë¹ò•k/}øE&ÝŠuÃØŠº¥kñ£þ#Ã9&Ó&]?¦ý` ÆúÞ ™øÏÞ#ˆ;dmUC´U­ë(t ²)k”M‰ñê¯.ƒ¿g‹üô¡"pf?™@!JH LHð¥ÚØ \‡êБlkÓ\îT‘W›¨zëOŠ‘)6E<\ÐD~2é©MâþYqj+Nmñ¤‹µˆZÔºÿJ­Û­õ+rù÷Þ3®4ÏF©¥°Zw‘g£[Yä³å*–ð@)W˜Pw?å=y]5=nÏÌ‚ø„ âY¸5ùª¿¹õªÞ(ÛÄãµXJOil$Vá XÊÝõŒBŒì(=yVIkÏ<·¯å)à) |ž‰‡+­ûw¥ィãã¸Þžhø¬ê©pù Ñ>öáSòðÇ/1Åm[Ðÿ%l¥ä"0¶™æ­)®5²]1Üp;Éá ¯kÕ,ת|¸™&»žNu ®Ò²o!;é(d'?“Iôn}DØI·>¢Ò§SMòaa'-Vè-Wÿ*Ô?èËh’[£þO'ËN¼Wßì’—õ™È•vìͱc/ç¹óì×óTSìçé)ªÙI³Þ² ov—›Ø$|®Ìð¹ JÊÊ{_ƒ9“¿gN($põêÊŠyĵ~ŠW e òú+®Ÿ*ôˆìðÙà–yT4¢õ!Œa°«T q­úÏA¹ë)²ØE[ØA$ ?®ˆÊÊOr§|þÌI‘þÌÚñ·×Ô“‹uΡÑ™|Ú^ªÆwy·"šåÖ®´\Hâ3ˆVëµêq:N"¥ùGÅóÔöü‰zp^ ¾–¼O¾f’Åuú׺¸Pë?Ä"ƒ5²÷Bb›Gáà7M8²T…?l4Ü,å‘Ó˜LäÿOfœá~lŽ@ÔW-­7*6 £Wü}ÞòWôy&Õ‰å œh?Ðû«½k„Í€­¯6À£çuèƒìÏá&)öçdÕA5VlÙ”Ÿ -_ä1çþ˜‡€'‹ÌùÅ{&ðÈ!ýXªË­Ióþl¬˜½õ40¥Wš¥ÿ' #Ü™À¨[®Õðÿ7¢Ñi§X0Ÿßµgež¶s¼‚•pú™z²Èç$½$6ÙµƒAs¾âs}>àCMq.‚²EbƒhÃi cÃç5¢œwY^+!q#ãódNô¶;žzS%úzc%ú?Ú¬XÓÇßË7ΣÔÍ…·ÏU3ägMÈÄAƒV²Z<úhµ?–Ǥâäk«ƒLî ®bþ¾˜÷ûº)žt°’.ðuSìÔx ÙÂú|‰zCÓ=ŽNÑLOqý!–^Óe±íð ŽN±1¬˜íu¡ÂÐWÂp¤&0ü;HèˆZtŠ}µ®ÿ7è®§=d}GCb.x7[®³C¬ã+­tº’Òé>ëÄÙ'<ã›’ò2ÔágÄÛàËj‹käû¿ç’Kù=”Õß—óû¨úýÈ%i—'™ÅS×M;ømÂä#»ÕX+yo¿ºw¨KFVd€ò¤<ðËýÁÚøÀ@ॾv<°¦&dºŒÖm²Ù>^Ím}ÚÞ¥xòØ]“;N®ÌYgâsÃEµו¦øD.²†ÉÞB‘QqQÕ±xg5 Ä 7ùÍ–"Xàrìfª]ó,qÉå_Þ$oš‹ñ2`0œ¸¾B,ׇX$™oø5_jŠ= …Þ@Ïÿìun¹ˆž9ÍÇÇþ=pcAä?º/ÿ+\‚\S*pæ½¼¹kÜÍØÕnô¯7ª^ÿ½÷j§«.ªM~»,{$DSø-»Ü+ÀÁwu)~;±Ê  3hÑëÀÊãrõ¯Bý««TÿjÔ¿9ê_­‰[œö=yYŸ>P0ŒÀ>stFSÉ…WyÌL.g’MWåÓ~Ì$ᇒ–_• ìd¶d?UfKH>Õ×ù´Vª+‹YàV®ä’Kç=¨Î©ëç–üð‰¨Ò?9ª¦Ý¬Óeâ$>]±ú0 ¥xà€³;;-‹¿[Ý{ û/©±—¡V±=’‚P"trÉeW™ƒ'’¢uõæ––äÕ_–lZ8cÛÑùÇ3ôŒóÿüd^K8/ÃcÒä>£V³«Iø™Kšví}ÞÚ×éµ?POüûy@ØO†ì§SØi™öó ðœð5‡æžâ·õœQ£Ò=#øDtÛH(=,PjIÖ=<]ƒú…œæg^3§1 °Ù  ¨}AYå{DS¬S“œL€‘¹NÒ:~iÈß¶!h5“t_LWè0ÖÜ+j™Ûg:ô[³Ô}e………žƒ¦Ã.Ša-j™SüËl5Ëœ»ŸZ’•L&Vp¿üéÁŸ:ߪ™çQŽ,5õ¯Fý“³ ÿ‡ëC¦š+”¸ýmYI­6]=IºÛåë}.윆¢œ¥±|D¬C²°XÒhÚòª­‚` ·óEjüp§ÌG©+¤}ŒØK>"NDò‡¿°(á¨R]… ølhTU›Y€; ¤nÛŠOŠeG Å™ð%4Z¤Z¤Z¤Zxåç}7dì~Ftpå4¸SETûÉÜãJªtÎ@²Î2 j¤M=¡dQš(ìWW›xuyš®ñý’Ôn\ µäÉËÉ ~7p™êïõw¡ú IªYý] UWÄÕe ¿~oøíÊo·¬`+ÞývË º¹ð£ívÉGõÔŽr‘üŠ­ùøö}ÞÛ÷ñíýÞÛûùöCÞÛñíoLo™k0}é\-Åi;Å ºÈ¦ ŽÀ”nÐbiþ+ëäD@¡]˜“KBÆØ‡”~šJS¦†ÏhÜ,Õw%¿¶‘&ÈGÛó Ûa8Þ[Ý¡Kì®Î°Ä®R`J¥‹”ØíH¥;¢}Ê›qîø} 2M')_~Û–}S†ïKXú™Ä:•ãùÑä)ž>ú9Ä·_Ñ‹ñ ®@åb·ÏÇïýÊ»!ü{)™½r‡ƕna»X0%}  f´÷ÃB¿W}ˆ((U rÛ–‰ýsÑz]bµ¹m‡X mIQÈçf‹¨S¹ÌÆ ÕÎLÎö-i¦ð2Ùh† ‚|kSor™$ –~b>5kMJFu'•Z“O„B¾Z“iÊÙã&ñ¿½iþ¥³o°)üõP(ÿ¯¼>Ø$Q—ôÌ5ÏrðÊ,…#fb­ÀãÉÁ•ɊĈ۪#ʼZLþöœ<¼# ",+²µ/QÄ«KЭPaðU*z:§ýu1K ÓáM[ÆiCšdß}Qøß·ñvOgøçûÜÄè >FÒUÈH$¯DÑD!H>W¼×pàÒ÷jYƒ5þ€¯G}ÐLùi£éÉ™:Ôí ! ͤO*ê‚4Gž çÒ¢+PÆVüC¤f Ô.ŒRFMRîøËè~^B÷3ØQ˜ÜÁpŽœ°êñ8of¥¥öa‰Í³õeÚ­¿ú Ž™0Y£›3çF‹üi¡o‡uàí­fýyñüáÐòb0ÛaWK˜'ñ)]²HòÈ¿Rœ_ÿ[ð®ºýÕÅ=èPÒwµW½wÓÕ’qÆ8‰éîê’Ri÷0˶{Ø0ª3M\Êgá–ErËbï–úkåضÕ-jæR3 dTºG†ö¾ MžU]¶¯ÝvµINܰýc³tT³×¾4ÍÎ¥\n#HÛls[ÝË´~¦>Å×ÎN œNÙvã'Ùœ<1Ã<˜`‘¨Y–Ûââ.fšGð q3mÜ… }ÓÌ‹ß$eR«“%ÇŸ­ß\;¡Ë)ÅC½Á;Ô3<Ô½C][~›<¥°x¥eË (‹ýºU8&3“N¢ÀÒ^õàTRVCþĽúhRÔÊ<»±šërO9ZNÙ²ÅSŽ´VvEðùò½¯Ùäj²²O!+9ô^sît½WŸ;e ŸlIů˯ ³ÅËꎋÆ\ÜÄ(Úå—¢ñ“³1–ÌÓþ@cfµØ[›it†&üPŒ’ aØ}h/´¨€v’ÿ³¬,´ÝÛ€v.4çm@ŽàYçmÀ:‚§Co@@Ù+nÿ5ƒ1k~M îÖRûÚQæ¡©F/}$#/ÝèMu#§ºÉ›ê&NµÓ›j'§ºEOÕXŶ¼„ùpæ V­²Å'-ŒöýšUnyZf“ñkX“ïbÏ{s)”±¸b-&VÃ$͹)Ùh4NØKÁÃëaŠ6œH3O\Éè ƒ Xp–2ðˆ¦ä"öUÈeyDsr¹±Â¶¨/­ðr«{òrƒšb×8M±«PSôû}æF¿1[’ŸoØg÷|í¨PP“+“ÓiÕ²sýábÙ9zÿb3%b!M†êlc¬¶îcv뽚÷¨Ÿó%1§ˆ±AöL²äÃŲgQñ|©Ÿƒ{¶-°gêgìنžŸeË€ Ø2¢kâÒ[Fämä–™˜Ù2Ã÷ öJñsCÜ«¦KìÕ7î ÙÆÌk˜?oz(XÅøjìLÈ•Yðu¡¤ˆ+Û·èÙž(7¼´Mö0Æ;—Ì‘;Kyg=c^¼Sôç”:åÎúûäÎrÞ)ÊmN­_î¬[+w&ygß»äÎJÞ9‹wÖðÎY¼sï”.M4Y·Èóx'*”!Зw.ÊÈõ¼SJÂå9ÈhK‡hÞ  ŒÄ'ÿCH™mÅ™B’9õ,­”Oõçî­‡BÛÛ¯ø¿»OêI;ÔŸa)šŠÎàsR¤kªè'ŠE¼{îÝNÇP¶ûf¹&Ï#¶®ázC2Íœf_HkGà ÛF‡¶7ïU¢¬’zï:™V¦Õ£zð+Ÿ¹þ¯åýKÞà÷×9ÞûEdž‹C º¬K9eLœ²@:74ªþP°>3Ø#Ó“˜Òlmo¸‹3ïNÖ;˜ô¯¨E XÂPãÎÑ#½˜yo©Ràî:8Ü!Ã0¿Ï0çc7¼™š>Ý•H³uëAÂ$µC 7o3 yÞ€$­Vs÷¬or°Ü}²uòõ{™èØæÈ†¤Áì¡ç¥Ýò_ö÷qúøÆæÙXáÕ‡B^Y²PHw èáN îæjG,hámšpE,”qL¦à ¸Û4¸‡~sÄ‚y›„Ä <"pvòn‰tðpÎ7ÎTk_!h_Í%ñu_Ȩmûø`ÈD„ëõÙ‡äÁcúŠŒAǦ•©Ãl$TàÖîóÐ=[{ä¹ñ<ë(õV¦=Ü\4¢¾É&kýž¨Ó2Ñ·}\݈E|ºë_ƒ(-×l€û½°«¯ìZP?\?+Ü=Uÿ”×Gå'¹´`Ö‘mêçÁ=ê^˜s¤Wûšéo,4þ±ìPÈqìŸêòh¢úq$*€»Ýöˆ‚¼-¿vJ}Œ80å´Ü3æüB# ú{ëÆ©n­Ínn7wlnÄå§4…&nnJ6÷‹ ˆŽešCºÍ_›˜,±ìíîKãùâ\l©¯žÔ×@ê¾Úƒ—w(äYŽ{|T¶Ã£-TS ýÈ=‡f$êó‚u§ðÇ\„þŽßdäénþÚ-îÁzÕΈ"æE¸÷…,ÛÜã›ÿê”ºŠ§\þѰßQîE á¾O¦;å'EÇ#Åq¬ñÅoÒf9w¡·“"9 ØÛäöÝLý:/-´úPÄC­N9GÒݵ2»NáÀnëÜSYµ=2Žîïú‘ÄGû6=­vVóc÷%{þú÷_ "°‹fËB6# Aó¿”:/í}¥ôOÜrÑâ”ìþ¿¿&Šï_û»k¢Ážø0æÞûÜT½ã½#Sõú]ôðœM`€jñxI^ÇÝ3ab‹{*L€»0' (k‹;?uÔ­-é|r’!WõF€Ÿ¯Ú^ª¿nSt²ÿ¦ìfo½~±a˜b¿ì™nöÞ1~éóêòüô“Ö¤ó‰R÷`|óïT¤ÿ²Ü=ßü׉ªWâ›ßšþëˆûj|óç*â›ÿ2ZõKõ)Vu¿Æ7"ŠH=ËyÅ¿uB³&0}¢ý³ï7ûˆ¼‰n@=öEôPÈ#èU{XmWºiÕØê'V”h†ñ±^ü>šn\5Ö{þ:wÏ{ÔïÒF"±!ïJ󫎵~I¹|ÞyQŸ.îa÷tÕ~œ EêΖ¯Ž¹ÜØÕ/µÌÕ¡÷Âuî/ßÓ)Ÿ«~ 3uÈBó_¸s†>sÝ.MT2³ÿ@JŸ¼~Õ.Tþì#^ÅŸÇ:Ó_M䋯“ç.º½çá3äÖ²ï‡8ßœP(k¾cJ½æœÕ½=ÜÁÓýÏÇÜãèÛ›?wAxº"W,#âævƒµ=k‘pf¹>Ý•:Q§_ýÄ·êWºÛÒäÄîN÷ ”ăÿð´s ýÁ±o»è~p ¤¡˜Ü‹“pF—ÇŸË¥ž–¾S:ÇÍ=­^ žY–ææé ó:wA‘—£A½…unSô¤›ÿÖ¹ údÐS{TMk™.=ñ¯Å%Ax)™¥îBu€•\¿œd%¯ñÄ/¤_}ò opnSêX¨uæmÛøiè/kHôÐÄú ð+Ës<]Rß 6ùRÖ€/99§Ó% ø‹œâeü%#¿,ä/íòKÉ‘äÖY!ªØùŠûðþ±IÞ?\ÜÖ U¶Û¸02 ÑÃó©3 ¸{VqVLuìúë…ÉÀ¯~u‘ äŒï’HEà|ðªêSäÉú®õ4èJÆ@ö€T/ƒ wktÏÆêõc|C$d¼ÊºÙCžô‚ÇY~ðÏŸY¸õ*2íF³ps†‡?½ }êþÒíÿóž…Fz¡œ¬Ó)uyQ)öb˜CƒR°Œ†èˆ;Øû\8¬àŽØ¦®»PŠT×=pᇬz2`ÅÕî?ß½pp÷p.6*+=?] j†8±Â[ÂæÐkÎ=n&Ÿw̋̆ûTÕuê;O¸:Oº;OC«–ò½Ñá\²T>>8:ܬ¾6?8ºêÑ"¥IÍž>ñ±4ANƒÇ,¾Ä]\@- ûA3A aT+0*Ò›w¬þû—ònÙß\²q¢M_ˆ?½Îî°F Nl™èß*¶WÊYôÛ¦fõ¡õóÆÃ3Û™$ #îA„® =œ’çÝ#î@Õ)Ù¯ãÎ᜼ Šƒ‚ޕጢJǨW¥ãgÃ.Z^. @CХʘÇp;ôSƒý‹‹£r6Çø½Ñ|¯à÷Eæ»0([K¯Šyyp›áQ!tÊûVµÄé"¥g&¬`¯R½ð÷°¬3Éu†ù¢ìoŽÂ#ÒsV0ÏVûÐò–Ñ|**Íëxàâ«Û"¡fÒÂ#w*€JÕ½‹ó‡[þ@óNÿ¼Ï;½ÚD‡½ÔÖÄ4¢ä.„xá>çeÅ`G_løæ(&ïljüæè‘cÃÍkG?k}Týá¯r²h ¨MªöÖ"ón¾{TM—N'Ü’|ÄZŸ>Å×ÞËbÝ‹íó ùÇ>ØD$£Y4^êÉr©ŒVòÊDÜ,øuc“ê¯BgQ]%Z -éw*~~îÀ Qg·~Þ2VÞ§«^Œ¯EPª;ª Ú|"Y`=Äyj›–ÝýîÞª_¸Ò¶‡§ÃŽÕA4Ó¸ZhJÿ„‘Õzµ§÷_F{¬ ÍzÝÎTÏF¯'pÝìo ¶^}†|’غb>¨óyç®çÐï•C¿Ä~w2_5u­ˆmˆtê3Pj!Ãuþ[b…‚ÑðïL.BXßÇBæýtÈ•EíUèÝ€'Z“Mèæ§>*&#sñJhDòñoi†Ðl¨M³”¦"³œ™é:Ö™ÈV_25Y²¼‰¥+E€–óSQBôZ¢óŽºŽÒ$žMkõ»I—×ýjÆÏ0’Žä2á w¾/ø£mj˜«…ù:ÍtÊ}nóÆtQçù2\5RÄJ’]+ÿ´ñ|JéFËY—iÎú)ÃY3¼³˜!öM\¨ÎÈÝ_[8ØF9GjœÝû3îzÎ Ë<6%àZ©’˜•éYpLa"ŠˆKô6€«Oì5/$ šÎ郻U `èˆÔc¿Î•dÍØ›eëÆp`^3ç¿ëH+Á—èüc­³QI}bÅtõ>Jÿúþ¸`ÝäÛƒ@|í+Š?˜¯KÜ!à3t“ š8D}4F’¢%œþ†:›ÑPב·î^3×)ŽÎl9òaðÑE+øÅEZ•Ć™²«Üu †´‚€ZËTè–ËþÓàÁ3.I§Œ/>xlÎQ>ÚÒ›#¯Ò)ñ…7…Œ%m1gl#´ëª9 œÃHk…<€/oU”µ`¸¸íDš ÅÇSD<ÀànuÛ² A ‚Aàò°²n8´Þ®~ØÒG¡Ü1Só0A"–Tqzœ~ˆ|»ÀÃÔ=ßÕüê—Šr¢ÅæWC‚ê Õq¾0 Xš¾:æ<û¯É;ˆŠ(;Å+u§{·/€ÄÎ.ƒ²À¹á†‡FÓS¢Uc²~¸9= ÷B·ÜÊF ÁW/ûꘚSÃücwÝšnJ.˜¼µÊÍ;=­ÔÁú1ÅÁÝÃMw*ðŽDÕJ±êO|íwµME3½ëâRûCcS!ÅÁºÉÁZ¥÷.¸©„“‘7åïøEƒ©gM¼œZJŽzQ,„µ’û}±âùOÏúuã™Ñkó P:Šÿ·¨÷¯Tóh5ú 0Õ8ÞWúêô¡æÝC0ÐÏ}‹/ë{ê/~ÊfXr=›xÑ9<œK¬/ò×~b<³š–3«FÊdFö80²Eä¹ÔÞÛ¥)§…îÁú–ƒ»ãk?‘ö /ƒu8ÁÌÅî¾”¼àŒÂ|®9#ù“ó¹¶QÃÍÇ•ºqre8dj|ï,…å{÷ð€éï­O@ý%F-(¬iþÙÅóý” ¼««¹£ Ò 8Áab³©0‚ˆ|úiÈh ø›|÷³¶FyO?Á‡[]Ò²ýФ›ýJèL])œm.òîVz R1„+h…PÊB¿dö-özÜrÄC"O|Ž…ÃèxrX³UÑ5Šüû¹ÐnÝÂ";'Š•M$^ÌŒ‡Ã"Ϊ߱æ)-‰ÚGð)¾6bJ_2æÎÆ5 H¸ñÔ?O•\ZÜŒWF¾ò«úÖ¡’õÜW ëÂRh Ps79ª:1]äóœ|Qh¤á­™š$KA¼É;Öæ$D#÷UkaÇðªmÈ ¶€h;fÕÓñÌv±;h¥´ÈòlÅÜ!±žt ô ûàQ#CáL¨:à}p­—妇ðyÁ#MŒôÁSY¤}?âö›Sd¸[m¼¨C²ƒàœECމ¼Áu˜Yò>n}¥Úú¡’¾;¤E°ê|äÎO§9cu×)¹«tð¹ÁžmØ•¿»5w’¿îñÿúV{(Ê š+GŽ…#F>â;«Ô;Q®Íu‹îk#$ÔàKÕ'åcßèбÁ^yË<`1÷#ƒ»÷îYQ2Ø‹êiIô¯:ñ;ƒ=C%0† œìQOíÕ˜¤ïØ9¸G{gÔ£/Ù6¸{`L?øìIeÃt"}±UæÀ„Fô )yE ´cðå1õ¦ QZ¥°«GïÐ@ÿ„¢”2èpŸç†;䃣!µ߇;äÏÐñÁ=´ÍÛÔa6¤<ܼgTÃOM¿©jÄ ˆtnê¹0¸'žù ¹;déDµåH69I'­Œpy˜ë0Û¸û«N+ë}.¬˜Åc¨:ÜP=2ÜðþÓ½CêïÀ¾ãÃÍÕ# ~{ä£þß;Üü~1ÍÓ0ñ˜œ§Ü.âk9i(,›©g6rŽI™5Œ#Òžk~SÐfbDàØÞ‚)ïÔ¦“½?ˆùW g#'Â)ó¸=æëuÌ×ëp Ö1_jn/ÕKy@Û6+Iæ5Ü@D¥oRp¯%_žÇEÎó6™¤ØÃ¹Ë‚½"B Ëæ±Ü=ac»fDñæòqºžöt=ík ¦=}ÄcØÊœ9a$ŒEÞg¿–÷çAƵ\-*í<ÀS5ëåŽ:üÜ6”‘ïCü.“è+ytÔQˆÀ—‘S”˜€OÂ4…ëÄ&Ò:öWœäÆUØ+ÝJËë*½½à 3§Èî%†Z>²Ã1|š)6ÚGåÈ9ô²HcàÐaòkï”­·ÇS½ÜûËóV\AÂ'Jí!DËÃ)‘7†R"dhéc¸ù¿Ø[ª€g™]å2N¹Õ¾µUÞzÿ9u(¦¤m¼ë+ªïÈ¢ŠÊ#øˆ\!Þh3Öðr†—m‚¾g‹ûïxCŠê¿ƒ6äÿþw” Ü:"¥åJ†mQ2ìJ%ö޽2é•ɰwŸ¬ûãñö #•…"žÐQŸ¼HÏj4âÕQŠáú^/P˜ãþ×ÿ±|[ÖŠäò°U$ñQÒ»á½Æ‰@éùchG¥cáòlcfFÔ£ºOŒ¯÷ß(­°X?Rò8‹U?òo˲rÈâ‰ù}-oÕèðìƒ×{åç={ñ¢¾a¾{dAHg·˜ÁĨ×Õ9Vl긗ß)냉«%ì ñQåÕZ3rÙ…ÿkrŸvûý«Õƒgc?H7Ls;Sæfµº5n2Xó¥Ù¡5$ÆF =ràö¾ÕW\cfR§žú1L'®r»å›û* –Ý[ˆ?ȵ•ïŠúx`É·TrG¯—‹g¯ ­ÚœÌ>´€ù,.V§ä›è¿òŠn+þpì¶Ïæ®FÈÏ?_ý± \.¿í#_¿~ñ&ŒÑ)ËZý|K‰RêÊü||u²"dÜ.ñ‡%“ °šEº!ôáð 6‡™ëW$J:0ÅÃá¶ÇoºQˆŽú¦dsþG(æ­> HDŒ¸+ãâ@o"¦ÒÌû¹D©dË*ZfDmÙ¯"rNýËxö“9íñ²¡dƒÕiYœæ=¨;­6:›N)¡8kg¨!ªL Á——}‰1)<õÉ!—…VC“_ø¤X8ñ™žÉ;ØdýÝOŠ¡zŽÀ'òéïÞ”ˆjGLš¡¼t‹G :ð¶ŠõÙŒ:-Åù[‡.^Ô˜·½BLIw ”¶&ÿÅ€é‹`­‹±­6¬Eí%>jÀæÉËJaø£­²™±%AÂÁéB”»÷±¼¶ÖìÂ<ïiy ¬ö°¬*¸ý}:#€MÇ„eà,ûÒ9¼`"ª °štBžKÓ‰0ÛŠ`ÁdA¼çsOô¨Ù8ÜÎØXT×gðHõûÚ£àv¤ð:?̳9ÍžusH'J|sJ&§aDªÒµ'wJGyE¸O:† Ÿý¸ÝDPQ/ŒEÌiÊ(ÈKþ=jpµÎ­´[ K*ö„×'«Ž£|»ãŸowk”žèç»N>þ¨ûãè-쬛jYãI5§ùGˆ›‰‰a3‹ëo§Š†)G1³>qÚ¹‡ _5ÁSTÁz@[¶QШèÆJ²F²RØÚo2€Ÿ6w_FÞè¹óôuaœtW"„¤Ê®ŽVN]X‰;ú­sç½ù•ùµÎMë·ä’czÆD ­Ê#ÐR ÎÝbþéxjù¯Xhƒ Ó‰|;‰ag:ê —vd(Û%Ã`&wï”åñKÚßæ,Ùì¨O䓘gbÜ+À‰›\(V”)øgΨiÄEñÏ,›:Oü»âß­=ÍñT#_2´TJ¼‹K«w¼*²½¾K0î@<³€ÓVfkz×M¨ŒÑh–fd9uû¢xsÉ‘"CßþcáᫌH†9PT¯äêä’mÈÿ{ZºmD¬ptOíE9ÐîÞ%„JMa6,ñYó¾Œ)&òé„s×ßé9a‹Ãaí1y!xŸ,pJÞýÇšÊÃ^¦~a¾º‘éÕtˆðÁ…lä õH'ÜÏëø9›ø;(j²mÁè½J‚ÈÆÒj Ÿ8TäI°È™””u¤ÑÅòŠOBˆs¼:Ž(kbDfq(õ8Ÿëéã [/Å6B£ýÀ¿frïrÄŒˆ¬õi’¦‹MQ›â¹x½úÓÁ뢽}êÑõŽ—„¶ÑÑåÀÕ›¨œªg ÷ÉÞÿ*r_Tb#¦#6rÅ?·[‡¸wɰu]uxÿ†Y@Jý¸Â©XLZÅÉÏjdÜìæÃ)>•‰àruF&âòú­=A ’íÑ»·õq] æH–‹Ow¹Æ×c\pp9 ]~1†VA§¥EX|*ç,Úfs|d‰UC—q~Äiã_[Z^LZ^'ÏG¼½²ÏÉó¯¾ê¾ß>ßÏç÷ÙsfŸ‡v«¶Uü$"Ss/—ãæ7^•Â'Bf"E‚Ž]vG™¥Eêü¿—{8ÓÇgQ1¨¡ñΛ!ZQXy¬ê˜û¸:AÛµüÐ*ÒF¾¤ü “—pɰ>5ô(•ÂPöÈo­Ò »Š¤“k&¹Õ®¶»ÈTÛQäÉr§'œáv%àf¾Màu“öP´ê)òžØãî²¶þcDP˜‘Š<†ô”³¿]s¤ô×ÀŒV÷¬@·É»w CB¯‰7é˜1M”À!Í•è˜gõéD©‹x†àD»,Ûîâ¦mµæ–­œf·åùÝÚBcQs©´û\)ûü#¶Þj»‰î“HJ8gI‹#ò…«i62¢ƒö:$Í÷•F0¨¡€·ÍxšØ¼Í½‰èuçbããë·]<Íþt$ê «à/2ÞaÈx:éÜùtWf ¥žK$þ€'Ùù\zkš8Ìýw8וÜÄ~íI2|{^‘— gR«·èÁÉПðÏ:¾%³Žë«çž5”Ú‹±€˜GÙÖÉaçI7ON¦¹ÌÛ~g§Á¡o=±âš ›å³h}OG!yŽ£&ÎC'4Êê°OðaÅ3÷×%F`ÐánŸû´6ÐHhÇ£Îc—œ¤ ~¯LrwKÌíSÊ쉳=0á'Õbš"¿ºÂÁÉuȤ?÷Œ¼E;ñ»Ë…£wRyÕ™D²ö›å‘ðƒô¦íºëÀ[O¼U÷_œWÄPÃ"¿~9ÏBF›“ë,­ãîÔ[rª'Jˆ9SØn#)´ž"—D>–žëCè3¢ÝpßËŽ‚z‹¦8#Ø:¼ ~Ø ÐK«Éã¨õÜÕ|†X% ë¼$ ?–¤REé˜ ÷ç)—9¸Ù¦Ïãx–GS9¡˜Ÿã…ðóÔk 9\ª{Ŷ[«5 Œ¬ý³¾®[òžßÌ8å%rD`:µ4YDó¿~5v6-ÅùÿØ+’«‘»†|rÂY“óbïÏ¥‹Ûû°Vç•vÂ/ ±Õ%5ücí ¶?–Œ?Ùž” |ô”X\µA„IÅùÑmàz|ztôþ»´ÎTjrFÝ\]ÝûB&õXL8›Ñ‡šßf™iŒÌ´ÔŠÛ¥|xßÄWA–Þa%·êv_kaá®z¯¥až, fèÔ¤xÑ3=‘ Ê1›)¬'o¸YÍc=®Gµ}KËîÝRƒQ‹âíir)°$,i}‘•¾7ßc¤ï³ŽŸF³ø1LjONè¬ãgq#äîïP#I„(w‡|OL,wG&äe“ŠÝ•bw7M_Q+vãÓ‰«Ý—DðÎô¬Å±³ÜxY£lü(q“çöñ‘ˆE°w|£Å•²ÁÏSð^/"³tó{®¢åäŽ9ùß.¥DþCÖ"Ü–8^ÿN\ªÖñÀ&jß„„öê"%B%Z‘Å-!+Š%d¥‹/3B¹:&er»W¼3(ŽŸ»ÎPWi˜røͰ´ ¾=MÕ,-×JËJžÀ…§D5i䤙E=tŠtîM³p#Œ»ªëέÑÙ&šÛKÚÅ£UOÆ3]úÈ•`*>+·öKˆr5Z©ã½ƒuDÉOU(„8 x#üÕùpü^›ÓíRÖCË1H¶Èñ«BX”äÛÃFϬÖÚ¿ã årŸŽªG”çÓŒ¼~ªê‚š÷/ 7uz `Gì€\>#¾™;äìÕú‘·ŠƒZ23ñÆàŠ}œ ŽÎÁtw ¼¼\¾â­~™¼I@Òwž˜—&n÷—xÈ_ûIÅ㎽¶ï ë$Kw²¹"nK^ýÚbá¯ÖII¨9æ1q¯’Mg‘¶7‰AIÉ¢&þÓÔoV¢e$©™Ãf‰ 1Rã;OÁ4„$XX‰¶Ã/Ôi©ŸîúQöKÖBî̶ǤL¼±³î*KÿeÄd}d5;ž]lK‘gsßÊå‘!b»ü¶:~¡¡Y“ÏÝ´›Û×Ã[{xëÞ*îuŸV$=ŒÄ5{÷ùŽ`¥ÑQ?»Œî9F,Õ94æX5ޝ½ƒ¯Úg¹¿S¸fÑ? ª¯å ‡|¨ÞoP}”»§Ó™:iK8N-˜»Áz¡Vè¡À¾ª úŒŽwr9¨Bú~Ò›@{ÂØs‚ñn.…Šƒ'Þ⾤7"Lèzû±Õ®|«·#ÄÞnßçÉDOm±‡þ9f¿Çãó.?~)~¼àª@ø¾|רvØ}Ét5!×_Å"å õ_T!‰㧃Æh~j¼Š…·Í_)Vú)ä™.Ð6úr?•ðó«˜ú(7o;wØýT ,rŠô @ælú‡J˜+OæW© û'*y-VBj!÷¯±î®±K=ú¼hNð*’sFÈ'–ZéR¹ï¦ŸŠ¼Ñ>Þ(—ÿôYyA 0x± ’_YN^½"ñ`1a ÇΑøØ âÃÿ8X?hÂüa½;wÄÔIQœºûâE–k@σ¶fFÚÿ‚ïé†ÿs­þ³XëŒ4ïp—ýû؉çÚÝsf¬†¥?s·…?›àΩnÓÇNoo:ûÖ•§üÄÿL8žíé_çüߢæŸþhlõn)Rô•·?"Hu˜lóŽ1Éûؘf—/˜ªJ@éâ'ä3}jëkÊK¾òøûIòßt“W®~þΆ¯"éëÄ[V?ÿ•&šI®ço}èâE#ËBýöl2Èyca(Ž 6k?–/‰oyåvÐø"!‡’6¼MòØ7씛钺 „ÖO]}¿TXRbfÙG–(¥*äÄÁ§»þ>1…{8ÜL‘Õ‰o‘¤qqákV+QËüÞ¯T-ˆìàà"Zõºþ*f¸FÌj驇oÄŸläÛº@¿Y§â`†™Eˆuædqî§Íáy·>]üFÒü{;¼ËW'ï[:Ò"ÍsK'+Þó%_ýÌ ö_‚þ9QX ÌÅ™d¼ÃàdCœ¹Cî©Ö©É”yå@ý%ÙS£3u"îBþ‘x“<9€+3‘N¢“åêð\5M¤J’N>Õ·™3<3*õ{N!•ˆùïÚ3î>Þûóp6¶V"Ù%ÉøÙÞŸ¹Ý"‰9«’žÞ¯ƒñª¶…)#kŸ6£âœ ‡¿@~Ѳ³xßó-ÓÓÌ,žlE¹IæRÛà×Jó/þÈ ¤ ™õë@}`ÍÿeKdþð ˆwÌ<ßò›}Ïëto-O'„G­(54‹Ÿµ}7DJ— øÑ¢W‡;JUß¼IÒ¨É9•fÂ0’11PÍ=HR_!߬nA¼0nYV…»%ìló2çTÕqˆzv˜äb¦Ž»ùÞ‘p¶f“sÌÍÅÄ´€(Ú¥0¹]Q·Ûh0Ø">>Å×¶0͸ÂJ rùÀ«rrIê½°ry½íIÍ\H4ÄHM>ö‰F¾p‘}á"âªWå|“ƒioŸHækþC"Ú¼,è‰Ò7¢Ð7Ó/«€ÉÍ>ìˆ/Ư4Sê5BŒÇ…ý^ù§F‹lb³s8J,çdE–j˜yÊKÂZÌEÊ'©ù×l×Ù,Ëú[f?RXã¬gN–p ü™8׺´‹xoXéâI¨¸çR»§O‹|¦[ÔQò5ñð€9‘Õâ^‰Õq[Xg=³PÑçžÐîç<ŸòäüÞøÚߨçÛ¤o£o¢”Ê]|õÇ{›n~ÁAuÞ3Þ^¦€òCñ̳|‡”%ÚËè$OgÝA-b÷^'…ßÄ¡E~ouáí=P}ôÄ—Ó<| <ÌÕ²È\šÐa<]‚œ/á1¥Ž<íì²Ëª¬•²’óĘ“onF¾Ýý(ðlûNü¶äMä¾õùÏg©-C%„Ó±Ð!X°8cîÃçc­¶>¥ž´Ã}p„Ñå»T=¥ê“©À„ª>Xqʉ 8nlcûB¶ÙoßçM:ÍgÔŽ§Î;öÔuª#BpeÀ*<‡x·*çP;‹§tä½ÍÝnÄ€Ùˆ}fÆâgðJ8Ðô>¸åN}ZãäÔ¶ìmÎ07™©¹kdC“rÞÁEG·ÏU<2,¿6$›ðꌦS¼Ð*qêÎy¥*LÇ•ªmê{“›{-ËP6¨¯-~Co|í2:Nz¸rb"0héF`¡E§Õ=w~,­+HT#v ?ð°Ú‰¬®í„" ;5ŠSáu?3¶jWD«Œì×M?bÜZòŠÓ}ùßÔU ™ ÜcRÂÀÝCr뢈Oë4`!óÜNg¿œ_Ó†ø½bT¸Ïb©–¥$’(ŒzÑ!ËÒCÂûþýU9CÆìƒ}:òÒÜ)b”r5k?:aUŠ+J„Õõ»|¼Sê&kéÁZ ?s:[õ‘*ýñ˜>›3œŸ ¸˜²ÛBž:¥Ø7êWO‚ÿ:B-GÄ—‰õT•Fä[Oü4«¹#ô‚ÁýoSÀj°¶ÇWãQ‚Ÿg“ز³_ú|i§B!¯|3âL Âãhý1{¤2$žÍÆ6;ƒÙO¼¬$M-%hj!ÔbaÝðÛðk¬¸Î’"š.ÄüªïÓ>Cc:ÚûÜT}Z~î‰ÐÀÙâ¶§f ¥ËšžŒÚD+ n­­-#§ST:ð})bÏqJ "É'…›^t€ì=wðúÃFôSÌ)[’ú°t7‰PƒÄXßû´8dR? Ë ÜŒ´µÇ;ýG° V†bÃ5EF–üq\bs¶ WËúÄËàîÁCôûÅÈö³&Þ[<àýÈeõºüG¿'høíƒaôŸÓ¸µÇ OíÆ,@uEV@ò`ï+×¹ƒû"ކd™@R½…yeh¾¸Éƒ¤áu$µâg ë±LmãBHZÌ– ÷dóeLMV¸/¤yeDI ÿéSÇ·MÇð¿ÿto†¢Þ‘©ZxûÜne_¶L@¹-ûU›dìd´•ýo“dÿÅò/‘«Œ ñEÕy"Äw ¾Ø·µ¸‰4ñ¼VŠÓr,jÜÂÓ®ÿzcÛ¹ îwêúèð;Ÿ”OF‡¯üËâSÛøÔãǧÓXÄÄ|îµÚ/ ¢#Ê„±þzÌÕUŠ?Ó@Oš~0•^~jøþLØøÑÙfl-¨åCÙå`ú·cñÍb×–_ÆÔ¶æ·ý¦M=ÿš“ƒ'¾ú§ŸÉ¢O4}dÅô‘•¦ÿÚmª“ô?4³–¿z‚Q›T‘'ý@4uÌ“ñ4@¨3..Ì=¬ƒ­QE{ÏSv¶§MLJR¹ÖÑSR—Vä],ý‘“ñÍwœt¶#šŠ§ûI¢åvÄ:9 Iœìm$üLy Y/¦F™Ÿâk¿À®)Þž ™(Œoo···Ëí× šFWûVzo±à,2\XJÏH=-Ÿ»Ã0•çj¤ªQÓ»Njëèóí,ܧhÅÀ§»ö\yI²IíßR€®SŒ=¦bk]R÷ÁA9â ŸhL–j»¦0c[é4†Þºùo‡Lã4˜ÔÝ\¸´¾:)aŸûƒsмõsh&bÍRÏg¡£O˺ ‰þÊ °]RþÑê¼K»€§ˆF©‘2É:Õuº•qÄÁ¡–¸†ˆ†eŒ˜=d5nÓ÷ W8æàÛú—Ÿ©u×B¸Ü¡–|nŠg)ˆ%ó«ÿbC}A¡+Þfd©é<‡âP?Qþà­ä·Ò`dï’ZàŒïHqQžÈ"k> ›¢T—`ãÙ’#¨h5–ïmäñú­µi¤£ñGÒ[-~yÙ–¦„ú[Ü'‚àŠÚé`ôiòùj-„dDŽim0Ívæ½ÉúiLzÌyÒ€/òoåo»&:ÿTÒÂÃü¾–Ïz&Àa÷°±{háé0a!÷»{$ÚrJ‹ÚÏ(í'ÿ  ógdgLàz .]ÿY êVïþʧ ¤ ´ ,¥€§Ñêƒêi›¡Ïcǧ ËA—ÀzL·1àᛂ>Rׄì‘*œãmß™TºPòç$üŸ6íkc!­^./Ñyö‡ —‰’‚®ìܸi ÕóDù~ ö%ÆÌù_žô³Í „Ä>RÈaþ`´åví΋?cûœû%ä-s£ê™ùgVÌ6ïV»šÈ‚9h³×1)èÿ{Š}D”÷Ù:<(ý‰Òtäë ^í=öïç\gò³eKõè®nÇd›•ÉÜ¡ä¿:gH}ðZûk@"v?"«zOšì½÷'E·?×#Õg·!~ HíìI'Êš§ÙÅœ¸Z3˜¯çíÐù»Úü+nö-’?°Ï2r}Gò¿=!ü÷«Ÿ_ÆΈÐèƒ::©çJ°;…V=„½öž\Õv÷÷þ,b|‰r×1¹~rÚH“ÍÓN¦³Îž_ýD‹ZÿwÄw#¿ÿF3y¶kN¼ê•‹­×ò¨sgLËWù¿åCÂQff#Ÿ /³ã:&)V;…Ä-Ú¨Æ1±7&ÖøÚÚ‹¯ÌŠD'€_w2r•ÈLÙ’zMê}1v÷ÝP[uø}ŽXr¯’-Ïê¾O-rwTßý€„UBM\{›#ui”‚Øð18öà'©¸ß ™*õ;"2£¨Ø£œHˆö¨OÖ9ìVª”oü9P„£&ßÒàŽ>¢  Ï}ôcê°Äåøýת#åz%ðJ3â)²Ë'ÕÄÝSõzˆ;NL ²0ÛWlN££©Òj¥õp$Ý$퇣iôÏE‘Ƈ_µ£yb_ÁóíþÓî­:Yñ™ßþTzE4ý•Ø­Ïì*‰–ÁÚU|T}r|ªˆ™k•öÓ–«Ì§.ý)ýáH:´ÉiIpzù1ª~„zSQË̶\¯ØU¼Î\üÿ©»úè(ª,ß•¤•Tƒ5,9àÇHöÀ ™n )MK„4²ÂânÖÃ*3Ó_©ØX‰P¼®³9³qÌ®ˆá»“eO2g¢ÃîÂ.ALÃ,*º¸2ÀhÐ tìŒ'Ž™ÐJ&µ÷¾WUÝtœ=;gþHºúÝû¾îýýî{¯êv7Ì çý ÃJ“à›ÏCKQ´npAU8ïcpá<G– z.È2>¯Ñ,´‚ªƒ¯;¬çW—¢ŸÅf\¢Ò0Ÿ4Â^ì—Ç„¦×jA)ÌŒ¸XK9ÚÅèR^fÃgðaM«Õ¤üÀßpíªþnªrÔ ±h‘:ŽF‘GÁED¦Íèh¶ø<³/küñ¢h¾âüÓ†Á+{<Žà á¼óðÎCª÷xtnNôüÇy‚×ô„ó>2¼únìµqO‘#XºZ—¦¯Wï)Òƒ´ê“¦oĸ5 ªÅ`žÛh*¼s °î\P§˜Ö!u{JÔ¬W¥‰;—îrq'+¦m»¤¤·¸Ëµ´vS\´„>ü5õOý°š¼ŸY~€½ÄØËóë¼nO1Øžv¶ÇÖ¨ísÑöb3&¹kÒØ=ð×öï¿}ýN9iˆÖRäGðq"õÓ¶tDk|#Nxâ¬ÿSÎ&>®/i31Ÿ£ÈgH`öub¦{”¸C9ÌN0j õ¹z+Ñ8“ê=¥úÚJm¿…iy”k›O­ÛðÇq_<$žø…]®ñc·4jçˆ;4ð“QÚrì7Ÿ?¸zcÂ-¬–½ ·ƒæ º‡„hÖ\â±*þ-e1»¬B\‡ã7±B>$²Bœr<úeos(S‡y“NÓœÉÏkf賚ÆûZñ\v›ÞDŸµŸK­¯$øÐÍÑ,l…³Õ]ô ›À\ÔèÛ˜9Ɖ*yØã__Ñ®”ùº¬ùºÓçË¥ 6^ÌJi¥d)O›F<Ž m p> †Ê[a%}µÛ4¢ï=Oý<)#M‚oÌè£&Ɖ¯V.ƒo÷Rß¾ߪ ˜úúöéœ.»ÕÙtR—Öø©gÃø39÷˹3SœëaxÉèßë“þªç«ññ»ë«§M'Ï›èAgº“ÛíxÍ=©«¿7µeRÝ}³eOŠ»óÑ_×àïeów6s÷õ­üýÆ9ÞW]Â9ƒÙøþ1Esˆ-cë—á/³Åf<úîZ6ýp,K|í¤èß‹mªÒ0i*»cgÚ†"üçåKW¨@Mˆ]U¼¯Ê+¶à'"Ä®g<ñjEîw„rè#þ­²ãÍ–«ÒPy¯|[«æ]èj8tU_Çiu× j`À·”[²iý§¹%>ÿPãûŠálz˜Ü_«NÝÛò5IæðIÃÁœx¾Ï?šk$ím‘ú_“+¸{?váîRV¥»N–Ÿ[~ˆrÌÕUYL*ÌDïø<&γÄéÔFxY^(%³ÑüåãòJšOOß­¦n ’`œT¥„r”‡5w>‘FÄ.Ú¼Ðú¯/+o|3^HÂ*³ÆXíš=(J X£­€«ŽO·áa ©àw-e;¦ú;£-OÂÊŒ“*;[®áµ¼P í7ϟܺÞ~†ê:O‘ê4¯á‹Õšù+,QëæóU¾úÎÆSelª”¾¢²³>¹SÔ^Åêþýª¶ÓdÁœ3R*Ú¡¿‚f•Æç9X0ÿ÷ŸG0ßå…å¨×XÈ9›¾¯ Ïb¶ˆVƒ;n®¼€m¨Ü ¢¡©ÉçHK Í.ñp„V$u…<¡]©u<O|¾¹~HáÚ5ï:ÚmN($žy?'´m±«.Ÿw¾€“Æ9ˆ‘:l@î„©HËÕüMéò¨¼@«ïÑBݘVÊ=«¶Ðêz±Ëû¼¶Ò©Ò1iÜ ŸW åªoûa­Æ÷ZŒ¦ ô‘~ùågo€Ú”_0âﻄªþîªòËMŸÎ“;©t/í.¬Ã4nŽÆU¢é½óUo©›Ï©ue©žÏ«ÕeÌàï)r§#T•:)³¥nöÒÃæíQžœbËC¸=ªåÕ@;ô«ú÷E¥ŸñɯCùÂÙt#©ï¡poW¥±Kj/?-¶õНõªRúø^¡wPØ~žä ·ØE!¢¾ =¸Ÿô’@»ZËG+=4¤ÔwÞ§\Îw q4Ôómi4ÑE4¼òù¢v‚³óûm‚¨¦{¶g0®j %Í´N Ùè5<é²Ï›ÚB¥;©Ô¿Óç?%jBJ|?´•Ê#´½7hI–´²öZ}ƒ¢†\fßÏ&·9‚K‰ß£>åÜÖï“¿CBíbW¨ÃÂÇØê­%¯ñ®*í¦T[ð;-¡Žó»^pľÆ3ñ;ÕqV»*¨[½k&Ö8ƒŸ-õPõsà7ØäE±H>lH­Äßêó#S¢tº€øù:p·|Â"DŠø¤cbä.¦á›Uª±•jœ6¤$°Ó8%Fð÷@ƒ›ÿ’jl¡†ÔLüÍ>¿ùW¦‘%6KT£j R˜HaŸ4$FžbÝo¦›¨Æ˜A]I^ n $ÄÈŸÞ ~—“‰& KR£©*µ“@·°QײÖ¬Me¼tý´è›„c¢ns¸GyJ`Ù[ÂBî‹· îy ¨dÁ¶’ <Ä#ð¨÷òÑ¥¢ŠÜî~"ŸB 3Çg‰†cûï~P'«¼ZÅs6šÿÄEÑ\ hn-;<8Ó…±P=ø™sŠM+jxþ5#šC©xMÁóà­Î 6ý®ýÚaã?̓/Ó‚+S¼ÙB0îG3â—æü¦â÷O-üΛ¿7Ð=xæ-Zç}EÞ ;üõ3gšÂ*¶Ì¨Uì@d3¾E´‘ýU;a[ûœXAîøüò"äû¨òé¤òVKy§ÉýÈ›&ÞƒÏi ©¸ÅR´aÿöÁUp\M*6XŠaâÃNBŒ¬0Ñ[Œ%7™ŠŒv,‹80ýFÚ­ý›®¶tOì1ï1øSµâ7•¾Ù5÷äóM·)‹káÕÌ7âELœé„ƒ5÷¨culÿ §CÇB•ꪩÊcá[aÑy©Þ)àÂ+Ý•—úèq6‡øÇÂ+Ü0zÈc¨+9õtËaÙ­v÷&\´èžì²³ê¸ÒÇûêQ{Œù^©ø;gè!{ ¿[îã²D~$Z}·+W}ÍÛÂç%Ü µún.\1#;T@ªgpðÎz3`!º[,@,s/áº&{IÝ‹°Lõñƒ†…WÖ“KlÑq7@—aÔãfíª´w ‰ÔQ¸’£Hö­4ÎàÁªpÍݼ³ì]Œ=ÚËÖouŸÙ6·kòV«.ç× M©Ü‹KA¿ñbüq:Z[~ت9å(“¨ÎçñûZÙxÝ¡%š÷¥ÞÜ}\¡FSèÊrhëz/ºè˜Ê‰C­.ä𢬼{ ôJ€+OZ›¢`¤m Ð`÷ŸÀ†y@‚9Ú ìù1\Ó-\ìÄ)âOÀ^[}[} ñSL·¯ßìMˆŸ;•Å ~ð"ö¶hãg \ê ?¨ ìÝ‹ïôæ ù¼Vï%÷©þÃ/øB‚|ìgÔÏHÊ”×¹e¤jLåv¤q“çQ5ÍÚ Rvr‰˜WñëÍC^™az~öÌŸPSu±å°ÁÓè,Úí'WhY¾…uædÖZ“Á‹˜ËšÌšØ+ù0,T©.L†äÑ·þ1ßâõfíVm¼ˆÍ7k?{kc¡Ju±6U.õ…@x§FʼnV‡Tî'x¨¾Kã¶™Ðg"•›e^TÏÌÊIö{>^5•ŠŸ¸B7B=@ ŠV©Þó¢.‡‹0wHм۬F_\ƒhÜÎܼùQ'ñ<`,DWÄÖÆ ƒaaÃ'‡ŽUŽzlÓ*¸‹‡6«Âÿ@Œ\† Y_ÙYÐòÕ'äÍ€î]Õ}|…+XúDv…3˜¯©Èzb9Dùцá‹9¼‰þÚØ¶O #>3½ì¶aÃ0ûäãÞÔó?0eðgÐ9 ;Ñøº+x£9®ÐL6ä‡?·‡Ì)‹)dB1ÝÐ4S7X¯,¦wXƒóŒ…xÒXˆocÑٰвË1ØÓ%oÃ*Ge1½,2âEì,U˜k+p ŸN‹S®`.ÐÓyNÇ^ìVÛ›ÀA‹|ÿb“OeÜp6»ö= Øìûtzföµf`_1[Ï­Wä_›Í¿ö«á_ÛïË¿ç¦Ûü›3ýšùW=ÝæßùÜ?>þ¡+b§/Zük‚³Þfñ¯m*þMO\=ÿ¶žKáÚè'”ie?þµeàßBpàà?fà_[*ÿ>>oøG!ªOòêk,þ™tÓ¦¥Ó›H·-Ó&Ñ­=#ݦƒ×÷¶¥ÐÞ{HçÛl¾½7íÚùvž·ùÖÄgæÛî+òm÷ùÖa±l6½Ÿ65Ó:Îm¦ñ6Ó^͹f¦É±™öDΙ¶Ã&Ó5ñlE Ï[<›35ÏØ÷éMÅ58Uâ¾Ù⛋ñ ]k°ø–ÿ o‡Å7ÓÀáI|{i$oߙ̷À7i2ßž¿8™oß¾u˜|›‘zÿSTR²í11~§9(‹lÛ>°ÇË¥Ó€—ìíH¡{æ‘΃Wl¼™}í<øE–̓mY™y°/f!ö]‘nh½þ;oüg%ñÏ];þ¹$þ¹?Vüï£ø?oáÿ±~ÀS§…ÿÎ)ñÿÙÕã?mo÷üÀäýÞ·/þ;3áÿùLøïLÃÿ =Þ‰ø—ìíÌ€z.–àG"6~îv:ÊFµâC_û\6ìŸue†ý~öà˜ÀðÊòq¹1¿? óåãŸ0E³º-¼çµšÏÐæ*@œ B«[³I÷Ôé°Án^e,Ä6cZþ»ÿØ£Ûò«]`„LÚ}“-åiCÔ Ý©½åŒ­Â™*¦A sÝÛM :º®Niϧ]WgÏ8m{ÞåÌlÏžŒöì™Òž¦²ç¯²g=ÿ|`Ÿ~ æ8`ÙóÀ{¶Í³¥)öî¸R,~öëÅâÿË=z,]9”KIÆÒÛi,Íû!–®ˆ“=hOK‰ßüS‹øøméÅûYñu“ñ4'žx)§onȹ²Ãñ™d6ºÔÜŒãSemóPjž„Ä“Z^ìªõ8[ñûŠÊ›gXó.âMæ]Äã¿ÃC"-£ÇÅóŠîæ×ZªÔÛ{¨êZ[µ.Uu£¥J]û}ªºÑV]ŸªÊ?ÇürªÚ`«n2¯Ž§¤nÁ¸W“zs¶ïÓ ™ò¯2äZUq4›ÈÖŸò4]FÅÌÁrx\2ˆT :æc<‡åbU’*.°"‘Tyu\³¼'©*Ò½¶¨X/¢¢™¨D/¶E¥z õ3Ñ\½Ôݡϵ„Î×ï°»Ç\˜Rµ@Ÿok/ÒØ v…Þl‹*õT„µxRU­GlÑr½Õ®å"UuúI[´V?EE¿b¢ý´-ªÕÏÙ"èk½Þi‹6êû©h€p“Þhg&U º#×ÒÞ¢s¹¨}gÏ™ýSLég×¹caR?fá7éï‹—'ûÛñÿàooŠ¿SœÊµ«&9öû/O;+ÿ”ÿ{êh¾bô«cûþÿÝ—øTtŒ>HÚáÃ/¯ÝlÖž¤9âsè~Œ’„³g–N¢fŠ]ª¥¼“-U¤/J+ # *ÒÌ!*ÓŠ\Hˆj»èvÕGl…¢tbÉÄ¡à׬ÕðçÝSÃQ0+Açs­jXêbløó­I¾yÉ& Ý­AÒÀ¤?ºtõ¼Qg[¬9ÌM²F]H)1šŠìqg$xMZ°®OU'9÷[¤ë6Xq"}œÆèlœçÞNŽ3<:iœÊ#ZÎ6å ¹tYôÓõ •‹_Àu©°Úñ±³ì}Ÿ4žû‘Æ{¨Òø£NM¯ýçkoüO'1Æ%hŒ{B6 1ú[‡ã?’qÓéÂ`MS§°F2SxMì¡w¬Ô¸ôÄ5•æ¾™‰Rkb÷B ]:ƒÿßêÃÿý'ðÿsз¶y$¹·O÷ѺßþÁ|´sKÒGçFR|d姯eÏY:=?Á~Q|íA ŒìZbçÚ …Ÿ²Cyd§úÔ·â³ñóæž|OèýTØ~æTŒ»ÕÏz¿pƒ>ß’åH±è&•ÞÕßMä¡•fš—d=b—àQñª›x=j “ø{Ç—_– Ä®#ª´_«^ç&þý ÷ Ï…„òË!‘ʘ¦ßÃŒ7¨‡÷ N$Ã*O$/ $TØõ"©ó[އòá¨B“Þƒ˜Sf€@³³`ÍâGkbû~v‰"Ðô^Ø?¾B¿OÎ8å-£bóß`f LvÌ%¦È#Ùb ýŽ2y ³Pʉ4´\Id‹;0 Æ(mYøfç¥Ìž' ²ïÞM¢¶ ¿îS>•N2ÁI*X+j÷Ðü ù`T:Å$§¨¤FÔ¦§äoȇ£Òi&?Må•¢vÜ‘"?•Î1ù9*_ÀnHÙòcfº8ñ÷Sù\yKƈɷ¨£`ÙUkðÀ›¹'<à àÝß-QŽ `çXã/yΪϺ¨=ÜOßaHýÐ4Ôø3¹ÄæMôëÉŽQé"C:#ÁaDÂ4ÏbÈ-6/¥G©Fµ!†¹àD"w3 Nl¦_Ïÿó|þµdgîœ{î¹çœ{ï¹÷ž{nº¡÷'èoN8§•9¦Úïã–bŽá×¢Ga¨Ž#}x\)5…¢£A•+•¦ÐBòvSLä©M0¦`BIaLQè à &…‰¨ìœâ|¾˜ô-3輸6¥ô ’ÀLß²vªÎŸj8œrÞÇ™,˜\7þ™‰ãŸ6Csg˜Þ½ ‚‚~€lø¼¥ ›,ÙüÁD;×@ëðî!ðΨÆm™bJ¼•0—Y˜[ 4÷- ûܘXFXWXX_"ÐýѰåiCtâ$ÂZcaÝF Ð„^#¬ CŒO˜Ó¼îÁص”r6u [¸L‡Sè¶z ö×AÏ• V9aú+¹Ô*WÛg®†£ÔcL„^9ßãã•00¸gãI„Y—¡HÝ@‡R9 TöÉ' Ác@hüt‰"½¥z{˜¦´°ïÇ¿Îf6N XåÊ»Úûê8ÞR*[͆ \—\yUÐä¯$„o)Ò³QJ]”o»]Û#äÜkí€æH9¡É£PÉÇܯg>TI£ÜÐä[Ìï˜?zʺòê&ûªé}ë›ÏÇþ[:^½e¹*m«Ò&ÈXÆq®:ch÷¶"mcí¾½?{@ë¶3¬›ÊIoÍÃâ~1yãŸàhZ€ú„ýðÙQ5S©|+âz´¼*Ð/‘¦ô‹.A"Ð\:õÂJÞ†=Ðüóh/•ð¥+¯ ôé3R’èFÐZA@¨ÑÈØ-d@Ð |IM´•€j$Ó™W:´û7q öRüê ”6Mj‰÷iÖǺShaBÛoBÌ4  Arm(:K›¶¬³¤÷{RC(q®Q"tª},ª›[fbo!¼eÞ½ÙÕq£oèIÎÎ=y$ÚR¶w肺6ÎÚeA{¯¹»»&ï§9O3‚ 3”Ò#DWÐY®úŽOÎØ\˜WÙµ±,ž"\vý=çôjÌÙ?‡hNf?úõ†>ÆÑ‹_´ñŒ^XœªOSòðLùB§žÌø ÀNu(Eî¶OÊZOÄ{œ˜(¿LBìCÇ|Óc(þ mçý±}ùÈÌõÙËŒ®wŽ•WÖÐÙNq8>³Åd|2›—fMi$¨9(¨IÑöWÿ9Tÿ¢òš4‘¼R•RM½Õ©øz‚3¾¥!ý<¶~kÊ/äGPú05Oñi±bŒÞ¸Xáµ –^îZxÑ›J<¼ …uK•˜¤ÝòS6µ ‹.Iµ–ÎÓªÿÇü)ø÷-Œ²6qÚÂÈÆ;Ÿg$¡ð:Š<ølIïé¨ôSQY4iQéý;²+Ó~Xv•gjoÿ®üÎý>ù]]ûÿ8ùýâtùmû‰)¿ ¿ÈúãÚr˜kK§‹qhœ¿G‚O~—Û?ùOÛß–OþÕþ~[óÿ8ù¡ýõ]oÊo¨!¿_;]tÃâD—ŒöãÑþøµ?ÜSDŠØ“‘Æþä1š ÏßlG™}ÎÝü4µW¼è¤!k…9 ÑZ€êP+œ`þêvÕ!ßê‚Ë´ýŽAµè‹* ÊgTÀyPÐÚ_ë ÇØî¸=zỾrÐiÎ8ƒ¤UVöà)ŕǑˆºXbÇ«‹Jé€>²¹˜‰¯©æ»ônkÿ—ñöãy­ÝÃìð…|«Û&ŽU©W¹Õ"·RàÆAÏ ëJœ¡¿€Ë&&b$§ò®>R­pÉ¿@W@êÿËy|‘z))A]À3¸ûÄDµÐ©8å_8A†ðœWÆK J 3<øPâÒSÈ>‚$ç¾+ÎE€B$Þ¡”91ú^¡Ëzq*…¸Û1žò®à¥¥Œ×G°óð­Ì¥'*iˆ'X”©ÛsZ£ëÅL*uÙLhë?„æ*¹*´b[tÅ­öC\q3õÅÈ¿/yù‡¸w#Yª~釠!{ Q¥áEÜÊn’°T,¾:«+·g­3ç°>¬ÖV¦u}@®pAUò"¢«æ9.jmZo—Í:1$X4!«K¹Â£L^‘‰«€ÇMýªP½ÈšÁ+º:òYü€ünöC}Î>•8 ŽSÞT¹<ô×ö<è@¹K”ôcÌßq¡ds¾êÈã$¼Á½Uºå §r¥[ƒ_ê’•+]º@ðWòÀÜqˆÛ¬oC7ž¯ÃZ{]ªM à‚fG Ý8ÿÔȰž2Í“~>^ÝŒ·v…ó=«DwuÍÙ´ÿý?0”L¢ÏÕêZ]ÏGÖ;µ7RÉÅ*<=ô7 f)æ)À<¿3“²0é|LÚ’dœ/ ڽסBGa€Úq.$Ìq H/ÊŽ>+^;ûám›%¡qqÇm¶™|J4ÆTC•ŽÜ[où H¸žG ‹!€”hñP‹a»XoñÎEq=#ávitÊ+«ÖÞmaÖk«(„î´›„ ˜ü¾ã‰RŠê0ÇGïñ˜ó´µy‡›ÕχþÛ"$,ÏÿG,¯£ ùãз;cDe—Š¢Œ…ŒgŒ¤1*y»841½Õ?©Òéz±‰Í)¦Ç´‹êûôï£jÜ0“y‡±Aø)#)–”?Hÿ-y”|oxS_nØg¦.ø-<Ÿi!þ{U¬µ™jh±(‘ª–Žzñg›¡¤ Bà>öîÿ#Þ¿úEÇæ,²êQ¢#ñdëiªõ4=bÆv8SßÏÚ;{rOвÏe­‡h³k³ìÛ¥á1t5né£å½Ç´SÆéWc¾šn 8ÝTè&ÏÒîpØ#Ðÿ³äwãx<_bWJ{Ô5Nõ >x‹K-íλrFýMªìMÀ«fËj¹šm¸Kýð«ñü–Þ¯î¢x0açÈæDçïf^ïwu•kΟ[~Å ‡ëÿAίä‘ަf¨œ­ï#m‹‘¶ö+¶9äÜÞmg,m$ñ mǨ*šiϼZª-­åj3µn´ ¢Ò×ðF=þ¤®‡æR—Ãð3øÁT^ÍÜa3¨|ÓwÔ¼ˆu,Z\ùmNšm§®O™Í‰#õU¨0¡Ÿ:;A¼\/7â‚Z[d½K»ïW}ßêĘ1Ñ÷¿%šFØ(}~4ùì$#YšA,ûÕ,ƒeR–Ü᎔öâ$`¯Ù‰Äö݈s¦#Ñyð2ÃWYrwxÑCÄô¾\¦–z{œvÝ«nx ¯ß÷ò9¢ þf‰‰ð÷èªJ=~…Ô.§5t'Û/4¢^€¹¬Ì F÷ Ç$Ê=™rÏ‘Rš½/7%†ÐOEöm³I£š+_nÚï|yöèuSáä lÆ.(šœÆ’× _ ¡•à?ytApe«ZºM)}¢@)ÝÆ€Q†IðÛ¥;[ µô‰&çh=Í8ÿìYJvkû*% eg [×ý'·Xu߯(ÌnÇu{(«}nv+4%Ð@ž•;`ªU·Rs—ðÒü Ô Žò*èÖÅLÞÂΡ@[³ˆ.ì´Ë­]¹mÒ(}¨ùÝžë}BJ*.$ýÂI!ƃˆ j·ì{ÖVÿˆì{Ê&ž›ÓªçàøeÒ¯Ög ¾¾OÂöroJû¡Øx3è~D"wÄIŸŠðÕÚê:³Í ½Ž¢ÛL-j3Þóœ³/©"îêiè#î,\oqçA²áñÛ9b2{È’^‚W©±¾t&BI$¡$6®&ú+ìÜß켈¾& ;{t'>äî’¦‹¸<¯«þlewˆ*3¨ÐªŒÕÛVéwí””‰‡»¸?ÆhÈgEXGˆ! bΙºašâ8eÄ8s ›Ïe;X{ ‰@` —уþЩÞã+õ¥Ç.¥@y뤷À;OïôŠo§$¶@C6(<9¥“Qd+Œ_”“áîÁ0œÕ˜o“Q(2ïqŒb¥ÿ”Ú[÷…ÂV-=S5°L Â1’*¯“g”Ýcc2Ž )|Zâ0€pÞˆäÆ„Zº—>Œñ%È9¶ÔezÄtËS^T%ÈÞdz¢°9‹1½™¾ÿÌ´Ëϱh%†ú7ø}:¾àw\“ß|h¿Ýq_¿¿«ÿ ¿ œÈoØ­{Z ­V3wõör ·ÿrä¾ë-·e0{§\õi`à4(>­0÷ݟ˾ã%Nc0‚àñ!ÒðxmÑ“•°QhÎaU@çŠA_â;£׋¾;P¼ê;V­ÑõAÞnÖèÕÛ#< 9ÛÉßâ€êí^×»çå!§ðü{ð >®»®ÙãÙäÀ?D_ƒâ¹0(^¤{[ª1VVd­K»¦#úùÑ÷?Â| ú8ëý´k‡FßÇÚÌq0EÞí^×?€»šÇŸqÝi‰U—:Õ¸šs˜ù>4yûõûÇ“DOðè †y1.fåÜx<çpî×¾)ªo í ÆIÛíû©Ô½´ŒÞá@L8 E¹_o<Œ«˜Æñª¨ÍåÃu[u‰ Í©%<]Ð¥6âÍÕ,ÞQ½3µ.ů¢Ƀ>ûÁ§Þ \†éš ÞXe®YxýøÓ¼8µ5”@ …1”>û²ƒ¾'(^#­;/›ž®xfÂO†²l¦~3á—§@fﱈ•+e!I‚•O),Ö—ïYÌOÑ• †tTCØ0.{ø)÷à3‹ Y駘”÷ XÞ"·S¢bdÊ"R\v3þ$aY4#{PËܼJÈO.‘s»ê}Jñ>Ôá}j¨1êŠAí¡6˜A.YJgÎ^éqÅû êó«+e‘êÞ2"ÕA¯bõŸ,òAë‚ÏØ…œS½M¬îf»á??q²}püDŒTø–üš³âÑÝB_Yx>ïÝ­îO1þvÆ÷ûÞ6dœHÆó  Á©s–7ÜbaðJn"~øOØÅòõnÿ N<+²™ñ"ý\Ó)V³‡ñæݳâÍ(S+ÓËa:ÊZJAï\š†aYHP)Yü/µ2£•9€<\gÎí.F^my‹å„Fº®cí¡vìâ:"hñ> µ÷ ƒ² ä錡ö”ºcÖ!ìÝjåÝy•{…-W3X‡Ðøk‚íŒÂÞbÀ²~o [†3X§x3Ú3áDn‹Z¹ƒnyí[‚KPœ=nÇUv [~Éàų(Ìž wƒ×HÁû„-¥´‘‚¼ >6#~nÍ›ö®[]ï" ÑmN5†ZúoLœÈ!´Ä4%Ï5MÉñAyª§ú2BeÚ<6Õ×§0}‹¨¸Ð*o§åÖú‘µZÊ—\oL„ž·Ó&ÜŽŽ§dJß3y,ô¥ˆÓêSÑ#q¤þ#²¿ûRÅ©rŸKœ­/ÅwDxi•æÍ&ËQö)ä¯ÒVœÇ\øùÏç™ks¡_e`úø)–ÅŠQ‰¨f3Ìše†°Q3£žÚjæo¥»Zbìc¹wóëyÝî¸4,3MÌÁ¹O…¶òÓö<Ëü2 ¾È³l’ÑUöåV[3LÒns jèîbý·Ñú;¼³N‚çó.q,üå¤4µ2³¼fð•tÄ*ô³$‚i.aú›=4 Z«Ø¹0ÒwFÊÅñŸúg!æréŠ3-àeÃ2(V.%fárÝø–Ê¢G0>1ôöoQoÿ„Ñ+—¦ Z›c4Bü&*÷Ð"\¥KuÙ§gR¿(‘ç‚HD{P3C ƒ“7ÚÁ柿ØÎ†hüb?ñ§‡0.uíæx€QŒMä‹ "ÛcÇ—Øø©"78~*†}Iz­ù¯¯Æ ©œ‚Yž‰F~T‘$bÓÕ¥Nî+,§Ì¥Îç^fÆ'fEßK²êÍ, V>^¾TûçÉX2‹Œ `œiŒ9Bà+<ñC·°1樞˜†‘¥5:²Ä~ÍìÓa<ñ[ãÉ£1Á‡;Í(¬0Š,2F¡ñ¶˜àÃÇÌàÃ0~¤0ˆ¡qULðážøàÃ0~tã‡Ð8“àVEŒ Å,˜/©Ægm¸PšÃ?h6wFÍV@ð ;jyY¡ŠOpub¨âø òɘXÅÑF$šGöÝíXïf$k-úhÐ/êÊ¢±†3ÔrÅ6Ò Ì‚[ ‰Ñkµ¦ÒjÜ~Tz"ÎξÇ6¥J?Å~!¶½Ä´§ÐõÜ™ÌA°à¦Eí»X{ð=ªW‹M¼Ì—Ñ6Æœ(±ô ©zhGiÕ}±Úw'gjßf²m2Ã~CûÖ3+‰»ÙE ¸]¯0õ–s“+ªÐÎ8”—Y(gpñ M÷º{Ÿ…Þ“ Ú¸UöÝp.Êúmçl§Å+fF ¨ú¨ˆ©ê‡M#ê;BƒÖwZZÿ¿¦õaˆ¡­Ð@ÀǾ31´…ÅF[¯ˆ‹Y|ÆPÄÐ$"¦I¹x• >¨e<…–•÷¾àcžHüÞí\\ÇŒ`?/u+’f]dÓÅ~ްŸNöóûy‰™YÆ!Êtvš ÃÛʺPÜ1žsîårG¦â{Ξf(¥{!]îHW|{ÔÒVc+¾ÂL­Ô¥,ãx<µè™ ONµtL¹`²­x’" µRž-û³©¹·uãN˜c3'Ü ÷ë2P¶±æ^iYH/Ûq[ðëiÒ8Ù·Táz;Ìè~ «J…¤fï׸Ý'ln eË&Â4üˆMj-ç¡ħ=/ ;½_—•íW*µÐëØfd_§Mœ@Z$ç„eôl%@±lèqRÀc„ï+»›ñ¬;èQ¢øºÙùF x–´˜°f!1BàÏ„Þ=À{2;Ÿ”^ÒÓÍýhßK“¾nÅ× âN“L(›vV¿Î'°§d¡1=MSào¶Xl’è¦zŒÄêC/K©ðžˆïèníîàhCa(»šôèš/=9‰®$:I”†cXh/ÞÍûJÔy§~˜4ª¯ßf7èžc~Fü²™é˜êá°qVVrbÝL×”IÅŠ˜äÔ=æqeÈÅg R,KrUè@Í,pî<•fÙfÞ&liŒÕ_C›Å©qgŒ61v<ñ-ù=5Ï‹êÛni®ÚXZöçåæÂïJH÷_>Yœ–Ó >úÿdVëNdÞ‹krñÖL­©Ä÷Uø>™ÎGw"½ˆ hq`°¥Çãe.³¯{ê4‹Jž¶rö™Û Ý¢ lõv3û  ·mc¿ÿ®D0î–;••z²ú 'n0øÔÂtÜ*ÈËîP|ÝBjíT+^¾Üàò tîÞ•®Tö[Wö++»ƒsç«úŽã¶EÐ318ïR}=Sœ¿žlç¼ÝÇò®º¤°7t¸ Ñ•ê–ï¥;éþÅæÚ:Î5·SŸø~4t·?7Ïxªi œ”½‘è¶þ/¯°zŸH¬7‚]ËúóÉwÝ#ŸŠHöœ0ë"Ø;èÅr?¦z ´v¡ß™%Ž…¿™â9ð7YÌ„¿ÙbúõR}Ð1°Åvšîâw!pb€/•\ûX¼0tÚÂ3»Wòë1¿¾©HF¼ ŒÊ–@Xœ Êž·ž_?;÷ëú™Á…l_KœJOvg¾2ïH¢ k Ù©–OTÓ•cš+ñJ…&7¨þPËo@«»$zÀÀÐ[ßàtW[ì*çÎàrŽ*yü·› `ÿhù¸ÔÒg>„ç+s"gôþP%wS¢^ ï™â¹ð7Yœ\Ùªøž˜uã`Ë‹CŽ@Où¸I§ä©":·WYtâÕÛç^ÐÊNàÜdÇSºx[Ò³pݵ@Wî^Z”Zéq°ãÑÝ¿n¦å?ô¸°39ê²!X.#õTÐ=Ã_#9â}œ<6Þ@$¬÷Yw¤tú²Ô?H.àûx¤ñÌþá(v>;.—uWAxÓGÀË|)¹J»øQrÒP7áø•Õçâz snqš¼{IÚgqV;^/ÅìR $¬Fç%h²ÅYø€ŒÃ+‰Þ,6Ö„ù‘á-Rt¹3*þU£> ç{òÅsä[Jlõn!0An™k69ˆœ?7"—•DBÇÉhPó=“÷Ä9øGJ÷/æìUÚ·i 2«¹oÊ÷)âôsS K$Áÿ?i(ûý%iþÐS G8?-S¼PÎÏâä²É6¼é°JûÇnØ»— ÒÜ**ä!Ûª´(«dfõ€Zà}²€,¹«19Ÿ‡þšAöÖUÚUœUc¼[v;®}=H|åq5ßÝ<×iræEJ›9²£9Fâ£Î­}“ ™/ºhs þJ&ïq¹u`Н§Œ\ÙgîoViÚ,<ä_]‚÷ø-ŸèutÿÁabŸAëõ¬ä'£9pU¸-[7^-P Ü@qó\{dVBÚ‚¡¼x‰ñµþãÀa)›aø™‰Aºšñ Gîyçº$GŠ:,>Áø™ç=îKÄm¶B'!›ò¹ý-ß’FUdMºvù…¨Nþ? úõa·|lÐ~7ô\/ÐYƒyi¼8Ê}ZïRmñ¼m½Œö šÌËR«'Ë­ùLúp7¯þf${‹+T E9 ÌËRAÍsݯx»1h·¯÷ºne·ò¶ ¶ó“¥=Üë*LCŸ¬àÞ®µUUTk£k³UkÕð׿$Í­Öƒœ\ÊLýìZ(}¶Z_^V­}ó„¹È„1£žD‡ª×ÌÓÚãc±c^Ôù¹ƒÞ½Às_‘%5T@ÿðÛ²o/4­…¨‘Ôdå®$¹æ1ä?j6gÇÝœs"áb'. ®|­"²nfdÝ ­m®ÍVs LX+´¯á‡/_ãÃMïkeÚ7sMçe㊷áU5iØ#];ÆÌG©êÝ{Æ6=ÜlÓ{Í6íÝ Ž'b—!¹«´ÿ)1ýɆêW¶D¤½Z™Ïh&éáÅ*µ¿„Àö°W½"½ _{ÁúñÃbrU…öÏ pƒ5†kxáeTï^Š=›Æ¥üÂ2lÓâÜæûñAîKä>—4äEÚšÌì/\†ä!RÒ‹¸oª{Oàé)jƒ $ß”a/”OލûÒû„bfI>1”IÞNÔFoCäS(´.YÞŽ8u3äÈë&²7{}zDv4½Ö¦Úô³Ñ^Œ$×eÉ\ýð íW€>1g9¬·ËÒ¨2l¤aß*.ލŒwãéÚÔ™–ºOäbMhpîè·l1_õ¾8 Ü~gŒ‰R^;]¿*^d&T1hù¹VÞ}¶Ax·]j}ÃYyÅ£Ï93jØ?ÑÏÍoRM…é{£»ÌU„e*‰ÊÿútæõElbbsi¤‰Ïo.=q6ýÁ&ÓæÍ9V6¾Iù…hðž°*iÔ醙¸úÕ“ÚCŒöÃt½¬Ö!†ÊèåË´â_£Æn«ª¬¬ìýBékë› ¼Ýœ±N‘ú”SS¤>”XØçÛ°”°ÓAk.ˆJ% âzÊb°õÝ£ÿnÈê?9_LðŸŒivS*êk(ÛkÞŸ±@IÚõ_þ@ 0¢ƒ”4{×-ókó%¨Íg›Ú<&^›G“6ObþƒôùñÐçÛâõ9– VâQŒh¶ Ùs€-Q›®WèñqúrÕÅ,ƒ3L¬Òsb¿ 1J}ÿ ¥®¥ž7X©zILî7kã‡3b¾>Uì‚3ú·XðÆÁÈîŽ~•j-åšÂRyHQo5F½½‘&® Ù{ þ–/­Öl8wŠª7tÇI…ðsºz/Ž.²·ö$:ÆyÐ… LJ™LÊØÞ¸ZûÙ¯ð¸Çé]ñð BçA¸è3oäóHpÐåùÜã%~Û8ìñ[(ŠtES­Ý–¤^c‰àÙ=Vq§î…WJTŸ!íj·g?ã$§»šCÓMz&:œõ:h ”õX‹)碨}ÐI· >}Á³ãºÏ¿M†ªz6;g3EÖâ´TØ™àY0TÿÎ ­ #`vJãã`ÒægÌÙÚšKÌ)ÆH¹.Ý&%å´Â|­"².]ˇҥѬŽ`s{y¹õk¹o¨°£VG²x” ¹¦Þ41Ô ”0{RïE:³w)û•Mø”·i64!HÇ陥‡(LeqP‚ Ž´ ·cÔ†*-èbÖ:Œ°Ø¹¿¥~¦Ÿó%ÐN˜ú?¯ÒnU¼~5ÙQøÌ@ |A|)Ÿ?þŠXøaqð2~‚¡ÉY…KÕjœßG°uÉ“sØXhV¥=–ŠÞ<Ä\T›P¥Í²åLŒ¥\y¼Â(¤¥…$)¹ûËC ì† \ÔK]xúmæ:ð7ß?3S<韙,~ãŸy¾ÄåË'xé|ÿÌe0Îñ¡q°„-F ¾ãO9TFÏ0ŽÑY™’Œ$帖³´B›1Ÿzâ÷n‘¯Çܺ•xZfáŠÕûh5nå€Ú‚~¯8qy^ª§o„ê§–½ÜnÉÞµÁžs ÷M_¦²’¼ §öÕ¥©¾æ¤¦ÄyŠo xÁüˆ·/p þS* ­yetÄMôT&ŸöÄÌâù}õ½ÑU*& '†KoÁÖ¦6aÉ~S)(ÃÅ/à:2øê!xØÈhÿ¼ú[ê㊠›*A—VQ²Ðî¿ÖV†|kºMtWEÖ¦kýéÀJO²Jûý «3±úÌhâ6ãdú“ÖÓúÖèkÏܧZ}WvЭç±,ÇræBtz_qv•vNÄì+b_1ŒíeœÂó‰´ãÁÉ; ±ÏSÂxZŸŒé ê\*ý2z¬.¡%öÆ}J•.¹oˆ°y7«êñèy‰ð¤SÇmNcD¢ê/¤Zi˜zÓ8+å S¿>ÿ5=þk~M±¾ Ö×DzreèKLzR΀I°`é@ÕÙ1@Ð0 ˆ[Ýæ6HP N¹ g¸ÊÞèÝ SÐTW¦3‹‡§™~äCcÏ8ê…Ö›½fêï]¼6|Ãj1M¾ÌæK}‘Úî”Ï‹X˜iŠh™ÚZÓm]ºì×¹oÜúå †é€ò×-6—†½²Ïc«?/¦üL}2–KÒ4=Í„O‹Iž¢ ™µ̱íÒ` ”GžBÔž§}|6,Ö˜c ‹QA[¶ò,ÛÆäð&†?YÝ„yJôDöݹA€>—Ó'òªª(«M(×þDƒ®W Öt¿ZûtJôJ «í•ây]cš)þ̆eïR绸¶¼»Èâr©ô ÓmôO&+,ûm`éH‹¥Kµ ÅÑ ÀTÊ6ç|ó]抇e=ÑŠÇ—Ù§ó†&D®°ƒÇ„‹8уÇÛÐŒ¬Öv݅Û÷¶ãøl«;W•qèVd¼@Ø9=B2ýµ‡Ð/Óˆ¯3ø #T ÅU ¤ÙÆ2Ì®…ú[ÁšÀ­ŠÖ‘³hî=Â_:ÌNL’e<‘äRUüQïbeÛÛºøI¶Ï*¦ßQ±hq +ù¸~½*[ûƒ `*k?=it]âÈÐO7ð#E\žÉT6è‘8÷½ /ÕA¥¦2L•Óí&7u‡°³¯¸x£ÖG y›9Õþql"LÒtVŸà-e;ÊBØén;Ê7e¬(á’_QîBH¹Õn”j Ê!ã‹^Qe¨ó?óÌu.ÙÇ'àrŸ(¹: }*õ ì™ŽŽ·Sv)…%26Z¨y uh òÿ$µg,G>• ¦Å|qE¿¥6!€¶*TŠ–¦ù¡R6£œ:KÙê,e³G Ýeé/€Óò?DÊb™Ò­LB|&œá¶0Á‚I´`hè˜Å™DEØ 7ÊÂÐx.Ú¾þ{vF® †VŒÔŽçóOØLˆ¸ßX‚\ xV¢Õ ‡ðòå.?ô«þÍbê¸ý†FS‡rÉ¿™YUQ3ŠÜøÂ(ÄvQ±ÊÐ-)—Zßdã×½]Vý-Ù%o™”qèƒ9òV ⮽°M|d§k=U,ºì{½gý7÷[ÂA]¶i·ƒ2¡—€n·eæ/”NÄ)•¼ü"I­¾*lçÅ¡áB¨,_®‰wâ õ6O3öÐv68¹ºµ€7ÎïÊmÇ›Ýùþ“õâÇþ“uR*0ÞëÀ>>éªKðŸÌRi.Èè#W[f3Ò\7'ÌV”WØ^k»“·ùs3Å$n²4ì7S ý³2ÅãþYÉâ~èˆV6ÛgO¹þ4ÉÑ\ÈÍþ‰è‚©??{1$Ý(å±ÅÜÆü 2&@Fi<;ûʼnCa)¹›®»‘~†_Oh¶7qPŒMúG;wº} ö*íßÎV¸pÌw ›=læšùˆ‹÷çNrr§Iö‚…ÃÂíè.‰ø›‡°ðKÂf\´A¸î:ðšû9‡…ÆÀ¯ Ç ›ÿ„pÒç© ¿ÿ5æ{’°Y1¾ßk~Æ|O^ç¦ðO ëxÃ%påBé¨þ³Xúü¹óÅþÜŸˆÕþÜÅb¹?÷F±4p¸n>£×@s¶ÿ¤Wï?9Wí?yèñŸ¼Vü'ÏSü'ÕI`~ɤøCÐ)ø…ÜniWì´ÀCâ^ó0È‹¦|™/4¢ß„ÿäb¥Ìò'Bãpz¸Qh¤s¤>^~™ Æ,c”s—”ŠÇùB#Nýö—fsë,ÞfÚ¥¿`Þf´9’.âÜâEòvæ%6T-"/±³Œñq»é+VdùŠŸ~Vhog˜SÒŸ¢ãúÚY.ŸÒ’x¯¯Qþ…œ½B»¨;ñÿØòäÔé„p¯”9Ä!è v×YXVKDÐ6®g~¤%i™2-å'a-ûÌûÔºñp:³ì÷•,×Ê70/1xƒáçTè ox6NP… Nq!©~ÐÛX¶TãÍÚ^áàk„6õ+øÎâþxÕ[ÒÃùiùBÅ ÍúÖYöÊ|ùTuÁt…ŽíöùÆ ;G(t¬­HÖ"Ó!m0ú‹"àÏËu#Qb‘Ç£8''Ú~<*KYƒËÆD:š¶4*ÄG†A¥gBXøm«p†ìmÄ?ôy‘›nˆÜTTGÖL×ng±Q¡ìœXÕOÚþ4\}±Ó“/&mÿ+¾§Ñû;¼?‹ï Û[á ˆÜ”¹iv…67“[œ ˜†l!Çšç;M|¿bùï6óoŒÜtK…æŒæ/´ç‹—C0ƈkæ¿›åÿ•™_ŒÜ´¦BÛ“ÍÏñâœ3çÏ<=ÿÓ¸íyU¨B«‹Áâ°S5’–´(‚Axz !h"sbØýRb¸0Ñ..Bù~!ⶉòfÛ‰ ;{LØXËÑúÅ¡jC+rŠ}uS2ä†äÉ\4'T C¸v»6Ø*µ²Qnä°g¼¯`&•Ï ´Õè§!¨w¶Úš?7_Á3GaÎ)^­Ö#1Õ„^{û«¬šû±š•|äæe‘›¡\á4Qµ¢ùMÿŒÑ˜ânÿ€åÿÄÌ_¹yn…–“?Á.N#øQöAlø¿áÚhäo=ÄÖO1¹œâåK¾¥æ\)yûW˜kŒ_”rÐñ-ÃãxÔÀ3@xúÏocð€…[ÊJÇÚòZZ?ЇwáQ«6£œðîy”°>`R÷8a}”°–ÄRÇ‹9Œ'œ˜ÊêD÷Eë…U#Ãy@…646§Ûà†çLÜpQ.žruÚcreŠ’P=tc”C:=+Y§sSÖßD³rvq^\N×ö±j/(ÇI¬æç™ü|ŠjþÕ|q %‰œI?òk:Ë5ÓÌEq¢þ–ID¤[¹@3…àÎì½íbºÚ€ëŽlÜ ÝÌEýÿ°ËºÒFu¾KáCx“kgv1Y-\Õ†E„jƉ#X¿TƒJ­=ÎÅô Nq´êLÙ÷&.Ê'f]¹©Œ}úYLVP˜Ñ±‚g ¹XŽŽŽͨ]ϵZ'}þœŽqd…Öð„m7%ÞÅv¾‰íOôåV†u®§ÝKI.¢>³v¼¶‰ÞŒ¡ñ H)ÅQtô[µŸ UÑ×É„rd /B ÊŸ>'³@#æÿ¢? vW?©€›ÀŽž$A¿ýú2ÁšÏ)¡$Û~Ò"efwkoRú#,{ ¦ej;(í¢~V±‰Ú_é}wTÌ‹![Àï~JûiŸ“ák ôŠhúì’» ¹ölm%Á\p’iúYZ)½ßÍÃÇäyódiÙÓÌ… ô²€d‚æÿ61¾µ3›)Ç|î6žoµ¾Ò=ck´ŽDDzÿ ¼Ûh3 ®¹íîO )}DÊMVêZ¡ýI›DëZeÚK' -^ˆ©IÚ-‰¦~™ÝÍeHü9Ú5ô!HŽÓ‡ÑÞõ„$S%:ËCí l?ç߯›š5ù6Kx£k²ãÑø%¥Ÿ@]ûó "ðJ*5Kd4þºhÜNßB}Q¥&)•Ô®9”ƒ0e„&±îáB± ÏêG}1½ûrú:µés‚:îy”´£/Ú»_L)Iô v®v&…ºTD}ÿ´×*ÂßÓõ:©ý÷Rûï‹iÿˆi²ÖIŸ?ÿÆâ(¨b¶¶‹Rï¦L·Åd:‡Èª=O{˜ÖÀbúˆ¡sÉßc¼iÛEµ¼v%á™Ò‹2ÝgÉ¿7ªm¤3Y›N€W÷Fõ¨¼—5ÌDÍCßšá½vŠ–D/‡ÂHYGo´±ñ[£8–/†-fU`¶©tj™öûhºÍ«]ÐK ö ‚© “†×ü )ýG4CJ/µÐÍt%¤3ˆ¿„iTªEmƒëé{.¤ÖÑ–ÓKSm„ÔÚiš@¦GÓw„£µùQØèK3ñË“˜ã|:  ¸÷Ùɶø†úÁžoh¸{ÓBõ àqøE´ðÑB®Eø ´<É)üØ7±…_ˆ9¦‡R8šŸúù”wl4ﳌ”dÌÑ'È9Òwܹ“|)µjIôÙG~4é¡ß1ª¿â0qO4ÏÊh ÿ‹ù`Ì o£ ÍßD©>?Žê˜c†^ý?åúi4—3ЏÁ.¦ØK`ÿEArbÿóx,â³1Ç%Ú\Êqóqª–#úäÜî1Ï£Cù£ TÿÚBÞ-çŸZ{©¶!HV4ýGÑÇ¿}ÍÚÐLm?AúšÊ¼œÊqé×B ÏÓ%ZÂYÇ­Þ%W»Ÿ¾þôklmWRúí×ÔÀgi·À‚¯Qáâ˜C”È“‹ªG{ã_@mDËzÖfc~A'«Vý0½5ç±é%gNϘæô,J÷ç¤Eåkæk¼à–d˜á: ŠlèUzâüp–ܼ’¥7s3;EÇ‚ áÀ)Á‚ˆžDó«¸û`½èš§´Q³G›F,ØpÒ‚‘»lÉí.Zé8š$ïê—Or½­ÂÖýá"§S¬ kƒÏÔà®›4 ôtä{dtN«HWÊÜjôìȧ¨Úž«èð¿w@)ËP‹2ïÇ› ²”¥“l¯R6CÞŽŽ(6vôªB»69âÿÎfÜ®çj&ãD4$BÁ ¼˜¢.L×SŒûsÓU^>Ù˜(y$wEÍ4„?Ô ÓöpýCfûƒx'Å;ÈE¸iÒ¸‡‹kÊ*–jã/!²‹hc×Ã"ã¸ÅTvi‡÷½°û2Na¥hòŽõs)nÃ}'zŸ.9ëû<þTaçx=!p¸.ua±ÿ²Lñ›Àáú!Õl×óB$sQpÙxÚæ$‰è¡r¢Ö,âÊ´k¢gl ¹÷œÒ!O:^V6}xš›ìÅ… ¥Þv»-êEdÝéŒjäsöùœÂÎÔ¢àÜÔˆ&LAç—Ðúd`Ÿ8V95¯yD\¼({³£)±h¾ôq{Ò ÿN£žŽk®#Ðó€ËÓGöló°‚fGÑÌýâû†æÅžc)E7TÿÆÔH¦$ðóéUìË9Ð옕((Ì}EêŸ}!úz:ÇÌr^(þ+§5÷É…iÂÝ­$öl„Óävs)ßT „Å5úÄLÉ#ky âÿËë‡E.nú܆"¿)=Ž"g^ïû§|Š“21¨‘ã¹Ü‘"§ž…NÄí–Ï€Û™U¼¬ @E®2í)˜pkñZç£]'ž6údI©@̬!xøFÜ G8鵘Ï+vá!t÷Rí2æèø#µÊ éÝÅ|¤Ø©ÏƒõjWön¥/÷ ®SÙ]Á¨/æÅî2í+°à¹«yîjèá]¹ý>7aìæÌó:®ì‘úü‹Óx¬XOü,” Òç(væóuóðn_bPŽLÀ Ùº"‘†ÝÈ`µŠW:³÷—•GÖ¹4a5|.f"‹·3BÀÛ³•«y<Ρ;ÅÀÜ~Œð‹(PF"T ñ g¢ÈÇ T9ƒÎ16NŸ}pƒ=çp…g©ö·“XOt‘Mü K$QœÉ' ï'bá— Ÿ¢ðÍ«ä¥á LìTQÄË/ÖŸ¡ûæøàÜ¡‘Ü]RÂb}….à”Ò‡Äg¿Žç-ßž"ñºWÇ«K\PDù:·ê¼»‚<æñŽy 1 ¬pîž»†$öµ!±Y6Sbçq+ùì÷áúç)_;Ûÿ–jÐ+£UJô/aòŒ;/c\F±Íˆ7åeªó§Ð¸¨yμy®ºá«åzºÌÃÛÑç¹”yN¹~²­ž—òåú,ÛºYò¼¬ˆ\=9Bá¥v+o+½×g)ÞãJeŸò®ðdõd®²O—EÑ ûÔ•ÇU©O¨ÿÞŽLÞÉfÂtêÑ Z„¯ÖÎ^f³ù¯OëÔ &Ÿˆútù< ÅK"ëÓµ¯>)´ÅÝå6â )8´(¥}ôÌn}êÁgÖÄ œNæ."×M¦m#q/².Ë&lBßVh@xKf]f ôÛc±••öÁ0l/„‘b¼%r!~¯ÿP.†ŠWMŽà›4ýþFu±»Ý– €èýöUP9 ÿåX9ë =‚ûtªo¹zõ xÈÄ#ì½™xصצ|·²§Î¡úê¥Õ(O­‚ˆèÄfÎîÇWp̯[yo™ö4ïPAt?¥Ø3)¦sð´Þ<-¸Z®¦R§âô9 ­©¥= ˜ábœm L;šjú-­uRÊ[VñYF¡xÏ‘¶-ú7¾±\!ÜÅʉ³ðz4šñ•¾“ €ÿÄtñ¼z·ÿÄÑë?1M©gQü_oÆ3â1£Ë¸ÔaÜ j×ÙëÌ¢tÒ [ªŒ«N¨ßLŸ.N³‹ãQNÒpjúmØ¢ÄT=ãEhË¡êv4˜kë æz{4¼[L\Bt'DÝTï`—Èn”ù7|êfrÙ½úpо‰eUÚë«ØMf.ôúÀà ¡à~G¥ÇÕ‚¬Ô‚ÉÒðj-ýSÿ5öè~9~t)´+'€².‰ÜäŠÜä®ÒZÐŒ§ï\›Ý†÷p¨ä¹Õ‘›fTió,€à»jC:ɱõJŒQ1!@Á÷ @ªKKlÕ†æØÖQÅÝŒâp¥h¸‰Š¶r€Õ\9=aiO`_ݤ¥eª¨ök,ˆ¬ò +î‚ÿRT]Q¥=`·ŠÁVa–Þhg•À¸…Ô4 KêÙ£À«‹=&ÅÑý˺•·ø}ýÉBà^ÆIyC†MhD[vÉçý½2Ô‚ ewöA :mŽa•È#€úd‰˜µHŠÖBiqÁQšq€2Q{m Üd¢°ZžìN®tá%Œçí°WéÕGSÿÙìíŸEÃ’˜Ü”XÙ|3â(\£HßÀ”gpyŽç1WÐÛ_V­ ØLOÇaT 6!ð™q/†·l»°ƒ—**‚rNuƒ´e]yãEžAwEí®³’= Á²†SXwq¨±ÍýµvFwºA–£>ã`m‹*Ó^ôE•ï£g,ƒ¶­ø íÈ5Ù+ö¸Ið®©øL§T:ä©vsëkºõ4Ãz2Oò°£+f“=Ý×›vãŠø¼"§”YUaÆ—Äí5°gœö…aZf•öàG@òµÂ  Íôº»¯ˆ|&ÉGgH8‘ºÞs ±¼B[ƒz„‰?i—!öé­®uf·çž3áT¼:ŠÜìž¶/ÁLâ—[Ë£„#õÆÍŒñ#—§ñâÍÆ^@#xŽþ"ÿߌã)ƒ‡ðâ6ïÑøýitüöÈõSñ H¥K~±ŒŽseåìS:‡³†ÆV Œ–JWäo˜¦”+ªµ·²ð’r½ÓF4¸xS†--áœ+ç°qB ƒú²uã©·‰ÃrWi7Z‡œÞÒgÀ$GŸæ÷E&‚ý†÷©¹XxáÙ}2¥øIŠRü§Àaé1Œio›v<÷@ OÅž¦›j¶iªõ4ÃÁšYÅeiEŒ ”„À&ŽšvNœeg Ú)ªÂ9Bãdöt$„ÆBã=M•.o j¾x;súr¿öá üç„Æ1Ø7G8aó—6J:æGÎât¦¥§Ø!w½ÚDsé©™¥1åÅ3å‘Ûé¤ýf6_7ÃöP|0`ÿ_YEâ]]$“w¾2e£ÐQZž…9ëÏþÌÁxÜ&ñ¥P­…èv‘ø1:ëÒáÚ|y'»¾(€®aLøÎâ aF· ›öG$U¸ý_¬æ“…ÀG6C"µ6Ç#ßZÄ£‡ ÝFh”Á®ðZg‹U5›Iø.`;Oš—Óšs84Â7É(/èò³ÀJú08·d»sDfQÞohãQeF#qUkãE4y-n$M\Gš¸†4cjF…ŽœƒQ¡A#&3Ô,¨T»Ómk]bÙƒ'ž7˜»ë1+Ú8ï à-x&ÝÓð"-Xf²4-VÁn°öw›A¸‹aˆˆÝè:§ÞËND ^n¾² •1ø ÐÏ¥&ReDZtÓ“Il‚I¬tm,÷oë1•J¨Ò‚a³Ñ/ÃèáÒ_U*B½q¡H,ݸ¯‡'¨ˆT‘mmêÔϰ3.u¹ ­ªB—r%<;1À}¡S¹Ò©ŽQ9Å®ŒV—óxÓf!¯\É[kk¬“ë]Ãp-çbZÿyúôUÄÕ]Ärøk©×xrÂyëݾBè‰åÖoå¾”õ9x˜b'F¥z»Û®gàú›îvñ±+´ô#€³0lÜ7ÐET\³»©Œkâ:aß\æhr7•8ðk™?—Øc¾—$až¤&xJl†e‰MX’@° Û\âDeNÀw†m¥K®ãm’ÐA=_GÞ¶é×Ë·BâY`î+E|­ l´Jc•˜³ Í}.Ο+ø¼*Þ7 i5a­Kk«ŒYÐù'C¡&*¼h³ÈYÇGÖ¹îéϘ¡b޽1>s.u']]ëã«¡vì<\™á¥mø /§âœ‘¢Tik^4•.[%pèGª+Øc~™æ…<Áyœ^?Þ·ÉZ[•\äÌ(%ÃTvâ‚ÀºaÍC›J#Å4ŠÎ™{ÅÏ„­û…­ÞF#ˆ[[²Æ}ŒÕž³Xè6Ô‹d}+¾ÀÀCB8ßÜA‘ ʨ£Ç|–4·¹2ÒTy*(Eôä–æÊS3+#RgU5õ€G };f\&_¥ ÿ2›Ü^›7:È‚”˜Ou•ê6¡¾R:£ž˜1çu2 GFŠQÎ÷¬ÝU5gcöôFSZý-…rY˜ 3ƒà­YÑ`|5-Ð&´•ÿ²:žûqP̳‰3X|ˆ˜x•#š´Èéwu•k;u+Ëj;ö̳IoVi›·Y§—àt&öBcŽÝìãbƒÞEq6ÚœýþËmâß]äÂ(<^8ii‚;j~‰Uùe·„7°¨K ÊÝê’©J©†7_‘¹·³cJ¬8¼ÿúvëþkŠ'Ó[Y?YëÚÁ„ÇËý)õÓªè¶ëõYji÷R­ô«Ÿ`·ÜŸ"άOÁØ1ãCjPîO[èÁ%4þ§Cxa˜®ªtÇø? Ýg\xM5ªðÂëÉô½x«UD"„ ·£ó1‹>à³ ÷=¶”n¼¾ð3 ïlf•øB_¯„YÍÜú f<³_?nÌÐÅ¥¡?جñÜÄy®ö~(jL±Œ“ͼÕ2óÏ£ðÿkÂKË ¥4óëT­Åú:[]’Å•vGJ5!PG>P˶šÑ>2厲Hiø'ú!™‚M¨¹ûöÆ5ïLï=¬?-µVÁÔ~Ì[ ö§²¥BÛÊ™ñž× ò *…4 ç~ãE»ZsRôâ’[£nļ¾n0…ؽ¤ÇSë&ša0Ò]9ž…MÕ'áŠHé¸6âkãàZWDâ‚aܼ¹~ö¥ˆSêy¼"r„þ“¼ò|¼²X_aÞ)õTiYÏ3í™y{ {•6kKRA¬¢|³b׋°(úþõ6K¼Í6£n˜u›pæ«"óúX“Ì["q¹4Á“‡Cê1¹Öø8HÕ¼òÌ Ó½‚®.˜Í™scÁÊ·::3Žö×Y¬oˉ=õqòÌSÒOr`7%K»šMΔBꎽ]äÂZ^¦åç›ýkÄ» Ÿ°:(Ü6cÖþKlĘ@„ z?(c}0­hIòû>8G¼þfI¯ê—6W~0øÆš¼;÷/ìtÈ­]ËÁ‘»Kšˆ¤O*²ì¯Ê4û§f7ÿ·vï™ SÜà2…ÀÜãÍþ¨-ÕнˆÇgs¨N¼{Œ …À[ÖÓ~ëéµSæµ™½æs¸#°Ç‚h5ž˜ƒ´<‚1'Áß2ô“'.¼ö¥¥:sx/~>GɲÄ!ìá!°‡\~…™Ñ ¦ "ŸÃƒq¯‰âF·Žfúì|GØÙ*÷ 6?ÃÂ^<ý? /Æ! ºg#ãùí¯!ÿ¢Ä!°rï9†N*"<¹[qþ­9arO¿ ƃøfó CË–]Xó7H0Œ£c¹‹ñŒrñÊoð9ç0«Z¶8ç¡;HbšQØÒ‹CÜoÁúÙLP˜ý 4)Ï¡lrÂq´-3ï;Æ22E/{Hg«$#%¸ þ05ßƒß …B 9ÄÜ_$^©;º)Éä>MŸû_}aq'‰¬Œ9B`åAÔ¸££¸³™ÚåšÌàY9ûð‚ !PhÄÊ»,Ÿ°ór…a´‡$hÿ ﳡJJ±ŠÐ©m Jp¶Q™Bag®‘•]‰óšq%N‡ø–¥™›e³w]Tœ¼»ŒhiÄÃ~9‘]iäZú ;ƒ[§cŸËª¥SOA}ŸûMua7÷í@9äÞ:]d™ÿJ-d›!˜`œ|Ww •/¡.œ¡‘Xs¾êyŽºʦˆð¤sG’‰A 2ÙÏNQ轘áݸG­˜¾ X4Cu¶àÁý¸0K¡'ùV°]xnŸñf(Ü̉£°E±‹~†üC” ­7YÁ¨±ÁEBÄÌK현¸[ ÿN!¸yÊì8Ô"¼— O’ïÀ<Ž[3• .™>ÙÄi*=(¹jQ3Ÿj­Ÿ»–êN"†“ÿ5:/šBÝÒp6Z8Å‘l€åê†0Š<ý Øî¤Ëçü‹¶†ê7u$R ºžÅ§ ùø]Ìp¿CÆùGÞ]Ø ûæÑzÕÌ9âþ™“¥Q¬½ß&bÙlqŒþ…æ¹bŸ›ü3ÏeÿÌ©Bã/@Éò èÆÖvv‹yÞ|r¢yÖ¨#~Òèv¡ÃhôÂ`:ÕsÂì¿»O˜=±f=³žºŒ§˜›`˜ÅVÿÍ«\ì1W¹œo^å’l\å2®åûîr‘w’; †Ü=š9N81>ÌõâspâYÁßdùæE/ïG"5ÇhJ=ñf*{ÔÄI8KTN”œxúÚ¼¤& I0ëùç¶õË#îd!zSͰ ÷´ [Û”€í$ÊOh$/;Ê«ºƒ…0ŒÖ/'ÚÅ„¿Å%‰NxÂ.ŸÁä¹…Æ4Ž“ß ¥!–?›úÿLÉa\€S”i‚H‡ÐÌ•w á6ñƒ=ŸÝ/ûßRÀ· "u˜Ú²•ŽrnE$íQ~M7éÌ¿ŽDŒ˜h7Ô|I)‡˜&Ðòš0¥ì³RJjú)åy+å’Û˘ò˜•’U“D)wY)Ãk\”Ò`¦ˆB´†!<ÚY3‚¤´L[n‚ CP36æÛeŠá îxÈoØCm9!Y}5OLñçRñö3çM¤N«æ‚˜¼‡£y/¡¼ífŠ8"JºüFª¾åU37†ÄLP¡qX¢©„¬¨¡ÐöÚq¦É޾pºC~Ã.vfŠå–Ä^#‰íE‰}õ.Hl)‘’wؔإ5+bÊ=Û"úܪšØÍßßcΩØo8¡› ox‘oxº-›žˆ¿~6Þ«OYYW¦5biµTÚ?Þ5KSósJÙþ®YNjhz»ç w8‘Ãömbʬ›­Í`¦ˆù5"eßh"“å7òu‰øwkL=®2ñ‹é¬£f}2Ót§M/RÂ5·ÅkŠEOzÍíTÄh+eTèvô—f=:âñ±G·CÇì70Â2-ŠK"ëæjM‡ î÷ž7™u¯ªy,†Â™Ž”ßÈŒœÓ§Ô<­šÐÒˆ†¾~õvÀ¤È&‚È3±Kÿi3Û+ß»Ÿìj¶5E&5¢Ûlívº¥æÅ˜òÆZÔ¹L8Φ¯£1„éí4a&+8\©"W¾ë÷€Æ|ËGûÈfm5;cþb§ÅÞšv"íq+Es˜£%²$\lç…Ææ½ØJgηâ™s-kw+¡¸®Ó¬ÝÈ3J}AÍë1u¼´3¦Žf¨ŸSs0fD§Õ{4eŠ+™ ¤‘áâN‚úgSýwcý1€Kñ".ì|{;2QXè´›È)&µ=†í†(sU‚e#€>ÅH-ï î»ð@üIˆÿ7If¿Ž}8FΩn¢h6–HÞò6N°wP—/aCʼn@ðÔÀ©ôÉ]«ä¾L) (âDAÞAæ A9±ÿçÅ%ÌÅæ×©ê¦‡°§™‘x¨g›Ixí2×ði¤ˆ®„«jΣøW»€Ú/Éîȇª›öDâø|sŠ>Kª`+z›iÅoƒTß%©Þñ¶)U3³ÎÕ€þ×|£N?}ÛTžÉÆt¥•2®ª&)y£ (¹.Ñ\¿d¸Îìâ†|€Åeú(‚ÎJŒQ8Š?°ãhù'¦iÇÿi6î³j>§”£ÿ4‹SU3 q]¸>O°Æ! ¯Å‰\LM‘ ¶b$m âf#Í}îIÆ`¸ÉÂ=Ò¸go pÿÒì?£ÆFò˜ì#µ\%¤*•l¼…3¤…*iI^‘«>_%#oá"ébŸ„F.)º4‰½;à›²”¦ÞƒýËÄ“*gyrw‰@ÌùHÌÏ‘˜ë|Ÿe³ÈêÊIù¨'ùM¥ÄCw)»`ªìW kPB㌂²ƒ$¦±¬þ’QöÐÎx|þU£¾ ý ûcË U£á÷…@£üPÊà•’5 á¼˜¬ìR‹Ó»>Ä «*ÄÜC/T»ä¾TªµRèiØa¶s / -åÖÏ2Óœ6ÉeˆSNó™7é&ÙþØÊrœh€êôvà„I,­9‚3º›î ÑÒí2®mê‹Hë´g} Óµa/wÿHK«¼“Ó:ð6þ¯þ·÷Må%UÕåúEU†NVîtíV^JQU]yS´ë0‹=CUÅ,`ãÃbãÝ{ÛƒÔ@™ª,’wÐÜE’äÔ©K™FÆ7Ï3£4‰WÆ Õ- ;ÌñEšaÀ>…Xe¤•&ÛlU5ÓQÎß UÜc7âµ›ù6)%:V±šaà#¡q™Ô¨Æ¹¤×u®Ø”)øý½Ô{*» I ðä«Ê{Vö+%3”+f*mYÈÏŽ‚É6…µMè$Ü`Í›èìYèÞÁÊ]ª½KAŒî5ƒOÀK»XÍÖòX3rmZ¶ƒ­è0¬ aÕ/ÂaCÍ( z2¥!M f(ûMMíÈŸAfz¾ ívCâ0k"£9ÆLƒæ”âl•È”ÜÔŽŒkjÓò§>keXßÙdõà0có—¬qêg«A6—ªÔ_”©4±XjÔçÖsÉ!Õxk;ÏXŒ­Öf×£•É—†È;hŠ,9ý Òüìƒü‹t(^¶ ¸´;gÆ’æf^þL>NI²øèz 4wNp?Ô*‰mk¥‰>µÐ3i"záá)CþE>z÷Ê¿˜m[7ÛDZ‹cýC) ¡œÓQiœœFÀ‚ ü1[âŽVALW—§›_ÕD ­­ÙŽñ¢×Š>öÚ‰øu|ºíñ_ßo7ûÁ¡˜‚ÿÑ+‹!c\她„Ìòô w@ñjæýoìF{܆_à¦ó¯5;yµRS}MÎQïkó_§qÔá¾5Ý5œ\®ü0Â"l —B×v¿â=¢Tv9V!u©•¯— s*•¯ÉÞnN®ìÁð’ê<§Ü:»«nzîúüú$);÷šÙë²Ð¿‰\­NƒA(]ÕDóÃ`35já{îÍù d)9wùlas 6,ÀYïRúÈ­Šå.œ­–ç——ió)܇›¹Y»µr¼÷#Å»_©|K­<.<ù6¾>áÉ~Î÷–êݯV¾UÎ<¿~KÎðwiûZ-w"®j^õv«•=ʼ¹JuIÇ<¦üóHùƒ×=õ 3ö•c¹ð¿jmø9Dž\O:R!×ƒŽ”2•?‚½ŒW¹ðyÕNßYê·R:­‹`º2³#߃³ÒÞD¼ Eê/ñd’…è„æíd‹U™¢§ªÖy3h›(<¹KÏl±ÇÖcOµ–ˆ ¢¬Â€8þ*j\Df duj‹bú60q–)&úKFæãÈŠ ðì7P]—eŽRÒ6 ô„m8Ú€xeÌ?Ï2Ë@QámÓØPéÓQÜ–eß"kÒu¼ÇÉxqiCg°.ˆ¸`tAb¤T6Ån²î+1±n±[ÝÓÏžD‚õôš®ƒï'ˆY e—§ïç,!ü­—Ü´†‹¬ãbFg8Ü(!JÐëŒxdJºV;)z² ÙÈa„Eƒ·5ÔûOI*Wh³‘õ³ül‡d¹ÿ[)¾ÑÚj<àB“µ[L¢ø›v§·;þ|—y×9røÜÌáô­#‹ÛBêp‘Cîs­_„w1€»c=è—ÑúM‚ìRNÌ½Ì â(=ÃÚ¿‹ Çž´õ„í¸R,°¯jÓ`Œ´NZãÈM=×F$pë/"–מÒÖž2—üÑÝðµßj«¬¤\dÆÕÛ™õᔥB+°>1›^J•ö2y„KÈ %)z Ä8VËÕÞ¢mˉžZ*˜KžƒŠT*áŽÂk©­®b?+ØÏìç’Ýv¬†—§³{ò-™61*†R¯R–©'*wáC7cãêÀØ‘ûkü&¥âÚ(…áù—ø›»üZ˜)ßêÆ`[kÝÚŠÖÈnN Óµ…fµ”p­6‹%Th99F(.Ò…LÃ÷sÞ\µº$þªõ™fgO—±COÍj£§gߣ9ª*àë´Ÿ°¯x%û¼0Fu)•ÇTo=x·{é10á¸ÒãjeÇqÞ¼, /§Ï«ž,¥„ç¥Á¤OÇ’‹ï¼<žÍ$Wk©Ìx¦¶˜g;O&H?'Wß6å #Rnåä¶hÑÂÈ«Tv«ý%'uSѹÊîj휳èj4we7Œ‘Y¹¥Úº ó˜=9Ù“x[ãV<¥£ŸÇÚ_ÌÅôHZbµ†–;U„U59L¿kC¸Lÿ^É4nª•}xŸ^õcèbål™`³ÅŠâ…²ÿ3ÔããPK1¨[L?Á•.è;Âþh¿ç’vÇêö"îçíEö›Û‹b{‘ó|‡«(¡¬\;6Òf£»Çü·&ÚÄÅùþÙé‘ÚÛî(†\K Wyƒ ½¡:ïdÐíÎôóóáÏ\üS€–á[>i+ñ2ö'ö»N<[{>ºÎ÷˜²¸¨C¦3Nô‹?=t”™íÀ4ÌFw„R¶´yÀȦý’vûõ!JØhþóŸŽÆ¿’»k˜KÄá˜m »3ã·Ø6PÇ&Óí¢cÓdëɼb ƒk±'Þz2o_£-¤iæol!e|ß’š8‰³¢ñ1þ Ë×b º€yïÃýŸ]Ö";óÝGˆñÓ‚^ëS?uP÷aðL\#sSüÿ§À?Ê>øoñØ|™Å!&’Å2¦ŠvÎ@0t= ûö> .­VÞG6㪯S7½„Ûò ÕAgaΣOBÎ,€>Ê3mXö¹ø©?­&†û̬÷+s•¥%Ué>í‚~‹ô|F!™0Y“®5?Ég†µTÕLDl[:™^ @:íW>XÙšA«:øEÛ°;©™ÜŠk8»v›‹Y­–ëœ6P5ñä žý¬N~ÆûzJKkÂù£8qJà0LÊV:eÞ6Ul½¢L[j.0‰%UeÚï¡^ ÷sR¢)Åuä³A*ÿ 6ó¸fN´F(à¬+z¼Ž¯Ò<¯`ˆEìÁZ¢÷¡›q,a¼*òÈÛI‘…îl¨ÛÙµWœ]’(–tï¢W¡¹…'‹ø²ÈZ¶ë¦3ÔÄÐ+¨ˆÆî1 íNOö„çᜧBk>Èt7,îA‡ùšK_­~mŽž“ou “ÆVÔLÅàGò®×–=mœ#S×zÔ[Ýxõ0ºC¶„qÍý—,ã÷8“½yໜÉlèšÛþºåLÖu&“†×¢±ÃìþyuÔÍ;€×Ⱦqâe'Ý}·¥²ÏqFxv·Ýgaÿ b÷ ¸ê\ð7/>/½d\£"%«E<»…¾zi…ö{»e^C a „n¬ÁðR'ThŒ¬i_Ý\jG­¨pÉ'ùú@(÷ñâèz°ßœb²ž‰®oÃõÑ/bpPý,%ü"^mïx®Ñ쳟D=¬¾|y•6íNrZÇCïUQËéÕxÞ ðXë… *ÿêóƒ…ý˜< ÝëðÃßïÀÃBtß"á{¯±ïUÚyF¾a-È0JzäNó€Å½–AÍø¥i^ bóHä›"Ÿtf»wö3É1ü}˜§c-Ï2…ÀïÀš]"þö-ó‹¹Ã–âö3´}F3½ß!õÑscƒži¼ ½‚òqÄtìzéJ­Mûç=–ªà¨Áq")×3wZÊ…½[…vôצ—ç.<ìfž];û\6pNœÐÏ\N‘G¨wµbÁùf Ç6%…a§c4`íŸû;'¹¢L;ûÏ(¥ï×h\`ú×Ç32±;äTò_ÏÞ•KWÞ×M3½«GqÒ µ-­b]Â_ÿ¥þܺ’¤¤Ì£‹íêÙwæ‘ †Ûð˜×>y™\.ÄKµë³rZs;}ãÙYÿl÷TižQ(gð .?·sãQî·ñwÙñ¾†ÍéÄSCþ¿¼¯áœí– w2Û„Æ¿ØØ ƽ l--þî†tvwÃú渻È„çƒy=¤BÛÚjêÄj¶\‚šó¡ÇƦ™YlؘÌ~xöãd?sÙO w•'òFä·8í†YiäM­À‘×ý8­¯=b¬¯™×@Äί1ì$v/ Î¿øYìŠþÛ)’­ú[œýàex8@13ÆVu˜1g¯Ò¶(XUVG‡ÜJÓÍá"¨ê(º˜ò¿r«´/³µ"O›æ€Á¿pd&ðzõ¶dxU&Œµ÷èÔpUd+–®­`g£ä4·“4cF)5Ö—œÍ¦[;mFófWrþýlTìU–Š÷XO6ÃÊt)"­ᎠmÀ¬oPª2푬¡‚aÞL ûä}‰ =wÜf—·Y†äm–qy›Ûz2MÏp!EÂ~ÑôO*$¥<»….O2Ur¨$GçS½¼šoÚ˜@@JÇØ5œ þhD¹öÜæä1f9˜©Ik{×o3œøñ ^BEöæ˜`é}Ki¹ïî˜ïxq3:í`¾@öša¸öPÌypÃòœ@ë ã³ìÉ4ÄFögè&»Í²;WÞ‡¢ï·™QÖÝLÔf²!¹¼¢Eu©åd~†fÚYõ~IÆç,0¡é‚´?Cxh—ìY^õSN·²ÿ~°E™ Š…£ú§ž˜Ú\hÚ¡X¥-rSzèÊ@,Z¢¡=¦=Šc÷Á§„8ûî¦W-œ¢ÑT„0ø³±¿†|I¾•ŽÄŽ“oͲ­…†rA–ºt²9«oQ*ïÆ\[H¼wùÕ"˜–z•Ê&ÕÛÒ{]£Ò®¼£V¶OV6q逸“¥wso¨WñJ§çGøš„i# Å»#w’Óö~ã³Ò£œœâm[ÙTk+'¶Üî&ó£:œs» Z‡­©X×ü¬ˆ\6¦Ü÷uäÓB …¾ÐKº„Ui»‘õÌ(Œ²;\´Æ) 5fÝ Ÿ/®eÊ´JM*Å#YW¢•O·]¡ÿ4ú-σ¡ÿ8ú‡ž7üè ý_Ró„i·ïzÞr_2Œj}‚y’,ùsÁ¬z>Ó¼S@B¯îàœXÞ°‹n¸¤37IÔ=ȇgŽÙ~–åeÀ›‰[W˜QäMüLã|ØßÅy§aoL0Ýña¦h»SW{zó™žÜá=†êIð@ù#AOþ»Ž:0šÓªØ¾¦Û… æ}Ëu.N¸}J/bOv¡1ǽH^[Ú£ñ?Õbã|Ÿ°—ÞÁÀ| ˜&lu´uñíÞÙ’½ÝÍE\“·[Þm§XÍEx¶Ù£ðƵu¹Û½Ÿ³7ÈœÞîý_ðdàuÍEI,Ob\ž„ØŸÍ =‡65æL_¶öÇg¬+9ë(Zè}ó¿5ΣÑ=Ê´žYE¿RâUŸÜÇ ›þ„±’‹i8¹^Àyà˜Ð=ßñÎq>86´ ^YýÙÄp(›&Áü0Õe|úúZ`â²6`"«ÎïEPÿK¢Õûê¶Ã~N4é‹[YÒã¼"±µý&SKGÓÜ•Œ>”ÞlZ‹í#5MJe“?Å»#ßæzÇÕ<~÷¢®Õ]njõ%lŽ1¥²‹õ£ye3„;^@Ÿ v)¯pFݰ*µ´k©vësé&&õ9ºÌw¶u%oNýª¾ê÷§Ñ@#3Œ¿Ø!Ï6oì¥0Zs‰›.×gšçŒ‰áK›­8ƒ‹›.¨·Ú,„«Ðöm9ãÄ0etÜÄìç)Ú•ÏY ŠïÙh™FÜÚ<ƒ`Úu!tm¢/hÏ¡E5RŸ¡Idû{NXwƒƒóæÍ¨sW°ëÓ §bÁsón` ±¡BûàY“Êë•gXö]ÁyÑÉhÉ.SKFÀdô^@¨çUhë|4ÇËù~Ξ&ˆ˜ƒï+¯Ä‘X-Åû\F¶Û¦Õ¦Ô¦ÔØ^ùuÞÒü2eog™îŠ&••kWÚ¢÷Y×fÖÚqƒÏ‘ÜÆ=ò³lÆœ§6µ–ÇoùÑoã­o|­¿¹£ßìæ·hüŽRON8÷µneoÎ^)ÌÍÒŒÜ7nîQWº…­‡§¬#ÔÝöØq ­u^c?ÒÕäI,VV,Ä™eýú´¿M‡é Hkw&ÚbcŠ˜q¼xb`Ÿo2òi0å™­]C "×þ±™¥¼ÒÛ)°õ¾[^¦"z•--×n²E÷«jó þáTÕÌ`—Ç——i mæ=¬µ#O‡97 ã6øyŒÃ‚1öIKÓÕ•F4=}‚*e*½m‘ hã–cÈÍK—²]¯6å`¤4+o¥ký)!¯”_ÿOÕçiø=U)+»Wñ ¨•ä~ßxüŒøïs«R_“ç²bEꃩs¤>Õ‡ô2ƒÿ›®óÙ¥üè•®S»y’ô% _×mÉ#.ÿ`â~]f§ìMfàíÎËlV$½Óö»)þ\ÎaZÎv+ON“øt¤/½E>9EÉn¤M¥ñÍù@pEá~„ î—û’×ýKéžlYaèôd6®XæÖõ(1ñ] Î\ñn$É1âWLš|2¿.AÞµOwÈ»ö+m]Î`†»ª.±áèØ2zÞ ¾Œ6Àk±xäît-ù‰¼ÌfC´ød¬ß‚2;yåÕ¶þ ùŠ——OL£“4Éò‰)ÒÀt_‰)ið0 òÑn¡w€øsqK<"= E!<º Œ];×3 ÁÒåäÖý8#ƒ‰÷ú° ­;S¨¸B¥’Wö*ï´oŠÊz^zNöõ$¯{Rõöõ~bìjVÐ>j7¤ Ovp^xÐÔÊîàuG¢k’<[fcúk’5ŽmcÆQÃíö.ÛÙv%bŠ£”€æ½‚û;ËJÝj'g*㬖è~)6½ã?((iPAV{Œ/Šv&ÞÊÏët~,p > &•}ùë\´¹Û¶O>ÑSØó~xõW}@P¯³í'rÃXBÛô¢¤ûç)>žP ‘ûV­ã'¡ÉGmÑìÃ@߯åÉëîa‰/›‰ùDÂ:¿I´Ù¸ˆîUÆö‰;'Üàs‘så¥êÅn˜<£ûF„F¢4—*¤!ÛŒÖEöÝg3$þê—0û‹§ ðNbÀckqÏ¿þóP7ÏîÁÁûeÃEivÑáÍ]U†0Ï?M®?äù©Mí(b~†h¦+EAïC5µÖ¡ýø)#tájÙ÷”Íçô/\ã”}UJÈ-í[úœ]±™ =¼Ý,ä ´Žâô)ç2g¾#ŸhWöšGê™}Äl›Z»¶ì)†I¦F§åGÓbåŒÚúÜ_É«gXØût¦˜ÊE"‹Îø1'Z[D:¯¦f#Zq•é+”iÉ'"‘Gð³îR ø„\~¢¶}|yÞ¿Fõ š‚ž²&C6Ó&kèF?ã0¼í~nlàu3b{À?×µœðss{ ~~ÒHd Iðs}{€‡ŸL¼3, h†eÜ5€g®ñÚ0óž§ãÞ0°_^œ¿èÞñÔÐÁ uh¢õ䚽ȅ| DÔ|ˆˆC«µ 0”=BÒ'Ì Îú³qUžs…+·‰Þ¼4|¨›óbäŽweŸvÚ(ùÅÌ]gút|>Ö\Úß—YE Ø÷ø/· oÀØeK¢Zk~Þܽnî–;Ü!¡RkVÔµTš•)w¤†V²õÚÚäš0ï èx¹#9„ÑÁæ\GPiÔH Ê)w¤„†ÚÙ| RßjBNEÈ[œ6ßˆÚ kÂÚ]ô-ÛClÇû\ ¾Ó·Qþ!5)ÿ_¬üç“£¯3_Q{qm7äÿšÝB‡úh凪 á ŸPõKv#†Ÿl=½Fv¬:.ñA½ ªÈ‚òX¸œXoŒ¢„¡>‹n¬'Xp\/@kºš@úž3AF[ P ÂÈ{æ}@I5«øU x\;9Ói§8Ÿ)í ¸jÌÉI¡X†ÊðëÁRX†!,ƒ3`4 g «¿•aÌ™2@ ¼¾¼vhÍ‚Î{.¾~ë†ê—æ„1ìÑð`¥ã&59GÎ+†éxp¥¿Ý9>¥¸6³æ!Ë ¼O©B«$O7fšØâ¿2û È3XéDíÌš.$ñ'A^ 5£÷Àsž)Þ¢Z=‹ì5ðÃãè¿'³&"@-½ [z[Îáܯ}iÁ{>÷U_j³sD“3¯(÷ë_*ÁÇŽï- DVe8¾Ï|Œ™s2€õ6©²&Kz¿ŒÎY¤í¹šz•ÀqZÐûxY9ô ©°ìȶI¶\ÌALéH@xÒ&/ñ#¬W’çС‘v;Çá‹ònloóÉÞÏ‚²U߃Ñ>(¸,%’ûÕÚr„Ž9óúâ "~íïÙ¶¡÷o¼4r8¬f&"Á¯ÓØ×†T)ã÷x× ã?KE°ó $•qýŸòjïÁ`XòjÃcÌh…B‚k“§O‹:_·]¿zõêÞPÛI»RùòJÛÉ ªï¡ìwßCAçË\kv›¿m:Ý二ANÃL­Î¡‡È„ì“ oQ±ÜŸP÷g0 .šþSä«Ò£Ì©hr1’€·ýãµ×^ëý°í3Gpö/¹Hö ¥ô¡fïCN*Äy™òfÑb¹?©®SûW ÒÜA›†5x‰{Í.K´›þˆ[/(¿þˆx†Ek±æþƒïañÑŒõYãÈ„q€bu‡÷3ÜU€©wG!³iì†Y¯'²ûEñʉ“þË’Åo„ã¡vSĹšäÆ?Æ¢¯Ÿ}™_~"M5×z=.Ü¿sᦿ>”hìß•oØg³õÔñ:åþŘíFég1ÙÆ®+aJJè.65æ7¾Ñ(æÐŸ¢ëÁ•®†_8ï¿ÿþÑë"Þ}¸Ò)w áEË¢;Ãy¤6XDsÓ7åþó¥ëôêh®õ åþéRÖ<½ÈÀWêjØÀ¾ ­µ-Õº0Oi YˆÔ“Ñ(©\ÛaÄ”ô›`Ñïä¾Ñë>¢¹qÑKè]ídœ›&òÀXi<ÌïQ"«jiwЩÈ AgØ|1˜>†éÀg6ÑÑ»¦›Ý¯›óöàÒ‰v“ƒÙç¾›¸$èí#_¬|cÂV¦z{­>{ogúoký#XûÇ0õnd¦.Õºq¦3ñá{¹æ2îYG÷aWòRgŒ”²‚¥0×r©…NŒ‰b›v©¶o„¦œ¥.…ÓG¢¼$Ù•B'zˆÛãc˜‘\É˾t›î’2¹iªê1ì‹0Ä«Æcø6À0‡aÈJÀ]âl;áiø0’D[$ 'ðAZÖ›Ú!Øp‹®5ð¹Ú“·Ïã~Ô>ϾXÁæÇ¥®vn~{·¸½À^ŒÑ&w;v‹Ž§íŽÌ¢ÅÒ ëü‚ìë²Icn§Íçp»c:~ow€¥‹‚©I ש5x»ÐîT½]m]N‡·KõuAg+¼¶õ¹o—ÿºH=ØÁ qïÀ,õ”iW 7DÔe«…ü@âË:”R‹ß“|G"Þ®`e_&…0€87-¯(׊ìx«DÝËݧ®q¶ò4|‚|jXE\ò—$ºÚ‘Ø@¸î\e·ÙÞ:ƒžR6’öµi’w)ζëú¸ÅpýQºEãX ÊfñG0þûµªæÉœÓ›E ?"ìØtÈAj¿X:¼x×>E:&&Eóó|šß&9uUyÞcu˜)»@tÁ³"C,AîË­Ù‚…ßfá)‡?/·Î)%ÒW펬¥/=…´iˆäΫ<&¥ª¥ÇPüs…Èt`²9çþQ›å|Ïù#<üu½—¾»e©º(‹W—:UÎX9rp#–:Å¡‹;§,u^ °êŠ,—êP+œòI›t‹ šv°c¯|Â#N¹¹@yhR"üu×A­¡m´¦¶=“%É{aŽªŒ€6rࡤ!6Ûôœ¹Ò¢8$+a@Ð{è`WC³öŠËlaÇ+X䢛ςÂ_÷ü¬¡í"VZÃQÊñ Nq`Y„Sxl¢½ÈD; p²¤†W€ª"HƬ±üšnòkÐú%mÁìž ÔU¡…–=i¤vñx4„ÞYÎÎÀ$už¿Æå… ˜ñ¾8àsÈ»0ªŠ4f@Æ6çé¸5OGclßMѵ|Ї×%·NÈê"C­àfZ9ni‘»Ú˜eG*UÛjÅ™uhjÖjx³ Ï·5˜ÿÐ YN„UºäV^îššt•êÌzd/ âXÇG^cü#ûك둷؃û‘N´{ºd͕եìy¿Cãgr>ÜÉø‡EÙȱlwŒïüàñøåªÁûzµw0üé$|üX{þIÃS½È®”4°¦÷8ú@•1||ýü†~½Ý‰o“úñ,¸Ðˆ¨ë‡4ô?oâõ!¼T»¡¿_® uÐK=åB¶úÿ¡^ ý $‰ë³ú7áÓÿ ‚Ûðiiè.ØŒ/Ë(@PC¿Š/Wo¬lèß‚O+õ›·Uá²Å›ÛV€×m+ÄŸ«•ð¶"|¨Ü6û¼ÛŠÏeñæ¶ÍÇ‹·•àÏùð>&m[€?ãá}!>¤m»†Â{5>$lˇb؇ ‘ãßïN™×MÇíyyµ·Ôä]¥Cüã¢Düž¡+'"o§hþuÃTݤØe¡±\lœÿ‹¶Ò蚀b¶&Â4ýh½|2C¼©^OŽÇ„ŽØLŽ“ãXx]ºàN Gè¦y;þõwL³^81I–16»K¥«Ôb·b7ièdT¤Rȇn³1{ŠòDJŒïò/œ61U-ämú5‘‹Õ ÷q}±*ÇóThÛW³#ì89Hí¥½Ý?²Ò„À¯9"&èô› ´áŽ?Ðq ¶“šµò#© ffðâAŒ/áísxò¼.áŽ;݃‰oGnž\C7|@×^­­:ÎúvZ죺~ú };TpÄà Òu©Ó­ýj«§÷}dÝHA*£@B½lÊ€¯t@ú'~Ñ0ôSkýÐ+¡o”õî.ýÃzG~HÅšQšÉï—Àû˜âÐdóýx[L®€ð4¼X-M$pB ``‘—Û2Pw6™¹z¾¯¿?]_ýýå¶(AЇûû™oCAi— )Ž£žà¬¶;ÿ[’t,ñXʹ ~¨ñºˆ#~´Ù~“ ÈQzJ‹¿¿Œúç‘ÅúhÖ_O“ýýÙBàmr]6ê»ÆHxžJ’}šM, §zÁ™zQòUŒ^ð}L/8C/ ÜB1Öƒ4½dT¯§X™ÇÙF¹m›Œ5çél>0æ\ÜÛ~mP<’•<9Üxp ŽªÙ‘žklVÔóIåü³Ó3ÅãðÐìL‡”ÙçKè‹àÓmØ…‹)òe¶ òå6_ íbë,~Ì®DÚA{N÷G”øœ†A€ ‚vN¦”T€?â‰æŒœ?®ÿùiýox‹éÉbŽ÷1p ¶ý³“סùuiÐóKaçîಲý§¡3ÀÞž4bȮb!Ž@6W—eñr·ë=›ïedi`#›•¼Áy=›ëJÇúàó!ÛàÙþéÿ“»W¨‹²®UeåúÀ<²®RxH«”8å=+¾Ë¿JqeAök!»SûI ²‘}sú÷}ƒ¾++²Ü NuÀBÍ>F“}®ëÃÇï£!Jÿ\ƒþ‹þ’~ecVºrCVä»Vù{éÆ4ucÖ*a§ëùD¦˜ hù:_êû‚6¬áKº  ˆÕèŸþä‡**b–g0žs¹\™È†+z[ÿE“[9åÝa_é‚.õn¥#³TÀ[Ì ú¾ÇôÈ¥ìo8‰YÄËêí½ï:öÀ]¿Ï:¤Ú÷ægbêZû‘}Gö†¾Í~ž³Õ;iï¹»…^|ü{ï%ƒ¤›'«[XmNe‹QFçÑζÎ}PÖÉÎV³4á½CX¡ÌÅCùP–uèPë‘!ž# ÃßÎ}Gž2~·¿­ô{¨íHÂ^|zåHÂ~ã·Óøí‚ß÷_9°>8²…J;bÔ‡•ý^§É‡¾$a3ÝŸ˜hÛýI<†àŸm,ϧŽeϘ– ÏÃ?ƒ;úÞKèAzeeЋ¾H ßué—ì›qž•؇‰“(1í½Û¢\ø¢Ûö $wëCµŸ€ÂòÈÈ"MÄ¥4-bÉlÜ=è;g~ÿø[ëû PÉUØ›= ÚvdHæ"ܺ\a®gÿð÷ªKÐnˆˆÿo·ôB"•\µÈÐÑ÷j¡v®ËD•;4§ߦùáïaèâMÃwì¨ôñð}×wGÍl؃eœ¹•5tãá:ìBŒÂ³Z‘’»‰æCûޥƖcÈàÈ$¤ ëñèPÍrΆÎs&´\õR̈úž# f†µÑ sq´ˆÏ<Â7õnöä4ìAÂvÇÈïMÒ ³ã ¾tî`ùÂ÷¶.w[Ÿ;^þ8~¼Ç!Ä&ÜH±òG¿ÿü¾ß9Ã÷4þla2&0 í¯ìVÞT:•WØø³ñ;»8&ÿÓºð'²0j¯ú©EîÀžÇ™ê¯nû-c†WBÜ›¹'„M*cڪ܃¾¡4|ÁÀæ¯0 ]‹÷üÎ} (ÖMÚži£á•ÒÞtMdÉâÜ·ë{ÏʳTÚ[Xɯ/ž¸OhŒ!Ê௰µ2RÚTY¢ô,žØ*õPœ)±__l`™¸O\lÒ»¿:k|šx@Ì50 [KmÞ&ažòÕbHMS€Ò6b+( >KGâélDÔ;óÄ´T‹'èó½M^Û½Þ%Rïàì»[ŽŸ±Œ¿!kdº2×äž;ª‡Ö›¼=U9Ñð!½”F”©–9¹yÈíÒ.ÄÅèÓOC?âÊhÌjaÂÌ ¾+§ÏRÔO‰æ~^Ÿ¤|MómEWN-žç)¡ùÀ ü:ñ_Àº'Hß ppÔ<’pÁ)¯,˜¸O¹›ž‰ƒMLÞùJ;‚Í‚@ ¨€¸1ŠX ÃÄP'ÍS¾Ô ä8ñHÒ@Ýyºá`jü™êÿk䬈Ü/|vÝ®|_ó•oK`îÆ ê³T=ÜçÚê<#§8—”ú¾ÆGF  œ«bG†ÚÄ}u“A %Êþ(cè6–ÝÙ_›êU¼°þ8åྒྷâï× õ> ¬4”øã:L+ƒ¾¾ÓÀìî&z&ð]ltò Îô&¾½5G*ûå.NLbSeìKi ‰ºwâx9—Î|‘rPþˆk;ÉH²²Wx¬§a<šT”µðd›B?ûô·Í¾Èè@É¿¡{àLýOc^é Þô÷A&þkcåÑS^&_ì_&FŒKž¥Á^}0 /˜xXJ”Oq"ßÂ2$PPc7U‚ŒÍÐFîH ò©ˆ˜4²ª‡…+oÈŸrÊgòQ›”:1"%í 0~Çôƒ@,{‘Cp=<¦ˆoà1jÞ†>¡ZcX½  .5–>|lyÁz‡Ö‡÷:@[Áû(é!ÐI¼zĦurúª©WŒ®Û•Œuƒy­&‘’)×?ÿ‚td´FrAtqØå™ñP Ù>Á y‚µP/°ø)&2R‘h.•™ƒ0÷DΆ´è #Ñ¢¬©a2ŽH¡.Öƒ>Ê*ƒìQÅÐã@¶i§8å˪~wÆúpf€5Ò›á/³…^&î3ÄTúÝ4ü‹™­&™]YQÚÚ¨$² –e­€×+â=T²K´jv­bÔU<ôSìˆOÎ<œyü%%Sp,°Þk'¶B€"kêJq¶8ñ@Šã!ê‚gL1˜ ]Öy¹íÒšWî…¿5ÊÙ_(íÙŸ/ñ.®sOŒÔ¹d ôçåîu*Gé¹0äìÂHŽYsCór¦u)„ÈýLZ£>h”1cŠ|*S:—riu”÷© W”w²¿Xâµz͉‘ú/©ü€tCºÛì_=Sä“™uFï’@m‰]ÈäËFcÌŸ«u•~´OÁ^o2#«.Š78ÕÁÊ7zŸòYXùz1Ã/l͘"÷cùÔï±}&=Í@â°XšaÏ=d1sƒ¾3ôJ8Þ~‹Y? >¡ÃDz¬àÝ¥€¹ÄÄÖz‹”í»×NËÿå÷ý×ù7Pþºÿ:.åßø_ç?1€ù¥ÿ¾þ”_<=ÿ ñ´|¹ÿò:Áœé1KõFЕÍ8$-Öl¬­Ò+P9Æ(‡ä¶®ƒGñ“•SŸIãÏaP<Z¥D«ô Ê!å탟(8@:ØE¢òeö¡ƒŸ%ïG T.jq†î|Ÿ}þŸÐßhҿʤÿÚ8ú?ÃOfÎkcè÷3ú‘Ás-ú?‡2¯úµ(ýG‰þUÿ-ýw3úO^5AZëf(ÕÇ/Ž&ïYd8B‡þgý?ÐÔ…î¥ü™R¶‚ëlFæT3óµúxb¬OAß2Myª¯tì#޽Ûp”å£ÖL¬(ˆ2ì’‰¢Yapd"tôï߀VØNø0ûWÌ‚_`|SvÉ= Rå`›înø/A£•0È– Y ËÕ µ…Q@؇“VfËàÜLhü*gKm'Ý8Î`R!ãßàçAVf™x@hü‰ƒŒcšñõ¶EÜ Ÿ8›Ï¢Íjibý,›³|%<É0@™¨·«à‡&À/Q唓[èד¬*ÊëÜû† ©¼>ñý†O¨­ %;Va“yý¼œCÐ HïÁ‰‡ðz4I3¦ú”1¾28ƒ[‡Ú>t+¹WÃ=8ñÕ†â @*õìœWL3õPï›_1Züpà ~G!Nfû•Pi{–ªª2ÂÛ>w3Ψ¬ºmŸº9œ"žef!{ƒ Äö/MF°©¡±LÀf‘1¼y…{÷;™2!çr0† ~¦r‹"ã™1b[<#† ʦŸC¼Ø6˜‚±ˆA ͈ÅzA-·±¼WË-V-ï>½–÷ý¬¥Á³/ãjùöÄ× l§UoBÎ+Êû½oOüʪ×i-„¨óÊ»äø>„P üÚ`è`„¬ñµu;جÄÐ¥Ð9‰ÑˆIJÿý&DíÎhBos[YzÛ 4-ŽSÌó©oªlªÓ{`â›ßÍÓÖhcÿÛP<âÏ™€ £[¥B¬VW¦2uhûÄÍ}íxA>ȦÐì 2<ÈÞö2uÞb©3¦ÓMðÑÐubλK^å·×èqâÁÁžX’E¼xíyA$!‰¯ÅÐö¾÷LÚ/ O|Çú/¢iÿÐÄ ,Å‚æcèÔ Ô—ï)¾í™úò·l1}y§íÿ°"‰¯ç™¸~ä¹~äÿŠùa ìŠÓ@¿¥sM§ë\£¥sQ;öÃ:wìkßeêܱ8ó[:×yºÎEã·¢²Ð~XÚj›vfm»–;Ó˜ek,hFµd É@xÒh9ÏfuG%üà5î‰'XP™RÔÏ…ñ—(î9âXq«kŒÆ’¬1ZùÊq·©tc| ÞÕ»×¶ãDÚÙìÝ¢ïM‹>ŒG¬¼r£hbðƒÆš8Bïf0L=ÁZ ¹™uæ0ô–ýÀdu¦a‰(û™:™Ù¨YÌF5x[`üš¦*52&o1« {Ðl%Ÿ¾¾„ö1&Á„…kUÚÛ>Ok85Çi³­[†í¶Ð„‰ûÄ18òV+›1²9‘žŽ“­z ¿Ðš§Â&ÎÆ¤É˜††úmÌ?ôE<ðŽmŸºÚ¾p)}Cl67bkd<}ˆ©éÜÁì¯ër'®[«¼«¼Ú¦sت¡¬ö¶O`FÊ}©ìnëç`Ò‡‰ êß3p™õË&öÍR]-¬=}• ظÃXÓ ò'bâZÔëFŒªàü­M›¢¹Ä@¢ìe¢1 w„ûߨm¡ñ+ñù&H\ý Æö]ÛŸß-ZîCT¾Ù¨C‘z<†2a‰ÆÌ†øÍššà£”žo|Ó‡¶°¼f%€A;MtLš<±UÊ2Ö1`’ØÁ3?~£bÆÖk{(’¦rpN$2ÁVWL?Âí2“$1óõ¶Ï9¥£íÓ Ê—É'€å§8ÜÁ ¸þ}SÖ†Ôq÷NBÍfŒTÞ¥õèE€ð BrShÄpÛÄO”-æú6SÕÒ)LÆz ¬2ÉmÊ»mG=Øf{ê)ÝŸüŠ¡ÛFåÎ .þŠîOKTæ›[ ´2¶>d²m él`ëªW”£Ú¬ÝvŠŸÎ8ÊB,Z·„±uÓ1 [ƒÑ’±èf;`l]l}ˆ1cOTÀÈ?½ÔÜÇ0ø;ÇXl7TÚjˆùKóƒ¿{Ê14ÆÀÇdá™8Si“ÓÆö:®/TWÉÝÓÑUÍëV+=H‡· 9oyÖw²Ÿ#ìg?ûy‹ý°Ï$Ýr]àÀ-sänFùêŽHZu•¶JË{2ûÄÑJ[ï!ŒÙا”î¹Åû–Z‰—“¯ë#Gµ(@oåq¥´“`ލ•GTo'+Dÿò%À”v©R—r¢÷P l8Q‹Ü|¥ô¤ª¾c¡µ`Õ­Òƒ¡W¨†ñŒÓ Æ¡ÅûšRyLľ#B€¶'ûÖ•aL)£Æ½t)ÞNµ4ê3V…—JÍÈ¡Ë( T+è-¥²G)=®â‘]àÁtª£*½q‡0¬ÛkP¬Š•ªó{IŸ_S+Aà{kšH7N×ÿA „•ªßŽ6é§*ušúßméÿHF‡®ùõÿÿÕÿÓõ_îö˜uÞhüÅÿ{º"¥Âÿ­®ø^ Dþ[]Aý¿­+LÿÿQWª«*ºñf/°-¸Luno]2”ÏÙ8 S¯‹ñÚqMU_¦2¤R”´'ðïÑ•†ñßÔ1ò.gà°Ô«ì×6þàÒÏ™ùtŸÁt `iPz\yÎOÚy×°°v­Bc=àÅc[þîâ5÷ÿ˜ˆ”ÝBc%‡!˜ó#”«B»èÇF6¥]¸=—á®Ðþad9u¹ÒS—°ír ´}îäÇñRøSì–qõ7˜¿yDpÁþœˆÿDòú’–¢æÔ`Á~açW³“ƒUû•××QÂAç/‹”¯ ¾-+Þßg'+¯¯ÓÚ>å#„+ù"ÿ‰ó¥ÂxÖ½ ïÀt{½ûlcS‚øÖö¡ãà§ §Ýn[?(¬ù#Vìwxÿôœ½À1Z DÄM~¡·W]™w”±›B249…jS¹yÌÚ°¶¹êMgAÓÝ 6]«f°êÅÇ™˜ÎRK=Ðc;"•ž²Øü‘J<Í®­IÆ»iPMßA²Z¬Ðµx‹dà×èÍ@&…ÚáOKT7Ѐ¯åjmšz-…Òò_Æ£³BãY†à¸ZN»ñZ"$§>áÝ[ì“]«ˆý$òte&4zíSÌ>3Y麷‡€’œÊ—t}Ý?üs0\Òú|ŒÈ83(5•UÕÚkÚ9¦ÎHg«¾û>ÅàF [&Þ¥®|\-}BÙÛðµÐ&wŠ÷׿ííT g‚ç”°¶Þ,OüÒÎ\æÜé² ¯©¼HwhÏ^m–˜­VÞ7–x’JL\¢Ð˜JýK\¹OC¹¨€X®·Qüã”Q°rBù*®à"(dv°²ii9ÞàªÍ²J>W-½¯áC*ù•<K–žPz¢%¯´T®ZÚ¨p¬è'Q†Ûlnh¦OßªŠ¶>{ÎáÜÝkÝJ»Žx~ƒ©E¹_ß|\{ãÒÁäwÂa|Æñ­á3ü[‰¡•>¨.”I)xH?TYå´µy”wH_韰8£jZÖj줤m3Wc@­q+¨¿»}ýKÚT® P>®Ö:µøv•²[u€Â{T‡ZʯV3JäxáùÝ€2ˆ£€]y¼\u« ²ÚÈK(Uía±l(¯¶}´8}[K,þ%€ŸÁ?ÊÂó2Œ¸p†":Ÿ;­ˆ}F-¬Œg[×áÑçÎ\û™ Xz?T‡¹Ï}Gø3×ÁóÖËèzö;ʰŸ¹Œ§žýÏËØø]eøav{†2ýe¤Wùg®‡öÌ.ïgŸ9³¼g*`óéü¼—=óuÈŒ6Í|°ÿJ{ÄÄæ‘¤TãnœGøë8›tájaë+«•ÒÏÕ™«J?·Í €%)Z­V~¾:o”˜*ïvªy0Ýø\ÿ{pž]ß…öëÌÕêxùg=v¹Ýˆ¬VV~9þ¨„W«¥GÌ“ ³õ7¤ný¥žª`µ½\Uaž9}f4þ3ís¤ƒjiOpn®#t] ©JuH#ÚÊÀ:7*Þ „Õ'Táñr,»ÐY¢:)غ›nŠt+øõcñ–p0Z€ ‘›ùªH¹ =Â¥^ ƶòŠ´GòKÃ$q$tKµúÉ ’ƒÆÃ>éÞíùú¾¡.ü]{VKdT„½Ýüµ>¼êOàyòn(àf^ÿ5 ©Òþ •º™—×ÇU9aáÅÔš®«‡òÚÿ-QÇa `´âÞMNX­pæ¾½6-XÄ«|`ÌJ _±ÜêÎ}ûæÏå“„MFE óƒƒ5<ÝÑáÆ£·ËÇg«D½âîÈG¯^Û#ø–ÆM$gÇÜTtž¶™JhPP\eç´}â .öÙ;â¼ØJÂ9L‡õLYàTnæ•å.ëZÁœúàNy[Yˆ“•_‡nDå¾-ÈUh0u+á3×ùý¿ÆÖyêë|[|×]Gõ}‡Õ÷î¾BÌ2ê;¢£ˆê«Œûá _óWVá¡Xá¹ãy³6­ú71µÙ¡ß¥„¤Ûô¯¬x]0_º9}¥x–¶!‰È3ÓDvÊ™Zw…6ƒ>/—t¬S«¢vGm®"¶Ñ)¯,§¾Œp]ªLfgŒåšÂµgï«îtw@üã×k×-%b1jª*Zp*mÏuP·¼X&È~]p¡[I Ýð"^hҢ仔|^nål8Þp"ÿG ÓNyþd»zÓdù»üú|å¦ÉÁ¥+”¥ËÔ ^¹SÄý;× Þµ¼²—»˜“RîJ Þy ÆÅJÈÞ,çƒÎñÙûå½´/ȧìE¾12¶!EZ‰“ÓŠ÷Ê¡2èïCÛLËLFÇ8¼#ßh ‰,ƒº…‘q ðÅÕ‘p7$Ìð|GB W-M®;§Ý9&¦S^iûŒØ+j©«É3Z¨šöŸçÅÆ¦€ ë…h«Ò[r‡$Ö².ˆkY'ä}vealË*yúL-ëþSqÒž‹ ˆ©ÌM³•¯åWíÊ•³±«™ (–j}µª›a r1Ÿ‹k_1m#)ï¢wNjÛg¹êÓìœ lÝ+l=û¦8¦÷N‹nâs{…ÛÀcö "÷MéÃÞýMÎ ÊJ-Ô Z´wÀ$ –DÀ˜˜¸¯Ð[€aÝä>·X ÷eгå¾|ñÒ98Ô‰Óçà$J̦+ÜijæàrŽ8v®ˆˆž98Á‡Ì‰LõÚt5F«CKNyGþÔ!G@ÑB’z‘òAvoà„˜ƒïà`è¹4ð¦˜v"¶NKâj$4Îæc­’¢µ苯UÝ ¬>‘¸½@Z -‚¡ÐjB?y$Ú„•ÿ×Mh¬Ù„ª¹Ó›P÷w5¡î» =ß„º¿¯ 5Æ7¡[Sâ›Ð –¼æ÷VJî;­ ]Èš°éŸØ'Å´#aÓ»Ê(¶-u…žÄ; ½¼Ó^É9¬«ÐX¼?ÐXÆþï™Ë“ñe9nf츋ٺ`;ûø f2âWÍv)HæòââœiÄôÎsÚàµ.iÛ)4;5KŽÚM¨y¸·÷j5­žå£vù•ù =çÞ¶~:æÞ—‰yŠäþäu_™‰÷•Q¼wJw¬ûB]âV†  À5ªÏ¢Ö‹¸á ç=üÆúY¥Ü¥”ó­~݇êóéh]_Ü 2TåAûw˜’FR‡z¢ÞáÆô_aøu…´Q½#“ž÷#LÚ^LùÝT„y~2¦{–`fÌkø<Ï©þj&„œU—OÀ³4?H{‹èØë®V7Ï¥obº:o˜Ã§¨ãÙ0;º×ÏÕ‹)=,^ÈŒr™ç-ÖÓ}ÖÓƒÖS†aß›j8œ±?ô;RÃÐKÞ¤<ÿÒŽ€Mªû¦ÿòukÕÅd]€M”‘°ù š ­3s;ÅYÀM੺èwG '0Ý£¦=Š-¢ŠWçÂËz)p¡8”‹ñ%t+v¾ø­$ñúY„Tú οnæ©GYàRª\*ü]Ê+‡”÷å'¼ˆ¢mû<áàÑdÏsËBÓÐfÉrŸg}‚Üz•þ"¾‚õœ‚¯7êÁW¼_×ëâëp¹Ïޝõ Ü_§7c™&˜Ÿ]aX ¤ÜHV˜… RÖ“f!ƒ”! Ãnô×…ŽÆ7 1xj%«n„ôByÅáÎNCÁ«nîMåãìýKË´WwÁ|HÙ]­æ=Ü %AÏ(Œe.º½ûk¹‰í€¤Š;±4»¿B)íѼKh%çF#œ¢|•}2˜‘$¿bW*œ#þ)Þ®'/µë|_—ð>+ïR3Uö›÷r<ŒºT]hÅû Å¡ÉYÙo6e«éQ«=õ›Þ^¥ýÊ@XùZhLå,ŇÂK•ÖßaÎ-¾ i ¨îsÕÚxêú×+–‹´ˆØ'¦Vh?à+”ý—,*¸~¼¡ŸfÆ?6aÊ+´ËƘb‰—0í‚iF?;P_ua¥)íb%ëÄhõo¢Ñ÷Eý5§UžóÄux3ÈÝ­%“ð»rR~©U!\¾a%ìxfØa—ƒ@e0¦Ò~ÅòÐ…‘¸ÆsD9©ôho\‚“nºGM„VûYG"iBÏ)Õ‹3±!¼„»Ö:àÃÒxÜD7J **‚ù/lú1u§„õ ;ݶ®ç3±ŒFÑ'`e7Rš+Œ{P¡õ>`æ3S0¿ƒÂµÌa$®óÛ[hăãZÇ8B—ö€x¦"¸€`ˆg™)ŽËƒDÐê*z!Yí7C„âµ ®ÒŸaØã1ri=£ípX¾Aï„°n˜a(· †‚ht’ä/À‚´$‹Ì>L¿&°(ñDY¢Ô «DuŠ:×vA›J'4Å‹-ƒ'FÚüiø”ˆ‰€‰ fDP5ß¿h¯÷ ^×sÏœuIøNÏ=+×} ¯é¹ççë¦àd3=÷”¯‹ÂÈaîA By¤çžû1W àìiÄÙă’k†üÀÈS­IëÍåÃØAÖà›ï’6šË†Õò•xXÛÇVbDaì¼öÞds`…$W Š‹Íf_¦ü)êNZ\ ¹wã3Ì_½-ñi3J™b AÄš; |#ÉS°Kgâ¯&ÖÈyÒ(¹“1 ¬Òí»©_/bÑÑ゚~‡˜ôwè7ÛkWià/#³þ\M›Î`-Y)N4 ÕÇÚ{Û륇¶àþϘšØX>¹ÞoòÌzŠÇ9;`³Œ©li\€ê±qJîYIÛ<˜ žlÆ!tô9O*cx^_üžbá÷ZÙ=V–\@wRþrÉ…ÉÔÖž63Œ¸‰J+O¶rŒR­,Ëb*êòä¯âk-HGîµ Õ8âÜgdKA¦1³˜Uƒ6c4ÅžŒ©Fɵ>‰”XLjÁX^õ9^Œà·° |érg£m; §cQ:€]ÑÚZ¥åb™­’ëQ†V¾žvó…iE@$yLú½NyîѤW”CIÊ!iK/2;gÕ⃡÷èB÷Ñõ?36òÌŽÞÖ)0ZÕÄ2÷WUìÇ[tAkÓõèîXµâ{yQ;✽5þoh Š'Û[oöý3vš&{G–ª›Žw¡ @©GoñÌæÚü¯óÜS¡ÅyAbEûEóÛK ¥ZéMÀ.7íw¨¿IÁ¢“Eý:roÅó°â˜ñ#VÑ Å`§òeOT¢§°oZajºZÅÒyî±(¦™ íã™ÍU 8 Dæ}ÒƒŸ W‘m-³c¬-üKc¾¡“Þ¬ÁšÙê4€¥ 'Íl,„)WFM»Š§Y8œ^ë­,„­Ì ‡ƒ³ÉÆsÛá|(je…€ +¹û#m7/1–&MDµƒôà:¤€í|>®ä´HRM- ëÄš‘\*½Ò ,ÍÃYP* Öâc±ã‘ÄÖtò› Ÿzç‰oºÂªX¹)PÚ]·Br†2ñ^É5 ÿ^p¾g䤲І¡b³¯»ŸtèûXO¾Šñ’ |÷#E¹KÀ“Jéféfß-ðpdpè½f¶l¹/Eð|SŸgÖäøsB°Ú ÅÊ2ƒdùÌmáú:eêê\¡SÿL¬/Ô°æ±ó(¶fÏË[³š”°e•°÷•°þufÙÝt ž:U(à-t*pêΆUxbävz–WÅ9ë§³\ä‘ñø#sv²£È‡‘‚÷~xŠ mç=³FÀQàœêsvYn‡rv?ÏÖ76ôš´v¹üÀâž7™Ê2TaBtŒ>û6 lzü[~ƒY'1#x¦ Èf4SÙ»ÍI™]’û‡”3J§KÎÏØ&³ÿMSQ*W˜y‘…-^îoBF®aÕ[H…BËÙ`¹}Ã7U:nG EéS:ÂdÃHšo‡*Hùò—ûŸ$yŸæ.†nš[È‹¬’k¨I1?ÇD2}'ÖS¯ýèrV±ö[yEOY_jfû`ÚzëI¸¦/X¤÷‘ŠUt%žg‡ËnãˆR¦ŠNž·<ñ#ÉUˆ3ÌÐDÏ‚9HC1·Æ¦$¥Kz°Ál–XY•¥YØÙiE]@3ÊãY³³cè°î—ar6à ©p¦;—L2aR/õ-BÙ  ¿Mö®¹]¡òû`»ª,ÏL9ð:E²,hÅd6BYhrª>‡)LýBå‹¡9øj;¦ °[QÌ•c$y¸Ž Guau™,ñËì …Óg®÷E`ê÷ñýèüìsl#á9ÙûP¥Àg¢¯ýM@ÎØ}f^fqžC׎uq`4Ö?bsžÂî³­kâeQlmßí<ìEôº|c »/†/Že‹bý„ù5+·ÌìÃ(³bfi:‘'©³%6­M37ÂÞ5hê€íü`‘)fSErݰÏ×/gåfÖî3CK°Vîåè:݇Ínìã#‘hA£·û<²ÑÜ{`Êû¨}bx¢=1³“µK®÷róÐ^u>'¾BÕU}l^0yÆlgf{„±W´ÃÁ·º§Ù;M‘HAÂ4VÒævè’´V¾÷ˆós6™•NVtl-@pÌwçEÁ©ø†fã´9KKSˆN!зó KÌ÷15óF†±ÄÎ^ÚiäÅ@4²w3{\yÏ]£‚@AŸ‰øÔ ˆd© Ü4¹6i3æ¨@”Œ$k½g±æþX½ŸÛˆèHl_{Ëùë®T¼|;±Oê·É^°¥d“-ᘉ ê‹ÑZJd/gÝmž }r;Þ{ܳ`„6¥ÛsO®€ó¼Ta<KÏØY ø§úâǘVô!‰HïI·ˆ»"­aœz$þŠrï\pgè°öp4afšâòM[ÁzWB™É¡b!k))f£-ñȺÄi@k[q¥‚­{¬·:H1Ó18t0GÙh¦u ´YPèɰZ XûÀŠÌ>MúÓ±Ï ³¶<I9H±ªO†ëÁð*©ÕG1ÕÅãAØe ’X(ãò™Zœ{ž× ˜Uþƒídz舡~©Ç1¦nÝm0ˆa @Þ"¡!{*àB@#q¥hñµjh]”Xw1ùË„‰ú*ƒº£ý øg˜ÿí„xœH'×.6Íþ¿V]0,†òN6 þ?cƒÿ·Œ¸ÿ¯6FÒÌAý•ú»‰ð8VÓñбf!zö¤Ñ™Q§ü¬pe_fÐÄ6@-ïõê¥ ‹@ém3Á6¯ í7Þ4JAæM#í iÚ ÞB­>ž¨gÀ¹f Úà$„?Q©Îz‹óü›N ‹ð½am)ìQ²œŒÅ±G£éÏGî¥7±ô§…q´ºð‘Íô~*½' 9£÷¯Ó{²¨p²´Œ$£ ŸCÏÔ/±M+Â7óQ²¯´ð±h÷ð:gèö"ö(ÚVƮͨv> áÆ/ŒŒæJZš±ƒÐ8kçØ^+ôµEYÒ³uµäµÆzUÎzÒúx–®fSr§Ìòít¿™Ïh nÌSŒ@8òÔëdÑë•î¶yÉ´Ø–/ œ»Ð ù[YÏÒn¿©—ùÃçáôɺýñ ¹È*G!hyZ+k)ükÑ cm¸{äõú0d+„r+‹7?äI~)Ÿ*€ÿ=‡ú'woïŠ<‡Zz7nàÃ0‡úKøPàSW²¿"”¬þß&¨÷¨g>Öï V¤¸0€Z€¥Ë³©ÉV½ódŸó –ٵΦ>û~€búA»ÔkïÖIå©> Â)γü]Xº-`=ÈÊWh¾9ù¥õk@XèÈ˧­võˆïG ”¥|µ?ó\Õ׌ŠÄ¡4Œn6•pþ}Þ¡4œWÞ¥á<ŽZˆ>5ÆlT;¿Áâ{x@?“€·ëfg$g]îúÕg´gÛÜG $W))ºð|‚i|e* hŸzèŸh€÷-ÕmÛŸ ³ËHÕ 'w¨Í…Á\í jŽå†}Ož:ÜEc%“´ÅßëI›j”gçk³ñàvúõçÄÀÑfr…Cmwöö–„TÔµú ~éPv§@œ—çM$y:l¬[ýl"*.ýÛXçnSNé8êßBg¹šè×ÑhtºЯÿbLK¡1Ý6¦›bLÙ4šÛ8  ^r«ÖÛ>¥>;OØÒ¾ÐÀF;TíA (6 L×Wõ³8®0.2¶y–gà¨lbT¿£1}öc:hL°÷ô1À €“öˆql~04Ž Þ™§þüA1;­ÍtM±•š:Ô®Ž¢Ümb®­"{žN 8ô0-Ýê›W|;ðéznÿ³øü•0—Ô"àGw x¤'UtPqxñµÈj³ÓÓ2-|"®`B[pC_÷bx 4ézí>ºéÊ  MîÆÓ‰Í CË7&%sПhÑz[eoo1Ì2kÎsè|ø¼÷¨c¸½B™· å×â½òËñBº&ZˆýÀG“S‚ÿ1´[kÃŽ“išØçÀ ¾Î“ÕÇSO%C=†jAy ¥#›Ù(qªfÿWµA?fGU×ëtÓ¸µ±q+À³ªúj¨„ HÚ<Öä|?‚¹³°\Ù<¯ûMÜõºWÁ´:=Š)Õvàkµþ$‡ôÌ‹—•Ü– ’+ ›öà³x(”¸×½0Øèý)á(§øòǧRç‹È55Ç¢Qa£ ÂVûœ\=r6íÀ·4mÎúUµ<Ûš¸O] Óƒ"MŽ5ÃØ”¸OéNC.äÂëNð­ iø¨Jc»×࿊‹ï¦~Ÿ"ÕYVTɹ'ÈcpRVðmØóÜIµÑrÃvÈøï6d¹›Æ·Þ¼ #¦’{R'TêgÕ̳¤ŠÇØÏ¬}ö9xRóTì=ûœ¶çv³ÉjÑfãì«Ï<$rœ+{×<zë ¼íXóÇÐÛò‡t;Wöò"Ì}nÜËj܆KŒŽˆõZ_ž«7áòМñ×ÐŒU5@¬+}•Gh´Ê¾kP…F­—F•×Ô¡ûOL ÉbµUïfÕì.°ãú‡ÙÈ…­ù0ôáïÈ’­ù*ôá%øÀçþmC¼V‚Êœ §3á…Pï«iÒWÈ´ ¤ÉZζâ"øjQΣg°o ¾¸Bw±Ð᪮§á#2è’õëpÎø¾ gÜu?Þx Ràn!†Šy–Z߆*‰m´‹È±VGëUA´ì@ëå¿­#% 43R‘ BlòÜ@å=ä&“gM<3—ëÏ .7 \ø«ûn_@ÜJ}2!.¶ÊÜá¿}Y¦‹»i( …78"/¡2ˬf»ûƒþöê ³ìÀÙçtñZ1c»6âí¨ ;Þÿ¶pö9”šÌáDòHžZÔ¥iÛqrW0êß÷§Á>1¢SFåõÝ1°U¶ø®<xÆ»tÆ_‰gàYÔõÝúµ”ÏÕó~<»;ôœê¹Ö^L†ipð‘èHÁ‹lÊPOªænGîgÝm>"yâífж"ËÊ3-l4Õ£;‘Ïôrä¨wÇLÒ+ü'ºFÂ!‡»-_r½Ä¢çïC6áÂ8î{ÿkÆÙÆ{Ã\Ƀq%z7|‡ c÷·¹0¢‡ÍŠK]ß7 raìþw.Œ˜$V9à¸󤦕†\ËÄë—7ÀÀ‰#Xx‰ûâ"r_´¬›ÄzÐwÑ¢ûLJû-Zû[È8@Ð Ø‚nÀÇЭñõÁçï–„£¾{…'ð´ÿàÜx«ûÛœ·ÆÃdÄÃŽRƒ!ü>ªó††“ß]w¬&,áhoÝ Yï)î Ý9yÂ8øÎ 3Bôzõ;'}¤Øé6¶'6—ÍsVtKëÈȹ NöéÎÏ’%¥àµ“ñúµ“ÑÂ:鉒ðÚI˜÷µ= ¯Ë3›ô*ßX€oEyñmþx°Ï²¿Sxè¹çÕNØAò¯´Ç‰ìƒr;ƒ•‚ò@@â}½¥V†iö­¨ejómÀièùN½þï*aŒt6 ÛÒëï ƒñ%§½ÛrBæ݃«ã?A=¤gƒ%¦ñALäŸÙ ƒ~ÈÇz[yfwµy<éA‡ÔòëÈ¿šu ÷êÅÀne {u*ºWÏG÷ê9½:A¸WO¸W_#Ü«c„{õXá^=Jw¯.Óý3Âý«ñžObíñ}îzÉ.§ú<æ¹îzT%7"œ"áwOr¥è^ÖcÆ8ì[†è‹¬š¸ è5!\Få¾ó<)*A&Ù<,‚ÒEK˜ÒœägO†‘î!u­«Î{÷rÍdÿß ¼ ]$‚wíµÁ»'Mßr÷äÙ0‚÷ø%oN€àñ0‚·‚Ì®tïaÝ<™VÔÉŠ:Ñì"zêw½BAôf‰Þ?=Z3)ßEö(ã Æzëµ’v ð3@ø~.Þ¿.}·?Äõ Y=œ'#™¾–x~] оñçDùuW‡H_âùòÏØ¤|_™ÎTGMfí¤*¨neç¦6#Ñ;‰DïA{ö—@óÖ š7] ^\øÖ».‹*¿í®Ë¯Ó¼ù¨[ðÚIæê6î Ï‡wü¼éN™&‹–%‘·óÚk„/‘ØŠ±xpxVI#0Æ.¼‡0þ'*ÈÓ–ó´t¹«ª°UÔ ŒPFAù$f?‡âàê*ÝjëÕ"„j·¶Ð}”o²HÕèÃflD«´ÇšTuŽÂ~f¶“ÉXzøv#a¨ý±xž%þ<Ï´ÅÉb nBc$Úp=æ™ÓìÝÎf#ºi¤™D'Jrâ%ËuCýÅ׋—óf8xg“-ñìÚ¹¬ti–iÀíD‚(ù”YœïE¢Ùq…™¥š=)añ_Þm*¿¯–´Ð±ú%ÑWF[cƒäú9I¨®3¾@±{Ìü‹~Ýó+›³Á‚¤óî.fŽåk*Úy^‚³Ã» ; åÉSÃÂöÁøœûŒÜÞÅ€&-‰¶øF#Xa†“¾ ‚(¥›¸ê,Yõ%`tŠK|_ N”šž˜[êW‡Ûí%÷œ-ñšÐhžÇœÄìíΊvI_ Ð0àƒÌ‹Ú=Q3sÔCSÂMøoù–‘ Çbš“Љ øO±M1MôèëmõX'³Æ)ï1û¡M#»ÛÞYD у0Úàÿ9¢Nf'’ÊiØ*ÄÀuãJ'£~o™ªñqœÕDt»«(Vž>Uè ƒ»€#t%1·SzðS’#€2é±#¡%ÉñšaFáÀÅÎLËUƒ(†<ÏPy$”%þ,·Ã¤tÀêp{§1·ÃØn²wxb†^St(¾ÑXÔ—u5Z§äõ;r?å™Çp ?F½rŒW3Ut2 éx“™•Á‚wp¥Ëø(v‰¬É­hžtpÞÕÕpÁ€t¶-—Ø"³wM_l›ÿJ›Gá Z}xNkõÿRZÍ´+ð¡t ’%y´ùOñÜc¸­Zq^+º€…õ½Kn>oôeƒy´wyfEÎÀ Ñ•E2”G¾4©È"m¾#€Wb•Ô–É„ Î>²ð¬«±ºwޤæ|3.)ÿDXù?^@~§;/4ݼ¢ÃcÊÚYb<]±L1oGº”œ‰âé3ø¼)ò|&_xcû ³¢£?`V¼½Ík¬Ý¿+¤GEÛx¹ûÚ»Ð5‡Û£0®›]åEÑ’«Î(,å¿ ìv· ½Óµ¨]'q½v•;ò½F´ˆØÍ;Ãì|P[z%³ã€Rl6Ϫˆs|6RYo$þKbG¾:ã0N£+àüi[)?à)ì·‰¡+áÅD9@„÷ÐÖé}<·ÝÝæ™çA@ä|@“E -,÷îß4[{Ræ!f®‘o í¥D#”ææ.ýîqêØ[‡õÙŒ?l<˜âÿû°^¶ÑÌíA†ðÓcžxØ€g¡ˆPgvØÿ+ÔÊsúÌÙ¥†5{4‘ ç˜Ð’”ÙŒÊÚ!Î 1­ºç¢ûuWÀôí)PVùÌ×ôÉiï°ù¿¢k¡òtô´4ïä ç4þÒF(_‰lNï1Ÿ‚‡ße‡ÝÉC𖝾ù‰¦­ðÍÒuí(s†.ըס7W‘…ÇĵøŽ¼?ÈÆ"Œ+áp×nT<Ït Ê®d|AÇïKí/Õ†ÿSûË÷~&ì/_´_b J¾Ûþ²öhq¨C`Lž!³Ù#w›íeꎠíeõÿÒöâþ饶—²Ÿ²½ÜóÉ`ÛËòŸ"ƒ™«úöÿ·¶—}û/±½üêRÛKÙ^ÆÁ¸ÚÜu+ÑSèça¶—,u¦$¼óûÔÜýd~Y6 ¯7Å3¡µ\§RGÑ.GÇS´¾Í{_OJ4CW»®²¡D>D’½´# m„§æà»:ýIýÇø@óÙˆ`|")4F¢´=CÙVtU›hÃGF¡™“p1æÉ@4†YOb5dÁ“©öÿ¤·7xyŠ é¿`h?…Å%úy#ñú…ð>ü’.&¬éFfeZ±2¨n ÈðžÏü×s—Ù†Ð74ŸrÖ~o±¬¹cüS ¨¯‚mñAçct>A‘ýŽŠ ‡#£Ø‹ORìE„Ÿ)íòè– RLD00¤<hXåœLqWÂÙ`ÆoÊW\9äîQæ}QcrÕ)STÛnMÛ¾Eœ´’X b‚WŠÓðKiO»Ó?ÃQzAýí M+)ðÿƒWªšÐ檓ÇÌ›/K©<óPy8ü4Ï›¯œæöC•ó"æK¤váJÉ!+ õ\æ!RÕ°÷½vÕâµZúßÅÙ³ÏKî$Ž·ác©ÁÙ4,O] B=f•¨Oà&ö]Iö$hVÚüR¶óÔt ´ÈíôÓQ|hžélÈçhjt°ý£zû¹Ø~Ãðµó‡zûýþßÃΕÜ;‰ùjÇ‹/p%ÜŽ«¨¹«ôæä[Ã?›F§ûúÅà¾l9êú@_éŠ6}¬À^[¾º2ðQó]AÓ6DrO×Ç3DO×Ô}Øþ+úA'Â!gãPŸAðœ•ë)’[‚•ë#–HîHz2ÁÓ…‹ød^&¹OÓSdšäþœž†”HîOaª Xl%Ð,߇õ;ÊHVÈ?{ÞE‘ºõóÖwÅÅð ¾ãýa÷)ØaæUãÇøœ¥yÌ·Î×À ˜Üà]C%n™RmÍÕÉ´w †Xƒñ£RÌIñ‘ºo\€‘‹=¯"³$äv6¾Ñ‘¥¾7Žül†ø³=¿Æ‡õMªb+5åçÑw‡ÉÆ6YÙÉC5OeãHÎø¬v06´îeŽÃK3Ð}B&©mèmBäçüX>*Ƽt]Šõ$ÔUiôêwïâ_¼¦Ó8wƒ5±$:àðÇÑØ€LÐæp]ÙéÊ‘ç.q]‰Søï°dâYåH0LÊEø+HËDIÙÌÎúw)Ì{ÁïiwáÅ2õ±o—y]¡¹YÅIPhEq@¶© qÑ%ýèù‘C='¼M¢ñÏðŸDý \陈¯ä±¢TÝä+˜ñžø¿Ït*íÔÚ'õƒ×Å&ÍÅa¨• û0í¾KÄ5¿a:'p=0 ‡wÛ8<âÒõF)®^b“ܿǃRt½/0ܱ‚¶Åz; Áo¤+òA&_uàœœåZu5`‹¯á½à{+˵]òµ»ð"öÈW{Rû0 ÆB»òï{xÙ%­šFwL·ëî[uyéaŒEĘWƒkÿ#8üß^!Daù$‡zë0À ¡‘¸P¡|úVø IgcKàX ˆ/ý>p {ŽÁY0—gØÛ@‹g¢¡¤|ˆõ(¼_Y¬›­e@ÁÖÿ%Ý ôÿƒìí´Bòà["|ÂÆ·éÇuØ ÍÆ. ùûˆèÈ BN2‚ì4\8,ù<‡ºKïç¡ËÛ4UÓ¨;¡BÈ/uäkä#£‰9 à«/ïÞàÜ£tÆöà)ÿ_Á¸·Ø ? 1…ƒÙÄÀëàüÁ y AÊztX÷ ‚µr?…³ p X0É5TÜ“œÍ•$ËYÃI¢—‰?ÛÜW‰wðhØý ±¨÷ Aжy÷VÍÇQcˆ+ÉôL×q¦Øþm|§ãþmq)ОC:ή Ž³‹Ø“Ûu‰aç²ð:îºÌ»ëçSØB(ÄN7´fªèú–;m(2®_é)6êÊû/ʼ¨Él)”Ó<úx ºBŸês~!§£ó̺‰¸—ÆŸÑ9þk›ÌÃzÌ3埱ó¨ÇüÚ”p¾:jk™oØÙ©íÕæáþã¨ÊÜ©µú ÿƒÖò±Ÿ~›Ö²i“b½Ä41Õ¸«Û‹êîk³ƒúJÞ€ï»7ÜñNr#~£ü$ ùiN0 ’¯8_8á<´ÞÏËWÛàõ ¸4° ½Pž@+[˜üø2ªâIÈWOu_–ç…˜²¥6P©ï]¢›­Þ3Îcœ~ç9n6‹ØõxÃØn…y¯âjSÎ9}¬§Æ–’ìj«­ôp»E/—k…çøV´hôÔD¤ºêªÍáßa>0€6EÈ+2èœCXdêÌ?Âä6ñ9Û;FŽEñóz`½oUÆ”F®)&oÍÀ…©_FÁ`þ±íYõJÚ»ôK}ï]T@ÍB¿7Gƒî㬿2ibû'VK…ÄÍÛ:ŽZ Qq»B㫃×BãÌËì­"_BFá»eîo²«ö1ú(êÛhg~÷û÷ï¯eÍ m½gkŒmµZ–VaͽŸ³ÜfžÙ\ï31û^åÝe؟غ.‚µfiJ+†¿†4/6h,1w?«/›ì±^ÛNuÄ4,¼ çe«7iŠà %$µ¡­iQÃl·9+Ì 8fÂ7WlŽ„:_Lâzøº4Ö[ÿuD±fB ¬‹|ûœvÅü•¿n þº~ÅM†_W-SþîüÌ$vtðýPxoZª|M&¢ƒ+‹ã°æ’À:qt°^^d“Þ°[ûF¬»–Õן´ «gûêOÚ†AY̳Შ€%XÇø¦%4Æ™£hŒß1¦Aó7”ZM´\6¦Ðü­ kû£‘Á|{ßѾyPûÄòêÇC/kßjÿÂÐPûå¡öÃâEO<9#ÃãEÇò±?ø^aSnÕçýüÎOÂç]zè/hžèY?œu;÷ÆŠåS‚Žuy#¦£³³Âj•\ §-ÏŠ§QÒ#¿E¢˜ofë/LfðRW†™ç[Øñ„à ÍÚ”‰¼ÜÊÎâÇÓL9Æ3¬<ßø(U¿þ=*ŽC#Ù1*æj~åj–{h5_ÁK¢V³ÌÃyQ‡Ó7Ô“{²óé#Ä06Ïôëéß1Ç÷=¢åú¨E ÿ(O‡A«†VÄ8 ‡¸k0Ä’{QÀÎÕ¼$‚/‹>c™ÝžÜη§Cðp{¾»ç.ëù!aô#pž­LC¤2ƒÑŠAÇèz+!?6» D‰s“™½“eª¼"Ê$N·vnD—'`Ì-Öý„s¯- çÉÈÿ%ÐØÜÇCD÷p8ÿ‹/ÇE:´Ÿ@ëPí‹ÔiŸúêÒÞÞÊÈQ¤=µ¨bhªÄŠ™µ¶4Vî¬ÄOÊÙ€âà‹ÜRMݸ”òD ™5ªwïêDZQ”€,™kq$ô$MÐí&•ÚÔ¾Š &ÝûË¢€ »Ï€.V½Ð|,„õ$ê×Q5Å€¶.E±úÇBÑXÈëÖ Dæ*$rÐÒ2 Ëz¸XSY€÷_2{{ ñ¶+ù$üfãÙb³×ô8>N|’Ð>M|ÏdÅfï§ñq6¾pkðiöKøûVVnö}çã‹€¾NïäîLr£ `yê MšVìP·ÃŸê+¿¤7øO†á€…mÝpõ%ôÜÀ_kêZ@íI4—ÀÞ]7ÒR9Ç m­—Þ8°¦>²±¯B9õa(R¬ni6Ö´c•MTeeX•Ǥ7ެéÄ*Ç*+©ÈŠKZ=½¦‹Ì®Å"s¨Hax+õ|"Z3¡{ ƾ¥äi GµYÛºàmšú™ïŠKÖ}‰¦T&˜{’bÉ==³’:F‚Æ”áÞHü‰·Æ†e›GýÉë™ ›ÐÐfðu;òÔôL2ÍÀ/ÒCo.t'–\ÁÃY3–ª‰pÕÉ–yß—Ü(özf¡Æ@§`ü郟+ꪜk‡e8µÏZãºgxE,Ù0ô8‹YÝø|‚O“Ç ÖÚŒ¬ÄŸÄG½‘X42" _›ÐÆgï„_‰gÊÆ³ö„ÖS5'ûŸòò˜Tg]¬³>6ñÌÚ/ƒ~$÷ˆfó÷£;p—>Bß}ÐËš)8ø?/0VøŽê|Qžƒ5pCB 았¯«kª à ٴ8÷Ï`…xª™0¤ÖÙ`!Óð ç9I6‹¬ ›‹#I™ð ®—7òN%ýǰꓔìŸzÿ®™…fg‹ÑÿWúáÿÓ̵ð×ìÿýµø‹%g—æÇ;Ï<‹u6ÃMÒ%øJ5ݶ✾:à0žf ÙˆevâO¼T¹UÆbMqYOޤ;uê5¯á«¯bººÄFy$]ˆgdH÷Señy6üIlT>õÜGoa®Cgœ€î¡ê3X–øHÊØ¢DÒµo̸‚gŸ|›ßŽÏ>†ÿNDû½Š¼´º=¦àôV¬a:ÑõC-4.½9¶=k”%GšDéKÐ=ØÄª’Ô×~;,£¶× cý% ÌüPÐ)H=zá[@ù^=žwá°<9WÀ²S§÷½íYêÂ_a kúyC×EêAÊ*Š2ZÂÏ" kd‡ñLt3J®ù¨8„‡‡mô!ǯ¥Dó4 ;£6£&¨ˆ¾êQ«_B‹s¯ee1©ïD™g5RX¤™}’äzš¸èQò½< ¤iõ!üX»‡—×vgÁf^ùÀÿ<Íêý/éOüðXýÛâ?`çü¿Iü@úUôF³ßO¿©ó~]çÿþ«Ø¯zC¯ön4$g©W| ß÷ïþðD{™·?М³þ çÉ~ç^kü~àè$ç§Ý¿“8qtÉd-ã/ ”(5öa”:@QpvLØæu¬Û¾±ÎÞ8Ç4¥›8ÓhXÁQŸiïôïç‡ÐerÉœñÙê–çu®N~61У®WýÚ3˜ ^Y²Ô§ñ·=F šˆiˆ X TnŒ a¨CÝü7ÄÐ8¡–ÄhÉ•¡¡Ï[ÎntpL"ôiæòf›c²îñèðŸLëí]¡&yÐ!¨ƒY€½vCq«äÂVΊh#°ß"²*¼õƒ¿M¦´¦4£Áw½ðU@L¨Ø[s%`‡|Ö׊¾3zrdôš–\“/ ßÎæÊÛn”\¿Æ5ß–™­êî-V„ ynoõÜ}…óóþø~Ïr@ÆSÝ"†#‡åªêÊ—peK •œ·^­ gðyVõ7_2ª8*\µqBg¤tiëÌH×UµûCIa`Oüpte1Å>dªo†+T¢Ü=ÊžjƒµóD2µÈ‚£¶6 –Õw¾˜X™…w,¾ß\÷ ] 0s*Ðuæ1ɵ.tbF'²W!A“7ârd6ó{fð Ыh—Ü?1ái΋Ú—­@l…ïùVnd¹¯ó ÑÌþj­Ç<“g¾~@ša?$¹â1Èá¯yu}³¥¾Ù†LöW³0ÔÑÍOQÖ«Ru?m„MQ\9”žx|í;Až¸ ì«è䬣(†Í|¡NbÀßáï¬n?Äïo€æ?°Ô`Ã?žY“™ÒŠÔõ'TåiX]ÿž¥þ=þIcEû1üef3 PÊÉ5Òv$¥YäqЪ¥Ðz&ÂÞ©N¤!fïÅôlì‡ebsqÒ×'³¨7ùXì5þ;ìüÌDÌxÚyªœ&Ñgy´Ö·ájÖnHÆ¢Þô¤šùfo´ 8¡¥fžkÌm×”võ`|Xzr Ê3C™×‡Þ~Þt¼ç­½KÐó‰%h¤à^ÐÚ¾T–»ß·b¿6ó¼ ¨¦UçaÅ[}?½H®„ð~ZE;/žÊ—_0³ÜVuÁÿ/:ä3ãwû«<÷iÁGffÑàÇÂIÐí°iXæ^õÖ(35óÂ鬨.¡ ³ÌºÞ³lÙé‹@&+µw&ÌQîN^0ƒçÏb¹/±¢0&ëK¸/Õ{Ǽ¶/ÐáÍ.N*j—œÓf)c­ç¾.ß[o}4·žX]ßb©o±áŸ¤Ì½k¿ÜmÜ"§ñå'`î³Ôï³áy8íò,âV-”Çs{Ý4ûÎĦ2‹IÙI¶¥ø&⦠,åi6-8aö{i}¢áôO4ŸÀX€08n3â¦å¶ Oœ×ºîošÜjÆæOÿؽ§(Þ& èM²&ª/9óM¿Ƨñ O[À>P?þFÓ’ÒŽocMS³ÓKL—§;æ‰I¬ÅKë·¡a,µ ñÈ ÖW6ŒŠ(Ÿ±ÖEÒ}®×<ˆÜA“úÑ–ÀA9"¡­2 ¥ôESæ©gX}´XY9'MR¹Þh#Ðh«Ç_Â6@œpk‡©NGçd«q¿Q«Ý¬ÍTÇ~ætZº9®$dg)5d I /5`ây/k Ç™lÇš;qV×_…§ït8}½òøB3º¾ó|ÔUØy†-á(¥€¥××ò{0‡ù°4¾à)dE|¬½^¼pJ_h p¾s-ê"îOÙüÿ`=¬ÏßÍ€wþçóÔw¢sÓ^(KYê}O& ÎÝS"ïD6ÉSÑ•ïÉT³=¹ðÜ‘Ÿ§þt &8‡5Õ”NàN螣ª)Yè{"¡®ÿÒA©ÏM@³žsïh(q‘FÁa żðY‰½d`‰<‹®^F^ËòÐ<õƒ×5­°×~HÜ…AïGŒöö¼-ð]C´È¢æGèƒ} = ûÔ øíÿup-bhx-Àó=Ù„‘x3»` ,eŽ7e6èMI&}HwÎ[¨‰aGÔ»ûôK°%ñò*„ÊRùã‚Å[w»ÈoÜ’ÐB:‘éÒž:¼çì&OYKžRc _®Ð¿ Ç/‘ðEù̳aŒàN@ŠÈ1"')êÇõ› M¼d!¼Ý§$¬y µ#kž†•ò‹«E‰ zà-Cï0“ºj.ÏhîXU3|Ï™O¬x }+Èo}õŸ›\-ì ~QF¾¢&¢6mpQÔ#÷Ó@·åÉcŸõÇ£3ïP¡è;ÎÊWÕD°iOëöc«UOssmZµ±Æ”õ|ΊcùõMCnäöŽtX³˜Ø/üNG T~Vžúé'¨YÄ›=MC‹ÑïÙÔŒqµÉ¶êVÀU€E~€àø×´¢NÏâ± G€bH ®66µäñ5¦ï„¡ÝX.! ¹íé€@fìûÂûŒóØùR`>©O¤Sl8¯èòfÌÒòÑÐìíä«Ù;|>Ìå€9{)R[(&ÞàÑÈ™U³\—ס/èYY½É"µkj$pa-ƒìØ^é¡é#u–d|ðä>–“K¶á„XpàM¬Höß*ŽòÌJxÑ(d^|.…¡InNa€ätàgšW>¯ d€±áªsϪBþ§Å8häô¤Ã^ÇVmÝ"_ QAIVxQ­©h‹lˆæEÓ1§,q+>K¢zTÄ…ª?iñ»Œ Õ£,+èMŽDPXš“ÉÒÌ3]újÛ«Õõ}Øý¢wÎú…Άª*Ô'JݱUP£å‚Fâ¤S÷Ÿ›X£ñ‚ñ„hˆí¦H])6á3dza©Z[±ÏEæ»ÀSË(&“×=+ˆË"”é­Á@„JrmCzHÁÊðÆå&üES÷ $xô2$ÐQ`½/|[eÈ7b‹ñæo[ë(¾M¬¯Ö7×ó`B J”ñƒ rîÆÒæ;i á¨úäôÜb¹%·b ¢ªåÛbŸ‡oš¬7KNÛo&Aè·Í  :‹èõÝ`®ï0¹5¶ÃGHîo`ÚL4õ@ÍÝSñëNå6 /1èH‘\à'U΃…Y¶ã(4ÿTir¸¸Ÿn Øpôé^hï}Kýû6üƒ áCÎk@“3øVš¶˜¿‚¤u¢¿º5È…z6hù–Lý͇8¸ÈÆÝË阴:ÝØ°…—Y)éß1•€Ã¯Ó–šÙ¨AS^>JGß{­>^ú£™Ñ÷ ‘˜D·Ø/¯ã‹%îžE3µ0’¢|â'N!hÙí¬¤Åwæ›PËfß+ðkþVóÇ%W:} åªÃ,•yêcèŒåûK_pQ~÷ªí·aÞ\(¡®zX¬ø VwŸàîI•Ç.pý=£;±êÞè±ð®|1ßK¶)–o‹¥]Gº¡ãÀ4¥ ßSg‘ZâwM®Þ¤ £¨Y>*0zT'(èˆKëŒÿ¢#:ÕA”üu¨ðg°,½'T?L;›ó.~õÕŸú÷aTÝáÿ““1æžC³Ô—ž…áò´yøsêó 1¢¿’³/PgÁü½Y§^<ˆZZx?yFŠ&"Õw¡:Oí1lòx­Ì¢ÍT|÷„CMzVAvœ©Þ€uý>Ö“¥^Mïé}¢×‰ÝRc«<Ÿ%O®<»<<¡.*”îÏ€pï÷‹ß9ÊÑÊõ·+Ö˜*/Ü)¯¼ð9ªòÂ/d©ò‚"¯¼°^ެ¼P ¼^³Ð\ynNuf¯ˆ³ZYÑ› ¹îO3%W¦xºYr}O<-‘\[Œô”.¹Îè)Sr¹ÄS–ä.ÑèÖórÉKOCr$÷bz l>€vw¤ErÍ¥_?ÙyÊg…_Óé×/vNâ¯IôKÙyä,i£_ëw¾‰&gfLßY 0É…ü|ÿ4’O<ôœ"¹×Šž $Ú{¢çb½ç稼х=¿H¿þ: z~™~=; z~~ýz@ô¼ƒ~á-ÕoáL»jE_ýtó{ˆCrŸ¡§¡0r̾Z³ÐB{^vTVœO“àß™ò5ðïÍ’ÛKE‡Í’Ü»éi8¾8q¾¿ˆ7)‰—õÆÿ¼¹YyW¼Á¼þ¿Áƒ€Û¿à°KîR@t‡€ Ê£' @´„ F]@ˆ.D¢ Ñ4@4…žF@óÿÀ‰½B| ˆðå­:Dà "|3]‡¡‹%ˆXÀMí÷Þá=Ùôíâo’Ü/?| O¾ßŠÆæà‡Ãø¡\|€Ÿ^üYŒ÷ìv~û–Õ£„£ãí;QeòijŠ.Éý’Ò^‡L¾é#ë€$ôT&äù•‰sY³\ZctÕ±÷ä óæÊãXۗ¨PMª‘b7ÌUºß[;(ß Ûñ}å«Wá÷ã!Ë!u~à:4Ï„Lñ³}¬]]„Æ&ÿÖãÉ6Ö5›ñdETÞ§!_’³{–©ú_ZóÎq‹¥Ô’%¦Å“Û•£^;eûnÑ‚¾ÝžÂت.tC z%”ŽZ³0=ÇùYwVžúÃ}Ä#e©+àaÍ'ð!OýkÀAøÌÊe2N31ªG„¶_ª‡Ò‘ïÃÇâžÖ‚É,‘Ü_Q©ÅÖÔâvß YêÇéú=Aɵ/Û÷ìÆù*:7ºëV¬”¶6Jo¼ÇAírhw%œZÔn^Ä‚o¸äº68 °³P:·MâlÜ’ó_Ð-9‚À´g§½?z0Ïbz ò[‰vÄÝø$©˜+°b ÉÀèZMI7S Ò>“ßRxË²ÈøÇXŸ­ÍîÄ ë™‡8ôÂ6ÜËŬ¾h"Œn;~Kl–ÜQØ!¸øDDoä°÷±.ºÆ¥Ú„B£Å4Å÷9ª×‹ˆ‹ï™ù¬i¤(¶ŠÑè‰Éæó©õ‰Ø“ú0ÞX^p ²”3Χš‘øI#ìvî¹G8e ÔÌ—\ËCß3§£”‹…ÝG ”Qœê¶¹¾c5—NÍŠ£…ר‡ƒö‹¾-^L Ü«ýeéð|µp“0)ɇüUbrÚϰêLr$Ÿ¢†Ä{óï?hNMÚ*¾¾Zk²ÿdø¼úð½ê>Oª×RcÀ7šÒÃ}GáEÀÇøêR“}5FhžÃóãª0†)S3Dlßuµ¸ÿÄÛwX¡å;ÃêN€ºÇ¦ôö– ªë;Û¨ó¹¨Ó/¦lìï…)h³˜Ã—ÅUÕS5ãÄööý¢ÿ’þ–÷îïgTׯï‹iMY’ïý ÁþX¨õZÀ·]Fc¸É\øËr--¾Û*Š…ìuQ mtÇŽWDW·ö³qkð ›g¹¤õÚ1'abØ_ægóŠú^Ô቟)Þþ¼"vn.j8|f«|ÔµTÄ…6`™ m´%«[yÅt}?B²<Ù°í£¨ÚTñc»ÝoÑ< æš²Tö ZV Dê0ôç׬yê {5­t.^%TßzÕù6ufSŠv£¦Dg«C@”‹ÕG$¹ŸŠÀ8sQâ®û&ñCD(?,ôý0š ÐÄôä,µaÚ*,Ü– ­D tw<‹rŠr# rL^–Úw¿î=â:kîj¸á+(S!Æê*êVÞçöÀ`ÎS¿|U…Ý!÷'‰ú6…<7jEÕ©?ý ¥Ï¨ç«NææÂÔÄŒfGªNíÇP[ן¨:9s¦xûqý9³'fDÕ§’„ËTÎbüø`‡'Æ—}êò* ˆPàĵÉ v“Þßâ*ÔÕ.¨¯h)Ú:|wk¬ÐìMÕ­;çðe¾¼²­l™UÔÕ½•T 4±°`.a¹ªäªÇŠêîYÿ¯ˆêýˆUt¢LÒé.R•5 =¬‡n€¹6(r¨©È–x|íÏÛÇ·MAûÊayÚx¦kÊTM‰Ó”XM‰5Ô•u±4{× c2:í©7’³C7[ð„͹w:ÙÞµLu¼ $s kõÕ’m ‹ÇmBÿ¾dÿCP6ᨳÂfkô8´kr­4–µ.dvÕGÚÀ ŸÌ ­ìJÆœáJ”ó3úȸá–݇³“" ¦Ô‡Qˆ› É0 ÀÍ÷co¾W/â»ïøàÝZx·²Ä÷Hà],¼+å~NïJ`äðn‘(—Iž7Eø¾AŸ«ÜßÊ.Ûá»·ÿ§-¡' W‡`"Éé6„EŽyHµ±ÅQkB*‰¶c 5QpŒï«Îýœóv‘óS ¶ÉÄEhönd$ƈڧbÂjï7âA µà”¶fUÄcq5ÌFS<²xʉtHzp£&¬@[q[`Šjs–úæ&aqî*Ù_ðûÝh¡0ü¤ì˜Ñé5ÑxÊ~deÒŒÁá"ñ2ø_0 ~aÕfj:.–FªW‡jËWó1ÒöϹõA^¤V@h×þ²i(:â]ÔYŽ"üùUx`Xxö úÈvAy×:¤:ósÿAŠO¾½ ½Ù·ªÝð¾zU¨ÇXéÌσػšM–ôAñøhU»±„t=t¿û>=TKXuÞ†o¨öºá¢/|lÞxfÙ<÷ßßïY'±÷A¸c[Û± ×|2Mb{>Ï×v`çyl÷!ø£n{U…XÌYgrvô{¢†p7–¬ï|aT¶ÞÁ>â;pœýgŸÀ³­ø“ïÀF<÷Ÿ=KfôsšѦG¶ ``”^1~É9Iß»¯_uÇ~«¥jÀP BM–s7͓京˜øˆáÃ+áW}ŠD_î+`ŠÊGršSiOmˆ©ÆÃÎÙå6éÝ-7ÇþÃjÁ°ö»"Eû±ûɹÅÕfÆßÝl€ßlkÇyÝŠ7̓|å°ò(^>^‹Û±Záb¥M¹Óᦙù6,\ÿi§ZñTëÀÉøœn|2‹f ×›?{ÏjYÍ%6Fz·{]½zblÎ ³Ë‡¯NÜrB)¼OÞ<¾8½¾/.bÍ'¯z~û¿¢»BÁ›JÔ,OëæŽ>>¤%dSݳðß­s. '3îq×6|ÀÎ]¼áLi”ºu=©F0…×`"5´tQz •fK~kÒ¬•5Ƈ·¤¢oÊâ §ê@JÐ!èãW±mÓ©û©ô3ü±mø „ë&Ñq u¼:žÂ=Tx¡ÕkˆHdy ,Õâß,ZpQ ê›fêÐïá4<«ƒlG㌠ë.Vtw£èîåòÀ8'ñmT¸ ÔÝ(ê+ø ô…¿ÔÅ¢/Ù··Rw‹ú™gôÁÆÐ`£ƒ½oÙ†ÏpÀ̽ßXì5œ ‹®¹î'ÕÌ©ºÏªÚpQj³I€@ñήe÷³­Í—‚E Ø.„ªÛÄBë ¼´.0æl#8 è”CÕ}l`pª]!z0{/ÁJ XÂÖÀ"Ö@!~]Ø,XÃfaoØ,`ß0ð…Š‘³„­-DÝ¥ ˜ CØ,ÍÂóJØ,˜iê.›¬âs^܆z›Âdª£>Ñuk[?<É×AÛ‹”Àð¢IzDÌãÃ"¾›¨>ªßÀWß>8Ÿ VÕaW é”7™.Þû<¢ÄYܰ¼>ø•.¡Q˜þÚ !`X¡ÅWyEAÿ©à2ù~Ž%vàƒô ¹çnüe‚ÊÁã7>ð¸—PÚÑéH/G¬v¾CôÒ(_•´»›'Z¿Žp¾LMzw²/Ò³§‰Š®Ÿîî‘?t\%Ç)ÞŒ ÔaãÙY_éKÁÓQôõ\ïqŸ“Ž<¢çÀGOF ‰>ü³æõ¬õ ˜ÔbßÍš ¡zŸËptQ’ç«ägù6jå¨<<ÔB–­ßÒ„ ¹h¼ä"fÀƒß|+µX o¡¸„6Ñ­Ì_Ï!ç`ñlÅVrTŒ¼ÃèkA¡¯¾­©C@ë´1 Ð—žt¤¦fòXN÷ò¦Ã?LX(p¨óktëO³¨‡Ðzåg=xm¯“§ÙÔF¤?i ¿â‡O±å+JO£Xrd’ë+èi^,pdÃSŠß/íiMqž¿_zh;Jq[ë` kÆ{ÒZ_̘7¬<*Åcþ•´ç ¼ZžÚ ¯ç [×Ů܅‡'ÅZéL©Lœ¯œIñňX»ð¨¿Ó;Ýw!ú?òbrvƒÿ´w(²’»PLð7x‡Õ_"ûÝžÐæZ’Gz‡¢È» /?ùÍb 7~º wŒ3¼¤tW¿Â—ïP ,ìÞbLuÿߥ=ã*S(zëa£‰1ô\]áw"ñf\#ËÅöò½k ­èj{7Þ±Ycf?¦Úî¦8Aöc+ÝuÅòb·&g8½Ã`>'»ŽÊ³‚Ýk’ˆ–J˜Œ²¯ÇÉŠôÆ{|Èj>kaÕgBiÚ#›2üMGkåùaë&ðŠNnïðEÛ  ,Áˆm¨Ã.êvä«ß³‘/©¢[nÅ (Ê1O…ʌΦ¡ùLQÕ¿ýK\ä~ou²1þw6àýëF¡®*LpW3™8ZÁýÿsñþË4÷ÇH„5&Š }Mmý)³´§Ù¸HiÒ`è–‡±æz5:¡!a¹Í‡õ6‘]ÜòqÅyÖ¾šgž¯:Y×­i×Þ'ô°úÕ,óüÇwŸï‰¼eõ(K„<aíU§08»³c¾ô—¢oêO™xæ7õC«N>P¥iÆ`™ßHÉý†p=WÓQÕ…WUéÎä1¼'õéÈÞÞ‚íµdiQæx#ñ‰x­˜Viçd$\fŠu°pCúÂü«æþˆúOªK—a¯w`%WAƒ)Æk'iξHùZgßy”³o¨ä‰3ØóÿâNÄ]Ñ!>}ãï("~"†«¿Z{œ<§×¸Ô¯o0ÄÛ?®ÁÈ¥Ï64Ü;DÜꧯ’ÙÄKî= Ú½ƒAòCƒq@‡B» Þwh0>»þD«ø˜°¿ZAú-¢žÚµ" Ýêß~ ß É/êá“M”¥ú DOuÃ`#󡵯ôñ {Qm¯…b›ͱéð%Vt¯µ&´…“ñ¢nã…~¡¤WyÜ1ÆðcZn4ER_?vå™MÿHcEÝXû};áÿWЧžçb8!Ì eÇKmNÍò*ÅQˇ‡|«tÂŽH¯f}<³Û”Û `Å·ÃNgöv–{Œîtå9P¶Û®‘1J¥)íx‰d ’ÓLÕ¹7Ö9`f˜ƒåq±±FðÌvw‹’ä>ªLÁk;EÝÒ+\QYÝ奇þõ+p8¼r<ËT”Nuó+ØÍ¿¯ÆLw:´Ü.ó¦øìÆ]VŸÉoƒãºûbÑnQo{I÷ÞWFòÌ®Êy ó%W)0¯™ß‚Âå jµcܸ/ÚìØôÖ…I¬±Dr]GJqe…N¥›Ykùlì5‰ Ë£`ÇÔŸŒèG!ýHç¨Â}”øMÀ€MÄb¡ÛļÃ2(2 WºLŠêÙ„7NØ]ñýxµ‚¶Ì]—óónM¾:÷%T´Î‡ñ$g©7ˆ‘­™Z4̲æuh3_-]O¦*L!GpŒ 8±(§rSzž:ð¡tn8ß©yùYê5ÐB¨:WºµYS¯.§[ðü®Nº,ÒwDfã>IB#øåPLŠyW§ˆý6þ ñKQà(°ÒßläoIY…ŠOô(áE¸Q‡²É¾Ïð—{ñç§0öŽøc¨=qžìf™Ç‚3ÃÏV“þ6üïÿù’á#úIù  €ÑT¦Áà?!­mã ùZ¤YêÔ?‡Ý¡N_§ºƒNüÐMNÉóCP+ßÐU¦VwbðÝ}1@Ã"¯ó8øS9Ç *Ÿ¥ÞôCqYŽV½ËÅ_ ®y‘%p'‹@'ü¾€Îìô<}N2aŸs6 mxµË¢Ý¬þèÅnƒ•­œ7~¾|³ÉŒùÌaÜí—`ÜÉHXd*ÙÖÃï3³¹HÂ4åÿûÂ_KDVƒBC½çºro¬9xÄjR„;Ôû‘¹®%ðs¡ïºüy$2´U"i«Ä…, ·T4-’öžE0“íYê¦M~}§~*øÿ¤³“‚æèª’ä~)ìÅÜŽ£ÕYaÃ\Ú¶¸McÕ´¥„o: °…µA=}I$q¥;Ía&ýI‘ä*°ç2WÌFtnhDWè´uîI®v3:l5N“\âi†äºÞLјà(êµÛM'3Îpikãâ)E{ÉíŽfÌKh£‰î…³:·™Ù÷ë÷ÂtVMQ£ S²®3$)r2‰ÒCYFu£ôFc’ÝV1 £$çvI}Þâƒk<ѱ.é• ›ôÆAãG¬¢+½f’ë¨òv’¢Ê¿º «‰¸»V™Î+ºa,©ªÀN+Ëçò¢8ÆÇ’ÙˆÛ¡É¿¡óA»ï%4_ŸZ‚|5M°³¢Û m­‹ÄS2ÉøUd7pÞî¶ oø¿âvò@ùíušbYºij`×ýØ®™&±cP¿ÅsUiÏZpÎ{­@‰!L_ÖÎU+|Á>Z†áz“|W „ÌW_¯F{yùÔª&2ÌôÿE°ô_¼}'Z!~Ëz’ìÍÒæã"_ˆÖwœ, íÐ5 mI¹íec@Ž1ßÄ+ŽÍ1ÏU†¤Â«µ_Ã?‚Ê6/ Ùfm†¥÷’Fþ(Û ]Íç-¬ú\x³6‡Ù-2`Ä)a`…¹TSåôßâûÞ%㉎РSusΕþV}<ïÒxÞ ·Àa¼Är%e•Ð-ï’L“O\K»Gž¡ùÔ‹úÕl^t,¡ŽëGÚÄ>èýhYB[âyVÑΔβÑ517G4'&"|œéP—pSr¡#—ݤ͵„Ð8ƒQ<³³Æ<|Ðvá‡{‚ÓwFLßL›Ù•à¥p#bÊ˸±sIo\ૹu}Ðh'/¦©ÄºCÔ^Öm-á¹­JN…ªÇcv„&Ù*lÆÿ謰ÒM û"K™§(KgÍ$àvª‹}÷„ùCàŒ>nÐý/ôùç™­l´ÿwúŒzí­´ªL„*w»lÀ¨Øhß ÁuèôÚÑJŒÔ§ãD 6ùJâ<$÷¨º±Ûú/„à)†áZ !;ÝõÒžt#yh͸êÜFÿngSTEtÍ$ªšˆ‡øÔ¬õp˦VÕ>ð¿5h<—^3 èï&‚b¥SÛ¾Ø ƒÍg¦Bæ³wÏ‘ ö–°Ÿm?ª¶ª¥Sµ{̼x:+Ú‹ò²ôð (3ïÉ5õ|h´×AÙ P¶„/4úƒ`R9H¿Í?â8ð;èî¨øóž¥†ºã¦* Ók|ûy²þߟ'g3þóy2Mœ'kzBçÉæÿ|ž`h·ðóäÙàyòHð<9kúÏçIöÿÙyó­ç ú%ÓyòOÿ;Oæ_~žŒE?6:8ö‰ƒ£ŽÓ‡à$ÿB¼"Û‰«Ó*,Ë6M ¨jðt{QLéL`oÄé°Hã3óÆÓ!ƒŒ±Q¾}ëéy 5Ý×ß3h7³1—žt6\¡ :(Öèÿúlȃ>ÿíÙ°ë’³áÚ° ƒÎ†âKFÓ¡çp6¼(ý_ž 1ÿû³á¾ÿûΆ+ìÿíÙpô|ÏÿÉÙ€Rágó—œ ÷ŸïùŸž ·ªüoÏSèlè½älè:×ó?:Þ¼älxéÜy6¬¾ìlX~ÉÙðƒs— g¿åløð’³á{ç.?îÔφU—œ }— Éagà çÿÓÙà»ôlÀð©@³2­ò"TRØB!4x®åöÄ\+ÈjÒæG ä¶8©Ãj­Â\c¬¶ûàyÌj2ýsjòü\†aË(f­¨ØjòŒ®¶·„ÿa1*&Ô˜‹¹6É ¿R°DTÂBW›ÒÕ×ÖóÌ( nÒžÑñÇ=©ÆÄ&9Þ³düe™ÖL¬È `TÒCwÓ¶µ&Ù-e&KY½Ÿ-ÆÔÜGXO*ã«‹¾P†,«‘ª3¿¨¬øâvP~þÖoHÂ$`k§%´TVø ò1áŠÒ]có,˜©±ž¹6eALÝ8¤ñÜÞß.íQ¾Hì†ÑIÇ@߬_Ô)íÉü"1³ÓãÐä‡à´`Vß øìj“÷Ò|<î¯ÇÙíÿ“ ?ˆ<·Þómá=C¿±—ô MJNº×÷¢àÛ¡M•ÚÜ#œƒ ô8ÿ®6É-nH `.5špÿ°¾ž\[޾ìÏ— -¡5/²ô¤c%÷\XÕ|LBÏjwÛúQÊIa81»"ÔðIbè=ÂM/âY.¹Q§ç숥€ç–ñGCÊcph9–‚ÕÎ$C¡Ä~¯×G};_¼Êݲé§:Êó²å wcØÙ„žžÞž§ÎûJ¥g‘8¯Þø¡.ÓS™‘P¦0iâ±|­'&MìÀ¿c“&bŽ%y¤p:r¨³~¡iB¥L]xZPƒ‡ú@ˆduµ¥’¶úA…>º’ÝãPsŽ +|y¨rWw¡ï‹w…o†þm|+ñÀokžînÁ4jÔwîµÂ|ùÔQîçÉ ¹ûð0yäzRçåkz",ò$¾‡}•÷AœºìQ¾¨À[µSÿñ•ŧŽاŸ’ÝdÍÏ`ÞÕ›óWÈ÷xE5óVq,ô<Šáés0–CmZc÷:±XhCmºÎÚè5ƒò,N…‰˜×“FP™ª´UîºM“D5‚jq8Tí¤ø_ °‡ZsÎqëÝd%>‚óἜ…r¹€@$PÁ9i!] AêP¯ºíqˆepK–-w~8¸„;áà: ¼þpkê‘[˜8u@Œê £!],æPlÒ+½è¯Ì‹¢ÁhŠ`MÍu2ºÞØÀy#{>f6Wî‡"~J3¨X½ixgX#Ž.Y¾ñ~ÃÀÀ·èD¥¶¶<”Û;Úz{ƒ9t1Âq§CM<‹xèÿ`}ÿ#£a¥¿™ÓÐêáвb˜½“®¼ß†ï¤çÃÃsg‚xXª…üôТXø…Kõ䟗pcRŠYzðea¬}-]г°Çt¾x[<‡9fáÏ<³g1NB¶V£•™=™Ç²µu–gãt‡¦´óÌv-N¦c0S<¯€F;÷Æ&š•Yh²â0…xqlâÇìˆ<$ƒ’¨ÎE©Cû;GÅV›âùÈ þ¯aÂ>S,çÿãî¹Qœ£l” *'´ù®%§BÂŽ£Ý@1Wøðî_Žúó‘޽ƒ‡Å.¢ÒZŽ–o-(«ã{‚ ÅC¡ú›2t{˜ß2;³UÖMø¦—È ;Võ?Ñ´ªëÐI¢„.«g©¯߬ô½‹~+ÙÓùŠí?{[1'qq´g£™`‹-ù83=öŽ,˜Emyð<Â$n*€ÉæWò"Ø ±IùfVl.Ê#|íhBÓ,)Ï$Ç¡­‹Qg/Å…å™¶Ôì™7SËÖâÍü)h˜iŽeCÔI‰8™è!@.Kav«©‡Do=2™ò$gK,¡vÏ ”´>µ½õ¨AQ ñµ¡ã_¸Ùî‹Iœ+¹‰Gv_¿ÏÌob÷YØ\ÖÌ7šG’ÚecÛhãcÙÆèq§ð¶ÖÆÖZLÍF+3É&¶6ÊYaÕÄMZì#Õ–”#¹2p£¤Úˆ`sœuæÞzò?Jµ)ã{‰yEáÝ:œ¿ù– yŽo\…Q#ÿ…¿ÖßÍ7.¯ï‹`­ _È÷ÁFJJ‹~·­b¿¦ì×Êbµ²(O…Êí‡ò=ÖÍÙyžEÓ³5¥•W´jùfîˆâ‹m°,è2ë`^5…H·5Y¾„QÖß ÄÛö]¦\};  °»‘0ÿ6>‚]u'€¥ZXK5Ã0XªU1ñÔ^t¨Lj™Î”ˆ„¶Tɹ{} JøÒÿ%€€‰+1,.&‚/¹(øó²%Ìs¾,Éâ[ñaÊ‘T¶íN*p5Ö[fu·0Ï=ôb4¾˜ÜÛˆ²¸äþ3ROé47Ödô/ßJS›a¹j+¶ßÌè/s¯Ÿ`[†_é‡Q/oFS!îÁa·TcìÃDz'=‚wa¸K%Ò÷û­‰TSz(¿lEØø²Ï–E±e6¶ ¦ÈŒó–=‡§Ìâ%ËYÊt–=ƒÃ¼mÝ¢#Ã" îqׯ,OæcÙ÷côèÁïÙZ¹YÛOH©šÃŠ~*}Æò žoN¤&`åø÷ð’¾,‹—Yœ× 35“ç/Y?š?$$¸ìœ|-+] ÂfÞ×€§§ gI¾úF* á!Á¬îÀ¯Ú,‰ÕØaÖ0å 0ú©¬QžM •  V²„•g…0 € zƒ…%² f¶ÁÆ6XÙ†(ÝOû"§½óS³òψ–Úz³Ó|öTnò”³:xÀ”÷ã@ÇŸf[ïÇUK<À<•8ó3·âß,‰nü°.V´!*zéÀúÊÖë‘ç#B¤‡5†v‘Tý:…ÊÁ -#¨?ù§Ü³žÿæ1b½ÑK€ž¥•Çäk9sž*’DµXýI÷[’¨ó²¾í~¿¤0‚Žt²5žpu<á'mS_²<0¯TרÊ2Ìóh–aaÍ4½úÄ>al}†e,aùY0ý‚H5( g-ŸìC¥3 l6Œt!]’tO$uò³U§ Ýx3"Jn y3Ôqe¯‘ÀMà%ôøVàD¦n“á7 :îÔ¯Ü41,Í<ÍÄ\z¥þ‰ða²ò±ƒSÞK“\¯À:i!GÓòùÿŒ`ü´± ê/Dˆ]àÐÊ-Z¹Ú%.q‡LÛÿÕr¢y‰ÕcfËh÷ŒfpÊ,³Ä_ÏšŸˆ÷„z´ôWe©#J€G½yÔß2û—…µJî¿Ñ \GšëgχùðÄ¢[L&¶¢ð­,·Kw‘\ùâšÏF6åvòBàÅ7r㵆áŒb>þ•\Ï #ÏM*²­3ñ"›óB”ô^¬Ã ø‹lìÈ¢õ6„çV–èl2;ëÍ‹6œ…Ol‘ zÿ˜ÛQÔ…’ÐÕtYOEµ0™/;G’Ý,ÔññÍh©y/]Κê"Xf‡~½M‰NJ³ûMüYaqzé;F>Ǹݢݫݬ_7ð}Ëv >¿q”6æå)Qxˆ·fåd«é#ô#ÄL+:Ëë$=¸±?Óæ1?’Ø'mžÂ‡jvÎ.Kì+ÿƇÁKâû`Ìž#`aNô`¹um¼ÂÆËÝZmr»deÿ„üe'òO:ÿ„‘­{²ó`¦œ Ós(•D×åü“]U›‡é£^b ¸¢Æ{Ý=òpg…jT†Ã qkì°òO+àYî)ËÂl,Ë̲à_œõ¬(”µSg@\yh þékî°%¶êü¬½C]4,Œ’Üèåo ËG«ÀKÝ'mÆ0ö¼|M¿b$L-'Öû=‹aWå ž„aWïÂp$¥YxÙrɉ7Œyv´»Ù¿QFó”XàfæPó>1 °rÊtž=ƒÁè`Œø3ÙF‹'Åœ¥Ý£%xìßdaH¬2 ˜Ó³a¸@¤¿‚ÀgóѨ9È6—Eò+üÎZõšø ¾eD¬=jϲԞ8®¡CÁï®u¨«AœM.Ôò%vœf¦TB¨E0©íSzÿº_™C- U“%¤r¤¦th°Åô€AxßÀW~K ÞÐAGBÝjg¢Az¼ŽY“áxøèªSÚУ11«^Õ>ÊN<Ú: ëËQCpŶiŸÄÚŸž`“J¥Ã=‹€T,ÎŽXÊz÷t¢î³ø¤ÞÆXÔoLPÇNEL!É6¢¨›M ê6x®¥É|%V˜äÇ8“üÇÂòYzœæ`r8 1ŽX ¢´'ÂÙ·Vr]‰.ók¥G.˜ñáòHõÅëâˆÿݼ¼¯+½‹·Yî1² ¥R?a€êýHz¤†~(¹Ö™ÑMO–œ}Ó$×*ø‘â<¹é}nïÖ gBOú¼ˆ]o·GÖ¼A'rf‰ó–rœUÕÔ\wX?ýÆoªúì,œøÃª>GXª4‚¨p»IrýÌ„Êi‹ú@<ÒK&.jG¯Ò¬VËXsì«%_˜+’"±FÉÕ ¤ÃsO$»«•)‡J§ç©o×^è)°­¡‘„ç§S©9+/[]X….Ÿpí×ÓÿÔ 8]u¬WάnĘç|ì¡U£,«¹5ÕyÒ‚—øÝx›²òB‰äú+=ÜG =|_r=M7J®ªºŸ•Qs¥«­ú ò&¯hÖìÍˤ‡1†E&ß_¹! €Ü|ˆ½W+íÇGb`snþ%;‘žæª«ª|á±wòÜýêˆT Ÿ!˜`˜[ãϸuo©ú ýý«P¹%¹¾1ˆI{øf*(è›§å-àù«ÜmÅÒÃdJÌEkßëÖ”ûyÊ,êK‡„x@ÿ(Ãnàby0/®Mü±Š?Nƒj~vX$o„5îå ÞÔ9DrSåM%Ê«^}m ù]­¾Ô‹¨ú|ø ÑPHñ®ùêÞx²Cx3D¢ß KF”ø# ÈˆÆ?>0z•ûè¦ëð¼Ì6­Ì |WNÁ²í^k¾ÚÕ+¢„TtZ¾-G+·å«xÝÏÿÆ-±ð ÞŒé¢iÊ‘‹Ô´ÜŒ9žì–aó¦R„TŸAègœ ó˜cùžØ¢Q–þ·&á\tö9L®º(™›µq¡$é§Î s†ÒÎ78½ÓÙ}ó¼© EWݬp 0lQ–7õQçNQgÕÑ+¬ñ¦ÊCw0‡ÞtñÅÞîë¡ø6þ>³9ÐìöMg}c¼"{³³¢Ù$¹6a!7¦û~†ÁϤ=A¨‹©M¯ïËG5YÃJM¥”ªBËŠÃc0*Yr¯IC½ó:úð#&íÓƒ4ŠÜ±V}SS´ÒÞváÿª–Õ“Ó“2¤ª‰À @øÒfTÌôUG]Ljïë 1B¥jÕçAœ|9ÁÙw·<ÚÙ·^roˆïW"9;©–Î3úJñf =Gøî¤vœ}å’Ûx!èº'9)B9L¼Eˆß%Ÿ¼(Λû¨2,`Ρ[oÝðŠ{»`=Nú? ä†\NäMÞ4îi‚ÑøÛc´7lù-okZÍÓ Ñ©ÙÝ£ÀiºŠ§Å€4“f%+ŠER6ái±,-:YÆ.˜FEõÊzò¤7[óå¨ëo„ãn5£Fýü]lAñ€¼9~;, Zõ“Ky9”¥°†)Ͱ±z’å?0Ƕ8ˇѶ‰o@6˜ûq½ 8Aòdç¾X6N½wÊ%êwJm‚G¼ƒ‹9°x0™\Bìj4ÏŠfÉ@êÊøƒº¶òc:ëäi+±à ?²hýðÚš!ÕÆô”EzÑbµ, Z?× ­s€Œâv[|_¸LÉ8›Öä•…òqT’?¼óP`FümϽšGm|Vû 'tvgFOŒñà°‹R®!Û¨°hZЦî 8-ãëÇ4`GôË æ=$ó}(± â !µÚmÖUAU ùyÙÈçbŒ_äÐÛàP$6ŽTMëÿDœW,™Ec0Yæ{n¬¿09ñÄý7=`NlZ7cDg[¹]Å)f aFøn¶8‹9–8¯ùšf|Å‚Ÿ¡²ó8Œß`CRä+$˜©±ÓRcž06þÈ—®Ëœ´ÿ¦¥Yý*Ù$ìGO2PcLQoS®ÈÉÖþø´V‚XÌ”¡¥±Ü Ô§³÷¨Z/•iþ.aßàÙs(Èõùu:í pgsJMªñn¼‹FÇpYðÔÍëpÕcÅ!ƒVð•s‰1tŠpmPÐ5åc‘ lJ«þy^,_#Tñû˜½’QÚ4æY4=K®Ô®Ét%UJ`<Ðû­‰BgàD;„rÑ5¹®øÙ&Ê—£FÉ8Q1Œr³™*êØ¦Ø+yºeZºUu›bŸàÅ@Xßøƒ"‰Ü4º9Çò¬O$êK-=‚‹t¿%±^r’ÔM%LéKØ&Ë4j—]€=ÎÒÍ"Ÿ$OÏJ"“Q>)ž·äe÷[’(5U™Õ;IPÅßÚº9ê”gŠc§ǰõÚd¶;”NR¤{Køh¦á‘ᕇ£Ò°Î—Ž\ßV*DiÎXÞ¶4ËÿOÖ'”†¸ìÂàeÐg¾'ÊÇ¡Eaž5A}H¼'Lµ¢¯ ß*ÞᙆKpôJê”H‘­îÏxÀ’H-¬›/– Ôx Éî@eD~¯[Ëzg°ñ7cþ4/.Ez ¬†ÈÇ(RÌgÖE.<ʧNJc}9AŒUÂ×›“Ö[dàã§­a}Oää“sËõ^A,°=ø&3+êfç¦M}—åpè´Û9|°W>ЈihodçÙ¦%õç'óMV–—Å ™Mà ?˜êHÃXf·ÿÃZqBO›…^”'î¶°Ó`8–êœ6}pÚ°æâ0¹AÇëèG˜ÅÄ p²” ïI6•õ‰ÖÞ’ú5‰'XߺÖž•ǼÅêkX]OÔ-°½›å¡4Rг¡|ÃÀ?I±.‹•¨`/ñg/”½ì´Øü/à»Ç‰!‚ó ÏAÎk²wûßrä娜mØš5’,pñ'øZ3/´ —‚ þmÅÊË XÙ 7ÍãÑJ€‹ òhoê¦ €(_Ë‹ Ñ¥Ÿö~Ÿ<Ú/‡ñiÛ/çÓ>­æ2>íÕï…ñik.áÓ®¿çßñiÇ+i…—ði×^ƧåüO|ZϬeˬƢZJð«¸R‡Þn°G3÷º¢6 | [6˜O 0´Ä§½ Ÿïx5˜êàu&Ò7¥ÞËÃBú›âƃ<ôë6顟bVºä*¹¢êµl*+³VÔzaR ˆ#Úôæ^6ƒ/¶$6—Y€Ñ÷ÿyÓ‹Ø„<—Mg‹§óÅq×j$£ZO3+³°Å UıÅf¬côýçoã ¼?^2>Pºùb+Wº1[süûì<_dI<]ÁÞçWÀ¸NÇ_½çðFOËUã÷Ñ54_OËí9.·sý…Âi>·wzfYhŸt¸5£:/¯OµPk½èó#l8îèÛBÉ·ÑuôÔªè4v{¢¤¬õ?@ϼ°AϸÿiÖÛ{"ŸW¨ÆÞ|ϼáùꦫP;ßiÚƒŽï…@ùøÃy9ùê±þFª_Ñá߃‘ï³îÌñÚ;1c•:z2nÛZ/æ•\"?ñúÛLeLÊ“|'Ðû1õjl$-NÄPÏ3™`"ʬ0ÙlcS:Ø9:²ÔÓ³5m…ÿ8Nfn7²`ìtïÇÙ¦²éyž{îÌcÊ1õ©;ôN¿†ÿŸ¸#/RÃiЗq2,‡eÜh¥e„\la°² Bg³V§2è§À›&²¦ cwšHbHa6Æ$ ¹Ñ*mFÿP`é}¼0f–j-Ïš¬çä’\Ïà—€’¾{/¢3ÿ{¼þE^/ùŸâµUzÖŒœVÿ“µÿ3ÜíI1ú÷þÿ·†ãv”oÿe¸ý^ñÛˆþNÜæÅÿ·gÇüW¸^ü_âöØ™ÿ ·‹tÜÞUô€Û/ß²ù…ÛÖqû™ïÄí§‚¸}wn‹È§¨¶MÚZ/½q@Ï9×AÌYî1É}‘äQ9*m–ïïÄ«ÖÛóGY@T™ý†*»u6±‡ãõU‰½nÐokK£þ =FZÚÖ×uPd):_4,IBw_´MlòFÖâŒ.²&÷Qå1*tŽ€J  ŠŽÁç˜T(í–nk¯+‹ýŸá9±r–ÿmÔ1«¿õ¤‘>Ñ–³ôMCŸ=|ïK¦#zÍý+‡Yè¢më›dÕöùB±Hã'[jæÅÖÄScEíÒfô™Bç\ie¤ôÆ-©Â*¹6"1ÐMÓÃà™TöhàKãÜ-,óÅpü#¾È›jó ç·Ê¶Z¾Ð’xöé¯kÒ>ý8þËTùÒé¬yš½+Ñ®JÁMjWݵS7Úeªîå¼èìRSQç4{;´X °a?ĖƱqx ²x:K·"“zΓ­ÕËj®^¡Io„ø@ ëdMQM¹Ù9ê×…(™Xù&ÜYµâ Ï÷cÜŒç{äxb$¨á0á]Ów£È}Ý”óæ·ø‰|‡ÿMÌ;Xp§#°§-‚¨7êøzq·¶>Ù´ ö´ {:öt«º–:×÷ôžÙj‚I>»8ŽÁÔU´ÃH)€K–š|#úk~—ꛚÏàL›¦ç{Öß™Ï*ZÕ¯Vè›úŸðàpfM%‚røJ”·ÝGKto Œ×èy?±¼é,o* ͪïya[ß«TqHr£“¸'"ÂC/ã–Þ ¯'ê¶Ø{ê&l×Þ±‚gv¸[ô¶§ÛÇòã/˜Š:H_‹Á!ÖYÕÊïSUpŽá ›iµ¦È>öaú7X/X,_¶nç»ç¢qn啸gq_ÂÇ`rŸ3vᯡ—Ͷ÷uØl¸SÅ–—…fI¡eþ‘'ñ‘¸‡a¼‰ír‘'kOžëÐÍè}Õ5è´Ùç衊Â6»ÞMvãîQ†êê<ÜÌjžš¯W¬ôáP=Ž;ø]ž6‹E¤øŸs¨Æ¾µa[7SÍVǾ.¶.*®.óúõ4´ª•—ŒÚsù¨ßÿÛ Qoø±‰¢÷‹g1¢Ræ~ç˜4²ÆdÑÇT«êÞ¿áMk¿õÕ4ªÝD£ŽüŸ ÏáZð71 È+ôS¨bK1mª@fdY÷Í8 hk±´Q[háYÓÑeátž$¹*–Π,+[DzÌYuwÐ ‡bV–……«,ä±Ð‚… â0Uê¿ÂtnÄø”Ï'VºkxÚT–ö,®Öçit’¥Y×µ£Òõà%§ƒð>ˆî0/âˆÎÑ«UÒ¡éxˆNçiVd]Ä¥!?„Gé§¡þï[NÒ€5y®¢à`©Äá ç'ÑûIC.äqw‹¼}ŒP…%OÅp]‹1~ [K^ÂòHç©6&`¯pî3úOÓù¿¯ªäEʦ¨£P»€Bãßf»B/º:e2ö@é÷† KÜø •qVra8Ï9†@ò”ex6.”-:XZàD)‹acåaÿ¬aù×·‚²ÁФÇI´&܆´üчóÅf`2S`vÃs×ò [ú@%«|‡ðAÍŽâ)щ ÀÚ4ÅNXÁœQåK€—¸’`gÈöoª6¦‘í?×ÂEÅ÷™#½aÂú¯‘lá[ó¬i+’‹eÓ2ÿ¹°žRÿ-y?Ô(üžû§oå#^ìé-.@>ò±‡/á#ôð·ñ‘ÿx1ÄGf©#® ²ž¯ ùJ:¼ðRÛcA¡ïiݾ°3¨M ã1ÐGÄëºÈ9Yš”ÿ›…ü¿W}{пHðœ…þj‡úÃ-èÿ³pèÌV÷ÿQ À$M¿k€zý¯`åõ‘±¦Š9 *²oÊèk-˜c§ÏŒ©'è*D@o'çöný‚€AxåLGŽá n÷)²ò@΄zd;ùû:£}‡Îf/lö {_Õ)bºÇ°€ŒXj‚ð†àŽ ̧[XÙŒ ÍÔö!^üoÈ‹ÿå^£ #^ÍGøÿ°É› 3(6¨5±Y6³ÿnaÃ|u*Š&ÓR,ƒå³®vG÷¤ò¾È•\ï³ÁËHxy8¹¤1p¿] {jŒ5RR]uP²]>#½Ñ*½ñ^ü>Ê×%½q°÷ˆÿÝ&$Ë‘P×Ïzõ °ì½Þƒ€fM+$—¿á޼,õýt¼ÆLBöD æþyc„»0U^½¨6Uz#¯"EJlVº¥761ß‚§,?%öÉq@€¢¡a…~7˨ ù‰xVTQF9æ)4²¢.8 Û˜´¸Šh8“”neD-kuîµÐ¡Åý¯ÀÖ¥Ù1VF:H¤P:±]9/?ºä¥|Øÿ“†|§XÙÇ<×:ñ;±všóüÐuW²{?vž4Åïë?û, «/¢ÿìsÎS&v·üŒ‡¡°gÞ„uײsTzÙÒ‹gŸígœ_›œ_™ ÚųÏõ;½f ìqÊ´l);€ßý»a?Àv0ó%q–øú*ÕLøk®‰²TÛ\mr\Ír‹±: Ó GÃcDuVôaaèÃ|ØØ¡ÓC¦À}°…>D ò?¾S%ܥÓáè7hÙˆÛ󿣇ót 7k0=¼V=Ñ8ˆŽÒ_1þzøÞ`‚öÎ`zøò௿¿Œ²ðʦµ* ½]3ˆæ‡>, ½M ½½y-¼6ôa·ÓBŒêw) ƒ#Ãè Q§ƒ@×€[N8*èR\BO?àûHä%êÆP׷þ‰ÿ m™gùh#«°*§ô½-öñ2Ho,ò”ZGžª/{çJYÂÇ¢öt¼É‚웆<™Ý¥†lvÞ“Ùµó“/0¯éŒ‚B æH€I“"c£BSs1¢"L ìÔßCwR{ß…UYŸ:=Py4ÏU¡rùj^qŒå[1ƒÁ’Û;ÕÎû‚)&üÀQËí]ê÷3Køn%[\ë\%j¥â÷ [$–0ÌÌ~8Ÿ³ñ^BfŸš¾^¥çöã(­¨¥†!÷a°hnïS ¨Û>‚EÄÇå9X“|ÐÕO~‹R[4O‹ÂƬžfãø ŸÊWXX±…Gð·Ø*›4`ôÓ-ó™´ä€u£êÂÓ¯Œ´¼…s!׳v5 -ÑiQþ¿±A·u8‚o²Y#¬6­2;¬V•ëƒÅs¿ÁA”ã%UL‹ÁÆÈ3pe»`eU±²ÝjNXñ.,> ˜mŠÉÂŒ|·P³žEêŠDá'ÍšÔô —ÛUuÞœ Êå߃r†½[Jï覑o½¦ß+*ˆnà{Þd¡xI¶ 9ÀŠ9tûÖã#¶ûÕzÔú»BÓV¶>,÷—C³¦²ä{ŸÀ3L—ë)iïå>Ñ/Ÿyóò±¯B=jdÓˆÑTyåÞPÝu_9ûŽ(>o$Åñú×®—ª×ò?©wc¨^óÿ¤ÞM¡zûþ}½@îW»eþVÒåd©S‚]tÙ9ÜHm¡ñuÎŽˆ…Së §R>T‹s[Å(;9~ ÷¬A„Áÿ¯]Ÿ› »¯Z|}’ÁÐâÀ`äS^5‚Ð>dú{o:Øâ ¿[|‹3@ûW·KÅJo‰œÁÝ…é3üÞeH†?϶ø¾Ž-uÒ¿5Vü÷鑨úŠ…Ïî]”{{# u¿á^|¢À Ȳ bTúŠð uF”[xb•ïv|B4ó݆OàÓl|ª„|ÓHH„—¾)Ô ¼ô]Iï°ÜH!B“‰¾Ú0óåLŽé‚>Îʾâ]MD§]¯Ž4|B¾°¨ Æ(AxGQ‰u÷ÈcÕ«:.Ë냛ÄF™Ÿ²^vÃ~~3 íÝåói¯‡"fÖío¢ü5²ÅÝ£œfþ/5¥;_M±%eM+ÈŸ¾<•¯þVB+ý¯ÕçO h½EÝxÁÑvx½Toïƒýá-@+”äÂhþÊ`îá7 ‰íϼ8V6V½ã‚ŽúS‘¤Õ@’{)×A`^NéPuL‹‘’úÑJ¯7éä3Èo±#ÈmóUqæEÔ<;H¸(9ÿºDÓÃâ—MT…q‚L‡……rÊv+9Ì®¡;t|@ã–Ù‰Aq/`È•3;ëCsV~'êð†;÷Fî›åv8ç^§|Å‹:á°a㽑Ø<®|³w=ÒLÂá™ö®aMr”Z~| <¡'•av+«°èMúœŒ†Þv8óØQèa_®#/ØÉ©0Êé½d^Q’¤—öYë}Vå&ö! < >EC‘.ÇÅòûãâvÖÜ%Å+‹`OËhÒCX ó/w~øú(üdGœ÷ÇÅ”ñ; q7Ã$Òü‰òk±<;(Jßµ8,¶-Ý/Â{{Gá(EeIÀeé®ý²ƒÏÄ }òbÖ gd ¼¥|¸3(°MŸ!—ðÌÎÄÌyòûYÌ›éN{«™)€Þ3=Åæõ&œn ¹(õ!¼Æs ³Õy²;~?²O™κ¨ú“\ÙÏì”Îôó³Ïþ¹ ø\w ˜xû8Ë"¹NGùÉG9Z»°²×â™åAÙ ˆrÛW:•7¨0 ûYÔNàI࠽ǜá´2¿VÑ![€YfÎÿ ¯Py¾ϧ :¹a*IA<³+1S•‡c‘É\éb“àpëI¶%7ElÄVl<¯èÆ}yFÊ*Ð •uúÿˆöð.+JCÎ èy£½ ´˜Ð€o«\h5z“…õMÃÏÊÑØ¡‘úS±?‡Šõ¡7æ›àl4û«yûrPNk;]yÅ8*ŠMþÖä«Y#Ò©™ùÚaÑûy´»ný•ž4‹ž—·#<Ϲ'Ͱùä‰D´0±r ¾ù¤[W“+独)Úažf¦v•ÙYðÆHo,âÍ|á Žò&ÞÙu ò7'XOàwþÞÍz²¡ŠÉÿ^í%ýC/Ðà÷I+¯\…ût¦v˜Y‚-û>J8MUaSÇij‚Ï-ƒå]Ô£åZœ1FÔý×ÃÓŠ­BþÙ0Nyîy= y-ëA"Ä¢.ôd'—Ϭ)¶ö4åÅga®HTe–žj€ŸªKhE犅Î÷ŒÕÅÖÊeVcå ‰"`ï×O†®píÀ½ÃJÌlÞaÀ+¤¿lÊô>—ã®ôŸàE66÷6EžAëG ÄÀ%›ÌþfÌá‘>zþݵ0&ß-,¿=ûˆgÁØX#{Ö1 ×qYV.ãGÁe¼);Wñ£à*ŽÍÉÃEü(,•9ÎçR#;¯þôâù×øÜ• Ëw@·ñ³FžŒé°2]¬ÜøÀÊÅÄ©× •kÕ‚ ‡gõ]|úGð\6Çê<®ÇýÍ Ü}B„?V÷˜èÜh’\(m2oB]0/˜³~‚ódü~T8?ïÎËWçøñÊéeòVÃn“ k>Ù‡ü&˜Ð]r¡É¯4"K5¿ 2•è ·e±ƒÜL<»€|uÒËKÁ÷{và«wOuX-oá}Óþ³Ï+m‘>¿Ô¬žá=½¬©I+íñôBq>d5Ÿµ°ê3ä’WÃÞÚ®QOþ'ÂS¾Å1‰šßWå%óÑ­þ:]Y¹3´ù_r¨Æ•Så QrØšÏïÂ/М•¥n¹QÓô±þó×dš‰fgÌKÀ ‡Æ¹BçVTŽzs i»ü˜>ίqœÃãÔÁÞºÿù­k…ÿ©W £RG10:NQ?ó²ÓBý\­UqŒàt“ãü´Û¡:}šV\’¥z¿/ÒŒã8êÄ_ãA¶b% CÆaäþ™î1ÇQ;x?ÿs`·y¶b™œ5'­–Àç·ŽÑG­ •µ.‘”7¬¿ïÆ‚õ燳>vø‰ÞF;ÔâG5­„oÃÎ À;ãÍk¡†S|ùáëPóU5h$Ééó¿›Lcñ¿˜›«bnþ|CøÜ·ž›Ä?ýÛ¹ÉùÓes3&lnžº;87ÏÎùOs“ú+DÇo›Åmÿfnœ]Ó׬|w¤eÍ5Ð3³·²Ü@˜Qµd/ÊI+Xc±äúmN÷‹8îZÌå¡´zrå8T×;F=/W4W޽{´óV¤Ž¦ñ\àšjÙ^ /—ÙìnÙy &Q¾ASšÕ?ý'ÝÝVÀíÍòU|b×ȱpê(W³±øE2r;>6XŽúS#Š‹_žÇB@~ô¨þµÑh@Ÿí‚BɶÿWÛŸ…š‹¶H%r'º˜ë¾1pª¹{òÕ”L>¦ôF‡ZøK£žå=ù™w@äãØØð7`JŸˆ/ý¾°{qSEx[¼š üFT‰õÌ‹“§WG¤¥º59¶Æ4o®|…«Nù¢)ÂæDˆ™Qö­1ùOñÙß,eIÓÙ$¦t6ÙOÀ‡yÙÇÕöã’ëص5Æ„ž¹‘ëa€’«š~WVœ^j <Ï«Ðe$É56Bgüå2 1P‹4 ¤¼- OpV¨š,MŽú*Íxñì Þ¿v×Í1žEe/Ç|¶Ë#×”ñµi”dÒuý–OÏ›«|é* ÁC']R„14EÄ¥ú0¦weÅq€¹Éþ@ò€1ôôb£¿M3  EvaW;I+í‰|ûchÊYÖÖ>V´U mɱ r ¶AªRùJ®´br¥1ªOÕ-PÌ̈v»³)‚Ð'’)­þ#5æQhÚ„‘˜aY†éµý i$'ÖËGჿrÃÀ\åŸ |õ@ÑÆy7ÊïÂÛa¼0n ¼ŸÍÌÝŒ Hî2èV·‹D'Ôù~h£g±‘”:A,Li÷C&ž`ˆÒaÆ#½@áÀŒá›J`œ"¾ Š¿pì„׎øÿM¯û™Žß ˜ áàöNH‡¯ýâ·B8äÛ}ñÛ¡>p´ï†ƒpÓ½ú¢GÑE‚#ƒ¹ÚOs.†ø ¨·ZÑïËÞÍÇVÂ’¯9¿hñÕÃ@ýK­Ïì‡jÞg¨òqkϴïÉ…aàùD¬é1o»õ}ÿØ¿ï)´·š=QŒåªõ§†ä¨“°ÞP>«¡ú¾x×ôO e!5ÔŸŠðFÓÝžÙ ½²zU’a =¢}–Û âêbº¸yG’Ä›gÍ2B“œ^sb»7Å\ _ôO,ÛZ6Ò» Š´ÅɉíkϦã=º( _˜¬æ±º…SØhHU°ÙþHa´¼‘ÐåÂñO¶ðÜîʹe’7r/|!ÕÕXpìKÖùc%Ô…²¯z6\!Ì2rœ”ãü¬;T×£u¡ÆD¢Ií'KNuî¼Qíþ~+wQö, ¦ŸÀ“p¥ôXC1¹ ò’(Éý#ù¥Åׇ+ŠM¦b…ï^€3˜­ôY*ˆDGr?Ï=Ô>ˆçV(ÅÀ¼y®žHÀ•,¹ß†Å)½Qopõ'âhAã`nE˜­œR§°‚a% ¡ŒäŽŽQÛ0ÖcBßúyL”}: {L\á d©¿¹‰3Þ©j…SËÝqQ¿þ/ßéÙÖ ?Yªk \c œðrªgë1 QM.ÚmB¤íÀZÏvðÙ2ŒD4Ïv`auÙØ ÃhƒÕ Š«ãÎhÅЦò²žt½\z"ÝP9Bäª ‚}Ák§`¬cÌË6} 9êÁ¸K“& Âóˆ–V}:ƒ$¯_Y«á­DQTÆ­T‰¤q‘*«q³šY¥]]s`QB‹h€É?¶VÝØ2 ­y<ì 7¨¿XDøµGX5Àž>óNØÕ{€ïÄCñv@7ÏKˆb%Nø'¯?Àèy²µíH‘[Ë"X«S*½ÒÎwcIœdÌSOi¡Á®\˜q¼Ô˜#Æ,†©ž¢èÝ6_*â6ÿ_ÕŠl®@`(Äîåú«Ys(<èëõœBq·¥³m¯"ñÔ*oÝÈN '8ýŽŽÿOð4Íúð\ÞAKRy¾Bþ!ÌtœFMy¬3Jã²ÕÝGhƒ³&åy¾ ?ÐågÔ¬ÁC#OÛÝ«7X "î?2€oÕaßF¾Éòÿávgcw#lP­V[jÌ#ðy—v•8G†ÑG«ߊ ¤&>ÿ“Ž’þ¿‹üįWž¿Q~%ð±¹òü\¥Ñÿ”8ïÆ§ÕD˜û¨8SFãÛg Ò”„6p~U¡×wj lƒ$Ql]#ó4_Ä[ÊŸâN¥åq÷ˆ%ÐïÜBÝKîpþwSM^ÄÂÀ˜ mÎ>Íó&>ʱnAE•+yþr´½ÿÜ„žõøP­ s+³“]Ðø»ÆX1y}“ct $×oû£³;GZÔ¿/ÊYÓOfÕ<‚(ïj;ð…ZCƒY(§óÝ{‰% ’ß÷{ç©ß|ØÎ%²-OÔËQÇÅêÄK_ùnu‚@‘øÿÈ S0ÝÏ|d74É…æüÝH¾Çƒõ³×´ûlÿe’>Û>,&ðÄÿ¼Cm»F§øÅ~·×]ß7ñºßÑ E?§Ç]È—p냜Àæ»±`bËÙçåi|ë;´TøÆ4k+–KMwž72zÃèëº]¾Fô6 É£#üuø¹IÞ†¶™{Ð>Àx߆rŸM Œcê@cø†é<ÇlÊ7³î5Ï£`¶m„Á@â» tÍÿ¹Ý‡ƒí>)Ä–Q‹ÙØâ_#;§Þm ›fE Öš×±·Ÿ.$gü!X¶:g·ôa ‚.Í\9Ç XøØW—!˜¥×mź7.¹-X‡®àfß–Þß;ÕÕ‚VÀÜ®ê̳òHoª¸èAÔ¿ÐŒWÛ—±ðZ±uaf§ä&åZc-w†Óß.%L"L?FÂä 'Lr‚¨†vÆë˜—Ï`=À¿VVœÙª—ÌJ]ZŠ™§ÛŒF~¥»V:øïîÒÃ|"qgGå 5<Œ>ý4©¨C^ý_€³6â2pn ‡àÁ ¼¨KK#`L`ˆçÄÒ×béÚ`ñGßZ[Eü!¢P­åë MDª yš:˜¸…¿ãþÞ > ZÑ­N ¹A·uÙE/õžE–yŒgv²EÁN’³1mڇヽäÓ{{Ö×Öÿ­½¼9$Ћ«?,/`º EÚú425¬¨;AiµÚþ9ëAvÔŒHè©<·±:ókɵwAnGMDBË\ûç’kyà7;ƒ¸yüLè™W!¹)ÁA·R•+¾ÞíH®×Œ¡Úºî¥Ü8¨,c s½ya )&Ði9Èl@.ÇÊò4¬(›1oÇ ç’VAY#l*-G¶°X¡·>"¡ÇÝ|ãûþ¿s¥£Æœ|žD:8bÍ =þ—@üMMÌí§‘.(X¹ ˜ÆOýÍ!ý9ªÈ­óæ*ûýübL ‚g=·J¨e– µŒÏ·X¨eÐãI3’øô׃[=ÔPö¾c;áº"×ЄJ%íøäƒ+ïÐ:èž-ÔÙ°½&`Û°5ûŸ½6¡ª)Ðaû¹PÕüwÍb¶ÌŠ*/`#ï6nÜ¿îüÅ Í›€¾ý`k¹6Ájÿö¢Û/…ú¦æ"žÿawgP‡Ã3­ •hó6rÅ&¹0ïˆ(CäR!šÈ‹„XITŒ$‡Üh Š ]Bl°q% à‰„aDÖ&Ôù?ä–ŒÄsò'”Gþ’¤…Ïýï×Ê5 ¬°[T8„’ÂþWj¡_‘œ5Sá œõ»kSH0¨1RÓ0ݶ…œùØá@@û«Ðßrfžjø@ଜ[k8ñÔÈzKÌìêÍÅóÎkŽÚtp€âÈÓ0¨¼g£5_ýb,’Åný663é·³Ù s€†¯ñ¡b©…$ ¡¸jºdwb®ÞdÂìÝ’ëÖˆK j·‚(CaФ³¢Ã¸n4,=PåÊûGk7J.tlŽzFÐF“©UèÌ€¸ãM1ŒËbNÕôý y^±FþtŸ’«ZœÉÖþÄvøìó’›5ŽJ®¯i›&Ù»ÊFAs‰1›å!ɘAà ü#¹ÓpgÂÑm·²˜¬¢‹Òèê>ŘÞFæÐ“BJî+0íÊýTæ±}™èŠœdu#“.Oà™ÇØS”¥8ÏñFKæ±uûë 1„íøÙç•#÷Õ?#¡46¡c³æ£òþhXóÏ|ß ]¨°r{—×ü–Ñã5ÓIiÐÉ%%†éäœ]q€|Û÷ã”åv¹ëÐ>ž©²\àAñ`*Ãðü?ØÒqe…Žë%¡ªè¬àúU뀆ú­²ä€ªYê[W´[ÝGwîDuãjL -.ô‹pA¸#ýЕy¢<¸R9p¶Mp<ƒ¼2,¥†5‘§¬–|‡úåV_ ‚$f&K‚h4„t[æÿ‹¹ªºÇñL2I†0p$h„PiKDk¢¨ A Â$¼¶W)Mí½JæT‚3#ÙÙŒ-±Ø‹-öÒ–¶X D!˜%á¡È…Q‚¤rÆI5ó íý~ÿÏïçG2ç±Ï~¬½özíµ×ŠªÄÁf†Gë ëob <­=ÔWݵŸ9¸CåÔ»ùhÊŒ,qKã½AqÅrÔ?|=‹¼˜U6ßIÎ*ªZÿÁâ7“€Ø­þäQ² ¹U¶ŽÌAŸƒÈjå_Îã>|-PZ;H›0èG_`ׄ i:(ÌAmhz#dÊ :L³7)IcóGŒêt[P­ügž×äŸÕa¼½ê÷»ô]iùPÈ D/ú_¸Þ üEòFÿZòºUUgãÕ´ü4_7UŽ -iù{ÁWõHÍþx »Ï¨ Ýg¸°û$jzzkåqy¸ exÜvàrKÉ0¶¯$ª8ïÄ8û ]󹻥Dò’MP÷÷¡ww!”lh˜‚›¾Çü)¸‚—‡üÃÐ@fÌ7¨Ýõ=0ÉKû!Ž6fÁ˜äºß"O„ú~7irItIß±uòðíåÀ¦ÈøËŠs#w[ô|Hµ> (ŒWs4Ùœ£Þ?P·/HÅ –&ë8s–ºžâð¥c( ÎOdásÛ¹£”¿r©ëÚ:Ü×;–v)­±Oü]|±¶_¼rÿRù´cøðë>5’÷؈³”ÏÀ”÷ŽR¹"­ºÃž,²ÍŠC¯né¾”]_bdyë59¸ž#µ[Õ/ÒÈc/Ýý í£xi›q=_œµ²_M‡F—òÅ÷H»f[–²_ÍÂÎ9Šàîžšó±Ìáå9˜µGcIXZ7 ›˜2ÎÈìÅÜ^*íªÄâʘ5JÒW¡Ck/ÀrŽboááì”&žW\s1–5b.LC§ç|›m-…Æíb¸–â"#púp÷-ª ƒùð6¯X&dã錃‰Ä$Äp±®ˆ. ’÷˜ùC³ûðbrz9~·ü#N1—‘ö?…» ?®¢ÚÆ<¦$uð™Wy|JÇ]£“|}¡”¶ã£äGk+¬Y™ê±¡ˆ¥hGƒ…½½´Ñ€;qvªõmÜx=¤¨ŠºÍH¾ßÇcr«´Á¸5æ~ö·× "?ǯ¾Cò£Ü¾ž/±ðéI¶#+îçÓŒüá”6C#w®a™¥]“î©iŽU¬&[Þ/ï¯XÓRÎ@oØ«XÜÌsM¶c…Ë0‚œ2&ÚPÇ((ó›õ¸Å´(Uëh±ßVŽ â8ýÚ®ÞËs­"n‘äýÀv:åRV~TŽú j|šðùâí/á­ø\Z·(.@Èšå©MT’Úlç$zñã†Øê¥—ŒHfSê3=؉˜ÄlÕ“ˆË%1C„RÝÝ8È AÔçÞªoa”¨ •,§9˜5µKc0lÅ: ºŠ`xq×]8à©èO5¦6W ^ýžÁ­¹Tz¾G›¯ÉVÕ‚&þ¤‘ixŒÓÒU‡ÞÞŽ#ðw—òu4@LRc‘Í—ÆÄ3z$ú…9Hú[!—–ü&Åõžæ˜Z;Ò­§n¾ä=o³:™lm0-`ÓnS ./Júg/åøc(ÅÕZ OèßÍ4¥i(¢QêOøÏÁD<_éé!½ÜÏ̯zjL|(ȼgd?ˆ¡ˆÏ˜ 4Ü´CPx$úÑoGËxëG’È £á4{ܨG!·@žƒúÌ(Š5ŠE£™ñ*;ÉhhT¬t ”°óDžc Ÿú/‹[¡xb°¸ô/‹'Bñ¤`ñÆèUT›œ)ÁâoþËâS ø¢`ñüY|ÑDþê2 ‰/Rñ‹q1 Œl<TÄKå÷ X®ô¡ñ í|¥l†‡ô\ˆvŰœ ¢àø€bã£yžfþ>Á_Âó©gÓØ/ўλ@z×#ÞÀçíkñ1`È ƒ õ F¡P–J A)Ïš‡lò·d²*m÷`ÙdW»³ådà8˜Ìc{•˜Èà£ÀU;޳7™Œ ¨ëäÕÞÖA¤—TÁ½Ä6 7’ÓøƒÅÈ¿Ú16giØrUʳ3aÀ †*ì¶êÓ—5 OaÔד¡™ÑÛ}"¾Ï†‰ßfu±h¢àoé@¹Ñ‘"ߨN?‹èæÚy´öìŽÿWK&T…!¾¶Éør43SíÚEúNb®F‰ê<9êû(¸6;ÁßÛA6B¬ æÜeõêk#Ñ —ŒdX ìOxù.Ñëw‘”Cø£ö±Š¶'Zù3¦ù¾ö…r|¦ZßÔ£ÍH´áÒ/r™µíHÔJx¾d÷2©?ú\jX`ô«¸ë ¿ÑWè¿úoý­Møûký÷Én±Cð_)'<×¥ÊQQÏNV’»Î;ê©­èôWJ#3¿ä¿tK-J÷­Ó£ýWáàÝZxÐGZW*3°ºúÀ‡Ò®RäÉsòM¢ãø;]üÊ^ø“ ÿž1å›–­‡¡¨Ñih,ã_zX¿ÍPϦšüáHZ´äŒWŸv!ôÇS±õÒ®Å÷Ô\ˆE0´\w“vÍ@‰ËÅäl^‹ù‰aº±EŒ`é¤ÑÝm®k(Q²û‘_ÃÑ*ðo¶š50È1Ö@±ÝÉ€(þCp•©=ˆLŽÆ¿3:Ž8™£>%„1ÿcðÞs8zŽ(2¢-SÓX¬&éPÍ‹z»¼àêèÆžkŒ0GMÖ+™Ð©i ZEáòºzc`kSbì^¶ñÇv΃ueü#ÈÄü“ñþI¸|épÜHÝk>a›–²_ÎF =»`·ØµÇ0–Ó1V…i$åúxÁ$rQÌý‚Ñ×%ùðäµÈ(#ÜÇ:”ÂD–£òÉ–˜É&FBÈò L‰Ö:ލcS[ùLKÌL›Ý=ˆÉ6±œ«|fÒcÉVÇîšiôTá¥Íî,ÈIаMkuÅ ™ËÀg&zÎÇל~/ãGY'º<ŸJ,×êßÚ#[PÃ=ÜÝþ¡»eaÎãx×ÐG²þázRò½ØŽ–ÔDV…ÔÅïjG™.(0ïNÇ©;!b«f›ˆþ!>øø‘ÓëÙ7p+¥A÷0fîb C·^+LB|÷Ï Q€³¹xý¡‰P"ÝîÝ=‡èÆê¯ µ÷:[›–µA×Ô‡@{Fׯ > ÷›Aˆ:ÝCqì¥þñ¸–a—Övô²/¡´äµv<¿¥~'ÍÆõK2ˆ$@ê±­X…oÂjÙg\† @¨gû™ó€z¿ ɹöt>À Ò†çHÀ>ðþÂóaW_Éç'b~ÀóœÕ ùŽ?°ÔóüÀɇ¦ü,žN¸ù¾^êY}w²äÛ@Bç¥<ô3°è@tTÆ÷å²9}‚´. ‰æ¢4ù«¥]‡y^5,@eÌPÛ•‚Ážt£ëi×åšÏbA8Ž‘«mW–¸=ÕÁó‚%Y>çy!)¦ð4Ï6*Ï'S+deÊý Þ×qgÝûOâPœèF£Š«Þ‘ÀVžW'íœl­i6I;_H4tr¹Ž®g'ñÅCï¬ÜŸ®#µÈÅmû Ö°Ô÷â@óý7z±¢¨Yk¯Ç5?W±Ѓ Q+î†üä\¼;GÓîéL–MÌ]GEÕIÿ-Nä%T@ÁÑQÞSžÏÚ<×4Öߟ¥Î†ççG©Ñ§@­'QÐ~}æû€ \ûY·öhTÊUeîH “ÂÉõžOÛ˜³ZÝù²³Vcã Dã¶FЕÜ0ðÜ{(áînËg°Ø‹Jïÿ¢âãhÂóP¥»Ÿ„äLÈóÌk_0®±Ïš*ÿ V´Ò“Þ‹VÆ\ »K±àDâÍŠÖÄá£=ø½3/Šž‚G/"®ÞAò$TaÂG¿ÂGˆÚ»wáU­­Ýñú²Xg}20Z_õîÓ´Rð¼( û˜£LÂïl C 9æN2àÉVeVâ@~›ç|7h²ÂëM­}=Î’ž”VOQ k•§êzbáZJÀEJ)ŠSZ¡E+4çªYQhkµá^¯ qAÈ5éä©'yÐðäYõ, o ™R1x'H1ä÷pÆÈûÑÕ˜Ó"›« $A{îÈìE)î"ÌO¨;gÐâÑä¤\u&Eµ¯ŸÇ§¼aÅsC°}É;· á" ä& 2 e xïê‹g@‹h“é Xïë‹H”ñ©¼œ—¯$%Óu›úÎ@G¬Ç•àéì'2JòØKB u¾Ã‹{…’¯– Ž^Ÿæ’ôÚÁsC ©ógŒ$†åYkñ0°hÒRÕŒPlRM.RUèïÀåDç;>Ï%Á³Ü9*¦îþxG“׫Nø2°…÷#Û ¨Oqnjµ>?F]aÐy¢œÐn d¶!ÔÝõê°œcšjõÓß—è<á‡aÐwRŠFƒ¢æØxpÊ8-*+jÍ‹ Ö:˜;¶`|=̪ŽG®%ïËh+€£,'üJzЃEÜT½£0ß—&V;Õh³32zH^<߯#‚Æ F쌂½…(°‹E€š [Ø‹=ÚøT£ÜC"‘ȸTë{B—u—uaCwŒ‚´…•¾"›mžÑ5ÓG Ÿ©ž‹lQò÷#Ü °à2¨¬êÕïÓ¶*§>øïÄÒ·Óz©;±Ô‡ßG&8ÍöiË-\äL2iÏšEŠ'uò×heÇtÀl;!Œ’ãMÁÚ¥pƒgÕ&«Áõ´Žû®ÓF}=Œ9£U`yõz7…3ëY¥ö¹V -}¢­Îµìà$MÏ(Å)Ôïxå÷ krlåwÑ”ªŽ¦. ‘úA½™l;±¼ÈC6òrêF U¼§{‚ù—bÂ:êÿ;9Š“¨6†ôCòøÿB“ÅJ~o$áýÇÜÝ‚Û(èe Î5Tñ%*Ôcæp'ˆy—“„œDtžäùÀÛ*ª¡¶ÈýrsTKÞÁÐÇ’¡%RfMÑa˜¾EÀ<_¤jöjè>“÷pg5 2Mm$æéÚ PŒ¿VM¬‡¢˜(*oOä>)‘‚` 0¦Â;§!ÔB/ ?·É{$ßcÑ7ÀìZJ—ï¸<Äïäy¥áqOcy¥á—…¸sc˜9&•oÜâ#y£\*¯ÄA˽£äëBWRç&íéDÂÖ©6;6¢Ùf†ôÀ_%åM|¶)Ý„Í݈)@c«—Å8šmõÌÑ(¿ï«SÐzøJ×åÀ+´’%¬=r#°q£è ŸÆe€ZI&z#,æÙ¤7¾ä 7(ÈA²{d=é:}Môi3ЕÍDWEÐ'‰èӨɢOݽéÓE®œ"º²êÙJõ¼ß®g7\Ó&Ä{H=*¿íVmI"L!©KÞZRCñµçº¥ð?Þë‹¢ßÁ÷5(ÚÍŽ]ù½œ)„rþœä-v˜9ŠY?”"sZ% ‡=5©¶#l0JË­ìäû}/šMïâ®+¿—¼¿þ XU?Íä_·ž*Úàqez®§Þ·Kò |D_v³ÓÐh¢ë§Ò·âßaƒþÇ#>¤‘HªÑ‡êé.ý˜Ô䨖`swÂËpÔË’¡jõµ;¢¢–Ìó·_Œ¹ÑšJ½g1ù…’˜/} lŽXJï%Ð K ­÷V ‚E¯5ÐÚ{ ´E®ø\,}xN‹?!b ´Ê·ãpE¬м*´Tg+`é—KÕ0N6="Éi›†ó¸Ø «»D ìy!Bçw]w¢3m¢€^¦ÊA‡™'†ŒeÁ¡pL¦{˜³Ón,‰JÓ¼Õ®ÒÎÎ’©¸ú».í¬+™]sÁè­VÆu-ÔŸÄ„ž<¦?1†ž< ÷ìzÉÔØàev¬ë;¬«æS£´³Q?ˆu­ýúÐ61íT‰¡æóÄ´SÞjù\)º}öõ EBÞg÷–â6':}ÁŸ0ЈyZjnŽ:‹ÜŒE¸g¿?•`^|gÙiÉ;™¶‚ø t _¥’ý<bŠ®ÇHÞD2ôÕã†âZDK˜±_‘Ç6¾vMì )}¬å!”!¼] ð¸ˆs`0Ø3ÅÝš‹F(plS+@ý é°[pÖ\;AŒW?•pæ¹?ŠÄ ‘…Wbæ«?Îï6\?EP‡›š©ßwçÂãw4hŸÅXëRO&`½bø£é$w7áÛ½$ú6ÚÐE•$d{šðZ¡/ !úû£žŠMéU£ ýçº|9[1Æ À‹èPÉÇ@RuS­«HŽèâä<ŠÅp¶RI¦¹úscQW´äE5„”Z{Ëý°kíu¤øµ§íVœ-|\qcÈ3»ë¦*S$ͳϲ+³×6{ªzš»SmÓiíJ^‹ö@æT5m+æL6.€¢ó ÿÉå£E¢äð~d5€ ß³Cƒ¹ïÎ…¿iÕꃃiæk1º¨½þDb> â{2žVu4µßÚ’(ôtA›€´³ÖBÉ4Ä}&ˆ0¶Îp˜b°Ï'ÎÐP:]³éI›á2=|w‡Oà¡þU,¬€Çc]߇é€å€%¯°3ýÓN ÈòK E¹‰â^™øm½WǬñigm&ÌW7®mæMrb„9?:›;LZšboÍÄàX ¬z­¾o"´ ÜÃPßt Œ±°î"›x+N}<]6¡‰FxŠsÙÏóiLQ,&Ú(m€•qãJÈkBAb®ô¤£ë(rkávÆ{êT·ÅÃB8ÊãÒçußAÝoùbè “Œ±ƒ`$0 ‡¸½)››petª]ñ:nCÑþБF.·à±ubQyͶ<5ÀA\#¹»¡æ"}Ý\ñi§h¹OdîÁ>ÖO¸wÄs‡%Ì;œ›Uç¸b²¹Û¤=¬8Z³t×ÀíGÕ·¢uîá î‘EÜÔ²·hµOøõ£Ë& ®¦÷£utàSÒ¸ë}šÜ{ÉË­È€{¤…¹ÉQ´ ‘Ö†Øväi-ù[ð¼ ÿ¸W籌‚5qIH“¡79©seDô›mnà ‹t«¸•¹Ûü³töAà‰äTc‰¨q—õР˜4RÉC}CKÚõ$Ï;ÚVÍÎ…cOdÄm•ÏÄ–J–&͸ —6Gzµ¥Glµ)pbWÑ£QrêMHšM qI¾fv•ËMµqújü#­ÆÆ@Spz‰p9¹¤9Ø:C¸|äÿnp¿RŸÙ|Ž‘çY\OpG¢ïPfåÞ‹´£Q?™ºuº‘OÔÏ„Š21ÇÔàV‘©Äîf.kDu,¡¿8Ö5X{`ÙGøhP4ac ã}Ö(qÀ; - ´–²ú@-ôE““491’¼gÍÉTsa‡ö%ê>ø·.3$:¢L Ï%ô!žaäOµ‰­Å б”½‚ØZD´}(FÍ1~%Ð ŒTäÉ\äµEæ$9òñï¸ú¤»GŠÍû(JT9 t4>F‡M’/—Í’T^`šÇsïŠB!ùoÖc»°7|vŽå5ó¤W1…D‹äÅ Ïì .«†“|6Èr®‚¥žÕý£ä>Ð*"¡ü%SÍÅ5žó ^±ýÔŠìtÙâ²báÛ(sÔ)¿7ò8qäea‡=Yx þ‘D½æ¥Ü:$aè䥞k†BÛRßñ•fÍÞäq7\köîB@ñ¤7ÁcÒ´³øN*Û?“Ë#>q%b'짪v (•ýšoFáNíPÍžÄÝ­6w’ôâ_è„HhccðVr[%žge°Œz*ÜŸ5nþ¥²•ÆÀ^ŒD†®›zíÏÂçÓn<£,›–E©€húŠÊžžH[À˜oœãð¬®úÆYýQä¬~Œ@Y‘ÊsŒ¸“³n=ù ßÃçÓ0Lpï‰m¡‰¾.¬ý†y'eÅÜöÓçVò½ŒÆ í>ϧ¨ZÅös+Öˆùu´ÄôG¤WŸ|MŸß¥@<‘D·‡`™P,´Äœ¸3™O2.E·¸yi›2ÀÈu’·¤d>AŸÄ¸½ŽÏ5aÍþK=î£QÓÀ7âÂÃ(úœ•§ª1€½Ú5I[aÌT?ؤž©Y,í¼Dgä‰@îÄÐ¥Õê_6é½£qGB=à7‰öàBX³¨ÖˆÀÌ—øBcàhõÏÎ!²Cd„î>ÌUÇû^º¯ª¸ÓÊPBBÏîgÏý“Pæ‡Qk©ÜQ§ &n UoC1²ü›qëþ>·¾þ:„[ì`6Æuµd'²\³Â¹àSõÕq˜’âÕg—8§«C®þÂó™´¯h×ð`TEý«'ð«p0ÕRþ tIíØ‡†ùDɆ{€ç°Ió`­Œ v´¿„¿&ù3þj&5ëºohĹ3P$³­Ñõò$n|höUþÆN;nÛÇ7´`%ö¶É–ôŠäý iRº³mù¥7éüEµ8 K<ƒÂß|N·ò%¼¦Ãp/!ÿEÛ‚‡” X5‰ªM*žÈÄý/ôNM½ún{¯ '÷ îq™¡@B<É\–Œ³€z&Îm“s16<‚ã©1jEÏè·ò¥Ào=Õ±ŒzUÓ “¸»¢^ø[8Ôx;£¾…»ý"ºÒú 6Ñ3ª8ÏÚß'«c6†|ŸOd§5aµwìŒ|ƒòjz±©õåèGÓœÏÙ„‘4$/Fð©em­…Ž.7±ç­9k÷aiMn£îjêÑj§QDs`ö <á¡·—°,[m,y ç¾Ä®zšc<ºûì/¦˜›÷0[‹‡×îÛŒþ8gìtà­]‹®¿”é€9íÎîo²}4.3ž©×r6H XŽ…-7¯ÝO®Æ¯î ),>ï AÆ>C!©$oùÒ™øKrf2»‰‰[ù Ò7J˜i7‘×r::tK`Ðk÷e ƒ{…¢ÛÉP+yDò`ðT'2í8Vtý>b‹¿ÁšòZt+YZ»'P”£zçsÉ×vn´»%7“T§m¦Yäåê³E hýŽë#no†N:ð\FÕÏÑWL»ðÀx0ê¾ :7×–©Î’PÆÚ§½Oî²µ¹†â©Ì¼&öN)õ³)|vN™j|š£öüµG#…eaàT–Z½‰ÒÍœ/o£‡ŒYï6)ëp¼~Mä±gy&³ÀÞô;„¸ÿw=ùmÖ¶¢ÜÁÊ’ Èf>ô ©õÝ£»•hƒ«1£ÉÓjVÊR©Ú6PsTKYT”ð]~LQÐÆÁËñ-†Øí‹a°Ê°JNUrw ¯ ³µ&t=6A„Ý‘`.§ŠÒªy9~æé ÉúJ«Ù„é¼ {Ç+¨×FÔãùêàx’Œ8žfÚ©D7_ \²#"Ž>z 9UòbòÝ1Æ{Á0FøšbkucJ팚‚¡¶8=€Ng©é¿ †²žjt¥äfÃ3Õ囹Õ*° V•eªÁCe˜ï5ÑÚ©Æ9*:>šÒŽ{ª°›QRÙ¾}ËðrŽ²Ú”«žø…à‰4hz×Á7Ëp©)*¼ÈÑ*ð½úϓذ•+x‡Òõ*Iר²10ÿ]“èU¦ï¬è;íJÉ Ò>±ÿ_/{þæG«G“ 'hìÑÞ= OõTk`øYcòaMxç߆Vk7m€‚~²a­m½º,ô¶5È×| Øö Fý…å-ùd½ÙF9 ]‰sr0Ä Â°>rðÃ×ÎÊ©×`Oðæ‰}\ŸØ7‚+^b¶¼Sbjy~Ï”Fü{*<¿áù]X1¿wÃüR“™êäSú7FLñÒSÁ)îw« nOpMðbS¶zùtoÏî+·š]|¯Jÿ#f—*òi7Ì.uŒ+4Á¶(×Tz+0!ÓwHtñ['¹3*8Éq§n˜äJñ㋘âßRÌ"l“&Ù-h M Ä•\¹k×Q3{Ù_Ÿ.¢6’ýC¡xåAlá“3 ö|NŸKgrOå`¥l¿N/ãƃ‡Ò0z_J)¯ˆu}д<€"š¿‚9:ƒï4ýëõÎ2Gß2©ÏЋ°Lÿd~T&;É>ªµ—"&©uÄÚÙþù+ïB§ÌÌüµE „¯zen¯Œ‰“­Ùê†ÓâJ8^}~Tv~tnf~”z?žp³ãñÄÀÉp[ãÙSÍk[‘ £S³çÓ6Œsî¬î­ –ôõâ²Y$Êcí°"òVßÍíˆBÙÑ‚£;ªwKí”KF<1ÇÆ_šÊ䦒¾Ä,¼‡\w]û®k†"Àpµ¬ÂQºúÿ®«¯Ýui|‚üÏRdt hŽqTû4¶ê˜Ñ•Àí ÌxlsBUXü¢k ®»@uñ­ k… Ê•¡øƒ"þTspäéy  VØ›¸³Z›²¯›ÄòÉ%}Hø¨fIµS:èl/ö3pnòAû‰äZûQÚŽµ×á¶+{>*ºv·È¶Wtí’w]<-”â¢k „)í­ñtÊ.7üYó_žÎïº2=2GA}œè%,­Úc·#ÂxNb_ ò‚Ç]§±)]Óíu…1¨¯ Ø”cFÐ]ý¤36Á\³¤ºÚ)uÔõ‰ÌÑäÇÜŸžÎ•’ïNâ„IúîÛéþ«À¡±â™#qÊ‰ìø„'Žø$ýNŒÊ|Oô ÿ'££9ž^­Ä?ÏøûV>Þ¶æ³¢* Ûñùc?tbíË -Üue“>,ÓZ+‹¡Ý&ù0FÐÁX‰A@ί Þ"œÎ1Ø5áReçRÌ·Ö‘2òïˤ nMaCºnBÖ#¨×Úñüg”z÷:†Á5LÉ4äß7Gº.2ÉÕwrÑJC”äðìù÷aºÁî—ðåâ%®$lAýçK"𬫄 $ßïñЬ½åø»ˆuD†“QžÓ<5ÖP`ûÜ´Ú²¼fõã{4DÙûfD“Ϻ½é›1‹F”»1W¿ÝH“ºò†F0«»Èù‡ôÎÞ¬.‰aŽJ¾Ò(¤aˆîD”KãÑâûä×ù4LpQ+¸»U£)IhEÈV׋´˜ %ï"²œb=Ë 5ŸFsYÅ|CçxjLùQYê Júœa°XeÎzÉó>)v Ì^©o³qG¥§&™»+ÙãIÐèLkO;›¾Ä\p/—wžm^Äã&mÌkÜ©j®ûÍêÒ Œä…«¨ÉPxy#_ƒÑAÿm)Ïk67´e¢ÆJî®c/X {ܾƒÏŠKeGj.˜RŽÐYÉiiT²I&Š2r˜:[ihd“Ìž}#™³R³×cïí;Æc÷_$—®¼£h™C‡uæòrÆXËŽ=®…\®×õÀs'â©®¤jt°výÊÄW'#”K²x<¯±È ²Õ®7šÚ|Ù¯=ÄÝõž/Fª*<Áﵘ Am|aHè?uªê1˜AµáY<·»‡aŠ%h‚ÝÆíGÃ2µV`ÖêçÞ†‹Þ î×ã¨3 Ÿ©£’=kñÛp¹‰hª¦×îЦY”¼–lí¸0ká Ý|«:²HgïÐ<×_y®…¯°ò%Il¥kj©(28Ê•l¾‰e™ùâQ>ϾQÉqêv^`ñµ+Ùù*Kðϧ=¢S;ÑÐÚ©.X,ýc<ɳ€w®¾l²~ɯ–Ùø ¾Ö3û/w¯w¯ ÖRcx›“µc&½©F–×¢=cJ]Im]»ä¶\¾Ø¨É°L³­P¯§ÓÈöËoò!6§ÊŽà¦c2G¦;Û «sš±uÓ!ÿ©¢ày_˜¦zrf«ï8&>úÜ,›×Útçƒr罫½cÞÅq•amjô2‚úrUO#²ll5a:GkËkU÷þ",}·ðI˜Ú*šõ*×’ÅäõÕP¹;ôrì2”ÜKýaèÈö«WÓªŸÁ¿÷ø`ìnsãÑÕ.Á2‹ÅGh÷ò/ÒÂ{Gì¤> ²¬–9š%ï/ ½Æ´ý;8¦°¿ S5ü½TšÙe Ï,¦‘ ÏŒØK…Ûƒ…ÿ /#)ªôÍV²ºËw¼O%µ`É)Pr‰ØÛ8ƒ¼Öl&·ª?ÿyðP¾÷3\&òÞkŠ,Ø’ÍÜ-êOÂ1½9l±ÃNÔFžŠB¹™]bg€³N꫺Ÿ 7(‹‰Žì]†5Ö(ùìbŸw­¥û¥û)áIN®úþêà鱇hÇÈ5 '[ýcè¡8ËÓ0S ¡\µ4ô&^!†pk^e«rð•o R´‹D+ÒÎú§k¡Xq”@¤4<¯OCõgýzÍë¼àž W·%¼‰€Ñ¯³y¦ie Ë4ÉýxF2LAÙeâDcõ7OBäjH¹í2Õßæá™æìäùóBövŠP&Ûw< –kb,0§)+0àxR¡bý5¬b%é iðë™Øâdlqµ8†]öÆÏ†åú ëâö61ßÿQ$â<˜LÆVMv UûPÿÞ§þECÿXÒHèá¼À‡èÈ"ÚªÄ#ºd”ňk€Öã;ìÂ4€<¯ ø¹½nìMËV}¨Ô-²€(ÎLãÚÛEíWªã–ȬaåcAæãyfÖ—‹\Üi@œ3çÉGH* µð <•É• sÌùm¹’€† ”¤_&ˆsYÙ•ÙÀw>ÃcX!b+òïÝÆ''Áúÿ$Sí·HtÒÂÀGjíIVŽÊ0ÝÌfZùt ›™Ä§[ÙÌäÚɉ¬Sµ™¦t¹²àn<˜cþ¹’ô2Áô8ðŠBó2ŠæeðTÏþñPrù9è'©?Ó_}éG!ÀCÖ/ B} å©!XKÞ?c0£Ö{t! ãöqÇj»‹ë… <¦³T6ÛX;•:X;Õ,~D6F†¨v*%Tarf¶¼Ÿuˆ ãrCí$úŒÍ0‚Ae'‰/'‰/'‰/s=ûÑÁ×ÝCu×»rñœK=/0§ËÖ<$/æ‰æw¶Š ˜w³v퉵Tµùy¶^XÞvÉûcÚó‘ŠÉçaaæáŽz>?hD^½ü'YÑî›L»(u<ƒ åyu|†™O6Ûj¤õ_Cà×ë'ÑÖ0w4Î9tt":›„ãT¡þ ·ì{0›¤½:oß <ÝiÂcPyMèõÀx4LÞ‚žhN ˜GÄ™¼™Ù_çî­h\@ó‡Ü½E¯ã¤²*Í’Ë›Ô+«io ˆÞ4e¥…ÍÑä­¹êÇÕÂÊ,oÒä-™j\ Ýrçfîx$^–mb3Íáu’­vò g‚žîñOňîjmY¶0ð%à˜íy“¤ôÅN9ë(M5®‡EøùÔˆ¶ !Ú¶ÐêßB¢íäŽs/^ kB5N»‰57ÊÝ„^y8&Àù˜gL†#HÓó¶åª)Ï‘¢½À5 Ö3"%¦ ,éo$©Oyu0ßwà|çªWWi3¥ \Ó*_DLÖñt\dÒÇ:ºlÃ~æÕ³SAT\níŒÍ°°Vî¬c¹‰Ì]¶j4üqʸOævÀ¦:ÁˆhH~– MÚò¶¹›X;“py“«!Ú´­ò{ܽÍö‚iõßpÌÎzîØÆ&[X¶•Àj7~ôƒ?2PÜj›c›û<¯Æ6DŒ-Q›ëq1®À7 FÀÝGaumÆ`h ¬áeÆ–›Ø$ "Ö“Ÿ\ò©‡V[›ä#ïQç6[¶IÚ0PxŒ‚¦ÈfZØ VÑ™‡ødL7 ÃÜL7ñ•f> ïÂzœc™nŠÑŸÈm€^@”D_Ó,IÞ½ˆðeTÌlŸ„X3Õœî8À&›VÝ¿ «Ò7§ü¥P:Ý^íþ’Á[{uàb)«õ¡ó¥ÕØEe"hZ~S7JïAÃFp4²¾ì£È€·±™ÆÚÉ‚ºˆ¨±µ“u™l?8y žý‰,ï¨ÿÕë:ÿÅÜ©f # i<¤n*Ô½Búa”’B£º®åµ`b9]ƒ²iŸm¶}Tð,Ï1¥-åSn¢ºÚ¿H3¦]¶}´\Õ–›Õe?½:ǬŒŸÃg›”¤÷5×k j6ž.4©3á—É&݉¯ ž”fª'AÅÃòÖ¾s´¹C“ç-€ö ­À[øgk(^9«å˜£ÒÑb}W.ÊÕ·^höVèM;ZTÌ +«ù4zŽºõyÝl)yÏ l1š¦£bÕ¬WA°r«xÊÑ[„zLRñ¾2Rj‡´Ò^9cªüy+çÎÖIPQú6e˜™“¼äy4eØt̤>e‚…?g©2Œ¼ àw,©øÓ,Ecû°Rëj\?´a´w T¯áàêõ h¨<wYÆÆ!éZ„Aò6gkÁT £ã¡£{Ã’Ì@Á1³ˆcÚЇÐŸà9[—7æ¨u¥ôµ3¹El6 æ ’À —©© ±wfñŽ ¼—©¦Í 4›ÕÀ|r=x¨Ëf #æ¾j˜Ñwˆ¯´2ã0x”÷É0|BFÉ+þf©læyXù ´m»Jf Ê `€ODä+áÇ$zŠøøÀû»Qi5¡"wóý?éÑ)¸©ßÝÔ‘(í,“½Äy;ÃgXŠl÷ÁêtõˆI¢&kŸ£þöePÍ­êA´Œ7м³‡u.¬f0hB=dÔmèm4ØÚ%…u z›p[PTD?¼~f,uÕß)èawZõûƒ@ýïe4!‹ º®.ÃW䵚øXÚ`éêKQ7&°Î‡€Xò,ú .FÖ¹v”\w*3 ¶Ã.ÃÔüqì„2Ç0GMV·îî“/(I_Ñô :[&ᡇ©šô×}†Å5Ö”£>½"´vÈaÍÙ–¦ùŽ+³0ÕÆZú‰P•’7A˜pÆÁ,F¡9™pN”L›pàC™p˜¹§(ý>×`‘Ê:K5¾‹ö±ƒQ÷M„áeg©[ €ZÕ,,zN»ožËxÐpßDV7ÚØ“N²)=ÆÂØßáåA'‹ž8mü8×Rjùöˆ–ûb<ÝiaÃÌYù%_{­±‡ÀµÐ²onŒ1°‡³'y3¥TõMTpÿý¸1› “8Kvœw…dœëZà²Ü§m'ð̹:X—ü“þl7ÅbEÉÒ”ç$OÍ2·1w+Ñò%šâ9ž‹mhGcî6µ}îÔŒPddª~¸AÓ…Úº my*H«ìRq£·™ü†^þ–‰7(­‹(é~ælVç9Hëï:‹ b䛄¶@Þ:pŠ-ií€Âó÷-j3²¼&ÏþdÏ…î”&>¾²Ìö_öè.-€”¹ÙêŒ]º/õD¸PœmsG+k̵ÉѤb¬‹©T=OBÄ… øCZ»ânI;ËÚê1çÍóú›@îkQgz‚Ûâ©ØrOßÂS{GVÍæÖŠ'€ösª;â€[(Ëà*Ê2x±-Wýr§.%¶fªÀ§ó|í äµea&+`©$é)l3í¸Š¾ö_¨ßA»(öÔßqÆÝòK†I{¯óÁ ‹ú›–róókÏG%cjæC(ÃL¥—½Ë&·•Äy«Y‡kš´·^N ¿|µ¿Ù5I{O°k<©tjñÐ’aÓÐÿ £ÎJ{÷‡ äúߣ5gêÁxÐ8Z¥½ýƒÅ’f¬½€Å¦-EQä”)¥>íïÝlÀ{Ö•!í=þÊË?;îscÉÔ☒¸i°€¥½uüNQ½uæÚOEéã®6w«Ë=…X=|cŠÕ¡}üžÑr¹èŒ- ýýK\@joS¦›²ÔEû¶¹•ÅÄØ[AVÏ~¶:§ˆâ‘aæt[¢ëÏ,/X«?©¤G+柠Eä,1±ZÝDKp¯]£Ø~ííaµög´Å>Yàí«^9ܳ?‰åµ"ÏG’{D>²K9Hxö[çÐÿõ!ø–ÿLÈàò„´FõùŸéÒ©¤ä$òÂD_;s¶Ê'»y®‰O5Ùö­J²íÄm@ëÿ”«þ'Cžñ[~l¹fàë9V¾8‰ÏN„æY®•-Ib'‚*8öc¤Ä̙̩"òÿèÚY£0ë‘Kx‰äEJ›×¥¢¤Ø<¿=Ú²Pò¡ Q T#?Aq´eáÑDu ô@«•Š1°jþ]0äluêO©îhDuï PãAÒÞ}¼Ÿ˜éñ×^3­¹n+Lïz=•¶+®éÞã@\÷J{/r<BùŽ ¿Ä@io=|—®í"î4y®ÅºžB÷‰&çú8í1±Û‰‘û(†U'7«w$†Ò•£´#7½¸X#²sÌ×\Çûg:‘Ñ%ùZ@(c*:‚ÀèlzÿXk0É3Æ÷“ב´›­~ùü…ãð¢•Z‚äCß׃@ÆÛzÂvÔ ÂͺFèù8žù©ÀaW˜5ThÚŸ¢µ[*Û‡3«'™tÅÀ?"óWcÒVGs ¬ùkÁe;æùµŸ ø ]áÝÞözt$¯‰@:QÚÛÙûÕ}: ¹ÄÍÛ‹ûNFçÉ‹AoáÑ›ú|>žcøúÏðú`LÔdŒâ”×(íM¿I“¼?&y÷–ýñÒ¾ËSÔL ´0)ŒЗõ’´÷{ÆÍ¯rwÝdÍ^W,açð»{ÅwÁV#¾výû×O˜'/30H#»5\@ƒ…* ìC×î¨c—‹LœÌu¢%Wò7´Ò€>9NÚάÓQk?JžµÎq¼ wˆÆßG–ÔëPóã)ÇF¸›=×bô-ØÕC¸\÷^* d_ß5zºò{W<¼G)™Ë£å¦Ü$4Ø5¡2oñÎÐfÙØ¨LR÷gm'iJW)³ÓÌUAþ—abs×Áº‰q7ã~謱ÉYùõò3zf“®“ÊädƒÍfª»ÿŠÂ}Ãhg#ÐØ9šÜ˜©ný+ñ=PŸ¹Ã‚d¶í%UÙÉy —Rä:M®Ë™£º±¨£;pÈÕ‡?‚Ce+E¬ X_Ïwjú­ØfÜ2UÇ_{DÎŒÀ»bêÈFnËÉȆ9T¿ˆ¥œ£éym¸YîÝÐCéî^V0PÒZ’YJúúÿuˆ¶³Siíð!ž—|'j!®m…~¬Óà> $¡ŸmåCÙϧñ®eÜmµ¹›’']M»bV +-‰*ž2ÀÈÝŸÁâ'¥Û­̆·…ø„’¬øâ!ð3?®x‰¡$+–+ÎŽÆÇÆâÜOœÑ3¢3 ˜îö%¯ ê°Vž×–²úÇj¸½1¥ÑVÏòØ'«£1ǯTìEÿóÚ-:í¬ízÁ¥“¹]^ZSgª©³àç ÑSc´]gÑË[0ß|wXAü±%e7`&Tcº£Qzדâz4–up{"öàvR¤Í|A²ï¬Ë 4È’ï<.¢…Êõã4k“ÌcÉWEalym…é<iŽVõ-;щÛyI´§'5¶+d³ØÕsɤشَÉ?Â4- øB£ãðôa7YóF‚l”N@ãÑâåK\¶ðÛÒ¥;­I =—ÜΟ±/J3¢©Àÿæ×Bžmº¯ž5/MkŸŠ€(Ö®úêÀÈlØÕáÆjrþÏ…¿2YGü÷~–‡Ç üž7‰• –AµD ¡…Âg5ê»Br-‡&\v´c\퉼?Zo$ß(|Ë ¶%EÑ…ŽÏÄ£] -åÕòsûÈrŠyõº $N) dçYù¬ÍÓÏÐLކQ¶Û­6{ƒân•<ÛôUó€w‰¡xÊ #@š2˜A¬›õâ=«)<_ô‚±HZ—‹‹S*ÉŽ/À.ÉŽ+Î1ÀïÌØâÙÑøØXœã‰7ò<Ÿu²`Dtm­4ñþ”c”–wM¡yÖ”#)ûlg`´°œ0ÜR1FJf'kzp9])å¹ß XZsØTsØ‚?X µ1‹§Ú8×Ö•åŸ@¬?ºJÚ[mÄ‘8x›n¯§•uD™Ò'–Ù«¹\MÉÌ$ßZßf¾W×@}m}±¶fm¢¹}"¢D=ñ¿£6gká£|(î:æ©êc“z¯­VdO‚èk˜p×–0”ab"g+¬¯Ÿ¡™Ã¤šŠÄí´ðçL

ÄóigŸÃlH `\j%wu¬ü›ÖŽi®„Óm+3‰ 7$ø_@ý!S]>‡ÕªÉG¡ -Ö_xÝïÑ¿KdÃýs |%->2ú;ëpc¬:Ž0°¬‡í&ÀS-š¼qˆðéïaŠüB–ôì‹¡˜SöF:þI s=Oˆí<¬!eP%~àù­ëåâ}gxï>ÀÒÅâ~…lÉ<ÚƒPÁ¸¿aq··OÙ,'ÃE“º>ã¦Å­O;ˆ‹[ŽÐoÿO{»OËÁ;˜œ¼DŽÒñG’oœÎÒâÈž8’/7Âs{“]y½V©kv: ï>ÉóângÌŠÀûźìÅÏ>2„Ö%zXÌ42Ésò-Ú.ñ‘zjyò.àX‡SÚ€g}dX/Ñ+ϧ݊1ýÄcæd娿ÿ=Y΀7¡]_É;7¸‚€7ÕH;)‹ÆßÑÙpMz— ‹¢|tbýóÖëè<¶Ém…ã¹ ”»U5>z#ƒ¢ -½Ô !µŒ¡+xèRýô¨m~‹dR}ÃçŸö{ÜMñh©´ðAÁå#ãòYZ>©SYêÄtÙÊ.ß¼|vÂÚqXR^ö¸båõħt’ ÌÊOáüœÄ¯nM ùÕ¸ įrˆ[å†×ÌW´f®‰l¨!ù4ЪyGgY˃,ë>¼ø¬³ÏIö€ÀêÑ=A¬®ÑYÖjkУ?R|Kë|ëíG¾‘o¡›ÚHÿIa.&¾õØÿ|«OL/”G¾ÕÄù´ã‚oíÃ»ÅÆ,¯ž9‰oåß4jýßò­gþßÊŒä[ñÀ·¾«ó-£à[±:ߊÓùVü-ùÖpCh﵉›Pwà Y ˆ‹y°ªêSN¤ÔÙ™ã(,+ü è\DgL$Æ$yK%ê´(ÚÁe8)Ì…*EYLÂHI^OáýË-yÏ!Þ#}ý­¼ç÷XÆ};ïy+‚÷ÜÃ&ϾñÌÙ‚0ÀÌ0yªGvÔ„–e0Ù ÜÏ;®Å‚Öä!’ºaJ|Õ<˜”N¨ï/È<ó &·bØë£Ú§Ü /Äyõ\n…ÉÍŸ2 u±+®Ïùhæ¨Sf‚²Ò ­ úšJÅȤÕ,f;S/Œ.4¸ã(F0q4êҖعI—©¹5þ–Ÿh|‚·i쿼3BÈ{7³7Š\‡ƒq ÷Ç¥Ø9ÛÄÓýxü3"–uÊá• 5]Ñë@ \¢8MGcå*ÂÄ`\6Gk`›Ž‹ÀueÄÅ „‹¨w­9„‰´Ÿ<ÈPX l à~PZJßQ‡Æ$:Rc¯Çm’*ᵌ&9òZØéÑâ`Þ­z?z¡–Pý~ ÜÐÔ]#bÙ³bµÈ=Y·p£†š…¸Åœ[™³Úó©qŽêžWˆ^õ„^¸ï{Ý"ù©@Ã/I¾"£ PC`¼` é+3Y^%sïr¯¸ÛF¸+¡´3Hñ]:ßGég)ÍýµöíØÍ€ò·)Nd YéÆbó þðdÏgñ@=¿D‡ÅÃ)g€–ÂIëšHoÚƒñ¥_ü¬ßJ :j|’®}Ì3¡š·•ßÏÝ­@fkíÛµåF eÜ&yçàq„kÊ<#ÔÒº±p—îØr²‹§k´î?å-ÀBµM M¨2Gð¹kæÎmõ $×D„Òƒt†ÜÌç#Ò*ÕqÞ`ã|žY›lnŸŒ“ˆGxlîÖÂIüM®ƒÕ¨ªÞˆóî†\ ýõë5gî’[#ÎP8VÛ>ù§ £dU¢KH­|‰Ès‚t ,$@! &Òr+ª˜0MÑítù)õ5ÍÑ(¥Ç˜Ç½ u ô½ÕOÌÀ<û—늆LŠÐïaɱE3ÕF‚5“Ó[Ç`uHº_¯ù<~mWTå%¤1V¢Š±M,¡}aE™ = ¾ Ý|M®TœMs4ÙªØ3…åª&?Wmç@²§3ŽÙ·ÉЍÓ'Ó½-NÄ ây•¸Gt/1ƒ­""M²x®ÅÀœÃ”ûûÒŠÅïüQØÙÆ€zE«ö«¯qo#¾à§ä£MþóÈAœ*H*ÆÛs'OÄhŽæ±Àú—û»jhdö]x ;ZÄ ™;ZJ¢‹ ‰¡¨fo lÇ\wóáìX)ÇR.Ü èœà¹Ð s\7ù}»? ù”{{¼|¢<ŒԥɲâÒ; šJÏBSóÄÉp ,ÿg ¶Faíz^‡óv„³ë%„ñrtÞN×R¢æ!Œí-™š¼Cq6Ï0. Âø¶ Œ·Ëãy¡Dˆ:‡{{œˆËB•K^<‰ßa¯NNe•Zœ®_»”nŠbPZ1RØ%vÁ ^]·R×6£Þ ÏârÊ5³êˆ¨»oL“L'†.–ëTßý7QL}yõ@ŠùQw˜?C  —|Ìœ¥Ì¹'H,ë`íéçtù¸É€/̜л¾h×Y/ù.ÇéfÎH:¹¬‚i GòÆyÛѨÓÊäÊ µ\A¤U§–ù‚Zn –VÄ2VJ“=çãmG€V‚Ø2åÏA.™Ó+­³SÛ•D.l “˃’ï;:Áus¢ h‡½”ÉëKyÞzî¶"c½Îœ;j훉ræ5¢kî'’÷ôs<¥äbl€»tw¥ä™‡Tù6¢œ`Їh ºÉÐ ºÜÝÝ‘³T”.åͺ ðçèA7D3åè[Ú<§‘y‡-¯µp §ÉÕÌÝ ¾z#Ùt6à9Y˜o › ›ö×%oIø é É›äg¹ü:`ëÄÄððèKL<å!(ÎÿÃb/w¯GYɆ+̱ƒO2aAàöÌ}”9êYÈ:Ë>R#[Zñt÷¦‚; ¨+B€‚œv”z¸3ô$ù/@w`®Š­á6k›ýwï÷_ùµv̵nSè¢âÓ'š}õ.³f÷b·7¶ð"wx£-ݾ‰]_ñÇJtÙ8ÑYÏe¯A®ŸÍdoñ1ÏùG¹Ûë9TTl^óyÜãÌí•ý¦A~ gçÜî;®‹Ñ?ÑÄz$.˜®¸ëXc¨ ÷¢hòvàhV!8ÝD¨å bÎq &öÝFe;i Ñ‚†ÄˆVZ4ÀÃÿ¹9õÓ9fw=ý’\·9VòY‰‚›Ñ¹T,±ôxÓµŒ†ád•bí™ê~ ë;t;ôú0¯ú žëD1íÔ+ޝ\þ¿‚m%ÀvLoØ6!l¡Ÿß ÞÊnd1›‰ÝTuëÀ€ØêŽäŠ î4°Ëï%ºýmÀföÍA®ø!§ °€Ïí&oPUgw#ÀKÀ'жà1 íŠþÞè!úGDùN2Æ5ùw „–Ä!´7OΠ@ ^P`VÀÈ­¶¶åç:ûÃ#¤ §Ç™c›´C—+¾r‰4¶{™Ü |Óf÷ºî*u%`{!>%Ï €l1¯uù¼Ö |˜Û·ú)­åVd‹ò6?Zö!M9ˆ ݹÍfsz ¹Ý[b*ž,Fnž 'ÛNŠö–ÿ#°ææ8¯È_WšãG1MrÂT½8ÖÓ[¨ gŽ-†KéŽÊ÷²Kú$sÇ–bƒAn™9…õÔác˜ÞÙr«i%{ƒ.ÓÜÞ\Fð@Ìm}!=‹ÜxpãÚÑbVñˆ‘&oSìÍ™À(µûoÁ·Êö 7–›aD‡87˜Ú¼ÛHâÙ#æö7¨Û½FòÑöjÈ`üœÖ²§×¿÷>/Û-¶Ë,µàŽàf€›àÏ¿¾Fªâïsí[µä7º5W«Ÿß}kÖI¸Ð’ »"sÚ­ õö\FIÁœ‚ºž9BàФÎLï+v^@‰…2-0;ðïöÕµšðþ‹Ã<“?gdy;¹Ây‡ïrB÷ݦ&y¿¯+ÏXyÜ(Û¹¼]ò@RîÜÂ@óÞ®ãeM—‰Ï4rwµ´³±äÅ_}aÆD4ÅöÖ>Ãv¦À\\'°¤xÊÝ-5þ8O—aÅÅ',ƒÆ>‡Ù¥”ÓA*v¶HëþØùöŸ6s÷›{3qõ«Jn+ž{'~1yªçz,¬S;eërU‘[ãÒNX(×× d‡µör<eøñç-À’™¼J¹ðËö¡ä-EÁ¤”ô”=ãSz¸£Úp‰;·ÐÎKp¥9›t_XûV!SÜ£[®€KN3ñô}tjŸ¶—_ð\‹.LUf±nvæÄç¾ãòHég.'!¥HÐUt 1t€l¦Åù1›$¯Â&ü¨ãƒÀ{ÊãÛ1j°`j‰u‚çÓꢮ"ù¡©ŠqLéòV´o u)oŠ@ÖÈÚ);o-¨|ZYiá£À‡Ê4CàkgŸ¬ýŒ&´‡&´ß»ú„Òñœ9šÓkmâ¥>§þKHóϬý”¦µKLë»ÁimÀ—PmUÛ-^§9KÚ¡‰ŠÕ†r±Tr»çBuÑõ"9Ös͸ã# +mNODïÃêNùÑt9mÈiº…œ–rZ^“¿‚„›&Ú¶læyIlˆ¡¯ÿïÝBN{o$.Ñ&PN…|C&,ª $q%‘ ¢4Ü‘sÿÕ­æ^^¿¢08ñɘ+©÷ÜϽiîÇEÌýhî’ ¾Ùµ;ˆì‰‘æ\cÂÄ­÷ßPà`à˜Fé‘( ›¡nâª}¯ë¨jìZWïÆü]a¤hìH±‘bWé ‹<ŒíúÌNôÜ€§¿ 'öôl"œ¸vNüæ_ãDh÷ß0ŒïtvŒÑÈçbIHý»„<'ù^¾&¢ØÛ·§tp‹çÓxv=å;ã¬FÂ9HÚ9LÌ7—·Ã”³ +¦ïÕ'œ;'¥;·)³AJh,¸»Kⵜ&í¬ïsâ±t÷6àÉË?´Ò¾åg¦>©H(‡^»™Pî ÊßßÀ„½AB¹I(AOÐÛ„ÞA÷¡õ#Ò×B44kJ¯1ÕÙÂŽÅ8^OG!s…¼(“î~½ YÚ9÷¾ŒHLØZS$/Ø:­Ï x¿¼Ùã~=º0ƒÛ_WfQ6MGY]ÔL Tèì¿ÆtÙr‹¡0 d-ÆObä×ýu É}}ùû­ìÄäô¼mÔk‰yˆç|uѵ"¹Ï4%i¼XÞªØ[ éömÐL<Õü;ÌîÜ!ã¾ÒѰ_»w°ƒÌÞ¨Åû厛à-@‚Xû¹Ž˜ô®¶àë Þbæ½ ¯ƒ°ßv3æâëàl ;^ÚñI8‚z`ob{»Œ«?£„ ¡QiÅÞv¾“´:÷¹-è&I;» >å—HÚlä44"zÚ·±a+»i¢/†0t¦Ž¡rcIb蟩ˆ¡§KÇó†‘z±æ‚©O"[i’· í³ëk/Ø® 4ÝM@»(ÞÄèýKØMðºXÇzÖ~FÀêhº›@u1†2\ï&À\4øót~¢ó ÿÉ«ß*ÚèV7iø7ZÝH´¿ÖÞ+?ûô›ûŽ}á 0`ðÌ٠TÿŒÀRý±˜^R=€µVòý-FÈæ¦°å «Ç8 TòÚFäÕùÚÉö¨º%ü° @¢¥Qò6“Œº'í­F·ø±ëCçç¸'=%ÍXlÀã&BQ[Íò/YWÊaϾh²IÔþ2%Wrg½ÍY)DõBø¸$¦Ø˜0q²çšÄô<+|yžb:†K9ÔýbÔ¨¨¨¥hñÒK¿Æ¤€»öqçÜw¨D+äþh(l;!y§¢Y¬?«K9 î~ÅšŽr {ç|'³»ëneýEÈAÒ)S ”q`èÄ,eí®Ûh§»Õö mí Á¼Öõ¨çÓhæÜ®ÌŽýCZ‡ÞÁÊcz^½´Ï›/å·Ev÷¾¥]—ÙÃìû>k‘&? lTúîöôÈ’ /ÖÃ-ås $î>Š[%ù Tg‹Z•tÓö`K6IÍš³1¼UBY@ƒ¢­’ÿb‚`ž2øªôç¹&æØæ7hÁí’›äñÞ›%hí‹.žbÃô<}KYûntÈbí ³×Ö|9ÜÐy¬wã(€¼Ç½#V¤[ :­ä>Œ)7¤(è õ?-ü³Žßqþ÷¶°ƒ{‰¬ w‡PD:| '¨’7¬í?'¶¿Ù‡ ,£]ÇÄR(®‰n8Ñà®öú?¸“a?ÀoΚҘR¯XǦç ÉS /KÏíoœ<ž.¿BÎʽÝÁžüéaƒ ‡¹T„ÆgÐ Ù÷kYtA¿pMÖåWýZ@g­y_ÿcºoW®µ—I?H^æÐþz£ºýö›È‹Ž‚¼Ü±¿žùÍ{ þÅhjloò²Ì7 öFƒ‘—Õ@^*ƒ^/b”¹«Cä%.Â`@äeÒ›·C¾¨H_f=@6þþ!ïýÐ'IámñÔF§»«ßÃy•Ö¡Óþ7oBѾ¼Æ4/;ø€µ]ÄYZW„ Yß‹¥ik5 æBzéѪz)µ3hƒ6lhsJò~†dg;—r Íׄ%ÎATŽÐÕ0Â@vR÷C¯ ­ó¶¢Känߢï5tI îÒÚi¯Öï Ñ´× léÄÆÑ¦kUºOÛÒ!:­Ù£Óš-aZóÏÝöx³÷ÆìGîþ K]B‹îïù_‚Ûˆ]Ýå=ú†`èã|ýtòâÞöëo{»Â~ý»ºãƒök‡°_ã®î ð®n¿ÈžE ¬Ô@B6ú´W‹ù/ˆ-\"‡MÛ¹õ_ [v¾¹*ùî'ÚµƒO@t¯Ké„)0ħ;vHžD¤‰Šçë½ÉJ³‘»«’·¦;BRÜ jŒ¢ÐÑ ï–î^Ðz™È_%Ê™ú×]?^‰AÿÒµ‡ÕŠÁúþ¬³eîÏ¢E˜ µ"­!áýÙ‡ø `XxvL°É›Ù¯¤nTb—ÕÑìO@šªÅvû²Ãzï˾G`³„öe?ï íËÞ@½‰¯[¿Âáeë· ‡­Ý‘>,ÿ§²á‰[Ɇ;þdïn” [þOeÃß$>ÿ¯eCô‹»^ÿùpÚÿZ>¼ã#Nî-~!VùðÆÎÞ$#îG+æýÿw2¢ðœˆþú,¯E}màMî4-¹ÿ®Œh0»R^_À7”éŠs$&Nù?¥ÑÿG2¢¾iùm2â_ü ñºpá'%5× Jö為P(Œñ¯‚ 9ß?! >! Î ˆ ß& îºI@|+( ºúèR!Z´HVôÏ”gýképQH:œöíÒá<]:ü¹åÛ¥ÃÔ^q¾I>Üò¯åÃñ7ȇ[Q>¼ó[äà ‰©¤#Ô‘ò¡Y—uW9É{ýÛåÃ}@zˇÏiKÕs0:]ʇ/ÿkù§‘„ˆgqŸg‡´NAùðU’»„˜õ8Q°%3Ïó^Æu¾”YzI‰mH|†³O@Jü,>èÆt£”8<$%ÞvàƒÕó0ˆˆLÞÊí[1 y^«­ŽåEJ‰ Þ퓼>ò!Ù£,bb~„˜ˆn~Ó€ÐXâ«–Žó{Ðɉ'½ÇíM¶¤íˆÆÈØLE8GÍqTzýnBS‹窛èS;FŸZ%*bj7‹B/Á©K¤¨¹üTòsÂH Åû…Gpê€ßˉžZ#7¥»“xm,v!•Ù÷öåÎ$›³ž?¦iéîjw ïk»´â¶ô㊬-¥.íxGžeõâQsÛ‡ËûLóì7CÁU§vSg g£¨±/#¤ò½÷D'߆çz@_É[) :ŒÈ˜(ñTŒr‹háýãˆÜõ¡î¾†µA?å$›\OG,¹›Î:Jz@èLJfÉ­æ*Ö7æO#š"·IË M‘ë.<!q» U°xVïšä²‘ Ö§|*Žrf‡¢¬£ß¸šºB»t{0,,LçH–¦E§Uû‡áùOQc ˆ«Å¡«ûÈ\r€¹ëü1(”B_@%l£ 5%©Š "™×0\‹ƒ®\(eGüO|MG6l‡_!K¢kæ#¢:}¡ð CWi¡«øÐUãõ°¼¨Ç<³`„^Þ(Jße÷`x³Ñ‡` —í±%˜–ú1FÝ|ɦ±Í“ÏÀüN‰1-2\ßÓ%¿pˆ4ªãb¢½-¸Öó Za²z>Ö »Â¦Ž”1‚ößù=Øù9vòÊ[Ú¤Q?-{ó ³I+©>'¾p Rf›³”Ù¦,í!­^DÔ‚^„ó¨¾Ú©W**°mY…þñ@ýc6Õâ:±¬FÚ Àg‰¡F>ןX—ן4Ò“´ãljRíTJ%JgˆKÓªyz0ˆ%ÃKòùÚ;œªµMò¢ æq«ÆÂ!ܭƤ++ºi³úýO¡ên\„"òqYycž&*³RïËR?Jy^–H^‘êµû]ôÛcWþ¤¬¾‡MÀ“‘äª[Ú£±©ÉüŠÃ5aqx^^HñµS“±áÙËQ< PíË%‘…&Û?ýJ¨Jíaœ›ØïiÚü™êc?Ř!-"fH\mÔ þ+JÌÞ]Æfo¨Eý1b:NãÿsäHØàÿ™Øk#gªÌø/fqñÆYÜšÅYÆ[ÍâCÆgq¤ñÆYh¼ig@¿Ô¸íšF*á­c°gßÌçƒl÷‰eŸAuê¿Ãhï!Ì“gí¾Š~p‡ÉòñAÑ#Qm°¾öKëè@ÿuJ¹¾¯87ÍÉ¢¶åé`þ,˜òžNiÅ`"3QÁPÄ!ÌŸeÈ7dæGýn:.¥V¹GûݸÑ4CÄ Ó¿ãƒññÚq#c Érº´k‘÷ÃOlG î…»8øýîR>É´Àœ$íªVÆxl®¯àU‚´k¹9í¸íÃB~L龫=ˆ5ªò„­6â\̯¢_RÂ`íAlD/úŸÐ»y Mâ¡Ú÷ûˆÃÔÝÅ’s#¦µ¿‰o@†¤Þf.ÏÉV·þŒ`áéÔ\·RÛÁågE›4QC©!jââ#Ø›`æùŠ½éŽ³êù~0)‰†˜œ>#bŠÍQòd©R€8˜£Lq¶©SâD¦Íœlõ‡#(ª}|Zuà,°vÖ¦~Ÿ^Ê€„¶·Z"öxŸäwRÍgÙI b¯¾GÂn?u¤^Äœ—vÍ4*Ö¡ð“€Á½­CA)emØê‡±TñPîlSŒsjš£±Œâ2™Ó €…ñ´ oÇØñ 4v¦Sý•øPµU1>Fß$(«RÍéà7+ŽBa=äÊx…þ?ü©JÉWHgUMZ4(ø(Ñæ´ÃÄ Š5CósÅZ!z£´k´ãnIt¶j€¥vÊ=šìª»vÊ 3BKÚ55::çn4Ôãlv-12çVÃîIQ R[¾R<¯´ã¤2wX$¤PlŒÊ&HmËUç?)ïSAH}# µ õ ŸgÖÁÄæ[ R[uHmþ&HÉ ®löâOmÁƒé&-*í¸ÿt·¾«‹ÇTiƶÚìßGºTƒZûM |Vš¥þêkLç7RËMZÀì›;Ò®iFŒ½EÝ\ŶaÚ°‚þµÝ†öÉÐW‹™}‡?—4nÀʼn&ø äqõÇð¡6<–v½`Žy±áÔR>MSrµ¥–Æe“v5*ãJ»=ßm;âºdPi×pźPIÊ]Ê'G+ÙÑzIIÚÕ©$­‘v­ZÐmûH> bþRŽ/%/zíI»ê•¤9ʘ_6Ô|Íä¨m#±ª°˜˜ÁW½D_N§Ì ÐÍ ˆðÎ}4”Aàu®}wåîMìqäëÔ£¹Ó¢•1sx^³´ËüN †Ë çuŒî8Z;I`Õ$}±MYb aÊnì0w¼.írdµ/Fna2 Ðnv*"•V‡By˜Í4¢ÄB„FÕ„F"D§õ?"èÑÿ"ÑkB"è{¼ë~Ä›yfoªªœZb½%çÎjßqþÔyFÉ·×I»R=öMã=ö×c€oÉu’²#˜}LæÒõý‡{´ù@÷ü·_G|˜{=ªƒað¦<G±IÍy0i |aû¨®ä}ë;Ðôéyq„böÃ+'èUÿcí/ÍTç<Œ±!¯Fð…$Á¹ŒÌÞd=N3ÄŒJ‡ãZÔq¥ü‚Ky6”:¼”9?íT«K줒ÕÃŽéw“˜S]Ê»¤]ÙF~'1Ï€Xó]©ÀWªmcèLc›ú‡Û):æ×]1²*í² L4:å ~ ÈÇzq=@›]H§Ø `sŸã ÍYÖ9DÅLh£½BÏÕ_ÞÊh‚ÉZy"ZÀød£§³gÕw8èí®>žNê~l2*ó¬Q¤–'ÆÕZ Ââj ›lZ|C6¦ 4.ò%e&ÕÝ…oÌó}Õ‹å>¬Qżėݩ¿^L¯-ËFé÷³éÞZ;™ÒObîY…»ÛzçWr稯 ÓÔJ^t§¡J³Ô·Ÿ ÇÀ÷hˆÑc«‡Çœ­¾5ZV*ùµe«+ìÑÒÎÎ÷Çiä{±Ì:%„,ü»¹(޽GÓôXê7ËŽC†q‡;ÍÙð x¨ËìéŠqÅ뱨ÓïÄj\©<ۨ̈ö\‹^ñ™2Có\ëa3î³”sÈÕ©þáZ(üüÀ´Î4öèq¯1Ø7”û3¸‚zýûÆôoñrøl^À‘©”öTü,æÌ¸n–^^F‡âiŠÿLjʨ‡šë P˜Õ¹‰"…ÜŸÏ}##$Öì_¶¦¤–]i•’3>^©% úù®>EcC>JÄIÞƒf(lIGU@?LZ­}ôCEœ¨(£ÓTq.;­nÕÏxRTÏÊD Ôš ÌŽ …ðƒG\o÷3¹gªg†`OEÅó%/Zr³U‹¿_Â|OÂãú&™±ü‰6³é}'|1æ7ò N^×|Êo2lm®¢ÎøLõù€ˆ0×o2ÞœeÓ©×í¡× ÀDN >eý°„Ûb…€´ßãÁÑùßýªcžV#RSà q„€Òjõ_ä0 Îx(±°–ž‘êó·´³?À§™Í-ß1flõùé87™ƒinvcÊ’ïOaC_°éÿ„¦³Ó3}‡Vÿ—²ª|kǺÜä™$æ-G1Ïeï eWù޵=Ô»ïhcÊ32Q‹œp[0mÐ0I¬ô»Ç>ñ|iœék_óKÄ0?aÆ“úP Ððófî•b_Æê“Á7RãÁ9±þF~[¾iFÔ4 ´8#ˆª[ÏË~,ÄËi^î ÏKØ*AÀɪüªc‰>/¯¤á¼à~²ÑÖÖbkŽÒbÀŽ&ò)å;D ýÒ§¼‘AóíPG>üVqïÈÍSíºäÇ“o9j̓ïK¾30íþsd÷1÷ÎX©‡ºv”ÐTåù¬-G^DÌ3ÿFç´ ü«Î¤ç‡ña>­Zß<À®|˜ß*¼‹s çôr4}ÇËðaº±, -yñÌ™F_‰ÒæÕ‡ÄE?×\ÁÏ&æ§s*Àfùvd©gYìêƒ\I·lQÂ?xm›[±Ãu[ïNûˆgNÛÕô(ÌžzbÀqÿ6²Aq_Ö 4¥ÛVÍj®ü^òá?BQ¡D¹ ÍTNþ¸Luò"þiÇ‘N/ƒ:òÇ-Û CËÍQë#_9à•µhCà¨Üõ ]š–™Ö®Û?Ä[äq›€R¥¡U3à”Û§"ó•(ÏiÜ\ŽÀ4\óU\iÑ«“¹£ Ô«¡¸›Ÿ6G½s¾@Ê0ÙŒÎ6B“ׄafÁ2Ä# „Zªze žžuð²B|(›µ‡ÔO3wTbÉ ÓV–²ÕC(yŽk@6~8Sýx>!Ià4pòÿÉQ_‚QýÓª}í ]Y›¾ÎÒpl®É0.×Ã|< V3«þäË„;‚  g,—¼£ði¡xz`@0_Î@c”HÌ#§Pλþ}ˆˆís™ÃÊ·äæ&ÄŒZ{#&P .®Ç¨¶¾ãó$o] :åÝr.¢xó˜˜aͼMqc|û\̧8Õ9è¡ä5gx Ã÷kc*®¬¶UMn™¬ܯÈj“Ëö«•?ljšBéa%/:T{.`L±Á§‘6~-‚¢,-Oç“,˜èRòî¡`}F´º¿—Ó^²y2j©S~ƒÙk>…K6Í‚wˆüÔÄòôÀº8&I8ùøŠj$¸swìÕ‘ saè,¯^ß“aŸ”Üî=ËN¹f²ö^Aì=çMWÚ×Õ]Yë º¸Wòþƒ.~ y›èâ>É[e ØÓÓJ†xŸwq÷QÍ~ôqiÃÏáÅÁ8 ®yî–ÝÑ39ë‚ñYΕÜÝ9éš…ç›nÕŸïû3,ØŸÁÁþ˜ƒýÁH½ûs@³€þ`Øuì\Ï®àxoãý(êµñvnêdouq¼ü9—ëØ•Òox‡þuê´ xð©ÐÏ(^ú‹bÒ–òïƒ9ÑîW¸;*jÉ%S+z^»ÏÕ‡µÏÀ ùZJ}æÕB‹Y“º£9Ø[@L¤d¨™ê6‹Nâk''‘õxr¢§óëÆ 69‘ñwƒÊy0î>î80†ôØê+~ŒZ—÷X8½žJù,Bù .‰|þ€°§Ñ÷Gáû£øý"”UìG=î£ð=£ïÑãä¦ïï@rpYQJ 9ýÓtŸhñ£5¼½Í€yi3´M|w¶Äßeá–K)[,¥\µðe\A÷Ü·Ó)õ#Ÿ¾A´ÉQZC¤ÕZ9Qý—‘7Ü—©~ÏL 0â x"Êø—¥Ëž…æÔ“Ú× L]±@•dI—ž/Áy ʳ˜˜ö*¬õ·ôn¾ÿ^}¥†OJœýú›”(ñÆÀ\¿xÖÄ5ÿû ¨+;¾Š0Õßz&|Oò5“Õ¡&‹t 8¨ZŸLæ ¹e7fr«B¯¸Õ÷Š#¾ÜYT1‹WL󵯞"qG‘¡b ËkN¨} 9î,fÿóPW®úïaòÙy.³>!þûQ(¼ÐìTàbÇ'jܲT² þÜ!p”ò4´v7­œë1©áx’ •ER"ųŸ† €Û×çjc|¸ ²(yº:! ·û²çgNÌ0.ñTÇfª£²ÇnDÈ#_CZ¢#ã;ÙAdd˜ÉÚÿ(ô ã¬zöSíG…hø‘?%?Þs->›Õ²“ìˆôêvºEK¾mˆ"“ŒéÆ*k¯GàÚ “í´ä) âÚ ý׿!²¹²ok³u\;–‡pmFrÁ]|Ö„kéÜXB´!‘ˆö1«¢T$þ l àOáÏÝßíÑTÛWès4¨ÃgÒæ«ÒÞñ1“ ]¶#Ë[ÓhYVÃN=ÆË°š>ñVžDÎoiÇ;*èê/Ã_ÏçÑì=¾Ä+°ô¤˜B+›Eg÷bl½¹q$ªÞ]±s )Ç—éTßò³£é7pýüÞp,KÇž–X]¶ù@¿OÙK»O(Q¬©õMï Úœ¦èWŠóª§ oâ\ð ¼à«.Ù{õxµè’‰ýŠÎüÿ £W־ؤ¥QMž}*5˜WW,«ÏK0å[´ |­(zÐ~¼§¨_¨A^†ïÞ|‚öa-¶2|Î|™ôw.N‚òì–|•U //LJ¸%T†K±b.a½YlÄàž¥Ø?eüИRì²íÔŠ»Å'|¦Ùwˆ•SÅ UìÍÆæùc&(o;Ux’—Qåmòá)£j«èïß°¶µ_¢K튴=€1+ÖTæ³Ð\ µíç³1çQÖópÊ'\Á·Ìõ?^6ëŠtx9‹:m±•ã#iýH²-Œ§æWöã´2u„ͯöëTDA[+!É‘iê}F¨~ªå-7©›.#zœÐT.ÚŸõ÷b>÷ï^V«þóš0§ì5¹üj3̸çÊuƒUïÙ¬ä9FÑ.À«þ!R uŽºix•ÀA¸! ì8Ç_$Ô!TÑÉi¸ìZÍgFÅ}••'Òâ$ö¦ãTü,¡ZùA Õ¾?€Øûç(r®Ð™‚÷~Z±è럅2Ç£3ƒNå¼|# ¶4Hfù`¤¼ì“´“iu}J>ŠŒ~gRãr"‰þ£ÂVˆ©Ú£¹Ã<Ú šóM4óé#×Ö ‹ª’9’õƒOf˜á žòì7–n´ žd÷Öo<<—¼x`P³áͯ:Áªæ»Œ¸Ü3øíA¬.ߨþ JÌ[|ž®=ˆßçÇ©¿‚çóçŸÒÄöòcÕ©|ào¸?‰X¿EæÁ¦Àoñ~<Ý?‰÷ñ~ Ý?÷o°öµ C v†K©n'vÚe…®¦@Å Ø>ôd˜R’0àƒ±|à‹Rø¹#AfÌÈž7)³àf†…Ï b³•å›AÞ/ò®É˜”–|îVðìDßñù.Ð;•ì¤9ùÑ*ÅÆ igmr,mff«˜µ´÷P³‘OiâYV>?Š?kÄD$?1óZ´O#úmf?3òÿ׿¯:@Æ@½:ø_埉€”Ϋ\AA™ò§;;ã-¿˜Î”'0%l~V–»ßM†ÇWÞâ%¨ä±×b)£ç¼Q«Ü¼$Á}ß ?"X˜Bß§U{Ü–(icµR†ëwúˆ}{Q‡¯üK/}i6w‚àç;»ò! EË)–à©5*¨^†š¯  ÜUM$ÒPWÞ+FT;€cз_ÌWÚÕoKÓù ´m–\pÅ }‡pûÐiÆt­–9ÙjúofA{s!¹£ÖÌDZª'@þÿ éÜŽ9ºCШ"hŒc§¾ J4J¬ÑÿÐ0_ Ãa+ œÒÈ}úè8Ùýøk¯~Ä!8 šÞˆZ>ØO¯óqXjÎGƒT¢´#B{#¦Ñy©D×é̇¬O®È&é¯åNE¡¤„>þ®ØêŠ•Ó8“ô¢Q^”þ*>—Mœj±›”¤4Û~æ; w…Ñ *ãï·cUȈ¤—P%N—M®Áx’í ,Ü’A%†â˜ÉÅ&>._áT*ÆmI¯Â V<ÍzX»§Õ4Z¶ääjN+%˜\ùEŒl±õ¸0̵¡“íŸi»Î|( /¿¯”í´”ôµ].V(8ÍéåýK1î3;Ïm— ®Ì,ñá ÛõbCÁq^…Ÿ‰¶ 7†%çY Ð_|øhÙ ]³+üÜoCŽÙhã¾&’8B sÈ–c*|!ýÕn‰†‚]&ó¡x¬F*ÆXèPN« ÇM½^Ö¬ŒßÅ ~Ø #G»-5D|ô\_˜e-Ì@”ÉÕ _ǧ‹6ÂUÉ3Ñ NÑ•ê^ ÏÀl˜zh+¯'\A“´­J\IÆ4‹NéÐ+{ #×°Nt"ÁŠ<ÑéÑT"½Šž¥{þŒ˜câ>±(èo"Ï2²r®2üB©Ré c›Q4ù%hū‚³œŠŽ&ˆ¤—aå…³lõ«Gñrª“DZŒ‚Pyö›½a }ÿëà²l –MÐí¿ç ‰ÑF÷‹mhj˜&O¤X&XPhA}ü¾«„ÿC«Ð爎e|ëC뿌ivôB ×ûÃæ?ôÿãëQà¿¡€¾¦ý‹"âl§â 'èF¯°&†±Þ,’·œâ_5>ñN? 3VeüeLUñÛýLž.å‰A¾§ ÇÉw4ƒütˆ9Ž2{½äEnÅíG¹û€mšIZçAñÿxÇ ³×ÕÚ(-¥½ ï­ÜYG/Z0ßl»&r¾L)kIkG¿j\7VVÃÝ3KŒã¦úǰ:Ù‘ª]ß…ú¥½ÇÚ>tš?ó` åÀTiof¬íäª6.7øÚå?{¤êÜ…c2££\>P+NÁvêí黉¹[à9ùíÒ¶a3Œç0hæŽ&¢±¬ÎÓ,AGfCOÆÖø¾öâ˜5Ÿ³“žÏ$ѽ 5Ÿ‹cäîl |ÆíÍ´¯—$èć+ˆ W`¨ù,ºÏ¥cŸËIì0kÇ'ñÜUšãj>)î+ÿÓO¡Ü©[qLàcl &'¹Þ,Îe„ý·œVdŠ)î0)yWÅá•Z{3N¤GKpÉðgÅ\frƒ¶ðTLæYlžYbø’Šãªí;S ±ö’¨bRqÿ©¶3˯€¤©u,ey.Æs'|dC¡a×y4‹ü¨ÞI¡w$ÛÞ'èíAkÐØÌÊŽ=Z<¨ã<Æu4A=ÌÞ(7Ñlè0 }Ýu[£§5Y“1Õ€³;xp)Ï¢>ˆñþÝžV`Gû €¦'÷O&Û/¿ÂÉÜä{j,`æ]šb¦ëWêÂæ¯5nbÊXŠfrÚ"ßqÙ\;Ý „¼§K#>êêv+EîÖ¿£ñÃ%ÕFõ_ÁlÏ‚¼ê6ã¦ÃÇGEM¢‡òAÏùh×@ €Œþ¤ê¤ €ÉþÀ_‘úöà†LYnôøæ^*L­o|¨«{BWÕúU&zÓüÊCÞºÌ7 ¿÷í ïÇè%–òó–‚ĺr~ÄÉ• ^Òö[^ùÚ%ßëé”0Yb¾t|Œ5A÷FUn„‚9úñÄÜ$LUÖVëËÔ»çÊâeA• (ÈRϸ¨ç¾:>Òä¾¼ Ò x˜Ë¯^GÏ´Ÿ—‘¼aŽ:êù¨¨…z­«PöïÑÞeT9¯Âq=åzCYbP­µ¾¤ÐðCWÖЕ%te]™BWÆÐUT誻+xÕººÚ{›þì ïK¸J# S¦ œË±%ƒŠË¾À ˆŸ'u-`ç¤uxÎPÚëÇ<É—¤ÓXžQÑϤ5“·›5}r¢äIÁT×ßEâ «&\>½‹Lm¾~h4¬ÂiW’Öpe;<®¹ºÃÐÄÑS†Zß^ÝHsïjÍÑæ$†ãÃB|VbâèY‰”Mî°äÛ…¹ÐyE%¼1”a Œê´uHžé¤~S æ…5çâû’E&sñ™êÏcØÉâ3@’ª?‘x†<‰cÙ)ýqœç¢U¬ÔßУxVåÂûsô긔v^.>Sÿ9«Z†]«ÂXÅÓôMÉ\©¼©÷4˜ï xT܈•¨Ñ¬–U<‰Å+°8Tŧô7V-îYÕ"ü뛇%Æ÷§ïƒoæ†)™Ûß(ª¥dŠd*öÍÆû)ý“=ZqÙã]8ÁÓõ vR¬¼j+–0þísýRqYÁ¬«úAÏÆ+Z‹PÍMåônÊ 4Q¸†+ã3xUaÞË>ê8UóåðÇû|ÄÆÒ»&:M×¶Nw4ëôT'?¢ÂD¯^¦¿+£wõð®Þ¥}$Ê‚ækžÄÊ]®U¨h­óTßïiîN9 L)ñ2z[Žo=Ím¶3PàŒ²(:™•#Æ–(?¹èÚ‚ÉÒÞr‚ɘr£•ðC‹ÎŸ…çóŽnIMù–ÏTW@© Š~‹b¶ú…Ø} èz¼Ê’̪°á€/Sý!ú¸,–¼y×?œFÏ‘äâEýÍïZbqÞu=89Aúâ/Ç‹ ¬Pý}B6Ïÿ)n·7[Í<×£e,˜ï:áßCgŽUÀ*”\+ðS%‹‰‹u*íÝ'½ô$”¯¬„áù—áñÃA<èÜI­êþŇõÝQ¬ˆïj¤—0Þ~à P#Av aâ ˆºwŸÖ›+Ÿí—^ú Að² _Ô½½™Ûziîü{‘P èƒqú°žŽbŽŠŸ­ÀŸ•Ç ŒúÁ”Êë¸ü 5ÕÓÙ‡}´ÂACOs žÏS=]}”r¼g5+î䃔1LÚ­Ìz¦^Yn`H;—<_¤zzú^ ƒ?T´(}¤ä¡ƒ)nðØ-Fô™EÊ-€C*ÇkÏþäµ×/âºz|íu\Aµ>U_çÒºŸGï‰ù•á•ï8°0…>­¹?Ò‹ˆSÝŠ+1™UÐò~óÜ®«ø:’ÌW™÷[»Çn£B“¸DòŽÆreTáªh}YˆÅøïl5í.Ž"qÅëîhC 1Ÿ Âù#¬mµÄ"‰Ž†¢2ÄÅvàGˆÎD¤j}ÛBo¼úB[Èe"DrjÃè£\ÁŠ”¤ÇéTaU¶*|"½H™!ʈà–mÆ¿]Ç>UÌs€xj,8Р*|áù¬ÍpÎÖ«¨>~!y/¢ñt?º[j^E¯¼Õ±ŸvA*^‡;—ié[âªc?áv<§»-⨔ꗼ¿Âóé(å(U8¨\Ñ1Ù9ZW£%¦~ölT”Ææ‘M5‚ÈŒžý©E¶(ÉGYM @¼?°Ál‚ß‚8V¾‰ë&âÄÑÊL‹8<â¹ØÆª6â|çGåª/§öÀ˜°Œb-¬˜Ëp^?gâÛ¢Ï`3ñ¶6[ùb]È5$Ï/蕘.«^Ô³ÿ>ù*ò—~¼Û©5¾DULnËÄÃé!ºúÜ?]òþ”8¾á“;ãK<»‰÷kë7Ø”©= 8ZL¶£Y_njÔ31é µžjSðéò¢ˆ~0lt_Ç®ó2úŽÆ|ÓÓëÖà~ÿ`ø³f †7òt\ñˆñØeã ʶ<ÍãÃ_#{@o›jöì7‹Ê—¿%@d#Å?»ýž{' ï#qš °ÏÓãÚæé4Þx-Ú®ô³æ.Ogœ+ÖÓ/ó*jp…‘K¢MëË Œu q@SN—kî}$#bùðxtð+ÜȇˆÍl›id&ÿtúzâIû"¼ “gwsáÀ¬o‹°Æ'}a¸,Ðßïü:Lˆ@kQ‚Q2uB<#LˆÓàea 9¸‘›Æ¯‘|wõ2fÏÃêÅÏ6ÖœOÚ) æ'í\¡SQe~ýŠïrZJ˜ -Ê(‹¦ÕK;W<_¦z´>…gY#Š%H>QÓÕ£Ó4’CVPiÁT%û~qV;¬seÖÉB"ô¬$~<Ðé…pULB°GM¿@Z·¾)&=ñÁ%òBr®úV L$çKÞ8(£ÌŠÑ« ü5SMMFZ‡;“Aøäò**W{È™I>Tf ë +)(gèRƺ§:L§#¤²ÀRj® KYñyZ H5¶#IÕ†`̤å€ÎLpG„b– ­†&ué X€0p¦E ¨!ŸŽ >Ì òéíÿĈO+X´È†óMX¢†Ÿ>˨ŸûcO°7$Ûýºóä„zFò—˜ÒÛƒ¬TÁl×ÍlGÈác2Õ™ÿ¾L˜ ´ºp$øð’‹®¿u TÁáp» ‚¥—u 0¬*D]HêKGãßóU/ÆUÝqws=aL½]T úÅNIë ¿ ­ŠÀÛ¡nBŸGˆ¤·Yè†>¢±ôõ>Êî©ávëë$à#ÐÜ¢JÑ„â#Á®DH¹ßÙùʇÕU¦ç&êK²àÎâhx\E›fÍ€¹¼„Oe¢OËÎÆì\õP}¶`~ 9?5[EóÆB Íã¡dàù÷f«¬'-Uò¦À#‘É»ŒÀzÜ5 [fMŸ–XÐÿ`Ôhè—6Ùê?¦²Ñ¹¿®;â:M|’5}•Mæ0¾©V?ÆýÍOžxí&p%#¸>sE€+lä¢Çž?ãm´ô‚ £OºäM›?&>Õš>æ0Å æú&Æ.P€—£šÉ0½H²,ái9Íà~æa)ŠÞOkŽ˜ÑÉ‘]DxìÂY̳˜«Ïa£ä |ÔŸDièê†ç±3úpsÕk5ùc«!ðfãDÓÈ®œè¬ÐD„‰–i¢§âD»¿ NtL? ùîÌÍROØ£-^8Ÿš«~ð¡>¹³àƒÀïòïÍQßÃGxôdžDë0m"Y|†õšÃÑÎiš>‡£çÀ|WÐ|·KÞÍ=‘XJóMkÈÿÍwvà5M!°8ê¿HÔ$IÇ—õHÇ.Ï`âõT-Õ J;[T…ƒ'mÜIЛBï¡¿8¡êçÿÀé2­èY‹u¸îå$‹¸K«˜G y.u€– •Q÷ŒBOý"I )Btˆ &H¾¯ˆV…±By!|nIVÑ„š”˜ú•Ý…Þ9Í(*(ͤ 4u ,¡Fmô•µbê#ýŸ”X”õE×úˆøëÒÞ˺»‰²¸ÞU€ñßÖàÝ™)|ìÚó¸øÜ—GbÔ‰ˆ#r”XmJ­¯Z™ßãêWbÄ>)6§ÏôµËW½Óûäk"±™4¸Pu  Èû]A }ƒ¦´Ðèñoñ @µR¨ÛšIžý-JKN f5(/Õø‡3…xS4ÚF…V G1f¡¸!ÉS‚«Qw+&äûŵHôða¶éb®= àI©Ž‚D‹yªõaþ"Ü5ÂM¼Æ ™à„zOâöŸ~³îÍÐ 0*Œ.Lû<„f¬†WáǸ‡Ûwr d¡ÜL ЋРøÂ7£WÞ÷BèUÑ&`áÝÝ^éìÍQ•Çö:V~´ I $[½{¢W=Me}/Ä*¯§lˆ@¬zX ê‹®÷ù1Iw“övùÚ•%±ªV⦼ÂMk/ Äz÷VˆÕð-ˆÕê /ÃÎÚÊêÈUŽoÜüû;BˆÅÚ5¥Pÿ[{žœOÜ[sƒäÏý¬‡l‡‚BûÐ7‘}ˆû–Á™™ öé>÷£§©ØªuX ÄxÿÌâÚ­ë8ÏÊ,´ ñ/îØùÌp!×û¿’î «ó04gH ‹e©×oÞ² nè¸îDëž?kD1MˆIŒè“ê;$Ûb´#ÜŸÞƒ«Åã®”Åèb^<=§x,‹´‹Œ…þwºƒÝAóÅm·ê,‚¾üÀu¯ }5Ù¹+ óÕÁó_=®¬æîÛ:v¾/IÖ}ê„°X¢ t]s>ÚÓ|…•aE%e¸âj>éS×§¾DI¤×FOóG%eVz+^Xèf*)3Ó‹x|QLíqjDÚ[AòùN¼|Õ¬=ücH ÷øý0R3«hÁ—ŠJEZq)T᥌-Wáß9ÙÈ}ø]áºV-±³]¿O¥£¾ÚÈûÓ(TUVx—WE âC&Í+¬!ið÷.aõí-ƒüèéH³±Ó x0Î pà‚‰ÀzI¾«-ß‚û" Ùx—µZ¥ /] ó|¨Þ ‹>3KRKLy~Nž½U‡Ð¢B°4¿ó\ÆòÜyž}z!e3„ìr›CH¸E¿Êäò\lÃb ºŸ2‚’î•ì =ź¡ÞCÿñO#‡2ÕK$Ûäæh™B¬‘ÇÊÅΟUÐÁBÄñ_=$XQŽšÜ«™ÍåÈ=ýaÁ§±ûiBŸ€£`BB&¡Áw¨Öw +hþ ËiZA¯1ol [ò^%‚Nººä=7¡ ž¢ ÀzdšªÆzÖÌ3HÞ—PnÖˆ1帢Ø[ÕH$¨å”«JÙ&8pzVµ‘8˦Ø_ׯædg+ ¾Ì¢¥ÁŽhA)=}BøÈшª¤5­šˆë|¶˜R.¶Þ [µUP…»‚Ô{†þþ“HÐÚM|{„ô™–>BÑ Sõ s^ЫƲB‹ô~Ô†hK|ìü—_k‹ý{Û„ÁÛ f…ìn 6èßHþ|\Ù’›<çãSŽPÉHÀ±ûŸiÆvhÎDkw­‰ŠZ¸˜í÷ÿ£'=sFOpZºÓª9ºtúÑ»®T¨aœšJS^LÓµ>4]¥ú•Tü»(Œ?°–p„Œ„«‚•Ž L—ðôƒÐ$)Êz¬Ð *°ú½·‡Ö¡3„ç€Åsˆ ºÄû/_ŽH]q í_¢[K$oãì× ­c«^êoëæ/í?%²Ž fçG)>l,3?J}bÅZЗô¨IYiâôZ +ÃÞ£¯”?×Âib­{×%{ '³`|çÛ-0…`•™«TaºÀ¡~ñ0™ïhx ò¯'Ãã€~Zz£:WýÎÛÂêùj órŠ5ˆŠ2^Ä®¶ÖÒÇ›A,£œpþ>ÄhñÙ€ê~¦´³þN:Wœgá1b›Ì5.Ìé„<É…ƒû’aljƒ¤­ô¿ôÊWتQÔo}·ŸiM‚àñ±½Œ\~<ž\Êbò‡ä¼Œ8õqùa^E¬-ÀÚÓ„Gök)æßùOâÑÀñË‚Ùÿæ âÕ¿$T¸x¨¿äŸ"ïp;aL÷•g¹FÿÏàå2´Ë*eFý­ÝxT†»¤®‡»Šú!J7³ûoañ7±øºÿ ß§™|//VLˆÑ+:£¯:@±{…Øý$”p‚{ÈîË"Ø}±{”ª­ôÿæ»(æÉÜ)tåFžÁâ+ˆÅÿ“·† åí Ï. ñ¬Bx>¢çy¤Ža¼‚ßS‚j Ï&yǰ5ᬼ´«—a­˜$êõ]Ao4¬å‘aíqÒcÈŸ««DW9ì[ŽA†5ìè4EÄÛB/¨hÕ kÅ]a5KÚÈu kÅ]AÃÚª® aª”¼¦Ã~”"œÈ“BÖÐ=aÝ#E†µ¹]ºa kN©˜×4¬­ê Ö°~‹äýœ k¥]AÃÚ3]AÃÚÊ® a ?/ª"€HÞuÄòJEsÞïþ†5}tƒ¸oUWаF­£a {jž¢›d)Â+a†Ùó£[Ö!ÃÞô2¬å|2¬=zöß5¬¡ÓɆµ~ŸÜ°öLUذöd•nX»ðqа–U¥Û^ê?Ö k”ãš ûM¶µzݶ¶/wÉ»ÿ›lk[tÛÚ«7AŒ}É{ÙÖæé|Â?lkxíOÐmk¥]ÿ¾mM¸wé¶µršÌ³¨i[£é© 4´K)Óû´­]|âlkøY„míå&Dõy]!ÛÚYiÃF¶+†›«–GÖäÏ>}“mLY7ÛÖh®Ñ¶æ ¹žˆs=¢)l[`¶µ¶œ,Õ½›¦œlkÏîÖ§¼ílж¶x·>åŸ ÙÖžéú÷lk4ßÿ¦mÀJtmk-D¢WéK‘Ñ,Q ZãSý2Ðö´CEU8àyÒÆn¼]aûÚzºÆIUKŽcÝè‡öµã̇•¸î…Y¼N4é–,£.ŒÌ›Z.Ïì‡r¯wéb‚$\ip4uPɹQË*Æw‘Ü…ïrÔ ôàËÀž)ø—ûÆwE,½bUSºÂf|6ƒ }í}a¹ìÓ‚öµ?]ë_›A°Úo2ƒL¹¡O¢+AûÚâ%8ÿ××"ìkS0ø7d_›«ËTþ__ ¹¸,#•ñ…\!W½¹ï¹ñ]ÿ´k´NÁâC'¼MN¡®{šÂYx4 5dœ#þFƹâÐDãÜÑa¦&˜ÅYyZ6ˈù 22„ä{œŒs«tz4ñZ¿h®auùï¥þéØ%j ÚçÆv…ísx-ìs!tûœ¸Ñís:¿ ÛçðÚçðãHûœÀ³§»þû¡gÕÀzVdê‹ÍÕž?ްÏzÞhŸ»‡È¡g¶Z‚!±}©„ ©]½ìs©„c"3µë_ÛçîüÉ¿eŸó-ˆ9&Ô^†µ•¥†³ß ¸ùWõ¶Ï¡ÙÄ¿ö9ð›ìs‚ÊGÚçô™ùfûø_ØçB«‚²¼ŠU±VŘ…AØ]þÁ¤QE@^FBáñZH„ÒðLèj¥~åzB÷(¶.¤ÓØ´‚NäîÄÕ“ÀŸ&=B_V…$ÑÿÅW¡¬Â¬áåÂ…ö¾ê£($>ðï§¢7ºßNÀ›ÄËžüRÑXÚ)¬?DëŸò¤XyýQ›ˆ£ç”Ñ6Ï"íÆÃqä;ÊÉ ÃËën½®Aa2!í1?óQuÕò¥¬…!×aÿ?¯÷y /£ vKüÇP?0%ûã÷ALöÇM¤•ÓøŒkjšº7Û>É÷z²ªÂêÃªŠ´·l6­Ô Jœ ’2Ô&J¨“žó ýžfñæ>‡Kô›î³–#CæÓ+ð¶¦9_¯ ¿vu æÓèulŸÃ}ö•ÐlÓ=&µ/Qž¦Bñ}öq6Üç°ð’’´Wy¼+RwAE©˜ú¦k0Ž[ƒ)¢'E! f»%d°ôBøN|‹2óžPT¸Ë0Rą̀bÞ­”S­ þÍžØÊÉ«)ýAÄuÅÕ”Ãqô·>7R´º5Zþ:&í$®!$£­C°ó𰵳㣰ˆ.mð–ÂÐÚYÐNÖΜ¿ k§Ž…«ªU踺!PZª'ªaoÂgÞQÂ`wû“hMå«ç… 3e®ëA;¨+dX©_͹ÕÈ<ÛÐTˆÆÀ#nf®:Õu“‘” ™â ARȧÇ{CrRο4’r:Y Ìa *²ªï,IEE9êug/#)Ûÿ§{[ÈèáìÄz‘=ëBÝoßøªŒ4’ì¹Ü„È™ä»1tåÇFÓêÈ® iõu,VF¸u\òõ`ô>âàÙ’÷ñb\209‡ ©þ&fꙡi5ÑóšVÉÉ‚R%©L˜V“CòAJ“Rõ4vsÖH‰QDÑZßÓ¡™|F¿Ê3G©À—žó(g?X4­"=s™À>D#æ|“i[L!ÀKʼn¹ÌÕ¥›Vo¹Bòçþ{ÊÇÀú°iÕÕ¥[ÁõÕžà\õö^õUKÖ[{W Åg¾Öæùw´äVF4—©[‚æ~÷QȰºþ¨0¬>R¥„aÕrƒaGîrÛ¡­þ‰nX½2¬Îê *dXÅÂAÃ꾞 ”(ô _;+[DsõDh®ž¼~£]ËßhW‡;ö‡ÃG2ÉSTW¦è¥¢`õº°¯>»<Ò®ú ÚUõap@êð}h¤n¡]µˆ–ÍÈ®°]•J)¯ßdW­Àsò£Ëœü(Õ´<Ò®úЇ®J‹C·«*bØI]a»j’Þ§+`Âc”‚AžÏºS®†ìÆ4>›ËÊUª° ]PT_}6dWÍ­ úYùA¯qT窇ÝÛ®JÓ‰v¼ »*~¶«šI Âgº]õ:ÙUÅ¡ E·íñþ+×o !B–Cêƒ0Å™¾Ð"¥ªU]ASìÓ]AS,ÒŒ•þMWP”ÆŽE—‚¦Xê;}²HÿÄÿŸ¤êNö‹†h'ãÛ”ÝèÖ”Mv=9——“@tV~8(C¹†P6аv)»Í?ýPÐ|2Ô²áþû ó- \% ¾)6ù“ ^@‘ØkÌÀ²ŒþèCÔßòe¢I»ž<#‹Ói0P‹GFPlsb[7ð*¬f)çß[w£0+F<þmÑc6Äÿk,ž<¨¦L¥ÄŸ«Ý(ˆŠW濉|Y·°,§hAl C­#—P+‚Üœ^‚Üè[ rú¡-"L¡·Â´üÿ‚L×gHuA™NÚ[1›Ä¹*]œ##´.ÈUé¦h˜ûçLËd@„ WqÓγ²Šžàß,äþ”xz»ÀˆçÅÆµI߸®ÒMÑß ½QUT!Hoï ^Œ†(ÉwºŸÀ¥Á®~ƒ)ÑßïÉ\FÓ1~aÍEcðÈXSÂ*‰$'Ö»þKÀÍkBG"ù\Ó=ÊqŽã*jªi誶S#tLšÒÐ%C ›b|›wOóT›m§–•­c‰¡Ád¡ù”Zó?ô"^}+ÁðÑùµàÆ  ¥&uBTÔÿÏáuÙæ–“¢àÚ,uö‚¯:€­Æ-åCü“ „Ìè/ÚÇÚŠ§Œe3ŸaÂxˆ§áöT+Ⴣ‚ÆÚN‹ÇÊ,K²°ì1‡*yG“ã/Z÷òÌ%“Í[MÁ${ÃE)ÉSBEîÂ"˜*“ G•L5o-rÝ,’EE¾O6B³fo+™hÞ ÂÇ0´¬èEºÉ:Z4„E ­d×ààëZa+…×ðåyÞ’*y׋&í˜G!Xô)*ú˜^”’ÉÙ}‚Õð<•áí'Õ¹½äE4—DèÍÎîh¡3èÍrSzžZp7Ú”s­ÒÞ˜Éh½ötÂçÅÑPµ´³:C«‡F äòÓÐmOºæz&ØÝd¤ÿȉ øßþwzµ_°(Զ˦·{£ÀLÄ\·AA,4*\ˆ ÿ?Õ¦›ÀgÂÌÞç÷¤L/El®Úõ™`ßÈÿA®úÅ[d‚u}@ñL¤uY¹êzï×ÐZúX®zD/òG ζ¸§ ðS`´æþî-qXóÅ€?ÿÞ\uã[ºq—Î(¤³¼ºú-ݾ;Ÿ^î»Õ"y¿ú:T±é`T²ÿô×(ê󿟫ΠÖó}üâ7øæ®\õ!Q>PÉ{ ž%øò»¹êPñIè%Eóþu8~‚™ígŽVæl!ÎmŠC ‚;[K¢Ç¯q=í­^½Œ;ÚRNObÎÖHCkV6:/H{;Õº®¯5:,˜×Vh{lfɀNjÉ÷Ø.ÞÃê ¨,nÇ‹cÖ\æîÖ’x¨ùûÞê•wya6¡ ÍÞj»´¢6k`Ÿ1 : í}^ \ÄÚl—Š­hœ æÂ\ÛÚŒ‚ÏX„)e•ª1ç€n˜k'SJ¢“ñþ¥øz:”Ò,¥ì*”ËÉeeÓÏ!÷™çUV6 oËž#圇k}X©±èÏ×AZ9”[ê઺²ŸIýå^=ù+¥s9|ÇY-+Kƾül©'=ê¹Å¼[âÔR H«oçŠ20'[WûÚ¤û¤‡ëó}q÷á÷¾j9žuQ^Œ&0òZ §8)šÀÅlõŒ £ 4d«oÃÅâÀkÙ‚bV`¹5 Ê!ƒFHÀKìðl «I9†”b÷&è„|?î f—Šq_†%í¬k‡µÁ*`3Ë bôúmÈ„ë°ûYsr¡û|¦5¥†ÍÄSø¬.ðN(ÞÒh¤$§_ñ±j4Z÷ ”ÏÞRkßB`´o?›ÄÏFñS*~šÅOµøÁDQL.–|k’#éf˯—Äy«¥ Ûàíø5’wËp4–ck3†‰3T5dx„’%ªâÙ¨äB?&ŽaöÍÜQŒqþOC(mF=ûía¡äa7`)  [î„»¾(t ±ËòZ˜¬2w«zîçAãWJ¢p¹"£oçМQM‚æØ~Šˆ.yß»ƒ*å«MÕœ,?ä;»ú~ Èû²…NüÐTê ­Ñ%Ñ2 /B–·ž’„IÞW(ú|1‚é?謳‰gÍã“,铬’'ãñD݋˫ÚÈ&Y4ûzÛ^‘œBî87r{1Ùûðx´s£kmÁêU,d&ñéDÉ‹q#Ù%¨c6ˆÚµÐ}ì»k$ô=™zà¡÷{µ]ï·ä›ß°³ëý4tª¡î)˜û ¥µÐId2›ÃrýŠMpkH›d üCÚy-wŽú‹ßôhSܽ :+í•0¶{“k\¯¾‹è+†à õµÎÿ¸&„)5^oîãoon$5—o–zr|<#’ûw߸û{¯¾sø[dI÷ÎQoÀ‡Á\“Èâ ÝV{gä´ô­’×2bc_‡+Œ‰&ðgx¶Y5HẠ]9ß'ã÷£z‚v¾-²[Äõ0]~2I†@‡t¸ÇN†ÏþHY¤}ë’Šë1,¿§z¸T\—5±ŠÙ‡µ‹ÓÙ¡Ý–”£,ï]Ö†Gȵh&׳< ÍDT`C»q©ÔÐÕ±o8Q¯ ñÔÆÖÚ›–"«TR‘ÚUaÔZÔÛ'›MÒFN.ÍæUøfD«CЩœÛ_Çý M~]«ÀºÔÒ¡ ]0‚ŒÁ‡õ,æôúv(XËËýô`-iÇólÜ¢OÙZõ£t\f_¢XÁÏY´±MÍž}&ß!Ű»'] w@,`¦ˆ@8ÉU8]îB¦U`jbÏA# ”^t+ÅØh’·/G•öIŠnò4ù¨&×ÃÿjqK €¾Æe¦@mõ̼Nƒ G³29• Vaý¶rj+~U ñsÌž7RŸ%¹?/C¸áy,¹/ÎÚV6 SÉûð©0JRî…7¥Ý„;Õ7ÔÑ"::/¡wG­ßÞQÍy:Aü²bn°g¼ŠzP…®òð2œe[Þ¹‡xÜG ÒËhÃ„ÊøpÜÏXÜ«o%}B}›×'¢o~Sï¾­|åúótŽY=ÃÓù »,y1bWÄøW'ñ©Ýéö­JN·k€§Ó&yãá-ÿxJÒ}ä1æûڒʨjgP–º’¥þs£,UÓ[–"³Ãz2;Èý Ož•ha¸ ¿Ë+Æå\ëK Eß/á/‰pܽ-­º›Óc?‹¤Ò[ÒÈû»·èo0ë‰N¸É² åÇ2"DDLbÊð+鯵Ê"‹U˜õƒfol—#œlW8Ý$ó@É;-qf³ä½.Jú'LòìÖ°¼zë;Ë«°0¬1 ¹re4UQs=:(cÃú]AÏz¢QÒ&;ŠWû¡g¦]tMãT¥ÉþHaªÝK^Ú&Ô$nXDkÿÂЪM¨F~——OعTà@²ä­ÂÍ|â>x¦ã¯x'ûÚ]?ó«=c!Ù.½× ºœaHŸÏÃG¢4&£´ƒÚø@«À±«ÏUƒ\TDUýO¸\¸8PDãÿLÂÜU~g/«—Ðø)ð…œ9ê—Aök`ŸÌDõç! !«‚ )ÀE ªw]û‡d'¡fOú—‚*¶ùÂF’‹åb°¯ÿ’ÚÐ Í–ã8a b¿6GlhJ¾w®Tî…"Ÿb!O—UÚ€v•À;ìÄèr|äïù·Mä-sÔ{1’Ä>T†k1“U…•¨Â¶À?¸—J/MÑÙêµÿþ÷UõA´ëMÇC÷ Qþ¤ ¸µá£î {¯˜ዘnë5—__"€Á½Þ‰¦# ÿ`,Ìã1”ÖGMÔ¥õ£ð~÷7Hë ¥õG~AÒº°Tf¸Ò…´ž|Ki=¿ Í^»A`ÿ#ìï ÀŽ9¸ÄXnª‚öý×I&ïI7Jë¥4Ëù0zˆÂW•?^ºti‡¿¦+ša5ׇ³c)§_븦¬Leæ^K`§˜³qÍI?EP:è‡?íñÁr3c¥ Ý×`‘!dt»>ö绕I@þ :0ˆí[~"Žó4>$c¹ ˜Žÿ7Xp>×\îlæD™}Çk iÈáŠÌÞÈIâˆ!”Nbš´áÇè™V;šD.Å\…Ä1åÃâ¹þ™Ø{ãôÀ~^>*$E¸îðü«7 ºVƒma&P|UE„ǹ• ñ|i¬O‹Ò- f£WrBˆ™Þ.º¥×6ÅcJ¥úLÄßÈê`PD¹FŸ.ï’ û‡ùF5n²RÁ,ßÖò¾|’i)?qíEaÐHN<=Ós¡Ù³ÿ)–×äÇÜ„Áx>CòcÔý“ЭÂÂgè‘õYßÀNáýõùn TÿÛÒÚh⊟Ð¥ÉZ sájñ Ë°jôç GP° &2ÿÏx¥.úÏb|\Oxš ’o>põ\3¸2@IA!æµZ„Þú’lãË|^7PÞAP=üÿ˜ä݉oÆBÇÛ°ÜÖLTÚƒ¼¯v`$’ö©†ð_¹nH9ùQš|@ýz-Rý££Ý Üq€ßñˆÒMó¡Ì~ýoëù¬»è 9³ÉÁS_4×?A€B'ˆšvŒêz”¼Ïδ‹fAË[ôËîü„srsÕQÅØH=뀅My¹Ûÿs4*µ´³ ÛA;ÛŒG· ßê‘Bøôõ£h8¸.4_ª 6\CAbyšÞÜ{Hwÿ_ É~¹ùœ¯BCB©ÙÑìÿéW·ØãënØ„¯p/ÙÙ¨L‘§‘Ý‹>M*ñ¹°¸*)Oâ1Y+¯Fˆ¬‚ÿtl­<8bßÕ`É, ‡ÒÏbÉ^%*9þ¢ÿûñÿáÊãßwåVãéÆñ—a1þå5"¤—}ÈN2è¼')CòV¶ÂÌzj§‰Eíhô´øKïI‘S…žt9êâ7uÖ4+Ìš6·B](S=ñj˜ÀD~ŒL$þäôp¢`¼ÿN÷ŒÇ¨×ÿ?ÞÞ>ªêxßM6°…»ÈÄŠ•ˆ¶D°²&XHX@ ›ð0`¿UŠ´¶JîòP‰»+9¹^L+ñMÕŠ-V[QyÊüLxUC@!<Ô{ÙÃÃ$$!ûŸ™sw÷nk¿ßßçOkö>Î=gΜ™93sæÌ!©ö&ù‰w°õ_È¿âö›„ÕnÌëQÆT Ⱥ@ ž-°4i0–æH®nZ¢¡ÍMKü þ­Ô™O·J9uò#—茌VyüÀF–¢ºôކAå.ð5T¨ï¥Àyq ŠF?ð}‹”j™-=iôÔˆ‚jÒÕ‚¦@Dê·Ûñp u~Spæ:®ë4§@vóžsà×ë„z ‰6” ª œV= úët6‡ÁRþ]Xþ†É=,Ÿ DºVôj$ËVaGì'h ;L[íuy¬Âëw tvBüûQáùrTà6nzFg,Û×âß•ÚÙØÜAd‚ðøÉƒ"[ú§g(€ðY[K­”³Ÿ—4:Å·½gò÷æ“Í߆Þñ…weœ·ÙeœÌœûÕmçsç¯`B–ÖŒ<µÔð‡|ò‚Å·ó×RjMJ¦<£wGFz|Þ!%=X¿«FJz«÷‹Iö½‘åw…ÿ+ÿZIY—–殕¨@Å¡¥)xî=ƒ²6Õ¡ç© ÀÙ6õËNÌ¢áª$Ûy¹æ_:Uóx±œCRÞnÉUÉ^ÎC숔º»ìÛ(a§øÇwóøò`¥æ»¿wð +Á^²…J"7•.Í.kbeg¢âéàuÿ&úëÚ/§nM—“žÍVþ´ú‰ ãɧ¸ô'P>Ò‚'ý‚çÉFfyq÷oÃwÿ¬cÍ^ÿҟÇrìèL­Ò,eì ’”@Ì´>ªvÔ!2¡JõÝFl¼‹ælÍ̪öâ"܉†Z w—â)áè$UZò´r”„Žý̶ `l9Iõ5󘩴ºÿÅ­’Œ?‰Ë,Âs˜<_SxP ú!>NB9ž&%È–MˆëtDq:‚éÚϪù·¬)>$n;]‘€`v2¾†ZrT ;§¾Üá¾0$þ yÉCÎŽ´ft„ºà‰Æäš#íUÂsÍxÄC•àÁÓEütJÁNz#ö‡ÉåùT²°×0‡©¯úh›õù—¤RÉ y¦&è°£ˆRtN¶®ˆÂý~{yÞhxÄÚVD}‚÷Ÿ?ÉÎLGþl¹æb»ãÁƦ?§°œýnÛ3úVáwzÒø—ù¾:ÉY)›^•&u0:Ï]rl´—-h/¼#évƒ$Ó™ïãZ÷­(.ZЍƒ»p(~M§ÁxýèÕ-<‹#pOÂæq’©ÀiuïDl ŸvŒ*‚YRø=åÃ驽eåè­tK‡ÙÛ›VN‹ß—)›ŠÒÆ´åȉH’€Új¿/ $Äø¢ß í ûôÌ ê?Ì^r®IFvüǾ=ìDüçÕÞÙ7Í ñŒq‹y÷B ˆ&¯F…þZ%*ËlÏŽ•J°”›ž›ìP _,?¿€Q!½Ú‡ôïJUEÕôJìÊ[·á£Ã °OÐtðtµcÉçFõ&¸Œ ö={a„œº!=—x³Ú± *OѸ`‡ß„Ò$â )FNZ‹œ½U™ü“PS¾õû[Ž© ߢvñò`¾—?êÎj+Ì0åáã¸$GH+†Âc¤ æ¶³¡ pÕ ²³2•GW1=@p…ó7‚-Ðö îãF[ m§hu0viÁn Ô‹ñÍO84SáçèùúÇÏÝsL=Ù°§¹Ò¶K-UkÏØ?å‚ß—šwœ,†?þ'E=̾b½Å@kÔ°œWš-çÔeB][³”Ù¸=Þ±¿¬!Ê­ü’9Šñدß@SR_ €X U²\ª .‘h k‹˜¢íó‹àR¨8—A§ñŽN u´oø¨ê?}ÍH4£ÀT½Ú~/ŽLõ¡^½f=C°ZDØ0AÖ»¤m˜‰v-ð÷èù¯¼x§¡³žL,Â)Ìü,§” Ͼ7d®ýäº!R§»†z<Ò‡ñ^ž dÉЂ*‚|äµË9¥0uHÜέÊ^Oh,FÑXĨõ§kÞDsdÊ)l7‚îh)šhQ‰/ëòGÔ[OB†;B(ì€,…„‘f•žÁe8õë†!ûȳÛËèúin,þà(-k÷„a̱NÝ*à+”ºmön©Uš8ÂWÇß_ÐÖÕÕyþ(ÃBVm_øêß#ñ«IViÜ(õ¦`Åçyá]'Ÿ½x2Ôƒ¸ÿo$‚eßÅœïçßop @œ ¯_ÉsßJ‹†2×ûön…7y#)ñ­UZ]CÅYêzÁ;jW“ùøÏ§üçŠ{¡s°Šúä·­”rÌb²§vÅ®ò„f{ÅâÁp1.¾¢È8!iea¹(xJ—öô”н„]¥öŠ%§Yž%ìJ÷Ë)~v0¡¶å’±Ê§&”ú¾å1™ìs)•†jælb5®ZÌG¹Å Çn‘MñuxzVkDšlKÈ”c_ÊT¶Œi=¥@9SÔWØUëw˜Yó4)v »Ù­š&».ƒÖÍŒ’Ã\d…{[ìï©]z“§ÖÕmç®cöK>+ž&Ù¶°>PÆ~eÉ%Œ½u5ɦ]**PÅtîr޹ g€Åý”7ŸÌLQ>tÞI Rì!b+³¼ÊÓ@3Ó+ÐÇú…æHëÊØ—Ðøvž9‹*w”cŠcFuøvbX¦RH‚Eêƒ(ÁEù¢´^…h-ЄA-›vkס-ÞÖÎàÑÁ«ÊÎ@†U:õËûV?] Éª~òxÒ$ш”>d@I–ö<Ä LM@RBⲚÏxÉb,ô~Lå~m»a¨ÈÆ'÷} œ <Ó‚óÂc}i^8=‚ Š‚KÈ×›ï&:K'ùCF$“¹Ð± “X'”J®ÆKïI I=¾¶,­µ• ”ù&£tŸ1²µgiGVˆVüA\8 sÔûÞ=ÒLŒ=K±'xB½ŽsöÖ¯%b›«Cá'[n „Ÿô¢AIJµ•”÷…ËÂ5€*e:j ›ýÓ5a( »†¡Ð€J2}FÙ¡N:ÿÊK§Œj1)ôHÛ"¤÷øÎ‹Žj»Àëň-è”;¡w? À&Þ¡õ쫟Tp+€‘:$Ñ×j0Låð­`!wüwrwüÖ|‡ü9rny§ß÷%Þ-\…žˆ„uáV]^é ïÂýŽÔx†Öø±â´}–·ý{lû0úÁãîÔüà)Ø¥çnµ’«E­Ü‹~vY p%‘Ã~ÃØ•‘SϺóJGÈŽJ&7WÜÑ w†¡`…›ª³‘u ’¸yC8x’Lò×tsÒháy\–…_Oc4‹@ÇnÚˆ ]ÙŽêú. 0ÖâŽý2¾h¹Ä£¥¼+Œ`»[¾a%ïS½ø—ö ¯‡ ×>ÉËkbtˆŸLÎ| dþk-æ±Ì’©¤LB·ÏÄ"¡®o¯_×A‰ŽûK(õjFº¢y4FšÈN•ÉUIçC߉í[%šTâ«$ê¾<­Ù[Ëš˜Œ…Õ§ÌZT¥¥°äc—šÜònÃ7;qÊÐof{0ž> HË©ÚJ¯˜"­ÝM#³Âd‚çWfôíÄe)®ÁÚ*µíÝL›hÆ+!‰³é¬&u_êŽËvœãÏüî]%èݯ+AƒR»½[×/vÃ/FtËÕÒ3oƒí.€=ÛçŠÉ ~úh·°ÕYC…Àðõq®î§q­ûL”è]%‰ ÿÅ«›2SgMÕ1x¬XÝ8k²àùðJ€y¸8ƒ‚¨¦zyNÌ‚÷Q×Ü[¨‰Á#›kÏã´)ƒ/< žé¦®KÎw™Â:5ü -»¸òú©´v?g´Õh„J^â"biÓ~bñýDTöŠx ip¶›†g›R.U¢ã&5Hw5N^ôHð˜"»Âs*" ž×ZÃáùØÛ¼âÎJÏÛPZËÒrk,Ÿ»šï|øÈ¸©’‹0i’™Óƒ»L@’˜ÑµÉøð&‡µ"Rõs±›NÊDaåÝ#Ï0 <_»Ž&æòÓæ™Ì‰<È«Nâ!0²òì(~D ;éõ˳M€#:œ”!­ZFÏCW€eCÀKZºàˆ‹‚8Á3SE¤X)ªç^¼ÖxSX}GkˆÅÅŸsÞ¤¥ÕcÃXó\Ô¢·¡êùô‹ï»T/h6®ü ÍÆ´¥ñ‡Nˆpr  † òÓDù0 »z$ã¶N|¦éÔ‚gšÃ;½CíP ¹ó@-øá™Å‘ŒL¥§8žŽÂbœ-q~bÕ2Ý Ï3Ò•aTžZ8z+µ ~qõ‡ºz43C¹”‹]ÕHôÏ10Uϼª¹æVÞ쀬õ—æêðÕNYZ›tjà ´Á¦ÆWÆ÷]ñõQ‡HÏ[55ê‡c‡å†úÇc?ö·ÿ'Ð/-ÒÅ~à©\t…k€t½2¤ý¥Ë]AÿM»zZÜýq„â¹ãÕ/ÛÈ•€á]‚g0n`~µ ó¸*&^—úd[26—ó\Ø©‹YéÊ`ê”D Ši¡MÇL#´‰ŽFü¹aÜô¯K䪵úå•7ñòËÁôô}žž©,Â)¹òŸ˜éO"0 G¤+)ðÍܱó`žÄõ¿ÛðK}‚&-»”Úã ¶–©ÌÄ¿@­¸ÇM+¾?ÜÚÚåûyïÕ7ZQ+ÎT†Ð‡ÜC*±&Žo ÿO+©Ä/‡ê ™Ö²yn 2¤•´^:S(X éÿâúðoüA<’‚1 L[õU\óWz2B¾šAËü–¢Y–µ¨³¸ÏÀøÁ…û>(??Ÿ`?,<÷ ¹LVd³ÆÏ‹¦áNQr »Ž‚<¦S»Ïú2fûýDgÌ>†§ íšæGSvÔ¤‚oð˜¦ù6gúð3ÏïÍïqO*ªd$ƒ‘Ry×EÐUyí[nÕÕ^‰Gòì’±tÐIgæ¶²÷5#YûÞéßæâ)KçK›PYFæ_±ÊÛ l§>óìFŠ,N‡Væ²*©¶b V¼Ûù ”Tð¨°t粦ÊÔw„´ 'íjÓŸQ{š²ìÕü‘ït º0¯TÝì€8ª%à{bµ+{vÒú:.­Ó™ÑÞú*zdc@= Ÿ¹L9Ó5å_Å5xx®þörÈeîÆ?Åñ<ÓF”ÑšhO_IÀ݈ ¢¾psáZjï.lT—NS$ïŒßôg@"» ×õïö‡œ™èEµ5Ž((§Úû«_uâ»hÅ•òpïi ÖÇ,¯Á5¡¿Ð2Ò÷ÄÈFä*Ì6¤¯ýð­ö¡P;ê}Õ›;»¸Û;é°»\«óÆ>|r5Ükÿü®13ªx5XM1¯§ÌÕÒÝøÁñêÀK˜+I1ùÉjr/í!^P?»ˆÁðãiMÙƒœn%ÚedF©§ LA'b+ú…ªà;?ÝVdô”²}¢#évqúS1ÕˆCsd¾ø Mn¤‰?Çó?bhFó/š™©”Ý¡­%¬¸ÉXQé)MI·»ÊÙ¼ßÚâß¿9ÔJïB\RF—…-jt4‘ºÞ$ZL@E¯à÷x褃|'Í{E€]Ï&£¤Uð½îê0~ Æòk2¬ÚG#|4iDivé+Ã:a¼Ô TS’P¢x¸Æµ õh'Ểw‘Åi´  …©ð|1Š‘A¸d$Ù^@Y‰SØôaé ÙþZ6ñ.LÒ”m¦¬vD­Ó{E¨è»†Œ‚Uïã×&Üß Þ;‚-Fß Š6_â;Ç<žªæÀë¥F êËUÅEétTk›×¡ê< êàÜ".€¯ÌBÚ^£çRvv`üÕð%ä]ý»êE¾–_«îNhì©ûp|è¥Á:Ð}ÛŸ6×46Ìxô3Ñ›<3è%ÓYÁ3ÄH×_×ù¡Îë:]wÝ.Í‹Eµ‘vv9,lb¬”sv,s`z Äòas¯Ä1{¶_G3~Žv²_ ¡ê’äi~ÖĦÇJ.›Ôß^“‹„»l)¬6¹ÐŽÆ%ý®Aãsa”Ë޾ ý®‡¾ŽÎ.è;ÕIs˜^“µ\Ó”zg{ð3ÖÌÛëÕÞÞaÛõÚÛÖÖ¥½?·iŸ¥x÷Ð`)üx<Àç›n°NÝp°†Ióâp°è ¬8˜õq°´,ˆ½¿Á»â®ã5Êö¿¯bm¼ µñŠ»îxý¦ËxU÷ýãà8Äß‹}5üétÿÞê•®ãu‚˳Úû ]ä«Qüb¬ÚÑJqê¥VšÃQV¿¥‡ žÀ£a§ùå™F6}(kÒ: ký`ÝÔ·[ÃMšÈkú ¢2ܹ½ËGŸßÄ ˜ÙC *è£Áê¿Zºtâ#4е…3Î æÅd˜KÀ<,݉]CP–8jo M$Ko L$ýtÉgò£­˜dOEŠïœ8ôy1µãn|˜< £½¥»Ð±ôgrêË<¹Fz¦?m衳—”œë N@E*hÃBbs¯ˆ`U ý "¯öãÞÈ‚S†&¿?}¡Aùy9ß1ãnã‰DÄ›)X6SñÍëôóÅ›G[(:£a‡äØ*¼_c.;gfepSp ë¼+Œ.+P ¡¼ûJ÷%= zÒ4÷Vš;ZÙ›¢; Ýwº8¤×=L޶X¤tiÂhÜ>üwl7uôgêb–?»8G(Ä£Þ¥¼ußR7ýØMɱ·ä– ›ÛVü;*Çâ"´ú+uíï/˺ö÷fìoßôŒ,e^O‘èwYµnsëøV̼â™‚ÞØ3_=<ߊíû¤â¿ïr–’Ä=SMô‡rÎÄ z)OòÁSB‚9€]ÝE«ï¶ùRŸùXà8XjÕ"@õs§Í®®ãèLy‚Œ†ZÍ¢0j[³!NðÞ¥ùü{åFc¤Æ}td‘ÓR±{¿T¼è*z™Ñ[:w»Ÿ–+ T´Ô,=aŠoÁmz>žà²J96®It‹FšÌQ'FÅ7a¢?Gƒ±$Oª…9¥HF{Åâ»4Ø+€õ*2Ñ)ý e £PýY‚§ÄÀ—¸œfÄÍê6)ׄÃÙYÆœ¿«AùôcËi3>eÂàQ×!lÍÏ\ ®Ø å…4„ëE¸éå@Í6K‹Lñ—¼õ+–ÙÛE°öL!K‘oŽG£ëÎÌ,¿«IÉû1h6Î6sšâO]ÛAÉî°£?*¤¼&Ðk‡çY ÒÒ¥=%gŒßÑè­]aLáµÜ‡µ¤6²i&Ù”è«,ÎPÎ¥wúÝ­þÙâØD‡ ˜Ô¦Bã8–Ú4Ý÷:T_÷†j‹¶ÂîY^“O’rb¼õË<*Z|±túgÍQ‘ýœ‹&ñ|Ò‚c«»Ž00·z,å-R#ý4w¾pÛJ UaÕLÇ-€b0þBùΖ„fwkœ”gFnÚÑË,‚ 5®­xmÛ.àÔÙ\8~øÙ)Ë®À˜1gžöÕ.¬¼ 0Ú—'òŒ6`*c  ÅšUÍüõB«þ½»Õêªwû¨Ž“¾O(6« ñM,‡ÿó/0äcÞ?ìK¦–éGyäáN?¾….À³¦ÒœÞfåìM8€Cñ!ö.S¹ïadܽm;>¬âBýÛð°¾lüÚԿ̹áºýÛðú·á‡ú§ÑmžYZ2SÊ2Ûû³ ³#PÎ i¡ÙÐ…G- »’ý‰‹à‰†'ü¹à%¹Ü'1ݼ¸»4.Î[êz\JÃ`΂}X@êφHÓLÒÜaÒŠ86×Ħ c+Ì,+Ž –c`]ž…õfOwÃè²ç4/@I«d=ŽÂeOqÕ°± qQä0ŒM* ñ½ÊZ•™‘(Ÿ©ðÂ’™¨ëIãÌvã’µÒ“¦øª²ÎÙö=Ss6*Fªt¶û æhâU{³p­*µ)þ’‘YŽ}%Sy˜ªò/6+Fp  %¯ ÌkdƒÙ ›;÷ `\†<ÙϦ›HúC»CÈ“Æçn:ä!œÔp‡5j‡˜_®y‚ \tIÓfJFi–É^—ÛW¢%[#θ¬F›s»½‹‡ßޛޥôalÖ0iVëf?Ýcé&6ËÌÆÅ±›s£¥¾rŠ ,™f)kHÅÁPÌ[ïêÍ'Q˜Cm¬Ü·.KÙ ÕÍô©|Ú¤ÜB[¡ïkÎRî‡÷cgk{ç"«¢Cl¡1KÕÃ`˜4{–؃^ò²Y¡7øn­ÄMP$Àà oëûÿ‰Öÿw‚ýw‡÷¿§d v=Ðï;þc¿£¤¾¾ÝÅ>OJ‰á}¶BŸßËR0‡˜Ö绡>?Ïû<Á ë3Z/j®Ö£±Ña}~(Ôg»Vbp4õùÎ`Ÿ3µ@Éûdë’d©g )ÄâP)y(K6KÉVКP‰Œ`É6–la=jA‹E™c—ÃË$&›bÉ&ßÅÒ3[‘ý êYÆÎÖ8á_Єïí@̨ÉÑ5žrŒM6±H)yÔÀ&“’ã¤Éf69êfþEqʈ èÌ™ÕÉèc2T'ã?Ci†BPö …ƒ¼O$bW€y$W£”6SÊi¾È,==³ øY »"Þ„ßÌ2Û/åE°R4 ÄŒwÈiŒß‡Yö& “ÆÆ•µG°Ô³ñeñ—Ê®DØ÷1Gƒ° 3\Åû7õøÒl ÙŸIŽãÒì8y”[r4O6—µb ‹†BÑñãÌTsKBi`®ƒþ+²åcÐ@U‘“ŠÓ³•oú¡öÔ„þЬ™ÒŠ¾°K-õeßDHyg3-Ù싲o#¤Ôã•tå–u4I3gJÎÆá™æ²¶ˆ ®9ò鏸–låuþtFìóÒ*no3aκ²Ó ©=‚¢ÿàYV{ý3·rM Ky›—NÎÄš'Í”ÒA¢|”)o)6âÖÆ‰ŠÝ{¾ szlü1¢‚rTîÑÞÁä½OÆ(îMWý3gcÕý}‘}äè-ª9Ò(fJ)# ïV´ÓÆ’?•z~Iš2”rÙƒ™Q+Za÷ e—éû–Y`f"G¨Nlë|Ÿš_ qÊLß>)96~wTÐ Jó/ŠQZ6jÌ˹*†ÊÎòå‡àró;ͪ‰±7†ï¥šØ1M ù;d(Æôê ¨ÀBc¦ò:teÖLßi-¾4N ÅC«ì¾‚=Û"%¾¸Ï[ê芻íí‹AÉt·ÛV. âavl2+[*€üéÆŒ˜ª Ì4yÙ%ÉÙÄ&[ãO‚’z;QÅCÒ`ŠÝoÃz ¨é\*‰‘Ó}’ÖøÖ .nÌPŒ(âê}[3³ >ÿ"«bß ªgg•GýˆÕ·6ë2Mr¢¶Œ‹˜ÐÜS3¥y&©»öŠ;sšG? Ôx0†CÝK2²n0@03!8&§ È‹tÉ%Wü`S¸>~‹Æa € }™é¿/K)x´“¢&Ï”“ønÊ*£ÁÚ”}Ùd~Ï”Ò@v%K}[ÊÑ1+.„1“?DáÌ€›ŸŒñ6ËÛp[”hÖÈú§ {¤Ü™ÀºÞ=lE ›+ HÕ}ƒjz3ÒõwHÔ¯GÔÿüˆˆº¯o‹´a+LÖ¨±³\¥ðÄÀY:·îF.@st!Fg)Yð¦†q·k†n’4}&@(¿€z+ˆZ0IæH40ïÙFææ Ò¹i?„t@W[áU5>¼.ÈíÈ|ïëx0"&µTËâ(û¤ñ–ë"fö,°7ÄH÷mßqzw+&˜wSºï{$N6/ ë`Ò¸Ž°O€f©:š¡>ß)”K©øÔ*Û^±ï],°šb÷9“ûþboûÞ%—Á3Ö‘HН¹e’ïRПc‘"A@½‹¾4ÐS] |VL¼9|œIʰþl‚™åŽÈ&í­Ù×Àš3•¶<Ï)ì)‚ØÏä­åƒÐ¿9Ùhm(]­ÃÓL€>Ðeâkø¼OÏ̾sqE&˜kJÌ1‹=ékbišÙ»gé¸À|?20ßÃd?Û$áLof³‡ÁìÉ@˜mfÉq`†O^2Ë£žg÷$”)ÁtòVëŽ^äçŠ$ê&ñ½T'¾Í(À—Æa@ÆsÁN”X7ß'|lÐM­Kì^=v ÓI(F£xNU‡y:¯%Ì&ŽÁ¥0¢BaÒÁx&Y4ÖRPCô^ §G†)|ƒ—ÎÌ@ö%^æÎ”§%‚À¦Ì¨ž@KÕx£+LÒ {€M°VEïÆÆÙqVéFé®80Ť¼ãÛÃÓKïHyŠU¡ÿà,KúÈH?#Œ¼EwÕ]ìɤêq“¨Pý—M¥§U{˜ðÿà!ý ªÇ‰/c{OÏ”V‘làäiDÓHt,K™Ê2ÓpÓ¤£¥<’`Ï’’y¾“|HÜúwZÁš–rÓp¿Ò”’3}1™3Ù”þÅ6¥G"·Ieçå 43mrjSºœ9##ËŸece’ ÐÞĺI)3À•r†º¯€f(€Ÿ•ýa–ë½5"ääcÍ@ —ÜW¢Ä(÷•Äý¾Ó]>CÃ2gÀ+Û >“àxæ~‚Ã(§^N_È! -CûWLRN 4Þï‡s¼¾ñbhûr°í¯yÛgm‡ãb(ábXw±)IC§ýº¸v .†ýqA³áPiÒ(øÊL쉼9ihâ¤a”ð|Ò­»}:Ý™ðº³3ÔFy‘•}OwÁ=e§°+ÆlÊ]¸ úÆ;“ìL“Ögc†»bX&v5c‡•u¨' kÀȆ°Ã}B©Î‡‚§ð$”JýÝy¿°¦´¥“l€>/Þ¤e],Ÿ¨ª˜(8e°€T¿‚k“‚wÅKsmÒ´8iElüv }MYVãn{ù"±¹›QìNðí’ÇG?’Æþ1Ù1«ðÖÏæ‚o×ïú€ŒÞÖ˜ôÌ,E~æÜi–ø+²ífiš)þŠ4ÁƲ,tgŽ¿JDR Ë ÛŠæÆáœ”ef+l˜h¤x*ì]”j)ì)eÙ’ îÁĹæÅ‘l®„Œš€fÚ´¸áÓbÓ³3•©o\õgû_|„©dh¶?N¶zÁ^”õ ÚX ˜ P˜T!hËi±.˜Úqlr¬0ûç™qâDÔˆ½à×LG„ÍM¼Í®¡îÓf±/lš†³¼ ir›"‡§X}¾b~|ª4Ñl¯’ % Ôv,ñ­-UF>,¤rÜÝãγyp \EˆO{ë—Ž¶§6-)›ìð!Xx WÉ&L³Ë&šAuÜíþ&BôâgâXúägðI|’ׇªä¦ì¯¸¯ÝïVã^DánvLB«ˆM¬úã•>}Ud¾[ã0z`@;š^1–õ9È÷+˜â[}>¢7Э²³¼¥4qÁ¬5K¶ŒH¨µ_^*—ŸòG±6ä­™ï°ñôйV–ka¹&ñV'lŠ=昫ݔ*;\ï`¹6–Þ†I¶x!˜PCgu‚ÁªåzÞ¶Óš°ÇÝÖ)¼Q–ý`Vô^23ò,âLÙrB©ýŠðR©<Ó½o!B¥z VXÙ [aa6°!ˆÔªŸí kòC-n®Ùw `ÈVÞœÙéŸ3›UøÞ½ y„ˆ‡u0<áþÀ¢”&túj„Zö´•=maO›Äøêi ¹1Õ˜]6ˆ wO³O¶r;¯À2k.«ò½Ü?k–fÙ¤'Á_…Î’RVs;òõü#öÅÄ~‘"7RØÁe^ÁirMô‘ÒcØ,K·ùêzÌ8<îŒ/ií¿æd9±7*eÑš(\9,Ì *ÀÆ_vúz\J,Xdˆ ªN!>ÓªÚa øÔéS;y>§^'ãêh1·ÁàñÌR0‚wÖ9͘Á*”f]õÏN¨…*{W™" ™Yiʯ_Ãõ ‰ëY µð±wO¦› þÖ~éæÚèƒ-U ÁšÄ^ù£ âÔ±ïâ­ë’½Ž•ç>P,EÜm„îrÓ»ùðOü©<¹#ÿ©Û-Þš¿Ìh“¯Š1ùË"à¢Sò—EÂ…_ìf?ÆêUØëÀ°‚zâ/r ŠÃÿeg‡Z¤©C­…ÿb{ËNYç³ÁS‹ú>àŠ`MæZ~HØþR\ ñ[Ý‹éúøÂ—„ôrÞÄÿ2 mÆÞòÁöÔopEÉzûzÈ,žfW¤<¡—»Ê*õÿÔßÙÙi<"¸Á— G ¾Àû‰‚wÞîÕÞæþ9øÆõ®”e ~ô—ð^Ð$¸1ý†îíÈ¡fÔ9?TçÝG¿ÿh }d |ô³ÐG·é>2…}äÁ=¤´-Í[úÿ轈5O­7úsì¼ÑÓ,ö+;g…çp/ºó‘sçÆ1+[£7c¨FÑæî4 ÏL”fÊNÃPî])xþ]m<¿AWê4ÁóKøÅç›´çÓµçwhÏ×jÏï£çêj¸-–7þ”ø‚£&á€ñ è¼Oø"ˆ†ïIç6é 4  úv„ Üò“,º/‡Àã€Ý¥V÷y«àÆ(BwçåEst0åŠÁ®ÇÜ¥&wgë¢Dýû¡÷ÒûŽE·èß ½Ç÷ßDжÑVqÄØi¢~‡Á¯ ~ã@‹Å÷ôÏQëù·ØclKR±h;o®æ_JGÉŸjû¹˜X4&¥ÂœaóAiæhÉö‚°Ù8n¸ÍÍj\CXó„ü¼ƒØ¿¨¡³·UØÜÁ×â™Ù¤’†|VƒJ½õP±8¸¨PF®qžZ× xQ* U0t¬®D’öÈã|ßõ}€Õ‰_%”ÐG„]åòcZºrû´N1تŸ¥g*ì(x)h'¤L(e'G”°Ï[»;KS²7âµ'Ô†VK²”ŸÍÀ=+®÷ÎþeªxŠ•c¶‚¶D˜ ï)ì3.À=ïm»K966Ò÷)÷'(·ÿö*Ά0}UGPåîÚ:-& ‹{å/ wÍÄ·‹5O ®2t=8{ë¡ýÂa‘ÌÆ é¸kãeÚoµ5éÙ¸¢C@Ö¢^e—-ÝY3ÂZŽ 7`•m c°¯ïï`l&šõ°œ@XŽñ¹Éš]v*" Õ*—…§|Ÿ åçiãWö¨5bš2½S³E$КƄaÝzö7ÐûÆB%rj)®áZXêF1’96¢¼¥ÕŽB”ãÙvòp´…4-œLû¤2p?6v¬Ïÿ(kÀè‹¡×N0`¼´“pVn ›ˆ~OØ žæƒè›Êñ oŸã6âÏOL àzA€?a‚M(uÛ1ÖŒ°pçXwRA¼m²ǯnž,öçWÂdÑ2v2]š¼µ®Ãd3áÜžUfvéÞ|¨¿å€·Y^æg—Ä¡RŠÉ^½¤_|«,Ƙ³p‘e³&>fæ-€Çãrvt†òÚ\†@Åi–8ì[ÎGòÓfø&[¹[ºêŸémž-ZØ`\5bƒ°5ßyÖÔÅ–g¦5-<åÝ3-$ZÄž †ÂJ_õrËÌ„R@î#XSª¬ÀÍ ý–k'Fî‡Â™èI“SÓ³ü÷)wÐfX›·^| ýÍ”’ý^*Ýì#õ› uJ½–Â_ûÞ• ¥î ÍöšåÑöÝyQ”HP²l²Íímf¹qeßDÉ/އr莜leS†fJ¹C‡»³²4cyö¡¡R^“1± È+—[æ†b׊aþŠZÚ½üUhí5ÌcSGL˜2ì­0½òeGßëÅ™hô ÔïŠI¨¯v4rv¥M2ZNkø¶‚òßEo‹Mb6ÓУ‡ñÆZúÊ•‘ x¶„Rõ10fÜ Ìûuâ~KHV~y þ_ÀWo-’âÚoAYäDU΀žùá —z!dR?†õ"¬ö‹¿]ê‰õèÓÝ,äÇp„#b´=-VðüÑ€¡a—ÕË1Ñ¥Í//ñË–#@µ6Æš„Â9xQ„l±nâõ¥³¦;XÖ9¤¬= ärü¥øœº²¶îñq!þõˆYQßûeÛkò¨dË%y&90ÄŸ(û¦»äl’’MîV£àYÁ‹gÜt!@Çè¶È'¬ì‰¶48/5îi!ÒwÝþ F °Vvð•–v`8ë'¸jº¢…8ÙmÜ+Çþšš/M6 [83Ÿ¥Ö [¤Á§{á.<¤ÃôŠ[Vv&"~_Ù™îÆòìhV÷ Km؆yË•äùî¼ÚældíK"åyþ­Ømèôv¬¬mHÙ•¨øˆšTE¶ü ôgÉÑ¿O¶Œ•m…òÔ›:µdö WÈÊ® ‰ßí­—m‘¬N(ĈtD¤É*9oíÒe¸Ž•£kœ‰¯ûʶîÔ:¼˜#¥6 [ÆYð ¾¥n„-i=hß»ý sÏ,9Ï [ž‰ƒ w4€™ÞÝ^žgNIÌ9Î,ºÀdÓѲ†ˆøÝe ÝU4…¹Ëºû>r—w÷½é.ô=ã.Ô|¹ÔÂ$ ¢ÆöŠl:@ßùª@Ç&Žøz$Æ£±Š¹‚çÅCþhƒ+jûz(ƒýù‰÷ ž%xšÎÖãûÁã>ٙʄqZàm1Í¡ÕQÈK$¢Ö® '=xâ³8øÍT’á›y´õ6Ö¦ÜÓCcF-uÚ#!ÍO4ˆC¶~„0и4ÆN°êmŠØq鯂÷§Æ@+eÔ—±Á«G‚0Œ×®æWGM¥K¸˜¸˜¸ø]àbaàb]TG=¬)-x%¯f¯PNÓ´53xµ<øö!í*¡v˜PŸØ+J*ZޱA±$qâðï>~ú˽Ø)°m¹0:ÉîEq8ôe–Ÿµà%‰º–ö 9TpVÇá{ùâhÖ¯€‚c zš•±Ï”x²ƒ#Ž,&B^±¦à©¤ò²›0FóÛŽø´ƒÒÁ ÊÌP<ÏÒÙ£i >ƒ^d2GƒRTåÇ'“Ä>R¿4caeê@ìE^ŸÀY“vXÛ±¸C°c0#MûÛX´¨¯§vV¡óˆàùØ6¿m¸˜’ßv·ày¡»î䯾òÃS—[XÕl©?mKAI»+ïˆÔm¾4ji(Ç€çòóŽ@ӱƼ#ÃAëë.Hv\L“óš²e×ù¬5Ø¥ü3ì‡ ehø#<_LƒâóiFƒ¿ᯔzøõ~‰‹£>I$ëºi¾»õ~aÕînЖÝrÒƒò¨OeËGó%Çyx3@ºÛV­¥÷5rÒ—$Ê”}e„?&Ù$T½…üÁ]7˜] º¼«árhWÏÝðLaW™Ôúœìsaê12ÅWáö—Dçpž–(ƒa"¢û`"× À 7ƒf8šçˆÕEtÈ_CHÕj9·ò(!‹±ò÷J>¾‚çyJE‘…Ž#€ˆØLFQUX3 ù.æª<ó" ã“Åûƒ§r&GRG¾?ÉÇŽ:â§ü©|ìtù!<½"I°aM¹”WDzM“ùá• /zÈN%#S9Ò€Ñç Ïùk?6ŸM´žБùc7 «p¿¿{¥ fGÌ*Éâö€Z´$ý\4'Ý%x3¡\ß ÓlõXk\,4íwœ\u0[0VO  ¥Âª» XQ_ LÊZœx<1(^S/¦ñ8ÏghÄã­O ns˜$vL0èÉ'ÁL Y"/_°8ïzƒ‹#»G6 FV´Ó¨~"lÉ;/ºJ„Ô)lIm‚¡0vʶ˾1ÉI’-»`|./ §[Õ[°¾J}²ˆGO\Ï”ÐÛW í°â»Œ’eÉ·›“Ÿe> ç÷0ßµ#´? :s‚noïqHа+±+SzÇàgGÛCûʈ†¯.·Ì“ÌÒ²@jß|ez |ÿRHðf‘W1_Ž£n R\õX@ Äq«ž`îžÐ# ÿZÐûÓ‰lKÞùÆÐ$ ~‹tŸZ';φªÇQ]îjKÔ–í®ê¯²ÜeæôÇi|ß)Ãñ!lô£?uóñ8$å(¸.·«ÚÛàJJîAñìxx%¬:KWOYº «ŽÂedÎYõ1]ÖŠ!€†£Ç/‡g8~ ¨'ð´z´#°óë4“]ð …¿{7U¶è— Ø%=øû¬<œøƒ‹$h‘ã‹"“îžÇ“§$DÜa Le$ó.‚4lÊ’çÓ4¢ÞP j {®^ Ï?mD©è‰€Ÿ·P˜DY{ o‹á¢ë§ìÈã:Ñ…>ô®î†"ŸFà$ººÁ0ß/>AþÎ PVì›ß<[X·Æï ¸òßKp“\õÓ\é¿—Œ‹Qx2á®JàFª$°ÔÉô éŸÌ##Ê£ÍÇj}+2†¬ß7µþrø¶½þDüÁý›|$~ô¼°$å:sB‰z°dÈçõ¯¨Ò<‘b4øšä¢C½pc5Q ^øžOIº›'¯”gDû5iþ 4ÀSÔȶð=…O»¦G›¯tÙSøÚl-?ÝhPÿ€—Ô j¿Âe€wIª1\m Í­kÊAE÷³^8êû­¡ÏHÏÑÇ­õ²…CjpûãéG`¶#>/•©g›~0þð ›l¥7Hê™j%ܤ¨nÌ×Õ¼•Auá÷!? »qæ[—ÉŽ} ~¹¾YŠùhë[ÔåÀCž<Ña.ŠñÔ‹?•ú]žN ñÐüöŸ ž ðn*G_‰_ N;k®\î†2âã "wöûuéÉŽ÷gƒZ<Úº€ïûPñt¬ïk ]qìdBi`]b_ËA)u½,öìëþ¦#þ²¼ô)¿ë}÷·MÙJÛò«þ*ÃÏ3¡Ý±iÊÐ<ÐÍò€xc|µ×BÀŒ9‹qÝs½þ™‚Œ…ÙÊ“W®ú³Þ…®9e•„6x (+*%U<+¹ç—í3—í³âÏü²ÏÍeŸ[ñ‡¹Ö¡¸Ô?x]_‹°˜k£oSÉq|~ÙsÙ+þÌ/Ûm.ÛmÅÖ«GÉñ¦lú\JÝÈ­ü9Ò}¦Cr6Ì/Ûk.ÛkÅÙr02Õ’Îr6°~ëéúÝO8+{cŽà‡pòïGQ¼«lêöös¨¡86Ê6ó[Øl*gýÖà3熷_¦=hïâÛëáFì-õªeÛn\qê#ÇŽ”úa…Ùò¨?e-4úïŦ”ßQ¤ &ðý— ‡ £á´¦í9[wgòÖ»ÎjÙS¡™¿asJwaÄ·4Ñ”8Ñ,¸ßÄȦÍÖ±l¢ÉÝæ»öM™æ:såOL¡R õ¥@»é†ï[¥AˆšÂ¦@Á‘¡‚‰Îuª¯èdÊ`Á}QÒ½›¥º‘b¶ÏÇ%òq0Ÿ™åç'ù!þåÊ]Œð—èX'xŸ‹DÇLb¢]ë›à~‹:¶#¬c¯EÞ¨c"L÷®'0¶J©;àK­1Ëá°z’oX‘|òÐ7^Õ}f\2MH¼„‘ž™‡–˜6ìŽ7펭¹÷ê?¡¯_ð¼‡;‘jƒ8JÆïë&¹Þg¿ÈY´‡“ gn,BOج¸›F?Éö½Ì¹uÑÙ`c¯cccÍêÒØÁÆúiíí.å¼>Î~´Kc©£¼±KÝ Ð·bÞ·Eßd'ø•c_]õ'Ž)É\á™ÍÆ{뫣ЄäVhŒvÅr¶Š#€j¥^A’·õ~‹ÀØüPIJZ‹ß îþ ZcÙê-uÕHƒè!ñ=ña/¬Ì»Çe‘ú…f’c² †ð-j»Ôõ€4†hî>vï›ôEvïë¨*€ùûæõÌ_.Âiùî˜Ã&%ìI€¼4£_×®€¡éYÒ½ÂÁŸ¿¼Ædp•’jÈÅÆà0 "CQƒN{k]pæêëdaí¤ëòtr¹áÇ„ó@¨rñCiT yxŸ|oi¬âPýþ·³Õ“¸Ð°yyMTä|•­Ä«Úé/ñ'˜‰+ÙÈ{ë­ =JêÚN  ‡ÍS/FEöÂÏÓ'(ªâ÷óqŸƒTÅÜgÙʉú«~uÖ¼ü¸§6+§P²•wàŽ•ÏRo§»—´w[:È7”­<«½žÛ¯—ÒݵªïÒÝ\õùv„'[™­}< Õ^"Jõ;Jôû~ Ý.;É©M]¯F,Ÿàͪ¸—†¹ôWÁƒ‰>ÁùQr™·áÉ?׊É&1¡msµÃŒŸ ¢ù}5=KSzOÁùTk`}(“Goç™O¤Á{‰Ìša. yœx¿ ×ÐÒÔ¸§Fpo"Z¥ÑÂdûÄ^Åcí5¹Ýó—W¡\†" ŠÈ±e,§IDÔY›8ˆSgyK½·™ "ÇL¿X¢Ïë0Ó%1¡x 'E •‘Âfñ€IØ<þ@”æ¡GÿE«˜I ¬92 Ÿƒn/ˆ+ã/0Ó&Î2g‚¹‚sPŽ Pÿ~K—„)Z$½½)·GbÒ3Ë£ÆÚ›AÝcåùš”Sꇱ¯e‹5îóï7°±{q2ÒÆÆW$’“lq7î,¡½¨~NȧoÙÎih¬ƒEºf©{qÃK$g£œÚÔr8Ýx1cA4*ƒK1Ëd¿€ë²Vìë&Ql\rSH 9‹¢=ñ”]W“‘Ë=i õJ ¦IÈ킉$´Iê(¬ íÒj‡‚õäfƒ|襑YO’HrRMQ¶©ÐÖ3ewƒëÐÞØ0UþÊn š¾bàÙˆ=†“ 5š^M6äěr(‹ÞÒÁB$ªY/d·±dÕÄ(FR޵*Ùdà%ŠR §÷bùœV¥XŒ,Ŭ‰ú!’££rS--õÆ&Æ'š,8#)³p y:}k0¼ÿã§­Å™Ú6u¨Ezh¨y+Š‹åÏcl™ê.õ\õWkyÞJÝc3PE~ÀÀs{ 9T>«kÀcx}ΰúžÕ‡Ã?cD]–mÆ0lÎÝ[A…ÇàÎ"V±ä!ɹ›õ—R÷³i&)µ†M3ã)wY–"g]Á)Áj0fYÙ´QlÚhÙytaß 9«O†2ðI\ÔÂ0¾Ú–¿ê±DUc-†`´VK½2²?hú1¥kð¼Ö |ÂâJI(u·ÅðgÅ P–õ”B™DÒ”YÿôûgúA£< |P=ÁJS\ž¥z"Ūûö¸KmRŽ%Í]aÍ\`Áœ¡\üz¯¬¾uùËŒ#Äè¸w Ð],Þ-äwp…;¥«"—¢Î¢g ®ùË"ïqÕUEF§¸Ë"Õq(šàÅ(×x1ÂõaUdœïkà¥]¸j¢Ç9cjâëÝã„]¦›{b3`óÇvjÍ&c³Ïtê;@,ì ñëÎë1…?åÚJ0|„0|„]?CÏÎë°ÿªvUÃÓW0€¨Ò`Xxõú0d\ý!Æ\%nºz]‚¶™ÿT†?î7¿ƒ«epUe|(yœºˆž O ÆèqîòHu6Ž0ÕÁ¾‰ßîËŒLr^ŽYpÕ?¿ÚðkÌßeV^øYɆAb…À'gq#6» 6å{vñÌÕ4%î_Wý<GÓ¿o2Y‹~LA‘”—ù¥ÙÈŽ2heдõ!ÒwØAMüŸ§Pbè|´!PëÊ1»ú´ Fƒð"j—´g[‰¯¸Ü’ø²ˆOA=‡Ô“²X¾¼µÃÒÏì,|í2¡î¥½œ%Q‚cyÔ4 Cw^–M,µ)cÛÔzšeçqãT)›2ç9Ü#v°e“¡Ẍ´öDÜrTJqí©­²³¥6dl[Oß’5ÕŽ³?߉ŽèCTE Uqªè¬b+Tc«ïŒ%m”’M‘E<_m ê¹ï_Ì5ð- 6e‡¢…y)Û%¬¼1 ¾9Pù, >gÕÝê»@ûðÝð}+`cÛëX•ãrµ£•êÉÅzœ­tV{ Ø¢¢PÐÆëËPz"°¬.&¸ß$E&ìQØs c¤tÉíA €˜ÇÏD¢·¿ü*™<Í’©<êêô³ æP>AN{ÔC%‡ÑŠ9…c‰_u ¯/ÅÄ#®3¤¾ò‹ÿ#L\í¸ÌCS›¼_ü:ZI{ H¡dÚÞ/¶·à4*ãÐLÁEƒ¡iet +o9]SÖ:¤¥¦ìÊà[9Of|ŸÀ;eHÁ)ü*ºl+~¿žh{ plR­0$0B§ðß9Ù^0å %< ÛÑXp/îE;0º¦§Cá-œÂÌ ÐnÙ•Þ4µÔÄï½µFW¯Ó¢ÕæP –Û îT+VÚÄÊ„OM-Gy#ÑÑÓÑå[;ý  7V­0ë²&Ñ~•ËRÌs"Yž•lnûWô¤e—Jó õöÂKòø[ü¾ïóæw^¬÷—ððAÁ³5^x&¬þ#¿Š<Ï *{ixN,îEI•moPÜXŒq·ñ€´´CšÕ!mµ·3§•9€7Ž/ºÉ(÷`:%x³* Ì.¿ÕïŠåñù*<#Îy\šÝ¡¥AÅè‚T‹ñÂpø˜¥ž qÞ,­Ôî8+<‡±œîÇ­&L±Ö³­¿½âzÅé’3VrYeˋҸv¬¥£ˆ«$GCË7¬Brì¶—3çþÅyÅÆ¼ÝÓìy» IÌiÈô§îórxNƒÝ¹ÉYøãêž8«uÉ1ÖœTy²7_ÎpÔ‰ýÂÀ_úù4Ùy¹vÔ9`“¥‡ :˜ó¬ÀpS—„Ú^îZÕ «– ±¶såÈÒŒÕPºàŸ¼´w1>°¼È¦¾HyXš{Ií‡5¥ZeÓ‡rZ«”#M1¶¥¼)Ã$ ±ïe© Ë©„QXÔw‰É^·¨—†ÐáŽÊ[œ …¼|ðU<ýºqé¯AâÛ]ÂsokèLt*✗vƒ£¦åÑJ°¥D–w¨Ø¾wI´}¯«¢ãÐâ>‘©Š?µês3$¦*¹§¥¼F<ð>:¾]Ê;_}óÖÊöúS—­EgW–‰uS;Q3¶DØT;jpœr‡HNëðTh£ƒÍ#ØÞjÓø"*®5øÊ$g%:ÆÉ’£²¥ŽØ£¼kj&Þ91g¨÷÷W5Õ+-yM(9cз1Pšº¡Ã~tQtüQ ˜®"Ï"Û¶²÷wÌi^Ú‘lÚÅö¶\b8Û1Ó'ӗᙼeßFÄçaééKû&4w7éK|‡Ç®‚ÝAñÖ8a/盥Cc`r‹uŸ7I±/&” ïÔM–Ö\ntõeuý|±/Âsfzi²d‚« ûÒd×¹ƒ ¬ûL ŠƒgØ9¡Ý†×­_^þR‡<êEVÔÊ?ê’ÅaÔJ/VWŒõÿëOÆúÿõ'CýJ ~ŸVho{ª525Ažñ|‡;/fs6 ÏJ ©1º-Ρt»´þ…{9'‹‹JÖ¼^Õ&ƒ¶Qäš.á–›Qñô©ÙÊ?à9îz²ÉIèNe¶íîʸ“Åèê~Šê¶ùþsí@'4-<ÿ9z·’6‘ Ê±fÛ3#ó,˜ëÅaΖc 3Ì ea«JìG™Ê³-Ú¤..Æ);ÔÿQ·àfú"ÇªÕ @ÅÊ´Ðwñü;EæLLÉ·>u»šŒð¥éÐÁ,Ù¶ñ£ÜÄÁð6¯ˆÅ麻E¶¬b‹%;KÄ\`¦É®K0þP¥±>ÜF… 2`Ü® Ü¥6á÷{XwÉþ»1²mCF†Òì_hýpAÄÅ(%W©ñ.Ÿ¼=„¨ÁX!ŽEÃÉò‰ÔG6 ”—£3#s5²+‚ûSZ±šÂrÅ[Öº9ÈŒ/ò<®æÃ¬éR€„.æõE9rwJ‚¨.úN¶ð¡É‹É2~‘™jNOW†óvÑ…bÃé Ê1c:D»œmd—ìmò“&Ö‡]È›"x.ò³—ºuWÚu™§¸Î«Gá…ý‚à9€N¤Ú)öc‚\ÅË&½È’þ˜l?<¼ ]áç8ÃÄ­•›ÆcïM/1“VŽN"€i8Õ&›ŠÒ4Ìe(Ñ„7›ZÁó+kȳl€NÌl4+T©“×p¨lî qËÌàòyÿl´C:@CxvÆÚSޤº$ 4¡ _õ^%(ÇjX‚>™™£t¦œT˜­ˆZÍw^ ¬sÒIèùaýïå‡åÇÊ'…Ë ƒþ³üøª­‹ü°´ð·˜ìä7 ÇI„LÍ"—À]\Ý&ÑáDn}aehhXšà LeÉ .5¬×—6^Ód×ÐŒ&/nCÆ®¤E,s‰ˆÍÄ›–,hoK¦²àRËÏ#e“lx1‚„Õ±s.I(Oño‰¯˜2I¶˱¯0ùú Gì3ÌF˜5³¬!‚4VdfÂܦ ˆ…þ NA4fã4ö“ÎÓqÔê] ¶Ù·* ò5[9tK€ÇáŽP,/…s´‚½3ÀÑŠxsñuùYÑó³íül ñóœ[‚üüñ³õøyfç øù—œŸñDOïêìÊÏ;õü¬ü~¶E‚ñÍQ¶’K@u7ñ« ÇâFåÊœ©üZ{7šX5[íŹ½+•$iž¼ªå:×9û>´]61ÑÝ6deÿ Ì…‡4@Ñß@6}Ij]¥<ô³†¦4*ö÷V>Ÿ)ÆO{eÀ£áÄÜ_¥lá_ì(‚øv¼õýõšü, }X@û{ ´©CcØî25²¥ÎÝÐ]8÷ UÇWÅ——)²§ôÑé=ÍþYü©AêvKë.M0Ý’lbMÒó-ɘŽIš`¹%ÙÂ&Z¤ Ö[’­l¢Uš`»%ÙÆ&Ú¤ 1·$ǰ‰1Ò„Ø[’cÙÄXyeœ¼8NΈ{ÐõÁÍ¥-u ÖüH}”¡ø JäÓT"ÝÞÉX†éà›Ê”!˜ú“h–ùl £ ÎàÁçÌÙ(KF<Ê,wÒ)]ftèÎðÖ³nlš‰Ó3Ð× ï×Í@–<…»Ò&9ûÎJŽÚk>+é¡UÒ]_I¤VÉa÷7F0¼¢/8çÂöbî.xÔ]«×²¡ì\$ëéò©?#'=L*d‰¾£ØÎ!¬†½Ìê4Ý>}´›(" Ú#¥?r„Å㑪ùä5õ.÷ó«iá•_ý.x55x5)x5>x56x•¼¼¡]¹,Õãè(Ú4—Ì£ ‚AM è› &ñ&¥þr‡¿ÚmÐÎÉðJP\¤.ÈÑm2[˜C™¦¾‡›1ÒL´¿Ezj( q'¶"x~É ÃéŸ0IYÃX (‘¿AXS&l¾2¾¹u'>ô6SRý0Ð2Ÿ&x¿}ˆlˆùî_öùC5Nr UèžßV4Wä ÞÒ90s{ÌüöÛžÜP¥ð UëþÜs#xþN±²íÁm7qÚ~ªTc‰¤¢ÑÑÒE‚gOá>×KR >G4С9;q˜ úH4u0çž)q‚Ypca3f¾Ëd,ÂRLÁ²c¥›ð&fƒnO±`4Œ3£fÑ1QOœáÀÕ»dw§_´²&asmáŸgèôÏMÏw?`Xv«´Ñæõ£ÌW €£÷ýl†òÞ»—ñh5K·ÚïŸã;¬?8jõ»|[Sp+M¢oUØÁQèºPv_ìðK£ÙN¤G:2!KyòßWýŒHu.q§¬Ã2›(óÌòìª1¨~ºŽçð,‹‰ãMŠï 2o,£",9„¦hßCHÔog,ß3+Ñð ¶…qwAjÄ^Üÿ·^·åÏ zó:` Çéz»~ß0„ a !rëXVBí À&Îâpi·®|(4ßm7, fœ·Yì†I ÍF©„Æ¢ÖuSB©;/ÓMNê £RÜA£‚Þô@çÎóLWÞ{GåSå×BHöý9Kƒöå+|»–Ðãc!F*¶ïäD”z5˜x“°y-^‘ò~oçUÿ¬9sløùnàÃB\ñÌPO] ;[wÁˆëº)EÝÐõx°’ÎÐzª_ðH*"Ôï1ƲOÂåÿSŠ» z0‚‰¨·afå._ ‹³é´be–‘©—«p+·»[3…Uy‘„¼ý€¼ X{i†Ç쪉ÉЫw 7oâŠëˆ6qœ°ù’]› ¼W0ž$Åk.n£íN°@7à2wïMì…ÝÚjõ'bΧJàCåèYÚN¦ž»§Q}œBÕS Q’œRÚfF\¦.ÆF”u߆ø‰QŽ4†„9çC\Â)n!rC Ì5œ“!Œ‚w5ùå=n‡Ç„õN¢ÎMÒ„tZ„nìï Ÿ¢ù&û’®cìF“€„ñC®uÚNÕŽõ¤Ôç¼]DU:ßÎJØT()[h|0ó6+]©ýLSwk§àݤ'KŠý €–»I2/H’ƒƒ—.ÿ%½Ø7æâøà\lUd_‡–»H}¤5(ýü…¤ÿ©,åÏ¢tü\yÔÇ9†¤ÿ›éJŸoC2Ï÷Œ2ÑŸ4IðbºU¿,vð¯›nò–®õqt´ÒvšÜÌugx8wQÎ'î¼mÍp ×EøUÊÏé@ÜŸ­üþë Õøþ©¬;§› ¶ð’gs ¦ µbæ²t£c×9J1fƒÁ¡úÔïÉ—©L×UÊéð{Ú‰ŒÇp¤GhóPØ0¦©0ƒ½Dòx2Pƒæ.5Mvµ©s¯†Óðïø5ˆåYj ˆV¤éi¦MC—Ç¢Çk4Ý^.(64o:OæWWa„°ß4s¥“xmLP¤´·#ÃDE>©¢#HÛØ®mžôÈ0AoÜœâz¹Úñ2g¤‡Ða¼V®ò~øÆåÐQÑ÷%™ËÅØéAÅRð¾‚qµ©/É9/é9'« ë¼ôÏë¬ ±Ž¸aòìý”g Ê¥›è˜H°&^Å¢$úÔÛi¥’}Z'Óf“L3|âÐ{‘:FbÒØh-¯m¡c£ì(L[h”s6fú‰L•†¿§-O)Ëç†Àúq} š F9 íÆ“ö\0„ ÆåçÔ‡ycüÁ˜¢ FÎN /ôÑ‹GÁÓÙМo "¸4CàªÝhÓlÐÆ×Dã”óhé«÷Ò:WFöÀ‚ïh­ÙÝÛ¨æ|‡œ‘Ëq=¥øt¸žE[`×Ô‡p= íòêr÷Nq_ž‡"Â4šDÍ·“4~tåZnøÀ)ZKôOìÊu”ѱFÁSf l ÒNt„ uôFÄþ’<6ˆúÈö/¸mzà ~s¸ÁVò>ŸÇ»0Jš?Ä;Î{|?B„[{ôóüT*ÿÁe¨z·6ÏwKôr–xå2ª®1´W™sRç*ÊPº ê;”æQ¹ÿdh0èØKN±ÎdúïQÖ EN%мC¢ NOœtªjøkFß©uA¢OÉäøƒzœ‚F›Xp–8X*¡zHæ¨fx =õm–øL’hÜIƒ° ÿVMðÔ_´^o_ç#2ÅSƒ•ßÐMÆ z£”~GCäWä7éDh*V¥óùVè(»oj#A.x¢á¢hbçè:aU'XÑ…å‚»gBpQZËg‚ÁF>£$Ý<úØ¢oÔF(VŒ®àþ~€‘Ï·ˆúòýä?ñûWª p;‘QÛ|ª3ªÖ+á³;îßÖf÷—[¯0a×ÉýãVÿu'÷b=E½¾t~Ø‚ ®0¹«}BcŒÊÉqP7>¢›Ä+¿GŠ!‘ÉGt&§ o)ˆ5 Þ•6Q;ÍxÐeж§Ñ®Ô?§?]¬›;½‡¾Ós…k8wkáû·Æ0_§Í©ÜÛšuRá¯Æ°ÙÌkä šdP_=ëF¾‚y>¬Qä¥n &‚÷9òÆcãE$G ë-ê ÞRF/…Õçštpõ½€hÀQt#/-ÜQð’úT¢¬¬ù^|gÒ•á‡C&ôgúÖW«sCÍŠYAY…MŽ 4l GC×&7¨÷`“–zùt&CÙúeÈ­ü™rþ˜Î0ˆh :-½Õ {þë˜ÎNÿ3Ù鋃5ÌQ—a™wuõ=ÝÎÖÎ K`êÍjï#ðª¹-Öš "xxL˜dîÃ>/8ð:5¦~@pàiÝí Ô¸­±1€ Pö40\ðTõ™€b/þx„à™nƒÇ%p^íѽ“®Ͻ”¹HžDYH¹å ³ëz Á´urO2ÅZ|¹…UÌ–ú¢ž=žI}¥š)þ˜âä®{±+nuD¢Œ5-_hÙÛ ªo&ÊÍÖ&³kBø¯ƒ Ä{ƒÓ΀PE›°¢ùl¤:,¼‚³Zǵ‰@q BÒ?PÁh©„:9@U|aß­}ÿ•´–¾©}3¢HÆo {«oð Ìå:Œ ت!X%ªBZKèÁf›Ô¾ë# X—†ƒÀ6 T×ZŽƒêPßÀ6qéq@À0A={î8 ^‡j´p°ºáß>CÔõ-RW¶F]Îâ Ín{òËWC”#Þ-­¥Îà™Ú©ÅéÚÄ´µD“êãø™æ ÃÂZaWq–VxãsWý¾¾)è¤S¡‰+qKn‰.Ñ•<ÊK‘Y—µX.<*`qÔ?;à‡¸+#Ma?§Âê+~(êž4\4'Ý-x3:tÚôM߈C¾å:ݦÑ4^â)þz˜«N'?¶GþÀÒús!O)=r—_à_‰Jêù‘:yœŠ®Ñ(åÅ".É5* (èÉgÉôŠ»õ÷‚÷!½ ;nàlþ¡ÅëUA‡¯ôËFœ´sXþ'Bç¦}0‚`é¡Á’ˆ3IÏ‚Åô¡»õ1Á{¸SÅQc[H#bÆ.P¬&(®p(ðTíÔÁ3ÙHPx˜n†Âƒq¤DÉ´ÅÝú;0xôPœ 7œv~Šç»x⯉\F$ˆI슱Ò&>åhúùˆ Œ¨© ¸ø¶À¯#É7 É$N’²$ù ’$ѵ¸N#Ç,¥í."Gߟ”Žºå¯Gñ­òÎþ€B3KEY©;Rhh¿ÞÏ8§P[QP†R‚õT„Æ·?„nÆÍ<¯kRñL¥ð€N‰ú-4¡$èÚœ€eѵÉã'&u†ç¥<½ -e((§†ûªµW»4¼…ÖM Ýh7Yõ}}œl«mûBíNÂ25]Û|5¼Ý…ÐîÜðv?ïèÒîÇä3åS·º¬kjtn…”:kŒ®í,óD>S+–¹y_Èö;Ùe¦Ö„Ü<\¹<Õ‚.xîW HiìäÒj§&­ÂICðÜÙ”VYJý\ZõC¯×¢žý#«xbø&¼‹§‚: #¸:«iµÇqv ÿvIoas$ï„:›¡2ÂæD4§(…²syÉyKÎø²fL«6£p'Æðr ½U\7 ×»°?ñ)ϱ|ÈhóBV¯od˜$^OËRÔÅiš¦è=ñ=ùnŸ§q9ð=&vV÷Âòéç:ûeG†òÛ=ÁõýYyëó.Ѿ7~Ä8uaáå0Nßâ8íäãÔÖ§led<'Ì|…ĺRµ}Î;=H¬#¤i¡U€?^+ð$_ȽÊÈ< ôóg=(ýæQäUÈ_-| vèæVm™ì›ËhÙ|b  Jõ`< 0G Yl__©@Åš©-ßß5‚ŽæÝ~)Øpµ§¸ãñ³î+çwk žŸ˜ˆNØChˆü^gz¾¿ŒF”Mû<àÞbkñ˜(aõcÝu“L¯ù7à³ ?qWÙ ¾Á/A#\þñPiS,—¦^¶\Þ¸âþl! —ˆ¦d£òÈ™«þ±¼/oœ6s¶ë¤D Hy7ý Û» ˜Lè2f ÝIEÆïÜh¯X<&@„?¹VG/>JQ%¼xÉÆ)ö aÕsäÆOäDÌ«Zhð‹;7*_žpT;qŽÛ=—Ñ;aõšªð ¶L² ð&Zx~$ÒšÖÿÜv7s¶þWfŽøûÐú猘7â]×õNüW©rÜ‹áþj,ÚUÉü'‰}ZxXËõ ÞÁˆ$‘V¥óõÊyÅÙšã6’°èÖZgJ©Å‰„ÑôDß¡y¢ów‰J1âhÃW1¼œàíq˜æõa®éCškzÿWuj¼*þªjöí/[Ñ9œŸûŸ® ¤†@±é·\”£1´ÏH×|ƒÖ|4qu¸xšÆœš?…ͧ£ƒ<[9ñQ×–'BËö+ÐjÀÿÝVëGsýVŸ«ñûáÏÅþ/Uê®â[©ÔYÊ“1\¼µa,²ò‡:'Ù‹{³5äà £Ê”ºp•äßûʰö¶tè :9€Côžï^£\1V ÉÙÄCÒ°ðè‡FÀÇ&´êµe81K+ƒMSˆû|~@r0éDß'&’\CryD2)ËMan÷Ñ$ž`¶‹ ­¬Jk¢b®Xaõ?19ñÎßrA³&’wÛ|!‘.Ü+xöGAáý€8¿ÄS‘Äázþ©ù›5ÙÑ{B ÷7cQ×—AÍ"­ÅF)-\8Õ×ÚCÄ ÿWöÕn_‰Ïp´§g+ úÚAź53["“Wü%È“D­§®{رá%q¨¬í­,ê>ºà§Ï‹ÃiOåpê®ý˜àQ5ŽîŒüQÿ$lÌ `ãî0l< ac'ÇÆAlôôì)Üë:tO¬þ€ûNÔÕmÿWd¸ƒÈ˜Ó/€ŒßéÄ­ç»ÓÕœ_Mñ¿"½œÈ×û½f"S“ŸÇN cOÀî{šB‹â²æ3ïjâ}]¢Ó6ÙCjŒ–¢é!ØX/©Ï¡î÷ö6mUš¡LßÒŒþ¢x·é-BèXÓpr§Øk™öøÐZFî-ž¦ rR‰ICþ›€?î|ªÛä·"¤??r#³1)<òþ§¼+a㞎æV¾¢bè= zô•/¶êì¢íÙÊӇ좵ʇ[u±÷û ÷ª+±&™ºÑ‡WSµ~4ŽR:Â'Bñçœôô‘¯ÈŽœþ4ŽãʉQýIëÿQ ‹ Ê»ïnâKAùzƒàÙßcðø)+düª½‹A0¡=h¤µõÁ€:5\ð~Ó®’‹·jæÌ-1ꢥ»æLRSqã?­¹’‹R¶¬Õ²a„¯¹Šo×[oÖz%ë7Knx¼Ëy‰êóÍ¡^‘'\lw /üº¹YwžÿÊ÷}Wkv`Më(-åöÔh.d‚€¶Óö¬ñ"B6ý %ÔñÊ3òû@è¨[ͬt>ª·p§q ÷Õßé,\ FÔôX¸‚÷»Ë]µµð-» uiбà”Ó+á¿ ¼_tâD0ˆ‰«ØOˆ;‰{¯®¼Ø{¥·4B±_ó/ã°“œ—Ê„M:kw–rñƒ åéû§2lS—,ßaf—&wõf—æî»þ.4¦e+G® 3COBÿ–[ÊÓC«ÿêºÚùQÈRÆ…O啺åNLl“¥$áK»½ׯìà–2º$Ôk®’±˜­Ü¦Aí¾ÚuÜÞí‰Aõ„T>· XzzTÊu’þ‘ža+Û)=ùƬë˜Ç‚ÇÖóš0æ×Ë‘‰þB–S=tÐÞÜþ[¨3€žÃX­‘%èÏ{Q~[&ŒÙÂWŽþ¸:Oô5Ý‹ýW0ÈΗgHÖ…VÜMÝK|LÇ^æ.æí|Á[»ÿ:Ý ¼ßÿȈ3ÁóÖEˆ·‡Ç›™~(ÞìËî×ôÐyñ:ø—î:ûÏP†ÎZ ÀÔî]‚Gï VqÕ¢ž¬óÎ.\±P¿¾ðŸ†ùån?j•®#ýLaxÛíü…}º]ƒ‡µUפ¸¡&¸¦XExHÿ,êG†7³êzF¹ÞgÕŠ nÒõ0 ˆòÀDL4£•ì®ïáÈȰò³oô¤éšnÿì:aB˜t=¼ƒÛ+˜¯sÕ¨]ļO~öŸz832ØC=ÃÆöæc85^òöÏt ¦‡;* Ú.Ѽ 0Òqëk÷T­¼Îþ9B7®âÁGò£º@¨#ºôP¼ÏWþ'*Ýòc‡õPà=œˆ‹K¼dJ¥Ä?„{µ§ýW{ˆñš¶T\Ga¦õàb>$èá{—öÏK†.Þ²e‚÷]4Ó[Èɤþìüÿ=üD\TG6sÅM „#à¬Ûòk-ËÅPÜ"Hq›àï2ë÷g]ÚuÛ?t¾Ò/É?½ÿo!_Ú1Šÿ}ÝFŠMå?ª#\µö¾„½wã…î|>þw—˜©;~J¥UZ4¢ Šú3R]Ó5tiÙÕ`p:W2ß×ùFn#ßHÇ_CDÿôIkoà›ù½'äËnúÔŽPpBÿØÿðˆ¯§B£q¹«qp4dœK¥ä=]¶7%`x@ýÜöÿЗ·é  Aÿ¶pÜ¿÷«kâÕf´uÞÞ„>¥ ó?ü]·)ç ™˜ÿNú]W~Ä¢ÆðA ½¢ƒ}N‡]¸zöÝÃ׬Ó·vÝÕ„}%\*·ü]ÇCZöÊu!ØÛ0¨¬å]ÝÞÁœsÿÙ¸ü™®&[m⹿%\•þ u,«Ð@œjîÒ™ªæ`gj0ç´wuy¢Ué–·C™‚eî|W­èªè¢Ek êµh èíߓ|Éþ{—Xª'çqó1=„ýôï»ü‹ïƒÅ±µëuºÃe\±™ x;3ËÖë|!né0?¦% àð]—IíÏPîÒ¾år8†KçòHE±rê›®þ&„áoºNÖA«‹ý>¡e”ÕÐGo5äñ½–µzý­(,»v¢þ¬ì:õ}”ðÏùD}6G7Q_0v™Æ~%xŸ.ûO5V®MÑ|™p¶1Ü(âVÃÁM:ø¦c÷BFÑÆØÛÙn¸¦{«6]G§ÆUå ò!Ÿ¥£rBxKºzä8¬E¦®Ðâ‹à¡SWtL+ßÀ#dñj¾“®¡.ý[ƒL›­Š­á’ÇõÎÀ#¤!™?¿ë <=4S–…·ÞÑÉü+æ;ùÍÐ |¨«{cJÏê$ÖÌP’ œÒ]’žƒ”n–ž M¨]'Ô¡ µ'Ô=xxŒY–òÞ!Ö̺ú£%ÇQÊc’ãm·»#¼ûæ\#9œé^Çi#Á!Œ<ô¨q"ÖÐz*R»å“0¼=’Ó`NuÚ~óµ,ö¯mÁ¡åk MÊ‹³uJáj®ö™Î—bӃ뚂ãõƒ”ËJÐÉÌ «ÆFè¬ÂxΠ)³u êëÊ  LšR°«àl°Ã¨ó ¼Ã}S³t•ü¦k%¿3CAw”dqµÜïÜåª º£àí±§Ö5!¸®1œWÇCïäq-¸mõ„Sþ€×)ñT€qå°zç©°ìrA›V9òºã9<žïwøýS‚áϾap®Ûqïµ+4.bnÈ?ëFÁ= áÞë[ƒæn#L¬\§ô“˺/2aì_tž²ª e÷ë!7üz¥ó­ÐÄïÛÏcÚvvá­§frå[G¼‹»º¼æ„\^vÉP—8“Gë&¡‹]YóHˆ51õŸä Ñw†kŸ¾l¬OŸ¢Q~µ‹—6éÿä-ÂÜIiMö½?È´Jç›:0à$*G{-Ärñ”9öf׈ûË'á>—:±*|GÛ¡÷÷´…+1¸ ln׎#ª'Ò‘®ê[ï‡-¼žÐ^ÿð¶ÒZ¬f>¬>^Áõwo¶’wb™yÊ– Æ…ÿ»·bŠJð›Â¾jã{×ÿ¦8 жP‡@…B‘ãøJè=ÏGHmŸ…¥ñÎÚ¶}ú1}:—_Q ǯàw3¾ÉŸr  Gfá¶.ÛÀwnéÐòZ0#ß>ïÆÒ·mÓ‰Ì=ážÖGü€¯0¤Ôt šYøa¯´½N&e°S'w{Ü8%U­±K₳°÷]Jz$öçY øî÷ÈöÂÇoÅ¡söªî†k’Sž­Au­<¹Âðˆ@Ú‡¿ÀÓ4ÿ=Šú¯-³SñGþàF}Õý僘²Vgà Êå—B,‹‡°*w¬ÕÅü»L qŸRDÕÏíšb“.•C7ãî°”»t)!0ÿ0” ‚P/ii¨†{Œ|@|;$ÁÈsqP7«Æú)—SÅæë¹B_}—\¡ºÈЖ ®}é¡^“Ë ÷:)w¿®ÃÎÓ´Åéð‹áJýz×,r3¯ê9Yð|ÚÜŸ¾‘Ö)µh›.ÇvNÝß&tù˜BÆÕ–v=ç«J{xçftY•{@ò.)LGÀ%ý5ЮF›oO¸S_ø;CqÔð´VÃ`o=LeZk“µ .Vd˧òC“kx`„–°õ}ý.¡;Ò4RpÈ}ïh»„h¼}Ôì!ñ'PúÊtM ì)êÄæçžä„‚:O±°«"ÜõNqüYy·»õ16”ÛõN±p'¼‰Ôê A Æá«s·>è:¨5žÒY9òéÖìÛ®·ŠæMçºÈì¡Ù`õîw»îMSçó¾ë¾Y¿¾Ë7òz”7¬œú~zBi;­–ÍôÁTÊ0þmq–r"7¦˜²”puz=^óÞa6òA¼wÎ µàA÷œÀ³ë\ÓF‹3µfP‡ìRªUì–PÛÒÌÊØn_]àüiÆP“4~¨9aOúÿúžTø_‘Ù³G¼£Ðb)šdl.ó‹±t—}è2d>\À×A9¹îŠÌ£-0N&ñ÷&(¿ÑP~]'ÆŽ[P‰”oÞãŠL(­àç—‚âÑz¼GŒ+Yžßíתýšù¯«aOð\ÑôÛýÊöüt£¡¥=ÒiaŽ&¡õ30QáÙŠ>çðßÑĬüŽÕl·öÆóÛñ¤Š3«ù4É€÷h7KŽ&èëûiwþÈ[Ë2c„Â)” ®ñ#\Ût5y›—&µ8#IÕJÙ~_ÙŽ*eK;hÊ}ñvæ l¹‚Ù"š¼¦ÇQ_]†ö©£i;ÞrRdÙ¹!ñGXžÂNNß:ÄëKoùŽá”ûð°Õ¶îeíQñåñ^?sže­Ba ª²ÎíôÖ¿k8 Ÿ¸ö¿²‹éŒÏÙ¥œýÆcRŽ2…êeΆž'ê¨dG%Çî²+TkTüîø½Þzæ8Äœu¬N(ÄcYyY[„l*¡&ŽÆ—•©Câ÷²:æ¬|¥¥SrŠwUbŽJc9s–JNe¸³QU+[.Ê&Æ;XÝ+Û íxòdi$ÔÜ*¹v¿5µ´Ç¸½°4Fr6D:ÏÆˆÇ³hæh¤:¬YÊiˆÌ9+¥6Å_’—÷ô³¼&ßI(à.࣒ñúN•yßýÇÆiÜ&ìч=ecɱ®Û‡GÀÛ]Y'ÜFmC®—“¢_ȱÛäçn‰;ÝË,lIïow6Áã1-y‰¸*µ>œ/ÙÆ [.Ú]MËÏÃo¼« ›ÉkÄ£FÖqìi+›lqWŽž3—õ™0_Jïï;Äš~‡zÃL-?¹;›£þc^ý©MåH¢K¿§ èt´e¡Wé<\¬ž-x³W?3úwz8Kc„¶l2H}¼œnáYòð,®yN²JKm ô¸Ö&¥Å±ÝÒ\¸C“k—…H½së{ÿû<&+Á\Gì`‹Ê³½:ËÚ†”ù€ÀâO°I¨Ð´°+eˆq¡•ÐÜRI6\Üá)/|…Óu+ðæ§„y4!{Ã]/\Q»8âal‘m»äQ·OÈ–"elZز#ǫ̲8fédp`µãÙ¦a¤›£ÞI‡w«·Sz|Ôõ WXo-s_IäIµVôàg†$âôH¾Ý²Öˆº Àuè§’LQÇnþ³Ÿÿ4àür=Àëê&¿Œû:9›úØÉ2?°Pd|›<êO²e3;ÿEÙwCâÛØaÞJüAàS·2AÞ1#åQ¥rl“<ê5cg$õAŽ]Ì-PÙv”³ù”§L”c?”msä¤?ñäy@™xíZLÓ9˜ñÌ/ÃÊÖ¢:Þ¤XvT¦É%ø0Ãï a:èi<§1z‚Þ°Ji»Ÿ{ýÛ¸?Æx]Ô„÷[¢º€˜Zª‰ÃÈ}'xs¡jv¥ìJ„¼M’ý´=ÿ²£(l:#ã?—m›eËŸØ1ZT2þ0<*Ë.Hü·³¬“ðzðʼxL—lÚÌ:ã«_ÎÇ·s`ÙñGÇÃ)à ˆ¿ߎhNº0-ɇë¯IkÛÃgÅ;'¸m<|™°/:)ÛóÔÔ×™äØ?É£Þ“s“NŽýtx‚lù3*Ï«¢qÃöµˆ>Ñé§Ô7âe6Êø7a;ï¬AÚ9ƒŒN|"””1:Ò…ygŒoóQq5˜Na5xî •²S•âZ)笷~i¼´9Õë U ¡;‰ÚÚAû¨î”)#Âà5Èy•ì0TÂ% Q¸º1úx8 1’€:€< ´k¢Tð<ŠÙi*þCÉút®ÉàùA\.¹<ÐÇŽö±ƒ÷ñBüÑWdÓÍØGÁ«¶sÿê)Ü^¾–wí!]×Ö°—ÞQ+(ïqB-Ê·r;_\=ª«04#ç¬:2“Ð5õꥷ4k›í¸ <ý¯ ‰†r‹ ük$-ŸŒ…Ž‹Ðñ_±ºáôà@k$ý2/ê!€i‰t¡lyShŒ³4Â'VÄñ½êvŸ&ce¾"Ðgé*€Š7¥µ4ùÖàëX^]€Á´1†~ÿ†ÓppèeרH &qžïlíB7·jkŠXÏ$Uð“~©Äeûý Þ_ÐÛ¼ isO3ê”ÿü^¯Szп½¥p*ЉSQ¬¤ù¤x<Ù²©½¼Ú»÷àÒ$±õjÀ¿Q»Ê½MTcégf'ÙÚ÷áYËIVV쾦¨¾x.ryœ}ï¢&éi-~*)mÂêÜ ÆN÷7¬"þ;vàó®G^,Y‡ûU¸¤-€^Ôrš(S£ÜWª£6Âs2Qî­ƒ+6è8ü­Žj€¿Šu®pý„õª«%=ª£ð÷xò^ŒÁÓ [ñ‡¿Â«²€ Û•-cåå«Ç2ï›ÄÎ ð·#¡t[¹º.½Ç—dìL™/‚ñ¼„”àƒ¹­rßÚoÿÃïêù‘v8µ*¯¾‡©i|¹‡4÷Ñ_ÿ¡š¢æÿH®îÈ»ù“›ª¼‹ü´?3çJ;ql ëØ…‹ÿdû¤1…ˆö è&j9(Ïè9Ð}º#þPàøµ¯ÓÆiü"S_»ê¯2ü|aô‚|˜NÆúïÅOÓ”œ×põ2My«¡Ã¿`3Œø‚dC„!SéwW¶ãÜ­~V-xn3á3k2ÓПu¦ƒû¢–ö‘Rל24ab5C>foTþìÅõµl¥ >—wV^Õêgg)ù'è³4ÿ&„j F(õèôOàsUJ9¥ìbô1ÁsÕ{/¢ÿV²ÇÂ+ò5C<ï¹IÚ„w '¢›ï.\Y1d/4.ŒôoÚ@‘ñJ÷Æøb#Ù3VðüÊd+ g1úž–fýJað#‰ÎäÙ&w9ÐÒ¤¨~à/À2¡WÝ*xq'F‡´?ä”@‹ÇÈòøˆ}Q=ΆC殎‘‰¶!Âkª¯:¥§ì…F‰;²äMrÒ§¿Ùá{7¼Ÿ*»à‡ÊS/¼g»™Œ±ÕQ‡4J—za=ÒÍR?$×H/Vc?øö~¸Éú€YÝo+~xXðàÑÏÒ d†gÞÂ~ȶ ¶ö9ÄÜ,ϼÅHä±dä»}IÆ{iÆÍ&V“PÛ²‰JöÆÙdFR 1cÞ'°³6˜ØŸ Õr¾dJžÏÆašÆŸÎg–d×ß$yx/dPi "ØþEîïjÙî––1HÓ¬‚lÁ%7AZ_ŒÎ6#Ìy‰Ueù‰¯ý÷VÒ_#åÔ_‘±‘ñIùÙ=gX|SÙw€0ø²…UlEUз­ì”Ù׸ +ô},mÂ⌻ ǨãÒ_13>›´ÈÁ¬Ê]#“úN§œBRnÇ4Á3™Ö€°(Hí¾œ´üT¡²[íðÏœÍYH£çË@Ïêp|ùÚ3œ*Nupâ—eäƒô,%¯>ŒÞÆOZ)3ÜKPvŽïR/£ò“7¡T|Ó]òX»ô…÷7MYÊÆãTÁB—·SZÞ¶ÁÊÌV¾_Hâ±âh x7ù¶|“‘•­œ;E_!+W¸z(í´ª"i°§D­¨;pmüt¼Ç©®¼[y, ðœw›»uúµïí|ï,ïnI%Qø P„R¨}›¹ ûk†‡ÅÍÉ109`\¥”lf·¶³µË‘7’mM òøH@=ŠÙ[[íô*×"Ñ/£§‰4 Ͼ…s=]«/R8¥nŒ†*8F †!X'¬ W*sÜ_LþÄ¡R?¤*o-hæ‚ÏÛ–ú!õÅ‘h^±Ÿ¼yO¼Órëö‹àF¿žÔë,IËÁóo!·Ê±OÌ—F2ÇYaK•·OÕž*Ý»Ÿ^TI=¥>ö6Áó! e¾”iš*ßàbaË^9öóùÒ¸ßÃö žF#Eßí­®3R‚½SðäÃw… j{‹8¿²·c?Š»½š‘w/ ûæªÜ ²=1ý3æh`9ÇñüéØ ÉÙ Õ„'ÙgŽºjG#zœ×Mxd¸£Q޵ò'’£É&jä×ò–ºa‘œÙô`²lr3ÓaPÊ$GH€‡MxÍl)ãAËöJ9‡¤H{™˜Z#<ƒë¶’C™/™ç£ÉZmC•½Ù%éöÏåt#?’2ÐØ™Dš½÷jrÈ4¬ƒÖtËI®&9¶Û[ª«ÑÞ$. |yî%§2a>»g¾4PØrPÓƒrìᲆ‰Ä»l±2»”gaË#LÕã#¸BÑs~u ¸ËÌ’ÇOžgûjodÍîÊ¡4[±›J}Œ€‚+ë›PªŽósý‹z*l)S¿ãù(µRêF”)=Õ~³qÝI-åäY©£ésÁ“ZÓ­îFË‚CÓA~; W ð^NÝ-;+YÎþt)Ç´mæþžfÙQÊòv°<|¿U¦wÒ¢sìPDåªÿÚ _ä‚™í­uõ„± N©uÞ=âýÒ+ä¸)ízÂHk$ƒj¥‚pm/Ͻ‰`RÒ‹ÉþUøÖ~lÑE¶[ùw9+¹t×°HG½ÄÒ&Rûâ9#êâ/³oÒ23²”Gë@à8*Ž1ŠÅ,Z¼4eâ?:ü¼¯’³4+aÀþ° ¥Pá-Gäñ‰~y©Ñ]ju74ÅW²oÒ³1þj“m#™³Ô÷wø˜•/ÈÞOسWŠ|;ø…k Ã÷æšrJg©MÊ„çaVZ`ó–Â$Ÿæw5.4@ëΦ„R Ưb KÆ2e?ñ±Å¦ÅXÁûèÄÚ:ëà·9Êb^=mäå(|åÏXΡ4ç‹pk¼HßR!â5ÁŸPoÿ‚íÍáõH¦]Z)—1e¢ýÈ¢óR¿ç F\르D÷V˜Œ'íG–ÌNðÛÂiOz™*µ½èY¬`½Õ5Ô½ÛZH7 ”àg)&©/õÌX\q*RB0ÑþÅ¢²b)Uñà°(†ÏÝŠ„ŒÓ#ÄuÿûWâ푃$Šü´™uC—þzF¢³8’ÔLÛ‚Çi@¤¾[Ñ­<Õqýþôqä\“<ÅŒÃÖ ¿.;‘®ô^hç.i A=Ý/¤û:ÊÔVM >ÍSX¤ô<5×܉ŠÖ€ïóâÚ›öÆÿ„iÁzh^1:±Võ1dÅœFèZÁ(›Ÿ™°'¡v!¢OYûúj”Y¼RûçÕŽ³XÝœÜa~·~g%ÓKÒ†åÚ c¾¿ã¬=õì¢z)µÑ}*2¡þAÁ“‚šK‘&€Æ,öYP%…KW ÔÕLCb<Ý¡P¢K£¤ÅVŸ mkMj¤žÍM”réc¾štVŠ}Vz{•ìn32ºZ|SÑ X™ûtd~[Ÿt4h>´úï}QÕë8M¿:ü MÛÉ3‡¨ó%NAÖM킼…$öÝôç MNL±ÔÓ$%âç’k2vÚ «pU ˆz_n2¦H»8]¾q=ºä#<Ñ$ ºœ¢Ëû¾Ee£Õ`pýBã«ê¨Öé\<˜¡Гíÿ˜F:WéÁ$­êH|ª¸Nyfß.Ù2@OÐ#•ÇÞÕMð¤¡B,Ï3s˜Xw$êA:¢&g'Û&yz²Íþc°6Ì_¢ád ‘îÈ éö ®Q#݃H/lDTDxK5A.‚"òD›½IðÔè°))Âï¨ÃÙHÊ«›(½°ßay‡r‡"Î>Æ: Ê Õyu0 3Û®j ƒz•+éMÍQ7Ù%, ‡8ñaÁýb†t?}¯8טo sTPµ£†¹±5>.¾?âtRH<ýÉ[ð£í n—“¨ªlejq ’/a^APå$øÞºÀC2Qƒû9Ÿ;2ý›±T–ràu$O«z}]÷¾Œ„|öÜm'CàÔ%‘m•?!#ƒH„ÊÅX>æ[)ÛÜ!å5C)Þº Hxjƒà½HBt#ÕZí8N*@“xKâ‹k ŽE–Ä_Fžx¦‹-¶x›]_K©Çqaà]R^ŽK´¦èõ‹yn¿_;¨œ¢ZÈOÌÐå£- ãÊßʇV 'ö¦ÜÖäVº ÔHŽù¡+ØéñÇÙ쵫Éï:®Ì|‡¨s‚²Ó¤æ^!œ.ØÂ3(ŸRþÀ„fßKÊÁN<©HÊ;ÎV!@â9n³S ßWÌqœâô™ë¸šÄ…ñ‚ËP‡ïc]|„WS›¸\óúYj£8,4)ŸäOUî/‹¥Ø-Ínâ 1ºÙ,kv 9'¹/#E¤wH–gÖòŒ”Óì3øõ{Õ¢r\¦\…nh {B³ôFÖ{"÷îbɶA*¢*ò§·æö&^–’ íGÄ›'@KðKß—ÅA%”À”)¶pŠ·žÅŠ=q5ô¬Ò·:˜ `)´”à@¬K/Ó›Awk´dâ;\Ö€Oðé4êL¿_o<ÔœO=½^[ ¼uݹè-&…ÞÑîÁðuñæ b5føå(†USIÐKúH®³E«I:ŸŠÌ¿!fjBÌu·<(õ,{‹‚žCZZÓ¤¥ºž:7Š·Ø³ Þ~y……O¾Í8}„‘ž©£ ´Áƒ‹³(Bl›”§›¤!ñ‡˜«}ÁìÑ&æÉ!\Ë;S,™>’ ±*¶GƒY>ž Y>òîq}ãï)Í3yë‰ ð bj†—Í„%ÁÛ@óF“dÙ@°Að~ŽOlIEDQ{˜ó8K­sª‡ˆ¬ˆ0ìŽC¹SŠ%ç!)§N²¼ ÕÔU ®W<ƒL¤Ó2“ žnاÔã|èüŽCPÏ¢mÐIÉy\zF£±ôjG M ¯¡åÔäþç ÔÉV(=ƒÕ&:sûÉ/•2 öæØ/xFa•5øAï`}6A2mÉÑ&x#z†[ÅßI9MÚÌ€çz ”]“zìØíº©¨X?%ÿ—ò¨PL?ɹ»¨(D‚çHþÚÔWJÝ Rž‘&Yà&pçzÖêz³:ª®W?òs*®­|ªŽ!8ªÅŸI¦ ÚµßeãmT_ _M&F¨]µ¼&²†cM®p}QQp)Êgo‘ØV‹ÓØOÁ$‡öÉ&q˜€`Ê&fšs»ç/ïk5ˆwÉOÁäÛ­>mr"­½ÁR€Áø© Ò8 W« â[¾À 0½¨” |Î4ù>sŸØH;½wHo ¼Y4ü À™þ-ø£ä mÅJ€ç*#Ó-l²EJÝ!¥[ü½ž õCì&Ͳ²Ùd4äíðoAŒÇú“L¤óýš}ñí›Ô;lòy¢°GQÙ"Ðwø™”ÏðC¨– ʱ:i©Ùë—æ€šö>­'À¼›sÖž³C´‘f»Ã¿Ny>ToÎŽ‚jœdù|no£–3”ǵ9;¸ÍwMÆf ÈÞÂ71TϪš°7w¿°Œü®Ê@9EÚI‚Ýÿ1ìJ7þÂ÷v1}ÕòMÌ0É宜2„N 5I/á@6c¨™Y†Â3‹ô|ƒ‘knìÑu,u(Ÿ©À] nì`©[™ó}Ž8©O€“ÞÏUf«Ý¶JŒ•ëªÆÇX )î2SbΆEǤœu,§ŽÎ’òàÝ«Ñw°&-µ°18ûª øŠ«Ù&-)²»[1r&ÛÍ®ï“A-³3F¶ðऊHA2&³qП—üÓMê'H«Ï´…‚‚˜‹ê¸ìI-e»Ï[ø(Íä­¥TñNV<†2!©PZu™¬EKP(,ò›Ü¨dÝ?FÝQê:œ ¿òòB“ô iL¤ý°OHò&ìA†Û(Æ–ék¶í’ô·›Ü¥&É:ŒlT,‘º» Œkg™eæ’îç–´okÖ¦Á{ ÝïçóD„àE禔³[›xÁ rç“GBŒ‘–š¤ð(ÕÈDi¶ $ŽN©ý´”·[š8´ÄRêYi×èííR6 ¸œz K­{owb±o tÙÞ¾èÊQÔ: qþ(·¯lyY2¦ ºËMˆñöEMÕÉtF1·ÎJVLÚàgÒLSäÿAßó~Ûˆf:x­¯_â¤Ut‘ëä¸ý†9Ãfž ´™E’·$®Õ§Ú8=»öË©—•,<5õ8§u>Íkù“¡L:–…%ò¨Ä*šÏ¿A×"tcþÎ L^¢ÀªaRÛµªj+ÔP­žnE$5fÁs Ü©r+·YÓL {džE}KùüßWý!}i) ª i Ú8@Ü-µ¸ó¬F±üºb€Rø»@ÄjBiBmÈÕJ×F–z¨8¸”¬˜”ÖŸèRÈP‚•¼EÝ…]» Û¥ÈùRì¤àV1ÊïØèÛ•Ÿ· ¡ÛA”ÂÕÝÕŽ&ÉÓÖ < üj„àIÄétu¯vX{pöÀ WhçÖ`IÞ·MØ3>‡:0&v¡¡TÊ’<É̦'`9 ’.JÝžœp¶0µžâ}[\(µšóóê¡UÌQÊý&`IعASä¨w+#’¢…g)S>z¤Ä;j•¹?¡ë–ûöG[ºº%ÃãEðGð|©‹~¯ã'¾z«._É«´O2¯ž0¶0fâ›üê÷øU7…é¿A_¥ÖK‰E¦çÝÊ}…Žza³³>ÑiÍ»=ÑU*¸SI^bÀ®HÝÀª¥œ÷Y ƒðANƒq7¨“²%RûȘw¼Oj„kcQ7>:©ØUcwú]t$²×‚D–À‰¬?Ê! ±ˆkhÌ%HNÞJY£ºÑ÷Zp·*.[¹¥ ÑíV-3h„`P“–È÷û«Á ü4@pÿ!Á}ŽìkÈ-µ>1Õ*ȴΜÓhÏiXrÇ"tØØÇ— ’òÀú™×8Ò¥D·^Ü̘zVx7-i„£þ[·§Gᯃy~¿iÛ2}L<BÅó ô/ ÖÎ= í¢bXAØÆK#Éqýv‡¤ÁÚÖçàx«ÿЖD-ý©Ëvióà.>úRºÄ°–†áÔ Ü㨔§Æ€‰ºQͧ'»J¹éÍN^ü'cË™³&¡Ö¾f·\r§é~˜äF›zèŇû§0Ã9·{j ª<¸‚R”SïöÈo"ÁÉ•STPs½ rJ‘N )ƒtÄð—ëƒ8&Ðí< ‚>ƒ‚ɥм4Ø´nß}‰9Ö¼¾`†`Û8„Þ¹ˆâÚíwÕø]•AC¯‚ð­Aš b¶0g;e5ÑsÞG±Ú¦›a-ü¾WÃ8ïYýÖOì5Ûl»Ž6ÙÔyVÌVq€äDµÜ»ÏvX)þWB»½~¼+6(\Å0®‰F©§;©`¦ØG(LÝîÛ⮎`y¡Ü1V4»3ÿJ8 Ÿ¹¥+aù6„uçu”ÀÉf¨‘%†ûÀÚQÎÆ¢¾…Îíê•Öð½h«oÑÒû…6Úé¬<H°ø& ¾™} òÅ$“ôä](o„ÕÝ¡@ÒJ  †ö1ý &Ü‚g¥™`XÞîü_‚Žp¢1EzƒZÓh¨žÿ¼×e‹ÜÒeËõõŽ57Ô;¬üH½c"×;òêôŽè¯w J¦wlê¯õŽ–¨£wÌ»¡ÞñÁC×ê)þÿ¯w¼§×;Öp½câÍ: "ë?êwr½£þ«Æˆÿ w˜ÿK½CLíªs\G›PtÚÄqÔ&¾ú’ ª„Ê·‹ÒY  ¶õ*C€+PeÃg´‘0{Ü%„]ÓC*ƒ“T«ê SOC•a¤:¯‹ÊpeNVa‚ëÿ•¡J§2|¦2¼¤{tôñãt†W»ê ±~ŒÎ`ï¼Vg8ÝÿGè †Î£3Tt†:¡±‹Î°¨ÿ¯3<Ðÿ£3˜û_£3\èª3î¢3êwફÎð»kt†Êÿ“ΰðÿµÎ ôûou†¯lÿ{A½åáå.:à Û£3¤Ùþ÷:ƒ_§3\ê¢3´öý_ê ï¢3|Ð÷¿Ñf\_gs%\g˜Ý÷áPWa[á§}»è S4!¥5\g¸zÓ5:&ÿè ¶Öÿ 3× i›N»ÕŽ×ù‰óSqNgÝJ‡$æß„P>a’æÞÅèôƒ¢HOéŠQI+ÅÁDCyQ'Á JÆwãçßopÙB•ó˜V¼ * qôå-7!Ñ,5IK†ò,<DZ;{·­ÑÞkÍ­^íx“ÿ઒aÚº¨›·¶Ð‹‰uÏŠ8⥊>ºÙt,<vQ©¯v° W\\»òwâã»O·8Ð5‹n„û)˜ð´6b‚÷2þhÿÖ…Q 0zòŠÈlåßOi%X›+RÎÂ0DÖ_Ê{„]Ï£Qf(¦â—G£,x©^ èíÞÜ£ËË´¬k^¦¹Wñè$KPØ'âÑL”6Ä[Ï\ÅÌõœàé‹Ï(·FÑÖ¬ãa@Ѝ·àžLzi,MÌçŠMÑŠ›mÎu«ø*@‡ð”Šç‹JˆsÎ@’ëáÎ{Ý*xÝŒq ÅÕiïÍE2•QGä_î:h r,&  à<±kQçÞ‡áÝý¦‘®[R4L=€O(êÆå†ïï¬ÚÿNÚ¹ÀÏkº½/ªy°°ê|¼rÛËY•Ö“Ü›Šzð^,‰ô;<Éö‹‹ÎK9–“_MéH¡Mµ`n`Pj´‡²7¹ÞD5°Ž­Ƕ%iÁO¼¥¢‹çú)ê[4Å(¹ŠG÷GÛ¬ØwÙ³‡Â$OüMAÑ6KÜ"­ûM(ÒøS›oxŽªHžÂ$µ˜£ø_}hUr8å€bÎõ]Ä;=üõ—½p¢\ç]¶Ò®O¡ðŸ½Ãù’ŸÙkVD°£#?¾Lrå?wwÞÁd*œº^xó·¹wâí¡<«2ϰ>Ôa¸ßÇ‘‡¼Ž–hütø’Ÿ'oË[Ÿ-§®K—‡2ü®|¿«XiŠ%hÜ•q¸¹½˜Ã$¬F±*»6ÊŽCã­¨ð^#ÏÅ.àñûo\Ìò³’IÄÞÕ´Ñq*Ñr ˆrhÕ»žÆo:„æUÎ!,t¶“Ó¨Ëæ§k‰ÿ]î=ü׃žPjwæ/ïÍ÷4Ûe|›EÁ³i~žo‰6ÞúҤœ5~×›S2e×ûYJ 0«:ô,yºßþ9ÛDfHyë¦WÓ.Í8”h)~mýûZÛ3¼‡ <'÷ÖÉøê`Ct9 ÁG©±ÜÕ&{ Þ.ß'Hñ`Ž}žo9¤bÐI¨DQoÂqÙ„Ò‘¯’c»´»ZÊó8òíày)7IEÈ®CÆ€\zçÓÞð¼5²c##£»²œN'ke´Ã±å<»ÂJ:qÃò‰.â÷ãÏÉ—ŸŠ°·W“¤È7v «‚‡äåËÝÁr<<%WJñ£áD5ÕŽ—¹¦5J{é¥S:D0<^I—¸´ý$†åò-´O˜Üç#ØÉ ð3×Ëò¨$fèO_~éïàgn*éúôÇ^³§Þd¾.:×gÈyë²%èŠãPZ|ŽÇïò />r3RáËÂΩ%Ø>ÜJtiÈŠ»2¡ðÆìleñJ(³NN=”ž®,˜‚Ó}Ȳž¸\<~í¡–³Nr­qç½ld®õ‚ç)ÜH–÷r(mE‘ó²4~íû’¸vÃðœuXÍÔµIðwhÖ  âÊ+A±äû•V€i¾®z|É!|Ìœëà6 ”_¡,r/K©kâk€yiÓ²°ú^Ê4‡×eg¢"sÖ¸Ûc„çYΧՎ÷©‰+úKTZ¶™¥‡äŒ~y¨äÐÊs|uBi²½&¯Wõx/59Ö^³üRÙ;ø&J’i¯uê@r-€µ‘¤?|ÎÏê–'å§ü²ã}&ãÞQ¶órg 9ýÒ§ÄDÿ#åvÖ°c-Í|Ÿ1(\Ôí–oùýV!<‹ÛºŒ´ßpº~ K\‹År§‹DÚ‚ºäÿuE6òî_²'ÛO;WA&eÊ9‡2•ÁY8§½ŒÓ R´fÈΙ™JÖ †é¸þ h,AH¥©Þ?S½‡Ø¾½¤©%5ljÉ¡ÉÞÚ•—@6¡øOR?AÖ» ;¸/¡8lw|M¼s½»5fÅ wyLüFÛÐYÛÁsÌù~µÝvD]A1æX#¬&~u¾Œøºíã­]Úk²$ÂM³Ëä­]v‰§§;p¿” ¥m(ñÒ†Óî÷ôl˜æ@"M }?[} ÄiË1wyË{Ÿ•`K¾Õ$â°Ejz¥Þ©˜Ò“S]Œän<8‹Ÿ´ìß„w ~Ú#Ëÿ*‹&i{Ž8ØA¾÷ð݇ü&|¯‹÷.q|É~aÆK¨¿î¼n³n:*nÈŠÌÀVKÇ³Š²ö(vD??O+~oÆB#ÐU0ÍûéJ#0ƒiË:I(DGœ<Ãû~5†ÜçL“–]V'ã~¹Ò!¾-üô3˜¦Vßw5Ô%¬)MùëD[„Û¥j‰1ˆäØÒ Î3ÖþxƈO]OQŸ êØTwô$¤~†O\[Ýy댡³·ùQÄÄFy™v¶uΆ.Œƒ¥ÙñyŒç”S«,ˆ_^Èó{œ"ëØÅº®¡:[¾e‡Y…ýó%fûç®A ß)ã{?±ßî>aH¤¹õ µñÇn¾€[8@Š Ø}¡ rÞ=œÆ{;éØîëÐù¯5:GðùÙÞ?Hëh"ÕèŒ~¢ñz‘ÓôvNÓk±®Lÿ&¬Lý zyñsª‘¤’þ@ë.‹s_‰a2‘tO^Jø$ŽN"/Çšx/ÿâ,$ª¶jTm¡;ü«¼îRµ¾;üDnNÙ˜ÄM¶ ¶_àC‡ÿroŠ¿’PË>gíîÃ:GÉëg¢qko©W—Ðt|ÈÞ´(:¡™U¨#È͹Æ[¿Â ?îŠ8Î+ûärÎV•P¯öì Oä‰óîYq$ÐNçǀЌo'Î=çã`êñmÂýS8qÚrBò*Aþô%”Ù´}Æ­#¸Ó[j5×ì m°±>vìzÅ[<ç7fÉ‚nÖøS>À;ñûìL:• ªœÀ¨~ÒUPEÁ;ß:Þ… *È1'ÇqT¬òoŠÓÆ2–Æÿ*5)Á± @Ë·¨óq¤üß©/ƒ6ÁU¡˜¥@­Ã³\/ûµc&IóXfr‘-%ȶM¨q€öŒj‘2l<Ú”§62Û$OîDý¹”¥¾ìêæ>ÉàiODUr•JMÇ•4ž™Õß3xp€s ÆQúT|Ï¡khàùPâËÝmú’ÜmýWÎÙ5®âgñ°ÖK¨D8Å·gp©x8ªhJ¨îX‡s]y^_VT’\m ÉXj²ï]~‘'Lƒ9ÃO ZP“U¾‡‹Ej™^Pi|;¨E0£¤É–7Ò•“Éå:/ŒgdãKÞ_ñ ¨†5ÕFª¶Ì4ÉuÙ·ž†™UÅŽzæòMïr;@ß¼ô@c/Ë+r§‰èr“½lùEr¢Ð V{Ò ¬ Ê!ʯ°ùê°šÕ’) ²M¦Pï¿„å·³du‚Œg@©Ó."jgh¨ýtâ}̼²:/…×.ÚâR\Ô W ½>dÍ€ ›fì"ƒt{þN|7BðÜ¥?¹/¯Ñ¤ÕH‡)í%ÿX U5ªÊ ¥$÷Œ§”ä# FÉTRztæöø yŠ8æài°0þTp•lÛé\ÏN‚Îì>¡s½°š“å|n.,Å;Ú³]öMD(˜ÈH-ºz)ä}{•ܨÅ®ÿ¸sª:÷þL2D;HÄ  ±'ZSP‰ÂÑ´!‚—(BPAèEе&ô%!8³!›ÅQ‰â[Rè«RêåSc9¶ X‡‹U.^Ðå¦Ì8˜ „K aæ]¿gíëÌ èçý´ùc2{ïu_Ï󬵟õµRcë–Æè¹Ü\Ný…H ÏšÀUôVV¿ô"iã®Z•jÖ˾ٺ÷y‡^3uºÓÓ•\=I½çÜžƒi“F¬÷„]¼Rä¨îc”_¹FºŠV_ÂåBì&d'SH+_Þ‹•6üÜ0÷Œ²gOH½gPÚÔë÷ô´¹¢”èü4¹ù†ê±:ëuH«·Lœ=xBh£î»wvJ`J·Q1÷¥ÒFQ›d–YË‹îùº"xKÔ\UÀ†ž×ðð÷Ùvg¥õKBVBµ =ÉZg;ÿ¤K‹h.òlˆÄ¸Ú#ö“ þgLlœk,κûx…–tÙ*Ô$º‡e¾¡Uèésö UtÅUòS¡zQ£Wôœ®â1ñ˜ØJ‡˜}„DS ‡Ü?EA¿ÁÎ-§ ëÓê—ö«9;¬–”Âý ýdÛZíwÎvÐZÌÜœEïRÂ7gÅ®‡á`±8w>ÝÍ=Ìm‹F½-’¼ýžýÙoà‘ —Ðg(@^fÉû» ÆÚTZC>…‹*oÞn9*5l¾C©ªQÄ΢-Cx?â/iµ;á~ë3Fœd¦¹ßÕzþ0™^!u_œÕ{þدɳ$/vY|è¿Ç‘í?ÓažÆžç2}èp‹Ï»nUÏ0Ô0EÄZwÆ¢†~í3õŒz~æÂ<݉™æi^@¯U}£ÅÞ±èÜÂ+-ÜY¢¢¡(ŸRY+y$[ cR2ev‹5³w€¶Ã¿ÿ äBË÷5ùÓ¼üu¨¼¶æ ÂëɪcAN>J-‹s:Cä.âÉ*ß„àÖ«mµÕ øåæƒNSnËXqíÒqQiã¬x¸ž¸JØ•÷5g†IòZžLHéËÜŽŽ–ÖFKk¸M4$†­—NÊŸ{c*§ Õ¸€§°ž6òÖUŽ`åkxC]-Üö\Ú„[ø±“šyèW‹|SðG_éýÐÞOÛB²ik¸>)Á¡¿ §íÒµìêà­(eïV5³¨¼D®(~Çw$IsÜžUŸ®Á| û&³ÊÚàCç¨ùD-èGˆ¼04yÑä¿%ƼN=kú‚b—pø‚. ¸R\sÊÓËI!æHÞ’ˆ&Ùò†nœ•Ôm_‰>q26ŸÐßu#³ú†uqãÝ“±«-ý»cJÕÕe¯ÉÓ';b5[{¬ÙSü†fd‚®nÃ:&o잤´:¯þ|IJÕÿ:Y‚OÆÊ=Çf¨¤Å%GÌ%¦R¶çI³úS ™Ò’¶ßDp½¶h›½'bkÚnk›·¬õ\w"®žØ:ÐVÏÉQK.+–sOXæxŸÐê£0Ô#Ÿ÷ò«#Œ Óëb}p´5Âo¡@‹@¿í‘ê®T‹áÀ)VinuŠUš>¶¥ Þ®/uù8Æ¿TÖ»‡æ¯[4ñÎK†ÀPtMíU3j± zÞW¿4\ò.±ŸÖbpû3ÑX,®õ$·ÖÕ_â%ȶTxå,HkúA<ÈKU\ï¾Ëp=‚óмXqjå7êØh(`í±«;:bީ֣JX;íäq1œ[:mpl§ÁS¯­J'·Fì€ÌŸµ,*ñpÄr†%1>F»«)’íÀ¹±«–!ÚÓB_è ÞtØ\3”¯;L„8Â|¸/?l–koöË›z‘'m+ÈŽù’\>íUtZÈ»IKû×’Õ6A‚à¯ÙMÄ®c±‚zͦ¿¥5FI~`?Wß;ö›Â  ‘Ážû‘-~®å0Gýã_Øsæ±Ø±)ØøEÌìêIýFð ãÛgŸëß^üœöüÀTœ@©Ÿ{ýj{”—g`1¿¼•f²â,V>ÐÓõ$`ˆÒ£D;–Ô“x{fü O4«:+pýH¬ÿ\Éo›ÆJTfii`Ï¡;åiGÝ.Oéa' 6¦ðDKuÁÃ|¶AÜ*Õþ̉í!SØÀÅÊ´£¾ý)ÊŽÜ-Ê´ŸãÑã‘â1 îÃ>Ë-¥W:@Ù(Ÿ!£ƒwÈåZFr›VŸsˆ¥S”HñL®¯Lù4wW™êzvüäÀ'7F£y»ñëºS"8Î"yHÊ®\Ÿÿ¶::'§(´ÿ¯‹h;Š\ž#N÷¬ü0üÇË1h÷?½…¨ìM{¹ï9r\uÔÝW-râGÚN¥GåO×"÷OuaЫL›y»ÓµÅòí\²ëµÕrÀóõ¬´])ÍPx/`vjÎà¸{žXÃýö_Ñô¡?ÏvÎvNžèÇë0fQ<¯íV ìòª%ƒƒ7ÀÀÿwa¾Pr%ŽÿÏEÄ9S´ôÔ_-‰*åèÛ JoË Â…J/ð·òf©:ê/àå[´k^K½ßµ­R(·TŸŠØ~³œÊÊ3ù,=/šwJ¼þá ƒhšäý)&@½Ô2b:.eå9\ïz±âœ‘©’7ÌÃ%OË^Ú+Zš.môñ)¾šùÖ˜y›ê¿sa +ÍÂþbRL™š>Òs&MZ¿ý¦þÞ-½6ü9–¹œUeù±{ºrë”[*/á’¬Üàw¢G̽ò'Œ'H)#°c8ü‹GYq&×§â –¡øU× ¿‹¸›¿Sé¡DæåÝõ,ä·•žw]<ÙÁ·W¶‘gÄY|Ôý«ÊdØÙy¹–F{†ò#î‹óvßž¿½ªs=§¸ž-Êß¾àd^Kè–ÙŒò\Zèô¶¼M?<ÒuYe¯"Vš³ÔuvÚa+ðË çž`o€üÁhn+êÑ´Iâ8” e˜²c¿–SÁµ<Ô,Çöÿ[ W®íFT®xÕ.ú!•kw¯Õ*×nTîi^¹KDåúÐ>Öú½g°^boz°^òʈ8Œ…›ÏHî廊H¬§Žv˜¸×/# q¯e"èLÔÀ½¢†{é‰ûå_Fbp¯q"æÐ£&î5'’÷z˜<µkÄVßêµo6î Þ`É»/‡Þv„:LîkuMÈ]Ï}áöµ’÷ç9x?À?(É‚éÜ׃ûê—CÜ=ã¾ÚˆûB2:÷õO+÷õw1‹²¼.Ü—(žà¾2“,¾°sb"Õùµ%ΦÜWq_ ¸¯m“ îk_ÊVnÙö5N$æ¾öÉxîkJ$1÷5Rç!^ƒû:ë°r_C°{Ťê-쥳•–°OT7‚ýZ©±_È2øhT°_j#@b͸ ü+ý5á¶âSöH2~½¼ˆO±$‡ò‰(xš_#¦/•=ó¶q¡Ku(_,:‚‹>p8Ú*Í“YE}2}RKÐÁ”#µé7¯Ú`G<á5&CxÁj[cMHë@$&Ö»;†506V¯à±3¬äˆ… ;=ÉàÂ>LÌ…}4)Ö%âÒÒk_Êëápæ¾” øún VèˆEÃ&ǾÓößÂ[“µq(¿Üª4-CC7Õ’RŽÅ“f!JF©M#¯ÔË-À4jGQ©fSm¾€ª8å¡©žÞ±jZk:Ý•G—žPk@®Œ*”ÿ™V¥eåR,«v•)Þ¼†X5*®Ž«ÑEeÏq⠣̙ZH­¹–¬èmT(*µ/kÀ§àÖø\ЭڈZäSdÉÛÔºŽä”¤æ7‰ƒó!€íô":eKiÆØ^˜}­Ñà%€Øèþ©n.¾†zÒþe»Û@Ù:|‡R”Or¿äëu”m ¹_¾9b l|†M—\eii–-Óvk~uó6‰cÖGôU”¼V®%écØ›ÔÜxž`*D+¯%ŸÄ`AjA#²1¡¶›©‘p/ú¦,¨§Æ†¢Ý9Q¥œÊr¼»s—Eó?V:ª¦‹ðËXÉævÑ1NÍmF<œš}'šz…Œ3{¾f^ò[/U £c”¾Øm£ÑŒ³`»òYîñ;¤å8¨‘ÇÒÐŽàÊ)¥ ~@e§ô§¹,æ–ͨh>™ ®s½ˆvÃJ"µ\·ÚŒRbCrßÓé”êæó0oâUÒ„´T™¤™á¯DÁÉÙ(X»Ò0ÿÇa{¡¾®ÁŒ¾æ~&,ÔÊZ›”Ú/gEt"îCR”ä^­lª{d’ÒTC­‡Oˆ‹##8„ŒàR-¿¼"¢O"¯‰è€¾¹ ™Šg7Ò`áaå9Ú¹&³arÙÉ!¦‡b“{IÔ6¿!›m[ZBCA–m‚ÚŒ†«`TT•Df|.•>ÚTc”A~ä/5/k yÑÝ:‘'‚6®¨\—C”’Ti¯¬,pYŽNÓe²FÒ@!cºbÔKžf¤íTšÈdxöÄX‰[I’· ˆ]ã R‘FRŽ7i‚6„âk¹-#u/Ó ž_ÆihmEîÆï¯Ì6¹»,a¦üÞ}M¹H†‹„¨€zJRîÒ«ÌT1w37M '¨÷q¾SñÝw %™{ÎŒ–_—¬›Öø2õ¦B%öË/k½_=ODo™!ÀH«¨( 3J_ðH~¯±è $©Ý÷"¦ˆ|”©(Ÿf¢x…ÞÔra"A‰6òÒÐ=*‚¢î‡°7¦=ÌÛÏ™ôÞ£¬Y4q3AÁÄðAÔÁð¡ ÁðÑ51|W&áÃõ=ùôoîuF ¾¨¸ †ÿ+%FÍZ°ŠàãÿÞRmBI„•ž(›‰»¯3êÄç)¢ƒÜý&¨T1€}U%ØG©±Ôƒ-#Ž™›äe∛ÕýزªÆ2JÖ7ÂvcxØçøÔÔÂÓÉ þ³ðüm8ÒDÄ_ÃËÔ›ømêd´3}㡲[RÝ«F§h]ÀÕ1SÞ=?ãö¦¸`;k̉œDveb"L÷„¥«žÕ? $ãôHi@Y‚8¥]³¢`nxÉp{á¥LýH"­ÏMº)§ÌÕ˜~z@>g\ÍNŠ6µi‡ÏÀ˜lÆÑ[‡©x"`œƒèlIÎ0¥ÀK'€IKp8cÉŸú'—rö4ãspõTFå–ù¥Vn÷À & ¡ϵ_Œk¯6éÁØ[AlaS·_e”v«T÷?Ýf%µ$Ç~>X8Àd„Ò¢ø¸æ’v‚!\ah® /PsIósi­ñ„-|2^7sìx‘45m §’_N5†—®ìd}•¦t’Àd8]h&Á¨húüeùnLí4!ÀÏr Dú!—€ q ØY$‚ ñ<ªâ©↠6$Âö¿$P©;oˆë„ÊVý¦h.„»eI« šU½K¯¤¡DƒR=BohmÌo¡õt.Œ˜š!l^T€OŠœI…É ^…TÒõǺõÕˆ ŒÎK5"u·úĈÜ3„4~» Uó×„È 6n$ÊLžœ›Àæ6Z$æÕ7Ófp)thñ&4ÝÒH8Þq†JD"ƒDŸÐešHˆ²35ÃqB8ì¨ŽÓ Íæxù)¤°‚ÒÉ&á£ùc<éˆIoàÖËaªᬰ#eP™ÞQ„ i$£ˆ ¥-fÎAù¤>åEƒSqé5ä'8ÿ⢪DA ?Þ$ 7@AfJÞXç³ý>´§bä~¼ öz²Ò¥ÍíHsw˜fÞ?€§Õ™·{ˆ˜õÙ_ñ ©KEÒ mBžÁÓÇyšO­À™‘EdÇ«™«'6óLhs¾!ª– 7÷^êÔêW”³ÊV+Özn®tJòoMF $IuÇ‹¢¨ù>Iª,d>†š,³ŒÜW÷FÄûenô7©ÊëÑ{=Þn­üäÚÑè˜Ëëå’0¯rM]5."Þ;6¡• Çø.ò[÷ûȲx½óXšùk%ˆ% uLSM3“¼Ì RþF€”ýÐ’îUÉRRjq¸¡RR¢ÌÕ0ãKÁR %Uïtî9('”DéMXX-5ódá¨!?ðÊå ốꑹ‡b/hÖ„+ßWIFa/N¢ÂöùÐBtaoXF¥I€Y¦³r‘cÌhËçiéßcY¸—üÔ–¶LXûw–Úk¼å#‚·\1Âä’ª,êÈßcú•R†ÓHHWÑê,U«p€½Ôt^°IN'Cá8s媱˜Hi¾¤h%ñ þ†¼zO6 Ì-~ìé³S-»Mæê2i£¨8q™TKŒø‰›•GTwwˆm4L’‘t 3=´AçiE}­Õm\¶[# ̼‘˜Eql³o éù™ éi±qÚÌ ÓÜ3xµ‚»Lb€W«Iô'èL£Z·XMTë­]fiVKÓ®˜jiŒæ z~×ðÈïŠE)µ6é[KšDÓÿSQâåbn©©R#´&»+bhÍþqYÏuÅ4ÃAøe›æ Åï&¹Çƒ­_ `óþ?øÂ×Âf ígèKÙ<ø¥…Ùü$9¶IŽ…¼¬L¦È¹yoŠ•Ü>\ƒÜ–róa­áWNYWÀ›«;kå”ËRX›1¯ÜiQö×]æR˜†oÞKÿ¡Û^+ôe1l¬Kà›JøæH}!ÍÓŒÚDÝ™Â7N,Z<Ä¢Ú¡½ZY•&­ä]l¥9-hÎ_[óÎK6iÎßÂÆ 'Ÿ|7լɬs2zJeá½лÓé¸Ò<Ù’R°8¹}Ö‘‚H2W ø¾I‡Ía2òIzÞN gR@·ÕŒf~Â56:ªzɈ“7»Õæ¯ûàˆÀá!7A0¦©¶Ujg¼ ÚH²:Ifå@‡¾oÚ¤¢‘âQÐ[£vôô?âPÐw¬´)8P­>¢¢ÔöBAOĄЕâ_:- ¾·j.*IK†:- EmZÛÓ‰.$/‹6ÏBR[p(5¹þé ÎtSãCÍæÕUE ¢6öÓ:ý©xl¢×o!»w¦õ·P¢7³Z¯Ùí¾Z,âŃ¢]tPôØ}}OE)n«û¸Xç mË0CHÔ§†óJ¯¦qLÈ„šÙ|”RîkÜ$n”–bΪOÃi<‰Š’Æ»»5t”´ì•ˆ¥[ÏÆØþ+ß‹CG×ÇBšOYÐÑr®ßì0eÿ 15FztN =úÖŽ8zt³ {Õ¶þ¹#nMö¹XtA =:iGUymlœ‹=JQk.ìtr𵳚ݞ%®W²à—ríéØnŽzól–RZ|Ã!s)z<ëßn¶Òí}ˆøQ²@Áa‡ìiÃö8„Ôok ?[+û«íq•©ìĨ¥W øáúí–¹h@CHQ‘8„Ô'PƒÈ6K„'5„”"hiêA¨;5£†ÞcAHÍ5GBH[XääýpÁ`h¶€¤©"Û%Öl·;L†DIŸ¶$ä•X& ÏˆÎ»ÍdI§Š`IË`ög[&ÿ};­8é°Ïá §âiD韙*ýPé—Ö>ܵ5*õÚ ÒGbì÷š­qPi¿Øn[`PC&ÿ±cÓ·Æ1¥÷Gb™ÒŸÆ¨ýO¶Æ1¥'cé‚Ï4¦TÀÁäý&l ŸýÂdJqË}—*Ÿäú•N^"ÿmKèô‹¢P+·Ã›œ´-`€gòrJÞ%üfÀ×Êvƒ4•h„#²6àþ¹rJ-r²iíž-.ž}þNŹ‘ÜŸÎ»Œ_³Ñ®Be‡gK*;í¿4ýÔ•ÿ©;3o÷ÝùÇ«zs™w=£¸ž*Ê?¾à¤ˆñŠÃ‘í¨¼wQ…r‹åÕÙ¬ê(oŸÞÌ3›æÞÎ3-vuNET¦e(UV|u×u„¯f8ÜomB÷†^›íœTV˜”Šß5µ—,ºÃ…Çð®@7dBkÄê˜ÁÄ.á?£ÿWïÖþ_-f®uïÀVðBçñÞ8;‰N0jœíÉCÍ#Wþ ÀïfI¾¦¼ÈCú®¨Ô«…žNgõѼ–z^¿ kôºÕüUäÿ#ß*môE nØÊ§NcJä–oã[³¿üÁ|k(íßÀ·¢¼ÿ ¾µOÚ¿“oÖ×à[kÃ:ß:%Ç·þC §oø,|ë¤pB¾u¥ºØgá[‘¢Æ·ê‰ûåIá¾u’ˆy—Ï·Î'æ[§’;p…‘Ø2ã[M8ßú«0ÞZ‚‚o µX|[|+$à[qûZÉû(ñ­¸à¯;‰oEÁt¾õ&“o,øVzÇ·ž%¾Éè|kÀÊ·îS¼»Z,¯ÈϾUOð­ÙV¾5MÄɲÆÙñ½øÖàƒom½vÍW½S[›Ç…ó­­Âð­·…ó­cÅìOÙdá[{8ó­‡ÅDoÚ& ߺÖq^¾YZøÖ5h‘fÜß:t­Æ·â¶o.T>Ióû嵆„¼,¾q™_ŽÒ"§F¼: •/Àº:j”fâï“ü³õOôI­BÇİ®«6& VoŠÆP«ØäÁkf¢XEbbaÛdë{Õ°ØX½‚Gbf~§ÏYX×^?1X×­‰Y×`nBÖ ÖµõÚ9\&‚ç‘[¯­Á×·cX×UÍq¬ë±³Ñë‰u…¬+ X×hè¦ùa“uÅb])¼u¥g`]ñŒXWºca]ñÀº’¶¬+ŒœÁº. 2'l°®ÖƺjáëJ%&Ö•òLĺŠÂ˜¬+Æ`]'…­¬+26YW<‹6!>›Ak–m‰c]E+ Ö¥7X׃u½ŒXW<¬«^=;늻늯JãÃԳ‰XW*(±®B($oS¤¡Ò°žXWD4YW²~‚uEAëŠoq¬+…,ÑÂYY×a ëŠÔ“Éä;U4úE°®†4 Bß}Ï¥6‚ Öu…ºÆ¶YY×9”š€Éx¢³®¸ÖÿÁº÷ëJqU¤¤³®¸³î(±®ád½¬'ÖqMÖu õòTúDÕf¤S¡Êõab]?™ ;ëŠDºÕf”¬+Šo²®E°®HK•IšI4Ö53,X׌°`]ßk3XW|ëJ LYk¬kzXg]·¶™¬+ Öuµ^VXg])2‚CHµü²7¬O†uÖßÀºâÙte²®È1†uE0뚬+bz(†Æº¢¶ù ™a“u3dÙ&¨Íh¸ FEUIdÆçRé£MsL£‘F¬+ò'Ö5Ǻ†‰u-:X„$Uiñ·ØëÎDLÖ•4PÀ…®õ’§i;•&2ëŠ[ëê Ö5,XWjØz* 嶌ԽL3x~ùh›N1µóo'#VÖ•dÝKaÉÅ ÃEBT@=¥³®”­Š" Ö5Ðf²®øN¬+ÕàL¡Îº «µ2,X×U$+Ã&ëŠx‚u…¬+ŠbÏLbN/ FÌáaŠÈ×I™Šòi& ¬kØ`]Õκ®$}üÂÞ¼Ÿòá6ë*š¸…¬+D¬+š¬+][XW\ß“OÿÀº"±®øR â6XWüëŠä VÉïÖXW”DXé‰b°™øy²Q'b]qW°®aÁº>5Pg]©° ¨[&£Èĺ’e¬+Uc%¡±®h¥ïf]idì,ÔY×B x&Áº®¤ÞÜɯ†v¦o<´BvKg]©l¢ ¬¬«0â:ëš>/ëŠìÀº®0L7XWdmc]W…uÖ•º¶eÑXW’H W¼d¸ ÖUô?"‰ëŠÌ Q!å”9£›¬+®ÀdA`Äg ‚k”†éé­ÃT<±²®d+5Ö•ºßۀ®FþÔ?¹”³§ŸÄºRAbXWÜÓXWT”×6ŸˆÄ²®Ôaça])mƒu•Ô’xìD$Žu%Í%ÖU×\1^ æ’æçÒ&!ë+²:ëJ:N3$¿Üݦ#mëŠ>mr„MÖu/ ýHHŸ¿h¬«‚PPÁºâ¬kw[bÖÏ£*žj¬+nØYך°•uEP+ëŠë„ÊÖ•­“„á.@ÙëªéÑùXW¤È‡$$i°®T›ɦu%õëZ¨¨¤>ƒFDUH‰(ŽÆºvêBLEË¥k¦v¶YY×NM‰Ná3pñqC‰¬5gÔAq¬+^8ëJS;ëJ½C¬+U¬k!XWQyû@%P(¤…u5*ªi+›ª&X×N»å‹è¬+e Ö}®³®4AX°®”¡œJ…q…uÖ•®?Ö­÷w³®ºHÝ­>Q¨³®ß*H`]5!únÖÕ˜F‹Ä¼šÀàfÚ .…-Þ„¦Bic]]dèñˆ†#vÖÕ¶³®°£&ë¶±®^J'“æ,4Œg]1é LhèÃT3ÂÙXWÜÖXW1ÈRzQ¡´ÅÌYc]³ÂvÖU—uEU‰uÍǰ®ÙaÁºÖY×+>Dmne]inG’(XWaæ[Û"ëZ¶±®xœ˜u]F-ƒ<5Öõ€Îº" °®ÈD ²‚uý˜g¢±®Z.ĺ"À°®&XW¤ Ö‰˜¬+ž'd]… YX×zk“ŠXXW¼ÝƳ®˜Ë'`]G…5Ö­˺þx]늙¿ÆºjKȺ’ ¦©¦Ïú~ðJ<ëJ©—uE¢ÌÕý•κÒkœ`]É¥B¦$JoÂÂjëJŽòC¬+½Lh¬ë¨°•uÅUÖõG¯Ä±®(MbÖ•ÜGä‹e][_Žc]©-ëš°ö늀±¬+„…X×9FëªUJc]éŠXW1V 'f]…. qT’Óó°®x¤±®H‰XW*‰…u%gàùX×_²³®Bˆˆu%§[Öõ÷/ų®ÔtN!ƒßƺ>øÒ÷g]ó^úþ¬ë¹?ØYWџĺêÕŠe]·ÿ!žuÚS­D¬«ú‡xÖ•"÷­%MúÖ•T©‘ Öá°®?‰Ëâ|¬ë¬°ÆºB|Î˺’³Õº~le]·ëJ~,ƒu}˜ty‰-ENȺ n ë:UkGxÆÁºš«a`]…³6!ë:âÅxÖ•–Å4Öµ0œˆu®MÀº"¨ÎºŠ5†4O3jC¬+ªJ€ i¬«é!ÕëJeUšÜá󱮞µßʺ’§Œ|7`]‘Œ•u¥§Tu¶²®Â“­³®š“;ëzîëŠ|¾“u%ÃE3?áUÝdÄÉ›Ýjó'b]8Žuu¿ðýY×Âl¬+þ;Y×^/\ëꛥ¶OÀºŠUcÁºj‹¿‚u5•tÖUë;ëŠÖZ´ÙƒS°¨­ Ö•š\ÿĺ’ÓMu5›WW•¬+½— ÖUÈîß„ºl¬+­×ìv_-ñâY×°Áº~y@_ßÓYWŠÛê>.ÖyÀº"—!$êS·õ3XW!jfó-…&늛ĺÒR X×Bƒu%é0XWÒ2;ëJ·bY׿ÿþ¬«ó÷çe]5K“uݾæû°®«Ö|ÖuÖš f]©1ëJÕºN Ÿ—uí¹ÆÎºš–2žum]ý-¬+4$Žu}eõ÷a]ÿÏêƺŽY€uEEÎǺ^¼:ëJl¬+5cÖÕ\s´°®šœÖCs<ëúÛßų®¢½­¬«f!±®÷ýÎκ ÚÃʺÚV‡ÉÅÿè‹VÖ5‡XW*žÆº^ü¹‘ibÖõËÆïɺ¾Ùx¡¬+5d<ë:¯ñ°®·6^8ë*àu°uÅ­¬këªoe]© ëŠDLx)Žu­[u!¬ë©V®U[MiÔXWRöÕĺÂþ¬+Ý_úþǪ8Öõ†XÖõRƒu]g®3oy±¬ëá b][³®-‚u-¬¾$8Üua¬k!·Ç:ë²²®ëúêa]s¬«úyÄʺþç°®-vÖ'Sj¬ëQÇ·°®ÓëZÙîyWg]ÉÉ¡›7Xg]ß÷¼+XW±5ì1Á!È?æî—·ûÎüϪÒë™ëYâ]?[p’ÏÐwWÞ¿(й‹ÄJyõ`º¦k$Ï#`[5”çgĹ–å-ˆmZyGœë:®Ísɧsz7ô' ®”úྈ‰»:jà6¬«¼ëÕïºYã]—hœëÚÿi¼kKBÞõ"ž´Æ»®¶ñ®ð„\8ïú‹'ïºÿ‡ó®]\ÿå¼ëþïzUî_Í»Zÿ*&³9éÌ“Á&åd²»r²”­¾`ò齞ý=Ý—öíOÊõç¾›»ÙHR½-Å¥§F÷«î«¬G¿$¥'ëêWäRJ\llj¿¢T¥$•MïW”®”¤³±ýŠ2”’ 66³_Q¦R’ÉÆfõ+ÊRJ²ØØýŠ*%Õ…ÙêcÙê„ìÛ+_ÐrzïÓ·TL.ŸÈK”ÉK”ÅK3MÍÉVG-W‡×þ4ïðìu§9žÝ§k9ÿT>]R÷Oãq¹l‡e.O_ô VÅú öl^˜VÚ½è Æ'º»°ÆwðRVššVÞÍúò;\[‰Œ\èàw>-îÞ¶c)H:ï”E›£ü]Õ·0ÃÅÖw0ó*>­IÛ©wóTX_n˜Xi÷U´3臣=šæSÊ;•Òî}ÅzZ|°È¨Ý¼´øŒï`OÏþ…i;k‹ÏPò<ùŸò‚äÙ;®â%‰¦íœ©wRÊgÊ\Jù‰ÖGÚÍ3×=U™IÁÊ…ä±Á¥ŸctéÏë÷6X6àCex{•gá‡Ý3UÞ6‚¼­úrV2…Ïæ7ûò¤œîóû—WÞY‰NaKpz´2+Z™9ybEt|N¨©"ðøÁîhèЩ§Ó½GÞ¶°?+IRâz>wË€ù‹P7•M¡ÿ³¸;jŽ•™¼ˆ3Ù¥3åÝ¢ þâýPúùút¦'¿C¸Ié~y[åTðñ;œxoò¼“9ÓóS‡²EùøñV¼ŸË}oa ”ã¨\ýl‡Zu¸"»¢ãô”ûB‡ë+çG¢ÓC{¸ÌWžæß§ÐZMŬ5‡/JUËOœ{¦ã´çt^²ªqßãY%Fu®2=¹ñʤ絘íg̪_³Ó¿=c¾Ì•ÞêÁúÑü•¥?ÉGÈÒvw³Ò&[z«'ëŇޒ!)ŸU¦/í3Ö»Í-ͨ|AÙj°ÎB§?÷&Ñb›.­·ùÿž‰{ü/s &Íáš'Ù⾆†àTùïÉÛ«KV=Ô'ÃóëüjWH´†_Ã8OËPFà™2h->{¿Ì?ÅvùãMOõc8ÏPéTì ‹êù€á÷ø©YV¥&Ͼ<ðãŽs‚_! ?zÖ2*¹û&÷PŸHWwbb¹±Ÿs¹qÌÄ¢ú‰t^•¢Ô×—¦ó!bªÜâ/þPÔîŸâßNñï=üsKlœK)}UÏ`ÓùTg';‹'‘g¾«¯ä})דÖ׫é…êõ„Z±—ݳ——NuIJq-ë¡{Y&‹•Ë”’w·Ý¥µó®e¥^é­‰®ä^ž³=%ùf~›=‹òB²pUåuæ{¶¤L«»ÇsUÕ;«Ÿcc‡£ÈoŠBþMü{]ü[o)òz6ùfv/òëf‘{JÞšo]Ð}SGªw5Ÿ`eØãS^Ê‹,ä\lóùÀ0¥ Ïo@”;]y­XßÄŽbîd6ŵáëÖ­Sv>¢ìô’ó÷>–¤ìU3 Eh.7ê)÷p±]˜ÜZy{6“jX™fÞ@>&ÐFû’%H.KõøÒóÏ(ýæ~Å£;ðæ>2ÎUÐ,tvyóà8ôÈ^_ •ѽ™,s´½|û]â8ré/»>ßA#”5¹~Sß|*¹§"ãôké­-žÎT¥t8\ò~îC γÞUq´öÒÑé-Üoðu°r’wÿäBÛŒð=¥>ñ-…O])D”w+u.˜ÄňÂç¯OIÆ«\ÃzÌv–%å¯yjéþRølô9¼| (^£Ô¥"&ö­,NOUöqaOãc½“ §ô”–¤óºEsäýGz§òQQU™V¯@ü:úXjô1Wô?;oéÖl>Ÿ]á7 Å+ÝŸ„ömzo//]Dsx6´âlrvt®k¶+0îx¯E-Oú^^½ûÙïð• Eý¦½<ëýú=ÜØcž²átd4¾‚ÛÂÇÿwïe™ÿÿßÀ#¡¢™YM¥¦å 3󜃢œä$žE†æà)-0Ç[]¶ÌÜÖÊZkÝ>në–™Í5kÍÌLݖʵAÜ¢ÃÇü”Åïõ¾î× ¢µŸý|ÿùáãéóžûxÝ×}îë¾fîé?6Ϳ߻:æbÓ_"pv Ⱦg›ƒN®ï#jÚˆ¨põ8,æ€þˆzÒ¯®½7/ÜxBùê‘ £O5#[kÑGÏ=Ö<|Rîžô¦—F©q&²_ï¶Aê<^õú-ýÎíR`žw½kì–Îé'áFáàë/ÉBº¦§Cˆq;¦ýè{GûÞ(Wzœ¹aµ>s³2_›œîOž¯½½­(ÖÞãÁõ¯¨þó§/NµÓUŠrÝ<|dÕr¹në$m ë+U‚Q¿þÙÉþà†$¾BêõT33‚Y\%‰«êåǘ(*äm7’¾>Ú]oÞý‰IW¿t Ìx cH¤d•¬Mžµêµ£êeì‘•×Hª\Ëw°WJYïyDÞUºzbDM½©ò€ÑC8rƒ‘a¤»7ño 1Nh1… ³Hœ4^‹b}ƒÊ2*—¹:kÖÕÛï ôˆ)|"uPäË$-_ò+Uë`¿#QyÞX¬à…¬òŠ&³¼¨µò_AFïú6•wÔk›Æù*›½yg™‘wŒ|#y&OUg.•õ˜c|•L¬ªdzªü²µE~Ù*ùÅ=’ùe+s Ë yU%3ËDSÐZùˆã-Jnêù†ErŠzÿ«®ÎÁsÑ4‰\!¯™¨Ÿñzªr†,Þð½J¦úª½òÕ±Q ªcx¾×­kê ¿Wyd—ñª*}©Ê#µ—æ‘2•GdWÞëo÷ç‘ôÑ*4!X×0›L觇¶È /¹ZÄ·gáÌÕ ØTÙŠ ÝP­[·êhΦûkâ­Èßüñ!óÇ#Fþ0òFË|QÔœ/Œê:k«GÅ\ýŽ€|jDn½úg„×lÄbPdýKÒ×'YÑMÞ쌄þáî/Í»?Gsµ<è#w~"‰%y‹§ªXºŸ0ÉìTí¹·Y=9¢æ¬©’Ï\|í“¥­“Œ¼ …”ºuj•hš‹ÙëU²ÙÒ"Ùl‘d3f¸¿m²Å×6É÷·M&ùF‰|PýúdÏ7ÆJâQ«êê&ÍîK<ò®ôúÿ[êiµø Y†Ä£Vìûˆš«6 o8€#üUDB¯/QÕ·‘^ZTßù*½ÈÖÞõñ§—uþº[¥£â.3*îìæôRØ*½ü.é¥ÐWqo1Ò Ô¢@Ý‚S< æïL0¶™`n‘³à§æ{‹Q–V{ÔÙ׿Æsõõ9#™¨h ¯[¶ÊR眇õå‡|çq4³g¥àL>å±ÖÕçÓ\p®ÏÆ'ÜóÆ=ÏS« Ò¸òX×{7×]DCw:’Çl$3ɳ¢Ý}Qï\ßtG“{½÷µxÚT·E=$¯Q¡Áö™$½Ý_ã2ÞùºÜÖïĤ>ÝÔPùòº$I;OÄKçü'íÖF_;üýÈŠ¤¯UoÅÈ × \ +Þ²„¬“‡¿íùÎñi}o¬u>®[°û”>Éì9’ýÔaì½âœemfTÓwÇ׺zFÞ´û¦=gûôd›n‰3£:?DÎÅ{÷¾é­ú¤nŸ„íþ$øÕ±s';ßÿ^_¾±âÓHO¶Ùs_„ǽQÚr2$â/•ÒTžiö}û‡&Ýiš‚rék]ó¾“ô£üÆDTÕÉ]Û±RÆÕ5Ìih=”Óô»¨”œV¸ K½¿KûÑ×@ÌùJÝ‹ãžWÎîœåÝsì'¯uõ¼Ÿí©õžBdzNì>kBhV¯¶Ž0W|¹ÊkôÌlD])/ü•N¬FÝ*&ô™k3"<f=«fõjiÑW|òdÅ níÕÓ|5‹·ŽÃÝÛõäíz_éÉçÖšqS¿».¸Ö¤úã={B²=ÓL!ÖÆµiž4óê‡Õî>}²â emlÇzn•šÓdÝŽ=9vêYçÖöHßýY°ç£äÆÚXy‰¥2³±¢!Â3s‡7ï "|˜1¾T½§Î³|[­u«q»_ѽ+²2FŠTë.ÔÜú‹iªÝ…Ugn©µn6Vݤ¦à ×uy™yÕ÷@Ý]3üWŸ½B¾X(ChzD¾|amô¤ãõÓ‹M‘Z@ÌmÖgnÑãzà¶£›®{U—–»£þ¢tÊ«.êÀ[ôÙýt«\ed=Ü{x܇=Ö£zˆžµ í‹äÈžå‡t?"¤{›ŒBGëÒ3LO®ÑmÃÕiõoTòý,¤ü‡`´¢äy}ô;ôt”yØÁÌO…Z½fZdå(Ycù9¤+Ï›™ÄÌ](hqð i*©¾2 É=Y]»ú•\q뼨»Ïé»dEO—‘`<ø<ÍTþ; Ä“:š¼SÑÒ÷ÌÜåÞs¾]b<5°$ý™5ÈG¾¤_£?Y_gn÷<.•’sˆ*˜‡è¼^Ö¯8-+÷xYyd$_áãøá:Î!gêjlé8´6â£ÏªF¾þ¸KNô"â?ëv¯v—µ=²ÂªZ5ú›²XâïÏ*$ØQ•ÃqOõ¸´_jUóS=“º¦IM몥f4K‡yÐ]o´Á†s¦ï–ráqi }wÒ£^+,÷§/ë¿Q~ÒÕÛè­6^»º6âÏF§â-ÓHÕžt¥Êr÷—Ø£c¿”8ì u{$ï¯5=*§æî Û^gÇųôÑ,ßÚ¹^:ÑÞÛäÞVu«·.Õ{—àÊIªfjˆJ*éF{6äùPQkšâ}ìÄÅ&¹ ª‘nÄ›§Ç£ãŒF{…jà™*þX¬„:!ë\ýYщjÌ¢çoã›tù>áHÕªpF¯Þ¥‡÷L¼X±ÇdÌÃ]‡r*JnÏ«rÙ›P4gó¨¹õƒÔ¾š‘v ±¸®–´tò²\ú÷åÛ%FÁLu“åªù¯Ý¨•#—ã¾â_²Âƒ»T GþÉ1UŒ¬’o­ëz§ UòT™å`•êŸÏªÑS'=³Ü3rõ¯X§x>ÖTQtÀ¢ ®R pÓLUGÖæ˜\]ϯ9s"+Ÿ’ñ-“Œ~rŸõ|sûÌòÝ?ÇÁ­W7‰%UPèCªÇ•?«2nÀ¼k#W¹K½ý»b·y²·î †}šë®µ‹ÍÜÜ 3Þ.—g»JÐF™‚˜ÙžÆªIŠ „©ÿ£úU†T¶…›QEÇØC¨ÊžFï6d÷µCVª¡OX%æ@á^¬´KkÕ¿ý£‘LT|ÖÛŒûM÷.}–é|…³Pž„_T¡hZ%EE}—‹ªMß°!Ý›óÍMSÕ{¶%«f˜ ¿ÅnVTgF×£%1uÂMÓ¦Ö?ü½zFï>äY~jmÖþìWLh³­µîõÚâ~”òÔº‰?WϪc¤º‡Uœë±vj³ÏQñï0h׎Wϯ¸Ð¤ª ,l8Qøíg¡žïcjêŸ0ÆOÏ×Ò¼ëCääPãÔGa5×}¿ëªÑˆàû#«ž’[|Ô’37†Ì6Íï™áýÝÑ‹M1ç§É—¦FVɘ)õÿ ž©Úñˆ{cLÍåêÅÊÈÊ{ƒY/.öÕ‹ÆoµQ/"Ò*Qçtªøübß‹k“Ÿ Nœœ!uâÎÆæ:ÑÝOwW?0F…¼³¯j¬üç…¦¦Œú‘ò0=¿^ø‰ú`U;V?0BÖÅUŒ¬| ( 6•ü¸6ùÐd\\ÿµõÄ¢š¹ÕÀžÈ*é‹Á5ÕÝ륖ֻJ3¥³~ŸÉs¯IO1{&™õå›qý«šjCÕEÎ6¹¢ä.¯ÃõŒú³\C,_­ÒÇÖ9ž#+_¸SÕåG‘•Òz¾Øäº ·rcåáÓ×úzòzOŒ~¯É³Ä¤g˜=“ÍõW].p×iÃ3KÝš[w¸òô2³ç³ž¥nõÆGxbQÌÕé#ÔgG”çž(ùì4é÷Ey–ªéI&Ïd51. û õ¤©-’wàhÃqÔ¥.³gæúúßÊWrfîhøÆ“¼£a#Ûð@EÝ“úòõû%Ézf›W©R‡“ïÖÇE¨ç_r«šÐªq>¥°ZòT;«j×ËMò¸‡®]~hŠóYû%ò#Æ"ò%[EVÊWG§ãF0²ò*ù ¿wË—?4åÔ7ɹ4yvUã(5r”'ãÕQžEy\Ú ·MPY$k‹§Ö³Be’Ö˯ÿ '¬ÖTNØWßçGcŒWv† éwF59ÍMˆ·ÎF[}ÕþŠºßpvžƒŸ†¤ë!ž¯cxç|ƒûˆ¸hyð8«yL˜'ÊßÈ÷Ô®-3é+X&£@V \×û äÎÕ,<\×øJã/úþ´û§àéžFãY3ŠÁg¤ö²²áï¾ñi“ÓõÌžQz|Ïo?kÚÔM=Q¹V¯ÝÑ[¢,Oêí_çtÀ:¾gñé+G2Ck*Ç…{S}©i÷—fÏú„A»?3…L5yöáž78h¿Çê]×AÅÜÝœˆ¬’Ö³¯7•KŽ©@¸××Ù¶{w)d¥êi[lÂmjœ>?((ùÜü ¦;T†kÄÍõœ÷^D;nn<»cjäç³<ûCÆ™ô;«UÏ€»Œ ñ?ï1_ÃN–ŸKkµŠþ?65¼ŠMãL còzê剆çØî³!4(#Ö¯EŽ®õ${#«¤Á%ÝS8Ù§õ ®{L¨4v7˜=éiƒvb ™hZËÆFV­Wu´ÿ„Ëä„gµ8áÕ —™ôIÆ ŸÆ ¿ì ì÷ºõ´wõ­ê„¥<Çé¾2Íô”:Ûœm–×ÓÝ9ï#Õ@ xÒ»«Ÿy:­õ¾úáÄ_À9„ÜØðJµï¼{è×רÞjµQ^óìÕwÉÓ]}»Ü EVm6:«ªn‘¾§oÊäÚ±ªËûÜlŒÄ[)Õ¥§vŠpk+IÚ„3›:)Ùz¼²ºB•gfwïU{*š;NdÉÕfyȰSõ÷N@J¢ß» ) ¿>³®)¹®ê¤ûe}ùéÚñêÑu9x»šT㺯hbéìNÆêËYÑu5`jäî/‚cN†,5 ÿƹµ:­Émnr{oMÑOÆÉبo ÕºÃrGzó²c2ònGÅ9/°×àK)1JÆþ¨ú“2&4¬CΖn»diÚÉW±¥®“ßÓ³M»Ï{²ê"+÷ù‹¯`÷5,¡Yd9³.²â9,›¢'$DXâ8[ÿ+ŽÑK0!FÉu½ FHZaÈYãÌÝ* Ûªý‘Û«­ÈÝâÜ.÷.ÓÜ‘ˆBF¢Pô…m&Öˆ3bïïz…н &¹ÅQRÇqÛ4óxÌÉ‘3O9_oŽFÝz¼)z£îSŽÏžÒ'šB® ˆÊ÷$¿o;*o¾Û•0*gITÊ#áêj½ÃÑ]ÌYU<ÿt÷Ò»H‹¹¶Ý!Ì’ä÷»S˜ðt9ÜAfÊz›aÞ%KÕX¤ïæ±NHç‹=h?íçÉÚsDîú·ÖZ·ë ©‘•©óFk[žÈÍÜ®¯Rñ÷ð6Õ¹àIÞäÉÚhôæëË·ËÃŽ»‚¾.¨äÉZYÕY†Ø¬'¯ÑGKhCbM’#V¹¦6-25¹Wy¿8$}‘ë÷DîüzjÕùéúìèÈ*IýrçT-Ýv«¼Õ:S§EV½Žô®~pJÚðÕj-÷I™Vçþd”ßëîíú’ûbš†ÿÃ3³ÒY$=A¨;Vk¹î.Ç %j&Ùñ=jdz¦‡¯:¯OÇÁãƒÕÁ{ÇN9dtFV <öÁÍÇîŒéñ#—W:~ƒÆôV¹a–g úÌ5!ÓÍÒžÞ.OHL!“$ÕFV¾%!ÙW€äXQùòa¤ŒmSôΨ£>Àž ôI¡F©ØÞºãHëú…!ëz=.å¦)è­†ç%6cåSxÐnOòšúߪ‡P«š\·£Õ)ƒF¬ÛC¢ ƒ8c¯ûü{Q­SО´YÖWÀeÖUnxKQ9sýü¨¸ oñû?`Û=ªDž%¿F1;²²NuÇm÷üf±º;¥n¹7¡ØÇò߬‘*yº<š»×2ÜsÌóCÈlsužêyÏ8y~òÀ§2ÏßÑùòȬgmA -º#ÎO¦§ÈÞ2;F¨3­A“L·¶áOzòFiÞ'«ÒFá ¹ö|\ñiPˆ3¢Ùuf˜Œa‘/”‡q¯. 2Ž£dFšä]=Ñ‘µñ‘ªÕ㢤¥t^›¾Õ°ý•(Hôe™¤õ “üž¨™ÏcºNÖ­Õh²,¹KúTŒ;¸~°òv)TnȦ¿ë[®z­þ¬´‹ôé&õÓ†âXÕrš¾6ùóÉû¬Ÿ£‰|ypZv­uÇóRˆýሴwxfî­Øí±îªµ¾þæ{¬ûk­‡dª¶jû(bN¾©îŽ\Ô—=¾wÕaÏWrS`<º‹[ÙTñC°G­½ð㊚Nuûî•nçŠ3Ô M®Ç÷¦Åy£ß¾Ø4kN[ø…ç«ú0¹§÷·Ì1çåc£ ÃËÕ¥:¦‰÷…®.úôˆö?! œ«Økö·³dŒ7Ö>î•o&áÊPÝ9 ïs{Ë=êYfɆÓúyÞ5ÊÙ(iR«›ÝZÕ!¢Jªw¥M6ëlãóÊ‘œqmšJ#qç±ZzîEÛvV¯£J4ŸªÎîÈÊ×UúTß?û£êƒÝ¼ïq®µîýP]äCg”Ž.øL"Õõ3‘êjŽT“G­}¥HýË‹MÓ°æTÏW Ï!^Ð$VIÉÕ}rL RÐûCl2ž'ú*íÍ—ÈNUÇÔ4|®'#´«j­•§T0×Hh=ÉÕ(ž¯àÊÿM€+àŽðT¬9[RAµq%dïõ±Rñx> ™¡«çÄ!W§g{‡Õ²T¬L—ÊéþŸ˜¤³>LßgýP%é;$IoQIúØß$IoÁíJÒ[edWƒ$iIÜ2u™“ÙÑæÉ_r2Foç‚:™8™Øý›fI’öüOäƒ2z á ¿r¬~×zyy­õt¼Dçro­õÜ¢óô/ A‹è<-׿VEgðlÏW‘þ$ï-:Ó„š§õC—ìB—DPÿ»T¥_•”¾¿ uç‘Ô3BŸÑÓ¼«A{§|úè FyT¿ùÆ‹M¬Ë×Z/Tœ‹Fë#Z|W_¯i¯’þ=‹c®§dWœ$CáÕx\ù!æ#µÖF£–çPH¯!výòdö¸ëän¿j•Ü__X˜æA«™c ¿sc…:i¹»Uw]‡›XO–—[Ëw¬^éß ò 5u\O>ªŠoÕ@úo+öRcŒõå‡P]wPƒícŽÈ.­‡të)=ë´Úý)y"a­óªáaiC[O ·ž^8Ǩ:Pk=nZ…ÉõˆÇ핯3dyuk7Dž(Ï“º£öœ|ÃzÚ³¯âüî,ìxÖ©Ef=ùÐðä:Ç(=ëƒ}I8n·ºgnÅéœR㻹óÈJõ[ Ö:]ÂåÅmA})°Œ4Ýeú6z¬‡±{ùFn=´:ùðûÞö{ðÉ&Ñ‰Øøý³úòSòå$ìËX¡‘ì¹àùê;÷iô}›œëw¶C#q ÚE kÎÇ?¬3²ò9Õ_*î{áÚ÷¤%zPöô©ç+„[ŽˆHÂÕxß[ÿ…üÚ–µná_š’ß¾\άa‡J3éO ™ÕÑ\q¡é5±+¢¢ÁÔtXÁ ÷·9ÓU3ñ’?í?ûûO·7vr…¿ÿ‹ý?U!ÍëD‘ë.IoQž·ô±¦Ñ£F e- ]aiÞYÿДÓäŒðfa"ÛŠÿ§ç¨Mqzè©ò´ŽæÑC°…¬; §&-1››îœQÐÑìírìbSÎ4½Ëœéù«m'3åÐî05huEpúïd¡÷»¿£Æõ¦»½ ÿÐ4£åú|™wÒe©6:Á>v߈ڸi¨÷¯Ø"Ûûü?µêä,÷'þ>ïuÃ/65œÐÔø¬ª#žº®*Ü$IÈÿ滜§¶¡8Ùnf¸FqØ|m»m¼­ô­z¬ÊSÙ!3&~p±©¶Ýž€UpMšw S«v' þ¨=eîà‹W÷ܧΣ´o‘¸•Ò‰ÆË‘žóžúĨòáõéÝ\· qñåS :7÷9…Ûδ7§y•(l@½šî=r 'ÛpÔ{> ÷ò5Þ/EÛU Ó¼Ïa½é9 ¿ÂuößÕq´e^GuiŦ9hóvI #R"›îŒÇï2Ù+²AÓð‘3õÎê°RRâ:–ŇcIš,‰=*!“FD°h2 YÏùŠå¡‘•ˆæÿÖƒ|Ãr~ˆwß\ùªAV£>ê‘Í3:š‡ªÖ{<2¡uÝ%ovlŒ0¿©¥IxFmˆ¬ªÐŒ'âñëÆŽvý¹ƒÙÕ)Í{øäÒ#’S¿a¬ÌCÂèËtáj?ü‚«wÃNÔ¿*lÁºž!=½›NÊøsÜ6Y¶ˆÈuò,ç©I¹j¿W§yŸTWQæÉ,ß÷õ®Fš«!Æ—;ïn2Æ è£ëÙUM®‘žŸô»›š¼C°˜“9Õ?„¢Åÿ„YO“g›Ëš\O˜½×Èâ*~ˆ¸¯.Û.!jšîþëSsæÉéÖ¶«ctú_‰ñVÓÅêjäãÿÚvs¸ÜûÍÕ›ô;Ëð1§êü4×{žïô…M‹ÌMwycÑïó'~Pƒ)λO7¼XÝt¤¡\ïR^ÈkéÎJ|ð®ÂZµídÒ¸ˆ’e-¯ý„äC™¬:’ƒ|ø7>Ü‹„<òúmR,DW#í^—YSÝÿÒïÜaŒÑ eIv´>ÍTu²vœIåªÎ˜ç9®O0WÀm+ɽG(?ðçÛ4ï×!’>3Òœ|wªËÙåw0BØáuiFtY&&›p¼«+ÎE<µ=AéµíÖ°SÃûÇ~P#‡¤ìW5ýôÞú-nfÓ½ë>ù®Iå-M†[iÁZ¹7Ô,4‚Aõ¡æ*p hg ²ÉaÕj.û@#©k 5ï;Á°€Xðô7˜ƒúk€%#35Í‚ëÝ%ÌœâÀ- ÔG‡™ƒïº†™¿§ÀA° < s® 3gƒ¡ +¸Ð ëpÍuaæÎ |Ö=Ìü>xl½5Ëh‹f(Ñ2çŅÁ­CÃÌùà}pË]aæLð(8 Éá‘aæ›F…™ÓÀ£ äÆ>Àipë씓ôqaæÐ˜ÁùØ0óG ž€óÏ‚•`ȃA§¤0s(ðN 3;ÁP&Y­iZ¼5ÉšiÕ¶—`_àòûÒ0sOVjL å :à³°hŽ0s4KiÓ,å ‘˜œÍt `(Èåà™€iKM+s…™ß à¡ËðÖÿ¾ý=¼¨%±‹Û¦l‰AòÒ–4bÞx8 ¬ýøöW¸ ñ j@0/3·»ûã@7Ú‡¥ÕçAÀ ªÁðícs«ÏÛAJª6Õš¡e¥LJI’Ç[S¬ñZ|bº5.SËLMÉH‹M·¦djÖÉYpbl’6Íšžª¥d%%i ©éɱ™™Øb\bJlúTì¢yVlZjFfzjÚ«69+É/%5Ū¥[§$¦`aFbÖH³b:Ý?%=1Óª¦4cû‘ÃkI‰™’÷ŠŠmm¤%©¨Æf ‰IV-`³Ä”ÉY¶—”šaÕR±gm\lÜ$„?ÎÔ>Y)‰™£±j¦5=g2BeníÛj” ¿F¾çAùCaæ­àSPø0òh·q ê€ë¤ý aæ G‘¶1ÌükõäG ¶ƒ÷À ÇÂÌàAPæüñZ·-“s]ޢŖ\Ç—„ª ¨¸­Xkãø sE*êJsq¹l‹ól¶|#wqQ‰»ÄRl+ç*¼Òöj³"§¥Ø^:'í*Ì- —Ögwä·±›ØøìØ”8kësÈ/¸xyy6§Ór…“ŠÅœ’2• 9Š\¸òþcý¢€d£@JMo‘œ³R·'5_ à.((Ê+’å s‹Ý¶€Ë1!6ÍÊä&O·sKm»ÅY´ÔwñÚŒÿt›WÚb/°¨R1ÁšnYTä*D´d$NSûq– ÕúÏÄîvä\ÒÌB›%5=ÞÚòT(ÒÕÖþÓÀÆEÌÌê$š·Ïh±mŠ[J‚l΄WH?²}iž½¬ù¦eÒ¬±¿`'Y¥þ,iQ×Ýah-Ã|ÀN‹Jïq¡)p—æIr…øo>íæ¢$à´›¯®Ä~FjVzœõÒHÄ®ZÄÀñÔö¾ò1>1¹ÅÆ­ ×ËÆ_Vé‚Rû¢RK> .‹kI™-àt,;‹‹æ:rm§ŸD)ý‡F1öÕj;‹Íá°;.süØÒ6ÊÍB”b¹Å[nþË\›­ôÒbÓÿ—[*Åe¼56))5.6qc)³;T hEŒÙEóŠ$„Íeÿ·o™ÊšËww@Rñ_kjz`Ù¡òޝL‘Fˆd¢+®à»€¾UŒòZŠÕË,B£71y´?þÛ\Çw€å“ħ\]—ÅVš/‘ò¨¨¹½´nþÂÜÒ¼¢Òy–Ä©Í×çg·¿lÒ Œ_4lcS$W,´9d.°R·¸ó\n‡íÒzÅ÷g-Í/ (@ªr—8~6÷ˆ“MJÌÌL²r†6äÚ¾Šë,**Í·/jcÿÉéST1å°IÖféœæ²Ør%hW>=-Î^R’‹èPU=’Ç"%XäRùég¶Ïpá(NË­)Ö)·¶ªƒpÚ¶ÅEN—\’ËÖ£Œß¢’²bÔ®â%{™­´:¬ÿ–u/·þ\ø£Rê"‹4Aqå TYSâv¶j­øÃ aÎBá\Zj4Q&_  ¢ÇºW8¾µuJ±äIž.-–’A%ÉRïºp<•µëiIÇ(ߥ\AòÅJ%óªpYr $W;l’0úYæææ-p–åæÙúI ‘¼ýñ=¥Â¤ÑÆQ~]ÚÄq"åHzÆYÉV­’2n8’.Ù¼å•1¶òed·SÕE¾rõgZP¾ÍZî’WºÔ]2×v¹’×øËö5»TÙ°Iƒ¡u3Ô–«•osæ9ŠÊ\-‹rÿö²v®Ñ\õ·\¥YVŒDüsá7šŸ9¾-xJ¼Ž?·½º¨êþ½}$³Ù"ÆØü”„™b÷-ºBñ\Ÿææ¸·¨¦¸ã1ã *)ñÀ¨í(% P˜¨ÒLZ‹"-`ÿW*Ÿ¶ñ­Éù•öwØÊl¬d}™kÝÖ¯î¹æ©ŠÛ]ª âé·Ýu…¢ýg·/Ãa鿵}I‘Ó)–òGÜG›`—¶“” yv4Kü7[ šgªh ÜCóý¦Šc#Í* ¹p-ו‹SdWéÌ_?iãÐV·9Zßh")¥·(}ýBìxÑ 9¨ÇËoþè/ËÕ½Eóåš”qE¥y˜ã”ò%š–PlÏUÕ‡jÅ4§ªÖóËl©ÃŒvZ«…OÛ[å-Ä¡eîu£¡Åª–Û\ s›¹Ç(A$¬N[±d™<„ÏßìT1«e,q"FøºH,¾[wÎŽS×É:ß]R²$ G¡y 2˜[zÍ‹¤jÏ·•J›M>/Ê•ÙøÜbU¸ì.µ u×/eá•Ó_à/³}«0¨žŒÖ1f¶µÉ.Ü䤥ªî *GÑ\7ê1ü§ö¢úLü{Êõ¯é»K¹â´ G[ËaüõAa.’lÛÁi}ž P³%rëƒ,¹4þ› Jæ”3þÿÍí3%Òã„æ“Qÿøï¢Xhi¹ª&c£®i‘Ó·ÛÌÖ—û’°r[ÇocûVÉøŠ;¸4½aíy(\¾;F¹Z—¬„£ÈüVGRW#×âD|æ:4#>U޾|d »[å>¤áy6VŽØ›S%½ø–q¡Å¶:7µƒË¦~M“Ô×FHÕ½4¹} ñ åŠ×?.ðÒsÓ±YÉÖxÿÍv«ño„O%m£'ó2ñ'Á–£¦döIÍÊì+õ?&¦ÈŒ+†í ã8iéÖ l£2+m/“ì‹0]qûV×§9kµÌ§—ûk}=/·Ä„ÕñYÞÞܼ¼bøâØ\šg3ê”Ö ìgþâZÿfþlkû+¶•/)£.“YøÛJ–-ŽŸË{”<_ÿŠTÆÌãEªc®u‚—Î .2>Ä_î%†Å#ÌÍ,¨ñÕ‰´N%Ûç¶îss:±šÛ…¹e¾ð^áúʱZtÌ\Ò™d¹ô¾N´ÉÐVSƒÆ“¦’Vóµñ÷Hkî¹,ý5V*T—”}jEÕpæŠéôÒ„Œp¹,Å깯+pØK,Ò¦UÉ1å“ß³=Ì|œ¾éºŸ ˜îi<×í) z¼fúf˜ùÈ«aæí`ó«Æg¡úÕ_FȈKÍŒ› KÍœ`<íRO_3b³­ZFÖ¸äÄLãqV›¼ÒÒQœù{ñ‰­±Õ@~R«ø>4÷íh-;všÏñ1³]æi^à#;>Åkž‘b¢¥&É#º´$yŽæ{T¨ßùå]úœO=VÔ´W†™…ÍÀÍé@ž/|.²%v Y?32¥ ¶íaæ(p×@ï4ïÏwüg½aæÝ`Z}˜Ù7ýß–ù¾iGCKÒÎ]J5æ7¡ÿ 3wÿñíïexožûÏ÷ˆìÓW~dÆŽ“.Z-+96cRåKf¡peÒ»fÜÍ©ö¦½¤LîéäæGõÒ•©®C›tð«µÂýÛã–ËÉ¾èØ¹N{ªj‡Ý‚îB‘®áè© ™³Ó3g'$ÅŽÏÐú£Áë.v塈)ÊgÓúËM|Š…2—ÖaîbéÙpjýÝ¥E¾É¹Eólª“´ÍòqJ®CîrGøÂlQ·TFÛ@ÝÊÓ=§¥y/áZÿâ"—«Øv…þ/ö¸O¢Ô^Œ;WuãØßaËCÝvÇ`œëðA¥Å¶Å.§¬ ]„õþ%¹y6{1"ÆîT–3W…¶Å³Ýe¸uU7”?¾Ö'ÄŸ;?ßÍhâÀTKRâ¸t”#–þF—ŒzâXªú‰,Ø“¯ VÝœ‡ã“ÚÝ-w®3MþrÔŸ–™œ†òK“7qW™ÍÙ ú2È2ß:¿‹0¼vK„1¯-Ö°½“Ù|øj³¹®³aAæ•w4›7wlžHcç¶ç·ÉÖƒã¼Åc|‰0D5[Ãv–Èæu;wjž–ù›±¼†ûÞm6wn¹ïí›×õß@䓼Î%Î lŽR[ñ@»Óˆ$„ØÌؤc>*{»Å^œ/¹” òŒnô|*þ©’}Ï®˜õù¶…KÝÅÅšö§4³YØ.m²Ù\¢Hfªÿ)ß6×=ožêѲÛ8q 4e…>}GXŠJž`_+¤WÙMášo{—½ M$VãÙ©Ãá.s…k›í²›Æ¢“ké•?"\s)s—¸çäo´¥WÌ w¸VTª:–/]`Üö)*Í+`))É-ë;B³XM[¶yªÛß·¶oGjA±ì'5mvZlül-996mvrlÎlT̉ɳ3'ÈcLÔµ\ðY[ºÈl^VƒÇÀÓ`ˆ¾"£©Å§y¶ Ìm”³%Fà¤QÆ2Áå4ž}–8®Ì²\c~ bç-¦œ[f<$dlï´#-J\µaÙ<ßv¹Æv%ö…Æþ\¾ãÝ1TÌ3¯¸ Øí,Ôsù.£#37¯¬Hí§d±þÅFÀœ /<ذ±]!{Î]%†‹r‡QÇ›k¬_tǰ¡ZÑùïNùo(þCäâ~0)m0L²ÔÂÕAë ŸSÓÇ'¦ø?Æ[ÇeŸ;Í´¬LcËT5i|\jJ¶±Ö4„b“c3І‡¤Iñ©É±‰)2­–'«g§³QN¢)•’”¡fâ2§&eÏ–mgcW 2cvjZfbjJ†¯Ìœ&ÿËQc€KBªfú罄ü¶Ãl¹Ã˜d æ'€ÍugÁ…/]º®àÀ|fJlzJ[…Vcül4 ¦U ÅOM‰MNŒ›=Å;Ihs¡Èqå÷Wy^[ÝLÍždMO±&ù"'n‚5nÒl ÅJž†jÛ‰ºÝ© t;q£ã° ”»é%xçe³ù8΀ðøï2›Ûƒ(p @51GKŠMŸ;ÞªÉ‹Óæ­‡ŒMϰfj‰Zqq>(và‹AŽÆ£@™’ÛVhÈÁ?ó.ÿµ îÙzA„üòs›·üëÐâ“éßÛøÿÉ_Ph˜¹ýUš¥]Ýæ?=ÜN øŒ9Aj\±ïï*-\­×^ký'_¸ ÑLØC¨&ï Ô‚¹äZÌ“¿ïš¾kÒʵòïšnÖ´ò«ÔçæZy7íVív„®»öc“±VíNM¶0¾SªF7‡©£tTgÑIë¬Ec­®8^{„ì*„¢–u׺q*²ÕášVóš§|¾î’³ÓÔYËš&µFûVûºTÏ /2-?r?þÞØL»<Í, Ý¢ÆÃñÜÖR-÷²F 5‡RÅ'öiSÁ‘1'–b[Ë¢¢A…Ë?¤Ëf[ ¥ã6¹¿>b hu09/D–þ-+*Ã^±ê¶1´3 ‡R†{Ñ–ýª(Î]h—ñ½|¶,·´þ+ž"Î[€hY˜[T¬žb$øž ú©þ]¹2¾xSKdH‚Jlê¨^k›Sõ’¨AQ‰ù2dF èr 9,Äâ ‘NpsƾáÁN²-Ä’ÁjßÎ%¥y…{© lå‚;,…¹Å®€2Å¥%!rÚÜ]šÃî²çÙ‹-ùòLÂS–ëBPh䶸ŒÄæGgï æK!¶ÅhzÉ~}3$½Úœ-†QX¹Ž¥@n!qŒÜR{þ¥[äÎtÛ]F&³—2ùÏ—Œ'`©-·Dö©q67³¨DeQ½SZªÆÚNrjÉ8o¹åõ=72žQ”Ú\‹ìŽZ F¹‚ê‚—¢œ”Žj-uî|y–¯ΕØ]6#®åY–¯éDDÉ1cóe¸_‘¿´Íp”£0Ô';ç.õu¬÷vvÙ¸4¿ù«&ËpôBÜçã]d»K±&"CgŒè“ƒªŒ&Ý e6›*üçÃ_Œ‚­ù¼6‘Þ·|É-÷S€äkìNWóáí‡]†¸ì–B,8Ù€€£¢™çh]}.j±$©ÖfIA‚Q™—4aÊðçðR5$(¯Ø–+}…¬r¬)‰9ªDä3L5œ a28m%¹e…v‘Ø|šª i½ S”ô  '¾È¹@ ŽÊmh¦ÊÊü"w ‡MA 7Ï7K™Í§—'‘Ša“þ]²…Ý‘ë‹í.m’&c´sËeyúe)²ç¹Š§SF}Peøб¸Ì·Ë()ÙGs#e S•$KJæÚ‹‘ùŒJHÆ»*8ÃÛá_®©1«F²7+æú:QÕ½g~ópóXµ\zÑr}]am¬¥i0ëa¤$\÷ÜvõUná#';BJ’ÐÊZ.ßµØaQsƒÅ& žÜVÇc¡x‰ŠW£œVEˆôÛ¤y#E•ôYÔ¸ãü€Ç½šv¹Žbw£Õ¤Æ´¢ Ìõvÿ…·#µj¾ÖœÇ©Äâýè[îËåm*Ïr{Mó#ÎE|Ï+õUG¶æö˜¯(ÈG:*Ãü¼æ¼ë+Þ×"ùW^®dæÀurçâ¨*¡vJd¢1¬¨¹ò¾Ìzüz×a˜¥¾àx^×¥[9 Ý®|cœ³? ;|}þž_§tÞ·ñ!þp„9 äƒûÀ:ð,x¼΂‹ ê½sùñó-ðr@)X ÛÀkàmp4€öG"Ì[°Ýõp?0d€9`!¨{±ü×ðŸÀp | ÌïG˜½X&áìé»ÀDPîëÀ&ð8þ.‚G#Ì}ÀPp7ÈÇ€&zøxçëÊüwhÙ‡ÙÖ;¯åçÿ ¾p'ÜÍ0.ççdÒú|}dbÙ40ðœ‹a'÷ÑV\µ>¶ð Ö}¼Å}üšáø-¯ÍŸ¾udúCÆ•o ˜þoÆ•ì#ÖÇo¦¶âð?‰[ß¶éãJǹÜ~¼W¸f¾Ïêyš–WæÖ⿢һƻz4bâ6^ÍJ¶•¨‡H#,½P-'36›ÿ³ê"/qåÎU[ œòQ¯4ºžÕ”ôzJ_Þ€ÚýÖ¤„ ùsùåˆ(ö»ŒOÉRå²ñCKKŠÍ”aZRâ8é\÷=sÚrÒ/’ë*ÔFŒÔÒå;•òPBý_ ÃÒXŸîåɵÑ>×¥ɦfúZ%¨({9õ¼V½êV™ß€á[š§Fzqêk\ ÏÌäi·<Î/F°¤÷Ÿ‹ŒÖ¨%3)C5’|³Õh~£w%`®Ü£øZ$vu¦!–ŒõR3,±ã}Ï›çËLß0ßBÿ×KŒ©ï¹¢lSˆ£©Ràë¬@ËU·uëß7‘FK„Æñh­}û>½œÆø%µe/gßpc&<¢—zšÕ2’òäv›Û/V[©–p Z«å1Ñâ[ \OuÆ´\ËøVDËý0} Té-Œ2Õ®4îK›Q.ŸÓ6O5Õ9¶¼ø عº .ÅÝø¤4Ù2õÓf ×—æ¥Û¨fô>b«–!åÝ£Š»–K¸'´ó‹åûô•»‹ï#,ƒ÷t[ñb nl¶€jô/?O[.O‚Õ(³€UÊ ó->–ºKF`½^·¹Ã/Íü^½\Fu»•[âK@Íqlt|pMit˜&pìwöÜü€Øi3ne#ꌫ¢ö%©WmœÇ/å±ñ:Ð^P ·©ÆW”¤9],¿€†®quév²Ì¨(› ·ö÷­Þ\<̳•ªv9ò„º¥@ ×ü¹îV'bN&£­e/j@ŸïËú2ç%ÝzÖLy ¨†NbÒšcSßpÃ¥• ©ús²/_æW쥶æuÕ Ú¸ö| ¡¬l Áéß<®ç’ýI¯Ü•ö®ÊîâüNû•}55Ý?fÀ]ióäáfÿ€¥1bü¥„š¡Ê ùB‰qOhÜ@ްh£ä.Ó—~Æh›ÿ»3FñÔÏBÍØÆ¢5®¶©o°ªóàuu9Ô C_³ôAªñíÅØ‰³¯ÆÄˆX.•޵bÍ2½—s¦<­›‹:ÂWÜ¡0“B î0ÅÌéå¼Uò¥úd¤ˆb»}»Ìu²—«O,}N2߆,Œ¨Ï[Ò9Œ·Þì%—Øñe,UåpÓÍŽàû®ñÑ´%)1e’5Ý2.küM7ݤÉwÑ‹JÝ8KY_E©oS‹Q@ ±kFÜ¢B9eI|êë­oŽ9ÈÆV\0yT<`È€Á1ýµÖ$-q|Jjºµ¹2Ÿ'_÷ÕÔÿýKìùnéGâÐFû~¨¤ÿwžsˆ6Zþï?Æÿó%Yqý‡$Yl½& ƒÑ†Ö\ÇU0 kàÿÀåØbðeÖÇmt®3¯¨¨íÔ"céÒt^îÀÍ+¡8Ð’˜‘Ú?fÐÐ!CbÎÆüqÖ6–Äe(_º ùó¥ËR3 ƒmmÙ¼ôÎ+.mkÏSdàÀìLYâ¿"™ ÃZ®)3dvÿ¶æËçÄtÜ/ÝÑÆB9ø84ÐÖ.ã2·Ó`#òÚšß|&ƒ®¸4æŠKÛÚ³ÿ¶ËZßúNpèe–a/ý³2ÚZ˜•Ñ?6#.1±Í Ç%ß1ô®¶–Ä¥]nAÆe÷¦b,é’äæ‹K•³RãRã­ãÇc#‡jÆXMmÐ?fDÌðÖQ¥‘–ËÕ¼K×iqm‘P.¹Øø ÷°6ãSíg66˜ž-Ç‹ik-ßÅ4xP›;á©CÊÛˆ”ÿ?þÕÔ5^¸¨ŠßÙªcl¶T¶Å.-`^àôì¢Ò¢ gË“)±ƒá¯e?°EÏvA@ѸWÙ_RÜì¸Ì©iV™HÉJ¶¦'ÆÉdfb²š—š„{:5™œšbÍ”û2mÍȈ/ÐâfÇ&%‰ÒbÓ¬éj/±Æ¦±ññéXMíÍšdM› _UPÛÆfd¥[“åø˜/_HHŒ‹•ÁhþQlmÿ þ2Â<$€0ØÀ=`1xxÀzðØþeD‹ßÀ’Òž£¯"¡\æ›/#:‚«[¿nfø%¿©õïüù¯•o€Y«?9¦ÜsKƒP^­Ø_3î·å/˜áŒà<¹ÿŽ2âÌ·}&×±ƒÎ`÷'!<¿œ'û‹juüvܯ¹­—µkc^Öö_àþZ;ð/”˜ÚS»‚~!m…ñrü;ûü¥\.Î|çàûk} SÀtÈÏ ]aÙ/ÝÇåh}>a—¹¦Vó[ÿ·1ï?]ö¹~ëø½Ì´ïü.CØü÷¿]ö¹þåÒxxÀ´ïú^.Í\)OüÒ|èû»Ò~~i¾ó¥ã¶Ò׿³@‚éVå3Õ_õGú~³LÖ•tî«3ë )O¥ÜŽòrÃn ;ènp3è ä_òÖáÛ€¼ûKÊjž.ÎeP¹Œ_—Ñð#À(0Œ〠ÀNRONI ¤tͨ²A˜f€Y`Ž^éÇ(òmßù@:J#£ì¥¯H:Ñd@½ŒŠ_ –ySVyÕÍJ ¿Ë¿È‹ÄÖiƬ?äí=€¼³ê1 o­’UnOy{ϳ@^Pül<ä-›òb½@^À³K3~­ZÞ£ñ&¨{À^°È›‚Cà]pò3õÇ€ü4þ ï‰ùÔO¼Gí ß!> ä¥_ù©ì¯¼à<¸¾ò¶åŸ€$’`é¡@4…yõVG:hÐtÝAp°€›AOÐô·~`ƒ!`(F€Q`  ÆyÇw˜&yÿ·¼™Y^0”äÕCÙ L3€¼¡d˜ òA(óA1(òUWU-ò–yá½¼¿æ>PV€J°ÈËÙä(òæu@^Ì÷X6€à1° <6ƒ§Áð,Ø žÛÀó@^•ûW¤íòby_ßëAÆ{jÀ°ìûÁAp¼ ƒ#à(8ä… 'À) 犯y§ïàg¼¾û о߂óàø\?ÉüÁ@^â äEóá@Þ<ßDN tÝ@wÐÜ,àfÐôòî´Û@?0 ƒÁ0ÈûžF€Q`  Æy?T˜&‚$Ò@:ÈÙ L3À,0Ìùò’'PæƒbP Ê€¸ÀB°,ËÀ} ¬•`%XVƒ5`¨õ@ÞB·<6'Àfð4Øž[Ás`xl/€`'Ø^ê[ ì{Á>°‡€¼­ç08Ž‚cà88NAøœg€œçÀ | ¾çÁð=¸~Rñf"@G:hÐtÝAp°€›AOÐô·~`ƒ!`(F€Q`  Æx&€‰ ¤€42A6ÈÓÀ 0 ÌsA>(…!ò\P Ê€¸ÀB°,ËÀ} ¬•`%XVƒ5`¨õ`Ø›À`3xlÏ‚­à9° <¶ƒÀ°ì¯‚×Á› ì{Á>°‡À»à08Ž‚cà88NAøœg€œçÀ | ¾çÁð=¸~Rñf"@G:hÐtÝAp°€›AOÐô·~`ƒ!`(Fy]ú0ÈO÷ǃ0LI ¤t ²A˜f€Y`˜ òA(óA1(eÀ\`!X –‚eà>PV€J°¬«Á°Tƒ‡Àz°lMà °< ¶€gÁVð÷C?¶ƒÀ°ì¯‚×Á› ì{Á>°‡À»à08Ž‚cà88NAøœg€œçÀ | ¾çÁð=¸~ÒP & Ì D€Ž tÑ +躃à`7ƒž 7ènýÀ0 CÀP0 Œ£À0Œñ LAHi d‚l¦`˜æ‚|P Á|P JAp´“×ãâúƒÅ`)Xîå`¨+Á*°¬ë@5x¬ÀFðØž›ÁÓ` xlÏmày°¼v€`x¼Þ5`Ø öýà 8Þ‡ÁpÇÁ p | êÀ§à48¼à,8¾àkðm;y»4®?ø\?iôf"@G:hÐtÝAp°€›AOÐô·~`ƒ!`(F€Q`  Æx&€‰ ¤€42A6ÈÓÀ 0 ÌsA>(…`>(¥  8€ ,‹ÁR° ÜÊÁ P V‚U`5XÖjðX6€à1° <6ƒ§Áð,Ø žÛÀó`;xì;Á.ð*x¼ jÀ°ìûÁAp¼ ƒ#à(8ŽƒàøÔOÁipxÁYp|Á×à[p\߃‹à' ÁÀB„ƒÐDN tÝ@wÐÜ,àfÐô}Àm Á` †`Æ‚q $€ `"H) ¤ƒL rÀ40ÌsÀ\ @!˜ŠA)(à Áb°,÷r°T‚•`X Ö€u <Öƒ `#x lO€Íài°< ¶‚çÀ6ð<Ø^;ÀN° ¼ ^o‚°ìûÀ~pï‚Ãà8 Žãà8>uàSpœ^pœ_€Fð5øœÀ÷à"ø È 00P`Ò#,½ÌòΞ(Ð Dƒ® èz€€Ü z‚Þ ¸ ôÀ 0 CÁ00ŒcÀX0ă0LI ¤t ²A˜f€Y`˜ òA(óA1(eÀ\`!X –‚eà>PV€J°¬«Á°Tƒ‡Àz°lMà °< ¶€gÍòvd\° <¶ƒÀ°ì¯‚×Á› ì{Á>°‡À»à08Ž‚cà88NAøœg€œçÀ | ¾çÁð=¸~Ò± L ˜A8ˆAè¢AWÐ t=À Àn=AoÐÜú` †€¡`F1`,âA˜&‚$Ò@:ÈÙ L3À,0Ìù ‚ù ”‚2à.°,KÁ2p(+@%X VÕ` XªÁC`=Ø6‚ÇÀ&ðØ ž[À³`+xlσíà°ì»À«àuð&¨{À^°ìÁ!ð.8 Ž€£à8N€SàcP>§Á o©< Î/@#ø| ΃ à{pü$ªá¸þÀBYÆ”€ÐDN tÝ@wÐÜ,àfÐô}Àm Á` †`Æ‚q $€ `"H) ¤ƒL rÀ40ÌsÀ\ ?¶R Á|P äg’dÌ”¸ÀB°,ËÀ} ¬•`%XVƒ5`]¸Ñ¿' ÿ‹þ#ý<ý½‹~~~ƒ~“ÞGHÿƒ>CKŸ™üÝA'Òé­œÑÊ÷Óµô~ú}~›>DEMCK?… /½Ÿ~›~‡>LŸ¢ƒ-†ChÝŽ¥Ít{:œ¾ŠŽ¢¯¦;Ñéhº ݾ–îN_G÷ ¯§o o¤-ôÍtOºÝ›HßI¥ï¢‡Ó#èQôxzHϦçйô\:ÞJo£µ› ÑÁt;:”§¯¢#ètG:оšîDw¦»Ð]ékéîôutúzú&úfº'Ý›îC÷£ûÓèô :†¾ƒB§­t=žž@'Òt&EgÓSèz*=žNÏ gÒ³èÙô:—žKçÑù´. çÑ…t=Ÿ^@Ó%t)m§Ëè{hí¤]´›^H/¢ÓKè¥ô½ô2z9}}?]M?D¯§ÓG裾tw³á.tWúúz(=ŠÎ§mô|z}œþˆV®ðDÓ!´‰nG‡Òa´™nO‡ÓWÑtº#IGÑWÓèÎt4Ý…îJ_Cw£¯¥»Ó×Ñ=èëéèi }} Ý“žCçÒsé<:Ÿ¶Ñô<º.¢çÓ èbº„.¥ít}í ´‹vÓ éEôbz ½”¾—^F/§ï£ï§Ëéèt]IWÑ+ééU´‡^Mëôz-½Žþ]Mÿš~ˆ~˜^O?Bo ¥7Ò¿¡£Ko¢§Ÿ Ÿ¤7ÓOÑOÓ¿£·ÐÏÐÏÒ¿§·Ò Ÿ£ÿ‹ÞFÿ‘~žþ½þ3ýý"½ƒ~‰ÞI¿Lï¢_¡_¥_£_§ß ß¤ÿB×лé=ô[ô^ú¯ô>º–ÞO ÒoÓ‡èwèwé¿Ñ‡é÷è#ôûôQúúý!}œþˆ>AŸ¤Oѧ?¦ÿA×џПҟѧéÒgèÏi/]OŸ¥µ^†‚é:ŠŽ¦»Ñ=èžt?z=Š>C»n3ì¦Ò/o3=y°át:ƒÎ¤³èlz CO¥§ÑÓéôLz=›þ3ýý"½ƒ~‰ÞI¿Lï¢_¡_¥_£_§ß ß¤ÿBßs‡aí¤]´›^H—ÓÐ+è º’®¢WÒÒ«h½šÖé5ôZzý+ºšþ5ýý0½ž~„Þ@?Jo¤C?Fÿ–ÞD?N?A?Io¦Ÿ¢Ÿ¦Go¡Ÿ¡Ÿ¥Oo¥ÿ@?Gÿ½þ#ý<ý'z;ýgúúEzý½“~™ÞE¿B¿J¿F¿N¿A¿Iÿ…ÞC¿Eï¥ÿJï£kéýôú ý6}ˆ~‡~—þ}˜~>B¿O¥? ÑÒÇéèôIúýwZûÁPL‡Ð&:”îKƒg°L‡Ð&ºJ‡Ñfº=N_EGÐèŽt$L§Ð©tNgÒYt6=…žJO£§Ó3èÙô:—žKçÑù´.  é"z>½€nòÅc“á`:„6ÑíèP:Œ6Óíépú*:‚î@w¤#é(újºÝ™Ž¦»Ð]ékènôµtwú:º}=}}#m¡o¢o¦o¡{Ò½èÞô­tº/}};ÝîO Òƒèz0}=„¾“JßE£‡Ó#è‘ô(z4=†¾›KÇÒãè8:ž¶Ò ôxzHO¤'ÑIt2B§Òiôd:Π3é,:›žBçÐSéiôtz=“žE«]ø ¢ƒéÚD·£Cé0ÚL·§Ãé«èºÝ‘ޤ£è«éNtg:šîBw¥¯¡»Ñ×ÒÝéëèôõô ô´…¾‰¾™¾…îI÷¢{Ó·Ò}è¾ômôít?º?=€H¢cèÁôôúNz(}=ŒN GÒ£èÑôúnz,K£ãèxÚJ'Ðãé t"=‘žD'ÑÉt J§Ñ“ét:ƒÎ¤³é)t=•žFO§gÐ3éYôlzKÏ¥óè|ÚFÐóèBºˆžO/ ‹éº”¶Óeô=´ƒvÒ.ÚM/¤Ñ‹é%ôRú^z½œ¾¾Ÿ.§ WÐt%]E¯¤¤WÑz5­Ókèµô:úWt5ýkú!úaz=ý½~”ÞHÿ†~Œþ-½‰~‚~’~š~†~–þýý_ô6úyúOôvúÏô ô‹ôú%z'ý2½‹~…~~ƒ~“þ ]Cï¡ß¢ÿJï£kéýôú ý6}ˆ~‡~—þ}˜~>B¿O¥? ÑÒÇéèôIúýwúcútý ý)ý}šþ'}†þœöÒõôYº>Gÿ‹þ‚þ’n¤¿¢¿¦¿¡¿¥ÿ›>OG_ ÿ‡þžþ¾HÿHÿD7ÑÚ†ƒè`:„6Ñíè0ÚL·§ÃétG:’Ž¢¯¦;Ñéhº+} ݾ–îN_G÷ o o¤-ôMôÍô-tOºÝ›¾•îC÷¥o£o§ûÑýéô@zC¦ï ‡ÐwÒCé»èaôpz$=ŠM¡ÇÒ±ô8:ŽŽ§è‰ô$:‰N¦SèT:N§3èL:‹Î¦§Ð9ôTz=žAϤgѳé9t.=—Σói]@Ï£ é"z>½€.¦KèRÚN—Ñ÷ÐÚI»h7½^D/¦—ÐKé{éeôrú>ú~ºœ~€^AWЕt½’~^E{èÕ´N¯¡×Òëè_ÑÕô¯é‡è‡éõô#ôúQz#ýú1ú·ô&úqú úIz3ýý4ý;z ý ý,ý{z+ýú9ú¿èmôéçé?ÑÛé?Ó/Ð/Ò;è—èôËô.úúUú5úuú úMú/t ½›ÞC¿Eï¥ÿJï£kéýôú ý6}ˆ~‡~—þ}˜~>B¿O¥? ÑÒÇéèôIúýwúcútý ý)ý}šþ'}†þœöÒõôYº>Gÿ‹þ‚þ’n¤¿¢¿¦¿¡¿¥ÿ›>OG_ ÿ‡þžþ¾HÿHÿD7ÑêKPø ¢ƒéÚD·£Cé0ÚL·§Ãé«èºÝ‘ޤ£è«éNtg:šîBw¥¯¡»Ñ×ÒÝéëèôõô ô´…¾‰¾™¾…îI÷¢{Ó·Ò}è¾ômôít?º?=€H¢cèÁôôúNz(}=ŒN GÒ£èÑôúnz,K£ãèxÚJ'Ðãé t"=‘žD'ÑÉt J§Ñ“ét:ƒÎ¤³èlz CO¥§ÑÓéôLz=›žCçÒsé<:Ÿ¶Ñô<º.¢çÓ èbº„.¥ít}í ´‹vÓ éEôbz ½”¾—^F/§ï£ï§Ëéèÿ{çÅÑþñ==PŶ3Š é bD{£œ‚ÀÀ©X±GE±€Ø{Kì-jT{76ÄŽ»¢FËÿ7Ììë¸î!&ï›äóƒ_ç™gwgwöfgÛüvX<šÅcX<–ÅãX<žÅß³x‹'²x‹X<™ÅSXœÈâ©,žÆâé,žÁâ$'³x&‹SX<‹Å³Y<‡ÅsY<ÅóY¼€Å Y¼ˆÅ‹Y¼„ÅKY|òO±øŸfñŸeñ9Ÿgq‹/°8“ÅY|‰Å—Y|…ÅWY|Å×YœÅâ,¾Éâ[,þ•Å·Y|‡ÅwY|Å÷Yü€ÅYüˆÅYœÍâ',~Êâg,þÅÏYü‚Å/Yü;‹_±ø5‹ß°ø-‹sXüŽÅïYüÅYL‘Ù‘®ÖDSO¾oB´ô媣'zòÊšèåÉ+©ÕÇm| j≞h቞hà‰þh߀„2|[@F«#—F‚±Õ´O¨ž}š@µì)Õ±Ïh×¥Õ¯“~®D»¾^ø¤[ß&PÍ:éÚ&P­ú!êÔOT£~V úô‹àª@ué·ÚŸõ>x,PúKjЉþ<÷Û« ((JP^!¯1'úr Õ”;*¨–¼©‚êÇÝT;ÞFAuãíT3ÞIAõâ=T+Ntâ}T#¡ úðÕ…=øHÕOPP x¢‚ê¿“Tû=WAuß‹Tó½RAõÞkTë½YAõÝé Ú÷ö”‚^²\UPöCícû†TB({!ªµ. L Q}5ÑVWÕ Q=5ÑQ µ#p*DuÓ.…¨fÚ£ÕK{ö…¨Fšè£{€¦‰g:è0iŸG0ÝóX¦yN`Zçd0ÌgºæåLÓ¼šé™72-ó6°ìûÀ!¦Y>ÍtÊ—™6ù6Ó#?aä7à=Pà ÐÀ”e)ÓWgZbK¦nÀ4Ã.L'L4Âí˜.¸3Ó÷f:`¢Ž`Ú_¢ûcZßÑLß;™izS˜Žw1X Ö‚Í`Ø€cà4¸®‚[Lcû˜éj_1-­Bêg‹éQÍ,ÑÊ,ÑÆM,Ñ ,ѾÍ+Ѻ+Ѷ]+Ñ´=+Ѳ+Ѱý*Ñ®Ýê=ªU«Gõ©‰zT“:[êP—êQíéZ=ª7ݦG5¦ézTWzLjIÏëQýèu=ª½¯Gu¢Ïõ¨6ô½ÕƒÕ§ÐRúT÷YQŸj=Íõ©¾ÓZŸj:˜ŽÓ•i7½˜^³Óh0]fÓbj™þrÓ\N`:ËL[9Ÿé)W2 åF¦›ÜÉ´’˜>òÓD^d:È[Lûø˜é_1£¢Õ5+BµŒe™~±*Ó,Öa:E{¦MlÌt‰.L“èÁôˆ^L‹èËtˆ]˜1¨™æ0‚é 0}á(¦'œÂôƒs˜^pÓnbzÀT¦ÿ;Êô~Lßw“éù²™~ï-Óëaú¼ÒLW…éïêK`Ë´v˜Æ®ÓÖµfšºLKוiè‚@(ˆýÄa`$Ë4q‰L7Ì‹ÁrðX 6‚­`Ø ÒÁ!p‚iØ2™fhÕîƒ'L—–>¥4¦;3a:³ê °ÖÀ4Asà <@Ðø‚N è‚@(ˆý aº¯1Lï•Àt^ILß5麖1=×Z°leÚ­=`8Â4Zg˜6ëÓdÝdZ,¢Ãz´WDw•Þƒ@a€ë ŠP ’ 0eAy` *PÍU5ª·ªe@µV–Tgeo@5VNT_Õœi«Ü™®ª ÓTµgzªNLKՃ騂8 UÓOõgÚ©L75Œi¦F3½Ô¦•Jd:©d¦‘šËôQ‹™6j%ÓE­eš¨ÍLµƒi¡ö0Ô¦:ÆôO§™öéÓ=]eš§[LïtŸiž0ÓK¦qÊaú&Ó6eº&#¦i2az&S¦eªÊtLæLÃdÁôK¶L»Ô€é–š2Í’+Ó+y2­R;¦Sòg¥nLŸÀ´I}™.)‚i’b˜)Ži‘F0ÒX¦AšÄôGÓ@HsÀ|¢IKÁ ðXÖƒM`+Øv‚TöƒCà(8~gA¸®€ëà&¸ î‡ </À+ð¼äƒ…A@Æ.-J‚Ò ,¨*‚* ¨jºÀØ{P8& 9hÜA+ÐxƒöÀt]AÐ> „ƒH ´`†ƒ‘` &‚É`*˜f‚Ù`X–€å`X Ö` Ø~»AØ‚#à88΀ó \×À ð+¸ €Çà)x~oÀ;ð ‚>P‚b (Ê€òÀ T*PÔu@=` ì€#hƒfÀ¸Ðxà :‚. ;è„€0 ýA,ƒa ŒãÀÁt f¹`X –•àG°l›ÁO`Øö€½à8 Ž“à48.€Kà*È·Àp<OÀoà%x rÀ 0ÂñŠC`Œ (LA%P|ÌAm`¬€-p @#Ð8WÐx‚¶ èüAgÐ ô ôý@ˆ1`ˆCÁ0 Œ߃I` ˜’@ ˜æƒE`)X~kÀz° lÛÁN ÒÁ~p'À/à,ÈÁpÜ·Á=ðdƒgàxÞ‚÷äc›%püƒ"À%AiPTAP Ôµ@]` l€=¨œ@дî h¼A{à:® è ‚@ ÂA$ˆZ0 ÃÁH0ŒÁd0Ì3Ál0,KÀr° ¬ëÀF°l?ƒÝ ìÁpœgÀy .ƒkàøÜÀcð<¿ƒ7àø •Äñ” (J2 <0• T5APX;à‚Æ pnÀ´^Àø‚Ž  èz@ ! h@ ‚Á`ˆ£Á80$€D0$ƒY`.Xƒe`%ø¬ÀfðØv=`/8ƒcà$8 Πภ²À-pÜÀðx ^ƒð(Œqüƒ¢Àc`ÊSP TßsPX+` @Ð4ÎÀ´ž -h:Ðt=A}A?¢@ âÀP0ŒcÁ÷`˜¦$æ€ù`X V€À°l[Áv°¤‚t°GÁ ð 8 2ÀEp\7Ámp<Ùàx^·à=ù d)ÿ 0ÅAIP”@EPT5@-PX`ê'Ð4-€;hÚoÐøN +èzƒ Є‚p ¢ CÀp0ŒãÁD0L3ÀL0Ì Á°¬«Á:°lÛÀÏ`7HûÀAp§Àpd‚Ëà¸~wÁð<ÏÁïà x>‚B¥qü%(J€R  (Ì@e ÕAMPÔÖÀ8‚† 1h\€ð­ð¾ #躃^ ¨AÐÄ‚`0âÁh0L LÉ`˜ €Å`X ~kÁ°üTš~?T µ+¨Ãùš0Ä`)™¿ƒd~-g×ãìf 1õÚòeváóíà§ÙÉL³×±œ pçÒƒ8;†!ñÙ­<úœW ä™n?.]K ß3C;ɺ¤éHIþÒ4¿-m%ën+Yw¸$í-™ß[2]#I» ô™5ŸÌ¥ƒ%éZœÝS‡¿7g÷âìFœ=œ³Uÿc[ –ÀÖ5­–»žÿw:ìz’eøiœÉÙV[.ÍûTœÝ[bË¥y|óÇh5á?Ÿ7È Í|ºšd~~:¿M_ ¤á r,ù3¿È1KŽû ¿¬+g±é‘2>¾­êËÙ­òa‡p¶§»-g‡s¶·Äæ·Í‡³Ûsv‡|ØäÍî’õÖf~/áóvšoHÛEÊ¡cz Îæ÷­Z‡Í·ƒ-9Û‹³ù2‡r¶gëÈŸŸŸoçT§ó†½ðe[a—Ç4q9Ç<–“›fŸÇ4‡<¦‰ë«/3Í1iâr óعiŽyLkÇ4q}bÖu¹´ÔבKKmO™´.Ÿ4ßÎ\Zj{ʤu›|æë__C%¶\ZêÀ¥¥v¨LZ—Oš/]#µCeÒ¼o‡øv”?Öøv€œ¤çÇf2Ó¥¾¦\º©Žé¼__ߺsv]ÎÊÙº®9¤ÛÑL’–^ÛJ¯Q›ä1?iÃɹНS¾mW[I|¹Ã s>w¾vÌÏûÈzøs¹Þ%u· çk!|yhÁÖ-†V’¼É¼|;ÝQ2½¥d:Y'ÞËʧùcÍ­Ã]â#ùØÊøìd|ö2>ÎGö Ùü¾ ÛÑEøü|+îoé9ÍEf>þø'yùK–sg~¾ýh)|¾¯=$é’´¿$MlþÀMøò÷䯷½…/Ï÷dŸÖ‘øìd|ö2>Ÿ£Œ¯¾Œ¯Œ¯¡ŒÏIÆG¶ÙF‡_®<¶:Êd«£\¶:Êf«£|¶:Êh«£œ¶:Êj«£¼vy”·à·ûÒÿOÿíȼüý˜$m/I;HÒŽ’t}Iº$ÝP’v’¤ÅßDê“n§ø[H}Òí©OºÝâ¾—ú¤Û/îs©OZq_ó>òû>éï(ã ’ñËøÔ2¾>2¾¾2¾_¨Œ¯ŸŒ/LÆ.ã‹ñid|‘2¾(__´Œ/FÆ+ãÓÊøÈøÊøÉøâd|ƒe|.2¾2>ésMâs“ñ¹ËøZÊøé}<ñyËøÚÉø|d|íe|ÒgºÄç+ãó“ñùËø:Êø:Éø:ËøºÈøºÊø Úƒ‚ö€ø¤çeþ¾’¿g´ø mþYW#†ôþX.ÍûT’éb¯Gt]7Ê]gŸÜuñË]g¿ÜuñË]g¿ÜuñË]g¿ÜuÙF¹ëJ{åµ×Q^{åµ×Q^{åµ×Q^Q7 ç—+¯½Žò:è(¯ƒŽò:è(¯ƒŽò:è(¯ƒŽòŠcÊùåÊë £¼:Êë(S^Òv’óTç –¤É9ߟK²éÑœsü³FÒæIÒ.\Z#Ik%éI:L’&çoþÙ€—$í!I±mæŸÇ…éð“m埿h$i­LšŸ!I‡ _¾ï,™.õyÉø­¤<’t°ðå~àÓ}„ÏŸIj$i­$!IIÒa:æ'ï:íd–“úå|ayÌ+úùgXA:ür¾°<敾ûâ}Òm‘Wa2>/Ÿ‡Œ/š¥ƒuø¤Û%7Mº}Q’e4’´V¦¬|š,ÏóIZ+IGHÒa’´—ðeÒI’?ŸÖJÒ’t˜$í%I“ýcÅ–ãïwI»ÑŸK Ÿ·eÄær¯c-|yœ¤$ï`áËv*ŽK‡Ÿÿî䨿ŸO’ëZ¾_Dáóg°Ä柣’mŠåÒä8¤5’t¤¤ÄÇ¿÷ ËJҡ—mN¤Äç#|þ|žü¾rû߇á%ññÏÀI=äÏ?ä~‰çÓI²}|:T’–¶róHç#ÛÁï_þ:ôï½òaóý$øß 1góï{øþ|_„ÚœÍ__ áìaœ]³kr6ÿΉߗü}…®þüu:ÿ«g›s¶³ðeàËÄ÷á·WW~|9ø~*ºö®²ò¿ _nþ÷áßÙÙp6ÿ~‡oëùóÿÇ‘³ësvÎnÈÙNœÍ× ¾¾ð¿ô} øzäÌÙü5ž®~ü;c]}<8›os<9›ïÓÅ·¡üû¾ âßWñïßòÓ‡„çÄ¿ë㯫ùsžâßUvál¾ÏH7Îæë~Îæû–ñm@oÎæÏ=|û©ëÝ5ßO„o_ùóGgóí)ß—$Œ³¥ç1ðç)þ?гùó6~à¯[øöšï“ÄŸ?r6îãÏÕü57ßÎñÏ=ø6W^PÏiøÖz^P?iøÖúYPßhø'Ô·‚:FCA£¡ M£áÏÔ7]uŒ¯KºêÌ·ÖZ}àëÀ·þîº~ëÚï[ОÐPОÐðWÖ·o­cÿëºô¿¨?u††¿«Îü™¶HÚX uƒ†ZÝ(8ÑPpþ¢¡ ¾ÑPPßh(¨o4Ô7 ê õ†‚úFCA}£¡ ¾ÑPPßh(¨o4Ô7tÕ·¿«ßHÁzÿ¯· è…¾ø+¬*$þÉL•þ)zë¥åõ§ÌüòO2Çyîï@þþ>[>ƒû;˜¿?qÙB÷îÿ„Bù ° ±”|.û5½A/í£ÌÌyæq^þ»è\†þw‘®· þÿÛC¼@Ç©Fƒ1³f/бk&€‰Ã&LèX6‰`ª@Ç´™ftl›d0S cÜ̳:ÖÍ\0O cÞ, :öÍb°D cà,Ë:ÎJ°J câüV tlœµ`@ÇÈÙ6 t¬œÍ/g+øI ãæl;:~ÎN°K ã褂=O'ìû:¶TKî;‡Á޵s è˜;'Á)޽sœè<çŽÜ±x.4<¹cò\—ÁŽÏs \è8=7ÀMŽ×ó+¸-Ðq{î‚{¿çx t,Ÿlð<Ï:¶ÏsðB cüü^ t¬Ÿ7à-Èè¸?ïÁð‘À†ÂÉ'Iè6ÔEî¸I€}v>w %ö êܱ”Øçh…ÒÀD c+•å:ÆR`*б–*‚J ²@Ç]ª*P]+éãNú¶“>í¤/;éÃNú®“>뤯:é£Nú¦“>é¤/:éƒNúž“>çäšRü†…¨ç$׊ä‘\’kBr-Hú†“>áü·§HŸogÞç’û[r_+~o‡Ü¿Šú6rŸJîOÉ})¹%÷¡äþ“Üw’ûMrŸ)~ׇÜO’ûHrÿHîÉý"¹O$÷‡¤O4é Mú@“¾Ï¤Ïsï¿pý¤O0é Lú“¾¿#„‚ã?MøÿBÁïŸ&ü‹ÿ‚ö?·ý'ÏëÈs:QGIžÇ‘çpäùyîFž·‘çl¢.™…ߺýy-+†"ÿ¼–Í …þÄþùʲ$ˆçXâ¿eû¿¶¬>|Þ!׊Ï_³|5ÿ¯-Ë•¢ð׎¯¼êg^ǘ¸¼>[¶ªðéøƒ¨WÎÂþø+н¾}ûy­µê/âl¿³K²íߥ´’!÷½íÇσBÈNÔFE©£…ðÈø? <*$@í+ ¢QLT@ZˆŠÕÄ }£¢B„ÀðM˜¤‰¢´š X,¦Ñâr'6’æIsûb7)åÊ•»M½ÎJ6RfÍ£óe-añ¬/—k²ÞH9d­3R’e‡"ï¬`™‘’Üw`ûêàa#e•»Å•i÷‹+7Àn¸ æ-*€©H›m¤yTB\Ô  pmè‚A~óÌïõ. ¶÷ïÅ•ñÅŒ”iŽ(Ckº=áüþúÁHÙ¤ÕFÊxœW)a ¦ƒ4 Z ¨°o±¶X‹ø>O|—'¾Çßá‰ïïÄwwâ{;ñXÇÄwu¢ßUðiçëÙYpñöõìÕÙÞÊÁÒÖ©>ÿr d ëÜƒŽ´ÄÆ È´ŠçN)HÛ\2×ïœÛNã¦%9fo«Ürc¼g$Y›š”y—µ¹¶!›ŸäcHó!u!rttNãܶEĤbÎÝ“‹MIž…`W3^hCÆ!VúïÄÇGÎÝ;‹ø ÓÐX`vwm…ÜeaÇïVC¡Oí!}<É< 2¿s›¶ÄOìÊš®aâcM’h÷ýì(±õrORÁÅÈz‰Ý¾õä¹Û Ûy]hi’±=§•//Ú‚ñŽJdÙB°g·Š­.ÚΫb,r·¶Kã; 6–oîþ)Líô&oÛ ÌïœiÒÄÓ­Ó"rË^„îgù_Ž[;{Çú :¹´pusoéÑʳu›¶^Þí|ÚwðõóïØ©s—®y-_[£ ¯£{:~Öcq ᦑ]-¾ a?sn íº2äÌXlÊb*sóÏ#Ÿ²2¾Ò,6ÊÇúɽyIÉú ™O<_“{|Òþ“{wr__ŽÛ&²~roü ëß¾ÌP™¦1T¾µ# •½Àd° 8G*÷k •ë* 2Tîçâ •o—l¨< üÇ*ÏA¡±†ÊïÆ*ÏŒ7Tþ2ÉPé–`¨Ü öÃ÷ ±;– !?~ý_㿽~’ç·¬Ÿðw¯?5îó´Üú¥ËõëÊï[×O8—÷ú¿Vþ?»þ¯•ÿ¬ÿ8ì?B`˜¡RŠ¡Òx–¡2x¶¡2Œ¯ç`Ûæ*]*‚JK1ÿ\Ce›¥Ÿ/ÿÅèo |ô#òkg ¬¶2P¶Bü íh lÒÞ@åc |íg ì{WWåa°¨+õmèjðŸÙ„9’ôR–^Ãù·Jæù_ŽuŒ½g¨LúLúƒËͺCc5K÷—™gl>ÖCüYw •ïb1I‹t~9,3ÿÕ;__N\Ϲ»t~éúåòxÎæýÈ­³˜Ì:‰­’IP î^ÍæO"xxù ~]MèutL@¸`­Ž ²  P þ~®‚y·ž6–Nõ,,{æ!ÚF Á ÿY1Ì5‚µ6&Ú:&$ Zm=8R£Æ1)XYY#w7ÏBTdLè hm¸:FP™“‚yŒêÓ?â2z‡÷ŠŒRkz…DF† m=[¸öòéàÙÑÅÏ]èÙ-®Kü¯ñæ>•×ý‰ÉõW›ÝFÊö Te(·ŒÎ‡FùÌŸ¼Gó•cÑî¼)‚û2]Óò›‡.´µaOêK}1æ¯eÙ>°’+Û·”Ÿ\/Lý´­b†$_­FðŠÔ~ZµÐI,ø¡Î´Œ|bL ˆ#“I„9bHŒ¹4Ô¼ѹ –ÑF£5N-Õ‚W@´à>¬¨µ6\pÑö|ÕQB;Üù{GÜÔAd~m@tY&:×À‚A!dÑÐp² š,GÕÆÄ’¥cÕêh’G$‰‘u 3j¸x >^‚y€ÊåÒâúÄo$‹}«ùuK§ñÛ#3ß.MóñÛ­c¾ Òi|yÄ<¤ó´>¿†hɶGìWï%|þígrýÅ¥Åé|~üo$¦Ã¹åùï'û²õ‰ýãIŸ‹ áÓo Žß(ö{wcó‹}ýùí×rÛÊï±<Ñ:æáËHòµ|YùïòeTK|á\¾|YÅoëòuK,w,³Åשׁ…Oû—ß‘2Óùý£+~ŸéšÇEø¤ÿà¿ÅjÎöŠÙœ­ælòܲ³½8Û—›§ —§øebsv7O^yŠóxæc½QÜüÿ­²t•)—\øÚùüvïp~ö)õ€Æ  ¨ª‚šÀ 4. hüAÐ5 ?Ђ80 ŒÀt0‹Í¿,«Àz°¤ƒ£à,ÈA6x„4Z¹s¹è¯š€¶ ;'× ÌÛÁ9ðTJ7R:ƒî L‹À~Yà)öb¿°Π7æí¥óoA|\¯É¼û0߃$°¼öc;jã—Ƕ5Úe£(‘Fmc)_iR¦ýô:ék¿/yÖUGAß_“ùÍ£ÌcÍû‚Ðçëõƒ<7{zPþÚ)7¿soó> \*†äž=£‘pµ4¬2÷ƒdî-·š¯®Ÿ¤ûúM×vY˜©È™<\.óoX?¹>Í<ôeþù]žU23ù¼¦ÿ¦šú\[£~ÙÊ]϶hRÂïcPZŒÿñòOÞ¨«½ËÿÕ¡+ñWk^œ|r¥×+_ý¯¯,¿Ûô:ü]ßèß^i™œ™2³GÊÄFÛ/šUÙg¢¿¿¥G§;Ié&ŽÛªukóºöžÅ•¬v¶YÔƒSæU¾³6Ûd•Ó~Wv7f®y¼tϺNóì|û¿»›\äݾ¦?ŒíÔëMÖ”©›~]»zFݘ>&Ýz&•è–ºf½kÌÈ]³7´¬¼Ò½UJè’Â1Lª›˜2quÂņgÒÏ•uªôõÍþË‚â©ih‹n/»Uª·po•ñÞ•fov ¬ãÃ2fU†µ5ͬw¼„ÛéÙ}&ä„ßVõw×*ÃFŸ\8Ï¢rõCþͪ_è}E=©Zû§»W×%èÈÂÓm“î­,Zwᮡ©û[O‰ÜMïVåT³åßeN,µßágý­e27_k¾§œÙÄ]3·o|”ñò}XŽmõ‹ŸÊÕ73ÎIÖ†}ð0»2!þbüòå»ãGÕVÍéSò¡íÔª‰ïŒíû¥ ÒïæÄú!×·/ºÕäd`‹)KÚ/ÕùiCøhm·æê­¶ouÜ·bõ[ÇE9Sï_XÑs×÷­K9—s‰ï&ô¬þü…gËÉUŠ\[UßÓ÷@LÝÝwVOY‘žUÁã‰çå3Ýš‡O?g¸ÎÓÉÕòàÒI=lÎé›e\4ÏGïÌKPdÙ›¨C n5÷¶éÔ䛞Õ<¬ùÝŸ=F[ä§'ÕŸ¶øörÿˆóV1G½oqÚçÁ¦ÉÛÚ/¨ç0k×%ŸÃÏ24ãJ×s0ï7}oèë3­­¦õI|¨¿å˜•vð¯~üñˆœ¬Jãžß˜§jè¹Å$ÅA‘îpÍ/ßf~ÄËœqßçŒîúÄä€k¢ó² öÍ]ãξíþâxç–¯-_7Ñݥ½²u^to:©V/·~ƒ·^~%$}T8s¢ÃÐ{›Ü§'Ÿx55ëÚ‘C‡­)QæíÙºÎÊkYCûj_7Üý¬Êw©ÓwT};~™Þü“?Dî;S#*²yàúÚ²ýMÍðl–yåÀ[ïÕfeï†%œ8¬±Öp‹òaõú³jÙ”¼Ý¿ÖwI7••ïÔ¾ÿjE÷ìßšì¨h1óa©J›ZÍ\|Ìâ¤_ÿW6©©CL—Ö¼½¦Î­„3±­¯÷½²uó=ƒ¯Wº‚𯊴¾u'{GŸ»;øÃ”©Uæ¼.ï¢|â×>˯ýÎ&uî…ùDo¬“ãÝiöí–—žž-Ÿz»ßö=˺ï­Ô%Íah•á—ª·z²mÕÊ÷O𫽾'Ã8ÕåÖ u×÷nê¦0Q½ä‰Õ©McÍû­¿pgóÑøVejMK(Õªz=EŠ0~Ô›6ÇÆÌ+÷:ÁZÿûsw®†”7Ù¥oPì£Ë¼Õ~56™ ð¶©d6¤Ü‡Æ–•Üæ=o72àé í Õ]Ö²)a4<éÂч‹;&»èåcSí˜Áh³¢ç×üV÷ДæŒz¿«Åªd;¯’µÓ&<×kg6rËò}Ï<;ëðö²‰ ?\Y´ÉÛÝ`GÃñ3ïï7.uü¢Eñ)v6z©7š]w¯„Á‹lÓa…G&8…ý6§±Ï²¤#®å¶nJY¡Mßá³fz·cMô³>¤Ø­jÑáÁõËGG?|µvþÝÐlU“ò!†Uï¨õ6Ö&vÀÊðò¿OÌøpîâGמý<½ô¶ õ“;^KH|¸ìþù7oq¾wâôøÝ§·ø˜xâùÔšVå®ô4¨¸ðp—ïWUmªmØ¾Ž…¡Së²ñæ3-›eŽyk5~ðúª Ò-ý¼ÿ²õÍ#íƒÀ¤ë†M8,^WÜéÜ’­Þn7²Z­íC4*e Ë,ãTŸíçftÞaa»ú»êUÍ›s»6ª5|kæ«…ý–¼;sO¯é1“ëGúж:yÁ‰¬Ìw«R’ömºè2À&ÝéH¥Sû•5÷:ýÓð~vMÏîuÓdŠ…MPvJÄËΕSÌ÷7©üëÐÀxÃ9['¯>ÜàÁ‚9†÷O™ZÏñÖŸÃ&õGe úà£I¤gP¤Û²Ó·9l}Ô¼¸{½ÍîS]:uÅÉN…Æ÷÷l•|yÎ≧oYµbMòÅð^>Õ+žª»ñ^NÂÀ¾fÇ=l8z©å¾ýJç¬rn¾¨åËnkxœ¼ÿ>¶uÛL›Å1–%f^LÏx¸äaäꤡ«GÆ÷.í3gÈ”iSÚÌ~3ëÌÖú÷?^‹øÁvn©™».…Mn~ü`NóÚwGmn¼p@FS‡Øs}Þ î¹Ò¼_ÍŒ÷.3×Uô›à]Ô!¹Ta#gß®Œ¦¸Ûo½½Ö4ÑxׄIÆ~G–¹Y4ÎÑtˆë”ÇkR¢údÛ«ô¯º«„ú©U»î{~o7õú’±³\]»ÐéÌÿ±w5ÐQTYºº»ÀWZÍ8¬ÂZ¬F±yæ#?N:BÈá*éJÒÐéîtwB¨™Eçàîè°ŽŒ£#Žèpœ ƒÊì‰GÝ]<‡Q<‹{‡a÷àYŽƒŠŠ ?{﫪NUW%÷&ΦΩt÷»ß½ïÞûî»ï§~rtuÞÒ¥Y/Oú¯?ùǟǧ÷-áÏVm¿öÁݯ½í¸pm{ç»ÿ}¦àõgu:žøtο~àÜC ßñ,ª{éø·o½k¥ûWï¿àûÎí¿õQÿ” 'ï}ÿÚ÷¸>ÿï/{åé¿ÿ—=þÑë/EOmý›g¸è¬ü_ôžh¾”µþƒ³¾èu{¤û×o}p`yUëº>Q>îûc^Ñtì¶wîž³/òO‰¾jéÚ;e멚ùOüî 7ýwßûaCáÙeoù^>²äŽO…ºg|tö5ÏOðìÿÔMwÎj|˜>õÄ£ÿ°aÍO>㥆Þó…'ÞÜCöËU_Öe¬š3eò¡­>PQ<÷ʼn/µ}¬÷݇Î4ÕOúühÁëÑZÏ^ºñ[_=ubÓ‹ç_=õï>˜ðj^EVVß“îŸÞYà)qLËi wé{Kúw<¯ÒÊÆj¿qO ×€‚ö÷‹p…&j8ÜÓÁ}Æ£ÿoÆë4\wã:üF ó3ÇýÔ¡îážS-­v©{8¸/ô yj¬ºç{*óÇq\Ù8u=k÷ï_Ïq;à|dì…sj!ÇÝl|‰’v uêJíóü_õ»Rû`¾˜A>æ³uZt¹ú¹Kû½ÏcÔÉõs{9XþŠ rÓš+w–mU?w­ìÿ­Ÿ_GÎZ›²·^èÿž¼þ¡ r"l­ç+ϳPÖû\yç¹þ²/µï^0ׯFèÜ,ˆŒ.îÜ/¹#ÜgÜÕŽG•£Í”ÙÜ ˆìÜ~èßg¸k¹ŽEŽpÿm<Ç;‹Õ/EÚg~Ö×׿ÿšöé£ÑX¤9R¸¬øL©I‡# )žΔ²ân#¥MŽÚšbŠœPìix¿–Â1þ–‚q)‘š"±˜Ò”4M¤€œUzs$&­ÍŠO¦E ¨YjSÚ"±niC+cA¼ ·èÜ17 wBa@j‹Tª=ÓRºJ8 µ„"rHŠ7•3ÛÁʤP0žàTfÿ`5XÇœ¬ø,fUS¤#œæÌ‘²:Ü £ÒMtKî°Ül/Æ!YæÇ;ã‰`¢ƒ]ñò×ÖIX™§`‡T[_á¿­¶¬Âv´Ää6Ìcî¦P$>h¥!*$dþus컀i\‡^Õ[À&÷é‡[˹']ê~âîû\ñÜ \Ïc;Õ=E|6eC¿F¢_'1ž|šÛP½ç¡çœÚ¶{Ÿé¶»¿¤~öÇim{ø´®gúqÖövÁ‘§?8ûRÊïTÍ{L¿út¼ÖObJ<‰AGQZÚ”0ë»ÏÍ %¤P¤‰õq½KJSç…ø D6`ÐVWÖÕ”T"‰%O3„yÓƒ‚N¢Et[ÛÝÖ ± !µÊq)lnVb¨N<¸Óƒdê ^È4áx0Àtœ½f=èàî·©M^ßoІX0!7j9ˆ™¤^­–²CòÆîiœ»¿ unRâØS±ª9N?VÇE²,&’Ùð¹Z;Ûµ2<ßëÉ68{;Ôïx×Êð<Û%’ßÂùŸ]êw<ùn‘¼Ô¥žø{ü&‘üí¦~z|ÿÓFõì+]Q0¼À4–ÝÙr’Ïâèàh+Fó ¦ª&–UŸÇ¼KRÍ\i0 g©&ÞFb(nC0Ñ*Uú×ÔÕøæ•¬©†6¬¨ZPQUf•P ? ³u«5z("$¹£+ Ê6¬™•&¹#®`È 1Û¦æåø ‰Vi33(8zÁ1íóPÖØ­çc·ŽïW2C2_cÞÓòu²,S ÅV?á Øo1……y“"±å “è$¼©:Ö¦†¥Ü)C,†³Q™`LÕä¶*MëÙ ±­s2÷ÕZÒô×Y´27DKûêŒ6Æ%VXŒÁhpsy}¿hn*‹ µK›•јJ³Æ v¿ñ¸H?ÉÓpNÚ%’]p€óœâ"Ùû#øçÚ'¡_-H¦ž'7ÖpŽÍÄqƒÈóÛêܯ™l^|î^[ä|ãÉ}Î¹ãÆ”ÜÏou9«¨8—zæÑÌyt¢NòQiexœ¯ß\sîÒxg**×™uç.¶•é·•‰×n×ÙËÄëøxmµoɹK7˜dR~%ó¨8É,£ª=Xï¾%ö²ôgçè ÍȃkžçùÌÑÏRºe c*æÔuNïó„,6ˆôS^EÔR⣢z*ð/|ççR®šò컸ï78õúùÞÏYÉYêHPjçn8ÉB¶êá\L%g«u,^OÞù9!¬Ø.êYK¥ êqî¤êŽ×rg Yi#w %ÊWPnå•”,¢|;k)ŽXOðu dAoßx¿•f‚™‹ š @#v-`{2ò ;,ˆ¬ì|Àâ½Û[ äC«?œ÷Q²ÑâBÊ×S‘­!>sœ@îpYñ• ú›Tt©¥œs)%ÀXGÉbʯ¥bP—S©“Š-TmK±QíÈ=¼E–ë• f×ísœú òy¶¶õïáLüpL?o…¦Gò®ß~õ¬¦ü2êqMvë“”8ÁΚe~Å{U¶ƒœÐõ`Óªƒd,»× ô=“ò¥ŸJ©T0¶.?¸Ý“r֦ש&<ÅtZA¹ÍL ¶C&øsçÀg?w ¿ËYNù.*|åcìÑì+~Àïâ5·± õ}è‰) Œ±êñ+*n¦¼LÉÝ Í3”k§|'õl¤|€rÐJ5KÁ幚¹ˆjõõ‚¼£·ìÙC} ¨?úçÐÉT¼m ÏSëS –ïbAÿœÜaÀýÌàŸf'„šó€6XÂå€]›§ d¯#Å?÷Û.`ûåñÞ •€Ë¾U cyk\@7qmu€u¥TŒªÝàÄDåV'ãa|ɹM 56í·•’Íz{½¸{s²ÖŠkî §­¤b'åÑg"W ÓÍþ[гö‡vÊÌÈ|‡ÅÊG¨§¤ÂPLD=ýønƒ|¬3Ë“©¸‚% HÌ!ÀܧÖvi¡â]™þYnÜ Ø¾,7˼KE¨qp0“ 2ÓŒ™~Aú1 /z»E/•~õºÏL¯G?°±p,Œ3ò€Õ¯U”`c¯¢“VaÇ&-z®ž]· äéÔ¾:a¨«Ã¾£Åéf|N¿H 7Ø´ïZpïÍOnå©4Ž5[\‹©ØÌ|cÕÛ€Ù˜k ˜ù ÒNí оe -%P6nœZµÙ )ig²QÏ›³t¦@3Ú„Z‚²“œ˜C1n*wp·º,ñþrþòðNøü úŠ€Ÿt§@²ÆÃJÄ`íÌž;ÍmÄü =ýÝôS@ÿUËî¦`ÀåY{žlïw»±´ŠåcÑ¹ÂØ 8.HâÛ'÷mrr©ƒENè±ÐºéáG)„E1%È»x'ùò ïüAxQ×À{¶T Å]¨¼06ÃI0I¢­ahK¬ïðàsÄoÙÔw#Ž:KXeëXeÐÛs˵qšà¦÷|Æ¥äÂÑùŒUÿ{°‡S±í¬Kà@ݨ÷±µ€-_(s|ÁÜ…0zÐ÷½ÎLoÇ>ˆ±»è|•@n2ÐWh¼– ´Õ)²ãöз}«560/BZWuäañ€Ï`ßššGx-þŽÏf?b¤ou±ÐF)«ÁXÔµpÇ7Ñ€«ÖÆìV á³ÝÝV]°ÙWè9aàð¹ï³â`Èp>‚:£ü€ÃgÄ'põ4Sÿ€†ÏŒ?h•QC'Bw%j;žÜIÀåYó¼óaÊC¨MŽEÙà£Zì·Ì ¢|9KójþÜÀÝl#ó{™ã›ñ&àzl²Œ¿85Ú§]åT™µÕ>àÙ¾D sÌmµBoËÃ@?ô"3½M÷Ûi ç4D4Ú¡å g³ö9è¦Î-”Ô°ÉôœŠ±VŒ<°¦jJõË\a"b€Ù ˜]ßÝ›´k`Š–[ûÉ<Ð õÞtq…@ðþçR¤ûÇ)Óho`¿´¡aÝÇæ_aðG¶‡«Œ5ÌjŸm˜BS1n Lð˜^Ðvµ˜ý cÏlD\GýÐk >Ãz—BùÞõyÅ:$×6›ÓˆÃfüƒ¥ŠŒtÏ&*¡¼=€ EÓzKîÒÇ“C€éÌ=©~n¤ž.ªÆñiÀ· ¤!R ÐæS-Þ'އ8‹ $f­&ÌØØÈÚ/4Æ2/U^õàBç™Àøãæy¦>„õ*$s1Ѳ#K\€‹/‘ñí¾Ó hW¾J®bàu”kÄ‚:!ßà;¿¶‡8>7ä¸Õæ6"* %LÕñg`ÏüB §­c .*æ²e8ÌçÒL?X–ö>zs9Ì6±Uú\}åEkôu;|o53—щ¥ÀóG¶x†|à§ÜJÊ—1Q>ÐãÄ~XÇÚèñ¦^¬ÄK˜мΫÀXý:—Ôäßm`öéÌV$ Þ—^1Xü²@Þ³Y‹þxpܧ[ŸTh•a~m]ò?Ì%eºKà¯ó€¹uÃyè Ð-ó×ùØÆGïêU%}´ 飤JºåI| ·ÉÀìK2WéN*¡?Úƒ›kð;¶ï2³ •G}–bûÕø_0²Ýå[`n†Ã¬î˜Š ÌJJÑZú¥Z?;ü;€ŠqÜ3o %·™À÷Të/ã6Sºœ”ofæ)˜~ÕyÌDhàÍŸ»É˘½ 'îÌb–ëó(?b¿p“O,ØÍ&,ާQÀF¿t“HÊ8¿L›Óîúq Ëfz\_›ïºÿ¬›¼jcÇðG;[Àº'¡Î=Ž~û9·im®êÖÀæˆáaax0¥èä£ü]ïlÀìø³›Üfư92ÒËÞô”= 6Çfó_ Ÿú+6óßvJ¢Éù/àöœw“Gmp5ÚºqW|ÁM·Ám`5wpÇ÷¤W sáMº}ä:hËîÔy媤ý@?t»y%ú°èÙ— ¾,~fÛ`,>C×á½+dš#kñ¶ h•/e˜ôÔÚ5J3ÛØ¢JÖöQzQ—u"yÊ€-Kî CÄe–âÄ™avíz‘ ´ ßó€o­ÓãÃe±‹^9rAþPìº5]3¾ž>cÿ¿é3Òì6ÿÞ1»f¥³k¸äŒ¸þ•7$»Œ9v€yåðÈ ¤Í©ü@2¸a”!çiܾ&=Ã%'/'ˆ4]êºÆÉæ¹f»\Ã+G.R{禳k¸ä ¼Z—Hk›±íMýl³ô“ž1Ú|á2Ëâš#+†KN~—WÎÍõæàçÀë ý­»,^zÌud°2§ Ç>Áf#Žý?Íž±6}‘pçGœ.,¼…]^-öµ]Öë£ýµÆˆMÝ=„»ð—®;}Ÿ“Ö÷N­>£OUœ6>Õæâ—S¶œ?¤ü2ÕP6@¿9#nüÚë¦tv ›œ"o~ëçÞ|5,ÒÊ$†2=VØzºÇeÓ·yk®oYbŠ#6: ÜŸ¿1:ÎðB·JÉý©#¾Æ=SSÿÓÖÔæøâmò ±É/‚IÃõˆ6òÆÙôg÷Õ_µ]LÁ|´ ¢KKˆCèO¢¡,uoÛj£y¬#šG¬8bk‚M¬¹¹sªîý퀆 ­-ÆÊRçIV޵é'WÙøØFO@«}"7Ç›&ošm¶Ë¥6s8ðáEÍCi3£Ý¬Fc…:_Ò>Ñ”tv ÛþΰÍ_þ:íúƯ‹oOÛ?¯Èý{9¹Þ\LG3¼æiÛ€:ë²3 ezšÀþò&œ:¯cÂñšvÖML8u½ê¶æœž ›Æió…Q¿Øú%eÜô Ñ(ËÂy ûÌãæÀóDó¸ÉÛàÆZõÖlÖëPç“‚Õf.æˆ6ãà›œâ±ñ͵Ü£¾Ô7V›/çá)f=Íê'wú;ñî6õ•4ÁwP${ñuƒìµ„¹4gz‘WRÿ³·”—“ƒïÿ®¨]ä÷Õù8é ¨iI,‰Í”$­^I wc‘0{i§ ²÷7âËJs0¬°ý…/H^ÊM m †9nQ¥ŸÉª¯*]T³ÐWWWâ×妾‚™áÀmJ"ÖMAPR)'·½2UwTùŒ”rãQ‹oJýs¥9ø¢J|ŸfK,Ò{Uûò <uã‹A•˜JÂrÝù&zHN$‚MŠÆ\`Ëï‹4AûõÏ/HѳB{t0íH€ŽmØÎŠ”ë•ò¼P30àƒÙ å®`[G›$‡R[0̾ÇÚâ’Ü©ÄäE’|Åh †ÀéØ6̆t|ñDLÆö)ÄÚPoMe)*ÇdhÙÌNô]§Ò”ˆÄÀptXH ·$ZãL°n ••¯†CK›äXB‰eø‰ÄÁ° ?ÿ—½³¢:÷ø Ù3Éî>,ASKÀ°lB€$‚YL. Dˆ(…l’͇͗IPð¡¸íEŠ W¼R ˜VªÑ‚¢¢R °ZTT® ¢E]0j à¥ëý¿3gvN†á+ö±zË<ÏŸÍoÞ÷¼ç{fv™™CïË;)ŸÕŸR”Rœâ¯¬-Ç_J™¿ªÊŸécïéÚN{Qhqy E=J-õ¡¶0óò°kv¦Nóyx3ÏÐ?FÝ´²ªþº*†¯ö×16QØ´i ½¾µ< Î¨®hP‹vÉ%èšÖh¬z¹AúFêèr†ü‹üõõ‘R ‚f|* 3KsÞTKÌ13ªŠèÇ¥Ú¨Ñú)…ú¦€^­Ko¯õ—k.Ø™_S_¡½±UÞº*Q×ÔD^áê/)©Ð×Ô5‡XM…>HsÌdŒÆf­È‹ê0¦¦: ¿”ÕœëÖ62ê™aÙ•µ­¨?jë*ªý¦€Qs|Yû^ìOK³ì—ë¨Ôçš6çép§jÇéèÃãýƱ8$ Ù´¾¡zsÏ(¿5#ë±ÍØo­¯ÇzŒ1üOQ¿Öy¥ïÇ>ojª¿õ,ÕÛ|‡.êX¬­¥ŒyWU©Jãq u<Ž×ÒÔÒmcŒ,Un«,Í>¶®¢ ü ª9ç´ùˆq:Ñ_9# õÆ©Ž&Œ וFÚ@A«ÌdYr lSÖR7K”Yïë|c k[8Û8¿‹¾ç×ÿåÝg¿?¬íY©5[eÿ[A9¦¡X3@{ zQ @%½Î6½}ûëésÞ:ìÿË¥÷Ý8ìÛÅ1ÆExcûÒ·¶3¶5.]úªÈÿz_ÀÛ7ø‹kŠ*pV)©(ÑfnqM5® Êmó·½½§­öŒ^§Þ(mÕ™©?]þâ84N”å»N¯¶#¼ù’/í«VV•(­¨P\ÝPQV\þsO±’éõxoê€4ï€ÌAª73+}PÖ Á‘tsV:yTU@~h*4U­uò ШÔ:ñ”“ï…¶APòA = †¦C9 …ŸÀ~(ù F¼ ] ©PøqÄ‚ ! ?;äƒZíäwC… …WÁ BS¡á 1(ôGì‡|ƒB‚!Ä Ð#`È1(Ô†|ƒBƒ!Ä ÐC`È1(ôä B*4äi'¿R ÏÐ>Û¡§¡åÐ\h<öÿT°í …úB= 7tb½“·B{¡-Ðh%„|ÐO }ÚìäïA¡F¨R¡ðó`¨J†zé!ĠПœüv¨y!bÐûëœü (ù }ò,Ò@AÈ]ÅÓ¾gÊ€.…B݇€æB7@ké——¸¨ÈúÒgÞœ¬¾•Çâ»=Ç7súu'^¬ Ò…uÆ·ñDÖƒ]Ⱥ³AnÖ‰¹´µÃÎy~T (.÷× (ÍôNÇ×“é ¸ÔÓgIªâ< 5fIÚÀ¬éY©©ß"þ?3ö¹l›¯¸µtEãˆ+u2¯3ï{zýè}ûd¶”tÓÛ÷À{=’²3'tÇŽ¸Áߟç+ŠËjš0íŠPÏy«Þ¿}H¨6éú{gPäÕ4ñÄ»o嬻8al—[|[~}ù•¡y%¡Äþ¹Ç{ÈŸõÏ¿ò¼wì…â wý!Ï÷Ï©eø¤|n½êbçûï²…l×ìi»µžÒçmûò41‚§ÄsΜ¿ýºB?”Mo£È CÁìNöûþeÛt7Ÿÿ;yþ^½‡ó\(ý7ú>*¨ñÛjó$7Ÿé¼@ÛOŸ´ßX—‰~=²]ió”ô÷âÍNžûª“Ë¿Õ6>îâ¡ .Þäâ[ñ÷z/„ÈzŸ¯¸xb›]ܱ×à{/´Záâ Oœ»X¾ù®ôלízï€Qþבžêï‚vnuò–­z¼[£íýOµÑûöi½ Zÿ‚ÞËGï6¤µ#hZ‹‚Þ MïÆ§õ–|ÇéýñôwzG|o|Òûà·MVø®ÉŠm}Œø´Ä©âO:E|zŸüÙÆ§u#Î5þÙ–ŸÖh õèÝÞô^tZKâÓš FûлúCŸ·?>­ ǧwÑÓ;ýòÓûí­ñ϶}(>­? ǧ÷×ÓûðøçZþ3«öú~ï·ëô9<_]}üÛ„1®3 Ç»¹8&kßþ÷‘¨ãÜíî£Ì&Ún;ÚßWàæF›í½³ mû³ çÛÿ´›hÿyíhÿÚÖx£€ÑÞ“&ZÆÿÄo×þ¾ŸBèSÊ‹þ>Sºúx·“ï>ˆógtÏK‹‹¤1®N·¦#¥§´cjǸ6ùéäëŽ3mKpCjj2Ú§sÈÅI;½Ì§ØÈváAýš‡Ê˜~ ­/ÙvKö\‹lLû4‹lrúZ›ô¾ÏLû¯,v²ÉéÿÛb_h±ÿÞ&þB)þ“û^KúmÒï•Ò¿e±¯oi›~Mzò1ìÇ-ö°wúA¹ÐÏ ð?ÍÂß÷AOCoAû ¯¡ Pž4(és'ÏÇgt+´zzú òÁ^¥!VhÔ  9Ð|Ø› ¥øû©–“Ç ‡5GõsºuíR kÙÛhÌ=ao£1Pù½úA\\µÝWC}ŸÜEŸ{Æ>Çú=æb=±«a£>/¼¤mLÃGëo1Ÿ­óúÚ˜«Võ³šlŸõq0Å>?ëÖxÈÉgþÕÉ!þFžGõ~¨Åçl¨Úí§ý_µí£É÷˶.*žêÏ7AÑñü„öGÇ·û}¦­0-îœbÏå(KLñùÄçŸOüÿ=qòðœœÒ€:D{¢¢ ”Ô1†›+Jêðúú@UQe Nõz23"ŽÚ‰ö»‚Ó¨}…ý>_ê|ÓסôµÄ›æI¥¥Ûµ/ÕãM=¿ïü¾ïbß·§?à}ÌS?«ªÁ_„φ:ý³Üø«¢º¢y3Øôé•EÅÓKëº@ýôÒjæ¡Ûª™§®†.0ìõ3Š„‹±Çä%PŽÄþªóhþíFQ€þqCqó”ÕÀ¯¨¾ÞšYm¹×Tѽ½ÌS]Óð ¿êêþ þ2ØÙn1ó·›Á¾ŸÝ%»ñ[i/Éý2F{(ê…æ×{Ÿøì#ùmºßÉ7]ÈYXúÁÕø3Sò[ù€“¯ìÉÛÜScøe ?ú]&¿üÆ6UÅçHɯÛg.Þí状6š5Þõ’Ÿ~>øÅØø•I~¹ðË…ßÔ'ûÝȤçÜœ-RXúÓÏh—›%¿ôinžþÂÌÖ3ãÍ‘ü†Âoè)ün“ürá—û}=îüFÁoü,~¤»˜>È/¿ ü =©‹%¿°ëÍ/Ѷ&Ööwrò»4ÎdÃöÓÿÏŸÚy-ÆßZÖö~D#ÞFf<;¨oîWØ*éÿÇx™ñL–¾mQØKìd?£omn«Âk£õÐûuÐó¥vR,ñzƱÝSNŽg·Ñ|bÌxéó†oøÕç‡Îz4tÖkаþäkõ~ñEXo™Ü‹“à¬h˜>Í`½#†FXr27Âú“£"ìÒ8aý qêÛÞx-FØÚHý;[ì],ÜÕÂÝ,|Ö‚½EûÑ»Ìåˆ1ìÐ7IRý¢P¿~Rýèn¾ ©}¢Ð>£¥úF¡¾“ðÉ V´u7©¾úoÉnVNí!åOótîiÊCó.C*Ï}øôIå¡5X—Ÿ#åyÒRž ølZêŒÄßa‰Æg¨»›'^ª—w¯Å~ØÂÇ-¬ bÛöÄŠÒ%‚óFºyŒ¨ 8_âlpÄàI—ƒ§J<\(ñ=à‰›Àå7‹òÜ­×÷Š¿?–oŽÒùM|ªcùC¾ ¼ùóX^éÐùSpúÑX~Qÿ ž;͈ïÖ&û|‰À $î^$±¼Xâ+ÁK$ ^&1­5Ü(q%x¥Ä³ÀMß^%ñ½à5?^+ñSàuÿÜ,ñ¶ôj ï.ÆË‡ÒÁÍèïü8G¤¿¿°±×v5íÇ)úÇ+ú'*Ú&^’éï†}ÔŸ‰à„>^"Ê“ n/œ îv™ƒOœ ^î%x,¸ü…à"›üY²™-ìé-ÆKÜz­#2^RüëüYo)8œƒ?!˜Î%1ãü‘þOd/pðy‚_Ïô9xÏÿnºÂ¡­SOü ¸÷0_$Æ_+xm¶ƒÿYÄ?•†úZwè Ÿ(¸xñ`wŠô}ÀÈ_¤O'g:xPðpøk‘~xI®ƒ7 .gŒpðgÄü¨9¹ýÂÌö›mc¯½Þ´Ïµ±'L1íwÆèØw?çï‰üî¡üüfyo«å¦ÿÕ½nAÿsÑÿ»ÁÉ¥»Ù>°·ÔüþØ^ð \ûžå¼B´ç×ïEô‡°Çâ+úT©=âÁM°_%ì*¸ròá 8ÌOOG .o“Úóð‰g‚·H|+x§t<^KöÀ›$ûjð²ÿRøÝâ|ðx òWDþ/K¤ò¾ nøÈœ¯{ÈÞ¨ð/ŒïÿàÚÅ ?¯³£ê³Páˆöpƒ TøÏÄù6ì½[á>1¾’Á1(Ï}Âÿ ð©üÃÁû% n‘x8íS'ï*ÊWLñ^PøÇ¢«ˆCJä÷˜ 8÷%…%ìwÁnü³œò{Qá“Eýž¯•쯂[¥ü·ƒ“·*|·ðß >"€É×àM“Ìã{jè2ÓÞ|ìC…ÿ*VGÇÕrüHZæäsÄñ£üOHñ3Á³÷)‘ë…ö$£>ÿÇÞ¿HvWõâhƒaºzϱxI·L&ûUµw…dHwuU2d^ÌL’*ÕÝUÝ5ÓÝÕ©ªžG†@ðpÎEE*jШQQ‘=\AÌá "F Ï ‚ õ®ÏZëûØÕ5 èïþsï%ÌL­ª½¿Ïõ]ïµ¾xÿKnw™ä ¼AÛÿ"ÁÈG8¯ð¿ŒÜóûãhŸ§0§ð FδÂÏ"ù k ï%¹ WøJ‚òègàÏŽÁ_ƒ¿:_²æàèoÍ£g—=xàç¬9z8$øOÛ]úÓ@Æó_C¿_£¿7Á}êîÒ;ëèE:F/îùñ=¥ýJ/~„ž×ß[ þZos óñä«ß$øÞó$øµüÇßíÁAðë=øo~“žà7{ðW ~›?–õõp7ë3˜Ï“ ¾Ëûý™¿Åƒ/'ø9/¼ÒŸž>Niþ·éü_@ÏÜ¿»ô4m¿ñMÏw—Ž*|#ÁkG ·ÐÁ{>…ñü楜³ˆõ:Gð¾”ãX'àß»´ôôK~=Á÷xãý1‚?àÁo#øÝüN‚ï÷à÷ü€ÿ‚ôàû~ȃ?AðG=øÓßëÁKðû<øK¿Óƒÿ‰àyð¿ü1Þõ¢¼‡à÷zð“žýtwé‰ê/z&Á븻t©ÇϮ۟[Bô3ìOHÏßùÐ¥lÂúí'øÞ‡=h>‘äyÅ÷üðã÷”®Vï—?U|ÿÖOßÂUÅ÷¯«í)ý¿¼÷{¿ü—Å÷II,¼Ÿ®ì)ý®ÂKø½÷x–‡±=‚_ßsüg@ð[zn½n'ø.þÏßíÁo ømüCïæžR¢øøÓ˜ßgÜøÞß¿kó7üþ[_B°±÷ü.ÁŸ%øOþßè»÷”¾¬ð'~ú›öXù öÓ7ÿ÷=Ö~ú×O‘<4ØÏŸHýý#Á—CѸgA^$ÂuÍv•þøq¸÷í±S—üÑ—‹þ‹ßŸFð»Õ¿ûD:¯—\~Ç¥,Ÿ ½ë^ëÏ”óyþ(á+wñ|ÑÞÍ¿öˆ{•àËNÍ”ž­¿Ÿ%øª—Ì”Ê ¿ŽàwÒøþNá!øîîfàŸò‚Žðίü„oÜÍí¡ÿß"ø¾·–XÞÀó"øm_ J?¨ð¿¯<ÃúàÏ|Ý¥Ó¥øþ<Á÷“~ó|ý}ŠË/^?Sú¨Â{~úËÝ|žBðÖ?–J¿£ý— ~“Î÷™ôû>‚ß¼\*ýÔcäý‚ïüÎ]¼ß€¯'xý#3,¿òzч뎔Jß®í­|³øOŸ¤ï÷ ~ý3¼€ïÀ‹‡Ýx^Gðƒo»´tîÏÝøý†öWãù_%ømß»§ô¬KþÁW½sºômï FçŸìøËßÿwÓ,þW‚/ùÇi޼û[h<Þ|ŸC0êÁvê.‚ß÷±ó´÷.‚K?5ÍñŽ€ý[ŠøôqÀÏ*±=¿ÿÁŸmîfû0à&øš J?bæO½æÙÓ¥ŸWø²§A?š)eæüüѻš†ßŸCðž—¹ýŽ ~ =ŸëóWœþ§=¥{®®ÁÞäö÷8ö¥Ò“õý[žVÿ:Áï;µ§ô“úû«1ž'MÛñ¾–àýÓ®Ò¦âû þÊï”Jßs©Àw=Íá7öóçFÎåwéû÷âyï<üinýñû_|×C»ìùùÛ§I¼È»ÿ¾ò4wþ1ß]´ñ¢óX5ëG𽺫ô$ÅÏg¼åáÏwüÆ_‘óß_HðGWb{àÁ{~¦Tú€ÂG F­”cÚÿ Á»cûó™þ|òsAiUáÿBð]Oÿ à"ø«;|ýq ê?¥+~'ÁÈAVø·F–»u~ÿ›às$ï4ç‹àË>µ»ôô’ÀCðÞë~=Î+ý¼ŒàË~SìKø½Bð»ÿ-(½UŸ¯ãùï.}ÎàÃgyû³Að9:߯Ñßo'øÖ·;úýCcý½ƒ`ÔŽù!ÿ¯üY:ÏúþÿÄóß°=ðC?ýœ£GÙÍöÀ_%xOg†í»€Ÿð jïçK¥H÷ãÛþÐz©ô8Ýï9‚ï-ífû$úžû‘;O5¼Oü 5ó'øÎÁ®Ò§>ü Çß„öÏ–J¯Qþ´Fðg¶§K¿®ý >ñøÝlÆïw>ü}÷ß¿—à¯Òxþ‹Â?Œñ}rWé1:ÿŸ"øž?áø#Àï øàùRéûµ½_&ø(ñÓ;ôýß ¹ð7kÿFðÝñn~ð§ ¾êƒ3¥—hûÿ@ð7¦Kem1¶«:¥Ò¯¬í݆çk3lÆü*‚úåÝ,`>ÿõ™bðᇠ¾ëi%Ëÿ~ò™Eúó~‚g¿Iü·øýwñ~÷ñv¼ÿ›à¯¿ùœžŸO\&yþIÚß§ž û‘£ŸÃün›)ݤí}ýÝ:ÃòàKžEÏ¿šýE,ß<Û›a{ ãÁ÷>¿Tê)ü ‚ï:9c×sÁüS©”éù¸†àÏÒø|y-Á÷ü}‰åÀG¾ówY~p#ÁWýÄ4û‡/ü¶¥™Ò¥:þÓ_öòÇëúÏL0žØß…çï|–Ôäy³þþFô÷¿‚Ò–þþ‚¯ûû€ñéÁwÞméÑÿ ø¡h¦t¹Â¿Oð+~Qø)žÿijœüø!‚?ó‚ ô9Õþ‘àkîqüä2¢+oþR©ôŠOßBð‰¾˜óñl‚xM©t‹Â)ÁWÝ4Ãú8¯ÁçÞ%ñz€_JpøOÓ¥WyåÔ³%þëRÝÿÞŸ™)ݬôýU¿åÝ¥[•¿~?ÁŸõÎÃOüúûK–^¿‡à·=}†õ)Àx¶Äß_¢óù=‚G”þQÛÿ8ú›;ߟ@o˜¶óù,ÁO ó(üØçñûŸù((=Cÿ6‚ï}=ÉkzÞf ¾¿”~YÇ÷‚¯ñÎÏ!‚úÎRé×t<' ¾Õ“·Z£~Ë›t½^MðÞü¿à­/¥¾¡×?üžÝöüþ*Áoöäùß!ø9´F>ú‚_ãÑãOü±¿,•¾E×ûo >Aø’éó_"ø(é£ÏÔõú7‚÷¬ï)ýµþ~)ɹO¸ÇÑ·oz.ôŸ™Ò÷)°ûýGßû¼’Õ§þŒà×L‘¼¢ûù)‚ß»”žcäa‚ïùv§=–͹Ÿ™.ݯãÛMð$˜õ»ŒàôD`éÇ·|Y<ÃñËÌï ~·ß׌ÚНÒóòr‚ïý¯—”ž­Ïç·õÓïÿö"¾ÞMðHþýCO~g5(íÖõü-‚/9ìôùûÆÞÿ ‚?ûÊiK?ÿŠà=×—,¿ý<æCòÚ1ÅçÄûšý ž75õÔÅÝ_ç/{ìMîü<‹à÷¾‹è•þž=þxGÿ÷üC%¶Wá÷&Á_Ù¿Ûž—ÃÏsóÇó/!øá¯LÛóÐ%øÞ#»­<¸ý}þàOìQú÷¸©[¾æ×fJ¨ýŸ“øá#†ÿ|§'~ßì»Y¾eúß={Ùÿ øÍ×î¶ôù£sˆ¬¾ù—Ó‹Ä_Žù~‘à£?7]úýý1ßQÄ·o&øÁŸ¤ýÚ%퇿ÖÛŸ«¾Ã­7Þ¿žàpzÆÎÿ8Á—èy{âcg¦n%øÒŒü{†àk.ÝmÏï«.+Yùéõ¿“ækôá·~‡ËWÃ~þú#}Ùœ·û Î’|®ðƒ?çW}ÿ,Á{8}⫯Mï¶ö‡'QC¨Ùºëÿ³ •ž{¾Ä/ߨøüÞ_)Y|Z|~qýÚ_öîÝ¥tÿO?ßå·aüÿà/þkÀñÈøýG~óÌté =$xïcHÿSùïý£fÕwhÿ!øµ¯(•þ@Ç÷ñç;û~ÿ$Ú;èèá§ ¾æ™%kø[‚Wn›¶òÞ— ~÷IÇŸ¿~¸ÿnѧÑ~°·8¿gŒÚ¶WjÿñÞâù¼ Ï“þ|Ták =s¦´¢òÝKñ>µ_Ñ÷—¾ó£W›{<‚ç_‰öOOÛóøß~½‡?Nð?5]úQ]ï·¡½Ý3¥_ÖçßCð5¯ÜU*üßãÉ# õà.3ø´×é€ÿ‚`Ô3ö˜¿'øI¿ZÒý|ìÔã.wò~"ÁFc{á×_R:÷*Ï|ÕSw—júü!‚_ûKŸ xàç|b¦ôqÿ«./ÚŸ^G0jüšõý±Ë‹ûó.‚_ÿåiŽ7Áï¿Nðˆä%æ§%yôr$¨;þÿaŒÿ|©ô‡Úߟ|ßhºô­†^â÷Ç;zý7¿ùsÓ¥?Óç¿D0jã½\å§ï£ùüÚtéOý…àWü“œOÆ—}ný±ßW|òUÓ¥W™ó´Ïé§xþÁù÷N[þ|Œà»9ý¥µÏɬßü¾»¾qÁ÷~‡ÄcãýW|âxPú„Â?@pù©/ øÇ >øñéÒ’Îï§÷!vÆþþ«ß· ò%­çoáýg8ûÞï|ëÏ_Zz›Òç¿Äx=}æ1 l_ ó¨íO<òøõ3®|#ßÍüT¢OU|á¨Jòœöw˜àõ÷N—¾EŸ)Á¯øí—ÊÏ+Ÿ|GPzé3ÞºÂéÀÿ³Ïoï²ö¼W¢ï|}÷°ÿ¸ñÝEð[Hÿûn}þí?xKPú¿ ÿ&Á·rôçw~Ûë¦K7*ü‚ï9Mú°Ú'>~ü‹Ó¥Oêù}`Ô™ü¨ò³):ˆý—éÒ»ôý'‡.úI¤ä=`Ô÷3ë9îÛ/eùŒýI£öwMÛI(ùD§ðrˆ|7ß;~Ék¿bÎÁ¨hô¥%xñï§KŸQø§._³»´_Çûΰ(ü*Á—=ÆñÇ÷‡Ezù¿~УBð5?°«ô£®Á_üå™ÒÃ:Þ/„Î~ˆöþ óùЕ—7µ‚¢Ú#ðû7|ôžéÒ_ëø¾à­#Οõíßu·;o{ñþO^R: ýß@ðìÿ,•¾[ñ«C0ê%ýä Á>ÍÉC¯"øµwM—~Qá×FNŸ@û?9yãý‚¿òöiöGâù_‰ŠòÒÿ øM>ÞGð½·ï²ûù‡?übâ·:¾?Å|è<· ÿ#xäù—¾HðÝÓŽ~ÿ3Áyó ˆ1?øf’7.‘ñ=“àwqô&&øÞì*½@é[àç\¶»ôaß"ÁoœÙmù×Áù9¥ÒqmÿV‚/»¶Tú-ýýv´×“øÌïußåñ§Ÿ ø«opööŸA§ö”®7çàkæJLoà;‡»Jÿ¤íÿA\´ïþ ~'ùlvZæó0Þ÷ä«]‰Ó¯Y>J`ïØmí=ßFðÇ|y0A¼ÞŒõ½ˆà;ßS*íVøDRäO§ ~Ë«DC{¯$ø²ý{JÐKñü÷|ëÓ~þ0ÁÆÞ†ç’à»ÃÝ¥×êü~9>?SúŠÂ¿8ùðïüÎïÚcñóScãùg‚Óš³÷=–vïÖté§ôùÝ©ÓïðûS·¿€ŸJðÓ‰ßyô¹)î„¶üpÁï¾Ïé×/$øµÓN>}Á‹Ÿwþ cX˜ÿ³«4«ó¹…`ßþ» ˜ð Ï¯¡ý n¾g.ÿ‚ã?߇ù¼ÕÙ‹$-Ê??‰þ¦¿ëmøý½¥Ò»tü¿Bð=íûž™±òÒRGO0¾ßM‹ëûßJúÒi}þ¯ñ<áï…w‘ xï-οtYEê·~ûl‚,=¹tîßöV$ÓÈO Áw¿µTzžÂW|Ïÿ)•Þ¯ôá(Á÷Í”JŸVøV‚CÏß>ª8}ñ‘à×zþóï#ø£}øY‚o%~¿¡ûó‹g?Æû¿Aðâp¦ôvýýC§ï2>Bðý/»JŸUøßEü¿¬ãù,Á¯ØÜÃùîÌÿªÔÉ“¿að‘à7{çï2‚ï<)ùõxÿ™ßõ½{,¿ŠF]ãPåïcUøe—OÏX~¾Çé%$Ÿêø· ¾æ#»¬ÿçv‚QgܬÇU‹ö„Ÿ øMˆ_êzÿÁ'—,ÿþM‚üVçoþ Á¸7ãVíï ¾ê䌕þ/ÁkŸwö¿ÏW%ûÓ*ßü Áïôä“]ô êûùõ[¾•Æ{Põ©çeEÚ>‚ï?*5èYÅóÏ Jï×õº™à4œ.]fô9¼ÿ®Ýßø6‚Ë¿$øÇñY1~à5hÿÛ%^Ïÿ Á’þe䥟&÷ˆ¼]×ï½YÑ>ü[?P8ˆ× qÿ®ÒÏëz}ð¬³~Š`Ô…6öƒ/gÈW›¶ëýØœ^ÿóRé÷Ux2Áo~ãté.õ?=¿3–Ÿ¤ß}ûté†~ü±ã3ÖÞx=Á%yÃøÇn"øµï™.ý…ÂK¿ï N^”.×ö~"/Ò—÷åˆ J?¤øð¿ ^ÙtéÅ:¿?Ãø<ýéÓ?àÅ?|Žà/v‚Ò}Úþßãý­öç±ýï×Kÿ.%Âó€gÏûV‚Úµ»ôæ¼üÕŸ-Yûæ k^¼Åcg¦^T+Žÿ¥ß|n¦”ëx7ðûŸ_ÊñAØ¿W|M¹Tú'mï5h¯V*ý°±¯âùDôZ¥×ï!øœ'Ï~àwþÙ ×ÀïDðkŸ°»ô;ÆÆóe‚þÖnŸS“{–ÌzÍa.{ñO¡~µ‘Ç;õÍßûÝ»J/ÕöŸ{¥«—ùâJ‚ÛfXÞÁï×üYÒ7M<À1‚ßtË ç±¼NðžAÉÆSuñü®iί¼u¥Ô#ùœöwæJç¿ü_¾äe36^æ®”zW>Aà·à÷›\|Ö/ü•æLé#O|ç=—”~Kñë/1ßS/}èÇwñú~ ó{9?ÕgvÑA¼nz¦ô ¾ÿlLÍ×\!ø«{¤Þó«ý?/$ø·MÛx’ƒxÿww•ʆ~¿@ê5<×Ðo‚ïõö§OpùçKÖ¿ðJ‚/!ø4]¯7¾ ¸ßïxó0þ<ú‰i+¯üÁký¸í{öÏc>Gv—«óýÀžýéï_àü!ÌÏ®B¾RÉêû0„£–½¡Wß|•“/°Ï%ø«÷O;~Fðú§J¥Uc_&ø¾'N[}ê:‚ø—ÀÒç[ >ú¤Ý¥)}9u•ãWøý ñŸÜUúM}þU€ÏîâüdÀÿõªâzý4ÁïóøÍ¯|÷“K¥Wëû xÏ’´¿?º õOf¬ýñ/¯rüð®rþ*¦7çÿTbû à)Z8ÜeøõS ~ß¿ÖÿÜ«ÝùÄy¬_ û¬ø›ðþa‚IžzŠ>3Á[úðSë¥^Ïï(ýx%ÁŸùðîÒ–Îÿ¿]íü‹hïƽQ¯Ó߉à[=ûÉû¯.Ú'?tµ³/þ(ÚÏq€ÀJ𽞾þ¥«¿íýú'þúdíï‰d¿c×ÃüôýE{ô¾ý.íçû¥¾„•· ¾×‹gêü„_rö¥M‚¯yÅti¿Á‚ßò¸éÒa…ï$ø¾Øcíoÿà’·Œ óÁ_ù%g_K~¨7cõáÁå Ó6žªAð+þ-°ñs7ü ÷»ÌyzaQ^%øá'ïæøcô×'ø®×¸x…WüNO~þÞºx6Ào%8%}ëu ¿ýsû󂟰«Äõ›ðûG0Ÿõ=œOÆòÁ{Çté‚þþð|oûÛ:ÿÛK^(õt =»„Žz(ÆÿûŸëÎ0>²”àõ‡œ}øi˜èÝUú.¥ÇÏ%øþþ´Çˆ~ð-ÎrÁ÷¼`7Ó'´wŒà|×té=Šà‡8zÙ&8Üëâ;O]ãôoÀçÑ>ÉoÔóò‚o&úòDýý§þŠ/òv‚¯yV©ô&…‰àwï)•^¦ðo\úƒ™Òß(üû?Ùóý9ÁwÝ”fŸ>sM‘>†Ó[üø yÔ«™¶ô÷?üà—k™#øn~Öç]¼Ú?Dð¿rI鳺¾C‚ˇýåÎyÄ‹6~ûûç]| à»ðþ7“|«øñŽyÐKKw?FÖë}?Ç‹ÿù£yç/fyˆàw~aÚê“ øÐ ã#à&ø ¤/šõÞ½@óû€Ç¿\ü æó<‚Ë¿èøû^ÀÝcŸ!ó=ÿô±GØLð]7?¾4Òùw ~#É ‡µÿ!Á‹ó3¥?R|zÁ÷~Ûté·|Hðe_š±ñº÷,÷ïƒß]ÉÎïŠúë_áýOÎpþ˃øðÚKJ¿­òØ3‰Q…ŸsöÎï ø^’·V_Âz±¿ƒßéÙwNüÎ?vòÆ-èÁéÒ^%xè—9Ï[uçßAûg~ŸgŸ¸ƒà“/wëùººóWã÷D{¾þ ÁŸýçÀÆgý:Á¸“èG¦þS‚/ùÕÝöü?D0î”1òâ?ü1’g®Sø_¾õ®iß÷¸Eø ßù—”~èWÃð“ ^'yûKF?%ø.o|Á÷ÿÑ4ï?~¿fÑÑ[æg‹EÿQ—à¯~ÂÅC¾‚à7~qšóÛX&øÁ?ÛÃö2ØW¿ÑÅÃã÷Ÿ!øšm’Ïtÿß BxfWé_õ÷_Cÿ{œ?âw~EËé§Çï#'ÿ|Šà­¦K³Š/Kð½éŒÝÇ6h¿‰ïî†ãxÿ?5ŠñXßBðÝÞú<—àòÿ¹”å+öWüÀ»f¬}e¾áô1¼ÁIÞ2ñú7üàæžÒ/p¯Q<·7\<-ë§âú½‘à·yãy+Áo¼»dýõ?Cð+þ!(}^á_Fÿß@ò¢ž×÷üôřҟ(ü;¿æ»fJSøcoyñ-4¤žØSt>Õ(ò§‡Åx–¯Œ{œ«ë3Ý,òïo$øg,½+|ëo–JŸWyðr‚oöâÓ¯#ø5œ¿ý(Á‹/sñKËÌïi¼ï­Ï뾋äϽ ¿±YŒ'ü‘¦ó~k³è¯ü9‚¯þ°Øk1Ÿß$ø Ío—Â÷üf’g~Ú¬WöÜ+ÿ<„þ¿Øø°‡›Ž?ózüÙw¹øœÝ×’>r‹³ß<‰`Ü)kÖã¹ßëÅÅãî-C߯Åï¯Üeõ½C—>éä¡¥k¾•_ßIß1üù Áåˉߨ}æ; ¾äú ôÝŸï¿ÖÙOÿ(Á{N”¬<õ‹×ºøM–ǯuò7ãÁ·zûóY‚Gžýà’ëPÉÉKßH𛃛Ïò,‚_ÿ_gJ_Öó]½ÎÅ»¢¿« þê¦-¿^¡ôÖç&‚¯#úeä÷Û®C|”Óg^çÞùOß‚öÏp½O<ÿÓ×¹zÇOšºdê”ðÛл÷^çâ0ž|ç·:y᣿ÓÓŸÿšà÷½kºtŸþþO?üìikïú†ô>ÉgÆžü™Ÿ¶ñß—(Æ}ëïÀôàý²ãùOøà„÷o"wÿ¨ÊC½n¾ OßIðwþ‹×Œ{›kº?†ölº´¨ãÿYÞÿ3éOÆrÀéÇ€ÿÁ¸ó÷t<ˆþvüùÏ ß™ä+Å¿OüúH=^ŸMM]ña±?³<ô"ŒÇáÓó_T”¿ê/‚csœà‡<{àOü’oÐßï!øϾú®9{9Æók?ø§¿~Œà‡?MôGÇ÷ ‚~yWé?ë~| óyŠ‹Oý´çé;»~jêØg¤Ú{ÊõNßAÏ ø£_ž¶òÚó6ñTlÏ&ø¡ÿ3Íõvð{íú¢½û…Ÿ£óaä‘ë¯/ò»Öõ.?×ûz§ñù¼ÞÑk–·~ŽýÏßë­×w]ïì‰hïM¿æ™Ó\O¿¿íú¢ý÷W0ÞÇL—þEéÓo¢=ß_øçHŸÓ÷ï'xméÛúû—¼õùGRðU‡¥¾î—µ½ë^¹ÚîçK;{;Û«ã'Îa<ïwüôuP Õ„ñ|?ú›’ú,|ÉûÆžônŒïU»JÏQúô? ¾Õ£O@ð»?P*-˜|*‚ßö"'ßýÁo¹c¦ô°®ï¿vñ,?¡õø±=¥wòóß0õ¬#.žã+ žõòWkGœ~‹ßç ¾÷ã»ìþ4ý9/&øMOw Áwýœ—ovÄÅoã÷ ‚oýe·^w)ê‹ÿ툋d|#ø¡¡‹÷ùïìÈãUÿ!~Að5›æz:ÌO ¾î‹‡þðwÿÁ§.zóù“]¥?Óß¿p¤¯üe‚ÿuWéqºÿFð}Çw—:/×õ<êü‰@ð½«.ží9_Gúø›4Þ«Jð%âüwõ£ OVz÷ø©“G¿¿wNßåôù ‚šìþüç£E}ÿ»J½aùCèŸø“á?NðÉoß]ú¬êÓ÷-úg~í(ê¥Ñçû¨Ë_|ßQgbzÔÅ¿þ«£.¾ð—:úÍôÿÅ.¾•ýWŸx`¦ôýýÛþ éÇïQx–à;¿G껳|öbç| >uö˜c¿âÆ®„ß»¿Ó£‚ïþÈŒÕÏ_‰ö?¸‡ó“€oÄø¼ç”à×’|ûßôù·£½ÍéÒótþï!xíÃ3¥·(üA‚ßë½ÿû/vùOØŸ?#øæ;J6ëKßûû»J©òyù–Çs= Ìç©ßz@ê#óù$xÅkÿÚcÎ>ÄöL‚ßçý¾DðS¹ü¯W|óÑ’]ßWC¾Ÿ“ïß@ð‡<}ô‡ Æ]ÒŸÑýüc.”é7Á{ß>míïÿ‹à;osñÆ÷sñE€?G𽿽‹ëÑ1=?&÷ ÖùÇ¿ðSŽ;ýûsùq©nôëêqÏLüó‚_OüÚØO^Dð­ž¡uÜÙÛ9~‡àð›¤>žßÄóž¿þNôOòÄß\%¿¿à×tf¸>ó;0æó»¬þÿ‹ŸôÖÿwÐÞé=¥wúMð}?1móŸþð»K¥ßVøÓ§ž<þùãÅüȯ|Ý‹œ¾?E»ó“Îþ|ÁoþÛ@ê#_Îß:mó›c‚_áÉÿ/$øÁ¿sòÖ1,”'vð<éóߨ¿ ¾×›ß« ¾ëó.~òõß÷Â×CC<îŒ{ŸM>ÅÏ|O;°üáW~øå¯7Ë—hÿÕ—Xyø#鋯Þö ‚/óìáþ=ùè_OóïöâðÎté J¿¿ °—ÿ÷Ü\|2~þ Î x?Á÷¬O—Ò߯'8ý°ÔÄû]‚ðé Á_Y$ýGÏËkn(ÚO^C1_çû~¯ç/ü9‚qŸµ™Ï{.vùMï'ØÄŸþ=‚_ñvÇOþèÇ/ò—þ>}ƒÔk“Ê_"ø3/ž)ÅŠ¿ÿzâ{¦K¥ïO߈úÓ¥Çê|žp#ôí ôaÕ§²‹þ™ý7b|®>ÉKþ€·>]‚Óœ¶òã€àŸU²õ.Üèü­¼~7ºxuæÿ7:{6ó·‹þÌ».yøýK?ìå ¼Ÿà›·å¾^¿‹öÍ?Âü¶wYþòÁŸ!|Ýcôk‚?ô$§_}îF/ø’›üó33õÄ›\}–./ÙóÝäì³€nrþ ÀnrùàLß ~ó'§¹>~¿™`Ü“nøÝÆM.žðÙ›œüÅò;Á÷Ñú\¦ëóº›\~:~3Á³_ ¸^,Ó3‚GÏuñï'ø^/Þÿ÷ΟJò–®Ïý7éõßaþÞþÿ Á÷{ú}C†þ¯LžqÒÕk@{—ŸtñI,/”;ßüyãIWŸpíÍ9}wí¤Ë'|ÁOýÕÝ¥\ã©¿—à÷}ÄÙÛß~ÒÅOa½ß}²H?Lðsžèöÿ£'‹çëã']=ÀЇû¿0Íõëñüÿ=éâÿÁú¦’]ßǼ¤h^"÷§yò›¾Æ‹÷(|ïï8~uÁoþ]'O½† ëg¬~z=Þÿ-'¿#øNÏ>p’à“•[Ogƒàzúùë_R”7Þò”Çvûû /Aý gOøu‚z\ÉÚ×~›àüº™Òõ¼ßÿ—/Îô‰àð—¦­¿ûá—¸ø(üþ‚?äçÒ—ó‹¾ù¥E}åÛ.{ñ¼Ï{©ËŸáóGðWèü˜øèüQo>_Z´WÜ@ð[ÍõkÿO‚ïþGçŸÿý—ºzR€ÿ¿¿dÆÆ³<ôRœGÿí¥EûÓ%/£õýXÉæ³~3Á~[ÉÚsŸó2ǯÙHðÓÏXùñj‚ïôìe/öîÐÃy¾õeî><ößüœWî)}Ríç߃ç?ìð÷g¾&/•¾Ëø»~ý‰ ´8£ó}™³p<Îr{}½µºÑßl GíÁhjy0޶»Ý}ËS­VýÄ‘c­ƒŽŸhµZ,@ëZÍcó‡­…ƵóW/ªÛß·ö…SËý­õΨ³²/¢Wú­ÕõþR{½Å7y¶ÚÛç¦øžÏÖÊöÆÆyÓ[ãð¢ëÌÒ‘ÐùìZ]¶­Ïo ;íÁòÚ¾.=qÉßú.Öñ}ñIó%?ÈÃà«Wi†´“í>­ô·:g:´ÃÑ ·Bë{fJ‡ÌÏRÜáp_’Nu{›´vƒÎp{}´/©L­ôVø6Õî^Ý—Tý§kŧÓpìé4òžNÇÚN+þùØ5ïÇJ\ü±’ø?VÇ~̼«!M”6q›jéü¨3ä=&”0›¼˜§‹¥;3êµåßvþ]ïŸ]§â!tÎÊzlo´‡§§†í3„Òí%P‘}YÎ#l ;DãòÚÔVoe_-œ­ôûjZk­,¡Z´^Wv©½Þ[ÝÜ7”†Ú4.šíhMÇGÇNÎi ¹®Š2™—nnk£½µEf¿lµ–·Fýîò (ø¨ßÛw0²Ÿbû)±ŸRû©b?UÝ»î•Ü|êà0¶ŽWˆ m´ÏѾNÅ?-ô~f´²¾.½šÏ±÷9qŸ¥!Ö×W° ȼ.@ìòÜúƶö!Ÿbû)1ŸäÁí•Þ™þÊJ/…îµ×§xU7˜.µÖúýÓ Ý@Šâ´M¼=Þ7[-Æ€µN{‹Þ§“H[¶Ùžâ¿…k¬u–O·ˆ<õú›DÀ‡hòlK»â§¶‡Da _âQJˆfTÙ!)8 xKiæÆö¦¶FÚ 3%Q¤ØÜé=®´Í°E’r§BP Gð0:ç¶:Ë¢\š­ÍþdˆÊÖÒöòé)5,‰µÎt½.i™+ëFZý¥S–Ðû­îÊToØZ¡øIn}¥@ò©öY‘E'ZZy—¦@ø#öŸ•O¬¬ÇIÐïˆT¹Ò7ä¯t–¶W[K$ÕÑÉr»DÕˆnu6—exîyû £¿î¬Ÿð¾§]ëôô:9³²EÔiÔÚìCå8;\¡“N;ÂÊ©J›D\ J1ÅâÙ^ô7‰Ð±šBµw¦Ír‚ ÷ÅpÊ}¶¤rµ~ØÙ )÷^ÒÞ_Ù^'Ò¿²4jHœ©µJ˜)<%©|rY9’ïä=(UÄÇzë#ÂmÊÂL² ¦ïY¬î h"̬96¶Fç‰p6…ÜÛ~xøõ)9Ú6 qÁƒë=ÚmVä§Þ&$kêAÎr AcV+tb²§=ãUÖéõVÎé*›ö„ 4pš_k¸F”fÊ@kíÍ•õŽÿ;0OËà Gh† ¬ 4Ô%^Üå>x:ØÔ1M¥ðÚæö†hÔü5³†ÖèüV§u°Þª9xpþDcÒ/'^rtÒ÷‡Žnœ˜?ö’ ?¾áPãØú„_N84±­Æñãó×6ŽOøéèüÑÆ±I}ÌOli~qñ56©ëÆÁÆÑëhÐûŸ?~ñơÆá~=°Hßh¨ÏŸ8päðØtÖ =º¼öø¤Û‹¬­L‘̾…¯è(³;E(¶ÚŒ&rEOiÐ¥øÍhiÝ}CTªðÁø½³É¨OBâ`䀩MRZ¦Nm“îÀB¡ŽqØÂWC:B€"…b†b…†’¶‚©€K VLª  Bi—dÁ•Ö™®Ò)µ‹l³5B¾#yO3ºµÎ:©‘Ò€ÿEÿŒˆSKëíÍÓéÛ;ƒ~G5V°º³°:=%Eÿ°¼ÖëòÇÞ&þ&êÛ_Q»J{ýlM'—‰pgs<¡Ï@†|N±©ajt»Ê‚Ì©ˆŸ¨&G$\~î¨""íë£Û[&f8ŸÛ#hUØò©>qÆÑí–TŽn‡’®4§'4çTP‹?ýB4–‰q“pA>ÑÚ·Z?%˜nG·3ƒ‹ñ€’ä$ŸIèÀg°f‘¬ÁÒ¸P> ÏoPŠß±_ȶó"™êL»·ÎrîrjËm$¥è§³Ë"¡z4êŒÖhê4s¦¢$ƒAÔ„¡c‹äbüõZ{¸Ö¨2»Þ_m¾À¹XïmôLKS›t´†[ÌIFò8'øw(¿N™9ž%¥ š^{pâ"áö±E*ö–¶™Æ¾¹Ô ù¸ pÄ6¶6I•Ú†² ƒÎh{°9Õ§Á€­bb¦6¬âÔ›ù°µlæKŸ`}#ÑkÐ'æÔR^Fâý꾯>ÞJ‹Š¥q²È¦ôÞ9Âpy1@í1$Ú‡¥¾0†º£Ó¤=¬ž"²rèÀᇼ´ÑºqþØù…ƒD[‡£­å­óSí¥a¿K-TìÙÊX$Þ¶Iaäs:5î7%$ðÄKZGŽÙ ê² ÃúË SÞ7^YÔb‹ªˆ½UݼV«7Ülo‚hm‰½ÉÊÓÛ[¤1m,± IKÁ²lΊ(ôb—QÙâÃ/¾áÀ±¯"­5µTQqƘŽÚçI«_±2 7æà™ ZÎ^`Ïï ‡œ¨7ô/CÎh2xý­¯ ·`’‡OÇ  f°æÁ#ó'Z‡æON^Ûm6›á%35z6õ%†³*Mžmo‰¡@Ħ 0»µ¶GÝÜ –ª^ ´f€Áäd§ê(—™µéÝÛOÑy«4‹.- З¾T¤ÂðT m©k423âtI… Ø!å€Ï+uÙ;³ÒKø9LÚÆ0>ÀRZ´Ø òu®=¢3¨* FB'˜èñfµE»…¿6¶×[›­%’”–é¢LŸçÌk¶Ø`s†±Ú[œÝ£ŠIõ©Œ¿£þJËc+`/­­^oessä ‘-8¼ùªŠgêèü Ç -[ó­æ±¦µ}˜ÙZŒô‘@ J«ASõˆš05Ÿ[Îk'‡o$5”'ñmì8¶@0"ÐØC„’'Žð ¦}ÜTAŸiûƒQ›Ô¿µ³Ðà¦Ð1VŠŽqÁjÊôès@õMÅ`ÖM lBöêm5kaë`ãpëı‡ZykJì­K²òX+Î2á-LEõËÜÕlÉ5Î;LÞ6(`‚Ý'V~0ÞqýJ©hkxº·e7’¥íŸŽmÐ6˜œ³z¨ÈÒe·ŸÒÉþÜJoµ7Çm§êscb&¡ ZÛÐØYo—{=â8Ñ­ÞpY;Ü^jÞ]n,‘SR‹¥ÝÉ$V°§6:t·¹B<îÓm>h‚é vÜ:x_ UVJÂf;@ÅüOâíêíì{²-Í„Ãɾm¢…#Gƒ„Šf~0¯óHˆÚ€qL¢qËÃØŸöh™ ˆLh©ª{ë,kBP^…,·–yÀj8Ͳ7×ιÎò¶æ|ÄSþràøKÇŽËk?:_o\{ìÈ `z¤ËoÐàr`{7ζ»ÖñH{:q Þ€ qü%‡Ž7æÕ¯#iñ†ƒ Ë¥sßÙ0E;éÛ£†[XyáéfPjßdeÚ, nø Ÿ2 “êzü\t¤–aâ´ 0ÐÙ®wXÓdV<ÖîòæHøI›O¬1TŠe·snË0r=V`㬛H«;"áN‰™ZU¡eݵhŽ˜Ø¤=“üH´Ãõux$ x·±JLNÝ¥E쟘Óf_&Ê%óßUÌ1Pþ7-K'iy ̈_^>»b_ûêNˆ„ƒ%èo®Ÿß!íN 6Vz4ñu£m©˜Ø1FÀÅÔûÔVËÚÖ[0îٌϤˆ³Ôi{åÔ64ÝåþúöƦƱ!°ª'q¡V§õ˜§ÎÀ u댕WņÑJàBKÉÅà¶² @, NCr¥±Æ·D ð×CXO‹Ï(dUüH§)2ˆ.S'ö‰‘ëðüaKë”@¦ã!´Ò8^6k¶tàM´\Üö‘C SNàÖ½4:‹Ð(¿rpñL¶ ù²EÜrFæŸ+ëšB3®‡(#5áŸÂÔî®&_ýÌð,5£Û¹Š﨩ɛ‡hY?Ôy’YOî ûëg|û¶Q6:ë]9C0,¶…Tˆ 3àă)™-ÎƵ³]KM8H”)\4îe °›ýíÆ{pø†C­>ux±qÂŒÒ r©V“dŒ :|SΜF„žå¸žäེ}Ê„ ð_ôÑà¼Pèq‡žÕÛêAê\d ãªâœ’ é¶-"ìf‚4;Ê4š†ž>éŒÝØŽÑúQ¤·,»îI¤c.ÃÖrQÙ_ëŸ%鼨‡¤UúÖ=òZ›Ä²Ê*×aB÷Ö‘c®= (l~WfÕ²îáAç¶m8óõ2ÊöíÀ8¸« ïµCTCþÅÕ'#y©ÿX ±*Ú`=­Dr#‹Œž™T±evW¶J®}ˆÇPÜ%(›Èè)åýÅXÐ)/úRŒCkªBƒjI­“z}fÌÂÒ9M|ÖNTµdÉô!¾ ¢“¹þHKy ]m®ó !>šê²˜&ñ²yÆX¤²­3è ÆÜfvÎjç™údÅ1:„D Ù¨½êIF.‹¶2Û àòXBĺqo›T^R=ÌcDèöHël3â¡÷&‰“±6Ø„ˆ©ã4еS3 ‹†Û¶¬DHÐÌ`­l‰‚0An!“ƒ-jb…óÊxÏö–ú·[§k¤kÖý™3¶§Fb7òè¤UhÅ^J;§µUåB†±¨­6«?µ{C±­ u)[½Ñ¶j{}¦@$ÉBkÖ_Œ»…½-NÊ8pøÀ£hÄTóÐ0C8Ï.mÇzŒQEÃT6N«JJS_eá0bƒ¦”‰;Ô‚w«Õxññ1c‹á™¾œ°¨MÄ š=Ð GÕ*#­y`88Õ:r´qØis:^#‰È.tyu_)6:qÑòNô©à]»¶qø"Y½~ä!¿8ê¬çÈy'©ƒÉ£õóÂÛ:,Ôw{çx Æßí p>‡§D ×A\Ꮉ >ó®Ñ·V&6ÅHµ%Afà ‘Ö²Ñž›ð\RJV;¯g,´]Ù}hUÃU²oÜùŒ|—´2¹ÞP•¡–gf¶Þ Ë‘M|'–Z, €¼Cã‹X'~'¶¥Öñ˜µãÅ'|Ș8ôuÂV€R¥S›5Ì$n¨W–6Ös§™Ùe÷V«}Æ%=ð`ÄZI¿=Ι\¦ÔÄ?sÇMHXûÙeDU­Ú ïg0+¦Ëkȸàp£%jÂ7\Ö›³{Õ“¼LTg•DâÓ6 nªàs™0$/µÁŠõ)l™Fì3' žtq>OTÖŒ5Èy­»MÓŒHnsŽw’eL|^<•—åçÔE/Ø¡0æ.‡<¹ÜÜÞ0ù-ó­æM‡½@&œhÈd¥ßòATÏ ò¨MLbñ™–Ä»#ÆáÁ ³~!‹Å”:íçÚNôGà LSgm`&D•ÕÈp¢Xx´„¨dÎ!SC85JÌ;]‹Ž(Þ!Ø*õˆáÛÑD¼¬+;3£Ú¹¼"†²,¬lŠíåf³5¢eÃ2ÄÈ9´œö ©R„xFõ³?rðƆÐÿ²–tãva!*C#˜j»ð¬o­a%,_+jV¬¥¶DSdBñÜöØ£Êá8Ô“Nz£§ˆç/>T¢Ä} Æ²©»~Ý1¶tûÑ„;½è‚¶Ð ×`=ë/4l¯6,åùòƒ{§\¼‡ÏŠÁ:` dlÝ\7Æ×Öò]Ø„ÜDÑÙßÀÒ -B‚!!cÁÉ Aj­— 6”%7¥âŒ vP·³{oÐWiÈ(Ï(î˜ïEÁÁ=næÔ_:e­*xÎçö² »ÃªÍ#ŒÒsgšü–°/Æ%4ôИö»ÚêF- ד“G‚ì@x>q·LÙ”êÅ;lýFèx0cÇ—Þ€OhjGZîo‡õ\ì׬IB²X­ÑÀÊ•SÎmæ‡ÏîpH_\ûusM]ôûÁ›WFU[h+mb¯2¦ 'ƒQñÓx"`Swy‰EM´Ñ+“­ßÆ%'FðåѰµl |ý©b†aÁ•`TpIä×ê"2˜€peP„Y°ÖJš't[m“bÛDÚvêªbˆ²JÙ~{zÄÌ õQί´E¨Óø%Ú.b‰FÁΉuð†dBÎD€tþfœV˜=ŸzšÏvÚ§§TN?ël,9]{ÛÆp¬°˜ ¹£7Tç  F¢°Á3žg›¨&¤À$Øò.MÄ1e2£(ÆføÄ䞘»‹•t4¢®¸`¬]xlj#ÜÔ8¦¦öцx—L˜ÏºukÈ¿^¨›&òwG?pR%Qw˜§4 „ä…³íõÓ¾V)–>%×]>È6Wã• gM——YèÀy-êã¹@‡ë‡Ž.H—ˆÈuCb¦žñ³†0ˆÆ·ÎÑf…-ý·j±Ÿq/tí¢ÁQ…fÙÐØB/è¿eøˆx‡U×÷¥ ´Ò£µ°ZnâÄp€o÷‡Ëœ*ØM ¤ÀÐäÊloMS.Áé8¥îZ›qï{%• ZC²éÞk$ñºí˜¢Wz…mÊÇ4Ü»¥ûÍæ/Å:1WlHŒ†Ø5ñŒúqÎF«®ÙÉ ÝMa0]ï ï¤cÈÛØwVÅ“Íkë)Ufüp¸ÚJ4‹Œ*X¦¢êíÈDIª³Ãy\gÿs1ÔÜIȉq±‚&TÛë43,Rƒë yíI:?ÔLˆÕk±ÄLIM `}4eŒŠ“ð†>;:…ܳ’Ñ‹/O[c²´p·m!»¦ZŒ£».Øš ñÎ@ZÖÒ?R à0Œy|ÕM7I6’qa¾~=$äµÎmLèy•Æ…¢CxÓ·—¶eÀ¼nàLcÜæ0Vä¬é1Ûiºò} 2ŸÖê”ç5¨ãîz{u8–Ê%cHŠ`Ý R™ò]p@XXØlâŽH“¨6@O®ÆWød×Ër)ÆÂhʾq› ‹çP­§ ¿#:¸qv¡b©Sƒf!I¼VK꯲Zë´]ƒÜ×2ðÖ$ É™sÖ‹‰ê­Ñ´ºOðC:[êSô‚κsj“”Íúš,:åhƼʆe wóX£Q´úQ°ï¢²5¸¼ä°_% k'`:k›?qäØñ©Ú´hïñT«~ðRUзcíÛ0¥Û­3Nä–gRÜéÉ´¡çš\о5âì¬ 9³¦c Œ:û¾±q ã)œn*è™88‘ÈzCuSÒÿYQ²nL¼hSo]˜‘„É‚ ‹QmæÆùE0~kivÑÉÑT{y™ÍW- Šf«@u”5kN¯?dγâÂDOOµdï6¹ÈÁ˜æd¯=xdaþ`ëH³yœ6ôrùZH£¨_7øÚF‹¾­óÆ"ðÙµ¾ŠS^pÁ˜¢¥w¬Aªž »&ƒykNܘƒÍÞªT ^·¥•Fãï¥Hjy6ÿ—¹m.Ñ?úØñþö`™ž(Ÿèœ,“N²µ¡×*ûÂd_˜_Ö*˜íÂÚá>Þ]YuÎQ+ƒ~ðÜgWÐ{‹½åQ9®„å| Z6_r8|ùŠÃèË;ðà ¤‡î8\¾âøjj ŸN^8^>|G°P¾âı ¶î+~é ׇån›$û2AgÀi‰ÊY\&®¯®agê”OâÛæ¡öèe²Ä—ó?·P§Í……—…ºìnnÒ§ÃÁø·|Åòh Vº—H¨º€'rA˜Ãeú¬˜ÒìoŽNjYNð0 C²Z]R±Ï™ï蔩G‚ÅP¾±å“e–b ËzôáùIúˆ2_õµöàB€¿ì °N ­SW¦A.w€•Û[®èöûe:ßÝkƒðg•—Ï`h*››öÅLìeX˜•î…+†]Úlj\Æ‹¥"H'-Ï /#ðàI}ìeô9 Â2ý ”%ôÞi\Øêoa‘ ¸*FgGI,¯]ÎuŸ.Ðh`•êz„'Ãí%à>¸Ö2O–½'Ó±'Ï‘fq!Šó`³‰yÿêóçñü„gcûlg{~åܤ§£±QFºÚ)<ãCp…l=>Ó²]ÀF Þü‘3w˜Î(Úé­þ Îê¿Ëòïê– êò–À×Ê?Øüë¡ÌØÑiÚ¿õõòq‰àúËÕ‚ÏÁq‡øé¸Lgp²Œí´G‚×>éz—uËv§°`þ¯¼Ñ<9ó(!++3½åŽ{Æ6Á$@Îl@göò}‘mPçvöñšÝ‚Å2ë®kf›Ì¸ã¼Ü#$ôðíXβ.çþš6‡þ•]Ń'˃³w\¸–6¦CDýŽ€ûFPÖD_ì×µ.Ð(¨9^:ü»ev”>ÊˤÓÒF2–òÖº¬sUðŽõ~ Í´WÎ\ ±à=Œé¤ ÔêLi«,=¤nçXy&Í gÛ|æîVµ ú—ˆÌÊ´³¹rÁ  5»¾]®ië± Œ M„åÎm|£;.Ž+óM\Iå;üA?øˆ8¦Çÿönµø_f ‘É`BŸåbŸq¾£W:‹wò¥,áq<6Öߤî–×¶;Y:A„ª鳄šú,’†Œó¼¼ãÕà óí°"ZHcˆ² :IL㢹ÜÑí€v[ë/»@o—Þ«w¸ÁæÊ"=3«ÞÇ2~Àc´möƒýr`¾è—ü^€ñ]LvíÒDm»ëy-vÈmoLËWî¸Ì&`aH'@ ?æ°HX…¦ ¡+º[ u3p¤‡'bÂüßIÈÌñ2³%zÙ YÔ* ðž­v>SÛ,;YFç“UÚÛ–—^¼Ôߺ°=ì D¦ èr˜,.:{Á€hðŠãÊLM—ExcÁ.ËQ¿|Å*!•wJHQ`0²‹?aÙÿ cÙW«•×G®hÞH»tìFƒÂ̸!ƒb°äDõ;4b‹Ò2’Ä`‚)»YttØe™EÇÍ‚E-¶H\Üóü…ÿ†û‚—”ß—I(@¤ú…¼öWxN„|Wª*ŠæS@¸¾}г!Ç=ÑmÄ–-ŸÙä p8ª•,öeUGUŠ>9öíš|‹‰m]ÀZàÓ±qi/€|·°Ø'–W Ë Ø^ïœSæJÏËÇ3:iž8Y¾Èrãü}ìÆÀ“CU$Õbe›À³kA‡Ï‹ùÆCÝŒöýBÈÿ8²M¿Ï.ö†[ëíósÛ ‚¤þ3³‡;'OàG¢qÜ6«†Ü]ÈPY /\XeT%Álè#t ÑdR2GÑR°b°@>k[5¼íŽÉ úÍHÃèÂk0à'5¨c…d~£¶m]ª*ðB¸AÏ= §Îì—·"8Ô±@ 5ßÉ3"¢šï@¤ƒUq·/H‹,ì"€_ð€…~–˜äË“hÃ=yˆÔ?ȶôS€3lDß%þÞ@Ë.Oˇ¸å —'ò©sáòX>u/‚ò§UB þ°v!Яzô©SôÅÓ´­³ CY¿°U¦nÎâó>'òyóÂV@]ñç>¾ä31Ó²~\!åCú¨/Ž.@Æà稫ã¶3h»çi8±H”Äú…Š’Âuü¸Hž"}C_¸Eséüª’E}; ãJž&Q¹‡µZ”V‰¯‡DôϬZæÊB¾‚+šmšAZ#ã*z2â¨>Gq’Ï'ôwH‚B¸Ê×éï°.f|1\ØŸæÁb¹A¸·²ÄmÀ\µP‰âF˜æQÚ +óøW z¸˜gaX¯gÍzc¾Fu’9BŒ/J’:õ—Y=Jˆ,%Mî>Œæ“ÊBe¬fZ%šßOBŠt¹ q< uÜÔRØÐÃù£Žâ BÓ©å<ýIùSŽïÂŒ\¬Eáâþ(¬”¯Š’:Æ5æÃF–H[aFp-ÈCæ‡*¾©ViºÔq#G·á|”å!µÙÜ઄æÛ ›y’×ÂZH³®ÕiœIXh¡ékZà<ÂÓˆ6‹V ¯Rã àz”‡ Ùb>5it5ö ‰DônŒy7êÍzX­…IfÍfXǧˆ:«ñ§¤†‹4,gVOkXØ4Ç~àíGBï…a3 ~i{°)4&ZĤUª¼a4™¤2?_©Ì7¨!š?Í“çNã iGhsÚŸzµ^YÀj°ä ª¾Ê.‡5یӌ&§û«­rc¡Ùl–5èýÿmò‚&´¶ieÁý!£þS ™×ž6B^ªqL@%û³„šÄD€vø$j„´—@1ZIê€7––ÖTú*7½3f'õª,À„1ð–Ó>¢ßp¡B³iP×´+4› Oe:´6ÀŠ|þ¦§þôo(ë 4Oh)ðm„Wž­!µLkßXÀ®ÏÇAc>£!5ó:ö/ªå9v´Õ¡1W²…¡Éþ¯á<¦D6sFí0¡¡sALš­Î-µG7Â=N{Cè—á€Ó¿M>Þic¾´Np hªJmE„CøFÆI¶@ýe„ÜÒ:Þ§ùVÍLÑ6M%º7C|n6ѽOCÅ~ÒAc꾊nðXÆÑ¸°Œ4#X%›§Ùf„úfJ”!­7hÓ¢PÑŽC±M}A3ƶÓ6Q'ÀluH¨»`ÿñß4mBãfÂ{˦gñbÓFðÙm,D´¯´9ÑýÝàSŒF›´™lwÈ(¹Òì ¼Wô-è‚þÚÀTA>ªa †x1jà:<ó1<ÁD¼Z',JC·6ªDM¢|©Yð0À5dËéo7%üÍg˜¸±PE÷ØL:‘8ÔOÄh}v…X®„Î0g¡âÀÓšaÛ‰(%8:@ΰN=ÑÏQB¤‰•OM•ð`‘Qãaéx" .¬ ݬ)1¡Éa0Ì=èsûúñp>IŠÔ¶Ð_Œ«$šBCáºú¼PU^BzƒH‹v̸ϓ*ž,‹þ‰‰jf&lÇA¹íÖSûD$‰¹‹¹Š÷2ÃùKh5˜y²@»LÀîu •'ò‹bˆè„ç Ó zä†Î-1~#î‚£€ñ •#¨duÚêú~ð50£Œ h½Ê'‹(bš ´bzfϛЕ$oòö„RLS^Œ\ ì'NÎYD+-猚0TÌŠH èfV«U<Ö³:áHc!à CÅŠ$Ó+§®¢{œ 4«ê´Pøoù2«‚$&ABìÉ<ݤ4‚7³JøÞÔhEMì­ï@ƒQ¹ž0.-`P48^š·poãAñyŠXÖ -k*Ë ²1ÙbÆX%ZÜFÀ'2$Âq34ŽYY˜ñé¢I™¢õÄ;„¾@c ¡fάµBâE¥|JªLOE…H0Ê2GË ï@_OÄ’P⾨2+ãžÇ.‡‹´hu"‹õNH4Ø匪1(!ͽÓ¡dž¼‡L ¸Óè6ô-û¹ $ «ƒ!6Lº¨UËbP¯ (L»Š<÷jXç^±/QƒiRÊ$¶»ŸF®’L‡d_‘;™qã,¤Cž×Hà øpÿ̘b–!•Æ@uf[‰t •L‰!‹@רžlÚ-G’#–˜@ˆfW6€'/!Mym ¹r’–êXš,ƒ¸ ŠˆI»«ª$—5h6$‡“$”pcx(°#Ñ£±˜ÅŒ]¹iƲBFl!„¸BàòmrƒŒ'<©&O BlÄNCÌaJrap¡¾¿R €Ða ‘½1ÇI•ÿfZ4ϲ[¢rk"r+p LËûC[€®CoØ_ÛeQŠØMâ¨@?ÂWr=뼞¼N,ÙF"8bÇ*óA-ÂÒA†„À’ì 933R#Æ¸Èˆç ŒD¢hY´H#Ípn¤lâY’Bœ{fÍLè*QUbâ¨ô{„•OIŠ¥…‡ÄJÇ’šLG!PnG§D8L+@ÏÂØiµ.Ø‹KÝÑÚU+ÄãIˆÁq*ƒ‹«û3 N¤o–˜¤µ¬ÑK¤‡>ÔXɦ…SrþЉ€ðaƒLj‡ç>ºh×£¶?ÇÁHjMï&Oøpcõ1kL‡ö-Ò± øôÖñUZÓåm†Ì}¡VñNæY–! †¿!ÒœëÔ©Ã|^Åç1A­ˆ&"yñª„è̬Ê:GSâÒf.B8ý‰+‹4,âÑ!¤i !t†E&î¼ó1uM¢7@NGo‘´¤hQ¤^+´K{)(Æ2=‘€0+$Ñcœqü‹à!ÖéÑj`„“˜3Ò‚eÒw¤MˆÑ¥"öƒ¢°ºˆmêüAµ’ øX˜óŽ.Ä ¦ )#Ë9šãå‘›°ÀOϤí ̉ eqÄG;LTòIX|« ë&Ts¦r¾îELbþ¦NÒM•p lX]•|]þEkF. ¡·Cqà˜q±vUd>ˆ¨ÄTçLìëUVZapà, …³”`θ"fÂB&¼˜>¥Ä›z{¢ QódÕ“¼¡]I¬kTSp `¨x-ÛÇ:+õ—Ô‚´^ÏT §H<ƒÅ²ƒØ'5PZžF"Mu«Jž7ð ¡dDð#IŒæKTBiãDTê«ð&ñ´yôטG_èÉÈuÜOèÑthlILA©UÆ„PÄ¥â$º0ãYE¨B.–(,¼O@GaÆÖ,Ä"îšES¶ð6’Â`Ž(bqUÌ&h&“Í4 Ñ…ÉB6OÜqÎLôßÓŠl0>ÚG¬ëù÷»ÐfïÊj Êû‰aÉÙ” †˜@Ÿð[‰j•ù @è«G±¡T™®]ƒ´´?`(¡M ñb©‰‡é¡bñ!µrr&œµ‰ñ%ò9˃yQŠõÑÈJlWjΓ\‘5¥»¬):ÿKÄ_F•1«Ç3ødÍêbÆ ‘ø>¥Uâ7æ?Y„¨–eLQ$›º½"Í»aÿkV 11YíÇ´ˆð­ÉV*&µ‘ج„weÐSÙ´Äeù)eÒ Û-<ˆ¦eŽ8¯3'Zþ É ò*‘æÐ0äÞ¨ÌúwÂ`¦ ;'û†?lăµƒx«rBh¯õ?^ˆ&/Ä«‰Y`‡YHÜóó±Ë,#™"šg2e^ÀI,¾Þhê4Ç R)fv»B#;QÑ,Å!Â0j& ‚ÁA±$„lÎkäH¥@*l]ØÀÊ6’â\ǦŒ °‘h™¶”ÐÊëYÆ!c‚ ÏãÄxiÜ$˜â˜ÑbÅ`Îj›°\ô_h~ µ4Køp&lµ²oAr0Ï_kê™^à‰å•ňWMɪ‹ ¢û´ô§Ñ„œV%É."‰¤ZèC–Õ«‹$œ?fyÊ?’ž€ïB0ôßÑú,Vë[]i@80øÃøÜ4­–ýt9: ùñ'…‰|fÓ¢Whå* š/*‹)!\:__ ˜@>’Å¥Gˆ áâò Ü$@6XL§=¯Uši 3 ù+¤€¢©„M6¬7ÏzcÎ2KÆÆ3ÒØPKo.Ôñ0" ÙbFïîÏÒ²V®•£0cí¨*fMÂhGõ8Û/ÊÓ0hd!i¹Äl´MJ š Y€! …¬Í³T2O9޳E’²ýU4U ë²LM¦ËuüÍ6G>| Q$q2QšELµ<>ÒPÌñA<åWûd5¥1`uÐÔHÃ0½ÂºÆ#ÁˆhÀ©Å°›Ë:D˜0ªÖ¤¡Ç¡ª,¥EU ¬“ ØX„® ™‹URc™8T{9ŽíÖƒ¤â:¿Y‡¥.¤¶ë¬Eü‡› L»h GŸµ7Ko),¶àüw]B­™z³¿%egALïÛXIÅKޏº?bWVS¶èy±êyÞÖ#óNç;Ü_«› ¬t"râBä›%Ä¢×ÔÙ¬)¿Ñ“?$ ’ª“(;­‘¸3ÒN~{üåàëŽëňDøI Ž2RØéHLTU«C¯œÐÉŠ‘ʈd-4`[âÝ#½Ÿ2èS©ê³¤¨ÎCÊ·–4a°1tÚl^lÓ™˜&à ƒ‹!YÈ!ÐSh§‰’ÀŸÃÁm‚õêT#‰2Ø7ïµ &f:šÛzÄĆØKëFÁ²:%ÂHH£!RPÀÁëÜ›l˜ãÇb+f¾Ï†DH ËŠ,{ÃE:–Óv±×Nx·1„Ð’ÓIÉØÂDKÍ»Fº?ðC…¬¼²’@Ì6¬°Á‡‡t’0BpÏ*‹lu’¿rbt5^Üy‹ÿö Â>%2!4v¼ÑÚ€×hp°2[ODÄm:âSÅ<[üs5Ú5AÂp¤a:ƒiB¶MW…Z±°!n1àEöôÔE׎D0Mscy—±Êì2ª€*0Ä“Ž+G6‚ùö[b®õ*Iš¤Ä³a É‹k iǃºmìã`QMzl›oBãiC5 ɰ¡Ä’H†Æª Í`µ(Q[^+ûÓð Y"KCŒPU«š‚ÙáEG¬™²;Z³k5B‰’O\+À#ÿ…–‰÷VÇ£*ûm'ó,ÐJ¸_•ÝÅYÊ ,þæ³± ,C_•„_y—v½B[VÉ@iÁjˆÞ°A–ÅÄóÎXyRÖ Å…†Åî•ÔÝ Ÿˆ)©‹M8U’Ô¥ ÛíúžûÆ·Oƒáz­³ã†ÔE·-bOT±„)naçqyHy2f®ß ¼$ÄËeßXü‰Dâãa~9ÃDÓžÂ:Tm˜ê0$FgVÏåD%!{&à¯j6+ GP›lþ×a¿ñ§ 17a[U[$,#‹l$¦V+lK>NRF³Æ„ùeHâ£lÆ#Z^…’Ocj`ÉèRìèz2­lZ¬ÐO„9Xò¦&› /b¢ÄÐTfBã*QSÎ*›gèšÁ"à€µ¶ óhH°!{óàç%Ý$$4Ä$ãD\Íq•˜&Q“³¸Ýaþi 4J¢*–dt³kZ³‹•¢}$š0áUÁ®6¨g:"à/5ñïÍ“Zám©„U¦0ØÈ ?AgY¨’¢µh‡GË ‹FȪ!lÙVÅú`^ÕHb˜Dpg@à‚†ÓB(ë4™,ÄÐåņ¤e /`ôKuL‡ãBœÈÖÌbÞ §qžª¬òß5áâÒÁI檒¦€CÇq ¿"š Ø]?)I)»*qôª±ìB&T,Uþ.çauˆîô“DOqž*öiM®ñ3Ĩkm‘%b.Î…äÁÒ RR ņaH 6¥ ÛvÈZ<{.ØœO#gþ=•i({|›ˆ] Î-YÌax„s`4 Q•àŠk4EÃ)ƒg #뢜“¨É?Ò'«¢éE"\6YæJ!}Âö‰°„8f?}ÉŽ$ƒ¡°‚ÈŠ‰2µ q0‰HØ"b…DÛC¾Yd±.önÐöÅ\¸$³ßJ¤ä*‚^â8U™üò¡ "áÀ‰0 qU°BζÉC²ŽD"&Á’Lª°%cX0Ág¸MÌ‘ lý„n›Ô1:?y š Ø ópr6K,Íó(äΰp¤ “tSQ3$È)ŽPÊ2PF‹Uh'‰„TK§Šö­N//Y€[:Ä÷‰Ï`*<>˜9h²Í¨–`‚FдôÑ"ìI©xaÀà!¹ nòÊ"è/œŸ˜W,¡)Y=³_=–X>Í™ªJ,ó‚ì&³â…$ÆF(Ìra.Æù°ÀsÍW^%E#‘M ­7ñ°#:¥>+6lqØQƒÃŽ2;ñ‰qøQÆá‚­âO`_FŒS} 2¢–? 4ܤÂ2>km¡ñ?ÿ5ϛͽÐׄ㪔”JTKÊF}°H81Ô"èf"ïs¬€È«l"$²ÜµIU%ØjHêNÙªáA=þbÌúc3ÝŠÕj q“c{RbËP*êu6£‹Ø_±Ëʉ]RN4ÖØÅCÙ„D\²D;#Pp‡«"×TÃË¡E³oÃ}vFûˆÀĿ瑖‹À‹öÁÞ²% â…pØÚ½XP—ÈxºÒ†Ú·ABë,­Ì×d>Ôãz  Ya; ˆŒ$!…áX8|ñV× YLŒé–¬¯‰E5Ö1Þ ¬—Md1{9ª ^E¶v…p&RaÝgÂEHüÐÚÖ˜·4b¿nH†Œ8%ìgªŠŸ©bNP‚½±@]øÍæÓ*iì!0ès¶Ÿ#àv!™afήT¬$Ûd˜\ƒ)³Â,Ô¦E¦/Õld)±]6†gøäpsÒ4«”~×fCØÃR5PT ç‘N‚ ?Ž9“ Í„I+‡ù„l¡­stÌ"O(_«eá‚ $WÕé&é?$tB>‚&`.œ±"¡Qa&)ܵfÍEöž“.a#Ašu‰–5Zž;¤ÓŒWÊË,âiA^ä= †Qˆc¶rÈ)òxºÍnÚ¨‡&¸¾ÌEàÏ|&ÛÒl„êᵤ©„‚x‘xùZ3(´Ï‘E)ŸºK7hªt/+ñ¦oÉ=Ü0›Óë#§ËIn#2Þ€¦ÁÝù8Ô,œ°¹?ªª.Ðl*š6ák#;Y’4D>ÎòLœg¯ +O#b6°žÚIåBˆM×sD ¥UŽod?ÄáÂ: ¬^ä`”d>µ”í¶)ܵ&ñ’´fÆ&–AHÍ'—É`õƒ€–œ$}¶³fN-Ql’h P1!×YØí–Nè{ >q¢¨‹ØÀ©Jï¤ÒÍs"Qp¤pþJH” )¡2XkÃí–4ÅA kÊ‘p‘Dñƒ‹…u£û²m ÿ2_ 7x-"qáòBñB6«ª»ƒ@În ³Êä¬vˆNÇ.;¸G#b< QíŒþ4X(¯'*ž'&.0éZ|ØE ¢Ã v –߉°di®ëå÷­ò@(œ# "ª¸Œ$+$bß{¤º)!_ ÓŒ –"æªÂ y¦ kMŒ iÌx‘2â±!–â$ BêºVÂòiýÍ¥}ˆt[šbsÕ3ƒaN´<Ñ$9ófy6•< ˜~‘Þ-oòñ‚µýPé ‚e‰_A™xŠ­QÒ%wnl®œ[‘þ¦N<6TqâY%šP§ãªGÜQì˜ÂÂ!t6K„r¨Í¼*¶(¦ñRgë| A óLB3Žr!MÑN¬8^]¨à•Ô!­p࿘"މJ95ª$ÍDØm&qÌÉbÉ âŠHk )D!ó’¤ ^Ú Ã"ŽÈ…!‹3¦ÃQF†f @4/1`ÔšñŽb ºp€Õñ›Øœ"Ž}I9z®‰ÏââoIB®²ÿ”C:9~µ 1LÌõ| çÅ ›‚j’N'é–ÎÜ ªXÌ—ÜMR¦«’(ÇÖº#ÕEÚ.¦<'KJU»ªMlBÖêMØ8AJ¢¼9‡B3ø‘%8Qã %œ÷5V.7¹xMN\Љz•=`´Ý¬fÖ,œ“d½ ‰Íæ´ßqS&›TÅh¾PEHO“ýGs”W؉ÁÐ@Ys U>>•fC¢}v¶PG%gOoÔ¢ T¬†ù8ÛŸ‡ÐÁ[-NÐ:S |ÄÇ3EŒ‡x€9âƒã1è±c„e>Xé!ö¶Á¼„œ×šCúšÂ4?²,œì•â(¨M…–»Z*På´,]ÀØ‘77HàÊ„¨` ôRMñ"ÜŸ'Œø%âeäzvåpTf•MŸu6„ñ¨"‰Ç\„™fw¶‚[4dF&ñݰœeºhõýy%IÚ'°´„.R£>$Ç‚]«ÍEŽ.ŽØ> ç%â‹Èä ÚȪ¨ßš|2¿`AU‘².I¬²H*ó°½f ’ lso"[e’ü¹xÙ– ¿(|F ‹bà)ö)2ƒ êƒùÀô^gF1a!NÆŽŽfc¿Ñ ™– 3i‚D$HRÎÚåè27©Ê\…@CºgAUOSC4<™qÈ?ÕÃà ҥ¹³´ó`s ya¡)N>Z0"‰œ› Ô)µ²û:Ǿ*O&g»Æª™4%Ö†š)LÕu“ëDëâHä|±„í¸hUr¤š+ŠþÄåËç¤_6S•tþ7±ÖNaNuÜ*6í[Ò1sf£üX4#qá741˜zH@Ì!ó@•F<¼ÐÑ´ Èf’<œªM5fg'Òš¹:LkÊÏiV‰ýÄ:VBYÔùŠ$Xð^Gú4ÞZ?Mæâ¨a Dü1N®ÐrðFæÊM¬¢:Ñ9ÇØ5%N’³B[²yä e}®¡Š“Ù™áxIïBU“VL¸9ë0MÍ$%|9©Ÿ !±Z†«÷ã”ʼn¦jY…“Vo*Ù$x(Q4gîœ'š¼AûˆtÝÈiÄjy Ù’@ 1᜵`BEkDjI›×BÎC¦A«v¤Éü¢7V~P’îç%QñGÒšÓŸd½ ÿÁ÷Ääš±qG&S}¥á|Cx‘ùC'N+ëïIÂÖ*î†Ån¦MX-ØàÛ€½7ÁrK;4¥f¤ê‚4Á§*0’¿¥, EMñÇŠÅ™ú,Ö±^ÕœÏäáб¬Ø0OVÒÓ†p^¤§‡iQÇîH%£e˜1±t´2bÉT™!–Afë’A‘—…êæL²$i>7-ˆœ)óæ¥'!Ÿfœ0œ£*ÒIØ(*ǘ¼E“!ié \l åÖØ€Ã'yÖ'áà®äÅãÉ9 ÇÖ4† T6` {¾Î;Šù*VW>ÈGÃ’öÝ„¬ÎŠ—EÒ²ëbgÄ#¨¿£ÉXZQ›,zcñ„óƉj ˜2‘ŸM³i²}7(‚vÈI§}oJpÐ`a¹öðŠŽ…˜›’¯…`Ó€ÕÕ†à\ÈL’펉¤*2;ã@.HlÔ^9 ܱ5š… @$§a;–Ã+£ui o£'ø÷3{ƒqñÒÜ¢æLHºU 75Í ¿¬VGMu""¾. ÑäV÷'€—±$Sí# x«3fóUÝàëtú’@ð‘h6 ëÏÀ H@oSv’é« 7“æšÜÙ@õá1–iGâãàÓõ2Éà&ø”«?p¬EÚ”rÈI9Ì,–8ø“䤅¹ÑŠˆ¢dÐXôŽH”'ÎÂnJæiV—è4$eW7Gˆp¦ZÊf„”úD,r ÁYg•#E€&»³+ý²&‡aÓ¨2pö¸"„7žßiTü…ФD©J 5v¢ƒMã˜H¤-ªÊ™‡äó™ ¯Jj\š aKñFÇš±Ü%lÖX=Hæäü=®´f'mÆAèA„ôùª)’pò>'WÔÀ„™RæÃÕYú@ä‚A`Ýi„ø~%Êoc>/¶Œ‚‹¶j4¨@øQBÌge´FY€:á^#}$8ŒzÌ$b,‘TÇ8Ò<À€÷FŽ ¸è|Òôæu (KœËPbI¡ÑœG{ý,¶.Gl>Ì¥ÁÖN,Œ9ïʜ N]“ì¬ -Ûy `²8X0U—A"î‚Lë°ðÞ×Íg|›ˆ !÷LjâBú<0@s/°z'1ÇA&ãî~UÒobM\3ùÐ!»ª‰µ’Dè_Éz›÷_ƒ{,ÙK0¸› &¯{éäÚ‘~1û<ÃÁþ‡¯/ä5ðb^䃀¿|!’Ó‹Ä×JÍŒ¦6hHþ{`*˜6dBΛ ¤n¡æ¯³ÿ<טnÎ.7­pdw(n/éƒíެ%’jº?å`q7r@x$›rkjÊö ©‰˜¿v@̸y“õKá†HÍØ—ÊgB"œØ0V—² b=cÛ3BäĶ'˜tM–K~œªf-~Xe"={’ûo,ïF54Þæ† ‰嘶zèù†5šÔ8“%û–«¿°Ý]œ‘ø/EÚÒ€#Á2ÜJ5¯p Ø6jEˆ—…O¦ÐVCGóuªÌ¾º#4> UnŠÅGnšË¶d¨·U²>T×3'þMD¤pP-†FcOEì“€KÌYJP¸z?¬-†ÖP¾ d6¼×MCü°+,\FZ¿(u¯Ü6ŠûF*ððÁ #Z‡[v(Ë»nÕRÜT9„¡ÄÜŸ”má i [lªáßR×Áýlç…“ó sI¦0!èMu=ru?lbÄ,ÂÚs]»‹öÿGQ&(âÌD”ÉØñÓ4ˆ#ILu8𦙩}„I Fe";69Ï4Üæm¨€óBDáZÆÅšÊLl؉ˆÿyšr®à…²e\› n¾ Š#l»õ ¼üÒ4æS5êWr!)ãgûëÏk|is†ø‚…TŠ×€ÊäšNÐXäºZHd %6>‹Ð•"P—‰y. ¨Ð„‰>˜Ìè â _’LÞz,¶ûFÊõÒØ4qÁ.I·0?VÌj.б­h²ˆÄFgR`QRcć„"J¥ ØëR+BdÇ XY@Ò”@Øë9…cå#­¤”O$GH,ÖÕ0ÂŽ8 Å݃A”«ZŠ®fê´Mr“öe"lÁI3É–Ä ÒÜdÒ°1¤¡JIg|d5ûk"z7'ƒà}åD•ªuŽ]zt.É6B¥‰é „Æ'‰?”·`!}V=jju(X¨æçµd©öVwô؜פbÎj 2Õ$`RtÅ*ë ãŽQ˜Q³F݉8Ði õ-µvM1XfÑ¡ÚÒÁ²P5✭ɭÏ!å`íŒM- ¸ÕÙ­ƒèhÀ\ Ä.~>™;ÙóóÆ[ÊÁ†(W&*"£¢­¡ÖpU€ð)¯ØÀÅ Vq InÆ\ ,çÝS»¨ÑÂ2ö¤Ôµ¨h=õWTSA‘’™èx+ûX”ª)òV׿ŒZ9ô͆¾ˆ8ËBT%U€çóž]«*ú7ëd4×TŠG¨ÚíúæbO¦ã¦vÌ¡XtIíÚ¤ÝØIÖ½I3A$JZ yÇZé,–? Q¿â&Û ‹Ú)Q ¡¸Øt…–À$ qeC|™V˜æ²OüV*Uq2É…ý]›Ò Ù!uŠ…š&íeJÈsæ6Ñ"g>5†­u3CÅ+©†ÍŠ!€«G£¢iCéœ)F£t#QG›6ÞEÌŠL¶ oG¹Ø[°7,R¡¶PÈOÜ+oW¢t5'‘Æ><¢s-ØÌbºæf°w¨‘¨ã¸æ!¯ÆÊj‘0YJ×G`;išÌÈd \B ´,‰)<Õ«#yJ92HâZ5õªYÙT•hθžÇZÝxò,W(N"¬nKÆQh¬–’rŒ’•*µYS•íD+@§fkxE¸ä*Ö#Ðd¢]ÓÐDÌ£Ù/ÈÚ…""a|0¡õ¡ÕG6{.H ɤ~ÏMœÆWG»Âux?$À+“@döB0¡fC·)âM¦.ñDËiï¨2×%L¥ž(8TŠxB4¹–õŸPJàKqv«ë7æ ÁIAi3MóˆiÑ„’¦+œ±cÙDÚ+aG ¼¦ q†î6Ý ÷:‹ž¹J®kâ ôg[ZC$êÉG¦üŠõs-Àné ³ÆHNoÈAW ÕÆÅýA4fD ´¹x‹€b8UÔaÎ$¾‹§™„ÖàI]Ú(ÒU2©A=å4ŠºÔ€çÒw\ VcâC?&^ÒðÄ®%Îçs©7[•[)` æÚ’>ж"mG+¸4L f²Ø÷^5uýÐŽ¤J`’Ò8Ï$ ¸˜&ggŠ¿¨éò£)²Üb -g7HC“¨͵$Çv.ÔYLÍ£hÖ X‹ãÈrŠi%”VbýK5¸R>Qñ…m#†°qš…‘VÏ”fòQã ºy”çd4F?(¾°ÿ£Þ¨Ãsi+/b+¥ˆíÂ3ˆ91Q‚pS$'²Ë“]\ É•ER-È "†ÔCÝ‘¡s–ny¡ÆaÖ¹U–%\<€¾Ì“LMõG·H¤¼o’³¥;Ϭ ´^*>ñ4Ø b“DÐ` †$F«/I$£I•TnϨ'\ M”` Ôù!h'J53¯_Z-°™'“i&ñ,RbÊ㹩³‰àWN©G-´\ÕCä…›tu8VQ³8EüQ<Ä dƄɥŒ8à=TÇ@ÀnBU•:’a)áL\ÜsQÚ8uWP©b/ì5—³Œš@5è¨SÇrLq|ÿާõþª¹„ùxg´½E@³Óm:W–¿Ã»>ކ¶²Õ+ÞH+æ=Ü+}%î p™ÛR«œ§•r%,·ËÍY½æ|®?»¼6WM3¾]é|¹¹>{]›†±2UËK³'öÍ­ÍõOÓsáÞ¹n0{¨=X&hm®;‹Û£çÂr×ðæéÙhß\\¡·lÎmÎŽý¹Á,îr£ñÒS i°çwôÑóè´7¤ŽÚôg¹¿±µ=ê æ:³[ƒþê ½1·:{v­'}®ÎÞLµ¹BO³£µ}1Üj/w._ô··hHÔøFg48O-õ»ô+798?µ×÷b uvµwóÙ¤çÑ5µÒÛèli Ã¹¼xŠ^ìÎnoöFÔÆrg}£Û\1/ÌnÍÝ6ÛöFüFoôfÛ£þÆ+Ô£–V:ül{D?p3]nf!MòòÎ…èbVúÔngHïlöGhjйm»7À4¥_¯)|×§¯–ð [ƒÞ ˆg¶oîôìÑܲ]­Ž¬V¯ð œÛ[Ó¡Ï+§µ‰ƒ hpgésÛ4Äì;Ë=4¾Ü^_?ôF#ZÑÕÙn@o1¦³½Ñ½°Ñ_ï,o¯Sk4Ž•ó›íÞò[×Û 6é^GìO¥BÝÏòm€ôÞYå*-/š¸½Ia 0ù@'¨ûòhÈ k¨è@¸K³×QW{Ù×úÔ4÷ÉË3Ø«Íâöu WúÒûŒª2¤îìÍ7oö{ÃóÏÒÖNÐãÜpvµˆ)„¼™ØÝÕÙÓ›Ü!­s®½<¢…\ŸÝ L¢­³Ã>žýuci,YFc‘©ìD[|ßõ·• ôH§k®Ó®×)F_ÖÑgôÁ_Æ·Œ=Ì}5˜íoÒ[a9K0’öSjò\o£=ÌÛÄhp£=aÐa­¸òvó:çÖzK|ÄpÚ쩼è6׉TÅ XBXÖ¦xh³ÓY1§cClïò‚2:鈺zf™L³ë„Âëx@NzǧÇ87Àá$zÆx&-­÷7W/´7W I‚¼‚Ñ Gƒvo“4a»µ3çÃÊ·M¡c Çi= éu¨uàÎéÞæ*­<Ö±[X˜ŽY˜S K#À¸d£ÓÁ†óP»tð;+¢«½MZíE ^›ÞäõPäïÊr yÁ‘ Ú×úÛëxGnd÷Ôn°(,GaRfƒБ¨÷Á ÎП³ÂVBÁÑŽà(½ÅUa?@Âeb›fãèC`^+¢6ŸE¢†˜vÈçqا 1Ý¥m<×ÁÏ<½AÄTDUÎàV×ðv µG@„ÎÊ*ó9Æ +§aÍn­·7m[ Ê´•Žp¶îÄöNq{„þ´_CÿxaIˆàÑVwüMëÌ®t˜–q7Œ=s~C€CèžN¼üüØ2™UZõz\ƹU°Ù¡ Ûƒ!‘ã"Û ‘ M$ìéa#Û„Ë$ :5ÍÅ(ªKOŸ÷f_0—«ùÁ¼æ=Ï%Q¤ÍɃ«òXR÷X2—Ú^ÂИ Q_j{XKãò¨?¬(H:y:fÜòµ]¯%Ù>ƒU1ëíá6Á®Ýæ±BY†½s™Å•=ßÀ©^9w* )¶y1f—^±á"®$úo:7œÕ•¹!fºWF#ì®»ã}þÏa„Fò;qiÙR’¸Îºú&v—*æ×±Mâ=¶ÏÅs¤°þƒºI‚×ícÉ\T«Øöxè`sƒŽ ŠA†x‰´ÔAƒX ÒºV™‘Ìủ÷zdØ.ˆ­LÎËâ #b{®{´nÆI:™>È@“8-ŒtM‡‘Úa¬|­ÃÈóâšbåòtçb¬M-²k•f{p¯²”UGeî´ŽcY1\Ʊºsk2Ž<¬zíGsä‹éÈ@jÕš÷`…¡ëiÅNî”ýÊv¾EÊ Q…¼š”bŒqùL¹‚sY sh•²<]ÛBžT¬y26ÖÈŒuUÆZƒšå¬N®Î>k®æ-›4Nò=’WÜ–‡ÕÌ6ªÃtÓŠ¢J ש´H]‚Þ`V„äÖÄ"MÏ|Õ)»5ÑiQn$6†£YXUû6 «ç†v¾š`ë£ÔN¨Z‰½Ex6}‘»Ìj5sŠ9º‚#ü|†3Ÿ›Cõr|Qõ–ùôÜVÀ(Hø ¯é¼ožnžƒöΛ'DAHõä¨_ñ߉›Úw㹸Z|—Nÿn^xÚ„}7™Kh¦ú«ˆÏ)-¬ršxCö¥‹´Z ¼.Ò,.<Íõå¹ \ÐyÃõ#î,Pr{Û£ÈÇ,ì4EuFh5"ŽÖ"¾‡å”ÍQEѬËê®JxóCÚˆ`‰Í*”£½F͇M­Çº>ìuk³«Ô×ihÑÛKÃåAo GI¸W\Í„>e´«r¢a“X)Ž,“‘M<D U³Â¤ùMµÄ.\0­’ Ǻ¯SÅV­*Æ»p í§g =4¬Aƒ^ƒgÐ[…=æ4éÔ37÷Z%`Vhd0@ŠIÉZ3!‘÷G0vƒ“Ï€2ôMH«c„íØ=Yur2Ëÿmc‚†UFWkÕ[½ˆš»bôQ"µ„ˆl?/FWé QðjÕÒ•œt•,óéäP~ Ø}Žha-Èâá¡mÊ"GxˆnéóLxªq¹ø<‚}# ÂSõ‡…9ÆP5„´½ª?‚(ª¦AµÆ¿wfC†©‹š{ÞXÔ¯°æ†@¿Çq%°í]Éî %f)3Èjçgo´Æç´qLë ­UƒáZ[¸‘I©É¡ÇÒÆ®Jdú¬$ôs-1S¨TjåZÆ:)f±öiš¼> T¡Èi~®’JA?º~UâÞ^×ÕZîwý^óŒÄ`¯ÿ¬V ¸YÁ ÌÁë?z:¶‚9QO;œ1&šípGª×ü‰¹¼æxŒ•k ôYÙ}R½áG!uLã÷›Hiõ„@ÚÀ©ÿ•òØ~Xh—ÍR¼.¢‰Þ £$ª]|Ôiš5gL1j·‚ ûKˆÛ ]ë/˜KòÌpÌ #am UYå¦×,jõ—Fm"xzL|ÚîûêkþÒóVqlåRïy=Œ Ã˜[L¬e‘}^Ø~zmŽó}Èöiœ=ØâÐM\¾HÜÄ#h\ö";aÅ̼*3Oª¡é=†E°šù}GP÷£îƒ(W™Wi´7‡ÄU6ÔV«‚ÓI^½Q[<‘ô“#âkE†̲åµËÆEi-ÛÆ „x¯OÖ•Ø1*B=êÈgß)éíëìÛ+²è9(×V¡Í a§š±•ù(ˆˆ/pRMSû„5êÔs œÁæª00>‘Oׇ·!mp°IGI[WÕö“¤U}]FÝ‘Q§lfÌuÐÀ¤ú\ZËøQ3f6xfÍs ÆãoA¥5oyˆÍ&ÓNÖÄ·Txϱ^µŠ¿^µJè5Â.ˆJ­&,0Qô ³h½–¬·¡š«#ÚÅʸ ¬àù œ÷°k}Xk¾í^]OÆ»6;Ü€¹~ÀR›ØTi¡M &Yª}¯„ünê%Vw†£»:´®šñ¥§î¸n'ßÀ§NµIŽkl Ä:Ït³ŠÇޱ<, u‰²äE’š•‡œWvxv#óN°ßµÎi"æÈ,»5ëŽù;:E?9ÍŞϪ«²ßš•‰':¼Xõì<ÑMÀ `œô2»Âºþ¤Œ×ž»ž& Ñ-ê×Ñ|Vì„ÚA™h`µøkØE\cO„#LUs{‡™§â¸?)Zø=°…trå‹ÊQ`ÛÑÃzŠ8JâµÇ\Cd<Åš¦}ªšî‰£s8†8°§èOOØ»{F‚ÔHh™X¥â(÷Xq›±¦¢( ÌCÊDÔa´6ÎFV éùÈaYÉš§—L6&< +A~Wö¬dBÐÆäNV Z¨¾tQåàðÁ *aíÊ9Áh†DýE7•µM`:KÒÔ_\nI×U„KÍóð-¸ç…Wˆ•›§ñL%ÇÛÅ6ësÕÌ=õunX0¶c«óG£¬³}Íû<ªGqâŽ]ÄÞ /%z‡ûð‘”ã´"!m„à’±Üy”ÍêžXÁM÷t¶^ôX“‡VÞ ‘®•µB+{m4Ãqq…ã:ë D«uí•qWèˆÅ•ØÛpÚPRͤAÙ÷j{f­²“q#f%†´SÀˆ¬’{ÍŒ`v)ï¬vûæÏd™ “rГáéÙTùþQÃ7a]ÿ7ë•…„uÚ4øÛöb§¶·„=vŒ;ˬ²ÛgŠX1ì(`[c§£5¨Ö <%µ1C#=V Ýcð^DIà=·*OùÌÜc°6Ölsn¥D(òÿSÁì.û7™}²ßßL‡–!á; ãH+ŽÃ"CäŠÅÁ\}ŽppÈå›U_ZnoúÒÉšgHiçDUØpl.#cM/}·³‰þÀGY‹»_­‹b@eçÂÂÀG™…M+±ÿتlR Ä­Úe­>¨Y9šV×96ÛãS7¼‚7ëŒx:çzC9h¼²k¯ÓiÛV 5áA»2R.u0,u1×6£Ù+û†ÐDN"œÇn÷Å¡à*Žy4aØæà$ø‘ÏoéF FLdðaÀשJr †ÑH{}>±UYÐ38ºããL=Æ]vÇcre{e¥·CG2—:»Íf /¢uZ_çØ«çFg´ÆVYvYýSz<»h¥Qö8ôàèšääv;²áëÀ]6rHfp^ÎŒÝ)Öî,Õ\ƒ°3PC¥Ls²x½;Þzï z¬øÁ½‰µŒTº¹ÚlB“’ž¦N€Bƒ†ª÷qYÑ$!Mß> ³C˜›'Å«ZݺxÉØÛµ6[•ÅPÚÜ?«jdõfƒ=ñûª $èJ#§5œ¯ø¬gÚõf:a±;Cƒø ™<)¬þšw|x±­¬óôZ‡×{U(¨JHtho$ˆÝÂÉìy2AÇY‰ +¯ ]™é”!ݘ0OÊ•ª.÷iØGRéWU¡U;µ5=zX°ÓZ²©vçq™Ÿ£É #UÒëE÷­Éü‡̼§ËÍ;%¹iûòŽyð(çÚgÒxQ+JÈü7hc`ß³oÞ¯KÌOˆhµèš8 džÉ_ùã”0ÛÎͳ9ö Š`@ÓëÄ 6ÉaURÐÝÞ\V:`gÉÌê–9ø|¢¨ªÁ=Q†YD•ª•|WÕr^t*™G&É©ÊÏËÎ/&ÄÌ ù°qG’áöúÈÒ^üµ¼®èàX‡¸¡ž ­UmØ[Zg\`ž¦Ëͬ@œvãÅB˜ªÊd0xc+¸u‡ê [?@oü“]‰]UmW‹bŽÏ5<ÑŠ«þ ŽIè:kC¬(›T&xŸÇ×sul!'…X2ÆV…P„óv¥@3)¢¦f™ìX­ à}& iÇІ†@ FʠЂ§ýï´ï¶×å­í TvÔhý¾|ÙV, _©cTåØL1×3ß­æfd£óÊø`æ‡ÅŒØèh[g¬f^"ÕíAAÚõ©b{³¯ÂÒ˜%¶À‚'‹JFZkÅ„$mÏUà ÊÇDfðìj¨¸@£eÁÀ,†™Ý=–ѰñX Sì” V¢ÔQÝ£ðÞ†„°hóúäZàS?öû=‰óÐŽèùžfèŸîC\xsÞ@.·@æÎíJÿˆ¶î™›gkâϪ‚$ 3Båús 1bæ!¡Èb+o\ÏÛ8ÙP;KĆþ,([K/Ž3CaÔˆ¹EÐ-ºç•cèå]¦±<©Øß‹mi¨c¹`ÿí»:2ïåÁöØûÕæ0FõŸ^É>kµèF!­"G×’¤(^ªpc½/«>µµÅG4pÌ‚‘þÐ\Å4*äâôÜ€Á9V±L¤à†Hwâ~“Ó@@u¨1ɱñQrРⲕDçLƒ±ZaO.ûôÕ±•íx§ÖÌZ‘QyI€Ûâx“Á©;gìíÚ©wíÌqñ@þ—Bßá[&áTõ%å·$íOÚ#,–F„ž¢gªl¹Oløi5­–¥õG|u•^å Bûj2—GÑ×öê•ö!C'a¥R ÔzÇìþŽyÅ`à¿‚X8:"õdÓ‹ðsÔì„è`™_'¼^@¹ &4x×Z<‡±bsåñÑð:tFËûü ÏÖ"Ö#4^‹ª¶qâsµ4-?Bã¤\-ÝÓcÑ[šÉFh$ɘôiO«ÔÑ£|ã K7X:ÄGxž<Ž®j« ›p‘ 9VCy<¿Ì"Øíc}fÌ"i>­Ç‹=ŸuÁ"A ÏïPŒ¸:àJBþ?¿,’ñ’³çVÎÛªGid…¡¬Å±Äe­Ùl·Ž“‹®uÑœˆ=F¯õÎåfiWDߎcäj0¶ÉˆÚŒ›´J‡Dƒ˜pšÊö #¬<Ž3_8: .vË;âÁ]jŠc©©@ñjk|ò5R[dÔ¡Ãw(f&V̈n’°Q×…ZmvÎzœ‚S'ˆ“ЦÉã,k žu‘&ÞìdžJ{¹Þ[nûYÙžáÇd:£íÁ¦*æqž 5?-V°›ÙßQQ >id>'D¬ŒóDôÑrœF‘*¤8ÌÌ,6E’Ñ!ì4³·Ç"Y¼H7¦¢“nm,±m‡uVR|ì¼bÛ2æŒ4‹Ø,«çœûíÊ@9|õJV¼b5„áëŽ R®q…·óœ0¯B2Br6È`i˶pd~%L ™Ú÷ ÁüWÄ*Å®ç ¸P>~ìꎒ(pãÙžcÕ6®djß:$A…æ‰ev2ã€é§”~w%@÷£*ôJóË,µÈÊ,Q1V=¡—}ÇSZNš5;ž8’U£ÕÅ›¤7çßn³¹aåÔ¶•ÖL°+kŸîiQ*‘Et*™³ˆçš°s߆wÊF‰í^©ÔÌÒŒÌüËÅù§ÕJàëèÂVÒÌï±’ç¶ÇBÆxØ0”ŽPòeÓÊV­h¥w¦·Â&P~ÕÐ|A<9(,U¢¿S4¿ ¦€ÅU¥ª¦=öC°Ë$ªŠWÉ;ÒHz|¨ì 9G`zSÖ¶fºìš.•¹i"9çžkF±³6€ŠƒÎŠ©–Á~ >üHð7\•Öµ¯ ø½ "eÝó†°€·M춇XR#$ÝNM¸x_– ª®‹"&,1 *¯Ù¢æwÏà&S¡ã¤þÀÎȨÀíÁ„®9Ï<âŽýíÕ5K7A×­­#C¨’¬…Ȳó&æ#šÈPÕ†æƒÊ%ñR®ãÏ8-Lóù4 ›G8¼„Ž{]Õ¡ðXgö*ú³iäP4’²“Á¾†DT1Æv™·é{^ÄÚ¦5 # ‹'³êXAè#çRŸ–´š-UO‰fV2kDErm¥ªFTSÑCñžI‡ñÔwµ¤ è‡^ÈC´m8õ°’ÇåªIv°†_Í«NÁ̯F7Ôqª¦Èm÷xFB…÷øjø#­‚÷ S›çG Ø™ÿîJ¡–ôV ¯E¦¾z푈TB Ç{œ^jæJž’Dd(9ç¯ Z¾J¶ÆÌ˜VÔ+£€xÛó…ÁUjÕ wNû*±¿Ü8ã¯.¬iŹ @fb©uÆj<ɉqyå„ù¶µG°g„´S¹9@;¯ïù–ßmak^Q”åAîb 8RÝhôcÓ,×D¥‡öƒiÖ"„>>Mû`ÌÓ¬9Áªfà=„iŽ?T˜fÙMÍçMäMSß›0M¯.ñ*F”íUü]áLJ‹‡oWü‡8òäbCæØøŠrÍv0>ä<ôGA½Ð1=×¼1Çpæå¦MàwA¸‘ ñ KV®(¶TËâžÜ±.òh`Æ=ZXÓ¢YšÂcžjÜó-~ëœazÑeCn˜éžÏpìMÊäïÆç:X/æmãúˆÔ÷ 3¼Å9fì²KD„Œ@#Üü„ˆ5sk¥¾uó–™):¢¶IþH³ùÅP“€cqlŧµÂ©J8¿b³w¹ØØ1Œƒìv¥#f!ú`б„>èµ—XÒð8r›“æ\m›ÎmÛmk.¢Á5êœS³ôÎU7¨É¥ÞhÐÖª-§¬ q,È%L8ËJ™håßà 5«U“t\Œ¥óø—FæúÖÜ¥‚0ÆI¡Z’qÁ@¡¶æ †‚Ycó†^׬Àì¥:^¯Xö§(Ö°ÃÆ•ú²§3(øol­dðmH²‚×vL“ÇçÕ-!“ø+ ˬ$Lè1/…é:QL@Ã9œ…•ÄKíHƒˆ£2D»B¦G…Æc´+†«U_»2ûšÜ^«¢dHC™Ê9Þd†hn›ô­õ‰ñµ B6£¡:[ÈM$gÏ¥êzMÄZ¥YlÈçXŠ:˜¸é“ÉW­fÙ³&ËœŸ=Þ±sÆHh+"[ù£$íñû‰[Å$ÎqS¯º\¯žðN fßÑáñl*¸æ¥j’j¯¦3Âll²#5K'A’AQ.àf£¥ª;›…~y\½§P–eF®pñ‰¯ˆ69Êkµ‚øsu,Ô<3™s¼ÃR/ÀHþp Ncž7ÑñN_ìxi¢È{œ&nr»²xü•(Á"Ñ"å‰.«å\Ô#µ +b Ò0±í÷À PäÅ DQÀ…å'T¯ \Žÿˆ…„“,7ÏFšÿTCî¢ Î*k­ÑVg#c WÝ"¶&9@‰êƒÇT·ã‘²ÐÝ¡§ñ‡šdá5¥µ¬îˆÞè™8†h/‰Ç(³P©¥€Ð1ˆ£ª+Èþ>Q-¨~û/da¸®&Q"/£ª¸2T¤À}¬åõ#©›JÃr±’ÇÆàȹ š{ÀéªQhͰîdDŒžq˜û…=jQ-ðgUKc;HÈr;+¿ÄÇ£áµ5ß=_âö0Ü òH`䑨0vßÓ ’ òH¬ã TAµ0Ë#Qq’¨ƒ : NZB“}iîDÂvH©Â|¬§·Ö¤7ÆÎŠÖ¨‹Fi-‰./òÉÿzZ"ؼ°º ˆ{6†&R³·pû#›Ë~™G?%M:¸F¯:« 5¹„ö1›§$‚I-ظ†r,,Þ“\üˆO,ÚmÜF2V/PiÐyÙ7ÅöeXÇr{5/GâÂñ¸lLzp¬œÂÀX›•þÙ13à…69Éà^p2¤M©UçÉeâŽáÂO³ë¡Xqp‚øwŠåÿàg<*€½†-õ¶öå ›Ã¤eGkºˆíël Q›m„¹Ñá¶Äì3çÇ ãaÑ€ÝKJñäèA‡=9mWèc‡¤«¦RgÔ‹ó‚p$çks¥·Âiø ¶1‘ÂØKƒ³IN¸Gœ[ –Rõž¥ƒ ¸ÌL G4Ï*AÙ‰¹W3ZùÈÚ#^Óâ<öšqÀÚW#Ût%i˪;ÃñôljiG`ü9ö¯¸¨¶ž1i­™¨^±:Á©e{;3TTžÐÝÚ„CŒ9BÍòs ®´¡·ii‹_Þ‘õ ž^ˆÉëa©:ÅPnÏþªvQŽÔèÓU“à€Úš6Ä’ýÒ ×éú–ût,e¤R®•r:Ve¦=ôãT‰Qéíˆ>÷Ö™ÍÖlÓ6±:¦P_[âf—¶7WÚÖzçÏšƒЖ @ÚADԚͨń­7\c³ªVÖÕ€$» ªürž²µœíÆ|8ý\5 ,A‰xÒ}méTyÑ¢Ð^¦ÅMlµœˆËµáÁþ}v+êkÈøŽ"+£rº+:í1+¡ƒÎPµà5˜âBpŒ™ß#ÙÅòÆÁ˜£ìæÙ&PICæ‘ŵN4q“西×í•ãÜ÷Ì3¥!öÑ?BštÏg}ë½áhŸD»bè×®]ùbþ¤®T8¯ê„/}w,ú€}Ì:yÍcÚVµŠ+€l† tžñ‡Î°áÇëPüÙÅ\™3"x¹î ªúy›¼êZ®e©éž÷8tƒ„€‚Ebãë×–1˜àÞ­õía‘Yçc‡Nwr†5ÓíÓ¤m!e¶{¦àòü Š›TÀ£¢£((&y†å$u¾[[ú´M\)T¨.ä …Lˆ-qjT]9°<•¶ x°ÅEÇPAU7ævï±UyˆV¾âK$+ñRº™œ*©/Ö7“=¥æŒ‚³mp¨*ˆu^ó° Äd­X}G—["šd}muÍwŽ4b­c¢¬ *äu4n aS< ÎöRNæ–ÅîMr°/­› |ÍÚ^õdZ/@80r—ôí¼Ã#喝³#>v,w- *ìzÄò>je‚_hEœ…8›„¹*I˜5$¥$… è“RW¥«Zö*£«FÚB™· Zµ²ʆV’½¸ê• E Ißµ ZÑÄ—³òd[î€À¥åªQUÔ²DlÕ(&ȯ†}äèܪ_v†U;’qs©Ëƒx/ÆFOs !;{MñŒîTM[høèÒn¹… é•“€éE‹Ö‚ £<Í‹‹ZÅíŸI±^ê¸l¿êeÅøú¹è´Ë ü [“ÑÈ ƒzDccP_I;æ Ð,Éû ²³¨l&Å©óZjÖšHl-,4X£×kÚÜÅÝÔ­~n¢K»Q­Ðs6ñ–íÈ7k…|SªvÓÒÖ„Vøk\Ë5lKM÷ÀVÈ' ÏEQ’º!˜¤®>Û_ßÞðk¿˜úÎ&˜6,×PþÓ¦µ>j@•;ÅÝgâQCà³hçÁÏ3±9\¶RØ,k¦R„ý¶YÇL`D±‘ k(…5€+àÄ/K€¡REL - ãUâ­kNÍ* 3ûò]Ã!܉IèéÚ€Tÿº Yü4B¢Gn;J+æ]àÚÝ)}CwðY8ZIê‹a%‹ïa¬•½9äg™ß‹ÆyÄ¿ÔLÏ9 ‘‘X{4ôø” ‡[Ä È!bkUÀ,J,ƒÁÂÌ¿^0‹ZSx?a–¶ƒØbýÄ>z‚§[Æòl«4EÜ-.wȽ0¼ž½;4—TS&ƒ’±EA]eó‚(¯µÀ½ð|Ú:›ÓUCZ…÷(Í8,ûσ’ üA0A1î&qýó³1Íß5z ªC†^·’íZs³âȨԺ¥c߃;©æÊ;³É]7¯¾t”rÖˆ)X‚~*Ux„LeeèÝÞjÖ^”éúv‚îÅM]ÎÒÅî2±<ùá ø¸=4œŸçi2îØÕ%^"Ežᨶ~z~Ê‚ß2¹¸´²i¤¸¿Ñà `¨+- ìGéªÅ÷4H½<­€ü9ýŠ=ú›L×I›¼\ˆXcj¼šÕbHMàÄýÕqOÃj!¦fü⌹B¢8kª^¤Ìš€iSO'DÊpI,µôl€®ñ©3kEÑcì^±Ž»?Ï”é:äŽñWIE—ME¹‚ý®˜–ÄAœÖ¬¥`Å" ª©Ç©¹l€ƒTØw•'6H…„š¸;o U훀‹ â4µÿ9Ü£•е;  }@%7G=8ãÀ • ±»çžË”z¸9)õ¨ÙM‚©Æ‚ºþôl`©|A¶Q¦™×-S°,ó «il…©™WùN!/èÔ¹·¬cLÈð¬ôÁªŸÛâÔÓ )§û|Ge,W¡Z®ÕreG®‚s78ׂ_|²ÿ p®W#û ^…G#„²½uŒâÊ /ñ’3o¼ëúÔ¬â}¯Õfïn¼!d×bC…q©éd ¼ªšvamÊ€¯ä³Š#*¾¯^œçËFaLºc±§Û$u–Ñÿá9s3‚Éœ€Ék¼Ê…æ ¨!\«& ‹ ûaúöê±L ¯ÅGºüQ®/œ˜àPç«ç²ñÆoóX< s»Í«;.,úÁ)E 4·Â{EY½+•ø#-®¹ZZt,ƒØÔx5»©!‡& ÀXî'8V¹øY¡jÂNë§jÖŒî–Óª–ɬhºã¸²oŽôÿ¥Ys¡¡Ú7ʼne« 5lͤqá)É×ÿa8¦%–LJ#[ã¡=W¨ü‡·ýZŒ÷Ç$Ã×Åéß±ÍbÖœèÐT :=Û•,н,K¸‹ÒüºÂ /œcòÚÉàþ±7µtI–!hu¬4ŒAñ<ì®­âã®-\ƒ‡û?oî$©»½¾ïY~™La£±Â ܲó5ÂáSw“ˆÓ¶!k*˜œe…L’ ‰m\jNHŠ’ŸZ¤…ŒeÍý8&ô2²Ô†Xs=|Saååˆr¯vØzë?L¸ž%6{Ù„IVÝCñJ¡{-âlx-&¸-Ý=ŒsᵨcLc¯Ûd.¥^‹iš^‹i®Å®Å½¾$]¨"!ì9:™ÖÜ4p½Eï¡ZLÝWB³&¸Èd op(ëî/`VýÔ¢dH¯ ‚©ÑŠM8`“6u˜]oõ· ªš·ªlþع¬$Zà²× 2‹m7 YT È °ë&ΣÀ[j’K’ÂZ»ÜúÙJ5gŠnxîa¿.³\wá>0F lQ¬÷_nÍ!¦¾j"]£9ÔÒ_ -œfRMrã]‹âà=hbZ`¹µÍ%s1Ü)Uso´]š‚?žÕþ"nx®ÔW5† ñšça¸ž˜Ã]î!%PófâÖŠC×lÜÉNo:½ºÐYn㪭eA.¡¹—Õb.$qJ«»NBî‰7§ÈèÓ(k8ê ù¨#Ç +•Wïfb¥æÎ6>ŠtÆ®ÕvÉ2dDÆÑ|o=|ê¬qØ‘ChÖevMæoŒ,w¤-ÒMÐjýÅkã‹×yV C*õÚ»ä͘ 鶬;Á¬˜Ca* FyÕÜ~­Ž™#'(åzZif䦴šè[ž€zBî‚ͳØG¯j$½¸6œ}È ®Þp-îS]}çœ|’fV6æò\æÉbñÅG¤b6¾è‘É&_JQyôK).F]] .xILù&åç'à%ï1–9‘ÚSéäqbIäb&pÇ¡yAhI%-»ñ Œ^ÏDúPæI¢íå†#\µè½b®¨ð^Cqç¨èñX(té¶Yq^Ä [.—+øo‡-æô›|Ñ@Âû¸îPbW„/Ü´×?Š1N¨ö(:-C›a¾ëÚyTG_kÚxžÿºp Ì8UÕÓQÉp[G51§£Êù;yd1t'á`IÏ…'ÏVh577Ú+Âe=0¦#bj¶gsØ€“Ø&’Û.t0;¨ÏÖ:qmg é±Y_j/Jý6-uìtåiª Ø‹½à´ŽÕdIŒ$Jcª)[ÍÝoÀk}|‚×q •ø…À”Ððñ”äÒ—qdO .r©ÄÎY­ÞK³Và8Ý4÷ŽîÀõƳRÀÑ…¿ Ï#™ÛÎËŒý‡df¶÷gæ*<ý½;«Úüþn‘êÕqjŠ÷l*#ñ²¸eÅ•îvÙj±dOu,ðŸ”ñ +WÇÿ=מŽùœìÕ-s¨|kn|5ˆóš-™ãeKéCCqZ½&½:£ƒÞÈ^>h͉¬t‹bwìöBh›Šß!ÒlO7î*W<®`ÃòÄÜþ Üàzz¹S÷³9b“„d¼ÇøjÕ8ÉÇ´ø„ÍÍÃ6¿i‹ï³÷øYÜ ªÏªã¥‚”]7¸âšÅ¤Û¶-&Uq¢"Kµ $L(ÐlHOö½[cFâ6o]H¢ñìÙ-¾fÏŽí‰ ¤–»&}GX­V˜Ü€TXN¶é»ÊwªüÀ>vG)u‘`(mòYI82ßE %Õ°0¾šÝ­&ßlèwVk~..ù@yì\úU$¼µ¸¸øQµšÞêãÚòËe¨±hs%ñw{|9y1HjµIV˜uNÃf"ÕåÆ =íÞÀF}öärE½¯½gï°­cä$ܧ6·æ{‡!ª$¤a1CÉ%µâ"×Y³º°©½S¯˜$©ñèME&(÷¦¬÷X\Mð]£}­÷@bèûN°Ó«Ï¶:W¡25éÝÅaP‰´.–|w¥01)xÑJ6ßZÚÙ#RôRw ÜŠ£í…?ÀY'Š4Káj,©õ @X¡UõŸNé,VŒWß–‹¸È½MôMB k  ®XaA Aov~K«wÑ|ÍA’ÛÔ5y’TP°(¹ûsŠ÷üz¦WÇ ž™[o˜ÊtÓj_ËUoIgºr¥Ø;ûr®ÿ››û"aä Ì|3nšylò.ßµ9ò0áZ³o£slk Br)ɨ¯¿ëEo‰ëN´N7ÖÌ"MöéBQàX"þk™5âòÕ~ñxÑI}ìlYÄNO¨·ÂWl|?/L4ʤ µ½ÁÎÒÚ<Êó$/Ê4¨ŒÏ±œÙæ'k¸0ݶŒ< ö]eQXsoù Úõ^ÖW²9jv\ÉxÍ"iˆr k¹G :-aºP6žtO^bº1èx%PVf·¶¬¥³ñf`T²K6Ú1Ú¶8dör$ÍÊœŸÇ¼fìËbq|”Ê/®õ‚²`êÓ8k§ PêI&LÛVKà-i$á€,uR…pî#\±¸³UIN‹*l®õ©Ä‰×ˆ&8UP¸ß6±óÊŽÓïôà;z«z{Ä|EÚ Æ UìµÕËpóyµj'°Ë]©Å5»j£ákQZxÁî¨Ñ?¾2aæÞñq¾ÕZÁ¬LúrR6Oi¼jÆOu>B7uÛŽá¶3jÀÉ.œÞa µqÝß6tª÷ˆA?bð qíÉaÃc"|ÄåäϦ°2ÝñO¼†zX+ªêQæP5µ6™ªÆ²&,\Ì ×º¨pê"èKæn=kœ•äQµï(Pâ®Ø«D\ÜÈZKv>F\k=uWîy5ǃÂm{_×e{¼$æRœao$ú…ç~©"ªÜŽ…´ºP·»ö1VêÙšg IÆ«ã‘uø§Ö¼ ¹„ϤéŽ%Úúwðy§tBÜ«&ûW¡õvØ:\ø—Œ˜«“]ô6¾âÊ¥¸k¾Vµ '°+èT M‹Î:êJ‚hCú'\u3‰èËëÛ+2qwKGO¯WÿÚh–Ýæ\ê‡8òT3a»^ ^»D¿ •²ÁVäÌF–¦îmsÑŸgÌÅ|q²k ®ðUË6‡7F m@ïÿc…rlÒk¹-I]‹rÖ#ïŸØ@Ýy3§`8–Þ•…Aô|hsL 5uå?¹’É›|ŠZ„‡¨­á(ÒÝ>=—"&Ø6Z(àS,ÜÞÓ¬ž‹ßÆgo>¿‡OâÏù68Kk¸Fq*Ζp×@^ôrD¥?Ã*‚õfW¶b1œÙ"bXz0v`CúÎGÇ|×<|¾{/–™<²¥Rä¢>k½æÖ õíË\Ã7æ}loŽ‘Xëhcêºe¢pxóD «f- Ì;~ÂèDb§¡*ˆk†Öù×DÌÝÏ}vEl@Èú…t»sqØc›ãßugýïÊÁÙ;‘X)rmüÊ;{•+Fµ!ò÷Es‘‹·Ýõvð¢`Òñ^“³±fD¸‰×ÝÑ©Em<‹àzë_z³³C/ÿY14‘«$Yw„ÜrÇ_UL=›9ÉÀoöÞ'‰jbŸÆfK65ÿOsò¹é×–°ïJªÉmªÌî ×~‘U¤ø,ndzQóe„UÒLãð$_hç|ð]àOˆ+¸†nžM$11®ðÕ^v?^p‘{ºàŒ¬fj–Ù&U‚«1Ù*ýˆÐÅïž*á-cÆ—*¤6ÄPàܱãj}öm½ä©ë•ìíší°ÐŽÀ¦¾Î+0£ô“‹Æ·5ÂÅ5~CúE›Ò޲Ú”Mª›´³¨ö+M÷á%±ß\K(9¨‹gîý‚7Ã>C›6výC6æKÊËy—³1_Ò×{A˜»,¸øaÅuKÊI‰«©[³8/Ü ahjTµW†i,P†…jM*6Ùæª¡ƒ&4r7¯q)dSúÈ—OOÛT~{‡.nšL=Õ °w[Xͯ)sñ^±u›O¥ÉÖt¯fÖWĦÆR|-Ší¸åç?rŸ˜»N,Ф’‹Æ½o‰2$—ÀxŠ©¸Iªa¶^šÉÿc׊­>r®¾©Qz yQĶÀ©ö„p©f²ÒäÛ½šV¼6µŠê@ãÁöî¦IÉ÷‹IrÛJòKAsRƒ®ÑËõë‰w«¯ÍñÂqr”™ГŠév¬rl”×dØ“±amB@ÜΤð¶wO[9å€Ñ¯ýš¶âcš\i®iKS--·´¥Õà /šKÚì‹rGÛ¤M_ïmÞ˜ø†¶Ghûß{A›Æ/èýl•ÐÎ…H…þöï¼Í¶%—³+äë»›M›6W³]¼i¹™M¾B’Áï¯çf6O_»ÙÜÍVÉ«þ OLÇŠÒ¨ ï0º`_6Z³'éɹs~&Ì?ÃÅ#¹%("Xqµ®G48JÐ ÉØ"w{Üš55Û«ãV5 ÉÝqì¿cc—˜¬Üv¬Ž×éØ!ñ³¸e…™qˆï鴲Є;ƒƒŒ‡Mø3 Î.&DnÛš¨áÊ0xk¯d«GW<Ëʼnp¨×г• `bECÔ;ÐwÇ‹Ì-25ÿmÝÛ(ŠjßfBø|³$]¹‘Å¿í +J—½ †K‚y œä"u_übª(©ùcî̲ÀãJø,–±Ñ¤ÊS1B®¹iyLÖÁyZ¢#ìZ_9—d¹•:ä&œçó6ÏlGÜÎ#–¤š³é|l°qKžÀ>ÆÖ™$(iäùr³9Ü#ŒÛ.4‚t.åëÆ³qGgŠâí¡“gMñá ʽ‡iÍı¥>tšÀmÒ .Åu¯E£I©ùjÀ1bk*“ÚÉÒÂ0P“çùBµºsÈ<*Ž\|^·«^Ÿ]üpl®|]Là^¹Z$èÄÚø¤/x„É,)Þ çêßË¥Þh:…:–€¾ˆ'÷P¾XÈRõ{`J‰Ø2S]Q|æyàfLØlpÓ\L’$¦ô“übõ‡US±á0s ¼ê"Q$üÑãj C°ÉëÊwg/]#lCˆ¢í¿ëL(HZÃs~ì [ûcxQŠx‡"`¢ÿ3Ú¥)Š;Ö uŒbs¯–?Ũæš?g¤ŠØgwJØc†õa}[#¨%oß•Z3i&ê1^Z}<â×S Í(4®k·ó¹&Ò:Ürj<¸E²¸wÔ+,úð9qj —¡øÃôX‰|µ¼y;\+í ,'tEN°U¨ÇüÐïˆ^«0ÞÝYa|Õ: -ªS©«ÎiÉÅwAà ŸÅ6@“¦Ç)–«Làîöл"Ƥ†wÜÌ{JZj~X/T(-:Z:ìg±2ީ־Ù¹² ¡¹FÜçæêvo­µ´¹M˜žh-Ú;^µsõò¬¨[¢ áCÍ¡þ#Ç;å‹T-j\ù"´Wµ…¹Q¯^÷^–/Ìˈò kÞÝ2š‘£%Ñõæ­‡>^mÅÖC˜ p/jБ/¼^jœºdzÑèZlÅ; ½6óÄ”JŸà°+)s©5¹Òž­!lŒíBÕpqI¥æñuÚwÚx/fÙü¥Ž*þ^ÄgLrÚ°G7㊆ó|?ޫ…êwóÔ:A!³¯g.:0 v!$íÑsòÕ3®ÆÆD”«Øuää¢\öÜŽŠKžÃÕ' qÛú° fÄåIÈ2 5¶d#Š ˆ¬VÊîÁU1àï£=QŒiûZlÊ”íl?AQGzÐe°Uj…öź¸Á'wh×Å®cºSL-žØ5.Ë5]󃈓žÔµjï| JN`™3™w löW Ѱ7†ãx¨m8Fü‚Jòx1I’⛳¡R­B–‹ÆäQ®íiKâFâÍòÂcy¸Ç.n`ëù¦5ÿ¦C´°_èã\ñ0o5v¿n…øË͆ l¾€Ã™Šú¬YŸwõ;ä(ó룞½­§Kïx³ dPÌ"íªZ"ÙO©aKQÆñ µÜ•d<“š A‡¥ß݇Dä>ç{jvß–e;è«Ä{pƒP ‰¼YT8M uбøi!ƒˆË×Gðd¦#Q‚|ýWêxsŠÔVûÌÆrHÜï'æÒ<÷Ú0›ƒkŠðTp–‹[Ø– %ÊéA~vŠVßú³ýõ3*G:)ÛÖWÒ»§ŠÕ¦<š³fÔã½ ¾ØY¿ˆææ%ÒÄÏÌÙû=‡ÞUSþè¥n­Í]aX¶n=·˜úá©/A1÷·Æ•ª½ð-ʫž\‹ég¿ÔBQïù둉öÇTïȆltŽóð^Ëj!8½ÓBPD5™?âõ$~âŠÞuÑJÈÎF¾ê‡c¤nÚ^ÛÉ/Ž-5ÇL8¶+P(º;B›=W}>檯•kA­œ¹êežœà'ߘ²¾›ùÃnspÑxÅš—åBwm*•Wv˜  ¯yO gž|´Pmú¾ÿ Ü Å£ÏþÍñöôõ˜±÷:n¬4¯kŒ2.¡3/OÀ“uF6–bæi1SuBxöÎèl-õÒöØQŠb»ÔyRsDÙÈìZœî•îÇËsÔBwsÇr×ÜÍS:ÛÕã]hhŽî™žSØÎ5ÈngÝlŽˆ™ÎÆck5I/ÛN=J8¶Þõïtm=[Á$×Ö$‹•±E°×óõMŠï|u¥»4ÈëÄÔ~,Ðè‚ɦA©ud«àºÚZkì+3«"¾2t|jà.´?S»Q9² ÓÐæÚ'ÄÓ¨bø&|&ô«¯p°)îQÊ­üPc»8Ô”TáÔÔ¥’p—‚ Ù{ ÷6 }Ø·I|è¼È<ðnpÉ>^?EoZNXÄÏJâ­ì³®‚x­ê`+‰9$Ò_*>¤e ¾1¿_Ä÷V˜¸ŸøÏ—W¦Í°ß[Œp¯7_A޹Xo eÛ›_¼ÜÖª†Ià÷ˆ{Ïì^_9‡²ÞFP“Ûw+aâùç‚ÿ€nÌ=W«ÕÐɵ4³,ô}sQ†ë•Bƒ…ˆ¬šÀmO!¤jè¬ïÛ€²[ÜIÕê¸G-jæms-r¤ó÷šªÐzM!Ч*1–Ø$’¨ËšÙ‚=ªòMNÉÅÂù«ªX€ÊE¼s9-¶×%âLìè7Ô»—¹×¯Sžè0¤³T¤_r›êíRXkI­¯a¥_¥É KLXë%¢ª•Ж¶x£Œ@Üv.2cqq•;ñú€¯Zµ>?N”òÖ–uª¨>Š3W€û««NÏ /º?3XøŠ VAzZÖä$ iD¢½ºŸhŸÈ-Á9_üu)Á$Í`‡bð5IøAAħѰ¡XÉùißÕ1vŸ¯õÀI¨^°36y²0_ôÀuý´rë«±Š·³´ú×é€óÕÔÿ1Ä1ÕaÕ•ZZó†Q›0 ÉÆõîšœÄÉu‘m½‹ZÕSV 3öÜÈ®”åØýAoµg‚Wg'¨flQ*ŠFÝÕ½YÐWBàÝä‰y±Î­iêûŽP“RS{( h`|ÔÀ/ðnuv£pc0YçÑñw¾ FM`[’ºüO“²ɽ·6àð¢£=U0âWaÄŽœÇ[Ú*µQ(³-j¸ÇÔÛéÝ`²:æ ÃÂë\ÌgB7Q˜æ…áDaVÕƒ"7ÑuXõÂà ‘á»÷ÙlI0Š[ºžÙ *ÊÖÄÚòžG5`õ‡v–ˆWßËå"-qÂrRÈIò6¬%‡!<®Ù‘æijŸ·w@wçjcÕÒ80éz¬Œ/ƪá8QVx%kíËn1¤ê !Êõα|r QðuÉ(ìÈ·2 Ÿ”j†;"µu%™8•QÙ@ŠÕ±¸×,…?5Š$üÖDŽ÷d¨2A?zUkær¤*j†…‡Õ J«®L¼6&PŠçî-ÁÛ8Õ–3ÃÜ3ïI‰±ad/NÏ™¤‡ž²ÌØ6ìæHØQñ½’v[8*á* ATåÛôþæ²~ðïâˆE†DG LâˆÖôåÊ ï´yiß3z íK–JÊ…pL[74•³6îB}ø&(½-Íp±ƒÒF€ˆåÆ?Þà Nðâ ©dßÞô¥¿B€‘ÆdX‡š ÃðÍnZ¾Ü¤Øq±«Ô¸â—9(ÅÔª4¥X4JÊèȽP1WÂñK˜‹×e}Í~Ÿ`ܦ5Ù‚ðÖêrÏÕÉñnÈàë½qKT,n”-޶zçQ¹Ô­˜¿z¾¢?ú²c_6U+˜< $K_Ö+Žœãš¿’<šš#j5÷ʺާǡïãCíÚ¡º $ö²\‡+6°ÈXCŽú5Ë<ô«,æ ÄJÒ_j/I¹#Vô–G‚üãf†àÔñÞdoº·º7× I.ï8{S ©YÆ\Ôå5çªöè%vްèî‚g¢¼ÙǶÃRgÓº¦æ(úgNóª5Žx—[4WflŽ:ƒM³‚§øö )úûÜw×µG6»‚¥ïëðÓ üt|Ôg™–×ý(˜ûù!W>Ö9ƒ‡˜xŒȈRYâŒ9®sšE¶öÍs·x^t½X±+ ™_=ã"5ô8ëÑß‚jEÆ«¦î)µ¨N.}»¢Ç¼çó½<$–ùÚžê!wŒ‹ÉYà‰‘@ªæ®í%ÍýE¹Ê7ÝO·ÒµçôvJ俢|.Ÿoæž\зÑõ ëÑmQ¬ÛàþoÜ^“`ºŽ ¥¤„ªd%è‰tfJî±Ë¹¿p“$l¸³cõˆÞX}V²¶Yñ(†kí› ˜f7qaÌ@ï;ׯ‰ÙëÅfxa”m¹ gÀ>e\U«Éÿ+cáH“æ"®uCG¹¾ mœÞà rÏauCÔe{\-LÜ:&ñ@ ´ižñ×Ò-ãÙQV=éÖêÉãꑬbwÇ*z~‹Ú˜ß"‚zÐßµ7/'% Á^6½BN¶Ññ"ë§ °š+vC{|“£õ ѧµŠø²Öáww¤ð)æ'›Õ?çß-;V  7{#‘Ñpý›U_pOWEt1\Ds•ZîL÷¶Dø.þˆ¼’óšÿ„h<÷ØŽëçÌíÃпl"Ζsðxˆm0|1cdµ­‹ä;m Í5ñ 7:»›F9÷†V†/Zµ"ÌU¬ÕÕdŠoVÉ/ÈzEy³èuE“ò“ÀÐ¥½fî5¤kfö¦¼šÔ›± Ðl¸·P;ÉÖ ´–Æ ú—ò(ÚK©8NpR •®eì—+ v„<­J ÿНâ¡W„ÏÓöÆ†Þ äY‰WíÕÎ’œÙ¶^ ·Ô^ed¯dê¤{ øÂŠåY½°‚å=-^‡ «Z«^§UBdÆs¦˜c{Gб’K¤{Ö4/)¦WwÁÞð='ÑÒý²T:èpuóŽ\Ǧ¾m’^:ƒ^ÛÄyšeTâ4¶½ø#6bQŸ¯uf£º×ïXq–f¹ «Lûå†*™ûÆÜªï]¾‘”þZ9Í+ÆçUËjÒ²ic‰«¦ieÌyÒSÊ2§¿³è‰7V›*в(oEºÞ².Û ²*‹­ø¤n°^w˜ÐYŸ42ëhÁ﵊¡…QFÄOØt³Ì%7#û»O$WÍûÈ(ÒaøTÒx›dĈý[¹‹ÖF°“]Ð"ù &‘Obs\&câ¥4§ ¢FíïB›ˆ!hÛþîcœ¶gàO,‹ºuëbC(›¾h2÷»‰Þ©[åck¤mϦ:à>sE–Y6— ¸ï—²qEiJ™`ÝÐo³o}VïÖ.ôÎå1Cííî2˜3Õ®_ãÿ*rwV%dcÖ~^:ÔªtV,ŽXb§}…Kë3¤ø¯3ðéZ#scÊ™»Ùè­«5“öôrÝš†[‡¢Þ£Ï;‚3/xûÉdôúßg-\_¯~ÏÂí ÷Þw„ð³ £NG[µ^ê&•ÿý6¸G@ÛhWV÷³·Ø]³ƒY{+3'ŒÝÆäî#î5³aí@L.¼7U7ÆA¿uΙÿ}qE¶t) 4Y.V~‹Ø÷wê¬tÀ¬Ò½‹Dý;S ç«‘·ðüuG+€ÑÍ«Å\'3Õ°ZIÌT¼OâdötâÎ2Ó%a1»g[íªŠŸ½qÁIfKUMBÓ½ ò^lã›Lž¹ojÔ‡îö''l×€5&MCv½yŒÄøÁñù„#ç [©Û›“;TÀéT™‹%sôÖUq×Ó{¢K7‹à_®ÎØ•»•rap©âÕMü$šà=[û;W¡üñ¼¢·#9WŒ³ÝšËmuÜœ/tG5Б¬ ]@Ûf"Ñ*Ø.ëȯæ–B~¾Ú‹ìÜù:Çó5ãÙ§$‡Ï~lùjWÅ•¤«(Aä…/‹ 3öÏ3‡‰_êªÒÞ¨ s3¡vpŸ;b’Û±lZek›Ü“y7¼¯€l˜dHæ³üfìð¡ê¬QG@i/¬!¼¡ø_@•Þ o–á— ~A³ÚËß8ce…c{êüóLgöësg2ôÒX¡rÞÈó×V%ÕžXÒÍ¡kÂ9ÛN¦¬Ô{åŸg¾Þß|Ìò•…Z›¾ãÛW"7f-}y6Zal½X6º±jÛU¦oæf߯U‚§5‘Ý h[›eιkËšÌX8‘VäòEç˜rÙØU Ï“ÚUs­$ü‰¼ñX—Ëz4?w¶õ¿äu"æ¢C÷GAÊ!ä¦dGA ¦lHg½'´'&îÆÇø™cˆ®»ê‘¼ 3†¨Ô“†\¢ørý-‹t‡U]@Ö´aásWÑNéÝuŸ!å/g­®gWùþ—,¥Ükmê€Ã”M×C·IrQ{ƒû3’˜ÿ#^¹Io[q%ÌÁüåámÜ8uwÐôkˆ2·Ïú€ÖÅõÊ:Ŝ䤯¿qú¶.¸>øÑèP ¬&¾°V»³¸‚·¯îîÅüÉøõ[Ì^5?i|ar]øLkÄñu°FùÑ7p5 r0& a–(÷Ÿ¾¬•Þ&àª`ë’ð.ØÖìí-^y¿ZüëC½Ô*^Ü.t¼+½…¼¯J½9ê*ÂèŒ@zÒ ­ÎgnÙ—Xy²x"aî±±R ‘’ÜŒž 7Qfä¦\FuA èÐݳÇkMÕEÄlཪ÷Œ¡4!%ŒAuë’ëÐ9ç¸1µ*Hép_\5õ’ˆ³r˜Ø¿s%)*Ð`†º"§~ º¢¥ô¸ñÍÙÖÀ·Ï Z¶6z <â®g¤P3èË“—®Ni¸ØÎ“!Ô˜Ë}ù·fR²kW¯gg6ÔE¢uE-qï ç’u=¹Ôòs³ ”F­k#Ù¤3CÊP¢€NÌcçéøy(¥/gB—ô}”NGÒN½ušs)È]é5g%d@ÅñÁkÎæF4Öšs©ûЕ¡ô'³¬æ¬€5˜^ò˺‹ßaV•Mí,Lúz²ðR2x‡ŠŒMßMüÉCú RÞ™{ƒ!™¾v´î¤7èÉôÌÛ1oP3Ét[`ñ†kÞ é“yƒ¤So3ÿ° ß`i;|ƒe;¡o0sPÛGøã‘Õ:y[­˜÷zhfˆµ©›=H[³.|E‹;ºXþéÍ, ÜÙéŸöÃoõÕɧŸ¢Ó©ÕîißÏ·AO&u¯yeœWôDß÷¤ŸcO»žè×X¹«á ƒÈYbÊ¢…ÿŠ÷âd"õ:µnl†jÒÉS°ÃqØ@:pø<ï]?&!žŒÄ–=‡^Ï,J]ˆº:¿ÔôjcMÑK­ƒlWûˆhfƒ „t2t$¤KͶ*‹)Ø\Öަє¦Êv­ïU‹”§e3–R³®ÑEæìYWÌŒED6sê…ç™Ï­­<Ý`‰ ²p©ï4»vZ‚>ªßh²Q¿_žÍž•qÚ¥=kµH…Ó{¹C<¨™>[¯÷©‰,¼ñ¾SSé—!aHšI]]\vcc@¦·úvcîuvãý:¤ÒѶÄs£]JoÐ3OCB(!•ŽqÖÞß) ­Þä <ÞËõÆÇÿ\gV‘«ÀÆÎÜD¬ö¶¾p ËP#mãì-TƒÌˆ ƪƮ7¢º.[ÿ÷Îĺu`bÞ'ŽVÓ(ÓâÊÈu ëÐ9ÚÎ奅(6æ)âMÚÂE)Áë. BŽÀtœÁÿ-xesúž´s>”È¿²ˆY nmv•ž¼]éÚÙ•hr+Ïñq—™œ›“¹lãËÅVßÔL, >Yt!$ébyV[…e‹Õm…"­ôJ›dâs¢XlzX/ï¦ IrìÂp$pÕzo2V;ï2,çÉ/|àÍß,;0ÀßM·Û¹Ï¤ÍtMpZ¢˜†§úê<0ÕL´.ÇuýL‚ÿÉMÒú~ww¿‹«ÐmÌ5¤ær‹Þ8ò¬¹Ó3/ï5tØD-·ìbðìtýÀ_LáÂ_‰×À?`,éοí¬ù>/ÖÔ;ؘ„¬gtó{s)¨Ù$ò*óðªWP¸šÁ'¯ïïî쥗bÆJö­/¢Œ³Æ÷²ÒÀü82mÑ^œTŸÅqMò¢ÕþÓ€èXæ$zq6i»¬kmÚßÎ&}ƒ™Œ‹3P.í¯pd÷½â5ø¢$½’Sí…múÚKðà–x›/œÄ_–“û¾Ò‘1º…Ìøƒ@ê™Æ=v~Ÿ4ØkÛÿ ÈšMFzZ*½Ù¼P¢¶¯¼ÒT&SÑÝùþL»ž}° öWÓXAE¡é)À‡ÝQ’8xx¶…{Dg‹«¼/H|…ÃãïöšÕ+½2éöö¾o59]Nºª&gàýͰë ÖX*Ù}´¿ðLÐ_ðl*u)îðxw/ ¶^jÙ÷e湩·ªxw$Def_Z­&¥Ã@¥i²Ìt@ØMñŠÏKµh¹Á…,j ^(dtf>5Oã$&µ$¯¡¸-ò¡²÷QÉU’­ímÀ[oÌÙ`Å ôÎ÷M6¸Û†ãy³‘: ½o:ú`¯ä\ݶqØOùÙ•±Ãéû(|&éÅÙÂÎS‘ÁÃ+ŒÃ¶èíbxíÌ'Dr¥¹'º(p¡mÒ qw½vJ×nsCf°.¨ýžá¨Ý …=HŸ•EWx]¶‡0€«qèvzîÓkǼëÇòl€»u‹Â+™`D¢ýÐ4}?Ê´†of·ø Ã°p!1öãím©Ë°OU´Á|X_ªŸª‚ù¨+%¡c÷`>ZýÜÄiLÁà›‚]÷SŸ ”år¿»D¸Jûi}yî@Z‡Œ°õ·pcƒ™è•oê+°º–´-€Sâ4x ·{’·$džP›Rê: ÞC ¼ï%ýüL—Œ¦]†R1Á *å¿ ¡þPgÁ(ì»TOö±†2*Uƒª®‘¨&~èzaøÈ s’¾ûÅ©vµ‰œht–”=Ìí­96æÄ ÷†Ö.·¨–2‚â­É,Üjêt9܇h[vkB>`*Z(@Ù5>XÀí.H'(Û¾rï³ ûÑÝx²øÅ\ZÝšôöœM†Ú3Ðwi5:}Ò[MëJÁj»m7ÙúS¶/B·cáïÿuÖØ2ž¥NÁÊœÓߖȼ £`@úr[ã…h•Nm[¢¯t-í}h…3[LjðmòÛÜ…8§‹£·eåKcœÁ–!ÐÕÒ–fQd8jQØzç°Y™¨·`ÂߺÞë AšI2Ç@óʬNäIÎuÞ êN~^¹‹QcÐÉŸŸ»óÁÝ´DO.8> oÜ7eòcá ­ÏÐ@&¿Ÿ¹;ç1Í•3íÜD¥â"PüJŸkò£Ò´nç›Lm‰ì~;ß\.f»ü õ¯ç7ëõ/ù/«õ¯«ÿëþùÿWê‘oþñmöÙîGi‚[%ÑÏn~Þêèüêb±:uê¤(º¦Pÿ ÿÁ¿Ë®hôßÕ§ª'ÕgpDÓv“¦S_ùY^œº#ÒçŠòü³· IŽÐ-§»íbù1zôQ?¯õ[Ï+¥òæ»uú3(Ï?kùg­…¾Èÿ2ýþú[uúçêc–K®DÔ|z{›ûü²¬Íóâ^(iþ~™+<ȵŒ§¾+ñ5Ÿ¾Ókn¬91nì¶¹ËêÈŠ‹òfÆ‚‚ë~ª•µÝäwÓÍt ¡ÜæïŒîE–+yëBê„‚6k®?W]¨ÁEgú}Ý* 0¯†‹¾w‰éÞ¤Ÿdæë‚†ís œ&]ÝU0g…ú_ž;›ÒÜ÷Çö ¿_i܃O^d@]fUcF°º_¾™oòõ•ž°­âfþWÙÿÕ{þ—ïÞßÍ·þùyùå_¦çÕ—ß_Ÿ×_~ }Ï/Ôy¯ð¾) ¯¨ô7½1á›}Ow®4Kfî+=É_à#œcÝBؼù›ÿž®õ·®îÛIü³mû¢)ÛLÀÜ=ÝöP‰ýŒO+]¥ª8sxÚö·‡\ØÏ•šós]÷E4°IWÙ?vþ[!=Ý×®™VzZ‰ÝÈÏbÛÈ\lŸÛƧŶñçÖÏŸÈ\üŸÆÙ&þ¾1a1ÅoL|ßZ|ß°Zòó,O|þß®¯OÜÆèù_5EStüü‡?=ÿáãßÿyþ“:ÄçåEñ¼?Ï¿º¿Vs“W`l9FJÈød¯gë»ù uôæ_†RĹ:cÕß *LýñÎ&š˜c>uð£Ë}TO5ÂSpît™:Z¿€d’©ƒ]¡Æ7Ÿ+¨Q‚úö¼hör2bIfŸŸýv½YB÷báÄΊ•ÎõtÜÎW×»›­ni ÷p*I û;“#@ru”òÙÚ¥Ý'â½½»Qßæ»éùõt¹œúŽt]gZRzbçXM†<ŒÌ×øoª¡~¸ZÕùì';ÎËù•öeæJ½Í!±9‡´æüÙåB½+XÁpa€3h–µ=* þ- þfÒ3H˜ý ið"|·TÓjŽ~TRü>Ÿ*ɈôTÿ*ò_½÷¿,øÇ++› ŒM‡ž ='¨^ô#Cvÿ4¢^áE=BR3.NÜ+ðn<CìD>BÒ²ùubi¨³O8.Nô#$ÆÅ‰¤¡Þs±ã°!ô?@SxQ ²sà„šÂ‹c„¤d\œH† •ãâÄ2BR3¡/ kHèK˸}é¡/FÒúyö õ¬!„Ï.¾-×PÅgW )ÙNlĆü‹ß´'©…UÇj'Bz’ìïëõ/EZöÁЈêë…>=òü%î¿Ô¡G‡Ó³8ä´Ñ7ý’º-UGþ±þ(PHàéœ'BÖ«`6L¨ÈΜÁ %äúLÎþqgeR³žûO{ª~ƒD6ã7:Qì‰ìeõþ G3 PŠZb¢¢6`Ò÷ŠÉ{ò']%q¼'u­w?2™ ŠÉ¿IO<“‘ž@#Îßèœ<”ÉëïÈœyBú#Qþ|l ÿ¤£g´4’”ÂPâ²RXK%³Á3¿©ùüŠ™„@ÞÃ;¶©š@û§þ‰;ŠPÆp$eSYxŸ’„|`O’‰ãÓ1@ê’6…g;©óÔžŽþ˜ãSÚu%“3J~n OÒ$¹¸sߨ¤Ëá7GÌé3¶WÖ*Û¾©O-ky)-k)-ky™--k™íYë‚ÔÛÇ‘µÜìŒÈZnvÂ=R™=R»=2¦xuMÚ#Š÷)öH|dì—µ­H¶`iX[ð£ÎIªÚ²­qHâØ¤é› Ý#’ 5i›²Ä="‰cÕ4Ð="~U6ÒΠ$¸FŽ ·×FΣqi‹4vÄY" S0CdŸH"™š¡!Ú'u»ãÝs=#ùWËe5²O¼EâX$Z»Ñ>9B Š÷Éè.;dŸàž4øÓê$Ò+†»kíâpÎ뻲ëäÓ„¬¨õœÚöc"Ø?ºW*Õ¾ø5— ÆeKBŒ÷Q vqbSš²$Ä.±Ej ·“¬ÒùÝc‰ªä v†‚½Òv¯tf¯LÇöʇÓMW>=r¼ÔvÜ^‘4ùÓî„ÙÑ;ÅivÑ‚DìèÀ}‚M±ˆî\*I¡ Ifã:Bî:@7)Ò$¸Kpvر{„h$ÜãÃΓÎî½7^.gc6.oœ>ô<ñý|²û=‚ýÃ=Ò ê¨×MC2®› ƒªÆt“f`r—´º'MµouW†d|—TŽOZ™ Ÿ´vâû“Þ%ØŸíDÍϰG;iAêïýËʹ´•Ë|ûývɧcåÒ{#·r œD²ré½òáV®†“HV.½¥3€í ~p#VD›Â¢¦¤³Dè×M¤þDv.½7>‘«á$l—h;—UáÕ·<Ù%£ºIlç:F7“˜ön¢?­«‚ˆ#ñ4©ûºÎÃu°?ê(užÔ¼9év¦´E× ãgJaHÆÏ”¢Ø{¦´†düL©ý›×ÄŒÇ'}6UÈgDGq|Æt”~ÿ‰ó³çDi Û%½Þ%NC?Q|Äña’×ÈÊý¤5”®àë³ N9Q´W1‚šrÒ3%Rd\§rª¥ðåר?q-eà³7AÛ/þž«ší‰!j’œ&\£ƒ‘(­©`sDSÙ{® ò<õñŽXÈÒË`>ÿwÛ1ù§¤«8i,Ú1H„ÒX´cÈ«=Îþí$"Òß1HDD-¾c$NÑŽ‘8E;FZÑŽ‘ˆâƒ sœÌí˜ß%A‹þÁ´â>$A«ŽòˆŽOЪ†:frt‚VuŠ­˜Éñ ZÂp Oìñ ZÂ+f‡ œ e{¥ÀÕ'‚Wêc””¼"‰_£{ôèÅ¢¸ss¬L†’‰@¢Ô•ž75ãCÂOZ¸$"wià¤kØÊA0ØÈl=HR—áhª ŸI²1 Þ@Ò'»ŒqWQ0 6V× ¥ ¿éTléP¸ðœˆ q£ ~ëÕù®ùˆ©+æmuåD“ˆvõ È‹¸d<׈ˆøÇ!B‘`|Pˆ’ƒ;à!-­xçFQ®jÆsk°jÒy»ÔÓ¦œjÃË«7³Õ(¢}Ì4ˆO(Ôȧ/Dáo<åô€¬T¬|á·2ohŸCÀò‰”6ž¸z@n«¼æÂ†t+ð@ÓòA¡?Ê8kã€ÄžÕ? 1Ížú G^ñâ²ßƒ]ÁÚç$±½ák¸å ½äü:¨c¬šÇ*‹c:¬øÕjdöpì±®ÆçÁ®–Vü¸”GRµÀÅE ÙŠÌf&ñ‰lfÒ¸˜**+²™IFf3“LGÌf&h639´—ÙÌ$>Ìf&ña6399°™É‘ Ìf6b˜å3<ÓNf3“Æá™´r˜ÍLZ9‘ÍLZ9Ìf&­ÑfVj€KOvxösù¡â2žlfhb3Ó¡ ã6361n3ëë½6³²;Àfæù¤mfe·×fæÇ”¶™uÝ63¦%JM1uTê°ÛF#63·ÖGmfC¹×fVô{mfɈÿ°kd3;V2;É*dÍ>$û„"ÌpK×ñŃ¢‹b$K^UEvEúª*D²(ßc'I†ó#’%/aÀa£ö1ñß“b Õì¨L‡ÅŠ X“ÐÒÕ3±¡’”Žp½)c!€9°+Æšâ¡Ã\‚ކH&íoaŠdºöeÝ3û1Ê'²(?F¡dH?ÃÁ$’Ã÷\PQuÑчÊÇÜV°³æ4v³±¨ÿBTOd»ÙXÜ«–ìf£qÿ©+òØn6ù/êB²ÝŒíºq»™'áF1KÚ´†£±›yYˆÛÍŠ˜$mó$Ü´q‘$3aT‡”2ÜÚXämd7þOäŒHv³ÇÇÿ—A´m6‚hø<¦’{0¢Õj}Ñz扯nÃÀz7Æ!Z*éˆT')aJÄ3\“¬Ävï×,}o¢T§xLÞJ{Ø›ò˜* U{+¦Žf µ¬!?¸4/9 xR‡}oHvê’> ÍF22 ŸýéN# è"š%s™š$šy :8ÝIjHƲÚ`Yc±lÏ{A:;Ú(ö£3 X™ú´Á2ì“Ó¨„ÉiT:#úT(§!&­,”ÓÒÙ塯 ¦Ž‡>ò\L§rAE|5¡œ–Ì/—áA"ñÛ1Î ¯8¾P˜´'Û͘œ&)¶LÂ’LtLN“4h&íša~PÝýÉJdª#žáO±BL çQ9ûSÈÈUÿcJg³IO?ÖvVÖu3©zŠhus1eñ(Dc¶ÿp Ü%—N½ô"N”z[à¢OijÑìLn{Hêel‹r<ÍJÇÙ™é L:#@gU¦knDÒY1ƇcýCR/c ÜH½ŒSIgÅ9è‚ñ³3Ùõ`Ü0Æ1𘃠ä¥QðO†e…Á²ÒbÙžË]«TÄÿëÑŒbΰD¦Ï£ýeËW9¯eÖôQUw¡–™ãÃä4‚fŠ„ZfMäžãµÌš¶6B\ˬ‰ìç¼–Yã.)bršŒg È`…$¤ ™¸Š(ÑÏ$ùŒ‰a’ðÅd,Ãç%Ï$L“€æDÍ$šHäÎç&šu^Ó¬i£ÃBM³x q§°†dç1RÚ‡»žä Ù‚( ¸Š$F¤ª Áë"<œC†¾ÉÀq‹ ‹²hÜ¥r!•!ôEöfÎÑDPaÿ^T“£,˜¤µø,É(\•í~lL„…D|öÀ§ñé D; ªöƒÞIÐì0ÚxÕAp÷{hœ¯†ÆŸÊÐhT’±ŸtH$, Cr<‹UäÃ˨$c?7Ž .Ð!9"û™d^÷‘LØ:`Aö’ytHFú(+@ê Ë zÃC¤ÞÄi ©¢ã' •à.™ˆiDob5$#=·ž ¦~f“,œCjH¶«qTFÀl5 GÅjèèÿÄ &¥~Ä=š £ÿSpçëõ<,$²Ñz@Xì§Hó9 hÐq¢-ÅbÏtÜ~ ?:F" PÍñÃÿÂ¥.ŽVóI6Õ2’$àaCѰÍÆÂý÷Wó9¤&ÐþÊBˆf£5öüAÈ“jIy>X(µrãÝü`xöéø°§ˆl Ï‘-Â3¢Ö„ȆxFtÈk’ñŒ*6{kg3d£xF:]³@Ù8à ‘m<ÿœyIãô¥˜DÊ¥ªIšñŒFª;Àa¹Ÿ“1~â ²ùÞHèQoÒèÉô%$Τ3)à?’ÎÚàuîñIFèD„ –W¸r¢ §2Z9pMóh³ØŸ,Zƒ¸ƒ*½‹àÕòˆû3.·ñØZ®©ñB%1¬aSÁYK k4½'Ð\“XÆ—Ê8  ߥQ‰‹Ä_M〲{냌c™ãó«¦q@©Œ n[MãÉìÁöÿ?q}³hÿg˜F0È÷!’! Ã4Ї®!†Œ²ýŸab÷$ó$ Ó±!†Œûr5¯v@ñ²J—!ÜcMP¼ì€jk{«¤I6³Xž:¨2ÙIŠ Q,k¢cW8óÆ}†GË< C5DDlˆa㣬f Ë&OXv,‹BÂÂ:]UPGC9À£u4hÖÑÖ$«£!-¸¨Ž†r‡xÆåCñŒVÀHUqÑÚ)˜ d³ì{ñu(ä(¨Ó{±Jøþ˜¶°ö_¹Õ¢jU ¨öÎÅž-—¶ò™ˆjþ†Ðc«EHóçAµR¨o›¢¢%MFY»ý6Rü§nkW "]i¨«ûv"gà7}Ñ3…-©ãàÎlišÔD ÙÑ¥« ËæÄÁ&jÎÇ ¹Dü.EB¬_‘Ak’ME7j"vº¯-Ú¶¬©ˆ„(–QÙ•Am©)KBuϸÓLk”†nI¥ÆÜƪøF$ˆnÒ²±‡]ÒÂ7?R ¨ANéºC°›á:ƒpVn[ÎÆ*:Öµ¹îé÷§“Û> ÂÑœz(%è¢9šDA"oÕ}ÝHèFä$C"¡[Ø]‰uË‚ððR[xÑײQû¾&‘ÊVNâHBåHKÂÁOàÂ!+â"á#•J¬´ÅñˆJ–„C¨À…_ÄEBµØ¡QœŸ`Qã/aÄ¢&­OU,®ìMø²ˆñ¬â‹‹áYoðÌÚÔ–Ó1‰íÈ\Îêé^ºÑ;X­Z¢bâŠkÕ†ÙuA­Z¢Ïâæ kÕÊþ&Ê`‰n>oyz U2ƒ5ö'Š kÕÑþM•¨éI¢0☠?éGr9±)!—SÈ~≚étOO’Îå$ÒUZö£‘†‘ÏÞԦò¨"p7]”n.ÜGxHŠÔ‘ùOuimbm5^sûCU¨ý„l$¿á’Žß ;?òzûø Ï'¿!݉»6醈KhèÐô|Òñ¢IÁ~צƒ3<@ŽHÎ%¿A0$–ZƒÈ4„+)8Ã÷†oGK:~#B4)8Ãó9…Cs,~#³ðu²lÎtüáE"E+g$~CƳÂà™»ms6jS{¼Æi1æIã )¥qƲ”ÆI^vJã ìi)¿%5ÎÐPvÉMÔ8C[ZBãD>uJHFÍ[²Æ‘ì³È%ÔIdÔH&kœÉ©ìh˜È0´dE;Ð<6nh5ÎЂiœGÉg'À33µGÇ£=B|;.M’Ô>ž‘mâ™´ "<#Ð2øº)<ƒ/¥ŒgÒjJâY¸pxÖ´òÁ3Ò€ê1Ö{ ðŒKü¾c`…|pßEHÔ D f ¡)‚!|×"3×IMÕØŸØâÙ„ÅTlªã˜&1À’šB4ŠTS^’bÊPR޲ ‡ˆjáK ZtØÅwxîCµÆz> j«Õ¸íÕ·Ÿìh ;¯ $ØÑxy ^}[(2tD¡ÉX!^7[(t@‘¡#*á[ªíÄ6´Äu¡Ð%Ƶ†’P¢‚P;Ö”`®“c~‹tSGU’¶´kêaõ“2š´÷ØÐ˜Î)ÙÐXy ZЕbYm°ÌÄϾZM÷XІeO4‚e~ScÆ€G!LðÐN*ð$éŒ×çœzJ»Óö3riAÍÖ’Ç27pĈØ$,ð94éQÁ×8Ò?Ö’ÅެÂåšÑ•Þñ˜"a›I²¤õ I’.Ðv„$»#3\oFÒ|o8’aR'áxˆ®7Öh‡#ïßô/è?¤Rí) û‡ÞMôu%™Åл9ÉÀ†ÞMàCÒ ˆXá½›ƒ!‘lgx.ƒÚ»ˆBtK»ÕÔD³Ð¬æÞ{;ˆ>ôn6†$!™¹]×T‡ý’UÃâÇÙ¬f|ÒEÂ']·j*ϰ?ä“öpz>é‚¶„OZ:óãJ—n$ãJWgr|Æêmx>#ÕjÝ{©V‹ï}¤Z­ç“®Vëø„¨6T³³Qù¬š‡¡Úc+nì½?Ó­Â(•ÑRrˆF(•ÑÒ’øzÂ]–Ä×ÛîÐ$ˆiR)ƒ¢PÂb‘T¡u$¼ÚÆ$&áÕ6*ÞA4/ÁP/\O‘%êËë)表4‰I°Jçb"x&ôÆóé’½ñn’½ñ$m²7ì ÷nÆ|"¿¤07Éš§ûÑ=’Õ¡­,D2[[+´•…0Å« µ1 ¯‚Öò†É䮘’o¸ÀŽ™3$$kBsšŒd½Xœ,€©R¬‚€\w,@2¹ÀC2©7“¦¤ÞT!ØÉ5Ù$“‹¿1$“Vx”D2 ÁN²™1$“H"$c‘Š!’U~QÄ+°+Â@2 ɆИ6‚dÇx5’c3#3îe²v/’ý§kšDýóQgLCÄ!`Ôhˆ…ìÕĨ³Ái¬Q¬Ž:kPcMW b"òÁ¨3¢!¦£Î§±¦£ÎÔX㸾$P¨!"Rï§aU·³ØÉF±H³l^ã#Ùñ">\M"Å…Ÿ¨Ò-V⚦dÒb"Å1Ü‚žOÚ4æÇ•¶ÁM¸¦I½$ ‘¬çškˆ£±g㓎=$M3×^Mk>ÓYêæÛïg?ûO¯íȬfá@ø=œ'AÈbV3\ˆŽÌjFIÕ˜Õ,쿇³á$YÌjö‡ßÃÙpD5f5 úÝÃYq„,f5 úÝ YqD5f5 ûÓ°þD]FÈbV³°?üºÎ¨Ëª ó–ÔŸ²¢þÄYêB¢»8ñ½»þDwq6œ!‹YÍÂþ4ñ:dëç1¨öhYíaö³ÿ$TcZîÂÐ~F$42qDVcZȇW¬E*<²c/äÃ+ÖâjŠ*<2 -äÃmh Q…G&¡|¢Šµ¸Û¢ÚŒLB ùðZ³‰/l+ðáåqE>¼$­0.^ØVWdG‹øÄv4‰OT 2îOTÂXàYÒâõYÒ¤õÕ­mb>¼níñ QMÛÒlé …jy>‚j®öÆŸ+jãQu‰¤ 7è@²p8ºâ'нuÔùá â'üq€G8 78W2uÅ ÞœäóŒˆ\aKUËe_a&E‚èF£j²bMÊ~AT-ËTõ΃&E‚DÕv¢ÌDùvŸ #b.I®ñhÿ’Ï3¾;&³¤' º…o>È¢”!'8R4žLä¶`56ÑÃå¶W{ãE¸z`r›]ñ9Rdù!D7’/Àù¤ÑÉ[áâúƒˆfâ:äc–A3Ð8ÛšóæW&$®b#›«By‹å p>²ñªÚÒ†]N ¯#-ëò8²Er[ŒH‘Ü&Á“Û$ð‹ä6 Ù’uµ²"¹-¿pýˆ¨®Ÿ‡ËmO÷uO÷u’uõt_çÓ}ìÝ#ùï}_çqv¶Ç׸µhó‰#[¤,¦jÜÐJ׸E>É·d3¥kÜ"ŸdÛÐqÈkü%k܆޴½wv&kÜRMÖ¸ÅoÉ·t—$kÜFDcH;Rã6êôÒŽÔ¸E¢dÛH¿d[‰Ïª%kÜ’õœ®qKÖsªÆ-=„·°E^.¼¼æ¾|lyí1°õ!"=:éa°,ºO¥9ÕÈ;óÞQ ?¢•Í{G5ˆ¥¬lÎ;ªÑ‘Iiˆ˜I-5”²BÀ"«oclÈ)ÐË0e_+p1Þ²ð{º©Eèö|‡¢”,˜‘tù¤s˜]Œ `¼?éߟtÚéO:§`D^±°K~#yÈi$¯À½û‘¼|÷#yžO:¯Àñy ²}¨; >!dc7HˆÄn"ðˆÊkžˆÜ|gˆÄäÐ>Q*¯áŽã«R¼*B¤±« ‚6vQD6©æ·°{’ÇÕ<“ª•EÈ6RÒlìî»Ù¤Nûþì-÷†È6vcÔþêiÔ¾óqýÙó•×èKÑHÊ%¨&] @Ÿ|÷T°TªAèÖ£Ú2Cµè}líÁÄ?Z´zC¥£ÔE±…ÞPN䢨j!²ßÙø*ï -$"Ç&×Ä ÜÞ*v#ÙD­‹úEåÐrOŲñ¢9RxY\Gxë8Ÿ(MªÏãcâ"£¼G“–‘D¥€ÝÐÕ× ÂX¶.Ñ”¤ óDz ó‡ßòq ±lñ¸0–-"ÇÆ¢Û×Ekf“ÕàÀ/zC¢á&áœm6Žp¬BäÉ®äߌpµzå}ÑÕÊæ¢îÚ¦zÂ9Wgô’1ÿ)&!àA°FÅŠ•j :QA7’‘>€v…¢ûÓñé <ˆø ®Åhç¶ŒDD‡lô![ÇHD$)“ýñˆT'ûC¤Jö‡ÉRŸýÈi‘âüì…¿Xe•æg?²‘L¨1ÈBð‹²=Ÿ&IòxTûäkwœâÞbìßSíŽü©vÇ>{ÝSíŽq›X»ãHT{tîA ÕÃ&=ýض²¾¨› ÜGƒ¨V7CQ>6†­³ 6y;ÎK7iìv‚®³©©Û dôvçhJVWC’ÑÛ œÃ3y;’ŒÞNà ù©{dÔÆÖû]’¸IÄjF”¼-a2ÞŸ†uzÄæ7ÚŸ #±¡"à[hcKóñö«1>Õ/'ª¬!Éèt‘…ëÇ_¼TeYí›Å‹C=iœú”#=š¡éùÝû9 eTì#º÷9Q¹Ýû œ¸0õ°{?Ï ‰vï§âÔs¢øÞσ.õ }™vsñ;ºŽ3tÀÚ½ãïÚ¬“Í‘>5ÉŽ“>µÉæHŸºdÇãû?Ç/÷ì“'D|ÆEŸq‘H´eøUÀ®Bþ ;@¥õ$Þz” WÔmùH´ûÓÝúÑ.y(’ŒÜ 0Æ=^ì$ùw€6 “w€"ÉØ ÜÞ™¾TÂô½›u,Æ 8Â¥ï$øþpLß&zÐ= Üà™¾TÀô}¢Â¸Fíq7"d%oEá&Ð{µ—7ï=¾][|£ŸWëÅj·uæ6l€gYÞ©>]Ý<×Ó¿\ΖÈÀÂdAJ…»‚™¦íëÊÖ²Ì_V•Þûh©k.ݸê¾êÁ/–‡>ÚšG;ÛêÄGU:·ÞðhíÇÚvõ<  ¶—­êÕµ\VÒ£ÞCC;ÜöÑÎ<:ÇZÛ"ȆëK_™uØU×£¦"¸yTϰ%õ-Ï¥G£±Â ö¨8é¦CMè0{:¬Ç:èGíÔ¿œÉFÓ¤ÇÚëGÝX­z!"è0,ÿÒw¸<âQøìW[AV¡>ZzZÝ/ípWØ­®GûêÍl%?*ì0ëGõ~µJµ*<ÚööÑÊ<ºZþ¨mÕÝŸ·:¢ÕÁ¶ZÛiJµ>éX'öÑÒÎðác-õ£¸_)˜îy¯¥ža·a«ÃµÔÓä–¿{Ô´¼¯Ã‡¶*<:‚þûÆÚ˜G[|t&=*µZ›Gû(=8>`«…y´t­ŠK›»Ga«Öªˆˆéð/GZMΰôè‡~¯ò44V/K­Z{4›GõAi´Ã©« Ø£ÒùšºóO“°†Se.£Ž;œºÇô€Öªüh#ßËu8^©âÄÝæ·óÕõîf›OW꟫ëÛù6k/º:Çÿ3ö¿„ñ<öþÕõv·Y/ £Ëùõf>ßžAŸ.Zýÿò»Íb¹Ø-ÞÍ}¿ÞYÀ³«ÙL‘!fî;óYÝ/ßÌ7Úœ¾ƒfÀÀ~3'\ïW‹]>›ßÞfeîŸÛ½¿›Ã3ó©š_xð…B±/˜žçÕ—/oõlzô¶@EÿÃTScWô´­^$åù' }OŸÏü¿]_Ÿºqü/ËIÙqü¯«æ ÿ?ÆÇ¿ÿóü'…²åEñ¼?Ï¿º¿Vs“WJ`Ê|Jäò'{=[ßÍÐò/óéí­:(Þèç·ç 'ÉÏ’m枬ƒ-ÃSð?‚›&û~úÛby¿Ô`¿\¬ôwp LßÍ7Óë¹ÆÅÅ,¿\lïnÕ¸–jê9-)~óyQà·½œœKFzöÛ‘ƒNÏŠ=aÎõt']•ý=zô|,zD#5 ßFïƒpîîËù•åêZŸ þÌÊŸ].Ô$ÁÒQýÚæ³õzs¹XMÕ~:‹¢¶£@óðÅøÏ<@á‡ø`õÝÒy(ÙÑ!jŒõUöŠœˆþ×±±  ¼úëTè&‹8´þïëõ/0‹ 3M//u/¦·¸´—O±úa½š+¢ûÕ¥zè/ÓíbëÅ{ŠGrÉžoÚóù­Ùz¡Ë2û‡Únj*7‰Ï>iGæ7H42ã1 ýgö²úíLÞŸ‚É¿OÀ¤.ŸŸ€Iu &õ)˜4§`R~~Šžœ‚Iu &õ ˜TobŠ£™4ÿ>AOšŸàWÓ˜âx&W§`ryЉýíûÛ)&v~Šá¼?EOf1Åzòø‰ý[žÇÇ2yýÝ Î×ßàÜyýÝ Î×Ý 0öuwx|Ý_w'@{5'_öª'§`r‚]Mì ˜|wùæñLNqd¼>Å᥆3=“«S0¹|<“S¯Oqx©áÌÏäh¯z2{<“Sœ€a`{áÿpáù·Ëçµñ„}ä4¤‰CÜ÷þü˜äÄG-‘r ä0½þT!¼ÉwŸçû\ °ÿ]ì~3>æ]±ÿVmÃýµ"øìÉþû>¯ÿçû×ß|õ^þ5´ÿvçù×óÙ\›×Êa˜dÙ_§›õíeþãEþz·þenl‘_¯7‹é*ÿþ"ÿët7»É¾žßM7;° Á{uó~»˜ʯÀŶZ/ߟçQht3]æÿ³¾_]çÿ½Z¼ƒ†wê—W›õ»õyþß»éM6¾œ.n_¨M­Ýüï7ïï/æ—÷YöãÍBíœÍúz£x,§ïÁ)x¹PìoîwóËü×Åîf}¿Ë7søÛ ö×y®~ÊWùBýßm~¿_f …ñ^în¦šþþv§QâîþÍíb6Õ¨qn¬Û¹1ºaÛÙV5£fD5?ý²Zÿz;¿¼ž_^°Z+ùBÍ0"¦2 CÎR~ž_«yÐŽÁ ËÚù¼usŠöÍ‹<ÿ›þu3‡1­Ö‹íÜz³w­ σ!äW‹Õ¥z?ù­š? WtÛÅ›Ûy¦»ùÜtSAÄr®¦ÌìÚR 3 =_oԜݭW—`Ô¦æL!¬šÊÝ/6f’¡ÿ—ÓÝTÍËëù<çþ¦ÿu¡=°—ÂðÁÒ¸%· HÕαGoæân›?SÃÚmg›Åyḛ̀]/UÏÔq£þr™Ï»»®¦Ö"œéY¿½VË{w³Ô F¿W°é«L7—Öb×Àl½R|Ì`¯Ö··ë_aJ+pgkž/²ìYy–ï;5’ÛÅj®^Ÿ^&ðÞßl}·PÝУ™ÛÚe«^$¼æ_Õ Î׫5x¿ß¼·`7ègÕ™šþµ±vÛ¡+iÁ8ZÔ©aß4¸Zpš­©-6èQ]YÞ©N«e`Þ4¬¨¥uuP÷Æ-Ÿ·àñYû§õš[½–ù›¹šÃEp’.¹žŠíNϳés¥ÿ°5Nµ¥·¾Ój¢·vX¿Þ,Àt¯öuû¨iÏôJµfqϳ>œçê ZäÔ}äÙ4ëšÆê–‚÷WŸåËx¦ô:R8 ev.×+œÜoMM±qÎ Bêºsóߦ³Û÷ï ‘wj_:yÉÓ7k5_t©üºP‹íÍܽV%Òpïœ_~´ö™Ì/…gÍþi1bˆ<˜ˆÌyV áÞ)ÈÅ)ÈŸ‚<1Ùá3€›áY{6£z¡=‰¥Zy—pd)DŒ©2Ç•ÏÔèa„‰ÕMT‡q1'•¦cÿ¤Ã·)€¡Bé_×ÙåâêJµ®dƒ_§ïõcº;æ(R{J<ëÎĪÓîÊukº æ•ábÞ¡>æ[%‘dÄqç–ïîf3ÇÀ}äk‡¦ye ÁßÁA­]qpÈföýFs×hbž…U¥p$ÅÞ¹ë]Åz—™ÞÉ*Žzî»…]3fÚÔË`4çj¢3”³39ËßH¾@*|ãg$$u‘XšÌè·ÑÓú½¡{÷r=ñb—¯ævÏ( Å9Í®ó  H¯‘¨;™ýc0õîÍ›ÎÁ1›«‘|,œdë•Æ=@…з«á"ÔxL<ÚN‡5”m¾UǬÙfÓ ×÷›¹Ýh ŒœçåUþ«¬ÝV™ÚVJ4ªü¢ŽrMP‡/Èᲃ5¤áF-~xF\ úíœÛÕ_žêyq_´ÿ.aÁôg<-X!‰à4 I£obr‡3œ¶¥ ¿Ú¤™÷£#×ÔL*Í`ºy³P¨«Ôˆ ï”£š¾žoh'´äªÿª6€ñzoˆS~_—Ô[‡AØÌ¯€å:ŸÝÌÕ᧦ÊÈß»÷ù³ï¯Ï˜ž{>ßÍ.Î2ÕÂj®øÝL7ê yöíüóê\ýŸúüâââ,ÏÁ7¯ä-yi"u(¬ÚªÅiOvÕ\z‡Â¯ûÅö ÎNávmàeJÎí_èIý²›‚#Õ¡zjðVîÓÍùe£¦áÍâR f½,Îò@3ˆß%C=>ƒÙÔ|=QâöÍð¶};$̳hG6”}3½ë•Xæ¤r«è“j3¿›Ã\߸À%8`œÄ»24×vØ™(µçÏ@˹óå>½ÝêxÔ_•аÅ͈N _œõãv}}f…ÿd¬G´À­[5qÅÈ'‡[tºa:˜ËÄÂK°Á®O¼äèà éá¬>dœbçôÓGŽs.‰™©8qØ3ˆ€ð¼ë€ï¤š8Êþê,2¾üW×Zô]ãQÿÏ÷³_ÖWfG¸§³ö¾²£ö$‚¸³û˜ý:ðÚš>ŒžâÚ·ã!3àûzdOÁ³ef–í|‡0DÛFÍdÉå¨z¹^­gê8YÌ^ä0WÿºWXó›ZioÎͬÍnÖ°VÊls³VÈv3¿ÜLoíš„k=ŠéoêX³[ÛSÿÞÞ=°zˆœú·ÿ«ßŠìÿMÙUuSVŸeÙ6Où?åóðüí|r‰<¿KöNØè;¥Œú·šD¡™ë€“hÞèÃòtâD 7çNŠ3¦É9t„xú<}ž>OŸ§ÏÓçéóôyú<}ž>OŸ§ÏÓçéógÿüù̈Öase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/jmath.py000066400000000000000000000033731316323560300271330ustar00rootroot00000000000000''' mathematical utilities ''' import numpy as np import bisect def vinterp3d(x,y,z,u,xi,yi,zi): p = np.array([xi,yi,zi]) #1D arrays of cooridinates xv = x[:,0,0] yv = y[0,:,0] zv = z[0,0,:] # we subtract 1 because bisect tells us where to insert the # element to maintain an ordered list, so we want the index to the # left of that point i = bisect.bisect_right(xv,xi) - 1 j = bisect.bisect_right(yv,yi) - 1 k = bisect.bisect_right(zv,zi) - 1 #occasionally we get the edge of the cell and we then go one index #back again if i == len(xv)-1: i-=1 if j == len(yv)-1: j-=1 if k == len(zv)-1: k-=1 #points at edge of cell. We only need P1, P2, P3, and P5 P1 = np.array([x[i,j,k],y[i,j,k],z[i,j,k]]) P2 = np.array([x[i+1,j,k],y[i+1,j,k],z[i+1,j,k]]) P3 = np.array([x[i,j+1,k],y[i,j+1,k],z[i,j+1,k]]) P5 = np.array([x[i,j,k+1],y[i,j,k+1],z[i,j,k+1]]) #values of u at edge of cell u1 = u[i,j,k] u2 = u[i+1,j,k] u3 = u[i,j+1,k] u4 = u[i+1,j+1,k] u5 = u[i,j,k+1] u6 = u[i+1,j,k+1] u7 = u[i,j+1,k+1] u8 = u[i+1,j+1,k+1] #cell basis vectors, not the unit cell, but the voxel cell containing the point cbasis = np.array([P2-P1, P3-P1, P5-P1]) #now get interpolated point in terms of the cell basis s = np.dot(np.linalg.inv(cbasis.T),np.array([xi,yi,zi])-P1) #now s = (sa, sb, sc) which are fractional coordinates in the vector space #next we do the interpolations ui1 = u1 + s[0]*(u2-u1) ui2 = u3 + s[0]*(u4-u3) ui3 = u5 + s[0]*(u6-u5) ui4 = u7 + s[0]*(u8-u7) ui5 = ui1 + s[1]*(ui2-ui1) ui6 = ui3 + s[1]*(ui4-ui3) ui7 = ui5 + s[2]*(ui6-ui5) return ui7 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/sgroup.py000077500000000000000000000135421316323560300273510ustar00rootroot00000000000000from __future__ import print_function #!/usr/bin/env python ''' Get the space group for a ListOfAtoms can be called as a script on a netcdf file sgroup.py [-f] ncfile http://cpc.cs.qub.ac.uk/summaries/ADON.html PROGRAM SUMMARY [Licence| Download | E-mail] adon.tar.gz(69 Kbytes) Manuscript Title: Determination of the space group and unit cell for a periodic solid. Authors: B.Z. Yanchitsky, A.N. Timoshevskii Program title: SGROUP Catalogue identifier: ADON Journal reference: Comput. Phys. Commun. 139(2001)235 Programming language: C. Computer: Intel/Pentium, Alpha Workstation. Operating system: Slackware Linux 4.0, Digitial Unix 4.0D. RAM: 1M words Word size: 8 Keywords: Unit cell, Space group, Symmetry operations, Solid state physics, Crystal structure. Classification: 7.8. ''' import math,os,re,string,tempfile from Scientific.Geometry import * from Scientific.IO.FortranFormat import * from numpy import * class SGROUP: def __init__(self,atoms,outfile=None): '''outfile is where the results will be stored if you want them. Otherwise they go into a tempfile that is deleted.''' id,infile = tempfile.mkstemp() if outfile is None: od,ofile = tempfile.mkstemp() else: ofile = outfile unitcell = atoms.get_cell() A = Vector(unitcell[0]) B = Vector(unitcell[1]) C = Vector(unitcell[2]) # lengths of the vectors a = A.length()#*angstroms2bohr b = B.length()#*angstroms2bohr c = C.length()#*angstroms2bohr # angles between the vectors rad2deg = 360./(2.*math.pi) alpha = B.angle(C)*rad2deg beta = A.angle(C)*rad2deg gamma = A.angle(B)*rad2deg scaledpositions = atoms.get_scaled_positions() chemicalsymbols = [atom.get_symbol() for atom in atoms] f = open(infile,'w') f.write('P\n') f.write('%1.4f %1.4f %1.4f %1.4f %1.4f %1.4f\n' % (a,b,c, alpha,beta,gamma)) f.write('%i\n' % len(atoms)) for i,atom in enumerate(atoms): f.write('%1.4f %1.4f %1.4f\n' % tuple(scaledpositions[i])) f.write('%s\n\n' % chemicalsymbols[i]) f.close() os.system('sgroup %s %s' % (infile,ofile)) f = open(ofile,'r') self.output= f.readlines() f.close() os.unlink(infile) os.close(id) if outfile is None: os.unlink(ofile) os.close(od) # you must close the file descriptor or # eventually too many open files will occur # and cause an error when you are processing # many files. def __str__(self): return string.join(self.output) def get_space_group(self): 'returns spacegroup number' regexp = re.compile('^Number and name of space group:') for line in self.output: if regexp.search(line): line = line[32:] r2 = re.compile('^\d+') s = r2.search(line) if hasattr(s,'group'): return int(s.group()) else: return None def get_symmetry_operators(self): ''' gets symmetry operators from output it looks like this in the output. I am not sure what the 4th number is, it is called tau in Wien2k. I do not use it or return it here, but it is parsed, and could be returned. Number of symmetry operations: 48 Operation: 1 1.0 0.0 0.0 0.000 0.0 1.0 0.0 0.000 0.0 0.0 1.0 0.000 Operation: 2 -1.0 0.0 0.0 0.000 0.0 -1.0 0.0 0.000 0.0 0.0 1.0 0.000 Operation: 3 ''' re1 = '^Number of symmetry operations:' regexp = re.compile(re1) for i,line in enumerate(self.output): if regexp.search(line): # take integer after the colon nsymops = int (string.split(line,':')[-1]) index = i break symmetry_operators = [] taus = [] for s in range(nsymops): temparray=zeros((3,3)) temptau = [0,0,0] if int(string.split(self.output[index+1],':')[-1]) != s+1: raise Exception('this symmetry operator %i does not match index' % s) x,y,z,tau = [float(var) for var in string.split(self.output[index+2])] temparray[0] = [x,y,z] temptau[0] = tau x,y,z,tau = [float(var) for var in string.split(self.output[index+3])] temparray[1] = [x,y,z] temptau[1] = tau x,y,z,tau = [float(var) for var in string.split(self.output[index+4])] temparray[2] = [x,y,z] temptau[2] = tau # increase index for next operator index += 5 symmetry_operators.append(temparray) taus.append(array(temptau)) return symmetry_operators,taus if __name__ == '__main__': from ase.calculators.jacapo import * from optparse import OptionParser parser = OptionParser(usage='sgroup.py ncfile', version='0.1') parser.add_option('-f', nargs=0, help = 'print full output') parser.add_option('-o', nargs=1, help = 'save output in filename') options,args = parser.parse_args() #print options for ncfile in args: sg = SGROUP(Jacapo.read_atoms(ncfile),outfile=options.o) print(sg.get_space_group()) if options.f is not None: print(sg) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/sgroup.tar.gz000066400000000000000000004525451316323560300301350ustar00rootroot00000000000000‹Kì½ `\Gy(¼~%òÆ' „'É–äóÞ];JâÈ2vñCø!ŽQdim­£ÒÊq—Pǽq…iÚ7½zÓz¡—¶ôAoÚÂßPÒ&é¥%mÓÞPìÔmCo\§mÚJŠÿyŸ™93çÌÙ]­üØG³3óÍ7ß|3óÍ7߼ʇÇ&GËÓkrs÷Ùà+6pøúÐöQ8ùrŽãÙah¡çälǵC;gsHûf¦«ƒS–•;X-OWàÆ«Ó•±fPÔÔ¯Lë|ðÐ}Ýc•Ñ9hÙëß  UÿÍøâõÿžÞ$Ndþ`‡¾¶þÂíHõŸ³ìF¡û.ñú¿}jðÐ`eÚ¬V+CåµÖ&Ð"LŒŽæóü-þÛÇ{†ò–Û]¢~0@ð¹ÝE¯€<Ñàèä‡k_¹Êù Ž æ­’ÝM ½ŽSê.áÏËçó=ð³6”‡&Æ&'¦+ÕÊĸ5±ß/ßkíœ%:TªNLM[‡ÊSVe|r¦J"Pʼåt3Ô6ûýº¹««Ërò\—Bs°è§#‚y˜jkÛÌØ>@ v°:16 ˆ³†Ê££k¿„Z´PÓkóv?Odò{ ‡>¯€ØKé˜/¿¦rhp´<^Å´t‚|+Às`jbfÒÚ?1e•‡F¬é‰©êZĸ|~'øm£"¬… ²¶ Ž•§ai¸¤k­®p̵È_ËÚà@ÈXåÀª# €O‹Ú æ+näҊᢰãŠ0ô‡ÃÃx°•KüÆÈXnYï±Ú‰)îẼæeY½˜)= ùòyÒ_LJ­qÀVÈÕéÉÁ¡2åªS,Xíý€­Ö˜åv们#°:º¬3££ÀÙ942Qß?Z5Ò…PÄj&¯¨š|ÔO§ï+W§î³&&ËSƒ”#n~;õ"þ&b–Ò¿ˆ»yâh¹XÎcu TW<µ£ 7ÀêåIºXê®ä2$bõëâ@—kPtXú8 ÃZÐÒZ_‹ZZëiY%}mÕѲ».èë8uñ@‹Ö­‹ ÚúDr8ÅÞéʾѲ5=RÙ_¥#h·D{Áð[*ÓU$ž ª.Äå¼:& 1P°S±^ÒÄchÀ@lm J“h.#Íê8½Àµnp,0~ì䊳V1X±üUŒµ6Q]І)2r'iÑ@OF4L¤«$RÇ>=‘!þ"6a|¾‘%ˆô ‰L㤖H'µDj8é+‰Ô5*=‘]ÅjNâhŒÓa` 'C"Ó8©%RÅI-‘2'ëœÿÅçÿÎŽ¾õ¶ö5dv‰?HnÂüx|yþ@û_kþ?÷˜¹zº:53T™Šñþ©‰±üHµ:¹vÍš¡éj×½÷ÞÛ=>5ÚÍÚ±¬™ž:05Iœî‘êØh>¿ª{x° š,˜D)7š˜¡A૷ɶ¾~ñþ¿~ÔÛVqaE6*´þïÔÿÏöZý¿_Þò»]§D‡mÑt;¡ƒ=ɶ9—yÝ|>ä©×ŠýȯÍÓ©[ð‡_d±,y›Öñ!ÅùþaeÚbàØùföyøiû×Rú8a¬ÿû…VÿoÆW§ýßHv4Èþ/Ê<¾¸ìÿA]ö “&³XÀF€QœŠÊZ˜ˆË] „kJ,‚ `3¼1¨œžå®³Ø–6xÜ­Ý ÎAÚÑL+ˆ1uz½CWÜ”ˆ¨c®¸y FÛÐY‘Þ¥ÈÆ¨S[ ·¢Æ•ÌÆ¨s³Í[ú }´ôãY Ÿ×¼ô£”­åŸÌË?º’ÖaùRJZçòOŒ¦”e†D¬…þÕFkQË×zh-éùZÏ:M}Ë?ÚU¥ú–´hë[þÐÖ'æc°üãÎÕòÏù³,Cõ™ä!ªÈAÃq>qxrEà-9RiñØ—¨@8"ð|Ïæ²ŠùÿÌ®rCÍ©ö?7”÷®æZóÿ&|ØþçÚAáz–è ºí‚íÙŽã É¸çz¡ëÃ5)ÉzÝv v!SsšáŠ%ßv,î‡[,J¥ü®r¢qpø;(•,îGÁ³¦o~]lŸ®ÿ7r pJÿ<_Þÿ¸·Õÿ›ñÅì['Æ'†F+ã•!k=˜Î•»†À >U6²r|…n§äÈ€ïwûŽÒ‰býö@$ % _bd²(RMþGɼœ á~Ú"˜Ëƒé­†)æ@«}b|ô>u©Ê(ס2ŠíÓ8Ke.LK†Ô,OIa‹HÊÊzµLh@‰r ©r¦¶¿1Ü„ˆÓ;}ÁYf *Ç\,3•Ä˜Ú ¡)|Äéu/¼Ê ¤i²½ÊµÚ{!W;¬=3ã•÷Ï”­ÁÀC{qŸ™R šš,YñZK³bùÍ0bÕcI5b5ÔØÒÀ=Ìõ5$äXü9ÜhÓÄcšiEРȨgSñ˜ cÀ¦Š™ô½ :ÎéË䚌ȴL“Q™•)ЕÉÖ”I½uTSçµ”IUOÚ2)ëI[¦X=Í·‚}žñùßí½Å•fîÿ œØüÏsZç?›òõÃ9[!°}»¡Ò ø8c—ºý‚ãºvˆ @’Ÿ÷‚éX1º¿M¬7ÒüÎJžvTÞä–`§Ç±ø·ñR†c 4PúAb)1ɘ%0ÍV¢ù®È?mÿoÞþ¯BP(Äú¡eÿmʳÿôÎì« Yû&†ï³²~ÂnPÃtH}‘ÇØðSdG½K0Tôr¾9Û3üX&q˜£ÃV¯á§X»át@ 3¢e1Oô;oYÕµR Ê6²@Æz$B è1O£u‘”1z:Œ2`¨+L"<`(Ñêh Ó#–‡»qz½lÖ—.f}QZVDë ,+Ôú´þ€S°“¬/żÄemCsŒJdÄ2hG Ô-TL`ÐÅ QL`Ð ¨Û[B¡Õ-™%hšQ è|Vûf0@tyµnÁëBMÝ]ƒ~ìJ·[¹óf¸ 2®‚Œ†+‘Ö@cb’±ª W:ZuXeZ>eå·¸ûJǧ¬üV¾ó)+¿•»¯b|ÊÊoi÷UÆv©ã·á —v_em™:ŽË»¯26MË´scvÒ:˜™e8FmÒ“’™£“1Žzƒ£ŽZÚÔ}ÌNícÉ=×Qw² µ“%‹§¤åUVž £‚žWYy. u2·O“^溙ۧI/s½ÌíÓD‚¹êMÄIíS+ÁêÓyc°þâÔ·þ2ßÓ…ýgÇLµ2ZnžýDZý0vþ7t\ËþÓ„/fÿÙTm|0²  J>³ >·»Dgs³õ‡|éIÀPPXúŠ<Ââ_ÅpGDö;pK2òð(·#NÉ/8.òÄà<_ÈÁÙ"\Èãó¸|y¸flcÛ&èÿ–µ¡æ=/Ì¢B¥=guI¶ÌÔ»uÈ m€Ù5gO0h#,éÖ¡1|…qzݬgã’‹ï°Ú5`µ’~^êÚþ`YÛ9ËRz¿à Ú½oП(|óv2y!Î Ý_òr>rþ—m•”~ä×O'ÿÝznþ H ô#¿þÀÅÔõ΋/Þÿw– ¶q+)ýßw£/qþß l û'ïÿ¯¥ÿ7åÓœÿÚŸõ⟰Ûå&‚/òœç»¸[{$Í]sþK¾HwñO¶yÀ\^ü#{~d`µÖO›n3Úz_&p‘'ú phÊ­ß¾7f‘¿–µëb½ð{:Û“£:SŒö4m= `Šþúî ž)}¤=Ðäs`Nhµolªæ A±ª9O‚Ù†s¢Z¯0ªm¯FÚFµm,iæI0;uV\ËI°t¬É´f; fJëyq,‰5Û€’ÚP'Á’Ð1ÁÓS[ÏÆ_Km]ûu-µõl3cÛ€|Ñ{!3Mú˜SÌÌC“Næ¤m¶S40jÝì<4¡–3ç¡ÑÙ*73˜y™yh„ÖÏÌC-êÓzÓ”íkp•?6©YXßCÂÚ ºünâ3˜úM³=>.írÐ.ƒ¦z¼e¤÷S7Ûæ±š÷äqG…²yh›ƒ¶4W(ˆ…RoÝÒÔz’IØ ã¨PõÊÊ€¤Pómíj}ò§°ÿzîÀúÑÛøl‰û¿‚Øý_¾ßzÿµ)_?ÜÃo”!Xôy@<°Çto†G6€‘¸ØÝ®d{ØíÊ'\Yä|³ë¢ûú³ö@§—û?¼´Õÿ›ðÕ½ÿË@v4|ÿ—wéíÿâ¡Õ±R^kÔ×ÛóV«V<\VmB|4€Z‹õÉl¶v…ð5þ 7H]@\I{i”_À¹Ýà¡Ñ8|óöº•¸× 6Ò±Ú×6šúù±Ê‘lZ©s•£¡æRõYÌ(um´¦Ú`kÂêùWæì°sb]×¶z¤·¿šïÿ‹c­óµÑ„ÃÎ)TÕFm}¯jÑÎÝ}wut-Ú„Ý¥u®rÔ!“V9êˆZ´ÅºD¢m©®î Rk¼¶Á&a «c´Iºï®&xuÉE-Zý0–yÀ©OBÎ%°5:ÒÊ`Ü7xØfз§¾,ÃÎ÷”_øTöŸÞ©B3ßÿu½‚/ÛZû›ôõ£‹ûÜv «ÐmG[w·ÛññóÙYöäúvÞîö}/@vß „(`§pœˆï‚±èz@‹;ã„.Š…¶cßQXFÚ\¤[,â0·ä`¼¾[$‘ô v ýp‚‚K"áû48+š²¥´c)UhYžZ;(”Ä¢„nè°‚ú®#–ÅábAGL С±…xlÉ+°´¡#åë;aÀÒÆbí¢ÇbAG cIå¹Êa±  ‹±X€°DÒBâŠSäh.‘´¾GZtYZŸð/ i.­K«ÄÌòå1—b °Ê¡õ«¢bÁ+qD•Ä**p•àzE©K›ƒ«ÂbщÅ26󱬇”hZ¡‡ÐÖZ¢ ’k­Œ%Ê)žA¬ÿø/J±^Fm¹k­ǨBœQ\{,Äp-®ÇŠB¬]”øº±B Yæ¢1cT„x¾eïùðéÆÿæ½ÿ Ú¹#Ÿÿ \ÛiÿÍøbë?Û§ª#ScðPæ € ôˆóü Ó×ù_ó±t( Z Âñ„˜³? “x³¨jBù]?XC‰±–Bù ?ŽˆF¬·D€- 28Œ¡£¦k3F VløR‡{lŽ=Å{8@<€«±bÂ0–5u…R—8Œ¾Ç ƒF#—XF £«Ã˜˜5O£œu kX'hŒ…]`R]cIX’ª0Ð1«E@¾ e@¡+”8ŒrW^âø(3¼¤ë žÄž‚–=R /èØH ·¤ë׎Tê‚®õ”¤º.験ˆ‘g€q)c²@UO$ê\hÎD뚃óD8¬¬*¸ƒuVWâóź+iHŒàÈÅó±æ]ñ<}6‡Ïñù:|x•WW[‚Óå+ñ¥¤ã³TÞ@Çg¹:þñõÖ„õ~òÄéu.œõlò´Áè Ê5Å]÷’>̈ ¤Ÿ˜À ›'ä Ä 9¨E“˜À@0'pI=j³ÆWÑãFFœÞé¹lkäG—“ÐÖ”í1é&z3ÅelOUäÄØÀ@}` LÏã^ð2Á@KÃLñ:èQ©úŸ˜À`€–¤ëƒ 9¨•Š„ÔÊ®Tèt5:Kj¥%ÛšñʃyfŠOë)]ÿèóR‚ô9K ÖSp×Sú 3%ˆ:`Ú„BL`0A“¤ÏÞY±žÂ‹WvLh@¹8E%]à tÞ`¢£Ç¯žÈèñ«'¼ÁÄAÏõÄ‹m¬pñʃÉ!â SãÒ'¼Á¤W€7˜tSø¦í± Ñu’ã –k~FZ÷WÚöÚâ¥ýš´Lkc^“–iU?%dr@GkÚSBf[ÿdZÓî70{BF¦U}½ŽVVDk}}9Û½Šsø&‹ NÈim>ñ˜XšX>ñ˜fnEÓÚ‘øÕvK§Î`ã)€µö#ÞêKµ¶£P¬µ¥b4F| ¬µ¥rÃÖ,€EçÓu ~q ”P¬5žðK)Xk8ñdàÄu~½Ï”¬ ¶XkIàŠ°nÊ^RëÈHÅìkVXud¤r£¤Y2Ã6+a:ͯÎà©nÂTÚVk§ÑüÊ&Ö‘Q’WWùµ'<ïK˜Wº `휒_àeÀZ2dàÄ•#nåƒõpݤ¦‡ÕN°¸•&“t“'«X¥á-©Wa˜¨ÓÑÆ_½Ú :VÏ-U19§›1ØqXíì‚[¢cRNGCI‚M¼µ%bã¿a4Mäñ#m°Ƽ´aLóÒÈ@GF*æ´AÝב‘ÊDE$6š¦ Âhš6ô–tÀ±RM‡ÞØø‘8$ÈãGÚ`#ŒyiØ0æ¥:2R1§ ꮎŒTn$*"±Ñ4m€FÓ´¡×ÕÇHy4Mzc£iÚ)Œ¦iC¯«NM‡ÞØ(’42È£Hʈ#Œz)#™0ê¥ŒŽ†4¼)#º¯£!IHl4M!…Ñ4eä-é`åRM“FÞÄëÂ"¶ó?jMSgcº=X©£iê R·_,u4MŬÛ`–:š¦rC·93}4M›ê¶s¦Ž¦©sSݦ·ôÑ4u6¦Û;™:š¦Î u»àRGÓT̺Ýp©£i*7tÛ9ÓGÓÔ¹©nlêhš:7ÕíïLMS禺m©£iêÜT·{5}4M›“ivÒ¥Ž¦isHÍŽÄÔÑ4 ¯f‡`êhšÆÍNÐôÑ4mnªÙJ™:š¦ÍM5[CùÑÔO¾QÔæ$¦ZChê™i°É4Œ¥ Zƒs*æLƒz&u!QI4±f2Þf2 «æ¦Zƒ³rnª5„¦™›LÃXÚ©58§bÎ4¨gR‘Dk&ãm&³°jnª58+ç¦ú-;YŒ·™Ìª¹©~3“j4ÕZCÓFÈ,#N–‘,e„ÔZ›Óðfѳh IH¢•5‹õ6‹UX17ÕZ›5sÓÀp4M››jGÓTãm&Ch&kšñV;š¦bÎdpÎdÊN]7ÕŽ¦©ÆÛLfá´uSíhªœ›jGÓTãm&Ch&kšñV;š¦bÎdpÎdÊN]7ÕŽ¦©ÆÛLfá´uSíhªœ›ê,3-…fZdÍ2š*ç¦ÚÑ4Íz›ÅšÅÊšb½Õަix³X›³X±ÓÖMµ£išõ6‹U8eÝT;šj榡ák8©áhš¶nª5±f2„f2±¦ÎMÓ†^­);“Á9“);}nšicQ¦-Kië¦ZƒsúÜ4mÝTkbÍdÍdbM›¦½YÖMµçL¦ìô¹i¦E™¶,¥­›j ÎésÓL‹2mYJ[7Õ/ߦަ)ë¦Z+kkh+kÚÜ4eäÕZ±³X›³X±Sç¦YveÙ±”²nªµ6k榅½¥MSgci†PíhšiûOêÜ4Í,¬M3m†Ê´Í*}nšf¼Õަ™¶,¥ÎMS×Mµ£iêl,ͪM3mÿI›¦š…³¬›jGÓLÛ¬Òç¦iÆ[íhšiËRêÜ4uÝT¿`™i)4Ó"k–Ñ4}nš²nªM³ìÔɲ(mnšbÖŽ¦YvBeÙa•:7M±ÞjGÓ,;–Òæ¦IVáù¾Í®õeýT÷?¬?ànoà а…$½ÿçƒ0éþG/´s­û›ðõÃ{ ®Gº´%ú8O†ëÃÄçÿð±øÇ±´ÊØ@…9º)Yü‘ßž§bΊý‘ó]óõéûãn€MîÿŽïÇï÷½°Õÿ›ñÅîí©åæW ‚µ.~M½ø5ÔßûØþÈý†-ÇmЖm00ä1 Yç]Rž?r{^Ð#åI ׄû»¼1ÇÑmè› ÞpŒt)/Q_b£º`Ä‘` .±!Œ4 ‹¾Â-Õ¡¶B¨›Š˜À ²Ư!úÞ˜EþZÖ®Zë‰U†A=‰0õ>†hÐ;,k{ÄDƒ^Bá›vQ‹ëúø¦ÐiÆ:¬=S•P|L€Är÷ÖzyKªUtCÒAÉÒ¯nñÏ»»[C¬ê»[CZu7—¨ïn± iÕßÝ¢+QV~Kw·h°få·òeÄX‰²ò[zQƒ5+¿Å—³¶K]n/#&5Lk¤—³¶L#´ê‡G“š¦<%µºäºìbh}%µ:ê˜C«~{TÇC] ‰ñ6ÔRkÂ-ZõýHIÉud¨_F4.¬ŽiÒˈY«Æ„Z7{C2¡Öu2VW:õˈÆU£+ü2bÆÂ¡õ3Wææ27Û%d¦¢ÆMëeµÝç¦ö2ókÈx´%m¡²ò\Ð’zSFž hzYFž hõ½,+Ï´^æöiÒ<õ+¿‰Ì ózAæöi„6ÌÜ>˜ ~å×@_²‹¡-*©5P™“Ѫ_ùM×CŪŒÍôJ° ´hÌÉudhÞÒND›¬Œû^æª1¢VýÊoRC2¢6È\XµÙ3W‰’ï2Öm1sÕh™PŸÕ9MyA9°9+ûQÛµ•\µ¼ Lç™0Á,™ ÌcÀ:[8ÛEabl¦˜M Øv¾×nñ)Öÿü©Êø&®ÿ{Ž+¯ÿ'×Zÿk‡Öÿ=Ï)ú6]½ã|^·gE?°‹–_êT(ºŽÀ¯ôüsîµ=?ÆJ~è^>²è”‚ÉÂT)Yd<å|sòÂüôý¿Yëÿvèz±ý?¡´ú3¾Øúÿ®rujðÀÄøà¨µobø¾®!0üO•‡ ÷h%‰ÛíÃ’‹FO+ã>ǃ¡ÅRw }ÅBLâ`]ªö}d-¶QûX—›i€Õ>1>z ƒÚ$Ýb;€âk©ö ¤%CÊ–¤°XÊÊJz1Ðãá"¯b!¸¡<Ép:|MXñsaƒ"N¯{(ã*rL7wb«Èlq_½#À5Ø5´ÚoPƒÂ“,œà j^_ÝØ“/õ̲øùVÚ*µã•¬öÍh9üWë‹" ù]•Žž±6øé ÓN8_ ÓQj3œŒ5ÁØX‡åJmk´Ó-£‰XÓ úfK•2Vµ=ß”¯:¬…Ì6 ¬E-Mõ¬G¦-™ÕÆ'û~#´ú…éºÖdÕ ÓõV˜“ff¬­×:j3c½"ÆÑóëé·ŽÚ˜_“©o ANS wñ˜Ú w\ †;­ÒÀ©_Ô¦Uì8¬VYPÀjv¾çE—ʧ˜ÿön÷hýK·ÿOžÿ;~kþß”¯?o…Ý^ˆ+j¶‚óøa·ƒbûó:¢ÌÆÁ ŸpÖ¦Wy†ÿÈ÷¢Ø‚”´T‚rB<ÃÃ, Ž"¥0‹;àCEŒû3ÕêEI :ŸfÀ*’Â, Ž"¥0†â|9r¤ëÿ³þ¥žÿ‘ñþ_(´ú3¾˜ýoÇÈÄØ¾‰‘òðÔਵg´l œ.€ñ{ %0¶;A Ë Þçºm§‹ol d¦¿R †F¶?({‡Å†sf Œ©' áRØ"˜Æ˜ñHPª)бk·Fò¥•F{á \" §e®#À¤ë{ ’?)$Di˲/ð"¸Èƒ ñWÀøJ@Yú]D?=ç»^ç‘OW²K\P•pM°z.:æDœ ÞwˆÆ ÑŠ/R§7^õ‹Ô ‘Кþ Òz•‹‡‰‚ÍvЀ‹v<ÈFOËFó8½n–xñL¶Ä£~\@?hÃõ=ì*˜¢–MÂy.Ù#žÿJ—i¼Ìà d’o ëš~Íä´ï€q¨¨,Öàáòt­‡ÐÔ§ASMýn3LýV¢-²VS?I×PãžÞÔ_ÏÕ ¥¤f&ik¨-©Ž3&X sb>×o)ÎB«Œµ¤çk=Vîì'5TMKq-¥¬Fý@uMGU†î´ÌÑ®Zö‘r3 åfOõ(Ƚ4¤¦¿óL­1Ò‚¨J#Có£½¼5ÔJé°ÚQ^«áƒhÁn%Óî XíÈ.ÃίÁ¢õ5ôSØÿfÖÏ4ÔüŸjÿwÝØþ_Çwr-û_¾þ¼åvA„¾S@S1Þçu‡ø‚¿L÷¹‰þ™ÄÛÁfZ⥩Ÿ¦ÿ7ÒüŸºÿ·àÆöÿºN«ÿ7åKÚÿ›í0#1ÒºÌì0W Ç­z;c|]ØL3 Î ›(/«©“Å:“É–|±Ç É´3M¶º¼¯Šî¶Z[ͱ¶¶·¶·¶·¶·¶ó¶W®l¯–êD¾­9/최¥t&z¶@§Ø šª˜L·AïÙdÌ‘iP(‘L¯A·((J&dƸ™uþ§šÿ7òîøA“ÏÿË÷û…‚ŸkÍÿ›ðaû_Ñ÷ `®ÕYÁt;v¡T*¾U*t‡^X,Øn‚‰Þ‚Ûí\ßóC‡œÿ'M”³ÿ‘†Ú;¥¿áß!±øÐ0zSÿàvñ²0ŶâÎ7//ÄOÝÿjþKëÿA8²ýÏö[ý¿)_Ìþ·ub|bh´2^²Ö[ûÀ,:Ó œÀ°àÆß0@ ›P–x ëÚ¸—#Ác\ûÚâ«j_[|eík‹¯¨}mñåÚŸ#ý_5ÿÛUiîþ/Ï cû¿‚Öü¯)_LÌ»H›·è º‹E²q5Æ Ÿ?¦Í@“ hÿW<6ôK¥’›ßUáÏLGg½¹´ñXôJs¦on^xŸ¦ÿ7sÿW!tcöµú¾Æíÿ2#­ý_fû¿|ýþ/íUÖe ÜÿÅ)2–%x¨4å6ŠiQb© !pMB‰E0lÆŽ2´‡:½~Ö+çßð`Pl#™Änmufßyvñ²1jºh“lŒš0KÐÄj%¼CmïPkÔ“Šä–5I'0Ī޲4uËš)­Ù¶¬ÉX³mY35•eÛ²¦ã«)­Á–5]Ï”š-kAs·¬S›mËšiOÐlY3µ™fܲ¦ã­1µ­-kÖù¿eM¯0•‰jX Š/'káœÊœŠºÈ©Ís±N›1?W Ѫ"•dàDÔ¡‚ZÔž†Úf§§2 ”-@ÏÛ, ˆµ€&ÏÿÕöŸæÞÿ©°ÿº^ëþ¿¦|ýð²>'ˆ 7‚ÏëJ¸ñgµÿ’¨Ølà h` Å"û¯‹ ¸Ø †9Šon^xŸ®ÿ7óþO׎Û v«ÿ7ãkœý×HŒ´ì¿uÛ9>ðŽ%©ç#HlÖµu€(`´u€­Ŷ‰³u¢Ø„=8²×Þ:‰™Ã8ƒ¹³Á½€˜£ºÃSÝq1sÜ7Õ˜%hÏÖÙphìŽR·Îg·Îg׆µu>»u>»u>ûR7v º€zh79ŸÍkòêóǺ™Ö2tŒðùyô[$SÅ/5w#hÙ>?O•+Û€yµfj0óm¹Ä¿¸ýogyÙ`·ë;ñþÏP¶ÿ…¶Û²ÿ5åCû¿‹ë­¢/èv¨'Ñ ç¸ÌëæóynÓö‹¡h¦'·ï,ó&~†/5Ʊ…Àñm¼Å›ü BÄÎ7Ã.²/Þÿ7ØNi`[ÅÛ9Þ Öÿ» ÷ØêÿÍøúá™}—,_[¨Ës>¿ÛõLÖÿ¸7¸Ðÿ‹ =ò*èÖ¤«#´ùm>Ö ñX–„¸Xr39QÚãy.¸X–³Ÿ@ d`QÚù®Æš?Åø_ñæžÿrÃBlýÈ„VÿoÆú¿·áD@ôò¾,[BØaŠ^w'ñG~'êä4PúcÙ*Ñ.X§à²´è·ñR†cÙù1yïŠ-$ÆÆKTtBO_"‹—È+ºE}‰œ’OkÓTä©c ‚fLª®<«¬LŒT RA$>ÇóUòŠåËóÊ£˜Y‰.ßxl‘ãdœfžÏ%š%J±%NJ ”8)±Hj±{Sóå9Ï—ç¤CJL#˜)UÊØ8Í|›”ªUÇ e»’ª• ÅJäI¼R¶º8UJ^)[]<ß+oHóU¶:)‰ÄÉxy“1ó­]J"`®_þ'ëÿÙ©MØÿãØ®|ÿ_èx^küoÆÛÿ³‰¾økxß—ÁÜ¡1›~¤96í_\»~Šú]?EÏ…ã×™ðü¿Î]W±­ÄS5` ža@WtÂÐ L·Ì²0âÙ”cžNñTRE`^Gã܈? œ7lÂΤ±1tqzݬG*cK?ÂfÇ`ã‰+¸*˜¤'M š(w¤Ò ÞÅmTL`Ð`Ä;!‡”Æo‡°à¿ðÑ o‘A÷³@¿šBZ7d š·¿¨äÃýE¡‡6 uÔ¸¿(Äû‹Bq{‘µ!Lß_ä6å~4K·#Á©}§Â\½Ûˆ½P-ï/ÒñÏäuTÖPÏ¿ ±ÎÙþ¢Äº®m'~Q=¯ÎÖù>¬îáÝ:߇բ­ï}X-Ú¹¹ÐIÝÀWÚ„˜ëÙd•¶…¯Æ*+Ô%µh‹u‰D-ÚÒœìÝrSk¼¶Á&a «c´qݺĢNغ^]rQ‹V?ŒepêÓ€s ¼­šðGzæV;-Qk§$*`ít¤ ÖNETÀÚiH 8qvÌOz9v¨UsWžo›TëkÞ·ÿn,»½Í½ÿÓwbï¿Ú®›kÙ›ð¡óß›lò° ÙÖsØÁMÈ \GYÃÄó߉Có8Ø I¹±Ìoþ(¨bXÚ€‹-ÆÒF±ó]óõiúïÿt\ÇŽïÿÃVÿoÆ[ÿÙ>U™˜šÛWÊ|œ“¢T‰äÈyyœI©„5ÇlÅH³$¿$“ºê—‚L6ù›ßdƒE¨ŒHHKºÅKS5 €1ä0ÚI=£Ø„e›ø“š­Þ Y€‚ižƒQ7 oºà âÔé¾pxè+.U÷ 4Hé9˜ä!&0è 9¨{Kд• TÆÁcµ®¦hÏà§­¥/Ü£ÚY.8 $¬:»aÚS3É·1ê°¦Õ®Í,Ý;¯ŒµPtƽb]µ5¶½âžyÔi9M Í'KË'ÓL»£vl„p¯ò¥ ›ƒ $ØDÕ+BLƒ„ÁF¬h‚4ÌžF±K¿ R×L ›Ä,™±I•0‡ÅŸ»*K< gl¦Ë3VfVcS[¬NµOe¬ Øh’ÊX]‹õçâÙ¬$fe©„X‰ÒŠ_0.¾Œ9­Ê ÆUFÌŃ\)2ÖXl$26µøi2VËØÔ*3‘±aƒ®E›Ä¬,Ý0¶Ð Û´Œ•™•ÄØÔÛ¸;wBf¾­˜­¯ÖOeÿ÷š»þçØ¡³ÿ{­óŸMùúá»Ä:ºv|fÅ÷»î³Øã¸XD8-n)ÎG?П‹´£HÛ ¥ÈbàÚtÏ…Ã×Pæq±N‘¤µCr¾Ûƒç²HlHc}åFg«HlË7ô‹qÌ,-ÙsU%[äóul‰æRT\'D‘¥Xiަ"Í5 ¥ ¹ò„1^ð¥-Æ(æÓz1ÌQyæ»É¶¾~ùßÄõ_×õb÷ÿv¡uþ¯)_ׯ‘órý×da·ÉG„`¯Äe ¼SB~“à¢Îᇃ^áB\ÀÁ!ÀbÈq ô 2£å_‡Ä+Ä#UˆuEQB_Äê0ÊYãñ–8À¢è²ÆZIˆÇj{< Ð×:Ra<žÆ€ãc(±ÇÑ1\棧+µŒ±¨ËZ`O3ÎSb©Ð”5eò£KX/v Ö“Ö” z«°.oÐxƒ^)ÀH…¬ëþ®âô:κ‘ð0]`‰«òÒCL`ЕÅ¢1!u×NÈA-4IJ5Kj!í]0½»ÿB—Cf ½³ß`¸ Dbƒ!Ž%hÚ“ÐÅ{LƬÁKgI´ ¶#IiÇ Íö˜È´^ø{LÃÚÒѪÞc¢£U怮 ´ö˜X­=&t5I«'r³0vLL§óùqX­~hÇaµºa Á&Îòø)ìÓN<°VYâ§3Œ:­$Tk•¤T̶fúÅØ¬##•f‚ÝÓ®žùù"½y]«-„ `­¦ÀÏmÙ½þ:2<¸Á›„„ž‘ÒÚ…ž‘Ò‹B¬ÜÚ垑ԋbm!±zå¶Öp„ö›Ö$…ö›ÖØ=©˜Ó:h¨##•‰B%Ö3Ò»Ð3ÒºQIkìrÏHìF Þå¥íic†Æj˜Ú3ÒÆ U0½g¤JI-/µg¤Jv,µg¤bÖ™ìR{F*7tFÕôž‘:f謫©=#uÌÐÙDùžÑ¨mzZM&‹†”EóRŒZN5fh•ÔÆž©ádj’i]«Ô¥bÎÔA3uýD¡’¨ÆdR2©^ª1C«ÔéÆŒFí³ÔöŒ4 )‹æ•2ÏÐö Õ˜¡í© R&e#““¦ i{F*æLJ]&u1už¡í© R&Õ+mž¡íº1£QeµšL )‹æ•6f¤Í3´ÊFª”Ì4AÍ4õMkìZ¥.s&C@&Cêæ¨w§¦£MîdŽþ5m3 ÖÍÎCj]'3MºCôÎ…1M:¯ëeæ¡Z?3µL¨OëANS޹Ь‘Ô´8ûz 1`GÀT¥¤¿…¹ý“WX¹»FÐn½ À¤© ˆ…5ÄòZr} 0Ða ø¬Ïÿ#z’òmuQµ<áø—h<¬Ùêí+ ŒêJ´/¹3té¬TjBusa šgóô±ÍsèR:þ¥6;PÔeó”±ê?]¼6OS4æø—Œµeó´.0›'/¯ù‘îÐIR[¬•Óü(­æ1û2ð\ÚuJG*•©ÌÒ)©œ1k.mpiõ¯-¿ŠYÚò«ê_[þ³æ{rÒúæüSÌÿË;›~ÿ—üþ‡_[û¿›òõuô|"S Žëñ8ünÏæ3_æ¸.6Îqwq ÐJïÓò lÃãn‹bÃXZ¯àz4¶ˆ®²„mÚ(v'2Ê‘¥B¼Yí@ÌÕŽRc$¹LXRŸâï*¬ëS÷ÿfßÿ;ÿM‚­þß„¯÷™É‘óÝöYëb¶?.d^/â•àÏ" ˜ÇïÀ·a!‘¦Xã %ÀP‡Ëݰ¨ÃXäQÞä2¸J,!äN”u`JŒX43¸¢_ Â9:|>—ïùo]<.—Joe¨lîr©ôÖ&&0hLbƒfÊ\2—€t40{˜hÐAxƒ*ÀtT ߺl.-À‘í°uXë°Ö`š˜š­Æ2u1Ÿ&Yšµc7¯ø±Ëtð£ÖŽÙ¼¦ÈnûÑ‘Q”5FNscw0è¥RV;€qš#+žŽ[‚mð`B…¥ÕPaiµ[ÔÇê@®°ÄÚUXJ%–R¹¡V®¹Â’*·Á€i+,µ‡é&l©–ÚÃtó±ô Këašù[j…¥õ0Í|o..ÓÊ¢LR.“üTõ0­dVö0­8Ê"沈OEÓŠeMkÔ`Ú K•r™ägÚ¦­0eÓVXš˜Ë">SÆ0m…izX£.ÓÊ¢LR.“üLía©c˜VesYÄgZ3Ãu˜¶Â2é™4”Ô–:†i+,‹"‘EAIëaIâs¾­ûé_|ýggÅ›ùþ»[ðƒØúÓzÿ¥9_CÞw@—Ò ,ÉËùZk?fk?~¨_ü ‹^ey¢ß@ö +lÐá c-¨*»:øÂ&†‘ø¹²©nŒ!WoÐà<íÎø}ú•øˆæjŠ—Àê}$¬ý‡hEXdžèwÞÚ…O 8ÀÈýF€Hæ!¯PHA’íø|Þ…bº" €Ñu3Œ~è¨16aƒ¿ë¢G´‰³Á½pv›‘7  Ú…*œ¿Å/µ}°¦;¦],ˆÓ›•‹œ™£xš%ÛKÚJN'^Ê—Þ¤½óé-]ÚŸÞâ¨;]´³½1o-NÛQW°­öÖ0ü¯ÃÚ31U9EßÈŠ,wï%sU¨cåò@žŒU½ÅŽKm´î ákßb'ÓªÃÚÌ«ú\ \ ­2VõÆWS[º6àJȶ/A¦UÀZ_ïDÎ%°–#ˆ¾ÓBN׉î.á€=n<ó pL;²9A_ä4”è^sB^, Ä%NÀ;n °Ë ÷°¤ÿ§Ø2 „ù'Üÿ^p_¶ÿ¸ÀiÍÿšðiîÿØŸõÝÇb·5nÑyŒg}ósÿGÒ¬¿&„ýì’À\³Éa½³>§Ž‡ûŽþVáãóåáš0oîòÆ‹ˆq`§ßàe<ªÕS &Ï] 75¬ùt¼¯8µ¤î] íh4)3è ÔÝRL`Ð=YÓéy—0á¿`n©ËbäØz £‘ƒ$0=™ˆZ¼E^ïPVŽ.ƒæné›;³„t™7÷b^’Z¡jY۹ƛ. õðja,ÀeÞ@è ðÂW_-„õøÕ˜Â7ñÌc›h€lk æB;©3Ñè¦ç‘‰Fg ê2ÑD©ÍL4²¢™§ !­Yù~ ¦ÎÊïôS(uF~ÏÛ)Ȥ†©c¸Á)Ȥ–©ã¸Á)Ȥ¦i²[s ² I®3ÆÐªOAÚÊU©³+jNAºÊ<·8ž×q Rg]ŽU™Ú š”\GF§ uÖìµêSIU£«bƒSI I× NA&¶ŽSIU£«â:NA&õ>ƒSIUcr⩹§ uC‹N²Åª,­—)ªÌ ójNAêªL7jÄZBSOAêÚgÏ NAê—$žœ‚Ô …I<Ÿ¿SIíÓ¤ójNA&µOQ£9™Ô>M£æ¤N®êƸZõ)H•Y@«2õ)H\Õéfr•e<©ãb“õ)Ȥä:2ê8©ãbÔªOA&jãš*68™Ôt ÒàdRaë8™T5&J~ÆSI½Ïàdâ„_'볚 çX9·ÉÇH¢)ú;ÏŒÍÒ õ%_`stP$Èà1Ç€ —û©m×h¹ŸÚu!!¼…Ñæ,’…h9‡•·^8kd,׎–“3xx¼ X—·@ºœEÑ c°%ÞúX⬕ X/[*ÆÊ&àåiaç{-üRüâû?6»9õ}°Ž“ÎÿÀÍþâþ?Â\kÿG¾~¸aßóý‚†%ÐCE_©»@6ó'oÉÃî’í‡ïxù|ÿñð$ôþááÑÂüæ<Æ œ,Ò0‡ýˆ"Yƒ*R´óÍÉ óSöÿ†¾þ”ÚÿCÛ‘Ïÿø =´ú3¾Äó?½Ö¾¬ûÀ ü Lð;pÈ “ó|÷Óf¿âûÀº´`šw äíbõî«cÇF*KÉ$kamŽÁ9»j8ƒóàB.äòmÂv£:¯äçæih*¥8`ŸÔ9ñ,Ž có0I; *в6G[ ¯‡WW¨^ÝP(|Ó¶.„¾ÕÞ êxȬù²æ î(I”ÚÌk¶OAG«Î³3ÍÑmÍÍ;JR/²ÝqiZ[ ¼â²¾¾ˆƒ˜_·A,Ø’©,–&S»M—¿¡­¨ô”–®P=0+a=õ଄uÔ4ÿư۠g×…í§EƒÒ(Àj”%¬FáPÂj”¾ì^ƒ^0×–=­<)õ®-»¢Þµe—ù4ß‘Ö7/Ÿêýçí ¶Âf–dÿ Â|ÿ‡]Zóÿf|ÈþW"súƒÄï¬@;^©T ‘ùŽÆb³Že ¬Àź^©€Ûs1X¡èûøÞ¯âÈ…ò]Ònhã¥(’…1(»à!¹N‡bcøƒ(’ÑÁ(+º,2¤E`?Žši‘â £²°0åQ¼ «ÿxÿßââóŸã½3 ’iýßsä÷ßC7lÙÿ›ò¡þï:®ëéÿœód¸ÿ+ñú¯­ãyÚÙ­Ø|ïLžvv+öÇÚ¡ô^ð5ßܼð>Ýý_TÒú¿[ÿ \¯eÿoʇÇÛ-‚¡uì ù`ØñÂêÿ…B©Pð‚’xÝv`;®ç ‹¸ ˆr<ß |˜Ècpàynôÿ0éÒ»]hGwXôjöŠø6‹ÞRÃ~ÕAwýÂÌ’0$øN˲cà0v¾kb~¾”ñ¿÷?ø+¯ÿ…žg·ú3¾FÝÿÄF€ "‘/òœçë~ÊýZ÷‹<ü=  %næ‹¶ÜuŒinP}ÀÆlQ‘G¾ófNWÿÔ‡O/˜SìŽbÍM]™¨ÎKëh¿A»µ@ƒ4¸‚Á'0=Ú‘40ƒÝQÏú¿’”~ =€ÒÇðôKåøy”ÚìÎ9këÞÖ#¼­Gx›ý¯A›Mì Í=~nŠV'c4ÇÏM™ E›¶uBÑn zƒæøy:Úä®ÛÜãçéh“©Õ?OJntòZÿŽŸ×;ò^ðÖ;ò6÷øy½Zæøy½Zæøy½C¤æøy½zsŸ×«,iŽŸ×; kŽŸ×«~hŽŸ×; ·ŽŸÓÍ:~n`€¢öMËÐzX½ Ú͉l¾t2~ñõ¿­Í^ÿwC»µþ?O_Þòº]›Ð}~wàÙ%Çv VXêv‹ ~J%´Â'zÅ%9îÃCŸû×áIÿ‰ýÈo€[æàW°b?.ÝUú¹ûtý¿‰ïÿ…¾ÄÞÿ³[ûÿšòÅÖÿw•«Sƒ&ÆG­}Ã÷eÚ I ÝE?@ïøožþ½ÝÀ/Û3¡Äý¢+nQHÒá_.ŽûéŠ`õnðæ`³P™Á¯êi±,'€¦û &š±´ïã›Äéõ³^ªîȺ0u›¶€mP;âÃnµ=ìf¸ À_ƒO¾úÂÁWkƒá-b4M 4Îæ.b;^ÉjߌØ;Vû*vB-¥­d;á…»’Õâ`‚Uoœ¬Ç.—¶P›©>m ¶u…Bf#† Öbf‹‹ Ö´5¶Ú8àd·ò¡Õ¯d×µˆ›°’]Ú4»dm½ÖIµKÖ†VoýoÈJvìéõ $ÈiŠ¥/3ogäùQÚátRåav¸Èé¥é¶;Έ8q!ÚîñÅçÿÛöõ7ø@Èãäóòû~!lÿmʇì^taªè » Àó­‚ç /:ðÀägã>þ'¤§tÈ ¿mûòônU‹;ÃCbûó\ †£E²ž ðÎ7//ÄOÝÿ{`JÿaŸ—Ïÿ{~«ÿ7ãk°ýO+IôØRËÍã) aY•_(ž?âTäI£g`"dtvL+(³îoÊ{£þ˜kYÔÙà^x] *iŸæ%Pue²æÇ….*6ª®eõk¬­êLá›gMôdMtÖ ZcÖpã^i¼ ŒAFSE`d`L+HÄ{CYRÝ˦Ï0© Œ!_uw6ÓÀhÊ×. _ÕFS¾viøÚTc½Õ¥10¼™Èƒ¤—ë¨0±Þ^Û\£)ouýVc`4å­ dê µêRÈé¼Ê[ÕJU”’ #Ū?õ%›ˆŒþfÚ"ãóÿþ}£ƒC÷4Ћ•lÿóäù?oÍÿ›ðõë;Û‹ìþÎçw{Fï8~¼¡ç†N‰}Ûµ‘}.(ñßAíZñ¢°ŠEÚ4²D#KQJÆ lšr¾YyA~úþß8`Jÿíøý_Ûiõÿf|~ÿÃëöœHJ8ÂàI“óñ" µÑÎf¿ð—v¾M€©PÅå(9´Šâö:,sIyKz¸€ƒóE|‚®ÄçpøZ€d|D]z»•º‚xƒŠÒãW7”¦ÛÅZ€('ØÉéÖ ­@jè‹Èi=’¾¹‰—¥Üà¨4ðrº‡ÕÊhnpVï™âðì\>¢Q4”åÑ(Êòh %^3瀤Ի¶ì >iË®¨wmÙe>Í÷L¤õÍǧ˜ÿ¯mêûNàË÷ÿŽ×:ÿ×”LÊJÝ®] m²±OðqÇ »ý‚Ÿ¤ÐÌ%ò;’LÆÝ0é €þad tJØèø.n'+ZÇJ ޵ivÒøB”ŒÙ|ëùAHcño+FÒŠIŽõ¡- mfôá+çàGÑ÷X,þmÅÀp¬”„Qš‹$I@ÌŸaàhyño+†c¥$ ǖУñ °àYÑ<‹[10+%a`³‹ RòCF€Ïq£DÍø*ƒÀg5ˆ[10Vû ,ªñ ÿ¶b`8V"Æ¢tâX‰F¡JÌŽeÓJYÁÏïw)4ò¿¡@“å¿Oìü·ShÝÿД/fÿÝ121¶ob¤<<58jíío.€ñ{¬ÀNºCíÕDcô–¨Àå×l;A%3p´4„Ø]ëÌÙ…ðq;0gàe`]’×Õ<+Ý`;°ÎÁaðèt ~0.,ø ¾¸E=Ïx@Çq"Œ%Ï u€E× `±X²u€…¿rˆÃ¢Íe8<`¸%t݈…†ªRÝ‚ æ ß´@—–à TÀ(N@"JE„±Çñ cPôŠÑóœ€Ç‘…†â°¨ÃXL`€¾ï{`‘t]׋Jíùv”µë…a•!p-"†£:,”JQe“7(Ñï¿å€®êGՆߑĥ ‹®0²À1Òc¥ñ (`HWœñä·àD½€ÇJZdÁŒÁ¥ø~ ‡Ñ.ºQa !õÄ1jûýÍ S$WÓàÉ|Èe] BTjÀ_ñÕ“S¤Y=ß²fq¨mŽ="ã‚ L…C¡Ô¡>¥¬›±'¶`òײz½Ê…³™8í®H˜Z ‹eÚbí`v§×¹p˜¦¤˜).YJ2Ä#Ž˜À@J$¥Ëb1Lf L_•¸à[‚Á`Š™âÑEÅôAUL`0¸J ÒU 1Š!&0P5X±%øoK0Ð/ØË"Ò¸¤Õ3Ä㤔Cú0(&0²Å KôœŠÐ‚Kq̤¿)Wb’2¼xû‡‚‰™B¥Œ¢)&0PÅz¹˜À@íLX‚&ž­*Zí;@ë°öŒXƒ‡ËÓµ¦ŠwÕ´=$M9Be)v ÔŽùa +ÛCÒÐ[YÒNxÔº‡DÇ?]L°†zþp@ÀZ_ûFÎ%p¾Ã`¡/+aNRäLOX›O˜¨€µs°vâpF†nâsö ¬9›S­ÅÜçlRXP'(åEÎÒEµ ¹ ³V/rv> ¬UÄ΄GµJx 8Ñúr6ºÁB«™ª€µZ©³N#õ8à Öj£*`­&r¦³,(QýÌJP]BÎäEëE«¶¨€µ*‹ÇY´XóЩ+!gôcMZ§ª¨€µjJ‰³d"àù^Ü1øëUo»ßÜ÷ßýBlý/líÿhʇÎy%§X]ꥂó8v©Û/8®k‡Hƒ•ü¼7ŸÏøm±íU~sˆ+ébIÚíJÄv§I)“´ýBèɵ}ºþß¼ûßß±c÷?¹Nëþ·¦|š÷ßáÕOV–s_!Ð8£«ß_ä1^ïøÑþÑËù»Üõ|y^óþ;—@qìkΖû ºù)ò³¤j|:˜ ‰AªŸçÙŽÔ<® ‡supC8_3®¦¿îT÷‡ÃÔ•nj×>S6'ÊŒ/«òÆ‹¾÷lüŒVu9‰|yÏ€ÿb¯a “þ½W¿[uHoþ¼Aw1ƒ/Äà›øF<º^¿õF|&¬­7â[oÄ·Þˆo½ßz#¾õF|ëøÖñq´­7â[oÄ·Þˆo½ßz#¾õF|mëø ñx§¾?ó½€Ñúêúâë;fª•Ñr#7Àv’xÿ«[ÿ 7×ZÿkÂן'nµïªlp;¬®.«×‡«ý!túýwÍØøX>ïw%ß¶ˆãv—‚¢ oa¤ÿçóažŠÑÍïªX\›·Èÿ ^/`n °®Å‡%¿àÀöƒE)°C£μ ¸˜WîóÅûÿÎÊöÆ>ÿž¶þï„^ìþgÇmÿoÊ—ôþ[A6Úàw— ôv)Kô…Ý%{j=ñ?—¿ªwD¿’üË`¹ø™ €´ˆÖÑánNŸfyøµTü|»/H €E0Z™Ã€Ec”Š_òÀ!1äm>kD$¼ ˆB¼RB–Ü¢.ÔÁ‹ó¡í¹,k7´]J£/ÂEQB"¸iÔ Â.ÊJ P(Â9B¾}ž+À¹<>‡Ë7,ôxúŠ\¾ŽWøÂ•·ÈåÛ„Í.îmÄéu3nAˆMœn±³XQ[·yéþ[%LÒ2¸A/`¯ÞKÍUÛvÅÝGL`ÐX‚‹ÿôw1/õA­ ¶q{CzÇ·+¤whÞ@Pð\¤?]`‰ô§ ¦o·(¹V{¿å;– þÕºÝÂw‘0"Îÿ»aY‡5~ò*u 1én6{`,ÐØ­tXë{`Lƪ{J½<høªÃ*Óª~`̮ӭ~`ÌÎhˆšgÐkÊ Ëœ&ÓÌÓZm Ü£ç㵚@ Öj¼nÌNlé4€‚ œ¨#sº/£Y7,–â°Ú!‘ÓY)¬v8tâ°Ú¡Ó]'tà‡ÕœnÏèÕ ¶kvµÔŒõ L¨Y¾¤¶G3MR¶F¾éÆÚŒÜÎCÍL50¡\õ$LY¹õDLY žz²£¬ÜP=R6ò‚zRÆ8!”M=‘R6ò¢zR¨ì<Žz¢™á®pQÖÒÀTmFÛÀT­QÛÀTLÛÀ”LÛÀFÛÀQÛÀFÛÀQÛÀFÛÀQÛÀLÛÀ䯨û_Üþ»kª‚ÌÛÇʱ›MÒúÊë?§Ð:ÿÙ”¯nÉQiÍ¿xŸ ;'ö$¿ÿ]Áêæóy/éîmûàÊ>4 X££ÔðÆe{çTž d`>‹o†]dŸzýg`SåÀÈ»f§ªh€Hëÿ'Ÿÿ.¸^ký§)_?<ÿM^A[ðÝëeëÿðôwIyÒ÷êüΊò7îê8Öw! p(õmß6=ß’² ‡ƒ³ÝÎã ð!˜Îá¥aQîŠH'(…2EQƒ¢yÎwõ¦~©ãV‚SúxòûŸ×÷Zý¿_lýw½ñÝpÑ×@whÌ¢¯¤c`ëÖŵêëé}9Fð~z«<¤t>„™‹°P£„8!U¶`Sî}®û\î…r%}5Þpõ1Æ¢N¯wèÂኛ—Ú•¶5Z ™qëé­’%hÞ%ð%Ñ~tšØrj]àR7ó´U.Çm]™¾ÌÑšŒ5á8qbIk}HTWÒz®–,ÌÉ‘1ýézh-5îL³ãÄuMuÒÊZS?p‡dí^õ‰9ä\ÊwFæq:' Q6§1 ²nx*ÉÀó­Ù›}éöŸú'€- ó¿Üì+ÍÿS[ó¿f|uÎÿŒlG Ÿÿyéü¯d8ÿãïCB),zt‹®öj&$«\ /$éo¶—Äèê–]Ëë£KØ J¼·•E ‰ˆ9,dp>l3#«pŒDEIø’à°1NI_%åËÓ׌½·x‹q6dÝ{ë&NØšqý—AcwÆ4Ê„êÆ™y+m·<3ÛŒ«‚Iz Š[WÓÛ»oÐ/xƒ~'nM—züêþßô­®Nц–€Ðí¨æ­®!îùÄÙ^4Fw×p€#á¬ï]éë{B]úúÞ€P—¾{\e:‹sbüÐßqdnPK_çÄ_]ü:§ýZ#E}Ó~ŽõI4ä\j“~^Çp8 ™Nãµ I‘Ó’•À¼2Ûm—¨-Û :Ú§¡#EŠÁjGçH‡b°Ú‘YAƒvTVР‘eæ{ZÛú ¿¸ýç=½ }ü!g°ÿÏ•÷ÿù¡ãçZöŸ&|ýy¸PoGW· >ÈÃö$Ûfv';´Í¸IûÿÞ£Þþ‡#{[’£¹ŸÆþûþFíýƒ_Zÿïÿ ýBkÿ_S>´ÿ·äxT}A·o®Aÿl³Ùÿç‡ð -¾ÿóûÿX öÿÁ7A` ñB1ðÉn;Añ‚D"0´¯`¼ŽS,M| aóø…‰da Ê%'6†¿Xt\éÙ˜öƒH:P–ù®ÞÔ/¹ÿ7昔þÆ× µÿ·9_Ýûÿ dGÃ×.Ö[_Ö°œTÌAé‚4]Öá8ƧŠ«Ùúǽ.yø9"YÿÁ—¢DRCbÁ‹f“y&)F$2É É`GRa8,wÉ|‰cE ‰¨dfpQVTH3¸ˆt¡PttÁpÅÝ+ìÊ•.å"ƒk°X‘´þcÐÅåƒF)­ÿ¤7ÎKè*•^ý‘ÚÅõ“ô~!®¥÷Kq½(½?‰ë?éòAº%µÿ7ý'@;A=¸þSóNPÏÅÛz]² ôby¼9Ë?ÚRÎóþO™ÒFìþt[öW‚ý_;(9œ†D ÙÚ©ÈiIÌê­Œ”ö­”.DÚì“Ð^¤¹°µt¶#­‰­è$³i:Ìþ¯“Êa¤µEgí5¹id-ûÿ…ô)æÿch®Ö¸UØH’ÏÿÛòüßöZ÷?7åëÏ[ÅîR¡˜_ò¡6"ø8ëu{Ž] <·€&/Ì[}äø¿‹>+ö#¿s,iqÅàW´b?`ì|óëbûúÃî€Néÿåþï8N«ÿ7ã‹ÙÿvŒLŒí›)O ŽZ{F¨5К.€ñ{Ì‚^wHï óÞç†ð¢v¢6YYí‚hÂ$>ÍÙÃØ»”vAÉ’'¼Í¥ˆÛ9lŽ[½ïA{µ¿M‡à˜ÒŒ¥5RmÇ Ï§bN›`e»ðÏÎT˜9iÌljÞ³M|4ùB9œ 9ã6õTqhµïÀoQk .Oïm.n.n.n.6EÛ:\l'‡‹ œÊ¤´3 C8§ 1Ó¡š34â1ªaú¿bþWuÜÆî…”'Ù‚<ÿ ì uÿSS¾~x†7pŠÅ’ƒ'k‚/ì.^]‡–áAîÿôí"¾ -(9ø:5|ƒ,¹ÿ20—‹-Šø7Ï…»O!X©ÒXÈÀÛñY, D‡Èq¾QlH× ‰á)Še ¬Äå˲,\?Š-RªBФÀÅÚ´¼Ñ;*o‰2ý¸X†eá²Õ]ÿšþßÔ÷¿ ¶|ÿ[àØN«ÿ7ãkÜû_Fb¤1[Á.í÷¿°È¤Ú ’'D‘^ëŠâ„Tñg½° %€X¼’HüE€QœŠJ`Lj'¥Q YÊ”­"`'¤¢"šä1zXZs¥æ rY$@›ç£Í1œ5BXâk¦Ä1\~™-ä Säîòì¹È¶¢%v’a’ž3è ÒβôN!&0¨Ti³[zs¹„ö®ÑgÀÒfŠKïLï"bÙ$å.zÄ"HL` W¥Òe—”Cº c š÷XˆžóZÏ)±ÎÍs`òcXyL~¸«1ÏÉ´6æ90™ÖÖs`—ìs`Z­@õäV#P=À¤Õl;¬Õ”µC$¯bÑŸ0<ÀÚ¡‘W²fݰ(€µC"?s ÀÚá°¤Ö…¼vÎ0ë†AWnð³`Bs°5s1es(iæcl 'Ù×Ì%”M8ÐÌP¢W›øz5“3e {š©Š²<ÍüPYáfê§lïŽfúÇÚ;_À¢f>«lïEÍ|QÙ“Íœ‘ohzLÛÐTmGÛÐT­RÛÐbm'©¡)%š¶¡©ÚŽ¶¡©Z¥¶¡©Ú޶¡©Z¥¶¡©Ú޶¡©Z¥¶¡©$š¶¡ÅZe}ö?fÿuvô­ß°µ¯1VEñƒä&­ÿØž¼ÿ×ÿr-ûo>ë‡,É <ÝÝÚg{‰|¬ÿ÷î¾}sïÀÆFßý¿´þï8òú¶Îÿ7ç[34³¯2dí¢?Ÿß˜Ï;Ýþg•lü„åeë!Ñ¡É/ß’äëÿ ]ùÅ_rÿw¼À åþ_hÿÍùb뿽X •»†ÀdªrÁ,eØ™ŽR¦ß¦n˜D]ÁrƒŠæ’4mqÉu«}£5†·Í׸¸¤i9iKLþ³Æ$cõÒV'jÚ€í§p ¶Íâ¶DYù-­1i°få·r)V¢¬üVn—aÍÊoi»|Æv©ËÍp»|V†KÛå³¶L#´ §Q2²\@ëé©­ç(‚¯¥6Ëbc mêe÷‰hµGB=oëA[Ȝܤ78ÅÌ…5麎þÚ{m3 ÖÍÞL¨uÌ…5ée®›¹jLz™ëe.¬Z?sÕ1A½W¢ÞÑÑUo–¨w(wÓzYmz‡›ÚËjC[ÒªžÑÜË> ˜ô2/¡—ÕC­¾—Õ£|xêýHõ޼^ÂÙÊŒ<ЙۧÚ0sû4bB!³H1éžþ|e=#¯WÒó¶õÃÏ>¸¡ujy“»ƒŸpÀ2mrçõ½µšjÓ^GÒ¡M¡6È\X“^懙«Æ¤—ù…Ì…5B[Ì\5Z&Ôg#ANSŽÚ6r_öM/ZC—hkL=lk®·¦¾¤Ÿo«¾ù'­ÿlžõ_;Œ­ÿ„Aëþ·¦|›[k½—ôëÿÍ_ÿu?¶ÿ«Ðºÿ­9ŸfýwßÄð}VkýמŸõ߄ÿ’´ ÚSk¥Öáaš³R;ßk¨%«}sk 5£9¤µ†ÚZCm­¡¶ÖP[k¨­5ÔÖjk 5†¶µ†ÚZCm­¡¶ÖP[k¨­5Ô8ÚÖê…¸†êÔ·†:ßöÝ´O²ÿ÷Ÿ/ë¡“kÙÿ›ðõ·Öÿ.é/Öÿçaý/ üØúŸ¶ú3>Íú_¶«n*É-ëÂZü£ä±;uñÏÑ5ìêßúÿZ+z߼ɹ ÷ÿ¨&ç­éxk:n4/Îát\P§ ä4™§ð2ušÙЕ³1ÓþÄy¼Ž‘†Y›™Ôs]MÕµ¾Ôþñ§œÿõλý'´Öü¯_oËþsIšþ?ÿöŸÖù¿¦|·ÿpz„|¨±]üO´ì?-ûO}sΖý§eÿiÙZöŸ–ý§eÿIá©–Ò–ýç"þ”ó¿çýÇoÍÿšñmlÙ.éOÓÿ›iÿñ ŽÛ²ÿÌÓ—hÿíÚg‹- =? ¿© s¥ñ<»X¦eWJ¨ÚÄ$ê*¾@n± KVûÆ–õªe½jY¯ÎëÕ¥ô S’È®ÿ $Q­¯MÿSêÿ›ÏƒùëüOS¾Í­ùÿ%ýiú“÷øñùëý·¦|‰óÿ}Ã÷µv\¤»?Z³ôó`–>¿óç‚cµonÍŸ[óçÖüù¼™?׿ûC¿ÇCAê¤Î9·”ÿÜï©8¿.àI*XÖ‹t5õÓ„5Š‚Í·ÎÚú÷)ç ¾6Ÿ¬ö§5ÿkÊ×ß²ÿ\ÒŸ¦ÿ7Õþzñýa«ÿ7åK´ÿd½˜Ó9ZÆ[VãÏ…qð%iÑišyÆ/À{€[æ™–y¦ež9_Ì3­‹•ÏC@­‹•[+·.V®ÿcó¿›ÀÜoû¦¾ ;ÖoiöûOñû|×kÍÿšñQûüg•ü¯eý¹d>uÿoîûO®{ÿÉ[çšòÅì?;F&ÆöMŒ”‡§G­=# }˜?§Ë`üÀ^CSï†`L+ÙxzÏùœî‚íW,4Æä¸se Êþ”d䮎~f~ ÊkÈF ê‘ÿF±Bºèwó,L]Þ˜˜ç!Ó…«ƒ7|Q›—$¦k+KNbPióò˜UZí;` Âç¬F¬ÁÃåéZß±R7†4S–ã6Ö¥µ‚8 °eÅR§XM±úú’`ÕÛ²’KZ«-KWRgL°æÄîVÔòµZKz¾ÖQ[޾¨õ4-ÇI+kMýô`ma³v¯ú¤ršr *s¾šâ’†«¢ [PpíPåúEk³ÑÜlþ·«o׎õïØ¾mý–Fÿ2°ÿâó¿ÖúS¾Í‘ý§µýçüÔý¿¹öŸ ˆíÿ €ÓêÿMøböŸ]`þDL>uÿâ|­@—üñ/ Þâ ›Q¬ þŽ]Hâ¼¶æÅ8ã•à 0X#ul2J¨ØTÛLxáî3Ò¦žÛL=Óò´}FµY&ÒöÕfE)̉uªX—¹Co›™ ;’“ZÔÚÐ:uµ--Ú4Ógh½9ÙoæøÛpÆ£ æÆœÖÕZv/5®Ö©¹èSÍÿ|ü«&ûO!ȵæMøú[öŸKúS÷ÿ¦ÚBÛâöŸÖþŸ¦|IöŸúŽq¾–ñ'«ñçÂ8þu‰Ztšgžq=xŒšg¬–}ÆkË>Ӳϴì3-ûLË>Óô·Å.Öc…M9j–òú×|Ô¬õ‡›ÿW§*C£•ñÊPƒ9“ûŸbçZû?šô!û¼üÉ%@Ç*¹VÉkY/OÑÿküË¥¿ÿ(Þ·[öÿ¦|qûm†F?î–'(E"_-F?цXr£Ÿ×2úÅuXÆ’æÈC¯ð_Ëê­´L}&´4SŸ }]N­[°b•’fØkÊ™¸†Y_êã=rZwû¨ó¹Ð&á:F¶îöiÝíÓºÛ'óW™èšë<`áõú¿‚ €¤ÿ;¶×Òÿ›òÝP.[7ƒŽtÜ’B¦«Ã yHAS•ñ1°ÑÊ>!låt$\ÉTï›,La–±ÀÉS“ÃUš?4Q¶öWƇ`O˜DúN»U0céD?Æ'&¦ÉO”x†'fÐߨÀÄäž½{ü½{¼½,xÇôôæ—.%ó˜vN<É ø„kVYD5F*\¤IIª˜e­Z¡%ˆvà_Ç:„fbª$Ç ?c)–Ç`ÐѰ ±äo.ƒ’—­¾;¶ï°>h퟼¯îoü.OMu®ì›š‚Âj|¢jÁYÐhŽÞh¦sýJ×þ¡Ñ‰érûþQð{ª\™’gu$ŸTL•‡-ÀäAkÿIïÙÜ·L’öWÅ {X$5p/ ÖÇ`ûÐè)«öC´Óª@EÁZ54:Pï´PŒ˜žªîÙºþŽõ»¶oݹýìÝ´~ÇNÀoKøw÷¸;÷uuâÉb'œ#v¢©!f+WW¬òWU¦1…SðÞšŽüa&7o鄎®ËGÙ w;w¼…!j§÷¸A¸·sºº'ô÷¢`ˆ°Òy°óžÎÑÎñÁêÀÄèpÝimExO§µu÷–]‚Þßnööì­a¼³eåTueG‡ÕÍÝ[¶XÖI¡åÊë{¶£qÄñµÖMÓww¯ìDh:Ö‘T¤Þlp„ä,–¹Ç†‘y¨R«•*(-ä¦pÿruº}º”µ´…žBjU|Bb°`OÍH„ñ¡Éû@Á:§;}ÐÀ?ý½=o¿Ë~û:‚€€beÿÊëzÆX=ÂÅã0IytºO¹19åF}ÊÛ“SnÖ§ì½ã½Éi{Ò¾÷Îä´ë“òMI{;i  òP×™“ÂêHÔä¡òÔt™ÞÖ„æáSüN¬^¹ìv™}gÇß¶NnrÎ:Ô%<›âDoê»o*¤mö%krpjp¬J?D=&ŠoH«ýÕ®ßéâÖäF­ ÷Ä0T\‡Ðð‘è ’™—:­Hv´eÌN@Ç=•Ix¹ŒqÿöêBØ>hú„z/¬+PÇ&E‚n½üƒEÙO‹"pÀ±qJE2'!™«OæŠÉ`ÑZ·Xž Ê"àð”8peO C˜·µ*ÒTãÀ@zJv7Ýa÷M±;2v'†=ˆaL±»2v—a‡5:}o¥:4ÒŽZ1ãCƒ g ¢c-‘ÓÃ=¤>Ww5©¨UÄ]Mj`q©€§Éhúu´†IˆCC\§ÅwŠv÷šþÍ«‡&¦ÛÛ)Ê.’¾‹¤êX3Ü!¤tä”]íÚ”®.e—TZ1%ið´“&9ýþ©jûpÇ—î½ùžuJ~o\;Wl£× rÚ%Nt¬CPÛIæ&%(¡£G(3™–G…ÐMA8ŒÌëX1Î;2˜­jN.˜ø<Ì*§gØ1¨äÞµy$‡…Ê¢<æ{*<¦f€º‡9¬¾b±mØFòêL¨жw©¹w¬‰±!b½)› X´>bQ] RÉZ(äê€ó¨Š³&®…Lî!,#èéß¼F®¢¢™Ò¨üG­ö´ì-³.Õ$ †…ÞG“X«­ŦÁ‰J“¦q{Rï1hÃ"‹h'ª‹Cò°¨ã£îf4±Õç•Ø2êPvvž©”I‘û.##µÊìô*ãµk:¨Áz[ì÷¹Vø=R> ~­ñ@–½ÔS* ³Y¢%hé( `>½Ó{ª¼g²kïb†B†kUëøÌåêê’ÉUda9¼j¸#U/ÖIgVqW΀1=399AçCì‹ÕÎOƒ:¬¡‰‰©á ˜äãÕ4lÇ §ž™**’MpÖjÈE}މ7Z4YÁÑà/²¬tÝhì¡?§§ªxººn{ü´*7ã9øµz557˜ÌZ¤yC°Ú[í³¹ íÄ‚Mˆ˜Ú›Â¨°‚©ÌjCm€Õ1ÄÊ¡6ÀêÊX£ÈÕ«×™q.šoBkk1âÔ-@SW~îjã‘0uÅÕxVãÁ›q|˜YŒ*Ò´*çª2çª:çªBUUz$kÅÞ©©UÐ ÿC?àŸÎ€ÔrÀȼW1GD Øx;ÄÖ¡ÁÑ™r”1 2Ë)×Ó÷v®ü@ÏMÝîþ•Ðnɵ˜{`‹¹çfxA£a½>46©ÁÊBïAã:¸Ä…\¸Ï*®LW§‰åf;ÚCl¢ë¬QëfŽÓÀ¿z5ÀDB êѽ=÷Ð*߉ꄵ­ïŽ]|• ›zù^œ+eH ñ|º5 æ%4µërX³6Ûwu[cƒÕ©ÊaF÷|&?‚™nH Pœ-ùH>2–ý¤Â®¿VZ#婲5V„+-ã£÷¡AY¨Á ®&ƒVα‰a0À÷wnìÜÜÙÛ¹¾ÐS… KÊϽP¤êà=eŒõÂ鵂êÜß)Dïf€t•8 zó°(‰ëkëж;£¥\¡Ò”ÚD´&À˜@šÜðDÞ|€¹w¤2ZF&4d[O õÉ(‡)PC£xQ‹î«/£aö6¢Òì,jɃ#UÏÛ+o·>ô!æÛüöhÔTùƒû¦©³ èg·ìÚ¾¢Š"]„Et@¹(-ë¼gýŽm›·½c-š[m¦—çá ?0 ´Í±™éªµ¯¼ÖZ &/+Qèý¡õ¨/Þ5ޤñT™0µÝ}ÁôôÌXyįäç•-ÓãžF˜ÐÅ¡í;×Ä6&5±óÑÄ66£‰]˜ÖVÚìFY[ÝB—3ø·ÖVu»âÛuïÛ©ØKÛÓZg¯ ǃpfÆÅ ^ÊÈá" œØ–.m|8¹Ú_º”«xLÕâBSÑä}‘©è œ•2(É”"BèÊÞžƒ4˜XÆ—òƒ W#Ô(5]íä23¶@™eLó<ÂÙ™än7„Ü;U©–¦ÊÓ:Cˆ¡„Ø18Êxù^)- JILÓãå÷wR\ÈÀžý•ÃSXL´-K@0>="ìwE–˜:í4bj¶ •ü€eÜãÀ-³î^¼Êš†»jCéÑž[¶W·oWJñ¦Þƒ³£e§{n+ãd×-2ÉD™<™‚¨w•G1\§…¶ÿV÷øE’/Úi„Ì2ÖÁN²·–š‘±1Od :ÑE 3ÖþÑÐ'f€€à÷÷Åì9÷ª·Š*vŠ¢=¾Ñ^Q¸Utwa«¨ ØPÊHÉ#ß?Ú¹rÛö]}kÑ ’C¢Ÿ;˜Æït^IYlA j @T’*ãÜ*Ú¾ ¤§2ñYJ§M-¼íõ®q&ïð~j†‹„…e­ üØKʈ¹KK‹ ÷j~ò‹«Ó#è€d¨ÞºDåPämY‚€KÁ¬ÃKÀ'E¸’ŽÛR¦ò‰n²º‹ûA$q‘³#Ú'Q‡:©¢$§Gy¦Í5Ïçí¼’·ÃòF#´g[æá]ãø^ͧ{)¹¬’êÇ穨#0dí°‡²µàë;0" ÛBÌ.à>ú YÅ®8øËa¿\dv0Æår¸†Ëa¸œ ¸<—Ëp¹ ªX¼çDÁæô1‰/‘Ü‚£Ÿõ¶·¡Æ"Ȱx&ºÕV;²aà°˜\é}sØ‚…Åšûº~„];U»¨áô¾$ñ̰&!ZÔYã­ˆ[Û–©WdËK¶¦!GÊI4€Ó¬HdWàŒ‰ÛÁ­éZñƒaP…z$V+±ÙI‘¶×ù6¦ÆQh€l²'T´â¤½Ôžµ¤¥r(ŹW‰h‡¢1ÄîFàmLÜ®O2#Xê~>î~þ~ü‰j ÑÄþå°_¬ãYG¨6Ïì8ëýЇÄ*`bA¨…íCá *Æø´«VJ¹DHç¢fcâFs»…AÝ*P™ÝëxiL‹×£ €º³Y}:ìU 2às9|Ãç0|NF|‡Ïeø\†ÏÕ3oïÑ´ȇ¡‰™ñjÌHù2D“QÜYÈ” wA`¡ÝT P²x9¸—lÄ–MA£Rïc—ŠVNÓ1»ZÔ¹Ääº!3jȰ~‘‚)¢ñ“ó«ÇPKE‘±A,#J§×¢jº£ç&HÜ{±s'rI¤ ‰ðük|†ÔÐñ>ÏæŒ=Âa7QéŒÏaïO»ËM&ñC簤̂™Í³bU “TËå1wÔ°>%¹Ÿ&0:uËàþDµ¤FX7C ¤@¨¹«c0’ ?Z$ ŠÜú±U ýôñ.§{MØòvºË]%¤‘†RwKÎqÖ„ˆ/Vü‹²ÁC­àw$¿KĪlM¤Ú«jož¨vë Ú7ªƒ:ZH0×-$ð×Ûß :%Îp}O5pÉÇ¥X=B™é¨¦°‘ѶíàUI MTË@ŬŠ4EšoÅ„ÖJ|›,‘ùMåA|um,Ä8,¤¥ÉæÓ¥7^ôîF[ì ¾ŒüÌòBvÃ?«ÂÀ…}z,tëömÛ{·lÞ;¾Ô´ìNøïNëH7œB¢Ö"&™>ÕHîìDÿ8$KåžÂ•r3#"˜Š›$“³´yºõ9nT2jcJyºîLÃ.lOÑbS°8 ÙzU®OÊ!â~é‘üRd(J c©Üú7Ám±wZCƒãxSëà8ÙÓJ É,#_êUŽc·zåõÖ{¥Ö™½WuQ׫ßÛÌž…s3m`ß‚ÅèQáÒó0ëa›@¨£—áJízor7ª^ÝÍî@:ù{mº› Z‰]ÍDšt4u?^E7Kêk´\P|ÐR€T•ÔÀQÍJèGúí‰7 ³Å—ÎñéÕòF¥¾X‘_1Œl·¡DÆ'&" \îÆST‹üt¢ŸtN + `·n±Å5=¸ðê«ã¦:xh “JÎn-•á›æÈrÃA¤ë‰soñþ¹„rŒÊu0*W¤BJ†)ÕeuÔ edâeý‘.XµvôMÏì8t¨}J´ÞáR «ª†g†ÊíSt JúzÃâÈdÆT¤Ig·9€dÔu$Oÿˆ›Eæû¶¶Æð‚·¹Î#ùþ?ðÛ“ïÿwl×oÝÿ׌ï†Êþq0¸X›·lb7Î!Ñ-qåÃÕòÔ¸ua^F<™þóôK¤³µYí"Þ¬ªú†òøpe³† ÿ'æ:dù8vÁnÝÿ:O߇û¶l\°`ó/È-Ê-àâ¿|+v}ô·=—Ï]žÛ}üÛïy÷μøuøÄ±ê΃qG_lCšÄ¹™¶^=wîÜÑÇ—ï{þè‘çs3íG_\ ‚GÁèQˆ'Žägî[‘ËÍö]ûD# ž¤œ8ö$é§)Ž=6ãÁ¬ÞÃuôÅe ˆåÌ[W4៼!<¸˜ :qìAãû(,…¨!V.¿êkgû®y"¹qæ÷r9° ¼~R,I€W ÀÅ ôìdµN µBýpu«ê2ucÕ+A-EPÃUï`®F0P”¡Š] oV"¼WþÁ…˜µG»6ÎÝç¹»ŒE?6‰BXÑß¾ªÁ-çãWQ,"å÷cÊæu-ê§Ôe>õi„ÌC?áÿ[W_pü]‹9lGËׇðèWÛâ8WÔ‹s9ÆùXöë~ä:ùuä€Ý³}+Ž>vô•Õ×á(,Až¸mqîþw߆ѷKèÛSÐ[zô–½+¡wSÐDzз èA—˜Í?¶bý ü{ù•ühHÄóávücÉ•<µˆ†.¹ò'Ž/¦žÅÕ[Ï\µ”ú®¸ò'Û˜çÃWãù+ø bΜaQÃW>° ôÿ3ÿ· öܳ»WœÊÌ#úÚ€çèï·Aÿs_E!ËQÈrrjï³ n£4§Þˆ›œ–„/—1€ð½+Ž~íÌ)¿ôNÎ<{bøÆWN]{#k\Kîüzî©SoF)-Êã6LyÊv’gÿbÈrØV£¶z ýþæiŒõ¤Eæά˜=²âèm3mçfNž›y6‚¼B~/Þ3Ž/:¾sññË¿gññËŽ¿{ñ™] fêåèÌŠ£ˆ8ºwÏÔ…Ôá>÷”Xš¶S‹žû]¯C8-Œóè×Úd´”²Z1·SÌËëÃÌ· ‚ Kªeï³\L†|šU±Àü›Qe>;»û$’~´.ŸžÝý 83´Ä¼ÂQWA±Ö£Pjü” jFB³æ»RDæsßÓ¶aÓÚ!‘ pæ“@ñ ¥µÅ…Š\ò8DB1d©³ÿÈ¿‚Èû»1 ;’½§r§–Œ tr»B Ý§ï À‰ôHÉO~&K’\“oK¡åä§>Ý_ý THÝÃ¥Ô íDIíàc Ñü  ´ÂmÂ…ãGäbmJ(ד•ØÎ$å¤oV¤ÛãÎ×.—wI®W'ÓÌU K×-Èå´§–L¢T±`Éaφñ&¡Kžl;µäþ¼§úž=¹õÙDfñ0¡} ¡S¸»R¶2r`têtöæTù')T¹÷ÝÆRÏî^6Û· …‚È…èï±È\týZ‡æZræ/–4xð1Œ0R—iÆÙHåìòãOÿééOŸ¸örÜŠS°ïº®MÀ÷F¾­<¾¯ž^´àÉw´)îñ½- ¾åJ|î\c¹¸i±4U¼2ÃTq„<¦]¸Â¡S €ß¹ Á5þ©E—hŸ@,=—;ó3ž›o^ˆYº„’\ˆ“|ÂtBz¼ïÉ㻿~nü{räÈ`±lö¶Å_=½dQßòþ(÷ÑÄò¬»}ñ‡žÄ~ü÷í^Î'¥ÚÁsÝ,²˜?vfÑÀë,÷@æ~…#tÇøÉ¶»!«#žýÓ(üº_ÄŠ *bH`µÜ¶F™_mt­üFšñÎΆðl¹¡Ø~èí =^óPPëã,úu¢üòž÷ <õµ‡¨…ó íšWF âÌð2ØhÈèÒ–~ˆ²4¿ Aw _õ§jhvÿý ”ݹ™ñ¬>yÿW •êkñÍÕ%g^³|1ê6ÐÕ»GAðsg¾ù7§–<~}ó©¿:ó×§¿ûx_u¶¢$Ü)‰:…gß‹õH¬X翹âÉ…µš+„”¢¹¢én»îÖol®`SÍO/Äæ 4ñ@9Ì¢ÜdsÅG.+Ô4öÓ6²´‘Ò6ryóÛˆµ ÖFÎ{ ©…=…5‰­fÁž‚‹Ã0/笙0›ØSH»1°§PHS{ Oµ§üó"Ú"‡h‹ì-ò= H‹\2R+Þ"Óf2 B™ >T ˜²<Éàó‘…”Ûƒ”Ûë·Òþ™·oJç6íÜ Õ¬”ÍMZùØ(s“Nªóæ¦IDDU07=»Pinš$æ¦‘Ú =#*‹'íÕæ&%-Ð"swmTÜ@Eæ&¾ jÍ Õ‡f}h™BjôGŠPóù‘"Ètþ¹?Ö&µ¸× ~ÁÌ‘ªô`•~É™iÐl”eû(±}fÁfr‹ú–êP(˜GËе RôYn^ùp?žfýÈ’3ß’‚®<öó»8]~Åþˆûiû„i)´`BúǬ{¶ "_‹@.§ K ï‘K°ö"Ñq6Q—¡Ô Ajh!ùżBÁ‘ÒÁ ßˆÞùtäÆñ+ÝÔŽ}#‘c'3pìÓ9öªžc˯HåØõW(8ö8Çn“àÞØ51ƒ ï¿">¾vŽä–ÅpøËR†ÜN´ª(+|6뀊˜¶X éd³}ö¹êòÅçüå#;„|-ÚuÎ>xôHç‚+?öURådò&ÉÜ’èc€¼%g>NŒ_‚A#÷‹Iø¾.“i‹ÅÄID$’ùZ. úúsâ”&Y_WNi â#[£Ÿè{2Úüâ2Þ‹×fÎÍ‚@}8*—æºï„87!ÎËÇé¯çì!ôÙnÀZq"}€¼* ˆƒµ îºÐ¹¾Çá¯áÊä|rzu’¼tÃ-ì º‹dó¸ý^«©+ézØ|r¼›ïAêã÷™ÂP%ë-™ù¬ÿÔýi[a>Ãe›*$é{@-7jæ9¤ùÔë2ó9áâKÔì•wQjcàÖ+àø<á·-_ˆyp9¡oyûy|wõær+ðɾ8÷/çø¸ERªEBпXò/‘ü—±úü›¹ÜÕßë¹xH÷›%ÿJÉ¿JòÛ’¿ ùo•ü%ÿ;%ÿÉÿÉ—ä”üû%ÿAÉ?%ùïÿÿ-àÅç—a~•â”ü'$ÿÇÁÿ½>—_ŽÓÿ¬ÿYÉÿ[’ÿ+’^®2”ïEÊ¡'Àrøq¯¹£,‡^+Ìá‡ê@ÜÔøÐä}Ðÿr@Uào ™àïý9øb¾Å™ƒcæÐ‚?±—cWAØiøa€HÙíA9üFYN~i!‡ïgËá{ØroÅX°·… 3—ˆ¶… cl€á@P‚î¹Ü1?Kâ"ñ— A½@°/ÿ_ÿòÅØß±ûLjÿt¯Îå¾Nü/ÿê%ØÿÎ%Øÿc@X,|].÷—az#þ§ˆÿªË±ÿM—cÿ:è}iñÿ5ñÿ+û> /µáð-m8|wÿiþ‹$üWIøŸ‘ðoÿ«Ä¿d)öw.Åþ€øÿb)Nÿñÿ€Ä_žÇþOåqüg‰ÿqÏÂp W]áo½ÃmºÇWˆ{ïî‹îÜŸøEËpø²eØ¿‘¸»–átÿ…Äj¡ƒÄÿñ¿Jüï} †Û÷옸_$îc$þ%âo{-v­×b<Äù•¸]½áJì¿öJÜ®®¿·«5Wâvuו¸þüJÜ^¾@üß"þW‰õrìߺã½k9Æ»o9Æ{`9Æ;³ãýùå8Ýï.Çýá{$]ÛU8Ýk¯Âé^wNwýU8ݶ«pº]…óûYâÿcâÿ'âËÕØ¿åjŒwÏÕïàÕïþ«1ÞêÕïÏ]ÓýIwšÀÿ+ô¿è€w Œ ¯Ãøþåu8þß_‡ñ½ú:Œ/¿ãóV`¸ÛW`¸M+0ÜÖnû{ˆÀ}’Àýw÷y÷¯$þ?V`ù¼§ÛðzþïÇé¶¿§ÛûzœîtߘË}†Àÿÿmÿÿø¯ø—^ûùMoÀpkˆ»‰¸;ˆ{qgˆûãÄ}è ï'Þ€ñ?„ÛÝ-?„ã'ˆÿ0ñ?FüOÿ?ün¿ÿFü›¯ÁîNâŽ÷q‚¸?CÜ_!îo^ƒéøíkH{~#Æ{ûq~ï|#‘÷$üS$ü³$üïHøwIø9¾òM8|õ›ˆ|'þÝÄÿ!â?Füß"î·‰ûâ¶½»×w5qo#îÆ7cúßùfLÿ¾Óñ ÿÏoÆù¼Bü›¯%|"î(qw–¸?y-ÆûÉk1Þ+Þ‚ñ®x )qï| –K?óœÏ¯¸ÿMâŸ%î߸·^‡áüë0\Ïu8~Š„øó:Ü¿FüO]‡éù“ë0='¯ÃíN6^½õ­b¸UoÅpÅ·b¸ÿòVŒï“îSîçܯ¸¿+n×K, ¿ÂÂðo²0ü[- ßeaøÝé7î—ܯ¸¯¸³ÐuÐ~=–£×ãðOwàÍ/]Óÿúõ¸ß>Eü߸ã{æzŒïeþ*ñ_µû߸ûCâ¿…øwÿ^â!þIâÿ$ñÿ,ñžøøÿŠøÿ–øÿø¿Oüm7`ÿòHþÄ ñ þ â˜ø!þ/ÿãÄÿ âÿ¿Ä†øÿ…ø_%þÅ7bÿ»oÄþ÷ÿïÿïÿóÄÿ"ñçoÂþ«oÂþ·ÿÛ‰ÿ!â˜øÿº ­}„/x_ö6ì_Aü>ñßLüï&þ÷ÿa⿟øg‰ÿ§‰ÿûÄ¿èíØ?ðvì?@üljÿ'‰ÿóÄÿkÄÿˆÿωÿïˆÿ,ñçÚ‰âþ€¸—­&üZMð÷9âþ=‰ÿÅN"§;‰\#þ?!þ¿'þ"þE]ØEößFü›ˆÿ}Ä¿ŸøœøŠø™ø¿DüOÿÓÄ–øÿøsÝ„ŸÝØÿ:â3ñÄßCüSÄÿâˆø&þ/ÿãÄÿ×Äÿÿˆÿ?ˆáìË"ïˆß%þµÄßGü[‰ÿnâ!þCÄÿ#Äœø’øØØ¿ÔÆþvâ·‰ñÿ—‰ÿqâÿñÿ_âïp°ßq°¿] kCÈÆŸ"ñÿÄ™ø'þÖwq|£ƒÕî¡9Î#ñþWTð\ùþW§à¶îmÆwCe|htf¸lÝ 8Ò=rK> ™®ÃëᥠÑÊ>!l%ÜË10} {d%±ÅÑSšÃ Å ¡ÓÕ G håêÀ®òèäT;»°™Þ‘ CÙ-ɇ&*ÃÖ0†79oÛ¹µ=ºè›Â;è–hêsŸ§¸¨™»ŽÙ™ÓŠ^oRH½4JV“‰^z-xÃóšUÙ¿¼µÊ)Ýcí‚k6ûÊÖôÄXÙªN ŽO“2x‰fƾ&OîçÆøÚ…ÛÄIªSúK¹w኉ ;àªÊ£‡$öÎÁ*z ‚À@tøÍøÅ z»s°jÝl±««ð% ‹½E18œñ°ÓC "‡]âˆ1Î-Ã.(äô½ƒ“Œˆ§òˆÇãRy|*š>žÊåS¹,¨öCp責“€*Õšª¡û-É@ñÀfBÁÑ“°ð±A©ñL¶)Ôå`)ä(¤ƒ¥£B–BŽ,…ÐCƒÎ*ÐY`´­èµ„H#¶¨Npñ::d· …1¿Añc ^ k â¡R3 ¤{8† €{@j  t£@—råi‡¨¬[PÇ€Ò à >èq©‡Š:Âß |7”fèõ[r3 PkAãT;D#y1 7ä ÚKQOˆ´ÔQ”Ý’ë•kùdìµ0¾_rñki×£Ê0ÚÕ6dzÆ*ÚÿhÿØÅ÷ª]|³§ýV.«ØQi¤¤µ +LŒt£ÈC=‡&FÛ©’ÃÞëŽ^"vº†ÝŽ›I² I#*©8Rï7Gµ~3‘ñÑ@ú˜&ÿöꬨ³Jd‘t‚INf!•Ž - àÈi° Lä{ÖÄTudo7g{©÷[å÷Ï0eORÆUC_>Z³x¤à‰áX» ýër»Wê`½Dš½ˆ >ªä)qn ¾øçúÜø{y‘œ4º"° X·ÀHHϬGiÝXZ'¦ç7kòÀ‰Ö¤™”®¢Éôçž}ó.ebT/s‘|^JÖí;vmÚ¾cûV â4X´’|Ū±P5ÕõaQØÀæwtû£~G»ä>xjZ/ÃSë·r“,FQƒe$aY8Ž‚b–³|”Y¾h«;ð/*ÔÚ9Ÿý½¾Çêrbª§, äÉH]ꦉšiª^Ö3Ù¨g’QëäBÒ©hZ½¸¡´Gqñ Š£Ò.ÒpÙe"•âb‡W+ÈtP!}VZå‰w]‚Y˜ãË™»2ˆj掊û/£–$[ÇgO„!€šÒ-‚ †¡®öY°*ï¨ûT¤îS‘ºO%‹µFPpÔ½\"õÜõ®‰‰ê@M£pluDC÷àè( p¨<‰D}’æÏÌÊwɸ‰}P‚ä'¦iß?¨ìûPjä'•iðžÞUÁÁ†ð¸À†Ì$63š£’Š°nXO†_†þ Kk×±¸H„ uª«Ý}Ã÷!µŠ zÉ,›ÍP6Ñð‡õmi@„-O5jx« µ%ß•œjAûrQû"2qéRÒ¨\~X>Rë.m..ª~îòàïÒ‚{*p†½‹U‡XkbãÓT™®¦¨)]ßˬI'ê¸í¯Æ]†,òE·öÈ9 Ô.—Ú‰§¾=9µOír©{µ©À…cÓFcP6ím–Ÿ?aU6´^©Vä •’WMM2_øIXC©ñdj|ˆ£Ñ È#à k‡"‚Ÿ %£f([lD}¸¤‚Á¯g k¿ @"f mXj ±KÂá.Ãá2«üx's˜ûo²g—Ç’2Ñ)Y Ñ¢·…Ô@þ µ´e]JTu+c‘‘Ü–ÅÏ©’ÖÉ4‹d¦KX ëWÊÅ+^—‚ ¤2Þ%EbX²,O¥¬MŦåSo[‹k T&Sê=J=Êv)‹ç–ôÅÙ·¬ÏÏe…¥}ž }Y@]`¡ËE¸ž0ò.å?ZáQ ;É* ô&£r@$PkåG&myÑ“ÂNºM.)ÚÓ¨bj«혉Õé¤bM¦™Šò—йtiíõ)—’Û4/5©*Ÿ¢t±þŒ ׯY2‚ñ2Zµˆ$NíØ.Wå"•Ú8‚÷JÅnÝSŽüèÃF‹jCAú&ú¥Yö …ôÌDxOÄ¿š¥\MSZ˜Óª%7~^ÁâÉÉ[·oÛŽ·Æñ]84Ô….~$å_kµuvô€¿û:zlÝ¡‰  ¦E:ÒyÚ‘.n‚"mx ZõØ«EìðÖJK=2±Œ…a°F³ž¨*èrçŽ.O¢ËÑÅ÷T£6¤ ÄEYûgƇÐVt¨OãÖå mÉ6—Jvd 6”ÃØÄøÄÐhe¼2¤[ŒÁ"#j’s`~9’Bµ4ï– O˜Ê´¯idÌÒ¨³ìN:‘qKÕX˜¤O'].©OªaÉ^ßDo©ª~ôšìrØ”À'%®`ËH˜”€_ œ<:ABmAœÜxÇðxOW ˆqO×pª†I(+ÒwÑ-¿èÚø †à¤)5?¡¾(+A$V=(ÂÄe ”À´.µ‹âë }Û6XÛ7J£(7±Ì‹rÆK:4ÙíH§ã$^4¢Á¨:¨àÞåT9±7'S¡Í6 gk”µJ‚'ØÐ¬KzîÜÑ4ŒÚU‚q‚ˆJÄÏ Œ«ù˜B@¿Egß*ãÂQ¸ø1¢Ê89ú¦Ð“(̤|:NöÃá0þ Èf?h#ì,â.=„Ïû°“@‡:ÑÑ#|¨ŽËüÁÇ›bÇšÈa&rˆ‰^%¢‡÷¢Ëã‡Æ«Sí tˆkÁt!s°[\žœ-¢3s¤/[PKÃ- µ1ÂIx†¦ ŠY‡¼XI…Çg×Å^ræeH¡$Þ¢“ús„d Ʀv„ '´N'.ºïCBeþ@yj"¾uÙ"“†Ð $Å-Ÿ ­e¨¢ÊÙ À0aŸ†¢JÅ}Èõ°•S®¨Ž5L‹± ¶›*óe,êYdIu+öô)ÿ&Ì÷nŒù^s˜ßP~zæü¼¡²ßÚÐwûîwôô80Ò>F¬Ø?ûø—E¸b„Ç" Ënãe?©.|«btòHHiSÖmnªS&ÃŒh•E½úÃVÛP :oe±]Ú#W<®hvBš€„f§™hŸâk5³›‡h@×°£;Ù‹U3D–M|e;¬:yË ª‡ •k™.O¦›J&ÌÞˆLWA¦[;™O¦gB&¢ •LOA¦gBfžsX÷ŽTFËí ö?¾_ë9“¶rËú]=ÖMÓw¯ì„IÀÛÜ÷Œ"Yä&SÅ*XVÂTÃûFÛW‚þÝS!Y Zv‡°m÷–-$ÒIФ6½Óƒp;rÒ•»\ãÆc<Ã4k”;" 1ñž€òÛ£{χé™[¨,SáÔÉYO;±Òkï%?úå̠ >jBÍ]@4y™ÄþI&u9äAܽxÆIAŸ€  Ly;w¡Y-õ á4’ù!q˜D¬¾Ö¹Tj›ûYÃäŽÖ"ƒ²ç0QNñË‚sƒ-³²±ÿrدXƒhîíU‹ËÁ¬F8–žÑëêSº(¥‹ë!žÒÓ§ôPJ¥ôb)!½“ ÓÆIžTМÚÅ©]Ú|t'¤öpj§öHjÖÿHA§cmÒ ˆÅ€¨XMjÇ <¹/ßKì©tV8è8Ño—ûíu²UèrÀ.ì`+íqÐí)P§^ÂA§ÃìZ™ :ÝÞ5px‚ÎR!вÑ  t뢸\€ ð\98‘Ë98‘ër0‘Ë%rq"%rq"Ïå`"Ïdˆé„¢N„% ,(¡`ˆ(`‘?ÊÈ’ØÃ1ýKóT'cÖ Lo„ðV!LˆhìÁûcoÀÏKX};v Œ þƒêóßkÑ£(ûÃä]!8¥“Âéý•ò0¾Œ‚‡ :‡|z²<”ŒBT€ZmŽÿ"»Agº@ÎLÃuÆê ì=øÙ±}÷Yë»wŽT ]¬ïÞÐmm­)vZõl^ŽE ~lb[?T´z§î›®v[ëݰӚìv\¿»Nc0cïÓð>¹ƒx€HËz¾om«80ZyûtdT&¯¤qy O'$›ÇAæ» –i«Ý)•ÜŽN‚´Ôíu;2e…¸Ø:X_ÝJ÷ Õ|åÕÂí@U!MUHSEiâ¶ææÝET‰î!ªÀ•ÛΙÉáÁjy˜71îƒÉN0.ì~'Lv‚Ad'¬õ·wövnèìëܸN)Ä×1e‘ãß:ëþᦢ2«JV¨ÄªºdU ¬ª©”ps ÚN'×tbÝÁŸ|r£d Ö¥°M¹³à%â G‚ÈGc òÑ@"d2 2)CS,”è6ÄÏ6×uv‘ëfØj) ãì Agí,—;køŽ„E#,“o·ˆOÔTǶ±¢Ê&ˆ¤Åõ ö3d †u \Ô‚¿ºz\É–l À•ÉôÀÑÓq(=„—#Ç2¡‡¸ ÇÕÒã%³‡0D¬È¬µ§©>—«>«‹«Àq&_â´Y UWK—iq-³’h‘Z¹Pm ¡ÅUÐâ¥ÒB8ÁõýÐêJ¥Õ šºÜU¬óG¿AÃ&t `‹ VGbàHg%#·¾Tò‰ †tÓ($÷÷M•ï‰9Q¹@·°mÎxy\ £•‘%+¹Y*¼GŒ0§J•>ÚÍlz–x9Ú:é €£†ðcÔ±É0éVõŒ9¼âBÎhðÊ 9½Â+(1}Ù@/a ‰…/0ˆ´Yb±ŠA;â$ã# ÉõDáÊ2?Z¡ê!ú’-¼¶‚:UàÒ ©Ùc]D†žóŠ.&ðëiæHÈZÌä!õ”d1!¼’²‚ ÝNw–뺄â ÝÄ„®2¡§NHƲ‘ŠƸFÕ/ÓˆÄZŽT&¡®A„ƒcˆV«ä~ l&QÌõbI,A¹2i8JT‡ÊMBã¡Ô.PNNÌqº†Ä®:±g’جÆÊÅ¡v:•ãSŒI¼læLTÖþ©‰1kó.l½²º %lhp¿#ÍLbhÂf߸¬—Åôí²îUˆè ’èµúdñ¼Qáy¼…¶çöž^ÞfX¶¾óö2¤¯ïìå·[(ôÆ ëIÏž>Þ³{àTÜö‹\ FvgrC»Cµj<”CO—z\.b#ó½ß7Usû:7Dômà©sÅ3|£é&Q¥QÆ›˜Óé2¶ÚSíˆd›'Ù# íWQKU¥HéTëyÂ%¢µÚµ~×+x7R/݈’7ëHfm€#>äÍ5¬oþyÕˆðÙ°ºoõÆŽÎõ«oïà @9Zü%1qš U ŽÓ,Ü8Ó@š7vöE4RhÎØO3%´h Ðmå©]R“@6 õDSq‚V2žÙ¬’Ìõ‹cˆ¼”ÚÔ9›+!ôx lꎪE;6wl WIiÑ,VmxÂôΕ(v¾I×/…kàG3Æn·@·ËÝ~Y/ÑÑ=…õSÌ‘è 0©=t9&dŠ7Ô8ä¹ÂˆçÆš¢<0’s"qÜfÊf±÷…»7&É<‹ÿ¥%[¼µ¦Æñš‘ç› ³ÆP§pH;œ‚ŠR¥:!]«ㆎ¸R»‘&ï› N1U刴yÒX¢¦Þ°fí˜ZRàB[Žº ¡:iæ‘:~§+¨AnÚ@én6?-Ò1²›6Ð)F Ãʯqúq;/‹µd'Žsi®gœK 1uœã›7_Ö‘Yï8—0^ÀY8ÇëˆîÒt•Ó(IF» Rçg@›™PF;YÆ'x³ßÄ8Þ8“¼li,”]õ°­Óè]~ÛÐQÛD,»Ê¡Q”Ê…‚|n˜àÓê®âô ·˜Nª-13’'s@*¢NÍÕRºjd3½Í«ySÔto¹ÊõBÏläcš1¤vF¾è€¼çp§©ëž¼±Øseøs…Î^ûts©ª·Ïå8ìÛéƒ\_󖦿•”×Âð. C…RÕÍšþ´TÑJëžÔ+'„îÐ`ÂÌˬ.Ìj7èyì¥ð8c×k$‹%»‰@v1…Å]¼¬µô²v.X,ÙOð‰¾—¾—¾…gwÍî…¿g·¶|³m»;—[÷ÀOBgÆ9ú"}9)—SK ¾¿:ó×§¿ûx_äõò¹ÜÙGžè{Ÿ½êDßKçrgz,‚eží{|vï«O} ”ï=ïÞù‘?º8—{¢ïyýDßiè=rzá,9³ 9ù˜Í‘“0ä‡Qȳ8äYÒ½çf® ¹™+@pnfÉ™×,‚ùœ>~ì3ß _s÷]ö¼ ¥ßZHuÎî>yü ÀGhºÈ»¥ø…?EÓEÞ…W>px!dûéãŸx…>LàÙ¾“Ç}…œ†Ã³Ç`ì"õÊâ+ð(’‡ðCø!„PðQþQþQ„ä!„ä£É?-€H@1DÀRà)’Pø4ü„äA„äŠäóÉó¬iœØý‚§Oñ*ôž¿þúuüú ð  ÒDÊ.?qìÉXàŠÇ>'ÊiOí} >)>zªï±S}~󩈿o„,Àp±üuX?'~aýbëçtXe²4XMÂ*±e±Xˆs37r,#‰¸ÀoþS„ö-$®Íœ>‡äÝé@Þýî$qÈIò?Pȳ8äYrt~WþjßIðÿ³Çûð’3åpÌh‹S×:Ήá_9uí2ÍObÐvô$mW¯“}–v §ËæÔÞÏ¡°N!ìÖ…=|ªïs¸ðÒ}ªï‘xè5§ú–B¯|àçà |_R]Á0F)oøˆGbâàŽ úYNâÜѦ~@;Ú»@;ÚÚ Ž6r[B_¿@GÛ;è„bSk¦¸›ò©>=‰Ä5úû‰*øû‘¿1>Þ÷¹ã»¿€;°ø#Çw†‚/OøøîO1C(Ń ƒž,?úÍ¿yµä̉Ë`¥€¸/ÆãÞâbUtDQ)•X5,<»{¶¯í‰Ü2ª*I4awnæQØ›¹Vtçf,pæ?o€àKÎ|} Ä¿L-ùj„…Ü ÿê{ðÙÇž;C‹Ë7Û.èÔh.xî)è•lY‚H¸íxßÓ³}OcJŠ"%Ok(yT¬ é?.ÆB‰ ¹€ lÿc1$ñi@â×gû¾ŽIœ],øu ‰_[‡ô6‘į×Gâ¿.2À¦æ£Ûg¶ÅY°¥´±¥Dãï q¿&'@D#6v5\·Ö2‚6ªŽ$jìe¡‘ç„ÿ¨—¹z®Åž­Ë¡göô-;µø'o‚Vœ\ ôœIÔìO][àñ\ËãYÆ'Zž •Œg±„çFâ¯CBº±ÕïëQeo¥•ýÚó®²ÿñ:ÓÊ^™›¹r“Ó¥Vf¬òz‘6üuðkäûð×Óà×ïþüÔé3oÿ8E}ÏC?ÎMGj,Àz°b„˜`œÄao] µÓº€ƒ9™Y6Q¬ü“Êö¥É *Ï}0ã«ñ‘çÝH}~ˆSsÅ!Bô<ÎÂZ?Þ÷ œ¿ÂÑè±ÙÝï{èøîcõç¦þüø%§¿ò¿FÚë×1›É8ñÔ-æ£T5A–,å#do_Ð`!²ü`<—¯æHŸ¿â<èóµhJþ¦\÷³ö4F§3©׫¨ËÆÁ®åÀ–ëÁ¾“#ŠhLIõÔúéµ`v¨T[ÿ­¼¶œN·]xöu1’ήR#\xöªX)UMo„}/Iàu(Þ x5Ê´¸dšÐˆÎ¹n/0áöGJá¶mQ\¸­5Ñ:M…Ûß-l pûäÂfi°bN&8cVN ,§oXPwzþÄ1ˆ.–Ï+ç®|€)ÜKÏy,ê`•×_ 7K~ûÕ4ýlâò¸¸z×å5«N Eì{—ÁN‚ží{çðíË„ž­/‡&ØÔUíÖË„žf‚-M°?ä§¶ðŒM Çó±ç¾ žûÀÛ¹ÙŽèÊ>ºD`ÀiƒNvÒ “=›¥“‰EŒè_ÄÀ¢Ñ)2Ž·_¾ jjD±c33=ò ìä¿ŽÚø3|'†ïäÏ$N˜žá;õ3|g4MgiÓ©&Zω– VyF½r®ºIм–\-EZ|äkQ €>;3¶±3Öà"V®_D¬ËU«‹ÑBF㇋ÿ¤àb$¢žÆ5ù4¬Éß¹YÅøš|š¯É§ãâúi½˜}š¯Ù§ùz:.®ðXÉxKx$qý4×bë}Ïð «kf¿ær3ƒ¸l¾þËËê4_ÏêÔlYM¨Ù8ýN‘€ìÆéÜesgà²ù™%Q9¿®.§´6[“I¯ÌÕ2KÁëwµLIð*ßÉò#qIþã9´t²üp|P~‚J~M*Äö¯SÉ£.q™¿‘ÕÞù`¢¼|­áÚ³Ô±lŸ)Ëèp6]+NKkhwd‘Ý„G"hÆ–Õ™4+º@ñè•\æv”)†-[ÓÔŒ FÏ:ÚK¬ðh ËÓ1Ìàq‚ûàeâw?¡¼†Ÿ=^‹5iºœ‡¿–‡·”ð+’ñ‹V êt¢úN6QýÜ÷èâÂ[¾GµŒo¡±R4õ eܯ ãà[—tõà¤,žXLsx†Ð¿±8¡:ÍrˆÚÆŸæm3ŠÍ“Ä{Ã-.Ô^œÌS‹Ú- _–¸C¶-fc\xƒd&¦,ÄÃ¦Ï rµMŸ,TïåКÚíæÄ­¥ ÏÞ3;sÚx¹’ÎHNkYê ’ gO¤M.FÌ`¥LÓØ±jÏó üd€œÚ²€0O?A¹òê>¢HŠ-#u¹¡á$ŸÈÁÉž·±ÕÚgþƒ Ùßú¸UTnŽ6§eúÚåt 9s JwÔÝñ4ºñ]dʼnc›ÎñŽcýçà–©]àïGþ}ÿñ¾ïþè,›ýÄð/.Ì»…Ü…Bð¶ªe'úŒoá^†·p/9ÓŽeÄÚp/-7ø?{ªïÙSK縊ÿGš2—lÁ“G[>Û¿lö¶¶ãÇúAÑŽb\Ü@¿a;,1ŸÁìWäÌSKX@{.úèÆºwElU`>7ÓFÓ{¬z“&{9Ú–~æ)´¹øàT?íçÎIC…S{ŸŽsúÊ&å=õiÈ®YÄ´YÄ@ºKîÙã»OÆ+âWÑüæéˆW>ð©z릺7ãûü ŽÌö= ­­}Oßý fèßþê5æ„ý(vDýÃØÅyéVÈú…ˆõm1Ö·¥²þI£¦–õÕQíáY[2Ï:Å)Öú÷>©j‚©˜ó(ÚoŒI‚²/’s#Oô½x†yn ¾! y‡¼C†QÈó8äy² „|«ïÅ“' Æoõ½pòÌî¤þä‰6ôóÔ§GPê§@v´œMR ;(P1º†¦Ü €ÄUß“Ñpþ£¨<{²üd¼©/<{@Á#±Úðu¿ð¬ƒ$øˆ‚ƒ´Úž<¾û뀕Pi9s#š%ªSPõX*UªlÒ©RvÀÇŽï~œRõ±¡êQa—ì³ÄN&“´‘4rNÛv”$uò$)Û÷£Çw™„Nœùåÿ„cõ à×O¢_/‚_3ÿ ›ÙK¹+í…¿@ÿ鳎>f÷#ç8G³Å`õ;/ü ÊR¤7ÝmD §ž/ü@Z}€ ˜ÑÁ,ÅÙëPÄ5±ˆ6–Â#>ÇRhJ+j×Ⱥ†Å©è4ÔG^|i“@¨,;Þ÷ÒñÝ/Ïö-ŸÝ½âxß Çw¿2™Ý}íñ¾ÓÇw?Ø5»ûF,ÑfûÚgwwbù2ÛgÏîöq£í+Îî¾7•Ù¾ÛfwoÀu4Û·iv÷–ã}_<¾û7gû^‚ éÇ‘¾1Û÷Âìî»… £Óðp ªûãŸE!¨ÆM¢* yÎ=ŽF!B!O™FßýÇw?@7N m§ïÑÙÝ_&zNßgwÿ&Õp &…k÷ql¬’Û Ü…¥º:7s ·uC´˜e«Ž×&¤€ºX nË»á6¿Cªõk°ò&ìÉ·°Tä÷IƒaQÜ&'¹&–ää/Ã0Ø™O/…ÀU ^ÈìÓË)¶h_Ö±å ¸$m±$'¹-‘€‚†.'§à@.™¯ü ÎW~`Î|JÒ ñ!¨vUK[AÃù–&càOúܦЯSW™¾×ZØDŒÛýñ2žÅ¾<FêÇòòÉI"€ˆ=wÄ£±ýEò" ù<þã`ÈÁó„}/]ù«}/‚ÿ_8öØ}KÎXç˾Õ÷9Ã#Ñ 8†u!Žç ` ì¥h©3Ò4*}§-J‹~TÍçWh¾ùO¼äh€|LÍé%g¾ˆ¢Óüw¨®ÓaÿćŒ¡5ô»@%- öÞv,4–)Ù!YcXAyÕ?ÐâÐ Þ".*ÅÏÒRР7IeŠh<„èçྨ†Ûʲ°Qe9{=P޶/<35øsúùü máù>ãx.éÜžÍsÛLŸ¥œÛiú4•:ÜfÓ'‘ªôtœy…c4\{ M¶^F“­—D!ƒ—"&ÂðpÔ­h+–­XhÑ ÿÇs?IaïBiŒ‡ÐѪ§‰&­*5°•4ëJ#—:;ƒR단`‚\êû¡iLq®<ö92Û^ásßmï9ñ£¤ó ý% =ýÑg# ¿Ln¿\I·ÆÈTP­¡øO‹?Qü¨žâ/ª(þb&ŠÓù¬¡øZ=Å¥RühœâG(VЦe»LñAtÀó ¯<ö‹¨ÝbE6Ö:O'6–…gGµŒš^³6qkœÞßY(Ò‹Uñ$zM%;½Šq«Q‹Èg¦WÑP½ÚÁXׂ%ÊÌÚà (½ýx¶®Îéd\xÐË:›"dÎ&°_èÑÃ>ól„ꑺP,?«âí6<»UhÆÝ—±ðl‚ïÀñýåa<¾?6Gã{LÑÇJ¦t i–ÒQg….ù‘$]ráÙ²¤H.<»3¡ábZäM ZäR¢Ež½œª`HÐö/"柧¹³)jæµ2?ɪՀ_ ‘)7¤H›ä+!mò(¶ðìZq؈ҮOOP3²蛑š1 ÏnÅàÆX/ÜØ# ¿;½Š™ý£Ü€\@G}«} ÛwDúJĶž(PòäLÓêkG¤r™~±A™*‡ë/çn=ªMˆˆ%½òÿ‡7اæoП¶,4îO×£i¶Náçj–1ÐZ5éû­IãÇZ.+hUVï\¤ê«³2€Veu:—ÄÀ„YEÚz2Æû+øé&d/dâkÉ™ÏÔH.Åp ¦²ªéÏ.)ýúy²Ž¥ýÙ×@] œ½¦¨±×ä_S?m`þ5u^< ù+Puð®ºä’3Ö« Gcâd]xjFZóçZó# ­ùa…6üBk~P¡]ßí2yù;Kø]¦’©’YgžÎ‘‹¨ðJø%êAÔ2Ôý* f0y’ó{‚›‰qtÂÃ.í8󨵴d'5’ãÇ" U@›2bÞz æ¬6ڨȂ[oÏt\K'º ²R›bšÕÆà Z³Ý`N®(…÷7ùð›)¥Ë¾ñ¹ÙÝ_P›^Jj1ßÈ™%V6¤Ÿ2L¬l_wèÛ—ÂfŸZË\ÿœ©¼‰rå¼jVöFJ^Byè$  ´’¿ÁùçNö=¢j/ï×à•ý7‰SñHx†ûLWÍDÞO6¶Îm#"¼†ù£YˆŒÑò{ªúÓ×êïI´ÀSŒg^ý!"¹Rýy&¹7’Ü?k ¹ñ¹Œ±-—´í6•­Oo V¶ß«—ff\×"w˜ŸãÝçVuže˜çϾáÅð>“3/¿žRúµ$JQOé’3ÇSDib7¨0ðf3og…9®/̳ZžÇZ‚:guc”I‚g:Ï||%éï ¹¤ìbŸ7L¬ìyÚ–$—7w[‚@K«$ã>ó:ZÞŸÍ"㪺¾)jz •œJþ¡³æ¯^éÌ êi H*k*o­2.þ“_*±‚Æ«JÛ(›*9¤®)©*ÊÑÝáè¿þ˜Èæ8É×0’?•ÅÞ2 Ÿ} *ÌãÆ*I2Ðûöƒg§Ð´cKãüÈÕ# ’VÞÛŽT_Ürõ5ÈÝ*ðæÈÙ5Ó–ÃÇp„¬3KÙeýLìÄC*V]"'V²ÞøÀŸm;gs|a×û<yîK#èï.ô·ý½ý-¢¿ÃèïÝèïôwú룿6ú{ú{ú»ý½ ýíD!´H´$7Ê%i—Kž^zêk¹¤¯«÷Ú³¾éVô0´cUÆÙë Ýù u…еÖ8|úØ+à×1°¿q=°qûîmò~œÛòÛ°{úV!ßµø!PkhpÜŸ¨ZÓƒÕÊôþû¬êHÙƒOMŒWàKÔÓÝÒ£œ©é§'ËC•Áуuo¥:p:¶mUªå©A%^ ¿‚.§JyØ =¡$Šìf¨DþçÿÛncõñŽÞÞµVû;¶íî°¼n×rmÛµK¶gµï([›«Ö–ÊøÌa«ØmÃø®BG.×=}ßXupp«SØ¡¿¦Ê£ÝÕòáj®{x°:˜ëÞ7= '°ghbl¬<žô¨ø½5—C:ÊeÄßÈÜ>Å/&î›ÁÿK¹t_¾ü¹&‡ ‚ ü}ñ/"pp¸x|« |œMð-$þG&9ø,â ý™Êå<ÎOã®âò„ߟ¸õ 8>Oø}°Ô^ˆyp9¡oyûy|Ï^OþøðŹ9ÇÇ-’R-r€þÅ’‰ä¿ Ñ¿Óàÿ«¾«¸xH÷5’ÿFÉ¿Š¤ýíNœÞ•â ’ÿÉ¿Qò¿Sòïüï‘üwIþaÉäŸü”üÇ%?¼Få¿uår»Úpù>-Åÿ¢äÿ‚äÿøÿyÀ„{Š8ýW¥ø'ÁÿÿÆûï.Àñ&ÅSò?'ùÑ£ÆC9örsnpxxàСÜäLu 2ŽžmÎ *åÈ Cžéêpyj*·rª2^ÝŸ+®Tsc3£C‡rð¥õÜô½ƒ“0àÄ#€shb47U90RÅOÍçöWÆAVå¡ Â8³ñ¯Hç*㇀œÊ MŒŽçÆHàHضskNæØ ö(·±13•cÞçÖ¢.uÐ]Й~º@²Âh @³žMá²\îð"ìŸ%îOB÷5¹Ü'aüks¹_€î•¹Üס ¸d1ÆóÚž“¸îbœ®°§Û°§»º “|Œ¸¿@Ü/-Æùÿq¿Ý«s¹+–`¿EÜíKpø ñ"îgIøW¡ûº\î/¡»"‡.¤sà2œÏ ñÿ8ñ?Bü_"þÿCü'/Ãé_"îâ˱ûºËqù:ˆ{+qËÄý/ÄýHÜß_Šó;MàÏ÷Šâÿq’¸Ÿ#î÷ï_‡ûÕ÷ˆÿêØÿ¶˜¾Â LÏ&â¾—¸_Zéù&q_÷zœïu¯Çx Ä$î q¿DÜü0üë߀ýï!þ}Äÿ;oÀ|ü:ñ¿þ‡°|Û@ÜÁÂýøtÁÿ¿ñC˜®ÿKÜï÷Êkp9\ƒñü*qÿ¸x#©¿7bÿIâÿÄ¿êMؼ û?ö&L×Ïÿ׈ûMâ¾@Ükތ󿙸w·úfLϱ7c¸ÿIÂ%îSÄý+†¸7_‹Ý*q¿@ܧ¯ÅåÿGâæß‚]ÿ-„¯oÁüš&îCoÁ|û{Ãuî}ÄýEâ¾DÜ•oÅî.âÞÿVœî“oÅíä÷Hø·ˆÿEâæ-Þ ]Àóõη…é9Hü´p¹ÿÜÂíéŠë±ûÖëI9®Çp%áðï]ëãò•¤?¯Äp‡Vâzû"qÿ¸? poºÈ³p¾‰û1âþî þ;ĵnÄ®#N·•¸÷ÝHÒ÷׉ûOþ7awqï¸ §{?q?}†ÿ*qÿ’¸‹Þ†á»‰ûÃÄ}ßÛH»%îç߆áÿ?âþ9q_zngí„îv2îÿ'‰ÿŸÚ1ÿþøoêÀé7wŒ¸ŸïÀé~³Ã-[…Ó½~áã*ÂGâ~Œ¸?¿ Óñ[þqÿ÷$þ߉۶»×¯ÆpÞj ÷£ÄýMâžZÛÓ¿øË;q;º¶׻݉ÛYñïïÄðÿ':q»üÅNœþwHúoø¿#é_!þ  Ãm$î{ˆ;BÜûˆûãÄý5èð$tAß}]7pAß|G7n·ïîÆåø¯ÄýƒnÌ×§‰ÿÜuk€ t‡w¬!ù­Áø>°Çi N÷×kp:ÏÆîÓ}ÔÆéþÎÆé¾cãt¶ƒÓÝé: ÿ˜ƒá_p0Ü÷j»‹ëå»Ä‡Óoòpø»‰ÿ^ãùMâŽÄ¿Hü¯ñqü;|Ò|ÿaâ„Äßtþ…@F•ìßFÜĽŸ¸?CÜ_'î×  d×3Äý6qÏ…Ø]QÀpÄÝ@ܽº@}’øÿ‰ÿq¿EÜ— ˜mE쾸눻¥ˆËs ˆÛÛ ?NÜÏ÷ËÄýcÿÿ. Ï—°ÛAÜân+aøJ ÃÿH ÓõIâþ qƒ.‘MÜ"é^³·ïŸ&î¯÷O‰ûkq;Y¶ŽÈ!âÞ±§ÿ(q‡¸§×áü^!îò›±ÜŒãï&îƒÄý‰œ¸'‰»¼Ç¿¡ëÓo.Ô§Û¡ t¶°‡ÈC⾸S$œ@C÷À]Æ âÿ.q×ߊÇnÅþ)â~–¸ÿFâ_ößHÜ÷÷³·áø'ˆÿ/‰»t=[ã"þÿAÜß&îå·ãøÛnÇþíÄ­÷“ø—ˆÿqߨKÚS/Ž’øÿ/qg6`÷7ôÄÿÝ ˜ß߀ùØÖ‡ùø†>Ì·UĽ…¸;ˆ»Ÿ¸ îgú0¾?#.4L@wq'ˆûcÄýÄýâþ>q¿EÜ îˆûCïÀîÛˆ[ nÏ;0ý·¿Ó¿ý˜þ½$þq?IÜOøŸ#ð¿Bà¿LâŸ'îwˆû}ŸÛ„á_³‰ðg‰û^â$îä&œn†¤ûQ’n–Äÿ7âþ qÿš¸ß&éþ¤ûw’.·Ç_IÜ&îqË›qºƒ›qº{7ãt'ñ¿GÜ—ˆ{Ýcwq÷÷8q?AÜ?$îËÄ…&èŽ÷›Äý6q¿KÜW߉éY°ÓóÚ-˜žk·~BÜß"î—·`ø¯ø?!ð'I|y+v÷C[1üG¶bømÅð¿Fâ¿BÜo÷»Ä}•¤[°Ðµ §s¶‘öDÜ2q÷CÛH~$ÝÇHº_#ñ_!î·‰û]â¾JÒ-ØNòÛŽÓnÇñ‡‰ûú~Ò¾‰ÛÙÓ9ý8Ý-ý8Ý–~Üßî&n•¸÷SÄý"q'øNwÁ»°»œ¸o'nHܭĽ‹¸ÿû]X^œ&þïwÛ~xi/ÄýUâ¾Bâ½Ø;q'‰ûaâþ2q¿LÜ×îÂé »°¿Ÿ¸Ÿ%áMü¯÷‡wãðvcÿ§‰ûÏ$¼ãÝØÿÁwcÿ#þß%î÷oˆûq¿»¯#nù=8ýÿ7‰ÑØow-qÞã™øÿˆ¸¯÷ò÷’ò½Ã}€ø?NÜ¿#á×݉ý]ÄÝC܃Ä}€¸~'†ÍÒŽˆûÁ=8üâÿgâ︋ÄßEøBü¿KÜ?"îß÷%â.ÞKøBÜò^œþ8ñ?LÜ/÷w‰ûš÷a8÷}Øÿâÿ_Äÿ$qÿ–¸«püþìŸ!îO÷ Äý{ëÝØ_"îƒwãðß'þ—ˆ{ޏ]ƒØ½™¸Äð¿Aü ÷aÿÛöa@Ü-ÄÝCÜ âþqÿ˜¤ûâÏ awqo îÔ†û$ñ–¸wù0Ž¿uûwwq…Äÿñÿ qá.DgÇÿqÿ ¸ ÷c÷ûqüÿ'ˆûëÄý:q¯9€án?@äq?K¿AüÿI\¸ÒÚ!q§F0ܧˆÿ·ˆ{Ž„wT°#q«Ä=JÜoT0Ü÷ˆÿu qø%þ_$î3Äý;âþ'q·ÜƒáÿË=ØÿIâ~‘¸¯’øÂ(¡‡¸w÷ £8þ/‰ñ¡‡¸c8þgˆÿ·‰Û6ŽÃï$îä8?] ç?8ŽåüƒãXÎÿ»m‚¤›Àúï=Äýqº+Aþ“îÆI¢Ww#qñm¼§¼¿2Zn 6õgƒ/ômà:ðô;¡í£pøÛuüœãxvÚAè9`¾êÀœÕ²ç’(úÍLW§,+w°ZžNZú¬NWÆšAQS¿̾ü –µq{ÿ. |]–51Y­ŒU>€ÖòaTïÀ–Í·ïDQ½ÖheßÔàT¥< c¶lظeý;v˜ÑÊø=å)kÿèàÕwG_/Á7>8V¶&ö[3U ¶F½ýöÞ)Gï;ˆ¢ArC²ó4“kúÀÔÄÌdž¢í±nl‡‘ݨۑéà×tuü­À?pqš<05 œ»òðÇÀümMMT÷AX24Ã~Ž”ÓŸÕ2L‹OLUYðÔ„ yÆ&Æ£ð!ð3Ÿ¿²¸ÇêÚîY]cƒ£•ã]Ã3ûFËÌ;:119Ýã3ÿÁ™1èÏG‰ó”ëÏ–53ÓSk@XyZK tt,²³`ï·Ê‡ËC3ÕAEž°ÄZkî@Nuä— Y]”Y4¸$ø#îÈç‡F˃ãÖÚüÒ©1«k?ŒçóÝ œk1Ê! )±7çñ7ß}áRühÓšÃ<’å¿ø¡,ÿ]Û÷Zò¿ß •ñ¡Ñ™á²u3l Ý#·äYÈÊê}“eØ6FVæ×¬²¬†¦0^¶¬]Û·XN·]îò,kÕ G*ûÇAœÕ¿9Oaú7[^·ã;AÉ /(– %ÏõоŸ¿¡<>\ÙŸÏc¡нíDÄ îñövZijx:òÌ‘6¸ÇÞÛ³üY~:ð§ƒ~ºð§»w„™*Wg¦ÆÛ;ÖåHèX«úUû:­ÊxÕ'yÀß„iÿÄT{¥Ç^gUnV¯¶:@^˜WE•J9=P~ݹTö·[û÷M·Ãìº`vÖ-ˆß4O»ƒ§À‘J‹6Š¢tLò센åýS˜½–ëv²gpÕªMJcçA”v´@våfo ºÃBÅ‚9Ev÷:⇀àAx"€Õ=°h{î]5þ Ø#ðÏ$¬a«xV1øí ß.ú-Vò¤¢Ø‡Æj)öÔªÁfûà^ð£ņ” Û‡(?4Q&Ï80$ZfÂ>ì'm’ãÀu”÷(KžW’† ãºìè¼6í{@¼uä‰!ÕÏÞUûÀÄ Ó<@¡0r‚ ±o—j—ÊJ½U¡¬ŠJ&Ì;¥‡:¥@Ši±há·ÐDjᨠ#ÚG ÁЦTVQPµŠB"ýÐ(™d„ÍI€t)¤ !] éJ…t"H*ba&Õu¸à†È¤ݽÖÎw.Ô³¦ËUk´<~ :wÒã Ö +¶7˜ûpÏôû§ªíS€œUðµ qàoÿváow/’zP<[7«"L»¦gxJM~¸èG^-,­a™nÜ@¬!U"F¥#H—å@2°PV;êü] ÞÞÛ±JðŒÚ‘8€~‡Ä2Ÿµš¶öµ#ã]Í|V¬ìÑ 8µg¯0H±1ŠÄOñ±:¬éÕ=SXªáÆ/nZÁ.WgÀŸzhhGB–µBJÎ|)TA íåE§ 7Uúí“TlTao‚Ýl5VR†Pï‚?q,馫±Þ2„zü‰cI‡[TëÂXQòI4㥡¹+‘æ®Dš»ÒiF"Ò[ëð„›O¿BZ—¨ KGäAì¢ÂQɬ‚"ðU DZïþmç¨b$ ÄC…J½}=C‘>¡d8ˆGÜÞç6ŒrPTŒÕ0ÊEQ >ïzÞ˜œ*…hb$pV!³‰—UH¼¬FÂcbÓ›*Ï •’ áž)$Á@¥!ñÙAô"¦Ù¢ÀH†ÃLy*N— –ýcÃvµÓÝ fXQ°î™Brçá¨òp„<EËÃQäµ/$=q®*WÈÃUäá²<\.œa¿Ä\n‹:ÏaVƒ»¤ž²kÀú Ñÿ§:AD'@³‚ “¿±öOMŒYC3û*CV¹ª•¡29ŸdÑAÕð¦5BIb”û‡î‘ŽõDâ…³MŒ¶³†hsn£Úq;ë@RØ`iSuÑxl#m²p¼æÐAl˜ ËB@ Säà’d0Fb³\¥ÁWéÊÕ)Z}ëIý žˆòÔXe|ˆ4 Ásà°·7¦•‘rœaCumÕz¨9Ðu÷₯Ç: ŽqI _üõX'Ä©‚QqI 7°¢$7¢‚OÊen3²ø Ì"1N?HÌaÍùvžY·÷ðòÔtñ©2l=cÀ™Xè“0£öõ=6n€²òb;{é¸A¸Šêh=S+Q+a°K;å.·)˜ÿz1zÚ¥Šè’XÕ±†Ô^/†ƒ lžE]×m)Šç ]ÏIJÈ¢«=ª™(9ÖA±uÄXź4Öåc‡{ îUðÏjˆgü³¦Y5)B¢fsó°c½ím¤/t ;ÑRG-ø­=¸‘"ÊzpEtôH˜q¥ ¯#œq¸¨#h^#Âå‰pµD¸.G„«!ÂUq$/º†ë”l<‚­§>ÍÛ¾Òb7AD½c-ó°!^y€î/¸þ®ñ•p¾ƒ4JÁ‚8ßkvüèúïÈ摲ÿÇ+ÂØúoÐZÿmÊG×n·®ßµi`ç;6oëå„|–g¡å÷·ÃÂóöÃ]í÷u°‘‰V ˜@@,²˜¤`©n‘RRÝb˜j´¬È ŒŸÉŽ—•¡ÈóåÃ`°· ª×)áSVžã‰².àª1dY eðB¢UëZbz]Žá©Ê !OЧ\VZ—¸®$pޱäJqDY)2maG“Ä`±#^ ûj¨v;aœÔt‹qÜ·eã‚ÑY ¤´~sv}ô·=—Ï]žÛ}üÛ³[Ûfû–Íö/žÍ_pü]‹ÿèWaÐÑÇÚ¤Ðå(t9Ú×öÔ׎G_\üDß+ïlß+ëú–háYü:qí 0˜Å+'V`Oß²+–Ï.œÝ±øøâ7ßõÆÅ'ú^9—;û‡ðBÆÇïyêkaŒm2Æ>=ÆS‹ßxòÆåðbL ½hý2 ;ûZœÍ¯ÿ”è壷‘ÜÞónßÍOô=!áÍ—?²ðle¶ïù'6ü|›1Ü/#·ï4†8 !n›y~öÈ󳻟?þôŸž^ðô¢¾ÓŒ¼e³ÀCÉ[É[¶üÔ†ÿ|ô¹¯žºë;žè; HÎóÀù Tôj#ÏôP#Ïú'gwrýèã7ïyßâ}´Ÿ¦´??_´>Ñ÷qLÙÇþ~ü‰¾‡pÈC0䓈ÿý?ýÛ¿ú(ÓälŸÂeû(†ÿ(,ÛÀìîãRbÑ‘‡"ß.š‰|‹ú>zb.äÞe³»?JCâ‹~*úw†EÿχOô}”ùgNô=t.wfàܹs'ú>~õ‚_|žÝÆ`áÙ"—éC,Ó6>tv×|j”êøâ+Žïºb1ÊâìcÿÙ_:úø(åà×0iÑG¼ ‘¿ë‰¾—°÷%è]7»ûeRܯ.ÚúÒìî—h/³‚µ±¸á>¾ë?u¢ï%ÏWNô½ œÿ)âß&â/2ü‹ú^â…ÆÊò.Ë˸,Ã{PI޾x è〘ÙÝm§r'ó°e<=Gùác¥mPÚÀå8äÄ𯜺–]Izjï+§ú^9µÞ ¨èñkAR€$yåÔ›0fœ ´gC‚"é€% ±^*Iižejeôë¹§(ÎeçJÙÿÜSQ.Ëp.+e?„Qå ÚËŠ'ú^ÀäE켌[ÁËëú–©ºüâ¥*×LH×ï{4ÿ½/à |]ûúâ¹™h>³{_e2;!/(Áߥ͋Hð´øçž©ù¬žš£/¶Ãqm7dÏÂS{ŸEŸÝ}’È!4¾í^Žy NSáu t³Á$/PyöÂìî…ÏmeZn+ r[™”›wGÝ´ ôËîÙ™—yî-ã¹·sˆï‡1ßþHLü6™ïQLôgG¿{Ïû(w‹¸¼Çû^:¾ä¼âTßK'ÛNí}!àäý ØßpÜÓ´ÐOÏî~&Š^N¢Ÿ¥ååø†ËËzK^êùXÏ!˜BÈ£åPÊΞwnrqt½ò©Ëžû›So†x‘2ƒ È€ÄrAš\Ín°~â6tßèÙÉ]ÐH´|ó…X¿ƒá×€Œ~ åý‡${@¶š¦gé‰x=éXÑDšš…©YލYN©Y®£f¹5˨Y®§f9  @åW¢–´øÜ ¾]ºM¸ÿšóa> 5އXë 4vÉÉ6®¡,'á'Û`kYƺ!nL$x9‚Ÿ¡˜—3Ìm8xY4Ð á½í´DËñ€qô÷-†ï¶ˆ$ÞÎÂmœ=øu Š)Ê„A ¥íècE Æ™\ÃgþÜ0Zyv÷«¬jññ‘á Ö"¿¡ðÁb§ïþ㻀7úƒfpÐ –½ë/uGÙX(ÛÛX¶uÏ99ó©½ÿÿì½`Çu0¾ú‡AØÄÆ6¶×ÇKâþé–±éøÓR”˜`,ÝÁ-Ý)º–\“âÊj¢Êjœ&MÝÔùJ·uS7! ùêôçÖ8Æ7NKS§! ¤jJú“>‘|4¥©Û’è{ofößìîíîéNwà[8íΛ7oÞ¼÷æÍ›ÙÙ]I0 ’[5tR¤—õÒ[¦q)ÒYUCù±ïNÌ£* |µ5Ìc†u ¾h¨/•–Þi©!5\C´ žÐxZ. Ú™4>»ÊÔg³ÀâgÕÈèRß;£WôSÀ*f)RÈ~‚C7œ!V¨¶\5_N?‡ÄrÕªrªñT4Yÿ“H&b È0tÌžàº;#(eOr£´nHN3Ú„]f¼B)\¡|uÀ•ÁÔE=>‰Ç´\SàTy5*V“jšYÄx¥XþEÊ’!•ÂQ¾$xµ?Œ²ãÅóÁcçvÃϤ¼|n.Fì8„ÿgéìÀ¹ÈY4 \qT¯‰y’¯À¨»Ôy\Ó—”µ ꘊ/âH‡_‚ Ï(T!ž1ª°™xQU…U|…UÆ¢©± ¡§ ¥S_ü ô¢0SÛH´µ„vž'~+/Ðë ìûÒwøóÍûÚþúgÇî¸Ï,ÿjû>ÃßÝ ä›}ŸáäÍ‚€‹ˆVßg(_ª­Ïìû fxü÷\Ké·¤ÃÅÎü÷6,µ÷}†äR{ßgh¹Ü’ï3œ„Pîôø#×ßgX(ñ-ÐïT³ë÷±ôMpÆå¿^–¾ ù€j_aiü^à Uõõ$´ß[¢|¯á ÀÖß°üup¶þ¥7©øÁº·Àïö ò:A’¿Î =ÈÒø½†TÐï.`z7œ Œrœ¥Cp> é8Kã^œÍó•4Þ›9é§Xúœ.%ÿ0œ_pQ›À4Fæg!ýǬ=c¿Ïré߆ߑJj+ˆßø¤?ÆÒØî] ô/°4~_@À÷“3ú_†äO¯X>® j‘ ü/–>gÿbAØÁÒoÁù×ð}Ž‚ò}‡ HÿKŸ…óoV+úÿ]Á÷”²4Ž#‹ïZ/¥iÕK,ȇèÆ ÜУŸN`ßkè•>¤ }`Aúø>H?Á¾ AnÞ ì&¾ôýö9zŸSú4û½k/àf3ŸùÑ|l¿A¾Ý üAó- õ$èW!È}EAsïÿ´„t§dòÃ÷NýûÃ×Ù÷öVÐô·Ùyý‹gð_aé%ø¾ÿÛÁß³÷ýoÅ÷ðß)Ä3ø’A<‹0ú³÷ì÷,¡ïµ`ïÑÿ4KŽ¥¿w={¿{o}ñ˜ýAÞo”Ë—¿÷=^O àáßÿå ïÿÎÉ¡¼ÿ%™ ÇšÀ ¨'¶_ûRò,ˆÇð­04ѧÊ{KW(»éËc‚u¾Jõ¾…x¢¯ IìÙÛTI6®#°;úXW}}}Í*±N$.Æ#‹ÁíÁÁwí¦ÛËzèçÑèc‰ž°)ÙëNhƒ‹è‹ñÞý‘~±&¶ 7u ñXR G ÊìK$ÉÐ0ó1=hCÈ=ó„?ò %ÙõÔJm¡«Áa³+ü°Qöa@BÿŒsí£l':îj2w®W³³c/îƒÔA£–¶Gó¹­ÆeÂiËDÙ³ügpŽA¢O ‚¤|ÒÓžêg}üÓ PŸÌXßìëóx<¸+Séòxºô°.‚§ÚhÎ2Ûu$Ú H´3rùUø‹,×Gׯ÷!:œª]ê’ŠÖÃYÞnNÔDŸùóÔ7ÉIú8±œT?ùËÊÐ'ìd$ú G•4(ãÕ–ñjë¡Ïz”2š‡é~xíƒk²F#ƒ¡ƒ‰x¨'[vjj£ÍCƒk¤µÒ–€¡ÉI•O"ào >´qKëÎúW!Ù´¿@ 6Q¥0Ð5céí qæÜ˜ÏØ |±´f`VêPúRaU©Öç®­­;6µn ¶ìÚ¸½ImYë׋͛¶5wµ©Y17)C§Æ=ìB<‘{nYNÅâ%w)*³9»9ÃU笫Σ5/‘³/âìá\ÎÊR^¥è‘-HiŸâE‚þ…B$AöÜJ£©W ‘$ Æ?˜ÌLDN&uœLêìËDädR—©Lè0ÅŠª¹uÍ5ä9ë&ÅævéûEvš›EíÚ°x¹µò(«óÛ²ç9HÒ ™ŠÈ¸¬=“ eóæf#«ŽRç@,¼éÔe,+Ï`å¹Î¾!d³ÅéÃlZœM;3}s±97¹Ñ‰Éî©f–¡Ø54‚R Bè0+ÉÔñ’yÉX 0šNÃK&g„hÙètcjVÍ!›¶ð³itv5m§p¾Bå,Ö¯Wæ·0C%õœ%CÂMoñ0œârbµ=Íå$j{ªË ÓötWL'NÑ|æIõÏÕˆ¯h4m÷§›Å6û£†“ß‹R‡ŒKyÓ®ðµøÍ–ødcÔ˜ž²GòZwulmÝùdÒ,«ÚŒP=xc:JÛ )mæ‹ìhÝÙÚ¼}ÛNR·\DÕUÒ±kÍÂæŠ\ƒÙQiÐ-dY(Ë2NG°cí¬]mYra\!¥Q,0¦±M^¯0êÚJïÕtn?vnÍj…pÎR× -GÛ4 ­j±©š¨¨SÍ4ÿ†1s"—ÍÀÈe3p%¢häNð8¬Nh_{¢“éæô’0£HÃz˜J/£‘JÈH*Ò…™ezܼezÜrT÷D Þ?X%ÖÕ= ±ëþDJóIQëÍ×RöZÑ{´v(¦½ÈY¢&mñ’÷pó ·n>1÷æh;1G@wóBqk¤b!Mœd89—Š"ƒô¸Ñ UöˆoŽƒslŽkš¼èù¹-oŽ6Aúém^¼£›—‰[# ™ÌÒ;ÖåÊõñ(ËUÂÒD*šèOôfç2¹·Àûé}„Ö\ôuçw’»×¢qäÚâ5¾ÿâMÿÅkuó.}4© èÇs&á«ú^¡îÖž&R¥ 7Ðt?&6{ÉŒIéôH²ý† Í!!ÄK [†ø(¤ A«¸À* ‘ƒ]ƒOhˆìDÀ*'Kd›ƒ2â&„ÐìMÕì Ö­¬×©\½:¹ºs'W]°à-H¹ºu ¢Ž:«w«{ÈJ¬^‹/X Á\ ÇFó ]_ë=AÒ\¹9ûì¢?Íz—FŽu¼y¦]âËø¶™Ã8ÖLŽjI¹Ó Êm)'÷œ‰ÉA/ξ˜¼éìÉkiNÞAgæ¤ë–ÞŒÍ)ÝzqÌ)m¿³îvÅ”½^7Çbò¦“×RLÞ9““njcd‰9““;9¹-͉ ‡¶ÅäåÄä Æ˜ss:Lw7ÇÚŠÌð$štS+ùjeË_ÝÓ,ºx… Ýnu´b^G Lk£‰RL§óšÕÏU*±m²ˆø[Y†kÁêETkâÛìßlMgsz:öVõÕb{ •ñM'5 R>nôtÏbgÀlºNÎãHéÍì–&ïÑ™’éè©gÍ%âb³¿Ëíö4‰ƒ÷¬Å¡{Ö× Šâ÷¬ÂÄYtñÞ"ßÎâª|ÅÂê³ï,t“Ñ,;‹tb»JE>ŸíÊæ”ÔãÔW@R1;µç Ÿv¦®ƒz_Ý`-ük‚<Ù¥Yy( ‹€ ­Å“é¿WkÜd{íM&úS1|TºˆrZš*ÔÔj±,êª{?f† #¯H^â9X%?¸ÙdÖ-˜ÂéÇzgKGùìï,)©¿Ô6KRªÇog/&BĬÈõõƒ•¨YìïOô«”Šƒp8’"†^³êáø ¥›Fc)©ÛjÞ*iúÌ­Ìh42˜5dË0®u.H£OE#™êÔìûãÙÖFÁŠP#»RÔˆÐp§”ÉG”‹^+©V2µs›of´ vИ}öD§ÚwƒBÔ“´ŒúŒõA $[°âPÍ`3µO彯N8‹A@æÜJ´YàK’’]‘Õ°Àµ+9Ô+‡£pÝ•èÛ³wŸF­¢öc]†Nâî½Úx+©}”0Á°ú÷ø£I-AV³H#xÝ‹C$úkbëqcÃý .ï½W4æ?Šùb>œ ¯RV@8|(Ò á=kN 'Eµ„ÙG÷Ò(_¼_ìhÅÑó`"•7·vîlarTø k™ñD *ˆ‡•çŠ ö}ôç5ý@¶V© d¡è@Ûm#¤YˆžÍØ^ÕdDªF]Cm?œUÕh&,DÓ²‘ðJÓêX5ÍRÙâS¼ZÍ´«¶ÙCŠÕÖ˜ò!uZ[¤b@*¦'Ë€”Hyõ¤¼J©¤žT2®¢ÈVÔ€¯¨sj-ÐÆ}£÷2vÈ€±C™0EÎôÍlᛩô|KýÀ _ÏŸß9{í@ª]Oª=RÍ~T¨ß@¡þL ŒµèkɈ1T¨ß@¡þŒF…† Έ±Ü°‘í†3°ÞÔB‹Z4Z°-;p¤Í>½ä|¨Á‡.ÍgàÓ|8µ`¬EÏXKŒµøP> ø2q>´6Ÿµù2°6(ä%ä ü73i,š¯ÏÀ|}™˜¯˜¯ÏÈ|}¼ù:pphs@ßâ@&D¯ä3ðJ¾ ¼Rs© ¨2ñqÐÌ}3[2if­.``uL| ­Å@h-™ #‰I4F-´h¡…×;ìîØ[Û¡#ÚáœÁà¯CÏ^GÂkÝ[Ûª#ÔšKÐí;ô½¾#ƒNß ­kÕ·®5ª¼ÑP÷Gü Ù=áPª>šeªà GÀÿcÚpû ÞàñøÜ€»!àón×ëñ ¢;w,)Ç@2êEáÑT$™Jƒ×J%c½sÁÑœwÅÄÑ`Ym[vµuµlìèÚZy@bñˆ¨@U/âÄíähÖnDÑc˜³r¼JŽvùMôçlE¿qpÑ`œŒs6‹âZU{Ô«´¢Øh˜ ˆë”ÍÚ0´T%Õ+Âð𨤠ÝYc‡ÇËgm“³||Öf9Ë_‰+=¡T*ÖÁ™?{IY"ÞC÷9¶yréÖ턺S±DÜ ¸JiÍXÚXŸÛ0Ë[I(‹ñÞý‘þ¤˜8 ö%pIà`b /©¥+Âd^j[ŽÉ¬ÔÀ½Ü«'%°O‹e`¿†J‹L¥A‹~ˆZl‰ÊZ-/~‰J£Ü.ƒ×i±%*MK[dtµ} ¾ÄŒÇ«å&l`î•ÍBC_®·¡RË¿O®9 …ÇPðZ !ƒ6j¡^Ö¶Öwˆ‚½nÌн-•0{9°„îÓ²ÍÀ¯¥/5Ö«Õl@†kU«ÐY«Å—„ïåZ+ÓYÇÁ™ð}ZåÊõú´vÜ!Õ+ú4-îˆÊpv[|Mƒ;Â2\ÓàV…N€vHˆ;z#©þ!1Ñéa?çûbëΠTÈ])ª2ØÛÒˆ–µ`üÈ‘†L¾¥IêV·¹Ù×çñP2~ÜEÞÜ®éŒîòPp€w2kµÄ{%â˜_§KÄ5‘À)uF_ì3oD|[%Éø8ÑHp¿¿‹òhZË>|"r}Qz©½H:£:Ãß'éDÓ.U°N —´=R“Ñ+ÒtI„3Bš> p™F½Ûv¾_²¯ÆÛ’7豌 Üý„W·™¼}‚Á5mnW HÓ+Û ÒôÊvÅ„4½²]±!m¯lWŒHÓ+Û+ÒôÊvÅŒ4½²]1#蕚&ãÃÍ´M“ÉsH¾V+º®!oÔÀ%2¢oŸ‘ýn-|H‚k[¬˜‘ßËÁ™öý>-\Ҿ߯%$›‘¿ƒK„Z¸Lh-:¨Õ«I"ﻉþp,Já „d*Ò+ç®äÑ]ÛçûÈÚÎuz Þ éô^ ,6hz@@¦Ó é…Ž¶Ï“w“8×çÝ\ÛçÝ2¾¶ÏÓw¡#|­î•ð5í¥oÃ&pu{¡CJò pæ/ñðh­V†{µÆÃÈ‹-(ò h¬_‘O 7~J( 1~ú†[×?}y)óÆ/ñ£5~·_«1~ònp ÷бP›&ûBÿ²Ø-0ꎪ#V}ÀÚ•„©2’ÓÆk1\UÊÚà4)õ1Œ7*e¸¨U. µ¼‡¤ .|R(ÃÔ—2)M<Ô®Àµñµ_Å“&¸T­ ôü2OºðÕ˜®ÙÓ ®¥ n.|5‘ŸOÖLë—ªYGç\*À«&õÊ-ósA¬±pyU’ÄW`F'`Ü€Ÿ \R4j˜R¯¶r½ÚyT‡Œ/j¢êV_Uw„ÐU[Wå]‘x8v Ûë^Ѹþ—˵?<Ò¯ÿ¹=¾7·þçñŠësrHëd¡OYùcÉÊÈ`*Òå½øt÷l¾Ô¤£©lÎ.]ÕFÊìVoãË.å,}›É@™>Ca»ªY>¸à¬Mv75‡‹ƒøÿDnëHïÿ×z<?ïÿý]ôÿspüjpûæ’’9]"” %ªü•zö“¿5B¥0_èýÑðŪSÁw4¬jª8©Frù4^Ö‘Ëâå rù ^ÞD.ŸÅK(}KOE¡²SÁ+”Ò•¦`Õ“SÃ41¾t„‚«‡ï¯.O…xмÔN4?Õă–§jxÐí©÷ð ;R¥ÓãÁwf„ñà•aªoffføð;e©…ðw^ªb꫈ڹt,è- .;EÄqjC¹ \zÒÃ'\*RPµ´Lõ´jôXn=¨QÚ ¡2FUNÏg ^~óõg‰ö\DûE=ÉDÔ;u+>ìZ¨@¨ì'*ó§–ñ  W­$ß!’\B­£¬C6ÿw´2Ý t…¥+lU$ݦHú!¤.DrKO 8XÈ«üR™^Ô2ƒÞ±xä8åܱ8–¦à«vÄÉ@âd´ Å9us¥¾)Ùmʃú¦¼ªoÊ«¶šò ¾)¯JMÙ¹@ß”y†MyÕVS^Í­VÒ5eØ¥oÊüì6%›ZIg`/ϘCÿ«+èÐ]×ͶOÙjòD¦†8‘©ö&ä&¿1ÏnŸÊ¸)¶ q"SíMȆøßvû”-÷0‘©!ÚÔJº¦¬1hŠqŸÊ¸)ÙÔJ: —s}jÑ,ûÔ„=7¢7Ä ½ö& ܈-íMxD¹É2hŠaŸÊ¼)zíM8w[Ú›0ðˆ²!þQ©Í>5aoÈÕbVµ’®)ß/±Ù§2oJ6µ’ÎÀªK¸>µ'®Ê¬ù®õ=AßrÏâ‘k ²¾9Md-§|p¹/›Ée ÇÛµ‚oãÒ‹·qæÊâíûu¼ýù fW¦Üð·,µþV¤VÂßy©ÛáoyjüŸºþ–¤ªàoijüd Ñ Eà°,$ñ» tF)úG˜[.  ty›ÁÈp½~æ´Láct*V•¢´—À_±“™éP’G¥OÕ”“-²ÙiÈ‚{{6 Ü?j0*Ü ×ܽ œaIs ‰æŒ´Åªré…î\[ dáoÈ¢½h±´½O”¦Ñ–~à³§­Œ¹ŸÐsoàbî_1-–êµU Ê9’‘¶2ž´×žu„iJ{ß$m}){Üí¶ú³»Ú’†ƒüoíp@FƒrâË— ²‡_&È~¹@=<ñ±SOÞÎ<¼¡§8Qœ…‹GB.¶þRÁ¬áDùp£oàFrén  {‡ËªáÆu©zañÈ?Hø€´iñÈI) ˆA»žÙ^_·äÏÊ·]!Ö³é6C¬UDpŸ©šµ"Øœ]9Œ ¹ÁƒË EШˆ ÉT-Zl1ö!2Ÿf­9±‚ûoe=bžªG¬[<ò-US\<òºª©›ŒF£±íU;þÆ(±µPdl£-Ýu‹ÒÀµi¸9× NØQ¥Ó~èf¥MiØb³F¶º!S Î&:¡ |v™ÒÀ@ÚíjPï27ÑÙ7ð‹7) ¼/m›sÝ@£ˆeìø·7* lLÛÀ-vMtCö¦;YÐàßÃÜ© (--Q†–Reh)S†–’Å#-%Š(nY<ÒP¢ˆâVZî–âU™–NÓi(LO„éíò4tœLMû08dÖùXAfÁKÉ,x™ÿºÈü·tÚ¥,*,n?}uÍ5©ðû–ʼJ‘ùbÌ ’ùÊÅ#§’ù= óWy™/’CÇ©Hž"öE²”§N RXþW³†r4 yîK¥¹â¼}k(°øvÿõŠ5”.Ù©RöÍ‹GTw°Å#î4ýëfýë¾ÕaÏbŒ§¦—“縫òBnÅ•p•®vÒÕª•®Vªíjwk»ZMλZ/\PiþÅâ´]MÏÿÜ[ƒÉBåÿ?)ÖP–¶«Ýrt5ƒQÍfPhË]Ò¯“¤íjŸ¾N%\¥«-RºÚ¥«•i»Ú{µ]mU®»ZÆÒœƒU'*ÍíUéºZÆüg<_7°†´]í™…Š5T-9¯íj«a˜èz^®tmàV 6ôƒ»‡wäRû*êºÀ¦ƒG(º^œV×+ó kýâG溞ýêNÊåT×…µ:u|¾¢ëë´º¾E«ëšBÕu6ï{øð 9²ÿ輜è:Ç÷m”™Éé E×Õiu}waèZ¿m"«ºÖïQtý|yt[þM¶'RþÏ•)º^¤Õõ­Z]¯Ê±®³¹~c›ÙÛA—V×ÇJ®8d̶÷:Sþ/•(º^²xä{Z]C¥kˆË_¹jtm+6³©ëW%Y]ëï^gU×¶b3›º–øÇ.¤M>š{Ö¸1ˆÝ³®ä{ÖÕ‚úžõSwªîP'î’îPÿL©%‚bL¾TµtùàU·ˆê{|kW©ª]ë”vßE/ü¸í+w*ÍY«4§9çÍÉÍ=Ä•æ4)Í1¹»mk¶œÏ;†7©šPš³iÛ³ò9!Üz‡Òœû”æo¿ÈfsŒb£ ³nÎÐíJs•æ´Ø6¶ 9þ6çó·Ñ­H‹G•8;Þ¡uv~Û¡Âä‚?r¸øÄ4náéåu§Ù7çÛ»“½æü×­ÙŸB\ï»ÓÚŸÓæ8ÔÎjUsJ”æÜ ÍYR®ÚVì"ÛŠÉs¯®È”ãÈ]£ ?®h¸……ÊKH¨¼¬ÿ«ÚTj§Mƒp>Ûº™†ø¤5óÓ·Æà>²½Ö¬¸g<NÛšO,#­©PMXô†VøÍxë&ÒŒyD)¥ŽM¬ÀºÍ/TqJ_q ´«\òÊÃesç% ”—ñlMq‹o̧—ÈM›šÞ3^"ãÖÜ—K<õ.Õy‰«±tõi›QøýåŸT{gÊ÷pkFîÁÞ41Ÿ·Ø/-qê ¢Mio/_bß=dÜšŒG_ƒ~•¶5;«m¸‡ÂoÆGëÜÃÕØ_N¨öûT)îa%XYw©êÁ*—c³+°—ï\ǃôfºÁéÕœZŸ½Á)­õ-¸NwëÀ–Ræ~[GÚÁiS•b}‹ë»' ÖWXkË»:°>[1EæÖ§oSë«ÌÐúôJÉñF“´ÖwRµ)ç:Åúîõt–J/uÊ…ÙÍÙö„º¨Ù9 ÅmÚÛ«RöBq¥·ºrioFþôöfOi7»tÌWì­Z±·š,ÛÛ«¹µ7}RÕ?/{ö¦oFæöfË[+ÍøÓŠìÙ›-mdnozm(öv¡\±·Eн½×®½þ6Òr;ö¦æìmº7°7›ÑœC{k*³aoÙ\ÆÊͦŸT©boK{Ã­ê»æÜÞlM"lÚ›¼Õå·JrjoÏìٛ܌o’½ýåÙ›­ÙƒM{3Þ¸£~÷SKÉ%’M-`ˆÓwÉM¾Xþè‚™¥3Ë'¯àëcOV3²jjðf jf Z‘—Ëh$¿Lûÿj€´|f` ’.V@9(ȶÊmÖ(ÿ]f‰òk”ãÅ%¡,5ÆúMJˆ|j@nûŪGKh‚ìoz˺á[¬ùYiRbòƒR;­z¹”¶J4kUåâ‘_·nÕ‡J-QvÚ⧆ñ³ÏŒå…QbÍnR´@ù k”O–Øá‹ ب°tz/1­“Ú„õÖ$n1'A}ÒS_$A«)XZ|j$ü?33ØG§î+Áy­ôâ覠ëÉŠ©?@—¼Da— Ä“¥Ó-Äñu^=óÚDY þ) .më¼$RÍ(/wɄǃ—g„©÷‘È)\#‡1Æáe{BåRM—55°¤©|zœ6ƒø|rÅvºˆ×›i Õ:ªÉû<_…Q†!–›!’ÁöS ¢Ë Gß©^±Ê ­œjQ«Í‘§©[Ä¥fˆäiÁŸ–ˈËÌÉvæ7Äåfˆóñ¨‚(š!¢8¦WWš!â›ø¦v*ˆ5fˆø.î©»ÄZ3Ä…ˆˆÒdˆn3DÔÄÔ?(ˆ~3Äëñó b£â"D|JA¼ß q1">¤ n0CD#˜Z£ ¶˜!.AÄy âV3Äëñ|©Œ¸Ý ñD<® ¶™!¢ýM)ˆfˆïAÄý âCfˆ7"â:ña3Ä›±ZAÜg†ˆ¦?õÿ—Ȉa3Ä›ñ¯Ĩâ-ˆøÛ b⭈أ ö™!b¯›jVSfˆ·!â- â â툈C*C|Ò ñD<­ 1CÄ?õû âÓFˆ“ß ÓC ë£fX+«a=c†ubÕ1¬gͰÐÅhç ‚úö÷'úñC8ëדÏx‹±¸òõšU•ê|å»áNºCU^óIr»$Tå•;`@U^õ±qûTå•OŠ¿ò'ÿö­ûÛ¶47ß'ÖlÙÙ¹JôÕ{E¯Ûíu¯sûÄš]‘°¸5”·Çâƒbc½óëÖ®„úäPo*´Ω~zŽJWý‘žúTd0%Ô‡C©P¿?™`‚&º½½‘xºÂh4g ç±4zö;º•ürvÆ®¹@UîIèÄïÀ¨ébå¯ïfé2†×¡¢¥¦w/÷Âs3z¥,½ðÚJ<‘žt·åS¥¥¼%ª:ñøÀÛh€§®ãáL•Á|ÆŽ8 8zO?*ÿ¡bDÍ“úPÃË…›Qç•q¥Ê45`ºœKWpéyD¶xüºè]¯ÊG¾QŸè»ÛY>˜œp=Tƒ·è0€t Ò‹æÑtÒOÀðuüvšî„t=ø«wÑ4Ž“ï„M÷sõ Á/ðAøD9ÍšËÿ .ýq.ý)øýÍAØÏøý,—ÿ'\ú ð«Ý+ÿ^Añÿ‚Ë•KŸâÒÇ¥¿Ã¥'¸ô$—þ7.ýß\º´D›®äÒ7pé[¹ôJ.]Ç¥×ré \z+—~—ÞÍ¥÷séǸô—þ0—þ(—~–Kÿ.—þ.ýy.ýe.ý —þ:—þ;.ý\ú\úG\úÇ\š~„¬[?0(Ä}Äù šï ìKvª„ü‰?û0Ÿ ýœž ùžJŒwÅåsuBÊÆ„¾þXÎà€éûÀ?0ø—ü4¦›áoü» þLß/—|†Á‹Gá$ÄI`ô•»#í÷_áÊëõrßõºîâ÷_çâ¸+ïîGÄÄ¡T}t…üpqç@oÀEQô­­¬d_[&Ü–µwý¯TŠkV‹rp-*Q·(ª"r%`W¯©éá©õÖ’ /\øé¥è‡«ÆZÕ¥ôϨ%Š¢4ùCž1H•øjò?ÿ#TIÉÿ½~‰8™ˆ°ò4ƒþ÷7Vnª¬ìŽ‚ÕÄC½­0öø¼D ¢¸ÂÃGOÍžµ\Gu8FÁ¢H2½ÊNÍ^V¦—¦Ù©9ÉÀÞ5ÂN0ÝÐÒò2ìÔ"Óê%iv‚)‰ —‰I?,¥¥égºaŒø¥6@·K`?eŒ`n#Á)KìÔ"£SØ f>2uo/!ï¥,…e8i;)p¨ðkšõhÛâ£Ü²S³O¢Ju2˜)h…ÏC¸e§ Ýç%šd'ÜKÁô³.™J/¥Ò«…×Ôê‘ÙõÉí$T s<š<Ö”e–šRA¨“À>IþZ;Á$O‚S…°S‹D&@ÂN0”É£àé_ä)*ÃQQô¯ z hÕõpvKEÏN’yR@!¼èMÉGM‰žZeËð!ä/ ‡’]0iBðvП¡ntn±x˜ëÏþFÖŸÁ+¬†^,®–üÖ¯ˆ­;ƒâáZ%s—IœÌ¶ï—DÕk„Úì…áPC±ÝmÇà[ƒåšR“X`NU**—m1gDºò¸Ù ÞÚj¥/»cÐý­w‡{è uÑ+޹jk¥‘Bj ¶ƒ‘6¬D%i¿EMþ>vÙìïåÄßnQ¶].Û®+ ÞÎYÅiÚ˜®ž‡í“«‘DLÌD­½Ë£U¶ßBÙ¦õH BõH*ë|‚5qð Qkag"OÓœôÕXؽi=úæ¤[KÆV`­'ãL™¨ÝDZ¥ ø>¹nöaQ¹ãÑR1›ÅÔm 8í N»é» ©‰Â‚,¸ðºº¤9ʼIØ!M(S%I¤Ý:Ò0Ì;%M´‚9;½ô.½  =iÇl£žICTqž:ð}q6²¶£é 8̦βh¥ •’ιd9Í^'ÐgÐÓxÿbCûC´Ùí év#ÒǤÓpíP¶öXlɦ\mXˆ;׊Ðq¿·Ã ¹é9è@´ÿdÓzœðg-@ÆŸWLö…º#âÁþÄ@ŸX³Sô4®[• ¦mhÝ\¨Z£ÌI¿™•Uf«÷e×é!k»#³)ÈÕã8wy@ä Î]  *ä^†Ü+£ôRz—š.Ò‘áD%ë\ÙžɈ팅v™…v™…vž…vÆB»ÌB»ÌB»$•\Z M,RtÌbcQ¨E9È–Qý½$¦F&v»$T ¿PÒCP=rÀÞËšÖì…Šp9Fm.Ó—¹— vCÚ ¥0?ÍÔfhˆ‚ûØœ£IŠäu ©1%´=;ºˆ×N‚Z ®åËX  k]x­b ²9(&"Óe2 F 6ÙXT*µ=È6 Šw˜.¹I½¬[Y-¶µnÛÙ!nÙÕÚÙÖ.nÞÕºdÕܵscÇ6²3µcã¦íAÈiÝ%6ïÚÝÞ±qûöÖ-»6¶mÝ-zÖ­Ãé˜Z¥DI²CìØµí.íKàZ )’âjõ±Æ¨`3šPŒG$ì’AåÎRxÌpb`ODdÛ…öxöîñáq½ø+*!ÐÃS¢r+ɽÑÓ„ ¿ {òA1•R&2¹wÁ8Ùæœn+ÚãÍ'絕Ù׸Å'²g³¢}³•¼¼]:2 ¡Ñ/9p9lœl,ú{Õ_k>Ç~¯mÈ{˜È~˜`_ökóî7sä7X–f]ByìÖéÒ_+¶Ã¯Ù…‰\`)LþxkÙöMÔìWïÁL?Ôù b¤s µ¹ìxŠ·òß›¾ržíL+u•ƒ·ò×¥­\'3ã\»}£i/½¡ÑtÝ›5½¥sô&f‹–ÓU—5³åckð@öýM1@z7;œw}xd̉ÖæÝs4æÔs´ØsØÃÒE¿aAâšõößÏ)e`.¦”iü«Ü´åÎý…WA+¯3«Ü±³Ò‡‡ŠÎâ]í,ì*»!ï‹ì/B8âéB ¡nЄ…ŒÜµ) zh”YÍXplÊ +i7l?Ø`/b):‹&\Ë3\GS•k,à ТQî…½Nœ‡·è=ŠÞã]ƒ¼›ç,,G^å°¿>*½ïm'PtiI\³s—âBGþ¯Q§áÐa¯Ë÷Ú¸Çïµq'ßQƒÇ›‹¨Á˜-ä}ï•'{¯j¡!ï³O W³–Å=áb°$W½+I¥bñƒ66—à#UøèT¬Vlñá7ãú‘?¸µÄ®¥àë•Ê5*ÊKºhlÃ/ÇÒ7Õîñ­†Nâ™Ü†3&½Úg' ÈZŸâ€NíËÁ6µÂb–cOŠ*3’ü¨Ì™öÏ]@`쟭Ñ8K‰ÎÈ@–oTÓú5}§ÅÊÙ±×r{‡•÷žc".‚y›og1Þ\ÑÆ6'Íá¼Ó(nƒï.^¾¿Ôˆ;= nq•¾ãx‹=G4``.{Ž}o?ÓocGß0g÷;LÆÚ€åª‹ã¡ŽÏYÆg‡Š}E4` €G™Þ¹™£š5”¯é Õ¹Øe°n¯ÕìØúuÆ+ÖÀ°²v•uÇ)Ž2Z =Çh¨éÍòÒŠ³‰EÞoÏYßs4Þ軾ÒjRÃöÃx¼Ån“^ô…3à§5YœÖ8ë²kó½Ó˜ïå˜uÙ_Žq¸(ïÎ÷Àw¨ò|wÆ;CD^ž€ß*ð’?@WBò9„غŠóû,Îï‹£GŒ6;>8ò8U§ãÆžA1Su:bd}ª.á¨ï=+_BwøF±9€7¨ñÈ|'¦øNáë¤kÉû™Óݱ¨î–¯Ø*Aa½ÈÄdó?XÍÍhe¶ÊŸ‹ ˆ†Í7q˜8hl5ö{LµYÞ©l€g«lQËnþ\ì7ÕoÌ$žƒ×:[¥ ýÆÎ@Ÿµ`ϰßdy!÷är¬;O@Úú]h¯'}w÷žâ¨#Îå¨ãl®Tœ,ÍÑdÉd¾0×ûÀ WÙò;„àœi.†ËYKK 8€ƒæsÌÍ£D&ÍoÌ÷b'Žs´ÚiæÀÝy¼U‰£G~ïUz¼¹ÙƒIyPO@YO@ÇâøaÐüâøa KeüÈïÖ>ù=ÆùØÛ‡ãG¶7÷oô[™€Ñ ’õý”£‰ˆõBp‹¯¸–UˆCIq%xNW‚‹CI!%s41äà]7ÑŽ^ˆ·8‚Gƒæ¿ËF»s±â:Öœ®cç!s>ÑÜ ±ž‚H·Ó½ö·wùR\Í f5«8Šäy)Þ Ñ ù}tË3‡_ï5 $òþ.|§Zþ¶”ÌõgwôÍ_›ï™„§1ßkQžuù^‹òºó¸åõäû¶†×›ïé„7ïo—ôZ¿]ÒùtÂäq”æÎ >^.vÔŠÑZ±Na8¥}ê¤CìP> ÌÍV: c±Ë¾nrõÝ`ääÓÁ†¤YôÊIÀj)(eÆB¦Œ­ÏnœV1h·ò­âTˆUg3Bè¤c)#e²B›_7Kì6_]y£ÔüºYÊÞnóuÓ¥ulºžFûÆ,‹æ)´rSÙ[Vn¢»a²‡rNƽ;Cô2ðJ˜öKxpë\Ñ´ƒF¬pˆ¬8jˆÅQ£8jGâ¨1£†íUö¹\Ý2á`o›p÷7ºyæú£:?„K\¾®ôƒ@~Øní¬öt}À¹¶€jò¬“`+Uí¸¶Å`ê†2„Ò@¿ºã!k¼¶›žÐ¦ÆÕ-V»­‘À¦t$cÁæP`s$LÂ^ ~™[c­ñÐhÇnkºYD+7‰(Î!,9(Î!Šsˆâ¢8‡¸¶çfÍ÷ÍÉ“–ÏÉ‹mÍZÞ07ß{4k{`N¾ui2gYËÚn5â¤ëó:¯cwÂÔ¨p3u8–þÖ¬rÕ¦ Œ;›eËÍnD»™Îí‰=Må ´8G`—qœc{Š «Ü« q2 óùy~ Åëy³ã€y»ºYÈ@7?ào1„ÓÞbo1˜j­8=0é»ÅéAqzPœ¼{§Yÿ®£ùA¾?Ü÷/SróejS…^v‡g([ÁºaûÓLˆ²:WqÄÁ:¦¬†í†¤™8H÷Ùꬵ`sÖbÌñ8ìõ¨îô ÎYøÌM!X?Hˆ9ŸO!Pu³³7{`Ž(ãæíOR @u‹!íN¥V¶SÉߨºÉPœF¤ç 8(N#ŠÓˆâ4â];(Þe(Þe(Þe0¬¼x—!½P‹wpƒ» ÎB]oC¾·¥zçð©cÖæ{[ª·1ßÛR½ëò¹-ÕçÎû¶TŸ'ŸÛR}Þ¼oKõùò¹-ÕçÏû¶T_CÞ·¥ú9Ø–êP kó¾ŒïkÌÉ} û"X7G‹øÆÍ÷»sqÃæHä÷ä{ùÜï»ås|y¾‹â÷çâ.ŠÍ±Øßýµkg±ˆ?‹¥{KTñm^n_¨9hÌþ-²ýH(sxà­—®D_}4‡u¸áøÝpöàL{n?Ãá ¸ÇçÀEÀçܯ;Ð ˆîò$ÉT¨_…GS‘d* ^o(•ŒõÎGszÜ;G@_lÛ²«­«µ­kkå]ˆÅ#jtÕJ¾s · ìFÄ`¬²22˜ŠôÇE|;N<ÑGoæ1Œ½MRnw¤õF´ù{|^)ÄâaÃ߸Wº¯Èð¤oÒxØ‹qØ}Ã&>?Æö'šå{-ò“Vå¥;—&-ÞôùÍÞCVX 2OŸžB»E~³_WÇ‚?}~³ÿoØÁkŃôň€©|ÃgƦ/¦ýú°®ŸU¾7=B³ï%‚‰_˜{Õ“ÿêsÒ7øªV¬D-tß›ÕqÂOPO‚ÿb”¾1–•èßô®çƒщÎ6ø÷gñ$t¯Jáø§ uøÐ:üɡ݉‡còòHã"‡u¤ÿ=ëuã¿Çí)Žÿsqüjpûæ’’9]"” %ªüšgèÙOS‚K¨Ð”GÜRÕ¯\õsq×ü¯~eð›gð«b?>­þ-S¥o36Ñ §fßþ: ±üŸï¥ìÔìåó{i;5'uå×,v‚Ï÷ÒìÔ¢§ßK2Ø "]¾L_ú!¹?eŒšýºö“œ:–ß®Ë÷SÆÙ Â>Ÿ2ÎN-úò”?v‚hAW¿·—0ौ‡uù¤åì¤ÏÆi¿F2Ð|m;5ûtí'9ur>o>i;µèÊû¼ÄtØÉ ¿—æÓÄ:ú½”~¯q~ÉþR†|Ìõèó´aìÔеŸäÔIù>^¿Z);A\ÀçSųS‹Ž~€*ž (ÐÕŠ¥Éç_tùhô¯Q~€ê? U?†4ßK5ËN<{B/U=”ËÝ4Øï£öMO­ºòu~òGþâSô%ódJÂý:2Wõ±,ß Ìò(±F)èãæ|30Ëå6tµ¶CŠÊòÍH†ò ünÍ7#jùKvt5µù¿~ïÉ7#ÈÿjøÕ囑 µü%û¹šÚ£æ_ê8/ZœO¦jþ¥~»~÷ä“)‡Úþ%ù_­üKò¿Z퇷¾?š}áz.Jè&þWÉ¡æÿ~ø­‡ßyåÈÙ¡æüîƒ_S^9rv¨ùÇÉ÷Zø5æ•#g‡šÿMðk†_K^9rv¨ùÂo3ü¶ä•#g‡™ý«ûr!·ËÌþÕü²]©ùÇÅÃAZk¿:5ÿÂo#ü6ä“!‡‡™üÕöSÈí2ã_Ý y\3ã_Ýg¯ÿ£¶5ÿW‹üÕü«íçj‘¿û7ë×ù´7õúÞ+Åûx—u¾@ï“.€ßBøêÖH'üóësËáw;ünƒßðáw'üî‚ߊä_šWâ\çœ7Áoü–Ào)ün€ßuð»Q ÷· œóâÜWš¯‚_-üÖÀï½Þá„zøÝ ¿{ §òwjoÒºÊe$ÉE’Êeƒ2ª‘[péÁô-,”üK¯Zàe˜_0ü™Ô“5þfKç*‘_¶ì$[òºêä“­vÍ•œ³-ŸÙ¶+[rÎV¿½Öíçjëïïrû1÷âÔŽ]+:+ŸLÛÅË5S9¨6ÃÏ›ý˜ÿ1Ã/ÚOzü‚µŸ9OÍêuªw»i+:EûIO§Ðâ ³z¶ËnÚŠNÁÚO¡øçBõ?EûI[OÁØO¡úŸâø•¶ž‚¿ ÕÿŠýÌVïÙ²C+ùýOÚz¯öñKN›èË©œgë7ÌÒVø–ô ¤}Ùê÷<]>ß©mÕÁ¯Qý™ò“¡ÿ7“ÃlÇÇÙÚÛ5¯¿YÆVüÛ¿-Êg:^óú›å8<ëþg1Ï6þ¸æõ—¥ø'ãþg³|¦z¸æõw×z\v­õ·k¾]cñÉ5ß¿®±xäZí_Y_oÍÔ-üªSÿlži~Áèo¶í²ê·Æ ·ËÌ¿^«ú»Fûßµ:¾]«ý­Ø¿ÒÓ1Mçy|»Öâb»i»üÌ|ºØ¿ÒÒ1Mç»ej‡r¶ËW¶ç1vÓvù)®¤Ç+Æ÷ù¹VúWqüJ›_ì_Æå²Þ¿2õóǯ´ùÓ¿lÚ‡Ót†r.οÒ×sÍ_³µC+ÿãPÎÅõ¨ ùÉÐÿ\|X¿ñÃó5k:³ô?¶ù1“o¡ÉÍ®ŸÌ±Ü²fosm'Ù’ÿ,ý”U~±ãYåû—=ú::WKÿÊ1}o®úE¶äo!¯‚‘[ØíÕâøzrí' ÆÇ/G|ðùù–ÛÕâøzòå'®'ØMÛ¦Ãóc—ŽE¹Lç˳®7Sþ3•ƒ•^2Õï,íhÎõheW9¶ó‚ñÃÅñË|~¾åV¿œñSôÛñçÊog+È’ßÖá[Éa®í*[qQ†vU0~¸8~9âƒÏÏ·ÜŠã—3~Šó¯ÌðMë½ÊÇq»åŠó/{p§ùÅõyc<«üâú¼=ú::Ùjožâ¬ùÛlùÿlù+‡þ¿Ðæ;…6ÔáÏѸ9çóYçv¾¥¹ù>±fËÎÎU¢¯Þ+zÝn¯{Û'Ö슄ŭ¡”¸=ëݘ_·v• Ô'‡zS¡ýpNõÓsTºJESB}8” õû“I¡¾;ÑÛ‰§ì±/Ðolá÷¼æ±4ÿ-Órv¾“ᕱôøSðDvÆoq¹Tx'T8jzµŒž Âó©ÒRÞ-<þ}Œ~3Ç“¾I&ÑqA˜(¥ß$›ÇêÅï‹-àèm}V"*FÔ<©5¼\ø·u^WªLà ¦Ë¸t9ù>Ÿ°¥ä[hGñWNÓøÍ³  —[iš|û”°•áãwÎöAúY–Æo'âѤ4ÞQU¿¸á.ÐS M·aù•Jú!H¹[I‡°ü{¡L)M? é‰%¿ë[­¤Ÿ€¤x¯‚?Œôë”4šÁÑ5JÛ=áQÒŸÁò~%ýÇX><1yCüûá,kÏËp>Ñ$ÇXý¯!ÿë•ô›ØÞ•ô·ßJúûX~“’þ–o:Ëhú'Xß%ýÒûeŸ¨|‡’^ç;üë!-îRÒ·@úH§’¾ Ò)éZHoxXI }´ hÎcú„ô¾Jþf¬/¦äïDú}Jºé=®¤÷"¿œëÿ}ûûº}õÝB<Ñ×…)!êЫXé,Õì;$_H¥}aùB HHá€ÄŽ”Ø‘PàB"(!w°K¶²$«®•spì nlÙÌeåpÃð»áìÁÿ˜öÜ~‡K¯?à<Ÿ;p7|Áíñx¼kÑ[¶è1L…úEQx4I¦æzC©d¬w.8šÓCܸ©µ³£r½tTVvDcIþ§¢1™èáıý©X".&ˆí[vµv¶Õj„]‹áH¨')>KEEˆ.z#©þ!1”ì‹t§’X¢»äÜÓ“8Øê‹ÕŠèz†Ä‰~1¯ õï¥úCP¦;šˆ%#XëˆÇRbw¤§‡¤XUÉhb ',§"†Ä¾þD_¤_Á¬ 8†˜%v`ˆ6¢/m8ØŸ諯ÜÈhy}nu°鈩Ðc‘¸x ?ÑK¶íìîÚ¹±c[ëÎÛÅŽ›¶ÛÅÍ­»*›wínïØ¸}{ë–]Û¶î®=ëÖyë+++Å–`{ó®mmXD*¬ˆG’Ô&îIô¡,“{ÅX¼o Õu Öà@JJìRb+!Ó~-ZOD>@‚$v'â©P,ƒC©DoRŒ'<B‡ØoÿØJ¥bÐDm< ¬²–RcG¬>R¯&rG‘Æzc©Ø¡h½¸” õöõDja"šîh©rÒ€2} ¼ÝÝr„d»þ­ûÉ1Çc ýý¬ ,Ö2`X„w¤+á&¡t}C­Èþ¸WÕÊ7®ª¥…k$…ÖS(¶D;U¤½?”Œ%%ÓÒ6’"•=-Ë(<ƒwEBa£bjpB…=ÞK¥ ;•ÀFM:HþÛ‚;E°¯ÇB#õ‘wDC©{’N(GŒÃºS„¨–ÿh¤§OÛP\@˜ï$“@QD# ÆRÄæv¶vÛkæ¡Zƒ'vìu׊)è’¡ƒ‰x¨‡Nô§¢ h 䱪åLJˆýa;V$úcAç¬_zW kˆ¡)à´Ì¬&?éO¢zCT…´Ä*dÍKÙèMÄÝ=±xŒ3Ðk?4­¢Ý+c\…žÈNÌKU)’öÕ‹ ±:,“|oÀüEâ ³”x(ÔK $!ê…²<¸áH £ºKI1kØ‚¼ûán¨JÜ–“}`—ô‰ÐFmw‘íÉSÂVô…úÁÁ¥@0’½QÎдA¯&Áêz¯{aB#:„âÄ^зb%ª¡A¢¾¶?B|,š oᄾRBúÕé¶D2ÛßáäƒRg¾§M¬SZ/>z²öÉýðë~²l¬/ª¾Rð÷`¨·7F'®Í ôÐ3I²>°¡Q@ÏKªCm’¬mµ?âÀÍNÄ#šbªʷ‰‡@ ÐõbMhXÂ?àVQJ3¢äftº×x‘kFí¶ÚfQL õE˜FC²îi’©qN˜¸Ô$uªtà Åö P¶ëQ´ë‰d×·m[ãÕ¸ˆ”rbÌC­†dHß“zvbÔ5™0ƒl0e¯'®û@l5¦0†æK…˜¦`7õCàƒ!¶KÊÖˆIÀ† ö ôÆÅúúz¦J »€‡ÿø´O*(gâû•? ¢-Â?nòG›A`ûå+fu’ “?Ý•:úûW7'’{ˆèöU³u{,®ä‹ÔnÍë‘OJu²‘îD¯â?˜8µhBƒ;WãjæN,_º‚aÿ4?\Nƒ:[¤^ÇH‚Rq‚®ã¶N­¯B•-Rï•¶Š: S4‹†>·ŽÏ¥NÑØ$h³áZ¤Éó²‚^–Z.ÍŒNA%B¼ ïC¦$×MZº§vÿ=µÝ÷€UlLêå!±v?8U25F¥xõºg½gwu˜Âó~Â~ á^„î{ÖCïð×Kñ3+Œàø¥XÍû@f(“±€zö²‡$¡Ò T‹…¯­U9Z@‚šÈ%ÒÙ,Ê㊎ª,"m3D2© ôGá2„ûAŽuÐù„zR,ªUÇ01 á<¡û1zƒIRÚ?X«œH ÐHšÎZhß…a!"Qgñ‡†¢J2Š+Õ‘¦(IŽ@2$QIìZÓf®MsÕ²†Ø°¢6ˆû± ˜œ³W‘a4™tØl†„ó¨ó®äÁú¨Üývl|¨kcGëŽöõ·×uBÀ9ë²ñÞýà'q¾„‘ ºDóÖ»Ú×û¼´±%@tý¡nÂJ,Nƒ<œK4:Z·¯÷ÔGêü, 4R‰žD'ÝtŒ?Г¡² !B£H£õRW”¼5›‘@Ûî«„LHç0W3’A8ÖOüøX¿†Íö@{›0>ÅÈ3$&‹ôDR P+׈u³8 xr,¥G\±fLj ðÙ†ÊÊ6Q\Câ¥û5‘(¾›ñÝVK†ßÚÈjã t‚{"ñƒ©¨<ÊÑÈXúÐî‰E65áÈÁþ[n´d$¼J”žGÀK‘¨'„W4è =²Ëc$ öãÀÁ0ïµ°<-ËÊL±§ÞCþzùî¶Î]=õ$« kvjMžƒãr‡ò·Ç@=²)º²èºë} Iñþº:q£v"屩ºˆ !NwåÆ7´<š'Eé`-•ªZÀN×Àxk+„{¥Ú+7G$<Ÿœžá0óA9nêÜ¢LzàYý˜\ Ñ© ÌÕâ$Þg3I˜.'¡Éà©À׉}¤»qëR4¦y<뎢ÀÈV“ÂÙ$£Ó.Õ¢Ît!Ìèl¥=Q+yÄ]¡3\P"dÀÚoo,½̹zad©aj±-΢1ê®È$IêçÅA_Oå…è4&¨==Ð{I½lü’»ú…#‰&ñÛÈÔã‰þÇ€F?vxÌû©« +àbሄú)q¢ôTàÑDνE²Ëʳ¢8åë£sfºnÐ9Ø+ G$#Ñ iõ‚r†:Üv@J ЉwrààA‘i¤Ú/-ïí8 è‰À\ǦþH¸}ÔÆýC¡øp¬ë‹EÕ„¨¤qS%3‘&7%†·Ýà=£`ò ‘±5¥RĨw„ÆÁ‡&{kÅ_Rµbçcý¡Xœøc¾’ÊÊ|/ØfùèO¤ö×wç¶Žôëÿî·Û˯ÿû¼Åõÿ¹8Ö¬†^²þ‹»©.p—{ö’Ø8!õÜDÿ} AlîÜ´­¹n›2/a›en >´q ®™“TÇ®m4ASÁŽ]4³®lÓ’iÝÕ±µuWë¬a£¦VuÎfUÉÜѺ³µyû¶êR؆5••áÄ®sIMõìÝãÃÿëEözpUY¤«Í䯃f1ÄtôDæc‡›`$¢¦‹ñ$œ£"„¨8T1WßïܲX[iMD\ƒZ‹¤A—¿èl LÚÀ•¯³Í§"(C9©•Þ&Ï´BƒÁ„p 4Ò€7áÚ„žûÉÐKÎM«qDÄšUç­É@åÕdBÄ£ÎFk,‰8i/ééi x[Žíñ^¯¿š,Vœ“µÔqsw¢gÏ–ë€^2ªaYöÞ÷q’éMÄÁ}û¬$ãÔ{[ŠIk–Th­ž†&Ñ_'îÝðϳ7ÍØg)?ÞþMèXjÊ~E¬ÐV¾#Ðâ‘σÌÿ¢¹­Ãbþçñúuû¿|wqþ7x²ÛðEyûBý)iY°7‹×w“äwÑ12ˆwD“©¢Á¯ž¿é k§qƒfZcÀˆfvã$Â4¦¥šN"cZÝéÚh:öëiiC€âð”ãƒøÿDnë°ðÿ~Áú_ Pôÿsqüjpûæ’åy“þéö }ާFp T²õüà\ågë9¯Lë·ÊÏÖó®Nñí¶Ï©¼²õ|¦%~–õšiþ»M×zÿs,/“ç³й†žë|H5dˆìÌ?×ù7¬˜=׉xvžëüF…½ç:7Ì„‚õsÈì&zü‘íç:]ìZzNyÛ'(ÏaÞÂ*•ž\ É¥Ês”õž(Sðú ¤ôÜ£t˜ÍsyÊ"Èù*&_Q|ª›È¡x\} )·u`¿¶Á$þ¬õ®uëÖ¼þbü?ÿ—2/uò#å.ôñOÿõI ð5 áâ'1ÏpàwB >]8úO,q‡¿àú–W"¨|$äáïЧJü‘! šåÅžç¹ð÷ÂÇK„‡–Ó±§šúïw™Ðql¾ g ?ÉãÏÅ]O•»ð' tÜ‘òÖôÄö¯é ×õàZŸLÔ{¿uàËdAÈŽ/·Áo1ü– tìº~Òs÷臯SÉõ&Ž)Ëáw£@Ç“[Óè¡TÐŽ7ó pªà'­‡”3ž*˜lÁïzø½‡µÛ²4M}wÀ¯ã×Ë]ïeå> ¿0¤ïféÁ/é»TtŸ†ôY: ¿OB:ÌÒXß žÏҀ߉/ÍwQ>oþœOªÒÀù8à·—Pü!̇ôÛ¬üø½­ª¯a*þðùûËþ–Æ÷”ƒÍ®ciÔËRH§Xúwà·Ò㬾/ÃÏéï²ü¿†_ ¤ëXß—Ðé³ôl3–gi|_@ ÒÿÁÒ¯#ýW°ö->†òb}óÑ>>ùEÞw©t!ÂïQ~ÿ!–¿–ËÇ÷+‡|7ËÀ†{ÑvBòCý)ô&ÂB2B݉¤ÐõK‡ºvEâÆþæžP2X×AµÑ祺ºH7#’êïî‚S81„FRI!•èI<éB©Äáyhó"Â<ÅiþîÞ>!Ért÷$’$éï‡ÚºÉ¦êý]=‰nŸW$ú"q¤º¶µ#áX¼ ÷Û2rÃXÃ¥g¤ÝÈ[¶oÛÔÜå­÷ÉWùŠ ¥$r*e?í¿Rè)Rn9YÝztImf¶»~7Äb×aÞ4ƒ-!érá?Xºš¤Ë)¨+!ÿhž ç—ÊùGÁÞçÝJûAÅ|jÿà8Zà< nÅ3°³ÏÐùÛð Ôg`ñ!<ƒ#xÏà@öá@Ï`àQ<ƒSèÁ3Ô܇gp)<ƒ£Ä30÷$žÁYÁ3ÏÓx§ñQ<ƒ“xÏÐÁŸÅ38®OâœÜsxÃ}ÏàÈ:G4|Ñ5ù%`ýÙÉ…Àøä§”o¾>Óp?`Ìܽþb»gîÆ’›JS3pÜ-bÞÔ’ÆGQlS'H[E·:uŒ¤QQ4û©£$’ˆÖ`úY’F‰DQ÷SGH%ÅÐvª¤QBQTéÔ>’FIE1„žj#i”X»ÔÔ’FÉEñ•%Sn’F F÷aZ$i”d4UMÒ(Ñ(FMSI£d£ƒ˜¾ô L£„£GHûI%ý(i?I£Ä£Ï’ö“4J>úi?I£¢GIûI5}‘´Ÿ¤Q#Ñc¤ýöüø‘Ѿp©­cWô­‹®è øó¾÷G/¼Qîš\ ø—Ÿ}t×Þ6‰*ÙóÔë›W• cÃØž‘©Ò™3c{¯¼ù:ÁýYõ8°ê³.{ǪG¾•ºiôgÃ'Ê?‡é™oÉàé¯W jÉ›¯þŒ–ý¬Ò@óftH¼zøbU“Ÿxüþsød5«çýíÃݧ‚%Ç/—|¸b GðSÁKr© Çi¦0Ð8ÖyyôÌßO”œ) ^_ú⌫ƗV•Ží* ží|û|ðÌwÿù|Åéÿ[áúÞÔ?Müìd0µIÆŒ œ/¯>_q üàÍñðÊwÎ/_9‰ò6yJ¥Ó"P‰þ €f°O®ý9A„ö=Z2ù 1¼4#LmœÁ«Ëpu7\ípA5cmåcÂhÉèûÊÇ‚®á®SÄ;œÚPNÙPµ4àþú²±½Uï»÷`Õð‰šóÏêo_!œ/ûÁ›ço'eDË2Ÿý¹º V]£¯ÚMÈTKdD=™[4Uïu ¿Þ86P5üu¹Ì2}™ýZfïd¯IHiñ¢«ž|m“É%ÙR.SSkJÞXç%Þ,Œ¹d\ì­Â|¥4öô¯a“FŸÃÚžQYäŘè=›dI曉F#„Ëè^;‹a"ا?ާMjw¯Ò´a ó7“ÎWL¨úfUîǘÈÑ­ †2J²±«oøðRa`Á© ®­ Óóá¢DbÑP%êðng º «ãQÇ¥r×B 'VF`)ì"…ý¨a“6Ia§¦ÑË­^À3«?^E]Î^À½ ËãûÁKç[Ê\?xíüË\c;8}”œÈE„}A~?xñü,µÇ¸PµA¡êï'¥Bæ&óQ…]~0½É¼¸Å†É\˜É¼ÝÌL¦ñ’b2÷+&óT#NÎEñ**\’ƒ†ÒÿP _ùôdÄÄ&ÁÄj‘ÃE¸Zô )š¸D⊠pu¯¨ó'}ÿ©‹O_¦p™úÅ"\`KYo\N}œìU+Ê‚KA¸/·M¾ô€Ö1,—ô,"i¡5>2þ·mò‹-’$Ț͌ 5ØNm þ@™é¼¨"&3ö\Ûä 0ÊåŒ2BIÎ7›å:1ù×Am_¥¾ÔIúÖ?¶CÔ+ÛC”}g†Ð|g#Óí•nç L†*gð¤ª(ïãƒ?u*FT1^Ʋñ~Æ3_B$ã2˜1Yi^ÌmVÌ #W“TL’1êVè'MlT¹<^5BÂ2è-^yYpr¬|dß=ó\£å ©qWR›$–H,ö™Ÿ#m¤1Zª6ÁË „ß×DóeÍ ²;ƒ0 B¦GÇvL¢ÿ^_NœóP4(= ‰Ó„åêñòe£¯—í]:¶ã’,ñ¥# à”¾?ùÆ“ØÞ§ßÀf–¶—¥Mÿ&e½Fb½cFñçãÄE¿H\ôÇ$;~¶çìR¥ÓabÂ/¨tQÕ†ExØä7$Õ•5>W‡ý™ûY4ñpù[R4Q-A½¥-œ £_{í‡töòÝɼ†‘åV•¹VL-VcÓšH°mŒýÏ%Ø̰¿l„í¢3æ:/Ÿ^Ò—:lTªÚªÔ£RˬJ-1*UcUêû‚A)·U©?4*Õ˜¾TétÿØŽj]©­8ui»„S—ó7Âðk.N›GOç!5Ωà;–L/!ãÔK?ǸþjZïHÖ¦¶þ7ZÿõÖ^Ä çÒÚ¨DÐúÜŠ *›žrñÔÅ òp†C61û—éÐñèµ£=œõªµÔYŸS:¿÷¹óÁ—éÕËçƒgéÕYÚɪ?_Ë 0qäÑ4¹s½Á´@Îu?¨š£4Yyf0|ØU•Z¯Káõ"0€Øp¥j¶½âØŠyØègJåFƒj1hÂ?âÑy8bªµ]Ý6yw@=…ò (ñ;8âÏSâkŒ‰ŸxʈøéŽx%#~GüIJü[%†Ä…Gˆ?Æwñ,ų˜«äaZI¯q%G2ªd_IYêø[žZ +ˆVæ‘jçËÕÎ窽ŸVû3ÁXp[ªý˜Ÿ«¶„TR*WRÎU⦕|ܸ’}A£JVó•„x G|%/^k$µf#Êg|*ʯ°1²j/þÈ×ËÉrÅk¥cGÂÀvB™ùâÒ¥É ¿ÆU¥[ã"¾\õ´jôXn=¨QÚ ¡5µ”°®fvâU³ê˜e ez¨§U£ÇrëAzÐ ­©ƒe<³¬QYa–ÑÊ ³‚0õ—¥:ÉêÍÀ€Y3`bõ³e×é˜Í¦Í0ËšdÁ¬‘<8µ¯„1Û ;;¿-Û¬ ú‘,Yk™K–¬‚%3˃ÜzP£´Ašú²`à $k`³{&l 3˜xpzs‘¸vs…¬Ý¯Ð1ûï‡ÙõòÛЉ¾€÷¤pÐ^ü‘E%Šã›ü):¾SÁç…/ÌsÞRœú1>ôÏ)N}O:¥׃>«ý¦4ýaLSp»ÀtÒûŽ‘46{úHù’ÌáôN®ü\ºÒ⟓4YÕºË_¤M“iæÖ i¿ó_li€ïüçž4oòu4n:\- 4ž ½ôÅù@áÅ r:F« “$uŽ((x–ê¬ö”€&LÝPŽ:¨.!¥Åc¤ôMé‹´4M-‘Jã1õí2Rº””Þð)}âOIé2ZúòŸªKËu©ÿ-]FJOÐÒoÑÒt ¿ ¼¤æ\®;Ž¥wÓÒå¤ôÑ?#¥ÏÑÒóhéjZº”–.Õp~+-]Aë"¥>NJ/ ¥O ª9×–>_JJÏ£í>LeNKßÈ82o÷ïÓÒóIé##¤ôRÛ±å´ô>ZšJál¹¦î-í¢ín$¥Å€ºÝmkÍ뾋–^@Û})ÝHKS9]ˆ®5—®BéJZwå\SwßZsÎÿ˜–^Hmm)½–®¤¥j8×–ŽÑÒU´î-Tc´t-=‘¦Ý÷ÒÒ×ÑÒm¤ô çÕæuÿ˜xªêE”óNRzRSº¦Ñ\j_¤¥4`Ý»Iiðzl)-½–vÑÒ.uéé­&E÷ý)zäÓê.ráÓ¦ž^E— øÐÊž'EŸý´ZÓ—iQÚSÏ–©k…‚×SQ}†|îÓêN}ES§¦àÔû¨C¹”Þ÷û¤ô Ž]¿g^š¹£¥´îÏ’ÒÇ5¥—ýž¹’™;z5îÏ‘Ò'5M®ISš¹£Iiá©;Ò”vÓÒTågçi8gîè&êþ˜”~[ÃycšÒÌ-£víX7ª ì¥ÕKË9sG7S‡r )ýÐj'~RSZkÜÌÝB뾕”~øFu»OÓÒ´“ž­4rG·R}ßFJ‡5œŸ¹QmfÚv3w´œÖ½’”~òFµÔ&Ó´›¹£Û¨µÔÒÏh8'M»™;ºZËjRú“šÒÂM楙;ºƒr^GJ?¯áÜEKWÓÒÕšÒ̉TjÇç—ðe<« ¥_$)ãᇹ£;©¥þ%)½”–¦3ì ¯¤)ÍÜÑ âSN¼IJo ¥©º0a^š¸£»hÑï“¢ûhQ¦lá¸yQtG+‰;Ú0EŠ¡E™óÍ‹ž NPÍO4«`.R ÷Qh4Ö9¡šc/Ó¥'?ù^iUŠÏbá”®Ä~³deΰY©úó•Ê:–>7ZËæþ3ÂÔ²à8m×ñ¦à O–N'Ô:®¬%”Ÿ×&ÿên…I.Of‘/3z7cáøŒ0ý&×áøËBùžzúI¨žýé7.²KÂñôY¶ÈqŽás?ÆPô?WÐC’$ „ŸÁ«ó#/Ëé—Iú¬œÆ+Fó¬ÍáûÚ&Jdß‘‹½CÈ,û‰”Æ«ó#r¯NOSÃ9Iíé³§áÆø@#. Ü|j¤ækéH-¹šxuê3e˜ä3.½:õt+_²xd†Ü(>MEwwS}“L`No ž>|!_¢¼ÅÒ9YrfüÙcxó$x;&KN×µ]/çKϹÆ:O³[¯•í89ÖyRÚKuúüÓßD1œ{æ <‘–7c#äïoßGG&@Í£¿}á‡(¼Æñ ˜A}÷Me!}9ÏŠpÁ€áÜWðù[XŽõ´*Çûi‰÷“cŸ|ãyz·y7às‚Ñxþ›hor³‘Ðiµ:½iôÌWq°ùÝÿü¯Ñ3£ÁMÁ“‹GÞ 7.N­T•ÛybêÏJкOBl!7†OÃUÍ/È]ȨðSùÞòý£êÞòîï LÀ„Å#½:Shҙ´n¾n0à gyãÏ‘[‹§å©xÃs|œµP¼ïùÆ$+vÒ°˜:Y¦+vB€O*yB[òÍÛ•ûÓ“dº`5è¯túV2i%hö(ÅžöSÁÿ£,ø¿d‚ß ¾îÛ*ÁO`â°«’,ø.â»N<'wÕçå«£òÕ ´_?xjäE¸"ë)#/‘«oì˜ ;N®~ôàt›=ŠgE {I®å˜ ;N®&<|‰‡¹RIw敹ÍJ©´§Ôz]1¥Ò’œR//g7§Þ¦¶ü6ÞVž$»dÎPÈ„¼E oQÈ[9Fnˆ¾ÄîÓ{Íc;VŽ߯®{v]ôUå7vÜ\.£’iåøV×Xð ‡IvsòxÕcÁ· ðÈè§Am“GP-xò=·±ÛòÐu:¦Vò•ºôlÝ·‰Hý£óG?P>Z~ûhÇíåÓ=l„Y¯Ðö³A:Ú[]<¥rßh‡¯|ú:Ì ÜÁ•àWL [Ά}®å·.WÂ.ëí»” ‚'††‚cñ‹Ý€{«Òñeà'î2ž¼CÚú¥q‡ÕÜKðl$»0&4õêX|UML"å¥1ÉWƃ/Í€)¾äú0ÙD|Dq?=£rø÷èdÞ'$[,ÎÀÕ*rõ6\]GîݾLY{¹)x bÌ£ HBÚÁÑùâXÐÕT^™ºEÞÉÁöRŒ–TO\ mÒýÚßÿ°äk»fŽŽ,›B‡wîfÖ·ÔQléôŒöÆE-Ò»Ù*ŸaæäŽ[d‰#+”8súYmY1õ¢‹-/>ggNþŸ•ŠEÈ{VJÛf–I¡^•Q{*¦ÞfQ9óZe&CÒ#'Ÿ¹Ij¥‚ùŠñ´« ²îmX~rÅÄ}I¯€n ›{P ?#›5O˳°És‚R¸¢]ž{á ÕŸ?öÞ“šB'µ…Nš:!Ï °Ð ÕL 0,D&QÄmm“c 0¹è&õHãº¢Š©Tè癟.áÔj¬+ïasL²9†¤#Éé‡HzPNR>Ç:ß6ð¹„ïñç.tí»—« ÜAѪQén´(mÚiŒéýŽ2 #RÅ#†ŽÎ¸Ø7o6>?ýÝ26Úf¸c9:hºU wæ–W–°ù$çDfj&ß¿TÙ›BÜ+~H ¤ä›.5“ܨø$3-Í ˆ“¿Å|Îa·0°ŒPe*âäÑ¥:_‰_£ÁÀg"ŒÞ òæ=| ‹*ÕT_{•ÈñDUÔ†Ï ò¾‡3Ü$›Zï7dj½iMP7ŒêÓ ¤õVÓ¬'n2Œ$é~#Ý0j̈ŽVõõЦ¼Çs×3 ¼4ÃÌï7Ðü:—¢2Jùa½A§Ú£†kE¿¶D¥×שTœ§µ×ñ ”ûút+Pÿz³ªÎß%‚x’¯ó1¥‡X®¬ÝwƒÒGø•5õ¹I—ÚšÇN\þ!1M·ÓP¬ç¿q¤9W¿üŸ(cƒXk<ø2d·ÿŒNO(ŸpŠD|”(¹[H®Æ#—÷<Ò%ïí./¡+•ÛÂN76‰ú˜¶Ÿ#Ðsúq»c·àóÛ?FT}N¥jöàË4ùëlòAhKÏ/#ñ´FþÉZaðò(­lrI7­ãÕ¸1)u{âѪÉ/~Ÿ`úzù±ˆ¥“ÿ¹ë޲Êî“d&a$8`,ˆ³ˆeS…šèf† n±³ H«h(hGdÏÉìQ 8‰2 ¬@ "béŠ-êjÑŒ€-¬h»ÛP39ñ˜¶ß8ÙmÐ Ñ Lß½÷ýû¾ù&‘zŽÛs4|ß{÷ýÞ}÷Ýwß{÷{ïÎÎÔ·ãR:ó½!dzÆqvàîKÜË ¾¯°ËF«Œ6Y“ð–ùâHÞ½pªûMy¡‰Ÿ¤ïÀtëi)n{Ę˜aTÃkN½ñÚ9ØÁ¶øÃñtqê?¤ó¿/5Á%'¶ù,Àó&=± ‰Ç>{à6P™›KLWì"VÙÊWæayºdÑÒñLy‹ð8ã'#Õ{< B$´qmzá¥zþö‘r®ä)5–ïGM¦uÝ llÓ?‹½]†t%bÿy(Ô)eøX9Ý (cíhnEW}®–‡¶3z×°] ½û6Mu(kÓ"kÒÉR¹L| d°½,ĺE…'±º©¦0Ãz×~éϨyÈm»ÙQö¹×ҵÜG‡ÙH—¹ëƒíp¤×“LÂyù`oŒ)Б^/[Ω³è5=¥8ô{¸C&™‡+V·‹‚ “̤X ª³0‘V¨Ã‘úU?ò1ò™|"…Wš(á)QgÊwß½iñîÅùË{+¡ÐVßãSÊg©”OÐi%¼£• ŠDÖ b´O©ŒLüàb‡Ä\ƒkÌCY€{»´!…]m~ZÀU»'ö6³1"ÓÇz‡ß|¨­/NóK9t°÷‰óòb$¿ö`²o«}xBûQûÎñóâƒ\šh”ÞÄP¨±FüEÇ{à/¶(Öxœ\‹ `oH X`"ê=˜4.‡ñÀî`z`Éæï+ÝÀ„3 2b‡âÁñ1CÞôG»{‘™«Hc×OçUúé¸õwÐ-Ü/W«>Àœf„«™xÍZ±šºÖÈDHžîš8Ì~rZ(‡Òäì|g”О~K ¶y¼ ?’>ír.²Š”E|m7/’ºß‰¾è7ëô>AÿçÑY~öìŠ\b)ÈÖã{!=5!:«óÇdäCz}°Ÿuÿ‡ÐCg<Ül߉íK´3|³ m0ïÍrãC±ŽŠ3ˇI0c… â‚)ÞpþtÍõ²§›ò™|¡óet+êZ+g‘e©ºXÅÙ‹,&ŠP‘›ß¢ER—½‘ï5×¶ »¦yYA@3Çþ›Lm½¦€²Ì¹x¢D(î:Êr>Évœr€sùa. qÇ`†Òáz0®öú¥¹ö³ôùe!Ÿ‹™xSïg”ó$7Ñ;·™î~Û=‚s¨à*·®>ÝFLf``øûËBáVeÅÿ¦E³âcò«ü©:êþåi.I†®.gí}ïÒï-ûq¾×šsça)M”Š'xˆ'º‰ò™7 Û °ùÚa™U1eU0é‡[á ‹c?#Jª\ܬÈ'RìØK†©Þš—¯8¡àe"¯yæa‹6 œ%‘ÊaOfj¸µÌA]ù`¸U#0±Lua Ö®p‰_Kžò÷`þ´º¨rÅ{™L‡+~œO¤áBAK©Î£P* UhÓÓØ,|O6•ä;—· Q‰ˆ3÷Æai9)@ÁóS%d)yÿIž3 p]•×ÒCNåUôWy=x+ýô0¢r=ø˜Jú•‰ ÓHK^‹ÖŠyïJ±ØøÝã²Zj÷Ÿà„°¤SÇt@Ê…šÂ†Ë@ Þ)/ܦ·ËsùÑž™|ë­ê†áu/Û’¶Íy×µìß75c´ª (Êâ‘îxU·Ü=æ»${l“ß%Ù3€=Ÿ‘˜sî„A8s€ü?ÈO°s>Bèòo…ÏÛºèÅ—¡~ŽÌD§Î7ç½KðÞýÇâ}e[p+q¶΋¼Œ¼6PJ¤lCF¶Ò—Åcµµio[µmÑo‚¶Ý_¸•4iË«jPoGó"ê-/¸I¬`Ft“HmЛ>›~f4ýÜŽúà&pÖØ’í.Ü¿meO³ñ+™jC.\‡P ÈM•j•6èQ2Tj|Á;MqÖª˜{DlÁ7V‘jEüÔ/£GV ‰AdµMðŸê‘­rS3äÚ¾õÊ@ yŽ1„æœØ[p¢‰¼L-´$}ÞŠ³ß0K JÍhK/µ¥Ú²üvƒÛ@`.É‹Á‘ð½ómŠ_…)¥ˆ âÕ—y,§þD°?á)²,À刿C–X¤Nk2Õ¢'QÐ%ƒ')ë nÙþ_¹,$.EL%ãcTÕSç»ÓG˜íïïªZxp©‰öw õnIÕ »s@»~¬ŽÜÔµ¨A³ªššð¡4™ú/1©ÛÐÐ“Ž˜æµTÍ%CÖeP¼¢,uq >T>[ X¸ù;ÅÍžýVn¢=ÅèPñä&–´#`;ø«Éáü¶Ð 3‚.a¼ºÀ Ki8ˆ)ì™ >}Ôk›8Tm¿Fm« Ìf…Õ[45éÓ¥çÓ¥gô˜ùÞAr{ÏZø*»ÜÕæ34ú0z¤BD‰‰ö”R{)A<èO{;¼‰%Ç@³÷~o”wR4ú$|S”ÙÏníÕäFí•£¥À66 2FK!AFXÙyéUît‰Yðd:†u~œ¸k2"¨¹P™éAjR\n+p€`( 1î¶¼(‚¸%Š0rÖ}”WÏØ&6¼håÀ1È…•‰1ÑýR×(>Ф鬸%+EÜÈ!¸1ˆ›¯öÙ¹qžáÄ17†•›ŸïSÜŒ6©xChÝ‹ÎGäϾŽx»þ¼Øp!¦ýä G¤\!âà¬7:¼š¢ðh|,´Å'‡!)O6tžœȆDöR²OÍ¢ÂÎä©e”š0¢‡¯L±ÄÒ‹U€@ª‚ó¨À€:c2ˆ` ƒ7LP Édª¤H¯BVô³53\É]K3DMO-X’÷¬´¥ÈÍN°:¶°6¬5(¶¨­yÐ-ù Ý_¶°Ú2Y­Æ]g²#b&–ì‚QD%ÚÔID2¥W¤Í¸DÔ®5Ô^#;Õ…”Ïhöj‹-”û{(Á`³ci½Ä鎉†Ûbe°UÙ±¼²“ƒØl_V›Í¦lý¬ÍŒ^eøúc 2·€>®)*²¨•Üq‡èÃTk9Ã^.s å ­œ6ŸŠI“?9ArÁ ðDN¡È!»Ë6Ü9 È6m³tÆ”<Èlɇ"ÛCæMiõ¥ÄÀ”¹tiùÔïÕ€…Ù8Ì~~ž/ÑäÜpØëLâËsQæ¦\æ•Ø¶æbôÙ¿æm¤—2f 0( ,…šV'6'°ºç‡?½q÷õ3Üëæâš‚ÀðÂ#Œ°Y?¾N®z­ùîK­8Áž˜›‚}¥£ï^÷¢ä|j6°D¨¾°'§ð§ÚüTÒg :0HøS=ò¬¨­\Œ„šÏXfu,x,¶ð¸¦ñ"b­j -’Ûc ;ì‹Ü•™!ÿðûŸs¯V©Æm‰1†=æD›òâçÝ#à̀ά-x$aKȘK¶Y¡1$WW¾ŒÕ•϶ºR†¨¦ª¯p²ËÅvèåhKþÞ4žÍè…ÈËsñò‡÷#P3[ãåBùfâˆqJ¥ôýÄ—H7DúD°¹c~s"¸¿cþ~–<Ð1œKºAö_»’NK踻T¢Ìæ ¢z6Ãé&}Xí‡ÃrúXR¾ ²¼‹{ðSßXáI…z'VxÒ©ÂÙhEµ }ö }΂ªñ ÙH‰ºr“ÿÖ¢ª£‚bô,ˆºƒg5~4~Žv¬Ï‰xWÍ.íÐ ïB¯//è­. T‰ÇüÊ‹Äãwé¼ ¨ÕoEšKQ^«( åHfcuðÝ C•q'ùÂÞt:ö6tÕû]ñœ{˜%¸~Ö➺ֈě¢ð¾W‰A~{ëöí«U¨ÐµÑµ!9"“±§¾.Ìòò‚½G™lð™Ù¶ùÛgq¬@½=êkÌgðïë–¢©Ç‘_±êùÕ·,¦51Õ>;„˜f ©•×aDRN2¿¿‡¦šþ»+³ÉròвL> î+gqN¦» ¢}¼ÿî°† Þw”xcwnMÄGÎ «ø‡EÊš+™(™è2 ™(™(™H™JO÷›Ó÷8²‰óJstV7‘ä¦&°EHìPž–€Öãø)–ˬóQTš ‘8ŠÆ }¸œY3÷þ½Ú:™MÁ[jz2Ò•†ü Ø…Hÿ_ãoä×vk«Œ!s n]%?‚_!Ì2_m,Ø­êvEhâ /ë“_¢ÛŸæçüxòa?°2^ÄfºÃpÇ\íù¯§Å¹‡ë¡ª‡Ö¦§Õf­Ûœº[CÆ­Áå~GÀƬ€3,€‰§í€¿¾˜Ž!¹å!– ˆø9Q­Û¢T€ndÐ!sº¨¯’Ç¢6ü9œ$ü`ž"ÜŽ„>!\(Gÿ³"| ?Ù%G !FÅY¥¨v"U‹ n·§nRT»‘j» #îLRT{‘êAI•TË-\=4ó%Íh¤¡`ã)`€"þ{$ØGPç¯Èç ÆKé6îâÒݨK—™Š;(#V·êaÝ ø ¾ÛŽ»F .Ìó_íç3QNåÅ”¥\BՋʾØ_,‹—9Âdþ";|Àþ:üu²øÇO9Á«êÏžµÁ[àÙ`;©:¸m¿Ã kg ée}1=x kßÍ©žÂ-1·xqWþ 9*_¼(¬=æ•/ëGÓCAaí+ÌÄ$“2kyaíÍlü'ÿÝ #×_è§u¹×å~m]îÇu¹ß²ŸïWe Œ«—œÖ²<ݰ#°ô%þèaú(ã—ô‰®#Ði—þ¼'ùÞä}Ÿ‡%BÆ^âÀ©äLǒżNܼ¢®ÆPWø|ª‹P;Ð¥¦vØ#þx•?ÚæEdÚ‘w¤#íf lÊ/3Gu¦ ­Ãb‹ÜÉÃaOûÍ$ñG¢D—øu¡æŠü® ~Q$±xô&ò:O‹¤[' f€0ÁÅlƒœÙ£™Èû·;! dÃÂcvä«3‘Ù‘uÍà‚öÓmÖnῸâϤlµSž”]l‚ o°ÑÃÎÔ¼=~ë·ˆä2Ï×ïp*˜àÇp™Í ‹Ì FµÖ‡’bSw™¼Í¦ÃÙZt°Ñ.+Ð+΢l2Ü!Iµ-}uÙÇ—7Ó¨Ø[žI¡šQÑ8„UÐ'uÈÄr<'ïç¿®s¬OÿuQ[I¯”ÁíZ,ˆåGœŠw´@1‘ز5ÓZh*ïÍÆKÝ6‚í‰.ˆ Ÿà"¤qqÃÖA‡Ç¯?á À;·A6=ØŒa™¹rl\óã²qåÔ8}Öqäa:—GK¹Ö¬Š'¬ÍÒF²#Zr°š”ZåÛaOjƒ¯ØÞ^’Ú¨œÙ¢egZ™"ÁàFÙ ÏI,•1xÚ1]U3ð þy¥}è)¯Ã›ðt ›¶wÌoWÂêøE†°Ø|8ˆ~àTGÓ W!V)@LlR3‡´¶•ëÎ2Yo@ùÄu+ü궺Z¾ãÓ ÜO¬õ$ãqÜ,lȶ øÃ}°«Á¾ ØL€jÁè“ Âý ú‚ÑöÓ6ô¡E[`çu⎠^ Þ¥¯ÂŠçøË7àKÄ9ýt»JâCãÞR‰‡¿ã ÅÂ-Ù¤øêf]Š·m±K±ÜmÛ*J.WlɲUüÓ-|õ’¥´á¶‹:ÞË¿ ¬ÇoÍqìñe›³ñšoáõ…Ív^›ò²öøÁÍÒãÆæ¡züþÍÔãoÕÑã†ÆÓ{üzK×£HÓ®ä“Î{s£>›H_Û¤‹tq½]¤óx¨`ùÉò}õœåz[÷¸)ˆ”>¹¤#ì¿cáú<ø)’_’3Bæ¢öµBa˜ùÀ¸C™›ZE/Œ\w†^˜µê–y*.š9#޳XÝCçñnmðŽç} ÜFLG8q¯)Ò®Ôõ˜Ìžª³ƒr‘ÝRæ¦+§ˆâÐ+«ãÙz%×{åPÜÞ+¯8;ï®–€%6À÷7ê€ÚSw; }´1ZíŠ ´KêÑ´3},ú €ð>ÆñI¿¥ŒÎ}9V¿æD~ÍB¥Éå>Ø+óÙÅçɳ‰ôDLçùšª¡H |. ƒÊ-ð®H ÇÙã Õˆe«îNKu®ŒêvŽà73ýë–ÿUm«n&î­Ió*=<Þ<÷>’–wEg=x%á œÕ¿I•“e0’+Õ"1Inj,Þ£8#›õØdòÿ­»¢m_Ÿ½@wE½cI«»"„k·¸v 官™˜Í]ñácœ²ä,¹+pã5ı6»»¢fÛX¡jÜ#td.Ó‘5BG†û:R­tdÙ£¤#ß®?¥þÑ ßÄZ{ÀÁŸ"Ub¯Çõ™ÈŽÈ 5G"š7@"ŸªË@fGÄŸòTUo²ûSVÙ)‡ð§”Ùè‡ô§üOžÐÈeB#g3¼-‡k¤ç`µ¾ùA”4r¨Ì8„¾®ÃçÏjmV ›ÈODí™ÝáS“+¤½THû‡LÚ+Äøöµ¤}åÐÒƒ[‰òÑG4QÚÝMYíã7t7~d«®»›V!•wSéYÝ òl w7­âî¦ð9z®x„{DšGäæ ³¹›¬¼Œ­‘™Š âb/ØR¡qq¬fPë1äM5*˜Õà´j®Î¶º¹Z_õVÛ×Cñ\¾ò ¬ñ ¹Š‹ßC]W*£ft)ül½Ž½5ûZþ[=Ü ¡°¤¯¥%½'yÚy7ú›õÙš´ÆRíeÕྣF¨ÂRFÀß![uèmYk?·N¯}÷z{í7æ8­goí”ëYm_r¨¦mÖ:ñ#†*©°®†ŽˆÐ%Žð3 ?…üüÒ¥óCàbã÷àz¾ªÄ=ì¬jqT­¶g©r½H}#ÿ¾ºÅì®"*ÊRô"¹='aøÞäÜ9ܯ»ëì;O|²ÅSz¢ŽÀ/¤ìieMŽûRsðªêYÚ·¬XÇ÷-}Ѫ>ucöY)¤ò*^Ïòßq±x úHUÀGØ‘úÌ@&ÛA–b“g†Â­<32S?ŠV•D.·¹ú‰¨s-]f;†g¿µ–WÀ¸çIûÖòN˜&. à£W<â¿áeœzRS$RžtŸP¬걈0šy9FU±+2/üóŒïpæ/Æ+Ö_R¢OÀ/ˆ¶–pÌ“=v5§î\ƒØHRª¨ê‘nâ^Ô ”)ªbõHB àÖ®áÜwU^]ù…Ee4]œfñ%æ¯()HIütWóœ)Šx/O*ZÃõ¥òwÚP…4Y§`Lµ`^åt¸™‡Y8 ð¡6ê®1¼ðÌRø Ž|p5_¤sZÍÓ„-õ¥Wy3½Ù2Ó•9>ö¿7ü&¯ã¯WsqK¶yä/>ðÃ'9e qS4lhŽÁc¥®]œª`µ® Ä3gˆÈ¯‰èö\%¢É°¢â"ò;‰(âI6ðÐYAIÐ9e¡ð_ò k©B`¯°î4ú éW’ëàç‚Ù?+á›l0˜‘7”ŽüE:2')OGJÍ[_“âÁ2(”P(¼”W4îa©Õ<ÉKIéȾt¤9ÙšŽ4¤_] ‡p_­œ®ë!„NG~•ŽìOGšÒ‘éHm:Rîâÿ—¼§ªHrfÈ„ˆÑ × £„3œaržJüy·ì‰lð¿Üìr*X%ÁM8#?™qg˜ƒ‚!„QÃßEpDv•¢Ë­Qsd‚#¾1¨QQAÜëêî×ýúõ{3‰èß}»ÂP]]]]]]UÝýºšbl뫈ôU4õU4öUT÷UKÇ1Fýl}†S¥ ͦ;=ŸÐìße¼ÔË>!Ûc—¤ËIóïgkŽ ƺÐЕTd.7#`ÉÂÂðÙúJÒFIe…iV…º’^NÚØ|?SÒL³’f•ÜD0Ã÷•ôQðšÑ&å¿¿Ÿ(†f•ÏíÅI2 K¢ãWÕw|‡á—ÞÏÌýT Ia¦^¨éMÉ|=qŸ¨öXç•qšÒ¯Á{ö¤©n©ô­DG­êÏèºx]„Î ¢r 4PÞñäeáBg*Y'ŒÓ~±t¾«5 »ee: ÉÜ@Šx—¤ñÓú…­ô&Òåw*`xãw J¦E?™þýéß×å¸U®dúWü“éßG¤?#ý[ãL¦S~2ýsžÀý»â¸¯:ÈbÁ®‹ýäëÇèÇ9¤3ïEýȧÖ<¾ú6ŽÔuL¸×h%%i¦ýš@>½&ðiw´›M§NO°ª2Ï™±øe2ä»Ú¡™œsÇ9Ë{îøR²¹±JºH•q~®‹¬›KÒL%fÖNÜ@ñL=†E@ÊLQІx}ŸqIc¯—4=÷èQ”‰m‹x®ßþ ݹ€nØNblt6ÓWÑÞWÑFN¬éºfá=‰BFº®)¾Çhõ<°ÿ@Lä$ø8âN]™Ð/’¬ gظ‘&qB·){A<ÏÓcÏt=Û ô&MïÍ'Û˜:g U 8Ÿ&×<¬Ó; ú­pýó0º0‡ÒBôKM÷Y+g¾D¶ çs~Öƒ¯J5îRгups ]?ºræìÀ÷hvÐûBpò[¢gaæs¹ãw ‚,Ê'`CH†t ÈÅð”d—£b¨†â¨8U£Üið~YW(Є\ÌŸÑŸŽ9©ß¬dÿt 5öº¡<´Á¹¬i=öO—^c-­q!V:Bz@¬§õØ?]þÙþ¹+´¬ u ý+±P`)À—R8ú ÒA¸èHJ† %R ȵ¹ˆhT¼šÂ«H-©¦D>…kšZ7ƒ€¤ÈAJÄp?…ûHˆø)‘µ@„eR&o¨eïëÛ«tÁýϽJŒäaØ«tÀ'nû^FixL•rõJpR€ëáì ¤*ù‡´v>WÛÃj{øÚ\oH;Ž>åàÈ ‡ú^ ÚÜÅi³«ìVÙ-¼{·h:53œê53´©,%‡²clŸ¡-lÕchËuëV2÷Ø+ÝÚÌ»m†’úí†ú´â³2®~Éã{"U•Ý£*€ÁÆ`¼„c°~:I ٣㻎£¢LÑëÓÜÕï룛î¸ÍwŸ¥n™Ž@+_မ5fn|V·š¤î‹[0¿“£8Á2›(0Ò©D;•¶4öƒÒøÕv‘êFª¸ñ ØT[ÌT›yª_2 OØ:Mg‹£zd3£±£Ši¬¤TSŒ@™µGÑ~ÐJxÎuÈç 8—Ôtæ¡Ñ™.|Áº ]°~ n^Ç0$† «Ò!R®]Ï(1í¿Ž@tž;>•žèÜ}þ /Ò&9ûAСÆsë1ò6ÈN5¦£æª_0u/O]¡£vè¨yêK/0åÉEÍdEˆ”›–‡`)ÖHa¹j/QÿÉuJ3žü€\Ü©4š¡YJÍð£ÕŸFƒÊÝ]ž©Sd5¯×è0Mæ@£Í0Šô–(Ƶx¢Ý{‚N´ÛNЉv>­(‰²¹zÍTn®ö¢ £ˆtõ›8}×&¡zû&NUÑ;) OSTëU¢Ï+ËÀ\ßËʵ?Дc^Hiù6à ŒÐ—&Bo ùš(ºGš½.ä«×#ÔÀD: Am‚ƦFàÁDÃ’¼& ŠVÖb.›e¦!ª” ÊtÓ0¸z|Ç)†J”§K¶1MÔ™¥~¼3v}^uÈDoÚ´b@ü»óÑDã ¸;¾>/N—ÛpuótQ'oFÿïT‚Q¼;!ªíEͨžÿ2c)ZœÓ jßé½’§ã Û¦ZMšN¶=NOñaø ‹“0Ìc6Ña6Ïu6Ø7ÓÁ>=Ñ`lN<Øß=x°÷SÆy\I-þIdÀ®Á¼š¤Ä0l„Ó`Ô„×ÌÖ­çW‚3â<´>¡mn1~Lª_BÓ›IâCp*ûŽa¼lö<·Aø\Ë…¹ÀG­S ˆjE?›oC¶£õ+òF X© ù–âð§]¶ /„úþ÷ú »ºŸø«³ÿf~×Fƒaf¨<b‚•ŸkEìçÉ2ò—ã8965hnåe™ó§&šó5%žó§˜pÌsþÃ5æ9ïÞ$DJÑ5B¤ôÌ!RjÀ€øÛg£TF»õÇÅ!¦]Õ,Ä´‹)€Æ´•ÀÅ´Ÿ­·ŠœôÛy„Öj…æåÐ<êVh_9H j RÇÈãS/ÊJ% [×ÓÁKsXŶ®žaŒ¥I8ìéù¹œ Í"½Ìo1ÓoŸ†iøja˜ÒV Ãô Î÷Ï®gÞ¶0x£%ïT[ƒ÷âS‰ Þ²§ØÀ÷Ϧí_+¿ÊK-LçkÜTݸ½.5n™ÛUÉD‚±ø¸ÙBm?põ߸­´"ö˜ëd·âuölž±¥dhÒM‘aOéû-r>1Eï~’ì½Ó –®±lƒeét×9½âØ>WéËðë÷)‰ìñʆÄöxŽ Çl} æ‰^±QƒM?óÿCÀ}É‹ÇÅg¥ƒÍæjâàþ‡NsŸ´ZåME-Ä´:ÂJnáÃTC É´eÙBM2Ôƒúz“µ±©†™– 5 ŽýÔh×jvŽ [øŒqÚŒßE·Ôk÷í—!\À­väHþj·A]¦IV°Bœ@1Ó$Ë4át˜&Yïró$óPËU+‰Ì\=×Àש¿]»\ð·uËûG ˆoŠ"¹˜qíÔ·™ª*Ûé a¥Ÿäíü$o·]0µó“ºŸŒÉÖ˶¬'[hµ“…–Á¬"A=°ŽšÔòqB¡Wý+¼P(ÌV¯g…§Ã@š¶{< N“Â1Q^7ˆìþy¸Ó7WqÃ.¸‹Í«lÜÅ×Öî¢q-sßÑ0Å¡¿O]UÙ†FrkìŠñ#ÙÆd›Ù\·Y›Ù6~dÛøj3›ë¤èdÛÓIè溘k£ö6"äŠö¤u¶þ+$R¡†­¶ÖÕš †¨§õ_5£Ë~Ÿ¨«tLw?­k][lh2Ìnºzîˆàó¡?ŠD Ÿ&¹)ÁgR×3"³@³ÜN±ÑÜšóòi?‰Ò" ÂEÑ«¾]O½:¢Wõ6ë¿qjŸøÓääðô£ô@cõôúèc­oˆg ¶Û_±œ®ÄíëwRí¶¯ï õ¬·HÂymýX È%XTâæôMF„Íé'Üœv¤ž¬ðyø*qo€kæq7ëçny?±Òü²^tI5þ`=w2ׯUÊ´fc—$ChMtÊ›Úh¶ä‹`1­•Õ™ò,›fµüÛ•B[h×=ô¦›á´haº±¦o:N–ÓË¡y/Å5£yOW/¬I¼ã2Ø„cÞqù š˜.;e·027-³Îµ'íL8õORéÏí4¤:Qç=êÁp"!fÒüC†ÕòÉ zÒcVtùì4,Ÿgèm“åó¿rFÇa@¼Ò%|Ëñù2ûmÆítßÎå0~ZŠ¾Ô®èJú¸’®Hº,7³ä+ürftqQºBéK˜0&/êUG.‘Dì3aˆ"§»(b¶Ž˜­^GÃýb»°@9¸œ­\kÑè‘@i†ëÃ褫ÿ$7¬ ™YžY+aù…%f–7ÕJX^L¢ˆZ| ãY¨ŸÖ¶Kì–oѧªi4‡½ÆNâïœã/õ`ÈCŠ|4(ô@ ønPÐÀÀß_p(B¿¨C GaЬZJ{ˆ:’Y‡®„ÒŒ¾á<¬° =¬@Ÿ“ †|Õa@ /߇r£¡Ã…p  “‚?«J¯Q‚Eêæjâ"É'Üéønw_–I^–A_j«,q“;:•ŽN÷þ€â#¢Ê\5¸U.J¦IryìÇøï^°ø%-Ç—Ôê¶ÑP±¼¾¹Äò“\qôiwùD&V etÏ~_Ô DËGY4OˆŸ‚+áT^ÃIØf8a|raÆcdØÒ)äp˜ˆ¬Í,é §mÇ’,Œ¦ôMô+9ô¼Œy žõM“@†¿þûŽMùä„B|ü *DówþDˆX";$pƒôðd ètA :ú£¼â=~¸WѺÓ;rH‚èÓ€ìgK™è1dÎ"kÑ·Ú«ÚŽšˆ¾ünƒØ“ÙÔ¿%”îJ­ßBf£ñÃ+TA ‘.·r*8‹£œp&Q`¾7NÃ7Îsñ_˜XçbºQAîìRáOƒ¡Oƒç»àÕ QäN€tcH7‚ŒÓ {•C±Dq¯¢ÆjP èKúîXMüì\YeREÊgH‚TF‘Š)RCÊ"H³©4J ³ƒ¼¹RZ™;_s¤#6µÕ¬ê®ži‘`Š¯×ˆ¤…Öcµ. ^ÂKpÏBð¡d•š(!OG¬’4®¢®¢ ¹24sY²\a}¸ÁÈU4äÛA¹Zì \E _Év}2‘¥Û¥‰îoHé ùº5q…}9Ø¢…•ܰ/¾X—ö]Fµ+û®ÆªV þñ…•qaßøÒò=Vz‘ƒx#ñyü00 ð¶~¦ Æ>´ìn€ÀˆÊRÈ90BË< ¯‰Ò' ÚÁïŸá8?ŽF"IáÑ…¿Ô¾…LTºÎ]=oÅ@«^LáÚˆ¤ÏÆz‚ROÑ›5”ÿzEÅ’…BÆúäƒF Öå[Õ<_ƒ«ò£žå$ϱ¦«sI¸•ÙØ*"¿‹ÀÆfäRå—´J«2Ãb Mæ)ƒŒF`(‹è÷rif=êQ’Âl¥‡RËT?$°€G€GÝI«¤±*Ï-$ ¤Ù2g¿áHWgSjÖ;)©ZåÈ ½Ê¥”#'J`Ï"¦<º~ënU€ i[9x&…kš¶šÂu pàÉßô)äŠ_¥Åxé*òw¦Æ‹¾KWçøùÈ¿ªòðš§ŽoN¬™Ø¾J­|û! 9„ k°ÿÇA‚¼h½Ï(‡´ÿÔ@tŽ;>Í…Öé{•^r‡‡òüeY¯y4·n(Ù´ÓâLÍÙ Åšˆ6WM0~[SìgñN«C‹Õ*ù˜Š¡íÐìù”ß#ydT.iw¼Š#Æ:+(P>:óÐͰOyÈ=‘cOÔÉI÷{s±ÑHWËæšÅT·Øχåe!†Ç?¦Ý¡ œ+tŽõ¢ö‚‚ÎúÄx¼øçðZäx´¾¸L}iš#ïKµ ŽûRŽá=#µ¡*×/Åúy üìE?/‡h¡Ûï8:\ú½)w>l3œj$¿¯®æÓÕ¿, ñ#àu…µQ«“©>Fa­*µ™…÷8cpW^Xl†ÅV/Xâ¼$%ŒBÝ)ȵèfl[±Ñ"¦Aüæ~ª«àí«)š‘€ˆñ>¸ZÕF"iY¯ÁaKy¶êØëþSH¢×Ö]”A]ûµ¡×óÑÖº¶ÄÉ4“Õ¶»DklßQM×ñ×#FI,$“¾/‰fz¤#J~‘Ý"qƚؔpM9þæ+ÇK1rÜÁ8ŽXsÜ"㸥_'–3åX1rìµæ8šãˆ™ãHRKx³»úèaÇ3 @·+#ðè-dMÚÙe«,®ž»-ŒœßätBë…úÁ—~·ºŒüâPÜŽ_‰ªôŸ_‰FŒ•kÄ#¿CúͯDQ€_Kgl¥ÁgúPõ…ßß8)¿ExµC§sV6 Â9ä+áªO4ùlžüÛ£€|±ßÂâ&¶kÐBd\£ës¸F &¯[XÈah´%éF¯àçJ‡‘ƒùÀ;J3˜ªfø?ÂØóío9Ÿk:i?‰ù4Þ•ô| Ël«€ŸY]€IaË}[œv~€-×Tز¦nrÚ…úò¦’À–5Õ尠ͪ"‘™dŸáôGhÌÜIÑ|É©å[#­Ì—;Þ4@v)…iꫜnZý.›ãÿŒ‘Vö‘òo½N¶)Çÿ+'æÕŽÿ[²Ñ¦ö€¦$8n¿¦Àb¿Flßþ[#Pûš§mÕy|ÿ¡ýM^ì íK7¡LýçÛë<;ùÿPSÒ|ßùIJïE'±ýÌËÉkõ¹|ÔÜ<“D´Í,j^Ja,jžOau,¾›ÂjYÔ\LaA]ßHaóÙW¦FYnuó_™ [•úîL›ƒ$þ¡@­,X'beX~k¾,‚ùwûEÎvÃ_¦±LÓ =iG<ê¥=«n‚äú±‘‡r7iÁ¿Yï[–oÚP¶ê?`l¡Oo㣽t¡ÛlÕÊ·«0ÏòÍàéÓò’_'±&—ƒÔ/0NQþ¦ø¼s(§éo4‡}ä[evó†#¹ÊREz$ÉÊRý*¶Ö/Éž•yi¤ÛϤ‚ÿħŸM¥ò¿©VÊ~A­ÞNÙÂG(µ13MKö㈼9¦4Êôe–UŠeû¿v’2¨]ŒIt‡;~Ñ€™œO>l=ù|ì}É`era˜4ñ²]6~Ö£Š6mJ9^Ð-Æøñ³ˆå–XõnÝrïHÊr7$a¹ñ½Œf[ìiZ¡l¯Ïz7I=°OÐß3ν©˜i¥‘¾$¶ŸÍÓ‡ º:”ks*j³ágÿGMñ´NÆ)Êg?|&åôU;NŸ²æÔ%0¥¶cþ=:³<Æ:ƒ2ëÄ/Ð;²îŒ«§ÔRæ&M·,WFÄÒ`Ž%t§3¾4“²t0I)I§ØÚ$+Kg^©¥&‰ýuÚ4ÙœµW°qMÃhúcãÊ­æ¦èÕ¬9”:8Ýþ½Çø„»æÇÏÀ|öÃ*ôWŽí¬BðŒ“fÿ%ÖÞN"j©ÈËqH]Ð(Üo¶ÿ³|û/—³eÜN$¡:JI)=(T–;ù\Jèå¸@C|óŸÙÝÙÕŽÖ+YJœ¾s¢ÕîìofþßóŸÝÙÕ…çäÞŠ¤¾6[;HÅ ÆdÐŽÆ ‘®·¢©gÉ$3˜¦Íü+¨FÈÍ¿ˆJÇrاš•|äT”†räàô‚©PûS!lßä!Œ7òëY^œ<{ᩨõØL™•”iRõ4Gö½%ïL…È{M¹b"q.m1æ²*R¢Tïü<Šº>»–:©k.e¡ÉÅ×6ù¼Æ2k^YMÝË3´Ô ÆZz ÙiG³Ø”Ozà(ꮕ¨ MaBѨjþÆ~i›¦ó¸Æ(…·WÛÔó¸„ÇÇoqâÉÉdº¬åêRNÙÞ|=j<Ú™-3“,ÉFY¾>j(Ä8UÄõCof™ž!'šÞW”e”Ï Å9t2Šä¹ ÉGã¹ÞÀÈ_ çòx ÁrIŠ‘÷}p‚Ú‹+ŒÈ´£)ñÐzä„6q¡?r…Ò•;É?Ïî$wNœ‡7- V¥‰—“oAœE¾{±ÿÞ"=»fÖrÔg"Ù !¸ÕÐ åe´ùI[UûбŸ2.¥'V¤7>|ºIõl<§ù¡ª€¼ñáJò´¨m¢,²~Ž|‡]ymÑÄÓðHäÄÓn²m'ÛV²]G¶UdÛC¶»È¶‰lÈvÙ–‘íÍdÛI¶õd[K¶Åd TDÞ~‰°$s²4R¬å¤(R å¤8b§ô­˜ðNxÈÞ0¹6sxq–M¬"»Ân Ù}v“ÝïÃî•d÷)ØÍ‘ž?s“—”ž£-[ë̹¦µøàpþ-Î\—›!º¢‹²Äæè¢lqmtѱ(ºè*0?mÑÕØ¿2;ÏÂï››°ŒÁ©ƒwœMgâm6Ï´#kïnë!ç\jî'àwdN×§vmª"håê‹æê‹¾­"=ªL_T¥/ªÕ´…e,/ó¥o@pž‘µg#ª8ÀtSÐQIAD½c$˜Ùf²’•ý£²âÜè¢ÚKV’g‰$ó¨udNÀ»*$ó?«•é.æ =ÌÜLÒLÒû4’ž9“¼Hz¡Ù¶Çý™J­¨W¥s¼Ã1tœR·8%”¦âˆqJE“ˆSj‹+αyv=+™Ée¥FÏʈž•S¬ÔèY‘Yiž¡g%‹Ëʈ)VFR«#VmzV²“ËJ2µbd`Ïd[¤€þü9è¶YSõ)S,‡5Äp¢Ú +,¿”eÖ§fÅ”!†Õ^X1ÄÏ3Íú”©ðNÔMjň•ë8¬ð}*aV’©#ëɈò©ÙSô©°¹0¢7İ^{aN1¥½0'"*,ïæ°Âõ©ÄYÑk/Ì î¦´æDDÅ¿g5éSasC®Þ“ª#VÞM3éS‰³’L­XnZ”OÍ„‰‡Í.ÒÌ:Úµè£õZÎËC™õ<ƒÌº²åf²[»ud·åÛM,ßneùv;Ë·oÖäÛÇÈe`,ä2¼M¯ÁÛLq)Þf‰Wám†8o³ÅËð6MÌÁ[«˜…·–Ò‚;“ öÐL’¿ÃÂñ+!Ûmá‘KrbG— 9#Ãeú™Ó5ØþŠNÅrDÚvÞÚˆÌÀ'J.¢ÒÇŠ2C³M:­T4 õæœ6 ÔßÂæè5w­HH›hn&ÑO[RW6½Ðã×–T4I¼•Š&á,–òû«¶ôŸ9m%L}XO='Ä2êŸãŒùzmcåHH[ OH9üš³NN𯸅7„Smý yÔóÆvS¾%Ù‡YmÉÃÁ/?×d4È ±|‹ðU,¯“"<‰±c·_%Exn §˜NŠ™érÙ¤ë/™’5Œf VU†® »¶ÁªUÞñnÎ`Õ±T8†NÉx ÚH/Ê@§ÙÈlÎ×Í%ùSŠmçˆõl\ÈÁj&‚ê˜"¨ÓŠ`SrEÀ µ©AÍ®ª˜ÖÆA½V›ù1¤6Áñ™7kM‰¬+<"KåkCoªX­‘W~PV7òFÞØ6b&Þð2SŠÌm”Ó¶ùŒÁÕ† nJ5ƒ–Q3ªŒ—ÁÝóƒk ¬7É ÏVkÕàT²Êà‘¹ŒÁU† :ÍjP7Ñ©3øW2« ¬K5ƒ¼Œ¥vÊ ¾~c°ÊÁÍfM´6yÓ$hð£Ë¥pj±0NÓØÐbeCK:ZÒCõiLóC+Ó˜( ðÐR(ç«62#´ŽÓi(¬ÏoR¦¡3”@Ôx%$‡Ò„5 “Yp>™Ï&ó_™ÿZÇmì¢Bþ`•ÅñõKk®I…?Ï•y“¹C#ó÷U2_êú™JæË¤ŸÑÈ|¶’:ŽýÖBÎ1±ÏV¤‡'$äNSgç­8ÝÉ;Ÿ$d¬q}ì6´¿xÙ‰S;רØIcìÌÃìäe¨–ÛȲbòÜ«- ŸTòÈ4ÓÓ?¯X9_J•óHª<“\ÿWñd5Ãg¾˜<¹æÑŸp“mÌ ç>²9n8WÜžró7äÕĶLÕ„EohÓŸWÉ»~mYD)Ö¸Mlš¹ÍyÕB+‹ó1_r¬`¤_¸(ÁQ^³5W\Ì(‘žÖ^~¢DÂÜpîË&Oýùº(q)²ñ½94J²1ýýå7ªµ3é,<$ÌM/æ-öÓyñ†‡iÁ“áâyæÃCÂÜ$<úrüÊ›æ\áaú³q§C.EU­÷Éaáa)¶²n«êÁ*[Üf7Í.¸¼=K ò#˜FƒÓHJ­ÏÜàdh}3fén˜RÊ…_Öa88mÌaÖç`Ö·, Ö7½®-o›‡õ™Ê)·>=7ñZß!{‚Ö§WJŠšZß‹ªE9³˜õbõtXå—:¥Âì.Øò„lÔìâMÅMÚÛH‚ƒ”¹Tœ±Q`K¥½ñüéíÍœ6 »´g3{ËeöV”d{I­½é=Š)*•<{Ó³‘¸½™ŠÖŒ'3“go¦´‘¸½éµÁìíwÌÞf3{û’Y{›þË4¬fìMŸÍ™[tϱ7“Ù\œö¶6Ý„½%ó2VjýˆVfoyÌÞ`©zÛ·7S““ö¦,uùVZJí-áÙƒ9{SØxÅ"ÛÛ/½™š=˜´7þÂõ»‡¬ÑÉ'»Kaw†_¢°8øûŒ[fwå.ˆ,þ˜¼öXjVÝšüÆÝÜÈýÒ«‘åËe4“ŸMûc‹ô*dòZ`òÎâ‰-2ô8¼€ b͈O2ÈB>äÉfÏÓ¹ûžc·ùeï2Èñté•È’ÏPÏžg¨oÒ†ÜÒ³l‘«S½zõM¯òÿ‹'X3›ùôÜvŒA–ò!£Ï2HrÃ; ò¾5W~ÁPÏX)WÃÀUã*®n}”pew }ƒÏÕIW»­\È ÿÎ Í1ééPÑS$ÑzžyDEÏ»zØ £žà“uè8k )r {~Ì ?äC²U”ß›‹òïœc(mÈ20åçVQ¾ˆRžNîOg_ÉT.\Æî©±–óù$öüŠA>±Ä"ñìŸêÚ—{¸]MâW&$¦‘5™VÑ:¾‹Óá¿Íš:³Ã;•­ã;ˆiAo=¤ê-—öf ­ç7Q¯jb¾ÒÄ1u¯á“þþq’ÔÙÖ:sElj¡\ÂÙXuÌkåG¯uÚnÏ{B¦ó4-;kÜn¯'ïPÇé»ßx!œž›tg~롎3w¿ñó0g¦;sZ#ù§IÿïežÌ`oµ¿â°óô„eüŸTýþ MTýÁцÖÇÝDz¢'ÒgØZ#»ÇHÇg&,c7È1ªBDá™I(ôŽ—ßÕ.õtFÓ‡¤È™ë|ü0eƒÄ|²'­þ´¹Q¼FIG_#¡1ëHYç9‚ç·i€d°½€¨€E X¦Âè;ÖÀQ,fÀl üŠO=w9XÆ€ï¡Âp:V@hÜÀ ø´Hžü#†»‡7°ŠïÑÉræ—8ÚÀu Ø­fp€–¿`-Vk€ä'ûö5°žó4@ò ͬÝÀŒœSÉ/´ð@ ›pD$¿±ÒtÞÀV¼O$¿D~ €–v¶3`¿H~œûk¿ ÀN¬×ÉÃàNÞÌ€ €¤ëÜÅ€ü“˜ Àë&À|YÌ`‡wÐÍ€Ãàe|Ï fæ —÷j€sx€¨€ جæðÃ=°P¼€]îà><÷¹x×Ðr ogÀSà•Ì%ÌôðÓçð?Ó€?¿Î€5Àyü ü‹;5Àùü[ÖŠ¼‡¯Ó èàð^aÀ, pëh¹ €÷2à{Ÿ© 8€»¾ À¿cÀãàU„!Õ=z€Gðx5OðÀ]fÀ. ðA†ðQ\£!'_9ù~÷ð·õ8CÍÑ j«{×·õ}†ú謵P%n4 ¨§ê„µ”;oxy¬ûÛç'ŽÜý)Ù_†O9å[ÛZúƒlÛàÙ‰gá[ÌϘxãP:.éÜNÆ‹­mhkûÁ­x1Ír$òÙýç'íÀ [¤?Ùid~Åÿ³×;·Öµ5¶¶7¶4Û׫ÿìþ‚}hm÷ˆ¿/¸y|!qg¯Ç+àÂ(ì°c| ifk5­Zâó »q!¡n¿Oty|Aä÷y÷#—èï"ŸŸ”û„nQèA]û‘×%Šžn‰—/ˆ ËbÚšôç)JÕMø{‘ <ýѳG@Ý‚×[Š6ùHØçêð Ř`$ºñWPô@( hZìíîVú% •ãËÑ€?è Ð^׋ºèƇ -F]˜ ·«iJ®Äm”®,FÒ¦ly±RPFJiA™‚X¹¼Ô. xA¨ Tw¹‚.“¨óHå¯TÝë|µ ®Ôã]¨7àïlj®ö<¢ˆO‹~à„(‘4ÜØèlF®î[]}B©†¡v·K\$ü", ŠP·HU:v Þ„ZA<¸ALp¿ âÆË׃áÁ$Z„@À¨F=BŸà.¢p`ÎNíð÷oïzúìï®_óݶ‡7ýæ¯kJꌰj¾òË~[]W¿ ´eCçÎ í-[¶®/ìA˜ÑïGÁ~—×»5úºèŸPBþ¢Û×ö®Ùx4ßO ßãOãôøèwYÙ#Ò}ùÎ}>üÿŸdZñ‡§'˜*/+?ïõøzv±% ;IØ*Z.«;æŸ\¿b*õËË*ùÕMVÖÑ9ÔVìóá Û,üYˆ?Ï?”a{ Þßðç ü¹þîÄÖâO3þ¸ð§Ç£BÏrnÿ1ü'¦óèü|ßR´Àe!1ßB"‘¥Ù/Ç@Á¡ÛÓëz´"uJa!4àõt“¨@ãz¯?äëY„6ƒ%˜"%ðÝí÷øº==‚ÔŒLÇÙºçÿú±¦ÚX~=oWëO>}êêêXç1¨•VõZ´* ˆ–:—o™ˆü‚pR ƒöR™p:„ÁH´~YZ-›,-uÛ,uÛnÂß7YÚ, –¯¬/,­è•Ú•é•kå¸GmRùbé{®ŒÓýݸ¡­¹±ys5 æ%Ý‚O `BÄý}û¼Æ¡ ˆƒ~5ryÜ®õ]‚èZßçêïw­_SVj'ñ: ÐÁVê\Á`¨?ZW“ö¿é"÷_w‘ûß`ºÓ=':¾‘¿_®öéŒbo{‰}3f^TZiniwVŸTe7à‹$R!šâš—t*€ q’âƒÆR2Ôã|A'¿×æFÎÀˆwÙ®Iî£Í|ªíõ¡:ÚîÆÉ_Ÿßçò¢ €‹}}8;å!q)I`\êœu©ºíð®ôM¾HuЫª>V0;"–£Ü ͹Q½ADN81Ï>a¯”üíÁÙ±± ¨ôÍÒ'±Ï„ÚokhÙ²±¥ÁYß¶¡Ij ,¤ÁÙ¹asKó†¦EËåä 3²Šòƒ¿¤ƒu%%%¨Üà\…Á¹J»ž~ÔêïÂÔALl[$ .Ò䆲«¸M" Òü­yOҪƊ éì¼.  Å&è—dVHå{ªöý>awȳÇåÅñ…öQŒ[ƒ|›z DÁÕíFA@¬FÌ2bÖçW±oÅÈGØ¡Ô#ÔŒ]‘ ‚uX-Ó‰Oë,‰Î+pºB =P—XÑ+I² ž¯˜ä|%P%x‰'®èQ´ðÿ™ò_L+´K¦!Õ‡ rV…V)ž!×>!¸ƒ×ˆ‰ú†P‚¶ºAå%hS;>ìvû_¯×ƒu^BšÔéÞ®jÔÎL?¸¿ÇìÀ~Õp@ÅÝ"ÓC,îr*{ÕWùu«bž©Œq¦"晕±ZÃÛÊ^µ@¦¢TÊ¿_„©ºKDA·§WÔ;z „ѱGÀ™¾Ðc'A—á9LÂi=d¹ Áebtº£ÜTLþ«ÊÔ%Ò©2†³7¸››ðtO÷]·B²a× ì,FÛ”6Jð..(é¼v- ÇÊ!œÀ‡&—ÉGJ#´ÅrZoŸ„˜NbŸÛ8$9u´öÍ•/_¼øÐXº2± '‰2|LˆãÉ g—Æ?fæ8–=]0£Q뛌5’«ÓMœö[h`Ä,Y¸¢_8îjÐ8„áÐö:ç–ÄÈö_Ö~5â¶Ž¸ Éäï¥ùú =~«†~Xóä1øû¯˜×_äü’΃aàëÄ8Ç"sg6»UJñ”É%®__¹šòCçß PÚÛëšvnjéh®WÍio¹µô;\£é·Z€º¥L6ˆ£M°w?Ñ|¿ c¿¯‡Ñý¤õɼÕåe-àLž•—•á|[Žt±f RûJT=éfÅÜú%ñ5¡LS¶„c»OÈ䚸P³§¯ÏëY¤W\qI?a‡5uýM’¿ S¸w°þ7“„6žáÖ‡9,ºÂ˜-LWé—ëm°“ëHÈõ‡$ä6%äv w¤¦3ÄQŒ<ëïl¬1^) /«íàf2AÆ8ì0ÀÚvµiÚvùE?…Þ®€Ä\sWPö]èî i˜vCá~ ÁëÜI!¨ç Á»lìàñÎ6>spæçógó8ãÓŒ|Í} °óv~¹`\s€±p-›|\b'WÝ-ÈØÅî§%?B~1ùy]@"^)†W†$â•í"‹ðʰD¼’›&ê„q cø°´ k8ò |HÚ¦9äæˆlãæ Ž¡vÁÊ#§M8ræÜ©¤KX—bsÍ/µ Š‘dAæh8ÆpPb¿`éGÀ/²žh8ÎÈKAN8,pLà–96-p—'ÚkYV´ȸc½§ !y!Æ,ÄúAÈÆÁv‚ó²}ºp‚ó:¤R>ÒN‰Ó¦ÉVP~—”Ÿ*˾`›l³°/è—SRDP0 ]ˆ[ŸüÁ œ§,àì膴öéÂôÛ5{xLÃÚ…týÁM~ª,û:µö1+ûºD2“,Ô&qQ÷Ù/Ó›…¶í ´ö±rÚ‡ùöQ¬u eVîy^ów Ÿ¶]¾5=3Mõ)'àûP‚|#ÊAHl>¥v¾ya«ŸJä5VÅŒ‰ñÏz[@¯‰2>àiΫ4¯b<À[ñ@MËVb[”fUíd¼°‚‚«G³‚§GZA±°^ãë"0À ùzi éz©6$6ÈœMl†ã ˆ­/¯i' Û„y ÒE…b)Ô)ûQp uI'Zb{›tQÁöí~©Õiï’´/Ü&%B|Ø/¬ c™åØV‰1….lÖ mè©&,›@‡¬‰NaíO{DÏ Ù×%Gߢ“m2" ÎÝ¿Œ´ïÈ!ä€õ¢C ¥(å64´ù ±q Òd±Q ÒD¦ðÚÉëùËN;é"?e>úø´ç!€‰% °ó ^C‚WÀv¦—· óv)^ÓÉQŒ!Ôü¶ÊOcº“ßDùyø]TÓ®YIu|¸›ee8¨AV« · (ô…y×yËøÒÌä`3ñ¶±tò±„/z}„‰Å“áä sü²´8‰?žãìWxâ+$Œ'Ábí­ ÏÉ’KnßÅ»X{?‹ÚÔOêßEü…êÚß0¨-ÍD¾ ´–ë"¿Èâü|( 0*¬‹´d±°òÛÓ9Å)NqŠSœâ§8eæKÛ} ßïÏ&c#Ét2fÑn[&á ú{^õ¸åÆòOQß—Íg²™Ô€…cý@&¾×Ô|B}OÆúBë£##̓ô6„£?‘ÏŠw! öÏP_ÈÅ+Ä¡'7©}+«‡žÀ°¹>ÀD‹Cïdù)V!=Ý“ê5ù’HŒ¦&Ä ‡žÐ¤þ³šfQú¤ú7\zBfûCÜpqèÜžÛ'=!³ýÍ¡@Šà†Ç'Õ³ž‹ÃäzÆD‡&8†Cƒ¼câМÔVÓ¬Õ› èg‡ÞIíƒ:âP >Åëù¡'hîПâòS…ë›Y û"Fv-ŸPO’QOµþÉõaÞ1qè Oê?«i–õA󸆹Rqè Oªç/½“ä‡ùÀ‹COxRÿÂ4°ü“l7ËoS`ðÏBõa>þá‰ÃCc€¬8ô›ÍSR|èÑŽNúÍâ•PÇ7?ôMjß ’}ìíÍáIòexŠA‚”IZj»1×L³Ô͵Ó,GεÓ,䊡Zí‡Ü¹æÚ2 ÙO¿epÔ\Rf1ú_ÆQ-õ‡ì§ßähškCÊ,dÿë@ÍsmH™Åè?µÔ£ýrÐ}ÑÒ¹4ÊF1Ú/ç-ý”ÇkçÒ(ÅÿÒÿµj¿ô­Æ9þÍó¹Ú⋾¯ /%&Ýø×H1ÚÿFýÑÖ›çÔ"{Åhhè sj‘½b´Ÿn¾;@sj‘½b´¨Ô;§Ù+Fû7‚NmšS‹ì«ø7Îåjî—Uüí¯æ¸2ÚO_¶ƒ&}‰ZÅÅh?ýqÕzEû#¶š(Vþ7ÆO5÷ËÊ~ã\¨æuÍÊ~㜭•ücŒ£ýµâ£ýÆø©ÿ—ÿVóz.ãÍøý=+¥çôýôS»ôœ”~ —~Ò¶è%ÍQ±c¿ùû9úÅSúRúASú Rˆ~8”~ðó¸*´_ÞWÒ½&ÝsÒÏÏÒoþÒïÒ¯àÒOæÒÓï×.«Bûéž—î}åý0½k»Ô :´D?qèõUh¿]ÿÛ7ù½ù†|$ý"ýD>!ßÖh=øƒåï7TWý.ÂWf}ÕØg¡§böMWNø¯RqR)Õœ*Õ¯Ùòs¥ý3Ý~UÊÏ•š·ó=~jm¾âñcÅ_ÌK9Eä“Sµþ)·_f¿–ëç*ÍÏVüs?U–¬øø™š¿jãg–×S+½vǽT\LŽ?SË©¶ý†•^»ý*“SµñS-ù¹Zó?S꩚ø©Öüã¬_S꩚õ«ZóOµÄÏtǽRqXÌ?Nþ™Ro­¯_¶/»~žnÞ°ÂÅø‹Ê«’þUjÞ›åšëíæ×éÎ×I×çéøYÚSfþ·òÃt×ÇéÆÛ¼¿iîŠÙ_òú]¤}¹ë༿i®ÃÓžEÖáéî?æýøUhÿSöü+±}¹ã0ïÇož­ó}_6ßæÛ¼Ÿ_ól2ïç×<ÛÌ×ùUñï[ËÃ"yÕn~.õz¹õU3~ÓíW±y[澡ì~Yå×ù:~ótþÍ×õm¾Î7g~M-ÇÏñú6ßöÅ¥âRí©šûig~M)ÇÏõü*7‹ø¹T»*}S*.Õçû©ùœý½M{æËürÖ¯)ëùU¸]ÅçW¹yÞdGÕíõkÊúª™_%ÆG19–¸L?;÷_Së™wë×tã°Xþ±égçû¨2í)3ÿTÝþÐY¿lÙc¶kÚr¦™J¶ÇÊ¿Õæ·Róä û­bñ6ÛqR)ÿO3O«wæWa¾bõÎü*Mþ$9µ2¿fX¾Æ7[ó¢Rþ/⯪ñ[•Äm­ä³ž™Î“U“‡õË–æú¹ö[­ä³ž¹Ê“v¿O(—,ÇlO©rŠ´+÷~yÚz˵¿\?—rÇwšq4ëãX,®f8Ϋ&;ë—-;Ìõsí7gý²g“·mòÏVÞ®Ô~ By{1?Ìv\Uj_Tf\UMvÖ/[v˜ëçÚoÎúeÏçþ«<~K½5¾Ž—Úιÿ*íºÝzçûùÂ|ÅêïçK“?IN¥ú;GûŠåÛJåÿJå+›ù¿Úîwªí~pÿ,­›³~?[fœWjþÎV}¥ü\®þbõ•Zoìò—Ú?»þªT~,Ê_áq-·þP¿ù>ÿlûËbd¿Ÿôï Ò¿/¸XœË£¼n®3+^£¬%ÎÍíÍrŒòˆÆÝ^õ7 ÿ¹=^õ0Ð1 nP´ôqÐ] ¯€¤üGqþ$èç ?Òu¯W]z5h-è  SAgƒ†A{@ïñêíoÄùÐst­Á« juƒö>º·AçwŠSœR-eüäÒ°Õ±Tù¥ê)Ö®T=åêµ’[ª‡šœâ”é”Z'?”&·T;íÚí§L§Õ~´*Îý?VêûÞrï‡Ê½ÿ›­û:§8Å)N©¶R+ëK1¹¥Úiw]¯´½VòKÕ_ªžr휮ŸìêwâÇž½VòKÕ_ªžÙЧð2×÷7Õ~tÊÔe®Ç§ÚVÅY¿¦¾>Ózíê/UO¹vÚ-NüL}}¦õÚÕ_mñã§8Å)N™Û2×ûÓj?:eê2×ãSíG«b~~6nZàR߯.öܯ˜^«b×N+½V×gZ¯]Zééq,f•\+;Ìí¬Š¿]½VÅ®Vz­®Ï´^»þ´Ò;ÓãhUœø)\o¶ßj¼Ív˜±•~«~Xå§bz­äÛµÓY¿¦§×¬ÏÊŸf>«q³ÒoÕ«üTL¯•|»v:ûg§8Å)µRÌùÉ —›×¬øí굫Ǯ^çï§ÖkUœøáG»ãQêûÈvã¢\½Åä—ßøœ-z¸Á«>zô3ЯA¦{Bõª ÃA«AÐzÐP”½t5裠;@_= z ôèO ׯº´zAíÿ{g°òÔ¤ùÁ¯ÿÂbÞLžOw~–ʯ-䕾ÎÙÕ;Óëke×'«þ–>ŽSëýõ~®ÖïZÙÌí~ëPÛU›=N™R©q¯¶ø™¯ýªT©¶~U›=N™º8óË)Ó)Õ6îÕfSœR ÅÉóS—ùêŸùÚ¯JÇ?S—jë—cÏÔž=ô ÜH ©†c¡zYÌõÅøÍ¥ÔöF»¬ì-åº]2ëï^àUOõƒÞï\ˆã;@W€®Ý ú èG ç§zß`¡W] : t¨t è P ”]ºÐºýµ¨»tèË GAO‚žý‘Ú5zÕ% £A¯­ :tèÐ5 [Aw=zôÐË Å‹¼ª´ ô.ÐA@Êb¯z(ÚÚú&èI²Ä«vƒb h?h|Iµ¿wa5Oн÷>Szíæ +þbï]ÏU)õ}-«¿«r~Ÿq~”™^/Ë•_ê{„våε|«úrí˜)ùµ^¬úk÷ýM»òí¾Ïz¨•bñ8Ýë3Ufz2Óû«|PìïšíòÛµgº¥Zׯbòfê8Se¶â³T9åÆ[¥âÜŠß®=óµTêþ¢Ø}G±ñšï~žéRíëu­}/\«ù¿Rů‰ÇJÙWêõZ“?ÝÓ¥Ú×ßù^ìÞ—•{ç”ÒŠ“*k_±âäŸê*µÿN©®Rëñ3W÷_vÛ•Ëo×»ü‡ºýv×ÕrׯZ·¿Re¾í*}}¦K­ïßæÊþJÍ_«ë¥Î×r‹cÿÔòŠÍÏRój1;jÕþR‹#¿¶äÏ´=vKµÚ_êü-uÓSª•^¿5ûËÝ—Ù]×jÝþRK¥Ö«bífjÿYköÛ•?Ûþ,VjÅþJÍßRÛYµ/w½sì·gW¥ã©ÖíwÊü,vçc¹ów¦ÊlÙo5¿ìþ^~©yS»òíÚo÷ß°k¿]ùvퟮÿ‹é«Ô͔߯ÿ‹é+ýïû\ø4’GPÈ-hªbnoEyMÔ`Òç.C~)zTHg¡¾ú–zÕfÐ@§‚Î ƒÆ@ï]·têßø8êï=úwГ çA¿ý´p™W=t(êmåA—Þºtè‹ËtßÀù8èï0¯z2h+èlÐ (Úºt3èèg ß€þ ò.÷ª+@>P3hhèRÐ~ÐàÇAOƒ^\^«¿Ÿ0Û÷vçk1\éûÆR¯;eze¶Çw¦Ë\ÅO¥õÎT?ìÞïÎôýe¹ûÛJÛi¥wºù³˜Ü™º?ž«ï£¦[æËü­2Óy¢ÒrÍr*=¿f«ûw«ý÷CfÚÿµ:Ÿ*]*ýýêlË/µÌV¾°+¿Üý‚Ýû£™–_j©~»û j‘_éýçlË/ÆWmó¤\ys}ßR*©q:Wò­äÓ_­óÁJn¥ï*%¿ÔñµÂvíœiùåÆé\Ë/†k]~1}s%¿˜¾b×í–™’_+ëÕ¡Zª=®ªÝ>»r­øjeÿY+ÅêwrKÅÅÞß°úž«T\­ßÍt©•õ Zö'ówßÐh …¦c!Zh:/ÆKô§å^õ u…W]z5h (ZÚŠ€R K@Wƒ>ú$è  ‡Aß= ú%è/ ÏJ¯ºt<¨meõ¼wQÙÇyúÿβSÍRÞ¿>sñVÞ¿Û>ýyT«¥ÚòHeåºãZÝÅî>b¾ß¿˜‹ãŸ©‹ãŸÚ*Õ6^ÕfS¦.Õ6^ÕfS¦.Õ6^öí©Ã'Q½8Ês36žw¯ôªgö>:@ß_4yÕnÐ è2Ð~Ð8È·Ê«žºj®¾ß¨¶ù1Wã_-¥Rß;ÎV™i{§û¼¦RÏwŠó'0‡S³4ë t hhí{Üêb_þG¥¿ã[s™[¥¿ó{àÝn•þÆð 0}W» Žw» Ô$äÑß vÞ× Rîz´tèpPþ ·Jççâ¸Ç#@+þo3ÿó•W2/_îV_Á‘ÚþÇoÛíÚ¿bèbÐû@7ƒ> zôÐ3 _ƒþZx¥[}èu u SAç€Î] zèfÐgA^Y‚­›zzÖùÖlÚ~ÆI¾`KÀhk ´uµ}kv&â¾ÍѼok2=v‘¯³¥ê›;Nrš8Mœ&ó¢ åU…ötÏ«ò¯£)¿.ù–òîAäã éb5ã_¿@ò¯ø­‡åá à¯7ð«ð½¢ÂdÙÒÉåãÉtd,—ˆ³ªŸª’ÉM¹ž)#jú#²ö»‘Ùëê߈µþZ×÷H䵄êa‘{+NNyè¤Nñ®AwCC2WÜu/ um_ð߸êÚJhÁ›ètÛ>RäícÌîëq~½”áR¼w‘(oýC¤ÑÕçz3Œsm9kt=I<ÛÏaÈ­Ô?‡“Eîc\7ÂLÂîWD0yW¢'nOýb–¹ç¼ÇÒx㼪âmT= ÏfMNl|+¹µ‘œZ×øÚÕ7úpÅÕøKªoŒâº§ñã8÷6ÒzÖÐ8LF7^žÊÂ4ÒÙx¦›šÿÞC~^ôo¤_éÙàú!Žžó¯sqK¾A肯0äv] >ÏÈwR]ça<©sZä:Qžô÷Z¦,~ ¬uä %t¶äiXµ„X—¼>Fµ³Ýôñ.Zˆ—ºÿÎEÄù%Ð='»¾I}û‰°å²e÷Ï…-_§Ñ¹ˆêj&[.þ°å»dç;8Zæú6q¾óµä©ãWº:ÉÎÙÀЮ»Iæ¥g1t´ËCRöÏÏÕEèr®aµë$å ŽÖ¸~@–½‡£µ®1BWrÔæºŽÐû8 q/]ýԉNþ µ‹ŽCÍjO·«‰LøÐ%¢“—ºáÑÉ=„n’<œßÊÑ"׃hïÙÏÑ2׉Ôåÿ3*:Iä¹Ð®¥d§ùÐønKÝqœ–ć÷6 lu©›c©ûö™dŸWQõù. KÝ!‹) ø˜ê#É>.‘hv#Ë)Dê®<ÌÄQà­ø"EÅR÷Ø•_‘×3ú\L#d™²„±Ð¾„ ‹i0ëöj “\m3®.>k‚L\ÝŒ Ëi„ëä•·»é“|µènœ¾›f‹çn׳4Þ÷\%†¥‡Üû¹—êø°°1½÷n7ŸŸî‡pBú’’æ?àZwÈõwò]`·›K 6î ±Q•~‹b­»}cj%¦WSê ‘0¥‰üî}¬L"}5ÝM-£¾5…˜5TIŽ«ohú¶šØ›ú¨ò„TyÍcïߊQoM¦c#cñD+¶âñÄ oª¤XGŽŸÜ‘Ö|j´5Ûºmtï¶¡–cV<õt—àú–RwÌÚcŽyë1õ h€«tÏà ââºz/¿B›y×Q‚-_»¶yÝ1õõ¨;µˆÂ ÏÜ8Ò3¬+¤Û ×±uh]Ç%Óý†ëˆ:ù÷=ôý à%ê"·û*\„Óp7 DòJ$’O¦ìdSOßö3#[¶÷ômÛ±ucÿFœî8£ñh<že,z+æß gd0–g٪ˎ$SáQæÖ­7­ßéÝxzÏÎ-;úûv$ f”Üp&›÷¥sÉ¡4îÉèNE4òàÆ­øã9&5–Kçt™éŽìŽŽðϱŽé\Ñ!:鳩èE‘t"OÄ#ƒÙLJS?Ïì‰ )™ÁAÆ›Ë%/æÉå£%ƒÚrƒÉ‘X:/*™í¢èñÀÈ’§RÔ¦Èàh&'X†4Oå³Ñt.’HÇ… cdò$·ÉqàíF2QêFfàük“ÏDÒÑu|,©Y‘ŒÜ¿qÛŽþ³5)±8ÈŒa{ØåÝ™X4ŸÌ¤ >ÂÆ"lœ¤ÿq¼p,*«F2é!æŒ šO9cëÖHßý\³aòyYÝуc#¢"Æ.HìÒEpã©Í0ærd8šŽPçS¸Ö…óˆâÎŒ'ÈÙd }ð«bØÄ£ù(ÀX~`lÐÀ9!"É4Þ7d£a) ¯=I1àcºGŒâõñ‰å4M¸Îœ™HB‰©‘>µŒ§©L\ 6çBƒ|â"Y˯ñsš„ÒÚi,lÎæÅ0M˜…ˆ!m,9gûé‘­ëOï׿‚ÉÁ܈žðIv¡–]0C4'h>›øå3'‘MGG¸w¹r$»Àà~Š9¸Fß^8–Èî~Ê¡ÉH"-ÓÛ„¼µ½oÛÆm<3ÈÙ­ç >¥e»NC³¾Ó Ýå³ßÕi,9ÜÈܰLH½ýwnDŽ߸s'K‘Xúhbð‰àc}ç¬ÖÔ·‰‘Æ©.Óö¾¹ôÓqUKÖT„t§Á"j‘1eŽ1L³ ‰ÔzÂã19°›ô©A¢`i–¶U=¥~Ñ2¹Ò’Û›ÊGpÌgùqXž±ÈUZÒ™|¢eý†-ÍùèÒ2Í +-ñ½i4äÇ|ViÁÖ¡ew"›C¦›"¨Ë&FˆŸŒŽäIrŸäV¥eUÖÉþ™†3È?Ô.šJÆ”–X>“ÍóÃù1Ò™Aó ¦|*”ÒO Œ E¢ðÝP"'áèØ9[Ãl‰”¬ÙÄn‰I y. `€úh£¥èϰ_ÚçV_Rø³YêÄ‘¶% ‚O½Ì­ª¨ðøäïHúþ[“ÄGϣր^þæ$Ý_7 >zNu|OÔñ¶u‚‡ö/ôðÍ%øè¹}¶@e°oßë°gRô<ê°Î W>¿ïWø3,:§çX/ƒa—ÁfÉOÕâ=;×߃ûA’F |ôÜŒîŒõ¾1a+=—£=áZ/—göߨ¯|½8ÙW7‘è¾oaGI·‰ºIò.3ðÑõå‘:åèz¯Tô8ðacéKÕ)gž¤óùÄñ:Áçb½ª²¿NÙq}Ý$¾ |;îmPw´¹&üÖ¨<ÿ¸°øèù_?øžPøxH>òßy«ïkPWû]ŠZ@Þç |kÁ·Ö‚ïK¾øBþÂö}ÕÀGÏK;Á7bâ#: ì$¾à;¾[÷êßþK¿<¢è1K…ø^véXÖ}ÏÌ×îRÎ2`Ù§Ÿ˜øŽ»” XÖýÖÄ÷&ðí_0™ï¯&¾ŸœìR|æ[CÝD¾t»”« ð­0ñ]µÁÅž5Ë"ýì|mß ¾½åÑsiƒ»”3·¸”×Ð+cY–'û\J÷áüL¯¢ç—&y+‡\ÊÝK&Ë+T(_*¬=碼È1×¼FÃ\ÃA ó^S>ã˜G»|ŽîRxÇ_ÖpÔ‡8棟×0HÊ+/d¸Wà ëJ‰qùÈ/f˜æ=ÇÂ>¯ÀKÜ!žÏ»˜çôçõ.6*|^r¼œÛ£a¾¢„4Ì# SÃü­„^5ÁÏ.öV‚aÂGšð«Lø(>Ú„_mÂǘðkLØgÂÇNˆ·òÇWT&þ¯‡ÿ7Õ·(ºÿêà?z¤·VÃ+úr@ú¿þ§onCZýJå|U1^u¯4ŽßF=Ÿ7«”‹q\t•®Ÿ¾=ß|•µ=·â¸Æ`Ïgpl3Øó%“=ß2ÙC9üÇ"¾H¾Ù/šðïMø¯&üŠ »ë&â…&|˜ eÂÇ™p³ wšp o7á³M8nÂàqòÏrÊa«”ÝÀçÿ£à¸þ¹ ǶWyÔ¯¬åø½Ôþ^u=)Âx~ê¯s«ï®çõ·_£[M |/ðæ»Õ Âñ—/þ´ÿu‡;è›e&ïq²ç›À£Üž÷#_œÈÚ+ÊsT?ªëÿ5pè-õ‚N.ï/Àûú¼jw=¯ÿ'ÙÛ¯ãJzÕK9^F8¤ª›®oðøÞMþk€÷ÝçU¯öÜ݉}ƒÀÀŽóªûÝo úmº¾Óp|éf½çïJyUò áà>×ÀÞ“"œ¦ç&'ñn²¯C×G~îþtƒºOè{?Ùwkƒêòn"Ü£Û»Ÿôúw;õoOƒz–¨¿øÔ»EýƒÀËîjPõa°‡ž²¿Œ—gêõ|{þû9éû}|~ üϸÕ+Äø×áz7äKûý¤[ý¤¨_|Ö*Ý>àýèÿ[€}Ð×&pð¢›<ê/o Õ¯Öý³øÀf}<ΦzôçÑ~ø¡/xÕ£¦§›qÄÛ "ÞèƲNÝ yoÑåÝ ü㟺ÕmÂþO¹øzÅí_¢ÐÓìîw6¨Ý*çÿ2ðã/zÔ?y8ÿà}gy5{ο‡¿ÇAúŸ¾ñ³Lè§'´—£þs¢þ¯À׬ÒãË 97¿àVÅüj~b•nÿ‘Àß{óùx^¿† }Ñ­þBØOˆÌßë^ü៸ÕÛ>…êOójñF©”»tûξæ›nõ­bþ§€÷#ÞV‹ú½À ñ~%N.ù¡[M ùï§ûž°>Þ7«5½Œ×ß¼ï Ä[¯¿øò›ÜêDûöí‡? ?p­[½HøãIàyEü.UžÞq¤Gí_¤·>ÄzuXýRåOÀçüK[¢7÷yÔ¿yôÄ.nð/=‰U óå5Àc½Y ä·8EŸoÀãÀÊ>Ž»Ÿ4Œ7=)î>S·³ˆÿjä//Ç»€®Òùé1Wç-:¾Ø×ùÐÀñUdß'4y$|žWý±ô7ð޽?w_þ3·z·°ÿ’÷yÿ²óÇ'ð#„ÏÓó=8¼Áà¿g©}X—O兀?ªç§??â;.âÛ…~vÿ»îŸeÀa]ÞÑTQ-ÿþƒð=º¿ŸþË3ºüŸûzõõàEàÛÑÿá߿Bß߀—}­^zŒÈ`ìþæC3o¿²ï‡¥}'¾LÇVàÇ ëÝ¿eàßü®§Üê¾3€}›õþžGü†ü?¼ÿ½õkb¾í&<îV¿/Ú_N훑¿ýjzºà¿ø¬¹ÕËÿmdïéùá®zƩϗ¯·Æÿ;À»>ª÷ï¤ïn5 ä?MþýmÂþŸÿ-úzüKàE†|ðgà_òÝËÔŸ³aÿ1"Cñ¾«ôõs1ð®½z|MõÐ÷c¡Ï§ê÷O$ïµ8;p‘žoÛïÇxs(Ê)À݆ùúàñÛt{Ï^iX‡Iÿ–ÚüLïÿ×-Þö¯{û=¡ÿÀ>äÏqQÿà;¶èãû>²ö<)âïVà' ëÙ=¤ïãúüy8ü²[ýÌ".ÿÔÞ_Oàäöÿr«”ãœÿ9ö‹Ók‹/ÖóßÇ¿ïVöþ™úÖ÷õˆ£e†ñZÜm˜ŸGÎëã³øÜºÕo‹õ.|Àï{q²ï}¾n¥Š½úþëmÀ·‹û“eØwèöìîÿ¥[}n%—wðƒÈW ù׿ðˆ[ýÚŽoÄñ !¿ÞFúî÷jø>à—îl`ï‹~˜êïÑóÃcÀ¾˜žO~×Çwœúgˆ‡ŸSÿ ëÕïI>üýwáïE¸åÿCþ? Øwêm,ð%†õ«X5¬_o¾ÿnu«‹ëß¼ë^ÝŸo|F߯¼m!í7ôñ‰ÓWb=÷ÑúHï>`¾t û.#þ»õx»šôúséÛ¨ëûÄBýû‰åÊbåÓÀ+!//ä}¸ûAÝ?_%ýçëö<|Ö ¹_üO’Õýý,ðjÈ»VÌ×ß‘}êþú3ð—®v«gŠönzGï‹€}ŠGíWyý‘À¾Œ.ÿ8àëv«/ 6ï{•¾ï þ­zOþöç›e<ïß¡¯GÛ‰÷›Eû3Ç_§û3 ¼ûã‰öIj?¨û#K¸SçðÁÿp«oüïÞõê-ÿ^ üòÍzü~”úcÈŸ5ì_¾‚?Ÿãóðï°þ\+äÿ_à^Ô7‹úŸ?ÿäþóWÀß©ÇßïxBÏ/Ûß0Ìw”ÞŸ&à ØŽ þ5T¿.? Üm˜¯=À^·P‹Ÿ-‹&æ‡À«ïë…¼séßW†MqøÜ×/Ôø÷«À2ÿ^¼?¢ÇÃ{Éž3ôñ¼¸þø€ðÇíÀù«Üê/wRû»õñþ „aÿôu’}r=<@ü›ôõù;À áÿ‹„ýOgŸs«u">¿RŽ¢ü–ôÿYà?ó#}ýô`¿É‡¿ø¢ž¯Ž¾Õ_Ö¯4Ì—6àÛo½‚¿x<®ûçdàÕ†û¹íÀ;ÿÓ­~Gî_€wü{6}ey¸Ià~C} xá~òÀ—£!Ñ¿ëëùjêÿø€!_ø†+õïC~ÕÇ<êýb¿ömàÏ_ãQÏnäø)à]_Ðóÿs„û="¾ùW¬ ÏŠòòä_(ä¯Z‚ûC>>øC~ ïÿ ¾?Z<¾®Aì'ÏÀ'âþá<á¯-ÀgüÑü„!þÏÞõZÈ;Šãð³wêõÙ%í½ ø€aû^àûa›°ÿ²ç.ÝžÛ}‡ëßïÈ7iè@ÏQq‹ŽŒD†R™4=ÌÎæ•X6ŸË ²÷mzúûvF¶n9½?ê€6nŽœ²sý¶‘ 7mÙÎ.Ú£Õ¶´)±Ljt$‘OÄ[üôP:É DG"ì™l$:v‘ž™Fâc©Ô^©mãö^]™\‘D¤FžëRcšÔÜP636Ф¢ùáHng¹|†ºM#QòÀèPvT":ËfòÄHbcÚépâ"yšOäåi&«æ³CòNÔ¯Æèto •d.Âô$.Tâ‰|(½ÁavMaïƒàRv(‰%FFˆ9™–OÆSc#‘Ý»•l">K?ÓùÈé¡©Pb#‘Ñ,®åº»7mݲ¡'€Ë{ÂB®PÙ~ú6¥7įõâü$Û?Ìeô'F #Ûàpg&O]‹Ä„ªÞà£Çá¼iOH(à=Á$çè óˤ³G\CWÒtš®i¢²½Á¸P—Õ['ykØÃ%v ÅÌqp˜PR“# z‰G‘õ‘Þ³·¯ß¶¥‡<½Ì°w7X0ð×#F RèNg²©ÈîDŒ« ±²ÛÒ>a^løýlt(“Ž’°0¯7 ¼‘ÎŒÝ"ý›C¤F$4`$xÇC»…±É¡á|d šKæ”È ânÙ*ÔÐ`ò”ÞÍ&ÓùA£dæå èÞ`*Ÿ\©Y•‰KCÂz¾™Ø²›.9…¹lüÄ]˜A¨äöDÉè !“C’Žc$2)ª?×0:¶ÇÏQ4§°æqÁ/íÉ&1VÙDŽ¢QÚ9œÌO¿¾ Ó†M˜lŸm‚ Y!—‘/¦±ñ Ë8Nì>fºEç‡1 Ø‘½…‰åÆ"ì-bBþ9$GîF¿Ejý'… ác=àµÈÂ5Á -E}³0ɦ#%fYÛ'›$õ¹ÆÂ=§Í<Ѿ?™ŽdFâJ>3’Ù“È#Aö…uŒÚÈ|‡KŸ¥¦„œ ìU8ä‚»vøå òëŽ×¦`P¸gaÍ3‹z³‰:®y‘s±Ë¸ší‘)„æÅ¨1_±’Åu9—Òyc—!œkÈFc"! l´ÙG"1ò÷Ê$*†[ãKd'¸2ŽüICôE°bHsİ>¥°`61ÝÄ›¤„“í 8°¾ˆ¬’ˆ¤RÈÍñ Á6Å’a‘Êi…@«(­ð¬6ö$i Ö(R$ ¦EDKÁýÆÓ†|gnX‘{Q#&6Æ)gN&}Z 7Ž»¶® ïPiöˆe€½Ä–†&L7üo” 8’H¯dµt–MDãü­6ž®¥N¬”,òYJXIÉgBFd«gJLŒÝ]“ΤDr³Y¬`Ø3Éx[ † Io`ÂŒ•9:Èå&øOÓɬgZYxZc¹+M¦ÅÄ‹OÈ”ƒ Ç°>#¤"”云KÓ ·‘‹ÙŒÒ/¦_PÚÄLgFEHW•H בˆ°eRú’q@aœMdÙûÉ9mö%•Ý™…Zñú(ü0y‘Êj+¸H9£ÅŒãy7wav„D:SXÕVãlR,Ud_c#™\Boæ§.Q’Ó×±Øÿ²÷þñq×áèH–Œ$ à\ É^ÉûCV„åÅ–¥5v‚-cK ‰ÊJZ[+K»Ê®d쓤²CEôZ’’†&´å54¥/¤_ÒÐÆ€©J7|ë$Vê÷=û#çûuóñKÝ–àwΜ™¹3sgW² ýç}¬¹gfΙ3gΜ93wîL6›ãÞX.=Äø8 R«ôÇòÃiÑ89Õ•·Š¯ú¯¼#¢ |# *· ;öSJ“&9™ß‘c‘S#®®.´Ñè²»¦v§ iô »êžtK]ºyÅS÷Ð.eU¥…WOCÉä{vƒt lSÆc8NZwŠ«2˜ÐW÷]w·¯m¹»»}ݺ­‰ŽîŽ–µw'ÀCÇ=ÖÜ%æ]¿-&E¦>i¹°Ô£¹vehü#M¥)]"Þ|—y*?Eë‘éÞ£ÚºšÑõÑ+Ü!w®¡Ý}=ƒÂ!ÐÝKP:l4ÆÍ i§¹šë÷ýüÎäCßÕqù`w ­º¢·ã+òZ}Tj µÅ½ê½² ÐÀÁ%$T2'DÕý¾]Ý[R;Òù‘T®u0™Ï§pwq/~ÛÓÝÓ=˜íõ©ÇüÜÐ j ¦¦ÙÁ¡ ùåÒrI[ܧMd7ïÖæ–0akÍ‹n„ÙZ9©®9i/ñ§fïà/ ¿Æ†0„üáHc¸Ç‡#‘H8ÒÀ"‘X¸±1¼¢1a÷ÞhóÂ3“¾ôß( ÝóØö"ù »åÓCÿý—þnß“y«p ¾ÿÎ*?;qÖŽ‚Þ¹# P#n1ïByȸX‹Äå#"mÁr%ˆĕˆÐbøl¶¢­Øìp0ÒbBÄT-_êy·ô¥`(My^[bmç]^Øó–.×òòÕÌ‹ŸŽxÒ3ÛYѵ-튼ÊÃßâ9Ì.‰˜j’èá(šŸvqHnñzÀË®ëMeFr©>…Øî›/ÓNêÉöí)ŠÛj‘7gQvrp°n;dòìLj‚oð§Ç;™Û‚ž¤ð1ÿzéÑ«­£v¥EÒóù±Ûõ*Tím´TNSãU‹ïËÈ/ù6´oº/³¸jq\ÿñ^6Ao[v˜ûl]Ÿtãø‘£#èâ(¯“ݺÒ'S‡ë8À<üœɼ—Í îñpÊŸ÷2YŸIõޤú¼ž=¨S#i39Xä2†|Šâ—®OÕëd²Û½¤/)‹zo]6çPq11ðFú!%™OaîáÑ\*@u{o¯*Ÿ¯ ‡à¿Zo8›O#'ÞéAhΔLJäT_Èëza€v€œÄÊú!Oü ׆TD˜ÇRDXåXQ[/åZ)%‰•ó¼Nà«ÁPW­=ðÅ]VÄh†æèmùUyK=þ¡rr$åuxè$¦w7Såaß•÷’Û¢`Àº¼:/ê õ† ·÷'¡uS#ðwGr(‰T:ÒuàÅŒe<`»/…ËÔR/ %:Ò¸–# 3Pµ^ê§ØJˆùvÔcyUÕ®lºÏ#?·F°ÞlÃÿ!YQ“Ú*nŠQÈéИÔîl®&7{éUQø³lY­ŒÀØU1ø±ž°â^z{ñ°·d X—ž|Mr[ºkÛ@W­·Ê‹¤êVÔz>Xåk樼àŠÖlÞ°<Ò®_*ñ|ÄZOC]œÜZ- -†?ÙÜJ²lº>’&(Gm³Žˆ*SQq{«äŸŽmá.ø?ž¤°™""]ñp½xŽògÌKù#~þH×R˜^hüG0{m³‡cdO­JÖòñQbG|l³ö&6¦9°mv¢>;Q;I°—§¡ª*z­¸!T!BeÇ=±¤ Î ÿ Ò㺇s©]ñº [#ÝHŠì½”9äåb‡P“<@G¿’lžà»T\. D¥hB(±`3Vò~%¢šÌ‹Ç‰?ȾlY3= Žãi„÷VU ²Vˆ\aƹuZT}䢄”âX¨,%¿#SÃ¥ì+“(UªÒÛ«JÃj© éú¨T|¥ÖËæÒ;Ò¼‹úÝËïɤ†fÙEÇóü•_9ìo±´%ÐÛ,ÍRöU“ÄÛ6òÕZSÐô& y§Tœ{éu³ÊFñ{gÕKyWDÃèû°0 Eý+**! àJd J‚w%#økB~Ks¥ï¥nƒI\ )HD A€2"\!(ˆö‹k¾LC݇$®ýRùIJ¼¨Ü6UU¢æ8¢’ªÊ‚}Fª¨o¹X=þ^“TO˜­ '^d@w&qá3̈âÿjT3íºŽiF~8hãCØÿ|Åë–R= @v'εŒ÷N­Ä-_ÍÔt ‡H­ÖÔºš&Gt=%ÑrJ²R[“#šHE ©Lœ%j3b­¡?\óÑ™|z¨l–Ϲê…qÞ2”…éÄsQ gJÏ,ް^!;6Ø ¤#k|ØâÓ'îIøEZ½98ÆJE4 ´V}pà §Š¯˜»¤*‡d(\' §ÖÛ‘a¬kïÜÔÖÌW•è'\üÅ·yõ±ížöœú€8À ñzùøžÖzzÎHW›»Û¾Xd‚èCðãÜ­ô”Âr°¯Ôsƒ=ÑKæRÞ˜Xg°ãèmâ©·5Dlì†\wê…C–÷jRƒ)‰]‹Ø9ðõâKs˜7¿ÓÃî°-ÅÌ!vÁÀŒ HÄ”ɤ2#ÉÜÒ5±¤‚‹¹⯠R’ ëä¶ ›¦iü-FÌn§ñ-ƒœŽr›@EV" ¥£¡t ÌE(cŒ€½@5•\Ûµ^&3ÔÔ`>Oa;°t·U)ÂNå…˜Þ§"¼SEVeð¯ß›xZ”§EyZÔJ‹ñ´O‹éT5&É)†ƒÖÈÌž32ã$Q™8–¥#3ãDtœàDgƉê8QÀ‰i8¾ëî@ aë† ÐÕ§óÊôͱ¨ ZAEÃ2„ž´…~3Ìh=ß":«êG»L£e+ò ߨrowKGûÆ­¾Çl¯ŽlNâȘ•¨ÌñÛú<>qÌzy˜µ ÞìmÈôæR¸ÜIkj!?o­p‹ÕÚ w½u>È?×m¤§¯­XîÇ…ÿÔÔkWrL¿;€û~|¿Ç— ›1gvx[×¶±B7œEKBëÓž2Ö£wr|I¯¦Àœ®–p¶7‰³(•|1?aH­ Ü7Íd‡ÉHò7¢ô¸wêÖÔ¯wȹ¾BX@]·Çúóv9…EÇáth ”ΆvR«Š’rXF-pˆ&¢Äɶ†&Á€˜RòŽ•å=+ Ê $ñÉ4kÂäBÀ~:+ý¯°Þ‹Í9xçÎe{RÜ‹‡5 -¦¿0;»§&(#þÌ$g®JË2bFó9oªw§Xë†ä(Ï.Î_2åÜoìXÖÝ”FÄÇväq Ëâ~´¿óÂÿ#ÁtQ‰\$4“AT|ïD¾w|ï´L¢'­âv2‚Ü$úðN—Mô¤YÌEd wJû'ÚžnaùLTž¼õý6wwliÙ´õî|‘dgòÑWI{u€O„ò¢Âs?’$oª 3oDå̘7ªòFgÌ‹ÝÊÌmEiq¹ÿa·]HÑȉ¹|·•ÿzÀ®ï¤Å_<'Î7ƒZ£ÛÒÔdF£¿ÒæÄ±˜f³Ë..û¸ŸJK© Úpêx ¤ÃWþãB*Byy—:–˜ëªaO×Ô)fîD×8^ÓrG-ºÛKùcÈËñøÜÒ–îÈE½² ¬’ªÝϾÁÚuÕb̨e¤áû‹;†;ÛjÑÝYÑ6d™u‹D;>k°Uº…k¯¯¹F²Èä¯àT ^}b ê$X¥OTµüå§âKÁ>ŸÒã§wGD-ÝEïn–Eê¥)Y²Ä³³ð7F©éVFþfa6ù+œ"%ò·3R¡×%Eùž•è T¢:¯~k£méÇëjj6dvÕµoJ ¶×.…8}dÀ ãËŽK}’1þ¾LÏqd‰˜Y¢Ž,Q?‹XPH•ò£Âµb!Ÿúãë‹··ÿ\|çÙU#kæ÷,ÓZ¸1ãÅÚ‚½(œñ¶È×ÅÊt¿[(Vsm%¸Ðê¯ 9vb%&w{<· x¬K€2HU(ZwÚZÓ"GR>¤Þ¡jÝB}´.©o€÷F ðGÞÇrƒ dà3´ÈåhO¹AJØêAs| Ëš‹ÒÚŒÍå8ˆ¯KÈÏ&ŸÛiº²D£¨ñxkçÚ ­Ý›ñe„o°àuZ'¤‚â›Úû%ÛRÐ\Î4ìCjW3¸´ngBâÕ€Ôå¨);“âr}âÞ–»Ú7µÜí࣭±(#\„ùuÃìYÙ²¾}ãÚöõ‰¶-nnb}Ñ¢ì@z1~äÆîÙ3Ô‘‡ˆ GkF-rƒƒÉ†â"k(*²† Yû–Žõí[@l†¦é±´=ÄV'JK1—¾¶E‹W:Z´ÒÑ ­ôÆöMí­woØdÔY‹lq°ØZœÅÖ¢,¶^0‹[63.VÒE9Ic$= >hmÚXf¶–xå*sœ3ØîÑ¢³\Ô"µE)Ï´§ äÕ××{âý´ú´Ê·˜r}cA6ÿ@z¤·Ÿ HI…o¯†r¥£Œ’§wF-ÚèZ¼®$:Ù0++$Ä5mòpRàÒxa="JEÈÐþ ‹¶üht#³!µÉDmnh Òu’¡éŸ-ï nÙn( Û 3 ¬ºfÏÙŠ€ÌVÌJh>)[F*2+RÑ ©h€+’]]ARná­+ ¥u³P«p}8 W— $Cµ4Ú.£â"â´g%"c„™•@VÌB  ×RçHPiŠRŠ)­êo!·j™•= *Nøbäd©‰SN…{ÄŒr *Î,û–îÎÂÜDê—Ç,Dͨ¨Ì5³êè˜ÊNQQ5³TtÌhXt&bB0|†»ÅÓ¸'_º¦úÔl( Yk/²«Uhv¶ÇV¡ˆÃöÌ¢«Õ¹lÝÕf£Bb}°/µ=9:8²RæÐ– Xµ¼«jy·ÚD µ Ó’1*άÕ&ÚïjˆþB-ÑïhŠ~g[ôÛG9ÇÑ"ºÃ5G³FNÍishN[Íi jN›KsÚ hŽÁls1)îrIqW!)îrHq—SŠ»f§Òét_:—êå/µgÙüm®æo+ÔümŽæos6[°ù8ã %JY Ãn«ÑàsC)7…Üà’qÃ;+â­ž·àykç­.ž·xvt®búÚàêõ …z}ƒ£×78{}Ã7»¥aµV[PXm.aµhàÙòÔÚàêÜ …:wƒ£s78;wÃ,;w±îÛçê¾}…ºoŸ£ûö9»oᝐ ObqrVÐP÷¹LuŸÛX÷Ìõ…©›KýÛ ©›CýÛœêßTÿ&ÎXÓ Voˆ"6/æÐ¾Xå‹u/æR½Ø;kóZc.o4VÈ9üјÓ!<Òg<p Ñrl+ Ƕ Û\rl+ G;nEŒ¹zI¬P'‰9úHÌÙEbšÙ2ÖsÙ¼X!›sؼ˜ÓæÅÞa‡rr^hn!S,Þó ý޹c1—=²ç1‡=9íy,`Ï9ã³VT§=´ç1—=¹íy,hÏg⎛MÛ†Ón6:ô ±€4u Ñ¥n÷æíÓ^—_+ä—Å~YÌé—Å.Ñ/kmt1ÖXˆ±FcNÆŒEÄÌ6<[Õt´s[vn ¶s›«Ûís($oåÖh ´x-†0Ÿii ÑeV ™ÕF‡YmtšÕÆ€Y}{³Í¥˜m…³Í¡˜mNÅl»TÅÄcœ4Lý.ÃÔï6LýÃtܹºM[¡nÓæè6mÎnÓæè6d2#3ØL¾Hï´—úù2‚ÕŸQƒÓÁ“Æh‡ƒÍ÷h9[7½Ã!¼Ž²ëŠ®Ã%¹Ž à.ˆ§v‡”Ú H©=(¥vKí—(%‡ËÐQÀcè: .¡£ÀôoÖRr´\{–k¶\»«åÚg×rþ§Ï8-¤î5û«2uœþ£s<ä¾5;êøÎoýd "ŸKXß¶Ïf{°ür@ml ùOâåEÁœü%†Ÿßʹ«FßMngæ»~å'\ÉÌãÈ8þ—¾Ñ]ì6±ÕÜ +è¥{x{VmêÁ`Ù2­Ýï-ÛÒ=]!úkÕÎÌBÜògY.J<ˆˆ‹_Š'‰}‚Ùazǯ*‘{=™„»®ë$Hû®H;¯ë,ŠƒbT§1)FLŠ“"þÛÉ×íwòuû±8måÅŽ#µ¿7“ßôy­y©pø©ºß8Π$™àn.þý·–$7í˜Wç|¿%ù7pÄy¿TÚéËÍ“¢qˆÁEyjÔü¦ßeÓÎ ’òÎÿ·T@Qþ¯NK‹iÚ'þ·.ŠfíòÜ€UäãžA¹ÂhösR’ÊIˆÎœÄVÜä² ÍˆŸ3 éù?~V¨A Нö¶X-J~'º3"2 ‘‚6~ìwW"øtOöWÎ <΋@ó¥3ÁíüŒDÙûôSàH¼J§.¼]š0Ûúòo…ÜCJäh¸ü”¨J‰Z)ôñ6QLÿÆPé^_€9kk½;=]{ÔËbHÄ}µ)úèŠÿý•âµ4}“šÉ>À?å¥W“ròâÜbïþto?~¬Ñš,÷J²rñ-¢ºô§r)o‹Wç©Îèµ&žÀ¹#•óø¾èL*3’—[wv@fÿ›H:£g~s™ÚÇàà>Ï÷ƒ+ÈMè®)rÒüòƒsÒúÆ#õË£ Žr8¦àXW<*w‡ ýœ½‹^T§Ãt%ôL¾_x1\{°“Úç'X ç'õ׉½d ² &޲“ðxœ“ Dy|TÇ3/b<Þ8ò÷>£¼²¢"¾MT©?5Lú©1•*ü™‰†æU×ÑÍA÷&@»êLé,膛Õèâ .B¥& Lf9…êý‰@}„Wˆ—ßUœ¢|–†ª¾"牆hènŠW…ÛŒM‰{;º·®ß°®C.¢;…ù~yþ'Ãé(Þñ!m ®äÞAr¯»Øƒæ$?"NÞN§PƒŒy™ÚùA üä ù÷¾Œ·8¤µ@Hk&_¨ì-©L_z»¨‚ ÕÿÀš»þù~¨~“áÿ¹Md$s[È›¹…Äãì\”ÂOÀJÑ…»¯ªÙµVüƒŒÈMåó ”;>àÚb®!b ¿U˜7ïæ¸œ§l㙺̺Ѽf~®êxºP:3š²y%î0 -Q{ü¥±Z—†øÓ¥œþ€N‹SŠIÐ^ŠÛ7·NŠÈæÒxŒ‘<Ó˜Á0ÔWŸäÄwëç(p» Àz5ðšUúegóù4ßéÌ?»Á3“µC•‚ŒŒ6•¡CN´‰™yšÃ ßr²ˆŒþdDÏTð³ÖYO®ü#Ÿ´BŽþ֘̕¡#Òx„Ï0`žK¡,‹ý< ˆ™Œÿ4qò@r˜CÐåñLŽ31D³“SëÞÚ ©qPC¬r‹g¦<¢WVý@ ?äÑLåÚ–­¶êéöA¢ xµ¹Ÿ8t‚õâ^Î[F.~ ÞÌ?«5øxMîöº-ýV"Ó1šäøžêÄ\4&æ3*STeŠ™¢z¦ÏåOubJñIh#åE¯5Dµ®O—ÍïØ}?ÅG…GÜU+8ŒÜ—©»€y¼rø¨œ…>T®;,P3*œl# fÞÈy·ý5l*NŒ¡.$‡#Þ@¤Kžò¤9”'” š ›”ÿ͵+¯æBð´‚2® ŒÕµ0¨å”(rò(ù¤éçû‚A:_«€“Â^½K@kfún¶ €¿m?ÎWçÄØÈå&ÚŽïÎ Û)¯R™WLÑÚk&ÐN]x$$!b:~ÕÕXXË›Å^¨•ïnñ]Z~âj¥ä‡Ìù•З›F¿¤pÏxùqžGL&Lì¥â•~ãoe` @[Ì‘++MÅÖzÀ_ošÆ!Û6´·²2èÿVV*GVÅÒ’¨v„Ž.;¿{‘öücs‰ Ÿ¥›ÎV+0!,áu 1µ²™t·Ò¤ð6©´ÛR™Κ±P 6œ»séZ_«|öÌ`Ç‚oaÛF¼¾‹³•†9±g¥,ñ+ ­iuðYØèâë×b“ý ÔÂú2¶o},v¹žå]\/_Zéè®¶ä©ËjŠ¥)cÁ9nZÍMÓj~›6f·„ (ŠæÏmeVclï5ZÍüÂKüü²’¯^Uún‘ò‚ö’­ÇÉ‚¦ÖÜFfâ³'9±rÍí ¬}ݬ־ŒÏÎÄ.êÀí³-ë\wÄq“Ÿ¦¡ù*|â ¤ò/¿äU¬ÛÔŽ]ü±u}Ë–­]!#ÒwçÓ:Ñ? ¥¡ô L€K¯#KFfñÔ±ò¤íL—½8²Îìç8ðïèòϘ¾M:7è6›ÅÄBšÍ2ãþÉ«jÇž²[”àÛ#¾[Sß÷ ÀÒüäa<­ l‚:yX·ÏZãÉ‹‘++v*õÁÈ4ÊCx]*¿¬ËõþÁ?WÚêhkSÈsQû¸@Bxš7¶ï©Ñ¤„î}[¹zÿâ°@QGßâñç¢H×é´T.8ýBÝe/CõèôD™ƒ&:òÒDOÝ›ò’Ýt¶‡uR9Z‘;|ó`®TL¢½<ß‘ÎÈÉF:Ó u”—Kˆw#ù%7úígÓÁåm5!Ïý£7:ò,5ƒT3¿Ç&Þ1¬í SdÕô§0ÙL6S€²ƒšsj¥5|½ôøy“§­µ›8ºõüŒ×Ž $± ˆã4$oîî„C"žj2’íÁ‹åÀ\ôewãŸé¤—§üõŽ×(š÷$?–Îgaæ‹û²“»³}é$±‹xjïAtÆË%?楽]ù”M·JL“ñ'&Îr áp®™Ÿó"~|¬ÓG<Ú…Ô™†B>$„Ë Á›[»¹ª b9óW~C«¸´¦=nü^8,&4ØøÆŽNa4¶ß^öË»ˆ•^È»+E+KÇ4ÏïÁåoœêÕ¥ æý9¼4­‚š#…Œ y†QÄLˆæÕî*ÆÆt‘§fßd÷™$÷YÄ­¾¼¾ŠB¿Ö[f^jiÖ¨-Å‚¶Œoê¼ûî³ ½¸‡1†N‹ëç tõÊl5Ï;”LÓiÜÉÜŽ^y <ïÚ¸VôMh6èl½Ù¡!¬ô`Ú´všïI^…T-‡}ßÅ!^^º«–.êAŸ@íbÈ/ɨùô#°º··ÒÚ!£hcŸ°iËNiB*„ŒýØLw*Í„ŒƬõÃH`chXguØ”€"ÛZ’¥:JöÕÀDÆ£ù%6¹BVi~~Ùu2¶h´q2æïL5ÚÚ§V…”Uš;°½ÉÜH½ðqCê=tÜg×~µÍ>qÞ¤ýë­¶P×—I³«Y#ýýŽ´E({¹÷„Ú׿Y0Xˆ)ŸŸ%A‰iúREpÅêOåwf‡FÕ·¿’&QÖ¯¨E´¯^à–¦bäè vxx½¸fÈÍ# Ö–IН{hk{YgZñP+Nr©J¥}e›AõY‚ÓLŒë6v[Üs–‰Eñþ_ð>+Ž—æ €EÀ ¥]¯»Gèµà„À+nçb¿¨•§Ú&§Þÿ€zèð7vâîCÞÈö…tUìÿþ÷ËsíªÏ¾“e„áר†0‚ÿ#i 7ðxŒj€´H$nl ¯hŒEX8yoC„yáw’)ùÍàÛ60–¾H>°ùùôÐGÿ¥¿O$î^WRR¢à6‡•hé¯m¦°ÿ­aóX%ëÿ—l;>”8‹‘c{Ï–•8ò“_L•¦”±Ÿžúçã¿9˜¹In;]á&0UV=Uþ( üüû“}·ž›ZtëÉ7ÏŸ??v°Ú¦T:í•þ4D_Ø2ãØéy%˜Lœ9ÏNµð§³ðtn(Ô"áPY5o†¶jÞ\…¦Ÿ†Ïâÿ²ìÉÔ¹m÷ÿeèAt(ñ&Çî„Z½Ù\ú`étóØé²‰Î7IÕ_<>g×·ÍçGç9bÍÄ›PÖwU¨Öiˆ?/j’>›×–=X~j¿ßCUÑódÑ·¢¢w¾9±ïÑŠ0Öœ8;z9ï>ž8IeÛ{úüÈütsâÌ'J§ë&gƧ¡€ñÄ9ÞKOjLÎ#Öýºónµ»Uâœà¶‰$4™8¬ªc2ެ}¤‚9”ðÉ;¢´ž]$•èËßùQj ¨½èHR2ÕR2÷L$ªuÉTŒ6ñºê RÍ™ V*Ï3ãשT0¡}¼–kÊÆ×–)€údâq]µ/“3JSÎSå§–—ð|glµ(ÎE×ÕÄÀ„ÞuëǧþEœ¡b'AÅBo¡çpž®|Kzg~‹O'àé>‘ñç}ÿS§÷]ªp–lޝ ;JEo\D6NYÕò9‰ Üç7 Ã"in&\ÌdNkrÿn@Ô›ÁŠ‘ Ûé¡Î"Á2b¦ó´FÌs3ö¸F¹LPÆX3ežª¾äɾÔÉû–?±Ñ 6v„7ö ›æT9x±ªm/ã-0ýjœÅ˜Åªˆ÷ÉÝ¿‚æô•¨|²LWW\$7&C B ëhRvî¬ëµQåìä¼ýdBo‘ùÊæ$NN”ñ„ñ²ËI¹«H'¹&rýÜo‘6Ò/ÕUð,4ÂW o~xócL™3pJÁe˜Øxíwâôä"n”„…"§hü0‡9ËÕ“e Ç_žÓµ`bã%Éûýlg´÷_yë»ï¬öøœñ­e¼Ñ¦?O¬çÎKÖ;Îûö|ìt?7ÑO›&ú)ªÏSØ¥J§û¸ ?¥µÅ¼ÍˆbÇiú ÔìÔB¹'O—¿+½‰jéD€Á;ô]¥¨áÂaéÅ7Êiöò““?=Ë M]ËOÍ×sSIÜÙvçþE‰#÷šB¹¿åÊ]A3pæ:ÏN%αöº°ªgº˅µp&¬«\X53aýŒ9°Â3aý± «©8Vétnbcuk=N]ªçàÔeê:È0öbE Ïæ@ž {õ<‡çÐ-™¾Š;ާžù-úõçHµÎIm›…ö8¨ýhE@7.܃.˜J:ÿqñ©ÓŸaj8Ã!›«ýó4t TêŒzžf¬ƒªžšêz|*ñ<==?•8JOG©ò1ĺäcGQîiA°R8Gi@Í ÆöV̹þ^1‚ÏW‚|û†·j³èèåÂTús¥ªÒдè4áŸr̶Ùlíj{ ä/%â7YÄ$âË/‰x• ~­Eü>"þ£’K!^ÁÅS©Ä3ß*d2tI…̹þ–,€¿å¼Uæòb/SÅ^f»ˆŠý »”bKx!¥ª2«j*ä —TíàÄK,âXôá÷^åÄY%ôÍøïÊørÅ‹ÇK'>¹¬ÌùãþÌ—άæ+,ö×¼À·åÁ(/H«&˜+Œj F­1hZÀY×™=þ½³ÇW˜Q ƒQ^VM0W8ÕŒZcÐ:µcŽÍ¬¨ÔÛ¬ õ¶0ËØ©¿. H6¨fj Äèß.5¸"ÀìÛ©³fE•f`Ö¥«O}¤D0Û ?ˆììü±ÒYõ/J²v®…z.%Y?—bÖŽ £š‚QkŒ¨Sßb³P‡d:{ÑÖ@{58¾zºR˜H\»y“¯Ý$Þ¤1ûƒ€Ùõ¢÷ }j!ÃÙJÅ•ó¾²Ä7|O—£á;”x‚LŒÕž¾ßäpz“…§×û0_ÕºÑJ¿Ò„ù4sý/ÁƒÒiyä¹7pîIi*ao5m:”x’(€ç¨^Ï5'žz°t:«Wê9-aNâ‰`„Á¤•¦X,€3™xî<›~XÈulïqÜeá|í{å$Ï…¾ï•Óâ‘s<}T,r³Døø¯4WtŠƒ|ð+ø4µÿy?ÏᣠÆ'Aó¨ƒæØhdÏ)´sœÌÂÿ)a|šÚߤ`|:”8LŠsôé€Ð§±¦Ìh.^whÍ QÓý!þtü{§¾2A;áÌ÷Ní›#ðKæï?Ï_&ÑÆÝT?à˜ÃkÆÇöĘ¿¤|ÅÒy²äÈä£ÏâË“ÄAŒØx²äpÝæ«›*=V1ÑyX¼zxqÎÆƒå^ªÃSû~€b8ö¹W0à5n&öó¿­‚¿ãûC3?vâ ”>ã‚ø“`B~ò}!}‘Í ;á`…û6žº^¤èYÊjñ~Xò~p⋯#Þӻ扷N$^Ç®{‚º.Úª²ëÆ;®+SYùˆtëäúЉÄ+'ßÍi竞H¼æÈÇG?#ëf5‚šÑþkyèºÙÑŽÓ£·Ú…ïÍØ_ã^þøeã,/»q¼ãƲéA1ÂÄ}Ú bGP€öú ›RYl¼#V6}; 3£7YöŠ©³æbØwל»%…’ÄPQp,>cqØìø³Š´ÍÁ^Ý‘{ž¾ ã¸Qn!‰˜$%ŸäÛ“‰g΃*>SñßD¼¦ˆé˜L¼F&Á·X§Zþô:<]ÁßÝ>O¬=ßœx|Ì'+9 wpt>=‘¨h.«¹^íä{)&O–TŸÚQ)7é¿ôo”¼´åüè““ûž2¶ïè^léôvôö&1‹.Þ»Å*Ÿ3Q—xÑ $¡GM'³üÔÓbyñq§Ÿih„Ú³RºùüèBËÕ³½ò×…W.,ïÿR•xqîÄ¢®¬›ÜLtœÈ{/ÌHÐK¿‰{éf=KÀxâ…‰Ä õ¾ËÄËEIöƒ¯Bó S¥ËO=B˜WH†¼Gjµôs¾paâDѽøjŒ®šL¼b¸†wÈoøfÍÃj 65'(%ÇõòØS¯GWý‰©O¢Ñî:h 4‘@: æˆt@›)Ò'ŸD5qS´~³ò=d„5ÒÁ8…¦¨üÔÃåÁyæ—K¬f-ÚSstI÷ß«à{9¼[Á»‰Ï‰Î×6—ó=ùø‰b}¿ÌÁoÕ‹Â.Øif 7o¦  ]Q4kø˜¿ï'sÄ\ôÔ‡P 7.BM[ÕpgnYõx‰˜OZFäüh±7…›Wˆ4ãR/]j ›T¨•Îzþ;˜0]È©xŠŠç²•8ð59¾â kþ·‰gÀð¯R§úèkºDùkàU‘O1µïáˆ5ɾTí-ª‚å„L²=‰Ý4„¿›6Œº)X ¶TôÂGîjú}Õ¯s6F©=¬¯4í“ÅÖŠ¨]_D¦F26­®wpjúK\Úeîô{È%­¬9׿L&í?û͘¦·’+6ø8Ò<Oïÿ7”±ÃךL<É[C“ÅO<>"Êßò§ÉÔÙm÷w«½Ýe%j¹‘oa§ÍI6¦íÇxì1ûî»#ˆ[ðííÎ{wò¦>¦5µøðå„¥&œ¶ü† q‰o¤í/ ¨ÀÄÙq*l2q jý‘órÓú𠳑kÄ7óÔ¨}µú,bñö|Fc¿}™`㥉j1¯°e#U NfTµùîê~A}Ð$vÒS„ÑWOI>y<³˜h®Þ{ÿÌéÌľGç¡Ç`Šß]<ýSµø–Ô„9Á䳊ï79=ž8É·}žÆ¯Ö” ‰éн ,ql–§ƒ -]Ê»ÐÚÎhå NÈ3óª„&gú<+f"q´î ›×é»rn®¢xî-›¢S¡x0¦ÊÃsõͲø†í@ëV[Ø­Ëe}Ò5éd“rF™8ºf345™·¹ÿD96"ñ}F^ý©ÝeÖ—ln±Õ·êókÊ&Gñ8”ÞéS§p¿|âÌìS¨#g¨¿<ò[/ú§N7ñ®Z,Èœ½ÕÜ\Á#nõ‡lÃ,¤ñ7Gê[T€Bæ ”ø4µÿ¤‚Or¸â¼„+øøUÆçVœ¦%/³ $å“ùœ~$TÈ•cÞ,#§Ê› éàs[Z—âMí7ìéñÁÆÈIJ9Ð:âˇ}“5çÅG9´±÷¿½¥>ŒŸ}z ûCû^Až¸ýØ÷ÊkoÉøÑÄQ¹‚rfõ8êøcóð/øøc§ñ/¯Ñøc¯ÑÒ"J#qf³6²":íëÇ›ôÀƒhC7ôˆñ—&‹Æ«Õ·‚ ÆNœáÌÔTÆîíW9GÛ­oæËÂç”·:i6T÷¯™ë+øþ£‹1šk}ÿ:-EÒS­•n*L*óñݧü%é27J»‰2ÏG™Î¸òwÎçXŸÙèµ"øã_çCû2ý]ÎôÉÄ9hþa ‰|‹@û·™õç•iŵ Êãžx¨"V¸âˆ¨&¾ŒŒRtü1¬Š·ÿÀH\[^†‚gƒR¥£hEiD¬.µÌ*­hvÿƒf^mü<˜{{甹.Ç÷¸ÚX âþa¯üÔç6S‘ËX_ì¹ÂL•0lÄí@ ÿ¹5›û?YÄŠS'ÞOÍßWH’\EŠÊ¸°4í’mA»þhv` òÂZ«HÉØî¤³­òñô†ý³• ‘r`y³­ªÉìF%ÑÁ—ÓCÉÈz˜3òz¨Y@—\Nó@%ø&B3³”›»‚f¬ÐÒ2a»­?Š Ä ¾±ŒÞä,_Í z ™¥BtJ.^Eh‘E*_ÈÈ3~c{Ïá7Žõ]çlӇɾeZ„«4ÀL¿ŠñØšþ…>ÅŠ)nËŽ]ûs~þïöQå‡çò½ÞÃ÷*K|fà³Ùà{a!üŠâø5좠}â]á/ìKŸ!±â…1…FhzáV‘B Qêfÿ>)`ÅòN’é³™¬¸´DrX ½ÅëIö¦êzS™‘\ªO¤·çFú³¹ìPOzzO¶o…n¤·: ÐÓ] èéÉÁÁºíxখ£#5’—o8ë§¥»Øc[ð”8q¯K~ëåÝäÛ:ZH2z:íÙEkéÛƒ‚Ÿå¯ª-±µuˆÍÚ7UÅõÖFçsyÛ²ÃühÞ.:V½›_r°ÎÒä@žéÖÎÉl]I¨üNˆ¤7]'_ãAªŸIõâáä={ÔAúáÞæ‘zéúT½u`sÒº%¦Þ[‡wìN ¦ð: /ìÛ`Fs)ƒâö^ó>žà‘ãü°èž”¼°$Ä{EÞ®AJbäFýŠ'þ„kC*"Ìc)"¬r¬¨­¯Bã§ zÀ¬ò«£’ÚY¦ -ô¼-æe5IºKIñãÓ{ät[VŠn£NöîLîHÕêèÇˈxP„õù‘Üh/Ýr¡ ÆG ´ÞÔQôDx›Eo÷^¯¸’ÞrJzn0ù—ü5‰rKe¹ïÈ\?Ÿ,·Á*÷“Pî“s¨Ü¹Z¹k=ùÛ¼™±˜Ë´«4Þð7ù68òé¼áï™-Œ={L›áù2QnµàM§wßG ïTéÙ?=¾Œýëy=mŽ…5Ç(ár žkÁLv<ì*ˆ¹F<#ß/ékôÕPÞ->Öëv ®·àF n¶àÕÜfÁïe€Qù¶Ò“ðïqHÿ¦HÏZéØcÖAe韰Ò?mÁ“ðïð ŠÈÿ$òbÜ]Bð7¬üÏY0îC|ÄiÁ¿¶àó|å¾Ö‚o±àˆ¯´àuÜaÁ÷[ðN þ˜Yð#ü þS ~΂_¶àXðO-ø”ŸµàÒ2¾Ú‚Yp­7Yp‹o´àmœ²àœÊ‚?kÁ¿gÁOYð7-ø»üª¿nÁ¿°à3üŸ\YnÂ×Yð-¶àÕü> ¾×‚û-ø£¼×‚',ø1 þšÿ¥ׂ[ð?Yðq >mÁÿaÁesMø* ö,x©¿×‚×Yð=ÜmÁY ÞcÁŸ¶àÇ,ø+ü´Û‚ÿÖ‚_µà£|Ü‚§-øœ—\fÂWXð |«‡-øN nµàõ¼àEï__ø/Û¬ôXp?À ÁÉû ð/öXéû,xàš¿ùÀ'5ø+ŸÖào|Fƒ¿ðY ~àsü*ÀÃqð*‰ŸZåÿ žºŒp ÿ×çqÍ1Âþ¥€Ù' >-àŠa‚mÑ+©0áË+(ÿzAo¾¿Ë‚o°à[|TÀ·W˜ü.¯0ùi´ðWYð nµøÝ,ÒAx<ýƒVy]"ý€€“VzÊ‚‡,xÔ‚?aÁc¦¼µøû} ~‚ÿÌ‚Ÿ³à¿­0Û÷eK~ß·øù‘%y¹D/“—µ0y72£»HY>at]&·g2\¯d½Ù<Ë47ÂèúfÞÉø5;»˜q½%ë™ÉËötïÚÅèjP¼«ù÷!2y«ãw}2û^(fÝÇ’}}HcñŽæ¸˜bé|7POåò€È—  –(ºÅ‘Y— 2y/kï§°­Q>Äú¢â©AFEÅC«zHS¨nÜböšÛ’áÜè)›IQ˜‘1ð”VO½üi(›Ô\k¤oâám-Ÿ{³CÊ~–´‘%-³Dµ,Q#KTfÉkYòF–¼¢Ò¯“é7é0צ•Õf”զʊîÒ í2 íR„úuJý&)Y\kƒFªÁ $ ÜV-ËV#‹„€Š^µ³j ªj¡6ƒP›OH¯ZƒYµ¿j}zÕú̪õù¹ YöYÒ”p®Mç¾Íä^¹Ö˜ÆYÌ`,¦²èº3•I‚¹6P›AHBEç?—Á›%UçZµR2kºÚÄLµ‰)Á7ê¹Í\J¹´âÚŒâÚTqº¼My5*åÒ™j3™R æ2ÄÐo‰¡_IUç¾Íä^¹?O‡ž£C¦kD: ʵû9Úõ í’„ÖºFãJ(×®•Òn”"¡¾G8ñ1 †ÿŠ@– 9 0˜ö]aÌ¿ì”É[4™¸n‰ëÖ˜q“93.]cânq&ïuƒÁ“Ó¹Þ¡a& ÆY’ɋݿø™7 3u[9ë€Drø%ŽLܾƶäû™¸2˜Ñ%fŒ_ÉŠ™!+ÓoaftÛËP}2}82q/×Ç1uËmýâ9F2¼DWÜ1u-S—Ú±$È y‚¿òB5&CƺÐ…ùÝçEˆë•V1ö§þk¢ïWr9cøiIé<Æ~„áŒÝQBéxFv镌 øã%Dç9¿$ÒO ø7ÆS0¾¡”਀׸[À¸ŠôžÇp>øÿ"¾æ,¥àä}Cð×ÂàÄ•.€¹‰¿Šá»an€áµŒÕ—SüN ¯þ\9—ðkçR¾ o`ì‹s©œÿ˜KùÑ·Æ|÷UP>ô-1ß¡ Ê÷¿DøÿV¼þ£‚äuY%Ék_%á¿\I|ý¸’è¼§Šâß‹á0'®¢ø/Wý¯WÝé*âwñå~H„ûDøg–ÜsÜyÄï†7Ãœä ·\At>)ÂoŠð„¯¿’ÂÍ"ü´_á¯Exý| ïaÿ`>•û‹ùTŸóó©wA•ÞÆØCÕÿWÕTÏ׫)ýÚ«ÿvÆV`XÃØû¯¢ü#"þw1¬…¹ºˆÿGÿ¿0\ÊXùÕßx5Åw`¸Œ±ÿç"þï1 "þêk(>ŒaÈýŠÏŠøÏbXÏØ“"þð5TÏRø*†3†Q˜·ŠpÎu¾[„µ"\%»1ŒaØÀØ †+{P¤N„O`ØÈØ3~A„?†°t9cÿó:’÷[sørx.ibì ï€ò0\ÉX+†0g¿ÃUŒ} C˜3 Ã;{ÃÕп0\ÃØ÷0laì®…þŠa+c¿Å° ô t²$ýÃuŒ5cxc0„‰fà ŒíÁð}Œ=Œáû{ûûïn{‚á&¨†íÐo0Ü ò[á=Œ…0ÜÂX 팵`ØíŠa'cÅðŒ}Â~`x/cᇠßcøaÆþo ·1ö+ ïcì?1ãwë{ ¼Ÿ±evƒ=Ãð# Ï&KcØÃØö‚`ØöÃc߯p;c?Ãpco`Øz€aÚt¼dú7†;¡ kÇpˆ±`˜a¬Ã,c“¼ô‹~”±¯a˜½Å0vC0ÜÇ1»}½dÌs1|€±1Ü ý Ã=ŒmÂðc g~œ±ý>ú…á^°/>öÃO€>cóð£~ þÁD¸äw`®ŒáÔÃ}Œ­Æp?ô ? ý ÇÛ‹ágÀa8ýÃÏ2ö] '`ÀðsŒÁp’±Ç°M%0v%†‚Äð `_0ü]è/þ7ÆF1ü"ô ƒþ‰áï1ö- Æ+ ‡~Šá—ûW ¿ ã†ÀØÜÅ ·ÀðkÃð« W> z…á^aø5ÆþïC?Äð)(Ã?flÁ-dW׉ð¡[Ⱦ=q ÙµiÓ­ìÈÎYBväý·Sx†`Ã?p;½·Ó¸ñëÛɾ×ÖPØ+ÂQ ÿìy ὆ìÁA¿ZCô~XCôŽÕ½Cµ„ÿ–›–RxÃ2âÿ]!1ž†¨÷ ø£þ4†à$<¢rþ¯SÇ|^„åuT~U•m•ÿÅ:ªÿ/ëˆnY=Ñ][Oü÷ÕSú_Õ“ÜÞáÚå”ÿO0|úùr*çÄrÊÿž0…w‰pq„òDþç;ï‰RüP”àÏG©üW¢TˆÝëc„Qùïa.FxƈÎb$¿håÿrÅ»èi yý¤è.ZAù;VP¾?0¾LGøÆFÂË4RyOŠð_ ÿßI®o6’\Û_úg`ŸßKãÂUMÞÞDòüDÑßxÑßsñÿ%㡯þ­€ß½’äqÓJ*·k%•óþs„¿ÁØ÷üÕÄ×ë+‰¯_¬¤öŽ6?­ÍÄÏÇ›IN¯6Syo6?7®"8¶ŠÊ_¿ŠävÏ*¢ÿéU„÷Â`£VÂVúç`ç0[Òá7aœ‰Sþo#üWЮƒ/öªˆÿ!Æÿw×üŸ"_Œ…%ÏB?»“âëï¤øf„ÿü-¿ˆß‰ð_Âø€á· ?ˆð÷1|ôS„ßñ¯ üÞIåŸåýJÐÿqÓÒ½Ãÿì;†ÏC¿Äð; —‚s~†ßeì¶ÕD)„¥/¿«Iî­o½ÀÛ(ð¶¼{^æÿÐ7·Käÿ8† öãñ‹:„¿ÇØÝß[MíúGÃ$áODú7VS;ÿ•ˆÿ® sá=V“>é?üüãÁ§û•€Ë×PxùÒ‡Û¼J„"Ü.ÂÁ5¤¯£kHΈð±5¤—_^Czù§k¨žÞ+¾íƒñàãýá—‘þÏ"ý¦¿ üÎ5TŸ³"ýß×ße-Wbx±ù-Dg„¥àÞ„0L¢nÅðï@Ï0<zÖBôb-$×&ôÖ"það^‡Èÿ¡ê}‚NZàe^ÓÁ7|HĉøqÁ×ç__j¡vûCAÿë-Ô~ßü~K¤?/à¿i¡ö;,ÊýHÿ‘ÿI¤¿ÑBíûÿˆøÓ‚î¿!ü}è÷¾ qk©Þ—AX câÕk)ÿµk)ߢµ”ï a,¬YKý=¶–êÕ´–êÇðïA^ï. _½ø[Dø!Aç~¤¾Zúÿkïk ì:ÎÂfWkYÞÈA Nâ†r½’cI^­Þýy?k[±ä]­$¥­,ÃZ•Vï=yŸ³ûVì>ÛEÁÇNìb¨i\jN u‹)\Ž¡†"ˆ 8 ÀáD´IŽ“èœ:Ûª;sç»÷ÍÜ7sçÎ}ÿ»óI³ß›™o¾ùæ›o~î̽3·Q9«®éîƒ|¾êåQ‚¿ˆõvÕÿüþÐÊñìm´_ú5H÷"ðÿ-À¿{ÕÏ þOn£õù€ß€ø¿‡ü¾ ø;€/¾b‚âwþg´ÿØ8Aû•픿7AËuÓ•óÖ Z®ï› ò„ø#ÿC$Ï]Êþ1?5Aû×3T‡|~‚à?Áýä÷Äm/?øg þS¬à÷,Áçñ¸|^þ¿ åøo$<†øýñÕËyÀ_š ú¹ñ_ƒr|ðÿ„øK yf!zY;Iãß5IíeÃ$µŸ÷a<ˆŸ F&©Ýmž¤rl›¤ý[Âw@úÛ&©Ýùüsðÿ à;|ßAúS“TþÓ€ÒÒ}r’êë''i?óiâÿ3<Ÿ$÷Û??Iõ÷‹“T_¿rþ:ä÷_ÏïLÒrÿ>áóK¸}B~ø¯H8ÙÛMýkwÓqvñã~ÿþ ðÿçx‡øà)þØ~ˆ÷³?áÇ ] pÒ/AüÀ?éÒÂ?éžüKþ×!þ%ÀŸ‡ô éÿ ¿é¾ ø»iyß&~<þü?Àÿ´›öGWMQºwOÑðï|í­ŸMSTßîÕ„¿ŽŸ¦¨OOÑz;á³S´/Aø¿š¢õôIÀ? áOC~?þ_ÿ¯ü%ÜÿB¾¿r|vж›?˜¢íê¾·)j_š¢zøëÈùu‚ñ|ââm¯ÿkŠÚÉ¥)Ú>þqŠÚÛà*ß•{¨Ý­ßCËñ^‚ñ|æþ%}”èÜÁ40ˆûiÀàM€7œì.¾ðNÀ“€÷ÞxðaÀw¾ ðqÀ%Às€çŸ\|ð€Ï~ð#€üà'?øiÀÏ~ðs€Ÿüà¿øeÀç¿øUÀ¯>øuÀoþ2à €¿ øMÀ¿ømÀ—_L6à ¼ðzÀ_øZÀlÞx3àQÀÀàà[ï< x/àý€§|'à»\<xð)À5Àg?ø,à‡?ø1ÀO~ðS€Ÿü àg?à+À¿øEÀ/~ð9À¯~ðk€Ï~ð€¿ øà•þvIñô‰±bûòÈ`ÈyŒmòŸøí\ÆóÃ3¶›Ëãß¶ífr¹L6çÚ(c;Ž“CV¦}"ÕáôrmvɲÐ=µòrÜ'$ ³µåÊB'$ê(l¬T‹ó§KekÄßÛ*ÍÖÆæFà»Âí[1XGnÛ7aù/‰Xþöâ²E·“¯ ­ú6ê̊&÷›Å|,˶,œ„ Ÿ¢áN4| w£áÀÇk ·üð¬þàÍŒTsXs:rMKäš’È5%“k”‘«‘NRŽ|C9B1öC) . à'±™qŸÄ!óù Ûøˆ“É6 Ö¶€“±IH•„X3‹K•»+U«8·H>:wŽ4Kå’R|*È¥òË=ˆä i(„¨ã$yÂÄæá„\|åx6N$äÈp%‘ › ³‰<™ãss¹0×ã“úå «@Ø€q2_ ÛH– !+¿þ#a¾ D aÚj6¦-aN&L[)VØVq2;°Žz–ŽØÎRZ׎¦ s¼0åBLÊl`[Lž¹0¬^¤|`q±Ü !U1†j<°Ìzžn&°Ä@e~+¯øÖôìR­2;ÏáU0;?oýã.¢“íÃ¥ÅÓ'æËÖR¤#˜±­.t‘l¿x¿EŽbÀ0*øA¹.TEê$'u““zÉI³ÉIsÉIóÉI ÉIÇ““BoŸŒ6A}YmPaކáÃ0†!2 ׆1 ‘ax) #Û@šUFVDê ¹fE¤5Œx®¹äņ°XM†+oñå²ÔWŒadaÃ` æ¸õ)jô™qÆñÌ$Õ 9QZ ³5jÌÖ¨2[£ÎlJ³5jÍÖ¨6[£ÞzstÚ™F½9 ê-èPœ Þšh‰ïåu'ßQûÙ¦; !WñH#,V>y±Òvñ\%…xTÒ¨¯ô…‚¯§Q6:kAG!æ[Ð(›F½¥ï(|5¦tN‚z‹é(ÌC¬™Q˜…™Q(;Š´‹N(œPBÒ+ ‰ë("ì[ÔQ¹æ’+Ÿ¼Xi;Šx®’ŽBX.[£¾Òwù€]^È×Ò†|ó¬¼â:‹dвŽBÌ· Q¶ñäeKßQ(øŠëMX6'A½Åti¹…53 3£hè(´fFÑË3Š\ʎ¬†Ç«?VÃ[¸F!æ+®2qÙ4ê,}G¡à+^£—M£ÞZÐQˆùŠÅë† ê-¦£È›ŽÂt¦£0…¤£ð_ú öP#¯¬šÔؾ$žÔ<4ô% ZótÒª¾DLÛû;¨ ¡LGÑÇEãàÅ ¶Ši¢|Ò¡ UL:8ZŶ7G«˜tp´ŠTù¤#žÖQL9ZÅηΤƒ£MPofÕt…‚ÖÌ(VãŒ"íjH!î½’?]i<7½Œ!ä*¶9a±4ˆ›~'Kü˜-™„å’tâÑ‘«°pS-Ümåv¹kÜ™åvq=!­x÷2+”!/ä›Ó7¯Á· Q6ñηx÷2“\^G¼ó-æ+®7aÙœõfvPcHÍŒÂÌ(ÌŒB9£0;¨fc$ÚQ(FþÔ3 Åh.žQˆg âéÄòŠgb¾©gŠÑ<“\^É;Yb¾3Á&gfÕtêG®(^äžøÑCÜH³ñIçу£¿r›àÑCQ6ñ£‡¸‘*=¸Æ¯xéVþè_6ÕË›߯ޢ`: ÓQ˜ŽÂtþÅ« çk™—-b{“xR³ÑЛ(hÍB† 7QÐöæB†yÙÂt¦£0…²£0/[˜ŽÂt¦£PvM¿l!Êt}ÜQ4.p‹æõMAGO»^ß4/[˜ŽÂt¦£Pvæe ³5"}Ù"ÁÖˆâEñË ¶Ft^ßTÈÛüë› ¶F/:ˆ_¶H°5¢àÛüë› ¶Fü$õOQ£—|Ìx³?bæQZ³š!èR´+p5c4Ú¥$¡Õ¨7G£Þzs4êÍѨ7W£Þ\zsu:Hzs5êÍÕ¨7W£Þ\zs5êÍÕ¨7O£ÞÎÍ‘ß+ëÈïÖ,d4ÊËÉ ø$£U4’ b¾©2â˦šLÈ2| £Õ¨·ô“ E¿ ± ™Lˆåm~2!^<ÑXp5ÖÒO&|5N¥r5êM5™àøj,J&bý$K«šLp£Š¢Þ8¾ ‡’É„xåMÑÞ8¾Š±ã«hom‚z Ö/ÂÉM@óŽ…Y•0;"ÍO$sŸìˆ˜U‰HçdV% Åä õDBA«ÑÞ<ö&™HˆiSO$´ý¤§ÑOJ&bÚ4 º*á‡6}ªøÑÃ,Iôñ’„‚6õþ†¢l©o!SÈ›ú2EÙRßB¦h;¹…,¾lfIÂ,Ip2h´·ôûвiÔ›j&ÁÊ ÙßH0“ˆ/›d&!,›j&ÁñÕ8ÍM²¿‘`&!.›d&AÍKšfI¼(ÑüDBÑÌ‹‚‰„‚Ö,I& Zó¢„`"¡ 5/J$žH„´‰´/q+«™HôñDB±¦oö6‰xZ³·a&m_O$âmÇìmÄ®Hˆiû{oƒ¦=Q³ñ+®#bI#ÿA‹XÝÂïYšþLÈUqæ[,ñ‘kÂb5}º«äk0ñ—Mõ¥:(O>‘P˜Œø ,¿«Úk±Û„ÝG±;Nt€Ý3Ø}»×°ûk†ÿ×±{»5X)ïÁÎÂn »ØíÇn»{°»»G°û4vÿ‰Qàoàß°Äi±Û…Ý4vDZ{»ßÃîü @1 è2\¸5™_†“òOš*]Ò|Òæ+ã›TÎÕ¦š~·Ó?$ã›TN]¹ hÎßÊãh¸Ê OšOÚ|e|“Ê©+÷›·ò8®òGÓæ“6_ߤrêÊmÀ@3`æÉø&•Óè']¾*þF?ñüûU? hTísµcÚ «}þ<¯ž—øeXõü+ã§¢O›¯n~Ió5` Ð/ýƒn>ºùÊÚiÒö¯j÷iû¤ù¶ª?ÔíŒýP¬[2º´õ“v|Ó‡ÒÚ· ŒýPlì'>_ 0`ÀÀʃn¯ïö:6Ý®Ÿ^Ç20Ï_·j½7íóPÚç¿N=×0`À@¯A¿Œ/*¾IåÔ×[-¯ŒÒü“æ“VÎfõ¤›¿±=yeü“æŸ4ŸNÙ Ý~¾éul º]?½Že`Ưøðvç«›Ò|ÒÊ© Æ~âÃÛ¯nþ½f? 0` »Ðíùi¯cñÐíúéu,ƒèþÙ‰ÿM‰?éûÕª}?U¾2ЕS–¯,¼ÝùêêS–o»ëQ%Œ¯LŽh:Èèu󕮜²|eáíÎWWŸ²|Û]20ö#ŽÊ/«ï¨Q¿,Y9dý“*_]9ÍøÕ\¾ÑüdúŒÒÉêM–¿¬²þI•¯Œ¿®œfþlÀ€~hÿ$ó§í×dôºùêæ£›¯ù~0>_û¡X·>’¾¬kióUñOoßöxÖÚÔ _'z±àØŸêOœ^ŽSÓÅùàçïf‚j'šB{&&n²6ï9pd‹åŽ96X\ÝĦ•KÖÞÙšµ¿R=}Æ*ŒeHü¶{5õ?OäÏá?Û¨¿~‰WÍÏÖŽ>FèϹúïƒLp‰ Ü|ªaZðpQ¹¨„K‡ JAÄ€N°žüà¿øeÀç¿øUÀ¯>øuÀð›€/~ ðÛ€/¾ ˜Ô!ÁC€×^xàk[€7Þ xp°¸øÀ;Okoñ÷¿ÙvÆÉFî³Ý\ÎÜÿÖ ØX©çO—ÊÖÈ)Ò‰à‘tlndxxcådµT>iYwì94}lïðFì©TË¡xûÖ­[­Ã‡öMìßw`ß„eaïöa<:——ªV¥Z³,ÒµLØ~[Ÿ9?ŽÞÜHR H*I@Sœ#³•ö0rV<™œ]iñô‰ù²µÔÀiÆ>:ãÖù…tQV3¥#W.úÅ¿ýàƒñåwŽ´üËɲ”Ä™ ÙÌDD¡¤YòdÒl#Üâ³uÍ5ÐU”.š­Œ®1ßRRÕ¼*Kqc•’ ñuµù$VŠ\)ŽJ)¹)¥]mâæÃ“*êš6(…ŒP±+Ÿfˆ’ Qœæ„+ÁFu<©F³Ë''-$'ר‚Œm‚ú ÌÇv»£VMqú¯;êË`eUYG«¨/¶K®[Û³ˆ6ŽL¿bú•Nö+ý÷è”È2øbµÊ2x ÄZ_¬Öõ+üã£È2Vïóc"ËpÚbvr˰ÛdY¥e¬Þ‡èþ° ^€Ö&üB‚È2VïJBŒ&v›,ÃQZÆê]Né—h÷ž_Äï³™'ž´×퇫‚>|‚Y±–Á6V…e°¤ Ë`I{ªgiýÌŠsºn\t°ÏhÕÌŠµ VÖU6¿2of#f6’¤géõÙH×{–U6æDzá6¦o1}‹é[ZзtÝ2º¹,ú Ïô,¦gi ÕéFt¡uªt6 t–Ž5jÍÖ¨6[£ÞzstÚ™F½9 ê-èOœ Þúh¤aIÍšZ«GÓSèõœÎ4êMÕSp´õ¦ê)8Úsº¸žÂ¬±özOÁUÁ*žSp­T£ÒT=GÛ=×Î:8§0kî½þôaæ½ÓSpòvé飳s ²šÑí( tÂó_Û—±Bùù/ŽKâ¢ç¿xydÎéüØîýSõ;"70¬¡˜Þ± û7@Ôá]tHõ>DïZ ÷hkÈû±»»2vËØý8v?…Ý3Øýv¿‹è=ƒÝ7=ëÿJ\Ð÷cwý=“Ÿœ»»²ìâŠ>‚#>|©á~'þ5ɽO÷Aýò&ðM Ÿ?H|£,_™œ2ydùÊäl­<íæ£[_íã“d÷‰é†0@ ×ì©×äY=Эñ¬UãAüø”|œÓÍ·ÝãkkÇ'Yy“×c|¾ï»5~÷Ëü£»ó­Õ6ê5y tZUï½f?+µ\­‚^+W¯Éc Lû2Ð ôZ½÷š< ô˜~>Vª~Vj¹ZF?ñÐkå2òă¾<á-¨~Aªß ê×B ú¨~ª_ñ€˜‹{gâîb@ü5 ˆ¿ñ—/ þÞÄ_¹€¸‹w‡â¯O@üÍ ˆ¿ñW! þzÄßl€"÷ ÈU(zKŠ^P€Ðž‰‰›¬Í{Ùb¹c¸(™Œ“Ïàd‡Ê%kïlÍÚ_©ž>cÆ2$~['[¾o¡6{ãÚÅsÁ¯ZùL -•çÇJ³µY4vby{©§¸¸°P®Æ½ú…ïAÈGd-ø½Hüàën øw‹úpÎ|vW1é_ýBo`¼»AàG~ß8àgYˆƒ ß ä;ÈÐÝ˼Óü,0¿ ü[,ˆ‹éÞÃäIà ×ÑwN¢tlžžÞˆÐ[´lW‚| ¬,¿Ç°¢ÆòE Bß~‡[Iµ†“„ø‡"þ+"þµh=ü¾‘2úøZ›øI}~Ñ: ~ãM ýG1¾ÊHüßè{9=y?ç0ã?‰ñ] =yogžá÷qŒfòãG˜ôŸÁø †þW0~Žá÷2Æ/1ôŒñ9Æÿ·¿ÊÐã Ø_CýßÁ¿wÑ<ˆÿI<öï¤~òþ…+öÜZê߀ý®Fèìõû¿·N¿ ûŸ¹¦îßNèß|ƒ ~ö26æN-ÄÞW…Ø+¨s{bofBì%Iˆ»ß±7!î† ÄßÖƒø{xw⯰Aüõ2(rA âoxAÁ¥+(<Ü…‡µ£àpežR†ÂBPý‹~~€‹Àn°IŸ\|ð€Ï~ð#€üà'?øiÀÏ~ðs€Ÿüà¿øeÀç¿øUÀ¯>øuÀíßä«Ý»ÿ/“ÝÿçfÌûŸÉýõ»ÞÂ˪¹;Ñn?xààÄþ}öM›å¿toŒrQ»,æ[6îr¹å ÃåÖf8Ê<×(Kã5sNx„3×)i •'ÊÊË^Ö¹iLX‹#þ4ÔÙbÍœ®V~øtÙš=SY¶ŠGG,ÿÚ,NêØÑ~,ž"ÒqBªäÚX‰MŒØþ3€³]P ‹*Ô¶©F…$”Âñµ* ˆˆä´·+KUš ¥§•, \¡5¯™¶°~ÈÒίè³ñµö#܆Œ¸³Z£M¦ï´›ÕͨÍÚmþ É„%⪱±ã˜éÃÓb‚2¶õ‹l[ÄÏÆ‹ßëßÕ+´ßZSnVüø"?í9öµÂxÄ\cÄO{ØzWµo¾ÿ\õ>ÿwíûÏLÖÎz Ïÿ8È<ÿwTß^†E~Ù÷Ÿ¨¾îÍþŽúÙßÈšíNìÈðYD×ÅÁG°ÛEÖMÉZ)YÅn˜_Êî ôÚ>l·ö{tåëvyÚ-o”^•¾Yz]y’,1!ÙâR4}¢e&$Y>Âé­Å”(Ñ‚RLúD«LH¾v„bÿ¤+F2ù’.!IÓ']RBòŤßînj¿Ûb¶]-ÀÑýî!< ŸCêýîãü®t¿›Ð]ÏŒ™A¾ÑýîO¬M¶ßýÒÚdûÝ­£Êýî«è¾\”_:µßMp°ß½Õ÷ƒÉÞ6Ùïö—I#ðzÒÙídèoÇxš¡'{ÛgQ}ÿ˜œMa йñWßûÁìf³÷‚˜mÄnK nqq ìˆ_­FÁ- –Q¸ å—‰ì5ßx'àIÀ{ï< ø0à;ßø8àêÌ^¦}ðMnq©Ö½ý_/Ÿõ² Ϲ¬yþëHöë{ “áý ÜðÁC‡÷ßPm®K9sùއ±­rÚÈ„Ñþ"LTY¡¶Üæ´ö`#nÞ_Íâ va#.Ö×®æ¡ÂÜq}"jÌËÐÔ\©Ã^lijij>:Ô™ç›c4ïPižK¢KøjÍóM1’:ìÉF¼,‰Žäve#^ަö£ÃÆêÍX6øŽxùÀŒÂæΰ½BPÑÕ-ÖÌâRåîJ5XlsŽÖ¥ éÇSþW]UçVa6˜^,×°N³v õl#×°j³N «€*¬á¬4 UXÑY/(‡€*¬ïl6(‡ ´aµgs¯j#U½Ñdó”™PuõÆ“ kDDVDv~£}I)–oX3ä¹}R¾aÍÏçöÉl6œ¢Œä]J&Ty8Wɇ]Ú¬ß)qTÜœ%¼Ï,:]1¯§IH5Þ0ʶLü¼ž–å¥Nô†Q6¡ø­{=M­ý¬ˆ´9ñÓ¾žÖ#Æ“öõ´iº:7Gõ ø:Oô ø:·õLÓå_½nxv4c[/uO]yõZC|ÅË¿¸g)þ=áî¼z­aœÄ VuÒa1õ:µÆ$Ó@Ú-³VOAâemά[¸¦®^“N30¶Ç®¥½µ†®Å²Æéº“ëi÷_ºÚ‡¨í:é$$õ^ES}KÚɹuš>„%mnnz_%Þšž†´ù‘Q݇emrlìäÑwiú–êZ(kÓccb]·î¡QC×ê>¤ÍºV÷!‰ûëÖí­µ¢‰ “óu" N×Mïjô×s¾öèZ£¿Ö˜ó%ÖužãIWÑ~LWöW5ìºÃóëxšÛ%h~/¸¥óë6ÛuKç×úvÝÚ£ÔÍ2_œ®ûá`ï•Ò_§}nÌg"ü!Õu„" ‰Óu„}sºn|KHªk§AVöÝ#±®…ï‰tÝÉwW»]wò=ÇU¾Wàt`·1Ó Ôê\qZ÷ܨîCV圯ÇïXÏìÚùÿNζÏÿÏå9ÿ± :ÿîŠeçÿ¯‰¸+ÀçÿFŽ,n€hz™»‚qk#îÊH~C)ø'É—u¢vŠÝßaGDd•öÞz¾ð6ìnÂnv‡±›Å®ŠÝýØ=‚ÝÏ0ü äƒÝóØývŸ_ƒz:u/{ÀOvÒüTçùGùéòWå§ 7Ðtº~Û Ý²ŸVçÛ®r¨êO÷þŽ´ù%µ£¤ézµÿTñMÚÞZ•O¯·ã•Ò~;íî'ZÍ7ʧÕí«SpþV=ÜkÐný÷k{j5$¯šÛÅ?)tª¿ÐåŸv¾ û|ÔnþI¡_èuçA½Â¿ÕóÏNóWÑõZ;I˯ÛÏ-Ié“Úi·øËø©òïÕö ãÛêç£VñOZ¿2¿®œíæŸÖN»Í_åïwþªüºÅ_•Ÿ*\ÚÅ¿_Æ«Õ ½nW½.Ÿ._]¿Ì?ûÞ¼•ÇÑp•?Ù:WR¯®µúe<è•ùÉÊ7°—µ!îb6Ä߆"w®!îŠ5ÄÞ§†Ø»Ó{OŠÜ‰†ØËÍw—bï.CìUeˆ»™ ±7‘!îâ1Ä^4†¸{Å{bo CÜaˆ½ ±€!öº/Ä^î…Ø«¼{qb¯éBì¥\ˆ½‚ ±n!öâ¬Æú‹¿& ±·b ë?þB,ÄÞ…Øk®{›b/­BìÝTˆ½‚ ±M!ö:)¹}Æß&…Ø»£{CbïBìmOˆ½Ó ±77!ö~&ÄÞÂ$—/þ&Ä^¹$LÙb¯VBìJˆ½& ±—!!´gbâ&kóžG¶Xînv™Œ“Ï`úCå’µw¶fí¯TOŸ± c¿-“Œ-ß·P›=qm‰â¹àW­|¦†Æ–Êóc¥ÙÚ,;±¼Œ½‹ÔS\\X(WãÞ+ŒyOŒ¼Šµü^$>xÇìz  ^©Ú‰Ý…‘:ø:ì®bÒ×¶"ôN¸ù¯{ùüÈïü¬â|3ï C÷Ì{]A¾  à;AÈeüAÜ{˜< |ä„v èØ< \ÚLIÙ‚÷ð6@YY~—påÝ/à6|}û6nM$ÕNâŠø¯ˆø×¢õð{"eD×"Zgw‚ŸÔç3Ø¿ƒè»|=¡=>P§?ˆè{{ý¿$üÈ»zk¨ÿn‹±sõÿ0ö_ /"¾úÙ‹ß™k¾{›5bo Fܦˆ¿”ñ—¢à.1^½‚ƒNi¹°l›o< 8Ø\| à€.ž<øàà3€|ðÀüà'? ø)ÀO~𳀟ü<à¿øàW¿ ø5Àç¿ø À_|ðW¿ ø"à·¿ øàË€Iµ<xàõ€7¾ðµ€?ؼ ðfÀ£€ ôøÝ@­Lº¶AìûÿvÆsÜ|Ãûÿ^Ö¼ÿß ØX©çO—ÊÖÈ)b xÖ2672L¿qÙ¾ƒux÷áC»ö<°k¿µ|jO»î^Z<}jÙ"‘Ûë·ÊOxÁ[{§¼Å¤'w“û(Ô?£iŒtâ"ݸHO¹FfÅ‘ì´Þ\/ÍAiîHYš}ìõ»,ç o.TÔÜ ÐÔd ©ÉÞª÷é¸Ò@d..2YˆÓàxœá$DÞ$Âëé¼{c•8Ê*QÛ$íÆ69é”Â3øKª ˜ÄÜR\¹&%…«¤ð¤û9l)…N@)mý¦_øWÞ¬RÖœ’"¯¤((Ë;.§Ê›–7ìq'{¬ÇíFóšŽk^Ó±Ík:¶y±±J²cµdǪɎՓ-VTÐ%ˆ5ÄÆöDvlî„ýùpqŽÌ$·Â£±p>4’÷×û<{ËȨïõWü<'ðúk~žxÇɲ•¾BÆ÷á¤$7.3ñte¤à/øm øëcÄÛÀ@6+)øË˜Þö…€‡G®d)ø2{Ÿ"IbHò~ÑêL ´¨Û…7·7H/žƒŒüµQÏ_Y§|Ç3b׃lZ!,•1dTKæA Õ†Ë’å‚ †Œ–—¥‚Ó Aýˆ§#ãPFz·< ÁÏX4èdƒ¨E&̰*FKIÖkà ZJ²e!å•LV\Ã0(%+-&'Ç8”|Á*a6˜:¦+ ´!¯qB°x¬Æ…-VÀÍ ‹õ@7´YR¯Z§ulÚp8®Ž–p HHÉ0‹³ÉB6do#Ì;E60'ØÀVÙÀq‡åéd ò´ñ؈S ߯¾Ÿ„Yý}€os²FnÓý+BFŒIN–ò`,˜np‘@ÆéFa¸—/Ý#dŸ|];èÚXÃv0”1Z× ú4ßàå<½®+b6Ì…i@n. e©›y.Äæ]銱yCçË6T/2¥öì [ö«”£ç„tE11D@¥ÉJƒ5=»T«ÌÎ[µ¥Ùê2ž¸U«ËÖÉÅ%kv–qðÝ‹U]…Ø^¿ç;:æš[¾%¤ªJ/Ëk$ÍgcÅ:rË·†öÕG›qÕ‘[¾»bûMÜœæ€[©í7ß$´}ö¢¿†9ºéœº/>[A‚g sc²Ó²„¤Ý¹‰±)U¯Îƒ;p¯FüQ°«çzÀÜÄØ(S·ŽýMsÜ^ëŽýí‡ùÎ è«[39 øÔ_õ-Þg ·âÔ_;XòBÒøS¹££«f–ÒËïÐ,¥=ÇÇ“6ÝŸ·AÕ­[=hßâGë­Zã6i#.Vf)ªn4*õ³vVTR…U³\VÍrmU÷â,eu>ætåwcÅ¥ªŽ'mÝ•vV‰WuWnþÒ\*íj_­¾‚+Vî‹ÖPu|W©°j©ªã¹*¬šåÚ±¾ÚÜûÕ±¤…÷E·o¹?Þ¬…¤Š{ ¤f_¬´÷ÔW¾Þ.1Ï”]³ý~ØHéà3e0vý^ðÓÌ÷„²*ÞtP,ÚiŸ{P׳u'"\YTèZ½ýÞøñIt±d’ÿ2³ßû©ýÇ“vìygÒYQêîå®>´uûXáý·J5é­(u÷úƒfôÃúþÒw‡¡Kc+§Fz¢ŒFj$©Î‡Î½NÕê,ê¼¢óRC‚: ì=<ËŠ?ûöµ qÛîzç²2M™-™Ê”9Z*S™2Ûu M¹o?8Žçªx¹“%MÛ+Çk ­)ÇsåM9^SóÕ¨0‰)‹ù¦î•ãjxSöƒœîïCV÷É›œB® žgV¦!'è“…ZHß'Ç?- 9›ÒãIWïBÈJ˜\(“ƗǶF•5Ù#çVŽ!÷Ä ÓÊ4dy¬ Õ¨²&{ä|JCîúÔ"žT±!Æ’¦í‘ã•ÕÏS ­â-,Ž6u,VYŒ!VŽ!«{䌈´u_ò­”9r¼jU†ÜšY¬ÝCOiÈñ¤«÷„îN-8ÃÐø2¾[kÉ-4äP5+À’ÕËBÒ•´+Ò.KN°l!¦íÈ®µd;¥%75¹P[²pøéÊJr_-À%°dñÀÞ¥•ä>î…EX–¬î“Õ ñèù=‘vYr‚>9Á…¼š[ Åê»ÙE|•wíëÑ•0»P´¦®%·¦Oö 9í!Ç˿ެè¤!+ Cã3Èά%+Ê–zšìrÚݽ®Ï-IYZ·–Üá•‹^˜[Ä«¶•kÉ­\¹H»½×ƒ–¬î’…¬¤]‘vYr‚.Y,CçvEì´û{ñ¤æÍä~Þ¨VÐöÜ›ÉÔ’Ónðõ %«W.„¤+i_¤]–œ`åBLÛÁ}‘´;|ñ£ §˜Æ«A¤ç¨4^ ¢q謆%³ÅR\c"=³&^Ö¦gâÚæ,¹ñ~VÞ’/ˆa Ö‚58±ÉxòfÕòÆX²“v‡¯-™•5mŸÜô…<+Ó’93HÝ'Çß̤²ä¼Ð’á~àad ½@¾›źüeü¢ùu»ÿï¨ì±ÙðvA»ç'íž?Èúƒèøm'ºôºò4 ½:~©øµ · :eŸIù¤µ·VÙ¹Œ^Wž• ­z¾P=w¨êk¥ë¹ÝÐëãµnÿÜîñBýÚÿ· L}ñ¸Uò% ï7þÍö3ýÞ^z :Õ~[5Xiü“Ú±l¾Àj]hú}üjux»¡×Çß•ºÏeiŸã $Óÿ´V>˜þ§· ßìß@oA¿ÛO·ž¿tÓ¥¥×•G—~µË¯;®¦¿ú]þVÁJ›ÿ´:¼ÝÐïó·nÉߪö+ OÚ^Ó‚‘?žŸª}&íWUrô«üIÁðï/þí–GzUþ¤í7i;Tå“TŽV_«Mþ´ó2Ýq­ßåO ­¯TéÚ5ÿì7ùuùwZŸ*èù[Õ~“¦“¥O;Þùõäjµ=õ»üV&è¶Ç´í·]Ð)ùeí+ú}“ì»&Ù¾¿*_]þºòGùʾû’½—¥’_—¿®üÍê_•_«¾_k—þUù%ÿ¾/Ÿ³6O[ž½åóþ/ÿ*ø¿\ükÜÚ¼Ïò¶ BÆÿÉ 6‰ÜFÂæÿrýÛðOrñgipu‹5³¸T¹»RµŠs‹•bÙrŽ¢Bűy??ŸKf½}VH8î³± >žíûlZ4ˆs¤";é>Iw!2øh$ â@8ð0 –Û΀4'¨Ï†,ŠÔ뀷J½TY$>*Žó}Y ] ^Pæë{AÈ“Êd2Ò-X%쵡q¬ï…šÄ²/l±°ß ýEßï~¼z€O±oÇ ý%?A,`íüEðçÁüðWÁ?ü ½“?¤w»óKO¼  èKˆpP`„~=,(l'¤'µ!Ho;ù SZÓN!ðûõ§â?ð_H%Ÿ› Ò%ò¹vÐ$Á‚\' ðí$ž¿´Sßàt´]/L_Ðv³¡<Ô¦Ý\PUh»ùÿB*ù aú¢L¾q茠‘y™À¯T&¶ƒîËo…ÚòyN˜¾(I¿gbâ&kóžG¶Xîîˆ2'3Nz”Cå’µw¶fí¯TOŸ± c¿-E[¾o¡6{ãÚÅsÁ¯ZùL -•çÇJ³µY4vby{©§¸¸°P®ÆsïAÈ?h-ø½Hüàën øwbwvWÎ|âÏóya?B×Ò³rù}#à€ß9†›oòdè>Çœä[ºÚƒËøƒ¸÷0yøML·K@ÇæIà‘}½5@Ëv%È·ÊÊò;óýåAdGó°áCèÛï°qk"©Öp’ÿPÄEÄ¿­‡ß×"RæA·ü›Õ]OÎ'Ú‰È PÔ¿ã³ˆêŸø¿ãúÀøUÆ_Æø¢gÿI;P'¼öÔóÿׄ–‰ÿ9’ß@=ÿ_Fôl¢ ÿßFTÿýHYëþ¿&å¬çÿ&á‡ý;©ÿÛˆž9tâÿÄcµ¢þ!¢òaì¿’ú¯Æþ³ÄX®¢þÿëô×ú×ý£$~#ò}"þúÁkE4?[;6á#!þï;˜ßÞ\Ý3ÉEÜËD8%Îã°i€núÕz>Ôw‡ÇÇq¤“‘È{¹È ÇÐëðiÕRáR×R˜ÍÒd=èÞ (à»Tg¹r£63€ëÅ\| à€÷ÞxðaÀw¾ ðqÀ%Àg? øÀ~𓀟ü4àg? øàW¿ ø5Àç¿ø À_|ðW¿ ø"à·¿ øàË€‰É<xàõ€7¾ðµ€?ؼ ðfÀ£€3€=ÀÀ·Þ xð^ÀûO> øNÀw>¸xð<`é€vCKEÜ µ âÏÌdòy¯áüGÏ1ç?v6VªÅùÓ¥²5rŠXž%ŽÍ Wª5Ëò‡ÛïygÀ£;î'³>´obÿ¾û&àÀaz(íƒ73 +AÂJ¢„ÃÅ9R[a´f;â? Ù[F, >½0÷ú„,a0\Z<}b¾l-5d>cou)‡û™$±§[‘Ó•ýmà ¢ÒÍ8Úh©oEŽoöeÁ@ê?lÿ];ÿ5c‹Ú¿9ÿµ3 :ÿµÙù¯,¬k‡€€-¹·Ÿž›{~>ÅÐY€£ÏÏ×ÐçLÕóó ’|£ÏÏ„î= ]` ÑççßCÉžŸßFÉžŸ_ÅžóHýüü9?VÀ/ z~&”Áóóã'ÏÏ뿃ñzÆ¿Ê<ŸîC´ÎƒçYvbƌÈZ7T"nàCÁ †‚Áäñçü¨>g†lîîÞüÏñlÏ5ó¿.dþ³# dƶçà]û­åS³Å²u÷ÒâéSËx&a;K·9 ܱw÷»ü_£Ö¡½o¿íàÞÝ“‡pxm©r OæÊgfï^¬ÎÎ[< ËšŸøWª Ýì™ò2%®O/Ý` å²ÓK&k~~'ŽsbâÂûØ2@œ×8ÝuÃ9[I*‘€³ÓÀy2(édkKjEJÊçé„™:=¢ß{CýÞÛ ‰Ø\GSJäÔEÒ×’‘‰×)Ô©ÕœëU[jIݦÕdä‰MØ GðØ@fzî–‘Qêõ·£\;ôû{O®úsxâGÈ %-§¡Û˜õ< „õG¹ˆ[#NãoºÙb6Y›ŠÊ…ÑÒ84LÀ]Üîp åïXaѳðgÃ<àφe}•3”5+œ*G3\`hP±”ËPÞ a€MŠâÌ$-óÎú YeC•Š˜Éš>p¼rnVW«¬Yà´¤eT‘ËB«‹5&×<„@˜±nzv©VÁC[mi¶ºŒfe±ºl\\òÇ@«·^{úåüÉnÑO<ýôôZ}õš<â¡×ê«×ä1½V_úò„ß7¢ú§¨þU# ?hDõÏQý EÄ}xˆøoÿ¹!â>"Dü÷ƒˆÿt1_ "î[@Ä}ˆ˜/óñâ>èCÜ·|ˆÿBñç!þ{;Äj‡Ø¯ìû]ÒÌ9 ;™9,ÀÑs@.€ž·¨:ä,{¸’ŸBè¾OpNeô?zo²s@þñ½ÉÎ9M²s4ϽŸžùå…NBd Î Îc!~RŸ$l=ªŸ£¹‰¡ÿ(¢¶ø¿ãI&ýb¼ŸñŸÄø0COl°ÄøãCÿS?ÀäÿŒaèÑõÒÀÿ;?Ǥÿ"¢gÂþ/cüCÑs=­êÿßDƒu?Q¸…+îð¯ÃøÂPýÜM²k]Y÷û_UO97s¸ocÿ¹õõs5ÙL˜s!{&bŽQ@ìñˆ=Yqõ#ö3|Ä}9¸Öÿu9â>Güg݈ÿèE>‹Fü—Í(òi2 >úE᧘(øŠ…_ø ðõzT¯…ï!¢úëB¾Ýøg)ž| p ðÀ> øaÀ~ ð€Ÿüà§?øYÀÏ~ð €_üà—Ÿü 2g?6 ˵ÅvýãCüþ_Æq³ùÈþŸí8®Ùÿë„çÿܲ\+UÇæ>:\*Öî;Uæƒ0Õ|åD4l©R½›„ùçŒ`“ªlöOWغÝö›ê Ök©\;½Tµª4ýǨ”u*Ë¥ÊÝ•Úf’j “ë¬Û°~¡>vãGwà@Œ(?ðè" 8»43O¨f‰æpô^¥%xpøÁP±¥ºbáõÏ­¥U¡Û1ŸWmq~ñGÊK4‡–I(}/ Éª(1Uq2¾*–ëU?Ž-ž®Eª‚Õ¸¾~Sk×W*èVªÙÊòìü©¹Y@4Däêë:‚웉*î]¬”¬S¸õ׎•ÑBÈ“m÷UÆJ©büàŠ¯SR8Bj]·ãÀ‘ýû±ð>£“›G®_%1T÷'—6WpQ¬Ê-UüçÆ·Ð ¨­ë­±ÂÉ‘ÑÒLå(MÄÜU¡Tf"q·»Ûž2þϵ9ÅøŸqmÁøoÎÿël¬œ¬–Ê'­;<¶ïÀÄðFì©TË¡·Ã2nï’ >7Gh$cT”LÒ†d:}ËÍÃËÕRå¤iߺ@Ú_ýóAÑþݼ}ÿÏvÜœiÿÕûOÂûþß‘G¿öñ‹ä¡ýw“×é0ºH¹T}j÷Ûkv¯;[°j×?¯ª]ü­ ~ëÊÇw¿ýúÖ_a¨N¹½N9Œ)ßý©Ýo>ú‰Ò;ï¼óÿèçðÉáÍË8àÑߣ„ßõ»èñkЧN~jhÃõd™êä'ÎùÝXç· óÛô©Ýo=~äÒÀùÇŸ8…yШO¢G}‰ßýëçÿÄŽ[³û­Ï#D?tqý´ŸéC¯l ù^|üšOТ®tý†Çw_$iß|}¦¾¼_øÖÒ¿øb‡Õô÷:jÚ0«9¸Œ!eX؇.•k2]Þ Öå7îÃñêü»Ÿ›&‰÷ÿþÜaŸVïÔÕûè]†¿òOŠ?uô²¯å‡.^û‡»/Ó—ë:½\×éeV§—©N/×uz¹®ÓË¡N¯‚ZûÖƒ¸û§ÎË2u^C2DI¿õ½ŸÚ}éÑß_sd=¥¢ »LJw ö³8vÍîõŸ÷f€šÉ>÷„_Êu=¸Õ¾ÿxçôº¹P$¬ÄzñoÞ½þÁoÝøÐÅ!ì Õ¸áÚ†¡w¼ sk˜DTŒ+cn˜ þÂçÐõˈNªÉ[·­ÝU!û)tg¥»*F{*_a6 ‚Õ{²÷Âî•Ì_I×<×Aú`¯$º÷r ¿üò‹î©Èè¢{*„n=C'ÛS±†’í©Ü1”lOeÓZ¨ÚSÙ„#÷øEAoOeMįÞS Þ0ÿyOócuFäþ`Äÿa = ô›"ñ£?Ùƒy +èkˆÒç0^Âb.€g„IÉô;æ/Š;ql~±ˆÈ‚ /!X™ !'IÈ2 §®ô×I„>ŽY bÃù?cå?7@ýÿƒàw!´Ë4ˆ ûiø×Pü‰5tû“Äÿ]ý6ø? þ?ÿ_‚_üÂ,ßÝÖg@Õó_>gG¿ÿÈäÍó_G xþÃpø§w»cϱ½áC 8Nï ¦÷áNßöì츓˺ÙÂx~ÜuÜ‚çÏcuV·ïºóØ®Ão¿ƒ~|æx|ÔÄÞ]‡ü(שG>¸¿¾²g—·yÃÃÛ·ZÄd-Ÿ¤BŽÍõOÍ-–ççÉgg$ŽÈˆÇ›ÓÅš.9ùkx³µ›-ïÖª§N”—¬Å“nÀ ËÁçnaÒå%aZ>éò©r±RÃ㩵4–ýèŒ{ôf6qqqq©TÁ’•òÄY2 oæò\^\ªùå.Ïç|‘ýÔZVíQÅÍuÅOî¾íÈ+3lž 0`À€ 0`À€ 0`À€ 0`À€ 0`À€Vüß/O,Àase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/symmol.out000066400000000000000000000004021316323560300275150ustar00rootroot00000000000000 ============ SYMMOL A PROGRAM FOR THE SYMMETRIZATION OF GROUPS OF ATOMS By Tullio Pilati and Alessandra Forni Version November 4th 2002 =================================================== ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/symmol.py000066400000000000000000000105561316323560300273510ustar00rootroot00000000000000from __future__ import print_function #!/usr/bin/env python ''' interface to symmol unzip symmol.tar.tz compile symmol if necessary: g77 -o symmol symmol.f make sure symmol is on your executable path ''' import math,os,re,string from Scientific.Geometry import Vector from Scientific.IO.FortranFormat import * class SYMMOL: def __init__(self,atoms,outfile=None): unitcell = atoms.get_cell() A = Vector(unitcell[0]) B = Vector(unitcell[1]) C = Vector(unitcell[2]) # lengths of the vectors a = A.length()#*angstroms2bohr b = B.length()#*angstroms2bohr c = C.length()#*angstroms2bohr # angles between the vectors rad2deg = 360./(2.*math.pi) alpha = B.angle(C)*rad2deg beta = A.angle(C)*rad2deg gamma = A.angle(B)*rad2deg scaledpositions = atoms.get_scaled_positions() chemicalsymbols = [atom.get_symbol() for atom in atoms] input = '' input += '%1.3f %1.3f %1.3f %1.3f %1.3f %1.3f\n' % (a,b,c, alpha,beta,gamma) input += '1 1 0.1 0.1\n' for atom in atoms: sym = atom.get_symbol() group = 1 x,y,z = atom.get_position() #format(a6,i2,6f9.5) input += str(FortranLine((sym, group, x,y,z), FortranFormat('a6,i2,3f9.5')))+'\n' pin,pout = os.popen2('symmol') pin.writelines(input) pin.close() self.output = pout.readlines() pout.close() if outfile: f = open(outfile,'w') f.writelines(self.output) f.close() if os.path.exists('symmol.log'): os.remove('symmol.log') def __str__(self): return string.join(self.output) def get_point_group(self): regexp = re.compile('^ Schoenflies symbol') for line in self.output: if regexp.search(line): return line def get_moments_of_inertia(self): regexp = re.compile('^ PRINCIPAL INERTIA MOMENTS and DEGENERATION DEGREE') lines = open('symmol.out').readlines() for i,line in enumerate(lines): if regexp.search(line): data = lines[i+1] break [Ia, Ib, Ic, degen] = data.split() return [float(Ia), float(Ib), float(Ic), int(degen)] def get_symmetry_operators(self): regexp = re.compile(' SYMMETRY GROUP MATRICES') reg2 = re.compile('^ \d+ CSM') lines = open('symmol.out').readlines() matrices = [] types = [] for i,line in enumerate(lines): if reg2.search(line): fields = line.split() types.append(fields[-1]) #type is at the end row1 = [float(x) for x in lines[i+1].split()] row2 = [float(x) for x in lines[i+2].split()] row3 = [float(x) for x in lines[i+3].split()] matrices.append(np.array([row1, row2, row3])) return (matrices, types) if __name__ == '__test__': from ase import Atoms from ase.data import molecules mol = 'NH3' atoms = Atoms(mol, positions = molecules.data[mol]['positions']) sg = SYMMOL(atoms) print(sg.get_point_group()) print(sg.get_moments_of_inertia()) print(atoms.get_moments_of_inertia()) print(sg.get_symmetry_operators()) if __name__ == '__main__': from ase.calculators.jacapo import * from optparse import OptionParser parser = OptionParser(usage='symmol.py ncfile', version='0.1') parser.add_option('-f', nargs=0, help = 'print full output') parser.add_option('-o', nargs=1, help = 'save output in filename') options,args = parser.parse_args() for ncfile in args: sy = SYMMOL(Jacapo.read_atoms(ncfile),outfile=options.o) print('Point group = ',sy.get_point_group()) print('Moments of inertia = ',sy.get_moments_of_inertia()) print('Symmetry operators = ',sy.get_symmetry_operators()) if options.f is not None: print(sy) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/symmol.tar.gz000066400000000000000000011400501316323560300301200ustar00rootroot00000000000000‹ÈKì]ÛnG’õ3¿"|±u#3"¯Ìè…w±¦ xöh©ej—ƒ¤=£ùúKFVu7ÙÔØ"¹^w™²Jݧò™yâD^Šëœ]þt±^úðÕ“]ž®#ýø‡ÿ²ò9]€¿ }ÎÁgH_ù>¦¯œº"M×Ï·wg7Î}õßwëÛ»=¸Ë³»Û—ÏQ¢g½]aI­pïMó÷ß¹@ÿ9ç—A>õK¤݇‹Ÿ¯o®:__}ºp«Û#÷ÎIrôg)mía™´8>™0ôÐèÜbÙ|hí~L¨%I‚±†\îÁŒ¼¨¡àý˜ÏIgOyέ<°ôРqÁ°¤˜ìaã)3~¼¥šë=·‹q†ù0ÃlåµSž©î°¤!Õ1’α{÷éÝÅõùúgWë?9ww¾vïÎn~¸¾r·ÿ³¾Xß]_ýÉ}¼uôý»»‹Oî ¾ß~æ‡õ»³ËµûéâìŠÆÌ›|îþþñîܽY}ûg¿LTøãëh¤4 ¬ˆž;H/V¿9Zaü²”ÞZ1…6Ç`Ç,ö`¢afyHMÀJ$LÚN‡o û9&o—gs¸b `㎼ٌÁBe„ŽñË[Kü–€oRȉÒK‡z¡'ö㛜à a(åªìé,†2­>Iy ÛXb‹%˜ ñè$Z:°iÃ`u§zEKÇêÅk…º#÷Ë‚òJÛåY&J‚1zÁl—gÂŒtò¶}(S æ˜mû0³äZ­ÌXŽ^š[×Úü?<]øÿÀŸmû’ÿÿ ×ñë«®¯ÖÌæGê÷•ò¶nšèFµ€ð }Úÿ6°×ów°×ów°×ów°×ów°×ów°×óŸìÖ È'©82̨×Ãûg˜]ϯ˜Q¯MÌF^i†™åµÉÛeVu0Ǽt?<\/s þǧËã1þOvã¿ÿ?Ë–NˆÎíÉ~Ñõ¯Þß]_üÜÙÕû.òIêrÜpûéòr}wó‰ã…žïyüÎoè@J{É?Gß^#'å¢Ù û…2aàAŒë÷ $^kÛ&v “dŽIÀ˜瘴Yìb²a€ô:ð¿(¤‹U?©#aŠ•‡JØJ“¯E/sLa‚ø´¶iæå&ø‡òšaÂCy ÌJ¢Ť܂æµiÃUÀŽY,K•tÈPifpÆÄ-ÌâLvNä°4¯PÕàÄ‚ÉaÜ„)£oT©çËF:u`JÑ‘—äØh†i¥3åþ¡t óÒú_¼ÿǧËãþ‡óÿ'<ðÿs\ÇÔ§9:&ïשþ¿°šÿÀ¶>µG'˜ËË€éU ¨ß—WòúŠ< Ý–eÉtËQ: ‡CŽN'Uí—På&&¡#v"9:¯µßøéæèfCá™(¾ÉUç&}õyßã«yîIŸJ1èS™P,N@Ò ãf cdrê—ž`…‡{ÇÙã¡BîuO &;î<ÎòS½îœŽÌJ•´÷ñ4ÏªæŠø=Â$ˆ{ë>…ò¸Z5TöG’{ô{s/sÓÕªv&GÑ3­˜÷>^ç¹[sÓã¹—˾ÇO6zÅdß[ý¨{³Zäéf ó´ðÝò9$ÍÒ°ØýÏÛÊz»G}<„¸ÿñy»ÇÐk Y¢VÂÈTßžÇçíN]4õLÙ™.$÷¶÷ñy»ƒ}€¬ä°ïñ—f½Ãe×ðÿééòxtþÏ—Ãúß ]2ŠËúøî6Ç ÓO7×?]­ÝêÖ½_¸¾¹\¿·ñŽCÈ*áåõÅúÝÏk !oç€àwSŒÉ"—m•ne¡¤A‹Ýy‹:z$ÉÚ>¤ä nCÛY ZHF©X*¡gÄ /  ‹M…gF“7Sx2¥‚#•¤ÅN*@,•—녮Áÿùéòx„ÿIªÀ.ÿçÿ?Çu|¹¾;g¶þÛ{%õ@¯?G²®Ã?Û«9¡Sa+ise$•q¶êïˆejšKæ]Ìb¬Xe:aä+wÏʈa;˜—¶ìïãã¿<]ŠyvçóÿÏrmùão|›Ýõ»»³óõû›ë+çÞž÷^a‚o|œ Þ&àeF“_ÁÏ×ßÎÖHƒßÅÆàF^}Ý $µßÅÈta˜)ÖÝ*ÆHðèí|4̳ þ¿d”1þëÓåñXü—Ãîú_ ‡ñÿ×±û°¾¹¹~·¾Z¿rß-¿_¼Xß¼úå›å›Ÿ¯>ÞýÓ}Z…oÜ_ˆÜêæYëââúÇ›å+÷ë+J š½IÄ|åe«:©W—²KŒÆ/3ÉðQäÎ]§ùÏÑ_×S ˜’×ù´ÎÉÇ &üI¨[˜’òlƒ Ïæµ¤ûаÔìu¢¯ÆÙ bQÓAhz“3ÄÙ™Ò Åë©×ˆ°Ì7˜ðTdéè› æ‰RÆê·ÊŒ²±mVæˆY‹èMj±Í%’Î*F'[)åFOÍ$OÐ5Û3Ù †©„Ù$ ÌøI(/1jO0‰}Âë)òf™3°_ïÖìfu_áë]’Ã܆ñõn{‘ ã¼½ÒëÝö¢ä`Ö^'³2G¢”Í2C‘¢¯wíCvƹ}feöÁÖÊÌ>'³2ö";ü½feíEyæY{½Ðøüßž.GøCÜÿëÏs;áîã£ãá÷ùWûÁð<+·JD+¯ÝßÏnÝÍõÝÙÝú½»þà˜ ß¯¼Y¯oÝÙÍõÏWïe ï—õ»»ë÷áæúÒ}¼»u”ÿÝÍš¸<»åYÁ»k÷×µs_¿Iï¿ù’ûú[ ò¶^•lÝBvÜ3‘8›'WÆwA(Inr*÷>·‘‚mkáÍ)ëâ––{ øxlÓ OQ†Rå¦ÕŠšBöåÑlKŒ“2+Cùü2؆÷kËp¦Z098Ù–ã¡[2ÇG-y2,Ib£öEÇ —!x4…aIÞõÁYÓ )…feˆ¦0,¹Y†ôùe–”24+Cýì2¨·ÞèÕ¼—Uç—¹äÇS€×nê «‰˜‹&§†÷É© %]Yl5ªmsTU¸¿O¾žõê_•B²¤ÐkQýg×âdÓ’Úµ@š•ShrFá‘>i)P(MÔI¨”^†úx¯Æ©-0fíH5ÕÔí {é““(…l)ÄÏOaXr³õskñÒîpí»Lÿ…'[Ü öÍÿ{;úÏôßs\ÇîüìâÃ4 @ÌùËoŒäåDþó7’ßaÞ“ÎN„9až3’8¼'ω0Çø¹óß±Ä{ö–ÃøŽëXþ~u`%?úÏéBoGl´¤±äàS…H± ‘c& L˜Ò¢ E«.!'Þp=Òa›,) Qº.SŒ€„™ÒI1s‘†bˆrκP÷‚#w:•§dà~¬á +$krÄ’3¥“=ï£,B(z^;Ùp:8Ê“ku¼ Q‚¤IvTæÓqÈ`IµÊòU&îº Ñ5‹) ¬3ñ†Aٴɲ¬…YtˆËÒq±ó¥[Ì  %]FmIêåk˜Ex”NŒØQ:£>õå)†£,JmT/ºñ¹’ôæãm>—J˜~èÏ!PfzP-#6ÞB˜2ê^kIÒÜÁPæ‘Ô‘µEÔ#p-QÝ9Ú‰¼3sŠ‘íœ$ÁBt&ÇŽ Vg1òñŒ& 5¾¢ì›¥NÒ°Í¢ºHy¡Ú‹ˆ ùœÅm ÚZš‡l˜ïúx_M:ÅM¤g\çNÇ¡N9'¬ìpÒDƒFŒtÃ|Ècy2ºâŒ7N­ÅM¤7¸ne}c sønŒ÷S§ƒ¹#)®¦þÓ©ÉÈŠ{Bç(;TdÔ4‘ÕÄQÖ5 ²rÆQÃÎæ&§0|ÁtðȨiÕÄQSSjd唣Òtðh¢&#+§Óa²Éݘbƒ“ßan±CEƒ¾ŒÐÊcÜçû¡¢‰¾ŒÐ؆Ç`عӗ÷Lâ1è{{ßúšMyŒyCgÄ&ú„æ&ƒ1N•¾&B›x ’µ—Ò×œÐŒÇ ¦Ó× ´Åà1(†éô5Í ;¼eô5mâ1°Ã[F_ƒÐ&C?8Êè«ÚÄ?¬-”¾¡¹‰ÇÆØú„6OG›*}¡¹‰Ç0¦Ó—š›x G_íôe„æ&ÃÑW;}¡9㱇õßÐÿ/øþ‡pßþ?8èÿ縎Ýéâû¯W'ø u—þòc¢}þ¯ß¹ïÝðã»~C£ƒø}ÖÃ~WR a¦™Iµ6>*SÛ¥ˆæ!7Pæ+*ÏÄ´°‘NÌE´÷˜é—yL•”UdÒ_ì×fº(µ ]{×$éâ·:é"þ!IyZ Y$pHºˆzwÕ×E>Úij‡‰ÛÕ³ù’³(AUGÂègÜÎO%ßÔ,"Zè(¢QaøÐš’JArÛJbÁ—'~ã2CIB#­E ½Ì~“ßR“Ãk²¬¥ÂØ× 3Ó£^ü^ ‘1äjS F^ã0ïû»¸ÿ¿ÜûˆëïáÿÃþÏg¹„ÿß~qîos?+â"/SpgcjyÓJÊe†Y°foUyS™aöøÇbç 6Óá㪛é”?Ú[ÃÆø¹óÿ¤˜ïy©ë‹Ë½ce’ƒèûCŠ¾Ö‡Ï }ø ڇϠý{óÚ¢}8ÐþÎ5øÿÏCÙ}ÿãaýÿy®c÷}üºoøsßýÍõ¯ˆ:P^GEC²¤¦ FD˜Žþò_:öeN1ö‰CL€2FLª`°ÏlÑ¿•l!™Çã™ÚŽVÿé\t}Õ%C‘ÉΔŠÏuCLê3µ1H‚ÕËüÛ’Ø.U¡¬l3ˆ-öc?‚;¿˜Q0ÅfèAh¤U=#Ny%&[ÂT#[¬A'ï™Ð%ÓÔŠªâÖóâúþxÓYX ¿’Üwާèå“Rr“¢Šˆ²j‡1$/³3Ï‚L„ûê1£``Ì@'õ›Ù'ž…EΔga ƒÎV’¾÷²Öe媄Ä+¨+ÔÎ(.C¸¿ñ…W5›‡&˜d+—$åñLÓNVä<*&›£)XäñJ…¯2›‹©j^¥¯yˆYwUóûèy7fJÆ@gAÉE®‘&S-L4–ƒ=À¢kl¼¾Stû*ý'˜Ø¥e‘ɼþZ2ª'IÄ‚ŒI¶“ø%Pºž‡Rè Pµ<¹3\ÖÏÿ¼,xWÌ‚1f"çDùÖÆ¯©’·E6¯˜j —¿"Vβ¯B äsðŒiÝÉ1öunb\y›zâ5ƨ¿‘û¾„Æ¡ób% ˜ái¡f]¯Ê™ã$$ ÷jÃá òr—¼rÔ` ¤cvN‘·‹ËöŽK覈E0чi6ý SÄ(ºï§…&jóh ’NfG&Á¥5GSŽ|@úF"3‹< AÁÔÞW/ëÞÙ@ö‰…ûaZo‹Ê禜ÑÉ*±#oìgLôÆQê#¿EÝ“H#K½bŠÔ>ÔüIbzjЬé@·aôü‹DPËKúˆÐ(ŠVŒ)GzúôÙN:$ñªæe¼‘ÉË‹jæ‰ Á4žØŒõçeËõCßó¢È÷IÆì SSCIXÀ|˜e‰‹Åx•šYÇ{ÁšU5ëK\]´þ -ê@âà.3Ù˦YÝCU·Eö½ôTz%?êN]¾"´”9û bŸd¼Q©´ÏCi^{&Mz{U_P¦Ö½Lñšš?%>•z5ÛÏDí§}5™BòZêw¨³É\WcÉ%³³Ï¨}>[{19ˆ/H¦Ð»Ï]tŸëÔç*¦ô6eÿ^:I#Nþ=Y$¤þÝ©G„ëþ= ?(~Ù‰_Öר¿œ}/s÷ï ñïQ#õhÁ„È!eõËRöËŠ1;«_¨—±3ü{Æ^¯îOøSÙà2üi6ÞPÿîÄ¿÷1ˆ56Á ½A}K‚oÕðï9é´z·‘ÃJ3š­?w àDÈfÖŠzC|·Sß-û?Øw‹FÊq²Ð_Ú"`a€úF1;3G tŽZGI?,6óË|*±²n$b>MRÌÎìßeûwé$ìßeœã æLáæLȉ3ÅÎ%v²–(ºW)í¤%„7ŠEö:–ÝËnË%¿™C”t?¥qB1~fn‘-AÌ-Qíܹ¥?+'8ã§œ öi½<}¼»>ÞÝl¼WoápÙÜ“»>ä[‚±þL¾@Í«¾`¡¾@üN…Þ^Ìá²µH9|¡®é˜T_àÌ8õRæj¼Áü#ÝùÇëhêüS‡$W«î”ÃÅÎÕø¹û×}¾à­«? ½«FBV]#Q:ÖŸ™£jO¥‚ÌQ¢%j³þC¾»ÏİïvÃw¿uÍøYµÖ´–›i­füÌz#©1űªÞÐ̲†¬ Nصì÷Z¹f¼¡ü씟}x½ýÖ{- 4™I`‚I&&AÀú:™9INæŒ3gbñÕ?µ^K‘V¯µÖªíµþ½•*UjiËßjëUäZµŠ½¶×ZŠ”z•Zš*W)’ÿïµß·÷>{ŸÉ¼À³“5kŸý­ï·ÞkýÞ¿)ìØ{€»D¯pÛÑs]n~{HÛ>×ågàt¹®Nê’˜€*CõË`]áôAàh0>hcª<£¾£KôP>Hßá@³Çù°mO;>†ÚlfÚ3å €RÆØp¦=2†Ü/;¯=Ü/ºx°_nþøÈ8s¿Ü¼ñá~u¹_~¦=í\p¿üL{ºÜ¯Nú…! îÅ€4Ȳ]¥÷ÙaÃÞp^Ú}pãÄì»Dw7Ÿxàôú(ᨘM„Ë¥«Y¯°š[8‹Vó œ9«y¦=sVs gÑjÎoí¶šõ «YWϜլWXÍm{­æ¶=‹VóL{æ¬æQ{æ®æ™ñ™³šGã3w5·íY´šÛö ²3XÍOþü/÷ÿEóÿ‡îßçøÿÜ¿ÿ/ȧ |æ}+2Ÿ9ßį’ƒÒp¦Þy›‰ë·Ü|oGCï¼Må›s‘ü2Õàv¾ˆ8MÕâv òYäP4QMçE$&xH#O&Û¸2¯©1®™×„Ì‹l¨·P„\"±°K\‘![&–6!›È‰ˆé0›Û”íùÊR6Öc&Ë‚ —A=BÊá½Xä³$ÈIf£½6_DÕ•2ä'©Y§êŠ¡3¯¦™y•…A8˜9ÄWæàÌHƒpä_™]4)¢³è8Îò 7+""*òõ¿H D’º;v“!™©{.4 1Û$ yR\ÝB™mÙÿB¡RˆdH>+²E*D…l.Ä$ôŒX‡€Xð»È…Ðõ™™Á™ Qu!&S›cÉ!H1Á|ÑS*ClêE6Ä +äE ZÈÓ—¹›/BÉOu0’©,Òd&*X<ä³xÈñN‹‘_$"š©#NL¦rcŒËÕµ"ßGÙCÆ×iéÙ ‚°;YD„H‡LÈ‹n¾ŒˆTlLÌËwˆÚ”ò´,‘[€>CBÖ žY¬Îª²æË‰È]—΃9Å,("½k2$äRχ’"l¸•ï„ÍÈ¢"“²¨yI‡lYãYQ,²"ê]ñÂ"ª.äÀœáiá ‹´YŸ¶¬ñùâ¢@½KeæÊ‹,®××!@æif܉ÀÈP¡rª,‘{3çn 2ê‹ÈùÃÎä•9õEfDln83ÝFB#—¨MeÄ™#;–‘z€óù¾Ã‹:t3b#¼\Ö(xÁXndRÌ·ÔÁAJåæl%G±HŽð¾ó}¾ÊˆŽð6÷*_@|›ÏÈŽRq‚à•\s‚°ðH£fƒÏ¡1H,²åzmÅG‰ð” yWp•ùò#jSŽŽ9_€Ô'Lò8 $H¶H¨ºXpºògDH4NÅÆš‘‘!ù"CBfpèóRáCL„H<›(èFixPe›ó™9–"!ʈ/#áò åTÈ‘È?¬ˆa„bh=_D§JpùnÁm²$‰¹«¸ ©w¾Þæ(‰Ö ¥¡ÝÊ9>_–DWB9ÇñÀ`Á®“ð| )· Ïêìn›àY€·ù¡Ø—BsÅItôDUî;º6XžS–'¡"Ì¡¨óÜña/¥Ø‰@‰!•›s Qb6;^ØðXN>ŸÆ"%Z±ÞœóeJ©œã­P‰…A´ÍÈÍ9Y½ UâqŠyZˆ•뉩¬§V®¤³\ /Å#©œãˆ®e|,‘·ŠTÎqÆUf$Kˆ†¤rs22:#Z (™¼[æË–H±(•›“±žá*ç8£µ3Ò%¼6R3âx)ñ%®#ÞÊ—b–/q›ÊÍ90¹,`"él*ø8"ýŒ„‰æELÓYSÈ"¦àEÆ4•1õ"cÒ$0V$ÜEȤEÊ4-R¦0+eÊb¦i3©,fÒY̤¢È™¦EÎDWï@Îd¼š¦EÐÄÛ¼4ù(’¦én’&#¢¦|‚¡¨©YÓtVÖD'¢ÿ}aÓta £›w±ÿyòŸÂÿ»xþß+Øçÿ]¬O§Þtp[ F§,†ºA_´4\Âø•ã€y@s1Ї=¶vǽ`Ìè<*1»ÎxâÃ#_ÇŽe6éš[&x¸Ùõ™K§:)_täô‰Xpš>&,³ÁÈÛ¼2†âø©p´VŠërŠým ’Á2Μ2V\€ºtiM½¡II]:e2?N_:¢;¤[È)QéËdv$™k²¡7Ñåž»RW¯ÈƒÚ‘’+(FÐ=¶§ô}¶=JZ‚íÙ(uÍ´ÐeìFióL{,Ð×wwošî.ÓÝpèÈKSwXŸ+' ÅèzŒÍÛÝp¸Û8µÙm>rôø™c›Ç^ºv÷­]y¥ÔâY5å*“U­óŽø7@$³[@©÷®ÆHTË rGelf‚,*sHL„Úö K™41Ê\1-e¢I^³Æž¨h1š…3máÄùp¦-œ¬‚'Pd–"GÜ+m>’DñÞ¶,Ò2Á1*_ú%&BÈ`‹ìU0zñeYÚ£ò8»dØæ5©Õ _Ê ÛŒä ÇIiÚc‡e€ôºÇ æÔfu¸]æÔ¦$m fÐ/×ÏïWç¢Z¿{3¿L×–±Yà·x.D%~f ëœUöéîeÔü2][†ûµË¼î”"¶Š¹™!$ÖƒEá‰Êøùeº\æúî~8oß­£í«Wؾz…í«Wؾz…í«Wؾz…í;Îxû΃3Þ¾z…í«Wؾz…í«Wؾz…í«Wؾz…í«Wؾóú5Þ¾z…í;¯Ìxûê¶ï¼1o_½ÂöWf¼}õòíËmÞ}ûÎ-S¶ï²û¿àÏÿ?àznÖÿÓ>ýA>×=sª?æ(¿KÂ÷°¾¹~Dè¡Ïh÷Ë—A„Žá£òË BǨL…ÓÄ­ÕUáø…e*œ0.3§=±-£r™ö˧%á'Ÿ²ÿ/žÿ_­Uاÿ.ÒçúC¦ïn{2. æ}‡:Uv±@ÓùK~÷P'ì6’¼hE…={v¯eL)Ó;…× Ô!:àïªöŸ αoˆ1Wv±AW;p 'ëþí'”~E×£ ^ns'8‹û•FpºY8ªµ¹›m³ªãì´c×pØûßïD&¯L?Ã\ÆŒàtsàÔqFÝÊ8hO.ãFe¦sÊÔq•éj™0*ÓÍ)ËøŒÚÜ”I¥=£¾×2ºÁ™ÎÂÑuœGsÑ•¹ÐºÀÍiSÆŒÊLç”±£º¦sêre|Fû¢)3^ÏÝìzÖ¡ŒÏâ2U“•×ótv=뺞eºg÷»éGûbÎÅ>ÿÌ}Êýñü?[ãfý¿º}ÿÿäs–÷þõ‡<¢ l1uË¡;^G§üص?ª‚!¨1†i “ÝG©ñ—BS !¶°ˆ„öuQj¡)P¹+õèlõ"< •.Žs ­#4ÒÉÊ¢·¦~u Mjà¸'h@ýòÐI`ßÀš‚%í= Ò(I«p2Mѳï3-m®p2M*AQA]Ø(×ÂIe|t J'ŠAïÑJ…“1ŒšãMräošlÛ2*÷Ëg ¦³^9üncbÁÐ0LY—°=V£œ²-#7þ‚\Ó<†m›Ûãa¶¼éò¶e\Cí ª_iis[Æç1TZ'‹c(eÐ’* ºOÁPA1ôÖáÊu5ebnOP>Ýåùjˤܞ¤ ÁKßkÁÐè Ç3Š4ÕTŒ-œŒ!—Qvšû…J<¨’k+† 1#ê c`u[Æä¾÷ Q›ym4elnE%K„#kµ)SÆÙÁÊP~ZöES¦Œs² :ßåµÁ¼*ø­`¸64ºEîrßÛ21×…ThjY«M™”áX`™MË~¯e2†ÝQ:ú~ZƧ)£r]£9íê\]æk¸6Ú2&·g´ÆÚ2¶¬±á¼·e\ž÷ÑúiËø2_ÃyŸÖ¹0!÷k´~Ú2e=æ´-“Ê®¦Œí˹:\cm™²žGs:­sauž¯ÑÚhË”q­±¶ŒÍeFóÞ–q¹®ÑúiËøÜ÷Ñ>mî‚rnŒî‹¶LYÏ£sµ-“ò2:Ÿ›2®Œóè.h˨2†Ã³·«ç¡+çÆè o˘<_£sµ-cs¿Fçs[Æåµ::çÛ2¾Ü§Ã+{Úܧe=LYÏ£û´-“ ž0¼»›2¾œ#<¡–¹ØˆÖ%ú)øÿÅ‹ÿ`Ægý¨}üÿB|®¿ÿÌñã›§0ò7³ýŸûe¹;ß÷9¯>£$ŒM`ÖMJ°‰‘îïɆ7þý¼o•‡qÇ:‚F«…w:ík8áÝ2¡@@Ey:í•ó°qeQ· B,zW Ý•Fc(Hµn´êÝBÆä{Œ§h24 Û!K!è¡ï#Fà4¨Ž‡!²Ù’OˆwïÁ4‚¥ßú>x‡G®‹Á-…`ËlB…ŽÖáÑhQ„XÜEýÒÙtu6Q´BkpØŒCÝ!¨rŸ8*¢ dRŠˆ‡s>Ù¹ï ìШ›ÈOÔFE”,áoK!è Áxh5¢¸ýYº”£Æ»z “oØý¶9Â]ûeØ Ýæ.ƒPîqëÉb®ûD8ZwÚå½(ÔìÄ@X™‡ÕÉÈ Ë!ø<ÍpS«£› %Gt^d „×dHˆ:! ¢÷Œ¢‚_¾ª+}‡ÃF¸ŠµÆm›LËפ*ØrTÎö8Æ»à { ðié\dî1¶F²'f Õ„ÍÂá—Žd¦qSkE ‡hPÄ/d”¼tEeº8Òˆ¨Q­810 IËO˜BÝÛ€"Þ³Cowø‹%ÅŠ% ퟀ -éá„J†|ð8ŠÁ»BÁðíÔ•ÈÀR-¢s}ì•Y ¡¬II¼e…×4wÁ2\¡`­õ©‘ÌŒ½f)ŸB,´žë¡ñ iPeŒ]e.*eÑë#¾{8£qRЄléH Mz!= .ƒ€¡ŒÌ«´tMf*7 8p_s¼y᣽K ¶‘J¸7MDkZüÅ8rh³‚És‘; 4)88¶–Íó–@(t¥‡µè,ùâH°¿‰Ø$ty*Õéà”#FV0@êN1¦r¤ÈMK ø¼/Ð.à•B¢x½ Ã'-ƒP)Ö^Eñºt€hæ¡ù´tMf¾’EhWŽsä )ªå7oå*$µ¨É7‡‹ /ñCH-… <²×ŽH&ã­—O³¤—ÏEåH@ß•§…H{w¯–Þ8™_–ª@IãY XDÒ‘¢ƒs€÷% wèy¥‰+ûÁ²#´.,‹†×+I!+ÆÏÀv0ˆ’¥åëÁºf_XB],ìòpv`-ÇláGE8Ý€î†e€!Ç5EïÉqÎ!Ÿ€Ò[bhÀøã8@¿¼]áÎÊ<„ñèz¸±±1€iµ·Ï4ü‡+ŠÐH×?¡"­¥{3óg°××d¬0‘øŽŠ¥mî ‰sÑû¹{ˆÁh±q¼;¶}lóè9¹ ø6°3·AÖ¢äOŸÏ/ËZ‡@Í4š–ã2Y+ÓîD)3¡2vQ™Ž*ô ¼>Siá­Mw+cÁ™Ö2vœ¦Œ*Ôå¨;¥p«2êNS¦ê6,†cGeæÁ©ú<ýp*[­Â‹^\ÆŒÊÌ.tñ¬(¹]?nA{YpÕ{Y\ƸíiÊX· =ŸQ2årþ_¼øÊY½ïÿå"}žìG[ôú»Nož9¶==¶ùÀæ‰ÍS;[p•lßß<µuâèÖI¸d¶àç­î¡í‡àæ9Ý:½vÛÝrV“Ì"4päé¤Þ'öÅIìwôpá‹l—DqŠoñÛÐÝ z®Ò[b ¶PHì½*ö.²öY ÿñíÓ;k×ß÷hwòÌÎÎÖ‰º;ŽÜ~Ãm§ÔK_5Õ21S½ÂÄè&F¯01z…‰Ñ+LŒ^abô £W˜½ÛÄ\ì¾û§œÿÍÿ?<3ûçÿÅúÀ±až<¢?6ÿƒó£Ö6õ½ø= žX ¨.ࡌnÊø\e”8®)B|Û)3‚Ó¡²@b·A£3äÛNU³´Åu¹Q™yuù¦ŒŸ[W½< k"8Ù+4¬Zß\¥L¿-4$Ùöõò¨¬ƒçuÌ“#öeÿ_<ÿ½3sèÿ}þïùw¦'½ÿg°Àî$ã!GÏÜ·u´c##dx\èŽ ½Âq¡W8.ÖåFe–zþqq±'w…OÞÿæâùSÁÎîg÷÷ÿ…ø\ßÝ|lã¡;èäÞc3N@„œbí^Ç'Cþ6ð R®:¹ÏÈD¥o-§QÍC7ºKtÕiOÖÕÕr:À^"ß=µðÚ2fTf:[Æ,¬‹6Œkxu³u5eÖUËdþât¶.jª§®n¶ÌL¿¦ãš3>3 iÎ8O—™ÎŒa-33§3“;gmÌ|™×÷ñb›³g|ΚŸÌys1[×lßǃ0o.fÊ\ìjÿs>?åþ¿xþŸœž'ÿÙ÷ÿtA>×û÷l™>€i[¬ƒÚspD«ÃÓÇp˜ì°Ùcì4NÐìÈ¥žß(µ<ƒ¡“ö¼ ª9 Ñ(BaÀbt¥ÑqFçÞ=Å F#¥Èå4Æ78ƒ*&Š¡ö;nzª©8ŠtÐõE+6&[a˜Úê ó)GŒ´=!†Epe©ÂIFêrh @p;÷׎.ÑŽÊý:ŽK씪ÊrÈÞJ‰©¥$¿åHÒɺkGØ<ŽøSˆާ¦­æÆÄNòÞKa›’„ôMªqíH§ÛGÃ$ ”¸vtýîIÛ÷–¥èª·Õq*1z̉³“F¡«®Ñ)xd¢MC)¡×e°ºv${fd õ8,&HÐîÖt›£b÷ðJbâZ˜ÔPs± ˜ZcÑ9G!èœêƒ« J$þ0¸Wêx!Y£® JœS ¿F×>šñq(H¥ÇMX… =‡¾ ‘£Æ¡ßñظvDö–åè‰ý–wlšˆk£¸vDKçiñ;Ý'ÆPе:n¢È›há‹„ƒ÷zçbuÜDô®ÆH>¸$Z$!cC¸vŒÍçiï$Š"»2õªºvÄUçÇÀVÑqPwÜ©qíh0„)»âÄÈ“YqÓŠUŒ ©©ì}×uËW‡ŠÙ ‡¶5Š˜³¨¥ÄúJ0ªÕ0we°ŒMÙï+“UÇMÜ÷HQ)œ¥1Äè¡ G—2°…# ¶ÞUó=²”v‰¤ÇhêX¦xe=Š ÛóukCÂéŒ÷—«çFrÄÅGãmÇm†=Ie¡¥" 0VÆ0bØÌbFG+î;Ó†‚ìiaœ}ãz×ÓÑ„fÏZ¢.[…ûÝ×õ × ß¹Ð¬ž±Xª0†¾Þƒ=9—ÃÉ…[‹.hŽƒùòÍ8§Ä¸mzŽ=⣃ù õT&òÒ Q Šá•¡_¡Á7Gbú6˜e6§Áó0T|vƒããOXõÞcT¿ÐÏ?ì2~Øü0T|#Ò%ö½Ÿuô.6fügãSè¿‹çÿKïÛÿ\¼ÏÞH¿†}….3 sSäV…äÐV»K 8¾éÐI¡Ê:y囸pÂ@!­8t2I¦×Þ6:ÏxcÂz0Œ‘ö‘]‹ã!? ëànæ8ãÉ8ÏJ=hOß´±q£[@RM|ÂÓQ\Û7•"l(šLÙ¦Í U€OCGŒ$ô¨2ܲ áÞVÒf–gÃê8è­b­dË|Ç%(d/bÈB¢jubdLc™&v‰uÉð å"£ÜÐf¼‚}mô‹Ñò„H£6X­N£áÖHL 2JYáà©Ï¤zsIeà´nÇ}((öꂪ övÀ’„,SXyaNÐ2<ôŸCkCâ­Ž€¤q)ƒ·O°L†»ŒN{Ý€E 7^¢2pÏÆÁ€` Íø C *‹ó®=¯^﵌œ€®`Õ'¡µ#‘cÍš|Ëå~Y*cXêý‚š×O‹ß‚íÔÖaH@Vò8Gn,YDÏö0¬ËÞp¿èžEÇ(€7,mgÚƒ©— åÐQûÂÚ7<ï)IH."mlí;Pü=¡L}H¬ð;N5mƹP´ü°ÍàÅZ Ö!l Þ;J>Cl“ †gBŸX¼„Àlh(~:„=Æ+“«¬ Ãý+Ó×…½@K[÷~°wùu“D8ƒ-ëiÊ’XÏ}%ŒˆÓÏkérÿ_<ÿ€Áïó/Öçú®;tƒë_ÚÝâöÊn6¾Öxo} "‡oñÁA„¿ÛD%C|<¸`û¡ÜÕº+I–Åe€HÃÍè òñð°Ò‰™HPwTƒƒ1za¡"TbÝ|ôºÝ #é'ìDïñ4cpàã²¥ûPŠ ™*LýPöhÈûÞÂp¡r”HÀDÂà@CF‘™È±ÖÌ$qº½P™,ˆÎ¼Îȉîû&|yB‡Õ첓•è€34üdj3H Áæ`@®¼b¸á´(3mà5 ïG5YvѦÑÔ‰ËhÕÀ¾›dè\ï^4Ïȹá“d æJŒ\.ãd†|r׳+WÛ£Óxìi²ªá]ÓE&<„ÔkFàJ¾Ö…+\)´606¢I6áЩ´¥1L¹ ²wØüÖM¤2PëÒ}F€!ŒŠ&ê\ŽxÔwÙfÃâZeÍ¾ÞÆ¥ ¢@]¶Ù@{ ãi|º’ÅPÞh÷}×&÷˵àEz‚pì:EÒÁ26·9TˆðIÄ—  .Uj«èz´-Üöïh‹ø­¢º|ž‹¨†ÇÆ›„:'P¶‡¦¾‡æJELÊß],ØÁ‰y|ý#ñ+ªoP¿œ¦ë»Ó2Î9?½elÖhjeÞ]gúܯÔ[F³ƒ¢ å]‹ö¸V³]E~³j)Øþ¢ï÷jÓ‚nHyšz”WbÈt£WSDk`Œ œ «Ê¹jM m†ië5ËÖÉ}EgË¹á Š§qRP"Cª\Þ!ŠØY9Ÿ©ËÂF3t& £8K°ŒÍe€Üc“*ûžØËà”q¦w¢ná—±šÖ³•q†“ UyÛO†Õà`3TWÈu«XK)9.ƒÞʱL,p뙦KIÔ4Í»Må.p ×*_¦w̾HT—+çs´t%Á:D#™f¡óÐÕ{Pe Ç;<šËX‡}wº¬y îyxyœyâ°ÍÎ2Í+CëvŽî™®!ãΕsNž[l|äÄÚoçêùÜoÜ¡y›vÌ”Ö Ù—5o#«µ@ßY–mµWT&”; žÜD=H,X:W],óŽÒ)i<Ð¥A•2><™>åö(¤Øé×I,‡àðù}>P¡Èaa¤Ê ˧,ÚÐv¡œÏžäex,Çžùp+S„ë Ëþ‚ùâå—H Ëôt…²ž#V¡õìÁÂ-ƒr·.Ôõ 75]ëètÏž¯àò|ª¦ ‚K‚;¨4©*u¡œ=\7¤±Ûœåe½õ¨¢Ö…á ›vÑ,Bv–ƒÇ9”q°›¡ŽèˆèG͸D(ëY¹,Ö´Ñ ãˆd—],ãá¨%”éG,ãøì*ÏVÅv¿=ò¯ˆÉQuª‹Õ^WQ”(L“ˆßè-®Õhò|b…„ÅóÙ_°K‘íÐźžâ½0Îp&’ñÁV¦33–õ Ý‹7‰ª¢æXÆçýŽ&Ï‘¢ÞYfù@pÊzN=²­ðüI¤WI*s4_±àÚ’ß~XHpR2oJ.“ò"KcÃX½ 1s<ëR97³Ž ‹x{Ot&•ÛÌeº\¦kÊ|ƒëšæºº¦.SðLjó4·¹«mN6ßÜ÷iî{Wûž\n3a—ǰ«c˜|Y«4]ž‹®ÎE*øÏi—ç´«sšbÁhmLóÚèêÚH•N¡56Ík¬+kŒl¹=¼V§y­ve­’‚!¯ùÎWž‰¬yºÒ匢½Óå½Ó•½£z“ÛÃ{°Ë{°+{Põ¶¬UÚËÓ¼—»²—Uï ÞBgÂ4Ÿ ]9è:’öÐÙ2ÍgKWÎâT >FgT—Ϩ®œQt´ó\ðY7Íg]WÎ:Õ§²éÌìò™Ù•3S©‚×ñÙÛå³·+g¯ªô ŸáÓ|†wå W™ÌwA—ï‚®ÜJ•qæ;ešï”®Ü)J•õÌwÓ4ßM]¹›”ªxÝqÓ|ÇuåŽSª¬g¾+§ù®ìÊ]©T]ÏtçvùÎíÊ«„ìòÝÝå»»+w·R¯c Ë8@Wp%ôà4ã]Æ%º‚K(]Î ÆI¦'é N¢tYÏŒÛL3nÓÜFez0ãHÓŒ#uGRºŒ3ãZ]Ƶº‚k)¡§gë2ÎÖœMéÂß`Üošq¿®à~J×õL8ä4ã]Á!•.ë™qÑiÆE;ÆE©_©Î;â´]Æi»‚Ó*Sñ »Œw7V™Ì8v—qì®àØÊ¼ŽqõiÆÕ»‚«+SèÆù»ŒówçW™Ì´C—i‡®ÐÊ”sƒii¦AºBƒ(Sñ:¢e¦™–é -£„ì2M4Í4QWh"e ´Õ4ÓV]¡­T¦3Öe­+4šÊô`¦õ¦™Öë ­§2=˜iÆ.ÓŒ]¡U¦3í9Í´gWhOe ^Ç4l—iخаÊ|ƒiái¦…»B +¡§™¦žfšº+4µ²eœ™6ï2mÞÚ\ez0ÓøÓLãw…ÆW¶ðë˜WÐe^AWxÊ|ƒy]æ9t…ç \9Ÿ™wÑeÞEWx*Óƒ™2Í<®ð@”Ѓ]æ¥t™—Ò^Šrß`žL—y2]áÉ(gë~'^Aæít…·£\á#1hšyD]á)WøHÌkê2¯©+¼&åʹÁ<«.ó¬ºÂ³R®Œ3󾦙÷ÕÞ—rß`Ú4óкÂCSBN3/nšyq]áÅ)¡§™§×ež^WxzJèÁ.ó§™7ØÞ òe=3qšyŒ]á1*¡§™WÙe^eWx•JèÁiæyN3ϳ+õ¹0ð52D½p‰èönÉÂÎå‚¢Æ#7…ì‹}0âqp›4Ó ÃjÝTû`2i/ZhEÙcß¡#{Ü:Îpt²9&‡Øæ°ŽjF®±VH˜FPÛ€L¸€¡ÃÒÍ8²'gØpˆðfû`²ü#Ü\QZ*Ô>ÎE¶fr¿[d‡Ü‚€Öo¤S×s`ŸìHx¡v6Ïiôû`k­¡6ÃÒ2=¯ ‡F£?$ Õ¬±)öÁó—07D¨.ØDŽˆªbŒxb¤÷z:@¼¤—êJ™žT É‚„_)9D"û`Xª¡g38è°BciS탑<²–C­FÏ›Èò+íƒI•21mt€pãBoZû`Dj’"d–˜¡µªÐ``œ²SA@n<¯UhØÃTˆÓEoyö€¸4Rq|Í!Zœ•"=ê¶¡PI­Þ³0<&Qp€3ÏÅjLÚR$_B[Ò HJ„¡j­üVíS ¡1 °ÝkÀR"1^9ó&{Ê@ç¨j̚Ŏ$†…ö»GÄjŒ„E/ºü@¥YÇJD(û`<ù‡s·)99̉1Vìƒ)} zB'R4shÀdû`’{ȾHèÛʘ„~²}0Ò[Ö±O2–.DdLøjŒø»÷V3}c-auÀ!ÃvKh'J‡^‚‹Õ7öÁØT§S„Ôb›Æ>ɈyBÛ=)žšúÆ>¯‰ÄáÍ#Ù…“òB CŸj·Šx7  ‘eBºáÙ>˜ÞBNp¯ó/Šmó¹A®¥= Ç 9• z$p‹}0x1ÝæÚOcE„{±FQjx‘Ce¨RÕ>É>¥•Ü*¾ßî÷lŒóåÑýíAQÜ0š$Ù>Ék˜¬”c%E÷{¶Æƒf'«YjXØDïû`ƒ´4Ñ@@¶õ¬á•É㌌pÔž’Ú/+$Cë'Û7ˆºwö5’”AÝçbìQ/žÍÊ#šž‘²ï‹bŒÛUæ±=Q³ò)€7öÁžb:³L—A[­Æ>˜6‘ †Gð:hrkŒèŠ 4¼èj‚å+…8dhœt[cˆ¶sÕ™Ëô8ï¡Úa9i ‘4+ež€e¥ÍJ6ÈK¼­âéçð^±¬ @2˜/¢´eê¨j2j¬~`èz>–­×Œ5÷rìËÚ€í¥=s¶ˆë`ŠEf^T¥=Á;Völ7€7‘Ã5u™S´\gU\í#µ§ÌÆ0š:§F3/°WhàEŠ ÷`lì°¹ðx,‹D$|,Ö{ÎtV”òß± oX—/íI^³Ÿd¸+AxbVÅ:Ρ'nT16¬Pë×X¬ëÙC“»NÇ$>*dðÇ:ÎÊâö€p"°R†ÃÈà€cWýq‹H®Ôp{"}íºž=¬:0¢+—À†÷WªãÜ'"að^¶ìÓÅ@´™¨çF$Ö?Š\{ì‘á—ê¹Ñê@Gw@Ÿ'ŒíDTîHy=£\Ñ[¾ß½HÁ¢°.U}¸ mà˜?XÐX&”öŒ^̼7QlQhA eê8ã…Ï~ àD‰bÙ‰v ©â6ª#T-öÌAi@ª‚Aä;’ ƒ?°ÂED j#ÄiÂ%JL/+R žÖj ä½iöuÔˆgnn$Ýù,DÏ"ä7ÑTQL€2ÄðÁ b°}ä°Õp®²VŽe+„îaÊ ÎÁ ÒRd½B´ßÑs†#{‘¾0ðÖ‹Ôxe8¦L? 3c>ëŒB÷FéfëaÅuU… /D7Í$ÇTmÏB¶¾œQh/Gg&]¬X†ýý©Æ¸F„/^ÇáÚ!¿JY0è"ãs,‘ÿæ¢c,+Šâñ¥=]Ùh¤Âí{Þ5‚Adi“Â)ôËÅÄÎØñúlƒÐ X9¨g|ƒ<”¤*Šö‰hó€¶Ýlsg Ù‹dEÑ€ü]örwñ,œ¸_EI;ÄEñ‹öŠê°ò} bpþÐ ”™8±è„,‚ØÊŽÆÐq1 w ËzœRÌÝÐ.ƒ7€D´U0HjÑ)d1ª=ý‚,É*$jKóÛcy¦|12ug墣3 V1ÛÁ¥§Á î÷HöŽY9V¸H¡ ’·¾›`ßkæv‡Þ5‚A¢ìo@NXº˜ ®Ÿ`-KoŒãºŠ Û{’ß"ƒ+–NÀ ÛWÁ á«} ²{Ž-8‰oƒl¤ØŽê31¢HðeŠB.:´¦g#'ÇŽŠ`Б³–cä2)’0Jƒ¸ÔaœÙî¿Oì)ùûª ɲG¨p¥Œdh­Ú²žqŸ² (¨Ã3Àû4 ñÚ"=n”ú"¬6#ñml9Ÿ¶JÌE±èJ:çmXNbøâpä7MÃÙÞ1  ^I–ÉíÞ°bôxhYQÔ#û‘ý±Y ª] âÐi%ºÞ‰N.:3Y¨UÌq¿«H¬$6d= ëTÁÕÑ!-Z˜9Òb@‹çÐzæsxÆ‹UºÓ©‚A„lIØð¢éh¯)ÕvÊÐÚÈŠ¢]–ÏÖ™±žy•ª*ŠÆ–H!×òdƒN-í÷¬(J5ø¾‚šRO´°JUá+’Ž6Ò§Ñ8QêAüP÷¯l•mË<1$I•žxÂZèA2q]9¸ÂYë?¡e1–) _N‘Q@º‚,ÐXGeL9{‰üGš(xÞDº'yî ^—lÏ@6(VZ1=ÑŒ:Óƒè:(°(¡·† §údí+þìEQ$VØq *ÓƒŽTö8$¤Aþq —© ŒÈLaô›[¨Y&UEmbv¸N-#¥€q¢ÿWUd€¨àí€>CùÐÃ¥€eÊù ƒ+:|âjéq¿—€PˆŠ®\^U¹LÂ}¡³¢(†¨´ÌRö=áðÅX<u¦I?40Ù®÷ 8ÉÑŠ‚Œõ´Æ¹GÈ-j öˆéL"uì˜ßë°õ¬"g‘ߢ3=ˆ=E?^ì3òK/c˜E5²yU/8[  kê{ÊíA¾ºa;?ËJ4=+0j]ø°­Ù'+Òž€â2*ÏTkȘƠŠ/uPb™2Î@åö†CÖ$‚CÚSgEQd}Ø^”øzV Ò¨NŒeÊùl!pˆGÖšD³vg]îAèŽcŸ‘Î1s}^S™¢ ӧȺE ÍýY]ÑÒê2ÎHq²½Ž&æ§CÁ.ʲµ.ç3 ©‰Ýô‘xE…DuM丳;I’ÑÓA¤¯ÓYQT£î/¿ž„€ÈÌ÷dÓŸбK‰?¤Á$ùÒº*ŠÂÅèù N:Ñ|ÁÕ(\1˜èQ6‹-Z$ ˆ²ÓÈ»ÐYQ¹Ä–Q#TÔ#$¹gE-EQ7±¢Šõ”¨£œQ›rÂ.ìÃæÉ£9•©ÇÚ2¿ϱÀ9ËaMYφ›‚ïÄLo ò<ùŸ.†ƒ ö';`cgÞÕßG¤mc é˜¯… €3›ð.ÐÕpÖs í hYðYyŠäÔõ|F~¬÷x|à–A¿#Úº[¡;b;£[\*“È÷¶¶îSd²ðŽ™±®'ù Î†ƒ,7gò$VÍrs*S 4[bY ØÛ×-øs ?²¤ì&VPN0ê{Q`b’õîQX湌¶ÔæªXûŠ}ÄZò‡ebïHF_Ösò–ãjjl臉êrå|†ØW  ~̬FïŠ8ήÐ)°VÙç\ É0g€|ThWè@Ù¦Æébâ°R\?™DE¶žý— ^3 áŽÂùjEuʈ›ÐÔÀS™2ÎÈN`–²%mP,I·Çþº«göšF]dØ*2(Ñ™$¿‰íPSÊÀBãSøHÈ<`vŸ'ÍÜ€<4äKh_ð:Ç$²}„!€•F8i;Ÿ¢ÿwÑâ¿ÃùÖïûÿ¸XŸë»CèžúÞcç\ýOiòäM#(ž#ÜI¡Œªªÿ) gÉî.`û³Î˜Oºo\Ç)Òš`‰?"¿Ž‘„Ø7¾02¬ÄM;\A|J‘ í¬þ§zÄZÅ—!÷rx¯«Ç×2ÏYŽ« ÙoEL¢QÿKH¶Ãn¢¢y ùˆà£B® ³Rm$!b#öÇÄ“ïØÏ\ãþ ë²¢K;ÇKã Û9I™ˆ¤ »ÍCŽ¥^3ɦK  9$6]ËCí±ªÿ16ûSZ±]Aí­ ±ˆˆ:›Eb0'žAÉÝ”+e”Qâ«#%úr¤–VÔÿšË0§ó˜GI£þG—E ì·Õ m¸X‹ˆQ°Ÿ Táû(~ߨÿ!Qoƒ[Ö±„gò§/e€P7ìÁ½7Ѱ{9F§U)£I»€¼U‘3ÆP8†%<²@uÓ“ì^.XFM»Lú™(îù1< I—ð H}6+AÒmÜ_yUÇ@ ™;A( öË2ªœÇU:Ûs8Cx,d¨Fý4KÙƒ» QÙ©Â9u„Ve1±#;9Ëñ+É¥2€CµáAPÂŽQSXWЛ)î\EªYý)ÇhЉX°L„õ˜õ?$Ÿû(KÔ:‚ÍB´¼¨ÿ‡¹ˆ ãGaSr!VÕK0J­g(eÂ2°FšÕÿ¦ÎÝ¢gz *¦ŠU’:bÇÙk™BOFQ˜S aTÅñ!h6¯D ¹£20aª ‚ì1áÅð¼T&xEuÅÒ›€ÖªI½õT†Iì¢þgˆ\eNЙˈÊkQÿsèW›ÏG,x,ŠiJÜjOáêEŒå—éÚªfõ?ëFý½ƒ[߈’ŽHe4Ùò–ð ¨1¢ØW:F0"I‹lœFý #Xƒ¥'¿)ãÌôú±IûàÙ.–tQ"1£l£þ‡7ˆg;fo)\RD!žu%<ŠºÈÊ )\–éMÏCcÙgj5Òø ˆÜWõ¿ŽØ¤:0çS#¿4â}áFáAt?èüLDÂ[úFý/ ‡Qö³eà^§öôšXúYýŽÃR˜v–y¥êx&xŽÚÓ®C&ʬþGJ)=›£~È2SÄôt£þGä<ûJ:?’¾S`•éМªíÁN@݈ªþ7eF7³;,©ªT/Áó¹¨ÿá Iª>(p¸ñ¹ölÔÿH‘˜†NS´7Ò±è}¡ªÿ+ Ù¿¤™Ó‹ž‰¸wŠúŸ&‡²‰õ(ÈÜ2ɶêäf}À“%©>"¶Ó# ½¨ÿ‘3T«yÇuiØ)}UÿCÖSPŒ^ i|4›«Ä:Î0Ib¿nÈe2ÊpI“ÕÿHÍFÑÒÄx>${%5ƒXÏ Ø:šé8(â™YÔÿPuV"¦,;x¤J—Ç™"h1Zˆ ûŽË˜úNwÏœXF‘M ´Áõ“ÕÿPDKÔ³žùâ‚2ŠBë4êÏv «Yމ8@£þ‡YN9qD2eTšõ¿€Ñrtâ}J¶-ˆ}ÞRÔÿÓcŸ(†tƒ“V5êd³È>6zŒΦ i´¢þ‡;γ„ÝdGXÆ5ê(¹sÌnu¨IÂ/çÙ†*g¸µìºZ¡Ùì¹óúEô ô™¾lþ`ˆÕÿˆ Ù³Û'o1‘?Ù/N¥cé°5(À@åçÈ4Qõ GfÏ*(ŽdÜÈ ¾Uÿùˆlòã8Î*H²?ÎâKéÌ=Fƒ  {¹öE¬¦‚b³c˜I§D~Mt\_Ä0ÇšÍOɽ.™Ri¨êp/²&ŒQÒw\¶ªÿÑŠ3ñ€VìK'WÕÿÁ˜k£·q˜6;Võ?leS8Ô% ÿ—¶õ ‚kncv?¬5Ë,àÆ·ú¢"Á±xEõtX9Rÿ³úÞ)ä‹‚ô÷´˜‡ŠrQÿCuŽ˜˜¤2¢ç†úبÿá©Nrwâ]{1õ²¬"X؉½ & WÜ8Qú"u ]Ö3œšUªgç2(تêthÿ‡Up,°c•άþg‰IKZý&x6ý=ñ.Š_DÅu(lªÞpÓ·ê‘ë¬%ÎnïQ×KSèάþç³V6> ¬fÑÅGUÿ›’(Šjc?šÖP˜¾Æ/Pµ¬Þ†ÁLø-åIm&û‰DËxŒ°Jø< ΩŒ#ŸYý/‘©[4$ZcÕ“T¨ÿA×½¨Ä Ð ƒ¦ªÿ‘`‡—èw:ð UýÆñ1&Ö”e“d5éªþ‡<¨ž£DÆÄ²{LSÕÿ¿8±xñW<†½Š¤Þ–ÕÿPY”\™’_"6WÁ{£¯ê¤ÎŠzcx4iÏ<¤HÌWü‚ æ¿Ê–bbªCR_¼Bà)Àýe¸Œ¢sÕ±šÓŽ}¢ Âþ8£fû~Û×1ÔVŽåÈæ*pE…Fý<ÿ!~Èý_ÂV«þ ]6µ‡ÓÇ"ÓøQx4ᎋ?Ä$ö¿†öNö‰š$Ê¡GìdÎc@ݪþ‡ë§—k°Çú3èT©Qÿ£Ð.‰¥*h8Çe˜”ÕÿôæÑCÛÙ7* JªúŸb‡ñ=»Œu†ËhV¯Í~ApýÃg ;DÄK!’*”ˆ{°ïp$gî»…©hÕÿPàÒ³«E¸•YŸã(4êtBJÈÖ”ÈfÇ¢9Ý_¸GQ”¿@Z[‰•R4©GV?‘@ű4 G®ç2¬î›Å=(z‹"¹‚Ž£Axzå܈l„®#(N OY¥<«ÿ¡Å«1J,:ÙT'EO÷Ž+ç³ Ñ’x.$ ‚dÈA{«þ‡gfŸUžå†pŸÅÖ/Š­ÉRÌ£f ;!ÆÀB¾QÿCj" ß/vx T©ŠùrFG~²Î<Ãaš¨ø!ß‘$eF‹ÕkªêÄ+ ÒÕ“ßvÃèÅFýÎpkE7†ç°ï¢ªþHz…„<ú#ó«H¥<û‰Dá c¿)x2%6`á{Ù×õÈâ, LûÛ¢õ ÂÆhÚ3sÏ$1«§JEýo´À®”ñFb™)Ê8«ú™îGŸg§/šU(CÁë – £«)n|O|‰¢þ‡Êó„®Àø)Ãq¼{ŠUü‚ =HgoÀû"±yQ`“ðÐø!3}Ϥ™b2ߓϳì=‘Zl@’C»„¨X°àŠU 2ü=—\ 5ê û®Y"‰3Çe ñºCÅë”S$Nžó£ýûfiÃæŽ}£â9f«ú¬ŸˆÅØ$ ݪúñIƒ—Ÿ19V aö‰^£¯U8ÙtHP:ëb>Í’_ wÄC0áê¢þ§Ê1På•͸àªúîA´Ä‰sDô1C€ÎÃì'ËxöÉœèQXC¡D‹úNSà­‡!58v´O¦Uÿ#,…U³ªãS™žÔfõ?£Iw*âÞaY¹’°-ÙO$ò{V¡´¨fG5´Ì5ê!\LPMR³Š™–ÕÿÈtši”hÍfS‘±fõ?ÂÞß;°šÙ)9ö¹˜Šš%ZE‹¯_2¤C„¦rnx²ì£(ŠÃþD#aÒë8'»@å§)ÅH¤õœÕÿP‡÷ Vêµb™Þž)ê8ïhGJ‹?6Ñ‚#‡Ðƒ(Pt®¢ú¨çàÁI•ëB‘}b3r ó ‰—[ÔÿˆÅ!zc%&-P˜úqãûnİOÝ&VG¬~OQ×êB¶—¡ó§¨ÿ¡KBÞ(àŽã¾£O®TÕÿÞ[f× );Ó–T¡úPתf¿z&XÞ¡YÆPý/XÍž ¢<_Ðdå«úJ=R`¿Ëp°Éò“LUÿÃeÌ–5ĦIÓZÍê8>p"yAŸ„eÊö¶hC*åEý/ ùÆò8OjŸ$ï´O…D©™OLÂø<nFÓ¨ÿ‘ @¾ ùÁ2€o¨ªþGâ3òÜ– @ùFýe9ºïöâ{X±JžÊk “™­jÈÞ–}ëúªþGgѤ*zn"ÿ¡tÉâN ‰AŠ—|£þG’Ç&Z}ŒÀ$±j_1S²h–ÏÂ2¢ãðfŒ §ð7óp!<6oTY­±¨K!Û˜…õQÖêŒÙFý,”ÅT9DvZ'm«þÇVEJ‹é"ÛaÁ꡺²úz¢¦">†ü âŠ8RÅÌæ`–‚ƒ:d=·ê¨j™÷·: Ý”"¿°YýÏ:t…J/ì+öWˆ¦kÔÿ …7§¾'@Nا2ª­êÄMM¬> 5‰iž¥pjEý/¢„׈¼@„­ÄVõ?FŸDîà£vÌL#Ü&«ÿ!g‰½F.÷¸=¨E]ÕÿèÚ²¬&¯kñßLg¸+ç3аÙå0`í¬€Ô_jÔÿ"²Øbºï5ÃAä4Uõ?æ¢GÏ<¢r %3Tÿ Ì2Efˆâ¾cl1[Õÿp…[Ëâí5÷ 5ÇFýÏØÔ²Ø"1Áبÿ¡H˳ث÷Ä5£ƒ1šFýÅÊx†Ó@‰ dÕkWÌ‘;'“½” §˜uÀ†éx‮p$»$_é²²¤ÈqwÑu#®Ÿ7€¢ìâeFâ`ËÊ'èMËõl”i9¥l*{ÎÕj m숊â+Ú“Ù¦ö匚´—=2$YÑCÉaß}áoXãX÷ y–D¨jŒï‡eªù¹7lŽŠËMê¬#•àl†×¨a—Jp¼²¿d bMãSðº„öÃ|‘itlyŠeʹˆH¢sÏÚ ˆ+áø„r"Òä™äÔ"Ï)òùª3=Ñl“=á„Ðkê;†Ï$“rn5h W´ÐR]€×¡)®Õ|¦O, ŠšÃèrKwn(÷ ô<ò„éâÐv@©R™bÖá‘ì'…«>²äÒD‡Jw;ϬixõQ1F8Á)þ8‘ôŒx8ÀRM4èf†ÊÄÚžÄVÌHêÑø ×œ÷ê'Òçû CÛq *MòéÁ€$9»3Gë".cÙ4¦šƒÙžD?(V–àÞѱN¦‘ÍbYD‹Çëý†`©L1 Œf+ Öä)®ÃXä)°˜6WQ³9*:EÆ1Œ…/ „#UØœ‰á$K}Ïô âl4X‘øá¬4 ±ð7àNé­ŒOdªÄ‘OeéAä˜õ¬¹Ö%l^£±LÁ7b$÷êx‰köõ„J1¸ÆR=7ÖE–,ý‰±F¸h6#î´wØO6Ú¾ã¼gzçøÏÈZ ì—ÚxŠû­S¹ˆÇ²aZ=•3ÆÃM_Î ëÅSGðr‰{Mî\LhŽ’¸ )Šp¼“åƒÈ¼~ñ{Išl¸=…„#5+|'> ×2}¹9‚%tЏK(ÐWhzf*=h0$+«Iôl*ˆaW1Vyuâ“¥}Žo¹Œ#ÜØT÷ ù>¤úÒ‹r`¬7,SüRÃqŠƒŽ*Ot£Ùf²$£Ê8#j™oLçª!IºàËòA‡ŽYz^H>²ò›âP¨¦‰#§É¢Ë64˜àþ¬ ˜w…¡éûìלb\˜JZEÂ]<4›[:@+q¾2=ˆSé É áóXY®X¦˜7¥Éf‰@™±t—X·°qWˆbýU´Õ"!r$wªàØ@öãë ›ˆ¢~µ¹Èá*ƒE…áäXÆ£ êyŠ ñ…wV ôÖ„eÊ8Û^e3d1¡õ‘d&›ƒá8£ûpT_4d®‚&™äfÄd÷ ¨Å9¬™×2_Hvã¾ÈòA\¢–à 踌!zÐèrn ÞŽa5 œ8rèµ¹º­p²…b†HgœÆŸ=ymBÑaŒN˜àÔ{0ˆ‡(Ôèa_|p³Sß˹K=0Yѳ cdY¶ÉòAt{bØ+#úïbó°)q|²{¼Oå|†¾ªÄ樼—M970>qÏŠ£ÆB…Ápmds0ô>‡‘œÿQŽ‘.Å|cʹ¨‘cWH€_’u8³_5U>ˆ"uVéq$0"4r_iÊ=ˆQ\´ÜËÅŸ&÷•Å\7`ø:’(|BÄÕ)ç†SAâE„žý¬kv×fLÁŸQ#ž}r÷›× ‹cXéAg(©çél«ÉUf¡»½NDQâ?ÞâQ[îAÏ.;Жe{dè)…‚¯qä‚khÀ—›ÙV€çj•ÂKŠÐÔGJlB«<•)ëÙ±êêP¾È0®U[ðºÔ[f¯!Ç"›Ùö¤\èÁàID‘6·¼aáÞ 2±ð.²¦‘ù©D!Ög]â2ÎhòìÄ(ûD,“éA‡žH-ñµ’&ûVKÔ:ÎiŽà‰ûį&+è"³çÂ:%jq}¦Q|Oe¹ö2®à½ÓBw{Çí‰=¹¡3®ÐÝÈðXj覑Àùq=Wù ð’ùXp jsáoè×< ž9‰wÄ© 2Fo‘‘忉í‘Q™ê*zŒf @ %sìcâ!˜*D- #~Û8À ò´—3=ˆ\P²KÄè`Z Ö°®,DÎÙVŒŒ}s¡¾'Á©ã 8 »pD “%Op =™¥P­E‡|ë‘{Ø7 8Bwá~¢Dæç&Ç p$²q¨Ö‹NwØÌÖ1UãÈYôßDª¶¸Öyã“ Gã˹‘¢çfžÈs‘¦pïT÷ ¨ìY<­¸°ƒêqýøB§ ¦Ç9Å#“Íuéo˜PÎg¸ôØCÜùÈË;>Ÿ³{T s½)6åF¿,8>¡œ°e¬¬CC‰ä&ËQ—–"F>ôB ¬c_éAÀi|4:æ êšà|ÕW}X“C M8R¥a8=³ÊµQ¸†bw˜PîAgHÇ }\™0+:{z°|ÌB’± ÉþLHu"KéJg$`£·´wª|°âí$‘ÜŠËÐ8gù ƒÈ¤@³‹¤xÍ£Y®ÕXù–¼ˆúêÞ1öE.[M¥µ×Q\r•HzVt†Ç"ïüC Ã-rP¬”ÈÊd÷ ˆQÓ’ðävÒ‹ÿ šÓXÖ3ªLÒÕôJdÆf¢³7Óƒ(39tUä@p*PÜ6“ãÈ!'‡TRé`4T<£ö”qV„¦"‰^©IHu"œTîAkIw…Ø× BiÔ6™$»Cl:gÉÕ†GܘöN¥cDÏäÎõµðTWÜž*DOAâ‘ÌZñä'Wc&Óƒn"'ž-Y9îgKö UÞ툼E{4R¶Gójr7a²|0bì2öâ ¢gÿ'bŸ’僚Ü;°lË6cw–ÜÈ›*´ìÓR õ pnÂI2=h²:%2‚Hkœy"îgk9TÂíé¬ó‰e("–2Î@51ºâ£fß­µG°LÑ+dyMlyÇk¨Äm¦Õ·¬²âù–D3m’iÚê.Í[Èì¢÷ä¶ 1Fr±kû2Ψ†Ïë9P +T:"¼Îf}QMZÜâ •|ÈÜ›hsÛ—{Ó"ݧ€ М&$†±LÑûê³· §Å]zèIX¦ÜƒšÌôðÜH†}+%¨ Ýe×8r€KDâ±Ö3¥€"1,Sðç^Ñ}è`ä2–ö—U…¤f4Þâ –qDŸÚL’Í#  ýß ¾sm#‡ (u:ŽcèD*SÜ‘öVÞÌÈ×7:ô4Ι4bŽMæ{¢©‰Ø÷§œ®§P=ùã3v’Û¬/Š’Gò¤g”cbÚþc«{>9vƒ <Ñü3 ­P+‡–xšRtW’ó:<­®ãlŸïèBT‰9·DY]ènÀØ´¨sÓ d4DpʹŒç\ ]µ² GYrÛnËzŠx áHHïÝê‚×ë@ÞSß-†ÙÂ2U/×øéòOŽeav‰*Xb_“æñÅç˜Õå|F”F‹n°lžoØÖ¬à$Ñ`}ZÃÊ9îw\‡™Ds6D­)ž˜’E‹ÎÞ±Œ*4uöc°¤‚Z®§2åÜ€fð•„Žó dدê.PÚÌ'×(ÈŒš\ß×s#$ÖuLd㌖¤€P]e=Ãm“„÷Rƶ¡+úuΣ-¹;îY©0+ì/Š1ÙH@E¦4¼æC¤¸RÖ|Î,>Ãa!1 tOggXôlÙ'–ÑÈײ™DSbËj‡èpšæ+Â6ÀöT÷ @‹+’`Ù%–!»¿ªÇØSÜìˆvI<QõÈë¶5ŽÌ‹óDqa™¤©=E nj­Eu*’€&jâoX[èn…*‰„ÃþoájA™¦µõ|ޤÌa1, a2ÿÍVw‘šã'³ˆŸÚƒ±W©®r"”ѹH§Z"{O}/ã¬m$db8 ,£I?Üf÷ h+Mªã´¿r™€´ƒ­qÅQÉ”e@u¶iô´Æ²|ÐÓ¼GѹUD`ö9¼Bå‹:\ŠDÆŒ¼õè[ËTþ†¢˜áÈâ&ŸQ‘ýñb™âÄšžãþÁŠç‰k–Ú\Ý79Çö2h'•Qä3*ËIDb »6%c,Ãv¬™$3Ý館ñÂçO¦±©È—èpQ "Ê ¿a3=ˆ¬ôXE.Ù‰›ÑŽiF›éAô¾BÊâ=Uá¹L¢s>ÇGµÌÄÞeãW^i´]²™DÑ¡:×’|9f»6Óƒt%±§ñž‚b@mp }97PTB¸_è{©+%îW9Ÿ•5bïQï´#ŠÃœf={Q-KèsŒÊ~‚õßà0L亜o  ­g_ïAM¦+h(gx.„Å~e}QÄ7"ë}EG dzk²áÍô Åâ³>«Žs™¨Q'ÐfzûŽâilG_ (Ñ^Áfù ªÄ{‰_ʱŒ£Ð$¡ð‘P?2=H;3Òýªî"}ÖçGú+²Ÿ?™ô$&wëtDú%}º»—)þ_Òù«cwÿ/€FöfÆÿ‹ï÷ý¿\ˆÏõÝ¡à_Š£¨™„Žºb÷š±#˜³ ‡zªhtIŠ:‘ÍP¦ï«r…hHÁ¥žƒ&¾DÜé\†¸Uì™(&ÖðŒÒV8½`8 FP"Üx€AÊ4öŒñ¢qF`oudÝ“=Àt\À³TÂÓQ²ðÍpQIl‰f“¼4Ä ÇQw{Dõ]äç£(®ñC\JñcOÒpdi"ÞU=Àˆï,vÆî#·Ç"¶z€!9¡E…gÃpȃwã¦Ç ´¬ ¯(2•aGµÕ“CpމæÃAâ´2a¸´9R×#€¨8˜ˆÕm8Œ#MŽ ‘‹’XSU»cã†ä¶¬\„Ž—-£vš‚ąگؙ(ðÚPäq¥€#—ò,ð‚SƒÍíçHÅ©´ƒÈXŽib…]Ù“3íâufв›…¼,.Ñ=Eø,à°…(ý¡@††Üî¾ñƒa\löö 8ÂFéŽÔÌTì<ͲpAp:¥êQ³s‹¾LEŽÌŽÑÊœj´¸àØ:>Š':²¤.`+Y‘ÉXÒ`Äp9äÈW×qîÙ¹·!F «vkr°_<À eІá<>†êBUú~­ —‚fËnÄÑØs{ ëøâ½ A^æ8B‰Õ QÓI¦(ÿ£!ŠÛÔqî=™" ‡s Ò„(™HÙJ ÉÅh$²ƒi§8Ò~1uœQ/†æ’‡2_@‹s\¡äzãØ~-g¾zrHŒÕ ãc„„'¯#ÅŒ&) ;¹Òš=ä÷Š)ÓºžUö2„†HLË;ë[0dø¬Ùg5†÷÷þ„É×qv*rÜØg™é#Ýx€1Øœ•Á¹ªÀàž¸:Õ3I/ =o;ÖÑMDáV>&ËŽ©áy=Š0±ºžÅ1>RÊĵÀ0Âdõ–=À`—Ñ¢LˆÁ%© i&ØznDŽ‚nˆ`gM?¯Ûp$0ì[™®‰H 6`Š¡ëÀ°3˜67òÓ÷x«g†X†,jK8¼&"+- ÚÏfkhNÓx€A7Ô‘'YäNR@ÛSõCz=G±¦8tb£]pãư.+uÇÖЃ͈w®«ë}±ÄÜ“º"õ0S=ÀàÖ³tŸ"9lù²C!¤«`pID¯­|%ä‰ÓÛx€ì/Ð\ å—âÉu佤Ž3àI £ˆòBÕ‚×¼¯ëÙÄÀ Z@a°giè)JÇŠ¼Ñ{R=ÉÕpârË}s>£y3Ý^4¬Ð¡ÉÀŒf _¼þbOp[Cøzní8âé:‘g _ïAE£¬$Ƀ™€¢Ô˜ž<ª¥Œ"KvÕç«k<ÀUÎç|2–5v0dƒkÀ¡öcxÝ8)cÈú)ÔqÖZ¢ Ã%ÅZ"¨«©0H "¡M$¼“('=É`HÚBÂdÐ$nÊ` \õC!?´X‡á‰ÏŽÍ ÿ õ|tŒcˆ`H[ÍÚ/9?¡ÞƒhÍ ɱÖZÙ&¶Ç²ý.0ûEŸîÜ“ûdúÏžGbký8ǬÿOµOÿ]ˆÐ±ÿ*ß<ÛB/ 'ž ñ—‰-¶2ô‘­=‚D­œm‘ý§¦Œ!ØÆµ']Ý„ ¡Ï6r†×;™´bK2H‡ŸF»*&¶‰k]ãç à ›ìØšh¾. ÈšÓ°Ÿ <2}­‹Ô="ßc¥.Ûs¤JlF¬,©o㵓 Š[U½d Ÿ‹Øx‰l‰ÄV?ˆ4Þbn«Ä.«=G*+íŽF5¨ yœm„pMÚ"l½stGh²iˆZ$ÚBp׳épP­Â”2)ãAÒfMì´¾Ð$‰ ˆÃÔ°¹3´§ukªI|Ù:·àÕvî QKlœ´MÏMã"]@iŽ– (7›_ë@ÑAB3)ñ0(ŠéM“8ºâè5Üiq•D6ñ¸R£VÖº-u¡ª®mˆu4ÈVLïJ¿PÝžÚœëB8=ê$ÔºH›¨æx})ÇÁâÝ‹‰-G hË®OSŠìî ŠÄîëöâ1]úNN ûÆ=*™±ö.F{3sÃÇ–8&/SìY­à˜@4=Et¥ zà9…ãulµ ÃèèèÀÌÚŒ6®!èÑ)¯XãIßq–Ù³xE„ƒVl¡‹æ|ó£°£m„4»º7ÌaüŒ#_5È D¡—6÷dl¤kßÉAEðmßш¼×«IqÁ¸ÔeaJcã>–èƒÈkÌ*6ÇÔ슬™S4@와NbJØ;6O/óÕ³ŠzÄ4VE"&šóQ‘÷µf|z ¤2˜Ó˜4[±˜ Å°'B]‘Üž£¯ Š“æpôèª~ÈAygªý"n©e5óŽòéPûEò Ž–Ê|iGúÞšÀ2+.‘Ø¿™wè([0÷6(!"9Z`C öDñÉ æèÈýLÝË0[lJXêê4¸Á¼GtÚ7 Qš}Jk•-,)@ŸHäJ³™w´{§«­wš7üMpê>Œ(ĦÍH™ñ87D6ѵï8¹‰¢óÕ=ˆt»¤2dèª0"™ÁÕ9U$&Û Çu9Í&ÈuN5œjÐf \ûæŒÂ×9bpé;²¹¨÷`RY[ß‘%<E[ª÷`‚U—ø@Sì‘â¥ö2®,^c¨ÓÈzd΢*ÁáP¬©‹ýëÄf¿ã­§l;>èc"l”»]iŽÔ9"9 ¥ÈŸ›Uo²›piPzQ îJô¨š~i2@ ¼­ˆ™ŒN.ƒ,êÁ] ƒ!|;O‘î¬$Uç ÌzÐæÔ±à-Šµçšºb$ܦaH£"5»Š„C˜ÍG8Âsƒ“ÀdóÑÔ“[:ùI ¡¹{ŒEÓ´Ùpôæ$7½ÞêÂ(Ç-N‚3ߥ.ÇŒ]ms;†-í9²@76Æ ™ú@5s{€”e‚Õ‹j}®¶ÇÇx]ã¹î¶Íø$ǦNV“ïR4¡0ÇV8!x øÉe(t9¹¦®íAofkË:n}B7«ÿ/ôŸ:u,¡ÿ‚Rz–þÛ—ÿ]ÐèÄóëú—ž­˜ ^‡¶gm(íÉAº®;M·ù Þc-‹}š2è™ñ<‰®ÉÔ`wÁa*K#ŽãÐÚkHU©ÏíQ}-GŽ|-¸¡åKƒ ê(>]hûEþi‘)}#+\•…MVÂC{Ï( ÆÞQ#êB9€tãÀNÓÉ2 ˆznOô,]Î&v’YonMN¹QcØê#]¶· ²­Ô…Á–˜:UvHyâÅX!Î uÓt æN†M§¼‹†Eœp†q¼×zÃYÒ£Vhx®˜:uäÜ»`6šœ«ð‹AÄ ¥¬N0?דã”éØŒvx݈ùá™<‡CºÓxna '~©”1¡g)½¶FzÁFÜUœŠÎÄÆPÄÄè]P °Ÿžâ:u¤eÊÞH0Ȱi0uôÕ Ø7gg­¤úk‡X8jFS›a‰0¹kÄ™*ó…fÇ Ç*vüe™=®+•â iI’$ˆƒE↠14‡‰d‡‚(ÆáÒ@̇˜Ÿ(Ì ³1^@¥˜Ḟ£f焤¯NÔi¢X®­˜¯'{|²¯ÌeTl=$•ÖH¢·)]½ÄµiÄ|èB‰ÙŽæ)XgSèoná¡Íì È¢i0­™ï š¹•KN³˜ÌýŒx=9²C*—œRšºžQNbD|Éh4šéÙ*æ#ѤcQ¤ÙIâÏ6‚sF0ZÃ^ýÈeƒ…:_½pÎa…:¢ðá<4˜Ϩ8®% &–á(E –5 Ì; ÄèLÁ6˜Å žU‚KB-‡ÄŠÇumôd€c)–™jÏ[Ï •È¡=ÙWöâPˆP±µ ,ÃZÄÉOÏ „e.PÄ`ÝQ)õÚ&Ðé²ýi$+uâ+Qlâ"æÃØ(d/ƒ÷EvÎÇz߈ù(NbäXÖJÀM n\#æC3Íí ž.¹žÜª*æÃýzŽ[m#Ê¡H5Úãùãêz†%¡$–«åhè-L5ˆùhÙY5¢g‚¬¢*æcnjɳ?™ÄOÔ®1rýH›ÚÃ^Ýä®t G&ŠXߦØL/¢1”«”g2ÎDrC@ZÁÈ!*b>6W'±5Ê1j‹>š@¨Š@þvxýDqy„FCYÌG@#q÷‰AÑi 9Éô WzCTŠNâ˜( ç®*æÃãÂF%Œ¾Á¨ œH*= º:SƒÆ0:žq<‹˜(^ü,Åı¿1̯ªb><¾4t2ëÐÄæ}]ÏÈeí c8v¼fçN¾ŠŸÇ[¤½ÌbY¼ÈÌ@ÌzÍkÃ(ÍNQ€|"8 wÌ‘³ º Ø¡Ì r*}g8¢s{r·‡Ú³äè84TeD+‘)?쨄¬Qª˜Jzé fo$Ÿ05 msö+Ç"ï-Åì.Ð-‰ØþÃÇÔiÉ7T|Ã1•Ë–<Ë‘œÂ1ò@ sÇ0:S扨å"æÃÓ¬m…Fl­É’#ŽP×3aæ X¬CbP_¹z Ûd´Ñ˜ÒÝzæß)ÄWC§ÂåX]!&õ ²,k ˆŸ-InõC3Öóƒ…1¹kU[!G8zÀ­ç¢¶Ì̲ì`ÄGIÇ*NµùÌDœ„Ù ‰‚—•@xW’·>ÂX— .Xä"Åzblk’h)§&ÙX×s4tΖØA h=8vúAKÝ;Võ'õ›&ÐCЖ¦{òÄXâ~±r±q¼»oëä£pl[»¾Ûº¿»åÐÝÖénëÄÑS›§7u;Ûx ì<¸Ù=´}|óè™ã›ÝÑíãÇ7NžÞ<½àÔÐí©kÕ ÜW/F„•ý®L95¤¨ÈW11Úrjà“d™Ä´d¹Nœ6©œ„Š+UäÏf}ÄdÛS]󩤻Ř?ªœd¥‡Ñ©ˆe%D /€€Î§QøÚç'L³Áâ…þ_ì™]íSö¿=u,Ùÿ¨±Yû/»¿ÿ/ć–ñ:Kvf¿¤~þÞÜ" ÊùÚ]÷Vì ï3#¾ iëñså/ðº^ôz·Òë•6<ç ê±Dp—÷X»^ðúеçsèb‰eD=yë_é¸ÐeÕñëÓ=¾^]õÐ[µ«½.Þ J¥{|=äe¼fÿ£ y,ÐVlp¼Ëë1/Z~}š_ïV{=-x}µÚ«'›QãW«=;=-o•f¬öº^ðúе—-Òå=Ön¼¾bíÅq‘d±Gq̪˦ú^å×§{|½¸Ó·J3V{½x^ä×§{yýHÖµ!TŠYû!X>mlJz·»v¤XÛç×§ùõn•×ÍÂ×WªÝ.lüJµ½žòViÆ*¯û…¯¯T{£÷(]ÞSíqáë«Ô^t¬:ŽÓëÙG{ôlû èÛõõ2ïùõi~½[åu³ðõ•j· ¿RíͼË[M3–¿î¾¾RíͼK—÷T{\øú*µ_8ú¯ÐÿîüÕ]Ú…þGÒ†þ·~²Oÿ_€¬Q é*zRå«q¨§B§3ô:˜ÖU°J) ÏvÿÆö¡…~¤Ì@ ÒQ(㎔tThÊÄJø{ï™iŽnñu §qdâcª\UÇ4e<›™XmXlžá˜¶®ÐqÍVÚR¦±=´‘¼oÎöËÎi3*Ø»¶Lcèì(,Fr#¿Ô¥L«Þ;FÉtP¬‰Cê«ö2IÍ}TˆƒTi4æ:¶rbÅ"öI_á4BtgM¯±ëÉpZãlϯ»DŽæ*œÊCM䢬#_ÚÌb8{]ïVûlÛÜ\?¶}ô|Ö±ëù†ûýøüWÞ„ýóÿB|~õWžõÁ¿û^ðŸÆ¿¿zrùäSOß¹}ê¡ã“»v{û`&üö뎭£§¶Oo߿ӽaûÔ1ô¼:Ù¹ á>òáw>2úþ«Oû±»îûÙôý]¿ô‹Ÿ„ï—Ký˜¿ê2ÎÿÕÓ9Ÿ÷yâ‰Ë&'ÿÆAú¾hþñ—Ë~ã_ÿÆ÷­εßù7aþoü“»çuôÛ[¡â›dþ° NxÎNÊx $“óŸ¼æjªc"uÍË_t-·û|®¡§_Ëm‘´ñޭ㛓¼µñØÖö‰­îØÆñãÒ¬¦1¤–°}_8úà&<à^œØîNl?¾]:¹_`?Âïvûá3;›7vÛÇw䵎ou›§NmŸ‚ŽÂPl=„*Ç·nì6º“[G¡‚MèééíS§©5[ÐÓMlUwÈéíkšþ<ŽÐמaØ‚‡§q躓Û;›opG¡Îf@6s7v'7 z(´M=Y?³þE§×»k¾!mwâÛ§Ú<}šýèöéSg¶–Ìç}§7 UP׿é£ÇÏœÞzx;€Î@á§í;ÅcyÍ›Û4zXÍ ð¬Û¨3 ¿ÀÒàÁA‡9ºµÉÓ|tã¥ë×À>´yôèÆ‰­ÓøÆÌõcá0Œ3ñˆâzÚ~௎ígNìl¿”[GÝÖ‰ hÚ#7l½ôšÛNt°ï|–Ã@=v' AlœÂ!ÞĹ©•ÀaË·6Á©+á1ìN/Ì­kÊÂØÂ5²³}r«»æšÇãþgÿógæcà&Ðpo¼þ½î wÇ7ȳ}üï3ÿà ûŸ€”|Ò:LІôíÞéÇ ½ Ò»!½ÒoAúmH‚ôaH¿ é÷ }Ò@ú8¤?†ôèÌaH=4ÚBz¤WBz¤wCz¤÷Cú½çÂ{‡ô‡þÒ?ûÜÉä§!]ƒ²é:H¯„tËçÁBúÄõÐæ—H?é=~è &“†ô#N}Ñd²éaH?é_Bú9H7½|2ù£Éý?ð߀ÿ)ƒ/ÿþÃ?ÿÍý?™¼÷'Þû#ïý~ø÷û¿³þÿ\õ·zÝgM¿ì²¯žë­¿zÙSèÛ5?åäÀ‹º›š¿^|ÙMte¼à:¸a×àë_„¥«È߯j¾?EÞûŸðÞ§.ÃrüË&ŒüH? éb^éK!ý8¤wA:ï\éfH!}¤w@ú¤ÿé ÜUÞ°ˆËÜK½?>Ù‚~âlÁ÷ èïÖä³BÅäË¡Äë'·Ã·MŽÀ_§'ÂH?¥Ã_[“c0†›“uÈ·'G'OÜtà›P1Ýô;4…ÿó²Úwü\vm3ˆ7!æu£e¯}Þ;°û—]uù•W\yÙåWü•W ý Éï…Š‚jOC“ï„üë ¿€KàBD·e>Nÿ"šË(s~:‹"oDQä ªy›Þ?JùÐÈø"㤠²|ÞØ$z“ÐslÙ¡ÑÜÒÓoÂ}\HBnÕGâ~ª[ÿðBT¾E÷7æ¢ö7R›w¤gÁH#›™Çò õ!,÷êA;FíÚ€÷¶è·­R7Â<)pNP©¨^îÛ:ýwÍä\0»É @T¼ˆ¤— Ì{ õØ«vLò(oSql±ämôë (¹-c9$¸6àWž·cPfSf—{y’ÆñÀÂÞnÈúÈDQ•M˜¬éfëíf=¶£š‰´“Dº1é!™¹JÎu4«Ìm7X•Ë7&òvh¦Úy< ïä5_wט¡’µ™w>ÁÝršzx‚êË;ã­ÞÌ‹«#ÔÑ~8ZvÌÒ¢û©E[ôïÚãe°¯,3{\àoÉn>A«¹£Þ(ãĽ:NûŠG¿®ŒUF¨#–¿¹Ý éki]œ.$ø™r=L­çÕ³A#P÷ÙŽÌì6Õwœæ|vMp¯fO¡Üó-iѽs¬9'6-[´F¸ gè,iW×ðüž¡ÞŒ{{ŠÆ›¹£¼"y%?4ÓæM™Óñìèdt6Ëh§³îŒôl§ÔwÙ&•ÎcUWì¼^ž¦U¶-s˜Ï_Þ…õ\çs-Áxfòê=¾Ëí¾fûsŒv5÷xÞiÏ£…­ß!ãº1çüÆ73èøhÞ§4"\®î½鬨¢õ³%{öXÙµ˜oËþüÚ%ùDç½qªûaûî§2yDŽË(ŸQæÓá”°²¶hüî%x'šäu°I«„oÍö4çS¿“uÇ3»9Ó’ölËûò”É«‚Çþ¸¬#^ øÎ×ʉߞy†çe]ÛÚëɽ#5e,à^èCWZ}bÒ•~ò 9Ýœí.Í-<%gÚ‰f´íl×V;·X¼v ž²û~ïSå<}@f;ßRÍLþ¼ôeù‰‰ý:!Xܶ`wÒËÎâX´ênlúÉ÷ä Á"O ˜¢›Òæ|«Œç­ŽpÅ+ž”ç´¾;ÿ|kï Æë(å–Ì;%æïJÜQ÷ÈÝÊçÁxͶ`?ŸçÇÊ>ȳyzb'-.½;fÓ¶îD©¹Þ¸6ꚇͻ#x¿œ¢Ò§ä>¾GVhÅ8¦_ò Øâù;r6Œñ¿UÙ⻵—ãV#U[\ñ€Ó4GÞ‰§äÛãs ×ÙIíÝðºy­½AöÐCÔóñ¬ä5óRYŸ³3~¬œ:'ki­ÒŒñ16¤ø¯”Â#åQXA+^wéË'!éÉ!¸·n)'¶êf(uÒ!H·LÚûýD9ÿ¶{¹=Æ{yVˆcplÁW|r>–¸1©Xó½u|pòÖ‘ÀU0‹ëçn|[/Ç3N—™ÂZì“LýlÐhu£¼NtÉ5“×Ëo-~3ï¼_„WÌo)Òxל# o÷êeüô “É+_>™¼úå¬'õ=¾Ò÷CúAHÿoûÂàÇþñ_>ùý…Oö?çìs`Òh…ð·ËáÛÕôeí 'O{ÍÒ¹çû»çÌùÇÿà÷‡3µÿù4ú\Ú…3:†st¯\kÿó™ü¹þ»´ô¿nœ|´çqRˆ¸jrx²)7ñ© *GHG!½Ò×@:s+Â}+¤¿é{!ýmHï†ô!ý¤÷Aú7þ¤ÿéƒþ¤‰¶äïAú}HkÐÕ§_Î{âY®ƒôlHÏôbÙ'÷@ºÒc¾Ò7@úFHÿ ¤o‡ô× ½Ò÷BúÛÞé— ýºì±AúHWÃH=Òuž )@ŠCº Ò—Bz¤/‡ô¾Ò; }¤¿ég ý,¤Ÿ‡ô þ ¤_ƒôH¿éÿ‚ô›~ ÒÀYô)HO¹’÷øó =Òõ^évHw@z=¤7@úJH_ é$¤¯…ô·!ýHÒÿéïCúaHÿÒAú'Þéþ-¤AúHÿ¤ßƒô HÿR«ãÅ^éå$)BJ¾ ÒWC: é¤o‚ô;Ò_ôH¿é7!ý;H¿ é?Bú¤ßt-,½gAº Ò—@úЧðyö· }/¤ÿ ÒAz?¤ÿÒ‡ ý¤Aúï>éÿ…t lžg@z>¤Ï‚ôE^ éí¾Ò?’³ñ½þ~AÎÈÿéC>é¿@úï‡ô‡þ¨9C_ðÔÉäs ]é%^éFHR€ôµNAúzHoô¿Cú~Ò» ½Ò?…ô/ ý ¤ é_AúEHï‡ô ý6ÂX›LNCúFHß é_@úHÿÒ/Cú¤ß€ô_!ý7Héi“É+ ½Òþ¤ï€ô7!}¤…ôNH¿é®x:ìWHOt5¤—@úH‡ Ýé~H@úZH§ ½Ò7@ú&Hßé!½Òãþ¤—ùx#¤û!=é;Ò_ƒôþoH¿é?Cú/žú ¾ž é9n€ôRHßé¾ Òÿ éï@ú~H¿é>îªë!½Ò@z9¤!)Hú™|¿áÝö°Ük«jQï§ý´,á'kñç{ ï§ßº¬Þ?×Ë}óoåÞ8}ãgùüþJ9×ò9”ÏŸOÊù’÷Åás¸ŽŸx-úv»Á§b!ðuÂ!Ç;ÿ4Y Ü xê]ð-KÅï9óÀ°¬„ù}Û€ƒ#ç,[ ëØ~½ûõî×ûZïÙX<óG¿é|à7ŸñÄ3ÇÿzêÀ,5”ð3ßúCžõÖ/ÿÔsѪì‡\µ}±^JÅhû»b@OÜtù7 RÓþå3diƒßñóˆäž5úÖ_½ ™YG^˜(¤OŸ þ|>²5ç|.>¹îØÇöà÷ë&s~üœZØ]ý-‡_6|ú6 ^2¹õçÏŠ<—ŸÙ6Þ÷þ/š<ñÄò7¡7]íÍsÅ>PÌ”K‡?·Õ9ÃõÙÙÌpγgÈø–n,œg@0h•^uàñùø¿D64 §»ú›Û÷/;)V<È©A ¾oôW!ýmH?éÇ!½oÂ4îBç^É@z“м Íû×?øuHÿWŸXû}¤ØXý!î°é¡‰‘~Ò[!ýå†.þ.Hÿ«ÐÇÒ÷Cú{~²¡•ÿH?ßÐÌ¿éý‚› ¯è×GA:ú·çÐÒ¿éÃþsc…˜ië^¶;møÎŸ‡ô%»ÐØÒ·aÙÉuýä…w˜|Þ»~õÏuïúà«>ÿ]W?åÅ®Ç^ùH_ð.°'gØ4kzurÂzcã+ÖRb„û'C­‹¬ñ0µ`(muÛ†Ú}7Šì“eõ7N†ÚrYãà´HqO7Pó©½S4Ž6Šð!ékÕî;3y|Я¬sÇÒÀã"{gݺMâ4²Žä}ÔÞ,óeh›¤K€˜ø÷Ã#ÔëD[ Òx&Ž ?õ”Ô¹-åó蜦¢†Bzê¤Õ=Ìs°MÚíÖYeýÔSÔæª‹Ès8–‘£Ä~[ õçi<½vò5Òó¬…˜ûÔ¶â‘É›©¦ ™;nû+ŠNìð¿·Pé©@ ¿¾¿’ Ì+¿ú(¾¦‘ªïÐ?¾`¾7HZ<Ô½_Öì–èÔµ¬hylÊoíØ)Ò3Àýô°ÔÐÉJÏz:¼3YÓ6¯ ÖufÝhl3¿‹e^Û_ñÛÞ×ðÛ~Exn€ô õ!á½]7‡çöÅŽ4¼·¿ØðßvÜ_>\˃ûH¿Úðá~½áÅýÛ†‡¼¸ß†ôûþ«ðåþtÄ›{öþòæ¾ ÒCŸ{ ¤wîû„O÷ƒÂ«›Ç§CÝoŸnÌŸ»ê* !­AzÞU̯˼º?7â×Ýé‹!Ýé+F¼»G }ãˆ÷Ý#þòî. óìn‡t¤;…w7o÷“ ßî¿.àÙ=_xuŽxu­<ã½+òëæñêZ>Ýî‚t7¤×C:1‡o÷· }/¤¿ éG|¼ŸZÂÇû÷þ÷Yk°f!½ÒkÖ†¼½o‚ôÃþ÷¯åï=åi0>>Òç?­òúþ¤›„ç÷Ån¾ßÛ!ýuáý}?¤€ôC~Dø€¿Öð/Cß=O¯üÀ«žà¤ëÞ køƒ·Aº}Ä'Ì<Âo>á{>á/CúHÿMx†_x Ì7¤—]Sy‡›Â?DÞáþÒ_…ô6á#¾}ÄG̼’§AºFx‰_$¼Ä^x‰ß%!üÃ/à¶¼C”="Ãc¾þ™,“Sääàä_x-ÊXÔä]ò÷eOÜt%ä÷Ëïß*ùÛ%ÿ1É¿MÊ}Pþþ”üý!ùû9kü÷ãò÷;åïW?‹ÿ>,ùí”÷“?Ÿ5äøû#òü#ò÷{äo˜aúû½ò÷Iú»Ÿü%ÈŸòYè1KMÞ*Jþ^»Žók%ÿBÉáš¡rÏ»¡"Nø{/¹–üvÉï¼îRõÿ´’¯¦Ï ÏEòÿôçÃÿÏÅwísñýü\œÏžýÿ<ça¡$²hÖÑoíŸZ üÍ Åi Ä4™ŠºÂÖ· ]Xµd_ãÀg?fìvƒ~Ù’v°þñÑ0­*bÚ¯‚ÔC=èÍó0A-ÚõRfXK'ýÙP,[…ÞÙš ­cvÇÓ×IçsˆagHl×Åý=UpúVÓqîûD÷~CðøjãÑÒY͵ã?EåçÑó*˜g‘mN ¿yG¬Îül«‘õÚQïï—7²ý—šµOÌúêÕªåÄ$[4½bR­ôN•žçúŽÒº;9i­„ë(æ:™Ò~`’-\²vk#¡©† 9‡ŽS †Æôs¶lܦ•rcs²m–7ÏŽhØšSd±Ó´ÿEoÜïšdk¿““Ͳî+Ïj¶÷óìø¹^—‘ùa»Ÿ3̱¨¼¿ù¶ÏÃwN4«äT]ž«Zj£±Eh­ð„º]F‰­Wø¾Ùlx€uÕ o„\s>»³ýRåpòÚ9J­ÊÖ¡yïrKqÝ>\ö\¾}NÓ>ÏÅñ|ηO[tåüȧ®™gG€kÍŠûöÿ–íÿ¯›<ëÒÓÿ½iOú¿7­®ÿ‹Ô0cß’WL²8òŠ.‹%s‰úY¦áû&@« Þøgþ9¤ŸÆ·á·Ÿù| š»cžûýÀüïW<Áßÿ²î½ûÔæûU»Ã|ø—‘ÏËü}¯}Âþ\jÄçê—ÉY|²/RºW6ßÇþHÏÎî§‹®î/ŒdKg÷÷D>p®tv@äÿ_H?éAú Hïƒô‹~Ò¯Š¾î‡!ý!¤?‚ôX/„ôH_ üÿ’†d ½ Ò— ïÿ+!= é1á÷ ¤_†ô+~ Ò¯7:»k°Ôžéu¾ÒžÂ»÷;!}¤¿éû!ý¤ÿÒ ÿBú$¤ë`w?Ò !}.¤!­_Í»?Ÿf[Çï3%mÅ7Ê ÿc™¥z3uµ†]¥žk]¢KQ'j¿Þýz÷ë]­^VÌû)9]ØË8ÿŸ%?puQÌ;ð´VOìÀSñ/VM;ðOñû¥¤,·¹g`ÛÕ¸OÉ\õËÞ-ám÷•ÓίrÚ¾rÊP9%+¦ÌCBñü•È'Ò&—Cºº®bd4#¢/!£¯€t+¤×@zÃ1=%Ê(-rúŽrŠˆéŸ búH¯…tXÔyÈé?\‚œ¾PÒo”éŸ@z =™äΆc7‹"Àͤ€¿KþFE€Ë!¿_~ÿVÉß.ùIþmRîƒò÷§äïÉߨ€?.¿SþFEüû°ä·S~)àsTÀߑ瑿ß#£"æï•¿OÒß7‘"ÀÚå7“"þþVùûSò÷Úuœ_+ùJŽŠX®„¿×å÷^r-ùí’ß)ù%ÿJÉ¿Zò%ÿvÉß&ùÛ%ÿ1Éß%ùOHþnÉJò÷\Çãòóò÷û$¿ä¿%ùóH‘áfR7À¿?(ù‡$ÿ°ä‘üw%ÿ=É?*ùHþ1É?.ùKþ iÏ+žÍ¿Rò[$ä‡%ä÷?›ß{PþþÉNò÷Iþ~ÉŸ÷Î?KòJþ¢ç ûÛËßZr+¹—ü’¿Rò{%—äï–ü=’ÿ´ä?/ùû$ÿs¸ý/‚zŸŠNq®áuê%ÿ%)÷—äïÊß¿LŠ%0ò÷Èß–¿?*ùãòû'äïËžËùÏåz¯’¿­äo–ü¸ä'$‹ä¿$ù/Kþ›ÏŽÛïÉß•ü$ÿ˜äÊÿ¡üýqÉÿXòËž'í”üE’¿Xò›$?(ù-Ïãþ|©üýFÉOH¾#ùÃ’¿]òwHþAÉ?$ùã¹þçs~•ä/–üÉ”ü%ÿVÉ¿Mòï–ü{$ÿ’XòHþ»’?ã³8¿Vò^r-ùaÉï”ü.É”ü-’¿Cò¿!ù÷JþÃ’ÿˆäï”ü½’ÿšäüã’BòOJ~Ùgs~£äQòWHþJÉKþ ä–ü#’Tò?–üà 8ÿrÉ? ù¿•ü7%ÿ­ð|\þþ„ä'>‡ó“’ÿ%Éÿžä¿*ù¯I®_ȹ•üÕ’ß$ùqÉ¿Yò|!×{Ëçòßï–ü§$Ïçòó?¤ý í£óÿ&R§š”¿˜‰ô–¨.p µïhÁ;‹¢}·´ôxQKwï1гò< S_‹ wcè¿_ý¶™C¿/1†.›¼©©¨Æ:0ókþe?ÆÐ“ùüýAŒ¡gM>HÚÉä³ÏtdéÿÕû1†ê§;?Ÿƒ0Ôïºbƒ¤v¯:púø™\>ù>ø÷0™øëuôï³éß§rïåÒðäÁÏœ|ÞÏÔÄ“7^v•ûkôï‹éßgÀ¿&ÿ„Þù÷ô‹š¼€Èö'¾é²¯8W=•»û3üø5øÏWÿæócVç‘9Ʊ¿m g·#ÚA‹?7@ý8âWLVï?&–Ó®;„ñòæ·/”ïkò.\Ô9Â]‰'6á§ž8?Ÿ/ØÓ¦-øAô7õ:¤? cH*iƒÜBr<¤0áS>A¨¡~2!½¤WAz5¤¿0áxêøîÁ ŸÔ·BúSøûS’nƒ¿_{ûx)|®œYù{[Ö_ o•õ‡cýB9Ù†:}Gàxó*¯>ˆîµ~üäšú'þì¹~¼=o~áYU7÷s6ýÏ<p}çý/ÒÚgˆÎáY¹&eæíäC_7ùÌÞ#ŸÉ\¨—‘½NÖž¡¸E_-_&ëà«îºí–¯zíëo»…~ùð|›Ý éëáÌ“ƒ¤ñÞî¾Îoÿ€…¶·ÂIƒ;)ÀïSÈ-<½öC„ïÙpðo?ù†=¬ßOA®X»lîºþà_þÇÿäȃ×þè_¿zòò/úɇ÷Å»ðºÅçß&ýz‡ôÿc²>)ûà9xtx/ôx?>Àk©““ønD==Üß&˜ëwà}ò}Rç@zu2yçI=DP„|Ï›î¸ãÈíÝïv§w6v¶»£§61;¹yªÛ9µýðÆ©Ínëx÷ÐÆéÓ[mwœ:sòävwl«ƒ?ÚÜ9µµÑmèΜhžÀëmÝHðéªø/’½{ï™ãÇ·¶»»¶Žo쀼|Ï1î†<×;¶ŽžÚ>½}ÿN÷†íSǺ[¶žyhóÄõûŽ{ð7ø‰z‡ß×óóõ8ùÃô_{öóGÄìoüëßø¾õϹö;ÿ&Ìßòc·à¼Œ~{+tî&ìçƒó“2‡o™ðyöÖ ŸUo›°ÇÕïš0Nó}™›‰ÌÍ„½¯¾{ÂsùÞ ÃîFs†ëäÐwÓº9 ë'çÉòš«'™p[”¿èZ~ï|®§_Ëm‘ŒÅ½[;Ç7¥Å[“îhY#°.ð;®ù;·O=´q|r×¼5“ßA˜zÂï<{v­Äõ~²sÂýÒß9cHßõi?†´}ÿ‰3ǘ7vm¾ÿ9Ÿ´£Øƒ¥ä_-ùƒ’»äo“üí’ÿ˜äï’ü'$·ä?%ù{(ïIì‹¿Oò÷Kþ[’£xîÈ[þþ ä’üÃ’Dòß•ü÷$ÿ¨ä ùÇ$ÿ¸ä,ù'¤=(öÅ¿_)ù-’¿FòÃ’¿NòûŸÍï=(ä?'ùû$¿ä(öÅü³$¡ä/zΰ¿½ü­%·’{É_!ù+%¿WòwIþnÉß#ùOKþó’¿Oò÷?‡ÛbßgÂß(ö}Ö#ù/I¹¿$PþF±ï³qäï?¿?,TòÇå÷OÈß(öÅüŠçr½WÉßVò7K~\ò’¿Eò_’ü—%ÿÍçÇí÷äïJþ’LòÇGåÿPþþ¸ä,9Š}©’¿HòK~“ä%¿åyÜŸ/•¿ß(ù Éw$Xò·KþÉ?(ù‡$<×ÿ|ί’üÅ’ß ùM’?(9s ý’_!ùšäß(å¾Uòo“ü»%ÿÉÿä–ü#’ÿ®ä(&’÷’kÉK~§äwIþ äo‘ü’ÿ É¿Wò–üG$§äï•ü×$ÿ€ä—ü’Rrc~£äQòWHþJÉKþ ä–ü#’Tò?–ÅØ¹äüßJþ›’ÿÖ x]|\þþ„ä(Æü¤äIò¿'ù¯Jþk’ßøB_ɭ䯖ü&ÉKþÍ’ÿ ä(&Æüé²N|.·ëôw?¹VòŸ€ßŸ ϯ“r/–ߣüýJÉg8’?,ù#’¿Mò·ËûCò’ßXòß–üƒ’LòÉçÉ:–üy’ß"ùë$¿Sò{%ÿVÉß&ùÛ%ÿAÉÿžä¿%ùoKþAÉOòOJþ)ɯ¿@òJ~ƒä/“|]ò^òWJþ•’µäÇ$¿_ò/ùg}>ç_(¹—üí’¿Cò–üG$ÿ¸äŸ”ü†K»$¿Eò»%¿Wò·JþÉSòß•ü£’¿ðzÎ_$ù ’¿LòWK~“ä%ÿ9É^ò_’ü7%ÿˆä¿+ùã’Br„à|K~—äwKþc’¿KòŸüÝ’ÿ”äï‘üŸIþÓ’LòÇ%ÿCÉŸó2’kÉ_)ùAÉ–üÉß&ùß“ü‡$ÿaÉDò¡À“üÕ’¿FòÃ’›äo—üã’ÿ±äŸ’|òEœ_&ùŽäKþ’·ä?(ùÏHþ/%ÿ9É^ò¯¾óû$ß¡¼Ÿ¼WþþiÉFòŸ“üW%ÿcÉ?!ùÚK9Ÿä¿&ù‡%¿óe2N’Tò?üqÉÿPrbSc¿_Îízºä¯”ßo’¿¿[þþùû{%Gu˜çCþ}ƒ¿‘6šQAæqó¹Àê1 jßU=fÁ;G=Æ•ø+¨Gñðò'rahY©æÛf”jÞùô¿ø­øýr¢ß_ÏþÕÓ‘vÄ™C¥šÏi •j^²OL>‰ÏP©æÚF©æ³¢û]>·Í-ÍÜŸ}¥šúùª/ùÈu÷üÙßÿÓWýº·ýÉ_ü†wö_ü·ýÿ‘ï¼úñÿåöwÜvÛ?ùÂ×¼ó¾ºûGßóïyÿ‹ÿõ‰_þ‡¿õØ/üݧ|ô†¿ùßó¿ô³oùÖüò ü§¾ôÌÛN½à­_ðŒ}ÍS¿ê¾ÉôÎß¹ñ¹wüðþã¯ßsÍ_Ñÿü?ëï{ýÛþýó^Wõ?^rÝYéôUÿã±ì´{Á쟥þ´çyóøÏÝòVÿã•ò;«vs” žz6—ÿVÉsù§»ÉäÛ¡¾ß”òg›?ÚñÊþúŽÿ^%G4ä»=ë|{dý€ßj;6ö;×7þ,kßH½|ÎÞ"¸ùï~6K°ò{ãËýîU³pÆ?ÚÍowž‡W®0ßóàa;Þ~EmÏU“Éo‚ü³æ¼¶Ÿ\_®ÿ{ŸÍœâüü£ÿæ“÷ýìlÿ§Ôu÷3@ ¾ò¯íXšpi|.¤þG™/\|ýïNüýbèÜÿôüýRÓÿ¸J~ÊD"®‹ô?>GÊ⽋)´£@ù ÊXp·}6ˇQäú踑Ðî !áŠÄ&~xú}õ‰ Ôÿ@‘þ×5mmõ?ž%¿?ýñ'ë´Ÿ/†²·CºcÂÒÎ#î‚ô%ãžÉP‡ä –é\êrñ}ùß“—ÿá>¸\êÁüÏüô‘ÿág_þÿgWþÿdå¿fùï#~'Þ ô½•ÿ¾ë—~ñ“#ù/Òô˜#]¿O²ŸÿÏöz¯Îw=|¼µ+üÿV¾·ô{ß\?QÊôÞ«Þk72Þ¹Iןï†áç l¸S]7yóÎæéÝо‡6v`³]ˆ]ÐÏÓ›W5ŸµùÖ9|ZÁÛ»»î>òÚ»o¾£{Í‘»»{ßJn½÷îÛ¾ìæ{o;rgwä5Ýkï>òú»îÁo7ß{äŽ{ ȃvƒS¥Û8q¬»ùøæéÓðåÔF÷šíS'¶f𥛧NomŸèîÜ~xó¡ûà|´;vºïõÚ°å+~ÖÖà½Ûî¼å ¯=ü*…^ݽáÖÛ^{øÞ{º›ï¡ßv¨»ãæ{îáb÷¹=ƒ¯·Þ}ó‡n}Õ¡#wÞsïÍwÞ EòWên-Ñuý:¬}ÌLßS‡n½°Së´ |ëR¿¾Ë7)H±­<ÖØÒ»^/4æÈÝ·ÜvçÍ÷Þ =¹óœžÛîîîYý:–?Jé:lW7Uë^édë/‹¿´à=¹›öë©W)ƒSøÐFåÃ^Ô‡)˜³ð¤[p–cð`½Þ뤆 Îz„Ôë½è¡ø0¹èã^t3º•ÜßvacPêu¸ÀÒR@ó,Dcv+>€.úõd!Y§ÒªL0=K¶hº´KI»`—p3-À/Ú÷«ð3c°7‡NÃTÓ:(]€ã®W´ᣗÐ,@›’Ã÷LP&á§¼[Ò]ZÛ¹7Æâ—¤±)+Ð @©¸€É-˜ЗØ;ƒUèzÝ$T.ev`K ôp!©¤©ToË÷>˜|ú¬ñ6zÀÉù{ Æ%ÓÉy­lì=°Í >Cí­IÐÂQºa›h }¾ôÖC÷¹ûÀŸ ¡_\QÊCPQL?€v´ô”Úäô4I¥Žg®3)1-EêtÕ BÒ: R£•à–.£ ‰Š,‡Ô‡Àß”– ÁQS ©Y‰›Nâ6p*ȺtÚ `i›Rtü¾8¡8N>&5€DE–Bêqà7cqœð¼pFëÁ˜½{°…¤<.ˆÀ¨dx×ylj I~ßHf )FÃu 8cz=8gC ©´É7¸Â`¨%)ÚäùZuV«¶2."ï—Ö%rÿpœ‚Œ“µ8w°²Rû¶M‹WÁ°Mp/SŸp8˜Ppnè¶M\„߯³håH*‡Ñ­·ìºù#äÏÝëw¬ß³¾V‘ÝÜβÛÚÍV6Úìùø²0xŸ5Û¬l±Õ`ÔÖl°2¬+Â({«ÙZe[­ƒvU»©Ê†Zq<ò~j·SÙJsa<8ƒw’—ä2 ÞDe|bŒº‡h ¹|ÞóöµÃ/€»ÇÚ'›ÇöVyµ ‡/[«ÄD;´oÚm³ûÜζƒwŒÍ¦´ƒ6KÙ+e`^»åeÝÍ;ÛuÇ6ïß:±uânçÁÍnãô£Ìn=Ú9±µÓÝ¿}Š~¿û ÜÔòðÑîSÛgN®ãå{ó—ÂÍýÚ[»[n{Íkn½ûÖ;ÝÚÁíûÆßtã—Ýx‹ô#¨ºMÕÌ7x pî¸ù·Ýñú;vƒ38Öüø>±Rnyý­xÃâ…J|ú±7s¿ASnCWožx`çÁÓ„ Ü‡?lœxàø&ü}ÿÎæ©<[mìlmŸÈõ4¯uDg£@ÜÓ“Y@Ñ„aqn+î×/ïÌ Ö.dÓ¢Á;{dRÚ  Å][Ü¢ÕÆèþ2Få†}°}‡GomæÇZïâ'÷Ù4 Fb´(JsU\ªà"s‹è~]i?~_ö¼Jpà-xÿÁò¾¶fAýð°Á;WÑïR¿Þ½ýPÄ2¼¸q+´¶þ½µ_ÅÝÆOÏ×ñ¿ùøß?X÷}p{óÄýÇ·àä€3ã¾íãÝ«ºC§ååC÷ÜѽŠ/Å-ºcûøæÑ3Ç7NuwÃq%Ïqƒ¢7žÞÜ|E÷e÷Ú>vúkí6wºãëÝ *%óÒîu7ºçFh»±‹:ÄiÔ Fàž|`oßD¡u·µsšªÅcíŽGÖoÙºÿþõnÅrp¼ª—vñÖ®ûŠ®{äÆGo|L:ÂqÍá:‚rÐO(7m æžòq½:©ÏžˆTÙTC„•£Fߨ­+‘±6lêù»ŽÑ}ˆLÁcé”ÕR(ctàßñ’Á‘¿ã ½mj8çDä¡ÚÓBØO™ab…ˆô~ˆª÷º ú ÏríB²ÂJcHC‘iææH¦›©P؉¦´iRmSþ¶v(_F„fsïfÚVj“B²zÎ8å6í>N¥TÓôÒ»n¤Y iíp½)ô:J£0­‚a”J«JfÁ¸]bÏ5Êò8)½[;¬Êä o¼6Ò»ÌJHÞºXÛ„rÊŒY©(ÄK¿v¸žþÄ9LLD*Õ ­‚nÖ“Tð?{™^|Z;¬›6ማ2wF~β2}]Š3ú¸v¸žÈãõäd>­' 䄨Haí°Ñ³˜?)Èg𡟠É­ Lh“-”4qä¢05RÞÉÛ¦2£e*àpôBâ$½Æ ˺2/ã¤gƉ޲1”q eœ`Ä@²¦¬qSÆi)eVxWFÜ•61¿‘ßÇÞ•qòÍz‚ÞiYª´ zçט—9Î2wÚe·ðÜMËÜy= ©ÌÝt8wCH×ÃDT¹ ôˆ|b…‡01wB¡v¡Çíèr;¦+µc­Ênr+ºÜŠn¥V¬UáM»Œ ýŠýX«Ò›†ó`\pfÅÑ\+â›éYC–ßLÏz²gz–ó¹V$8Ó³\UkU„Ó.lš‹U{áÇs1Ís±âHž¬î{Ü:MêxÝ×mœ®Ì‘ÍcÝ}gvº;ÜÛ9 ìlwPÍ16C(<*nGògg³;t3Há“ÓÛÝö‰•ÙM ¼òͬÆnZ„”5p†ã9ÝTÝæ›¯¿»‰/—©ÜjÝÙ^®µüÄ/z"%2.’^+?êü#2ãît«Oë¶PMÃ"‹¸ÖÆ5?Œ>ß¾ tÑû~éûrªŠ(¸BXHxßbŽIí…ðîexæÞ=) œá½–q‡7 K”ä¡[ï!RSåP-\ÿÍo\§Åpo>ñÀéSÛ½ôUMï}Ó]·vLÒf¨¼ªóŸû7¿1.±„ùoì:¥Ï¶S‡xJZž¢°Õû^à 6qQ%ÆÎE¯ÌY÷ê4÷ê’œ+{Ö½Òçhî:.+õj:Ó+wÖ½Ú:Gsu>zåÏñ¾ïšÙ6ŽwÞùØWáIî«nϧŅèU|’ûjïs5§Ä“ìÕì LgÛ«{üܹÚû <½Rý9^{Ÿ«ó°ÕY£ VàÞ÷Õù˜«³Æ-¬À½ãç¼W]ÅÜ%r‹{ºÛîìßúÆ›gøL[’cH’óèL¥è°"JÀçåÞ8·þb±œ¦jþÿØÆšV=©ÜB1BoæCŠ>ë³8Õ·šVJF%aí)?’ÁI ´šZM+“hj…>Ű M1Iµ¡1#kZõVúäƒJ3èO—µ3tð®…4дÒZ ‡L´JÏ…$Eèj!nç.iÝ3ñ¢¬÷³#ŽFdœUŸÚÞ®s›ÝD,6]‰ô†L’CÌ6¤†¥×¶q¶wÓR„¤Ð®‚Ãuî°M\ Ú„ÊDóÇ©ÌQqЦ:wð“íQÝ U -À9¸·Î ÚTçFie ¡íáøÖP±omÆtO0Ö*¶Ð +0U:Œè^‹Ô?zÓÈ÷Ôôl[àÆö6 k[hЕ½t¡b xÓZ1ÍuÁù1“ †íÝ`"*ÂaL÷cíðìDÀ ‡ƒUÏ0bK»íE™ˆ³ëÅZEšë~O-ðãìq .œy†óOUHÃóŸú§íjúõ@òÔx½‚¾F½êñÔü¦Î¾ì9ÚÇú3O¤r´)é£lQ{È?.Ð×ÐÔiùX%£-2£o1x¸P™Â‹ÕTQ¦Pbþ6W™Â„°¯L±¨ŽÝ•)Âî ¡éÔ¡KGà±D™ÂîÞ+klÓ+}ÉèwW¦þòÂ^9Q ºôUDZeŠlœ´°WÑÏôêRP™íÕ@™Â-›«ØôêRVRzÒÊ—À œU;ˆg½¯ÎÕiq>z•Îz_]ªWCeŠ=ì—°êÕP™âœsîØQ/€’Ò@™bé¾²®éÕéKFEd¶Wf“1sî«KRÇž-xé*¾@¯ÜY¯ÀKYIÉŸõ Ô—Ì œíU8Û3ðžKç œíU<ÇôÕÞ{u>ÎÀ´—}¥ÚûêVªÕý0&¯íL¯.¥ÚÙ^5n±`_] Jdf_é=áƒ8ÿ ¼+p¶Wæ¬Wà%¬Ö­Ï5nq1ÎÀOk¥ÚF“³(†z–¹à€g¥Z]µ`K1#žÁ„–² ”oUö¶ôqVª=ÝèÞæbZ8ÿBpúE*¿6JµØÙùʲøKlzA­mÙQëÒÍàQëX©vžjp3(Y©vžfpÓ‰N”j‹§*ZZÇ.€"}±H•7{›e”NÙE:ºƒ™UnÊo[+‚óuP¨Ú®©±4¬uÐYÑ u6–u÷híëlëÒuihØ7ÓÙ­«~s]Ä2e NC¼ëjë­½˜iÖuPJÆÕâq¼@I»­ÁÙEZÚmgÏJ]}ÐÆìý&¥¬œ­¢½QžNç—QO}:m!×rY]º<]Ïá-hŸ·¯›[o|éuØ•‘Z‡×ê1°zsy:_.÷·–«Ûrv\nA½n\o7^V/Oç´ïb«©îÎÓgÉó]® ]ô¿­w~FÿÛïǹ Ÿnö³¯ÿ½»þ·éwo¾µªîâ•¿Qö¾«&¸f P_"šàwl³‰zÜ×/¨‚è•ïç<ªwÈÛz!€nÝ“ åJ\-jÆ€dcQ•N×C 70Ý#ŸhÔ¸õâ¹8*‚µ_>£;òÀ¥è=E!DVÊz•ÒêÒÂ.t« åÚ¹]X€ZÔ…Õb3.à|R{^H‡”‘1ô/R `A¸—$°#Ó½pe%:R‚g§w¼$Q!x)¿@·"€P¶sDÕ9î9ÂZ@,ºð¤AäruiQ Vì‚îµ`À"@E¾Nîù­[mPy¼Ô¼¢ïU‹q:²—Td!Uÿ÷<…·”f_¨…ÊãïçË"@.žZ(é÷ìÄ´Üô©N »R¤Ì—Ü@ u{€$Ww.d4ÈM0_ƒ»Ÿïþ !Ù!$G±+¤~Ðì )“rS¾ëC7©À™"krKu<ºpB³q¬bõ–(m²*+‹j«b†©Íš\W Žj'<«Ã $ºFJðmŠÿM†T<];ÙÊÁ’îôœ6Á[lCŠTH©iÓ¸wÝòÞu’ê÷®[Þ»RåÌônN›Æ½«©†s­cCn¹Z®Ìyë‰/¹ Ixi¯+“o;'¼o+Ï`¾åÄ’Bªü>ò¹M촜ْ¢Àdô~Ò®®ö5¹ÿ@ê–CêH¡@Â[$[­fÚ4eH®@ÒÃ6åEŽwrq —²žÛ»¾”‘" ¤´¸MÝò65½Óýâ6ͧq› $¾,ŸŒ…I%Afîäö( pô¥GÆJ…ÌÞë«ÀX«TH>¯åàWƒ•\Ön¹FšFTB¤œù{‚±V9êõ¼îÌ4Þ´„aÅèM®à â³) U^ËáWhŽ“i‘cº'k•¡C/42#P\åÑ·Ò¢^t+¶@h‘Ù.¬ @-èB·Z -’ë9„ÀÌ ®éJŽ”#O0Ö 9RÏç–“`r„È™à‘öÌDŽ­( ö—iNÑ‚|¼l­P$³0ºU`¬Ф˜î©k•"É$Q»[}ŽŒgœH Z°j2E2Ó‚n¥\8“#¥\ŽZ×¢ª‚W39ª8Ñ“)¿ÅsonD¢‚‰5xbÁbáÛÙÙñ…3•;v¸ÎNcä‰ì^ %¹ÍSž¬ÕíÂâì¯%2~Ê“Pç{)· ÕŠócˆZ…‚“NΩ\©m‹Ê½àI¾© ÙúРEü$_5\¯\ÀÓávN1¿Sz>*bj‘Ù÷íò÷©ßð¼ägßõá¢÷cóþ`àJ㢅‡Åéÿ¸ˆ­Efß§ÆçRÿLÓºsêõa}ßìV¿™©Éû¡6qöý¹õÛEU¬Í< ËßÃúÝìûÉa Òú¾›m"‘[bþÃ2ÿÍÚÌ¡ aÝÓúkæ½`笿¹EÖ£R67è6z¡×屡`d¹Ì3ÔQï .ªãIz]nŒd.eõÜ¡¡`ܽW6ΚÔ] F2OÖërÛ«KGåswCÁ=m«KÚøÌŸõ ¼„Í´††‚gÑ«KÒðb^——ï«‹qÎî«ô$ÏÀKa®fMúsÜ«ås5§ÄEöº¼ü¾$”ù‡^—ÏÁiq1æêÓYA|®Bo-§ÖZ¯ËCnÆ°ë¼ØåNœG â»jtûªÚmµYA|ž_ãQëâr'ÎEA|ަöœZ¤•¡[p{Q#.Bá«߲,€Ëé…度\èV(…³žãrÂܨO”c9Õ,”q9?n_a$g8— ^}:·\Ìí“§ƒ5åÒÂz»A9f¬Í«wTN-ªwP.‹'ÛÙŠ{)'¤ÊÓEåhBf¡Ì”s£þkæíJ9¿¨\7,r½e¼˜û!PÚùhË¥Eð†õŠ8n¼RîÜënÃ=÷P‡ìÄbý_圚£ÿ«&ûú¿àÓÍ~öõw×ÿ5 õI¡v±ê¯ø«®ÃŠê¯_W†ö¼ê×mèÊ-#cEÍW©°üà7oüzïûÎFõ÷N>ÚY¥Ãhén·pÐÓÝ…Kóµß|º ƒsüžÏÎcïw0pC­µÆœ•amC–uU\¥ê—jøM{'—ÒªtA/`*j/cà¸8LÌ2¶ 72Y¶n ×¶@G®OÒB†RNÛ%cÐ:@<Â*ª^ZPÔµ ´ƒE¾lœ4ý.ÛäéüžÒ&ì`àÛÅ¥|/óiú2)÷Å7_ް±Á2 ^9®X»2v‹´ëZ®dX ”] ]VIa˜^<Ù.ëB»`á:©X-HK´ë@ç‡Jãv¦h½+€ áÛ™°Î‘‰JøÊùõ¼cèÝGØè 2Yò =õ¨¼aAë)ážÖ”œõø`×-¬FŽìáeïˆ ƒ­ßǬ K !XŠ·çZíõÎÒSÚ›°À:ö?Ê¥¡cI…âH¸áÀeõ;üÚÕ™2Índ¬V9£@"¿§¥2)BBVTN7ιY›QT/á(ÏÛ.‡6ô9á–”°ó (ÑꜛϾ$ ´‘Œ2Ðån %PjW‹Ð1••àL0#çÜÆ Cz IlDõÑjçÚ°õR„{KëTëœ'Øy–»Ãm£@R¶ ¢ÎE’˽Ó*µÎ¹±ÂèD©7iyÁGgZH\„!‰Oph“ÖsnÁóA‚Óßñ>´½“"Ô’bà ‡ÃÚ¡ÐBÒªø‘ÖQœ;ö ž!q‘i[€€L,gWè½3©…DE¦m‘ý¶7Ãé4N¸§¾)Ïε5àí8qû˜×8ÐÃpªÆck€ô}äÈ90˜®]™\„ ©ìu[§ÞŒ†'e%.O`£a GJ¶©Œ‹ðy©ËjW¡qÎÕȾÓ.‰b¨ícQ®œÖ")å•…JC‡áð gz—+v"Ö7•I:§”@ÒɹÖa8OC‚hbs—Åê0æyRßSGª'õÀFóª5]p'ò7gå+ª56'0›œÀô °¢˜VPk¬ç~ãI½þæÎN«‘ÏÝì]¡â‘ÀÌO2Ë ©WüšßÙ¾3ã’ݪËoÖñz¶l8Q—wŠóõÌò5.c‘òäpf'§3 3¬ÜPÔ{ù1è‘'²ŸP r=sáZ9¾³–´³€ÂpŒàXÍ-Š£1‚Ñ[Ë?êæÇAñÚÖhÖC½Šršäþ¶#qØ´à®ù£)U—&¿× BIm× ®’âÐ^yŒ’Ð &g\$­Óœ¶PË誸Šªî°H>.á} gÆ`~ËC­Ö£ÏXãvHxÎŒášÊóŽï»‚Qf¾÷ N\ µ,mÖ£Îâ¨H∼¹Œç?ÿp‰(·èÚðaîœ&ó²ü¾^\¤é-Šöš»o>„$òXFÛ¢bF¶TRŒ1%Ýûæk)ƒù{V‘J;\1Žoæòõº”¿‡ì=ϨC —~q}Ž”¶Œ½Gˆ®c—HHÒÓkZ-ï/ãîsÏhaêK€ÔªwßÖ÷ÍÊý×™³æ³IÅ2Þ±ö‚ájƒäŒ(m¼«wísÁ*Õc̹ô2ÎÓaŽÞ7.‰“§¨³ÉÊRÆòõ¤ýð>?ìºw}¿E·Œ±J{(΀ú˜ k–±õ¨ýâÍ+k-¯#bæ¥\=dêù>:žÿÄÝFA“Ùýýfþ­"BâéÁú%€]V3ÿZ%F©U﯈>ftl)Kw+ñ»˜Ig–GF÷pôækÒËA—µŽaoŠŸÍ9ZÇ–´»ÏJëø"{œãPÁ?a•Dj)ãžW6s‹^olÊé>*Á ã§¡›¬mèàù®c‰ü×÷ÁÍÊÍd_þ{>Ýìg_þ{^âÿf™ª¾4¼> f– á13eÙ—µŒ¤+–ÅXyü˜1€éÞPÄú)wÁy¨r©˜%h»ЋLW ¥š]80f/-Ðz€[`j ˜î±F/°J .„̰Óq] "e×…˜V@°íÙU>žCî¢2­V \åÔí µPùcüý|¹Ê©ÞU }Õž…R!ô5bk‘aŠ—c†Ž6W9Vgç!ó!៊#«ÎƒÔˆcTn¨8§M¦ àÚB:\œ¤$ó0øÜZlF>hÝB3ò!¸Åfä}2Bdú]ÍÈk­n¡y n/fä…-´meìTžMW‰×öéÜrL*ÎB•ˬÌZoáad›5—–rÓA9]êÊxZ/*7„Ç,ÄA«j?ÚrzQ¹ïb /÷?Oú³½Þûó]®šÅòÿ>èýøOíÓÍ~öåÿçGþ_¤Ë—„ü`x;RU°%‚ãÅ® AÛA©Ègv XIö=°Ø-–½×°3V¨¸¸ ²oŒÚ˜ƒYMöèÓuÙ1eã¾>±¶rYöú@vP$£ïUömz;*”¿‡s-û®Bø"ú¨1;Jx…i)2-ò·Æ*‘WœÄ!q!Šè7«ªl§òoN5V‰ô–·ƒ÷§CH²¯R}¿Âl¬ù-2LßêÄÜ&¥}ýÖX%Nù­Ò«ÚoµwdeŸW@ývdº³Æws¾ä¹só¾ -µ`²œ“]Ê:Ìò%7:Îû2´Ô½:]ÆZ«?<®{5v `öË®.œ… beez?ó ­–W’/6ëj°Bó·äW±*«¹îöÛÙ‰G-´Ãb~¢>1Í“ÈÎÚøHñµÁ¯¥–>u•·ä¨ˆi‹Œß·óÞ×»½¯—¿oY(x¼÷˜¼]|@Ï<öê¬Y“Ü0sâ±iËɇ‘·Ç£¯Åh„)ò¶Íå»ñÑZ®Ø¢d>‘.ŠéÓÇfŠñ¥çÛj‡årµ>ó‰¨Ð©sÜ ü%¶\¬Çnœ>2[. ùDa­sŠ‘Ùyß‚›æÑ–Ä£§RóÀ‘ßÝô‚Fy>8S†¸ •>§u ËGe8›ãÑçbÓGnœSŒtº|ÃÚ{l8ÆyA‰GÏÅpèæ®'j]\Èct6•Î>F ¥;Ý´®‰G?Œ[?Çñèóò|l0&eyv^Ê5<»pûŠÇæ1…·ovuc^/öNçü³½Þ‡ó].ÿ]ì?´ëçðúÉ>ÿç|ºÙÏ>ÿçÏÿçŽh8Ïžÿs¤ò4ZËÉC5·ø\Õc›®V µ €vj´³Y­)%Bk `šû2] @ë±m\¼mÊB­Ç¶~8ˆÓvX¸(ý:ûœÔÑ­³ØJG»n«?¥U8Pb|þ®¼ù31¦TæŠEt­“+œÛ“§kñž”œoÞ.ÑŒ•Wþœ*~ w”Þg‡eJggNÖ5fR¤+E:)²vDµxvq¡ Ã 3´|#)BcWìÐ÷Û‘ï·>D#ûH™²š pZ‹Ðò7ŸÖjÄc‚T}Û@WY;à¯9‘JžØ¯i9P¨iŸÏþ䀤ŽéJîg´k%â1×mqšUŽé>´•ùâñM·ePd­ÆŠ£ú•+>ÍŠ 5[tHtNK™r{.œ–3w—óQšâ¼//[«Çn{Ð(åÓ ¯Å>Üä•_^¶vDaL÷c­ž¼³í/FZHkõä0] @9yg[>ê°÷¥ ùäÓõ•\@¾œËaª{kê.ÉË7’bû*zÿå,á 9$ð›«èý׬ž@í·³ŒÇH;c*ÀiFdwç'záÓ<)€ìÂânáßâ¦LeËÊÃ_s£T,Y é°u‚³ß·íÃùï»ÝÞ÷óÞ×»Õ?|8·þa·Ûûsë7sª!Z=tËßT!çÆîïÛÝÞwsæÆ-âqÛŠ–ǹKŒ¾žbg~Æð8Å‘ž²aW§åkJ±ú1Ölæ„ Ó‡Nò`ìÔÝxœ.#Â4΋yœNZgtæqÎU­³¢2Ç81Ö¶j/¦ES/{ãqEn.Ë´ŽI7æq˜—N:‹šzÌãÔ…O÷H3&ÒY¬²LC3vÄãœÏ2õAÀç=¾”kªu2e:“‹Mx´œ¥V¢˜Ç9—;h]( `Ú0/å“b..äÀÖ^s>¶q'öÍTØ~!K_Ð^¥aÏÚÊù j­N/$d¡ Ö­S1sdŸm86­ž•Æb£so\«7=®ä½H Åú…²Ÿ:(.,”ÂÕ1ApU3t‰×a ·?åÛë}<ßu ޱ˜ÿoô\ÿOv²Ïÿ¿Ÿnö³Ïÿ?/üÿ|ÇÛqèŸ)àE®à @èçÓ/çÿï×-¾r6üÿ×lf¯z¶Ì‘{œÐ®ÆŒYÀº(ºìÿ³Î/Ðêš$avL˜1¾ÏÑghùÿZnBŠx½ @«ÿ‰lU–Єžã¬Øµf×´@ù ÐÑ#÷¥ˆU(Ñz#qsê “–hÑ/œ’„rrÉ.Ðb rc3Jê“K´B lŸÑ7–Á ü‘?i ÞÔ·t¨ƒM B•ѯ—ÐçL#¬Dµâ42ç,$X‰jÕ…d›”½ É®º\;y/@CôŠ{áp;ˆ¶—!+ƒ¨“^ªÎ}pÎ:€•hV]í –u`R +®ƒÃí –½€&«î…vkÀ§”üj{áBHãl0ëlÂ…ßXé†x½q‰³’/4µž” ö!¢GeG܇©ZÐqÅNìÝz4Ö’æ&Æí-‡5™ºu§£‰d‚:…ö½SF¢G@ýzPÑùs.“›+W§|vacK !²!U„kT¤“"CÍr9\ŒZGÁ$džñ.¾"K™ú¬OúV6T]à ·$l5˜Óɤ$]5Ó $«ì0ê‘ &r˜¦M¾ÊõºrÚt¥MôM{7Œz”b–œÅ.û’M#¿c: ×”ÊãF=‚ÛUœ’…>&Žßê]2š)r=:ʲ¶ùP–At'FÔ£ÞÙ¡4.†Ü&×g  € | §È ʈÛ0ˆÁÓ«T$±Y0 ‡LÆ ½S±JE:¸Mv°äl GëSžhV¶‘c!ú¶ FË8Å^·mrUY¢õv!Ei‰±?{7Šz¤²; ¨¤MQlM.Ǽž(®qk4GbòÁ›¤¾ÄOÊÎà qƬÉ-ÙÑ[pÀ»¼Û’ÄÓjWI(ñ“J<-\r]J›|RÏK9vµ8\™<ΦÄóRyµÓÊ´¯LÙ .ÎEû.»ºƒ²©Ýw®…”²áHÀ`jó÷ù ç‹y·à¾;ÜŽxPs×xV¼GÔ°MÙ/¢Òyµ›àõÚá:âl'åóM©ð!5ÜÀto*Y4³g&bþR(ýÌbX´Ç-˜î±£Ÿ]K3«yÁb˜î ÀáfG‹q< ÖAÄ™•8°h%Ž[0Ýc Ê Î¬ÄñR^´Ǧ{pUe¬ve43ÊbAhP‡c%¶T‘  ×<^Éò-E»Š [¹t+J0øvvº2|We3½Îiñ“Ÿè…OLó¤² ‹»…O¸#@úàÂz>±ó¹™âb•&÷ôœ'5V™.”]cç3—‹Ë¦ âyBºf\ùb18ÚÎ"Keà~´rÂG +;~_n×SÑ©‘s_Á]C± Ç]õaÝ,kÜă»¼/‡Énõ ‚Ç]¿/8w.¿¯çõ?¿?|8·ÿÃ"®-2~_µ›ÿ¾n‡hü¾Yþ¾m»8~nÿͼ.æñ>tnþûª¢ñûz^û‡Ḛÿ£Æ-o¿οÓþÑúQÃñ>Ôóê1»ÕoçõÔÄaÿÝ¼Æ Û?,¢‡í>4óÚ?,bw«ßÍk?5j\Ù—Ö?,bGûÿàœúGûo^eÿξÛûn´~—¿o潟Ûoç<ÎßàB,G´OÔþáÃ|!h¿®½™ÿ~Þ"©=¿fßï gpX¤ÌÄ"#Ãí29ôþÞBùµ4ª6–ÑÕÀn®Ózù2 ÅçØñ¼o…¹í‚Ï™‹Þo´ÆMéža$¢f÷÷’JkËȮщõ{¯Ò’÷Êù8T…uÑj£–¼ß»Eegþ¢I©…„<ýîï·t©7žõÓ`ü4»‚0f™ ¬?kB¢jáuVýqɹ¸ûûÍø)eYÑfHóèw¿Ñ¹×}Ê>&“nÆ…eï·¡ ag1{ò³@s¸]ßoéQ¬Éã' ‰Cžïºþ6ó'$Ëú3>…ÝÛ_¨Qág¯?«uZ²ìÁfý[~­¬Xÿ)íþ¾kú¯DPÌë×{Ýïþ~KŠZ%ªªeýihÑîí?ÜŒŸVd»¬?ã¼[2ÿÍø¡ÅD?X0ÿ½Ýýýfü¬ñ…Êæn»ä—õ¿?¥$ÀwY°þÍ®ý_ä9ßÍxΧ ëÝÏùÖì{Î_TÇîžóõî2A×Nr¹FÓ' ´P}“¸8Nõ°TYê7·ãç¢W{òœŸš©º¤ý–ïÅs¾Š³^£/…8Û+÷$W úƒ­@CˆN;½pJŒ!œ‹¸ÏùÚÍñœ?»+ö¸¯¦Oz_-ñœ¿l®’©½ºçÒ9-–xÎ?+p¼¾fÛ8^£çc¦=qfî½WsJ<É^ÍzcïŸä ¼N‹Ù^©s| /?-æì¼s} ïÉs¾ös=çïq®æ”8çseÎñ ¼§Ål¯ö„[´½Zp_-?ÙÇ%ÎÃ}¥ö„[¬p_]Œ}5Û«=áç<q¡TØK¯”íÕ%€1Íö*î…hôq¦W—Â-<Û«½áai¯.ÆÉ>Ó+½—¨—{ðÉ¡^Úí XFÛµú‡òÍwŠ2“i…smÿ—aºÆ¤ M\1_‹KjõgŠûG(²ÖÄ«g›Ÿr<¶iÆ}ăñ)[í“¿aÈ›®â¶%kzÑ4ë¡;¤Y¦¸µÊ5&×ø*"û?²&c;¤0°ù±ªØ UÏ—>…¤U>ß²5´)zgl¶¯1ŦEwÿÅÏUÍMÔô­`ÿW¦skÈ—ÕTî›Ö®<Ñ Ÿ˜ú¤² ‹»…O¨c@úàÂz>±ó¹™âÔÛ©\ÔóžÈÕ‰}~­ühëÃârË4¦üS×l8¨8×24@aôG ˆÆíò÷Ýnïóy4p9>ÓD*b:æ™yŸO¥Ö]H Þ·M‘™÷]¼¼¯çô_ ˆÆmÓ¹ïú?|¨–ׯ›!šyß,ÔÿQãæŸYØÅµñC7oþ‡EÔ°þáC=¯ýÃ"fØÿQã–¿ï†õÛåí·sÚ_ÖŸÓþÑøÙ9í_PÿÜöÛ9í/ýw ·¼ï6qæý¹ëÇÍiâ‚úçîlÔ¨þº†™íŸaÛ™yß5ÀëúŸSEÝ¿ /xß ë7sÞ¯ÿÝÞ·KÛß^ˆåˆ¾ñCÛ<œÿ¾Ü l#XöÿðBaë¾Úÿnîû}±[[ðp±UŠÄU­V)*psçZ¥˜}«”…uìn•¢vï9nì>ó¬RfuÁ.I½½=Y¥h7«9ºk›.Ð \b•²l®b«‘½uŽzu>,ˆö¢9:o_] Úó³+0ìIDz]—°æèÐ*eé lõa‹öü“ÔF|ògàì L{ÒÈnVà=ªŸÛ­å“u!Í÷¢:ºÊÆo›¹½:ßkh–²ôšÝX—¦òòžÌRÄÈÈÔáI*/Ÿ޽™¥ÌÙXs†ú°¶Ù v± &¸÷ãâ<`‚j/Ø…Ø{]Âúó{²Kagº»o¬½çccíÍæu…µw¤é|l¬½ :,7·¹Œöj˜Ûãb>Ò´wTð< MzoF¯+ M{§‡Ï9Òt±Õê?m>Ûëê¼›Yà”,¶ÿP^÷³ön?þÓùt³Ÿ?³öš ;^çm÷Þ|÷›²È“6üÈ+z?ðSp ~j[°§p;óZ°§p; €Ï€ÀOgng^ .­p;1ë¢L®Ò:+ºÐ·¾Ô¼R¸»ž¼Q¤lÙ¹u³à§v=ë ©ÛO Z ÌXˆt†V)#‘uœ»(ËH¶‰ ú¨Ïs¸oж:*ÛÞ'ÆHI¾„Žà"ÜJ= ·“bêYu4¨ /(Ç ¼˼øý¬¶k´nÃ핌(øe%š½²Q Ô~µµù[ÑÖ:4áv=QDn‡ *°Mª(›<†-ä¸wÞÃí˜UV×G¥ÙÙ6qO|†¤Ý Mmð8\T~Ø›4¿M:äð*T¤´© ·ƒêöäêO”ä CòÆ”š³*3ù%$åoCnì[H.VÑm Ymʺe¨@¢oQÛ&Ü«Û[…B‰B9`µŠ…:ÊßÚp;¸øIÝŸƒšH¤¶MbàPÔ£k€#lSq²¾«q$îÌL›´ËÊ㪂„ìÑõ<…"‘ÍÖ p£/¤!= EX†yŸñ5åx!IGäU­DûP£%AŠ$Ãèö£†"¡ý@Ñßpcõ^Í ½'Ñ—€˜î@BCëÞ ýS»ï*•-6@½¥É ѱö'«ß_hQmr׳¹cÀe߆"É0º=Á¨¡Hh{´_ ëÖ°È.lµ„§fv `ºGeQƒ4üü¸'ù à*€ÖÓR…|ä›X£¥@G—X'aþ¦ý  õê¬ßê‘|X«øâÝjNü‡ñÓ<™ÿa\ÜÍ<™Ã€WÿXC0;,žwòì“¡!$»6‚\‚!êNç¼ pÁÌÁ°ëûnøþ¢øÍûó¢,x<¿ov{ßÌ{X¿]\dä½ñîâ@·ñRÞYìBÝöw»@ç"â}êvq‘'å%Ý©!]Õ[3ïf­DÉÐKº2ÙK:»âÖšÝßyIç/AœCeY¯ê%´-yI×ü>¶T-–zIûí ~ö‰¬tŸ¬Ôïõîï»Aýì.Evîõ/ñÝŒ"—ÙË7Û6]»„»0ò’.ÎÅ“É^¢Ý½ÿ#/éò>Ú³Q‹’wv÷÷í ~1c`=öÒ¾ûüvƒúçH²~ ~¿ëúY xÈ=,¥èör’ÎÓìÉüw_p%±ÎPpI§”i%‹Ÿ6ú€Ëz¥š©úôÑ<‹¹º4uÌÜ^¶Uh•F.e3Žçj<³m¼jK{Óœ3W—¤ÚR·O’«œËWàЄê.=Û^]Êš0ý^V Ú÷$¹ÿYüÙ$õ|×S¼Xþ(rïfåÿn²/ÿ¿ŸnöógVþ>ý?*fv¨õ|5]lÿ‡þÿì½k“$·‘ ÈÏù+`¶ûaÄe”áýX»93N©%òŽì沩éÎîEµ$ÞQì565Cñ×üG¼2"2³ª»©*“‰Ñ€‡»Ãápw8à/º4Ø]D·>j¸° ‚ÜÊÚrZ/t $‹Áñ<›á®’ìò{·uë^öÉ,„Ëuþ0ÜÉ[¡Öêó¡Ñcà¬ÌívÊÒUÒ†ó±ñ¼ãAðšïdHyý†P··&œwöÅó/•M€¹RÁ#΄¸…i<ð1dŠØ·r+U'·®í{^n_„5Újý2ëy¯"+Þ Ú5žsw Áè9£=<äîé|À¥]Y“„¤bÀmš(‡¾ä&Óè”W´»Tr8 pÓÚÛa`ñŠ«Œ¶¹é•ݨl×®ñ̘‡˜4Þ#}T0°%ús€/ôÜ`IͽɖrXÙÎ×f÷¡ cŒÁá$„‹è@¦Éž[‰ûØ0È¢lq³F&×GIµÁÄO:9È’èh»(%: Æ>éäÀxÈ_ "ß«bT*»[«ªØL‚!AÒ^Õý¾Ðëè&R¸7%XK-NçdößDš$©qç0d ˆ¿)ŸøF‚R;Ï`=вÖÎn(”OB?”Æmà ǛktÒáSñIì†Ñ)…s!ÿ—â·FnNçOR7 @Ís!ëb¢Åê°5ŒLR˜Ï¢t²x‡À/ì®§¸ÍTY%ZºwHÃ>Ì#·nåýó,™çs$‡“ò/V³1?ÁÅI!ôAVÁdÍ R›$Ø {‚2¡B16ÿ¼Wy`\»‰2eySY26TÚ'x+$郼$jd~4þ2lÎF*…ý‡®dS%­eƒØh¨ LÌjɼÈnHâóª•Ë’XI±gm¼QJ±lš­³ÇÄÏ}À×Բʊ=‹ëý‹º:Ó¨K‚l¤­¥-‰N`Q®Ë´Øµ:?¯ ¥X6ÍÖÙeâÜ×é\—IJHŠ]kãóº2Ó¨Kb—tßé¶+ª¥±ÏÀ¨ú ØÕÒû Œ¢ª]Ñ,]F“Äbá6›w—©{_J³+ª¥±ÏÀè ÛÅÒd`lÊAS(lWKC±1Œm.#]³]µ¾µ¼c,‹†‘ “jª…²¥Tµl$aRM•}Šn’ȆI5UÈBÙàÁ'ºI"&ÕTd¡l­ÎÚ´aDäš*bŸ…¢ÛÊD†I5UÄ> E»:È0éM•=Šö&ÅTöY(:Td˜4SeŸ…¢cóÉ0©¦Ê> E§æ7’aRM•}Š‘uªaB¦ŠØgUE™ “bªˆ}ŠÑUØ0)¦Ê^ L›Ld˜SEì³PŒ­Ø0)¦ŠØg¡˜¦ÒØ0)¦ŠØg¡˜¦ÒØ0)¦ŠØa¡¯8ÁÒ€%šajR —h¯º¬q•uDIÝVÁ0N>ÚGµ‡C|  °ó"ƒâ!%S¯xžd+€3Ù³m­ø)Ç'oN2jÎÎÏë•'œ üß_;tbRVì™ãÏmÃIºr !9¼ðÆ Øw÷¾œ=€Jô[6ácé?Ø~˜0Œ×˜¢E‚ÙíhàU)ˆ¾¤“'¼s½P׎!(Ð`‘ƒhVó)¯eìä)¯†Ö >€¼ËnIwé?Ž]£ ¬¯Îvyú*iNiÕÆÖ3YfºKÿq!rž0Ñ 6ÁŠkʦ4AÊ6D‰;´ôã.¸þÒ •ÁfyÈßKEÆlwÆBEUî‡R ô›Êæý‰£c,Oy¡×è èüÂÎ9Wo皤-'#¢u%»>áô¡AŠÙü¦â 6›!ø$]½`h‚ñ幬ù BVj 8^¬ßr2Â’  tÝz¡Î¢Ç4Ðl!yÒyf辤È“µ„‰q‘=dI”ÇóòR¸“­=¦.f;¦/is$à ò )›ætI{Ì#Ü©0“m.ûl Ó„Pp­}WÒ4ˆ'L x{†ôK&&uò”×. uÐ|Ò&úQIø~¶÷4 m,ƒŒ%×Ï­ùZ}í\9sã”ó]IA{â$E.EKœ6ýi<‰¬gÞÇTõ0l¨ÂÖšá ú³6DgtÁ÷¼·Žå!–"ÙÜHUµÂ÷1[™=éŸPµHp©05É3«É \°$pËi¶Yø"6ËÖÄhÞ9º FÑ—{…óÒ•%ó“z-¥WìuX²‘÷:‹Ôc]ÀWýçA¬çc²ÜŸ8'h¶x‹/óˆyÃ59\¶xûµE…2ƒu¨çˆ¢…rœÁ´¦lUŒ¼"¸»áÍ#Yj±ÍE T^nÒ‰cs‚l®,D!eÚ­wÐÌt‚åIÊÐñ)ÔO!™ î1¡Ïäyn9mI+$<¸€¼ºrT”ÄVê’ ’J?dÖšËÙø©GáW\(E)W ¥dZN¶#œœ”|B.Y:ít¦þä– …Oph‰Wc£à"dŠß 䎗("HãÕlÕáÚ'çØŒcӪõ~s–ŒúYrj©jç99#*ÆäœZªÚ|F|œAãcœ˜3cÎÿ éÔRÕæü Ä”ÿüpª©jCùðpHœN5Um(͇£²Ä©)CAx8$K§šªÖH8*HœYÒH8*HœYÒH8*HœYRy7$NUkŽ §ªUæéy›“enص̵Tµ™µ2ì3[JªÚ|}Ý‹A[©'Þ‰AMU›­Oþõ©¦ªÍì”aŸÁrߦódaÜ‹AYŸfÞ[ +Ýù%¶¤ªÍ–Øaç[RÕfö-±/Úê61Y‡}¶kIU›»yà&ó *”‰}³—e.ÌHßɃšª6[X† KIU›-,ÃÎ…¥¤ªÍ–aç¢õ„„ùw~a)©j³…eع°”TµÙÂ2ì\XJªÚŒùÃÎ…¥¤ªÍ˜?ì\XJªÚŒùÃN …SÕæ‹ònAJãå}Nˆ qªÚ|Uß+Hœª6_”÷ §ªÍÍ‚½‚Ä©jóU}¯ qªÚÜ<Ü+Hœª67÷ ’©*mbî¤G»MEÏÛÊ—½oàvºY³Ô_Ÿë¯·útJ•î?‚Z§­Œw)Ô õIÓ5™õ· ý'õc¹ºK^VŠËâËÚñ¥‡xÕ_ù¥«ã7m¢»&³þ•8›Úr¹Ô_å58ØÓôe%Ϊº¹ö‰^m²Zÿö«?ä馛t§§.,Üwg$.Ýw'^+çÕw¯þöêûÅ·?¾ÁÏ‚)ðù×?ÝýúÛ?ÿùNìlwäýJüßÏ„ø„øé£|ô3"ïúÃð‹ÎíòØæv¹ÕG?q»çÊÐi²ÁE¸Ç ših6üôÑP*¸S D8i¿ØÜî¥-í~þèÜNá/ÜC„;k]‡Ð†ŸW°óýgk»ñgá6¬JD&¿9%©í€„†Ÿ–‰MÐì 6û¾JÍòt6§1‘Òsen(Ükàœ³]©ŽÅÃÂWíº+ÝQ\^g*‹ÿÍ~æfY“"‹­C;@Ù†pe œë› …{3Þ)_™òÓG?Wg³ßÑ¥:% ¥Äj3`]‘§9ïbm—[UùŒwÆÓA{kÀ´V©û3 J ïèfg‹§é…–mÈ+?/‚Ӫϟ OÆâ àtkè-ò8ƒ3O† nÌø¡›HÆÿÌ·O½ÎÎãCTʹúORû§ûŸÞÒŸ˜ÿ=Ýÿô÷?I²Èð?ïÄýO‚â#`¾ÉÙ GwÕÒ+ÙÎõ¯ #[7ÎÔÔH¨ÌêoÐ Ž™o©–bXPvò!T Lnø°y÷‘i©#]u£-]~“ÿ³u5AU‰KQóÝGÑINã“[DZ»« ´Sy¢òž2/½Þ:ŽÝ]U’hÄ]m!´eÂÏ(tŠ_cÐ0$=Ìi4[×xÕ ©Ë8üxáGþE‡Í[wÊF$qtÑLð‘5+¶î>j‡¡1ÙÕa„8%¸ê˜(†vIÁ™v¬¼C7ɨ6Ï´›6 ÁYºD;H§£¼>V£’• þÎÓkpwTTIC×/ïªd%!©W¢±ÃNã DK°^Œÿ€AÖª†‚9ïŒÅ@.hí­$—¶Iù/¨[Ÿ$-÷PB²°-éúžÏ[:çÊÙÎ'¶ål¥¯§)òó‰u_%"H†¿Z:þ^?FMDß éþ4*Î_>e 7ÿSqÊ@w¬Š¥ò/'5ž©¹ïšƒ¥Ž@e9¸˜Œ«XÌ{–Ž3ƒU;+B7Ç×C Wƒæ´_ùR’Îô8e—Z2ÌÒ${8”¢j³ ˆO¤ˆÎŸGŒO²äjdŸ‹¿¯5# ç@hì\p¦ÇIãÝÀx†¢œ?ɼ“¡Ïņó‘›…E’Ѳ—cCTÏ}ycbŸ‹%3„rÀT)>7]ˆ²‡S¡I•3Å&Õ ²•›5×ë¤Jʦ Låê¼ÔîÐó”» ƒ•H­õUo†é®ˆ¡dãjF¡ “$I3ï-&>ŽÌÐt_Q)^étFŸ![`ˆC0Zz,®v.Ž é(™ˆyèTK*O%kR$=³s ²…›.è1Òý&Á>·-™CíIG×@ö0Œã+blä+BFK¦(tub¶£¤9ˆ{³… ÜO1€ÜLszé„qˆ.ñ¢ !!Ñ%^6ˆ£lh;öÑr!ÒÁ<žÐìÔHçX =0P³­‰®3a§-¾ôÆð_L”‚æ¨9¶ëßx;aE¥N†;WôN›è®É¬¿Yèß\û+ug|Û±÷§—µ¿^mr!^øÛ1ºí˜M›èÖdÞßðK:ŠÆŒS‹ý­r§ÙËÒ?8Õúëµ&«;F÷fZ!Éh.mºT!ÉÁ‰ï§ IËß8[!‰­çU¢8—‰+N˜R?Âõ_ÇLgùš¤%G-¦nAU_!‰íïUªO}¿*$Ýb¬¦#1Çq:š1V}…$³AUQõæBªZÜœª¾B غÚÅZBçÕB‹ÛR%šv|ñ‡¡^ŠOŸ‹Ožýþã™{õNl¿Ã¶`ÙX‡9C7“Âä(Ûï´Ñû›µ™†­hš¡Ûóýé¿ÕÐ8·¸ù ‹]“^„·íùÂF3@$pÚ”ÏZ—™ýâß>ûôdC°÷Xÿ¥qúå^~õìó_á8¾qBŽžØ_ÅvÏ×ÛŸÛ•ÀU{[]¿âòQ;öýë[±ÒŽ&mƒ2únkÇæ,†¡Lâ«’‹tª n§¿Ò.@Iq< ogætÏQ| jÇÁž E¬|——’ E¬Á£ïV(b?2äöEãvøÝ7–Û™ÂgƯ§œð{Û»’Oõ÷:+¨‡þ×™ý¥¤žíÿçæOûÿð'æOûÿ¹ÿŸÞƒýÿ7€·ö<_T°”p>U‚ó7HW¸(æ«3¨°À™ °ÞƒÞ*Y3Á Fе6 ÂY cÛV$H&ƧÊfm{B bç¶-j[Ñù¢pNÅr·sÿ¢ït4ÿƒ.ˆ¢ÞÜ/~ÀÃmÛ<êœâÛmDÅHÚúÔIljǛšÄ‘ð€óµ9Æ×-=îåÛfmƒ>‡DÖÓ’™@ õ©B‚xØs1j¦ÛÉ&„ëEËæàP›ˆÖdNÝ@2ôÍ'×_% /Lÿ1zR¼9ÖXEbò éXÊXyf°ê`ønä‰ » c8ãÜ]?64.rú0!„ÇÅŽ˜1ABwâRx¼ÝŒü—Ddž©˜)·o7cYHU…Í>dû[ÜÍhSãÅÂÓóëö2xPîl \o¾)[Þ§tÐ zórþæùø :ÚW€ NaÔmñqæL w2ÙGéÿ|¡Ié¿?&OSB,Çä)æ)&<&¿MÔû“ߦJuT½/1ù[ŒÕt$¶ã¼“?FÕû“ߦJoRõ“¿>&ßµ;“ïš¡fX‹ÉOÀ­ÅäûfðËZL¾k§o“/f2yvÜ®Úí©X£v Êr»31þbÕöð”~ïmG°žþ®ù{}§ìCf=þ«¡|âÓù¯·ô'æOñß§ó_O翞Î=ÿz´ó_e6ê•É´{7¦¤\¼£¯ÝY$AØ©¼‹»1O‡èžÑ=¢{:D÷tˆîéÝÓ!º§CtçØðtˆîéÝÓ!º§Ct#ŸÑ=mØcÓ§CtïφýÓ!º÷gÃþéÝ»±aÿtˆnµÝðtˆNüS¢ÛÖO§žNüžXÚ˜óüãßaà–R çseŒÓÆ¢•ãŒ:Ÿï a ïrcÊ}×*lemêúܶ3b`ï´×Ácå[$çaöãGXÈÑTXßÝDi0“”wÛiÛ¾œÉBÌÊ1+Eéû.îÈû%ó<+BÍ™N–Zië¶rß3€XsßMä¢Ñ¶´¸´uˆ"H…ŸBà'Ï<°SðÎøB`=k”ƒ YBà&ÿ¡`•ÛÀ ¨’˜YF%ÆtZQB¿ñf€®Ù÷ÉÑù/‹6@ˆ SF!'ó½ÀÄM­­ƒ$B±$&˜ÆÁ¦“ƒ³@-A«6­ @ÒZŸX³3NyM“;ÜHQö;0ÔD´&8Ì3O*¾àDÇ1`½²¼)h²áÚïÀhW²ÊóòÁ{9ÊŠ‡òÁ¬Wm»š¬nØc’±žw@âJÈãË@»pb¥/x£R{Â$nˆ±àzN)Ä’©Lä-$ë˜:ÎXÓP±“sÁuÖW  õòdlä³s<ŠÎè<h(ò$Ac‚ ËŸÁ̳;gLê )…I§H“/²ž“'^xˆ„С‡ä³›'S7#€|hZa¢#O-¤­ìl3¸^ ”*›†ÒzÅÌ{âB&F—© dj‚~L.Žöá¼ÕuòiŒ¬Bà„‰PUÆ£ò‘t~òÑ’deÍäB)ÛæÕmuVk·ÀÁ8Uk·ïÇØŒÔ~R@Ön (Ö.* ´Ê@!$ÐÔYÇå5³œÑI³Ù"ArlêOÍà-0†C0NÍà­ý*¤1€Ú¯BªP$뇇ƒŠÁ‹“ÛYÜ}OFƒ"Î2Ð`f®ò²Aχ ìô~xj6o1‚qj6oíW!´~Rø„Žx¼­wBѳx–˜Ì¿rvÑg½µkë½YLý —ø” Ê¦OرõÞì´n…­+$¾½l÷TöÀZ—”#CooÌâÖO`Åhyê~ åÇYó¸ú&U@„ÊÀkIÿ]~üÐpô]ÞðÁx€=u?ºò£hüêˆn€ˆ¦öqĈdE75è² âOó7^9p‘ó˜$'12^ª° îºdÜ%:? ‡Or@¬û>®¢ÈœW‘n¿0qc÷ ¤²}'ƒ òCô '1Âyïÿa0ÛSò¼Nx…™¹ƒëbÎï¾€¶­£Ç람÷pÓ¹‹Qn RÛÿÓY”q×.«Úÿ3ÊùmU!ÏN#†u~H¯0Ú`ë>°ƒÏ2æ^‚@ÀNt¶6G¡ìÿežGå„<)Ê´Ö>ßHU \…NÒGºæÅ˜ý¿uÿÏ‚El08—"Æ;4\j¦6v¢3’DáîL²(ËD;—>ûÛ¸@*s!(½ŒŠ·pAФÝH(È´¬Û¸(la&tzaX61Ъ$-5Êpt£œ…“û¢ tU(&Òö¯´pQF%cÏK"¨’˜Hºw$Ä<Ÿ[%¿-L° o³fq°Ï`ï,m‚l¨;Ñy9 Q%É<a?€/¢l4\/”Ip#í‹néŠ Áäµða•¡-i¸i@,Ã!}e©ÜËj[RÆû ƒ$A©]ÚÆÀÈ:¤‹YTÖZT(*ëÆÍÛøŒ*³Ñç©GIÁgE£ Â6 ¦åD¨wèy Å bÈm‚1E¡$í!¡ O e<…¢rÿM…bš$f ÝF”@¢ò\°VnÒ½0®÷ƒ"°¨ãƉ¤ƒœ|eŽn{ð1è\çfjKP³s²SR…Ë‚ˆVNme¦d±¨´dp h¸É/aèNÙ°53€TD9* ev“=¥kÙè6,” ÀÊj`(¸Å ´k²ÑP¨_‡ÍQ°ª*Õ Iò¤txÇe–ä ûè"HVƨ(9+FÜ;q!î ¡fçä¯i¾4 ª&÷¶n¨«³ÏŽ&&YÁµ¢ Y¶Ï¨:QyÀƒF’LBp)nLç  J¢vÆ%ÌyÉÇM9°¡ZiyòÑÚ`7“¬äÖ-­@Õ‰:Ù@™MÎqžO1¿ÏHuU$7!D3/ƒÜZî…“ma?úYELô2n)Õ  ®Î1 0)Uè¶¶ ÛÆ@—¹e0(‰0ŠÌï°uOl`ªÏ”­3…äà¨ð€Ëô¶Js5OLg/¬u‰“PÁ ã7‡ÑUI”ÞRõe.À*»i꺚'FN×Pœ.AN×6€P&ø œ!ûüFW3Éoä7¢×¶ËotÍcA¯M ×¦ß²¸íµyY˜H~ã@~£¥Æùó Pe³¡êÉ]Ì^ò¼¶mUÉoÈoDE´Ëoô¦ŒùL‚|& 8íò™|]Éoè7òÂb¢=¯@ó³"ÁÝ4Yr&wùÞW ÅÅjÀi²y÷øL¾êDr<9ž7ÆãÖÍÕ ùÎèö rûp‹ܾ̈́¯¹³àx¢ËLŽç°ÇñÌÓ9TI×T202065RPuiKxýw±‘ÙH›Îw¨’~#Ý”˜ýFœ×à7n®L¡®Î`dáâ FåPg#kSƒ-‚®/nØ‚ëKª)»¾›«s¨YÜ´´‰²´‰K[ðÍk³0ê´¸"æ»×PíDXÞ#͹¿%Iܱ¼‡j'Òâ*Êâ*hqÝ–ƒTx@k£(k£Ø¹6FY ¡9 ¡Éq¤è¶¬Xub6uIÉÔÈÔÝ´Ö£.s Í£@†æ@†æ6Õc!SWSW©»ÉÄXWg°P} IÑï°bóX²¡‰¾š‚ ÍMIŒÕN$SWSWì2u_ˆØÙ‰h R€+º#‘1¨: ŒÈ¨006]ߘª>ÈnŸh·Oìrû^ˆTíD %"v†@RµÁwv$Qè<‘ï¼é¹¦ê±@ *$gx³jÓÜOuu&;Q(9œ³ƒ-žˆÞ» ïxï)¨v"„Âùoñv…Â2 $böYë‘B››ÖzÆ I"ÆPÆPò¼(†²Íƒê±P@R”€ä@ÉMQN5žHާ ÇIÇs Ö} I·Ž“HnßV@ó‰y.T(%7`0Îl-,JÖÕüGGcÊf˶¿ð/ÃçFqEqP+ï‰âàÕ´.PHT”è@!Ñm¬KXxÀ°°•{£yJú @rÀbih¥í‰¥)Y#ÛÄü+:ޏƒU'RHTPHB¢Û$Ôx"„Dq6RHTì ‰ª²ÇB!Q\Ú Ž‰¸[øÃ9&Û8ñlQVË,c&ëtN?ÿ™‡sÀÈÊ¡\Ká=…®‘Ÿ'½áFFZ¾ìO«áLŨ^æ¦/÷•e%c4Ÿà y5ÃkÉ sÌ*ÕÝúpo©ÒƬΎŒç'ù)Ï¥þX†„-®r\À—Ã5Òžxo• e‚ë èéZs8 Q‹à(ÛR¹rØËNípN–ˆ#t‰@÷r4vÚÔº.VUiG)PUÆ3ŸaϨËBTD—ÇŽåö;Uï!ƒ&'Þ¾-´x,Ãt•Œg¬…?DmBŸ¨ó.›D'ÞÇ-8ÕSS:á¡”±:ƒICáxªs9»ÿ'ÞÐ-Í¢£)Y5ó>+̾ð7Ayäó`™ãž8Î2ܵ©œäÂÓÉÇ:[h(M=¨§Ui §_”Ã9°úXbg^‹á AO©?0{6„ ´ “†ï?ñ^¯Àõ(+ÙH…d JÉx¶÷“ì©såÀQÖJ¶Ðé݉7}'IÜ“5ºÈ$O ÝÍERð…ÁKuâÝ_‚”pD]ƒ±]îõ®çS¶},Í£´'Õëpâm`âx6SñÖQ¥Z4›³P´²£ÎÊPiR,pPàÄûÁ$OÙñ@LZޤ_¢¤CiŒ“"ÏùŒÇ¦ÞóBcÇjš¶2ˆÌ†˜!ê¤Uª_²…Îs$¨r'fÈBwâbÁ”°dH ?iã&öÔåÕ‡un”²Ñ Ž ¹B]‚ø=)mhçÓ矿zÓªrX,ó)á}ú´gÌ8 Ê szˆ;@g꯹)(Gþt9ü—ç“9ñæ1]4|ÆS<À{mj™€d¤ ü”˜OP±JŸx™9î®w”TOÔ9L¯ RªÇë|¹ß0*–Lälô‹ú žRàƒ›h¿J)ïlÑt‰Ö+lrâ}eAýæõRQ]Üß—n¼ÞñU¸¥ ®œŠ ©Š“¥bÓ•JΙ¾œPÖ¾E¿ÙRž šœx§™!9ÃæCþ®V?ÒtXi¨M(ë'¡.(X ™ì"jÉ[Ó¯œÜúc%äË“©‡,3GP&S½âzê¨ ¯¼ÅÖP0ïhº0.ã­¢mY`Ñ™oÔQ\×S±Är“ïF—f¶œ\ÖèÕÌèÆåÎl9ÿLM¨[ÄÃW&”Ù’×rW—ê”FOõcF–þªâ¤€*ƒœ}l°¢ÝGÈiiº¨ÊÔ(ùhö`ÞÑF5I&8û;°ým Ù‘u˜ÛrLº\¯ ‡›ñi9Oqâó¥pK¦Rtå­뽃äƒç³õ0ª  Ø*ãŽ.… ¦I\ªÎÓîwá¸Êþ„r°ÏÔOÇÝXýP.š!vNY=¶ ŸóøÄb“ùpâÍlA”hÍ’è8þfL?ƒ³ÈsÿX-NoA²§Ü? GšÙïpYlú–næŽ,Uû²2"ŽW=žWzû Iá&Ž]Ò=ǵeîäySÍ[ˆãõ ±õX{wœ¤y—¬z© ="¯ N®P*N'%òžhÞÇQá4J1¡c{h“A©:Úùæ±Ó’o1·Ý~”±0ò6¼+o^dtîp¶°‰YaVñî™ÂXâ¤G:ÓWøŒµlñ·¬ÌN¼&÷Âp'ÓüpYô¶ç“¬ÅÜ´)‡å¡É‰7ÅõϦ »7Ùh ‹B#Û×›:v‰¯LP™'Þgœ,ùMŽdx^¬òÝÊ™gvª® WGÄ&'Þ&/ÔÅ2©Tr†¡G5²ì[Ü„urÜÙ&,t~ø„f7@òX±“̲ëėョŒúɹÚLQUÀ„ÊvÄqjB½”äƒÃ'ÞA'Édz :òSh²dñ¨’,žbfú®Ú*/(^@Ú³ÐØµ²•eù)ñWeâì›G¼°|Ç ØIªžAõÒ9^àR‘'öÍEõÍÙñSg MRU à N|®‹hbˆãb/àŵpœ*ˆÊ/ðUÆÁ7'î°oÎŽw/OJWŸÕh^hrâ}w’LŽ”‡`ÿÌŽd÷ÇÖD¶xï|Nrr«<ŒýàÎU–ÅæQ$êlãx*8)Å«q/ »¢h_j"Èj!ꚌS0@P¼ DXZ¼ …°?–Âdi'êšÏiêí#ý–aìÓØ—@5!ŠAª2Α‡"ÕÉ_ªoêM6ÊÕøEŠú!¦Ù’U,.µc/¨MH¿ÕÙÂ^¾O:f~<”°BÉ{ž"%8qâý{>Xbe¢Ì¬u²pgd¬x#¿|Óq†jg#r<[ʈ… ìLÞÑ‚¢1¶ÖîÄ`À@ñ‚‘. C¿5‘%^@[û•ã9j™b7º°fdÔÿÌ’V ͧP‡¨Ña iŠÎÕH”£C ¡Ú*¼š‹ºš´š÷³…VsA«y\žwýI ØÂda(¶îâhå$ C…QVc¶0B•q¶z²z"áÔY=CµzhÉ,VOqKª…1…a'=²zÈÂ@«ÊzU,ŒRÉ·Ú¼èÓ .em›ÈýÄMÈ.@ #V{œ-{A–=a×[ö4GjœÎÔ*lÙs`a oCñØy*T9ò6È{.8eoƒÝÊâm°i; e¯i½{œìÄÞ²ȲgßÞi޶VË>šŠyy´ÊôÞJA(Ö@Ö«ÿýŽÅÅ~™2'»ÇAµþã&8Äkýéûgûã÷^\ì—Eà]ÿ¹ü¬õ'þO¾¥~Ytš¿\?ïV>Ñ•ºÐ…EåÒñ¿5)ó7"X;Õù¿Ò¿ jˆ(á,Ð8UƒfaýXl²ZöÅ_‹ò¢°pu6_™²P6#ëÞϰ÷†jÀþüÑOµ]”tÛ¸ÑÚ¯Ö€…á§+‡-²Ç°÷–>ûsn(¸ T@Šëdp®‚ChµTlˆt1½ötVÖ÷Ÿ­íà²eyƒ»"@³7…Xnµ€]„vß6*¨å˜)\ª<Éùè‹<ø²¶Ž|4üÄŸµ‰öLœÉÎYêJp¤ð8cgh{ÉP€TéÜPCÞ%OwÞC¥¡ Ît#6t_UŽ6ÎŒÇ …åx}mW?;ÁÎÕfCoN¬ï˜‚Ü[Æ.TÀ"Àu(¼LÈbgñ¤¶ŠX`2ƒS‘Á¥¾ÙPcLH±lTtc6ÅN«¾Y¥bF¬Ö#qÿ¹¶s\)ËgÆNw³‡¶ðÎj.{©é–BÛÚu•–áqºs\«28×x÷óG 8MÉ:6Ð¥bmVtu–”Š4{PéÐÍE¸4\ì% ”ñPèT›u6 #»ÉX5ÅlÎÕ‰g•âɈ8Ý}¶ À ;cêW‡NáÍ4Ši GbQ>38× ÀÏMžŒ§ÛÁµÄ{ËŒ¯à`ĆÅ!ËàzUÅi\l%´;]1—+mÏ&™•­]§Ž§Úتڬ“â¹ÜYÝxÜ1o*w¶ E'ÅóYamm×iŠÙ¬°®ãÝÏ6îç"€ó‹Õ̧#kCÏ“:-f³ÂÆFl7´c­ý®V3W¾‡þ¬•ëõ¿mVú©þ÷[úó¿§úßPÿÒbP·„w¤þ÷=ù{ ¤v>vP›/ls~£ÄȽ.†`pmˆ[Ì Hðr*I>Û¿QìÞ.c0§v n™xóÇ.ü QH{HøãƒŒðdÌ& Ÿ w;¨rÝ a á¢1,6´Þ  ƒZF³ÉƒOtÁ@ ð`–$ ÜF’OÌŒ½˜m&šàÃɰUî»Ì¤£`—x@£€7ZoŽ‚[––Ä£à–ä€FAì?ãA/Ê;FÁÏx Ê(ˆ=£ÀI_«‘ôµ©Çà"4Ãà¨Fšñà¨FÒ×j$}­FÒ×j$}­FÒ×j¤ži$}­Fšñà¨Fšðà¸FšÉÁQ¤¯ÕHúZÔóŠ_íÖH_5 6áò$üB”w„oO8—wTM*8—C[RYAy—ðo¡½è;œ:›R ¾a©‡ Ï·®štß(…aFß%Í#¨ÅÆ÷NËRÏ‚ž3}º×cH|U=Cjúþ¨—«O ’<Ý×ÍÐ\4 PT³ã¤ëS½Yª¯‚…©›â4¾²Ç¤Ñ™©scH|ÚˆO•º¡R7ãS¦®nÕ6ÔÛÌÆÔ5ˆJ(Ô}¢j3P Á:ÆÉÅÀ£0;¸cŽúëÔAÒ§OÚ¢ L"œTòŒÌßîFC¹ÝλZ!cwúDqâ Á3ŸðVG5;›êõÆtÕg¥NqâÎTB-L:¥¯l81Ç=•ǪLÇNÃ"צ)اÒDÂÝ{6uòôI˳ÁÔüD÷›äÊìaÄñÒ6’<}R¯;êØ uì5“L»¡Ž]©^Ô+ Žñ©”회ÒåN:ïdÃ)ãdŠ<áØMø$êØ‰:vO®Ã‰ÇNÔ±Æc'êØ‰:v ’ŸŒ¨c7Ìp2mŽÐØ5)è‹+ñÀˆ:vböaÐ"Yâ%”Õ œM²3¼Îüý—<- áÎ:ü WÜÊÎöÚ‚¡§x a§(X  ± ‹S‹tòàdâÊ­{p¨¡€ ŠPÛ¸—§ .æC  óÁMq8(§.”ˆS‹t‚Mc±—~:¢ŒÅN>Üäü\–î¯þúíñ5úϯߴSe¯þ$þø÷Åó_‰¿¿ÉÿøñµÈŸùƒA>¿þæëï •ãÇWâþó—aB¼yóZ¼þ~ïQ½©×4j1IwÕ[3^›¡æwÕk&s3ÛÉz¯/;§G°†²>Ü9[²óÊ¿ö†-JpBT8Õ5ý¨´ÉÜ!¸Ã–Lw¶®èã&¨Ê²•1}IÀì+…€®õ÷›ýY«OšHW“ˆ~mþÄ_§$"Füe!‰W “ˆNÅvø{±èIÞ?{‰®¦*àWèûÿþ…1Ãýøû¿¼ùñ‡×ûÕ¿v~õ‡/ž ri«Y^Ê3ÿ¦Óç ,÷8‰Ò‡ˆR¨{¬8 jÓõ_ÈÿŽPê!K0¥./á8j1…p ªÌ¥Cuÿ†¨z'ÇÊ^L•¾‘žåË.ª†Uîbª¾½ÑX=UþÆój:kæ8NgÞCÌ«p1UoÊj‹Ç *^L•¾p¬Z\IÕ\Ó¥T½ô‹cu\€*%¯ÔìÇ©z„õJ]lZ¬Hàñyõcu±m±"Çm‹›S%š…øâ Þ·x)>}.>yöûgq¦w"+Ké¨*YéœôùßþñÑR3×òoVIü·+YééáðKK…ÆÏr&ä »°’.Ù7ƒ_âJ:ï\êfé»ó¯Š’•Îù’•u3b»¬t ¶À›«ZþíO]²é»“xñoŸ}ú?²/ÚÇ)ÿ¥‰ÕË?¼üêÙç¿¡­>©ºó¡ÔÚ‰&rM! B`»âÅÖ·CÿÔÚ±{Ö½í!·vì··+ðÜÞ ~~ŠŸè!×vu; ÷Þ߈t»U üP;&Xß%EÕk èJ¸PÚ•­ ehO=¼V¤¾@©O¢‡ÇÛ#(ÓoR4(CÅt„oA4(+ø•âË Ê2~nŠß ÿÜ¿þù)ÿÚÈŒðóSþu#SàíÞMÖO»ÉO»ÉO»É¶›\(Yzz[»Éçqz;»Éçqz;»Éçqzk»Égpz¨Ý䀓ÇNv“ýœn¶›¬o°›ÜÁ¸l7Y7/ÛMÖ×î&wޱáÔ²7ë(]´›¬o°›¬;ÝYTçTs.þý×SËà¼r/Y7]ÙTåd¶­áPs8;i¸d/Y7ÝXUãT3®áP²8¯ÝKÖM6U¸s,܇ƒqª‰œM÷•±˜j¾5üt,.ÜKÖ®«ªn¢éVpxßö’ÅŸþˆßøôó/^¼|ùé¿}ö ºµ/fØ•¯¿ùæõB¢^¯âàÿóÛÜë{ló—oÿãU~zýÝ«¾þþ›WOû×·ß¿¾~«úÜ>ôÓ>rû÷Ó>òUT=í#©zÚG~lªžö‘Ÿö‘Ÿö‘Ÿö‘wIàÓ>²|ÚG~ÚGža÷´ü´,.ØG6pê)QP<–¾m’\¸ì£†{Ò èê68.ÜG–QC¶nºÄ»nKîÂ}ä 2#~Úù‚Ó{|™é•Þ¡§÷è>²¾ÓV"².Cq²âçý/’z}§âm!Îÿ`Þ®ßÿ”’fvÿ“—<Ýÿôbþ÷tÿÓƒÜÿä(ì-ß‘ûŸžJ±D²…mLžvIŇ¼غ¯Ôîùh àø¬xÎ-ÁÞ/ü¤ÓÀB…]` €¬Mà+ÿ¬Wˆ·¾ÕÓ Ël!ê²9‰²Võ¸Ñâœóó´ ÀúN:¸¡ —M%¢Ö±ß£\à æÎSÀ<& PÅ#%kJs³  ÌÒÊáFWLÑ`¹;ãÓR¿€Øxàœ~æÎy``M´iƒ©[L0ÐX2 Q9i¼ÝÀ—wb¢qÞ9Ú¤QQ‘±»ec4WTÉšð¸ÝjòÚŽµˆc”ÚmÚ1@gQŽH‚Ôp9¤¹3ÊùÅÏ=S%\!<7)Ì 9gASU¿s$Ø:‚ *a¥È<h/ØËvUÉŠ QJŽ‚‹Êáfcž” ¿§µç"Ìë³ P$—Ó‡“ô§s0¦~xq2‰ ­õC‚d =zª:œUó ç €H²Ñ’g€ÃÖ(“A|žUçgcsŒÔáµF‡"iU<;Œâ™t8b4Ùz\±,ì ºñnPL‚½3¹5ŽžÓ¸kjï´JVÆ @3X¯""ó¥ ™e•LSi‹Ã˜Æ@Ié!‚$ú;(â­¶Ø À„<°P—2â–©Õ±•I_F퀬P ˆ*Á½ïy6šNü ϲ>ÈË‚ÒC€KzóüTÉØMB$˜¼>¬£2Élaë0ªäs+`R3¢Ú”ƒÔ†1à~½¹K”*ÖCM ƒQ6²Íé@“eÒmþÃÙÊû: ×… @ÕÙè3ËqqÁ+¬AUh$¬ðÀI„ôÏ%1<ÐB%d3F›¢lŠ$fÒµP1Ê€j¨ªj¿E­œt’˜)À¹òdDÈ´~Ë<¸7®’à“¢KœaQ'}TÚPi÷Æw¢ .°+²Ã‘ÇE¹órpoBU(Y€p sb$\Ü002€XUZÂ{ªñ>ÙYlhÓy©ŠrTË]Üe8à÷ltЏ·²b T„ ’¬]“XN93³•ö]!Áª¦Tƒ&9pY-Sˆ÷öA « Y9éÃbÅ“lª„7&Ó½5ƒü5½àñ:7‹VÚ– Ù"‰Y²£‰å2a.$¬kÿ"¶éD• ST…Z2 Á¥¶F¡I¢vÆ%ˆèØF*•¬ÏªR•ªô‚bKV6#kY­ßÛ¦u²m¤lîYRª €…Ô†QErb´ ] €lëÂÊlt²ÆtA!½ŒM©®h«sÌLJUJ§ Ò¸óf^ ë\ˆ2”D Iæwç]ž ÀTä"ÜÉòã¸o[™¨³Ø‘µž5 —d`ƒM¥7¤T}™ °Êž…ìòøê/hõœ.œ#§kÅRu¡šºä7’¡`‘ðÏc«µN~£ ¿‘Òã¤Ó›¤æ±d¯ $ðÚ#¯mÅ_ð²šûà7â¿‘®uïýƯͫjl“×&Š×&ÈkÓ[…üF44Éoä7ž·P2SG|&d5ùL‚|&»ÀV€ßèQg1 {ü{¿qQ¡d®ùÎY‘P™ãì7¢fùk<ðUÈgÅgÂËj:E´"H>T9Ç“²l³ã‰<9žk$Ä:ÈíäöaUè‘Û·&©Ž9ž‚OÔ‰#ÇsÙFº²Ng20˜{¬¨ÂÀ93ï>¨¶´¡„‘Ï×|ö6ÒŠëš$’ß(ÈoD}0òWTZh«3Y‚Œ,Ä|dd­x®ÁVA"×Wë‹1”‘뻲:‡b'ÒÒÈauP-mk£à;¯ WA‹+Uz±ÒliåÐìDXÞqEƒå%ÑG¹5ŒÍN„Åõ,®WŠ~q]±Bª<€µ[å²uamÜðÚî£lÐÐÐФ,ß‘¡¹Âƒ¨êÒF¦.^÷„¹ÛSwe£®s MA†&ªõ‘¡¹†AóXÀÔ5hœeSÊÈÔ]abl«3٢؂샭Ù; Í MPDCs ƒf'‚©‹òš×%ƒŽçhi[ñ\co'¢J®( 6å VQ&ƒP! FÆŠ÷SÓèö rû4by±áp¼HÍN„ˆbÛ ˜A!Éô"5;‘|gQ|g1ñW\ßÔ< D DñgUÀc;I,v¢(v"…säùµ1cÐ<òÞEñÞyïr @³)&J(l P˜9?Œ÷©—ÄÐ>k=Ph369X‰#¥NƒMÈ|ˆ¡  1”M4’‡„€¤#×¥Ó‰+ %µx"8žÄ|t<r<·æ‚’²H"¸}N·y0rûV$Q¡ôÒ\À`œ `Zë£`ÜŠÓ¥¤.$¿ È_ ÍØGݘJš€Ð> $B‡n$·¶Í…U¶¬ %˜ ,ŽB¢+IIG(,Œ®R”‰®"ÜÍSàb2é(Z±4´Ò –æ71…:I@¡LÂ+Á8û9ÅÄ14ŒE…DWÓ | 20($*($ŠCH´6_ Î+Yx@!QA!Q2q¶bë“9˜ºÙÎeï\È\¥›-0çëIcavœ=gÀrq=”G—à-Ù”3Ž9V§¨!³XFKÏÜ0ό̎Œ¡Ú)tð0ô§²Çäo}öœ·TEy”•œ~’máH¿Á¡n{]™iåD'ÖÅó¦Ëï­$•"…bAPT95,ãälgéþ>eyâMVA½bôªâD9Èå;œd*Ç‘%½@èÉ6œ`ÃÝpEU;7:Y¯ÊiZT9ê“MÓo»¢Dd#9[.©@^ŽNøªz’›à“Çr´u€„߇þÆÕfèO4œBPüdÊùchrâXÆ)YŽI{>{tJÝÛÜ©ò‰š =¤XÓ›<Æ¿r3­dê!Si‚%Op“oÍ&x >ÁRô \6QÌ­ À4‘é„%ûÄ{´4v°—K·5¼ón)ù2öºÒiBR ' ÇAÉ΢’½Bªë=R§4KQæj©¿’ü¥²0uy€q vw>:Í‘¬‘GZÅÙ:bZœ”,OÑ8ÙpRY?3Ÿ£*¶o֣ȧ¦U"ÝÇ0 ´SÊIº±S0–,ã8µQÆ’A>‡PŸBÛ7ã”ýKϼëö+uÞ[6û²»È«”I©+c A [ÄÎ`TXº;§@Ò6ò n‚:Ï‚d‹ÂhECÇìÌn¬ëÇN—ÓYÇ’MN”Spr}&QFKqR½M'½ E²Êyƒ,0ïê%Gõ›!œœãI¡¬õ½…‘Ñ.vj±Z°É‰RbÊT§@²¨øó“±£:7Ô„ýžbg:Ôf¤3ÑHä<}ˆýl¡&¤sË(ª,>'J’)ÍòËôÖBoJ¶uÔQÑšàŠR;^Ÿ!©óla"(ý¤q›L¨ËMN”6óEGS&Uغ@ŽÇÎw‹šnr¢ü»@álØ•‚ó8[òÜïµ/”µã…T £¼¬ë%Ò°df#/ñ®Ÿòìç¥Dõ:SYÏŒ¬tÆäO”QSp²¤éGû™Yî“—=NI³dÑt.kô¥Ö0$—g%éo,S[ÓÝŠIcYd#¯Á*Ojs¢ü îÙùÀÔiXåâ<ÑG>§vå¦+4bP ³ª;Q² þ)Ø.ÜÑe(¶¡_Í-ê'Ô*²ø!*äS;þd)Ó-&Ô5f½4‘“ÅÄrºX€ö‰Òo'§”âûó0#©Sdqê² +7ŠUýy'ÊÃ)Ô%2D2MŠìŸü[Fjä#DË#fSYtÖÐ'JÈ)8…$)¼˜»æÛ?RÒÅG0©˜¢R'w¢ÌæS¦Jà³ææ²d™ÞV‰±XöÁ9W$+¢4ë0Ës$­ä­aê2ïL·šƒÅʺDã2ONËåêàŸÉ4EWÊPÜà‚ßÌhEÈ‹œãµ‰š .À§WÀ^8â𔊕t6ñGñcªö.Þ49QöNÁÉa3D8¡§ 0qØ;HªDS°IõÊ(§B¢«ÞNÍ+‚tUï¦-õÊ”bê°É‰òy  $’s’"žý«‰š Çl*¼ÏŠüD‰=•¸ñ ý=^_xšäF|²åúÝâlÒ<•Û”†ª}gªµ;Ò¾3T÷AY ¤ÑÂ1Œ×Q›´åghkKè|N^8hmi ÇÈ—¢å‡F¬`çQ‡¦ `¶€dÖÙ"ƳEÔÙ2ÔÙ"Úl)zl¨3XÔ,h÷|Ê3¸j¥‚S-X¥B³é@«°¦dg~¬UDÕ*i•"ƤUB‘»:ƒEÁÃxu‹:ƒE›ÁUß×y‡sDÛ6©F3=hì‹ßMN”€´rR¼VN]ðÉ­œC]9‡¶r}?ÔÕ|¨«¹¯æ¢®æC]ÍE[Í£®`失ç•SŒWÎVNž·´rm匦ádë:@©;Ãx5u5')*k^Íc‹†°~ê”é§ÑlAýÔ©0’vX¥b“qX9)ÖÃ+ç0^9)S 9më*@?Å&㼚 ZÍyåË«ùÈS,Þ¬æ,Yy5ßBj2Î~ ;%4v½ßB‘¬R“›Èê·ijäAÔÈÃ@‘‡NÓAä£!4ƒ;‰3¸¬‹C]ïh]çƒè°˜cbžÑVŠ À&'ÊK(Ôâ.ùR ÉÚÑ£äK!Me¯ ›œ(A©ãhˆÀhHà§dz/Ÿ£!C†  œŠŒW[… ¶ :[…Öpö¥J²U§"ãÕf'—ÖðƒÇ1{î_šÈê§âHÖ@‘,އV 즢ÜÏ[R©‘9Ç¿œƒ€3ƒ¯h¨=†°M,ô b§vIÃ8LµåÔ·a7|2|AE ŸuviìS;Ú=Wõ»q˜ÌιÚÝ„àÇr}„°a÷Ü*§³¯€&R}X&£\Y·vóh/¨–ÝôÂ8˜»9Ég´ç“z÷ÜŒS™<¼bÄ©L…PŽiÏݬ½^B=§=S{ùPjÏ ÚÝVe9©}1å¨öÜ$Þƒû¾ýçS=¬½ ¢÷Úç|Z{Á¨Þ Á­P±×[*çµ»½òÀ¶Ü“Ýc±‡ØOEZ™›»íA>³½ ÜöÎM>´½€üÞ¹YNmχ`ïX”cÛó!Ø;åÜöÅTÔƒÛËd=¹}ù¼(G·gÈïlÑÙíy ç„´ a?øôö¥Þ·â…» *Us&RÉT©”T)†}…ÛÉÉvÆ Î‚ño¡.©K…ÛyÍv.µJƒß.+%H»ÀoäBýÐr¬¾1«ol{ÓúÑë&Íãêή7 JÝrs³úÆÎñ Èk(™í_}êÞ"n<ê¿ëF¤Y_TF}£4¿1ºªÐ•2qÔœÏäIWÓoêL9§7 £tÂ$ƒ>ñnü0¸î6v„6nb»&³þ´'-Õ]¬¹Ó&„¤×wÉêYÚvx9ù:ëO[¾ÔdÞßl~ŸRÕ¿Ïã®´¾s5wyÖ7î\jåçýC{Yû›sü¿$þMè7‰]“Yâß„þI5¢òÒ´—kýmûĤ9¹s†þÿ&/ÃÿíœE ÿñ˸$ã&”M³ÒŸ„ë|3âÿä¥]¿¾É˜E§ÙK¿AÿXÄ8 d:¹œƒKFjÿq¢?7 ÖÎú3ý™µþH¿‰pἿÝè_èO!?žf/‘~‡·.®õ'ú5dšsËLþÇߟ4Q#ü'/Ív;â_3â¦øOšøý“—qµ?«Ì_âÓìåþ“&vDÿ² çú÷ÇC4ïq­¿š«˜Ê¿ÉË%ù雌Q<Í^úïÓð7‹ƒÛÏŸ¾ÉL~'/ýÿ̹ïÛMù™4é>1ï?ç?osMÆOúl“¨Óìeh/[¿Ö¤­½QÊUù6~ã&dŠB'ý þ6f_".ö/æŽMò?ëO§S¼Kaf¿Œì wÏé6ÿzä”Û?qEgá@Åiö‘SaIŒPt˜>ëOÈ{«3KHM¾¯$\ %O³—ø} y°n¥?…ÔdÖŸÎÈeæ†rþ§Ü?ù„´pæ4}IÀéåJWL<…§ƒpïrÚn[Õ­œ£˜,ˆHÙ3\~¹VLüÅ_ äZL¼]*&®U¼´˜ø»Pû1·úè§ÖNÉÿ¥ö£nÅnÍêk?ZúìϹagéFZi¬)µ©Dd+ýHÎk(Ž-üâûÏöíŒÓÅíÕ~ìZ-`w”œäÚē̑þ±È¿¾nf¦ö§J,_(háŒFWû8RxŒþ9eCáͦTû±‚Ê`àç|ù|gºF_åë ]¹fû –?wŸcçj³¡ƒ7'ÖwLAî-cª`ýÊ6†¯õ֔ñÀ䮣"ƒK}³¡ ƘbÙ¨èÆlŠV}³JÅŒX­Gâþsk§Ë'ÜŒ¡»YC[y§B‘;XÝu«ˆJµI«Üiº¬XꔇB»Æ»Ÿ?êÅR)$i0L¢ýZ ÓRäG[—Á…n.À¥¹àb/#Aé‡B·Š¨Ý€Í‡ÂôQ«¦˜ÍY£:ñ¬R<1§»Ï?¨è°3}qÚú¯Ž5Ši ª«;‘Ï ÎõÐóNñ%šÎîù FlX² ®WPUœÀáPØ&P?-ƒK­Y'³Ifekשã©6¶ª6ë¤x.wV¯•ØÉmCÑIñ|VX[Ûušb6+¬ëx÷s¯»¹à|¥¢›c³‘µ¡çI³Yac#¶Ú±Ö¾qAÒ§¿Gý{}§ÒC,Šõú¯Ú[-çõ_ÍOõ_áOÌÿžê¿>HýWOæu×ÍÞ¯QÝdð‡…ÚäšÔÝ¥ý]²ýoÙóÍ?ÉDÎÛÑú¯Ÿ?§Úí¤Ï}L¸ã .ZíRÇÊøZ”²sÁ·r ‹îÉk' ”WTx(X< ·bã-ç|- sFŽÓ æ^ôh­èïàT@T iáBð1€†Á€¡û,Î’ ;ØD ¼JtFĨßy€i²íAÅ—lr!)§Â€rÀ“î> ˆp´&é!Ú­at R‘åš¢ÒØ î¶8/H™Ý0Îxçqõ¾îH˜òÀب·Ø¯;&NywËl‘à:æ<€ZD‚„q7fbJä‰9[êüyµ)ʆðÅRˆ¹;Ïi\´Ý`;1Ѩ$³|kB8ÏÄ(…­¨Êž2šƒÉjîüt~rÀÌyÕL¶˜¯+s˜ÜÛóPÙÃƒŽ„”îì(<ü=ýyq±îŽÂŠy¢ÜÑ *Á»v£±Ð;îéx‹>Ýš4x!Z:ë¦ïBžo)a#—*8Çû`ØÑÕ .ºð¢j€³ÓT.ó—Ì¡`È”5ñÖ÷ôóÒW>gt½€ÅÓÍ*™’z¯×P›ˆÖ±Ìž¯ IÓ-* ª*QâÀ5Z“é~tU‚1å‚‹~ Tÿð©ÜIŸ0åöjn‚²ïy_Q¢‹$Êe» f1‡DMDkR ½áäê…>Úó­‚V¦Ñ ~ÔdhMpªtzÑã”gQ¹”/`8DÌ qÑšH÷-Ô]kÄÁM`à?àØé¨G÷¡dk€ïÔȾk7¸ËïtßJ @UÅ·í5H–¯ó( °¾Þ êËu¦™Mþt/ëãñeÅ÷ZYUª-dMÒAʳ€Ç>/å¶“¤=Ý×+¹ð.@méfè>8„zŽÇÀ"§ ÞBŒ<ñ¢JͲêå[ CRŠn“êù4´&0ж\ÍWøT ÁN¹Íd¬˜ó©ÞÎM†ŽO$I˜ï d ÝEÓóIÔ&(¼©Ü¢[øT áTåòÁl?›)Œ&娵&…O/š<á&¥§¬vø–ɼé'¸……×ÖûL‚Máô¢ÉSîOõá>ƒ¡Aºrt§År>ˆ‰ç×´Læ]'OIáM‰X8ưdœê]ˆ@v^U(kNkWnüy<5'­ïºÆ©:iÃÅÜÀ1*NÍIë„1›|T&´ ©pZ8üÀŠ“Vûu"Ù¨ý¤ÂƒéHÅ€´áB š“•U±˜TyUl½ðwùï¿ <š ŒáŒSuÔ†Ë!¸ „ƒtœš«V¥t9ÖÚ ¡øjµc7;ù0ÁAƽµáR~‘yùQªâÉ– 1ì#d3ÑÊ]yùlQv¦"Û‚½ò]yùÍŽmvh³Üá·Ëòòi•Ê:UAy}¯o4¿±Å&­oL{ÓÙÕænú†¾:”•?ÎKîP½ÌéR›ƒ~j¸¶7„d0â_”Öæt}³P'’ò,b­B&7™õ·Ûýݸ¿^Ó]¨‡iâh€üÞy·Ôß, HMNÓ—®^ûÛÕOŒ¦ŽR”]òÛˆ·•ÿ!e³<´ÈNoþæËï!®2¶ ûà¹ñ$¯ó'x88–ŸÉÌ ¿«å~m¸^B+—P0Z*—@VÄÓ±Åoœ9#v¨—¦dºÉ1èí¬4qÇaÒbÂAªÎŸ;DÕ»œÜ;JÕòXMGbÇÕù3bog¬®ŸWs ôS¥ß 1±‹àR_Ë[ΛÁì”kdFà°þÖËž' D¸VôiRV©w/þí³OÿÇïžö‚þ¥‰ÕË?¼üêÙç¿¡­é5ÎÜ=Õ`ñ¶Úoý–oß®¦b´àSݘ™¶ãúÙ“·“v%¢mœöO¦tN’h‡í‰#¥^X7LàÅxÃ^óe¶1Ëð”·›mL2¼zùgåó2½j6ËôRÚ@Ãj?†Õ"~ÅOŸþl|1ŽØr ‡e9(Ûõ ôŽÆƒ7ãÏmÅ—vf¥˜´ÃK|Îl£3_(â±Àç‘ð&ø¹-ðÒN­´“vHï™íklW¶§{(ÎE–ø|içWÚ•(üþ :}E]JwtÓ¹ÕþeÉX™WF]¿¼3ƒNBúçºÆvt˜¢F¡\JUŽõ/j‡Öè!3èšPÁÎ9 n4F—xsׄžÊméR…qݨßqîcŠky%ª›]Ý´™)*\E½‚“‘HvÚ ·Ñi¢vsHŒ“/0uè2èÚ~!íAòçÑ…N?˧–A×vÝh'¯ŒOT f™•Sû ºàÄÛ+7À)-6³e9Šj.O¢6ic×2è&ð|PEÑÎqµIƒT3躱£-*>ÖªÆSHzŠ“žŽ5£Œ¥Œ‘›s\Ô&#œ¦2NËHß…´$™Ú$í®Ï ë—s¥L¤;Ϋ³¥”³È¼÷]Ýh™‚lZZ’¢ÑqžñÔäITyªw#Ó+Ï;–¬Œ›\Õ5…æ]Ùä¹vìj]·aOYL fi‰º>ƒîjHÓ±ÃìŽ(‹´]·%)”Ík%³fÐu›ú¨ tÑXÚf§–´ º eÐÝÒtm¡$ÃÙÕžÊd¬É¸(2Þ2èºí~b"™£ÎIµº¶ŒìÔ>ƒî*H7Ë ë3:j<.á´A[‘¨’È‚ØeÐ-]6Ú/Þã—£s–•{ñÂÒnÙ¿4rÃŽi)ÉB´`‡¸€GI†Ò¡ä¯áñ:A[ÖNO6ùQOÅUám‰[(º1-àÑ3¦æÑé¦rŽáQæîÞ1$Êz¼8ªÝb<~i'#RÏÆÍatËðø¥3cåxÜüU¯ÄÇ0ô=‘FUpj†ÇXB[^!.ºK9Lã  ­ u¸Ü¿£ƒ²Ê–µ¶çé¡[–ØÀ¡iRVÖN6HYP{…»•®0qh0˪¹tÌu—D•Ųpp~–£rÃ&jû0žÚQ¹ù±¶n›èì¾Õ‡§zZnálÝ·Iª;œàÖ,(Uc:OpkÞ†õí·= nÕ†è¼f뀞ùå'¸r¯–ÞÌ1Ò]ŽY³Û¥æéÉÇO :*Ò 'f÷9t_Ì“ñNKyx£æ<Ųr#¡¿ñåÍ8ÑjÈvãÙ½YÈ÷+W;Sý i¾_IÜ™êW)ÕbŒàÇ’ ?ÆHõ£6¨åmuÁ%©}‚‘íÄ®{CiÃ%ó˜ýOž–hÏ¥%ÚµþïNZbü'JKëAb±>M^òD<ןã`üµ—cáZû>ãPMþGÀQìGò?R[Å…ñë‘[=âiFn&ÿvŽ"Ë_¯ðê÷gã—fßw<ÿÆý9äEÄ-ö/ß§O•8áÿ˜£&õ5ã? w¿ tÚ¿ÉOÿreüìþþ¹œÙ±üL–A¨c¯ÕiþÒ×—cüWûO^Îúm"Ó ²ÿ~[Z—ñ_Êü"“œß®•­ºøuý«â¨ ÚFÎð½þ–Œ9ÃæÒœá·›âѲ#JËQ;7Nñh­&ÍàÛgG,·“ÿtw¹^ò÷úN«‡þ Æúý¯JK¯æ÷¿ÊÄÓý¯ÿ'æO÷¿>Èý¯Š4“’ïÆý¯÷´žÒ.QŒÝüa§E õ€,ý0ÐÖý²ÀÌ 3HgØuû0pÀâ‡wðëöafò ލ`ôpÀ#Üi•{Çéº'sW0yÝß—‘“à¯Æ•ny4ð|Zz!é¨êÀgäôè…¨»¹RÝ:#羯8¨†7 yxÛ@ãb¡»MñÇt§{=‚Ôú«òäS…$j‚ $ÌÒPû7ÙY‚¤N!C²=$Ç8-AÒ 8!¤êä Ò0¢®ƒ4TH¢B*$ßCj|bî,@j|Vz)Ì! #ê:ŽOG,t;ÝÇ$3ûa,¢JÁt3¤ëw—›úÇÏfèCy¨¿Tv˜¥‡Om˜wÝãÔV€Ã>vƒÊ °ðá}üÀQ„U v’W1Øà÷i”©yÁÍž´t;÷itÍÕÉ“aÇ>MÓÉM¶¹~¯.Û¤!¨C™wΖÀUycV߸î͉g×0îÖÙ~ÐqÜÄõMxr­¼\ E¼økÝ…"¨ëb(B«÷4aèˆÃÏýÔ·ãW؆¦PÄrÄ¢6ƒ_0aé³?ç†8Þ~×±œ6Ñ5²1tàøÆº{Ó÷Ÿ·ë± ë‡WFØái“oÃòY˜Ty’9òÑ?y²)û£5™ÚŸ±ÃÓ&Dp¤ð˜bWEpœîÁ e0FL±P骱aüÕÒ ±ƒ¡xék»Ÿ–¨€bLµÙÐÁ›ë;¦ ÷–± U†îNO,fÿ«îà0y `—úfCŒvZ6*º1›b§U߬R17ÐýÜ·«ò™Áu³‡¶ã]?²Ú¶võ@×´]çï~þhQPwÚ¯KêÁ…n.À¥¹àb/cAé†B§Ú¬°9ïŒ\ZvrgT'žUŠ'#àt÷Ùayd\‹•Îb ½F1MAÕÓf3gp®€1ïzõi|#6,Y×+¨*N àp(l¨Ÿ–Á¥Ö¬“€™ XÙÚuêxª­ªÍ:)^§;æMåζ¡è¤x>+l [Ïëõàú“‰?µq?²ÖW*º96ã =Oê´˜Í ±ÝÐN°{Û˧¿›þ½¾Óú¡¿S}5þ¯À)X¨ÿ>xŠÿ?Ÿ˜ÿ=Åÿÿê¿Ýó©ìº(KÈAG‡Ï<Í Õ7/ …ñ*–Åb€i¤S¶»ü²•³bØ` ÅN5ÁÀòÎh›t=Þ¹_˜x)¡BtYï*`'±apÙ(¤)â”ãÚ3Qc¢ê$ÑiLcâ\2èÆƒÉ÷v0S ÄA :I4Á›8âÁn `8 “Ä ±@˜Ä&&î¦b³ €–S †cèN'¢<­Eºa0™L;˜)€á ;%a8H‚kr0eÙ>3(ŽéDš\ 6¤‡c:Qw:‘^ÇÖF#.Àà1ve“ÏמðoÏ®l‘ÓþÈ™M“*Þ•µ6heúô´ñ20$õNâFêÀíÍweË- Ý4¡oÂ>m2{:Ý‹º-[%µiÁæH Gƒ&‡ Ù†SƒÄª}8©lË6!n6_×a¤òÁ¦”šÕ0âxhN¬.Žágąҧˤ œê9^W”C’YÏ” ×JA=øÜtáb‡Ì §¶à£®;þ~%ŸÜÒe2®ªŒWH¢âtHÆU˜Cº§ªÔ{/“¥à˜dÖ»ô¯•-g8]¨ úËl®ã“žëñ u6sHUšwz.ãÊ“^¸ž£ö?†Ó\_(Oºn¹_« t'ã×­z^$©qçÇk³áJ)¸AÆO øTèõûIg¬ÓO-æSÝãÎ׫Ĭ¶-æS ëúílÅ hþîìßôq–8©2rû7ÍAï<­m>žj̧r°˜îÄ Nˆ£ÒƒƒÃXb>‰U#íãA‰ù —c‰ùœsÌÎ0 Dçóï"¡HâÅKHûNZêZ¡¤Á˜¶`ˆ¸å’sWÖ¯ÑΫi‹áêy5«Ëë×¼Tuò_©.‚¬‹m‹VBéø2<ÁÜC™¨’÷õ½˜aé RãÜ1¼E›ƒ ÖB‹+¬ùX]l\\@êà:üd]n]¬Ö&S^[—¢j*>¥GmÁ"˜ªML_(‚—[Ë"¸m >ÆX]l]¬‰àq÷!Ⱥܼ0k_¬âR¨Ä<¥´ªƒU~a´½œ âC ñB¼Ü¼X^ˆ·uûc¬X›k ñqÏñÈÒ—×Ç«¶à´bšyY•ÉK^Vç"8Ò“Ð#Ȩe–)3Áp™êËÍ‹77²Û v¡/7/Þ\(à9ê«kï^½b=€—¯/·.–©:n >U×ÖÞ=îŒ,´¸¹^»8ìO[ x˜ùÃb¢‡‰f:ðrãâRÍ.æðH³‹™f?NÕµµw›Lbb2‰‰É$f&Óqª.]¬ÖsÝðEÄÄ_d˜ù"‡©2×Ú­WÓ™7rò‡™“œªËkï®GdfÊàÑÕ…¹Ø¸xé/K?ø`ÝÀ¸˜*Á©ñú&ÖÅÆE«‘&JpQµ?´4ÝÄšjÁÑŠµ¨ÛzÅ2—[«6Ó†º˜¶·¶›‹­‹ËëGs±yqñÌz„ˆŒ¹VE6MÁÕ±R‹ë8U׿],Ä.´×Ñ;ç<Ä‚œD7LY±øVعyqªä]Ä~¬†Ž*æü‚Ñ´—ªp!U—[«>Övìbª%§fû†¶&TÍl&{ƒ‘ƒcµÕ¢%xªÄ.Ϋ©ž£jy^mSuyìb.ûtàÂ:=Ò‹.Ö1ªÜ屋[­WSkÑ>HÕ屋U'ÿàzõÚÂ]»/rƒLÕ«ËÓ.æcU<ÓcvàCÌ«ËCA=Y°FJp{~%èn»ˆ-8Z±¶m¦X±Ü-ò.Ž/Úq—/ü…ƒõ¦ »6vq|f=‚Ùî®Î»8®ÁÇò—Û·Z³Àö—Ç.–sêÄ<˜~&Ü^ŠŒ¬š–·FF£¹HÕåöŪ—pkdA7¶F¶©ºöÌÈ9Õ¾šÿ8j!º¸tZ›W©ºAìb5,ͺàÌãTÃÒV` †ËCO¬G0ÛÃåæÅjÂþ†|+Þ4ïbßšõþp¼6ïb!Z2M™›Ö4÷xªçúb:›.Ruƒû.ŽŸÝœ† §qéùX¤ê±‹ãº}ªP¦ëð|b¤êòØÅjøvþã4§_:¢ÏóÌNq¾ª8‘º–ž†ãýįX©º6vq\[ˆ‰¶˜ÚL‹ÞÈÔÊQ5³™âµgFŽ•˜gfø‰fŸ[‚©ºö@êñyµÐb4¯­öƒT]›wq‘?<ÙLM¦¹‹uŒªtyìb5GfûÜÜ4‹fº‰5÷‡Ruƒ¼ 9«iÒðãk‹tyìb}/ÿ¬[/ŽÇ¥|fÝàÐÈñ“Þ­Óµ'RôÅvNÝC¯X鱋ƒúâ|‘tõ™‘ãƒõ¦`ºÜ¼X=c¶}Ðö¡Íöt‹û.Žïå?°¥äåÁ‹Õ$™·î+yyìbõ¬÷öŸ©NOÎmØ£©·HÕ-c%¶¹ß¼P»Æê8U783R‘ž%›‰-[pvFqq^§ê·i­ªöÕ”º©ò_UíËÖÅ6U7È»°©üñ,ÙÜï™¶¨ª}9Ú~œªkÏŒ×Ók³£›Ö…˜P5µ™”¼»‡Ú}Ûxo?ò¡ƒ¿¿¿ùñë„øàÿýñ՛ϴûÛ×?¾ùöoÑ£þ‰ùß¿v§…÷‚êP¾ø,¿üX|ñå‹ß~ùñçâ7/¾ÄºN+ÕÊ_ÂÖ|ª ÿíâ«¿÷Ý·¯Åß~÷õßba§¿{õæM~øákñ›×?|ÿí ÿùê‡7ß¾þ^<ý¯þöÇW?ûã_…–ôÚ¿ÿÃê Ÿ>ÿõ¿ÿö“UàÿþìÓß~òÕKññËRAóó_¾¤f_½ø¬4ËϾüøùý³½ñüåW?ÿ*7)HnkQ PŠxp¿yÿì3`à¨ïüI$T‹kOÜbitª¤”1ýâw_Ê‚~üü×0<Ÿ~)^Þýî.·¿§šWðÿ¦|NÍäÚC  0ä´…µÊ€±%ýv0€¾sÙÒˆX0ë|š:kr{€­2 ÊFlžœ5v'®Ã è°x[4\¼m¾€~I¤%/:a'¡ŽBÆ\ºlÀ•‰»0ˆ@Æ D…1µÊíÄ ur cPXÇ2[ÒFíÄ Ôź‡:ˆ(QI¹€j£`‚3TŽÔúLBþEÛd¶è&‰ZÙlÙå~Ù0ȱ€)$@s°Š$ ÒN¶ñÀç5 kê’ íàš igÀœÕÌÄ|$¥u²8)@—lÎÆ ¡ñ ›KÒ¢ÉfJ)ÅbãAÈv^H4vHIexw¨µ@3ËXxJP1î  Ö)CåeI”uf+på<ݘh·ø½`P#í`Ú0J—q@&ÒtÞÀ6X©êViût’èLry@Zy€N“M1 é „‘6m(’ÓY»DEDqwˆPTUÚ>©a€CWØt€R ™¯²ƒ¾ÉÁ>ª‘0™Lb—(ÝÍ…ñtÞ À4LÊN¶Í…ÉlÜ  H¢˜éƒ|7ƳqØ%Ê&´Q˜èƒ:8™L;¤ÆÄÉtÞÀÊ6Œ…²@§'“iØ%ÊV·¹0™Î;t’8Q(;Ø`2wp„‰>Ø À·aœšÃ>S·['¶òNNœXi;T8³÷p$NLÝT'Hc3O첑\·:O ÍL› +m'ÛFab'îPW癥º€oÃÈ/«(ïó™:8q8vètâÄgÚ  êę۷€ïVç‰çºÀ©J¬Ä;Äó/ï„‚¦_|ùéóûO¿øø³ì•?ûò«O?Ÿ¿øü„ Þñëg¿}–¦Îù_>ÃÆNG{‡¹KOôg‘_~õɋ߾xþñg ¬¤ü{|É8ÁÝsù#ÇN;”ë©ÿǼu†Òã‚cœFQüûŸÏî¿zñåK(þùÇÿg‹ÝçÆABþA…íJi“jޱE*¥ÃhééÄ‘ !º…(: ݳ’©ªM\Wön=Ý©c¿Õùì\¾\iÕbÍ =ÉWHÕÖl¾\ó v@ Råx‹õñ­MH±Ç‰ü Q-q„ã©BªÎ@óÉ“ªÍªE\äÎ4ÝI5œx!jFÎp§"ämMlnô¡±S¦áÄ’Ùâk‡ÆNÕ©’YmÇæªB^×Ûj’›wªyófÈ"2$£p*BÞ«æs’LU¦Î»O<ÈñÔ )(ÆÒ1] Ë›Ó&ªý~H2u•ñ:vÍ|‡pÒ­;Ó¢XôW„ªÈ›V)æÌ1Žëõ¢}Éãvç.2Þâ-ÍØ?$™Ú·f¬UªÅ{ãU‘7)(Þü1M§»f¬}kÀù˜.ÐEÆ›­Ö¶0©2Þä©F Í`S•~åä<ÂI7œš<±V9¤éLÕ㦛w¬éŽY=¥YÓ-4whÞ™N³~U?’LÓÉ8]õîé'Sõx¿¶°~:¤3Mì Ñ n[[Ç8žZ³¶¶°V94ïleBÕtÕq;&™VµfÅ~ª3ø~²U7yªZåδ¦5+öSÕt‡ÆÎVoòTuÁ1˾êñæ·TýtŒã¾A*RP-ûC³ÅV=Þ$³ú-‡4­Ó´Jµ}]ÕãmE¨öø¡\› ½ÇÞÆ!Ž»ÎV)ú©ZчæëôxYƒ«eHgºÎVizœmßCcçæöxG›Á®Êxó^«pŒã¾áÔ^²—L :=^4,žâ¡ì:=ÞìqöƒIA§Ç‹/U½üC3ØW&ô5Ç0ŽŒ¯jØêÙ¯Ïkèó`¾¼ûüîåÝ©¥ŽÔÈa±nÀê§çžZöH—îÀÔtĬÂ8µì‘ªÑº-–:ÖgÔì‘QCªÝÀœP²Gšv.Êy'€’=Ò猔õŠô €’=ÒÒYíusð €Øa@SF¶]¢=L,Ù#m/ ªð=¢pjÙ#Ýn¯&ûxP²GZÎHQ³ÃN tåAM6 ¿sJöHË©ªpß(Ôì‘.g„µò¾¹P³GtKù¨û•{†±dŒrFÐSvb** ì´ìÄ Vê^ûO;™˜*Æn—hÏl,Ù#ÍÉ)>ÎNA*Ù#Íèv‰vaPö§ª Z=š˜ÆÄ’Ʀþ>&Öì‘.g„¼Žs¡dô9#äí¤š=Òí̱=¿“‰eªcu-v’+5g„½œ$¤&Hôjžay~i+’Øå±'²o2Õì‘naá­¶èŠA•šÎ;JÉåŒPèaçòn'³±EöÍÓt"[ò5аOL“DΨÙ;1(:±Óʤvj¤’=ÒçŒp4a'S%¡je"ì› 5{¤ÛâåMß}‚T³Gºœ‘š=°‡„š=Rå Ë&ÚE‚©ÔœRÞüß7 %{dèr‡h6î54‹NìrFøa'}P29 °“„P‡‘©:ÿ;I(:±Ëì夰£*Y©;qçd*Ù#}z4™º;™èÚê\sÈØ±ßG‚k:‘W¦êÏï$¡­ÎU'²¿oÜÔNlÙDû&SÉi^{±T÷2ÑW ê+NˆÚɃ¦Y¡Hv8vN&×tbµÙ3ß9ŒM'vÞèïôÚŠNìœ.ÎgÚ5 'ñ¡øøÇ×zõço¿ÿöû¿ˆÿúJ|ýæûÛ«øöñ÷ï¿ýQüùõøûŸ_ÿýû? ~ùñ—^ÿýÝAæÇÇÿóÙ—ÿöÀ{öå³ç÷ÏÄ‹çâ÷ýá£ÿë£_÷œ{Êp>ÿø÷Ÿ~þ»Ï¯„#F¿þÝ3Hï€l<ó¿µkËXh»±Y02.ÿö:ÓúÝ«ïÿòã_ß`zÌᇯ¿ÿËw¯ò¿ÿüã« '¾ýùë¿}ý}IŠ# ‹K,Àé [Õ oØD¸ËS)T@¬+éGvp‡ ,ïx®´qêà´¢™ögà2OŸºµF@'ýEˆY¬Íiò’ûw§ë–õ˜4Gåå7}ýêû?÷mæaæÞ_'þU|Z‡€NuÒ8â/Ÿ¿þîÕ7ÿîëÄ—yäê»4ýèÍ«Wÿ]ü__ÿñ‡×zóÿýC¼úQ|ýÝø•’ù•ø?>¾ù‘PÊ}$bV±CÔ)kúgFavÒý³—˜¾tñÏN<à²þ‰&‹ÿ^¾ûö„µÛr×! Q7¸;jzõúv]i‹im˜«©ºöÞëa~Z{ûð´Êäô>™«©º¶f×NÛ7q<8U7¨7>•Ÿí[ò\/¿;JßH[œ­¬¼‹ªaFÕµ÷^/h‹íZ»³åd=›Oµ…F-âè Gqí½×Ç%pÚb¸Zçcuƒ»£ŽköÕêeìÎWLÚ«+îŽZ½?ï fWëÀÙX]~wÔúÍëÛWÁLo1_­Á³\j{¬.·-V+\¯b¬®½—rá‹Ó…ÏTšÕp¢oÔ¶Ú«k葉-´äTnh‹aBÕ\^[küøX-DΦ7nŒÕ6U7°-Ž×tÙMÕò¼Ú¦êÚz]ÇuàB¼fZéyCnRe®Ž[\¿{0÷7Ö«mªn·X°ò¿v°¹Ü¶X]…ß~ÝVsƒZ Sÿ|VHüÑ‹ìšØ«5 Wï†~è‚Èæõ4*Q³±aª½zµ¹¶èqm±Yõ—w† Usx­mq|¬9»eùÖUá͵õ4ŽÏ«…ˆô´ªÕF”s›ªËm‹Õž ¸Ôbb³oÄÙ7©²·Œ[ì[¯¦6Õ‚Å´±Ó³MÕ/²Î¸ýEÖ·¿È:ãöYgÜþ"ëŒÛ_dqû‹¬3n‘uÆí/²Î¸ûEÖw¿Ä: Âýë€ ÷K¬*Ü/±¨p¿Ä: Âýë€ ÷K¬*Ü/±¨p¿Ä: Âÿ뀾íI¿ä¿×wÚ>ô7@RVë)å”[¨ÿ¥?xªÿõbþ÷TÿëAêyP¶øŸw­þ—Êú;9< lR¢3¹y~z]•ýü¡¯}§—“JxUG6=R¤u¾¿f@è„(ùz ç©È…²Ê,ôëÄ€TAR‘£5î6ZÉ Zí«¼F f AfDò²\Ø*Ó2R‰$¨6ɧ ˜€`é¾ /^"åòÒëΰÝ0f‹Ocu¬Eéªä•ÛÀÀõÃ$Ýå³T0nƒõ'Xø³êxª7q™ä¶4R­ÿr}cšÅÆ{TŽ*û.[:IÌL ¨Ò´TIÆøÉÔꩌ¶¨ÍCö(è6)›6yPkÝd–9©,ë6‹÷Þc7G¡¯u#±yî—½6’ƒ<6–Zÿ ®z›pøƒ—åî ½!Ê­þh2cè{Y`‰’¬Ñìûú_Ùç¤k*Lô ïCsÆ…¹ÐêÁt6’nÚÈÄàP6ϯ •Vë9‘%u©sÉ{ºJmM&ÓI"¬lxé‡&áÍ;>Å­å½Þàò“§&× yaÚªÂÖW]’*RÑ-Ýå´¥‘Zý/¸,$ûÔ8zyeñ” ÕNLÙ,@lpï»”ÚË-û@6ÒEÃàDçèú™¤7F¡¯ÿ¥­VxñR6l,ÎÆlÎnéƒVÿ+¿7ìË< ¨P²gè6ìƒzƒ“€¥çžÊs¸<­7ÖÆQý¯,@šb8- X[ioý/š §Ž•† …”§ÕÆl¬õ¿2ócVe‡ßà}hy\ÐÞ; êD4Ò-]õ©”¦%ÊÛ­ÉÔêÈǨÍvÚ–ƒÔHȦ™¥«à¼5(ÊÊ™-Qnõ¿€â±î“Mhh*¸’kËЬõ¿0Žæ3é S x™X2›öA«ÿÃo%Ýä&=]õébL ¥¯ÿ•å/Òïž®3‹Zm’ЭÎ0ú’VCsÈ¡½w@§ó×4’ ƒÓ¸Lk†ßyÝê,­’tYÐŽ+Lš-+­¯ÿ%³]€É+%_©7DÙu«³¶x\f~Vi†Õ;ž÷ÖÿrÙÿ±‡5yš–½Ј±sPÇ vZj³j.©éÞä¥"Hž!ÆÑZ•ÝÈ<ï2˰þWþDŠè£eÏŸ¥ÛÆóúÝð(M`”ÐÙÁ½þì vu­ðŠ0›¨êD¶#ùÞrmï.£—TÏ-wچɿy}W×*ÿœBVºH5¤L6 bÉjº†<› ž‹`Y¯u_×*s9yM/³}†7ÍgHÊ֢ЋApÊ~­åÝT_×  ¿ º+Ôµ‚U8Z‰1ÉJ¸P—Ñëë¤ÁÚUÈ~J]^ìCQGMRÌñLrìë¤Ç£¢z*!ZO7êÇ,d=uÆ„2vÖi¦6¬º:iÙ{ÉþÝY/³â’‚ýß]F/®„U¹±ð$ÛÕIHÎJ"=fs¨³y R¤lh–,©P\vCêêÁU’V¢F”3áŠF0ÂUz“¸lYtŽžòÊ-S_ÿ |³”¯³=$%PÚr™e³dôõ¿òÊbiŽdŽg“O1LÙŠå^ÑZûh ¢Î‹â¸þWðÞS½‚ìúrµ¼Ìq5¦U cS_ÿ 4L@ó¼•ÖD†äL“ÔŽ/íÏSå)sRõõ¿²Œ'ÃóºÇS!Ïß¾S6‹b‘GÉåj2ù)võ¿pÄ×êÊ‚æ ÌE-«Œ#wS Ùß Ä™¿ºú_°ìe}˜ˆÏÊ;®*hœëpÊ$i‚”­~–L•A†¾þh5ÍCl³°ŸŒQ'™Ò2M*+CÆ)æßúú_Ù.ÑŽ§è7ö‚¬]aŠì”+»üÇ2š}¼ÐÕÿB—[q]çƒD§3¶×*&ù2vÖð“q±¯ÿ6+‘¢Ó†´‚7ÊwÅ|òt eÞa¬gu0~RÿËËHõ SžÊ´6äÕ©•wƒlŠŒKY å%0tõ¿p3’êÆ$¸¢cv´U¯é²™ËZI).–‘å)/z­þÌ»Ì9ª`“‡Ez¦.ÆN«äuVÇ¢©Œ)Ð×ÿÊ 'Ÿ²£¤HÓÅ|º )ÊÚ9–¥7võ¿ð¢YÇ‹™õ†«…¤FR‡\"$­Bá˜v Om Ê’iÑçƒf†´ðNš1¤XôSJ¼Je‹²¯ÿ8ÅÚÛçö¤=3ðV¤¸GÅóÜfϦ¾ëëSNÜ+} Q¶RL¿š‡hÊÊkyBI—l_ÿ+›ó¦¬¼yAáEÛ%ã:ý”õcôE šdÕÕÿ"×"× l’–¥ÝVNmX«À¦Ó ù ]ý/à.…íRVžÝOÝ«Õ<ƒ=ËSF‰×Ðdëêá¼óVÞ”]MªKåù·É—b>2[4(YX­ëêQDÑÉc/y.‡`:É/”q*2O¨ÑÕÿ2°[a‰tã²Î!HýÊ'£ÙÄRJ»@X[Zý/Ì iˆ3¼pdù‘ý*•'Iá“ô…÷V÷õ¿'ƒûX&r:Q3k­ïíÌlA²<ªPl²<_UWÿ V”<„k˱C^‹U¿ÞåuŒå1ž7Ù1‡Üêå±ËëmÀy£²0$£šªÇ™™ãÊK»¬ L_ÿK‚ýe¨¶Rv–XeõbûµÅÛ"O°ûÀxf϶«ÿ…«r ÉbB²~d±FÅ#æ1‹«©y²­‘23¸¢c¶acÇq•mêbaVy ´ª«ÿ…‘Þˆk8Ø_!Q‡l“¥nÞÁ•Õl5e§ÐéÑάz$“„ Vó¢U²u{ý”¥ƒ%;ÛÄl!¸ì:öõ¿ \ïlY—Èb’@ð·ç“tL]¦³X.‹{_ÿ t¦a¿EGšÁ £&ô+§W–õSþD±ÌM´]ý/¼w9r­-§©Úp¦ÓÇ‘Œ£ ŸJÆIª®þèÌŒ%W:ôŽk¹ÕhEp¶èWìñ¼òëqý¯`0€£E’•¹Ù[™½¼Je5Ìóƺäºú_0â)®µåÊC†”î:Hš-´Z NÙJ]ý/¼/X±9jm⪧ګ^Õƒ1À:3à±.öï\Wÿ ý–d9®ÑS>q×Â'çY+剭l±zô¤þWöÆ-Kf^ý KApÝ VÆHZ«bad_q\ÿËhTòÌS>¤lÄöPV7Åê ÚVÿ,é®þˆmP‰çQ&1u¾w#¸ ñÞû'›Ê]ý/ÐÙ 5„S é k‹“Ý’º„ûË”ÊjžÝÂqý/ãÑê‚H£Œ†5zöMû!¸âÛç…ýØü×ÿ‚ LŽà“#ì²g©z8É–˜ÌË%‰Œòfp­ÿÔyÅì„ÙÍ[;Ùòêgp¶ðhd½S|k“m²¾þŠm štv ,AÊNzïSlltõï²/EÁ«ÛÔÿ’%4†cg°6‡ÉŒõŒgÄš%ÀWtŠÐY„áû°Õ¾‚·´—”U¬qÙUŠô¥9º 0Zí+ô#“Ç0v6á8¥C"á&º‚2vjí«KÔÚW—’ g|DÙŠŠB±–ìÓŽÙ²r’Ý=í»h² kWpiФóª¥SWMg·ZÓ¦RòÉL€ËJ˜ÃžrÀÍdnf}g$™º#¡d PSI¨õ¿.ebWÿ‹ ƒÊàG²QκUAÊ˳w’¢@­êÒ…Ê®¬ÉXC!‹ÁÏ^L-ï»DÛ5€¯Ã˜Õ²¥\lhØ)€lÓ¾q`I,Ê®”ÐvZÓS²õC›ïÙiÐ=€VaÄæu?’ÝLo¦(š‰ÃFAªÙ#u‹ û©fAŠ ûÉLuâPiØ'H5{¤N¦"Hb§ ¥É( EÄ>AªÙ#ÕF*+Ó°oe²M/ÐVç I(:ñR&Öú_—c­ÿu© Ù©N<*Ê%{d¸t2•ì‘áÒéÜÕÿb§ÛÃ>cÛM%ñ0€¶:“™7k}Øg­×ì‘bhÅRò`ÅRíê1€b©;m;%¡XªS­¼b©Öì‘âp Åᘒ°âp”ì‘áb š$^ȃ8ptÒ”„ƒrà唉Åûöx¿XÿËÛÔöô8~ãË^OÖÁZíªÿÕöŠ[ä ãô›1ÁOŽé,ÖÿªaÁùk‘–üÛuõ¿8žû8xšV›¿aÿûÎ$ ¥¾<ý:î6.õ5nÂý5 ¬TØèåj®¿ÐtjSgiá ÑB.…Ou¸V¾q¦DÿÎ¥5ou¾Ou¸.£jxÇëp݆ª)Îs§t?UîÆ¸ _sªµkð5ªåY½ou¸8«c•*ÍûIDR½Áí÷@Uì$0mH ‰~S‡w¢ºXê¨â½Íձ®©¾‹Õź:\°«w~¬´é´ÅËvЕêâ!ÈRYfC]P2æûP4­7.8¡au°$oa¾ûEÓ̵"¸€Ô;P_¬·.䆾ðœ7ôî×‚ë­ N|\§*†%ªÞÁZpþÖ"xÜÀ}²zó‚Ó»V+ØÞhz—KÜõæÅUQöºý].q—n½÷€,ÝÛé¼…«µ_´ß½Ê}£Z\nC ÝÛ‚ond·?@ìB÷æ…Û2/8}DÕÕëÖ¨&×V†‚]ØI½A¾ôíýa?JëÜÚîõÅJN˜ÓÏ„Ûyê­š–·FF£¹H•¾aD†¿xpkdA7¶F¶©2‚‚{²À{Õ¾šÿ8j!º¸tZ›W©²WúÃâLXšuÁ™=ÆiZxckd›ª¾Þç†jW.Í=Ç¡“°ÙØ0Õë>jA[,.X©êc·ØõÞÖ [«›sË;#Ī™Íäû¤N·¡uš'u«AÎj'®nÎ-oŒlS¯ œW [£y57ÛSÕž£ nîå×K-&&ÓÆÆÈ&UáÚœÎãëÕÔ¬_ð7öE¶©Ù›ÞA÷:py+A¾_[}È ñ«‘mq‹™%Óáñ'–½Ö^X±¶ën?´ #ëbëBêöæ6½gƒ#Öb¼bÀ¾Ý³é½­/Á ½uá·vUX¢êàX=‚%â ¢‚'Ö#˜íad^l8ùIn§þlkÁGp±â¡´Î™·ïGu¥µ-™¦Ì©ý^†wS_LçbÒEªô%kk×{÷ÙÍiØp—Þ¨ý¾M•¹Ò½H·OÊtžO¬ƒTõ± »±ë­í®,ðíüÇiN¿tPà5Ï3;ÅùBªÜ%íütÅEaéi8ÞO,ÜùŠuªþ¾‹CØÐb¢-¦6Ó¢72µ²FTÍl¦®Œ +1ÏÌðÍ>·RÕ[¸™wó»IŽÏ«…£yµhµ¤*Ý>"³íOc6S“iîb£*õÆÅrd¶ÏÍM³h¦›Xsø Uê†Ö4Ógu½zhm‘F¶Åµ›Þ»Oå?ø`™kíÛgd;.ýà3ËØÅrrQŸô~h-˜FÖÅÖ9[5?½ /¶sêzÅJ#ëâ6Ç6ôÅ#ø")\<>X` ¦x@S¯/ÖϘm´}h³=¥Élïå?°¥do_Ü(Iæ­ûÃJª#KÖŽ]o1ßù8³bMÃg³s.‹Zp4õ©Ò×[¸Ó,ðæ…Ú5VÇ©2n¿äÒŸa¾?<ÅàŒ-8;£¸8¯ŽSÕ[zCåÂýÓy5‰óëpñÊÖTû²u±M•»>"cSùãY²¹ß3mQUûr´ý8UG²:wÞ ±}(zj NnnXbBÕÔf‚r§Ý-G½½Z”Àƒc5m1LÆjn §êÚ»:Ï«…õjÕ¾]6.¶©J¼QŽÌ†äl?`Õ^¶-6©ÝÕy£SKl ¦{Ã>N•: -vmzómÒÇW£»:¯>ˆPôÃÛ­Þº¸öjˆÙI9–ÑÇŸY¬ •ÂbîÏj\zõ<àCkÁÑ]FdF+ÖBéñW,åo<~±êC;#jd^lxùa´‰ðæÂÁzSptWçMB2Û3ëìvÕÛ7Ê’ÙЂàcïê¼Í±¥·íðô÷Îý½Î«ÍC$Ì[›ÿ«àðoå¥ý€d/€yüA6f¤÷Ù]Íèä6>¸„|hÄàïïo~üú!>ø|õæÇ3íþöõo¾ýÛc`ô¨bþ÷¯Ýßiá½ êÑ/>Ë/?_|ùâ·_~ü¹øÍ‹/±ÞS-,ýñWŸ¾x.^ü†ª ½„'¬UAþÛ?ÄWÿî»o_‹/¾ýîë¿Å‚O÷êÍ›üðÃ×â7¯øþÛÿóÕo¾}ý½xþú?^ýí¯~öÇ¿ ¸`ÿ4Æ|çV“øôù¯ÿý·Ÿü«ÿ»ø÷gŸþö“¯^Š_–º×Ÿüò%5ûêÅg¥Y~|öåÇÏïŸýëý‹ç/¿úøùW¹IyDr[ Œš€}ƒùð›÷Ï>–£}+O"¡š^{â†påÊNÓ/~÷Õ¨˜÷ÇÏ Ãóé—âåÝïîrû{õ¿¾XƬ¬í»°Jƒâï^M2] ª½Üê×0À¼ŸÚÀv$\ÀU’ ¾kLÜ GáÍ Ã.t0gâ>¦80üãQx3áÁÀQx3…ƒ¨7ÓQ8B Ξ‘j[Ð_âù—wBAÓ/¾üôùý§_|üYžeϾüêÓÅç/>SôׯŸýöYþ™:ç|ùŒ ¤)£ïBZ{Â?ȼøò«O^üöÅó?+H`¥¶ßŸD#miÕžëï'ÑùL“ŰÕ܈þ1…Z:C‰AP)bŒÓH«F~vÿÕ‹/_BÁ¿Ï?þ?Û pŸÊ€üƒB}8ÙD¯/ (¢-š·ŒNaF¤ùÓ‰5èe¾˜ä!™©{™±s .áŽ@² êÔš ŽƒŸ[Üœº¡Rw'UPj•ãÇ á5*ŸŽÝ Òˆ÷ûùd:H×I­®å“›ãtéØ@âÊÙBÊ­ªµg¿>;™éíž/ï>¿{ywª¦B¯U“‘3ªúÃSµz…Ì|ÙãÔ¬…~¥Eö°3ÝjQÅî 7%¡íN ŠµÐ¯ÄǽÊJÙ¯s4 ÷ÐS=7÷ðÀ4— cµ.å›bpxеp™4?bý^úîÆìޮ߻Žý-Öï­ëR[ëÚ ¿]ZÀ  EAÜié:¢¼q«oxBá› ˆ'ÉBsݽ9±J&_×û7aj=2mÚŸ?{®?¯}¥¿[^ú»…O¬ô×KßG Ë(ž&/—ûÃ+øï-iL"†¿,”4&é{*i¼ü3%õž”4¾Œªã‰zB>|ñ_{cª¦8ÏqœÒýT¹Kà‚|Í©zÔ’ÆÇ¨z_J£êý(i|3xe‘…Å•³¥#Ä4[¤k%ð/i|ª÷¥¤ñÑÁz¨’Æ‹ùDÇDP]n\¼%/Á¤Þ2¹—[ûJ‹¥Ì›³u>“¿ŠàåÖÅûQÒøF"xÜÀ}².7/öÕç+ñ˜ýtÄáÒTs¼Ü¼x?Jßh!>î9>YúbûbgáËÅL½³•©ÄRZå1Ô—›ïGIã ©zÇK_FÕqÕþ^¾¾Üºx?JßFûX!WÇ.ûÃK-®+:8M-ïK?–f"s°Ru¹qq©É$&&“˜Ù8XspNÕ屋}%羈˜0¿²æàŒ*s­mqÑzu¶J®Ø¼®u›ª‹m‹½%LJVæbãâÁJßb°n`\œ=½»ê|ð‰u±q±³ðê¢jh%h.6.öVÉ]Ôí½b™Ë­‹}%uûCGÛÍÅÖÅåƒõŽ£¹Ø¼¸xf=BDÆ\»ØWÒxÑÀ}èP§½zkäø’5Y°‰``käÊ*b‹úb&æûK_—¾y §Å±:HÕåæÅ¾’Æ‹¦àÙr[‹ë U׿],Ä.®¬¶¨Ruƒ¼‹³er—¦½Tí+:8§êrëb_IãEÕ~¶HéÜYò¹÷–4¾ØË?8V 1Á+kΩºAìâ༚Jà9ªöÕœSuyìb_IãEûöléÕ¹‹u˜*wyìâ¡JÏÝáãT]»ØWÒx{½zmá®Ý¹}Iã[ŒÕåiûJoÛ1¯.]ì,i¼½ ?€t·ˆ]œ­’»m3=ÀŠån‘wq¯ŽSuƒØÅÙÒ«‹ª}ºáseÑÁ9U—Ç.ö•É=¿á³TÈn¾`§êòØÅ¾’ÆçÃÒ,WœÙLþÚØÅñ±&c5õF-ÁƒTÝàÌÈÁyµ°…peÍÁ9UpfäÊÊ«‹>Ö1ªÂ-ó.ö­W fý•%çT]›Ó¹ Û…fZ[„[¦]°vxÆêê##çÂÒ«y>±n¼8[yuQ·?´ —/ö•É]Ž]<ðŠ.]ì+i¼¨ÛÚ ׆.ŽÕ#X‚áòÐÅÅëÌöp¹y±¯¤ñ¢ûÐ.V¼iÞž5ëüáxmÞÅBæÊ2b‹úâlq´9U7¸ïâÆ%Çê U7ˆ]×ígËm-N¬ƒT]»ØWÒxQ·Ÿ­¶¨Rõ'R¯¬c·¸b¤êÚØÅqm!&Úbj3-z#gK£Íl¦x홑ãc%6 D.Z‚©ºö@êñy5m1ÈkkΩº6ïâ"øláÕEëUéòØÅC•4^ô‡Ruƒ¼ 9«i:þãk‹tyìâÁJßb°n¼8—~ð™uƒC#ÇOz?´LמH]ÐÛ9u½b¥Ä.ê‹GðEÒÕgFŽÖ#˜‚érób_IãE£é¡Íöt‹û.Žïå?°Õ—4¾Y’Ì[÷‡û’Æ·±Åž>g«ˆÍõÅT ަÞ"U·Œ]” àu%œæcuœªœ©H/•ó\Iã[ŒÖ NŒfÖ‚ïúfÖ­oÓZ‰Çׂ—ßÕ¹³¤ñ¢ÍôÐ+Öõwu×àŒ\qWç¾’Æ‹ ñC›‚—ßÕ¹·¤ñ¢ÕôÐvû—u^ªÁǺü®Î+i|µ?ü¶Ë·^ý÷:3è¡¿Ãq¦þ¯ÓÊÎêÿzÿÁSýßGøó¿§ú¿RÿׂF{—êÿ¢z닦ŠZÓMÁC¶ÅûWã¨<»`P{꾚€aŒÁ»`t„_‰åïí©\,~oÖ1v°ëì Lcânæx0°ƒù#G†ă€ƒ(ÛF_ÎÎòÀ¶Q¸€™X€t–3Pn•;+Q»Uì¬D=°ÀŒ³<˜‘pÀcÔ¶ ȵ'üÛSº˜ÂvÁtäâ΂ƒ¹Z¿žž1G™‘CÊÀàÕ¼1'™'Õ!з¯­˜Pž­±ú#GÎo'€m}R5xO¼u !Ť¸n/B2i I.=x)b>±‡Ûªí¤Øš0&3HêÄk’èÕiaåAœhq½f/ÞhOçNP¨²4c>©êvÔ\ÎÔ™§5ŽÇmHP¶Ã ¨£!fê;µ 'ZÀFÍ2&AfbƧ®ÉŒc'^ÉFÔµ±_…´(O'ÕáT¸s„:;§NTêŽñ©¨˜a§òdÛyì†*ãb·€<Ùq3ÖÝ\Wüмë¨kón,Oû¨£…p*O¥&ü‘¬+$Õñi<ƒ†w‰O¤5ÉÜÉHƒìæÝú‰Ëëꊳý^QiRÔ!Rkò ©®xñfÕœ‡=0NÕ ™åÞ…Ä©y!•¡…Š/dP $$½Î©DO!šr) FOxp”‰¶aPyÀr¾„ê…Ac®x æNÕ éOÂ|'€ê…t&#“¾€’ ;/d¸ƒê…\6ŸNÍ éHÅvÏ…FÂ…ràær@ì”Äê…\:™Œ›ÈÁQA*^Èp¡>xÔúò‹«i·^ì­/ozÇú”&a¼ÅúòÕ/Xyº´¼S³b3/v,ÄÇ=Ç ë`‚æ¢-øTL}©ÅS1õT]»øåSߦê¸)øT=S—û¬÷®˜ú-4»x犩ßÂd“IÌI¬§b꣱ZÑ·\L}×9„÷®˜úö®÷°yçáTFÅ[/¦¾gªDͶbkÃG-h‹ù‚uœªËc¿œbê·«a2VSodÑ|Ðbê·˜W [OÅÔ÷Pu°˜ú®ˆÌ;P û©˜úN/ÿ««Œœ K¯æ]¼cÅÔwlz‹÷°˜úùMï™Öã™÷®SßÞôÞÖà‹,¦~‹±zKð`1õ›L¬G0ÛŸŠ©/Öñ5ëüáƒÅÔweo”Gîy7Š©ïÚËëÅãŽSßålëöw¬˜ú®,ð§bê̇·[LýÚBL´ÅÔfZôFŽq=XL}×=2OÅÔéßo¹˜ú-tà4f3õE]¬ƒe„/]ürŠ©ïJ+Þ(ŽüÚâ`1õ}{ùïÀ`Ý"xñÞSß•þTLùðv‹©ßB_<‚/r°˜ú¾‹džŠ©óp¿Ýbê7Ñ‚ïc-¦¾+Iæ­ûÃG‹©ï:ë½}Àç+¦¾+cÿm;\L}×þðF!a1…=SßEÕ ò.Þûbê·Ð KÚS1õ]T]›wq|^-¬Wo¹˜ú-tàt?àœ?ü8ÅÔwZzÊsß⾋÷¾˜ú¾Œýw`´npjd4³|×§bꜧ˜úâX½÷ÅÔo¢/Áy*¦¾/$³=³Án¿â²Î_N1õó±‹}+ÖƒûÃo»ö?ãßë,‰ý  õúïÊfõ߃ýà©þû#ü‰ùßSý÷©ÿAK¿;õß?ý5rþ¿AecÄz,ú—éQ³+ãc]æ ÔüËh¸¬Ã±ŸÒ& FÚVÔl€)òº;:\0‚ŽpŠÉë…~€/hUS´ÀB zQÖæ:ÿb©øÚ:]äæ>â¢5Þb¢âéÑÑ/ëŒhL̲̓-ÍAßeEΓpßH0wÙºó‰}•°è_*éót‡A6šÖú ^FO–oÔçypß“ ½ X<=ç" „“nKÐÒ× ’¾Vôµ‚¤¯$}­ ékI_+HúZAÒ— Ò#T_×Ùº½C÷I9îV+¶1ÝÉZ­Xè}Õד¶Qó~½ *›ÀÅ/ÃŽ½4MMQΖ¶fO-?È`NåEÌοÈ\.å!UÈVS¼uõuVû´xd;j®ƒ;"5Ô‡@YšÐØøc%]MN®ó ?•uù.„D¹¹¿ÉÆéøMÅ5kž¼룞´úF·ïö moàã§ú£™~—>Ø¢ð¨¾)}£ûFĸ~HÛàÑiLA¡.‹âÕE™›”!‘€Jœô/b“--UМö7}“Óˆ¼LÛú}³ø‰xçmœö7ýKb²wÉÙÓý"rô²ô× M²Ñ–§§>ƹÈry=•þ~l+‹mºëdz,."ú;]äEŒ`—á)¯ÝFŸFW_Bÿ WkMß¿)¤QdW²qjM+•Â¥µ¦ÅË¢_}÷êo¯¾ÿQ|ûãü,èŽÏ¿þéî×ßþùÏwbg»¬ÃÔ¯ÄÿýLˆÿGˆŸ>úÇG?3!ò®÷1àÛe:¹ÝÀ ¥¤÷»"úrWD&—…I°‚ºY„”-W¿¬ö¹"ye’ÍȾgMà ÙçFÙ‚`ÑÇÓ’2ðÎE6Ï´UÅ©ñ6yÞ¸QÖÆI«l͙ۻ"½­j´•ä{fÖŒÈl!›2Û‡ÖícxxM2&”Æõ-Còè@¤Mê Q„dcqo²“ß9-úuc”%˜!X£z´± -Ô‰ cíœïˆÌ@Cõ}|"Ã8S$n2´&h•æ9ÙBB§(/‰Æ'OxmCO7þž ³Û¡;˜ ™ _ø†ÍsÚ¸ÔáDMDkBÖe;1Àö5ù)ё˥ ý ¸”Ø=¢&Ð8€P5ãxƒåfæP8%áUç"$o˜&n‚–fæxsmáe^¨tñ ;\=mè8ÎMDkRCØâ:W¤Ä´Š ’§—!ÁÖeÏMjô¬P¦•,":7¢Û‚qja­ŠØúR¶–tç@hvÃ8µX霉|.þý—ŒÄMœ é«¿~›MsôŸ_¿iÖù«l»ÿýGñüÅWâïoò?~|-ògþ„ÀÆ`py˯¿ùú;0 ~|%î?ÏK=ðæÍkñúû½þNÒ’§bÖ´ìïdG8§²Ïßék"Vô6¯~¿SÕdSs¤.õw&.GôÕ»˜øZ§`ê.ä> Þ…e4g>D4s$²;»àøÓšéš-“T¸1"¥ôGëÒºÓª]êƒY7=õ0w‹é™l µÉôÌ–Á{jzjh7üôÑPZf¶;Ьgñ´œé,ÔÚ ^{eX²‘1¶¶ºïæÕ8*ádSsÿ÷u–©‡ÞcÆpÛúþ?¬³ýo>xÚÿ„?1ÿ{Úÿý÷ŽíÿÿP‚åàý&6Q!äMû·:*¿d¦9Ð=_ȋكxw æü†á§?˜)ùe65i!»Qç÷ÿ­X~]ÑÏx}ùìã—ÐÔX»yýî³_‹{&~÷òÙo~÷ÙÚw6þNâß_}û—¿fâë^‰oþšMÅWº”!*I}‡¡leuȾ”¡´ãðŠÖ% • Íçu“¨3‘HwÖÉÉjÙ᤭ôL±ªR§N¬ë uQÓJí9Ÿº”€¬E%‡ŒlÛùêº ›îp2@¶‹Ë&ƒ…ë”"ê²¥K07é‚là1hTzYë•h–LG]“ÈÞeuæ=4éƒl˜´Ü*$b§î©“>ñ‹,–ËMn<ªKsüì¹`¼!óÆY"]Ž$f$Åœ-+•–´]VgX³ìc:5ÊË) å4Å\¢wªÂ8µÕ9K‹qÎ’j†DT¼wmLp=»F…ØCÅ©®ÎsÄNü b uu9õÎxåÃl^yÚÜÏó°dà/Ý&<~;À·ÍQRO7Ða>”à‘©0ºxH¦ˆÚ \*U(m¤ã¥Ú§Øx¼]k‹ƒ0PEŸS¿É»]Qœ6Ky¾—YÊ¿y+wDqºêªoúß.ŒâàÜX¸u^q=ë~Sw‚-)wÑ¢8?èö¦†YHÈùGž4Öpù;º((3Œû‹Ö[¯˜¿Rï_‘–Ž`,ÆWò*pi|åTTߨöCsãþÙK´G.¾·ûøõŹÎAXîqÕNæWî,Q ¼¨—«¥ ¢÷.85qÇaÒbÂAª†UæRªÖ/ Ü jJ÷õTÍÇêÐáÑd:ªnVîj œ•»ñX½ œ•¿ñ¼z8+Ñ´ã‹/ر{™]?ñɳß<3ßr°ú¥¡èòûÇG±þ¹-Äð¬¦fÿøè§®7ƒ_ìbÚÚY¾,ï Ç õçEp¾aGŸæí2³_üÛgŸþß=YÝÿÒ8ýò/¿zöù¯`«; s#;~.û’%´“mEjGì}ú Éûk=ºv¼\W(¢õµ³«ß£vnõ»ãv~õ»}»beS2jÍêJ߯Êw5˜ ”„~³¨=FíŠuR¡ ­Gi÷¶cÝOó¿×w:=ô7`ðÏìÿä9;ßÿ ýŸGøó¿§ýŸŠóŸ£ýȳ¿jÿG_»ÿ£å•û?‘মÙÿч÷aóÄZoî0Êjmï0ÁÈfÿþÎÔó»¿yrQ/îË$üwŒnýéÕ_^}ÿê æÀ?~xõJ|û&ûºóôýkñÍßÿøí7mP^ÿ ¾ýæõ›¯ÿú*+¤ï8í雯¿ä@ÙÝéÓ߈?¼øxù»—_<»ÿ ÉöûO³a‰­ßˆÏñ?ù÷Ï?_|–¹”¹òÉÇÏû쿟²1Hý'î A`îÍ7Íæ»€’S¶ÀÿWF*ëÙÿMBší~|ý·7âÏ_ÿ×*ñçìûà¯üú‡o¿ÉFV†Ø3対ÿîëþòJüúþ󫘷¹…TýA&©–:²ç”d0IM‰ò¢ïpê”™œw¨ÞÓCm!eípò¬žÁ±F(M¤ ž·{ Ýë‚þ‹SÝ¡é*›1$_!aY%Þ| H´eS·…)†ÙLmì.àdhG©5i8uI³3ê†mꆩn³.P7´JAªéÜ Ô c>­R|ºå&KHcô|v}ÿOÃßÙþŸS<íÿ=Ÿ˜ÿ=íÿ=Üù/üÏ;±ÿ×.åjš¡ Ü9“äùͳ{Ýo :Ý‚¥]{» DOáŠö¯Ðn2Ú ÀL ǘu`¨”q[w^®“°À: ûØBÂ0'y ¶è&S ö0Sâ€OÎI"Ü\—äùËS?ÑX+€†.´¡Ûû¢ŠŠÏ¹´@Oˆƒ´ªÃ¨•‡ÄQ ÇÔß @×a„#1‘™èÜ^FM Gè Ã1Úd‚löv;"µŠÁš-º‰²6ôb Ò^f `8ÀAˆ7jåñÈÝÍF3º¸8£"ýä€n¢ $æ‰ä Š ÑlttþÆE°÷a`¦ 10S †#`#ÌwRŸÉtþÐNç­\©«?—óèî$&àZvÖ”©Çë•YÔ_éÑ ~:ÝØ)¾Þ `Ö´ÔzVQÔ&˜¹É龞–&Í49@æR÷ †yºïoûŠy%²ÌÈ—Ê”§ö1_1qmçOl+ˆÊ]]úÛX 7ù›`âË6zöhOl4Œ µÿÐ`.AJå`¤„Ë·êÅÃÄ“60²ì»«ŠSãs{QŸî­î?ˆ;¤˜\ޏò)ÙÌÜäÄöÄ’hý+ÌEH¶6Îc÷I“ñlÐfÊ#=)c)qŸÚÇŒŒR¨‰!œØÂ€? ÷-GJ˜öZñ]fÙm­ŸÊx*Rñ<±©1‚$Zÿ s’­ü‰mQzáK€©­æßL¹þ‡{ù: |cª;}RO¶"%^¥‚ ü›N£áÕ¾^—VÏg×ýÄVÈRí?T˜‹Ú¼±êÄæÈˆº¡Ò44:—¨³ fæ¸éô“SÖ+{âX{êä©Î‘vk_ÈÔµŒ²C+m~’xUBwý™óN”‹±óSÌo3¸Bjÿ¡Á\‚T¯.Ì0Ol²ˆÂ>Ôœ9®‹dâS©¦Ô¨r ;<Øv)Tíoù®òÔ$³œ9‡SÝRž-v$™.êÚß±dqѲ© ;^ô‰­™"O’¯CÏR€ÁN¤8Ž´¯1UèòW7Ò®m¬8 “¡a·ˆSÕyy•bûfŒSäa7Ɖuf=7¡í ’˜š ™Üô0Ô_Šâ×Kžšªu¹ÊCUªe¼c÷ð᩹òµÇؤkìÔ\ùÙ·‡ iéÛ“uZ-1`'NÕ•_è·€™˜?œP\ùá²85W~λ}£`WGAì…æÊã ëÞ·‡¡þÂýŠ;9~øðÔ¼yTC!òŒ‡ÛÊCaC9ˆ¯¢ì><5‡¾Àµë§æÐ׿sH“~=¤Su臀)kØf˜•%êÒ©9ô3öí`Ôd0‡Ù¨žÌSuèúí`&æç‡~˜Þ.Y:U‡~˜ÞN3AšKÔÙQ°SAšKÔ3Á`–³’XúùÙàñ2<¥²åYîîž´û2<û%»3ßË“qzG†g3^šûÐÌx{YŠ'_ÛYÖí;g9·KÔ7zõio  ¢´ñNnN…Mk…¿1ªD?Í=Tôq÷æƨÿ8ëþFþxaS©“éÎÖZ>Ó&¦k2é_Èô×çúëíþfµÉxÀ*ëÆýGM #û^Žûu¦ÿôå¼ÿˆñ“&«ÙÃ_ý©|½dK)W/m•W\*ò–/m5”aðóG?õíØpÒ¡${ÌîvÅfœ+Ok!${¼´¥ÝÏý£µ+Y®${èzìÐãØ) ‘ï?;nW?[’=ˆLsJüûT”Ÿ?~Z&¶Köø¾Ú5³8Jö(à†Â½±ž“= ‹‡ñW{b•î¨@./ƒ3•Å57gi(T—w\éÁÕÏfp®o6üÔXÏ;å»üœŸÇ<îÁ…Ú X7’§Â;Ìl‰+‰2=3¸T‰ýå§ebuË»jÏô³'¡U/ž?/²=xÝÚu‰7S¹Ó£«ŒÇàúI¦»Yd,Qñt{Àƒü½¾3ê¡¿!åÙóÿ°Iùtÿó[úó¿§üŸŠüŸvï¯Á=òR47ŒWÙ{»ÊÃàhMËaî$ïyÆó;Íç2vn’PK£@¤XÕ— ̆‹t÷ð@wL*(仉:àÀ(èé0*bÆ L@0vðà1‚Ï”èúÄn`P¿¼çÂeèw öNÒ•·ù9¸¬Ê]ÊŠ£G™_˜WúÉ«f–jn”œrµÖW–ÙÄYÚYüÍFU¨hø`7¬6O7£ü¬‰hMÊxµ¢*´O#ë"W| p/óRUQ÷Ô'nFÕºÔRÝ$Œn§É5—Ƶpõê2Ú¥ þ¶È'|œ.H¥ÉÔ2Nؤádç¸l_»»<þqN¨MÚ ÁWm4UM9Ÿ‡ÝÐ^êQÂX_Âu£ôÊÜ:Þ= µ£îñËÑ*ph3ÃC·ÛvÕ¸”ìF7Ä£—VÇ1v nZ€aF01´ÚOg»ôÛÎÐj›[½¸w¿í­.Öeê~»0°JÕ2k!Ù [“Þ˜Õ7%Œé›^j€|k¾þfÐúwpPPaÅj/N¿SûS“1âõ³ürõnáùöû?ÿê?Æa@ÒKËaÀôt‰ÀÚ7&ýöZ6—×!FgÓWŽŸ.³lòÉR’09늕“Iñª–u\ê tàr£Y,L”§úÛm¬)Ý••Há¡-U´’ÆKg öô7Ô&Ck²fEèbPåîj wtU|$5®Ô™ ¾vëÞö±Ðr$íœTÉþ±Šnã¤J2­OK–.öˆ‚t÷a‰O5í›ÜÞ§˜ó!ÒÖ_U6„Ó¢=²£cˆU;@­Ãè©PŸ}x {ð8ÇŒa3ÕŠ¨ù]ÚvNAùÍ˽VDw[%º³"TØcEÔIÖÙÝÓ{eE\¿ø¯^„ëû_ŸÖ÷›¯ïo;øûÆÿõCˆ=wþ7Èyüßùžâÿð'æOñÿŠø?%;—è–r²{€†Iç>+Qú‰cjü–0ën<@}w2|ð—fý5¿ƒŠ¹8†éx`±€Ó0{Ø 5?  c7hØ Žú\¢Ž Ò ÒN f¸À‚$ÎDò¨ ] `.’IÇÌGa˜ ÄA9˜+†ƒ’8\`˜ Ò>óÉ4ŸU§óÂÃÁaœi–ƒi.’•ê²Dåc$, ãÒxå#aCQi•î‚]y¢¿]'7/Íž¼–:L-v¸yØ­Þ*ݧs'úÇ FO¤Ö¸ Rã~•Ô6 ºßŽ@Zê¤6‘‡+qjý‡Ëpê«¥²V[|:©iÚá2HM êˆ/JÖHm%WBê$s 朖$û¤%_’ö#òÔ$ófÄ’´_DÝâ¼¹hì%ë"y–4ÕœÆþBœ$ó¤…,–æòHKýAZ’‚%wҒν ’XÀäBœfÛ!HKR°¤©@ZÒ”G Ý`s¨ØçìÇ3 nÊTòŒ yΈlfðC~ ‰>CdÍß…Ä9S|¹îMœÐU¯^uˆ¶Ø`«^ÙY$ê`žq,w8çÚîÃàŒs½ƒ3®íAyœ æAYºÀBŒä b}lâ˜,„ºŽIâ‚~9& ¡®]ò\¼ðØŒ^˜–‡q®\Ž)¥… ë> f>ŠÁ™¸ñÁaœ+†ƒ¢| À[É\yÚ9¸GŒþ÷ü« Ò,–þéÂ=„0”A¹3IêöPÞ¸õ7,X#@¥9¿1õ2ã7nÈL¡×æ‡ÞLh«/e¸Kõ†¢sMÆ$Õ—*Ý¥zÓè]%1÷Vž&/]ëoÊíV#Äk“Ò¿‡Ú#ë^çšœíìh4¹S‹9¶üå–ªsG£GàÎîÁ9=wæhtîÌÑè¸3G£{pgŽF÷àÎîÀ;=wæhtîÌÑè¸3G£{pgŽFÀ9݃;s4zîÌÑèÜ™£Ñ=¸sG£;pçŽFÀ9݃»ÁÑèîŠü×wÆÜ,™dåp\ÏÿñR/ÿu<åÿ<Ÿ˜ÿ=åÿüSäÿô§oCtϾµ‡¬a¯°ôêºÿ0>ÿ«¢õxq|ò›;ÈïÝ{ú6;ÃFÇ„KAY¼rZÏy5m«N.¨„7ZÁ-¸Š ÌúòÝ㌃¬Š"|8“ ÑÔÞÆÓ·¾€#Ó*BRµ¾‹q Œ‘nƒ‰¡ÃÀkàùLÉïÖW–ßÇŠAæ]T/M÷ÁF¼#-Ôª­«R‡A2L‚3ÖÒ‡SJEèÌñÀE¼ï;? ÈAPNm #Ùá”0¿GɃ3Þç“Ý:H^î=„8€’ÏÈ«2à Àjcút•èóÚã)6¡lfœ@Ž*m‘`Œ2k D a6x‚÷,€®½“™ûLëIñlzRrc•or` V €ËÙRÄ{üS²r‹‰¡ÉA:C¯ár\¬Â'Æ(S܇0pÑB ÃoP¦ƒ×KýFR…ñ’çL‹‚qàÆ¹<›¶4R‘DÀ< >*”èÔ@Ðx§ît'‰*‚"Z)ëc! Y¢·4’w ÊÒ0fsÑaí³<¬qC½oè<ÚY¡8\¢ò¸Xµµ6úN'f‡…œ®Ì ‰“Be¶!H¾óX¤‹Ô\üÿþñ—Ï?}þ[±üº¢ŸñúòÙÇ/¡%ÄQkðPÜ¿øÝg¿ÿöLüîå³ßüî³µïlü]Ö‹û2 ÿsþôê/¯¾õn}Ã?~xõJ|ûFñÇ¿ÿ(¾-¾ùû¿ý¦ ÊëÄ·ß¼~óõ__ý釯¿£ÔñÍ×ß‹?rZÁÝéÓ߈?¼øxù»—_<»ÿ ÉöûO_~Ei¿/žãòïŸ$¾ø,s)s哟ÿöÙ?©_!RÿùêÛ¿üõGHcxóÍ__ýí•€3 'ý+ñ¿2RŸ¿øì“âÇ×”âðã뿽þú‡Wo~þáõßð×?~ý÷߼ú6÷±§ù•xõýw_ÿð—Wâ×÷Ÿ_ż=w§xã¼áŒVÃFAÃÉBv}=ß »&¯EÑ1û¶åV8-CÒ|©ŠÎv>(QºxÅgúAËÈÁtT¢›¢0}C˜”³š4)Óxt+‘ - ï`Udé"ÿîcr’é e $äuZ:ËK¾1frSZxš¤*m ë;¹ñÉ;=.±µJ]Ÿh›4]ž½µtçvÒë]*æ°Rh0Ÿ8À‡á3XµU¿[†¤N÷¡ÃÉ)´]Ac»d)ý^©äÜNªA?ÝפlÒ豊Z†ä#— T«ÇI/à”©«ÜG[«RÎ*zíGÆR0‡yºWÝYž’§´-O#)¨y",Ožì¾,Oz&Oçe¼Ö~y ÎúÑ×pšÃ<Ý«*äÙt‘11uÙ rGq²NÚ+6 G2¾o«Z? Œa .&à膖Åy·Æñu˜-†ã`CãÙ2Ãi © 9ñ‰ÊPŸüNj…ã• ÙIÉ&¾g>¡t §*ä#¬tû«OèɬBZ©VÃlÄq[©[=0šÁµbÛ€#®Ç“j,3H£yW‹x2uÔ,SÎiº¥ÜñýäI«dýDGL@?ÙÖäŒVѶáduî`Mc¥Í Òùy§«BÌ~\åJ±€ìÿÐmF -]Ã8^e¶ ¤&H:DíÖ¨k˜Œù$LZï@2w¬-cꪌg>¹`ÇR@kËê!Ž1N• ™ñ(O%ËŽºn];­UÇNÐØÍùt~EhUhqW‹ÂæþÎp}¿~•:¯ŸL§ÇóÌó6¯Á8!ù´¢3[!Hˆ(aEÜ«ð“‹R0Æ©“qX9¹¬a^9ÇÊcƒOpX·èÃjúÕ|X\ÍWô“™È8­( ãZ³0L§ÇgóîNq ‰V” )®JÁ¤*ãUžÊßk æo³¥Qg;ÔAÓ…^Ó G4í>cGëŒZÃI/q¬/èKóÎU©×pZáS«±K«î-Öa<[†œ:Hµrܧ~¯JÁ’~jõG´ï*u‹:‡LÖÀÿÏÞ¿5Ýrgb0¯ß_Ñ—~ìu>8BŽÀ€[là@Iw’°I`–½+3+³ª«{­ª~÷Þ íÑÍpáí^¹ê•ùä¡2sÙ¼c}»ãŠ_Z"ÇIfÖ½+2ÓÞ¥ôÇõižó¸ë° péË*}÷Kéû€’Ü&­§¥:þ<&KìGÍyšÓá´HÝŠM÷Küôà´xymÄtÒC[ªûôòq3¹.4ç~Gsö¯Nðõ:f×­“ˆVË‘üŠ3ÓižkNép~²#Æ á’ :¬rÒ•ŸìqL4BïV(23“¿¡Z¯×œùˆ <^Ãt„Xo­S;T#.иàÁ:…ŽÇ6'…¯®í»KJ2ôÑRt'Jϱo; dmx±ï“1]ɧ ¢u´6ô‰Ÿž#±ÐÉñö­{7è»ü›3l‡æšÒƒs›³Ú–ºdßZñŽÇÁ‡QÏù0ö£¿à¹m„ÇGOVz´â(ÅŽÇO>ŒýŽCºV~ª^§HœEëôV<öâþàñ3Vü,ˆÏ\gûÑŸ9Y§>ÀÞ‘ÝRý™×ëtMéý¶ ¯ÔåC7¥óCùÐuMhî4™M7™È% ÛhÀ6ÅÎ/ÛmÒsÝíQPEªóÈvl<ÐÐGÝíK8êŽOº=˜ËÏÇÚ8ÔªŠiA–u‚þù8b‡§Ô>Aý†½‡$\­Ö½ç4$Xœ®d9ö¡¿ÓWÍ‘§ ì·øãEÒ€…9ö[ÌñÒÒ€E0u\>Œ@)½´4`–Û»¸ à@Àµ oî·xóEҀş×ìâÂÀÙû-Î~iiÀ¢»î®A ªW…Q›g#8à :£1­Q]¸ÜFNnNÑ›‹ÈiÀ ȯ¶ñzf˜Âvw v û-ÁðÒÒ€ÙiVmwwA@Ÿ)½´4`² ]u·¤+±r½ˆA€~`ûúéâÀHÛMFâ4àf’É:$ô…T{‘4àj›Î…y‹æj’,®Ë›»ÀiÀâaªîާ»p Ðd"i©í––z‘4àêÝ0ìžTËkÐ8‘tË~K·¼´4à“‚ÛWÜ‹¤ 'n79Ñ6™8œ…ó® ¤Àvó0qpó4ÞäN> ”}M H0ïÂv f¼´4à“D:àz ¬O€k_ceN>¦'Ûxkç“H{2…Ã'ÒaÚn&N‰´Ý”Hî!'.²²ËÃ6n7·‘ӀϬ¼¸ œ|†8ûÄá4à3ByB _N>+–3'^Š4I>¦E‘&iÀ'ŒtžÂ%À4àRÝתoÚyª‹gӀ϶ϢDò#NÜn®¤Ÿtã¢@ ‹e_³X$ ødp{fYYÒ€ÇG¯ÙéaGÀ »°ÝÛ…Ÿµ •¾øÔÅs– Z™‹Oº£³þ]´bosËhY*åo¯¬h… ÕZLÙÌ‘~Rý=WOL{ò2¶¶ê^¯OZE+Nøá'Fµ'§¾ZÝëCÝ*§8[€ŸHi¬¨âËXI«{½>©>‹'ÕœzãtÎR™ÊvÔëëõI”'1ŸTã¶@§èª/qgW^™»¡ùIu,áïŸT;¿SŠý|åwë“ ãßÐ ñÃQôœÑ¹³“³Q}R==¡ú¤Úk°z¦ºw¶„‘z}Ÿ8~Â\ËO*Ô¤½ ½Ë*ûé÷r·úÅáÓ½R”×ùû=Ó˾š"b{£VÞ¤‡ü}{õŠJå•|ìå*ÌjŠl“¼¤á•VÇ WÒ]=Ô©ÈÆñ÷l¬A|Ú—áaådßø(uÔðׯ¼~XXÛh¸É;üþ‘ÇaþÚySb7‘[=× Ó—%¶y`Iá{]~_²èã+üý~àr ܪ–ñ¯È£2Õ–͉’ñx8ÇrD ‹eï_†‡õ””ýÏQÆß_Ÿˆº:“öáØÀä$ê<¼RÏÊo”¶Õ3>¤ï?îýgÿPIè:vÿ£õþ{†¯œÔ—qÇjB‡_L!@+neÓå÷á 7gµŸfe_;«|O{µ€½r¯žÕõ^;q9Æ÷¼WçYù¿ø^½û¹:s`xõ¬Ì_ žgßqV÷9ðâ÷.-Ò{>W x>WùÏÕ_Ã^fUðóûÕ|¯.Þxï³z5´x …ÿ’ýt®ô«±Åiñ—Ø«aV[CˆŸÿ¶^Òþrûä³íïÞþÓG§l¨¿paä/©.îÿõÿ“J»Ç÷¸02•€…ʳ•♜ëkÿ_×ïqaäytµîì¹V¹þ,¾z"e›q§I¹®0rì%¹®0r%w~ N§Z+î«ÛÓš\LÈ™EWŒw$÷²}þ_ÿþ“ÿÿ?¼=dÓýO­¾üç/¿zû馕 Ï£Ï>UG'¾gNïµtÉêÏÄ÷8ßPC)CI§!Púiõ¼â{l#‹Ÿ~ü¤èw½ünR½ŠP+)èî*¾Æñµ`gà{QÆç3Ö¯ÚÔ› ôÆið½jÃB`ÒjLTuPÅSz(Æ´ð=ö58¨^T/ƒÁõn%i•УUۯׯ^Î…§ÞC@}¿^?¾z;&­ª‘ž•÷*½¶3zn\¿ëý¨—bÛ¨ÚHô‚¼ç¼®ûq±o|¡µÍòÁøhC•FùH/ ½ú»sú÷LÛúk×ó¨I»Õhëܯ ;MÚ,ü®zVáÅ…kþã+ží½Æ±‡÷¼ìoåSó&å>­×3Û¯µéÑ~VíjMÛzÊzÉÐÎ[½8‰uKñ2ÑÞŸ”v>øZd¿Wó­ÎÅvÛ =Ì×¶ý¨ã»–õÂbUéq|NèÕy\Ÿóšá}%7öÃø¿Ç³¼ÞöØ_ìï‘^’õ«Rêšê%¿ŽK®×¯^á»âÓ½_Ðkô®å$_¿»àç#½*¯.äøÞï[½:wŇu©ã®øþø»ùžwõšØ9ÝÞ»æg÷x?ŽãËùþ0>/ûqÚ·=ßäÕ(w÷þüÖ«bWòôøž•÷Æs~Ø/òêÄÇñyáƒQ>7Œ|ЮÖðA|xŽŽë—øôþñ½ºrü0>vR_ȗú„Çú|ïõLhú|ÔÓÇ÷šþõïñ='ïzë°~õÂÑ•¼?ÎWöã„ÃŽï=ÖçÇñ%Y—í=~ MŸ8ñ0¾Æs‡ôbÛQïÆÛ~Œ8öøÞ(¯¿ÛðsñÕvžï_ºyÂÿþ}ÿƺý°û¥`¹ÿ‡úÅöŸý?>ü¿íüï?ûüÑÿCîÑíPŒÛY,,®mð˜Ö ugÅp™À=<ÑUÑQ­{“ƒžT×–ÞP²²PÀ(åË€€ Ó ãÝàÆ®¥òî*aö¢ÊnVª>tk¢±˜—- (o¬8v[¨Òo5Uc†®X%[Ík˜vk,V§´7ê-éìi¿ˆÙgÊ^„{Žê,«|yéïj¡º¢2ÿem Š°ÊLª¨öŒ0KÕN™¼.¥YUe!³ª DtÙ…L¿ÍŒ@ìFà|¶TÂÖ'ª¶_qVQ8tkPv’³…–@ÀMQøÒ`³§«%&$ÅL­žWYïFUX©ŽÊ”ÚmUœµïÝ\Ö–Ò¨¢)”¡ÌêùúnËÀµ¼(ÿ‹ #ÏÖ oe£vŽŽsÑùH „Y˜FŒÅèm#ËfÖ8¢q"$Ö©LIéÆQ [“’ž•$î¦àœË”G› %—Û‚ggű»]ðÆFä;­rmI“¦Í3z¡ê£ñ¼ T`Þé4«mS°†äJÔÁÆ›<ãÄ^"Åb›jâÄDkP$Û¬@¸ë¦PÄ—¢«§+C¶V6“ˆDªœˆŠ%A„â¹l‹ïSª–Nc.ò´ïƒë¶QYh ³It>^]D`e‚±¦5G“Ìä,ô©åš”®±F5¶ušõÆ:(W•©µ±Í<‚˜gdlG@iG½wнN§JÛý†n,Ìci| a€@FÛpU¬ÛršB‚¡‚ïq½?X-æhÝR€®(OYùg¨,m´ oðz€Î >Ñ¿¿úÊÒÛÃâË?n_ÿðÍöoøú»ßóï¯]€>oÐW©‹Þ~ƒ^žö‰þ™—¥šÊªn'Šc zTÁ·–Œ2y|iãýð%}xéüù½×T– AxPmu•jº0Ï>©š×<*º«: 4+]O³ÂÛ· \Rèj±‰ ‘îUÉsb) ÃðÚîè ¼†Ø»Â*ü¡¥Æ¡Ž5áø0ÈYèáÃ0õp=ddaæëq1ˆv´WÑ­¦0(/ëy5ϸ>”ù«+xk);¾Æf[â«F`ïøñG5©´ÂQÝ.t<±² §sÑl“5>5©ß:œSè9êÎönä·X96õ8ßäÄ+ï„X!p’p{Ç’wq?ñÁÍEÜN‹¸ÈÝ. ŒtwNgaIº^¬Ávó,œäACuk»pî"‘¶5‰tbåýæ.œ$Òvs ¡í ÖñD`¥^ØOzañ0ôÂöú]°Ââ.œXy»)ÖOBu»'þBUJÔÅßôr•’+뽫\2äh\W)á§ 7ÛáãðÊ"%µP”»ÈœÍO¤GÊîø¤UÑ­’‡;ªOZ! îrÅOÚk'E„PûÝx"ŽOd¬YŒ˜~Dìzâ'݆j'ýw¤ì@7Lž@GÄ–?i#Òe‡‹$U|“¥¥ÊðJ"°ö¸6ò¾Ÿ¤€B¿¡22(€`ÝËðÐ7â8L¶%éV@#ŽÄ³´b^á)¦7ª[ÉãC . N†Ýü“ x8ùý$òá‹ò ¿_•~ü!É÷¯´!Æ®ÊÌñ!|ßûÇ Ì¿WÒºÄ_ø¾ž£Kb»Ü;¾Ç÷õäF<“sKWØè¾“ûë_…¿t÷õä¶Þ¹(“Ø»«ngr©]Ä“Ûz'ré¬Äÿü÷sýûþõú7€¥çÿ:k­úÏü߿пíüï?óÿ‡ÈÿíS”Œl»b–em€áÒ¤ß>¶Ç4-x=¡m«<•½ÌZ«I¶]ŸyZd€%w€¯u3£WùF~·Æ‘h²Ç)”)¥U/Ð[WxÈÂë]q–®Ç=+p•·‘ê Âµ&LaÆöaÏô ƒ $Ñš÷ë§‚-°HMhcɵœÂÐlì,ç±O3äÑ€¡XJa.ÖÂ,]/vÛè|´èÐå‡)Ú¨Yž—ôíF²9âîùyq >ø0™·©‹h3™çÁj"CYæ jS+¼+‹ž&§°DÝ3¹ÛƘ XÊ!;e¦#PÝ6Zø=ÈÛKÐr öÅ«ÙR7‚2`¸&Y¦žåsNLNÌ#å"¥Ðµá”Ux®¡[ãì,ض!a3c¸ÜXö $¸Y°6H]M9áq”Ë\ÎgžæÿÊÐ5VY9[(ðfO>%Ú|Vð=ûF¥"å ¦8Ùîß‚â#Y‡üIiÜÞ¦¼8‚ò·’§ø²”ÆmôŒ€ãØ7ÚÖݳEïÜl}Û…X„0NÁo臭ÊÄÐq¢ŽÄªˆ6b@çfIÔ2…­L¡hœ‚qÚá©ÒYÏRW¥‡ ÞõÔ3VËZZOrZ«Ù"†¶&ï)å5P>·y¦ÚdàVL¨ú±N:Mêå/ËÄB@EÊÆO*S¥ÿ§É³½L4Öh¼Õ£ŠfÊDÀ§2±@àÄÂA; E˜d'‹ØËÄ ý°2R˜\æ\—‰:j)p¥c¦eMa‰½Lô1šHHó†!¯} Ø.Áãj¯%’;?i½LL^»L¡#iK3Û…^&Zc”§V xìŒ;™dQ&‚bÁ€@ÌVùŠ<áåˆr¼g©‡8Ö©ˆÂ8GçjT-ÎŽsqŠi¨P–¦òELã.¼y'Þ¼ÔR’Ô3íÜC4]u‹¤eQB˜U¨‹÷¨3 ãO-…é TY¾Þ ˜L½[å¢ý4ë×¼Ê⻺ˆÁ‹ £ö„@¶³ĸÁ;*wŸœž]ïéÁ¶‹‘Ö<$€k z¾ ?C6¾S Zƒâ)+ü&×OñôÆlüH´(„1××E0.Á-wCâEºÑ¨ºTοG".a¨O,+÷Q*Ú}¤ –SƒÇ¯ÆÓñ (æ$çúÇ(¢ñ6TÉïÅ”†bìPEI ,{Ž\AëÔ(Ç÷s û&6F+!c>q§)1Â,ÁÇ…¤oÓù°«·ÇxÞS Š.ˆ*ÄsO‹%ëè(ТãOÕÇÉ”E­¨ü&š)¹”úo;ú¶ Š–'ùTÞ7º<®(ƆHª<É?&Žï¦h£Š˜%ùZ¾mË–èHÚ—OMrÑ÷Ä  hCSHÅp©Äs‚be™¿í‰ã£²qj7RD³ÁÅ‚N&¦û6]z P@°)8¸æp¥²¡Ô¨LWãMÃr°õ±âtïL4Œ€Ð«t¯ßvôíz§+D4\éÄ•ý6(ë‹!ï™l¨í»€xÙPƒ«æ3Æ ÄhDŠAñC~¥ê´qžŽ8a)x² Íea©,ª¡UËYÑ>F+ºXÑ¢]X„.{Ú`E‹À·måµêŒ(¼¦Ñ(,‹œ ·T-X{â5eëã/ÊãÊkÖ¨ÊkÆôßf^³™x ù¿ ³ÌkäIq¾(šž8óZí¢|²•¸/«f™×Hx^S¹'μf-ñš¡k¶ÀȦFÝ#Û¨{qQ÷Ú~ÆÂ-ôdts8°IM³×n‹ÓŠ‚~ô7ösj áÝÿËÂâ*ëï·O¯¼!\/;òeYJœk´Ÿ=©áMÙ{_åCY–cŒü¤*¸Fë?© §§Þ^¯OT}9t!OR}c¨Žzàˆ<á×=ûή¾ó"w+·^û·†Wêàuz“¿xxØÉ}Xƒ™í/Ïò÷ûU“W”}u~9üUÖ.æŠïb|…VF«7Ú±>=ô½<þþaeáî°Ž/ãÃ:þôÆåöýtñJýþû·þÜ|½2ËåÝ[—ÿ³ùú£ßx§æëÚu“úØó/B"§™¸Ľ/ 8xMô®Æ8¾q ð>fu§ùúÕ¬vhWtœ•O1&Èÿ8«Ã#…÷1«;Í×Wf5Žù<ÆqÞbVwš¯¯pàgõÁ9ðVóõš;ôÿµæë¹›Õ52ð<«[Í׳ú³z÷½:sà­æëWxû\oìï|®N{u«ùúAZ|ù×£¯Î³º-®8ð¯`¯Nx¯ùz-E:4_¿©¯.ÞxG}uÞ«Wc‹/ÿz°ÅyVw°Åq¯~ü«Ù«3ÞÁG}uÍó½ºxã½ïÕl±Â xžÕ=lq– {uæÀ[ØâBÞ×WãB ßÁ+Zø/ÙO³2w°Å• ükØ«ÿÒuuþßòïû76|è߀yXÿIGï?ÕŠñÿYÿégø·ÿýgý§ÿ!ê?mtŸ%©±AaÅ5zo\гÒxϹÞiWÙR!b}@Àæ<ëº îÊ‹#dj $$9 ¸:¨dà æ¡8íᎠÀ¼Ñ缬A™€©W3­Š@ÀÄd'õð¾uATX]ÚôAJ! £vÓDYH§¥ÚGª»“˲LnÕƒgãj+eÊxW1æ¤<ÔŠ“Òx«»ncV&að^K_öEg;!€áºÉU0e¢ ­ÉpõÖCÅY`¼^wA'e1‘Å”ÍÃ)D3­÷²i#kT –•&AÏÂB T1•m4ÞkÌG‚;wøgÅ6ídÇ6,ö+¬ˆ‹è‹S^@繈QÊ{ä9Û3Av!yKÅ“àá\žvÝtÞYÊÅæ« `Y­ æDûÆÃuJ”,&eÜ(=e¤, k+¦Xä@B…Âl †9ѾÉxŸäA„ŽB…€ŠjV¢oÛ#"MS¥—Rªf…ƒð>>3’µù {¨Ò²»7¹`Ù6+» ¦¬•ÅÈp¦HÙÌúAoÆÉ"Fo‚£RTx¥Û½‰6]ߦ”soœòP·ÅA9®YA¹Ía嚉îÊö'iºdÏ Êm&¶³P$¡†ïÙä=NÁ{3«¶‚µ*@ý'‹aC¦]ðfZïe3̉.ÛPÕ°ÿCYŒy/äÍ*Ù…¬¥ G¸÷Œs 5cñ-#ˆ:QCr¸=æà/FÏu£5"T•…k“ÀÁ*h$ AÑÏ4Nôe -¾³È‰*M«î`„z˜à"4K(ðÃRBS^NŠ„#Ü,ó>À› ²P¬¿°MYƒò¿ÈeL³R›²ÚePæå‡±ÐÓV›m21Bå øŠ& âyVÚp³YX¹è¡Œ¯eí¡H PÂNRO 8%‹XŒ˜’ÆÊrÑÙ)Fr̉¥Y¼þè‹v†{@À$3AÓÎÞb"”ƒŒ(ƒ‹¨ñÄsŒq÷jÿ`‹ÊµhYê¾ðœ€NÕ‚UÁ&Ê;.ª-NGÐ81ZE©u9À…T àÌT&:æÄh¬V¸æ)[‹ Q ˬþV¸¨S°NÌSµØI£{L µh­'–sMir6ÓÓ蘡ÿ4ŠP&Vyª›§Sð 'µbQ"RÕÚvSŒä;‹Ec]ÉP5$<#ãí’K̉î—ib@UûÁ¡˜-¢·ruÀ[Ÿ@sÍ¢§®yÏ 4í\PÈ«IÙЫ|ÆH¾Ã‰ ªö–]HÑQ©¹¯3¡ U— ‚‹…mŒš ³2Ÿ›rœ!ŽøÒÄHÞÜ¥ùÔN£V ød¨Iº)«8%ÀÚzgkÕ²/1=„)J JÎÔJõxÀ< h=h9 ÁA¹àĘ”£Tx;…º¡³ REs±¨DªÖš äÆ`Ûh(õàÊB%™]Œ3N NXÊg$:Žº¬gí¦g!°L PW²6¦w‰.2@Í‹)ÐF ˆ¨ï¨ömáÌY¹×-4N,ÆwFÍ ð€¥”ÔL3…$Û¨3ÂÊbõ€›mÅ)È YÖ@C]Q¾«¬¨î«Ë3VŽŒ¡Â©ƒ,ŠÊér3Ë56œXNX®&E‰ïŽÙ<'`ä,@ECD9S©¨bNí…ØdbÊXÁõEe« ü޳mŒL´PÝôB0”ýmÔü,D/gAkOuÔ @¦íÐTôò9¦áN2VE+*1à” yÆ1Êœgœ ÔJÅh‹Ë3NŒcÑýOVQ9¶`æ¦ol2±œ¡L%öŠ|פ烛 5NLÕ¡ŒÊ4?‡yIËY€ Ü7 ¯@yöägÛ˜ší\0ÛBɪXͽf"-Y9 ¹@#‡†§NT3­è¥YµÖ-u21ÛN,¦RÆÚzE³MAVj2±HRZ|“3šAMGÀ2у V?åq­q:‚&³‚êÍ€2[Ý±ÄØô,¤f;‡“" ´ª…çìœ@F‚ZÏÃd‚Þ•üâä¦#µ° žU.A=# e‰ÀƶEÍv¦)ì<…mq VD-â΋¸­-bfNämÜy·µmÌ^‘icFÚÖ)‡&Ò•7fåm•s³é0m|˜¶µÃ”™ù8ï|œ·µãœ;Ï6 ”ʶ$P´R²$ÒviÛ’HÓªY,$T·Ðjß.U´` XßX¬oKb]++k@ŠecŲ-)¬|Ä" UÛΪm[RmµøYï¨\wV®Û’rÕ*´5@õ¾³zß–Ô»VQDŒƶ0´j^‚8;Cœm â`Áy–H²6YÛÈÒca˜·1ÌÛ–`žîb,4wšÛÐÔca¨»1ÔÝ– ®Ö lï ¶·%°­u“‰÷w†ûÛÜ׺óâ Á±³Á±-Z7™H&ÏÎ&϶dòhÝÉD4º66º¶%£KsŒec³oc³o[2û´n^2<76<·%ÃSsŒegÓwcÓw[2}5ÇXv6¾w6¾·%ã[›&Éü§Ê[téwÁü×caÄΈmÉ¡MãDrlìÙ–\ šc,;;a6vÂlKNmZÜ™Ü@;»¶%76LDGÔÎŽ¨mÉ¥M“‰ä ÛÙ¶‘+lº ¹;èÇfgܶäŒÓcawàÆîÀmɨ%ÆÂÉ’Û’CRÛæÅ!—èÎ.ÑmÉ%ªmól“Svc§ì¶ä”Õca·ðÆnámÉ-¬mÓÎä˜ÞÙ1½-9¦µí¼8èßÙ5¾-¹Æ5ÇX6vÎïìœß–œóÚ6Ï6…vlKá-1Pl Ø–Zb,"Ù9D²-…H´ÄX8H³qf[ Òh‰±p˜hç0Ѷ&Ò®yq(Pµq j[ Ti×lg •í*Û–Bešc,;ëvÖmKÁ:í'R¸pãpá¶.Ôcá€åÎËm)`©9ƲsÈtãé¶2Õ®ÙδÝ8h»-mµÄX8l¼qØx[ k‰±pàzçÀõ¶¸ÖcÙ8t¾qè|[ kßlg Þo¼ß–‚÷šc,§lœ>°-¥hޱlœÀ°sö”À }Ë€ ŠS(¶¥ í›v¦$Ž“8¶¥$í'RÉÎi$ÛR‰öÍv¦D–Y¶¥DÍ1–SivN¥Ù–Ri4ÇXvNæÙ8™g[JæÑcÙ8hçt¢m)H‡&)¡i焦m)¡IsŒe甪Sª¶¥”*Í1–“ºvNêÚ–’ºtèp"¦•mœV¶-¥•iޱlœØ¶sbÛ¶”ئ9ƲsjÝÆ©uÛRjM;Sr߯É}ÛRrŸîb,”^¸szá¶”^¨%ÆÂ Ž'8nK ŽZb,œb¹sŠå¶”b©%ÆÂIž'ynKIžšc,ð7L3Ý8Ít[J3Õ±Å)ÑuçD×m)ÑUsŒeçTÛSm·¥T[-1NöÝ8Ùw[JöÕcátãÓ·¥tc;Ûž7NxÞ–žuc¡”ëS®·…”ëß ì8ÒòÉÊ'-¿l_æ=O6(ýª©¾Áy*g1ˆÂð©ö<¾ÉõAˆÎñe ]b°õ%]¨¥1F‚^ÈÂÀæ½÷<¡-Æ™–¥ðµãB±hq÷<¸m¢TÝ/2ÒߊI_j†ü†ß/_ÂC µ/œ;¤B">tï`#q· ¡‚4¥ÊÓÄ@ýMÀûŠEº0Øc_ußb¾ZýÛVJZ!%þE‹òŸê>½dvº£ä,Wµx@êìÒKMž§ÙÚµÙƒ .ëË1,ÇC!®ý[¾§^jý†«ã}pT6¹@¯¨®×)Hi¬æV×ɼÔtzš]Q¡öq)øÁÁ.ôEðÕkÄf¸gIçù¥æÕÓkÉ$´#í]±Éo¨cõDÕ1NG.ÈòZ”òÒ9'Œ6–u*–F_³ÛbSäÙ#9¼ÔLûf’smbPjÖ2»¾Ò¶‰\_›Ú°Òì"¬¸‡×WÈ×TÕê<¦úŠÂV/æ8¦ŽÇ=†Fìzò‘9PÐáØÂTJYzT@í­—š„O³+ó@?#4½ä>±?ÌÎVh˜E7(Œ©Ùø¹šö—Äð+OˆFRºŠPR^:iî2Šty©iùÄ™Ä¢ï  “Öõ“÷¶£äUàèl4Ž©èù—šŸO”B0µ¾¶¡rüTÔ‰âÏéÀOÂÁŰu‹ ŽÂ³|±NÉÔsGeûúuJ3ÚEÀã1ŒÉ©`…#1­Ë wR–‡5uŸVÜ—ÉQåvmЃEË:‘,uNšÚÇ %\qÓx¼Œ ºv¢;°®8Ë\ñ$Õè]Ò²â0;Óäxa[­¡Dí ˆ3û÷ž[ND[Ég‚¤“êü ¯õÚjW){=»ú Ì){}œ¿Å×2–¯/€Ø4Ù¶(Hê­½>Ì®¾‚ðz~Š˜ˆ·ö½kçî€é{”×Çs[H‚@'ž…ÄeOëDûIJÀê|\§Øð8 ³zS²õôƒe á`K)Á:Ù3b™pº—Aüº4àŠç¬j›È‘Ç­tï-§ýÈ㱓ã:c8HÂ,“* ò)K§8ÇX¥Ê‚È|W4§Î‰¬:«Lu¿@gÒ~ï¬a `4Ë^µ]·rNÚ”X‚Uή"PkË%ýƒþl›¬'M„UÆî»ÔÉC—>§FîD©ËÙ|©=ˆR‘¾Øò¦rŒ×<ž¶GOŒUÊŽ“_Ëml'.8쬸E$sãvØ{eë‡DÝÉÉ«|ðÐð`Á*cŸX1â^êm£°–ª÷B$xÜ;šŒÌÝÞ%–ã…Ÿ à 9ËÖnΧ%K¿?ÍÒ³žö Â,ƒm•AªhSEkÏð­(½×S2ž1qóxÑr± F”cõØAïô~v>sBçê–ת®x’1YO}€ÑÒSí´ôúl†::éá\N ÈLÖ‹€Â‹-•7*0€âuïz}×úÛZÇëÞå†ÇÁHV~¶èç«<ÞI‹gÔ(ŽHTçUØ…Ò&”¶#¥](mBiï(5¿JÝ&³Û³Ûev›Ìnëf×ùiÅ7Yñý¸â»¬ø.+¾µÏü‹Â›pÁ~ä‚]¸`.ØpŒM8sμOQ„gvò‰ýž»œ–MNËv<-»œ–]NËÞN û¬w9Á»œàí,}éor‚·v‚E"ŠTÙEªìG©²‰TÙEªô{Ç;#’nI·%Ý.’nI·‰¤#Ój#„BÒw黥ï.Òw黋ôÕÓÝE#좶£FØE#ì¢kÁ~¢¥vÑRò‰´Ô&ZªÉ'Í;vÑœ»hÎí,}Isî¢9ÛÞié6*Ú|m¾µù.Ú|m¾‰6×l)í‚06Aûaì‚0vA» Œf êÙõìGÔ³ êÙõô\Ðü*‰í‚Ä®N‹ ¬OÓiѲ ý6A‡û6¹ :Üj–>» ÖMëvD¬» ÖMë.ˆUKœS ò.(úŠÇ•tòÎþÈãºa•Šì7AöûÙ"d¿ ²ßÙkŽsîbmlbmìGkƒøY¼âž;q“µ¡egÄÚÄÚPÕm¬[Œx[ÑÒºñxµÊ6±Êö£U¶‹UFšS"ðh•iñuˆ¥¸‹¥¸Ÿ- ² ¹aXŽ‹õº‰õº­W\2ÕÚ`é‰Ö«ÖMŽW‹z‹z;û È¢Æs8Hµ–¨¸Xù»XùW'Øp˜¬üîKœS<»x.xœ<8:ëŽ<ÎqÎ]¼!»xC¶³¿€¼!(ÐÒ͎㜻xh6ñÐìG ù¿Ý%ût?fŸV»‰qÈŠ³O5ã‡]2b7ɈݱägùÖlFʈաa•š¥»K–î~ÌÒÅ7ì³§,ݺâ éD"Jæð&™Ãû1s˜˜áh·æÈ0ek‰sJ6ó.ÙÌu޲@2=£Ä¨ë:uy‡”a½K†õ~̰& Àžʰ®œ ë$qNÅ)Ý›d}ïǬﭽ¢8ë›äd}ëØx¼f¢o’‰¾3Ñ ?If_ä˜"e¢k‰sJvü.Ùñc²¢Q(;¾S‹sÖŒý]2ö/ø‰2öI_‰ÝAü›¯·v¹E°oT[Œ¹@2éŽÇë͆Mn6ìÇ› $Ù*£› ´v¨ï8ιËm‹Mn[ìÇÛ$ XÒÑm ’è W¼a/×ê ýx×É2Ð ´¯ðˆæ8ç.·Rv¹•r1&+7#èVJ ±Øñ8Ý”Ùå¦ÌÕ:iŽnÒM™ºN@)59^oïìr{g?ÞÞïÓí²ø.ÞÞ¡ËVrÍêí¯Ÿ^.¢µ_Èo>}óå›—Öb ,ø W̓ƒ%YžN¬7AMªå”Z‘¿|i]6àðc½(’b‰Fvž˜ Ýá3ºÞÍõ Xè—/­ÑܬGÅ »„þg(ꔈµF-ÆTVÑ×-ƒ…þåKëµaá _39™Ó\Š„ËUæÔÛ©0——Ök$«¡Òx<€v‘jõÂáu/­×Þ\¤ª€EÊ€és\ ã¨cAŠõ®8¬ÄKëµEð8Ôõz6@ØÄïk±‚"?SÝ—¨_Z¯ ÷@aa@¾\í§¯etÊjÇÃÐ ÂýuñÒzm±o¢Á5ÐÅšÒ§)Xæ([+½Õ)p(<„Š –{,^ŒÀòv˜ÃF~ÔíiÂŽ‹”ñ,O!9,©%sÐ9~æ$=ë _ ¥„eò‹ôÚØ_ÍH\JŽ%\QG‡"Ö‰ }ÛK‡"”»yi½6jšZk3:ÀÃY0µ|ŠCˆÒø€ë@ U@.4ôCÓ§5ȉùÀ× #½Žk¨ýubå¥õÚxn¼¥c­Ñ#xGN¬Ç²."×ËÁP ï@º##ì`X ˜ž‘¸”°r!à2èøãúÁPÂ׳ÀS°ÌÊÞP5y#ÝLï‘B(*#ÕEä:PrœÁ*Æ‚vÇm”ãlU½p_·‘ë@ @í y¼\F>0ºb"’/ÒkcµL4"«X£EÁ£½šd,Ö W~ôü¿´^½?¸¾å{ÞŽS°¦ÊÒ²ú0…‘ï ”Zj–}‘^û«·‘ë@±TÆBÖÕ7 yR9²@ñV½´^²ˆå{#*œK¤”µã"æÌ*Êù—ÖkÊ êkPpN-@Ô W‹V_ëkñ„}ÆÂµàKÎ|`­a‰T‹ÝW>¨u öW¦Zj5Àà:P¬ð¤xâDÑ ÖÔ)TNä:Pà5Xf–3g‰dm½–oC:(W® —£‚C¿æÈŽù –‚©|Pë@í¯V,\ŠådøÝèÆˆ<(æU8ŒÀò.¼#Õ:Pû«•«í\8+ºÄ’©וQWà"¦Ð³2×#x=‹!¦NB‹‰àÔkñÊʵÔþjFâ:P\,™zyQ^Ìq,ö*GèÈ"_ɉ~àD¸—¢2ipSN׉‹•[)Ûê¥õÚ`õŽÉXšÎ~AkñB½ójº_1hgȶ¦¶ èDšMkÝA¤q(Qï2ÑÀOzd$*BCaR©ÖÚ_•k¨ýÕ…ë@)l<ÖÖ ¡ª¿Ã"Ú*Œ­®…™xãhb1MÅ^{"ŠÍ‰×à•`»ÖÚ_¸”gÌMˆþtù8[uÎûâqæ^,P6(ã6>(Ükc-Jã^ûk1’ôÚã›Åú¾&ֹׯþZ³OzmˆÅªí$¯U÷ÚØ_{¤×«÷Õû¸Ô;÷ÚØ_{¤×†€,†8ûÄá^ûkM_éµ! ‹aÞ¾ó¤×†¨wšûÐä^ûkMéµ!§‘Áö8‚`[zmˆDb¸¿¯Á}éµ!ŒÄÇ8‚÷ÚØ_‹‘¸×ÆþZã[zmˆo;}Íìã^ûkQ÷ÚØ_kòp¯ýÕR™c,lþïlþïkæ¿ôÚ`ÄΈ‘8 ¸×Æþj©\c,ûkoéµ!š‰Ý@ûšHzmˆÅÂŽ¨}Í%½6:™H®°}Í&½6:‘Fθ}Íǽ6öׂmîµ±¿Öô•^¢ÚØ%º¯¹D¹×ÆþZ³OzmHÜ™ÝÂûš[˜{m쯅ºÜkcµX·âO$çüÎÎù}Í9/½68<°sx`dåáîµ±¿Z¨:ñ'Vã›C$ûZˆ„{mì¯5<¹×ÆþjNäË«‰{mˆTæPÙ¸BeÒkCL_ÖíkÁ:îµ±¿Öfâ^û«1R±ì¯µ\¹×Æþj°í'RØxç°ñ¾6–^r9p½¯®¥×‡Îwïk¡sîµ±¿Öìã^û«ñ÷Úß:'0ìk ÜkcµÅRc,ûë·±yq^w˜ü 7NdÙ×Y¸×Æþj„Rc,û«á~9‘Ó‰öµt"éµÁ M;'4gáAB÷ÚØ_mpÔËþjÅD;¿R¹r¯ ‰;sbÛ¾–ØÆ½6öWƒí0äâÜ(q°7N/§ð ½{mì¯ÆÊc‘ãÌ)–ç0R,¹×ÆþjNŒ"_‰‘¢pâ+ebÏö+)Šv~%Àˆ-?ñ•»0râ]’†¬°›ÊõeûåöÑOßÿiû÷o~÷íwß~÷ûí§?|³}ýãüéOßüô÷ÿ¶ýù»oÚ~÷ýø÷ß}ÿçïþ}«ÿcûýßÿù¿¿>ýãÛ/>úÍÛíןüíß¾ýâíg¿Ý>ÿlû§_ýó¯þåW¿ÞØp-*Ëw‹©Ÿ\.jòeûô£úäÓøô Vs¯ÕþÂ;`õo)§¾Hù÷ëx Í0 ÷$® k5%Zí±V×Be0ÿõû2Ù?~óÝïúÃØMä_á_÷û?~Sþûw?}ó/Å·ÿ÷×?}ûýwÜUcçtöb¿ðÕö¤^”ŠÊO¢|§&Äïœ[$TŸà†¶¨j|’„l?¢Ãëõ‰§'ï²´'Yž¼‡$1Ð+Šo‰œ^ÁéíJknýøpü~[>™"|+Úq–ÄOÞÆ÷¯´ï7ª2íò}/wxN¯äöJMíªô¦6­ùòßþðý7ßýîßî(|ñ¯ßÿqû›í“?0é/?-ÿ Нúý¿ù·?ÿñë¶/ Sþ ê _àÕ_ýøÍ7ÿóö/_ÿëßÿûÿÇlßü´}ýÇ7ÛÿT •ý/ÛÿúÑÇ_þªÌËÿjKÅôÝ‹†O0ºÄñϵE¶©ùøí—ØÇFóPeÑïôOoð º}÷ûúáû?ý—¿!†/|õÏ¿}»½¥Ó¤IÑ)~¨žü7}c|ã…ëo<£€“2ݤj]„G“Ò:w“úØó/Z•‹êÉØ«š±”¾^$¼ãøÆÂû˜•}ÇYAnô0«¢‰Š’‡ž¯Æxxc¤ð>fåÞó¬Æ1ŸÇ8ÎûCÌÊ¿g¼à¯ó¬>8†nVf",R-g@³2ïIZìï,-öÓ¬âkEàÇßÒÊÿUÎ*ÝáÀz u" ‚¶™QËåP¥£ßdù§7vÌ©b~4¿+HOήÐߨ]1¹‹ æ=Î*¿+Þ>Wãû;Ÿ«Ó^#ä•ÒâK-‡ÿÅŇ˜Ö-láúͲ—³ZRÃÄ”ç¤sJ3KZŠ{©×± 6wX°Ö#êYð¾ÂºxãÖy¯^ .˜/uSˆi¹;›åÏòÆxø¨Nf”!ÀÄý$û7* fa ÁÌ+YпZc]³à þ{Þ7 Þ¸bZ=¼¨Ž„‡ÓRµ"S//~QØ…g q­µÑ²Yü—Ê‚®gA,ïcƒ 1ÇôJLï(ï›X?‡ÆÊï[ß·?À´Ì-|Q‹_ XпRQ«*UÕê™r¾ "S– ¦õ,_Ç‚F¿ þøžpûð]˜[ðâjVï|°>€åhì«Åůí?ƒ•oÜ«õðõ¬îCÁ1+ÿŽ{uß¹xã½sà-ßښØÃãû`ï'{xdà>ÈÀý$ã»û™nJö팀’};Iöû³Jïh8Þ‡LÛ™¶2m'ÈtVù¬åWsø¦-² ¶È6Ø"ûɹ=+{ [\ø™^¥¯Æ“w0ò÷“‘Vúµ³zâ‘9 ƒŸ]\XóÚƒõex½[úƒoÖ-páÏéBŽàõ/p°ÜkíÆ¶Wj!x)Ú?´´·#½)Ò¬Q 4Ö¥lÿÐ˾]<ÄLq1¾±½o»}5ºxýfý †£}5¼xõÉú<2öÕð¢Íê¦ü\îÕð¢s Þ·F>tÁé[›å:yñ042Î~¦qVgxqBÑ2ïËYÝò]Ô2É¿ô»GRÏ*ë /nÎʾÇ0sà >Ü+}y°îÏêVÞŵOpô<˜`RðÞ‡ºBpðnXÖXy»‚÷gõò.R¿W{7«ºò iuVñ•³ºY³±æ¾‹QJް}"-öaV'Ìänå]\[ù7÷êÂ'xØ«K$xsVé†dçÖUfµv®F|6«ës5ŸÕ­ÀÈ…´¸//ôôA^šX÷fåÕ}¥ûÐÜûÒW£‰uiߜի±Åc#ÿ¦¾úÒ¿[T#ÿ¯r¯^-.öŠ-Ó{8ðCœ«Wc‹ÎnÃ=!8WÃ@úWƒ‹«i±Ðk¬9fúË¿]<1±n ÷`ŒøWËz´îoÖÏý«áÅŬÖNÖÏÛý«áÅ ®ÉÁŸÁÆ ¯ÇïKg}{8ÜJë —ÙgMuÖèÁ}èhºvórVæ=zdê/Þ \pà$42ŸÕ­´Î…,ð^´?Ì<¼±u~éüè\ÝœÕ-|q=«‡né* žÄê˜Ä-]÷n™ÏÊ¿;ʤN{Sgý8à£/¤Å¥Âº9«ðZ·ôƒ¨÷\Z\„ç®##û0«f ·’:¯gus¯öa¯FkäŒïÏêÖ‘…<Áù¹º!ÎնߟU~G}u_^½1@¦I`d:«ø®9÷õÕë/,ÇI\d>«×c‹ëPþýüÒ"¾[<¶òÿ öêÕØâI²ô :üüëÕàâQÐ{¤à¥lÿÐR0¾]\½O›³=ò]|`_.½çòâg°Eâ«ÑÅ«÷êg@‚ñÕèâõëg€íñõðâaÂþD þ &Vz5¼xâ‘ùËÛÃé]ó..¼%cÊÜy³ÆÜãQ žåÅx“^Îê=Ô»¸wstŽ~éó^ÝœÕ-|±fÌeû(PF=|>X7guëÎÈu6ÉýüÇ1§úv§PΙÇüÊYݺ3r•ùó·ôèŽÂ=k¬›³ ï¸W÷¥Å6H‹3]Z##Ê:Ìê„™Ò­¬Îël’ûÁ¹13# ’ýŒoÎêÖ…Ô«XþkRUÇ7çêµßœÕ»æ]¼Ê}6#d:›X÷f•ÕkƒXsdæ÷æÆ,š1ˆu¶‡oÎê=ä]¨a¯Æ¤áŸ_ZäWc‹'±ü¿‚Íz5¸xbŒÌýÒüd½]ê]Ü/Nò¡Å…~5¸x’±ÿW°[¯FãÃãþ'ëõèâa°ù}À-ïÕê¼¶òë‹ôók¬w¯Õy_^ü ƈ~=¼øñ•›õ3@Aýjxñ¤°êüVô‡Æíú=¼¸)˼_<¾¶ô—¶‡ñ×ûïû76~è߀…ΕÿÕððß:(‡‡d*ú_@GߊÕfü/Ê;E°ýbSz`ðïÏ?þôõÛö‹ÿý§o~üéÉ{úú§¿ýÓÏ1¢Ÿõßvþ÷7Ý¿—‹çå4ÔùüïËöß~ñùo¾øèÓío?ÿ;IÕ^;ŸüËG_}òùgÛçKMw¾„OØeJHþ×ÿؾúóÿøí÷Ûo¿ýã×?}‹¤>úã7?þX>üðõö·ßÿðÝ·§üã7?üøí÷ßmŸ}ÿ~ó§ýæ‡Íýô‡Í>z9Ž|ñ6Uøä³_ÿ·ßüÝßh ð¿lÿíí'¿ù»¯¾Ü>úüÉÇEþ|ù%½öÕçϯ•o¿øè³ßþÍÇŸöåW}öUy…?âtÛÕ™Pÿóã· È7Ü|Ú2J«GŸê‹HÆZ•‘þö¾*ƒùü‹_òÙG_½-3ùì×°=Ÿ|±}ùæÞ”÷?&=Xþèæj¿Â3õ£-1y‘•ç…€ö5Ec7X-Ë_ ɘŸ°ÝŠôtØžÎd«± ¬wªöc{HÀ ýFÇP462 ÐäͽqEGéç|G hk±ã¦ÊÐ?º€º™zÏ&°•5pÊÔæÎ*b³÷¢ŸâdQ˜7zVQ{ºèh ¡Þ3I”5àé.êÝ™µÏ“d!P`B‚¦¶° >%ꈫlŒÏ Ð-I"àŠîO@ eèæ‹tŸLL šB²)áhäÐÀ´÷„€ámÄ]×ÈÁ:cÛI Mðâdµm¬÷D &hY m‹ZŸp"5Í£³ SùS({§€-Ë9[ßÖÀ%ˆm' ´Ψ09Lr£](’šŠ_ÐÚ¶GìÜ&"O¡lcŠ ¨ž ]ÀÓlS[Ÿ£§˜Ð%Y²ìâŒ@nSzÂ~–ÅÄNº¹ç æÄ²æNé„Û_VZñ–íðÎÍDšnkƒ‰x 6´Û…+ï'»`„ ¢ÐÚW3 g2ÑØ¶ˆ6D}Ñ‹á(Ëê&œh\›‚vY㌠dÃ6zh(:!Ðq¢±Nãïiãac‘m>Ì1´](‡8¸¬¦‹Ð6¸©Ôl zN´ zTkhˆLœX…ž µ)$å¡kYÄ¢ €)2m‰&wBVç’}pÊX&ÇÙv21ƨ±›°Õ±ð¦&tc$çÊ*  Óqöj²Ö´]Ù8¶U ä¨õl¶ Æ€‹¨i E¾ûg6æÄ¢…®¸;ˆ&hï §Ñ%59ÎÖ7*&ã¨=(ô–›?&ÐÉÄ"Ñ ¿gMÑFD^çØØFœK(B­×$ßm±ùf'u»²Áæà®ÈFG”-bngÁæ ª²(å#‰€!žc$‘‰ºÚCËù²ˆ®5$Pa²t[ƒÂÉ;¬v ‰¤|³˜Ž’“½Ç"Îq”sWß;`NÎ0YÙŽì“C½¬Ÿ¨6çÀ¥¨™l9Šº =s"tp.>+g…0/Õ8#TP!Ø…®i3ÉNdb™‚ÆŽñe Êö£n !™ÉYp©@•µ¸ T"Àö€Çë)‘‰l+¨s9ûŠ8£›œ¯:VÖ ÖzµEMÛ]°¡ê… °e©\vÑ›ÝD xÓ”‰ÃÙ+k“CÓEƒkkB ãDpvY n¯Rš1’í\ þ#œBYMÄ:Ù`çî§|Û…¢ÕAY¥q îO1’@ù¤XÊb†ˆ¼SžM!¶)”· —¦· Û7?%+ œ2ò¬¶›Ö…ÜX9&Èõ+ÇnMáͦ'‚hg4 á÷Ê\Êà”Å0“E ¢A!IB cÐq†P‚i‹X¬F€T`8D‹ PɃ`Û6ƒYW¨«s$»1ÏtcpÝY¶Ø¨XÀKFPQسEô€/ãÅööÆøŒ¬žÚ!´5H)ò-òÝè¾€’Ma6…N;% ­œâ²}ȉÚÇ)áDhJoö¹/"±ìhK;•!7eŠ@˽ 4.ë3Q8±PF9ÎÅÚÃĹTŽÂ‰ #h{dÐö¬¯¤ÂÌaÚ ñ}DyP8˜Ô4Ag;×àUÙ½b¼“ǃdyN “‰Dd@UÄ9ú‘Š1>sDEÑÎeñ XÐ]Ay•€šÆ(2±È›A/ÀHw¡X®n¶ˆ±-¢6q@M—à"šägV[‹ÅƒÓfT8ئ$n†Ö£hgü£º`ëÜ?³Ú’pbÑÉDÉÃP€Å ÝÖ [w½€5‡| ó>' 21€3Î!BQ&$\UlÙ #%ÛF` …†ƒÎ™FP Ælí\„2œþð4SÙÏ4õ¡¤Îb)¨T#>È)Âi,Œ™içÚä`ÈýR*kƒÚ2:žè81‚fAVa ŒŸ ”ÔÉÄPÖ§®Ë¹DPH:ÎÖ ãDí@!•¡Õj‘@9U3V΂‹é«Ø'0Kkà!Þ=!ÐÉÄPäÊBth?Ó ¹ãD•Ñ#V[ÁëH  e²ˆ¹ÓÎj[TH*Ù„ÍbùªÉ"æN;«bé"¾ŒE¡(r€gò9‘‰å{Q‘ÝtÀ50ÑùÙ„¶ á‚¡R¬~[– ¡8#ÛX$K¶t˜´Qi4slj`e:DëE©'“ÂàìSíŠjòè{I¨\u3ó©ÂÖ]°e¡ÅRN@FØ^Îp¢Æ¸:ÆZ®ºˆ2ò+«©HÓ˜ébÁVÉàé/8Ãã¹.K1ÛFIÕ—fà p¡!ØFz¢Ú é™”ï©D›VP°$M @~1(ÉòˆCqE@ÏÑósAÖ LGUŸ<êÆ¢ð‹-<ólƒ£©â°O®¦¶)UçêL;C‚ª„4X¼ ÖtŸ,ŒÖó)daem—‚<(†ƒ§Ð•šÙLZ+a$]p)ÚL' à”‘4sbá|Ži\Í p ¬ÏlgÔóâhgä0•M‡ˆ PJß ÙNEšk24n?h&\üÍäX&‚™2Ù›.S°7…4þ»†­qý/‚!ÇŒr°S¤ê‚0R1¾ápGpDyŒ–Ó8³µ‹rœ ÊwäSÖ¦^hRm…€63W&MpŒ¥ì)zq$ši†*@W<8°2R9•³4œ#Ãý4Š“°€B!óTæD…N`E€²ü6ÌÚœß!‰D*önB¬lB1ލ4KСÙÎ9x2ÚË€d)R˜Âý¨š)£K´h¦‚))ÇD3[ƒ¨… ?aä'$àÓÔnŒ '–s¡Ñ%jÚ›`}™©Pí¬æ¡CÒáøTg§1:Ó™ ž‹ ]¢Sí½”b¼ÃÔh†ŒS(Jv ²b)¤²ÈÁň ]iš—¦coõž/ GüH±Y,…}À µ˜SC¢›ºb–50Þ;OÁ^O#HÅŸ©÷ÔpbùšB°]øÖHS´žšÅR„j2¤Þ#ÅJrœ³Ã”NôÁ[GVx´+™…Êt²2…¤3¤à@ª¶w¸š*‡©LLM;+ÈåÃ)XGÑšb±ÌÛ0ȇ”…Ð rœ¹…u "TU†ø&%cX„kVÛ©O55N4E¦’$K¬žÊƒÔ´s²ÎR|¡«Dö¼uÓTÛ¦ 43ÕdÑ’ J ³LT0@ 5I›ô,Æ¢³F äŒ ˜zA˜·€ùÙqÎ,(–˜)‡ÒÊ4ëY¨ ᵄ"9ñbYD侩×m£¨À/¹U ™²:{ae°t,Å™ ¼…¦Ç9YŸÐƒ 0‘2ÜÂ<¥ Ï,Ö‚ñ|`mDF* kª3kç¢S!¬l2æÜÚ‚‘¦¡2³&HѤKï†BÄÔ„«Å‹è£|6Lóä>Ã1ˆt”#…’EsÒBðu–‡b8Æ‚¸ÂEÊ6ÕÅ]VÈO XY‡NpÎÇ@ò.¸Íò•Uóâd‡~](aøÉAÔefú‰±”¿…H9¾ÊYRÓNÇ™sިΟTÆTð?à8fN#1¸7Ó†!ÿŒòœ@³ÄÎÉ‘i.$MCçF5í\NÈg‚°¨¾'8ƦR®Â¸ÈCXèŒ@É…ý ¢õX0 ©™n4cA÷šX|ÍÑ<“ʆc, ”“£¬Â Ðô-¬›a$#1ÈJ ‘ÂŒ&Ó.€œÞ `N,À6 @¬ôÊ•eõjæC1cÈš§Ü<ˉ,iÜ,ön$Æ›æ!›ŽE °ÀHc†„IÂè„3’<Õ, ÄHŒ…²DQ €c’FP ˆ#IŒäè„ÿr c©ç´°r™NaHxŽx¡®l‡K3œhLãDk™E/i"ý,Ld8Æß+èŽ@–BÇ4fýÎ"Æ4œh=ºdÀƒñ©2¦àg¾4cšÅRŸÔH.Z£·6ê9ЄjF¿U™zŒ ”)MÉ4N„à¡ÄÌîòp¹kv5Ϙ†•£‹ªFèLC˜Ï d‘\ŠÕàI fæÅ1cÜŸ I)¼¯E2ÌŽ3ÇX0H£r"?ræ­ÏBeÆ6í\움9¾»Icl³XŠ^Jø{ÅÎÏ8ô”$Æ¢@„RìJ$׿üF•m2ÑÒÔá’_¦\KíÔÌ!i8Æ‚ N‘§È1ƒS(‡}–À`8Ʋ#.¥,Eà¬pyu ÇX0¾™"*$¥÷˜¦"Íu8±ˆBr¸H|à êÊŒ@‹öÜìÐìSE ¬§ŒäšLÔ ’‹è6e¸y5½Çb8ƲÑíBrh't3ÒíÂ)æD…ÞC²¹¢ÐgQua&\ó'þs”ߪ\ÂD£§8‘c,”5 (¬Ñ« Ì,Pe$ÆRDZÑx‹Ä;4 ¤f–«á Œ €<€€·ÇËd¡ˆÙù$Æ¢‹ÉŒ×ŸÀ“)Ó1;;Ë€0¾y¶‹H#\Zo¶ÕS{c,˜ÿTƒupÈKoóT HŒj£à} w¾3å3E(cÁ|÷qáAÆÀ‘›ÆXŒoœXþ¢)«°¼Ž¤iùޱÀ.øš·PÄ:è¸ø.<Î`žÄX`䨋5^?Ç<kÝÌü7c0µ‹”0,B"Ë,êk8Æ‚5ôREƺ†>aNOñ¥/®ñ nÇöÙo6 ¯þö‹O>ûø“ß~ô÷Û'Ÿ½ýâ«O>Ú>ýüÓ·PêêvüúíoÞ–?Ó—Ë|ñöíËV$S9ã…!ùS1ÑøS_¶u ŸñÕß}þ›Ï?ûèïyŸ~TôOø°|Ã%ÊøÀRJt/¤H* î…d¯cæJDEMnULeëKV¼SF(:p s,œ_ƒ¥4¶ã˜Õ4ðß?¾ýø«Ï¿ørûêó2Ðÿ­U>ù¸¼ •Ppý^^j¡:¾„yí:Íp €½‘Õ€½!//~åDe {©7èµ¢þI”B(Œò%çÍ’Žü Y)¹üRKolôýäù­EÁ€c Ç1¡î‚O(€iL¡ŒÉuc*¢ÌVóWg™£¬x¦¤ÚìÐGÇ7¼|,oÁ:Y”†x"“å19ºg!”dN”„"ë:J‰r#ѹhQjy ½èöJù–—Õñ2Oë_>–ßCÂÀ \¯Êd¥Bú¡Õ±§Dˆ?…SKx–1¥nLÅDé6™Æt7Êî0&#ß2;Uö.wcJ¤· )Q驈~ŸÃ˜(yÇÔ­¸}©•;à”ŠÀŠmh¶cÊ Œ)P¾a·NÌO0-ý-§—Zƒ(…„ùKpIQï@XÛQ¢+.@É` þfS4/µ–Í.Âýf¤É§fWËx5Ît2¦,3†ÙÙ6&]°—ÇOo&ÑŠ[;ð8ÏÉÞÅ‚ï^juøgá~iß²âè^Ý(ñ.õ”È€”´.({§™ÉÑžÂÒ”_(ÓÜà ÐÀû‹ë¤@â'Ïó4!Ã:ñÐñ¢YÍ hR1gú˜…R=÷†WLjTH0;atVœÁ½“×Ãì’5B©œ–Æ,[ÓªÞ8Kኈ†ãaÅYÖ]¬4‹,вPù|²ˆ¶TÆ~Rbæ­œÉ{O5ሦz©5AhŒA R¡àµX¹ ëƒTÑrn1HBŸ@xû,_DŽä€ÆsçŽÒ×ˉ<&ÊŠÓ)æDG!¼‘Lçθž:Áë¹e~Ò Uä(`áššfþÆi²UèÜõ³38Yü~Ò^Î]YqùAðAá]¹ÀDt£Àý‡ŽçN5ùÆ2³}©DˆRô ü¨p÷x]š\òJõ”ºï>Ë:©"j‘®w{[÷­M”ãÞ÷NÉê9wÆ$<Ùª˜¥ZÆÑO9\¸f8-ž?eÑWÀ™r 7Ìš*Ç zW$_¢åÒ¬ü-g ? Ã¥eŒáb©uÕyYlÒÃìÐ)Wy\$º)üdUS¶Pû‡.¸8d;(<’î)á­ÐºârZ"P‡kÅ¡N=¸¬hÅuQ8ÎÄDd^gÑ…3­icJŠüQH BÅ*£ÐÏ2Ï\Ö©)Ž€yÅÕ7Le¡0†K mv¢ÃÑ1BcÊeï¬ð8ð3º¢Ñ×17¡è+”éÇ„)½uLV¸½p¦íx¼œÜb¸°™ÉՃɽ¾S˜xWe‰¬xJÂãhµ(:wAa0̺èü?u˜ÎðèŠàyùØvr¼à[œ:8¼£"j¹t±¬Sâ9iÑwÑajc* ͳL¤ÙEr¯¥eÔ“æcP4×K-_B”\a: pƒŠ¾«hlëäøû–«+^fç„Ç¡Ý0pZŒ©{—ÍÓᵡÊYQÆYxÜÉkÀ…褅¤07îé™ã¹ó"U¬âsç}áL×ñxÁã°l¤-mQ {5Jè?§‘g (ºãñ,œ6ò¸ÊAwîpî(\FÜΟ¬)úN^Ãò_(Að"/a|8ÁÊ0¥KÒ:É.⊠ÃÄœÉßPN ²Tpú0;#(\gžg•/Ë"` «é´Y*’Κãì:dŸØÚ0f×ÉñÈ™d0 mñ76'ÝŸ»rÈëìŠÜàu ö®—ãÓ—àn2Üè´¸#²×²ÎºY@€z\'Ç‹i™j×X]qbèÓÁÕ7òÄbv=ÒŒÅð¬R¶zZ|…ÈEYh:¨Q9=`ß¶âÂl©«x“‘ G#9ÿTJá`mh‘¾tå>•Ù‰A‰©‹m¨a</½=%«øÉ2?Y@^6&Ø'M˜„†7ùÜA>9ëH´c J°½Ô**4»¤©Ì/¸ÖMµïÀ/xÐÁN¤Š-¥@#øŽÇáîR Ô’Cp ÀóÑм÷MŽ[@‡¾ÃãE=ÃïCbJŒQź&ÄŠù­uĪREfúNŽ»"J`v˜‚ˆðS,j+ÖklP‘t¾ãq¨³ã³ƒÏŠ'ÑäSågY§(H,Yà;<^ìÔzF ¢ £C­ŽØWð“d®A>…ŽÇuF«½^˜PÔOø)‰,"©r™]Ð’qž<Ó”¨‚ÂcÜ,E¥• „ŽÇ¡ØcÆ/5ð œ?`„ç'~({'| „½!M-“â@œéºEé†+ÚÚ\:<)X ò¥œ²;ʘâE7}I9»4ã"Uz˜å $)!©˜4á§‚ìÝÑxïèžZ• /‡Nާì,iU}EE7P  £Ô}_¸83tr¼ˆ\Gþ¨Àê7òf8wt×I´Tƒ/µ†Ë†ß·ŠÜ `-FÙ5IWõ¥xS|CæÀ™Âãå÷3F¦ älR®4“÷Ç·I>‰-äŠ6Íñ‚*Î3§ sRñ€3)—Ml6BsSÁ:anHã*ìv!½F^ædÅî(ËòòqûAƒ%J<@9ƒ€ñs>"1ŠZ’T`~Âs…Ç1™]‘O²°ý˜˜ ë§Ð4Ž©:ǯ) ±hågw@öÝŠ ªX¸ ƒ)¯, ”³TG™©dN"©Šþy©µ`ˆRJÕŒ„«þÄ£ÅÒsGù¤äû €ŸbŠ¥ü„õð& Yeñ(}ÛŠg¡ uÇs‡5œ;Œ¢Cž•ÓþÈãMªˆÌDé+[Œ5É3 y=¡ZÔ+¿ôcJ‚0´xCb¡”º£©ð¨'ˆV~> Cê10œ@ðø¥«8ºa‚—“SuUÀeÖãiisÔSàÒK­ ³ ÷Ô€1¼Áªó[\«£ÍéÚŽ‰ç¸@€Ròxn!Öv ñ“=®“¬N§[b‘¾Ix=•YÊŠ!M”YG[ªI¥š^ros– “_b®Š$ŽnÐâ¹»£àá—Ze†V¼¨`Œ"}óc¾v¨»‚ÇÍQ·ñE7J¸ Ã*ÑS¼p&ÃmWˆU¸H j¤$C~ô¨Í¡\sÀ-F<~ôõh9wN¼Ô74»lÐßRÉÇD)SÅ~ôÈH0.Uå(øìUer’*ÚÖh@9£¤‹úÀ¼JbŠdšT¬ñR«ÞlÕñ¶‘± ©h#duà'ºê‡sòÍûï^jù›Î]aròC¥²cýt3cã,õRëàИB¤”o¨SFÁ5” þ`ß5/fsâTJ^^ ™†Õÿ‚’OG¿oû~óÛ‚CË*„3Jð8/ug\ ~>Ï+f-Ž)Ê:EG½›Ðg5óx:jζ÷ÍÛªqïRã§"Ù)Q¬ŽÀqÊѯ’žS qâì˜É °ä6^0x « Q·N>ù†z0:É<\è-yhŠÈ¬Fð¬&„´|r0PDâÀÄ68:+’ޏ v¯áQ€Ó¢0+ºúŸŽX…O ¹å«ÿ ¹€«Ê$"ÕÒFÿ“WG HÖ95.È }9ÐIØÃ_ˆ}+Ûõ¿ºNŒìMóJƒÇO3#gÇjÞ$ò©íGëµRj±‘f ˆ|=˜Bkª@tQ©£m.HÌ4)ø0´:ÑË€{~ktÒ5 h/”šT©ÂNÔEF@I¯QÕœ-Õ¢I¸N,ÇÁ«•ùÉeòG¥Ê¨‚`ä'Ñúŵ™ðSA¬ºZÉê#·MfФ2© x"ð˜ˆ7KɪÃ×Ñÿ„ÖkýÄ4-ž`Óx<$ÒÜÊ3ò‘‚p”ON°o³;ô ~@ìMYSPÈ/€íÇš:»Üó(Íñ“orÜSs¦ ½c†ü™×sÔœº¡GÀubÇìUMÓrØð´ OÌ¥/ǃ{G[Jè÷µ„PbP’»Öì;ö2ð÷? ¤óÇUð†ÆT„BàIùhK™3¦C?Íæ4:UÑšÈo¼#¦…7/¤Èqœ:«•dfõ±îÇ ¡:Ù;ñg’¤“@§xC ê–£'IUðÅ1¦Ø"ÓªI:{ƒ?“„—Ž¨Í žöFIr4fÄ · Eí adãç¥tÐRMfjÉAÆÌ<šÍ ÉÔŠt¨&áAù¾Y`›Í*²€ò}ÃÁ¯âj&»Ã#õµ£–™iÄ;f œ; tâ©Y•Pä„ðx‘Oƒ‡¦Å6Ú 8;–ãhåëš3aÑúÜyÑ4áÓ<Ȉz‰À¹K2jAÉ‘^?G–ÍÁ“U?ÁÞÉ{èWñ”Én ¹©®âR-j'³Ã¸”æ@çNùãäiÊÞ)µç ‘namSÄlf#”LP5Š›|кê»!ƒ±ÓrŒ¢)ƒQK “Uõû¬®Ašo°^cžFqæ¯Á<1‡äªÝG[c§€3X¥E£âDœ3É×Lv¼#NÞ-7Dn¢àñØrcŸ$öö­Ú¯ãŒG¿Jukö>ê`þESÄbxo#Uk!TJH7Ä ë$N”T<>±ÍÕA›f¤æ…½KÇ!CY*Þáìöcž}•¾¼c6 %ä‚ÔlÎlЫ 8¯Ã¡nIÊ 8³Ùw’ƒìAªˆï âœh"Bˆ¦¢èª%‰Ýª–InAf¦†Çc¤C‰þ§À9CV¥q‚¢et˜U©%Ð ·¤“!¿ŠÑÙq΃ÓÎlÚ\‹-PúJ üO±æû–yÆX‘}³9«õÚ<ÍFÀ1ñã=¢D>bi«1êã‰ÎçoMä§&Ç °$•BÁÎäyèuKåçæ k™PxÛ‚y³,åÖH«ßv¼Ðrÿm³¨á>‚ÎÇ‹Pª™}Æèš‰~–Í“%ç†dAnX¥ ”jöM .Ø®<Èâ…ÄŒ}¶C_j¡(Z§D>{¬AÇÀ2‡œ,9#¡\'^Œj:-AÓ}'äñ<à'áì–ჶ:éŒU§KµÔñ&_]áÌ–7ˆ:˜p2ÙËT‡{GÝb]Ï•3àÜ1²Ýá^Y¯xk.¥x¾mádïZÀ#¥&dzMUAGƒý/÷ãÇÑ/¢‚Œ-Ú r0ÀºIa¾î~q‚µð¸üƒ'ØÈ¼æ€¿íJÒ5o­ÜM2£6âÂoeÂOzc’¾3;ÝÔÞ­YßT Ý%é=4£¿!4½Ž³kX<ŽâcthK±ÅF¢ `ˆvñ.ÎÄf›x)`ÒñfCµ Z&ºàq¸Ù`?@~f¬G©X}-«rðE‹·—‘ CÓÇ9-Z;Ø´yt?ÞV¥oIìµåÃ})Õü*ÙÐMµÞ2ïç13¯i^-ëdhïz›«HìhsZ>wyˆúÎWÄc„aTos†z‚‹ÍÉà¨ËAn–£&–OtCMÉkÙâ.À^‹Fh7¯ªÌÐò0ðæ•n6g5Æ • +ê‰yÌý—Ù5L:ØHÌ"\¾Æÿ¢Ï5b 1 ã Z¹§(w)d±aÎh®Yß5.u‘Ðŵšvö¥V¹¢/è¼»ãÛ¦”©Ž(ºÝEi·wÎŽy;†Šà½®ªà[ôc°êL‹($Ü»ÆãNÕêGpZ)Öƒ¾ÓM› 6H©ùUʯkʨõX[¯î]:`+’®Ýo)âò¥V‚rî•ÙùP¥cŽ_'ßòÁwhÄ[I¹ÿõÞF T ôà÷…o9Ïö£›b¯Æ49÷6hÇ 6¶äqf')»\H¼…ÉçóéP‚€n ¬¯Æ¼Ã.J"šóxšÁûoªÏ*ŠrìµE¸êêˆmÞnº n€¸êöô.ÖÔðjñS»_,ò¥ˆµ—Z?k#.J‰Ã2 k?¥£Ìlyú¶eÁáìú8'ÖÞ0Ιk.äx¯L§†éøÞ+3¦ñxrt¡}Ší–ñ­iz IÜ;æqÌØOä£-è0Ò§³¹ÝWowqÁƒlLÃã¶^´Å< OÑj¸½sð<$Žº™ Z*ái1 ƒÝMŒ+jïsjÁ¾? gÊ…NÀãØD«ïaîÚ~q·[Ûv‹ I¤Ôáñ€zô‹ Çt'Ÿ}¿wVÞÛH5ÃÚfÙlw´6L‡3E¾@ÄÔÈ/ÂlòÆ@– A\º…y´¥$CÈË'Ì 1ò‹pçÆ«ºc š U»åÛ°¦kg)1cÆš¢(n‘õÐ);^7o¯Ì®Rj±|(ƒJž èBY‘}¾ ïSÄÛ¡H‰¹oƒÕ ÷œÚÐça 'ض»þ¹ å«xë8H€…Bë¹;VŒ°ú™WeœÛðx‘ÝŽp¦x L…!ë[( jÁL#¹Êà÷õ‘üt“E_åøp_ªåjqÆã})#(«XhºíZäœ#OT íݘbm>1”™®a•àéŒauO™P}u”’Ù%‰Ug0®a¸pIc‚²çôÚÉg¯[Aæè³oyåû\³Ã úß”²L´dh›æA6H‰‘jÐiZ5’7Ôè è@jž×¾¨n\ñ–“Ulª¯ùt¡ž»®–Iµ ‰I:Á®ñ¸q±ÂbâÖŒÖ>wm?ê;£ežÄOMŽëŒ›& –Ù/nõ:ñec;Oü„ÙF,%@Xɘ*ÉF+òI=Só®A–‰éãœë:aï:ÃÕ:N·0%+S‹¤ÒD‰ynÿ¨ZI¡@”«TQƒ}§%\b˜ïkįÙ±¦“iƒ–ÞN7@Ž8³ËæiÙ]H©ñ8`êÕ¶œSuºß¢Û}É“ÇÛ…Æ7<^N­­vpÄÈÏ~QeÇv¹FÍÇ {'§ ãR5É¢@+öÞÛ‘iȾrf»ˆcj¾ÃlU'~-þªWÛæáfƒÄ¨ÃìxãVÉ99’*u£ÜÚóÀ–ùÒª@>ñÇc‘ö´âÎÅ3X¯R=£Æw¸FË®Zœ¹RFˆ]–J ÀoØE6ðvhW[è\Û±XôÜü’«birïEØI8÷ؘn˜ˆæRïFÚÚàD¬ ¢j<Õ±íy)­–ì–’\&š ¶®½´è†ó°†G }u)ììëf¾n¸â•®%6Œ§zW–ªjCmáJÅeÑL›"…®tÍb+?Le®@™Ž,ÉeÎ-·µÑ:p}+]»¯€ xlª5²7nlMiqr%v§‚ÐY#ÙIš‹Ââ"%k` Êàˆj´+ÇmäJRã·Ñè6…b¶×â§è?1’gF²ÝŒi#ˆ…€·ïO|`XŸê~ VvÁ]‘®3ù 0beÀèsǦr"]é¡NØP§*ÕëÞN¶ïôÉ9Cq*Íõ©|-Oï€æK”iAŽ·ŸWS£Å„@1­¼¡]À¸å Uæ3ÄZCJ´aNÄ;¡–E5œr¼}I#¤)Xùaþ¹ •®E=t®>«ë5|2Œi ¼¢éà·É² IÐa Ôã}=2¶*Ë`†Dj•Œ}¹Vœ¢êØ2/ZJV3p©)M7i<8¨i)¿±bgBQ,QE"AœØAR–êG;_û~@xð,5×½Gç­µB@k·RF¨jÁæÎ4|†¸éœÕ†ëIé s  /d~×6ï §emðYwŸmœXÐ*t¾…–ØØylŸdt[ƒÄ§‘ €÷Ê2'‚ù2µTÇžF™1·]™È§]¼¶ÉD¨7«©dB&´-m[.ékÚq\+JS9ÚŸ2…Z8rðñ8uî§q³pÆQ+##aªX¯( #çãl!sÓ©¶ˆ”}·¢ ñÁa w»³ÜXwÁ1'Û@†ö8CÝ1ðšÊ´v¡ã×8±˜‰{bAGébM!!ˆ#ø¸Ç]ãÄÀ]Få!Y{ÅÐN£l#«i !Ž9Qp Ö|Rñt˜§ —Éar^øŠhx*õ„ד劉h´ý±S®.pžªð„Y ƒ@Açù @qM&–ßU„¹"3DAàÆÎZ NÄ*SL¤uPQÄQ§Â+î -8‘•]“‰¤™vQHLjf"|&#ð̉Ìʳò¾ÆÊ¾ig°T}½xboiY„j”ÕäjMšA …€j5%j4ßs¢vMȉÞ»°ó.ìk»à'B÷WM•™°Dz¬0 VÝ.øÆ‰!Av(d—ð>ž'0œßp"!UªÃäõI"5¤Ê Q"ù&]F|‰×½}>ã韑Ğ´\w©;ÎçÓ®³o8:žxJ]Ák'Çõó¼Ð8‘¤òÎRy_“ÊA R,+–}M±„Ɖ1dc©¢R¢ÞVÕ¦³@£^µ+k@vt-¤¤OIìh¥e® Ô`çì‹#`NCk0ø9Íf>‹õ@34™aæ@Õ’À=¡4–#J*ïg)“Ô‰´EÚ¾&Òs".õ©–üi <fšs"ÜÿÂÄ*L{3g¨«Ÿ!#ò=p-$A pL°ÄFFÒÒg-¹Ž‘¢îÖ”ëÆÊui”k422}±–@Eœ©,¦¯fó ¥rdNd¡º±PÕû¡™1œzëYƒ:u4ûhrÃv´™¢—5 °½1ØÞ×Àv B€°òÎXy_ÃÊ1¶) [ Ka!“aÍæm?æD> ;Ÿ…}í,Äʉ›ØÎug„¶³Ê¢e#W,¿T·æÆÀŸ±.¶–b°„b=5íìЇeŠàTÔ{ÖÃP‘R³¡•¡þAØ´uÜFi«ÌJ1ÙÀÎN|ð€€> ÃscÃs_3#Uîìd`àuÚ}UÜ»÷5w ®ÝW©°5a*¨=ª³Ñ%ò@l`*2äY"P@bÝëoV‰Tv<ÐÜ}•ñVñ?KÏÊ,PdÅ !µûªx47öhž8ñÚ£©k÷Uqmìæ7æî«¼ˆñZѨ¬³‰\£§Cªs·ñRÕµûªøwö'îkþD]»¯6Ç4‹Â}Íü×Ü}•ÃX†§9He (înŒRYs÷UñîC^TTáìÉRPù0Qy"dåYùó°2w_íb,E¿è §¬˜}+©‹Š´³7Ôï¯_Da@›9,bâE$E”?ùdYÙOäÄÚ}UPÚÆ(m[Ciºv_ïþÆÞý}Í»¯¹û*[ïX>GÑÁ9Ø ÍzÙ†·C¸ûªø•ÁVæ¨jv†éÍ>]»¯ŠPÝX¨žœ²„jí¾*îÀÝûš;Ps÷UQiœÎÎ8  N¤)^ƒ¬ÃŠ8A²Ì€ú(Tp¢Hegr>&‘ÊF悇‰»¯Š^Àû‘à芴 ”x#êFî¾*1LÖ ŸêÑv–‹°²“z7½C’Ïо*ÓµûªDy6ŽòŒêýA”GÛ&‘7ŽpŒpÿA„Cs÷Õ×Fûtí¾*Þ¼½y#>xàÍÓµûªx0vö`ŒÇùC×î«â?ØØ0š}üš»¯ŠrÅ„+íϺ‘•+N´¦Ú}UÆÎc48 î¾*@ÒÓ}mÆ|XššÑ:­Aí¾*^ݽºûšWW;‘‰dta)(pâF´G‰$6Þ#x¼ç™6ÖLÛ¢fâToFŸQ¼â!±ÎÝWÅðä58ÅÚ­Aà³@Úyã ˆQ*?Ê€p‰Õf2èÕ½0}Åfâè?©÷Ú}Ulçmçd=°µ™øº‹æî«{‡ŒJ§ì ­wڙ炇»¯ŠÂcÁwáÝçmd£‹°2w_íN#)–“L| X¸ûj—`2¦˜‹ uv¦Ôõ"«råŒ}-C×î«ñÜ8â9 ”OíE&VÛ™U' y¨ÒÜ}U¤2” €@'ç¼He'òÝrÍ]¯ßC_´»XDq…5¢âR/šnÝE²\‹\1ꤑݟ]A,Bëçâìk¹8TØ¥ódmìÉ:¹Æ¯=YTÏE×ÄR²Þ!i*_¤‘ˆ‰ù€Š¯'V?&Ë‚ÆÍÿ$f‚œ0ØÎçE´\™¥Ë Û9+l_Ì ùx6> §PÙƒ³Ÿ…å¡*,ùÂdž' tÆQùÝró6ÎÍÛsó¢a”°qþÁI/\çÔä¦wvHîkIª±¢ëÅo¨Â ®Ì蔕 Ñ(Ò¢pbÍÛåxãèÉzo¤½°³½pÛì…Û¸ó6Žná‡Û(8±æ.sf <ÒP™Í÷bC-š’/òÒ$H“%)y²8Ò5j¦‘.*’¢ëÝ ƒ0Z§³Õ&Ñ>Ï¢ÔFÑ-ÁqãÇñ4>Hp¤’(ºVD¡@•÷pGäùvÃ~’TNާP“û¨Š9GyZŒ%ô»'Öè?ûF ùÈ (We] ² ¦ªi²XRäT§,{óNæÿo^J¼ˆ5…kœÄxé²'F \ܤCi;£´³oý¥eÅǙ…§Úž8ñ:Õ–J™h®d’© úÖÇ Ä\ÙB§1‹v®pCÕúx‘Ì#G€)!FÊâO¬©4lpl‹GvÇ]ØyÎáÂë]ÈâÙ®Q¾P±¯\¨àê$] ÅÆ)g¯îe %Ñí*‚$0ŒÖûåU®E¢Ûeˆ/Cœ¦p}‚JF¢ˆ'\C?šÿZÀv˜L±l{Ç›€è#˜'NÅGºXÛÆ±¶³^¸Œµ™cÙ$ tö' O±³ EÊ‹ø ˜+_?8 ÕËëF‰í\3çÙ5>Âý®qSc,›$ºB),t2F<cËa" 'Rßë9³²> Õ¼8”àÈzaÜÆzÁ¨ÁbÙÙb9ª®-£‹ec‹ß™[,¦ÆX69 œ1 Õ†c,|!gã 9g´~y!ÇÔ‹x÷wöî^œÞ}Ã1–.ÉÓ[T’£;3¢”°2M£E&Ö<†8ç€å%Ä15ƲÉðŦ“#êêbWú !N2‘ïw9ñò~—Ñb;ׄ&¾ËsÚ…ë»<†c,’7ùS¾`$™:›}•‘²”Wå꣎۸ó6ž¼º¶‘c,’ôÍRy„8¤2ÇX$/]¢'·ðµKÔÔËÖå­{ý9é[Ä€Ûk¢Ô‹\Äúኮ/ š1ƲqŒå”xc1F8±*W¾w²\¯¯ÇޱHŠ%Cœ³èâ#8ñu1Wc'V¸Ïi$'£ë:ÄÔ‹¤•mœVv‚º×ieÆ6œøªŒiSc,r7>'ƃÓÈ1qDqØø”“u66VâÎ5cšïöý‰—wûL±ˆÁ±±ÁqÊŒ»68Œ•h_MúfÇôÉpí˜6céRïé4žßœF+qçšz¯j6Ð â\g+8±¦Þ³â”ví€0N<ÛõBûÒF™øÀ—f8Æ"N¾¬z2y®.«rý ÝnªÞu'Ú¹^Éb¨ûÄ£y€ºNlçz†‘ê)Lô©rŒåµ!Sã$¢ºÆ9¥ê¤\¯SªŒN¬™óŒTO¹yª™X#]ù>9ç¯#߯‰v®×‘؇r P\ûPÌcÙ8Æ2Šõ1Ã1–.PEi$§\œë4Ã1¹–Æ!Ó“T¾™/œX]Ù s2}¯0Æ N¬‘oÎÁ8E<¯s0L±ˆo}gßú)µîÚ·n¼xq$é›§,Ñk„ñ¢kf‡Îɾ—áã…kú'0œ0Òuƒñ)Ñ•}ëç¼´Kߺ ‰’ØF¡²“Ít*{Ù~¹}ôÓ÷Úþý›ß}ûÝ·ßý~ûéßl_ÿøúÓ7?ýðí¿mþîÛŸ¶ß}ÿþýwßÿù»ßêÃÿØ~ÿÃ÷þïo^ ‘þñíýæíöëOþöoß~ñö³ßnŸ¶ýÓ¯þùWÿò«_Ëaäú!XŠ®~â:%Þ‡BçÓþé“OÿáÓgt¨ò~’®cµ`ü-M…2ä߯ÿáíöÕçÛW÷Ëa| kõöZ׳VcþVó_¿/“ýã7ßýþ§?ü¸}]>ÿ+üáëï~ÿÇoÊÿî§o~à¥øöÿþú§o¿ÿî¥VØØ¹HG³L“žø‡Oêåù"¡9M ?Ö*ÐEÍÔ×ë“z£±<á#ü¤^Ë©„býã™P}’ø‰ãŠ.ü¤Þ((Öeqâ³’ß­Oj¬œw|’„4½®Î¯ëãïžžÔô;|òRk‘ìÃÒªôFIý¡á•ºÆ lÖB §‡`®Zþ~¿|²è²ÅÔËð°®».Â@êlÒ7N¯xð77Y6¢þòW°ô¿Ú’‰iO&'Ûùçí7_|þ¿-Òé«/>ùøí—0¶"sëP|ÑïôOoPtº}÷ûúáû?ý—¿AQK/|õÏ¿}»½%ù¤ñÏJñCõä¿éãÏ(\㜔é'¥ŸOÊÕ’8©=ÿ"4ÜÐ!SCa@µê’úÚåjŒã ïcVög¾õaV¾hœüjK‘«1Þ)¼Y¹÷<«qÌç1Žóþ³òï™/øë<«Îáάt',>6ïIZìï,-öÓ¬âû—®Ø%`Ò£ ü VA]þÆá nmC9T›1  ~÷bBd ]øøÆøF¥è¢ÑÖgïqVé]÷ê6ŽoìïÌç½ÊwÔU-ÿM³²|JîKöq7¡"}.¸QóîB~jÔY«×íUYýwÛ«û2ðâw”§½ÒúÝgå¿CÃîˆz\gþ†¼Q÷&ËJ;a^¹W·°ÅÂ^͵ðÅï}¯î` _ËÂöçêâe]™#V³]ˬø/u¯\¿WÄïmP!æ˜^¹Wîµàö œK‹ñ õ{À~øÅŠDS™Œêýj¯Æ“"4/·Ô›¸ß«øÊ½zglq[ _½Ñkáí¤…÷aVÛ0«ý4«÷€-nîÕ6ìÕ>ìÕ~Ú«û³ºƒ-|-zûnÒb¤Å6H‹ý$-îÏê=`‹›újôÕ6è«í¤¯nÏÊÜÂ×öÕ}8¢ÛbÚNˆéþ¬î`‹+¼˜Õ³’}ÄgÌ®~hóygõÎØâÝí«ó¹:£Û›³²ï³³î­§“d¸WzØ+óÊY½«ßâÅ™¹vÞ‡ú‹ˆiÀ–õU¦ÿ>#¦›³zØ"õ{µw³ª+!ÙWg_9«[ØbMαÅ(%G8‘Û0«³ ¼ƒ-`ö›{uá9;ìÕ[ÜŸUzGiqÿ\ølV×çj>«ü9pM^øk2ðŒ-nÏʾ³ßâÝ£g«q¢¯æ³zß~‹å]b‹³?ô[\["6® Î궘!&{Í_Ã^]HÉQ Opà|Vï­Æþ\=ô1ޤųÏgõ°Åh‰ˆÕX÷ê‰ÕXÇ$Vcýï‰}5Ÿ•w(“Ò×#xb5êñ¬³º¶…ç³ ïÙjœK‹ »ò¡Õx=؆Yeà»b‹û{µ{õÌ¿ö1Ígu+&ò^ÎÕ…Gúp®.±ÅÍYÝÂk‘ž‰ ߨx‰-îÍʽO¿Åš¾ºÀT#bšDz泺•nqnG43zÑÏÒâà[»°ðÏØb<‰GÇ“‰³zù÷cø#ª1û[ÜœÕ{Àý1û(OFiqÆ7gu[<ìe 8RŸfÅ9ÍÐ$58Å»}Æ7guËo±•;ð×¥¾­å0H‹3¶¸9«;~‹E?ûDZlêä‰Ó[Œë0«³ |טÈý½Ú†½Ú†½ºÄ7gõ®ù÷ÏÕøÆ>œ«KlqsVïê·¸/GL5"¦KlqoV^½Ó<ßbäÑÑËyÆ7guËo±k½Oöj´OQßËY¤ä(opVï[°å±¾WuŒlqVïšoqa_#x"ÙO1µa¯®ÏÕ|V·ò-t¯¯æ1;ñD²³Ô|¤…¯eà|Vw°Åƒ½r™ÿÕS2H¸'’y”%ûµßâþ¬Þ5&r_ZŒ8p?g‘L,‘}˜ÕYÆwçÀ›{uñÆa¯ÎØâþ¬ÞÕoqÿ\]ØWÓ5fŸÏê¶x?2pôB=C·×öÕtVáŽßb1*wîcœ`‹›³úÅþûû¿ïߨô¡28÷ ¸ÓYþþ[åðïÊBß’ð ]þ' —Rp£ùŦ>ôÀàߟüéë¶íÿûOßüøÓ“÷þôõO?~û§ŸcD?ë¿íüïoº/Ï7êÒþùß—‡m¿ýâóß|ñѧÛß~þÞA•î}õÉçŸmŸÿ-].û>áýT!ù_ÿcûêÏüã·ßo¿ýö_ÿô-ÞAýèßüøcùðÃ×Ûß~ÿÃwßžðßüðã·ß·}öýÿùÍŸþõ›6÷Ó6£ˆå¿¹ÿ/|òÙ¯ÿÛoþîo4ø_¶ÿöö“ßüÝW_n}Éýå?ýèË/鵯>ÿ{~­||ûÅGŸ}üöo>þü³/¿ú賯Ê+ü§ÛÞ¨ ¨þþæÇoÿo¾<ø´eõæÉ§ú"„±Ö‹|e¤¿ý‡¯Ê`>ÿâן|öÑWoËL>û5lÏ'_l_¾ù‡7å}ºŠ…OLh™ à†-VBÒÆq­QÅU*ú/_&E¥`$§’Ç:!cͯg¬€ûžPý{Ä;å©ÿ©ôòyDÀu¬ŽTà (êˆW䓊RGë/ Œ)#§vh6$J_íæÐHbyjQårPWæ4!™À–ßÄ€õN±ú‹ÆîE2úɤn*ZOÕà–'b3-…ZÈÝB€*gP2ÃׂåÅÉêEgš‚ÃB™®ø†ºš6Nv¡ÞÚ-ÿ/½É®,?¬].@‹z0ÛÊœ".+*‚`sˆÔ (5=Œ€ª,ä±2š.“šìù‚ˆ@ôŠJÔ9CYç.¾w àm5Õs4ɘà¹<ÆCÜÍj‹o §²b Ì,ç’¥œÞC±°:EìÔa\íè]1å Ô¦ޱº`A’TÔY)Ôò@îG ¨’SŠŠ´:c$£èñÚ4ˆØ=਄%,žЀ¡zMPo"ªZ2CÏɘF@g“°:œŠØ<¦Hˆèô„Œpb(È «œ•Nµº¼Mj:×”‘[G¥p’ÚJÚ[© ùˆ€p¢Å_,Œ H¶Zsîäõ€p¢ƒê‚ÎP1q›±AšÉ6ÍFÀœH ¨]…ŽI»]Ãaò³Ãd˜¡Þ©Ãâ8¶ÈD¯PÎÎFÛbá?ªÄ]>ØtUQU“³`™±;5Øi!¦¢’€@*’iF@·)X‡-;@’9#(Ka&S°Ì‰…m\tÅ@ÙEk€@a,3QïÖ¶)ÄbDâáõº@ PŽu˜ì‚eNÜ#–#ÃÎE!©B œÆ0&òÀú¶¾00µÌV#r˜òä8[æDP‰‹ŸÁ6ƒ ”Ã0[ÄØ-"p.®A² Ä §SHm lÁ–j£(€uy¶ ¹À„à<µzŒÊ‚Ñâ #©î,XMÊÕ«0Ù»Éqvº; ¹vrv+ãdœiŒUí5ÖÞ„t ¥7'"Í 'B)ïLµ˜rÐÁ?ƒy®ãݰ~ÑhÅ&UHÀè™^p¾1R*ˆõÌ\,Ð(ŸÝlB[ĵֵ«>æ7 `f#N„”šDk^ @Ý»4Ö¿{J µE4TޱpØá@ k'8ÑånLȨSm†š„@À§4!àU[IJw>R•@lÈ ¤¢ÛCº…òûµ¸›QGPäÑL¨zÓ΂ héh¨É¥ Ð>N΂í\¦î3•mËe8Í 'z×¶±c• l;諞·™‹ïøF&XZ­ÀKÛ ‹ŸH$ÚiôjûžŠ ̱×ÎÞäZ1SAÅÃB àÿ‰PõLÌIi,êå½5H º0(>·]ˆ ïdBÅÃ%ö ­ôÌjSmEP!IãíB°aƉ¡ãDM‹å 5ÐÑ̘þ,@…¾PByP¨©D ‰Љ ŠB½ 3\D_pâ„•ƒëX¹žXe²˜ Pp?áÄ œ¨AZÄ—®H€Š 4#ÚiŒkûkÎ%°*¨Ù6ÆŽÙ©Ð º.EœÄ‰D ©m£-gÛ`‡M §g''¨FGM틽a*e'»;N  Pg6¯òJÉÎüºm#xMQ¨ëjz'ÀʳmŒ¦g¤HþWn&v¶Ñ¶)T +Ûb/â(cgº1º6‚°,'Ôß*ç%DÌir¢p"(×`P3%êåcJ3ÿA •¡iÊDt-è×™mcl|2f\-ëbÂùÅÍNŒ½vÖŠQÒ šðD½Ç'–EôµabˆØç ª)NLª1’¦º·e –@Ñv¢Rg±”©g*K°ÿ Ô³–²¹ ˜¶ˆYC9EÐÎ: ~Èi&Ö“mŒwG`7Ô#¾Œd² I8±“4:ã”Ã6FØ‚EM81ùÆÊ:¥L­Bƒ§)cf–kÛÙ¢K”Z5o ØöNL'–2Èw °6ÝÆÔíBt‰819j SpæÌ^Hv.RÝW"†Øó1˜Èʪ±r· T,*ïb“¸4ƒ8Y8¼–ÜGEXOìLäÞvΊZ‚±@} ^˜ÉƒlÛY(6¿® ö’¦h©û@ljI×5×…“q`xNLžìì5•£.Œå¨¸iíDd‘‰åôÀV¨™¬Nä™Zï9¶ÓÙ’++C†”gn ÜÉD•-µ5Sò/€€õ³EÎm 9kÈø6ÔÌ|ªðŸ,P Ÿ:‚f_<ð>ÌÔ»æÎ-pxÓrħ âd 4wnAc-Ft Ö`Õb³ÍÌ>Í[ÀWpHj" òì4jîÜ~‡ŒŒ¢-ôá€ödiîœçÎ-pBT‘Œhè‚c˜N!t¬ ŽiØ­¨Ñ¢) {æ˜æÎ-;–.ÔJ¼,&2’öAOù 5±±¯‡+«k¦îÜ Éb;UH#N¡Œo†Ö5wn#) ðÒ4pA4MŠÖ̉ >²Eœ-¶- `¹Îš;·`ŸlÐXXÒB~ `“š±²nœk€½ ÀHTQ;97ÛFîÜǹØj_ÂŒH@Í OÍ[À掞úai,ÜŒ5½ÍÌ^ÐܹþVÌDEíoÁhÇêòy04wn²äÅt¥¨@±hÔ:á9ÔÀ¶Òä†6:ꓨœ›&îÜóXš B=8ŸI͆æÎ-Z)r€*²gèÒL˜† MãÄd°³;–ûH :=s‰jîÜZû‰@\"êNÕ4l¬¹s úŸb¬Mí½²DÀNO#wnÙÄX#ér„°]Eá‡<ãDîÜ‚ £ô½èp \Q,ÓE "Tmð4‚°'ˆ¦ì§#`NĸVD¯®†z:Í8‘;·€û¨¾H>UhÛ„¼žîsb.Zz btJ! °IÑS¶qbÙEp©”EÔð=8–9Mƒ¶Ü¹…úhEOñF„¬äH˜q"wn)|>j¨k×RÈ ˜1wn ­Å²öèÒª}OLžEÿµmœ­sh3e£‰‘”N3´®¹sËZ\&­n!qZù7±X4wn<ú íØÓ‰×Yû™_Ysçl ‘o„Fè‰(‰YÏôwn„#q0èKô¥qçhBUN@moà ¶jHÔfì)îÜ‚Œý;&…-; êŸâîÜB}õR¨ Âã¡€¦#3íìšLŒÞ;ì § >UD L5wnÑ€+h‚t-¬h‰€ŠuîÜCGjR¾§-Å@õÌjÓܹäªæbИ˜T„8…yܹ<¡‹`°…šM†0Ï€àÎ-è5 Ô¾&”ÅÄ]ðÅžŸÉîÜ¢Á—–,‚r„,(hiv˜¸s @œ’H½{@6ˆy“™±2wnmŒØ:9‘¶ÑNžh‹Ð^ìS{ÀBÓÀÙpç„T€Àz‡®ÈQ öwn4t\Ád Û!môLµqç93†Ä6hç‡ÔT¤qç𡤇;€O5kÊÉZHæiÚ¹ ª”¨+ô¤ŽŸˆ2‚"¿,¶„++›k§Æ0Eë¾áD“Þ³1[jÑ–]¸úÞ‘@©¬¡ š°:8t,B?šÙ¸s xÄ!§ sÎ{Õ£4…89¼È©fÉd ë„™GS‡f±IêÉ èj×É4wÎS=Ò)£Ã#B*&´¥ÓT3'¬L>”²®ÀnM|˜I¤ÀœX€¦³Õj±{­…ëvÆ!Dh¤…G•È?cž9¢tˆ"Ö¡]&.>À ̈ ~nµ…N&FŸÑlS¢m,Byjp–‰Eþ](«ÇRÇÎ"g ìÏa"&@#«è,˜˜f^]jœCg¡Øú€Ù<úTÑ¥eÌ4KTÇæÅ)㎨ދ4w´šjõE|^9ÑG4Ú (èÍ„Ušea”ÄXæEÀÊý‚§Îܘ‘X× >¤¸ø0Õ¶5K}H€9ÑBó*ƒ]Í¡a§¡„U==αÙκ€F îÄòØägœ“œÆ²Àù[Z"`§)–±óâ©)A ü¯ÓT/¤Æ‰`i##Å¢ %<+?;I‹‚,ò ÈrEŠ¥Èu\ƒ¢[gW÷ÄX<&u¡ÅR eÜg?Í4cåZ0’EÄ©QÒÜWS"1©¶ áHÓ X¦(-tœhQÑ%¸ô Ø PSt³ÓšÅ’ Üc°­4]€/fÃ,ÆbB‹;;L*ÅÌ DœpQ\ZAø  eåÉöÁúE¶9?K/4cAS 2l!÷Úáb€pÔ3·° Í‹“5¦µ‚á`2Èzª™BÓÎÅâΨAÉ¢xGÄŒ8Æ‹ EFæ+£sÕÍ’<ÄXŠ 2.åŠå²Á§@36íl ¼C—hô˜Q‡^;ÓLcAo^¦T[Ñc®Á+75ºb³XÊ&&R,å(à.@ZÙ”kg€y! Ì÷Ž Í6ÛÆØEû| ¼ÆòÃ3›ŠL4Ó0'¢ßª¨¸› Þ‚šÚ c5ÈÊ‘k<Ä”§å 8Æ#`{!$Mg¡À„Yζ‘K„(¡ÓtC .ÎnÒޱ€Ý¨0ß®³a¸¹ðqêÍ“ „ÜÝÄ¥Œ‹˜bœådޱ“É þ¼—T$7uHŒÅÁá¥p¡N(éÀ96½ëk8ÆpBƒ®õîÀ†Üt%ÆN䊄9štw;ú©rM-î\À¶r•`s @aôt™!mE%̈ >4ã Í{N ÙÎ ¦LöÂŒÿÍ.‰±€ ‚)ÀEYð‰ÒuÁ8u…qŒeÃŒ `ë §`ÝÜr• œFÌO„<¦¨ðÊmAݳL“›ÅbdÜà ®Óvº]Œ¥ØÉTP¥ \•èŸúP$Æ’ÀH÷tr´ ®ÌaºÍbñ¹j&íÐ €h¤ûM´¸sAû´™J“"©På ú‘jHò¨Õ!evš!ir³XF8ÊCí²©9·yZLD±vxhÉ5^°Ÿ¢Ì=šVb, nò%E—~«ýŒ™ÙLVî±@viÖ”,žsRT¢ÇÌÒ¬Üci$y 17/ªÙù´ — ê–ì²·1ç© Äªf±@LÁvÁ™¯à+§ý¬”Gc±Pµ“®ø*m‰€›&«:/N ¥²³˜ï©;Ъ&äà}yU« )HŽ™È2…΀/¡zÚb…@V³Ô{«'‚ß!Qv ¢4‹ùÓÓhåKáŸr5®AHT]FÛ8ÃÊVb,À¸ˆ€ò…¢3ÿ•{,År5PIµ0ˆw*”ü,­Ìv1§ñ†(WŒáYHD˜ÉD+18Cx17€‚°èÎñª6#„tDG9܇Kžäyy#Ý,–2câ;¨Abè~Zšy²¬n¶3¬ƧŒ·žF.b»ÇRl‡²dPÂ/{ºA_ÐÞÌj³c)p?*0„]Ù]GP ÊŒ‘LãD§t½ë ©MH MÓ-ÇXP„‚û 3Y(gÉšEÝÎŽ3ÇX°æD²˜0_ŸÎûfRYî±€$sõI6Î;±XÓ´3T°tÅË Cza˜… ­ÄXœUf,$4aÉ.3å¹Ç»`c½ÿ’’¯™M3O–5Å16ƒ#°™x´ÓmlÚd)iÂQ¸ˆi~5ÏÊ=™7Š®ôY´0Sv{·c½*N,[£q YÏU›mÚ9f Ä8©’3†å äCzLôBO¾=xZÛ´³Þ£3Ng( ²ÆÕÌ—f»{,p+‘ªxL¡¿™e…YÛ,›0T†V›Â‹ &Ø̳cG¸pÊ5×’]…ÀÌ%jmÓÎ^C´x:*0d€ÀÔü·¶ù¡*æ¡h…!w‡ª#u1ŽìZÇ ʳE” ¤è&_sþSÆ]°qšàh]³XŠL¤«\E/Y”®e_fq&Ë10º4zÖ pšóHŠÏPZw¥üœFƒj@à øy²¬k2ÑSý (¤aÉppp™gF yq2Ö*„Ü éÎnA®Wß;h1–0Ó:A¸Ð‘Š*˜yJ ‰Dòò!»K×Òma¥ô_ãÄ¢DU+‹9#+C‘Ù‰±ø7b;ÌÉ ig—-ÇX -±gT,EISù:Èlš±2ÇXЯŒ‰vhºx\ƒ"Òt ÍvVÞÔh«sP…p–«k9Ælð.÷‘F>È:LÁvwÅy¸{ ©Q¢¾@ ˜ÀÓElqg£@¨B¿ÆÔLqà)æOL€ èva6xWÊN§Ðn™’É W)¦bAv—Ÿ…mwîÓ­ƒbŇZãgªÚ$Æ9`pƒ¢(W@cò¶IyvÏÕÊ=HœÁòÈxÂã­ ¨Ø5AljŔÏÜJ$R‰Öö{F ÅXe D¸în"› 3Õ&÷X ø•=¦Ú‚¨BH³t"Ë1à`…Xr9׸øpßyîÁÍbqåh¢å Î\A´SVM;çhê:+beoôì>“•‹ÅRƒ.Ôi¢ä“žÅlhžmÕ+8L€±p …‘§"Mb, ÀpÁé4…àç8‘c,xC·¦ö&2y@[N 4ÛØ´s‘æ®J$¸‚©Ó\]+÷Xàª7ÈpÂdEX'¦8/ÈÚÅX¬²ÈF{šTD˜Ž ÙÎP.-´+v@€BŸÏ 4í\˜*Pn']íDæž¹ÆmlK1x*$•1M}S˜×ÇXTõ¡x‹~A 0½†bcî$ˆˆòxK217ëÝ=ºíF¼=@¦œ(÷XA Ê*gMBŠÚÎDZj2 ùP -Œœ"qÚ{ ‹±`“œ UŽ jžhwûŠ¡M)Uºh$\ƒœ§…û-ÇXàWÆS µ] Ò7&YMoÒØÔd"Ô˜B{<܉’³òæIŒî= “Â~Ébv—ŽyvÛØrŒ“°Ê‚%‹SЀÛg'jt¡A¸'`½=¨N¦XYb,&Âk똩Ž6³Â{Vb,Xåš|wÞÅ@°Öï„@'‹ñê]e¨ÐSÏ× »Ç¨ð­+(Õ„Ø5N¥²ÄX"‚{,FZ̪2T¬·Y‡å ^_Áô @«?@Û³Y†•{,Åä¾ x+È¢(„$½ym¹Çw8œ§ë.&<Ê\Ï´ ˆ‚òz0à?î‚÷zj|KŒÅrq*HD@k/€Å2s9Õqb‚æhqB¦„È{Ÿênœ’'£=$LÅb³mt]­°ˆqnLOõtœcÌ3w “ øbÝV÷‹izȩƉPàË*«bòdò,ÅYú€S¡ +ÉĈmס–ÃÔ‹ã¤V˜Áš•x™ÌSVa€\ËY¸Ð©f±@ý–„6S±@ñ0eˆ•Í´j$*#A|ÈKâìfSÍb1Ø‚´sF—;V šßNb,€•ÑNM©Pè•S*M×@b,`í!VŽ–ˆ€›ê'1(fÈ•j±ðÓ8““‹‚¦6¹r™‚ª#˜]Nb,PkÞØcÈÓ-AM%Øž`í M,0]¡À<å"ÞSÈŒ%ÆW;1/ ZO`°#—3«Í馽RFÓõ°ÿÀúrÓkiNj…ÁÅ(Z~å‚•#˜úœÜcÁÑ‘3½ºlçÈrcLlœ §M¨¤àfÉ™Ž-±AÓEgÊ•›:çÜc°1Þ{€â•¨X"ÖŽŸŽ içh±$uYe%°ëØvrŠ@•´ÞÑÁ³iš©3Í‹SF@éêåncQ53ƒÃ™æÅQ£ÌàÙöÖ ¬æþ€@Á™%ÈÕÅÄX V E±¡*²Ã¤€žgA'1—ÔÉ{#D O‘*ÇX°KÀ]Ú‹P7á_žžÆ—¾iôƒ~ÔÛg_¼Ù4¼úÛ/>ùìãO~ûÑßoŸ|öö‹¯>ùhûôóOßB gèGýë·¿y[þL_.ÿñÅÛ·/X_Ò äSäOè>¢¶äó/¾ú»Ïóùgý=âÓÊ€þ  tM·ìÁ[WdVªŸ¡OÓ/õ\ˆÔô…ò€RHáï¹,‹«”2¸%S5¤šà yË\©EôvÓ¡K4þûÇ·õù_n_}^ú¿µŽÞ——¡Ã7®ßËKm ÿ=!‰ú©ýþÉ&?½ÔNÒD ®/Ö ýHò·kJº§d…Àz¼Þr8fM \»a’Jp p‚¹(€=º²uK”|7¦è°&TºÖT¤ƒþ–Ÿ¬Ó^i¾ÔnÓðÊ9àm]°¤(ú GK š)vc²Ê{b*`±åú·´4&y‹ò¬À¶Ø±vL&.pÁ뇳Ó=%y |vÝTàŒ/æ~@J%ûødLmvÔ‘šöÚ³ºÌ¥3Æì ÜœæÉ˜:JÂ,Ð}ÝMX$“±P±G÷l:J¦Q*êÝ‘’ÒPñºRr×é°âZ¶Ø£ {L;Œ4mØ))-ŽIØa+Ñ@W#™˜hLæg{×Q&‡èG„€Vi¡ò·•11“SHPFX³©R…"WÆ%—±â]ýD”Š}g'?õƒ± tyþ‡H+ž¨”üÂìä!®A7‘älú[x2¦ÆFxîÏP-;…ÕêTñV?”OGé+C‡‹nµV)”pÇŸ€è™[\'cÚ˜ŒÃzvõ“Ú(†,sÁ>~ÿHɶ1A¥j'¼™§Zùðp޳“E°PÍ }¡í„öòâi1¾©Ì ¿e À$¶ú·ŽåžÍ.4J6“ƒ—>¹ÃßV\â…æÝoéàÔ(¾=hÞª™ÒivGJùHIoµ»¦1=ÕæJV5J¬¹I¯+ÑëÏNKGIŸ)É÷wÁ +c2c€!<ÔÁ9ní™}ßUìMn®…1 ·}j{7_ñnLòƒ´&¦_±aÅŸs•i¸„°J¤ ÷LÆ”hŽøçá¹;ŽIx¼í8ÍÉSþÆ2:´¹Qª˜îÝÍ÷Ω3%ú¾Új„ZÓwm‹Û>µ½“s³°âÎ4JÌ…Ä£Vx| ûºŽÇ :Ü1.ìëxœg×0þdüaL¨åh$ú€]/Çtœ]hcâuj'xb#ÇÔñ8à\Ò-ûž»ã˜:gœ;¢`ûˆÒqLù8&¢Œ¤"ógZªñ“ïxœ-‹+»c¾N^7J<;™Ó.ó\¡dŽc¢ÙÕ‘ìío ”:g{€l„€ØµÚ ש£äΔèûñ`w,Pêä8Ûd-胵°@I–³IZ’ÃFäø~jÆ[“ rFª¾[;->)Ád›>ž»ç<î;9ÎÖÎh =“™R­Í"oZêh›?Sèxœ÷ŽvŒlëjó-ì]èä8Ÿ 97ƒ,˜ÌîÀã”Y"Öë.í %w¦DßW‹xavóÞÉŽí²‹ÇÔùU:9NíÜ{©2ñg×ñ8ŸŒvZŽXeBIxü›2hÎ ¥N޳õL5½V­ì…Âã£ÿ*ͱÊaL±Ã*ì¸ò,PêðxÝÉs°v‚cgsòÞ5Ä:ñ®) 7ßy¾Æžƒ…'.hXŲæ];Ž©“ã,AD¾Ì4‘’ ½yÈañ5ðA<“OíÜÅ«ÔuÚiuE³¯eaL_…ù‰¸(n”‘»êJ=§ÙíâWÙ›¯e’ðx[qYçýŽŸ.u<®¨šÒÖÉêìé{¤Ôa•:»]æ´Ofw Ô¶˜Ö™x¼®óÞÖ¾£ô«äNŽ×uÚeuö¶b c’×Ȳ œYíŽ]"øï9~ʶQb-I’2ì»É˜:9Î’®ùX²`2¦Î欨§¢&²`ÖQOsñšxÓnÉñ<¦6’ ¦;Ž©Ã〺È+˜,ÍQô‘’ðxÛ»æ/¸£ï¨wûaïšôn}‰’–1q4ªE¨ˆG×p&us‡Íƒí¸’|çß~´N=%fr±«¥™7¶>×ø‰ú»Ó˜ØNþq¿õžòJÌä {7<>‰& +οØf׿4±¨J¼ M‚4©Òös…ÿb“jM7ÜÑZ¢½‘Ä™¿àHI7gœÙÐåü¤Å·ß¬Âf)Þñ«h tŽÒûàÓZá'mO”šn8j„%æñn>±£}÷\Žk tÊ ÞåÜî-Vµ²NA(Õs·ËiÛo;ÑrÆ:™Û$òʘ˜ïÚê6/ä­¼HiâÂô€GVÜœx|šû[J›&ÇO²d§¸8; tŠ,èPÏ$b:Pbo{w!=—(1^мYñaïšg èB*,Qjrœ×‰V:¯<4W¼a•zFv9#û1Sa6¦&ÇO«³ßÉÃÐ"Ç®pÅ_t³JÆü©fU-®¸È±†º®ç ¥†U8¢q›¸¦tÜ;‰\ätͼÿØüaLvë³ .£¸t°:›Í{e¯Œ‰×³Í®e±ÝË]ã÷Æü²>Ÿft +žeL̲÷û­? tÒ˜”ÄÝÉZ¸ÈWyt‚ý™Ç[Þà<[i%#”NÖï~'OL‹÷»y÷®|+”ói½òA¬Pb¿Êé:¢è ξ¡®+L¶2&»xÒšOm¿ãÏÔòÞE.å-¯¶–@'}ËÉ÷Ãú%¥#gJ ³é–QË,Êq9ŸÖÊCÁyóø•'ìN~–@gË`$o«ÛFòó< -NÉçÛ/>-‰ßcmä•~šk4Œ‰9¸»ÅmñØ•159~òeï“,ÝR“ãÇŒ5’™}Þálvͯr²£÷;™žZ£´TŸÇ:£ÔlN¶Q®,˜JMŽó`I›ß°[Äh˜.Ôv‚Sì;Pj<Έ÷"°4;^Ï ³ž¯¢YJw±•‹ÈËÒ˜š?ûŠn!ÖØÉñSþùøŽÇ«¤Ý/äð %tî™ì·b¯ZW98“lÁ’‘1±–”œøë¸Ô#š?zçԻ嚒“×ÎÙõwâÁ:59~Ì[lèð™'«³^Sãñ£·7ü*ÔÃܲ_ÄnïÉñtâñvÛboqëJÌãM~‘EL'Î Yp+F-çs¿à‚½e?<¢Ôí]n<~’û-YgI{­^¡tâñ.VvËFàó¹_ŒéV‰• ”‚ŒéIÜï VÓÇ9O7ɪz6»ž V9eö=´¥®ÇtÊWÙÇû)‹Ò—ãœt‚5iÞk¯ÑdD"^å'LrCJͯrâ¢{'Ø6¿J½º_Üí)=œ]Ã*ç$w"ËÆ6<~ª:píñ{8¦&ÇO±²YÆÙ‘3ù½SýƒvduÅxü˜õtKsÚ&ÇO®[Ù‚†Qä~qåÚ«­¯¸(59~®¤pÇûo±íc”$?Á™×cjXåhKÙ~Å®Ç4Pb9~U»âNœÓð©Ú/|¬·|bÆ5ÿøù~Ì-Íøas)ã_ôõŠ·X~õôwÞÿ;÷ƒk<~¼¹¥É‚Gc’8çÕ°;qÃqÎ}¼ArŽNN4Ç9’Û'Q܇”Žx¼ÙÁ=£)ý*ÙÈKëÔlNXñ°õQà;¹ÚÆx\4ï5Š~8»æW©òiŸD'Rjxü|·©Ý|Z™]ó3´²Ocâ8g“Oû$Sá0»Nß…ŽÇë=î†UŽcšðx0㘮ns-Í®òø.7•OwŽW)±£¸õ¶érÖ· Ç!bK¾lŽâ^Þlx¸N-–¾‘tKŽ‹Gþê¾Õ-OÇ9÷‹ ëíN†µá8ç~uf±GJ]œó|‡þνW#qΫ{³·fÇ¿¸_øüoeæ¶Þö±ÊÎݼáøÕ>ú že]jÎØ° ×Oxd·LdAl6ç©ZÚ­\mV©U0®ªu<S'é8³u²Îq©Ù:eyíä7¾%1ç*IÁßoE Ç9÷‹[-·2„L:Éñýu9~&µÐ1“}Á*fwÊÉÚG?ÝêìšïðdÛߊÀ‰s^i”[>ûÔlΚ/¼Ë]ÿëþÎ]j<~ò¬ÞÊy0)Æd·s†g#ºs—sKÒÁ*ZàñܰÊéváµ~4»ÜlÎS›‡òézL,Ç/ò3oÕ`4Œ¶÷‹»{«ê6¡„+î…Ò©ZÈ­»n&7<~™÷0Ä9Çì.FwO¬²aÅ™ÇÇšžŠ‘ùÅ >çÃ¥†UN·§oEq±=ݰN¯óX‰s^U ™ï]W™Lîsö^Ó&AÇÄ<~'½Ôwä“UÇHîú-Ç9/3ûîÈqËqÎýB·ToÄÚ¹³ªñ8[ù“Œý‡ëtÄã®××7Rb¿ª{{ç¾”•8çUíŠ;µÕ'9^m©p°ªŽcº’¾–㜻Ô:Õ%Z«kduÃãÇê1q»çÉŸÐ>ÞWۃ쉇+Î<~qãñVÍa+qÎ1NJºá:ë»­X'U$ÎyUwäN¾ŠåSµ_D–oùÇ­n<~¬vŽÀO¸€eÆe­;¾C+qÎñ6½¾i)ZÓlÎSe²ÙíóøE•Çõ .Ïiþñsµ’à œ üdV9UͼU×ÈšÆãÇ»“wo?[Óxü|ôN&•å8ç>Vþ{£Èrœs«Ïäí^ö©•8ç•/ûŽß×ÚŽÇke²G9È“sÇqÎËJ/wâÁ–㜻Ü%9U]Z\q{äqÆOn=œ]“ãMtãÒ?þÒÙ¯òºŠÖý*MoT¯ðóø˜ßiŸØœ×”˜Ç¯ªôÜÂãçãRQ>­ùĬÄ9iL’ß™”ÌóáÞ¬ ëV©7•[¥ákI÷ öj]ãñãm2âŽé­ÌÎ %X]BM<ÏcFì )y¡tªçú°Já5¥&ÇO5÷nÝ+³ç¼ÈW¹Uײ ßÕÐ3_V)r²®²³V(ùÆãÇ{ýG«jaŇ8ç1«€tÂÆ Ý'¿ÊUm›¥Ùc@cnÇ*¥cNÖñ–ÔeÍ#éëŸjXw5É©¯dÞxüÌEó:íý˜šïöδùÜ5ë›ÍyFM“Ûô?å¥ ¼2;‰sŽ~>òû®ß´缈»ßªkdCãñsEœËì‰G+ÞÅ9O±‘®.ÑdLÀOç½N«3<’¡áñc­ðã ýJÍ?~Ì{Vmöšóø ¿S´缺{ùHs^SÊ2&Î˾èÞ°B‰ãœ—U0.3„ñ#‘}¬f”¶õŠKœó¢{Äþ(ÓóÊÇ*rl¿¨Œ?ëy5ÌΔZ߀‡5ö¯ÇÔxüÌE·<ç«Ç<«†}½â «œ+,ÝòûJœs¬bßr°/Rj<~ì#ñìn÷åì$Î9j^sÀ?+”šÍyê&2»QtÜ»tÄãtÚÎ^éJ'¿Ê©ºç¢–JMŽŸóîÜêµçÜÇìúÈœe|=À©ñøÉK°O**µTŠ'J¯«^l»8çñ. ½v­®ù©Å€NÕ®«ƒ>’¾¹ñøáûöYþrLçl·‚_×_ÊJœSÐi'='·œJ§|•}¹+Ô@éÄãÕR|VÍñzš?ûnù rÇã‡>9j»é/8çX–b@7â-¹ñøù¶Æ¥ùáÞüãû¼KÆÕìœb¹HÐ %-c:Õ¿YvrŸó¢žØ­*N5?ß当=áTÃ*§Þb·ºŒ9uò«\UA]¢Ôðø9ÿüN•B'qNš <¼è¦F¯<æLèå$qÎfÑ“}ö,Ó󚟎x\m—¦fcJºñø¹Ù­¾Iç P#f{{½œÄ9Ç7¹ãtYH5§+.qΫÒzNâœcw?#ŸeÄ9ÿ:fÁ=Šå_S B队Ð:,¬8®SìÆÔ{ H¾\Çò¯ÇtŽ‘|‹[Ÿ+½2»Ü©Ï}{v7é’’i<~®ý%u÷g\€ÝØŸ³ÆïÜus¦Ùœ§Š6·ú9sŒµÈá§kòõ:u<>ÆknÕ‚t´ù‡û˜K”Ÿ3gîÜ7w¦“㇪¼z»r¦Éñ£?ô®7ÄuqÎó]Þ;qsgÏ<Þ8{žóÐSj6ç9—òNÝg?W€[Î`„sg›?fÓk×9È׳k<^ý:¯ç²óÙ#Ig£,Ï:3^Sj<~ô‡’·õ:ÎyM©³9,klc¹+”³ÇgÕLw=¦ÆãçzË^Hà×xüx·‰ls–y“1!¥&ÇÏ·]—3¬‘ÒÑæÔá‘,¸\'×xüˆ.ªÇ÷nˆsëýÜBö®a•ã͈gw¸®gwò^Õ]SU†:¥]'—•½k¾ÃsÇü¦ÌÞQjX嘉E÷6Ö½ÿNâœcïhuÀž+”zo“Ý©¨ì|ÃãÇêêq{Ûx$3}ãñcô€|Ñ7,jßÅ€N÷­îd-9ö’'Œôݺ'Ëù&Ç9§Ïêþ_Sêy|¼z'ß×ùÆãÇ;ôj{œÿt=¦Æã犂w2óÜçlžz‰qÎGüzïnµëY¬Ì.49~¾|§ê€ G?z!'uJgos-J•p’ã§» ‹§%49~¬ÌAü´Ûþ§¬ñ°=ŽQ_jóÐx¼Ö)=e >¬Ö?Ì®ùUŽ·ÉÈf¼¾åt9»ØxüÔ•óaWòkJ-ÎYï!]e­Ì.69ÎÐXónÑC³F¸ª 7á'Ø»ØðøÉc¸7ü³À™±ñø±“qÃø‹8369~êÙ~Ó½à_þ󧟾ýê‹Oþåí¯·Ï¿øêï>ÿÍçŸ}ô÷ÛÇŸþů?ù죯Þ~¹uÿ>úêóO?ùxûâͧo¾|óò1í½n.¦†:0 ?}þðË—M£A Ûü´¬”‰œ?–i°këй‡Ÿh8¦ÁÛÒ¬¤ÎÑ8|Uiø6:Lí,uæÍó¹¦ÁîƒÆ»] ô9ØÆAflÓ[aûœFb|ô𢠣>§‘™ ñ&×»´ç4ȬämR¥s¹OhèJƒwóv×'4ŒÐ S¬áúî2„†­4X4ùß…Y&4œð¿&ù»Ô„ /kJ¦jËêì\rhôkÞá®p„Fä$i·Úº’ IÖ£‚Á]úÈ„F–õ¨î)ñIu ïÏiæSf‚˺«8ZæR b±‡»ꄆ‘qT¸#º”Ö +ã¨î>ñöu!ï æSq§È‡.1oBÃË8jpLbc]0qB#?˜Òˆƒž»PxOô\á”Ü…¶{2¸;àïí+Z. ªϺò‰zƒ›]#þ^o6<^/Už5ísv$Àßë“!ŸMYò„0V‘ùQfÌ‹q^Ä œ©Š2…ªÊY¹÷±ÿg#ˆ#3LxN Sm\JÁ *¢9ƒ§#pj$ÀßÛW@ÄÞd·È‰ÎÊ6ÌQ‹œè'V$ÄØ¨7TžMÁSÓxÚ…KVv~Á¦=A×@Ó Ü;DFP‘c»Þd6‚ƉÆÞsyÁf>%à'VP|ÆËÏ èq <ò>yê3Ž€x_ê…@ãÄŠcÙöNŠgÜHàŒ‘Ÿh2±"Ø3¸}N€9ñdç,ÊDÏœx2ØÎzáR¤ù4Ít: ךL¬ü ΟN!¨q D¬¯}…€w¿O}~F ÉÄʸÌÓ‹§1ôœˆÖÛGýµÊgÜHàli='àÇ]àÅïS>ŸãÈq^15 Ɖ•q…•×´sHƒ­½¨XBîQT«¬s8?!•Lað\,jçØ´sµ$ÏFæsf˜Â……ùœ€wA@ÖÚaŠÌ‰b@žmËçü¸¢W|'…@“‰õðò¹^ª1ʪíy6KŸHÃH«¿½òŒ@ù€·_ñ1¼|œÔ0¹Ùç§?# ÇE™¸âm)'Vg„¸'º¬Žgì@àÂÑñœ@/ñ8Ë)^; ©yzªãìâxN È.TçÁÙ¯ðœ@”TÆÙ¹ñœ@Ö@ÄÀ¾&ÒR¦ ·\öµ)d5,¢$èí+î¡B@k 9KýÅîg˜OþÓE°­¨jDËš½›L¬EäÈÚi̾ÛFPï ¬©÷Ìœxòe/båÇȯ!”Üpb…Œ4a^Îã.ˆÝ¸¦4ü×A&òâïkb]c¨g$±™V<ò@À0+WGàÙG8!`Û.€ÁÑ •5ƒCcj¼î܈gã„€¶Qp⊄a 2ò5£KcÖ¾î’rå8¯Y®Q”îd©H×5¡ª1Mwk~ÞŽç´pbÅHÖðÖš×`ç,ÚÎZÞ…Q..¢¶Ó¡˜pÃă±f/hí‡Iî–õE’ždz É‹ûâYБ·q”dk6“Öi`eq- ™•+Ûœ9ê93p¢Ô}•€ÈÄáï+ÑA `ާ±©÷•° °Ã.œDÓŒ€cVÍÅ5õ®œL—pÜÆf/¬„á€@d5²súL¤A3‰BZÌxžÂX‹þ놳 a¢ÅãD&^À}%ï ˆL“?ÖrqtÛy°µö•Ì&H{SÇmlÉ•- ˘µ0¢ÈÄ1¯k+G; ”“ ;# œXÁÙÉ7:#P9ñ¬QZ$Nl^䓃yF@dâhõ/‚¬Ødâõ¸Ð1ù`?ɶ ¤x †œÉÅ(Nb±ŒóEŒ” `ȸ\ô­ë$2qp¬båäxÆ|Í5϶N"Çžµ¬0° bD/ÚÎ)¬,ÂqQ&¦[ j%äA œmàç²â §q1ÒE§EwŽð“|F@8q8‹Á:êJ©·‹¤ÝEë=œØ¼û‹H5'î§,Æ™t“xžˆÃ.Üž‚pâ˜Å½(‘rf½0¦ä­ÅXŒR,ÒÆ Ûµ,QÃ1–Ó)^tH5râÍÓh8ÆrÎ.]Ë€0J´óˆp×’†c,'ÇÅ¢gÛpŒå„­=Û†c,§ì‘E™h8ÆrŽÑ­¹D‹eL”^Kò4c9篬yó ÇXÎ9¾kæ¿ÑâÅâÕ‹òÀpŒå”=²¨ÚŒvÇ\„¼&<`¼Ò±0Œ™8Xï‹kSc,ç 2‹ †c,çÜÎ5'Œ©1–ýd7.f@ޱœs|×¢<ƈv/+­9 L±ì'‹eU Á‰ƒBZ ›cÙO 0‹V›áË):´¨M±ì'µuMc.N¬%º#ÚyH€YDëÆˆÅ2º×âΦÆXöS^ãªXçË9N¹õ5VlçaûW“µÃ.œnÄLvÁŠv“„×UÆ N2l0ÆŠLÑšwßÔËÅ%ʵø‚±#N<Ç'D&ÎùUyàší|Ì2^t'2q¼|¹æ55ƲŸÜ«ɉvs¹Öк©1–‹{¬k1Sc,ûÉ“µèÁ0Nü‰cžó¢<¨1–ý”E´èÍ3c9_cZ˘6N8qH˜_=c9gܯÐÃY¸"15ƲŸ.,†‰ŒqâMG”ñ£í|Óü7Þ‹xW"ù÷»0Ï‹í<$J/†HŒœ8f›¯e/^œ1)p-¥ÊÑÎÃí“Å€¥ |¹:sÁ9…~FÀ²<K,"”c¹È¤ZÔ A8q¼ ¶–èj‚DûÆdñE™ÄvóÝ5ÆrQ«a- ÄÔË~Òê«>”coä­åæޱœï-N¡ÆXö“'t1DbjŒe?]X_ Ö™cÙOvãªTŽ¢Ç²‹X9ŠÅ2ÜÌ\Ì4Q´óèÄ[i5ƲŸ®ð¬: 8ÆròÁ-º… ÇXN‰Ò«V[lçýfðÞ¤A&î73aLÏöÈ?‹p? û]J/Î`í-ë ÇXÎÂxÑ£™ÄbÊb²¯I‰ƒk1âiR>Žà|WsB 'ÑâÅ “E;å„5S‹eð#­Êƒc¹¸4°(ÒjŒe?e—®c9]ñ]5û²àÄñ†î"BáËùÍ"ܯ1–ýT3`ñŠÉ¢‡«\‹na«Ô°7íFË1–óßµ]°|å¼{kBÕÖËE¤tM/X%œ8ÆfKyÔËEÌšL´jðlï7óÒ¬NôÂb’§UNÜo^±5ÆrQœl-Hc9Ær¾ºftY=ÈÄýæµ4[c,b`-‘ÅjÁ‰c±¹5„Õ‚ÇKkòÀÖËÅ œ5±n9ÆrŠÍ,¦Zޱœï¯y0l±\\s^ÉV 'ŽåúKûÔËÅ­Ä5±n9ÆrÊåZ48¬‹e¬|¸æ˜¶5ƲŸbÅñ'ŽW|×,WkD;e‘ïþ[†E¼y%Ëš80ÒÍ[c,û©ŽÊ¢ÅÖË~ºê½¤±c9{×|iÖ6NêZfœµCVØY0ÌXÁ(Íײ…­9ñfÒ·µ"ââ kGÛùæ%QkÛy¿yçÛÖË~ÊcZ´X,ÇXÎ×Ýq"ÇXN¾õÅj$–c,g€ºsµN´óJ³*Pœpⲿ¤±c9] [ [ޱœêk-Z®Ö‰L*¹,:¦-ÇXNqçÅKÖ¥#sé¶!✠1™‚Nï.òÁc9'*Î ¶óùöøŒÀèÙ¾™Fbý±ß¼~`½pâXžy±†¤N·±†¤Ã.ܼ’e½X,#,XóæYŸ7Sï-ÇXξ—µ[$–c,§ÝâÝ„GI¶2µ-Æ2xƒË™XޱœÝ‹6Sœ8ä`,ÖŒ³Aü‰ƒ:X-ÄYc,gx¸á°! »póR˜åË9-q±ši±\\o]ó¥ÙcÙOWþ£¾–c,§R²‹U,mí<Þ‹\ËÑ´Ñ ì7+yÚ(œ8nÿ¢áÉ1–Ó•íEᄁǢ‹¾4ޱœÊg®º@¢pâè¸X»Uf9ÆrRH‹9Y–c,çæ‹¥Ó€Ï5gÛù\ªiF@dâ§\4ºjŒåº"±I8q0SªlŠ›%ßl‹±ŒYÆ‹B5‰g{ÈåZ,ñd³:.â9=lF@ËçÍ"ÀàË©À÷r…ç!î|@ÏF0pâ9f6# 2q´7íÆÜ8ñX›zÕnäË)2²XˆÓæ4lãÍZ 6þÄýfY\j~µý«e²kŒå¢üÅš#Ê©æOÂŒkøÀ);ðÁÍ2WN‰vîò,V|wj°Ïåªf°7ËÚ8ޱœÒÚueÇ1–sÌ~ î;5âÄ[Ýu¸woµÝj­ÃÝ»»Cx.¬:™ÇXN²ÅÜ<Ç1–³G|±d<ÇXÎ’ÖZH8ޱœü‹Žc,§8åb"‹ÓñÈHçlÏѳ}³ª­ãË9{dͧêŒpâ^Zó+;#œ8¦%.V½7b± Ù#«UïÍèÙ¾Õ»‡ië ôbÔ×™&‡|¶5†3‰cÀ{Qµ™&Jyµû™8úŸÖªÒ¸co!­©wgGN¼Y˜×µ˘E´ævVpâè>Z³Úœ™8&Ä- +œ8”xZlèâ¬pâàN^nä!œ8øŸc,Î6‹e0X›™XáÄ¡!Ð*B±Â‰ãÝ57s‰C¶ùbÁvçD&Ž ó‹ÅËͶ:ÎÙã"ž;üÌF0ÄXΙM3þÈHçz˜3ƒç\ókF wá|dF@¼8c¬vÍjsN´ó˜ø°æuc9u×Zl³å|ljǔýE„âÍq ç<‚áÄÑ•ºhtùæÙòÝ×\¢Î^œ›]™8fR-*WßqâñþË"Rõ‰ã¼57ó‰cthQ±Œ1–³ks2‚ ‡5¸Ù‡Ã3¬ÁÍ. œxöPO81Œœx³ † ƒLø¤vŸÞ¹‘uÿz}bùI¢îíI­­ŠOj ênDíõúÄÉeOj˜:"7þ®¼^ŸÔ&Óoœ¢Æ&íI-ûSž8]›Q·ßí^¯O¢ü·ç'µö.~§v¤Þ¹!t¦lj8þn™tž¡^Gè~·>©½žËOnèž©ˆOjoê[e÷#ªOr{’ŽOê½@ djƒêÃÔøõú¤vŽ.OÌð¤–D)O´­]ª»%m¨Ojëçž?ɼý0"üÁ~íuzRûPÃïšã“z'¾cj¿ê~íõú$,©¼NOêZä–㓚òŒß©Ý¬û%m 'F=|¢·~DyØöz>½~|R«ÐWBF=Ú›úʇOȦeBú!!ýh×êc·žy´ü¤®žO&ŽOlOÈ>Z ~„HöOºu­½®ÛJô¿ëè 1ÏgyR^ç˯×'•à ~³Ç'µý(†Ù¿Î<=!ÀˆO^ŽRôªŠo2«“mx¥*Xz¥–Û½~Èßïµ¹h>• Ì/Ãêté!ß^¾?_TE÷†2ÀúñÕ1|?ç£>–‡¦` Ÿ‡ß?êg]lo_†‡UUj°ü}ùJê˪(ßhzÛðJUÞÚ¿q1•n{xø~¯NÛïç7! ºVz¿œ¾qz%¿ñZ½.Zˆ³†ÜÆWHÕÓ+GÍÚ?TVÖ¿(¢:Ë+Öú—áaUÿðý,ßÏ^±À=UQ§å!Å¢úõ;?ü~¯Ðû‡QÉ÷ûµùØ{««*qü ÌàøœqF›±© ^-nh>úüÿ㟠…)l%…]*ML°aA ™QjP åíS¡Ýl©­V÷·n™Òf53¹4 šÕóܱµÝ!ù¶ÖŽJñ;çÜ¿Ÿ?oÞ{æ÷»ZÃ{Ÿ÷¹÷ÜsÎ=÷Üsν÷\9­aû¦—¿dÆð?t Q_Ÿ¡U@Ñu³ÄåT‡ÈùvŒþ¨õQþt;BéÛrüé°å$CÄ5œlì%7-°¾#åGŸ†cE²®È‰ñ7äøqE—ê;é/=Gé ¶œ °ˆçfc/¹!BíKùÕ'm½ˆoÙHÃrŽCæ:n¼ýˆ‰B(Zщ\©××/mªïgc/¹Ùb‚ç®ô—n½¨"öñ³¨ÒŽ!â¤üD‹pƒêhcQÄËh}ñr^7Á±6ìlü%ún¢È"Ì©d™kŒWõÃé|a$³¥ùÊd#Ɖzép¨úâÒ ° Hhdã/™Id!qR~tƒF10´¡ÕØHFàÌxûc‰ô—®¿ôÉqiôà:ÙÄK’?Û›Îw4æ4#'RDÖ×–ÀA8|Oê¯X6D- T¤•XPò%Ô÷4ü5Ä%‰À"ßw²±—ÜÜb/e};¥MÑV6Ò°´¿9¶©1Ä`þ5ü˜%&_Æêk°¥efQ˜%ÉŒ3öRö¿å—+‚Q£Ë¯é^±xùµË–,^…‘”¯X–» 7o‘¨}y<ò ýÒµbÙâkz—]}}î²®ËÕ»,=gÕâÅçæ>põ‡¯_±hÕÒå÷ä®^6=7 &û¬Ü{/œyù9Hú990ƒ|`…´/Y‹—-¾nñòžÜ’žUÔ,{º®^=}Ö’k¯ž«²\h;+÷ÁÎ\îÊ\nõ9;çãœA¢Ä‚r`A9(uÎêÔrÎÆb˯>'/&Á9PîrG”ûø9KçJp-_œ§7[¦€ó%@o3 \ Ë! çäW§ƒ ±Ø**öql5­ _\^p/Î45çË´JÒ¨QA\NgKŒŠ•áé(ì+åÀ¹z±üêÔCpždÊês>^†ÇΗÅuéò„àYJ•‘OJb?N‚R†w–¡ºŒ¸’.(–©‹çÇÓy‚à,UÑ+#w–­ñ$?8mT©‚’yí¿ÿËÿ[1ÝOt(*žãÀ§‰ÿÇgÓ3úÝ0Àൽ ˜®†çud¹(ãùn&gœhÄð¿ÞU=0#æ2ѳxUÏ8å®»ºgÕ’ë^ Œ^ÑÿrÉÿ.Ðþ˦¼‡ÿ.W×¥sàå…¹¹—]úžË.ìʽûÒËh‘_uλìâ\8ïâK/É]úîÜ{.»tþÜËñ- I},7¯wÙ²%+rs—,»ºg Ù.[¼j|¹þêÜ»W\¿|I?[|ýª%+–ç.YqÃâë>¼øúœÓÓ ºLÊ(æUþ‡†TîâKfýù{f_`"€?ÉýyçÅï™=ïòÜ…—ÂÏÌu]xù嬨¼Kçˆbðµó² /™ÙyÁÌK/¹|Þ…—̃"â+‘«J Ât™Þt™ñ–›Ù9˜3å:^Ú·\(-´o¦X‡Ä®\¯Ó¹óç2—^6ëâK.œ× ”\2 »çâËr—OŸ?Ê‹µ±.y‡`ÕYˆå¸yÚ4Cv@Èо¶øškb9¶w¯ªÍ€ÐhÇ)øánʦ.€-ØÓÏ0©½Àô ›¶UX&Û ]€£a@{´|ïù˜ï·X®U€«a†G1i± ÏYf…±àø °µç®á1®]‰‰Úì€.&•æÛn@êÙôè¤qh’¶€C‚„”³ƒ! Ê0p F±CF: àÑ1?n…ntMM „0AÀ76ÃØ^%ÁµT7‚Uà“>p€²÷—Rz @Ó‰l.œÑ|r•àKhTš]G Á¤GŒÀwÉ`ôáKAr]Å0¨:Éb9”â‘f˜JN—«éÄÀ”™÷el?XY•zAJ"Ì'ùL*Gæy€RibqÕ Ðû &˜æC¤Ð¢Óáã³3è`›öÜ£‰Ã€ÍTÉJó4I„_B’DÏÃþDÏÃ6*)UOÓ‰vàÛ¹Nã-ì—°‚$z–êF c_4Ÿ6;‰nƒj© ‘<ÝN´Ã€Û—;¢ˆøzÁs-pCæ¨ËdàSvúqh³³o¹Ì´†Y–ñæf¯ šÇN¿G‘ITh•Tšç+Q •1`nSº”(?¨Ä©aðÚ³TC¦ˆ°_ ¯€P–Ù3Ò]À¦´#ãð5I´,é°ûfq‚Ý_¾©˜n¦ËìD°ÎÈæ…Ñ\‰ßÒ˜è`²Zœ]šSaTAwV`+A‚Ñì“pÑf%%çVŒøšh^@bã>SϾE‡·Æ y,¾i³ÓÿA貜>i¦6ßSLÇa']mÏg‚ú&׬¤,ÿÌ]rÙôœ‰Eç^vñ%3/ž{áœÜÅ—t^6ïâ s]—vubÈ㟳:ßÓ ?³ÊðpYg'BÇ„ÓÉCódË6GäÒËæÍ¾ô=—^ráD×…€Ð|‰ÒeúŽ8¶”ÁvÙ io‘e/¼Ð6˜–"=/ x!ô|<“C‚>ò(§ ~·“í·@{ȳ}Ï5`H2Å)•¤ÿþ¬sæ¼K/»Ot]ø§*‚< cD™ø'ÐèŠó+ §›aHƒ¼çɽoª“’ßøÞAúf<`†Ç¤ß7èL,ž%r³2$“ïä8ʤ{°Il—pb¿‰ÊóZé899Õ „(ÓyöÍ!œBË–;CÆ$pœ,ð¸vaߨorÚø”l¥ñYõBeŽû)TýZúN¶—Z_A¯ Ið Ù÷–” HyÉ'ÓˆBòuÉâ0mU$Áq ’»4>×BØòž.RZ«¡ÎŽâd—éÅ òdð=_\ ¢Ü±"½Pu®j09FÔo©Ì$OÃZ¶„dIèvR¹¾ó“8¥À¬'É„¸¾ŒÛRÆS4]#X£NÊxŠÈ×¢Ul?‰S\?•9ÍN’²ïú¥Jœ¤—|Λý$äbZÅ7#ØE!¥'EÇû®:yr¤°( CR—>ZÊA’SuÚQÚ³ux>ljâdEÆM…Ñå“&ãÂ86MçÄôxd¾ÌGõSHRÆS,¹|Mò¤éñŸÏšö«‚ãaR\ ªóÊ\iÒ(LÊù-ãë'Wks1µå«Ó‰bç«,ž„T€Ää„TB‘;_ƒ0)‰éü85ê¹óUôBʸŸa¬’1>¹ó51œ«”'¡kì±ó5Ÿ˜Þ«e¹ó5)ÁÕéD±ó5ŸCÕ‰²£$1>)W§Pœ„N”scuú@ì|Mbž¯R”NŒñ Êá,w¾&Ô@•Ý(v¾ª†k´•åÎW9Šk´T]¥c\e/ˆ¯ù„X%ݸNÌ%™1>7FBŠjŸ^|,Ôhl˯‰!¯ÎN;_ó‰Ù¹ÊéÝU³sL«d¢ØùšOŽ¡êx w¾&T9äÎ×$ïªã§$1f©V9µyN@ÖºØùš¬Wå`;_“Ý_¥ ɯ‰AX­q5š8^çAnŸØùš$½Ê± v¾æžN•Ó»ØùšOL®UúLbçkR«”±ó5)?Uú ¾òXbFz•ÖºØùšä]uLüßš[®æÍÔÒ­YêÛñÉí8'@²72±#âÐ2ƒ'Ï-êØv˜È­âoDjÇgÆ–‰¥)Í_,ÿµVœ¿‘YŸC?ˆ¾ùW±ŽÌwiiÐyqþFæä seŽNCÇÈ µ+ÞåÞ8¶z“HÊYká S±ZÏ’ÊꔥN¥pŒ¼Œ¥ðÒ¨V)Pýé–ÆS r¾S~Q™ÐN+b¹ØËñ¨¼#0?£ª-Â{Ú÷<3ÊI•_/­~´‹,<™îdc/y/!èx ÂhQ_G\v¦ åHŠáýÇŠp³ÌË×ò£½–M÷Z~´p¯åGK‚û_–m¨âݲ¢|þ/Ïô|;‘ÿËó2¹×òøÿrÉÿ^Ëÿõ¿"ÿ—ÜÃÀ–G'–Mo®ÆÁ`\&]NÍóÓ“g™ÓM›_IÇ`– ·Òy~GÀ'Á+ =âü àWÀ@å¾2)Ç ßµ|º0s_¹f¥¼ ®ù…t <#¨”Q@¥03¦Û¾ëP¦"Æ|yß²+`hFÀÎÀKîtXÏ}°ôxE!¬Ð¶+0Qî ƒçË}$°Ì˜û*¥ž@nä \I"瑉‰üó"Tu$`Â53B‚ ¾N%˜ ƒÀñ}›å‡Á7˜kÂv*%QYØ0û–ÏR”p,<ôZ1š­„"'g"&¯±Óêé9UU13KÀèõ"L’*¥e Äà·åÁ6Ò‚ÌJÇñõf¡I7^c>ˆÀqÙ¥§†]a4ªTv€AèZ£Åfá,à +¥çÐs 9¦íz ˪˜ÂÌÐÉ0Y@÷ ðÊL”$ æP$àU“~¥ôr/ }7ÝÐâY=:ØTJ¢fi‚ä;&-R…!¿ÎÝ3­Jy^d7Rî=ßµ´n5kyF%QÕX ÊD¾GÔz¥¤I*œ·l$H Ìy1Ûp*I¢«¶a±Ádz,‰šeÙ~¥h–’Ç£ë=5&š–ëVÂ@¦¦pà7‡eeä݈Ã+¨4˜T"9Ì¡`Z4¹ÚOA8¶[CJCÓâRhØ,ϧoF¥¬ŒZª ¿¡1ÑÀD`FA’݈ ;¾§w#f0+b g–pñfÆR¥l|ÚÄb³Äc ÓŽi2åèn¥dzÚ`²-º% 'åÐ¥ô] [+%ÑÇ‚a†¸v…éL~ýnP1ç‘”ƒ<¥ýbk†R`ºu*0QLAh…,[ô¿ÀJI“dFBüÍÄœY(Ó¡eÓ¡ÝàUõˆªrØ ~%G6ÞÒ«z˜°Ê© É6Y^ÃeìœÐ«˜ÒPÐg%"4ßäÈ(Tus#šTGfžk†Ï–âVÊÖ«Om0<'B‚︕é£ƾoGä 0 ³åÌD*­Ÿ[¡çÌbð+&m4º†Éü õ˜~‡çŠh3“azh¥I&b­Ê’¨g¢£TGªqT…^%c[›X0c90»ÛÄM×ð+I¢>˜P•’¦#/A®`èƒÉ‚©ÔŒ0уBÕذÉ'sÞ˜ü6¬4t%4)©+æ 2m € »’NÔ<–РûOÑT!Mfâ5ÞUÏ ”Îô˜B1CƒÂ¥X­Ó•§,ÑÌNä$ èVšXÔ܈þ‰éèr´xŽY‰‰¦&H0Åà@šàUJߥæF{vèFx`¹NEšËãXtY³ìUVXi4êÞ»oY,'"&fD:îq0Ð\ètž_Ö3l‹m˜ó*в604­ËNYuO'® XÃ’„ ¨èþëÉ·ÁPuB–éØ h—£–æøtç† ³+@;›6³]ÍJ³³î±žk¹mÌ¡^ÉoT æÿ Øä’˯˜ÖÑטïý  ™*feÔ˜h€2§Dr~h†l6˜ºHг¸ÛÇxà{K¢æùNXÁáp5Ø`Y ¼Ð©Cqt9¹Uè€ÍÊR˜ùv%  <%_Ó­eWÊPjk5> ¶k|q‡°qÀÆ×d=€ÝÄŽû˜VìµéÃk‹åß7-ŸúÛÂ03Wò­>*àù$p¶ŸŽažObnÙ x>8ó¶i±ˆÉ¬<Ç´ì^»,K%¹1Ès®(} xí)Âò)„ùäIš´IFÎ^.¼fh˜…‰}˜¸{ :^‡,¦g3-o:¦G柵mC Æ&´jÂ_CÂòIÂl‹GY<“%p ^Û ÚìbŠÇûç6« sH »n€¡–OAÍU„å“„ÙžžOÎ.„YNm1’½N£åbU滲߅¯€ýÄq2ô ºuÝV8qK_™úÂ Ö ™”’žArx/Z^èiy•ÆR^°Ü#8y¶ì»Ã Œtêòqêœ$›c’ Nì»V³‡ò5„E¡ŽÂPß…bÜ8 Ôù9Í-)Kï» B]’ãùÊÏÇ9îkÙ”•"ŽH&©b]2×ÏÅ$¬1OÏ7,g:å ÷B§Îð|ñ'çÃN°S9ž¯Ìq)tuŽËì·ÊNTÞ–ðˆtœè‚6‚]ìf=#¯ôË”c&O†gVz®Ðtçëžå¤­|8ágé\Ñ÷†r­b†´U?I]¾2uù4ê’}—¯Üw¹xß9©Ôå+SG0)À¤QèŘj•n™ðËtœìÐÔ™;_ÏÈ«Ü åš PoŒ}M€i[Vªä+KÁ’ãh9•ï¥;î}iÔáÆŠ¡«ç@–~˜ò…©ó‰Râ3šL)íV¨ç¯–îƒr£…³ªCRRDK ¦ü$ÇÜæq—åx>ãI)ÈW–‚\šh™f¹¯üxáÐê˜Z&H¾ÐÃá¤eoã¿rù…[A;8Ùf`y©ÏWæx.Îq#U ò•¥ —&Iêò•©c¼7L¢N] }]ž^¾†“Eû=Ù,J[Å÷*Œ`ÊHÈÁ’Nš[ÆwùÊã.¯Æ]Ržò•å)Ÿ"OãŽ`K‰ö€dK›Îï\Ëó-=|uaOõX^/ÂÔ¾ËWî»<ë;Kö[Aˆ`N´ï\© TßYfó|åÙ<'ç»xß±¹…÷]¾².`L%yŠÍnN³ ò©3‚ÀÄ“8‘]0îl^–º|œ:¿‚.ÈWÖy¥ Æ›ƒó•çà¼Ò¾ãé‚|e]“º …ãùÊÏKK,'çàqGpY)ÈÇ¥Àª0sæ+Ïœy5s–Á§ÔÓO >FpYŽ«œ“#¸üì#|– t)ˆ{e\S2¯,Ÿê•‰-ZÒ—¯ÌMz@LžX@QÆå4HqŸ“ ‘ŸïÄM"4ßå+Ïæy5›'©ËW¦Žûœ¶¤Î©`¤Ë“⸒'£‚÷šOõ¥$ò¥ØoäK%ù”¯Ì§|œO~jß)ïµlßåSú. a}Ç£!ùʱö¢!ãy¯ùTHJ¶#mW+=^¯Ìqî½::ÇS¨“á_ÿMP—SçVð9ó•}N‰¼²q#4ù ©_ŒtŽç+p<âsrŽÛ|βÔ)Ÿ“Qg©Ôå+S—O¡nÜk¾rŒ5ÇôCX!B“¯¡¡ß(B3n´¶,NùœÆÖæ+GkóÌÎK‡”C2˜¦ó„­]U!Æ*û:Ÿb1V‚Ž1ÖãÛWn½aw…Ó ƒo;ÛvêÐT,fû Áã+k´¦pv Œ|M0TRÞ<í2hqÈ è.Í(y£é‰CM P„¡²%g‡}°,æò†ùîÈ€_Š'$"™%ù‘[€°W0rjŒ ž8Hã[ãR‘¯‰ •ΖfuÇ Ù@Æ«‚Ñâ°=y%!ó ß¿ŽÖ;±AîK„ÆmK„¹Á3â0LCìÊòøN „¡“b"³ô[ZŠRÁL)|ßo*ò5Q¡¥6p#&ÏxÈÒ™ÄH0ÅÕ–âKòµ’gb¾F&Š-utþŠ͈,EDÁ±9¾Ÿ_``H¸×f6™1&â²]Ÿï/ÃÄ|L”;æÁ ();%Ë2L ³UŠ+G(G¦ s^gk¹‰Ñ¸$aD$<ÇKa‹/¦„¡å¨Æ­Î¾ËN¸š–‘dƒ#7ø‘2Täk¢"¥#ò5vD‚„|­$Rš Ô,dã³}!QÁDq4‘`© SÛ‚e;;;óW(VM?äãÐ2aãŽÃ´žÌר“ò$x›žÛ‹ç¹øú¶aÉëèMq÷®‹fÇÙZšgŒ6xlw'qã0À#q„‰bHZ²m:ÑÉvõ ­n +=AE0+ó5±2¥3óµv¦ÊÎkÙ|{%ž·ã€<2,Cì·bðïyì<“úNʈÇ9$*¬'ãLÌ×ÊÄx7ækíÆ8 ùI§@舸Á’ªÚ!¿û="Œ—AÓ÷ ƒòC*_¥”ùj†CŠäk”ƒòƒ)_]/Xª £¬u ,S®ò„½d«HÖ ù—Û ùZ{¡ì—¯nv(?óUŽÆ²3dƒt½Zv‚«–„²£±J9(??%0(£ÒÊŽÆøX(#å'§*™X~0UÛe'–$ÒubÙÁ”¹ƒ©Z&–™ªìÆòÞK¾J»¿¬ë’¯Îê.?µ%H(3µ•u]ª%¡ìÜX¥”÷}â<(g¶—«åAYß§Ê^(ïÌç«tƒËú>ñ^¨Ù÷©’‰å=ù*I(ï·ÄI(cô—÷ÂóUº°eý–*™XÞo9Vò5’P>¶•¯..UÞ wc/¼|d¬J ÊGÆòÕ¥ÊGµªP>ª'!=ªõÊ¥86Ù:;)Ó–:F,Ë„L)ŽÕF µ¼ˆ‹8â­V“âXnßPË›j9 ÞcŠcž­U¤ v¼€GŠeײoñÆðÄ‚”Èw!Š7|./©å[½ásž]ço$ W\’(ßøâ),Q½¸`—xcIŒDÖhY'”uÄ º*.ÞxåÞÈ&`æâNVMIZÅ7#Û÷ÍX·É>2‚é,ž¯÷R´³(°'Ó?§½ŒÕöž`Fôlü¥­½õõ~TE|(be#P%pl_Þ /"s»¸x¢W”/)´k?Ú×–…Çó³±—œ¹†;Ý– ”‘^—E }ÏP²íÓŽ™Dû‘"¼}3œn›&÷Ò_ÆêG%ÃÄ„Üf6þ2õCyOöxEʦcžåvóÚ2³ÃïËNKÇl)ǘŽ9+–™ÞÏ#Ó“™—gÙ‘aŽi_Öþ… ¦“–¸.ÿȪžëW\wÖlî óÞ?·3×ÉT)OÄ(Ö·Ä“úÌjÄKŒ!½Æxˆ(K'ÊŸ(1Žˆ¨™®hÑ6Bš©—a ]ZÏe+Í©8ÆKD ªì—IUSU–Ÿ"5«x‰üËW‰¾‡ýµÅ寞ù*I•yÌ}µêUÓW 4#¶…=>U÷ƒt ¬}¾J)ñ2ç«d_³mqù«Ç¶HRås_­zÕôURÝã,•û*¥Äqï+ï8KàÂLRåg üCôURƒã< Wž¯â%NÄ,çYøa³'¨²Œã< ÿ!ú*&ÇåþÓó¸ç?D·üý/¾aº)÷¿™Ük÷¿œøÿrÉÿ^»ÿåÅý/,îËöõ[¶oÑvß10‰‘3Ýòœ°RBh—ô Z]4)ó¬AL§Rš~[ÙE¨¥gwp‘Ï1Çàh$˜¾Én1l<äŠ,¼Rf\ú6x:Šx`®˜c†IË¬ŠØÓ8ŽÅ6PÙ@ »Ç·ÅÞ†rüH/8lq”!K[ó·Ê•z\÷ðønwaWùâ 4^%D/Íð—-o;FÈ®£­˜»4zóˆÁxx.Ûüá„¡_AT.c`>m 2; %ZÇò*^]bi½`;œÃdËÔŽaV$=£4¦2¦M#ah;<á¿U1³#0°è¶…€ <«œÍvHŽ @Kí8x‰n½pPq©Þõ*¥gW¹ÍñTŸÇ2q…¦mЫtÛ‚žãÞ5B<‹F›€D†pžXl`OÇ› hχ6¿LØíLÛ7›–ul~G3ÈW# ID: z¥áôÌЭ zrt#t]Êÿk‚$ÓÎJ€dÚXЉÉnCòá?àxN&êæ]Óg).aT³¤oŽk:•x਱`û¼÷<ÄKÔíTJŠmi×v€°˜gŠ%­ƒ‰¢RŠzOu#(¥ÑèZ¿Ȭ˜ ÞòU7´à\ÛlXúAÅ÷"Ásžm€Á[‘è0¨x}K¨ºLö€ÎÍÀÌJ×vØšN´ ÜÜ41!4¥–®xµ™m*&çBÚÿd¸Ë”è-•0°A“š´ÓÚ6-–ÑÒõ]¯‚ Ù¶ ÌÅl:°qÁ˜®ñ +Ý@c IÄ-޶ͯ}Á\ì»Ò•¶¦ßõÙ1²Ð`·&ØùQãÐ$Ñ]›6!ë³½\ ä¸|%H¾K`Ž{›g¨u]«‚Rµ5h.K(ŽPYJDvìs\R LŽŽrå`Šq‡a`š• GêD4©,›í¤rC6ǵWI#9¦âAèá5(ÁnÈ/òÃJw8š$bnQqŸ¥÷­ ’}àh³³ S³­@°ånEÉÑt¢éø¥>v›¥µtØqçq¸J”-ËóI+»ÌÐÄáåV’DG›mÇõir èt4ü|¯ÒÔæø Û²Ù,&2ÛÞŒ×3UâA aàš,qkàÐ,Ó«0œP ¸éŒ¾'JYA¥[x\©Qî ÜT ½ܺ³½Jö«éDÅ,-¸ŠÛý»’Ru5;ÑÓ†&¦ Mº¦m|¶ât>Û ƒ‰í5}£’¥ê:\ÔH9â»l£ —ÇÕ.1¼Œ. XzËü ràJIÄÝ®M»šMßb 88*ð5 \´‘ò„3 Çô*ÌL®”DÜLêƒéb>î´®0˜ÜP‘`Âl`ó=ÿÕ=íUèFÏÐ xOs­Ðf3šï[•î‹ô¤$¤ì=‚‰_ÊC%Aò¤$ZxC¿@ƶٽ à1UÄ@êD¼ 3r’ïòüÜ +’ç(&Âh6i“9ØHìêJp`+]ái:Ó<øÌ‰¶ù^oϪ4<9;xW«A>7ÔG=Á‡J<ÐìDüƒ KË!¯âhô¤$" FÈÎ~ ÛFúÝõ+Ýéi’öKÜ Ö:;]ëb¨@‚¯Ù‰^€®6¥™°|:˜¾S €©xæ…e²î°ØQÀ7ïW`©±€S"‘ާe&Üv%Á—:ê±{¤Èá`W•V/@ó]v`‡œ.›Ù¼êéñHIÄ .éªU2¶ÙQo´*Èï)LÅ,7º°ãîxÍ_% 4õY´À ÉDÆ‹ÿÜJ—-úšhy¶òT-ü,˜kVŠ¥ù¡ê00\²‘Ða5Åá‘ $†eÀ—Mï`l18àƒTÀ ÐìDçF0Læºx¾YéæÒÀRl7`GjÜHV¥H u"ÎCÜÈBçÛ`7D…A…©-³3º<;Õ ž«K€Uéz·@óXð „G &iÙ_éN,M'6y,„ i†Á[•*‘à+À¾`§ž°ûiXÂüRé>é P|Ëá7¥‚r5yX¦R(Ðn¬h}`±M|«B7††b¢E—7å)¦Ê‚`Tr¾C-Šƒ<$¹3 ¼u̶ $„–ê "û,S…N€ëVRi¡”DºÖË I9 é&ð$¯Òs¡æ±ŽÅR‡`X8à*i¤PÓ‰¶ÄÄÀsÙoUr¾CM'ºžÉ.À` Êׇ¾F‚mìcÛf·o†¡Wé~¸0PL0©8.P°›k,£R(,Ô|gËäwö‚2}æE…ïVÇG˜ñÚ<[áð€[á~¸WàN,Ï5Ýé¨uðΚð Lé`ºÌY—wb¡6Ó˜­+€©@£Òå9 …!;îXÙ^ªÉîÄ¢°Á‚É^Àì[ÐŒ&» Cã±Kë’2¼0üÅX`ÝØäùƒ­É´ …"ÀîÄ2È`pX&F—å‚ð1EíKe†…góH&³4}<ÊN<鸶Å.} qÊ#ÂpýŠvJ¢…í;ì* 0”Ÿé ¯Ìböðì˜(ÀîÎÂI{÷0ØfYâü«Íõ0øÍ>m‚CÌ1'?3rà¡g±;±0l„‰©5ƒ_ëLµLv'–wöùl½ÌÇ»? s°Di¾ÆN±&B ¯Xa§ô@…´\g‚µÂïç6|v'!ì2í `ØMb6Ìj>m]!Vóë><ð½]ÎsǦ= „‘Åbv0ê™o=f8ìN,ƒË&;ÒèY6;ó°;±0®CWÆ`Ø‹²;PÛt«»ìÆÅ‚<ݶÉÊ!j݉E†‡o°w\šö™(Zt'­”‰©‘ò«Rm0zØX"vØÊ H"3 A<ŸîÄ"^z. ‰gìjx:Hwb¡² ÜÄxÆÂÔX`N°þvB“­L€±íÚâN,à løEM`št'qÃs,÷ æ(çì@9nØñ¼¿}Äܶ˜ƒç³«‘@‹…‹bÁ7º ½6?d’ –+[“*ß‘¦;±ÐVa3Ø`sMf7»†åÓXŒn6ûVÈfŽ7KÙ!£ÇqùÖ~ æl*`nØ!»{;$Avȸ XPoÜÄ ¶„ `Æj\A⚣-d1ŸÙâØ¼Ç˜uÇÔ Þß8¾Ù j;ƒÁPC ™­oúà1³KƒŒÐæJÓÄ+u2þð¼¹Ã¥Š N—^ùL@)m+ÞZ˹ ÞGè³;±LºÕ”d³)DÑ÷ÙXlYÇ`êÑ7M6€‰n^F¦ZlÎÃìŠn¶¸ ß™¯j/4¸µ…š‰UuÐvSˆÚ݉EÁKÛ ùz ›ôx—¸c–ËdØg…×\!bì¾W̽ ´Š‹„€½Ë/áô ]5ÂÄîÄâz±šF W»‹0gëtH—'Ú6ÙX48<Ò•`ÔX\õœ{\~~¬g9|6 ¶x&ëG_Òk›Ì äÒÂ,+#pÙ.°Y6>Ùô…’™D»S®Øß݉EégHiÒ¤â³KÓ˜na3ô¹-8噬™t';L¡ã=÷"Ï‚LºÅuÓÖ_Ó€ƒ HäÊðØÌ†J“߉…3 ’K³÷í¸Ff 8IzÂL9S±C} !ùe_ls u* ™€xòKà“‘Àu‹oósYj²P˜òpº‹ñœM¦ÀsWª=ƒîÄb“ó=`$ Y#•+õ´í±Ý´R(¶Ï–]é ˜ØÂ%*̀݉…c‡û™ aŸK|äšr!1i)p „nÁÚènSy²Ïâ¶±ù›åÁ‹Â`AQÃvø¥Ùmoì1×â1S[(×À×b6`,ÎrŒ[‡‹X(Z n¯á,¸lZ6ß±×h31¦wvq·ÁR#0àØ¶ÏÍ9×` x—ÙkôXpCåŠÛŒ‚€ës<æšcwyãLä³À‡''I€³M ˜•ƒ<*˜ÞÙÝbh+Bqz\ƒéµl+‹GÍÄ6U€±„”@~àq“ mnR9ë‹]ýÈí5Æ#˜_X¨4€Áæq› ¯ã ¹½† ›˜ê0#‚›’l©À£yŒº.`·SC9‡R+¨ƒxm2¡Ù=˜‘ÅeÊÃb»9Ð|Gàlòm¦q`Rq¹nÁséäÅ IÅM*a+Â(©æþ54KäFk'Ð¥—ÇïÂé•B ÙdßÁ8‡ÉŸ2LÓpy¼°ÊiaеsÜï_3…$½åþHÿG”A¿’ ± @¶ÈíkbtYJ:Jš§$\%Q„êË<¼†Ã“9æ.·%$áSiN•ðªtH¦ÈÄmXF(`†žžÑW¸_šÿ%°NôȰ“äñz^Œyjš«&|5’%3DËÌê˜HEÏ¡,œ:Í«n]”OŽü&.ã *C´ðÿ”(=À$•µš˜Ê`êÙ½¥«¨|Eé,F¤ 8QôšÁôÃhþkæU*·Rú•:$Šýp>ËȦ¡ç䍿 4ʧPÂ4å7KË‚.}UÍYÞj'•Yò^eâ}Gn­òk¥cÁÉ’|6d.{[Ï;/=`åK8*™Š: ó©ë—1gYyËÒ]ŽP'³^«t*`šk™þ¥_­9Ö³ŽÊ“#q’ZG‹ºC¸àÊ—Nx’­ø‘)ÀÂ[×Üuá¯G Eï àß|íæéØkž½pí£E“’VíÞЂ"  C2µ¾—:Ï×oG‘á-^ QÉ”|2Õ7ý~#YÐB "¶…äêÓ IA…aˆr¥³´;Md¼B XˆˆE„ã–â¸ÒtŽ~‰m¨Ø† nD!ùɾCy’ÙPdD ƒˆ8ˆɶ„<šêoG‘,&*b"C&Q>Iê%í8sÊElEWdt% IiomfgÊKT”Y*ã02á“wòf@0‡²|ƒ_.§"6ZÈFÄl"8)ɶä¸Ó‡ïôËåTpGEwdx'J]¨S'æ†,ßò'9Îó>ñ@ˆE¨³åÜ"ïÈ1ñÎ%ýâ2ÒbF"¶ÁIݰa«¹©ÓdœE—TxIÆ—"8©[hÔ,Æ7ß ˜Ëi(‰’¡('u߃¥¤ÀÁÛ¤Œ‹˜•´Q«N†ì;¥_¨ï<…oÉø– pE 9’’pDgJCDF´P˜ˆ…EûNJ‘%äÁÄÙ\]ï#ƒf*j&Âf‘¾Sò¨ì!Iñ5-À–*®Áš%•©T«Å©Xœ ÆéÔÙ–¡8P°’T"j§Âv2n—à8ŸÃÅ7%SW­,À§"|2Ô‘'%¾fIegªiQÆe0PF#|r¤ÅkE4Ì…$ÆZÜP„À¢—8™Ú¼žås9-¨BŒ"ơΒ}oÉù*@œ¤­"‚‘Z4R„#£Ô)ûIŽeœ¥$TÜR.EäRï;º‚‰¾¹Òº³ñfGÓã,Ä©bœ2ÈÁÉVÞŠì;´Ä)À"ª…Cs)òdª1"- ’'å(ÉÀ©Œœ¦Ê“á(=.gs‚¤éqc•AVeR'g^y“-¥¸Ó»˜…cU¿ù=ia(HÙha¨+Ôeœ]Ú™§h„;“¶cз@Ú®¶‰Ô9 '’ç1i¥¨™“–É";ÓÓdœGïeø^Æï#¤MhJËœô¸~!%ôËH¿ŒåG É;›ØåZRž”™%×rbQ ’+¥Àu#$;Åò‹y<ôE zßYòF)Ë7ô,ßHÉ ±•æsÚ®™“k Q>ɬtÎR¾¦Çù¢„\•ËH*B£bbx?¤Ì ©Ö/ÔF.ÍoѼWŸÓ·N|©C­uä¢v¦°˜uÞ ë,Ë7[ærÚªˆZë"QHÊ7Wq6¼M“q¾€’+(r ¥ Ÿ4í‹ÔiÆ6_kQ‹-¹4ÈT$ÇÐÒƒ&|YF®ËÈ…™$KÙR2QÓùšÏÉWpÔNޝáè,eû&z*$${äj\î‰à$o>5äÍ£&¦õ5=Î×…äÂ\ŠòIéq·Ž««ãäRN®!åÒâOJž”V@)P¾ÉÕ¦œXn’ëMH–ì1Oy0˜1ÜR8ñ…©œ\™Êñ¥©u*J ,©SµF}N’L¹ˆ•KÐÈúšÏ‰8i¶ _îRë]¹´†ò6LåUöU¬\S1±6ᓲ3-¥‡1m±&,|M®¢Ée´($m¾”¿!$ÍØæëmrÁM®¸E¨Ó"Ð'ÔOÖ _š“ksÌ¿óŒd\…{e’NÌ¥h2ÎWñä2ž\Ç‹R—¥‹¯4Ÿ“/øÉ?¹ä¡NmmcöºŒ³µA¹8È©‹­mÈ{£-å•á=¿¡”q¹Œ¨ÖsiÑ5‡+ïÇ]¨ã+ŽjÉ1—Wó+q¢ûFeËÅIµ:)–'#”§¨âÛh±êK |S.dÊ•ÌhßI­¢G}²3õÉŒ/yª5Ï\Êz‹åHM©â¾´Þ‹«°qË–Gåúh'yë¬6–ÑST¦Ÿ\HU+©9¾”é;q+ho1îL¼o4”2.×\å¢+³z\32Z,µþ§¬ºÙ0$SÌRl}V.ÐFp’k’Ú|gyÇãMF;ß&ŠY©ÉËL¾:ï²ð™Èò¼¦8L)ÿÏÎÊŒ ÌØ5l¾Bê\¤=yáa‰=Üò2޳µtýØ9¾ÃwÍxFÈÇ”0Lqz×áWtg³~&M٦ؕ*vó„,JΧxÁYq:!ð#w‚’Jôq;jÄÐç[Wu~È«BÅíîÒÎ<£ˆMfJ&·RfÙÐû‰Ñt:[»A‚ìF¶ƒPß«ÁWv(a¨{<(¤l°]à¨ÌÅYÅM[²d¯âU¯Ú%¸Þi³åNœ€¹F°b7µ<Šâlí&²›LO,tŠý¬ yìM’ãºê:nÒb}ÓË›Z>-!N2s‹Å‘°TwŽÃwìâmÃù„Lˆãòz¦—rB/%çÚT½$“…©j‰9“]ã›a¥Z¡Žb¢‹n—¯, B©Yn Ìo7Ù“ŽuÎ̪d!hsq]d¸™Ñ^¢`‹¡M½ “… 3‚+vluÏHabšÑ“•ÉBØê»îÉðô èJ«ÉzŽN‚˜¦Å€Ì‰™P éR& ¡è¨ÇQ¡“w & *噕ÉB¤¡“;Ÿª3d²Rf–8>À÷GHf´¥k5‘,DZ}9aõÅs«ÏQjFåñå9ÇH2Q¦ °"LGïÈyCfÁz¡8Ù¥É<"oër ’…HQÎ QNÈAº(»J-2£3'ŒÎ„fO7:e²Zqcgžpwž“"‰€kéØ’Æ ÙŠ›$=+à¤[B¦i0¹j‚fc!'ÆBBÓÇ‚H"mŒœ°1Æ1×tC& aQ/Ÿ/«¹FÊ-ŽÌ-nÜ`Ì ƒq+'Ð1b½½äAz/I¤ É7ÅÚ™“2¿ ]*µ+*U‘,Dz@9á%­î(+“…¨íOÂHIš›©FŠLÂVÈ ¾@æ)Ýè&hq²2Yˆô©s§Ž{©>uV% ¡õ0~L,¢0Ńóâr@œ{åî6ØÞ(†Š\PräF8ºÛ·Š{†ÙOúȶÜPVÍ=ÃrŸ˜ÚÀ¥ýæøÇxÏ0 ë¼XNšîxbX¼qÅWlo|ñ…²E-ÈvÅ9"ñÆÅqfB¼á ðÆ³øÊV^,´éñ7V² þ&up-®µËßxP ΃ˆ7|%H ¾D¥Њ{1Éumñ†¯Eàå¶>_%RŒ³±^¼‘7.;b¿Ÿx£.,¦hf”¥–ØÂ!ÞÈ ‹m+ö†Gõ)Yšº¯ÖPÐEq?Ê {ÃCºH,¨â¶+vgˆ7–zãGßðÀ*æc³y˜UCÓ[Ž›îbM_¼á!)z“ ’ì#u·@Ñ"¼_LPd%ïR޽´¦S¦µHý¨„›þôÐ ²±—œÅðÒ׆mjpW+:4¥›ætWîÔˆáâoƒÏˆòo¥½41E“Xã .ǃM7ðdc/yÏ ­å­ÈÈE€D˵³¨’ÿx³< +‹ec‚MÉÿèK¨ïË]F¬Sò±ÑccNy+{)îrö¦‡r%«/bà}a6B•ºË:Ä- 1ü£CË ¦ƒ…•Œ ùÒ2tþ™†‚­X Mâèk>6ÜÌpº)÷'Gp“Eð.nª¯5,Ç0×–ÛxbEø@„þ£MÞV¹—r÷wä™r;{É'¼t|5~”"ìºôqîµå]؆¸€+å.lJJðÚ]ØémŒv%¢ø>¯ÿËîÂ>ªò¯‚û*“T9Ç™ª8ÎIãtŸªÜã,)ò•¤êÕu¶§)‹ÿwîÂö¬$U¯‚;{“TÕtv Uµ«”ÇûnÑè]ØÇ µëÀ”ÇýÆTãåÞ1ÿ*¸¯2FÕúªÃ×þKùoøØ'º ìþqîÿ´ÀnNÜÿé[™Ük÷žøÿrÉÿ^»ÿóÃýŸñ8$©m‡-\±8¨£ü"±ÛŸÍ´ìaˆG.éf©°ÂFÙKŠ—« @Pá"˜‹¥#ƣ˯ M¹•¤ 7€²«QŒÒa _C£B¾þ‹< XF—°ºÅ–'¬€/y€xà .\n%&=Ïshá˱C– I?ÝþEa@Àn_qlŸÝ‰…L¬@Ýÿ‰ÝˆÙ´P¼a Ô÷*Ü®u‘~ÿgèÚŒe€%~6|_.B—`)œÐb)T™(³ýFã_=qâó´çr–Nga<@o:Ûˆß yÀ ó´WÌňŒ1 Ûâæ– ‚BÙÏÈX³]Ì$Ë´mQrzÚ/ƒ·òõ³ ðM™°Ñ†Þ¢)ö€2¹¡hÄì{Ç;ãE¦¤”z—ŽW™Ó-ËæÇ1O\ä¼¢éˆSe¶\¦²,+{‘<†G Çõ$Ÿ'ÃòÙ ’£N>Ê“ú¶åe/²5H¸ÌÎÎ]¹ìzE܉íY2ÕAN!ìäyEÇv³IÌ9ê²A™÷ЧÅó²Hìü«kNòdé"ºÐ åwC3œÜ zÖÔ“ùh,užÚö³yH"Õ—ãÓ:2òÉcÇT%$Zy`ئéuRJ™‚õعPǧ¦Ä'S¥#îÊ“j´lξ…aö¢ ‰64 Nž¼ïœŸIS 8n{Aö"•‹‘^º¢AÛdòà…Vìı@lð°Åú:pâÔWíz’$×Ï*kÖ\­ Ë€àŠ``‹ís–ØKHxq9 ΃2´ó€Ç†AP+aY&æ«c¢´4æ³nLÈAz7JkARNRBÒI; xL^Á–ÌxdÉ,JŸ:ž]íF ™yÉ‘ùi\™µ ×*6j¨yIéK5ë]äÛ> ¦[òB=L÷‘©I¼±Ë¾q´7[¶¸§ç )m%ç‘T š¢E½H¼>o–-ñ¥×÷ô"\ŸÅ€ÇêÛ)MÈöíòÀ#½“Žb6öÒK£ß-_¤ì*æÅݼ¶¶ŠÉ÷%¤®bbZ÷×V1OÄ*&Ï=õÿØ*f Uÿ¬bVAUç$ޝºUÌ*$0E¾’T½ºV1ù.§ÿÇV1yžPF »Ž‹ÓŒªšV1]ª²:w8[®ÃSÌQ0³U¿)j$Jxfvið«,,ß³CÛÂÃbìJñ¢ã[&^îÖ¾ŠÉw¾êWœk[ÅäÉψªËM9ø_¦º8dÕd[ðd’¬³ìTªªš†#"ˆa=;0CÏ3L!’ËòÍPq®64k2.x&¨Wýö³6ã"ESzì¨Éºpu”åFZÀ8±å¸a@ ¢â#jÈ\C)@1³ŽQk²."3Ö«y/Gm{¤ªÁÚ ÜAVMæ…¯‘5Ó.×¢A¥åb2ºÜ+ö AGAJb{†ç‡~pŒ"X›y‘Xµ»X¯ÄŒUÛ&©*&âÚ=Ç@–U›}‘j º±½¦U#¤{®é}B#z2G·–2eÇDÐ?6´j2/lÝÇZuœìö»°j2/x^ÿU/{`ÏѪɼˆM«ŽQµ¿^¾U“uá$%°v›)^âDPU“ua ªjwFRJw ¬-v¡«²V8^"ó‡ó 8Óù˜Ì't`MÆEº—_£fÏ%-àˆfÏ%4{íTÕf\èÚâXM¦\ÌdÊÅL¦\ÂdªªšŒ‹HôLÊS¾H.æ‹äb¾H>á‹ÔL•]›m¡+÷Øç«øÈ‹8ùù„“_;UǺ'"“P¯¸º°k[ÑÔÅåÞ±‡¥OxgÕd\˜É +E Æ×?ÀÀªÉ¸ð5ãBõ•S%˜ªÚO´´k[Ñ” 6°âZ02c¥êö=cÙ5Y®¶ŒZÞfª .â%rÇ?Ún×v¾K£êØ;ëpíÚxé2x¬#ëˆÈØÇ|ÀKQU£|BNMæ…›¬Ý9Ñ‹NMö…›j Ö¾:3Å©Jš +ZÒJUm± }"¶Ž×JjrÊJš5RUÛÒÈøËXB*š‚eûÊLXµSUÛÊHªçfжH°j¤êØÏŒ¤¯zWÖ)KeçÒWFò1ª6“W›q‘ôòkï«|¬¯âÞHÒ¬ªãpf¤Æq•²„WI³½vªj;3’ŒJ×®ÓJÄL¦ #©ò_îžÎÚ竸YŸâ9VX©LUM¶EÊîÇ ŒË×+¯-üšl‹ Þâ« ¯Žy]dœÍÒ Óá•Xµ-Œ¤ï/»§®¬n?ÑZЯ-x‘iŠÌXqK =vq‚g,ÿ˜óê–Yô®¬/^_Ĺ¡‹Úûê°ýÚBéQÁÖ+`¶ûµmë¬jÃ~-ø ¸XAmæEu™?¼?¼Ü})Ñ’ø–¹dgÅ÷ǵ`R_ÄÇ¢ÒTªj‹]Tµ–_ùtE®R櫲ömºqQ™ªc?3r¬:0o$ÖÊúÃé¶EEªjËÕYÝ©¥l Nww¸vªj[©bÑ;Ÿ\&}åÕEm¹:+Dúáß[µYU­Ç1øŒ¬Ú6^è÷®–ÍVù<à‰Ö‚µåêLÈDf¬”(Ò+?cÕ˜«3=*X{bÕíŒÔ–«3mÃ~Íõ ˜‚µåê¬&$Syd½v{É:‡||¬suVuléíÿ¡/o=ÿ­˜îØ'º ìò÷ÿš¾åùÉûÍÌk÷ÿ¾ÿå’ÿ½vÿï ¹ÿ×B¥g¼ ïÿE3ʶ`zD­ï¹ zÙí»x]©!0‰ÑïÿÅß,]B¦ ¼wõ¨cUº¾×– ^H7“`-Ñå¹f`Ùî}•7ú¶Éok³Á LÇ+` ßÿ>¿¹&ºòÖ±-q¡o9žÆÄÀýÅ8ÝXç))õt¾ÎD`™¨‡I„’k†ãx%®®5 kzÀð ¬é&ûæ‡Ó u½¨UÝÕµn`;"ææ»f`‹EpfY²–`שlc¡ë‰%dÇ™ä…À ‘;ìÐbà{h†¶s¯®¥±â“õ€ýåà7èqÓ·mýªQV$/‹ào&ðQ»ºz׃Ê`ÌÜPÞr*/œ%:m~C*•/®/5Ô}˜’º`”AbcÚ\Z`Ø0/!åxíêZfö&8"íß9h‡ž~¹«äršü@4E´«kó4zÐëái8x¹+ë¶0ri©ººÖ ]ŠhW×býÐñDƒ¿â×pØý»’éÚœ;¬HžÑ®®¥Z¡hÐa÷<ï€â*Ù¼,’SE¦ëç‹Tc#…ȳlqõ¤ãÚNô‹iá°ÚEªˆºé¤©Óðu¨œ%ÓŸà°/6ú·ÃŽÃÈ×CÝ¥Šý 6¶…àïÆX¿XÞ¤Ûœ%7 _#¡y±^¹«æÙ×O#–¸G”ðËöE®š¾x¯µl!‡–zò7>$pÊ®îÐ4Évä5Ö¾á†1k+õP9ž´ožúíø\ N‡¿4ùÆÑÞ$®M÷’oô{:% +Ú®g™N´¸Sö¯*sÓ¨kƒ©#æŒô›FY‘ô›Fs¡&Oz}O/’~Óh¬~´ˆmß.\ÔO»iT¶ŸzÓh”þÔ›FEûºl¨›Zíé¤YýhG/¯Ï;=@‹BÌ|‚ÄhÏÆnjÖ¶ï”/Rö¦ÔY.¿*UÞ” :‡q$í¦T'ð_»)µ\ãÞ”*®Ÿ-G”ê;Üÿo¹)•_5_–*'ÐW‰[Þ•ÐWúúˆVè+7å¶‘W&ï©Ô×GÌ ÃÊI;ÿ*è«$UÞËWµï@Ë%3…÷[mõåv€eªªU©Ú"E$q<ηc%©Ò—G,g|ª|Cß-øêÑI Œ¬Ž¸ãSeÛ)ãêUÐWãß”z<ÆU|Ô$qŒ¼0®"»/Ì }噩GˆÿàWŠ&©²^æ¸z5èÀ ¥zÆ•£Kà«ùúWç8Û•µEŠ–<Þš=º÷¢R_YÉùªv L)qÜÇ•wœÇÕBŽMj%ëÖ “wË¿ú*IUdëE…¾²Òï=üƒ_“š”Àð8[Lm1þ-©V¯ÑKÉþjè«Uèeóÿgþ[1ÝqNtØeå÷8®cÚ‰ýž“ymÿÇ+ð_.ùßkû?NÈþ÷Õµÿcî<š L¥jÕP¶¡çÚ©kjü °ÊÈUÀVlßX=× ÆÛtàpy _#WÐêqTªà €||Àšn…¸õ Á¼éÐ.œÐñÝñ÷ÀÌ€¼«@X@•Pt3•„*1 P6ë^OC¥*V9Õb`Ënä¤×ŠS@µ¸j,>šÔ(Q¸8oÃ` +ðÔX y W%¿€j1Ê‘P-¡6©žD¥:–Q@•X¦6œ‰ôZ1°Ê¨[’`™nsÀv6ƒñ6ãE(Idòµà’(ë)TªÀ%Qa^+_ ’ïY¸Åx‡»ˆ¨cC3°*¤(3y W%€°€*1°r$T‰-t¢¬'Q©€U@µ(I¯§€j1:Ñšîùn@cÈõ,»jA²…Nòµð%y=‰J•É _€KåŽ1L¦gú„ï;L#9ah¿K÷R¹],/ä€\UìòªÃÀ)OBuÈ]º s‰JU¼òªÃ@íÒ•¤×†AP@UÌTr`O·lU¬5Ýñ/@¢00Üñ(9ò@®*vyÕaà”'¡: t9àõ4Tªà•PºpÒkà (  NüvïÀ²Lk:ÚÓéy ¬þÿgW±ÝC€Ìú<勆 fµûŽ\‘ÈpýÐΊÓG¶ðð9nЧà¿À>ÞÛ½¹k¬!Ëw›”úƒù¶v¢HN1hC²‘å>r™bùrTcy)¥A¨b¨ÉY—€døž„éZYî5G‹IHùrrRNA’û½Y}/QwmNbb§Ér?:'1Rn|H¾É3 a‹ƒ0ñoAèëL_„0L𬠒íd¹gÍ©còR> )/!å%¤¼‚¦B XJ7øf{¦›€„˜XäÄÐ7Ût³Ü×NPÇ å£rœ¤¼ÉÔp ™×žjè’O–ŽS(O(„žä¸d¹÷€ä[Ø‹ 'ËH@"A£Ó'3ËÝpAAÊKH¹(¤\')§ArÒ 1êòQêrœuy:W¡nÚ6ç¸ç®`Ù¦¡sœ!Ž[’cŽÓ‹ËKHù($ÕX^BÊkü$ ™@=a#u‘q§áäøüü„m~–ûìÑbR> )ʼn å5HBÈQCÓ“ì sÜ÷õ"R`ú¡”'!㦅dKH„°‡æ7sÃ7)¯Š$ùÄW»Øh“8±b¹(¤\'^DƒdÅ!)ÔóQêrœx:¡Èφí{ “Г]dGté‰yÀp'2‚-!ãR^BÊG!å$¤œ„¤iK”cõ SΑCI†ëš¦8"E²Ü÷ÏILI§­Šé|"Hy )¯Aò5&¢ÇBË2ê„ú‘+V„k_Á'ŸA Å$¤|’Ö˜„”Ó … HNÐ,ÞR¸a*$ËG/ÌÀG­b‰bR> )Jƒ”× ~:Èç@NAŸïÀÏŽÈ“%õ¸)&|<¥–åƒ$6®=Cvî+ )/‹LÇö² )Á‰AÊKH®Ž“á…l–s׳Ÿ‚ˆŒ³&ØŒâæÔh¹ÔK‡x8Ë3œ\3’g†â˜©ëùÙK¥]›—òR. )/!å$¤œ„¤CbÔå£ÔE!1êäž©ä \H0ÛÂİ\º |^Ï55;t?ŸL×s,Ñ‹`aÌTò$!å%¤|RNBÊIHy ÉN‡c™Í-xh&H…„';4­ìL%Oê¤|R”:)/!éòbG*Úî…&YüHmj£εŠéû¡˜¯ÜÀÌÎôR!ù–c„ 'Û ¬THŽ#4íƒ~š©Ë‡”—rQH9 )/!å$¤ §.¥. ‰Q—Ô½üC¸jáÛHÄYÈ•R{š<ÏŒ~1 \Ø=;«Ö¾0òÕÀȪµïdÛò—´¶ù/Yµöl¸Jbí;Y/ ROÀ×¾S®€¯¸t>ù…Ïê,ŸBüËÙYµü-jä_ƃ‘UËßÉzUàËßÉzÕb –¿ Yµü}ìØQjçS@Õ¸)ÃÁGëMu#🥠1Lrêñ‹‡¢wvV­€GFÂÈW#«VÀªB"«VÀTTA¨Æ$5,!ÅÈz VÀâ”`ªA}lXeT#AÖ‹©•¨pHY¹žÒýÕàÂ(ê¥0#VO§%+WÀUÃ5ˆIb. )É; )«VÀÌÏW , Z Ä x‚„j1+àÉÞ‹Ð{/À* ŽAYv¬kÆÀ) j ÜØ`ªU”Å ø1±~Ì¢ÌWÀS°*rœ<>‡m&Š¡â¶c:i_ÎΪEpQ#Ÿø2Œ¬ZOÖ«€S–Š*1pãÔÆ†¬Z?V ü8 µò (  : ä"89 ·H~Áâ¦í3‹3þåì¬Z5ò‰/ãÁȪuðd½ê8e©¨7ŽAmlȪuðcÅÀ“P+‚²ªÃà•K¾c»"rk‡r©ÕwdÜIJ«J¾£yÙ*†€±úf¹fT‘|Gyä*†q©öÛ±%ßaqžû¤ÀC¬2Ê7NÙ7®z£ye‹ûìï'Þ„êdšåŠ“Ë’þÆe[^ òåñâa¹7–©òyñ$~„{)o¼i@S,™È7²ÝäO¾Q€,¿\qÛ.ûÆMÚuºë»²8"©ˆŽðÈÕû“Å“ˆ7œÙ¦#ˆ†7 ÍËÌP¸š¶Ã1b? Œ|ÆÈ_ªÏòàK>*ÜÚ© B+Z„©\Š$ê{ÚË2õÙuÃéž“¬Ï"&½,SŸ-Ö—©Ï¼÷ñ뻜DÛ ’õÉÄó¡¾o•«OÞ€EÚ+QŸ¹Œì¥¬ïŒÇ¿èËTþE‹ø‹õC¹eê³K™úl×Áøõ]Å¢d}_1·\ý(ÿ¢/Sù禰(ü‹¾Ô™S¦¾Î¢D}]¸ÊÔ×E,Yß­ˆ?1Iìe˜Â¿hÆ"É/Iÿh}ˆ%êëÂQ¦¾."ÉúiôÇŠDé½ sÉñ-Â62Èñëç’ÄA}ÓTü‹a]„àƒù‰úŒ8ö²\}À0D]×LÖ—ÄiøÇŠ„ªH¢>#Ž—õÃñð½LÃ?VÄ´{éWn?ŒÐ}©Æ¯F?b?¬‹²‰—nJû±"‹“õÊõuy¼79ª¾]ŽEÉúaÅúzkv‚úÏ– ùEˆDV²¾eª—ª¾?^}¿rý0Y„¡¨ŒJÝðCâ|SÿhO+’¨/ûß—)mãE$ÿ H¢>‹6ZætÇ2ÊÕgS”‰)‘’øÛêe™ú,ÅšˆÕ¶˜ãL·BWÖ·Ç£?ú’'Ñö£E¸üŠöc/½Êõ…ü2þE_²0_Œ±"nÙúeè÷’$*ü£/¹râ+âEÚ½ôSða€ËÔ·Óø¯‰’¨Æ_?ùwø›¾?Ýcòç¦vŽåÚeêÛÂþÝ QŸ '{™Z_lBðI¾ÈG.V?VÄ´})™«ã+âFè×_F‘Sõ½ñÚ÷’íÇø+â*cõ˵ï'ù¯ð÷“Àãíûãðß¶+öŸ^$Y¿lçªþÏÉ——&b0Ýw¼lü%·ée™úrŠ5C#Q_*gJÖŸZßSœ±ôöz¨_?Ù>ØÓCÚíå—iß1ËÔgíC¾­Ùqâ´úÑ"LÿÊöc/5àª~˜DQú/±—¸Ñý?+Ù/ XHç>`/ËeÛ½”'ÛUÙvC~ßgj¶ÝÐwŽ5Ûnîrh\¼lñu‹—÷ä–ô¬¢f1×uõêé³–\{íô\•å0CïY¹værWær«ÏùØ9ç„°åõ™ËYPn¦å Ô9«e9ÜgCaF'À46³°X~õ9yâ‘ œÅüË9¬ÙCA.YJvËñðæ.W‚#hyŽmô£¬ÆLûèÍjåBÊJàB<äc±U‚X^*»Ë-QT°’Q¦`ºHÉàÈ9Kå Š!Ë!GÎɯå ƒŽdYP3J"#‚Çd×Ú¬˜Ë¬a\^t»G|CLº§õX^kÕ ÙiiË¢õr»ârO–“ÍÆ°se±¼/I¬§1…¸—Ž/I='¥+Há™"™,ÁéT`v-½X^tF””bCQ¡õY;ËÔ‹I*ÄZVDÜ?.˹†ÍÊ{·´QA]+x瘌X3pqv±UîcÔ,—» m5È,Wñîãçh‚ÚìFË¥“–Èb%îA„œ à|m,"À´±ˆà]4A‰v…ÊbZ‡%»Â6´Á(5EbÌÚ¦&žRŠc=†à,­Ù¼Ö³Qìl[¶š×^B£ØJAQO¤Ê'€suÐxçò}i»tÓö$8ì±|j—8]AIqJG]á(Z.TÅ4 H 2ÇPå4uׯŽ)‹iRœ”;ÇR<Ö˜—;Gu…&ÅÉQá8²œ¦)£Âq5Þ}\ÓÆúXDpž¤Bc‰žu|'rX$F…(bµ®jíÿ9åVLwÜÝÎÄåó¿Yx:(™ÿÍȼ–ÿíø/—üïµüo'$ÿ›ÉÌR3šÿÍt§{¦ÚJ}³]Ѓ[ENÉú&<%ß±­éžã[î±äÓR€ô=ŸfVÿ#ˆ/±Ýü #|—]ŽéW ÐÈÁÌîù €íXÕb ð]—¥8B Œj1°užËn ´l¾­ ì ÌŠqÀz «àhL„—]²UK/8iL4Àv« ‘¸¦Gõðr>³J¶N‚á²LCx©®Ãä=°‚ < €ç1;ÅŸ5 ý:~Ò¬™¶.V`(›¶ÍM”*0p4&â5ÕôÒ·L·Z t&zkØ תW-Ÿ]ëæÚ¶iT…Á+p¤éXÎt mÁÓ¨oô_5÷@æ}¼j3 ÁOßÁãIB Î h 7!ʼnè;xòH¦‚¸L Ó—/Øw¡?ãDcBAËcT˜ÛÌ•§½ y+¦ÀNR¦rZxÙ™ò°^œZF˜Óz•CòUcüE⛟©ŸÀòù vÂÉó$¤ )§ ;SÏ÷€™ê, „ÏH@âÔ‰cš†eéÔÙ@T‚­ê‹«Ç¡N\ðȨ m'v$’p[5ŽçÊãäiGõ€&Çqè<µއ:mDÒ/Dê+Ž»Y®r$;`›²¢ÂN©Â,×½9Â/SÒ¤ò‡”å“JVbÄŽ4ÂxrÙ‘H~R?ð;F£3Pôgv¦<ÝŒÙeòeq{®M×/æ RL ‰‚¶ ’“i[Htê! iHV”O ’£ ƒìL[vQg°Ýk@c œL;I¦Þ0LE'H¦\áBšBqÆ;° Ó’|ŠAŠŒ;1ª³3; ’ËvrEü %âI ¢A²$ã8iT¶©€ÐZ)yÐ0M H ;;«Ì9©’Ó¨*~3ƒ( iÑ I¢…mf#%AXßõcõ£”±"ÙUò%àožroôiòÝ—]8‹è4©‡6XdƒÝ1E6^n`#ר֣µiTkT‘a Õ Õè°£«kߎàÏ£"ÇÔ ˜ Š þÕFUœ(ÿ˜;ïÕ×WøcDƒêcD£Ú°­áo¸Œl h0DjhP<ƒ­§`<ƒá_C<ƒ…3XŶ™ ÖÎ`Ñ 6#ú–Yu­ûd}#^ :#œ@¿;™\fRfZfjæ­ð‰Ïð·ÊÀß |Ç¿ø«‡¿‰ð÷<þÁ;ü{|WÇÿè?x‡ƒCuüÃú™Vþ~þ]8©ÿ^˜É|néjß#F«ß2!³ú&5â߇¿I¼ ük„ê·Ô7â_žsÚ»w.[òáw.[”_¶dyïêé«VL·Øï­·÷\2Ÿó‚ý!^3áï½ðw üujü›óïÓ8Œ çÏ»µrŽø/䟓±=ø»?ãf<”ûÓùó™ðçóöñ¿ó8-øßlþ‰¸¿þÞimœSàïOøs ü½þÞV&úß øû#ø»@û͆¿·Ãß¹ðׯ;‡š™—ÿßþÙÍÖãý÷íûÉÊ¢¼µÃßð×gñß§Âßëáo:üáìöÖ “×|FÉå;øçÃß;áσ¿SùogÃß›ù÷Óàï|­Í7ÅpÊà¶þFo¯o|:Ãúù]Ðð©q:=7eNGþÀû—øûÏ¡<Ás'ïïwhü? ø¿ ùïC^¾Ê­\0‰ó»9s5ÊÛ–úÆ·ó÷çÄúoå ÞßÎùuÔŸ¶Eñ³žƒ-ŠßSáy¶öÞ„çðü!ïðÜ Ï üùçè;›Ó‡r¸Þàï¿ãÏ¥ð¼ì.õüixÞåûyù}ðü¹‡WÈ÷Ø[áý'ùû¯`ÀóLþ<þiüZ‡<‡÷SùûÅo<ŸÆŸ‡2Ï¿ý ïGáù"Ο‰ðù©Þ©™ ð~ Þ¿›—ÿxn„ù5ÏŸÿž;>©ÆÓ~ø›Æç_|þÊ+<”ÃG¹ÿå2lNš ï—ñ÷ÿ‚üþ¤âÿY±ò8GtÃ{9ÏÀ|x΃^溋®Í\}ÍŠU™«Þ{ÃU—-þÈ’U=‹¯Ÿ¹ìêU«ÃoW}äº˯B‹©çª«°Ú5¬Úªžë¯Yù±Lïò,]Ó󱕋¯úp/¿!sÝâëðõÊÅ×_¿âú̵×.ë]Õ¹¶çúÞå×\ݳk÷¬X”¹våõK–÷\›¹vÕâÅKLÏK3×/¾zٲ׈ëVf®…çEø°jqOæÚkn€z/[Fàkj•tͲ«Ü^øq1¾ñú%ÐàÕ×\³xÕªÌâÕKà§+/Ï\uñ¥@Ö¢%˯ê]µxP€´qB¯»zÉrl`–» èYrýŠåHüÊ ù™«®[yÕÊÌU³ÞÉ…]Ï„"+?²dÅU×2b¯ºª·gÙUK®ºzÑ"ϧ«¯ÿÈU×/^Ô{Í⫨ââkVQÃfÉr@»Ž‘Ì}xÉò«¯ÿØUÐ3‹ÅO=‹¯[¹üêë¨ð ªÁ׊ïÐör†Ø‡|öjɪ«{z>&ž€_×¹¸´,~‚ÒPž®ëéÄ—,ZÌÔ^.Y.‰º®wÅJ.ºvÙŠ«{–f®zÏœK/ºpÎU—¾ûÝ—wλjÞ…Íé¼JXÜ#°ã@-¹€pìV.Y¹˜0‡®^, ­êý°*H¬è”/ººçjøñëV±®‚Ÿ–/ʼsÅÊžwBÁw’}xhîeÞ3çâ‹f^eM7ä7´`˜…WÇ?Ùÿ„]Âžêø· ÿ-#¿©÷uÚÓ² Õuô+û·^¶01£¬ öK=ÿ^Gÿcv$ŽÕÖ%Kšñí3¼ £ìÌÓèýÄÌ/'°ßXù ²ü ×&Ífú³áíLÏ5ÀÄ´ôçIÐÐMø e×á' µ?A1oÂO0ÈnÃO0$·à'hÔOá'_[ñ ¨Ïá'( »ðÎÝø ܃Ÿ`4Ý‹Ÿ€Øüú~‚qÖ‡Ÿ`T>ˆŸ Ðñ&؇ð ´=ø Ñ#ø †ß~üãõ üCk?ÁxÆO0rGð&ÔgðŒáQüÂO0òã'@Ïã'Ncø ÞüDÃørL@õø Fn#~‚‚nÂO˜x[ñŒÁ6üÅÙŸ B“ñ •~‚4?¡ƒ¦á'L¸çà'í~‚±èà'Ù~‚a~>~Îû?Á ˜…Ÿ  gã'LPs𜌹ø È<ü‡a~‚¡8¿ðóõ‡G@×m}HÑè_ì«ËìýöQw%PvôÌ>O={-ÃÌÁ‘£ðß™ØóÝøîà~zF èF:8HÏ( Ýh’ÜAÏ(Ý(’ï¢g”ŒnäÜÁ-ôŒÒSÊÁuôŒ’Ò¢zp%=£ÄtÏÀç…ôŒ’Ó&ÃÁ¹ôŒÔSñÁôŒ’Ô½Ÿ zF‰ê^ˆÏ9zFÉêF‚¶Ò3JX÷J|ÎÐ3JZ÷j|>ü{|F‰ë^GôÓ3J^÷&¢ŸžQ»·ýôŒ’ؽ•è§g”È~zFÉ쾇è§g”ÐîD?=£¤v÷ýôŒÛ=HôÓ3Jn÷¢ŸžQ‚»÷ýôŒ’Ü=DôÓ3Jt÷ÑOÏ(ÙÝ£D?=£„w&úé%½{Œèÿ>Qÿ×!ýô|„úŸ÷Ó3Ž€îV|¤g Ýø¼ƒžqDtçðù.zÆ‘Ñ= Ÿ·Ð3ŽnŸ×Ñ3Ž”îŸWÒ3Ž˜îø¼žqätÏÆç¹ôŒ#¨{.>Ï gIÝ ðÙ gQÝ ñ9GÏ8²º»ñ¹•žq„u¯Äç =ãHëF×äàá#øŒ#®{ÑOÏ8òº7ýôŒ#°{ ÑOÏ8»·ýôŒ#²û.¢ŸžqdvßCôÓ3ŽÐîD?=ãHíî#úéGl÷ ÑÏb~0ÿχ O¯æðÜy—uO›±{2üó¾?ë^ø7õ£>täó[¶À¿|.öt惷|{ç©2ÅõØÏ{&Ý_¼òÈÞoo‘ÿ1}°î‚n´—{óÛNj,¶n|¼çM·!¬¬ßŽ¿}\¾ê}ö» X¼nï· ¿eõ·uƒpü·¢übCß«ŸŠ¿>rÝKÿà Ýþ-ü·pèJ­õ-[@ìÑß#¼gòMØØüL¡mjq~}aÞÔúâüFø€ßšà£©8¿>Z ?/v6n¯ÿêëè÷ö |YÁ‚›€”ž7¯áŠ›˜.û^Ãùmÿ¶þPÓ6œãæBÅËŠ]ïÅÇú‡Úþ"3:v}|k,žIHtկ˚¦2´Û“øÞr©.\1µ»Ð3uQᦩ û0Ú°}ôþ¥ØâÝo]3©±0gjýNô ÎÔÑ_¯¨Ë˜¿…* àoüÍíÇ”™³áoüÍ€¿óá/€?þŒ:ñx˜Sá/×7 ¡Ïš::௠þZᯠþ᯾1"F?´zaâײñï`2ïod 7–Àí>Œûê§ŽÎ,¾IüÇïÇßÿfV‡šH5öaÌ©ïÏ"$hð/?T—=㚺´FÞÄáý×rÕHÿ$Žé‡¡‘71¸ÔH_ƒÝØß ÕüêémêèØÈW> üî›Ì¹uy %¿û æŒOÉ7?Ì(ùÊ•ÐÈœ§R2…Û’ÖÈVläœñÙÌ™ƒü×Õ©¼™Ãë».¥™6~#áü°vôÖôFÞÂá]žÖÈ÷?P™]6oäVldÊÕZŸôYLJëûs¼¹L52@@g.FFŸÍÝ×È;\b×ÿ6^ñkPÑÜ[è:ŒÈc7ÛQœ±úÙP±jÖÔÖâüè.úë8Í$Ÿ0 Ÿ¾Þ­í¤Öz4Ñø#ŽÑ{ µbçaD몶v¾øñ&ÎÞVRLûÅY²ÛÊ.¬‹53•73²´L3þ~í囂ڈÍl¿*ÞÌ™¼™•kæðMNË7#DuöÓù‰fþ˜7sz¹f 4I-ߌÖs±™}(ÞÌÛy3_ú‹2ͼmA5Lë#qÑþ!ðxty¼™¾i\òga3„±èR3 ?ßüs¨ç}(UZ-.­'Aåþ¡´¦s¥µí-P‰#Ôd>^˜H@ge¡â‡þ ”ó\Iá ;[˜ÀÖï\¹Éò‚=ö¤ºLË×O=·9í´lX ¶DÊtx Ë–s9Å®C¤ ø ®'ú:ë2ßÄ•A_ÓÐs¿V~ú:¢Æ~7ðáOþ,•oìhw>óæF|ø³ÿŒða´¾ÆÏèÛªáCÀ[XÔáÃh‚_…r6НwÖ M1IÐÒ͹ïD1!ü"ú–a£&,@à©€`VýÀáÙY‘åú¾…¾Y8æ'ñ—RÝN¬YšôïÏ•†n¨/M*½!¥ÎåT®ùS›Ï$ÕæÏCùÿ )ZûÑíø‘œT.à£/ÿÄ6ÜÝ®ïL©…ŸI×Â\æƒàŒ†‘¾ \?6¡wyÊTþ.>¿q-‚2"‡c3µ ž3O×þ]#ÈÇ”IêW3åRší®VíNLmwo÷]¼Ýád»\íN•í—i÷»¼ÝÅØnæ’Û(kWm_–Î활ÛßZ̺o(ÉoÛ«ä÷P~ÿÓÕŒß?ÇÞ^*oÛ²qøÝÉé~ÏbF÷Iº¼ Ú}‡¤û‰2tœÓ}¶Û¨ÚMç÷{x»?XÄÚÝŸlw¶ûDzÝýeÚÇÛý °gtË‚Tít1WCký3¤‡Ín£V¡éu(î ’Kâ_j ‘8ô}½,&pj’ —òb#©g;RͰ?å,xä*Öá3ß•wÂäóMl¡ȶ‚úKáæ¥Ô-ª¯Apf:Ÿ^ßô°Ð’ý8"(e{¨v¯ýö0– ÷´lž]Ÿ‘Ú¤mé»9š*î#U ÕÎÿ­Úioúkðe©ÁpËæ£3™[^…[NM2 ýþ÷ñîÙýaäÄž$'¹ƒoODô ïj†Ì¯g­ÏQjŒ]ÆÇر“¸Ç/…zíRâöD$Žšy+of6óGéÍ\ΛyþjœNöH³E6³šx+š‘SÙÉG²1üVlæÁùN=6ýùÛë2? ÓuË×° Îm`³ßϧÍ~J4ðν}f1Wýz!£#óz@e.GEp´É,t>DÈ =ÔÏ€Lˆ³à í‡"hK±Xúß“nùîÛxÍÒo}ä¶÷!t#dw õ…¡]#êÿq9aò[€¾CÞ÷!hPŒ—¦‰‚ÿ€ËÒow4ÌÞÊ&É²Êl™¨™-KØqËîÌ‹Ë÷­Pxô¿6Îç±Åó\Ik&è³oïóà ip6ñ{ú–]ßÝÆ»µŽwëÿþ‹I¿ué'ݲ›¨åãoë¿0³C–ÿ7­|ÓâKúëÐBnžPŠö32lªè§2u-_oÿ ¼:·ýY(yýÐÛôØð x¼ñ¤Bù4ùëA,ôFYg ÂÆz3ñ¨NÌÔàÕ0G [*°fQùþö¿@;)¶PñÙòãÛê2Ïž ø`ÙMõW~ ¬ÿvÝÁK^:z´0´~´nûº–5Ro†í8÷4…í8C´lÄÅßRà\šrÔÞ†% GHím\óá>ê×Î1ÖX;¢»ôÛ'6à—RýwÆ x©k¢…´ªYüÄ€a¡õƒuÛñ³8lý/ê óÇÖ~ p+v¼ ¡µ_`ÕK ë2 -Ÿø¢®ªÔL²Š«ª×ˆÍÓƒIeu۟ =é²Ô‰¨‡Wº5]JåK¡2óHHÓ –qmÿu!3ƒ3]ÐÖ߃–(º4Ûþ~bï’”©¦—+«±ÙÞAá+•4ô^Ðgó±]&³‰+¥Ûæ@›o_ƒêFÞä/¯`üƒIu{ 4Úw¶T·–™àÿl! mØîý0€zâºð“›@nœ Dµq`Ï6Îj"´G`ò֜ڛëxw\|ë;d‡ì„9‹Í?Éê·ðêÙ+°7S*ß•ûò²7ûÒ{³ï,®-”œG/MUnåãì ÄÙ /9«´#¢[pjAÊ‹ ÏóÔr‡‘.Ì8þï˜oàj¹¿•óû™Ö˜Óö@² qc†T†E*QiNh~ ç„Òç„býçÅ„pæ‹‘ AˆXS³&Kî¸eÍ€ÌW_¬<{ЄÐÿ ÊŽ^ÖR—)ÏõnrapÍû·á—%ƒhÒÕ ç7o»õŠÃ å÷ízñ-æcÀ„ÿÞó¦G{O` 8îÙ©ˆÛ}Gêdü,Ξz~í?z\C·l¾Üù╇‹7bü ÿ2û‹Èß6k6»šh0wR‡ÌBì‰×ÿêj+Ôõf¶±¡MKýs¿H£µ±o[¸¤ƒö¬+3™oâB*“øQ¹u`˜aÜÔ?r ¯J0p¢äSñƒà®«ëÍ»:ØØª8̪µÒ€á䋿ëYóè°ª-¾ Õ¢uMTE kFêMW€´ X·¬¶®eó¥ÐJ!=&ÒC\!5ÿ9iäÎ#I•të,Ð+¦´D,Æ>æûaKñ¥ï¿ó#d ôûo³Â+ž´~lÒMÙâü6o/ÔõNxöŠ'v?öâ®_¼¹n÷®'ìúÙ„BûV %ÜÝ=×ñ™ÿ '¯+Þü<-Gá8ÙrûèMòõqŸzŸ ‚€€£kÚpxAó¥+~:ÒˆÃúŒ¶âÍcLOãÍ€úlm榩91æXï6ßxàp•ÌmøÉ‚öå a÷Àƒùdq~kñ\^v–=ÚrnŽÞ† JÅ9·Ù¸·en =¯´lØ ß9˜á3ÜœY„BÛßšQ/NîßÁ$ £ï.&Em;[ñUÏÔÖìKÓÎÁ/Ò—Fìn>Èâü°ˆUé'hýGÒÂd§‚(÷á%°Ù°qÔW׿ ™õRÛÚów gPûÅÆ¥{ÛêÚnoúÊÒF¢=}þ « ‹øS˜¼qøà²FúŽ%¨²ÐS-›ûPC_ö>_¼ù0ë‡D¢>耾€lÄl-M80øä¯Ÿ|¼4e =ùÜOw•”¦Œ"䮦R]©ý0ü1ù™/Mj<ðËÒ”FøìÃ`ÊÑùm¥öÖ/a¡üwJþýÖ"h¤©„~`×ЮRC7°mxï½ N°|<ð4¨”aè´…Ø]íü84Xjðå¾§xúÀÃO:°÷©‡Ÿú3©Þ;´÷À¾¡‡Ÿú 7e.¼yêiÄa6QM3Щ¥üýÀ{_j˜ÍÚ§2 ›Rûú¾˜A¿°:OØ7ÜŒÄ?µ÷ÀÓŒ†ûˆAÈšá3ÇáæÙ²<+q›daz‰UËÙ÷a—~oÇV‡½íÝøýÌbÀËߨ! uIÿý†©¥†i_­”®Àà òuùy?¦ ägß+x9MÀkÓñgô>{ºŽ±àA#a¿€ãBÉ!½ïÑÈy‡>;•s2‚Ñ¿|æy† •êëV²8eå—ôØÏ{q][«q o|³aŸf¨\Ò{éO@ Ÿ"Ôpçóä*KÓK¨áw-bóͽ3P?‰h¡­•×N,F­¥FÀZy±7C±Ñ`"à5ééŒ÷SWÕ1æ£NåÝ@cöÙ&ñÄFª4lrô{‡g¥)ô–µJ#Æã—ÄÐæMOÁ·÷“äu˪$%§Šâ¢án­a†wNHæéY»×*\·†ÜJ‰Ü³—¨*ÈÃáÔžÓÅ/c\Ëövx‡5xMU-›?Îvÿ[D'·ˆÍ«Ïþ%rá;'—:8—æ)ã*9?¢> úJßCŠk5 õèSÏ•¦¬£o¥ö»0ÆÙ>„ÿNÙ„Âʼtfy‚Ë?8±ð½RýïÐIÇ5ÖÞ/ýûÈþò¤Qó§Gx©4¹4öw'ý~0Mtý[ÀÇ'SEPʬ4ÈŠ•êéyhÏp~Ñ¿‰Ñ¯ìÚ @+xQ)7·á½@2~‚†nÀò^,µobã}+b‡+\ ÄA;ްFÛÇðó;C?xêÿîð}øÑý7ˆâ²÷©Gï{jïðûéyÆV‡ß³¨Õ$0ƒ1àoîÓÞì¡7¢Î§Ô›öýRˆK XDù÷(ʧxvhðÀÞ¿‡¿P:pà÷àFHí©PjîVŒòïÀ{euß¶H„ê˜ÕýwÊÂ*cIŸ¼)ûWïÒ£²úz^}ÁŸ¢ŽO©üƒ@­ €É>–“éû+®ZÖ m½)½­ ¼­C`Ñ÷¿^D‘VòYæ-ºÀН/þ—¾"}’Ú•+Ò»~^ümGÁ_¹RÙ†“Sö›Ê¡ÿMq/ò‘§;Šó'ÏÛ ­Å¦Âcëw;sÅÌÒÁÐa¥úº¡½àç•êŠ]Àîûë¿;ºô0½–êOÚûÔîbok¡÷0þúp˜U“O-üxýw—ê' í+öŽÁW˜héé©]E,wŠ¬ß Fì0Ëš,ôswá× ¼À(^y¨Ø;Z¼ù¤¤]÷w;"øß fn+t?ºqÅÓ4oÿ"4ê аåëM­ç6˜}CŽ}ßßol+vµÍõß­+˜øëú_Ömj2"Ús'93ëw×Ú·|‰ŒåbÝYûÁ*/tŽ~¸€5 Ttl¬?X·©>«{íkG°'z#ó á?CøëÛ¶übyãö­h×tá…Ï}  -wœŒ{%b½wñW£;Ä=”ü•ì¬IöÉ=_â!€Ù»–7 çñ_»@2š `×ó,’sáí]sÙÀaBmêß¿ˆ{à5Åý)Ô|ç™±ºž7ôaÕb#:ÈZðâ¾glC´–î_=‘*6SMwî]μbç0 ªeótô~° ¾£ ÊãùðxЧ>|ðGÈd–¢Ï±Õ-wxð«2w Sp'7?þ[#œ®Èf¹ë=Ï`ü눾'À òk#†ý×EŒɨÕÄbç3Âí—»úýG¹ÐyH„ðoàÆÁ¨Öã}Ü#® tpprGnšXúÓ;ooúÑØàrÂàáÿ„¢œ%ήý…õQXÿÐÚ¿]ù_TA^P†1\ÓbsRc?u7²ïfl~p)®¶6ÏaK¨gS"^Ícð;¡Â_î*nøk|SlÆv–ì¥Ø< ð¯ÇŽ@‰ÎÃÅ+GŠ7Ó89=n4^z˜ Ö7y1—îÜbàÊÜËzã¿‹^ÏÑ^ïœ}/[hM½…¿~î—i¯û‡8ðÇáõÑl«t:)ÂçKu†»n?Ùpí¹{ÑÓϱ=¸—yÓ°ü”÷’¯v/ ýó¥ E=—ê Ì& ¬âj^qUÜ$ª´Š*XSg°Ò÷ðÒ[©ôúw?üÛß±8fÏ8o·pÞ"¾à~Í‹A:«xi€­¿Žq‚W¤€® ´2Ö´íl[ÌÂ)¢±¦>ªÄÇ‚¾}½ÛD‰VQ9Yôø'°ÅØòK¼¨¯­ ·¸>²;+ÅZá‡þÖx±ƒLÆÜ—³ŒÀüÊ%»å<ˆ»ôÛ¥u{ ,t”(­ÛOß ú>Dßú¾çßÞ…ËÊÐ÷Ù¬ }ŸûeÉœQ"8Ù¥¥G*Ðÿæo`[ìÜ P©åŽkëqåa¬åþ|žHÿç­¾ëgAóœõX©:!…(–¦lÁ"Ôæ;Ú±8š,ó×/Àïk‚m÷þαº1‚3AƒƒâµEÂXÿ=°ñÖѬ¼ní½*“A.·|YÏZÖÏžˆâŒÈo²W;}ß*KS¨áË\ƒQ ‚¾Í]¬>ÀÆß‡ŸcÁ×iXÀKì€Ïm Ÿ¶Ò<0&ÁޏL:=àøKmßêEŒôÝóeŠÉ0¾1^µùtçM0r ß[Ó9›†›kl{GnÝŽµ‘aôeí7Eô!z( ï ¦¡¨n\‹8°N~#Úc8ijý¸Ä‹ªïìÁ*S¨;‹m¥YCc`Òî®#j÷Ml¤:´k„ÈýîpÓ÷‡ö(P?,nDhЗµß܆5ÂÄì¦÷ÛoRlÀch…o¯™Å›)¶;æÕýTIqgãY{†›öë •±q¥h¿¬}°DïÁµ(ÍC~Ízq Gêƒá†>É!ä ±…êâ—–Íÿ ö^œsË$çÖ¼“ðn˜:¼ìEèüi¥+^CpwbY´€èËÚÇâ º%G[îø­ñMCrÁ9ç];ë§ð0‚4šÏ:€Æíí‹;ÿ¾f>ÇÖGDñáaˆôp3*‡Vh¹¿k¬îf}açÌ.Ÿ³¯4yá¸Hàˆ_˜¡vg·ø­›Ø°ˆôù&%å“Qʇö»r¥+vX§9H ÉH~ï!ðavý'µöëR=ø^¥Éß-R¡ÉT±k î -›?ûÚ]§å~’‚‰¤Î §•²úq©}“ä!°˜ìC°štþ‹Š×ï(]ñØ“çmô ß=V؈Ç¿ÅMàzUØxü&ÌbC¨›gZîÿ6Á!M¤cC·_!†~Y»Ÿé*ÿ½Dyš Eyü²ö6jsûhl¸q#ü|=X Í7‡©¾ýCe„æ£ö:†§•Ú3÷ÑŠé}8‰ÃJí­÷‘fšÒqò Û)ܾ@¸·åŽZµ#P¹û(D{ŸP…½Ä‘jŸ†o¦÷E›=ø} ÕìÎÉ(±Cωrc0Èì°Û*+_ÐxŸ¨X80±‰+4ðÛyÍÈ„›²ŒøË6ü§°qžÖ;×bÀD¸ó™([aÖiÀ):HtçóX÷b©þ1üñ©oã² êH0pâß÷ÔÓ8AL~Œúcžèü²ö³o¨>“øÝ>ƒF¶‚Þß=ÜL hŸÔì~|°4…ØNH 7çˆøÉÃs~бƒfÄ𛂤Ÿ7Ùß{f©¡QVœ¯€¡Ý`Ð÷§öÒ@:0öl+ÝØ™®âý8ˆsLµÃ˜<ks´² Ä]@Cž2¶s`øí.÷Q‡Ðê-°©‚Å<ô “5Qe¸~w±«•¦Õ…êçÉlŠ£¡ûÇð×– ÿÊĬ]´Uÿ*›®ß]jŸKÔ/`“é>àÒœÝc´@×Þ}[s#…2 0ÄœŠÜ/µ/Ä×{i‘¬}}úŧÙ/ží}¥ÝOƒ&HÞ°'~óra¡úá‹ôÃ>vh=òE’ÃÂísÕøXsV±óœÂ[ç;…+>{¤Ø~ßgh›Æs£ñËÚŸ¨‘üì5DoaãM“\Zìl%^?DVÆ;訃Ÿ°÷J“Ás5Šs>{¤Ð¼»·þ³…YðÐôYjnŽh¿¬ý 5!¸Þ{›5Ñð{Udz¡_Á¾é>œV0Þ¶í&’ׯ Íëèáœâœ¿†‡ ðîêùh±×)ÎúÄ‘í›pκãHŠ]âË×fÉáøÛ5³ VêpdöHûz?ÿˆÚ€›%~YÛGpÐä Üo¢r6Iï{1ÃÔ2ž0çzñ¶ûXÌéO0ö‚toß‚òÿ G¶ÁGI7)±+ÎgæÕû©Žf^éÖl‘Úa$»†„±Ñ”46Ð`8_ øeí?s]=ÈJðù~Ë}|¾ÈtÀÇ5ÆGZ9D†›ÆCäœý¥Éû©ý@´_Ö~ñà/Ñb¹óö6âí ÁÛÄÛݸjÿy<¨_üÚ9øï¿MC®¨}K‰õ&¶Ÿ×ïÁ4Ʊ4ý{úÒ „’<5•&”¦Ü…¿]„ö}—ûñ%¨:°zñ· 1ÎO_àå|ùÖD±pß7—¹ý´™u`ä>óÀé<ÖûÁƒž%B"³yH·Ž!è¼>XÙŸ+|l>ö§ŸCÛ¢ëIŒó|z`w†Ei•˜v?ßQÁ]ûϤðÇRwu)ÕÁ<÷ >Þß8ü±ÖÒû[ærL¶òÏ„ Ö°u`¤µÞß¡6¼Äüß[ÝÃüK¹eÄ‚\;ã~TQñýE½ÚÁÜONÙ) ÿøCå]¹â¼[œwZËF~Þ~>ü¼}îý¬ÿÝOÜ/žÄY»ÁeÝÞMNNðã,üŒ%¶Ïà–)uàùí+ À½XreÀÇàçí³àçþÕ÷³( ˜ëw.ì¨ÛÝZlFðK÷vÔ=†D8àËÝ´õw¨›·ÜOk9|iù«3³+ƶhÞÚ*ørÖ¾ÂüÃ…‡[î¨Ç“a2+ÎÙzä¼lËÆ‘“WSfSIŠ&^úpúÿÍë-øa”žɧv­ÃX@ó&zf´ßu?í¨/µÞxÃäÖ‚ý)EàïáXÀ@E¬º~ÒrÇ’“"}„H'Ö¸`Q´NGçÃMÙRÃjì?`öÑ[¹ëþ”VÞ ­P E£à^<Æb¥ „S©Žº°…¨Åh(6[ ¯Ùºiç07#dw ãVïÀÕ£†5`A4ÐCßãÆdp"áq×Ï&ܲ{C¤£Ø¸ëé ·ìšS}í@_ÿ]"˜]¢¸whý/ë ½C-›¯ÃQîΓ°‹í8³-}¼£0ÿsÃõ§i,ÐãÖá©ðx…xü=.dP²4)LŠ]PzÊÿP¬q¸,‘MˆCç]X  À¿PÀo·ÀÛëØ`P<¼à­À¶»Ùª _ANß¿ªÞ¾[[:ØIEzÔŽÍ#¶*J?<›SÛÖ áâEšôºƒPW@oÒ·¾ý}Ð/]¨‰å>RøõjŠoYÌÖ¶ò6wîÙÁ–›n}åMŽá VÓ´Òú•Irahò×Ù‚Rþ>XŽ}žQš2ºƒ¼Ó‘Ò”êÊý;XŒºñ+4=Ò¦Õi_asCq~[˜ì§éøìö÷¡™…5Œ¿mÙpèL9³0JZY¥¦ÆWÙ¶îzdвm‹X‰KÈú?ý‰›ñè}[i üfpT¿Â½øÉKÀ~ö­ãºQð¸‘C¦À´®Kñ¼Dcá9¤¥Iô¶”êOÛ6—Ù5…ÎÛ†ëë¶-O›†§Öm»BŠò|({”a’ºþ»à~C;§»  ü eNžzÆpý$&¬ýë„,ÄrË›3¡ÏëûèW\~³&¬¨…Ð5±"Ú:×¥¦&¬løf¶¦&ø¥„•áÛX°è©&eGï9t‚Ü{‰’Xf`°‘,þ"Ô9ˆ;RÑÕ!÷¨0ÿPËæ¿û-­Ùç¦_·l>òðzVr•ÎìR¾þß²y¾ëæïºï×›µlþŸçá]Àß1ƒX®õß±•ýºÞ,Á>ø™SÐÄke':¬o<ƒæ™Ù_a–r]¡s¿6Ïl\óÑ„¥Ýûnš» Ÿ‹Thé¯Q¹ í¡U)ƒ–ÓÚ~4›„ÿ¥¸Æë í‹H…±Ô^lößO˜ï_»y–$'€Ìï1¯R=¸g[öƒhiÒõǧ¸mø‹á¶o…"Å&Rç0èŠ6}®·.ÜI?tÁÄÀÕuºŸÖRà_¥Øõ…sY{‰^²©G>™ƒÛ?‡°ç·³…®=lÓqhoËG>;Æ€ÌÙ²¯40nv¾k?Q.,àë/á3úCÜ-’T°Šç1ƒ·çíb‚/v=D¸=´öÀ6Ä‚ö' æmïÞŸàãâãž–ÍKh'–ëŒöé  «o|¼÷í²v× µ4¸¶TìœÊ*µâN'^ ΀^­Ð޾¼k¢Gn3>')Ú1A¼cè‡fB²«quöm¥9ÕiÇG^ó¼¦;±©Þ“ÍA¨J¤ã[DžJÍï#ÒûÖ>DMKöÍ~±DÚ}[ã³_ø}x½2nv0†úñ5u]×qc¬È: mÓ(tíÐ)j¹³ÆlWÇĆ]ßöq^3Ê|ïõB‹µõ­ÞÁÕV¢]ÒÖeÛd³Ä¯Îý&¬f<©¡€p;™mEàFš4ÔüG>;9ÆÆÄ®숎nÍG©»·FêÎ?fêN;[iïZ¨{ÿP u÷u÷jÔ©±ó½{ eó´ß“^l#ªu‡r;•8¼ôz5Õ׳¶¡ÍŸ¿žö 1ÒähêVÌ£¥)sG¤m&N}wÅöH«œÚ<ùÝ4Õãm raûŒ¤¸®_> ÊãÜM“1ñf¦rhŒ :ï¡MN÷´lÆENaÎM tQ´Cs˜…eѸ“ZãvÜ¿ÿX9`Ê–Ù{›c6³4’È™‹„&ºðÓg¥MÜëΨzâžßË"¬†Yg¨™\šEØÔ—Þ>A+ù?Ìö”ˆœ¥ Roôïá¯ëöá†&z,½¡ÔpÙ £dS’-I@ÛÈJdÇú˜- S0?BÊmɽïæ{àÈì OkÙ€‰ãSÍŽßwÆÍI ,K8Oòõ¼½hPŽS¶2‹·}“reÒaþû4Ñ\Û‘AG>ÚØ&ÛÒ¦{8vܬý]§È;@´Ôõ„‚ÑEÔ=^§0IĨ—æÓRhóày/€&­cÁù¿Ú#ˆaÜ?­¾s^ñý}š .ý )moÛ£ü‹…Ü(h%ûF÷3øò3¦tƒ^Æ8Vý¾G³ŽK Õi¿KöB©¼òM˜ïy™ò¸ö{ ÅÅ…#´<;¢P<­Ès$¥®-µ2‡IG-é6 ‡CmÔŠ h´—ߦé-ÚÇv—0Ú¹)ÙIÊDaÆÛ”ýŸ¸¿¾ˆi‚‘:@Ê$öâ‘·JÞ9ybR„ÙH”@ù‰ÕsgB3Ö¿X×s1çã/y¤=qü;Z¬l•.Úª“p“íÏæù\\>ò;ŒåëæwðC±ÞÕõD±ó‰â•ëŠ_»‰5VóE v&Qî×^ ÎÏô½žo¦È\;I&Ñèï™ÍŸñé‹ñ\ËÈÑØsJ±uý‹Z6üí>:·¯£Iqr¡}Ãӿi„«þ‹Ñ?¦–²FX—oO¶¹¶ëHá'~ ü,¶.}|"®ø´–®xlD¤Ø %’¿\ú퉸RÔVÌ.Ý{rÝ\w¹b÷ÖÈNïŸÒÆ©#d†Y{o±Ð™ÿü·Äir¼3Cìðo-¼xÖî‰óÞ¯G϶r¼±?=».3@oæfë4œqêøAÿVδÂÐYûˆƒP±ôÞ:LGû¶Âj¬nWáaðØpáðÚo²ÈhסƒÏ‚Ù»þ¥Sn:¥eÃ[¡ØÁ/ ·÷R¶w‚ùä6ä,îìnX?6¡çJÁš‰ÄÙ9:ÜŒÜMT†¢XH°ÿà¿ *W>ódç3ɲ7±²ª§Ÿ]³þ¥¶5×?Û°þÙShGÿúO¾ù”ßtÒÑ©wv\˓ְ²—m»[NøùìLÑä³a©á0ÍôôŽõÏÖƒû_—þP¶ÝV¬[:xrÝ~<{Å®­¢*yÂÒ·uaàðmÔ‡Þ5‘Ö¶SwŽˆx2àúv2à~2ˆ`ñ¼]Lï7]tJËכ顳qÓì3X–†ùÃjé÷N!ªøCLÐk9khûj€‰åÒAQÜüÖTšµo+žØùø?=ºq°e¦èÞ¶ƒXÒ²ýZ¶mùú–n"¸‘õ÷hݦ¶ºSå(œ(¶cEŒ)³vm-5Œð€ä §°ó’TEbC“~¢“ÝÍØ€m4M(6S1Ü)I_p O†Z6OE?‡Žf6÷iBĆ%ÊÝÓ¥†!¹F…i<”4Þ¥ÍùÛ±";ëÙù;{wåþ';÷G` ÏkĉøtÙÝG’¨:y²ó‘á3ñ…ÞÔ§"š]OÐà~bí}ë_ªë™MY|RÙXl_Çh/ÐèÛU#ÌÇþp 5ÆÖÏüÏOà4±ר[ÌÝ0ZÈ­0æu6J˜@¯AxÇ n\ûÅm}Ñ~îÄ×›Ú˜ Ëö? foÞ$*ïÍmÂߣT)F¿A›ÞüN@ÔܺsÛôfÀÇá˦Ùu,ïLç’\‘„¦ Õ4ê«ý‹#ÓÔöκ c;óµ!Ô{Z98É/B™GÖ~Q¡[Ñ'Vƒ´ÿ¿ò¡â̓|½ýñõöæ'6ß„†V[±£xs+;E¸~ïñ£G‡/˜q-~ã£ú±õ»ÆŠ'-œ]ª¯Ã‡!ø¤Óð}¾—æá×Ãôõ0mŽzöÀ¾¡G1×D×!ý(5@¥Cé?µ÷z=µWÝ.öo~"ý<­ÌÏB©2¸ncbæ^–­‡Ú“—><±î…º}¸bÖþ­ŠÁ_ë+v6 /Ú³õÀӔ•TSi¬>Ocõùµ;Qz:ÇÈ9[»-GŠGô\* üZ~ß´àß¼þÙt%“ûÖsçí}žöÊmêú}Ë×;*|³|þÚŸÄòlHù"û‡²–¦åÌçß÷fmD‡ û/>ö³[vöZnxìi xýàïaZî"œë{ߊNJ?‚º¬Ôñ[<ü»»þ‚ž0=ÆÁ’ä Kå 2#Vßìky$)l`f×¥§³s”£É£ÍdFß5I?ÛHÕÑj;—Wo=sÊ2 "§lôãS÷i‰ÔxÞØd ¨8¡£_¶¿úÝ ÏGKÒÝÔeâíúy½–Íxgòóâàë1ðöùÏ9Ë#²qÙC8»²”@2 é«aa_Ak“Þ…ö(=Ìc…#¨¯_sE¤Ã†…"¢÷Q2.¼úëôb;¶¹ Ú6"^ôâ9¤\x„}íÝÛ†øïCLé`÷Ø-÷¡"# @vJ"¬ã”ô p¿‹0ÇøÙŸ9„E¡`|ËQÝçñþµÿX¼ò™âÍ#éç±ÐžgIúošêˆ“îÜÈ%c~”Ú¾ÓøÀëðƒž&'ó4#gtD ú¯}ŒNã<Í­uÚqt„í<ÃëìúFGTxiàùë˜ÑÏ|oî·¢€}þ ðÓüi˜½fÖþ±Rû´§Ù&ïâùÔ}tdu¸¡1›‚ÿâ‹Ãü×úÿe;Tð·ý†ÿÂ÷§É}š‚O; ©3¤‚iÙ<£O\ƒiT0nÔ7†]‚ÁY3ù;‡ñÉq€òQäEÈ$”øp´åŽ'ÐcÅšh )£ x°·ûîÀõÝ3ǾŠ·ð·ÃôC†ºÀ‚é ŠÏd=bØ=ôH©Ý¨âKí~{t“¦à·GðÃ#´…;t7<çÇèÿŧ ±ÿ¥3ç ôŒÿRj|+=㿸心ž:4 CKçÐ":U¥"´7uÊlzƆiëï”î§éøÓ”Mô;¡Ñ¾Î¥_•öÕôËú…o_G¿¬„û_Gòc ?#Ù9§ÿœŸÑøžÖ—û½š:ÐÈ^åú?Í‚¶}COOb9Ÿf‚þ{ث־-ìUÓ@+KxÙØßøÕ×±P+¢ZÃx‰½Žö1ÿŒÐý™4å…Ñåïó@Ë “KÞ¦~œ‚?n_ð3Uºƒ—ž«—æ?RKÛ¯¥•€ Ýr[±a•ê%øÌ†>Ëî¡Ù¥b#8ˆ#+ôÅж+~¦ÊqpœÔÑR;¸Ž8qtuHtXÛÀì­ý4ê)ýÊW£Ç§µe2R'Dº•Ý_› >ž¿.îŸËJðh[ýÕÀýp­qX[E·RhnïoÀMÈÐĵðg<ˆÈ”Ð=P@ÀP!¥ÞbßC¿~€ªAùÑÓ0ÆÓV|ƒ6ÞŸ\ó®Š:O"ýϧI­‡¶ôi럭[» x¯R¼ ØÃØß”¿f«u˜Ì/ óf‘AÜøxO‡‚Ê¢¯-lá6E;¾(L¾?x°ˆEsÈÒýäJõd–&?:ã×üüœ°0~$5XfsOjäÓïç¯XqRãöÌÚ“ðG±uÉã´îÔN?€lø$®;m¯‡Çó°©– ¸Ó¨0y£†Éa† Ò1nFâ ŸázÂGGë0¡uxíŽÖp=¡Å±+2ÄÈ}R(ă …+1É$¾=¹&O,x²~#>ÿ; }HŽJÅðþÉ˹—–[.¼´V˜·|…­â7B;…+Gõ&Zîx'ýŽå\ìøÞwM¦Õ›V¬‚«7 ÍkdÌõs è;©^»¨ÇÏøjò†’´.ªÁpS·@¬ÿôÁèÖ¸¾iX ^Þ*i•60VðMiÌ_ðI¸7dãÓNb©…f¶E$Xí§œŒÖB9î\³  S6@N=C™Ñõ§R@knÁƃ©lì7„¦þqF"ƒSñФåœm¢»gs^ˆ¢ÍX”êpÏÀ\üÖYÎ'¤ËúˆâÖRýP8†Ov©ÑF0Žáš[©ƒæhÄ×µ¨1ÜÿúÍ£Gc¼äûA[6¿yÉ z¸O¸á>xžMé ø6B{Éáãý¸?[1ó@ïpñæ!TW¨«ùR悾b÷OÝ4uªJû1Þcý'ObvuKÏÇ»šå¯~ Ì„p‰uår2RÖ u€ä®òÈsCÇ26³ùË ObœoXÙB£A´&¢BBÕ1¿Oš¬aBËÆ'À-‡Y í (î\£Ç‰—S¥ƒmucP ÓÚû£˹ÝÓÇÚïØÁä®mçB6¤Zwv³/M;ñU4sâ?ôC'ÌãÒ& ±}þ„ãj÷_19úÎ)™ÌÒ‡ßH»Í‡ŸŒžš¼ŸHñùõœÏÿ<ÍÓ¹·Øár¶ôsa½¨[ ßxÖ~ZbIÛ0Ô0*VÐÎÚwËnâ1æØÉä>ZHÍ侓ð0Ìœ¯i¹ß-»(‡/æKÞ*§Ž•kÕ¯2‘9=g,gªå-P’'g¥—@ÆO/ö6µÜ?ëÓG¨ ¨øŸÿˆÛÞFi·X"½\?¡v2¦—|ì9d-Æ5¯‡:£7#û[6bB• [p´ïÈQh`þ„ºŒÈ7R?pÁrf˜üêjÑBî„T1ÖȨ|ù‘Æ*77q:x*bó+Xæ“r¤5“%ø$¸þñκHÔ¢eóſñ¿–Ï0$ðÒééÈÑ£ ì6ÜžÑ;K©Éq©ùh]]FäKV4žò ‘ˆ– É3Éñûö/h„²ë_RR·ö­ÐP5:ñë©È¼•#óL&]U\ñK¨û“çN•ÔÃÒéšzx>¦òõB=èê·Ì͹…éŠ_C˜K@¢åާàv.}F˜A¨*o£éNRÍ#ð{߆Ôd¡!:úñgœ0ú²W­ÝËùÚÜ Ÿe4UÑó5ÐÍ„Í;Ú±!JXp¨ØŒß Í8 Zî¸p¢RUúL]=Å”ºÚ!Ôþ\F]⫞ÈyŠÃ€¾`yÌNÏ<¸#™?áÈ|þ¥LªmÇ›á¶ü sái+à‹¶¥ÙwÒ.^‰)Ôq5ˆm·›oà],:¦>ذ\øäl3Q+õXçÇ·f2´²ttàÞ —¨0 ŠK Ê]Nµ?sz2oÕ—K";À 6¾ˆ)á.øiþÃÆ6´N®ÛÇ\Ç­¥ö{ðÝà ûêv{;ŠÞÒßž\÷k°DJ³~ owÀÛ§ö’_‰ÀÁ¯ÄÊäŸÅÞçéøÈók?G1v™× ·®¢ö¡÷GØ)cÓI`qmF@=€»·ÅŽ‹V¹ãBø•?Šø´Å+G‹½"bÍÏÔFîùÍñ0ðäj©½Py¯Jí­¿>™¯ ”Ú;~MÓ&NƘ “~Ëýúdqø ³x`iÊUj7àûÁ¡Gìzô©ƒ¸™ ›Â󱓳Ú<“Öáûè·§ö üXØÞäFEÑ–ÓÆ×_7Ó Ù ÝO®9·¿ÈHâ&©µšä·ó§Ž~¯Ì‚âgëÖ~·oÓòhà”ÅÅNU¨öA̲¼i¹ÚÇf©X)J XlÏ—«²¢ ¯ÁÄö‚ÐÈø5H‹Þ4µµÔpùÏ3;Dä¤OÌ ”Q ïÛÿZÛÁ_÷÷-Ÿ¤o›Ìþ-’¿z? g0spûÜ_+¥Àuæï×Ì$§/R]´l¦LØ&]¤ñ]ÚB8ƒPØÊƒ>7¾žý2ܼEvÕÁÏÓ¥B=¿>^­ÇWŠN1 k & í«‘øͰ‡e„§ ûòO>2K/Ѫ=,:X=Ú¿ «™ä«—3f±hñ|=*dè°Œ¾M&{ís Õ£Ëù–Bù²3‡€÷|ãJA¡u¿fÓù—ØK\ÈK¢ƒ§eÉkÆÅþgD0NG1KY&:`¸Óº­8l‡¿øâÑ£…›Çd’Â/‘5ð^;FPÅ®iÅÛ>Éq>Ï#ܱ駆p`Øõô„õƒGØÊpßüy–²kØvÉ+^Âb5& ä× q¿N‹Ìõïa% ÑmÿÌÖÕìˡ۰yJs†H*§ý¿i¥žòú …øôøš¿äs$…›q$´\~ªmÔEyíOžáG8‹Á¦!N©ˆÝ.ÀÝÙ„N8† gh ‰• âÛ½ÖþXvB×(uÐhËfLBB» C|z>‡ÝQ¤ïÌ[{ÙÒXèzBè½-wŒ*Ói™&D{kôV[ ß`ˆ8g"“K³Œ íÂüK<}Q}Z©ßc¦¥b×9…Y,ûKÿ6쇟‡ö ßjÐoô/$ü- ßðßHê‡9jaöW¸J]0¡Ø;uxRéÍÑa'ý=ö{¾ýäúå‘–ÍwÿµÞà“ƒÃ ÑD2 à =™ùÇå<ÿæü‡¢Šã .‹Æd±Tÿ£¡Uq~7ÀaPâKjŸ¸[û*ñ3ŒwS“-÷ÿ¤0¿ïÉÎ>ë9L÷FuM-Õ 7¦O=‡&èÅÞÅ›ïMß?ƒë pì˜ï¦éq¼Vó¨ùävPÚîà?ü#b­ýsVð¥oqÝ[ÿóèèrÅÛýF¶;©qý -†žéI¼f_ç nsáð8ŸõO=sºñ~_¬ÙNã¤Ñ3Ë$fÎë›kfYo^Mý³yÿÌb¿¨s]½Ë `­0Û3µË[ëöÀ‰>‚‰cެågï°½ƒ§â-K'ñðÆÀŸ¬˜¤Ž4åq€¿zOϪþð䌸GŸ{ÏÛµöŸÇ% €Ñ}ÖòîßvdùÁ»NùÄÉøa»¨Úñ–;¦Mä­ ?_Ço^¿ÿêÀ«×<(ô °ö×›ñû¦æ÷c/нY}ŽÞˆ÷Å?vÔ1î±g¯›úf³^P<—ËÝu£ _‡ç®a±À>¬6öN(žNÁ7kZ·áOëÇŽöN*Ò/ÛfÓó„Þöb»A=Ý{ ïxƒ0o°„xØŽZ6~9#/HE{ó…f‡ãÚgjtõ}€áK*ø¯¯Ë|}~yê;uF~ ÎÈ/@áb3¡üÂÑ^_±.?.ë>òzÞ¯uí8nÞ‰`¹‚»ËObA£îƒªkëÞº‚E°&üPÈïƒV·]ãvÈÞ Šµ ¾ûW¸cãp!rµÖ›gób+6e2£/~C·DÓ‹G{›€Ã9ÁaÑJnàýŒ—“`¿ãÕ¿€K;¯o­ëtRMEªÈÌ.f‚`fœH¤ïý/)"ôe.B_„e.W(#Ïf­øàþ§5š=É×襰¨mBŸ}ê©g e.ìÛb‚+ƒùñ‹¡éÅ&A±ÑÓ>­¯ úîãü×#ýás\QÝB£­o(߉æþ´þÅ“[6þ.£Ušn×tŸA“{…èJ òºÃe7kÞ@Ù­ ”j&@ƶ -Ò$[Vy£M­±‚/¬2êïÔ.åÙIxã,÷Þ¡?ÿwª;wNâ¢÷ÀMä[ŸÂ¥1mw»s6ÿÆû”¦|u§ÒÒÁ‰…Î#·ÓÕ¹ý­åÊv!ö>žç(=úÍ*Éí]çÃh&ݰæž?RÙøQ.‘{9S‘€Ž20d?0ó߉÷Ýu áîó1¸æby¥=ÕKY YÉ”ä/A¨·a5f|íߎߋ]cx3÷ØÚoŒ~áoåíBü¨ñ`ËÏ… îAüßζ ¯ä;ÿðg’…¯wDõß{>³ïg|¬®'³þÛÓ0õæÛ íOà«ëwµš‡ðëÐúÁ3·Ÿ¯Oh‚ÇqyŸðà†ÏÂdâ4Ç8U#˜æ\!‰õ…gíºe×Çà#7U˜}ϸY­Áƒ{y¨zÓzËý?¸e×s¼?¶c•ieªl ú?†ÃpÖßèƒYtß9qg–”¶©ïÿáJ6[ëopì"_ÞÑŽ|bg°wS,r–š¶i¥ߟµû–ÝD3tõª¿Äáw¨~Ñhýïÿ“®¿—¼IÓHõ¿Ëü+· КO➆³˜!’BÎ996¬vXÔ<Ê¥ïð'3ú­t‡’ëÔEVôE´ 1UtéTDçW[2™T¼W0. §ó‘•xhðÔç­X«HïhG ~)v&/ýðÚý4r£g²›~¿¼T×r[tó‚¶Oña{Ý“jOŒ"ô¤OÆ6/Œ&wüÑêL††”m‚jó‚ ×î=ºõ—¶ ŸçEˆë/¹>]~mŸÒ礪lg!úáÈBôµ}û ™Éñõqí²<ÿŠ·r‹5QZàÌâ’èS7#v>§)¤ŽÚ×]€æãšKð y¯[ù\ÐoSÞœÇwƒLø©Õ– §ad ëÉ8¨Àû+‘ËíhÿèyžásÿlWù"aAšùÎÄ=lðB‘ço+MÙŶ~BzžoaˆÅB$Ê·óïÀ!†¿,ðŽCc¶›ñ×â¬[œ7믴lÄûT¶~”ïëÆ]÷°¦Úú6±Æ[û¶pFõí¸€Í@; Ý~ÿíGîÜðQ²Úú·~TÛE¼‡ã*ê’ã[Twâ›Ò$0Sà“6{·Á‘M(ë¶#W¶áwä/ý¦ÔCÛ†0aÂ"ŒÝ“1 B÷DmWk­ïñ„ý,W»®¥­ÉtH4zöô.®r»ÊA^î<ü=ã¬$Æðbî*Ðo…Ÿ¦¬ìôžÇpˆˆ~ïçð@ÏñŠ·cź ?ÆÎ Z6ßF +=Û×·®‹woêâÁÝÕ],¸+Ĥ (¾ÏÞ r{´®çŒõG'ôœÖ‡ÅÎ z‹­àNý¤÷\}SNËæ”ä­‚\Ô­‚\¸NzéèÑgÛDä• {g]á©oãiÏðûÀÖA0$g€@œC2€ ã_n'lS9m÷܈ÎW¡ Ð6ÝH>èû:ú¾¾÷îF>(ﺑ[Ð"ŠúÒš£Gû·ò×ô5Ŧ–‘¦^C)°4¦iêÆÏöMðï–(^j¿?§ìquâ.h ú|c±ýxØ~/¶Ï&;$TÅ[ndFñÎ[™Í»†ÖÎìצâí"9åþýGAP|!’FÌÞxLøt,øëU¸ÿ» y½Ë”'±Eða}#ó$.‚™üÑv¥1›½“^ÍK 3°ÓÑç/±ÙIÔÈB¹¾£‹-‚_ >jßÖù²»àw_›7—ÝŒáS^®Ë¼¸¬q_•ÞXZ×ø"2zŸÖµÒ÷1díêù’à.Òq‚» ‘A#n„^‹7mÿ² O+µýhÿŸÓmÕ—då–+ÞQðÓ6ü×ö—꿃BÄÓ$åùc±á ×?JP&³6ܰ’$/#  ²ÀOu ÿYIžIç- V‰Ávñ‡xð}"J6,2zšÂ¼ ¼ecP§[:[#ïld–ÎúÇ3˜nŸœ*E¿ã£ïÂ[¾s2ï×”]©çßÈv oßýú'ß ç2ú·ÜÈ·T|šËPËã(›“™lÆì§õÐâè￯úw¼ê%ªºTšž Uû§ Ó]"+…P]ËzêÌÿí Æƒ ±âר4?e²¼éƒ—uá®rRŦõàµâµOZ+í{¡QKž`ÓFìºBý÷\™•'Ù”HbBºâÄv|‚ oÌ.6cý¥‰_'ÿȸçdϤA„>¾Ydy@g7=Œå°‡×¿X×{*ž”ý-‰×=?…¶è÷± ½-F®Y{1±eãœGÚ™41ùn¹§ÌùÄ_G‚ Rü3û™Èth"#ã+ßþ7˜‘þX˜ú;¸’£LàÑX'|{¼é!Ô¬Ëhµò/A'<ú§¼€@ÄrhÏð8h¢Tá÷BýÆC/p6Ó¦å®È6’¯¼„[v@éÒ”ÃsNgu€Ek?¦\S!l};™2ûÈ2˜çâÎ6†VÌs?ð Œ·Š±q{ãFʦóþ9¥µ(}Û·®ß¼êÞÛÅ£u¤wÄÄ}îuÌÛûÚNvöq Pî¿—ôX üd-ÀööõÝÀ· íèŠmºeV¤^$ˆÜZûc˜ËˆAuÀW,RjÀIo5‹Ÿ¨Ñ?Å.š"ã¹<δöšU¥†@ ë±É”—¾Ø¾Œ„tBï9àáf,3ìR#¬Ð¶eL.{ß‘IVz™ÊD1û{o7·ÏX†P¦ÊÌ0tðÀÓO=WjŸM¿£&SïŽ,+އÏÄt žv©r¼Bó6,º~pµÀê¶Ï…ÏÂn äïŒNÀ̃”×,TlßO¸å¥Íç­%Åèo`À˜bÀÜÞÊÅ(é3|âæ†ÎÁ}rP¿ÍZŠîoóÞG`ŸÊ'ݾÕ7°cï¾U¿†Z´À^¢ß /î–&ÐÊÏc¬]ƒ5S~:ˆCŽ qw.Ts·ðVCb}ËÆÔ¡¤ú à 3áÙ»æÝ\Ev”nqî)ÝÐçS»ðαØ7ì®vËÞn.åAìUZ;b4,䨸½t0£¤ëàÓ·ÝŸ÷²ñÓÖŸÛG£¦ugëÃYv,èð Yv?"¡±„ûcžð¡´½†Ðâ‡Ù§ÙŒðЇ÷×EÉIÀ^Þö6”.òÿ0ñ6h¨– wЗ‰='¯«oÙð§'§F‚ÆË{xB+‰éOW"©S¶h3\×iÄ6ö2õD@Ö~JÊOéL×y”œL…B†Æö©@$ß 1 ¾r›èøú­“izA 6>Þ;¡ð=†‘¯Öÿªnýщ½­ìíú'ö6| a€ë”Ö±º‡Æ«è2" `h°p3&|ê…Rû ¨$r6Ìg¹@gïCÚçâ¿ ý‹¿ í݆Ãl\ØU÷X©íQD¥H˜no±^úÜĺçðLvµ+|®eíPùàopÕщ= ëNêÍrÆLìzáÅ„µïƒZ6¿7ñRŸÁ(£O”¿ßwd2ÔcÅv$œ ßb32´ÐŒ¿lC>n§çvüzðl‘1l@ΤM¹ÖÉ̶xþ{̶hL5G¯ýÈþdiŽ6–5Gæq]Ùö P@÷¦Ü[gâ5f7”“©7}86Žùä6ÜÆ×O“in£ŒñÄô¦Gœ®ÍW"£ã€ù$³=À¡½ë ”Wß`¹–;žÊ³³ÓO'ÍÀ.L¦_„¿ð1ÔðtnGžÂ\è"ssÍÍ ³ ›6¢½x^ÓøÑûÞpwÏ»‹Mwø½½ç‰yyêðC»Qf6¼ë; “©t±‰ZeÉð[ÌmA×Ç&k™Jðmè÷·¾…i¿ò ÅO®ñåû¼v,só)`;¬™T ‡X¾ñrí^a"®Ü¯ÙFO¶Üñ› fï1û<¢ t˜.#r˜ 2ö÷þqÒBz]ÄBà`‚|âÚûbóª-›?‚Œ(ïÞÞ¾†^TLöVÁSË3èÌ+v=Ãó<¢ecÓD6)> IÝ‚öÐö>ªø,žëïKVÄóþÂGžÜ‡hy›À)±oåÚFZ4óbVåÞUI¶(ª¾Õ7ò ¦3ØkÚI•´kr>ó*3œ‹ð&ûÕôI­‰oíƒIo õ·þuˆ#o@üY?îëg-µ‰–ZE‘È¥<ïxwùß8Iž,/þæ  Í5v#›™ùJçžG˜JX ¦Îv 2°àBýNÁaÊ+ßOަñwRßâZµÜwPjó7c;q¨ãÌ#}•S!§$„ß,¦ˆ— ðŒƒä~œfÄ~¢|0•þq÷`±íG>ÿ6*ïo™Ørûèÿ #œŒ°§ÆüdÜ »gÉR˜Ïá…ÒJÇZQ¬ç?Dcì¡–Íí” €¿£±¢vÊöé0õÝ”‡•Ú®õ'š÷ИŒÎ+h4S²!ÒñL§ôßH¾þƒÜB}¼ ÿY²ŸE…©Ì wÎùS¤±»$ƒõÁµ?dú†Ü}Rƒ´X1¸ö“0U°±ß ޽ìIâ?à$Á¯¡HLü~>I”·þ>ºäk·?BsÈŽèr~Tßc™›[׿X·æ”=l¿79‘ð;AÖ>´í^¦‰€›zZÖ¿ØÖ“]ÿâ›Á`zÑX3¿ͤæ3¸—)ÆŽþ…ÌWh#¨u€DÍ¡UúȯŸ¥Éÿç‹|‘ÇxÜ£L¾Ñ†mÏã¹*/6´Ü–™À-ùä“ÅÂnЂIWðñ“™+¸m'¸_Yu™Æcçõh‹¶i>ðAè*Ì¿Wä‹`!‡ÓQê” 2±Ûüü•¾Ëˆb¤ÒŸ{û¸LÕÞŽ[v\%žù!–kâlLtÝ{Ö®B×½k?1úÃëÉEˆ(b¦íŽ]¿óÒ›gDôæ±iÌgþ#¢ÓÛ«•®#? ni¦¿äÈŒc/\y-›ªÆˆ9ôp‰A­‚E7àól´ÂÄ ¿¡rEÎGÏ~©! {ÖNØŽ ð¬Ç ÍLÝÃìÔ=_hH·<þ¢A·<°·<îæ–ÇÅ é–G;üÞßzC9Ëc™‰ìXɨVæÇNbŸÇß üNšùq9Ãc˳÷qse!½d®|üÛXÑ9•6<_IÞÏÚGYFî*4â=˜e(‰ø ø½¿I >G|çJ†L%Ä?¹R·›š8µ´_=Oêp^‘£»vCùFÞìÀ×C‚qãñK´ø–•:«uVLaÕ¥»Q¨‘‹;£á?>ðt?IÀiÚÅ_-·1sI*‚Îá,¡½oÅ÷“?¿@V‚3ñ&ÉO . SFø…ØŠG¾;†oÁgÈøz`Ãä‡ ß2ƒ~ßJ¿Ï¦ßéß[fÓïèÐ Ó°ž¡À‚É÷Sýw}Løú™!þÃ?3Bßï¢ï£©¨[s³0 Ûú3œiõŒÛM}£Œÿ’ÉoÜ…GCтŔg c½âvΓ^‘klÕÙ¥†Æë˜¥ƒŸ¥†VþÔJOü ?ùÚÓç´éNЕ2Kþé‡Q#ðpêä‘%—À„¥L]>šÖåW F°—“üäØÌù9š9?ײù£8iËH´°þûgpSý)q‹ [—źŠu (5‚£MBycS2º¦<$xsã &ÒÇŠë_˜Ø²ò qû”ä|þ]ÄλZ6ßöR®½›ÞÝݲù/&ìÚ{èÝ=-›?ü"¦L¬ö¹Y¶Úw'f›jZ]~;â¢Ë3™ÑK1BL”tBÃaòÑ¡¥È׳0ùp³Z”U»•z`ëÚ½§þ'ª–ÃZÔuŒ¾“^iÈà¸fJ‰çOU7žÿòC/k<ßö`uãùSDƧjÏ?ÏÿRõxÞü`™ñüÛåÆó9ÿÆÑ6à hbr_†5ÑÑ_ÏçÒ+Ù vÃoá7‚!8H?œŒϸ¡´¾•‚„•7&Ix¤[c—Û*ÀEŠnûfŒS[îQ · ­J·huS15rµð#Cå85áAÍ›ê¿K#xÚ"\0›¬ÃR;cJí4éµoåø¦ÔŬÏ7Ó 3 coï < ´&CxO•65Y¯‘µ–âTÆ 5k«lI‚êiwc’ÚɃ{”ÖùѵŸj }é3¼ôÔfázpåf‚úKoö[HÛ;$÷»>@æïŠùŸÁú‚]D¶šÔG·†m©a¨—ÝJ3uz&#¬úÃ.ÛßKy×Ý-Ìó8¨EŸÇîŠÎüâtº+º‘*…µÇºjŸG™Ñ!²0M¥PB׬ûZ9ÙûD¿XŒÂ©ó[“IJsiý€o£Ç.¤ÞKqdû³Ì‘ºtý°˜¼`&Éh3 [|±ûÇ9 Ö¿¼HßÏtqÊf†>C¬ ý†Zqc&uSÊ%óýóà‡~Ñ%RèÈî–Ò/Ñ^ DÌoÜF£+*m}9fá+7UIÛqî­nnÌM vÚ ÆöÙ¾‹ ['ùGëuÖåv-o^—¡gìb;Û·{ôèöɃÊ=>»t+–ƒùïÖ }>µ«të ñ j¬À¹_œÎ¶ÈÜI«Ô¿aâ„´I…öŽ$e·1d[67‹baÜ,:»ŽÖp[6¼‹¾€YõvøÂóm✜ŠÐðÚNVlFè´­¬‘AFÕÃ!;uñÆb;–¤°!~)vm¢€â¦µÿÆ·á¯-~ +C¥¤IL¡¿§þŒ]Âbß;7Dp4µÿ„,°=\Bíûëvñ%S&ßT½åþ]u‡Á(¢ ÖýûêöñÕÑ÷²`‹2„¥E³äkÑefF¸†jµy2=hgúo}˜JëÊÀÔÓ'ddZ‚ Qi| Emœú }nuΆµO É7¨:^ô0íäLëk|/%ÞŸ*Â2¹¾Ml§êäþÑ‹)UGßž‹_ÇÁ.æJk«©¿ñPlËÌ~àãèQî€ßO›YO+Ì_§-wü6#BÒoRçŽDÜ÷~!ôÈöÕø™Ê;D¸qäßÞ<ÿd?p ›`[‚©äĺb;™Ø¶Ó}—wؽ•´™ ýÚ‘‡Ù- Dîk!rꂯ‚Ä× xrgBñvD¥¾´l~ßQ¾ŠUGèÆ÷µu­#‰]ײ9‹E¹÷²}&o„“€yo\„I¸x}§æ™Ñ«ý«ìfã=x fJã,o”y6⥓Ü``*¤µN\9›ž¦kÚ±‡¿¢è̸ÚHž–>¾š…õ‹Mw¢Žc#wý u=,Þùì·•|aítùNg®ö{_Ç‚H£L¬:H¾Ð$ù¨2â4õQ?èÔËùÉ8¢2„.÷ð˜O‚/eà ©…†ÛW‹îZMÝuø÷|’)lì‰ËÞš3SÔXÇ}Yûd5ÃJ‘MÃ*•ìä°â§íWd|55þ=ëÿþg¶ýêÈïÓ¼À×Ý âŸº™ª“C¸êŸÑ‹L¯ÿÃOAÕ7Éí[T(}ûÖW{Ù–„[> -NNoñݼÅÿóÿ©˜õ}_âï_]Ù¾ÅÛŠNðÛgŠ#o·¯<*¬/ŠÁ׋…ñBîît=ó]?›xËîÙ<ßÞßàÅÑ$Õ&¥‘{çJÑíøeíÝ£|0Õ Ï)ÌÈzóÿÇ6RŽý>m#å–¿†œòÙtGžCþ'삱Ô.˜ õþTvÁXÙ.è_ØË?~6ú™ÏHןVþŠÍ´ýöe’mlcZËx×‡Ü œýŸ!Ûܲñ Úƒ•iTQ¬œm.6±ºl5­°ÿ†ànPí§B(ôÜáíÛ6Ó"·|ˆ7î¤[aðÀ­×Qóƒà4ì$X<³’ôe%Ò â6š/}éèÑ⩘±’ÅQ?søY˜lYìô3cô⥟ÉŠ›4w.½½ŒôÄs¿çj_É8vØ€¸´lhÀÄ,úÿÊËíÝhPs…{Ê-ÎÆEJ“©rÇ>d3~Wäj+NP¥†½t'Ξ"ò!·¼ö‘í‚ÓoŽéÒõxÏ1ü†¸½£q&üRC|dZ¿åŽ—‹«)ë¢-ñ\Ñwt'…˜*ÛúWò °Œô/äÈì$¬°ÿ+Œ.Ðcð"`@ýw—ˆ.d“œ¬‡¿ˆýÝÅN/!Øé¥~B±nûjTñ“w¢ë­w.½·zï­t•ÖÂO_×84¨ ­Ê%8_l_Mó0qÿÙSÕÚ7í³ÓÙžw.m,¢6¼ßóÓJ†ºE‰n*ñ\›§®h˜Ë¦ÙÂÆ+´®`ÓX§Ö¹±U°6à¶Ož*§.¼x†9d¬÷¾ªubÅ­xG¨%y%LážÿŸ·§ŽªJ²?“&tèI$H2à€%@PBÀ JC FA“ÕUÃ8g\Äeº0-y<ÂD%Ê¢"ÙpÜø1~Ì‚'DŒ(dvør –¬Æ±{:ɇ&‰é­ª{ßGw¿€söœÉλïݺ·nݺUu¿ª€ÂD²aOA2´9A²T!¨¥Äf耇÷XZÌáÅþcfLsqôØÙR63NªyP¦ÅƒD‹Âp µ‘s{2›­ø®}Ögþ ÈÆѦ@ôƇò¦(t‹dt‹Ýgº ÁÂP¶ìܥ² ã!€h&ã˜Dø.¾©Òh¿‡[zd<àþõ<$¶Ī»cD¶m;~Ó‡EŽÑn)´qýÂäH«‚Ù€Mon³¢uo⺃Z¤pÅÒp×Ð_ioƒÆëÑhî0šh{}zÄözäqmNˆØ_ÿìFnšfKž®> LÖò¿¥UZ†¤ÁýI€ñ?r?RR5~+&H>¤ûÄn‘þ;~·e@·Û7ón¹“­ÿwè®ÿKxìÝ»J/á F*&ñœÎí©•÷kh.ùºôVp¶Ìü®Ø݃ÚMÉX,4{Çl q"¾uk!b¯w4ÅqˆeáŸv*˜».¯fsáGšN|¼7?¬¬aŸþͱõ’YÚ ñM®÷÷eó~Ü—_Ï#Ô¡þ: Å,Žÿ^Z/[ù0 ¡Ñ~¤Ôâ. Þ®–fõD•ÖH¥±Ò:*“-•IÑ7o‚Te"V¢-ÑrÕmGeW=‰s5%rÁ½õY£î­¢ÜÂëE·K×É{ÉÍ:wÛâÈ+÷¾.Ýîýý mpžª®èîU|=HÓ «lOŽ÷¾«8Dc zï­\¼FÚ¸ Ê¥¹9dÝYjÐÄFÿçLÙSêàC‘ÕJ£ Í.¬.77bëGù†£]mbmÖ\m ¡š.&]ØíYh4`¯Ñz) æ¯»×`,Õ¿øWå`{7^/ɧÝÌH¹(ò„P_×zŸz»&ê†$gº6é¿UI?y&’Þÿ÷’~FÎO!=_üK«8H¤Gÿ9's0 Ý;S ¾Fÿb9Wo"“úIÈæŸq׿ªbÌ—c>IÈáVdžъcNgXÇÕK×v6iíÔñ,yª;»Ew ¹›—ðÖvDúð?øÆ9Êpé\¾èf²íØ&¨ñq¨QšŽ˜ƒèÚø+\É096ÂÔÌ £)ë9"7 "{;Yï’É¥(—|èi‹.ø›üË—‰}¢¥<Ëx "úP™\†8÷·%õ 4À±cÉ×ôV ^Õòx9…Ý–HXE”íû=O“µ(+2êM€lXÉEi$£+üÔ¸šÙ%ØÁ¡Íº£ö=^Ë‘—ôͨ9ˆáþÍò¼ª¹ÆÑyºƒAl &_ó .Œÿ`|YȘ\ý{Ò}'èpbâFdUY¸ª!ÍøõiÇ{­êÙDEqË÷c‹ÁÌ‘€9÷®æŠƒ €"Xq`WpŠ'Ƀ-1£h®<ŠæÒ(Bçz;:\‘|PÃ:tÅÕXt·SÔ]løˆ—°R%É¢`÷j&‡hÝÜTuèš1ã¦h†2²:UD›V3îœ:]eÕq‘„VÃÐ?dñŸ[ ;LöóaòÑ6VnÃÎB-ÔšEÔPÆßÓó6C1D;¢m*ða^ ˜=(¢~ŽèRÈ⟢èÇÑá2¢wór?XpmDÿ˜ˆ:¯è,^`Ç4(Ъ˜Y ë’Zân÷Øfn%—òï„m>N,iÏðʇï“îo棯àE¼©ee²y=”–»I—Åp³¿¨ÇboäkY,‚lä@žƒ“¡uоíˆÖ·Ô°M¼À/¦^“¹þ0ý?Ì×Åö ÇvÉ œi×p¦ýq~„ÍÝ¡Ñ2 FþDæˆNQ™¹† ¢§çé"ÚÂÝû|sÍ”¹ŸOÝŠP¯è,ލC¦‘˜KÝ(S¦þÙð@ZsN‹§àzï87bêã²:ø9YQX탚‚ÿÁ‹­¸UÓ ª:Äì‚•˜"}œ?2ùoº‹!¬JÏ/¸ôLÜÓ•ŠŠg¡1¿ˆéJŇj--[Åùddž£`r,‹Z—œ![3Èrû#®ãР½ ºC#ޤgQžúcVãòäRò(Ç}ýºëyÛ¦T±uŽ6]¡n–QkÚõ¨2qcÔÅÈh] Säå~Û>û=Q‹U¯Ý¦oµËŸmï”ð%pʇñ[7áâï.ôª` ­”G®`ÒÕØ_qýè­×¿±œ zçD˜Cú­MÜ5Vá®¶Á·f œÓÇN‚Ö^Êö¸N¬ÉŽZ09éØzF³$Læ)€|}W#åSrlÇÄ­€ ÛùžÈË/`GÞà Õ]Z)ä•ÙuC…=r1OoñÉϧY’j¬Xö}µ’5ìhž:u§éôi=C§ó&ílÚwšÙ¨è¿´$kr¼w@Yü+žÖ‰È­vËÍ]Ø &†›¹£eº¦¿òÀ †Ó¼9;s‹Ty³2ߎT¢MhªÃE ôÊ„È-8ÿ¨_ðsR’ñ;1IòeóµÃlSqí0Ÿ cl$ò ó¡×YjzG•%øo{+ÜmÒuóá÷´íÛŸôˆsÅx@gËŠÆÍR5.ÂÐ_/ùŽWq/T±oÿ:¶„Œ]y\¯+GŽG ñx Ë+^2ø‘˜oL@ixx·”ÿ׳uW~à²an%|¶—FžrUiz£\±oR¤Ù£2à5·£—ŸÂŽ[TÙ¿53î¿)f–8I–ÒøPþºÿÍY±×ÔÙ$쳈íFàÆ ú? #Y¿4ãv.ã»2`¹1eÖ@]j‰¸>•A®Üè–Õ…Œ]èÐÍ!µRqïq’¹ñ8î)#ó§8äÏ•ºÚ#ÌyëûçØÂÏ1]mý/nà¼[ËáØ –Cã‡+™˜N~:ñÝuŠúª QæçÇV¨RgÏŒTI?SÄvÉÐ>ÎÛ±YâN„Díuo™ ˜c¼¹šãÀAþ&ê)yl‚Üa¨/ÖÁ¯¿è ]êXíŒ:_ø˜n=¬«mæ£O¹ƒkuÇn/áE(¡aRÍa]krÉÏ¡ 'f¢gfT¹¾q±&û4ÍSJ„‘]{¨'¦šß¢{R%ÁÎÓåZ§=õ+™uóüLÍ©lü§zç>Þ¾!bOéÓ¿{Oé­qÊ‚4ŽÊ«í)M¥•ì|~•j%úgåÈâÝÈö‡ºE£Tƒt›øHÿ¿û#:¾|­÷îÇßK }TmŽõwK$d¨\¸b("\ãvª£¥Z¸ÒQf½|ö”¿eJsd3|¦Õg¡ûÛ€ø¯\ìØ¹ÊÔR}¡ ÞX"ß?£yÚÚ‘ÿBÌûg4ï±V!d(7]nJÇÙ ^x Ò-g;YÞ³XK]h[ i*MóËŽü>¥[’ýT‡5L<‰ñjkÛo v@úR‹³ÕÖvå}5üÅéÆ3•\vŒn9—]$ìpÈÔ$ÿ˜V¨ywŒ6W‰ŒÙ )|±c>’–јd3o}É€îz}Íž avÞëq6ƒ;6é?¸ÕRöþº]P¾àM1º‡b°ÆÔí Ž®Í :|fœñ8¥E„ð7Pq7ø[­¯Â'+a©°f\ªÇ&-rŠÅ¡`|«+ÔB9ÖË; QoµŒ[ ÿcˆY¯Ùm þ&˜P[ /ë¶PyAC¤â˜ZÍ^9>Y4^L­‡D«u=¯²Õº[yz_yÚOa”`÷º¡†$Å4À9h‰®oXñoŒt~T¥3 ûµ fB?‘4Ç kàDiÒêª óm –Ø’‡é [ƒý€Þ[O,ß¡œWkØâ©O¶}ø[f/æÌæ$.UIlLç$¾3’Äèä~JX<·P<+žòqß½$¼úÍÑd“R1S¥}¦Ø–ß[æûŽx.Âxˆˆ‹áy‚L?aö,ÎdÄZÚ,Šïðt««A¯=ÁãluÙãÙ;”yÁx;Ô3 ÞÚØ[ö/ÄœÇV0ê SÎKÞ4tíꑊû1âüvÙ5ƒC0 w}÷¹þxª?xa,¼ýwv$˜ÊÈúi 2é.ÊÙ#ÛrKœ¥Ï!aº$¯ÿjñ•Ñ?5Å:à-÷ˆáÐ[ÅÐM†© é"”8XA{° z Öo&9@HäZQ0”=!Ì&¡æI”RQ /Ö´×VËù‚ókq|çdY<{7¾çÒ;ïxJÉHd&â>d1Ž‘(Kè—ž  3ó:'RePàG“œ|“— éO¹.–çºÁ„ tbŸ›p4"ƒ‚§À~žt/®MßenLƒ_²ÇŠH¦2 •ˆˆdÍPUE×l4»]!w‰(­}XÕZ¬jþ<¬Ô×B⠛ˇ{ãø$Å5†ªXìDÁíê¼=õL—ûd-RÝÕ•ër–%eºœF"Ä-î ~ðbzâA$µ„žË¡­Â-kà/&¶éàB€„7ãÅS0îÉé>HNNrGSJN¥ÇÅ9ñóù¾“ž‹‚·ÛàvPvÛ¡ø1ó}ç=—¯(-ê¦uò9ÝI€7êd…Zî¡Jy£ÎzþYnÔn³Ò¨é™¤­¸ÜO˜‰Ðhbš©×±_×€)ÈN…Å4¼“¤bì’ÉU/óµX4c\ìžÛ¶Y€H¾4š¡‹AætÊœRI§xfik|m­Ðj*(ÿõ ÆoIVÉXÒ'ðªQnþ x»‡XOõ’ù_؃6úp³ ³a–)0KŒŒ(‹F9[rõÐzÒ4Ao‘on4Ò`ý x Lâ)ø}9Æl&>˜ ̓gøÿÏø§»”\sÔÇ'ÂÊãõq´ú˜¢>QÔ¾Wýê#†Èàq*XŸša¿úøúøÆ€^ÅÕê[Ÿú¸N}ÜÙ¯Ó§?à…+c`Ù–'¶TÚMÁ„Ùd.y’èËyÈbÊ ÊèI®cXTù>4xóAÇU·±%.R¨…~ŠoøΓv;}‹gg ˜þ‚¡Ô;nä£Ó™žaÑ©Á(p Ö^±ÕwÒíÂ`G‡)o@z‚ЗS¶w–÷f¡oŒ[aœÑOBŨåæÄ”…uY‚ï`fû³–w$#+î¼Ç n0:.·A:iTùjD__Ù(ÙºÚßoÃúpXþ”¿Tœ#ÌÞöù œ·Ã4»=l(Ò”S!å[Ä{-ÁÑkÔWÚÙÑÁÉ•&§‹ñâ–`|6›¡,«BGK^oÉ|€¯]Ö_+Ó'Ó¬2Ò_\ÿß?®¦iþ¤í,M ó!=‚¥Q?oJß ØNlxÞc ÚhÑ TŒìô…!0æC  ÎÄàkO{kco;ùÛQ2ÛŽ!£÷ËI'$A1©˜]ÜR…ìñ‰'r ûËÍRa¿XÈ„þÕù×/z»¯Ÿø·;ÓÕ•‡¹zÿöÓy-Œ‘æê$þ]mR$^—,Iûõ%i? Œbõþ|28Bl"Öì›K“~°²ßªÝÃfWW>ªõ?©B&ƒÇÆ·Z!s;2ƒñ\#S†Þ˜Mõ(2è•eÐ{PõýªØt]¹YŽbp± §l”Ð7Ÿæ•)O Ä4ÓaN: çŸxÙ©v”›k}~W§Qbý ƒgX{ÊûUþZü—i¥W®ZäuXädÚÑÆ ®AÁ¸\(ôwT%™ 3ÔH&ÌàRªaÊÉÍNµ•IoÑüѾZl”“‹ŒðýDÌw³æûb“’0i!Íùr d¼2N iÕ@.¶( ‹¶6«¶¶8mmñ•IÁI´ˆªØ*'¸vù{JZåœ×¶á¼¶Ùã´“„íø&yÄzÚé FoÞQl Ú—»lf¡9þ@È,¶ä”àä­ÜåS9 ¸ˆq ÀÐ|"±ö~ {Oh Œ >¶º>÷4]×ágÊcl«Ã.£þjµÖÃ/¿‚R;}=dI3x{p,¨ñ©äù n’–ß—ØdTç1=Ì Þ^‹¥ Í–:úßïN†‰ > ‹ôPy}p¸Ò5âÙÿkr¢Ò\H©ôe<ŒÁ°'YJ$Àa‘*G“UÀÿ¯œúóÿcíj࣪®ü|&C˜É$2Á¨¡d%º°¿–²q$D¢±µ µÝ®¸Š?×ÕêVfÒæ9 ~býX¶ÓVýi[ÖMņD(‰h”„ až/JJ£ d`öüϽïÍ›a‚m-ü~“÷î;÷œsÏý:÷üï}ïHsh×*Ý‘¸=TÚ” —dHf,hÊ1¥wG¼Ù†a6†xÁPxêzaåà¿b)­‡¸E’†GÄ’åp%ønÿ ø“Ã=¾rÆa K¸(Jõr5~³4è˜UÃQe‰[ ¹ð(˜Û÷¹šK"V†ÜQê!Þ‡sЂ:à´€³qVypš¸AX—°­M7’çTÕð±?jpnfÓ‰œk” ¹SÃÍ|¬ïáÓÐ@s–áÌüÆ_Æ8cÓz´ó"#Óƒ.h¨ÿ­Âü”[›ºôigà9"7ÃÍÿé„>ÚCƒ…FúÖUœ>ƒ ™ô®ºcÔïߘ).®L·&Š‹ Œå¸˜æmê7r–ÆÈÔ`•>Ò™å'in²ºõ«í]uÀ’nÜI˜î¿Û»Š¿%Tïj¼lZVTƒbª&6sZVcžcž™aL·Öcƒý'› ±m†Èf[d³çÙ8üÙã–&¤p†eÔ‘°)Ê[ÑPÂ’ÉÀ˜·ÃQg,ëγv)ï"H¦„‘Ð û— ø— L}Aò包pJ< « —#ð”@Ð*¡"Z ŽyÓð¥×š?*>& Dl1qhiù6¥Z{x_Ëðɤ66EKªã=ÔJÓ†ƒýŽ–5HVÖ¼‚{컥 ûÖ¶Ó]´iÑ5 ¬È ¸ö5!̨³`.éû<ºöEüîù„„õò²ÆOÈ&§D‚½«[èÑàsÌÑ`ø“{0WÝñ=ª˜ïµŠLˆ ‡':™Ñµ¥6½u(½Ú%Eœ˜7ã; ™ñøoÅ4˜ø¤¦K"UÀ­, yí}X€¡¯´"¥ºíEvüÙif _«³Añߢf‘ƒ_]ŒÞ¦Gˆ^çØý8qVá깑 ]ñÏ—Yï”üò7·\$¾s¿œR7âì"Ìe®¹dÖüJFëV”G=ø»²‹«oaªúž³èÐ¥‹•ÒJT¹à›á 0U‹†„ŸíÉŠ7c>ÆjÏó羃ðE”‡>¥Î­v)ÕnÍfÅ¿ \1W`pS3 ¹à¶<‘ü×Q†Ì±ð€è‚Ê—ù/+ÿbäÿ0œ‰¯?¼Dàëܲâëï,×ñu‰xη 0½¸! L/hH!Ƹ6#ÆO“o¶èvúN¦cto&%És -¡¶‘-ЇExõá“zÃþø3rNJê¿2Ö[Œ(ŠQÊËÚ/–¸HhEj[©Oˆág,?´ y¬E®»®žvWCaýªÄH+5®ÊŒ+·q5Õ¸šÑ @nÑ”/³·Ô×;áSpúnNÃéÙê%éV÷H«—-¦vs—ÙäÅG{¹L¨ü"”Ý\8IožÉ\òÓ—m´Úþ ˜Zbe(Ÿ˜¾¹_µÈöˆaAòHë£æG=cñÜ"šë5’AËrÑtý´ù]©üÞTþ´õühøÿzË×ûÃËþ  ˜%õ94T²P–ØŸ‘F™äÿÒ ägÄ+J3œçØùÎtüþQ‡ÀïäwÓ"ªòØB9{0lø6ÙㄘÑâ¢Ü6¯÷5èXÿU±òæøcö ÈÔêHaö“èZý†Î…gqfçavÀì¹µ³Ç…»âéžu³g²§;×I̳]u~Õß‹P1Úzl•3 ³/ÔÑúÁIƒ| ªÐÔGì£*ƒI§ë€Íº ¶¿Â˶— ãXè0>÷AµÚ$<ש£è…:~€Ü'ì¿G¿TÏ4e€a32ÌC†[9¢ òLäžYì´¥X=A?wá  ¶z!~¦áƒµgT¼²HÅzÕ3ñ³äלh±¾9LÎ £áÅÌ#-›qõ uY—;úäÜ6bôjãò¸µ¡pÂÏS“kblW Ę›z<c3ÁƒL>GðÎDŒ]‹Rˆñ &ÃobüÉu&Ę‹Âˆ1 ±Ì#îŸâ"ð¨“<ܳÎ@Œ§6œŠ¶,?.‹V—ž‚—ý%øñÄo*ÕÇd÷¶¼e¶×Ї‘hHè ï3Á¯ Þˆy[]'ZµwSFú#"=šJfl9$Ó†ÔÆ7gÞÈ(ó÷åÊ#t!”Ø&pÙ(ðæá!ôÛ,Ƽ§]ÌŒÀ¥>¦ÔnBío8ô@A9ʨ9ÕOìì£G:'EâÞ–ì¢xïØ¹xsQë9ÁóZ1z£Çéi"nû;øö{µ "ÉÂQ([È{ Êžs¥S½Ë.Yø÷²¿åÂ;?LóÔtD6Côt=éĺŠJäÉ œ4`â— γ ƒ‘%v"[–±÷¥ÒPf¿-M™7È®jp·iGKtžŸ`ÍF¬á14ÊQBE-¡!¥½M«9°—˜äÜûtŽ+x–¾ü&&[ÁäˆXn~£|°®Äƒ%¦Ùö<§ßɸô@$™ 9.oÓùPSZÜ-*E-ˆÖð ÇÅpî£Ôäê/ÿAå܃-{Ö”¬ß&̲ÖsŒj@‚¾¦QƒqÉ1$èÄa&î'bn†¹2WJÑϽ¤G©Q#%Xõ.,+n-Ñ PßZíÛÏKi_í/2i?2bÖþ³‘¿@ûΑ¯Ð~“åo ýM“RÚljíºü9iª_8bT²“¤ýz‹H/êa‘8Pãàs;U?<[¾½mµÉRGPêÞâ«©(KvFCÛ³øï“u¼±Ûùúºl R]bþã!>€‹ãGŒø456²UaÆØnt+¿Od€Ûí<òð@x›¨9 F±_eâ[‘´€ôv̵²gÊwȇUQì?2ó¹Òóá;=ä!x;jl°‰Ø–H·uvï±1WŒ¿jŸè‚(YlR&×_ÛÒ¸¶¥s}e‡ò®·ÃešW1rÏFB¿/Ø.[H»ÂÊ=/7pÙKõ¦Ömà²|ÛN·ø=-ºœ¯±çPŸ¨ØÖÀû †%øA]¥ßš/AhQ;5ŠÆËfÏŸ¹‡Ü¿oJoE<<^¤ouœ]:¯•)fÏìWhéè÷•cï“[Gë‡H`e½oÅ­ÑÚáÊZ€_Í\Û®)Û¬¼$ÃS”ÍÑÏ4b¾QþÔZõ†«*FöÂv| råšQ~m–Ô«Çð¬™&~à·Åjæ—K¦]±×9ôœ‚ß1.ÆÝ%èìúت*½]ýöH§í©£U½íN—²¹bB]ƒ@íêjÅø½x{uÔ®NúÊ ÷ßÇLc¥gɶ ë€Ù½²nœŒ”¼(¯Ø%’þÐYÏØñ;]Éo2È9àõv<8›ÇEðoÎëŠ9"ý”ØlJ¬I¶âo¤ó$+¡®A…]+&qáJ;޽ )AW¤Ë¥Ô&"Çì+(=zéýqÅ?¼l»} 5¡!e³r”9âM¬Àèpy,²?7Ò5£ÙuU×a{Óž†žPkÆ^&àmÃѦÙ÷E¦JÌsÃÈ3š ’êudì',Öýiêtvžªé/X̵|k+Ö…:@…^jÍYY„¨-‹s¢¾â_øfÀ€ÝÄj"0`—éxˆ·Ù%Ïà\ÈA³ëïIÃW©ýTN@@Í»ºm³ ×–Py+þÊX[z,2!c‘ý»O&Õ9‡ƒîV¬tEHÔÀAþ¹šŠxûÊÍ=ºÛfÄ2ûûR!P#æ|È/KE6•ÝåE1å*ØÙ\— ÊÄ9.ƒüÎ~>K*¸7ÉÁÁP^;v–É­U\îp©¬ ܉Ð*‹?º[á¿ÚEÒ.ÙMò*’Xæ—sVáku*P”bQÿÂl¤–»x^:‰}b ÜØõãŠcMû ã°ÖžÉ›ñ\‘˜LQÍ; XEuY.f»¸5ôHòX¼Mç2W|’7öêX¢Ù"tàݘ¾¦×‰ª²|‚†6l­ÈwÚÜ5†³HrXmñÉ»9'^K«GÎïç¦vN8Ê`0 ÅÙð‚˜ïFÞ.ÊëíðkÍÎW(yf’fçúÁÊ"˜ödVoGÌò‹•.k_¥î-™ƒ”ñóçuŸGY¬»E¦åoQ 9ƒÖ^QAË¡T?”ê¤Î£¾ƒH+ôUä ô¨£×|< ñ(žÃõÚ²¨ØJ«:Ì…d~wƒ*œcr+áïѸp9¹ñY™ý®L1€A•cw2¹P}™ -õŠÜ +t\E¶lökÑZZZôÚóÈUŠÄòè} v}ŸkSCÚ·8 {Wb]H+¢»ã¸û ×ö o©lá„®Ø}9˜S•÷$êå—N¡QbÛYßÜz‰£aGÁ÷æ\¹3t¼Q¯O¦ê ¼,ˆ ãN‡,ÚNSÑÖ夊¶S­Ž‹ñÏ‘E»ŽÓ†‘v0GíKÜõ昊¦.Öel7Éð›dl—2®f~‡'t7y›n…;‚tT.»ÖØTkD¸b5 †¸ˆYü47aEzH1° ˆ„ÃH˜… |Ž3T7ðò¦¿wííE¬ìtÿ™¸ÿ÷ùt?(îð¶izåmdh%è‰ÖîÅRãm¬0ÏMU-N‰èUT¦‡ë‡hâ8Ù¸@ˆÿT°ï‡¸ét÷éê÷êê÷ûFSgªP§@ªSQ.«¹) ÊÒ4ZêÌäó8Àžøtƒñíh?…v'T²|£ï«v£#Îû°™ÆäÕÚÑ0#¡~ÞyÝ(øoÜTÞ65•³Y²?XÆâÛN“ü ñUyüùI];Íg§$³š‹!ù[Ö¾Óˆ¦ó/Íú5aÇýº?÷{u;ˆû=£Ùy‹-ÍÎïãàƒ–SíüºÝlç“öSêË.윯÷Ó=vzÉfäkméFþwÔmƒÕdäŸÙMFV¢´W,Úrx¼0øLŸ4·êˆÓ‚ùÂppñWîM—¡T}ƒ¤]ÁWÀ•Ö#*Mäà8 •ýr‘øb`ã"ñê@~ªvÐsíR½¯£ý©ÏŠ™k„Ç/‡ÎÊçëSäÇÕ½¡QQ+×z´ÿÑ~£ýJ{Y{I[¯­ÓžÓ~¡µi­ÚÏ´µÚ3ÚSÚOµ5Úcê³#Ø×üxf.¿ié2\H;‹îøÜþ§Vc‡óGV±½eK4ÔùÕñq¬CnëŠFÖrÛ÷ñ»ãì~Þf„­q¥ÁBe‡Ò]1òƒœy•¥/•%X‹Uú]÷Êu;Ù£°Èmv“iå›7Óù]mì±Ðz FЧÙ)Ö«b¿{È¥„•U<ûçc{ߘùânùù×1³S[êí˜8ߨ”EÝ<}ŠÕ1ÎepµæY··áo ¹ùì©3VT¢ÍÊqš„íÊ.ƒÏV%^îOT#æbc¿–ϤŠxY¡Ùÿ5ìIk8eI¢r‚Ô·’ô'î–—˜ÃÜd=ÃÛQIb'w;¹—*ñ”qô}§ìObÿ®Òù6ù+ܺs½Òª»†E=ô€Q¸¢¤ÌUø‰gúyÎ6'“á ¡ÀªÁÙÓѽ•\Ûœ¤¼'™·B6µ½ ûøÝ8Ë-LzcyíðÔç…ÿÍ{¡Àš¶7‰@”½Ël&é±;Seó ÆŸjv°Ù¹ðØVEÔÛ"oØ»Žãä;?߯‹ô7³±HdžRoGÁeìNÇ4%ÃÎkDsM°ëN èyasÁ\¥–—ð½ÊîÞ4·ÞQöÛ É;±Ö´³šmø‰TA/KðŒ®~úê²7iÑ$mb+ž#™ƒU¬>•¸f›$`öaWΨõgZ“8ʳÅvó`ó›'ä;2G]ÏÒOÀŒmê\‘‹s%D5|Ýdk?ô-SòÙ‰Kà ¢Ùv½8E÷—±R˜E}7Lj׎¶Ï96qŽ-ȱ6ÇØÕÒ:HB#¹m?ᑃç¡®_òI1uV^·âÕ4—mú7ôz;jì nôÁ¯<‹GÑ¢ØblN› wîì#œÜ-È£¬stVùgY²—Í’Q6»,[,ÛYÒnuލñi™k±Úyæ²öOÐÀ^r`Å´Ê8Yò᢯gÈ!¬N‹`=,©%æ±×ˆ«ÒE:¾Õ2•1Ov&}Ma‘4aØýGE¼²8¸Õ2e« ½ŒåoEÀƧXÛq«þÚnýoeÜa—l82zÄEßäK©3õ¯–TëŠÎuG¯5^Ǥ ÞáaYüJÞV¹È—½ä¾ß§•¼wîµ/ø³‡—ŸÂ5û.‘ÛD2Ž…L*—ÀùÙrüÃQŒ2Ý%\Y6ªý&ªztí|ÄB–FO+å#Sþ¢Q¥ì3Q†§û¼Õ,ðÿÃÿ瓵ÇÄes4Y}&*¼*‡w‘›eNÄ.Sæ+Gñ¾‰ªÔ)1´¨¿ Ò9DOî¹ÔÙH÷m¸^Y…&²j^67Ìë[N&[ñ˜Ç¡7hÊÃ}K‘|Á…h\Ôª¯ßLÔLP_°ÕQXJ[&ö5ÇòKÅæ¥ÑÅ­ÙlëÊgê¾,îåkêÆé[6ŽŒÖû›èY£î1öwv;«å¼ÜRÇnÌEe®ò/®0D þ´l(2Ëpu[ðŽDíÿ©»ਪ4ÝÝIH“t{H 2A2…B‚ ™Lu[0ŠÂjÔQt\èîè¬Z}-é<¼É|ÌXë ¡«qk¶ŠeX­a¬UD+UuFˆ¸5êÖÞžf4Öf‡@Zzÿï?ç>úÀÝÙ­ZªèÜ{îyþsþóŸÿÿ_‹Ô¸Â0bžhvWµ“èü/Òr”7¥4Ò²Ýí9W4Ã"*ÛÒûÄ™4‹\èFìáz`!ªú…°oi<…€pý` M8ÕvóÆ:ÓFÂÚE"âÉô¥éµŠ÷,y(\ «Î¬žr5[ñ±Ô4÷Ñ'?Q§«Ú,‹Ñ)ùö¢öùu0r~`ëSϤ1&] IË#oQM黥­ Ñ1`¼8®7•¹€†t`@m=‹I.oÉê?u´Ãõ¯8‹¡.áà©{ìGû+ôO›ÞÕ†šõ¯+¼k¸÷·Âo€Eu¨Õ‰:p¢Sp¶ThÏ{j|Ã8þŠï¦Sáûoa;øK«µXäZúûJOõ׺ÿ—Q_è øÕSêO$˜'˹ƒ%PD_QJ õu;ú]m,’*o@¸»Cà˜ê×ìV{R{÷T3ÈV¯"×ÀðÌXÄg}.8¥/C8íì'Ϩæ1³qÙ7¯Š®|¯\6›À8—žC bEñ¥ôKI^ÚëôµÒž¿¯µ­ç ­#ó N²@c̛ӴH£xoZ$c®öÅj]š üäGEBªâûB`H  ÙB¸VëCåˆëj‚mµxÙpo,4W0b½°a­u°Ùǧ,}Ëù4„¨²úU•Û¯Ÿ|CÍX¨NÛëÑ_‡ù¯nD<\Ó±ÆecÊxÀÜ/Ђ.otÛM²z EÒ& %"†Ê]’ïM ±_Ÿu_s ÜL-ÏÇÍ å/3†CùË OË0‘8£ƒ×r¯f®åU|ÿÜo;°ïvÛÀ>Y ß²*«¡ªÜ†f ¿yFè üyüCe£”éB'ê Áà›t`h8}0l`Kg+Æ\¨Îd6– I¶!f»ÝU …œÕÔ”d(Õùðpèûh -ÕÌch_ ¶g¼EmÄÉiV퇳Oðq: ï$ðwÈÝ,H__&xÊ5× a‚á@¶'(¬^öyÚ~¹ €š»à<ñ½Fã3»Ê·‚z­¨ÓQÓçÛéöA®%r×rôPÛñÈ÷˜už_º™AÄÚ3Np-¤áV£;zï›âc¯û8u#¤lXò?IÐ2®} gòæB¸Rs™J#WxZ²Œ±„U‰¹•C_Mc üÙd†ÑÉè—…„é1)L÷ÿ‰MX#>Wx&o¸Xû±Õ£mnµLùÒÓs»¯ìñ™ƒÞôLZn=½}f`jþÐÏKWç'ÍgE²¯Çg3}¡ !V²Vû`©Xà"¡uä»ùíVz­ï+àmËVØ>Z¿þ y#âÙ0÷œ`Ž1ÞÔ•°YKž©â:ZM¬ÄܖˤBþ©? &ÂÁ:jÜÍ(OÊ/7åËÂz'âKÔ±á¨=;™q× ø±ÎâÇë}N~ô2#<ŧ:Þ&šú!š1Ýõ\,Ö?ÈóQŒ¹.ÿÄüñÅ:ÿÁ‚ø[ 4lJMúeêmez›,RÂÍ›³ô^‘OGÍEØ–$ý@?ÈaÞ³8€×#ýã&fÜ4 çp£xýÒ¯˜G Ø– ü’ö¹m.4°Âf@[)Ì1ÁðtØÙÕ1H ÇsØÙ9»²qü…ÝÃ'Ñ××A®·ä,$Ta•댖=ãnI®éEÅ THÝ% ÄM"ÿá‹’È%- øØvÃþ™öù‘Fz{ÈÛëIßÁuŠó¥¾Ö¥Ö± ôm1H†Å †­Z¶M=‹Ðšö){BGÄÛƒžôôKÔa˜Ž †Ž¦+¬§Ã,ê×rµC®÷ ¤·‰ÎkñŸ¼Ãáå&†›™ª¼<«P7š`Æ´9[T§ô^¢ÙÒm}UÊØ 4!}a3[QxÙý©[yiw5[D“)hÕÞj}îàá{,/ï+j¨@ÏmoCOý@Ý£rWÁh„ò ´«¨‘hþx¡_âøI˜H.ê¿ÎŠª ‡;¢MY_o~ÔP_ÇÌj½þVÿgÙl¯‹VþßcSÖÿ¦Ë5Ò«¯I‡7æçÞÓùùchôph$]Fµ4ýf‹žÚðŠøp(8i%ý†+{Ê!|î Ï€c_­Dc°ŽvˆÂÃÛ ±0˜€ÃïQÇ¿‰ý§cZ¾¿û¶³ìÝaq÷O—+Ý·c*,+óãcŸ+låfÅñ~ëµá°ï½k‡XŽ \¹iÙ³åà—ûsŸÝÓŸ[A‡¸¡ N½•à ûv<„jhĘfU]äþ‚dÙ-;Lã­§uÖÓ5ÖÓ•ò©ØþKÆ»Èño6\ñÍ?r -EoyË^–Ñ´Ô_¢âý%~ç>¨UÆc•2x€HH“Vb æð~¶ÜUX2»G {âR® G­wŠ·Z_µ¦U™ôå"É^<¶2ˆêäŠïÐþšà•XÅh Û…§ØÑmã¥*å9üÑúÙ£À¿Ï²GÖ:¬áʬ©gqÊR¶Êð¥òIëÀH•°_[‰öóñ'õ*¿5£ì%º“‹,R¢ïðC³…qpêIÎÔ¢DßàäÅJ&­)QÓ²ÞVm|)*8_‰&8Ã%ú4?,U¢@KêjÎyå…}|Y¸‡}´ñÖpXo ÿ6~™ýOþøc% kýÔÙnÜ4Ù  &-œÓ¤¦²lÌTVÄG&²öR“Z9ï ¶8ßHÁŠA {)öl·¾Âx€ãªLóßI.oÓ² Â5Z¶!¬hÙÉá -»¾:ªÏn<]fxá²ʬJÇô^C¼¿&¦6?©½á–wãÞ.‹‹úi º® ™J¤ÜçÖ²s4[.ûì}&±fÊNÉбc’É.%ú6PK& œ%½3õCÚ&kÇ(›{D·<Âí} !/¢kÆRvùyÙ#\~^ô—Ÿ(rÜÚÛĘ» Š‹ñ+•è[ŒÕ[”è÷8åV%z><¶{øm½Ýí–(næ”°m¥n€_ø¶òâ¸îF k<Åq}¹'×Mž\Ï0ÙF¬ï’m=ô³Ð§„[mÀY$7ùN$T|•Ç„r©z³Ö‰d’z-Muܽµ1sßòyêE1?“Òê1 öËOˆ^ "Jý…;wÓi½S¬þ † Ú앨,¬ú9w€?Ã=ò"$¯ÏM>/wPàæü²e5LA9Ðn#€w|@ÎNvGŠÄ“Îiæ}1®RæB€ 7™^ÙÌÿŽó½{L–€&<‹}Ü–^óßcõÕØô$&Üß»ŒòI&›µ—·8RX–rïô("Ob‹”Tö̲Œˆ<é’•é/aI„«ºTU5ózt†6>O•ó9Ñ? ä­æMp‘‚áoSh„÷ó¬ð/›ÓÕ¯nÇÚhˆù)ÖýEI…˜£ˆsª™…ìá¦o¢Ý»[)`/ö #±îQF«^{!P´|3‹Ø!ŒðwwY¦ˆ“m¼Ú¶1>FÙ±lÖd)‚A”ðdñP¥–ñaá¯ÆSô|xæ.€®f£Êð-Æž±“UãIÍ:º¹Ž½¨ƒ»YÉxF'!êmB½Yaè³;º0©Á™íS°_ìç´V¯Zv8àMÏã—j"µÖ)ðýõ"Q¸LBâœ8L‰®Sì—ø< e8fn5OˆžžY¬w©Ðñ¡öˆW*é:~õ>Áoí3÷Ó7\ÇqʰŸ÷ï ™2¨gƒ‚†·“ð$ìÝ Æn¤õÙó'²éz.- ”Þ‘{‡¿^–ˆsÊñÁšº)ÜEªÏ 95Z‰Õ®aÒjÍ¡‘Ü=Q¡~”á‘͇G6¾Nmê[ ô¹O”½Êk$ÄД4Ž)iSÒ8¦¤ñ UÉ™NÒwµwœv'L mÈÒ«Û'Rt»Hf–jˆ:¾ˆÄ=cb¾á®÷µ6 œáäÜü ù­B­1nrÙ«'¦›òôe¦ÿÉQŸñ êmP©ÞI@~Q«5CM¸m°åý»ÄãÙ{—*cÜyxä­E¸*Ž}II6# <Æ‘uU‚7)¼Òk!ö·×n#݃ýGTæxÑXúðQ(·PZè5·kB¯Ù’€âô“nF~±ÇbŸ¦˜/ëµûkÕNÕØõváú`Ûš:3ÀÞR;Ý¿L“ˆ˜Ÿ{†©y»ÜU??‘¥©?\aqÓw ·:‰ ¡Œ½ÉÒ“<®ö2îÇÓ‹ •|$>›-âžæmf@¾…Îäpœ¿¦šÛ¦Ûð0ÝÝNßÒ=¦¿ÙÇ×â,ûñV3&ßb$é|í×'[‘ù¦r? üÎZ™ !žðvÖ!i¨´ªB¢ƒ![+´ûÙø6 Zû÷ûtÆE*É€ý ƒËhÌ $±Òzº<õœ2’—Æ™·Y|¸]òaÆ,Êý„ê$öÑ–þSÒsøœïˆ‡Ïÿ÷øyÍè—~c3†¸ûn‡‹ï¾ãö7n®}T×É“mqÌM9ÂAø=ø¥ø*Õf­ƒÁß3Çœ ]ïGqOÊÙ°_ÁÎ"[AÓãêKc"à@{~¦CÈT'tGc"˜žòð™{ŽäÆ&­6ùÇZ_cŸMlúX qh“¨E¤«ö™ ™žëd·iÊ‚û7›ÆA,«˜dz¥ËõcHE•”¡X ¦-&½Ê"ð¨ÏÒŒ0.\éå´…Ìè?=—k¼¹ òdwk³­’{r–KDßDÿîYs­|åišø`Áµ‚Ë gíÕrlrHX °‹‹Õ, šXXkUz*ÝŠ¢»¬ž…¯ÒÆ/ïYkÀ¹ÇôMî9EgßAg=#ê-7ª7Ý¥ô×môPÏ¢g¿¶jøç§¨¯>=rN¡ÛJúçÖÂP–†Ýr†bX)¯€Ÿ‰íµ¨VÙü<¥Ìçg½;£¿ßràèÒýG94ƒ4–ØÛ@ðމF_-F_2€8;O›P­¦¾§A2ÞøQh¬Z†›å‹ü\/6 „=6Wô‚UÑþ'©¢p™¶krYºØê Y÷“¼Ž--Z«AoA×ÝŠ]âÓW•Zöpþ¢÷S9ë;iÎãëGOÖ?ÚÎ.À²¤–*Gsð&–ðö‚+^ÖÖÓù¤ÏlÞ‰ œ%÷NJ–ˆ>T%v=a™ó³OiŽ£ -ý/¶šì#Žãp/LnèKÆü‚ãs·t†£O ¿Çê奩!JÔkÇÝJí¸'|†v¼D‰^ŽR—ºmiar24òêÆIì0ò2=PC8VVÞ'VùÝ”fÜðÈ ¸‹Ó’{6¨~×F¡ª)„#+ÀÍÀ]?ã{xb§×Ÿ?ίZú·E½ÀÀ%¡1¶ñ¯ó?âðÕ0 ßkn/7ËÊm&ú¾ñ¢UªN”ª‰Õ.’vUÌÏåqÓY·%zß#Ë?ò—ÐÖcè͸ÍY—×´ß=g#1²NŸU'W¶RV¶z³†Mgÿwq‚ÈÜD@÷°!ßbÊÇp“Ág'¦Oœi5'.;Ú›¡|A±É½©p̵¿k%zDÈñ¢q“Td©Š§f¼GÄö¿ñf§kY…ªe íˆl'­ ,´Î–hmØÈ*þïNáMÀ4®†h@OkåøgnbLûb¥[Í¡ZÿK·0Ži÷'pî0Ê„G„G&–©2?ö¨ý«‡ U-ÆþÍfáQØA f‘ßÉ"¯ SvÅ8È/8W“,áùù1XB8b{¾ÈI Å» øÖ­6Å_#K]G¥â;YÙæ‹ÕÎulnƒ2KkLÜÀA/9ùûyò{¾;ô—öyPÙa3R‹`ÿìç&˜Œ¦ðf“ÈÜØÌwéA±Mpd–„s©Ñd@hIÂ!S0Þúd ÁßÙ•ømœ†ßs¯ÃïÜY.¡"$’ ÿ繇 éÿ"úßì2þÒlsÔ¸aF:ªwBºL½ˆ” úÎB›AÑfP´”m¹Í ·ä6ƒÜfÛ ¢Í µ¤6ƒ é/µ¤6ÿX-Û11tGÐ&“]=¾éöqÞo¶yĸ—a{°]Ivòie²Ó§ ÍNÑf§h³S¶ÙÉmvr›Üf'·ÙÉmv¢ÍNj³“Úì¤qvR›Ôf™Ù¦aø)Ú4,|Š‘ùÊÿLãt™ãĉýóãƒ'² ŽuoúX÷Ááë+¥š+BÄY)©ñõFêðLHÃáz¸]e¬#¢ú.…¢†Õ/Ì_ ž°BºÿSf S)ª¯XEí7ÓüŸcoó“Ød.pèe¯9ŠØº ]™ÿþ{oWeÑþßÎ[DA¥2;¦&*  )¸²e‹%—2eàEÅòt2m·]Ÿ¬¬l{´Üò1·JËŠÌ Ã Í—ä÷¾fæ>gàÓóý~>ü^¯ïsôâ¾ß3×\3s;Ü3boGOVÕ%(^VŠVg ÈHàû³ü¨ûëËqÜÁÎL½‹˜ne¾$p_üÈ—[5&_…ì¦^í˜þòLä-;éiEò6„ðLÊ;œg½N&$† aŸ'×r![ؤ¤l¯v|+…g[\ìÁvoÇ4[crµ»õ™¶L4&½S°‹ÿD°·²»üËU­¾tr uòÙ94ó}f¹ßLê.ÕŸÍ—÷`R; Φá¦þÆýĨ°#ûzÛ˜ò¬Q·…Ô¡­öÑóÍÇ©òÅ8{ "©«_P´ÙCÖgÛ‚%TöÔi¡¸°¥hª–Ÿž¶ýàêf¦3?(ºú´ð$ œMcH æ¾B¨Í÷øsü3‡Î~ª›¯˜ q$P\_ºÜ±EȺõ §y뼪÷K#&Ëø%lV›TB)Ôøa3Tò‹Þ1¼ñÜS}¼[ž¡ëÄø{í3|Ür«aç üEžV7²ÈYÒÚˆù@óU@Ø* èÞHÊ¢q…,¦e}Y³âíâU]ÕaœfW²\Jq¢û¿ÿ .oh§·¥Àl¸N`†:fu%ÌJ¹›æE—±ÊÛÛÕ«ú²b_l¦/³0ù· Âz)ëža]¾5¿ ߉ï¥ëué)¨³Ùr{÷Æßóû+ìëÚNÏK‚Ÿ½Žà!Kœtð‚ù‰ÜIÓÂK•vrŸ’ä>~¹G+䯹ÃIî½.‘7 5R9yªQ8îZLÇ:BÑ麽tÎNKØ.\éíuš*¯·S|¬)Þ¢¿M}çÝ¡¬^òª¶ñx_tÇÙ18TNiå×ÛÕ2‡ZhE®…EDÿbš»7ú,âúÒÿ}ÒÉÒ€'ƒ…ÔÜÃúÊùA¼7˺© ɇ¹ ÖžMƶàãڇlÃÈ6ÑG:#áOv2µýWYÿÇbO†Þß4ÂYÞ®)wçamÅŽ–d;þ~ŽfXéº9^ýˆòûðQ¥ÔÏçåðFDe•è˜Ó5Û”%nõ¤\<=¹±§e,7Fm˜ý+þ–Ô?—3yö|V#ÕÕliƒÙ?\N³lZß›úòSÄ'”‹Za˜M?rÞE¤Û?m‡Óßœ/:6e5Ý×Гfy½­¾ôÊvj§`ÔÚ˜]NÝ£«l¬¼#‹e«³·ÖWÕ×¶zz£¿|–fR*{û(ìWU7|m KЫ¢Ûì½–Nçf^ç{Ï 5œ­X:ÙÜ™£¦íSžá£Íªõ¸Í¯ú+Ë›»Õ•ÚÝÊ"!íÅmw~M„ý~°éÞ¶ ¡¤Ã®öïÕ–ð ICxôÍiè-¦Ðû‹öÀ(ž¬ ⥈ •Ï]ÜØ»'zR®ãgþ¨öšœ¯ç}žud©E»Ú X"Ù·tlC ª®«•å(/=´\‘ð#]GwÆ›/˜W–(æ^bmY&€Û7ó‹¬h ]~ÿð O³_U« “óñé9ß^Î'¶ „±{t½¡QƒmŠ_±Ÿ'öÏ~`ìϺ0…P9=¥÷¢¬_²}úþ´„Ú¸‘3™¹Ìð)~ü33¶÷èâH­9µžˆ÷z;Ž×c<óΘËï¥nœ;—gÞ<.i°›Sk*ÕÚDšAþrHJï‰è(xOdõvÛ†ÙK“$äôárNéG·6ôuÑÎs÷"Þó§ï?uv?u×®(¶·XØ)£PH'ëqú¾ÙE—:žÖÛzb±¸É@h±§Wõ`J»¯˜ªYô,<%©×R¾¦¤ FùOG}ò¥™­|´køí÷D„[DìR,Â×;bßdÒ\„´óßóø³à5Kõb<¯»)§>«ˆlLªÅ¢ª˜ýÙü¦˜­*¬³t¾|PÆ–D Nçn©ob¿²‚reWÞ`Å<¹uð&Šÿ KáûÍ7ÉÛ~X4xB!ðl e-7bü9˜Ý ¨-§\¿>™®ÚX}‚²Õ-|†jÑ[[š<Äü7ù›§ýöóŸ¦ÓÇK®(ð{á(vã–@~ÜÔ>X´}I¯”ÑØtIÙr—»«¿Zä/»¦ði.Sí.óÉ¥Ó—F×ùE:•7mƒäßç²³¶§{Ú?¬öÚFÍé¡«ÉÛk»Ç²ÄVäÓ~“œÎ3®¬hUÌà4µ†ï1¬Ó=› MÛñ`æôÉÁxÖ¼‰R¡ò]:Fv—m«»lÝS9ÊÈØJY~§2kÕ~ûó†CZù>Ðu,Ÿy³ÝÃüø„>ä«<›ŸõË%§*+ÅÂîn§cA=—ùÅ6Ýk=>€ŒÇ2»>Ö/ë/Ûwhx.ëiÝ‹8{.»¡jKÓ8;/¬-èzîvy4ŠŽëÄÂì¹[YÁ¤,KÑÑÁK§ª=®ôe({°"“:¶ÒéÏ+íû?ýù.$cå½'º²]MáH†‡hãOõW^žä]+:Óú…õÒ’ï(HfÃhS‹…uÏb~•lhkIžUeŒ%­RÐûJ,hUèÜcHêÆ·¡äY½›Š—´ÒSK$­ סBPËFˆk¦WÕ»XÙ],nÌeÕ©Å!ûVë¿S;í›YLÍ$è¶Ž}²^’XÁǤ™ÔI¿×ƒtª=í °ž`'âU .p_³FX@ÙÕGÿ‚¤v¥k!€>¼‹àÇØºîú¨ã|ê oÚ.¬Ž6y–ÝWݺhŽ¦ÌŒ«È&¤K¤U}kø^‹ktSä’Š«Lsž"¤U»\š`È´DGVÕ]#-uE˜gºª]®l§™àoÉð°t…µEw\^_ôqºŠmº¥óñ%]¶v3`º:ßÏ|Õžm¼–~À›@k¢Ø_ óZú"õ)Ñjt«jÕ›o®jUÍ#›JÎ<‹¯Lwøx/‹ÓÑ©s„:hÚ5…ä¾,Šö5#S+t>d òHåx:ªi|È¢.ÖéÍ\8mA‚‰Åµê]ì芫¥ŸÂªIÅŸ34<9SÕNjœCjƒeXý÷®BêHIêr¶W‘µah#«Îwú„dï³ËžA²¶•íUE—ì9ä7[î¯ÿ^ùÑ¡,Àá‹=¼¶»W5wÚÕ”P9>RbèÆ&†‘`R9>Sb +Çç-È&ƒA(š:õLK(œäà i–À7MâþÄ=¦FISB¾ ieI'Á‚«F.ͪ&犯ƒgâ¡Ûo=ª%†>üJ™'8{¶Y.Íú­¨)Ý߆ÍÔHtÜ™¬¦ˆªŠ6dh¦CdH„Ù}¬"Ίm¾xˆ_±@»˜šÙú ]´÷Úk¬$¶U4ü»óeûe¦{³,®û’j‘=á_”±ófÜ'1Õ\¨þj±ÔÍÚô?NU+cúóó#þf?‰ý¼-~Rë ì¤ÖÔÈó’µ[ß-øÌ®l1Åëz›{÷Q,à`I¹žÅ~¹¼õoùsèõm( »÷bOÖ¼;J§`ô…Neös|šuAþl´û˜Tå6æy«¥í, .þû4ÙÇ·«ÖR«Tx/ÛUQµõ92D­¶Î³Š&n%–×f¡¬hôXHŒ?{€qé$ϧ ü›¯Zòo¹é¤vÌÜYä—wU£ ëSA|0´¹ÌG×,êT¦n_Šo…×r~’»gí£¤SÙf5¯G–*â³]´Z‹Û¥U¼œ.:ݨ…™)ƒÎÙ@"² H'­‰ë•±‘wò)€ëÊØ@ÁžA*Êh /}Ðnl´}ƒÕƒÝ—Ù2©¢Ú:BÓŠðRº°#²ìg庣ïEçÛž‰æûíÿ>’”…M~VÓqªt=©Ò탺ÖܽÇtl¬`sah«Ù}Dð¥iBÕ•HÍ–={e·I¶þUW25Û4f›·xÙN&[aA N”j^d±}ægh×hÓ÷¬õfþ˜E—f 3N:‡Q"dýªˆ»’¬¦FV;c§—³=ʬ”C]Ëc¼ =­U¡Ã²®±k>׳JëûŽœ¥¹ÎŒü}Œ-6&'Îznl̶\‹îûÓ±ù kHzv6ß Ï±k>›¦ò¸fqã í$¶m„£ºÚ!"Oˆvg |Ómü OÖf'ªS¹ÀÖ![¬*ûLwÙ*8ÎèmsŸ3qwñ|vÂ3€ö^Á ñó{غµoã‹3y)ªlo¢QáØf9üs¾„xÿ_œ!üïטڡÿo Áé÷0™´ù¶Q᱑·ßç ¦¡äûà™|ĸs:Íz˜»5ú ïâ‚áY™ÞMÇ¿™ÁL~…›ÆxØv<^õãS, tØ} äÝó3(Ø|)•m+Óé&¹ý…ܧIî}3ø2líÕ›;ðlóÑÄé縃\rP7Å™m¨?{L,.¯ü7ã[{*ÕÏë¾ÜtÈj:àè£4Ý0Û¤zjá±[ñî ZÇ:duv»ÄÖ=¦ZÞt¾Ï²Q":Y1®”6+Y?µ…CUJަ ýßkífªß)ߪ;n5mµžˆ×Fÿpt†g©>|ç\ gÖӄѨѦ­ónGN¡œî1¸×êÂvÝ¡£(¦n½‡º{÷DðyeÓû¬ÜwEÚTKŒîÉð·ªÞÓš¸·ºÕkEÕŒ,NÔõϨ±vMô¶&n¥ÂeÚX]·h"uEö²£f¬þjÑM6Ó í–õBu½ÕÜyz—04:ÓäBªmDïn#VµÒöV×-Þi­¨i2Ðİq(ëbÝe«ØºÛÕHÓè…¾¯˜c„ê´ =ØX}dQ õ(1÷V•³ÏõØRn$ k¹­EEçIUužp‚|QUñÛò|€}'JlöþQ×¶óñlþO:<`Q›0n±ÑõWÃM>ì^Á;Ð'bŸý~E=¸Eýùjºoº/‘ ½¶ë½Géo`PYFÑ£“ö-uÂÍnÔë¦bÖ÷FEŒþ^ËâWäχW:Ÿ)î‡ðmò±Ä´?’òê]×Z+çÙþ§«J…Ô/ ¼Hl“̺ú>z=ú´ÂîÀl#oƒ&ÏÜ[ÂN_”„üàè 2¥ø,ŠEkM3L>º/+ÇxÍþt6/] â0Ó$Ða\6-ü@7»9/b°ŒKm°ö€õ¬MÇ *±bj’ÏÔ&‘èœò Q·XéVæM³l¶HÈêÁ¥x"08%‰cžøúû5ê\ë]ê\Äýa¶©Z‚„6zMC­³šVóITaG§À.hª£FšvˆÊ›§Í›¦%»YÕªz½u¯ó} ÞZãÆõ€ÒBw£P¡7ÝÅvߣCr-u»Öô:õ›|¾7Ê/°8ïŒ=ζó|8…ʼnU(ü*&¶®=•­ÁíÖû)Îg½8?Lœ¯N»ÖÚÑú™t_¦';Êz<%=-)y³ûÒ[«÷™¬Ÿ:fûo¡Ì@K.tÌX7™Ùúiõ>ËçÎîâ8ÝD±øœÓ¾€¿Þ%ÂÝë´öE¾mÓ0ß¡¬uÅPÔ`îZÕêfîÒÔoÛ÷ ùª©3Û½ÐD„'û^jжÐfŸ÷q>¿Wøóö÷š?îÖ6tëY"·Ð^žªò©ÅÍìÝäÛ¸ˆz7>CN«§^³oËé~½ûíí÷)‰!þa¾äcM¼ZÙ›¯° •õ(µFlîIE^ÒW·š§°Öj¯M÷ìű3SÜÔúSÞŽZw[-±{”4£/ȨÎÚ"Œ¼¶¿ö‚;&ðܲßÏm–¨Q ±M¯³îA’]hZÅî$ÂpÚ›MÉd\6œÝuäm³øTív ?·ÐÅz0Éj¡É¯ {L´{T ÿ|Ñmƒ>¯º¦³ž[lØÄZ°Ä(çŸÒ ZïŒâû‡uú!kŪmÞÈfËym¹ùs60jRlõW¿Y+±Jà,oµYjmï“}Û~ŸèÐÇSï¼Å¸p”ugýe}ýÏ7éÕ·ÐëD«Zc=m“õÖɪÍËš¬ç×MZü#Æ©õ øOCx>?ô(mø]{ºÛ‰m?z 1=K÷¾A”©ÑºûèVËi„Z®Z÷££Þb³œíÛl³œî´Û:ÏÓ‹±B:ò‡­;žB]a:i=g³4½f3í»»Óy ÈH«å¸u?ÝÝŒÃa[F†r¾Ó!k¬Þ–qüè徟[GÚ¦³Y´Q¯Vß³ò`¶ï™qÄtGñ×[Ým“Uëd½-ÙÓš¬î‰õä ø¡#ÐTp-Sûm3Ÿ˜»êÐÁ<½ÕÒˆh×#ä<âVÓiÄg¯õðÑm§¿^¶yªÕÒàÌtbÙˆq‹àdt6NÂÍ9ëçÐK"n­·YŽþÈÕc: ­@ÁÓÛ,ÇSXí.¯·ÚÓ_ô Ø÷7”y|Vie‰VÛðUÖfv”ƒ®Þ•ÎC¯oñfÐ^Îê¯y/ù‘1œ×²î±^³X-WE±¼L…é0m ó\5©â>ìß¶ýç0Ö?0ÛëpZdÓ×7Þ¤;N‰BK«õ§ Öƒo¦ïv¬Ÿ:h½H§Ñ¬¿¦¯ÿõ&ž«¥¥þGàsƒöÓìŸEµùD=¶ç*}ÀÕÀ6„ðÕ´“Ór•}9½Q’ÛÏfi‰-ñ‚݈}úóo+hg{%z';”@ëä‡ÍdîdšL—ÜN?i³·Uû›ý lý4ä«z1êöYuñˆÕg*Žs€tªµx­|‰IÕV%E›á¤ÿ™Úú—ý6tB\~Ö”ÊrHý%o‘² ÛEu›¾í,e ÏUÖýŽ:8}Ûq;ãÉèª=.¶Ä–xkbËâö˜ŽñÁÃU~Uî1~h>_¿L_þ¾–Ϭ¦c¶1Ës(½—/ÅcôöX<ÁæÃ^¢]Fï¹þ;—åèü×[7Øb¶5z½óâq[ÆWk½=°ºÄc\¤Kì$[ÆFÉ‹Ø7(Ìg#ƒcVÓûR¼×ëy¼c¶½_ßàÝ9f[-eýs,*ë!býâS¶é5¶ŠÕ×=?¥wp¿§bé^u?Ϫû}hîõ~?Å\`‹ö¬oñ@ÛS̓íÓ„Ç©£OßK_F°ÒÔ(kšj›äYÉq§åsæÌ§ªAgØÎ‘Ïæh¢æÈ§ê;ù„ãLƒvý¾þ^Á6¿\vMQ­G©çDAH܉`4õ´¿x\l¥ŠÂë—ZÙØ8‚g<Á=œŠ E÷MT—´^Cõ²°Ó’,ÏÖÖßZ›¼øÆLvGB«5…­ •{²+ü¨ñ”gPÚÜáÔÿz™í÷¤€ðBC£<:wêŠýrè…פy{|—Tx¾‹ Ú.Ê/>C#XÓ|î"nÌÔ~‘׊†{`Ž>ÀÝ)l žf´xEÐû}g>þx:™mºêi¨yAÔhW×óPÌìÄÏ%õÊKÚ½ešÒ_•„Ù]Ä·p$Ðö˜ W®+7¼Àî"×ÝátÎc»óãx߈¾"í†Á ŸÊ® 3ðÕ¯áL ︔k­ÚùDUaznü‚}u¬Ù»jöî¦Ú¾ü nÚ` uÄyÓö:YéBÁ‘g,PæNå»? ÖCÐÚh-°‘mÕl¦¡0†Þl?ÍYkË ãÒŽê{(Aéþ]µªq¸5RE„¥Pj$ôÐ$Î.á‹Bmþ;Êï" ´=cl•Ñ&—¼ó˜ï=‰×ZG›Îb¤Ÿ¡ÒêDv‘_”7}C>Q>“A­²&«Ÿã{=ÇùžÿVÏ=ž=¾¢8ëÙß¡ç’ýö¡¢¦–Ø¿þZ_¼ŽZºýÙ‘Zžo¡2ã­Æçm<óá3ìûù¯[ŸéùÚ1zÆÕ=®¬Ø—gK¼Vÿ]·ú3¾KδR’ORCê6µÖ7øÕ7ÞB3®´×¨µÕK±¦y’®'yï‰f;Ÿ÷D³û™Cêòl¦kõ Ýê}1Úbç‹7îqewSG«.TÇD{ *ÅíÙ”¹ä~UÑÓ& VÑve­ºÇ•}4ì¶Ç•]²í‰(y+Ä~dXnæ'¿@$ð3£ÙÇìM%'b Ú¶þôsÔŸêŠ4+^ ¿Œi"*£ªñŠÅwO,óMt÷Ä2ñUã –¾°¡pÆõBb½ÙCï’p îõfªñ®fCÕx7™_’¤ñ™Dü.–ð%‹™‹ƒ)4TÿRh[B¼K[BdGÖ86ÊÀqWøïwõl¾þ®:FìÌ4g4×ÝÐSðwzF“XW'±^UO°nÒõ÷òôø»½<ç•¿ÙËsX¹Î^šHm³—‡v}ò½<÷Hq§Ö·èÐFޱÏ>ûì ‹Cf5ÔŸÒY E„/òÐsŒOé–_V„øºš½ÙB!`G<‡×{UñÃÕʰ ‹wÕ•V¯ê+,YÄÉyŽ­Kv˜ ›–cÁn1w§c•é3!›.ª'çy²™{÷yö>ÞCŸ}ÄÃú¹cØwÎúéì`ë%G?û ÕrÁ,†b7nýwÞö[S5”ymQõk0Ü'¶8F ¥ñ¤õ i4i˸mÜqÖÿèÝéœ5Nà›uÑŽU^ÐGy)vB®Nó¦Ùh‹¦ñní磧³ïÉüXeÀ¾*àËŽ^Û;¯a•ª#Ÿ8hŒ*ƒ^Ñ^Û{غ0s´Yú;±åLåhÅ2XJ5?þàmœvB «1Ϙh©~t ¥ ±G°|4ªŽÑ¨:¢+GSZ_4´rtù?H“÷ÖéWáÂÜ>xjÇ¡V)ÔM™^Û]ÛTyÿŽŸ¼ú?ó‚ßÕéiýrˆ}õaøgìû¼«¼?¿­wªt»Óö ¦%I ´à›¢VŽÎ1÷¨cîZ9:×Ü©r´É«š*‹è¬^†~ÕTV쪅†þÏ"KŸ&ÑMjÖãCØiLêröºC]°W©«Iõz«eà”N´Œ}ᚥ_uë":ƒ}ânßÙ,nf÷¶Þ@{E[¼ÞÞ]"šgöª=ÁìQ9ºÐŒÌ‘`¡,OVþ–£ÝxÞ~_ônCÌÆª"÷Û¶´í¶Y÷²~Ûžê}¿¶/÷-¬‹¼¤•u´ú áXk¬mÂâ´¶PW«ÉcI+ë^¡V]1X†³•ÎØÂ6£qo4ãmïÒê(bí÷ÙÖK“…Îù`’Ãïp ¿èÌ›_/jÿlÕé"È•­é5±aË\Ký‡çŸi¿‘õ3¿cÕÉ#êSSJ;ß'=—KÇKz ®óÚî-2ÙŸy¶áw,ù‘å2ÙçX›zÁD‡ššéAZ­è$¶&5õ¡¹å ú “Õøg÷˜xÕæÕLg«*Î*‹neYájåxÅìÚ¥(kF3»œ¦ˆÿÄn2‡P¸ÁPÞÔHOlsm´šNW×-º6JìÁðÿF»º„MC·(k·äIÕ­‹OY©÷•î”À6±7ƒÝWºý\]æ5)¶r”bù œÖŠf¶äسîvfa¹ÈÖ¬šé¾ÂŒ«•£n_8Öº§jOë’ÖÄÜrl¡ zG¶¥/¨Y-eõnòE;]Ñöh #–¹7 ±écfÍ®ú¾`Ml®>²hÌ"_šø'U¸1ÿÐÖÉšéNÖ›I‹ºÑáN{:’é1¹‹-m€¶é 6ËI[ÅqÊ´â(­íýŠÎÏ…iãqí*sšræ—½Ò}-C,ì+ =Ì$Èrƒˆ-L†3ôTSŠdð›è¥9ñý çæÁUWré>Ý“Còc,.M‰ð†Þ‘Ïhûá™Û]:ÐÛnv·.MÅì{E»¥ën÷ÜvR†KüvǶÙ¾övl]Èjwì5㙾†åŒW´´·a÷M±lFû–¼Ì¯XKoKÆâoÎFv hz§ zѸk­kÈš­ï¹Öº¶ÅÅݽTÚ ÃÍþ±pC€}jÓl½<„v˜]¨º¬[4€}„\’Ëš1þU4›÷ˬd—&Š|$Ê.Û.Üèìƒß8¶;÷k?[b£­Ûh_2·x"гgât¼ÁãÓSlÅ[Ój_Y#Ýi×]ɤâ×&SÉâ`bÔ¿coÊlÞ¼Öº…¢…»äµÆRy»î-Ý8ðúAmpèßpÎ<,jIÑùb[áÜ…>šFÛ•!«ô´4]¾wŒ]Ÿ§¡Ï Õ¢9fù…jhöÝcƒ­â¤XKfå³ÿä;Óò•wz¨_›Ôª³ê×tV"mÿmäÉªŠ“tYŸÙFß$Vx_£IBZ⣗?ÙÞá“¶Ä“¼Ú!$øõ›ß6Tž6YzÑÌPâI›é$Y6|=]]žØÂS?HÀcØî15(–¿~y†Iª¼áµt;S³³þ)ÙÆT^ˆ@«¥¶|mØ8ÅMýú8~sIø¨ùÒÜšØðµ¡Vð°§©ÃsggûNTœµ%žýÀÓšxúÄœÓ_M?ybÎÙ‡M'õh–é&œ± {µ’æCV.©`!+ukêEØfjxXYf:ùpâÉe^­¦†X É&ÉÊ©¼ª³Œ‚A[¿Îh>Ñ(xÌ Œ÷g:¨&©é_ÓøwèHÊ“lOÝnqÕYØP›ÅBAOYÝz*<-ÏQ¾øså芆y訰0ë›”¦{: ’Šöž“¸;IÕ8JK*vÂóY›éìûÈ1\C§mx9»,ãd¥éd0‹~lÓãvõtÝmh}W KS¾­n¨T ÐgexøbµioE`ŠHÄ`n7¤²ï5צÁ"þàß­ ±G¶UÇà‰?jçàØ¦7v» ”幇îºgƾ]”ïïÕ!ã¦À)È[ÊgÐg«úÈϺÓz¨IÙ‡q)ñ*ón“xõ”Þ‚¿ê¬> =éòørZh§kmòl)nyõ?ë½>ÜÉ–zЕ´b«cÙÒí/Èá_\óNgõ:«ø*-Û»7ù²ü•¿ )’Ö¸<œT¯6Áúá÷ºŸÝ½þ¹“N‡ÉÙÏö]óÿÁðtŽùfÚÖöyþök­+Y˜÷ߦ1çõC"³eÊj7u ýA'ßÜìå[é+D¥ªIßzÈæJ]ÿ Sîš¾‹øSYwê®%»ÎÇB^c|8û p}ÈÎthÌ“2“”Àø¢¼‚¢ó|Åþ"~ý#jûT7ÝQûÒxå¿¿ÿþþûûïï¿¿ÿþþûû¿þ嬿×=ø‡”DŽ( Àˈ¼ð ÛBË#Ó“±©É)Fc|RJFº1:995&>)2Ý”fŒLŠ1¦Ç™âSiAAFþ‹OJOMŽÉˆ6‘·HN5FÇE&Åš`396î\þ÷Ë>h9=î?t‘žœ`4¥¦&§Ž–IΡH5ãÓÒâ“bƒx¼–ÿòÁê‹»7Ž[9-’Nÿ6ý½øP·A‘ÙfKf¡qnf¡%w”1%252Ñ”nJ5ú'%FŽ d**Ì,•+ÙÁJ!=9Ù˜™4•é& áŠá;Ì8vìØqàJ0¥F&!NQ‘i¦ 3 »à ½.WL|Z:™¤i¬!mXÇF''KºP¦æãdS|l\zZ{ÿˆGø—‘Ÿ™:ÕÎ+lCœ%D¦±¸ÅG#žiiýü#ÂÇÿéÏèü»3·´¬ ¸È˜T<7wNVn©q¸9ß*ì£æÓ-……ÅÆ”‚ÂLs1³(ÇY˜[V†—ÒLã„âÒ¢c¤1%59Ébœ€LÂ2ÌÔD¤Qjü´ÈôxD;yϰiôÆÓ¨£¹B¾j÷“#P6Μâ b‹Y¼åñüE§õßÀò•–Ì3G‰òEãõŸ[iAFQÜ…õu[…ÿ5ïÏñ-õÙ7ž\—Á3”#óÅD'KJ‹³2³ çÍÅÅÆ8$T157Ç’k,0÷•‚G~ÞïóVìw –Ž×äS¿»sÑ6ì÷ñÄ«ë Y¥¹EfcnyvnnŽqNfyÁËx“[ŠT).*cÖy–€¼rg½àWÙ·ô8ùÛðí¯„ÆûË F¥ÂÃòBB†2F›4 Ž-Û¾8awWyg„¦EFÿaþÃ&0Cáoµøjq¡ô¡MƶE61ù„Êք䌤{:¸ ½‘ûNí«É-Ý~\òì3÷Ñú6s£éKçıùõÛfmø0™ÜÕðŒŠðr²OÐÜ>÷,ýöoëçõÒ…?§Úãé'`ˆqˆ‡]Þ¦ñâ¹#ÀIª&§DHè°á·l0$°|þ‚»¦O™:MyõŒ^}´tô¥D†Ÿõj¯ŸÙEöxkÉ@ú¾UÒ·¨1‘é‘öbJE1PQ~:wéDñ„±=-Œqq¦„ø(ÔˆÆh#J³qB’))2162!-Þ˜bL‹NˆL5NŠŽL‹N7Þš˜4Á„R1-)62Ö„Ë•:)55*-Õ8uZjRVbrztjFj\JLdl4´¤´¨t4,SLÑiQ‘ ‘Ѧ”Ô¤˜”Ä´DSFlLzTÌÔ¸dSjzâÔ¨„Œ¸ ˆÁäTSrZ|jJzdF\lzBJTT|J2rRÒ„ÔÔÈÈèô¸”HÔ¬))‘‰Ñ‰Q“¢'˜Ò&$&Æ$%'¤Ú•UWmdég|Ýśүò©]7±ü1ÆíVzÎýò†×ü.s `ÏwZ‡²ç3­¡ôlP‚†3œù×&Ç')ŒžÆ WF1óï}Ç0<þÒ8&¯T`øü¦Höœr)š=Ÿz„=®tŠ¡gÄ] &0¼¶9–ÙW•Ç3óÊVö4Þ6oóïÞ³ìi,›—Èøï˜’Èýý˜ç÷?¦¤Ðsµ©èæÞc`*³¿²™=W—lKcĞÃ~OgöÍÓ3˜ù[?±gå¥ð;Y>¿ó {]FMfxÐUþT*§0ÿİòP÷û&öŒøî¹iÌŸ•Ù³!ñÆ»9ßûwsÿßœÎÝ—ÜÃüÍûq³?µ‰=WÇÌdr.½Àžusg2ûKwgòðU±geçvÏâòŒìi¬þ$‹‡ãš0_ŸÍüyáëlŽSrßÇ/æpý5²§òÃ͹Üÿ5üyî›\.?9ÉËx‰?‡]aϺ—'Ìâáß=‹ëÙ=ŸáYìÙðËKù<Ý ˜ü˜G D|Ù3bÆ-÷Šp‹g„xÖÍæÏö¬;QÈÜý0“=aº9Lþ€ï®;[Çp„uÍ‘.Eü9S<Úñô.áÏ`ñŒ(áá_ÀN•˜¹bç/ô¬ôyë÷ñ,\ÎÒsuÉØŸY½øÅÚFQ?òç »büc=سáŽÚ_ “——÷'sûÝy!ÿãßù+§•Mw4 ÿ~ò~þ)\ß_\ò/2÷µ}þ`áêSý»,þ:=w¯8/üw2Çïsÿ‡ÿYk§%wðŸË©nbá5¾«‹àöׄù%ᎅ«amÉB_D¼.ÈþiOèù‚Ìx_”ãùÊzƒ¾þþÿ!ôvAøãÁÝ· ÷WDÖq•Lü3G„úg†dކ®ÛÈòAþ™ƒÉ‚ä 0¢|P›> ÷W“«õSŒR¿M׎¿éáÔˆÁr ñr<…©}¿Lë5ïÐú=r<(<ú6.ròçÆD+ð”l4¦çÓóé¡ÃâóñFcr>uÿ™›4Œ}µ°–Cè‹ð_tˆ1Æ¿ (oP~4{Ì5‘>Ñw¡¾ ØkLËÎ/Î-Ê+,È-£øfÇý/=!.-Ñ8Ö>FÐ:W†‹ÂÌ ø©™X\˜›mÁÐÔ˜ŠQMÇî´~¹A~À‹€²\ t§ef•ç”ÍžoÌ53 ƒŒþ!ááÃ'FF§CBn0†…Ž sÈA„ÌúCµè2ö]Å0:—Þ£‡Ó ŠþD'[þÆlsË02Y1ül‡Á6zƒÄ2‚Ü28‚Ù2ˆ?é¤ütJ¢dö–cÔRŒ&/2ù‡"ÄÓݘ†´Ë5—"¦…¹sh,S`.cº¦!ebfyPLA^^±ÝèEä-­ü%}6IýVEä]Ò1åÍAÆ»ìn\…9ñM—Ò½$K.‹r9Ñò½6žaQ ãæÛiÝ©ÆäŒ3i°Ë¦âLS"c““"äYæ”Méð99ŠŽ!³)Æ8!]ØøvîG’V£Š¡¯ÂÜ¢Yæü2¦»,2È,š…Q¹13#B¦C¨º`r®¾vîHbVÊx§õ8#==Ù˜j²Ïõا2äѳqŒ6?a‚)ÕDflÀfëŸ:2@¨Cû;©„惒’Ó™ðø´tÄOŽOC2Ý‘gd‚‰Æë)Éñxh“VNŒ3FGf̾}ûÚ“a¢Hh#®èÐð€á™!Á™&FN‰OÌH”ƒžœdœ05`Z@Œ— eEÞ‰0Çšþ^-ûãÍÆy™eÆøÄ”d ²¢LFs±#ræü$¹xŽ13;»¸4§ hq˜ósyŤ^™V6f•[JXªÎ+€«"Æ3«`n.ÞPÑ”feçõC¡Ó’¿Ÿ,f¦hKüÈ+€,Ò°ÎÎ,¤ÊËœkŒND…CUÙ”‹‹‚#É‹œ\Zó£ CL¦æY¶ÑRT`FøK¯ žÛ‡ñÙËðrjŸH…!ƒ„M¨¿°+D¦ýû‰9®Ô Ä ´ ¹D$§¦Ç%·/Q·CÚ°á!¡¬¾¡¦±œ eés{ù QÆ–íŠ`³¦ì×±(1fŠNONM£Ü”9É1 fÊ^l‹ä‡ä$K›êbÓSD©®Ì‹È`¿ÏvLÎ-˜•/³4ט⚛ÃXþu€~gÇ«¢rí‹s;©FðgÃÿ‚a\¡Žê£’ú ®Nü ãin)­€j–QÊŒEÅhbŒsx{•«Õs\Y¡¬¨¤¤Æ'Eǧ ¶ñIoÇG“YÙ¤lcŠ5%‰2M Õdâu;Ÿf%:Á”õÅE&áìyTýûü}Zy‚Ì,yâÓŒÓL©ÉT´µ©fbãs 4yÁ&·íuRZtœ)ÑDÜ“#S“`?в"ôË êÈÌ2ĸH”'cY%hl°¤'Gý®õWºƤ_éÛ)Bk‡¨&%Æ`#RÿBëcЇ6Ó˜L~“Rƒ:n³4Yr?ávò«ÃŸ[cÇÖmÂ6Ô6$mª)’Í‘ZŠŒNÎHˆ1F™Œi¦  N¿ù)ÎýžÑÿ·r„4-<¡#'7ª§Y¹Eb”@i.ËÃXUX„*Î’Uíè‘Ó •WAvqYf~nNif¡¨³‘e²DdwGáŸ`œšœaLËHKA=Á”hšÂš3j&& ¥`˜'S k“ÈÇ£ìrèb‰A,äóX•@5kYv>úD¬>ÑøÂÁ:ÈX‚H$&'Œ Ö V˜y¨F¹óJ‘³É4+52:UhüIˆâˆoW¼£C™+VOb¢§8ýOÒDK_’§åkW)_“l­‡w©ÛÍ»ShÛ§¦þ:ì Ö£?Y4«ÌŒh’Ü» ÷õÉé™>5…]¾(÷ÿä¼HbŒÉQ ñwd˜œÚG¿-m*Ò5q“;ÊÓh]=–úi¬âC§/6þNS’£X)Nú!÷´ÏÞá˜W Úô·\þµ0Ów7Züt’¹¦oaæ!üøKô}×2eš4Ôs2Ífô Js3sÚÂÿÙ/ñaƒšš Ú]mPgã9´ôèÐ+ 7Aµ ] ƒ  Ó ß@—A›Aõݺ úì!ƒ:Ï{ñŒ…úK4ïANA ‹Õ< €†‚@û–Ô[—ÔA. î˹Yhªd×Ö^3 ´ù1g ^aPÿ ó‡wМǤa_ð­ßì' j• ?Pàܬ4W²kk¯™Å :ò’ÓN¼fD.O:ìÚÚwfçŸàôüÓµðNùx¿ÿinFô™d×Ö>B˜}&ø+ÁJº2A™›Y^P,e¯y¥æÜvø÷l_<‰ŒŠŽ1MÐÌ»¾†üò™×Ôñì êêò‚BA#Ac@‘   I PhènP&(4´ïÈx¾Žgh‘ bÐLñ ô+üÞ¶Ž‡!ôS Òd-xàºmà4ïYop³õ /$»¶öšÙ£opZó6âºç-ƒºõM”Øõóùm-íƒ}ç·8~öOƒ/Ï-Qßá4 ïU¹Q·wvmíW ³n‚4Ý?¸É ÎªwP[ü?!MÖS›ù³b›ÃŽÌl°o<Åu¨‡6ñ'á‰àý¸î?£»¶]? /ÁîÇ­µïc·Ô›A]@ q[ jõäØÍ½Þb<Åó)˜OE ñ~Ì€ŒWÁ_†w h(fóñ\·ãïý¿ÿßø_»ÅÂÿ%ø_%ù_÷‡@Vá¿MøŸ]\4wFî(cAaaî,ô‘Ê0dDç(3Û\\ê¡„‡†624x؈°Û‡y{Xp˜2|äð°a#†‡¡:Hw"…>Õ ¹Ïw`·Ô_¿ƒwÛiþÜòÚ[<Ã~øÏè? Ïk‚F<”.HdúW@ÝÑ"dg}ò #³¶s>ÊЃšpÕ jO¢nÒû‡—Ю]A;÷Þ0ß|Ù &ã™Zúh èèKÐàŸºd½)hìžÇó0è;ÐyPÈê º”º´´Q èÐ1ÐiР „i( 4Tª= zô‰ èCЄäÔtt“SÒ•2sNni©‘žÅèúÓ³ ¨dÃÛ‚¢\c‘…íÚ3 L1ÆËŠ-¥Ù(ž(£‚—(Æ ô^”‰áÅXfDœP{qiòÜû,; ©2³³sËÊ zž4Léa)²7ãÜDÆ$Wö ½Ò.JJì„øäÀ r†(jÏ@Á‘3M*e¯dwofIf‘’€—Õ`È–]œ“‹(˜-¥E4ã5ߘ_Œ±©¦Ø.ÍY–11µ{6Ô™µ#ÿ>Ømƒ¶íÜÖ[>þ׿výXspïŽ}Wé½fþcÿY³§f“òÑöº“»>ؼ¹fÏÎÚÍßÖ|X³¿¦fÝÙuï­Ùºn_ÍÁÝ×~Z³¡æ•šŸk¾óºÏÖ­YW³®©æà¶×k~«ùyãþMßÖ|²óPͦš¦ú†Í¿J¬š·5÷×n¹|ðwxÿ ót?ák©ùyÍ«kÖ ¸æ•a½£æÓCÂꇚOv\¨9¸åøG?ÛÝn©ù½×k?þ°~Í+kw³¿{>¬çRÖ~ôaýþcÛj?xsÛ‘-G¤ø¼¡a,û.ìßpðwÍ;ÃÚŸèŸ"9ÞüuíNÒ¡æ`ýŸÐ¡#V¾ûÑÏÔ×|²iÛþZ ™d¥Q`ß9¼åòíÿ&^”jïýT{€’¢æ,…|ÇVxþ“¤¥=Y(dÖìF\˜¦Y’°8œ¦ÊÚïèŸ"<Ýðá»5×}·î÷u‡ÖlÛ§’÷ëv¬û¼æà.d”½Ÿnüô½LÊ{{?ZW·ùãBYë>X÷5²È^æ]è}ŸÕ¼iÏ?Ö¾»v#ýciÞXóóG›jÞ†Îv G›dµî]·ŽvÔ„ü ›~²3‘d‘sÌ{˜Ž758‰¼xæý«Ô;ìšYû#ýS¸Äý‡ßßD WjÞ©Ù±ñäîÈI,^k®ùzí;cíšöüpWÒͶÆýEÙ¶m®¯9_»f)úÐƺ÷íÚ7ê7þ-ëÚïéÓ ÞóêÖwàÛ›”‹äÌiÏ*[.ÿó'žUdV2er®Ý딹Yn^÷ʺ¯×mZ·wÝ/ÓÚ³þÚCm­=ÖãšW¡Ý޳¨½l‹LºóÐ;×À´·æl›lá`ì DlÞƒò}p÷©}5•ømçjÞÜt­æ[¡=‡¥¦Üw¾ªY_³{÷µm‡PM}ˆ öGŽDOÑ¿vµ–Ã]Ç®.Ò?{f^³ƒðý5Úål8ðá¶S²‹ËôOY{‰þ)õìú|ïç›~”4­¹¤Rg7ܽñã×QüN­ûù½ÓðèšO¶nÞsÌžWDuL~P•ܦˆLNˆXsž%Š# ï_ÙY‹2Ý–7É4¹=¯ëÓ÷¯€•¼foÝÉïIl¶×ó2­±Ÿ˜™7kí½7jÞk£A‰c`Zä¦kv œd2¥ "?¸}ÿ_5XP>°gèb_Í·”Òµ¯ÔÔAŽ(ܲ÷_‡eMŠ<€Š¤­Êj<+ÕÓ,™ÙÌÉ’UnŽ¢ÐBÿm,Qš[’‹žLv±…–ƒ‹DwB¡Åœ3ÍxRçÛXT\˜[Ž#­‹®‹¿SeR\¢M ×èðÅÐÜ¢cqkºígçg–b[»¯è?”Í] ‡q ÖÇšSPVFsµ\*Ï#ÏšCFÛÙ;Í3S€qB€1–cŒ9¹eÙ¥%<ÙSfÉâfÄA€ÄXV’›]WÍ×pgÍš…5ûø.×bš©¦¸Üœ³,¹l~‘9³Üȃ$ùÜ6_Ëc˜Ô4Ïç·ÜòÖ/Ó6Æ’LÚ]œŸ[–[f,Ê-cSÖ9¹%æ|¶ñyÉl#!h:Þ©É’ ''GÉÌÌTdÿ ÊØâÔ¾‰Å«˜3³øFêû¸”–Í”û,È%\À¶®›ç—ä¢kZf))).ušÝX^),†3Z¦„ºBƒƒƒÉ_¦´Q1§8W&ÓœO¬ç0 |¥ §®Is2‹æ#•™3‹Ìe”o™’Á¿ W(ž)yyy"Ÿn2Í™äh.ß‚¯Èk$‹°10$4Œ„†„ŽT¤ÜL…#;ŸFOù„JJ‹IË”6\}²"32iYØÁ™­XŠH[³ŠØ*r[­æš ‹RˆòˆðòÜýÏ.*žG‹Ô³s‹„ÂD†ˆ+ÆK)­¾Q×Ý^ðD.wˆÔøSˆ/½]EVÅáÍÊ,¤åð§ìÙ®<;eóv¶là)Št!-Ú»ú<ï´­‹†r%Ä*ô+³²²ÚU\2ËüóæÍsdÏ¡ÒxЧrC^aA¶YY°`2þ|{¦cKí¼²›åic-%g>ÙT~ŠKç3 ‹y­Ü¦…µbZ…BžAÌ9r2¹=ϳJVaíØõ¹3 )nó9s™ÂlhÁU#E|P-dBj>TKá—µƒJ5 ½ˆHf™ÑÞœ96¶êÌÛ¶¡¼i3fÓ:®8{®±”å’–3™â‹‹ çs…k5Û.cœcAzdåJÎ5K.Õ šTžåHvK¥¼¼\¯(o>妾Zš º4ä :õ¤›Z zt7h4hÈÔ Ôtæ 7õÐG :Ð3 ¹ ) `tøq7õ-P%h!(4¤5>榞Õ‚Vƒæ&‚ƒz€šWº©gA :ÐS û@  ~ [@çWÀ´ ” ê :û(ÂÚzô((4 ÔºÜM=Ú*MÅ€B@ƒAý@-¸©ç@;A[@ƒ²AQ @_ÚÜÔçA Ai P_П»©Ÿ€¶‚>=ªÝòýauS€>}z4thȤ€¾]榾š  ò}ûâ JŠL¿Ó¤$ħ§'˜f˜’bâ#“”¨øX핯aÌ‚ÿYJ©Rše‚ÿYN6ÂhBrê€àa9JŒ)Á”nR(Ë*”a•¤Œ„…v5Àƒ¤ÈÔ©JFx#ÓÓM1ŠãMäxØNJJžœ¤  *(µJšéŽ SRz|d‚ŸjŠNW"SRL%i¾Ñá“ð::!9íßM¬þ÷÷ÿä/0D ìh¶¾CCñ£uåxÒ%…OmÓÚòb±¾ÌðP󜒡Ò“ßžÔ¿ïÔÆ™ƒ°ió=çÆî;"74ehï펀®Ù<4Y´Õ‚atâœpNÁœÜ"ê±ÉÄô¤À i޳Ô1dõtfiiæ|ã€2£ÿ€²QÆ9ƒ<”’Yyæ"cJdFši5O¨ì-Tßѯ5ßB1†O.Ž£žÈ˜lsiá8¾YŽ»Íçì†&U=1‡kLKONñP’’gÐËŒDSZZd¬Iá<öð§§ÎHŒLHHަIÕÌ,´ÔXòv;—¶ˆeR¬Ðä¦9·Œ’:ÿJQf‘Ÿ4AIB¥aÇúˆsz;ïãnesçoçœÍdú¢ËÝ«oèYä5÷Jkëèc×-{lÜ¢}xïu­äý»ŸÛÓûjkëª1ïL¼òò…b¼ÿr9þÃÓ»ûìÄû¶à¥ÛBJª¾µ¶¾¾ò®«3·ÍËÇû‘s/ì]÷—Û¼ß1zñáÕ¯®½ÚõZkëg9/™7sA&ÞûÏ»ôí¶EƒJÞ§K yê§;/sG~ºóHÙo /Ö­›†÷·zúâÿzôM)oR<2tõRŸZ|2÷ø2¯õÿnœùá¢åg^]rï‰Oùé¦$ÂAb“é™Ðìƒ)«ñ^úZÁ _”°ôw¼¿zÓæ5'C{¾DWþnßöjááî[žÅûŽ1?m¸ÿJç“gñ~×Í{Þmé·r?mŽÏêùem/?=Ž÷ˆÓ}w|½Áõ¼ÏK]ýñ§nÊ¢=eƒÇL>ð/tµñýeö0ã·šþˆmg{éØ3sY+—J——ÑŠø¥°3[º±÷þì&v˜cåÓt¾¬ÂÎw4n¥ó˜”›èÿlºd’íV.¹ÐýÖ }+ñaôfz§£q½×c§ÃÐ~ëÁ?-}ŒÞéÛÅ ÆéêöJÚWòÚŒï)¬´'kǾ›èVz=íoÚúÊ;x|LYrÔìÎß@ò\ºoVßoÏÊÒh ˦ò7¡¥ Ñxÿð¶/Ž+• zÑâ^hùƒ)+7MÄûøžù¯)ïOöHÄûÁ›vUÖür å:ù˜ÿô ôLçÖèÙ»7#Žé¯ÊìéÔµJ)¯k&ž·Óå¡x~Š4¥c0ë–ëÕ.x–LqS)Mü—èU¶Gs™^¥½H9Uz•Ò„®ž #ñi_ޝOå¦pµ›Jåi¯Ž§ ¥S/â·éUzoÀ³»H§ _SDV/^ sdçbrÛŒçÕ‡õm—ÿö§í’÷•¿ìf—ó+âv ÔõQ½ÚJÝ*-= z ôh;è èЯ k ®+àJÝ*-= z ôh;è èЯ k ®+áJÝ*-= z ôh;è èЯ k ®Á=(4”ºTô˜ÐYltô(£lRÆ ã° Pö‘{pxð0£*Æ q& n/7†“}àÈAÿs'øçd’;+»,04(<$hÄcHx8d… Ê…ø3Ë xTšK{WsÿNÜ&ö£²ë¢œRµZ…òrw‘·)×@Oý¤|ÓŸñGvÒø?åùÏÁ/£ÔWÑö²’ìý ñÉ3Ø:å ڄά¾Q5&vt0óŒh(Ð9:À¥HçBU„ê²Üõ ‰\NÈ!Ò'à…vèE§¸ùÃÞÝ#uEoPé(*½kR§&˜º&ê4–^+É#·dƬ_‰÷•š WÅm‰rsÙJ>º&»ÒWW®ñiÜGWºíÅ5iCzÅå;¼xêû¸>Eè{'˜vCú›ŸLn>ˆ‰ÞàÒo}?ÎÛ—÷VΫ*nA€ªÁc*sr[çɤÖΤT]ç}pçÒÙ×Î?‘}çL˜:¿Œw·ÎTw¸wΧ@w^a ï¯<Š˜°ÎwêÉùoÒ³g=ù‹ˆû¢\?ÇÓpï W’„fobHïúø …Ÿ0¤ºNG"æÜͧk#DŠ3ä­t¡óšu¤ ®ôÖõBÕ•X»ÞCJìoséÏTéyé/ƒÓ“8ÿ cﺋâbùZ„¥–Â2÷{jœ å< T×@ Ë‚_EX>¡pÞÏ‘·+5‡†Š¤©~>®aÎEQ ù¹¾I2Oa¨·«¤TÞËÑ5œÐRîCW:ÂØPÍ‘¿ë Ùƒ¸Z=ÄQ°ë Bs4œk鮥0Dò[j#6À›þ†W_  E$zr¡ˆäô$y¡¯’“ .¤,ßÏÈûa›È¤\«î¾Ôëu 'ß;IÞ(²ô¥>¯K{½L—2yï’¼jöJ•¾ËƒxßÒÛCŒ÷z]Æî'^+{¥Ôåá „ßí’ Uj¾TOºØ˜§$èò)ôºœº¨¾Ÿ“ Gɉï)òói:År%ó©d>ÆÄS¿ÌåqÆK}S—'˜é’ð$3¥/\žf^T“ÇÏ0Óuä+±¾›ÉôyÎ@¦/±×\òb 㥠,\þÁ^óHî«,èYäìu²22}ƒ…lñ¾ÅL'ÑëÛÌ´7½¾Ïä. „üàvF×ƹS¾®#¶²ûêCß!d·™¹ð ¶Q´z&ÁÔí6¥'µ€n‘:ÝPÃ’LeÃ7†Ú¤>ÔúÒ÷ú~ÔÛ÷íK%!î=w­,úºPA™ô‘»V}#©%}æ®>ßç©ÞJþÑ]+{¾“HÆ”‹Ì€ê߃T{M§s¼:ñ=ON2o`·ào—pU+ÖÔt%¨5"ãû>MµgN 3¸“œÍ¶;£7æVTMùfoîBU«°|+("ï,gT<}é# ýíT¸}éB]ýH³AôÚõaLŸETÂÃYÁ)&e"özƒêšN’Ï×'Ñ)êÆª®»X7ˆz7zÝ>¼µ”•-+Íše)(Ì:,4txxx`Á°°C£2âb†Î*,ÈÊFg:ièÄ CW0thv™EA׎N{ ªè*¹øîL<°ü¿,^×MçíÖ]»ÞÔu@×(,.=tº;ê<Àµ‹âÚ•^ã{„yP`‘Š¡¯ßc(Üúƒ¡sçqxuÇ«Ê_Õ^’ŒNÁê%›Îþ°éOò“äpó.¾€=‰¿«A¡‡——Ò™¹÷¦47·1ãîœ RHƒŸ¾Ì·§ägO z ·ÛŒ÷t¡Á›®›âív“:@íah‡>fê§o‚uº+]=ðWÇÇŒ´Î”M (hhÙü²œÜ’²¡ì{¤¤M¹l(­…•å –yÙes²ÊðÈÏ,µÚÝY†ÎˆAk³ì¶´F8týåf,푼0ˤ'%{`inN~¦½ÿ¡Hõ¡EÙ…–œ\Úì–“›Ç*sXDúµ›ÆËÎNH,™Ÿ8+¨Œ1+%¸~¤èúôé3¹‹;À”Æ ®Ã`8ÊÅ›PgÞõ&Á–“8ª‹ ì&þ‡÷Ýi*ŒÎwxHà ׾:¸ÖqÉ4ÞpõÓ ÌÇÖ­ìŒ"ÝBÕS¯_C( £a¡3ÌÊŒæ‚9¹ì%6:9éÎñIÑɉ)43>ƒá‹œÌœœRÆâpÅô;ƒ’sF^¶™Id&dWZX0gÄpYfB‚)62aFŒ)-:5>%=9U’W¬”å—šiMº`íP¤‘ŠPʃC#ðç”1©lD.3¿gÌÍ,ä-¹x•™‘;D$CF0s2ËgåææäæÌ oÀìÞg™‹çe )ÅyyŒ·¬¬`×H™9¢´L ßÊò ³‹ÌÂ’ùb71Î*œ­qàU;#¯¤¸L°Ì²kÊ\šYT6#·(GÁBAn§6-¸»ÂâLŠFqÖ½¹Ì¹x[Õ„ë{( r$õ›SÒ§Ú¥dç°„,–’’éÁŒçŠ¥PIÇ%B˜eK'MÿxÒÎaE{˜2œ|ž‘0#9#û,%‚¹Xä¼R‡¢ó,…""ÍÎ/¤‹LÀ@Š'7ù(Ë3ò3‹r )òs0~vç9Š+3'—”Md;„©H–´µ€2€ÅœeÉ“8r$Ç µQ–)Ë^ó D‚[‘Å;Ò7¯0sV™Ý'˜3eÎÉ*€'m9Š–ü:§8G$6ç¢)öÜrÍ–›ñw*„ZhÿÍ+ó%f‘LN¥yˆå6V9Ë¥=mFBdZº½,ˆ,™Wæ^Èî³×.(!v%Øuæ<9‚Ã6–2pL©²°8{¶¤~Ê)Zâʺ½Ï’[:_è© N s‹´êÍ©ÞJJN4%òšA+ÝŽú‚iÍ]˜ä,y’]^ú¥\]„&‡²lXœªÞtSj <ûä›t”Å ‘È|,ŽâÙ¶‰›sŽ(«C~lRrª‰KOƒ©#_2§"K‡I ¹5¦VÇHÅÌ©"•³žÐx¶–°±Ž¢2«f©[ýŸÎÈͰ×äÚ4,µlÁ!AÁ!Šò_³ÿÍ” ²ùsÌ™YxšKù3_{c5D‰TTlÎ ŠŒŠ4gÎR‚ò3Ëò• œùEpÈŸæR%]È mC™ fÀ®4·øøKI¡™$à//%ˆöª˜eö þ77…‚ÊIØb¤Ñî´2`þ¸7›ü,†ó¬2@Týt²¬s³,³fd²eÙ2 –X²¨ÐÙ1ë*i¬YY¥¹s5DŸ¶hïZ`qdz@y Du‘=›cå?þݤ8Ö7/TêUZ,ë!Ùkë¤Ôeu|ê½J‹ØF‰O;‚RÏ øh]È|c\özA4÷ÒYðÑzMÙ­Ös·:ÁC}[:0K;û”Ö—hõ¢Ešp׫°~0[¢u¡«Ã<)…ËE­{^|´ž´H‘¬ñÓ ¦“0£õ¨†Î|=JŽåÜB‰Ö¯Z:óu-½ˆŸÆga¥õ1/ÔuëmôW"ñßqð­vuæ#º_â«Äh£²›¢4ïv¬jkßÂ/‘øhôRr\§ôîÀ߇G>X ¾•à“OÑJé ÁÇ‚4ÓMUtŠy|{¾§$yæ—ÝTó-.Ng¸hï/‹°‘Z·,ß…6|Du"œÌß5𷯋2fpÏ(ž+Î{ˆï²„5»ƒmùnuQ¦HX‹Ó×møjÁ7 y¿´áû|«;µç»Ô†¯"ÀE1êÚóÑ5Ä2ß‹.ʲøz´áóêÂ×âÅOÓ³Qðiyn ø6»9ø´5é!:Çyôûóvç5¿FwÀ§vPoÐz³¼×ãÚH%²ƒxhyYû5ŒsQ6Fóz1ÍÕQ_uj#oå.ÊËýÛËëèGõ¯ÂÜs.ªg9æ>ûÛ1÷êM޹©~䘗m}ÜUœBõÇ\3 vÌsS‹óŒAõÇ|‡Åq;îÌpåcf—c²ú…ã.Ü?;æ»2X}Á0?mÚü²†ymUnÇ|çÆ”Õæ'ƒÏ´cÞBåÛ1ÏQ…vÌwP9丧“ž]ÙnûµÁ7´Á7¶Á7µÁ½Ûà›Ûà>mð-m°± îÛßÚ÷sÊGzå\«Ú“†jDú¸ }úµ±§k4ýê _Z^žiÇ=š¨Ê·ce2žêL {± Þü5|/›ú…ç!É¿ <½¿¾ÿV<ï–üZqÜõ@þÓ–?tÈï´ Ï6<#Dþ"ùmã´ ¦zÒs¦¶ÏÃKilcO·Š…f;ì©ô—0M¶yH¸ðoYÜ x‹„o^!á¾À³$<x˜„C€ƒ$\ýŽQ¹~é`®@É>X•p2ðÏ™<x·„g¯“ð,à.N—ð<à)¾K€GHöVà¾~ ¸UÒï³Àç%¼¸Y¯Ÿ•ð;ÀMÞDñ‘0­œœ‘ð>àF nð àJ ü®„Ï/“ð9à;%| x„u¨‚½%Ü x•¤ŸnÀ_scç!PzÑbö2ÉÝe¥„×¾Æ÷O?šOå‚dOÍZ‹„é@ÿ:ðŸüÑÀ’ý$àf §Ÿ”ð]À Î>,áÙÀ«%\Føu7væù7ŸuÔ¥ü@ëü¶’~$ü°Ÿ„io *á5È_%ä¿ œ/Ù¿ ù!xpŽÀ´ |\â§I8¸^Â)´CÂw¿+aoõÎuà9ÀF Ó~eúÙ:î°Ÿdÿ °·„iG„WKx ð”7QŸ yëý%ûw€Ã$¼•âÿ–#ìN‘ìÇHø3à8 !ៀ÷J˜îî~ÛM áò/×IöÔ¥ª•p'à w^/ᛀ7J¸?ðj Óbñ2 ÓJûJ ^%aZK®”ðÀåž\"álà| Ï”°xŠ„QFËsà‡È}ÆABß·HüÏûIü¯7Kö´Ü(á÷$¼ ø¸„w“ð§ÀG%|øˆ„iaú„ŽÂó;Ù78êßËÀ)’½]â8 w>~OÁï Ü\'ògoà sü€›%L›1%<¸AÂÀ-Ž^ʾàÀë_à˜ö¯ô.rðÏ6J¸ØOÂ¥ÀÞ¦#ª„—Ò@ÂËçKøià ¿ .á½À‡$|ø=  ü†„¿ž)á³ÀS$üp´„¯ß.awEé!ao`7 ßàA{ÕøVÚ÷&aºÜíW³>&á±ÀOHxð 'o.sà)ÀH8¸FÂ÷?$aú*°\ ï’p5p‚„#ág€g–:ðjàÎ’ýkÀKöïRx%¼øU œ/á’ðçÀ-Rýñ-p?ɾ‘¦\%|ø{‰ÿ2ð?%ìŠzw½„=ù-ûÑüVÏ6øà¢ÅÚù¤žJàr ‡?"áÛ_‘p8ðf >"áHàŸ%lþKÂi—d¥'÷”p:ðmž ^þArÿ6p‚8#™ø7Q|¿q”—ø—†~´òüdø[ ŸþZÂg¿’ðྠü…„õ^Šò™„=›¥øÞàå8šÂ+pœÿàʃµVÄgð~I^pøµùŽxZbýÖQ>î ÷‡ êÂý]Àÿ”ÜgûÁ½Q¸¿x#ôý¨–¾À-à7ŠðÎ'yŸÔY.ܾøÂÚz —b£ø|íhŸN9iPŸøŠ?p¥À¯“<ðÇ üð*)|[€½¿4¨Ñ"½¨¼úU9ÊëN/ÇÙþ½ÀR~ûTºà˜òãq`›dß\¾Á¡ïÓÀf Ÿ.‘ðe OƒA áuƒâË%y] %þžÀùîœ#áÀ3% |·„GO‘p,pº„S#ÎÔQ"=îN‘ìóK¾C{#Ú§RàÉ~>pœ„ÛàÈOV¼Kö+È¿Ÿ jºˆÿËÀ«7ké ¼ògƒÚK¤×{À•g ª^à­À‡$}í"û¥Òø•ôÑhP÷ yÇȸ'ðIàõ’ûï) gõï/À{«å«Å›ŸC^) ø€do@FÚØdP'÷Ý€WKö7WþjP+„ýmÀ5’}@7~ºṄ{ÿfPD|ÇvsαÀ¿-uÎÆ·œó[ï·œó£ß[ÎùÅGÂÉ䟄ïö”ðlà#Kó§*Ù—Á^ÿ–s~U$|?ìIî«H?¿ÔV¿GJöO“>ÿ@Eد> Ù¿¼÷¢£~zصÚa¿x¿Ä¿“øåüÑFŸG}$÷_ÇIø;à’«5K¤_#pÄ_5JÊ_ WíE3ìWÂ~˜À-ÀK%y­ÝèÂlvëîž®À%®nê Q{—ôÙ8XÂC7>åÈO#·=äO˜m‘p,ð?%œLî%<xåÓÚz±—2øý§xð£1p©„ççIx1ð ?+áÀ :7ušHïgo•ì×%üðM~ØW›€/=(õ¯¿ð>àc> |DÂ'€?’ðwÀõ>üŽ„Ï¿,áKÀ+$¬ë¡(÷K¸p¡„»O‘ð Àý‘¾ÚúÒ­ÀQ’ý`à@ ‡ß&áQÀ}$EéIx"}þ'áT`w O¾*åÏ,à:I¿÷+áR`:Nà €GJøà™~ø% ?Nò$üm@²:ð+> ¿ìÀç‡Hø2ð=vñQ”j {?'áîÀHøFà­¾ø S}ö§„ÞÎüÓp(p‚„G§I8 x¡„'?/a~)áTØÓYƒž%á,àl ß ü°„K·HxðN ?|N·H˜ê: QÃÃ~°„Ÿ‘ð+À1~xª„ß.—ðfà ¦ö踄w¾UÂûéüF Εð—ÀJøð›þx¿„Ïÿ áËÀg%ìâ«(t–¤†=€ÇK¸;p®„o^&á[ë$<ø¼„Cé K î'á(à O¾O©ÀOIxù'á,àF ß |VÂ¥ÀÍ^LçnjøàÁ¦ñÑD ? ûy¦ñÔj ?ûZ ?|Z¯Pø$ü:0 ªaÏ ”ð»°O•0ÿJ˜æw*%¼üoIx'ða ï'ÿžòp°„¿ž"áSÀs%ü3ð3¦ñm„ÏÃþ# _þAÂ.=匄=€é\U wî&á}%Ló]ƒ$|+ìGKx0ðÝ~X£€k%|JÂé,X §”ð4à;%œãœÿ0å÷3¦òqJÂTþ¾–ð»w\ÂT?•0Õ'%LõÏ o†û1’~¨}Û!ÙSûºEÂÔ×J˜Úó$¼òÞ“0õ'Þ–ðnØoðAàõþx„¿^#á_’ð¯ÀÏKøOàg%| ø) »õR”Ç%LýÛG$LýÉ%î þ2 ÷.”piK9å'ÊñRzßû( Sþ+aÊÿaj#opÊ*Çø ¸®/úÛ ïo'O‘ܧµqpà 7õ61ß›\þœs{˜-aj?gJ¸ü+%\¼J €½ÝÔ‘"<•^à/~x½Ä¿88ÈÍ>?ô$ðFÉþyàÕ~¥M|^Þ'Ù¿!åßZàZɾ®?{UÃ{ÛÈû ø›çö_”ð¤o ÓøýÍçÓs¾„ÿ4 S}Ñ_ÂT_Ÿ–ÂóG›ð¸øÁ^vïçlïÓ÷>4ÒM ã¯þÀ3S4÷žJpØ yýÃÝìóïc rS¯<ðh7õI7÷òÓc$yw7Œq³ÏÏf§KöÀÁcÝÔá¾8G²Ÿ¼T‹€+ǹ©O yÇ»©o¼‚â;ž¯Ç~šÂá¦~&ðKÀwKñÿp äß­óû¤¿—ÜÔßn†ûB¾-ÀÃ¥ðì¢ðK˜Ö¦Hò?!}G¹©_ ÿHü'ý%|8%ÚM5ÿšÈ}Œ›ú²Àç)>ÜÔçÄüA é?Î>úDÅ8ÑM=,ìUà˜=TúÒ„ò¿pÉ¿^Ä/á[ˆå…>-"þÛ¤O^(?…´Áco õ2Gý3X;7”íw.”ìSÚ¸¿“üOwè+—ìßqø?[Ø_ñ)6Ov³¯?ܬ¾×C5êè›­žÊ’ès"75v‡ýþƒz5]Çñ“ÀÏÔŸŽ_NIrSé0Âkýßï¡–ôâòÖ7.׫ß1~EÙDü= ê¸.œðJ£›ÚOÈ?ÜpÑ .þÜ÷~ÂýOÀÁßÔ9ÂÿßIÞ7ÕWàVàÕ·¸©Mw½õé'=Ô„Ó“Yxzoü–ÏG‘ý`ມnêZ‡«êÕs¿ 7ÒþM;³’ìÓnt|OÕ ú¿ø<ì5ÿóßžÍÒ‹ü+x™ï‡ï†ô+ö¯4¨·þ¥7ÒúšAuø1à’Ï ª‹ÐÇ‹À•uûB¿À~ß¾€ï†øKħ—ð póozu’À€zòö‰pp9+Üg/!°…øÿâëaÄ_¼Jâ øqÉ¿€ƒ×ÔÛ~x¦¿Aµü!pÊ5ð‹üº‹>9ÛmPÇ»s|‚0òÏs‚ÿ'òA­ø*°^|¯ÒÍÅKéÔö ?aß Øúí$p_à™^õ{7Ž?“/ìC€Jùg,på6½JÇéŽNyMÏÖ O^ø÷ñŸJŸÈ½¯W·‹ò2¸®“A}DËäŸ;_O%\Ò›¿Géßù³ ¸ùµP”ð¡#õy‘þÏÿH¿Ç5ý×Âÿ…"ýßìMë¿zõGM¿À%õ(?žo§ð½×Ã^öï}TÓ—¢œ$ÿZôê}Âý©ÞŽï#»+J#°÷7u†°?|»›:[`ÝÍðéý¹À^ÀÇ!˜#p#ðû"¼7S}PlÏXà™ïÌVq:†£€Sþe`ßד¼$à¸ï%ÜÏÞèúEä—{›DyðTæ¯ö4¨ÇExSønrcë}„—­AýEú®¼TÈö¯“ÿkèÇkzõ_¸ýÀFÔWÕÂ}-Éñùw'…õå\aüóuS ü%Éæ¦Ún$÷7»©wŠð¶«R}䊆.x5ßoÃò3pJƒ#~7«+øY¾LŸÀ~Àq&÷çå/Ø_âO®Ta/äÝ ÑËMýAä÷làCÍ»¾J€Ãà^'ô¿„³õ‘à·Ç­pÔoÏôq|?Kö/‘<Ä/Cø·Øûw½ú¡ã÷€§À½·p_ü¤”?Ç þöõ÷7Àz)?ÿ œ¿ÂQ[€Ë¥ð¸A±Ë¾+W°[ؽCÜÔF¾@àoéÕh¾áÀ)ƒ ¬¿ÈêSàR} |ﯞ \rÌ ž8Øïr¡:åî>ð”…Zýï¥ÜGîouSÿ%òÓýÀ«V8ÊçJ’WeP»híðúŽöñ-àÞR}·¸–Îèö‡ÈýÓsÔfQ¿¿Åñý0µŸ§Éÿ êp!ÿÙ?®WŸò®ï]ÁÏE'yH_ô_éïƒþLà¿ø8ø¯þQFêo¸ÙËÏDàCµúÿ»ë ±$»ê™žKâ"V2‘îz{^ý}õ¢íž™ŽÓèîÝ]Ju½ª×µóÞ«šªzýgA?H>d— QˆQȲ"D%‹_„D"E³’/Qü¢ˆ0"Âêý{έ÷^wïf×Äýàc¦ï=÷œ{î½çß=·^w]õ}?Á»€Ÿþæå–#㇀ÿ ý×e?,ú £Ö›¿Ãó?6§ñ“àÏ¿^ný‘ðû<Áß¼ÔJHäXÿ}¶ y™Æ{|©õ§"ï׿ù¯—Z±Œÿ{€ßÂø]™ÿŸ›Ó¿ÿþ°ñ!ã¯ÿîk—Œ÷€[.µ„þ1àWqþÓñÿƒþYüç/>šúã5ÀÁ£©ÿÚ€ïÎàŸ|ð oþíû»øð¿§žð‡€¿ýEþû²¯ð|Iý~ÑŸ~úÖ¸õŸ•|“`ÄÃ_ü+€‹ö•ÖgþUÀû3öú„G¾÷s‚ðcì÷þ}úoœ×ÿ­öq]à¿Üþ ÿ¾ÁøÕÃþþ;À;W/7ð?>ÁúþVÖ÷ø<ò“{¥ùàJëcBåãóöý!Ào|‰¿ÿ&ü¾‹xôâãÓ¿¯'úŸüŒ÷5ïgÿ:â‘Æï~õÚåÖë²ß?ø  ÿœÐðšÀ§€û3öú àb&>ÿூþBÿâyZZž€#þ|VüíO¨?ä«óç¿ÜzmÜzúÇ™ÿ·?úÚ¥ÖþïI/7ùË?þÆ#¾€Æû/ÀßüÚ¿¯ÑóðK­›b¯?¸ø·Ë­\ú? ø—gòןüÄG¯´þPð€ßBÿÛÂï9À-ìO üiÀ?ü¹iþ8ü È/î‹*~ð÷_ œþû§ç·ðýÏMãÇÏŸ™ÏË€o ^¿%’ z7ªq4†ƒQ>¦µ•µ—uUOÒT½Krm{7¼·±·†€nÍAŸZk€b¥mÄù¨&uÒ_±èíjy8æÑ0T/• £É‰¡^úö'£Ñ©f½¾ukÊY·w{›ë DÃèú”kÜp-é(ÊÆjºy™ ¤*Œêt4ʇ+©±²f…Žksétö¸ôÚR Þs¥ô¥ ¸ôÑïæÞžÅPGz­+í]iïr»Û¶¤×½ýÞþÆšppm]:RzRòx®ãÈHÂɼãK©éïv¸ô„Næíúm)e_èÕ ìÐiÛj]¶@®*í®£Z©:–­J»Ë´®´úÜø[\Ú‚wÚwT/¢òÑÊ%÷"8`˜F$ص5­¦ƒVO•ŽÕæ²pé ì2ãS€ÎS½†ÔLžJ3à1T)x–]ì›JÀÚns¡te ˪ҙ*V·± ÙšÝNÉ‘`æCºb+”Ë+&RWÃ3–ã2JiØÓ\]=C­Á®-¨.|©¨TTeÃtoôJÓ$û|1«Ó:|))s´P($£¥hC[1µ³Òœn„ P ¥¡oÒDn’joZq?Šó ƒ¤£šn1Fme¯Ý¶Ñ{p04Fê~È0?@Æ9$’P.Ÿ&:Ú-¥™ÊAR‡`çý„^*kY°»²àW¦ š^3¿²Ön·1I4E½œj£ü( Óã¾æ7žŒ¨ºý‚C ýTÂì˜!°Cn"mP ÇØ~á ªîÞ¼cŸAºÜÒ å¨7e« ½BœzÚdqUݨ@G+¦Û¯³ºRK 7lF£ZÝÌ-2#ÿOCÕD•3Âè"pk´¡P‘L”º´ø¹”“UµJ£©%šc,¦ˆ?mœ(ˆ½=Ï‘R‰¥‹ýVu™DZÑùЩTa«!ƒ©jžA"‡IZ«šq˜œÐ+‚Ñ=>Lâ!½žßHÆ´N,—Žlª9ŸÔIªkÒ+#”é2t#ž”$÷4+«Z½ž.@W Ke1© Õ/dËïaN÷¯knX1‰ŒIiù'ô:^†å’uôÞnÅuˆ™Io<ß4Tª4´&ÕU±Ò?¥”äÈù~ƒIJïÊO³œô¾ÄXìÕ1Ž”'„6hÐ"<Žˆ)ø¦¢P wÅ])}.)iU¥´Û¬: è¡Õt5Á%Ã~W)Óa~lˆ6kî(U;­A·ÁóŠÔI ¦„QÓ"Œ£qÏ+úQÍtÊIE×tezZРñQ]„%ÝËÕ¸à²Jx`¯+ÓÅüT’"–8ìφL'èvtŒ16šwЫ;Ó+è)é³a²x}PŸÆ8ÌPVFÇIE/°'£ c¬ºLŠ$ªUµ(醂ãú´ ³þ(Âì0ÊlÀB@Ãqÿ´H rº:¼ô¨ ²P‚É´`¦%oêÔe ÔBÄCÕ'P7UªWDcÍ®ò™R"jVæaÔyØ?ª@ÇŽ4÷ù*†ø#±÷¨*ÿÄ\À”ª"ÂbÒdÖÁª±P?™V–7ìÏF#þÏ3& Ž/ô@%é‹…Û$dòI6 ìág‚¥Ws!K5vÙÂt„¢ šÌ‹R UºÇuv(u˜@} kå" r˜Ûµ¹p )hKÊr6ÒF2®Ã YNoì ˆ„üvn4`s»Ž”lóÂîƒhübVŸÔÔ ngW󬶔/-éûÍrtà7†S‹ÃNë¹ÒƒžÛ¨Ò•RG^i÷=)¥½##t„O |it»Ðw-)=£*ãp:‘®L½Ë„¾,Å—%ø]T¶F¥èÅ—(ãv\)m)y"®/aÂ÷¥:_è|¡ó„Î:Oèdá®'t®Ð¹B'‚rEp®Òutx:Gè¡s„Î:[èlÁKuEu®¬Ÿóp*ß|[ðmÁ·…O[¢±˜ŽÓ•(ݵ¥| xQ˜:ªRè:‚E;"o§£ñÂGä툼ÕáJ•–¸£ìžì ž'¥ÐyB'†ÇO|¨:Wè\¡“ÔÀqô.#tŽÐ9Bg -x±ÇÒ»˜ô·o ^â€zè£JKbyWÊŽ”ž”Žì ‚>ÐxáÓºŽàÅ¡ìŽàÅÑl_øˆÚ"W[äj‹\m‘«-rµaŸi¬A=ƒF0²!¸¼HÆMR,úÒv"öCÏncgcÛ—0$srÅÉ]Y‹+ktÅ–\±1Wdä‰ =±UOlÇÃØ”MûeLêl¨R÷ø ŒŽ¢l(IJ]NÆxáxŠ(ó]ÐÕy&­ïq¿'àp°ðUì„&Ø¿4äs„bœd …¤Í},± Ú‡é •jRèéŠéÙâú¶«UØVÄØ§ÄôØAMÛ¡§üi\哯óHm<¶D2;Í(Óy¨Ô:´Œ£~ŸŠ’3{J„5*qÐh¢Î êhLEÇÀ®:ÎË•}]!(NhÿTI•O6Xê§M¸:¯âL[ÊVˆ~Kd‘y`¿Îiûf¼ÕùIF?iy "¤Ê…Ù| ²>_4#fƒ jî§|jãÌvEe²œ*Pb@€ÊÒ€ıM7$H´ú+„Zq EWÂTU‘Ä’¼Ì’Pm¹dñFò0,†ÑXšZ¨{ÂÐ'ª]´aÐøé§ïÜÛ¸¹Ú+mäO‡y2N‡¡˜`u!FšVIƒœóÂQê\:>|€„1 cláaZ&‰´#qV·!娢›rd¥ÜZ$‡—zŒÓ]_4Ÿ á²ÉFxëù­ÞæÆš´fj8›PzN’¤!×ç)†EL™mXf³þ¾qœ—BÊôáç‡ëg#]£*¸ ¨'ŸzG‡‡ÇF¡ Ù¾XbÈk,hÔé,ËJÆGs#¥ÃIuxÁØ`“Î&Uœ7* ‰†”p‡á¤‚ >›¨«“fy0¹Êt2²‰¨ ÙëObR¾â_Ž¢¥…*ûJ|ȭ˨JGá”C^JGÁh2¤¼yŒ£J-­°Ó0™pbG‡ç9†®¯"‹^z))#âLwjÁD&¡º+†®fÊËG>Òó«³”¾„0¨Œã%Y êޫ܈“áìŠ2ïQQFõ`È7+óñœ%g£Qâ„3šæ¡Àc–2ªNG”‘‚M6Àa•EwVÑQ"g•YrŠ( ÑB&¿W±„N¹eÈZ´dD¾´Ap1Ësà7yI·Fåy¦7;íÌHéðs^ÓÊ¿§t8Oð}7º3=X*èyéTë‰ìÛ!9Nxã3ã”XOtâl€ã¾Ž!_˦ܜv­f8ý$'Ú`&±Íž.jTO‚¦¶AnΣhw:ÈÆQyª®=ÓM8¨ãh¤Í3åXÁ±¶ó,g8jö8#Îù‚ú–8”áÔsÄ(þêY¦&kåÊq…Æ?¦ëøh%Ž}WKNŽËÊ>b¶šáAcžÂ$«¢º>e´U¨ÁAù¬»“ã¼85Ô™H¹B‘‡M(ˆ´xÕIsÂæ¦• ìmšÙÎZxk{O"íTe QÌ'ÝøùBfò_em“ìÓb0½ýžJ µg«ûùêÒ–:¯“ )‹¤W1¿± 8Ê!OÊ®gE°ÙÛØbºæŒ&ê&°ÆPô\hÑ´µÞ¹·}³w/ܾ}{o}?Üïݼ·R°›3]Õ ÚªN±'@‡sf™Œ°ÁÏ+"V~zpÖúÕŽG!….FËû9£J]°Ëeé)™™/-"ªaQ ˜h194²Ú {Ž) i^ë¬Ë~vDºl¢Ö̆yöVGS†¬ (EVp°‘‹™B«` ©”údj$)6†fWÏ)‡Ñ‹…Õyƒ',)ÖH•¥_ DÎ g\HïD!»¶2ìbat’Ñîý©£p7d–»6„·!‘DÔŸ”îÔÄ4§Û‘ ÿSwã)ç:‰S;­ÓÞ•¦Þƒt×üžQș޼»þ¿û4¿‡ôøi·ùK:âÁ–ßvU;ޱ.}Õ„£$8VÛ·=£Mßäø†ù¾ˆ{BÊ6MãEœTêw ÃF¯x?fô¾~LõAh 4÷žßÜܾw•3$BYœÕ&\ã`˜€çDºÕÑ\Œž<\Ο|iéj¬(‡ù ‹£¡™Tä®Ò}§G¿%·¿¾k.nmöV¡úö’ Öî·ÔuÛìíooÁy\Ð6w7îôdŒi»ß6³qAVºÐÃþ||ƒS;k‹¥åµ]*¶eÅ—w¤pmoѲ›·±ö­½ýö­ÞòÖæöÙvëÆ}t£©.÷6{{jÒË»kÛÏrmsognº›}c¯é··q‡‰oÝß”ÊÚ&ý__Fªv<8¤¢Î‡gy87 æÞ‹Åå›8å®/ïí¬¯íîÞ Ôl7ÚEIi"èÍ󹘊«qø=ú@ƒYjžæó8×&Ýg‹“‘‰L̬“‡4aWÁÇý¨ìKó²YMŠBѶ>ÎÁ­JNùbˆÐ“˜.Ú6ÑËŒP=Bˤ‡YÙ¿ËòÀmµ+õíõ­Åî2YÐê‚@à´9­ÿ=\¾ˆ<]ã•äáJw óK³iª½jñúòõ¥óÜguæ³ðîºàÃ~|1}ÏÜÙݾß4ooïšûw×õúþîÆ ½ýí-sû¶ygwû™=ª‘{î½ÓÀ7OÍýÉp˜åæN6ŒêL)¢7„ÂP)#óv^޳w3ógùÊXs+?Jè 6Ó­Õ­Æw^}I2²,½:‹„®Þ½F¾C—s™§ÿ.4rÑÀïI#ï4ó﨑ùÎß…FfÁ »íö¬®íÈ]M: =µ ~JgRP,,FK KzK`T6~8ÉÊdQù¸ –‘ŸVõ*oRÚ×á•t“*njϚ FðÛË3£,/`SL*=MÅuaÚ‰N’a•L”ë.Z˳SÒ³ó£=rºª^ÐÆˆj 4õ\ Z´>i-QY¸¶°dr³ÎUO¡Ú]ïÝRtÝ"6Ãli9[µ–}Œuý=|h6Öÿz6ÖE³™ÛâšoÊŽ •a½‚r‰ê«øq‘4˜áÊ0Y±fC*7¯ZZéÆÖ­çîÜ]µÈ\Ú|n}ãÎÝý=³·§üjcÍÄÎÞx×lT˜‡µÚK2µ™é3[û½Ýç5ó…‹88spæ§u³··~ËDØ[yfežDxÑÂÑüö ßß¾§Žêúnokm}um{ko¿·µÿö‹¦¡Î-š)®Ÿ Í0ö™a¦K¹µAí­ï_’ËYÆ®Ây[ö³’švµ–æÌÍ2Ó¼D¾¸¸@‰¯_שX–í´ÓLçL„zoŽÄ«lÔ²¹=ŠNVÿ‡µ«ëN[ÙÙ÷ý>W±ÁlCšìµ|aÀ¡NÀ&6ä£w¤.V›ÒpöÅûÛßGš{lœìô¬ÝÀi$FÒH3† qœ=w·Ãxè;ˆ±O[·¿?·)«É¤jÂ4MÒ¿0‚6߈uúÂßt>«®}ªÓÃÏÅæûJKÖÁä ÜàÛóIþËâçvõWmz_tä ¨ÛÓ·=z›õ÷Å;¡DF§&®AWGväÚGw'í‚'·s”#ãü6Øøü¨‡$_Ú“™•š ΢é—'Æš<ÒôˆV‰Å5ÊÚòa-jˆ”fû’±*C(¡E= f³À$ûÈ>WÐó|þÁ“€¦û— ¶«öApÐÆÊÜ.á×_¬sß}«Ë¢®Ëßz–fDól€¡0"©W‰šçF{4kŽehFUÓèW5!éåůt%îæç|ë‚‹¿n*è³MæZÆ_·4i‘³ý¸iëÃ(ùÄï{W›7œe',Éí8È[d+D©‘9þÞ±½a0MK’–í¥ÖòñSý“BGZÙ„Xª"tíWmFp•>N1ŽbÝ IÒa³ËW“(Ë¢xÔ>Ð(¼]+ä¥iij4ÎT9e^)šñ(”ñwŸA¾¬ý °ê ´XR6 q=Ð-—¶åM”ïd„*¹bÀ7zfìáy­#ó‘àÛ F%IE‘…"¢–µi0QúÆú“…½Eº(¦³³ØÖ® Žm¶»Ã­Šp‘ˆp‘R±tQèD„‹*Nã `ïxp¯IŽwºBè|ñ]‰àX?lW%yõ{{»È뇕![MR¯½xøn}PÓ#é{õ{0¾oK¥öl) Ì4ú½Ïm÷¤÷ùóI⻞;TÞ ›#Žä›NÞD7>]Uàp¹VÐÒ0 «a0H2FVœ7«çíæáÝ1Ëc_srnGA6·c;ždªÿ;û^%ЈÖyF“0Ψ֛œS7YL\ßµ¡fõäîÀ‘•G}=ô Ã=Æ4F¥PìÔ~X!§‘—µnŸO:Æu›dùòý #6#ûÌÒ–ÏsrûH‘AÇ ¨SNY”ÀE\Þ@wqÙáÜ¢Õ“ÅBº6‹â9ò8\qûÑÉ“Õf`¯í{ûžŽœQ’¼ Ö…ñÂ|ï 6û¸}22EÞOBº¸YïŒ,¢Õð¨§T’Î&ŒåÚØ<>/þ†-“Y?>mÖ‹©U‡_PhûæÇdîþ±õÇ®³\߯Ð6'bÝ—û|Ÿ/ÚÙíÄæÀîÀl'— ¼ÿ,Ý‘5Øî^q¯¶Q_$ ­½Î{BöR£˜·Üú…¶c¬/ærõL3l‹)A<ÈÀîcþIì·îañnC©^÷˜õöÞ¤`Ý#Óv,Éßy×Éq÷ õªHýªHº3—#±þ悺†ÈÜ.nþL/(ÛFÊðëçÿ¨‰—RÞe Iï)>Q:ÅŠb–<èÞñÍûîÕè^}ïPืîýûC1þšäþ@¹Ùž“ìacáë¬)¯¢Ö`zwN§}\Ó ÌõÚþ!Rz¹®×úÊ÷X ,Öd3;þWÈÎÛ3uRPq”2ydO"Šì†ðG óºf6OU|Fù·/&oš×‰\kþ< ¼³"}<ü¯Ç •ó‰*µý£‰Ô;‡£`™nG°‹q¯cú¾N”HÕ%³À™™žæë\d¬µ•qãø<ˆ<³|‘ZŠÒ„+…¸ðæõëÜ^½ „Zïƒ6®onœ&óûaY §]ªÚÄ“+4ãø›Q éØõàL?ŠðGßæ³ýl/9 Stßw›Tè®>É}ÈÕˆzlÜ;¿,_:”ZmÜ}Ñ¡•Øij…Y̨ne™—ýÜÚE]Nkì YõÈ}J²ÉsB3vdA˜Ãk‚ ¨" eIbf¿å"µ(ªSÛY{O¤PPTD‰m6Äo„•=/¼Û>ˆ“)~JË\ììÛýmgS»M »ûõß;3·pWŽf“àZŠ—†ÁX°±s6Šƒà7%ã¡ý5œª|.¼†OÆèFàý8ÁÔ)Rˆž~Û;vNŽŽ:L xgÕr:U‘ Ô.Ѿµ—öÊ^Ñzþ{±ï^í»ýdÿ²7$¢Co®½µ_ìW{UzîCtÒÙ·ârëce.7½ø·ª~yõ_äÕ.¿Zù"U¸Ûù4T3ï|÷âß©Þw¯Å5;;& ´¬¬zwнe§a.š·EfAãðñÖXÜþý¦¦fº¾ 9„¦' ŒÝÚÝóæIx-Aü¶µ°,ÚK‡ yÕ+Þ‘ Z{{ô^­†y·kݽèÛ¿ò"!¯:äIB~µDßM©—Ûn˜¿Z½ÄøEj-to=•zˆ¿t|ž|¥·øË2=êóÄûZtÕî5~5¸—E©Éiç4ÞÚÉûï|‹{U ³¦èÒ:ü¥Ýoý]³ÂtÛZPúCj7ˆ®qÛÚª (1ÙBw÷­>"æææ "²9åIˆi­NÏÊÇŠnÅŽ™ÞêÀR ´ôÙ «OnYiKVZ­-”G\aFÀb|Kë ¾w[á2ÛADÎ# º"ÞWïćnªw[š·»Ýž`¤zVЄ¼~§«¤,4E€¸$+ƒW펼[¿-õÕýþíü­¥Pñ–îX~ØI½üÛ÷åß¾#¡´Wa¯”=Ô±)t¬4ÚmãU‘Mcø"¾0Cíúµ–ùvùÛÃ’ÎÁÞQYáù»†0#cµû¶Z-QcïÖ÷Û{޾ Z…ܧ˜ÁÒŠ\›Aë;}_jÿ >þWž@zÏ+ °Óvq¡VlâÄyCZiÈú-•#Ol ©µåÜšê‰ò„ŽŽÏ­qµ عågQ\‹NE#)tÀÎ%ÆLð*dE&ó*7œ+áYJ¯c6ø]Vv‘ÎL\4]ô ¨Ã8.¿{y韘¼;þ~¤Ü’Ôâ1ª‡Å’iµrº xXîî–èz:Àe€«7å„™bà-‘’ ÞžTžÖ9™”¤€âicNcµÇ³6ôGÉ™O££¡z{¨^=ª³‡êTP… Ò~KR©MÄ÷Ð<Òw5ôM‘-0?WŽI¤ƒ¤q3«¨¶ÇŽUí°¡À境ÜD3¦ƒ¼DÊ×\0¾gš‚HCtÐpŽÇÉqœœ‰ã–qÊbt-m—š™ëÐ^z\‚U ':wL%{2ùpCpÒ¡NÚ+AÝ ô(‡þã1Ê ×<%7vz6xöãàæuÙtPWð¡¾DÓ4 Êߨ*ª¥˜Ö’ä®èù|\×üîɽ'”¦öüàEî:í­å“¤³/É(Aí¥ïúËäƒ,…j?°$ŠMÚvØC;´#ûŒN«_úQ|…`¡1Žâ‡ Ùo„¾Ú©þøªï‰Q¤ã­hGlEçnJ»ÀüI;a³‹3«‘oÁÛì*°[{ì)°§ƒÿyM}AüJÒ¡=.Îì?>Ìb›ËlXÑÉ×V}ååeW=_KˆfôW„¶Œƒv’¶‹6,¥ÿw VÒœày¾ý¨çaðy'†8Õc‘XëDç;#–r¸FÞ×?Èoø˜Òè{rtkOeý»’oŸ“É,‹&“ÞùP€Ïʆ!m@Ž(¥šä3:Á²'3Ú61ÞžYd‚¦»}R¿Ëç>|ôÉp{nLjc¿8#E©óµ¸Òx¦7êK„¶é5HØãô}b·w„Ž¥žcŸî¢NÎδÅÜ/ÚŽ4·GçoL§b~ät> äñÖýöçóšf‹3mãyqKOÔ ƒ4Fç|þÙÙ'1žœÜ7c´Ù>==RI‹çÇ²Í Œ/1K“Ë çq`Äs\‹ 7 c;È`@‹¤ÉÜ(1Ü’Ðä񾃣ª;eBåÏoU{’|2ã4™ÇëB1ÕôNye8´x=0MšS„?ûLÄ×H|œ‹3P ´èÿ¸yx4žPð÷œW¥a“’¼EæsWÌ›~<¼|^·¼—üÃña~?ì|^ùŽ:q;EÅO¢W¥†’g§0MÙð‘ýHú–´ùü'KÇ¢OO[ÿeõ %¬ŒëêxÂæÒxyüù¼bœÇ'Zàyz4–‹âd;£ã“gJ±òËb³–Ç¢‹‡ï?h[?ôä?´QsBúñ˜Q‚\Â삆 dé&~ià0½Ñ#á…KºÜªË‡'Uég¬4›°ñ¾¥÷ ìá¥×‚rz#?¿ÊÏ”?KK9™éÑ©x¸­î6½g°'Vðæ=à×÷€i™«»hââfIO}<›E>ÍLikù{ýP…ˆƒ[‰¢7{u”n ëDâº:®£s-A¸²jI½Ù«£ôµÄÂ+Ü‚E â Eovë)1oXu¾‘ê¹<áéuÖØ7ŽùæO¿î#kV (Øì ¶°_–)Œ¯N/ÆÀxÜ:Rжúñƒ|ú°ˆ bl‡£=Nˆ[W´ºåVO´zzëVPØ–)l…m™ÂVPØ–(³Êê|ÚÒŸœÕ·ÒÓ£] ‚‡IoM“ÇÓb™¬FÃå—Ü¢ÁãŠ%+?[£¥‰ÉíªvLõÆÜé<p9Eû×zš?¤b‚Â'ž¡ÜAI™g,†:ÿÑŽ›å“, Î|Ãhr°ß‡HqÁé©Õ*<r !‰^LÃÝCtäèäkhx{ˆ®¢áí‰è4þ9ïç_:AÙxì0ÙWö(˜Øýpf÷³ {j_ØÑ©-URÑå™ìŸ&ô¯Uú'/Óи SšÙ4 ᤕÝ9ùì¼ÑW6‹"“Œâ$/½ÓdŽ´6ä/^ñ™¥úæÕÀY(û~IæYø%Á Ð/ÉPÒ/‰?ŸNÑ<Ž&ÑŒÉ$§§-âB¾ŽCzBD¢Ç±‘E_Cú¢G¶¾”ÎLâñ1N®@ A<‡F”`?lξà Ã0Cz}*!0 ¾˜·p(¦ç2ÏC~ö?Â~DdàÙÅ#s¦²3¦±Ú9¤ÿñ÷$ãù$ÎH‡5å|Óì’!¨Ë¾ÞŠÏ+~‡]ð'lƒ?‰Ì„o§ü.®a2â“JQ¾¸dpÁ7˜¤íìâÐiw†-Ç=”`8ýv¯“ïG~ ÓDߟœÇ X;àÀwù^GQ§LžêË騽^Çßa¢bÅñãüYôØÅŠ]4DGl\äÑ€H¸–áƒÂçŽ-RsÔŽTÿ£.‹SJü>úÆi-©êŸù4‚¢*äÍú8•}p—ùY30£¦K(ŽŠ™œ¦á”öjȧI–E}ØNÿfdâ›-ig€MØð•òræ:ÓèÔ03Œ€t€W—GÐŒû¾’sûЭ֧o@?¢?jíu§%‘0vÚQÍľj^ } š jò»‚ÌÂÉT Óƒs~Øû‚Ä߇Ö:ô‡‡ÚmßoUƒy¨øAþtÁ“ަi2MRÒO0Žf7m#N®øs, ôˆw\†Æ•!\¤­üïº5èÁ{øn6ïgƒ4šÎàN ‘Ý—ç%›†á°]ÌíçÒܪ1ùô掚N16tË1Dcn“ùxM!ˆd}P±/ ¢:éϸö´2Ô©èÄ!BzƒÁ -†ÉŒ3œfÆÕÔ6ù™ýA0R#ß(»šW³E&Ç–×øŽå6ŸT:Ó¦ ð#j aàE¦îöÆß¸2õØiEŽEOÙ'ôGág¼9‚7ÝÄ@ÈÁœºS:‡Xæê*ò¯ÄY ƒGGoMà4ªô­´Ì¶!ub°ÕdhÆT1¬#7¡ ‰¯iÉÓµDw$ Ô"Ž C® KŒ‚v*§ÔÆ¢u1À‰ªÜ™F·+µ™kÿâÌ¿(ÔwuækÊ”"ÿLÊÑæ°Úýâ²Gl˜$Sãâ¬yuÖ iYMpvŽó0H 8ÐÓ=‡ Š}¼"¤‚¤tØ&ÇMJ ù™+ÙÈ9rŽ"Gÿ˜œ%º1X cÉh&×áYB+alDC,ÅÑiîð†~H±r&½&‚á.i2ã ™ižêV¤'•©‡ä‰5®i!äM3i×ÔE´aF‹H9ñãzˆªóG‰Å˜Ç`®Spö%:UóvDM®$T Í àEJ @¥¨4¨+R‘áH k®ªÆ¬ÊK×§\®¨|'uDãåXŽë§N3UHÃè÷­´”$±=ÒÀ«)F_ôºÛÔR¿”º-=7MzÂ!p[)G]ºš‘ÅòÁ{Gü¢AQKôsYdàb+²;uàca Ò¤!ÝFq4‹èDyæü:Gôûü»vY±ÄË"5EøQG™˜¬Ö´ ­­JL¥ä¨[Vò–0¹àâ{!Mc`¨qœ!%æÌ‘ÊFfª™{‹šq—W‚n‡d×-¯#Ð-éáÌjñÌÃê"‰½¨ü•'Y ÉnâÆW}ôV=9&ÜYŽMµÉ‘ŠÏ¢~ïG’‰«ža(û>ˆ‘ÙÝ.ÕF,¯ðAd']ª—»ìþ]±@t1ñcß)r±øRˆ1VBÄ–JàK=½¶ÆV¶‡îv—íïÆ}1‡yW®”§–?¾Ô&||i!LFÑý\Î^X?b5—£±%ÛA“8~V«ñP :Ö$ì¦ ΋S·L®=q‹…vŠ‚4.ùÒÛ9{ÖÕ4Õ„<ç‡ÿQFvèÐ[×ÿ¹l›_ìY=™ • ŠW çBít£r(gŸ¨ŸEr›W2yž•WDÉÓ)yR%’‚¯ß´¨B¨ÑcK¡Qj¶Õƒ|`ËMþ·ùÌÊ/þü¬½r\ÅçT/ôâj8Ÿ ³+Êð×Vín¯~Oë}.è'„žW|º6ž¶Ïkƒe2èKq(kðÿUfýmÁtˆsí]saºVû¿øð¬ößMâòÿí}ksI²è~&bÿCí=7DWwóð]N\„°Ý¶:k<³±±ËmñÐÒØ÷Çß̬w?òx÷œ8g5c º³²²²²²^ù芩i†¡»ÆCßwÉu8š·t;˜0¯Íôàþm*ˆ©a&U` y\Ì‹\2xÁ9]² ÞeïÈu³¿ýå–K pwÿù‹cÝ×aT{ÀWhcáAk豦êïsq´·|¸ÎÅÐÞôÑ£Ö#ºzp ÒUЃSîÉœ‚tUõè¤;³G§ Ý=:~L‰eÇi_=ŸŸCßf.p”Ã[n „g‘Æ6Eò›ìåû ZGSoêa‡(—#…Z¿Nñ~Èñ!O= ðazHý õ.’§}ùT”^t›ºŒGÞ¥7„ÿßyÃsú|x>xýO³Ry†WݳÝãþIÁÔÂÑu<€_’¦‰ú+©9ë]£9+þáßëøÒÈõ·ò1‚(ÒSñœì¸cûB“ï>xÞ¥V‹¿;.ùZ³.þ~òëÍï+(×9ÔWô-Ùào©j¥/öi® Ÿ "¬Ö«-ÁÑ„}xcgËšå› MŠÉãx½¨ÇÚ)߸9¸ÐÑî{÷ëÚ‡/zkƒŽP‰-æ]xOT„Ц"õ±v)\søâ`¦È`æž9O—˜ƒ æ¶TGìè<=A~@óäfñ«Àoèž\{ÌEv¢Ë³Ä ÉñØ ÈQpyÄJÚéMOÂÁƒ¤Ñ_.ÿ ÂĤ‹.jª]”A‘oÐÌêô<€f–å”ð{7›n-ë+`À$âÌDYÎ%ëøætB ;!„N€ÁaGÛÁN3в;Tu¬$oλX·_=ì«/ð;§ï\è{ ¿‡USã9îÀ朜ۈ3aÕ®6ËÛì’ÈÓ­ñ f¬6V7z+1"¹Œg’¬C ÙaÙïEÀ€ÐvìÅæG™æ7íæGÐü¨ ùQªùQªùÑͪvµO7Ÿå7?¢æ÷јjuÏf Ûm0* »ßìvÉÇd™°ˆÊ%¸J§Ë®é¶Éî×^$u¹B7Ýp`T'£sR(øÔ^’pOÁ“ŽIìpP¿ˈ<§çǹíõ šf…¥ÌªÄY‹0ü?örD¸2ãsHd5åÎDÍ!ëá—/ÝDMÅÒk¡„ì4€¬/_ª†ðÅáNš[æ¤è£ ^„šb,à«£H¾»;ŽäˆH¾»«æ„ш¨\PôØ¢ª"1~ïô±»²:‹ý(¨Vï6šÌÊó€„P5¡Éõ—"âçØ4=‰õË—C(¹‹Š€büòŰbΩsÝ8Eäš'UNF¶b›íë £™.ä8¥¼ÙÎÜì Í%¬3Ñ*t»=.d—É s¤à¢6Ý'á¾ Lq&Òx¦Li†Q—iÖy¸}˜‚J¨°)[aô¦9íê`e·„]l½ªl‰ÖN´[0_OÛóÕbÞu¥Ü·¤üÎ ô&ã"€š‹ªwÝ»š:¢7ê㻪~­@$🥈Büõb^ bâ¤Qçó<•;¼(Á@¹&›­’ç÷e æI(¨àà·-c½_~\÷*½”Af†µzê€ò5jšžB’ê‰YˆI„Ty?B.C—cŠTèâEb« 1uÀ0½ÓUôÄFWüyA3uEÕ‚à‚Kž…D !BtD.§tÄ—2”®–=ŒûbyÀôAR÷{Z9\ƒlƒàî)îØjÜBÙÆE<߈æcë“õ,™Oéìá7¶@ œ"—°ƒGP FžhȵØ×ßJ†0Û)øUÃ^­ÖÔçÀú «˜¢ô‰zd\©zâ¼@1Lâã>náãY|±‘±·(P+üÓJçÎO- X¶('X-íÐZÚ:Ýqk‹L×Ê¡Åß±Øãt …\©KI‡:öZØñ€“Û©0Tºb7rïKiGŠ…×fo¢{+À{@¹i‹™Êâ…è¢ Ä¤ ¡qàpÜÙ%wlW“å%4hµÐ½ƒüX-ª]’âàpĹÕ/Êð+=âz@0˜)à•Jc?Í4Jm;¬¥,o„ µÛ[-ì¶ ¤8hºq‘Û¸>) %ráLj~ð*LÛJíÁäâ]¬}ôYâúaó˜"-jÈ‹A‹Å>ë¤:°âº*„ Vëžî¥¾I|À‡ÈÂÌ5 b=rháÁ–ZøÉZ¶t©N©îDtV¤}Y­Š?Öa¥-,Š·bOô(ï¦sFÃsûíþsÕàmùöa³g5³ü%;ǹ5y2®¯Sœ/¶vf_ñ\ÍIk:ûÝã\†é T˜·ºÏ»çˆHtéµ¥¾ÑÒÑ>x¸ë’ʱ!@«.ˆÑ¨âÑy©Žø|=9wV¿Ò ]¥Å©ÏÒ»K­9ä¹8áQçBâúºpu#NÈò’ç@HYž&BŒøèë²îb†ìY©iÖúÍSJjx¸ý4`tûÃÙ~^óÓi¿8C‡ójY¨Ëöó¢öGÔþÐm”™?é¶ÓwNõéw™…,6 »¼…§… 1­ý—í¹# rS0ÓdŠŽ[à Y÷O­ÐV™C·t§‰.1«‹Ï%Ñ>œ]ó¥Õ½¶Ìg"Úè¹›–z¢øI¦%¢ lˆ=aàC ¸G1îeÇÔtȃF#GÒz– IÒÓ½Ö+}š÷¬ÜÖËm=ëT żº#ÊÝw¥·IÖ«ôF'ÛÊ$„FŠNƒ­ÿÒà hh!|4²tÏËÈófqB±ÔœGÄ®Zš_Ï8àPóNêhCËŒ8­ðµ¸øïdY¶ÍéI«WÉÄ—;{æ<¢6³t›Ô÷_—jÙªC0˜÷»uX,ênÊgç‘éQ1õ‚t¤»/¯vh¯;[à—Q}ŒðÕþáÂ×`þ—4³‹Ž3aíóÿ¾þ¿n3¨‡AØ ÛmޱDðØÚ7{@×ûd!ŠÁvÊü6¾ÿz„äá)hÍ«ŽC<8æ8ô)±v#gô3™>-U2m=4ôqiOÌ¡P5 Ñ™# ‰»öÛ ˆõÛÐYm}ÖøNã¬,ºyæÙ1º*}Ìž< f¹ÇÁV2ÌÄ™'‡TÞ ƒ‘Ô(#ÇÌM«‘·¦ú\D>§k$h¡G­,{úã“™²¡×²ôâRéñŒ8 !¬ì½œÛi3¬zO +µ¡RãÆ;N›… ;b=qCXÍsa)I‚[â‘(ø¹1Þ.(ڱߤ¿\…0.f›€¬•„Ç5AÖ @Ùïg6b¿”„¯5¶^„‡…è[Yeìj¹›' ‘tÐ: ¢Oà[ÑxPú*_OaïHÉD’oÎ03úÑeÆ×ãNøçÐJ^&Õîlº…®zé¯@ÊýÉ_b\Ù²W¶Ÿòà%ì§Â»ß_M"åŸÄDE`Tݰ¦=à^U(CjŒ d_°Ú\Ì{Ý‹~dS½„xã}]ö^3pÐg¡Á¯QcàäJ­QÇŒU€‰,ŠáŸ6¹ÍbǨž9ÀÍF&²ãpÜõ-ß(<—“ª•«hܺu¤bE#©D¶$•_ .E ­Þ‰\[}ÍYÿ«‹QoRyW­õ{„=rËmƒ+ '1y–;¨uf¥¬ðŽAyíFç0Š@?T©Fþ©VšiÐ?¢ ÑŽáø%E†$‘Nõ뻡ß}gÐfgÔ  *Œ0Ë×LeÒ¥œ°˜I÷…ÈÙ-²±šø®s‘¤›¶”ö»ë&ëùâ«Ì±ë½Ð±3ƒv2ߣÛÂ{ç¿ÄSwÂLSGƒÇ‘mbhÒOÁŠ#|ƒôÞ§Åï D¬¢wy?«0^¸Ò‘¥h‘ƒQK•Ö>ʰ±q„NEx1M:E&D·ÉŠˆ©õNÅåz‡á¶8}¸ÞU«'}]Œ[Å4¯Šù6"»X`ómÜ5§~?U OïD1ß%IÆ+¨[ÅüTÛ|—l—HSŒ§Úæ»d»Déb³=9¹s³òqŒütkçF=ž˜¤„½‹“6(Áñ¸'Þ]÷^cº‚FÚIï¹ )’[E –—㼊AÝ­Nè…ð—7:º[:ÀIú´Yש7|î·aˆ6êm1‡ð‘4[¡ 8çûQ½ÓÜ~þ¶ÃF£V$­N«°ÄÒ®žr^ï´;­fÛãa=hà6jnûQÐñx»ÞhG‘ª$hÔ;­  Zˆh6½ ª‡oyAHmWÔñ‚fõ và…z£Õö°މ¢ÆDhÕÛmU,·±Ý‘ùÐ’¦ïE^ÕÛaË‹ …þ€ÍŽ× êQØôšQè88kvê-x-^-@Àý¨ãµ dÓk±Ðkõv£¸ ž°zÚ†6Öv«­nCùF”tü:çšõ¬l4ƒ¶×N½Nú ú†f߈0{Ízˆ}MmbgB7†ÐŠ`ú“·ë-ÚàùõV ^üÖD’¡í~5w ©†žj£ý€ª AŒ‚V=àXŽHpÇXYѤã÷N£ÕÄ7aÚä‡n%ëAþ@àtÒÄ?€ƒGÀ4yÚ¤ioRÄùM€„‚M좃|µ‚:ðÚÇ.hÐa¤»¸¥º+`>vÔÐnÂÀ:: ¶rü ÂàA³…¸É­CgòHk;$’6€P9<†ºÛ è?Þèàf¸ŽQ›Š‡Z{)ÀQ35ð¹-åÀö‡ñ€b´}Í-ìoQ_µj7B;a~ø«¥~á¯kVñˆ·ñW~5<—4¡ŒÎ€îó€™…@BU€Tö¤‡RToµàÈO½À?|à×"´€£ÈóëøÏoã/x c!ø×.Æ!8r ´þB‘ >”8[â—¾º€8Êw(e$@¢žrH¢‹sA W. ;H{1 0×"qqY‰!@ÔØVPa[‘"<^¡‘P°ap±/ãBl§··‰4rZ,«…4…d}tAbì󆿱íýfiX3”Ë!ËëR‚ª•üBRqðÕ›Xuɉ:åàˆ®G½XÕ„h¸õ+tùÐ6ƒWò»¥Þ >t43‚´šå‘|8ž zþùàJX˜VfoÊ^ùÍ \&†Zù"¸³übgø«¿.ñ×½‚_—°ÈñV¾ìàð5üê]À¯1beWøk ¿úø¬w}reö¡× ™š|vø‘®W@«äW¹4^"Pÿ=üúß¿ÆÒ¯±A=¬zŒŸÎ°ô»õËW¾FŒšýŒñÓåG¬kš M×ïMý×Èä«s¬ ›ÞÇO11¦_ˆlB¬E?`£7å>’|†-¸À_},|ED ê«¡©z ŸËlõk|5ÁºÎ‘æ7HéËLäg|qpo°/'ˆ–ý¤ððò5V1Âjc,s5ÁÆ8¶h‚w…(ΰ Wˆ»‡ ×—ÅQÒ_~…¯±Æõ&q‹À .¯Lk®ðAéíã¯3¤w€”½ÂgClæ%pauäHÎê©E0=ÂP ‰m®§ÅÁ¿ 5®V1Êѥƭ†ßV»bNÕ— â‡Èo1EŽtšXü¸–4ÿk•j¹*«õ$bOâpð¾á™±õƒ>¿*YßÎG¥l='Õœ‡A•É*é%fbLç]ÆcŒ|+:”a¬',T+{=î•keƒx<‰˜T˜Æ4µatèÊön"ÞZ–™n3ÌÆþšt‰hŸÎÕ FŸ½Kõ®éÊwÔ•P´Š½ƒ.ƒ²&E(ä³ÌNs¤#„½â`Ù‘ MžÕm²qCý€úP0êBgo]´»Þ`.eô,ò®-+”c¶£3´¥xX3t@@?‚t<¦0è¬ð¸X“Éëj£s g¾åT_ÏS$V¾Ø”…oÂNíû{L«p‹¡›LV…Ùt‰æ°0‘BÄÜ™áúbû[TíÆ+oô@Ø%L<ûýhÌIʵ ª£eõ†Ðwͪ×ï ±Ô!Ò·¤Ëõ}|Ýçô; ß!ýŽèwÇ(P1eO+E†HïÊ %"Ûg7H}ìÜ}¡æ^”}‹3‡øszvtònåð+{~è­Ä …ø úgø»¡Õ˜ x3Î[vÅòö¢¯qü$¬oâ:£Ï>M8#xÎcÅÌXÚ±rÈXQ|‹]²Z-`ù;eÐèUŸ`™ž¬,¿FÛ·8ùh»×Ùã~}«“ ÞP£1ªèe²-l±ƒÜ$£–ÀOû…Ð|IN#‚®o_ ñÐú–uÙúa…^Çè gx¤£Š-ܨb˜‚äB`7q}kXðÅÕƒÐ_ hÍóÅ X›ØŸ*øžºW¿Ç>çjîºëÆ%\I ËùhÙãáSe‰<Ñaß,ûØGôò” ð„v9oUvTÜ5ÝZÞ€›§[¥>¼Àn<¡6.‹ÛH¿i\Y¦[*ÿ¾0-^º)¬Ê>OÉ\øv®ôéÖLçVH–Å\DvÁÐ+‰x˜È°z©ÛQ•éîV#­Iõ‰Êí3ÛÎü&†æV ÍÝJìP„3©ñß'÷ö%ÔŽÎÊFX%YU ˆcîÜ#óÞŒQ"[EÄ‚¡B\ûXÿ;ÅÑ×*:ö²{gÉ_ÂÞå!¼7^nãµ$ppr¢°wá8óà¯ÓŠ%'òóÒŠæB§ Óí 3\˜Œ]¢£¸%˜WH„«Þ§v=ðZiö«:…(ÊrŽxÛ8<›êY^ 4ÿÁýŒPV¿S¾y-w·¿î?NÉm²ï¡¥æ»çÌh}–óƒ‰k'×=‘7Ts°~·ÇÎòÏ7“SrA£çö I!æ“óH¥×XåÕ¨ÒóÎᕟWòÊááл´ ùai_KQëwLùG5øƒs'¤®;Û ëÁ‡ Z´Ã§á\Ã൦†ù¹Û¨¡ÙóþÒ=« ½ OÞ#ú ‹øóâç“_ *ž®Ÿ[õsrÕºfȲÏãçÎ6wþÜd)“åݾ͓ƒËÈ$a«,y¢,–»N~~^³-1yÖ8:(&Ú1E¤Z,ÇHÃEV,Y IÈÊÛíÐ4{ovßËš>ÞÑd2’ÉR¬wrÖí³ ˆ'i áèüýÅÈœ¢2ù<Ÿµš±Z\2Œ»È0Îa›=„º,†õ»ê\Š\zÿ³G¿{N‰ç>øðæ¾Ñ~¿•€ŠÀ ^Âǻ ¨¨ý‘ …+bl¥ƒ@/0\¹±Yxö þ‘v}iG@›¬Ôf©‰îûöþÙiF9ë„&´…± ÈLÀÜåû:¤¥TpýÜ»|ûš§?Ò7GA}º:ò"(ÓfŒ-g÷P¶©‰ZzpÓøôλÚý maö«gA û]÷Λ›.<±î*d2'  È:½¾2r¿¡ø ~|P×÷jƒ`²¹­Pä¬dU ·»Bè]ß·_¥Nû¶«î ÓÌò1à¨oï¨ß>ÇÆ|i] ȯ¾¨ðZâWOˆõá¹sîÙÔ°xª•Ü“rli—ME‚tØ“¬v’lkIkDv*Ûí·`kd!Æ£9(…×±Û̉*µÛ·kÚ2Ù³òÊ#¢Êžúd•´ã#ï=à¹_xNçÌæ„"Ô”#}*¤‡åÕo¨zyÇÜhp÷ˆMÈ ý>iÔ•ç¯ë•;ŒvÃ![Ǥ?Æxúxî.¼ó‹!^Íác|îÅã÷Þz±ûÁk?úªÑ?½ŽÕÁ|ÔIÔ]Õ:!û ‹Œc뢲 uØàówð¸ŒÏñ³}/Ó±\Î5æ|&ŽëfŸzeçLnúºmìC^œr}ï¡6½»#uº\b˜[°ø…‰Þ‡¹oAÌŠßÎ>IÔä×;~^ÍtFM7²âÄÚŠ­l® `§¾KæêZ/7»®ºÛ´MøÝ¢yçž°ôâ¾ ”½ öíÛª‡{@jMмÝ(0¶ÛÉóJ\͘ð–Ìò Ø”‚x‡W™1‰Ñc÷âÞnÑ QàIrbK÷8'Icú0¶‚ÿ½ó„·6U\DŒ{¡ ˆ«hx±‰…wN÷Ôè”Wúº¾¿ut?Œ82‚O矖›é¾b±ÓÕ—6#ÇØFé¼0N\åô ¹4ìµ8\Èd¬î^sÒïç•wæ•C]Ý!êþ§áW¡LB%“ê©xyb7*ˉ /N¨pnE‰U Ÿšj]åCGS!&Ÿ4íË`]ýi*®ŠÈ x»•×fŸº«Å<ɘ;dSŠ}œâE†¢ó(. ¸½]ÔaŸ¦P€²±yÅß;¼ Ho§")Þ”2À hÓvÿ°:7Qæ6Û"ÆÖ 03aº±ÃƒÌ©∑¡ª²…ÌY’0P;FV¾Ø¡ˆA™É7Í !žŠ}žµ€)á‹´iHª5èŒ/N†£Íª;ÇûD3ÏqZbøç-š ¬l)SÁ¶aÎù’É!&žví"ª±-Ff-¢‚ ^`?&ŠÉ”VÊܶƒ&®owÐÓ »} jŠÝK1CvÅ«)hõG³&®aà±ÓñÆnMªº ²Ä£²T×OÕ³ÍÃŽí¾õß ã§»ó ,cô6pœgÿÅÕ SÒIFKÒÅÎ}mV«ÛÝšÖÆ8.`hÿ­>¼ kÓûòT@qÅ%'(îB *PA9-I÷¨U² þÙ‚Y´†¥‹lYŽVÇ%YŠýñ¡ÁDðøë¶ÀHê{w÷÷í¾¢¾P\ܧ($¬ªÜÄ"óä²jË ü;†pâè ênöy³XZV0F;jÞW0ŠØËä^Ý·ïØmò¿ñÅXI$ÆuÞÿ’«í"þáøiþcVí:ÄIÀ–—;ï~ÒJ¿ccßso¼>áÞ~³? s*Nã«ÑëëÑ{ÑØ sSEÄî7À†ÛmÅÄlê¹ô¡Ô¯ONË}Ÿ¡?ZB¿9ýމϟÑëN<áôŸôC|2¦ßýð³¼€:×ò‘ãï ô;_{ÀñG`yýÙêŠó¬| :OxFP×Ö\×”NÇ^,ç—/b…(õùÉöäÀæáG€¹ðUTS ñ‘Ùϰ.¬7§-x‡[,Ö-£XèE_µ9Øp³\Ì–Ó-îÓ€ÜD,À›‰Ýbñ’ý2ýˆ[×»ol±gÓeUüN'¨²·½þØCÿ`µy«]kóNÃPÐñÌ"W;ÔÍ œF)£HâZeEûƒ¬VP[ˆUµª?+Ãg\ÞájÌÒ¨‚ÄþÉÚ™×Z!@ ð«è¤¦G|’ÉzoŸŸêúÚ×»oÏØœöÍž €~aÂÇVXâ@eÞ ½7C?aZíÿÀ¬ÁÞv‘›¡cý£\ÚÌ…ïäú¢x¹»Q±á}ÞVÖº6Ìòøä’bÒ æøÝZÐQÛ¼®uµˆ ±«± Ÿ­GŸ†š¹¶üÁ«s6y™Â’ýŽ5Ìl8ýZ?O>}ªÃpÇchÛ1?€î:;¦ÕJÌæðŸìJa€uðbnèa£V+{'ß _ˆ3¡@Ãÿ…ÎÕpüª[šÝØÁusCü´œF‘Tÿ%¬é¼ :ÜV=-âH̽r•ý´Xà•ÿŠÚ,HqH" ^&!ZÃrR`å*JÇPHËPÙO຃®{ÛÎòV?3«^{¥æõÐÖÔ–Þ9&qˆý·UJû¡¯Óµ 2ïî^ÞÝ©h•²qÍŽÒAÖy_}»A*"ú“úæx“+º`†ž±1R:ÎÞŠÌ]×xû:¥‚+y|2ÎêS6Ÿ>mGË32ë¼xŽ·²´øQSÆv¹mK[× £0×–L†¹ödÂ8̵);®e”&åì‡Y“º¶¹N÷°$õ)çÄ[éqí })…«TÚ+O¶®(•ËsúïúÓWP0a6(;‘ª¡;Iß÷žføü¥¾¸dýÞxÄz¯ ÿ¡D|3‚¹ôrÀ†7ÐlqÜÿØ ßpª"ÃYxHµÂ8o>qncx…ã ‘pb„78e l4b£Édpù<'Òrüãha)DsQ] ®¥5¹Ñçÿ¡™Šµï?06 ÂëÊÃܶâCˆÿ°ïÿzûÿìõÉ|6¸Ïå(kø$ƒ ‘¿ÖOø+YIJ-ÁN³Ò|ÑÕçïå0ÙÝ–.wÚ9¯§rG³ÛdZ¦Õév±£‹:`„™Ò'’¨š)š5ΤxY±°…ø:uT¹ìG)I/òŽ¢”JÓr³}À‰DÛõ=‘•‰Êå¥)q ["-ºú\ù­É¢òj_v±çrl Eê¶²‘ÌMt¨)º1•sL-›^U†fó¯À‡·U™ ½gN<7ÞOö]ßÛ\ÓË]å'{¥nQsŽuäøõ^•=ýÑô CxcÃS´/^½•K;=kçÔôö­Çv â(Ú­&ûiÙ{k¥ÛxûÖΰeúD†k¾Ë;xâ:Ø™V™'í—ú°¤œ.Aƒ _UÛSÕÄ*†>zÜÙ^ƒ0àîòïô)w‚ #…àí´Ì:~›D¥Ý¡ï§B‘s¼Û@hÂÒ³—ÞòÜõNâëXèV.:øgçg€¯¸4¿T{x]™Ú@Šçb9ÛÉÍØ Ïº1)Ù>Ú‡Ý9½C P¯8W¶¿ ócF•5 ¡pqv@Š7§ÐuvÌ8 »°ÄàîÈŠ@*mFXvEþÿU@S™MwéÙL©¸ 1›n“ˆYr› žÀx>=,…u¿ÙOɨIÈ,ÕzzÜ©Uä œÞßO·ûdD.Ë"wzŒðã+ O6ˆSaAEúhwë;•éR ÀžP¢K†6Óô룜öÀ˜ÐñG²,¸d©VÍCO+®æ]ZáMTûE°nÅÔ¸uCÁ °^y4¡Ž¿ËBa5ýJš©ÛÎ]þgÚå¿Ï¿wi{þë—'JL8¶A$ÉÐq³Åòôª_iU½«þ5þ‘®'#é±òZþ‘_ûãŠI¤+h@оQúùó’=üˆÕ²ÆœâøÕ\¼Î©æw8êüàíÁA†Ÿö.d`Ñ ÇkÔÁwœë™ †m`kÏB+ö!™®{9Nv¦]Ç?í‰0eLp-eú>¶ïñ9ýõ°ŸJ<™ÂfÓCƒ‚ŠIÓx»"Í%¶ÿv¿¨ðª7›nå;zâÛI¯$L·|¢ž\ů»AÝý¨Ã›Qµ;­Ž3Tb°Ù.e/sGâÄçEáOsRp¦Ú»H9Ü d 39;% >å”]=ýT^8Y„/²‰…/D„K÷Q:³î+Ûˆ.ŒõÒöÒ|"“,æ—Ò¾Wêð‚ C”²o ¤¾0:§^Ð~ÃÌÏøgq@ñK²%^1à+vy]G—œÓÓ¼[ å\£ñÓ<Œ¤Ym/ó™|Ì2HèøƒUp"•Ê  ¤²r7…#oü†„Úª{ŠÁ;_¬S¦‹aÑÎÁ ›ÙÃ3ÀwÕúr!áÈļA¤$jñçE·¾Ö?Vÿ^ÈÞÆ:²Q€v'©¼¾.êÓ¹~±Xîôy®ð1•L—ä¸àŠú`ˆÌÐüSïú2¾|ý-aé“ì@”Ør1Ýía{FbÅ~MöŸÙ®þPï6Ò—À…qÉ5ŽýË׊7þÓ ~ýf‚aÈ{—ç°Ç¼\÷.û6î¿ úÓŸ¬›Oƒœe¢"Ù×Â8Óˆ0 °Þ”ý™s©·[2`ˆN!*µbUÛ’ûJË‘<ÈÙÞ bï/QOW»8“Ú‘I ÇýªT°*¦à|(n üz㼑“µw@1HÈÚÆ~JX2½ £Àc'Œëïë8 {—ÿÅcöËàzäp–óûͽþêš×rçÓŠÈñ'ï§6Ѹe@]ù{\Û‹8€vÈ©KeÎõ¹Û ¡Ž~Š'oØÅ`<†–A{&o®"ª½¾ÎÏ1?S÷•£ëÉèõè2ôb“÷èú³äâƒ×1aŒ1™³:·…׉¦ß»è.ÄÉjæÇñ¤wù ëžÇðµwA¬ãþóËQìÑ××ﯮFd‘6¥§¯ ýŽÑ?GæLM‡˜µwj£÷½EÄëu³Y¤¨³ÆÍ¸‹+ë»D"}Рaˆ#Éêaƒ}} |ó ¶}3ØÿìPþcãT{žŽ>¶Ÿá•¥~ÚÁHs¡¢œ6OTÁÒ‡çÎØ9—~9çC[<€@ L R©®o†z”rçÇŠ]XÜ:ãOªR^5ïOÈÓó\¸@ÁÉA!ÐEÙè2hÈÔµÖ/[ Yb¯‰pëÕSñU)¬W¬_ êrÁãŽxBéçŒ?=èƒïB¿^ðœ:.áEO¼Öç]ónE<¨žòTT!9ˆ¯€‚~|C$¾\O`¸ Gxã5¦kf(;¸ÄÙÂ5ó5 ír‹ÜKü†wZÅ$ª—ÞzþݯO›$ënWÆh©kÜŒ“‰p ’á(0°{"¼'Õy=‘ØÇQÍò ™Ò©;"óá<¯ÏŽÁ؉…•¸šžÒÂ*ó”VÌyJ˜Û1¨#{=fÊÖ¾£, ™YMɸ^o8"÷Ãú–!7eöîŠßÀ\]âWƒò7`gƒrMª²7Øû˸?ê~`ìúýhBf.ÖT_bX”N½Ì ÿ îVI:™:ƒçtÏ6¼~?ÀÙ–A05_8—„¸M¾œˆ™ uYìeGôÅ•½· Ò2@ud‚w(øa×Ù‘[ |û™/<¾lÎaVtä0‹ßwuîÒ3³$ëãeÃæ_#‡è¦ /€Ë`ßõ¹4»Å]uÈd–y¯Ä¸¤{ Q]*äOÉäñ þ²³Aãw,ÔauZWh†gáTlŸû£Wh+³ŽÈ¿ðEx6ÛüÁn½MºžœÀ6X9,!ºOz˜Q¾`úÉLA—ò‰/’ÖWâ3/>Ã|Ö'NþùJÜ÷â>5Ö›3ñæ,§`ªiëÕ{/~ïd¸?<ôsN ÁûÅz?Ý'"D³¹zYö(™9¹ƒy$yÇçyzÞG׿;o¹\¢ï¼vžwD© “"^6¼É»ÏŠDO‡Ké!$4È’‘GB|½'Á|îÀ|KCNCøfD‚hØÃ¶ò¿‘°ž*!\ñ.?ÁÇf6Zq± ©PÆï!Jån!„]Àc°]B7Ov÷0›± ú‰²Z³‹—'5¿ÑNWU¦ïY åy7-ÀsrŒA kš=>Ù/vûév¹Ixj%öÅï5 Óö†1ÍV| ªßô,—o`Ý–/ƒ‹6„qRÔpÇí躮¾4«xvâgVžxC‰¶íWöôÇœiì¡ ÌÁúÆ( xÜJGIÊbצcüž]¾ÝĨúb `‰½j 5µ‡PNø‹‚µÃ‚ÔìÕÅ`Ò“í6Û-E ÕÍp¤(‹û°¿¿`ãL10#ÁûÁõ/#ÒÄj¦ptZ7~¯>¾ïÆgF5Ç}£›ãTGñFJY÷PQIx5¸fW°ÁÂØaƒhÄ{Øfå³  íÅ¥à9N›@3£M0¯cm %#“bëq{è8Ò'ëÛ¥ppßáeÛžMÅeÈÃraö¹y»C`ÛÅÀ¨qi,³úû1¶[vŽC˜ö¯iÎÖÍ> Ìý¶¥$Í™_Ã6Ó] :q¨µ&Þº }‘‰rY&¯•‡u2+ƒ@û³ÊŒu¡*%‘ük¯·*x.f…Ϥ'<ÿ>=îÅ]¤ÿ*k"èÓËË÷ ªøQl“{7²‹i#< Q¾ŒiƒùOƒ¬(–þÌÎÙŸ?¼€UîI=Â%’$Ê2XêÉZIJé}ÌT¯ÄìU¯ˆ&Y°GÔ_R/Å v%{ÐE4º°K4Ͳl£b‹.¹ç§BãÉ`@¹_-ç¼æÙ yØ6 ¹gi¦y±ñjY–ᢠ°7÷Æ'}ïàŒj_-hƒŸ3¬}9®ãX£–G€&öÝqÚ<¼ oœ¡zŽÆæDMg?àŒ†‰Ä„ù"¨xúìíQf<€ÿ;nÇlºêÒæWOäßrçw"ÿ¾ yI|/(,®<è¤Y ˜K+¥ €jsûô1Ÿ¬Û“uzn]yÍà¶¹¶÷J¼NÛÜìZñF¬¨A6#}ɤ;\Ý/ÙÄ ÈÌŽb÷ ÷1r$ˆqP¼É=ÓUû¼;:nß"k£½ÈMY\xߘfä7”ý7m(ûŸÒ£¬a?àé–ç±Â.òßʹiQ²ÛIy|*ôVŽÎ…PK5¿hjÐÓpTB‹ÇÛ5¦WO2ÐÕߦûývô-Ö§éÍËì”ZÈÚoŸ’˜ìµ•¹P'Ÿ¸¥+‘?ì”`ÙŠ» :ÈÈõÎÔuÉá‹ÚØ¡‰s#•%6½æO¯øU™·›áuI|##`+±ó¿ö†YÑQË„ûqËÞïòQbŽq™9|º\-Ö˜Á.'°ŸÓªXF ð¹Ú°©'¼‘~8Ožd@Ø® ÷Rô¬ù¼˜ëËôKšÆ`2;ǽøðV»Qµ‰P7yʰ›[Óˆœc¢×­OL 9¾5r&TWÝq~¤ìœuMÎÎLèµA…úèkYôì{Ñ׎¢þÙè­YÒ–è¾u.I÷GŽe1¨aÞQƒz ol.”$vÒ{ £y á¤ÓzïRŽs˜¬$ªóÁ êò—»Æ‹-œša]àý–»èM`ÁÉ1NÏ)f&M3™ŒŒ-Çk©~OYôó¶°LHÖ³d®×êà)“º´‘¡îÔñésú.Ä\@§‹ÞZ¤Ÿ5 ¨!Ã1âV†6b·° >û=ÌŽ,ˆ-vCŸŒã³øBõ‰Q€6Ýp–7é=;Ç@ bÏn_×åíÙ¹‰•ݳs¿cöì©Y=³iGà'7í5k×f¶»*Oa¿ç…ðŸÖØ1´6æ.ehuƒŒäéÓ„ KXû9„^TLØ™ÁîFý>ìm¯YŒ¯ï5á?ÓÐW"ix¿WëŸÑ⃖~5Û´$èÙ“ êb\œ˜ûtdŽ¥>Xöç"#¼8J÷ÕÙ:WlÀ@ 0P€蜞ä\IÂ*Ƽ@¬aÔH*{êS|¤':†,{êÔÞeõÙnº|œî§··‰È |¿ÙíÄý^6oš/pLW»’Q67¬WÜsÛo½Ùî¥'¬ÈÃ,I¥¯ 9¿Jý¦=`AÃÁÂbƒ 'à3žµn“ÕFÐ×Òn*4Wû9Ë¡ŒÂg¯åµí0¨*q=¼’©.;ÚÄ×’ùe»ÑÙ0Së.bP[Üã÷W¯xæU ^ö«¬ék_æíÔ.x”yØ3|q‘ËƒÔ ÔŠ‹W÷)k‘¾ùö‰\ß"͵Ț˜),1MéÉlŠ×ÒË2súyK¡W1KŒžòÈcz³Ýã–ºú|ª'Á­ž±¦cAÝsÊTü¡ã‹;z#ÍšøëÅð&÷È…šùO‡Ôi0ŸL ìg¯'Xˆ«ÃïúX¼œÚGàÓé´ P'°‹ÅWWñkCô´{Ž…àµ‚Þι9¾´ª“w,ak‚ ýˆôE qØ`PÒ}”^؉`·ZÅ?¹ÁUžsDAƒN“s®À¸ô0Kp›æ”99¥Z¾ŽÔŽþwm­õö^ïÐmGw½CÝc(ø²]ë{À>>ìa¸°ÙÃÇdf—fêg³ÕÛéR&ý™M×ìãXÏëv±øûyôæP¼EžÐyÂàMX°z½b8ÁÂx>ôØÕÅ ‡wÑä5ÿÒFãW‰ê_i§˜¬o1 Ñbµ`èÉlÃñ*»‡ GÆpØTˆìàÉ2e·‡}¼LV¤’½Áö=$€åûz9ÝÞ.Øyh¿ù==‘2©Éø0å'í8zpòÖ»y¹r·¶Ï8¾=OÝGÿÙê!†c¼ùñµ'ˆ¾¾6Å¿žß%1&iU‰ šÈèË¿Ýn+ÐþKïVL ïþ‰>µzSÜÂmæªWT³F_%'=r6ž&F J<X¯Š–o5šJ¼ø¡?ÐÝÀ ëÔƪʨ³,žŒs¶_föÖ·%öU°•qM%Tž÷m=ýÊ-¯¥û5'3à……Á¬K®w*:NR}¡BâÈ'åÆ<ý¼£btðaÊV_èƒõ@âqaìFÀ…]hñ)¤²(§ µ9¹cdóëÑôÎ àEÊ )(¿šÜ»"õ>Cpy™Ê*zO±xéÁPºê„rå­ á’JgEðT!X’ó¤“8”ïµ¥õý®Û¬%ÎT[Þ2uöE—Þ]ÚãHJƒ:ó ÷›•ëgŒ?–¯ñ2ý|éæÉt»0/I–eå£2P‚8Q—áx·Stðˆgû}²Â M* ª{†j5â¿ã- `kȆ­!µ@¥TY,bÞ$¦™&•#ò_'f2„DŠð‰È>¤$á8ïèNZß´•è[s& Âúþ¡ E^˜afI@í÷÷^‚Aúª™2”¤ÓrRqós‘ðûûw—*ïŒ[$q]æðBÖ㬅W»¿aH–½Ì× ëoܹ™rÉ?z×)7á¦}Ôq¯óVÚ×7êLCÞœ«:ì{Û÷-UäÕDæwÆHw¾È ƒà©'ý ¢9‹xgøþb_] 5†ç˜ôÎ.ÙÕΉbÕ瀡Êu¾Nv]™4 2E«ÇÕU…%Ïòî‰(ʈÂ4UË©kLjG¹)¤‡¹˜Lt¢£Yf©+“'ê…öˆ°«3–©Z^’ü¾°¢º™uBJHpÓNW0Úo»²€Í=Àn`™úÛºñà²\¶'z̤®wt <@–LþÜ;T$”œ®/v/lPL+£$ccÁž;k³·tf±Ž¶¿ºëªÙE¾jã+8JIÒßÛJ è0J ÇCLùŠ1ž¡Zù)F, &¯?Šå”Šì1°Ã>M„ðEfi´éSnÙAC¤ r5ð?F µ3P_aÄÅã[Ym˦ØhѶsØçæŠíÅëM ªƒ!9óª]OÞˆZ?¢ŠÜãÚÂA…gË\ÅÊìôåi*à3íPénáCA¼!.#Û&šퟪ•B¯ÑOéçfПŒ®Ç¸«öÞIû‡Ä•8M:¹lÔ¦ð÷ȉÂÆ¡ŒÂ{ïªÞ»®o+.e¥s½˜=ÜS b+/;î1èHA¶/. ÐÈ݉òèç«éè|Éð†ŒÝ¥ Èç›Ñ‚ñõüT€= &'¶÷Ú0Ó1F¤è±8–¬ ¾£bg}%1<äÄæ‹`Á|ÀôÜX7Yÿ9ϹzÎÝçzˆçÄ”WÏåxÒ»žØA aïN¶*|Ú^;èŠbÆß UÌ…£ºi‘´¬ºÙÈgºžÓr©qn0¥“'@£w™:3î%ò¬!06^‡Ó#¼;&=‚–œWè¸EiœMÓ»wÝwú‹“A®à‰úlLM­_L`GŒ!Ù6R Õî;…ØŠ§Iï|'U®¥^JyD«1˜—[ã¨AhÉ…OM÷Ž.A½Wñ»Ô>·ÿïÜŒöËnîbÛÊq³”¹_BÇé­˜$=²@-iæIsQKšÎyÄ]j§ #½&ºò¯ŠŠd¿·ÈqÜípˆåig±3Þ}[=¬“=ž{aÄPR §šßý"îK)f²«~+¹½k©ÛôøW›PŽU *„Á”…6Œ«UuìÊXÚS¤"¢3[qsV§¡r%úêMƒÐó¹HãUÖaçóRYŸ“å>Lõa}\×$×sßÊ>çöÑñ’“Ó­°Ï³éÖú&ä…³„~à Âáž=7¸²ü¿9uûøšŽ1·]Š#M_MÐ¥gCÂXxþwÙ&›—È"ƒÌuŠ"ÎP_&œú²]É¿V½© 7)E~\‘r¬û#’ÛL¸l;Þo²út((Õ¯¿‡É»niñ%yÚåÂŽW$>ØNï1_ž…Ã3ES´ð•{–Þ îÅÉF¢ø9"K݈¿^`G¹œ:a= R,ַ̇âÎc÷MÖ8öx£DÏé‚s–J>ˆL‡t^·¤IpT’±|³Þrý6ʺçÓúolò™",cTå)eOۺŜnž.Gö°ƒ/€š3G¢%©;•—QÜ8a˜LB»Ë‡%æ˜èÃr«â›Ý†mÖØ¢€Bpšýl‹rM ªÿ7‹÷Dn<Þ:°GÂ{cM<©Z5ÍȼBR}«n¡4çÓÀàÒÉZÜE$‹5ÚŸ¢ùél!èoæªl©ŽC=0Š}BÛ½Š5'XÖw(YóUÅRÇÀ vŸH×XæZ^ø]1> ¤}à("ÞCUâïÂzéŒO ²Ìjµš•6:ë}y„ôˆ„‹¼ã…¯hÆÀN£Mö^£æŒ—Š—ìƒ÷³÷‹w^ÆäSxÈ=¶÷!¾À2<€f*ï–Ïߣ±4íJDf¥m*Š´] ­Å^n–[•Ã6-'¿“EhžÇ‚,Os€°@Y/;Bmí­¾8G ïÄ íKÞ~F†Þx_ìU]ê¢*ûÔ~Ü¡ºÇûÚMeYµºß ÓÔl\ñ§´„j©¹)·~ºòçßY¿÷wÙúÓŸØŸåÃò±U0@NaÌÅRågFY ݘ¡C&jOŒ¬J÷ë!àe&ñ˜]bøSÏ©fSÞòtpj["^Þ_žcîjäÓÓ<0FZA.®çïû">’9é‘x`¢ GrN=\+úõ.0pS¶XÊIûÆ“Ïî,k:ñ#•>ºËJÌN*§"…”ý ¢ŠXÜùálz\Dß‘Nÿˆ¦…¾B=WÅEÙ`Æ´\t; üM¿Gm,¡,™¥4:t†œrɲy×’‹\f¯róOÉÊfèÀî¡á®úïÔœ¤ãü€Wœf•wFaí¢îú®HÛÓ²®)­HÜaÜÓ üSùPù‚=-“ƒ)U;v—DR;2»»ÅY¤LèNWLoeò‘”Ãè'Ë}Ýoâ¨z€Ðrü9f+¡¸5=š†6-Uà³{›dÛÕ;Êïs'òýÀJ©#]Ú&?}xe…¾Uç&õ{†rUzëÛÝ~»YÁÄì½jÖCÅ;„›ü|5 äÏÙ.iU+•uöîoßcÅçöa>ǯ`¹-m5œ±g±™"Ö¸< ¸ ­ÉHwìóFõ•NA©gÐÚ%ó0“&×Þ1Y?æÄé]|°OmÜSÓ<ý_²7ƒ½ì¦QbÀ󥎊¼¯»×1Oƒ*qKçlI™°q"ÛÈCHóÒ#Ú’wpa勚|§ÌFgñ¼8‡²Ó¼ñÏ0Á «eKtÃF# ÆIP M'üز¸h¸·M:‡Ô¶ †Þâþì­7ªÏ4­tl•˜¶\ŽL‘éÙ˜&Fè¯×ñÍàÒÌ>²9M3’¬ž–WÂìÖ52 PKÿƒ¼@k!ÕBÌø‡ýü¾œ;7ËújºþÇÕ‡ÅÍ0„¿>þßýf#¤çð1 Cÿ¾4šM¿ÑäÑ>çÍÖXãG’ùyÀÓŒýá g€AÜ%«EÿÔ„£‹—ìf±¥Ì‹¼]o„u¿Ói—º?ö§tö­4yX.“ »J–°T£Õ\–q;ø°²W›í:)õë—õë:«±~} ð_¿^ºI¦ìõfy›xÌï”âoøAÀØ­7¥x?]~+ jÃ^ MaìÿßÝ­_Ÿí¶»í¬¾Jê³õ¶žìYeR—µW-øé'¬úÿnw~;§H¯.H«þpŽXûùÔÏÕ5ÌÒ½!ìh®zgñE<ù½º–óS*M>cJÍÍívºb¢›­SX;Ës’Í'iÅûëçÍÎö»Úyl‘`â®Òf»ÿ¼!ß ´PÞÀjóï |JűJ‚ÿßÃ~›áiúë¬÷;\`Ãc¡ÄA¶v¥éG|dNcv‹½©¥Á†Æh¶ØÒ±[²×ÇYß^–}¸e‘gQ›’Û’OÞo€$ÙâÊÕëªGO—Ó°p,MÅa˜J ]w"š4Þ¬(Lˆûï>o~U‡·›Í| "\Û|ª}iÁ¼xÓån#x°˜ ‹ð-´o#Ρþâ=”Ðv¥‰äI¥ùâ1VäÀ¥TaõˆÆ´åµÃ–õ‚¸Z%i:ß<F²Õbº{€>¬À‚¶ª1A – võš:D>,íDØsiü¡+¿z]/•`p°Ï‹¯ÂùíPH° ~ÄÝìb‹Õ4œÍ¶ß@í.—(œ÷Ÿ“‚RÓKJ` …YS|ÒzÇä Ÿ%d%êBdæ$$ ‚mž*A ¦Ú/D%Sj X¬êb”¹P´õ‡ºP’úrjŽÙÇ鎺‚´ÁËD¬rÞVë 1?ì@~WÓo 6Q8:?.ö¿.Ö°Uø˜/¥.øÐÄ ûFÕ%ÄÏT¨>.(ØÅšK#“¦0L%û¡fIQæaWN… 1ÔQgñZŽ›=n¼gÐ/Uvüb:û\"+%úlÞ¿I"%(¸5Ê•eô €Ñï02“â B»Æõ÷z>ÝÎÙªˆýÄä«`Áª º§¿YAkœA„Îÿûd*ìOL—= ´ý ™X7JÆN6‚A‡ä[ÒLtÒ¥^:~›mI<×Wô˜@Ja1K@Üg¨U‰²d+[º†%6§TúÉaï@¨Ù—ÍGP‡$c²çSÇå+L2 ºf"ƒ§­ã½ÔMÍ#„ª_ñªê‰i2 '¤S¤o R#ÑÃëOÆ”RcÁÌ.m7ö,Vè§µ˜jƒñµ‚þ¡Úv‹E)ùt¸±€iÅlö‚ômº&(‘ÛÉÖ’Õû)ê ”d¼¾/MÐp ¡=Ýà¸Ø[s(ž -ÀŽOKÄ*É“|¾Çì­Ò›uE+ÄO¿nØìÛl¹Aõ±Ö¤ê/1Z¦Cûa·LÊÇ|ç­“nÁ¦€÷ B‹Ùôa'*þfg~¿ir%ê"¨Ð\ZmQç|bœ©# pb±ü†#qûp¿W‚aæ$ÕÓuRótÙ’ƒ4Ib¤N·7kÙ¥ò²ÔÆy`]ÊH=ب7ü’¦ÀÖ·;öyú¸`çÍϦÐf½´J¶4éõRü‰}Û<°íÃÚé#’'èÌ.B#v”-Ú|32 6Có“iLI5Ƹ7Q±`‡£?T‚{îo”¶ô#Ìšódÿí%´ñ À&Í$ ¤ªR|ÁË©ä+{£ê^Ë‚¿àµñG4¡\/4?6¤"¡LI®0¦Ê}°³`õ(`aõ²ùUhdJª*4ÇN ¯‹û@ÍL‚-jf9)™1cÄv!‚ë‰ßéCŒ2<¡µÄt×Þí_饦j˜Î7BœDg4„xã0S]S¢aïöäœg¦x1øÍs:UÐÎÑA%ÐÄ›­’Ü7E‹YF£EU 1Ï8M@¢Ä‰ò^}…Žô±µ¶²UŽ« Í@‘ƒÏ)9Í@ÐgKq“lÉÌ›Ä/©Ö`ø4|ý&á’$ Œ!gñB5%+[QRg¨nÔ+!±²Ð#fº%}‹-~“38 ý’$Sr5̯ àoêÂYOÉZÇæPýä0],Ar`0Z wkvF^²ÆÌ@hNÔ+¦2)ž‹í7¥¿ý¼X[‰‰ÙÕxðóìÙù!G¯Jx£’µí}€ ö´Tûz*PÓoIÝ£´|§ÉÖMB¤’lF·ÿ‡è%e§v3"ŠƒÝ.PÉ.WîÓ5ÇÑš*W6%µ²q.^€;EROÊ•fÁP±¨ƒE_1H)‹·¾—õo”Ë åsžË-ŠPXX|„ð]ý'Ÿ®ÞO /Çýëø »òlÎÞžö@'¡#áNp×ÄxTDJôç¿Qâ.o s*ÍéN™ýˆÝ,*¦Å¼Tò«¬?¸¸À(â½!æx³Ê'ô »]:Є•NÁ>Vo³=kbÌêûüþk{Ÿþë4Äÿ¥¯B»Ïzýƃ?“Ñ…ƒÿ RÕ•ˆAØmx¾^ ᢔù‡œ/Ô·Ëœ¥±ÃÇgcóë Gð=8*þé“™žœðTG Íï*ÙY[X]ëYNìU¨ÿL8A¤É†çl?ð\ +V1%kC'‹¡B¹wÆ6™õͧÔrKŒŽv¿§mâò[Š š4×ßዯ‰•Rý ½†± »0·$¬.ÿòą ï0m×—ê_ÙŸ™ÉN¬™FZñÃH,_Ížié_ ïKÍ™nÊ¿¦Ù&¦~¡fÕÎÓ,;lf¡Mq¿¹Aå}”{³F!ö+â;™CKNçéNÄã;E]î>31;MÚ_Êíf–òùʉƒðãîF­õ Y.”D|Ü,mŽãÀ¹‡=Õlp¹GÏä{ôB‚±$Ï‚UòÕ)cŠ)@;S‡zj!PUL`IZçÛë<ÁXÝïw© ¥êNBº³«ú3kXv8Ìa3¢V`‚¹yCED KU;WÁi‚Ô¤éŸhƒ·Tý„˘ÿ%ï²ø±Êrs« 4;ÕR÷ú¤À$*ä1ÒVUbÑÍ•0Xø¿û £áÙ?®ŽÃ÷Q#¸ºÿóAˆ÷ýëþïŸñò?Î0Ìyz‚®“àeOßT½]ÛösÊámôJ\ï“÷Ù-j”gߨ÷éªÕEååæqAS^ AÞhàºï{ô ê=¹òôÁ¿³Ÿñë7“1ë™ôE@?Ã’žÎ%˜¶mè*{»Ó¦wcÇöf©F-ÛĪ7dBéïŸ`Y_?ðIBòü¦r÷c[˜ô.ϱ{âk6®¿¯üÕÄ' ‰’Õ©5¿ÞiFA3ç•ú€x!v‚À ZA[”‹xÛ?PÎAJ5… öL‘B`•“¤‡ ©š Ôž‰ ¥ð:ï4y 1EÍ(Œˆ¦°už@ÐVMPj ;A§Á‘ø¢&Iïë^å,RŽBÀ‹KA »Q6ý¹„EŽ¥ 2c¡Ýj„B¢|¿Ãj ¦ÎÓšf,‚šBÀŽDÐ*Bp,í¢&KAÇTN“rÞ(Bp$Ü·†35ý¹ð"ÇRè&p¿Ù‚—a=høíàX…Â$ µç"’¨ËRŽD %ÑPþ\--H­&oGÄ» ¶©c;~›?… ­EY ¨)ìH"GR4Ššp$Ò‰ºœ&åH¼Á±(¨›þ\ Â"ÇR t"¯7[Q›ÆPÔäÁÑ‚(¨Ôž‹ ¥™(ËiRŽDÐÖ<jÏB0¢EšL~Óo­V(4RØéðCãp… ¦Ôv‚ Áq„ÅM8Ž‚HS ËiRŽBÐ,Fp-ÝÝôçQÐ.Fp}#AvǨby=lµ›mlTÑaF‚šBÀŽB#8Ž‚°¸ ÇQ`Ë,g‘r‚f1‚ã(°å@6ýy´‹CsãU°Óf—×uæ#haŒq oßs—ë3¶9÷y×Óm¿ÙamÛŸäO )Šoƒ/A×wÚA«E&Í'IéqÉs11ɪÌÂ`ò34e0ù.MJc©€ð¸m‡Qþ¸k4ª|›c;½bÓ˜jSθ˜j“5îÕdžC]v´X”œb´JJ uÙlQbÚ‰˜Fz.Ã#XžŠýL¼Mù öª¶d¶¸Z5…íHÍ-aÇ/4åLcªiL5SMcªiL5)(ÄÔQ4ùS 0…jÆ‹·‘^úfZ×Q4ù¶˜˜ÆTÓ˜"‹&,)êÂV.Ÿ M¢Ž;|ja½`M6¦ eÓ¤ë«iL5)‡OÓ˜ ŸÚE˜ÂVnßÙ˜¸Ýw}#O°… B_PêžÖzbÏkÑä¡\ùP\âä~˜Œô?x‘1–y¿(c‚ˆîÖe£Ï‚rhá=C«Óý>ÔA1Ñ(½k´;a A½Ýbñ’ý2ýˆ¹½ï¾±ÅžM—uVñ; ÊÞöúcØy¬Í[íZ›wÚP¿º[Q1‰VKY§_ëç˜ W†TÙ_Œý•±¯Þ7ï7Ùq¿lþ2 ”÷—~€på}ÕpQ(¼;ñj™ÄX€!k_½šÂé`¤¾.5ÿ€ c«ÓhFŸ4`Œ4FBXS[MqÉ !ÎvÍÅp€±…;Õj ˜CcáÓ™á`ìhþw¼oEüñYãÕ¾ñÑ÷uk;ŠåzØèPk|a§êscMõMÆÀêÃZqÝ>ö̸©á¾´0F²f¡ÌblZÜ!Nbli©À6{E=ã·M«‘á0vlÈšê› $o˜¶X]˜ƒ‘û6¤nN#wFÂoÎêA_`´Æ u¶âc ’‡îÕü[„óÈðñ7Ï’žÔèâfÌ »ÍHÈblYãqalÛ2qHzxGCZ]˜… ÖhÕ %ÆÀ·$W xFnÕ\;Ô×A ë®Y 2Sw`´uL‘Üb6P[*,>¦ú:hjŒØµ¢Œ¶6Ób–ƒ‘z&4RöµcÇ@Zb‘iMØ0p–ÏÁúÒð,dÈ ¿-FæôuhzÆðl«ÃPÃY %cdññ7K‡§16u[¬A˜××aËæ4ÙV·M«­ÎÎèúÿî;ÐÏQ/Èöu3lÄÿlð Sùÿ|?lþá_ñ?ÿ ?8v|µÌÏ|ÐÔ‡ž§Ñ&Í…xøoìÓòa³ÝÜ^¬¿-YWb"!4‚óÔ¦Ï;¡~b`0Ì<Àís½Óði[ã·…j©‡mŸÇÓ0º.´„hù0Çà9@ÏgE¯7x‡“½iЊp“]ƒ'˜F›ŒÄ𠀜fÓ0, ÃÌ' &UW†Óv^‡!%aÏ¿Ù9ˆ^2;AÍîö>ûÍú%†E†÷³ýò¥ I•Á¬C«…Êyƒ™z¬|;¸øþ(KINlyѶ”%$™$·Z²·ÂˆN4L aj`BcÕÕâQ‡€yÔ ÊRуx³aÃ4ÓôdaÞÐYEStIUW@3˜öÄ}#BÓžNØéD" ¨P$ÀÈoF€‡+< … rÑõëŽ-^˜Û&xjcè4"¢GÁð4 ¯°å+¥7¡ÂÃ]úªíЮPáQíBÂ:6ä²t ®(MO`BBÂ0iz ŒÆÓLó§†G†aÓ·aÒüAÍÒl·ÍAë_+€#~n×ãxtù·É‡É?¬1ÿÅÿÆw<ÿ·ý+ÿï?åG…ÓÞÌöŒ¦Í¹ §]g,ý±t¾­³Éfµù’°Ño‹»Äcç Œ¤¯2™ô13ÚNæqbÃ)e \²ñ,ÁF”½û¶añz·OöûÅ1mÔd1û¼Þ,7·ß<ÌF”ÌTú)Ê|¶œc’¦Ìh${2WÓv ×âÜóÇ’NFDy¦ìÌŽ›o"á&žZÉ|x¼(’[¬¿êº´þGÊ:`R0y”i±I§ œG)ªD¶€ít}»À}ð ¼@²ÿŒP“øOþÏKvy;˜“§Ö©k ,U»Õt¹’þ³%ä_?ÿúù×Ï¿~þõóßñçÿ`u¼l@ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/utils/wannier.py000066400000000000000000000575401316323560300275000ustar00rootroot00000000000000from __future__ import print_function """ class Wannier provides the function get_wannier_localization_matrix and initial_wannier. """ import numpy as np from Scientific.IO.NetCDF import NetCDFFile as netCDF def dagger(matrix,copy=1): # First change the axis: (Does not allocate a new array) matrix_conj=np.swapaxes(matrix,0,1) if copy: # Allocate space for new array return np.conjugate(matrix_conj) else: # The array of matrix is used for output np.dot(matrix_conj.imag,-1,matrix_conj.imag) return matrix_conj def project(a,b): """ returns the projection of b onto a""" return a*(np.dot(np.conjugate(a),b)/np.dot(np.conjugate(a),a)) def translate(array,translation): """Method for translating an array""" newarray=array size=array.shape for dim in range(len(translation)): axis=dim-len(translation) newarray=np.concatenate((np.take(newarray,list(range(translation[dim],size[axis])),axis),np.take(newarray,list(range(translation[dim])),axis)),axis) return newarray.copy() def cartesian2scaled(basis,cart): return np.linalg.solve(np.transpose(basis),cart) def scaled2cartesian(basis,scaled): return np.dot(scaled,basis) class Translation_Operator: def __init__(self,dimensions,basis): self.set_dimensions(dimensions) self.set_basis(basis) def set_dimensions(self,dim): self.dimensions = dim def get_dimensions(self): return self.dimensions def set_basis(self,basis): self.basis = basis def get_basis(self): return self.basis def set_cartesian_translation_coordinates(self,trans_cartes): self.cartesian_translation_coordinates = trans_cartes def get_cartesian_translation_coordinates(self): return self.cartesian_translation_coordinates def get_coordinates(self): trans_cartes = self.get_cartesian_translation_coordinates() #trans_coor = np.linalg.solve(np.transpose(self.get_basis()),trans_cartes) trans_coor = cartesian2scaled(self.get_basis(),trans_cartes) return np.multiply(trans_coor,self.get_dimensions()) def get_translational_diagonal(self,dim_index): # Using that G = 2*pi*n/L : epx(-i*G*x_{1}) = # pow(exp(-i*2*pi/N*x_{1}),n) length = self.get_dimensions()[dim_index] coordinates = self.get_coordinates()[dim_index] basis_neg = np.arange(0, -length // 2, -1) basis_pos = np.arange(length // 2, 0, -1) basis = np.concatenate((basis_neg,basis_pos),-1) prefactor=np.exp(-complex(0,1)*2*np.pi*coordinates/length) translation=list(map(lambda x,prefactor=prefactor:prefactor**x,basis)) return np.array(translation) def operate(self,state): translation = np.multiply.outer(self.get_translational_diagonal(0),self.get_translational_diagonal(1)) translation = np.multiply.outer(translation,self.get_translational_diagonal(2)) return np.multiply(translation,state) def coordinate_array_from_unit_vectors(shape, gridunitvectors, origin=[0, 0, 0], indexfunction=None): """ This method can be used to obtain an array representing the coordinates of a space defined by 'gridunitvecors'. 'gridunitvectors' is in turn a list containing the vectors defining the cells of the grid, i.e. the vectors between neighboring grid points. These vectors are spanned according to the specified shape. 'origin' -- specifies the origin of the returned coordinate array. 'indexfunction' -- is a lambda expression that defines the indices with which each of the specified gridunitvectors are to be multiplied. 'indexfunction' must take two arguments, 'i' and 'length' - default is 'lambda i,length:i'. During execution the input index 'i' will run over the interval 0,1,..., 'length' -1. **An Example** To obtain a coordinate array of shape (10,10) with 'gridunitvectors' =[[2,0],[0,1]] and the origin at [10,0] use: 'CoordinateArrayFromUnitVectors((10,10),[[2,0],[0,1],[10,0])' Note that the output array will be of shape (< *dimension* > , < *spatialcoordinates* >). """ if indexfunction is None: indexfunction = lambda i, length: i coordinatelist=[] gridunitvectors=np.asarray(gridunitvectors) # Looping over the dimensionality of the vectors for dim in range(gridunitvectors.shape[1]): coordinates=origin[dim] # Contribution from each unitvector for nunitvector in range(gridunitvectors.shape[0]): # Finding the indices from which the coordinate grid # is spanned indices=list(map(lambda i,f=indexfunction,l=shape[nunitvector]:f(i,l),list(range(shape[nunitvector])))) coordinatefunc=lambda i,v=gridunitvectors[nunitvector,dim]:i*v coordinates=np.add.outer(coordinates,list(map(coordinatefunc,indices))) coordinatelist.append(coordinates) return np.array(coordinatelist) def coordinates_from_function_values(dimensions,functionvalues): # In general: Using basis functions of the form: # 1/sqrt(N1*N2*N3)*exp(iG_dot_r) normalization=np.sqrt(np.multiply.reduce(dimensions)) # Functionvalues of the form (a,x_i,x_j,x_k), where # a is different functions and x_i,x_j,x_k the function values # Return array of the form (a,G_i,G_j,G_k) # The three last axes are transformed coordinates=np.fft.ifft(np.fft.ifft(np.fft.ifft(functionvalues,n=functionvalues.shape[-1],axis=-1),n=functionvalues.shape[-2],axis=-2),n=functionvalues.shape[-3],axis=-3) # Scaling: np.multiply(coordinates,normalization,coordinates) return coordinates class Wannier: def __init__(self,calc): self.calc = calc self.set_bands(None) self.set_spin(None) self.has_changed = True def set_spin(self,spin): self.spin = spin self.has_changed = True def get_spin(self): return self.spin def get_fft_index(self): if not hasattr(self,'fftindex'): fftindex = [] kpoints = self.calc.get_bz_k_points() for kpt in range(len(kpoints)): fftindex.append(self.calc.get_reciprocal_fft_index()) self.fftindex = fftindex return self.fftindex def get_grid_dimensions(self): fftgrids = self.calc.get_fftgrid() return fftgrids['soft'] def get_list_of_wave_functions(self): if self.get_spin() == None or self.get_bands() == None: raise RuntimeError('Bands and spin must be set before wave ' + 'function list can be created') if self.has_changed: listofwavefct = [] kpoints = self.calc.get_bz_k_points() for kpt in range(len(kpoints)): eigenstates = [] for band in range(self.get_bands()): eigenstates.append(self.calc.get_reciprocal_bloch_function(band=band,kpt=kpt,spin=self.get_spin())) listofwavefct.append(eigenstates) self.listofwavefct = listofwavefct self.has_changed = False return self.listofwavefct def set_bands(self,numberofbands): self.numberofbands = numberofbands self.has_changed = True def get_bands(self): return self.numberofbands def get_zi_bloch_matrix(self,dirG,kpoint,nextkpoint,G_I): """ calculate matrix of ZIi,j values This matrix consist of 3 matrices each of dimension MxM, i.e. corresponding to the full space. """ #print 'DacapoWannier: Initialize ZIBlochMatrix ..' if self.get_bands() == None or self.get_spin() == None: raise RuntimeError('Bands and spin must be set before wannier ' 'localization matrix can be calculated') phi=np.swapaxes(np.array(self.get_list_of_wave_functions()[kpoint]),0,1) # K1 and reciprocal lattice vector G_I given kpoint K # that fulfills the criteria : K1-K-K0+G1=0 list1,list2 = self.get_gg_list(kpoint,nextkpoint,G_I) a=np.take(phi,list1,axis=0) a=np.swapaxes(a,0,1) phi1 = np.swapaxes(np.array(self.get_list_of_wave_functions()[nextkpoint]),0,1) b=np.take(phi1,list2,axis=0) ziblochmatrix = np.dot(np.conjugate(a),b) usziblochmatrix = self.get_ultra_soft_non_loc_matrix(dirG,kpoint,nextkpoint) ziblochmatrix += usziblochmatrix return ziblochmatrix def get_gg_list(self,kpt1,kpt2,GI): """ define list of (G,G+G1) defining the product phi(kpt1,G)*phi(kpt2,G+G1), GI is one of [[1,0,0],[0,1,0],[0,0,1],[1,1,0],[1,0,1],[0,1,1]] The layout of fourier components is 1 2 3 4 5 6 7 8 ngx = 8 0 1 2 3 4 -3 -2 -1 n*2pi/L """ numberplanewaves = len(self.get_list_of_wave_functions()[kpt1][0]) reciprocalindex = self.get_fft_index()[kpt1] ngrids = self.get_grid_dimensions() # setup the mapping from the 3D FFT grid to the wavefuction list map2 = self.get_index_map(kpt2) gglist = [] # print "Generating plane wave index list for direction ",GI," kpt12 ",kpt1,kpt2 list1 = [] list2 = [] # find G,G+GI for n in range(numberplanewaves): index = reciprocalindex[:,n] index = index - 1 # find G,G+GI for dir in range(3): index[dir] += GI[dir] if index[dir]>=ngrids[dir]: # wrap around index[dir] = 0 # now find the corresponding index into phi(kpt2) n1 = map2[index[0],index[1],index[2]] if n1>=0: list1.append(n) list2.append(n1) # print ' Number of elements in GG list ',len(list1) return list1,list2 def get_index_map(self,kpt): """ generate mapping from 3D FFT grid to the wavefunction list A negative number is returned from map(g1,g2,g3) is the grid point does not exists in the wavefunction list """ ngrids = self.get_grid_dimensions() map_to_wflist = np.zeros(ngrids,np.int) map_to_wflist = map_to_wflist - 1 numberplanewaves = len(self.get_list_of_wave_functions()[kpt][0]) reciprocalindex = self.get_fft_index()[kpt] for n in range(numberplanewaves): i0 = reciprocalindex[0][n]-1 i1 = reciprocalindex[1][n]-1 i2 = reciprocalindex[2][n]-1 map_to_wflist[i0,i1,i2] = n return map_to_wflist def get_ultra_soft_non_loc_matrix(self,GI,kpt,kpt1): """ calculate a I I I W = sum(n,m,I) * q i,j ik m n jk1 mn n,m : projectors I : atom no a (nbands,nbands) matrix is returned. """ nc = netCDF(self.calc.get_nc(),'r') if not 'WannierAugFactor' in nc.variables: nc.close() return # Read NLProjectorPsi, StructureFactor, WannierAugFactor vnlprojpsi = nc.variables['NLProjectorPsi'][:] nlprojpsi = np.zeros((np.shape(vnlprojpsi[:,:,:,:,:,0])),np.complex) nlprojpsi.real = vnlprojpsi[:,:,:,:,:,0] nlprojpsi.imag = vnlprojpsi[:,:,:,:,:,1] nlprojpsi = np.swapaxes(nlprojpsi,3,4) vstrfactor = nc.variables['StructureFactor'][:] strfactor = np.zeros((np.shape(vstrfactor[:,:,0])),np.complex) strfactor.real = vstrfactor[:,:,0] strfactor.imag = vstrfactor[:,:,1] vaugfactor = nc.variables['WannierAugFactor'][:] augfactor = np.zeros((np.shape(vaugfactor[:,:,:,:,0])),np.complex) augfactor.real = vaugfactor[:,:,:,:,0] augfactor.imag = vaugfactor[:,:,:,:,1] augfactor = np.swapaxes(augfactor,0,1) nc.close() lst=[[1,0,0],[0,1,0],[0,0,1],[1,1,0],[1,0,1],[0,1,1]] # find direction corresponding to GI dir = lst.index(GI.tolist()) natoms = nlprojpsi.shape[2] nbands = self.get_bands() matrix = np.zeros([nbands,nbands],np.complex) for atom in range(natoms): if kpt==kpt1: q=np.conjugate(augfactor[:,:,atom,dir+1]) else: q=augfactor[:,:,atom,0] if dir<3: q=q*np.conjugate(strfactor[atom,dir]) A=nlprojpsi[kpt,self.get_spin(),atom,:nbands,:] B=nlprojpsi[kpt1,self.get_spin(),atom,:nbands,:] matrix=matrix+np.dot(A,np.dot(q,dagger(B))) return matrix ##### code to calculate initial wannier functions ###### def set_data(self,data): self.data = data def set_k_point_grid(self,kpointgrid): self.kpointgrid = np.array(kpointgrid) def get_k_point_grid(self): return self.kpointgrid def get_repeated_unit_cell(self): basis=self.calc.get_atoms().get_cell() return np.transpose(np.transpose(basis)*self.get_k_point_grid()) def get_repeated_grid_dimensions(self): return self.get_grid_dimensions()*self.get_k_point_grid() def get_detailed_data(self): if not hasattr(self,'detaileddata'): """ Coverts data on the form [atom,l,(m),a], or [center,l,(m),a]. atom is a number in a bracket, example [2] for atom number 2 center is 3 numbers in a bracket, example [1,0.5,0.3] denoting SCALED coordinates of the center. Here m is optional. If m is left out all m values are used.""" datalist=self.data detaileddata=[] atoms=self.calc.get_atoms() for data in datalist: if len(data[0])==1: r_c=atoms[data[0][0]].get_position() elif len(data[0])==3: r_c = scaled2cartesian(atoms.get_cell(),data[0]) else: print("First element in initial data must be of the form [atom] or [c1,c2,c3], where the latter is scaled coordinates of the center") if len(data)==4: # m is specified detaileddata.append([r_c,data[1],data[2],data[3]]) else: # Orbitals with all allowed m values are produced for m in range(-data[1],data[1]+1): detaileddata.append([r_c,data[1],m,data[2]]) self.detaileddata = detaileddata return self.detaileddata def get_origin_index(self): griddim = self.get_repeated_grid_dimensions() originindex = [int(coor) for coor in list(np.multiply(np.array([0.5,0.5,0.5]),griddim))] return originindex def get_cartesian_coordinates(self): griddim = self.get_repeated_grid_dimensions() basis = self.calc.get_atoms().get_cell() # Set origin to center of grid originindex = self.get_origin_index() # origincoord is in scaled coordinates: origincoord=-np.array(np.array(originindex,np.float)/griddim) origincart = scaled2cartesian(basis,origincoord) gridunitvectors = np.array(list(map(lambda unitvector,shape:unitvector/shape,basis,griddim))) c = coordinate_array_from_unit_vectors(shape=griddim, gridunitvectors=gridunitvectors, origin=origincart) return c def get_normalized_coordinates(self): if not hasattr(self,'normalized_coordinates'): originindex = tuple(self.get_origin_index()) c = self.get_cartesian_coordinates() dist = np.sqrt(c[0]**2+c[1]**2+c[2]**2) # We define "normalized" coordinates. To avoid undeterminancy at origin we move # to the point (1,1,1)*1e-8 c[0][originindex]=1.0e-8 c[1][originindex]=1.0e-8 c[2][originindex]=1.0e-8 dist[originindex]=np.sqrt(3)*1.0e-8 self.normalized_coordinates = c/dist return self.normalized_coordinates def get_distance_array_at_origin(self): # Set origin to center of grid originindex = self.get_origin_index() c = self.get_cartesian_coordinates() dist=np.sqrt(c[0]**2+c[1]**2+c[2]**2) # Translate back to origin dist=translate(dist,originindex) return dist def setup_m_matrix(self,listofeigenstates,bzkpoints): if self.data == None or self.kpointgrid == None: raise RuntimeError( 'Must set data, kpointgrid, spin before calculating M matrix') fftindex = self.get_fft_index() unitcell=self.get_repeated_unit_cell() griddim = self.get_repeated_grid_dimensions() data = self.get_detailed_data() nkpoints = len(bzkpoints) nbands = len(listofeigenstates[0]) M = np.zeros([nkpoints,nbands,len(data)],np.complex) orbital = np.zeros(griddim,np.complex) dist = self.get_distance_array_at_origin() transop = Translation_Operator(griddim,unitcell) rec_basis = 2*np.pi*np.linalg.inv(np.transpose(self.calc.get_atoms().get_cell())) large_rec_basis = 2*np.pi*np.linalg.inv(np.transpose(unitcell)) for i in range(len(data)): # Translate orbital r_c=data[i][0] l,m=data[i][1],data[i][2] a=data[i][3] orbital = self.get_cubic_harmonic_at_origin(l,m)*np.exp(-dist/a) orbital_fft = coordinates_from_function_values(griddim,orbital) transop.set_cartesian_translation_coordinates(r_c) orbital_fft = transop.operate(orbital_fft) for kpt in range(nkpoints): kpoint = bzkpoints[kpt] kptnumber = cartesian2scaled(large_rec_basis,scaled2cartesian(rec_basis,kpoint)) kptnumber[0]=round(kptnumber[0]) kptnumber[1]=round(kptnumber[1]) kptnumber[2]=round(kptnumber[2]) kptnumber=kptnumber.astype(int) u_k = self.extract_periodic_part_of_small_cell(orbital_fft,kptnumber) compact_u_k = self.get_compact_fft_representation(u_k,fftindex[kpt],len(listofeigenstates[kpt][0])) M[kpt,:,i] = np.dot(np.conjugate(np.array(listofeigenstates[kpt])),compact_u_k) self.mmatrix = M def get_cubic_harmonic_at_origin(self,l,m): """ l=0,1,2. m=-l,...,l""" griddim = self.get_repeated_grid_dimensions() harmonic = np.zeros(griddim,np.complex) originindex = self.get_origin_index() nc = self.get_normalized_coordinates() # Constructing cubic harmonic if l==0 and m==0: harmonic=(1/np.sqrt(4*np.pi))*np.ones(nc[0].shape,np.Complex) harmonic=translate(harmonic,originindex) if l==1 and m==0: # p_x harmonic=np.sqrt(3/(4*np.pi))*nc[0] harmonic=translate(harmonic,originindex) if l==1 and m==-1: # p_z harmonic=np.sqrt(3/(4*np.pi))*nc[2] harmonic=translate(harmonic,originindex) if l==1 and m==1: # p_y harmonic=np.sqrt(3/(4*np.pi))*nc[1] harmonic=translate(harmonic,originindex) if l==2 and m==0: harmonic=0.5*np.sqrt(5/(4*np.pi))*(3*(nc[0]**2)-np.ones(nc[0].shape,np.Complex)) harmonic=translate(harmonic,originindex) if l==2 and m==-1: harmonic=np.sqrt(15/(16*np.pi))*(nc[2]**2-nc[1]**2) harmonic=translate(harmonic,originindex) if l==2 and m==1: harmonic=np.sqrt(15/(4*np.pi))*nc[0]*nc[1] harmonic=translate(harmonic,originindex) if l==2 and m==-2: harmonic=np.sqrt(15/(4*np.pi))*nc[2]*nc[1] harmonic=translate(harmonic,originindex) if l==2 and m==2: harmonic=np.sqrt(15/(4*np.pi))*nc[2]*nc[0] harmonic=translate(harmonic,originindex) return harmonic def extract_periodic_part_of_small_cell(self,f,k): n1,n2,n3=self.get_k_point_grid() trans=[0,0,0] if k[0]<0: k[0]+=n1 trans[0]=self.get_grid_dimensions()[0]-1 if k[1]<0: k[1]+=n2 trans[1]=self.get_grid_dimensions()[1]-1 if k[2]<0: k[2]+=n3 trans[2]=self.get_grid_dimensions()[2]-1 u=f[k[0]::n1,k[1]::n2,k[2]::n3].copy() return translate(u,trans) def get_compact_fft_representation(self,freciprocal,fftindex,numberofpws): wflist=np.zeros([numberofpws],np.complex) for i in range(numberofpws): wflist[i]=freciprocal[int(fftindex[0,i]-1),int(fftindex[1,i]-1),int(fftindex[2,i]-1)] return wflist def get_orthonormality_factor(self,matrix): defect = abs(np.dot(dagger(matrix),matrix))-np.identity(matrix.shape[1],np.Float) return max(abs(defect.flat)) def get_list_of_coefficients_and_rotation_matrices(self,matrixdimensions): from ase.dft.wannier import normalize,gram_schmidt import random, copy M,N,L=matrixdimensions nkpt=len(N) Ulist=[] clist=[] if not hasattr(self,'mmatrix'): raise RuntimeError('Must setup M Matrix first!') coeffmatrix=self.mmatrix for kpt in range(nkpt): #First normalize the columns of coeffmatrix normalize(coeffmatrix[kpt]) T=coeffmatrix[kpt][N[kpt]:].copy() numberoforbitals=T.shape[1] c=np.zeros([M-N[kpt],L[kpt]],np.complex) U=np.zeros([N[kpt]+L[kpt],N[kpt]+L[kpt]],np.complex) # Initialize weights w=abs(np.sum(T*np.conjugate(T))) for i in range(min(L[kpt],numberoforbitals)): # Find index of maximal element in w t=w.tolist().index(max(w)) c[:,i]=T[:,t] # Orthogonalize c[:,i] on previous vectors for j in range(i): c[:,i]=c[:,i]-project(c[:,j],T[:,t]) c[:,i]=c[:,i]/np.sqrt(np.dot(c[:,i],np.conjugate(c[:,i]))) # Update weights w=w-abs(np.dot(np.conjugate(c[:,i]),T))**2 if numberoforbitals0: test = self.get_orthonormality_factor(c) if test>1.0e-3: print("ERROR: Columns of c not orthogonal!") U[:N[kpt],:numberoforbitals]=coeffmatrix[kpt][:N[kpt]] U[N[kpt]:,:numberoforbitals]=np.dot(dagger(c),coeffmatrix[kpt][N[kpt]:]) # Perform democratic Lowdin orthogonalization on U[:,numberoforbitals] gram_schmidt(U[:,:numberoforbitals]) if numberoforbitals<(N[kpt]+L[kpt]): #Supplement U by random vectors for i in range(numberoforbitals,N[kpt]+L[kpt]): for j in range(N[kpt]+L[kpt]): U[j,i]=random.random() # Finally orthogonalize everything # Note, only random vectors are affected gram_schmidt(U) # Test whether columns are orthonormal test = self.get_orthonormality_factor(U) if test>1.0e-3: print("ERROR: Columns of U not orthogonal for kpoint",kpt) Ulist.append(U) clist.append(c) return clist,Ulist ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/validate.py000066400000000000000000000225671316323560300264670ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np from ase.utils import basestring ''' input validation module provides functions to validate all input variables to the Jacapo calculator. ''' ###########################################3 ### Helper functions ########################################## def get_dacapopath(): """Return the value of the DACAPOPATH environment variable, or, if DACAPOPATH not set, return /usr/share/dacapo-psp/. Note that DACAPOPATH must be set for the Fortran code! """ import os return os.environ.get('DACAPOPATH', '/usr/share/dacapo-psp') ###########################################3 ### Validation functions ########################################## def valid_int(x): if (isinstance(x, int) or isinstance(x, np.int32)): return True def valid_float(x): return isinstance(x, float) def valid_int_or_float(x): return ((isinstance(x, int) or isinstance(x,np.int32)) or isinstance(x, float)) def valid_boolean(x): return isinstance(x, bool) def valid_str(x): return isinstance(x, basestring) def valid_atoms(x): import ase return isinstance(x, ase.Atoms) def valid_pw(x): return (valid_int_or_float(x) and x>0 and x<2000) def valid_dw(x): return (valid_int_or_float(x) and x>0 and x<2000) def valid_xc(x): return (x in ['PW91', 'PBE', 'revPBE', 'RPBE', 'VWN']) def valid_nbands(x): return valid_int(x) def valid_ft(x): return(valid_float, x) def valid_spinpol(x): return valid_boolean(x) def valid_fixmagmom(x): return valid_float(x) def valid_symmetry(x): return valid_boolean(x) def valid_calculate_stress(x): return valid_boolean(x) def valid_kpts(x): if isinstance(x, basestring): return x in ['cc6_1x1', 'cc12_2x3', 'cc18_sq3xsq3', 'cc18_1x1', 'cc54_sq3xsq3', 'cc54_1x1', 'cc162_sq3xsq3', 'cc162_1x1'] x = np.array(x) #empty arg is no good if x.shape == (): return False #monkhorst-pack elif x.shape == (3,) and ((x.dtype == 'int32') or (x.dtype == 'int64')): return True #user-defined list elif x.shape[1] == 3 and (str(x.dtype))[0:7] == 'float64': return True else: return False def valid_dipole(x): if valid_boolean(x): return True #dictionary passed in. we need to check the keys valid_keys = {'status':valid_boolean, 'mixpar':valid_float, 'initval':valid_float, 'adddipfield':valid_float, 'position':valid_float} for key in x: if key not in valid_keys: return False else: if x[key] is not None: if not valid_keys[key](x[key]): return False return True def valid_nc(x): #todo check for read/write access? return valid_str(x) def valid_status(x): return valid_str(x) def valid_pseudopotentials(x): #todo check that keys are symbols or numbers #todo check that psp files exist return True dacapopath = get_dacapopath() if dacapopath is None: raise Exception('No $DACAPOPATH found. please set it in .cshrc or .bashrc') from ase.data import chemical_symbols for key in x: if valid_str(key): if key not in chemical_symbols: return False elif not (valid_int(key) and key > 0 and key < 112): return False #now check for existence of psp files psp = x[key] if not (os.path.exists(psp) or os.path.exists(os.path.join(dacapopath, psp))): return False return True def valid_extracharge(x): return valid_float(x) def valid_extpot(x): grids = get_fftgrid() if (x.shape == np.array(grids['soft'])).all(): return True else: return False def valid_ascii_debug(x): return (x.strip() in ['Off', 'MediumLevel', 'HighLevel']) def valid_ncoutput(x): if x is None: return valid_keys = ['wf', 'cd', 'efp', 'esp'] for key in x: if key not in valid_keys: return False else: if x[key] not in ['Yes', 'No']: return False return True def valid_ados(x): if x is None: return valid_keys = ['energywindow', 'energywidth', 'npoints', 'cutoff'] for key in x: if key not in valid_keys: print('%s not in %s' % (key, str(valid_keys))) return False if key == 'energywindow': if not len(x['energywindow']) == 2: print('%s is bad' % key) return False if key == 'energywidth': if not valid_float(x['energywidth']): print(key, ' is bad') return False elif key == 'npoints': if not valid_int(x['npoints']): print(key, ' is bad') return False elif key == 'cutoff': if not valid_float(x['cutoff']): print(key, ' is bad') return False return True def valid_decoupling(x): if x is None: return valid_keys = ['ngaussians', 'ecutoff', 'gausswidth'] for key in x: if key not in valid_keys: return False elif key == 'ngaussians': if not valid_int(x[key]): print(key) return False elif key == 'ecutoff': if not valid_int_or_float(x[key]): return False elif key == 'gausswidth': if not valid_float(x[key]): print(key, x[key]) return False return True def valid_external_dipole(x): if x is None: return if valid_float(x): return True valid_keys = ['value', 'position'] for key in x: if key not in valid_keys: return False if key == 'value': if not valid_float(x['value']): return False elif key == 'position': if not valid_float(x['position']): return False return True def valid_stay_alive(x): return valid_boolean(x) def valid_fftgrid(x): valid_keys = ['soft', 'hard'] for key in x: if key not in valid_keys: return False if x[key] is None: continue grid = np.array(x[key]) if (grid.shape != (3,) and grid.dtype != 'int32'): return False return True def valid_convergence(x): valid_keys = ['energy', 'density', 'occupation', 'maxsteps', 'maxtime'] for key in x: if key not in valid_keys: return False if x[key] is None: continue if key == 'energy': if not valid_float(x[key]): return False elif key == 'density': if not valid_float(x[key]): return False elif key == 'occupation': if not valid_float(x[key]): return False elif key == 'maxsteps': if not valid_int(x[key]): return False elif key == 'maxtime': if not valid_int(x[key]): return False return True def valid_charge_mixing(x): valid_keys = ['method', 'mixinghistory', 'mixingcoeff', 'precondition', 'updatecharge'] for key in x: if key not in valid_keys: return False elif key == 'method': if x[key] not in ['Pulay']: return False elif key == 'mixinghistory': if not valid_int(x[key]): return False elif key == 'mixingcoeff': if not valid_float(x[key]): return False elif key == 'precondition': if x[key] not in ['Yes', 'No']: return False elif key == 'updatecharge': if x[key] not in ['Yes', 'No']: return False return True def valid_electronic_minimization(x): valid_keys = ['method', 'diagsperband'] for key in x: if key not in valid_keys: return False elif key == 'method': if x[key] not in ['resmin', 'eigsolve', 'rmm-diis']: return False elif key == 'diagsperband': if not (valid_int(x[key]) or x[key] is None): return False return True def valid_occupationstatistics(x): return (x in ['FermiDirac', 'MethfesselPaxton']) def valid_mdos(x): return True def valid_psp(x): dacapopath = get_dacapopath() valid_keys = ['sym','psp'] if x is None: return True for key in x: if key not in valid_keys: return False if not valid_str(x[key]): return False if key == 'sym': from ase.data import chemical_symbols if key not in chemical_symbols: return False if key == 'psp': if os.path.exists(x['psp']): return True if os.path.exists(os.path.join(dacapopath, x['psp'])): return True #psp not found return False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/jacapo/version.py000066400000000000000000000000241316323560300263430ustar00rootroot00000000000000version = '0.6.7' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/lammpsrun.py000066400000000000000000001025431316323560300254500ustar00rootroot00000000000000from __future__ import print_function # lammps.py (2011/03/29) # An ASE calculator for the LAMMPS classical MD code available from # http://lammps.sandia.gov/ # The environment variable LAMMPS_COMMAND must be defined to point to the # LAMMPS binary. # # Copyright (C) 2009 - 2011 Joerg Meyer, joerg.meyer@ch.tum.de # # 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 file; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 # USA or see . import os import shutil import shlex from subprocess import Popen, PIPE from threading import Thread from re import compile as re_compile, IGNORECASE from tempfile import mkdtemp, NamedTemporaryFile, mktemp as uns_mktemp import numpy as np import decimal as dec from ase import Atoms from ase.parallel import paropen from ase.units import GPa from ase.utils import basestring __all__ = ['LAMMPS', 'write_lammps_data'] # "End mark" used to indicate that the calculation is done CALCULATION_END_MARK = '__end_of_ase_invoked_calculation__' class LAMMPS: def __init__(self, label='lammps', tmp_dir=None, parameters={}, specorder=None, files=[], always_triclinic=False, keep_alive=True, keep_tmp_files=False, no_data_file=False): """The LAMMPS calculators object files: list Short explanation XXX parameters: dict Short explanation XXX specorder: list Short explanation XXX keep_tmp_files: bool Retain any temporary files created. Mostly useful for debugging. tmp_dir: str path/dirname (default None -> create automatically). Explicitly control where the calculator object should create its files. Using this option implies 'keep_tmp_files' no_data_file: bool Controls whether an explicit data file will be used for feeding atom coordinates into lammps. Enable it to lessen the pressure on the (tmp) file system. THIS OPTION MIGHT BE UNRELIABLE FOR CERTAIN CORNER CASES (however, if it fails, you will notice...). keep_alive: bool When using LAMMPS as a spawned subprocess, keep the subprocess alive (but idling when unused) along with the calculator object. always_triclinic: bool Force use of a triclinic cell in LAMMPS, even if the cell is a perfect parallelepiped. """ self.label = label self.parameters = parameters self.specorder = specorder self.files = files self.always_triclinic = always_triclinic self.calls = 0 self.forces = None self.keep_alive = keep_alive self.keep_tmp_files = keep_tmp_files self.no_data_file = no_data_file if tmp_dir is not None: # If tmp_dir is pointing somewhere, don't remove stuff! self.keep_tmp_files = True self._lmp_handle = None # To handle the lmp process # read_log depends on that the first (three) thermo_style custom args # can be capitilized and matched against the log output. I.e. # don't use e.g. 'ke' or 'cpu' which are labeled KinEng and CPU. self._custom_thermo_args = ['step', 'temp', 'press', 'cpu', 'pxx', 'pyy', 'pzz', 'pxy', 'pxz', 'pyz', 'ke', 'pe', 'etotal', 'vol', 'lx', 'ly', 'lz', 'atoms'] self._custom_thermo_mark = ' '.join([x.capitalize() for x in self._custom_thermo_args[0:3]]) # Match something which can be converted to a float f_re = r'([+-]?(?:(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|nan|inf))' n = len(self._custom_thermo_args) # Create a re matching exactly N white space separated floatish things self._custom_thermo_re = re_compile( r'^\s*' + r'\s+'.join([f_re] * n) + r'\s*$', flags=IGNORECASE) # thermo_content contains data "written by" thermo_style. # It is a list of dictionaries, each dict (one for each line # printed by thermo_style) contains a mapping between each # custom_thermo_args-argument and the corresponding # value as printed by lammps. thermo_content will be # re-populated by the read_log method. self.thermo_content = [] if tmp_dir is None: self.tmp_dir = mkdtemp(prefix='LAMMPS-') else: self.tmp_dir = os.path.realpath(tmp_dir) if not os.path.isdir(self.tmp_dir): os.mkdir(self.tmp_dir, 0o755) for f in files: shutil.copy(f, os.path.join(self.tmp_dir, os.path.basename(f))) def clean(self, force=False): self._lmp_end() if not self.keep_tmp_files: shutil.rmtree(self.tmp_dir) def get_potential_energy(self, atoms): self.update(atoms) return self.thermo_content[-1]['pe'] def get_forces(self, atoms): self.update(atoms) return self.forces.copy() def get_stress(self, atoms): self.update(atoms) tc = self.thermo_content[-1] # 1 bar (used by lammps for metal units) = 1e-4 GPa return np.array([tc[i] for i in ('pxx', 'pyy', 'pzz', 'pyz', 'pxz', 'pxy')]) * (-1e-4 * GPa) def update(self, atoms): if not hasattr(self, 'atoms') or self.atoms != atoms: self.calculate(atoms) def calculate(self, atoms): self.atoms = atoms.copy() pbc = self.atoms.get_pbc() if all(pbc): cell = self.atoms.get_cell() elif not any(pbc): # large enough cell for non-periodic calculation - # LAMMPS shrink-wraps automatically via input command # "periodic s s s" # below cell = 2 * np.max(np.abs(self.atoms.get_positions())) * np.eye(3) else: print("WARNING: semi-periodic ASE cell detected - translation") print(" to proper LAMMPS input cell might fail") cell = self.atoms.get_cell() self.prism = Prism(cell) self.run() def _lmp_alive(self): # Return True if this calculator is currently handling a running # lammps process return self._lmp_handle and not isinstance( self._lmp_handle.poll(), int) def _lmp_end(self): # Close lammps input and wait for lammps to end. Return process # return value if self._lmp_alive(): self._lmp_handle.stdin.close() return self._lmp_handle.wait() def run(self): """Method which explicitly runs LAMMPS.""" self.calls += 1 # set LAMMPS command from environment variable if 'LAMMPS_COMMAND' in os.environ: lammps_cmd_line = shlex.split(os.environ['LAMMPS_COMMAND']) if len(lammps_cmd_line) == 0: self.clean() raise RuntimeError('The LAMMPS_COMMAND environment variable ' 'must not be empty') # want always an absolute path to LAMMPS binary when calling from # self.dir lammps_cmd_line[0] = os.path.abspath(lammps_cmd_line[0]) else: self.clean() raise RuntimeError( 'Please set LAMMPS_COMMAND environment variable') if 'LAMMPS_OPTIONS' in os.environ: lammps_options = shlex.split(os.environ['LAMMPS_OPTIONS']) else: lammps_options = shlex.split('-echo log -screen none') # change into subdirectory for LAMMPS calculations cwd = os.getcwd() os.chdir(self.tmp_dir) # setup file names for LAMMPS calculation label = '{0}{1:>06}'.format(self.label, self.calls) lammps_in = uns_mktemp(prefix='in_' + label, dir=self.tmp_dir) lammps_log = uns_mktemp(prefix='log_' + label, dir=self.tmp_dir) lammps_trj_fd = NamedTemporaryFile( prefix='trj_' + label, dir=self.tmp_dir, delete=(not self.keep_tmp_files)) lammps_trj = lammps_trj_fd.name if self.no_data_file: lammps_data = None else: lammps_data_fd = NamedTemporaryFile( prefix='data_' + label, dir=self.tmp_dir, delete=(not self.keep_tmp_files)) self.write_lammps_data(lammps_data=lammps_data_fd) lammps_data = lammps_data_fd.name lammps_data_fd.flush() # see to it that LAMMPS is started if not self._lmp_alive(): # Attempt to (re)start lammps self._lmp_handle = Popen( lammps_cmd_line + lammps_options + ['-log', '/dev/stdout'], stdin=PIPE, stdout=PIPE) lmp_handle = self._lmp_handle # Create thread reading lammps stdout (for reference, if requested, # also create lammps_log, although it is never used) if self.keep_tmp_files: lammps_log_fd = open(lammps_log, 'wb') fd = SpecialTee(lmp_handle.stdout, lammps_log_fd) else: fd = lmp_handle.stdout thr_read_log = Thread(target=self.read_lammps_log, args=(fd,)) thr_read_log.start() # write LAMMPS input (for reference, also create the file lammps_in, # although it is never used) if self.keep_tmp_files: lammps_in_fd = open(lammps_in, 'wb') fd = SpecialTee(lmp_handle.stdin, lammps_in_fd) else: fd = lmp_handle.stdin self.write_lammps_in(lammps_in=fd, lammps_trj=lammps_trj, lammps_data=lammps_data) if self.keep_tmp_files: lammps_in_fd.close() # Wait for log output to be read (i.e., for LAMMPS to finish) # and close the log file if there is one thr_read_log.join() if self.keep_tmp_files: lammps_log_fd.close() if not self.keep_alive: self._lmp_end() exitcode = lmp_handle.poll() if exitcode and exitcode != 0: cwd = os.getcwd() raise RuntimeError('LAMMPS exited in {0} with exit code: {0}.' ''.format(cwd, exitcode)) # A few sanity checks if len(self.thermo_content) == 0: raise RuntimeError('Failed to retrieve any thermo_style-output') if int(self.thermo_content[-1]['atoms']) != len(self.atoms): # This obviously shouldn't happen, but if prism.fold_...() fails, # it could raise RuntimeError('Atoms have gone missing') self.read_lammps_trj(lammps_trj=lammps_trj) lammps_trj_fd.close() if not self.no_data_file: lammps_data_fd.close() os.chdir(cwd) def write_lammps_data(self, lammps_data=None): """Method which writes a LAMMPS data file with atomic structure.""" if lammps_data is None: lammps_data = 'data.' + self.label write_lammps_data( lammps_data, self.atoms, self.specorder, force_skew=self.always_triclinic, prismobj=self.prism) def write_lammps_in(self, lammps_in=None, lammps_trj=None, lammps_data=None): """Write a LAMMPS in_ file with run parameters and settings.""" if isinstance(lammps_in, basestring): f = paropen(lammps_in, 'wb') close_in_file = True else: # Expect lammps_in to be a file-like object f = lammps_in close_in_file = False if self.keep_tmp_files: f.write('# (written by ASE)\n'.encode('utf-8')) # Write variables f.write(('clear\n' 'variable dump_file string "{0}"\n' 'variable data_file string "{1}"\n' ).format(lammps_trj, lammps_data).encode('utf-8')) parameters = self.parameters if 'package' in parameters: f.write(('\n'.join(['package {0}'.format(p) for p in parameters['package']]) + '\n').encode('utf-8')) pbc = self.atoms.get_pbc() f.write('units metal \n'.encode('utf-8')) if 'boundary' in parameters: f.write('boundary {0} \n'.format( parameters['boundary']).encode('utf-8')) else: f.write('boundary {0} {1} {2} \n'.format( *tuple('sp'[x] for x in pbc)).encode('utf-8')) f.write('atom_modify sort 0 0.0 \n'.encode('utf-8')) for key in ('neighbor', 'newton'): if key in parameters: f.write('{0} {1} \n'.format( key, parameters[key]).encode('utf-8')) f.write('\n'.encode('utf-8')) # If self.no_lammps_data, # write the simulation box and the atoms if self.no_data_file: if self.keep_tmp_files: f.write('## Original ase cell\n'.encode('utf-8')) f.write(''.join(['# {0:.16} {1:.16} {2:.16}\n'.format(*x) for x in self.atoms.get_cell()] ).encode('utf-8')) p = self.prism f.write('lattice sc 1.0\n'.encode('utf-8')) xhi, yhi, zhi, xy, xz, yz = p.get_lammps_prism_str() if self.always_triclinic or p.is_skewed(): f.write('region asecell prism 0.0 {0} 0.0 {1} 0.0 {2} ' ''.format(xhi, yhi, zhi).encode('utf-8')) f.write('{0} {1} {2} side in units box\n' ''.format(xy, xz, yz).encode('utf-8')) else: f.write(('region asecell block 0.0 {0} 0.0 {1} 0.0 {2} ' 'side in units box\n').format( xhi, yhi, zhi).encode('utf-8')) symbols = self.atoms.get_chemical_symbols() if self.specorder is None: # By default, atom types in alphabetic order species = sorted(set(symbols)) else: # By request, specific atom type ordering species = self.specorder n_atom_types = len(species) species_i = dict([(s, i + 1) for i, s in enumerate(species)]) f.write('create_box {0} asecell\n'.format( n_atom_types).encode('utf-8')) for s, pos in zip(symbols, self.atoms.get_positions()): if self.keep_tmp_files: f.write('# atom pos in ase cell: {0:.16} {1:.16} {2:.16}' '\n'.format(*tuple(pos)).encode('utf-8')) f.write('create_atoms {0} single {1} {2} {3} units box\n' ''.format( *((species_i[s],) + p.pos_to_lammps_fold_str(pos))).encode('utf-8')) # if NOT self.no_lammps_data, then simply refer to the data-file else: f.write('read_data {0}\n'.format(lammps_data).encode('utf-8')) # Write interaction stuff f.write('\n### interactions \n'.encode('utf-8')) if ('pair_style' in parameters) and ('pair_coeff' in parameters): pair_style = parameters['pair_style'] f.write('pair_style {0} \n'.format(pair_style).encode('utf-8')) for pair_coeff in parameters['pair_coeff']: f.write('pair_coeff {0} \n' ''.format(pair_coeff).encode('utf-8')) if 'mass' in parameters: for mass in parameters['mass']: f.write('mass {0} \n'.format(mass).encode('utf-8')) else: # simple default parameters # that should always make the LAMMPS calculation run f.write('pair_style lj/cut 2.5 \n' 'pair_coeff * * 1 1 \n' 'mass * 1.0 \n'.encode('utf-8')) f.write( '\n### run\n' 'fix fix_nve all nve\n' 'dump dump_all all custom 1 {0} id type x y z vx vy vz fx fy fz\n' ''.format(lammps_trj).encode('utf-8')) f.write('thermo_style custom {0}\n' 'thermo_modify flush yes\n' 'thermo 1\n'.format( ' '.join(self._custom_thermo_args)).encode('utf-8')) if 'minimize' in parameters: f.write('minimize {0}\n'.format( parameters['minimize']).encode('utf-8')) if 'run' in parameters: f.write('run {0}\n'.format(parameters['run']).encode('utf-8')) if not (('minimize' in parameters) or ('run' in parameters)): f.write('run 0\n'.encode('utf-8')) f.write('print "{0}" \n'.format(CALCULATION_END_MARK).encode('utf-8')) # Force LAMMPS to flush log f.write('log /dev/stdout\n'.encode('utf-8')) f.flush() if close_in_file: f.close() def read_lammps_log(self, lammps_log=None, PotEng_first=False): """Method which reads a LAMMPS output log file.""" if lammps_log is None: lammps_log = self.label + '.log' if isinstance(lammps_log, basestring): f = paropen(lammps_log, 'wb') close_log_file = True else: # Expect lammps_in to be a file-like object f = lammps_log close_log_file = False thermo_content = [] line = f.readline().decode('utf-8') while line and line.strip() != CALCULATION_END_MARK: # get thermo output if line.startswith(self._custom_thermo_mark): m = True while m: line = f.readline().decode('utf-8') m = self._custom_thermo_re.match(line) if m: # create a dictionary between each of the # thermo_style args and it's corresponding value thermo_content.append( dict(zip(self._custom_thermo_args, map(float, m.groups())))) else: line = f.readline().decode('utf-8') if close_log_file: f.close() self.thermo_content = thermo_content def read_lammps_trj(self, lammps_trj=None, set_atoms=False): """Method which reads a LAMMPS dump file.""" if lammps_trj is None: lammps_trj = self.label + '.lammpstrj' f = paropen(lammps_trj, 'r') while True: line = f.readline() if not line: break # TODO: extend to proper dealing with multiple steps in one # trajectory file if 'ITEM: TIMESTEP' in line: n_atoms = 0 lo = [] hi = [] tilt = [] id = [] type = [] positions = [] velocities = [] forces = [] if 'ITEM: NUMBER OF ATOMS' in line: line = f.readline() n_atoms = int(line.split()[0]) if 'ITEM: BOX BOUNDS' in line: # save labels behind "ITEM: BOX BOUNDS" in triclinic case # (>=lammps-7Jul09) tilt_items = line.split()[3:] for i in range(3): line = f.readline() fields = line.split() lo.append(float(fields[0])) hi.append(float(fields[1])) if len(fields) >= 3: tilt.append(float(fields[2])) if 'ITEM: ATOMS' in line: # (reliably) identify values by labels behind "ITEM: ATOMS" # - requires >=lammps-7Jul09 # create corresponding index dictionary before iterating over # atoms to (hopefully) speed up lookups... atom_attributes = {} for (i, x) in enumerate(line.split()[2:]): atom_attributes[x] = i for n in range(n_atoms): line = f.readline() fields = line.split() id.append(int(fields[atom_attributes['id']])) type.append(int(fields[atom_attributes['type']])) positions.append([float(fields[atom_attributes[x]]) for x in ['x', 'y', 'z']]) velocities.append([float(fields[atom_attributes[x]]) for x in ['vx', 'vy', 'vz']]) forces.append([float(fields[atom_attributes[x]]) for x in ['fx', 'fy', 'fz']]) # Re-order items according to their 'id' since running in # parallel can give arbitrary ordering. type = [type[x - 1] for x in id] positions = [positions[x - 1] for x in id] velocities = [velocities[x - 1] for x in id] forces = [forces[x - 1] for x in id] f.close() # determine cell tilt (triclinic case!) if len(tilt) >= 3: # for >=lammps-7Jul09 use labels behind "ITEM: BOX BOUNDS" to # assign tilt (vector) elements ... if len(tilt_items) >= 3: xy = tilt[tilt_items.index('xy')] xz = tilt[tilt_items.index('xz')] yz = tilt[tilt_items.index('yz')] # ... otherwise assume default order in 3rd column # (if the latter was present) else: xy = tilt[0] xz = tilt[1] yz = tilt[2] else: xy = xz = yz = 0 xhilo = (hi[0] - lo[0]) - xy - xz yhilo = (hi[1] - lo[1]) - yz zhilo = (hi[2] - lo[2]) # The simulation box bounds are included in each snapshot and if the # box is triclinic (non-orthogonal), then the tilt factors are also # printed; see the region prism command for a description of tilt # factors. # For triclinic boxes the box bounds themselves (first 2 quantities # on each line) are a true "bounding box" around the simulation # domain, which means they include the effect of any tilt. # [ http://lammps.sandia.gov/doc/dump.html , lammps-7Jul09 ] # # This *should* extract the lattice vectors that LAMMPS uses from # the true "bounding box" printed in the dump file. # It might fail in some cases (negative tilts?!) due to the # MIN / MAX construction of these box corners: # # void Domain::set_global_box() # [...] # if (triclinic) { # [...] # boxlo_bound[0] = MIN(boxlo[0],boxlo[0]+xy); # boxlo_bound[0] = MIN(boxlo_bound[0],boxlo_bound[0]+xz); # boxlo_bound[1] = MIN(boxlo[1],boxlo[1]+yz); # boxlo_bound[2] = boxlo[2]; # # boxhi_bound[0] = MAX(boxhi[0],boxhi[0]+xy); # boxhi_bound[0] = MAX(boxhi_bound[0],boxhi_bound[0]+xz); # boxhi_bound[1] = MAX(boxhi[1],boxhi[1]+yz); # boxhi_bound[2] = boxhi[2]; # } # [ lammps-7Jul09/src/domain.cpp ] # cell = [[xhilo, 0, 0], [xy, yhilo, 0], [xz, yz, zhilo]] # These have been put into the correct order cell_atoms = np.array(cell) type_atoms = np.array(type) if self.atoms: cell_atoms = self.atoms.get_cell() # BEWARE: reconstructing the rotation from the LAMMPS output # trajectory file fails in case of shrink wrapping for # a non-periodic direction # -> hence rather obtain rotation from prism object used # to generate the LAMMPS input # rotation_lammps2ase = np.dot(np.linalg.inv(np.array(cell)), # cell_atoms) rotation_lammps2ase = np.linalg.inv(self.prism.R) type_atoms = self.atoms.get_atomic_numbers() positions_atoms = np.dot(positions, rotation_lammps2ase) # velocities_atoms = np.dot(velocities, rotation_lammps2ase) forces_atoms = np.dot(forces, rotation_lammps2ase) if set_atoms: # assume periodic boundary conditions here (as in write_lammps) self.atoms = Atoms(type_atoms, positions=positions_atoms, cell=cell_atoms) self.forces = forces_atoms class SpecialTee(object): """A special purpose, with limited applicability, tee-like thing. A subset of stuff read from, or written to, orig_fd, is also written to out_fd. It is used by the lammps calculator for creating file-logs of stuff read from, or written to, stdin and stdout, respectively. """ def __init__(self, orig_fd, out_fd): self._orig_fd = orig_fd self._out_fd = out_fd self.name = orig_fd.name def write(self, data): self._orig_fd.write(data) self._out_fd.write(data) self.flush() def read(self, *args, **kwargs): data = self._orig_fd.read(*args, **kwargs) self._out_fd.write(data) return data def readline(self, *args, **kwargs): data = self._orig_fd.readline(*args, **kwargs) self._out_fd.write(data) return data def readlines(self, *args, **kwargs): data = self._orig_fd.readlines(*args, **kwargs) self._out_fd.write(''.join(data)) return data def flush(self): self._orig_fd.flush() self._out_fd.flush() class Prism(object): def __init__(self, cell, pbc=(True, True, True), digits=10): """Create a lammps-style triclinic prism object from a cell The main purpose of the prism-object is to create suitable string representations of prism limits and atom positions within the prism. When creating the object, the digits parameter (default set to 10) specify the precision to use. lammps is picky about stuff being within semi-open intervals, e.g. for atom positions (when using create_atom in the in-file), x must be within [xlo, xhi). """ a, b, c = cell an, bn, cn = [np.linalg.norm(v) for v in cell] alpha = np.arccos(np.dot(b, c) / (bn * cn)) beta = np.arccos(np.dot(a, c) / (an * cn)) gamma = np.arccos(np.dot(a, b) / (an * bn)) xhi = an xyp = np.cos(gamma) * bn yhi = np.sin(gamma) * bn xzp = np.cos(beta) * cn yzp = (bn * cn * np.cos(alpha) - xyp * xzp) / yhi zhi = np.sqrt(cn**2 - xzp**2 - yzp**2) # Set precision self.car_prec = dec.Decimal('10.0') ** \ int(np.floor(np.log10(max((xhi, yhi, zhi)))) - digits) self.dir_prec = dec.Decimal('10.0') ** (-digits) self.acc = float(self.car_prec) self.eps = np.finfo(xhi).eps # For rotating positions from ase to lammps Apre = np.array(((xhi, 0, 0), (xyp, yhi, 0), (xzp, yzp, zhi))) self.R = np.dot(np.linalg.inv(cell), Apre) # Actual lammps cell may be different from what is used to create R def fold(vec, pvec, i): p = pvec[i] x = vec[i] + 0.5 * p n = (np.mod(x, p) - x) / p return [float(self.f2qdec(a)) for a in (vec + n * pvec)] Apre[1, :] = fold(Apre[1, :], Apre[0, :], 0) Apre[2, :] = fold(Apre[2, :], Apre[1, :], 1) Apre[2, :] = fold(Apre[2, :], Apre[0, :], 0) self.A = Apre self.Ainv = np.linalg.inv(self.A) if self.is_skewed() and \ (not (pbc[0] and pbc[1] and pbc[2])): raise RuntimeError('Skewed lammps cells MUST have ' 'PBC == True in all directions!') def f2qdec(self, f): return dec.Decimal(repr(f)).quantize(self.car_prec, dec.ROUND_DOWN) def f2qs(self, f): return str(self.f2qdec(f)) def f2s(self, f): return str(dec.Decimal(repr(f)).quantize(self.car_prec, dec.ROUND_HALF_EVEN)) def dir2car(self, v): """Direct to cartesian coordinates""" return np.dot(v, self.A) def car2dir(self, v): """Cartesian to direct coordinates""" return np.dot(v, self.Ainv) def fold_to_str(self, v): """Fold a position into the lammps cell (semi open) Returns tuple of str. """ # Two-stage fold, first into box, then into semi-open interval # (within the given precision). d = [x % (1 - self.dir_prec) for x in map(dec.Decimal, map(repr, np.mod(self.car2dir(v) + self.eps, 1.0)))] return tuple([self.f2qs(x) for x in self.dir2car(list(map(float, d)))]) def get_lammps_prism(self): A = self.A return A[0, 0], A[1, 1], A[2, 2], A[1, 0], A[2, 0], A[2, 1] def get_lammps_prism_str(self): """Return a tuple of strings""" p = self.get_lammps_prism() return tuple([self.f2s(x) for x in p]) def positions_to_lammps_strs(self, positions): """Rotate an ase-cell position to the lammps cell orientation Returns tuple of str. """ rot_positions = np.dot(positions, self.R) return [tuple([self.f2s(x) for x in position]) for position in rot_positions] def pos_to_lammps_fold_str(self, position): """Rotate and fold an ase-cell position into the lammps cell Returns tuple of str. """ return self.fold_to_str(np.dot(position, self.R)) def is_skewed(self): acc = self.acc prism = self.get_lammps_prism() axy, axz, ayz = [np.abs(x) for x in prism[3:]] return (axy >= acc) or (axz >= acc) or (ayz >= acc) def write_lammps_data(fileobj, atoms, specorder=None, force_skew=False, prismobj=None, velocities=False): """Write atomic structure data to a LAMMPS data_ file.""" if isinstance(fileobj, basestring): f = paropen(fileobj, 'wb') close_file = True else: # Presume fileobj acts like a fileobj f = fileobj close_file = False if isinstance(atoms, list): if len(atoms) > 1: raise ValueError( 'Can only write one configuration to a lammps data file!') atoms = atoms[0] f.write('{0} (written by ASE) \n\n'.format(f.name).encode('utf-8')) symbols = atoms.get_chemical_symbols() n_atoms = len(symbols) f.write('{0} \t atoms \n'.format(n_atoms).encode('utf-8')) if specorder is None: # This way it is assured that LAMMPS atom types are always # assigned predictably according to the alphabetic order species = sorted(set(symbols)) else: # To index elements in the LAMMPS data file # (indices must correspond to order in the potential file) species = specorder n_atom_types = len(species) f.write('{0} atom types\n'.format(n_atom_types).encode('utf-8')) if prismobj is None: p = Prism(atoms.get_cell()) else: p = prismobj xhi, yhi, zhi, xy, xz, yz = p.get_lammps_prism_str() f.write('0.0 {0} xlo xhi\n'.format(xhi).encode('utf-8')) f.write('0.0 {0} ylo yhi\n'.format(yhi).encode('utf-8')) f.write('0.0 {0} zlo zhi\n'.format(zhi).encode('utf-8')) if force_skew or p.is_skewed(): f.write('{0} {1} {2} xy xz yz\n'.format(xy, xz, yz).encode('utf-8')) f.write('\n\n'.encode('utf-8')) f.write('Atoms \n\n'.encode('utf-8')) for i, r in enumerate(p.positions_to_lammps_strs(atoms.get_positions())): s = species.index(symbols[i]) + 1 f.write('{0:>6} {1:>3} {2} {3} {4}\n'.format( *(i + 1, s) + tuple(r)).encode('utf-8')) if velocities and atoms.get_velocities() is not None: f.write('\n\nVelocities \n\n'.encode('utf-8')) for i, v in enumerate(atoms.get_velocities()): f.write('{0:>6} {1} {2} {3}\n'.format( *(i + 1,) + tuple(v)).encode('utf-8')) f.flush() if close_file: f.close() if __name__ == '__main__': pair_style = 'eam' Pd_eam_file = 'Pd_u3.eam' pair_coeff = ['* * ' + Pd_eam_file] parameters = {'pair_style': pair_style, 'pair_coeff': pair_coeff} files = [Pd_eam_file] calc = LAMMPS(parameters=parameters, files=files) a0 = 3.93 b0 = a0 / 2.0 if True: bulk = Atoms( ['Pd'] * 4, positions=[(0, 0, 0), (b0, b0, 0), (b0, 0, b0), (0, b0, b0)], cell=[a0] * 3, pbc=True) # test get_forces print('forces for a = {0}'.format(a0)) print(calc.get_forces(bulk)) # single points for various lattice constants bulk.set_calculator(calc) for n in range(-5, 5, 1): a = a0 * (1 + n / 100.0) bulk.set_cell([a] * 3) print('a : {0} , total energy : {1}'.format( a, bulk.get_potential_energy())) calc.clean() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/lj.py000066400000000000000000000045661316323560300240450ustar00rootroot00000000000000from __future__ import division import numpy as np from ase.neighborlist import NeighborList from ase.calculators.calculator import Calculator, all_changes from ase.calculators.calculator import PropertyNotImplementedError class LennardJones(Calculator): implemented_properties = ['energy', 'forces', 'stress'] default_parameters = {'epsilon': 1.0, 'sigma': 1.0, 'rc': None} nolabel = True def __init__(self, **kwargs): Calculator.__init__(self, **kwargs) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): Calculator.calculate(self, atoms, properties, system_changes) natoms = len(self.atoms) sigma = self.parameters.sigma epsilon = self.parameters.epsilon rc = self.parameters.rc if rc is None: rc = 3 * sigma if 'numbers' in system_changes: self.nl = NeighborList([rc / 2] * natoms, self_interaction=False) self.nl.update(self.atoms) positions = self.atoms.positions cell = self.atoms.cell e0 = 4 * epsilon * ((sigma / rc)**12 - (sigma / rc)**6) energy = 0.0 forces = np.zeros((natoms, 3)) stress = np.zeros((3, 3)) for a1 in range(natoms): neighbors, offsets = self.nl.get_neighbors(a1) cells = np.dot(offsets, cell) d = positions[neighbors] + cells - positions[a1] r2 = (d**2).sum(1) c6 = (sigma**2 / r2)**3 c6[r2 > rc**2] = 0.0 energy -= e0 * (c6 != 0.0).sum() c12 = c6**2 energy += 4 * epsilon * (c12 - c6).sum() f = (24 * epsilon * (2 * c12 - c6) / r2)[:, np.newaxis] * d forces[a1] -= f.sum(axis=0) for a2, f2 in zip(neighbors, f): forces[a2] += f2 stress += np.dot(f.T, d) if 'stress' in properties: if self.atoms.number_of_lattice_vectors == 3: stress += stress.T.copy() stress *= -0.5 / self.atoms.get_volume() self.results['stress'] = stress.flat[[0, 4, 8, 5, 2, 1]] else: raise PropertyNotImplementedError self.results['energy'] = energy self.results['free_energy'] = energy self.results['forces'] = forces ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/loggingcalc.py000066400000000000000000000156711316323560300257100ustar00rootroot00000000000000""" Provides LoggingCalculator class to wrap a Calculator and record number of enery and force calls """ import json import logging import time import numpy as np from ase.calculators.calculator import Calculator, all_properties logger = logging.getLogger(__name__) class LoggingCalculator(Calculator): """Calculator wrapper to record and plot history of energy and function evaluations """ implemented_properties = all_properties default_parameters = {} name = 'LoggingCalculator' property_to_method_name = { 'energy': 'get_potential_energy', 'energies': 'get_potential_energies', 'forces': 'get_forces', 'stress': 'get_stress', 'stresses': 'get_stresses'} def __init__(self, calculator, jsonfile=None, dumpjson=False): Calculator.__init__(self) self.calculator = calculator self.fmax = {} self.walltime = {} self.energy_evals = {} self.energy_count = {} self.set_label('(none)') if jsonfile is not None: self.read_json(jsonfile) self.dumpjson = dumpjson def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) if isinstance(self.calculator, Calculator): results = [self.calculator.get_property(prop, atoms) for prop in properties] else: results = [] for prop in properties: method_name = self.property_to_method_name[prop] method = getattr(self.calculator, method_name) results.append(method(atoms)) if 'energy' in properties or 'energies' in properties: self.energy_evals.setdefault(self.label, 0) self.energy_evals[self.label] += 1 try: energy = results[properties.index('energy')] except IndexError: energy = sum(results[properties.index('energies')]) logger.info('energy call count=%d energy=%.3f', self.energy_evals[self.label], energy) self.results = dict(zip(properties, results)) if 'forces' in self.results: fmax = self.fmax.setdefault(self.label, []) walltime = self.walltime.setdefault(self.label, []) forces = self.results['forces'].copy() energy_count = self.energy_count.setdefault(self.label, []) energy_evals = self.energy_evals.setdefault(self.label, 0) energy_count.append(energy_evals) for constraint in atoms.constraints: constraint.adjust_forces(atoms, forces) fmax.append(abs(forces).max()) walltime.append(time.time()) logger.info('force call fmax=%.3f', fmax[-1]) if self.dumpjson: self.write_json('dump.json') def write_json(self, filename): f = open(filename, 'w') json.dump({'fmax': self.fmax, 'walltime': self.walltime, 'energy_evals': self.energy_evals, 'energy_count': self.energy_count}, f) f.close() def read_json(self, filename, append=False, label=None): f = open(filename, 'r') dct = json.load(f) f.close() labels = dct['fmax'].keys() if label is not None and len(labels) == 1: for key in ('fmax', 'walltime', 'energy_evals', 'energy_count'): dct[key][label] = dct[key][labels[0]] del dct[key][labels[0]] if not append: self.fmax = {} self.walltime = {} self.energy_evals = {} self.energy_count = {} self.fmax.update(dct['fmax']) self.walltime.update(dct['walltime']) self.energy_evals.update(dct['energy_evals']) self.energy_count.update(dct['energy_count']) def tabulate(self): fmt1 = '%-10s %10s %10s %8s' title = fmt1 % ('Label', '# Force', '# Energy', 'Walltime/s') print(title) print('-' * len(title)) fmt2 = '%-10s %10d %10d %8.2f' for label in sorted(self.fmax.keys()): print(fmt2 % (label, len(self.fmax[label]), len(self.energy_count[label]), self.walltime[label][-1] - self.walltime[label][0])) def plot(self, fmaxlim=(1e-2, 1e2), forces=True, energy=True, walltime=True, markers=None, labels=None, **kwargs): import matplotlib.pyplot as plt if markers is None: markers = [c + s for c in ['r', 'g', 'b', 'c', 'm', 'y', 'k'] for s in ['.-', '.--']] nsub = sum([forces, energy, walltime]) nplot = 0 if labels is not None: fmax_values = [v for (k, v) in sorted(zip(self.fmax.keys(), self.fmax.values()))] self.fmax = dict(zip(labels, fmax_values)) energy_count_values = [v for (k, v) in sorted(zip(self.energy_count.keys(), self.energy_count.values()))] self.energy_count = dict(zip(labels, energy_count_values)) walltime_values = [v for (k, v) in sorted(zip(self.walltime.keys(), self.walltime.values()))] self.walltime = dict(zip(labels, walltime_values)) if forces: nplot += 1 plt.subplot(nsub, 1, nplot) for label, color in zip(sorted(self.fmax.keys()), markers): fmax = np.array(self.fmax[label]) idx = np.arange(len(fmax)) plt.semilogy(idx, fmax, color, label=label, **kwargs) plt.xlabel('Number of force evaluations') plt.ylabel('Maximum force / eV/A') plt.ylim(*fmaxlim) plt.legend() if energy: nplot += 1 plt.subplot(nsub, 1, nplot) for label, color in zip(sorted(self.energy_count.keys()), markers): energy_count = np.array(self.energy_count[label]) fmax = np.array(self.fmax[label]) plt.semilogy(energy_count, fmax, color, label=label, **kwargs) plt.xlabel('Number of energy evaluations') plt.ylabel('Maximum force / eV/A') plt.ylim(*fmaxlim) plt.legend() if walltime: nplot += 1 plt.subplot(nsub, 1, nplot) for label, color in zip(sorted(self.walltime.keys()), markers): walltime = np.array(self.walltime[label]) fmax = np.array(self.fmax[label]) walltime -= walltime[0] plt.semilogy(walltime, fmax, color, label=label, **kwargs) plt.xlabel('Walltime / s') plt.ylabel('Maximum force / eV/A') plt.ylim(*fmaxlim) plt.legend() plt.subplots_adjust(hspace=0.33) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/mopac.py000066400000000000000000000225571316323560300245370ustar00rootroot00000000000000"""This module defines an ASE interface to MOPAC. Set $ASE_MOPAC_COMMAND to something like:: LD_LIBRARY_PATH=/path/to/lib/ \ MOPAC_LICENSE=/path/to/license \ /path/to/MOPAC2012.exe PREFIX.mop 2> /dev/null """ import os import numpy as np from ase import Atoms from ase.calculators.calculator import FileIOCalculator, ReadError, Parameters from ase.units import kcal, mol, Debye class MOPAC(FileIOCalculator): implemented_properties = ['energy', 'forces', 'dipole', 'magmom'] command = 'mopac PREFIX.mop 2> /dev/null' default_parameters = dict( method='PM7', task='1SCF GRADIENTS', relscf=0.0001) methods = ['AM1', 'MNDO', 'MNDOD', 'PM3', 'PM6', 'PM6-D3', 'PM6-DH+', 'PM6-DH2', 'PM6-DH2X', 'PM6-D3H4', 'PM6-D3H4X', 'PMEP', 'PM7', 'PM7-TS', 'RM1'] def __init__(self, restart=None, ignore_bad_restart_file=False, label='mopac', atoms=None, **kwargs): """Construct MOPAC-calculator object. Parameters ========== label: str Prefix for filenames (label.mop, label.out, ...) Examples ======== Use default values to do a single SCF calculation and print the forces (task='1SCF GRADIENTS') >>> from ase.build import molecule >>> from ase.calculators.mopac import MOPAC >>> atoms = molecule('O2') >>> atoms.calc = MOPAC(label='O2') >>> atoms.get_potential_energy() >>> eigs = atoms.calc.get_eigenvalues() >>> somos = atoms.calc.get_somo_levels() >>> homo, lumo = atoms.calc.get_homo_lumo_levels() Use the internal geometry optimization of Mopac >>> atoms = molecule('H2') >>> atoms.calc = MOPAC(label='H2', task='GRADIENTS') >>> atoms.get_potential_energy() Read in and start from output file >>> atoms = MOPAC.read_atoms('H2') >>> atoms.calc.get_homo_lumo_levels() """ FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) p = self.parameters # Build string to hold .mop input file: s = p.method + ' ' + p.task + ' ' if p.relscf: s += 'RELSCF={0} '.format(p.relscf) # Write charge: charge = atoms.get_initial_charges().sum() if charge != 0: s += 'CHARGE={0} '.format(int(round(charge))) magmom = int(round(abs(atoms.get_initial_magnetic_moments().sum()))) if magmom: s += (['DOUBLET', 'TRIPLET', 'QUARTET', 'QUINTET'][magmom - 1] + ' UHF ') s += '\nTitle: ASE calculation\n\n' # Write coordinates: for xyz, symbol in zip(atoms.positions, atoms.get_chemical_symbols()): s += ' {0:2} {1} 1 {2} 1 {3} 1\n'.format(symbol, *xyz) for v, p in zip(atoms.cell, atoms.pbc): if p: s += 'Tv {0} {1} {2}\n'.format(*v) with open(self.label + '.mop', 'w') as f: f.write(s) def get_spin_polarized(self): return self.nspins == 2 def get_index(self, lines, pattern): for i, line in enumerate(lines): if line.find(pattern) != -1: return i def read(self, label): FileIOCalculator.read(self, label) if not os.path.isfile(self.label + '.out'): raise ReadError with open(self.label + '.out') as f: lines = f.readlines() self.parameters = Parameters(task='', method='') p = self.parameters parm_line = self.read_parameters_from_file(lines) for keyword in parm_line.split(): if 'RELSCF' in keyword: p.relscf = float(keyword.split('=')[-1]) elif keyword in self.methods: p.method = keyword else: p.task += keyword + ' ' p.task.rstrip() self.atoms = self.read_atoms_from_file(lines) self.read_results() def read_atoms_from_file(self, lines): """Read the Atoms from the output file stored as list of str in lines. Parameters: lines: list of str """ # first try to read from final point (last image) i = self.get_index(lines, 'FINAL POINT AND DERIVATIVES') if i is None: # XXX should we read it from the input file? assert 0, 'Not implemented' lines1 = lines[i:] i = self.get_index(lines1, 'CARTESIAN COORDINATES') j = i + 2 symbols = [] positions = [] while not lines1[j].isspace(): # continue until we hit a blank line l = lines1[j].split() symbols.append(l[1]) positions.append([float(c) for c in l[2: 2 + 3]]) j += 1 return Atoms(symbols=symbols, positions=positions) def read_parameters_from_file(self, lines): """Find and return the line that defines a Mopac calculation Parameters: lines: list of str """ for i, line in enumerate(lines): if line.find('CALCULATION DONE:') != -1: break lines1 = lines[i:] for i, line in enumerate(lines1): if line.find('****') != -1: return lines1[i + 1] def read_results(self): """Read the results, such as energy, forces, eigenvalues, etc. """ FileIOCalculator.read(self, self.label) if not os.path.isfile(self.label + '.out'): raise ReadError with open(self.label + '.out') as f: lines = f.readlines() for i, line in enumerate(lines): if line.find('TOTAL ENERGY') != -1: self.results['energy'] = float(line.split()[3]) elif line.find('FINAL HEAT OF FORMATION') != -1: self.final_hof = float(line.split()[5]) * kcal / mol elif line.find('NO. OF FILLED LEVELS') != -1: self.nspins = 1 self.no_occ_levels = int(line.split()[-1]) elif line.find('NO. OF ALPHA ELECTRON') != -1: self.nspins = 2 self.no_alpha_electrons = int(line.split()[-1]) self.no_beta_electrons = int(lines[i+1].split()[-1]) self.results['magmom'] = abs(self.no_alpha_electrons - self.no_beta_electrons) elif line.find('FINAL POINT AND DERIVATIVES') != -1: forces = [-float(line.split()[6]) for line in lines[i + 3:i + 3 + 3 * len(self.atoms)]] self.results['forces'] = np.array( forces).reshape((-1, 3)) * kcal / mol elif line.find('EIGENVALUES') != -1: if line.find('ALPHA') != -1: j = i + 1 eigs_alpha = [] while not lines[j].isspace(): eigs_alpha += [float(eps) for eps in lines[j].split()] j += 1 elif line.find('BETA') != -1: j = i + 1 eigs_beta = [] while not lines[j].isspace(): eigs_beta += [float(eps) for eps in lines[j].split()] j += 1 eigs = np.array([eigs_alpha, eigs_beta]).reshape(2, 1, -1) self.eigenvalues = eigs else: eigs = [] j = i + 1 while not lines[j].isspace(): eigs += [float(e) for e in lines[j].split()] j += 1 self.eigenvalues = np.array(eigs).reshape(1, 1, -1) elif line.find('DIPOLE ') != -1: self.results['dipole'] = np.array( lines[i + 3].split()[1:1 + 3], float) * Debye def get_eigenvalues(self, kpt=0, spin=0): return self.eigenvalues[spin, kpt] def get_homo_lumo_levels(self): eigs = self.eigenvalues if self.nspins == 1: nocc = self.no_occ_levels return np.array([eigs[0, 0, nocc - 1], eigs[0, 0, nocc]]) else: na = self.no_alpha_electrons nb = self.no_beta_electrons if na == 0: return None, self.eigenvalues[1, 0, nb - 1] elif nb == 0: return self.eigenvalues[0, 0, na - 1], None else: eah, eal = eigs[0, 0, na - 1: na + 1] ebh, ebl = eigs[1, 0, nb - 1: nb + 1] return np.array([max(eah, ebh), min(eal, ebl)]) def get_somo_levels(self): assert self.nspins == 2 na, nb = self.no_alpha_electrons, self.no_beta_electrons if na == 0: return None, self.eigenvalues[1, 0, nb - 1] elif nb == 0: return self.eigenvalues[0, 0, na - 1], None else: return np.array([self.eigenvalues[0, 0, na - 1], self.eigenvalues[1, 0, nb - 1]]) def get_final_heat_of_formation(self): """Final heat of formation as reported in the Mopac output file """ return self.final_hof ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/morse.py000066400000000000000000000027271316323560300245620ustar00rootroot00000000000000import numpy as np from math import exp, sqrt from ase.calculators.calculator import Calculator class MorsePotential(Calculator): """Morse potential. Default values chosen to be similar as Lennard-Jones. """ implemented_properties = ['energy', 'forces'] default_parameters = {'epsilon': 1.0, 'rho0': 6.0, 'r0': 1.0} nolabel = True def __init__(self, **kwargs): Calculator.__init__(self, **kwargs) def calculate(self, atoms=None, properties=['energy'], system_changes=['positions', 'numbers', 'cell', 'pbc', 'charges', 'magmoms']): Calculator.calculate(self, atoms, properties, system_changes) epsilon = self.parameters.epsilon rho0 = self.parameters.rho0 r0 = self.parameters.r0 positions = self.atoms.get_positions() energy = 0.0 forces = np.zeros((len(self.atoms), 3)) preF = 2 * epsilon * rho0 / r0 for i1, p1 in enumerate(positions): for i2, p2 in enumerate(positions[:i1]): diff = p2 - p1 r = sqrt(np.dot(diff, diff)) expf = exp(rho0 * (1.0 - r / r0)) energy += epsilon * expf * (expf - 2) F = preF * expf * (expf - 1) * diff / r forces[i1] -= F forces[i2] += F self.results['energy'] = energy self.results['forces'] = forces ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/neighborlist.py000066400000000000000000000002011316323560300261070ustar00rootroot00000000000000import warnings from ase.neighborlist import NeighborList __all__ = ['NeighborList'] warnings.warn('Moved to ase.neighborlist') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/nwchem.py000066400000000000000000000401741316323560300247140ustar00rootroot00000000000000"""This module defines an ASE interface to NWchem http://www.nwchem-sw.org/ """ import os import re import numpy as np from warnings import warn from ase.atoms import Atoms from ase.units import Hartree, Bohr from ase.io.nwchem import write_nwchem from ase.calculators.calculator import (FileIOCalculator, Parameters, ReadError, EigenvalOccupationMixin) class KPoint: def __init__(self, s): self.s = s self.eps_n = [] self.f_n = [] class NWChem(FileIOCalculator, EigenvalOccupationMixin): implemented_properties = ['energy', 'forces', 'dipole', 'magmom', 'orbitals'] command = 'nwchem PREFIX.nw > PREFIX.out' default_parameters = dict( xc='LDA', smearing=None, charge=None, task='gradient', # Warning: nwchem centers atoms by default # see ase-developers/2012-March/001356.html geometry='nocenter noautosym', convergence={'energy': None, 'density': None, 'gradient': None, 'lshift': None, # set lshift to 0.0 for nolevelshifting 'damp': None, }, basis='3-21G', basispar=None, ecp=None, so=None, spinorbit=False, odft=False, raw='') # additional outside of dft block control string def __init__(self, restart=None, ignore_bad_restart_file=False, label='nwchem', atoms=None, **kwargs): """Construct NWchem-calculator object.""" FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, **kwargs) def set(self, **kwargs): changed_parameters = FileIOCalculator.set(self, **kwargs) if changed_parameters: self.reset() def check_state(self, atoms): system_changes = FileIOCalculator.check_state(self, atoms) # Ignore unit cell and boundary conditions: if 'cell' in system_changes: system_changes.remove('cell') if 'pbc' in system_changes: system_changes.remove('pbc') return system_changes def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties, system_changes) p = self.parameters p.initial_magmoms = atoms.get_initial_magnetic_moments().tolist() p.write(self.label + '.ase') del p['initial_magmoms'] f = open(self.label + '.nw', 'w') if p.charge is not None: f.write('charge %s\n' % p.charge) write_nwchem(f, atoms, p.geometry) f.write('start\n') if p.basispar is not None: basispar = 'basis ' + p.basispar else: basispar = 'basis' def format_basis_set(string, tag=basispar): formatted = tag + '\n' lines = string.split('\n') if len(lines) > 1: formatted += string else: formatted += ' * library ' + string return formatted + '\nend\n' basis = format_basis_set(p.basis) if p.ecp is not None: basis += format_basis_set(p.ecp, 'ecp') if p.so is not None: basis += format_basis_set(p.so, 'so') f.write(basis) if p.xc == 'RHF': task = 'scf' elif p.xc == 'MP2': task = 'mp2' else: if p.spinorbit: task = 'sodft' else: task = 'dft' xc = {'LDA': 'slater pw91lda', 'PBE': 'xpbe96 cpbe96', 'revPBE': 'revpbe cpbe96', 'RPBE': 'rpbe cpbe96'}.get(p.xc, p.xc) f.write('\n' + task + '\n') f.write(' xc ' + xc + '\n') for key in p.convergence: if p.convergence[key] is not None: if key == 'lshift': if p.convergence[key] <= 0.0: f.write(' convergence nolevelshifting\n') else: f.write(' convergence %s %s\n' % (key, p.convergence[key] / Hartree)) else: f.write(' convergence %s %s\n' % (key, p.convergence[key])) if p.smearing is not None: assert p.smearing[0].lower() == 'gaussian', p.smearing f.write(' smear %s\n' % (p.smearing[1] / Hartree)) if 'mult' not in p: # Obtain multiplicity from magnetic momenta: tot_magmom = atoms.get_initial_magnetic_moments().sum() if tot_magmom < 0: mult = tot_magmom - 1 # fill minority bands else: mult = tot_magmom + 1 else: mult = p.mult if mult != int(mult): raise RuntimeError('Noninteger multiplicity not possible. ' + 'Check initial magnetic moments.') f.write(' mult %d\n' % mult) if p.odft: f.write(' odft\n') # open shell aka spin polarized dft for key in sorted(p.keys()): if key in ['charge', 'geometry', 'basis', 'basispar', 'ecp', 'so', 'xc', 'spinorbit', 'convergence', 'smearing', 'raw', 'mult', 'task', 'odft']: continue f.write(u" {0} {1}\n".format(key, p[key])) f.write('end\n') if p.raw: f.write(p.raw + '\n') f.write('\ntask ' + task + ' ' + p.task + '\n') f.close() def read(self, label): FileIOCalculator.read(self, label) if not os.path.isfile(self.label + '.out'): raise ReadError f = open(self.label + '.nw') for line in f: if line.startswith('geometry'): break symbols = [] positions = [] for line in f: if line.startswith('end'): break words = line.split() symbols.append(words[0]) positions.append([float(word) for word in words[1:]]) self.parameters = Parameters.read(self.label + '.ase') self.atoms = Atoms(symbols, positions, magmoms=self.parameters.pop('initial_magmoms')) self.read_results() def read_results(self): self.read_energy() if self.parameters.task.find('gradient') > -1: self.read_forces() if self.parameters.task.find('optimize') > -1: self.read_coordinates() self.read_forces() self.niter = self.read_number_of_iterations() self.nelect = self.read_number_of_electrons() self.nvector = self.read_number_of_bands() self.results['magmom'] = self.read_magnetic_moment() dipole = self.read_dipole_moment() if dipole is not None: self.results['dipole'] = dipole self.read_mos() def get_ibz_k_points(self): return np.array([0., 0., 0.]) def get_number_of_bands(self): return self.nvector def read_number_of_bands(self): nvector = 0 for line in open(self.label + '.out'): if line.find('Vector ') != -1: # count all printed vectors nvector += 1 if not nvector: nvector = None return nvector def get_number_of_electrons(self): return self.nelect def read_number_of_electrons(self): nelect = None for line in open(self.label + '.out'): # find last one if line.find('of electrons') != -1: nelect = float(line.split(':')[1].strip()) return nelect def get_number_of_iterations(self): return self.niter def read_number_of_iterations(self): niter = 0 for line in open(self.label + '.out'): if line.find('d= ') != -1: # count all iterations niter += 1 if not niter: niter = None return niter def read_magnetic_moment(self): magmom = None for line in open(self.label + '.out'): if line.find('Spin multiplicity') != -1: # last one magmom = float(line.split(':')[-1].strip()) if magmom < 0: magmom += 1 else: magmom -= 1 return magmom def read_dipole_moment(self): dipolemoment = [] for line in open(self.label + '.out'): for component in ['1 1 0 0', '1 0 1 0', '1 0 0 1']: if line.find(component) != -1: value = float(line.split(component)[1].split()[0]) value = value * Bohr dipolemoment.append(value) if len(dipolemoment) == 0: if len(self.atoms) == 1: dipolemoment = [0.0, 0.0, 0.0] else: return None return np.array(dipolemoment) def read_energy(self): """Read Energy from nwchem output file.""" text = open(self.label + '.out', 'r').read() lines = iter(text.split('\n')) # Energy: estring = 'Total ' if self.parameters.xc == 'RHF': estring += 'SCF' elif self.parameters.xc == 'MP2': estring += 'MP2' else: estring += 'DFT' estring += ' energy' for line in lines: if line.find(estring) >= 0: energy = float(line.split()[-1]) self.results['energy'] = energy * Hartree # All lines have been 'eaten' while iterating; loop from scratch. # (We could insert a break, but I (askhl) don't know if multiple # energies might be listed; then we would not get the last one. lines = text.split('\n') # Eigenstates spin = -1 kpts = [] for line in lines: if line.find('Molecular Orbital Analysis') >= 0: last_eps = -99999.0 spin += 1 kpts.append(KPoint(spin)) if spin >= 0: if line.find('Vector') >= 0: line = line.lower().replace('d', 'e') line = line.replace('=', ' ') word = line.split() this_occ = float(word[3]) this_eps = float(word[5]) kpts[spin].f_n.append(this_occ) kpts[spin].eps_n.append(this_eps) if this_occ < 0.1 and this_eps < last_eps: warn('HOMO above LUMO - if this is not an exicted ' + 'state - this might be introduced by levelshift.', RuntimeWarning) last_eps = this_eps self.kpts = kpts def read_forces(self): """Read Forces from nwchem output file.""" file = open(self.label + '.out', 'r') lines = file.readlines() file.close() for i, line in enumerate(lines): if line.find('ENERGY GRADIENTS') >= 0: gradients = [] for j in range(i + 4, i + 4 + len(self.atoms)): word = lines[j].split() gradients.append([float(word[k]) for k in range(5, 8)]) self.results['forces'] = -np.array(gradients) * Hartree / Bohr def read_coordinates(self): """Read updated coordinates from nwchem output file.""" file = open(self.label + '.out', 'r') lines = file.readlines() file.close() for i, line in enumerate(lines): if line.find('ENERGY GRADIENTS') >= 0: positions = [] for j in range(i + 4, i + 4 + len(self.atoms)): word = lines[j].split() positions.append([float(word[k]) for k in range(2, 5)]) self.atoms.set_positions(np.array(positions) * Bohr) def read_mos(self): """ Read the molecular orbitals and molecular orbital energies The output can be requested by specification of the print keyword {'print': '\"final vectors analysis\" \"final vectors\"'} when constructing the calculator object. """ orbitals = [] orbital_coefficients = [] orbital_coefficients_line = [] filename = self.label + '.out' orb_number = None mo_read = False mo_init = False ev_number = 0 for line in open(filename, 'r'): if 'Final MO vectors' in line: mo_read = True mo_init = False orb_number = None orbital_coefficients = [] orbital_coefficients_line = [] continue if mo_read: regex = ( r'^\s*(\d+)(\s+[+-]?\d+\.\d+)(\s+[+-]?\d+\.\d+)?' r'(\s+[+-]?\d+\.\d+)?(\s+[+-]?\d+\.\d+)?' r'(\s+[+-]?\d+\.\d+)?(\s+[+-]?\d+\.\d+)?' ) match = re.search(regex, line) if match: orb_number = int(match.group(1)) for i in range(2, 8): if match.group(i): coeff = float(match.group(i)) orbital_coefficients_line.append(coeff) if mo_init: orbital_coefficients[orb_number-1].extend( orbital_coefficients_line ) else: orbital_coefficients.append(orbital_coefficients_line) orbital_coefficients_line = [] elif orb_number: if orb_number == len(orbital_coefficients): mo_init = True if orb_number == len(orbital_coefficients[0]): mo_read = False continue if 'Vector' in line: regex = ( r'Vector\s+(\d+)\s+Occ=\s*([\w\.+-]+)\s+E=\s*([+-\.\w]+)' ) match = re.search(regex, line) if match: ev_number += 1 # for the case of geometry optimization output if int(match.group(1)) < ev_number: orbitals = [] ev_number = int(match.group(1)) orbitals.append({ 'number': int(match.group(1)), 'occupation': float(re.sub('[dD]', 'E', match.group(2))), 'energy': float(re.sub('[dD]', 'E', match.group(3))) }) if len(orbital_coefficients) > 0: # this is to transpose the nested list mos = [[x[i] for x in orbital_coefficients] for i in range(len(orbital_coefficients[0]))] for orbital in orbitals: orbital['coefficients'] = mos.pop(0) self.results['orbitals'] = orbitals def get_eigenvalues(self, kpt=0, spin=0): """Return eigenvalue array.""" return np.array(self.kpts[spin].eps_n) * Hartree def get_occupation_numbers(self, kpt=0, spin=0): """Return occupation number array.""" return self.kpts[spin].f_n def get_number_of_spins(self): """Return the number of spins in the calculation. Spin-paired calculations: 1, spin-polarized calculation: 2.""" return len(self.kpts) def get_spin_polarized(self): """Is it a spin-polarized calculation?""" return len(self.kpts) == 2 def get_mos(self, atoms): """ return eigenvectors and eigenvalues as matrices (numpy arrays) """ orbital_coefficients = [] eigen_energies = [] for orbital in self.get_property('orbitals'): orbital_coefficients.append(orbital['coefficients']) eigen_energies.append(orbital['energy']) return [ np.array(orbital_coefficients), np.diag(np.array(eigen_energies)*Hartree) ] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/octopus.py000066400000000000000000001343341316323560300251310ustar00rootroot00000000000000# coding=utf-8 """ASE-interface to Octopus. Ask Hjorth Larsen Carlos de Armas http://tddft.org/programs/octopus/ """ import os import re from subprocess import Popen, PIPE import numpy as np from ase import Atoms from ase.calculators.calculator import (FileIOCalculator, kpts2ndarray, EigenvalOccupationMixin) from ase.calculators.calculator import PropertyNotImplementedError # XXX raise ReadError upon bad read from ase.data import atomic_numbers from ase.io import read from ase.io.xsf import read_xsf from ase.units import Bohr, Angstrom, Hartree, eV, Debye # Representation of parameters from highest to lowest level of abstraction: # # * Atoms object plus reduced kwargs that specify info not stored in the Atoms # * full dictionary of kwargs incorporating info contained in the Atoms # * series of assignments (names, values). May contain duplicates. # * text in Octopus input file format # Octopus variable types and specification in Python: # # Type Examples Equivalent in Python: # ----------------------------------------------------------------------------- # flag wfs + density 'wfs + density' # float 2.7, 2.7 + pi^2 2.7, 2.7 + np.pi**2 # integer 42, rmmdiis 42, 'rmmdiis' # logical true, false, yes, no, ... True, False, 1, 0, 'yes', 'no', ... # string "stdout.txt" '"stdout.txt"' (apologies for ugliness) # # block %Coordinates List of lists: # 'H' | 0 | 0 | 0 coordinates=[["'H'", 0, 0, 0], # 'O' | 0 | 0 | 1 ["'O'", 0, 0, 1]] # % (elemements are sent through repr()) # Rules for input parameters # -------------------------- # # We make the following conversions: # dict of keyword arguments + Atoms object -> Octopus input file # and: # Octopus input file -> Atoms object + dict of keyword arguments # Below we detail some conventions and compatibility issues. # # 1) ASE always passes some parameters by default (always write # forces, etc.). They can be overridden by the user, but the # resulting behaviour is undefined. # # 2) Atoms object is used to establish some parameters: Coordinates, # Lsize, etc. All those parameters can be overridden by passing # them directly as keyword arguments. Parameters that were taken # from the Atoms object are always marked with the comment "# ASE # auto" in the input file. This is used to distinguish variables # that are overridden from variables that simply came from the # atoms object when restarting. # # 3) Some variables do not interact nicely between ASE and Octopus, # such as SubSystemCoordinates which may involve rotations. There # may be many such variables that we have not identified, but at # least the known ones will cause a suppressable # OctopusKeywordError. (This third rule has not been implemented # as of this moment.) # # 4) OctopusKeywordError is raised from Python for keywords that are # not valid according to oct-help. def read_eigenvalues_file(fd): unit = None for line in fd: m = re.match('Eigenvalues\s*\[(.+?)\]', line) if m is not None: unit = m.group(1) break line = next(fd) assert line.strip().startswith('#st'), line #fermilevel = None kpts = [] eigs = [] occs = [] for line in fd: m = re.match(r'#k.*?\(\s*(.+?),\s*(.+?),\s*(.+?)\)', line) if m: k = m.group(1, 2, 3) kpts.append(np.array(k, float)) eigs.append({}) occs.append({}) else: m = re.match(r'\s*\d+\s*(\S+)\s*(\S+)\s*(\S+)', line) if m is None: m = re.match(r'Fermi energy\s*=\s*(\S+)\s*', line) assert m is not None # We can also return the fermilevel but so far we just read # it from the static/info instead. #fermilevel = float(m.group(1)) else: spin, eig, occ = m.group(1, 2, 3) eigs[-1].setdefault(spin, []).append(float(eig)) occs[-1].setdefault(spin, []).append(float(occ)) nkpts = len(kpts) nspins = len(eigs[0]) nbands = len(eigs[0][spin]) kptsarr = np.array(kpts, float) eigsarr = np.empty((nkpts, nspins, nbands)) occsarr = np.empty((nkpts, nspins, nbands)) arrs = [eigsarr, occsarr] for arr in arrs: arr.fill(np.nan) for k in range(nkpts): for arr, lst in [(eigsarr, eigs), (occsarr, occs)]: arr[k, :, :] = [lst[k][sp] for sp in (['--'] if nspins == 1 else ['up', 'dn'])] for arr in arrs: assert not np.isnan(arr).any() eigsarr *= {'H': Hartree, 'eV': eV}[unit] return kptsarr, eigsarr, occsarr def process_special_kwargs(atoms, kwargs): kwargs = kwargs.copy() kpts = kwargs.pop('kpts', None) if kpts is not None: for kw in ['kpoints', 'reducedkpoints', 'kpointsgrid']: if kw in kwargs: raise ValueError('k-points specified multiple times') kptsarray = kpts2ndarray(kpts, atoms) nkpts = len(kptsarray) fullarray = np.empty((nkpts, 4)) fullarray[:, 0] = 1.0 / nkpts # weights fullarray[:, 1:4] = kptsarray kwargs['kpointsreduced'] = fullarray.tolist() # TODO xc=LDA/PBE etc. # The idea is to get rid of the special keywords, since the rest # will be passed to Octopus # XXX do a better check of this for kw in Octopus.special_ase_keywords: assert kw not in kwargs, kw return kwargs def is_orthorhombic(cell): return (np.diag(np.diag(cell)) == cell).all() def get_input_units(kwargs): units = kwargs.get('unitsinput', kwargs.get('units', 'atomic')).lower() if units not in ['ev_angstrom', 'atomic']: raise OctopusKeywordError('Units not supported by ASE-Octopus ' 'interface: %s' % units) return units class OctopusKeywordError(ValueError): pass # Unhandled keywords class OctopusParseError(Exception): pass # Cannot parse input file class OctopusIOError(IOError): pass # Cannot find output files def unpad(pbc, arr): # Return non-padded array from padded array. # This means removing the last element along all periodic directions. if pbc[0]: assert np.all(arr[0, :, :] == arr[-1, :, :]) arr = arr[0:-1, :, :] if pbc[1]: assert np.all(arr[:, 0, :] == arr[:, -1, :]) arr = arr[:, 0:-1, :] if pbc[2]: assert np.all(arr[:, :, 0] == arr[:, :, -1]) arr = arr[:, :, 0:-1] return np.ascontiguousarray(arr) def unpad_smarter(pbc, arr): # 'Smarter' but less easy to understand version of the above. # (untested I think) slices = [] for c, is_periodic in enumerate(pbc): if is_periodic: left = np.take(arr, [0], axis=c) right = np.take(arr, [-1], axis=c) assert np.all(left == right) slices.append(slice(0, -1)) else: slices.append(slice(None)) return np.ascontiguousarray(arr[slices]) # Parse value as written in input file *or* something that one would be # passing to the ASE interface, i.e., this might already be a boolean def octbool2bool(value): value = value.lower() if isinstance(value, int): return bool(value) if value in ['true', 't', 'yes', '1']: return True elif value in ['no', 'f', 'false', '0']: return False else: raise ValueError('Failed to interpret "%s" as a boolean.' % value) def list2block(name, rows): """Construct 'block' of Octopus input. convert a list of rows to a string with the format x | x | .... for the octopus input file""" lines = [] lines.append('%' + name) for row in rows: lines.append(' ' + ' | '.join(str(obj) for obj in row)) lines.append('%') return lines def normalize_keywords(kwargs): """Reduce keywords to unambiguous form (lowercase).""" newkwargs = {} for arg, value in kwargs.items(): lkey = arg.lower() newkwargs[lkey] = value return newkwargs def get_octopus_keywords(): """Get dict mapping all normalized keywords to pretty keywords.""" proc = Popen(['oct-help', '--search', ''], stdout=PIPE) keywords = proc.stdout.read().decode().split() return normalize_keywords(dict(zip(keywords, keywords))) def input_line_iter(lines): """Convenient iterator for parsing input files 'cleanly'. Discards comments etc.""" for line in lines: line = line.split('#')[0].strip() if not line or line.isspace(): continue line = line.strip() yield line def block2list(namespace, lines, header=None): """Parse lines of block and return list of lists of strings.""" lines = iter(lines) block = [] if header is None: header = next(lines) assert header.startswith('%'), header name = header[1:].strip().lower() for line in lines: if line.startswith('%'): # Could also say line == '%' most likely. break tokens = [namespace.evaluate(token) for token in line.strip().split('|')] # XXX will fail for string literals containing '|' block.append(tokens) return name, block class OctNamespace: def __init__(self): self.names = {} self.consts = {'pi': np.pi, 'angstrom': 1. / Bohr, 'ev': 1. / Hartree, 'yes': True, 'no': False, 't': True, 'f': False, 'i': 1j, # This will probably cause trouble 'true': True, 'false': False} def evaluate(self, value): value = value.strip() for char in '"', "'": # String literal if value.startswith(char): assert value.endswith(char) return value value = value.lower() if value in self.consts: # boolean or other constant return self.consts[value] if value in self.names: # existing variable return self.names[value] try: # literal integer v = int(value) except ValueError: pass else: if v == float(v): return v try: # literal float return float(value) except ValueError: pass if ('*' in value or '/' in value and not any(char in value for char in '()+')): floatvalue = 1.0 op = '*' for token in re.split(r'([\*/])', value): if token in '*/': op = token continue v = self.evaluate(token) try: v = float(v) except TypeError: try: v = complex(v) except ValueError: break except ValueError: break # Cannot evaluate expression else: if op == '*': floatvalue *= v else: assert op == '/', op floatvalue /= v else: # Loop completed successfully return floatvalue return value # unknown name, or complex arithmetic expression def add(self, name, value): value = self.evaluate(value) self.names[name.lower().strip()] = value def parse_input_file(fd): namespace = OctNamespace() lines = input_line_iter(fd) blocks = {} while True: try: line = next(lines) except StopIteration: break else: if line.startswith('%'): name, value = block2list(namespace, lines, header=line) blocks[name] = value else: tokens = line.split('=', 1) assert len(tokens) == 2, tokens name, value = tokens namespace.add(name, value) namespace.names.update(blocks) return namespace.names def kwargs2cell(kwargs): # kwargs -> cell + remaining kwargs # cell will be None if not ASE-compatible. # # Returns numbers verbatim; caller must convert units. kwargs = normalize_keywords(kwargs) if boxshape_is_ase_compatible(kwargs): kwargs.pop('boxshape', None) if 'lsize' in kwargs: Lsize = kwargs.pop('lsize') if not isinstance(Lsize, list): Lsize = [[Lsize] * 3] assert len(Lsize) == 1 cell = np.array([2 * float(l) for l in Lsize[0]]) elif 'latticeparameters' in kwargs: # Eval latparam and latvec latparam = np.array(kwargs.pop('latticeparameters'), float).T cell = np.array(kwargs.pop('latticevectors', np.eye(3)), float) for a, vec in zip(latparam, cell): vec *= a assert cell.shape == (3, 3) else: cell = None return cell, kwargs def boxshape_is_ase_compatible(kwargs): pdims = int(kwargs.get('periodicdimensions', 0)) default_boxshape = 'parallelepiped' if pdims > 0 else 'minimum' boxshape = kwargs.get('boxshape', default_boxshape).lower() # XXX add support for experimental keyword 'latticevectors' return boxshape == 'parallelepiped' def kwargs2atoms(kwargs, directory=None): """Extract atoms object from keywords and return remaining keywords. Some keyword arguments may refer to files. The directory keyword may be necessary to resolve the paths correctly, and is used for example when running 'ase gui somedir/inp'.""" kwargs = normalize_keywords(kwargs) # Only input units accepted nowadays are 'atomic'. # But if we are loading an old file, and it specifies something else, # we can be sure that the user wanted that back then. units = get_input_units(kwargs) atomic_units = (units == 'atomic') if atomic_units: length_unit = Bohr else: length_unit = Angstrom coord_keywords = ['coordinates', 'xyzcoordinates', 'pdbcoordinates', 'reducedcoordinates', 'xsfcoordinates', 'xsfcoordinatesanimstep'] nkeywords = 0 for keyword in coord_keywords: if keyword in kwargs: nkeywords += 1 if nkeywords == 0: raise OctopusParseError('No coordinates') elif nkeywords > 1: raise OctopusParseError('Multiple coordinate specifications present. ' 'This may be okay in Octopus, but we do not ' 'implement it.') def get_positions_from_block(keyword): # %Coordinates or %ReducedCoordinates -> atomic numbers, positions. block = kwargs.pop(keyword) positions = [] numbers = [] tags = [] types = {} for row in block: assert len(row) in [ndims + 1, ndims + 2] row = row[:ndims + 1] sym = row[0] assert sym.startswith('"') or sym.startswith("'") assert sym[0] == sym[-1] sym = sym[1:-1] pos0 = np.zeros(3) ndim = int(kwargs.get('dimensions', 3)) pos0[:ndim] = [float(element) for element in row[1:]] number = atomic_numbers.get(sym) # Use 0 ~ 'X' for unknown? tag = 0 if number is None: if sym not in types: tag = len(types) + 1 types[sym] = tag number = 0 tag = types[sym] tags.append(tag) numbers.append(number) positions.append(pos0) positions = np.array(positions) tags = np.array(tags, int) if types: ase_types = {} for sym, tag in types.items(): ase_types[('X', tag)] = sym info = {'types': ase_types} # 'info' dict for Atoms object else: tags = None info = None return numbers, positions, tags, info def read_atoms_from_file(fname, fmt): assert fname.startswith('"') or fname.startswith("'") assert fname[0] == fname[-1] fname = fname[1:-1] if directory is not None: fname = os.path.join(directory, fname) # XXX test xyz, pbd and xsf if fmt == 'xsf' and 'xsfcoordinatesanimstep' in kwargs: anim_step = kwargs.pop('xsfcoordinatesanimstep') theslice = slice(anim_step, anim_step + 1, 1) # XXX test animstep else: theslice = slice(None, None, 1) images = read(fname, theslice, fmt) if len(images) != 1: raise OctopusParseError('Expected only one image. Don\'t know ' 'what to do with %d images.' % len(images)) return images[0] # We will attempt to extract cell and pbc from kwargs if 'lacking'. # But they might have been left unspecified on purpose. # # We need to keep track of these two variables "externally" # because the Atoms object assigns values when they are not given. cell = None pbc = None adjust_positions_by_half_cell = False atoms = None xsfcoords = kwargs.pop('xsfcoordinates', None) if xsfcoords is not None: atoms = read_atoms_from_file(xsfcoords, 'xsf') atoms.positions *= length_unit atoms.cell *= length_unit # As it turns out, non-periodic xsf is not supported by octopus. # Also, it only supports fully periodic or fully non-periodic.... # So the only thing that we can test here is 3D fully periodic. if sum(atoms.pbc) != 3: raise NotImplementedError('XSF not fully periodic with Octopus') cell = atoms.cell pbc = atoms.pbc # Position adjustment doesn't actually matter but this should work # most 'nicely': adjust_positions_by_half_cell = False xyzcoords = kwargs.pop('xyzcoordinates', None) if xyzcoords is not None: atoms = read_atoms_from_file(xyzcoords, 'xyz') atoms.positions *= length_unit adjust_positions_by_half_cell = True pdbcoords = kwargs.pop('pdbcoordinates', None) if pdbcoords is not None: atoms = read_atoms_from_file(pdbcoords, 'pdb') pbc = atoms.pbc adjust_positions_by_half_cell = True # Due to an error in ASE pdb, we can only test the nonperiodic case. # atoms.cell *= length_unit # XXX cell? Not in nonperiodic case... atoms.positions *= length_unit if sum(atoms.pbc) != 0: raise NotImplementedError('Periodic pdb not supported by ASE.') if cell is None: # cell could not be established from the file, so we set it on the # Atoms now if possible: cell, kwargs = kwargs2cell(kwargs) if cell is not None: cell *= length_unit if cell is not None and atoms is not None: atoms.cell = cell # In case of boxshape = sphere and similar, we still do not have # a cell. ndims = int(kwargs.get('dimensions', 3)) if ndims != 3: raise NotImplementedError('Only 3D calculations supported.') coords = kwargs.get('coordinates') if coords is not None: numbers, pos, tags, info = get_positions_from_block('coordinates') pos *= length_unit adjust_positions_by_half_cell = True atoms = Atoms(cell=cell, numbers=numbers, positions=pos, tags=tags, info=info) rcoords = kwargs.get('reducedcoordinates') if rcoords is not None: numbers, spos, tags, info = get_positions_from_block( 'reducedcoordinates') if cell is None: raise ValueError('Cannot figure out what the cell is, ' 'and thus cannot interpret reduced coordinates.') atoms = Atoms(cell=cell, numbers=numbers, scaled_positions=spos, tags=tags, info=info) if atoms is None: raise OctopusParseError('Apparently there are no atoms.') # Either we have non-periodic BCs or the atoms object already # got its BCs from reading the file. In the latter case # we shall override only if PeriodicDimensions was given specifically: if pbc is None: pdims = int(kwargs.pop('periodicdimensions', 0)) pbc = np.zeros(3, dtype=bool) pbc[:pdims] = True atoms.pbc = pbc if (cell is not None and cell.shape == (3,) and adjust_positions_by_half_cell): nonpbc = (atoms.pbc == 0) atoms.positions[:, nonpbc] += np.array(cell)[None, nonpbc] / 2.0 return atoms, kwargs def atoms2kwargs(atoms, use_ase_cell): kwargs = {} positions = atoms.positions / Bohr if use_ase_cell: cell = atoms.cell / Bohr cell_offset = 0.5 * cell.sum(axis=0) positions -= cell_offset if is_orthorhombic(cell): Lsize = 0.5 * np.diag(cell) kwargs['lsize'] = [[repr(size) for size in Lsize]] # ASE uses (0...cell) while Octopus uses -L/2...L/2. # Lsize is really cell / 2, and we have to adjust our # positions by subtracting Lsize (see construction of the coords # block) in non-periodic directions. else: kwargs['latticevectors'] = cell.tolist() types = atoms.info.get('types', {}) coord_block = [] for sym, pos, tag in zip(atoms.get_chemical_symbols(), positions, atoms.get_tags()): if sym == 'X': sym = types.get((sym, tag)) if sym is None: raise ValueError('Cannot represent atom X without tags and ' 'species info in atoms.info') coord_block.append([repr(sym)] + [repr(x) for x in pos]) kwargs['coordinates'] = coord_block npbc = sum(atoms.pbc) for c in range(npbc): if not atoms.pbc[c]: msg = ('Boundary conditions of Atoms object inconsistent ' 'with requirements of Octopus. pbc must be either ' '000, 100, 110, or 111.') raise ValueError(msg) kwargs['periodicdimensions'] = npbc # TODO InitialSpins # # TODO can use maximumiterations + output/outputformat to extract # things from restart file into output files without trouble. # # Velocities etc.? return kwargs def generate_input(atoms, kwargs, normalized2pretty): """Convert atoms and keyword arguments to Octopus input file.""" _lines = [] def append(line): _lines.append(line) def extend(lines): _lines.extend(lines) append('') def setvar(key, var): prettykey = normalized2pretty[key] append('%s = %s' % (prettykey, var)) for kw in ['lsize', 'latticevectors', 'latticeparameters']: assert kw not in kwargs defaultboxshape = 'parallelepiped' if atoms.pbc.any() else 'minimum' boxshape = kwargs.get('boxshape', defaultboxshape).lower() use_ase_cell = (boxshape == 'parallelepiped') atomskwargs = atoms2kwargs(atoms, use_ase_cell) if use_ase_cell: if 'lsize' in atomskwargs: block = list2block('LSize', atomskwargs['lsize']) elif 'latticevectors' in atomskwargs: extend(list2block('LatticeParameters', [[1., 1., 1.]])) block = list2block('LatticeVectors', atomskwargs['latticevectors']) extend(block) # Allow override or issue errors? pdim = 'periodicdimensions' if pdim in kwargs: if int(kwargs[pdim]) != int(atomskwargs[pdim]): raise ValueError('Cannot reconcile periodicity in input ' 'with that of Atoms object') setvar('periodicdimensions', atomskwargs[pdim]) # We like to output forces if 'output' in kwargs: output_string = kwargs.pop('output') output_tokens = [token.strip() for token in output_string.lower().split('+')] else: output_tokens = [] if 'forces' not in output_tokens: output_tokens.append('forces') setvar('output', ' + '.join(output_tokens)) # It is illegal to have output forces without any OutputFormat. # Even though the forces are written in the same format no matter # OutputFormat. Thus we have to make one up: # Old Octopus has 'OutputHow' but new Octopus has 'OutputFormat'. # We have to write the right one. outputkw = 'outputformat' if outputkw not in normalized2pretty: outputkw = 'outputhow' assert outputkw in normalized2pretty if outputkw not in kwargs: setvar(outputkw, 'xcrysden') for key, val in kwargs.items(): # Most datatypes are straightforward but blocks require some attention. if isinstance(val, list): append('') dict_data = list2block(normalized2pretty[key], val) extend(dict_data) else: setvar(key, str(val)) append('') coord_block = list2block('Coordinates', atomskwargs['coordinates']) extend(coord_block) return '\n'.join(_lines) def read_static_info_kpoints(fd): for line in fd: if line.startswith('List of k-points'): break tokens = next(fd).split() assert tokens == ['ik', 'k_x', 'k_y', 'k_z', 'Weight'] bar = next(fd) assert bar.startswith('---') kpts = [] weights = [] for line in fd: # Format: index kx ky kz weight m = re.match(r'\s*\d+\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)', line) if m is None: break kxyz = m.group(1, 2, 3) weight = m.group(4) kpts.append(kxyz) weights.append(weight) ibz_k_points = np.array(kpts, float) k_point_weights = np.array(weights, float) return dict(ibz_k_points=ibz_k_points, k_point_weights=k_point_weights) def read_static_info_eigenvalues(fd, energy_unit): values_sknx = {} nbands = 0 fermilevel = None for line in fd: line = line.strip() if line.startswith('#'): continue if not line[:1].isdigit(): m = re.match(r'Fermi energy\s*=\s*(\S+)', line) if m is not None: fermilevel = float(m.group(1)) * energy_unit break tokens = line.split() nbands = max(nbands, int(tokens[0])) energy = float(tokens[2]) * energy_unit occupation = float(tokens[3]) values_sknx.setdefault(tokens[1], []).append((energy, occupation)) nspins = len(values_sknx) if nspins == 1: val = [values_sknx['--']] else: val = [values_sknx['up'], values_sknx['dn']] val = np.array(val, float) nkpts, remainder = divmod(len(val[0]), nbands) assert remainder == 0 eps_skn = val[:, :, 0].reshape(nspins, nkpts, nbands) occ_skn = val[:, :, 1].reshape(nspins, nkpts, nbands) eps_skn = eps_skn.transpose(1, 0, 2).copy() occ_skn = occ_skn.transpose(1, 0, 2).copy() assert eps_skn.flags.contiguous d = dict(nspins=nspins, nkpts=nkpts, nbands=nbands, eigenvalues=eps_skn, occupations=occ_skn) if fermilevel is not None: d.update(efermi=fermilevel) return d def read_static_info_energy(fd, energy_unit): def get(name): for line in fd: if line.strip().startswith(name): return float(line.split('=')[-1].strip()) * energy_unit return dict(energy=get('Total'), free_energy=get('Free')) def read_static_info(fd): results = {} def get_energy_unit(line): # Convert "title [unit]": ---> unit return {'[eV]': eV, '[H]': Hartree}[line.split()[1].rstrip(':')] for line in fd: if line.strip('*').strip().startswith('Brillouin zone'): results.update(read_static_info_kpoints(fd)) elif line.startswith('Eigenvalues ['): unit = get_energy_unit(line) results.update(read_static_info_eigenvalues(fd, unit)) elif line.startswith('Energy ['): unit = get_energy_unit(line) results.update(read_static_info_energy(fd, unit)) elif line.startswith('Total Magnetic Moment'): if 0: line = next(fd) values = line.split() results['magmom'] = float(values[-1]) line = next(fd) assert line.startswith('Local Magnetic Moments') line = next(fd) assert line.split() == ['Ion', 'mz'] # Reading Local Magnetic Moments mag_moment = [] for line in fd: if line == '\n': break # there is no more thing to search for line = line.replace('\n', ' ') values = line.split() mag_moment.append(float(values[-1])) results['magmoms'] = np.array(mag_moment) elif line.startswith('Dipole'): assert line.split()[-1] == '[Debye]' dipole = [float(next(fd).split()[-1]) for i in range(3)] results['dipole'] = np.array(dipole) * Debye elif line.startswith('Forces'): forceunitspec = line.split()[-1] forceunit = {'[eV/A]': eV / Angstrom, '[H/b]': Hartree / Bohr}[forceunitspec] forces = [] line = next(fd) assert line.strip().startswith('Ion') for line in fd: if line.strip().startswith('---'): break tokens = line.split()[-3:] forces.append([float(f) for f in tokens]) results['forces'] = np.array(forces) * forceunit elif line.startswith('Fermi'): tokens = line.split() unit = {'eV': eV, 'H': Hartree}[tokens[-1]] eFermi = float(tokens[-2]) * unit results['efermi'] = eFermi if 'ibz_k_points' not in results: results['ibz_k_points'] = np.zeros((1, 3)) results['k_point_weights'] = np.ones(1) if 0: #'efermi' not in results: # Find HOMO level. Note: This could be a very bad # implementation with fractional occupations if the Fermi # level was not found otherwise. all_energies = results['eigenvalues'].ravel() all_occupations = results['occupations'].ravel() args = np.argsort(all_energies) for arg in args[::-1]: if all_occupations[arg] > 0.1: break eFermi = all_energies[arg] results['efermi'] = eFermi return results class Octopus(FileIOCalculator, EigenvalOccupationMixin): """Octopus calculator. The label is always assumed to be a directory.""" implemented_properties = ['energy', 'forces', 'dipole', #'magmom', 'magmoms' ] troublesome_keywords = set(['subsystemcoordinates', 'subsystems', 'unitsinput', 'unitsoutput', 'pdbcoordinates', 'xyzcoordinates', 'xsfcoordinates', 'xsfcoordinatesanimstep', 'reducedcoordinates']) special_ase_keywords = set(['kpts']) command = 'octopus' def __init__(self, restart=None, label=None, atoms=None, command=None, ignore_troublesome_keywords=None, check_keywords=True, _autofix_outputformats=False, **kwargs): """Create Octopus calculator. Label is always taken as a subdirectory. Restart is taken to be a label.""" # XXX support the specially defined ASE parameters, # "smear" etc. # We run oct-help to get a list of all keywords. # This makes us able to robustly construct the input file # in the face of changing octopus versions, and also of # early partial verification of user input. if check_keywords: try: octopus_keywords = get_octopus_keywords() except OSError as err: msg = ('Could not obtain Octopus keyword list from ' 'command oct-help: %s. Octopus not installed in ' 'accordance with expectations. ' 'Use check_octopus_keywords=False to override.' % err) raise OSError(msg) else: octopus_keywords = None self.octopus_keywords = octopus_keywords self._autofix_outputformats = _autofix_outputformats if restart is not None: if label is not None and restart != label: raise ValueError('restart and label are mutually exclusive ' 'or must at the very least coincide.') label = restart if label is None: label = 'ink-pool' if ignore_troublesome_keywords: trouble = set(self.troublesome_keywords) for keyword in ignore_troublesome_keywords: trouble.remove(keyword) self.troublesome_keywords = trouble self.kwargs = {} FileIOCalculator.__init__(self, restart=restart, ignore_bad_restart_file=False, label=label, atoms=atoms, command=command, **kwargs) # The above call triggers set() so we can update self.kwargs. def set_label(self, label): # Octopus does not support arbitrary namings of all the output files. # But we can decide that we always dump everything in a directory. if not label.endswith('/'): label += '/' FileIOCalculator.set_label(self, label) def set(self, **kwargs): """Set octopus input file parameters.""" kwargs = normalize_keywords(kwargs) if self.octopus_keywords is not None: self.check_keywords_exist(kwargs) for keyword in kwargs: if keyword in self.troublesome_keywords: msg = ('ASE-Octopus interface will probably misbehave with ' 'the %s parameter. Optimists may use ' 'Octopus(ignore_troublesome_keywords=[kw1, kw2, ...])' 'to override this.' % keyword) raise OctopusKeywordError(msg) changes = FileIOCalculator.set(self, **kwargs) if changes: self.results.clear() self.kwargs.update(kwargs) # XXX should use 'Parameters' but don't know how def check_keywords_exist(self, kwargs): keywords = list(kwargs.keys()) for keyword in keywords: if (keyword not in self.octopus_keywords and keyword not in self.special_ase_keywords): if self._autofix_outputformats: if (keyword == 'outputhow' and 'outputformat' in self.octopus_keywords): kwargs['outputformat'] = kwargs.pop('outputhow') if (keyword == 'outputformat' and 'outputhow' in self.octopus_keywords): kwargs['outputhow'] = kwargs.pop('outputformat') continue msg = ('Unknown Octopus keyword %s. Use oct-help to list ' 'available keywords.') % keyword raise OctopusKeywordError(msg) def get_xc_functional(self): """Return the XC-functional identifier. 'LDA', 'PBE', ...""" return self.kwargs.get('xcfunctional', 'LDA') def get_bz_k_points(self): """Return all the k-points in the 1. Brillouin zone. The coordinates are relative to reciprocal latice vectors.""" # Have not found nice way of extracting this information # from Octopus. Thus unimplemented. -askhl raise NotImplementedError def get_charges(self, atoms=None): raise PropertyNotImplementedError def get_fermi_level(self): return self.results['efermi'] def get_potential_energies(self): raise PropertyNotImplementedError def get_dipole_moment(self, atoms=None): if 'dipole' not in self.results: msg = ('Dipole moment not calculated.\n' 'You may wish to use SCFCalculateDipole=True') raise OctopusIOError(msg) return self.results['dipole'] def get_stresses(self): raise PropertyNotImplementedError def _read_array(self, fname, outputkeyword=None): path = self._getpath('static/%s' % fname) if not os.path.exists(path): msg = 'Path not found: %s' % path if outputkeyword is not None: msg += ('\nIt appears that the %s has not been saved.\n' 'Be sure to specify Output=\'%s\' in the input.' % (outputkeyword, outputkeyword)) raise OctopusIOError(msg) # If this causes an error now that the file exists, things are # messed up. Then it is better that the error propagates as normal return read_xsf(path, read_data=True) def read_vn(self, basefname, keywordname): static_dir = self._getpath('static') assert os.path.isdir(static_dir) if self.get_spin_polarized(): spin1, _atoms = self._read_array('%s-sp1.xsf' % basefname, keywordname) spin2, _atoms = self._read_array('%s-sp2.xsf' % basefname, keywordname) array = np.array([spin1, spin2]) # shape 2, nx, ny, nz else: array, _atoms = self._read_array('%s.xsf' % basefname, keywordname) array = array[None] # shape 1, nx, ny, nx assert len(array.shape) == 4 return array def _unpad_periodic(self, array): return unpad(self.get_atoms().pbc, array) def _pad_unperiodic(self, array): pbc = self.get_atoms().pbc orig_shape = array.shape newshape = [orig_shape[c] + (0 if pbc[c] else 1) for c in range(3)] out = np.zeros(newshape, dtype=array.dtype) nx, ny, nz = orig_shape out[:nx, :ny, :nz] = array return out def _pad_correctly(self, array, pad): array = self._unpad_periodic(array) if pad: array = self._pad_unperiodic(array) return array def get_pseudo_density(self, spin=None, pad=True): """Return pseudo-density array. If *spin* is not given, then the total density is returned. Otherwise, the spin up or down density is returned (spin=0 or 1).""" if 'density_sg' not in self.results: self.results['density_sg'] = self.read_vn('density', 'density') density_sg = self.results['density_sg'] if spin is None: density_g = density_sg.sum(axis=0) else: assert spin == 0 or (spin == 1 and len(density_sg) == 2) density_g = density_sg[spin] return self._pad_correctly(density_g, pad) def get_effective_potential(self, spin=0, pad=True): if spin is None: # Annoying case because it works as an index! raise ValueError('spin=None') if 'potential_sg' not in self.results: self.results['potential_sg'] = self.read_vn('vks', 'potential') array = self.results['potential_sg'][spin] return self._pad_correctly(array, pad) def get_pseudo_wave_function(self, band=0, kpt=0, spin=0, broadcast=True, pad=True): """Return pseudo-wave-function array.""" assert band < self.get_number_of_bands() ibz_k_pts = self.get_ibz_k_points() forcecomplex = self.kwargs.get('forcecomplex') if forcecomplex is not None: forcecomplex = octbool2bool(forcecomplex) if len(ibz_k_pts) > 1 or ibz_k_pts.any() or forcecomplex: dtype = complex else: dtype = float # Might there be more issues that determine dtype? if self.get_spin_polarized(): kpt_index = 2 * kpt + spin # XXX this is *probably* correct else: kpt_index = kpt # The ASE convention is that kpts and bands start from 0, # whereas in Octopus they start from 1. So always add 1 # when looking for filenames. kpt_index += 1 band_index = band + 1 tokens = ['wf'] if len(ibz_k_pts) > 1 or self.get_spin_polarized(): tokens.append('-k%03d' % kpt_index) tokens.append('-st%04d' % band_index) name = ''.join(tokens) if dtype == float: array, _atoms = self._read_array('%s.xsf' % name, 'wfs') else: array_real, _atoms = self._read_array('%s.real.xsf' % name, 'wfs') array_imag, _atoms = self._read_array('%s.imag.xsf' % name, 'wfs') array = array_real + 1j * array_imag return self._pad_correctly(array, pad) def get_number_of_spins(self): """Return the number of spins in the calculation. Spin-paired calculations: 1, spin-polarized calculation: 2.""" return 2 if self.get_spin_polarized() else 1 def get_spin_polarized(self): """Is it a spin-polarized calculation?""" sc = self.kwargs.get('spincomponents') if sc is None or sc == 'unpolarized': return False elif sc == 'spin_polarized' or sc == 'polarized': return True else: raise NotImplementedError('SpinComponents keyword %s' % sc) def get_ibz_k_points(self): """Return k-points in the irreducible part of the Brillouin zone. The coordinates are relative to reciprocal latice vectors.""" return self.results['ibz_k_points'] def get_k_point_weights(self): return self.results['k_point_weights'] def get_number_of_bands(self): return self.results['nbands'] #def get_magnetic_moments(self, atoms=None): # if self.results['nspins'] == 1: # return np.zeros(len(self.atoms)) # return self.results['magmoms'].copy() #def get_magnetic_moment(self, atoms=None): # if self.results['nspins'] == 1: # return 0.0 # return self.results['magmom'] def get_occupation_numbers(self, kpt=0, spin=0): return self.results['occupations'][kpt, spin].copy() def get_eigenvalues(self, kpt=0, spin=0): return self.results['eigenvalues'][kpt, spin].copy() def _getpath(self, path, check=False): path = os.path.join(self.directory, path) if check: if not os.path.exists(path): raise OctopusIOError('No such file or directory: %s' % path) return path def get_atoms(self): return FileIOCalculator.get_atoms(self) def read_results(self): """Read octopus output files and extract data.""" fd = open(self._getpath('static/info', check=True)) self.results.update(read_static_info(fd)) # If the eigenvalues file exists, we get the eigs/occs from that one. # This probably means someone ran Octopus in 'unocc' mode to # get eigenvalues (e.g. for band structures), and the values in # static/info will be the old (selfconsistent) ones. try: eigpath = self._getpath('static/eigenvalues', check=True) except OctopusIOError: pass else: with open(eigpath) as fd: kpts, eigs, occs = read_eigenvalues_file(fd) kpt_weights = np.ones(len(kpts)) # XXX ? Or 1 / len(kpts) ? self.results.update(eigenvalues=eigs, occupations=occs, ibz_k_points=kpts, k_point_weights=kpt_weights) def write_input(self, atoms, properties=None, system_changes=None): FileIOCalculator.write_input(self, atoms, properties=properties, system_changes=system_changes) octopus_keywords = self.octopus_keywords if octopus_keywords is None: # Will not do automatic pretty capitalization octopus_keywords = self.kwargs txt = generate_input(atoms, process_special_kwargs(atoms, self.kwargs), octopus_keywords) fd = open(self._getpath('inp'), 'w') fd.write(txt) fd.close() def read(self, label): # XXX label of restart file may not be the same as actual label! # This makes things rather tricky. We first set the label to # that of the restart file and arbitrarily expect the remaining code # to rectify any consequent inconsistencies. self.set_label(label) FileIOCalculator.read(self, label) inp_path = self._getpath('inp') fd = open(inp_path) kwargs = parse_input_file(fd) if self.octopus_keywords is not None: self.check_keywords_exist(kwargs) self.atoms, kwargs = kwargs2atoms(kwargs) self.kwargs.update(kwargs) fd.close() self.read_results() @classmethod def recipe(cls, **kwargs): system = Atoms() calc = Octopus(CalculationMode='recipe', **kwargs) system.set_calculator(calc) try: system.get_potential_energy() except OctopusIOError: pass else: raise OctopusIOError('Expected recipe, but found ' 'useful physical output!') def main(): from ase.build import bulk from ase.calculators.interfacechecker import check_interface system = bulk('Si', 'diamond', orthorhombic=True) calc = Octopus(Spacing=0.275, KPointsGrid=[[2, 2, 2]], KPointsUseSymmetries=True, Smearing=0.1, SmearingFunction='fermi_dirac', ExtraStates=2, stdout='"stdout.log"', stderr='"stderr.log"', Output='density + potential + wfs', OutputFormat='xcrysden') system.set_calculator(calc) system.get_potential_energy() check_interface(calc) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/onetep.py000066400000000000000000000360121316323560300247210ustar00rootroot00000000000000# -*- coding: utf-8 -*- """This module defines an interface to ONETEP for use by the ASE. Authors: Edward Tait, ewt23@cam.ac.uk Based on castep.py by: Max Hoffmann, max.hoffmann@ch.tum.de Jörg Meyer, joerg.meyer@ch.tum.de """ from copy import deepcopy from os.path import isfile from warnings import warn from numpy import array from ase import Atoms from ase.calculators.calculator import FileIOCalculator, ReadError from ase.parallel import paropen from ase.units import Bohr, Hartree __all__ = ['Onetep'] class Onetep(FileIOCalculator): """Implements the calculator for the onetep linear scaling DFT code. Recomended ASE_ONETEP_COMMAND format is "onetep_executable_name PREFIX.dat > PREFIX.out 2> PREFIX.err" """ implemented_properties = ['energy', 'forces'] # Used to indicate 'parameters' which shouldn't be written to # the onetep input file in the standard : format # for example the NGWF radius is used in the species block and isn't # written elsewhere in the input file _dummy_parameters = ['ngwf_radius', 'xc', 'species_ngwf_radius', 'species_ngwf_number', 'species_solver'] default_parameters = {'cutoff_energy': '1000 eV', 'kernel_cutoff': '1000 bohr', 'ngwf_radius': 12.0} name = 'onetep' def __init__(self, restart=None, ignore_bad_restart_file=False, label=None, command=None, atoms=None, **kwargs): FileIOCalculator.__init__(self, restart, ignore_bad_restart_file, label, atoms, command, **kwargs) self.species = [] self.species_cond = [] self.pseudos = [] self.restart = False self.prefix = label self.directory = '.' def read(self, label): """Read a onetep .out file into the current instance.""" FileIOCalculator.read(self, label) onetep_file = self.label + '.out' warnings = [] try: out = paropen(onetep_file, 'r') except IOError: raise ReadError('Could not open output file "%s"' % onetep_file) # keep track of what we've read in read_lattice = False read_species = False read_positions = False line = out.readline() if self.atoms is None: self.atoms = Atoms() self.atoms.calc = self while line: clean_line = line.strip().lower() if '%block lattice_cart' in clean_line: self._read_lattice(out) read_lattice = True elif '%block species_pot' in clean_line: self._read_species_pot(out) elif '%block species' in clean_line: self._read_species(out) read_species = True elif '%block positions_abs' in clean_line: self._read_positions(out) read_positions = True elif '%block species_cond' in clean_line: self._read_species_cond(out) elif 'warn' in line.lower(): warnings.append(line) line = out.readline() out.close() if warnings: warn('WARNING: %s contains warnings' % onetep_file) for warning in warnings: warn(warning) if not (read_lattice and read_species and read_positions): raise ReadError('Failed to read in essential calculation' ' data from output file "%s"' % onetep_file) self.read_results(label) def read_results(self): FileIOCalculator.read_results(self) onetep_file = self.label + '.out' warnings = [] try: out = paropen(onetep_file, 'r') except IOError: raise ReadError('Could not open output file "%s"' % onetep_file) line = out.readline() while line: if '| Total' in line: self.results['energy'] = Hartree * float(line.split()[-2]) elif ('Element Atom Cartesian components (Eh/a)' in line): self._read_forces(out) elif 'warn' in line.lower(): warnings.append(line) line = out.readline() if warnings: warn('WARNING: %s contains warnings' % onetep_file) for warning in warnings: warn(warning) def _read_lattice(self, out): """ read the lattice parameters out of a onetep .out formatted file stream""" axes = [] l = out.readline() # onetep assumes lengths are in atomic units by default conv_fac = Bohr if 'ang' in l: l = out.readline() conv_fac = 1.0 elif 'bohr' in l: l = out.readline() for _ in range(0, 3): l = l.strip() p = l.split() if len(p) != 3: raise ReadError('Malfromed Lattice block line "%s"' % l) try: axes.append([conv_fac * float(comp) for comp in p[0:3]]) except ValueError: raise ReadError("Can't parse line \"%s\" in axes block" % l) l = out.readline() self.atoms.set_cell(axes) def _read_positions(self, out): """Read the contents of a positions_abs block into the calculator's atoms object, setting both species and positions. Tries to strip out comment lines and is aware of angstom vs. bohr""" line = out.readline() # onetep assumes lengths are in atomic units by default conv_fac = Bohr if 'ang' in line: line = out.readline() conv_fac = 1.0 elif 'bohr' in line: line = out.readline() symbols = [] positions = [] while '%endblock' not in line.lower(): line = line.strip() if line[0] != '#': atom, suffix = line.split(None, 1) pos = suffix.split(None, 3)[0:3] try: pos = [conv_fac * float(p) for p in pos] except ValueError: raise ReadError('Malformed position line "%s"', line) symbols.append(atom) positions.append(pos) line = out.readline() self.atoms.set_chemical_symbols(symbols) self.atoms.set_positions(positions) def _read_species(self, out): """ Read in species block from a onetep output file""" line = out.readline().strip() species = [] while '%endblock' not in line.lower(): atom, element, z, nngwf, ngwf_radius = line.split(None, 5) z = int(z) nngwf = int(nngwf) ngwf_radius = float(ngwf_radius) species.append((atom, element, z, nngwf, ngwf_radius,)) line = out.readline().strip() self.set_species(species) def _read_species_pot(self, out): """ Read in pseudopotential information from a onetep output file""" line = out.readline().strip() pots = [] while '%endblock' not in line.lower() and len(line) > 0: atom, suffix = line.split(None, 1) filename = suffix.split('#', 1)[0].strip() filename = filename.replace('"', '') # take out quotes filename = filename.replace("'", '') pots.append((atom, filename,)) line = out.readline().strip() if len(line) == 0: raise ReadError('End of file while reading potential block') self.set_pseudos(pots) def _read_species_cond(self, out): """ Read in conduction species block from a onetep output file""" line = out.readline().strip() species_cond = [] while '%endblock' not in line.lower(): atom, element, z, nngwf, ngwf_radius = line.split(None, 5) z = int(z) nngwf = int(nngwf) ngwf_radius = float(ngwf_radius) species_cond.append((atom, element, z, nngwf, ngwf_radius, )) line = out.readline().strip() self.set_species_cond(species_cond) def _read_forces(self, out): """ Extract the computed forces from a onetep output file""" forces = [] atomic2ang = Hartree / Bohr while True: line = out.readline() fields = line.split() if len(fields) > 6: break while len(fields) == 7: force = [float(fcomp) * atomic2ang for fcomp in fields[-4:-1]] forces.append(force) line = out.readline() fields = line.split() self.results['forces'] = array(forces) def _generate_species_block(self): """Create a default onetep species block, use -1 for the NGWF number to trigger automatic NGWF number assigment using onetep's internal routines.""" # check if we need to do anything. if len(self.species) == len(self.atoms.get_chemical_symbols()): return parameters = self.parameters self.species = [] atoms = self.atoms default_ngwf_radius = self.parameters['ngwf_radius'] for sp in set(zip(atoms.get_atomic_numbers(), atoms.get_chemical_symbols())): try: ngrad = parameters['species_ngwf_radius'][sp[1]] except KeyError: ngrad = default_ngwf_radius try: ngnum = parameters['species_ngwf_number'][sp[1]] except KeyError: ngnum = -1 self.species.append((sp[1], sp[1], sp[0], ngnum, ngrad)) def set_pseudos(self, pots): """ Sets the pseudopotential files used in this dat file TODO: add some verification - do the psuedos imply the same functional as we're using?""" self.pseudos = deepcopy(pots) def set_atoms(self, atoms): self.atoms = atoms def set_species(self, sp): """ Sets the species in the current dat instance, in onetep this includes both atomic number information as well as NGWF parameters like number and cut off radius""" self.species = deepcopy(sp) def set_species_cond(self, spc): """ Sets the conduction species in the current dat instance, in onetep this includes both atomic number information as well as NGWF parameters like number and cut off radius""" self.species_cond = deepcopy(spc) def write_input(self, atoms, properties=None, system_changes=None): """Only writes the input .dat file and return This can be useful if one quickly needs to prepare input files for a cluster where no python or ASE is available. One can than upload the file manually and read out the results using Onetep().read(). """ if atoms is None: atoms = self.atoms if self.restart: self.parameters['read_tightbox_ngwfs'] = True self.parameters['read_denskern'] = True self._generate_species_block() self._write_dat() def get_forces(self, atoms=None): self.parameters['write_forces'] = True return FileIOCalculator.get_forces(self, atoms) def _write_dat(self, force_write=True): """This export function write minimal information to a .dat file. If the atoms object is a trajectory, it will take the last image. """ filename = self.label + '.dat' if self.atoms is None: raise Exception('No associated atoms object.') atoms = self.atoms parameters = self.parameters if isfile(filename) and not force_write: raise Exception('Target input file already exists.') if 'xc' in parameters and 'xc_functional' in parameters \ and parameters['xc'] != parameters['xc_functional']: raise Exception('Conflicting functionals defined! %s vs. %s' % (parameters['xc'], parameters['xc_functional'])) fd = open(filename, 'w') fd.write('######################################################\n') fd.write('#ONETEP .dat file: %s\n' % filename) fd.write('#Created using the Atomic Simulation Environment (ASE)\n') fd.write('######################################################\n\n') fd.write('%BLOCK LATTICE_CART\n') fd.write('ang\n') for line in atoms.get_cell(): fd.write(' %.10f %.10f %.10f\n' % tuple(line)) fd.write('%ENDBLOCK LATTICE_CART\n\n\n') keyword = 'POSITIONS_ABS' positions = atoms.get_positions() pos_block = [('%s %8.6f %8.6f %8.6f' % (x, y[0], y[1], y[2])) for (x, y) in zip(atoms.get_chemical_symbols(), positions)] fd.write('%%BLOCK %s\n' % keyword) fd.write('ang\n') for line in pos_block: fd.write(' %s\n' % line) fd.write('%%ENDBLOCK %s\n\n' % keyword) keyword = 'SPECIES' sp_block = [('%s %s %d %d %8.6f' % sp) for sp in self.species] fd.write('%%BLOCK %s\n' % keyword) for line in sp_block: fd.write(' %s\n' % line) fd.write('%%ENDBLOCK %s\n\n' % keyword) keyword = 'SPECIES_POT' fd.write('%%BLOCK %s\n' % keyword) for sp in self.pseudos: fd.write(' %s "%s"\n' % (sp[0], sp[1])) fd.write('%%ENDBLOCK %s\n\n' % keyword) keyword = 'SPECIES_ATOMIC_SET' fd.write('%%BLOCK %s\n' % keyword) for sym in set(self.atoms.get_chemical_symbols()): try: atomic_string = parameters['species_solver'][sym] except KeyError: atomic_string = 'SOLVE' fd.write(' %s "%s"\n' % (sym, atomic_string)) fd.write('%%ENDBLOCK %s\n\n' % keyword) for p in parameters: if parameters[p] is not None and \ p.lower() not in self._dummy_parameters: fd.write('%s : %s\n' % (p, parameters[p])) if p.upper() == 'XC': # Onetep calls XC something else... fd.write('xc_functional : %s\n' % parameters[p]) fd.close() def __repr__(self): """Returns generic, fast to capture representation of ONETEP settings along with atoms object. """ expr = '' expr += '-----------------Atoms--------------------\n' if self.atoms is not None: expr += str('%20s\n' % self.atoms) else: expr += 'None\n' expr += '\n-----------------Species---------------------\n' expr += str(self.species) expr += '\n-----------------Pseudos---------------------\n' expr += str(self.pseudos) expr += '\n-----------------Options------------\n' for key in self.parameters: expr += '%20s : %s\n' % (key, self.parameters[key]) return expr def set_label(self, label): """The label is part of each seed, which in turn is a prefix in each ONETEP related file. """ self.label = label self.prefix = label ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/qmmm.py000066400000000000000000000324011316323560300243740ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.calculators.calculator import Calculator from ase.data import atomic_numbers from ase.utils import convert_string_to_fd class SimpleQMMM(Calculator): """Simple QMMM calculator.""" implemented_properties = ['energy', 'forces'] def __init__(self, selection, qmcalc, mmcalc1, mmcalc2, vacuum=None): """SimpleQMMM object. The energy is calculated as:: _ _ _ E = E (R ) - E (R ) + E (R ) QM QM MM QM MM all parameters: selection: list of int, slice object or list of bool Selection out of all the atoms that belong to the QM part. qmcalc: Calculator object QM-calculator. mmcalc1: Calculator object MM-calculator used for QM region. mmcalc2: Calculator object MM-calculator used for everything. vacuum: float or None Amount of vacuum to add around QM atoms. Use None if QM calculator doesn't need a box. """ self.selection = selection self.qmcalc = qmcalc self.mmcalc1 = mmcalc1 self.mmcalc2 = mmcalc2 self.vacuum = vacuum self.qmatoms = None self.center = None self.name = '{0}-{1}+{1}'.format(qmcalc.name, mmcalc1.name) Calculator.__init__(self) def initialize_qm(self, atoms): constraints = atoms.constraints atoms.constraints = [] self.qmatoms = atoms[self.selection] atoms.constraints = constraints self.qmatoms.pbc = False if self.vacuum: self.qmatoms.center(vacuum=self.vacuum) self.center = self.qmatoms.positions.mean(axis=0) def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) if self.qmatoms is None: self.initialize_qm(atoms) self.qmatoms.positions = atoms.positions[self.selection] if self.vacuum: self.qmatoms.positions += (self.center - self.qmatoms.positions.mean(axis=0)) energy = self.qmcalc.get_potential_energy(self.qmatoms) qmforces = self.qmcalc.get_forces(self.qmatoms) energy += self.mmcalc2.get_potential_energy(atoms) forces = self.mmcalc2.get_forces(atoms) if self.vacuum: qmforces -= qmforces.mean(axis=0) forces[self.selection] += qmforces energy -= self.mmcalc1.get_potential_energy(self.qmatoms) forces[self.selection] -= self.mmcalc1.get_forces(self.qmatoms) self.results['energy'] = energy self.results['forces'] = forces class EIQMMM(Calculator): """Explicit interaction QMMM calculator.""" implemented_properties = ['energy', 'forces'] def __init__(self, selection, qmcalc, mmcalc, interaction, vacuum=None, embedding=None, output=None): """EIQMMM object. The energy is calculated as:: _ _ _ _ E = E (R ) + E (R ) + E (R , R ) QM QM MM MM I QM MM parameters: selection: list of int, slice object or list of bool Selection out of all the atoms that belong to the QM part. qmcalc: Calculator object QM-calculator. mmcalc: Calculator object MM-calculator. interaction: Interaction object Interaction between QM and MM regions. vacuum: float or None Amount of vacuum to add around QM atoms. Use None if QM calculator doesn't need a box. embedding: Embedding object or None Specialized embedding object. Use None in order to use the default one. output: None, '-', str or file-descriptor. File for logging information - default is no logging (None). """ self.selection = selection self.qmcalc = qmcalc self.mmcalc = mmcalc self.interaction = interaction self.vacuum = vacuum self.embedding = embedding self.qmatoms = None self.mmatoms = None self.mask = None self.center = None # center of QM atoms in QM-box self.name = '{0}+{1}+{2}'.format(qmcalc.name, interaction.name, mmcalc.name) self.output = convert_string_to_fd(output) Calculator.__init__(self) def initialize(self, atoms): self.mask = np.zeros(len(atoms), bool) self.mask[self.selection] = True constraints = atoms.constraints atoms.constraints = [] # avoid slicing of constraints self.qmatoms = atoms[self.mask] self.mmatoms = atoms[~self.mask] atoms.constraints = constraints self.qmatoms.pbc = False if self.vacuum: self.qmatoms.center(vacuum=self.vacuum) self.center = self.qmatoms.positions.mean(axis=0) print('Size of QM-cell after centering:', self.qmatoms.cell.diagonal(), file=self.output) self.qmatoms.calc = self.qmcalc self.mmatoms.calc = self.mmcalc if self.embedding is None: self.embedding = Embedding() self.embedding.initialize(self.qmatoms, self.mmatoms) print('Embedding:', self.embedding, file=self.output) def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) if self.qmatoms is None: self.initialize(atoms) self.mmatoms.set_positions(atoms.positions[~self.mask]) self.qmatoms.set_positions(atoms.positions[self.mask]) if self.vacuum: shift = self.center - self.qmatoms.positions.mean(axis=0) self.qmatoms.positions += shift else: shift = (0, 0, 0) self.embedding.update(shift) ienergy, iqmforces, immforces = self.interaction.calculate( self.qmatoms, self.mmatoms, shift) qmenergy = self.qmatoms.get_potential_energy() mmenergy = self.mmatoms.get_potential_energy() energy = ienergy + qmenergy + mmenergy print('Energies: {0:12.3f} {1:+12.3f} {2:+12.3f} = {3:12.3f}' .format(ienergy, qmenergy, mmenergy, energy), file=self.output) qmforces = self.qmatoms.get_forces() mmforces = self.mmatoms.get_forces() mmforces += self.embedding.get_mm_forces() forces = np.empty((len(atoms), 3)) forces[self.mask] = qmforces + iqmforces forces[~self.mask] = mmforces + immforces self.results['energy'] = energy self.results['forces'] = forces def wrap(D, cell, pbc): """Wrap distances to nearest neighbor (minimum image convention).""" for i, periodic in enumerate(pbc): if periodic: d = D[:, i] L = cell[i] d[:] = (d + L / 2) % L - L / 2 # modify D inplace class Embedding: def __init__(self, molecule_size=3, **parameters): """Point-charge embedding.""" self.qmatoms = None self.mmatoms = None self.molecule_size = molecule_size self.virtual_molecule_size = None self.parameters = parameters def __repr__(self): return 'Embedding(molecule_size={0})'.format(self.molecule_size) def initialize(self, qmatoms, mmatoms): """Hook up embedding object to QM and MM atoms objects.""" self.qmatoms = qmatoms self.mmatoms = mmatoms charges = mmatoms.calc.get_virtual_charges(mmatoms) self.pcpot = qmatoms.calc.embed(charges, **self.parameters) self.virtual_molecule_size = (self.molecule_size * len(charges) // len(mmatoms)) def update(self, shift): """Update point-charge positions.""" # Wrap point-charge positions to the MM-cell closest to the # center of the the QM box, but avoid ripping molecules apart: qmcenter = self.qmatoms.cell.diagonal() / 2 n = self.molecule_size positions = self.mmatoms.positions.reshape((-1, n, 3)) + shift # Distances from the center of the QM box to the first atom of # each molecule: distances = positions[:, 0] - qmcenter wrap(distances, self.mmatoms.cell.diagonal(), self.mmatoms.pbc) offsets = distances - positions[:, 0] positions += offsets[:, np.newaxis] + qmcenter # Geometric center positions for each mm mol for LR cut com = np.array([p.mean(axis=0) for p in positions]) # Need per atom for C-code: com_pv = np.repeat(com, self.virtual_molecule_size, axis=0) positions.shape = (-1, 3) positions = self.mmatoms.calc.add_virtual_sites(positions) # compatibility with gpaw versions w/o LR cut in PointChargePotential if 'rc2' in self.parameters: self.pcpot.set_positions(positions, com_pv=com_pv) else: self.pcpot.set_positions(positions) def get_mm_forces(self): """Calculate the forces on the MM-atoms from the QM-part.""" f = self.pcpot.get_forces(self.qmatoms.calc) return self.mmatoms.calc.redistribute_forces(f) def combine_lj_lorenz_berthelot(sigmaqm, sigmamm, epsilonqm, epsilonmm): """Combine LJ parameters according to the Lorenz-Berthelot rule""" sigma_c = np.zeros((len(sigmaqm), len(sigmamm))) epsilon_c = np.zeros_like(sigma_c) for ii in range(len(sigmaqm)): sigma_c[ii, :] = (sigmaqm[ii] + sigmamm) / 2 epsilon_c[ii, :] = (epsilonqm[ii] * epsilonmm)**0.5 return sigma_c, epsilon_c class LJInteractionsGeneral: name = 'LJ-general' def __init__(self, sigmaqm, epsilonqm, sigmamm, epsilonmm, molecule_size=3): self.sigmaqm = sigmaqm self.epsilonqm = epsilonqm self.sigmamm = sigmamm self.epsilonmm = epsilonmm self.molecule_size = molecule_size self.combine_lj() def combine_lj(self): self.sigma, self.epsilon = combine_lj_lorenz_berthelot( self.sigmaqm, self.sigmamm, self.epsilonqm, self.epsilonmm) def calculate(self, qmatoms, mmatoms, shift): mmpositions = self.update(qmatoms, mmatoms, shift) qmforces = np.zeros_like(qmatoms.positions) mmforces = np.zeros_like(mmatoms.positions) energy = 0.0 for qmi in range(len(qmatoms)): if ~np.any(self.epsilon[qmi, :]): continue D = mmpositions - qmatoms.positions[qmi, :] d2 = (D**2).sum(2) c6 = (self.sigma[qmi, :]**2 / d2)**3 c12 = c6**2 e = 4 * self.epsilon[qmi, :] * (c12 - c6) energy += e.sum() f = (24 * self.epsilon[qmi, :] * (2 * c12 - c6) / d2)[:, :, np.newaxis] * D mmforces += f.reshape((-1, 3)) qmforces[qmi, :] -= f.sum(0).sum(0) return energy, qmforces, mmforces def update(self, qmatoms, mmatoms, shift): """Update point-charge positions.""" # Wrap point-charge positions to the MM-cell closest to the # center of the the QM box, but avoid ripping molecules apart: qmcenter = qmatoms.cell.diagonal() / 2 n = self.molecule_size positions = mmatoms.positions.reshape((-1, n, 3)) + shift # Distances from the center of the QM box to the first atom of # each molecule: distances = positions[:, 0] - qmcenter wrap(distances, mmatoms.cell.diagonal(), mmatoms.pbc) offsets = distances - positions[:, 0] positions += offsets[:, np.newaxis] + qmcenter return positions class LJInteractions: name = 'LJ' def __init__(self, parameters): """Lennard-Jones type explicit interaction. parameters: dict Mapping from pair of atoms to tuple containing epsilon and sigma for that pair. Example: lj = LJInteractions({('O', 'O'): (eps, sigma)}) """ self.parameters = {} for (symbol1, symbol2), (epsilon, sigma) in parameters.items(): Z1 = atomic_numbers[symbol1] Z2 = atomic_numbers[symbol2] self.parameters[(Z1, Z2)] = epsilon, sigma self.parameters[(Z2, Z1)] = epsilon, sigma def calculate(self, qmatoms, mmatoms, shift): qmforces = np.zeros_like(qmatoms.positions) mmforces = np.zeros_like(mmatoms.positions) species = set(mmatoms.numbers) energy = 0.0 for R1, Z1, F1 in zip(qmatoms.positions, qmatoms.numbers, qmforces): for Z2 in species: if (Z1, Z2) not in self.parameters: continue epsilon, sigma = self.parameters[(Z1, Z2)] mask = (mmatoms.numbers == Z2) D = mmatoms.positions[mask] + shift - R1 wrap(D, mmatoms.cell.diagonal(), mmatoms.pbc) d2 = (D**2).sum(1) c6 = (sigma**2 / d2)**3 c12 = c6**2 energy += 4 * epsilon * (c12 - c6).sum() f = 24 * epsilon * ((2 * c12 - c6) / d2)[:, np.newaxis] * D F1 -= f.sum(0) mmforces[mask] += f return energy, qmforces, mmforces ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/000077500000000000000000000000001316323560300243435ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/__init__.py000066400000000000000000000001061316323560300264510ustar00rootroot00000000000000from ase.calculators.siesta.siesta import Siesta __all__ = ['Siesta'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/base_siesta.py000066400000000000000000001171431316323560300272060ustar00rootroot00000000000000from __future__ import print_function """ This module defines the ASE interface to SIESTA. Written by Mads Engelund http://www.mads-engelund.net Home of the SIESTA package: http://www.uam.es/departamentos/ciencias/fismateriac/siesta 2017.04 - Pedro Brandimarte: changes for python 2-3 compatible """ import os from os.path import join, isfile, islink import numpy as np import shutil from ase.units import Ry, eV, Bohr from ase.data import atomic_numbers from ase.calculators.siesta.import_functions import read_rho, xv_to_atoms from ase.calculators.siesta.import_functions import \ get_valence_charge, read_vca_synth_block from ase.calculators.calculator import FileIOCalculator, ReadError from ase.calculators.calculator import Parameters, all_changes from ase.calculators.siesta.parameters import PAOBasisBlock, Species from ase.calculators.siesta.parameters import format_fdf meV = 0.001 * eV class SiestaParameters(Parameters): """Parameters class for the calculator. Documented in BaseSiesta.__init__ """ def __init__( self, label='siesta', mesh_cutoff=200 * Ry, energy_shift=100 * meV, kpts=None, xc='LDA', basis_set='DZP', spin='UNPOLARIZED', species=tuple(), pseudo_qualifier=None, pseudo_path=None, atoms=None, restart=None, ignore_bad_restart_file=False, fdf_arguments=None): kwargs = locals() kwargs.pop('self') Parameters.__init__(self, **kwargs) class BaseSiesta(FileIOCalculator): """Calculator interface to the SIESTA code. """ allowed_basis_names = ['SZ', 'SZP', 'DZ', 'DZP'] allowed_spins = ['UNPOLARIZED', 'COLLINEAR', 'FULL'] allowed_xc = {} allowed_fdf_keywords = {} unit_fdf_keywords = {} implemented_properties = ( 'energy', 'forces', 'stress', 'dipole', 'eigenvalues', 'density', 'fermi_energy') # Dictionary of valid input vaiables. default_parameters = SiestaParameters() def __init__(self, **kwargs): """ASE interface to the SIESTA code. Parameters: -label : The base head of all created files. -mesh_cutoff : Energy in eV. The mesh cutoff energy for determining number of grid points. -energy_shift : Energy in eVV The confining energy of the basis sets. -kpts : Tuple of 3 integers, the k-points in different directions. -xc : The exchange-correlation potential. Can be set to any allowed value for either the Siesta XC.funtional or XC.authors keyword. Default "LDA" -basis_set : "SZ"|"SZP"|"DZ"|"DZP", strings which specify the type of functions basis set. -spin : "UNPOLARIZED"|"COLLINEAR"|"FULL". The level of spin description to be used. -species : None|list of Species objects. The species objects can be used to to specify the basis set, pseudopotential and whether the species is ghost. The tag on the atoms object and the element is used together to identify the species. -pseudo_path : None|path. This path is where pseudopotentials are taken from. If None is given, then then the path given in $SIESTA_PP_PATH will be used. -pseudo_qualifier: None|string. This string will be added to the pseudopotential path that will be retrieved. For hydrogen with qualifier "abc" the pseudopotential "H.abc.psf" will be retrieved. -atoms : The Atoms object. -restart : str. Prefix for restart file. May contain a directory. Default is None, don't restart. -siesta_default: Use siesta default parameter if the parameter is not explicitly set. -ignore_bad_restart_file: bool. Ignore broken or missing restart file. By default, it is an error if the restart file is missing or broken. -fdf_arguments: Explicitly given fdf arguments. Dictonary using Siesta keywords as given in the manual. List values are written as fdf blocks with each element on a separate line, while tuples will write each element in a single line. ASE units are assumed in the input. """ # Put in the default arguments. parameters = self.default_parameters.__class__(**kwargs) # Setup the siesta command based on number of nodes. command = os.environ.get('SIESTA_COMMAND') if command is None: mess = "The 'SIESTA_COMMAND' environment is not defined." raise ValueError(mess) label = parameters['label'] self.label = label runfile = label + '.fdf' outfile = label + '.out' try: command = command % (runfile, outfile) except TypeError: raise ValueError( "The 'SIESTA_COMMAND' environment must " + "be a format string" + " with two string arguments.\n" + "Example : 'siesta < ./%s > ./%s'.\n" + "Got '%s'" % command) # Call the base class. FileIOCalculator.__init__( self, command=command, **parameters) def __getitem__(self, key): """Convenience method to retrieve a parameter as calculator[key] rather than calculator.parameters[key] Parameters: -key : str, the name of the parameters to get. """ return self.parameters[key] def species(self, atoms): """Find all relevant species depending on the atoms object and species input. Parameters : - atoms : An Atoms object. """ # For each element use default species from the species input, or set # up a default species from the general default parameters. symbols = np.array(atoms.get_chemical_symbols()) tags = atoms.get_tags() species = list(self['species']) default_species = [ s for s in species if (s['tag'] is None) and s['symbol'] in symbols] default_symbols = [s['symbol'] for s in default_species] for symbol in symbols: if symbol not in default_symbols: spec = Species(symbol=symbol, basis_set=self['basis_set'], tag=None) default_species.append(spec) default_symbols.append(symbol) assert len(default_species) == len(np.unique(symbols)) # Set default species as the first species. species_numbers = np.zeros(len(atoms), int) i = 1 for spec in default_species: mask = symbols == spec['symbol'] species_numbers[mask] = i i += 1 # Set up the non-default species. non_default_species = [s for s in species if not s['tag'] is None] for spec in non_default_species: mask1 = (tags == spec['tag']) mask2 = (symbols == spec['symbol']) mask = np.logical_and(mask1, mask2) if sum(mask) > 0: species_numbers[mask] = i i += 1 all_species = default_species + non_default_species return all_species, species_numbers def set(self, **kwargs): """Set all parameters. Parameters: -kwargs : Dictionary containing the keywords defined in SiestaParameters. """ # Find not allowed keys. default_keys = list(self.__class__.default_parameters) offending_keys = set(kwargs) - set(default_keys) if len(offending_keys) > 0: mess = "'set' does not take the keywords: %s " raise ValueError(mess % list(offending_keys)) # Check energy inputs. for arg in ['mesh_cutoff', 'energy_shift']: value = kwargs.get(arg) if value is None: continue if not (isinstance(value, (float, int)) and value > 0): mess = "'%s' must be a positive number(in eV), \ got '%s'" % (arg, value) raise ValueError(mess) # Check the basis set input. if 'basis_set' in kwargs: basis_set = kwargs['basis_set'] allowed = self.allowed_basis_names if not (isinstance(basis_set, PAOBasisBlock) or basis_set in allowed): mess = "Basis must be either %s, got %s" % (allowed, basis_set) raise ValueError(mess) # Check the spin input. if 'spin' in kwargs: spin = kwargs['spin'] if spin is not None and (spin not in self.allowed_spins): mess = "Spin must be %s, got %s" % (self.allowed_spins, spin) raise ValueError(mess) # Check the functional input. xc = kwargs.get('xc') if isinstance(xc, (tuple, list)) and len(xc) == 2: functional, authors = xc if functional not in self.allowed_xc: mess = "Unrecognized functional keyword: '%s'" % functional raise ValueError(mess) if authors not in self.allowed_xc[functional]: mess = "Unrecognized authors keyword for %s: '%s'" raise ValueError(mess % (functional, authors)) elif xc in self.allowed_xc: functional = xc authors = self.allowed_xc[xc][0] else: found = False for key, value in self.allowed_xc.items(): if xc in value: found = True functional = key authors = xc break if not found: raise ValueError("Unrecognized 'xc' keyword: '%s'" % xc) kwargs['xc'] = (functional, authors) # Check fdf_arguments. fdf_arguments = kwargs.get('fdf_arguments') self.validate_fdf_arguments(fdf_arguments) FileIOCalculator.set(self, **kwargs) def set_fdf_arguments(self, fdf_arguments): """ Set the fdf_arguments after the initialization of the calculator. """ self.validate_fdf_arguments(fdf_arguments) FileIOCalculator.set(self, fdf_arguments=fdf_arguments) def validate_fdf_arguments(self, fdf_arguments): """ Raises error if the fdf_argument input is not a dictionary of allowed keys. """ # None is valid if fdf_arguments is None: return # Type checking. if not isinstance(fdf_arguments, dict): raise TypeError("fdf_arguments must be a dictionary.") # Check if keywords are allowed. fdf_keys = set(fdf_arguments) allowed_keys = set(self.allowed_fdf_keywords) if not fdf_keys.issubset(allowed_keys): offending_keys = fdf_keys.difference(allowed_keys) raise ValueError("The 'fdf_arguments' dictionary " + "argument does not allow " + "the keywords: %s" % str(offending_keys)) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): """Capture the RuntimeError from FileIOCalculator.calculate and add a little debug information from the Siesta output. See base FileIocalculator for documentation. """ try: FileIOCalculator.calculate( self, atoms=atoms, properties=properties, system_changes=system_changes) # Here a test to check if the potential are in the right place!!! except RuntimeError as e: try: with open(self.label + '.out', 'r') as f: lines = f.readlines() debug_lines = 10 print('##### %d last lines of the Siesta output' % debug_lines) for line in lines[-20:]: print(line.strip()) print('##### end of siesta output') raise e except: raise e def write_input(self, atoms, properties=None, system_changes=None): """Write input (fdf)-file. See calculator.py for further details. Parameters: - atoms : The Atoms object to write. - properties : The properties which should be calculated. - system_changes : List of properties changed since last run. """ # Call base calculator. FileIOCalculator.write_input( self, atoms=atoms, properties=properties, system_changes=system_changes) if system_changes is None and properties is None: return filename = self.label + '.fdf' # On any changes, remove all analysis files. if system_changes is not None: self.remove_analysis() # Start writing the file. with open(filename, 'w') as f: # Write system name and label. f.write(format_fdf('SystemName', self.label)) f.write(format_fdf('SystemLabel', self.label)) f.write("\n") # Write the minimal arg self._write_species(f, atoms) self._write_structure(f, atoms) # First write explicitly given options to # allow the user to overwrite anything. self._write_fdf_arguments(f) # Use the saved density matrix if only 'cell' and 'positions' # haved changes. if (system_changes is None or ('numbers' not in system_changes and 'initial_magmoms' not in system_changes and 'initial_charges' not in system_changes)): f.write(format_fdf('DM.UseSaveDM', True)) # Save density. if 'density' in properties: f.write(format_fdf('SaveRho', True)) # Force siesta to return error on no convergence. # Why?? maybe we don't want to force convergency?? # f.write(format_fdf('SCFMustConverge', True)) self._write_kpts(f) def read(self, filename): """Read parameters from file.""" if not os.path.exists(filename): raise ReadError("The restart file '%s' does not exist" % filename) self.atoms = xv_to_atoms(filename) self.read_results() def _write_fdf_arguments(self, f): """Write directly given fdf-arguments. """ fdf_arguments = self.parameters['fdf_arguments'] fdf_arguments["XC.functional"], \ fdf_arguments["XC.authors"] = self.parameters['xc'] energy_shift = self['energy_shift'] fdf_arguments["PAO.EnergyShift"] = energy_shift mesh_cutoff = '%.4f eV' % self['mesh_cutoff'] fdf_arguments["MeshCutoff"] = mesh_cutoff if self['spin'] == 'UNPOLARIZED': fdf_arguments["SpinPolarized"] = False elif self['spin'] == 'COLLINEAR': fdf_arguments["SpinPolarized"] = True elif self['spin'] == 'FULL': fdf_arguments["SpinPolarized"] = True fdf_arguments["NonCollinearSpin"] = True for key, value in self.allowed_fdf_keywords.items(): if key in fdf_arguments.keys(): if key in self.unit_fdf_keywords: val = '%.8f %s' % (fdf_arguments[key], self.unit_fdf_keywords[key]) f.write(format_fdf(key, val)) elif fdf_arguments[key] != value: f.write(format_fdf(key, fdf_arguments[key])) def remove_analysis(self): """ Remove all analysis files""" filename = self.label + '.RHO' if os.path.exists(filename): os.remove(filename) def _write_structure(self, f, atoms): """Translate the Atoms object to fdf-format. Parameters: - f: An open file object. - atoms: An atoms object. """ unit_cell = atoms.get_cell() f.write('\n') # Write lattice vectors if np.any(unit_cell): f.write(format_fdf('LatticeConstant', '1.0 Ang')) f.write('%block LatticeVectors\n') for i in range(3): for j in range(3): s = (' %.15f' % unit_cell[i, j]).rjust(16) + ' ' f.write(s) f.write('\n') f.write('%endblock LatticeVectors\n') f.write('\n') self._write_atomic_coordinates(f, atoms) # Write magnetic moments. magmoms = atoms.get_initial_magnetic_moments() # The DM.InitSpin block must be written to initialize to # no spin. SIESTA default is FM initialization, if the # block is not written, but we must conform to the # atoms object. if self['spin'] != 'UNPOLARIZED': f.write('%block DM.InitSpin\n') for n, M in enumerate(magmoms): if M != 0: f.write(' %d %.14f\n' % (n + 1, M)) f.write('%endblock DM.InitSpin\n') f.write('\n') def _write_atomic_coordinates(self, f, atoms): """Write atomic coordinates. Parameters: - f: An open file object. - atoms: An atoms object. """ species, species_numbers = self.species(atoms) f.write('\n') f.write('AtomicCoordinatesFormat Ang\n') f.write('%block AtomicCoordinatesAndAtomicSpecies\n') for atom, number in zip(atoms, species_numbers): xyz = atom.position line = (' %.9f' % xyz[0]).rjust(16) + ' ' line += (' %.9f' % xyz[1]).rjust(16) + ' ' line += (' %.9f' % xyz[2]).rjust(16) + ' ' line += str(number) + '\n' f.write(line) f.write('%endblock AtomicCoordinatesAndAtomicSpecies\n') f.write('\n') origin = tuple(-atoms.get_celldisp().flatten()) if any(origin): f.write('%block AtomicCoordinatesOrigin\n') f.write(' %.4f %.4f %.4f\n' % origin) f.write('%endblock AtomicCoordinatesOrigin\n') f.write('\n') def _write_kpts(self, f): """Write kpts. Parameters: - f : Open filename. """ if self["kpts"] is None: return kpts = np.array(self['kpts']) f.write('\n') f.write('#KPoint grid\n') f.write('%block kgrid_Monkhorst_Pack\n') for i in range(3): s = '' if i < len(kpts): number = kpts[i] displace = 0.0 else: number = 1 displace = 0 for j in range(3): if j == i: write_this = number else: write_this = 0 s += ' %d ' % write_this s += '%1.1f\n' % displace f.write(s) f.write('%endblock kgrid_Monkhorst_Pack\n') f.write('\n') def _write_species(self, f, atoms): """Write input related the different species. Parameters: - f: An open file object. - atoms: An atoms object. """ species, species_numbers = self.species(atoms) if not self['pseudo_path'] is None: pseudo_path = self['pseudo_path'] elif 'SIESTA_PP_PATH' in os.environ: pseudo_path = os.environ['SIESTA_PP_PATH'] else: mess = "Please set the environment variable 'SIESTA_PP_PATH'" raise Exception(mess) f.write(format_fdf('NumberOfSpecies', len(species))) f.write(format_fdf('NumberOfAtoms', len(atoms))) pao_basis = [] chemical_labels = [] basis_sizes = [] synth_blocks = [] for species_number, spec in enumerate(species): species_number += 1 symbol = spec['symbol'] atomic_number = atomic_numbers[symbol] if spec['pseudopotential'] is None: if self.pseudo_qualifier() == '': label = symbol pseudopotential = label + '.psf' else: label = '.'.join([symbol, self.pseudo_qualifier()]) pseudopotential = label + '.psf' else: pseudopotential = spec['pseudopotential'] label = os.path.basename(pseudopotential) label = '.'.join(label.split('.')[:-1]) if not os.path.isabs(pseudopotential): pseudopotential = join(pseudo_path, pseudopotential) if not os.path.exists(pseudopotential): mess = "Pseudopotential '%s' not found" % pseudopotential raise RuntimeError(mess) name = os.path.basename(pseudopotential) name = name.split('.') name.insert(-1, str(species_number)) if spec['ghost']: name.insert(-1, 'ghost') atomic_number = -atomic_number name = '.'.join(name) if join(os.getcwd(), name) != pseudopotential: if islink(name) or isfile(name): os.remove(name) os.symlink(pseudopotential, name) if not spec['excess_charge'] is None: atomic_number += 200 n_atoms = sum(np.array(species_numbers) == species_number) paec = float(spec['excess_charge']) / n_atoms vc = get_valence_charge(pseudopotential) fraction = float(vc + paec) / vc pseudo_head = name[:-4] fractional_command = os.environ['SIESTA_UTIL_FRACTIONAL'] cmd = '%s %s %.7f' % (fractional_command, pseudo_head, fraction) os.system(cmd) pseudo_head += '-Fraction-%.5f' % fraction synth_pseudo = pseudo_head + '.psf' synth_block_filename = pseudo_head + '.synth' os.remove(name) shutil.copyfile(synth_pseudo, name) synth_block = read_vca_synth_block( synth_block_filename, species_number=species_number) synth_blocks.append(synth_block) if len(synth_blocks) > 0: f.write(format_fdf('SyntheticAtoms', list(synth_blocks))) label = '.'.join(np.array(name.split('.'))[:-1]) string = ' %d %d %s' % (species_number, atomic_number, label) chemical_labels.append(string) if isinstance(spec['basis_set'], PAOBasisBlock): pao_basis.append(spec['basis_set'].script(label)) else: basis_sizes.append((" " + label, spec['basis_set'])) f.write((format_fdf('ChemicalSpecieslabel', chemical_labels))) f.write('\n') f.write((format_fdf('PAO.Basis', pao_basis))) f.write((format_fdf('PAO.BasisSizes', basis_sizes))) f.write('\n') def pseudo_qualifier(self): """Get the extra string used in the middle of the pseudopotential. The retrieved pseudopotential for a specific element will be 'H.xxx.psf' for the element 'H' with qualifier 'xxx'. If qualifier is set to None then the qualifier is set to functional name. """ if self['pseudo_qualifier'] is None: return self['xc'][0].lower() else: return self['pseudo_qualifier'] def read_results(self): """Read the results. """ self.read_number_of_grid_points() self.read_energy() self.read_forces_stress() self.read_eigenvalues() self.read_dipole() self.read_pseudo_density() self.read_hsx() self.read_dim() if self.results['hsx'] is not None: self.read_pld(self.results['hsx'].norbitals, self.atoms.get_number_of_atoms()) self.atoms.cell = self.results['pld'].cell * Bohr else: self.results['pld'] = None self.read_wfsx() self.read_ion(self.atoms) def read_ion(self, atoms): """Read the ion.xml file of each specie """ from ase.calculators.siesta.import_ion_xml import get_ion species, species_numbers = self.species(atoms) self.results['ion'] = {} for species_number, spec in enumerate(species): species_number += 1 symbol = spec['symbol'] atomic_number = atomic_numbers[symbol] if spec['pseudopotential'] is None: if self.pseudo_qualifier() == '': label = symbol pseudopotential = label + '.psf' else: label = '.'.join([symbol, self.pseudo_qualifier()]) pseudopotential = label + '.psf' else: pseudopotential = spec['pseudopotential'] label = os.path.basename(pseudopotential) label = '.'.join(label.split('.')[:-1]) name = os.path.basename(pseudopotential) name = name.split('.') name.insert(-1, str(species_number)) if spec['ghost']: name.insert(-1, 'ghost') atomic_number = -atomic_number name = '.'.join(name) label = '.'.join(np.array(name.split('.'))[:-1]) if label not in self.results['ion']: fname = label + '.ion.xml' self.results['ion'][label] = get_ion(fname) def read_hsx(self): """ Read the siesta HSX file. return a namedtuple with the following arguments: 'norbitals', 'norbitals_sc', 'nspin', 'nonzero', 'is_gamma', 'sc_orb2uc_orb', 'row2nnzero', 'sparse_ind2column', 'H_sparse', 'S_sparse', 'aB2RaB_sparse', 'total_elec_charge', 'temp' """ import warnings from ase.calculators.siesta.import_functions import readHSX filename = self.label + '.HSX' if isfile(filename): self.results['hsx'] = readHSX(filename) else: warnings.warn(filename + """ does not exist => sieta.results["hsx"]=None""", UserWarning) self.results['hsx'] = None def read_dim(self): """ Read the siesta DIM file Retrun a namedtuple with the following arguments: 'natoms_sc', 'norbitals_sc', 'norbitals', 'nspin', 'nnonzero', 'natoms_interacting' """ import warnings from ase.calculators.siesta.import_functions import readDIM filename = self.label + '.DIM' if isfile(filename): self.results['dim'] = readDIM(filename) else: warnings.warn(filename + """does not exist => sieta.results["dim"]=None""", UserWarning) self.results['dim'] = None def read_pld(self, norb, natms): """ Read the siesta PLD file Return a namedtuple with the following arguments: 'max_rcut', 'orb2ao', 'orb2uorb', 'orb2occ', 'atm2sp', 'atm2shift', 'coord_sc', 'cell', 'nunit_cells' """ import warnings from ase.calculators.siesta.import_functions import readPLD filename = self.label + '.PLD' if isfile(filename): self.results['pld'] = readPLD(filename, norb, natms) else: warnings.warn(filename + """ does not exist => sieta.results["pld"]=None""", UserWarning) self.results['pld'] = None def read_wfsx(self): """ Read the siesta WFSX file Return a namedtuple with the following arguments: """ import warnings from ase.calculators.siesta.import_functions import readWFSX if isfile(self.label + '.WFSX'): filename = self.label + '.WFSX' self.results['wfsx'] = readWFSX(filename) elif isfile(self.label + '.fullBZ.WFSX'): filename = self.label + '.fullBZ.WFSX' readWFSX(filename) self.results['wfsx'] = readWFSX(filename) else: filename = self.label + '.WFSX or ' + self.label + '.fullBZ.WFSX' warnings.warn(filename + """ does not exist => sieta.results["wfsx"]=None""", UserWarning) self.results['wfsx'] = None def read_pseudo_density(self): """Read the density if it is there. """ filename = self.label + '.RHO' if isfile(filename): self.results['density'] = read_rho(filename) def read_number_of_grid_points(self): """Read number of grid points from SIESTA's text-output file. """ with open(self.label + '.out', 'r') as f: for line in f: line = line.strip().lower() if line.startswith('initmesh: mesh ='): n_points = [int(word) for word in line.split()[3:8:2]] self.results['n_grid_point'] = n_points break else: raise RuntimeError def read_energy(self): """Read energy from SIESTA's text-output file. """ with open(self.label + '.out', 'r') as f: text = f.read().lower() assert 'final energy' in text lines = iter(text.split('\n')) # Get the energy and free energy the last time it appears for line in lines: has_energy = line.startswith('siesta: etot =') if has_energy: self.results['energy'] = float(line.split()[-1]) line = next(lines) self.results['free_energy'] = float(line.split()[-1]) if ('energy' not in self.results or 'free_energy' not in self.results): raise RuntimeError def read_forces_stress(self): """Read the forces and stress from the FORCE_STRESS file. """ with open('FORCE_STRESS', 'r') as f: lines = f.readlines() stress_lines = lines[1:4] stress = np.empty((3, 3)) for i in range(3): line = stress_lines[i].strip().split(' ') line = [s for s in line if len(s) > 0] stress[i] = [float(s) for s in line] self.results['stress'] = np.array( [stress[0, 0], stress[1, 1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1]]) self.results['stress'] *= Ry / Bohr**3 start = 5 self.results['forces'] = np.zeros((len(lines) - start, 3), float) for i in range(start, len(lines)): line = [s for s in lines[i].strip().split(' ') if len(s) > 0] self.results['forces'][i - start] = [float(s) for s in line[2:5]] self.results['forces'] *= Ry / Bohr def read_eigenvalues(self): """Read eigenvalues from the '.EIG' file. This is done pr. kpoint. """ assert os.access(self.label + '.EIG', os.F_OK) assert os.access(self.label + '.KP', os.F_OK) # Read k point weights text = open(self.label + '.KP', 'r').read() lines = text.split('\n') n_kpts = int(lines[0].strip()) self.weights = np.zeros((n_kpts,)) for i in range(n_kpts): l = lines[i + 1].split() self.weights[i] = float(l[4]) # Read eigenvalues and fermi-level with open(self.label + '.EIG', 'r') as f: text = f.read() lines = text.split('\n') e_fermi = float(lines[0].split()[0]) tmp = lines[1].split() self.n_bands = int(tmp[0]) n_spin_bands = int(tmp[1]) self.spin_pol = n_spin_bands == 2 lines = lines[2:-1] lines_per_kpt = (self.n_bands * n_spin_bands / 10 + int((self.n_bands * n_spin_bands) % 10 != 0)) lines_per_kpt = int(lines_per_kpt) eig = dict() for i in range(len(self.weights)): tmp = lines[i * lines_per_kpt:(i + 1) * lines_per_kpt] v = [float(v) for v in tmp[0].split()[1:]] for l in tmp[1:]: v.extend([float(t) for t in l.split()]) if self.spin_pol: eig[(i, 0)] = np.array(v[0:self.n_bands]) eig[(i, 1)] = np.array(v[self.n_bands:]) else: eig[(i, 0)] = np.array(v) self.results['fermi_energy'] = e_fermi self.results['eigenvalues'] = eig def read_dipole(self): """Read dipole moment. """ dipole = np.zeros([1, 3]) with open(self.label + '.out', 'r') as f: for line in f: if line.rfind('Electric dipole (Debye)') > -1: dipole = np.array([float(f) for f in line.split()[5:8]]) # debye to e*Ang self.results['dipole'] = dipole * 0.2081943482534 def get_polarizability(self, mbpt_inp=None, output_name='mbpt_lcao.out', format_output='hdf5', units='au'): """ Calculate the polarizability by running the mbpt_lcao program. The mbpt_lcao program need the siesta output, therefore siesta need to be run first. Parameters ---------- mbpt_inp : dict, optional dictionnary of the input for the mbpt_lcao program (http://mbpt-domiprod.wikidot.com/list-of-parameters) if mbpt_inp is None, the function read the output file from a previous mbpt_lcao run. output_name : str, optional Name of the mbpt_lcao output format_output : str, optional Format of the mbpt_lcao output data, if hdf5, the output name is tddft_iter_output.hdf5 if do_tddft_iter is set to 1 the output name is tddft_tem_output.hdf5 if do_tddft_tem is set to 1 if txt, a lot of output data files are produced depending on the input, in the text and fortran binaries format units : str, optional unit for the returned polarizability, can be au (atomic units) or nm**2 Returns ------- freq : array like array of dimension (nff) containing the frequency range in eV. self.results['polarizability'], array like array of dimension (nff, 3, 3) with nff the frequency number, the second and third dimension are the matrix elements of the polarizability:: P_xx, P_xy, P_xz, Pyx, ....... References ---------- http://mbpt-domiprod.wikidot.com Example ------- import os from ase.units import Ry, eV from ase.calculators.siesta import Siesta from ase import Atoms import numpy as np import matplotlib.pyplot as plt #Define the systems Na8 = Atoms('Na8', positions=[[-1.90503810, 1.56107288, 0.00000000], [1.90503810, 1.56107288, 0.00000000], [1.90503810, -1.56107288, 0.00000000], [-1.90503810, -1.56107288, 0.00000000], [0.00000000, 0.00000000, 2.08495836], [0.00000000, 0.00000000, -2.08495836], [0.00000000, 3.22798122, 2.08495836], [0.00000000, 3.22798122, -2.08495836]], cell=[20, 20, 20]) #enter siesta input siesta = Siesta( mesh_cutoff=150 * Ry, basis_set='DZP', pseudo_qualifier='', energy_shift=(10 * 10**-3) * eV, fdf_arguments={ 'SCFMustConverge': False, 'COOP.Write': True, 'WriteDenchar': True, 'PAO.BasisType': 'split', 'DM.Tolerance': 1e-4, 'DM.MixingWeight': 0.01, 'MaxSCFIterations': 300, 'DM.NumberPulay': 4}) #mbpt_lcao input mbpt_inp = {'prod_basis_type' : 'MIXED', 'solver_type' : 1, 'gmres_eps' : 0.001, 'gmres_itermax':256, 'gmres_restart':250, 'gmres_verbose':20, 'xc_ord_lebedev':14, 'xc_ord_gl':48, 'nr':512, 'akmx':100, 'eigmin_local':1e-06, 'eigmin_bilocal':1e-08, 'freq_eps_win1':0.15, 'd_omega_win1':0.05, 'dt':0.1, 'omega_max_win1':5.0, 'ext_field_direction':2, 'dr':np.array([0.3, 0.3, 0.3]), 'para_type':'MATRIX', 'chi0_v_algorithm':14, 'format_output':'text', 'comp_dens_chng_and_polarizability':1, 'store_dens_chng':1, 'enh_given_volume_and_freq':0, 'diag_hs':0, 'do_tddft_tem':0, 'do_tddft_iter':1, 'plot_freq':3.02, 'gwa_initialization':'SIESTA_PB'} Na8.set_calculator(siesta) e = Na8.get_potential_energy() #run siesta freq, pol = siesta.get_polarizability_siesta(mbpt_inp, format_output='txt', units='nm**2') #plot polarizability plt.plot(freq, pol[:, 0, 0]) plt.show() """ from ase.calculators.siesta.mbpt_lcao import MBPT_LCAO from ase.calculators.siesta.mbpt_lcao_io import read_mbpt_lcao_output if mbpt_inp is not None: tddft = MBPT_LCAO(mbpt_inp) tddft.run_mbpt_lcao(output_name, True) r = read_mbpt_lcao_output() r.args.format_input = format_output # read real part r.args.ReIm = 're' data = r.Read() self.results['polarizability'] = data.Array # read imaginary part r.args.ReIm = 'im' data = r.Read() self.results['polarizability'] = (self.results['polarizability'] + complex(0.0, 1.0) * data.Array) if units == 'nm**2': from ase.calculators.siesta.mbpt_lcao_utils import pol2cross_sec for i in range(2): for j in range(2): p = pol2cross_sec(self.results['polarizability'][:, i, j], data.freq) self.results['polarizability'][:, i, j] = p print('unit nm**2') # self.results['polarizability'] = data.Array elif units == 'au': print('unit au') # self.results['polarizability'] = data.Array else: raise ValueError('units can be only au or nm**2') return data.freq, self.results['polarizability'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/import_functions.py000066400000000000000000000334471316323560300303320ustar00rootroot00000000000000import os import numpy as np import string from ase.units import Bohr from ase.io.fortranfile import FortranFile def xv_to_atoms(filename): """Create atoms object from xv file. Parameters: -filename : str. The filename of the '.XV' file. return : An Atoms object """ from ase.atoms import Atoms if not os.path.exists(filename): filename += '.gz' with open(filename, 'r') as f: # Read cell vectors (lines 1-3) vectors = [] for i in range(3): data = string.split(f.readline()) vectors.append([string.atof(data[j]) * Bohr for j in range(3)]) # Read number of atoms (line 4) string.atoi(string.split(f.readline())[0]) # Read remaining lines speciesnumber, atomnumbers, xyz, V = [], [], [], [] for line in f.readlines(): if len(line) > 5: # Ignore blank lines data = string.split(line) speciesnumber.append(string.atoi(data[0])) atomnumbers.append(string.atoi(data[1])) xyz.append([string.atof(data[2 + j]) * Bohr for j in range(3)]) V.append([string.atof(data[5 + j]) * Bohr for j in range(3)]) vectors = np.array(vectors) atomnumbers = np.array(atomnumbers) xyz = np.array(xyz) atoms = Atoms(numbers=atomnumbers, positions=xyz, cell=vectors) return atoms def read_rho(fname): "Read unformatted Siesta charge density file" # TODO: # # Handle formatted and NetCDF files. # # Siesta source code (at least 2.0.2) can possibly also # save RHO as a _formatted_ file (the source code seems # prepared, but there seems to be no fdf-options for it though). # Siesta >= 3 has support for saving RHO as a NetCDF file # (according to manual) fh = FortranFile(fname) # Read (but ignore) unit cell vectors x = fh.readReals('d') if len(x) != 3 * 3: raise IOError('Failed to read cell vectors') # Read number of grid points and spin components x = fh.readInts() if len(x) != 4: raise IOError('Failed to read grid size') gpts = x # number of 'X', 'Y', 'Z', 'spin' gridpoints rho = np.zeros(gpts) for ispin in range(gpts[3]): for n3 in range(gpts[2]): for n2 in range(gpts[1]): x = fh.readReals('f') if len(x) != gpts[0]: raise IOError('Failed to read RHO[:,%i,%i,%i]' % (n2, n3, ispin)) rho[:, n2, n3, ispin] = x fh.close() return rho def get_valence_charge(filename): """ Read the valence charge from '.psf'-file.""" with open(filename, 'r') as f: f.readline() f.readline() f.readline() valence = -float(f.readline().split()[-1]) return valence def read_vca_synth_block(filename, species_number=None): """ Read the SyntheticAtoms block from the output of the 'fractional' siesta utility. Parameters: - filename: String with '.synth' output from fractional. - species_number: Optional argument to replace override the species number in the text block. Returns: A string that can be inserted into the main '.fdf-file'. """ with open(filename, 'r') as f: lines = f.readlines() lines = lines[1:-1] if species_number is not None: lines[0] = '%d\n' % species_number block = ''.join(lines).strip() return block def readHSX(fname): """ Read unformatted siesta HSX file """ import collections HSX_tuple = collections.namedtuple('HSX', ['norbitals', 'norbitals_sc', 'nspin', 'nonzero', 'is_gamma', 'sc_orb2uc_orb', 'row2nnzero', 'sparse_ind2column', 'H_sparse', 'S_sparse', 'aB2RaB_sparse', 'total_elec_charge', 'temp']) fh = FortranFile(fname) norbitals, norbitals_sc, nspin, nonzero = fh.readInts('i') is_gamma = fh.readInts('i')[0] sc_orb2uc_orb = 0 if is_gamma == 0: sc_orb2uc_orb = fh.readInts('i') row2nnzero = fh.readInts('i') sum_row2nnzero = np.sum(row2nnzero) if (sum_row2nnzero != nonzero): raise ValueError('sum_row2nnzero != nonzero: {0} != {1}' .format(sum_row2nnzero, nonzero)) row2displ = np.zeros((norbitals), dtype=int) for i in range(1, norbitals): row2displ[i] = row2displ[i - 1] + row2nnzero[i - 1] max_nonzero = np.max(row2nnzero) int_buff = np.zeros((max_nonzero), dtype=int) sparse_ind2column = np.zeros((nonzero)) # Fill the rows for each index in *_sparse arrays for irow in range(norbitals): f = row2nnzero[irow] int_buff[0:f] = fh.readInts('i') # read set of rows where nonzero elements reside d = row2displ[irow] sparse_ind2column[d:d + f] = int_buff[0:f] # END of Fill the rows for each index in *_sparse arrays # allocate H, S and X matrices sp_buff = np.zeros((max_nonzero), dtype=float) H_sparse = np.zeros((nonzero, nspin), dtype=float) S_sparse = np.zeros((nonzero), dtype=float) aB2RaB_sparse = np.zeros((3, nonzero), dtype=float) # Read the data to H_sparse array for ispin in range(nspin): for irow in range(norbitals): d = row2displ[irow] f = row2nnzero[irow] sp_buff[0:f] = fh.readReals('f') H_sparse[d:d + f, ispin] = sp_buff[0:f] # Read the data to S_sparse array for irow in range(norbitals): f = row2nnzero[irow] d = row2displ[irow] sp_buff[0:f] = fh.readReals('f') S_sparse[d:d + f] = sp_buff[0:f] total_elec_charge, temp = fh.readReals('d') sp_buff = np.zeros((3 * max_nonzero), dtype=float) # Read the data to S_sparse array for irow in range(norbitals): f = row2nnzero[irow] d = row2displ[irow] sp_buff[0: 3 * f] = fh.readReals('f') aB2RaB_sparse[0, d:d + f] = sp_buff[0:f] aB2RaB_sparse[1, d:d + f] = sp_buff[f:2 * f] aB2RaB_sparse[2, d:d + f] = sp_buff[2 * f:3 * f] fh.close() return HSX_tuple(norbitals, norbitals_sc, nspin, nonzero, is_gamma, sc_orb2uc_orb, row2nnzero, sparse_ind2column, H_sparse, S_sparse, aB2RaB_sparse, total_elec_charge, temp) def readDIM(fname): """ Read unformatted siesta DIM file """ import collections DIM_tuple = collections.namedtuple('DIM', ['natoms_sc', 'norbitals_sc', 'norbitals', 'nspin', 'nnonzero', 'natoms_interacting']) fh = FortranFile(fname) natoms_sc = fh.readInts('i')[0] norbitals_sc = fh.readInts('i')[0] norbitals = fh.readInts('i')[0] nspin = fh.readInts('i')[0] nnonzero = fh.readInts('i')[0] natoms_interacting = fh.readInts('i')[0] fh.close() return DIM_tuple(natoms_sc, norbitals_sc, norbitals, nspin, nnonzero, natoms_interacting) def readPLD(fname, norbitals, natoms): """ Read unformatted siesta PLD file """ import collections # use struct library to read mixed data type from binary import struct PLD_tuple = collections.namedtuple('PLD', ['max_rcut', 'orb2ao', 'orb2uorb', 'orb2occ', 'atm2sp', 'atm2shift', 'coord_sc', 'cell', 'nunit_cells']) fh = FortranFile(fname) orb2ao = np.zeros((norbitals), dtype=int) orb2uorb = np.zeros((norbitals), dtype=int) orb2occ = np.zeros((norbitals), dtype=float) max_rcut = fh.readReals('d') for iorb in range(norbitals): dat = fh.readRecord() dat_size = struct.calcsize('iid') val_list = struct.unpack('iid', dat[0:dat_size]) orb2ao[iorb] = val_list[0] orb2uorb[iorb] = val_list[1] orb2occ[iorb] = val_list[2] atm2sp = np.zeros((natoms), dtype=int) atm2shift = np.zeros((natoms + 1), dtype=int) for iatm in range(natoms): atm2sp[iatm] = fh.readInts('i')[0] for iatm in range(natoms + 1): atm2shift[iatm] = fh.readInts('i')[0] cell = np.zeros((3, 3), dtype=float) nunit_cells = np.zeros((3), dtype=int) for i in range(3): cell[i, :] = fh.readReals('d') nunit_cells = fh.readInts('i') coord_sc = np.zeros((natoms, 3), dtype=float) for iatm in range(natoms): coord_sc[iatm, :] = fh.readReals('d') fh.close() return PLD_tuple(max_rcut, orb2ao, orb2uorb, orb2occ, atm2sp, atm2shift, coord_sc, cell, nunit_cells) def readWFSX(fname): """ Read unformatted siesta WFSX file """ import collections # use struct library to read mixed data type from binary import struct WFSX_tuple = collections.namedtuple('WFSX', ['nkpoints', 'nspin', 'norbitals', 'gamma', 'orb2atm', 'orb2strspecies', 'orb2ao', 'orb2n', 'orb2strsym', 'kpoints', 'DFT_E', 'DFT_X', 'mo_spin_kpoint_2_is_read']) fh = FortranFile(fname) nkpoints, gamma = fh.readInts('i') nspin = fh.readInts('i')[0] norbitals = fh.readInts('i')[0] orb2atm = np.zeros((norbitals), dtype=int) orb2strspecies = [] orb2ao = np.zeros((norbitals), dtype=int) orb2n = np.zeros((norbitals), dtype=int) orb2strsym = [] # for string list are better to select all the string length dat_size = struct.calcsize('i20sii20s') dat = fh.readRecord() ind_st = 0 ind_fn = dat_size for iorb in range(norbitals): val_list = struct.unpack('i20sii20s', dat[ind_st:ind_fn]) orb2atm[iorb] = val_list[0] orb2strspecies.append(val_list[1]) orb2ao[iorb] = val_list[2] orb2n[iorb] = val_list[3] orb2strsym.append(val_list[4]) ind_st = ind_st + dat_size ind_fn = ind_fn + dat_size orb2strspecies = np.array(orb2strspecies) orb2strsym = np.array(orb2strsym) kpoints = np.zeros((3, nkpoints), dtype=np.float64) DFT_E = np.zeros((norbitals, nspin, nkpoints), dtype=np.float64) if (gamma == 1): DFT_X = np.zeros((1, norbitals, norbitals, nspin, nkpoints), dtype=np.float64) eigenvector = np.zeros((1, norbitals), dtype=float) else: DFT_X = np.zeros((2, norbitals, norbitals, nspin, nkpoints), dtype=np.float64) eigenvector = np.zeros((2, norbitals), dtype=float) mo_spin_kpoint_2_is_read = np.zeros((norbitals, nspin, nkpoints), dtype=bool) mo_spin_kpoint_2_is_read[0:norbitals, 0:nspin, 0:nkpoints] = False dat_size = struct.calcsize('iddd') for ikpoint in range(nkpoints): for ispin in range(nspin): dat = fh.readRecord() val_list = struct.unpack('iddd', dat[0:dat_size]) ikpoint_in = val_list[0] - 1 kpoints[0:3, ikpoint] = val_list[1:4] if (ikpoint != ikpoint_in): raise ValueError('siesta_get_wfsx: ikpoint != ikpoint_in') ispin_in = fh.readInts('i')[0] - 1 if (ispin_in > nspin - 1): msg = 'siesta_get_wfsx: err: ispin_in>nspin\n \ siesta_get_wfsx: ikpoint, ispin, ispin_in = \ {0} {1} {2}\n siesta_get_wfsx'.format(ikpoint, ispin, ispin_in) raise ValueError(msg) norbitals_in = fh.readInts('i')[0] if (norbitals_in > norbitals): msg = 'siesta_get_wfsx: err: norbitals_in>norbitals\n \ siesta_get_wfsx: ikpoint, norbitals, norbitals_in = \ {0} {1} {2}\n siesta_get_wfsx'.format(ikpoint, norbitals, norbitals_in) raise ValueError(msg) for imolecular_orb in range(norbitals_in): imolecular_orb_in = fh.readInts('i')[0] - 1 if (imolecular_orb_in > norbitals - 1): msg = """ siesta_get_wfsx: err: imolecular_orb_in>norbitals\n siesta_get_wfsx: ikpoint, norbitals, imolecular_orb_in = {0} {1} {2}\n siesta_get_wfsx""".format(ikpoint, norbitals, imolecular_orb_in) raise ValueError(msg) real_E_eV = fh.readReals('d')[0] eigenvector = fh.readReals('f') DFT_E[imolecular_orb_in, ispin_in, ikpoint] = real_E_eV / 13.60580 DFT_X[:, :, imolecular_orb_in, ispin_in, ikpoint] = eigenvector mo_spin_kpoint_2_is_read[imolecular_orb_in, ispin_in, ikpoint] = True if (not all(mo_spin_kpoint_2_is_read[:, ispin_in, ikpoint])): msg = 'siesta_get_wfsx: warn: .not. all(mo_spin_k_2_is_read)' print('mo_spin_kpoint_2_is_read = ', mo_spin_kpoint_2_is_read) raise ValueError(msg) fh.close() return WFSX_tuple(nkpoints, nspin, norbitals, gamma, orb2atm, orb2strspecies, orb2ao, orb2n, orb2strsym, kpoints, DFT_E, DFT_X, mo_spin_kpoint_2_is_read) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/import_ion_xml.py000066400000000000000000000127131316323560300277600ustar00rootroot00000000000000from __future__ import division import numpy as np from xml.dom import minidom from ase.calculators.siesta.mbpt_lcao_utils import str2int, str2float def get_ion(fname): """ Read the ion.xml file of a specie Input parameters: ----------------- fname (str): name of the ion file Output Parameters: ------------------ ion (dict): The ion dictionnary contains all the data from the ion file. Each field of the xml file give one key. The different keys are: 'lmax_basis': int 'self_energy': float 'z': int 'symbol': str 'label': str 'mass': flaot 'lmax_projs': int 'basis_specs': str 'norbs_nl': int 'valence': float 'nprojs_nl: int The following keys give the pao field, 'npts': list of int 'delta':list of float 'cutoff': list of float 'data':list of np.arrayof shape (npts[i], 2) 'orbital': list of dictionnary 'projector': list of dictionnary """ doc = minidom.parse(fname) # the elements from the header elements_headers = [['symbol', str], ['label', str], ['z', int], ['valence', float], ['mass', float], ['self_energy', float], ['lmax_basis', int], ['norbs_nl', int], ['lmax_projs', int], ['nprojs_nl', int]] ion = {} for i, elname in enumerate(elements_headers): name = doc.getElementsByTagName(elname[0]) ion[elname[0]] = get_data_elements(name[0], elname[1]) # extract the basis_specs name = doc.getElementsByTagName("basis_specs") ion["basis_specs"] = getNodeText(name[0]) extract_pao_elements(ion, doc) return ion def getNodeText(node): nodelist = node.childNodes result = [] for node in nodelist: if node.nodeType == node.TEXT_NODE: result.append(node.data) return ''.join(result) def get_data_elements(name, dtype): """ return the right type of the element value """ if dtype is int: data = str2int(getNodeText(name)) if len(data) > 1: return np.array(data) elif len(data) == 1: return data[0] else: raise ValueError("len(data)<1 ??") elif dtype is float: data = str2float(getNodeText(name)) if len(data) > 1: return np.array(data) elif len(data) == 1: return data[0] else: raise ValueError("len(data)<1 ??") elif dtype is str: return getNodeText(name) else: raise ValueError('not implemented') def extract_pao_elements(ion, doc): """ extract the different pao element of the xml file Input Parameters: ----------------- ion (dict) doc (minidom.parse) Output Parameters: ------------------ ion (dict): the following keys are added to the ion dict: npts delta cutoff data orbital projector """ name_npts = doc.getElementsByTagName("npts") name_delta = doc.getElementsByTagName("delta") name_cutoff = doc.getElementsByTagName("cutoff") name_data = doc.getElementsByTagName("data") name_orbital = doc.getElementsByTagName("orbital") name_projector = doc.getElementsByTagName("projector") ion["orbital"] = [] ion["projector"] = [] for i in range(len(name_orbital)): ion["orbital"].append(extract_orbital(name_orbital[i])) for i in range(len(name_projector)): ion["projector"].append(extract_projector(name_projector[i])) if len(name_data) != len(name_npts): raise ValueError("len(name_data) != len(name_npts): {0} != {1}". format(len(name_data), len(name_npts))) if len(name_data) != len(name_cutoff): raise ValueError("len(name_data) != len(name_cutoff): {0} != {1}". format(len(name_data), len(name_cutoff))) if len(name_data) != len(name_delta): raise ValueError("len(name_data) != len(name_delta): {0} != {1}". format(len(name_data), len(name_delta))) ion["npts"] = np.zeros((len(name_npts)), dtype=int) ion["delta"] = np.zeros((len(name_delta)), dtype=float) ion["cutoff"] = np.zeros((len(name_cutoff)), dtype=float) ion["data"] = [] for i in range(len(name_data)): ion["npts"][i] = get_data_elements(name_npts[i], int) ion["cutoff"][i] = get_data_elements(name_cutoff[i], float) ion["delta"][i] = get_data_elements(name_delta[i], float) ion["data"].append(get_data_elements(name_data[i], float). reshape(ion["npts"][i], 2)) def extract_orbital(orb_xml): """ extract the orbital """ orb = {} orb['l'] = str2int(orb_xml.attributes['l'].value)[0] orb['n'] = str2int(orb_xml.attributes['n'].value)[0] orb['z'] = str2int(orb_xml.attributes['z'].value)[0] orb['ispol'] = str2int(orb_xml.attributes['ispol'].value)[0] orb['population'] = str2float(orb_xml.attributes['population'].value)[0] return orb def extract_projector(pro_xml): """ extract the projector """ pro = {} pro['l'] = str2int(pro_xml.attributes['l'].value)[0] pro['n'] = str2int(pro_xml.attributes['n'].value)[0] pro['ref_energy'] = str2float(pro_xml.attributes['ref_energy'].value)[0] return pro ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/mbpt_lcao.py000066400000000000000000000055251316323560300266640ustar00rootroot00000000000000from __future__ import division import numpy as np import os from ase.utils import basestring class MBPT_LCAO: """ Calculator for mbpt_lcao program, see http://mbpt-domiprod.wikidot.com/ contains: __init__ write_tddft_inp run_mbpt_lcao PARAMETERS ----------- mbpt_inp (dict): dictionary containing the input of the mbpt_lcao program Take into the kwargs argument the input for the program, see ase/ase/test/siesta/mbpt_lcao/script_mbpt_lcao.py for a complete example. """ def __init__(self, mbpt_inp): self.param = mbpt_inp self.command = os.environ.get('MBPT_COMMAND') if self.command is None: mess = "The 'MBPT_COMMAND' environment is not defined." raise ValueError(mess) def write_tddft_inp(self): """ Write the input file tddft_lr.inp for the mbpt_lcao program """ if len(self.param.keys()) == 0: raise ValueError('Can not write mbpt_lcao input, dict empty') f = open('tddft_lr.inp', 'w') for k, v in self.param.items(): if isinstance(v, np.ndarray): f.write(k + ' {0} {1} {2}\n'.format(v[0], v[1], v[2])) elif isinstance(v, basestring): f.write(k + ' ' + v + '\n') elif k == 'group_species' or k == 'species_iter': gp = '{' for k1, v1 in v.items(): gp = gp + '{0}: ['.format(k1) for w in range(len(v1) - 1): gp = gp + str(v1[w]) + ', ' if k1 < max(v.keys()): gp = gp + str(v1[len(v1) - 1]) + '], ' else: gp = gp + str(v1[len(v1) - 1]) + ']' gp = gp + '}\n' f.write(k + ' ' + gp) else: f.write(k + ' {0}\n'.format(v)) f.close() def run_mbpt_lcao(self, output_name='mbpt_lcao.out', write_inp=False): """ run mbpt_lcao Parameters ---------- output_name : str, optional name of the output file, defualt: mbpt_lcao.out write_inp : bool, optional write the tddft_lr,inp file before to run the program, by default False """ import subprocess if write_inp: self.write_tddft_inp() try: self.command = self.command % output_name except TypeError: raise ValueError("The 'MBPT_COMMAND' environment must " + "be a format string" + " with one string arguments.\n" + "Example : 'mbpt > ./%s'.\n" + "Got '%s'" % self.command) subprocess.call(self.command, shell=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/mbpt_lcao_io.py000066400000000000000000001040571316323560300273530ustar00rootroot00000000000000""" Module containing the routine to read the mbpt_lcao output """ from __future__ import division import ase.io as aio import numpy as np """ class read_mbpt_lcao_output: Main class of the library use to load the data from the TDDFT code class MBPT_LCAO_Parameters: class that fix the input parameter concerning loading data class MBPT_LCAO_Properties_figure: class that fix the properties concerning the figures """ class read_mbpt_lcao_output: """ Top class, to be call by a script. Read the output data from the mbpt_lcao program Parameters ---------- No input paramters, but the args, and prop variable have to be modify as function of your wishes References ---------- Example ------- """ def __init__(self): self.args = MBPT_LCAO_Parameters() self.prop = MBPT_LCAO_Properties_figure() def Read(self, YFname=None): if self.args.folder != './' and \ self.prop.fatoms == 'domiprod_atom2coord.xyz': self.prop.fatoms = self.args.folder + self.prop.fatoms self.args.check_input() if self.args.format_input == 'txt': output = read_text_data(self.args, self.prop, YFname) elif self.args.format_input == 'hdf5': output = read_hdf5_data(self.args, self.prop, YFname) else: raise ValueError('no other format supported') return output class read_hdf5_data: """ read data from mbpt_lcao calculation saved in the hdf5 format """ def __init__(self, args, prop_fig, YFname): try: import h5py except: raise ValueError('The module need h5py library in order \ to read hdf5 files!') self.atoms = aio.read(prop_fig.fatoms) self.determine_fname(args, YFname) self.File = h5py.File(self.fname, 'r') if args.tem_iter == 'iter': self.check_file_iter(args) self.extract_data_iter(args) elif args.tem_iter == 'tem': self.check_file_tem(args) self.extract_data_tem(args) else: raise ValueError('only tem or iter!!') self.set_carac(args, prop_fig) def set_carac(self, args_p, prop): """ set the ylabel for the plot and other parameters """ if args_p.quantity == 'intensity': self.ylabel = r'$|\frac{E}{E_{0}}|^{2}$' elif args_p.quantity == 'density': if args_p.ReIm == 'im': self.ylabel = r'$Im(\delta n)$' elif args_p.ReIm == 're': self.ylabel = r'$Re(\delta n)$' else: self.ylabel = 'Intensity (a.u.)' self.pl_num = str(prop.plan_coord) self.pl_file = prop.plan_coord for i in range(len(self.pl_num)): if self.pl_num[i] == '.': self.pl_file = self.pl_num[0:i] + '-' + \ self.pl_num[i + 1:len(self.pl_num)] def determine_fname(self, args_p, perso=None): """ determine the files name """ if perso is None: self.fname = args_p.folder + 'tddft_' + \ args_p.tem_iter + '_output.hdf5' else: self.fname = args_p.folder + perso print(self.fname) def check_file_tem(self, args_p): """ Check if the file tddft_tem_output.hdf5 caontians the wished data """ field_spatial = ['dens', 'potential', 'intensity', 'efield'] if args_p.quantity == 'spectrum': if args_p.tem_input['tem_method'] == 'C': quantity = 'tem_spectrum_cc' else: quantity = 'tem_spectrum' elif args_p.quantity == 'E_loss': self.dname = args_p.quantity + '_' + args_p.inter quantity = None else: if args_p.time == 0: print(args_p.tem_input['tem_method']) if args_p.tem_input['tem_method'] == 'C': quantity = 'field_spatial_cc_freq_{0:.2f}'\ .format(args_p.plot_freq) else: quantity = 'field_spatial_freq_{0:.2f}'\ .format(args_p.plot_freq) else: quantity = 'field_time' print('quantity: ', quantity) chain = '_v{0:.8f}_bx{1:.8f}_by{2:.8f}_bz{3:.8f}'\ .format(args_p.tem_input['vnorm'], args_p.tem_input['b'][0], args_p.tem_input['b'][1], args_p.tem_input['b'][2]) if quantity is None: self.group = self.File['/'] else: self.group = self.File[quantity] if args_p.quantity == 'spectrum': self.dname = 'tem_spectrum_' + args_p.inter + chain elif args_p.quantity in field_spatial or \ quantity == 'field_time': self.group = self.group['tem_' + args_p.inter + chain] if args_p.quantity in field_spatial: if args_p.quantity == 'intensity': self.dname = args_p.quantity else: self.dname = args_p.quantity + '_' + args_p.ReIm else: self.dname = [] if args_p.quantity == 'intensity': for i in range(args_p.time_num): self.dname.append('data_time_{0}/' .format(i) + args_p.quantity) else: for i in range(args_p.time_num): self.dname.append( 'data_time_{0}/' .format(i) + args_p.quantity + '_' + args_p.ReIm) if isinstance(self.dname, list): for i, name in enumerate(self.dname): print(name) sub_group = self.group['data_time_{0}/'.format(i)] if args_p.quantity not in sub_group.keys(): raise ValueError( name + ' not saved in ' + self.fname + '. check with h5ls command.') else: if self.dname not in self.group.keys(): print(self.group.keys()) raise ValueError(self.dname + ' not saved in ' + self.fname + '. check with h5ls command.') def extract_data_tem(self, args_p): """ Extract the data into the foloowing structures, Array: contains the data that you wish to get freq: frequency range if polarizability geometrical data dr: the spatial step origin: origin of the system lbound: lower bound of the array ubound: upper bound of the array dim: shape of the array mesh: the 2D or 3D mesh for the plotting """ if args_p.quantity == 'spectrum': self.Array = self.group[self.dname].value[1, :] self.freq = self.group[self.dname].value[0, :] elif args_p.quantity == 'E_loss': self.Array = self.group[self.dname].value else: keys_f = ['dr', 'origin', 'ibox'] keys = ['dr', 'origin', 'ibox'] dico = {} for i, k in enumerate(keys): dico[k] = self.group[keys_f[i]].value self.dr = dico['dr'] self.origin = dico['origin'] self.lbound = dico['ibox'][:, 0] self.ubound = dico['ibox'][:, 1] if args_p.time == 0: keys_f.append(self.dname) dico['Array'] = self.group[keys_f[3]].value dim = dico['Array'].shape[::-1] if args_p.quantity == 'Efield': self.Array = dico['Array'].ravel('F').reshape( dim[0], dim[1], dim[2], dim[3]) else: self.Array = dico['Array'].T else: sh = self.group[self.dname[0]].value.shape self.t = self.group['t'].value if args_p.quantity == 'Efield': self.Array = np.array( (self.t.shape[0], sh[0], sh[1], sh[2], sh[3]), dtype=float) for i in range(len(self.dname)): self.Array[i] = self.group[self.dname[i]].value else: self.Array = np.zeros( (self.t.shape[0], sh[0], sh[1], sh[2]), dtype=float) for i in range(len(self.dname)): print('array ', self.Array.shape) print('sum(data) ', np.sum(abs(self.group[self.dname[i]].value))) self.Array[i] = self.group[self.dname[i]].value self.determine_box() self.mesh3D() self.mesh2D() self.xy_prof = self.xy_mesh[:, int(self.xy_mesh.shape[1] / 2)] self.xz_prof = self.xz_mesh[int(self.xz_mesh.shape[0] / 2), :] self.yx_prof = self.yx_mesh[:, int(self.yx_mesh.shape[1] / 2)] self.yz_prof = self.yz_mesh[int(self.yz_mesh.shape[0] / 2), :] self.zx_prof = self.zx_mesh[:, int(self.zx_mesh.shape[1] / 2)] self.zy_prof = self.zy_mesh[int(self.zy_mesh.shape[0] / 2), :] def check_file_iter(self, args_p): if args_p.quantity == 'polarizability': quantity = args_p.quantity else: quantity = 'field_spatial_freq_{0:.2f}_'.format( args_p.plot_freq) + args_p.inter if quantity not in self.File.keys(): raise ValueError( quantity + ' not saved in ' + self.fname + '. check with h5ls command.') self.group = self.File['/' + quantity] if args_p.quantity == 'polarizability': self.dname = 'dipol_' + args_p.inter + '_iter_krylov' else: self.dname = args_p.quantity if self.dname == 'intensity': if self.dname not in self.group.keys(): raise ValueError( self.dname + ' not saved in ' + self.fname + '. check with h5ls command.') elif self.dname == 'polarizability': if args_p.species != '': if self.dname + '_' + args_p.ReIm + '_' + \ args_p.species not in self.group.keys(): raise ValueError( self.dname + '_' + args_p.ReIm + '_' + args_p.species + ' not saved in ' + self.fname + '. check with h5ls command.') else: if self.dname + '_' + args_p.ReIm not in self.group.keys(): raise ValueError( self.dname + '_' + args_p.ReIm + ' not saved in ' + self.fname + '. check with h5ls command.') else: if self.dname + '_' + args_p.ReIm not in self.group.keys(): raise ValueError( self.dname + '_' + args_p.ReIm + ' not saved in ' + self.fname + '. check with h5ls command.') def extract_data_iter(self, args_p): if args_p.quantity == 'polarizability': self.freq = self.group['frequency'].value if args_p.species != '': self.Array = self.group[ self.dname + '_' + args_p.ReIm + '_' + args_p.species].value.T else: self.Array = self.group[self.dname + '_' + args_p.ReIm].value.T for i in range(self.Array.shape[0]): self.Array[i, :, :] = self.Array[i, :, :].T else: if self.dname == 'dens': keys_f = [ 'dr', 'origin_dens', 'ibox_dens', self.dname + '_' + args_p.ReIm] elif self.dname == 'intensity': keys_f = ['dr', 'origin', 'ibox', self.dname] else: keys_f = [ 'dr', 'origin', 'ibox', self.dname + '_' + args_p.ReIm] keys = ['dr', 'origin', 'ibox', 'Array'] dico = {} for i, k in enumerate(keys): dico[k] = self.group[keys_f[i]].value self.dr = dico['dr'] self.origin = dico['origin'] self.lbound = dico['ibox'][:, 0] self.ubound = dico['ibox'][:, 1] dim = dico['Array'].shape[::-1] if args_p.quantity == 'Efield': self.Array = dico['Array'].ravel('F').reshape( dim[0], dim[1], dim[2], dim[3]) else: self.Array = dico['Array'].T self.determine_box() self.mesh3D() self.mesh2D() self.xy_prof = self.xy_mesh[:, int(self.xy_mesh.shape[1] / 2)] self.xz_prof = self.xz_mesh[int(self.xz_mesh.shape[0] / 2), :] self.yx_prof = self.yx_mesh[:, int(self.yx_mesh.shape[1] / 2)] self.yz_prof = self.yz_mesh[int(self.yz_mesh.shape[0] / 2), :] self.zx_prof = self.zx_mesh[:, int(self.zx_mesh.shape[1] / 2)] self.zy_prof = self.zy_mesh[int(self.zy_mesh.shape[0] / 2), :] def determine_box(self): box = list() box.append(self.dr * self.lbound + self.origin) box.append(self.dr * self.ubound + self.origin) self.box = np.array(box) self.dim = self.ubound - self.lbound + 1 def mesh2D(self): self.xy_mesh = np.zeros((self.dim[1], self.dim[2]), dtype=float) self.xz_mesh = np.zeros((self.dim[1], self.dim[2]), dtype=float) for j in range(self.xy_mesh.shape[1]): for i in range(self.xy_mesh.shape[0]): self.xy_mesh[i, j] = self.box[0][1] + \ i * self.dr[1] + self.origin[1] for i in range(self.xz_mesh.shape[0]): for j in range(self.xz_mesh.shape[1]): self.xz_mesh[i, j] = self.box[0][2] + \ j * self.dr[2] + self.origin[2] self.yx_mesh = np.zeros((self.dim[0], self.dim[2]), dtype=float) self.yz_mesh = np.zeros((self.dim[0], self.dim[2]), dtype=float) for j in range(self.yx_mesh.shape[1]): for i in range(self.yx_mesh.shape[0]): self.yx_mesh[i, j] = self.box[0][0] + \ i * self.dr[0] + self.origin[0] for i in range(self.yz_mesh.shape[0]): for j in range(self.yz_mesh.shape[1]): self.yz_mesh[i, j] = self.box[0][2] + \ j * self.dr[2] + self.origin[2] self.zx_mesh = np.zeros((self.dim[0], self.dim[1]), dtype=float) self.zy_mesh = np.zeros((self.dim[0], self.dim[1]), dtype=float) for j in range(self.zx_mesh.shape[1]): for i in range(self.zx_mesh.shape[0]): self.zx_mesh[i, j] = self.box[0][0] + \ i * self.dr[0] + self.origin[0] for i in range(self.zy_mesh.shape[0]): for j in range(self.zy_mesh.shape[1]): self.zy_mesh[i, j] = self.box[0][1] + \ j * self.dr[1] + self.origin[1] def mesh3D(self): self.xmesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) self.ymesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) self.zmesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) for i in range(self.xmesh.shape[0]): nb = self.box[0][0] + i * self.dr[0] + self.origin[0] self.xmesh[i, :, :] = nb for i in range(self.xmesh.shape[1]): nb = self.box[0][1] + i * self.dr[1] + self.origin[1] self.ymesh[:, i, :] = nb for i in range(self.xmesh.shape[2]): nb = self.box[0][2] + i * self.dr[2] + self.origin[2] self.zmesh[:, :, i] = nb class read_text_data: """ Class that read the output data of the tddft program for the field enhancement. can read .dat files (text file), .npy files (binary files) or .hdf5 files (binary). it is loading all the different parameter in array to plotting purpose. Input parameters: ----------------- args: (class parameter), input parameter prop_fig: (class Properties_figure): Properties of the figure kwargs (optionnal): new_data: (list of args class!), list of the other args if needed to get more than one data Output parameters: ------------------ all the data about the box save in: self.dr self.box self.Array self.dim self.mesh..... Function of the class: ---------------------- initialise determine_fname recover_data readhdf5 read_npy read_txt determine_box mesh3D """ def __init__(self, args, prop_fig, YFname): if args.tem_iter == 'tem': raise ValueError('text format only with iter') self.atoms = aio.read(prop_fig.fatoms) self.fname = self.determine_fname(args, perso=YFname) self.dr, self.origin, self.lbound, self.ubound, self.Array, \ self.box, self.dim = self.read_txt(args, self.fname) if args.quantity != 'polarizability': self.mesh3D() self.mesh2D() self.xy_prof = self.xy_mesh[:, int(self.xy_mesh.shape[1] / 2)] self.xz_prof = self.xz_mesh[int(self.xz_mesh.shape[0] / 2), :] self.yx_prof = self.yx_mesh[:, int(self.yx_mesh.shape[1] / 2)] self.yz_prof = self.yz_mesh[int(self.yz_mesh.shape[0] / 2), :] self.zx_prof = self.zx_mesh[:, int(self.zx_mesh.shape[1] / 2)] self.zy_prof = self.zy_mesh[int(self.zy_mesh.shape[0] / 2), :] self.set_carac(args, prop_fig) def set_carac(self, args_p, prop): if args_p.quantity == 'intensity': self.ylabel = r'$|\frac{E}{E_{0}}|^{2}$' elif args_p.quantity == 'density': if args_p.ReIm == 'im': self.ylabel = r'$Im(\delta n)$' elif args_p.ReIm == 're': self.ylabel = r'$Re(\delta n)$' else: self.ylabel = 'Intensity (a.u.)' self.pl_num = str(prop.plan_coord) self.pl_file = prop.plan_coord for i in range(len(self.pl_num)): if self.pl_num[i] == '.': self.pl_file = self.pl_num[0:i] + '-' + \ self.pl_num[i + 1:len(self.pl_num)] def determine_fname(self, args_p, perso=None): """ set the files name """ if perso is None: if args_p.quantity == 'Efield': fname = [ args_p.folder + 'e_field_' + args_p.ReIm + '.x_' + args_p.inter + args_p.tem_iter + '.dat', args_p.folder + 'e_field_' + args_p.ReIm + '.y_' + args_p.inter + args_p.tem_iter + '.dat', args_p.folder + 'e_field_' + args_p.ReIm + '.z_' + args_p.inter + args_p.tem_iter + '.dat'] elif args_p.quantity == 'intensity': fname = args_p.folder + args_p.quantity + '_' + \ args_p.inter + '_' + args_p.tem_iter + '.dat' elif args_p.quantity == 'polarizability': fname = args_p.folder + 'dipol_' + args_p.inter + '_' + \ args_p.tem_iter + '_krylov_' + args_p.ReIm + '.txt' else: fname = args_p.folder + args_p.quantity + '_' + args_p.ReIm + \ '_' + args_p.inter + '_' + args_p.tem_iter + '.dat' else: fname = args_p.folder + perso print(fname) return fname def read_txt(self, args_p, fname): from mbpt_lcao_utils import read_file, str2float data = list() dim = list() end_box = 10 if args_p.quantity == 'Efield': A = [] for i in enumerate(fname): LINE = read_file(i[1]) for j in range(end_box): if LINE[j][1] != '#': nb = str2float(LINE[j]) data.append(nb) dr = np.array(data[0]) origin = np.array(data[1]) lbound = np.array(data[2]) ubound = np.array(data[3]) box, dim = self.determine_box(dr, ubound, lbound, origin) A.append(np.zeros((dim[0], dim[1], dim[2]), dtype=float)) l = end_box for k in range(int(dim[2])): for j in range(int(dim[1])): A[i[0]][:, j, k] = np.array(str2float(LINE[l])) l = l + 1 Array = np.zeros( (A[0].shape[0], A[0].shape[1], A[0].shape[2], 3), dtype=float) Array[:, :, :, 0] = A[0] Array[:, :, :, 1] = A[1] Array[:, :, :, 2] = A[2] elif args_p.quantity == 'polarizability': self.freq = np.loadtxt(fname)[:, 0] Array = np.loadtxt(fname)[:, 2:11].reshape( self.freq.shape[0], 3, 3) dr = 0.0 origin = 0.0 lbound = 0.0 ubound = 0.0 box = 0.0 dim = 0.0 else: LINE = read_file(fname) for i in range(end_box): if LINE[i][1] != '#': nb = str2float(LINE[i]) data.append(nb) dr = np.array(data[0]) origin = np.array(data[1]) lbound = np.array(data[2]) ubound = np.array(data[3]) box, dim = self.determine_box(dr, ubound, lbound, origin) Array = np.zeros((dim[0], dim[1], dim[2]), dtype=float) l = end_box for k in range(int(dim[2])): for j in range(int(dim[1])): Array[:, j, k] = np.array(str2float(LINE[l])) l = l + 1 return dr, origin, lbound, ubound, Array, box, dim def determine_box(self, dr, ubound, lbound, origin): box = list() box.append(dr * lbound + origin) box.append(dr * ubound + origin) dim = ubound - lbound + 1 return box, dim def mesh2D(self): self.xy_mesh = np.zeros((self.dim[1], self.dim[2]), dtype=float) self.xz_mesh = np.zeros((self.dim[1], self.dim[2]), dtype=float) for j in range(self.xy_mesh.shape[1]): for i in range(self.xy_mesh.shape[0]): self.xy_mesh[i, j] = self.box[0][1] + \ i * self.dr[1] + self.origin[1] for i in range(self.xz_mesh.shape[0]): for j in range(self.xz_mesh.shape[1]): self.xz_mesh[i, j] = self.box[0][2] + \ j * self.dr[2] + self.origin[2] self.yx_mesh = np.zeros((self.dim[0], self.dim[2]), dtype=float) self.yz_mesh = np.zeros((self.dim[0], self.dim[2]), dtype=float) for j in range(self.yx_mesh.shape[1]): for i in range(self.yx_mesh.shape[0]): self.yx_mesh[i, j] = self.box[0][0] + \ i * self.dr[0] + self.origin[0] for i in range(self.yz_mesh.shape[0]): for j in range(self.yz_mesh.shape[1]): self.yz_mesh[i, j] = self.box[0][2] + \ j * self.dr[2] + self.origin[2] self.zx_mesh = np.zeros((self.dim[0], self.dim[1]), dtype=float) self.zy_mesh = np.zeros((self.dim[0], self.dim[1]), dtype=float) for j in range(self.zx_mesh.shape[1]): for i in range(self.zx_mesh.shape[0]): self.zx_mesh[i, j] = self.box[0][0] + \ i * self.dr[0] + self.origin[0] for i in range(self.zy_mesh.shape[0]): for j in range(self.zy_mesh.shape[1]): self.zy_mesh[i, j] = self.box[0][1] + \ j * self.dr[1] + self.origin[1] def mesh3D(self): self.xmesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) self.ymesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) self.zmesh = np.zeros( (self.dim[0], self.dim[1], self.dim[2]), dtype=float) for i in range(self.xmesh.shape[0]): nb = self.box[0][0] + i * self.dr[0] + self.origin[0] self.xmesh[i, :, :] = nb for i in range(self.xmesh.shape[1]): nb = self.box[0][1] + i * self.dr[1] + self.origin[1] self.ymesh[:, i, :] = nb for i in range(self.xmesh.shape[2]): nb = self.box[0][2] + i * self.dr[2] + self.origin[2] self.zmesh[:, :, i] = nb class MBPT_LCAO_Parameters: """ Contains the input parameters use by plot_3D in plot_lib.py The parameters are: self.quantity (string, default:'polarizability'): the type of data than one wish to plot, can be intensity efield potential dens polarizability spectrum E_loss self.interacting (int, default: 0) interacting or non-interacting data, depend of your TDDFT calculation self.ReIm (string, default: 'im'): plot imaginary or real part self.format_input (string, default:'.hdf5'): format of the input file, can be .dat .npy .hdf5 self.folder (string, default: './'): name of the folder where are save the input data self.time (int, default: 1): time plotting, 0 or 1 self.time_num (int, default: 0): time index than one which to plot self.tem_iter (int, default: 0) : tem or iter plotting, 0 => iter, 1 => tem self.movie (int, default: 0) : if tem and plot_dens_time=1 (in tddft_lr.inp) then do a movie """ def __init__(self): self.quantity = 'polarizability' self.inter = 'inter' self.ReIm = 'im' self.format_input = 'hdf5' self.folder = './' self.time = 0 self.time_num = 0 self.tem_iter = 'iter' self.species = '' self.movie = 0 self.plot_freq = 0.0 self.tem_input = {'dr': np.array([0.3, 0.3, 0.3]), 'vnorm': 1.0, 'v': np.array([1.0, 0.0, 0.0]), 'dw': 0.1, 'b': np.array([0.0, 0.0, 0.0]), 'vrange': None, 'brange': None, 'tem_method': 'N'} self.exportData = { 'export': False, 'dtype': 'HDF5', 'fname': 'exportData'} self.kwargs = {} # to add more arguments def check_input(self): """ Check the validity of the arguments """ self.param = {'quantity': [self.quantity, str], 'inter': [self.inter, str], 'ReIm': [self.ReIm, str], 'format_inp': [self.format_input, str], 'folder_inp': [self.folder, str], 'time': [self.time, int], 'time_num': [self.time_num, int], 'tem_iter': [self.tem_iter, str], 'species': [self.species, str], 'movie': [self.movie, int], 'tem_input': [self.tem_input, dict], 'exportData': [self.exportData, dict]} fields = {'quantity': ['intensity', 'efield', 'potential', 'dens', 'polarizability', 'spectrum', 'E_loss'], 'ReIm': ['re', 'im'], 'format_input': ['txt', 'hdf5'], 'tem_iter': ['tem', 'iter']} for keys, values in self.param.items(): if not isinstance(values[0], values[1]): raise ValueError('Error: input ' + keys + ' not right type, must be ' + str(values[1])) if keys in fields.keys(): if values[0] not in fields[keys]: raise ValueError( keys + ' can be only: ' + str(fields[keys])) if (values[0] == 'spectrum' or values[0] == 'E_loss') and self.tem_iter != 'tem': raise ValueError('spectrum only with tem') if values[0] == 'polarizability' and self.tem_iter != 'iter': raise ValueError('polarizability only with iter') class MBPT_LCAO_Properties_figure: """ class that define the caracteristic of your Figures. Parameters: ----------- self.fontsize (float, default: 30): fontsize of the labels self.axis_size (list of float, default: [20, 20]): fontsize of the tickle self.folder (string, default: 'images/'): folders where are save the pictures self.figx = 16 self.figy = 12 self.figsize (tuple, default: (self.figx, self.figy)): size of the figure (width, heigth) self.fatoms (string, default:'domiprod_atom2coord.xyz'): name of the file for the atomic positions self.plot_atoms (bolleen, default: True): plotting atoms or not self.color_arrow = 'red' self.ft_arrow_label = 30 self.arrow_label = r'$E_{ext}$' self.title = 'none' self.linewidth = 3 self.linecolor = 'red' self.plan (string, default: 'z'): plan than one wish to plot, can be x y z self.dynamic (int, default: 0): available only for Mayavi plot make the plot rotating, only 0 or 1 self.show (int, default: 1): show the plot, 0 or 1 self.plan_coord (float, default: 0.0): coordinate of the plan than one wish to plot in Ang self.output (string, default: 'pdf'): format of the output file, can be pdf png ps eps svg self.animation (int, default: 0): save a movie of the animation made by self.dynamic only available with Mayavi plot and if self.dynamic=1 self.Edir (int, default: 0): plot direction of the E field, 0 or 1 self.coord_Ef (2D numpy array default:'default') plotting coordinate E field?? self.plot (string, default:'2D'): define the plotting method, can be 1D 2D 3D Mayavi self.coord (1D numpy array, default: np.array([0.0, 0.0, 0.0])) coordinate for curve in 1D self.figname (string, default:'default.'): name of the figure """ def __init__(self): import matplotlib.cm as cm self.fontsize = 30 self.axis_size = [20, 20] self.folder = 'images/' self.figx = 16 self.figy = 12 self.figsize = (self.figx, self.figy) self.fatoms = 'domiprod_atom2coord.xyz' self.plot_atm = True self.color_arrow = 'red' self.ft_arrow_label = 30 self.arrow_label = r'$E_{ext}$' self.title = None self.linewidth = 3 self.linecolor = 'red' self.plan_coord = 0.0 self.plan = 'z' self.dynamic = 0 self.show = 1 self.output = 'pdf' self.animation = 0 self.Edir = 0 self.coord_Ef = 'default' self.plot = '2D' self.coord = np.array([0.0, 0.0, 0.0]) self.bohr_rad = 0.52917721 self.figname = 'default' self.cmap = cm.jet self.units = 'au' # for the moment only the polarizability can be modify in nm**2 self.vmin = None self.vmax = None # to save a mayavi scrennshot in order to perform subplot with # matplotlib self.mayavi_screenshot = 0 self.maya_prop = { 'extent_factor': 1.0, 'figsize': ( 640, 480), 'contours': 3, 'atoms_resolution': 8, 'atoms_scale': 1, 'fps': 20, 'opacity': 0.5, 'line_width': 2.0, 'magnification': 1} self.maya_cam = { 'distance': None, 'azimuth': None, 'elevation': None, 'roll': None, 'reset_roll': True, 'figure': None, 'focalpoint': 'auto'} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/mbpt_lcao_utils.py000066400000000000000000000152171316323560300301030ustar00rootroot00000000000000from __future__ import division import numpy as np import re def read_file(fname): """ read the file fname and return a list of the lines. """ f = open(fname, 'r') LINE = list() for line in f: LINE.append(line) return LINE def delete_blanc(L): """ delete the blank space from a string """ compt = 0 while L[compt] == ' ' or L[compt] == '\t': compt = compt + 1 L = L[compt:len(L)] return L def read_number(L): compt = 0 while L[compt] != ' ' and compt < (len(L) - 1): compt = compt + 1 nb1 = float(L[0:compt + 1]) L = L[compt:len(L)] return nb1, L def recover_data_string(fname, string): L = read_file(fname) for i in L: print(i[0:len(string)], string) if i[0:len(string)] == string: v = str2float(i) return v def save_line(Lnb, Cnb, LINE): number = LINE[Lnb] nombre = list() for i in range(Cnb): number = delete_blanc(number) nb1, number = read_number(number) nombre.append(nb1) return nombre def dim_y(Cnb, L): if len(L) == Cnb * 10 + Cnb * 6 + 1: nb_col = Cnb else: nb_col = Cnb + 1 return nb_col def read_color_file(fname): L = read_file(fname) atom = list() for i in range(len(L)): nb = np.array(str2float(L[i])) species = recover_species(L[i]) atom.append([species, nb]) return atom def readSiestaFA(fname): L = read_file(fname) Forces = [] for i in range(1, len(L)): Forces.append([i, np.array(str2float(L[i])[1:4])]) return Forces def readBasis_spec(fname, nb_species): """ Example Basis_specs from siesta output =============================================================================== H Z= 1 Mass= 1.0100 Charge= 0.17977+309 Lmxo=0 Lmxkb= 2 BasisType=split Semic=F L=0 Nsemic=0 Cnfigmx=1 n=1 nzeta=2 polorb=1 splnorm: 0.15000 vcte: 0.0000 rinn: 0.0000 rcs: 0.0000 0.0000 lambdas: 1.0000 1.0000 ------------------------------------------------------------------------------- L=0 Nkbl=1 erefs: 0.17977+309 L=1 Nkbl=1 erefs: 0.17977+309 L=2 Nkbl=1 erefs: 0.17977+309 =============================================================================== """ L = read_file(fname) species_charac = {} line = 0 len_basis = len('') i = 0 while i < nb_species: if L[line][0:len_basis] == '': i = i + 1 info = str2float(L[line + 2]) if L[line + 2][1] == ' ': species_charac[ L[line + 2][0]] = {'Z': info[0], 'Mass': info[1], 'Charge': info[2]} else: species_charac[ L[line + 2][0:2]] = {'Z': info[0], 'Mass': info[1], 'Charge': info[2]} while L[line][0:len('')] != '': line = line + 1 else: line = line + 1 return species_charac def str2float(string): numeric_const_pattern = r""" [-+]? # optional sign (?: (?: \d* \. \d+ ) # .1 .12 .123 etc 9.1 etc 98.1 etc | (?: \d+ \.? ) # 1. 12. 123. etc 1 12 123 etc ) # followed by optional exponent part if desired (?: [Ee] [+-]? \d+ ) ? """ rx = re.compile(numeric_const_pattern, re.VERBOSE) nb = rx.findall(string) for i in enumerate(nb): nb[i[0]] = float(i[1]) return np.array(nb) def str2int(string): numeric_const_pattern = r""" [-+]? # optional sign (?: (?: \d* \. \d+ ) # .1 .12 .123 etc 9.1 etc 98.1 etc | (?: \d+ \.? ) # 1. 12. 123. etc 1 12 123 etc ) # followed by optional exponent part if desired (?: [Ee] [+-]? \d+ ) ? """ rx = re.compile(numeric_const_pattern, re.VERBOSE) nb = rx.findall(string) for i in enumerate(nb): nb[i[0]] = int(i[1]) return np.array(nb) def recover_species(string): """ Select species in a string of caractere from a .xyz file Input parameters: string (str): the string to analyse Output parameter: string_p (str): the specie """ species = list() comp = 0 letter = string[0] if letter == ' ': while letter == ' ' or comp >= len(string): letter = string[comp] comp = comp + 1 while letter != ' ' or comp >= len(string): letter = string[comp] species.append(letter) comp = comp + 1 else: while letter != ' ' or comp >= len(string): letter = string[comp] species.append(letter) comp = comp + 1 species.remove(' ') string_p = '' for i in species: string_p = string_p + i return string_p def delete_number_string(string): # not working for exponential expression nb_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-'] L = list() for i in string: L.append(i) L_P = list() for i in enumerate(L): inside = False for j in nb_list: if i[1] == j: inside = True if not inside: L_P.append(i[1]) string_p = '' for i in L_P: if i != ' ': string_p = string_p + i return string_p def pol2cross_sec(p, omg): """ Convert the polarizability in au to cross section in nm**2 INPUT PARAMETERS: ----------------- p (np array): polarizability from mbpt_lcao calc omg (np.array): frequency range in eV OUTPUT_PARAMETERS: ------------------ sigma (np array): cross section in nm**2 """ c = 137 # speed of the light in au omg = omg * 0.036749309 # to convert from eV to Hartree sigma = 4 * np.pi * omg * p / (c) # bohr**2 sigma = sigma * (0.052917725)**2 # nm**2 return sigma def interpolate(x, y, nb_pts): """ perform a 1D spline interpolation. INPUT PARAMETERS ---------------- x (1D np array) : the original abscisse y (1D np array) : the original data nb_pts (integer): the number of points for the interpolation OUTPUT PARAMETERS ----------------- xnew (1D np array) : the spline abscisse ynew (1D np array) : the spline approximations """ from scipy import interpolate tck = interpolate.splrep(x, y, s=0) xnew = np.linspace(x[0], x[x.shape[0] - 1], nb_pts) ynew = interpolate.splev(xnew, tck, der=0) return xnew, ynew ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/parameters.py000066400000000000000000000063361316323560300270700ustar00rootroot00000000000000from ase.calculators.calculator import Parameters from ase.utils import basestring """ 2017.04 - Pedro Brandimarte: changes for python 2-3 compatible """ class PAOBasisBlock(Parameters): """ Representing a block in PAO.Basis for one species. """ def __init__(self, block): """ Parameters: -block : String. A block defining the basis set of a single species using the format of a PAO.Basis block. The initial label should be left out since it is determined programatically. Example1: 2 nodes 1.0 n=2 0 2 E 50.0 2.5 3.50 3.50 0.95 1.00 1 1 P 2 3.50 Example2: 1 0 2 S 0.2 5.00 0.00 See siesta manual for details. """ assert isinstance(block, basestring) Parameters.__init__(self, block=block) def script(self, label): """ Write the fdf script for the block. Parameters: -label : The label to insert in front of the block. """ return label + ' ' + self['block'] class Species(Parameters): """ Parameters for specifying the behaviour for a single species in the calculation. If the tag argument is set to an integer then atoms with the specified element and tag will be a separate species. Pseudopotential and basis set can be specified. Additionally the species can be set be a ghost species, meaning that they will not be considered atoms, but the corresponding basis set will be used. """ def __init__(self, symbol, basis_set='DZP', pseudopotential=None, tag=None, ghost=False, excess_charge=None): kwargs = locals() kwargs.pop('self') Parameters.__init__(self, **kwargs) def format_fdf(key, value): """ Write an fdf key-word value pair. Parameters: - key : The fdf-key - value : The fdf value. """ if isinstance(value, (list, tuple)) and len(value) == 0: return '' key = format_key(key) new_value = format_value(value) if isinstance(value, (list, tuple)): string = '%block ' + key + '\n' +\ new_value + '\n' + \ '%endblock ' + key + '\n' else: string = '%s %s\n' % (key, new_value) return string def format_value(value): """ Format python values to fdf-format. Parameters: - value : The value to format. """ if isinstance(value, tuple): sub_values = [format_value(v) for v in value] value = '\t'.join(sub_values) elif isinstance(value, list): sub_values = [format_value(v) for v in value] value = '\n'.join(sub_values) else: value = str(value) return value def format_key(key): """ Fix the fdf-key replacing '_' with '.' and '__' with '_' """ key = key.replace('__', '#') key = key.replace('_', '.') key = key.replace('#', '_') return key ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/siesta.py000066400000000000000000000740431316323560300262150ustar00rootroot00000000000000from __future__ import print_function from collections import OrderedDict import numpy as np """This module defines an ASE interface to SIESTA. Written by Mads Engelund http://www.mads-engelund.net Home of the SIESTA package: http://www.uam.es/departamentos/ciencias/fismateriac/siesta """ from ase.calculators.siesta.base_siesta import BaseSiesta import ase.units as un # Version 3.2 of Siesta class Siesta3_2(BaseSiesta): allowed_xc = { 'LDA': ['PZ', 'CA', 'PW92'], 'GGA': ['PBE', 'revPBE', 'RPBE', 'WC', 'PBEsol', 'LYP']} unit_fdf_keywords = { 'PAO.EnergyShift': "eV", 'BasisPressure': 'eV/Ang**3', 'LatticeConstant': 'Ang', 'ZM.UnitsLength': 'Ang', 'WarningMiniumAtomicDistance': 'Ang', 'MaxBondDistance': 'Ang', 'kgrid_cutoff': 'Ang', 'DM.EnergyTolerance': 'eV', 'DM.HarrisTolerance': 'eV', 'EggboxScale': 'eV', 'ElectronicTemperature': 'eV', 'OMM.TPreconScale': 'eV', 'ON.eta': 'eV', 'ON.eta_alpha': 'eV', 'ON.eta_beta': 'eV', 'ON.RcLWF': 'Ang', 'ON.ChemicalPotentialRc': 'Ang', 'ON.ChemicalPotentialTemperature': 'eV', 'Optical.EnergyMinimum': 'eV', 'Optical.EnergyMaximum': 'eV', 'Optical.Broaden': 'eV', 'Optical.Scissor': 'eV', 'MD.MaxForceTol': 'eV/Ang', 'MD.MaxStressTol': 'eV/Ang**3', 'MD.MaxCGDispl': 'Ang', 'MD.PreconditioningVariableCell': 'Ang', 'ZM.ForceTolLength': 'eV/Ang', 'ZM.ForceTolAngle': 'eV/rad', 'ZM.MaxDiplLength': 'Ang', 'MD.FIRE.TimeStep': 's', 'MD.TargetPressure': 'eV/Ang**3', 'MD.LengthTimeStep': 's', 'MD.InitialTemperature': 'eV', 'MD.TargetTemperature': 'eV', 'MD.NoseMass': 'Kg*m**2', # Not in ASE unit 'MD.ParrinelloRahmanMass': 'Kg*m**2', # Not in ASE unit 'MD.TauRelax': 's', 'MD.BulkModulus': 'eV/Ang**3', 'MD.FCDispl': 'Ang'} allowed_fdf_keywords = OrderedDict([ ('SystemName', "siesta"), ('SystemLabel', "siesta"), ('NumberOfSpecies', 0), ('NumberOfAtoms', 0), ('AtomicMass', 0), ('ChemicalSpeciesLabel', None), ('PAO.BasisSize', "DZP"), ('PAO.BasisSizes', None), ("PAO.EnergyShift", 0.02 / un.Ry), # 0.02Ry ('PAO.BasisType', "split"), ('PAO.SplitNorm', 0.15), ('PAO.SplitNormH', 0.15), ('PAO.NewSplitCode', False), ('PAO.FixSplitTable', False), ('PAO.FixSplitTailNorm', False), ('PAO.SoftDefault', False), ('PAO.SoftInnerRadius', 0.9), ('PAO.SoftPotential', 40.0), # Ry ('PS.lmax', None), ('PS.KBprojectors', None), ('FilterCutoff', None), ('FilterTol', None), ('User.Basis', False), ('User.Basis.NetCDF', False), ('BasisPressure', 0.2), # GPa ('ReparametrizePseudos', False), ('New.A.Parameter', 0.001), ('New.B.Parameter', 0.01), ('Rmax.Radial.Grid', 50.0), ('Restricted.Radial.Grid', True), ('LatticeConstant', 1.0), # Ang ('LatticeParameters', np.array([1.0, 1.0, 1.0, 90.0, 90.0, 90.0])), ('LatticeVectors', np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])), ('SuperCell', None), ('AtomicCoordinatesFormat', "Ang"), ('AtomicCoorFormatOut', "Ang"), ('AtomicCoordinatesOrigin', np.array([0.0, 0.0, 0.0])), ('AtomicCoordinatesAndAtomicSpecies', None), ('Zmatrix', None), ('ZM.UnitsLength', "Ang"), ('ZM.UnitsAngle', "rad"), ('WriteCoorXmol', False), ('WriteCoorCerius', False), ('WriteMDXmol', False), ('WarningMiniumAtomicDistance', 1.0), # Bohr ('MaxBondDistance', 6.0), # Bohr ('kgrid_cutoff', 0.0), # Bohr ('kgrid_Monkhorst_Pack', None), ('ChangeKgridInMD', False), ('TimeReversalSymmetryForKpoints', True), ('WriteKpoints', False), ('XC.functional', "LDA"), ('XC.authors', "PZ"), ('XC.hydrid', None), ('SpinPolarized', False), ('NonCollinearSpin', False), ('FixSpin', False), ('TotalSpin', 0.0), ('SingleExcitation', False), ('Harris_functional', False), ('MaxSCFIterations', 50), ('SCFMustConverge', False), ('DM.MixingWeight', 0.25), ('DM.NumberPulay', 0), ('DM.Pulay.Avoid.First.After.Kick', False), ('DM.NumberBroyden', 0), ('DM.Broyden.Cycle.On.Maxit', True), ('DM.NumberKick', 0), ('DM.KickMixingWeight', 0.50), ('DM.MixSCF1', False), ('DM.UseSaveDM', False), ('DM.FormattedFiles', False), ('DM.FormattedInput', False), ('DM.FormattedOutput', False), ('DM.InitSpinAF', False), ('DM.InitSpin', None), ('DM.AllowReuse', True), ('DM.AllowExtrapolation', True), ('SCF.Read.Charge.NetCDF', False), ('SCF.ReadDeformation.Charge.NetCDF', False), ('WriteDM', True), ('WriteDM.NetCDF', False), ('WrireDMHS.NetCDF', False), ('WriteDM.History.NetCDF', False), ('WrireDMHS.History.NetCDF', False), ('DM.Tolerance', 1E-4), ('DM.Require.Energy.Convergence', False), ('DM.EnergyTolerance', 1E-4), # eV ('DM.Require.Harris.Convergence', False), ('DM.Harris.Tolerance', 1E-4), # eV ('MeshCutoff', 100), # Ry ('MeshSubDivisions', 2), ('GridCellSampling', None), ('EggboxRemove', None), ('EggboxScale', 1.0), # eV ('NeglNonOverlapInt', False), ('SaveHS', False), ('FixAuxiliaryCell', False), ('NaiveAuxiliaryCell', False), ('SolutionMethod', "diagon"), ('NumberOfEigenStates', 0), ('Use.New.Diagk', False), ('Diag.DivideAndConquer', True), ('Diag.AllInOne', False), ('Diag.NoExpert', False), ('Diag.PreRotate', False), ('Diag.Use2D', True), ('WriteEigenvalues', False), ('OccupationFunction', "FD"), ('OccupationMPOrder', 1), ('ElectronicTemperature', 300.0), # K pp ('ON.functional', "Kim"), ('ON.MaxNumIter', 1000), ('ON.etol', 1E-8), ('ON.eta', 0.0), # eV ('ON.eta_alpha', 0.0), # eV ('ON.eta_beta', 0.0), # eV ('ON.RcLWF', 9.5), # Bohr ('ON.ChemicalPotential', False), ('ON.ChemicalPotentialUse', False), ('ON.ChemicalPotentialRc', 9.5), # Bohr ('ON.ChemicalPotentialTemperature', 0.05), # Ry ('ON.ChemicalPotentialOrder', 100), ('ON.LowerMemory', False), ('ON.UseSaveLWF', False), ('BandLinesScale', None), # by default pi/a (a: lattice constant) ('BandLines', None), ('BandPoints', None), ('WriteKbands', False), ('WriteBands', False), ('WFS.Write.For.Bands', False), ('WFS.Band.Min', 1), ('WFS.Band.Max', 0), # default number of orbital ('WaveFuncPointScale', None), # by default pi/a (a: lattice constant) ('WaveFuncKPoints', None), ('WriteWaveFunctions', False), ('ProjectedDensityOfStates', None), ('LocalDensityOfStates', None), ('WriteMullikenPop', 0), ('MullikenInSCF', False), ('WriteHirshfeldPop', False), ('WriteVoronoiPop', False), ('PartialChargesAtEveryGeometry', False), ('PartialChargesAtEveryScfStep', False), ('COOP.Write', False), ('WFS.Energy.Min', None), # default -\infty ('WFS.Energy.Max', None), # default +\infty ('WFS.Band.Min', 1), ('WFS.Band.Max', 0), # default the number of orbitals ('OpticalCalculation', False), ('Optical.EnergyMinimum', 0.0), # Ry ('Optical.EnergyMaximum', 10.0), # Ry ('Optical.Broaden', 0.0), # Ry ('Optical.Scissor', 0.0), # Ry ('Optical.NumberOfBands', 0), # default all bands ('Optical.Mesh', None), ('Optical.OffsetMesh', False), ('Optical.PolarizationType', "polycrystal"), ('Optical.Vector', None), ('PolarizationGrids', None), ('BornCharge', False), ('NetCharge', 0.0), ('SimulateDoping', False), ('ExternalElectricField', None), ('SlabDipoleCorrection', False), ('LongOutput', False), ('MD.UseSaveXV', False), ('MD.UseSaveCG', False), ('SaveRho', False), ('SaveDeltaRho', False), ('SaveElectrostaticPotential', False), ('SaveNeutralAtomPotential', False), ('SaveTotalPotential', False), ('SaveIonicCharge', False), ('SaveTotalCharge', False), ('SaveBaderCharge', False), ('SaveInitialChargeDensity', False), ('MM.Potentials', None), ('MM.Cutoff', 30.0), # Bohr ('MM.UnitsEnergy', "eV"), ('MM.UnitsDistance', "Ang"), ('MM.Grimme.D', 20.0), ('MM.Grimme.S6', 1.66), ('BlockSize', 8), ('ProcessorY', 0), # default depend the number of cpus ('Diag.Memory', 1.0), ('Diag.ParallelOverK', False), ('UseDomainDecomposition', False), ('UseSpatialDecomposition', False), ('RcSpatial', 0.0), # max of the matrix element range ('DirectPhi', False), ('AllocReportLevel', 0), ('UseSaveData', False), ('WriteDenchar', False), ('MD.TypeOfRun', "Verlet"), ('MD.VariableCell', False), ('MD.ConstantVolume', False), ('MD.RelaxCellOnly', False), ('MD.MaxForceTol', 0.04), # eV/Ang ('MD.MaxStressTol', 1.0), # GPa ('MD.NumCGsteps', 0), ('MD.MaxCGDispl', 0.2), # Bohr ('MD.PreconditioningVariableCell', 5.0), # Ang ('ZM.ForceTolLength', 0.00155), # Ry/Bohr ('ZM.ForceTolAngle', 0.0035), # Ry/Rad ('ZM.MaxDiplLength', 0.2), # Bohr ('ZM.MaxDiplAngle', 0.003), # rad ('MD.UseSaveCG', False), ('MD.Broyden.History.Steps', 5), ('MD.Broyden.Cycle.On.Maxit', True), ('MD.Broyden.Initial.Inverse.Jacobian', 1.0), ('MD.FIRE.TimeStep', 0.0), # ?? ('MD.Quench', False), ('MD.FireQuench', False), ('MD.TargetPressure', 0.0), # GPa ('MD.TargetStress', None), ('MD.RemoveIntramolecularPressure', False), ('MD.InitialTimeStep', 1), ('MD.FinalTimestep', 1), ('MD.LengthTimeStep', 1.0), # fs ('MD.InitialTemperature', 0.0), # K ('MD.TargetTemperature', 0.0), # K ('MD.NoseMass', 100.0), # Ry.fs^2 ('MD.ParrinelloRahmanMass', 100.0), # Ry.fs^{2} ('MD.AnnealOption', 0.0), ('MD.TauRelax', 100.0), # fs ('MD.BulkModulus', 100.0), # Ry/Bohr^{3} ('WriteCoorInitial', True), ('WriteCoorStep', False), ('WriteForces', False), ('WriteMDhistory', False), ('GeometryConstraints', None), ('MD.FCDispl', 0.04), # Bohr ('MD.FCfirst', 1), ('MD.FClast', 0), ('PhononLabels', None), ('MD.ATforPhonon', None)]) # Trunk version, snapshot 462 class SiestaTrunk462(BaseSiesta): allowed_xc = { 'LDA': ['PZ', 'CA', 'PW92'], 'GGA': ['PW91', 'PBE', 'revPBE', 'RPBE', 'WC', 'AM05', 'PBEsol', 'PBEJsJrLO', 'PBEGcGxLO', 'PBEGcGxHEG', 'BLYP'], 'VDW': ['DRSLL', 'LMKLL', 'KBM', 'C09', 'BH', 'VV']} unit_fdf_keywords = { 'BasisPressure': 'eV/Ang**3', 'LatticeConstant': 'Ang', 'ZM.UnitsLength': 'Ang', 'WarningMiniumAtomicDistance': 'Ang', 'MaxBondDistance': 'Ang', 'kgrid_cutoff': 'Ang', 'DM.EnergyTolerance': 'eV', 'DM.HarrisTolerance': 'eV', 'EggboxScale': 'eV', 'ElectronicTemperature': 'eV', 'ON.eta': 'eV', 'ON.eta_alpha': 'eV', 'ON.eta_beta': 'eV', 'ON.RcLWF': 'Ang', 'ON.ChemicalPotentialRc': 'Ang', 'ON.ChemicalPotentialTemperature': 'eV', 'Optical.EnergyMinimum': 'eV', 'Optical.EnergyMaximum': 'eV', 'Optical.Broaden': 'eV', 'Opticalcissor': 'eV', 'MD.MaxForceTol': 'eV/Ang', 'MD.MaxStressTol': 'eV/Ang**3', 'MD.MaxCGDispl': 'Ang', 'MD.PreconditioningVariableCell': 'Ang', 'ZM.ForceTolLength': 'eV/Ang', 'ZM.ForceTolAngle': 'eV/rad', 'ZM.MaxDiplLength': 'Ang', 'MD.FIRE.TimeStep': 's', 'MD.TargetPressure': 'eV/Ang**3', 'MD.LengthTimeStep': 's', 'MD.InitialTemperature': 'eV', 'MD.TargetTemperature': 'eV', 'MD.NoseMass': 'Kg*m**2', # Not in ASE unit 'MD.ParrinelloRahmanMass': 'Kg*m**2', # Not in ASE unit 'MD.TauRelax': 's', 'MD.BulkModulus': 'eV/Ang**3', 'MD.FCDispl': 'Ang'} allowed_fdf_keywords = OrderedDict([ ('SystemName', "siesta"), ('SystemLabel', "siesta"), ('NumberOfSpecies', 0), ('NumberOfAtoms', 0), ('AtomicMass', 0), ('ChemicalSpeciesLabel', None), ('PAO.BasisSize', "DZP"), ('PAO.BasisSizes', None), ('PAO.BasisType', "split"), ('PAO.SplitNorm', 0.15), ('PAO.SplitNormH', 0.15), ('PAO.NewSplitCode', False), ('PAO.FixSplitTable', False), ('PAO.FixSplitTailNorm', False), ('PAO.SoftDefault', False), ('PAO.SoftInnerRadius', 0.9), ('PAO.SoftPotential', 40.0), # Ry ('PS.lmax', None), ('PS.KBprojectors', None), ('FilterCutoff', None), ('FilterTol', None), ('User.Basis', False), ('User.Basis.NetCDF', False), ('BasisPressure', 0.2), # GPa ('ReparametrizePseudos', False), ('New.A.Parameter', 0.001), ('New.B.Parameter', 0.01), ('Rmax.Radial.Grid', 50.0), ('Restricted.Radial.Grid', True), ('LatticeConstant', 1.0), # Ang ('LatticeParameters', np.array([1.0, 1.0, 1.0, 90.0, 90.0, 90.0])), ('LatticeVectors', np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]])), ('SuperCell', None), ('AtomicCoordinatesFormat', "Ang"), ('AtomicCoorFormatOut', "Ang"), ('AtomicCoordinatesOrigin', np.array([0.0, 0.0, 0.0])), ('AtomicCoordinatesAndAtomicSpecies', None), ('Zmatrix', None), ('ZM.UnitsLength', "Ang"), ('ZM.UnitsAngle', "rad"), ('WriteCoorXmol', False), ('WriteCoorCerius', False), ('WriteMDXmol', False), ('WarningMiniumAtomicDistance', 1.0), # Bohr ('MaxBondDistance', 6.0), # Bohr ('kgrid_cutoff', 0.0), # Bohr ('kgrid_Monkhorst_Pack', None), ('ChangeKgridInMD', False), ('TimeReversalSymmetryForKpoints', True), ('WriteKpoints', False), ('XC.functional', "LDA"), ('XC.authors', "PZ"), ('XC.hydrid', None), ('SpinPolarised', False), ('NonCollinearSpin', False), ('FixSpin', False), ('TotalSpin', 0.0), ('SingleExcitation', False), ('Harris_functional', False), ('MaxSCFIterations', 50), ('SCFMustConverge', False), ('DM.MixingWeight', 0.25), ('DM.NumberPulay', 0), ('DM.Pulay.Avoid.First.After.Kick', False), ('DM.NumberBroyden', 0), ('DM.Broyden.Cycle.On.Maxit', True), ('DM.NumberKick', 0), ('DM.KickMixingWeight', 0.50), ('DM.MixSCF1', False), ('DM.UseSaveDM', False), ('DM.FormattedFiles', False), ('DM.FormattedInput', False), ('DM.FormattedOutput', False), ('DM.InitSpinAF', False), ('DM.InitSpin', None), ('DM.AllowReuse', True), ('DM.AllowExtrapolation', True), ('SCF.Read.Charge.NetCDF', False), ('SCF.ReadDeformation.Charge.NetCDF', False), ('WriteDM', True), ('WriteDM.NetCDF', False), ('WrireDMHS.NetCDF', False), ('WriteDM.History.NetCDF', False), ('WrireDMHS.History.NetCDF', False), ('DM.Tolerance', 1E-4), ('DM.Require.Energy.Convergence', False), ('DM.EnergyTolerance', 1E-4), # eV ('DM.Require.Harris.Convergence', False), ('DM.Harris.Tolerance', 1E-4), # eV ('MeshCutoff', 100), # Ry ('MeshSubDivisions', 2), ('GridCellSampling', None), ('EggboxRemove', None), ('EggboxScale', 1.0), # eV ('NeglNonOverlapInt', False), ('SaveHS', False), ('FixAuxiliaryCell', False), ('NaiveAuxiliaryCell', False), ('SolutionMethod', "diagon"), ('NumberOfEigenStates', 0), ('Use.New.Diagk', False), ('Diag.DivideAndConquer', True), ('Diag.AllInOne', False), ('Diag.NoExpert', False), ('Diag.PreRotate', False), ('Diag.Use2D', True), ('WriteEigenvalues', False), ('OccupationFunction', "FD"), ('OccupationMPOrder', 1), ('ElectronicTemperature', 300.0), # K pp ('ON.functional', "Kim"), ('ON.MaxNumIter', 1000), ('ON.etol', 1E-8), ('ON.eta', 0.0), # eV ('ON.eta_alpha', 0.0), # eV ('ON.eta_beta', 0.0), # eV ('ON.RcLWF', 9.5), # Bohr ('ON.ChemicalPotential', False), ('ON.ChemicalPotentialUse', False), ('ON.ChemicalPotentialRc', 9.5), # Bohr ('ON.ChemicalPotentialTemperature', 0.05), # Ry ('ON.ChemicalPotentialOrder', 100), ('ON.LowerMemory', False), ('ON.UseSaveLWF', False), ('BandLinesScale', None), # by default pi/a (a: lattice constant) ('BandLines', None), ('BandPoints', None), ('WriteKbands', False), ('WriteBands', False), ('WFS.Write.For.Bands', False), ('WFS.Band.Min', 1), ('WFS.Band.Max', 0), # default number of orbital ('WaveFuncPointScale', None), # by default pi/a (a: lattice constant) ('WaveFuncKPoints', None), ('WriteWaveFunctions', False), ('ProjectedDensityOfStates', None), ('LocalDensityOfStates', None), ('WriteMullikenPop', 0), ('MullikenInSCF', False), ('WriteHirshfeldPop', False), ('WriteVoronoiPop', False), ('PartialChargesAtEveryGeometry', False), ('PartialChargesAtEveryScfStep', False), ('COOP.Write', False), ('WFS.Energy.Min', None), # default -\infty ('WFS.Energy.Max', None), # default +\infty ('WFS.Band.Min', 1), ('WFS.Band.Max', 0), # default the number of orbitals ('OpticalCalculation', False), ('Optical.EnergyMinimum', 0.0), # Ry ('Optical.EnergyMaximum', 10.0), # Ry ('Optical.Broaden', 0.0), # Ry ('Optical.Scissor', 0.0), # Ry ('Optical.NumberOfBands', 0), # default all bands ('Optical.Mesh', None), ('Optical.OffsetMesh', False), ('Optical.PolarizationType', "polycrystal"), ('Optical.Vector', None), ('PolarizationGrids', None), ('BornCharge', False), ('NetCharge', 0.0), ('SimulateDoping', False), ('ExternalElectricField', None), ('SlabDipoleCorrection', False), ('LongOutput', False), ('MD.UseSaveXV', False), ('MD.UseSaveCG', False), ('SaveRho', False), ('SaveDeltaRho', False), ('SaveElectrostaticPotential', False), ('SaveNeutralAtomPotential', False), ('SaveTotalPotential', False), ('SaveIonicCharge', False), ('SaveTotalCharge', False), ('SaveBaderCharge', False), ('SaveInitialChargeDensity', False), ('MM.Potentials', None), ('MM.Cutoff', 30.0), # Bohr ('MM.UnitsEnergy', "eV"), ('MM.UnitsDistance', "Ang"), ('MM.Grimme.D', 20.0), ('MM.Grimme.S6', 1.66), ('BlockSize', 8), ('ProcessorY', 0), # default depend the number of cpus ('Diag.Memory', 1.0), ('Diag.ParallelOverK', False), ('UseDomainDecomposition', False), ('UseSpatialDecomposition', False), ('RcSpatial', 0.0), # max of the matrix element range ('DirectPhi', False), ('AllocReportLevel', 0), ('UseSaveData', False), ('WriteDenchar', False), ('MD.TypeOfRun', "Verlet"), ('MD.VariableCell', False), ('MD.ConstantVolume', False), ('MD.RelaxCellOnly', False), ('MD.MaxForceTol', 0.04), # eV/Ang ('MD.MaxStressTol', 1.0), # GPa ('MD.NumCGsteps', 0), ('MD.MaxCGDispl', 0.2), # Bohr ('MD.PreconditioningVariableCell', 5.0), # Ang ('ZM.ForceTolLength', 0.00155), # Ry/Bohr ('ZM.ForceTolAngle', 0.0035), # Ry/Rad ('ZM.MaxDiplLength', 0.2), # Bohr ('ZM.MaxDiplAngle', 0.003), # rad ('MD.UseSaveCG', False), ('MD.Broyden.History.Steps', 5), ('MD.Broyden.Cycle.On.Maxit', True), ('MD.Broyden.Initial.Inverse.Jacobian', 1.0), ('MD.FIRE.TimeStep', 0.0), # ?? ('MD.Quench', False), ('MD.FireQuench', False), ('MD.TargetPressure', 0.0), # GPa ('MD.TargetStress', None), ('MD.RemoveIntramolecularPressure', False), ('MD.InitialTimeStep', 1), ('MD.FinalTimestep', 1), ('MD.LengthTimeStep', 1.0), # fs ('MD.InitialTemperature', 0.0), # K ('MD.TargetTemperature', 0.0), # K ('MD.NoseMass', 100.0), # Ry.fs^2 ('MD.ParrinelloRahmanMass', 100.0), # Ry.fs^2 ('MD.AnnealOption', 0.0), ('MD.TauRelax', 100.0), # fs ('MD.BulkModulus', 100.0), # Ry/Bohr^{3} ('WriteCoorInitial', True), ('WriteCoorStep', False), ('WriteForces', False), ('WriteMDhistory', False), ('GeometryConstraints', None), ('MD.FCDispl', 0.04), # Bohr ('MD.FCfirst', 1), ('MD.FClast', 0), ('PhononLabels', None), ('MD.ATforPhonon', None)]) # # # allowed_fdf_keywords = OrderedDict([ # ('SystemName',), # ('SystemLabel',), # ('MD.UseSaveXV',), # ('MD.UseSaveCG',), # ('LongOutput',), # ('NumberOfSpecies',), # ('NumberOfAtoms',), # ('ChemicalSpeciesLabel',), # ('AtomicMass',), # ('PAO.BasisType',), # ('PAO.SplitNorm',), # ('PAO.SplitNormH',), # ('PAO.NewSplitCode',), # ('PAO.FixSplitTable',), # ('PAO.FixSplitTailNorm',), # ('PAO.EnergyCutoff',), # ('PAO.EnergyPolCutoff',), # ('PAO.EnergyContractionCutoff',), # ('PAO.SoftDefault',), # ('PAO.SoftInnerRadius',), # ('PAO.SoftPotential',), # ('PS.lmax',), # ('PS.KBprojectors',), # ('KB.New.Reference.Orbitals',), # ('PAO.Basis',), # ('FilterCutoff',), # ('FilterTol',), # ('User.Basis',), # ('User.Basis.NetCDF',), # ('BasisPressure',), # ('ReparametrizePseudos',), # ('New.A.Parameter',), # ('New.B.Parameter',), # ('Rmax.Radial.Grid',), # ('Restricted.Radial.Grid',), # ('LatticeConstant',), # ('LatticeParameters',), # ('LatticeVectors',), # ('SuperCell',), # ('AtomicCoordinatesFormat',), # ('AtomicCoorFormatOut',), # ('AtomicCoordinatesOrigin',), # ('AtomicCoordinatesAndAtomicSpecies',), # ('Zmatrix',), # ('ZM.UnitsLength',), # ('ZM.UnitsAngle',), # ('WriteCoorXmol',), # ('WriteCoorCerius',), # ('WriteMDXmol',), # ('WarningMiniumAtomicDistance',), # ('MaxBondDistance',), # ('kgrid_cutoff',), # ('kgrid_Monkhorst_Pack',), # ('ChangeKgridInMD',), # ('TimeReversalSymmetryForKpoints',), # ('WriteKpoints',), # ('XC.functional',), # ('XC.authors',), # ('XC.hydrid',), # ('SpinPolarised',), # ('NonCollinearSpin',), # ('FixSpin',), # ('TotalSpin',), # ('SingleExcitation',), # ('Harris_functional',), # ('MinSCFIterations',), # ('MaxSCFIterations',), # ('SCFMustConverge',), # ('MixHamiltonian',), # ('DM.MixSCF1',), # ('SCF.MixAfterConvergence',), # ('DM.MixingWeight',), # ('DM.NumberPulay',), # ('SCF.PulayDamping',), # ('SCF.PulayMinimumHistory',), # ('SCF.PulayDmaxRegion',), # ('DM.NumberKick',), # ('DM.KickMixingWeight',), # ('DM.Pulay.Avoid.First.After.Kick',), # ('SCF.LinearMixingAfterPulay',), # ('SCF.MixingWeightAfterPulay',), # ('SCF.Pulay.UseSVD',), # ('SCF.Pulay.DebugSVD',), # ('SCF.Pulay.RcondSVD',), # ('DM.PulayOnFile',), # ('DM.NumberBroyden',), # ('DM.Broyden.Cycle.On.Maxit',), # ('DM.Broyden.Variable.Weight',), # ('MixCharge',), # ('SCF.Kerker.q0sq',), # ('SCF.RhoGMixingCutoff',), # ('SCF.RhoG.DIIS.Depth',), # ('SCF.RhoG.Metric.Preconditioner.Cutoff',), # ('SCF.DebugRhogMixing',), # ('DebugDIIS',), # ('SCF.MixCharge.SCF1',), # ('DM.UseSaveDM',), # ('DM.FormattedFiles',), # ('DM.FormattedInput',), # ('DM.FormattedOutput',), # ('DM.InitSpinAF',), # ('DM.InitSpin',), # ('DM.AllowReuse',), # ('DM.AllowExtrapolation',), # ('SCF.Read.Charge.NetCDF',), # ('SCF.ReadDeformation.Charge.NetCDF',), # ('WriteDM',), # ('WriteDM.NetCDF',), # ('WrireDMHS.NetCDF',), # ('WriteDM.History.NetCDF',), # ('WrireDMHS.History.NetCDF',), # ('DM.Tolerance',), # ('DM.Require.Energy.Convergence',), # ('DM.EnergyTolerance',), # ('DM.Require.Harris.Convergence',), # ('DM.Harris.Tolerance',), # ('MeshCutoff',), # ('MeshSubDivisions' # ('GridCellSampling',), # ('EggboxRemove',), # ('EggboxScale',), # ('NeglNonOverlapInt',), # ('SaveHS',), # ('FixAuxiliaryCell',), # ('NaiveAuxiliaryCell',), # ('SolutionMethod',), # ('NumberOfEigenStates',), # ('Use.New.Diagk',), # ('Diag.DivideAndConquer',), # ('Diag.AllInOne',), # ('Diag.NoExpert',), # ('Diag.PreRotate',), # ('Diag.Use2D',), # ('WriteEigenvalues',), # ('OccupationFunction',), # ('OccupationMPOrder',), # ('ElectronicTemperature',), # ('ON.functional',), # ('ON.MaxNumIter',), # ('ON.etol',), # ('ON.eta',), # ('ON.eta_alpha',), # ('ON.eta_beta',), # ('ON.RcLWF',), # ('ON.ChemicalPotential',), # ('ON.ChemicalPotentialUse',), # ('ON.ChemicalPotentialRc',), # ('ON.ChemicalPotentialTemperature',), # ('ON.ChemicalPotentialOrder',), # ('ON.LowerMemory',), # ('ON.UseSaveLWF',), # ('BandLinesScale',), # ('BandLines',), # ('BandPoints',), # ('WriteKbands',), # ('WriteBands',), # ('WFS.Write.For.Bands',), # ('WFS.Band.Min',), # ('WFS.Band.Max',), # ('WaveFuncPointScale',), # ('WaveFuncKPoints',), # ('WriteWaveFunctions',), # ('ProjectedDensityOfStates',), # ('LocalDensityOfStates',), # ('WriteMullikenPop',), # ('MullikenInSCF',), # ('WriteHirshfeldPop',), # ('WriteVoronoiPop',), # ('PartialChargesAtEveryGeometry',), # ('PartialChargesAtEveryScfStep',), # ('COOP.Write',), # ('WFS.Energy.Min',), # ('WFS.Energy.Max',), # ('OpticalCalculation',), # ('Optical.EnergyMinimum',), # ('Optical.EnergyMaximum',), # ('Optical.Broaden',), # ('Optical.Scissor',), # ('Optical.NumberOfBands',), # ('Optical.Mesh',), # ('Optical.OffsetMesh',), # ('Optical.PolarizationType',), # ('Optical.Vector',), # ('PolarizationGrids',), # ('BornCharge',), # ('NetCharge',), # ('SimulateDoping',), # ('ExternalElectricField',), # ('SlabDipoleCorrection',), # ('SaveRho',), # ('SaveDeltaRho',), # ('SaveElectrostaticPotential',), # ('SaveNeutralAtomPotential',), # ('SaveBaderCharge',), # ('SaveInitialChargeDensity',), # ('MM.Potentials',), # ('MM.Cutoff',), # ('MM.UnitsEnergy',), # ('MM.UnitsDistance',), # ('MM.Grimme.D',), # ('MM.Grimme.S6',), # ('BlockSize' # ('ProcessorY',), # ('Diag.Memory',), # ('Diag.ParallelOverK',), # ('UseDomainDecomposition',), # ('UseSpatialDecomposition',), # ('RcSpatial',), # ('DirectPhi',), # ('AllocReportLevel',), # ('UseSaveData',), # ('WriteDenchar',), # ('MD.TypeOfRun',), # ('MD.VariableCell',), # ('MD.ConstantVolume',), # ('MD.RelaxCellOnly',), # ('MD.MaxForceTol',), # ('MD.MaxStressTol',), # ('MD.NumCGsteps',), # ('MD.MaxCGDispl',), # ('MD.PreconditioningVariableCell',), # ('ZM.ForceTolLength',), # ('ZM.ForceTolAngle',), # ('ZM.MaxDiplLength',), # ('ZM.MaxDiplAngle',), # ('MD.UseSaveCG',), # ('MD.Broyden.History.Steps',), # ('MD.Broyden.Cycle.On.Maxit',), # ('MD.Broyden.Initial.Inverse.Jacobian',), # ('MD.FIRE.TimeStep',), # ('MD.Quench',), # ('MD.FireQuench',), # ('MD.TargetPressure',), # ('MD.TargetStress',), # ('MD.RemoveIntramolecularPressure',), # ('MD.InitialTimeStep',), # ('MD.FinalTimestep',), # ('MD.LengthTimeStep',), # ('MD.InitialTemperature',), # ('MD.TargetTemperature',), # ('MD.NoseMass',), # ('MD.ParrinelloRahmanMass',), # ('MD.AnnealOption',), # ('MD.TauRelax',), # ('MD.BulkModulus',), # ('WriteCoorInitial',), # ('WriteCoorStep',), # ('WriteForces',), # ('WriteMDhistory',), # ('GeometryConstraints',), # ('MD.FCDispl',), # ('MD.FCfirst',), # ('MD.FClast',), # ('PhononLabels',), # ('MD.ATforPhonon')]), # Define the default siesta version. Siesta = Siesta3_2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/siesta/siesta_raman.py000066400000000000000000000543341316323560300273740ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Infrared and Raman intensities using siesta and MBPT_LCAO""" import pickle from math import sqrt from sys import stdout import numpy as np import ase.units as units from ase.parallel import parprint, paropen from ase.vibrations import Vibrations from ase.utils import basestring # XXX This class contains much repeated code. FIXME class SiestaRaman(Vibrations): """ Class for calculating vibrational modes, infrared and non-resonant Raman intensities using finite difference. The vibrational modes are calculated from a finite difference approximation of the Dynamical matrix and the IR and Ram intensities from a finite difference approximation of the gradient of the dipole moment. The method is described in: D. Porezag, M. R. Pederson: "Infrared intensities and Raman-scattering activities within density-functional theory", Phys. Rev. B 54, 7830 (1996) The calculator object (calc) must be Siesta, and the mbpt_lcao (http://mbpt-domiprod.wikidot.com/) program must be installed. >>> calc.get_dipole_moment(atoms) In addition to the methods included in the ``Vibrations`` class the ``Infrared`` class introduces two new methods; *get_spectrum()* and *write_spectra()*. The *summary()*, *get_energies()*, *get_frequencies()*, *get_spectrum()* and *write_spectra()* methods all take an optional *method* keyword. Use method='Frederiksen' to use the method described in: T. Frederiksen, M. Paulsson, M. Brandbyge, A. P. Jauho: "Inelastic transport theory from first-principles: methodology and applications for nanoscale devices", Phys. Rev. B 75, 205413 (2007) atoms: Atoms object The atoms to work on. siesta: Siesta calculator mbpt_inp: dict dictionnary containing the input for the mbpt_lcao program indices: list of int List of indices of atoms to vibrate. Default behavior is to vibrate all atoms. name: str Name to use for files. delta: float Magnitude of displacements. nfree: int Number of displacements per degree of freedom, 2 or 4 are supported. Default is 2 which will displace each atom +delta and -delta in each cartesian direction. directions: list of int Cartesian coordinates to calculate the gradient of the dipole moment in. For example directions = 2 only dipole moment in the z-direction will be considered, whereas for directions = [0, 1] only the dipole moment in the xy-plane will be considered. Default behavior is to use the dipole moment in all directions. Example: See the example test/siesta/mbpt_lcao/script_raman.py This example calculate the Raman signal for a CO2 molecule. You should get something like, --------------------------------------------------------------------------------------------------------------------------- Mode Frequency Intensity IR Intensity Raman (real) Intensity Raman (imag) Raman Ehanced # meV cm^-1 (D/Ã…)^2 amu^-1 A^4 amu^-1 A^4 amu^-1 A^4 amu^-1 --------------------------------------------------------------------------------------------------------------------------- 0 23.2i 187.1i 0.0005 1.0810 0.0000 0.0000 1 22.7i 183.2i 0.0007 1.1471 0.0000 0.0000 2 4.0i 32.6i 0.0001 0.0054 0.0000 0.0000 3 19.6 158.0 0.0001 1.1790 0.0000 0.0000 4 21.0 169.2 0.0004 1.0894 0.0000 0.0000 5 77.9 628.3 0.4257 0.0060 0.0000 0.0000 6 79.7 642.6 0.4354 0.0022 0.0000 0.0000 7 163.5 1319.0 0.0000 21.7631 0.0000 0.0000 8 294.0 2371.0 12.1479 0.0002 0.0000 0.0000 --------------------------------------------------------------------------------------------------------------------------- It can be compared to calculations done with Quantum Espresso (see test/siesta/mbpt_lcao/raman_espresso) that give something like, # mode [cm-1] [THz] IR Raman depol.fact 1 -0.01 -0.0002 0.0000 0.4930 0.7500 2 -0.00 -0.0000 0.0000 0.0018 0.7500 3 0.00 0.0001 0.0000 0.8202 0.7500 4 0.00 0.0001 0.0000 0.9076 0.7500 5 0.01 0.0002 0.0000 1.8576 0.7499 6 0.07 0.0021 0.0000 0.0001 0.7500 7 717.64 21.5144 0.5303 0.0000 0.0862 8 1244.37 37.3052 0.0000 23.8219 0.1038 9 2206.78 66.1575 12.6139 0.0000 0.6417 """ def __init__(self, atoms, siesta, mbpt_inp, indices=None, name='ram', delta=0.01, nfree=2, directions=None): assert nfree in [2, 4] self.atoms = atoms if atoms.constraints: print('WARNING! \n Your Atoms object is constrained. ' 'Some forces may be unintended set to zero. \n') self.calc = atoms.get_calculator() if indices is None: indices = range(len(atoms)) self.indices = np.asarray(indices) self.nfree = nfree self.name = name + '-d%.3f' % delta self.delta = delta self.H = None if directions is None: self.directions = np.asarray([0, 1, 2]) else: self.directions = np.asarray(directions) self.ir = True self.ram = True self.siesta = siesta self.mbpt_inp = mbpt_inp def get_polarizability(self): return self.siesta.get_polarizability(self.mbpt_inp, format_output='txt', units='au') def read(self, method='standard', direction='central'): self.method = method.lower() self.direction = direction.lower() assert self.method in ['standard', 'frederiksen'] if direction != 'central': raise NotImplementedError( 'Only central difference is implemented at the moment.') # Get "static" dipole moment polarizability and forces name = '%s.eq.pckl' % self.name [forces_zero, dipole_zero, freq_zero, pol_zero] = pickle.load(open(name)) self.dipole_zero = (sum(dipole_zero**2)**0.5) / units.Debye self.force_zero = max([sum((forces_zero[j])**2)**0.5 for j in self.indices]) self.pol_zero = pol_zero * (units.Bohr)**3 # Ang**3 ndof = 3 * len(self.indices) H = np.empty((ndof, ndof)) dpdx = np.empty((ndof, 3)) dadx = np.empty((ndof, self.pol_zero.shape[0], 3, 3), dtype=complex) r = 0 for a in self.indices: for i in 'xyz': name = '%s.%d%s' % (self.name, a, i) [fminus, dminus, frminus, pminus] = pickle.load( open(name + '-.pckl')) [fplus, dplus, frplus, pplus] = pickle.load( open(name + '+.pckl')) if self.nfree == 4: [fminusminus, dminusminus, frminusminus, pminusminus] =\ pickle.load(open(name + '--.pckl')) [fplusplus, dplusplus, frplusplus, pplusplus] =\ pickle.load(open(name + '++.pckl')) if self.method == 'frederiksen': fminus[a] += -fminus.sum(0) fplus[a] += -fplus.sum(0) if self.nfree == 4: fminusminus[a] += -fminus.sum(0) fplusplus[a] += -fplus.sum(0) if self.nfree == 2: H[r] = (fminus - fplus)[self.indices].ravel() / 2.0 dpdx[r] = (dminus - dplus) dadx[r] = (pminus - pplus) if self.nfree == 4: H[r] = (-fminusminus + 8 * fminus - 8 * fplus + fplusplus)[self.indices].ravel() / 12.0 dpdx[r] = (-dplusplus + 8 * dplus - 8 * dminus + dminusminus) / 6.0 dadx[r] = (-pplusplus + 8 * pplus - 8 * pminus + pminusminus) / 6.0 H[r] /= 2 * self.delta dpdx[r] /= 2 * self.delta dadx[r] /= 2 * self.delta # polarizability in Ang for n in range(3): if n not in self.directions: dpdx[r][n] = 0 dpdx[r][n] = 0 r += 1 # Calculate eigenfrequencies and eigenvectors m = self.atoms.get_masses() H += H.copy().T self.H = H m = self.atoms.get_masses() self.im = np.repeat(m[self.indices]**-0.5, 3) omega2, modes = np.linalg.eigh(self.im[:, None] * H * self.im) self.modes = modes.T.copy() # infrared # Calculate intensities dpdq = np.array([dpdx[j] / sqrt(m[self.indices[j // 3]] * units._amu / units._me) for j in range(ndof)]) dpdQ = np.dot(dpdq.T, modes) dpdQ = dpdQ.T intensities = np.array([sum(dpdQ[j]**2) for j in range(ndof)]) # Conversion factor: s = units._hbar * 1e10 / sqrt(units._e * units._amu) self.hnu = s * omega2.astype(complex)**0.5 # Conversion factor from atomic units to (D/Angstrom)^2/amu. conv = (1.0 / units.Debye)**2 * units._amu / units._me self.intensities_ir = intensities * conv # Raman dadq = np.array([(dadx[j, :, :, :] / (units.Bohr**2)) / sqrt(m[self.indices[j / 3]] * units._amu / units._me) for j in range(ndof)]) dadQ = np.zeros((ndof, 3, 3, dadq.shape[1]), dtype=complex) for w in range(dadq.shape[1]): dadQ[:, :, :, w] = np.dot(dadq[:, w, :, :].T, modes).T ak = (dadQ[:, 0, 0, :] + dadQ[:, 1, 1, :] + dadQ[:, 2, 2, :]) / 3.0 gk2 = ((dadQ[:, 0, 0, :] - dadQ[:, 1, 1, :])**2 + (dadQ[:, 1, 1, :] - dadQ[:, 2, 2, :])**2 + (dadQ[:, 2, 2, :] - dadQ[:, 0, 0, :])**2 + 6 * (dadQ[:, 0, 1, :]**2 + dadQ[:, 1, 2, :]**2 + dadQ[:, 2, 0, :]**2)) intensities = np.zeros((ndof), dtype=float) intensities_ram_enh = np.zeros((ndof), dtype=float) # calculate the coefficients for calculating Raman Signal for j in range(ndof): aj = self.get_pol_freq(0.0, freq_zero, ak[j, :]) gj2 = self.get_pol_freq(0.0, freq_zero, gk2[j, :]) intensities[j] = (45 * aj**2 + 7 * gj2) / 45.0 self.intensities_ram = intensities # Bohr**4 .me**-1 self.intensities_ram_enh = intensities_ram_enh # Bohr**4 .me**-1 def get_pol_freq(self, freq, freq_array, quantity): """ get the intensity at the right frequency, for non-resonnant Raman, the frequency is 0.0 eV. For resonnant Raman it should change (but not yet implemented) """ from ase.calculators.siesta.mbpt_lcao_utils import interpolate if freq.imag > 1E-10: return 0.0 w, interpol = interpolate( freq_array, quantity, 100 * quantity.shape[0]) i = 0 while w[i] < freq: i = i + 1 return interpol[i] def intensity_prefactor(self, intensity_unit): if intensity_unit == '(D/A)2/amu': return 1.0, '(D/Ã…)^2 amu^-1' elif intensity_unit == 'km/mol': # conversion factor from Porezag PRB 54 (1996) 7830 return 42.255, 'km/mol' elif intensity_unit == 'au': return 1.0, ' a.u.' elif intensity_unit == 'A^4 amu^-1': # Quantum espresso units return (units.Bohr**4) / (units._me / units._amu), ' A^4 amu^-1' else: raise RuntimeError('Intensity unit >' + intensity_unit + '< unknown.') def summary(self, method='standard', direction='central', intensity_unit_ir='(D/A)2/amu', intensity_unit_ram='au', log=stdout): hnu = self.get_energies(method, direction) s = 0.01 * units._e / units._c / units._hplanck iu_ir, iu_string_ir = self.intensity_prefactor(intensity_unit_ir) iu_ram, iu_string_ram = self.intensity_prefactor(intensity_unit_ram) arr = [] if intensity_unit_ir == '(D/A)2/amu': iu_format_ir = '%9.4f ' elif intensity_unit_ir == 'km/mol': iu_string_ir = ' ' + iu_string_ir iu_format_ir = ' %7.1f ' elif intensity_unit_ir == 'au': iu_format_ir = '%.6e ' elif intensity_unit_ir == 'A^4 amu^-1': iu_format_ir = '%9.4f ' if intensity_unit_ram == '(D/A)2/amu': iu_format_ram = '%9.4f' elif intensity_unit_ram == 'km/mol': iu_string_ram = ' ' + iu_string_ram iu_format_ram = ' %7.1f' elif intensity_unit_ram == 'au': iu_format_ram = '%.6e ' elif intensity_unit_ram == 'A^4 amu^-1': iu_format_ram = '%9.4f ' if isinstance(log, basestring): log = paropen(log, 'a') parprint('---------------------------------------------------------------------------------------------------------------------------', file=log) parprint(' Mode Frequency Intensity IR Intensity Raman (real) Intensity Raman (imag) Raman Ehanced', file=log) parprint(' # meV cm^-1 ' + iu_string_ir + ' ' + iu_string_ram + ' ' + iu_string_ram + ' ' + iu_string_ram, file=log) parprint('---------------------------------------------------------------------------------------------------------------------------', file=log) for n, e in enumerate(hnu): if e.imag != 0: c = 'i' e = e.imag else: c = ' ' e = e.real arr.append([n, 1000 * e, s * e, iu_ir * self.intensities_ir[n], iu_ram * self.intensities_ram[n].real, iu_ram * self.intensities_ram[n].imag]) parprint(('%3d %6.1f%s %7.1f%s ' + iu_format_ir + iu_format_ram + iu_format_ram + iu_format_ram) % (n, 1000 * e, c, s * e, c, iu_ir * self.intensities_ir[n], iu_ram * self.intensities_ram[n].real, iu_ram * self.intensities_ram[n].imag, iu_ram * self.intensities_ram_enh[n].real), file=log) parprint( '-----------------------------------------------------------------------------------------', file=log) parprint('Zero-point energy: %.3f eV' % self.get_zero_point_energy(), file=log) parprint('Static dipole moment: %.3f D' % self.dipole_zero, file=log) parprint('Maximum force on atom in `equilibrium`: %.4f eV/Ã…' % self.force_zero, file=log) parprint(file=log) np.savetxt('ram-summary.txt', np.array(arr)) def write_latex_array(self, fname='vib_latex_array.tex.table', caption='', nb_column=5, hline=False, method='standard', direction='central', intensity_unit_ir='(D/A)2/amu', intensity_unit_ram='au', label='tab_vib', log=stdout): """ Write the summary into a latex table that can be easily incorporate into a latex file. """ hnu = self.get_energies(method, direction) s = 0.01 * units._e / units._c / units._hplanck iu_ir, iu_string_ir = self.intensity_prefactor(intensity_unit_ir) iu_ram, iu_string_ram = self.intensity_prefactor(intensity_unit_ram) if intensity_unit_ir == '(D/A)2/amu': iu_format_ir = '%9.4f ' elif intensity_unit_ir == 'km/mol': iu_string_ir = ' ' + iu_string_ir iu_format_ir = ' %7.1f ' elif intensity_unit_ir == 'au': iu_format_ir = '%.6e ' elif intensity_unit_ir == 'A^4 amu^-1': iu_format_ir = '%9.4f ' if intensity_unit_ram == '(D/A)2/amu': iu_format_ram = '%9.4f' elif intensity_unit_ram == 'km/mol': iu_string_ram = ' ' + iu_string_ram iu_format_ram = ' %7.1f' elif intensity_unit_ram == 'au': iu_format_ram = '%.6e ' elif intensity_unit_ram == 'A^4 amu^-1': iu_format_ram = '%9.4f ' if isinstance(log, basestring): log = paropen(log, 'a') if hline: column = "|" else: column = "" for i in range(nb_column + 1): if hline: column = column + "c|" else: column = column + "c" f = open(fname, 'w') f.write("\begin{table}[h] \n") f.write(" \caption{" + caption + "} \n") f.write(" \begin{center}\n") f.write(" \begin{tabular}{" + column + "} \n") if hline: f.write(" \hline \n") f.write(' Mode & Frequency (meV) & Frequency ($cm^{-1}$) & Intensity IR (' + iu_string_ir + ') & Intensity Raman (' + iu_string_ram + ') \n') if hline: f.write(" \hline \n") for n, e in enumerate(hnu): if e.imag != 0: c = 'i' e = e.imag else: c = ' ' e = e.real f.write((' %3d & %6.1f & %s & %7.1f & %s & ' + iu_format_ir + ' & ' + iu_format_ram + ' \n') % (n, 1000 * e, c, s * e, c, iu_ir * self.intensities_ir[n], iu_ram * self.intensities_ram[n].real)) if hline: f.write(r" \hline \n") f.write(" \end{tabular} \n") f.write(" \end{center} \n") f.write(" \label{" + label + "} \n") f.write("\end{table}\n") f.close() def get_spectrum(self, start=800, end=4000, npts=None, width=4, type='Gaussian', method='standard', direction='central', intensity_unit='(D/A)2/amu', normalize=False): """Get raman spectrum. The method returns wavenumbers in cm^-1 with corresponding absolute infrared intensity. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1. normalize=True ensures the integral over the peaks to give the intensity. """ frequencies = self.get_frequencies(method, direction).real intensities_ir = self.intensities_ir intensities_ram = self.intensities_ram intensities_ram_enh = self.intensities_ram_enh energies, spectrum_ir = self.fold(frequencies, intensities_ir, start, end, npts, width, type, normalize) energies, spectrum_ram = self.fold(frequencies, intensities_ram, start, end, npts, width, type, normalize) energies, spectrum_ram_enh = self.fold(frequencies, intensities_ram_enh, start, end, npts, width, type, normalize) return energies, spectrum_ir, spectrum_ram, spectrum_ram_enh def write_spectra(self, out='ram-spectra.dat', start=800, end=4000, npts=None, width=10, type='Gaussian', method='standard', direction='central', intensity_unit_ir='(D/A)2/amu', intensity_unit_ram='au', normalize=False): """Write out raman spectrum to file. First column is the wavenumber in cm^-1, the second column the absolute infrared intensities, and the third column the absorbance scaled so that data runs from 1 to 0. idem for the Rahman spectrum for columns 4 and 5. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1.""" energies, spectrum_ir, spectrum_ram, spectrum_ram_enh =\ self.get_spectrum(start, end, npts, width, type, method, direction, normalize) # Write out spectrum in file. First column is absolute intensities. # Second column is absorbance scaled so that data runs from 1 to 0 spectrum2_ir = 1. - spectrum_ir / spectrum_ir.max() spectrum2_ram = 1. - spectrum_ram / spectrum_ram.max() spectrum2_ram_enh = 1. - spectrum_ram_enh / spectrum_ram_enh.max() outdata = np.empty([len(energies), 7]) outdata.T[0] = energies outdata.T[1] = spectrum_ir outdata.T[2] = spectrum2_ir outdata.T[3] = spectrum_ram outdata.T[4] = spectrum2_ram outdata.T[5] = spectrum_ram_enh outdata.T[6] = spectrum2_ram_enh fd = open(out, 'w') fd.write('# %s folded, width=%g cm^-1\n' % (type.title(), width)) iu_ir, iu_string_ir = self.intensity_prefactor(intensity_unit_ir) iu_ram, iu_string_ram = self.intensity_prefactor(intensity_unit_ram) # if normalize: # iu_string = 'cm ' + iu_string_ir + iu_string_ram fd.write('# [cm^-1] %14s\n' % ('[' + iu_string_ir + iu_string_ram + iu_string_ram + ']')) for row in outdata: fd.write('%.3f %15.5e %15.5e %15.5e %15.5e %15.5e %15.5e\n' % (row[0], iu_ir * row[1], row[2], iu_ram * row[3], row[4], iu_ram * row[5], row[6])) fd.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/singlepoint.py000066400000000000000000000122471316323560300257660ustar00rootroot00000000000000import numpy as np from ase.calculators.calculator import Calculator, all_properties from ase.calculators.calculator import PropertyNotImplementedError class SinglePointCalculator(Calculator): """Special calculator for a single configuration. Used to remember the energy, force and stress for a given configuration. If the positions, atomic numbers, unit cell, or boundary conditions are changed, then asking for energy/forces/stress will raise an exception.""" name = 'unknown' def __init__(self, atoms, **results): """Save energy, forces, stress, ... for the current configuration.""" Calculator.__init__(self) self.results = {} for property, value in results.items(): assert property in all_properties if value is None: continue if property in ['energy', 'magmom', 'free_energy']: self.results[property] = value else: self.results[property] = np.array(value, float) self.atoms = atoms.copy() def __str__(self): tokens = [] for key, val in sorted(self.results.items()): if np.isscalar(val): txt = '{}={}'.format(key, val) else: txt = '{}=...'.format(key) tokens.append(txt) return '{}({})'.format(self.__class__.__name__, ', '.join(tokens)) def get_property(self, name, atoms=None, allow_calculation=True): if name not in self.results or self.check_state(atoms): if allow_calculation: raise PropertyNotImplementedError( 'The property "{0}" is not available.'.format(name)) return None result = self.results[name] if isinstance(result, np.ndarray): result = result.copy() return result class SinglePointKPoint: def __init__(self, weight, s, k, eps_n=[], f_n=[]): self.weight = weight self.s = s # spin index self.k = k # k-point index self.eps_n = eps_n self.f_n = f_n class SinglePointDFTCalculator(SinglePointCalculator): def __init__(self, atoms, efermi=None, bzkpts=None, ibzkpts=None, bz2ibz=None, **results): self.bz_kpts = bzkpts self.ibz_kpts = ibzkpts self.bz2ibz = bz2ibz self.eFermi = efermi SinglePointCalculator.__init__(self, atoms, **results) self.kpts = None def get_fermi_level(self): """Return the Fermi-level(s).""" return self.eFermi def get_bz_to_ibz_map(self): return self.bz2ibz def get_bz_k_points(self): """Return the k-points.""" return self.bz_kpts def get_number_of_spins(self): """Return the number of spins in the calculation. Spin-paired calculations: 1, spin-polarized calculation: 2.""" if self.kpts is not None: nspin = set() for kpt in self.kpts: nspin.add(kpt.s) return len(nspin) return None def get_spin_polarized(self): """Is it a spin-polarized calculation?""" nos = self.get_number_of_spins() if nos is not None: return nos == 2 return None def get_ibz_k_points(self): """Return k-points in the irreducible part of the Brillouin zone.""" return self.ibz_kpts def get_kpt(self, kpt=0, spin=0): if self.kpts is not None: counter = 0 for kpoint in self.kpts: if kpoint.s == spin: if kpt == counter: return kpoint counter += 1 return None def get_occupation_numbers(self, kpt=0, spin=0): """Return occupation number array.""" kpoint = self.get_kpt(kpt, spin) if kpoint is not None: return kpoint.f_n return None def get_eigenvalues(self, kpt=0, spin=0): """Return eigenvalue array.""" kpoint = self.get_kpt(kpt, spin) if kpoint is not None: return kpoint.eps_n return None def get_homo_lumo(self): """Return HOMO and LUMO energies.""" if self.kpts is None: raise RuntimeError('No kpts') eHs = [] eLs = [] for kpt in self.kpts: eH, eL = self.get_homo_lumo_by_spin(kpt.s) eHs.append(eH) eLs.append(eL) return np.array(eHs).max(), np.array(eLs).min() def get_homo_lumo_by_spin(self, spin=0): """Return HOMO and LUMO energies for a given spin.""" if self.kpts is None: raise RuntimeError('No kpts') for kpt in self.kpts: if kpt.s == spin: break else: raise RuntimeError('No k-point with spin {0}'.format(spin)) if self.eFermi is None: raise RuntimeError('Fermi level is not available') eH = -1.e32 eL = 1.e32 for kpt in self.kpts: if kpt.s == spin: for e in kpt.eps_n: if e <= self.eFermi: eH = max(eH, e) else: eL = min(eL, e) return eH, eL ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/test.py000066400000000000000000000134151316323560300244100ustar00rootroot00000000000000from __future__ import division from math import pi import numpy as np from ase.atoms import Atoms from ase.calculators.calculator import Calculator, kpts2ndarray from ase.units import Bohr, Ha def make_test_dft_calculation(): a = b = 2.0 c = 6.0 atoms = Atoms(positions=[(0, 0, c / 2)], symbols='H', pbc=(1, 1, 0), cell=(a, b, c), calculator=TestCalculator()) return atoms class TestCalculator: def __init__(self, nk=8): assert nk % 2 == 0 bzk = [] weights = [] ibzk = [] w = 1.0 / nk**2 for i in range(-nk + 1, nk, 2): for j in range(-nk + 1, nk, 2): k = (0.5 * i / nk, 0.5 * j / nk, 0) bzk.append(k) if i >= j > 0: ibzk.append(k) if i == j: weights.append(4 * w) else: weights.append(8 * w) assert abs(sum(weights) - 1.0) < 1e-12 self.bzk = np.array(bzk) self.ibzk = np.array(ibzk) self.weights = np.array(weights) # Calculate eigenvalues and wave functions: self.init() def init(self): nibzk = len(self.weights) nbands = 1 V = -1.0 self.eps = 2 * V * (np.cos(2 * pi * self.ibzk[:, 0]) + np.cos(2 * pi * self.ibzk[:, 1])) self.eps.shape = (nibzk, nbands) self.psi = np.zeros((nibzk, 20, 20, 60), complex) phi = np.empty((2, 2, 20, 20, 60)) z = np.linspace(-1.5, 1.5, 60, endpoint=False) for i in range(2): x = np.linspace(0, 1, 20, endpoint=False) - i for j in range(2): y = np.linspace(0, 1, 20, endpoint=False) - j r = (((x[:, None]**2 + y**2)[:, :, None] + z**2)**0.5).clip(0, 1) phi = 1.0 - r**2 * (3.0 - 2.0 * r) phase = np.exp(pi * 2j * np.dot(self.ibzk, (i, j, 0))) self.psi += phase[:, None, None, None] * phi def get_pseudo_wave_function(self, band=0, kpt=0, spin=0): assert spin == 0 and band == 0 return self.psi[kpt] def get_eigenvalues(self, kpt=0, spin=0): assert spin == 0 return self.eps[kpt] def get_number_of_bands(self): return 1 def get_k_point_weights(self): return self.weights def get_number_of_spins(self): return 1 def get_fermi_level(self): return 0.0 def get_pseudo_density(self): n = 0.0 for w, eps, psi in zip(self.weights, self.eps[:, 0], self.psi): if eps >= 0.0: continue n += w * (psi * psi.conj()).real n[1:] += n[:0:-1].copy() n[:, 1:] += n[:, :0:-1].copy() n += n.transpose((1, 0, 2)).copy() n /= 8 return n class TestPotential(Calculator): implemented_properties = ['energy', 'forces'] def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) E = 0.0 R = atoms.positions F = np.zeros_like(R) for a, r in enumerate(R): D = R - r d = (D**2).sum(1)**0.5 x = d - 1.0 E += np.vdot(x, x) d[a] = 1 F -= (x / d)[:, None] * D energy = 0.25 * E self.results = {'energy': energy, 'forces': F} class FreeElectrons(Calculator): """Free-electron band calculator. Parameters: nvalence: int Number of electrons kpts: dict K-point specification. Example: >>> calc = FreeElectrons(nvalence=1, kpts={'path': 'GXL'}) """ implemented_properties = ['energy'] def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms) self.kpts = kpts2ndarray(self.parameters.kpts, atoms) icell = atoms.get_reciprocal_cell() * 2 * np.pi * Bohr n = 7 offsets = np.indices((n, n, n)).T.reshape((n**3, 1, 3)) - n // 2 eps = 0.5 * (np.dot(self.kpts + offsets, icell)**2).sum(2).T eps.sort() self.eigenvalues = eps[:, :20] * Ha self.results = {'energy': 0.0} def get_eigenvalues(self, kpt, spin=0): assert spin == 0 return self.eigenvalues[kpt].copy() def get_fermi_level(self): v = self.atoms.get_volume() / Bohr**3 kF = (self.parameters.nvalence / v * 2 * np.pi**2)**(1 / 3) return 0.5 * kF**2 * Ha def get_ibz_k_points(self): return self.kpts.copy() def get_number_of_spins(self): return 1 def numeric_force(atoms, a, i, d=0.001): """Compute numeric force on atom with index a, Cartesian component i, with finite step of size d """ p0 = atoms.get_positions() p = p0.copy() p[a, i] += d atoms.set_positions(p, apply_constraint=False) eplus = atoms.get_potential_energy() p[a, i] -= 2 * d atoms.set_positions(p, apply_constraint=False) eminus = atoms.get_potential_energy() atoms.set_positions(p0, apply_constraint=False) return (eminus - eplus) / (2 * d) def gradient_test(atoms, indices=None): """ Use numeric_force to compare analytical and numerical forces on atoms If indices is None, test is done on all atoms. """ if indices is None: indices = range(len(atoms)) f = atoms.get_forces()[indices] print('{0:>16} {1:>20}'.format('eps', 'max(abs(df))')) for eps in np.logspace(-1, -8, 8): fn = np.zeros((len(indices), 3)) for idx, i in enumerate(indices): for j in range(3): fn[idx, j] = numeric_force(atoms, i, j, eps) print('{0:16.12f} {1:20.12f}'.format(eps, abs(fn - f).max())) return f, fn ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/tip3p.py000066400000000000000000000124731316323560300244730ustar00rootroot00000000000000"""TIP3P potential.""" from __future__ import division import numpy as np import ase.units as units from ase.calculators.calculator import Calculator, all_changes qH = 0.417 sigma0 = 3.15061 epsilon0 = 0.1521 * units.kcal / units.mol rOH = 0.9572 angleHOH = 104.52 thetaHOH = 104.52 / 180 * np.pi # we keep this for backwards compatibility class TIP3P(Calculator): implemented_properties = ['energy', 'forces'] nolabel = True pcpot = None def __init__(self, rc=5.0, width=1.0): """TIP3P potential. rc: float Cutoff radius for Coulomb part. width: float Width for cutoff function for Coulomb part. """ self.rc = rc self.width = width Calculator.__init__(self) def calculate(self, atoms=None, properties=['energy'], system_changes=all_changes): Calculator.calculate(self, atoms, properties, system_changes) R = self.atoms.positions.reshape((-1, 3, 3)) Z = self.atoms.numbers pbc = self.atoms.pbc cell = self.atoms.cell.diagonal() nh2o = len(R) assert (self.atoms.cell == np.diag(cell)).all(), 'not orthorhombic' assert ((cell >= 2 * self.rc) | ~pbc).all(), 'cutoff too large' # ??? if Z[0] == 8: o = 0 else: o = 2 assert (Z[o::3] == 8).all() assert (Z[(o + 1) % 3::3] == 1).all() assert (Z[(o + 2) % 3::3] == 1).all() charges = np.array([qH, qH, qH]) charges[o] *= -2 energy = 0.0 forces = np.zeros((3 * nh2o, 3)) for m in range(nh2o - 1): DOO = R[m + 1:, o] - R[m, o] shift = np.zeros_like(DOO) for i, periodic in enumerate(pbc): if periodic: L = cell[i] shift[:, i] = (DOO[:, i] + L / 2) % L - L / 2 - DOO[:, i] DOO += shift d2 = (DOO**2).sum(1) d = d2**0.5 x1 = d > self.rc - self.width x2 = d < self.rc x12 = np.logical_and(x1, x2) y = (d[x12] - self.rc + self.width) / self.width t = np.zeros(len(d)) # cutoff function t[x2] = 1.0 t[x12] -= y**2 * (3.0 - 2.0 * y) dtdd = np.zeros(len(d)) dtdd[x12] -= 6.0 / self.width * y * (1.0 - y) c6 = (sigma0**2 / d2)**3 c12 = c6**2 e = 4 * epsilon0 * (c12 - c6) energy += np.dot(t, e) F = (24 * epsilon0 * (2 * c12 - c6) / d2 * t - e * dtdd / d)[:, np.newaxis] * DOO forces[m * 3 + o] -= F.sum(0) forces[m * 3 + 3 + o::3] += F for j in range(3): D = R[m + 1:] - R[m, j] + shift[:, np.newaxis] r2 = (D**2).sum(axis=2) r = r2**0.5 e = charges[j] * charges / r * units.Hartree * units.Bohr energy += np.dot(t, e).sum() F = (e / r2 * t[:, np.newaxis])[:, :, np.newaxis] * D FOO = -(e.sum(1) * dtdd / d)[:, np.newaxis] * DOO forces[(m + 1) * 3 + o::3] += FOO forces[m * 3 + o] -= FOO.sum(0) forces[(m + 1) * 3:] += F.reshape((-1, 3)) forces[m * 3 + j] -= F.sum(axis=0).sum(axis=0) if self.pcpot: e, f = self.pcpot.calculate(np.tile(charges, nh2o), self.atoms.positions) energy += e forces += f self.results['energy'] = energy self.results['forces'] = forces def embed(self, charges): """Embed atoms in point-charges.""" self.pcpot = PointChargePotential(charges) return self.pcpot def check_state(self, atoms, tol=1e-15): system_changes = Calculator.check_state(self, atoms, tol) if self.pcpot and self.pcpot.mmpositions is not None: system_changes.append('positions') return system_changes def add_virtual_sites(self, positions): return positions # no virtual sites def redistribute_forces(self, forces): return forces def get_virtual_charges(self, atoms): charges = np.empty(len(atoms)) charges[:] = qH if atoms.numbers[0] == 8: charges[::3] = -2 * qH else: charges[2::3] = -2 * qH return charges class PointChargePotential: def __init__(self, mmcharges): """Point-charge potential for TIP3P. Only used for testing QMMM. """ self.mmcharges = mmcharges self.mmpositions = None self.mmforces = None def set_positions(self, mmpositions, com_pv=None): self.mmpositions = mmpositions def calculate(self, qmcharges, qmpositions): energy = 0.0 self.mmforces = np.zeros_like(self.mmpositions) qmforces = np.zeros_like(qmpositions) for C, R, F in zip(self.mmcharges, self.mmpositions, self.mmforces): d = qmpositions - R r2 = (d**2).sum(1) e = units.Hartree * units.Bohr * C * r2**-0.5 * qmcharges energy += e.sum() f = (e / r2)[:, np.newaxis] * d qmforces += f F -= f.sum(0) self.mmpositions = None return energy, qmforces def get_forces(self, calc): return self.mmforces ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/tip4p.py000066400000000000000000000160571316323560300244760ustar00rootroot00000000000000from __future__ import division import numpy as np import ase.units as unit from ase.calculators.calculator import Calculator, all_changes from ase.calculators.tip3p import rOH, angleHOH, TIP3P __all__ = ['rOH', 'angleHOH', 'TIP4P', 'sigma0', 'epsilon0'] # Electrostatic constant and parameters: k_c = 332.1 * unit.kcal / unit.mol sigma0 = 3.15365 epsilon0 = 0.6480 * unit.kJ / unit.mol class TIP4P(TIP3P): def __init__(self, rc=7.0, width=1.0): """ TIP4P potential for water. http://dx.doi.org/10.1063/1.445869 Requires an atoms object of OHH,OHH, ... sequence Correct TIP4P charges and LJ parameters set automatically. Virtual interaction sites implemented in the following scheme: Original atoms object has no virtual sites. When energy/forces are requested: * virtual sites added to temporary xatoms object * energy / forces calculated * forces redistributed from virtual sites to actual atoms object This means you do not get into trouble when propagating your system with MD while having to skip / account for massless virtual sites. This also means that if using for QM/MM MD with GPAW, the EmbedTIP4P class must be used. """ TIP3P.__init__(self, rc, width) self.energy = None self.forces = None def calculate(self, atoms=None, properties=['energy', 'forces'], system_changes=all_changes): Calculator.calculate(self, atoms, properties, system_changes) assert (atoms.numbers[::3] == 8).all() assert (atoms.numbers[1::3] == 1).all() assert (atoms.numbers[2::3] == 1).all() xpos = self.add_virtual_sites(atoms.positions) xcharges = self.get_virtual_charges(atoms) cell = atoms.cell pbc = atoms.pbc natoms = len(atoms) nmol = natoms // 3 self.energy = 0.0 self.forces = np.zeros((4 * natoms // 3, 3)) C = cell.diagonal() assert (cell == np.diag(C)).all(), 'not orthorhombic' assert ((C >= 2 * self.rc) | ~pbc).all(), 'cutoff too large' # Get dx,dy,dz from first atom of each mol to same atom of all other # and find min. distance. Everything moves according to this analysis. for a in range(nmol - 1): D = xpos[(a + 1) * 4::4] - xpos[a * 4] shift = np.zeros_like(D) for i, periodic in enumerate(pbc): if periodic: shift[:, i] = np.rint(D[:, i] / C[i]) * C[i] q_v = xcharges[(a + 1) * 4:] # Min. img. position list as seen for molecule !a! position_list = np.zeros(((nmol - 1 - a) * 4, 3)) for j in range(4): position_list[j::4] += xpos[(a + 1) * 4 + j::4] - shift # Make the smooth cutoff: pbcRoo = position_list[::4] - xpos[a * 4] pbcDoo = np.sum(np.abs(pbcRoo)**2, axis=-1)**(1 / 2) x1 = pbcDoo > self.rc - self.width x2 = pbcDoo < self.rc x12 = np.logical_and(x1, x2) y = (pbcDoo[x12] - self.rc + self.width) / self.width t = np.zeros(len(pbcDoo)) t[x2] = 1.0 t[x12] -= y**2 * (3.0 - 2.0 * y) dtdd = np.zeros(len(pbcDoo)) dtdd[x12] -= 6.0 / self.width * y * (1.0 - y) self.energy_and_forces(a, xpos, position_list, q_v, nmol, t, dtdd) if self.pcpot: e, f = self.pcpot.calculate(xcharges, xpos) self.energy += e self.forces += f f = self.redistribute_forces(self.forces) self.results['energy'] = self.energy self.results['forces'] = f def energy_and_forces(self, a, xpos, position_list, q_v, nmol, t, dtdd): """ energy and forces on molecule a from all other molecules. cutoff is based on O-O Distance. """ # LJ part - only O-O interactions epsil = np.tile([epsilon0], nmol - 1 - a) sigma = np.tile([sigma0], nmol - 1 - a) DOO = position_list[::4] - xpos[a * 4] d2 = (DOO**2).sum(1) d = np.sqrt(d2) e_lj = 4 * epsil * (sigma**12 / d**12 - sigma**6 / d**6) f_lj = (4 * epsil * (12 * sigma**12 / d**13 - 6 * sigma**6 / d**7) * t - e_lj * dtdd)[:, np.newaxis] * DOO / d[:, np.newaxis] self.forces[a * 4] -= f_lj.sum(0) self.forces[(a + 1) * 4::4] += f_lj # Electrostatics e_elec = 0 all_cut = np.repeat(t, 4) for i in range(4): D = position_list - xpos[a * 4 + i] d2_all = (D**2).sum(axis=1) d_all = np.sqrt(d2_all) e = k_c * q_v[i] * q_v / d_all e_elec += np.dot(all_cut, e).sum() e_f = e.reshape(nmol - a - 1, 4).sum(1) F = (e / d_all * all_cut)[:, np.newaxis] * D / d_all[:, np.newaxis] FOO = -(e_f * dtdd)[:, np.newaxis] * DOO / d[:, np.newaxis] self.forces[(a + 1) * 4 + 0::4] += FOO self.forces[a * 4] -= FOO.sum(0) self.forces[(a + 1) * 4:] += F self.forces[a * 4 + i] -= F.sum(0) self.energy += np.dot(e_lj, t) + e_elec def add_virtual_sites(self, pos): # Order: OHHM,OHHM,... # DOI: 10.1002/(SICI)1096-987X(199906)20:8 b = 0.15 xatomspos = np.zeros((4 * len(pos) // 3, 3)) for w in range(0, len(pos), 3): r_i = pos[w] # O pos r_j = pos[w + 1] # H1 pos r_k = pos[w + 2] # H2 pos n = (r_j + r_k) / 2 - r_i n /= np.linalg.norm(n) r_d = r_i + b * n x = 4 * w // 3 xatomspos[x + 0] = r_i xatomspos[x + 1] = r_j xatomspos[x + 2] = r_k xatomspos[x + 3] = r_d return xatomspos def get_virtual_charges(self, atoms): charges = np.empty(len(atoms) * 4 // 3) charges[0::4] = 0.00 # O charges[1::4] = 0.52 # H1 charges[2::4] = 0.52 # H2 charges[3::4] = -1.04 # X1 return charges def redistribute_forces(self, forces): f = forces b = 0.15 a = 0.5 pos = self.atoms.positions for w in range(0, len(pos), 3): r_i = pos[w] # O pos r_j = pos[w + 1] # H1 pos r_k = pos[w + 2] # H2 pos r_ij = r_j - r_i r_jk = r_k - r_j r_d = r_i + b * (r_ij + a * r_jk) / np.linalg.norm(r_ij + a * r_jk) r_id = r_d - r_i gamma = b / np.linalg.norm(r_ij + a * r_jk) x = w * 4 // 3 Fd = f[x + 3] # force on M F1 = (np.dot(r_id, Fd) / np.dot(r_id, r_id)) * r_id Fi = Fd - gamma * (Fd - F1) # Force from M on O Fj = (1 - a) * gamma * (Fd - F1) # Force from M on H1 Fk = a * gamma * (Fd - F1) # Force from M on H2 f[x] += Fi f[x + 1] += Fj f[x + 2] += Fk # remove virtual sites from force array f = np.delete(f, list(range(3, f.shape[0], 4)), axis=0) return f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/turbomole.py000066400000000000000000002320131316323560300254360ustar00rootroot00000000000000""" This module defines an ASE interface to Turbomole: http://www.turbomole.com/ QMMM functionality provided by Markus Kaukonen . Please read the license file (../../LICENSE) Contact: Ivan Kondov """ from __future__ import print_function import os import re import warnings from subprocess import Popen, PIPE from math import log10, floor import numpy as np from ase import Atoms from ase.units import Ha, Bohr from ase.io import read, write from ase.calculators.calculator import FileIOCalculator from ase.calculators.calculator import PropertyNotImplementedError, ReadError from ase.utils import basestring def read_output(regex): """collects all matching strings from the output""" hitlist = [] checkfiles = [] for filename in os.listdir('.'): if filename.startswith('job.') or filename.endswith('.out'): checkfiles.append(filename) for filename in checkfiles: with open(filename, 'rt') as f: lines = f.readlines() for line in lines: match = re.search(regex, line) if match: hitlist.append(match.group(1)) return hitlist def execute(args, input_str=None, error_test=True, stdout_tofile=True): """executes a turbomole executable and process the outputs""" if isinstance(args, basestring): args = args.split() if stdout_tofile: stdout = open('ASE.TM.' + args[0] + '.out', 'w') else: stdout = PIPE if input_str: stdin = input_str.encode() else: stdin = None message = 'TM command: "' + args[0] + '" execution failed' try: # the sub process gets started here proc = Popen(args, stdin=PIPE, stderr=PIPE, stdout=stdout) res = proc.communicate(input=stdin) # check some general errors if error_test: error = res[1].decode() # check the error output of the command if 'abnormally' in error: raise RuntimeError(message + error) if 'ended normally' not in error: raise RuntimeError(message + error) except RuntimeError as err: raise err except OSError as err: raise OSError(err.args[1] + '\n' + message) else: print('TM command: "' + args[0] + '" successfully executed') if not stdout_tofile: return res[0].decode() def add_data_group(data_group, string=None, raw=False): """write a turbomole data group to control file""" if raw: data = data_group else: data = '$' + data_group if string: data += ' ' + string data += '\n' f = open('control', 'r+') lines = f.readlines() f.seek(0) f.truncate() lines.insert(2, data) f.write(''.join(lines)) f.close() def read_data_group(data_group): """read a turbomole data group from control file""" args = ['sdg', data_group] dg = execute(args, error_test=False, stdout_tofile=False) return dg.strip() def delete_data_group(data_group): """delete a turbomole data group from control file""" command = ['kdg', data_group] execute(command, error_test=False, stdout_tofile=False) class Turbomole(FileIOCalculator): """constants""" name = 'Turbomole' implemented_properties = ['energy', 'forces', 'dipole', 'free_energy', 'charges'] available_basis_sets = [ 'sto-3g hondo', 'def-SV(P)', 'def2-SV(P)', 'def-TZV(P)', 'def2-TZV(P)', 'def-SVP', 'def2-SVP', 'def-TZVP', 'def2-TZVP' ] available_functionals = [ 'slater-dirac-exchange', 's-vwn', 'vwn', 's-vwn_Gaussian', 'pwlda', 'becke-exchange', 'b-lyp', 'b-vwn', 'lyp', 'b-p', 'pbe', 'tpss', 'bh-lyp', 'b3-lyp', 'b3-lyp_Gaussian', 'pbe0', 'tpssh', 'lhf', 'oep', 'b97-d', 'b2-plyp' ] tm_files = [ 'control', 'coord', 'basis', 'auxbasis', 'energy', 'gradient', 'mos', 'alpha', 'beta', 'statistics', 'GEO_OPT_CONVERGED', 'GEO_OPT_FAILED', 'not.converged', 'nextstep', 'hessapprox', 'job.last', 'job.start', 'optinfo', 'statistics', 'converged', 'vibspectrum', 'vib_normal_modes', 'hessian', 'dipgrad', 'dscf_problem', 'pc.txt', 'pc_gradients.txt' ] tm_tmp_files = [ 'errvec', 'fock', 'oldfock', 'dens', 'ddens', 'diff_densmat', 'diff_dft_density', 'diff_dft_oper', 'diff_fockmat', 'diis_errvec', 'diis_oldfock' ] spec_names = { 'default': 'default_parameters', 'comment': 'parameter_comment', 'updateable': 'parameter_updateable', 'type': 'parameter_type', 'key': 'parameter_key', 'group': 'parameter_group', 'units': 'parameter_units', 'mapping': 'parameter_mapping', 'non-define': 'parameter_no_define' } # flat dictionaries with parameters attributes default_parameters = {} parameter_comment = {} parameter_updateable = {} parameter_type = {} parameter_key = {} parameter_group = {} parameter_units = {} parameter_mapping = {} parameter_no_define = {} # nested dictionary with parameters attributes parameter_spec = { 'automatic orbital shift': { 'comment': None, 'default': 0.1, 'group': 'scforbitalshift', 'key': 'automatic', 'mapping': { 'to_control': lambda a: a / Ha, 'from_control': lambda a: a * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'basis set definition': { 'comment': 'not implemented', 'default': None, 'group': 'basis', 'key': None, 'type': dict, 'units': None, 'updateable': False }, 'basis set name': { 'comment': 'current default from module "define"', 'default': 'def-SV(P)', 'group': 'basis', 'key': None, 'type': str, 'units': None, 'updateable': False }, 'closed-shell orbital shift': { 'comment': 'does not work with automatic', 'default': None, 'group': 'scforbitalshift', 'key': 'closedshell', 'mapping': { 'to_control': lambda a: a / Ha, 'from_control': lambda a: a * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'damping adjustment step': { 'comment': 'not implemented', 'default': None, 'group': 'scfdamp', 'key': 'step', 'type': float, 'units': None, 'updateable': True }, 'density convergence': { 'comment': None, 'default': None, 'group': 'denconv', 'key': 'denconv', 'mapping': { 'to_control': lambda a: int(-log10(a)), 'from_control': lambda a: 10**(-a) }, 'non-define': True, 'type': float, 'units': None, 'updateable': True }, 'density functional': { 'comment': None, 'default': 'b-p', 'group': 'dft', 'key': 'functional', 'type': str, 'units': None, 'updateable': True }, 'energy convergence': { 'comment': 'jobex -energy ', 'default': None, 'group': None, 'key': None, 'mapping': { 'to_control': lambda a: a / Ha, 'from_control': lambda a: a * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'excited state': { 'comment': 'not implemented', 'default': False, 'group': None, 'key': None, 'type': bool, 'units': None, 'updateable': False }, 'fermi annealing factor': { 'comment': None, 'default': 0.95, 'group': 'fermi', 'key': 'tmfac', 'type': float, 'units': None, 'updateable': True }, 'fermi final temperature': { 'comment': None, 'default': 300, 'group': 'fermi', 'key': 'tmend', 'type': float, 'units': 'Kelvin', 'updateable': True }, 'fermi homo-lumo gap criterion': { 'comment': None, 'default': 0.1, 'group': 'fermi', 'key': 'hlcrt', 'mapping': { 'to_control': lambda a: a / Ha, 'from_control': lambda a: a * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'fermi initial temperature': { 'comment': None, 'default': 300, 'group': 'fermi', 'key': 'tmstrt', 'type': float, 'units': 'Kelvin', 'updateable': True }, 'fermi stopping criterion': { 'comment': None, 'default': 0.001, 'group': 'fermi', 'key': 'stop', 'mapping': { 'to_control': lambda a: a / Ha, 'from_control': lambda a: a * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'force convergence': { 'comment': 'jobex -gcart ', 'default': None, 'group': None, 'key': None, 'mapping': { 'to_control': lambda a: a / Ha * Bohr, 'from_control': lambda a: a * Ha / Bohr }, 'type': float, 'units': 'eV/Angstrom', 'updateable': True }, 'geometry optimization iterations': { 'comment': 'jobex -c ', 'default': None, 'group': None, 'key': None, 'type': int, 'units': None, 'updateable': True }, 'grid size': { 'comment': None, 'default': 'm3', 'group': 'dft', 'key': 'gridsize', 'type': str, 'units': None, 'updateable': True }, 'ground state': { 'comment': 'only this is currently supported', 'default': True, 'group': None, 'key': None, 'type': bool, 'units': None, 'updateable': False }, 'initial damping': { 'comment': 'not implemented', 'default': None, 'group': 'scfdamp', 'key': 'start', 'type': float, 'units': None, 'updateable': True }, 'initial guess': { 'comment': '"eht", "hcore" or {"use": ""}', 'default': 'eht', 'group': None, 'key': None, 'type': None, 'units': None, 'updateable': False }, 'minimal damping': { 'comment': 'not implemented', 'default': None, 'group': 'scfdamp', 'key': 'min', 'type': float, 'units': None, 'updateable': True }, 'multiplicity': { 'comment': None, 'default': None, 'group': None, 'key': None, 'type': int, 'units': None, 'updateable': False }, 'non-automatic orbital shift': { 'comment': None, 'default': False, 'group': 'scforbitalshift', 'key': 'noautomatic', 'type': bool, 'units': None, 'updateable': True }, 'number of excited states': { 'comment': 'not implemented', 'default': None, 'group': None, 'key': None, 'type': int, 'units': None, 'updateable': False }, 'optimized excited state': { 'comment': 'not implemented', 'default': None, 'group': None, 'key': None, 'type': int, 'units': None, 'updateable': False }, 'point group': { 'comment': 'only c1 supported', 'default': 'c1', 'group': 'symmetry', 'key': 'symmetry', 'type': str, 'units': None, 'updateable': False }, 'ri memory': { 'comment': None, 'default': 1000, 'group': 'ricore', 'key': 'ricore', 'type': int, 'units': 'Megabyte', 'updateable': True }, 'rohf': { 'comment': 'not implemented', 'default': None, 'group': None, 'key': None, 'type': bool, 'units': None, 'updateable': False }, 'scf energy convergence': { 'comment': None, 'default': None, 'group': 'scfconv', 'key': 'scfconv', 'mapping': { 'to_control': lambda a: int(floor(-log10(a / Ha))), 'from_control': lambda a: 10**(-a) * Ha }, 'type': float, 'units': 'eV', 'updateable': True }, 'scf iterations': { 'comment': None, 'default': 60, 'group': 'scfiterlimit', 'key': 'scfiterlimit', 'type': int, 'units': None, 'updateable': True }, 'task': { 'comment': '"energy calculation" = "energy", ' '"gradient calculation" = "gradient", ' '"geometry optimization" = "optimize", ' '"normal mode analysis" = "frequencies"', 'default': 'energy', 'group': None, 'key': None, 'type': str, 'units': None, 'updateable': True }, 'title': { 'comment': None, 'default': '', 'group': 'title', 'key': 'title', 'type': str, 'units': None, 'updateable': False }, 'total charge': { 'comment': None, 'default': 0, 'group': None, 'key': None, 'type': int, 'units': None, 'updateable': False }, 'uhf': { 'comment': None, 'default': None, 'group': 'uhf', 'key': 'uhf', 'type': bool, 'units': None, 'updateable': False }, 'use basis set library': { 'comment': 'only true implemented', 'default': True, 'group': 'basis', 'key': None, 'type': bool, 'units': None, 'updateable': False }, 'use dft': { 'comment': None, 'default': True, 'group': 'dft', 'key': 'dft', 'type': bool, 'units': None, 'updateable': False }, 'use fermi smearing': { 'comment': None, 'default': False, 'group': 'fermi', 'key': 'fermi', 'type': bool, 'units': None, 'updateable': True }, 'use redundant internals': { 'comment': None, 'default': False, 'group': 'redundant', 'key': None, 'type': bool, 'units': None, 'updateable': False }, 'use resolution of identity': { 'comment': None, 'default': False, 'group': 'rij', 'key': 'rij', 'type': bool, 'units': None, 'updateable': False }, 'numerical hessian': { 'comment': 'NumForce will be used if dictionary exists', 'default': None, 'group': None, 'key': None, 'type': dict, 'units': None, 'updateable': True }, 'esp fit': { 'comment': 'ESP fit', 'default': None, 'group': 'esp_fit', 'key': 'esp_fit', 'type': str, 'units': None, 'updateable': True, 'non-define': True } } # initialize attributes parameters = {} results = {} initialized = False pc_initialized = False converged = False updated = False update_energy = None update_forces = None update_geometry = None update_hessian = None atoms = None forces = None e_total = None dipole = None charges = None version = None runtime = None datetime = None hostname = None pcpot = None def __init__(self, label=None, calculate_energy='dscf', calculate_forces='grad', post_HF=False, atoms=None, restart=False, define_str=None, control_kdg=None, control_input=None, **kwargs): FileIOCalculator.__init__(self) self.label = label self.calculate_energy = calculate_energy self.calculate_forces = calculate_forces self.post_HF = post_HF self.restart = restart self.define_str = define_str self.control_kdg = control_kdg self.control_input = control_input # construct flat dictionaries with parameter attributes for p in self.parameter_spec: for k in self.spec_names: if k in list(self.parameter_spec[p].keys()): subdict = getattr(self, self.spec_names[k]) subdict.update({p: self.parameter_spec[p][k]}) if self.restart: self._set_restart(kwargs) else: self.set_parameters(kwargs) self.verify_parameters() self.reset() if atoms is not None: atoms.set_calculator(self) self.set_atoms(atoms) def __getitem__(self, item): return getattr(self, item) def _set_restart(self, params_update): """constructs atoms, parameters and results from a previous calculation""" # read results, key parameters and non-key parameters self.read_restart() params_old = self.read_parameters() # filter out non-updateable parameters for p in list(params_update.keys()): if not self.parameter_updateable[p]: del params_update[p] warnings.warn('"' + p + '"' + ' cannot be changed') # update and verify parameters params_new = params_old.copy() params_new.update(params_update) self.set_parameters(params_new) self.verify_parameters() # if a define string is specified then run define if self.define_str: execute('define', input_str=self.define_str) # updates data groups in the control file if params_update or self.control_kdg or self.control_input: self._update_data_groups(params_old, params_update) self.initialized = True # more precise convergence tests are necessary to set these flags: self.update_energy = True self.update_forces = True self.update_geometry = True self.update_hessian = True def _update_data_groups(self, params_old, params_update): """updates data groups in the control file""" # construct a list of data groups to update grps = [] for p in list(params_update.keys()): if self.parameter_group[p] is not None: grps.append(self.parameter_group[p]) # construct a dictionary of data groups and update params dgs = {} for g in grps: dgs[g] = {} for p in self.parameter_key: if g == self.parameter_group[p]: if self.parameter_group[p] == self.parameter_key[p]: if p in list(params_update.keys()): val = params_update[p] pmap = list(self.parameter_mapping.keys()) if val is not None and p in pmap: fun = self.parameter_mapping[p]['to_control'] val = fun(params_update[p]) dgs[g] = val else: if p in list(params_old.keys()): val = params_old[p] pmap = list(self.parameter_mapping.keys()) if val is not None and p in pmap: fun = self.parameter_mapping[p]['to_control'] val = fun(params_old[p]) dgs[g][self.parameter_key[p]] = val if p in list(params_update.keys()): val = params_update[p] pmap = list(self.parameter_mapping.keys()) if val is not None and p in pmap: fun = self.parameter_mapping[p]['to_control'] val = fun(params_update[p]) dgs[g][self.parameter_key[p]] = val # write dgs dictionary to a data group for g in dgs: delete_data_group(g) if isinstance(dgs[g], dict): string = '' for key in list(dgs[g].keys()): if dgs[g][key] is None: continue elif isinstance(dgs[g][key], bool): if dgs[g][key]: string += ' ' + key else: string += ' ' + key + '=' + str(dgs[g][key]) add_data_group(g, string=string) else: if isinstance(dgs[g], bool): if dgs[g]: add_data_group(g, string='') else: add_data_group(g, string=str(dgs[g])) self._set_post_define() def _set_post_define(self): """non-define keys, user-specified changes in the control file""" # process key parameters that are not written with define for p in list(self.parameters.keys()): if p in list(self.parameter_no_define.keys()): if self.parameter_no_define[p]: if self.parameters[p]: if p in list(self.parameter_mapping.keys()): fun = self.parameter_mapping[p]['to_control'] val = fun(self.parameters[p]) else: val = self.parameters[p] delete_data_group(self.parameter_group[p]) add_data_group(self.parameter_group[p], str(val)) else: delete_data_group(self.parameter_group[p]) # delete user-specified data groups if self.control_kdg: for dg in self.control_kdg: delete_data_group(dg) # append user-defined input to control if self.control_input: for inp in self.control_input: add_data_group(inp, raw=True) # add point charges if pcpot defined: if self.pcpot: self.set_point_charges() def set_parameters(self, params): """loads the default parameters and updates with actual values""" self.parameters = self.default_parameters.copy() self.parameters.update(params) if self.parameters['use resolution of identity']: self.calculate_energy = 'ridft' self.calculate_forces = 'rdgrad' def verify_parameters(self): """detect wrong or not implemented parameters""" # kwargs parameters are ignored if user provides define_str if self.define_str is not None: assert isinstance(self.define_str, basestring) assert len(self.define_str) != 0 return if self.parameters['use dft']: func_list = [x.lower() for x in self.available_functionals] func = self.parameters['density functional'] assert func.lower() in func_list, ( 'density functional not available / not supported' ) bas_list = [x.lower() for x in self.available_basis_sets] assert self.parameters['basis set name'].lower() in bas_list, ( 'basis set ', self.parameters['basis set name'], ' not available / not supported' ) assert self.parameters['multiplicity'], 'multiplicity not defined' if self.parameters['rohf']: raise NotImplementedError('ROHF not implemented') if self.parameters['initial guess'] not in ['eht', 'hcore']: if not (isinstance(self.parameters['initial guess'], dict) and 'use' in self.parameters['initial guess'].keys()): raise ValueError('Wrong input for initial guess') if not self.parameters['use basis set library']: raise NotImplementedError('Explicit basis set definition') if self.parameters['point group'] != 'c1': raise NotImplementedError('Point group not impemeneted') if self.parameters['excited state']: raise NotImplementedError('Excited state not implemented') def reset(self): """removes all turbomole input, output and scratch files, and deletes results dict and the atoms object""" self.atoms = None self.results = {} self.results['calculation parameters'] = {} ase_files = [f for f in os.listdir('.') if f.startswith('ASE.TM.')] for f in self.tm_files + self.tm_tmp_files + ase_files: if os.path.exists(f): os.remove(f) self.initialized = False self.pc_initialized = False self.converged = False def set_atoms(self, atoms): """Create the self.atoms object and writes the coord file. If self.atoms exists a check for changes and an update of the atoms are performed. Note: Only positions changes are tracked in this version. """ changes = self.check_state(atoms, tol=1e-13) if self.atoms == atoms or 'positions' not in changes: # print('two atoms obj are (almost) equal') if self.updated and os.path.isfile('coord'): self.updated = False a = read('coord').get_positions() if np.allclose(a, atoms.get_positions(), rtol=0, atol=1e-13): return else: return changes = self.check_state(atoms, tol=1e-2) if 'positions' in changes: # print(two atoms obj are different') self.reset() else: # print('two atoms obj are slightly different') if self.parameters['use redundant internals']: self.reset() write('coord', atoms) self.atoms = atoms.copy() self.update_energy = True self.update_forces = True self.update_geometry = True self.update_hessian = True def get_define_str(self): """construct a define string from the parameters dictionary""" define_str_tpl = ( '\n__title__\na coord\n__inter__\n' 'bb all __basis_set__\n*\neht\ny\n__charge_str____occ_str__' '__single_atom_str____norb_str____dft_str____ri_str__' '__scfiterlimit____fermi_str__q\n' ) params = self.parameters if params['use redundant internals']: internals_str = 'ired\n*' else: internals_str = '*\nno' charge_str = str(params['total charge']) + '\n' if params['multiplicity'] == 1: if params['uhf']: occ_str = 'n\ns\n*\n' else: occ_str = 'y\n' elif params['multiplicity'] == 2: occ_str = 'y\n' elif params['multiplicity'] == 3: occ_str = 'n\nt\n*\n' else: unpaired = params['multiplicity'] - 1 if params['use fermi smearing']: occ_str = 'n\nuf ' + str(unpaired) + '\n*\n' else: occ_str = 'n\nu ' + str(unpaired) + '\n*\n' if len(self.atoms) != 1: single_atom_str = '' else: single_atom_str = '\n' if params['multiplicity'] == 1: norb_str = '' else: norb_str = 'n\n' if params['use dft']: dft_str = 'dft\non\n*\n' else: dft_str = '' if params['density functional']: dft_str += 'dft\nfunc ' + params['density functional'] + '\n*\n' if params['grid size']: dft_str += 'dft\ngrid ' + params['grid size'] + '\n*\n' if params['use resolution of identity']: ri_str = 'ri\non\nm ' + str(params['ri memory']) + '\n*\n' else: ri_str = '' if params['scf iterations']: scfmaxiter = params['scf iterations'] scfiter_str = 'scf\niter\n' + str(scfmaxiter) + '\n\n' else: scfiter_str = '' if params['scf energy convergence']: conv = floor(-log10(params['scf energy convergence'] / Ha)) scfiter_str += 'scf\nconv\n' + str(int(conv)) + '\n\n' if params['use fermi smearing']: fermi_str = 'scf\nfermi\n' if params['fermi initial temperature']: par = str(params['fermi initial temperature']) fermi_str += '1\n' + par + '\n' if params['fermi final temperature']: par = str(params['fermi final temperature']) fermi_str += '2\n' + par + '\n' if params['fermi annealing factor']: par = str(params['fermi annealing factor']) fermi_str += '3\n' + par + '\n' if params['fermi homo-lumo gap criterion']: par = str(params['fermi homo-lumo gap criterion']) fermi_str += '4\n' + par + '\n' if params['fermi stopping criterion']: par = str(params['fermi stopping criterion']) fermi_str += '5\n' + par + '\n' fermi_str += '\n\n' else: fermi_str = '' define_str = define_str_tpl define_str = re.sub('__title__', params['title'], define_str) define_str = re.sub('__basis_set__', params['basis set name'], define_str) define_str = re.sub('__charge_str__', charge_str, define_str) define_str = re.sub('__occ_str__', occ_str, define_str) define_str = re.sub('__norb_str__', norb_str, define_str) define_str = re.sub('__dft_str__', dft_str, define_str) define_str = re.sub('__ri_str__', ri_str, define_str) define_str = re.sub('__single_atom_str__', single_atom_str, define_str) define_str = re.sub('__inter__', internals_str, define_str) define_str = re.sub('__scfiterlimit__', scfiter_str, define_str) define_str = re.sub('__fermi_str__', fermi_str, define_str) return define_str def initialize(self): """prepare turbomole control file by running module 'define'""" if self.initialized: return self.verify_parameters() if not self.atoms: raise RuntimeError('atoms missing during initialization') if not os.path.isfile('coord'): raise IOError('file coord not found') if self.define_str is not None: define_str = self.define_str else: define_str = self.get_define_str() # run define execute('define', input_str=define_str) # process non-default initial guess iguess = self.parameters['initial guess'] if isinstance(iguess, dict) and 'use' in iguess.keys(): # "use" initial guess if self.parameters['multiplicity'] != 1 or self.parameters['uhf']: define_str = '\n\n\ny\nuse ' + iguess['use'] + '\nn\nn\nq\n' else: define_str = '\n\n\ny\nuse ' + iguess['use'] + '\nn\nq\n' execute('define', input_str=define_str) elif self.parameters['initial guess'] == 'hcore': # "hcore" initial guess if self.parameters['multiplicity'] != 1 or self.parameters['uhf']: delete_data_group('uhfmo_alpha') delete_data_group('uhfmo_beta') add_data_group('uhfmo_alpha', 'none file=alpha') add_data_group('uhfmo_beta', 'none file=beta') else: delete_data_group('scfmo') add_data_group('scfmo', 'none file=mos') self._set_post_define() self.initialized = True self.converged = False def calculation_required(self, atoms, properties): if self.atoms != atoms: return True for prop in properties: if prop == 'energy' and self.e_total is None: return True elif prop == 'forces' and self.forces is None: return True return False def calculate(self, atoms=None): """execute the requested job""" if atoms is None: atoms = self.atoms if self.parameters['task'] in ['energy', 'energy calculation']: self.get_potential_energy(atoms) if self.parameters['task'] in ['gradient', 'gradient calculation']: self.get_forces(atoms) if self.parameters['task'] in ['optimize', 'geometry optimization']: self.relax_geometry(atoms) if self.parameters['task'] in ['frequencies', 'normal mode analysis']: self.normal_mode_analysis(atoms) self.read_results() def relax_geometry(self, atoms=None): """execute geometry optimization with script jobex""" if atoms is None: atoms = self.atoms self.set_atoms(atoms) if self.converged and not self.update_geometry: return self.initialize() jobex_flags = '' if self.parameters['use resolution of identity']: jobex_flags += ' -ri' if self.parameters['force convergence']: par = self.parameters['force convergence'] conv = floor(-log10(par / Ha * Bohr)) jobex_flags += ' -gcart ' + str(int(conv)) if self.parameters['energy convergence']: par = self.parameters['energy convergence'] conv = floor(-log10(par / Ha)) jobex_flags += ' -energy ' + str(int(conv)) geom_iter = self.parameters['geometry optimization iterations'] if geom_iter is not None: assert isinstance(geom_iter, int) jobex_flags += ' -c ' + str(geom_iter) self.converged = False execute('jobex' + jobex_flags) # check convergence self.converged = self.read_convergence() if self.converged: self.update_energy = False self.update_forces = False self.update_geometry = False self.update_hessian = True # read results new_struct = read('coord') atoms.set_positions(new_struct.get_positions()) self.atoms = atoms.copy() self.read_energy() def normal_mode_analysis(self, atoms=None): """execute normal mode analysis with modules aoforce or NumForce""" from ase.constraints import FixAtoms if atoms is None: atoms = self.atoms self.set_atoms(atoms) self.initialize() if self.update_energy: self.get_potential_energy(atoms) if self.update_hessian: fixatoms = [] for constr in atoms.constraints: if isinstance(constr, FixAtoms): ckwargs = constr.todict()['kwargs'] if 'indices' in ckwargs.keys(): fixatoms.extend(ckwargs['indices']) if self.parameters['numerical hessian'] is None: if len(fixatoms) > 0: define_str = '\n\ny\n' for index in fixatoms: define_str += 'm ' + str(index + 1) + ' 999.99999999\n' define_str += '*\n*\nn\nq\n' execute('define', input_str=define_str) dg = read_data_group('atoms') regex = r'(mass\s*=\s*)999.99999999' dg = re.sub(regex, r'\g<1>9999999999.9', dg) dg += '\n' delete_data_group('atoms') add_data_group(dg, raw=True) execute('aoforce') else: optstr = '' pdict = self.parameters['numerical hessian'] if self.parameters['use resolution of identity']: optstr += ' -ri' if len(fixatoms) > 0: optstr += ' -frznuclei -central -c' if 'central' in pdict.keys(): optstr += ' -central' if 'delta' in pdict.keys(): optstr += ' -d ' + str(pdict['delta'] / Bohr) execute('NumForce' + optstr) self.update_hessian = False def read_restart(self): """read a previous calculation from control file""" self.atoms = read('coord') self.atoms.set_calculator(self) self.converged = self.read_convergence() read_methods = [ self.read_energy, self.read_gradient, self.read_forces, self.read_basis_set, self.read_ecps, self.read_mos, self.read_occupation_numbers, self.read_dipole_moment, self.read_ssquare, self.read_hessian, self.read_vibrational_reduced_masses, self.read_normal_modes, self.read_vibrational_spectrum, self.read_charges, self.read_point_charges, self.read_run_parameters ] for method in read_methods: try: method() except ReadError as err: warnings.warn(err.args[0]) def read_parameters(self): """read parameters from control file""" def parse_data_group(dg, dg_name): """parse a data group""" if len(dg) == 0: return None lsep = None ksep = None ndg = dg.replace('$' + dg_name, '').strip() if '\n' in ndg: lsep = '\n' if '=' in ndg: ksep = '=' if not lsep and not ksep: return ndg result = {} lines = ndg.split(lsep) for line in lines: fields = line.strip().split(ksep) if len(fields) == 2: result[fields[0]] = fields[1] elif len(fields) == 1: result[fields[0]] = True return result params = {} pdgs = {} for p in self.parameter_group: if self.parameter_group[p] and self.parameter_key[p]: pdgs[p] = parse_data_group( read_data_group(self.parameter_group[p]), self.parameter_group[p] ) for p in self.parameter_key: if self.parameter_key[p]: if self.parameter_key[p] == self.parameter_group[p]: if pdgs[p] is None: if self.parameter_type[p] is bool: params[p] = False else: params[p] = None else: if self.parameter_type[p] is bool: params[p] = True else: typ = self.parameter_type[p] val = typ(pdgs[p]) mapping = self.parameter_mapping if p in list(mapping.keys()): fun = mapping[p]['from_control'] val = fun(val) params[p] = val else: if pdgs[p] is None: params[p] = None elif isinstance(pdgs[p], basestring): if self.parameter_type[p] is bool: params[p] = (pdgs[p] == self.parameter_key[p]) else: if self.parameter_key[p] not in list(pdgs[p].keys()): if self.parameter_type[p] is bool: params[p] = False else: params[p] = None else: typ = self.parameter_type[p] val = typ(pdgs[p][self.parameter_key[p]]) mapping = self.parameter_mapping if p in list(mapping.keys()): fun = mapping[p]['from_control'] val = fun(val) params[p] = val # non-group or non-key parameters # per-element and per-atom basis sets not implemented in calculator basis_sets = set([bs['nickname'] for bs in self.results['basis set']]) assert len(basis_sets) == 1 params['basis set name'] = list(basis_sets)[0] params['basis set definition'] = self.results['basis set'] # rohf, multiplicity and total charge orbs = self.results['molecular orbitals'] params['rohf'] = (bool(len(read_data_group('rohf'))) or bool(len(read_data_group('roothaan')))) core_charge = 0 if self.results['ecps']: for ecp in self.results['ecps']: for symbol in self.atoms.get_chemical_symbols(): if symbol.lower() == ecp['element'].lower(): core_charge -= ecp['number of core electrons'] if params['uhf']: alpha_occ = [o['occupancy'] for o in orbs if o['spin'] == 'alpha'] beta_occ = [o['occupancy'] for o in orbs if o['spin'] == 'beta'] spin = (np.sum(alpha_occ) - np.sum(beta_occ)) * 0.5 params['multiplicity'] = int(2 * spin + 1) nuclear_charge = np.sum(self.atoms.numbers) electron_charge = -int(np.sum(alpha_occ) + np.sum(beta_occ)) electron_charge += core_charge params['total charge'] = nuclear_charge + electron_charge elif not params['rohf']: # restricted HF (closed shell) params['multiplicity'] = 1 nuclear_charge = np.sum(self.atoms.numbers) electron_charge = -int(np.sum([o['occupancy'] for o in orbs])) electron_charge += core_charge params['total charge'] = nuclear_charge + electron_charge else: raise NotImplementedError('ROHF not implemented') # task-related parameters if os.path.exists('job.start'): with open('job.start', 'r') as log: lines = log.readlines() for line in lines: if 'CRITERION FOR TOTAL SCF-ENERGY' in line: en = int(re.search(r'10\*{2}\(-(\d+)\)', line).group(1)) params['energy convergence'] = en if 'CRITERION FOR MAXIMUM NORM OF SCF-ENERGY GRADIENT' in line: gr = int(re.search(r'10\*{2}\(-(\d+)\)', line).group(1)) params['force convergence'] = gr if 'AN OPTIMIZATION WITH MAX' in line: cy = int(re.search(r'MAX. (\d+) CYCLES', line).group(1)) params['geometry optimization iterations'] = cy return params def read_convergence(self): """perform convergence checks""" if self.restart: if bool(len(read_data_group('restart'))): return False if bool(len(read_data_group('actual'))): return False if not bool(len(read_data_group('energy'))): return False if (os.path.exists('job.start') and os.path.exists('GEO_OPT_FAILED')): return False return True if self.parameters['task'] in ['optimize', 'geometry optimization']: if os.path.exists('GEO_OPT_CONVERGED'): return True elif os.path.exists('GEO_OPT_FAILED'): # check whether a failed scf convergence is the reason checkfiles = [] for filename in os.listdir('.'): if filename.startswith('job.'): checkfiles.append(filename) for filename in checkfiles: for line in open(filename): if 'SCF FAILED TO CONVERGE' in line: # scf did not converge in some jobex iteration if filename == 'job.last': raise RuntimeError('scf failed to converge') else: warnings.warn('scf failed to converge') warnings.warn('geometry optimization failed to converge') return False else: raise RuntimeError('error during geometry optimization') else: if os.path.isfile('dscf_problem'): raise RuntimeError('scf failed to converge') else: return True def read_results(self): """read all results and load them in the results entity""" self.read_energy() self.read_mos() self.read_basis_set() self.read_occupation_numbers() self.read_dipole_moment() self.read_ssquare() self.read_run_parameters() if self.parameters['task'] in ['gradient', 'optimize', 'gradient calculation', 'geometry optimization']: self.read_gradient() self.read_forces() if self.parameters['task'] in ['frequencies', 'normal mode analysis']: self.read_hessian() self.read_vibrational_reduced_masses() self.read_normal_modes() self.read_vibrational_spectrum() self.read_charges() def read_run_parameters(self): """read parameters set by define and not in self.parameters""" if 'calculation parameters' not in self.results.keys(): self.results['calculation parameters'] = {} parameters = self.results['calculation parameters'] dg = read_data_group('symmetry') parameters['point group'] = str(dg.split()[1]) parameters['uhf'] = '$uhf' in read_data_group('uhf') # Gaussian function type gt = read_data_group('pople') if gt == '': parameters['gaussian type'] = 'spherical harmonic' else: gt = gt.split()[1] if gt == 'AO': parameters['gaussian type'] = 'spherical harmonic' elif gt == 'CAO': parameters['gaussian type'] = 'cartesian' else: parameters['gaussian type'] = None nvibro = read_data_group('nvibro') if nvibro: parameters['nuclear degrees of freedom'] = int(nvibro.split()[1]) def read_energy(self): """Read energy from Turbomole energy file.""" try: with open('energy', 'r') as enf: text = enf.read().lower() except IOError: raise ReadError('failed to read energy file') if text == '': raise ReadError('empty energy file') lines = iter(text.split('\n')) for line in lines: if line.startswith('$end'): break elif line.startswith('$'): pass else: energy_tmp = float(line.split()[1]) if self.post_HF: energy_tmp += float(line.split()[4]) # update energy units self.e_total = energy_tmp * Ha self.results['total energy'] = self.e_total def read_forces(self): """Read Forces from Turbomole gradient file.""" dg = read_data_group('grad') if len(dg) == 0: return file = open('gradient', 'r') lines = file.readlines() file.close() forces = np.array([[0, 0, 0]]) nline = len(lines) iline = -1 for i in range(nline): if 'cycle' in lines[i]: iline = i if iline < 0: raise RuntimeError('Please check TURBOMOLE gradients') # next line iline += len(self.atoms) + 1 # $end line nline -= 1 # read gradients for i in range(iline, nline): line = lines[i].replace('D', 'E') tmp = np.array([[float(f) for f in line.split()[0:3]]]) forces = np.concatenate((forces, tmp)) # Note the '-' sign for turbomole, to get forces self.forces = -np.delete(forces, np.s_[0:1], axis=0) * Ha / Bohr self.results['energy gradient'] = (-self.forces).tolist() def read_occupation_numbers(self): """read occupation numbers with module 'eiger' """ if 'molecular orbitals' not in self.results.keys(): return mos = self.results['molecular orbitals'] args = ['eiger', '--all', '--pview'] output = execute(args, error_test=False, stdout_tofile=False) lines = output.split('\n') for line in lines: regex = ( r'^\s+(\d+)\.*\s+(\w*)\s+(\d+)\s+(\S+)' r'\s+(\d*\.*\d*)\s+([-+]?\d+\.\d*)' ) match = re.search(regex, line) if match: orb_index = int(match.group(3)) if match.group(2) == 'a': spin = 'alpha' elif match.group(2) == 'b': spin = 'beta' else: spin = None ar_index = next( index for (index, molecular_orbital) in enumerate(mos) if (molecular_orbital['index'] == orb_index and molecular_orbital['spin'] == spin) ) mos[ar_index]['index by energy'] = int(match.group(1)) irrep = str(match.group(4)) mos[ar_index]['irreducible representation'] = irrep if match.group(5) != '': mos[ar_index]['occupancy'] = float(match.group(5)) else: mos[ar_index]['occupancy'] = float(0) def read_mos(self): """read the molecular orbital coefficients and orbital energies from files mos, alpha and beta""" self.results['molecular orbitals'] = [] mos = self.results['molecular orbitals'] keywords = ['scfmo', 'uhfmo_alpha', 'uhfmo_beta'] spin = [None, 'alpha', 'beta'] for index, keyword in enumerate(keywords): flen = None mo = {} orbitals_coefficients_line = [] mo_string = read_data_group(keyword) if mo_string == '': continue mo_string += '\n$end' lines = mo_string.split('\n') for line in lines: if re.match(r'^\s*#', line): continue if 'eigenvalue' in line: if len(orbitals_coefficients_line) != 0: mo['eigenvector'] = orbitals_coefficients_line mos.append(mo) mo = {} orbitals_coefficients_line = [] regex = (r'^\s*(\d+)\s+(\S+)\s+' r'eigenvalue=([\+\-\d\.\w]+)\s') match = re.search(regex, line) mo['index'] = int(match.group(1)) mo['irreducible representation'] = str(match.group(2)) eig = float(re.sub('[dD]', 'E', match.group(3))) * Ha mo['eigenvalue'] = eig mo['spin'] = spin[index] mo['degeneracy'] = 1 continue if keyword in line: # e.g. format(4d20.14) regex = r'format\(\d+[a-zA-Z](\d+)\.\d+\)' match = re.search(regex, line) if match: flen = int(match.group(1)) if ('scfdump' in line or 'expanded' in line or 'scfconv' not in line): self.converged = False continue if '$end' in line: if len(orbitals_coefficients_line) != 0: mo['eigenvector'] = orbitals_coefficients_line mos.append(mo) break sfields = [line[i:i + flen] for i in range(0, len(line), flen)] ffields = [float(f.replace('D', 'E').replace('d', 'E')) for f in sfields] orbitals_coefficients_line += ffields def read_basis_set(self): """read the basis set""" self.results['basis set'] = [] self.results['basis set formatted'] = {} bsf = read_data_group('basis') self.results['basis set formatted']['turbomole'] = bsf lines = bsf.split('\n') basis_set = {} functions = [] function = {} primitives = [] read_tag = False read_data = False for line in lines: if len(line.strip()) == 0: continue if '$basis' in line: continue if '$end' in line: break if re.match(r'^\s*#', line): continue if re.match(r'^\s*\*', line): if read_tag: read_tag = False read_data = True else: if read_data: # end primitives function['primitive functions'] = primitives function['number of primitives'] = len(primitives) primitives = [] functions.append(function) function = {} # end contracted basis_set['functions'] = functions functions = [] self.results['basis set'].append(basis_set) basis_set = {} read_data = False read_tag = True continue if read_tag: match = re.search(r'^\s*(\w+)\s+(.+)', line) if match: basis_set['element'] = match.group(1) basis_set['nickname'] = match.group(2) else: raise RuntimeError('error reading basis set') else: match = re.search(r'^\s+(\d+)\s+(\w+)', line) if match: if len(primitives) is not 0: # end primitives function['primitive functions'] = primitives function['number of primitives'] = len(primitives) primitives = [] functions.append(function) function = {} # begin contracted function['shell type'] = str(match.group(2)) continue regex = ( r'^\s*([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)' r'\s+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)' ) match = re.search(regex, line) if match: exponent = float(match.group(1)) coefficient = float(match.group(3)) primitives.append( {'exponent': exponent, 'coefficient': coefficient} ) def read_ecps(self): """read the effective core potentials""" ecpf = read_data_group('ecp') if not bool(len(ecpf)): self.results['ecps'] = None self.results['ecps formatted'] = None return self.results['ecps'] = [] self.results['ecps formatted'] = {} self.results['ecps formatted']['turbomole'] = ecpf lines = ecpf.split('\n') ecp = {} groups = [] group = {} terms = [] read_tag = False read_data = False for line in lines: if len(line.strip()) == 0: continue if '$ecp' in line: continue if '$end' in line: break if re.match(r'^\s*#', line): continue if re.match(r'^\s*\*', line): if read_tag: read_tag = False read_data = True else: if read_data: # end terms group['terms'] = terms group['number of terms'] = len(terms) terms = [] groups.append(group) group = {} # end group ecp['groups'] = groups groups = [] self.results['ecps'].append(ecp) ecp = {} read_data = False read_tag = True continue if read_tag: match = re.search(r'^\s*(\w+)\s+(.+)', line) if match: ecp['element'] = match.group(1) ecp['nickname'] = match.group(2) else: raise RuntimeError('error reading ecp') else: regex = r'ncore\s*=\s*(\d+)\s+lmax\s*=\s*(\d+)' match = re.search(regex, line) if match: ecp['number of core electrons'] = int(match.group(1)) ecp['maximum angular momentum number'] = \ int(match.group(2)) continue match = re.search(r'^(\w(\-\w)?)', line) if match: if len(terms) is not 0: # end terms group['terms'] = terms group['number of terms'] = len(terms) terms = [] groups.append(group) group = {} # begin group group['title'] = str(match.group(1)) continue regex = (r'^\s*([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+' r'(\d)\s+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)') match = re.search(regex, line) if match: terms.append( { 'coefficient': float(match.group(1)), 'power of r': float(match.group(3)), 'exponent': float(match.group(4)) } ) def read_gradient(self): """read all information in file 'gradient'""" from ase import Atom grad_string = read_data_group('grad') if len(grad_string) == 0: return # try to reuse ase: # structures = read('gradient', index=':') lines = grad_string.split('\n') history = [] image = {} gradient = [] atoms = Atoms() (cycle, energy, norm) = (None, None, None) for line in lines: # cycle lines regex = ( r'^\s*cycle =\s*(\d+)\s+' r'SCF energy =\s*([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\s+' r'\|dE\/dxyz\| =\s*([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)' ) match = re.search(regex, line) if match: if len(atoms): image['optimization cycle'] = cycle image['total energy'] = energy image['gradient norm'] = norm image['energy gradient'] = gradient history.append(image) image = {} atoms = Atoms() gradient = [] cycle = int(match.group(1)) energy = float(match.group(2)) * Ha norm = float(match.group(4)) * Ha / Bohr continue # coordinate lines regex = ( r'^\s*([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' r'\s+([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' r'\s+([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' r'\s+(\w+)' ) match = re.search(regex, line) if match: x = float(match.group(1)) * Bohr y = float(match.group(3)) * Bohr z = float(match.group(5)) * Bohr symbol = str(match.group(7)) atoms += Atom(symbol.capitalize(), (x, y, z)) continue # gradient lines regex = ( r'^\s*([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' r'\s+([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' r'\s+([-+]?[0-9]*\.?[0-9]+([eEdD][-+]?[0-9]+)?)' ) match = re.search(regex, line) if match: gradx = float(match.group(1).replace('D', 'E')) * Ha / Bohr grady = float(match.group(3).replace('D', 'E')) * Ha / Bohr gradz = float(match.group(5).replace('D', 'E')) * Ha / Bohr gradient.append([gradx, grady, gradz]) image['optimization cycle'] = cycle image['total energy'] = energy image['gradient norm'] = norm image['energy gradient'] = gradient history.append(image) self.results['geometry optimization history'] = history def read_hessian(self, noproj=False): """Read in the hessian matrix""" self.results['hessian matrix'] = {} self.results['hessian matrix']['array'] = [] self.results['hessian matrix']['units'] = '?' self.results['hessian matrix']['projected'] = True self.results['hessian matrix']['mass weighted'] = True dg = read_data_group('nvibro') if len(dg) == 0: return nvibro = int(dg.split()[1]) self.results['hessian matrix']['dimension'] = nvibro row = [] key = 'hessian' if noproj: key = 'npr' + key self.results['hessian matrix']['projected'] = False lines = read_data_group(key).split('\n') for line in lines: if key in line: continue fields = line.split() row.extend(fields[2:len(fields)]) if len(row) == nvibro: # check whether it is mass-weighted float_row = [float(element) for element in row] self.results['hessian matrix']['array'].append(float_row) row = [] def read_normal_modes(self, noproj=False): """Read in vibrational normal modes""" self.results['normal modes'] = {} self.results['normal modes']['array'] = [] self.results['normal modes']['projected'] = True self.results['normal modes']['mass weighted'] = True self.results['normal modes']['units'] = '?' dg = read_data_group('nvibro') if len(dg) == 0: return nvibro = int(dg.split()[1]) self.results['normal modes']['dimension'] = nvibro row = [] key = 'vibrational normal modes' if noproj: key = 'npr' + key self.results['normal modes']['projected'] = False lines = read_data_group(key).split('\n') for line in lines: if key in line: continue if '$end' in line: break fields = line.split() row.extend(fields[2:len(fields)]) if len(row) == nvibro: # check whether it is mass-weighted float_row = [float(element) for element in row] self.results['normal modes']['array'].append(float_row) row = [] def read_vibrational_reduced_masses(self): """Read vibrational reduced masses""" self.results['vibrational reduced masses'] = [] dg = read_data_group('vibrational reduced masses') if len(dg) == 0: return lines = dg.split('\n') for line in lines: if '$vibrational' in line: continue if '$end' in line: break fields = [float(element) for element in line.split()] self.results['vibrational reduced masses'].extend(fields) def read_vibrational_spectrum(self, noproj=False): """Read the vibrational spectrum""" self.results['vibrational spectrum'] = [] key = 'vibrational spectrum' if noproj: key = 'npr' + key lines = read_data_group(key).split('\n') for line in lines: dictionary = {} regex = ( r'^\s+(\d+)\s+(\S*)\s+([-+]?\d+\.\d*)' r'\s+(\d+\.\d*)\s+(\S+)\s+(\S+)' ) match = re.search(regex, line) if match: dictionary['mode number'] = int(match.group(1)) dictionary['irreducible representation'] = str(match.group(2)) dictionary['frequency'] = { 'units': 'cm^-1', 'value': float(match.group(3)) } dictionary['infrared intensity'] = { 'units': 'km/mol', 'value': float(match.group(4)) } if match.group(5) == 'YES': dictionary['infrared active'] = True elif match.group(5) == 'NO': dictionary['infrared active'] = False else: dictionary['infrared active'] = None if match.group(6) == 'YES': dictionary['Raman active'] = True elif match.group(6) == 'NO': dictionary['Raman active'] = False else: dictionary['Raman active'] = None self.results['vibrational spectrum'].append(dictionary) def read_ssquare(self): """Read the expectation value of S^2 operator""" s2_string = read_data_group('ssquare from dscf') if s2_string == '': return string = s2_string.split('\n')[1] ssquare = float(re.search(r'^\s*(\d+\.*\d*)', string).group(1)) self.results['ssquare from scf calculation'] = ssquare def read_dipole_moment(self): """Read the dipole moment""" dip_string = read_data_group('dipole') if dip_string == '': return lines = dip_string.split('\n') for line in lines: regex = ( r'^\s+x\s+([-+]?\d+\.\d*)\s+y\s+([-+]?\d+\.\d*)' r'\s+z\s+([-+]?\d+\.\d*)\s+a\.u\.' ) match = re.search(regex, line) if match: dip_vec = [float(match.group(c)) for c in range(1, 4)] regex = r'^\s+\| dipole \| =\s+(\d+\.*\d*)\s+debye' match = re.search(regex, line) if match: dip_abs_val = float(match.group(1)) self.results['electric dipole moment'] = {} self.results['electric dipole moment']['vector'] = { 'array': dip_vec, 'units': 'a.u.' } self.results['electric dipole moment']['absolute value'] = { 'value': dip_abs_val, 'units': 'Debye' } self.dipole = np.array(dip_vec) * Bohr def read_version(self): """read the version from the tm output if stored in a file""" versions = read_output(r'TURBOMOLE\s+V(\d+\.\d+)\s+') if len(set(versions)) > 1: warnings.warn('different turbomole versions detected') self.version = list(set(versions)) elif len(versions) == 0: warnings.warn('no turbomole version detected') self.version = None else: self.version = versions[0] def read_datetime(self): """read the datetime of the most recent calculation from the tm output if stored in a file """ datetimes = read_output( r'(\d{4}-[01]\d-[0-3]\d([T\s][0-2]\d:[0-5]' r'\d:[0-5]\d\.\d+)?([+-][0-2]\d:[0-5]\d|Z)?)') if len(datetimes) == 0: warnings.warn('no turbomole datetime detected') self.datetime = None else: # take the most recent time stamp self.datetime = sorted(datetimes, reverse=True)[0] def read_runtime(self): """read the total runtime of calculations""" hits = read_output(r'total wall-time\s+:\s+(\d+.\d+)\s+seconds') if len(hits) == 0: warnings.warn('no turbomole runtimes detected') self.runtime = None else: self.runtime = np.sum([float(a) for a in hits]) def read_hostname(self): """read the hostname of the computer on which the calc has run""" hostnames = read_output(r'hostname is\s+(.+)') if len(set(hostnames)) > 1: warnings.warn('runs on different hosts detected') self.hostname = list(set(hostnames)) else: self.hostname = hostnames[0] def get_results(self): """returns the results dictionary""" return self.results def get_potential_energy(self, atoms, force_consistent=True): # update atoms self.updated = self.e_total is None self.set_atoms(atoms) self.initialize() # if update of energy is necessary if self.update_energy: # calculate energy execute(self.calculate_energy) # check convergence self.converged = self.read_convergence() if not self.converged: return None # read energy self.read_energy() self.update_energy = False return self.e_total def get_forces(self, atoms): # update atoms self.updated = self.forces is None self.set_atoms(atoms) # complete energy calculations if self.update_energy: self.get_potential_energy(atoms) # if update of forces is necessary if self.update_forces: # calculate forces execute(self.calculate_forces) # read forces self.read_forces() self.update_forces = False return self.forces.copy() def get_dipole_moment(self, atoms): if self.update_energy: self.get_potential_energy(atoms) self.read_dipole_moment() return self.dipole def get_property(self, name, atoms=None, allow_calculation=True): """return the value of a property""" if name not in self.implemented_properties: # an ugly work around; the caller should test the raised error # if name in ['magmom', 'magmoms', 'charges', 'stress']: # return None raise PropertyNotImplementedError(name) if atoms is None: atoms = self.atoms.copy() persist_property = { 'energy': 'e_total', 'forces': 'forces', 'dipole': 'dipole', 'free_energy': 'e_total', 'charges': 'charges' } property_getter = { 'energy': self.get_potential_energy, 'forces': self.get_forces, 'dipole': self.get_dipole_moment, 'free_energy': self.get_potential_energy, 'charges': self.get_charges } getter_args = { 'energy': [atoms], 'forces': [atoms], 'dipole': [atoms], 'free_energy': [atoms, True], 'charges': [atoms] } if allow_calculation: result = property_getter[name](*getter_args[name]) else: if hasattr(self, persist_property[name]): result = getattr(self, persist_property[name]) else: result = None if isinstance(result, np.ndarray): result = result.copy() return result def get_charges(self, atoms): """return partial charges on atoms from an ESP fit""" if self.charges is None: self.calculate(atoms) self.read_charges() return self.charges def read_charges(self): """read partial charges on atoms from an ESP fit""" epsfit_defined = ('esp fit' in self.parameters and self.parameters['esp fit'] is not None) if epsfit_defined or len(read_data_group('esp_fit')) > 0: filename = 'ASE.TM.' + self.calculate_energy + '.out' with open(filename, 'r') as infile: lines = infile.readlines() oklines = None for n, line in enumerate(lines): if 'atom radius/au charge' in line: oklines = lines[n + 1:n + len(self.atoms) + 1] if oklines is not None: qm_charges = [float(line.split()[3]) for line in oklines] self.charges = np.array(qm_charges) def get_forces_on_point_charges(self): """return forces acting on point charges""" self.get_forces(self.atoms) lines = read_data_group('point_charge_gradients').split('\n')[1:] forces = [] for line in lines: linef = line.strip().replace('D', 'E') forces.append([float(x) for x in linef.split()]) # Note the '-' sign for turbomole, to get forces return -np.array(forces) * Ha / Bohr def set_point_charges(self, pcpot=None): """write external point charges to control""" if pcpot is not None and pcpot != self.pcpot: self.pcpot = pcpot if self.pcpot.mmcharges is None or self.pcpot.mmpositions is None: raise RuntimeError('external point charges not defined') if not self.pc_initialized: if len(read_data_group('point_charges')) == 0: add_data_group('point_charges', 'file=pc.txt') if len(read_data_group('point_charge_gradients')) == 0: add_data_group( 'point_charge_gradients', 'file=pc_gradients.txt' ) drvopt = read_data_group('drvopt') if 'point charges' not in drvopt: drvopt += '\n point charges\n' delete_data_group('drvopt') add_data_group(drvopt, raw=True) self.pc_initialized = True if self.pcpot.updated: with open('pc.txt', 'w') as pcfile: pcfile.write('$point_charges nocheck list\n') for (x, y, z), charge in zip( self.pcpot.mmpositions, self.pcpot.mmcharges): pcfile.write('%20.14f %20.14f %20.14f %20.14f\n' % (x / Bohr, y / Bohr, z / Bohr, charge)) pcfile.write('$end \n') self.pcpot.updated = False def read_point_charges(self): """read point charges from previous calculation""" pcs = read_data_group('point_charges') if len(pcs) > 0: lines = pcs.split('\n')[1:] (charges, positions) = ([], []) for line in lines: columns = [float(col) for col in line.strip().split()] positions.append([col * Bohr for col in columns[0:3]]) charges.append(columns[3]) self.pcpot = PointChargePotential(charges, positions) def embed(self, charges=None, positions=None): """embed atoms in an array of point-charges; function used in qmmm calculations.""" self.pcpot = PointChargePotential(charges, positions) return self.pcpot class PointChargePotential: """Point-charge potential for Turbomole""" def __init__(self, mmcharges, mmpositions=None): self.mmcharges = mmcharges self.mmpositions = mmpositions self.mmforces = None self.updated = True def set_positions(self, mmpositions): """set the positions of point charges""" self.mmpositions = mmpositions self.updated = True def set_charges(self, mmcharges): """set the values of point charges""" self.mmcharges = mmcharges self.updated = True def get_forces(self, calc): """forces acting on point charges""" self.mmforces = calc.get_forces_on_point_charges() return self.mmforces ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vasp/000077500000000000000000000000001316323560300240245ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vasp/__init__.py000066400000000000000000000003051316323560300261330ustar00rootroot00000000000000from .vasp import Vasp, VaspChargeDensity, VaspDos, xdat2traj from .interactive import VaspInteractive __all__ = ['Vasp', 'VaspChargeDensity', 'VaspDos', 'xdat2traj', 'VaspInteractive'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vasp/create_input.py000066400000000000000000002111361316323560300270640ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2008 CSC - Scientific Computing Ltd. """This module defines an ASE interface to VASP. Developed on the basis of modules by Jussi Enkovaara and John Kitchin. The path of the directory containing the pseudopotential directories (potpaw,potpaw_GGA, potpaw_PBE, ...) should be set by the environmental flag $VASP_PP_PATH. The user should also set the environmental flag $VASP_SCRIPT pointing to a python script looking something like:: import os exitcode = os.system('vasp') Alternatively, user can set the environmental flag $VASP_COMMAND pointing to the command use the launch vasp e.g. 'vasp' or 'mpirun -n 16 vasp' http://cms.mpi.univie.ac.at/vasp/ """ import os import sys import warnings from os.path import join, isfile, islink import numpy as np from ase.calculators.calculator import kpts2ndarray from ase.utils import basestring # Parameters that can be set in INCAR. The values which are None # are not written and default parameters of VASP are used for them. float_keys = [ 'aexx', # Fraction of exact/DFT exchange 'aggac', # Fraction of gradient correction to correlation 'aggax', # Fraction of gradient correction to exchange 'aldac', # Fraction of LDA correlation energy 'amin', # 'amix', # 'amix_mag', # 'bmix', # tags for mixing 'bmix_mag', # 'cshift', # Complex shift for dielectric tensor calculation (LOPTICS) 'deper', # relative stopping criterion for optimization of eigenvalue 'ebreak', # absolute stopping criterion for optimization of eigenvalues # (EDIFF/N-BANDS/4) 'efield', # applied electrostatic field 'emax', # energy-range for DOSCAR file 'emin', # 'enaug', # Density cutoff 'encut', # Planewave cutoff 'encutgw', # energy cutoff for response function 'encutfock', # FFT grid in the HF related routines 'hfscreen', # attribute to change from PBE0 to HSE 'kspacing', # determines the number of k-points if the KPOINTS # file is not present. KSPACING is the smallest # allowed spacing between k-points in units of # $\AA$^{-1}$. 'potim', # time-step for ion-motion (fs) 'nelect', # total number of electrons 'param1', # Exchange parameter 'param2', # Exchange parameter 'pomass', # mass of ions in am 'pstress', # add this stress to the stress tensor, and energy E = V * # pstress 'sigma', # broadening in eV 'smass', # Nose mass-parameter (am) 'spring', # spring constant for NEB 'time', # special control tag 'weimin', # maximum weight for a band to be considered empty 'zab_vdw', # vdW-DF parameter 'zval', # ionic valence # The next keywords pertain to the VTST add-ons from Graeme Henkelman's # group at UT Austin 'jacobian', # Weight of lattice to atomic motion 'ddr', # (DdR) dimer separation 'drotmax', # (DRotMax) number of rotation steps per translation step 'dfnmin', # (DFNMin) rotational force below which dimer is not rotated 'dfnmax', # (DFNMax) rotational force below which dimer rotation stops 'sltol', # convergence ratio for minimum eigenvalue 'sdr', # finite difference for setting up Lanczos matrix and step # size when translating 'maxmove', # Max step for translation for IOPT > 0 'invcurv', # Initial curvature for LBFGS (IOPT = 1) 'timestep', # Dynamical timestep for IOPT = 3 and IOPT = 7 'sdalpha', # Ratio between force and step size for IOPT = 4 # The next keywords pertain to IOPT = 7 (i.e. FIRE) 'ftimemax', # Max time step 'ftimedec', # Factor to dec. dt 'ftimeinc', # Factor to inc. dt 'falpha', # Parameter for velocity damping 'falphadec', # Factor to dec. alpha 'clz', # electron count for core level shift 'vdw_radius', # Cutoff radius for Grimme's DFT-D2 and DFT-D3 and # Tkatchenko and Scheffler's DFT-TS dispersion corrections 'vdw_scaling', # Global scaling parameter for Grimme's DFT-D2 dispersion # correction 'vdw_d', # Global damping parameter for Grimme's DFT-D2 and Tkatchenko # and Scheffler's DFT-TS dispersion corrections 'vdw_cnradius', # Cutoff radius for calculating coordination number in # Grimme's DFT-D3 dispersion correction 'vdw_s6', # Damping parameter for Grimme's DFT-D2 and DFT-D3 and # Tkatchenko and Scheffler's DFT-TS dispersion corrections 'vdw_s8', # Damping parameter for Grimme's DFT-D3 dispersion correction 'vdw_sr', # Scaling parameter for Grimme's DFT-D2 and DFT-D3 and # Tkatchenko and Scheffler's DFT-TS dispersion correction 'vdw_a1', # Damping parameter for Grimme's DFT-D3 dispersion correction 'vdw_a2', # Damping parameter for Grimme's DFT-D3 dispersion correction 'eb_k', # solvent permitivity in Vaspsol 'tau', # surface tension parameter in Vaspsol 'langevin_gamma_l', # Friction for lattice degrees of freedom 'pmass', # Mass for latice degrees of freedom 'bparam', # B parameter for nonlocal VV10 vdW functional 'cparam', # C parameter for nonlocal VV10 vdW functional 'aldax', # Fraction of LDA exchange (for hybrid calculations) 'tebeg', # 'teend', # temperature during run 'andersen_prob', # Probability of collision in Andersen thermostat 'apaco', # Distance cutoff for pair correlation function calc. 'auger_ecblo', # Undocumented parameter for Auger calculations 'auger_edens', # Density of electrons in conduction band 'auger_hdens', # Density of holes in valence band 'auger_efermi', # Fixed Fermi level for Auger calculations 'auger_evbhi', # Upper bound for valence band maximum 'auger_ewidth', # Half-width of energy window function 'auger_occ_fac_eeh', # Undocumented parameter for Auger calculations 'auger_occ_fac_ehh', # Undocumented parameter for Auger calculations 'auger_temp', # Temperature for Auger calculation 'dq', # Finite difference displacement magnitude (NMR) 'avgap', # Average gap (Model GW) 'bpotim', # Undocumented Bond-Boost parameter (GH patches) 'qrr', # Undocumented Bond-Boost parameter (GH patches) 'prr', # Undocumented Bond-Boost parameter (GH patches) 'rcut', # Undocumented Bond-Boost parameter (GH patches) 'dvmax', # Undocumented Bond-Boost parameter (GH patches) 'bfgsinvcurv', # Initial curvature for BFGS (GH patches) 'damping', # Damping parameter for LBFGS (GH patches) 'efirst', # Energy of first NEB image (GH patches) 'elast', # Energy of final NEB image (GH patches) 'fmagval', # Force magnitude convergence criterion (GH patches) 'cmbj', # Undocumented MetaGGA parameter 'cmbja', # Undocumented MetaGGA parameter 'cmbjb', # Undocumented MetaGGA parameter 'sigma_nc_k', # Width of ion gaussians (VASPsol) 'sigma_k', # Width of dielectric cavidty (VASPsol) 'nc_k', # Cavity turn-on density (VASPsol) 'lambda_d_k', # Debye screening length (VASPsol) 'ediffsol', # Tolerance for solvation convergence (VASPsol) 'deg_threshold', # Degeneracy threshold 'omegamin', # Minimum frequency for dense freq. grid 'omegamax', # Maximum frequency for dense freq. grid 'rtime', # Undocumented parameter 'wplasma', # Undocumented parameter 'wplasmai', # Undocumented parameter 'dfield', # Undocumented parameter 'omegatl', # Maximum frequency for coarse freq. grid 'encutgwsoft', # Soft energy cutoff for response kernel 'encutlf', # Undocumented parameter 'scissor', # Scissor correction for GW/BSE calcs 'dimer_dist', # Distance between dimer images 'step_size', # Step size for finite difference in dimer calculation 'step_max', # Maximum step size for dimer calculation 'minrot', # Minimum rotation allowed in dimer calculation 'dummy_mass', # Mass of dummy atom(s?) 'shaketol', # Tolerance for SHAKE algorithm 'shaketolsoft', # Soft tolerance for SHAKE algorithm 'shakesca', # Scaling of each step taken in SHAKE algorithm 'hills_stride', # Undocumented metadynamics parameter 'hills_h', # Height (in eV) of gaussian bias for metadynamics 'hills_w', # Width of gaussian bias for metadynamics 'hills_k', # Force constant coupling dummy&real for metadynamics 'hills_m', # Mass of dummy particle for use in metadynamics 'hills_temperature', # Temp. of dummy particle for metadynamics 'hills_andersen_prob', # Probability of thermostat coll. for metadynamics 'hills_sqq', # Nose-hoover particle mass for metadynamics 'dvvdelta0', # Undocumented parameter 'dvvvnorm0', # Undocumented parameter 'dvvminpotim', # Undocumented parameter 'dvvmaxpotim', # Undocumented parameter 'efermi', # Undocumented parameter 'enchg', # Undocumented charge fitting parameter 'tau0', # Undocumented charge fitting parameter 'encut4o', # Cutoff energy for 4-center integrals (HF) 'param3', # Undocumented HF parameter 'model_eps0', # Undocumented HF parameter 'model_alpha', # Undocumented HF parameter 'qmaxfockae', # Undocumented HF parameter 'hfscreenc', # Range-separated screening length for correlations 'hfrcut', # Cutoff radius for HF potential kernel 'encutae', # Undocumented parameter for all-electron density calc. 'encutsubrotscf', # Undocumented subspace rotation SCF parameter 'enini', # Cutoff energy for wavefunctions (?) 'wc', # Undocumented mixing parameter 'enmax', # Cutoff energy for wavefunctions (?) 'scalee', # Undocumented parameter 'eref', # Reference energy 'epsilon', # Dielectric constant of bulk charged cells 'rcmix', # Mixing parameter for core density in rel. core calcs. 'esemicore', # Energetic lower bound for states considered "semicore" 'external_pressure', # Pressure for NPT calcs., equivalent to PSTRESS 'lj_radius', # Undocumented classical vdW parameter 'lj_epsilon', # Undocumented classical vdW parameter 'lj_sigma', # Undocumented classical vdW parameter 'mbd_beta', # TS MBD vdW correction damping parameter 'scsrad', # Cutoff radius for dipole-dipole interaction tensor in SCS 'hitoler', # Iterative Hirschfeld partitioning tolerance 'lambda', # "Spring constant" for magmom constraint calcs. 'kproj_threshold', # Threshold for k-point projection scheme 'maxpwamp', # Undocumented HF parameter 'vcutoff', # Undocumented parameter 'mdtemp', # Temperature for AIMD 'mdgamma', # Undocumented AIMD parameter 'mdalpha', # Undocumented AIMD parameter 'ofield_kappa', # Bias potential strength for interface pinning method 'ofield_q6_near', # Steinhardt-Nelson Q6 parameters for interface pinning 'ofield_q6_far', # Steinhardt-Nelson Q6 parameters for interface pinning 'ofield_a', # Target order parameter for interface pinning method 'pthreshold', # Don't print timings for routines faster than this value 'qltol', # Eigenvalue tolerance for Lanczos iteration (instanton) 'qdr', # Step size for building Lanczos matrix & CG (instanton) 'qmaxmove', # Max step size (instanton) 'qdt', # Timestep for quickmin minimization (instanton) 'qtpz', # Temperature (instanton) 'qftol', # Tolerance (instanton) ] exp_keys = [ 'ediff', # stopping-criterion for electronic upd. 'ediffg', # stopping-criterion for ionic upd. 'symprec', # precession in symmetry routines # The next keywords pertain to the VTST add-ons from Graeme Henkelman's # group at UT Austin 'fdstep', # Finite diference step for IOPT = 1 or 2 ] string_keys = [ 'algo', # algorithm: Normal (Davidson) | Fast | Very_Fast (RMM-DIIS) 'gga', # xc-type: PW PB LM or 91 (LDA if not set) 'metagga', # 'prec', # Precission of calculation (Low, Normal, Accurate) 'system', # name of System 'precfock', # FFT grid in the HF related routines 'radeq', # Which type of radial equations to use for rel. core calcs. 'localized_basis', # Basis to use in CRPA 'proutine', # Select profiling routine ] int_keys = [ 'ialgo', # algorithm: use only 8 (CG) or 48 (RMM-DIIS) 'ibrion', # ionic relaxation: 0-MD 1-quasi-New 2-CG 'icharg', # charge: 0-WAVECAR 1-CHGCAR 2-atom 10-const 'idipol', # monopol/dipol and quadropole corrections 'images', # number of images for NEB calculation 'iniwav', # initial electr wf. : 0-lowe 1-rand 'isif', # calculate stress and what to relax 'ismear', # part. occupancies: -5 Blochl -4-tet -1-fermi 0-gaus >0 MP 'ispin', # spin-polarized calculation 'istart', # startjob: 0-new 1-cont 2-samecut 'isym', # symmetry: 0-nonsym 1-usesym 2-usePAWsym 'iwavpr', # prediction of wf.: 0-non 1-charg 2-wave 3-comb 'kpar', # k-point parallelization paramater 'ldauprint', # 0-silent, 1-occ. matrix written to OUTCAR, 2-1+pot. matrix # written 'ldautype', # L(S)DA+U: 1-Liechtenstein 2-Dudarev 4-Liechtenstein(LDAU) 'lmaxmix', # 'lorbit', # create PROOUT 'maxmix', # 'ngx', # FFT mesh for wavefunctions, x 'ngxf', # FFT mesh for charges x 'ngy', # FFT mesh for wavefunctions, y 'ngyf', # FFT mesh for charges y 'ngz', # FFT mesh for wavefunctions, z 'ngzf', # FFT mesh for charges z 'nbands', # Number of bands 'nblk', # blocking for some BLAS calls (Sec. 6.5) 'nbmod', # specifies mode for partial charge calculation 'nelm', # nr. of electronic steps (default 60) 'nelmdl', # nr. of initial electronic steps 'nelmin', 'nfree', # number of steps per DOF when calculting Hessian using # finite differences 'nkred', # define sub grid of q-points for HF with # nkredx=nkredy=nkredz 'nkredx', # define sub grid of q-points in x direction for HF 'nkredy', # define sub grid of q-points in y direction for HF 'nkredz', # define sub grid of q-points in z direction for HF 'nomega', # number of frequency points 'nomegar', # number of frequency points on real axis 'npar', # parallelization over bands 'nsim', # evaluate NSIM bands simultaneously if using RMM-DIIS 'nsw', # number of steps for ionic upd. 'nupdown', # fix spin moment to specified value 'nwrite', # verbosity write-flag (how much is written) 'vdwgr', # extra keyword for Andris program 'vdwrn', # extra keyword for Andris program 'voskown', # use Vosko, Wilk, Nusair interpolation # The next keywords pertain to the VTST add-ons from Graeme Henkelman's # group at UT Austin 'ichain', # Flag for controlling which method is being used (0=NEB, # 1=DynMat, 2=Dimer, 3=Lanczos) if ichain > 3, then both # IBRION and POTIM are automatically set in the INCAR file 'iopt', # Controls which optimizer to use. for iopt > 0, ibrion = 3 # and potim = 0.0 'snl', # Maximum dimentionality of the Lanczos matrix 'lbfgsmem', # Steps saved for inverse Hessian for IOPT = 1 (LBFGS) 'fnmin', # Max iter. before adjusting dt and alpha for IOPT = 7 (FIRE) 'icorelevel', # core level shifts 'clnt', # species index 'cln', # main quantum number of excited core electron 'cll', # l quantum number of excited core electron 'ivdw', # Choose which dispersion correction method to use 'nbandsgw', # Number of bands for GW 'nbandso', # Number of occupied bands for electron-hole treatment 'nbandsv', # Number of virtual bands for electron-hole treatment 'ncore', # Number of cores per band, equal to number of cores divided # by npar 'mdalgo', # Determines which MD method of Tomas Bucko to use 'nedos', # Number of grid points in DOS 'turbo', # Ewald, 0 = Normal, 1 = PME 'omegapar', # Number of groups for response function calc. 'taupar', # Number of groups in real time for response function calc. 'antires', # How to treat antiresonant part of response function 'magatom', # Index of atom at which to place magnetic field (NMR) 'jatom', # Index of atom at which magnetic moment is evaluated (NMR) 'ichibare', # chi_bare stencil size (NMR) 'nbas', # Undocumented Bond-Boost parameter (GH patches) 'rmds', # Undocumented Bond-Boost parameter (GH patches) 'ilbfgsmem', # Number of histories to store for LBFGS (GH patches) 'vcaimages', # Undocumented parameter (GH patches) 'ntemper', # Undocumented subspace diagonalization param. (GH patches) 'ncshmem', # Share memory between this many cores on each process 'lmaxtau', # Undocumented MetaGGA parameter (prob. max ang.mom. for tau) 'kinter', # Additional finer grid (?) 'ibse', # Type of BSE calculation 'nbseeig', # Number of BSE wfns to write 'naturalo', # Use NATURALO (?) 'nbandsexact', # Undocumented parameter 'nbandsgwlow', # Number of bands for which shifts are calculated 'nbandslf', # Number of bands included in local field effect calc. 'omegagrid', # Undocumented parameter 'telescope', # Undocumented parameter 'maxmem', # Amount of memory to allocate per core in MB 'nelmhf', # Number of iterations for HF part (GW) 'dim', # Undocumented parameter 'nkredlf', # Reduce k-points for local field effects 'nkredlfx', # Reduce k-points for local field effects in X 'nkredlfy', # Reduce k-points for local field effects in Y 'nkredlfz', # Reduce k-points for local field effects in Z 'lmaxmp2', # Undocumented parameter 'switch', # Undocumented dimer parameter 'findiff', # Use forward (1) or central (2) finite difference for dimer 'engine', # Undocumented dimer parameter 'restartcg', # Undocumented dimer parameter 'thermostat', # Deprecated parameter for selecting MD method (use MDALGO) 'scaling', # After how many steps velocities should be rescaled 'shakemaxiter', # Maximum # of iterations in SHAKE algorithm 'equi_regime', # Number of steps to equilibrate for 'hills_bin', # Update metadynamics bias after this many steps 'hills_maxstride', # Undocumented metadynamics parameter 'dvvehistory', # Undocumented parameter 'ipead', # Undocumented parameter 'ngaus', # Undocumented charge fitting parameter 'exxoep', # Undocumented HF parameter 'fourorbit', # Undocumented HF parameter 'model_gw', # Undocumented HF parameter 'hflmax', # Maximum L quantum number for HF calculation 'lmaxfock', # Maximum L quantum number for HF calc. (same as above) 'lmaxfockae', # Undocumented HF parameter 'nmaxfockae', # Undocumented HF parameter 'nblock_fock', # Undocumented HF parameter 'idiot', # Determines which warnings/errors to print 'nrmm', # Number of RMM-DIIS iterations 'mremove', # Undocumented mixing parameter 'inimix', # Undocumented mixing parameter 'mixpre', # Undocumented mixing parameter 'nelmall', # Undocumented parameter 'nblock', # How frequently to write data 'kblock', # How frequently to write data 'npaco', # Undocumented pair correlation function parameter 'lmaxpaw', # Max L quantum number for on-site charge expansion 'irestart', # Undocumented parameter 'nreboot', # Undocumented parameter 'nmin', # Undocumented parameter 'nlspline', # Undocumented parameter 'ispecial', # "Select undocumented and unsupported special features" 'rcrep', # Number of steps between printing relaxed core info 'rcndl', # Wait this many steps before updating core density 'rcstrd', # Relax core density after this many SCF steps 'vdw_idampf', # Select type of damping function for TS vdW 'i_constrained_m', # Select type of magmom. constraint to use 'igpar', # "G parallel" direction for Berry phase calculation 'nppstr', # Number of kpts in "igpar' direction for Berry phase calc. 'nbands_out', # Undocumented QP parameter 'kpts_out', # Undocumented QP parameter 'isp_out', # Undocumented QP parameter 'nomega_out', # Undocumented QP parameter 'maxiter_ft', # Max iterations for sloppy Remez algorithm 'nmaxalt', # Max sample points for alternant in Remez algorithms 'itmaxlsq', # Max iterations in LSQ search algorithm 'ndatalsq', # Number of sample points for LSQ search algorithm 'ncore_in_image1', # Undocumented parameter 'kimages', # Undocumented parameter 'ncores_per_band', # Undocumented parameter 'maxlie', # Max iterations in CRPA diagonalization routine 'ncrpalow', # Undocumented CRPA parameter 'ncrpahigh', # Undocumented CRPA parameter 'nwlow', # Undocumented parameter 'nwhigh', # Undocumented parameter 'nkopt', # Number of k-points to include in Optics calculation 'nkoffopt', # K-point "counter offset" for Optics 'nbvalopt', # Number of valence bands to write in OPTICS file 'nbconopt', # Number of conduction bands to write in OPTICS file 'plevel', # No timings for routines with "level" higher than this 'qnl', # Lanczos matrix size (instanton) ] bool_keys = [ 'addgrid', # finer grid for augmentation charge density 'kgamma', # The generated kpoint grid (from KSPACING) is either # centred at the $\Gamma$ # point (e.g. includes the $\Gamma$ point) # (KGAMMA=.TRUE.) 'laechg', # write AECCAR0/AECCAR1/AECCAR2 'lasph', # non-spherical contributions to XC energy (and pot for # VASP.5.X) 'lasync', # overlap communcation with calculations 'lcharg', # 'lcorr', # Harris-correction to forces 'ldau', # L(S)DA+U 'ldiag', # algorithm: perform sub space rotation 'ldipol', # potential correction mode 'lelf', # create ELFCAR 'lepsilon', # enables to calculate and to print the BEC tensors 'lhfcalc', # switch to turn on Hartree Fock calculations 'loptics', # calculate the frequency dependent dielectric matrix 'lpard', # evaluate partial (band and/or k-point) decomposed charge # density 'lplane', # parallelisation over the FFT grid 'lscalapack', # switch off scaLAPACK 'lscalu', # switch of LU decomposition 'lsepb', # write out partial charge of each band separately? 'lsepk', # write out partial charge of each k-point separately? 'lthomas', # 'luse_vdw', # Invoke vdW-DF implementation by Klimes et. al 'lvdw', # Invoke DFT-D2 method of Grimme 'lvhar', # write Hartree potential to LOCPOT (vasp 5.x) 'lvtot', # create WAVECAR/CHGCAR/LOCPOT 'lwave', # # The next keywords pertain to the VTST add-ons from Graeme Henkelman's # group at UT Austin 'lclimb', # Turn on CI-NEB 'ltangentold', # Old central difference tangent 'ldneb', # Turn on modified double nudging 'lnebcell', # Turn on SS-NEB 'lglobal', # Optmize NEB globally for LBFGS (IOPT = 1) 'llineopt', # Use force based line minimizer for translation (IOPT = 1) 'lbeefens', # Switch on print of BEE energy contributions in OUTCAR 'lbeefbas', # Switch off print of all BEEs in OUTCAR 'lcalcpol', # macroscopic polarization (vasp5.2). 'lcalceps' 'lcalceps', # Macroscopic dielectric properties and Born effective charge # tensors (vasp 5.2) 'lvdw', # Turns on dispersion correction 'lvdw_ewald', # Turns on Ewald summation for Grimme's DFT-D2 and # Tkatchenko and Scheffler's DFT-TS dispersion correction 'lspectral', # Use the spectral method to calculate independent particle # polarizability 'lrpa', # Include local field effects on the Hartree level only 'lwannier90', # Switches on the interface between VASP and WANNIER90 'lsorbit', # Enable spin-orbit coupling 'lsol', # turn on solvation for Vaspsol 'lautoscale', # automatically calculate inverse curvature for VTST LBFGS 'interactive', # Enables interactive calculation for VaspInteractive 'lauger', # Perform Auger calculation (Auger) 'lauger_eeh', # Calculate EEH processes (Auger) 'lauger_ehh', # Calculate EHH processes (Auger) 'lauger_collect', # Collect wfns before looping over k-points (Auger) 'lauger_dhdk', # Auto-determine E. window width from E. derivs. (Auger) 'lauger_jit', # Distribute wavefunctions for k1-k4 (Auger) 'orbitalmag', # Enable orbital magnetization (NMR) 'lchimag', # Use linear response for shielding tensor (NMR) 'lwrtcur', # Write response of current to mag. field to file (NMR) 'lnmr_sym_red', # Reduce symmetry for finite difference (NMR) 'lzora', # Use ZORA approximation in linear-response NMR (NMR) 'lbone', # Use B-component in AE one-center terms for LR NMR (NMR) 'lmagbloch', # Use Bloch summations to obtain orbital magnetization (NMR) 'lgauge', # Use gauge transformation for zero moment terms (NMR) 'lbfconst', # Use constant B-field with sawtooth vector potential (NMR) 'nucind', # Use nuclear independent calculation (NMR) 'lnicsall', # Use all grid points for 'nucind' calculation (NMR) 'llraug', # Use two-center corrections for induced B-field (NMR) 'lbbm', # Undocumented Bond-Boost parameter (GH patches) 'lnoncollinear', # Do non-collinear spin polarized calculation 'bfgsdfp', # Undocumented BFGS parameter (GH patches) 'linemin', # Use line minimization (GH patches) 'ldneborg', # Undocumented NEB parameter (GH patches) 'dseed', # Undocumented dimer parameter (GH patches) 'linteract', # Undocumented parameter (GH patches) 'lmpmd', # Undocumented parameter (GH patches) 'ltwodim', # Makes stress tensor two-dimensional (GH patches) 'fmagflag', # Use force magnitude as convergence criterion (GH patches) 'ltemper', # Use subspace diagonalization (?) (GH patches) 'qmflag', # Undocumented FIRE parameter (GH patches) 'lmixtau', # Undocumented MetaGGA parameter 'ljdftx', # Undocumented VASPsol parameter (VASPsol) 'lrhob', # Write the bound charge density (VASPsol) 'lrhoion', # Write the ionic charge density (VASPsol) 'lnabla', # Undocumented parameter 'linterfast', # Interpolate in K using linear response routines 'lvel', # Undocumented parameter 'lrpaforce', # Calculate RPA forces 'lhartree', # Use IP approx. in BSE (testing only) 'ladder', # Use ladder diagrams 'lfxc', # Use approximate ladder diagrams 'lrsrpa', # Undocumented parameter 'lsingles', # Calculate HF singles 'lfermigw', # Iterate Fermi level 'ltcte', # Undocumented parameter 'ltete', # Undocumented parameter 'ltriplet', # Undocumented parameter 'lfxceps', # Undocumented parameter 'lfxheg', # Undocumented parameter 'l2order', # Undocumented parameter 'lmp2lt', # Undocumented parameter 'lgwlf', # Undocumented parameter 'lusew', # Undocumented parameter 'selfenergy', # Undocumented parameter 'oddonlygw', # Avoid gamma point in response function calc. 'evenonlygw', # Avoid even points in response function calc. 'lspectralgw', # More accurate self-energy calculation 'fletcher_reeves', # Undocumented dimer parameter 'lidm_selective', # Undocumented dimer parameter 'lblueout', # Write output of blue-moon algorithm 'hills_variable_w', # Enable variable-width metadynamics bias 'dvvminus', # Undocumented parameter 'lpead', # Calculate cell-periodic orbital derivs. using finite diff. 'skip_edotp', # Skip updating elec. polarization during scf 'skip_scf', # Skip calculation w/ local field effects 'lchgfit', # Turn on charge fitting 'lgausrc', # Undocumented charge fitting parameter 'lstockholder', # Enable ISA charge fitting (?) 'lsymgrad', # Restore symmetry of gradient (HF) 'lhfone', # Calculate one-center terms (HF) 'lrscor', # Include long-range correlation (HF) 'lrhfcalc', # Include long-range HF (HF) 'lmodelhf', # Model HF calculation (HF) 'shiftred', # Undocumented HF paramter 'hfkident', # Undocumented HF parameter 'oddonly', # Undocumented HF parameter 'evenonly', # Undocumented HF parameter 'lfockaedft', # Undocumented HF parameter 'lsubsrot', # Enable subspace rotation diagonalization 'mixfirst', # Mix before diagonalization 'lvcader', # Calculate derivs. w.r.t. VCA parameters 'lcompat', # Enable "full compatibility" 'lmusic', # "Joke" parameter 'ldownsample', # Downsample WAVECAR to fewer k-points 'lscaaware', # Disable ScaLAPACK for some things but not all 'lorbitalreal', # Undocumented parameter 'lmetagga', # Undocumented parameter 'lspiral', # Undocumented parameter 'lzeroz', # Undocumented parameter 'lmono', # Enable "monopole" corrections 'lrelcore', # Perform relaxed core calculation 'lmimicfc', # Mimic frozen-core calcs. for relaxed core calcs. 'lmatchrw', # Match PS partial waves at RWIGS? (otherwise PAW cutoff) 'ladaptelin', # Linearize core state energies to avoid divergences 'lonlysemicore', # Only linearize semi-core state energies 'gga_compat', # Enable backwards-compatible symmetrization of GGA derivs. 'lrelvol', # Undocumented classical vdW parameter 'lj_only', # Undocumented classical vdW parameter 'lvdwscs', # Include self-consistent screening in TS vdW correction 'lcfdm', # Use coupled fluctuating dipoles model for TS vdW 'lvdw_sametype', # Include interactions between atoms of the same type 'lrescaler0', # Rescale damping parameters in SCS vdW correction 'lscsgrad', # Calculate gradients for TS+SCS vdW correction energies 'lvdwexpansion', # Write 2-6 body contribs. to MBD vdW correction energy 'lvdw_relvolone', # Undocumented classical vdW parameter 'lberry', # Enable Berry-phase calculation 'lpade_fit', # Undocumented QP parameter 'lkproj', # Enable projection onto k-points 'l_wr_moments', # Undocumented parameter 'l_wr_density', # Undocumented parameter 'lkotani', # Undocumented parameter 'ldyson', # Undocumented parameter 'laddherm', # Undocumented parameter 'lcrpaplot', # Plot bands used in CRPA response func. calc. 'lplotdis', # Plot disentangled bands in CRPA response func. calc. 'ldisentangle', # Disentangle bands in CRPA 'lweighted', # "Weighted" CRPA approach 'luseorth_lcaos', # Use orthogonalized LCAOs in CRPA 'lfrpa', # Use full RPA in CRPA 'lregularize', # Regularize projectors in CRPA 'ldrude', # Include Drude term in CRPA 'ldmatrix', # Undocumented parameter 'lefg', # Calculate electric field gradient at atomic nuclei 'lhyperfine', # Enable Hyperfine calculation 'lwannier', # Enable Wannier interface 'localize', # Undocumented Wannier parameter 'lintpol_wpot', # Interpolate WPOT for Wannier 'lintpol_orb', # Interpolate orbitals for Wannier 'lintpol_kpath', # Interpolate bandstructure on given kpath for Wannier 'lintpol_kpath_orb', # Interpolate orbitals on given kpath for Wannier 'lread_eigenvalues', # Use Eigenvalues from EIGENVALUES.INT file 'lintpol_velocity', # Interpolate electron velocity for Wannier 'lintpol_conductivity', # Interpolate conductivity for Wannier 'lwannierinterpol', # Undocumented Wannier parameter 'wanproj', # Undocumented Wannier parameter 'lorbmom', # Undocumented LDA+U parameter 'lwannier90_run', # Undocumented WANNIER90 parameter 'lwrite_wanproj', # Write UWAN files for WANNIER90 'lwrite_unk', # Write UNK files for WANNIER90 'lwrite_mmn_amn', # Write MMN and AMN files for WANNIER90 'lread_amn', # Read AMN files instead of recomputing (WANNIER90) 'lrhfatm', # Undocumented HF parameter 'lvpot', # Calculate unscreened potential 'lwpot', # Calculate screened potential 'lwswq', # Undocumented parameter 'pflat', # Only print "flat" timings to OUTCAR 'qifcg', # Use CG instead of quickmin (instanton) 'qdo_ins', # Find instanton 'qdo_pre', # Calculate prefactor (instanton) ] list_keys = [ 'dipol', # center of cell for dipol 'eint', # energy range to calculate partial charge for 'ferwe', # Fixed band occupation (spin-paired) 'ferdo', # Fixed band occupation (spin-plarized) 'iband', # bands to calculate partial charge for 'magmom', # initial magnetic moments 'kpuse', # k-point to calculate partial charge for 'ropt', # number of grid points for non-local proj in real space 'rwigs', # Wigner-Seitz radii 'ldauu', # ldau parameters, has potential to redundant w.r.t. dict 'ldaul', # key 'ldau_luj', but 'ldau_luj' can't be read direct from 'ldauj', # the INCAR (since it needs to know information about atomic # species. In case of conflict 'ldau_luj' gets written out # when a calculation is set up 'random_seed', # List of ints used to seed RNG for advanced MD routines # (Bucko) 'vdw_c6', # List of floats of C6 parameters (J nm^6 mol^-1) for each # species (DFT-D2 and DFT-TS) 'vdw_c6au', # List of floats of C6 parameters (a.u.) for each species # (DFT-TS) 'vdw_r0', # List of floats of R0 parameters (angstroms) for each # species (DFT-D2 and DFT-TS) 'vdw_r0au', # List of floats of R0 parameters (a.u.) for each species # (DFT-TS) 'vdw_alpha', # List of floats of free-atomic polarizabilities for each # species (DFT-TS) 'langevin_gamma', # List of floats for langevin friction coefficients 'auger_bmin_eeh', # 4 ints | Various undocumented parameters for Auger 'auger_bmax_eeh', # 4 ints | calculations start here... 'auger_bmin_ehh', # 4 ints 'auger_bmax_ehh', # 4 ints 'auger_emin_eeh', # 4 floats 'auger_emax_eeh', # 4 floats 'auger_emin_ehh', # 4 floats 'auger_emax_ehh', # 4 floats | End of Auger parameters 'avecconst', # 3 floats | magnitude of magnetic moment (NMR) 'magdipol', # 3 floats | magnitude of magnetic dipole (NMR) 'bconst', # 3 floats | magnitude of constant magnetic field (NMR) 'magpos', # 3 floats | position for magnetic moment w/ 'nucind' (NMR) 'balist', # nbas ints | Undocumented Bond-Boost parameter (GH patches) 'bext', # 3 floats | Undocumented (probably external magnetic field) 'core_c', # ntyp floats | pseudo-core charge magnitude (VASPsol) 'sigma_rc_k', # ntyp floats | width of pseudo-core gaussians (VASPsol) 'darwinr', # ntypd (?) floats | Undocumented parameter 'darwinv', # ntypd (?) floats | Undocumented parameter 'kpoint_bse', # 4 ints | Undocumented parameter 'dummy_k', # ? floats | Force const. connecting dummy atoms to sys. 'dummy_r0', # ? floats | Minimum dist., ang., etc. for dummy atom DOFs 'dummy_positions', # 3 floats | Position of dummy atom(s?) 'nsubsys', # <=3 ints | Last atom # for each of up to 3 thermostats 'psubsys', # <=3 floats | Coll. prob. for each of up to 3 thermostats 'tsubsys', # <=3 floats | Temp. for each of up to 3 thermostats 'increm', # ? floats | Undocumented advanced MD parameter 'value_min', # ? floats | Undocumented advanced MD parameter 'value_max', # ? floats | Undocumented advanced MD parameter 'lattice_constraints', # 3 bools | Undocumented advanced MD parameter 'hills_position', # ? floats | Dummy particle(s) pos. for metadynamics 'hills_velocity', # ? floats | Dummy particle(s) vel. for metadynamics 'spring_k', # ? floats | Spring constant for harmonic constraints 'spring_r0', # ? floats | Spring minima for harmonic constraints 'spring_v0', # ? floats | Initial velocity of harmonic constraints 'hills_wall_lower', # ? floats | Undocumented metadynamics parameter 'hills_wall_upper', # ? floats | Undocumented metadynamics parameter 'efield_pead', # 3 floats | homogeneous electric field for PEAD calc. 'zct', # ? floats | Undocumented charge fitting parameter 'rgaus', # ? floats | Undocumented charge fitting parameter 'hfalpha', # 10 floats | Undocumented HF parameter 'mcalpha', # 10 floats | Undocumented HF parameter 'saxis', # 3 floats | Coordinate for collinear spin calculations 'vca', # ? floats | Atom weight for VCA calculations 'stm', # 7 floats | "range for STM data" 'qspiral', # 3 floats | Undocumented parameter 'lrctype', # ntyp bools | Enable relaxed-core calc. for these atoms 'external_stress', # 6 floats | Target stress (adds w/ external_pressure) 'vdw_refstate', # ntyp ints | Undocumented classical vdW parameter 'lvdw_onecell', # 3 bools | Enable periodicity in A, B, C vector for vdW 'vdw_mbd_size', # 3 ints | Supercell size for TS MBD vdW correction 'm_constr', # 3*nions floats | Local magmom assigned to each spin DOF 'nbands_index', # nbands_out ints | Undocumented QP parameter 'kpts_index', # kpts_out ints | Undocumented QP parameter 'isp_index', # isp_out ints | Undocumented QP parameter 'nomega_index', # nomega_out ints | Undocumented QP parameter 'ntarget_states', # nbands ints | Undocumented CRPA parameter 'quad_efg', # ntyp floats | Nuclear quadrupole moments 'ngyromag', # ntyp floats | Nuclear gyromagnetic ratios 'rcrhocut', # ntyp floats | Core density cutoff rad. for HF relcore calc 'ofield_k', # 3 floats | Undocumented parameter 'paripot', # ? floats | Undocumented parameter 'smearings', # ? floats | ismear,sigma smearing params to loop over 'wanproj_i', # nions ints | Undocumented Wannier parameter 'wanproj_l', # ? ints | Undocumented Wannier parameter 'wanproj_e', # 2 floats | Undocumented Wannier parameter ] special_keys = [ 'lreal', # non-local projectors in real space ] dict_keys = [ 'ldau_luj', # dictionary with L(S)DA+U parameters, e.g. {'Fe':{'L':2, # 'U':4.0, 'J':0.9}, ...} ] keys = [ # 'NBLOCK' and KBLOCK inner block; outer block # 'NPACO' and APACO distance and nr. of slots for P.C. # 'WEIMIN, EBREAK, DEPER special control tags ] class GenerateVaspInput(object): # Parameters corresponding to 'xc' settings. This may be modified # by the user in-between loading calculators.vasp submodule and # instantiating the calculator object with calculators.vasp.Vasp() xc_defaults = { 'lda': {'pp': 'LDA'}, # GGAs 'pw91': {'pp': 'GGA', 'gga': '91'}, 'pbe': {'pp': 'PBE', 'gga': 'PE'}, 'pbesol': {'gga': 'PS'}, 'revpbe': {'gga': 'RE'}, 'rpbe': {'gga': 'RP'}, 'am05': {'gga': 'AM'}, # Meta-GGAs 'tpss': {'metagga': 'TPSS'}, 'revtpss': {'metagga': 'RTPSS'}, 'm06l': {'metagga': 'M06L'}, 'ms0': {'metagga': 'MS0'}, 'ms1': {'metagga': 'MS1'}, 'ms2': {'metagga': 'MS2'}, 'scan': {'metagga': 'SCAN'}, 'scan-rvv10': {'metagga': 'SCAN', 'luse_vdw': True, 'bparam': 15.7}, # vdW-DFs 'vdw-df': {'gga': 'RE', 'luse_vdw': True, 'aggac': 0.}, 'optpbe-vdw': {'gga': 'OR', 'luse_vdw': True, 'aggac': 0.0}, 'optb88-vdw': {'gga': 'BO', 'luse_vdw': True, 'aggac': 0.0, 'param1': 1.1 / 6.0, 'param2': 0.22}, 'optb86b-vdw': {'gga': 'MK', 'luse_vdw': True, 'aggac': 0.0, 'param1': 0.1234, 'param2': 1.0}, 'vdw-df2': {'gga': 'ML', 'luse_vdw': True, 'aggac': 0.0, 'zab_vdw': -1.8867}, 'beef-vdw': {'gga': 'BF', 'luse_vdw': True, 'zab_vdw': -1.8867}, # Hartree-Fock and hybrids 'hf': {'lhfcalc': True, 'aexx': 1.0, 'aldac': 0.0, 'aggac': 0.0}, 'b3lyp': {'gga': 'B3', 'lhfcalc': True, 'aexx': 0.2, 'aggax': 0.72, 'aggac': 0.81, 'aldac': 0.19}, 'pbe0': {'gga': 'PE', 'lhfcalc': True}, 'hse03': {'gga': 'PE', 'lhfcalc': True, 'hfscreen': 0.3}, 'hse06': {'gga': 'PE', 'lhfcalc': True, 'hfscreen': 0.2}, 'hsesol': {'gga': 'PS', 'lhfcalc': True, 'hfscreen': 0.2}} # elements which have no-suffix files only setups_defaults = {'K': '_pv', 'Ca': '_pv', 'Rb': '_pv', 'Sr': '_sv', 'Y': '_sv', 'Zr': '_sv', 'Nb': '_pv', 'Cs': '_sv', 'Ba': '_sv', 'Fr': '_sv', 'Ra': '_sv', 'Sc': '_sv'} def __init__(self, restart=None): self.float_params = {} self.exp_params = {} self.string_params = {} self.int_params = {} self.bool_params = {} self.list_params = {} self.special_params = {} self.dict_params = {} for key in float_keys: self.float_params[key] = None for key in exp_keys: self.exp_params[key] = None for key in string_keys: self.string_params[key] = None for key in int_keys: self.int_params[key] = None for key in bool_keys: self.bool_params[key] = None for key in list_keys: self.list_params[key] = None for key in special_keys: self.special_params[key] = None for key in dict_keys: self.dict_params[key] = None # Initialize internal dictionary of input parameters which are # not regular VASP keys self.input_params = { 'xc': None, # Exchange-correlation recipe (e.g. 'B3LYP') 'pp': None, # Pseudopotential file (e.g. 'PW91') 'setups': None, # Special setups (e.g pv, sv, ...) 'txt': '-', # Where to send information 'kpts': (1, 1, 1), # k-points # Option to use gamma-sampling instead of Monkhorst-Pack: 'gamma': False, # number of points between points in band structures: 'kpts_nintersections': None, # Option to write explicit k-points in units # of reciprocal lattice vectors: 'reciprocal': False} def set_xc_params(self, xc): """Set parameters corresponding to XC functional""" xc = xc.lower() if xc is None: pass elif xc not in self.xc_defaults: xc_allowed = ', '.join(self.xc_defaults.keys()) raise ValueError( '{0} is not supported for xc! Supported xc values' 'are: {1}'.format(xc, xc_allowed)) else: # XC defaults to PBE pseudopotentials if 'pp' not in self.xc_defaults[xc]: self.set(pp='PBE') self.set(**self.xc_defaults[xc]) def set(self, **kwargs): if ((('ldauu' in kwargs) and ('ldaul' in kwargs) and ('ldauj' in kwargs) and ('ldau_luj' in kwargs))): raise NotImplementedError( 'You can either specify ldaul, ldauu, and ldauj OR ' 'ldau_luj. ldau_luj is not a VASP keyword. It is a ' 'dictionary that specifies L, U and J for each ' 'chemical species in the atoms object. ' 'For example for a water molecule:' '''ldau_luj={'H':{'L':2, 'U':4.0, 'J':0.9}, 'O':{'L':2, 'U':4.0, 'J':0.9}}''') if 'xc' in kwargs: self.set_xc_params(kwargs['xc']) for key in kwargs: if key in self.float_params: self.float_params[key] = kwargs[key] elif key in self.exp_params: self.exp_params[key] = kwargs[key] elif key in self.string_params: self.string_params[key] = kwargs[key] elif key in self.int_params: self.int_params[key] = kwargs[key] elif key in self.bool_params: self.bool_params[key] = kwargs[key] elif key in self.list_params: self.list_params[key] = kwargs[key] elif key in self.special_params: self.special_params[key] = kwargs[key] elif key in self.dict_params: self.dict_params[key] = kwargs[key] elif key in self.input_params: self.input_params[key] = kwargs[key] else: raise TypeError('Parameter not defined: ' + key) def check_xc(self): """Make sure the calculator has functional & pseudopotentials set up If no XC combination, GGA functional or POTCAR type is specified, default to PW91. Otherwise, try to guess the desired pseudopotentials. """ p = self.input_params # There is no way to correctly guess the desired # set of pseudopotentials without 'pp' being set. # Usually, 'pp' will be set by 'xc'. if 'pp' not in p or p['pp'] is None: if self.string_params['gga'] is None: p.update({'pp': 'lda'}) elif self.string_params['gga'] == '91': p.update({'pp': 'pw91'}) elif self.string_params['gga'] == 'PE': p.update({'pp': 'pbe'}) else: raise NotImplementedError( "Unable to guess the desired set of pseudopotential" "(POTCAR) files. Please do one of the following: \n" "1. Use the 'xc' parameter to define your XC functional." "These 'recipes' determine the pseudopotential file as " "well as setting the INCAR parameters.\n" "2. Use the 'gga' settings None (default), 'PE' or '91'; " "these correspond to LDA, PBE and PW91 respectively.\n" "3. Set the POTCAR explicitly with the 'pp' flag. The " "value should be the name of a folder on the VASP_PP_PATH" ", and the aliases 'LDA', 'PBE' and 'PW91' are also" "accepted.\n") if (p['xc'] is not None and p['xc'].lower() == 'lda' and p['pp'].lower() != 'lda'): warnings.warn("XC is set to LDA, but PP is set to " "{0}. \nThis calculation is using the {0} " "POTCAR set. \n Please check that this is " "really what you intended!" "\n".format(p['pp'].upper())) def initialize(self, atoms): """Initialize a VASP calculation Constructs the POTCAR file (does not actually write it). User should specify the PATH to the pseudopotentials in VASP_PP_PATH environment variable The pseudopotentials are expected to be in: LDA: $VASP_PP_PATH/potpaw/ PBE: $VASP_PP_PATH/potpaw_PBE/ PW91: $VASP_PP_PATH/potpaw_GGA/ if your pseudopotentials are somewhere else, or named differently you may make symlinks at the paths above that point to the right place. Alternatively, you may pass the full name of a folder on the VASP_PP_PATH to the 'pp' parameter. """ p = self.input_params self.check_xc() self.all_symbols = atoms.get_chemical_symbols() self.natoms = len(atoms) self.spinpol = atoms.get_initial_magnetic_moments().any() atomtypes = atoms.get_chemical_symbols() # Determine the number of atoms of each atomic species # sorted after atomic species special_setups = [] symbols = [] symbolcount = {} # make sure we find POTCARs for elements which have no-suffix files only setups = self.setups_defaults.copy() # override with user defined setups if p['setups'] is not None: setups.update(p['setups']) for m in setups: try: special_setups.append(int(m)) except ValueError: continue for m, atom in enumerate(atoms): symbol = atom.symbol if m in special_setups: pass else: if symbol not in symbols: symbols.append(symbol) symbolcount[symbol] = 1 else: symbolcount[symbol] += 1 # Build the sorting list self.sort = [] self.sort.extend(special_setups) for symbol in symbols: for m, atom in enumerate(atoms): if m in special_setups: pass else: if atom.symbol == symbol: self.sort.append(m) self.resort = list(range(len(self.sort))) for n in range(len(self.resort)): self.resort[self.sort[n]] = n self.atoms_sorted = atoms[self.sort] # Check if the necessary POTCAR files exists and # create a list of their paths. self.symbol_count = [] for m in special_setups: self.symbol_count.append([atomtypes[m], 1]) for m in symbols: self.symbol_count.append([m, symbolcount[m]]) sys.stdout.flush() # Potpaw folders may be identified by an alias or full name for pp_alias, pp_folder in (('lda', 'potpaw'), ('pw91', 'potpaw_GGA'), ('pbe', 'potpaw_PBE')): if p['pp'].lower() == pp_alias: break else: pp_folder = p['pp'] if 'VASP_PP_PATH' in os.environ: pppaths = os.environ['VASP_PP_PATH'].split(':') else: pppaths = [] self.ppp_list = [] # Setting the pseudopotentials, first special setups and # then according to symbols for m in special_setups: if m in setups: special_setup_index = m elif str(m) in setups: special_setup_index = str(m) else: raise Exception("Having trouble with special setup index {0}." " Please use an int.".format(m)) potcar = join(pp_folder, setups[special_setup_index], 'POTCAR') for path in pppaths: filename = join(path, potcar) if isfile(filename) or islink(filename): self.ppp_list.append(filename) break elif isfile(filename + '.Z') or islink(filename + '.Z'): self.ppp_list.append(filename + '.Z') break else: print('Looking for %s' % potcar) raise RuntimeError('No pseudopotential for %s!' % symbol) for symbol in symbols: try: potcar = join(pp_folder, symbol + setups[symbol], 'POTCAR') except (TypeError, KeyError): potcar = join(pp_folder, symbol, 'POTCAR') for path in pppaths: filename = join(path, potcar) if isfile(filename) or islink(filename): self.ppp_list.append(filename) break elif isfile(filename + '.Z') or islink(filename + '.Z'): self.ppp_list.append(filename + '.Z') break else: print('''Looking for %s The pseudopotentials are expected to be in: LDA: $VASP_PP_PATH/potpaw/ PBE: $VASP_PP_PATH/potpaw_PBE/ PW91: $VASP_PP_PATH/potpaw_GGA/''' % potcar) raise RuntimeError('No pseudopotential for %s!' % symbol) self.converged = None self.setups_changed = None def write_input(self, atoms, directory='./'): from ase.io.vasp import write_vasp write_vasp(join(directory, 'POSCAR'), self.atoms_sorted, symbol_count=self.symbol_count) self.write_incar(atoms, directory=directory) self.write_potcar(directory=directory) self.write_kpoints(directory=directory) self.write_sort_file(directory=directory) def clean(self): """Method which cleans up after a calculation. The default files generated by Vasp will be deleted IF this method is called. """ files = ['CHG', 'CHGCAR', 'POSCAR', 'INCAR', 'CONTCAR', 'DOSCAR', 'EIGENVAL', 'IBZKPT', 'KPOINTS', 'OSZICAR', 'OUTCAR', 'PCDAT', 'POTCAR', 'vasprun.xml', 'WAVECAR', 'XDATCAR', 'PROCAR', 'ase-sort.dat', 'LOCPOT', 'AECCAR0', 'AECCAR1', 'AECCAR2'] for f in files: try: os.remove(f) except OSError: pass def write_incar(self, atoms, directory='./', **kwargs): """Writes the INCAR file.""" # jrk 1/23/2015 I added this flag because this function has # two places where magmoms get written. There is some # complication when restarting that often leads to magmom # getting written twice. this flag prevents that issue. magmom_written = False incar = open(join(directory, 'INCAR'), 'w') incar.write('INCAR created by Atomic Simulation Environment\n') for key, val in self.float_params.items(): if val is not None: incar.write(' %s = %5.6f\n' % (key.upper(), val)) for key, val in self.exp_params.items(): if val is not None: incar.write(' %s = %5.2e\n' % (key.upper(), val)) for key, val in self.string_params.items(): if val is not None: incar.write(' %s = %s\n' % (key.upper(), val)) for key, val in self.int_params.items(): if val is not None: incar.write(' %s = %d\n' % (key.upper(), val)) if key == 'ichain' and val > 0: incar.write(' IBRION = 3\n POTIM = 0.0\n') for key, val in self.int_params.items(): if key == 'iopt' and val is None: print('WARNING: optimization is ' 'set to LFBGS (IOPT = 1)') incar.write(' IOPT = 1\n') for key, val in self.exp_params.items(): if key == 'ediffg' and val is None: RuntimeError('Please set EDIFFG < 0') for key, val in self.list_params.items(): if val is not None: if key in ('dipol', 'eint', 'ropt', 'rwigs', 'langevin_gamma'): incar.write(' %s = ' % key.upper()) [incar.write('%.4f ' % x) for x in val] # ldau_luj is a dictionary that encodes all the # data. It is not a vasp keyword. An alternative to # the dictionary is to to use 'ldauu', 'ldauj', # 'ldaul', which are vasp keywords. elif (key in ('ldauu', 'ldauj') and self.dict_params['ldau_luj'] is None): incar.write(' %s = ' % key.upper()) [incar.write('%.4f ' % x) for x in val] elif (key in ('ldaul') and self.dict_params['ldau_luj'] is None): incar.write(' %s = ' % key.upper()) [incar.write('%d ' % x) for x in val] elif key in ('ferwe', 'ferdo'): incar.write(' %s = ' % key.upper()) [incar.write('%.1f ' % x) for x in val] elif key in ('iband', 'kpuse', 'random_seed'): incar.write(' %s = ' % key.upper()) [incar.write('%i ' % x) for x in val] elif key == 'magmom': incar.write(' %s = ' % key.upper()) magmom_written = True list = [[1, val[0]]] for n in range(1, len(val)): if val[n] == val[n - 1]: list[-1][0] += 1 else: list.append([1, val[n]]) [incar.write('%i*%.4f ' % (mom[0], mom[1])) for mom in list] incar.write('\n') for key, val in self.bool_params.items(): if val is not None: incar.write(' %s = ' % key.upper()) if val: incar.write('.TRUE.\n') else: incar.write('.FALSE.\n') for key, val in self.special_params.items(): if val is not None: incar.write(' %s = ' % key.upper()) if key == 'lreal': if isinstance(val, basestring): incar.write(val + '\n') elif isinstance(val, bool): if val: incar.write('.TRUE.\n') else: incar.write('.FALSE.\n') for key, val in self.dict_params.items(): if val is not None: if key == 'ldau_luj': llist = ulist = jlist = '' for symbol in self.symbol_count: # default: No +U luj = val.get(symbol[0], {'L': -1, 'U': 0.0, 'J': 0.0}) llist += ' %i' % luj['L'] ulist += ' %.3f' % luj['U'] jlist += ' %.3f' % luj['J'] incar.write(' LDAUL =%s\n' % llist) incar.write(' LDAUU =%s\n' % ulist) incar.write(' LDAUJ =%s\n' % jlist) if self.spinpol and not magmom_written: if not self.int_params['ispin']: incar.write(' ispin = 2\n'.upper()) # Write out initial magnetic moments magmom = atoms.get_initial_magnetic_moments()[self.sort] # unpack magmom array if three components specified if magmom.ndim > 1: magmom = [item for sublist in magmom for item in sublist] list = [[1, magmom[0]]] for n in range(1, len(magmom)): if magmom[n] == magmom[n - 1]: list[-1][0] += 1 else: list.append([1, magmom[n]]) incar.write(' magmom = '.upper()) [incar.write('%i*%.4f ' % (mom[0], mom[1])) for mom in list] incar.write('\n') incar.close() def write_kpoints(self, directory='./', **kwargs): """Writes the KPOINTS file.""" # Don't write anything if KSPACING is being used if self.float_params['kspacing'] is not None: if self.float_params['kspacing'] > 0: return else: raise ValueError("KSPACING value {0} is not allowable. " "Please use None or a positive number." "".format(self.float_params['kspacing'])) p = self.input_params kpoints = open(join(directory, 'KPOINTS'), 'w') kpoints.write('KPOINTS created by Atomic Simulation Environment\n') if isinstance(p['kpts'], dict): p['kpts'] = kpts2ndarray(p['kpts'], atoms=self.atoms) p['reciprocal'] = True shape = np.array(p['kpts']).shape # Wrap scalar in list if necessary if shape == (): p['kpts'] = [p['kpts']] shape = (1, ) if len(shape) == 1: kpoints.write('0\n') if shape == (1, ): kpoints.write('Auto\n') elif p['gamma']: kpoints.write('Gamma\n') else: kpoints.write('Monkhorst-Pack\n') [kpoints.write('%i ' % kpt) for kpt in p['kpts']] kpoints.write('\n0 0 0\n') elif len(shape) == 2: kpoints.write('%i \n' % (len(p['kpts']))) if p['reciprocal']: kpoints.write('Reciprocal\n') else: kpoints.write('Cartesian\n') for n in range(len(p['kpts'])): [kpoints.write('%f ' % kpt) for kpt in p['kpts'][n]] if shape[1] == 4: kpoints.write('\n') elif shape[1] == 3: kpoints.write('1.0 \n') kpoints.close() def write_potcar(self, suffix="", directory='./'): """Writes the POTCAR file.""" import tempfile potfile = open(join(directory, 'POTCAR' + suffix), 'w') for filename in self.ppp_list: if filename.endswith('R'): for line in open(filename, 'r'): potfile.write(line) elif filename.endswith('.Z'): file_tmp = tempfile.NamedTemporaryFile() os.system('gunzip -c %s > %s' % (filename, file_tmp.name)) for line in file_tmp.readlines(): potfile.write(line) file_tmp.close() potfile.close() def write_sort_file(self, directory='./'): """Writes a sortings file. This file contains information about how the atoms are sorted in the first column and how they should be resorted in the second column. It is used for restart purposes to get sorting right when reading in an old calculation to ASE.""" file = open(join(directory, 'ase-sort.dat'), 'w') for n in range(len(self.sort)): file.write('%5i %5i \n' % (self.sort[n], self.resort[n])) # The below functions are used to restart a calculation and are under early # constructions def read_incar(self, filename='INCAR'): """Method that imports settings from INCAR file.""" self.spinpol = False file = open(filename, 'r') file.readline() lines = file.readlines() for line in lines: try: # Make multiplication, comments, and parameters easier to spot line = line.replace("*", " * ") line = line.replace("=", " = ") line = line.replace("#", "# ") data = line.split() # Skip empty and commented lines. if len(data) == 0: continue elif data[0][0] in ['#', '!']: continue key = data[0].lower() if key in float_keys: self.float_params[key] = float(data[2]) elif key in exp_keys: self.exp_params[key] = float(data[2]) elif key in string_keys: self.string_params[key] = str(data[2]) elif key in int_keys: if key == 'ispin': # JRK added. not sure why we would want to leave ispin # out self.int_params[key] = int(data[2]) if int(data[2]) == 2: self.spinpol = True else: self.int_params[key] = int(data[2]) elif key in bool_keys: if 'true' in data[2].lower(): self.bool_params[key] = True elif 'false' in data[2].lower(): self.bool_params[key] = False elif key in list_keys: list = [] if key in ('dipol', 'eint', 'ferwe', 'ferdo', 'ropt', 'rwigs', 'ldauu', 'ldaul', 'ldauj', 'langevin_gamma'): for a in data[2:]: if a in ["!", "#"]: break list.append(float(a)) elif key in ('iband', 'kpuse', 'random_seed'): for a in data[2:]: if a in ["!", "#"]: break list.append(int(a)) self.list_params[key] = list if key == 'magmom': list = [] i = 2 while i < len(data): if data[i] in ["#", "!"]: break if data[i] == "*": b = list.pop() i += 1 for j in range(int(b)): list.append(float(data[i])) else: list.append(float(data[i])) i += 1 self.list_params['magmom'] = list list = np.array(list) if self.atoms is not None: self.atoms.set_initial_magnetic_moments( list[self.resort]) elif key in special_keys: if key == 'lreal': if 'true' in data[2].lower(): self.special_params[key] = True elif 'false' in data[2].lower(): self.special_params[key] = False else: self.special_params[key] = data[2] except KeyError: raise IOError('Keyword "%s" in INCAR is' 'not known by calculator.' % key) except IndexError: raise IOError('Value missing for keyword "%s".' % key) def read_kpoints(self, filename='KPOINTS'): file = open(filename, 'r') lines = file.readlines() file.close() ktype = lines[2].split()[0].lower()[0] if ktype in ['g', 'm', 'a']: if ktype == 'g': self.set(gamma=True) kpts = np.array([int(lines[3].split()[i]) for i in range(3)]) elif ktype == 'a': kpts = np.array([int(lines[3].split()[i]) for i in range(1)]) elif ktype == 'm': kpts = np.array([int(lines[3].split()[i]) for i in range(3)]) else: if ktype in ['c', 'k']: self.set(reciprocal=False) else: self.set(reciprocal=True) kpts = np.array([list(map(float, line.split())) for line in lines[3:]]) self.set(kpts=kpts) def read_potcar(self): """ Read the pseudopotential XC functional from POTCAR file. """ file = open('POTCAR', 'r') lines = file.readlines() file.close() # Search for key 'LEXCH' in POTCAR xc_flag = None for line in lines: key = line.split()[0].upper() if key == 'LEXCH': xc_flag = line.split()[-1].upper() break if xc_flag is None: raise ValueError('LEXCH flag not found in POTCAR file.') # Values of parameter LEXCH and corresponding XC-functional xc_dict = {'PE': 'PBE', '91': 'PW91', 'CA': 'LDA'} if xc_flag not in xc_dict.keys(): raise ValueError('Unknown xc-functional flag found in POTCAR,' ' LEXCH=%s' % xc_flag) self.input_params['pp'] = xc_dict[xc_flag] def todict(self): """Returns a dictionary of all parameters that can be used to construct a new calculator object""" dict_list = [ 'float_params', 'exp_params', 'string_params', 'int_params', 'bool_params', 'list_params', 'special_params', 'dict_params', 'input_params' ] dct = {} for item in dict_list: dct.update(getattr(self, item)) for key, val in list(dct.items()): if val is None: del(dct[key]) return dct ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vasp/interactive.py000066400000000000000000000115261316323560300267200ustar00rootroot00000000000000from __future__ import print_function from subprocess import Popen, PIPE from ase.calculators.calculator import Calculator from ase.io import read from .create_input import GenerateVaspInput import time import os class VaspInteractive(GenerateVaspInput, Calculator): name = "VaspInteractive" implemented_properties = ['energy', 'forces', 'stress'] mandatory_input = {'potim': 0.0, 'ibrion': -1, 'interactive': True, } default_input = {'nsw': 2000, } def __init__(self, txt="interactive.log", print_log=False, process=None, command=None, path="./", **kwargs): GenerateVaspInput.__init__(self) for kw, val in self.mandatory_input.items(): if kw in kwargs and val != kwargs[kw]: raise ValueError('Keyword {} cannot be overridden! ' 'It must have have value {}, but {} ' 'was provided instead.'.format(kw, val, kwargs[kw])) kwargs.update(self.mandatory_input) for kw, val in self.default_input.items(): if kw not in kwargs: kwargs[kw] = val self.set(**kwargs) self.process = process self.path = path if txt is not None: self.txt = open(txt, "a") else: self.txt = None self.print_log = print_log if command is not None: self.command = command elif 'VASP_COMMAND' in os.environ: self.command = os.environ['VASP_COMMAND'] elif 'VASP_SCRIPT' in os.environ: self.command = os.environ['VASP_SCRIPT'] else: raise RuntimeError('Please set either command in calculator' ' or VASP_COMMAND environment variable') if isinstance(self.command, str): self.command = self.command.split() self.atoms = None def _stdin(self, text, ending="\n"): if self.txt is not None: self.txt.write(text + ending) if self.print_log: print(text, end=ending) self.process.stdin.write(text + ending) def _stdout(self, text): if self.txt is not None: self.txt.write(text) if self.print_log: print(text, end="") def _run_vasp(self, atoms): if self.process is None: stopcar = os.path.join(self.path, 'STOPCAR') if os.path.isfile(stopcar): os.remove(stopcar) self._stdout("Writing VASP input files\n") self.initialize(atoms) self.write_input(atoms, directory=self.path) self._stdout("Starting VASP for initial step...\n") self.process = Popen(self.command, stdout=PIPE, stdin=PIPE, stderr=PIPE, cwd=self.path) else: self._stdout("Inputting positions...\n") for atom in atoms.get_scaled_positions(): self._stdin(' '.join(map('{:19.16f}'.format, atom))) while self.process.poll() is None: text = self.process.stdout.readline() self._stdout(text) if "POSITIONS: reading from stdin" in text: return # If we've reached this point, then VASP has exited without asking for # new positions, meaning it either exited without error unexpectedly, # or it exited with an error. Either way, we need to raise an error. raise RuntimeError("VASP exited unexpectedly with exit code {}" "".format(self.subprocess.poll())) def close(self): if self.process is None: return self._stdout('Attemping to close VASP cleanly\n') with open(os.path.join(self.path, 'STOPCAR'), 'w') as stopcar: stopcar.write('LABORT = .TRUE.') self._run_vasp(self.atoms) self._run_vasp(self.atoms) while self.process.poll() is None: time.sleep(1) self._stdout("VASP has been closed\n") self.process = None def calculate(self, atoms=None, properties=['energy'], system_changes=['positions', 'numbers', 'cell']): Calculator.calculate(self, atoms, properties, system_changes) if not system_changes: return if 'numbers' in system_changes: self.close() self._run_vasp(atoms) new = read(os.path.join(self.path, 'vasprun.xml'), index=-1) self.results = {'free_energy': new.get_potential_energy(force_consistent=True), 'energy': new.get_potential_energy(), 'forces': new.get_forces()[self.resort], 'stress': new.get_stress()} def __del__(self): self.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vasp/vasp.py000066400000000000000000001317451316323560300253620ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2008 CSC - Scientific Computing Ltd. """This module defines an ASE interface to VASP. Developed on the basis of modules by Jussi Enkovaara and John Kitchin. The path of the directory containing the pseudopotential directories (potpaw,potpaw_GGA, potpaw_PBE, ...) should be set by the environmental flag $VASP_PP_PATH. The user should also set the environmental flag $VASP_SCRIPT pointing to a python script looking something like:: import os exitcode = os.system('vasp') Alternatively, user can set the environmental flag $VASP_COMMAND pointing to the command use the launch vasp e.g. 'vasp' or 'mpirun -n 16 vasp' http://cms.mpi.univie.ac.at/vasp/ """ import os import sys import re from ase.calculators.general import Calculator import numpy as np import ase.io from ase.utils import devnull, basestring from ase.calculators.singlepoint import SinglePointCalculator from ase.calculators.calculator import PropertyNotImplementedError from .create_input import GenerateVaspInput class Vasp(GenerateVaspInput, Calculator): name = 'Vasp' implemented_properties = ['energy', 'forces', 'dipole', 'fermi', 'stress' 'magmom', 'magmoms'] def __init__(self, restart=None, output_template='vasp', track_output=False, **kwargs): GenerateVaspInput.__init__(self) self.restart = restart self.track_output = track_output self.output_template = output_template if restart: self.restart_load() return self.nbands = self.int_params['nbands'] self.atoms = None self.positions = None self.run_counts = 0 # If no XC combination, GGA functional or POTCAR type is specified, # default to PW91. This is mostly chosen for backwards compatiblity. if kwargs.get('xc', None): pass elif not (kwargs.get('gga', None) or kwargs.get('pp', None)): self.input_params.update({'xc': 'PW91'}) # A null value of xc is permitted; custom recipes can be # used by explicitly setting the pseudopotential set and # INCAR keys else: self.input_params.update({'xc': None}) self.set(**kwargs) def update(self, atoms): if self.calculation_required(atoms, ['energy']): if (((self.atoms is None) or (self.atoms.positions.shape != atoms.positions.shape) )): # Completely new calculation just reusing the same # calculator, so delete any old VASP files found. self.clean() self.calculate(atoms) def calculate(self, atoms): """Generate necessary files in the working directory and run VASP. The method first write VASP input files, then calls the method which executes VASP. When the VASP run is finished energy, forces, etc. are read from the VASP output. """ # Check if there is only a zero unit cell if not atoms.cell.any(): raise ValueError("The lattice vectors are zero! " "This is the default value - please specify a " "unit cell.") # Initialize calculations self.initialize(atoms) # Write input self.write_input(atoms) # Execute VASP self.run() # Read output atoms_sorted = ase.io.read('CONTCAR', format='vasp') if (self.int_params['ibrion'] is not None and self.int_params['nsw'] is not None): if self.int_params['ibrion'] > -1 and self.int_params['nsw'] > 0: # Update atomic positions and unit cell with the ones read # from CONTCAR. atoms.positions = atoms_sorted[self.resort].positions atoms.cell = atoms_sorted.cell self.converged = self.read_convergence() self.set_results(atoms) def set_results(self, atoms): self.read(atoms) if self.spinpol: self.magnetic_moment = self.read_magnetic_moment() if (self.int_params['lorbit'] is not None and (self.int_params['lorbit'] >= 10 or self.list_params['rwigs'])): self.magnetic_moments = self.read_magnetic_moments(atoms) else: self.magnetic_moments = None self.old_float_params = self.float_params.copy() self.old_exp_params = self.exp_params.copy() self.old_string_params = self.string_params.copy() self.old_int_params = self.int_params.copy() self.old_input_params = self.input_params.copy() self.old_bool_params = self.bool_params.copy() self.old_list_params = self.list_params.copy() self.old_dict_params = self.dict_params.copy() self.atoms = atoms.copy() self.name = 'vasp' self.version = self.read_version() self.niter = self.read_number_of_iterations() self.sigma = self.read_electronic_temperature() self.nelect = self.read_number_of_electrons() def run(self): """Method which explicitely runs VASP.""" if self.track_output: self.out = self.output_template + str(self.run_counts) + '.out' self.run_counts += 1 else: self.out = self.output_template + '.out' stderr = sys.stderr p = self.input_params if p['txt'] is None: sys.stderr = devnull elif p['txt'] == '-': pass elif isinstance(p['txt'], basestring): sys.stderr = open(p['txt'], 'w') if 'VASP_COMMAND' in os.environ: vasp = os.environ['VASP_COMMAND'] exitcode = os.system('%s > %s' % (vasp, self.out)) elif 'VASP_SCRIPT' in os.environ: vasp = os.environ['VASP_SCRIPT'] locals = {} exec(compile(open(vasp).read(), vasp, 'exec'), {}, locals) exitcode = locals['exitcode'] else: raise RuntimeError('Please set either VASP_COMMAND' ' or VASP_SCRIPT environment variable') sys.stderr = stderr if exitcode != 0: raise RuntimeError('Vasp exited with exit code: %d. ' % exitcode) def restart_load(self): """Method which is called upon restart.""" # Try to read sorting file if os.path.isfile('ase-sort.dat'): self.sort = [] self.resort = [] file = open('ase-sort.dat', 'r') lines = file.readlines() file.close() for line in lines: data = line.split() self.sort.append(int(data[0])) self.resort.append(int(data[1])) atoms = ase.io.read('CONTCAR', format='vasp')[self.resort] else: atoms = ase.io.read('CONTCAR', format='vasp') self.sort = list(range(len(atoms))) self.resort = list(range(len(atoms))) self.atoms = atoms.copy() self.read_incar() self.read_outcar() self.set_results(atoms) if not self.float_params['kspacing']: self.read_kpoints() self.read_potcar() self.old_input_params = self.input_params.copy() self.converged = self.read_convergence() def set_atoms(self, atoms): if (atoms != self.atoms): self.converged = None self.atoms = atoms.copy() def get_atoms(self): atoms = self.atoms.copy() atoms.set_calculator(self) return atoms def get_version(self): self.update(self.atoms) return self.version def read_version(self): version = None for line in open('OUTCAR'): if line.find(' vasp.') != -1: # find the first occurrence version = line[len(' vasp.'):].split()[0] break return version def get_potential_energy(self, atoms, force_consistent=False): self.update(atoms) if force_consistent: return self.energy_free else: return self.energy_zero def get_number_of_iterations(self): self.update(self.atoms) return self.niter def read_number_of_iterations(self): niter = None for line in open('OUTCAR'): # find the last iteration number if line.find('- Iteration') != -1: niter = int(line.split(')')[0].split('(')[-1].strip()) return niter def get_electronic_temperature(self): self.update(self.atoms) return self.sigma def read_electronic_temperature(self): sigma = None for line in open('OUTCAR'): if line.find('Fermi-smearing in eV SIGMA') != -1: sigma = float(line.split('=')[1].strip()) return sigma def get_default_number_of_electrons(self, filename='POTCAR'): """Get list of tuples (atomic symbol, number of valence electrons) for each atomtype from a POTCAR file. """ return self.read_default_number_of_electrons(filename) def read_default_number_of_electrons(self, filename='POTCAR'): nelect = [] lines = open(filename).readlines() for n, line in enumerate(lines): if line.find('TITEL') != -1: symbol = line.split('=')[1].split()[1].split('_')[0].strip() valence = float(lines[n + 4].split(';')[1] .split('=')[1].split()[0].strip()) nelect.append((symbol, valence)) return nelect def get_number_of_electrons(self): self.update(self.atoms) return self.nelect def read_number_of_electrons(self): nelect = None for line in open('OUTCAR'): if line.find('total number of electrons') != -1: nelect = float(line.split('=')[1].split()[0].strip()) return nelect def get_forces(self, atoms): self.update(atoms) return self.forces def get_stress(self, atoms): self.update(atoms) if self.stress is None: raise PropertyNotImplementedError return self.stress def read_stress(self): stress = None for line in open('OUTCAR'): if line.find(' in kB ') != -1: stress = -np.array([float(a) for a in line.split()[2:]]) stress = stress[[0, 1, 2, 4, 5, 3]] * 1e-1 * ase.units.GPa return stress def read_ldau(self): ldau_luj = None ldauprint = None ldau = None ldautype = None atomtypes = [] # read ldau parameters from outcar for line in open('OUTCAR'): if line.find('TITEL') != -1: # What atoms are present atomtypes.append(line.split()[3].split('_')[0].split('.')[0]) if line.find('LDAUTYPE') != -1: # Is this a DFT+U calculation ldautype = int(line.split('=')[-1]) ldau = True ldau_luj = {} if line.find('LDAUL') != -1: L = line.split('=')[-1].split() if line.find('LDAUU') != -1: U = line.split('=')[-1].split() if line.find('LDAUJ') != -1: J = line.split('=')[-1].split() # create dictionary if ldau: for i, symbol in enumerate(atomtypes): ldau_luj[symbol] = {'L': int(L[i]), 'U': float(U[i]), 'J': float(J[i])} self.dict_params['ldau_luj'] = ldau_luj return ldau, ldauprint, ldautype, ldau_luj def calculation_required(self, atoms, quantities): if (((self.positions is None) or (self.atoms != atoms) or (self.float_params != self.old_float_params) or (self.exp_params != self.old_exp_params) or (self.string_params != self.old_string_params) or (self.int_params != self.old_int_params) or (self.bool_params != self.old_bool_params) or (self.list_params != self.old_list_params) or (self.input_params != self.old_input_params) or (self.dict_params != self.old_dict_params) or not self.converged)): return True if 'magmom' in quantities: return not hasattr(self, 'magnetic_moment') return False def get_number_of_bands(self): return self.nbands def get_k_point_weights(self): self.update(self.atoms) return self.read_k_point_weights() def get_number_of_spins(self): if self.spinpol is None: return 1 else: return 1 + int(self.spinpol) def get_eigenvalues(self, kpt=0, spin=0): self.update(self.atoms) return self.read_eigenvalues(kpt, spin) def get_occupation_numbers(self, kpt=0, spin=0): self.update(self.atoms) return self.read_occupation_numbers(kpt, spin) def get_fermi_level(self): return self.fermi def get_number_of_grid_points(self): raise NotImplementedError def get_pseudo_density(self): raise NotImplementedError def get_pseudo_wavefunction(self, n=0, k=0, s=0, pad=True): raise NotImplementedError def get_bz_k_points(self): raise NotImplementedError def get_ibz_kpoints(self): self.update(self.atoms) return self.read_ibz_kpoints() def get_ibz_k_points(self): return self.get_ibz_kpoints() def get_spin_polarized(self): if not hasattr(self, 'spinpol'): self.spinpol = self.atoms.get_initial_magnetic_moments().any() return self.spinpol def get_magnetic_moment(self, atoms): self.update(atoms) return self.magnetic_moment def get_magnetic_moments(self, atoms): if ((self.int_params['lorbit'] is not None and self.int_params['lorbit'] >= 10) or self.list_params['rwigs']): self.update(atoms) return self.magnetic_moments else: return None def get_dipole_moment(self, atoms): """Returns total dipole moment of the system.""" self.update(atoms) return self.dipole def get_xc_functional(self): """Returns the XC functional or the pseudopotential type If a XC recipe is set explicitly with 'xc', this is returned. Otherwise, the XC functional associated with the pseudopotentials (LDA, PW91 or PBE) is returned. The string is always cast to uppercase for consistency in checks.""" if self.input_params.get('xc', None): return self.input_params['xc'].upper() elif self.input_params.get('pp', None): return self.input_params['pp'].upper() else: raise ValueError('No xc or pp found.') # Methods for reading information from OUTCAR files: def read_energy(self, all=None): [energy_free, energy_zero] = [0, 0] if all: energy_free = [] energy_zero = [] for line in open('OUTCAR', 'r'): # Free energy if line.lower().startswith(' free energy toten'): if all: energy_free.append(float(line.split()[-2])) else: energy_free = float(line.split()[-2]) # Extrapolated zero point energy if line.startswith(' energy without entropy'): if all: energy_zero.append(float(line.split()[-1])) else: energy_zero = float(line.split()[-1]) return [energy_free, energy_zero] def read_forces(self, atoms, all=False): """Method that reads forces from OUTCAR file. If 'all' is switched on, the forces for all ionic steps in the OUTCAR file be returned, in other case only the forces for the last ionic configuration is returned.""" file = open('OUTCAR', 'r') lines = file.readlines() file.close() n = 0 if all: all_forces = [] for line in lines: if line.rfind('TOTAL-FORCE') > -1: forces = [] for i in range(len(atoms)): forces.append(np.array([float(f) for f in lines[n + 2 + i].split()[3:6]])) if all: all_forces.append(np.array(forces)[self.resort]) n += 1 if all: return np.array(all_forces) else: return np.array(forces)[self.resort] def read_fermi(self): """Method that reads Fermi energy from OUTCAR file""" E_f = None for line in open('OUTCAR', 'r'): if line.rfind('E-fermi') > -1: E_f = float(line.split()[2]) return E_f def read_dipole(self): dipolemoment = np.zeros([1, 3]) for line in open('OUTCAR', 'r'): if line.rfind('dipolmoment') > -1: dipolemoment = np.array([float(f) for f in line.split()[1:4]]) return dipolemoment def read_magnetic_moments(self, atoms): magnetic_moments = np.zeros(len(atoms)) n = 0 lines = open('OUTCAR', 'r').readlines() for line in lines: if line.rfind('magnetization (x)') > -1: for m in range(len(atoms)): magnetic_moments[m] = float(lines[n + m + 4].split()[4]) n += 1 return np.array(magnetic_moments)[self.resort] def read_magnetic_moment(self): n = 0 for line in open('OUTCAR', 'r'): if line.rfind('number of electron ') > -1: magnetic_moment = float(line.split()[-1]) n += 1 return magnetic_moment def read_nbands(self): for line in open('OUTCAR', 'r'): line = self.strip_warnings(line) if line.rfind('NBANDS') > -1: return int(line.split()[-1]) def strip_warnings(self, line): """Returns empty string instead of line from warnings in OUTCAR.""" if line[0] == "|": return "" else: return line def read_convergence(self): """Method that checks whether a calculation has converged.""" converged = None # First check electronic convergence for line in open('OUTCAR', 'r'): if 0: # vasp always prints that! if line.rfind('aborting loop') > -1: # scf failed raise RuntimeError(line.strip()) break if line.rfind('EDIFF ') > -1: ediff = float(line.split()[2]) if line.rfind('total energy-change') > -1: # I saw this in an atomic oxygen calculation. it # breaks this code, so I am checking for it here. if 'MIXING' in line: continue split = line.split(':') a = float(split[1].split('(')[0]) b = split[1].split('(')[1][0:-2] # sometimes this line looks like (second number wrong format!): # energy-change (2. order) :-0.2141803E-08 ( 0.2737684-111) # we are checking still the first number so # let's "fix" the format for the second one if 'e' not in b.lower(): # replace last occurrence of - (assumed exponent) with -e bsplit = b.split('-') bsplit[-1] = 'e' + bsplit[-1] b = '-'.join(bsplit).replace('-e', 'e-') b = float(b) if [abs(a), abs(b)] < [ediff, ediff]: converged = True else: converged = False continue # Then if ibrion in [1,2,3] check whether ionic relaxation # condition been fulfilled if ((self.int_params['ibrion'] in [1, 2, 3] and self.int_params['nsw'] not in [0])): if not self.read_relaxed(): converged = False else: converged = True return converged def read_ibz_kpoints(self): lines = open('OUTCAR', 'r').readlines() ibz_kpts = [] n = 0 i = 0 for line in lines: if line.rfind('Following cartesian coordinates') > -1: m = n + 2 while i == 0: ibz_kpts.append([float(lines[m].split()[p]) for p in range(3)]) m += 1 if lines[m] == ' \n': i = 1 if i == 1: continue n += 1 ibz_kpts = np.array(ibz_kpts) return np.array(ibz_kpts) def read_k_point_weights(self): file = open('IBZKPT') lines = file.readlines() file.close() if 'Tetrahedra\n' in lines: N = lines.index('Tetrahedra\n') else: N = len(lines) kpt_weights = [] for n in range(3, N): kpt_weights.append(float(lines[n].split()[3])) kpt_weights = np.array(kpt_weights) kpt_weights /= np.sum(kpt_weights) return kpt_weights def read_eigenvalues(self, kpt=0, spin=0): file = open('EIGENVAL', 'r') lines = file.readlines() file.close() eigs = [] for n in range(8 + kpt * (self.nbands + 2), 8 + kpt * (self.nbands + 2) + self.nbands): eigs.append(float(lines[n].split()[spin + 1])) return np.array(eigs) def read_occupation_numbers(self, kpt=0, spin=0): lines = open('OUTCAR').readlines() nspins = self.get_number_of_spins() start = 0 if nspins == 1: for n, line in enumerate(lines): # find it in the last iteration m = re.search(' k-point *' + str(kpt + 1) + ' *:', line) if m is not None: start = n else: for n, line in enumerate(lines): # find it in the last iteration if line.find(' spin component ' + str(spin + 1)) != -1: start = n for n2, line2 in enumerate(lines[start:]): m = re.search(' k-point *' + str(kpt + 1) + ' *:', line2) if m is not None: start = start + n2 break for n2, line2 in enumerate(lines[start + 2:]): if not line2.strip(): break occ = [] for line in lines[start + 2:start + 2 + n2]: occ.append(float(line.split()[2])) return np.array(occ) def read_relaxed(self): for line in open('OUTCAR', 'r'): if line.rfind('reached required accuracy') > -1: return True return False def read_outcar(self): # Spin polarized calculation? file = open('OUTCAR', 'r') lines = file.readlines() file.close() for line in lines: if line.rfind('ISPIN') > -1: if int(line.split()[2]) == 2: self.spinpol = True else: self.spinpol = None self.energy_free, self.energy_zero = self.read_energy() self.forces = self.read_forces(self.atoms) self.dipole = self.read_dipole() self.fermi = self.read_fermi() self.stress = self.read_stress() self.nbands = self.read_nbands() self.read_ldau() p = self.int_params q = self.list_params if self.spinpol: self.magnetic_moment = self.read_magnetic_moment() if p['lorbit'] >= 10 or (p['lorbit'] is None and q['rwigs']): self.magnetic_moments = self.read_magnetic_moments(self.atoms) else: self.magnetic_moments = None self.set(nbands=self.nbands) def read_vib_freq(self): """Read vibrational frequencies. Returns list of real and list of imaginary frequencies.""" freq = [] i_freq = [] with open('OUTCAR', 'r') as fd: lines = fd.readlines() for line in lines: data = line.split() if 'THz' in data: if 'f/i=' not in data: freq.append(float(data[-2])) else: i_freq.append(float(data[-2])) return freq, i_freq def get_nonselfconsistent_energies(self, bee_type): """ Method that reads and returns BEE energy contributions written in OUTCAR file. """ assert bee_type == 'beefvdw' cmd = 'grep -32 "BEEF xc energy contributions" OUTCAR | tail -32' p = os.popen(cmd, 'r') s = p.readlines() p.close() xc = np.array([]) for i, l in enumerate(s): l_ = float(l.split(":")[-1]) xc = np.append(xc, l_) assert len(xc) == 32 return xc def check_state(self, atoms, tol=1e-15): """Check for system changes since last calculation.""" from ase.calculators.calculator import all_changes, equal if self.atoms is None: system_changes = all_changes[:] else: system_changes = [] if not equal(self.atoms.positions, atoms.positions, tol): system_changes.append('positions') if not equal(self.atoms.numbers, atoms.numbers): system_changes.append('numbers') if not equal(self.atoms.cell, atoms.cell, tol): system_changes.append('cell') if not equal(self.atoms.pbc, atoms.pbc): system_changes.append('pbc') if not equal(self.atoms.get_initial_magnetic_moments(), atoms.get_initial_magnetic_moments(), tol): system_changes.append('initial_magmoms') if not equal(self.atoms.get_initial_charges(), atoms.get_initial_charges(), tol): system_changes.append('initial_charges') return system_changes def get_property(self, name, atoms=None, allow_calculation=True): """Returns the value of a property""" if name not in Vasp.implemented_properties: raise PropertyNotImplementedError if atoms is None: atoms = self.atoms saved_property = { 'energy': 'energy_zero', 'forces': 'forces', 'dipole': 'dipole', 'fermi': 'fermi', 'stress': 'stress', 'magmom': 'magnetic_moment', 'magmoms': 'magnetic_moments' } property_getter = { 'energy': {'function': 'get_potential_energy', 'args': [atoms]}, 'forces': {'function': 'get_forces', 'args': [atoms]}, 'dipole': {'function': 'get_dipole_moment', 'args': [atoms]}, 'fermi': {'function': 'get_fermi_level', 'args': []}, 'stress': {'function': 'get_stress', 'args': [atoms]}, 'magmom': {'function': 'get_magnetic_moment', 'args': [atoms]}, 'magmoms': {'function': 'get_magnetic_moments', 'args': [atoms]} } if allow_calculation: function = property_getter[name]['function'] args = property_getter[name]['args'] result = getattr(self, function)(*args) else: if hasattr(self, saved_property[name]): result = getattr(self, saved_property[name]) else: result = None if isinstance(result, np.ndarray): result = result.copy() return result class VaspChargeDensity(object): """Class for representing VASP charge density""" def __init__(self, filename='CHG'): # Instance variables self.atoms = [] # List of Atoms objects self.chg = [] # Charge density self.chgdiff = [] # Charge density difference, if spin polarized self.aug = '' # Augmentation charges, not parsed just a big string self.augdiff = '' # Augmentation charge differece, is spin polarized # Note that the augmentation charge is not a list, since they # are needed only for CHGCAR files which store only a single # image. if filename is not None: self.read(filename) def is_spin_polarized(self): if len(self.chgdiff) > 0: return True return False def _read_chg(self, fobj, chg, volume): """Read charge from file object Utility method for reading the actual charge density (or charge density difference) from a file object. On input, the file object must be at the beginning of the charge block, on output the file position will be left at the end of the block. The chg array must be of the correct dimensions. """ # VASP writes charge density as # WRITE(IU,FORM) (((C(NX,NY,NZ),NX=1,NGXC),NY=1,NGYZ),NZ=1,NGZC) # Fortran nested implied do loops; innermost index fastest # First, just read it in for zz in range(chg.shape[2]): for yy in range(chg.shape[1]): chg[:, yy, zz] = np.fromfile(fobj, count=chg.shape[0], sep=' ') chg /= volume def read(self, filename='CHG'): """Read CHG or CHGCAR file. If CHG contains charge density from multiple steps all the steps are read and stored in the object. By default VASP writes out the charge density every 10 steps. chgdiff is the difference between the spin up charge density and the spin down charge density and is thus only read for a spin-polarized calculation. aug is the PAW augmentation charges found in CHGCAR. These are not parsed, they are just stored as a string so that they can be written again to a CHGCAR format file. """ import ase.io.vasp as aiv f = open(filename) self.atoms = [] self.chg = [] self.chgdiff = [] self.aug = '' self.augdiff = '' while True: try: atoms = aiv.read_vasp(f) except (IOError, ValueError, IndexError): # Probably an empty line, or we tried to read the # augmentation occupancies in CHGCAR break f.readline() ngr = f.readline().split() ng = (int(ngr[0]), int(ngr[1]), int(ngr[2])) chg = np.empty(ng) self._read_chg(f, chg, atoms.get_volume()) self.chg.append(chg) self.atoms.append(atoms) # Check if the file has a spin-polarized charge density part, and # if so, read it in. fl = f.tell() # First check if the file has an augmentation charge part (CHGCAR # file.) line1 = f.readline() if line1 == '': break elif line1.find('augmentation') != -1: augs = [line1] while True: line2 = f.readline() if line2.split() == ngr: self.aug = ''.join(augs) augs = [] chgdiff = np.empty(ng) self._read_chg(f, chgdiff, atoms.get_volume()) self.chgdiff.append(chgdiff) elif line2 == '': break else: augs.append(line2) if len(self.aug) == 0: self.aug = ''.join(augs) augs = [] else: self.augdiff = ''.join(augs) augs = [] elif line1.split() == ngr: chgdiff = np.empty(ng) self._read_chg(f, chgdiff, atoms.get_volume()) self.chgdiff.append(chgdiff) else: f.seek(fl) f.close() def _write_chg(self, fobj, chg, volume, format='chg'): """Write charge density Utility function similar to _read_chg but for writing. """ # Make a 1D copy of chg, must take transpose to get ordering right chgtmp = chg.T.ravel() # Multiply by volume chgtmp = chgtmp * volume # Must be a tuple to pass to string conversion chgtmp = tuple(chgtmp) # CHG format - 10 columns if format.lower() == 'chg': # Write all but the last row for ii in range((len(chgtmp) - 1) // 10): fobj.write(' %#11.5G %#11.5G %#11.5G %#11.5G %#11.5G\ %#11.5G %#11.5G %#11.5G %#11.5G %#11.5G\n' % chgtmp[ii * 10:(ii + 1) * 10] ) # If the last row contains 10 values then write them without a # newline if len(chgtmp) % 10 == 0: fobj.write(' %#11.5G %#11.5G %#11.5G %#11.5G %#11.5G' ' %#11.5G %#11.5G %#11.5G %#11.5G %#11.5G' % chgtmp[len(chgtmp) - 10:len(chgtmp)]) # Otherwise write fewer columns without a newline else: for ii in range(len(chgtmp) % 10): fobj.write((' %#11.5G') % chgtmp[len(chgtmp) - len(chgtmp) % 10 + ii]) # Other formats - 5 columns else: # Write all but the last row for ii in range((len(chgtmp) - 1) // 5): fobj.write(' %17.10E %17.10E %17.10E %17.10E %17.10E\n' % chgtmp[ii * 5:(ii + 1) * 5]) # If the last row contains 5 values then write them without a # newline if len(chgtmp) % 5 == 0: fobj.write(' %17.10E %17.10E %17.10E %17.10E %17.10E' % chgtmp[len(chgtmp) - 5:len(chgtmp)]) # Otherwise write fewer columns without a newline else: for ii in range(len(chgtmp) % 5): fobj.write((' %17.10E') % chgtmp[len(chgtmp) - len(chgtmp) % 5 + ii]) # Write a newline whatever format it is fobj.write('\n') # Clean up del chgtmp def write(self, filename='CHG', format=None): """Write VASP charge density in CHG format. filename: str Name of file to write to. format: str String specifying whether to write in CHGCAR or CHG format. """ import ase.io.vasp as aiv if format is None: if filename.lower().find('chgcar') != -1: format = 'chgcar' elif filename.lower().find('chg') != -1: format = 'chg' elif len(self.chg) == 1: format = 'chgcar' else: format = 'chg' f = open(filename, 'w') for ii, chg in enumerate(self.chg): if format == 'chgcar' and ii != len(self.chg) - 1: continue # Write only the last image for CHGCAR aiv.write_vasp(f, self.atoms[ii], direct=True, long_format=False) f.write('\n') for dim in chg.shape: f.write(' %4i' % dim) f.write('\n') vol = self.atoms[ii].get_volume() self._write_chg(f, chg, vol, format) if format == 'chgcar': f.write(self.aug) if self.is_spin_polarized(): if format == 'chg': f.write('\n') for dim in chg.shape: f.write(' %4i' % dim) self._write_chg(f, self.chgdiff[ii], vol, format) if format == 'chgcar': f.write('\n') f.write(self.augdiff) if format == 'chg' and len(self.chg) > 1: f.write('\n') f.close() class VaspDos(object): """Class for representing density-of-states produced by VASP The energies are in property self.energy Site-projected DOS is accesible via the self.site_dos method. Total and integrated DOS is accessible as numpy.ndarray's in the properties self.dos and self.integrated_dos. If the calculation is spin polarized, the arrays will be of shape (2, NDOS), else (1, NDOS). The self.efermi property contains the currently set Fermi level. Changing this value shifts the energies. """ def __init__(self, doscar='DOSCAR', efermi=0.0): """Initialize""" self._efermi = 0.0 self.read_doscar(doscar) self.efermi = efermi # we have determine the resort to correctly map ase atom index to the # POSCAR. self.sort = [] self.resort = [] if os.path.isfile('ase-sort.dat'): file = open('ase-sort.dat', 'r') lines = file.readlines() file.close() for line in lines: data = line.split() self.sort.append(int(data[0])) self.resort.append(int(data[1])) def _set_efermi(self, efermi): """Set the Fermi level.""" ef = efermi - self._efermi self._efermi = efermi self._total_dos[0, :] = self._total_dos[0, :] - ef try: self._site_dos[:, 0, :] = self._site_dos[:, 0, :] - ef except IndexError: pass def _get_efermi(self): return self._efermi efermi = property(_get_efermi, _set_efermi, None, "Fermi energy.") def _get_energy(self): """Return the array with the energies.""" return self._total_dos[0, :] energy = property(_get_energy, None, None, "Array of energies") def site_dos(self, atom, orbital): """Return an NDOSx1 array with dos for the chosen atom and orbital. atom: int Atom index orbital: int or str Which orbital to plot If the orbital is given as an integer: If spin-unpolarized calculation, no phase factors: s = 0, p = 1, d = 2 Spin-polarized, no phase factors: s-up = 0, s-down = 1, p-up = 2, p-down = 3, d-up = 4, d-down = 5 If phase factors have been calculated, orbitals are s, py, pz, px, dxy, dyz, dz2, dxz, dx2 double in the above fashion if spin polarized. """ # Correct atom index for resorting if we need to. This happens when the # ase-sort.dat file exists, and self.resort is not empty. if self.resort: atom = self.resort[atom] # Integer indexing for orbitals starts from 1 in the _site_dos array # since the 0th column contains the energies if isinstance(orbital, int): return self._site_dos[atom, orbital + 1, :] n = self._site_dos.shape[1] if n == 4: norb = {'s': 1, 'p': 2, 'd': 3} elif n == 7: norb = {'s+': 1, 's-up': 1, 's-': 2, 's-down': 2, 'p+': 3, 'p-up': 3, 'p-': 4, 'p-down': 4, 'd+': 5, 'd-up': 5, 'd-': 6, 'd-down': 6} elif n == 10: norb = {'s': 1, 'py': 2, 'pz': 3, 'px': 4, 'dxy': 5, 'dyz': 6, 'dz2': 7, 'dxz': 8, 'dx2': 9} elif n == 19: norb = {'s+': 1, 's-up': 1, 's-': 2, 's-down': 2, 'py+': 3, 'py-up': 3, 'py-': 4, 'py-down': 4, 'pz+': 5, 'pz-up': 5, 'pz-': 6, 'pz-down': 6, 'px+': 7, 'px-up': 7, 'px-': 8, 'px-down': 8, 'dxy+': 9, 'dxy-up': 9, 'dxy-': 10, 'dxy-down': 10, 'dyz+': 11, 'dyz-up': 11, 'dyz-': 12, 'dyz-down': 12, 'dz2+': 13, 'dz2-up': 13, 'dz2-': 14, 'dz2-down': 14, 'dxz+': 15, 'dxz-up': 15, 'dxz-': 16, 'dxz-down': 16, 'dx2+': 17, 'dx2-up': 17, 'dx2-': 18, 'dx2-down': 18} return self._site_dos[atom, norb[orbital.lower()], :] def _get_dos(self): if self._total_dos.shape[0] == 3: return self._total_dos[1, :] elif self._total_dos.shape[0] == 5: return self._total_dos[1:3, :] dos = property(_get_dos, None, None, 'Average DOS in cell') def _get_integrated_dos(self): if self._total_dos.shape[0] == 3: return self._total_dos[2, :] elif self._total_dos.shape[0] == 5: return self._total_dos[3:5, :] integrated_dos = property(_get_integrated_dos, None, None, 'Integrated average DOS in cell') def read_doscar(self, fname="DOSCAR"): """Read a VASP DOSCAR file""" f = open(fname) natoms = int(f.readline().split()[0]) [f.readline() for nn in range(4)] # Skip next 4 lines. # First we have a block with total and total integrated DOS ndos = int(f.readline().split()[2]) dos = [] for nd in range(ndos): dos.append(np.array([float(x) for x in f.readline().split()])) self._total_dos = np.array(dos).T # Next we have one block per atom, if INCAR contains the stuff # necessary for generating site-projected DOS dos = [] for na in range(natoms): line = f.readline() if line == '': # No site-projected DOS break ndos = int(line.split()[2]) line = f.readline().split() cdos = np.empty((ndos, len(line))) cdos[0] = np.array(line) for nd in range(1, ndos): line = f.readline().split() cdos[nd] = np.array([float(x) for x in line]) dos.append(cdos.T) self._site_dos = np.array(dos) class xdat2traj: def __init__(self, trajectory=None, atoms=None, poscar=None, xdatcar=None, sort=None, calc=None): """ trajectory is the name of the file to write the trajectory to poscar is the name of the poscar file to read. Default: POSCAR """ if not poscar: self.poscar = 'POSCAR' else: self.poscar = poscar if not atoms: # This reads the atoms sorted the way VASP wants self.atoms = ase.io.read(self.poscar, format='vasp') resort_reqd = True else: # Assume if we pass atoms that it is sorted the way we want self.atoms = atoms resort_reqd = False if not calc: self.calc = Vasp() else: self.calc = calc if not sort: if not hasattr(self.calc, 'sort'): self.calc.sort = list(range(len(self.atoms))) else: self.calc.sort = sort self.calc.resort = list(range(len(self.calc.sort))) for n in range(len(self.calc.resort)): self.calc.resort[self.calc.sort[n]] = n if not xdatcar: self.xdatcar = 'XDATCAR' else: self.xdatcar = xdatcar if not trajectory: self.trajectory = 'out.traj' else: self.trajectory = trajectory self.out = ase.io.trajectory.Trajectory(self.trajectory, mode='w') if resort_reqd: self.atoms = self.atoms[self.calc.resort] self.energies = self.calc.read_energy(all=True)[1] # Forces are read with the atoms sorted using resort self.forces = self.calc.read_forces(self.atoms, all=True) def convert(self): lines = open(self.xdatcar).readlines() if len(lines[7].split()) == 0: del(lines[0:8]) elif len(lines[5].split()) == 0: del(lines[0:6]) elif len(lines[4].split()) == 0: del(lines[0:5]) elif lines[7].split()[0] == 'Direct': del(lines[0:8]) step = 0 iatom = 0 scaled_pos = [] for line in lines: if iatom == len(self.atoms): if step == 0: self.out.write_header(self.atoms[self.calc.resort]) scaled_pos = np.array(scaled_pos) # Now resort the positions to match self.atoms self.atoms.set_scaled_positions(scaled_pos[self.calc.resort]) calc = SinglePointCalculator(self.atoms, energy=self.energies[step], forces=self.forces[step]) self.atoms.set_calculator(calc) self.out.write(self.atoms) scaled_pos = [] iatom = 0 step += 1 else: if not line.split()[0] == 'Direct': iatom += 1 scaled_pos.append([float(line.split()[n]) for n in range(3)]) # Write also the last image # I'm sure there is also more clever fix... if step == 0: self.out.write_header(self.atoms[self.calc.resort]) scaled_pos = np.array(scaled_pos)[self.calc.resort] self.atoms.set_scaled_positions(scaled_pos) calc = SinglePointCalculator(self.atoms, energy=self.energies[step], forces=self.forces[step]) self.atoms.set_calculator(calc) self.out.write(self.atoms) self.out.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/calculators/vdwcorrection.py000066400000000000000000000243401316323560300263200ustar00rootroot00000000000000"""van der Waals correction schemes for DFT""" from __future__ import print_function import numpy as np from ase.units import Bohr, Hartree from ase.calculators.calculator import Calculator from ase.utils import convert_string_to_fd # dipole polarizabilities and C6 values from # X. Chu and A. Dalgarno, J. Chem. Phys. 121 (2004) 4083 # atomic units, a_0^3 vdWDB_Chu04jcp = { # Element: [alpha, C6]; units [Bohr^3, Hartree * Bohr^6] 'H': [4.5, 6.5], # [exact, Tkatchenko PRL] 'He': [1.38, 1.42], 'Li': [164, 1392], 'Be': [38, 227], 'B': [21, 99.5], 'C': [12, 46.6], 'N': [7.4, 24.2], 'O': [5.4, 15.6], 'F': [3.8, 9.52], 'Ne': [2.67, 6.20], 'Na': [163, 1518], 'Mg': [71, 626], 'Al': [60, 528], 'Si': [37, 305], 'P': [25, 185], 'S': [19.6, 134], 'Cl': [15, 94.6], 'Ar': [11.1, 64.2], 'Ca': [160, 2163], 'Sc': [120, 1383], 'Ti': [98, 1044], 'V': [84, 832], 'Cr': [78, 602], 'Mn': [63, 552], 'Fe': [56, 482], 'Co': [50, 408], 'Ni': [48, 373], 'Cu': [42, 253], 'Zn': [40, 284], 'As': [29, 246], 'Se': [25, 210], 'Br': [20, 162], 'Kr': [16.7, 130], 'Sr': [199, 3175], 'Te': [40, 445], 'I': [35, 385]} vdWDB_alphaC6 = vdWDB_Chu04jcp # dipole polarizabilities and C6 values from # V. G. Ruiz et al. Phys. Rev. Lett 108 (2012) 146103 # atomic units, a_0^3 vdWDB_Ruiz12prl = { 'Ag' : [50.6, 339], 'Au' : [36.5, 298], 'Pd' : [23.7, 158], 'Pt' : [39.7, 347], } vdWDB_alphaC6.update(vdWDB_Ruiz12prl) # C6 values and vdW radii from # S. Grimme, J Comput Chem 27 (2006) 1787-1799 vdWDB_Grimme06jcc = { # Element: [C6, R0]; units [J nm^6 mol^{-1}, Angstrom] 'H': [0.14, 1.001], 'He': [0.08, 1.012], 'Li': [1.61, 0.825], 'Be': [1.61, 1.408], 'B': [3.13, 1.485], 'C': [1.75, 1.452], 'N': [1.23, 1.397], 'O': [0.70, 1.342], 'F': [0.75, 1.287], 'Ne': [0.63, 1.243], 'Na': [5.71, 1.144], 'Mg': [5.71, 1.364], 'Al': [10.79, 1.639], 'Si': [9.23, 1.716], 'P': [7.84, 1.705], 'S': [5.57, 1.683], 'Cl': [5.07, 1.639], 'Ar': [4.61, 1.595], 'K': [10.80, 1.485], 'Ca': [10.80, 1.474], 'Sc': [10.80, 1.562], 'Ti': [10.80, 1.562], 'V': [10.80, 1.562], 'Cr': [10.80, 1.562], 'Mn': [10.80, 1.562], 'Fe': [10.80, 1.562], 'Co': [10.80, 1.562], 'Ni': [10.80, 1.562], 'Cu': [10.80, 1.562], 'Zn': [10.80, 1.562], 'Ga': [16.99, 1.650], 'Ge': [17.10, 1.727], 'As': [16.37, 1.760], 'Se': [12.64, 1.771], 'Br': [12.47, 1.749], 'Kr': [12.01, 1.727], 'Rb': [24.67, 1.628], 'Sr': [24.67, 1.606], 'Y-Cd': [24.67, 1.639], 'In': [37.32, 1.672], 'Sn': [38.71, 1.804], 'Sb': [38.44, 1.881], 'Te': [31.74, 1.892], 'I': [31.50, 1.892], 'Xe': [29.99, 1.881]} # Optimal range parameters sR for different XC functionals # to be used with the Tkatchenko-Scheffler scheme # Reference: M.A. Caro arXiv:1704.00761 (2017) sR_opt={'PBE': 0.940, 'RPBE': 0.590, 'revPBE': 0.585, 'PBEsol': 1.055, 'BLYP': 0.625, 'AM05': 0.840, 'PW91': 0.965} def get_logging_file_descriptor(calculator): if hasattr(calculator, 'log'): fd = calculator.log if hasattr(fd, 'write'): return fd if hasattr(fd, 'fd'): return fd.fd if hasattr(calculator, 'txt'): return calculator.txt class vdWTkatchenko09prl(Calculator): """vdW correction after Tkatchenko and Scheffler PRL 102 (2009) 073005.""" implemented_properties = ['energy', 'forces'] def __init__(self, hirshfeld=None, vdwradii=None, calculator=None, Rmax=10, # maximal radius for periodic calculations vdWDB_alphaC6=vdWDB_alphaC6, txt=None, sR=None): """Constructor Parameters ========== hirshfeld: the Hirshfeld partitioning object calculator: the calculator to get the PBE energy """ self.hirshfeld = hirshfeld if calculator is None: self.calculator = self.hirshfeld.get_calculator() else: self.calculator = calculator if txt is None: txt = get_logging_file_descriptor(self.calculator) self.txt = convert_string_to_fd(txt) self.vdwradii = vdwradii self.vdWDB_alphaC6 = vdWDB_alphaC6 self.Rmax = Rmax self.atoms = None if sR is None: try: xc_name = self.calculator.get_xc_functional() self.sR = sR_opt[xc_name] except KeyError: raise ValueError('Tkatchenko-Scheffler dispersion correction not implemented for %s functional' % xc_name) else: self.sR = sR self.d = 20 Calculator.__init__(self) def calculation_required(self, atoms, quantities): if self.calculator.calculation_required(atoms, quantities): return True for quantity in quantities: if quantity not in self.results: return True return False def calculate(self, atoms=None, properties=['energy'], system_changes=[]): Calculator.calculate(self, atoms, properties, system_changes) self.update(atoms, properties) def update(self, atoms=None, properties=['energy', 'forces']): if not self.calculation_required(atoms, properties): return if atoms is None: atoms = self.calculator.get_atoms() self.results['energy'] = self.calculator.get_potential_energy(atoms) self.results['forces'] = self.calculator.get_forces(atoms) self.atoms = atoms.copy() if self.vdwradii is not None: # external vdW radii vdwradii = self.vdwradii assert(len(atoms) == len(vdwradii)) else: vdwradii = [] for atom in atoms: self.vdwradii.append(vdWDB_Grimme06jcc[atom.symbol][1]) if self.hirshfeld is None: volume_ratios = [1.] * len(atoms) elif hasattr(self.hirshfeld, '__len__'): # a list assert(len(atoms) == len(self.hirshfeld)) volume_ratios = self.hirshfeld else: # should be an object self.hirshfeld.initialize() volume_ratios = self.hirshfeld.get_effective_volume_ratios() # correction for effective C6 na = len(atoms) C6eff_a = np.empty((na)) alpha_a = np.empty((na)) R0eff_a = np.empty((na)) for a, atom in enumerate(atoms): # free atom values alpha_a[a], C6eff_a[a] = self.vdWDB_alphaC6[atom.symbol] # correction for effective C6 C6eff_a[a] *= Hartree * volume_ratios[a]**2 * Bohr**6 R0eff_a[a] = vdwradii[a] * volume_ratios[a]**(1 / 3.) C6eff_aa = np.empty((na, na)) for a in range(na): for b in range(a, na): C6eff_aa[a, b] = (2 * C6eff_a[a] * C6eff_a[b] / (alpha_a[b] / alpha_a[a] * C6eff_a[a] + alpha_a[a] / alpha_a[b] * C6eff_a[b])) C6eff_aa[b, a] = C6eff_aa[a, b] # PBC pbc_c = atoms.get_pbc() cell_c = atoms.get_cell() Rcell_c = np.sqrt(np.sum(cell_c**2, axis=1)) ncells_c = np.ceil(np.where(pbc_c, 1. + self.Rmax / Rcell_c, 1)) ncells_c = np.array(ncells_c, dtype=int) positions = atoms.get_positions() EvdW = 0.0 forces = 0. * self.results['forces'] # loop over all atoms in the cell for ia, posa in enumerate(positions): # loop over all atoms in the cell (and neighbour cells for PBC) for ib, posb in enumerate(positions): # loops over neighbour cells for ix in range(-ncells_c[0] + 1, ncells_c[0]): for iy in range(-ncells_c[1] + 1, ncells_c[1]): for iz in range(-ncells_c[2] + 1, ncells_c[2]): i_c = np.array([ix, iy, iz]) diff = posb + np.dot(i_c, cell_c) - posa r2 = np.dot(diff, diff) r6 = r2**3 r = np.sqrt(r2) if r > 1.e-10 and r < self.Rmax: Edamp, Fdamp = self.damping(r, R0eff_a[ia], R0eff_a[ib], d=self.d, sR=self.sR) EvdW -= (Edamp * C6eff_aa[ia, ib] / r6) # we neglect the C6eff contribution to the # forces forces[ia] -= ((Fdamp - 6 * Edamp / r) * C6eff_aa[ia, ib] / r6 * diff / r) self.results['energy'] += EvdW / 2. # double counting self.results['forces'] += forces / 2. # double counting if self.txt: print(('\n' + self.__class__.__name__), file=self.txt) print('vdW correction: %g' % (EvdW / 2.), file=self.txt) print('Energy: %g' % self.results['energy'], file=self.txt) print('\nForces in eV/Ang:', file=self.txt) symbols = self.atoms.get_chemical_symbols() for ia, symbol in enumerate(symbols): print('%3d %-2s %10.5f %10.5f %10.5f' % ((ia, symbol) + tuple(self.results['forces'][ia])), file=self.txt) self.txt.flush() def damping(self, RAB, R0A, R0B, d=20, # steepness of the step function for PBE sR=0.94): """Damping factor. Standard values for d and sR as given in Tkatchenko and Scheffler PRL 102 (2009) 073005.""" scale = 1.0 / (sR * (R0A + R0B)) x = RAB * scale chi = np.exp(-d * (x - 1.0)) return 1.0 / (1.0 + chi), d * scale * chi / (1.0 + chi)**2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/000077500000000000000000000000001316323560300213065ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/__init__.py000066400000000000000000000000001316323560300234050ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/band_structure.py000066400000000000000000000063201316323560300247050ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.io import read from ase.geometry import crystal_structure_from_cell from ase.dft.kpoints import (get_monkhorst_pack_size_and_offset, monkhorst_pack_interpolate, bandpath) from ase.dft.band_structure import BandStructure class CLICommand: short_description = 'Plot band-structure' description = ( 'Plot result from band-structure calculation or interpolate ' 'from Monkhorst-Pack sampling to a given path (--path=PATH).') @staticmethod def add_arguments(parser): parser.add_argument('calculation', help='Path to output file(s) from calculation') parser.add_argument('-q', '--quiet', action='store_true') parser.add_argument('-k', '--path', help='Example "GXL".') parser.add_argument('-n', '--points', type=int, default=100, help='Number of points along the path ' '(default: 100)') parser.add_argument('-r', '--range', nargs=2, default=['-3', '3'], metavar=('emin', 'emax'), help='Default: "-3.0 3.0" ' '(in eV relative to Fermi level).') @staticmethod def run(args, parser): main(args, parser) def main(args, parser): atoms = read(args.calculation) cell = atoms.get_cell() calc = atoms.calc bzkpts = calc.get_bz_k_points() ibzkpts = calc.get_ibz_k_points() efermi = calc.get_fermi_level() nibz = len(ibzkpts) nspins = 1 + int(calc.get_spin_polarized()) eps = np.array([[calc.get_eigenvalues(kpt=k, spin=s) for k in range(nibz)] for s in range(nspins)]) if not args.quiet: print('Spins, k-points, bands: {}, {}, {}'.format(*eps.shape)) try: size, offset = get_monkhorst_pack_size_and_offset(bzkpts) except ValueError: path = ibzkpts else: if not args.quiet: print('Interpolating from Monkhorst-Pack grid (size, offset):') print(size, offset) if args.path is None: err = 'Please specify a path!' try: cs = crystal_structure_from_cell(cell) except ValueError: err += ('\nGPAW cannot autimatically ' 'recognize this crystal structure') else: from ase.dft.kpoints import special_paths kptpath = special_paths[cs] err += ('\nIt looks like you have a {} crystal structure.' '\nMaybe you want its special path:' ' {}'.format(cs, kptpath)) parser.error(err) bz2ibz = calc.get_bz_to_ibz_map() path = bandpath(args.path, atoms.cell, args.points)[0] icell = atoms.get_reciprocal_cell() eps = monkhorst_pack_interpolate(path, eps.transpose(1, 0, 2), icell, bz2ibz, size, offset) eps = eps.transpose(1, 0, 2) emin, emax = (float(e) for e in args.range) bs = BandStructure(atoms.cell, path, eps, reference=efermi) bs.plot(emin=emin, emax=emax) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/build.py000066400000000000000000000131621316323560300227620ustar00rootroot00000000000000import sys import numpy as np from ase.db import connect from ase.build import bulk from ase.io import read, write from ase.visualize import view from ase.build import molecule from ase.atoms import Atoms, string2symbols from ase.data import ground_state_magnetic_moments from ase.data import atomic_numbers, covalent_radii class CLICommand: short_description = 'Build an atom, molecule or bulk structure' @staticmethod def add_arguments(parser): add = parser.add_argument add('name', metavar='name/input-file') add('output', nargs='?') add('-M', '--magnetic-moment', metavar='M1,M2,...', help='Magnetic moment(s). ' 'Use "-M 1" or "-M 2.3,-2.3".') add('--modify', metavar='...', help='Modify atoms with Python statement. ' 'Example: --modify="atoms.positions[-1,2]+=0.1".') add('-V', '--vacuum', type=float, help='Amount of vacuum to add around isolated atoms ' '(in Angstrom).') add('-v', '--vacuum0', type=float, help='Deprecated. Use -V or --vacuum instead.') add('--unit-cell', help='Unit cell. Examples: "10.0" or "9,10,11" (in Angstrom).') add('--bond-length', type=float, help='Bond length of dimer in Angstrom.') add('-x', '--crystal-structure', help='Crystal structure.', choices=['sc', 'fcc', 'bcc', 'hcp', 'diamond', 'zincblende', 'rocksalt', 'cesiumchloride', 'fluorite', 'wurtzite']) add('-a', '--lattice-constant', default='', help='Lattice constant(s) in Angstrom.') add('--orthorhombic', action='store_true', help='Use orthorhombic unit cell.') add('--cubic', action='store_true', help='Use cubic unit cell.') add('-r', '--repeat', help='Repeat unit cell. Use "-r 2" or "-r 2,3,1".') add('-g', '--gui', action='store_true') add('--periodic', action='store_true') @staticmethod def run(args, parser): if args.vacuum0: parser.error('Please use -V or --vacuum instead!') if '.' in args.name: # Read from file: atoms = read(args.name) elif args.crystal_structure: atoms = build_bulk(args) else: atoms = build_molecule(args) if args.magnetic_moment: magmoms = np.array( [float(m) for m in args.magnetic_moment.split(',')]) atoms.set_initial_magnetic_moments( np.tile(magmoms, len(atoms) // len(magmoms))) if args.modify: exec(args.modify, {'atoms': atoms}) if args.repeat is not None: r = args.repeat.split(',') if len(r) == 1: r = 3 * r atoms = atoms.repeat([int(c) for c in r]) if args.gui: view(atoms) if args.output: write(args.output, atoms) elif sys.stdout.isatty(): write(args.name + '.json', atoms) else: con = connect(sys.stdout, type='json') con.write(atoms, name=args.name) def build_molecule(args): try: # Known molecule or atom? atoms = molecule(args.name) except NotImplementedError: symbols = string2symbols(args.name) if len(symbols) == 1: Z = atomic_numbers[symbols[0]] magmom = ground_state_magnetic_moments[Z] atoms = Atoms(args.name, magmoms=[magmom]) elif len(symbols) == 2: # Dimer if args.bond_length is None: b = (covalent_radii[atomic_numbers[symbols[0]]] + covalent_radii[atomic_numbers[symbols[1]]]) else: b = args.bond_length atoms = Atoms(args.name, positions=[(0, 0, 0), (b, 0, 0)]) else: raise ValueError('Unknown molecule: ' + args.name) else: if len(atoms) == 2 and args.bond_length is not None: atoms.set_distance(0, 1, args.bond_length) if args.unit_cell is None: if args.vacuum: atoms.center(vacuum=args.vacuum) else: atoms.center(about=[0, 0, 0]) else: a = [float(x) for x in args.unit_cell.split(',')] if len(a) == 1: cell = [a[0], a[0], a[0]] elif len(a) == 3: cell = a else: a, b, c, alpha, beta, gamma = a degree = np.pi / 180.0 cosa = np.cos(alpha * degree) cosb = np.cos(beta * degree) sinb = np.sin(beta * degree) cosg = np.cos(gamma * degree) sing = np.sin(gamma * degree) cell = [[a, 0, 0], [b * cosg, b * sing, 0], [c * cosb, c * (cosa - cosb * cosg) / sing, c * np.sqrt( sinb**2 - ((cosa - cosb * cosg) / sing)**2)]] atoms.cell = cell atoms.center() atoms.pbc = args.periodic return atoms def build_bulk(args): L = args.lattice_constant.replace(',', ' ').split() d = dict([(key, float(x)) for key, x in zip('ac', L)]) atoms = bulk(args.name, crystalstructure=args.crystal_structure, a=d.get('a'), c=d.get('c'), orthorhombic=args.orthorhombic, cubic=args.cubic) M, X = {'Fe': (2.3, 'bcc'), 'Co': (1.2, 'hcp'), 'Ni': (0.6, 'fcc')}.get(args.name, (None, None)) if M is not None and args.crystal_structure == X: atoms.set_initial_magnetic_moments([M] * len(atoms)) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/complete.py000077500000000000000000000074321316323560300235010ustar00rootroot00000000000000#!/usr/bin/env python3 """Bash completion for ase. Put this in your .bashrc:: complete -o default -C /path/to/ase/cli/complete.py ase or run:: $ ase completion """ from __future__ import print_function import os import sys from glob import glob def match(word, *suffixes): return [w for w in glob(word + '*') if any(w.endswith(suffix) for suffix in suffixes)] # Beginning of computer generated data: commands = { 'band-structure': ['-q', '--quiet', '-k', '--path', '-n', '--points', '-r', '--range'], 'build': ['-M', '--magnetic-moment', '--modify', '-V', '--vacuum', '-v', '--vacuum0', '--unit-cell', '--bond-length', '-x', '--crystal-structure', '-a', '--lattice-constant', '--orthorhombic', '--cubic', '-r', '--repeat', '-g', '--gui', '--periodic'], 'completion': ['-0', '--dry-run'], 'db': ['-v', '--verbose', '-q', '--quiet', '-n', '--count', '-l', '--long', '-i', '--insert-into', '-a', '--add-from-file', '-k', '--add-key-value-pairs', '-L', '--limit', '--offset', '--delete', '--delete-keys', '-y', '--yes', '--explain', '-c', '--columns', '-s', '--sort', '--cut', '-p', '--plot', '-P', '--plot-data', '--csv', '-w', '--open-web-browser', '--no-lock-file', '--analyse', '-j', '--json', '-m', '--show-metadata', '--set-metadata', '-M', '--metadata-from-python-script', '--unique'], 'eos': ['-p', '--plot', '-t', '--type'], 'find': ['-v', '--verbose', '-l', '--long', '-i', '--include', '-x', '--exclude'], 'gui': ['-n', '--image-number', '-u', '--show-unit-cell', '-r', '--repeat', '-R', '--rotations', '-o', '--output', '-g', '--graph', '-t', '--terminal', '--interpolate', '-b', '--bonds', '-s', '--scale'], 'info': ['-v', '--verbose'], 'nomad-upload': ['-t', '--token', '-n', '--do-not-save-token', '-0', '--dry-run'], 'run': ['-t', '--tag', '-p', '--parameters', '-d', '--database', '-S', '--skip', '--properties', '-f', '--maximum-force', '--constrain-tags', '-s', '--maximum-stress', '-E', '--equation-of-state', '--eos-type', '-i', '--interactive', '-c', '--collection', '--modify', '--after'], 'test': ['-c', '--calculators', '-v', '--verbose', '-q', '--quiet', '--list', '--list-calculators'], 'ulm': ['-n', '--index', '-d', '--delete', '-v', '--verbose']} # End of computer generated data def complete(word, previous, line, point): for w in line[:point - len(word)].strip().split()[1:]: if w[0].isalpha(): if w in commands: command = w break else: if word[:1] == '-': return ['-h', '--help', '--version'] return list(commands.keys()) + ['-h', '--help', '--verbose'] if word[:1] == '-': return commands[command] words = [] if command == 'db': if previous == 'db': words = match(word, '.db', '.json') elif command == 'run': if previous == 'run': from ase.calculators.calculator import names as words elif command == 'build': if previous in ['-x', '--crystal-structure']: words = ['sc', 'fcc', 'bcc', 'hcp', 'diamond', 'zincblende', 'rocksalt', 'cesiumchloride', 'fluorite', 'wurtzite'] elif command == 'test': if previous in ['-c', '--calculator']: from ase.calculators.calculator import names as words return words word, previous = sys.argv[2:] line = os.environ['COMP_LINE'] point = int(os.environ['COMP_POINT']) words = complete(word, previous, line, point) for w in words: if w.startswith(word): print(w) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/completion.py000066400000000000000000000046201316323560300240330ustar00rootroot00000000000000from __future__ import print_function import os # Path of the complete.py script: my_dir, _ = os.path.split(os.path.realpath(__file__)) filename = os.path.join(my_dir, 'complete.py') class CLICommand: short_description = 'Add tab-completion for Bash' cmd = 'complete -o default -C {} ase'.format(filename) @staticmethod def add_arguments(parser): parser.add_argument('filename', nargs='?') parser.add_argument('-0', '--dry-run', action='store_true') @staticmethod def run(args): filename = args.filename or os.path.expanduser('~/.bashrc') cmd = CLICommand.cmd print(cmd) if args.dry_run: return with open(filename) as fd: if cmd + '\n' in fd.readlines(): print('Completion script already installed!') return with open(filename, 'a') as fd: print(cmd, file=fd) def update(filename, commands): """Update commands dict. Run this when ever options are changed:: python3 -m ase.cli.complete """ import collections import textwrap from ase.utils import import_module dct = collections.defaultdict(list) class Subparser: def __init__(self, command): self.command = command def add_argument(self, *args, **kwargs): dct[command].extend(arg for arg in args if arg.startswith('-')) for command, module_name in commands: module = import_module(module_name) module.CLICommand.add_arguments(Subparser(command)) txt = 'commands = {' for command, opts in sorted(dct.items()): txt += "\n '" + command + "':\n [" txt += '\n'.join(textwrap.wrap("'" + "', '".join(opts) + "'],", width=65, break_on_hyphens=False, subsequent_indent=' ')) txt = txt[:-1] + '}\n' with open(filename) as fd: lines = fd.readlines() a = lines.index('# Beginning of computer generated data:\n') b = lines.index('# End of computer generated data\n') lines[a + 1:b] = [txt] with open(filename + '.new', 'w') as fd: print(''.join(lines), end='', file=fd) os.rename(filename + '.new', filename) os.chmod(filename, 0o775) if __name__ == '__main__': from ase.cli.main import commands update(filename, commands) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/find.py000066400000000000000000000070431316323560300226040ustar00rootroot00000000000000from __future__ import print_function import os import os.path as op import sys from ase.io import read from ase.io.formats import filetype from ase.db import connect from ase.db.core import parse_selection from ase.db.jsondb import JSONDatabase from ase.db.row import atoms2dict class CLICommand: short_description = 'Find files with atoms in them' @staticmethod def add_arguments(parser): parser.add_argument('folder', help='Folder to look in.') parser.add_argument( 'query', nargs='?', help='Examples: More than 2 hydrogens and no silver: "H>2,Ag=0". ' 'More than 1000 atoms: "natoms>1000". ' 'Slab geometry containing Cu and Ni: "pbc=TTF,Cu,Ni".') parser.add_argument('-v', '--verbose', action='store_true') parser.add_argument('-l', '--long', action='store_true', help='Show also periodic boundary conditions, ' 'chemical formula and filetype.') parser.add_argument('-i', '--include', help='Include only filenames ' 'ending with given strings. Example: ' '"-i .xyz,.traj".') parser.add_argument('-x', '--exclude', help='Exclude filenames ' 'ending with given strings. Example: ' '"-x .cif".') @staticmethod def run(args): main(args) def main(args): query = parse_selection(args.query) include = args.include.split(',') if args.include else [] exclude = args.exclude.split(',') if args.exclude else [] for path in allpaths(args.folder, include, exclude): format, row = check(path, query, args.verbose) if format: if args.long: print('{} {:10} {:15} {}' .format(''.join(str(p) for p in row.pbc.astype(int)), row.formula, format, path)) else: print(path) def allpaths(folder, include, exclude): """Generate paths.""" exclude += ['.py', '.pyc'] for dirpath, dirnames, filenames in os.walk(folder): for name in filenames: if any(name.endswith(ext) for ext in exclude): continue if include: for ext in include: if name.endswith(ext): break else: continue path = op.join(dirpath, name) yield path # Skip .git, __pycache__ and friends: dirnames[:] = (name for name in dirnames if name[0] not in '._') def check(path, query, verbose): """Check a path. Returns a (filetype, AtomsRow object) tuple. """ try: format = filetype(path, guess=False) except OSError: return '', None if format is None: return '', None if format in ['db', 'json']: db = connect(path) else: try: atoms = read(path, format=format) except Exception as x: if verbose: print(path + ':', x, file=sys.stderr) return '', None db = FakeDB(atoms) try: for row in db._select(*query): return format, row except Exception as x: if verbose: print(path + ':', x, file=sys.stderr) return '', None class FakeDB(JSONDatabase): def __init__(self, atoms): self.bigdct = {1: atoms2dict(atoms)} def _read_json(self): return self.bigdct, [1], 2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/info.py000066400000000000000000000036601316323560300226200ustar00rootroot00000000000000import platform import sys from ase.utils import import_module, FileNotFoundError from ase.io.formats import filetype, all_formats from ase.io.ulm import print_ulm_info from ase.io.bundletrajectory import print_bundletrajectory_info class CLICommand: short_description = 'Print information about files or system' @staticmethod def add_arguments(parser): parser.add_argument('filenames', nargs='*') parser.add_argument('-v', '--verbose', action='store_true') @staticmethod def run(args): if not args.filenames: print_info() return n = max(len(filename) for filename in args.filenames) + 2 for filename in args.filenames: try: format = filetype(filename) except FileNotFoundError: format = '?' description = 'No such file' else: if format and format in all_formats: description, code = all_formats[format] else: format = '?' description = '?' print('{:{}}{} ({})'.format(filename + ':', n, description, format)) if args.verbose: if format == 'traj': print_ulm_info(filename) elif format == 'bundletrajectory': print_bundletrajectory_info(filename) def print_info(): versions = [('platform', platform.platform()), ('python-' + sys.version.split()[0], sys.executable)] for name in ['ase', 'numpy', 'scipy']: try: module = import_module(name) except ImportError: versions.append((name, 'no')) else: versions.append((name + '-' + module.__version__, module.__file__.rsplit('/', 1)[0] + '/')) for a, b in versions: print('{:16}{}'.format(a, b)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/main.py000066400000000000000000000052731316323560300226130ustar00rootroot00000000000000from __future__ import print_function import argparse import sys from ase import __version__ from ase.utils import import_module commands = [ ('info', 'ase.cli.info'), ('test', 'ase.test'), ('gui', 'ase.gui.ag'), ('db', 'ase.db.cli'), ('run', 'ase.cli.run'), ('band-structure', 'ase.cli.band_structure'), ('build', 'ase.cli.build'), ('eos', 'ase.eos'), ('ulm', 'ase.io.ulm'), ('find', 'ase.cli.find'), ('nomad-upload', 'ase.cli.nomad'), ('completion', 'ase.cli.completion')] def main(prog='ase', description='ASE command line tool', version=__version__, commands=commands, hook=None, args=None): parser = argparse.ArgumentParser(prog=prog, description=description) parser.add_argument('--version', action='version', version='%(prog)s-{}'.format(version)) parser.add_argument('-T', '--traceback', action='store_true') subparsers = parser.add_subparsers(title='Sub-commands', dest='command') subparser = subparsers.add_parser('help', description='Help', help='Help for sub-command') subparser.add_argument('helpcommand', nargs='?') functions = {} parsers = {} for command, module_name in commands: cmd = import_module(module_name).CLICommand subparser = subparsers.add_parser( command, help=cmd.short_description, description=getattr(cmd, 'description', cmd.short_description)) cmd.add_arguments(subparser) functions[command] = cmd.run parsers[command] = subparser if hook: args = hook(parser) else: args = parser.parse_args(args) if args.command == 'help': if args.helpcommand is None: parser.print_help() else: parsers[args.helpcommand].print_help() elif args.command is None: parser.print_usage() else: f = functions[args.command] try: if f.__code__.co_argcount == 1: f(args) else: f(args, parsers[args.command]) except KeyboardInterrupt: pass except Exception as x: if args.traceback: raise else: print('{}: {}'.format(x.__class__.__name__, x), file=sys.stderr) print('To get a full traceback, use: {} -T {} ...' .format(prog, args.command), file=sys.stderr) def old(): cmd = sys.argv[0].split('-')[-1] print('Please use "ase {cmd}" instead of "ase-{cmd}"'.format(cmd=cmd)) sys.argv[:1] = ['ase', cmd] main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/nomad.py000066400000000000000000000032171316323560300227610ustar00rootroot00000000000000from __future__ import print_function import os import os.path as op import subprocess from ase.utils import FileNotFoundError class CLICommand: short_description = 'Upload files to NOMAD' @staticmethod def add_arguments(parser): parser.add_argument('folders', nargs='+', metavar='folder') parser.add_argument('-t', '--token') parser.add_argument('-n', '--do-not-save-token', action='store_true') parser.add_argument('-0', '--dry-run', action='store_true') @staticmethod def run(args): dotase = op.expanduser('~/.ase') tokenfile = op.join(dotase, 'nomad-token') if args.token: token = args.token else: try: with open(tokenfile) as fd: token = fd.readline().strip() except FileNotFoundError: print('Could not find token!') return cmd = ('tar cf - {} | ' 'curl -XPUT -# -HX-Token:{} ' '-N -F file=@- http://nomad-repository.eu:8000 | ' 'xargs echo').format(' '.join(args.folders), token) if args.dry_run: print(cmd) else: subprocess.check_call(cmd, shell=True) if args.token and not args.do_not_save_token: msg = 'Should I save your token for later use? (yes/No): ' if input(msg).lower() == 'yes': if not op.isdir(dotase): os.mkdir(dotase) with open(tokenfile, 'w') as fd: print(token, file=fd) os.chmod(tokenfile, 0o600) print('Wrote token to', tokenfile) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cli/run.py000066400000000000000000000266051316323560300224750ustar00rootroot00000000000000from __future__ import division, print_function import sys import os import pickle import tempfile import time import traceback import numpy as np from ase.io import read from ase.parallel import world from ase.utils import devnull from ase.constraints import FixAtoms, UnitCellFilter from ase.optimize import LBFGS from ase.io.trajectory import Trajectory from ase.eos import EquationOfState from ase.calculators.calculator import get_calculator, names as calcnames from ase.calculators.calculator import PropertyNotImplementedError import ase.db as db class CLICommand: short_description = "Run calculation with one of ASE's calculators" description = short_description + ': ' + ', '.join(calcnames) + '.' @staticmethod def add_arguments(parser): parser.add_argument('calculator') CLICommand.add_more_arguments(parser) @staticmethod def add_more_arguments(parser): add = parser.add_argument add('names', nargs='*') add('-t', '--tag', help='String tag added to filenames.') add('-p', '--parameters', default='', metavar='key=value,...', help='Comma-separated key=value pairs of ' + 'calculator specific parameters.') add('-d', '--database', help='Use a filename with a ".db" extension for a sqlite3 ' + 'database or a ".json" extension for a simple json database. ' + 'Default is no database') add('-S', '--skip', action='store_true', help='Skip calculations already done.') add('--properties', default='efsdMm', help='Default value is "efsdMm" meaning calculate energy, ' + 'forces, stress, dipole moment, total magnetic moment and ' + 'atomic magnetic moments.') add('-f', '--maximum-force', type=float, help='Relax internal coordinates.') add('--constrain-tags', metavar='T1,T2,...', help='Constrain atoms with tags T1, T2, ...') add('-s', '--maximum-stress', type=float, help='Relax unit-cell and internal coordinates.') add('-E', '--equation-of-state', help='Use "-E 5,2.0" for 5 lattice constants ranging from ' '-2.0 %% to +2.0 %%.') add('--eos-type', default='sjeos', help='Selects the type of eos.') add('-i', '--interactive', action='store_true') add('-c', '--collection') add('--modify', metavar='...', help='Modify atoms with Python statement. ' + 'Example: --modify="atoms.positions[-1,2]+=0.1".') add('--after', help='Perform operation after calculation. ' + 'Example: --after="atoms.calc.write(...)"') @staticmethod def run(args): runner = Runner() runner.parse(args) if runner.errors: sys.exit(runner.errors) interactive_script = """ import os import pickle if "PYTHONSTARTUP" in os.environ: exec(open(os.environ["PYTHONSTARTUP"]).read()) from ase.cli.run import Runner args = pickle.loads({!r}) atoms = Runner().parse(args, True) """ class Runner: def __init__(self): self.db = None self.args = None self.errors = 0 self.names = [] self.calculator_name = None if world.rank == 0: self.logfile = sys.stdout else: self.logfile = devnull def parse(self, args, interactive=False): if not interactive and args.interactive: fd = tempfile.NamedTemporaryFile('w') fd.write(interactive_script.format(pickle.dumps(args, protocol=0))) fd.flush() os.system('python3 -i ' + fd.name) return self.calculator_name = args.calculator self.args = args atoms = self.run() return atoms def log(self, *args, **kwargs): print(file=self.logfile, *args, **kwargs) def run(self): args = self.args if self.db is None: # Create database connection: self.db = db.connect(args.database, use_lock_file=True) self.expand(args.names) if not args.names: args.names.insert(0, '-') atoms = None for name in args.names: if atoms is not None: del atoms.calc # release resources from last calculation atoms = self.build(name) if args.modify: exec(args.modify, {'atoms': atoms, 'np': np}) if name == '-': name = atoms.info['key_value_pairs']['name'] skip = False id = None if args.skip: id = self.db.reserve(name=name) if id is None: skip = True if not skip: self.set_calculator(atoms, name) tstart = time.time() try: self.log('Running:', name) data = self.calculate(atoms, name) except KeyboardInterrupt: raise except Exception: self.log(name, 'FAILED') traceback.print_exc(file=self.logfile) tstop = time.time() data = {'time': tstop - tstart} self.errors += 1 else: tstop = time.time() data['time'] = tstop - tstart self.db.write(atoms, name=name, data=data) if id: del self.db[id] return atoms def calculate(self, atoms, name): args = self.args data = {} if args.maximum_force or args.maximum_stress: data = self.optimize(atoms, name) if args.equation_of_state: data.update(self.eos(atoms, name)) data.update(self.calculate_once(atoms, name)) if args.after: exec(args.after, {'atoms': atoms, 'data': data}) return data def expand(self, names): if not self.names and self.args.collection: con = db.connect(self.args.collection) self.names = [dct.id for dct in con.select()] if not names: names[:] = self.names return if not self.names: return i = 0 while i < len(names): name = names[i] if name.count('-') == 1: s1, s2 = name.split('-') if s1 in self.names and s2 in self.names: j1 = self.names.index(s1) j2 = self.names.index(s2) names[i:i + 1] = self.names[j1:j2 + 1] i += j2 - j1 i += 1 def build(self, name): if name == '-': con = db.connect(sys.stdin, 'json') return con.get_atoms(add_additional_information=True) elif self.args.collection: con = db.connect(self.args.collection) return con.get_atoms(name) else: atoms = read(name) if isinstance(atoms, list): assert len(atoms) == 1 atoms = atoms[0] return atoms def set_calculator(self, atoms, name): cls = get_calculator(self.calculator_name) parameters = str2dict(self.args.parameters) if getattr(cls, 'nolabel', False): atoms.calc = cls(**parameters) else: atoms.calc = cls(label=self.get_filename(name), **parameters) def calculate_once(self, atoms, name): args = self.args for p in args.properties or 'efsdMm': property, method = {'e': ('energy', 'get_potential_energy'), 'f': ('forces', 'get_forces'), 's': ('stress', 'get_stress'), 'd': ('dipole', 'get_dipole_moment'), 'M': ('magmom', 'get_magnetic_moment'), 'm': ('magmoms', 'get_magnetic_moments')}[p] try: getattr(atoms, method)() except PropertyNotImplementedError: pass data = {} return data def optimize(self, atoms, name): args = self.args if args.constrain_tags: tags = [int(t) for t in args.constrain_tags.split(',')] mask = [t in tags for t in atoms.get_tags()] atoms.constraints = FixAtoms(mask=mask) trajectory = Trajectory(self.get_filename(name, 'traj'), 'w', atoms) if args.maximum_stress: optimizer = LBFGS(UnitCellFilter(atoms), logfile=self.logfile) fmax = args.maximum_stress else: optimizer = LBFGS(atoms, logfile=self.logfile) fmax = args.maximum_force optimizer.attach(trajectory) optimizer.run(fmax=fmax) data = {} if hasattr(optimizer, 'force_calls'): data['force_calls'] = optimizer.force_calls return data def eos(self, atoms, name): args = self.args traj = Trajectory(self.get_filename(name, 'traj'), 'w', atoms) N, eps = args.equation_of_state.split(',') N = int(N) eps = float(eps) / 100 strains = np.linspace(1 - eps, 1 + eps, N) v1 = atoms.get_volume() volumes = strains**3 * v1 energies = [] cell1 = atoms.cell for s in strains: atoms.set_cell(cell1 * s, scale_atoms=True) energies.append(atoms.get_potential_energy()) traj.write(atoms) traj.close() eos = EquationOfState(volumes, energies, args.eos_type) v0, e0, B = eos.fit() atoms.set_cell(cell1 * (v0 / v1)**(1 / 3), scale_atoms=True) data = {'volumes': volumes, 'energies': energies, 'fitted_energy': e0, 'fitted_volume': v0, 'bulk_modulus': B, 'eos_type': args.eos_type} return data def get_filename(self, name=None, ext=None): if name is None: if self.args.tag is None: filename = 'ase' else: filename = self.args.tag else: if '.' in name: name = name.rsplit('.', 1)[0] if self.args.tag is None: filename = name else: filename = name + '-' + self.args.tag if ext: filename += '.' + ext return filename def str2dict(s, namespace={}, sep='='): """Convert comma-separated key=value string to dictionary. Examples: >>> str2dict('xc=PBE,nbands=200,parallel={band:4}') {'xc': 'PBE', 'nbands': 200, 'parallel': {'band': 4}} >>> str2dict('a=1.2,b=True,c=ab,d=1,2,3,e={f:42,g:cd}') {'a': 1.2, 'c': 'ab', 'b': True, 'e': {'g': 'cd', 'f': 42}, 'd': (1, 2, 3)} """ def myeval(value): try: value = eval(value, namespace) except (NameError, SyntaxError): pass return value dct = {} s = (s + ',').split(sep) for i in range(len(s) - 1): key = s[i] m = s[i + 1].rfind(',') value = s[i + 1][:m] if value[0] == '{': assert value[-1] == '}' value = str2dict(value[1:-1], namespace, ':') elif value[0] == '(': assert value[-1] == ')' value = [myeval(t) for t in value[1:-1].split(',')] else: value = myeval(value) dct[key] = value s[i + 1] = s[i + 1][m + 1:] return dct ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/000077500000000000000000000000001316323560300222205ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/__init__.py000066400000000000000000000011521316323560300243300ustar00rootroot00000000000000"""Module for creating clusters.""" from ase.cluster.cluster import Cluster from ase.cluster.wulff import wulff_construction from ase.cluster.cubic import SimpleCubic, BodyCenteredCubic, FaceCenteredCubic from ase.cluster.octahedron import Octahedron from ase.cluster.hexagonal import Hexagonal, HexagonalClosedPacked from ase.cluster.icosahedron import Icosahedron from ase.cluster.decahedron import Decahedron __all__ = ['Cluster', 'wulff_construction', 'SimpleCubic', 'BodyCenteredCubic', 'FaceCenteredCubic', 'Octahedron', 'Hexagonal', 'HexagonalClosedPacked', 'Icosahedron', 'Decahedron'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/base.py000066400000000000000000000105531316323560300235100ustar00rootroot00000000000000import numpy as np class ClusterBase: def get_layer_distance(self, miller, layers=1, tol=1e-9, new=True): """Returns the distance between planes defined by the given miller index. """ if new: # Create lattice sample size = np.zeros(3, int) for i, m in enumerate(miller): size[i] = np.abs(m) + 2 m = len(self.atomic_basis) p = np.zeros((size.prod() * m, 3)) for h in range(size[0]): for k in range(size[1]): for l in range(size[2]): i = h * (size[1] * size[2]) + k * size[2] + l p[m * i:m * (i + 1)] = np.dot([h, k, l] + self.atomic_basis, self.lattice_basis) # Project lattice positions on the miller direction. n = self.miller_to_direction(miller) d = np.sum(n * p, axis=1) if np.all(d < tol): # All negative incl. zero d = np.sort(np.abs(d)) reverse = True else: # Some or all positive d = np.sort(d[d > -tol]) reverse = False d = d[np.concatenate((d[1:] - d[:-1] > tol, [True]))] d = d[1:] - d[:-1] # Look for a pattern in the distances between layers. A pattern is # accepted if more than 50 % of the distances obeys it. pattern = None for i in range(len(d)): for n in range(1, (len(d) - i) // 2 + 1): if np.all(np.abs(d[i:i + n] - d[i + n:i + 2 * n]) < tol): counts = 2 for j in range(i + 2 * n, len(d), n): if np.all(np.abs(d[j:j + n] - d[i:i + n]) < tol): counts += 1 if counts * n * 1.0 / len(d) > 0.5: pattern = d[i:i + n].copy() break if pattern is not None: break if pattern is None: raise RuntimeError('Could not find layer distance for the ' + '(%i,%i,%i) surface.' % miller) if reverse: pattern = pattern[::-1] if layers < 0: pattern = -1 * pattern[::-1] layers *= -1 map = np.arange(layers - layers % 1 + 1, dtype=int) % len(pattern) return pattern[map][:-1].sum() + layers % 1 * pattern[map][-1] n = self.miller_to_direction(miller) d1 = d2 = 0.0 d = np.abs(np.sum(n * self.lattice_basis, axis=1)) mask = np.greater(d, 1e-10) if mask.sum() > 0: d1 = np.min(d[mask]) if len(self.atomic_basis) > 1: atomic_basis = np.dot(self.atomic_basis, self.lattice_basis) d = np.sum(n * atomic_basis, axis=1) s = np.sign(d) d = np.abs(d) mask = np.greater(d, 1e-10) if mask.sum() > 0: d2 = np.min(d[mask]) s2 = s[mask][np.argmin(d[mask])] if d2 > 1e-10: if s2 < 0 and d1 - d2 > 1e-10: d2 = d1 - d2 elif s2 < 0 and d2 - d1 > 1e-10: d2 = 2 * d1 - d2 elif s2 > 0 and d2 - d1 > 1e-10: d2 = d2 - d1 if np.abs(d1 - d2) < 1e-10: ld = np.array([d1]) elif np.abs(d1 - 2 * d2) < 1e-10: ld = np.array([d2]) else: assert d1 > d2, 'Something is wrong with the layer distance.' ld = np.array([d2, d1 - d2]) else: ld = np.array([d1]) if len(ld) > 1: if layers < 0: ld = np.array([-ld[1], -ld[0]]) layers *= -1 map = np.arange(layers - (layers % 1), dtype=int) % len(ld) r = ld[map].sum() + (layers % 1) * ld[np.abs(map[-1] - 1)] else: r = ld[0] * layers return r def miller_to_direction(self, miller, norm=True): """Returns the direction corresponding to a given Miller index.""" d = np.dot(miller, self.resiproc_basis) if norm: d = d / np.linalg.norm(d) return d ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/cluster.py000066400000000000000000000100361316323560300242530ustar00rootroot00000000000000import os import math import numpy as np import pickle from ase import Atoms from ase.cluster.base import ClusterBase from ase.utils import basestring class Cluster(Atoms, ClusterBase): symmetry = None surfaces = None lattice_basis = None resiproc_basis = None atomic_basis = None def copy(self): cluster = Atoms.copy(self) cluster.symmetry = self.symmetry cluster.surfaces = self.surfaces.copy() cluster.lattice_basis = self.lattice_basis.copy() cluster.atomic_basis = self.atomic_basis.copy() cluster.resiproc_basis = self.resiproc_basis.copy() return cluster def get_surfaces(self): """Returns the miller indexs of the stored surfaces of the cluster.""" if self.surfaces is not None: return self.surfaces.copy() else: return None def get_layers(self): """Return number of atomic layers in stored surfaces directions.""" layers = [] for s in self.surfaces: n = self.miller_to_direction(s) c = self.get_positions().mean(axis=0) r = np.dot(self.get_positions() - c, n).max() d = self.get_layer_distance(s, 2) l = 2 * np.round(r / d).astype(int) ls = np.arange(l - 1, l + 2) ds = np.array([self.get_layer_distance(s, i) for i in ls]) mask = (np.abs(ds - r) < 1e-10) layers.append(ls[mask][0]) return np.array(layers, int) def get_diameter(self, method='volume'): """Returns an estimate of the cluster diameter based on two different methods. method = 'volume': Returns the diameter of a sphere with the same volume as the atoms. (Default) method = 'shape': Returns the averaged diameter calculated from the directions given by the defined surfaces. """ if method == 'shape': cen = self.get_positions().mean(axis=0) pos = self.get_positions() - cen d = 0.0 for s in self.surfaces: n = self.miller_to_direction(s) r = np.dot(pos, n) d += r.max() - r.min() return d / len(self.surfaces) elif method == 'volume': V_cell = np.abs(np.linalg.det(self.lattice_basis)) N_cell = len(self.atomic_basis) N = len(self) return 2.0 * (3.0 * N * V_cell / (4.0 * math.pi * N_cell)) ** (1.0 / 3.0) else: return 0.0 # Functions to store the cluster def write(self, filename=None): if not isinstance(filename, basestring): raise Warning('You must specify a valid filename.') if os.path.isfile(filename): os.rename(filename, filename + '.bak') d = {'symmetry': self.symmetry, 'surfaces': self.surfaces, 'lattice_basis': self.lattice_basis, 'resiproc_basis': self.resiproc_basis, 'atomic_basis': self.atomic_basis, 'cell': self.get_cell(), 'pbc': self.get_pbc()} f = open(filename, 'wb') f.write('Cluster') pickle.dump(d, f) pickle.dump(self.arrays, f) f.close() def read(self, filename): if not os.path.isfile(filename): raise Warning('The file specified do not exist.') f = open(filename, 'rb') try: if f.read(len('Cluster')) != 'Cluster': raise Warning('This is not a compatible file.') d = pickle.load(f) self.arrays = pickle.load(f) except EOFError: raise Warning('Bad file.') f.close() self.symmetry = d['symmetry'] self.surfaces = d['surfaces'] self.lattice_basis = d['lattice_basis'] self.resiproc_basis = d['resiproc_basis'] self.atomic_basis = d['atomic_basis'] self.set_cell(d['cell']) self.set_pbc(d['pbc']) self.set_constraint() self.calc = None ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/compounds.py000066400000000000000000000007451316323560300246070ustar00rootroot00000000000000import numpy as np from ase.cluster.cubic import SimpleCubicFactory # The L1_2 structure is "based on FCC", but is really simple cubic # with a basis. class AuCu3Factory(SimpleCubicFactory): "A factory for creating AuCu3 (L1_2) lattices." atomic_basis = np.array([[0., 0., 0.], [0., .5, .5], [.5, 0., .5], [.5, .5, 0.]]) element_basis = [0, 1, 1, 1] AuCu3 = L1_2 = AuCu3Factory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/cubic.py000066400000000000000000000033561316323560300236660ustar00rootroot00000000000000""" Function-like objects that creates cubic clusters. """ import numpy as np from ase.data import reference_states as _refstate from ase.cluster.factory import ClusterFactory class SimpleCubicFactory(ClusterFactory): spacegroup = 221 xtal_name = 'sc' def get_lattice_constant(self): "Get the lattice constant of an element with cubic crystal structure." symmetry = _refstate[self.atomic_numbers[0]]['symmetry'] if symmetry != self.xtal_name: raise ValueError("Cannot guess the %s " % (self.xtal_name,) + "lattice constant of an element with crystal " + "structure %s." % (symmetry,)) return _refstate[self.atomic_numbers[0]]['a'] def set_basis(self): a = self.lattice_constant if not isinstance(a, (int, float)): raise ValueError("Improper lattice constant for %s crystal." % (self.xtal_name,)) self.lattice_basis = np.array([[a, 0., 0.], [0., a, 0.], [0., 0., a]]) self.resiproc_basis = self.get_resiproc_basis(self.lattice_basis) SimpleCubic = SimpleCubicFactory() class BodyCenteredCubicFactory(SimpleCubicFactory): spacegroup = 229 xtal_name = 'bcc' atomic_basis = np.array([[0., 0., 0.], [.5, .5, .5]]) BodyCenteredCubic = BodyCenteredCubicFactory() class FaceCenteredCubicFactory(SimpleCubicFactory): spacegroup = 225 xtal_name = 'fcc' atomic_basis = np.array([[0., 0., 0.], [0., .5, .5], [.5, 0., .5], [.5, .5, 0.]]) FaceCenteredCubic = FaceCenteredCubicFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/000077500000000000000000000000001316323560300231315ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/__init__.py000066400000000000000000000002771316323560300252500ustar00rootroot00000000000000import ase.cluster.data.fcc as fcc import ase.cluster.data.hcp as hcp import ase.cluster.data.au as au lattice = {'fcc': fcc.data, 'hcp': hcp.data} element = {79: au.data} # Au ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/au.py000066400000000000000000000012411316323560300241060ustar00rootroot00000000000000"""Element data - 79 Au Gold""" name = 'Gold' symbol = 'Au' symmetry = 'fcc' energy_slope = -0.090 energy_intersection = -1.537 energy_types = {1: -2.618, #bulk 2: -2.237, #100 surface 3: -2.343, #110 surface (top) or 111-111 edge 4: -2.369, #110 surface (bottom) 5: -2.352, #111 surface 6: -2.028, #100-110 edge 7: -2.215, #100-111 edge } data = {'name': name, 'symbol': symbol, 'symmetry': symmetry, 'energy_slope': energy_slope, 'energy_intersection': energy_intersection, 'energy_types': energy_types, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/fcc.py000066400000000000000000000246061316323560300242460ustar00rootroot00000000000000from __future__ import print_function """Lattice data - Face Centered Cubic""" import numpy as np from ase.cluster.data.symmetry import (get_all_symmetries, get_surface_symmetries, get_neighbor_symmetries, apply_neighbor_symmetry) # Definition of symmetries basesymmetries = [np.matrix([[-1, 0, 0], # Mirror x-axis [0, 1, 0], [0, 0, 1]]), np.matrix([[1, 0, 0], # Mirror y-axis [0, -1, 0], [0, 0, 1]]), np.matrix([[1, 0, 0], # Mirror z-axis [0, 1, 0], [0, 0, -1]]), np.matrix([[1, 0, 0], # Rotation x-axis (4-fold) [0, 0, -1], [0, 1, 0]]), np.matrix([[0, 0, -1], # Rotation y-axis (4-fold) [0, 1, 0], [1, 0, 0]]), np.matrix([[0, 1, 0], # Rotation z-axis (4-fold) [-1, 0, 0], [0, 0, 1]]), np.matrix([[0, 0, 1], # Rotation (111)-axis (3-fold) [1, 0, 0], [0, 1, 0]]), np.matrix([[0, 0, -1], # Rotation (11-1)-axis (3-fold) [1, 0, 0], [0, -1, 0]]), np.matrix([[0, 0, 1], # Rotation (1-11)-axis (3-fold) [-1, 0, 0], [0, -1, 0]]), np.matrix([[0, 0, -1], # Rotation (-111)-axis (3-fold) [-1, 0, 0], [0, 1, 0]])] symmetries = get_all_symmetries(basesymmetries, 48) # Definition of used surfaces surface_names = [(1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, -1, 0), (0, 0, 1), (0, 0, -1), (1, 1, 0), (-1, -1, 0), (1, 0, 1), (-1, 0, -1), (0, 1, 1), (0, -1, -1), (1, -1, 0), (-1, 1, 0), (1, 0, -1), (-1, 0, 1), (0, 1, -1), (0, -1, 1), (1, 1, 1), (-1, -1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (-1, 1, -1), (1, 1, -1), (-1, -1, 1)] surface_numbers = {} for i, s in enumerate(surface_names): surface_numbers[s] = i surface_count = len(surface_names) surface_mapping = {0: 1, 1: 0, 2: 3, 3: 2, 4: 5, 5: 4, 6: 7, 7: 6, 8: 9, 9: 8, 10: 11, 11: 10, 12: 13, 13: 12, 14: 15, 15: 14, 16: 17, 17: 16, 18: 19, 19: 18, 20: 21, 21: 20, 22: 23, 23: 22, 24: 25, 25: 24} surface_data = ([{'l': 1.0, 'd': 0.5}] * 6 + [{'l': 1.5, 'd': 1.0 / 4.0}] * 12 + [{'l': 1.0, 'd': 1.0 / 3.0}] * 8) surface_symmetries = get_surface_symmetries(symmetries, surface_names, surface_numbers) def surface_fitting(surfaces): for i, n1 in enumerate(np.array(surface_names)): d1 = surface_data[i]['d'] a1 = surfaces[i] * d1 for j, n2 in enumerate(np.array(surface_names)): d2 = surface_data[j]['d'] a2 = surfaces[j] * d2 nd = np.dot(n1, n2) / (np.linalg.norm(n1) * np.linalg.norm(n2)) if a2 * nd > a1: surfaces[j] = int(round(a1 / (nd * d2))) return surfaces def surface_centering(surfaces, basis='100', debug=0): if basis == '100': # Centering within the basis {[1,0,0], [0,1,0], [0,0,1]} dx = (surfaces[0] - surfaces[1]) // 2 dy = (surfaces[2] - surfaces[3]) // 2 dz = (surfaces[4] - surfaces[5]) // 2 if (dx + dy + dz) % 2 == 1: dx -= 1 if debug: print('(%i, %i, %i)' % (dx, dy, dz)) elif basis == '110': # Centering within the basis {[1,1,0], [1,0,1], [0,1,1]} dl1 = ((surfaces[6] - surfaces[7]) // 4) * 2 dl2 = ((surfaces[8] - surfaces[9]) // 4) * 2 dl3 = ((surfaces[10] - surfaces[11]) // 4) * 2 # Correction for the none orthogonality of the basis t1 = (dl1 != 0 and dl2 != 0 and dl3 == 0) t2 = (dl1 != 0 and dl2 == 0 and dl3 != 0) t3 = (dl1 != 0 and dl2 == 0 and dl3 != 0) if t1 or t2 or t3: d1 = (3 * dl1) // 2 - dl2 // 2 - dl3 // 2 d2 = (3 * dl2) // 2 - dl1 // 2 - dl3 // 2 d3 = (3 * dl3) // 2 - dl1 // 2 - dl2 // 2 else: d1, d2, d3 = 0, 0, 0 # Converting to '100' basis dx = (d1 + d2) // 2 dy = (d1 + d3) // 2 dz = (d2 + d3) // 2 if debug: print('(%i, %i, %i) -> (%i, %i, %i) -> (%i, %i, %i)' % (dl1, dl2, dl3, d1, d2, d3, dx, dy, dz)) else: dx, dy, dz = 0 s = np.array(surfaces, int) ds = np.array([- dx, dx, - dy, dy, - dz, dz, - dx - dy, dx + dy, - dx - dz, dx + dz, - dy - dz, dy + dz, - dx + dy, dx - dy, - dx + dz, dx - dz, - dy + dz, dy - dz, (-dx - dy - dz) // 2, (dx + dy + dz) // 2, (dx - dy - dz) // 2, (-dx + dy + dz) // 2, (-dx + dy - dz) // 2, (dx - dy + dz) // 2, (-dx - dy + dz) // 2, (dx + dy - dz) // 2], int) if (s + ds >= 0).all(): surfaces = s + ds return surfaces # Definition of the neighbor environment neighbor_names = [(0.5, 0.5, 0), (-0.5, -0.5, 0), (0.5, 0, 0.5), (-0.5, 0, -0.5), (0, 0.5, 0.5), (0, -0.5, -0.5), (0.5, -0.5, 0), (-0.5, 0.5, 0), (0.5, 0, -0.5), (-0.5, 0, 0.5), (0, 0.5, -0.5), (0, -0.5, 0.5)] neighbor_numbers = {} for i, n in enumerate(neighbor_names): neighbor_numbers[n] = i neighbor_positions = np.array(neighbor_names, dtype=float) neighbor_cutoff = 0.8 neighbor_count = 12 neighbor_mapping = {0: 1, 1: 0, 2: 3, 3: 2, 4: 5, 5: 4, 6: 7, 7: 6, 8: 9, 9: 8, 10: 11, 11: 10} neighbor_symmetries = get_neighbor_symmetries(symmetries, neighbor_positions, neighbor_numbers) # Definition of the atom types that is used based on the neighborlist basetype_names = [(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), (0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1), (0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1), (0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), (0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1), (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1), (0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1), (0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1), (0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0), (1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0), (0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0), (1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0), (0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1), (1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1), (0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1), ] basetype_data = [{'type': 0, 'coordination': 0, 'name': 'Free atom, Unknown'}, {'type': 1, 'coordination': 12, 'name': 'bulk'}, {'type': 2, 'coordination': 8, 'name': '100 surface'}, {'type': 3, 'coordination': 7, 'name': '110 surface (top), 111-111 edge, 110-111 edge'}, {'type': 4, 'coordination': 11, 'name': '110 surface (bottom)'}, {'type': 5, 'coordination': 9, 'name': '111 surface'}, {'type': 6, 'coordination': 6, 'name': '100-110 edge'}, {'type': 7, 'coordination': 7, 'name': '100-111 edge'}, {'type': 8, 'coordination': 6, 'name': '111-111-100 corner'}, {'type': 9, 'coordination': 4, 'name': '100 surface ad-atom'}, {'type': 10, 'coordination': 5, 'name': '110 surface ad-atom (bottom), A5 site'}, {'type': 11, 'coordination': 3, 'name': '111 surface ad-atom'}, {'type': 12, 'coordination': 9, 'name': '100 surface with ad-atom'}, {'type': 13, 'coordination': 8, 'name': '110 surface with ad-atom'}, {'type': 14, 'coordination': 10, 'name': '111 surface with ad-atom'}, {'type': 15, 'coordination': 5, 'name': 'B5 site'}, ] type_count = len(basetype_names) type_names = [] type_data = [] for i, n in enumerate(basetype_names): type_names.append(n) type_data.append(basetype_data[i]) for sym in neighbor_symmetries: new_type = apply_neighbor_symmetry(n, sym) if new_type not in type_names: type_names.append(new_type) type_data.append(basetype_data[i]) type_numbers = {} for i, n in enumerate(type_names): type_numbers[n] = i data = {'symmetries': symmetries, 'surface_names': surface_names, 'surface_numbers': surface_numbers, 'surface_data': surface_data, 'surface_count': surface_count, 'surface_mapping': surface_mapping, 'surface_symmetries': surface_symmetries, 'neighbor_positions': neighbor_positions, 'neighbor_numbers': neighbor_numbers, 'neighbor_count': neighbor_count, 'neighbor_cutoff': neighbor_cutoff, 'neighbor_mapping': neighbor_mapping, 'neighbor_symmetries': neighbor_symmetries, 'type_names': type_names, 'type_numbers': type_numbers, 'type_data': type_data, 'type_count': type_count} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/hcp.py000066400000000000000000000107141316323560300242600ustar00rootroot00000000000000"""Structure data - Hexagonal Closed Packed""" from __future__ import division import numpy as np from ase.cluster.data.symmetry import (get_all_symmetries, get_surface_symmetries, get_neighbor_symmetries, apply_neighbor_symmetry) # Definition of symmetries (in hcp basis) basesymmetries = [np.matrix([[1, 0, 0], # Mirror y-axis [0, 1, 0], [0, 0, -1]]), np.matrix([[0, 1, 0], # Rotation z-axix (3-fold) [-1, -1, 0], [0, 0, 1]]), np.matrix([[1, 0, 0], # Rotation a-axis (2-fold) [-1, -1, 0], [0, 0, -1]]), np.matrix([[-1, -1, 0], # Rotation b-axis (2-fold) [0, 1, 0], [0, 0, -1]]), np.matrix([[0, 1, 0], # Rotation ab-axis (2-fold) [1, 0, 0], [0, 0, -1]])] symmetries = get_all_symmetries(basesymmetries, 12) # Definition of surfaces surface_names = [(0, 0, 1), (0, 0, -1), # (001) (1, -1, 0), (-1, 1, 0), (2, 1, 0), (-2, -1, 0), (1, 2, 0), (-1, -2, 0), (5, -5, 3), (5, -5, -3), (-5, 5, 3), (-5, 5, -3), (5, 10, 3), (5, 10, -3), (10, 5, 3), (10, 5, -3), (-5, -10, 3), (-5, -10, -3), (-10, -5, 3), (-10, -5, -3)] surface_numbers = {} for i, s in enumerate(surface_names): surface_numbers[s] = i surface_count = len(surface_names) surface_mapping = {0: 1, 1: 0, 2: 3, 3: 2, 4: 5, 5: 4, 6: 7, 7: 6} surface_data = ([{'d': 0.5}] * 2 + [{'d': 0.5}] * 6 + [{'d': 1 / 13}] * 12) surface_symmetries = get_surface_symmetries(symmetries, surface_names, surface_numbers) # Definition of neighbor environment neighbor_names = [(1, 0, 0), (-1, 0, 0), (0, 1, 0), (0, -1, 0), (1, 1, 0), (-1, -1, 0), (1 / 3, 2 / 3, 1 / 2), (1 / 3, -1 / 3, 1 / 2), (-2 / 3, -1 / 3, 1 / 2), (1 / 3, 2 / 3, -1 / 2), (1 / 3, -1 / 3, -1 / 2), (-2 / 3, -1 / 3, -1 / 2), (2 / 3, 1 / 3, 1 / 2), (-1 / 3, -2 / 3, 1 / 2), (-1 / 3, 1 / 3, 1 / 2), (2 / 3, 1 / 3, -1 / 2), (-1 / 3, -2 / 3, -1 / 2), (-1 / 3, 1 / 3, -1 / 2)] neighbor_numbers = {} for i, n in enumerate(neighbor_names): neighbor_numbers[n] = i neighbor_positions = np.array(neighbor_names, dtype=float) neighbor_cutoff = 1.2 neighbor_count = 16 neighbor_mapping = {0: 1, 1: 0, 2: 3, 3: 2, 4: 5, 5: 4, 6: 16, 7: 17, 8: 15, 9: 13, 10: 14, 11: 12, 12: 11, 13: 9, 14: 10, 15: 8, 16: 6, 17: 7} neighbor_symmetries = get_neighbor_symmetries(symmetries, neighbor_positions, neighbor_numbers) # Definition of the atom types that is used based on the neighborlist basetype_names = [] basetype_data = [] type_count = len(basetype_names) type_names = [] type_data = [] for i, n in enumerate(basetype_names): type_names.append(n) type_data.append(basetype_data[i]) for sym in neighbor_symmetries: new_type = apply_neighbor_symmetry(n, sym) if new_type not in type_names: type_names.append(new_type) type_data.append(basetype_data[i]) type_numbers = {} for i, n in enumerate(type_names): type_numbers[n] = i # Collect all data data = {'symmetries': symmetries, 'surface_names': surface_names, 'surface_numbers': surface_numbers, 'surface_data': surface_data, 'surface_count': surface_count, 'surface_mapping': surface_mapping, 'surface_symmetries': surface_symmetries, 'neighbor_positions': neighbor_positions, 'neighbor_numbers': neighbor_numbers, 'neighbor_count': neighbor_count, 'neighbor_cutoff': neighbor_cutoff, 'neighbor_mapping': neighbor_mapping, 'neighbor_symmetries': neighbor_symmetries, 'type_names': type_names, 'type_numbers': type_numbers, 'type_data': type_data, 'type_count': type_count} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/data/symmetry.py000066400000000000000000000056341316323560300254040ustar00rootroot00000000000000import numpy as np def get_all_symmetries(symmetries=None, max=99): if symmetries is None: raise Warning('Some unique symmetries are needed to start.') symmetries_all = symmetries[:] for i, l in enumerate(symmetries): for j, m, in enumerate(symmetries): if len(symmetries_all) == max: break v = l * m exist = False for w in symmetries_all: if (v == w).all(): exist = True break if not exist: # print 'New added: %i x %i' % (i, j) symmetries_all.append(v) for i, l in enumerate(symmetries): for j, m, in enumerate(symmetries): for k, n in enumerate(symmetries): if len(symmetries_all) == max: break v = l * m * n exist = False for w in symmetries_all: if (v == w).all(): exist = True break if not exist: # print 'New added: %i x %i x %i' % (i, j, k) symmetries_all.append(v) # print 'There are %i symmetry operations.' % len(symmetries_all) return symmetries_all def get_neighbor_symmetries(symmetries=None, neighbor_positions=None, neighbor_numbers=None): if (symmetries is None or neighbor_positions is None or neighbor_numbers is None): raise Warning('Both symmetries, positions and numbers for the ' 'neighbors are needed.') neighbor_symmetries = [] for s in symmetries: neighbor_symmetry = [] for p in neighbor_positions: new_p = np.array(np.matrix(p) * s) neighbor_symmetry.append(neighbor_numbers[tuple(new_p[0])]) neighbor_symmetries.append(neighbor_symmetry) return neighbor_symmetries def get_surface_symmetries(symmetries=None, surface_names=None, surface_numbers=None): if symmetries is None or surface_names is None or surface_numbers is None: raise Warning('Both symmetries, names and numbers for the surfaces ' 'are needed.') surface_symmetries = [] for sym in symmetries: surface_symmetry = [] for s in surface_names: ns = np.array(np.matrix(s) * sym) surface_symmetry.append(surface_numbers[tuple(ns[0])]) surface_symmetries.append(surface_symmetry) return np.array(surface_symmetries, int) def apply_neighbor_symmetry(neighbors=None, symmetry=None): if neighbors is None or symmetry is None: raise Warning('Both neighbor list and symmetry list are needed.') new_neighbors = [0] * len(symmetry) for i, n in enumerate(symmetry): new_neighbors[i] = neighbors[n] return tuple(new_neighbors) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/decahedron.py000066400000000000000000000067671316323560300247060ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.data import atomic_numbers, reference_states from ase.utils import basestring def Decahedron(symbol, p, q, r, latticeconstant=None): """ Returns a cluster in the decahedra class. Prameters --------- symbol: Chemical symbol (or atomic number) of the element. p: Number of atoms on the (100) facets perpendicular to the five fold axis. q: Number of atoms on the (100) facets parallel to the five fold axis. q = 1 corresponds to no visible (100) facets. r: Depth of the Marks re-entrence at the pentagon corners. r = 0 corresponds to no re-entrence. latticeconstant (optional): The lattice constant. If not given, then it is extracted form ase.data. """ # Interpret symbol if isinstance(symbol, basestring): atomic_number = atomic_numbers[symbol] else: atomic_number = symbol # Interpret lattice constant if latticeconstant is None: if reference_states[atomic_number]['symmetry'] in ['fcc', 'bcc', 'sc']: lattice_constant = reference_states[atomic_number]['a'] else: raise NotImplementedError(("Cannot guess lattice constant of a %s element." % (reference_states[atomic_number]['symmetry'],))) else: if isinstance(latticeconstant, (int, float)): lattice_constant = latticeconstant else: raise ValueError("Lattice constant must be of type int or float.") # Check values of p, q, r if p < 1 or q < 1: raise ValueError("p and q must be greater than 0.") if r < 0: raise ValueError("r must be greater than or equal to 0.") # Defining constants t = 2.0*np.pi/5.0 b = lattice_constant/np.sqrt(2.0) a = b*np.sqrt(3.0)/2.0 verticies = a * np.array([[np.cos(np.pi/2.), np.sin(np.pi/2.), 0.], [np.cos(t*1. + np.pi/2.), np.sin(t*1. + np.pi/2.), 0.], [np.cos(t*2. + np.pi/2.), np.sin(t*2. + np.pi/2.), 0.], [np.cos(t*3. + np.pi/2.), np.sin(t*3. + np.pi/2.), 0.], [np.cos(t*4. + np.pi/2.), np.sin(t*4. + np.pi/2.), 0.]]) # Number of atoms on the five fold axis and a nice constant h = p + q + 2*r - 1 g = h - q + 1 # p + 2*r positions = [] # Make the five fold axis for j in range(h): pos = np.array([0.0, 0.0, j*b - (h-1)*b/2.0]) positions.append(pos) # Make pentagon rings around the five fold axis for n in range(1, h): # Condition for (100)-planes if n < g: for m in range(5): v1 = verticies[m-1] v2 = verticies[m] for i in range(n): # Condition for marks re-entrence if n - i < g - r and i < g - r: for j in range(h-n): pos = (n-i)*v1 + i*v2 pos += np.array([0.0, 0.0, j*b - (h-n-1)*b/2.0]) positions.append(pos) # Fit the cell, so it only just consist the atoms min = np.zeros(3) max = np.zeros(3) axes = np.array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) for i in range(3): r = np.dot(positions, axes[i]) min[i] = r.min() max[i] = r.max() cell = max - min positions = np.array(positions) - min symbols = [atomic_number] * len(positions) return Atoms(symbols=symbols, positions=positions, cell=cell) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/factory.py000066400000000000000000000211321316323560300242400ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.data import atomic_numbers as ref_atomic_numbers from ase.spacegroup import Spacegroup from ase.cluster.base import ClusterBase from ase.cluster.cluster import Cluster from ase.utils import basestring class ClusterFactory(ClusterBase): directions = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] atomic_basis = np.array([[0., 0., 0.]]) element_basis = None Cluster = Cluster # Make it possible to change the class of the object returned. def __call__(self, symbols, surfaces, layers, latticeconstant=None, center=None, vacuum=0.0, debug=0): self.debug = debug # Interpret symbol self.set_atomic_numbers(symbols) # Interpret lattice constant if latticeconstant is None: if self.element_basis is None: self.lattice_constant = self.get_lattice_constant() else: raise ValueError("A lattice constant must be specified for a compound") else: self.lattice_constant = latticeconstant self.set_basis() if self.debug: print("Lattice constant(s):", self.lattice_constant) print("Lattice basis:\n", self.lattice_basis) print("Resiprocal basis:\n", self.resiproc_basis) print("Atomic basis:\n", self.atomic_basis) self.set_surfaces_layers(surfaces, layers) self.set_lattice_size(center) if self.debug: print("Center position:", self.center.round(2)) print("Base lattice size:", self.size) cluster = self.make_cluster(vacuum) cluster.symmetry = self.xtal_name cluster.surfaces = self.surfaces.copy() cluster.lattice_basis = self.lattice_basis.copy() cluster.atomic_basis = self.atomic_basis.copy() cluster.resiproc_basis = self.resiproc_basis.copy() return cluster def make_cluster(self, vacuum): # Make the base crystal by repeating the unit cell size = np.array(self.size) translations = np.zeros((size.prod(), 3)) for h in range(size[0]): for k in range(size[1]): for l in range(size[2]): i = h * (size[1] * size[2]) + k * size[2] + l translations[i] = np.dot([h, k, l], self.lattice_basis) atomic_basis = np.dot(self.atomic_basis, self.lattice_basis) positions = np.zeros((len(translations) * len(atomic_basis), 3)) numbers = np.zeros(len(positions)) n = len(atomic_basis) for i, trans in enumerate(translations): positions[n*i:n*(i+1)] = atomic_basis + trans numbers[n*i:n*(i+1)] = self.atomic_numbers # Remove all atoms that is outside the defined surfaces for s, l in zip(self.surfaces, self.layers): n = self.miller_to_direction(s) rmax = self.get_layer_distance(s, l + 0.1) r = np.dot(positions - self.center, n) mask = np.less(r, rmax) if self.debug > 1: print("Cutting %s at %i layers ~ %.3f A" % (s, l, rmax)) positions = positions[mask] numbers = numbers[mask] # Fit the cell, so it only just consist the atoms min = np.zeros(3) max = np.zeros(3) for i in range(3): v = self.directions[i] r = np.dot(positions, v) min[i] = r.min() max[i] = r.max() cell = max - min + vacuum positions = positions - min + vacuum / 2.0 self.center = self.center - min + vacuum / 2.0 return self.Cluster(symbols=numbers, positions=positions, cell=cell) def set_atomic_numbers(self, symbols): "Extract atomic number from element" # The types that can be elements: integers and strings atomic_numbers = [] if self.element_basis is None: if isinstance(symbols, basestring): atomic_numbers.append(ref_atomic_numbers[symbols]) elif isinstance(symbols, int): atomic_numbers.append(symbols) else: raise TypeError("The symbol argument must be a " + "string or an atomic number.") element_basis = [0] * len(self.atomic_basis) else: if isinstance(symbols, (list, tuple)): nsymbols = len(symbols) else: nsymbols = 0 nelement_basis = max(self.element_basis) + 1 if nsymbols != nelement_basis: raise TypeError("The symbol argument must be a sequence " + "of length %d" % (nelement_basis,) + " (one for each kind of lattice position") for s in symbols: if isinstance(s, basestring): atomic_numbers.append(ref_atomic_numbers[s]) elif isinstance(s, int): atomic_numbers.append(s) else: raise TypeError("The symbol argument must be a " + "string or an atomic number.") element_basis = self.element_basis self.atomic_numbers = [atomic_numbers[n] for n in element_basis] assert len(self.atomic_numbers) == len(self.atomic_basis) def set_lattice_size(self, center): if center is None: offset = np.zeros(3) else: offset = np.array(center) if (offset > 1.0).any() or (offset < 0.0).any(): raise ValueError("Center offset must lie within the lattice unit \ cell.") max = np.ones(3) min = -np.ones(3) v = np.linalg.inv(self.lattice_basis.T) for s, l in zip(self.surfaces, self.layers): n = self.miller_to_direction(s) * self.get_layer_distance(s, l) k = np.round(np.dot(v, n), 2) for i in range(3): if k[i] > 0.0: k[i] = np.ceil(k[i]) elif k[i] < 0.0: k[i] = np.floor(k[i]) if self.debug > 1: print("Spaning %i layers in %s in lattice basis ~ %s" % (l, s, k)) max[k > max] = k[k > max] min[k < min] = k[k < min] self.center = np.dot(offset - min, self.lattice_basis) self.size = (max - min + np.ones(3)).astype(int) def set_surfaces_layers(self, surfaces, layers): if len(surfaces) != len(layers): raise ValueError("Improper size of surface and layer arrays: %i != %i" % (len(surfaces), len(layers))) sg = Spacegroup(self.spacegroup) surfaces = np.array(surfaces) layers = np.array(layers) for i, s in enumerate(surfaces): s = reduce_miller(s) surfaces[i] = s surfaces_full = surfaces.copy() layers_full = layers.copy() for s, l in zip(surfaces, layers): equivalent_surfaces = sg.equivalent_reflections(s.reshape(-1, 3)) for es in equivalent_surfaces: # If the equivalent surface (es) is not in the surface list, # then append it. if not np.equal(es, surfaces_full).all(axis=1).any(): surfaces_full = np.append(surfaces_full, es.reshape(1, 3), axis=0) layers_full = np.append(layers_full, l) self.surfaces = surfaces_full.copy() self.layers = layers_full.copy() def get_resiproc_basis(self, basis): """Returns the resiprocal basis to a given lattice (crystal) basis""" k = 1 / np.dot(basis[0], cross(basis[1], basis[2])) # The same as the inversed basis matrix transposed return k * np.array([cross(basis[1], basis[2]), cross(basis[2], basis[0]), cross(basis[0], basis[1])]) # Helping functions def cross(a, b): """The cross product of two vectors.""" return np.array([a[1]*b[2] - b[1]*a[2], a[2]*b[0] - b[2]*a[0], a[0]*b[1] - b[0]*a[1]]) def GCD(a,b): """Greatest Common Divisor of a and b.""" #print "--" while a != 0: #print a,b,">", a,b = b%a,a #print a,b return b def reduce_miller(hkl): """Reduce Miller index to the lowest equivalent integers.""" hkl = np.array(hkl) old = hkl.copy() d = GCD(GCD(hkl[0], hkl[1]), hkl[2]) while d != 1: hkl = hkl // d d = GCD(GCD(hkl[0], hkl[1]), hkl[2]) if np.dot(old, hkl) > 0: return hkl else: return -hkl ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/hexagonal.py000066400000000000000000000052441316323560300245450ustar00rootroot00000000000000""" Function-like objects that creates cubic clusters. """ import numpy as np from ase.cluster.factory import ClusterFactory from ase.data import reference_states as _refstate class HexagonalFactory(ClusterFactory): spacegroup = 191 xtal_name = 'hexagonal' def get_lattice_constant(self): "Get the lattice constant of an element with cubic crystal structure." symmetry = _refstate[self.atomic_numbers[0]]['symmetry'] if symmetry != self.xtal_name: raise ValueError("Cannot guess the %s " % (self.xtal_name,) + "lattice constant of an element with crystal " + "structure %s." % (symmetry,)) return _refstate[self.atomic_numbers[0]].copy() def set_basis(self): lattice = self.lattice_constant if isinstance(lattice, dict): a = lattice['a'] try: c = lattice['c'] except KeyError: c = a * lattice['c/a'] else: if len(lattice) == 2: (a, c) = lattice else: raise ValueError("Improper lattice constants for %s crystal." % (self.xtal_name,)) self.lattice_constant = (a, c) self.lattice_basis = np.array([[a, 0., 0.], [-a/2., a*np.sqrt(3.)/2., 0.], [0., 0., c]]) self.resiproc_basis = self.get_resiproc_basis(self.lattice_basis) def set_surfaces_layers(self, surfaces, layers): for i, s in enumerate(surfaces): if len(s) == 4: (a, b, c, d) = s if a + b + c != 0: raise ValueError(("(%d,%d,%d,%d) is not a valid hexagonal Miller " + "index, as the sum of the first three numbers " + "should be zero.") % (a,b,c,d)) surfaces[i] = [a, b, d] ClusterFactory.set_surfaces_layers(self, surfaces, layers) Hexagonal = HexagonalFactory() class HexagonalClosedPackedFactory(HexagonalFactory): """A factory for creating HCP clusters.""" spacegroup = 194 xtal_name = 'hcp' atomic_basis = np.array([[0., 0., 0.], [1./3., 2./3., .5]]) HexagonalClosedPacked = HexagonalClosedPackedFactory() class GraphiteFactory(HexagonalFactory): """A factory for creating graphite clusters.""" xtal_name = "graphite" atomic_basis = np.array([[0., 0., 0.], [1./3., 2./3., 0.], [1./3., 2./3., .5], [2./3., 1./3., .5]]) Graphite = GraphiteFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/icosahedron.py000066400000000000000000000105021316323560300250660ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.data import atomic_numbers, reference_states from ase.utils import basestring def Icosahedron(symbol, noshells, latticeconstant=None): """ Returns a cluster with the icosahedra symmetry. Parameters ---------- symbol: The chemical symbol (or atomic number) of the element. noshells: The number of shells (>= 1). latticeconstant (optional): The lattice constant. If not given, then it is extracted form ase.data. """ # Interpret symbol if isinstance(symbol, basestring): atomic_number = atomic_numbers[symbol] else: atomic_number = symbol # Interpret noshells if noshells < 1: raise ValueError("The number of shells must be equal to or greater than one.") # Interpret lattice constant if latticeconstant is None: if reference_states[atomic_number]['symmetry'] in ['fcc', 'bcc', 'sc']: lattice_constant = reference_states[atomic_number]['a'] else: raise NotImplementedError(("Cannot guess lattice constant of a %s element." % (reference_states[atomic_number]['symmetry'],))) else: if isinstance(latticeconstant, (int, float)): lattice_constant = latticeconstant else: raise ValueError("Lattice constant must be of type int or float.") t = 0.5 + np.sqrt(5)/2.0 verticies = np.array([[t, 0., 1.], [t, 0., -1.], [-t, 0., 1.], [-t, 0., -1.], [1., t, 0.], [-1., t, 0.], [1., -t, 0.], [-1., -t, 0.], [0., 1., t], [0., -1., t], [0., 1., -t], [0., -1., -t]]) positions = [] tags = [] positions.append(np.zeros(3)) tags.append(1) for n in range(1, noshells): #Construct square edges (6) for k in range(0, 12, 2): v1 = verticies[k] v2 = verticies[k+1] for i in range(n+1): pos = i*v1 + (n-i)*v2 positions.append(pos) tags.append(n + 1) #Construct triangle planes (12) if n > 1: map = {0: (8, 9), 1: (10, 11), 2: (8, 9), 3: (10, 11), 4: (0, 1), 5: (2, 3), 6: (0, 1), 7: (2, 3), 8: (4, 5), 9: (6, 7), 10: (4, 5), 11: (6, 7)} for k in range(0, 12): v0 = n*verticies[k] v1 = (verticies[map[k][0]] - verticies[k]) v2 = (verticies[map[k][1]] - verticies[k]) for i in range(n): for j in range(n-i): if i == 0 and j == 0: continue pos = v0 + i*v1 + j*v2 positions.append(pos) tags.append(n + 1) #Fill missing triangle planes (8) if n > 2: map = {0: (9, 6, 8, 4,), 1: (11, 6, 10, 4), 2: (9, 7, 8, 5,), 3: (11, 7, 10, 5)} for k in range(0, 4): v0 = n*verticies[k] v1 = (verticies[map[k][0]] - verticies[k]) v2 = (verticies[map[k][1]] - verticies[k]) v3 = (verticies[map[k][2]] - verticies[k]) v4 = (verticies[map[k][3]] - verticies[k]) for i in range(1, n): for j in range(1, n-i): pos = v0 + i*v1 + j*v2 positions.append(pos) tags.append(n + 1) pos = v0 + i*v3 + j*v4 positions.append(pos) tags.append(n + 1) # Scale the positions scaling_factor = lattice_constant / np.sqrt(2*(1 + t**2)) positions = np.array(positions) * scaling_factor # Fit the cell, so it only just consist the atoms min = positions.min(axis=0) max = positions.max(axis=0) cell = max - min positions = positions - min symbols = [atomic_number] * len(positions) return Atoms(symbols=symbols, positions=positions, tags=tags, cell=cell) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/octahedron.py000066400000000000000000000034141316323560300247220ustar00rootroot00000000000000""" Function-like objects that creates cubic clusters. """ import numpy as np from ase.cluster.cubic import FaceCenteredCubic from ase.cluster.compounds import L1_2 def Octahedron(symbol, length, cutoff=0, latticeconstant=None, alloy=False): """ Returns Face Centered Cubic clusters of the octahedral class depending on the choice of cutoff. Type Condition ---- --------- Regular octahedron cutoff = 0 Truncated octahedron cutoff > 0 Regular truncated octahedron length = 3 * cutoff + 1 Cuboctahedron length = 2 * cutoff + 1 Parameters ---------- symbol: The chemical symbol or atomic number of the element(s). length: Number of atoms on the square edges of the complete octahedron. cutoff (optional): Number of layers cut at each vertex. latticeconstant (optional): The lattice constant. If not given, then it is extracted form ase.data. alloy (optional): If true the L1_2 structure is used. Default is False. """ # Check length and cutoff if length < 2: raise ValueError("The length must be greater than one.") if cutoff < 0 or length < 2 * cutoff + 1: raise ValueError("The cutoff must fulfill: > 0 and <= (length - 1) / 2.") # Create cluster surfaces = [(1,1,1), (1,0,0)] if length % 2 == 0: center = np.array([0.5, 0.5, 0.5]) layers = [length/2, length - 1 - cutoff] else: center = np.array([0.0, 0.0, 0.0]) layers = [(length - 1)/2, length - 1 - cutoff] if not alloy: return FaceCenteredCubic(symbol, surfaces, layers, latticeconstant, center) else: return L1_2(symbol, surfaces, layers, latticeconstant, center) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/cluster/wulff.py000066400000000000000000000157251316323560300237270ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.utils import basestring delta = 1e-10 _debug = False def wulff_construction(symbol, surfaces, energies, size, structure, rounding='closest', latticeconstant=None, debug=False, maxiter=100): """Create a cluster using the Wulff construction. A cluster is created with approximately the number of atoms specified, following the Wulff construction, i.e. minimizing the surface energy of the cluster. Parameters: symbol: The chemical symbol (or atomic number) of the desired element. surfaces: A list of surfaces. Each surface is an (h, k, l) tuple or list of integers. energies: A list of surface energies for the surfaces. size: The desired number of atoms. structure: The desired crystal structure. One of the strings "fcc", "bcc", or "sc". rounding (optional): Specifies what should be done if no Wulff construction corresponds to exactly the requested number of atoms. Should be a string, either "above", "below" or "closest" (the default), meaning that the nearest cluster above or below - or the closest one - is created instead. latticeconstant (optional): The lattice constant. If not given, extracted from ase.data. debug (optional): If non-zero, information about the iteration towards the right cluster size is printed. """ global _debug _debug = debug if debug: print('Wulff: Aiming for cluster with %i atoms (%s)' % (size, rounding)) if rounding not in ['above', 'below', 'closest']: raise ValueError('Invalid rounding: %s' % rounding) # Interpret structure, if it is a string. if isinstance(structure, basestring): if structure == 'fcc': from ase.cluster.cubic import FaceCenteredCubic as structure elif structure == 'bcc': from ase.cluster.cubic import BodyCenteredCubic as structure elif structure == 'sc': from ase.cluster.cubic import SimpleCubic as structure elif structure == 'hcp': from ase.cluster.hexagonal import \ HexagonalClosedPacked as structure elif structure == 'graphite': from ase.cluster.hexagonal import Graphite as structure else: error = 'Crystal structure %s is not supported.' % structure raise NotImplementedError(error) # Check number of surfaces nsurf = len(surfaces) if len(energies) != nsurf: raise ValueError('The energies array should contain %d values.' % (nsurf,)) # Copy energies array so it is safe to modify it energies = np.array(energies) # We should check that for each direction, the surface energy plus # the energy in the opposite direction is positive. But this is # very difficult in the general case! # Before starting, make a fake cluster just to extract the # interlayer distances in the relevant directions, and use these # to "renormalize" the surface energies such that they can be used # to convert to number of layers instead of to distances. atoms = structure(symbol, surfaces, 5 * np.ones(len(surfaces), int), latticeconstant=latticeconstant) for i, s in enumerate(surfaces): d = atoms.get_layer_distance(s) energies[i] /= d # First guess a size that is not too large. wanted_size = size ** (1.0 / 3.0) max_e = max(energies) factor = wanted_size / max_e atoms, layers = make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant) if len(atoms) == 0: # Probably the cluster is very flat if debug: print('First try made an empty cluster, trying again.') factor = 1 / energies.min() atoms, layers = make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant) if len(atoms) == 0: raise RuntimeError('Failed to create a finite cluster.') # Second guess: scale to get closer. old_factor = factor old_layers = layers old_atoms = atoms factor *= (size / len(atoms))**(1.0 / 3.0) atoms, layers = make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant) if len(atoms) == 0: print('Second guess gave an empty cluster, discarding it.') atoms = old_atoms factor = old_factor layers = old_layers else: del old_atoms # Find if the cluster is too small or too large (both means perfect!) below = above = None if len(atoms) <= size: below = atoms if len(atoms) >= size: above = atoms # Now iterate towards the right cluster iter = 0 while (below is None or above is None): if len(atoms) < size: # Find a larger cluster if debug: print('Making a larger cluster.') factor = ((layers + 0.5 + delta) / energies).min() atoms, new_layers = make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant) assert (new_layers - layers).max() == 1 assert (new_layers - layers).min() >= 0 layers = new_layers else: # Find a smaller cluster if debug: print('Making a smaller cluster.') factor = ((layers - 0.5 - delta) / energies).max() atoms, new_layers = make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant) assert (new_layers - layers).max() <= 0 assert (new_layers - layers).min() == -1 layers = new_layers if len(atoms) <= size: below = atoms if len(atoms) >= size: above = atoms iter += 1 if iter == maxiter: raise RuntimeError('Runaway iteration.') if rounding == 'below': if debug: print('Choosing smaller cluster with %i atoms' % len(below)) return below elif rounding == 'above': if debug: print('Choosing larger cluster with %i atoms' % len(above)) return above else: assert rounding == 'closest' if (len(above) - size) < (size - len(below)): atoms = above else: atoms = below if debug: print('Choosing closest cluster with %i atoms' % len(atoms)) return atoms def make_atoms(symbol, surfaces, energies, factor, structure, latticeconstant): layers1 = factor * np.array(energies) layers = np.round(layers1).astype(int) atoms = structure(symbol, surfaces, layers, latticeconstant=latticeconstant) if _debug: print('Created a cluster with %i atoms: %s' % (len(atoms), str(layers))) return (atoms, layers) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/000077500000000000000000000000001316323560300230555ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/__init__.py000066400000000000000000000001741316323560300251700ustar00rootroot00000000000000from ase.collections.collection import Collection g2 = Collection('g2') s22 = Collection('s22') dcdft = Collection('dcdft') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/collection.py000066400000000000000000000045671316323560300255760ustar00rootroot00000000000000import os.path as op from ase.db.row import AtomsRow from ase.io.jsonio import read_json class Collection: """Collection of atomic configurations and associated data. Example of use: >>> from ase.collections import s22 >>> len(s22) 22 >>> s22.names[:3] ['Ammonia_dimer', 'Water_dimer', 'Formic_acid_dimer'] >>> dimer = s22['Water_dimer'] >>> dimer.get_chemical_symbols() ['O', 'H', 'H', 'O', 'H', 'H'] >>> s22.data['Ammonia_dimer'] {'cc_energy': -0.1375} >>> sum(len(atoms) for atoms in s22) 414 """ def __init__(self, name): """Create a collection lazily. Will read data from json file when needed. A collection can be iterated over to get the Atoms objects and indexed with names to get individual members. Attributes: name: str Name of collection. data: dict Data dictionary. filename: str Location of json file. names: list Names of configurations in the collection. """ self.name = name self._names = [] self._systems = {} self._data = {} self.filename = op.join(op.dirname(__file__), name + '.json') def __getitem__(self, name): self._read() return self._systems[name].copy() def __iter__(self): for name in self.names: yield self[name] def __len__(self): return len(self.names) def __str__(self): return '<{0}-collection, {1} systems: {2}, {3}, ...>'.format( self.name, len(self), *self.names[:2]) def __repr__(self): return 'Collection({0!r})'.format(self.name) @property def names(self): self._read() return list(self._names) @property def data(self): self._read() return self._data def _read(self): if self._names: return bigdct = read_json(self.filename) for id in bigdct['ids']: dct = bigdct[id] kvp = dct['key_value_pairs'] name = str(kvp['name']) self._names.append(name) self._systems[name] = AtomsRow(dct).toatoms() del kvp['name'] self._data[name] = dict((str(k), v) for k, v in kvp.items()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/create.py000066400000000000000000000035451316323560300247010ustar00rootroot00000000000000import os import ase.db from ase import Atoms from ase.build import niggli_reduce from ase.io import read def dcdft(): """Create delta-codes-DFT collection. Data from: https://github.com/molmod/DeltaCodesDFT """ os.environ['USER'] = 'ase' con = ase.db.connect('dcdft.json') with open('history/exp.txt') as fd: lines = fd.readlines() experiment = {} for line in lines[2:-1]: words = line.split() print(words) experiment[words[0]] = [float(word) for word in words[1:]] with open('WIEN2k.txt') as fd: lines = fd.readlines() for line in lines[2:73]: words = line.split() symbol = words.pop(0) vol, B, Bp = (float(x) for x in words) filename = 'primCIFs/' + symbol + '.cif' atoms = read(filename) if symbol in ['Li', 'Na']: niggli_reduce(atoms) M = {'Fe': 2.3, 'Co': 1.2, 'Ni': 0.6, 'Cr': 1.5, 'O': 1.5, 'Mn': 2.0}.get(symbol) if M is not None: magmoms = [M] * len(atoms) if symbol in ['Cr', 'O', 'Mn']: magmoms[len(atoms) // 2:] = [-M] * (len(atoms) // 2) atoms.set_initial_magnetic_moments(magmoms) extra = {} exp = experiment.get(symbol, []) for key, val in zip(['exp_volume', 'exp_B', 'exp_Bp'], exp): extra[key] = val con.write(atoms, name=symbol, wien2k_B=B, wien2k_Bp=Bp, wien2k_volume=vol, **extra) def g2(): from ase.data.g2 import data os.environ['USER'] = 'ase' con = ase.db.connect('g2.json') for name, d in data.items(): kwargs = {} if d['magmoms']: kwargs['magmoms'] = d['magmoms'] atoms = Atoms(d['symbols'], d['positions'], **kwargs) con.write(atoms, name=name) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/dcdft.json000066400000000000000000001347441316323560300250510ustar00rootroot00000000000000{"1": { "cell": [[4.007589, 0.0, 0.0], [-2.0037944999999993, 3.470673881927075, 0.0], [3.063495606058275e-16, 5.306130038456942e-16, 5.003068]], "ctime": 17.113034515470144, "key_value_pairs": {"wien2k_B": 10.284, "wien2k_Bp": 2.71, "wien2k_volume": 17.3883, "name": "H"}, "mtime": 17.113034515470144, "numbers": [1, 1, 1, 1], "pbc": [true, true, true], "positions": [[-2.0037944288653988e-08, 2.3137825995202967, 3.37697083864], [2.0037945200379457, 1.1568912824067787, 0.8754368386400007], [2.0037945200379457, 1.156891282406779, 1.62609716136], [-2.0037944242689302e-08, 2.3137825995202967, 4.12763116136]], "unique_id": "a2e4ee0f936511c22ec15c287266bd8c", "user": "ase"}, "2": { "cell": [[2.926609, 0.0, 0.0], [-1.4633044999999993, 2.5345177409441724, 0.0], [2.926371903957746e-16, 5.068624819496886e-16, 4.779128]], "ctime": 17.113034515629202, "key_value_pairs": {"wien2k_B": 0.847, "wien2k_Bp": 7.71, "wien2k_volume": 17.7708, "name": "He"}, "mtime": 17.113034515629202, "numbers": [2, 2], "pbc": [true, true, true], "positions": [[2.9266090635818503e-08, 1.689678477065997, 3.584346], [1.46330447073391, 0.8448392638781759, 1.194782]], "unique_id": "4038bea51e54ac7f45dae49e01df0d76", "user": "ase"}, "3": { "cell": [[3.0750989187270257, 0.0, 0.0], [1.537549459363512, 2.6631137827676623, 0.0], [1.5375494593635117, 0.8877045942558872, 7.430887401563623]], "ctime": 17.11303451579263, "key_value_pairs": {"exp_B": 13.0656516899, "wien2k_B": 13.839, "wien2k_volume": 20.2191, "name": "Li", "exp_volume": 20.4119306779, "wien2k_Bp": 3.34, "exp_Bp": 3.51}, "mtime": 17.11303451579263, "numbers": [3, 3, 3], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [4.612648378090537, 2.6631137827676623, 4.953924884836499], [1.5375494593635126, 0.8877045942558864, 2.4769625167271254]], "unique_id": "34bea1ed09112b05373517be5329dc84", "user": "ase"}, "4": { "cell": [[2.262759, 0.0, 0.0], [-1.1313794999999995, 1.9596067766418728, 0.0], [2.1879288660972787e-16, 3.7896039594270493e-16, 3.573159]], "ctime": 17.11303451595434, "key_value_pairs": {"wien2k_B": 122.903, "wien2k_Bp": 3.04, "wien2k_volume": 7.9099, "name": "Be"}, "mtime": 17.11303451595434, "numbers": [4, 4], "pbc": [true, true, true], "positions": [[2.2627590439982596e-08, 1.3064045046972035, 2.67986925], [1.13137947737241, 0.6532022719446696, 0.89328975]], "unique_id": "ee74697d7f0f7f193c4dc8a376148905", "user": "ase"}, "5": { "cell": [[5.05098, 0.0, 0.0], [2.6735648030064496, 4.285376320059311, 0.0], [2.6735648030064496, 1.4832241367140027, 4.020509465825704]], "ctime": 17.113034516108122, "key_value_pairs": {"wien2k_B": 237.29, "wien2k_Bp": 3.47, "wien2k_volume": 7.2405, "name": "B"}, "mtime": 17.113034516108122, "numbers": [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], "pbc": [true, true, true], "positions": [[6.044387960983594, 4.351619832988055, 1.968803280320189], [6.044387960983594, 3.353269053105789, 3.4012303928045706], [6.891413447368457, 2.8248259576773243, 1.968803280320189], [3.5066961586444427, 2.94377449909599, 2.051706185505515], [4.353721645029305, 2.415331403667525, 0.6192790730211332], [4.353721645029305, 1.4169806237852585, 2.051706185505515], [4.478814328420636, 4.139988883393475, 1.1211190645454974], [4.478814328420636, 2.484729567169567, 3.496074211103399], [5.883177259436696, 1.6085742373712384, 1.1211190645454974], [4.514932346576202, 4.1600262194020745, 2.8993904012802063], [5.919295277592262, 3.2838708896037465, 0.5244352547223048], [5.919295277592262, 1.6286115733798394, 2.8993904012802063]], "unique_id": "3feba3111e7b24ff52ee9b397a5d8d51", "user": "ase"}, "6": { "cell": [[2.468569, 0.0, 0.0], [-1.2342844999999996, 2.137843464994748, 0.0], [5.413420750746766e-16, 9.376319783041053e-16, 8.840787]], "ctime": 17.1130345163147, "key_value_pairs": {"exp_B": 55.5953519991, "wien2k_B": 208.991, "wien2k_volume": 11.6366, "name": "C", "exp_volume": 8.0585516206, "wien2k_Bp": 3.58, "exp_Bp": 8.9}, "mtime": 17.1130345163147, "numbers": [6, 6, 6, 6], "pbc": [true, true, true], "positions": [[4.0600655630600744e-16, 7.03223983728079e-16, 6.630590250000001], [1.3533551876866915e-16, 2.3440799457602632e-16, 2.21019675], [-1.2342844408506919e-08, 1.425228983789311, 6.630590250000001], [1.2342845123428454, 0.712614481205438, 2.21019675]], "unique_id": "2e41f64f6cb9b70e9acbaea21165fef9", "user": "ase"}, "7": { "cell": [[6.190188, 0.0, 0.0], [3.790396960160178e-16, 6.190188, 0.0], [3.790396960160178e-16, 3.790396960160178e-16, 6.190188]], "ctime": 17.113034516488458, "key_value_pairs": {"wien2k_B": 54.2195, "wien2k_Bp": 3.7244, "wien2k_volume": 28.8848, "name": "N"}, "mtime": 17.113034516488458, "numbers": [7, 7, 7, 7, 7, 7, 7, 7], "pbc": [true, true, true], "positions": [[3.41630285532, 3.41630285532, 3.41630285532], [5.86897914468, 2.77388514468, 0.32120885531999993], [2.7738851446800004, 0.32120885532000026, 5.86897914468], [0.32120885532000043, 5.86897914468, 2.77388514468], [2.77388514468, 2.77388514468, 2.77388514468], [0.3212088553200005, 3.4163028553200006, 5.86897914468], [3.4163028553200006, 5.86897914468, 0.32120885531999993], [5.86897914468, 0.32120885532000015, 3.41630285532]], "unique_id": "de933c4686567c00def0a09602b219ea", "user": "ase"}, "8": { "cell": [[4.571478, 0.0, 0.0], [-1.6881660044872087, 3.9238885447573164, 0.0], [2.6187963494412917e-16, 3.9775560911958797e-16, 4.276819]], "ctime": 17.11303451656538, "initial_magmoms": [1.5, 1.5, -1.5, -1.5], "key_value_pairs": {"wien2k_B": 51.378, "wien2k_Bp": 3.89, "wien2k_volume": 18.559, "name": "O"}, "mtime": 17.11303451656538, "numbers": [8, 8, 8, 8], "pbc": [true, true, true], "positions": [[0.8761274816554101, 1.7179568826656482, 0.0], [2.0071845138573816, 2.2059316620916682, 0.0], [0.03204447941180589, 3.6799011550443064, 2.1384095], [2.851267516100986, 0.24398738971301018, 2.1384095]], "unique_id": "b2dbe1cc9500278199d84967708d222a", "user": "ase"}, "9": { "cell": [[6.163098, 0.0, 0.0], [0.8170430406324418, 6.8770618582417224, 0.0], [2.2564411189521777e-16, 2.0042292799426497e-16, 3.685048]], "ctime": 17.113034516639882, "key_value_pairs": {"wien2k_B": 34.325, "wien2k_Bp": 3.93, "wien2k_volume": 19.1666, "name": "F"}, "mtime": 17.113034516639882, "numbers": [9, 9, 9, 9, 9, 9, 9, 9], "pbc": [true, true, true], "positions": [[1.9953887917309527, 4.085868761837155, 1.2171713544], [5.39327376921771, 6.229724025525429, 1.2171713544], [4.984752248901489, 2.7911930964045677, 2.4678766456], [1.586867271414732, 0.6473378327162937, 2.4678766456], [5.076937791730953, 4.085868761837155, 3.0596953544], [2.31172476921771, 6.229724025525429, 3.0596953544], [1.903203248901489, 2.7911930964045677, 0.6253526456], [4.668416271414732, 0.6473378327162936, 0.6253526456]], "unique_id": "f1563083797bf5e5d11f64f0f45a4b37", "user": "ase"}, "10": { "cell": [[4.622618, 0.0, 0.0], [2.8305371686904697e-16, 4.622618, 0.0], [2.8305371686904697e-16, 2.8305371686904697e-16, 4.622618]], "ctime": 17.11303451717388, "key_value_pairs": {"exp_B": 2.7976797131, "wien2k_B": 1.406, "wien2k_volume": 24.2492, "name": "Ne", "exp_volume": 17.8500401205, "wien2k_Bp": 14.44, "exp_Bp": 9.23}, "mtime": 17.11303451717388, "numbers": [10, 10, 10, 10], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.8305371686904697e-16, 2.311309, 2.311309], [2.311309, 1.4152685843452348e-16, 2.311309], [2.311309, 2.311309, 0.0]], "unique_id": "1e2f1ec6c6a7b5bfe4b550c39ed9cb0c", "user": "ase"}, "11": { "cell": [[3.7427847424579794, 0.0, 0.0], [1.87139237122899, 3.2413466678654053, 0.0], [1.8713923712289888, 1.0804488892884658, 9.166876138708174]], "ctime": 17.113034517345817, "key_value_pairs": {"exp_B": 7.9126957362, "wien2k_B": 7.472, "wien2k_volume": 37.4686, "name": "Na", "exp_volume": 37.1751953558, "wien2k_Bp": 3.77, "exp_Bp": 4.13}, "mtime": 17.113034517345817, "numbers": [11, 11, 11], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [5.614177113686968, 3.2413466678654035, 6.111250698026275], [1.8713923712289893, 1.0804488892884678, 3.0556254406818972]], "unique_id": "b266ab4af238e1b33034d292c7ba3061", "user": "ase"}, "12": { "cell": [[3.194049, 0.0, 0.0], [-1.5970244999999994, 2.7661275749322827, 0.0], [3.166923151480265e-16, 5.485271802029967e-16, 5.171978]], "ctime": 17.113034517517566, "key_value_pairs": {"exp_B": 38.6053690056, "wien2k_B": 35.933, "wien2k_volume": 22.9355, "name": "Mg", "exp_volume": 22.647179813, "wien2k_Bp": 4.07, "exp_Bp": 4.8}, "mtime": 17.113034517517566, "numbers": [12, 12], "pbc": [true, true, true], "positions": [[3.194049068151484e-08, 1.844085031514005, 3.8789835000000004], [1.59702446805951, 0.9220425434182783, 1.2929945]], "unique_id": "d85c4c7b98ab656ce47ad644c0599c10", "user": "ase"}, "13": { "cell": [[4.040208, 0.0, 0.0], [2.4739138975447647e-16, 4.040208, 0.0], [2.4739138975447647e-16, 2.4739138975447647e-16, 4.040208]], "ctime": 17.113034518050465, "key_value_pairs": {"exp_B": 77.1357712089, "wien2k_B": 78.077, "wien2k_volume": 16.4796, "name": "Al", "exp_volume": 16.2686134104, "wien2k_Bp": 4.57, "exp_Bp": 4.45}, "mtime": 17.113034518050465, "numbers": [13, 13, 13, 13], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.4739138975447647e-16, 2.020104, 2.020104], [2.020104, 1.2369569487723823e-16, 2.020104], [2.020104, 2.020104, 0.0]], "unique_id": "2cad07ad8c206eab67fba0a6104b6c6c", "user": "ase"}, "14": { "cell": [[5.468889, 0.0, 0.0], [3.3487287043710845e-16, 5.468889, 0.0], [3.3487287043710845e-16, 3.3487287043710845e-16, 5.468889]], "ctime": 17.113034518433523, "key_value_pairs": {"exp_B": 101.2830671644, "wien2k_B": 88.545, "wien2k_volume": 20.453, "name": "Si", "exp_volume": 19.8226753766, "wien2k_Bp": 4.31, "exp_Bp": 4.43}, "mtime": 17.113034518433523, "numbers": [14, 14, 14, 14, 14, 14, 14, 14], "pbc": [true, true, true], "positions": [[4.785277875, 2.050833375, 2.050833375], [4.785277875, 4.785277875, 4.785277875], [2.0508333750000003, 4.785277875, 2.050833375], [2.0508333750000003, 2.0508333750000003, 4.785277875], [0.683611125, 0.683611125, 0.683611125], [3.418055625, 0.6836111250000002, 3.418055625], [3.418055625, 3.418055625, 0.683611125], [0.6836111250000004, 3.418055625, 3.418055625]], "unique_id": "bdc893ba02179ad991fef69376369425", "user": "ase"}, "15": { "cell": [[3.304659, 0.0, 0.0], [6.929624111954326e-16, 11.316935, 0.0], [2.8003190089215084e-16, 2.8003190089215084e-16, 4.573268]], "ctime": 17.113034518648433, "key_value_pairs": {"exp_B": 33.2058266332, "wien2k_B": 68.208, "wien2k_volume": 21.4709, "name": "P", "exp_volume": 18.5017456989, "wien2k_Bp": 4.35, "exp_Bp": 4.5}, "mtime": 17.113034518648433, "numbers": [15, 15, 15, 15, 15, 15, 15, 15], "pbc": [true, true, true], "positions": [[7.92553850264738e-16, 10.25800939205, 2.68537723692], [4.3573767985205957e-16, 6.717393107950001, 0.3987432369200004], [5.372566322355238e-16, 4.599541892049999, 4.17452476308], [1.8044046182284544e-16, 1.0589256079500007, 1.88789076308], [1.6523295000000005, 4.599541892049999, 2.68537723692], [1.6523295, 1.0589256079500005, 0.3987432369200004], [1.652329500000001, 10.25800939205, 4.17452476308], [1.6523295000000007, 6.717393107950001, 1.88789076308]], "unique_id": "53897ba4dff87da7b159f253bb4e8884", "user": "ase"}, "16": { "cell": [[2.581529, 0.0, 0.0], [-0.0655683444451164, 2.580696179337608, 0.0], [-0.0655683444451164, -0.06725541419791609, 2.5798196602299153]], "ctime": 17.113034518796404, "key_value_pairs": {"exp_B": 21.2962016836, "wien2k_B": 83.407, "wien2k_volume": 17.184, "name": "S", "exp_volume": 24.6344529073, "wien2k_Bp": 4.26, "exp_Bp": 6.75}, "mtime": 17.113034518796404, "numbers": [16], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0]], "unique_id": "af2de9a0241472a9f13de6165cfe8400", "user": "ase"}, "17": { "cell": [[7.778747, 0.0, 0.0], [2.663244292692946e-16, 4.349408, 0.0], [5.52777153329375e-16, 5.52777153329375e-16, 9.027536]], "ctime": 17.113034519014995, "key_value_pairs": {"exp_B": 40.79779734988, "wien2k_B": 19.081, "wien2k_volume": 38.8889, "name": "Cl", "exp_volume": 26.9472875104, "wien2k_Bp": 4.34, "exp_Bp": 5.2}, "mtime": 17.113034519014995, "numbers": [17, 17, 17, 17, 17, 17, 17, 17], "pbc": [true, true, true], "positions": [[1.6499668977987117e-16, 1.7781249785600002, 0.9164754547199999], [3.5678997473146e-16, 0.3965790214400003, 5.43024345472], [4.623116078672096e-16, 3.9528289785600004, 3.5972925452799998], [6.541048928187984e-16, 2.5712830214400006, 8.111060545279999], [3.8893735000000005, 3.9528289785600004, 0.9164754547199999], [3.8893735000000005, 2.5712830214400006, 5.43024345472], [3.8893735, 1.7781249785600004, 3.5972925452799998], [3.8893735000000005, 0.39657902144000046, 8.111060545279999]], "unique_id": "699370388fdcb2c567c738a87b06251c", "user": "ase"}, "18": { "cell": [[5.950587, 0.0, 0.0], [3.643683661298925e-16, 5.950587, 0.0], [3.643683661298925e-16, 3.643683661298925e-16, 5.950587]], "ctime": 17.113034519568437, "key_value_pairs": {"exp_B": 3.2983246796, "wien2k_B": 0.743, "wien2k_volume": 52.3852, "name": "Ar", "exp_volume": 35.5470851931, "wien2k_Bp": 7.26, "exp_Bp": 7.2}, "mtime": 17.113034519568437, "numbers": [18, 18, 18, 18], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.643683661298925e-16, 2.9752935, 2.9752935], [2.9752935, 1.8218418306494626e-16, 2.9752935], [2.9752935, 2.9752935, 0.0]], "unique_id": "54a53d53169da6c0667c732f6ef1faf3", "user": "ase"}, "19": { "cell": [[5.285888, 0.0, 0.0], [3.236672909925702e-16, 5.285888, 0.0], [3.236672909925702e-16, 3.236672909925702e-16, 5.285888]], "ctime": 17.113034519923335, "key_value_pairs": {"exp_B": 3.7509702193, "wien2k_B": 3.574, "wien2k_volume": 73.6793, "name": "K", "exp_volume": 72.199356914, "wien2k_Bp": 4.59, "exp_Bp": 4.089}, "mtime": 17.113034519923335, "numbers": [19, 19], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.642944, 2.642944, 2.642944]], "unique_id": "9d85ec5eddbd03470e2ea712c5081b67", "user": "ase"}, "20": { "cell": [[5.525068, 0.0, 0.0], [3.3831284206357345e-16, 5.525068, 0.0], [3.3831284206357345e-16, 3.3831284206357345e-16, 5.525068]], "ctime": 17.113034520479257, "key_value_pairs": {"exp_B": 15.8522348531, "wien2k_B": 17.114, "wien2k_volume": 42.1991, "name": "Ca", "exp_volume": 42.9453933306, "wien2k_Bp": 3.31, "exp_Bp": 3.1}, "mtime": 17.113034520479257, "numbers": [20, 20, 20, 20], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.3831284206357345e-16, 2.762534, 2.762534], [2.762534, 1.6915642103178673e-16, 2.762534], [2.762534, 2.762534, 0.0]], "unique_id": "fd0fcd41a62ceae5f314d2effd1a5a80", "user": "ase"}, "21": { "cell": [[3.321449, 0.0, 0.0], [-1.6607244999999993, 2.87645921137442, 0.0], [3.160763178080554e-16, 5.474602415128394e-16, 5.161918]], "ctime": 17.113034520676262, "key_value_pairs": {"exp_B": 44.5429241793, "wien2k_B": 54.393, "wien2k_volume": 24.6196, "name": "Sc", "exp_volume": 24.7695611521, "wien2k_Bp": 3.42, "exp_Bp": 2.8}, "mtime": 17.113034520676262, "numbers": [21, 21], "pbc": [true, true, true], "positions": [[3.321449069424895e-08, 1.9176394550732188, 3.8714385], [1.66072446678551, 0.9588197563012015, 1.2904795]], "unique_id": "60a6ddbe4be39123f0490f23535e2a7c", "user": "ase"}, "22": { "cell": [[2.936639, 0.0, 0.0], [-1.4683194999999993, 2.5432039757441305, 0.0], [2.8484843675319743e-16, 4.933719649131078e-16, 4.651928]], "ctime": 17.11303452087424, "key_value_pairs": {"exp_B": 107.3532076344, "wien2k_B": 112.213, "wien2k_volume": 17.39, "name": "Ti", "exp_volume": 17.4972491019, "wien2k_Bp": 3.58, "exp_Bp": 3.4}, "mtime": 17.11303452087424, "numbers": [22, 22], "pbc": [true, true, true], "positions": [[2.9366390623835125e-08, 1.6954693002080607, 3.488946], [1.46831947063361, 0.8477346755360702, 1.162982]], "unique_id": "ced35a59ef4450a4da990eb92572b47e", "user": "ase"}, "23": { "cell": [[2.998939, 0.0, 0.0], [1.836320523594082e-16, 2.998939, 0.0], [1.836320523594082e-16, 1.836320523594082e-16, 2.998939]], "ctime": 17.11303452124038, "key_value_pairs": {"exp_B": 165.8391206631, "wien2k_B": 181.674, "wien2k_volume": 13.452, "name": "V", "exp_volume": 13.8102371627, "wien2k_Bp": 3.75, "exp_Bp": 4.135}, "mtime": 17.11303452124038, "numbers": [23, 23], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.4994695, 1.4994695, 1.4994695]], "unique_id": "356916e0b3788dbfa2361b8c757da5a4", "user": "ase"}, "24": { "cell": [[2.870999, 0.0, 0.0], [1.757979867852626e-16, 2.870999, 0.0], [1.757979867852626e-16, 1.757979867852626e-16, 2.870999]], "ctime": 17.11303452160197, "initial_magmoms": [1.5, -1.5], "key_value_pairs": {"exp_B": 204.5647000914, "wien2k_B": 183.899, "wien2k_volume": 11.773, "name": "Cr", "exp_volume": 11.821818199, "wien2k_Bp": 7.16, "exp_Bp": 6.895}, "mtime": 17.11303452160197, "numbers": [24, 24], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.4354995, 1.4354995, 1.4354995]], "unique_id": "9cea9884deb082a04063a8ad9c63379b", "user": "ase"}, "25": { "cell": [[2.542416, 0.0, 0.0], [1.5567808082505083e-16, 2.542416, 0.0], [2.201620417311746e-16, 2.201620417311746e-16, 3.595519]], "ctime": 17.11303452179978, "initial_magmoms": [2.0, -2.0], "key_value_pairs": {"exp_B": 174.7008209027, "wien2k_B": 118.632, "wien2k_volume": 11.4473, "name": "Mn", "exp_volume": 11.9680120678, "wien2k_Bp": -0.21, "exp_Bp": 6.6}, "mtime": 17.11303452179978, "numbers": [25, 25], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.271208, 1.271208, 1.7977595]], "unique_id": "aa8f5d6738398723324bc1efd9c73d21", "user": "ase"}, "26": { "cell": [[2.833509, 0.0, 0.0], [1.7350238636026086e-16, 2.833509, 0.0], [1.7350238636026086e-16, 1.7350238636026086e-16, 2.833509]], "ctime": 17.11303452218015, "initial_magmoms": [2.3, 2.3], "key_value_pairs": {"exp_B": 175.1086987963, "wien2k_B": 197.652, "wien2k_volume": 11.3436, "name": "Fe", "exp_volume": 11.6393714028, "wien2k_Bp": 5.8, "exp_Bp": 4.6}, "mtime": 17.11303452218015, "numbers": [26, 26], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.4167545, 1.4167545, 1.4167545]], "unique_id": "dff582d60fb42157070cc2507103650b", "user": "ase"}, "27": { "cell": [[2.496799, 0.0, 0.0], [-1.2483994999999997, 2.162291362143583, 0.0], [2.4681580575887724e-16, 4.2749751568542645e-16, 4.030808]], "ctime": 17.113034522477843, "initial_magmoms": [1.2, 1.2], "key_value_pairs": {"exp_B": 198.3952571603, "wien2k_B": 217.295, "wien2k_volume": 10.8599, "name": "Co", "exp_volume": 10.9563191311, "wien2k_Bp": 4.37, "exp_Bp": 4.26}, "mtime": 17.113034522477843, "numbers": [27, 27], "pbc": [true, true, true], "positions": [[2.496799045486886e-08, 1.441527560347113, 3.0231060000000003], [1.24839947503201, 0.7207638017964703, 1.007702]], "unique_id": "389a529c9db4b11274e07d7ea7ace886", "user": "ase"}, "28": { "cell": [[3.524138, 0.0, 0.0], [2.1579121607267776e-16, 3.524138, 0.0], [2.1579121607267776e-16, 2.1579121607267776e-16, 3.524138]], "ctime": 17.11303452309446, "initial_magmoms": [0.6, 0.6, 0.6, 0.6], "key_value_pairs": {"exp_B": 192.4580551235, "wien2k_B": 200.368, "wien2k_volume": 10.8876, "name": "Ni", "exp_volume": 10.8077248858, "wien2k_Bp": 5.0, "exp_Bp": 4.0}, "mtime": 17.11303452309446, "numbers": [28, 28, 28, 28], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.1579121607267776e-16, 1.762069, 1.762069], [1.762069, 1.0789560803633888e-16, 1.762069], [1.762069, 1.762069, 0.0]], "unique_id": "201ad0fecde0b57226fc61c3b8e933c0", "user": "ase"}, "29": { "cell": [[3.636889, 0.0, 0.0], [2.226952236352109e-16, 3.636889, 0.0], [2.226952236352109e-16, 2.226952236352109e-16, 3.636889]], "ctime": 17.11303452368884, "key_value_pairs": {"exp_B": 144.2785999228, "wien2k_B": 141.335, "wien2k_volume": 11.9511, "name": "Cu", "exp_volume": 11.6468691265, "wien2k_Bp": 4.86, "exp_Bp": 4.88}, "mtime": 17.11303452368884, "numbers": [29, 29, 29, 29], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.226952236352109e-16, 1.8184445000000002, 1.8184445], [1.8184445000000002, 1.1134761181760545e-16, 1.8184445], [1.8184445000000002, 1.8184445, 0.0]], "unique_id": "884a2b7d406b0dc879a6802d60f9999d", "user": "ase"}, "30": { "cell": [[2.661689, 0.0, 0.0], [-1.3308444999999993, 2.305090290973599, 0.0], [3.064046697117892e-16, 5.307084556171795e-16, 5.003968]], "ctime": 17.113034523910375, "key_value_pairs": {"exp_B": 64.6681064605, "wien2k_B": 74.78, "wien2k_volume": 15.182, "name": "Zn", "exp_volume": 14.858908056, "wien2k_Bp": 5.26, "exp_Bp": 4.4}, "mtime": 17.113034523910375, "numbers": [30, 30], "pbc": [true, true, true], "positions": [[2.6616890661369692e-08, 1.5367268452817977, 3.7529760000000003], [1.33084447338311, 0.7683634456918017, 1.250992]], "unique_id": "7b2009a6ae89f21a7c34d69806f404e5", "user": "ase"}, "31": { "cell": [[4.566888, 0.0, 0.0], [4.747525176944388e-16, 7.753297, 0.0], [2.816551702244207e-16, 2.816551702244207e-16, 4.599778]], "ctime": 17.11303452416763, "key_value_pairs": {"wien2k_B": 49.223, "wien2k_Bp": 5.38, "wien2k_volume": 20.3069, "name": "Ga"}, "mtime": 17.11303452416763, "numbers": [31, 31, 31, 31, 31, 31, 31, 31], "pbc": [true, true, true], "positions": [[4.753350325994168e-16, 5.08941921674, 2.6733909736], [4.2336212869889764e-16, 6.54052628326, 0.3735019735999997], [3.3304555921996183e-16, 1.2127707167400001, 4.2262760264], [2.810726553194427e-16, 2.66387778326, 1.9263870263999996], [2.283444, 1.2127707167400001, 2.6733909736], [2.283444, 2.66387778326, 0.3735019735999997], [2.2834440000000007, 5.08941921674, 4.2262760264], [2.2834440000000003, 6.54052628326, 1.9263870263999996]], "unique_id": "4277cd513da4b943e543582df8c4e1fd", "user": "ase"}, "32": { "cell": [[5.761772, 0.0, 0.0], [3.5280678186084216e-16, 5.761772, 0.0], [3.5280678186084216e-16, 3.5280678186084216e-16, 5.761772]], "ctime": 17.11303452460793, "key_value_pairs": {"exp_B": 79.3863983278, "wien2k_B": 59.128, "wien2k_volume": 23.9148, "name": "Ge", "exp_volume": 22.4394449615, "wien2k_Bp": 4.99, "exp_Bp": 4.76}, "mtime": 17.11303452460793, "numbers": [32, 32, 32, 32, 32, 32, 32, 32], "pbc": [true, true, true], "positions": [[5.0415505, 2.1606644999999998, 2.1606644999999998], [5.0415505, 5.0415505, 5.0415505], [2.1606645, 5.0415505, 2.1606644999999998], [2.1606645, 2.1606645, 5.0415505], [0.7202215, 0.7202215, 0.7202215], [3.6011075, 0.7202215000000002, 3.6011075], [3.6011075, 3.6011075, 0.7202215], [0.7202215000000004, 3.6011075, 3.6011075]], "unique_id": "a5ff9744a64465b93a0e66068f74a0d4", "user": "ase"}, "33": { "cell": [[4.21908, 0.0, 0.0], [2.4892485076668516, 3.4065052346177827, 0.0], [2.4892485076668516, 1.2640463361238758, 3.163299665477515]], "ctime": 17.1130345248055, "key_value_pairs": {"exp_B": 40.8478627908, "wien2k_B": 68.285, "wien2k_volume": 22.589, "name": "As", "exp_volume": 21.2294629986, "wien2k_Bp": 4.22, "exp_Bp": 3.3}, "mtime": 17.1130345248055, "numbers": [33, 33], "pbc": [true, true, true], "positions": [[2.0839042219411725, 1.0582115399345082, 0.7167119685069061], [7.113672793392531, 3.6123400308071503, 2.4465876969706093]], "unique_id": "d534b53cd694e228b1a5f81169e90eff", "user": "ase"}, "34": { "cell": [[4.524638, 0.0, 0.0], [-2.2623189999999993, 3.9184514509284156, 0.0], [3.0920972320523613e-16, 5.355669507857782e-16, 5.049778]], "ctime": 17.113034524983807, "key_value_pairs": {"exp_B": 10.8511842397, "wien2k_B": 47.07, "wien2k_volume": 29.7437, "name": "Se", "exp_volume": 26.2220119189, "wien2k_Bp": 4.44, "exp_Bp": 5.8}, "mtime": 17.113034524983807, "numbers": [34, 34, 34], "pbc": [true, true, true], "positions": [[0.9910314611400002, 1.7852231514336957e-16, 1.68325931650074], [-0.49551573056999965, 0.8582584212968513, 3.3665186498340733], [1.7668032694300009, 3.060193029631565, 5.049777983167406]], "unique_id": "cf1c1aec5bf901930889497d77cac5e7", "user": "ase"}, "35": { "cell": [[8.228597, 0.0, 0.0], [2.5884796056049995e-16, 4.227308, 0.0], [5.531256265760724e-16, 5.531256265760724e-16, 9.033227]], "ctime": 17.113034525257337, "key_value_pairs": {"exp_B": 25.60913532206, "wien2k_B": 22.415, "wien2k_volume": 39.447, "name": "Br", "exp_volume": 31.474229432, "wien2k_Bp": 4.87, "exp_Bp": 5.2}, "mtime": 17.113034525257337, "numbers": [35, 35, 35, 35, 35, 35, 35, 35], "pbc": [true, true, true], "positions": [[1.620637311106549e-16, 1.58836870792, 1.05833287532], [3.7353145927693656e-16, 0.5252852920800002, 5.574946375320001], [4.3844212785963576e-16, 3.70202270792, 3.45828062468], [6.499098560259174e-16, 2.6389392920800003, 7.97489412468], [4.1142985, 3.70202270792, 1.05833287532], [4.1142985, 2.6389392920800003, 5.574946375320001], [4.1142985, 1.5883687079200002, 3.45828062468], [4.114298500000001, 0.5252852920800003, 7.97489412468]], "unique_id": "b2132e64a5fa26d455f58d489acd1644", "user": "ase"}, "36": { "cell": [[6.429297, 0.0, 0.0], [3.93680899590884e-16, 6.429297, 0.0], [3.93680899590884e-16, 3.93680899590884e-16, 6.429297]], "ctime": 17.113034525870837, "key_value_pairs": {"exp_B": 4.010029184, "wien2k_B": 0.671, "wien2k_volume": 65.6576, "name": "Kr", "exp_volume": 44.0396650574, "wien2k_Bp": 9.86, "exp_Bp": 7.2}, "mtime": 17.113034525870837, "numbers": [36, 36, 36, 36], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.93680899590884e-16, 3.2146485, 3.2146485], [3.2146485, 1.96840449795442e-16, 3.2146485], [3.2146485, 3.2146485, 0.0]], "unique_id": "efcb3380aa198ae35ca186edc7da3a1e", "user": "ase"}, "37": { "cell": [[5.671968, 0.0, 0.0], [3.473078728033107e-16, 5.671968, 0.0], [3.473078728033107e-16, 3.473078728033107e-16, 5.671968]], "ctime": 17.113034526282274, "key_value_pairs": {"exp_B": 3.5526213033, "wien2k_B": 2.787, "wien2k_volume": 90.8087, "name": "Rb", "exp_volume": 89.1556853499, "wien2k_Bp": 5.8, "exp_Bp": 3.885}, "mtime": 17.113034526282274, "numbers": [37, 37], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.835984, 2.835984, 2.835984]], "unique_id": "e4efc8846ecbcd3ed43286fa4251c4e0", "user": "ase"}, "38": { "cell": [[6.019688, 0.0, 0.0], [3.6859958205328665e-16, 6.019688, 0.0], [3.6859958205328665e-16, 3.6859958205328665e-16, 6.019688]], "ctime": 17.113034526897195, "key_value_pairs": {"exp_B": 11.9842858226, "wien2k_B": 11.256, "wien2k_volume": 54.5272, "name": "Sr", "exp_volume": 55.6036124476, "wien2k_Bp": 3.49, "exp_Bp": 2.485}, "mtime": 17.113034526897195, "numbers": [38, 38, 38, 38], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.6859958205328665e-16, 3.009844, 3.009844], [3.009844, 1.8429979102664332e-16, 3.009844], [3.009844, 3.009844, 0.0]], "unique_id": "15fcb40b5dda5bccc1afae59ffaf7707", "user": "ase"}, "39": { "cell": [[3.660508, 0.0, 0.0], [-1.8302539999999992, 3.1700929187561684, 0.0], [3.474315621300246e-16, 6.017691177622256e-16, 5.673988]], "ctime": 17.113034527148134, "key_value_pairs": {"exp_B": 37.3135136902, "wien2k_B": 41.593, "wien2k_volume": 32.8442, "name": "Y", "exp_volume": 32.9504356012, "wien2k_Bp": 3.02, "exp_Bp": 2.2}, "mtime": 17.113034527148134, "numbers": [39, 39], "pbc": [true, true, true], "positions": [[3.6605080744084703e-08, 2.1133952580368263, 4.255490999999999], [1.8302539633949202, 1.0566976607193426, 1.418497]], "unique_id": "8fabb2333bb6c8e5700875c076e15b6c", "user": "ase"}, "40": { "cell": [[3.236028, 0.0, 0.0], [-1.6180139999999994, 2.8024824553577496, 0.0], [3.177669427142783e-16, 5.503884897469588e-16, 5.189528]], "ctime": 17.113034527398334, "key_value_pairs": {"exp_B": 84.2834017272, "wien2k_B": 93.684, "wien2k_volume": 23.385, "name": "Zr", "exp_volume": 23.1775566622, "wien2k_Bp": 3.21, "exp_Bp": 2.575}, "mtime": 17.113034527398334, "numbers": [40, 40], "pbc": [true, true, true], "positions": [[3.2360280744075255e-08, 1.8683216182219504, 3.8921460000000003], [1.6180139676397203, 0.9341608371357998, 1.297382]], "unique_id": "f5226c914cd051e074b37b7ebc037ec2", "user": "ase"}, "41": { "cell": [[3.322389, 0.0, 0.0], [2.0343765271861876e-16, 3.322389, 0.0], [2.0343765271861876e-16, 2.0343765271861876e-16, 3.322389]], "ctime": 17.113034527829544, "key_value_pairs": {"exp_B": 173.1796015761, "wien2k_B": 171.27, "wien2k_volume": 18.1368, "name": "Nb", "exp_volume": 17.9728074489, "wien2k_Bp": 3.55, "exp_Bp": 4.015}, "mtime": 17.113034527829544, "numbers": [41, 41], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.6611945, 1.6611945, 1.6611945]], "unique_id": "1f2ec07e5cb347cb6cc972dd8146f7d5", "user": "ase"}, "42": { "cell": [[3.169299, 0.0, 0.0], [1.9406359379454538e-16, 3.169299, 0.0], [1.9406359379454538e-16, 1.9406359379454538e-16, 3.169299]], "ctime": 17.11303452826686, "key_value_pairs": {"exp_B": 276.211060431, "wien2k_B": 258.928, "wien2k_volume": 15.7862, "name": "Mo", "exp_volume": 15.5081291945, "wien2k_Bp": 4.33, "exp_Bp": 3.98}, "mtime": 17.11303452826686, "numbers": [42, 42], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.5846495, 1.5846495, 1.5846495]], "unique_id": "e39ca4b189d73a86462e967f7569ce95", "user": "ase"}, "43": { "cell": [[2.761869, 0.0, 0.0], [-1.3809344999999993, 2.391848715924724, 0.0], [2.7058864942392567e-16, 4.686732887536822e-16, 4.419048]], "ctime": 17.11303452853467, "key_value_pairs": {"wien2k_B": 299.149, "wien2k_Bp": 4.46, "wien2k_volume": 14.4366, "name": "Tc"}, "mtime": 17.11303452853467, "numbers": [43, 43], "pbc": [true, true, true], "positions": [[2.761869058338344e-08, 1.594565794670825, 3.314286], [1.3809344723813102, 0.7972829212538997, 1.104762]], "unique_id": "445f072e0b339e6d6c8d66c402768693", "user": "ase"}, "44": { "cell": [[2.726609, 0.0, 0.0], [-1.3633044999999993, 2.3613126601872847, 0.0], [2.633295555219797e-16, 4.561001692985985e-16, 4.300498]], "ctime": 17.11303452879723, "key_value_pairs": {"exp_B": 335.5206725035, "wien2k_B": 312.502, "wien2k_volume": 13.7619, "name": "Ru", "exp_volume": 13.449431931, "wien2k_Bp": 4.95, "exp_Bp": 6.61}, "mtime": 17.11303452879723, "numbers": [44, 44], "pbc": [true, true, true], "positions": [[2.726609057418231e-08, 1.5742084243827725, 3.2253735], [1.36330447273391, 0.7871042358045128, 1.0751245]], "unique_id": "e3ee49e78f13a18beb2a18dbca036ef6", "user": "ase"}, "45": { "cell": [[3.842099, 0.0, 0.0], [2.3526071211786234e-16, 3.842099, 0.0], [2.3526071211786234e-16, 2.3526071211786234e-16, 3.842099]], "ctime": 17.11303452943111, "key_value_pairs": {"exp_B": 277.1283701334, "wien2k_B": 257.824, "wien2k_volume": 14.0396, "name": "Rh", "exp_volume": 13.5713064752, "wien2k_Bp": 5.32, "exp_Bp": 4.5}, "mtime": 17.11303452943111, "numbers": [45, 45, 45, 45], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.3526071211786234e-16, 1.9210495000000003, 1.9210495], [1.9210495000000003, 1.1763035605893117e-16, 1.9210495], [1.9210495000000003, 1.9210495, 0.0]], "unique_id": "40547fa66453c539b687208d6e264693", "user": "ase"}, "46": { "cell": [[3.953149, 0.0, 0.0], [2.42060563470128e-16, 3.953149, 0.0], [2.42060563470128e-16, 2.42060563470128e-16, 3.953149]], "ctime": 17.113034530065274, "key_value_pairs": {"exp_B": 187.1936487566, "wien2k_B": 168.629, "wien2k_volume": 15.3101, "name": "Pd", "exp_volume": 14.564918114, "wien2k_Bp": 5.56, "exp_Bp": 5.0}, "mtime": 17.113034530065274, "numbers": [46, 46, 46, 46], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.42060563470128e-16, 1.9765745000000001, 1.9765745], [1.9765745000000001, 1.21030281735064e-16, 1.9765745], [1.9765745000000001, 1.9765745, 0.0]], "unique_id": "9f36ec99c405f83ea018aee4c9295f52", "user": "ase"}, "47": { "cell": [[4.164238, 0.0, 0.0], [2.549860368793888e-16, 4.164238, 0.0], [2.549860368793888e-16, 2.549860368793888e-16, 4.164238]], "ctime": 17.113034530705562, "key_value_pairs": {"exp_B": 105.7066536338, "wien2k_B": 90.148, "wien2k_volume": 17.8471, "name": "Ag", "exp_volume": 16.8502671224, "wien2k_Bp": 5.42, "exp_Bp": 4.725}, "mtime": 17.113034530705562, "numbers": [47, 47, 47, 47], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.549860368793888e-16, 2.082119, 2.082119], [2.082119, 1.274930184396944e-16, 2.082119], [2.082119, 2.082119, 0.0]], "unique_id": "720a30193126e9310c1e8058216a238b", "user": "ase"}, "48": { "cell": [[3.037159, 0.0, 0.0], [-1.5185794999999993, 2.6302568493325422, 0.0], [3.533478308167055e-16, 6.120163957187857e-16, 5.770608]], "ctime": 17.113034530975096, "key_value_pairs": {"exp_B": 50.6575327406, "wien2k_B": 46.403, "wien2k_volume": 22.6287, "name": "Cd", "exp_volume": 21.0072915257, "wien2k_Bp": 6.92, "exp_Bp": 4.9}, "mtime": 17.113034530975096, "numbers": [48, 48], "pbc": [true, true, true], "positions": [[3.037159077378871e-08, 1.7535045486866494, 4.327956], [1.5185794696284098, 0.8767523006458933, 1.442652]], "unique_id": "345893cf401e970346a8479da060001b", "user": "ase"}, "49": { "cell": [[3.298409, 0.0, 0.0], [2.019693012064411e-16, 3.298409, 0.0], [3.099922725098913e-16, 3.099922725098913e-16, 5.062558]], "ctime": 17.11303453124991, "key_value_pairs": {"exp_B": 44.7057199504, "wien2k_B": 34.937, "wien2k_volume": 27.471, "name": "In", "exp_volume": 25.7032021592, "wien2k_Bp": 4.78, "exp_Bp": 5.35}, "mtime": 17.11303453124991, "numbers": [49, 49], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.6492045000000002, 1.6492045000000002, 2.531279]], "unique_id": "d41f07f68847db2bd0e23e8578258214", "user": "ase"}, "50": { "cell": [[6.655951, 0.0, 0.0], [4.0755945437158123e-16, 6.655951, 0.0], [4.0755945437158123e-16, 4.0755945437158123e-16, 6.655951]], "ctime": 17.113034531747914, "key_value_pairs": {"exp_B": 42.8175727666, "wien2k_B": 36.03, "wien2k_volume": 36.8166, "name": "Sn", "exp_volume": 33.9673514422, "wien2k_Bp": 4.64, "exp_Bp": 4.0}, "mtime": 17.113034531747914, "numbers": [50, 50, 50, 50, 50, 50, 50, 50], "pbc": [true, true, true], "positions": [[5.823957125, 2.4959816249999998, 2.4959816249999998], [5.823957125, 5.823957125, 5.823957125], [2.495981625, 5.823957125, 2.4959816249999998], [2.495981625, 2.495981625, 5.823957125], [0.831993875, 0.831993875, 0.831993875], [4.159969375, 0.8319938750000002, 4.159969375], [4.159969375, 4.159969375, 0.831993875], [0.8319938750000004, 4.159969375, 4.159969375]], "unique_id": "a8d603fb4dc2da4033a91cc6bb8ac444", "user": "ase"}, "51": { "cell": [[4.586406, 0.0, 0.0], [2.494517037525077, 3.848701696200046, 0.0], [2.494517037525077, 1.3558475219465593, 3.60196921746487]], "ctime": 17.11303453201219, "key_value_pairs": {"exp_B": 39.51444577, "wien2k_B": 50.367, "wien2k_volume": 31.7296, "name": "Sb", "exp_volume": 29.6804586852, "wien2k_Bp": 4.52, "exp_Bp": 4.3}, "mtime": 17.11303453201219, "numbers": [51, 51], "pbc": [true, true, true], "positions": [[2.5536230515743554, 1.3879734522531686, 0.9605899721097771], [7.0218170443946875, 3.81657572740642, 2.641379245355093]], "unique_id": "11352851f571adcc2024295ef769b946", "user": "ase"}, "52": { "cell": [[4.507878, 0.0, 0.0], [-2.253938999999999, 3.903936865160988, 0.0], [3.6515648757748383e-16, 6.324695891975955e-16, 5.963458]], "ctime": 17.113034532237034, "key_value_pairs": {"exp_B": 26.2066301792, "wien2k_B": 44.787, "wien2k_volume": 34.9765, "name": "Te", "exp_volume": 33.3011164487, "wien2k_Bp": 4.69, "exp_Bp": 8.4}, "mtime": 17.113034532237034, "numbers": [52, 52, 52], "pbc": [true, true, true], "positions": [[1.2155943814800003, 2.1082319429096653e-16, 1.9878193134551398], [-0.6077971907399995, 1.0527356150593126, 3.9756386467884735], [1.646141809260001, 2.8512012501016764, 5.963457980121807]], "unique_id": "12b9d00908453d7c9072f9d76f20a829", "user": "ase"}, "53": { "cell": [[8.577007, 0.0, 0.0], [2.78865424815963e-16, 4.554218, 0.0], [6.235782710518805e-16, 6.235782710518805e-16, 10.183806]], "ctime": 17.11303453255734, "key_value_pairs": {"exp_B": 23.94757695639, "wien2k_B": 18.654, "wien2k_volume": 50.2333, "name": "I", "exp_volume": 37.0417267368, "wien2k_Bp": 5.05, "exp_Bp": 6.0}, "mtime": 17.11303453255734, "numbers": [53, 53, 53, 53, 53, 53, 53, 53], "pbc": [true, true, true], "positions": [[1.7725601062932197e-16, 1.6581907737999997, 1.23661956258], [4.254080562122595e-16, 0.6189182262000004, 6.328522562580001], [4.770356396555841e-16, 3.9352997738, 3.8552834374200002], [7.251876852385215e-16, 2.8960272262, 8.947186437420001], [4.2885035, 3.9352997737999997, 1.23661956258], [4.2885035, 2.8960272262, 6.328522562580001], [4.2885035, 1.6581907738, 3.8552834374200002], [4.288503500000001, 0.6189182262000006, 8.947186437420001]], "unique_id": "df66521653799c678d266ec9ae7fd9ee", "user": "ase"}, "54": { "cell": [[7.054817, 0.0, 0.0], [4.3198295288101664e-16, 7.054817, 0.0], [4.3198295288101664e-16, 4.3198295288101664e-16, 7.054817]], "ctime": 17.113034533214964, "key_value_pairs": {"exp_B": 3.8313930155, "wien2k_B": 0.548, "wien2k_volume": 86.6814, "name": "Xe", "exp_volume": 56.8708353687, "wien2k_Bp": 6.34, "exp_Bp": 6.34}, "mtime": 17.113034533214964, "numbers": [54, 54, 54, 54], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [4.3198295288101664e-16, 3.5274085, 3.5274085], [3.5274085, 2.1599147644050832e-16, 3.5274085], [3.5274085, 3.5274085, 0.0]], "unique_id": "322efa0e324f77e40310f35dbc63f562", "user": "ase"}, "55": { "cell": [[6.161527, 0.0, 0.0], [3.7728471592049973e-16, 6.161527, 0.0], [3.7728471592049973e-16, 3.7728471592049973e-16, 6.161527]], "ctime": 17.113034533672316, "key_value_pairs": {"exp_B": 2.3449684759, "wien2k_B": 1.982, "wien2k_volume": 117.08, "name": "Cs", "exp_volume": 110.3240829143, "wien2k_Bp": 2.14, "exp_Bp": 3.79}, "mtime": 17.113034533672316, "numbers": [55, 55], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.0807635, 3.0807635, 3.0807635]], "unique_id": "f1f153de4cf7d87c15ec758257887007", "user": "ase"}, "56": { "cell": [[5.027918, 0.0, 0.0], [3.0787118425376805e-16, 5.027918, 0.0], [3.0787118425376805e-16, 3.0787118425376805e-16, 5.027918]], "ctime": 17.113034534135227, "key_value_pairs": {"exp_B": 10.5948206033, "wien2k_B": 8.677, "wien2k_volume": 63.1401, "name": "Ba", "exp_volume": 62.287479271, "wien2k_Bp": 3.77, "exp_Bp": 2.43}, "mtime": 17.113034534135227, "numbers": [56, 56], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.513959, 2.513959, 2.513959]], "unique_id": "ae176be77efe6e47394a5e2a6fe24dcb", "user": "ase"}, "57": { "cell": [[3.523879, 0.0, 0.0], [-1.761939499999999, 3.051768733862504, 0.0], [3.355684085866842e-16, 5.812215330871692e-16, 5.480248]], "ctime": 17.113034534430298, "key_value_pairs": {"wien2k_B": 46.384, "wien2k_Bp": 2.94, "wien2k_volume": 29.0544, "name": "Lu"}, "mtime": 17.113034534430298, "numbers": [71, 71], "pbc": [true, true, true], "positions": [[3.5238790826880036e-08, 2.034512468896545, 4.110186], [1.7619394647612103, 1.01725626496596, 1.370062]], "unique_id": "eafded65187f2b15cdd00dff7e85aa7c", "user": "ase"}, "58": { "cell": [[3.202729, 0.0, 0.0], [-1.6013644999999994, 2.7736446754371316, 0.0], [3.1013739315559027e-16, 5.371737222724465e-16, 5.064928]], "ctime": 17.113034534733934, "key_value_pairs": {"exp_B": 110.6674189102, "wien2k_B": 107.004, "wien2k_volume": 22.5325, "name": "Hf", "exp_volume": 22.2975348853, "wien2k_Bp": 3.5, "exp_Bp": 3.95}, "mtime": 17.113034534733934, "numbers": [72, 72], "pbc": [true, true, true], "positions": [[3.202729068449253e-08, 1.8490964318004568, 3.798696], [1.6013644679727104, 0.9245482436366752, 1.266232]], "unique_id": "15745f92f909cb56e8f0f56c1afa983d", "user": "ase"}, "59": { "cell": [[3.321688, 0.0, 0.0], [2.0339472884830866e-16, 3.321688, 0.0], [2.0339472884830866e-16, 2.0339472884830866e-16, 3.321688]], "ctime": 17.113034535204992, "key_value_pairs": {"exp_B": 202.6879051772, "wien2k_B": 195.147, "wien2k_volume": 18.2856, "name": "Ta", "exp_volume": 17.9333133566, "wien2k_Bp": 3.71, "exp_Bp": 3.75}, "mtime": 17.113034535204992, "numbers": [73, 73], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.660844, 1.660844, 1.660844]], "unique_id": "f644ece1b546fcb7734fc42b32effdc9", "user": "ase"}, "60": { "cell": [[3.189678, 0.0, 0.0], [1.9531144765053655e-16, 3.189678, 0.0], [1.9531144765053655e-16, 1.9531144765053655e-16, 3.189678]], "ctime": 17.11303453567952, "key_value_pairs": {"exp_B": 327.4742143494, "wien2k_B": 301.622, "wien2k_volume": 16.1394, "name": "W", "exp_volume": 15.7959730837, "wien2k_Bp": 4.28, "exp_Bp": 4.32}, "mtime": 17.11303453567952, "numbers": [74, 74], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [1.594839, 1.594839, 1.594839]], "unique_id": "81aa85c44b2cd8ffc5b832d1044dce3c", "user": "ase"}, "61": { "cell": [[2.774469, 0.0, 0.0], [-1.3872344999999993, 2.402760636012408, 0.0], [2.743164742805302e-16, 4.751300708070394e-16, 4.479928]], "ctime": 17.113034535983846, "key_value_pairs": {"exp_B": 380.7610091505, "wien2k_B": 362.85, "wien2k_volume": 14.958, "name": "Re", "exp_volume": 14.6193984266, "wien2k_Bp": 4.52, "exp_Bp": 5.41}, "mtime": 17.113034535983846, "numbers": [75, 75], "pbc": [true, true, true], "positions": [[2.7744690615545e-08, 1.601840407989868, 3.359946], [1.38723447225531, 0.8009202280225404, 1.119982]], "unique_id": "528aab009ce0827550f45cb0822e73e8", "user": "ase"}, "62": { "cell": [[2.758949, 0.0, 0.0], [-1.3794744999999993, 2.389319921745673, 0.0], [2.6678550878917356e-16, 4.620860559459619e-16, 4.356938]], "ctime": 17.113034536289515, "key_value_pairs": {"exp_B": 424.6083092316, "wien2k_B": 397.259, "wien2k_volume": 14.2802, "name": "Os", "exp_volume": 13.8455627662, "wien2k_Bp": 4.84, "exp_Bp": 4.5}, "mtime": 17.113034536289515, "numbers": [76, 76], "pbc": [true, true, true], "positions": [[2.7589490670649933e-08, 1.5928799319016496, 3.2677035000000005], [1.37947447241051, 0.7964399898440241, 1.0892345]], "unique_id": "185a7571799d65b5944ffc02fd70b904", "user": "ase"}, "63": { "cell": [[3.876749, 0.0, 0.0], [2.373824126973851e-16, 3.876749, 0.0], [2.373824126973851e-16, 2.373824126973851e-16, 3.876749]], "ctime": 17.113034536962697, "key_value_pairs": {"exp_B": 362.2372836709, "wien2k_B": 347.68, "wien2k_volume": 14.5004, "name": "Ir", "exp_volume": 14.0640862983, "wien2k_Bp": 5.18, "exp_Bp": 4.83}, "mtime": 17.113034536962697, "numbers": [77, 77, 77, 77], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.373824126973851e-16, 1.9383745000000001, 1.9383745], [1.9383745000000001, 1.1869120634869256e-16, 1.9383745], [1.9383745000000001, 1.9383745, 0.0]], "unique_id": "5bfa9867ba3be8fb4504e2b8e8c58560", "user": "ase"}, "64": { "cell": [[3.976748, 0.0, 0.0], [2.4350558546078193e-16, 3.976748, 0.0], [2.4350558546078193e-16, 2.4350558546078193e-16, 3.976748]], "ctime": 17.11303453763659, "key_value_pairs": {"exp_B": 285.5122223387, "wien2k_B": 248.711, "wien2k_volume": 15.642, "name": "Pt", "exp_volume": 15.0221694263, "wien2k_Bp": 5.46, "exp_Bp": 5.18}, "mtime": 17.11303453763659, "numbers": [78, 78, 78, 78], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.4350558546078193e-16, 1.9883740000000003, 1.988374], [1.9883740000000003, 1.2175279273039097e-16, 1.988374], [1.9883740000000003, 1.988374, 0.0]], "unique_id": "c1709bb3b5da3a5f40e91817cdf7467a", "user": "ase"}, "65": { "cell": [[4.174098, 0.0, 0.0], [2.555897877513684e-16, 4.174098, 0.0], [2.555897877513684e-16, 2.555897877513684e-16, 4.174098]], "ctime": 17.11303453831681, "key_value_pairs": {"exp_B": 182.0053319987, "wien2k_B": 139.109, "wien2k_volume": 17.9745, "name": "Au", "exp_volume": 16.8216099724, "wien2k_Bp": 5.76, "exp_Bp": 6.4}, "mtime": 17.11303453831681, "numbers": [79, 79, 79, 79], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.555897877513684e-16, 2.087049, 2.087049], [2.087049, 1.277948938756842e-16, 2.087049], [2.087049, 2.087049, 0.0]], "unique_id": "c54e9abfa797b153cf67b6190db9c0ea", "user": "ase"}, "66": { "cell": [[4.103048, 0.0, 0.0], [2.5123922999739746e-16, 4.103048, 0.0], [2.172712629617873e-16, 2.172712629617873e-16, 3.548309]], "ctime": 17.113034538634913, "key_value_pairs": {"wien2k_B": 8.204, "wien2k_Bp": 8.87, "wien2k_volume": 29.522, "name": "Hg"}, "mtime": 17.113034538634913, "numbers": [80, 80], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [2.051524, 2.051524, 1.7741545]], "unique_id": "4a0e9b98e745bd095f8168899d45fe7d", "user": "ase"}, "67": { "cell": [[3.592549, 0.0, 0.0], [-1.796274499999999, 3.1112386983403817, 0.0], [3.4546967795779056e-16, 5.983710346973511e-16, 5.641948]], "ctime": 17.113034538951997, "key_value_pairs": {"exp_B": 37.4420913632, "wien2k_B": 26.865, "wien2k_volume": 31.3902, "name": "Tl", "exp_volume": 27.9937800663, "wien2k_Bp": 5.49, "exp_Bp": 3.0}, "mtime": 17.113034538951997, "numbers": [81, 81], "pbc": [true, true, true], "positions": [[3.5925490929586e-08, 2.07415911148533, 4.231461], [1.79627446407451, 1.0370795868550522, 1.410487]], "unique_id": "37d8a0a03f9440a5d58c361deb737971", "user": "ase"}, "68": { "cell": [[5.043858, 0.0, 0.0], [3.0884722775268855e-16, 5.043858, 0.0], [3.0884722775268855e-16, 3.0884722775268855e-16, 5.043858]], "ctime": 17.11303453963937, "key_value_pairs": {"exp_B": 46.3406063802, "wien2k_B": 39.544, "wien2k_volume": 32.0028, "name": "Pb", "exp_volume": 29.8632199952, "wien2k_Bp": 4.53, "exp_Bp": 5.335}, "mtime": 17.11303453963937, "numbers": [82, 82, 82, 82], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [3.0884722775268855e-16, 2.521929, 2.521929], [2.521929, 1.5442361387634428e-16, 2.521929], [2.521929, 2.521929, 0.0]], "unique_id": "3efc2ade0e5c332bdaa1c760f057a37e", "user": "ase"}, "69": { "cell": [[4.848493, 0.0, 0.0], [2.677119162003692, 4.042390055831037, 0.0], [2.677119162003692, 1.4380172198346586, 3.777965568787076]], "ctime": 17.113034539928318, "key_value_pairs": {"exp_B": 32.0779415682, "wien2k_B": 42.63, "wien2k_volume": 36.9047, "name": "Bi", "exp_volume": 35.1255842981, "wien2k_Bp": 4.7, "exp_Bp": 2.4}, "mtime": 17.113034539928318, "numbers": [83, 83], "pbc": [true, true, true], "positions": [[2.716555416423838, 1.4592003910219946, 1.0059123096854716], [7.486175951011023, 4.0212068037958995, 2.7720532591016047]], "unique_id": "a53b667b7bff598fd960dfe3956708b0", "user": "ase"}, "70": { "cell": [[3.348179, 0.0, 0.0], [2.0501683476611929e-16, 3.348179, 0.0], [2.0501683476611929e-16, 2.0501683476611929e-16, 3.348179]], "ctime": 17.113034540309204, "key_value_pairs": {"wien2k_B": 45.458, "wien2k_Bp": 4.93, "wien2k_volume": 37.5869, "name": "Po"}, "mtime": 17.113034540309204, "numbers": [84], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0]], "unique_id": "74a051cd23c748ee0f47da50a356fa31", "user": "ase"}, "71": { "cell": [[7.194167, 0.0, 0.0], [4.4051567945407586e-16, 7.194167, 0.0], [4.4051567945407586e-16, 4.4051567945407586e-16, 7.194167]], "ctime": 17.113034540996757, "key_value_pairs": {"wien2k_B": 0.564, "wien2k_Bp": 8.62, "wien2k_volume": 92.6852, "name": "Rn"}, "mtime": 17.113034540996757, "numbers": [86, 86, 86, 86], "pbc": [true, true, true], "positions": [[0.0, 0.0, 0.0], [4.4051567945407586e-16, 3.5970835, 3.5970835], [3.5970835, 2.2025783972703793e-16, 3.5970835], [3.5970835, 3.5970835, 0.0]], "unique_id": "d386b0e0c8235904a50fa3b4e604215a", "user": "ase"}, "ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71], "nextid": 72} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/g2.json000066400000000000000000001707571316323560300243010ustar00rootroot00000000000000{"1": { "ctime": 16.302038528732172, "key_value_pairs": {"name": "PH3"}, "mtime": 16.302038528732172, "numbers": [15, 1, 1, 1], "positions": [[0.0, 0.0, 0.124619], [0.0, 1.200647, -0.623095], [1.039791, -0.600323, -0.623095], [-1.039791, -0.600323, -0.623095]], "unique_id": "177a3374d4f3f4d309df670c24d6308b", "user": "ase"}, "2": { "ctime": 16.302038528761795, "key_value_pairs": {"name": "P2"}, "mtime": 16.302038528761795, "numbers": [15, 15], "positions": [[0.0, 0.0, 0.966144], [0.0, 0.0, -0.966144]], "unique_id": "c83d21f1597cc4f9fa4410537c72bf57", "user": "ase"}, "3": { "ctime": 16.302038528786735, "key_value_pairs": {"name": "CH3CHO"}, "mtime": 16.302038528786735, "numbers": [8, 6, 1, 6, 1, 1, 1], "positions": [[1.218055, 0.36124, 0.0], [0.0, 0.464133, 0.0], [-0.477241, 1.465295, 0.0], [-0.948102, -0.700138, 0.0], [-0.385946, -1.634236, 0.0], [-1.596321, -0.652475, 0.880946], [-1.596321, -0.652475, -0.880946]], "unique_id": "2c59f16fea8e698b8468cd68120aa659", "user": "ase"}, "4": { "ctime": 16.302038528855167, "initial_magmoms": [0.7, 0.3, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "H2COH"}, "mtime": 16.302038528855167, "numbers": [6, 8, 1, 1, 1], "positions": [[0.687448, 0.029626, -0.082014], [-0.672094, -0.125648, 0.030405], [-1.09185, 0.740282, -0.095167], [1.122783, 0.975263, 0.225993], [1.221131, -0.888116, 0.118015]], "unique_id": "844a3b04fabb0baf3da189823ce9690c", "user": "ase"}, "5": { "ctime": 16.302038528874252, "key_value_pairs": {"name": "CS"}, "mtime": 16.302038528874252, "numbers": [6, 16], "positions": [[0.0, 0.0, -1.123382], [0.0, 0.0, 0.421268]], "unique_id": "a67e0db84262634c7ff4ceeb04118f22", "user": "ase"}, "6": { "ctime": 16.30203852889487, "key_value_pairs": {"name": "OCHCHO"}, "mtime": 16.30203852889487, "numbers": [6, 6, 8, 1, 8, 1], "positions": [[0.0, 0.75643, 0.0], [0.0, -0.75643, 0.0], [1.04609, 1.389916, 0.0], [-0.99994, 1.228191, 0.0], [-1.04609, -1.389916, 0.0], [0.99994, -1.228191, 0.0]], "unique_id": "86314327da845a869005fcc359e16e2a", "user": "ase"}, "7": { "ctime": 16.3020385289153, "initial_magmoms": [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "C3H9C"}, "mtime": 16.3020385289153, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.191929], [0.0, 1.478187, -0.020866], [1.280147, -0.739093, -0.020866], [-1.280147, -0.739093, -0.020866], [0.0, 1.731496, -1.093792], [-0.887043, 1.945769, 0.417565], [0.887043, 1.945769, 0.417565], [1.49952, -0.865748, -1.093792], [2.128607, -0.204683, 0.417565], [1.241564, -1.741086, 0.417565], [-1.49952, -0.865748, -1.093792], [-1.241564, -1.741086, 0.417565], [-2.128607, -0.204683, 0.417565]], "unique_id": "cda3bb8c40273e86a8250ab4dc9fe37a", "user": "ase"}, "8": { "ctime": 16.302038528938063, "key_value_pairs": {"name": "CH3COF"}, "mtime": 16.302038528938063, "numbers": [6, 8, 9, 6, 1, 1, 1], "positions": [[0.0, 0.186396, 0.0], [0.126651, 1.377199, 0.0], [-1.24395, -0.382745, 0.0], [1.049454, -0.876224, 0.0], [2.035883, -0.417099, 0.0], [0.924869, -1.508407, 0.881549], [0.924869, -1.508407, -0.881549]], "unique_id": "e42bc5d75754b11ee74862c0821c12cd", "user": "ase"}, "9": { "ctime": 16.30203852896313, "key_value_pairs": {"name": "CH3CH2OCH3"}, "mtime": 16.30203852896313, "numbers": [8, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.006429, -0.712741, 0.0], [0.0, 0.705845, 0.0], [1.324518, -1.226029, 0.0], [-1.442169, 1.160325, 0.0], [0.530962, 1.086484, 0.886881], [0.530962, 1.086484, -0.886881], [1.241648, -2.313325, 0.0], [1.881329, -0.905925, -0.89171], [1.881329, -0.905925, 0.89171], [-1.954863, 0.780605, -0.885855], [-1.954863, 0.780605, 0.885855], [-1.502025, 2.252083, 0.0]], "unique_id": "e8994e2ec4acf90acf9d673b659b55dc", "user": "ase"}, "10": { "ctime": 16.30203852899144, "key_value_pairs": {"name": "HCOOH"}, "mtime": 16.30203852899144, "numbers": [8, 6, 8, 1, 1], "positions": [[-1.040945, -0.436432, 0.0], [0.0, 0.423949, 0.0], [1.169372, 0.103741, 0.0], [-0.64957, -1.335134, 0.0], [-0.377847, 1.452967, 0.0]], "unique_id": "98729cfc21ae4ea1693a5a637abaec90", "user": "ase"}, "11": { "ctime": 16.302038529020948, "key_value_pairs": {"name": "HCCl3"}, "mtime": 16.302038529020948, "numbers": [6, 1, 17, 17, 17], "positions": [[0.0, 0.0, 0.451679], [0.0, 0.0, 1.537586], [0.0, 1.681723, -0.083287], [1.456415, -0.840862, -0.083287], [-1.456415, -0.840862, -0.083287]], "unique_id": "a4c0a6583e57368deafbf22e3cff596d", "user": "ase"}, "12": { "ctime": 16.302038529052716, "key_value_pairs": {"name": "HOCl"}, "mtime": 16.302038529052716, "numbers": [8, 1, 17], "positions": [[0.036702, 1.113517, 0.0], [-0.917548, 1.328879, 0.0], [0.036702, -0.602177, 0.0]], "unique_id": "7e93be94691739f3562e198b55d4dbdd", "user": "ase"}, "13": { "ctime": 16.302038529085333, "key_value_pairs": {"name": "H2"}, "mtime": 16.302038529085333, "numbers": [1, 1], "positions": [[0.0, 0.0, 0.368583], [0.0, 0.0, -0.368583]], "unique_id": "4e0015f6c83b6f94cc6a261944a5feee", "user": "ase"}, "14": { "ctime": 16.302038529120924, "key_value_pairs": {"name": "SH2"}, "mtime": 16.302038529120924, "numbers": [16, 1, 1], "positions": [[0.0, 0.0, 0.102135], [0.0, 0.974269, -0.817083], [0.0, -0.974269, -0.817083]], "unique_id": "be392ada8c02e6edd973bfc7b6c32569", "user": "ase"}, "15": { "ctime": 16.302038529158555, "key_value_pairs": {"name": "C2H2"}, "mtime": 16.302038529158555, "numbers": [6, 6, 1, 1], "positions": [[0.0, 0.0, 0.60808], [0.0, 0.0, -0.60808], [0.0, 0.0, -1.67399], [0.0, 0.0, 1.67399]], "unique_id": "34b4540142671bf77510ff8320435446", "user": "ase"}, "16": { "ctime": 16.302038529197365, "key_value_pairs": {"name": "C4H4NH"}, "mtime": 16.302038529197365, "numbers": [1, 7, 6, 6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 2.129296], [0.0, 0.0, 1.118684], [0.0, 1.124516, 0.333565], [0.0, -1.124516, 0.333565], [0.0, 0.708407, -0.983807], [0.0, -0.708407, -0.983807], [0.0, 2.112872, 0.770496], [0.0, -2.112872, 0.770496], [0.0, 1.357252, -1.849085], [0.0, -1.357252, -1.849085]], "unique_id": "87c76766f3902ba8f0dd39e5db51f159", "user": "ase"}, "17": { "ctime": 16.302038529238562, "key_value_pairs": {"name": "CH3SCH3"}, "mtime": 16.302038529238562, "numbers": [6, 16, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 1.366668, -0.513713], [0.0, 0.0, 0.664273], [0.0, -1.366668, -0.513713], [0.0, 2.296687, 0.057284], [0.891644, 1.34568, -1.144596], [-0.891644, 1.34568, -1.144596], [0.0, -2.296687, 0.057284], [-0.891644, -1.34568, -1.144596], [0.891644, -1.34568, -1.144596]], "unique_id": "111e9b84a1d49dc3a7db1edead13c5f2", "user": "ase"}, "18": { "ctime": 16.302038529286275, "initial_magmoms": [2.0, 0.0, 0.0], "key_value_pairs": {"name": "SiH2_s3B1d"}, "mtime": 16.302038529286275, "numbers": [14, 1, 1], "positions": [[0.0, 0.0, 0.094869], [0.0, 1.271862, -0.664083], [0.0, -1.271862, -0.664083]], "unique_id": "3440f12cdff3ac0246e3b789689ce3c1", "user": "ase"}, "19": { "ctime": 16.30203852933789, "key_value_pairs": {"name": "CH3SH"}, "mtime": 16.30203852933789, "numbers": [6, 16, 1, 1, 1, 1], "positions": [[-0.047953, 1.149519, 0.0], [-0.047953, -0.664856, 0.0], [1.283076, -0.823249, 0.0], [-1.092601, 1.461428, 0.0], [0.432249, 1.551207, 0.892259], [0.432249, 1.551207, -0.892259]], "unique_id": "3a4d97903fcf1f82910c2bea5430557c", "user": "ase"}, "20": { "ctime": 16.302038529394785, "initial_magmoms": [0.1, 0.6, 0.0, 0.0, 0.0, 0.3], "key_value_pairs": {"name": "CH3CO"}, "mtime": 16.302038529394785, "numbers": [6, 6, 1, 1, 1, 8], "positions": [[-0.978291, -0.647814, 0.0], [0.0, 0.506283, 0.0], [-0.455551, -1.607837, 0.0], [-1.617626, -0.563271, 0.881061], [-1.617626, -0.563271, -0.881061], [1.195069, 0.447945, 0.0]], "unique_id": "7db779a4fa19fb9c477beffab81d86a5", "user": "ase"}, "21": { "ctime": 16.302038529445298, "key_value_pairs": {"name": "CO"}, "mtime": 16.302038529445298, "numbers": [8, 6], "positions": [[0.0, 0.0, 0.493003], [0.0, 0.0, -0.657337]], "unique_id": "2dc58570997ab5cd0d099812bdcd32f4", "user": "ase"}, "22": { "ctime": 16.302038529497768, "key_value_pairs": {"name": "ClF3"}, "mtime": 16.302038529497768, "numbers": [17, 9, 9, 9], "positions": [[0.0, 0.0, 0.376796], [0.0, 0.0, -1.258346], [0.0, 1.714544, 0.27331], [0.0, -1.714544, 0.27331]], "unique_id": "466effd918d4405715534394f9fc1c7c", "user": "ase"}, "23": { "ctime": 16.302038529551183, "key_value_pairs": {"name": "SiH4"}, "mtime": 16.302038529551183, "numbers": [14, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.0], [0.856135, 0.856135, 0.856135], [-0.856135, -0.856135, 0.856135], [-0.856135, 0.856135, -0.856135], [0.856135, -0.856135, -0.856135]], "unique_id": "e7800e1b0ebd5d5705b9e75cde6f9c61", "user": "ase"}, "24": { "ctime": 16.302038529606666, "key_value_pairs": {"name": "C2H6CHOH"}, "mtime": 16.302038529606666, "numbers": [8, 6, 1, 1, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.027191, 1.363691, -0.167516], [-0.000926, 0.036459, 0.370128], [0.859465, 1.775647, 0.121307], [0.007371, 0.082145, 1.470506], [-1.313275, -0.563514, -0.088979], [1.200721, -0.76448, -0.10492], [-1.334005, -0.607253, -1.181009], [1.202843, -0.807817, -1.197189], [-2.147812, 0.054993, 0.247676], [2.136462, -0.299324, 0.223164], [-1.438709, -1.574275, 0.30834], [1.177736, -1.784436, 0.289967]], "unique_id": "1f7a5731c795e9199f4009d6f5f99d6a", "user": "ase"}, "25": { "ctime": 16.3020385296658, "key_value_pairs": {"name": "CH2NHCH2"}, "mtime": 16.3020385296658, "numbers": [6, 7, 6, 1, 1, 1, 1, 1], "positions": [[-0.03845, -0.397326, 0.739421], [-0.03845, 0.875189, 0.0], [-0.03845, -0.397326, -0.739421], [0.903052, 1.268239, 0.0], [-0.955661, -0.604926, 1.280047], [-0.955661, -0.604926, -1.280047], [0.869409, -0.708399, 1.249033], [0.869409, -0.708399, -1.249033]], "unique_id": "a78c12d3d9bbcabcb7547689950c5581", "user": "ase"}, "26": { "ctime": 16.302038529726854, "key_value_pairs": {"name": "isobutene"}, "mtime": 16.302038529726854, "numbers": [6, 6, 1, 1, 6, 1, 1, 1, 6, 1, 1, 1], "positions": [[0.0, 0.0, 1.458807], [0.0, 0.0, 0.119588], [0.0, 0.924302, 2.028409], [0.0, -0.924302, 2.028409], [0.0, 1.272683, -0.678803], [0.0, 2.153042, -0.031588], [0.880211, 1.323542, -1.329592], [-0.880211, 1.323542, -1.329592], [0.0, -1.272683, -0.678803], [0.0, -2.153042, -0.031588], [-0.880211, -1.323542, -1.329592], [0.880211, -1.323542, -1.329592]], "unique_id": "8901408f6fcce81180bb539b1504103e", "user": "ase"}, "27": { "ctime": 16.30203852978909, "initial_magmoms": [1.0, 0.0, 0.0], "key_value_pairs": {"name": "HCO"}, "mtime": 16.30203852978909, "numbers": [6, 8, 1], "positions": [[0.06256, 0.593926, 0.0], [0.06256, -0.596914, 0.0], [-0.875835, 1.211755, 0.0]], "unique_id": "ac965b1ad092d6c2784c746b6d9fd7a0", "user": "ase"}, "28": { "ctime": 16.302038529852144, "key_value_pairs": {"name": "bicyclobutane"}, "mtime": 16.302038529852144, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 1.131343, 0.310424], [0.0, -1.131343, 0.310424], [0.747952, 0.0, -0.311812], [-0.747952, 0.0, -0.311812], [0.0, 1.237033, 1.397617], [0.0, 2.077375, -0.227668], [0.0, -1.237033, 1.397617], [0.0, -2.077375, -0.227668], [1.41441, 0.0, -1.161626], [-1.41441, 0.0, -1.161626]], "unique_id": "b743af7edb4929fda0141055f914a258", "user": "ase"}, "29": { "ctime": 16.302038529918615, "key_value_pairs": {"name": "LiF"}, "mtime": 16.302038529918615, "numbers": [3, 9], "positions": [[0.0, 0.0, -1.174965], [0.0, 0.0, 0.391655]], "unique_id": "fb54551737abbf45b0fee76cc844bf8d", "user": "ase"}, "30": { "ctime": 16.302038529985175, "initial_magmoms": [2.0], "key_value_pairs": {"name": "Si"}, "mtime": 16.302038529985175, "numbers": [14], "positions": [[0.0, 0.0, 0.0]], "unique_id": "4abe72cd21b2ebab1155e05ae39c7f59", "user": "ase"}, "31": { "ctime": 16.302038530053796, "key_value_pairs": {"name": "C2H6"}, "mtime": 16.302038530053796, "numbers": [6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.762209], [0.0, 0.0, -0.762209], [0.0, 1.018957, 1.157229], [-0.882443, -0.509479, 1.157229], [0.882443, -0.509479, 1.157229], [0.0, -1.018957, -1.157229], [-0.882443, 0.509479, -1.157229], [0.882443, 0.509479, -1.157229]], "unique_id": "4828fbb24b7c67583b70363d15891247", "user": "ase"}, "32": { "ctime": 16.30203853012582, "initial_magmoms": [1.0, 0.0], "key_value_pairs": {"name": "CN"}, "mtime": 16.30203853012582, "numbers": [6, 7], "positions": [[0.0, 0.0, -0.611046], [0.0, 0.0, 0.523753]], "unique_id": "e9071d92cd0648afc74accafc67c1eef", "user": "ase"}, "33": { "ctime": 16.302038530198217, "key_value_pairs": {"name": "ClNO"}, "mtime": 16.302038530198217, "numbers": [17, 7, 8], "positions": [[-0.537724, -0.961291, 0.0], [0.0, 0.997037, 0.0], [1.142664, 1.170335, 0.0]], "unique_id": "d8c75964ea3a8e8b5a3b6e28fac35f5e", "user": "ase"}, "34": { "ctime": 16.302038530272792, "initial_magmoms": [2.0], "key_value_pairs": {"name": "S"}, "mtime": 16.302038530272792, "numbers": [16], "positions": [[0.0, 0.0, 0.0]], "unique_id": "de76193384947b9b974f779ead9dc420", "user": "ase"}, "35": { "ctime": 16.302038530348472, "key_value_pairs": {"name": "SiF4"}, "mtime": 16.302038530348472, "numbers": [14, 9, 9, 9, 9], "positions": [[0.0, 0.0, 0.0], [0.912806, 0.912806, 0.912806], [-0.912806, -0.912806, 0.912806], [-0.912806, 0.912806, -0.912806], [0.912806, -0.912806, -0.912806]], "unique_id": "b70ff90d9a0571e048f3068c2d0ad2a5", "user": "ase"}, "36": { "ctime": 16.30203853043923, "key_value_pairs": {"name": "H3CNH2"}, "mtime": 16.30203853043923, "numbers": [6, 7, 1, 1, 1, 1, 1], "positions": [[0.051736, 0.704422, 0.0], [0.051736, -0.759616, 0.0], [-0.941735, 1.176192, 0.0], [-0.458181, -1.099433, 0.81237], [-0.458181, -1.099433, -0.81237], [0.592763, 1.056727, 0.88067], [0.592763, 1.056727, -0.88067]], "unique_id": "5f9d96b964a4f078139e0a752ec68e07", "user": "ase"}, "37": { "ctime": 16.30203853051921, "key_value_pairs": {"name": "methylenecyclopropane"}, "mtime": 16.30203853051921, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.315026], [0.0, -0.76792, -0.932032], [0.0, 0.76792, -0.932032], [0.0, 0.0, 1.640027], [-0.912794, -1.271789, -1.239303], [0.912794, -1.271789, -1.239303], [0.912794, 1.271789, -1.239303], [-0.912794, 1.271789, -1.239303], [0.0, -0.926908, 2.20564], [0.0, 0.926908, 2.20564]], "unique_id": "fe83638738fdc995b1163db7ac08de27", "user": "ase"}, "38": { "ctime": 16.302038530600992, "key_value_pairs": {"name": "CH3CH2OH"}, "mtime": 16.302038530600992, "numbers": [6, 6, 8, 1, 1, 1, 1, 1, 1], "positions": [[1.168181, -0.400382, 0.0], [0.0, 0.559462, 0.0], [-1.190083, -0.227669, 0.0], [-1.946623, 0.381525, 0.0], [0.042557, 1.207508, 0.886933], [0.042557, 1.207508, -0.886933], [2.115891, 0.1448, 0.0], [1.128599, -1.037234, 0.885881], [1.128599, -1.037234, -0.885881]], "unique_id": "fd22d308db415a5e0fdeb6100c4297ca", "user": "ase"}, "39": { "ctime": 16.302038530687163, "initial_magmoms": [1.0], "key_value_pairs": {"name": "F"}, "mtime": 16.302038530687163, "numbers": [9], "positions": [[0.0, 0.0, 0.0]], "unique_id": "316d5b8bdb3637fe68f2dc4f372fa9e4", "user": "ase"}, "40": { "ctime": 16.30203853077358, "key_value_pairs": {"name": "NaCl"}, "mtime": 16.30203853077358, "numbers": [11, 17], "positions": [[0.0, 0.0, -1.45166], [0.0, 0.0, 0.93931]], "unique_id": "62c83ffe174e0db7afc4d781a4877948", "user": "ase"}, "41": { "ctime": 16.30203853086058, "key_value_pairs": {"name": "CH3Cl"}, "mtime": 16.30203853086058, "numbers": [6, 17, 1, 1, 1], "positions": [[0.0, 0.0, -1.121389], [0.0, 0.0, 0.655951], [0.0, 1.029318, -1.47428], [0.891415, -0.514659, -1.47428], [-0.891415, -0.514659, -1.47428]], "unique_id": "293743b5e5b148f81d515c105e95b197", "user": "ase"}, "42": { "ctime": 16.302038530952846, "key_value_pairs": {"name": "CH3SiH3"}, "mtime": 16.302038530952846, "numbers": [6, 14, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, -1.244466], [0.0, 0.0, 0.635703], [0.0, -1.019762, -1.636363], [-0.88314, 0.509881, -1.636363], [0.88314, 0.509881, -1.636363], [0.0, 1.391234, 1.158682], [-1.204844, -0.695617, 1.158682], [1.204844, -0.695617, 1.158682]], "unique_id": "d902f0ee92ce2091e325270a37b05cd5", "user": "ase"}, "43": { "ctime": 16.302038531046776, "key_value_pairs": {"name": "AlF3"}, "mtime": 16.302038531046776, "numbers": [13, 9, 9, 9], "positions": [[0.0, 0.0, 0.0], [0.0, 1.64472, 0.0], [1.424369, -0.82236, 0.0], [-1.424369, -0.82236, 0.0]], "unique_id": "f38574ff7b7971bc70cb7d1334f6d1a7", "user": "ase"}, "44": { "ctime": 16.30203853114171, "initial_magmoms": [0.0, 1.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "C2H3"}, "mtime": 16.30203853114171, "numbers": [6, 6, 1, 1, 1], "positions": [[0.049798, -0.576272, 0.0], [0.049798, 0.710988, 0.0], [-0.87675, -1.151844, 0.0], [0.969183, -1.154639, 0.0], [-0.690013, 1.498185, 0.0]], "unique_id": "5c7e9aa81068b4c0a7346e5759c687d8", "user": "ase"}, "45": { "ctime": 16.30203853123661, "key_value_pairs": {"name": "ClF"}, "mtime": 16.30203853123661, "numbers": [9, 17], "positions": [[0.0, 0.0, -1.084794], [0.0, 0.0, 0.574302]], "unique_id": "8383fa1ddeb7cd92f7c1794a21e6d876", "user": "ase"}, "46": { "ctime": 16.302038531334176, "key_value_pairs": {"name": "PF3"}, "mtime": 16.302038531334176, "numbers": [15, 9, 9, 9], "positions": [[0.0, 0.0, 0.506767], [0.0, 1.383861, -0.281537], [1.198459, -0.691931, -0.281537], [-1.198459, -0.691931, -0.281537]], "unique_id": "1b59a8b9d2225516ea198b7869c3b482", "user": "ase"}, "47": { "ctime": 16.302038531434924, "initial_magmoms": [1.0, 0.0, 0.0], "key_value_pairs": {"name": "PH2"}, "mtime": 16.302038531434924, "numbers": [15, 1, 1], "positions": [[0.0, 0.0, 0.115396], [0.0, 1.025642, -0.865468], [0.0, -1.025642, -0.865468]], "unique_id": "677cc19a22f3b77bcd4a7cb1107e383c", "user": "ase"}, "48": { "ctime": 16.302038531536915, "key_value_pairs": {"name": "CH3CN"}, "mtime": 16.302038531536915, "numbers": [6, 6, 7, 1, 1, 1], "positions": [[0.0, 0.0, -1.18693], [0.0, 0.0, 0.273874], [0.0, 0.0, 1.452206], [0.0, 1.024986, -1.56237], [0.887664, -0.512493, -1.56237], [-0.887664, -0.512493, -1.56237]], "unique_id": "4d750e9e913fe811ed5bcf7622bbdbde", "user": "ase"}, "49": { "ctime": 16.302038531640957, "key_value_pairs": {"name": "cyclobutene"}, "mtime": 16.302038531640957, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, -0.672762, 0.811217], [0.0, 0.672762, 0.811217], [0.0, -0.78198, -0.696648], [0.0, 0.78198, -0.696648], [0.0, -1.422393, 1.597763], [0.0, 1.422393, 1.597763], [-0.88931, -1.239242, -1.142591], [0.88931, -1.239242, -1.142591], [0.88931, 1.239242, -1.142591], [-0.88931, 1.239242, -1.142591]], "unique_id": "bddc60ddb5e6fb57166437fd441bfa6e", "user": "ase"}, "50": { "ctime": 16.30203853174532, "key_value_pairs": {"name": "CH3ONO"}, "mtime": 16.30203853174532, "numbers": [6, 8, 1, 1, 1, 7, 8], "positions": [[-1.316208, 0.309247, 0.0], [0.0, 0.896852, 0.0], [-1.985538, 1.166013, 0.0], [-1.464336, -0.304637, 0.890672], [-1.464336, -0.304637, -0.890672], [1.045334, -0.022815, 0.0], [0.686764, -1.178416, 0.0]], "unique_id": "b6af1b0d4ca223e85e436d123bacf8c9", "user": "ase"}, "51": { "ctime": 16.30203853185419, "initial_magmoms": [1.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "SiH3"}, "mtime": 16.30203853185419, "numbers": [14, 1, 1, 1], "positions": [[0.0, 0.0, 0.079299], [0.0, 1.41328, -0.370061], [1.223937, -0.70664, -0.370061], [-1.223937, -0.70664, -0.370061]], "unique_id": "4bb4755ab3a9f270b71d3bc8a5d03984", "user": "ase"}, "52": { "ctime": 16.30203853196549, "key_value_pairs": {"name": "C3H6_D3h"}, "mtime": 16.30203853196549, "numbers": [6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.866998, 0.0], [0.750842, -0.433499, 0.0], [-0.750842, -0.433499, 0.0], [0.0, 1.455762, 0.910526], [0.0, 1.455762, -0.910526], [1.260727, -0.727881, -0.910526], [1.260727, -0.727881, 0.910526], [-1.260727, -0.727881, 0.910526], [-1.260727, -0.727881, -0.910526]], "unique_id": "c04d96de725874282d76b2bc4d726d4e", "user": "ase"}, "53": { "ctime": 16.302038532077685, "key_value_pairs": {"name": "CO2"}, "mtime": 16.302038532077685, "numbers": [6, 8, 8], "positions": [[0.0, 0.0, 0.0], [0.0, 0.0, 1.178658], [0.0, 0.0, -1.178658]], "unique_id": "d3a46ead9c3c48aeb35b31d7e72397be", "user": "ase"}, "54": { "ctime": 16.302038532192686, "initial_magmoms": [0.6, 0.4], "key_value_pairs": {"name": "NO"}, "mtime": 16.302038532192686, "numbers": [7, 8], "positions": [[0.0, 0.0, -0.609442], [0.0, 0.0, 0.533261]], "unique_id": "4faf4473ada93de977a5d1b60b0c62b5", "user": "ase"}, "55": { "ctime": 16.302038532308753, "key_value_pairs": {"name": "trans-butane"}, "mtime": 16.302038532308753, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.702581, 1.820873, 0.0], [0.702581, 0.296325, 0.0], [-0.702581, -0.296325, 0.0], [-0.702581, -1.820873, 0.0], [1.719809, 2.22234, 0.0], [-1.719809, -2.22234, 0.0], [0.188154, 2.210362, 0.883614], [0.188154, 2.210362, -0.883614], [-0.188154, -2.210362, 0.883614], [-0.188154, -2.210362, -0.883614], [1.247707, -0.07266, -0.877569], [1.247707, -0.07266, 0.877569], [-1.247707, 0.07266, -0.877569], [-1.247707, 0.07266, 0.877569]], "unique_id": "596de1d0a5fee997095ea5b90a80ed18", "user": "ase"}, "56": { "ctime": 16.30203853242942, "key_value_pairs": {"name": "H2CCHCl"}, "mtime": 16.30203853242942, "numbers": [6, 6, 17, 1, 1, 1], "positions": [[0.0, 0.756016, 0.0], [1.303223, 1.028507, 0.0], [-0.631555, -0.85498, 0.0], [-0.771098, 1.516963, 0.0], [2.056095, 0.249427, 0.0], [1.632096, 2.061125, 0.0]], "unique_id": "1f5bae7b0d04b3040b9f2c664120d0b5", "user": "ase"}, "57": { "ctime": 16.302038532549805, "key_value_pairs": {"name": "LiH"}, "mtime": 16.302038532549805, "numbers": [3, 1], "positions": [[0.0, 0.0, 0.41], [0.0, 0.0, -1.23]], "unique_id": "dd06a43636ffb443c955d1159ea480e7", "user": "ase"}, "58": { "ctime": 16.30203853267469, "initial_magmoms": [1.0, 0.0, 0.0], "key_value_pairs": {"name": "NH2"}, "mtime": 16.30203853267469, "numbers": [7, 1, 1], "positions": [[0.0, 0.0, 0.14169], [0.0, 0.806442, -0.495913], [0.0, -0.806442, -0.495913]], "unique_id": "9e1a9bb33cb415b7229dcda4d785ffb8", "user": "ase"}, "59": { "ctime": 16.30203853279835, "initial_magmoms": [1.0, 0.0], "key_value_pairs": {"name": "CH"}, "mtime": 16.30203853279835, "numbers": [6, 1], "positions": [[0.0, 0.0, 0.160074], [0.0, 0.0, -0.960446]], "unique_id": "f9bb8df54ac69effb5b34dd55d8d6d24", "user": "ase"}, "60": { "ctime": 16.302038532931153, "key_value_pairs": {"name": "CH2OCH2"}, "mtime": 16.302038532931153, "numbers": [6, 8, 6, 1, 1, 1, 1], "positions": [[0.0, 0.73158, -0.375674], [0.0, 0.0, 0.86095], [0.0, -0.73158, -0.375674], [0.919568, 1.268821, -0.594878], [-0.919568, 1.268821, -0.594878], [-0.919568, -1.268821, -0.594878], [0.919568, -1.268821, -0.594878]], "unique_id": "1dc7c57b945338d7ec845e2540c18685", "user": "ase"}, "61": { "ctime": 16.302038533058695, "key_value_pairs": {"name": "C6H6"}, "mtime": 16.302038533058695, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 1.395248, 0.0], [1.20832, 0.697624, 0.0], [1.20832, -0.697624, 0.0], [0.0, -1.395248, 0.0], [-1.20832, -0.697624, 0.0], [-1.20832, 0.697624, 0.0], [0.0, 2.48236, 0.0], [2.149787, 1.24118, 0.0], [2.149787, -1.24118, 0.0], [0.0, -2.48236, 0.0], [-2.149787, -1.24118, 0.0], [-2.149787, 1.24118, 0.0]], "unique_id": "b83af1c8be81855be8a923b56b6e1d8a", "user": "ase"}, "62": { "ctime": 16.302038533189588, "key_value_pairs": {"name": "CH3CONH2"}, "mtime": 16.302038533189588, "numbers": [8, 6, 7, 6, 1, 1, 1, 1, 1], "positions": [[0.424546, 1.327024, 0.008034], [0.077158, 0.149789, -0.004249], [0.985518, -0.878537, -0.04891], [-1.371475, -0.288665, -0.000144], [0.707952, -1.824249, 0.169942], [-1.997229, 0.584922, -0.175477], [-1.560842, -1.03927, -0.771686], [-1.632113, -0.723007, 0.969814], [1.953133, -0.631574, 0.111866]], "unique_id": "bd62d7261921227de3ad807ee12de21c", "user": "ase"}, "63": { "ctime": 16.302038533321475, "key_value_pairs": {"name": "cyclobutane"}, "mtime": 16.302038533321475, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 1.071142, 0.147626], [0.0, -1.071142, 0.147626], [-1.071142, 0.0, -0.147626], [1.071142, 0.0, -0.147626], [0.0, 1.986858, -0.450077], [0.0, 1.342921, 1.20752], [0.0, -1.986858, -0.450077], [0.0, -1.342921, 1.20752], [-1.986858, 0.0, 0.450077], [-1.342921, 0.0, -1.20752], [1.986858, 0.0, 0.450077], [1.342921, 0.0, -1.20752]], "unique_id": "d17e45d22853807fe35376afc7a3b7d1", "user": "ase"}, "64": { "ctime": 16.30203853345847, "key_value_pairs": {"name": "H2CCHCN"}, "mtime": 16.30203853345847, "numbers": [6, 6, 6, 1, 1, 1, 7], "positions": [[-0.161594, -1.638625, 0.0], [0.584957, -0.524961, 0.0], [0.0, 0.782253, 0.0], [-1.245203, -1.598169, 0.0], [0.305973, -2.616405, 0.0], [1.669863, -0.572107, 0.0], [-0.467259, 1.867811, 0.0]], "unique_id": "7c6ba747b0a2e8152d22b164c0a3957c", "user": "ase"}, "65": { "ctime": 16.302038533594686, "key_value_pairs": {"name": "butadiene"}, "mtime": 16.302038533594686, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.605711, 1.74655, 0.0], [0.605711, 0.404083, 0.0], [-0.605711, -0.404083, 0.0], [-0.605711, -1.74655, 0.0], [1.527617, 2.317443, 0.0], [-0.321132, 2.313116, 0.0], [1.553503, -0.13364, 0.0], [-1.553503, 0.13364, 0.0], [0.321132, -2.313116, 0.0], [-1.527617, -2.317443, 0.0]], "unique_id": "a4803060732c2eb65991aacaea93f6ca", "user": "ase"}, "66": { "ctime": 16.302038533734578, "initial_magmoms": [2.0], "key_value_pairs": {"name": "C"}, "mtime": 16.302038533734578, "numbers": [6], "positions": [[0.0, 0.0, 0.0]], "unique_id": "809b099439604d6a6305652d6ac73237", "user": "ase"}, "67": { "ctime": 16.302038533874427, "key_value_pairs": {"name": "H2CO"}, "mtime": 16.302038533874427, "numbers": [8, 6, 1, 1], "positions": [[0.0, 0.0, 0.683501], [0.0, 0.0, -0.536614], [0.0, 0.93439, -1.124164], [0.0, -0.93439, -1.124164]], "unique_id": "ec984a82a19fb8a215361185ead9f019", "user": "ase"}, "68": { "ctime": 16.302038534018592, "key_value_pairs": {"name": "CH3COOH"}, "mtime": 16.302038534018592, "numbers": [6, 8, 8, 1, 6, 1, 1, 1], "positions": [[0.0, 0.15456, 0.0], [0.166384, 1.360084, 0.0], [-1.236449, -0.415036, 0.0], [-1.867646, 0.333582, 0.0], [1.073776, -0.892748, 0.0], [2.048189, -0.408135, 0.0], [0.968661, -1.528353, 0.881747], [0.968661, -1.528353, -0.881747]], "unique_id": "7883c8e9de947e9cd3cf1e8fb62a079a", "user": "ase"}, "69": { "ctime": 16.302038534162357, "key_value_pairs": {"name": "HCF3"}, "mtime": 16.302038534162357, "numbers": [6, 1, 9, 9, 9], "positions": [[0.0, 0.0, 0.341023], [0.0, 0.0, 1.429485], [0.0, 1.2582, -0.128727], [1.089633, -0.6291, -0.128727], [-1.089633, -0.6291, -0.128727]], "unique_id": "84cef56ed1df4aeb57e3cc87c1d4ab5a", "user": "ase"}, "70": { "ctime": 16.302038534311922, "initial_magmoms": [0.0, 1.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "CH3S"}, "mtime": 16.302038534311922, "numbers": [6, 16, 1, 1, 1], "positions": [[-0.003856, 1.106222, 0.0], [-0.003856, -0.692579, 0.0], [1.043269, 1.427057, 0.0], [-0.479217, 1.508437, 0.895197], [-0.479217, 1.508437, -0.895197]], "unique_id": "8b4451f28901742b748e2444e8181033", "user": "ase"}, "71": { "ctime": 16.302038534461218, "key_value_pairs": {"name": "CS2"}, "mtime": 16.302038534461218, "numbers": [16, 6, 16], "positions": [[0.0, 0.0, 1.561117], [0.0, 0.0, 0.0], [0.0, 0.0, -1.561117]], "unique_id": "d7ec2703110526af0458daf02f200ec3", "user": "ase"}, "72": { "ctime": 16.3020385346443, "key_value_pairs": {"name": "SiH2_s1A1d"}, "mtime": 16.3020385346443, "numbers": [14, 1, 1], "positions": [[0.0, 0.0, 0.131272], [0.0, 1.096938, -0.918905], [0.0, -1.096938, -0.918905]], "unique_id": "563bb9c3e6335fb36277a5ad739b9d5e", "user": "ase"}, "73": { "ctime": 16.30203853479825, "key_value_pairs": {"name": "C4H4S"}, "mtime": 16.30203853479825, "numbers": [16, 6, 6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.189753], [0.0, 1.233876, -0.001474], [0.0, -1.233876, -0.001474], [0.0, 0.709173, -1.272322], [0.0, -0.709173, -1.272322], [0.0, 2.275343, 0.291984], [0.0, -2.275343, 0.291984], [0.0, 1.321934, -2.167231], [0.0, -1.321934, -2.167231]], "unique_id": "3bd98b0a8e5937e5044de3d92c787a8c", "user": "ase"}, "74": { "ctime": 16.302038534955642, "key_value_pairs": {"name": "N2H4"}, "mtime": 16.302038534955642, "numbers": [7, 7, 1, 1, 1, 1], "positions": [[0.0, 0.718959, -0.077687], [0.0, -0.718959, -0.077687], [0.211082, 1.092752, 0.847887], [-0.948214, 1.005026, -0.304078], [-0.211082, -1.092752, 0.847887], [0.948214, -1.005026, -0.304078]], "unique_id": "269786034ef2c0d51d927e7b211a8c17", "user": "ase"}, "75": { "ctime": 16.302038535111933, "initial_magmoms": [0.5, 0.5], "key_value_pairs": {"name": "OH"}, "mtime": 16.302038535111933, "numbers": [8, 1], "positions": [[0.0, 0.0, 0.108786], [0.0, 0.0, -0.870284]], "unique_id": "97a97444ca2772fc8de2075e7e0060b8", "user": "ase"}, "76": { "ctime": 16.302038535270892, "key_value_pairs": {"name": "CH3OCH3"}, "mtime": 16.302038535270892, "numbers": [6, 8, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 1.165725, -0.19995], [0.0, 0.0, 0.60011], [0.0, -1.165725, -0.19995], [0.0, 2.017769, 0.480203], [0.891784, 1.21432, -0.840474], [-0.891784, 1.21432, -0.840474], [0.0, -2.017769, 0.480203], [-0.891784, -1.21432, -0.840474], [0.891784, -1.21432, -0.840474]], "unique_id": "77109d64bf74ff8fae7c3cade6dbf6f0", "user": "ase"}, "77": { "ctime": 16.302038535430228, "key_value_pairs": {"name": "C5H5N"}, "mtime": 16.302038535430228, "numbers": [7, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.424672], [0.0, 0.0, -1.386178], [0.0, 1.144277, 0.720306], [0.0, -1.144277, 0.720306], [0.0, -1.196404, -0.672917], [0.0, 1.196404, -0.672917], [0.0, 0.0, -2.473052], [0.0, 2.060723, 1.307477], [0.0, -2.060723, 1.307477], [0.0, -2.155293, -1.183103], [0.0, 2.155293, -1.183103]], "unique_id": "3ac86d01cfb42cf4536f14cef440f936", "user": "ase"}, "78": { "ctime": 16.302038535592622, "key_value_pairs": {"name": "H2O"}, "mtime": 16.302038535592622, "numbers": [8, 1, 1], "positions": [[0.0, 0.0, 0.119262], [0.0, 0.763239, -0.477047], [0.0, -0.763239, -0.477047]], "unique_id": "ea4c3a95e1992ba0dc8c81dd88d0cd76", "user": "ase"}, "79": { "ctime": 16.302038535757813, "key_value_pairs": {"name": "HCl"}, "mtime": 16.302038535757813, "numbers": [17, 1], "positions": [[0.0, 0.0, 0.07111], [0.0, 0.0, -1.208868]], "unique_id": "694001ea8c9922c70634cc2823b78362", "user": "ase"}, "80": { "ctime": 16.302038535922286, "key_value_pairs": {"name": "CH2_s1A1d"}, "mtime": 16.302038535922286, "numbers": [6, 1, 1], "positions": [[0.0, 0.0, 0.174343], [0.0, 0.862232, -0.523029], [0.0, -0.862232, -0.523029]], "unique_id": "b192231dfdad94f24427f8f9770c3a27", "user": "ase"}, "81": { "ctime": 16.302038536090144, "key_value_pairs": {"name": "CH3CH2SH"}, "mtime": 16.302038536090144, "numbers": [6, 6, 16, 1, 1, 1, 1, 1, 1], "positions": [[1.514343, 0.679412, 0.0], [0.0, 0.826412, 0.0], [-0.756068, -0.831284, 0.0], [-2.035346, -0.427738, 0.0], [-0.32497, 1.376482, 0.885793], [-0.32497, 1.376482, -0.885793], [1.986503, 1.665082, 0.0], [1.854904, 0.137645, 0.885494], [1.854904, 0.137645, -0.885494]], "unique_id": "d3abd52ab40b083bb652ef0a62dacc3a", "user": "ase"}, "82": { "ctime": 16.302038536259634, "key_value_pairs": {"name": "CH3NO2"}, "mtime": 16.302038536259634, "numbers": [6, 7, 1, 1, 1, 8, 8], "positions": [[-0.114282, -1.314565, 0.0], [0.0, 0.16648, 0.0], [0.899565, -1.715256, 0.0], [-0.640921, -1.607212, 0.904956], [-0.640921, -1.607212, -0.904956], [0.066748, 0.728232, -1.103775], [0.066748, 0.728232, 1.103775]], "unique_id": "5fbe8a123a9c2ed34dd738384594e421", "user": "ase"}, "83": { "ctime": 16.30203853643018, "initial_magmoms": [1.0], "key_value_pairs": {"name": "Cl"}, "mtime": 16.30203853643018, "numbers": [17], "positions": [[0.0, 0.0, 0.0]], "unique_id": "56f5aa09ab12d5e28ce01943effea134", "user": "ase"}, "84": { "ctime": 16.30203853660507, "key_value_pairs": {"name": "Be"}, "mtime": 16.30203853660507, "numbers": [4], "positions": [[0.0, 0.0, 0.0]], "unique_id": "59ec91edd72585e9759e6355465a8ccd", "user": "ase"}, "85": { "ctime": 16.30203853678018, "key_value_pairs": {"name": "BCl3"}, "mtime": 16.30203853678018, "numbers": [5, 17, 17, 17], "positions": [[0.0, 0.0, 0.0], [0.0, 1.735352, 0.0], [1.502859, -0.867676, 0.0], [-1.502859, -0.867676, 0.0]], "unique_id": "cd13916be48fa4feac61f554c9cfbef8", "user": "ase"}, "86": { "ctime": 16.302038536955052, "key_value_pairs": {"name": "C4H4O"}, "mtime": 16.302038536955052, "numbers": [8, 6, 6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.163339], [0.0, 1.0947, 0.348039], [0.0, -1.0947, 0.348039], [0.0, 0.7132, -0.962161], [0.0, -0.7132, -0.962161], [0.0, 2.049359, 0.851113], [0.0, -2.049359, 0.851113], [0.0, 1.370828, -1.819738], [0.0, -1.370828, -1.819738]], "unique_id": "a4b59042049f531eb99607e8a11c4ebc", "user": "ase"}, "87": { "ctime": 16.302038537134234, "initial_magmoms": [1.0], "key_value_pairs": {"name": "Al"}, "mtime": 16.302038537134234, "numbers": [13], "positions": [[0.0, 0.0, 0.0]], "unique_id": "4953c6596dacdfc047e60c912dd9a1be", "user": "ase"}, "88": { "ctime": 16.30203853731529, "initial_magmoms": [0.0, 1.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "CH3O"}, "mtime": 16.30203853731529, "numbers": [6, 8, 1, 1, 1], "positions": [[-0.008618, -0.586475, 0.0], [-0.008618, 0.799541, 0.0], [1.055363, -0.868756, 0.0], [-0.467358, -1.004363, 0.903279], [-0.467358, -1.004363, -0.903279]], "unique_id": "3e2892e5cd6c0a2298d3bcac09e21c2f", "user": "ase"}, "89": { "ctime": 16.302038537500003, "key_value_pairs": {"name": "CH3OH"}, "mtime": 16.302038537500003, "numbers": [6, 8, 1, 1, 1, 1], "positions": [[-0.047131, 0.664389, 0.0], [-0.047131, -0.758551, 0.0], [-1.092995, 0.969785, 0.0], [0.878534, -1.048458, 0.0], [0.437145, 1.080376, 0.891772], [0.437145, 1.080376, -0.891772]], "unique_id": "dbffc2b1cc8c99568f59965b4313147c", "user": "ase"}, "90": { "ctime": 16.302038537684, "key_value_pairs": {"name": "C3H7Cl"}, "mtime": 16.302038537684, "numbers": [6, 6, 6, 1, 1, 1, 17, 1, 1, 1, 1], "positions": [[0.892629, -0.642344, 0.0], [2.365587, -0.245168, 0.0], [0.0, 0.582921, 0.0], [0.663731, -1.252117, 0.879201], [0.663731, -1.252117, -0.879201], [3.005476, -1.130924, 0.0], [-1.73281, 0.139743, 0.0], [2.614882, 0.347704, -0.88473], [2.614882, 0.347704, 0.88473], [0.172881, 1.195836, 0.88646], [0.172881, 1.195836, -0.88646]], "unique_id": "da47bafdf248feb783c2a7dcd9650a65", "user": "ase"}, "91": { "ctime": 16.302038537872775, "key_value_pairs": {"name": "isobutane"}, "mtime": 16.302038537872775, "numbers": [6, 1, 6, 1, 1, 1, 6, 1, 1, 1, 6, 1, 1, 1], "positions": [[0.0, 0.0, 0.376949], [0.0, 0.0, 1.475269], [0.0, 1.45029, -0.096234], [0.0, 1.493997, -1.190847], [-0.885482, 1.984695, 0.261297], [0.885482, 1.984695, 0.261297], [1.255988, -0.725145, -0.096234], [1.293839, -0.746998, -1.190847], [2.161537, -0.225498, 0.261297], [1.276055, -1.759198, 0.261297], [-1.255988, -0.725145, -0.096234], [-1.293839, -0.746998, -1.190847], [-1.276055, -1.759198, 0.261297], [-2.161537, -0.225498, 0.261297]], "unique_id": "5a6a229e4b946a573bf02d891c072925", "user": "ase"}, "92": { "ctime": 16.302038538063442, "initial_magmoms": [1.0], "key_value_pairs": {"name": "Na"}, "mtime": 16.302038538063442, "numbers": [11], "positions": [[0.0, 0.0, 0.0]], "unique_id": "29268969b3afcb36958649e457eb4709", "user": "ase"}, "93": { "ctime": 16.30203853825806, "key_value_pairs": {"name": "CCl4"}, "mtime": 16.30203853825806, "numbers": [6, 17, 17, 17, 17], "positions": [[0.0, 0.0, 0.0], [1.02134, 1.02134, 1.02134], [-1.02134, -1.02134, 1.02134], [-1.02134, 1.02134, -1.02134], [1.02134, -1.02134, -1.02134]], "unique_id": "5229ba386ce17ba1ea93f6ff71d3fce8", "user": "ase"}, "94": { "ctime": 16.30203853862357, "initial_magmoms": [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "CH3CH2O"}, "mtime": 16.30203853862357, "numbers": [6, 6, 8, 1, 1, 1, 1, 1], "positions": [[1.004757, -0.568263, 0.0], [0.0, 0.588691, 0.0], [-1.260062, 0.000729, 0.0], [0.146956, 1.204681, 0.896529], [0.146956, 1.204681, -0.896529], [2.019363, -0.1641, 0.0], [0.86934, -1.186832, 0.888071], [0.86934, -1.186832, -0.888071]], "unique_id": "64bc207a5f4ee9798a19298b8d6cf48e", "user": "ase"}, "95": { "ctime": 16.302038538828118, "key_value_pairs": {"name": "H2CCHF"}, "mtime": 16.302038538828118, "numbers": [6, 6, 9, 1, 1, 1], "positions": [[0.0, 0.437714, 0.0], [1.191923, -0.145087, 0.0], [-1.148929, -0.278332, 0.0], [-0.186445, 1.505778, 0.0], [1.291348, -1.222833, 0.0], [2.083924, 0.466279, 0.0]], "unique_id": "bfd5f85f2d239fea4117d304986538e8", "user": "ase"}, "96": { "ctime": 16.30203853903012, "initial_magmoms": [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "C3H7"}, "mtime": 16.30203853903012, "numbers": [6, 6, 6, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.014223, 0.54385, 0.0], [0.014223, -0.199742, 1.291572], [0.014223, -0.199742, -1.291572], [-0.32289, 1.575329, 0.0], [0.221417, 0.459174, 2.138477], [0.221417, 0.459174, -2.138477], [-0.955157, -0.684629, 1.484633], [0.767181, -0.995308, 1.286239], [0.767181, -0.995308, -1.286239], [-0.955157, -0.684629, -1.484633]], "unique_id": "79f6c573c76f30d82f260e5b82a5ea18", "user": "ase"}, "97": { "ctime": 16.302038539231994, "initial_magmoms": [1.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "CH3"}, "mtime": 16.302038539231994, "numbers": [6, 1, 1, 1], "positions": [[0.0, 0.0, 0.0], [0.0, 1.07841, 0.0], [0.93393, -0.539205, 0.0], [-0.93393, -0.539205, 0.0]], "unique_id": "f3a0ff75473d2bc919a8faf2597fd26c", "user": "ase"}, "98": { "ctime": 16.302038539435678, "key_value_pairs": {"name": "O3"}, "mtime": 16.302038539435678, "numbers": [8, 8, 8], "positions": [[0.0, 1.10381, -0.228542], [0.0, 0.0, 0.457084], [0.0, -1.10381, -0.228542]], "unique_id": "6d7f9a9a3611b0ab160c5df09785ac99", "user": "ase"}, "99": { "ctime": 16.302038539641476, "initial_magmoms": [3.0], "key_value_pairs": {"name": "P"}, "mtime": 16.302038539641476, "numbers": [15], "positions": [[0.0, 0.0, 0.0]], "unique_id": "ddcbb4f7a0dc34ded8195ac365f81fad", "user": "ase"}, "100": { "ctime": 16.302038539851996, "key_value_pairs": {"name": "C2H4"}, "mtime": 16.302038539851996, "numbers": [6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.66748], [0.0, 0.0, -0.66748], [0.0, 0.922832, 1.237695], [0.0, -0.922832, 1.237695], [0.0, 0.922832, -1.237695], [0.0, -0.922832, -1.237695]], "unique_id": "bc28c5dfe25335d7888e778b59e4fea3", "user": "ase"}, "101": { "ctime": 16.302038540061204, "key_value_pairs": {"name": "NCCN"}, "mtime": 16.302038540061204, "numbers": [7, 6, 6, 7], "positions": [[0.0, 0.0, 1.875875], [0.0, 0.0, 0.690573], [0.0, 0.0, -0.690573], [0.0, 0.0, -1.875875]], "unique_id": "39168b2fd51f33c652cc3618ecddf560", "user": "ase"}, "102": { "ctime": 16.30203854027306, "initial_magmoms": [1.0, 1.0], "key_value_pairs": {"name": "S2"}, "mtime": 16.30203854027306, "numbers": [16, 16], "positions": [[0.0, 0.0, 0.960113], [0.0, 0.0, -0.960113]], "unique_id": "f62e007828565a4ce41627ff320276d1", "user": "ase"}, "103": { "ctime": 16.302038540484087, "key_value_pairs": {"name": "AlCl3"}, "mtime": 16.302038540484087, "numbers": [13, 17, 17, 17], "positions": [[0.0, 0.0, 0.0], [0.0, 2.069041, 0.0], [1.791842, -1.03452, 0.0], [-1.791842, -1.03452, 0.0]], "unique_id": "18100740763d8687a9530a1e4ff52ec3", "user": "ase"}, "104": { "ctime": 16.30203854070042, "key_value_pairs": {"name": "SiCl4"}, "mtime": 16.30203854070042, "numbers": [14, 17, 17, 17, 17], "positions": [[0.0, 0.0, 0.0], [1.169349, 1.169349, 1.169349], [-1.169349, -1.169349, 1.169349], [1.169349, -1.169349, -1.169349], [-1.169349, 1.169349, -1.169349]], "unique_id": "9924adb36c54bfdc245c7ed9d537bd60", "user": "ase"}, "105": { "ctime": 16.302038540918055, "key_value_pairs": {"name": "SiO"}, "mtime": 16.302038540918055, "numbers": [14, 8], "positions": [[0.0, 0.0, 0.560846], [0.0, 0.0, -0.98148]], "unique_id": "1074a6695ac091e46be6ca2e7d4e44d7", "user": "ase"}, "106": { "ctime": 16.302038541138657, "key_value_pairs": {"name": "C3H4_D2d"}, "mtime": 16.302038541138657, "numbers": [6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.0], [0.0, 0.0, 1.31119], [0.0, 0.0, -1.31119], [0.0, 0.926778, 1.876642], [0.0, -0.926778, 1.876642], [0.926778, 0.0, -1.876642], [-0.926778, 0.0, -1.876642]], "unique_id": "1b7075cfac43c4764c9c84b6c78dfdd5", "user": "ase"}, "107": { "ctime": 16.302038541360062, "initial_magmoms": [1.0], "key_value_pairs": {"name": "H"}, "mtime": 16.302038541360062, "numbers": [1], "positions": [[0.0, 0.0, 0.0]], "unique_id": "f9c8e9ca9202720b06981b9365e2d78c", "user": "ase"}, "108": { "ctime": 16.30203854158131, "key_value_pairs": {"name": "COF2"}, "mtime": 16.30203854158131, "numbers": [8, 6, 9, 9], "positions": [[0.0, 0.0, 1.330715], [0.0, 0.0, 0.144358], [0.0, 1.06949, -0.639548], [0.0, -1.06949, -0.639548]], "unique_id": "523f3c8ffaad7ac9e63ec6357de567ec", "user": "ase"}, "109": { "ctime": 16.302038541805146, "key_value_pairs": {"name": "2-butyne"}, "mtime": 16.302038541805146, "numbers": [6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 2.071955], [0.0, 0.0, 0.60997], [0.0, 0.0, -0.60997], [0.0, 0.0, -2.071955], [0.0, 1.020696, 2.464562], [-0.883949, -0.510348, 2.464562], [0.883949, -0.510348, 2.464562], [0.0, 1.020696, -2.464562], [0.883949, -0.510348, -2.464562], [-0.883949, -0.510348, -2.464562]], "unique_id": "34e944fa363e0e7e3ec5b311e81e10d2", "user": "ase"}, "110": { "ctime": 16.302038542028768, "initial_magmoms": [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], "key_value_pairs": {"name": "C2H5"}, "mtime": 16.302038542028768, "numbers": [6, 6, 1, 1, 1, 1, 1], "positions": [[-0.014359, -0.694617, 0.0], [-0.014359, 0.794473, 0.0], [1.006101, -1.104042, 0.0], [-0.517037, -1.093613, 0.884839], [-0.517037, -1.093613, -0.884839], [0.100137, 1.346065, 0.923705], [0.100137, 1.346065, -0.923705]], "unique_id": "436468dc298fa469e1d32fb0d0440d97", "user": "ase"}, "111": { "ctime": 16.302038542257947, "key_value_pairs": {"name": "BF3"}, "mtime": 16.302038542257947, "numbers": [5, 9, 9, 9], "positions": [[0.0, 0.0, 0.0], [0.0, 1.32176, 0.0], [1.144678, -0.66088, 0.0], [-1.144678, -0.66088, 0.0]], "unique_id": "7e844edabf721c5f7373e9256fd668ba", "user": "ase"}, "112": { "ctime": 16.302038542490312, "key_value_pairs": {"name": "N2O"}, "mtime": 16.302038542490312, "numbers": [7, 7, 8], "positions": [[0.0, 0.0, -1.231969], [0.0, 0.0, -0.060851], [0.0, 0.0, 1.131218]], "unique_id": "fbb498283cc6ec317d9e8d0b09bd67fc", "user": "ase"}, "113": { "ctime": 16.302038542723565, "key_value_pairs": {"name": "F2O"}, "mtime": 16.302038542723565, "numbers": [9, 8, 9], "positions": [[0.0, 1.110576, -0.273729], [0.0, 0.0, 0.61589], [0.0, -1.110576, -0.273729]], "unique_id": "50cc55778a7d49db86273a43900b6e3c", "user": "ase"}, "114": { "ctime": 16.302038542957764, "key_value_pairs": {"name": "SO2"}, "mtime": 16.302038542957764, "numbers": [16, 8, 8], "positions": [[0.0, 0.0, 0.370268], [0.0, 1.277617, -0.370268], [0.0, -1.277617, -0.370268]], "unique_id": "a071e351eb490afc667430bab8c7793d", "user": "ase"}, "115": { "ctime": 16.30203854319219, "key_value_pairs": {"name": "H2CCl2"}, "mtime": 16.30203854319219, "numbers": [6, 17, 17, 1, 1], "positions": [[0.0, 0.0, 0.759945], [0.0, 1.4742, -0.215115], [0.0, -1.4742, -0.215115], [-0.894585, 0.0, 1.377127], [0.894585, 0.0, 1.377127]], "unique_id": "b9373227f6eb789e56e59f772b9e0e9b", "user": "ase"}, "116": { "ctime": 16.302038543427088, "key_value_pairs": {"name": "CF3CN"}, "mtime": 16.302038543427088, "numbers": [6, 6, 9, 9, 9, 7], "positions": [[0.0, 0.0, -0.32635], [0.0, 0.0, 1.15083], [0.0, 1.257579, -0.787225], [1.089096, -0.62879, -0.787225], [-1.089096, -0.62879, -0.787225], [0.0, 0.0, 2.329741]], "unique_id": "caabc59312e3734ebf5fa47bfa59c354", "user": "ase"}, "117": { "ctime": 16.30203854366612, "key_value_pairs": {"name": "HCN"}, "mtime": 16.30203854366612, "numbers": [6, 7, 1], "positions": [[0.0, 0.0, -0.511747], [0.0, 0.0, 0.664461], [0.0, 0.0, -1.580746]], "unique_id": "4544a6f196814edcbe686dfbc9266d78", "user": "ase"}, "118": { "ctime": 16.302038543909266, "key_value_pairs": {"name": "C2H6NH"}, "mtime": 16.302038543909266, "numbers": [6, 7, 6, 1, 1, 1, 1, 1, 1, 1], "positions": [[-0.02753, -0.224702, 1.20488], [-0.02753, 0.59247, 0.0], [-0.02753, -0.224702, -1.20488], [0.791501, -0.962742, 1.248506], [0.039598, 0.421182, 2.083405], [-0.97222, -0.772987, 1.26175], [0.805303, 1.17822, 0.0], [0.791501, -0.962742, -1.248506], [0.039598, 0.421182, -2.083405], [-0.97222, -0.772987, -1.26175]], "unique_id": "eec6ca2a90da0f2930137da11506bc05", "user": "ase"}, "119": { "ctime": 16.30203854415257, "key_value_pairs": {"name": "OCS"}, "mtime": 16.30203854415257, "numbers": [8, 6, 16], "positions": [[0.0, 0.0, -1.699243], [0.0, 0.0, -0.520492], [0.0, 0.0, 1.044806]], "unique_id": "10e0ea814a82a16036774d076541b0a5", "user": "ase"}, "120": { "ctime": 16.302038544396165, "initial_magmoms": [1.0], "key_value_pairs": {"name": "B"}, "mtime": 16.302038544396165, "numbers": [5], "positions": [[0.0, 0.0, 0.0]], "unique_id": "246a706881687db7f7fe8e133a9881ec", "user": "ase"}, "121": { "ctime": 16.302038544644038, "initial_magmoms": [1.0, 0.0], "key_value_pairs": {"name": "ClO"}, "mtime": 16.302038544644038, "numbers": [17, 8], "positions": [[0.0, 0.0, 0.514172], [0.0, 0.0, -1.092615]], "unique_id": "972904dfe3ece5fc2394ed88e1ebdf8b", "user": "ase"}, "122": { "ctime": 16.302038544891285, "key_value_pairs": {"name": "C3H8"}, "mtime": 16.302038544891285, "numbers": [6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.587716], [0.0, 1.266857, -0.260186], [0.0, -1.266857, -0.260186], [-0.876898, 0.0, 1.244713], [0.876898, 0.0, 1.244713], [0.0, 2.16615, 0.362066], [0.0, -2.16615, 0.362066], [0.883619, 1.304234, -0.904405], [-0.883619, 1.304234, -0.904405], [-0.883619, -1.304234, -0.904405], [0.883619, -1.304234, -0.904405]], "unique_id": "ae3be22f9f3c73ee22718eb383912202", "user": "ase"}, "123": { "ctime": 16.302038545142405, "key_value_pairs": {"name": "HF"}, "mtime": 16.302038545142405, "numbers": [9, 1], "positions": [[0.0, 0.0, 0.093389], [0.0, 0.0, -0.840502]], "unique_id": "6971cff42c4cb0bd494ec9908e4deaaa", "user": "ase"}, "124": { "ctime": 16.302038545395966, "initial_magmoms": [1.0, 1.0], "key_value_pairs": {"name": "O2"}, "mtime": 16.302038545395966, "numbers": [8, 8], "positions": [[0.0, 0.0, 0.622978], [0.0, 0.0, -0.622978]], "unique_id": "48a4d22b02e8daedbb5638edc69c0b87", "user": "ase"}, "125": { "ctime": 16.302038545650767, "initial_magmoms": [1.0, 1.0], "key_value_pairs": {"name": "SO"}, "mtime": 16.302038545650767, "numbers": [8, 16], "positions": [[0.0, 0.0, -1.015992], [0.0, 0.0, 0.507996]], "unique_id": "695615be5244a4cdaa8ec1273e96c047", "user": "ase"}, "126": { "ctime": 16.302038545907827, "initial_magmoms": [2.0, 0.0], "key_value_pairs": {"name": "NH"}, "mtime": 16.302038545907827, "numbers": [7, 1], "positions": [[0.0, 0.0, 0.129929], [0.0, 0.0, -0.909501]], "unique_id": "9753965ad998cb1f08b30a4f38ef3bd3", "user": "ase"}, "127": { "ctime": 16.302038546166692, "key_value_pairs": {"name": "C2F4"}, "mtime": 16.302038546166692, "numbers": [6, 6, 9, 9, 9, 9], "positions": [[0.0, 0.0, 0.66323], [0.0, 0.0, -0.66323], [0.0, 1.112665, 1.385652], [0.0, -1.112665, 1.385652], [0.0, 1.112665, -1.385652], [0.0, -1.112665, -1.385652]], "unique_id": "b92e9ca1aa9cc5cf96a105d3dff1038f", "user": "ase"}, "128": { "ctime": 16.3020385464263, "key_value_pairs": {"name": "NF3"}, "mtime": 16.3020385464263, "numbers": [7, 9, 9, 9], "positions": [[0.0, 0.0, 0.489672], [0.0, 1.238218, -0.126952], [1.072328, -0.619109, -0.126952], [-1.072328, -0.619109, -0.126952]], "unique_id": "d05e2e98a0329005b7a2a92fce6f5256", "user": "ase"}, "129": { "ctime": 16.3020385466875, "initial_magmoms": [2.0, 0.0, 0.0], "key_value_pairs": {"name": "CH2_s3B1d"}, "mtime": 16.3020385466875, "numbers": [6, 1, 1], "positions": [[0.0, 0.0, 0.110381], [0.0, 0.982622, -0.331142], [0.0, -0.982622, -0.331142]], "unique_id": "a28613b1fb849d9afdb0a796d4c899ef", "user": "ase"}, "130": { "ctime": 16.302038546954357, "key_value_pairs": {"name": "CH3CH2Cl"}, "mtime": 16.302038546954357, "numbers": [6, 6, 17, 1, 1, 1, 1, 1], "positions": [[0.0, 0.807636, 0.0], [1.505827, 0.647832, 0.0], [-0.823553, -0.77997, 0.0], [-0.344979, 1.341649, 0.885248], [-0.344979, 1.341649, -0.885248], [1.976903, 1.634877, 0.0], [1.839246, 0.10425, 0.885398], [1.839246, 0.10425, -0.885398]], "unique_id": "2a75b67ef9977517a4f1711837d2b56e", "user": "ase"}, "131": { "ctime": 16.302038547219738, "key_value_pairs": {"name": "CH3COCl"}, "mtime": 16.302038547219738, "numbers": [6, 6, 17, 8, 1, 1, 1], "positions": [[0.0, 0.523878, 0.0], [1.486075, 0.716377, 0.0], [-0.452286, -1.217999, 0.0], [-0.845539, 1.37494, 0.0], [1.701027, 1.784793, 0.0], [1.917847, 0.240067, 0.882679], [1.917847, 0.240067, -0.882679]], "unique_id": "6f2909c42e24e41a63b7102a6b39b49f", "user": "ase"}, "132": { "ctime": 16.302038547489776, "key_value_pairs": {"name": "NH3"}, "mtime": 16.302038547489776, "numbers": [7, 1, 1, 1], "positions": [[0.0, 0.0, 0.116489], [0.0, 0.939731, -0.271808], [0.813831, -0.469865, -0.271808], [-0.813831, -0.469865, -0.271808]], "unique_id": "c58a51aa68d419fe7abc4fcfbae652ff", "user": "ase"}, "133": { "ctime": 16.302038547774526, "key_value_pairs": {"name": "C3H9N"}, "mtime": 16.302038547774526, "numbers": [7, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.395846], [0.0, 1.378021, -0.065175], [1.193401, -0.689011, -0.065175], [-1.193401, -0.689011, -0.065175], [0.0, 1.461142, -1.167899], [0.886156, 1.891052, 0.317655], [-0.886156, 1.891052, 0.317655], [1.265386, -0.730571, -1.167899], [1.194621, -1.71296, 0.317655], [2.080777, -0.178092, 0.317655], [-1.265386, -0.730571, -1.167899], [-2.080777, -0.178092, 0.317655], [-1.194621, -1.71296, 0.317655]], "unique_id": "dd46c24e77c3c2084e4416a366183cfb", "user": "ase"}, "134": { "ctime": 16.302038548049627, "key_value_pairs": {"name": "CF4"}, "mtime": 16.302038548049627, "numbers": [6, 9, 9, 9, 9], "positions": [[0.0, 0.0, 0.0], [0.767436, 0.767436, 0.767436], [-0.767436, -0.767436, 0.767436], [-0.767436, 0.767436, -0.767436], [0.767436, -0.767436, -0.767436]], "unique_id": "b8b7f64dd63317304b6f726bc06acfee", "user": "ase"}, "135": { "ctime": 16.302038548323036, "key_value_pairs": {"name": "C3H6_Cs"}, "mtime": 16.302038548323036, "numbers": [6, 6, 1, 1, 1, 6, 1, 1, 1], "positions": [[1.29129, 0.133682, 0.0], [0.0, 0.479159, 0.0], [1.60116, -0.90742, 0.0], [2.0808, 0.877337, 0.0], [-0.263221, 1.536098, 0.0], [-1.139757, -0.492341, 0.0], [-0.776859, -1.523291, 0.0], [-1.77554, -0.352861, 0.88042], [-1.77554, -0.352861, -0.88042]], "unique_id": "81f54587f11f43d50d5bc93e211a1d48", "user": "ase"}, "136": { "ctime": 16.30203854860182, "key_value_pairs": {"name": "Si2H6"}, "mtime": 16.30203854860182, "numbers": [14, 14, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.167683], [0.0, 0.0, -1.167683], [0.0, 1.393286, 1.68602], [-1.206621, -0.696643, 1.68602], [1.206621, -0.696643, 1.68602], [0.0, -1.393286, -1.68602], [-1.206621, 0.696643, -1.68602], [1.206621, 0.696643, -1.68602]], "unique_id": "ac8bc5ce74c789f56460f157daa18836", "user": "ase"}, "137": { "ctime": 16.30203854888151, "key_value_pairs": {"name": "HCOOCH3"}, "mtime": 16.30203854888151, "numbers": [6, 8, 8, 1, 6, 1, 1, 1], "positions": [[-0.931209, -0.083866, 0.0], [-0.711019, -1.278209, 0.0], [0.0, 0.886841, 0.0], [-1.92836, 0.374598, 0.0], [1.356899, 0.397287, 0.0], [1.980134, 1.288164, 0.0], [1.541121, -0.206172, 0.889397], [1.541121, -0.206172, -0.889397]], "unique_id": "f20954b00a71f6882624f47bb8975136", "user": "ase"}, "138": { "ctime": 16.302038549161008, "initial_magmoms": [2.0], "key_value_pairs": {"name": "O"}, "mtime": 16.302038549161008, "numbers": [8], "positions": [[0.0, 0.0, 0.0]], "unique_id": "6d3363548f3e72938d03aa01d83992c9", "user": "ase"}, "139": { "ctime": 16.30203854944461, "initial_magmoms": [0.0, 1.0, 0.0], "key_value_pairs": {"name": "CCH"}, "mtime": 16.30203854944461, "numbers": [6, 6, 1], "positions": [[0.0, 0.0, -0.462628], [0.0, 0.0, 0.717162], [0.0, 0.0, -1.527198]], "unique_id": "7a82e093f2fa7324dc204e3fdf40f24d", "user": "ase"}, "140": { "ctime": 16.302038549729122, "initial_magmoms": [3.0], "key_value_pairs": {"name": "N"}, "mtime": 16.302038549729122, "numbers": [7], "positions": [[0.0, 0.0, 0.0]], "unique_id": "5427981dc0460b1adc90e37cfbeec31d", "user": "ase"}, "141": { "ctime": 16.30203855001485, "initial_magmoms": [1.0, 1.0], "key_value_pairs": {"name": "Si2"}, "mtime": 16.30203855001485, "numbers": [14, 14], "positions": [[0.0, 0.0, 1.130054], [0.0, 0.0, -1.130054]], "unique_id": "8105aba39eb0865c4e94be4b768c74ac", "user": "ase"}, "142": { "ctime": 16.302038550305753, "key_value_pairs": {"name": "C2H6SO"}, "mtime": 16.302038550305753, "numbers": [16, 8, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[2e-06, 0.231838, -0.438643], [2e-05, 1.500742, 0.379819], [1.339528, -0.809022, 0.180717], [-1.339548, -0.808992, 0.180718], [1.255835, -0.896385, 1.266825], [-2.279404, -0.313924, -0.068674], [1.304407, -1.793327, -0.292589], [2.279395, -0.313974, -0.068674], [-1.304447, -1.793298, -0.292587], [-1.255857, -0.896355, 1.266826]], "unique_id": "c8c87c2b26b5386978aad0c3f810e1fd", "user": "ase"}, "143": { "ctime": 16.30203855059594, "key_value_pairs": {"name": "C5H8"}, "mtime": 16.30203855059594, "numbers": [6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.0], [0.0, 0.762014, 1.265752], [0.0, -0.762014, 1.265752], [0.762014, 0.0, -1.265752], [-0.762014, 0.0, -1.265752], [-0.914023, 1.265075, 1.56809], [0.914023, 1.265075, 1.56809], [-0.914023, -1.265075, 1.56809], [0.914023, -1.265075, 1.56809], [1.265075, -0.914023, -1.56809], [1.265075, 0.914023, -1.56809], [-1.265075, -0.914023, -1.56809], [-1.265075, 0.914023, -1.56809]], "unique_id": "1d2701b5761b1343ecf70f6235083bae", "user": "ase"}, "144": { "ctime": 16.302038550893467, "key_value_pairs": {"name": "H2CF2"}, "mtime": 16.302038550893467, "numbers": [6, 9, 9, 1, 1], "positions": [[0.0, 0.0, 0.502903], [0.0, 1.109716, -0.290601], [0.0, -1.109716, -0.290601], [-0.908369, 0.0, 1.106699], [0.908369, 0.0, 1.106699]], "unique_id": "a4e8d3df6ba065873ed78305a6bbc5ef", "user": "ase"}, "145": { "ctime": 16.30203855118982, "key_value_pairs": {"name": "Li2"}, "mtime": 16.30203855118982, "numbers": [3, 3], "positions": [[0.0, 0.0, 1.38653], [0.0, 0.0, -1.38653]], "unique_id": "9b07a37f116bbaaf5c989c85f3ad9e13", "user": "ase"}, "146": { "ctime": 16.302038551484777, "key_value_pairs": {"name": "CH2SCH2"}, "mtime": 16.302038551484777, "numbers": [6, 16, 6, 1, 1, 1, 1], "positions": [[0.0, -0.739719, -0.792334], [0.0, 0.0, 0.863474], [0.0, 0.739719, -0.792334], [-0.91394, -1.250142, -1.076894], [0.91394, -1.250142, -1.076894], [0.91394, 1.250142, -1.076894], [-0.91394, 1.250142, -1.076894]], "unique_id": "8aaa2d8c2ad1814e2e731b75ebee8e96", "user": "ase"}, "147": { "ctime": 16.302038551783752, "key_value_pairs": {"name": "C2Cl4"}, "mtime": 16.302038551783752, "numbers": [6, 6, 17, 17, 17, 17], "positions": [[0.0, 0.0, 0.675402], [0.0, 0.0, -0.675402], [0.0, 1.448939, 1.589701], [0.0, -1.448939, 1.589701], [0.0, -1.448939, -1.589701], [0.0, 1.448939, -1.589701]], "unique_id": "a5a5b711dedbd9a1448fb27768025a2d", "user": "ase"}, "148": { "ctime": 16.302038552088582, "key_value_pairs": {"name": "C3H4_C3v"}, "mtime": 16.302038552088582, "numbers": [6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.214947], [0.0, 0.0, 1.43313], [0.0, 0.0, -1.246476], [0.0, 0.0, 2.498887], [0.0, 1.021145, -1.636167], [0.884337, -0.510572, -1.636167], [-0.884337, -0.510572, -1.636167]], "unique_id": "42d37997dbb4c4c41c9998180b5b6362", "user": "ase"}, "149": { "ctime": 16.302038552392084, "key_value_pairs": {"name": "CH3COCH3"}, "mtime": 16.302038552392084, "numbers": [8, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.405591], [0.0, 0.0, 0.17906], [0.0, 1.28549, -0.616342], [0.0, -1.28549, -0.616342], [0.0, 2.134917, 0.066535], [0.0, -2.134917, 0.066535], [-0.881086, 1.331548, -1.264013], [0.881086, 1.331548, -1.264013], [0.881086, -1.331548, -1.264013], [-0.881086, -1.331548, -1.264013]], "unique_id": "8959cf3db3aa3c824671aab73e00e27d", "user": "ase"}, "150": { "ctime": 16.302038552695887, "key_value_pairs": {"name": "F2"}, "mtime": 16.302038552695887, "numbers": [9, 9], "positions": [[0.0, 0.0, 0.710304], [0.0, 0.0, -0.710304]], "unique_id": "80d970ac408527b552fb59578b36df1d", "user": "ase"}, "151": { "ctime": 16.302038553002582, "key_value_pairs": {"name": "CH4"}, "mtime": 16.302038553002582, "numbers": [6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.0], [0.629118, 0.629118, 0.629118], [-0.629118, -0.629118, 0.629118], [0.629118, -0.629118, -0.629118], [-0.629118, 0.629118, -0.629118]], "unique_id": "adf8a421625dadd6f43418d85be83683", "user": "ase"}, "152": { "ctime": 16.302038553485318, "initial_magmoms": [1.0, 0.0], "key_value_pairs": {"name": "SH"}, "mtime": 16.302038553485318, "numbers": [16, 1], "positions": [[0.0, 0.0, 0.079083], [0.0, 0.0, -1.26533]], "unique_id": "b0b6275b65a0b2967576e3bcda3bf3e3", "user": "ase"}, "153": { "ctime": 16.302038553798898, "key_value_pairs": {"name": "H2CCO"}, "mtime": 16.302038553798898, "numbers": [6, 6, 1, 1, 8], "positions": [[0.0, 0.0, -1.21934], [0.0, 0.0, 0.09892], [0.0, 0.938847, -1.753224], [0.0, -0.938847, -1.753224], [0.0, 0.0, 1.27862]], "unique_id": "39c76876e04b52b935a9866f4ce316f4", "user": "ase"}, "154": { "ctime": 16.302038554112432, "key_value_pairs": {"name": "CH3CH2NH2"}, "mtime": 16.302038554112432, "numbers": [6, 6, 7, 1, 1, 1, 1, 1, 1, 1], "positions": [[1.210014, -0.353598, 0.0], [0.0, 0.575951, 0.0], [-1.305351, -0.087478, 0.0], [2.14931, 0.208498, 0.0], [1.201796, -0.99776, 0.884909], [1.201796, -0.99776, -0.884909], [0.034561, 1.230963, -0.876478], [0.034561, 1.230963, 0.876478], [-1.372326, -0.69834, 0.813132], [-1.372326, -0.69834, -0.813132]], "unique_id": "a6aa2b6423c8e23c1a8f81f8541ccf40", "user": "ase"}, "155": { "ctime": 16.302038554424485, "initial_magmoms": [1.0], "key_value_pairs": {"name": "Li"}, "mtime": 16.302038554424485, "numbers": [3], "positions": [[0.0, 0.0, 0.0]], "unique_id": "be514cb9591a9d8c8cf6b5c87b9ddc02", "user": "ase"}, "156": { "ctime": 16.302038554744303, "key_value_pairs": {"name": "N2"}, "mtime": 16.302038554744303, "numbers": [7, 7], "positions": [[0.0, 0.0, 0.56499], [0.0, 0.0, -0.56499]], "unique_id": "1c8aa401331c9ee4f6859a7b0ab56cbf", "user": "ase"}, "157": { "ctime": 16.30203855506211, "key_value_pairs": {"name": "Cl2"}, "mtime": 16.30203855506211, "numbers": [17, 17], "positions": [[0.0, 0.0, 1.007541], [0.0, 0.0, -1.007541]], "unique_id": "90c76eb997fdbe2381dc926dfa59cd95", "user": "ase"}, "158": { "ctime": 16.302038555381902, "key_value_pairs": {"name": "H2O2"}, "mtime": 16.302038555381902, "numbers": [8, 8, 1, 1], "positions": [[0.0, 0.734058, -0.05275], [0.0, -0.734058, -0.05275], [0.839547, 0.880752, 0.422001], [-0.839547, -0.880752, 0.422001]], "unique_id": "91d0089afe0a280ec534343f0004223a", "user": "ase"}, "159": { "ctime": 16.302038555703927, "key_value_pairs": {"name": "Na2"}, "mtime": 16.302038555703927, "numbers": [11, 11], "positions": [[0.0, 0.0, 1.576262], [0.0, 0.0, -1.576262]], "unique_id": "a242788aaaac492d18334b15390bb4d4", "user": "ase"}, "160": { "ctime": 16.302038556029036, "initial_magmoms": [0.8, 0.2], "key_value_pairs": {"name": "BeH"}, "mtime": 16.302038556029036, "numbers": [4, 1], "positions": [[0.0, 0.0, 0.269654], [0.0, 0.0, -1.078616]], "unique_id": "2fcb08a8341e6c6008fa8882fc494584", "user": "ase"}, "161": { "ctime": 16.302038556363332, "key_value_pairs": {"name": "C3H4_C2v"}, "mtime": 16.302038556363332, "numbers": [6, 6, 6, 1, 1, 1, 1], "positions": [[0.0, 0.0, 0.858299], [0.0, -0.650545, -0.498802], [0.0, 0.650545, -0.498802], [0.912438, 0.0, 1.456387], [-0.912438, 0.0, 1.456387], [0.0, -1.584098, -1.038469], [0.0, 1.584098, -1.038469]], "unique_id": "8750eddaa52bbdc1686404dd732c1518", "user": "ase"}, "162": { "ctime": 16.302038556688892, "initial_magmoms": [1.0, 0.0, 0.0], "key_value_pairs": {"name": "NO2"}, "mtime": 16.302038556688892, "numbers": [7, 8, 8], "positions": [[0.0, 0.0, 0.332273], [0.0, 1.118122, -0.14537], [0.0, -1.118122, -0.14537]], "unique_id": "12413c6522338d24498926c8283fb072", "user": "ase"}, "ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162], "nextid": 163} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/collections/s22.json000066400000000000000000000500461316323560300243630ustar00rootroot00000000000000{ "1": { "ctime": 16.222952360829105, "key_value_pairs": {"cc_energy": -0.1375, "name": "Ammonia_dimer"}, "mtime": 16.222952360829105, "numbers": [7, 1, 1, 1, 7, 1, 1, 1], "positions": [[-1.578718, -0.046611, 0.0], [-2.158621, 0.136396, -0.809565], [-2.158621, 0.136396, 0.809565], [-0.849471, 0.658193, 0.0], [1.578718, 0.046611, 0.0], [2.158621, -0.136396, -0.809565], [0.849471, -0.658193, 0.0], [2.158621, -0.136396, 0.809565]], "unique_id": "3bcc021bcc21aaa42d2cc31eb9a892a5", "user": "ase"}, "2": { "ctime": 16.22295236085328, "key_value_pairs": {"cc_energy": -0.2177, "name": "Water_dimer"}, "mtime": 16.22295236085328, "numbers": [8, 1, 1, 8, 1, 1], "positions": [[-1.551007, -0.11452, 0.0], [-1.934259, 0.762503, 0.0], [-0.599677, 0.040712, 0.0], [1.350625, 0.111469, 0.0], [1.680398, -0.373741, -0.758561], [1.680398, -0.373741, 0.758561]], "unique_id": "85d45771c4968a48aad6bf0c088ae15a", "user": "ase"}, "3": { "ctime": 16.222952360882086, "key_value_pairs": {"cc_energy": -0.8152, "name": "Formic_acid_dimer"}, "mtime": 16.222952360882086, "numbers": [6, 8, 8, 1, 1, 6, 8, 8, 1, 1], "positions": [[-1.888896, -0.179692, 0.0], [-1.49328, 1.073689, 0.0], [-1.170435, -1.16659, 0.0], [-2.979488, -0.258829, 0.0], [-0.498833, 1.107195, 0.0], [1.888896, 0.179692, 0.0], [1.49328, -1.073689, 0.0], [1.170435, 1.16659, 0.0], [2.979488, 0.258829, 0.0], [0.498833, -1.107195, 0.0]], "unique_id": "cb214bdf3b9e87ff62cc9e0e6f8f2d9b", "user": "ase"}, "4": { "ctime": 16.222952360914565, "key_value_pairs": {"cc_energy": -0.699, "name": "Formamide_dimer"}, "mtime": 16.222952360914565, "numbers": [6, 8, 7, 1, 1, 1, 6, 8, 7, 1, 1, 1], "positions": [[-2.018649, 0.052883, 0.0], [-1.4522, 1.143634, 0.0], [-1.40777, -1.142484, 0.0], [-1.964596, -1.977036, 0.0], [-0.387244, -1.207782, 0.0], [-3.117061, -0.013701, 0.0], [2.018649, -0.052883, 0.0], [1.4522, -1.143634, 0.0], [1.40777, 1.142484, 0.0], [1.964596, 1.977036, 0.0], [0.387244, 1.207782, 0.0], [3.117061, 0.013701, 0.0]], "unique_id": "3847c1bfc4788be28a2e66a800b163f3", "user": "ase"}, "5": { "ctime": 16.222952360983175, "key_value_pairs": {"cc_energy": -0.8972, "name": "Uracil_dimer_h-bonded"}, "mtime": 16.222952360983175, "numbers": [8, 6, 7, 6, 6, 6, 7, 8, 1, 1, 1, 1, 8, 6, 7, 6, 6, 6, 7, 8, 1, 1, 1, 1], "positions": [[-1.4663316, 1.0121693, 0.0], [-0.6281464, 1.9142678, 0.0], [0.7205093, 1.6882688, 0.0], [1.636729, 2.7052764, 0.0], [1.2769036, 4.0061763, 0.0], [-0.1286005, 4.3621549, 0.0], [-0.977723, 3.2396433, 0.0], [-0.5972229, 5.4864066, 0.0], [2.0103504, 4.7938642, 0.0], [1.0232515, 0.706182, 0.0], [-1.9700268, 3.432385, 0.0], [2.669062, 2.3883417, 0.0], [1.4663316, -1.0121693, 0.0], [0.6281464, -1.9142678, 0.0], [-0.7205093, -1.6882688, 0.0], [-1.636729, -2.7052764, 0.0], [-1.2769036, -4.0061763, 0.0], [0.1286005, -4.3621549, 0.0], [0.977723, -3.2396433, 0.0], [0.5972229, -5.4864066, 0.0], [-2.0103504, -4.7938642, 0.0], [-1.0232515, -0.706182, 0.0], [1.9700268, -3.432385, 0.0], [-2.669062, -2.3883417, 0.0]], "unique_id": "8f2fe4c04d2b6a18da5532b3a9267d6e", "user": "ase"}, "6": { "ctime": 16.222952361032146, "key_value_pairs": {"cc_energy": -0.7372, "name": "2-pyridoxine_2-aminopyridine_complex"}, "mtime": 16.222952361032146, "numbers": [8, 7, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 7, 6, 6, 6, 6, 6, 1, 1, 1, 1, 7, 1, 1], "positions": [[-1.3976213, -1.8858368, -0.3673061], [-1.464255, 0.3641828, 0.0192301], [-4.1857398, 0.3696669, 0.036096], [-3.4832598, 1.5783111, 0.2500752], [-2.1179502, 1.5307048, 0.2338383], [-2.0773833, -0.8637492, -0.1899414], [-3.5156032, -0.805195, -0.1757585], [-5.2678045, 0.3707428, 0.0411419], [-3.9920334, 2.512756, 0.4214414], [-1.4929196, 2.3984096, 0.3885018], [-4.0401226, -1.7348452, -0.3379269], [-0.4265266, 0.3612127, 0.0073538], [1.4327616, 0.3639703, -0.0159508], [2.11542, -0.780345, 0.1681099], [3.5237586, -0.8016096, 0.1545027], [4.2185897, 0.3735783, -0.0525929], [3.5099708, 1.5615014, -0.2449763], [2.1280138, 1.4953324, -0.2175374], [4.0459206, -1.7361356, 0.3076883], [5.2999426, 0.3666009, -0.0663349], [4.0110923, 2.5024313, -0.4130052], [1.5339878, 2.3893837, -0.3670565], [1.3883123, -1.9083038, 0.4198149], [1.8694714, -2.7812773, 0.2940385], [0.4089067, -1.9079942, 0.130086]], "unique_id": "40ff67fe70cffca80381e3d957b864f2", "user": "ase"}, "7": { "ctime": 16.222952361084904, "key_value_pairs": {"cc_energy": -0.7259, "name": "Adenine-thymine_Watson-Crick_complex"}, "mtime": 16.222952361084904, "numbers": [7, 6, 6, 6, 7, 6, 7, 6, 7, 7, 1, 1, 1, 1, 1, 7, 6, 6, 6, 7, 6, 6, 8, 8, 1, 1, 1, 1, 1, 1], "positions": [[0.9350155, -0.0279801, -0.3788916], [1.6739638, -0.0357766, 0.7424316], [3.0747955, -0.009448, 0.5994562], [3.5646109, 0.0195446, -0.7059872], [2.853151, 0.0258031, -1.8409596], [1.549076, 0.0012569, -1.5808009], [4.0885824, -0.0054429, 1.5289786], [5.1829921, 0.0253971, 0.7872176], [4.9294871, 0.0412404, -0.5567274], [1.0716177, -0.0765366, 1.939139], [0.8794435, 0.005026, -2.4315709], [6.1882591, 0.0375542, 1.1738824], [5.6035368, 0.0648755, -1.3036811], [0.0586915, -0.0423765, 2.0039181], [1.6443796, -0.0347395, 2.7619159], [-3.9211729, -0.0009646, -1.5163659], [-4.6136833, 0.0169051, -0.333652], [-3.9917387, 0.0219348, 0.8663338], [-2.5361367, 0.0074651, 0.8766724], [-1.9256484, -0.0110593, -0.3638948], [-2.5395897, -0.0149474, -1.5962357], [-4.7106131, 0.0413373, 2.1738637], [-1.867473, 0.0112093, 1.9120833], [-1.9416783, -0.0291878, -2.6573783], [-4.4017172, -0.0036078, -2.4004924], [-0.8838255, -0.0216168, -0.3784269], [-5.690922, 0.0269347, -0.4227183], [-4.4439282, -0.8302573, 2.7695655], [-4.4267056, 0.9186178, 2.7530256], [-5.7883971, 0.050553, 2.024728]], "unique_id": "9da379658e41175c83b3b8e14d953b16", "user": "ase"}, "8": { "ctime": 16.222952361144337, "key_value_pairs": {"cc_energy": -0.023, "name": "Methane_dimer"}, "mtime": 16.222952361144337, "numbers": [6, 1, 1, 1, 1, 6, 1, 1, 1, 1], "positions": [[0.0, -0.00014, 1.859161], [-0.888551, 0.51306, 1.494685], [0.888551, 0.51306, 1.494685], [0.0, -1.026339, 1.494868], [0.0, 8.9e-05, 2.948284], [0.0, 0.00014, -1.859161], [0.0, -8.9e-05, -2.948284], [-0.888551, -0.51306, -1.494685], [0.888551, -0.51306, -1.494685], [0.0, 1.026339, -1.494868]], "unique_id": "6abccace6973f5faeb91f504a5140d75", "user": "ase"}, "9": { "ctime": 16.222952361208087, "key_value_pairs": {"cc_energy": -0.065, "name": "Ethene_dimer"}, "mtime": 16.222952361208087, "numbers": [6, 6, 1, 1, 1, 1, 6, 6, 1, 1, 1, 1], "positions": [[-0.471925, -0.471925, -1.859111], [0.471925, 0.471925, -1.859111], [-0.872422, -0.872422, -0.936125], [0.872422, 0.872422, -0.936125], [-0.870464, -0.870464, -2.783308], [0.870464, 0.870464, -2.783308], [-0.471925, 0.471925, 1.859111], [0.471925, -0.471925, 1.859111], [-0.872422, 0.872422, 0.936125], [0.872422, -0.872422, 0.936125], [-0.870464, 0.870464, 2.783308], [0.870464, -0.870464, 2.783308]], "unique_id": "3deb46e807552271b48a84bf01ea0cf1", "user": "ase"}, "10": { "ctime": 16.222952361278054, "key_value_pairs": {"cc_energy": -0.0629, "name": "Benzene-methane_complex"}, "mtime": 16.222952361278054, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1], "positions": [[1.3932178, 0.0362913, -0.6332803], [0.7280364, -1.1884015, -0.6333017], [-0.6651797, -1.2247077, -0.6332803], [-1.3932041, -0.0362972, -0.6333017], [-0.7280381, 1.1884163, -0.6332803], [0.6651677, 1.2246987, -0.6333017], [2.4742737, 0.0644484, -0.631724], [1.2929588, -2.1105409, -0.6317401], [-1.1813229, -2.1750081, -0.631724], [-2.4742614, -0.0644647, -0.6317401], [-1.2929508, 2.1105596, -0.631724], [1.1813026, 2.1750056, -0.6317401], [0.0, 0.0, 3.0826195], [0.5868776, 0.8381742, 3.4463772], [-1.0193189, 0.0891638, 3.4463772], [0.0, 0.0, 1.9966697], [0.4324413, -0.927338, 3.446377]], "unique_id": "daa6383c7be9ab71579b20c3d4533d11", "user": "ase"}, "11": { "ctime": 16.22295236135356, "key_value_pairs": {"cc_energy": -0.1136, "name": "Benzene_dimer_parallel_displaced"}, "mtime": 16.22295236135356, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[-1.0478252, -1.4216736, 0.0], [-1.4545034, -0.8554459, 1.2062048], [-1.4545034, -0.8554459, -1.2062048], [-2.266797, 0.277161, 1.2069539], [-2.6714781, 0.8450211, 0.0], [-2.266797, 0.277161, -1.2069539], [-1.1338534, -1.2920593, -2.142315], [-2.5824943, 0.7163066, -2.1437977], [-3.3030422, 1.72327, 0.0], [-2.5824943, 0.7163066, 2.1437977], [-1.1338534, -1.2920593, 2.142315], [-0.4060253, -2.2919049, 0.0], [1.0478252, 1.4216736, 0.0], [1.4545034, 0.8554459, -1.2062048], [1.4545034, 0.8554459, 1.2062048], [2.266797, -0.277161, -1.2069539], [2.6714781, -0.8450211, 0.0], [2.266797, -0.277161, 1.2069539], [0.4060253, 2.2919049, 0.0], [1.1338534, 1.2920593, 2.142315], [2.5824943, -0.7163066, 2.1437977], [3.3030422, -1.72327, 0.0], [2.5824943, -0.7163066, -2.1437977], [1.1338534, 1.2920593, -2.142315]], "unique_id": "30686ecfce37f221e08914bce05471f5", "user": "ase"}, "12": { "ctime": 16.22295236143674, "key_value_pairs": {"cc_energy": -0.1821, "name": "Pyrazine_dimer"}, "mtime": 16.22295236143674, "numbers": [6, 6, 7, 6, 6, 7, 1, 1, 1, 1, 6, 6, 7, 6, 6, 7, 1, 1, 1, 1], "positions": [[-1.2471894, -1.1718212, -0.6961388], [-1.2471894, -1.1718212, 0.6961388], [-0.258951, -1.7235771, 1.4144796], [0.7315327, -2.2652221, 0.6967288], [0.7315327, -2.2652221, -0.6967288], [-0.258951, -1.7235771, -1.4144796], [-2.0634363, -0.7223199, -1.2472797], [-2.0634363, -0.7223199, 1.2472797], [1.5488004, -2.7128282, 1.2475604], [1.5488004, -2.7128282, -1.2475604], [-0.3380031, 2.0800608, 1.1300452], [0.8540254, 1.3593471, 1.1306308], [1.4701787, 0.9907598, 0.0], [0.8540254, 1.3593471, -1.1306308], [-0.3380031, 2.0800608, -1.1300452], [-0.9523059, 2.4528836, 0.0], [-0.8103758, 2.3643033, 2.0618643], [1.3208583, 1.067061, 2.0623986], [1.3208583, 1.067061, -2.0623986], [-0.8103758, 2.3643033, -2.0618643]], "unique_id": "26609457476cba2c46a55853df6e5ecc", "user": "ase"}, "13": { "ctime": 16.22295236152604, "key_value_pairs": {"cc_energy": -0.4224, "name": "Uracil_dimer_stack"}, "mtime": 16.22295236152604, "numbers": [7, 6, 1, 6, 1, 6, 8, 7, 1, 6, 8, 1, 7, 6, 1, 6, 1, 6, 8, 7, 1, 6, 8, 1], "positions": [[2.0113587, -1.2132073, -0.0980673], [2.0257076, -0.6971797, -1.3644029], [2.2975208, -1.3910592, -2.1456459], [1.7145226, 0.5919651, -1.6124892], [1.7272873, 0.9908466, -2.612005], [1.3089605, 1.457534, -0.520589], [0.9205926, 2.6110864, -0.6260457], [1.3768885, 0.8397454, 0.7346356], [1.051804, 1.3862229, 1.523371], [1.6459909, -0.4852113, 1.0187267], [1.561109, -0.9718061, 2.1298059], [2.1294635, -2.2015046, 0.0568134], [-2.0113587, 1.2132073, -0.0980673], [-2.0257076, 0.6971797, -1.3644029], [-2.2975208, 1.3910592, -2.1456459], [-1.7145226, -0.5919651, -1.6124892], [-1.7272873, -0.9908466, -2.612005], [-1.3089605, -1.457534, -0.520589], [-0.9205926, -2.6110864, -0.6260457], [-1.3768885, -0.8397454, 0.7346356], [-1.051804, -1.3862229, 1.523371], [-1.6459909, 0.4852113, 1.0187267], [-1.561109, 0.9718061, 2.1298059], [-2.1294635, 2.2015046, 0.0568134]], "unique_id": "9fdd4e7f40400da61d3a58eb8e07882c", "user": "ase"}, "14": { "ctime": 16.222952361621317, "key_value_pairs": {"cc_energy": -0.199, "name": "Indole-benzene_complex_stack"}, "mtime": 16.222952361621317, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 6, 6, 1, 6, 6, 1, 6, 7, 6, 6, 1, 6, 1, 1, 1], "positions": [[-0.0210742, 1.5318615, -1.3639345], [-1.2746794, 0.974103, -1.6074097], [-1.3783055, -0.2256981, -2.3084154], [-0.2289426, -0.8664053, -2.7687944], [1.0247882, -0.3035171, -2.531241], [1.1289996, 0.8966787, -1.829983], [0.060074, 2.4565627, -0.8093957], [-2.1651002, 1.4654521, -1.2405676], [-2.3509735, -0.6616122, -2.4926698], [-0.3103419, -1.7955762, -3.3172704], [1.9165847, -0.7940845, -2.8993942], [2.1000347, 1.3326757, -1.640042], [-2.9417647, 0.8953834, 2.2239054], [-2.0220674, 0.425854, 1.9013549], [-0.8149418, 1.0740453, 2.1066982], [-0.7851529, 2.0443812, 2.5856086], [0.3704286, 0.4492852, 1.6847458], [1.7508619, 0.8038935, 1.7194004], [2.1870108, 1.6998281, 2.1275903], [2.4451359, -0.2310742, 1.1353313], [1.5646462, -1.2137812, 0.7555384], [0.2861214, -0.8269486, 1.0618752], [-0.9284667, -1.4853121, 0.8606937], [-0.97292, -2.4554847, 0.3834013], [-2.0792848, -0.8417668, 1.2876443], [-3.0389974, -1.3203846, 1.14684], [1.8075741, -2.0366963, 0.2333038], [3.5028794, -0.3485344, 0.969523]], "unique_id": "bc313d250ce8e5cc1676d41156f13992", "user": "ase"}, "15": { "ctime": 16.222952361724452, "key_value_pairs": {"cc_energy": -0.5056, "name": "Adenine-thymine_complex_stack"}, "mtime": 16.222952361724452, "numbers": [7, 6, 1, 7, 6, 6, 7, 1, 1, 7, 6, 1, 7, 6, 1, 7, 6, 1, 6, 6, 1, 1, 1, 6, 8, 7, 1, 6, 8, 1], "positions": [[0.2793014, 2.4068393, -0.6057517], [-1.084857, 2.4457461, -0.5511608], [-1.6594403, 3.0230294, -1.2560905], [-1.5977117, 1.7179877, 0.4287543], [-0.4897255, 1.1714358, 1.030191], [-0.3461366, 0.291471, 2.1172343], [-1.418709, -0.1677767, 2.8101441], [-1.238875, -0.9594802, 3.4047578], [-2.2918734, -0.1788223, 2.3073619], [0.885763, -0.0700763, 2.4919494], [1.9352348, 0.4072878, 1.7968022], [2.906033, 0.0788414, 2.1458181], [1.9409775, 1.2242019, 0.7402202], [0.6952186, 1.5779858, 0.4063984], [0.8610073, 2.8298045, -1.3104502], [1.2754606, -0.6478993, -1.9779104], [1.4130533, -1.553685, -0.9550667], [2.4258769, -1.867078, -0.7468778], [0.3575976, -2.0239499, -0.2530575], [0.4821292, -3.0179494, 0.8521221], [0.1757705, -2.5756065, 1.7986281], [-0.1601691, -3.8770412, 0.6639498], [1.5112443, -3.3572767, 0.9513659], [-0.9684711, -1.5298112, -0.5939792], [-2.002928, -1.8396957, -0.0199453], [-0.9956916, -0.638387, -1.672042], [-1.9014057, -0.250172, -1.898576], [0.0684702, -0.1191762, -2.3763759], [-0.0397875, 0.7227006, -3.2531083], [2.0853289, -0.2760176, -2.4454577]], "unique_id": "df10d584a891dfb04df519a56006d4a8", "user": "ase"}, "16": { "ctime": 16.222952361834604, "key_value_pairs": {"cc_energy": -0.0655, "name": "Ethene-ethyne_complex"}, "mtime": 16.222952361834604, "numbers": [6, 6, 1, 1, 1, 1, 6, 6, 1, 1], "positions": [[0.0, -0.667578, -2.124659], [0.0, 0.667578, -2.124659], [0.923621, -1.232253, -2.126185], [-0.923621, -1.232253, -2.126185], [-0.923621, 1.232253, -2.126185], [0.923621, 1.232253, -2.126185], [0.0, 0.0, 2.900503], [0.0, 0.0, 1.69324], [0.0, 0.0, 0.627352], [0.0, 0.0, 3.963929]], "unique_id": "472fe0f9bef600d02fa2b22cd319a40b", "user": "ase"}, "17": { "ctime": 16.222952361949854, "key_value_pairs": {"cc_energy": -0.1427, "name": "Benzene-water_complex"}, "mtime": 16.222952361949854, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 8, 1, 1], "positions": [[0.7806117, -0.6098875, -1.2075426], [0.4784039, 0.7510406, -1.207904], [0.3276592, 1.4318573, 0.0], [0.4784039, 0.7510406, 1.207904], [0.7806117, -0.6098875, 1.2075426], [0.932151, -1.2899614, 0.0], [0.8966688, -1.1376051, -2.1441482], [0.3573895, 1.2782091, -2.1440546], [0.0918593, 2.4871407, 0.0], [0.3573895, 1.2782091, 2.1440546], [0.8966688, -1.1376051, 2.1441482], [1.1690064, -2.3451668, 0.0], [-2.788527, -0.2744854, 0.0], [-2.6229114, -1.2190831, 0.0], [-1.9015103, 0.097911, 0.0]], "unique_id": "d01550c200e64a11d0a326ed866eff8d", "user": "ase"}, "18": { "ctime": 16.222952362069815, "key_value_pairs": {"cc_energy": -0.1006, "name": "Benzene-ammonia_complex"}, "mtime": 16.222952362069815, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1], "positions": [[-0.739281, 0.5158785, -1.2071079], [-1.4261442, 0.3965455, 0.0], [-0.739281, 0.5158785, 1.2071079], [0.6342269, 0.7546398, 1.2070735], [1.3210434, 0.8737566, 0.0], [0.6342269, 0.7546398, -1.2070735], [-1.2719495, 0.4206316, -2.1432894], [-2.4902205, 0.2052381, 0.0], [-1.2719495, 0.4206316, 2.1432894], [1.1668005, 0.8474885, 2.143695], [2.3863585, 1.0596312, 0.0], [1.1668005, 0.8474885, -2.143695], [0.180393, -2.9491231, 0.0], [0.7595495, -3.1459477, -0.8060729], [0.7595495, -3.1459477, 0.8060729], [0.0444167, -1.9449399, 0.0]], "unique_id": "9031ee80ccaebb16b18ac17e2397aab7", "user": "ase"}, "19": { "ctime": 16.222952362195848, "key_value_pairs": {"cc_energy": -0.1973, "name": "Benzene-HCN_complex"}, "mtime": 16.222952362195848, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 7, 6, 1], "positions": [[-0.7097741, -0.990423, 1.2077018], [-1.406534, -0.9653529, 0.0], [-0.7097741, -0.990423, -1.2077018], [0.6839651, -1.0405105, -1.2078652], [1.3809779, -1.0655522, 0.0], [0.6839651, -1.0405105, 1.2078652], [-1.2499482, -0.968628, 2.1440507], [-2.4869197, -0.923706, 0.0], [-1.2499482, -0.968628, -2.1440507], [1.2242882, -1.0580753, -2.1442563], [2.4615886, -1.1029818, 0.0], [1.2242882, -1.0580753, 2.1442563], [-0.0034118, 3.5353926, 0.0], [0.0751963, 2.370704, 0.0], [0.1476295, 1.3052847, 0.0]], "unique_id": "747fbde12e2a953f66fb34f502fd9e11", "user": "ase"}, "20": { "ctime": 16.22295236232791, "key_value_pairs": {"cc_energy": -0.1175, "name": "Benzene_dimer_T-shaped"}, "mtime": 16.22295236232791, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[0.0, 0.0, 1.0590353], [0.0, -1.2060084, 1.7576742], [0.0, -1.2071767, 3.1515905], [0.0, 0.0, 3.8485751], [0.0, 1.2071767, 3.1515905], [0.0, 1.2060084, 1.7576742], [0.0, 0.0, -0.0215805], [0.0, -2.1416387, 1.2144217], [0.0, -2.1435657, 3.6929953], [0.0, 0.0, 4.9301499], [0.0, 2.1435657, 3.6929953], [0.0, 2.1416387, 1.2144217], [-1.3940633, 0.0, -2.4541524], [-0.6970468, 1.2072378, -2.4546277], [0.6970468, 1.2072378, -2.4546277], [1.3940633, 0.0, -2.4541524], [0.6970468, -1.2072378, -2.4546277], [-0.6970468, -1.2072378, -2.4546277], [-2.4753995, 0.0, -2.4503221], [-1.2382321, 2.1435655, -2.4536764], [1.2382321, 2.1435655, -2.4536764], [2.4753995, 0.0, -2.4503221], [1.2382321, -2.1435655, -2.4536764], [-1.2382321, -2.1435655, -2.4536764]], "unique_id": "3ce240a93051259852ecc0b329b6e7bd", "user": "ase"}, "21": { "ctime": 16.222952362466817, "key_value_pairs": {"cc_energy": -0.2437, "name": "Indole-benzene_T-shape_complex"}, "mtime": 16.222952362466817, "numbers": [6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 7, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1], "positions": [[2.5118997, 1.6250148, 0.0], [2.7130094, 0.9578537, -1.2082918], [3.1177821, -0.3767436, -1.2083647], [3.3213848, -1.0437307, 0.0], [3.1177821, -0.3767436, 1.2083647], [2.7130094, 0.9578537, 1.2082918], [2.2024038, 2.6611358, 0.0], [2.551176, 1.4736908, -2.14459], [3.2702999, -0.8951406, -2.1448379], [3.6368139, -2.0781521, 0.0], [3.2702999, -0.8951406, 2.1448379], [2.551176, 1.4736908, 2.14459], [0.8065245, -0.4358866, 0.0], [-0.1442408, -0.7686927, 0.0], [-0.5161122, -2.089322, 0.0], [-1.8898755, -2.1814495, 0.0], [-2.3932317, -0.847083, 0.0], [-1.2640653, 0.0195887, 0.0], [-1.3896004, 1.4117668, 0.0], [-2.6726501, 1.936645, 0.0], [-3.8054511, 1.097479, 0.0], [-3.6798167, -0.2817209, 0.0], [0.2310024, -2.8653173, 0.0], [-2.4585759, -3.0956052, 0.0], [-0.5188733, 2.053952, 0.0], [-2.807757, 3.0097859, 0.0], [-4.7905991, 1.5439372, 0.0], [-4.5580187, -0.9142916, 0.0]], "unique_id": "d8c7035b6e83ed42568f78d2dfcafdaa", "user": "ase"}, "22": { "ctime": 16.22295236261237, "key_value_pairs": {"cc_energy": -0.3075, "name": "Phenol_dimer"}, "mtime": 16.22295236261237, "numbers": [6, 8, 1, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1, 8, 6, 1, 6, 6, 6, 6, 6, 1, 1, 1, 1, 1], "positions": [[-2.0071056, 0.7638459, -0.1083509], [-1.3885044, 1.9298523, -0.4431206], [-0.5238121, 1.9646519, -0.0064609], [-1.4630807, -0.151912, 0.794993], [-2.1475789, -1.3295094, 1.0883677], [-3.3743208, -1.6031427, 0.4895864], [-3.9143727, -0.6838545, -0.4091028], [-3.2370496, 0.4929609, -0.7096126], [-0.510651, 0.0566569, 1.2642563], [-1.7151135, -2.0321452, 1.7878417], [-3.9024664, -2.5173865, 0.7197947], [-4.867073, -0.8822939, -0.8811319], [-3.6431662, 1.2134345, -1.405759], [1.3531168, 1.9382724, 0.4723133], [2.0369747, 0.7865043, 0.1495491], [1.7842846, 2.3487495, 1.229711], [1.5904026, 0.069686, -0.9574153], [2.2417367, -1.1069765, -1.312811], [3.3315674, -1.5665603, -0.5748636], [3.7696838, -0.8396901, 0.5286439], [3.1224836, 0.3383498, 0.8960491], [0.7445512, 0.4367983, -1.5218583], [1.8921463, -1.6649726, -2.1701843], [3.8330227, -2.4811537, -0.8566666], [4.6137632, -1.1850101, 1.1092635], [3.4598854, 0.9030376, 1.7569489]], "unique_id": "5c3403dbada6f0cd3614c3e66996fbb8", "user": "ase"}, "ids": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "nextid": 23} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/constraints.py000066400000000000000000001531701316323560300234670ustar00rootroot00000000000000from __future__ import division, print_function from math import sqrt from ase.geometry import find_mic from ase.calculators.calculator import PropertyNotImplementedError import numpy as np __all__ = ['FixCartesian', 'FixBondLength', 'FixedMode', 'FixConstraintSingle', 'FixAtoms', 'UnitCellFilter', 'FixScaled', 'StrainFilter', 'FixedPlane', 'Filter', 'FixConstraint', 'FixedLine', 'FixBondLengths', 'FixInternals', 'Hookean', 'ExternalForce'] def dict2constraint(dct): if dct['name'] not in __all__: raise ValueError return globals()[dct['name']](**dct['kwargs']) def slice2enlist(s, n): """Convert a slice object into a list of (new, old) tuples.""" if isinstance(s, slice): return enumerate(range(*s.indices(n))) return enumerate(s) def constrained_indices(atoms, only_include=None): """Returns a list of indices for the atoms that are constrained by a constraint that is applied. By setting only_include to a specific type of constraint you can make it only look for that given constraint. """ indices = [] for constraint in atoms.constraints: if only_include is not None: if not isinstance(constraint, only_include): continue indices.extend(np.array(constraint.get_indices())) return np.array(np.unique(indices)) class FixConstraint: """Base class for classes that fix one or more atoms in some way.""" def index_shuffle(self, atoms, ind): """Change the indices. When the ordering of the atoms in the Atoms object changes, this method can be called to shuffle the indices of the constraints. ind -- List or tuple of indices. """ raise NotImplementedError def repeat(self, m, n): """ basic method to multiply by m, needs to know the length of the underlying atoms object for the assignment of multiplied constraints to work. """ msg = ("Repeat is not compatible with your atoms' constraints." ' Use atoms.set_constraint() before calling repeat to ' 'remove your constraints.') raise NotImplementedError(msg) def adjust_momenta(self, atoms, momenta): """Adjusts momenta in identical manner to forces.""" self.adjust_forces(atoms, momenta) def copy(self): return dict2constraint(self.todict().copy()) class FixConstraintSingle(FixConstraint): """Base class for classes that fix a single atom.""" def __init__(self, a): self.a = a def index_shuffle(self, atoms, ind): """The atom index must be stored as self.a.""" newa = None # Signal error if self.a < 0: self.a += len(atoms) for new, old in slice2enlist(ind, len(atoms)): if old == self.a: newa = new break if newa is None: raise IndexError('Constraint not part of slice') self.a = newa def get_indices(self): return [self.a] class FixAtoms(FixConstraint): """Constraint object for fixing some chosen atoms.""" def __init__(self, indices=None, mask=None): """Constrain chosen atoms. Parameters ---------- indices : list of int Indices for those atoms that should be constrained. mask : list of bool One boolean per atom indicating if the atom should be constrained or not. Examples -------- Fix all Copper atoms: >>> mask = [s == 'Cu' for s in atoms.get_chemical_symbols()] >>> c = FixAtoms(mask=mask) >>> atoms.set_constraint(c) Fix all atoms with z-coordinate less than 1.0 Angstrom: >>> c = FixAtoms(mask=atoms.positions[:, 2] < 1.0) >>> atoms.set_constraint(c) """ if indices is None and mask is None: raise ValueError('Use "indices" or "mask".') if indices is not None and mask is not None: raise ValueError('Use only one of "indices" and "mask".') if mask is not None: indices = np.arange(len(mask))[np.asarray(mask, bool)] else: # Check for duplicates: srt = np.sort(indices) if (np.diff(srt) == 0).any(): raise ValueError( 'FixAtoms: The indices array contained duplicates. ' 'Perhaps you wanted to specify a mask instead, but ' 'forgot the mask= keyword.') self.index = np.asarray(indices, int) if self.index.ndim != 1: raise ValueError('Wrong argument to FixAtoms class!') self.removed_dof = 3 * len(self.index) def adjust_positions(self, atoms, new): new[self.index] = atoms.positions[self.index] def adjust_forces(self, atoms, forces): forces[self.index] = 0.0 def index_shuffle(self, atoms, ind): # See docstring of superclass index = [] for new, old in slice2enlist(ind, len(atoms)): if old in self.index: index.append(new) if len(index) == 0: raise IndexError('All indices in FixAtoms not part of slice') self.index = np.asarray(index, int) def get_indices(self): return self.index def __repr__(self): return 'FixAtoms(indices=%s)' % ints2string(self.index) def todict(self): return {'name': 'FixAtoms', 'kwargs': {'indices': self.index}} def repeat(self, m, n): i0 = 0 natoms = 0 if isinstance(m, int): m = (m, m, m) index_new = [] for m2 in range(m[2]): for m1 in range(m[1]): for m0 in range(m[0]): i1 = i0 + n index_new += [i + natoms for i in self.index] i0 = i1 natoms += n self.index = np.asarray(index_new, int) return self def delete_atoms(self, indices, natoms): """Removes atom number ind from the index array, if present. Required for removing atoms with existing FixAtoms constraints. """ i = np.zeros(natoms, int) - 1 new = np.delete(np.arange(natoms), indices) i[new] = np.arange(len(new)) index = i[self.index] self.index = index[index >= 0] if len(self.index) == 0: return None return self def ints2string(x, threshold=None): """Convert ndarray of ints to string.""" if threshold is None or len(x) <= threshold: return str(x.tolist()) return str(x[:threshold].tolist())[:-1] + ', ...]' class FixBondLengths(FixConstraint): maxiter = 500 def __init__(self, pairs, tolerance=1e-13, bondlengths=None, iterations=None): """iterations: Ignored""" self.pairs = np.asarray(pairs) self.tolerance = tolerance self.bondlengths = bondlengths self.removed_dof = len(pairs) def adjust_positions(self, atoms, new): old = atoms.positions masses = atoms.get_masses() if self.bondlengths is None: self.bondlengths = self.initialize_bond_lengths(atoms) for i in range(self.maxiter): converged = True for j, ab in enumerate(self.pairs): a = ab[0] b = ab[1] cd = self.bondlengths[j] r0 = old[a] - old[b] d0 = find_mic([r0], atoms.cell, atoms._pbc)[0][0] d1 = new[a] - new[b] - r0 + d0 m = 1 / (1 / masses[a] + 1 / masses[b]) x = 0.5 * (cd**2 - np.dot(d1, d1)) / np.dot(d0, d1) if abs(x) > self.tolerance: new[a] += x * m / masses[a] * d0 new[b] -= x * m / masses[b] * d0 converged = False if converged: break else: raise RuntimeError('Did not converge') def adjust_momenta(self, atoms, p): old = atoms.positions masses = atoms.get_masses() if self.bondlengths is None: self.bondlengths = self.initialize_bond_lengths(atoms) for i in range(self.maxiter): converged = True for j, ab in enumerate(self.pairs): a = ab[0] b = ab[1] cd = self.bondlengths[j] d = old[a] - old[b] d = find_mic([d], atoms.cell, atoms._pbc)[0][0] dv = p[a] / masses[a] - p[b] / masses[b] m = 1 / (1 / masses[a] + 1 / masses[b]) x = -np.dot(dv, d) / cd**2 if abs(x) > self.tolerance: p[a] += x * m * d p[b] -= x * m * d converged = False if converged: break else: raise RuntimeError('Did not converge') def adjust_forces(self, atoms, forces): self.constraint_forces = -forces self.adjust_momenta(atoms, forces) self.constraint_forces += forces def initialize_bond_lengths(self, atoms): bondlengths = np.zeros(len(self.pairs)) for i, ab in enumerate(self.pairs): bondlengths[i] = atoms.get_distance(ab[0], ab[1], mic=True) return bondlengths def get_indices(self): return np.unique(self.pairs.ravel()) def todict(self): return {'name': 'FixBondLengths', 'kwargs': {'pairs': self.pairs, 'tolerance': self.tolerance}} def index_shuffle(self, atoms, ind): """Shuffle the indices of the two atoms in this constraint""" map = np.zeros(len(atoms), int) map[ind] = 1 n = map.sum() map[:] = -1 map[ind] = range(n) pairs = map[self.pairs] self.pairs = pairs[(pairs != -1).all(1)] if len(self.pairs) == 0: raise IndexError('Constraint not part of slice') def FixBondLength(a1, a2): """Fix distance between atoms with indices a1 and a2.""" return FixBondLengths([(a1, a2)]) class FixedMode(FixConstraint): """Constrain atoms to move along directions orthogonal to a given mode only.""" def __init__(self, mode): self.mode = (np.asarray(mode) / np.sqrt((mode**2).sum())).reshape(-1) def adjust_positions(self, atoms, newpositions): newpositions = newpositions.ravel() oldpositions = atoms.positions.ravel() step = newpositions - oldpositions newpositions -= self.mode * np.dot(step, self.mode) def adjust_forces(self, atoms, forces): forces = forces.ravel() forces -= self.mode * np.dot(forces, self.mode) def index_shuffle(self, atoms, ind): eps = 1e-12 mode = self.mode.reshape(-1, 3) excluded = np.ones(len(mode), dtype=bool) excluded[ind] = False if (abs(mode[excluded]) > eps).any(): raise IndexError('All nonzero parts of mode not in slice') self.mode = mode[ind].ravel() def get_indices(self): # This function will never properly work because it works on all # atoms and it has no idea how to tell how many atoms it is # attached to. If it is being used, surely the user knows # everything is being constrained. return [] def todict(self): return {'name': 'FixedMode', 'kwargs': {'mode': self.mode}} def __repr__(self): return 'FixedMode(%s)' % self.mode.tolist() class FixedPlane(FixConstraintSingle): """Constrain an atom index *a* to move in a given plane only. The plane is defined by its normal vector *direction*.""" removed_dof = 1 def __init__(self, a, direction): self.a = a self.dir = np.asarray(direction) / sqrt(np.dot(direction, direction)) def adjust_positions(self, atoms, newpositions): step = newpositions[self.a] - atoms.positions[self.a] newpositions[self.a] -= self.dir * np.dot(step, self.dir) def adjust_forces(self, atoms, forces): forces[self.a] -= self.dir * np.dot(forces[self.a], self.dir) def todict(self): return {'name': 'FixedPlane', 'kwargs': {'a': self.a, 'direction': self.dir}} def __repr__(self): return 'FixedPlane(%d, %s)' % (self.a, self.dir.tolist()) class FixedLine(FixConstraintSingle): """Constrain an atom index *a* to move on a given line only. The line is defined by its vector *direction*.""" removed_dof = 2 def __init__(self, a, direction): self.a = a self.dir = np.asarray(direction) / sqrt(np.dot(direction, direction)) def adjust_positions(self, atoms, newpositions): step = newpositions[self.a] - atoms.positions[self.a] x = np.dot(step, self.dir) newpositions[self.a] = atoms.positions[self.a] + x * self.dir def adjust_forces(self, atoms, forces): forces[self.a] = self.dir * np.dot(forces[self.a], self.dir) def __repr__(self): return 'FixedLine(%d, %s)' % (self.a, self.dir.tolist()) def todict(self): return {'name': 'FixedLine', 'kwargs': {'a': self.a, 'direction': self.dir}} class FixCartesian(FixConstraintSingle): 'Fix an atom index *a* in the directions of the cartesian coordinates.' def __init__(self, a, mask=(1, 1, 1)): self.a = a self.mask = ~np.asarray(mask, bool) self.removed_dof = 3 - self.mask.sum() def adjust_positions(self, atoms, new): step = new[self.a] - atoms.positions[self.a] step *= self.mask new[self.a] = atoms.positions[self.a] + step def adjust_forces(self, atoms, forces): forces[self.a] *= self.mask def __repr__(self): return 'FixCartesian(a={0}, mask={1})'.format(self.a, list(~self.mask)) def todict(self): return {'name': 'FixCartesian', 'kwargs': {'a': self.a, 'mask': ~self.mask}} class FixScaled(FixConstraintSingle): 'Fix an atom index *a* in the directions of the unit vectors.' def __init__(self, cell, a, mask=(1, 1, 1)): self.cell = np.asarray(cell) self.a = a self.mask = np.array(mask, bool) self.removed_dof = self.mask.sum() def adjust_positions(self, atoms, new): scaled_old = np.linalg.solve(self.cell.T, atoms.positions.T).T scaled_new = np.linalg.solve(self.cell.T, new.T).T for n in range(3): if self.mask[n]: scaled_new[self.a, n] = scaled_old[self.a, n] new[self.a] = np.dot(scaled_new, self.cell)[self.a] def adjust_forces(self, atoms, forces): scaled_forces = np.linalg.solve(self.cell.T, forces.T).T scaled_forces[self.a] *= -(self.mask - 1) forces[self.a] = np.dot(scaled_forces, self.cell)[self.a] def todict(self): return {'name': 'FixScaled', 'kwargs': {'a': self.a, 'cell': self.cell, 'mask': self.mask}} def __repr__(self): return 'FixScaled(%s, %d, %s)' % (repr(self.cell), self.a, repr(self.mask)) # TODO: Better interface might be to use dictionaries in place of very # nested lists/tuples class FixInternals(FixConstraint): """Constraint object for fixing multiple internal coordinates. Allows fixing bonds, angles, and dihedrals.""" def __init__(self, bonds=None, angles=None, dihedrals=None, epsilon=1.e-7): self.bonds = bonds or [] self.angles = angles or [] self.dihedrals = dihedrals or [] # Initialize these at run-time: self.n = 0 self.constraints = [] self.epsilon = epsilon self.initialized = False self.removed_dof = (len(self.bonds) + len(self.angles) + len(self.dihedrals)) def initialize(self, atoms): if self.initialized: return masses = atoms.get_masses() self.n = len(self.bonds) + len(self.angles) + len(self.dihedrals) self.constraints = [] for bond in self.bonds: masses_bond = masses.take(bond[1]) self.constraints.append(self.FixBondLengthAlt(bond[0], bond[1], masses_bond)) for angle in self.angles: masses_angle = masses.take(angle[1]) self.constraints.append(self.FixAngle(angle[0], angle[1], masses_angle)) for dihedral in self.dihedrals: masses_dihedral = masses.take(dihedral[1]) self.constraints.append(self.FixDihedral(dihedral[0], dihedral[1], masses_dihedral)) self.initialized = True def get_indices(self): cons = self.bonds + self.dihedrals + self.angles return np.unique(np.ravel([constraint[1] for constraint in cons])) def todict(self): return {'name': 'FixInternals', 'kwargs': {'bonds': self.bonds, 'angles': self.angles, 'dihedrals': self.dihedrals, 'epsilon': self.epsilon}} def adjust_positions(self, atoms, new): self.initialize(atoms) for constraint in self.constraints: constraint.set_h_vectors(atoms.positions) for j in range(50): maxerr = 0.0 for constraint in self.constraints: constraint.adjust_positions(atoms.positions, new) maxerr = max(abs(constraint.sigma), maxerr) if maxerr < self.epsilon: return raise ValueError('Shake did not converge.') def adjust_forces(self, atoms, forces): """Project out translations and rotations and all other constraints""" self.initialize(atoms) positions = atoms.positions N = len(forces) list2_constraints = list(np.zeros((6, N, 3))) tx, ty, tz, rx, ry, rz = list2_constraints list_constraints = [r.ravel() for r in list2_constraints] tx[:, 0] = 1.0 ty[:, 1] = 1.0 tz[:, 2] = 1.0 ff = forces.ravel() # Calculate the center of mass center = positions.sum(axis=0) / N rx[:, 1] = -(positions[:, 2] - center[2]) rx[:, 2] = positions[:, 1] - center[1] ry[:, 0] = positions[:, 2] - center[2] ry[:, 2] = -(positions[:, 0] - center[0]) rz[:, 0] = -(positions[:, 1] - center[1]) rz[:, 1] = positions[:, 0] - center[0] # Normalizing transl., rotat. constraints for r in list2_constraints: r /= np.linalg.norm(r.ravel()) # Add all angle, etc. constraint vectors for constraint in self.constraints: constraint.adjust_forces(positions, forces) list_constraints.insert(0, constraint.h) # QR DECOMPOSITION - GRAM SCHMIDT list_constraints = [r.ravel() for r in list_constraints] aa = np.column_stack(list_constraints) (aa, bb) = np.linalg.qr(aa) # Projection hh = [] for i, constraint in enumerate(self.constraints): hh.append(aa[:, i] * np.row_stack(aa[:, i])) txx = aa[:, self.n] * np.row_stack(aa[:, self.n]) tyy = aa[:, self.n + 1] * np.row_stack(aa[:, self.n + 1]) tzz = aa[:, self.n + 2] * np.row_stack(aa[:, self.n + 2]) rxx = aa[:, self.n + 3] * np.row_stack(aa[:, self.n + 3]) ryy = aa[:, self.n + 4] * np.row_stack(aa[:, self.n + 4]) rzz = aa[:, self.n + 5] * np.row_stack(aa[:, self.n + 5]) T = txx + tyy + tzz + rxx + ryy + rzz for vec in hh: T += vec ff = np.dot(T, np.row_stack(ff)) forces[:, :] -= np.dot(T, np.row_stack(ff)).reshape(-1, 3) def __repr__(self): constraints = repr(self.constraints) return 'FixInternals(_copy_init=%s, epsilon=%s)' % (constraints, repr(self.epsilon)) def __str__(self): return '\n'.join([repr(c) for c in self.constraints]) # Classes for internal use in FixInternals class FixBondLengthAlt: """Constraint subobject for fixing bond length within FixInternals.""" def __init__(self, bond, indices, masses, maxstep=0.01): """Fix distance between atoms with indices a1, a2.""" self.indices = indices self.bond = bond self.h1 = None self.h2 = None self.masses = masses self.h = [] self.sigma = 1. def set_h_vectors(self, pos): dist1 = pos[self.indices[0]] - pos[self.indices[1]] self.h1 = 2 * dist1 self.h2 = -self.h1 def adjust_positions(self, old, new): h1 = self.h1 / self.masses[0] h2 = self.h2 / self.masses[1] dist1 = new[self.indices[0]] - new[self.indices[1]] dist = np.dot(dist1, dist1) self.sigma = dist - self.bond**2 lamda = -self.sigma / (2 * np.dot(dist1, (h1 - h2))) new[self.indices[0]] += lamda * h1 new[self.indices[1]] += lamda * h2 def adjust_forces(self, positions, forces): self.h1 = 2 * (positions[self.indices[0]] - positions[self.indices[1]]) self.h2 = -self.h1 self.h = np.zeros([len(forces) * 3]) self.h[(self.indices[0]) * 3] = self.h1[0] self.h[(self.indices[0]) * 3 + 1] = self.h1[1] self.h[(self.indices[0]) * 3 + 2] = self.h1[2] self.h[(self.indices[1]) * 3] = self.h2[0] self.h[(self.indices[1]) * 3 + 1] = self.h2[1] self.h[(self.indices[1]) * 3 + 2] = self.h2[2] self.h /= np.linalg.norm(self.h) def __repr__(self): return 'FixBondLengthAlt(%s, %d, %d)' % \ (repr(self.bond), self.indices[0], self.indices[1]) class FixAngle: """Constraint object for fixing an angle within FixInternals.""" def __init__(self, angle, indices, masses): """Fix atom movement to construct a constant angle.""" self.indices = indices self.a1m, self.a2m, self.a3m = masses self.angle = np.cos(angle) self.h1 = self.h2 = self.h3 = None self.h = [] self.sigma = 1. def set_h_vectors(self, pos): r21 = pos[self.indices[0]] - pos[self.indices[1]] r21_len = np.linalg.norm(r21) e21 = r21 / r21_len r23 = pos[self.indices[2]] - pos[self.indices[1]] r23_len = np.linalg.norm(r23) e23 = r23 / r23_len angle = np.dot(e21, e23) self.h1 = -2 * angle * ((angle * e21 - e23) / (r21_len)) self.h3 = -2 * angle * ((angle * e23 - e21) / (r23_len)) self.h2 = -(self.h1 + self.h3) def adjust_positions(self, oldpositions, newpositions): r21 = newpositions[self.indices[0]] - newpositions[self.indices[1]] r21_len = np.linalg.norm(r21) e21 = r21 / r21_len r23 = newpositions[self.indices[2]] - newpositions[self.indices[1]] r23_len = np.linalg.norm(r23) e23 = r23 / r23_len angle = np.dot(e21, e23) self.sigma = (angle - self.angle) * (angle + self.angle) h1 = self.h1 / self.a1m h3 = self.h3 / self.a3m h2 = self.h2 / self.a2m h21 = h1 - h2 h23 = h3 - h2 # Calculating new positions deriv = (((np.dot(r21, h23) + np.dot(r23, h21)) / (r21_len * r23_len)) - (np.dot(r21, h21) / (r21_len * r21_len) + np.dot(r23, h23) / (r23_len * r23_len)) * angle) deriv *= 2 * angle lamda = -self.sigma / deriv newpositions[self.indices[0]] += lamda * h1 newpositions[self.indices[1]] += lamda * h2 newpositions[self.indices[2]] += lamda * h3 def adjust_forces(self, positions, forces): r21 = positions[self.indices[0]] - positions[self.indices[1]] r21_len = np.linalg.norm(r21) e21 = r21 / r21_len r23 = positions[self.indices[2]] - positions[self.indices[1]] r23_len = np.linalg.norm(r23) e23 = r23 / r23_len angle = np.dot(e21, e23) self.h1 = -2 * angle * (angle * e21 - e23) / r21_len self.h3 = -2 * angle * (angle * e23 - e21) / r23_len self.h2 = -(self.h1 + self.h3) self.h = np.zeros([len(positions) * 3]) self.h[(self.indices[0]) * 3] = self.h1[0] self.h[(self.indices[0]) * 3 + 1] = self.h1[1] self.h[(self.indices[0]) * 3 + 2] = self.h1[2] self.h[(self.indices[1]) * 3] = self.h2[0] self.h[(self.indices[1]) * 3 + 1] = self.h2[1] self.h[(self.indices[1]) * 3 + 2] = self.h2[2] self.h[(self.indices[2]) * 3] = self.h3[0] self.h[(self.indices[2]) * 3 + 1] = self.h3[1] self.h[(self.indices[2]) * 3 + 2] = self.h3[2] self.h /= np.linalg.norm(self.h) def __repr__(self): return 'FixAngle(%s, %f)' % (tuple(self.indices), np.arccos(self.angle)) class FixDihedral: """Constraint object for fixing an dihedral using the shake algorithm. This one allows also other constraints.""" def __init__(self, angle, indices, masses): """Fix atom movement to construct a constant dihedral angle.""" self.indices = indices self.a1m, self.a2m, self.a3m, self.a4m = masses self.angle = np.cos(angle) self.h1 = self.h2 = self.h3 = self.h4 = None self.h = [] self.sigma = 1. def set_h_vectors(self, pos): r12 = pos[self.indices[1]] - pos[self.indices[0]] r23 = pos[self.indices[2]] - pos[self.indices[1]] r23_len = np.linalg.norm(r23) e23 = r23 / r23_len r34 = pos[self.indices[3]] - pos[self.indices[2]] a = -r12 - np.dot(-r12, e23) * e23 a_len = np.linalg.norm(a) ea = a / a_len b = r34 - np.dot(r34, e23) * e23 b_len = np.linalg.norm(b) eb = b / b_len angle = np.dot(ea, eb).clip(-1.0, 1.0) self.h1 = (eb - angle * ea) / a_len self.h4 = (ea - angle * eb) / b_len self.h2 = self.h1 * (np.dot(-r12, e23) / r23_len - 1) self.h2 += np.dot(r34, e23) / r23_len * self.h4 self.h3 = -self.h4 * (np.dot(r34, e23) / r23_len + 1) self.h3 += np.dot(r12, e23) / r23_len * self.h1 def adjust_positions(self, oldpositions, newpositions): r12 = newpositions[self.indices[1]] - newpositions[self.indices[0]] r23 = newpositions[self.indices[2]] - newpositions[self.indices[1]] r34 = newpositions[self.indices[3]] - newpositions[self.indices[2]] n1 = np.cross(r12, r23) n1_len = np.linalg.norm(n1) n1e = n1 / n1_len n2 = np.cross(r23, r34) n2_len = np.linalg.norm(n2) n2e = n2 / n2_len angle = np.dot(n1e, n2e).clip(-1.0, 1.0) self.sigma = (angle - self.angle) * (angle + self.angle) h1 = self.h1 / self.a1m h2 = self.h2 / self.a2m h3 = self.h3 / self.a3m h4 = self.h4 / self.a4m h12 = h2 - h1 h23 = h3 - h2 h34 = h4 - h3 deriv = ((np.dot(n1, np.cross(r34, h23) + np.cross(h34, r23)) + np.dot(n2, np.cross(r23, h12) + np.cross(h23, r12))) / (n1_len * n2_len)) deriv -= (((np.dot(n1, np.cross(r23, h12) + np.cross(h23, r12)) / n1_len**2) + (np.dot(n2, np.cross(r34, h23) + np.cross(h34, r23)) / n2_len**2)) * angle) deriv *= -2 * angle lamda = -self.sigma / deriv newpositions[self.indices[0]] += lamda * h1 newpositions[self.indices[1]] += lamda * h2 newpositions[self.indices[2]] += lamda * h3 newpositions[self.indices[3]] += lamda * h4 def adjust_forces(self, positions, forces): r12 = positions[self.indices[1]] - positions[self.indices[0]] r23 = positions[self.indices[2]] - positions[self.indices[1]] r23_len = np.linalg.norm(r23) e23 = r23 / r23_len r34 = positions[self.indices[3]] - positions[self.indices[2]] a = -r12 - np.dot(-r12, e23) * e23 a_len = np.linalg.norm(a) ea = a / a_len b = r34 - np.dot(r34, e23) * e23 b_len = np.linalg.norm(b) eb = b / b_len angle = np.dot(ea, eb).clip(-1.0, 1.0) self.h1 = (eb - angle * ea) / a_len self.h4 = (ea - angle * eb) / b_len self.h2 = self.h1 * (np.dot(-r12, e23) / r23_len - 1) self.h2 += np.dot(r34, e23) / r23_len * self.h4 self.h3 = -self.h4 * (np.dot(r34, e23) / r23_len + 1) self.h3 -= np.dot(-r12, e23) / r23_len * self.h1 self.h = np.zeros([len(positions) * 3]) self.h[(self.indices[0]) * 3] = self.h1[0] self.h[(self.indices[0]) * 3 + 1] = self.h1[1] self.h[(self.indices[0]) * 3 + 2] = self.h1[2] self.h[(self.indices[1]) * 3] = self.h2[0] self.h[(self.indices[1]) * 3 + 1] = self.h2[1] self.h[(self.indices[1]) * 3 + 2] = self.h2[2] self.h[(self.indices[2]) * 3] = self.h3[0] self.h[(self.indices[2]) * 3 + 1] = self.h3[1] self.h[(self.indices[2]) * 3 + 2] = self.h3[2] self.h[(self.indices[3]) * 3] = self.h4[0] self.h[(self.indices[3]) * 3 + 1] = self.h4[1] self.h[(self.indices[3]) * 3 + 2] = self.h4[2] self.h /= np.linalg.norm(self.h) def __repr__(self): return 'FixDihedral(%s, %f)' % (tuple(self.indices), self.angle) class Hookean(FixConstraint): """Applies a Hookean restorative force between a pair of atoms, an atom and a point, or an atom and a plane.""" def __init__(self, a1, a2, k, rt=None): """Forces two atoms to stay close together by applying no force if they are below a threshold length, rt, and applying a Hookean restorative force when the distance between them exceeds rt. Can also be used to tether an atom to a fixed point in space or to a distance above a plane. a1 : int Index of atom 1 a2 : one of three options 1) index of atom 2 2) a fixed point in cartesian space to which to tether a1 3) a plane given as (A, B, C, D) in A x + B y + C z + D = 0. k : float Hooke's law (spring) constant to apply when distance exceeds threshold_length. Units of eV A^-2. rt : float The threshold length below which there is no force. The length is 1) between two atoms, 2) between atom and point. This argument is not supplied in case 3. Units of A. If a plane is specified, the Hooke's law force is applied if the atom is on the normal side of the plane. For instance, the plane with (A, B, C, D) = (0, 0, 1, -7) defines a plane in the xy plane with a z intercept of +7 and a normal vector pointing in the +z direction. If the atom has z > 7, then a downward force would be applied of k * (atom.z - 7). The same plane with the normal vector pointing in the -z direction would be given by (A, B, C, D) = (0, 0, -1, 7). """ if isinstance(a2, int): self._type = 'two atoms' self.indices = [a1, a2] elif len(a2) == 3: self._type = 'point' self.index = a1 self.origin = np.array(a2) elif len(a2) == 4: self._type = 'plane' self.index = a1 self.plane = a2 else: raise RuntimeError('Unknown type for a2') self.threshold = rt self.spring = k def todict(self): dct = {'name': 'Hookean'} dct['kwargs'] = {'rt': self.threshold, 'k': self.spring} if self._type == 'two atoms': dct['kwargs']['a1'] = self.indices[0] dct['kwargs']['a2'] = self.indices[1] elif self._type == 'point': dct['kwargs']['a1'] = self.index dct['kwargs']['a2'] = self.origin elif self._type == 'plane': dct['kwargs']['a1'] = self.index dct['kwargs']['a2'] = self.plane else: raise NotImplementedError('Bad type: %s' % self._type) return dct def adjust_positions(self, atoms, newpositions): pass def adjust_momenta(self, atoms, momenta): pass def adjust_forces(self, atoms, forces): positions = atoms.positions if self._type == 'plane': A, B, C, D = self.plane x, y, z = positions[self.index] d = ((A * x + B * y + C * z + D) / np.sqrt(A**2 + B**2 + C**2)) if d < 0: return magnitude = self.spring * d direction = - np.array((A, B, C)) / np.linalg.norm((A, B, C)) forces[self.index] += direction * magnitude return if self._type == 'two atoms': p1, p2 = positions[self.indices] elif self._type == 'point': p1 = positions[self.index] p2 = self.origin displace = p2 - p1 bondlength = np.linalg.norm(displace) if bondlength > self.threshold: magnitude = self.spring * (bondlength - self.threshold) direction = displace / np.linalg.norm(displace) if self._type == 'two atoms': forces[self.indices[0]] += direction * magnitude forces[self.indices[1]] -= direction * magnitude else: forces[self.index] += direction * magnitude def adjust_potential_energy(self, atoms): """Returns the difference to the potential energy due to an active constraint. (That is, the quantity returned is to be added to the potential energy.)""" positions = atoms.positions if self._type == 'plane': A, B, C, D = self.plane x, y, z = positions[self.index] d = ((A * x + B * y + C * z + D) / np.sqrt(A**2 + B**2 + C**2)) if d > 0: return 0.5 * self.spring * d**2 else: return 0. if self._type == 'two atoms': p1, p2 = positions[self.indices] elif self._type == 'point': p1 = positions[self.index] p2 = self.origin displace = p2 - p1 bondlength = np.linalg.norm(displace) if bondlength > self.threshold: return 0.5 * self.spring * (bondlength - self.threshold)**2 else: return 0. def get_indices(self): if self._type == 'two atoms': return self.indices elif self._type == 'point': return self.index elif self._type == 'plane': return self.index def index_shuffle(self, atoms, ind): # See docstring of superclass if self._type == 'two atoms': newa = [-1, -1] # Signal error for new, old in slice2enlist(ind, len(atoms)): for i, a in enumerate(self.indices): if old == a: newa[i] = new if newa[0] == -1 or newa[1] == -1: raise IndexError('Constraint not part of slice') self.indices = newa elif (self._type == 'point') or (self._type == 'plane'): newa = -1 # Signal error for new, old in slice2enlist(ind, len(atoms)): if old == self.index: newa = new break if newa == -1: raise IndexError('Constraint not part of slice') self.index = newa def __repr__(self): if self._type == 'two atoms': return 'Hookean(%d, %d)' % tuple(self.indices) elif self._type == 'point': return 'Hookean(%d) to cartesian' % self.index else: return 'Hookean(%d) to plane' % self.index class ExternalForce(FixConstraint): """Constraint object for pulling two atoms apart by an external force. You can combine this constraint for example with FixBondLength but make sure that the ExternalForce-constraint comes first in the list: >>> con1 = ExternalForce(atom1, atom2, f_ext) >>> con2 = FixBondLength(atom3, atom4) >>> atoms.set_constraint([con1, con2]) see ase/test/external_force.py""" def __init__(self, a1, a2, f_ext): self.indices = [a1, a2] self.external_force = f_ext def adjust_positions(self, atoms, new): pass def adjust_forces(self, atoms, forces): dist = np.subtract.reduce(atoms.positions[self.indices]) force = self.external_force * dist / np.linalg.norm(dist) forces[self.indices] += (force, -force) def adjust_potential_energy(self, atoms): dist = np.subtract.reduce(atoms.positions[self.indices]) return -np.linalg.norm(dist) * self.external_force def index_shuffle(self, atoms, ind): """Shuffle the indices of the two atoms in this constraint""" newa = [-1, -1] # Signal error for new, old in slice2enlist(ind, len(atoms)): for i, a in enumerate(self.indices): if old == a: newa[i] = new if newa[0] == -1 or newa[1] == -1: raise IndexError('Constraint not part of slice') self.indices = newa def __repr__(self): return 'ExternalForce(%d, %d, %f)' % (self.indices[0], self.indices[1], self.external_force) def todict(self): return {'name': 'ExternalForce', 'kwargs': {'a1': self.indices[0], 'a2': self.indices[1], 'f_ext': self.external_force}} class Filter: """Subset filter class.""" def __init__(self, atoms, indices=None, mask=None): """Filter atoms. This filter can be used to hide degrees of freedom in an Atoms object. Parameters ---------- indices : list of int Indices for those atoms that should remain visible. mask : list of bool One boolean per atom indicating if the atom should remain visible or not. If a Trajectory tries to save this object, it will instead save the underlying Atoms object. To prevent this, override the _images_ method. """ self.atoms = atoms self.constraints = [] # Make self.info a reference to the underlying atoms' info dictionary. self.info = self.atoms.info if indices is None and mask is None: raise ValueError('Use "indices" or "mask".') if indices is not None and mask is not None: raise ValueError('Use only one of "indices" and "mask".') if mask is not None: self.index = np.asarray(mask, bool) self.n = self.index.sum() else: self.index = np.asarray(indices, int) self.n = len(self.index) def _images_(self): # Present the real atoms object to Trajectory and friends return self.atoms._images_() def get_cell(self): """Returns the computational cell. The computational cell is the same as for the original system. """ return self.atoms.get_cell() def get_pbc(self): """Returns the periodic boundary conditions. The boundary conditions are the same as for the original system. """ return self.atoms.get_pbc() def get_positions(self): 'Return the positions of the visible atoms.' return self.atoms.get_positions()[self.index] def set_positions(self, positions, **kwargs): 'Set the positions of the visible atoms.' pos = self.atoms.get_positions() pos[self.index] = positions self.atoms.set_positions(pos, **kwargs) positions = property(get_positions, set_positions, doc='Positions of the atoms') def get_momenta(self): 'Return the momenta of the visible atoms.' return self.atoms.get_momenta()[self.index] def set_momenta(self, momenta, **kwargs): 'Set the momenta of the visible atoms.' mom = self.atoms.get_momenta() mom[self.index] = momenta self.atoms.set_momenta(mom, **kwargs) def get_atomic_numbers(self): 'Return the atomic numbers of the visible atoms.' return self.atoms.get_atomic_numbers()[self.index] def set_atomic_numbers(self, atomic_numbers): 'Set the atomic numbers of the visible atoms.' z = self.atoms.get_atomic_numbers() z[self.index] = atomic_numbers self.atoms.set_atomic_numbers(z) def get_tags(self): 'Return the tags of the visible atoms.' return self.atoms.get_tags()[self.index] def set_tags(self, tags): 'Set the tags of the visible atoms.' tg = self.atoms.get_tags() tg[self.index] = tags self.atoms.set_tags(tg) def get_forces(self, *args, **kwargs): return self.atoms.get_forces(*args, **kwargs)[self.index] def get_stress(self): return self.atoms.get_stress() def get_stresses(self): return self.atoms.get_stresses()[self.index] def get_masses(self): return self.atoms.get_masses()[self.index] def get_potential_energy(self, **kwargs): """Calculate potential energy. Returns the potential energy of the full system. """ return self.atoms.get_potential_energy(**kwargs) def get_chemical_symbols(self): return self.atoms.get_chemical_symbols() def get_initial_magnetic_moments(self): return self.atoms.get_initial_magnetic_moments() def get_calculator(self): """Returns the calculator. WARNING: The calculator is unaware of this filter, and sees a different number of atoms. """ return self.atoms.get_calculator() def get_celldisp(self): return self.atoms.get_celldisp() def has(self, name): 'Check for existence of array.' return self.atoms.has(name) def __len__(self): 'Return the number of movable atoms.' return self.n def __getitem__(self, i): 'Return an atom.' return self.atoms[self.index[i]] class StrainFilter(Filter): """Modify the supercell while keeping the scaled positions fixed. Presents the strain of the supercell as the generalized positions, and the global stress tensor (times the volume) as the generalized force. This filter can be used to relax the unit cell until the stress is zero. If MDMin is used for this, the timestep (dt) to be used depends on the system size. 0.01/x where x is a typical dimension seems like a good choice. The stress and strain are presented as 6-vectors, the order of the components follow the standard engingeering practice: xx, yy, zz, yz, xz, xy. """ def __init__(self, atoms, mask=None): """Create a filter applying a homogeneous strain to a list of atoms. The first argument, atoms, is the atoms object. The optional second argument, mask, is a list of six booleans, indicating which of the six independent components of the strain that are allowed to become non-zero. It defaults to [1,1,1,1,1,1]. """ self.strain = np.zeros(6) if mask is None: mask = np.ones(6) else: mask = np.array(mask) Filter.__init__(self, atoms, mask=mask) self.mask = mask self.origcell = atoms.get_cell() def get_positions(self): return self.strain.reshape((2, 3)).copy() def set_positions(self, new): new = new.ravel() * self.mask eps = np.array([[1.0 + new[0], 0.5 * new[5], 0.5 * new[4]], [0.5 * new[5], 1.0 + new[1], 0.5 * new[3]], [0.5 * new[4], 0.5 * new[3], 1.0 + new[2]]]) self.atoms.set_cell(np.dot(self.origcell, eps), scale_atoms=True) self.strain[:] = new def get_forces(self): stress = self.atoms.get_stress() return -self.atoms.get_volume() * (stress * self.mask).reshape((2, 3)) def has(self, x): return self.atoms.has(x) def __len__(self): return 2 # The indices of the full stiffness matrix of (orthorhombic) interest voigt_notation = [(0, 0), (1, 1), (2, 2), (1, 2), (0, 2), (0, 1)] def full_3x3_to_voigt_6_index(i, j): if i == j: return i return 6 - i - j def voigt_6_to_full_3x3_strain(strain_vector): """ Form a 3x3 strain matrix from a 6 component vector in Voigt notation """ e1, e2, e3, e4, e5, e6 = np.transpose(strain_vector) return np.transpose([[1.0 + e1, 0.5 * e6, 0.5 * e5], [0.5 * e6, 1.0 + e2, 0.5 * e4], [0.5 * e5, 0.5 * e4, 1.0 + e3]]) def voigt_6_to_full_3x3_stress(stress_vector): """ Form a 3x3 stress matrix from a 6 component vector in Voigt notation """ s1, s2, s3, s4, s5, s6 = np.transpose(stress_vector) return np.transpose([[s1, s6, s5], [s6, s2, s4], [s5, s4, s3]]) def full_3x3_to_voigt_6_strain(strain_matrix): """ Form a 6 component strain vector in Voigt notation from a 3x3 matrix """ strain_matrix = np.asarray(strain_matrix) return np.transpose([strain_matrix[..., 0, 0] - 1.0, strain_matrix[..., 1, 1] - 1.0, strain_matrix[..., 2, 2] - 1.0, strain_matrix[..., 1, 2] + strain_matrix[..., 2, 1], strain_matrix[..., 0, 2] + strain_matrix[..., 2, 0], strain_matrix[..., 0, 1] + strain_matrix[..., 1, 0]]) def full_3x3_to_voigt_6_stress(stress_matrix): """ Form a 6 component stress vector in Voigt notation from a 3x3 matrix """ stress_matrix = np.asarray(stress_matrix) return np.transpose([stress_matrix[..., 0, 0], stress_matrix[..., 1, 1], stress_matrix[..., 2, 2], (stress_matrix[..., 1, 2] + stress_matrix[..., 1, 2]) / 2, (stress_matrix[..., 0, 2] + stress_matrix[..., 0, 2]) / 2, (stress_matrix[..., 0, 1] + stress_matrix[..., 0, 1]) / 2]) class UnitCellFilter(Filter): """Modify the supercell and the atom positions. """ def __init__(self, atoms, mask=None, cell_factor=None, hydrostatic_strain=False, constant_volume=False): """Create a filter that returns the atomic forces and unit cell stresses together, so they can simultaneously be minimized. The first argument, atoms, is the atoms object. The optional second argument, mask, is a list of booleans, indicating which of the six independent components of the strain are relaxed. - True = relax to zero - False = fixed, ignore this component Degrees of freedom are the positions in the original undeformed cell, plus the deformation tensor (extra 3 "atoms"). This gives forces consistent with numerical derivatives of the potential energy with respect to the cell degreees of freedom. For full details see: E. B. Tadmor, G. S. Smith, N. Bernstein, and E. Kaxiras, Phys. Rev. B 59, 235 (1999) You can still use constraints on the atoms, e.g. FixAtoms, to control the relaxation of the atoms. >>> # this should be equivalent to the StrainFilter >>> atoms = Atoms(...) >>> atoms.set_constraint(FixAtoms(mask=[True for atom in atoms])) >>> ucf = UnitCellFilter(atoms) You should not attach this UnitCellFilter object to a trajectory. Instead, create a trajectory for the atoms, and attach it to an optimizer like this: >>> atoms = Atoms(...) >>> ucf = UnitCellFilter(atoms) >>> qn = QuasiNewton(ucf) >>> traj = Trajectory('TiO2.traj', 'w', atoms) >>> qn.attach(traj) >>> qn.run(fmax=0.05) Helpful conversion table: - 0.05 eV/A^3 = 8 GPA - 0.003 eV/A^3 = 0.48 GPa - 0.0006 eV/A^3 = 0.096 GPa - 0.0003 eV/A^3 = 0.048 GPa - 0.0001 eV/A^3 = 0.02 GPa Additional optional arguments: cell_factor: float (default float(len(atoms))) Factor by which deformation gradient is multiplied to put it on the same scale as the positions when assembling the combined position/cell vector. The stress contribution to the forces is scaled down by the same factor. This can be thought of as a very simple preconditioners. Default is number of atoms which gives approximately the correct scaling. hydrostatic_strain: bool (default False) Constrain the cell by only allowing hydrostatic deformation. The virial tensor is replaced by np.diag([np.trace(virial)]*3). constant_volume: bool (default False) Project out the diagonal elements of the virial tensor to allow relaxations at constant volume, e.g. for mapping out an energy-volume curve. Note: this only approximately conserves the volume and breaks energy/force consistency so can only be used with optimizers that do require do a line minimisation (e.g. FIRE). """ Filter.__init__(self, atoms, indices=range(len(atoms))) self.atoms = atoms self.deform_grad = np.eye(3) self.atom_positions = atoms.get_positions() self.orig_cell = atoms.get_cell() self.stress = None if mask is None: mask = np.ones(6) mask = np.asarray(mask) if mask.shape == (6,): self.mask = voigt_6_to_full_3x3_stress(mask) elif mask.shape == (3, 3): self.mask = mask else: raise ValueError('shape of mask should be (3,3) or (6,)') if cell_factor is None: cell_factor = float(len(atoms)) self.hydrostatic_strain = hydrostatic_strain self.constant_volume = constant_volume self.cell_factor = cell_factor self.copy = self.atoms.copy self.arrays = self.atoms.arrays def get_positions(self): ''' this returns an array with shape (natoms + 3,3). the first natoms rows are the positions of the atoms, the last three rows are the deformation tensor associated with the unit cell, scaled by self.cell_factor. ''' natoms = len(self.atoms) pos = np.zeros((natoms + 3, 3)) pos[:natoms] = self.atom_positions pos[natoms:] = self.cell_factor * self.deform_grad return pos def set_positions(self, new, **kwargs): ''' new is an array with shape (natoms+3,3). the first natoms rows are the positions of the atoms, the last three rows are the deformation tensor used to change the cell shape. the positions are first set with respect to the original undeformed cell, and then the cell is transformed by the current deformation gradient. ''' natoms = len(self.atoms) self.atom_positions[:] = new[:natoms] self.deform_grad = new[natoms:] / self.cell_factor self.atoms.set_positions(self.atom_positions, **kwargs) self.atoms.set_cell(self.orig_cell, scale_atoms=False) self.atoms.set_cell(np.dot(self.orig_cell, self.deform_grad.T), scale_atoms=True) def get_forces(self, apply_constraint=False): ''' returns an array with shape (natoms+2,3) of the atomic forces and unit cell stresses. the first natoms rows are the forces on the atoms, the last three rows are the forces on the unit cell, which are computed from the stress tensor. ''' atoms_forces = self.atoms.get_forces() stress = self.atoms.get_stress() self.stress = voigt_6_to_full_3x3_stress(stress) * self.mask volume = self.atoms.get_volume() virial = -volume * voigt_6_to_full_3x3_stress(stress) atoms_forces = np.dot(atoms_forces, self.deform_grad) dg_inv = np.linalg.inv(self.deform_grad) virial = np.dot(virial, dg_inv.T) if self.hydrostatic_strain: vtr = virial.trace() virial = np.diag([vtr / 3.0, vtr / 3.0, vtr / 3.0]) # Zero out components corresponding to fixed lattice elements if (self.mask != 1.0).any(): virial *= self.mask if self.constant_volume: vtr = virial.trace() np.fill_diagonal(virial, np.diag(virial) - vtr / 3.0) natoms = len(self.atoms) forces = np.zeros((natoms + 3, 3)) forces[:natoms] = atoms_forces forces[natoms:] = virial / self.cell_factor return forces def get_stress(self): raise PropertyNotImplementedError def has(self, x): return self.atoms.has(x) def __len__(self): return (len(self.atoms) + 3) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/000077500000000000000000000000001316323560300214505ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/__init__.py000066400000000000000000000420641316323560300235670ustar00rootroot00000000000000# -*- coding: utf-8 -*- import numpy as np from ase.data.vdw import vdw_radii __all__ = ['vdw_radii', 'chemical_symbols', 'ground_state_magnetic_moments', 'reference_states', 'atomic_names', 'atomic_masses', 'atomic_numbers', 'covalent_radii'] chemical_symbols = [ # 0 'X', # 1 'H', 'He', # 2 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', # 3 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', # 4 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', # 5 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', # 6 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', # 7 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og'] atomic_numbers = {} for Z, symbol in enumerate(chemical_symbols): atomic_numbers[symbol] = Z # IUPAC version dated 28 November 2016 atomic_names = [ '', 'Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron', 'Carbon', 'Nitrogen', 'Oxygen', 'Fluorine', 'Neon', 'Sodium', 'Magnesium', 'Aluminium', 'Silicon', 'Phosphorus', 'Sulfur', 'Chlorine', 'Argon', 'Potassium', 'Calcium', 'Scandium', 'Titanium', 'Vanadium', 'Chromium', 'Manganese', 'Iron', 'Cobalt', 'Nickel', 'Copper', 'Zinc', 'Gallium', 'Germanium', 'Arsenic', 'Selenium', 'Bromine', 'Krypton', 'Rubidium', 'Strontium', 'Yttrium', 'Zirconium', 'Niobium', 'Molybdenum', 'Technetium', 'Ruthenium', 'Rhodium', 'Palladium', 'Silver', 'Cadmium', 'Indium', 'Tin', 'Antimony', 'Tellurium', 'Iodine', 'Xenon', 'Caesium', 'Barium', 'Lanthanum', 'Cerium', 'Praseodymium', 'Neodymium', 'Promethium', 'Samarium', 'Europium', 'Gadolinium', 'Terbium', 'Dysprosium', 'Holmium', 'Erbium', 'Thulium', 'Ytterbium', 'Lutetium', 'Hafnium', 'Tantalum', 'Tungsten', 'Rhenium', 'Osmium', 'Iridium', 'Platinum', 'Gold', 'Mercury', 'Thallium', 'Lead', 'Bismuth', 'Polonium', 'Astatine', 'Radon', 'Francium', 'Radium', 'Actinium', 'Thorium', 'Protactinium', 'Uranium', 'Neptunium', 'Plutonium', 'Americium', 'Curium', 'Berkelium', 'Californium', 'Einsteinium', 'Fermium', 'Mendelevium', 'Nobelium', 'Lawrencium', 'Rutherfordium', 'Dubnium', 'Seaborgium', 'Bohrium', 'Hassium', 'Meitnerium', 'Darmastadtium', 'Roentgenium', 'Copernicium', 'Nihonium', 'Flerovium', 'Moscovium', 'Livermorium', 'Tennessine', 'Oganesson'] # Atomic masses are based on: # # Meija, J., Coplen, T., Berglund, M., et al. (2016). Atomic weights of # the elements 2013 (IUPAC Technical Report). Pure and Applied Chemistry, # 88(3), pp. 265-291. Retrieved 30 Nov. 2016, # from doi:10.1515/pac-2015-0305 # # Standard atomic weights are taken from Table 1: "Standard atomic weights # 2013", with the uncertainties ignored. # For hydrogen, helium, boron, carbon, nitrogen, oxygen, magnesium, silicon, # sulfur, chlorine, bromine and thallium, where the weights are given as a # range the "conventional" weights are taken from Table 3 and the ranges are # given in the comments. # The mass of the most stable isotope (in Table 4) is used for elements # where there the element has no stable isotopes (to avoid NaNs): Tc, Pm, # Po, At, Rn, Fr, Ra, Ac, everything after Np atomic_masses_iupac2016 = np.array([ 1.0, # X 1.008, # H [1.00784, 1.00811] 4.002602, # He 6.94, # Li [6.938, 6.997] 9.0121831, # Be 10.81, # B [10.806, 10.821] 12.011, # C [12.0096, 12.0116] 14.007, # N [14.00643, 14.00728] 15.999, # O [15.99903, 15.99977] 18.998403163, # F 20.1797, # Ne 22.98976928, # Na 24.305, # Mg [24.304, 24.307] 26.9815385, # Al 28.085, # Si [28.084, 28.086] 30.973761998, # P 32.06, # S [32.059, 32.076] 35.45, # Cl [35.446, 35.457] 39.948, # Ar 39.0983, # K 40.078, # Ca 44.955908, # Sc 47.867, # Ti 50.9415, # V 51.9961, # Cr 54.938044, # Mn 55.845, # Fe 58.933194, # Co 58.6934, # Ni 63.546, # Cu 65.38, # Zn 69.723, # Ga 72.630, # Ge 74.921595, # As 78.971, # Se 79.904, # Br [79.901, 79.907] 83.798, # Kr 85.4678, # Rb 87.62, # Sr 88.90584, # Y 91.224, # Zr 92.90637, # Nb 95.95, # Mo 97.90721, # 98Tc 101.07, # Ru 102.90550, # Rh 106.42, # Pd 107.8682, # Ag 112.414, # Cd 114.818, # In 118.710, # Sn 121.760, # Sb 127.60, # Te 126.90447, # I 131.293, # Xe 132.90545196, # Cs 137.327, # Ba 138.90547, # La 140.116, # Ce 140.90766, # Pr 144.242, # Nd 144.91276, # 145Pm 150.36, # Sm 151.964, # Eu 157.25, # Gd 158.92535, # Tb 162.500, # Dy 164.93033, # Ho 167.259, # Er 168.93422, # Tm 173.054, # Yb 174.9668, # Lu 178.49, # Hf 180.94788, # Ta 183.84, # W 186.207, # Re 190.23, # Os 192.217, # Ir 195.084, # Pt 196.966569, # Au 200.592, # Hg 204.38, # Tl [204.382, 204.385] 207.2, # Pb 208.98040, # Bi 208.98243, # 209Po 209.98715, # 210At 222.01758, # 222Rn 223.01974, # 223Fr 226.02541, # 226Ra 227.02775, # 227Ac 232.0377, # Th 231.03588, # Pa 238.02891, # U 237.04817, # 237Np 244.06421, # 244Pu 243.06138, # 243Am 247.07035, # 247Cm 247.07031, # 247Bk 251.07959, # 251Cf 252.0830, # 252Es 257.09511, # 257Fm 258.09843, # 258Md 259.1010, # 259No 262.110, # 262Lr 267.122, # 267Rf 268.126, # 268Db 271.134, # 271Sg 270.133, # 270Bh 269.1338, # 269Hs 278.156, # 278Mt 281.165, # 281Ds 281.166, # 281Rg 285.177, # 285Cn 286.182, # 286Nh 289.190, # 289Fl 289.194, # 289Mc 293.204, # 293Lv 293.208, # 293Ts 294.214, # 294Og ]) # set atomic_masses to most recent version atomic_masses = atomic_masses_iupac2016 atomic_masses_legacy = np.array([ 1.00000, # X 1.00794, # H 4.00260, # He 6.94100, # Li 9.01218, # Be 10.81100, # B 12.01100, # C 14.00670, # N 15.99940, # O 18.99840, # F 20.17970, # Ne 22.98977, # Na 24.30500, # Mg 26.98154, # Al 28.08550, # Si 30.97376, # P 32.06600, # S 35.45270, # Cl 39.94800, # Ar 39.09830, # K 40.07800, # Ca 44.95590, # Sc 47.88000, # Ti 50.94150, # V 51.99600, # Cr 54.93800, # Mn 55.84700, # Fe 58.93320, # Co 58.69340, # Ni 63.54600, # Cu 65.39000, # Zn 69.72300, # Ga 72.61000, # Ge 74.92160, # As 78.96000, # Se 79.90400, # Br 83.80000, # Kr 85.46780, # Rb 87.62000, # Sr 88.90590, # Y 91.22400, # Zr 92.90640, # Nb 95.94000, # Mo np.nan, # Tc 101.07000, # Ru 102.90550, # Rh 106.42000, # Pd 107.86800, # Ag 112.41000, # Cd 114.82000, # In 118.71000, # Sn 121.75700, # Sb 127.60000, # Te 126.90450, # I 131.29000, # Xe 132.90540, # Cs 137.33000, # Ba 138.90550, # La 140.12000, # Ce 140.90770, # Pr 144.24000, # Nd np.nan, # Pm 150.36000, # Sm 151.96500, # Eu 157.25000, # Gd 158.92530, # Tb 162.50000, # Dy 164.93030, # Ho 167.26000, # Er 168.93420, # Tm 173.04000, # Yb 174.96700, # Lu 178.49000, # Hf 180.94790, # Ta 183.85000, # W 186.20700, # Re 190.20000, # Os 192.22000, # Ir 195.08000, # Pt 196.96650, # Au 200.59000, # Hg 204.38300, # Tl 207.20000, # Pb 208.98040, # Bi np.nan, # Po np.nan, # At np.nan, # Rn np.nan, # Fr 226.02540, # Ra np.nan, # Ac 232.03810, # Th 231.03590, # Pa 238.02900, # U 237.04820, # Np np.nan, # Pu np.nan, # Am np.nan, # Cm np.nan, # Bk np.nan, # Cf np.nan, # Es np.nan, # Fm np.nan, # Md np.nan, # No np.nan # Lw ]) # Covalent radii from: # # Covalent radii revisited, # Beatriz Cordero, Verónica Gómez, Ana E. Platero-Prats, Marc Revés, # Jorge Echeverría, Eduard Cremades, Flavia Barragán and Santiago Alvarez, # Dalton Trans., 2008, 2832-2838 DOI:10.1039/B801115J missing = 0.2 covalent_radii = np.array([ missing, # X 0.31, # H 0.28, # He 1.28, # Li 0.96, # Be 0.84, # B 0.76, # C 0.71, # N 0.66, # O 0.57, # F 0.58, # Ne 1.66, # Na 1.41, # Mg 1.21, # Al 1.11, # Si 1.07, # P 1.05, # S 1.02, # Cl 1.06, # Ar 2.03, # K 1.76, # Ca 1.70, # Sc 1.60, # Ti 1.53, # V 1.39, # Cr 1.39, # Mn 1.32, # Fe 1.26, # Co 1.24, # Ni 1.32, # Cu 1.22, # Zn 1.22, # Ga 1.20, # Ge 1.19, # As 1.20, # Se 1.20, # Br 1.16, # Kr 2.20, # Rb 1.95, # Sr 1.90, # Y 1.75, # Zr 1.64, # Nb 1.54, # Mo 1.47, # Tc 1.46, # Ru 1.42, # Rh 1.39, # Pd 1.45, # Ag 1.44, # Cd 1.42, # In 1.39, # Sn 1.39, # Sb 1.38, # Te 1.39, # I 1.40, # Xe 2.44, # Cs 2.15, # Ba 2.07, # La 2.04, # Ce 2.03, # Pr 2.01, # Nd 1.99, # Pm 1.98, # Sm 1.98, # Eu 1.96, # Gd 1.94, # Tb 1.92, # Dy 1.92, # Ho 1.89, # Er 1.90, # Tm 1.87, # Yb 1.87, # Lu 1.75, # Hf 1.70, # Ta 1.62, # W 1.51, # Re 1.44, # Os 1.41, # Ir 1.36, # Pt 1.36, # Au 1.32, # Hg 1.45, # Tl 1.46, # Pb 1.48, # Bi 1.40, # Po 1.50, # At 1.50, # Rn 2.60, # Fr 2.21, # Ra 2.15, # Ac 2.06, # Th 2.00, # Pa 1.96, # U 1.90, # Np 1.87, # Pu 1.80, # Am 1.69, # Cm missing, # Bk missing, # Cf missing, # Es missing, # Fm missing, # Md missing, # No missing, # Lr missing, # Rf missing, # Db missing, # Sg missing, # Bh missing, # Hs missing, # Mt missing, # Ds missing, # Rg missing, # Cn missing, # Nh missing, # Fl missing, # Mc missing, # Lv missing, # Ts missing, # Og ]) # This data is from Ashcroft and Mermin. reference_states = [ None, # X {'symmetry': 'diatom', 'd': 0.74}, # H {'symmetry': 'atom'}, # He {'symmetry': 'bcc', 'a': 3.49}, # Li {'symmetry': 'hcp', 'c/a': 1.567, 'a': 2.29}, # Be {'symmetry': 'tetragonal', 'c/a': 0.576, 'a': 8.73}, # B {'symmetry': 'diamond', 'a': 3.57}, # C {'symmetry': 'diatom', 'd': 1.10}, # N {'symmetry': 'diatom', 'd': 1.21}, # O {'symmetry': 'diatom', 'd': 1.42}, # F {'symmetry': 'fcc', 'a': 4.43}, # Ne {'symmetry': 'bcc', 'a': 4.23}, # Na {'symmetry': 'hcp', 'c/a': 1.624, 'a': 3.21}, # Mg {'symmetry': 'fcc', 'a': 4.05}, # Al {'symmetry': 'diamond', 'a': 5.43}, # Si {'symmetry': 'cubic', 'a': 7.17}, # P {'symmetry': 'orthorhombic', 'c/a': 2.339, 'a': 10.47, 'b/a': 1.229}, # S {'symmetry': 'orthorhombic', 'c/a': 1.324, 'a': 6.24, 'b/a': 0.718}, # Cl {'symmetry': 'fcc', 'a': 5.26}, # Ar {'symmetry': 'bcc', 'a': 5.23}, # K {'symmetry': 'fcc', 'a': 5.58}, # Ca {'symmetry': 'hcp', 'c/a': 1.594, 'a': 3.31}, # Sc {'symmetry': 'hcp', 'c/a': 1.588, 'a': 2.95}, # Ti {'symmetry': 'bcc', 'a': 3.02}, # V {'symmetry': 'bcc', 'a': 2.88}, # Cr {'symmetry': 'cubic', 'a': 8.89}, # Mn {'symmetry': 'bcc', 'a': 2.87}, # Fe {'symmetry': 'hcp', 'c/a': 1.622, 'a': 2.51}, # Co {'symmetry': 'fcc', 'a': 3.52}, # Ni {'symmetry': 'fcc', 'a': 3.61}, # Cu {'symmetry': 'hcp', 'c/a': 1.856, 'a': 2.66}, # Zn {'symmetry': 'orthorhombic', 'c/a': 1.695, 'a': 4.51, 'b/a': 1.001}, # Ga {'symmetry': 'diamond', 'a': 5.66}, # Ge {'symmetry': 'rhombohedral', 'a': 4.13, 'alpha': 54.10}, # As {'symmetry': 'hcp', 'c/a': 1.136, 'a': 4.36}, # Se {'symmetry': 'orthorhombic', 'c/a': 1.307, 'a': 6.67, 'b/a': 0.672}, # Br {'symmetry': 'fcc', 'a': 5.72}, # Kr {'symmetry': 'bcc', 'a': 5.59}, # Rb {'symmetry': 'fcc', 'a': 6.08}, # Sr {'symmetry': 'hcp', 'c/a': 1.571, 'a': 3.65}, # Y {'symmetry': 'hcp', 'c/a': 1.593, 'a': 3.23}, # Zr {'symmetry': 'bcc', 'a': 3.30}, # Nb {'symmetry': 'bcc', 'a': 3.15}, # Mo {'symmetry': 'hcp', 'c/a': 1.604, 'a': 2.74}, # Tc {'symmetry': 'hcp', 'c/a': 1.584, 'a': 2.70}, # Ru {'symmetry': 'fcc', 'a': 3.80}, # Rh {'symmetry': 'fcc', 'a': 3.89}, # Pd {'symmetry': 'fcc', 'a': 4.09}, # Ag {'symmetry': 'hcp', 'c/a': 1.886, 'a': 2.98}, # Cd {'symmetry': 'tetragonal', 'c/a': 1.076, 'a': 4.59}, # In {'symmetry': 'tetragonal', 'c/a': 0.546, 'a': 5.82}, # Sn {'symmetry': 'rhombohedral', 'a': 4.51, 'alpha': 57.60}, # Sb {'symmetry': 'hcp', 'c/a': 1.330, 'a': 4.45}, # Te {'symmetry': 'orthorhombic', 'c/a': 1.347, 'a': 7.27, 'b/a': 0.659}, # I {'symmetry': 'fcc', 'a': 6.20}, # Xe {'symmetry': 'bcc', 'a': 6.05}, # Cs {'symmetry': 'bcc', 'a': 5.02}, # Ba {'symmetry': 'hcp', 'c/a': 1.619, 'a': 3.75}, # La {'symmetry': 'fcc', 'a': 5.16}, # Ce {'symmetry': 'hcp', 'c/a': 1.614, 'a': 3.67}, # Pr {'symmetry': 'hcp', 'c/a': 1.614, 'a': 3.66}, # Nd None, # Pm {'symmetry': 'rhombohedral', 'a': 9.00, 'alpha': 23.13}, # Sm {'symmetry': 'bcc', 'a': 4.61}, # Eu {'symmetry': 'hcp', 'c/a': 1.588, 'a': 3.64}, # Gd {'symmetry': 'hcp', 'c/a': 1.581, 'a': 3.60}, # Th {'symmetry': 'hcp', 'c/a': 1.573, 'a': 3.59}, # Dy {'symmetry': 'hcp', 'c/a': 1.570, 'a': 3.58}, # Ho {'symmetry': 'hcp', 'c/a': 1.570, 'a': 3.56}, # Er {'symmetry': 'hcp', 'c/a': 1.570, 'a': 3.54}, # Tm {'symmetry': 'fcc', 'a': 5.49}, # Yb {'symmetry': 'hcp', 'c/a': 1.585, 'a': 3.51}, # Lu {'symmetry': 'hcp', 'c/a': 1.582, 'a': 3.20}, # Hf {'symmetry': 'bcc', 'a': 3.31}, # Ta {'symmetry': 'bcc', 'a': 3.16}, # W {'symmetry': 'hcp', 'c/a': 1.615, 'a': 2.76}, # Re {'symmetry': 'hcp', 'c/a': 1.579, 'a': 2.74}, # Os {'symmetry': 'fcc', 'a': 3.84}, # Ir {'symmetry': 'fcc', 'a': 3.92}, # Pt {'symmetry': 'fcc', 'a': 4.08}, # Au {'symmetry': 'rhombohedral', 'a': 2.99, 'alpha': 70.45}, # Hg {'symmetry': 'hcp', 'c/a': 1.599, 'a': 3.46}, # Tl {'symmetry': 'fcc', 'a': 4.95}, # Pb {'symmetry': 'rhombohedral', 'a': 4.75, 'alpha': 57.14}, # Bi {'symmetry': 'sc', 'a': 3.35}, # Po None, # At None, # Rn None, # Fr None, # Ra {'symmetry': 'fcc', 'a': 5.31}, # Ac {'symmetry': 'fcc', 'a': 5.08}, # Th {'symmetry': 'tetragonal', 'c/a': 0.825, 'a': 3.92}, # Pa {'symmetry': 'orthorhombic', 'c/a': 2.056, 'a': 2.85, 'b/a': 1.736}, # U {'symmetry': 'orthorhombic', 'c/a': 1.411, 'a': 4.72, 'b/a': 1.035}, # Np {'symmetry': 'monoclinic'}, # Pu None, # Am None, # Cm None, # Bk None, # Cf None, # Es None, # Fm None, # Md None, # No None, # Lr None, # Rf None, # Db None, # Sg None, # Bh None, # Hs None, # Mt None, # Ds None, # Rg None, # Cn None, # Nh None, # Fl None, # Mc None, # Lv None, # Ts None, # Og ] # http://www.webelements.com ground_state_magnetic_moments = np.array([ 0.0, # X 1.0, # H 0.0, # He 1.0, # Li 0.0, # Be 1.0, # B 2.0, # C 3.0, # N 2.0, # O 1.0, # F 0.0, # Ne 1.0, # Na 0.0, # Mg 1.0, # Al 2.0, # Si 3.0, # P 2.0, # S 1.0, # Cl 0.0, # Ar 1.0, # K 0.0, # Ca 1.0, # Sc 2.0, # Ti 3.0, # V 6.0, # Cr 5.0, # Mn 4.0, # Fe 3.0, # Co 2.0, # Ni 1.0, # Cu 0.0, # Zn 1.0, # Ga 2.0, # Ge 3.0, # As 2.0, # Se 1.0, # Br 0.0, # Kr 1.0, # Rb 0.0, # Sr 1.0, # Y 2.0, # Zr 5.0, # Nb 6.0, # Mo 5.0, # Tc 4.0, # Ru 3.0, # Rh 0.0, # Pd 1.0, # Ag 0.0, # Cd 1.0, # In 2.0, # Sn 3.0, # Sb 2.0, # Te 1.0, # I 0.0, # Xe 1.0, # Cs 0.0, # Ba 1.0, # La 1.0, # Ce 3.0, # Pr 4.0, # Nd 5.0, # Pm 6.0, # Sm 7.0, # Eu 8.0, # Gd 5.0, # Tb 4.0, # Dy 3.0, # Ho 2.0, # Er 1.0, # Tm 0.0, # Yb 1.0, # Lu 2.0, # Hf 3.0, # Ta 4.0, # W 5.0, # Re 4.0, # Os 3.0, # Ir 2.0, # Pt 1.0, # Au 0.0, # Hg 1.0, # Tl 2.0, # Pb 3.0, # Bi 2.0, # Po 1.0, # At 0.0, # Rn 1.0, # Fr 0.0, # Ra 1.0, # Ac 2.0, # Th 3.0, # Pa 4.0, # U 5.0, # Np 6.0, # Pu 7.0, # Am 8.0, # Cm 5.0, # Bk 4.0, # Cf 4.0, # Es 2.0, # Fm 1.0, # Md 0.0, # No np.nan]) # Lr ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/alternatives.py000066400000000000000000000030711316323560300245240ustar00rootroot00000000000000# alternative structures # data from CRC Handbook 2004 85th edition alternative_structures = [ None,# X None,# H None,# He None,# Li None,# Be None,# B None,# C None,# N None,# O None,# F None,# Ne None,# Na None,# Mg None,# Al None,# Si None,# P None,# S None,# Cl None,# Ar None,# K None,# Ca None,# Sc None,# Ti None,# V None,# Cr None,# Mn {'symmetry': 'fcc', 'a': 2.9315, 'comment' : 'T>910 C'},# Fe None,# Co None,# Ni None,# Cu None,# Zn None,# Ga None,# Ge None,# As None,# Se None,# Br None,# Kr None,# Rb None,# Sr None,# Y None,# Zr None,# Nb None,# Mo None,# Tc None,# Ru None,# Rh None,# Pd None,# Ag None,# Cd None,# In None,# Sn None,# Sb None,# Te None,# I None,# Xe None,# Cs None,# Ba None,# La None,# Ce None,# Pr None,# Nd None,# Pm None,# Sm None,# Eu None,# Gd None,# Tb None,# Dy None,# Ho None,# Er None,# Tm None,# Yb None,# Lu None,# Hf None,# Ta None,# W None,# Re None,# Os None,# Ir None,# Pt None,# Au None,# Hg None,# Tl None,# Pb None,# Bi None,# Po None,# At None,# Rn None,# Fr None,# Ra None,# Ac None,# Th None,# Pa None,# U None,# Np None,# Pu None,# Am None,# Cm None,# Bk None,# Cf None,# Es None,# Fm None,# Md None,# No None,# Lr ] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/cccbdb_ip.py000066400000000000000000000052101316323560300237100ustar00rootroot00000000000000""" Experimental ionization energies from CCCBDB at http://srdata.nist.gov/cccbdb/default.htm Information presented on these pages is considered public information and may be distributed or copied http://www.nist.gov/public_affairs/disclaimer.cfm """ IP = {# System IE IE_vert 'H' : (13.60, None), 'Li' : ( 5.39, None), 'Be' : ( 9.32, None), 'B' : ( 8.30, None), 'C' : (11.26, None), 'N' : (14.53, None), 'O' : (13.62, None), 'F' : (17.42, None), 'Na' : ( 5.14, None), 'Mg' : ( 7.65, None), 'Al' : ( 5.99, None), 'Si' : ( 8.15, None), 'P' : (10.49, None), 'S' : (10.36, None), 'Cl' : (12.97, None), 'LiH' : ( 7.90, None), 'BeH' : ( 8.21, None), 'CH' : (10.64, None), 'CH2_s3B1d' : (10.40, None), 'CH3' : ( 9.84, None), 'CH4' : (12.61, 13.60), 'NH' : (13.10, 13.49), 'NH2' : (10.78, 12.00), 'NH3' : (10.07, 10.82), 'OH' : (13.02, None), 'H2O' : (12.62, None), 'HF' : (16.03, 16.12), 'SiH2_s1A1d': ( 8.92, None), 'SiH3' : ( 8.14, 8.74), 'SiH4' : (11.00, 12.30), 'PH2' : ( 9.82, None), 'PH3' : ( 9.87, 10.95), 'SH2' : (10.46, 10.50), 'HCl' : (12.74, None), 'Li2' : ( 5.11, None), 'LiF' : (11.30, None), 'C2H2' : (11.40, 11.49), 'C2H4' : (10.51, 10.68), 'CN' : (13.60, None), 'HCN' : (13.60, 13.61), 'CO' : (14.01, 14.01), 'HCO' : ( 8.12, 9.31), 'H2CO' : (10.88, 10.88), 'CH3OH' : (10.84, 10.96), 'N2' : (15.58, 15.58), 'N2H4' : ( 8.10, 8.98), 'NO' : ( 9.26, 9.26), 'O2' : (12.07, 12.30), 'H2O2' : (10.58, 11.70), 'F2' : (15.70, 15.70), 'CO2' : (13.78, 13.78), 'Na2' : ( 4.89, None), 'Si2' : ( 7.90, None), 'P2' : (10.53, 10.62), 'S2' : ( 9.36, 9.55), 'Cl2' : (11.48, 11.49), 'NaCl' : ( 9.20, 9.80), 'SiO' : (11.49, None), 'CS' : (11.33, None), 'SO' : (11.29, None), 'ClO' : (10.89, 11.01), 'ClF' : (12.66, 12.77), 'Si2H6' : ( 9.74, 10.53), 'CH3Cl' : (11.26, 11.29), 'CH3SH' : ( 9.44, 9.44), 'HOCl' : (11.12, None), 'SO2' : (12.35, 12.50), 'C6H6' : ( 9.24, 9.25), 'C12H10' : ( 8.16, None), # Biphenyl 'C10H8' : ( 8.14, None), # Naphthalene } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/colors.py000066400000000000000000000131321316323560300233230ustar00rootroot00000000000000import numpy as np # Jmol colors. See: http://jmol.sourceforge.net/jscolors/#color_U jmol_colors = np.array([ (1.000,0.000,0.000) ,# None (1.000,1.000,1.000), # H (0.851,1.000,1.000), # He (0.800,0.502,1.000), # Li (0.761,1.000,0.000), # Be (1.000,0.710,0.710), # B (0.565,0.565,0.565), # C (0.188,0.314,0.973), # N (1.000,0.051,0.051), # O (0.565,0.878,0.314), # F (0.702,0.890,0.961), # Ne (0.671,0.361,0.949), # Na (0.541,1.000,0.000), # Mg (0.749,0.651,0.651), # Al (0.941,0.784,0.627), # Si (1.000,0.502,0.000), # P (1.000,1.000,0.188), # S (0.122,0.941,0.122), # Cl (0.502,0.820,0.890), # Ar (0.561,0.251,0.831), # K (0.239,1.000,0.000), # Ca (0.902,0.902,0.902), # Sc (0.749,0.761,0.780), # Ti (0.651,0.651,0.671), # V (0.541,0.600,0.780), # Cr (0.612,0.478,0.780), # Mn (0.878,0.400,0.200), # Fe (0.941,0.565,0.627), # Co (0.314,0.816,0.314), # Ni (0.784,0.502,0.200), # Cu (0.490,0.502,0.690), # Zn (0.761,0.561,0.561), # Ga (0.400,0.561,0.561), # Ge (0.741,0.502,0.890), # As (1.000,0.631,0.000), # Se (0.651,0.161,0.161), # Br (0.361,0.722,0.820), # Kr (0.439,0.180,0.690), # Rb (0.000,1.000,0.000), # Sr (0.580,1.000,1.000), # Y (0.580,0.878,0.878), # Zr (0.451,0.761,0.788), # Nb (0.329,0.710,0.710), # Mo (0.231,0.620,0.620), # Tc (0.141,0.561,0.561), # Ru (0.039,0.490,0.549), # Rh (0.000,0.412,0.522), # Pd (0.753,0.753,0.753), # Ag (1.000,0.851,0.561), # Cd (0.651,0.459,0.451), # In (0.400,0.502,0.502), # Sn (0.620,0.388,0.710), # Sb (0.831,0.478,0.000), # Te (0.580,0.000,0.580), # I (0.259,0.620,0.690), # Xe (0.341,0.090,0.561), # Cs (0.000,0.788,0.000), # Ba (0.439,0.831,1.000), # La (1.000,1.000,0.780), # Ce (0.851,1.000,0.780), # Pr (0.780,1.000,0.780), # Nd (0.639,1.000,0.780), # Pm (0.561,1.000,0.780), # Sm (0.380,1.000,0.780), # Eu (0.271,1.000,0.780), # Gd (0.188,1.000,0.780), # Tb (0.122,1.000,0.780), # Dy (0.000,1.000,0.612), # Ho (0.000,0.902,0.459), # Er (0.000,0.831,0.322), # Tm (0.000,0.749,0.220), # Yb (0.000,0.671,0.141), # Lu (0.302,0.761,1.000), # Hf (0.302,0.651,1.000), # Ta (0.129,0.580,0.839), # W (0.149,0.490,0.671), # Re (0.149,0.400,0.588), # Os (0.090,0.329,0.529), # Ir (0.816,0.816,0.878), # Pt (1.000,0.820,0.137), # Au (0.722,0.722,0.816), # Hg (0.651,0.329,0.302), # Tl (0.341,0.349,0.380), # Pb (0.620,0.310,0.710), # Bi (0.671,0.361,0.000), # Po (0.459,0.310,0.271), # At (0.259,0.510,0.588), # Rn (0.259,0.000,0.400), # Fr (0.000,0.490,0.000), # Ra (0.439,0.671,0.980), # Ac (0.000,0.729,1.000), # Th (0.000,0.631,1.000), # Pa (0.000,0.561,1.000), # U (0.000,0.502,1.000), # Np (0.000,0.420,1.000), # Pu (0.329,0.361,0.949), # Am (0.471,0.361,0.890), # Cm (0.541,0.310,0.890), # Bk (0.631,0.212,0.831), # Cf (0.702,0.122,0.831), # Es (0.702,0.122,0.729), # Fm (0.702,0.051,0.651), # Md (0.741,0.051,0.529), # No (0.780,0.000,0.400), # Lr (0.800,0.000,0.349), # Rf (0.820,0.000,0.310), # Db (0.851,0.000,0.271), # Sg (0.878,0.000,0.220), # Bh (0.902,0.000,0.180), # Hs (0.922,0.000,0.149), # Mt ]) # CPK colors in units of RGB values: cpk_colors = np.array([ (1.000,0.000,0.000) ,# None (1.000,1.000,1.000) ,# H (1.000,0.753,0.796) ,# He (0.698,0.133,0.133) ,# Li (1.000,0.078,0.576) ,# Be (0.000,1.000,0.000) ,# B (0.784,0.784,0.784) ,# C (0.561,0.561,1.000) ,# N (0.941,0.000,0.000) ,# O (0.855,0.647,0.125) ,# F (1.000,0.078,0.576) ,# Ne (0.000,0.000,1.000) ,# Na (0.133,0.545,0.133) ,# Mg (0.502,0.502,0.565) ,# Al (0.855,0.647,0.125) ,# Si (1.000,0.647,0.000) ,# P (1.000,0.784,0.196) ,# S (0.000,1.000,0.000) ,# Cl (1.000,0.078,0.576) ,# Ar (1.000,0.078,0.576) ,# K (0.502,0.502,0.565) ,# Ca (1.000,0.078,0.576) ,# Sc (0.502,0.502,0.565) ,# Ti (1.000,0.078,0.576) ,# V (0.502,0.502,0.565) ,# Cr (0.502,0.502,0.565) ,# Mn (1.000,0.647,0.000) ,# Fe (1.000,0.078,0.576) ,# Co (0.647,0.165,0.165) ,# Ni (0.647,0.165,0.165) ,# Cu (0.647,0.165,0.165) ,# Zn (1.000,0.078,0.576) ,# Ga (1.000,0.078,0.576) ,# Ge (1.000,0.078,0.576) ,# As (1.000,0.078,0.576) ,# Se (0.647,0.165,0.165) ,# Br (1.000,0.078,0.576) ,# Kr (1.000,0.078,0.576) ,# Rb (1.000,0.078,0.576) ,# Sr (1.000,0.078,0.576) ,# Y (1.000,0.078,0.576) ,# Zr (1.000,0.078,0.576) ,# Nb (1.000,0.078,0.576) ,# Mo (1.000,0.078,0.576) ,# Tc (1.000,0.078,0.576) ,# Ru (1.000,0.078,0.576) ,# Rh (1.000,0.078,0.576) ,# Pd (0.502,0.502,0.565) ,# Ag (1.000,0.078,0.576) ,# Cd (1.000,0.078,0.576) ,# In (1.000,0.078,0.576) ,# Sn (1.000,0.078,0.576) ,# Sb (1.000,0.078,0.576) ,# Te (0.627,0.125,0.941) ,# I (1.000,0.078,0.576) ,# Xe (1.000,0.078,0.576) ,# Cs (1.000,0.647,0.000) ,# Ba (1.000,0.078,0.576) ,# La (1.000,0.078,0.576) ,# Ce (1.000,0.078,0.576) ,# Pr (1.000,0.078,0.576) ,# Nd (1.000,0.078,0.576) ,# Pm (1.000,0.078,0.576) ,# Sm (1.000,0.078,0.576) ,# Eu (1.000,0.078,0.576) ,# Gd (1.000,0.078,0.576) ,# Tb (1.000,0.078,0.576) ,# Dy (1.000,0.078,0.576) ,# Ho (1.000,0.078,0.576) ,# Er (1.000,0.078,0.576) ,# Tm (1.000,0.078,0.576) ,# Yb (1.000,0.078,0.576) ,# Lu (1.000,0.078,0.576) ,# Hf (1.000,0.078,0.576) ,# Ta (1.000,0.078,0.576) ,# W (1.000,0.078,0.576) ,# Re (1.000,0.078,0.576) ,# Os (1.000,0.078,0.576) ,# Ir (1.000,0.078,0.576) ,# Pt (0.855,0.647,0.125) ,# Au (1.000,0.078,0.576) ,# Hg (1.000,0.078,0.576) ,# Tl (1.000,0.078,0.576) ,# Pb (1.000,0.078,0.576) ,# Bi (1.000,0.078,0.576) ,# Po (1.000,0.078,0.576) ,# At (1.000,1.000,1.000) ,# Rn (1.000,1.000,1.000) ,# Fr (1.000,1.000,1.000) ,# Ra (1.000,1.000,1.000) ,# Ac (1.000,0.078,0.576) ,# Th (1.000,1.000,1.000) ,# Pa (1.000,0.078,0.576) ,# U (1.000,1.000,1.000) ,# Np (1.000,1.000,1.000) ,# Pu (1.000,1.000,1.000) ,# Am (1.000,1.000,1.000) ,# Cm (1.000,1.000,1.000) ,# Bk (1.000,1.000,1.000) ,# Cf (1.000,1.000,1.000) ,# Es (1.000,1.000,1.000) ,# Fm (1.000,1.000,1.000) ,# Md (1.000,1.000,1.000) ,# No (1.000,1.000,1.000) # Lw ]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/dbh24.py000066400000000000000000000431551316323560300227350ustar00rootroot00000000000000""" The following contains a database of 24 gas-phase reaction barrier heights for small molecules. It is the DBH24 (diverse barrier heights) set of the Truhlar group, with 12 forward and 12 backward barriers. All geometries are from Zheng, Zhao and Truhler, "J. Chem. Theo. Comput.", 3:569-582, 2007 while energies are from Zheng, Zhao and Truhler, "J. Chem. Theo. Comput.", 5:808-821, 2009 """ from ase.atoms import Atoms dbh24 = ['dbh24_H', 'dbh24_N2O','dbh24_OH','dbh24_N2','dbh24_tst_H_N2O__OH_N2', 'dbh24_HCl','dbh24_tst_H_ClH__HCl_H', 'dbh24_CH3','dbh24_FCl','dbh24_CH3F','dbh24_Cl','dbh24_tst_CH3_FCl__CH3F_Cl', 'dbh24_Cl-ion_CH3Cl','dbh24_tst_Cl-ion_CH3Cl', 'dbh24_F-ion_CH3Cl','dbh24_Cl-ion_CH3F','dbh24_tst-Cl-ion_CH3F__F_ion_CH3Cl', 'dbh24_OH-ion','dbh24_CH3OH','dbh24_F-ion','dbh24_tst-OH-ion_CH3F__F_ion_CH3OH', 'dbh24_HN2','dbh24_tst_H_N2__HN2', 'dbh24_C2H4','dbh24_CH3CH2','dbh24_tst_H_C2H4__CH3CH2', 'dbh24_HCN','dbh24_HNC','dbh24_tst_HCN__HNC', 'dbh24_CH4','dbh24_H2O','dbh24_tst_OH_CH4__CH3_H2O', 'dbh24_H2','dbh24_O','dbh24_tst_H_OH__O_H2', 'dbh24_H2S','dbh24_HS','dbh24_tst_H_H2S__H2_HS'] dbh24_reaction_list = { 'dbh24_r1': { 'description': 'HAT 1', 'number': 1, 'initial': ['dbh24_H', 'dbh24_N2O'], 'final': ['dbh24_OH','dbh24_N2'], 'tst': 'dbh24_tst_H_N2O__OH_N2'}, 'dbh24_r2': { 'description': 'HAT 2', 'number': 2, 'initial': ['dbh24_H', 'dbh24_HCl'], 'final': ['dbh24_HCl', 'dbh24_H'], 'tst': 'dbh24_tst_H_ClH__HCl_H'}, 'dbh24_r3': { 'description': 'HAT 3', 'number': 3, 'initial': ['dbh24_CH3', 'dbh24_FCl'], 'final': ['dbh24_CH3F', 'dbh24_Cl'], 'tst': 'dbh24_tst_CH3_FCl__CH3F_Cl'}, 'dbh24_r4': { 'description': 'NS 1', 'number': 4, 'initial': ['dbh24_Cl-ion_CH3Cl'], 'final': ['dbh24_Cl-ion_CH3Cl'], 'tst': 'dbh24_tst_Cl-ion_CH3Cl'}, 'dbh24_r5': { 'description': 'NS 2', 'number': 5, 'initial': ['dbh24_F-ion_CH3Cl'], 'final': ['dbh24_Cl-ion_CH3F'], 'tst': 'dbh24_tst-Cl-ion_CH3F__F_ion_CH3Cl'}, 'dbh24_r6': { 'description': 'NS 3', 'number': 6, 'initial': ['dbh24_OH-ion', 'dbh24_CH3F'], 'final': ['dbh24_CH3OH', 'dbh24_F-ion'], 'tst': 'dbh24_tst-OH-ion_CH3F__F_ion_CH3OH'}, 'dbh24_r7': { 'description': 'UA 1', 'number': 7, 'initial': ['dbh24_H', 'dbh24_N2'], 'final': ['dbh24_HN2'], 'tst': 'dbh24_tst_H_N2__HN2'}, 'dbh24_r8': { 'description': 'UA 2', 'number': 8, 'initial': ['dbh24_H', 'dbh24_C2H4'], 'final': ['dbh24_CH3CH2'], 'tst': 'dbh24_tst_H_C2H4__CH3CH2'}, 'dbh24_r9': { 'description': 'UA 3', 'number': 9, 'initial': ['dbh24_HCN'], 'final': ['dbh24_HNC'], 'tst': 'dbh24_tst_HCN__HNC'}, 'dbh24_r10': { 'description': 'HT 1', 'number': 10, 'initial': ['dbh24_OH', 'dbh24_CH4'], 'final': ['dbh24_CH3', 'dbh24_H2O'], 'tst': 'dbh24_tst_OH_CH4__CH3_H2O'}, 'dbh24_r11': { 'description': 'HT 2', 'number': 11, 'initial': ['dbh24_H', 'dbh24_OH'], 'final': ['dbh24_O', 'dbh24_H2'], 'tst': 'dbh24_tst_H_OH__O_H2'}, 'dbh24_r12': { 'description': 'HT 3', 'number': 12, 'initial': ['dbh24_H', 'dbh24_H2S'], 'final': ['dbh24_H2', 'dbh24_HS'], 'tst': 'dbh24_tst_H_H2S__H2_HS'} } data = { # reaction 1 = HAT 1 'dbh24_H': { 'name': 'dbh24_H', 'symbols': 'H', 'magmoms': [1.], 'charge': 0., 'positions': [[0. , 0. , 0.]]}, 'dbh24_N2O': { 'name': "dbh24_N2O", 'symbols': 'NNO', 'magmoms': None, 'charge': 0., 'positions': [[ 0. , 0. , -1.195674], [ 0. , 0. , -0.075111], [ 0. , 0. , 1.111937]]}, 'dbh24_OH': { 'name': "dbh24_OH", 'symbols': 'OH', 'magmoms': [ 1., 0.], 'charge': 0., 'positions': [[ 0. , 0. , 0.106894], [ 0. , 0. , -0.855149]]}, 'dbh24_N2': { 'name': "dbh24_N2", 'symbols': 'NN', 'magmoms': None, 'charge': 0., 'positions': [[ 0. , 0. , 0.548555], [ 0. , 0. , -0.548555]]}, 'dbh24_tst_H_N2O__OH_N2': { 'name': "dbh24_tst_H_N2O__OH_N2", 'Vf': 17.13, # kcal/mol 'Vb': 82.47, # kcal/mol 'symbols': 'HONN', 'magmoms': [1., 0., 0., 0.], 'charge': 0., 'positions': [[ -0.303286, -1.930712, 0.], [ -0.861006, -0.621526, 0.], [ 0.000000, 0.257027, 0.], [ 1.027333, 0.729104, 0.]]}, # reaction 2 = HAT 2 'dbh24_HCl': { 'name': "dbh24_HCl", 'symbols': 'HCl', 'magmoms': None, 'charge': 0., 'positions': [[ 0. , 0. , -1.203645], [ 0. , 0. , 0.070803]]}, 'dbh24_tst_H_ClH__HCl_H': { 'name': "dbh24_tst_H_ClH__HCl_H", 'Vf': 18.00, # kcal/mol 'Vb': 18.00, # kcal/mol 'symbols': 'HClH', 'magmoms': [1., 0., 0.], 'charge': 0., 'positions': [[ 0., 0., 1.485800], [ 0., 0., 0. ], [ 0., 0., -1.485800]]}, # reaction 3 = HAT 3 'dbh24_CH3': { 'name': "dbh24_CH3", 'symbols': 'CHHH', 'magmoms': [1.,0.,0.,0.], 'charge': 0., 'positions': [[ 0., 0., 0.], [ 1.077317, 0., 0.], [ -0.538659, 0.932984, 0.], [ -0.538659, -0.932984, 0.]]}, 'dbh24_FCl': { 'name': "dbh24_FCl", 'symbols': 'FCl', 'magmoms': None, 'charge': 0., 'positions': [[ 0., 0., -1.065985], [ 0., 0., 0.564345]]}, 'dbh24_CH3F': { 'name': "dbh24_CH3F", 'symbols': 'CFHHH', 'magmoms': None, 'charge': 0., 'positions': [[ -0.632074, 0.000001, 0.000000], [ 0.749117, 0.000002, -0.000002], [ -0.983182, -0.338489, 0.972625], [ -0.983222, 1.011553, -0.193172], [ -0.983203, -0.673084, -0.779437]]}, 'dbh24_Cl': { 'name': 'dbh24_Cl', 'symbols': 'Cl', 'magmoms': [1.], 'charge': 0., 'positions': [[0. , 0. , 0.]]}, 'dbh24_tst_CH3_FCl__CH3F_Cl': { 'name': "dbh24_tst_CH3_FCl__CH3F_Cl", 'Vf': 6.75, # kcal/mol 'Vb': 60.00, # kcal/mol 'symbols': 'ClFCHHH', 'magmoms': [0.,0.,1.,0.,0.,0.], 'charge': 0., 'positions': [[ 1.454749, -0.001237, -0.000040], [ -0.323587, 0.004631, 0.000124], [ -2.387418, -0.002147, -0.000073], [ -2.495086, -0.855361, -0.649404], [ -2.497313, -0.138673, 1.063139], [ -2.501537, 0.986269, -0.413734]]}, # reaction 4 = NS 1 'dbh24_Cl-ion_CH3Cl': { 'name': "dbh24_Cl-ion_CH3Cl", 'symbols': 'ClCHHHCl', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000000, 0.000000, -2.384735], [ 0.000000, 0.000000, -0.566331], [ 0.000000, 1.025066, -0.224379], [-0.887734, -0.512533, -0.224379], [ 0.887734, -0.512533, -0.224379], [ 0.000000, 0.000000, 2.624213]]}, 'dbh24_tst_Cl-ion_CH3Cl': { 'name': "dbh24_tst_Cl-ion_CH3Cl", 'Vf': 13.41, # kcal/mol 'Vb': 13.41, # kcal/mol 'symbols': 'ClCHHHCl', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000025, 0.019526, 2.322499], [ 0.000513, 0.000486, -0.000089], [ 0.761278, -0.750733, 0.006377], [-1.030451, -0.282724, 0.002147], [ 0.270728, 1.034927, -0.008697], [-0.000297, -0.019784, -2.322458]]}, # reaction 5 = NS 2 'dbh24_F-ion_CH3Cl': { 'name': "dbh24_F-ion_CH3Cl", 'symbols': 'ClCHHHF', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000000, 0.000000, 1.623138], [ 0.000000, 0.000000, -0.227358], [ 0.000000, 1.026321, -0.555141], [ 0.888820, -0.513160, -0.555141], [-0.888820, -0.513160, -0.555141], [ 0.000000, 0.000000, -2.729308]]}, 'dbh24_Cl-ion_CH3F': { 'name': "dbh24_Cl-ion_CH3F", 'symbols': 'FCHHHCl', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000000, 0.000000, -2.648539], [ 0.000000, 0.000000, -1.240170], [ 0.000000, 1.024719, -0.886406], [-0.887432, -0.512359, -0.886406], [ 0.887432, -0.512359, -0.886406], [ 0.000000, 0.000000, 1.996299]]}, 'dbh24_tst-Cl-ion_CH3F__F_ion_CH3Cl': { 'name': "dbh24_tst-Cl-ion_CH3F__F_ion_CH3Cl", 'Vf': 3.44, # kcal/mol 'Vb': 29.42, # kcal/mol 'symbols': 'FCHHHCl', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000000, 0.000000, -2.537929], [ 0.000000, 0.000000, -0.488372], [ 1.062087, 0.000000, -0.614972], [-0.531044, 0.919794, -0.614972], [-0.531044, -0.919794, -0.614972], [ 0.000000, 0.000000, 1.624501]]}, # reaction 6 = NS 3 'dbh24_OH-ion': { 'name': "dbh24_OH-ion", 'symbols': 'OH', 'magmoms': None, 'charge': -1., 'positions': [[ 0.000000, 0.000000, 0.106894], [ 0.000000, 0.000000, -0.855149]]}, 'dbh24_CH3OH': { 'name': "dbh24_CH3OH", 'symbols': 'COHHHH', 'magmoms': None, 'charge': 0., 'positions': [[ -0.046423, 0.663069, 0.000000], [ -0.046423, -0.755063, 0.000000], [ -1.086956, 0.975938, 0.000000], [ 0.860592, -1.057039, 0.000000], [ 0.438145, 1.071594, 0.889539], [ 0.438145, 1.071594, -0.889539]]}, 'dbh24_F-ion': { 'name': "dbh24_F-ion", 'symbols': 'F', 'magmoms': None, 'charge': -1., 'positions': [[ 0.0, 0.0, 0.0]]}, 'dbh24_tst-OH-ion_CH3F__F_ion_CH3OH': { 'name': "dbh24_tst-OH-ion_CH3F__F_ion_CH3OH", 'Vf': -2.44, # kcal/mol 'Vb': 17.66, # kcal/mol 'symbols': 'FCHHHOH', 'magmoms': None, 'charge': -1., 'positions': [[ 1.850614, -0.013179, -0.000128], [ 0.090857, 0.010586, 0.000269], [ 0.040907, 1.079548, -0.011749], [ 0.037163, -0.528013, -0.922944], [ 0.037486, -0.507463, 0.935132], [-1.892801, 0.103266, -0.000118], [-2.173821, -0.815112, 0.000039]]}, # reaction 7 = UA 1 'dbh24_HN2': { 'name': "dbh24_HN2", 'symbols': 'NNH', 'magmoms': [1., 0., 0.], 'charge': 0., 'positions': [[ -0.062442, 0.659491, 0.000000], [ -0.062442, -0.518709, 0.000000], [ 0.874194, -0.985478, 0.000000]]}, 'dbh24_tst_H_N2__HN2': { 'name': "dbh24_tst_H_N2__HN2", 'Vf': 14.36, # kcal/mol 'Vb': 10.61, # kcal/mol 'symbols': 'NNH', 'magmoms': [1., 0., 0.], 'charge': 0., 'positions': [[ 0.084563, -0.642934, 0.000000], [ 0.084563, 0.479877, 0.000000], [-1.183883, 1.141399, 0.000000]]}, # reaction 8 = UA 2 'dbh24_C2H4': { 'name': "dbh24_C2H4", 'symbols': 'CCHHHH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.665593], [ 0.000000, 0.000000, -0.665593], [ 0.000000, 0.921495, 1.231668], [ 0.000000, -0.921495, 1.231668], [ 0.000000, 0.921495, -1.231668], [ 0.000000, -0.921495, -1.231668]]}, 'dbh24_CH3CH2': { 'name': "dbh24_CH3CH2", 'symbols': 'CCHHHHH', 'magmoms': [1.,0.,0.,0.,0.,0.,0.], 'charge': 0., 'positions': [[ -0.258719, -0.816829, 0.000000], [ -0.250987, 0.674191, 0.000000], [ 0.758830, -1.225939, 0.000000], [ -0.758830, -1.213866, 0.883419], [ -0.758830, -1.213866,-0.883419], [ -0.170021, 1.225939,-0.924320], [ -0.170021, 1.225939, 0.924320]]}, 'dbh24_tst_H_C2H4__CH3CH2': { 'name': "dbh24_tst_H_C2H4__CH3CH2", 'Vf': 1.72, # kcal/mol 'Vb': 41.75, # kcal/mol 'symbols': 'CCHHHHH', 'magmoms': [1.,0.,0.,0.,0.,0.,0.], 'charge': 0., 'positions': [[ -0.567877, 0.000051, -0.218958], [ 0.751139, -0.000036, 0.041932], [ -1.493884, -0.000488, 1.531765], [ -1.101691, 0.920651, -0.408626], [ -1.102022, -0.920234, -0.409110], [ 1.299128, -0.922344, 0.173763], [ 1.298899, 0.922325, 0.174363]]}, # reaction 9 = UA 3 'dbh24_HCN': { 'name': "dbh24_HCN", 'symbols': 'CNH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, -0.500365], [ 0.000000, 0.000000, 0.652640], [ 0.000000, 0.000000, -1.566291]]}, 'dbh24_HNC': { 'name': "dbh24_HNC", 'symbols': 'CNH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, -0.737248], [ 0.000000, 0.000000, 0.432089], [ 0.000000, 0.000000, 1.426960]]}, 'dbh24_tst_HCN__HNC': { 'name': "dbh24_tst_HCN__HNC", 'Vf': 48.07, # kcal/mol 'Vb': 32.82, # kcal/mol 'symbols': 'CNH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.080319, 0.620258, 0.000000], [ 0.080319, -0.568095, 0.000000], [-1.044148, 0.255121, 0.000000]]}, # reaction 10 = HT 1 'dbh24_CH4': { 'name': "dbh24_CH4", 'symbols': 'CHHHH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.000000], [ 0.627837, 0.627837, 0.627837], [-0.627837, -0.627837, 0.627837], [ 0.627837, -0.627837, -0.627837], [-0.627837, 0.627837, -0.627837]]}, 'dbh24_H2O': { 'name': "dbh24_H2O", 'symbols': 'OHH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.117145], [ 0.000000, 0.756709, -0.468582], [ 0.000000, -0.756709, -0.468582]]}, 'dbh24_tst_OH_CH4__CH3_H2O': { 'name': "dbh24_tst_OH_CH4__CH3_H2O", 'Vf': 6.7, # kcal/mol 'Vb': 19.6, # kcal/mol 'symbols': 'COHHHHH', 'magmoms': [0.,1.,0.,0.,0.,0.,0.], 'charge': 0., 'positions': [[ -1.211487, 0.007968, 0.000407], [ 1.293965, -0.108694, 0.000133], [ 0.009476, -0.118020, 0.002799], [ -1.525529, -0.233250, 1.010070], [ -1.430665, 1.033233, -0.278082], [ -1.552710, -0.710114, -0.737702], [ 1.416636, 0.849894, -0.000591]]}, # reaction 11 = HT 2 'dbh24_O': { 'name': 'dbh24_O', 'symbols': 'O', 'magmoms': [2.], 'charge': 0., 'positions': [[0. , 0. , 0.]]}, 'dbh24_H2': { 'name': "dbh24_H2", 'symbols': 'HH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.370938], [ 0.000000, 0.000000, -0.370938]]}, 'dbh24_tst_H_OH__O_H2': { 'name': "dbh24_tst_H_OH__O_H2", 'Vf': 10.7, # kcal/mol 'Vb': 13.1, # kcal/mol 'symbols': 'HOH', 'magmoms': [1.,0.,1.], 'charge': 0., 'positions': [[ 0.000000, 0.000000, -0.860287], [ 0.000000, 0.000000, 0.329024], [ 0.000000, 0.000000, -1.771905]]}, # reaction 12 = HT 3 'dbh24_H2S': { 'name': "dbh24_H2S", 'symbols': 'SHH', 'magmoms': None, 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.102519], [ 0.000000, 0.966249, -0.820154], [ 0.000000, -0.966249, -0.820154]]}, 'dbh24_HS': { 'name': "dbh24_HS", 'symbols': 'SH', 'magmoms': [0.,1.], 'charge': 0., 'positions': [[ 0.000000, 0.000000, 0.078835], [ 0.000000, 0.000000, -1.261367]]}, 'dbh24_tst_H_H2S__H2_HS': { 'name': "dbh24_tst_H_H2S__H2_HS", 'Vf': 3.6, # kcal/mol 'Vb': 17.3, # kcal/mol 'symbols': 'HSHH', 'magmoms': [0.,1.,0.,0.], 'charge': 0., 'positions': [[ 1.262097, -0.220097, 0.000000], [ 0.000000, 0.223153, 0.000000], [-0.500576, -1.115445, 0.000000], [-0.761521, -2.234913, 0.000000]]}, } def create_dbh24_system(name, **kwargs): """Creates a DBH24 system. """ if name not in data: raise NotImplementedError('System %s not in database.' % name) d = data[name] if 'magmoms' not in kwargs: kwargs['magmoms'] = d['magmoms'] return Atoms(d['symbols'], d['positions'], **kwargs) def get_dbh24_magmoms(name): """Returns the magnetic moments of DBH24 systems. """ if name not in data: raise KeyError('System %s not in database.' % name) else: return data[name]['magmoms'] def get_dbh24_charge(name): """ Returns the total charge of DBH24 systems. """ assert name in dbh24 d = data[name] charge = d['charge'] return charge def get_dbh24_Vf(name): """ Returns forward DBH24 TST barrier in kcal/mol """ assert name in dbh24 d = data[name] Vf = d['Vf'] return Vf def get_dbh24_Vb(name): """ Returns backward DBH24 TST barrier in kcal/mol """ assert name in dbh24 d = data[name] Vb = d['Vb'] return Vb def get_dbh24_initial_states(name): """ Returns initial DBH24 states """ assert name in dbh24_reaction_list d = dbh24_reaction_list[name] initial = d['initial'] return initial def get_dbh24_final_states(name): """ Returns final DBH24 states """ assert name in dbh24_reaction_list d = dbh24_reaction_list[name] final = d['final'] return final def get_dbh24_tst(name): """ Returns DBH24 TST names """ assert name in dbh24_reaction_list d = dbh24_reaction_list[name] tst = d['tst'] return tst ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/extra_molecules.py000066400000000000000000000160641316323560300252240ustar00rootroot00000000000000""" Database of molecules outside the G2_1 set """ molecule_names = ['Be2','C7NH5','BDA','biphenyl','C60'] data = { 'Be2': { 'description': "Diatomic Beryllium", 'name': "Be_2", 'enthalpy': 155.1, 'ZPE': 1.0000, 'thermal correction': 5.0600, 'symbols': 'BeBe', 'magmoms': None, 'positions': [[ 0. , 0. , 1.0106], [ 0. , 0. , -1.0106]]}, 'C7NH5': { 'description': "Benzonitride", 'name': "C_7NH_5", 'symbols': 'C7NH5', 'magmoms': None, 'positions': [[ -1.593581, -1.142601, 0.], [ -2.235542, 0.095555, 0.], [ -0.204885, -1.210726, 0.], [ 0.549645, -0.025355, 0.], [ 1.976332, -0.085321, 0.], [ -0.099258, 1.220706, 0.], [ -1.488628, 1.273345, 0.], [ 3.136871, -0.128138, 0.], [ -2.177996, -2.060896, 0.], [ -3.323594, 0.141242, 0.], [ 0.301694, -2.173705, 0.], [ 0.488716, 2.136782, 0.], [ -1.987765, 2.240495, 0.]]}, 'BDA': { 'description': "1,4-Benzodiamine", # aka p-Aminoaniline; p-Benzenediamine; p-Diaminobenzene; # p-Phenylenediamine; Paraphenylen-diamine 'name': "BDA", # PBE-gpaw relaxed 'symbols': 'C6H4N2H4', 'magmoms': None, 'positions': [[ 0.004212, 1.406347, 0.061073], [ 1.193490, 0.687096, 0.029481], [ 1.190824, -0.690400, -0.028344], [ 0.000295, -1.406191, -0.059503], [-1.186974, -0.685668, -0.045413], [-1.185376, 0.690203, 0.009452], [ 2.147124, 1.219997, 0.064477], [ 2.141593, -1.227477, -0.054266], [-2.138408, -1.222814, -0.095050], [-2.137740, 1.226930, 0.023036], [-0.006314, 2.776024, 0.186278], [-0.007340, -2.777839, -0.159936], [ 0.844710, -3.256543, 0.110098], [-0.854965, -3.253324, 0.130125], [ 0.845826, 3.267270, -0.055549], [-0.854666, 3.254654, -0.092676]]}, 'biphenyl': { 'description': "Biphenyl", 'name': "biphenyl", # PBE-gpaw relaxed 'ionization energy': 8.16, 'symbols': 'C6H5C6H5', 'magmoms': None, 'positions': [[-0.74081, -0.00000, -0.00003], [-1.46261, -1.20370, -0.00993], [-2.85531, -1.20350, -0.00663], [-3.55761, -0.00000, -0.00003], [-2.85531, 1.20350, 0.00667], [-1.46261, 1.20370, 0.00997], [-0.92071, -2.14850, 0.00967], [-3.38981, -2.15110, -0.00083], [-4.64571, -0.00000, -0.00003], [-3.38981, 2.15110, 0.00077], [-0.92071, 2.14850, -0.00963], [ 3.55849, -0.00000, -0.00003], [ 2.85509, -0.86640, -0.83553], [ 1.46289, -0.87000, -0.83153], [ 0.73969, -0.00000, -0.00003], [ 1.46289, 0.87000, 0.83157], [ 2.85509, 0.86640, 0.83547], [ 4.64659, -0.00000, -0.00003], [ 3.39189, -1.53770, -1.50253], [ 0.91869, -1.53310, -1.50263], [ 0.91869, 1.53310, 1.50267], [ 3.39189, 1.53770, 1.50257]]}, 'C60': { 'description': "Buckminsterfullerene, I*h symm.", 'name': "C_{60}", # The Buckyball has two degrees of freedom, the C-C bond, and the C=C bond. # This is an LDA-gpaw relaxed structure with bond lengths 1.437 and 1.385. # Experimentally, the two bond lengths are 1.45 and 1.40 Angstrom. 'symbols': 'C60', 'magmoms': None, 'positions': [[ 2.2101953, 0.5866631, 2.6669504], [ 3.1076393, 0.1577008, 1.6300286], [ 1.3284430, -0.3158939, 3.2363232], [ 3.0908709, -1.1585005, 1.2014240], [ 3.1879245, -1.4574599, -0.1997005], [ 3.2214623, 1.2230966, 0.6739440], [ 3.3161210, 0.9351586, -0.6765151], [ 3.2984981, -0.4301142, -1.1204138], [-0.4480842, 1.3591484, 3.2081020], [ 0.4672056, 2.2949830, 2.6175264], [-0.0256575, 0.0764219, 3.5086259], [ 1.7727917, 1.9176584, 2.3529691], [ 2.3954623, 2.3095689, 1.1189539], [-0.2610195, 3.0820935, 1.6623117], [ 0.3407726, 3.4592388, 0.4745968], [ 1.6951171, 3.0692446, 0.1976623], [-2.1258394, -0.8458853, 2.6700963], [-2.5620990, 0.4855202, 2.3531715], [-0.8781521, -1.0461985, 3.2367302], [-1.7415096, 1.5679963, 2.6197333], [-1.6262468, 2.6357030, 1.6641811], [-3.2984810, 0.4301871, 1.1204208], [-3.1879469, 1.4573895, 0.1996030], [-2.3360261, 2.5813627, 0.4760912], [-0.5005210, -2.9797771, 1.7940308], [-1.7944338, -2.7729087, 1.2047891], [-0.0514245, -2.1328841, 2.7938830], [-2.5891471, -1.7225828, 1.6329715], [-3.3160705, -0.9350636, 0.6765268], [-1.6951919, -3.0692581, -0.1976564], [-2.3954901, -2.3096853, -1.1189862], [-3.2214182, -1.2231835, -0.6739581], [ 2.1758234, -2.0946263, 1.7922529], [ 1.7118619, -2.9749681, 0.7557198], [ 1.3130656, -1.6829416, 2.7943892], [ 0.3959024, -3.4051395, 0.7557638], [-0.3408219, -3.4591883, -0.4745610], [ 2.3360057, -2.5814499, -0.4761050], [ 1.6263757, -2.6357349, -1.6642309], [ 0.2611352, -3.0821271, -1.6622618], [-2.2100844, -0.5868636, -2.6670300], [-1.7726970, -1.9178969, -2.3530466], [-0.4670723, -2.2950509, -2.6175105], [-1.3283500, 0.3157683, -3.2362375], [-2.1759882, 2.0945383, -1.7923294], [-3.0909663, 1.1583472, -1.2015749], [-3.1076090, -0.1578453, -1.6301627], [-1.3131365, 1.6828292, -2.7943639], [ 0.5003224, 2.9799637, -1.7940203], [-0.3961148, 3.4052817, -0.7557272], [-1.7120629, 2.9749122, -0.7557988], [ 0.0512824, 2.1329478, -2.7937450], [ 2.1258630, 0.8460809, -2.6700534], [ 2.5891853, 1.7227742, -1.6329562], [ 1.7943010, 2.7730684, -1.2048262], [ 0.8781323, 1.0463514, -3.2365313], [ 0.4482452, -1.3591061, -3.2080510], [ 1.7416948, -1.5679557, -2.6197714], [ 2.5621724, -0.4853529, -2.3532026], [ 0.0257904, -0.0763567, -3.5084446]]}, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2.py000066400000000000000000000035231316323560300223350ustar00rootroot00000000000000"""The following contains a database of small molecules Data for the G2/97 database are from Raghavachari, Redfern, and Pople, J. Chem. Phys. Vol. 106, 1063 (1997). See http://www.cse.anl.gov/Catalysis_and_Energy_Conversion/ Computational_Thermochemistry.shtml for the original files. All numbers are experimental values, except for coordinates, which are MP2(full)/6-31G(d) optimized geometries (from http://www.cse.anl.gov/OldCHMwebsiteContent/compmat/G2-97.htm) Atomic species: ref: Curtiss et al. JCP 106, 1063 (1997). 'Enthalpy' is the experimental enthalpies of formation at 0K 'thermal correction' is the thermal corrections H(298)-H(0) Molecular species: ref: Staroverov et al. JCP 119, 12129 (2003) 'Enthalpy' is the experimental enthalpies of formation at 298K 'ZPE' is the zero-point energies 'thermal correction' is the thermal enthalpy corrections H(298K) - H_exp(0K) ZPE and thermal corrections are estimated from B3LYP geometries and vibrations. Experimental ionization potentials are from http://srdata.nist.gov/cccbdb/. For details about G2-1 and G2-2 sets see doi:10.1063/1.477422. """ from ase.data.g2_1 import data as data_g2_1 from ase.data.g2_2 import data as data_g2_2 from ase.data.g2_1 import atom_names as atom_names_g2_1 from ase.data.g2_1 import molecule_names as molecule_names_g2_1 from ase.data.g2_2 import atom_names as atom_names_g2_2 from ase.data.g2_2 import molecule_names as molecule_names_g2_2 from ase.data.g2_1 import get_ionization_energy from ase.data.g2_1 import get_atomization_energy __all__ = ['data', 'molecule_names', 'atom_names', 'get_ionization_energy', 'get_atomization_energy'] data = data_g2_1.copy() data.update(data_g2_2) atom_names = [] for a in atom_names_g2_1 + atom_names_g2_2: if a not in atom_names: atom_names.append(a) molecule_names = molecule_names_g2_1 + molecule_names_g2_2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_1.py000066400000000000000000000766111316323560300225650ustar00rootroot00000000000000""" The following contains a database of small molecules Data for the G2/97 database are from Raghavachari, Redfern, and Pople, J. Chem. Phys. Vol. 106, 1063 (1997). See http://www.cse.anl.gov/Catalysis_and_Energy_Conversion/Computational_Thermochemistry.shtml for the original files. All numbers are experimental values, except for coordinates, which are MP2(full)/6-31G(d) optimized geometries (from http://www.cse.anl.gov/OldCHMwebsiteContent/compmat/G2-97.htm) Atomic species: ref: Curtiss et al. JCP 106, 1063 (1997). 'Enthalpy' is the experimental enthalpies of formation at 0K 'thermal correction' is the thermal corrections H(298)-H(0) Molecular species: ref: Staroverov et al. JCP 119, 12129 (2003) 'Enthalpy' is the experimental enthalpies of formation at 298K 'ZPE' is the zero-point energies 'thermal correction' is the thermal enthalpy corrections H(298K) - H_exp(0K) ZPE and thermal corrections are estimated from B3LYP geometries and vibrations. For details about G2-1 and G2-2 sets see doi:10.1063/1.477422. Experimental ionization potentials are from http://srdata.nist.gov/cccbdb/ Information presented on these pages is considered public information and may be distributed or copied http://www.nist.gov/public_affairs/disclaimer.cfm """ from ase.atoms import string2symbols atom_names = ['H','Li','Be','C','N','O','F','Na','Si','P','S','Cl'] molecule_names = ['LiH','BeH','CH','CH2_s3B1d','CH2_s1A1d','CH3','CH4','NH','NH2','NH3','OH','H2O','HF','SiH2_s1A1d','SiH2_s3B1d','SiH3','SiH4','PH2','PH3','SH2','HCl','Li2','LiF','C2H2','C2H4','C2H6','CN','HCN','CO','HCO','H2CO','CH3OH','N2','N2H4','NO','O2','H2O2','F2','CO2','Na2','Si2','P2','S2','Cl2','NaCl','SiO','CS','SO','ClO','ClF','Si2H6','CH3Cl','CH3SH','HOCl','SO2'] data = { 'H': { 'name': 'Hydrogen', 'database': 'G2-1', 'symbols': 'H', 'magmoms': [1.], 'charges': None, 'enthalpy': 51.63, 'thermal correction': 1.01, 'ionization energy': 13.60, 'positions': [[ 0. , 0. , 0.]], }, 'Li': { 'name': 'Lithium', 'database': 'G2-1', 'symbols': 'Li', 'magmoms': [1.], 'charges': None, 'enthalpy': 37.69, 'thermal correction': 1.10, 'ionization energy': 5.39, 'positions': [[ 0. , 0. , 0.]], }, 'Be': { 'name': 'Beryllium', 'database': 'G2-1', 'symbols': 'Be', 'magmoms': None, 'charges': None, 'enthalpy': 76.48, 'thermal correction': 0.46, 'ionization energy': 9.32, 'positions': [[ 0. , 0. , 0.]], }, 'C': { 'name': 'Carbon', 'database': 'G2-1', 'symbols': 'C', 'magmoms': [2.], 'charges': None, 'enthalpy': 169.98, 'thermal correction': 0.25, 'ionization energy': 11.26, 'positions': [[ 0. , 0. , 0.]], }, 'N': { 'name': 'Nitrogen', 'database': 'G2-1', 'symbols': 'N', 'magmoms': [3.], 'charges': None, 'enthalpy': 112.53, 'thermal correction': 1.04, 'ionization energy': 14.53, 'positions': [[ 0. , 0. , 0.]], }, 'O': { 'name': 'Oxygen', 'database': 'G2-1', 'symbols': 'O', 'magmoms': [2.], 'charges': None, 'enthalpy': 58.99, 'thermal correction': 1.04, 'ionization energy': 13.62, 'positions': [[ 0. , 0. , 0.]], }, 'F': { 'name': 'Fluorine', 'database': 'G2-1', 'symbols': 'F', 'magmoms': [1.], 'charges': None, 'enthalpy': 18.47, 'thermal correction': 1.05, 'ionization energy': 17.42, 'positions': [[ 0. , 0. , 0.]], }, 'Na': { 'name': 'Sodium', 'database': 'G2-1', 'symbols': 'Na', 'magmoms': [1.], 'charges': None, 'enthalpy': 25.69, 'thermal correction': 1.54, 'ionization energy': 5.14, 'positions': [[ 0. , 0. , 0.]], }, 'Si': { 'name': 'Silicon', 'database': 'G2-1', 'symbols': 'Si', 'magmoms': [2.], 'charges': None, 'enthalpy': 106.60, 'thermal correction': 0.76, 'ionization energy': 8.15, 'positions': [[ 0. , 0. , 0.]], }, 'P': { 'name': 'Phosphorus', 'database': 'G2-1', 'symbols': 'P', 'magmoms': [3.], 'charges': None, 'enthalpy': 75.42, 'thermal correction': 1.28, 'ionization energy': 10.49, 'positions': [[ 0. , 0. , 0.]], }, 'S': { 'name': 'Sulfur', 'database': 'G2-1', 'symbols': 'S', 'magmoms': [2.], 'charges': None, 'enthalpy': 65.66, 'thermal correction': 1.05, 'ionization energy': 10.36, 'positions': [[ 0. , 0. , 0.]], }, 'Cl': { 'name': 'Chlorine', 'database': 'G2-1', 'symbols': 'Cl', 'magmoms': [1.], 'charges': None, 'enthalpy': 28.59, 'thermal correction': 1.10, 'ionization energy': 12.97, 'positions': [[ 0. , 0. , 0.]], }, 'LiH': { 'description': "Lithium hydride (LiH), C*v symm.", 'name': "LiH", 'database': 'G2-1', 'enthalpy': 33.3, 'ZPE': 2.0149, 'thermal correction': 2.0783, 'ionization energy': 7.90, 'symbols': 'LiH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.41], [ 0. , 0. , -1.23]]}, 'BeH': { 'description': "Beryllium hydride (BeH), D*h symm.", 'name': "BeH", 'database': 'G2-1', 'enthalpy': 81.7, 'ZPE': 2.9073, 'thermal correction': 2.0739, 'ionization energy': 8.21, 'symbols': 'BeH', 'magmoms': [ 0.8, 0.2], 'charges': None, 'positions': [[ 0. , 0. , 0.269654], [ 0. , 0. , -1.078616]]}, 'CH': { 'description': "CH radical. Doublet, C*v symm.", 'name': "CH", 'database': 'G2-1', 'enthalpy': 142.5, 'ZPE': 3.9659, 'thermal correction': 2.0739, 'ionization energy': 10.64, 'symbols': 'CH', 'magmoms': [ 1., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.160074], [ 0. , 0. , -0.960446]]}, 'CH2_s3B1d': { 'description': "Triplet methylene (CH2), C2v symm, 3-B1.", 'name': "CH_2 (^3B_1)", 'database': 'G2-1', 'enthalpy': 93.7, 'ZPE': 10.6953, 'thermal correction': 2.3877, 'ionization energy': 10.40, 'symbols': 'CHH', 'magmoms': [ 2., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.110381], [ 0. , 0.982622, -0.331142], [ 0. , -0.982622, -0.331142]]}, 'CH2_s1A1d': { 'description': "Singlet methylene (CH2), C2v symm, 1-A1.", 'name': "CH_2 (^1A_1)", 'database': 'G2-1', 'enthalpy': 102.8, 'ZPE': 10.2422, 'thermal correction': 2.3745, 'symbols': 'CHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.174343], [ 0. , 0.862232, -0.523029], [ 0. , -0.862232, -0.523029]]}, 'CH3': { 'description': "Methyl radical (CH3), D3h symm.", 'name': "CH_3", 'database': 'G2-1', 'enthalpy': 35.0, 'ZPE': 18.3383, 'thermal correction': 2.5383, 'ionization energy': 9.84, 'symbols': 'CHHH', 'magmoms': [ 1., 0., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 1.07841 , 0. ], [ 0.93393 , -0.539205, 0. ], [-0.93393 , -0.539205, 0. ]]}, 'CH4': { 'description': "Methane (CH4), Td symm.", 'name': "CH_4", 'database': 'G2-1', 'enthalpy': -17.9, 'ZPE': 27.6744, 'thermal correction': 2.3939, 'ionization energy': 12.64, 'vertical ionization energy': 13.60, 'symbols': 'CHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0.629118, 0.629118, 0.629118], [-0.629118, -0.629118, 0.629118], [ 0.629118, -0.629118, -0.629118], [-0.629118, 0.629118, -0.629118]]}, 'NH': { 'description': "NH, triplet, C*v symm.", 'name': "NH", 'database': 'G2-1', 'enthalpy': 85.2, 'ZPE': 4.5739, 'thermal correction': 2.0739, 'ionization energy': 13.10, 'vertical ionization energy': 13.49, 'symbols': 'NH', 'magmoms': [ 2., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.129929], [ 0. , 0. , -0.909501]]}, 'NH2': { 'description': "NH2 radical, C2v symm, 2-B1.", 'name': "NH_2", 'database': 'G2-1', 'enthalpy': 45.1, 'ZPE': 11.7420, 'thermal correction': 2.3726, 'ionization energy': 10.78, 'vertical ionization energy': 12.00, 'symbols': 'NHH', 'magmoms': [ 1., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.14169 ], [ 0. , 0.806442, -0.495913], [ 0. , -0.806442, -0.495913]]}, 'NH3': { 'description': "Ammonia (NH3), C3v symm.", 'name': "NH_3", 'database': 'G2-1', 'enthalpy': -11.0, 'ZPE': 21.2462, 'thermal correction': 2.3896, 'ionization energy': 10.07, 'vertical ionization energy': 10.82, 'symbols': 'NHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.116489], [ 0. , 0.939731, -0.271808], [ 0.813831, -0.469865, -0.271808], [-0.813831, -0.469865, -0.271808]]}, 'OH': { 'description': "OH radical, C*v symm.", 'name': "OH", 'database': 'G2-1', 'enthalpy': 9.4, 'ZPE': 5.2039, 'thermal correction': 2.0739, 'ionization energy': 13.02, 'symbols': 'OH', 'magmoms': [ 0.5, 0.5], 'charges': None, 'positions': [[ 0. , 0. , 0.108786], [ 0. , 0. , -0.870284]]}, 'H2O': { 'description': "Water (H2O), C2v symm.", 'name': "H_2O", 'database': 'G2-1', 'enthalpy': -57.8, 'ZPE': 13.2179, 'thermal correction': 2.3720, 'ionization energy': 12.62, 'symbols': 'OHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.119262], [ 0. , 0.763239, -0.477047], [ 0. , -0.763239, -0.477047]]}, 'HF': { 'description': "Hydrogen fluoride (HF), C*v symm.", 'name': "HF", 'database': 'G2-1', 'enthalpy': -65.1, 'ZPE': 5.7994, 'thermal correction': 2.0733, 'ionization energy': 16.03, 'vertical ionization energy': 16.12, 'symbols': 'FH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.093389], [ 0. , 0. , -0.840502]]}, 'SiH2_s1A1d': { 'description': "Singlet silylene (SiH2), C2v symm, 1-A1.", 'name': "SiH_2 (^1A_1)", 'database': 'G2-1', 'enthalpy': 65.2, 'ZPE': 7.1875, 'thermal correction': 2.3927, 'ionization energy': 8.92, 'symbols': 'SiHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.131272], [ 0. , 1.096938, -0.918905], [ 0. , -1.096938, -0.918905]]}, 'SiH2_s3B1d': { 'description': "Triplet silylene (SiH2), C2v symm, 3-B1.", 'name': "SiH_2 (^3B_1)", 'database': 'G2-1', 'enthalpy': 86.2, 'ZPE': 7.4203, 'thermal correction': 2.4078, 'symbols': 'SiHH', 'magmoms': [ 2., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.094869], [ 0. , 1.271862, -0.664083], [ 0. , -1.271862, -0.664083]]}, 'SiH3': { 'description': "Silyl radical (SiH3), C3v symm.", 'name': "SiH_3", 'database': 'G2-1', 'enthalpy': 47.9, 'ZPE': 13.0898, 'thermal correction': 2.4912, 'ionization energy': 8.14, 'vertical ionization energy': 8.74, 'symbols': 'SiHHH', 'magmoms': [ 1., 0., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.079299], [ 0. , 1.41328 , -0.370061], [ 1.223937, -0.70664 , -0.370061], [-1.223937, -0.70664 , -0.370061]]}, 'SiH4': { 'description': "Silane (SiH4), Td symm.", 'name': "SiH_4", 'database': 'G2-1', 'enthalpy': 8.2, 'ZPE': 19.2664, 'thermal correction': 2.5232, 'ionization energy': 11.00, 'vertical ionization energy': 12.30, 'symbols': 'SiHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0.856135, 0.856135, 0.856135], [-0.856135, -0.856135, 0.856135], [-0.856135, 0.856135, -0.856135], [ 0.856135, -0.856135, -0.856135]]}, 'PH2': { 'description': "PH2 radical, C2v symm.", 'name': "PH_2", 'database': 'G2-1', 'enthalpy': 33.1, 'ZPE': 8.2725, 'thermal correction': 2.3845, 'ionization energy': 9.82, 'symbols': 'PHH', 'magmoms': [ 1., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.115396], [ 0. , 1.025642, -0.865468], [ 0. , -1.025642, -0.865468]]}, 'PH3': { 'description': "Phosphine (PH3), C3v symm.", 'name': "PH_3", 'database': 'G2-1', 'enthalpy': 1.3, 'ZPE': 14.7885, 'thermal correction': 2.4203, 'ionization energy': 9.87, 'vertical ionization energy': 10.95, 'symbols': 'PHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.124619], [ 0. , 1.200647, -0.623095], [ 1.039791, -0.600323, -0.623095], [-1.039791, -0.600323, -0.623095]]}, 'SH2': { 'description': "Hydrogen sulfide (H2S), C2v symm.", 'name': "SH_2", 'database': 'G2-1', 'enthalpy': -4.9, 'ZPE': 9.3129, 'thermal correction': 2.3808, 'ionization energy': 10.46, 'vertical ionization energy': 10.50, 'symbols': 'SHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.102135], [ 0. , 0.974269, -0.817083], [ 0. , -0.974269, -0.817083]]}, 'HCl': { 'description': "Hydrogen chloride (HCl), C*v symm.", 'name': "HCl", 'database': 'G2-1', 'enthalpy': -22.1, 'ZPE': 4.1673, 'thermal correction': 2.0739, 'ionization energy': 12.74, 'symbols': 'ClH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.07111 ], [ 0. , 0. , -1.208868]]}, 'Li2': { 'description': "Dilithium (Li2), D*h symm.", 'name': "Li_2", 'database': 'G2-1', 'enthalpy': 51.6, 'ZPE': 0.4838, 'thermal correction': 2.3086, 'ionization energy': 5.11, 'symbols': 'LiLi', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.38653], [ 0. , 0. , -1.38653]]}, 'LiF': { 'description': "Lithium Fluoride (LiF), C*v symm.", 'name': "LiF", 'database': 'G2-1', 'enthalpy': -80.1, 'ZPE': 1.4019, 'thermal correction': 2.0990, 'ionization energy': 11.30, 'symbols': 'LiF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.174965], [ 0. , 0. , 0.391655]]}, 'C2H2': { 'description': "Acetylene (C2H2), D*h symm.", 'name': "C_2H_2", 'database': 'G2-1', 'enthalpy': 54.2, 'ZPE': 16.6001, 'thermal correction': 2.4228, 'ionization energy': 11.40, 'vertical ionization energy': 11.49, 'symbols': 'CCHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.60808], [ 0. , 0. , -0.60808], [ 0. , 0. , -1.67399], [ 0. , 0. , 1.67399]]}, 'C2H4': { 'description': "Ethylene (H2C=CH2), D2h symm.", 'name': "C_2H_4", 'database': 'G2-1', 'enthalpy': 12.5, 'ZPE': 31.5267, 'thermal correction': 2.5100, 'ionization energy': 11.40, 'vertical ionization energy': 11.49, 'symbols': 'CCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.66748 ], [ 0. , 0. , -0.66748 ], [ 0. , 0.922832, 1.237695], [ 0. , -0.922832, 1.237695], [ 0. , 0.922832, -1.237695], [ 0. , -0.922832, -1.237695]]}, 'C2H6': { 'description': "Ethane (H3C-CH3), D3d symm.", 'name': "C_2H_6", 'database': 'G2-1', 'enthalpy': -20.1, 'ZPE': 46.0950, 'thermal correction': 2.7912, 'symbols': 'CCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.762209], [ 0. , 0. , -0.762209], [ 0. , 1.018957, 1.157229], [-0.882443, -0.509479, 1.157229], [ 0.882443, -0.509479, 1.157229], [ 0. , -1.018957, -1.157229], [-0.882443, 0.509479, -1.157229], [ 0.882443, 0.509479, -1.157229]]}, 'CN': { 'description': "Cyano radical (CN), C*v symm, 2-Sigma+.", 'name': "CN", 'database': 'G2-1', 'enthalpy': 104.9, 'ZPE': 3.0183, 'thermal correction': 2.0739, 'ionization energy': 13.60, 'symbols': 'CN', 'magmoms': [ 1., 0.], 'charges': None, 'positions': [[ 0. , 0. , -0.611046], [ 0. , 0. , 0.523753]]}, 'HCN': { 'description': "Hydrogen cyanide (HCN), C*v symm.", 'name': "HCN", 'database': 'G2-1', 'enthalpy': 31.5, 'ZPE': 10.2654, 'thermal correction': 2.1768, 'ionization energy': 13.60, 'vertical ionization energy': 13.61, 'symbols': 'CNH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -0.511747], [ 0. , 0. , 0.664461], [ 0. , 0. , -1.580746]]}, 'CO': { 'description': "Carbon monoxide (CO), C*v symm.", 'name': "CO", 'database': 'G2-1', 'enthalpy': -26.4, 'ZPE': 3.1062, 'thermal correction': 2.0739, 'ionization energy': 14.01, 'vertical ionization energy': 14.01, 'symbols': 'OC', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.493003], [ 0. , 0. , -0.657337]]}, 'HCO': { 'description': "HCO radical, Bent Cs symm.", 'name': "HCO", 'database': 'G2-1', 'enthalpy': 10.0, 'ZPE': 8.0290, 'thermal correction': 2.3864, 'ionization energy': 8.12, 'vertical ionization energy': 9.31, 'symbols': 'COH', 'magmoms': [ 1., 0., 0.], 'charges': None, 'positions': [[ 0.06256 , 0.593926, 0. ], [ 0.06256 , -0.596914, 0. ], [-0.875835, 1.211755, 0. ]]}, 'H2CO': { 'description': "Formaldehyde (H2C=O), C2v symm.", 'name': "H_2CO", 'database': 'G2-1', 'enthalpy': -26.0, 'ZPE': 16.4502, 'thermal correction': 2.3927, 'ionization energy': 10.88, 'vertical ionization energy': 10.88, 'symbols': 'OCHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.683501], [ 0. , 0. , -0.536614], [ 0. , 0.93439 , -1.124164], [ 0. , -0.93439 , -1.124164]]}, 'CH3OH': { 'description': "Methanol (CH3-OH), Cs symm.", 'name': "H_3COH", 'database': 'G2-1', 'enthalpy': -48.0, 'ZPE': 31.6635, 'thermal correction': 2.6832, 'ionization energy': 10.84, 'vertical ionization energy': 10.96, 'symbols': 'COHHHH', 'magmoms': None, 'charges': None, 'positions': [[-0.047131, 0.664389, 0. ], [-0.047131, -0.758551, 0. ], [-1.092995, 0.969785, 0. ], [ 0.878534, -1.048458, 0. ], [ 0.437145, 1.080376, 0.891772], [ 0.437145, 1.080376, -0.891772]]}, 'N2': { 'description': "N2 molecule, D*h symm.", 'name': "N_2", 'database': 'G2-1', 'enthalpy': 0.0, 'ZPE': 3.4243, 'thermal correction': 2.0733, 'ionization energy': 15.58, 'vertical ionization energy': 15.58, 'symbols': 'NN', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.56499], [ 0. , 0. , -0.56499]]}, 'N2H4': { 'description': "Hydrazine (H2N-NH2), C2 symm.", 'name': "H_2NNH_2", 'database': 'G2-1', 'enthalpy': 22.8, 'ZPE': 32.9706, 'thermal correction': 2.6531, 'ionization energy': 8.10, 'vertical ionization energy': 8.98, 'symbols': 'NNHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.718959, -0.077687], [ 0. , -0.718959, -0.077687], [ 0.211082, 1.092752, 0.847887], [-0.948214, 1.005026, -0.304078], [-0.211082, -1.092752, 0.847887], [ 0.948214, -1.005026, -0.304078]]}, 'NO': { 'description': "NO radical, C*v symm, 2-Pi.", 'name': "NO", 'database': 'G2-1', 'enthalpy': 21.6, 'ZPE': 2.7974, 'thermal correction': 2.0745, 'ionization energy': 9.26, 'vertical ionization energy': 9.26, 'symbols': 'NO', 'magmoms': [ 0.6, 0.4], 'charges': None, 'positions': [[ 0. , 0. , -0.609442], [ 0. , 0. , 0.533261]]}, 'O2': { 'description': "O2 molecule, D*h symm, Triplet.", 'name': "O_2", 'database': 'G2-1', 'enthalpy': 0.0, 'ZPE': 2.3444, 'thermal correction': 2.0752, 'ionization energy': 12.07, 'vertical ionization energy': 12.30, 'symbols': 'OO', 'magmoms': [ 1., 1.], 'charges': None, 'positions': [[ 0. , 0. , 0.622978], [ 0. , 0. , -0.622978]]}, 'H2O2': { 'description': "Hydrogen peroxide (HO-OH), C2 symm.", 'name': "HOOH", 'database': 'G2-1', 'enthalpy': -32.5, 'ZPE': 16.4081, 'thermal correction': 2.6230, 'ionization energy': 10.58, 'vertical ionization energy': 11.70, 'symbols': 'OOHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.734058, -0.05275 ], [ 0. , -0.734058, -0.05275 ], [ 0.839547, 0.880752, 0.422001], [-0.839547, -0.880752, 0.422001]]}, 'F2': { 'description': "F2 molecule, D*h symm.", 'name': "F_2", 'database': 'G2-1', 'enthalpy': 0.0, 'ZPE': 1.5179, 'thermal correction': 2.0915, 'ionization energy': 15.70, 'vertical ionization energy': 15.70, 'symbols': 'FF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.710304], [ 0. , 0. , -0.710304]]}, 'CO2': { 'description': "Carbon dioxide (CO2), D*h symm.", 'name': "CO_2", 'database': 'G2-1', 'enthalpy': -94.1, 'ZPE': 7.3130, 'thermal correction': 2.2321, 'ionization energy': 13.78, 'vertical ionization energy': 13.78, 'symbols': 'COO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 0. , 1.178658], [ 0. , 0. , -1.178658]]}, 'Na2': { 'description': "Disodium (Na2), D*h symm.", 'name': "Na_2", 'database': 'G2-1', 'enthalpy': 34.0, 'ZPE': 0.2246, 'thermal correction': 2.4699, 'ionization energy': 4.89, 'symbols': 'NaNa', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.576262], [ 0. , 0. , -1.576262]]}, 'Si2': { 'description': "Si2 molecule, D*h symm, Triplet (3-Sigma-G-).", 'name': "Si_2", 'database': 'G2-1', 'enthalpy': 139.9, 'ZPE': 0.7028, 'thermal correction': 2.2182, 'ionization energy': 7.90, 'symbols': 'SiSi', 'magmoms': [ 1., 1.], 'charges': None, 'positions': [[ 0. , 0. , 1.130054], [ 0. , 0. , -1.130054]]}, 'P2': { 'description': "P2 molecule, D*h symm.", 'name': "P_2", 'database': 'G2-1', 'enthalpy': 34.3, 'ZPE': 1.1358, 'thermal correction': 2.1235, 'ionization energy': 10.53, 'vertical ionization energy': 10.62, 'symbols': 'PP', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.966144], [ 0. , 0. , -0.966144]]}, 'S2': { 'description': "S2 molecule, D*h symm, triplet.", 'name': "S_2", 'database': 'G2-1', 'enthalpy': 30.7, 'ZPE': 1.0078, 'thermal correction': 2.1436, 'ionization energy': 9.36, 'vertical ionization energy': 9.55, 'symbols': 'SS', 'magmoms': [ 1., 1.], 'charges': None, 'positions': [[ 0. , 0. , 0.960113], [ 0. , 0. , -0.960113]]}, 'Cl2': { 'description': "Cl2 molecule, D*h symm.", 'name': "Cl_2", 'database': 'G2-1', 'enthalpy': 0.0, 'ZPE': 0.7737, 'thermal correction': 2.1963, 'ionization energy': 11.48, 'vertical ionization energy': 11.49, 'symbols': 'ClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.007541], [ 0. , 0. , -1.007541]]}, 'NaCl': { 'description': "Sodium Chloride (NaCl), C*v symm.", 'name': "NaCl", 'database': 'G2-1', 'enthalpy': -43.6, 'ZPE': 0.5152, 'thermal correction': 2.2935, 'ionization energy': 9.20, 'vertical ionization energy': 9.80, 'symbols': 'NaCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.45166], [ 0. , 0. , 0.93931]]}, 'SiO': { 'description': "Silicon monoxide (SiO), C*v symm.", 'name': "SiO", 'database': 'G2-1', 'enthalpy': -24.6, 'ZPE': 1.7859, 'thermal correction': 2.0821, 'ionization energy': 11.49, 'symbols': 'SiO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.560846], [ 0. , 0. , -0.98148 ]]}, 'CS': { 'description': "Carbon monosulfide (CS), C*v symm.", 'name': "SC", 'database': 'G2-1', 'enthalpy': 66.9, 'ZPE': 1.8242, 'thermal correction': 2.0814, 'ionization energy': 11.33, 'symbols': 'CS', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.123382], [ 0. , 0. , 0.421268]]}, 'SO': { 'description': "Sulfur monoxide (SO), C*v symm, triplet.", 'name': "SO", 'database': 'G2-1', 'enthalpy': 1.2, 'ZPE': 1.6158, 'thermal correction': 2.0877, 'ionization energy': 11.29, 'symbols': 'OS', 'magmoms': [ 1., 1.], 'charges': None, 'positions': [[ 0. , 0. , -1.015992], [ 0. , 0. , 0.507996]]}, 'ClO': { 'description': "ClO radical, C*v symm, 2-PI.", 'name': "ClO", 'database': 'G2-1', 'enthalpy': 24.2, 'ZPE': 1.1923, 'thermal correction': 2.1172, 'ionization energy': 10.89, 'vertical ionization energy': 11.01, 'symbols': 'ClO', 'magmoms': [ 1., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.514172], [ 0. , 0. , -1.092615]]}, 'ClF': { 'description': "ClF molecule, C*v symm, 1-SG.", 'name': "FCl", 'database': 'G2-1', 'enthalpy': -13.2, 'ZPE': 1.1113, 'thermal correction': 2.1273, 'ionization energy': 12.66, 'vertical ionization energy': 12.77, 'symbols': 'FCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.084794], [ 0. , 0. , 0.574302]]}, 'Si2H6': { 'description': "Disilane (H3Si-SiH3), D3d symm.", 'name': "Si_2H_6", 'database': 'G2-1', 'enthalpy': 19.1, 'ZPE': 30.2265, 'thermal correction': 3.7927, 'ionization energy': 9.74, 'vertical ionization energy': 10.53, 'symbols': 'SiSiHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.167683], [ 0. , 0. , -1.167683], [ 0. , 1.393286, 1.68602 ], [-1.206621, -0.696643, 1.68602 ], [ 1.206621, -0.696643, 1.68602 ], [ 0. , -1.393286, -1.68602 ], [-1.206621, 0.696643, -1.68602 ], [ 1.206621, 0.696643, -1.68602 ]]}, 'CH3Cl': { 'description': "Methyl chloride (CH3Cl), C3v symm.", 'name': "CH_3Cl", 'database': 'G2-1', 'enthalpy': -19.6, 'ZPE': 23.3013, 'thermal correction': 2.4956, 'symbols': 'CClHHH', 'ionization energy': 11.26, 'vertical ionization energy': 11.29, 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.121389], [ 0. , 0. , 0.655951], [ 0. , 1.029318, -1.47428 ], [ 0.891415, -0.514659, -1.47428 ], [-0.891415, -0.514659, -1.47428 ]]}, 'CH3SH': { 'description': "Methanethiol (H3C-SH), Staggered, Cs symm.", 'name': "H_3CSH", 'database': 'G2-1', 'enthalpy': -5.5, 'ZPE': 28.3973, 'thermal correction': 2.8690, 'ionization energy': 9.44, 'vertical ionization energy': 9.44, 'symbols': 'CSHHHH', 'magmoms': None, 'charges': None, 'positions': [[-0.047953, 1.149519, 0. ], [-0.047953, -0.664856, 0. ], [ 1.283076, -0.823249, 0. ], [-1.092601, 1.461428, 0. ], [ 0.432249, 1.551207, 0.892259], [ 0.432249, 1.551207, -0.892259]]}, 'HOCl': { 'description': "HOCl molecule, Cs symm.", 'name': "HOCl", 'database': 'G2-1', 'enthalpy': -17.8, 'ZPE': 8.1539, 'thermal correction': 2.4416, 'ionization energy': 11.12, 'symbols': 'OHCl', 'magmoms': None, 'charges': None, 'positions': [[ 0.036702, 1.113517, 0. ], [-0.917548, 1.328879, 0. ], [ 0.036702, -0.602177, 0. ]]}, 'SO2': { 'description': "Sulfur dioxide (SO2), C2v symm.", 'name': "SO_2", 'database': 'G2-1', 'enthalpy': -71.0, 'ZPE': 4.3242, 'thermal correction': 2.5245, 'ionization energy': 12.35, 'vertical ionization energy': 12.50, 'symbols': 'SOO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.370268], [ 0. , 1.277617, -0.370268], [ 0. , -1.277617, -0.370268]]}, } def get_ionization_energy(name, vertical=True): """Return the experimental ionization energy from the database. If vertical is True, the vertical ionization energy is returned if available. """ if name not in data: raise KeyError('System %s not in database.' % name) elif 'ionization energy' not in data[name]: raise KeyError('No data on ionization energy for system %s.' % name) else: if vertical and 'vertical ionization energy' in data[name]: return data[name]['vertical ionization energy'] else: return data[name]['ionization energy'] def get_atomization_energy(name): """Determine extrapolated experimental atomization energy from the database. The atomization energy is extrapolated from experimental heats of formation at room temperature, using calculated zero-point energies and thermal corrections. The atomization energy is returned in kcal/mol = 43.36 meV: >>> from ase.units import *; print kcal / mol 0.0433641146392 """ d = data[name] e = d['enthalpy'] z = d['ZPE'] dh = d['thermal correction'] ae = -e + z + dh for a in string2symbols(d['symbols']): h = data[a]['enthalpy'] dh = data[a]['thermal correction'] ae += h - dh return ae ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_1_ref.py000066400000000000000000000244051316323560300234130ustar00rootroot00000000000000# atomization energies in kcal / mol (= 43.364 meV) # All values evaluated with PBE xc-orbitals and densities at # experimental geometries. Zero-point vibration has been removed # from experimental energies (from [1]). atomization = { # Molec expt LSD PBE RPBE BLYP 'H2' : ( 109.5, 113.2, 104.6, 105.5, 109.4), 'LiH' : ( 57.8, 61.0, 53.5, 53.4, 58.1), 'CH4' : ( 419.3, 462.3, 419.8, 410.6, 416.6), 'NH3' : ( 297.4, 337.3, 301.7, 293.2, 301.4), 'OH' : ( 106.4, 124.1, 109.8, 106.3, 109.6), 'H2O' : ( 232.2, 266.5, 234.2, 226.6, 232.5), 'HF' : ( 140.8, 162.2, 142.0, 137.5, 141.0), 'Li2' : ( 24.4, 23.9, 19.9, 20.2, 20.5), 'LiF' : ( 138.9, 156.1, 138.6, 132.9, 140.1), 'Be2' : ( 3.0, 12.8, 9.8, 7.9, 6.1), 'C2H2': ( 405.4, 460.3, 414.9, 400.4, 405.3), 'C2H4': ( 562.6, 632.6, 571.5, 554.5, 560.7), 'HCN' : ( 311.9, 361.0, 326.1, 313.6, 320.3), 'CO' : ( 259.3, 299.1, 268.8, 257.9, 261.8), 'N2' : ( 228.5, 267.4, 243.2, 232.7, 239.8), 'NO' : ( 152.9, 198.7, 171.9, 161.6, 166.0), 'O2' : ( 120.5, 175.0, 143.7, 133.3, 135.3), 'F2' : ( 38.5, 78.2, 53.4, 45.6, 49.4), 'P2' : ( 117.3, 143.8, 121.1, 114.1, 121.0), 'Cl2' : ( 58.0, 83.0, 65.1, 58.9, 57.2) } # exchange-only atomization energies in kcal / mol (= 43.364 meV) # All values evaluated with PBE xc-orbitals and densities at # experimental geometries. (from [1]). ex_atomization = { # Molec exact LSD PBE RPBE BLYP 'H2' : ( 84.0, 81.5, 84.8, 85.8, 85.4), 'LiH' : ( 33.9, 33.6, 36.9, 36.8, 36.2), 'CH4' : ( 327.2, 369.9, 336.0, 326.9, 331.2), 'NH3' : ( 199.5, 255.0, 227.4, 218.9, 222.6), 'OH' : ( 67.3, 96.2, 84.5, 80.9, 82.7), 'H2O' : ( 154.6, 212.9, 183.9, 176.4, 180.5), 'HF' : ( 96.1, 136.1, 117.1, 112.6, 115.4), 'Li2' : ( 3.5, 6.5, 6.4, 6.7, 3.9), 'LiF' : ( 86.8, 129.7, 116.5, 110.8, 113.6), 'Be2' : ( -11.0, 9.4, 3.1, 1.2, 1.6), 'C2H2': ( 290.6, 382.7, 333.0, 318.5, 325.5), 'C2H4': ( 423.9, 517.7, 456.5, 439.6, 447.4), 'HCN' : ( 194.5, 294.0, 256.1, 243.5, 249.1), 'CO' : ( 169.2, 261.9, 224.0, 213.1, 218.7), 'N2' : ( 110.2, 211.4, 184.1, 173.6, 177.6), 'NO' : ( 45.6, 156.9, 122.8, 112.5, 117.0), 'O2' : ( 24.9, 147.5, 104.4, 94.1, 99.3), 'F2' : ( -43.3, 64.0, 32.5, 24.7, 28.8), 'P2' : ( 31.8, 98.4, 73.1, 66.1, 70.1), 'Cl2' : ( 15.5, 68.2, 39.8, 33.7, 37.0) } # Exchange energy of some spherical atoms in Hartrees (= 27.211 eV) # All functionals were evaluated with self-consistent exchange-only # OEP orbitals and densities (from [1]). ex_energy = { # Atom exact LSD PBE RPBE BLYP 'H' : ( 0.3125, 0.2680, 0.3059, 0.3112, 0.3098), 'He' : ( 1.0258, 0.8840, 1.0136, 1.0313, 1.0255), 'Li' : ( 1.7807, 1.5379, 1.7572, 1.7876, 1.7753), 'Be' : ( 2.6658, 2.3124, 2.6358, 2.6801, 2.6578), 'N' : ( 6.6044, 5.9008, 6.5521, 6.6252, 6.5961), 'Ne' : ( 12.1050, 11.0335, 12.0667, 12.1593, 12.1378), 'Na' : ( 14.0131, 12.7859, 13.9506, 14.0528, 14.0304), 'Mg' : ( 15.9884, 14.6117, 15.9147, 16.0260, 16.0005), 'P' : ( 22.6341, 20.7931, 22.5028, 22.6369, 22.6221), 'Ar' : ( 30.1747, 27.8632, 29.9961, 30.1494, 30.1535), 'Kr' : ( 93.8330, 88.6245, 93.4257, 93.6645, 93.8721), 'Xe' : ( 179.0635, 170.5660, 178.2450, 178.5649, 179.0427) } # Correlation energy of some spherical atoms in Hartrees (= 27.211 eV) # All functionals were evaluated with self-consistent exchange-only # OEP orbitals and densities (from [1]). # 'Exact' values are from reference [2] ec_energy = { # Atom exact LSD PBE BLYP 'H' : ( 0.0000, 0.0222, 0.0060, 0.0000), 'He' : ( 0.0420, 0.1125, 0.0420, 0.0438), 'Li' : ( 0.0455, 0.1508, 0.0514, 0.0534), 'Be' : ( 0.0950, 0.2240, 0.0856, 0.0945), 'N' : ( 0.1858, 0.4268, 0.1799, 0.1919), 'Ne' : ( 0.3929, 0.7428, 0.3513, 0.3835), 'Na' : ( 0.3988, 0.8010, 0.3715, 0.4083), 'Mg' : ( 0.4424, 0.8874, 0.4110, 0.4594), 'P' : ( 0.5446, 1.1127, 0.5265, 0.5664), 'Ar' : ( 0.7314, 1.4242, 0.7067, 0.7508), 'Kr' : ( 3.2693, 1.7672, 1.7486, 2.0788), 'Xe' : ( 5.1773, 2.9184, 2.7440, 3.1789) } # atomization energies in kcal / mol (= 43.364 meV). # All values evaluated with self-consistent orbitals and densities. # Geometry optimization to within 10meV/Ang. # Data from reference [3]. atomization_vasp = { # Molecule Expt. PBE_VASP PBE_G03 PBE0_VASP PBE0_G03 'LiH' : ( 58, 53.5, 53.5, 52.6, 52.9,), 'BeH' : ( 48, 55.5, 55.6, 55.4, 56.0,), 'CH' : ( 84, 84.7, 84.8, 83.3, 83.0,), 'CH2_s3B1d' : ( 189, 194.4, 194.6, 193.9, 193.8,), 'CH2_s1A1d' : ( 182, 178.8, 179.1, 176.3, 176.5,), 'CH3' : ( 306, 309.7, 310.1, 308.3, 308.6,), 'CH4' : ( 420, 419.6, 420.2, 417.2, 417.9,), 'NH' : ( 82, 88.6, 88.6, 85.2, 85.3,), 'NH2' : ( 182, 188.7, 188.9, 183.4, 183.3,), 'NH3' : ( 297, 301.7, 302.3, 294.7, 295.3,), 'OH' : ( 107, 109.7, 110.1, 105.4, 105.8,), 'H2O' : ( 233, 233.7, 234.5, 226.4, 227.3,), 'HF' : ( 142, 141.5, 142.2, 136.2, 137.0,), 'SiH2_s1A1d': ( 154, 147.9, 148.0, 147.2, 147.4,), 'SiH2_s3B1d': ( 131, 131.3, 131.8, 132.2, 132.5,), 'SiH3' : ( 226, 222.2, 222.6, 223.5, 223.8,), 'SiH4' : ( 324, 313.3, 313.7, 315.0, 315.7,), 'PH2' : ( 153, 154.5, 154.6, 153.0, 153.2,), 'PH3' : ( 241, 239.0, 239.3, 237.3, 237.5,), 'SH2' : ( 182, 182.0, 182.2, 179.8, 180.0,), 'HCl' : ( 107, 106.3, 106.5, 104.4, 105.0,), 'Li2' : ( 26, 19.9, 20.1, 19.3, 19.3,), 'LiF' : ( 139, 138.4, 139.0, 131.0, 131.9,), 'C2H2' : ( 404, 414.5, 415.1, 404.5, 404.7,), 'C2H4' : ( 562, 571.0, 571.9, 563.8, 564.2,), 'C2H6' : ( 711, 716.0, 717.1, 711.6, 712.4,), 'CN' : ( 179, 197.5, 197.7, 179.1, 179.1,), 'HCN' : ( 313, 326.3, 326.5, 311.1, 311.5,), 'CO' : ( 261, 268.6, 269.1, 255.3, 255.8,), 'HCO' : ( 279, 294.9, 295.5, 280.5, 280.9,), 'H2CO' : ( 376, 385.5, 386.3, 371.9, 372.8,), 'CH3OH' : ( 513, 519.3, 520.4, 509.0, 510.3,), 'N2' : ( 227, 243.7, 243.9, 225.3, 225.9,), 'N2H4' : ( 437, 452.7, 453.7, 437.9, 438.8,), 'NO' : ( 153, 172.0, 172.5, 153.3, 153.8,), 'O2' : ( 118, 143.3, 144.0, 124.1, 124.9,), 'H2O2' : ( 268, 281.6, 282.6, 262.7, 263.8,), 'F2' : ( 38, 52.6, 53.0, 35.2, 35.3,), 'CO2' : ( 392, 415.4, 416.5, 390.8, 392.0,), 'Na2' : ( 19, 17.7, 18.1, 15.6, 15.9,), 'Si2' : ( 74, 81.3, 81.4, 76.5, 77.3,), 'P2' : ( 116, 121.5, 121.7, 111.8, 111.7,), 'S2' : ( 98, 115.4, 115.2, 107.3, 107.0,), 'Cl2' : ( 57, 65.8, 65.8, 60.1, 59.9,), 'NaCl' : ( 99, 93.6, 94.5, 92.1, 93.6,), 'SiO' : ( 191, 195.6, 196.6, 182.2, 183.3,), 'CS' : ( 172, 179.5, 179.6, 168.0, 168.2,), 'SO' : ( 122, 141.5, 141.3, 127.9, 127.3,), 'ClO' : ( 62, 81.6, 81.5, 67.4, 67.6,), 'ClF' : ( 62, 72.3, 72.5, 61.3, 61.3,), 'Si2H6' : ( 533, 519.5, 520.4, 522.2, 523.3,), 'CH3Cl' : ( 395, 399.4, 400.2, 395.0, 395.7,), 'CH3SH' : ( 473, 477.8, 478.6, 472.7, 473.5,), 'HOCl' : ( 165, 175.2, 175.7, 162.9, 163.3,), 'SO2' : ( 253, 281.1, 280.7, 254.1, 253.5,), } # Experimental, and calculated bindinglengths of 16 diatomic molecules # of the G2-1 test set. In Angstroms. # Data from reference [3]. diatomic = { #System Expt. PBEVASP PBEG03 PBE0VASP PBE0G03 'BeH': (1.343, 1.354, 1.353, 1.350, 1.348), 'CH' : (1.120, 1.136, 1.136, 1.124, 1.124), 'Cl2': (1.988, 1.999, 2.004, 1.973, 1.978), 'ClF': (1.628, 1.648, 1.650, 1.614, 1.617), 'ClO': (1.570, 1.576, 1.577, 1.554, 1.555), 'CN' : (1.172, 1.173, 1.174, 1.159, 1.159), 'CO' : (1.128, 1.136, 1.135, 1.122, 1.122), 'F2' : (1.412, 1.414, 1.413, 1.377, 1.376), 'FH' : (0.917, 0.932, 0.930, 0.919, 0.918), 'HCl': (1.275, 1.287, 1.288, 1.276, 1.278), 'Li2': (2.673, 2.728, 2.728, 2.727, 2.727), 'LiF': (1.564, 1.583, 1.575, 1.571, 1.561), 'LiH': (1.595, 1.604, 1.604, 1.602, 1.597), 'N2' : (1.098, 1.103, 1.102, 1.089, 1.089), 'O2' : (1.208, 1.218, 1.218, 1.193, 1.192), 'Na2': (3.079, 3.087, 3.076, 3.086, 3.086), } ## Note the difference between the experimental data from Blaha [1] and ## from Kresse [3]: ## Mol BLAHA KRESSE ## LiH : 57.8 58.0 ## CH4 : 419.3 420.0 ## NH3 : 297.4 297.0 ## OH : 106.4 107.0 ## H2O : 232.2 233.0 ## HF : 140.8 142.0 ## Li2 : 24.4 26.0 ## LiF : 138.9 139.0 ## C2H2: 405.4 404.0 ## C2H4: 562.6 562.0 ## HCN : 311.9 313.0 ## CO : 259.3 261.0 ## N2 : 228.5 227.0 ## NO : 152.9 153.0 ## O2 : 120.5 118.0 ## F2 : 38.5 38.0 ## P2 : 117.3 116.0 ## Cl2 : 58.0 57.0 ## ----------------- ## MAE : 0.0 1.0 ## and the difference between the PBE results of Blaha [1] and those from ## VASP and GAUSSIAN-03 [3] ## Mol BLAHA VASP G03 ## LiH : 53.5 53.5 53.5 ## CH4 : 419.8 419.6 420.2 ## NH3 : 301.7 301.7 302.3 ## OH : 109.8 109.7 110.1 ## H2O : 234.2 233.7 234.5 ## HF : 142.0 141.5 142.2 ## Li2 : 19.9 19.9 20.1 ## LiF : 138.6 138.4 139.0 ## C2H2: 414.9 414.5 415.1 ## C2H4: 571.5 571.0 571.9 ## HCN : 326.1 326.3 326.5 ## CO : 268.8 268.6 269.1 ## N2 : 243.2 243.7 243.9 ## NO : 171.9 172.0 172.5 ## O2 : 143.7 143.3 144.0 ## F2 : 53.4 52.6 53.0 ## P2 : 121.1 121.5 121.7 ## Cl2 : 65.1 65.8 65.8 ## ----------------------- ## MAE : 0.0 0.3 0.4 ## ## Where in the last two, geometry optimization has been performed, but not in ## the first. # References: # [1]: # Kurth, Perdew, and Blaha # Molecular and Solid-State Tests of Density Functional Approximations # International Journal of Quantum Chemistry, Vol. 85, 889-909 (1999) # [2]: # Krieger, Chen, Iafrate, and Savin # In Electron Correlations and Materials Properties # Gonis and Kioussis; eds. # Plenum: New York, 1999. # [3]: # Paier, Hirschl, Marsman, and Kresse # The Perdew-Burke-Ernzerhof exchange-correlation functional applied to the # G2-1 test set using a plane wave basis set # The Journal of Chemical Physics, Vol 122, 234102 (2005) def convert(input, column): keys = sorted(input.keys()) data = {} for k in keys: data[k] = input[k][column] return data ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_1_ref_g03.py000066400000000000000000000011271316323560300240600ustar00rootroot00000000000000from ase.data.g2_1_ref import convert from ase.data.g2_1_ref import atomization_vasp from ase.data.g2_1_ref import diatomic info = {} info['atomization energy'] = {} info['atomization energy'].update({'reference': convert(atomization_vasp, 0)}) info['atomization energy'].update({'PBE': convert(atomization_vasp, 2)}) info['atomization energy'].update({'PBE0': convert(atomization_vasp, 4)}) info['bondlength'] = {} info['bondlength'].update({'reference': convert(diatomic, 0)}) info['bondlength'].update({'PBE': convert(diatomic, 2)}) info['bondlength'].update({'PBE0': convert(diatomic, 4)}) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_1_ref_vasp.py000066400000000000000000000011271316323560300244400ustar00rootroot00000000000000from ase.data.g2_1_ref import convert from ase.data.g2_1_ref import atomization_vasp from ase.data.g2_1_ref import diatomic info = {} info['atomization energy'] = {} info['atomization energy'].update({'reference': convert(atomization_vasp, 0)}) info['atomization energy'].update({'PBE': convert(atomization_vasp, 1)}) info['atomization energy'].update({'PBE0': convert(atomization_vasp, 3)}) info['bondlength'] = {} info['bondlength'].update({'reference': convert(diatomic, 0)}) info['bondlength'].update({'PBE': convert(diatomic, 1)}) info['bondlength'].update({'PBE0': convert(diatomic, 3)}) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_1_ref_wien97.py000066400000000000000000000007311316323560300246110ustar00rootroot00000000000000from ase.data.g2_1_ref import convert from ase.data.g2_1_ref import atomization info = {} info['atomization energy'] = {} info['atomization energy'].update({'reference': convert(atomization, 0)}) info['atomization energy'].update({'LSD': convert(atomization, 1)}) info['atomization energy'].update({'PBE': convert(atomization, 2)}) info['atomization energy'].update({'RPBE': convert(atomization, 3)}) info['atomization energy'].update({'BLYP': convert(atomization, 4)}) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/g2_2.py000066400000000000000000001771161316323560300225700ustar00rootroot00000000000000""" The following contains a database of small molecules Data for the G2/97 database are from Raghavachari, Redfern, and Pople, J. Chem. Phys. Vol. 106, 1063 (1997). See http://www.cse.anl.gov/Catalysis_and_Energy_Conversion/Computational_Thermochemistry.shtml for the original files. All numbers are experimental values, except for coordinates, which are MP2(full)/6-31G(d) optimized geometries (from http://www.cse.anl.gov/OldCHMwebsiteContent/compmat/G2-97.htm) Atomic species: ref: Curtiss et al. JCP 106, 1063 (1997). 'Enthalpy' is the experimental enthalpies of formation at 0K 'thermal correction' is the thermal corrections H(298)-H(0) Molecular species: ref: Staroverov et al. JCP 119, 12129 (2003) 'Enthalpy' is the experimental enthalpies of formation at 298K 'ZPE' is the zero-point energies 'thermal correction' is the thermal enthalpy corrections H(298K) - H_exp(0K) ZPE and thermal corrections are estimated from B3LYP geometries and vibrations. For details about G2-1 and G2-2 sets see doi:10.1063/1.477422. Experimental ionization potentials are from http://srdata.nist.gov/cccbdb/ Information presented on these pages is considered public information and may be distributed or copied http://www.nist.gov/public_affairs/disclaimer.cfm """ from ase.atoms import Atoms atom_names = ['H','B','C','N','O','F','Al','Si','S','Cl'] molecule_names = ['BF3','BCl3','AlF3','AlCl3','CF4','CCl4','OCS','CS2','COF2','SiF4','SiCl4','N2O','ClNO','NF3','PF3','O3','F2O','ClF3','C2F4','C2Cl4','CF3CN','C3H4_C3v','C3H4_D2d','C3H4_C2v','C3H6_Cs','C3H6_D3h','C3H8','butadiene','2-butyne','methylenecyclopropane','bicyclobutane','cyclobutene','cyclobutane','isobutene','trans-butane','isobutane','C5H8','C6H6','H2CF2','HCF3','H2CCl2','HCCl3','H3CNH2','CH3CN','CH3NO2','CH3ONO','CH3SiH3','HCOOH','HCOOCH3','CH3CONH2','CH2NHCH2','NCCN','C2H6NH','CH3CH2NH2','H2CCO','CH2OCH2','CH3CHO','OCHCHO','CH3CH2OH','CH3OCH3','CH2SCH2','C2H6SO','CH3CH2SH','CH3SCH3','H2CCHF','CH3CH2Cl','H2CCHCl','H2CCHCN','CH3COCH3','CH3COOH','CH3COF','CH3COCl','C3H7Cl','C2H6CHOH','CH3CH2OCH3','C3H9N','C4H4O','C4H4S','C4H4NH','C5H5N','H2','SH','CCH','C2H3','CH3CO','H2COH','CH3O','CH3CH2O','CH3S','C2H5','C3H7','C3H9C','NO2'] data = { 'B': { 'name': 'Boron', 'database': 'G2-2', 'symbols': 'B', 'magmoms': [1.], 'charges': None, 'enthalpy': 136.20, 'thermal correction': 0.29, 'ionization energy': 8.30, 'positions': [[ 0. , 0. , 0.]], }, 'Al': { 'name': 'Aluminium', 'database': 'G2-2', 'symbols': 'Al', 'magmoms': [1.], 'charges': None, 'enthalpy': 78.23, 'thermal correction': 1.08, 'ionization energy': 5.99, 'positions': [[ 0. , 0. , 0.]], }, 'BF3': { 'description': "BF3, Planar D3h symm.", 'name': "BF_3", 'database': 'G2-2', 'enthalpy': -271.4, 'ZPE': 7.8257, 'thermal correction': 2.7893, 'symbols': 'BFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 1.32176 , 0. ], [ 1.144678, -0.66088 , 0. ], [-1.144678, -0.66088 , 0. ]]}, 'BCl3': { 'description': "BCl3, Planar D3h symm.", 'name': "BCl_3", 'database': 'G2-2', 'enthalpy': -96.3, 'ZPE': 4.6536, 'thermal correction': 3.3729, 'symbols': 'BClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 1.735352, 0. ], [ 1.502859, -0.867676, 0. ], [-1.502859, -0.867676, 0. ]]}, 'AlF3': { 'description': "AlF3, Planar D3h symm.", 'name': "AlF_3", 'database': 'G2-2', 'enthalpy': -289.0, 'ZPE': 4.8645, 'thermal correction': 3.3986, 'symbols': 'AlFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 1.64472 , 0. ], [ 1.424369, -0.82236 , 0. ], [-1.424369, -0.82236 , 0. ]]}, 'AlCl3': { 'description': "AlCl3, Planar D3h symm.", 'name': "AlCl_3", 'database': 'G2-2', 'enthalpy': -139.7, 'ZPE': 2.9687, 'thermal correction': 3.9464, 'symbols': 'AlClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 2.069041, 0. ], [ 1.791842, -1.03452 , 0. ], [-1.791842, -1.03452 , 0. ]]}, 'CF4': { 'description': "CF4, Td symm.", 'name': "CF_4", 'database': 'G2-2', 'enthalpy': -223.0, 'ZPE': 10.5999, 'thermal correction': 3.0717, 'symbols': 'CFFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0.767436, 0.767436, 0.767436], [-0.767436, -0.767436, 0.767436], [-0.767436, 0.767436, -0.767436], [ 0.767436, -0.767436, -0.767436]]}, 'CCl4': { 'description': "CCl4, Td symm.", 'name': "CCl_4", 'database': 'G2-2', 'enthalpy': -22.9, 'ZPE': 5.7455, 'thermal correction': 4.1754, 'symbols': 'CClClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 1.02134, 1.02134, 1.02134], [-1.02134, -1.02134, 1.02134], [-1.02134, 1.02134, -1.02134], [ 1.02134, -1.02134, -1.02134]]}, 'OCS': { 'description': "O=C=S, Linear, C*v symm.", 'name': "COS", 'database': 'G2-2', 'enthalpy': -33.1, 'ZPE': 5.7706, 'thermal correction': 2.3663, 'symbols': 'OCS', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.699243], [ 0. , 0. , -0.520492], [ 0. , 0. , 1.044806]]}, 'CS2': { 'description': "CS2, Linear, D*h symm.", 'name': "CS_2", 'database': 'G2-2', 'enthalpy': 28.0, 'ZPE': 4.3380, 'thermal correction': 2.5326, 'symbols': 'SCS', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.561117], [ 0. , 0. , 0. ], [ 0. , 0. , -1.561117]]}, 'COF2': { 'description': "COF2, C2v symm.", 'name': "COF_2", 'database': 'G2-2', 'enthalpy': -149.1, 'ZPE': 8.8215, 'thermal correction': 2.6619, 'symbols': 'OCFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.330715], [ 0. , 0. , 0.144358], [ 0. , 1.06949 , -0.639548], [ 0. , -1.06949 , -0.639548]]}, 'SiF4': { 'description': "SiF4, Td symm.", 'name': "SiF_4", 'database': 'G2-2', 'enthalpy': -386.0, 'ZPE': 7.8771, 'thermal correction': 3.7054, 'symbols': 'SiFFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0.912806, 0.912806, 0.912806], [-0.912806, -0.912806, 0.912806], [-0.912806, 0.912806, -0.912806], [ 0.912806, -0.912806, -0.912806]]}, 'SiCl4': { 'description': "SiCl4, Td symm.", 'name': "SiCl_4", 'database': 'G2-2', 'enthalpy': -158.4, 'ZPE': 4.4396, 'thermal correction': 4.7182, 'symbols': 'SiClClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 1.169349, 1.169349, 1.169349], [-1.169349, -1.169349, 1.169349], [ 1.169349, -1.169349, -1.169349], [-1.169349, 1.169349, -1.169349]]}, 'N2O': { 'description': "N2O, Cs symm.", 'name': "N_2O", 'database': 'G2-2', 'enthalpy': 19.6, 'ZPE': 6.9748, 'thermal correction': 2.2710, 'symbols': 'NNO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.231969], [ 0. , 0. , -0.060851], [ 0. , 0. , 1.131218]]}, 'ClNO': { 'description': "ClNO, Cs symm.", 'name': "ClNO", 'database': 'G2-2', 'enthalpy': 12.4, 'ZPE': 4.0619, 'thermal correction': 2.7039, 'symbols': 'ClNO', 'magmoms': None, 'charges': None, 'positions': [[-0.537724, -0.961291, 0. ], [ 0. , 0.997037, 0. ], [ 1.142664, 1.170335, 0. ]]}, 'NF3': { 'description': "NF3, C3v symm.", 'name': "NF_3", 'database': 'G2-2', 'enthalpy': -31.6, 'ZPE': 6.4477, 'thermal correction': 2.8301, 'symbols': 'NFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.489672], [ 0. , 1.238218, -0.126952], [ 1.072328, -0.619109, -0.126952], [-1.072328, -0.619109, -0.126952]]}, 'PF3': { 'description': "PF3, C3v symm.", 'name': "PF_3", 'database': 'G2-2', 'enthalpy': -229.1, 'ZPE': 5.2981, 'thermal correction': 3.1288, 'symbols': 'PFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.506767], [ 0. , 1.383861, -0.281537], [ 1.198459, -0.691931, -0.281537], [-1.198459, -0.691931, -0.281537]]}, 'O3': { 'description': "O3 (Ozone), C2v symm.", 'name': "O_3", 'database': 'G2-2', 'enthalpy': 34.1, 'ZPE': 4.6178, 'thermal correction': 2.4479, 'symbols': 'OOO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.10381 , -0.228542], [ 0. , 0. , 0.457084], [ 0. , -1.10381 , -0.228542]]}, 'F2O': { 'description': "F2O, C2v symm.", 'name': "F_2O", 'database': 'G2-2', 'enthalpy': 5.9, 'ZPE': 3.4362, 'thermal correction': 2.5747, 'symbols': 'FOF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.110576, -0.273729], [ 0. , 0. , 0.61589 ], [ 0. , -1.110576, -0.273729]]}, 'ClF3': { 'description': "ClF3, C2v symm.", 'name': "ClF_3", 'database': 'G2-2', 'enthalpy': -38.0, 'ZPE': 4.2922, 'thermal correction': 3.3289, 'symbols': 'ClFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.376796], [ 0. , 0. , -1.258346], [ 0. , 1.714544, 0.27331 ], [ 0. , -1.714544, 0.27331 ]]}, 'C2F4': { 'description': "C2F4 (F2C=CF2), D2H symm.", 'name': "C_2F_4", 'database': 'G2-2', 'enthalpy': -157.4, 'ZPE': 13.4118, 'thermal correction': 3.9037, 'symbols': 'CCFFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.66323 ], [ 0. , 0. , -0.66323 ], [ 0. , 1.112665, 1.385652], [ 0. , -1.112665, 1.385652], [ 0. , 1.112665, -1.385652], [ 0. , -1.112665, -1.385652]]}, 'C2Cl4': { 'description': "C2Cl4 (Cl2C=CCl2), D2h symm.", 'name': "C_2Cl_4", 'database': 'G2-2', 'enthalpy': -3.0, 'ZPE': 9.4628, 'thermal correction': 4.7132, 'symbols': 'CCClClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.675402], [ 0. , 0. , -0.675402], [ 0. , 1.448939, 1.589701], [ 0. , -1.448939, 1.589701], [ 0. , -1.448939, -1.589701], [ 0. , 1.448939, -1.589701]]}, 'CF3CN': { 'description': "CF3CN, C3v symm.", 'name': "CF_3CN", 'database': 'G2-2', 'enthalpy': -118.4, 'ZPE': 14.1020, 'thermal correction': 3.7996, 'symbols': 'CCFFFN', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -0.32635 ], [ 0. , 0. , 1.15083 ], [ 0. , 1.257579, -0.787225], [ 1.089096, -0.62879 , -0.787225], [-1.089096, -0.62879 , -0.787225], [ 0. , 0. , 2.329741]]}, 'C3H4_C3v': { 'description': "Propyne (C3H4), C3v symm.", 'name': "CH_3CCH (propyne)", 'database': 'G2-2', 'enthalpy': 44.2, 'ZPE': 34.2614, 'thermal correction': 3.1193, 'symbols': 'CCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.214947], [ 0. , 0. , 1.43313 ], [ 0. , 0. , -1.246476], [ 0. , 0. , 2.498887], [ 0. , 1.021145, -1.636167], [ 0.884337, -0.510572, -1.636167], [-0.884337, -0.510572, -1.636167]]}, 'C3H4_D2d': { 'description': "Allene (C3H4), D2d symm.", 'name': "CH_2=C=CH_2 (allene)", 'database': 'G2-2', 'enthalpy': 45.5, 'ZPE': 34.1189, 'thermal correction': 2.9744, 'symbols': 'CCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 0. , 1.31119 ], [ 0. , 0. , -1.31119 ], [ 0. , 0.926778, 1.876642], [ 0. , -0.926778, 1.876642], [ 0.926778, 0. , -1.876642], [-0.926778, 0. , -1.876642]]}, 'C3H4_C2v': { 'description': "Cyclopropene (C3H4), C2v symm.", 'name': "C_3H_4 (cyclopropene)", 'database': 'G2-2', 'enthalpy': 66.2, 'ZPE': 34.7603, 'thermal correction': 2.6763, 'symbols': 'CCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.858299], [ 0. , -0.650545, -0.498802], [ 0. , 0.650545, -0.498802], [ 0.912438, 0. , 1.456387], [-0.912438, 0. , 1.456387], [ 0. , -1.584098, -1.038469], [ 0. , 1.584098, -1.038469]]}, 'C3H6_Cs': { 'description': "Propene (C3H6), Cs symm.", 'name': "CH_3CH=CH_2 (propylene)", 'database': 'G2-2', 'enthalpy': 4.8, 'ZPE': 49.1836, 'thermal correction': 3.1727, 'symbols': 'CCHHHCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 1.29129 , 0.133682, 0. ], [ 0. , 0.479159, 0. ], [ 1.60116 , -0.90742 , 0. ], [ 2.0808 , 0.877337, 0. ], [-0.263221, 1.536098, 0. ], [-1.139757, -0.492341, 0. ], [-0.776859, -1.523291, 0. ], [-1.77554 , -0.352861, 0.88042 ], [-1.77554 , -0.352861, -0.88042 ]]}, 'C3H6_D3h': { 'description': "Cyclopropane (C3H6), D3h symm.", 'name': "C_3H_6 (cyclopropane)", 'database': 'G2-2', 'enthalpy': 12.7, 'ZPE': 50.2121, 'thermal correction': 2.7272, 'symbols': 'CCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.866998, 0. ], [ 0.750842, -0.433499, 0. ], [-0.750842, -0.433499, 0. ], [ 0. , 1.455762, 0.910526], [ 0. , 1.455762, -0.910526], [ 1.260727, -0.727881, -0.910526], [ 1.260727, -0.727881, 0.910526], [-1.260727, -0.727881, 0.910526], [-1.260727, -0.727881, -0.910526]]}, 'C3H8': { 'description': "Propane (C3H8), C2v symm.", 'name': "C_3H_8 (propane)", 'database': 'G2-2', 'enthalpy': -25.0, 'ZPE': 63.8008, 'thermal correction': 3.4632, 'symbols': 'CCCHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.587716], [ 0. , 1.266857, -0.260186], [ 0. , -1.266857, -0.260186], [-0.876898, 0. , 1.244713], [ 0.876898, 0. , 1.244713], [ 0. , 2.16615 , 0.362066], [ 0. , -2.16615 , 0.362066], [ 0.883619, 1.304234, -0.904405], [-0.883619, 1.304234, -0.904405], [-0.883619, -1.304234, -0.904405], [ 0.883619, -1.304234, -0.904405]]}, 'butadiene': { 'description': "Trans-1,3-butadiene (C4H6), C2h symm.", 'name': "CH_2CHCHCH_2 (butadiene)", 'database': 'G2-2', 'enthalpy': 26.3, 'ZPE': 52.6273, 'thermal correction': 3.5341, 'symbols': 'CCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.605711, 1.74655 , 0. ], [ 0.605711, 0.404083, 0. ], [-0.605711, -0.404083, 0. ], [-0.605711, -1.74655 , 0. ], [ 1.527617, 2.317443, 0. ], [-0.321132, 2.313116, 0. ], [ 1.553503, -0.13364 , 0. ], [-1.553503, 0.13364 , 0. ], [ 0.321132, -2.313116, 0. ], [-1.527617, -2.317443, 0. ]]}, '2-butyne': { 'description': "Dimethylacetylene (2-butyne, C4H6), D3h symm (eclipsed).", 'name': "C_4H_6 (2-butyne)", 'database': 'G2-2', 'enthalpy': 34.8, 'ZPE': 51.8731, 'thermal correction': 4.2344, 'symbols': 'CCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 2.071955], [ 0. , 0. , 0.60997 ], [ 0. , 0. , -0.60997 ], [ 0. , 0. , -2.071955], [ 0. , 1.020696, 2.464562], [-0.883949, -0.510348, 2.464562], [ 0.883949, -0.510348, 2.464562], [ 0. , 1.020696, -2.464562], [ 0.883949, -0.510348, -2.464562], [-0.883949, -0.510348, -2.464562]]}, 'methylenecyclopropane': { 'description': "Methylenecyclopropane (C4H6), C2v symm.", 'name': "C_4H_6 (methylene cyclopropane)", 'database': 'G2-2', 'enthalpy': 47.9, 'ZPE': 52.6230, 'thermal correction': 3.2881, 'symbols': 'CCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.315026], [ 0. , -0.76792 , -0.932032], [ 0. , 0.76792 , -0.932032], [ 0. , 0. , 1.640027], [-0.912794, -1.271789, -1.239303], [ 0.912794, -1.271789, -1.239303], [ 0.912794, 1.271789, -1.239303], [-0.912794, 1.271789, -1.239303], [ 0. , -0.926908, 2.20564 ], [ 0. , 0.926908, 2.20564 ]]}, 'bicyclobutane': { 'description': "Bicyclo[1.1.0]butane (C4H6), C2v symm.", 'name': "C_4H_6 (bicyclobutane)", 'database': 'G2-2', 'enthalpy': 51.9, 'ZPE': 53.3527, 'thermal correction': 2.9637, 'symbols': 'CCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.131343, 0.310424], [ 0. , -1.131343, 0.310424], [ 0.747952, 0. , -0.311812], [-0.747952, 0. , -0.311812], [ 0. , 1.237033, 1.397617], [ 0. , 2.077375, -0.227668], [ 0. , -1.237033, 1.397617], [ 0. , -2.077375, -0.227668], [ 1.41441 , 0. , -1.161626], [-1.41441 , 0. , -1.161626]]}, 'cyclobutene': { 'description': "Cyclobutene (C4H6), C2v symm.", 'name': "C_4H_6 (cyclobutene)", 'database': 'G2-2', 'enthalpy': 37.4, 'ZPE': 53.4105, 'thermal correction': 3.0108, 'symbols': 'CCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , -0.672762, 0.811217], [ 0. , 0.672762, 0.811217], [ 0. , -0.78198 , -0.696648], [ 0. , 0.78198 , -0.696648], [ 0. , -1.422393, 1.597763], [ 0. , 1.422393, 1.597763], [-0.88931 , -1.239242, -1.142591], [ 0.88931 , -1.239242, -1.142591], [ 0.88931 , 1.239242, -1.142591], [-0.88931 , 1.239242, -1.142591]]}, 'cyclobutane': { 'description': "Cyclobutane (C4H8), D2d symm.", 'name': "C_4H_8 (cyclobutane)", 'database': 'G2-2', 'enthalpy': 6.8, 'ZPE': 68.3314, 'thermal correction': 3.2310, 'symbols': 'CCCCHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.071142, 0.147626], [ 0. , -1.071142, 0.147626], [-1.071142, 0. , -0.147626], [ 1.071142, 0. , -0.147626], [ 0. , 1.986858, -0.450077], [ 0. , 1.342921, 1.20752 ], [ 0. , -1.986858, -0.450077], [ 0. , -1.342921, 1.20752 ], [-1.986858, 0. , 0.450077], [-1.342921, 0. , -1.20752 ], [ 1.986858, 0. , 0.450077], [ 1.342921, 0. , -1.20752 ]]}, 'isobutene': { 'description': "Isobutene (C4H8), Single bonds trans, C2v symm.", 'name': "C_4H_8 (isobutene)", 'database': 'G2-2', 'enthalpy': -4.0, 'ZPE': 66.5693, 'thermal correction': 3.9495, 'symbols': 'CCHHCHHHCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.458807], [ 0. , 0. , 0.119588], [ 0. , 0.924302, 2.028409], [ 0. , -0.924302, 2.028409], [ 0. , 1.272683, -0.678803], [ 0. , 2.153042, -0.031588], [ 0.880211, 1.323542, -1.329592], [-0.880211, 1.323542, -1.329592], [ 0. , -1.272683, -0.678803], [ 0. , -2.153042, -0.031588], [-0.880211, -1.323542, -1.329592], [ 0.880211, -1.323542, -1.329592]]}, 'trans-butane': { 'description': "Trans-butane (C4H10), C2h symm.", 'name': "C_4H_{10} (trans butane)", 'database': 'G2-2', 'enthalpy': -30.0, 'ZPE': 81.3980, 'thermal correction': 4.2633, 'symbols': 'CCCCHHHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.702581, 1.820873, 0. ], [ 0.702581, 0.296325, 0. ], [-0.702581, -0.296325, 0. ], [-0.702581, -1.820873, 0. ], [ 1.719809, 2.22234 , 0. ], [-1.719809, -2.22234 , 0. ], [ 0.188154, 2.210362, 0.883614], [ 0.188154, 2.210362, -0.883614], [-0.188154, -2.210362, 0.883614], [-0.188154, -2.210362, -0.883614], [ 1.247707, -0.07266 , -0.877569], [ 1.247707, -0.07266 , 0.877569], [-1.247707, 0.07266 , -0.877569], [-1.247707, 0.07266 , 0.877569]]}, 'isobutane': { 'description': "Isobutane (C4H10), C3v symm.", 'name': "C_4H_{10} (isobutane)", 'database': 'G2-2', 'enthalpy': -32.1, 'ZPE': 81.1050, 'thermal correction': 4.2282, 'symbols': 'CHCHHHCHHHCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.376949], [ 0. , 0. , 1.475269], [ 0. , 1.45029 , -0.096234], [ 0. , 1.493997, -1.190847], [-0.885482, 1.984695, 0.261297], [ 0.885482, 1.984695, 0.261297], [ 1.255988, -0.725145, -0.096234], [ 1.293839, -0.746998, -1.190847], [ 2.161537, -0.225498, 0.261297], [ 1.276055, -1.759198, 0.261297], [-1.255988, -0.725145, -0.096234], [-1.293839, -0.746998, -1.190847], [-1.276055, -1.759198, 0.261297], [-2.161537, -0.225498, 0.261297]]}, 'C5H8': { 'description': "Spiropentane (C5H8), D2d symm.", 'name': "C_5H_8 (spiropentane)", 'database': 'G2-2', 'enthalpy': 44.3, 'ZPE': 70.9964, 'thermal correction': 3.7149, 'symbols': 'CCCCCHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0. ], [ 0. , 0.762014, 1.265752], [ 0. , -0.762014, 1.265752], [ 0.762014, 0. , -1.265752], [-0.762014, 0. , -1.265752], [-0.914023, 1.265075, 1.56809 ], [ 0.914023, 1.265075, 1.56809 ], [-0.914023, -1.265075, 1.56809 ], [ 0.914023, -1.265075, 1.56809 ], [ 1.265075, -0.914023, -1.56809 ], [ 1.265075, 0.914023, -1.56809 ], [-1.265075, -0.914023, -1.56809 ], [-1.265075, 0.914023, -1.56809 ]]}, 'C6H6': { 'description': "Benzene (C6H6), D6h symm.", 'name': "C_6H_6 (benzene)", 'database': 'G2-2', 'enthalpy': 19.7, 'ZPE': 61.9252, 'thermal correction': 3.3886, 'ionization energy': 9.24, 'vertical ionization energy': 9.25, 'symbols': 'CCCCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.395248, 0. ], [ 1.20832 , 0.697624, 0. ], [ 1.20832 , -0.697624, 0. ], [ 0. , -1.395248, 0. ], [-1.20832 , -0.697624, 0. ], [-1.20832 , 0.697624, 0. ], [ 0. , 2.48236 , 0. ], [ 2.149787, 1.24118 , 0. ], [ 2.149787, -1.24118 , 0. ], [ 0. , -2.48236 , 0. ], [-2.149787, -1.24118 , 0. ], [-2.149787, 1.24118 , 0. ]]}, 'H2CF2': { 'description': "Difluoromethane (H2CF2), C2v symm.", 'name': "CH_2F_2", 'database': 'G2-2', 'enthalpy': -107.7, 'ZPE': 20.2767, 'thermal correction': 2.5552, 'symbols': 'CFFHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.502903], [ 0. , 1.109716, -0.290601], [ 0. , -1.109716, -0.290601], [-0.908369, 0. , 1.106699], [ 0.908369, 0. , 1.106699]]}, 'HCF3': { 'description': "Trifluoromethane (HCF3), C3v symm.", 'name': "CHF_3", 'database': 'G2-2', 'enthalpy': -166.6, 'ZPE': 15.7072, 'thermal correction': 2.7717, 'symbols': 'CHFFF', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.341023], [ 0. , 0. , 1.429485], [ 0. , 1.2582 , -0.128727], [ 1.089633, -0.6291 , -0.128727], [-1.089633, -0.6291 , -0.128727]]}, 'H2CCl2': { 'description': "Dichloromethane (H2CCl2), C2v symm.", 'name': "CH_2Cl_2", 'database': 'G2-2', 'enthalpy': -22.8, 'ZPE': 18.0930, 'thermal correction': 2.8527, 'symbols': 'CClClHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.759945], [ 0. , 1.4742 , -0.215115], [ 0. , -1.4742 , -0.215115], [-0.894585, 0. , 1.377127], [ 0.894585, 0. , 1.377127]]}, 'HCCl3': { 'description': "Chloroform (HCCl3), C3v symm.", 'name': "CHCl_3", 'database': 'G2-2', 'enthalpy': -24.7, 'ZPE': 12.1975, 'thermal correction': 3.4262, 'symbols': 'CHClClCl', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.451679], [ 0. , 0. , 1.537586], [ 0. , 1.681723, -0.083287], [ 1.456415, -0.840862, -0.083287], [-1.456415, -0.840862, -0.083287]]}, 'H3CNH2': { 'description': "Methylamine (H3C-NH2), Cs symm.", 'name': "CH_3NH_2 (methylamine)", 'database': 'G2-2', 'enthalpy': -5.5, 'ZPE': 39.5595, 'thermal correction': 2.7428, 'symbols': 'CNHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.051736, 0.704422, 0. ], [ 0.051736, -0.759616, 0. ], [-0.941735, 1.176192, 0. ], [-0.458181, -1.099433, 0.81237 ], [-0.458181, -1.099433, -0.81237 ], [ 0.592763, 1.056727, 0.88067 ], [ 0.592763, 1.056727, -0.88067 ]]}, 'CH3CN': { 'description': "Acetonitrile (CH3-CN), C3v symm.", 'name': "CH_3CN (methyl cyanide)", 'database': 'G2-2', 'enthalpy': 18.0, 'ZPE': 28.0001, 'thermal correction': 2.8552, 'symbols': 'CCNHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.18693 ], [ 0. , 0. , 0.273874], [ 0. , 0. , 1.452206], [ 0. , 1.024986, -1.56237 ], [ 0.887664, -0.512493, -1.56237 ], [-0.887664, -0.512493, -1.56237 ]]}, 'CH3NO2': { 'description': "Nitromethane (CH3-NO2), Cs symm.", 'name': "CH_3NO_2 (nitromethane)", 'database': 'G2-2', 'enthalpy': -17.8, 'ZPE': 30.7568, 'thermal correction': 2.7887, 'symbols': 'CNHHHOO', 'magmoms': None, 'charges': None, 'positions': [[-0.114282, -1.314565, 0. ], [ 0. , 0.16648 , 0. ], [ 0.899565, -1.715256, 0. ], [-0.640921, -1.607212, 0.904956], [-0.640921, -1.607212, -0.904956], [ 0.066748, 0.728232, -1.103775], [ 0.066748, 0.728232, 1.103775]]}, 'CH3ONO': { 'description': "Methylnitrite (CH3-O-N=O), NOCH trans, ONOC cis, Cs symm.", 'name': "CH_3ONO (methyl nitrite)", 'database': 'G2-2', 'enthalpy': -15.9, 'ZPE': 29.9523, 'thermal correction': 3.3641, 'symbols': 'COHHHNO', 'magmoms': None, 'charges': None, 'positions': [[-1.316208, 0.309247, 0. ], [ 0. , 0.896852, 0. ], [-1.985538, 1.166013, 0. ], [-1.464336, -0.304637, 0.890672], [-1.464336, -0.304637, -0.890672], [ 1.045334, -0.022815, 0. ], [ 0.686764, -1.178416, 0. ]]}, 'CH3SiH3': { 'description': "Methylsilane (CH3-SiH3), C3v symm.", 'name': "CH_3SiH_3 (methyl silane)", 'database': 'G2-2', 'enthalpy': -7.0, 'ZPE': 37.6606, 'thermal correction': 3.2486, 'symbols': 'CSiHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.244466], [ 0. , 0. , 0.635703], [ 0. , -1.019762, -1.636363], [-0.88314 , 0.509881, -1.636363], [ 0.88314 , 0.509881, -1.636363], [ 0. , 1.391234, 1.158682], [-1.204844, -0.695617, 1.158682], [ 1.204844, -0.695617, 1.158682]]}, 'HCOOH': { 'description': "Formic Acid (HCOOH), HOCO cis, Cs symm.", 'name': "HCOOH (formic acid)", 'database': 'G2-2', 'enthalpy': -90.5, 'ZPE': 20.9525, 'thermal correction': 2.5853, 'symbols': 'OCOHH', 'magmoms': None, 'charges': None, 'positions': [[-1.040945, -0.436432, 0. ], [ 0. , 0.423949, 0. ], [ 1.169372, 0.103741, 0. ], [-0.64957 , -1.335134, 0. ], [-0.377847, 1.452967, 0. ]]}, 'HCOOCH3': { 'description': "Methyl formate (HCOOCH3), Cs symm.", 'name': "HCOOCH_3 (methyl formate)", 'database': 'G2-2', 'enthalpy': -85.0, 'ZPE': 38.3026, 'thermal correction': 3.4726, 'symbols': 'COOHCHHH', 'magmoms': None, 'charges': None, 'positions': [[-0.931209, -0.083866, 0. ], [-0.711019, -1.278209, 0. ], [ 0. , 0.886841, 0. ], [-1.92836 , 0.374598, 0. ], [ 1.356899, 0.397287, 0. ], [ 1.980134, 1.288164, 0. ], [ 1.541121, -0.206172, 0.889397], [ 1.541121, -0.206172, -0.889397]]}, 'CH3CONH2': { 'description': "Acetamide (CH3CONH2), C1 symm.", 'name': "CH_3CONH_2 (acetamide)", 'database': 'G2-2', 'enthalpy': -57.0, 'ZPE': 45.2566, 'thermal correction': 3.9313, 'symbols': 'OCNCHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 4.24546000e-01, 1.32702400e+00, 8.03400000e-03], [ 7.71580000e-02, 1.49789000e-01, -4.24900000e-03], [ 9.85518000e-01, -8.78537000e-01, -4.89100000e-02], [ -1.37147500e+00, -2.88665000e-01, -1.44000000e-04], [ 7.07952000e-01, -1.82424900e+00, 1.69942000e-01], [ -1.99722900e+00, 5.84922000e-01, -1.75477000e-01], [ -1.56084200e+00, -1.03927000e+00, -7.71686000e-01], [ -1.63211300e+00, -7.23007000e-01, 9.69814000e-01], [ 1.95313300e+00, -6.31574000e-01, 1.11866000e-01]]}, 'CH2NHCH2': { 'description': "Aziridine (cyclic CH2-NH-CH2 ring), C2v symm.", 'name': "C_2H_4NH (aziridine)", 'database': 'G2-2', 'enthalpy': 30.2, 'ZPE': 43.3728, 'thermal correction': 2.6399, 'symbols': 'CNCHHHHH', 'magmoms': None, 'charges': None, 'positions': [[-0.03845 , -0.397326, 0.739421], [-0.03845 , 0.875189, 0. ], [-0.03845 , -0.397326, -0.739421], [ 0.903052, 1.268239, 0. ], [-0.955661, -0.604926, 1.280047], [-0.955661, -0.604926, -1.280047], [ 0.869409, -0.708399, 1.249033], [ 0.869409, -0.708399, -1.249033]]}, 'NCCN': { 'description': "Cyanogen (NCCN). D*h symm.", 'name': "NCCN (cyanogen)", 'database': 'G2-2', 'enthalpy': 73.3, 'ZPE': 10.2315, 'thermal correction': 2.9336, 'symbols': 'NCCN', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.875875], [ 0. , 0. , 0.690573], [ 0. , 0. , -0.690573], [ 0. , 0. , -1.875875]]}, 'C2H6NH': { 'description': "Dimethylamine, (CH3)2NH, Cs symm.", 'name': "(CH_3)_2NH (dimethylamine)", 'database': 'G2-2', 'enthalpy': -4.4, 'ZPE': 57.0287, 'thermal correction': 3.3760, 'symbols': 'CNCHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[-0.02753 , -0.224702, 1.20488 ], [-0.02753 , 0.59247 , 0. ], [-0.02753 , -0.224702, -1.20488 ], [ 0.791501, -0.962742, 1.248506], [ 0.039598, 0.421182, 2.083405], [-0.97222 , -0.772987, 1.26175 ], [ 0.805303, 1.17822 , 0. ], [ 0.791501, -0.962742, -1.248506], [ 0.039598, 0.421182, -2.083405], [-0.97222 , -0.772987, -1.26175 ]]}, 'CH3CH2NH2': { 'description': "Trans-Ethylamine (CH3-CH2-NH2), Cs symm.", 'name': "CH_3CH_2NH_2 (trans ethylamine)", 'database': 'G2-2', 'enthalpy': -11.3, 'ZPE': 57.2420, 'thermal correction': 3.3678, 'symbols': 'CCNHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 1.210014, -0.353598, 0. ], [ 0. , 0.575951, 0. ], [-1.305351, -0.087478, 0. ], [ 2.14931 , 0.208498, 0. ], [ 1.201796, -0.99776 , 0.884909], [ 1.201796, -0.99776 , -0.884909], [ 0.034561, 1.230963, -0.876478], [ 0.034561, 1.230963, 0.876478], [-1.372326, -0.69834 , 0.813132], [-1.372326, -0.69834 , -0.813132]]}, 'H2CCO': { 'description': "Ketene (H2C=C=O), C2v symm.", 'name': "CH_2CO (ketene)", 'database': 'G2-2', 'enthalpy': -11.4, 'ZPE': 19.5984, 'thermal correction': 2.8075, 'symbols': 'CCHHO', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , -1.21934 ], [ 0. , 0. , 0.09892 ], [ 0. , 0.938847, -1.753224], [ 0. , -0.938847, -1.753224], [ 0. , 0. , 1.27862 ]]}, 'CH2OCH2': { 'description': "Oxirane (cyclic CH2-O-CH2 ring), C2v symm.", 'name': "C_2H_4O (oxirane)", 'database': 'G2-2', 'enthalpy': -12.6, 'ZPE': 35.4204, 'thermal correction': 2.5816, 'symbols': 'COCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.73158 , -0.375674], [ 0. , 0. , 0.86095 ], [ 0. , -0.73158 , -0.375674], [ 0.919568, 1.268821, -0.594878], [-0.919568, 1.268821, -0.594878], [-0.919568, -1.268821, -0.594878], [ 0.919568, -1.268821, -0.594878]]}, 'CH3CHO': { 'description': "Acetaldehyde (CH3CHO), Cs symm.", 'name': "CH_3CHO (acetaldehyde)", 'database': 'G2-2', 'enthalpy': -39.7, 'ZPE': 34.2288, 'thermal correction': 3.0428, 'symbols': 'OCHCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 1.218055, 0.36124 , 0. ], [ 0. , 0.464133, 0. ], [-0.477241, 1.465295, 0. ], [-0.948102, -0.700138, 0. ], [-0.385946, -1.634236, 0. ], [-1.596321, -0.652475, 0.880946], [-1.596321, -0.652475, -0.880946]]}, 'OCHCHO': { 'description': "Glyoxal (O=CH-CH=O). Trans, C2h symm.", 'name': "HCOCOH (glyoxal)", 'database': 'G2-2', 'enthalpy': -50.7, 'ZPE': 22.8426, 'thermal correction': 3.2518, 'symbols': 'CCOHOH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.75643 , 0. ], [ 0. , -0.75643 , 0. ], [ 1.04609 , 1.389916, 0. ], [-0.99994 , 1.228191, 0. ], [-1.04609 , -1.389916, 0. ], [ 0.99994 , -1.228191, 0. ]]}, 'CH3CH2OH': { 'description': "Ethanol (trans, CH3CH2OH), Cs symm.", 'name': "CH_3CH_2OH (ethanol)", 'database': 'G2-2', 'enthalpy': -56.2, 'ZPE': 49.3072, 'thermal correction': 3.3252, 'symbols': 'CCOHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 1.168181, -0.400382, 0. ], [ 0. , 0.559462, 0. ], [-1.190083, -0.227669, 0. ], [-1.946623, 0.381525, 0. ], [ 0.042557, 1.207508, 0.886933], [ 0.042557, 1.207508, -0.886933], [ 2.115891, 0.1448 , 0. ], [ 1.128599, -1.037234, 0.885881], [ 1.128599, -1.037234, -0.885881]]}, 'CH3OCH3': { 'description': "DimethylEther (CH3-O-CH3), C2v symm.", 'name': "CH_3OCH_3 (dimethylether)", 'database': 'G2-2', 'enthalpy': -44.0, 'ZPE': 49.1911, 'thermal correction': 3.3139, 'symbols': 'COCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.165725, -0.19995 ], [ 0. , 0. , 0.60011 ], [ 0. , -1.165725, -0.19995 ], [ 0. , 2.017769, 0.480203], [ 0.891784, 1.21432 , -0.840474], [-0.891784, 1.21432 , -0.840474], [ 0. , -2.017769, 0.480203], [-0.891784, -1.21432 , -0.840474], [ 0.891784, -1.21432 , -0.840474]]}, 'CH2SCH2': { 'description': "Thiooxirane (cyclic CH2-S-CH2 ring), C2v symm.", 'name': "C_2H_4S (thiirane)", 'database': 'G2-2', 'enthalpy': 19.6, 'ZPE': 33.9483, 'thermal correction': 2.7290, 'symbols': 'CSCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , -0.739719, -0.792334], [ 0. , 0. , 0.863474], [ 0. , 0.739719, -0.792334], [-0.91394 , -1.250142, -1.076894], [ 0.91394 , -1.250142, -1.076894], [ 0.91394 , 1.250142, -1.076894], [-0.91394 , 1.250142, -1.076894]]}, 'C2H6SO': { 'description': "Dimethylsulfoxide (CH3)2SO, Cs symm.", 'name': "(CH_3)_2SO (dimethyl sulfoxide)", 'database': 'G2-2', 'enthalpy': -36.2, 'ZPE': 48.8479, 'thermal correction': 4.1905, 'symbols': 'SOCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 2.00000000e-06, 2.31838000e-01, -4.38643000e-01], [ 2.00000000e-05, 1.50074200e+00, 3.79819000e-01], [ 1.33952800e+00, -8.09022000e-01, 1.80717000e-01], [ -1.33954800e+00, -8.08992000e-01, 1.80718000e-01], [ 1.25583500e+00, -8.96385000e-01, 1.26682500e+00], [ -2.27940400e+00, -3.13924000e-01, -6.86740000e-02], [ 1.30440700e+00, -1.79332700e+00, -2.92589000e-01], [ 2.27939500e+00, -3.13974000e-01, -6.86740000e-02], [ -1.30444700e+00, -1.79329800e+00, -2.92587000e-01], [ -1.25585700e+00, -8.96355000e-01, 1.26682600e+00]]}, 'CH3CH2SH': { 'description': "ThioEthanol (CH3-CH2-SH), Cs symm.", 'name': "C_2H_5SH (ethanethiol)", 'database': 'G2-2', 'enthalpy': -11.1, 'ZPE': 46.1583, 'thermal correction': 3.5900, 'symbols': 'CCSHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 1.514343, 0.679412, 0. ], [ 0. , 0.826412, 0. ], [-0.756068, -0.831284, 0. ], [-2.035346, -0.427738, 0. ], [-0.32497 , 1.376482, 0.885793], [-0.32497 , 1.376482, -0.885793], [ 1.986503, 1.665082, 0. ], [ 1.854904, 0.137645, 0.885494], [ 1.854904, 0.137645, -0.885494]]}, 'CH3SCH3': { 'description': "Dimethyl ThioEther (CH3-S-CH3), C2v symm.", 'name': "CH_3SCH_3 (dimethyl sulfide)", 'database': 'G2-2', 'enthalpy': -8.9, 'ZPE': 46.6760, 'thermal correction': 3.6929, 'symbols': 'CSCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 1.366668, -0.513713], [ 0. , 0. , 0.664273], [ 0. , -1.366668, -0.513713], [ 0. , 2.296687, 0.057284], [ 0.891644, 1.34568 , -1.144596], [-0.891644, 1.34568 , -1.144596], [ 0. , -2.296687, 0.057284], [-0.891644, -1.34568 , -1.144596], [ 0.891644, -1.34568 , -1.144596]]}, 'H2CCHF': { 'description': "Vinyl fluoride (H2C=CHF), Cs symm.", 'name': "CH_2=CHF (vinyl fluoride)", 'database': 'G2-2', 'enthalpy': -33.2, 'ZPE': 27.2785, 'thermal correction': 2.7039, 'symbols': 'CCFHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.437714, 0. ], [ 1.191923, -0.145087, 0. ], [-1.148929, -0.278332, 0. ], [-0.186445, 1.505778, 0. ], [ 1.291348, -1.222833, 0. ], [ 2.083924, 0.466279, 0. ]]}, 'CH3CH2Cl': { 'description': "Ethyl chloride (CH3-CH2-Cl), Cs symm.", 'name': "C_2H_5Cl (ethyl chloride)", 'database': 'G2-2', 'enthalpy': -26.8, 'ZPE': 41.0686, 'thermal correction': 3.1488, 'symbols': 'CCClHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.807636, 0. ], [ 1.505827, 0.647832, 0. ], [-0.823553, -0.77997 , 0. ], [-0.344979, 1.341649, 0.885248], [-0.344979, 1.341649, -0.885248], [ 1.976903, 1.634877, 0. ], [ 1.839246, 0.10425 , 0.885398], [ 1.839246, 0.10425 , -0.885398]]}, 'H2CCHCl': { 'description': "Vinyl chloride, H2C=CHCl, Cs symm.", 'name': "CH_2=CHCl (vinyl chloride)", 'database': 'G2-2', 'enthalpy': 8.9, 'ZPE': 26.3554, 'thermal correction': 2.8269, 'symbols': 'CCClHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.756016, 0. ], [ 1.303223, 1.028507, 0. ], [-0.631555, -0.85498 , 0. ], [-0.771098, 1.516963, 0. ], [ 2.056095, 0.249427, 0. ], [ 1.632096, 2.061125, 0. ]]}, 'H2CCHCN': { 'description': "CyanoEthylene (H2C=CHCN), Cs symm.", 'name': "CH_2=CHCN (acrylonitrile)", 'database': 'G2-2', 'enthalpy': 43.2, 'ZPE': 31.4081, 'thermal correction': 3.2034, 'symbols': 'CCCHHHN', 'magmoms': None, 'charges': None, 'positions': [[-0.161594, -1.638625, 0. ], [ 0.584957, -0.524961, 0. ], [ 0. , 0.782253, 0. ], [-1.245203, -1.598169, 0. ], [ 0.305973, -2.616405, 0. ], [ 1.669863, -0.572107, 0. ], [-0.467259, 1.867811, 0. ]]}, 'CH3COCH3': { 'description': "Acetone (CH3-CO-CH3), C2v symm.", 'name': "CH_3COCH_3 (acetone)", 'database': 'G2-2', 'enthalpy': -51.9, 'ZPE': 51.5587, 'thermal correction': 3.9878, 'symbols': 'OCCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.405591], [ 0. , 0. , 0.17906 ], [ 0. , 1.28549 , -0.616342], [ 0. , -1.28549 , -0.616342], [ 0. , 2.134917, 0.066535], [ 0. , -2.134917, 0.066535], [-0.881086, 1.331548, -1.264013], [ 0.881086, 1.331548, -1.264013], [ 0.881086, -1.331548, -1.264013], [-0.881086, -1.331548, -1.264013]]}, 'CH3COOH': { 'description': "Acetic Acid (CH3COOH), Single bonds trans, Cs symm.", 'name': "CH_3COOH (acetic acid)", 'database': 'G2-2', 'enthalpy': -103.4, 'ZPE': 38.1670, 'thermal correction': 3.4770, 'symbols': 'COOHCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.15456 , 0. ], [ 0.166384, 1.360084, 0. ], [-1.236449, -0.415036, 0. ], [-1.867646, 0.333582, 0. ], [ 1.073776, -0.892748, 0. ], [ 2.048189, -0.408135, 0. ], [ 0.968661, -1.528353, 0.881747], [ 0.968661, -1.528353, -0.881747]]}, 'CH3COF': { 'description': "Acetyl fluoride (CH3COF), HCCO cis, Cs symm.", 'name': "CH_3COF (acetyl fluoride)", 'database': 'G2-2', 'enthalpy': -105.7, 'ZPE': 30.2742, 'thermal correction': 3.3126, 'symbols': 'COFCHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.186396, 0. ], [ 0.126651, 1.377199, 0. ], [-1.24395 , -0.382745, 0. ], [ 1.049454, -0.876224, 0. ], [ 2.035883, -0.417099, 0. ], [ 0.924869, -1.508407, 0.881549], [ 0.924869, -1.508407, -0.881549]]}, 'CH3COCl': { 'description': "Acetyl,Chloride (CH3COCl), HCCO cis, Cs symm.", 'name': "CH_3COCl (acetyl chloride)", 'database': 'G2-2', 'enthalpy': -58.0, 'ZPE': 29.1855, 'thermal correction': 3.5235, 'symbols': 'CCClOHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0.523878, 0. ], [ 1.486075, 0.716377, 0. ], [-0.452286, -1.217999, 0. ], [-0.845539, 1.37494 , 0. ], [ 1.701027, 1.784793, 0. ], [ 1.917847, 0.240067, 0.882679], [ 1.917847, 0.240067, -0.882679]]}, 'C3H7Cl': { 'description': "Propyl chloride (CH3CH2CH2Cl), Cs symm.", 'name': "CH_3CH_2CH_2Cl (propyl chloride)", 'database': 'G2-2', 'enthalpy': -31.5, 'ZPE': 58.6696, 'thermal correction': 3.9885, 'symbols': 'CCCHHHClHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.892629, -0.642344, 0. ], [ 2.365587, -0.245168, 0. ], [ 0. , 0.582921, 0. ], [ 0.663731, -1.252117, 0.879201], [ 0.663731, -1.252117, -0.879201], [ 3.005476, -1.130924, 0. ], [-1.73281 , 0.139743, 0. ], [ 2.614882, 0.347704, -0.88473 ], [ 2.614882, 0.347704, 0.88473 ], [ 0.172881, 1.195836, 0.88646 ], [ 0.172881, 1.195836, -0.88646 ]]}, 'C2H6CHOH': { 'description': "Isopropyl alcohol, (CH3)2CH-OH, Gauche isomer, C1 symm.", 'name': "(CH_3)_2CHOH (isopropanol)", 'database': 'G2-2', 'enthalpy': -65.2, 'ZPE': 66.5612, 'thermal correction': 4.0732, 'symbols': 'OCHHCCHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 2.71910000e-02, 1.36369100e+00, -1.67516000e-01], [ -9.26000000e-04, 3.64590000e-02, 3.70128000e-01], [ 8.59465000e-01, 1.77564700e+00, 1.21307000e-01], [ 7.37100000e-03, 8.21450000e-02, 1.47050600e+00], [ -1.31327500e+00, -5.63514000e-01, -8.89790000e-02], [ 1.20072100e+00, -7.64480000e-01, -1.04920000e-01], [ -1.33400500e+00, -6.07253000e-01, -1.18100900e+00], [ 1.20284300e+00, -8.07817000e-01, -1.19718900e+00], [ -2.14781200e+00, 5.49930000e-02, 2.47676000e-01], [ 2.13646200e+00, -2.99324000e-01, 2.23164000e-01], [ -1.43870900e+00, -1.57427500e+00, 3.08340000e-01], [ 1.17773600e+00, -1.78443600e+00, 2.89967000e-01]]}, 'CH3CH2OCH3': { 'description': "Methyl ethyl ether (CH3-CH2-O-CH3), Trans, Cs symm.", 'name': "C_2H_5OCH_3 (methyl ethyl ether)", 'database': 'G2-2', 'enthalpy': -51.7, 'ZPE': 66.6936, 'thermal correction': 4.1058, 'symbols': 'OCCCHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.006429, -0.712741, 0. ], [ 0. , 0.705845, 0. ], [ 1.324518, -1.226029, 0. ], [-1.442169, 1.160325, 0. ], [ 0.530962, 1.086484, 0.886881], [ 0.530962, 1.086484, -0.886881], [ 1.241648, -2.313325, 0. ], [ 1.881329, -0.905925, -0.89171 ], [ 1.881329, -0.905925, 0.89171 ], [-1.954863, 0.780605, -0.885855], [-1.954863, 0.780605, 0.885855], [-1.502025, 2.252083, 0. ]]}, 'C3H9N': { 'description': "Trimethyl Amine, (CH3)3N, C3v symm.", 'name': "(CH_3)_3N (trimethylamine)", 'database': 'G2-2', 'enthalpy': -5.7, 'ZPE': 74.1584, 'thermal correction': 4.0631, 'symbols': 'NCCCHHHHHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.395846], [ 0. , 1.378021, -0.065175], [ 1.193401, -0.689011, -0.065175], [-1.193401, -0.689011, -0.065175], [ 0. , 1.461142, -1.167899], [ 0.886156, 1.891052, 0.317655], [-0.886156, 1.891052, 0.317655], [ 1.265386, -0.730571, -1.167899], [ 1.194621, -1.71296 , 0.317655], [ 2.080777, -0.178092, 0.317655], [-1.265386, -0.730571, -1.167899], [-2.080777, -0.178092, 0.317655], [-1.194621, -1.71296 , 0.317655]]}, 'C4H4O': { 'description': "Furan (cyclic C4H4O), C2v symm.", 'name': "C_4H_4O (furan)", 'database': 'G2-2', 'enthalpy': -8.3, 'ZPE': 43.2116, 'thermal correction': 2.9480, 'symbols': 'OCCCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.163339], [ 0. , 1.0947 , 0.348039], [ 0. , -1.0947 , 0.348039], [ 0. , 0.7132 , -0.962161], [ 0. , -0.7132 , -0.962161], [ 0. , 2.049359, 0.851113], [ 0. , -2.049359, 0.851113], [ 0. , 1.370828, -1.819738], [ 0. , -1.370828, -1.819738]]}, 'C4H4S': { 'description': "Thiophene (cyclic C4H4S), C2v symm.", 'name': "C_4H_4S (thiophene)", 'database': 'G2-2', 'enthalpy': 27.5, 'ZPE': 41.2029, 'thermal correction': 3.1702, 'symbols': 'SCCCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0.00000000e+00, 0.00000000e+00, 1.18975300e+00], [ 0.00000000e+00, 1.23387600e+00, -1.47400000e-03], [ 0.00000000e+00, -1.23387600e+00, -1.47400000e-03], [ 0.00000000e+00, 7.09173000e-01, -1.27232200e+00], [ 0.00000000e+00, -7.09173000e-01, -1.27232200e+00], [ 0.00000000e+00, 2.27534300e+00, 2.91984000e-01], [ 0.00000000e+00, -2.27534300e+00, 2.91984000e-01], [ 0.00000000e+00, 1.32193400e+00, -2.16723100e+00], [ 0.00000000e+00, -1.32193400e+00, -2.16723100e+00]]}, 'C4H4NH': { 'description': "Pyrrole (Planar cyclic C4H4NH), C2v symm.", 'name': "C_4H_5N (pyrrole)", 'database': 'G2-2', 'enthalpy': 25.9, 'ZPE': 50.9688, 'thermal correction': 3.1156, 'symbols': 'HNCCCCHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 2.129296], [ 0. , 0. , 1.118684], [ 0. , 1.124516, 0.333565], [ 0. , -1.124516, 0.333565], [ 0. , 0.708407, -0.983807], [ 0. , -0.708407, -0.983807], [ 0. , 2.112872, 0.770496], [ 0. , -2.112872, 0.770496], [ 0. , 1.357252, -1.849085], [ 0. , -1.357252, -1.849085]]}, 'C5H5N': { 'description': "Pyridine (cyclic C5H5N), C2v symm.", 'name': "C_5H_5N (pyridine)", 'database': 'G2-2', 'enthalpy': 33.6, 'ZPE': 54.8230, 'thermal correction': 3.3007, 'symbols': 'NCCCCCHHHHH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 1.424672], [ 0. , 0. , -1.386178], [ 0. , 1.144277, 0.720306], [ 0. , -1.144277, 0.720306], [ 0. , -1.196404, -0.672917], [ 0. , 1.196404, -0.672917], [ 0. , 0. , -2.473052], [ 0. , 2.060723, 1.307477], [ 0. , -2.060723, 1.307477], [ 0. , -2.155293, -1.183103], [ 0. , 2.155293, -1.183103]]}, 'H2': { 'description': "H2. D*h symm.", 'name': "H_2", 'database': 'G2-2', 'enthalpy': 0.0, 'ZPE': 6.2908, 'thermal correction': 2.0739, 'ionization energy': 15.43, 'symbols': 'HH', 'magmoms': None, 'charges': None, 'positions': [[ 0. , 0. , 0.368583], [ 0. , 0. , -0.368583]]}, 'SH': { 'description': "SH radical, C*v symm.", 'name': "HS", 'database': 'G2-2', 'enthalpy': 34.2, 'ZPE': 3.7625, 'thermal correction': 2.0739, 'symbols': 'SH', 'magmoms': [ 1., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.079083], [ 0. , 0. , -1.26533 ]]}, 'CCH': { 'description': "CCH radical, C*v symm.", 'name': "CCH", 'database': 'G2-2', 'enthalpy': 135.1, 'ZPE': 7.8533, 'thermal correction': 2.7830, 'symbols': 'CCH', 'magmoms': [ 0., 1., 0.], 'charges': None, 'positions': [[ 0. , 0. , -0.462628], [ 0. , 0. , 0.717162], [ 0. , 0. , -1.527198]]}, 'C2H3': { 'description': "C2H3 radical, Cs symm, 2-A'.", 'name': "C_2H_3 (2A')", 'database': 'G2-2', 'enthalpy': 71.6, 'ZPE': 22.5747, 'thermal correction': 2.5483, 'symbols': 'CCHHH', 'magmoms': [ 0., 1., 0., 0., 0.], 'charges': None, 'positions': [[ 0.049798, -0.576272, 0. ], [ 0.049798, 0.710988, 0. ], [-0.87675 , -1.151844, 0. ], [ 0.969183, -1.154639, 0. ], [-0.690013, 1.498185, 0. ]]}, 'CH3CO': { 'description': "CH3CO radical, HCCO cis, Cs symm, 2-A'.", 'name': "CH_3CO (2A')", 'database': 'G2-2', 'enthalpy': -2.4, 'ZPE': 26.6070, 'thermal correction': 3.0842, 'symbols': 'CCHHHO', 'magmoms': [ 0.1, 0.6, 0. , 0. , 0. , 0.3], 'charges': None, 'positions': [[-0.978291, -0.647814, 0. ], [ 0. , 0.506283, 0. ], [-0.455551, -1.607837, 0. ], [-1.617626, -0.563271, 0.881061], [-1.617626, -0.563271, -0.881061], [ 1.195069, 0.447945, 0. ]]}, 'H2COH': { 'description': "H2COH radical, C1 symm.", 'name': "H_2COH (2A)", 'database': 'G2-2', 'enthalpy': -4.1, 'ZPE': 23.1294, 'thermal correction': 2.6726, 'symbols': 'COHHH', 'magmoms': [ 0.7, 0.3, 0. , 0. , 0. ], 'charges': None, 'positions': [[ 0.687448, 0.029626, -0.082014], [-0.672094, -0.125648, 0.030405], [-1.09185 , 0.740282, -0.095167], [ 1.122783, 0.975263, 0.225993], [ 1.221131, -0.888116, 0.118015]]}, 'CH3O': { 'description': "CH3O radical, Cs symm, 2-A'.", 'name': "CH_3O CS (2A')", 'database': 'G2-2', 'enthalpy': 4.1, 'ZPE': 22.4215, 'thermal correction': 2.4969, 'symbols': 'COHHH', 'magmoms': [ 0., 1., 0., 0., 0.], 'charges': None, 'positions': [[-0.008618, -0.586475, 0. ], [-0.008618, 0.799541, 0. ], [ 1.055363, -0.868756, 0. ], [-0.467358, -1.004363, 0.903279], [-0.467358, -1.004363, -0.903279]]}, 'CH3CH2O': { 'description': "CH3CH2O radical, Cs symm, 2-A''.", 'name': "CH_3CH_2O (2A'')", 'database': 'G2-2', 'enthalpy': -3.7, 'ZPE': 39.4440, 'thermal correction': 3.0158, 'symbols': 'CCOHHHHH', 'magmoms': [ 0., 0., 1., 0., 0., 0., 0., 0.], 'charges': None, 'positions': [[ 1.00475700e+00, -5.68263000e-01, 0.00000000e+00], [ 0.00000000e+00, 5.88691000e-01, 0.00000000e+00], [ -1.26006200e+00, 7.29000000e-04, 0.00000000e+00], [ 1.46956000e-01, 1.20468100e+00, 8.96529000e-01], [ 1.46956000e-01, 1.20468100e+00, -8.96529000e-01], [ 2.01936300e+00, -1.64100000e-01, 0.00000000e+00], [ 8.69340000e-01, -1.18683200e+00, 8.88071000e-01], [ 8.69340000e-01, -1.18683200e+00, -8.88071000e-01]]}, 'CH3S': { 'description': "CH3S radical, Cs symm, 2-A'.", 'name': "CH_3S (2A')", 'database': 'G2-2', 'enthalpy': 29.8, 'ZPE': 21.9415, 'thermal correction': 2.6054, 'symbols': 'CSHHH', 'magmoms': [ 0., 1., 0., 0., 0.], 'charges': None, 'positions': [[-0.003856, 1.106222, 0. ], [-0.003856, -0.692579, 0. ], [ 1.043269, 1.427057, 0. ], [-0.479217, 1.508437, 0.895197], [-0.479217, 1.508437, -0.895197]]}, 'C2H5': { 'description': "C2H5 radical, Staggered, Cs symm, 2-A'.", 'name': "C_2H_5 (2A')", 'database': 'G2-2', 'enthalpy': 28.9, 'ZPE': 36.5675, 'thermal correction': 3.0942, 'symbols': 'CCHHHHH', 'magmoms': [ 0., 1., 0., 0., 0., 0., 0.], 'charges': None, 'positions': [[-0.014359, -0.694617, 0. ], [-0.014359, 0.794473, 0. ], [ 1.006101, -1.104042, 0. ], [-0.517037, -1.093613, 0.884839], [-0.517037, -1.093613, -0.884839], [ 0.100137, 1.346065, 0.923705], [ 0.100137, 1.346065, -0.923705]]}, 'C3H7': { 'description': "(CH3)2CH radical, Cs symm, 2-A'.", 'name': "(CH_3)_2CH (2A')", 'database': 'G2-2', 'enthalpy': 21.5, 'ZPE': 54.2928, 'thermal correction': 3.8435, 'symbols': 'CCCHHHHHHH', 'magmoms': [ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], 'charges': None, 'positions': [[ 0.014223, 0.54385 , 0. ], [ 0.014223, -0.199742, 1.291572], [ 0.014223, -0.199742, -1.291572], [-0.32289 , 1.575329, 0. ], [ 0.221417, 0.459174, 2.138477], [ 0.221417, 0.459174, -2.138477], [-0.955157, -0.684629, 1.484633], [ 0.767181, -0.995308, 1.286239], [ 0.767181, -0.995308, -1.286239], [-0.955157, -0.684629, -1.484633]]}, 'C3H9C': { 'description': "t-Butyl radical, (CH3)3C, C3v symm.", 'name': "(CH_3)_3C (t-butyl radical)", 'database': 'G2-2', 'enthalpy': 12.3, 'ZPE': 71.7833, 'thermal correction': 4.6662, 'symbols': 'CCCCHHHHHHHHH', 'magmoms': [1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.191929], [ 0. , 1.478187, -0.020866], [ 1.280147, -0.739093, -0.020866], [-1.280147, -0.739093, -0.020866], [ 0. , 1.731496, -1.093792], [-0.887043, 1.945769, 0.417565], [ 0.887043, 1.945769, 0.417565], [ 1.49952 , -0.865748, -1.093792], [ 2.128607, -0.204683, 0.417565], [ 1.241564, -1.741086, 0.417565], [-1.49952 , -0.865748, -1.093792], [-1.241564, -1.741086, 0.417565], [-2.128607, -0.204683, 0.417565]]}, 'NO2': { 'description': "NO2 radical, C2v symm, 2-A1.", 'name': "NO_2", 'database': 'G2-2', 'enthalpy': 7.9, 'ZPE': 5.4631, 'thermal correction': 2.4366, 'symbols': 'NOO', 'magmoms': [ 1., 0., 0.], 'charges': None, 'positions': [[ 0. , 0. , 0.332273], [ 0. , 1.118122, -0.14537 ], [ 0. , -1.118122, -0.14537 ]]}, } # all constituent atoms atoms_g22 = [] for f in data.keys(): s = Atoms(symbols=data[f]['symbols'], positions=data[f]['positions']) for a in s: atoms_g22.append(a.symbol) # unique atoms atoms_g22 = list(set(atoms_g22)) # add remaining atoms from G2_1 from ase.data.g2_1 import data as data1 for a in atoms_g22: if not a in data.keys(): data[a] = data1[a] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/gmtkn30.py000066400000000000000000000275041316323560300233150ustar00rootroot00000000000000from __future__ import print_function import os import pprint import re try: from urllib import urlretrieve except ImportError: from urllib.request import urlretrieve import zipfile import shutil import datetime import numpy as np from ase.units import Bohr from ase.atom import Atom from ase.atoms import Atoms from ase.data import chemical_symbols # databases from http://toc.uni-muenster.de/GMTKN/GMTKN30/GMTKN30main.html url_root = 'http://www.thch.uni-bonn.de/tc/downloads/GMTKN/GMTKN30/' # we may store all downloaded files locally # (a good idea, but need to ask permission from the authors) #url_root = './GMTKN30/' databases = [ 'MB08-165', # 180 'W4-08', # 111 'G21IP', # 71 'G21EA', # 50 'PA', # 24 'SIE11', # 29 'BHPERI', # 61 'BH76', # 95 'RSE43', # 88 'O3ADD6', # 9 'G2RC', # 47 'AL2X', # 14 'NBPRC', # 21 'ISO34', # 63 'ISOL22', # 44 'DC9', # 19 'DARC', # 22 'ALK6', # 13 'BSR36', # 38 'IDISP', # 13 'WATER27', # 30 'S22', # 57 'ADIM6', # 12 'RG6', # 11 'HEAVY28', # 38 'PCONF', # 11 'ACONF', # 18 'SCONF', # 19 'CYCONF', # 11 ] database_files = {} for db in databases: database_files[db] = { 'structures': 'strucs/' + db + 'structures.zip', 'ref': db + 'ref.html', 'module': 'GMTKN30_' + db.replace('-', '_'), } for xc in ['PBE', 'PBE0', 'SVWN']: database_files[db][xc] = 'funcsGMTKN30/' + db + xc + '.html' def download_file(url, filename, dir='.'): # do not mirror subdirectory structure of url outfile = os.path.join(dir, os.path.basename(filename)) urlretrieve(os.path.join(url, filename), outfile) return outfile def read_charge_filter(s): try: return re.search('\(([-+]\d+)\)', s).group(1) except AttributeError: return False def read_charge(filename, dir='.'): fh = open(os.path.join(dir, filename), 'rb') lines = list(filter(read_charge_filter, fh.readlines())) charge = [] for line in lines: sline = line.split() charge.append((sline[0], float(re.search('\(([-+]\d+)\)', sline[1]).group(1)))) fh.close() return charge def read_charges(dirname, dir='.'): fullname = os.path.join(dir, dirname) for root, dirs, files in os.walk(fullname): for file in files: if file == 'README': # read charge/number of unpaired electrons file return read_charge(file, dir=root) break else: return [] def read_number_of_unpaired_electrons_filter(s): try: return re.search('\((\d+)\)', s).group(1) except AttributeError: return False def read_number_of_unpaired_electrons(filename, dir='.'): fh = open(os.path.join(dir, filename), 'rb') lines = list(filter(read_number_of_unpaired_electrons_filter, fh.readlines())) number_of_unpaired_electrons = [] for line in lines: sline = line.split() no_unpaired_electrons = float(re.search('\((\d+)\)', sline[1]).group(1)) number_of_unpaired_electrons.append((sline[0], no_unpaired_electrons)) fh.close() return number_of_unpaired_electrons def read_numbers_of_unpaired_electrons(dirname, dir='.'): fullname = os.path.join(dir, dirname) for root, dirs, files in os.walk(fullname): for file in files: if file == 'README': # read charge/number of unpaired electrons file return read_number_of_unpaired_electrons(file, dir=root) break else: return [] def read_geometry_filter(s): return (not s.startswith('$')) def read_geometry(filename, dir='.'): fh = open(os.path.join(dir, filename), 'rb') lines = list(filter(read_geometry_filter, fh.readlines())) # return geometry in ASE format geometry = [] for line in lines: sline = line.split() # find chemical symbol (the symbols in the file are lowercase) symbol = sline[-1] for s in chemical_symbols: if symbol == s.lower(): symbol = s break geometry.append(Atom(symbol=symbol, position=sline[:-1])) fh.close() atoms = Atoms(geometry) atoms.set_positions(atoms.get_positions()*Bohr) # convert to Angstrom return atoms def read_structures(dirname, dir='.'): fullname = os.path.join(dir, dirname) geometries = [] for root, dirs, files in os.walk(fullname): for file in files: if file != 'README': # skip file geometries.append((file, read_geometry(file, dir=root))) return geometries def read_html(filename, dir='.'): fh = open(os.path.join(dir, filename), 'rb') table = fh.read() # extract html table: help from David Landis table = table.split(']+>', '', table) # wrong table = re.sub('<.*?>', '', table) # remove end-of-line table = re.sub('\n', '', table) # split on columns table = table.split('TTRR') csv = [] separator = ':' # BHPERI contains chemical names with comas ncompounds = 0 for item in table: if item.find('TTDD')!=-1: item = item.strip().replace('TTDD', separator) # remove the first coma item = item[1:] litem = [] for f in item.split(separator): fs = f.strip() try: v = eval(fs) if fs.isdigit() and str(v) != fs: # e.g. undesirable eval('001') = 1 v = fs # string: NameError, .*[+-*], etc: SyntaxError except (NameError, SyntaxError): v = fs litem.append(v) # the number of compounds # (exclude reference value and reaction number and divide by 2) if ncompounds: assert ncompounds == (len(litem) - 2) // 2, 'Error: number of compounds incorrect for reaction: ' + str(litem[0]) + ' in file: ' + filename ncompounds = (len(litem) - 2) // 2 # set names of unused compounds to empty string for i in range(ncompounds): if litem[1+i] == 0: litem[1+i] = '' # move the reaction identifier to the end of list litem.append(litem.pop(0)) csv.append(litem) fh.close() # return the number of compounds per reaction, and the table return ncompounds, csv def table2reference(ncompounds, table): # convert from format given by read_html reactions = [] reference = {} for r in table: reaction_id = r[-1] reference[reaction_id] = r[-2] stoich = [] for c in range(ncompounds): if r[c] != '': # only defined compounds # compound names can have spaces around stoich.append((str(r[c]).strip(), r[c+ncompounds])) stoich.append(('reaction_id', reaction_id)) reactions.append(stoich) return reference, reactions def table2results(nsets, table, mode='default'): assert mode in ['default', 'D3'] # convert from format given by read_html if mode == 'default': index = 0 else: index = nsets reference = {} for r in table[:-3]: # ignore 3 last rows of statistics reaction_id = r[-1] if r[index] != '': # only defined compounds reference[reaction_id] = r[index] return reference def unzip_file(filename, dir='.'): # unzip contents of filename into dir fh = open(filename, 'rb') z = zipfile.ZipFile(fh) if not os.path.isdir(dir): os.mkdir(dir) for entry in z.namelist(): # skip spurious zip inside zip files (in HEAVY28) if entry.find('.zip') == -1: outfile = open(entry, 'wb') outfile.write(z.read(entry)) outfile.close() fh.close() def format_data(database, geometries, no_unpaired_electrons=[], charges=[]): "Return data in the custom format. " data = {} for geometry in geometries: system = geometry[0] atoms = geometry[1] # find the heaviest atom in the system heaviest = max([a.number for a in atoms]) heaviest_index = [a.number for a in atoms].index(heaviest) # find number of unpaired electrons if system in [s[0] for s in no_unpaired_electrons]: magmom = 0 for s, m in no_unpaired_electrons: if system == s: magmom = m break magmoms = [0.0 for a in atoms] # assume the magnetic moment on the heaviest atom in the system # this is incorrect, but is there a better way to set the magnetic moment? magmoms[heaviest_index] = float(magmom) usemagmoms = np.array(magmoms) else: usemagmoms = None # find charge, put it on the heaviest atom if system in [s[0] for s in charges]: charge = 0 for s, c in charges: if system == s: charge = c break cs = [0.0 for a in atoms] cs[heaviest_index] = float(charge) usecharges = np.array(cs) else: usecharges = None # populate data data[system] = { 'database': database, 'name': atoms.get_chemical_formula(), 'symbols': ''.join(atoms.get_chemical_symbols()), 'magmoms': usemagmoms, # None or list 'charges': usecharges, # None or list 'positions': atoms.get_positions(), } return data def main(): import os if not os.path.isdir('GMTKN30/strucs'): os.makedirs('GMTKN30/strucs') #for database in ['G2RC', 'WATER27']: for database in database_files.keys(): # all databases fh = open(database_files[database]['module'].lower() + '.py', 'w') fh.write('# Computer generated code! Hands off!\n') fh.write('# Generated: ' + str(datetime.date.today()) + '\n') fh.write('from numpy import array\n') fh.write('data = ') data = {} # specification of molecules info = {} # reference/calculation info # download structures file = database_files[database]['structures'] f = os.path.abspath(download_file(url_root, file, dir='GMTKN30/strucs')) fdir = os.path.splitext(os.path.basename(f))[0] unzip_file(f, dir=fdir) structures = read_structures(fdir) no_unpaired_electrons = read_numbers_of_unpaired_electrons(fdir) charges = read_charges(fdir) # remove temporary directory if os.path.isdir(fdir): shutil.rmtree(fdir) data = format_data(database, structures, no_unpaired_electrons, charges) pprint.pprint(data, stream=fh) fh.write('info = ') # download reference data info = {} file = database_files[database]['ref'] f = download_file(url_root, file, dir='GMTKN30') ncompounds, table = read_html(f) # transform table into reactions format reference, reactions = table2reference(ncompounds, table) info['reactions'] = reactions info['reaction energy'] = {} info['reaction energy']['reference'] = reference # download XC results for xc in ['PBE', 'PBE0', 'SVWN']: file = database_files[database][xc] f = download_file(url_root, file, dir='GMTKN30') nsets, table = read_html(f) # transform table into results format reference = table2results(nsets, table) info['reaction energy'][xc] = reference pprint.pprint(info, stream=fh) fh.close() if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/isotopes.py000066400000000000000000000046101316323560300236700ustar00rootroot00000000000000"""Isotope data extracted from NIST public website. Source data has been compiled by NIST: https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions-relative-atomic-masses The atomic weights data were published in: J. Meija et al, Atomic weights of the elements 2013, Pure and Applied Chemistry 88, 265-291 (2016). https://doi.org/10.1515/pac-2015-0305 http://www.ciaaw.org/atomic-weights.htm Isotopic compositions data were published in: Michael Berglund and Michael E. Wieser, Isotopic compositions of the elements 2009 (IUPAC Technical Report) Pure Appl. Chem., 2011, Vol. 83, No. 2, pp. 397-410 http://dx.doi.org/10.1351/PAC-REP-10-06-02 The relative atomic masses of the isotopes data were published in: M. Wang, G. Audi, A.H. Wapstra, F.G. Kondev, M. MacCormick, X. Xu, and B. Pfeiffer, The AME2012 Atomic Mass Evaluation, Chinese Phys. C 36 1603 http://dx.doi.org/10.1088/1674-1137/36/12/003 http://amdc.impcas.ac.cn/evaluation/data2012/ame.html """ def download_isotope_data(): """Download isotope data from NIST public website. Relative atomic masses of individual isotopes their abundance (mole fraction) are compiled into a dictionary. Individual items can be indexed by the atomic number and mass number, e.g. titanium-48: >>> from ase.data.isotopes import extract_isotope_data >>> isotopes = extract_isotope_data() >>> isotopes[22][48]['mass'] 47.94794198 >>> isotopes[22][48]['composition'] 0.7372 """ import requests raw_data = requests.get( 'http://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl' '?ele=&ascii=ascii&isotype=all').content.decode().splitlines() indexes = [idx for (idx, line) in enumerate(raw_data) if "_____" in line] isotopes = {} for idx1, idx2 in zip(indexes, indexes[1:]): atomic_number = int(raw_data[idx1 + 1].split()[0]) isotopes[atomic_number] = dct = {} for isotope_idx in range(idx1+1, idx2): mass_number = int(raw_data[isotope_idx][8:12]) # drop uncertainty mass = float(raw_data[isotope_idx][13:31].split('(')[0]) try: composition = float(raw_data[isotope_idx][32:46].split('(')[0]) except ValueError: composition = 0.0 dct[mass_number] = {'mass': mass, 'composition': composition} return isotopes ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/molecules.py000066400000000000000000000013601316323560300240120ustar00rootroot00000000000000def latex(name): """Convert name to LaTeX""" s = '$' last = False for i in name: if i.isalpha(): if not last: s = s + r'\rm{' last = True elif last: s = s + '}' last = False s = s + i if i.isalpha(): s = s + '}' s = s.replace(' ', r'\ ') + '$' return s def rest(name): """Convert name to reStructuredText.""" s = '' while name: c = name[0] if c == '_': s += r'\ :sub:`%s`\ ' % name[1] name = name[2:] elif c == '^': s += r'\ :sup:`%s`\ ' % name[1] name = name[2:] else: s += c name = name[1:] return s ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/s22.py000066400000000000000000006041271316323560300224420ustar00rootroot00000000000000""" The following contains the S22 and s26 databases of weakly interacting dimers and complexes S22 geometry data are from P. Jurecka, J. Sponer, J. Cerny, P. Hobza; Phys Chem Chem Phys 2006, 8 (17), 1985-1993. See http://www.begdb.com/index.php?action=106a6c241b8797f52e1e77317b96a201 for the original files. All geometries are optimized at either the CCSD(T) or MP2 level except for the methyl amide dimers where only the hydrogen position is optimized at the DFT level (the precise optimization is written as a comment). The S22 interaction energies are all calculated using both CCSD(T)/CBS counter poised corrected (CP) and MP2 /CBS CP. The original S22 interaction energies are listed in the above references. The S22 energies used here are from Takatani, T. et al., J. Chem. Phys., 132, 144104 (2010) where a large and more complete basis set has been used for all database members. The original S22 set has been expanded with an extra 4 single hydrogen bonded complexes. The expanded set is called S26. Data for the 4 extra dimers are from Riley, K.E., Hobza, P., J. Chem. Phys. A, 111(33), 8257-8263 (2007). Geometry optimizations: MP2/cc-pVTZ CP or DFT TPSS/TZVP noCP Interaction energies: CCSD(T)/CBS CP or MP2/cc-pVDZ CP The original s22 has also been expanded with 4 non-equilibrium structures for each system. This defines the s22x5 database containing one shortened and three elongated structures: 0.9, 1.0, 1.2, 1.5 and 2.0 times the original intermolecular distance. CCSD(T)/CBS interaction energies are consistent with the original s22 work. Reference: L. Grafova, M. Pitonak, P. Hobza, J. Chem. Theo. Comput., 2010, ASAP article. """ from ase.atoms import Atoms s22 = ['Ammonia_dimer','Water_dimer','Formic_acid_dimer','Formamide_dimer', 'Uracil_dimer_h-bonded','2-pyridoxine_2-aminopyridine_complex', 'Adenine-thymine_Watson-Crick_complex','Methane_dimer','Ethene_dimer', 'Benzene-methane_complex','Benzene_dimer_parallel_displaced','Pyrazine_dimer', 'Uracil_dimer_stack','Indole-benzene_complex_stack', 'Adenine-thymine_complex_stack','Ethene-ethyne_complex','Benzene-water_complex', 'Benzene-ammonia_complex','Benzene-HCN_complex','Benzene_dimer_T-shaped', 'Indole-benzene_T-shape_complex','Phenol_dimer'] s26 = s22 + ['Methanol_dimer','Methanol-formaldehyde_complex', 'Methyl_amide_dimer_alpha','Methyl_amide_dimer_beta'] s22x5 = ['Ammonia_dimer_0.9','Ammonia_dimer_1.0','Ammonia_dimer_1.2','Ammonia_dimer_1.5','Ammonia_dimer_2.0', 'Water_dimer_0.9','Water_dimer_1.0','Water_dimer_1.2','Water_dimer_1.5','Water_dimer_2.0', 'Formic_acid_dimer_0.9','Formic_acid_dimer_1.0','Formic_acid_dimer_1.2','Formic_acid_dimer_1.5','Formic_acid_dimer_2.0', 'Formamide_dimer_0.9','Formamide_dimer_1.0','Formamide_dimer_1.2','Formamide_dimer_1.5','Formamide_dimer_2.0', 'Uracil_dimer_h-bonded_0.9','Uracil_dimer_h-bonded_1.0','Uracil_dimer_h-bonded_1.2','Uracil_dimer_h-bonded_1.5','Uracil_dimer_h-bonded_2.0', '2-pyridoxine_2-aminopyridine_complex_0.9','2-pyridoxine_2-aminopyridine_complex_1.0', '2-pyridoxine_2-aminopyridine_complex_1.2','2-pyridoxine_2-aminopyridine_complex_1.5','2-pyridoxine_2-aminopyridine_complex_2.0', 'Adenine-thymine_Watson-Crick_complex_0.9','Adenine-thymine_Watson-Crick_complex_1.0', 'Adenine-thymine_Watson-Crick_complex_1.2','Adenine-thymine_Watson-Crick_complex_1.5','Adenine-thymine_Watson-Crick_complex_2.0', 'Methane_dimer_0.9','Methane_dimer_1.0','Methane_dimer_1.2','Methane_dimer_1.5','Methane_dimer_2.0', 'Ethene_dimer_0.9','Ethene_dimer_1.0','Ethene_dimer_1.2','Ethene_dimer_1.5','Ethene_dimer_2.0', 'Benzene-methane_complex_0.9','Benzene-methane_complex_1.0','Benzene-methane_complex_1.2','Benzene-methane_complex_1.5','Benzene-methane_complex_2.0', 'Benzene_dimer_parallel_displaced_0.9','Benzene_dimer_parallel_displaced_1.0', 'Benzene_dimer_parallel_displaced_1.2','Benzene_dimer_parallel_displaced_1.5','Benzene_dimer_parallel_displaced_2.0', 'Pyrazine_dimer_0.9','Pyrazine_dimer_1.0','Pyrazine_dimer_1.2','Pyrazine_dimer_1.5','Pyrazine_dimer_2.0', 'Uracil_dimer_stack_0.9','Uracil_dimer_stack_1.0','Uracil_dimer_stack_1.2','Uracil_dimer_stack_1.5','Uracil_dimer_stack_2.0', 'Indole-benzene_complex_stack_0.9','Indole-benzene_complex_stack_1.0', 'Indole-benzene_complex_stack_1.2','Indole-benzene_complex_stack_1.5','Indole-benzene_complex_stack_2.0', 'Adenine-thymine_complex_stack_0.9','Adenine-thymine_complex_stack_1.0', 'Adenine-thymine_complex_stack_1.2','Adenine-thymine_complex_stack_1.5','Adenine-thymine_complex_stack_2.0', 'Ethene-ethyne_complex_0.9','Ethene-ethyne_complex_1.0','Ethene-ethyne_complex_1.2','Ethene-ethyne_complex_1.5','Ethene-ethyne_complex_2.0', 'Benzene-water_complex_0.9','Benzene-water_complex_1.0','Benzene-water_complex_1.2','Benzene-water_complex_1.5','Benzene-water_complex_2.0', 'Benzene-ammonia_complex_0.9','Benzene-ammonia_complex_1.0','Benzene-ammonia_complex_1.2','Benzene-ammonia_complex_1.5','Benzene-ammonia_complex_2.0', 'Benzene-HCN_complex_0.9','Benzene-HCN_complex_1.0','Benzene-HCN_complex_1.2','Benzene-HCN_complex_1.5','Benzene-HCN_complex_2.0', 'Benzene_dimer_T-shaped_0.9','Benzene_dimer_T-shaped_1.0','Benzene_dimer_T-shaped_1.2','Benzene_dimer_T-shaped_1.5','Benzene_dimer_T-shaped_2.0', 'Indole-benzene_T-shape_complex_0.9','Indole-benzene_T-shape_complex_1.0', 'Indole-benzene_T-shape_complex_1.2','Indole-benzene_T-shape_complex_1.5','Indole-benzene_T-shape_complex_2.0', 'Phenol_dimer_0.9','Phenol_dimer_1.0','Phenol_dimer_1.2','Phenol_dimer_1.5','Phenol_dimer_2.0'] data = { # --- s22 and s22x5 ---# '2-pyridoxine_2-aminopyridine_complex': { 'description': "Complex, S22, S26, 2 h-bond, double h-bond, nucleic base model", 'name': "2-pyridoxine_2-aminopyridine_complex", 's26_number': "06", 'interaction energy CC': -0.7372, 'interaction energies s22x5': [-0.6561,-0.7242,-0.6041,-0.3547,-0.1414], 'offset': 0.0130, 'symbols': 'ONCCCCCHHHHHNCCCCCHHHHNHH', 'magmoms': None, 'dimer atoms': [12,13], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -1.3976213, -1.8858368, -0.3673061], [ -1.4642550, 0.3641828, 0.0192301], [ -4.1857398, 0.3696669, 0.0360960], [ -3.4832598, 1.5783111, 0.2500752], [ -2.1179502, 1.5307048, 0.2338383], [ -2.0773833, -0.8637492, -0.1899414], [ -3.5156032, -0.8051950, -0.1757585], [ -5.2678045, 0.3707428, 0.0411419], [ -3.9920334, 2.5127560, 0.4214414], [ -1.4929196, 2.3984096, 0.3885018], [ -4.0401226, -1.7348452, -0.3379269], [ -0.4265266, 0.3612127, 0.0073538], [ 1.4327616, 0.3639703, -0.0159508], [ 2.1154200, -0.7803450, 0.1681099], [ 3.5237586, -0.8016096, 0.1545027], [ 4.2185897, 0.3735783, -0.0525929], [ 3.5099708, 1.5615014, -0.2449763], [ 2.1280138, 1.4953324, -0.2175374], [ 4.0459206, -1.7361356, 0.3076883], [ 5.2999426, 0.3666009, -0.0663349], [ 4.0110923, 2.5024313, -0.4130052], [ 1.5339878, 2.3893837, -0.3670565], [ 1.3883123, -1.9083038, 0.4198149], [ 1.8694714, -2.7812773, 0.2940385], [ 0.4089067, -1.9079942, 0.1300860]], 'positions 0.9':[[ -0.969652624 , -2.245611164 , -0.386822525 ], [ -1.037789793 , 0.004508753 , -0.001131127 ], [ -3.759261297 , 0.014028068 , -0.018375760 ], [ -3.057727058 , 1.221631156 , 0.204402100 ], [ -1.692392879 , 1.172000703 , 0.205277859 ], [ -1.650068007 , -1.222514751 , -0.217981663 ], [ -3.088264390 , -1.161828225 , -0.221825966 ], [ -4.841300764 , 0.016708498 , -0.026892047 ], [ -3.567221821 , 2.156831083 , 0.369386687 ], [ -1.068064568 , 2.038779450 , 0.367771502 ], [ -3.612088503 , -2.090701001 , -0.390563867 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 1.673493386 , 0.000000000 , 0.000000000 ], [ 2.352093429 , -1.145324213 , 0.192591910 ], [ 3.760459273 , -1.168677470 , 0.196637005 ], [ 4.459573002 , 0.005477083 , -0.001723239 ], [ 3.755182987 , 1.194447664 , -0.202961469 ], [ 2.372894041 , 1.130328028 , -0.192845808 ], [ 4.279274134 , -2.103975233 , 0.356345736 ], [ 5.541001766 , -0.003103367 , -0.001911235 ], [ 4.259765167 , 2.134632052 , -0.364687797 ], [ 1.782114958 , 2.025258423 , -0.349790900 ], [ 1.620216197 , -2.272201547 , 0.435153550 ], [ 2.101618920 , -3.145888174 , 0.315408858 ], [ 0.644520940 , -2.270442069 , 0.133172072 ]], 'positions 1.0':[[ -0.969652624000000 , -2.245611164000000 , -0.386822525000000 ], [ -1.037789793000000 , 0.004508753000000 , -0.001131127000000 ], [ -3.759261297000000 , 0.014028068000000 , -0.018375760000000 ], [ -3.057727058000000 , 1.221631156000000 , 0.204402100000000 ], [ -1.692392879000000 , 1.172000703000000 , 0.205277859000000 ], [ -1.650068007000000 , -1.222514751000000 , -0.217981663000000 ], [ -3.088264390000000 , -1.161828225000000 , -0.221825966000000 ], [ -4.841300764000000 , 0.016708498000000 , -0.026892047000000 ], [ -3.567221821000000 , 2.156831083000000 , 0.369386687000000 ], [ -1.068064568000000 , 2.038779450000000 , 0.367771502000000 ], [ -3.612088503000000 , -2.090701001000000 , -0.390563867000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ 1.859437095454546 , 0.000000000000000 , 0.000000000000000 ], [ 2.538037138454545 , -1.145324213000000 , 0.192591910000000 ], [ 3.946402982454545 , -1.168677470000000 , 0.196637005000000 ], [ 4.645516711454546 , 0.005477083000000 , -0.001723239000000 ], [ 3.941126696454545 , 1.194447664000000 , -0.202961469000000 ], [ 2.558837750454545 , 1.130328028000000 , -0.192845808000000 ], [ 4.465217843454545 , -2.103975233000000 , 0.356345736000000 ], [ 5.726945475454546 , -0.003103367000000 , -0.001911235000000 ], [ 4.445708876454546 , 2.134632052000000 , -0.364687797000000 ], [ 1.968058667454545 , 2.025258423000000 , -0.349790900000000 ], [ 1.806159906454545 , -2.272201547000000 , 0.435153550000000 ], [ 2.287562629454545 , -3.145888174000000 , 0.315408858000000 ], [ 0.830464649454546 , -2.270442069000000 , 0.133172072000000 ]], 'positions 1.2':[[ -0.969652624 , -2.245611164 , -0.386822525 ], [ -1.037789793 , 0.004508753 , -0.001131127 ], [ -3.759261297 , 0.014028068 , -0.018375760 ], [ -3.057727058 , 1.221631156 , 0.204402100 ], [ -1.692392879 , 1.172000703 , 0.205277859 ], [ -1.650068007 , -1.222514751 , -0.217981663 ], [ -3.088264390 , -1.161828225 , -0.221825966 ], [ -4.841300764 , 0.016708498 , -0.026892047 ], [ -3.567221821 , 2.156831083 , 0.369386687 ], [ -1.068064568 , 2.038779450 , 0.367771502 ], [ -3.612088503 , -2.090701001 , -0.390563867 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.231324514 , 0.000000000 , 0.000000000 ], [ 2.909924557 , -1.145324213 , 0.192591910 ], [ 4.318290401 , -1.168677470 , 0.196637005 ], [ 5.017404130 , 0.005477083 , -0.001723239 ], [ 4.313014115 , 1.194447664 , -0.202961469 ], [ 2.930725169 , 1.130328028 , -0.192845808 ], [ 4.837105262 , -2.103975233 , 0.356345736 ], [ 6.098832894 , -0.003103367 , -0.001911235 ], [ 4.817596295 , 2.134632052 , -0.364687797 ], [ 2.339946086 , 2.025258423 , -0.349790900 ], [ 2.178047325 , -2.272201547 , 0.435153550 ], [ 2.659450048 , -3.145888174 , 0.315408858 ], [ 1.202352068 , -2.270442069 , 0.133172072 ]], 'positions 1.5':[[ -0.969652624 , -2.245611164 , -0.386822525 ], [ -1.037789793 , 0.004508753 , -0.001131127 ], [ -3.759261297 , 0.014028068 , -0.018375760 ], [ -3.057727058 , 1.221631156 , 0.204402100 ], [ -1.692392879 , 1.172000703 , 0.205277859 ], [ -1.650068007 , -1.222514751 , -0.217981663 ], [ -3.088264390 , -1.161828225 , -0.221825966 ], [ -4.841300764 , 0.016708498 , -0.026892047 ], [ -3.567221821 , 2.156831083 , 0.369386687 ], [ -1.068064568 , 2.038779450 , 0.367771502 ], [ -3.612088503 , -2.090701001 , -0.390563867 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.789155642 , 0.000000000 , 0.000000000 ], [ 3.467755685 , -1.145324213 , 0.192591910 ], [ 4.876121529 , -1.168677470 , 0.196637005 ], [ 5.575235258 , 0.005477083 , -0.001723239 ], [ 4.870845243 , 1.194447664 , -0.202961469 ], [ 3.488556297 , 1.130328028 , -0.192845808 ], [ 5.394936390 , -2.103975233 , 0.356345736 ], [ 6.656664022 , -0.003103367 , -0.001911235 ], [ 5.375427423 , 2.134632052 , -0.364687797 ], [ 2.897777214 , 2.025258423 , -0.349790900 ], [ 2.735878453 , -2.272201547 , 0.435153550 ], [ 3.217281176 , -3.145888174 , 0.315408858 ], [ 1.760183196 , -2.270442069 , 0.133172072 ]], 'positions 2.0':[[ -0.969652624 , -2.245611164 , -0.386822525 ], [ -1.037789793 , 0.004508753 , -0.001131127 ], [ -3.759261297 , 0.014028068 , -0.018375760 ], [ -3.057727058 , 1.221631156 , 0.204402100 ], [ -1.692392879 , 1.172000703 , 0.205277859 ], [ -1.650068007 , -1.222514751 , -0.217981663 ], [ -3.088264390 , -1.161828225 , -0.221825966 ], [ -4.841300764 , 0.016708498 , -0.026892047 ], [ -3.567221821 , 2.156831083 , 0.369386687 ], [ -1.068064568 , 2.038779450 , 0.367771502 ], [ -3.612088503 , -2.090701001 , -0.390563867 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 3.718874190 , 0.000000000 , 0.000000000 ], [ 4.397474233 , -1.145324213 , 0.192591910 ], [ 5.805840077 , -1.168677470 , 0.196637005 ], [ 6.504953806 , 0.005477083 , -0.001723239 ], [ 5.800563791 , 1.194447664 , -0.202961469 ], [ 4.418274845 , 1.130328028 , -0.192845808 ], [ 6.324654938 , -2.103975233 , 0.356345736 ], [ 7.586382570 , -0.003103367 , -0.001911235 ], [ 6.305145971 , 2.134632052 , -0.364687797 ], [ 3.827495762 , 2.025258423 , -0.349790900 ], [ 3.665597001 , -2.272201547 , 0.435153550 ], [ 4.146999724 , -3.145888174 , 0.315408858 ], [ 2.689901744 , -2.270442069 , 0.133172072 ]]}, 'Adenine-thymine_complex_stack': { 'description': "Complex, S22, S26, stack, dispersion bonded, nucleic base", 'name': "Adenine-thymine_complex_stack", 's26_number': "15", 'interaction energy CC': -0.5056, 'interaction energies s22x5':[-0.3465,-0.5299,-0.3569,-0.1409,-0.0399], 'offset': -0.0243, 'symbols': 'NCHNCCNHHNCHNCHNCHCCHHHCONHCOH', 'magmoms': None, 'dimer atoms': [15,15], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 0.2793014, 2.4068393, -0.6057517], [ -1.0848570, 2.4457461, -0.5511608], [ -1.6594403, 3.0230294, -1.2560905], [ -1.5977117, 1.7179877, 0.4287543], [ -0.4897255, 1.1714358, 1.0301910], [ -0.3461366, 0.2914710, 2.1172343], [ -1.4187090, -0.1677767, 2.8101441], [ -1.2388750, -0.9594802, 3.4047578], [ -2.2918734, -0.1788223, 2.3073619], [ 0.8857630, -0.0700763, 2.4919494], [ 1.9352348, 0.4072878, 1.7968022], [ 2.9060330, 0.0788414, 2.1458181], [ 1.9409775, 1.2242019, 0.7402202], [ 0.6952186, 1.5779858, 0.4063984], [ 0.8610073, 2.8298045, -1.3104502], [ 1.2754606, -0.6478993, -1.9779104], [ 1.4130533, -1.5536850, -0.9550667], [ 2.4258769, -1.8670780, -0.7468778], [ 0.3575976, -2.0239499, -0.2530575], [ 0.4821292, -3.0179494, 0.8521221], [ 0.1757705, -2.5756065, 1.7986281], [ -0.1601691, -3.8770412, 0.6639498], [ 1.5112443, -3.3572767, 0.9513659], [ -0.9684711, -1.5298112, -0.5939792], [ -2.0029280, -1.8396957, -0.0199453], [ -0.9956916, -0.6383870, -1.6720420], [ -1.9014057, -0.2501720, -1.8985760], [ 0.0684702, -0.1191762, -2.3763759], [ -0.0397875, 0.7227006, -3.2531083], [ 2.0853289, -0.2760176, -2.4454577]], 'positions 0.9':[[ 0.067390759 , 1.213806097 , -1.171192513 ], [ -0.034440687 , 0.160916029 , -2.035179690 ], [ -0.037909102 , 0.307694674 , -3.102311444 ], [ -0.122286497 , -1.014214485 , -1.431659388 ], [ -0.061278153 , -0.690156063 , -0.097738525 ], [ -0.083866474 , -1.480006435 , 1.065121981 ], [ -0.207551291 , -2.830167865 , 1.008466281 ], [ 0.020236002 , -3.318294510 , 1.858492777 ], [ 0.100823981 , -3.261839820 , 0.151791829 ], [ -0.015107287 , -0.872886238 , 2.254820437 ], [ 0.095534438 , 0.468473589 , 2.286592142 ], [ 0.148443656 , 0.902433537 , 3.277055537 ], [ 0.150791629 , 1.330817541 , 1.268232413 ], [ 0.061278153 , 0.690156063 , 0.097738525 ], [ 0.213123816 , 2.178532043 , -1.420082564 ], [ 2.995457244 , 1.318912569 , 0.115169333 ], [ 3.033773997 , 0.544134785 , 1.248235461 ], [ 3.166936649 , 1.084216460 , 2.174491246 ], [ 2.913123372 , -0.802036026 , 1.213306349 ], [ 2.965573998 , -1.664227788 , 2.429380731 ], [ 2.009790775 , -2.161867438 , 2.585037720 ], [ 3.726416066 , -2.435033978 , 2.315487569 ], [ 3.189128467 , -1.070628980 , 3.313538183 ], [ 2.718644614 , -1.440326451 , -0.080379664 ], [ 2.558245305 , -2.640081851 , -0.255033817 ], [ 2.729839539 , -0.560837886 , -1.168484485 ], [ 2.554150647 , -0.977998743 , -2.072617562 ], [ 2.814781928 , 0.814169728 , -1.152798148 ], [ 2.732113465 , 1.513854058 , -2.149163262 ], [ 3.033823338 , 2.322516737 , 0.179118562 ]], 'positions 1.0':[[ 0.067390759000000 , 1.213806097000000 , -1.171192513000000 ], [ -0.034440687000000 , 0.160916029000000 , -2.035179690000000 ], [ -0.037909102000000 , 0.307694674000000 , -3.102311444000000 ], [ -0.122286497000000 , -1.014214485000000 , -1.431659388000000 ], [ -0.061278153000000 , -0.690156063000000 , -0.097738525000000 ], [ -0.083866474000000 , -1.480006435000000 , 1.065121981000000 ], [ -0.207551291000000 , -2.830167865000000 , 1.008466281000000 ], [ 0.020236002000000 , -3.318294510000000 , 1.858492777000000 ], [ 0.100823981000000 , -3.261839820000000 , 0.151791829000000 ], [ -0.015107287000000 , -0.872886238000000 , 2.254820437000000 ], [ 0.095534438000000 , 0.468473589000000 , 2.286592142000000 ], [ 0.148443656000000 , 0.902433537000000 , 3.277055537000000 ], [ 0.150791629000000 , 1.330817541000000 , 1.268232413000000 ], [ 0.061278153000000 , 0.690156063000000 , 0.097738525000000 ], [ 0.213123816000000 , 2.178532043000000 , -1.420082564000000 ], [ 3.314050951181818 , 1.318912569000000 , 0.115169333000000 ], [ 3.352367704181818 , 0.544134785000000 , 1.248235461000000 ], [ 3.485530356181818 , 1.084216460000000 , 2.174491246000000 ], [ 3.231717079181818 , -0.802036026000000 , 1.213306349000000 ], [ 3.284167705181818 , -1.664227788000000 , 2.429380731000000 ], [ 2.328384482181818 , -2.161867438000000 , 2.585037720000000 ], [ 4.045009773181818 , -2.435033978000000 , 2.315487569000000 ], [ 3.507722174181819 , -1.070628980000000 , 3.313538183000000 ], [ 3.037238321181818 , -1.440326451000000 , -0.080379664000000 ], [ 2.876839012181818 , -2.640081851000000 , -0.255033817000000 ], [ 3.048433246181818 , -0.560837886000000 , -1.168484485000000 ], [ 2.872744354181818 , -0.977998743000000 , -2.072617562000000 ], [ 3.133375635181818 , 0.814169728000000 , -1.152798148000000 ], [ 3.050707172181818 , 1.513854058000000 , -2.149163262000000 ], [ 3.352417045181818 , 2.322516737000000 , 0.179118562000000 ]], 'positions 1.2':[[ 0.067390759 , 1.213806097 , -1.171192513 ], [ -0.034440687 , 0.160916029 , -2.035179690 ], [ -0.037909102 , 0.307694674 , -3.102311444 ], [ -0.122286497 , -1.014214485 , -1.431659388 ], [ -0.061278153 , -0.690156063 , -0.097738525 ], [ -0.083866474 , -1.480006435 , 1.065121981 ], [ -0.207551291 , -2.830167865 , 1.008466281 ], [ 0.020236002 , -3.318294510 , 1.858492777 ], [ 0.100823981 , -3.261839820 , 0.151791829 ], [ -0.015107287 , -0.872886238 , 2.254820437 ], [ 0.095534438 , 0.468473589 , 2.286592142 ], [ 0.148443656 , 0.902433537 , 3.277055537 ], [ 0.150791629 , 1.330817541 , 1.268232413 ], [ 0.061278153 , 0.690156063 , 0.097738525 ], [ 0.213123816 , 2.178532043 , -1.420082564 ], [ 3.951238365 , 1.318912569 , 0.115169333 ], [ 3.989555118 , 0.544134785 , 1.248235461 ], [ 4.122717770 , 1.084216460 , 2.174491246 ], [ 3.868904493 , -0.802036026 , 1.213306349 ], [ 3.921355119 , -1.664227788 , 2.429380731 ], [ 2.965571896 , -2.161867438 , 2.585037720 ], [ 4.682197187 , -2.435033978 , 2.315487569 ], [ 4.144909588 , -1.070628980 , 3.313538183 ], [ 3.674425735 , -1.440326451 , -0.080379664 ], [ 3.514026426 , -2.640081851 , -0.255033817 ], [ 3.685620660 , -0.560837886 , -1.168484485 ], [ 3.509931768 , -0.977998743 , -2.072617562 ], [ 3.770563049 , 0.814169728 , -1.152798148 ], [ 3.687894586 , 1.513854058 , -2.149163262 ], [ 3.989604459 , 2.322516737 , 0.179118562 ]], 'positions 1.5':[[ 0.067390759 , 1.213806097 , -1.171192513 ], [ -0.034440687 , 0.160916029 , -2.035179690 ], [ -0.037909102 , 0.307694674 , -3.102311444 ], [ -0.122286497 , -1.014214485 , -1.431659388 ], [ -0.061278153 , -0.690156063 , -0.097738525 ], [ -0.083866474 , -1.480006435 , 1.065121981 ], [ -0.207551291 , -2.830167865 , 1.008466281 ], [ 0.020236002 , -3.318294510 , 1.858492777 ], [ 0.100823981 , -3.261839820 , 0.151791829 ], [ -0.015107287 , -0.872886238 , 2.254820437 ], [ 0.095534438 , 0.468473589 , 2.286592142 ], [ 0.148443656 , 0.902433537 , 3.277055537 ], [ 0.150791629 , 1.330817541 , 1.268232413 ], [ 0.061278153 , 0.690156063 , 0.097738525 ], [ 0.213123816 , 2.178532043 , -1.420082564 ], [ 4.907019487 , 1.318912569 , 0.115169333 ], [ 4.945336240 , 0.544134785 , 1.248235461 ], [ 5.078498892 , 1.084216460 , 2.174491246 ], [ 4.824685615 , -0.802036026 , 1.213306349 ], [ 4.877136241 , -1.664227788 , 2.429380731 ], [ 3.921353018 , -2.161867438 , 2.585037720 ], [ 5.637978309 , -2.435033978 , 2.315487569 ], [ 5.100690710 , -1.070628980 , 3.313538183 ], [ 4.630206857 , -1.440326451 , -0.080379664 ], [ 4.469807548 , -2.640081851 , -0.255033817 ], [ 4.641401782 , -0.560837886 , -1.168484485 ], [ 4.465712890 , -0.977998743 , -2.072617562 ], [ 4.726344171 , 0.814169728 , -1.152798148 ], [ 4.643675708 , 1.513854058 , -2.149163262 ], [ 4.945385581 , 2.322516737 , 0.179118562 ]], 'positions 2.0':[[ 0.067390759 , 1.213806097 , -1.171192513 ], [ -0.034440687 , 0.160916029 , -2.035179690 ], [ -0.037909102 , 0.307694674 , -3.102311444 ], [ -0.122286497 , -1.014214485 , -1.431659388 ], [ -0.061278153 , -0.690156063 , -0.097738525 ], [ -0.083866474 , -1.480006435 , 1.065121981 ], [ -0.207551291 , -2.830167865 , 1.008466281 ], [ 0.020236002 , -3.318294510 , 1.858492777 ], [ 0.100823981 , -3.261839820 , 0.151791829 ], [ -0.015107287 , -0.872886238 , 2.254820437 ], [ 0.095534438 , 0.468473589 , 2.286592142 ], [ 0.148443656 , 0.902433537 , 3.277055537 ], [ 0.150791629 , 1.330817541 , 1.268232413 ], [ 0.061278153 , 0.690156063 , 0.097738525 ], [ 0.213123816 , 2.178532043 , -1.420082564 ], [ 6.499988023 , 1.318912569 , 0.115169333 ], [ 6.538304776 , 0.544134785 , 1.248235461 ], [ 6.671467428 , 1.084216460 , 2.174491246 ], [ 6.417654151 , -0.802036026 , 1.213306349 ], [ 6.470104777 , -1.664227788 , 2.429380731 ], [ 5.514321554 , -2.161867438 , 2.585037720 ], [ 7.230946845 , -2.435033978 , 2.315487569 ], [ 6.693659246 , -1.070628980 , 3.313538183 ], [ 6.223175393 , -1.440326451 , -0.080379664 ], [ 6.062776084 , -2.640081851 , -0.255033817 ], [ 6.234370318 , -0.560837886 , -1.168484485 ], [ 6.058681426 , -0.977998743 , -2.072617562 ], [ 6.319312707 , 0.814169728 , -1.152798148 ], [ 6.236644244 , 1.513854058 , -2.149163262 ], [ 6.538354117 , 2.322516737 , 0.179118562 ]]}, 'Adenine-thymine_Watson-Crick_complex': { 'description': "Complex, S22, S26, 2 h-bonds, double h-bond, nucleic base", 'name': "Adenine-thymine_Watson-Crick_complex", 's26_number': "07", 'interaction energy CC':-0.7259, 'interaction energies s22x5':[-0.6513,-0.7099,-0.5767,-0.3222,-0.1123], 'offset': 0.0160, 'symbols': 'NCCCNCNCNNHHHHHNCCCNCCOOHHHHHH', 'magmoms': None, 'dimer atoms': [15,15], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 0.9350155, -0.0279801, -0.3788916], [ 1.6739638, -0.0357766, 0.7424316], [ 3.0747955, -0.0094480, 0.5994562], [ 3.5646109, 0.0195446, -0.7059872], [ 2.8531510, 0.0258031, -1.8409596], [ 1.5490760, 0.0012569, -1.5808009], [ 4.0885824, -0.0054429, 1.5289786], [ 5.1829921, 0.0253971, 0.7872176], [ 4.9294871, 0.0412404, -0.5567274], [ 1.0716177, -0.0765366, 1.9391390], [ 0.8794435, 0.0050260, -2.4315709], [ 6.1882591, 0.0375542, 1.1738824], [ 5.6035368, 0.0648755, -1.3036811], [ 0.0586915, -0.0423765, 2.0039181], [ 1.6443796, -0.0347395, 2.7619159], [ -3.9211729, -0.0009646, -1.5163659], [ -4.6136833, 0.0169051, -0.3336520], [ -3.9917387, 0.0219348, 0.8663338], [ -2.5361367, 0.0074651, 0.8766724], [ -1.9256484, -0.0110593, -0.3638948], [ -2.5395897, -0.0149474, -1.5962357], [ -4.7106131, 0.0413373, 2.1738637], [ -1.8674730, 0.0112093, 1.9120833], [ -1.9416783, -0.0291878, -2.6573783], [ -4.4017172, -0.0036078, -2.4004924], [ -0.8838255, -0.0216168, -0.3784269], [ -5.6909220, 0.0269347, -0.4227183], [ -4.4439282, -0.8302573, 2.7695655], [ -4.4267056, 0.9186178, 2.7530256], [ -5.7883971, 0.0505530, 2.0247280]], 'positions 0.9':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.738685058 , -0.157889771 , 1.110355410 ], [ -2.139452884 , -0.168053559 , 0.964712563 ], [ -2.629497187 , -0.008665792 , -0.331201352 ], [ -1.918309833 , 0.152634753 , -1.454844039 ], [ -0.614262216 , 0.143659867 , -1.193547121 ], [ -3.152980999 , -0.310697201 , 1.883518666 ], [ -4.247466012 , -0.237200328 , 1.144874976 ], [ -3.994250734 , -0.056604504 , -0.187030096 ], [ -0.136179412 , -0.289433845 , 2.300428025 ], [ 0.055161346 , 0.265959015 , -2.035655088 ], [ -5.252585445 , -0.308958331 , 1.525406574 ], [ -4.668404863 , 0.026245320 , -0.929656824 ], [ 0.876876426 , -0.329105732 , 2.359811410 ], [ -0.708581316 , -0.452407073 , 3.108240602 ], [ 4.674076612 , 0.155627547 , -1.128075158 ], [ 5.366947235 , -0.031573530 , 0.039652507 ], [ 4.745331442 , -0.213180550 , 1.225999310 ], [ 3.289690418 , -0.205459536 , 1.237959001 ], [ 2.678823212 , -0.008913767 , 0.013109028 ], [ 3.292432779 , 0.176239188 , -1.205417098 ], [ 5.464603172 , -0.419950938 , 2.517000917 ], [ 2.621308338 , -0.362031655 , 2.261654302 ], [ 2.694203350 , 0.342506569 , -2.253367774 ], [ 5.154382378 , 0.288458351 , -2.002300903 ], [ 1.636966971 , 0.000000000 , 0.000000000 ], [ 6.444191927 , -0.024779868 , -0.049650000 ], [ 5.195022957 , 0.354841198 , 3.233018736 ], [ 5.183915029 , -1.373098243 , 2.962397530 ], [ 6.542374655 , -0.403617008 , 2.368385087 ]], 'positions 1.0':[[ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -0.738685058000000 , -0.157889771000000 , 1.110355410000000 ], [ -2.139452884000000 , -0.168053559000000 , 0.964712563000000 ], [ -2.629497187000000 , -0.008665792000000 , -0.331201352000000 ], [ -1.918309833000000 , 0.152634753000000 , -1.454844039000000 ], [ -0.614262216000000 , 0.143659867000000 , -1.193547121000000 ], [ -3.152980999000000 , -0.310697201000000 , 1.883518666000000 ], [ -4.247466012000000 , -0.237200328000000 , 1.144874976000000 ], [ -3.994250734000000 , -0.056604504000000 , -0.187030096000000 ], [ -0.136179412000000 , -0.289433845000000 , 2.300428025000000 ], [ 0.055161346000000 , 0.265959015000000 , -2.035655088000000 ], [ -5.252585445000000 , -0.308958331000000 , 1.525406574000000 ], [ -4.668404863000000 , 0.026245320000000 , -0.929656824000000 ], [ 0.876876426000000 , -0.329105732000000 , 2.359811410000000 ], [ -0.708581316000000 , -0.452407073000000 , 3.108240602000000 ], [ 4.855961831000000 , 0.155627547000000 , -1.128075158000000 ], [ 5.548832453999999 , -0.031573530000000 , 0.039652507000000 ], [ 4.927216661000000 , -0.213180550000000 , 1.225999310000000 ], [ 3.471575637000000 , -0.205459536000000 , 1.237959001000000 ], [ 2.860708431000000 , -0.008913767000000 , 0.013109028000000 ], [ 3.474317998000000 , 0.176239188000000 , -1.205417098000000 ], [ 5.646488391000000 , -0.419950938000000 , 2.517000917000000 ], [ 2.803193557000000 , -0.362031655000000 , 2.261654302000000 ], [ 2.876088569000000 , 0.342506569000000 , -2.253367774000000 ], [ 5.336267597000000 , 0.288458351000000 , -2.002300903000000 ], [ 1.818852190000000 , 0.000000000000000 , 0.000000000000000 ], [ 6.626077146000000 , -0.024779868000000 , -0.049650000000000 ], [ 5.376908176000000 , 0.354841198000000 , 3.233018736000000 ], [ 5.365800247999999 , -1.373098243000000 , 2.962397530000000 ], [ 6.724259873999999 , -0.403617008000000 , 2.368385087000000 ]], 'positions 1.2':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.738685058 , -0.157889771 , 1.110355410 ], [ -2.139452884 , -0.168053559 , 0.964712563 ], [ -2.629497187 , -0.008665792 , -0.331201352 ], [ -1.918309833 , 0.152634753 , -1.454844039 ], [ -0.614262216 , 0.143659867 , -1.193547121 ], [ -3.152980999 , -0.310697201 , 1.883518666 ], [ -4.247466012 , -0.237200328 , 1.144874976 ], [ -3.994250734 , -0.056604504 , -0.187030096 ], [ -0.136179412 , -0.289433845 , 2.300428025 ], [ 0.055161346 , 0.265959015 , -2.035655088 ], [ -5.252585445 , -0.308958331 , 1.525406574 ], [ -4.668404863 , 0.026245320 , -0.929656824 ], [ 0.876876426 , -0.329105732 , 2.359811410 ], [ -0.708581316 , -0.452407073 , 3.108240602 ], [ 5.219732269 , 0.155627547 , -1.128075158 ], [ 5.912602892 , -0.031573530 , 0.039652507 ], [ 5.290987099 , -0.213180550 , 1.225999310 ], [ 3.835346075 , -0.205459536 , 1.237959001 ], [ 3.224478869 , -0.008913767 , 0.013109028 ], [ 3.838088436 , 0.176239188 , -1.205417098 ], [ 6.010258829 , -0.419950938 , 2.517000917 ], [ 3.166963995 , -0.362031655 , 2.261654302 ], [ 3.239859007 , 0.342506569 , -2.253367774 ], [ 5.700038035 , 0.288458351 , -2.002300903 ], [ 2.182622628 , 0.000000000 , 0.000000000 ], [ 6.989847584 , -0.024779868 , -0.049650000 ], [ 5.740678614 , 0.354841198 , 3.233018736 ], [ 5.729570686 , -1.373098243 , 2.962397530 ], [ 7.088030312 , -0.403617008 , 2.368385087 ]], 'positions 1.5':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.738685058 , -0.157889771 , 1.110355410 ], [ -2.139452884 , -0.168053559 , 0.964712563 ], [ -2.629497187 , -0.008665792 , -0.331201352 ], [ -1.918309833 , 0.152634753 , -1.454844039 ], [ -0.614262216 , 0.143659867 , -1.193547121 ], [ -3.152980999 , -0.310697201 , 1.883518666 ], [ -4.247466012 , -0.237200328 , 1.144874976 ], [ -3.994250734 , -0.056604504 , -0.187030096 ], [ -0.136179412 , -0.289433845 , 2.300428025 ], [ 0.055161346 , 0.265959015 , -2.035655088 ], [ -5.252585445 , -0.308958331 , 1.525406574 ], [ -4.668404863 , 0.026245320 , -0.929656824 ], [ 0.876876426 , -0.329105732 , 2.359811410 ], [ -0.708581316 , -0.452407073 , 3.108240602 ], [ 5.765387926 , 0.155627547 , -1.128075158 ], [ 6.458258549 , -0.031573530 , 0.039652507 ], [ 5.836642756 , -0.213180550 , 1.225999310 ], [ 4.381001732 , -0.205459536 , 1.237959001 ], [ 3.770134526 , -0.008913767 , 0.013109028 ], [ 4.383744093 , 0.176239188 , -1.205417098 ], [ 6.555914486 , -0.419950938 , 2.517000917 ], [ 3.712619652 , -0.362031655 , 2.261654302 ], [ 3.785514664 , 0.342506569 , -2.253367774 ], [ 6.245693692 , 0.288458351 , -2.002300903 ], [ 2.728278285 , 0.000000000 , 0.000000000 ], [ 7.535503241 , -0.024779868 , -0.049650000 ], [ 6.286334271 , 0.354841198 , 3.233018736 ], [ 6.275226343 , -1.373098243 , 2.962397530 ], [ 7.633685969 , -0.403617008 , 2.368385087 ]], 'positions 2.0':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.738685058 , -0.157889771 , 1.110355410 ], [ -2.139452884 , -0.168053559 , 0.964712563 ], [ -2.629497187 , -0.008665792 , -0.331201352 ], [ -1.918309833 , 0.152634753 , -1.454844039 ], [ -0.614262216 , 0.143659867 , -1.193547121 ], [ -3.152980999 , -0.310697201 , 1.883518666 ], [ -4.247466012 , -0.237200328 , 1.144874976 ], [ -3.994250734 , -0.056604504 , -0.187030096 ], [ -0.136179412 , -0.289433845 , 2.300428025 ], [ 0.055161346 , 0.265959015 , -2.035655088 ], [ -5.252585445 , -0.308958331 , 1.525406574 ], [ -4.668404863 , 0.026245320 , -0.929656824 ], [ 0.876876426 , -0.329105732 , 2.359811410 ], [ -0.708581316 , -0.452407073 , 3.108240602 ], [ 6.674814021 , 0.155627547 , -1.128075158 ], [ 7.367684644 , -0.031573530 , 0.039652507 ], [ 6.746068851 , -0.213180550 , 1.225999310 ], [ 5.290427827 , -0.205459536 , 1.237959001 ], [ 4.679560621 , -0.008913767 , 0.013109028 ], [ 5.293170188 , 0.176239188 , -1.205417098 ], [ 7.465340581 , -0.419950938 , 2.517000917 ], [ 4.622045747 , -0.362031655 , 2.261654302 ], [ 4.694940759 , 0.342506569 , -2.253367774 ], [ 7.155119787 , 0.288458351 , -2.002300903 ], [ 3.637704380 , 0.000000000 , 0.000000000 ], [ 8.444929336 , -0.024779868 , -0.049650000 ], [ 7.195760366 , 0.354841198 , 3.233018736 ], [ 7.184652438 , -1.373098243 , 2.962397530 ], [ 8.543112064 , -0.403617008 , 2.368385087 ]]}, 'Ammonia_dimer': { 'description': "Complex, S22, S26, 2 h-bonds", 'name': "Ammonia_dimer", 's26_number': "01", 'interaction energy CC':-0.1375, 'interaction energies s22x5':[-0.1045,-0.1362,-0.1023,-0.0481,-0.0156], 'offset': 0.0013, 'symbols': 'NHHHNHHH', 'magmoms': None, 'dimer atoms': [4,4], # Optimisation level: CCSD(T)/cc-pVQZ 'positions':[[ -1.578718, -0.046611, 0.000000], [ -2.158621, 0.136396, -0.809565], [ -2.158621, 0.136396, 0.809565], [ -0.849471, 0.658193, 0.000000], [ 1.578718, 0.046611, 0.000000], [ 2.158621, -0.136396, -0.809565], [ 0.849471, -0.658193, 0.000000], [ 2.158621, -0.136396, 0.809565]], 'positions 0.9':[[ -0.535020551 , -0.861570006 , 0.000000000 ], [ -1.142058700 , -0.825740733 , -0.809565000 ], [ -1.142058700 , -0.825740733 , 0.809565000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.253621272 , 0.000000000 , 0.000000000 ], [ 2.860659421 , -0.035829274 , -0.809565000 ], [ 1.718600721 , -0.861570006 , 0.000000000 ], [ 2.860659421 , -0.035829274 , 0.809565000 ]], 'positions 1.0':[[ -0.535020551000000 , -0.861570006000000 , 0.000000000000000 ], [ -1.142058700000000 , -0.825740733000000 , -0.809565000000000 ], [ -1.142058700000000 , -0.825740733000000 , 0.809565000000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ 2.504023635454546 , 0.000000000000000 , 0.000000000000000 ], [ 3.111061784454545 , -0.035829274000000 , -0.809565000000000 ], [ 1.969003084454545 , -0.861570006000000 , 0.000000000000000 ], [ 3.111061784454545 , -0.035829274000000 , 0.809565000000000 ]], 'positions 1.2':[[ -0.535020551 , -0.861570006 , 0.000000000 ], [ -1.142058700 , -0.825740733 , -0.809565000 ], [ -1.142058700 , -0.825740733 , 0.809565000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 3.004828362 , 0.000000000 , 0.000000000 ], [ 3.611866511 , -0.035829274 , -0.809565000 ], [ 2.469807811 , -0.861570006 , 0.000000000 ], [ 3.611866511 , -0.035829274 , 0.809565000 ]], 'positions 1.5':[[ -0.535020551 , -0.861570006 , 0.000000000 ], [ -1.142058700 , -0.825740733 , -0.809565000 ], [ -1.142058700 , -0.825740733 , 0.809565000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 3.756035452 , 0.000000000 , 0.000000000 ], [ 4.363073601 , -0.035829274 , -0.809565000 ], [ 3.221014901 , -0.861570006 , 0.000000000 ], [ 4.363073601 , -0.035829274 , 0.809565000 ]], 'positions 2.0':[[ -0.535020551 , -0.861570006 , 0.000000000 ], [ -1.142058700 , -0.825740733 , -0.809565000 ], [ -1.142058700 , -0.825740733 , 0.809565000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 5.008047270 , 0.000000000 , 0.000000000 ], [ 5.615085419 , -0.035829274 , -0.809565000 ], [ 4.473026719 , -0.861570006 , 0.000000000 ], [ 5.615085419 , -0.035829274 , 0.809565000 ]]}, 'Benzene-methane_complex': { 'description': "Complex, S22, S26, stack, dispersion bonded", 'name': "Benzene-methane_complex", 's26_number': "10", 'interaction energy CC':-0.0629, 'interaction energies s22x5':[-0.0473,-0.0650,-0.0490,-0.0208,-0.0052], 'offset': -0.0021, 'symbols': 'CCCCCCHHHHHHCHHHH', 'magmoms': None, 'dimer atoms': [12,5], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 1.3932178, 0.0362913, -0.6332803], [ 0.7280364, -1.1884015, -0.6333017], [ -0.6651797, -1.2247077, -0.6332803], [ -1.3932041, -0.0362972, -0.6333017], [ -0.7280381, 1.1884163, -0.6332803], [ 0.6651677, 1.2246987, -0.6333017], [ 2.4742737, 0.0644484, -0.6317240], [ 1.2929588, -2.1105409, -0.6317401], [ -1.1813229, -2.1750081, -0.6317240], [ -2.4742614, -0.0644647, -0.6317401], [ -1.2929508, 2.1105596, -0.6317240], [ 1.1813026, 2.1750056, -0.6317401], [ 0.0000000, 0.0000000, 3.0826195], [ 0.5868776, 0.8381742, 3.4463772], [ -1.0193189, 0.0891638, 3.4463772], [ 0.0000000, 0.0000000, 1.9966697], [ 0.4324413, -0.9273380, 3.446377]], 'positions 0.9':[[ 0.000011002 , 0.036291078 , -1.393218002 ], [ -0.000011075 , -1.188401879 , -0.728035925 ], [ 0.000010922 , -1.224707791 , 0.665180078 ], [ -0.000011002 , -0.036296745 , 1.393204002 ], [ 0.000011075 , 1.188416213 , 0.728037925 ], [ -0.000010922 , 1.224699125 , -0.665168078 ], [ 0.001567004 , 0.064448010 , -2.474274004 ], [ 0.001550866 , -2.110540915 , -1.292958866 ], [ 0.001566862 , -2.175007759 , 1.181323138 ], [ 0.001550996 , -0.064464677 , 2.474261004 ], [ 0.001567134 , 2.110560249 , 1.292950866 ], [ 0.001551138 , 2.175006092 , -1.181303138 ], [ 3.452913900 , -0.000000069 , 0.000000000 ], [ 3.816671953 , 0.838173871 , -0.586878053 ], [ 3.816671906 , 0.089163973 , 1.019318994 ], [ 2.366964900 , 0.000000000 , 0.000000000 ], [ 3.816671841 , -0.927338119 , -0.432440941 ]], 'positions 1.0':[[ 0.000011002000000 , 0.036291078000000 , -1.393218002000000 ], [ -0.000011075000000 , -1.188401879000000 , -0.728035925000000 ], [ 0.000010922000000 , -1.224707791000000 , 0.665180078000000 ], [ -0.000011002000000 , -0.036296745000000 , 1.393204002000000 ], [ 0.000011075000000 , 1.188416213000000 , 0.728037925000000 ], [ -0.000010922000000 , 1.224699125000000 , -0.665168078000000 ], [ 0.001567004000000 , 0.064448010000000 , -2.474274004000000 ], [ 0.001550866000000 , -2.110540915000000 , -1.292958866000000 ], [ 0.001566862000000 , -2.175007759000000 , 1.181323138000000 ], [ 0.001550996000000 , -0.064464677000000 , 2.474261004000000 ], [ 0.001567134000000 , 2.110560249000000 , 1.292950866000000 ], [ 0.001551138000000 , 2.175006092000000 , -1.181303138000000 ], [ 3.715910000000000 , -0.000000069000000 , 0.000000000000000 ], [ 4.079668053000000 , 0.838173871000000 , -0.586878053000000 ], [ 4.079668005999999 , 0.089163973000000 , 1.019318994000000 ], [ 2.629961000000000 , 0.000000000000000 , 0.000000000000000 ], [ 4.079667940999999 , -0.927338119000000 , -0.432440941000000 ]], 'positions 1.2':[[ 0.000011002 , 0.036291078 , -1.393218002 ], [ -0.000011075 , -1.188401879 , -0.728035925 ], [ 0.000010922 , -1.224707791 , 0.665180078 ], [ -0.000011002 , -0.036296745 , 1.393204002 ], [ 0.000011075 , 1.188416213 , 0.728037925 ], [ -0.000010922 , 1.224699125 , -0.665168078 ], [ 0.001567004 , 0.064448010 , -2.474274004 ], [ 0.001550866 , -2.110540915 , -1.292958866 ], [ 0.001566862 , -2.175007759 , 1.181323138 ], [ 0.001550996 , -0.064464677 , 2.474261004 ], [ 0.001567134 , 2.110560249 , 1.292950866 ], [ 0.001551138 , 2.175006092 , -1.181303138 ], [ 4.241902200 , -0.000000069 , 0.000000000 ], [ 4.605660253 , 0.838173871 , -0.586878053 ], [ 4.605660206 , 0.089163973 , 1.019318994 ], [ 3.155953200 , 0.000000000 , 0.000000000 ], [ 4.605660141 , -0.927338119 , -0.432440941 ]], 'positions 1.5':[[ 0.000011002 , 0.036291078 , -1.393218002 ], [ -0.000011075 , -1.188401879 , -0.728035925 ], [ 0.000010922 , -1.224707791 , 0.665180078 ], [ -0.000011002 , -0.036296745 , 1.393204002 ], [ 0.000011075 , 1.188416213 , 0.728037925 ], [ -0.000010922 , 1.224699125 , -0.665168078 ], [ 0.001567004 , 0.064448010 , -2.474274004 ], [ 0.001550866 , -2.110540915 , -1.292958866 ], [ 0.001566862 , -2.175007759 , 1.181323138 ], [ 0.001550996 , -0.064464677 , 2.474261004 ], [ 0.001567134 , 2.110560249 , 1.292950866 ], [ 0.001551138 , 2.175006092 , -1.181303138 ], [ 5.030890500 , -0.000000069 , 0.000000000 ], [ 5.394648553 , 0.838173871 , -0.586878053 ], [ 5.394648506 , 0.089163973 , 1.019318994 ], [ 3.944941500 , 0.000000000 , 0.000000000 ], [ 5.394648441 , -0.927338119 , -0.432440941 ]], 'positions 2.0':[[ 0.000011002 , 0.036291078 , -1.393218002 ], [ -0.000011075 , -1.188401879 , -0.728035925 ], [ 0.000010922 , -1.224707791 , 0.665180078 ], [ -0.000011002 , -0.036296745 , 1.393204002 ], [ 0.000011075 , 1.188416213 , 0.728037925 ], [ -0.000010922 , 1.224699125 , -0.665168078 ], [ 0.001567004 , 0.064448010 , -2.474274004 ], [ 0.001550866 , -2.110540915 , -1.292958866 ], [ 0.001566862 , -2.175007759 , 1.181323138 ], [ 0.001550996 , -0.064464677 , 2.474261004 ], [ 0.001567134 , 2.110560249 , 1.292950866 ], [ 0.001551138 , 2.175006092 , -1.181303138 ], [ 6.345871000 , -0.000000069 , 0.000000000 ], [ 6.709629053 , 0.838173871 , -0.586878053 ], [ 6.709629006 , 0.089163973 , 1.019318994 ], [ 5.259922000 , 0.000000000 , 0.000000000 ], [ 6.709628941 , -0.927338119 , -0.432440941 ]]}, 'Benzene-ammonia_complex': { 'description': "Complex, S22, S26", 'name': "Benzene-ammonia_complex", 's26_number': "18", 'interaction energy CC':-0.1006, 'interaction energies s22x5':[-0.0885,-0.1019,-0.0759,-0.0369,-0.0121], 'offset': -0.0013, 'symbols': 'CCCCCCHHHHHHNHHH', 'magmoms': None, 'dimer atoms': [12,4], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -0.7392810, 0.5158785, -1.2071079], [ -1.4261442, 0.3965455, 0.0000000], [ -0.7392810, 0.5158785, 1.2071079], [ 0.6342269, 0.7546398, 1.2070735], [ 1.3210434, 0.8737566, 0.0000000], [ 0.6342269, 0.7546398, -1.2070735], [ -1.2719495, 0.4206316, -2.1432894], [ -2.4902205, 0.2052381, 0.0000000], [ -1.2719495, 0.4206316, 2.1432894], [ 1.1668005, 0.8474885, 2.1436950], [ 2.3863585, 1.0596312, 0.0000000], [ 1.1668005, 0.8474885, -2.1436950], [ 0.1803930, -2.9491231, 0.0000000], [ 0.7595495, -3.1459477, -0.8060729], [ 0.7595495, -3.1459477, 0.8060729], [ 0.0444167, -1.9449399, 0.0000000]], 'positions 0.9':[[ 0.000000000 , 0.000000000 , -1.207108000 ], [ -0.094723910 , -0.690687169 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207108000 ], [ 0.189293052 , 1.381194838 , 1.207073000 ], [ 0.284209467 , 2.071771374 , 0.000000000 ], [ 0.189293052 , 1.381194838 , -1.207073000 ], [ -0.070884435 , -0.536454706 , -2.143289000 ], [ -0.235335157 , -1.762640796 , 0.000000000 ], [ -0.070884435 , -0.536454706 , 2.143289000 ], [ 0.262434233 , 1.916830087 , 2.143695000 ], [ 0.430373810 , 3.143257869 , 0.000000000 ], [ 0.262434233 , 1.916830087 , -2.143695000 ], [ 3.322432676 , -0.175158455 , 0.000000000 ], [ 3.685723470 , 0.316960994 , -0.806073000 ], [ 3.685723470 , 0.316960994 , 0.806073000 ], [ 2.324338249 , 0.000000000 , 0.000000000 ]], 'positions 1.0':[[ 0.000000000000000 , 0.000000000000000 , -1.207108000000000 ], [ -0.094723910000000 , -0.690687169000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 1.207108000000000 ], [ 0.189293052000000 , 1.381194838000000 , 1.207073000000000 ], [ 0.284209467000000 , 2.071771374000000 , 0.000000000000000 ], [ 0.189293052000000 , 1.381194838000000 , -1.207073000000000 ], [ -0.070884435000000 , -0.536454706000000 , -2.143289000000000 ], [ -0.235335157000000 , -1.762640796000000 , 0.000000000000000 ], [ -0.070884435000000 , -0.536454706000000 , 2.143289000000000 ], [ 0.262434233000000 , 1.916830087000000 , 2.143695000000000 ], [ 0.430373810000000 , 3.143257869000000 , 0.000000000000000 ], [ 0.262434233000000 , 1.916830087000000 , -2.143695000000000 ], [ 3.580692481363636 , -0.175158455000000 , 0.000000000000000 ], [ 3.943983275363637 , 0.316960994000000 , -0.806073000000000 ], [ 3.943983275363637 , 0.316960994000000 , 0.806073000000000 ], [ 2.582598054363637 , 0.000000000000000 , 0.000000000000000 ]], 'positions 1.2':[[ 0.000000000 , 0.000000000 , -1.207108000 ], [ -0.094723910 , -0.690687169 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207108000 ], [ 0.189293052 , 1.381194838 , 1.207073000 ], [ 0.284209467 , 2.071771374 , 0.000000000 ], [ 0.189293052 , 1.381194838 , -1.207073000 ], [ -0.070884435 , -0.536454706 , -2.143289000 ], [ -0.235335157 , -1.762640796 , 0.000000000 ], [ -0.070884435 , -0.536454706 , 2.143289000 ], [ 0.262434233 , 1.916830087 , 2.143695000 ], [ 0.430373810 , 3.143257869 , 0.000000000 ], [ 0.262434233 , 1.916830087 , -2.143695000 ], [ 4.097212092 , -0.175158455 , 0.000000000 ], [ 4.460502886 , 0.316960994 , -0.806073000 ], [ 4.460502886 , 0.316960994 , 0.806073000 ], [ 3.099117665 , 0.000000000 , 0.000000000 ]], 'positions 1.5':[[ 0.000000000 , 0.000000000 , -1.207108000 ], [ -0.094723910 , -0.690687169 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207108000 ], [ 0.189293052 , 1.381194838 , 1.207073000 ], [ 0.284209467 , 2.071771374 , 0.000000000 ], [ 0.189293052 , 1.381194838 , -1.207073000 ], [ -0.070884435 , -0.536454706 , -2.143289000 ], [ -0.235335157 , -1.762640796 , 0.000000000 ], [ -0.070884435 , -0.536454706 , 2.143289000 ], [ 0.262434233 , 1.916830087 , 2.143695000 ], [ 0.430373810 , 3.143257869 , 0.000000000 ], [ 0.262434233 , 1.916830087 , -2.143695000 ], [ 4.871991508 , -0.175158455 , 0.000000000 ], [ 5.235282302 , 0.316960994 , -0.806073000 ], [ 5.235282302 , 0.316960994 , 0.806073000 ], [ 3.873897081 , 0.000000000 , 0.000000000 ]], 'positions 2.0':[[ 0.000000000 , 0.000000000 , -1.207108000 ], [ -0.094723910 , -0.690687169 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207108000 ], [ 0.189293052 , 1.381194838 , 1.207073000 ], [ 0.284209467 , 2.071771374 , 0.000000000 ], [ 0.189293052 , 1.381194838 , -1.207073000 ], [ -0.070884435 , -0.536454706 , -2.143289000 ], [ -0.235335157 , -1.762640796 , 0.000000000 ], [ -0.070884435 , -0.536454706 , 2.143289000 ], [ 0.262434233 , 1.916830087 , 2.143695000 ], [ 0.430373810 , 3.143257869 , 0.000000000 ], [ 0.262434233 , 1.916830087 , -2.143695000 ], [ 6.163290535 , -0.175158455 , 0.000000000 ], [ 6.526581329 , 0.316960994 , -0.806073000 ], [ 6.526581329 , 0.316960994 , 0.806073000 ], [ 5.165196108 , 0.000000000 , 0.000000000 ]]}, 'Benzene_dimer_parallel_displaced': { 'description': "Complex, S22, S26, stack, dispersion bonded", 'name': "Benzene_dimer_parallel_displaced", 's26_number': "11", 'interaction energy CC':-0.1136, 'interaction energies s22x5':[-0.0065,-0.1219,-0.0833,-0.0230,-0.0030], 'offset': -0.0083, 'symbols': 'CCCCCCHHHHHHCCCCCCHHHHHH', 'magmoms': None, 'dimer atoms': [12,12], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -1.0478252, -1.4216736, 0.0000000], [ -1.4545034, -0.8554459, 1.2062048], [ -1.4545034, -0.8554459, -1.2062048], [ -2.2667970, 0.2771610, 1.2069539], [ -2.6714781, 0.8450211, 0.0000000], [ -2.2667970, 0.2771610, -1.2069539], [ -1.1338534, -1.2920593, -2.1423150], [ -2.5824943, 0.7163066, -2.1437977], [ -3.3030422, 1.7232700, 0.0000000], [ -2.5824943, 0.7163066, 2.1437977], [ -1.1338534, -1.2920593, 2.1423150], [ -0.4060253, -2.2919049, 0.0000000], [ 1.0478252, 1.4216736, 0.0000000], [ 1.4545034, 0.8554459, -1.2062048], [ 1.4545034, 0.8554459, 1.2062048], [ 2.2667970, -0.2771610, -1.2069539], [ 2.6714781, -0.8450211, 0.0000000], [ 2.2667970, -0.2771610, 1.2069539], [ 0.4060253, 2.2919049, 0.0000000], [ 1.1338534, 1.2920593, 2.1423150], [ 2.5824943, -0.7163066, 2.1437977], [ 3.3030422, -1.7232700, 0.0000000], [ 2.5824943, -0.7163066, -2.1437977], [ 1.1338534, 1.2920593, -2.1423150]], 'positions 0.9':[[ 0.629051507 , -1.244058476 , 0.000000000 ], [ 0.314072291 , -0.622134657 , 1.206205000 ], [ 0.314072291 , -0.622134657 , -1.206205000 ], [ -0.314813547 , 0.621699240 , 1.206954000 ], [ -0.627568995 , 1.244929310 , 0.000000000 ], [ -0.314813547 , 0.621699240 , -1.206954000 ], [ 0.563930576 , -1.102778154 , -2.142315000 ], [ -0.559388819 , 1.104085746 , -2.143798000 ], [ -1.116894124 , 2.209685917 , 0.000000000 ], [ -0.559388819 , 1.104085746 , 2.143798000 ], [ 0.563930576 , -1.102778154 , 2.142315000 ], [ 1.129721711 , -2.202462660 , 0.000000000 ], [ 2.759649224 , 1.244058476 , 0.000000000 ], [ 3.074628440 , 0.622134657 , -1.206205000 ], [ 3.074628440 , 0.622134657 , 1.206205000 ], [ 3.703514278 , -0.621699240 , -1.206954000 ], [ 4.016269727 , -1.244929310 , 0.000000000 ], [ 3.703514278 , -0.621699240 , 1.206954000 ], [ 2.258979020 , 2.202462660 , 0.000000000 ], [ 2.824770156 , 1.102778154 , 2.142315000 ], [ 3.948089550 , -1.104085746 , 2.143798000 ], [ 4.505594855 , -2.209685917 , 0.000000000 ], [ 3.948089550 , -1.104085746 , -2.143798000 ], [ 2.824770156 , 1.102778154 , -2.142315000 ]], 'positions 1.0':[[ 0.629051507000000 , -1.244058476000000 , 0.000000000000000 ], [ 0.314072291000000 , -0.622134657000000 , 1.206205000000000 ], [ 0.314072291000000 , -0.622134657000000 , -1.206205000000000 ], [ -0.314813547000000 , 0.621699240000000 , 1.206954000000000 ], [ -0.627568995000000 , 1.244929310000000 , 0.000000000000000 ], [ -0.314813547000000 , 0.621699240000000 , -1.206954000000000 ], [ 0.563930576000000 , -1.102778154000000 , -2.142315000000000 ], [ -0.559388819000000 , 1.104085746000000 , -2.143798000000000 ], [ -1.116894124000000 , 2.209685917000000 , 0.000000000000000 ], [ -0.559388819000000 , 1.104085746000000 , 2.143798000000000 ], [ 0.563930576000000 , -1.102778154000000 , 2.142315000000000 ], [ 1.129721711000000 , -2.202462660000000 , 0.000000000000000 ], [ 3.136171527545454 , 1.244058476000000 , 0.000000000000000 ], [ 3.451150743545455 , 0.622134657000000 , -1.206205000000000 ], [ 3.451150743545455 , 0.622134657000000 , 1.206205000000000 ], [ 4.080036581545454 , -0.621699240000000 , -1.206954000000000 ], [ 4.392792030545455 , -1.244929310000000 , 0.000000000000000 ], [ 4.080036581545454 , -0.621699240000000 , 1.206954000000000 ], [ 2.635501323545455 , 2.202462660000000 , 0.000000000000000 ], [ 3.201292459545455 , 1.102778154000000 , 2.142315000000000 ], [ 4.324611853545455 , -1.104085746000000 , 2.143798000000000 ], [ 4.882117158545454 , -2.209685917000000 , 0.000000000000000 ], [ 4.324611853545455 , -1.104085746000000 , -2.143798000000000 ], [ 3.201292459545455 , 1.102778154000000 , -2.142315000000000 ]], 'positions 1.2':[[ 0.629051507 , -1.244058476 , 0.000000000 ], [ 0.314072291 , -0.622134657 , 1.206205000 ], [ 0.314072291 , -0.622134657 , -1.206205000 ], [ -0.314813547 , 0.621699240 , 1.206954000 ], [ -0.627568995 , 1.244929310 , 0.000000000 ], [ -0.314813547 , 0.621699240 , -1.206954000 ], [ 0.563930576 , -1.102778154 , -2.142315000 ], [ -0.559388819 , 1.104085746 , -2.143798000 ], [ -1.116894124 , 2.209685917 , 0.000000000 ], [ -0.559388819 , 1.104085746 , 2.143798000 ], [ 0.563930576 , -1.102778154 , 2.142315000 ], [ 1.129721711 , -2.202462660 , 0.000000000 ], [ 3.889216135 , 1.244058476 , 0.000000000 ], [ 4.204195351 , 0.622134657 , -1.206205000 ], [ 4.204195351 , 0.622134657 , 1.206205000 ], [ 4.833081189 , -0.621699240 , -1.206954000 ], [ 5.145836638 , -1.244929310 , 0.000000000 ], [ 4.833081189 , -0.621699240 , 1.206954000 ], [ 3.388545931 , 2.202462660 , 0.000000000 ], [ 3.954337067 , 1.102778154 , 2.142315000 ], [ 5.077656461 , -1.104085746 , 2.143798000 ], [ 5.635161766 , -2.209685917 , 0.000000000 ], [ 5.077656461 , -1.104085746 , -2.143798000 ], [ 3.954337067 , 1.102778154 , -2.142315000 ]], 'positions 1.5':[[ 0.629051507 , -1.244058476 , 0.000000000 ], [ 0.314072291 , -0.622134657 , 1.206205000 ], [ 0.314072291 , -0.622134657 , -1.206205000 ], [ -0.314813547 , 0.621699240 , 1.206954000 ], [ -0.627568995 , 1.244929310 , 0.000000000 ], [ -0.314813547 , 0.621699240 , -1.206954000 ], [ 0.563930576 , -1.102778154 , -2.142315000 ], [ -0.559388819 , 1.104085746 , -2.143798000 ], [ -1.116894124 , 2.209685917 , 0.000000000 ], [ -0.559388819 , 1.104085746 , 2.143798000 ], [ 0.563930576 , -1.102778154 , 2.142315000 ], [ 1.129721711 , -2.202462660 , 0.000000000 ], [ 5.018783046 , 1.244058476 , 0.000000000 ], [ 5.333762262 , 0.622134657 , -1.206205000 ], [ 5.333762262 , 0.622134657 , 1.206205000 ], [ 5.962648100 , -0.621699240 , -1.206954000 ], [ 6.275403549 , -1.244929310 , 0.000000000 ], [ 5.962648100 , -0.621699240 , 1.206954000 ], [ 4.518112842 , 2.202462660 , 0.000000000 ], [ 5.083903978 , 1.102778154 , 2.142315000 ], [ 6.207223372 , -1.104085746 , 2.143798000 ], [ 6.764728677 , -2.209685917 , 0.000000000 ], [ 6.207223372 , -1.104085746 , -2.143798000 ], [ 5.083903978 , 1.102778154 , -2.142315000 ]], 'positions 2.0':[[ 0.629051507 , -1.244058476 , 0.000000000 ], [ 0.314072291 , -0.622134657 , 1.206205000 ], [ 0.314072291 , -0.622134657 , -1.206205000 ], [ -0.314813547 , 0.621699240 , 1.206954000 ], [ -0.627568995 , 1.244929310 , 0.000000000 ], [ -0.314813547 , 0.621699240 , -1.206954000 ], [ 0.563930576 , -1.102778154 , -2.142315000 ], [ -0.559388819 , 1.104085746 , -2.143798000 ], [ -1.116894124 , 2.209685917 , 0.000000000 ], [ -0.559388819 , 1.104085746 , 2.143798000 ], [ 0.563930576 , -1.102778154 , 2.142315000 ], [ 1.129721711 , -2.202462660 , 0.000000000 ], [ 6.901394563 , 1.244058476 , 0.000000000 ], [ 7.216373779 , 0.622134657 , -1.206205000 ], [ 7.216373779 , 0.622134657 , 1.206205000 ], [ 7.845259617 , -0.621699240 , -1.206954000 ], [ 8.158015066 , -1.244929310 , 0.000000000 ], [ 7.845259617 , -0.621699240 , 1.206954000 ], [ 6.400724359 , 2.202462660 , 0.000000000 ], [ 6.966515495 , 1.102778154 , 2.142315000 ], [ 8.089834889 , -1.104085746 , 2.143798000 ], [ 8.647340194 , -2.209685917 , 0.000000000 ], [ 8.089834889 , -1.104085746 , -2.143798000 ], [ 6.966515495 , 1.102778154 , -2.142315000 ]]}, 'Benzene_dimer_T-shaped': { 'description': "Complex, S22, S26", 'name': "Benzene_dimer_T-shaped", 's26_number': "20", 'interaction energy CC':-0.1175, 'interaction energies s22x5':[-0.0954,-0.1214,-0.0976,-0.0486,-0.0152], 'offset': -0.0039, 'symbols': 'CCCCCCHHHHHHCCCCCCHHHHHH', 'magmoms': None, 'dimer atoms': [12,12], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 0.0000000, 0.0000000, 1.0590353], [ 0.0000000, -1.2060084, 1.7576742], [ 0.0000000, -1.2071767, 3.1515905], [ 0.0000000, 0.0000000, 3.8485751], [ 0.0000000, 1.2071767, 3.1515905], [ 0.0000000, 1.2060084, 1.7576742], [ 0.0000000, 0.0000000, -0.0215805], [ 0.0000000, -2.1416387, 1.2144217], [ 0.0000000, -2.1435657, 3.6929953], [ 0.0000000, 0.0000000, 4.9301499], [ 0.0000000, 2.1435657, 3.6929953], [ 0.0000000, 2.1416387, 1.2144217], [ -1.3940633, 0.0000000, -2.4541524], [ -0.6970468, 1.2072378, -2.4546277], [ 0.6970468, 1.2072378, -2.4546277], [ 1.3940633, 0.0000000, -2.4541524], [ 0.6970468, -1.2072378, -2.4546277], [ -0.6970468, -1.2072378, -2.4546277], [ -2.4753995, 0.0000000, -2.4503221], [ -1.2382321, 2.1435655, -2.4536764], [ 1.2382321, 2.1435655, -2.4536764], [ 2.4753995, 0.0000000, -2.4503221], [ 1.2382321, -2.1435655, -2.4536764], [ -1.2382321, -2.1435655, -2.4536764]], 'positions 0.9':[[ -1.080615000 , 0.000000000 , 0.000000000 ], [ -1.779254000 , -1.206008000 , 0.000000000 ], [ -3.173171000 , -1.207177000 , 0.000000000 ], [ -3.870155000 , 0.000000000 , 0.000000000 ], [ -3.173171000 , 1.207177000 , 0.000000000 ], [ -1.779254000 , 1.206008000 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -1.236002000 , -2.141639000 , 0.000000000 ], [ -3.714575000 , -2.143566000 , 0.000000000 ], [ -4.951730000 , 0.000000000 , 0.000000000 ], [ -3.714575000 , 2.143566000 , 0.000000000 ], [ -1.236002000 , 2.141639000 , 0.000000000 ], [ 2.189283067 , 0.000000000 , -1.394063000 ], [ 2.189759067 , 1.207238000 , -0.697047000 ], [ 2.189759067 , 1.207238000 , 0.697047000 ], [ 2.189283067 , 0.000000000 , 1.394063000 ], [ 2.189759067 , -1.207238000 , 0.697047000 ], [ 2.189759067 , -1.207238000 , -0.697047000 ], [ 2.185453067 , 0.000000000 , -2.475399000 ], [ 2.188807067 , 2.143565000 , -1.238232000 ], [ 2.188807067 , 2.143565000 , 1.238232000 ], [ 2.185453067 , 0.000000000 , 2.475399000 ], [ 2.188807067 , -2.143565000 , 1.238232000 ], [ 2.188807067 , -2.143565000 , -1.238232000 ]], 'positions 1.0':[[ -1.080615000000000 , 0.000000000000000 , 0.000000000000000 ], [ -1.779254000000000 , -1.206008000000000 , 0.000000000000000 ], [ -3.173171000000000 , -1.207177000000000 , 0.000000000000000 ], [ -3.870155000000000 , 0.000000000000000 , 0.000000000000000 ], [ -3.173171000000000 , 1.207177000000000 , 0.000000000000000 ], [ -1.779254000000000 , 1.206008000000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -1.236002000000000 , -2.141639000000000 , 0.000000000000000 ], [ -3.714575000000000 , -2.143566000000000 , 0.000000000000000 ], [ -4.951730000000000 , 0.000000000000000 , 0.000000000000000 ], [ -3.714575000000000 , 2.143566000000000 , 0.000000000000000 ], [ -1.236002000000000 , 2.141639000000000 , 0.000000000000000 ], [ 2.432572000272727 , 0.000000000000000 , -1.394063000000000 ], [ 2.433048000272727 , 1.207238000000000 , -0.697047000000000 ], [ 2.433048000272727 , 1.207238000000000 , 0.697047000000000 ], [ 2.432572000272727 , 0.000000000000000 , 1.394063000000000 ], [ 2.433048000272727 , -1.207238000000000 , 0.697047000000000 ], [ 2.433048000272727 , -1.207238000000000 , -0.697047000000000 ], [ 2.428742000272727 , 0.000000000000000 , -2.475399000000000 ], [ 2.432096000272727 , 2.143565000000000 , -1.238232000000000 ], [ 2.432096000272727 , 2.143565000000000 , 1.238232000000000 ], [ 2.428742000272727 , 0.000000000000000 , 2.475399000000000 ], [ 2.432096000272727 , -2.143565000000000 , 1.238232000000000 ], [ 2.432096000272727 , -2.143565000000000 , -1.238232000000000 ]], 'positions 1.2':[[ -1.080615000 , 0.000000000 , 0.000000000 ], [ -1.779254000 , -1.206008000 , 0.000000000 ], [ -3.173171000 , -1.207177000 , 0.000000000 ], [ -3.870155000 , 0.000000000 , 0.000000000 ], [ -3.173171000 , 1.207177000 , 0.000000000 ], [ -1.779254000 , 1.206008000 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -1.236002000 , -2.141639000 , 0.000000000 ], [ -3.714575000 , -2.143566000 , 0.000000000 ], [ -4.951730000 , 0.000000000 , 0.000000000 ], [ -3.714575000 , 2.143566000 , 0.000000000 ], [ -1.236002000 , 2.141639000 , 0.000000000 ], [ 2.919149867 , 0.000000000 , -1.394063000 ], [ 2.919625867 , 1.207238000 , -0.697047000 ], [ 2.919625867 , 1.207238000 , 0.697047000 ], [ 2.919149867 , 0.000000000 , 1.394063000 ], [ 2.919625867 , -1.207238000 , 0.697047000 ], [ 2.919625867 , -1.207238000 , -0.697047000 ], [ 2.915319867 , 0.000000000 , -2.475399000 ], [ 2.918673867 , 2.143565000 , -1.238232000 ], [ 2.918673867 , 2.143565000 , 1.238232000 ], [ 2.915319867 , 0.000000000 , 2.475399000 ], [ 2.918673867 , -2.143565000 , 1.238232000 ], [ 2.918673867 , -2.143565000 , -1.238232000 ]], 'positions 1.5':[[ -1.080615000 , 0.000000000 , 0.000000000 ], [ -1.779254000 , -1.206008000 , 0.000000000 ], [ -3.173171000 , -1.207177000 , 0.000000000 ], [ -3.870155000 , 0.000000000 , 0.000000000 ], [ -3.173171000 , 1.207177000 , 0.000000000 ], [ -1.779254000 , 1.206008000 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -1.236002000 , -2.141639000 , 0.000000000 ], [ -3.714575000 , -2.143566000 , 0.000000000 ], [ -4.951730000 , 0.000000000 , 0.000000000 ], [ -3.714575000 , 2.143566000 , 0.000000000 ], [ -1.236002000 , 2.141639000 , 0.000000000 ], [ 3.649016667 , 0.000000000 , -1.394063000 ], [ 3.649492667 , 1.207238000 , -0.697047000 ], [ 3.649492667 , 1.207238000 , 0.697047000 ], [ 3.649016667 , 0.000000000 , 1.394063000 ], [ 3.649492667 , -1.207238000 , 0.697047000 ], [ 3.649492667 , -1.207238000 , -0.697047000 ], [ 3.645186667 , 0.000000000 , -2.475399000 ], [ 3.648540667 , 2.143565000 , -1.238232000 ], [ 3.648540667 , 2.143565000 , 1.238232000 ], [ 3.645186667 , 0.000000000 , 2.475399000 ], [ 3.648540667 , -2.143565000 , 1.238232000 ], [ 3.648540667 , -2.143565000 , -1.238232000 ]], 'positions 2.0':[[ -1.080615000 , 0.000000000 , 0.000000000 ], [ -1.779254000 , -1.206008000 , 0.000000000 ], [ -3.173171000 , -1.207177000 , 0.000000000 ], [ -3.870155000 , 0.000000000 , 0.000000000 ], [ -3.173171000 , 1.207177000 , 0.000000000 ], [ -1.779254000 , 1.206008000 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -1.236002000 , -2.141639000 , 0.000000000 ], [ -3.714575000 , -2.143566000 , 0.000000000 ], [ -4.951730000 , 0.000000000 , 0.000000000 ], [ -3.714575000 , 2.143566000 , 0.000000000 ], [ -1.236002000 , 2.141639000 , 0.000000000 ], [ 4.865461333 , 0.000000000 , -1.394063000 ], [ 4.865937333 , 1.207238000 , -0.697047000 ], [ 4.865937333 , 1.207238000 , 0.697047000 ], [ 4.865461333 , 0.000000000 , 1.394063000 ], [ 4.865937333 , -1.207238000 , 0.697047000 ], [ 4.865937333 , -1.207238000 , -0.697047000 ], [ 4.861631333 , 0.000000000 , -2.475399000 ], [ 4.864985333 , 2.143565000 , -1.238232000 ], [ 4.864985333 , 2.143565000 , 1.238232000 ], [ 4.861631333 , 0.000000000 , 2.475399000 ], [ 4.864985333 , -2.143565000 , 1.238232000 ], [ 4.864985333 , -2.143565000 , -1.238232000 ]]}, 'Benzene-HCN_complex': { 'description': "Complex, S22, S26", 'name': "Benzene-HCN_complex", 's26_number': "19", 'interaction energy CC':-0.1973, 'interaction energies s22x5':[-0.1743,-0.1960,-0.1596,-0.0906,-0.0369], 'offset': 0.0013, 'symbols': 'CCCCCCHHHHHHNCH', 'magmoms': None, 'dimer atoms': [12,3], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -0.7097741, -0.9904230, 1.2077018], [ -1.4065340, -0.9653529, 0.0000000], [ -0.7097741, -0.9904230, -1.2077018], [ 0.6839651, -1.0405105, -1.2078652], [ 1.3809779, -1.0655522, 0.0000000], [ 0.6839651, -1.0405105, 1.2078652], [ -1.2499482, -0.9686280, 2.1440507], [ -2.4869197, -0.9237060, 0.0000000], [ -1.2499482, -0.9686280, -2.1440507], [ 1.2242882, -1.0580753, -2.1442563], [ 2.4615886, -1.1029818, 0.0000000], [ 1.2242882, -1.0580753, 2.1442563], [ -0.0034118, 3.5353926, 0.0000000], [ 0.0751963, 2.3707040, 0.0000000], [ 0.1476295, 1.3052847, 0.0000000]], 'positions 0.9':[[ -0.023100946 , 0.696978594 , 1.207702000 ], [ -0.046160335 , 1.393808033 , 0.000000000 ], [ -0.023100946 , 0.696978594 , -1.207702000 ], [ 0.023085816 , -0.696895106 , -1.207865000 ], [ 0.046190594 , -1.393975010 , 0.000000000 ], [ 0.023085816 , -0.696895106 , 1.207865000 ], [ -0.038624622 , 1.237369182 , 2.144051000 ], [ -0.079148681 , 2.474493071 , 0.000000000 ], [ -0.038624622 , 1.237369182 , -2.144051000 ], [ 0.042839694 , -1.237142510 , -2.144256000 ], [ 0.083401415 , -2.474593580 , 0.000000000 ], [ 0.042839694 , -1.237142510 , 2.144256000 ], [ 4.308034683 , 0.304536859 , 0.000000000 ], [ 3.151543935 , 0.145763954 , 0.000000000 ], [ 2.093660645 , 0.000000000 , 0.000000000 ]], 'positions 1.0':[[ -0.023100946000000 , 0.696978594000000 , 1.207702000000000 ], [ -0.046160335000000 , 1.393808033000000 , 0.000000000000000 ], [ -0.023100946000000 , 0.696978594000000 , -1.207702000000000 ], [ 0.023085816000000 , -0.696895106000000 , -1.207865000000000 ], [ 0.046190594000000 , -1.393975010000000 , 0.000000000000000 ], [ 0.023085816000000 , -0.696895106000000 , 1.207865000000000 ], [ -0.038624622000000 , 1.237369182000000 , 2.144051000000000 ], [ -0.079148681000000 , 2.474493071000000 , 0.000000000000000 ], [ -0.038624622000000 , 1.237369182000000 , -2.144051000000000 ], [ 0.042839694000000 , -1.237142510000000 , -2.144256000000000 ], [ 0.083401415000000 , -2.474593580000000 , 0.000000000000000 ], [ 0.042839694000000 , -1.237142510000000 , 2.144256000000000 ], [ 4.540663643636363 , 0.304536859000000 , 0.000000000000000 ], [ 3.384172895636364 , 0.145763954000000 , 0.000000000000000 ], [ 2.326289605636364 , 0.000000000000000 , 0.000000000000000 ]], 'positions 1.2':[[ -0.023100946 , 0.696978594 , 1.207702000 ], [ -0.046160335 , 1.393808033 , 0.000000000 ], [ -0.023100946 , 0.696978594 , -1.207702000 ], [ 0.023085816 , -0.696895106 , -1.207865000 ], [ 0.046190594 , -1.393975010 , 0.000000000 ], [ 0.023085816 , -0.696895106 , 1.207865000 ], [ -0.038624622 , 1.237369182 , 2.144051000 ], [ -0.079148681 , 2.474493071 , 0.000000000 ], [ -0.038624622 , 1.237369182 , -2.144051000 ], [ 0.042839694 , -1.237142510 , -2.144256000 ], [ 0.083401415 , -2.474593580 , 0.000000000 ], [ 0.042839694 , -1.237142510 , 2.144256000 ], [ 5.005921565 , 0.304536859 , 0.000000000 ], [ 3.849430817 , 0.145763954 , 0.000000000 ], [ 2.791547527 , 0.000000000 , 0.000000000 ]], 'positions 1.5':[[ -0.023100946 , 0.696978594 , 1.207702000 ], [ -0.046160335 , 1.393808033 , 0.000000000 ], [ -0.023100946 , 0.696978594 , -1.207702000 ], [ 0.023085816 , -0.696895106 , -1.207865000 ], [ 0.046190594 , -1.393975010 , 0.000000000 ], [ 0.023085816 , -0.696895106 , 1.207865000 ], [ -0.038624622 , 1.237369182 , 2.144051000 ], [ -0.079148681 , 2.474493071 , 0.000000000 ], [ -0.038624622 , 1.237369182 , -2.144051000 ], [ 0.042839694 , -1.237142510 , -2.144256000 ], [ 0.083401415 , -2.474593580 , 0.000000000 ], [ 0.042839694 , -1.237142510 , 2.144256000 ], [ 5.703808447 , 0.304536859 , 0.000000000 ], [ 4.547317699 , 0.145763954 , 0.000000000 ], [ 3.489434409 , 0.000000000 , 0.000000000 ]], 'positions 2.0':[[ -0.023100946 , 0.696978594 , 1.207702000 ], [ -0.046160335 , 1.393808033 , 0.000000000 ], [ -0.023100946 , 0.696978594 , -1.207702000 ], [ 0.023085816 , -0.696895106 , -1.207865000 ], [ 0.046190594 , -1.393975010 , 0.000000000 ], [ 0.023085816 , -0.696895106 , 1.207865000 ], [ -0.038624622 , 1.237369182 , 2.144051000 ], [ -0.079148681 , 2.474493071 , 0.000000000 ], [ -0.038624622 , 1.237369182 , -2.144051000 ], [ 0.042839694 , -1.237142510 , -2.144256000 ], [ 0.083401415 , -2.474593580 , 0.000000000 ], [ 0.042839694 , -1.237142510 , 2.144256000 ], [ 6.866953250 , 0.304536859 , 0.000000000 ], [ 5.710462502 , 0.145763954 , 0.000000000 ], [ 4.652579212 , 0.000000000 , 0.000000000 ]]}, 'Benzene-water_complex': { 'description': "Complex, S22, S26", 'name': "Benzene-water_complex", 's26_number': "17", 'interaction energy CC':-0.1427, 'interaction energies s22x5':[-0.1305,-0.1418,-0.1071,-0.0564,-0.0212], 'offset': 0.0009, 'symbols': 'CCCCCCHHHHHHOHH', 'magmoms': None, 'dimer atoms': [12,3], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 0.7806117, -0.6098875, -1.2075426], [ 0.4784039, 0.7510406, -1.2079040], [ 0.3276592, 1.4318573, 0.0000000], [ 0.4784039, 0.7510406, 1.2079040], [ 0.7806117, -0.6098875, 1.2075426], [ 0.9321510, -1.2899614, 0.0000000], [ 0.8966688, -1.1376051, -2.1441482], [ 0.3573895, 1.2782091, -2.1440546], [ 0.0918593, 2.4871407, 0.0000000], [ 0.3573895, 1.2782091, 2.1440546], [ 0.8966688, -1.1376051, 2.1441482], [ 1.1690064, -2.3451668, 0.0000000], [ -2.7885270, -0.2744854, 0.0000000], [ -2.6229114, -1.2190831, 0.0000000], [ -1.9015103, 0.0979110, 0.0000000]], 'positions 0.9':[[ 0.068736158 , 1.392383840 , -1.207543000 ], [ 0.000000000 , 0.000000000 , -1.207904000 ], [ -0.034807303 , -0.696435878 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207904000 ], [ 0.068736158 , 1.392383840 , 1.207543000 ], [ 0.102581137 , 2.088313342 , 0.000000000 ], [ 0.096477114 , 1.931999350 , -2.144148000 ], [ -0.022815407 , -0.540397951 , -2.144055000 ], [ -0.086694943 , -1.776497744 , 0.000000000 ], [ -0.022815407 , -0.540397951 , 2.144055000 ], [ 0.096477114 , 1.931999350 , 2.144148000 ], [ 0.153430751 , 3.168579194 , 0.000000000 ], [ 3.175061618 , 0.124369730 , 0.000000000 ], [ 3.265337861 , 1.079117991 , 0.000000000 ], [ 2.221117117 , 0.000000000 , 0.000000000 ]], 'positions 1.0':[[ 0.068736158000000 , 1.392383840000000 , -1.207543000000000 ], [ 0.000000000000000 , 0.000000000000000 , -1.207904000000000 ], [ -0.034807303000000 , -0.696435878000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 1.207904000000000 ], [ 0.068736158000000 , 1.392383840000000 , 1.207543000000000 ], [ 0.102581137000000 , 2.088313342000000 , 0.000000000000000 ], [ 0.096477114000000 , 1.931999350000000 , -2.144148000000000 ], [ -0.022815407000000 , -0.540397951000000 , -2.144055000000000 ], [ -0.086694943000000 , -1.776497744000000 , 0.000000000000000 ], [ -0.022815407000000 , -0.540397951000000 , 2.144055000000000 ], [ 0.096477114000000 , 1.931999350000000 , 2.144148000000000 ], [ 0.153430751000000 , 3.168579194000000 , 0.000000000000000 ], [ 3.421852408818182 , 0.124369730000000 , 0.000000000000000 ], [ 3.512128651818182 , 1.079117991000000 , 0.000000000000000 ], [ 2.467907907818182 , 0.000000000000000 , 0.000000000000000 ]], 'positions 1.2':[[ 0.068736158 , 1.392383840 , -1.207543000 ], [ 0.000000000 , 0.000000000 , -1.207904000 ], [ -0.034807303 , -0.696435878 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207904000 ], [ 0.068736158 , 1.392383840 , 1.207543000 ], [ 0.102581137 , 2.088313342 , 0.000000000 ], [ 0.096477114 , 1.931999350 , -2.144148000 ], [ -0.022815407 , -0.540397951 , -2.144055000 ], [ -0.086694943 , -1.776497744 , 0.000000000 ], [ -0.022815407 , -0.540397951 , 2.144055000 ], [ 0.096477114 , 1.931999350 , 2.144148000 ], [ 0.153430751 , 3.168579194 , 0.000000000 ], [ 3.915433991 , 0.124369730 , 0.000000000 ], [ 4.005710234 , 1.079117991 , 0.000000000 ], [ 2.961489490 , 0.000000000 , 0.000000000 ]], 'positions 1.5':[[ 0.068736158 , 1.392383840 , -1.207543000 ], [ 0.000000000 , 0.000000000 , -1.207904000 ], [ -0.034807303 , -0.696435878 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207904000 ], [ 0.068736158 , 1.392383840 , 1.207543000 ], [ 0.102581137 , 2.088313342 , 0.000000000 ], [ 0.096477114 , 1.931999350 , -2.144148000 ], [ -0.022815407 , -0.540397951 , -2.144055000 ], [ -0.086694943 , -1.776497744 , 0.000000000 ], [ -0.022815407 , -0.540397951 , 2.144055000 ], [ 0.096477114 , 1.931999350 , 2.144148000 ], [ 0.153430751 , 3.168579194 , 0.000000000 ], [ 4.655806363 , 0.124369730 , 0.000000000 ], [ 4.746082606 , 1.079117991 , 0.000000000 ], [ 3.701861862 , 0.000000000 , 0.000000000 ]], 'positions 2.0':[[ 0.068736158 , 1.392383840 , -1.207543000 ], [ 0.000000000 , 0.000000000 , -1.207904000 ], [ -0.034807303 , -0.696435878 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 1.207904000 ], [ 0.068736158 , 1.392383840 , 1.207543000 ], [ 0.102581137 , 2.088313342 , 0.000000000 ], [ 0.096477114 , 1.931999350 , -2.144148000 ], [ -0.022815407 , -0.540397951 , -2.144055000 ], [ -0.086694943 , -1.776497744 , 0.000000000 ], [ -0.022815407 , -0.540397951 , 2.144055000 ], [ 0.096477114 , 1.931999350 , 2.144148000 ], [ 0.153430751 , 3.168579194 , 0.000000000 ], [ 5.889760317 , 0.124369730 , 0.000000000 ], [ 5.980036560 , 1.079117991 , 0.000000000 ], [ 4.935815816 , 0.000000000 , 0.000000000 ]]}, 'Ethene_dimer': { 'description': "Complex, S22, S26, stack, dispersion bonded", 'name': "Ethene_dimer", 's26_number': "09", 'interaction energy CC':-0.0650, 'interaction energies s22x5':[-0.0295,-0.0642,-0.0351,-0.0087,-0.0013], 'offset': 0.0008, 'symbols': 'CCHHHHCCHHHH', 'magmoms': None, 'dimer atoms': [6,6], # Optimisation level: CCSD(T)/cc-pVQZ 'positions':[[ -0.471925, -0.471925, -1.859111], [ 0.471925, 0.471925, -1.859111], [ -0.872422, -0.872422, -0.936125], [ 0.872422, 0.872422, -0.936125], [ -0.870464, -0.870464, -2.783308], [ 0.870464, 0.870464, -2.783308], [ -0.471925, 0.471925, 1.859111], [ 0.471925, -0.471925, 1.859111], [ -0.872422, 0.872422, 0.936125], [ 0.872422, -0.872422, 0.936125], [ -0.870464, 0.870464, 2.783308], [ 0.870464, -0.870464, 2.783308]], 'positions 0.9':[[ 0.000000000 , -0.471925000 , 0.471925000 ], [ 0.000000000 , 0.471925000 , -0.471925000 ], [ 0.922986000 , -0.872422000 , 0.872422000 ], [ 0.922986000 , 0.872422000 , -0.872422000 ], [ -0.924197000 , -0.870464000 , 0.870464000 ], [ -0.924197000 , 0.870464000 , -0.870464000 ], [ 3.346399800 , 0.471925000 , 0.471925000 ], [ 3.346399800 , -0.471925000 , -0.471925000 ], [ 2.423413800 , 0.872422000 , 0.872422000 ], [ 2.423413800 , -0.872422000 , -0.872422000 ], [ 4.270596800 , 0.870464000 , 0.870464000 ], [ 4.270596800 , -0.870464000 , -0.870464000 ]], 'positions 1.0':[[ 0.000000000000000 , -0.471925000000000 , 0.471925000000000 ], [ 0.000000000000000 , 0.471925000000000 , -0.471925000000000 ], [ 0.922986000000000 , -0.872422000000000 , 0.872422000000000 ], [ 0.922986000000000 , 0.872422000000000 , -0.872422000000000 ], [ -0.924197000000000 , -0.870464000000000 , 0.870464000000000 ], [ -0.924197000000000 , 0.870464000000000 , -0.870464000000000 ], [ 3.718222000000000 , 0.471925000000000 , 0.471925000000000 ], [ 3.718222000000000 , -0.471925000000000 , -0.471925000000000 ], [ 2.795236000000000 , 0.872422000000000 , 0.872422000000000 ], [ 2.795236000000000 , -0.872422000000000 , -0.872422000000000 ], [ 4.642418999999999 , 0.870464000000000 , 0.870464000000000 ], [ 4.642418999999999 , -0.870464000000000 , -0.870464000000000 ]], 'positions 1.2':[[ 0.000000000 , -0.471925000 , 0.471925000 ], [ 0.000000000 , 0.471925000 , -0.471925000 ], [ 0.922986000 , -0.872422000 , 0.872422000 ], [ 0.922986000 , 0.872422000 , -0.872422000 ], [ -0.924197000 , -0.870464000 , 0.870464000 ], [ -0.924197000 , 0.870464000 , -0.870464000 ], [ 4.461866400 , 0.471925000 , 0.471925000 ], [ 4.461866400 , -0.471925000 , -0.471925000 ], [ 3.538880400 , 0.872422000 , 0.872422000 ], [ 3.538880400 , -0.872422000 , -0.872422000 ], [ 5.386063400 , 0.870464000 , 0.870464000 ], [ 5.386063400 , -0.870464000 , -0.870464000 ]], 'positions 1.5':[[ 0.000000000 , -0.471925000 , 0.471925000 ], [ 0.000000000 , 0.471925000 , -0.471925000 ], [ 0.922986000 , -0.872422000 , 0.872422000 ], [ 0.922986000 , 0.872422000 , -0.872422000 ], [ -0.924197000 , -0.870464000 , 0.870464000 ], [ -0.924197000 , 0.870464000 , -0.870464000 ], [ 5.577333000 , 0.471925000 , 0.471925000 ], [ 5.577333000 , -0.471925000 , -0.471925000 ], [ 4.654347000 , 0.872422000 , 0.872422000 ], [ 4.654347000 , -0.872422000 , -0.872422000 ], [ 6.501530000 , 0.870464000 , 0.870464000 ], [ 6.501530000 , -0.870464000 , -0.870464000 ]], 'positions 2.0':[[ 0.000000000 , -0.471925000 , 0.471925000 ], [ 0.000000000 , 0.471925000 , -0.471925000 ], [ 0.922986000 , -0.872422000 , 0.872422000 ], [ 0.922986000 , 0.872422000 , -0.872422000 ], [ -0.924197000 , -0.870464000 , 0.870464000 ], [ -0.924197000 , 0.870464000 , -0.870464000 ], [ 7.436444000 , 0.471925000 , 0.471925000 ], [ 7.436444000 , -0.471925000 , -0.471925000 ], [ 6.513458000 , 0.872422000 , 0.872422000 ], [ 6.513458000 , -0.872422000 , -0.872422000 ], [ 8.360641000 , 0.870464000 , 0.870464000 ], [ 8.360641000 , -0.870464000 , -0.870464000 ]]}, 'Ethene-ethyne_complex': { 'description': "Complex, S22, S26", 'name': "Ethene-ethyne_complex", 's26_number': "16", 'interaction energy CC':-0.0655, 'interaction energies s22x5':[-0.0507,-0.0646,-0.0468,-0.0212,-0.0065], 'offset': 0.0009, 'symbols': 'CCHHHHCCHH', 'magmoms': None, 'dimer atoms': [6,4], # Optimisation level: CCSD(T)/cc-pVQZ 'positions':[[ 0.000000, -0.667578, -2.124659], [ 0.000000, 0.667578, -2.124659], [ 0.923621, -1.232253, -2.126185], [ -0.923621, -1.232253, -2.126185], [ -0.923621, 1.232253, -2.126185], [ 0.923621, 1.232253, -2.126185], [ 0.000000, 0.000000, 2.900503], [ 0.000000, 0.000000, 1.693240], [ 0.000000, 0.000000, 0.627352], [ 0.000000, 0.000000, 3.963929]], 'positions 0.9':[[ 0.000000000 , -0.667578000 , 0.000000000 ], [ 0.000000000 , 0.667578000 , 0.000000000 ], [ -0.001526000 , -1.232253000 , -0.923621000 ], [ -0.001526000 , -1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , -0.923621000 ], [ 4.749960900 , 0.000000000 , 0.000000000 ], [ 3.542697900 , 0.000000000 , 0.000000000 ], [ 2.476809900 , 0.000000000 , 0.000000000 ], [ 5.813386900 , 0.000000000 , 0.000000000 ]], 'positions 1.0':[[ 0.000000000000000 , -0.667578000000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.667578000000000 , 0.000000000000000 ], [ -0.001526000000000 , -1.232253000000000 , -0.923621000000000 ], [ -0.001526000000000 , -1.232253000000000 , 0.923621000000000 ], [ -0.001526000000000 , 1.232253000000000 , 0.923621000000000 ], [ -0.001526000000000 , 1.232253000000000 , -0.923621000000000 ], [ 5.025162000000000 , 0.000000000000000 , 0.000000000000000 ], [ 3.817899000000000 , 0.000000000000000 , 0.000000000000000 ], [ 2.752011000000000 , 0.000000000000000 , 0.000000000000000 ], [ 6.088588000000001 , 0.000000000000000 , 0.000000000000000 ]], 'positions 1.2':[[ 0.000000000 , -0.667578000 , 0.000000000 ], [ 0.000000000 , 0.667578000 , 0.000000000 ], [ -0.001526000 , -1.232253000 , -0.923621000 ], [ -0.001526000 , -1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , -0.923621000 ], [ 5.575564200 , 0.000000000 , 0.000000000 ], [ 4.368301200 , 0.000000000 , 0.000000000 ], [ 3.302413200 , 0.000000000 , 0.000000000 ], [ 6.638990200 , 0.000000000 , 0.000000000 ]], 'positions 1.5':[[ 0.000000000 , -0.667578000 , 0.000000000 ], [ 0.000000000 , 0.667578000 , 0.000000000 ], [ -0.001526000 , -1.232253000 , -0.923621000 ], [ -0.001526000 , -1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , -0.923621000 ], [ 6.401167500 , 0.000000000 , 0.000000000 ], [ 5.193904500 , 0.000000000 , 0.000000000 ], [ 4.128016500 , 0.000000000 , 0.000000000 ], [ 7.464593500 , 0.000000000 , 0.000000000 ]], 'positions 2.0':[[ 0.000000000 , -0.667578000 , 0.000000000 ], [ 0.000000000 , 0.667578000 , 0.000000000 ], [ -0.001526000 , -1.232253000 , -0.923621000 ], [ -0.001526000 , -1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , 0.923621000 ], [ -0.001526000 , 1.232253000 , -0.923621000 ], [ 7.777173000 , 0.000000000 , 0.000000000 ], [ 6.569910000 , 0.000000000 , 0.000000000 ], [ 5.504022000 , 0.000000000 , 0.000000000 ], [ 8.840599000 , 0.000000000 , 0.000000000 ]]}, 'Formamide_dimer': { 'description': "Complex, S22, S26, 2 h-bonds, double h-bond", 'name': "Formamide_dimer", 's26_number': "04", 'interaction energy CC':-0.6990, 'interaction energies s22x5':[-0.6132,-0.6917,-0.5811,-0.3512,-0.1522], 'offset': 0.0073, 'symbols': 'CONHHHCONHHH', 'magmoms': None, 'dimer atoms': [6,6], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -2.018649, 0.052883, 0.000000], [ -1.452200, 1.143634, 0.000000], [ -1.407770, -1.142484, 0.000000], [ -1.964596, -1.977036, 0.000000], [ -0.387244, -1.207782, 0.000000], [ -3.117061, -0.013701, 0.000000], [ 2.018649, -0.052883, 0.000000], [ 1.452200, -1.143634, 0.000000], [ 1.407770, 1.142484, 0.000000], [ 1.964596, 1.977036, 0.000000], [ 0.387244, 1.207782, 0.000000], [ 3.117061, 0.013701, 0.000000]], 'positions 0.9':[[ -0.604120150 , -1.070346233 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.035273679 , -2.286277608 , 0.000000000 ], [ -0.620847527 , -3.100915874 , 0.000000000 ], [ 0.982356530 , -2.387103713 , 0.000000000 ], [ -1.704185444 , -1.098607493 , 0.000000000 ], [ 3.242982655 , -1.316757480 , 0.000000000 ], [ 2.638862505 , -2.387103713 , 0.000000000 ], [ 2.674136184 , -0.100826104 , 0.000000000 ], [ 3.259710032 , 0.713812161 , 0.000000000 ], [ 1.656505975 , 0.000000000 , 0.000000000 ], [ 4.343047949 , -1.288496220 , 0.000000000 ]], 'positions 1.0':[[ -0.604120150000000 , -1.070346233000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -0.035273679000000 , -2.286277608000000 , 0.000000000000000 ], [ -0.620847527000000 , -3.100915874000000 , 0.000000000000000 ], [ 0.982356530000000 , -2.387103713000000 , 0.000000000000000 ], [ -1.704185444000000 , -1.098607493000000 , 0.000000000000000 ], [ 3.427038874545455 , -1.316757480000000 , 0.000000000000000 ], [ 2.822918724545455 , -2.387103713000000 , 0.000000000000000 ], [ 2.858192403545455 , -0.100826104000000 , 0.000000000000000 ], [ 3.443766251545455 , 0.713812161000000 , 0.000000000000000 ], [ 1.840562194545454 , 0.000000000000000 , 0.000000000000000 ], [ 4.527104168545454 , -1.288496220000000 , 0.000000000000000 ]], 'positions 1.2':[[ -0.604120150 , -1.070346233 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.035273679 , -2.286277608 , 0.000000000 ], [ -0.620847527 , -3.100915874 , 0.000000000 ], [ 0.982356530 , -2.387103713 , 0.000000000 ], [ -1.704185444 , -1.098607493 , 0.000000000 ], [ 3.795151314 , -1.316757480 , 0.000000000 ], [ 3.191031164 , -2.387103713 , 0.000000000 ], [ 3.226304843 , -0.100826104 , 0.000000000 ], [ 3.811878691 , 0.713812161 , 0.000000000 ], [ 2.208674634 , 0.000000000 , 0.000000000 ], [ 4.895216608 , -1.288496220 , 0.000000000 ]], 'positions 1.5':[[ -0.604120150 , -1.070346233 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.035273679 , -2.286277608 , 0.000000000 ], [ -0.620847527 , -3.100915874 , 0.000000000 ], [ 0.982356530 , -2.387103713 , 0.000000000 ], [ -1.704185444 , -1.098607493 , 0.000000000 ], [ 4.347319973 , -1.316757480 , 0.000000000 ], [ 3.743199823 , -2.387103713 , 0.000000000 ], [ 3.778473502 , -0.100826104 , 0.000000000 ], [ 4.364047350 , 0.713812161 , 0.000000000 ], [ 2.760843293 , 0.000000000 , 0.000000000 ], [ 5.447385267 , -1.288496220 , 0.000000000 ]], 'positions 2.0':[[ -0.604120150 , -1.070346233 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.035273679 , -2.286277608 , 0.000000000 ], [ -0.620847527 , -3.100915874 , 0.000000000 ], [ 0.982356530 , -2.387103713 , 0.000000000 ], [ -1.704185444 , -1.098607493 , 0.000000000 ], [ 5.267601070 , -1.316757480 , 0.000000000 ], [ 4.663480920 , -2.387103713 , 0.000000000 ], [ 4.698754599 , -0.100826104 , 0.000000000 ], [ 5.284328447 , 0.713812161 , 0.000000000 ], [ 3.681124390 , 0.000000000 , 0.000000000 ], [ 6.367666364 , -1.288496220 , 0.000000000 ]]}, 'Formic_acid_dimer': { 'description': "Complex, S22, S26, 2 h-bonds, double h-bond", 'name': "Formic_acid_dimer", 's26_number': "03", 'interaction energy CC':-0.8152, 'interaction energies s22x5':[-0.7086,-0.8061,-0.6773,-0.4007,-0.1574], 'offset': 0.0091, 'symbols': 'COOHHCOOHH', 'magmoms': None, 'dimer atoms': [5,5], # Optimisation level: CCSD(T)/cc-pVTZ 'positions':[[ -1.888896, -0.179692, 0.000000], [ -1.493280, 1.073689, 0.000000], [ -1.170435, -1.166590, 0.000000], [ -2.979488, -0.258829, 0.000000], [ -0.498833, 1.107195, 0.000000], [ 1.888896, 0.179692, 0.000000], [ 1.493280, -1.073689, 0.000000], [ 1.170435, 1.166590, 0.000000], [ 2.979488, 0.258829, 0.000000], [ 0.498833, -1.107195, 0.000000]], 'positions 0.9':[[ -1.434944263 , -1.236643950 , 0.000000000 ], [ -0.995009531 , 0.001876693 , 0.000000000 ], [ -0.752030700 , -2.248465543 , 0.000000000 ], [ -2.527660580 , -1.276950582 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.186205474 , -1.011821594 , 0.000000000 ], [ 1.746270742 , -2.250342236 , 0.000000000 ], [ 1.503291911 , 0.000000000 , 0.000000000 ], [ 3.278921791 , -0.971514961 , 0.000000000 ], [ 0.751261211 , -2.248465543 , 0.000000000 ]], 'positions 1.0':[[ -1.434944263000000 , -1.236643950000000 , 0.000000000000000 ], [ -0.995009531000000 , 0.001876693000000 , 0.000000000000000 ], [ -0.752030700000000 , -2.248465543000000 , 0.000000000000000 ], [ -2.527660580000000 , -1.276950582000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ 2.353237908636364 , -1.011821594000000 , 0.000000000000000 ], [ 1.913303176636364 , -2.250342236000000 , 0.000000000000000 ], [ 1.670324345636364 , 0.000000000000000 , 0.000000000000000 ], [ 3.445954225636364 , -0.971514961000000 , 0.000000000000000 ], [ 0.918293645636364 , -2.248465543000000 , 0.000000000000000 ]], 'positions 1.2':[[ -1.434944263 , -1.236643950 , 0.000000000 ], [ -0.995009531 , 0.001876693 , 0.000000000 ], [ -0.752030700 , -2.248465543 , 0.000000000 ], [ -2.527660580 , -1.276950582 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.687302778 , -1.011821594 , 0.000000000 ], [ 2.247368046 , -2.250342236 , 0.000000000 ], [ 2.004389215 , 0.000000000 , 0.000000000 ], [ 3.780019095 , -0.971514961 , 0.000000000 ], [ 1.252358515 , -2.248465543 , 0.000000000 ]], 'positions 1.5':[[ -1.434944263 , -1.236643950 , 0.000000000 ], [ -0.995009531 , 0.001876693 , 0.000000000 ], [ -0.752030700 , -2.248465543 , 0.000000000 ], [ -2.527660580 , -1.276950582 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 3.188400082 , -1.011821594 , 0.000000000 ], [ 2.748465350 , -2.250342236 , 0.000000000 ], [ 2.505486519 , 0.000000000 , 0.000000000 ], [ 4.281116399 , -0.971514961 , 0.000000000 ], [ 1.753455819 , -2.248465543 , 0.000000000 ]], 'positions 2.0':[[ -1.434944263 , -1.236643950 , 0.000000000 ], [ -0.995009531 , 0.001876693 , 0.000000000 ], [ -0.752030700 , -2.248465543 , 0.000000000 ], [ -2.527660580 , -1.276950582 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 4.023562255 , -1.011821594 , 0.000000000 ], [ 3.583627523 , -2.250342236 , 0.000000000 ], [ 3.340648692 , 0.000000000 , 0.000000000 ], [ 5.116278572 , -0.971514961 , 0.000000000 ], [ 2.588617992 , -2.248465543 , 0.000000000 ]]}, 'Indole-benzene_complex_stack': { 'description': "Complex, S22, S26, stack, dispersion bonded", 'name': "Indole-benzene_complex_stack", 's26_number': "14", 'interaction energy CC':-0.1990, 'interaction energies s22x5':[-0.0924,-0.2246,-0.1565,-0.0468,-0.0043], 'offset': -0.0256, 'symbols': 'CCCCCCHHHHHHHCCHCCHCNCCHCHHH', 'magmoms': None, 'dimer atoms': [12,16], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -0.0210742, 1.5318615, -1.3639345], [ -1.2746794, 0.9741030, -1.6074097], [ -1.3783055, -0.2256981, -2.3084154], [ -0.2289426, -0.8664053, -2.7687944], [ 1.0247882, -0.3035171, -2.5312410], [ 1.1289996, 0.8966787, -1.8299830], [ 0.0600740, 2.4565627, -0.8093957], [ -2.1651002, 1.4654521, -1.2405676], [ -2.3509735, -0.6616122, -2.4926698], [ -0.3103419, -1.7955762, -3.3172704], [ 1.9165847, -0.7940845, -2.8993942], [ 2.1000347, 1.3326757, -1.6400420], [ -2.9417647, 0.8953834, 2.2239054], [ -2.0220674, 0.4258540, 1.9013549], [ -0.8149418, 1.0740453, 2.1066982], [ -0.7851529, 2.0443812, 2.5856086], [ 0.3704286, 0.4492852, 1.6847458], [ 1.7508619, 0.8038935, 1.7194004], [ 2.1870108, 1.6998281, 2.1275903], [ 2.4451359, -0.2310742, 1.1353313], [ 1.5646462, -1.2137812, 0.7555384], [ 0.2861214, -0.8269486, 1.0618752], [ -0.9284667, -1.4853121, 0.8606937], [ -0.9729200, -2.4554847, 0.3834013], [ -2.0792848, -0.8417668, 1.2876443], [ -3.0389974, -1.3203846, 1.1468400], [ 1.8075741, -2.0366963, 0.2333038], [ 3.5028794, -0.3485344, 0.969523]], 'positions 0.9':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.044485647 , -1.177978626 , 0.743160105 ], [ -0.010824638 , -2.411208517 , 0.095333145 ], [ 0.064150773 , -2.466933785 , -1.295623602 ], [ 0.100950904 , -1.287437054 , -2.038959973 ], [ 0.067356799 , -0.053500209 , -1.391376263 ], [ -0.013797739 , 0.956881587 , 0.503348328 ], [ -0.091346970 , -1.134458005 , 1.822398921 ], [ -0.039754009 , -3.325680275 , 0.672358669 ], [ 0.085389531 , -3.424849020 , -1.798373823 ], [ 0.146442780 , -1.330172544 , -3.119514770 ], [ 0.100852832 , 0.862456237 , -1.964945566 ], [ 2.717766027 , -0.578056849 , 3.494904751 ], [ 2.793508398 , -0.571969873 , 2.415753956 ], [ 2.753054336 , 0.633650134 , 1.734349558 ], [ 2.645935858 , 1.567038531 , 2.272036098 ], [ 2.855804852 , 0.624347564 , 0.333339655 ], [ 2.845637545 , 1.633662034 , -0.673499279 ], [ 2.762013625 , 2.698030593 , -0.533251753 ], [ 2.976224608 , 0.992808148 , -1.884517470 ], [ 3.081930238 , -0.360086596 , -1.675422891 ], [ 2.997750328 , -0.624347564 , -0.333339655 ], [ 3.046288127 , -1.839842986 , 0.351754941 ], [ 3.153106953 , -2.780217935 , -0.172940228 ], [ 2.941516868 , -1.796211682 , 1.733036170 ], [ 2.973148444 , -2.718261443 , 2.297634930 ], [ 3.103876306 , -1.056446212 , -2.398978775 ], [ 3.012441631 , 1.398036276 , -2.881807744 ]], 'positions 1.0':[[ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -0.044485647000000 , -1.177978626000000 , 0.743160105000000 ], [ -0.010824638000000 , -2.411208517000000 , 0.095333145000000 ], [ 0.064150773000000 , -2.466933785000000 , -1.295623602000000 ], [ 0.100950904000000 , -1.287437054000000 , -2.038959973000000 ], [ 0.067356799000000 , -0.053500209000000 , -1.391376263000000 ], [ -0.013797739000000 , 0.956881587000000 , 0.503348328000000 ], [ -0.091346970000000 , -1.134458005000000 , 1.822398921000000 ], [ -0.039754009000000 , -3.325680275000000 , 0.672358669000000 ], [ 0.085389531000000 , -3.424849020000000 , -1.798373823000000 ], [ 0.146442780000000 , -1.330172544000000 , -3.119514770000000 ], [ 0.100852832000000 , 0.862456237000000 , -1.964945566000000 ], [ 3.042963537000000 , -0.578056849000000 , 3.494904751000000 ], [ 3.118705908000000 , -0.571969873000000 , 2.415753956000000 ], [ 3.078251846000000 , 0.633650134000000 , 1.734349558000000 ], [ 2.971133368000000 , 1.567038531000000 , 2.272036098000000 ], [ 3.181002362000000 , 0.624347564000000 , 0.333339655000000 ], [ 3.170835055000000 , 1.633662034000000 , -0.673499279000000 ], [ 3.087211135000000 , 2.698030593000000 , -0.533251753000000 ], [ 3.301422118000000 , 0.992808148000000 , -1.884517470000000 ], [ 3.407127748000000 , -0.360086596000000 , -1.675422891000000 ], [ 3.322947838000000 , -0.624347564000000 , -0.333339655000000 ], [ 3.371485637000000 , -1.839842986000000 , 0.351754941000000 ], [ 3.478304463000000 , -2.780217935000000 , -0.172940228000000 ], [ 3.266714378000000 , -1.796211682000000 , 1.733036170000000 ], [ 3.298345954000000 , -2.718261443000000 , 2.297634930000000 ], [ 3.429073816000000 , -1.056446212000000 , -2.398978775000000 ], [ 3.337639141000000 , 1.398036276000000 , -2.881807744000000 ]], 'positions 1.2':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.044485647 , -1.177978626 , 0.743160105 ], [ -0.010824638 , -2.411208517 , 0.095333145 ], [ 0.064150773 , -2.466933785 , -1.295623602 ], [ 0.100950904 , -1.287437054 , -2.038959973 ], [ 0.067356799 , -0.053500209 , -1.391376263 ], [ -0.013797739 , 0.956881587 , 0.503348328 ], [ -0.091346970 , -1.134458005 , 1.822398921 ], [ -0.039754009 , -3.325680275 , 0.672358669 ], [ 0.085389531 , -3.424849020 , -1.798373823 ], [ 0.146442780 , -1.330172544 , -3.119514770 ], [ 0.100852832 , 0.862456237 , -1.964945566 ], [ 3.693358557 , -0.578056849 , 3.494904751 ], [ 3.769100928 , -0.571969873 , 2.415753956 ], [ 3.728646866 , 0.633650134 , 1.734349558 ], [ 3.621528388 , 1.567038531 , 2.272036098 ], [ 3.831397382 , 0.624347564 , 0.333339655 ], [ 3.821230075 , 1.633662034 , -0.673499279 ], [ 3.737606155 , 2.698030593 , -0.533251753 ], [ 3.951817138 , 0.992808148 , -1.884517470 ], [ 4.057522768 , -0.360086596 , -1.675422891 ], [ 3.973342858 , -0.624347564 , -0.333339655 ], [ 4.021880657 , -1.839842986 , 0.351754941 ], [ 4.128699483 , -2.780217935 , -0.172940228 ], [ 3.917109398 , -1.796211682 , 1.733036170 ], [ 3.948740974 , -2.718261443 , 2.297634930 ], [ 4.079468836 , -1.056446212 , -2.398978775 ], [ 3.988034161 , 1.398036276 , -2.881807744 ]], 'positions 1.5':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.044485647 , -1.177978626 , 0.743160105 ], [ -0.010824638 , -2.411208517 , 0.095333145 ], [ 0.064150773 , -2.466933785 , -1.295623602 ], [ 0.100950904 , -1.287437054 , -2.038959973 ], [ 0.067356799 , -0.053500209 , -1.391376263 ], [ -0.013797739 , 0.956881587 , 0.503348328 ], [ -0.091346970 , -1.134458005 , 1.822398921 ], [ -0.039754009 , -3.325680275 , 0.672358669 ], [ 0.085389531 , -3.424849020 , -1.798373823 ], [ 0.146442780 , -1.330172544 , -3.119514770 ], [ 0.100852832 , 0.862456237 , -1.964945566 ], [ 4.668951087 , -0.578056849 , 3.494904751 ], [ 4.744693458 , -0.571969873 , 2.415753956 ], [ 4.704239396 , 0.633650134 , 1.734349558 ], [ 4.597120918 , 1.567038531 , 2.272036098 ], [ 4.806989912 , 0.624347564 , 0.333339655 ], [ 4.796822605 , 1.633662034 , -0.673499279 ], [ 4.713198685 , 2.698030593 , -0.533251753 ], [ 4.927409668 , 0.992808148 , -1.884517470 ], [ 5.033115298 , -0.360086596 , -1.675422891 ], [ 4.948935388 , -0.624347564 , -0.333339655 ], [ 4.997473187 , -1.839842986 , 0.351754941 ], [ 5.104292013 , -2.780217935 , -0.172940228 ], [ 4.892701928 , -1.796211682 , 1.733036170 ], [ 4.924333504 , -2.718261443 , 2.297634930 ], [ 5.055061366 , -1.056446212 , -2.398978775 ], [ 4.963626691 , 1.398036276 , -2.881807744 ]], 'positions 2.0':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.044485647 , -1.177978626 , 0.743160105 ], [ -0.010824638 , -2.411208517 , 0.095333145 ], [ 0.064150773 , -2.466933785 , -1.295623602 ], [ 0.100950904 , -1.287437054 , -2.038959973 ], [ 0.067356799 , -0.053500209 , -1.391376263 ], [ -0.013797739 , 0.956881587 , 0.503348328 ], [ -0.091346970 , -1.134458005 , 1.822398921 ], [ -0.039754009 , -3.325680275 , 0.672358669 ], [ 0.085389531 , -3.424849020 , -1.798373823 ], [ 0.146442780 , -1.330172544 , -3.119514770 ], [ 0.100852832 , 0.862456237 , -1.964945566 ], [ 6.294938637 , -0.578056849 , 3.494904751 ], [ 6.370681008 , -0.571969873 , 2.415753956 ], [ 6.330226946 , 0.633650134 , 1.734349558 ], [ 6.223108468 , 1.567038531 , 2.272036098 ], [ 6.432977462 , 0.624347564 , 0.333339655 ], [ 6.422810155 , 1.633662034 , -0.673499279 ], [ 6.339186235 , 2.698030593 , -0.533251753 ], [ 6.553397218 , 0.992808148 , -1.884517470 ], [ 6.659102848 , -0.360086596 , -1.675422891 ], [ 6.574922938 , -0.624347564 , -0.333339655 ], [ 6.623460737 , -1.839842986 , 0.351754941 ], [ 6.730279563 , -2.780217935 , -0.172940228 ], [ 6.518689478 , -1.796211682 , 1.733036170 ], [ 6.550321054 , -2.718261443 , 2.297634930 ], [ 6.681048916 , -1.056446212 , -2.398978775 ], [ 6.589614241 , 1.398036276 , -2.881807744 ]]}, 'Indole-benzene_T-shape_complex': { 'description': "Complex, S22, S26", 'name': "Indole-benzene_T-shape_complex", 's26_number': "21", 'interaction energy CC':-0.2437, 'interaction energies s22x5':[-0.2164,-0.2489,-0.2116,-0.1214,-0.0477], 'offset': -0.0052, 'symbols': 'CCCCCCHHHHHHHNCCCCCCCCHHHHHH', 'magmoms': None, 'dimer atoms': [12,16], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 2.5118997, 1.6250148, 0.0000000], [ 2.7130094, 0.9578537, -1.2082918], [ 3.1177821, -0.3767436, -1.2083647], [ 3.3213848, -1.0437307, 0.0000000], [ 3.1177821, -0.3767436, 1.2083647], [ 2.7130094, 0.9578537, 1.2082918], [ 2.2024038, 2.6611358, 0.0000000], [ 2.5511760, 1.4736908, -2.1445900], [ 3.2702999, -0.8951406, -2.1448379], [ 3.6368139, -2.0781521, 0.0000000], [ 3.2702999, -0.8951406, 2.1448379], [ 2.5511760, 1.4736908, 2.1445900], [ 0.8065245, -0.4358866, 0.0000000], [ -0.1442408, -0.7686927, 0.0000000], [ -0.5161122, -2.0893220, 0.0000000], [ -1.8898755, -2.1814495, 0.0000000], [ -2.3932317, -0.8470830, 0.0000000], [ -1.2640653, 0.0195887, 0.0000000], [ -1.3896004, 1.4117668, 0.0000000], [ -2.6726501, 1.9366450, 0.0000000], [ -3.8054511, 1.0974790, 0.0000000], [ -3.6798167, -0.2817209, 0.0000000], [ 0.2310024, -2.8653173, 0.0000000], [ -2.4585759, -3.0956052, 0.0000000], [ -0.5188733, 2.0539520, 0.0000000], [ -2.8077570, 3.0097859, 0.0000000], [ -4.7905991, 1.5439372, 0.0000000], [ -4.5580187, -0.9142916, 0.0000000]], 'positions 0.9':[[ -0.052652077 , -1.393225783 , 0.000000000 ], [ -0.025543347 , -0.696940104 , -1.208292000 ], [ 0.026348254 , 0.696724226 , -1.208365000 ], [ 0.051042263 , 1.393657541 , 0.000000000 ], [ 0.026348254 , 0.696724226 , 1.208365000 ], [ -0.025543347 , -0.696940104 , 1.208292000 ], [ -0.097430661 , -2.473655966 , 0.000000000 ], [ -0.040509756 , -1.237360068 , -2.144590000 ], [ 0.050955575 , 1.236531293 , -2.144838000 ], [ 0.089657645 , 2.474412421 , 0.000000000 ], [ 0.050955575 , 1.236531293 , 2.144838000 ], [ -0.040509756 , -1.237360068 , 2.144590000 ], [ 2.007797424 , 0.000000000 , 0.000000000 ], [ 3.015114828 , 0.005056388 , 0.000000000 ], [ 3.796769012 , 1.132604937 , 0.000000000 ], [ 5.125653739 , 0.772354616 , 0.000000000 ], [ 5.167047225 , -0.653193161 , 0.000000000 ], [ 3.817202589 , -1.104920876 , 0.000000000 ], [ 3.482542920 , -2.462094972 , 0.000000000 ], [ 4.524735226 , -3.376178892 , 0.000000000 ], [ 5.869058665 , -2.951641292 , 0.000000000 ], [ 6.199398544 , -1.606705567 , 0.000000000 ], [ 3.343074787 , 2.109594763 , 0.000000000 ], [ 5.961043541 , 1.451489921 , 0.000000000 ], [ 2.450153978 , -2.785730808 , 0.000000000 ], [ 4.303017780 , -4.434822780 , 0.000000000 ], [ 6.655123584 , -3.694570139 , 0.000000000 ], [ 7.235724321 , -1.294593877 , 0.000000000 ]], 'positions 1.0':[[ -0.052652077000000 , -1.393225783000000 , 0.000000000000000 ], [ -0.025543347000000 , -0.696940104000000 , -1.208292000000000 ], [ 0.026348254000000 , 0.696724226000000 , -1.208365000000000 ], [ 0.051042263000000 , 1.393657541000000 , 0.000000000000000 ], [ 0.026348254000000 , 0.696724226000000 , 1.208365000000000 ], [ -0.025543347000000 , -0.696940104000000 , 1.208292000000000 ], [ -0.097430661000000 , -2.473655966000000 , 0.000000000000000 ], [ -0.040509756000000 , -1.237360068000000 , -2.144590000000000 ], [ 0.050955575000000 , 1.236531293000000 , -2.144838000000000 ], [ 0.089657645000000 , 2.474412421000000 , 0.000000000000000 ], [ 0.050955575000000 , 1.236531293000000 , 2.144838000000000 ], [ -0.040509756000000 , -1.237360068000000 , 2.144590000000000 ], [ 2.230886026727273 , 0.000000000000000 , 0.000000000000000 ], [ 3.238203430727273 , 0.005056388000000 , 0.000000000000000 ], [ 4.019857614727273 , 1.132604937000000 , 0.000000000000000 ], [ 5.348742341727273 , 0.772354616000000 , 0.000000000000000 ], [ 5.390135827727273 , -0.653193161000000 , 0.000000000000000 ], [ 4.040291191727273 , -1.104920876000000 , 0.000000000000000 ], [ 3.705631522727273 , -2.462094972000000 , 0.000000000000000 ], [ 4.747823828727273 , -3.376178892000000 , 0.000000000000000 ], [ 6.092147267727273 , -2.951641292000000 , 0.000000000000000 ], [ 6.422487146727273 , -1.606705567000000 , 0.000000000000000 ], [ 3.566163389727273 , 2.109594763000000 , 0.000000000000000 ], [ 6.184132143727273 , 1.451489921000000 , 0.000000000000000 ], [ 2.673242580727273 , -2.785730808000000 , 0.000000000000000 ], [ 4.526106382727273 , -4.434822780000000 , 0.000000000000000 ], [ 6.878212186727272 , -3.694570139000000 , 0.000000000000000 ], [ 7.458812923727273 , -1.294593877000000 , 0.000000000000000 ]], 'positions 1.2':[[ -0.052652077 , -1.393225783 , 0.000000000 ], [ -0.025543347 , -0.696940104 , -1.208292000 ], [ 0.026348254 , 0.696724226 , -1.208365000 ], [ 0.051042263 , 1.393657541 , 0.000000000 ], [ 0.026348254 , 0.696724226 , 1.208365000 ], [ -0.025543347 , -0.696940104 , 1.208292000 ], [ -0.097430661 , -2.473655966 , 0.000000000 ], [ -0.040509756 , -1.237360068 , -2.144590000 ], [ 0.050955575 , 1.236531293 , -2.144838000 ], [ 0.089657645 , 2.474412421 , 0.000000000 ], [ 0.050955575 , 1.236531293 , 2.144838000 ], [ -0.040509756 , -1.237360068 , 2.144590000 ], [ 2.677063232 , 0.000000000 , 0.000000000 ], [ 3.684380636 , 0.005056388 , 0.000000000 ], [ 4.466034820 , 1.132604937 , 0.000000000 ], [ 5.794919547 , 0.772354616 , 0.000000000 ], [ 5.836313033 , -0.653193161 , 0.000000000 ], [ 4.486468397 , -1.104920876 , 0.000000000 ], [ 4.151808728 , -2.462094972 , 0.000000000 ], [ 5.194001034 , -3.376178892 , 0.000000000 ], [ 6.538324473 , -2.951641292 , 0.000000000 ], [ 6.868664352 , -1.606705567 , 0.000000000 ], [ 4.012340595 , 2.109594763 , 0.000000000 ], [ 6.630309349 , 1.451489921 , 0.000000000 ], [ 3.119419786 , -2.785730808 , 0.000000000 ], [ 4.972283588 , -4.434822780 , 0.000000000 ], [ 7.324389392 , -3.694570139 , 0.000000000 ], [ 7.904990129 , -1.294593877 , 0.000000000 ]], 'positions 1.5':[[ -0.052652077 , -1.393225783 , 0.000000000 ], [ -0.025543347 , -0.696940104 , -1.208292000 ], [ 0.026348254 , 0.696724226 , -1.208365000 ], [ 0.051042263 , 1.393657541 , 0.000000000 ], [ 0.026348254 , 0.696724226 , 1.208365000 ], [ -0.025543347 , -0.696940104 , 1.208292000 ], [ -0.097430661 , -2.473655966 , 0.000000000 ], [ -0.040509756 , -1.237360068 , -2.144590000 ], [ 0.050955575 , 1.236531293 , -2.144838000 ], [ 0.089657645 , 2.474412421 , 0.000000000 ], [ 0.050955575 , 1.236531293 , 2.144838000 ], [ -0.040509756 , -1.237360068 , 2.144590000 ], [ 3.346329040 , 0.000000000 , 0.000000000 ], [ 4.353646444 , 0.005056388 , 0.000000000 ], [ 5.135300628 , 1.132604937 , 0.000000000 ], [ 6.464185355 , 0.772354616 , 0.000000000 ], [ 6.505578841 , -0.653193161 , 0.000000000 ], [ 5.155734205 , -1.104920876 , 0.000000000 ], [ 4.821074536 , -2.462094972 , 0.000000000 ], [ 5.863266842 , -3.376178892 , 0.000000000 ], [ 7.207590281 , -2.951641292 , 0.000000000 ], [ 7.537930160 , -1.606705567 , 0.000000000 ], [ 4.681606403 , 2.109594763 , 0.000000000 ], [ 7.299575157 , 1.451489921 , 0.000000000 ], [ 3.788685594 , -2.785730808 , 0.000000000 ], [ 5.641549396 , -4.434822780 , 0.000000000 ], [ 7.993655200 , -3.694570139 , 0.000000000 ], [ 8.574255937 , -1.294593877 , 0.000000000 ]], 'positions 2.0':[[ -0.052652077 , -1.393225783 , 0.000000000 ], [ -0.025543347 , -0.696940104 , -1.208292000 ], [ 0.026348254 , 0.696724226 , -1.208365000 ], [ 0.051042263 , 1.393657541 , 0.000000000 ], [ 0.026348254 , 0.696724226 , 1.208365000 ], [ -0.025543347 , -0.696940104 , 1.208292000 ], [ -0.097430661 , -2.473655966 , 0.000000000 ], [ -0.040509756 , -1.237360068 , -2.144590000 ], [ 0.050955575 , 1.236531293 , -2.144838000 ], [ 0.089657645 , 2.474412421 , 0.000000000 ], [ 0.050955575 , 1.236531293 , 2.144838000 ], [ -0.040509756 , -1.237360068 , 2.144590000 ], [ 4.461772054 , 0.000000000 , 0.000000000 ], [ 5.469089458 , 0.005056388 , 0.000000000 ], [ 6.250743642 , 1.132604937 , 0.000000000 ], [ 7.579628369 , 0.772354616 , 0.000000000 ], [ 7.621021855 , -0.653193161 , 0.000000000 ], [ 6.271177219 , -1.104920876 , 0.000000000 ], [ 5.936517550 , -2.462094972 , 0.000000000 ], [ 6.978709856 , -3.376178892 , 0.000000000 ], [ 8.323033295 , -2.951641292 , 0.000000000 ], [ 8.653373174 , -1.606705567 , 0.000000000 ], [ 5.797049417 , 2.109594763 , 0.000000000 ], [ 8.415018171 , 1.451489921 , 0.000000000 ], [ 4.904128608 , -2.785730808 , 0.000000000 ], [ 6.756992410 , -4.434822780 , 0.000000000 ], [ 9.109098214 , -3.694570139 , 0.000000000 ], [ 9.689698951 , -1.294593877 , 0.000000000 ]]}, 'Methane_dimer': { 'description': "Complex, S22, S26, dispersion bonded", 'name': "Methane_dimer", 's26_number': "08", 'interaction energy CC':-0.0230, 'interaction energies s22x5':[-0.0147,-0.0230,-0.0108,-0.0026,-0.0004], 'offset': 0.0000, 'symbols': 'CHHHHCHHHH', 'magmoms': None, 'dimer atoms': [5,5], # Optimisation level: CCSD(T)/cc-pVTZ 'positions':[[ 0.000000, -0.000140, 1.859161], [ -0.888551, 0.513060, 1.494685], [ 0.888551, 0.513060, 1.494685], [ 0.000000, -1.026339, 1.494868], [ 0.000000, 0.000089, 2.948284], [ 0.000000, 0.000140, -1.859161], [ 0.000000, -0.000089, -2.948284], [ -0.888551, -0.513060, -1.494685], [ 0.888551, -0.513060, -1.494685], [ 0.000000, 1.026339, -1.494868]], 'positions 0.9':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ 0.364514644 , 0.513239461 , -0.888512354 ], [ 0.364514644 , 0.513105641 , 0.888589641 ], [ 0.364215723 , -1.026226426 , -0.000077278 ], [ -1.089122980 , 0.000311014 , 0.000000023 ], [ 3.346489810 , 0.000000000 , 0.000000000 ], [ 4.435612789 , -0.000311014 , -0.000000023 ], [ 2.981975165 , -0.513105641 , -0.888589641 ], [ 2.981975165 , -0.513239461 , 0.888512354 ], [ 2.982274086 , 1.026226426 , 0.000077278 ]], 'positions 1.0':[[ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ 0.364514644000000 , 0.513239461000000 , -0.888512354000000 ], [ 0.364514644000000 , 0.513105641000000 , 0.888589641000000 ], [ 0.364215723000000 , -1.026226426000000 , -0.000077278000000 ], [ -1.089122980000000 , 0.000311014000000 , 0.000000023000000 ], [ 3.718322011090909 , 0.000000000000000 , 0.000000000000000 ], [ 4.807444990090909 , -0.000311014000000 , -0.000000023000000 ], [ 3.353807366090909 , -0.513105641000000 , -0.888589641000000 ], [ 3.353807366090909 , -0.513239461000000 , 0.888512354000000 ], [ 3.354106287090909 , 1.026226426000000 , 0.000077278000000 ]], 'positions 1.2':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ 0.364514644 , 0.513239461 , -0.888512354 ], [ 0.364514644 , 0.513105641 , 0.888589641 ], [ 0.364215723 , -1.026226426 , -0.000077278 ], [ -1.089122980 , 0.000311014 , 0.000000023 ], [ 4.461986413 , 0.000000000 , 0.000000000 ], [ 5.551109392 , -0.000311014 , -0.000000023 ], [ 4.097471768 , -0.513105641 , -0.888589641 ], [ 4.097471768 , -0.513239461 , 0.888512354 ], [ 4.097770689 , 1.026226426 , 0.000077278 ]], 'positions 1.5':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ 0.364514644 , 0.513239461 , -0.888512354 ], [ 0.364514644 , 0.513105641 , 0.888589641 ], [ 0.364215723 , -1.026226426 , -0.000077278 ], [ -1.089122980 , 0.000311014 , 0.000000023 ], [ 5.577483016 , 0.000000000 , 0.000000000 ], [ 6.666605995 , -0.000311014 , -0.000000023 ], [ 5.212968371 , -0.513105641 , -0.888589641 ], [ 5.212968371 , -0.513239461 , 0.888512354 ], [ 5.213267292 , 1.026226426 , 0.000077278 ]], 'positions 2.0':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ 0.364514644 , 0.513239461 , -0.888512354 ], [ 0.364514644 , 0.513105641 , 0.888589641 ], [ 0.364215723 , -1.026226426 , -0.000077278 ], [ -1.089122980 , 0.000311014 , 0.000000023 ], [ 7.436644022 , 0.000000000 , 0.000000000 ], [ 8.525767001 , -0.000311014 , -0.000000023 ], [ 7.072129377 , -0.513105641 , -0.888589641 ], [ 7.072129377 , -0.513239461 , 0.888512354 ], [ 7.072428298 , 1.026226426 , 0.000077278 ]]}, 'Phenol_dimer': { 'description': "Complex, S22, S26", 'name': "Phenol_dimer", 's26_number': "22", 'interaction energy CC':-0.3075, 'interaction energies s22x5':[-0.2784,-0.3057,-0.2511,-0.1479,-0.0598], 'offset': 0.0018, 'symbols': 'COHCCCCCHHHHHOCHCCCCCHHHHH', 'magmoms': None, 'dimer atoms': [13,13], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -2.0071056, 0.7638459, -0.1083509], [ -1.3885044, 1.9298523, -0.4431206], [ -0.5238121, 1.9646519, -0.0064609], [ -1.4630807, -0.1519120, 0.7949930], [ -2.1475789, -1.3295094, 1.0883677], [ -3.3743208, -1.6031427, 0.4895864], [ -3.9143727, -0.6838545, -0.4091028], [ -3.2370496, 0.4929609, -0.7096126], [ -0.5106510, 0.0566569, 1.2642563], [ -1.7151135, -2.0321452, 1.7878417], [ -3.9024664, -2.5173865, 0.7197947], [ -4.8670730, -0.8822939, -0.8811319], [ -3.6431662, 1.2134345, -1.4057590], [ 1.3531168, 1.9382724, 0.4723133], [ 2.0369747, 0.7865043, 0.1495491], [ 1.7842846, 2.3487495, 1.2297110], [ 1.5904026, 0.0696860, -0.9574153], [ 2.2417367, -1.1069765, -1.3128110], [ 3.3315674, -1.5665603, -0.5748636], [ 3.7696838, -0.8396901, 0.5286439], [ 3.1224836, 0.3383498, 0.8960491], [ 0.7445512, 0.4367983, -1.5218583], [ 1.8921463, -1.6649726, -2.1701843], [ 3.8330227, -2.4811537, -0.8566666], [ 4.6137632, -1.1850101, 1.1092635], [ 3.4598854, 0.9030376, 1.7569489]], 'positions 0.9':[[ -1.445967355 , -1.221065858 , 0.265808750 ], [ -0.945229913 , -0.047318091 , -0.209467563 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.683142700 , -2.127785201 , 1.005109011 ], [ -1.257798399 , -3.314090975 , 1.456540663 ], [ -2.590627730 , -3.605427919 , 1.179051667 ], [ -3.348500619 , -2.695116849 , 0.443286115 ], [ -2.782549405 , -1.509701903 , -0.013287247 ], [ 0.352786431 , -1.905463972 , 1.224781047 ], [ -0.656349187 , -4.009576034 , 2.026231320 ], [ -3.032993188 , -4.526384329 , 1.531085059 ], [ -4.385512900 , -2.907317436 , 0.221017935 ], [ -3.357888956 , -0.796017014 , -0.586234960 ], [ 1.743489077 , 0.000000000 , 0.000000000 ], [ 2.341981491 , -1.142898789 , -0.483732445 ], [ 2.342838533 , 0.417604441 , 0.628041164 ], [ 1.645485086 , -1.867622674 , -1.447211527 ], [ 2.204739700 , -3.035912794 , -1.954567993 ], [ 3.449296078 , -3.479350313 , -1.509647408 ], [ 4.136609561 , -2.744696418 , -0.547410307 ], [ 3.584309534 , -1.574952605 , -0.029436748 ], [ 0.681454799 , -1.513028491 , -1.784467064 ], [ 1.661729182 , -3.600082357 , -2.699896207 ], [ 3.877956013 , -4.387511286 , -1.908204233 ], [ 5.102623102 , -3.077497147 , -0.194005162 ], [ 4.116289930 , -1.004251641 , 0.722333197 ]], 'positions 1.0':[[ -1.445967355000000 , -1.221065858000000 , 0.265808750000000 ], [ -0.945229913000000 , -0.047318091000000 , -0.209467563000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -0.683142700000000 , -2.127785201000000 , 1.005109011000000 ], [ -1.257798399000000 , -3.314090975000000 , 1.456540663000000 ], [ -2.590627730000000 , -3.605427919000000 , 1.179051667000000 ], [ -3.348500619000000 , -2.695116849000000 , 0.443286115000000 ], [ -2.782549405000000 , -1.509701903000000 , -0.013287247000000 ], [ 0.352786431000000 , -1.905463972000000 , 1.224781047000000 ], [ -0.656349187000000 , -4.009576034000000 , 2.026231320000000 ], [ -3.032993188000000 , -4.526384329000000 , 1.531085059000000 ], [ -4.385512900000000 , -2.907317436000000 , 0.221017935000000 ], [ -3.357888956000000 , -0.796017014000000 , -0.586234960000000 ], [ 1.937210085636364 , 0.000000000000000 , 0.000000000000000 ], [ 2.535702499636364 , -1.142898789000000 , -0.483732445000000 ], [ 2.536559541636364 , 0.417604441000000 , 0.628041164000000 ], [ 1.839206094636364 , -1.867622674000000 , -1.447211527000000 ], [ 2.398460708636364 , -3.035912794000000 , -1.954567993000000 ], [ 3.643017086636364 , -3.479350313000000 , -1.509647408000000 ], [ 4.330330569636364 , -2.744696418000000 , -0.547410307000000 ], [ 3.778030542636364 , -1.574952605000000 , -0.029436748000000 ], [ 0.875175807636364 , -1.513028491000000 , -1.784467064000000 ], [ 1.855450190636364 , -3.600082357000000 , -2.699896207000000 ], [ 4.071677021636363 , -4.387511286000000 , -1.908204233000000 ], [ 5.296344110636364 , -3.077497147000000 , -0.194005162000000 ], [ 4.310010938636363 , -1.004251641000000 , 0.722333197000000 ]], 'positions 1.2':[[ -1.445967355 , -1.221065858 , 0.265808750 ], [ -0.945229913 , -0.047318091 , -0.209467563 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.683142700 , -2.127785201 , 1.005109011 ], [ -1.257798399 , -3.314090975 , 1.456540663 ], [ -2.590627730 , -3.605427919 , 1.179051667 ], [ -3.348500619 , -2.695116849 , 0.443286115 ], [ -2.782549405 , -1.509701903 , -0.013287247 ], [ 0.352786431 , -1.905463972 , 1.224781047 ], [ -0.656349187 , -4.009576034 , 2.026231320 ], [ -3.032993188 , -4.526384329 , 1.531085059 ], [ -4.385512900 , -2.907317436 , 0.221017935 ], [ -3.357888956 , -0.796017014 , -0.586234960 ], [ 2.324652103 , 0.000000000 , 0.000000000 ], [ 2.923144517 , -1.142898789 , -0.483732445 ], [ 2.924001559 , 0.417604441 , 0.628041164 ], [ 2.226648112 , -1.867622674 , -1.447211527 ], [ 2.785902726 , -3.035912794 , -1.954567993 ], [ 4.030459104 , -3.479350313 , -1.509647408 ], [ 4.717772587 , -2.744696418 , -0.547410307 ], [ 4.165472560 , -1.574952605 , -0.029436748 ], [ 1.262617825 , -1.513028491 , -1.784467064 ], [ 2.242892208 , -3.600082357 , -2.699896207 ], [ 4.459119039 , -4.387511286 , -1.908204233 ], [ 5.683786128 , -3.077497147 , -0.194005162 ], [ 4.697452956 , -1.004251641 , 0.722333197 ]], 'positions 1.5':[[ -1.445967355 , -1.221065858 , 0.265808750 ], [ -0.945229913 , -0.047318091 , -0.209467563 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.683142700 , -2.127785201 , 1.005109011 ], [ -1.257798399 , -3.314090975 , 1.456540663 ], [ -2.590627730 , -3.605427919 , 1.179051667 ], [ -3.348500619 , -2.695116849 , 0.443286115 ], [ -2.782549405 , -1.509701903 , -0.013287247 ], [ 0.352786431 , -1.905463972 , 1.224781047 ], [ -0.656349187 , -4.009576034 , 2.026231320 ], [ -3.032993188 , -4.526384329 , 1.531085059 ], [ -4.385512900 , -2.907317436 , 0.221017935 ], [ -3.357888956 , -0.796017014 , -0.586234960 ], [ 2.905815129 , 0.000000000 , 0.000000000 ], [ 3.504307543 , -1.142898789 , -0.483732445 ], [ 3.505164585 , 0.417604441 , 0.628041164 ], [ 2.807811138 , -1.867622674 , -1.447211527 ], [ 3.367065752 , -3.035912794 , -1.954567993 ], [ 4.611622130 , -3.479350313 , -1.509647408 ], [ 5.298935613 , -2.744696418 , -0.547410307 ], [ 4.746635586 , -1.574952605 , -0.029436748 ], [ 1.843780851 , -1.513028491 , -1.784467064 ], [ 2.824055234 , -3.600082357 , -2.699896207 ], [ 5.040282065 , -4.387511286 , -1.908204233 ], [ 6.264949154 , -3.077497147 , -0.194005162 ], [ 5.278615982 , -1.004251641 , 0.722333197 ]], 'positions 2.0':[[ -1.445967355 , -1.221065858 , 0.265808750 ], [ -0.945229913 , -0.047318091 , -0.209467563 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.683142700 , -2.127785201 , 1.005109011 ], [ -1.257798399 , -3.314090975 , 1.456540663 ], [ -2.590627730 , -3.605427919 , 1.179051667 ], [ -3.348500619 , -2.695116849 , 0.443286115 ], [ -2.782549405 , -1.509701903 , -0.013287247 ], [ 0.352786431 , -1.905463972 , 1.224781047 ], [ -0.656349187 , -4.009576034 , 2.026231320 ], [ -3.032993188 , -4.526384329 , 1.531085059 ], [ -4.385512900 , -2.907317436 , 0.221017935 ], [ -3.357888956 , -0.796017014 , -0.586234960 ], [ 3.874420172 , 0.000000000 , 0.000000000 ], [ 4.472912586 , -1.142898789 , -0.483732445 ], [ 4.473769628 , 0.417604441 , 0.628041164 ], [ 3.776416181 , -1.867622674 , -1.447211527 ], [ 4.335670795 , -3.035912794 , -1.954567993 ], [ 5.580227173 , -3.479350313 , -1.509647408 ], [ 6.267540656 , -2.744696418 , -0.547410307 ], [ 5.715240629 , -1.574952605 , -0.029436748 ], [ 2.812385894 , -1.513028491 , -1.784467064 ], [ 3.792660277 , -3.600082357 , -2.699896207 ], [ 6.008887108 , -4.387511286 , -1.908204233 ], [ 7.233554197 , -3.077497147 , -0.194005162 ], [ 6.247221025 , -1.004251641 , 0.722333197 ]]}, 'Pyrazine_dimer': { 'description': "Complex, S22, S26, dispersion bonded", 'name': "Pyrazine_dimer", 's26_number': "12", 'interaction energy CC':-0.1821, 'interaction energies s22x5':[-0.0733,-0.1956,-0.1310,-0.0425,-0.0082], 'offset': -0.0135, 'symbols': 'CCNCCNHHHHCCNCCNHHHH', 'magmoms': None, 'dimer atoms': [10,10], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -1.2471894, -1.1718212, -0.6961388], [ -1.2471894, -1.1718212, 0.6961388], [ -0.2589510, -1.7235771, 1.4144796], [ 0.7315327, -2.2652221, 0.6967288], [ 0.7315327, -2.2652221, -0.6967288], [ -0.2589510, -1.7235771, -1.4144796], [ -2.0634363, -0.7223199, -1.2472797], [ -2.0634363, -0.7223199, 1.2472797], [ 1.5488004, -2.7128282, 1.2475604], [ 1.5488004, -2.7128282, -1.2475604], [ -0.3380031, 2.0800608, 1.1300452], [ 0.8540254, 1.3593471, 1.1306308], [ 1.4701787, 0.9907598, 0.0000000], [ 0.8540254, 1.3593471, -1.1306308], [ -0.3380031, 2.0800608, -1.1300452], [ -0.9523059, 2.4528836, 0.0000000], [ -0.8103758, 2.3643033, 2.0618643], [ 1.3208583, 1.0670610, 2.0623986], [ 1.3208583, 1.0670610, -2.0623986], [ -0.8103758, 2.3643033, -2.0618643]], 'positions 0.9':[[ 0.395653045 , 1.059432142 , -0.696139000 ], [ 0.395653045 , 1.059432142 , 0.696139000 ], [ -0.003263357 , 0.000227377 , 1.414480000 ], [ -0.391847355 , -1.059697307 , 0.696729000 ], [ -0.391847355 , -1.059697307 , -0.696729000 ], [ -0.003263357 , 0.000227377 , -1.414480000 ], [ 0.718983381 , 1.933370245 , -1.247280000 ], [ 0.718983381 , 1.933370245 , 1.247280000 ], [ -0.713152254 , -1.934362753 , 1.247560000 ], [ -0.713152254 , -1.934362753 , -1.247560000 ], [ 3.398538200 , 0.643131999 , 1.130045000 ], [ 2.862793235 , -0.642689433 , 1.130631000 ], [ 2.589772167 , -1.306738847 , 0.000000000 ], [ 2.862793235 , -0.642689433 , -1.130631000 ], [ 3.398538200 , 0.643131999 , -1.130045000 ], [ 3.676023139 , 1.305979850 , 0.000000000 ], [ 3.609496345 , 1.152471205 , 2.061864000 ], [ 2.643057716 , -1.147744338 , 2.062399000 ], [ 2.643057716 , -1.147744338 , -2.062399000 ], [ 3.609496345 , 1.152471205 , -2.061864000 ]], 'positions 1.0':[[ 0.395653045000000 , 1.059432142000000 , -0.696139000000000 ], [ 0.395653045000000 , 1.059432142000000 , 0.696139000000000 ], [ -0.003263357000000 , 0.000227377000000 , 1.414480000000000 ], [ -0.391847355000000 , -1.059697307000000 , 0.696729000000000 ], [ -0.391847355000000 , -1.059697307000000 , -0.696729000000000 ], [ -0.003263357000000 , 0.000227377000000 , -1.414480000000000 ], [ 0.718983381000000 , 1.933370245000000 , -1.247280000000000 ], [ 0.718983381000000 , 1.933370245000000 , 1.247280000000000 ], [ -0.713152254000000 , -1.934362753000000 , 1.247560000000000 ], [ -0.713152254000000 , -1.934362753000000 , -1.247560000000000 ], [ 3.746481288363636 , 0.643131999000000 , 1.130045000000000 ], [ 3.210736323363636 , -0.642689433000000 , 1.130631000000000 ], [ 2.937715255363636 , -1.306738847000000 , 0.000000000000000 ], [ 3.210736323363636 , -0.642689433000000 , -1.130631000000000 ], [ 3.746481288363636 , 0.643131999000000 , -1.130045000000000 ], [ 4.023966227363637 , 1.305979850000000 , 0.000000000000000 ], [ 3.957439433363636 , 1.152471205000000 , 2.061864000000000 ], [ 2.991000804363636 , -1.147744338000000 , 2.062399000000000 ], [ 2.991000804363636 , -1.147744338000000 , -2.062399000000000 ], [ 3.957439433363636 , 1.152471205000000 , -2.061864000000000 ]], 'positions 1.2':[[ 0.395653045 , 1.059432142 , -0.696139000 ], [ 0.395653045 , 1.059432142 , 0.696139000 ], [ -0.003263357 , 0.000227377 , 1.414480000 ], [ -0.391847355 , -1.059697307 , 0.696729000 ], [ -0.391847355 , -1.059697307 , -0.696729000 ], [ -0.003263357 , 0.000227377 , -1.414480000 ], [ 0.718983381 , 1.933370245 , -1.247280000 ], [ 0.718983381 , 1.933370245 , 1.247280000 ], [ -0.713152254 , -1.934362753 , 1.247560000 ], [ -0.713152254 , -1.934362753 , -1.247560000 ], [ 4.442367465 , 0.643131999 , 1.130045000 ], [ 3.906622500 , -0.642689433 , 1.130631000 ], [ 3.633601432 , -1.306738847 , 0.000000000 ], [ 3.906622500 , -0.642689433 , -1.130631000 ], [ 4.442367465 , 0.643131999 , -1.130045000 ], [ 4.719852404 , 1.305979850 , 0.000000000 ], [ 4.653325610 , 1.152471205 , 2.061864000 ], [ 3.686886981 , -1.147744338 , 2.062399000 ], [ 3.686886981 , -1.147744338 , -2.062399000 ], [ 4.653325610 , 1.152471205 , -2.061864000 ]], 'positions 1.5':[[ 0.395653045 , 1.059432142 , -0.696139000 ], [ 0.395653045 , 1.059432142 , 0.696139000 ], [ -0.003263357 , 0.000227377 , 1.414480000 ], [ -0.391847355 , -1.059697307 , 0.696729000 ], [ -0.391847355 , -1.059697307 , -0.696729000 ], [ -0.003263357 , 0.000227377 , -1.414480000 ], [ 0.718983381 , 1.933370245 , -1.247280000 ], [ 0.718983381 , 1.933370245 , 1.247280000 ], [ -0.713152254 , -1.934362753 , 1.247560000 ], [ -0.713152254 , -1.934362753 , -1.247560000 ], [ 5.486196730 , 0.643131999 , 1.130045000 ], [ 4.950451765 , -0.642689433 , 1.130631000 ], [ 4.677430697 , -1.306738847 , 0.000000000 ], [ 4.950451765 , -0.642689433 , -1.130631000 ], [ 5.486196730 , 0.643131999 , -1.130045000 ], [ 5.763681669 , 1.305979850 , 0.000000000 ], [ 5.697154875 , 1.152471205 , 2.061864000 ], [ 4.730716246 , -1.147744338 , 2.062399000 ], [ 4.730716246 , -1.147744338 , -2.062399000 ], [ 5.697154875 , 1.152471205 , -2.061864000 ]], 'positions 2.0':[[ 0.395653045 , 1.059432142 , -0.696139000 ], [ 0.395653045 , 1.059432142 , 0.696139000 ], [ -0.003263357 , 0.000227377 , 1.414480000 ], [ -0.391847355 , -1.059697307 , 0.696729000 ], [ -0.391847355 , -1.059697307 , -0.696729000 ], [ -0.003263357 , 0.000227377 , -1.414480000 ], [ 0.718983381 , 1.933370245 , -1.247280000 ], [ 0.718983381 , 1.933370245 , 1.247280000 ], [ -0.713152254 , -1.934362753 , 1.247560000 ], [ -0.713152254 , -1.934362753 , -1.247560000 ], [ 7.225912172 , 0.643131999 , 1.130045000 ], [ 6.690167207 , -0.642689433 , 1.130631000 ], [ 6.417146139 , -1.306738847 , 0.000000000 ], [ 6.690167207 , -0.642689433 , -1.130631000 ], [ 7.225912172 , 0.643131999 , -1.130045000 ], [ 7.503397111 , 1.305979850 , 0.000000000 ], [ 7.436870317 , 1.152471205 , 2.061864000 ], [ 6.470431688 , -1.147744338 , 2.062399000 ], [ 6.470431688 , -1.147744338 , -2.062399000 ], [ 7.436870317 , 1.152471205 , -2.061864000 ]]}, 'Uracil_dimer_h-bonded': { 'description': "Complex, S22, S26, 2 h-bonds, double h-bond, nucleic base", 'name': "Uracil_dimer_h-bonded", 's26_number': "05", 'interaction energy CC':-0.8972, 'interaction energies s22x5':[-0.8122,-0.8872,-0.7441,-0.4536,-0.1986], 'offset': 0.0100, 'symbols': 'OCNCCCNOHHHHOCNCCCNOHHHH', 'magmoms': None, 'dimer atoms': [12,12], # Optimisation level: MP2/cc-pVTZ 'positions':[[ -1.4663316, 1.0121693, 0.0000000], [ -0.6281464, 1.9142678, 0.0000000], [ 0.7205093, 1.6882688, 0.0000000], [ 1.6367290, 2.7052764, 0.0000000], [ 1.2769036, 4.0061763, 0.0000000], [ -0.1286005, 4.3621549, 0.0000000], [ -0.9777230, 3.2396433, 0.0000000], [ -0.5972229, 5.4864066, 0.0000000], [ 2.0103504, 4.7938642, 0.0000000], [ 1.0232515, 0.7061820, 0.0000000], [ -1.9700268, 3.4323850, 0.0000000], [ 2.6690620, 2.3883417, 0.0000000], [ 1.4663316, -1.0121693, 0.0000000], [ 0.6281464, -1.9142678, 0.0000000], [ -0.7205093, -1.6882688, 0.0000000], [ -1.6367290, -2.7052764, 0.0000000], [ -1.2769036, -4.0061763, 0.0000000], [ 0.1286005, -4.3621549, 0.0000000], [ 0.9777230, -3.2396433, 0.0000000], [ 0.5972229, -5.4864066, 0.0000000], [ -2.0103504, -4.7938642, 0.0000000], [ -1.0232515, -0.7061820, 0.0000000], [ 1.9700268, -3.4323850, 0.0000000], [ -2.6690620, -2.3883417, 0.0000000]], 'positions 0.9':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.664243938 , 1.036879148 , 0.000000000 ], [ -0.108663437 , 2.286389518 , 0.000000000 ], [ -0.864691937 , 3.427521953 , 0.000000000 ], [ -2.214231597 , 3.403909532 , 0.000000000 ], [ -2.909869859 , 2.131803891 , 0.000000000 ], [ -2.034924624 , 1.029301194 , 0.000000000 ], [ -4.115521524 , 1.958733959 , 0.000000000 ], [ -2.793840332 , 4.310799346 , 0.000000000 ], [ 0.917908194 , 2.334329905 , 0.000000000 ], [ -2.469325804 , 0.116551326 , 0.000000000 ], [ -0.300037631 , 4.348024043 , 0.000000000 ], [ 2.515009084 , 2.334329905 , 0.000000000 ], [ 3.179253022 , 1.297450757 , 0.000000000 ], [ 2.623672521 , 0.047940387 , 0.000000000 ], [ 3.379701020 , -1.093192048 , 0.000000000 ], [ 4.729240680 , -1.069579627 , 0.000000000 ], [ 5.424878943 , 0.202526014 , 0.000000000 ], [ 4.549933708 , 1.305028711 , 0.000000000 ], [ 6.630530608 , 0.375595946 , 0.000000000 ], [ 5.308849416 , -1.976469441 , 0.000000000 ], [ 1.597100890 , 0.000000000 , 0.000000000 ], [ 4.984334888 , 2.217778579 , 0.000000000 ], [ 2.815046715 , -2.013694138 , 0.000000000 ]], 'positions 1.0':[[ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ -0.664243938000000 , 1.036879148000000 , 0.000000000000000 ], [ -0.108663437000000 , 2.286389518000000 , 0.000000000000000 ], [ -0.864691937000000 , 3.427521953000000 , 0.000000000000000 ], [ -2.214231597000000 , 3.403909532000000 , 0.000000000000000 ], [ -2.909869859000000 , 2.131803891000000 , 0.000000000000000 ], [ -2.034924624000000 , 1.029301194000000 , 0.000000000000000 ], [ -4.115521524000000 , 1.958733959000000 , 0.000000000000000 ], [ -2.793840332000000 , 4.310799346000000 , 0.000000000000000 ], [ 0.917908194000000 , 2.334329905000000 , 0.000000000000000 ], [ -2.469325804000000 , 0.116551326000000 , 0.000000000000000 ], [ -0.300037631000000 , 4.348024043000000 , 0.000000000000000 ], [ 2.692464738545454 , 2.334329905000000 , 0.000000000000000 ], [ 3.356708676545455 , 1.297450757000000 , 0.000000000000000 ], [ 2.801128175545454 , 0.047940387000000 , 0.000000000000000 ], [ 3.557156674545455 , -1.093192048000000 , 0.000000000000000 ], [ 4.906696334545455 , -1.069579627000000 , 0.000000000000000 ], [ 5.602334597545455 , 0.202526014000000 , 0.000000000000000 ], [ 4.727389362545455 , 1.305028711000000 , 0.000000000000000 ], [ 6.807986262545454 , 0.375595946000000 , 0.000000000000000 ], [ 5.486305070545455 , -1.976469441000000 , 0.000000000000000 ], [ 1.774556544545455 , 0.000000000000000 , 0.000000000000000 ], [ 5.161790542545455 , 2.217778579000000 , 0.000000000000000 ], [ 2.992502369545454 , -2.013694138000000 , 0.000000000000000 ]], 'positions 1.2':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.664243938 , 1.036879148 , 0.000000000 ], [ -0.108663437 , 2.286389518 , 0.000000000 ], [ -0.864691937 , 3.427521953 , 0.000000000 ], [ -2.214231597 , 3.403909532 , 0.000000000 ], [ -2.909869859 , 2.131803891 , 0.000000000 ], [ -2.034924624 , 1.029301194 , 0.000000000 ], [ -4.115521524 , 1.958733959 , 0.000000000 ], [ -2.793840332 , 4.310799346 , 0.000000000 ], [ 0.917908194 , 2.334329905 , 0.000000000 ], [ -2.469325804 , 0.116551326 , 0.000000000 ], [ -0.300037631 , 4.348024043 , 0.000000000 ], [ 3.047376048 , 2.334329905 , 0.000000000 ], [ 3.711619986 , 1.297450757 , 0.000000000 ], [ 3.156039485 , 0.047940387 , 0.000000000 ], [ 3.912067984 , -1.093192048 , 0.000000000 ], [ 5.261607644 , -1.069579627 , 0.000000000 ], [ 5.957245907 , 0.202526014 , 0.000000000 ], [ 5.082300672 , 1.305028711 , 0.000000000 ], [ 7.162897572 , 0.375595946 , 0.000000000 ], [ 5.841216380 , -1.976469441 , 0.000000000 ], [ 2.129467854 , 0.000000000 , 0.000000000 ], [ 5.516701852 , 2.217778579 , 0.000000000 ], [ 3.347413679 , -2.013694138 , 0.000000000 ]], 'positions 1.5':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.664243938 , 1.036879148 , 0.000000000 ], [ -0.108663437 , 2.286389518 , 0.000000000 ], [ -0.864691937 , 3.427521953 , 0.000000000 ], [ -2.214231597 , 3.403909532 , 0.000000000 ], [ -2.909869859 , 2.131803891 , 0.000000000 ], [ -2.034924624 , 1.029301194 , 0.000000000 ], [ -4.115521524 , 1.958733959 , 0.000000000 ], [ -2.793840332 , 4.310799346 , 0.000000000 ], [ 0.917908194 , 2.334329905 , 0.000000000 ], [ -2.469325804 , 0.116551326 , 0.000000000 ], [ -0.300037631 , 4.348024043 , 0.000000000 ], [ 3.579743012 , 2.334329905 , 0.000000000 ], [ 4.243986950 , 1.297450757 , 0.000000000 ], [ 3.688406449 , 0.047940387 , 0.000000000 ], [ 4.444434948 , -1.093192048 , 0.000000000 ], [ 5.793974608 , -1.069579627 , 0.000000000 ], [ 6.489612871 , 0.202526014 , 0.000000000 ], [ 5.614667636 , 1.305028711 , 0.000000000 ], [ 7.695264536 , 0.375595946 , 0.000000000 ], [ 6.373583344 , -1.976469441 , 0.000000000 ], [ 2.661834818 , 0.000000000 , 0.000000000 ], [ 6.049068816 , 2.217778579 , 0.000000000 ], [ 3.879780643 , -2.013694138 , 0.000000000 ]], 'positions 2.0':[[ 0.000000000 , 0.000000000 , 0.000000000 ], [ -0.664243938 , 1.036879148 , 0.000000000 ], [ -0.108663437 , 2.286389518 , 0.000000000 ], [ -0.864691937 , 3.427521953 , 0.000000000 ], [ -2.214231597 , 3.403909532 , 0.000000000 ], [ -2.909869859 , 2.131803891 , 0.000000000 ], [ -2.034924624 , 1.029301194 , 0.000000000 ], [ -4.115521524 , 1.958733959 , 0.000000000 ], [ -2.793840332 , 4.310799346 , 0.000000000 ], [ 0.917908194 , 2.334329905 , 0.000000000 ], [ -2.469325804 , 0.116551326 , 0.000000000 ], [ -0.300037631 , 4.348024043 , 0.000000000 ], [ 4.467021284 , 2.334329905 , 0.000000000 ], [ 5.131265222 , 1.297450757 , 0.000000000 ], [ 4.575684721 , 0.047940387 , 0.000000000 ], [ 5.331713220 , -1.093192048 , 0.000000000 ], [ 6.681252880 , -1.069579627 , 0.000000000 ], [ 7.376891143 , 0.202526014 , 0.000000000 ], [ 6.501945908 , 1.305028711 , 0.000000000 ], [ 8.582542808 , 0.375595946 , 0.000000000 ], [ 7.260861616 , -1.976469441 , 0.000000000 ], [ 3.549113090 , 0.000000000 , 0.000000000 ], [ 6.936347088 , 2.217778579 , 0.000000000 ], [ 4.767058915 , -2.013694138 , 0.000000000 ]]}, 'Uracil_dimer_stack': { 'description': "Complex, S22, S26, stack, dispersion bonded, nucleic base", 'name': "Uracil_dimer_stack", 's26_number': "13", 'interaction energy CC':-0.4224, 'interaction energies s22x5':[-0.2931,-0.4280,-0.2715,-0.1049,-0.0299], 'offset': -0.0056, 'symbols': 'NCHCHCONHCOHNCHCHCONHCOH', 'magmoms': None, 'dimer atoms': [12,12], # Optimisation level: MP2/cc-pVTZ 'positions':[[ 2.0113587, -1.2132073, -0.0980673], [ 2.0257076, -0.6971797, -1.3644029], [ 2.2975208, -1.3910592, -2.1456459], [ 1.7145226, 0.5919651, -1.6124892], [ 1.7272873, 0.9908466, -2.6120050], [ 1.3089605, 1.4575340, -0.5205890], [ 0.9205926, 2.6110864, -0.6260457], [ 1.3768885, 0.8397454, 0.7346356], [ 1.0518040, 1.3862229, 1.5233710], [ 1.6459909, -0.4852113, 1.0187267], [ 1.5611090, -0.9718061, 2.1298059], [ 2.1294635, -2.2015046, 0.0568134], [ -2.0113587, 1.2132073, -0.0980673], [ -2.0257076, 0.6971797, -1.3644029], [ -2.2975208, 1.3910592, -2.1456459], [ -1.7145226, -0.5919651, -1.6124892], [ -1.7272873, -0.9908466, -2.6120050], [ -1.3089605, -1.4575340, -0.5205890], [ -0.9205926, -2.6110864, -0.6260457], [ -1.3768885, -0.8397454, 0.7346356], [ -1.0518040, -1.3862229, 1.5233710], [ -1.6459909, 0.4852113, 1.0187267], [ -1.5611090, 0.9718061, 2.1298059], [ -2.1294635, 2.2015046, 0.0568134]], 'positions 0.9':[[ -0.277905006 , 1.293679543 , 0.176141970 ], [ -0.313143400 , 0.778657200 , -1.090194030 ], [ -0.556628453 , 1.482976305 , -1.871437030 ], [ -0.054429325 , -0.522034140 , -1.338280030 ], [ -0.083339176 , -0.920071815 , -2.337796030 ], [ 0.315741834 , -1.403319766 , -0.246380030 ], [ 0.657066634 , -2.571655559 , -0.351837030 ], [ 0.272892517 , -0.783286382 , 1.008844970 ], [ 0.575575188 , -1.342483138 , 1.797579970 ], [ 0.057676398 , 0.551482081 , 1.292935970 ], [ 0.162197796 , 1.034239706 , 2.404014970 ], [ -0.355882042 , 2.285950208 , 0.331021970 ], [ 3.306699593 , -1.293679543 , 0.176141970 ], [ 3.341937987 , -0.778657200 , -1.090194030 ], [ 3.585423040 , -1.482976305 , -1.871437030 ], [ 3.083223911 , 0.522034140 , -1.338280030 ], [ 3.112133763 , 0.920071815 , -2.337796030 ], [ 2.713052753 , 1.403319766 , -0.246380030 ], [ 2.371727953 , 2.571655559 , -0.351837030 ], [ 2.755902070 , 0.783286382 , 1.008844970 ], [ 2.453219399 , 1.342483138 , 1.797579970 ], [ 2.971118189 , -0.551482081 , 1.292935970 ], [ 2.866596791 , -1.034239706 , 2.404014970 ], [ 3.384676629 , -2.285950208 , 0.331021970 ]], 'positions 1.0':[[ -0.277905006000000 , 1.293679543000000 , 0.176141970000000 ], [ -0.313143400000000 , 0.778657200000000 , -1.090194030000000 ], [ -0.556628453000000 , 1.482976305000000 , -1.871437030000000 ], [ -0.054429325000000 , -0.522034140000000 , -1.338280030000000 ], [ -0.083339176000000 , -0.920071815000000 , -2.337796030000000 ], [ 0.315741834000000 , -1.403319766000000 , -0.246380030000000 ], [ 0.657066634000000 , -2.571655559000000 , -0.351837030000000 ], [ 0.272892517000000 , -0.783286382000000 , 1.008844970000000 ], [ 0.575575188000000 , -1.342483138000000 , 1.797579970000000 ], [ 0.057676398000000 , 0.551482081000000 , 1.292935970000000 ], [ 0.162197796000000 , 1.034239706000000 , 2.404014970000000 ], [ -0.355882042000000 , 2.285950208000000 , 0.331021970000000 ], [ 3.643232324909091 , -1.293679543000000 , 0.176141970000000 ], [ 3.678470718909091 , -0.778657200000000 , -1.090194030000000 ], [ 3.921955771909091 , -1.482976305000000 , -1.871437030000000 ], [ 3.419756642909091 , 0.522034140000000 , -1.338280030000000 ], [ 3.448666494909091 , 0.920071815000000 , -2.337796030000000 ], [ 3.049585484909091 , 1.403319766000000 , -0.246380030000000 ], [ 2.708260684909091 , 2.571655559000000 , -0.351837030000000 ], [ 3.092434801909091 , 0.783286382000000 , 1.008844970000000 ], [ 2.789752130909091 , 1.342483138000000 , 1.797579970000000 ], [ 3.307650920909091 , -0.551482081000000 , 1.292935970000000 ], [ 3.203129522909091 , -1.034239706000000 , 2.404014970000000 ], [ 3.721209360909091 , -2.285950208000000 , 0.331021970000000 ]], 'positions 1.2':[[ -0.277905006 , 1.293679543 , 0.176141970 ], [ -0.313143400 , 0.778657200 , -1.090194030 ], [ -0.556628453 , 1.482976305 , -1.871437030 ], [ -0.054429325 , -0.522034140 , -1.338280030 ], [ -0.083339176 , -0.920071815 , -2.337796030 ], [ 0.315741834 , -1.403319766 , -0.246380030 ], [ 0.657066634 , -2.571655559 , -0.351837030 ], [ 0.272892517 , -0.783286382 , 1.008844970 ], [ 0.575575188 , -1.342483138 , 1.797579970 ], [ 0.057676398 , 0.551482081 , 1.292935970 ], [ 0.162197796 , 1.034239706 , 2.404014970 ], [ -0.355882042 , 2.285950208 , 0.331021970 ], [ 4.316297789 , -1.293679543 , 0.176141970 ], [ 4.351536183 , -0.778657200 , -1.090194030 ], [ 4.595021236 , -1.482976305 , -1.871437030 ], [ 4.092822107 , 0.522034140 , -1.338280030 ], [ 4.121731959 , 0.920071815 , -2.337796030 ], [ 3.722650949 , 1.403319766 , -0.246380030 ], [ 3.381326149 , 2.571655559 , -0.351837030 ], [ 3.765500266 , 0.783286382 , 1.008844970 ], [ 3.462817595 , 1.342483138 , 1.797579970 ], [ 3.980716385 , -0.551482081 , 1.292935970 ], [ 3.876194987 , -1.034239706 , 2.404014970 ], [ 4.394274825 , -2.285950208 , 0.331021970 ]], 'positions 1.5':[[ -0.277905006 , 1.293679543 , 0.176141970 ], [ -0.313143400 , 0.778657200 , -1.090194030 ], [ -0.556628453 , 1.482976305 , -1.871437030 ], [ -0.054429325 , -0.522034140 , -1.338280030 ], [ -0.083339176 , -0.920071815 , -2.337796030 ], [ 0.315741834 , -1.403319766 , -0.246380030 ], [ 0.657066634 , -2.571655559 , -0.351837030 ], [ 0.272892517 , -0.783286382 , 1.008844970 ], [ 0.575575188 , -1.342483138 , 1.797579970 ], [ 0.057676398 , 0.551482081 , 1.292935970 ], [ 0.162197796 , 1.034239706 , 2.404014970 ], [ -0.355882042 , 2.285950208 , 0.331021970 ], [ 5.325895984 , -1.293679543 , 0.176141970 ], [ 5.361134378 , -0.778657200 , -1.090194030 ], [ 5.604619431 , -1.482976305 , -1.871437030 ], [ 5.102420302 , 0.522034140 , -1.338280030 ], [ 5.131330154 , 0.920071815 , -2.337796030 ], [ 4.732249144 , 1.403319766 , -0.246380030 ], [ 4.390924344 , 2.571655559 , -0.351837030 ], [ 4.775098461 , 0.783286382 , 1.008844970 ], [ 4.472415790 , 1.342483138 , 1.797579970 ], [ 4.990314580 , -0.551482081 , 1.292935970 ], [ 4.885793182 , -1.034239706 , 2.404014970 ], [ 5.403873020 , -2.285950208 , 0.331021970 ]], 'positions 2.0':[[ -0.277905006 , 1.293679543 , 0.176141970 ], [ -0.313143400 , 0.778657200 , -1.090194030 ], [ -0.556628453 , 1.482976305 , -1.871437030 ], [ -0.054429325 , -0.522034140 , -1.338280030 ], [ -0.083339176 , -0.920071815 , -2.337796030 ], [ 0.315741834 , -1.403319766 , -0.246380030 ], [ 0.657066634 , -2.571655559 , -0.351837030 ], [ 0.272892517 , -0.783286382 , 1.008844970 ], [ 0.575575188 , -1.342483138 , 1.797579970 ], [ 0.057676398 , 0.551482081 , 1.292935970 ], [ 0.162197796 , 1.034239706 , 2.404014970 ], [ -0.355882042 , 2.285950208 , 0.331021970 ], [ 7.008559644 , -1.293679543 , 0.176141970 ], [ 7.043798038 , -0.778657200 , -1.090194030 ], [ 7.287283091 , -1.482976305 , -1.871437030 ], [ 6.785083962 , 0.522034140 , -1.338280030 ], [ 6.813993814 , 0.920071815 , -2.337796030 ], [ 6.414912804 , 1.403319766 , -0.246380030 ], [ 6.073588004 , 2.571655559 , -0.351837030 ], [ 6.457762121 , 0.783286382 , 1.008844970 ], [ 6.155079450 , 1.342483138 , 1.797579970 ], [ 6.672978240 , -0.551482081 , 1.292935970 ], [ 6.568456842 , -1.034239706 , 2.404014970 ], [ 7.086536680 , -2.285950208 , 0.331021970 ]]}, 'Water_dimer': { 'description': "Complex, S22, S26, 1 h-bond, OH-O", 'name': "Water_dimer", 's26_number': "02", 'interaction energy CC':-0.2177, 'interaction energies s22x5':[-0.1873,-0.2155,-0.1752,-0.0993,-0.0416], 'offset': 0.0022, 'symbols': 'OHHOHH', 'magmoms': None, 'dimer atoms': [3,3], # Optimisation level: CCSD(T)/cc-pVQZ 'positions':[[ -1.551007, -0.114520, 0.000000], [ -1.934259, 0.762503, 0.000000], [ -0.599677, 0.040712, 0.000000], [ 1.350625, 0.111469, 0.000000], [ 1.680398, -0.373741, -0.758561], [ 1.680398, -0.373741, 0.758561]], 'positions 0.9':[[ -0.956332646 , -0.120638358 , 0.000000000 ], [ -1.307535174 , 0.769703274 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 1.756426600 , 0.000000000 , 0.000000000 ], [ 2.068390928 , -0.496847294 , -0.758561000 ], [ 2.068390928 , -0.496847294 , 0.758561000 ]], 'positions 1.0':[[ -0.956332646000000 , -0.120638358000000 , 0.000000000000000 ], [ -1.307535174000000 , 0.769703274000000 , 0.000000000000000 ], [ 0.000000000000000 , 0.000000000000000 , 0.000000000000000 ], [ 1.951585111090909 , 0.000000000000000 , 0.000000000000000 ], [ 2.263549439090909 , -0.496847294000000 , -0.758561000000000 ], [ 2.263549439090909 , -0.496847294000000 , 0.758561000000000 ]], 'positions 1.2':[[ -0.956332646 , -0.120638358 , 0.000000000 ], [ -1.307535174 , 0.769703274 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.341902133 , 0.000000000 , 0.000000000 ], [ 2.653866461 , -0.496847294 , -0.758561000 ], [ 2.653866461 , -0.496847294 , 0.758561000 ]], 'positions 1.5':[[ -0.956332646 , -0.120638358 , 0.000000000 ], [ -1.307535174 , 0.769703274 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 2.927377666 , 0.000000000 , 0.000000000 ], [ 3.239341994 , -0.496847294 , -0.758561000 ], [ 3.239341994 , -0.496847294 , 0.758561000 ]], 'positions 2.0':[[ -0.956332646 , -0.120638358 , 0.000000000 ], [ -1.307535174 , 0.769703274 , 0.000000000 ], [ 0.000000000 , 0.000000000 , 0.000000000 ], [ 3.903170222 , 0.000000000 , 0.000000000 ], [ 4.215134550 , -0.496847294 , -0.758561000 ], [ 4.215134550 , -0.496847294 , 0.758561000 ]]}, # --- s26 ---# 'Methanol_dimer': { 'description': "1 h-bond, OH-O, S26", 'name': "Methanol_dimer", 's26_number': "23", 'interaction energy MP2':-0.1947, 'interaction energy CC':-0.2472, 'symbols': 'COHHHHCOHHHH', 'magmoms': None, # Optimisation level: MP2/cc-pVTZ 'positions':[[ -2.114335, -0.445120, 0.221169], [ -1.298032, 0.687432, -0.091609], [ -1.514720, -1.087407, 0.858397], [ -2.389026, -0.999598, -0.675819], [ -3.014036, -0.146131, 0.758353], [ -1.779011, 1.249219, -0.706289], [ 2.245711, 0.159561, 0.329180], [ 1.285289, -0.472004, -0.501635], [ 3.156806, -0.431037, 0.275178], [ 1.921474, 0.200114, 1.371809], [ 2.472512, 1.174527, -0.005695], [ 0.459691, 0.030236, -0.432082]]}, 'Methanol-formaldehyde_complex': { 'description': "1 h-bond, OH-O, S26", 's26_number': "24", 'name': "Methanol-formaldehyde_complex", 'interaction energy MP2':-0.1375, 'interaction energy CC':-0.2303, 'symbols': 'COHHHHCOHH', 'magmoms': None, # Optimisation level: MP2/cc-pVTZ 'positions':[[ 1.4073776162, 1.0401758064, 2.0396751091], [ 0.9349167370, 0.2900025037, 0.9338944612], [ 2.1022348002, 0.4092302046, 2.5857336738], [ 0.6031517696, 1.3305232490, 2.7201012084], [ 1.9382206717, 1.9424443037, 1.7274684180], [ 0.2386426835, 0.8096239461, 0.5150020113], [ -2.0809868810, -0.1309834084, 0.2601720974], [ -1.6206107677, 0.9480216819, -0.1003790153], [ -3.1316901290, -0.3840062180, 0.0820343467], [ -1.4275985002, -0.8637260692, 0.7543476894]]}, 'Methyl_amide_dimer_alpha': { 'description': "1 h-bond, NH-O, S26", 's26_number': "25", 'name': "Methyl_amide_dimer_alpha", 'interaction energy MP2':-0.2068, 'interaction energy CC':-0.2901, 'symbols': 'CCOHHHNHHCCOHHHNHH', 'magmoms': None, # Optimisation level: DFT TPSS/TZVP (hydrogen positions optimized) 'positions':[[ 5.575000, 7.306000, -12.014000], [ 4.318000, 8.065000, -12.345000], [ 4.212000, 9.236000, -11.986000], [ 6.072000, 7.809000, -11.186000], [ 6.246000, 7.323000, -12.882000], [ 5.392000, 6.256000, -11.755000], [ 3.378000, 7.446000, -13.058000], [ 3.468000, 6.488000, -13.367000], [ 2.561000, 7.968000, -13.350000], [ 0.768000, 8.395000, -9.9890000], [ 1.666000, 9.133000, -8.9870000], [ 1.355000, 9.267000, -7.8060000], [ -0.014000, 9.085000, -10.326000], [ 0.289000, 7.561000, -9.4730000], [ 1.315000, 8.032000, -10.865000], [ 2.798000, 9.666000, -9.4430000], [ 3.139000, 9.599000, -10.401000], [ 3.350000, 10.195000, -8.779000]]}, 'Methyl_amide_dimer_beta': { 'description': "1 h-bond, NH-O, S26", 'name': "Methyl_amide_dimer_beta", 's26_number': "26", 'interaction energy MP2':-0.2342, 'interaction energy CC':-0.3317, 'symbols': 'CCOHHHNHHCCOHHHNHH', 'magmoms': None, # Optimisation level: DFT TPSS/TZVP (hydrogen positions optimized) 'positions':[[ 0.300000, -7.945000, -4.8440000], [ -1.133000, -7.581000, -4.4840000], [ -1.612000, -7.787000, -3.3770000], [ 0.650000, -7.434000, -5.7440000], [ 0.351000, -9.028000, -5.0100000], [ 0.952000, -7.712000, -3.9990000], [ -1.811000, -7.075000, -5.4730000], [ -2.781000, -6.832000, -5.3080000], [ -1.403000, -6.863000, -6.3820000], [ -0.931000, -6.425000, -10.105000], [ 0.041000, -6.447000, -8.9820000], [ -0.356000, -6.488000, -7.8210000], [ -0.492000, -6.635000, -11.086000], [ -1.398000, -5.434000, -10.143000], [ -1.724000, -7.150000, -9.9060000], [ 1.318000, -6.364000, -9.3020000], [ 1.636000, -6.336000, -10.260000], [ 2.015000, -6.339000, -8.5670000]]}, } def create_s22_system(name, dist=None, **kwargs): """Create S22/S26/s22x5 system. """ s22_,s22x5_,s22_name,dist = identify_s22_sys(name,dist) if s22_ is True: d = data[s22_name] return Atoms(d['symbols'], d['positions'], **kwargs) elif s22x5_ is True: d = data[s22_name] pos = 'positions '+dist return Atoms(d['symbols'], d[pos], **kwargs) else: raise NotImplementedError('s22/s26/s22x5 creation failed') def identify_s22_sys(name,dist=None): s22_ = False s22x5_ = False if (name in s22 or name in s26) and dist == None: s22_name = name s22_ = True elif name in s22x5 and dist == None: s22_name, dist = get_s22x5_id(name) s22x5_ = True elif name in s22 and dist != None: dist_ = str(dist) if dist_ not in ['0.9','1.0','1.2','1.5','2.0']: raise KeyError('Bad s22x5 distance specified: %s' % dist_) else: s22_name = name dist = dist_ s22x5_ = True if s22_ is False and s22x5_ is False: raise KeyError('s22 combination %s %s not in database' %(name,str(dist))) return s22_, s22x5_, s22_name, dist def get_s22x5_id(name): """Get main name and relative separation distance of an S22x5 system. """ s22_name = name[:-4] dist = name[-3:] return s22_name, dist def get_s22_number(name,dist=None): """Returns the S22/S26 database number of a system as a string. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) return data[s22_name]['s26_number'] def get_interaction_energy_cc(name,dist=None): """Returns the S22/S26 CCSD(T)/CBS CP interaction energy in eV. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) return data[s22_name]['interaction energy CC'] def get_interaction_energy_s22(name,dist=None): """Returns the S22/S26 CCSD(T)/CBS CP interaction energy in eV. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) e = get_interaction_energy_cc(s22_name) return e def get_interaction_energy_s22x5(name, dist=None, correct_offset=True): """Returns the S22x5 CCSD(T)/CBS CP interaction energy in eV. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) if dist_ == '0.9': i = 0 elif dist_ == '1.0': i = 1 elif dist_ == '1.2': i = 2 elif dist_ == '1.5': i = 3 elif dist_ == '2.0': i = 4 else: raise KeyError('error, mate!') e = data[s22_name]['interaction energies s22x5'][i] if correct_offset == True: e *= data[s22_name]['interaction energy CC']/data[s22_name]['interaction energies s22x5'][1] return e def get_name(name,dist=None): """Returns the database name of an s22 system """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) if s22x5_ is True: raise KeyError('System may not be in s22x5') return data[name]['name'] def get_number_of_dimer_atoms(name,dist=None): """Returns the number of atoms in each s22 dimer as a list; [x,y]. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) return data[s22_name]['dimer atoms'] def get_s22x5_distance(name, dist=None): """Returns the relative intermolecular distance in angstroms. Values are in Angstrom and are relative to the original s22 distance. """ s22_,s22x5_,s22_name,dist_ = identify_s22_sys(name,dist) if s22_ is True: raise KeyError('System must be in s22x5') else: x00 = data[s22_name]['positions 1.0'][0][0] x01 = data[s22_name]['positions 1.0'][-1][0] x10 = data[s22_name]['positions '+dist_][0][0] x11 = data[s22_name]['positions '+dist_][-1][0] d0 = x01 - x00 d1 = x11 - x10 return d1-d0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmfp06d.py000066400000000000000000000506011316323560300233040ustar00rootroot00000000000000# Generated: 2011-12-19 # doi:10.1063/1.2162161, experimental geometries if available, dimers only from numpy import array, nan data = { 'H': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0], 'name': 'H', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'H'}, 'N': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.0], 'name': 'N', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'N'}, 'O': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.0], 'name': 'O', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'O'}, 'F': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0], 'name': 'F', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'F'}, # 'K': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0], 'name': 'K', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'K'}, 'Ca': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0], 'name': 'Ca', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ca'}, 'Sc': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0], 'name': 'Sc', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Sc'}, 'Ti': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.0], 'name': 'Ti', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ti'}, 'V': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.0], 'name': 'V', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'V'}, 'Cr': {'charges': None, 'database': 'TMFP06D', 'magmoms': [6.0], 'name': 'Cr', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cr'}, 'Mn': {'charges': None, 'database': 'TMFP06D', 'magmoms': [5.0], 'name': 'Mn', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Mn'}, 'Fe': {'charges': None, 'database': 'TMFP06D', 'magmoms': [4.0], 'name': 'Fe', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Fe'}, 'Co': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.0], 'name': 'Co', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Co'}, 'Ni': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.0], 'name': 'Ni', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ni'}, 'Cu': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0], 'name': 'Cu', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cu'}, 'Zn': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0], 'name': 'Zn', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Zn'}, # 'K2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'K2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 3.905], ]), 'dissociation energy': 12.0, 'harmonic frequency': 92, 'symbols': 'KK'}, 'Ca2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'Ca2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 4.277], ]), 'dissociation energy': 3.1, 'harmonic frequency': 65, 'symbols': 'CaCa'}, 'Sc2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.0, 2.0], 'name': 'Sc2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.74], # from 10.1063/1.480546 (MRSDQCI) ]), 'dissociation energy': 38.4, 'harmonic frequency': 239, 'symbols': 'ScSc'}, 'Ti2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0, 1.0], 'name': 'Ti2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.943], ]), 'dissociation energy': 36.1, 'harmonic frequency': 408, 'symbols': 'TiTi'}, 'V2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0, 1.0], 'name': 'V2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.77], # ref. a ]), 'dissociation energy': 64.3, 'harmonic frequency': 538, 'symbols': 'VV'}, 'Cr2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'Cr2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.679], ]), 'dissociation energy': 33.9, 'harmonic frequency': 481, 'symbols': 'CrCr'}, 'Mn2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [5.0, 5.0], 'name': 'Mn2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 3.40], ]), 'dissociation energy': 18.8, 'harmonic frequency': 340, 'symbols': 'MnMn'}, 'Fe2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.0, 3.0], 'name': 'Fe2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.02], ]), 'dissociation energy': 26.9, 'harmonic frequency': 300, 'symbols': 'FeFe'}, # exp. geometry not given in ref. 'Co2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.0, 2.0], 'name': 'Co2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.98], # calculated doi:10.1063/1.1788656 ]), 'dissociation energy': 39.4, 'harmonic frequency': 297, 'symbols': 'CoCo'}, 'Ni2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0, 1.0], 'name': 'Ni2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.155], ]), 'dissociation energy': 48.1, 'harmonic frequency': 259, 'symbols': 'NiNi'}, 'Cu2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'Cu2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.219], ]), 'dissociation energy': 46.7, 'harmonic frequency': 266, 'symbols': 'CuCu'}, 'Zn2': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'Zn2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.35], # ref. j ]), 'dissociation energy': 0.80, 'harmonic frequency': 25.9, 'symbols': 'ZnZn'}, # 'KH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'KH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.243], ]), 'dissociation energy': 42.2, 'harmonic frequency': 707, 'symbols': 'KH'}, 'CaH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.7, 0.3], 'name': 'CaH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.003], ]), 'dissociation energy': 41.0, 'harmonic frequency': 1298, 'symbols': 'CaH'}, # exp. geometry not given in ref. 'ScH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'ScH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.775], # doi: 10.1063/1.3489110 ]), 'dissociation energy': 47.5, 'harmonic frequency': nan, 'symbols': 'ScH'}, 'TiH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.9, 0.1], 'name': 'TiH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.779], ]), 'dissociation energy': 50.0, 'harmonic frequency': 1405, 'symbols': 'TiH'}, 'CrH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [4.9, 0.1], 'name': 'CrH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.656], ]), 'dissociation energy': 46.8, 'harmonic frequency': 1581, 'symbols': 'CrH'}, 'MnH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [5.9, 0.1], 'name': 'MnH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.731], ]), 'dissociation energy': 31.1, 'harmonic frequency': 1548, 'symbols': 'MnH'}, 'FeH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.9, 0.1], 'name': 'FeH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.589], ]), 'dissociation energy': 39.2, 'harmonic frequency': 1827, 'symbols': 'FeH'}, 'CoH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.9, 0.1], 'name': 'CoH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.52], ]), 'dissociation energy': 48.4, 'harmonic frequency': 1925, 'symbols': 'CoH'}, 'NiH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.9, 0.1], 'name': 'NiH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.475], ]), 'dissociation energy': 61.3, 'harmonic frequency': 1927, 'symbols': 'NiH'}, 'CuH': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'CuH', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.463], ]), 'dissociation energy': 63.4, 'harmonic frequency': 1941, 'symbols': 'CuH'}, # 'ScN': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'ScN', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.687], ]), 'dissociation energy': 113, 'harmonic frequency': 795, 'symbols': 'ScN'}, 'TiN': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.9, 0.1], 'name': 'TiN', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.57], ]), 'dissociation energy': 124, 'harmonic frequency': 1033, 'symbols': 'TiN'}, 'VN': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.9, 0.1], 'name': 'VN', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.57], ]), 'dissociation energy': 117, 'harmonic frequency': 1033, 'symbols': 'VN'}, 'CrN': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.9, 0.1], 'name': 'CrN', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.563], ]), 'dissociation energy': 97, 'harmonic frequency': 1050, 'symbols': 'CrN'}, # 'CaO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'CaO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.822], ]), 'dissociation energy': 110.8, 'harmonic frequency': 732, 'symbols': 'CaO'}, 'ScO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.9, 0.1], 'name': 'ScO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.668], ]), 'dissociation energy': 163.0, 'harmonic frequency': 965, 'symbols': 'ScO'}, 'TiO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.9, 0.1], 'name': 'TiO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.620], ]), 'dissociation energy': 161.0, 'harmonic frequency': 1009, 'symbols': 'TiO'}, 'VO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.9, 0.1], 'name': 'VO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.589], ]), 'dissociation energy': 150.0, 'harmonic frequency': 1011, 'symbols': 'VO'}, 'CrO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.9, 0.1], 'name': 'CrO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.615], ]), 'dissociation energy': 103.0, 'harmonic frequency': 898, 'symbols': 'CrO'}, 'MnO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [4.9, 0.1], 'name': 'MnO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.646], ]), 'dissociation energy': 89.5, 'harmonic frequency': 840, 'symbols': 'MnO'}, 'FeO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [3.9, 0.1], 'name': 'FeO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.616], ]), 'dissociation energy': 97.4, 'harmonic frequency': 880, 'symbols': 'FeO'}, 'CoO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.5, 0.5], 'name': 'CoO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.629], ]), 'dissociation energy': 92.1, 'harmonic frequency': 853, 'symbols': 'CoO'}, 'NiO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [1.0, 1.0], 'name': 'NiO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.627], ]), 'dissociation energy': 90.4, 'harmonic frequency': 838, 'symbols': 'NiO'}, 'CuO': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.5, 0.5], 'name': 'CuO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.724], ]), 'dissociation energy': 66.6, 'harmonic frequency': 640, 'symbols': 'CuO'}, # ZnO not in ref. Taken for completeness from doi: 10.1063/1.3489110 'ZnO': {'charges': None, 'database': 'TMKM11', 'magmoms': [0.0, 0.0], 'name': 'ZnO', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.724], ]), 'dissociation energy': nan, 'harmonic frequency': nan, 'symbols': 'ZnO'}, # 'KF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'KF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.171], ]), 'dissociation energy': 117.5, 'harmonic frequency': 428, 'symbols': 'KF'}, 'CaF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.9, 0.1], 'name': 'CaF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.967], ]), 'dissociation energy': 127.2, 'harmonic frequency': 581, 'symbols': 'CaF'}, 'ScF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'ScF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.788], ]), 'dissociation energy': 143.3, 'harmonic frequency': 736, 'symbols': 'ScF'}, 'TiF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [2.9, 0.1], 'name': 'TiF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.834], ]), 'dissociation energy': 137, 'harmonic frequency': nan, 'symbols': 'TiF'}, 'CrF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [4.9, 0.1], 'name': 'CrF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.784], ]), 'dissociation energy': 106.3, 'harmonic frequency': 664, 'symbols': 'CrF'}, 'FeF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [4.9, 0.1], 'name': 'FeF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.780], ]), 'dissociation energy': nan, 'harmonic frequency': 663, 'symbols': 'FeF'}, 'CuF': {'charges': None, 'database': 'TMFP06D', 'magmoms': [0.0, 0.0], 'name': 'CuF', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.745], ]), 'dissociation energy': 102.8, 'harmonic frequency': 623, 'symbols': 'CuF'}, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmgmjbp04n.py000066400000000000000000000464531316323560300240200ustar00rootroot00000000000000# Generated: 2012-01-11 # doi:10.1063/1.1788656 neutral dimers only from numpy import array data = { 'Sc': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0], 'name': 'Sc', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Sc'}, 'Ti': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.0], 'name': 'Ti', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ti'}, 'V': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.0], 'name': 'V', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'V'}, 'Cr': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [6.0], 'name': 'Cr', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cr'}, 'Mn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [5.0], 'name': 'Mn', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Mn'}, 'Fe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.0], 'name': 'Fe', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Fe'}, 'Co': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.0], 'name': 'Co', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Co'}, 'Ni': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.0], 'name': 'Ni', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ni'}, 'Cu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0], 'name': 'Cu', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cu'}, 'Zn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0], 'name': 'Zn', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Zn'}, # 'Sc2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.0, 2.0], 'name': 'Sc2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.63], ]), 'symbols': 'ScSc'}, 'ScTi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.5, 3.5], 'name': 'ScTi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.29], ]), 'symbols': 'ScTi'}, 'ScV': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0, 5.0], 'name': 'ScV', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.51], ]), 'symbols': 'ScV'}, 'ScCr': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 2.9], 'name': 'ScCr', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.99], ]), 'symbols': 'ScCr'}, 'ScMn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 1.9], 'name': 'ScMn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.94], ]), 'symbols': 'ScMn'}, 'ScFe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 0.9], 'name': 'ScFe', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.85], ]), 'symbols': 'ScFe'}, 'ScCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'ScCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.80], ]), 'symbols': 'ScCo'}, 'ScNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.5, 0.5], 'name': 'ScNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.05], ]), 'symbols': 'ScNi'}, 'ScCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.9, 0.1], 'name': 'ScCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.54], ]), 'symbols': 'ScCu'}, 'ScZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'ScZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.71], ]), 'symbols': 'ScZn'}, # 'Ti2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0, 1.0], 'name': 'Ti2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.89], ]), 'symbols': 'TiTi'}, 'TiV': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0, 2.0], 'name': 'TiV', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.78], ]), 'symbols': 'TiV'}, 'TiCr': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 1.9], 'name': 'TiCr', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.79], ]), 'symbols': 'TiCr'}, 'TiMn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 0.9], 'name': 'TiMn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.76], ]), 'symbols': 'TiMn'}, 'TiFe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'TiFe', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.67], ]), 'symbols': 'TiFe'}, 'TiCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.9, 0.1], 'name': 'TiCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.88], ]), 'symbols': 'TiCo'}, 'TiNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.9, 0.1], 'name': 'TiNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.06], ]), 'symbols': 'TiNi'}, 'TiCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'TiCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.45], ]), 'symbols': 'TiCu'}, 'TiZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.9, 0.1], 'name': 'TiZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.74], ]), 'symbols': 'TiZn'}, # 'V2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0, 1.0], 'name': 'V2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.74], ]), 'symbols': 'VV'}, 'VCr': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 0.9], 'name': 'VCr', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.72], ]), 'symbols': 'VCr'}, 'VMn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'VMn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.69], ]), 'symbols': 'VMn'}, 'VFe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.9, 0.1], 'name': 'VFe', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.74], ]), 'symbols': 'VFe'}, 'VCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.9, 0.1], 'name': 'VCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.81], ]), 'symbols': 'VCo'}, 'VNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'VNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.11], ]), 'symbols': 'VNi'}, 'VCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.9, 0.1], 'name': 'VCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.42], ]), 'symbols': 'VCu'}, 'VZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.9, 0.1], 'name': 'VZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.71], ]), 'symbols': 'VZn'}, # 'Cr2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'Cr2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.75], ]), 'symbols': 'CrCr'}, 'CrMn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 0.9], 'name': 'CrMn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.46], ]), 'symbols': 'CrMn'}, 'CrFe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.1, 1.9], 'name': 'CrFe', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.37], ]), 'symbols': 'CrFe'}, 'CrCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'CrCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.34], ]), 'symbols': 'CrCo'}, 'CrNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.9, 0.1], 'name': 'CrNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.25], ]), 'symbols': 'CrNi'}, 'CrCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.9, 0.1], 'name': 'CrCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.42], ]), 'symbols': 'CrCu'}, 'CrZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [5.9, 0.1], 'name': 'CrZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.75], ]), 'symbols': 'CrZn'}, # 'Mn2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [5.0, 5.0], 'name': 'Mn2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.62], ]), 'symbols': 'MnMn'}, 'MnFe': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [5.0, 4.0], 'name': 'MnFe', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.42], ]), 'symbols': 'MnFe'}, 'MnCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.0, 2.0], 'name': 'MnCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.09], ]), 'symbols': 'MnCo'}, 'MnNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.0, 1.0], 'name': 'MnNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.09], ]), 'symbols': 'MnNi'}, 'MnCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [5.0, 1.0], 'name': 'MnCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.37], ]), 'symbols': 'MnCu'}, 'MnZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.9, 0.1], 'name': 'MnZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.99], ]), 'symbols': 'MnZn'}, # 'Fe2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.0, 3.0], 'name': 'Fe2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.01], ]), 'symbols': 'FeFe'}, 'FeCo': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [4.0, 1.0], 'name': 'FeCo', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.96], ]), 'symbols': 'FeCo'}, 'FeNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.0, 1.0], 'name': 'FeNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.07], ]), 'symbols': 'FeNi'}, 'FeCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'FeCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.31], ]), 'symbols': 'FeCu'}, 'FeZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [3.9, 0.1], 'name': 'FeZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.53], ]), 'symbols': 'FeZn'}, # 'Co2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.0, 2.0], 'name': 'Co2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 1.98], ]), 'symbols': 'CoCo'}, 'CoNi': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.0, 1.0], 'name': 'CoNi', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.10], ]), 'symbols': 'CoNi'}, 'CoCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.9, 0.1], 'name': 'CoCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.26], ]), 'symbols': 'CoCu'}, 'CoZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [2.9, 0.1], 'name': 'CoZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.44], ]), 'symbols': 'CoZn'}, # 'Ni2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.0, 1.0], 'name': 'Ni2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.11], ]), 'symbols': 'NiNi'}, 'NiCu': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.9, 0.1], 'name': 'NiCu', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.25], ]), 'symbols': 'NiCu'}, 'NiZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [1.9, 0.1], 'name': 'NiZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.39], ]), 'symbols': 'NiZn'}, # 'Cu2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'Cu2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.25], ]), 'symbols': 'CuCu'}, 'CuZn': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.5, 0.5], 'name': 'CuZn', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 2.40], ]), 'symbols': 'CuZn'}, # 'Zn2': {'charges': None, 'database': 'TMGMJBP04N', 'magmoms': [0.0, 0.0], 'name': 'Zn2', 'positions': array([ [ 0., 0., 0.], [ 0., 0., 3.27], ]), 'symbols': 'ZnZn'}, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmxr200x.py000066400000000000000000000260531316323560300234340ustar00rootroot00000000000000from __future__ import print_function import os import pprint import re from urllib.request import urlretrieve import datetime import numpy as np from ase.utils import popen3 import ase.io from ase.atom import Atom from ase.atoms import Atoms from ase.data import atomic_numbers from ase.data import ground_state_magnetic_moments # Transition Metals First-row (TM1R): 10.1021/ct6001187 # 32 compounds # Transition Metals Second-row (TM2R): 10.1021/ct700178y # 19 compounds # Transition Metals Third-row (TM3R): 10.1021/ct800172j # 25 compounds #http://pubs.acs.org/doi/suppl/10.1021/ct6001187/suppl_file/ct6001187-file002.pdf #http://pubs.acs.org/doi/suppl/10.1021/ct700178y/suppl_file/ct700178y-file002.pdf #http://pubs.acs.org/doi/suppl/10.1021/ct800172j/suppl_file/ct800172j_si_001.pdf url_root = 'http://pubs.acs.org/doi/suppl/' journal = '10.1021' database_files = { 'TM1R2006': {'doi': journal + '/ct6001187', 'module': 'TMXR200X_TM1R2006'}, 'TM2R2007': {'doi': journal + '/ct700178y', 'module': 'TMXR200X_TM2R2007'}, 'TM3R2008': {'doi': journal + '/ct800172j', 'module': 'TMXR200X_TM3R2008'}, } database_files['TM1R2006']['pdf'] = database_files['TM1R2006']['doi'] + '/suppl_file/ct6001187-file002.pdf' database_files['TM2R2007']['pdf'] = database_files['TM2R2007']['doi'] + '/suppl_file/ct700178y-file002.pdf' database_files['TM3R2008']['pdf'] = database_files['TM3R2008']['doi'] + '/suppl_file/ct800172j_si_001.pdf' def download_file(url, filename, dir='.'): # do not mirror subdirectory structure of url outfile = os.path.join(dir, os.path.basename(filename)) if 0: # fails, use files from disk urlretrieve(os.path.join(url, filename), outfile) return outfile def read_geometries(filename, dir='.'): txt = os.path.join(dir, filename) fh = open(txt, 'rb') table = fh.read() firstsplit = '(in xyz format):' # TM1R2006 and TM2R2007 dataformat = 'xyz' if table.find('(Gaussian archive entries):') != -1: firstsplit = '(Gaussian archive entries):' # TM3R2008 dataformat = 'gaussian' table = table.split(firstsplit) table = table[1] # remove one or two digit numbers (page numbers/numbers of atoms in xyz format) table = re.sub('\n\d\d\n', '\n', table) table = re.sub('\n\d\n', '\n', table) # remove S + two digit numbers (page numbers) table = re.sub('\nS\d\d\n', '\n', table) # remove S + one digit (page numbers) table = re.sub('\nS\d\n', '\n', table) # remove empty lines # http://stackoverflow.com/questions/1140958/whats-a-quick-one-liner-to-remove-empty-lines-from-a-python-string table = os.linesep.join([s for s in table.splitlines() if s]) geometries = [] if dataformat == 'xyz': # split on new lines table = table.split('\n') # mark compound names with ':' tags for n, line in enumerate(table): if not (line.find('.') != -1): # remove method/basis set information table[n] = table[n].replace(' BP86/qzvp', '') table[n] = ':' + table[n] + ':' table = '\n'.join([s for s in table]) # split into compounds # http://simonwillison.net/2003/Oct/26/reSplit/ # http://stackoverflow.com/questions/647655/python-regex-split-and-special-character table = re.compile('(:.*:)').split(table) # remove empty elements table = [l.strip() for l in table] table = [l for l in table if len(l) > 1] # extract compounds for n in range(0, len(table), 2): compound = table[n].replace(':', '').replace(' ', '_') geometry = [] for atom in table[n+1].split('\n'): geometry.append(Atom(symbol=atom.split()[0], position=atom.split()[1:])) atoms = Atoms(geometry) # set the charge and magnetic moment on the heaviest atom (better ideas?) heaviest = max([a.get_atomic_number() for a in atoms]) heaviest_index = [a.get_atomic_number() for a in atoms].index(heaviest) charge = 0.0 if abs(charge) > 0.0: charges = [0.0 for a in atoms] charges[heaviest_index] = charge atoms.set_initial_charges(charges) if compound in [ # see corresponding articles 'Ti(BH4)3', # TM1R2006 'V(NMe2)4', # TM1R2006 'Cu(acac)2', # TM1R2006 'Nb(Cp)(C7H7)_Cs', # TM2R2007 'CdMe_C3v', # TM2R2007 ]: multiplicity = 2.0 else: multiplicity = 1.0 if multiplicity > 1.0: magmoms = [0.0 for a in atoms] magmoms[heaviest_index] = multiplicity - 1 atoms.set_initial_magnetic_moments(magmoms) geometries.append((compound, atoms)) elif dataformat == 'gaussian': # remove new lines table = table.replace('\n', '') # fix: MeHg(Cl) written as MeHg(CN) table = table.replace( 'MeHg(CN), qzvp (SDD/def-qzvp for metal)\\\\0,1\\Hg,0.,0.,0.1975732257', 'MeHg(Cl), qzvp (SDD/def-qzvp for metal)\\\\0,1\\Hg,0.,0.,0.1975732257') # split on compound end marks table = table.split('\\\@') # remove empty elements table = [l.strip() for l in table] table = [l for l in table if len(l) > 1] # extract compounds for n, line in enumerate(table): # split on gaussian separator '\\' entries = line.split('\\\\') compound = entries[2].split(',')[0].split(' ')[0] # charge and multiplicity from gaussian archive charge, multiplicity = entries[3].split('\\')[0].split(',') charge = float(charge) multiplicity = float(multiplicity) if compound in ['Au(Me)PMe3']: # in gzmat format! # check openbabel version (babel >= 2.2 needed) cmd = popen3('babel -V')[1] output = cmd.read().strip() cmd.close() v1, v2, v3 = output.split()[2].split('.') v1, v2, v3 = int(v1), int(v2), int(v3) if not (v1 > 2 or ((v1 == 2) and (v2 >= 2))): print(compound + ': skipped - version of babel does not support gzmat format') continue # this one is given in z-matrix format finame = compound.replace('(', '').replace(')', '') + '.orig' foname = finame.split('.')[0] + '.xyz' fi = open(finame, 'w') fo = open(foname, 'w') if 1: # how to extract zmat by hand zmat = ['#'] # must start with gaussian input start zmat.extend('@') # separated by newline zmat.extend([compound]) zmat.extend('@') # separated by newline zmat.extend([str(int(charge)) + ' ' + str(int(multiplicity))]) zmat.extend(entries[3].replace(',', ' ').split('\\')[1:]) zmat.extend('@') # atom and variable definitions separated by newline zmat.extend(entries[4].split('\\')) zmat.extend('@') # end with newline for l in zmat: fi.write(l.replace('@', '').replace('=', ' ') + '\n') fi.close() if 0: # or use the whole gausian archive entry entries = ''.join(entries) fi.write(entries) # convert gzmat into xyz using openbabel (babel >= 2.2 needed) cmd = popen3('babel -i gzmat ' + finame + ' -o xyz ' + foname)[2] error = cmd.read().strip() cmd.close() fo.close() if not (error.find('0 molecules') != -1): atoms = ase.io.read(foname) else: print(compound + ': babel conversion failed') continue # conversion failed else: positions = entries[3].replace(',', ' ').split('\\')[1:] geometry = [] for k, atom in enumerate(positions): geometry.append(Atom(symbol=atom.split()[0], position=[float(p) for p in atom.split()[1:]])) atoms = Atoms(geometry) # # set the charge and magnetic moment on the heaviest atom (better ideas?) heaviest = max([a.get_atomic_number() for a in atoms]) heaviest_index = [a.get_atomic_number() for a in atoms].index(heaviest) if abs(charge) > 0.0: charges = [0.0 for a in atoms] charges[heaviest_index] = charge atoms.set_initial_charges(charges) if multiplicity > 1.0: magmoms = [0.0 for a in atoms] magmoms[heaviest_index] = multiplicity - 1 atoms.set_initial_magnetic_moments(magmoms) geometries.append((compound, atoms)) return geometries def pdftotext(filename): os.system('pdftotext -raw -nopgbrk '+ filename) return os.path.splitext(filename)[0] + '.txt' from ase.data.gmtkn30 import format_data def main(): if not os.path.isdir('TMXR200X'): os.makedirs('TMXR200X') #for database in ['TM1R2006']: for database in database_files.keys(): fh = open(database_files[database]['module'].lower() + '.py', 'w') fh.write('# Computer generated code! Hands off!\n') fh.write('# Generated: ' + str(datetime.date.today()) + '\n') fh.write('from numpy import array\n') fh.write('data = ') data = {} # specification of molecules # download structures file = database_files[database]['pdf'] f = os.path.abspath(download_file(url_root, file, dir='TMXR200X')) f = pdftotext(f) geometries = read_geometries(f) # set number of unpaired electrons and charges no_unpaired_electrons = [] charges = [] for a in geometries: magmom = sum(a[1].get_initial_magnetic_moments()) if magmom > 0.0: no_unpaired_electrons.append((a[0], magmom)) charge = sum(a[1].get_charges()) if abs(charge) > 0.0: charges.append((a[0], charge)) data = format_data(database, geometries, no_unpaired_electrons, charges) # all constituent atoms atoms = [] for formula, geometry in geometries: atoms.extend(list(set(geometry.get_chemical_symbols()))) atoms=sorted(set(atoms)) for atom in atoms: magmom=ground_state_magnetic_moments[atomic_numbers[atom]] data[atom] = { 'database': database, 'name': atom, 'symbols': atom, 'magmoms': [magmom], # None or list 'charges': None, # None or list 'positions': np.array([[0.0]*3]), } Atom(atom, magmom=magmom) pprint.pprint(data, stream=fh) fh.close() if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmxr200x_tm1r2006.py000066400000000000000000000750171316323560300247130ustar00rootroot00000000000000# Computer generated code! Hands off! # Generated: 2011-08-30 from numpy import array data = {'B': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'B', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'B'}, 'C': {'charges': None, 'database': 'TM1R2006', 'magmoms': [2.0], 'name': 'C', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'C'}, 'Cl': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'Cl', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cl'}, 'Co': {'charges': None, 'database': 'TM1R2006', 'magmoms': [3.0], 'name': 'Co', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Co'}, 'Co(CO)3(NO)': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'C3CoO4N', 'positions': array([[ 0. , 0. , 0.122333], [ 0. , 0. , 1.78519 ], [ 0. , 1.629018, -0.666179], [ 1.410771, -0.814509, -0.666179], [-1.410771, -0.814509, -0.666179], [ 0. , 0. , 2.94736 ], [ 0. , 2.677027, -1.141125], [ 2.318373, -1.338513, -1.141125], [-2.318373, -1.338513, -1.141125]]), 'symbols': 'CoNCCCOOOO'}, 'CoH(CO)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'HC4CoO4', 'positions': array([[ 0.169633, -0.068726, 0. ], [ 1.547021, -0.624911, 0. ], [ 1.098898, 1.466351, 0. ], [ 0.100109, -0.996887, 1.534435], [ 0.100109, -0.996887, -1.534435], [-1.49914 , 0.607866, 0. ], [ 1.738941, 2.42264 , 0. ], [ 0.104467, -1.606465, 2.510398], [ 0.104467, -1.606465, -2.510398], [-2.563745, 1.040021, 0. ]]), 'symbols': 'CoHCCCCOOOO'}, 'Cr': {'charges': None, 'database': 'TM1R2006', 'magmoms': [6.0], 'name': 'Cr', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cr'}, 'Cr(C6H6)(CO)3': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrC9O3H6', 'positions': array([[ 0. , 0. , 0.079343], [ 0.669399, 1.249046, -1.636118], [ 1.41734 , 0.054603, -1.638444], [ 0.747006, -1.20424 , -1.636118], [-0.661382, -1.254754, -1.638444], [-1.416405, -0.044806, -1.636118], [-0.755958, 1.200151, -1.638444], [ 1.179092, 2.209631, -1.595473], [ 2.504054, 0.091803, -1.599339], [ 1.324051, -2.125939, -1.595473], [-1.172524, -2.214476, -1.599339], [-2.503143, -0.083692, -1.595473], [-1.33153 , 2.122673, -1.599339], [ 0.012121, 1.481385, 1.178868], [-1.288978, -0.730195, 1.178868], [ 1.276857, -0.75119 , 1.178868], [ 0.020703, 2.420708, 1.866466], [-2.106746, -1.192425, 1.866466], [ 2.086043, -1.228283, 1.866466]]), 'symbols': 'CrCCCCCCHHHHHHCCCOOO'}, 'Cr(C6H6)2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrC12H12', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 1.421155, 1.619206], [-1.230757, 0.710578, 1.619206], [-1.230757, -0.710578, 1.619206], [ 0. , -1.421155, 1.619206], [ 1.230757, -0.710578, 1.619206], [ 1.230757, 0.710578, 1.619206], [ 0. , 1.421155, -1.619206], [ 1.230757, 0.710578, -1.619206], [ 1.230757, -0.710578, -1.619206], [ 0. , -1.421155, -1.619206], [-1.230757, -0.710578, -1.619206], [-1.230757, 0.710578, -1.619206], [ 0. , 2.511301, 1.57524 ], [-2.17485 , 1.25565 , 1.57524 ], [-2.17485 , -1.25565 , 1.57524 ], [ 0. , -2.511301, 1.57524 ], [ 2.17485 , -1.25565 , 1.57524 ], [ 2.17485 , 1.25565 , 1.57524 ], [ 0. , 2.511301, -1.57524 ], [ 2.17485 , 1.25565 , -1.57524 ], [ 2.17485 , -1.25565 , -1.57524 ], [ 0. , -2.511301, -1.57524 ], [-2.17485 , -1.25565 , -1.57524 ], [-2.17485 , 1.25565 , -1.57524 ]]), 'symbols': 'CrCCCCCCCCCCCCHHHHHHHHHHHH'}, 'Cr(NO)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrO4N4', 'positions': array([[ 0. , 0. , 0. ], [ 1.006462, 1.006462, 1.006462], [-1.006462, -1.006462, 1.006462], [-1.006462, 1.006462, -1.006462], [ 1.006462, -1.006462, -1.006462], [ 1.681869, 1.681869, 1.681869], [-1.681869, -1.681869, 1.681869], [-1.681869, 1.681869, -1.681869], [ 1.681869, -1.681869, -1.681869]]), 'symbols': 'CrNNNNOOOO'}, 'CrO2(NO3)2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrO8N2', 'positions': array([[ 0. , 0. , 0.831366], [-1.274141, 0.115328, 1.750816], [ 1.274141, -0.115328, 1.750816], [-0.012757, 1.823831, 0.190162], [ 0.012757, -1.823831, 0.190162], [ 0.864925, 1.702663, -0.832149], [-0.864925, -1.702663, -0.832149], [ 1.276969, 0.51347 , -0.956167], [-1.276969, -0.51347 , -0.956167], [ 1.162006, 2.65268 , -1.497278], [-1.162006, -2.65268 , -1.497278]]), 'symbols': 'CrOOOONNOOOO'}, 'CrO2Cl2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrO2Cl2', 'positions': array([[ 0. , 0. , 0.357011], [ 0. , 1.282258, 1.269789], [ 0. , -1.282258, 1.269789], [ 1.75172 , 0. , -0.849556], [-1.75172 , 0. , -0.849556]]), 'symbols': 'CrOOClCl'}, 'CrO2F2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CrO2F2', 'positions': array([[ 0. , 0. , 0.051762], [ 0. , 1.274503, 0.97249 ], [ 0. , -1.274503, 0.97249 ], [ 1.413706, 0. , -0.933452], [-1.413706, 0. , -0.933452]]), 'symbols': 'CrOOFF'}, 'Cu': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'Cu', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cu'}, 'Cu(acac)2': {'charges': None, 'database': 'TM1R2006', 'magmoms': array([ 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), 'name': 'H14C10CuO4', 'positions': array([[-4.354988, 0. , 0. ], [-3.26715 , 0. , 0. ], [-2.607363, 1.242531, 0. ], [-1.338538, 1.410816, 0. ], [-3.420342, 2.520011, 0. ], [-3.157321, 3.118553, 0.883267], [-4.498751, 2.327325, 0. ], [ 0. , 0. , 0. ], [ 4.354988, 0. , 0. ], [ 3.26715 , 0. , 0. ], [ 2.607363, -1.242531, 0. ], [-2.607363, -1.242531, 0. ], [ 2.607363, 1.242531, 0. ], [ 1.338538, -1.410816, 0. ], [-1.338538, -1.410816, 0. ], [ 1.338538, 1.410816, 0. ], [ 3.420342, -2.520011, 0. ], [-3.420342, -2.520011, 0. ], [ 3.420342, 2.520011, 0. ], [ 3.157321, -3.118553, 0.883267], [-3.157321, -3.118553, -0.883267], [ 3.157321, 3.118553, -0.883267], [-3.157321, 3.118553, -0.883267], [ 3.157321, -3.118553, -0.883267], [-3.157321, -3.118553, 0.883267], [ 3.157321, 3.118553, 0.883267], [ 4.498751, -2.327325, 0. ], [-4.498751, -2.327325, 0. ], [ 4.498751, 2.327325, 0. ]]), 'symbols': 'HCCOCHHCuHCCCCOOOCCCHHHHHHHHHH'}, 'CuCN': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'CCuN', 'positions': array([[ 0. , 0. , 0.758411], [ 0. , 0. , -1.061968], [ 0. , 0. , -2.231729]]), 'symbols': 'CuCN'}, 'CuMe': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H3CCu', 'positions': array([[ 0. , 0. , 0.475856], [ 0. , 0. , -1.418944], [ 0. , 1.042163, -1.762057], [ 0.90254 , -0.521081, -1.762057], [-0.90254 , -0.521081, -1.762057]]), 'symbols': 'CuCHHH'}, 'F': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'F', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'F'}, 'Fe': {'charges': None, 'database': 'TM1R2006', 'magmoms': [4.0], 'name': 'Fe', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Fe'}, 'Fe(C5Me5)(P5)': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'P5C10FeH15', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 8.94940000e-02], [ 3.78124000e-01, 1.16439800e+00, -1.63229800e+00], [ 1.22425500e+00, 2.01000000e-04, -1.63229800e+00], [ 3.78507000e-01, -1.16427400e+00, -1.63229800e+00], [ -9.90325000e-01, -7.19762000e-01, -1.63229800e+00], [ -9.90561000e-01, 7.19436000e-01, -1.63229800e+00], [ -4.13627000e-01, 1.76865100e+00, 1.62799200e+00], [ -1.80990500e+00, 1.53161000e-01, 1.62799200e+00], [ -7.04956000e-01, -1.67399300e+00, 1.62799200e+00], [ 1.37421900e+00, -1.18774500e+00, 1.62799200e+00], [ 1.55427000e+00, 9.39926000e-01, 1.62799200e+00], [ 8.40577000e-01, 2.58578700e+00, -1.71656500e+00], [ 2.71898200e+00, -3.84000000e-04, -1.71656500e+00], [ 8.39847000e-01, -2.58602400e+00, -1.71656500e+00], [ -2.19992800e+00, -1.59786700e+00, -1.71656500e+00], [ -2.19947700e+00, 1.59848800e+00, -1.71656500e+00], [ 1.42717000e-01, 3.26911600e+00, -1.21693800e+00], [ 3.15321600e+00, 8.74481000e-01, -1.21693800e+00], [ 1.80607800e+00, -2.72865800e+00, -1.21693800e+00], [ -2.03699900e+00, -2.56088400e+00, -1.21693800e+00], [ -3.06501200e+00, 1.14594400e+00, -1.21693800e+00], [ 1.82549400e+00, 2.71840500e+00, -1.25219600e+00], [ 3.14946500e+00, -8.96115000e-01, -1.25219600e+00], [ 1.20982000e-01, -3.27223400e+00, -1.25219600e+00], [ -3.07469400e+00, -1.12623700e+00, -1.25219600e+00], [ -2.02124800e+00, 2.57618200e+00, -1.25219600e+00], [ 9.22453000e-01, 2.89959200e+00, -2.76981700e+00], [ 3.04273000e+00, 1.87180000e-02, -2.76981700e+00], [ 9.58057000e-01, -2.88802400e+00, -2.76981700e+00], [ -2.45061800e+00, -1.80361500e+00, -2.76981700e+00], [ -2.47262300e+00, 1.77332800e+00, -2.76981700e+00]]), 'symbols': 'FeCCCCCPPPPPCCCCCHHHHHHHHHHHHHHH'}, 'Fe(CO)2(NO)2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'C2FeO4N2', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 1.30071000e-01], [ -1.38784900e+00, -8.20000000e-05, -1.04825300e+00], [ 1.38784900e+00, 8.20000000e-05, -1.04825300e+00], [ -8.00000000e-06, 1.46363300e+00, 9.39560000e-01], [ 8.00000000e-06, -1.46363300e+00, 9.39560000e-01], [ -2.28772400e+00, -1.13000000e-04, -1.76703100e+00], [ 2.28772400e+00, 1.13000000e-04, -1.76703100e+00], [ 1.52000000e-04, 2.47483300e+00, 1.51974100e+00], [ -1.52000000e-04, -2.47483300e+00, 1.51974100e+00]]), 'symbols': 'FeCCNNOOOO'}, 'Fe(CO)3(tmm)': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H6C7FeO3', 'positions': array([[ 0. , 0. , 0.015198], [ 0. , 0. , -1.938396], [ 0. , -1.394127, -1.614155], [-1.207349, 0.697064, -1.614155], [ 1.207349, 0.697064, -1.614155], [-0.922915, -1.965174, -1.708739], [ 0.922915, -1.965174, -1.708739], [-1.240433, 1.781855, -1.708739], [-2.163348, 0.183319, -1.708739], [ 2.163348, 0.183319, -1.708739], [ 1.240433, 1.781855, -1.708739], [ 0. , 1.558543, 0.88711 ], [ 1.349738, -0.779272, 0.88711 ], [-1.349738, -0.779272, 0.88711 ], [ 0. , 2.572496, 1.441607], [ 2.227847, -1.286248, 1.441607], [-2.227847, -1.286248, 1.441607]]), 'symbols': 'FeCCCCHHHHHHCCCOOO'}, 'Fe(CO)4(C2H4)': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H4C6FeO4', 'positions': array([[ 0. , 0. , 0.035592], [ 0. , 0.705223, 2.059376], [ 0. , -0.705223, 2.059376], [ 1.804574, 0. , 0.077246], [-1.804574, 0. , 0.077246], [ 0. , 1.494469, -0.957308], [ 0. , -1.494469, -0.957308], [ 2.956769, 0. , 0.103947], [-2.956769, 0. , 0.103947], [ 0. , 2.448186, -1.609889], [ 0. , -2.448186, -1.609889], [-0.914881, 1.25654 , 2.273583], [ 0.914881, 1.25654 , 2.273583], [ 0.914881, -1.25654 , 2.273583], [-0.914881, -1.25654 , 2.273583]]), 'symbols': 'FeCCCCCCOOOOHHHH'}, 'Fe(CO)5': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'C5FeO5', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 1.807856, 0. ], [ 1.565649, -0.903928, 0. ], [-1.565649, -0.903928, 0. ], [ 0. , 0. , 1.808029], [ 0. , 0. , -1.808029], [ 0. , 2.96131 , 0. ], [ 2.56457 , -1.480655, 0. ], [-2.56457 , -1.480655, 0. ], [ 0. , 0. , 2.95866 ], [ 0. , 0. , -2.95866 ]]), 'symbols': 'FeCCCCCOOOOO'}, 'FeCp2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H10C10Fe', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 1.22008 , 1.650626], [-1.160365, 0.377025, 1.650626], [-0.717145, -0.987065, 1.650626], [ 0.717145, -0.987065, 1.650626], [ 1.160365, 0.377025, 1.650626], [ 0. , 1.22008 , -1.650626], [ 1.160365, 0.377025, -1.650626], [ 0.717145, -0.987065, -1.650626], [-0.717145, -0.987065, -1.650626], [-1.160365, 0.377025, -1.650626], [ 0. , 2.306051, 1.635648], [-2.193184, 0.712609, 1.635648], [-1.355463, -1.865634, 1.635648], [ 1.355463, -1.865634, 1.635648], [ 2.193184, 0.712609, 1.635648], [ 0. , 2.306051, -1.635648], [ 2.193184, 0.712609, -1.635648], [ 1.355463, -1.865634, -1.635648], [-1.355463, -1.865634, -1.635648], [-2.193184, 0.712609, -1.635648]]), 'symbols': 'FeCCCCCCCCCCHHHHHHHHHH'}, 'H': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'H', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'H'}, 'Mn': {'charges': None, 'database': 'TM1R2006', 'magmoms': [5.0], 'name': 'Mn', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Mn'}, 'MnCp(CO)3': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H5C8MnO3', 'positions': array([[ -5.23270000e-02, 8.86000000e-04, -4.80000000e-05], [ 1.75041400e+00, 8.90032000e-01, -8.02365000e-01], [ 1.74465200e+00, 1.03578300e+00, 6.25351000e-01], [ 1.73117000e+00, -2.70325000e-01, 1.19405900e+00], [ 1.72839700e+00, -1.22675500e+00, 1.32675000e-01], [ 1.74030300e+00, -5.00655000e-01, -1.10190300e+00], [ 1.75833800e+00, 1.69831100e+00, -1.52642300e+00], [ 1.75113500e+00, 1.97194400e+00, 1.17377600e+00], [ 1.71587100e+00, -4.99916000e-01, 2.25501400e+00], [ 1.72387700e+00, -2.30606000e+00, 2.41941000e-01], [ 1.73502700e+00, -9.35920000e-01, -2.09624000e+00], [ -1.05202300e+00, -9.73104000e-01, -1.11998200e+00], [ -1.06758900e+00, -4.72167000e-01, 1.39570900e+00], [ -1.02799600e+00, 1.47198300e+00, -2.93177000e-01], [ -1.67586400e+00, -1.61793400e+00, -1.85760700e+00], [ -1.70361600e+00, -7.86574000e-01, 2.31524100e+00], [ -1.63381900e+00, 2.44414300e+00, -4.85783000e-01]]), 'symbols': 'MnCCCCCHHHHHCCCOOO'}, 'MnO3F': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'MnO3F', 'positions': array([[ 0. , 0. , 0.053348], [ 0. , 0. , -1.666807], [ 0. , 1.494372, 0.562137], [-1.294164, -0.747186, 0.562137], [ 1.294164, -0.747186, 0.562137]]), 'symbols': 'MnFOOO'}, 'N': {'charges': None, 'database': 'TM1R2006', 'magmoms': [3.0], 'name': 'N', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'N'}, 'Ni': {'charges': None, 'database': 'TM1R2006', 'magmoms': [2.0], 'name': 'Ni', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ni'}, 'Ni(CO)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'NiC4O4', 'positions': array([[ 0. , 0. , 0. ], [ 1.054577, 1.054577, 1.054577], [-1.054577, -1.054577, 1.054577], [-1.054577, 1.054577, -1.054577], [ 1.054577, -1.054577, -1.054577], [ 1.717244, 1.717244, 1.717244], [-1.717244, -1.717244, 1.717244], [-1.717244, 1.717244, -1.717244], [ 1.717244, -1.717244, -1.717244]]), 'symbols': 'NiCCCCOOOO'}, 'Ni(PF3)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'NiF12P4', 'positions': array([[ 0. , 0. , 0. ], [ 1.222139, 1.222139, 1.222139], [-1.222139, -1.222139, 1.222139], [-1.222139, 1.222139, -1.222139], [ 1.222139, -1.222139, -1.222139], [ 2.233162, 2.233162, 0.542885], [ 0.542885, 2.233162, 2.233162], [ 2.233162, 0.542885, 2.233162], [-0.542885, -2.233162, 2.233162], [-2.233162, -0.542885, 2.233162], [-2.233162, -2.233162, 0.542885], [-2.233162, 2.233162, -0.542885], [-0.542885, 2.233162, -2.233162], [-2.233162, 0.542885, -2.233162], [ 0.542885, -2.233162, -2.233162], [ 2.233162, -0.542885, -2.233162], [ 2.233162, -2.233162, -0.542885]]), 'symbols': 'NiPPPPFFFFFFFFFFFF'}, 'Ni(acac)2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'NiC10O4H14', 'positions': array([[ 0. , 0. , 0. ], [-1.248785, 1.372676, 0. ], [ 1.248785, -1.372676, 0. ], [-1.248785, -1.372676, 0. ], [ 1.248785, 1.372676, 0. ], [ 3.198214, 0. , 0. ], [-3.198214, 0. , 0. ], [-2.524578, 1.231009, 0. ], [ 2.524578, -1.231009, 0. ], [-2.524578, -1.231009, 0. ], [ 2.524578, 1.231009, 0. ], [-3.300189, 2.528058, 0. ], [ 3.300189, -2.528058, 0. ], [-3.300189, -2.528058, 0. ], [ 3.300189, 2.528058, 0. ], [-4.285791, 0. , 0. ], [ 4.285791, 0. , 0. ], [-3.025745, 3.120807, 0.883699], [ 3.025745, -3.120807, 0.883699], [-3.025745, -3.120807, -0.883699], [ 3.025745, 3.120807, -0.883699], [-3.025745, 3.120807, -0.883699], [ 3.025745, -3.120807, -0.883699], [-3.025745, -3.120807, 0.883699], [ 3.025745, 3.120807, 0.883699], [-4.382325, 2.358532, 0. ], [ 4.382325, -2.358532, 0. ], [-4.382325, -2.358532, 0. ], [ 4.382325, 2.358532, 0. ]]), 'symbols': 'NiOOOOCCCCCCCCCCHHHHHHHHHHHHHH'}, 'O': {'charges': None, 'database': 'TM1R2006', 'magmoms': [2.0], 'name': 'O', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'O'}, 'P': {'charges': None, 'database': 'TM1R2006', 'magmoms': [3.0], 'name': 'P', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'P'}, 'Sc': {'charges': None, 'database': 'TM1R2006', 'magmoms': [1.0], 'name': 'Sc', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Sc'}, 'Sc(acac)3': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'ScH21C15O6', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 3.540777, 0. ], [ 3.066403, -1.770388, 0. ], [-3.066403, -1.770388, 0. ], [ 0.620701, 2.875529, 1.075115], [ 2.179931, -1.975308, 1.075115], [-2.800632, -0.900222, 1.075115], [-0.620701, 2.875529, -1.075115], [-2.179931, -1.975308, -1.075115], [ 2.800632, -0.900222, -1.075115], [ 0.692832, 1.602531, 1.184875], [ 1.041417, -1.401275, 1.184875], [-1.734249, -0.201256, 1.184875], [-0.692832, 1.602531, -1.184875], [-1.041417, -1.401275, -1.184875], [ 1.734249, -0.201256, -1.184875], [ 0. , 4.628781, 0. ], [ 4.008642, -2.314391, 0. ], [-4.008642, -2.314391, 0. ], [ 1.255264, 3.675911, 2.189555], [ 2.5558 , -2.925046, 2.189555], [-3.811064, -0.750865, 2.189555], [-1.255264, 3.675911, -2.189555], [-2.5558 , -2.925046, -2.189555], [ 3.811064, -0.750865, -2.189555], [ 1.167445, 4.757208, 2.035793], [ 3.536141, -3.389641, 2.035793], [-4.703586, -1.367567, 2.035793], [-1.167445, 4.757208, -2.035793], [-3.536141, -3.389641, -2.035793], [ 4.703586, -1.367567, -2.035793], [ 0.782067, 3.404276, 3.143979], [ 2.557156, -2.379428, 3.143979], [-3.339224, -1.024848, 3.143979], [-0.782067, 3.404276, -3.143979], [-2.557156, -2.379428, -3.143979], [ 3.339224, -1.024848, -3.143979], [ 2.317429, 3.404876, 2.272149], [ 1.789995, -3.70939 , 2.272149], [-4.107423, 0.304514, 2.272149], [-2.317429, 3.404876, -2.272149], [-1.789995, -3.70939 , -2.272149], [ 4.107423, 0.304514, -2.272149]]), 'symbols': 'ScCCCCCCCCCOOOOOOHHHCCCCCCHHHHHHHHHHHHHHHHHH'}, 'Ti': {'charges': None, 'database': 'TM1R2006', 'magmoms': [2.0], 'name': 'Ti', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ti'}, 'Ti(BH4)3': {'charges': None, 'database': 'TM1R2006', 'magmoms': array([ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), 'name': 'H12B3Ti', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, -4.10000000e-05], [ -6.08500000e-03, 2.15249500e+00, -1.05000000e-04], [ 1.86715700e+00, -1.07097800e+00, -1.05000000e-04], [ -1.86107300e+00, -1.08151700e+00, -1.05000000e-04], [ 1.15865300e+00, 1.72757300e+00, -2.00000000e-05], [ 9.16796000e-01, -1.86721000e+00, -2.00000000e-05], [ -2.07544900e+00, 1.39636000e-01, -2.00000000e-05], [ -5.39671000e-01, 1.57415900e+00, -9.93950000e-01], [ 1.63309700e+00, -3.19711000e-01, -9.93950000e-01], [ -1.09342600e+00, -1.25444800e+00, -9.93950000e-01], [ -5.39811000e-01, 1.57429900e+00, 9.93727000e-01], [ 1.63328800e+00, -3.19659000e-01, 9.93727000e-01], [ -1.09347700e+00, -1.25463900e+00, 9.93727000e-01], [ -1.35742000e-01, 3.33766400e+00, -3.73000000e-04], [ 2.95837300e+00, -1.55127600e+00, -3.73000000e-04], [ -2.82263100e+00, -1.78638800e+00, -3.73000000e-04]]), 'symbols': 'TiBBBHHHHHHHHHHHH'}, 'TiCl2Me2': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H6C2Cl2Ti', 'positions': array([[ 0. , 0. , 0.209742], [-1.881657, 0. , -0.945866], [ 1.881657, 0. , -0.945866], [ 0. , 1.639389, 1.457372], [ 0. , -1.639389, 1.457372], [-0.901274, -1.610233, 2.089371], [ 0.901274, -1.610233, 2.089371], [ 0. , -2.564277, 0.861137], [ 0. , 2.564277, 0.861137], [ 0.901274, 1.610233, 2.089371], [-0.901274, 1.610233, 2.089371]]), 'symbols': 'TiClClCCHHHHHH'}, 'TiCl3Me': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H3CCl3Ti', 'positions': array([[ 0. , 0. , 0.116538], [ 0. , 2.115907, -0.472447], [-1.832429, -1.057954, -0.472447], [ 1.832429, -1.057954, -0.472447], [ 0. , 0. , 2.167769], [ 0.902139, 0.52085 , 2.521547], [ 0. , -1.0417 , 2.521547], [-0.902139, 0.52085 , 2.521547]]), 'symbols': 'TiClClClCHHH'}, 'TiCl4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'Cl4Ti', 'positions': array([[ 0. , 0. , 0. ], [ 1.262798, 1.262798, 1.262798], [-1.262798, -1.262798, 1.262798], [-1.262798, 1.262798, -1.262798], [ 1.262798, -1.262798, -1.262798]]), 'symbols': 'TiClClClCl'}, 'V': {'charges': None, 'database': 'TM1R2006', 'magmoms': [3.0], 'name': 'V', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'V'}, 'V(NMe2)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': array([ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), 'name': 'H24C8N4V', 'positions': array([[ 0. , 0. , 0. ], [-0.009654, 1.561722, 1.062138], [ 0.009654, -1.561722, 1.062138], [-1.561722, -0.009654, -1.062138], [ 1.561722, 0.009654, -1.062138], [-1.219978, 2.113945, 1.655979], [ 1.219978, -2.113945, 1.655979], [-2.113945, -1.219978, -1.655979], [ 2.113945, 1.219978, -1.655979], [ 1.188278, 2.080402, 1.709075], [-1.188278, -2.080402, 1.709075], [-2.080402, 1.188278, -1.709075], [ 2.080402, -1.188278, -1.709075], [-2.112996, 1.691813, 1.177356], [ 2.112996, -1.691813, 1.177356], [-1.691813, -2.112996, -1.177356], [ 1.691813, 2.112996, -1.177356], [ 2.089441, 1.627028, 1.275983], [-2.089441, -1.627028, 1.275983], [-1.627028, 2.089441, -1.275983], [ 1.627028, -2.089441, -1.275983], [-1.254235, 3.214541, 1.536136], [ 1.254235, -3.214541, 1.536136], [-1.905317, -1.281383, -2.742242], [ 1.905317, 1.281383, -2.742242], [ 1.192045, 1.877111, 2.798018], [-1.192045, -1.877111, 2.798018], [-3.178469, 1.263762, -1.584921], [ 3.178469, -1.263762, -1.584921], [-1.281383, 1.905317, 2.742242], [ 1.281383, -1.905317, 2.742242], [-3.214541, -1.254235, -1.536136], [ 3.214541, 1.254235, -1.536136], [ 1.263762, 3.178469, 1.584921], [-1.263762, -3.178469, 1.584921], [-1.877111, 1.192045, -2.798018], [ 1.877111, -1.192045, -2.798018]]), 'symbols': 'VNNNNCCCCCCCCHHHHHHHHHHHHHHHHHHHHHHHH'}, 'VCp(CO)4': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'H5C9O4V', 'positions': array([[ 0.003658, 0.04101 , 0. ], [-0.988688, 2.128308, 0. ], [-0.161173, 2.021062, 1.151741], [ 1.184667, 1.847267, 0.714111], [ 1.184667, 1.847267, -0.714111], [-0.161173, 2.021062, -1.151741], [-2.065227, 2.26891 , 0. ], [-0.495968, 2.070335, 2.183207], [ 2.056257, 1.749228, 1.353427], [ 2.056257, 1.749228, -1.353427], [-0.495968, 2.070335, -2.183207], [-1.765418, -0.746026, 0. ], [-0.098849, -0.926375, -1.671988], [-0.098849, -0.926375, 1.671988], [ 1.560317, -1.104426, 0. ], [-2.828096, -1.211475, 0. ], [-0.156132, -1.498615, -2.679799], [-0.156132, -1.498615, 2.679799], [ 2.502981, -1.781344, 0. ]]), 'symbols': 'VCCCCCHHHHHCCCCOOOO'}, 'VF5': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'F5V', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 1.764166], [ 0. , 1.726781, 0. ], [-1.495436, -0.86339 , 0. ], [ 1.495436, -0.86339 , 0. ], [ 0. , 0. , -1.764166]]), 'symbols': 'VFFFFF'}, 'VOCl3': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'Cl3OV', 'positions': array([[ 0. , 0. , 0.263274], [ 0. , 0. , 1.837702], [ 0. , 2.044546, -0.40922 ], [ 1.770629, -1.022273, -0.40922 ], [-1.770629, -1.022273, -0.40922 ]]), 'symbols': 'VOClClCl'}, 'VOF3': {'charges': None, 'database': 'TM1R2006', 'magmoms': None, 'name': 'F3OV', 'positions': array([[ 0. , 0. , 0.037484], [ 0. , 0. , 1.614068], [ 0. , 1.647059, -0.512097], [ 1.426395, -0.823529, -0.512097], [-1.426395, -0.823529, -0.512097]]), 'symbols': 'VOFFF'}} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmxr200x_tm2r2007.py000066400000000000000000000441551316323560300247140ustar00rootroot00000000000000# Computer generated code! Hands off! # Generated: 2011-08-30 from numpy import array data = {'B': {'charges': None, 'database': 'TM2R2007', 'magmoms': [1.0], 'name': 'B', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'B'}, 'C': {'charges': None, 'database': 'TM2R2007', 'magmoms': [2.0], 'name': 'C', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'C'}, 'Cd': {'charges': None, 'database': 'TM2R2007', 'magmoms': [0.0], 'name': 'Cd', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cd'}, 'CdMe2_D3': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H6C2Cd', 'positions': array([[ 0. , 0. , 2.127012], [-0.396568, 0.954659, 2.516168], [-0.628475, -0.820767, 2.516168], [ 1.025043, -0.133892, 2.516168], [ 0. , 0. , 0. ], [ 0. , 0. , -2.127012], [ 0.396568, 0.954659, -2.516168], [-1.025043, -0.133892, -2.516168], [ 0.628475, -0.820767, -2.516168]]), 'symbols': 'CHHHCdCHHH'}, 'CdMe_C3v': {'charges': None, 'database': 'TM2R2007', 'magmoms': array([ 0., 0., 0., 0., 1.]), 'name': 'H3CCd', 'positions': array([[ 0. , 0. , -1.893946], [ 0. , 1.05344 , -2.212298], [ 0.912306, -0.52672 , -2.212298], [-0.912306, -0.52672 , -2.212298], [ 0. , 0. , 0.375012]]), 'symbols': 'CHHHCd'}, 'Cl': {'charges': None, 'database': 'TM2R2007', 'magmoms': [1.0], 'name': 'Cl', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cl'}, 'F': {'charges': None, 'database': 'TM2R2007', 'magmoms': [1.0], 'name': 'F', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'F'}, 'H': {'charges': None, 'database': 'TM2R2007', 'magmoms': [1.0], 'name': 'H', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'H'}, 'Mo': {'charges': None, 'database': 'TM2R2007', 'magmoms': [6.0], 'name': 'Mo', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Mo'}, 'Mo(CO)6_Oh': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'MoC6O6', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 2.061499], [ 0. , 2.061499, 0. ], [ 2.061499, 0. , 0. ], [ 0. , -2.061499, 0. ], [-2.061499, 0. , 0. ], [ 0. , 0. , -2.061499], [ 0. , 0. , 3.225318], [ 0. , 3.225318, 0. ], [ 3.225318, 0. , 0. ], [ 0. , -3.225318, 0. ], [-3.225318, 0. , 0. ], [ 0. , 0. , -3.225318]]), 'symbols': 'MoCCCCCCOOOOOO'}, 'Mo2(OAc)4_C4': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H12Mo2C8O8', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, -1.06938500e+00], [ -2.73808600e+00, 5.22400000e-03, 0.00000000e+00], [ -5.22400000e-03, -2.73808600e+00, 0.00000000e+00], [ 2.73808600e+00, -5.22400000e-03, 0.00000000e+00], [ 5.22400000e-03, 2.73808600e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 1.06938600e+00], [ -4.24697900e+00, 5.34640000e-02, 0.00000000e+00], [ -5.34640000e-02, -4.24697900e+00, 0.00000000e+00], [ 4.24697900e+00, -5.34640000e-02, 0.00000000e+00], [ 5.34640000e-02, 4.24697900e+00, 0.00000000e+00], [ -2.10910100e+00, 0.00000000e+00, -1.12919500e+00], [ 0.00000000e+00, 2.10910100e+00, -1.12919500e+00], [ 2.10910100e+00, 0.00000000e+00, -1.12919500e+00], [ 0.00000000e+00, -2.10910100e+00, -1.12919500e+00], [ -2.10910100e+00, 0.00000000e+00, 1.12919500e+00], [ 0.00000000e+00, -2.10910100e+00, 1.12919500e+00], [ 2.10910100e+00, 0.00000000e+00, 1.12919500e+00], [ 0.00000000e+00, 2.10910100e+00, 1.12919500e+00], [ -4.64728200e+00, -4.30214000e-01, -9.04380000e-01], [ -4.64728200e+00, -4.30197000e-01, 9.04389000e-01], [ -4.58277600e+00, 1.10719800e+00, -1.10000000e-05], [ 4.30214000e-01, -4.64728200e+00, -9.04380000e-01], [ 4.30197000e-01, -4.64728200e+00, 9.04389000e-01], [ -1.10719800e+00, -4.58277600e+00, -1.10000000e-05], [ 4.64728200e+00, 4.30214000e-01, -9.04380000e-01], [ 4.64728200e+00, 4.30197000e-01, 9.04389000e-01], [ 4.58277600e+00, -1.10719800e+00, -1.10000000e-05], [ -4.30214000e-01, 4.64728200e+00, -9.04380000e-01], [ -4.30197000e-01, 4.64728200e+00, 9.04389000e-01], [ 1.10719800e+00, 4.58277600e+00, -1.10000000e-05]]), 'symbols': 'MoCCCCMoCCCCOOOOOOOOHHHHHHHHHHHH'}, 'MoF6_Oh': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'MoF6', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 1.86242], [ 0. , 1.86242, 0. ], [ 1.86242, 0. , 0. ], [ 0. , -1.86242, 0. ], [-1.86242, 0. , 0. ], [ 0. , 0. , -1.86242]]), 'symbols': 'MoFFFFFF'}, 'MoO2Cl2_C2v': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'MoO2Cl2', 'positions': array([[ -5.30000000e-05, 2.89511000e-01, -8.90000000e-05], [ -6.79000000e-04, 1.30748200e+00, 1.37187100e+00], [ -6.60000000e-05, 1.31175100e+00, -1.36905300e+00], [ -1.89022600e+00, -9.74177000e-01, -6.59000000e-04], [ 1.89070800e+00, -9.73666000e-01, -4.49000000e-04]]), 'symbols': 'MoOOClCl'}, 'MoOCl4_C4v': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'MoOCl4', 'positions': array([[ 0. , 0. , 0.201479], [ 0. , 2.257343, -0.346653], [ 2.257343, 0. , -0.346653], [ 0. , -2.257343, -0.346653], [-2.257343, 0. , -0.346653], [ 0. , 0. , 1.888784]]), 'symbols': 'MoClClClClO'}, 'MoOF4_C4v': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'MoOF4', 'positions': array([[ 0. , 0. , 0.051628], [ 0. , 1.801608, -0.446746], [ 1.801608, 0. , -0.446746], [ 0. , -1.801608, -0.446746], [-1.801608, 0. , -0.446746], [ 0. , 0. , 1.739313]]), 'symbols': 'MoFFFFO'}, 'N': {'charges': None, 'database': 'TM2R2007', 'magmoms': [3.0], 'name': 'N', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'N'}, 'Nb': {'charges': None, 'database': 'TM2R2007', 'magmoms': [5.0], 'name': 'Nb', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Nb'}, 'Nb(Cp)(C7H7)_Cs': {'charges': None, 'database': 'TM2R2007', 'magmoms': array([ 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]), 'name': 'H12NbC12', 'positions': array([[ -7.61000000e-04, 4.97160000e-02, 0.00000000e+00], [ -1.21916500e+00, 2.16211100e+00, 0.00000000e+00], [ -3.76513000e-01, 2.15983200e+00, 1.15998800e+00], [ 9.87289000e-01, 2.15732800e+00, 7.16911000e-01], [ 9.87289000e-01, 2.15732800e+00, -7.16911000e-01], [ -3.76513000e-01, 2.15983200e+00, -1.15998800e+00], [ -2.31099500e+00, 2.17709700e+00, 0.00000000e+00], [ -7.14132000e-01, 2.17169600e+00, 2.19826200e+00], [ 1.87022000e+00, 2.16881900e+00, 1.35918500e+00], [ 1.87022000e+00, 2.16881900e+00, -1.35918500e+00], [ -7.14132000e-01, 2.17169600e+00, -2.19826200e+00], [ -1.65137500e+00, -1.60347200e+00, 0.00000000e+00], [ -1.02908300e+00, -1.60486200e+00, -1.29113300e+00], [ -1.02908300e+00, -1.60486200e+00, 1.29113300e+00], [ 3.67735000e-01, -1.60588600e+00, -1.60975700e+00], [ 3.67735000e-01, -1.60588600e+00, 1.60975700e+00], [ 1.48818100e+00, -1.60167500e+00, -7.16533000e-01], [ 1.48818100e+00, -1.60167500e+00, 7.16533000e-01], [ -2.74042700e+00, -1.47333400e+00, 0.00000000e+00], [ -1.70776800e+00, -1.47447400e+00, -2.14284200e+00], [ -1.70776800e+00, -1.47447400e+00, 2.14284200e+00], [ 6.09993000e-01, -1.47178300e+00, -2.67114300e+00], [ 6.09993000e-01, -1.47178300e+00, 2.67114300e+00], [ 2.46895600e+00, -1.46965700e+00, -1.18939800e+00], [ 2.46895600e+00, -1.46965700e+00, 1.18939800e+00]]), 'symbols': 'NbCCCCCHHHHHCCCCCCCHHHHHHH'}, 'NbCl3Me2_C2v': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H6NbC2Cl3', 'positions': array([[ 0. , 0. , 0.070449], [-2.327624, 0. , 0.377464], [ 2.327624, 0. , 0.377464], [ 0. , 0. , -2.237446], [ 0. , 1.873567, 1.168362], [ 0. , 1.599605, 2.244212], [-0.904905, 2.465311, 0.951411], [ 0.904905, 2.465311, 0.951411], [ 0. , -1.873567, 1.168362], [ 0. , -1.599605, 2.244212], [ 0.904905, -2.465311, 0.951411], [-0.904905, -2.465311, 0.951411]]), 'symbols': 'NbClClClCHHHCHHH'}, 'NbCl5_D3h': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'NbCl5', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 2.3581 ], [ 0. , 2.302976, 0. ], [ 1.994435, -1.151488, 0. ], [-1.994435, -1.151488, 0. ], [ 0. , 0. , -2.3581 ]]), 'symbols': 'NbClClClClCl'}, 'O': {'charges': None, 'database': 'TM2R2007', 'magmoms': [2.0], 'name': 'O', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'O'}, 'P': {'charges': None, 'database': 'TM2R2007', 'magmoms': [3.0], 'name': 'P', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'P'}, 'Rh': {'charges': None, 'database': 'TM2R2007', 'magmoms': [3.0], 'name': 'Rh', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Rh'}, 'Rh(NO)(PF3)3_C3': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'P3F9RhON', 'positions': array([[ 0. , 0. , 0.570603], [ 0. , 0. , 2.39318 ], [ 0. , 0. , 3.567225], [ 0. , 2.037087, -0.382037], [ 0.296998, 3.259576, 0.615924], [ 1.034182, 2.430035, -1.545391], [-1.332043, 2.620518, -1.062219], [ 1.764169, -1.018543, -0.382037], [ 2.674377, -1.886996, 0.615924], [ 1.587381, -2.110645, -1.545391], [ 2.935457, -0.156676, -1.062219], [-1.764169, -1.018543, -0.382037], [-2.971375, -1.37258 , 0.615924], [-2.621563, -0.31939 , -1.545391], [-1.603414, -2.463843, -1.062219]]), 'symbols': 'RhNOPFFFPFFFPFFF'}, 'RhCp(C2H4)2_Cs': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H13C9Rh', 'positions': array([[ 0.002608, 0.208562, 0. ], [ 1.250238, -1.701265, 0. ], [ 0.392552, -1.692719, 1.153616], [-0.984381, -1.780687, 0.70967 ], [-0.984381, -1.780687, -0.70967 ], [ 0.392552, -1.692719, -1.153616], [ 2.340492, -1.697608, 0. ], [ 0.721247, -1.689625, 2.195084], [-1.863227, -1.812641, 1.355483], [-1.863227, -1.812641, -1.355483], [ 0.721247, -1.689625, -2.195084], [-0.732584, 1.553011, 1.485399], [ 0.697572, 1.569767, 1.48282 ], [ 0.697572, 1.569767, -1.48282 ], [-0.732584, 1.553011, -1.485399], [-1.274769, 0.997535, 2.262296], [-1.292117, 2.402834, 1.075787], [ 1.2334 , 2.432639, 1.068455], [ 1.256866, 1.03298 , 2.260459], [ 1.256866, 1.03298 , -2.260459], [ 1.2334 , 2.432639, -1.068455], [-1.292117, 2.402834, -1.075787], [-1.274769, 0.997535, -2.262296]]), 'symbols': 'RhCCCCCHHHHHCCCCHHHHHHHH'}, 'Ru': {'charges': None, 'database': 'TM2R2007', 'magmoms': [4.0], 'name': 'Ru', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ru'}, 'Ru(CO)5_D3h': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'RuC5O5', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 1.94982 , 0. ], [ 1.688593, -0.97491 , 0. ], [-1.688593, -0.97491 , 0. ], [ 0. , 0. , 1.95205 ], [ 0. , 0. , -1.95205 ], [ 0. , 3.115623, 0. ], [ 2.698209, -1.557811, 0. ], [-2.698209, -1.557811, 0. ], [ 0. , 0. , 3.113168], [ 0. , 0. , -3.113168]]), 'symbols': 'RuCCCCCOOOOO'}, 'RuCp2_D5h': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'RuC10H10', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 1.22817 , 1.826008], [-1.168059, 0.379525, 1.826008], [-0.7219 , -0.993611, 1.826008], [ 0.7219 , -0.993611, 1.826008], [ 1.168059, 0.379525, 1.826008], [ 0. , 2.31942 , 1.830821], [-2.2059 , 0.71674 , 1.830821], [-1.363321, -1.87645 , 1.830821], [ 1.363321, -1.87645 , 1.830821], [ 2.2059 , 0.71674 , 1.830821], [ 0. , 1.22817 , -1.826008], [ 1.168059, 0.379525, -1.826008], [ 0.7219 , -0.993611, -1.826008], [-0.7219 , -0.993611, -1.826008], [-1.168059, 0.379525, -1.826008], [ 0. , 2.31942 , -1.830821], [ 2.2059 , 0.71674 , -1.830821], [ 1.363321, -1.87645 , -1.830821], [-1.363321, -1.87645 , -1.830821], [-2.2059 , 0.71674 , -1.830821]]), 'symbols': 'RuCCCCCHHHHHCCCCCHHHHH'}, 'RuO4_Td': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'RuO4', 'positions': array([[ 0. , 0. , 0. ], [ 0.990035, 0.990035, 0.990035], [-0.990035, -0.990035, 0.990035], [-0.990035, 0.990035, -0.990035], [ 0.990035, -0.990035, -0.990035]]), 'symbols': 'RuOOOO'}, 'Zr': {'charges': None, 'database': 'TM2R2007', 'magmoms': [2.0], 'name': 'Zr', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Zr'}, 'Zr(BH4)4_T': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H16B4Zr', 'positions': array([[ 0. , 0. , 0. ], [-1.340193, 1.340193, 1.340193], [-0.139639, 1.316088, 1.709335], [-1.316088, 1.709335, 0.139639], [-1.709335, 0.139639, 1.316088], [-2.032757, 2.032757, 2.032757], [ 1.340193, -1.340193, 1.340193], [ 0.139639, -1.316088, 1.709335], [ 1.316088, -1.709335, 0.139639], [ 1.709335, -0.139639, 1.316088], [ 2.032757, -2.032757, 2.032757], [ 1.340193, 1.340193, -1.340193], [ 0.139639, 1.316088, -1.709335], [ 1.316088, 1.709335, -0.139639], [ 1.709335, 0.139639, -1.316088], [ 2.032757, 2.032757, -2.032757], [-1.340193, -1.340193, -1.340193], [-0.139639, -1.316088, -1.709335], [-1.316088, -1.709335, -0.139639], [-1.709335, -0.139639, -1.316088], [-2.032757, -2.032757, -2.032757]]), 'symbols': 'ZrBHHHHBHHHHBHHHHBHHHH'}, 'ZrCl4_Td': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'ZrCl4', 'positions': array([[ 0. , 0. , 0. ], [ 1.354596, 1.354596, 1.354596], [-1.354596, -1.354596, 1.354596], [-1.354596, 1.354596, -1.354596], [ 1.354596, -1.354596, -1.354596]]), 'symbols': 'ZrClClClCl'}, 'ZrCp2Cl2_C2': {'charges': None, 'database': 'TM2R2007', 'magmoms': None, 'name': 'H10C10ZrCl2', 'positions': array([[ 0. , 0. , 0.091105], [-1.859861, 0.23641 , 1.670541], [ 1.859861, -0.23641 , 1.670541], [ 0. , 2.571399, 0.194369], [ 0. , -2.571399, 0.194369], [-0.285737, 1.583932, -1.875009], [ 0.285737, -1.583932, -1.875009], [ 1.114301, 1.566551, -1.560615], [-1.114301, -1.566551, -1.560615], [-0.971753, 2.197102, -0.788523], [ 0.971753, -2.197102, -0.788523], [ 1.284778, 2.202141, -0.293068], [-1.284778, -2.202141, -0.293068], [-0.21432 , 3.026945, 1.162064], [ 0.21432 , -3.026945, 1.162064], [-0.743028, 1.199455, -2.788105], [ 0.743028, -1.199455, -2.788105], [ 1.913243, 1.17553 , -2.193712], [-1.913243, -1.17553 , -2.193712], [-2.051026, 2.330013, -0.700882], [ 2.051026, -2.330013, -0.700882], [ 2.229437, 2.326098, 0.236424], [-2.229437, -2.326098, 0.236424]]), 'symbols': 'ZrClClCCCCCCCCCCHHHHHHHHHH'}} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/tmxr200x_tm3r2008.py000066400000000000000000000544521316323560300247170ustar00rootroot00000000000000# Computer generated code! Hands off! # Generated: 2011-08-30 from numpy import array data = {'Au': {'charges': None, 'database': 'TM3R2008', 'magmoms': [1.0], 'name': 'Au', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Au'}, 'Au(CO)Cl': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'CAuOCl', 'positions': array([[ 0. , 0. , 0.02693626], [ 0. , 0. , 1.91001845], [ 0. , 0. , 3.03658711], [ 0. , 0. , -2.19566425]]), 'symbols': 'AuCOCl'}, 'Au(Me)PMe3': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'PC4AuH12', 'positions': array([[ 0. , 0. , 0. ], [ 2.06086, 0. , 0. ], [-2.29658, 0. , -0. ], [ 2.45325, 0. , -1.02015], [ 2.45325, 0.88348, 0.51008], [ 2.45325, -0.88348, 0.51008], [-3.07743, -0.43118, 1.58726], [-3.07743, 1.5902 , -0.42022], [-3.07743, -1.15902, -1.16704], [-4.16653, -0.41194, 1.5165 ], [-4.16653, 1.51929, -0.4015 ], [-4.16653, -1.10735, -1.115 ], [-2.75322, -1.42683, 1.88959], [-2.75322, 2.34985, 0.29087], [-2.75322, -0.92302, -2.18046], [-2.75319, 0.27474, 2.35171], [-2.75319, 1.89928, -1.41378], [-2.75319, -2.17401, -0.93793]]), 'symbols': 'AuCPHHHCCCHHHHHHHHH'}, 'B': {'charges': None, 'database': 'TM3R2008', 'magmoms': [1.0], 'name': 'B', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'B'}, 'C': {'charges': None, 'database': 'TM3R2008', 'magmoms': [2.0], 'name': 'C', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'C'}, 'Cl': {'charges': None, 'database': 'TM3R2008', 'magmoms': [1.0], 'name': 'Cl', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Cl'}, 'F': {'charges': None, 'database': 'TM3R2008', 'magmoms': [1.0], 'name': 'F', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'F'}, 'F4Re-ReF4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'Re2F8', 'positions': array([[ 0. , 0. , 1.11278439], [ 0. , 0. , -1.11278439], [-0.14359931, 1.80883587, 1.43739094], [-1.80883587, -0.14359931, 1.43739094], [ 0.14359931, -1.80883587, 1.43739094], [ 1.80883587, 0.14359931, 1.43739094], [ 0.14359931, 1.80883587, -1.43739094], [ 1.80883587, -0.14359931, -1.43739094], [-0.14359931, -1.80883587, -1.43739094], [-1.80883587, 0.14359931, -1.43739094]]), 'symbols': 'ReReFFFFFFFF'}, 'H': {'charges': None, 'database': 'TM3R2008', 'magmoms': [1.0], 'name': 'H', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'H'}, 'Hf': {'charges': None, 'database': 'TM3R2008', 'magmoms': [2.0], 'name': 'Hf', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Hf'}, 'Hf(BH4)4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H16B4Hf', 'positions': array([[ 0. , 0. , 0. ], [-1.32690136, 1.32690136, 1.32690136], [-0.13270994, 1.30489363, 1.68117993], [-1.30489363, 1.68117993, 0.13270994], [-1.68117993, 0.13270994, 1.30489363], [-2.01165285, 2.01165285, 2.01165285], [ 1.32690136, -1.32690136, 1.32690136], [ 0.13270994, -1.30489363, 1.68117993], [ 1.30489363, -1.68117993, 0.13270994], [ 1.68117993, -0.13270994, 1.30489363], [ 2.01165285, -2.01165285, 2.01165285], [ 1.32690136, 1.32690136, -1.32690136], [ 0.13270994, 1.30489363, -1.68117993], [ 1.30489363, 1.68117993, -0.13270994], [ 1.68117993, 0.13270994, -1.30489363], [ 2.01165285, 2.01165285, -2.01165285], [-1.32690136, -1.32690136, -1.32690136], [-0.13270994, -1.30489363, -1.68117993], [-1.30489363, -1.68117993, -0.13270994], [-1.68117993, -0.13270994, -1.30489363], [-2.01165285, -2.01165285, -2.01165285]]), 'symbols': 'HfBHHHHBHHHHBHHHHBHHHH'}, 'HfCl4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'HfCl4', 'positions': array([[ 0. , 0. , 0. ], [ 1.33936969, 1.33936969, 1.33936969], [-1.33936969, -1.33936969, 1.33936969], [-1.33936969, 1.33936969, -1.33936969], [ 1.33936969, -1.33936969, -1.33936969]]), 'symbols': 'HfClClClCl'}, 'Hg': {'charges': None, 'database': 'TM3R2008', 'magmoms': [0.0], 'name': 'Hg', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Hg'}, 'Hg(CF3)2': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'C2HgF6', 'positions': array([[ 0.00000000e+00, 3.00000000e-10, 0.00000000e+00], [ 0.00000000e+00, 3.00000000e-10, 2.12403758e+00], [ -2.64417504e-01, 1.21640215e+00, 2.62889481e+00], [ -9.21226414e-01, -8.37193352e-01, 2.62889481e+00], [ 1.18564392e+00, -3.79208800e-01, 2.62889481e+00], [ 0.00000000e+00, 3.00000000e-10, -2.12403758e+00], [ 9.21226415e-01, -8.37193352e-01, -2.62889481e+00], [ 2.64417503e-01, 1.21640215e+00, -2.62889481e+00], [ -1.18564392e+00, -3.79208802e-01, -2.62889481e+00]]), 'symbols': 'HgCFFFCFFF'}, 'Ir': {'charges': None, 'database': 'TM3R2008', 'magmoms': [3.0], 'name': 'Ir', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ir'}, 'IrF6': {'charges': None, 'database': 'TM3R2008', 'magmoms': array([ 3., 0., 0., 0., 0., 0., 0.]), 'name': 'IrF6', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 1.83277076], [ 0. , 0. , -1.83277076], [ 0. , 1.83277076, 0. ], [ 0. , -1.83277076, 0. ], [ 1.83277076, 0. , 0. ], [-1.83277076, 0. , 0. ]]), 'symbols': 'IrFFFFFF'}, 'MeHg(CN)': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H3C2HgN', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 1.54247531e-01], [ 0.00000000e+00, 0.00000000e+00, 2.21583263e+00], [ -2.00000000e-10, 1.02349865e+00, 2.58822736e+00], [ -8.86375827e-01, -5.11749323e-01, 2.58822736e+00], [ 8.86375827e-01, -5.11749322e-01, 2.58822736e+00], [ 0.00000000e+00, 0.00000000e+00, -1.89056634e+00], [ 0.00000000e+00, 0.00000000e+00, -3.04316792e+00]]), 'symbols': 'HgCHHHCN'}, 'MeHg(Cl)': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H3CHgCl', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 1.97573226e-01], [ 0.00000000e+00, 0.00000000e+00, 2.26177241e+00], [ -4.00000000e-10, 1.02674631e+00, 2.62218302e+00], [ -8.89188388e-01, -5.13373156e-01, 2.62218302e+00], [ 8.89188389e-01, -5.13373155e-01, 2.62218302e+00], [ 0.00000000e+00, 0.00000000e+00, -2.10026991e+00]]), 'symbols': 'HgCHHHCl'}, 'N': {'charges': None, 'database': 'TM3R2008', 'magmoms': [3.0], 'name': 'N', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'N'}, 'O': {'charges': None, 'database': 'TM3R2008', 'magmoms': [2.0], 'name': 'O', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'O'}, 'Os': {'charges': None, 'database': 'TM3R2008', 'magmoms': [4.0], 'name': 'Os', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Os'}, 'Os(CO)4(C2H4)': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H4C6OsO4', 'positions': array([[ 0. , 0. , 0.03274136], [ 0. , 0.71587047, 2.13161279], [ 0. , -0.71587047, 2.13161279], [ 1.94852607, 0. , 0.16179664], [-1.94852607, 0. , 0.16179664], [ 0. , 1.54176948, -1.14066325], [ 0. , -1.54176948, -1.14066325], [ 3.07625455, 0. , 0.28637417], [-3.07625455, 0. , 0.28637417], [ 0. , 2.45341344, -1.82437728], [ 0. , -2.45341344, -1.82437728], [-0.90326741, 1.24510061, 2.40864957], [ 0.90326741, 1.24510061, 2.40864957], [ 0.90326741, -1.24510061, 2.40864957], [-0.90326741, -1.24510061, 2.40864957]]), 'symbols': 'OsCCCCCCOOOOHHHH'}, 'Os(CO)5': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'C5OsO5', 'positions': array([[ 0.00000000e+00, 2.00000000e-10, 0.00000000e+00], [ -2.20000000e-09, 1.94754636e+00, 0.00000000e+00], [ 1.68662462e+00, -9.73773176e-01, 0.00000000e+00], [ -1.68662462e+00, -9.73773180e-01, 0.00000000e+00], [ 0.00000000e+00, 2.00000000e-10, 1.96213847e+00], [ 0.00000000e+00, 2.00000000e-10, -1.96213847e+00], [ -3.40000000e-09, 3.08702941e+00, 0.00000000e+00], [ 2.67344590e+00, -1.54351470e+00, 0.00000000e+00], [ -2.67344589e+00, -1.54351471e+00, 0.00000000e+00], [ 0.00000000e+00, 2.00000000e-10, 3.09536014e+00], [ 0.00000000e+00, 2.00000000e-10, -3.09536014e+00]]), 'symbols': 'OsCCCCCOOOOO'}, 'OsO4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'OsO4', 'positions': array([[ 0. , 0. , 0. ], [ 0.97412275, 0.97412275, 0.97412275], [-0.97412275, -0.97412275, 0.97412275], [-0.97412275, 0.97412275, -0.97412275], [ 0.97412275, -0.97412275, -0.97412275]]), 'symbols': 'OsOOOO'}, 'OsOCl4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'OsOCl4', 'positions': array([[ 0. , 0. , 0.24014979], [ 0. , 0. , 1.87351269], [ 0. , 2.1415415 , -0.47039842], [ 2.1415415 , 0. , -0.47039842], [ 0. , -2.1415415 , -0.47039842], [-2.1415415 , 0. , -0.47039842]]), 'symbols': 'OsOClClClCl'}, 'P': {'charges': None, 'database': 'TM3R2008', 'magmoms': [3.0], 'name': 'P', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'P'}, 'Pt': {'charges': None, 'database': 'TM3R2008', 'magmoms': [2.0], 'name': 'Pt', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Pt'}, 'Pt(PF3)4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'P4PtF12', 'positions': array([[ 2.00000000e-10, 0.00000000e+00, 1.10000000e-09], [ -1.70000000e-09, -3.80000000e-09, 2.24208410e+00], [ 2.11385716e+00, -7.00000000e-10, -7.47361364e-01], [ -1.05692858e+00, -1.83065400e+00, -7.47361370e-01], [ -1.05692858e+00, 1.83065401e+00, -7.47361364e-01], [ 1.35617332e+00, -6.40000000e-09, 3.00249051e+00], [ -6.78086660e-01, 1.17448054e+00, 3.00249051e+00], [ -6.78086663e-01, -1.17448055e+00, 3.00249051e+00], [ 3.28283297e+00, -3.60000000e-09, 2.77782301e-01], [ 2.60474631e+00, -1.17448055e+00, -1.64013640e+00], [ 2.60474632e+00, 1.17448055e+00, -1.64013640e+00], [ -2.31950315e+00, -1.66853620e+00, -1.64013641e+00], [ -2.85243169e-01, -2.84301675e+00, -1.64013641e+00], [ -1.64141649e+00, -2.84301675e+00, 2.77782292e-01], [ -2.31950314e+00, 1.66853621e+00, -1.64013640e+00], [ -1.64141648e+00, 2.84301675e+00, 2.77782302e-01], [ -2.85243163e-01, 2.84301675e+00, -1.64013640e+00]]), 'symbols': 'PtPPPPFFFFFFFFFFFF'}, 'Re': {'charges': None, 'database': 'TM3R2008', 'magmoms': [5.0], 'name': 'Re', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Re'}, 'ReO2Me(acetylene)': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'ReC3O2H5', 'positions': array([[ 0.10832716, -0.11038995, 0. ], [-1.9345267 , -0.6255945 , 0. ], [ 0.61427212, -0.77529932, 1.47696525], [ 0.61427212, -0.77529932, -1.47696525], [-0.6740278 , 1.79763693, 0. ], [-2.43249081, -0.23629049, -0.88600926], [-2.43249081, -0.23629049, 0.88600926], [-1.97895971, -1.71693171, 0. ], [ 0.60922597, 1.85993289, 0. ], [-1.58166249, 2.38020766, 0. ], [ 1.48166873, 2.4941834 , 0. ]]), 'symbols': 'ReCOOCHHHCHH'}, 'ReO3Me': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'ReCO3H3', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 6.81648865e-02], [ 0.00000000e+00, 0.00000000e+00, -2.00552344e+00], [ -7.00000000e-10, 1.62640415e+00, 5.34727627e-01], [ -1.40850731e+00, -8.13202073e-01, 5.34727627e-01], [ 1.40850731e+00, -8.13202072e-01, 5.34727627e-01], [ 5.00000000e-10, -1.03024896e+00, -2.36255251e+00], [ 8.92221775e-01, 5.15124483e-01, -2.36255251e+00], [ -8.92221776e-01, 5.15124482e-01, -2.36255251e+00]]), 'symbols': 'ReCOOOHHH'}, 'ReOCl4': {'charges': None, 'database': 'TM3R2008', 'magmoms': array([ 1., 0., 0., 0., 0., 0.]), 'name': 'ReOCl4', 'positions': array([[ 0. , 0. , 0.20420213], [ 0. , 0. , 1.8494153 ], [ 0. , 2.18131112, -0.42456542], [ 2.18131112, 0. , -0.42456542], [ 0. , -2.18131112, -0.42456542], [-2.18131112, 0. , -0.42456542]]), 'symbols': 'ReOClClClCl'}, 'S': {'charges': None, 'database': 'TM3R2008', 'magmoms': [2.0], 'name': 'S', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'S'}, 'Ta': {'charges': None, 'database': 'TM3R2008', 'magmoms': [3.0], 'name': 'Ta', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'Ta'}, 'TaCl5': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'Cl5Ta', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 2.32221776e+00], [ 2.00000000e-10, 2.27473923e+00, 0.00000000e+00], [ 1.96998196e+00, -1.13736961e+00, 0.00000000e+00], [ -1.96998196e+00, -1.13736961e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, -2.32221776e+00]]), 'symbols': 'TaClClClClCl'}, 'W': {'charges': None, 'database': 'TM3R2008', 'magmoms': [4.0], 'name': 'W', 'positions': array([[ 0., 0., 0.]]), 'symbols': 'W'}, 'W(CO)6': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'C6O6W', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 2.06220361], [ 0. , 2.06220361, 0. ], [ 0. , 0. , -2.06220361], [ 0. , -2.06220361, 0. ], [ 2.06220361, 0. , 0. ], [-2.06220361, 0. , 0. ], [ 0. , 0. , 3.19881782], [ 0. , 3.19881782, 0. ], [ 0. , 0. , -3.19881782], [ 0. , -3.19881782, 0. ], [ 3.19881782, 0. , 0. ], [-3.19881782, 0. , 0. ]]), 'symbols': 'WCCCCCCOOOOOO'}, 'WCp2H2': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H12C10W', 'positions': array([[ 0.00000000e+00, 0.00000000e+00, 2.00584842e-01], [ -2.91900900e-04, 2.29699115e+00, 6.65595016e-01], [ 2.91900900e-04, -2.29699115e+00, 6.65595016e-01], [ 4.77456255e-01, 1.45921150e+00, -1.41346899e+00], [ -4.77456255e-01, -1.45921150e+00, -1.41346899e+00], [ 1.65479029e+00, 1.33025115e+00, -6.07252372e-01], [ -1.65479029e+00, -1.33025115e+00, -6.07252372e-01], [ -5.58127908e-01, 2.04663917e+00, -6.16468331e-01], [ 5.58127908e-01, -2.04663917e+00, -6.16468331e-01], [ 1.33889056e+00, 1.86290544e+00, 6.71492660e-01], [ -1.33889056e+00, -1.86290544e+00, 6.71492660e-01], [ -5.25783914e-01, 2.71829365e+00, 1.50595743e+00], [ 5.25783914e-01, -2.71829365e+00, 1.50595743e+00], [ 3.99007679e-01, 1.20429583e+00, -2.45717096e+00], [ -3.99007679e-01, -1.20429583e+00, -2.45717096e+00], [ 2.62045961e+00, 9.73610957e-01, -9.23208679e-01], [ -2.62045961e+00, -9.73610957e-01, -9.23208679e-01], [ -1.54767221e+00, 2.32127087e+00, -9.40603479e-01], [ 1.54767221e+00, -2.32127087e+00, -9.40603479e-01], [ 2.00491669e+00, 1.89866806e+00, 1.51703806e+00], [ -2.00491669e+00, -1.89866806e+00, 1.51703806e+00], [ -1.01499724e+00, 3.30079122e-01, 1.52525947e+00], [ 1.01499724e+00, -3.30079122e-01, 1.52525947e+00]]), 'symbols': 'WCCCCCCCCCCHHHHHHHHHHHH'}, 'WF6': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'WF6', 'positions': array([[ 0. , 0. , 0. ], [ 0. , 0. , 1.83355384], [ 0. , 1.83355384, 0. ], [ 1.83355384, 0. , 0. ], [ 0. , -1.83355384, 0. ], [-1.83355384, 0. , 0. ], [ 0. , 0. , -1.83355384]]), 'symbols': 'WFFFFFF'}, 'WMe6': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H18C6W', 'positions': array([[ 1.00000000e-10, 0.00000000e+00, 7.65893894e-02], [ -5.45968352e-01, 1.72450779e+00, 1.19698965e+00], [ 1.76645173e+00, -3.89431434e-01, 1.19698965e+00], [ -1.22048338e+00, -1.33507636e+00, 1.19698965e+00], [ -3.94222194e-01, 1.50121675e+00, -1.45166875e+00], [ 1.49720294e+00, -4.09201939e-01, -1.45166875e+00], [ -1.10298074e+00, -1.09201481e+00, -1.45166875e+00], [ -3.63081775e-01, 1.44094933e+00, 2.24204871e+00], [ 1.42943961e+00, -4.06036621e-01, 2.24204871e+00], [ -1.06635783e+00, -1.03491270e+00, 2.24204871e+00], [ -3.59966937e-01, 1.16646310e+00, -2.48466456e+00], [ 1.19017014e+00, -2.71491036e-01, -2.48466456e+00], [ -8.30203206e-01, -8.94972061e-01, -2.48466456e+00], [ 1.98748912e-02, 2.63070127e+00, 9.82230750e-01], [ 2.26831669e+00, -1.33256280e+00, 9.82230750e-01], [ -2.28819158e+00, -1.29813848e+00, 9.82230750e-01], [ -1.36729179e+00, 1.96289567e+00, -1.26126613e+00], [ 2.38356341e+00, 2.02661592e-01, -1.26126613e+00], [ -1.01627162e+00, -2.16555726e+00, -1.26126613e+00], [ -1.61064099e+00, 1.94736732e+00, 1.09219183e+00], [ 2.49179007e+00, 4.21172352e-01, 1.09219183e+00], [ -8.81149078e-01, -2.36853968e+00, 1.09219183e+00], [ 3.70369014e-01, 2.27366111e+00, -1.31090510e+00], [ 1.78386377e+00, -1.45757953e+00, -1.31090510e+00], [ -2.15423278e+00, -8.16081579e-01, -1.31090510e+00]]), 'symbols': 'WCCCCCCHHHHHHHHHHHHHHHHHH'}, 'WOF4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'OWF4', 'positions': array([[ 0. , 0. , 0.03766786], [ 0. , 0. , 1.70513688], [ 0. , 1.78103536, -0.44897456], [ 1.78103536, 0. , -0.44897456], [ 0. , -1.78103536, -0.44897456], [-1.78103536, 0. , -0.44897456]]), 'symbols': 'WOFFFF'}, 'WSCl4': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'SWCl4', 'positions': array([[ 0. , 0. , 0.04250424], [ 0. , 0. , 2.12606446], [ 0. , 2.21369028, -0.53145183], [ 2.21369028, 0. , -0.53145183], [ 0. , -2.21369028, -0.53145183], [-2.21369028, 0. , -0.53145183]]), 'symbols': 'WSClClClCl'}, 'trans-TaF2Me3': {'charges': None, 'database': 'TM3R2008', 'magmoms': None, 'name': 'H9C3F2Ta', 'positions': array([[ 0.00000000e+00, 2.00000000e-10, 0.00000000e+00], [ 0.00000000e+00, 2.00000000e-10, 1.88678026e+00], [ 1.08476960e-03, 2.14496447e+00, 0.00000000e+00], [ 1.85705133e+00, -1.07342167e+00, 0.00000000e+00], [ -1.85813610e+00, -1.07154280e+00, 0.00000000e+00], [ 0.00000000e+00, 2.00000000e-10, -1.88678026e+00], [ 1.04343657e+00, 2.48691538e+00, 0.00000000e+00], [ 1.63201361e+00, -2.14710027e+00, 0.00000000e+00], [ -2.67545018e+00, -3.39815115e-01, 0.00000000e+00], [ -4.84880162e-01, 2.54187313e+00, -8.93158317e-01], [ 2.44376678e+00, -8.51018024e-01, -8.93158317e-01], [ -1.95888662e+00, -1.69085510e+00, -8.93158317e-01], [ -4.84880162e-01, 2.54187313e+00, 8.93158317e-01], [ 2.44376678e+00, -8.51018024e-01, 8.93158317e-01], [ -1.95888662e+00, -1.69085510e+00, 8.93158317e-01]]), 'symbols': 'TaFCCCFHHHHHHHHH'}} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/data/vdw.py000066400000000000000000000057361316323560300226350ustar00rootroot00000000000000# encoding: utf-8 """ Van der Waals radii in [A] taken from http://www.webelements.com/periodicity/van_der_waals_radius/ and the references given there. Additional source 5 from http://de.wikipedia.org/wiki/Van-der-Waals-Radius 1. A. Bondi, J. Phys. Chem., 1964, 68, 441. 2. L. Pauling, The Nature of the Chemical Bond, Cornell University Press, USA, 1945. 3. J.E. Huheey, E.A. Keiter, and R.L. Keiter in Inorganic Chemistry Principles of Structure and Reactivity, 4th edition, HarperCollins, New York, USA, 1993.W.W. Porterfield in Inorganic chemistry, a unified approach, Addison Wesley Publishing Co., Reading Massachusetts, USA, 1984. 4. A.M. James and M.P. Lord in Macmillan's Chemical and Physical Data, Macmillan, London, UK, 1992. 5. Manjeera Mantina, Adam C. Chamberlin, Rosendo Valero, Christopher J. Cramer, Donald G. Truhlar Consistent van der Waals Radii for the Whole Main Group. In J. Phys. Chem. A. 2009, 113, 5806–5812, doi:10.1021/jp8111556 """ import numpy as np vdw_radii = np.array([ np.nan, # X 1.20, # H 1.40, # He [1] 1.82, # Li [1] 1.53, # Be [5] 1.92, # B [5] 1.70, # C [1] 1.55, # N [1] 1.52, # O [1] 1.47, # F [1] 1.54, # Ne [1] 2.27, # Na [1] 1.73, # Mg [1] 1.84, # Al [5] 2.10, # Si [1] 1.80, # P [1] 1.80, # S [1] 1.75, # Cl [1] 1.88, # Ar [1] 2.75, # K [1] 2.31, # Ca [5] np.nan, # Sc np.nan, # Ti np.nan, # V np.nan, # Cr np.nan, # Mn np.nan, # Fe np.nan, # Co 1.63, # Ni [1] 1.40, # Cu [1] 1.39, # Zn [1] 1.87, # Ga [1] 2.11, # Ge [5] 1.85, # As [1] 1.90, # Se [1] 1.85, # Br [1] 2.02, # Kr [1] 3.03, # Rb [5] 2.49, # Sr [5] np.nan, # Y np.nan, # Zr np.nan, # Nb np.nan, # Mo np.nan, # Tc np.nan, # Ru np.nan, # Rh 1.63, # Pd [1] 1.72, # Ag [1] 1.58, # Cd [1] 1.93, # In [1] 2.17, # Sn [1] 2.06, # Sb [5] 2.06, # Te [1] 1.98, # I [1] 2.16, # Xe [1] 3.43, # Cs [5] 2.49, # Ba [5] np.nan, # La np.nan, # Ce np.nan, # Pr np.nan, # Nd np.nan, # Pm np.nan, # Sm np.nan, # Eu np.nan, # Gd np.nan, # Tb np.nan, # Dy np.nan, # Ho np.nan, # Er np.nan, # Tm np.nan, # Yb np.nan, # Lu np.nan, # Hf np.nan, # Ta np.nan, # W np.nan, # Re np.nan, # Os np.nan, # Ir 1.75, # Pt [1] 1.66, # Au [1] 1.55, # Hg [1] 1.96, # Tl [1] 2.02, # Pb [1] 2.07, # Bi [5] 1.97, # Po [5] 2.02, # At [5] 2.20, # Rn [5] 3.48, # Fr [5] 2.83, # Ra [5] np.nan, # Ac np.nan, # Th np.nan, # Pa 1.86, # U [1] np.nan, # Np np.nan, # Pu np.nan, # Am np.nan, # Cm np.nan, # Bk np.nan, # Cf np.nan, # Es np.nan, # Fm np.nan, # Md np.nan, # No np.nan]) # Lr vdw_radii.flags.writeable = False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/000077500000000000000000000000001316323560300211245ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/__init__.py000066400000000000000000000000661316323560300232370ustar00rootroot00000000000000from ase.db.core import connect __all__ = ['connect'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/__main__.py000077500000000000000000000000431316323560300232160ustar00rootroot00000000000000from ase.db.cli import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/app.py000066400000000000000000000305101316323560300222550ustar00rootroot00000000000000"""WSGI Flask-app for browsing a database. You can launch Flask's local webserver like this:: $ ase db abc.db -w For a real webserver, you need to set the $ASE_DB_APP_CONFIG environment variable to point to a configuration file like this:: ASE_DB_NAMES = ['/path/to/db-file/project1.db', 'postgresql://user:pw@localhost:5432/project2'] ASE_DB_HOMEPAGE = 'HOME ::' Start with something like:: twistd web --wsgi=ase.db.app.app --port=8000 """ from __future__ import print_function import collections import functools import io import os import os.path as op import re import sys import tempfile from flask import Flask, render_template, request, send_from_directory, flash try: import matplotlib matplotlib.use('Agg', warn=False) except ImportError: pass import ase.db import ase.db.web from ase.db.plot import atoms2png from ase.db.summary import Summary from ase.db.table import Table, all_columns from ase.visualize import view from ase import Atoms from ase.calculators.calculator import kptdensity2monkhorstpack from ase.utils import FileNotFoundError # Every client-connetions gets one of these tuples: Connection = collections.namedtuple( 'Connection', ['project', # project name 'query', # query string 'nrows', # number of rows matched 'page', # page number 'columns', # what columns to show 'sort', # what column to sort after 'limit']) # number of rows per page app = Flask(__name__) app.secret_key = 'asdf' databases = {} home = '' # link to homepage open_ase_gui = True # click image to open ASE's GUI # List of (project-name, title) tuples (will be filled in at run-time): projects = [] def connect_databases(uris): python_configs = [] dbs = [] for uri in uris: if uri.endswith('.py'): python_configs.append(uri) continue if uri.startswith('postgresql://'): project = uri.rsplit('/', 1)[1] else: project = uri.rsplit('/', 1)[-1].split('.')[0] db = ase.db.connect(uri) db.python = None databases[project] = db dbs.append(db) for py, db in zip(python_configs, dbs): db.python = py next_con_id = 1 connections = {} tmpdir = tempfile.mkdtemp() # used to cache png-files if 'ASE_DB_APP_CONFIG' in os.environ: app.config.from_envvar('ASE_DB_APP_CONFIG') connect_databases(app.config['ASE_DB_NAMES']) home = app.config['ASE_DB_HOMEPAGE'] open_ase_gui = False try: os.unlink('tmpdir') except FileNotFoundError: pass os.symlink(tmpdir, 'tmpdir') # Find numbers in formulas so that we can convert H2O to H2O: SUBSCRIPT = re.compile(r'(\d+)') def database(): return databases.get(request.args.get('project', 'default')) def prefix(): if 'project' in request.args: return request.args['project'] + '-' return '' errors = 0 def error(e): """Write traceback and other stuff to 00-99.error files.""" global errors import traceback x = request.args.get('x', '0') try: cid = int(x) except ValueError: cid = 0 con = connections.get(cid) with open(op.join(tmpdir, '{:02}.error'.format(errors % 100)), 'w') as fd: print(repr((errors, con, e, request)), file=fd) if hasattr(e, '__traceback__'): traceback.print_tb(e.__traceback__, file=fd) errors += 1 raise e app.register_error_handler(Exception, error) @app.route('/') def index(): global next_con_id if not projects: # First time: initialize list of projects for proj, db in sorted(databases.items()): meta = ase.db.web.process_metadata(db) db.meta = meta projects.append((proj, db.meta.get('title', proj))) con_id = int(request.args.get('x', '0')) if con_id in connections: project, query, nrows, page, columns, sort, limit = connections[con_id] newproject = request.args.get('project') if newproject is not None and newproject != project: con_id = 0 if con_id not in connections: # Give this connetion a new id: con_id = next_con_id next_con_id += 1 project = request.args.get('project', projects[0][0]) query = ['', {}, ''] nrows = None page = 0 columns = None sort = 'id' limit = 25 db = databases[project] meta = db.meta if columns is None: columns = meta.get('default_columns')[:] or list(all_columns) if 'sort' in request.args: column = request.args['sort'] if column == sort: sort = '-' + column elif '-' + column == sort: sort = 'id' else: sort = column page = 0 elif 'query' in request.args: dct = {} query = [request.args['query']] q = query[0] for special in meta['special_keys']: kind, key = special[:2] if kind == 'SELECT': value = request.args['select_' + key] dct[key] = value if value: q += ',{}={}'.format(key, value) elif kind == 'BOOL': value = request.args['bool_' + key] dct[key] = value if value: q += ',{}={}'.format(key, value) else: v1 = request.args['from_' + key] v2 = request.args['to_' + key] var = request.args['range_' + key] dct[key] = (v1, v2, var) if v1 or v2: var = request.args['range_' + key] if v1: q += ',{}>={}'.format(var, v1) if v2: q += ',{}<={}'.format(var, v2) q = q.lstrip(',') query += [dct, q] sort = 'id' page = 0 nrows = None elif 'limit' in request.args: limit = int(request.args['limit']) page = 0 elif 'page' in request.args: page = int(request.args['page']) if 'toggle' in request.args: column = request.args['toggle'] if column == 'reset': columns = meta.get('default_columns')[:] or list(all_columns) else: if column in columns: columns.remove(column) if column == sort.lstrip('-'): sort = 'id' page = 0 else: columns.append(column) okquery = query if nrows is None: try: nrows = db.count(query[2]) except (ValueError, KeyError) as e: flash(', '.join(['Bad query'] + list(e.args))) okquery = ('', {}, 'id=0') # this will return no rows nrows = 0 table = Table(db) table.select(okquery[2], columns, sort, limit, offset=page * limit) con = Connection(project, query, nrows, page, columns, sort, limit) connections[con_id] = con if len(connections) > 1000: # Forget old connections: for cid in sorted(connections)[:200]: del connections[cid] table.format(SUBSCRIPT) addcolumns = [column for column in all_columns + table.keys if column not in table.columns] return render_template('table.html', project=project, projects=projects, t=table, md=meta, con=con, x=con_id, home=home, pages=pages(page, nrows, limit), nrows=nrows, addcolumns=addcolumns, row1=page * limit + 1, row2=min((page + 1) * limit, nrows)) @app.route('/image/') def image(name): id = int(name[:-4]) name = prefix() + name path = op.join(tmpdir, name) if not op.isfile(path): db = database() atoms = db.get_atoms(id) atoms2png(atoms, path) return send_from_directory(tmpdir, name) @app.route('/cif/') def cif(name): id = int(name[:-4]) name = prefix() + name path = op.join(tmpdir, name) if not op.isfile(path): db = database() atoms = db.get_atoms(id) atoms.write(path) return send_from_directory(tmpdir, name) @app.route('/plot/') def plot(png): png = prefix() + png return send_from_directory(tmpdir, png) @app.route('/gui/') def gui(id): if open_ase_gui: db = database() atoms = db.get_atoms(id) view(atoms) return '', 204, [] @app.route('/id/') def summary(id): db = database() if db is None: return '' if not hasattr(db, 'meta'): db.meta = ase.db.web.process_metadata(db) prfx = prefix() + str(id) + '-' row = db.get(id) s = Summary(row, db.meta, SUBSCRIPT, prfx, tmpdir) atoms = Atoms(cell=row.cell, pbc=row.pbc) n1, n2, n3 = kptdensity2monkhorstpack(atoms, kptdensity=1.8, even=False) return render_template('summary.html', project=request.args.get('project', 'default'), projects=projects, s=s, n1=n1, n2=n2, n3=n3, home=home, md=db.meta, open_ase_gui=open_ase_gui) def tofile(project, query, type, limit=0): fd, name = tempfile.mkstemp(suffix='.' + type) con = ase.db.connect(name, use_lock_file=False) db = databases[project] for row in db.select(query, limit=limit): con.write(row, data=row.get('data', {}), **row.get('key_value_pairs', {})) os.close(fd) data = open(name, 'rb').read() os.unlink(name) return data def download(f): @functools.wraps(f) def ff(*args, **kwargs): text, name = f(*args, **kwargs) headers = [('Content-Disposition', 'attachment; filename="{0}"'.format(name)), ] # ('Content-type', 'application/sqlite3')] return text, 200, headers return ff @app.route('/xyz/') @download def xyz(id): fd = io.StringIO() from ase.io.xyz import write_xyz db = database() write_xyz(fd, db.get_atoms(id)) data = fd.getvalue() return data, '{0}.xyz'.format(id) @app.route('/json') @download def jsonall(): con_id = int(request.args['x']) con = connections[con_id] data = tofile(con.project, con.query[2], 'json', con.limit) return data, 'selection.json' @app.route('/json/') @download def json1(id): project = request.args.get('project', 'default') data = tofile(project, id, 'json') return data, '{0}.json'.format(id) @app.route('/sqlite') @download def sqliteall(): con_id = int(request.args['x']) con = connections[con_id] data = tofile(con.project, con.query[2], 'db', con.limit) return data, 'selection.db' @app.route('/sqlite/') @download def sqlite1(id): project = request.args.get('project', 'default') data = tofile(project, id, 'db') return data, '{0}.db'.format(id) @app.route('/robots.txt') def robots(): return ('User-agent: *\nDisallow: /\n\n' + 'User-agent: Baiduspider\nDisallow: /\n', 200) def pages(page, nrows, limit): """Helper function for pagination stuff.""" npages = (nrows + limit - 1) // limit p1 = min(5, npages) p2 = max(page - 4, p1) p3 = min(page + 5, npages) p4 = max(npages - 4, p3) pgs = list(range(p1)) if p1 < p2: pgs.append(-1) pgs += list(range(p2, p3)) if p3 < p4: pgs.append(-1) pgs += list(range(p4, npages)) pages = [(page - 1, 'previous')] for p in pgs: if p == -1: pages.append((-1, '...')) elif p == page: pages.append((-1, str(p + 1))) else: pages.append((p, str(p + 1))) nxt = min(page + 1, npages - 1) if nxt == page: nxt = -1 pages.append((nxt, 'next')) return pages if __name__ == '__main__': if len(sys.argv) > 1: connect_databases(sys.argv[1:]) open_ase_gui = False app.run(host='0.0.0.0', debug=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/cli.py000066400000000000000000000263111316323560300222500ustar00rootroot00000000000000from __future__ import print_function import collections import json import os import sys from random import randint import ase.io from ase.db import connect from ase.db.core import convert_str_to_int_float_or_str from ase.db.summary import Summary from ase.db.table import Table, all_columns from ase.db.web import process_metadata from ase.calculators.calculator import get_calculator from ase.utils import plural, basestring try: input = raw_input # Python 2+3 compatibility except NameError: pass class CLICommand: short_description = 'Manipulate and query ASE database' description = """Selection is a comma-separated list of selections where each selection is of the type "ID", "key" or "key=value". Instead of "=", one can also use "<", "<=", ">=", ">" and "!=" (these must be protected from the shell by using quotes). Special keys: id, user, calculator, age, natoms, energy, magmom, and charge. Chemical symbols can also be used to select number of specific atomic species (H, He, Li, ...). Selection examples: 'calculator=nwchem', 'age<1d', 'natoms=1', 'user=alice', '2.2=10'""" @staticmethod def add_arguments(parser): add = parser.add_argument add('database') add('query', nargs='*') add('-v', '--verbose', action='store_true') add('-q', '--quiet', action='store_true') add('-n', '--count', action='store_true', help='Count number of selected rows.') add('-l', '--long', action='store_true', help='Long description of selected row') add('-i', '--insert-into', metavar='db-name', help='Insert selected rows into another database.') add('-a', '--add-from-file', metavar='filename', help='Add results from file.') add('-k', '--add-key-value-pairs', metavar='key1=val1,key2=val2,...', help='Add key-value pairs to selected rows. Values must ' 'be numbers or strings and keys must follow the same rules as ' 'keywords.') add('-L', '--limit', type=int, default=20, metavar='N', help='Show only first N rows (default is 20 rows). Use --limit=0 ' 'to show all.') add('--offset', type=int, default=0, metavar='N', help='Skip first N rows. By default, no rows are skipped') add('--delete', action='store_true', help='Delete selected rows.') add('--delete-keys', metavar='key1,key2,...', help='Delete keys for selected rows.') add('-y', '--yes', action='store_true', help='Say yes.') add('--explain', action='store_true', help='Explain query plan.') add('-c', '--columns', metavar='col1,col2,...', help='Specify columns to show. Precede the column specification ' 'with a "+" in order to add columns to the default set of ' 'columns. Precede by a "-" to remove columns. Use "++" for all.') add('-s', '--sort', metavar='column', default='id', help='Sort rows using "column". Use "column-" for a descending ' 'sort. Default is to sort after id.') add('--cut', type=int, default=35, help='Cut keywords and key-value ' 'columns after CUT characters. Use --cut=0 to disable cutting. ' 'Default is 35 characters') add('-p', '--plot', metavar='x,y1,y2,...', help='Example: "-p x,y": plot y row against x row. Use ' '"-p a:x,y" to make a plot for each value of a.') add('-P', '--plot-data', metavar='name', help="Show plot from data['name'] from the selected row.") add('--csv', action='store_true', help='Write comma-separated-values file.') add('-w', '--open-web-browser', action='store_true', help='Open results in web-browser.') add('--no-lock-file', action='store_true', help="Don't use lock-files") add('--analyse', action='store_true', help='Gathers statistics about tables and indices to help make ' 'better query planning choices.') add('-j', '--json', action='store_true', help='Write json representation of selected row.') add('-m', '--show-metadata', action='store_true', help='Show metadata as json.') add('--set-metadata', metavar='something.json', help='Set metadata from a json file.') add('-M', '--metadata-from-python-script', metavar='something.py', help='Use metadata from a Python file.') add('--unique', action='store_true', help='Give rows a new unique id when using --insert-into.') @staticmethod def run(args): main(args) def main(args): verbosity = 1 - args.quiet + args.verbose query = ','.join(args.query) if args.sort.endswith('-'): args.sort = '-' + args.sort[:-1] if query.isdigit(): query = int(query) add_key_value_pairs = {} if args.add_key_value_pairs: for pair in args.add_key_value_pairs.split(','): key, value = pair.split('=') add_key_value_pairs[key] = convert_str_to_int_float_or_str(value) if args.delete_keys: delete_keys = args.delete_keys.split(',') else: delete_keys = [] db = connect(args.database, use_lock_file=not args.no_lock_file) def out(*args): if verbosity > 0: print(*args) if args.analyse: db.analyse() return if args.add_from_file: filename = args.add_from_file if ':' in filename: calculator_name, filename = filename.split(':') atoms = get_calculator(calculator_name)(filename).get_atoms() else: atoms = ase.io.read(filename) db.write(atoms, key_value_pairs=add_key_value_pairs) out('Added {0} from {1}'.format(atoms.get_chemical_formula(), filename)) return if args.count: n = db.count(query) print('%s' % plural(n, 'row')) return if args.explain: for row in db.select(query, explain=True, verbosity=verbosity, limit=args.limit, offset=args.offset): print(row['explain']) return if args.show_metadata: print(json.dumps(db.metadata, sort_keys=True, indent=4)) return if args.set_metadata: with open(args.set_metadata) as fd: db.metadata = json.load(fd) return if args.insert_into: nkvp = 0 nrows = 0 with connect(args.insert_into, use_lock_file=not args.no_lock_file) as db2: for row in db.select(query, sort=args.sort): kvp = row.get('key_value_pairs', {}) nkvp -= len(kvp) kvp.update(add_key_value_pairs) nkvp += len(kvp) if args.unique: row['unique_id'] = '%x' % randint(16**31, 16**32 - 1) db2.write(row, data=row.get('data'), **kvp) nrows += 1 out('Added %s (%s updated)' % (plural(nkvp, 'key-value pair'), plural(len(add_key_value_pairs) * nrows - nkvp, 'pair'))) out('Inserted %s' % plural(nrows, 'row')) return if add_key_value_pairs or delete_keys: ids = [row['id'] for row in db.select(query)] m, n = db.update(ids, delete_keys, **add_key_value_pairs) out('Added %s (%s updated)' % (plural(m, 'key-value pair'), plural(len(add_key_value_pairs) * len(ids) - m, 'pair'))) out('Removed', plural(n, 'key-value pair')) return if args.delete: ids = [row['id'] for row in db.select(query)] if ids and not args.yes: msg = 'Delete %s? (yes/No): ' % plural(len(ids), 'row') if input(msg).lower() != 'yes': return db.delete(ids) out('Deleted %s' % plural(len(ids), 'row')) return if args.plot_data: from ase.db.plot import dct2plot dct2plot(db.get(query).data, args.plot_data) return if args.plot: if ':' in args.plot: tags, keys = args.plot.split(':') tags = tags.split(',') else: tags = [] keys = args.plot keys = keys.split(',') plots = collections.defaultdict(list) X = {} labels = [] for row in db.select(query, sort=args.sort, include_data=False): name = ','.join(str(row[tag]) for tag in tags) x = row.get(keys[0]) if x is not None: if isinstance(x, basestring): if x not in X: X[x] = len(X) labels.append(x) x = X[x] plots[name].append([x] + [row.get(key) for key in keys[1:]]) import matplotlib.pyplot as plt for name, plot in plots.items(): xyy = zip(*plot) x = xyy[0] for y, key in zip(xyy[1:], keys[1:]): plt.plot(x, y, label=name + ':' + key) if X: plt.xticks(range(len(labels)), labels, rotation=90) plt.legend() plt.show() return if args.json: row = db.get(query) db2 = connect(sys.stdout, 'json', use_lock_file=False) kvp = row.get('key_value_pairs', {}) db2.write(row, data=row.get('data'), **kvp) return db.python = args.metadata_from_python_script db.meta = process_metadata(db, html=args.open_web_browser) if args.long: # Remove .png files so that new ones will be created. for func, filenames in db.meta.get('functions', []): for filename in filenames: try: os.remove(filename) except OSError: # Python 3 only: FileNotFoundError pass row = db.get(query) summary = Summary(row, db.meta) summary.write() else: if args.open_web_browser: import ase.db.app as app app.databases['default'] = db app.app.run(host='0.0.0.0', debug=True) else: columns = list(all_columns) c = args.columns if c and c.startswith('++'): keys = set() for row in db.select(query, limit=args.limit, offset=args.offset, include_data=False): keys.update(row._keys) columns.extend(keys) if c[2:3] == ',': c = c[3:] else: c = '' if c: if c[0] == '+': c = c[1:] elif c[0] != '-': columns = [] for col in c.split(','): if col[0] == '-': columns.remove(col[1:]) else: columns.append(col.lstrip('+')) table = Table(db, verbosity, args.cut) table.select(query, columns, args.sort, args.limit, args.offset) if args.csv: table.write_csv() else: table.write(query) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/convert.py000066400000000000000000000032671316323560300231660ustar00rootroot00000000000000import optparse import os import numpy as np from ase.db import connect from ase.db.sqlite import index_statements from ase.utils import basestring def convert(name, opts): con1 = connect(name, use_lock_file=False) con1._allow_reading_old_format = True newname = name[:-2] + 'new.db' with connect(newname, create_indices=False, use_lock_file=False) as con2: row = None for row in con1.select(): kvp = row.get('key_value_pairs', {}) if opts.convert_strings_to_numbers: for key, value in kvp.items(): if isinstance(value, basestring): try: value = float(value) except ValueError: pass else: kvp[key] = value if opts.convert_minus_to_not_a_number: for key, value in kvp.items(): if value == '-': kvp[key] = np.nan con2.write(row, data=row.get('data'), **kvp) assert row is not None, 'Your database is empty!' c = con2._connect() for statement in index_statements: c.execute(statement) c.commit() os.rename(name, name[:-2] + 'old.db') os.rename(newname, name) def main(): parser = optparse.OptionParser() parser.add_option('-S', '--convert-strings-to-numbers', action='store_true') parser.add_option('-N', '--convert-minus-to-not-a-number', action='store_true') opts, args = parser.parse_args() for name in args: convert(name, opts) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/core.py000066400000000000000000000407111316323560300224310ustar00rootroot00000000000000import collections import functools import numbers import operator import os import re import warnings from time import time import numpy as np from ase.atoms import Atoms, symbols2numbers, string2symbols from ase.calculators.calculator import all_properties, all_changes from ase.data import atomic_numbers from ase.parallel import world, DummyMPI, parallel_function, parallel_generator from ase.utils import Lock, basestring T2000 = 946681200.0 # January 1. 2000 YEAR = 31557600.0 # 365.25 days default_key_descriptions = { 'id': ('ID', 'Uniqe row ID', ''), 'age': ('Age', 'Time since creation', ''), 'formula': ('Formula', 'Chemical formula', ''), 'user': ('Username', '', ''), 'calculator': ('Calculator', 'ASE-calculator name', ''), 'energy': ('Energy', 'Total energy', 'eV'), 'fmax': ('Maximum force', '', 'eV/Ang'), 'charge': ('Charge', '', '|e|'), 'mass': ('Mass', '', 'au'), 'magmom': ('Magnetic moment', '', 'au'), 'unique_id': ('Unique ID', '', ''), 'volume': ('Volume', 'Volume of unit-cell', '`\\text{Ang}^3`')} def now(): """Return time since January 1. 2000 in years.""" return (time() - T2000) / YEAR seconds = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400, 'w': 604800, 'M': 2629800, 'y': YEAR} longwords = {'s': 'second', 'm': 'minute', 'h': 'hour', 'd': 'day', 'w': 'week', 'M': 'month', 'y': 'year'} ops = {'<': operator.lt, '<=': operator.le, '=': operator.eq, '>=': operator.ge, '>': operator.gt, '!=': operator.ne} invop = {'<': '>=', '<=': '>', '>=': '<', '>': '<=', '=': '!=', '!=': '='} word = re.compile('[_a-zA-Z][_0-9a-zA-Z]*$') reserved_keys = set(all_properties + all_changes + list(atomic_numbers) + ['id', 'unique_id', 'ctime', 'mtime', 'user', 'momenta', 'constraints', 'natoms', 'formula', 'age', 'calculator', 'calculator_parameters', 'key_value_pairs', 'data']) numeric_keys = set(['id', 'energy', 'magmom', 'charge', 'natoms']) def check(key_value_pairs): for key, value in key_value_pairs.items(): if not word.match(key) or key in reserved_keys: raise ValueError('Bad key: {}'.format(key)) try: string2symbols(key) except ValueError: pass else: warnings.warn( 'It is best not to use keys ({0}) that are also a ' 'chemical formula. If you do a "db.select({0!r})",' 'you will not find rows with your key. Instead, you wil get ' 'rows containing the atoms in the formula!'.format(key)) if not isinstance(value, (numbers.Real, basestring, np.bool_)): raise ValueError('Bad value for {!r}: {}'.format(key, value)) if isinstance(value, basestring): for t in [int, float]: if str_represents(value, t): raise ValueError( 'Value ' + value + ' is put in as string ' + 'but can be interpreted as ' + '{}! Please convert '.format(t.__name__) + 'to {} using '.format(t.__name__) + '{}(value) before '.format(t.__name__) + 'writing to the database OR change ' + 'to a different string.') def str_represents(value, t=int): try: t(value) except ValueError: return False return True def connect(name, type='extract_from_name', create_indices=True, use_lock_file=True, append=True, serial=False): """Create connection to database. name: str Filename or address of database. type: str One of 'json', 'db', 'postgresql', (JSON, SQLite, PostgreSQL). Default is 'extract_from_name', which will guess the type from the name. use_lock_file: bool You can turn this off if you know what you are doing ... append: bool Use append=False to start a new database. """ if type == 'extract_from_name': if name is None: type = None elif not isinstance(name, basestring): type = 'json' elif name.startswith('postgresql://'): type = 'postgresql' else: type = os.path.splitext(name)[1][1:] if type == '': raise ValueError('No file extension or database type given') if type is None: return Database() if not append and world.rank == 0 and os.path.isfile(name): os.remove(name) if type == 'json': from ase.db.jsondb import JSONDatabase return JSONDatabase(name, use_lock_file=use_lock_file, serial=serial) if type == 'db': from ase.db.sqlite import SQLite3Database return SQLite3Database(name, create_indices, use_lock_file, serial=serial) if type == 'postgresql': from ase.db.postgresql import PostgreSQLDatabase return PostgreSQLDatabase(name) raise ValueError('Unknown database type: ' + type) def lock(method): """Decorator for using a lock-file.""" @functools.wraps(method) def new_method(self, *args, **kwargs): if self.lock is None: return method(self, *args, **kwargs) else: with self.lock: return method(self, *args, **kwargs) return new_method def convert_str_to_int_float_or_str(value): """Safe eval()""" try: return int(value) except ValueError: try: value = float(value) except ValueError: value = {'True': True, 'False': False}.get(value, value) return value def parse_selection(selection, **kwargs): if selection is None or selection == '': expressions = [] elif isinstance(selection, int): expressions = [('id', '=', selection)] elif isinstance(selection, list): expressions = selection else: expressions = [w.strip() for w in selection.split(',')] keys = [] comparisons = [] for expression in expressions: if isinstance(expression, (list, tuple)): comparisons.append(expression) continue if expression.count('<') == 2: value, expression = expression.split('<', 1) if expression[0] == '=': op = '>=' expression = expression[1:] else: op = '>' key = expression.split('<', 1)[0] comparisons.append((key, op, value)) for op in ['!=', '<=', '>=', '<', '>', '=']: if op in expression: break else: if expression in atomic_numbers: comparisons.append((expression, '>', 0)) else: try: symbols = string2symbols(expression) except ValueError: keys.append(expression) else: count = collections.Counter(symbols) comparisons.extend((symbol, '>', n - 1) for symbol, n in count.items()) continue key, value = expression.split(op) comparisons.append((key, op, value)) cmps = [] for key, value in kwargs.items(): comparisons.append((key, '=', value)) for key, op, value in comparisons: if key == 'age': key = 'ctime' op = invop[op] value = now() - time_string_to_float(value) elif key == 'formula': if op != '=': raise ValueError('Use fomula=...') numbers = symbols2numbers(value) count = collections.defaultdict(int) for Z in numbers: count[Z] += 1 cmps.extend((Z, '=', count[Z]) for Z in count) key = 'natoms' value = len(numbers) elif key in atomic_numbers: key = atomic_numbers[key] value = int(value) elif isinstance(value, basestring): value = convert_str_to_int_float_or_str(value) if key in numeric_keys and not isinstance(value, (int, float)): msg = 'Wrong type for "{}{}{}" - must be a number' raise ValueError(msg.format(key, op, value)) cmps.append((key, op, value)) return keys, cmps class Database: """Base class for all databases.""" def __init__(self, filename=None, create_indices=True, use_lock_file=False, serial=False): """Database object. serial: bool Let someone else handle parallelization. Default behavior is to interact with the database on the master only and then distribute results to all slaves. """ if isinstance(filename, basestring): filename = os.path.expanduser(filename) self.filename = filename self.create_indices = create_indices if use_lock_file and isinstance(filename, basestring): self.lock = Lock(filename + '.lock', world=DummyMPI()) else: self.lock = None self.serial = serial self._metadata = None # decription of columns and other stuff @parallel_function @lock def write(self, atoms, key_value_pairs={}, data={}, **kwargs): """Write atoms to database with key-value pairs. atoms: Atoms object Write atomic numbers, positions, unit cell and boundary conditions. If a calculator is attached, write also already calculated properties such as the energy and forces. key_value_pairs: dict Dictionary of key-value pairs. Values must be strings or numbers. data: dict Extra stuff (not for searching). Key-value pairs can also be set using keyword arguments:: connection.write(atoms, name='ABC', frequency=42.0) Returns integer id of the new row. """ if atoms is None: atoms = Atoms() kvp = dict(key_value_pairs) # modify a copy kvp.update(kwargs) id = self._write(atoms, kvp, data) return id def _write(self, atoms, key_value_pairs, data): check(key_value_pairs) return 1 @parallel_function @lock def reserve(self, **key_value_pairs): """Write empty row if not already present. Usage:: id = conn.reserve(key1=value1, key2=value2, ...) Write an empty row with the given key-value pairs and return the integer id. If such a row already exists, don't write anything and return None. """ for dct in self._select([], [(key, '=', value) for key, value in key_value_pairs.items()]): return None atoms = Atoms() calc_name = key_value_pairs.pop('calculator', None) if calc_name: # Allow use of calculator key assert calc_name.lower() == calc_name # Fake calculator class: class Fake: name = calc_name def todict(self): return {} def check_state(self, atoms): return ['positions'] atoms.calc = Fake() id = self._write(atoms, key_value_pairs, {}) return id def __delitem__(self, id): self.delete([id]) def get_atoms(self, selection=None, attach_calculator=False, add_additional_information=False, **kwargs): """Get Atoms object. selection: int, str or list See the select() method. attach_calculator: bool Attach calculator object to Atoms object (default value is False). add_additional_information: bool Put key-value pairs and data into Atoms.info dictionary. In addition, one can use keyword arguments to select specific key-value pairs. """ row = self.get(selection, **kwargs) return row.toatoms(attach_calculator, add_additional_information) def __getitem__(self, selection): return self.get(selection) def get(self, selection=None, **kwargs): """Select a single row and return it as a dictionary. selection: int, str or list See the select() method. """ rows = list(self.select(selection, limit=2, **kwargs)) if not rows: raise KeyError('no match') assert len(rows) == 1, 'more than one row matched' return rows[0] @parallel_generator def select(self, selection=None, filter=None, explain=False, verbosity=1, limit=None, offset=0, sort=None, include_data=True, **kwargs): """Select rows. Return AtomsRow iterator with results. Selection is done using key-value pairs and the special keys: formula, age, user, calculator, natoms, energy, magmom and/or charge. selection: int, str or list Can be: * an integer id * a string like 'key=value', where '=' can also be one of '<=', '<', '>', '>=' or '!='. * a string like 'key' * comma separated strings like 'key1 5: break if long: return '{:.3f} {}s'.format(x, longwords[s]) else: return '{:.0f}{}'.format(round(x), s) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/jsondb.py000066400000000000000000000152271316323560300227640ustar00rootroot00000000000000from __future__ import absolute_import, print_function import os import sys import numpy as np from ase.db.core import Database, ops, lock, now from ase.db.row import AtomsRow from ase.io.jsonio import encode, decode from ase.parallel import world, parallel_function from ase.utils import basestring class JSONDatabase(Database, object): def __enter__(self): return self def __exit__(self, exc_type, exc_value, tb): pass def _write(self, atoms, key_value_pairs, data): Database._write(self, atoms, key_value_pairs, data) bigdct = {} ids = [] nextid = 1 if (isinstance(self.filename, basestring) and os.path.isfile(self.filename)): try: bigdct, ids, nextid = self._read_json() except (SyntaxError, ValueError): pass if isinstance(atoms, AtomsRow): row = atoms unique_id = row.unique_id for id in ids: if bigdct[id]['unique_id'] == unique_id: break else: id = None mtime = now() else: row = AtomsRow(atoms) row.ctime = mtime = now() row.user = os.getenv('USER') id = None dct = {} for key in row.__dict__: if key[0] == '_' or key in row._keys or key == 'id': continue dct[key] = row[key] dct['mtime'] = mtime kvp = key_value_pairs or row.key_value_pairs if kvp: dct['key_value_pairs'] = kvp data = data or row.get('data') if data: dct['data'] = data constraints = row.get('constraints') if constraints: dct['constraints'] = constraints if id is None: id = nextid ids.append(id) nextid += 1 bigdct[id] = dct self._write_json(bigdct, ids, nextid) return id def _read_json(self): if isinstance(self.filename, basestring): with open(self.filename) as fd: bigdct = decode(fd.read()) else: bigdct = decode(self.filename.read()) if self.filename is not sys.stdin: self.filename.seek(0) ids = bigdct.get('ids') if ids is None: # Allow for missing "ids" and "nextid": assert 1 in bigdct return bigdct, [1], 2 if not isinstance(ids, list): ids = ids.tolist() return bigdct, ids, bigdct['nextid'] def _write_json(self, bigdct, ids, nextid): if world.rank > 0: return if isinstance(self.filename, basestring): fd = open(self.filename, 'w') else: fd = self.filename print('{', end='', file=fd) for id in ids: dct = bigdct[id] txt = ',\n '.join('"{0}": {1}'.format(key, encode(dct[key])) for key in sorted(dct.keys())) print('"{0}": {{\n {1}}},'.format(id, txt), file=fd) if self._metadata is not None: print('"metadata": {0},'.format(encode(self.metadata)), file=fd) print('"ids": {0},'.format(ids), file=fd) print('"nextid": {0}}}'.format(nextid), file=fd) if fd is not self.filename: fd.close() @parallel_function @lock def delete(self, ids): bigdct, myids, nextid = self._read_json() for id in ids: del bigdct[id] myids.remove(id) self._write_json(bigdct, myids, nextid) def _get_row(self, id): bigdct, ids, nextid = self._read_json() if id is None: assert len(ids) == 1 id = ids[0] dct = bigdct[id] dct['id'] = id return AtomsRow(dct) def _select(self, keys, cmps, explain=False, verbosity=0, limit=None, offset=0, sort=None, include_data=True): if explain: yield {'explain': (0, 0, 0, 'scan table')} return if sort: if sort[0] == '-': reverse = True sort = sort[1:] else: reverse = False def f(row): return row[sort] rows = sorted(self._select(keys + [sort], cmps), key=f, reverse=reverse) if limit: rows = rows[offset:offset + limit] for row in rows: yield row return try: bigdct, ids, nextid = self._read_json() except IOError: return if not limit: limit = -offset - 1 cmps = [(key, ops[op], val) for key, op, val in cmps] n = 0 for id in ids: if n - offset == limit: return dct = bigdct[id] if not include_data: dct.pop('data', None) row = AtomsRow(dct) row.id = id for key in keys: if key not in row: break else: for key, op, val in cmps: if isinstance(key, int): value = np.equal(row.numbers, key).sum() else: value = row.get(key) if key == 'pbc': assert op in [ops['='], ops['!=']] value = ''.join('FT'[x] for x in value) if value is None or not op(value, val): break else: if n >= offset: yield row n += 1 def _update(self, ids, delete_keys, add_key_value_pairs): bigdct, myids, nextid = self._read_json() t = now() m = 0 n = 0 for id in ids: dct = bigdct[id] kvp = dct.get('key_value_pairs', {}) n += len(kvp) for key in delete_keys: kvp.pop(key, None) n -= len(kvp) m -= len(kvp) kvp.update(add_key_value_pairs) m += len(kvp) if kvp: dct['key_value_pairs'] = kvp dct['mtime'] = t self._write_json(bigdct, myids, nextid) return m, n @property def metadata(self): if self._metadata is None: bigdct, myids, nextid = self._read_json() self._metadata = bigdct.get('metadata', {}) return self._metadata.copy() @metadata.setter def metadata(self, dct): bigdct, ids, nextid = self._read_json() self._metadata = dct self._write_json(bigdct, ids, nextid) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/mysql.py000066400000000000000000000057531316323560300226550ustar00rootroot00000000000000import MySQLdb from ase.db.sqlite import init_statements, index_statements from ase.db.sqlite import all_tables, SQLite3Database class Connection: def __init__(self, con): self.con = con def cursor(self): return Cursor(self.con.cursor()) def commit(self): self.con.commit() def close(self): self.con.close() class Cursor: def __init__(self, cur): self.cur = cur def fetchone(self): return self.cur.fetchone() def fetchall(self): return self.cur.fetchall() def execute(self, statement, *args): self.cur.execute(statement.replace('?', '%s'), *args) def executemany(self, statement, *args): self.cur.executemany(statement.replace('?', '%s'), *args) class MySQLDatabase(SQLite3Database): default = 'DEFAULT' def _connect(self): con = MySQLdb.connect(db='mysql', user='ase', passwd='ase') return Connection(con) def _initialize(self, con): pass def get_last_id(self, cur): cur.execute('select max(id) from systems') id = cur.fetchone()[0] return int(id) def reset(): db = 'mysql' con = MySQLdb.connect(db=db, user='root') cur = con.cursor() cur.execute("use " + db) cur.execute("show tables like 'systems'") if cur.fetchone() is not None: # order matters for drop (drop 'systems' last) for t in ['information'] + all_tables[::-1]: # MDTMP is information special? cur.execute("drop table %s.%s" % (db, t)) # avoid "Commands out of sync; you can't run this command now" # by closing the cursor after each execute cur.close() cur = con.cursor() cur.execute("drop user 'ase'@'localhost'") cur.execute("create user 'ase'@'localhost' identified by 'ase'") con.commit() # MySQL can grant privileges only for one table at a time? for t in all_tables[:] + ['information']: # MDTMP is information special? cur.execute("grant all privileges on %s.%s to 'ase'@'localhost'" % (db, t)) cur.close() cur = con.cursor() con.commit() for sql in init_statements: for a, b in [('BLOB', 'BLOB'), ('TEXT', 'VARCHAR(767)'), ('data VARCHAR(767)', 'data TEXT'), ('REAL', 'DOUBLE'), ('KEY AUTOINCREMENT', 'KEY AUTO_INCREMENT')]: sql = sql.replace(a, b) cur.execute(sql) cur.close() cur = con.cursor() for sql in index_statements: cur.execute(sql) cur.close() cur = con.cursor() con.commit() if __name__ == '__main__': # Debian # PYTHONPATH=/path/to/ase python -m ase.db.mysql # RHEL: # su -c "yum -y remove mariadb-server" # su -c "rm -rf /var/lib/mysql" # su -c "yum -y install mariadb-server" # su -c "systemctl start mariadb.service" # PYTHONPATH=/path/to/ase python -m ase.db.mysql reset() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/plot.py000066400000000000000000000036311316323560300224570ustar00rootroot00000000000000from ase.io.png import write_png from ase.utils import basestring def atoms2png(atoms, filename): if atoms: size = atoms.positions.ptp(0) i = size.argmin() rotation = ['-90y', '90x', ''][i] size[i] = 0.0 scale = min(50, 200 / max(1, size.max())) else: scale = 20 rotation = '' write_png(filename, atoms, show_unit_cell=1, rotation=rotation, scale=scale) def dct2plot(dct, name, filename=None, show=True): """Create a plot from a dict. Example:: d = {'a': [0, 1, 2], 'b': [1.2, 1.1, 1.0], 'abplot': {'title': 'Example', 'data': [{'x': 'a', 'y': 'b', 'label': 'label1', 'style': 'o-g'}], 'xlabel': 'blah-blah [eV]'}} dct2plot(d, 'plot') """ import matplotlib.pyplot as plt fig = plt.figure() styles = ['k-', 'r-', 'g-', 'b-'] plot = dct[name] lines = [] labels = [] for d in plot['data']: x = d['x'] if isinstance(x, basestring): x = dct[x] y = d['y'] if isinstance(y, basestring): y = dct[y] style = d.get('style') if not style: style = styles.pop() lines.append(plt.plot(x, y, style)[0]) labels.append(d['label']) plt.legend(lines, labels) if isinstance(plot['xlabel'], basestring): plt.xlabel(plot['xlabel']) else: x, labels = plot['xlabel'] plt.xticks(x, labels) plt.xlim(x[0], x[-1]) plt.ylabel(plot['ylabel']) if 'ylim' in plot: plt.ylim(*plot['ylim']) plt.title(plot['title']) try: plt.tight_layout() except AttributeError: pass if show: plt.show() if filename: plt.savefig(filename) plt.close(fig) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/postgresql.py000066400000000000000000000042611316323560300237040ustar00rootroot00000000000000import json import psycopg2 from ase.db.sqlite import init_statements, index_statements, VERSION from ase.db.sqlite import SQLite3Database class Connection: def __init__(self, con): self.con = con def cursor(self): return Cursor(self.con.cursor()) def commit(self): self.con.commit() def close(self): self.con.close() class Cursor: def __init__(self, cur): self.cur = cur def fetchone(self): return self.cur.fetchone() def fetchall(self): return self.cur.fetchall() def execute(self, statement, *args): self.cur.execute(statement.replace('?', '%s'), *args) def executemany(self, statement, *args): self.cur.executemany(statement.replace('?', '%s'), *args) class PostgreSQLDatabase(SQLite3Database): default = 'DEFAULT' def _connect(self): return Connection(psycopg2.connect(self.filename)) def _initialize(self, con): if self.initialized: return self._metadata = {} cur = con.cursor() try: cur.execute('SELECT name, value FROM information') except psycopg2.ProgrammingError: # Initialize database: sql = ';\n'.join(init_statements) for a, b in [('BLOB', 'BYTEA'), ('REAL', 'DOUBLE PRECISION'), ('INTEGER PRIMARY KEY AUTOINCREMENT', 'SERIAL PRIMARY KEY')]: sql = sql.replace(a, b) con.commit() cur = con.cursor() cur.execute(sql) if self.create_indices: cur.execute(';\n'.join(index_statements)) con.commit() self.version = VERSION else: for name, value in cur.fetchall(): if name == 'version': self.version = int(value) elif name == 'metadata': self._metadata = json.loads(value) assert 5 < self.version <= VERSION self.initialized = True def get_last_id(self, cur): cur.execute('SELECT last_value FROM systems_id_seq') id = cur.fetchone()[0] return int(id) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/row.py000066400000000000000000000173161316323560300223150ustar00rootroot00000000000000from random import randint import numpy as np from ase import Atoms from ase.constraints import dict2constraint from ase.calculators.calculator import get_calculator, all_properties from ase.calculators.calculator import PropertyNotImplementedError from ase.calculators.singlepoint import SinglePointCalculator from ase.data import chemical_symbols, atomic_masses from ase.io.jsonio import decode from ase.utils import formula_metal, basestring class FancyDict(dict): """Dictionary with keys available as attributes also.""" def __getattr__(self, key): if key not in self: return dict.__getattribute__(self, key) value = self[key] if isinstance(value, dict): return FancyDict(value) return value def __dir__(self): return self.keys() # for tab-completion def atoms2dict(atoms): dct = { 'numbers': atoms.numbers, 'positions': atoms.positions, 'unique_id': '%x' % randint(16**31, 16**32 - 1)} if atoms.cell.any(): dct['pbc'] = atoms.pbc dct['cell'] = atoms.cell if atoms.has('initial_magmoms'): dct['initial_magmoms'] = atoms.get_initial_magnetic_moments() if atoms.has('initial_charges'): dct['initial_charges'] = atoms.get_initial_charges() if atoms.has('masses'): dct['masses'] = atoms.get_masses() if atoms.has('tags'): dct['tags'] = atoms.get_tags() if atoms.has('momenta'): dct['momenta'] = atoms.get_momenta() if atoms.constraints: dct['constraints'] = [c.todict() for c in atoms.constraints] if atoms.calc is not None: dct['calculator'] = atoms.calc.name.lower() dct['calculator_parameters'] = atoms.calc.todict() if len(atoms.calc.check_state(atoms)) == 0: for prop in all_properties: try: x = atoms.calc.get_property(prop, atoms, False) except PropertyNotImplementedError: pass else: if x is not None: dct[prop] = x return dct class AtomsRow: def __init__(self, dct): if isinstance(dct, dict): dct = dct.copy() if 'calculator_parameters' in dct: # Earlier version of ASE would encode the calculator # parameter dict again and again and again ... while isinstance(dct['calculator_parameters'], basestring): dct['calculator_parameters'] = decode( dct['calculator_parameters']) else: dct = atoms2dict(dct) assert 'numbers' in dct self._constraints = dct.pop('constraints', []) self._data = dct.pop('data', None) kvp = dct.pop('key_value_pairs', {}) self._keys = list(kvp.keys()) self.__dict__.update(kvp) self.__dict__.update(dct) if 'cell' not in dct: self.cell = np.zeros((3, 3)) self.pbc = np.zeros(3, bool) def __contains__(self, key): return key in self.__dict__ def __iter__(self): return (key for key in self.__dict__ if key[0] != '_') def get(self, key, default=None): """Return value of key if present or default if not.""" return getattr(self, key, default) @property def key_value_pairs(self): """Return dict of key-value pairs.""" return dict((key, self.get(key)) for key in self._keys) def count_atoms(self): """Count atoms. Return dict mapping chemical symbol strings to number of atoms. """ count = {} for symbol in self.symbols: count[symbol] = count.get(symbol, 0) + 1 return count def __getitem__(self, key): return getattr(self, key) def __setitem__(self, key, value): setattr(self, key, value) def __str__(self): return ''.format( self.formula, ','.join(self._keys)) @property def constraints(self): """List of constraints.""" if not isinstance(self._constraints, list): # Lazy decoding: cs = decode(self._constraints) self._constraints = [] for c in cs: # Convert to new format: name = c.pop('__name__', None) if name: c = {'name': name, 'kwargs': c} if c['name'].startswith('ase'): c['name'] = c['name'].rsplit('.', 1)[1] self._constraints.append(c) return [dict2constraint(d) for d in self._constraints] @property def data(self): """Data dict.""" if self._data is None: raise AttributeError if not isinstance(self._data, dict): self._data = decode(self._data) # lazy decoding return FancyDict(self._data) @property def natoms(self): """Number of atoms.""" return len(self.numbers) @property def formula(self): """Chemical formula string.""" return formula_metal(self.numbers) @property def symbols(self): """List of chemical symbols.""" return [chemical_symbols[Z] for Z in self.numbers] @property def fmax(self): """Maximum atomic force.""" forces = self.constrained_forces return (forces**2).sum(1).max()**0.5 @property def constrained_forces(self): """Forces after applying constraints.""" forces = self.forces constraints = self.constraints if constraints: forces = forces.copy() for constraint in constraints: constraint.adjust_forces(self.positions, forces) return forces @property def smax(self): """Maximum stress tensor component.""" return (self.stress**2).max()**0.5 @property def mass(self): """Total mass.""" if 'masses' in self: return self.masses.sum() return atomic_masses[self.numbers].sum() @property def volume(self): """Volume of unit cell.""" vol = abs(np.linalg.det(self.cell)) if vol == 0.0: raise AttributeError return vol @property def charge(self): """Total charge.""" charges = self.get('inital_charges') if charges is None: return 0.0 return charges.sum() def toatoms(self, attach_calculator=False, add_additional_information=False): """Create Atoms object.""" atoms = Atoms(self.numbers, self.positions, cell=self.cell, pbc=self.pbc, magmoms=self.get('initial_magmoms'), charges=self.get('initial_charges'), tags=self.get('tags'), masses=self.get('masses'), momenta=self.get('momenta'), constraint=self.constraints) if attach_calculator: params = self.get('calculator_parameters', {}) atoms.calc = get_calculator(self.calculator)(**params) else: results = {} for prop in all_properties: if prop in self: results[prop] = self[prop] if results: atoms.calc = SinglePointCalculator(atoms, **results) atoms.calc.name = self.calculator if add_additional_information: atoms.info = {} atoms.info['unique_id'] = self.unique_id if self._keys: atoms.info['key_value_pairs'] = self.key_value_pairs data = self.get('data') if data: atoms.info['data'] = data return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/sqlite.py000066400000000000000000000553261316323560300230120ustar00rootroot00000000000000"""SQLite3 backend. Versions: 1) Added 3 more columns. 2) Changed "user" to "username". 3) Now adding keys to keyword table and added an "information" table containing a version number. 4) Got rid of keywords. 5) Add fmax, smax, mass, volume, charge 6) Use REAL for magmom and drop possibility for non-collinear spin 7) Volume can be None 8) Added name='metadata' row to "information" table """ from __future__ import absolute_import, print_function import json import os import sqlite3 import sys import numpy as np from ase.data import atomic_numbers from ase.db.row import AtomsRow from ase.db.core import Database, ops, now, lock, invop, parse_selection from ase.io.jsonio import encode, decode from ase.parallel import parallel_function from ase.utils import basestring if sys.version >= '3': buffer = memoryview VERSION = 8 init_statements = [ """CREATE TABLE systems ( id INTEGER PRIMARY KEY AUTOINCREMENT, -- ID's, timestamps and user name unique_id TEXT UNIQUE, ctime REAL, mtime REAL, username TEXT, numbers BLOB, -- stuff that defines an Atoms object positions BLOB, cell BLOB, pbc INTEGER, initial_magmoms BLOB, initial_charges BLOB, masses BLOB, tags BLOB, momenta BLOB, constraints TEXT, -- constraints and calculator calculator TEXT, calculator_parameters TEXT, energy REAL, -- calculated properties free_energy REAL, forces BLOB, stress BLOB, dipole BLOB, magmoms BLOB, magmom REAL, charges BLOB, key_value_pairs TEXT, -- key-value pairs and data as json data TEXT, natoms INTEGER, -- stuff for making queries faster fmax REAL, smax REAL, volume REAL, mass REAL, charge REAL)""", """CREATE TABLE species ( Z INTEGER, n INTEGER, id INTEGER, FOREIGN KEY (id) REFERENCES systems(id))""", """CREATE TABLE keys ( key TEXT, id INTEGER, FOREIGN KEY (id) REFERENCES systems(id))""", """CREATE TABLE text_key_values ( key TEXT, value TEXT, id INTEGER, FOREIGN KEY (id) REFERENCES systems(id))""", """CREATE TABLE number_key_values ( key TEXT, value REAL, id INTEGER, FOREIGN KEY (id) REFERENCES systems(id))""", """CREATE TABLE information ( name TEXT, value TEXT)""", "INSERT INTO information VALUES ('version', '{}')".format(VERSION)] index_statements = [ 'CREATE INDEX unique_id_index ON systems(unique_id)', 'CREATE INDEX ctime_index ON systems(ctime)', 'CREATE INDEX username_index ON systems(username)', 'CREATE INDEX calculator_index ON systems(calculator)', 'CREATE INDEX species_index ON species(Z)', 'CREATE INDEX key_index ON keys(key)', 'CREATE INDEX text_index ON text_key_values(key)', 'CREATE INDEX number_index ON number_key_values(key)'] all_tables = ['systems', 'species', 'keys', 'text_key_values', 'number_key_values'] def float_if_not_none(x): """Convert numpy.float64 to float - old db-interfaces need that.""" if x is not None: return float(x) class SQLite3Database(Database, object): initialized = False _allow_reading_old_format = False default = 'NULL' # used for autoincrement id connection = None version = None columnnames = [line.split()[0].lstrip() for line in init_statements[0].splitlines()[1:]] def _connect(self): return sqlite3.connect(self.filename, timeout=600) def __enter__(self): assert self.connection is None self.connection = self._connect() return self def __exit__(self, exc_type, exc_value, tb): if exc_type is None: self.connection.commit() else: self.connection.rollback() self.connection.close() self.connection = None def _initialize(self, con): if self.initialized: return self._metadata = {} cur = con.execute( 'SELECT COUNT(*) FROM sqlite_master WHERE name="systems"') if cur.fetchone()[0] == 0: for statement in init_statements: con.execute(statement) if self.create_indices: for statement in index_statements: con.execute(statement) con.commit() self.version = VERSION else: cur = con.execute( 'SELECT COUNT(*) FROM sqlite_master WHERE name="user_index"') if cur.fetchone()[0] == 1: # Old version with "user" instead of "username" column self.version = 1 else: try: cur = con.execute( 'SELECT value FROM information WHERE name="version"') except sqlite3.OperationalError: self.version = 2 else: self.version = int(cur.fetchone()[0]) cur = con.execute( 'SELECT value FROM information WHERE name="metadata"') results = cur.fetchall() if results: self._metadata = json.loads(results[0][0]) if self.version > VERSION: raise IOError('Can not read new ase.db format ' '(version {}). Please update to latest ASE.' .format(self.version)) if self.version < 5 and not self._allow_reading_old_format: raise IOError('Please convert to new format. ' + 'Use: python -m ase.db.convert ' + self.filename) self.initialized = True def _write(self, atoms, key_value_pairs, data): Database._write(self, atoms, key_value_pairs, data) con = self.connection or self._connect() self._initialize(con) cur = con.cursor() id = None if not isinstance(atoms, AtomsRow): row = AtomsRow(atoms) row.ctime = mtime = now() row.user = os.getenv('USER') else: row = atoms cur.execute('SELECT id FROM systems WHERE unique_id=?', (row.unique_id,)) results = cur.fetchall() if results: id = results[0][0] self._delete(cur, [id], ['keys', 'text_key_values', 'number_key_values']) mtime = now() constraints = row._constraints if constraints: if isinstance(constraints, list): constraints = encode(constraints) else: constraints = None values = (row.unique_id, row.ctime, mtime, row.user, blob(row.numbers), blob(row.positions), blob(row.cell), int(np.dot(row.pbc, [1, 2, 4])), blob(row.get('initial_magmoms')), blob(row.get('initial_charges')), blob(row.get('masses')), blob(row.get('tags')), blob(row.get('momenta')), constraints) if 'calculator' in row: values += (row.calculator, encode(row.calculator_parameters)) else: values += (None, None) if key_value_pairs is None: key_value_pairs = row.key_value_pairs if not data: data = row._data if not isinstance(data, basestring): data = encode(data) values += (row.get('energy'), row.get('free_energy'), blob(row.get('forces')), blob(row.get('stress')), blob(row.get('dipole')), blob(row.get('magmoms')), row.get('magmom'), blob(row.get('charges')), encode(key_value_pairs), data, len(row.numbers), float_if_not_none(row.get('fmax')), float_if_not_none(row.get('smax')), float_if_not_none(row.get('volume')), float(row.mass), float(row.charge)) if id is None: q = self.default + ', ' + ', '.join('?' * len(values)) cur.execute('INSERT INTO systems VALUES ({})'.format(q), values) else: q = ', '.join(name + '=?' for name in self.columnnames[1:]) cur.execute('UPDATE systems SET {} WHERE id=?'.format(q), values + (id,)) if id is None: id = self.get_last_id(cur) count = row.count_atoms() if count: species = [(atomic_numbers[symbol], n, id) for symbol, n in count.items()] cur.executemany('INSERT INTO species VALUES (?, ?, ?)', species) text_key_values = [] number_key_values = [] for key, value in key_value_pairs.items(): if isinstance(value, (float, int, np.bool_)): number_key_values.append([key, float(value), id]) else: assert isinstance(value, basestring) text_key_values.append([key, value, id]) cur.executemany('INSERT INTO text_key_values VALUES (?, ?, ?)', text_key_values) cur.executemany('INSERT INTO number_key_values VALUES (?, ?, ?)', number_key_values) cur.executemany('INSERT INTO keys VALUES (?, ?)', [(key, id) for key in key_value_pairs]) if self.connection is None: con.commit() con.close() return id def get_last_id(self, cur): cur.execute('SELECT seq FROM sqlite_sequence WHERE name="systems"') id = cur.fetchone()[0] return id def _get_row(self, id): con = self._connect() self._initialize(con) c = con.cursor() if id is None: c.execute('SELECT COUNT(*) FROM systems') assert c.fetchone()[0] == 1 c.execute('SELECT * FROM systems') else: c.execute('SELECT * FROM systems WHERE id=?', (id,)) values = c.fetchone() values = self._old2new(values) return self._convert_tuple_to_row(values) def _convert_tuple_to_row(self, values): values = self._old2new(values) dct = {'id': values[0], 'unique_id': values[1], 'ctime': values[2], 'mtime': values[3], 'user': values[4], 'numbers': deblob(values[5], np.int32), 'positions': deblob(values[6], shape=(-1, 3)), 'cell': deblob(values[7], shape=(3, 3)), 'pbc': (values[8] & np.array([1, 2, 4])).astype(bool)} if values[9] is not None: dct['initial_magmoms'] = deblob(values[9]) if values[10] is not None: dct['initial_charges'] = deblob(values[10]) if values[11] is not None: dct['masses'] = deblob(values[11]) if values[12] is not None: dct['tags'] = deblob(values[12], np.int32) if values[13] is not None: dct['momenta'] = deblob(values[13], shape=(-1, 3)) if values[14] is not None: dct['constraints'] = values[14] if values[15] is not None: dct['calculator'] = values[15] dct['calculator_parameters'] = decode(values[16]) if values[17] is not None: dct['energy'] = values[17] if values[18] is not None: dct['free_energy'] = values[18] if values[19] is not None: dct['forces'] = deblob(values[19], shape=(-1, 3)) if values[20] is not None: dct['stress'] = deblob(values[20]) if values[21] is not None: dct['dipole'] = deblob(values[21]) if values[22] is not None: dct['magmoms'] = deblob(values[22]) if values[23] is not None: dct['magmom'] = values[23] if values[24] is not None: dct['charges'] = deblob(values[24]) if values[25] != '{}': dct['key_value_pairs'] = decode(values[25]) if len(values) >= 27 and values[26] != 'null': dct['data'] = values[26] return AtomsRow(dct) def _old2new(self, values): assert self.version >= 4, 'Your db-file is too old!' if self.version < 5: pass # should be ok for reading by convert.py script if self.version < 6: m = values[23] if m is not None and not isinstance(m, float): magmom = float(deblob(m, shape=())) values = values[:23] + (magmom,) + values[24:] return values def create_select_statement(self, keys, cmps, sort=None, order=None, sort_table=None, what='systems.*'): tables = ['systems'] where = [] args = [] for n, key in enumerate(keys): if key == 'forces': where.append('systems.fmax IS NOT NULL') elif key == 'strain': where.append('systems.smax IS NOT NULL') elif key in ['energy', 'fmax', 'smax', 'constraints', 'calculator']: where.append('systems.{0} IS NOT NULL'.format(key)) else: tables.append('keys AS keys{0}'.format(n)) where.append('systems.id=keys{0}.id AND keys{0}.key=?' .format(n)) args.append(key) # Special handling of "H=0" and "H<2" type of selections: bad = {} for key, op, value in cmps: if isinstance(key, int): bad[key] = bad.get(key, True) and ops[op](0, value) found_sort_table = False nspecies = 0 ntext = 0 nnumber = 0 for key, op, value in cmps: if key in ['id', 'energy', 'magmom', 'ctime', 'user', 'calculator', 'natoms', 'pbc', 'unique_id', 'fmax', 'smax', 'volume', 'mass', 'charge']: if key == 'user' and self.version >= 2: key = 'username' elif key == 'pbc': assert op in ['=', '!='] value = int(np.dot([x == 'T' for x in value], [1, 2, 4])) elif key == 'magmom': assert self.version >= 6, 'Update you db-file' where.append('systems.{0}{1}?'.format(key, op)) args.append(value) elif isinstance(key, int): if bad[key]: where.append( 'NOT EXISTS (SELECT id FROM species WHERE\n' + ' species.id=systems.id AND species.Z=? AND ' + 'species.n{0}?)'.format(invop[op])) args += [key, value] else: tables.append('species AS specie{0}'.format(nspecies)) where.append(('systems.id=specie{0}.id AND ' + 'specie{0}.Z=? AND ' + 'specie{0}.n{1}?').format(nspecies, op)) args += [key, value] nspecies += 1 elif isinstance(value, basestring): tables.append('text_key_values AS text{0}'.format(ntext)) where.append(('systems.id=text{0}.id AND ' + 'text{0}.key=? AND ' + 'text{0}.value{1}?').format(ntext, op)) args += [key, value] if sort_table == 'text_key_values' and sort == key: sort_table = 'text{0}'.format(ntext) found_sort_table = True ntext += 1 else: tables.append('number_key_values AS number{0}'.format(nnumber)) where.append(('systems.id=number{0}.id AND ' + 'number{0}.key=? AND ' + 'number{0}.value{1}?').format(nnumber, op)) args += [key, float(value)] if sort_table == 'number_key_values' and sort == key: sort_table = 'number{0}'.format(nnumber) found_sort_table = True nnumber += 1 if sort: if sort_table == 'systems': if sort in ['energy', 'fmax', 'smax', 'calculator']: where.append('systems.{0} IS NOT NULL'.format(sort)) else: if not found_sort_table: tables.append('{0} AS sort_table'.format(sort_table)) where.append('systems.id=sort_table.id AND ' 'sort_table.key=?') args.append(sort) sort_table = 'sort_table' sort = 'value' sql = 'SELECT {0} FROM\n '.format(what) + ', '.join(tables) if where: sql += '\n WHERE\n ' + ' AND\n '.join(where) if sort: sql += '\nORDER BY {0}.{1} {2}'.format(sort_table, sort, order) return sql, args def _select(self, keys, cmps, explain=False, verbosity=0, limit=None, offset=0, sort=None, include_data=True): con = self._connect() self._initialize(con) if sort: if sort[0] == '-': order = 'DESC' sort = sort[1:] else: order = 'ASC' if sort in ['id', 'energy', 'username', 'calculator', 'ctime', 'mtime', 'magmom', 'pbc', 'fmax', 'smax', 'volume', 'mass', 'charge', 'natoms']: sort_table = 'systems' else: for dct in self._select(keys + [sort], cmps, limit=1, include_data=False): if isinstance(dct['key_value_pairs'][sort], basestring): sort_table = 'text_key_values' else: sort_table = 'number_key_values' break else: return else: order = None sort_table = None if include_data: what = 'systems.*' else: what = ', '.join('systems.' + name for name in self.columnnames[:26]) sql, args = self.create_select_statement(keys, cmps, sort, order, sort_table, what) if explain: sql = 'EXPLAIN QUERY PLAN ' + sql if limit: sql += '\nLIMIT {0}'.format(limit) if offset: sql += '\nOFFSET {0}'.format(offset) if verbosity == 2: print(sql, args) cur = con.cursor() cur.execute(sql, args) if explain: for row in cur.fetchall(): yield {'explain': row} else: for values in cur.fetchall(): yield self._convert_tuple_to_row(values) @parallel_function def count(self, selection=None, **kwargs): keys, cmps = parse_selection(selection, **kwargs) sql, args = self.create_select_statement(keys, cmps, what='COUNT(*)') con = self._connect() self._initialize(con) cur = con.cursor() cur.execute(sql, args) return cur.fetchone()[0] def analyse(self): con = self._connect() self._initialize(con) con.execute('ANALYZE') def _update(self, ids, delete_keys, add_key_value_pairs): """Update row(s). ids: int or list of int ID's of rows to update. delete_keys: list of str Keys to remove. add_key_value_pairs: dict Key-value pairs to add. Returns number of key-value pairs added and keys removed. """ rows = [self._get_row(id) for id in ids] if self.connection: # We are already running inside a context manager: return self._update_rows(rows, delete_keys, add_key_value_pairs) # Create new context manager: with self: return self._update_rows(rows, delete_keys, add_key_value_pairs) def _update_rows(self, rows, delete_keys, add_key_value_pairs): m = 0 n = 0 for row in rows: kvp = row.key_value_pairs n += len(kvp) for key in delete_keys: kvp.pop(key, None) n -= len(kvp) m -= len(kvp) kvp.update(add_key_value_pairs) m += len(kvp) self._write(row, kvp, None) return m, n @parallel_function @lock def delete(self, ids): con = self._connect() self._delete(con.cursor(), ids) con.commit() con.close() def _delete(self, cur, ids, tables=None): tables = tables or all_tables[::-1] for table in tables: cur.executemany('DELETE FROM {0} WHERE id=?'.format(table), ((id,) for id in ids)) @property def metadata(self): if self._metadata is None: self._initialize(self._connect()) return self._metadata.copy() @metadata.setter def metadata(self, dct): self._metadata = dct con = self._connect() self._initialize(con) md = json.dumps(dct) cur = con.cursor() cur.execute( "SELECT COUNT(*) FROM information WHERE name='metadata'") if cur.fetchone()[0]: cur.execute( "UPDATE information SET value=? WHERE name='metadata'", [md]) else: cur.execute('INSERT INTO information VALUES (?, ?)', ('metadata', md)) con.commit() def blob(array): """Convert array to blob/buffer object.""" if array is None: return None if len(array) == 0: array = np.zeros(0) if array.dtype == np.int64: array = array.astype(np.int32) if not np.little_endian: array.byteswap(True) return buffer(np.ascontiguousarray(array)) def deblob(buf, dtype=float, shape=None): """Convert blob/buffer object to ndarray of correct dtype and shape. (without creating an extra view).""" if buf is None: return None if len(buf) == 0: array = np.zeros(0, dtype) else: if len(buf) % 2 == 1: # old psycopg2: array = np.fromstring(str(buf)[1:].decode('hex'), dtype) else: array = np.frombuffer(buf, dtype) if not np.little_endian: array.byteswap(True) if shape is not None: array.shape = shape return array if __name__ == '__main__': import sys from ase.db import connect con = connect(sys.argv[1]) con._initialize(con._connect()) print('Version:', con.version) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/static/000077500000000000000000000000001316323560300224135ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/static/style.css000066400000000000000000000012271316323560300242670ustar00rootroot00000000000000 .myrow { font-size: 0; } .myrow > * { float: none; display: inline-block; font-size: 14px; /* if using LESS it's quicker to just use @font-size-base */ cursor: pointer; } .myrow > *:nth-last-child(2) { vertical-align: bottom; } .myrow p:nth-last-child(2) { margin-bottom: 0; /* optional */ } .col-centered{ float: none; margin: 0 auto; } .ui-autocomplete { max-height: 200px; overflow-y: auto; /* prevent horizontal scrollbar */ overflow-x: hidden; } .item:hover .media-object { height: 70px; width: 140px; } #rowentry {background-color: #FFFFFF;} #rowentry:hover {background-color: #DDDDDD; cursor: pointer}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/static/summary.js000066400000000000000000000013701316323560300244470ustar00rootroot00000000000000 Jmol._isAsync = false; var jmolApplet0; var Info = { width: 450, height: 450, debug: false, color: "0xFFFFFF", addSelectionOptions: false, use: "HTML5", // JAVA HTML5 WEBGL are all options j2sPath: "/static/jsmol/j2s", // XXX how coded for now. //serverURL: "http://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php", readyFunction: jmol_isReady, disableJ2SLoadMonitor: true, disableInitialConsole: true, allowJavaScript: false }; function repeatCell(n1, n2, n3) { var s = '{ ' + n1.toString() + ' ' + n2.toString() + ' ' + n3.toString() + ' };'; Jmol.script(jmolApplet0, 'load "" ' + s); } $(document).ready(function() { $("#appdiv").html(Jmol.getAppletHtml("jmolApplet0", Info)) }) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/summary.py000066400000000000000000000203031316323560300231710ustar00rootroot00000000000000from __future__ import print_function import os import shutil import os.path as op from ase.data import atomic_masses, chemical_symbols from ase.db.core import float_to_time_string, now from ase.geometry import cell_to_cellpar from ase.utils import formula_metal, Lock class Summary: def __init__(self, row, meta={}, subscript=None, prefix='', tmpdir='.'): self.row = row self.cell = [['{:.3f}'.format(a) for a in axis] for axis in row.cell] par = ['{:.3f}'.format(x) for x in cell_to_cellpar(row.cell)] self.lengths = par[:3] self.angles = par[3:] forces = row.get('constrained_forces') if forces is None: fmax = None self.forces = None else: fmax = (forces**2).sum(1).max()**0.5 N = len(forces) self.forces = [] for n, f in enumerate(forces): if n < 5 or n >= N - 5: f = tuple('{0:10.3f}'.format(x) for x in f) symbol = chemical_symbols[row.numbers[n]] self.forces.append((n, symbol) + f) elif n == 5: self.forces.append((' ...', '', ' ...', ' ...', ' ...')) self.stress = row.get('stress') if self.stress is not None: self.stress = ', '.join('{0:.3f}'.format(s) for s in self.stress) if 'masses' in row: mass = row.masses.sum() else: mass = atomic_masses[row.numbers].sum() self.formula = formula_metal(row.numbers) if subscript: self.formula = subscript.sub(r'\1', self.formula) age = float_to_time_string(now() - row.ctime, True) table = dict((key, value) for key, value in [ ('id', row.id), ('age', age), ('formula', self.formula), ('user', row.user), ('calculator', row.get('calculator')), ('energy', row.get('energy')), ('fmax', fmax), ('charge', row.get('charge')), ('mass', mass), ('magmom', row.get('magmom')), ('unique id', row.unique_id), ('volume', row.get('volume'))] if value is not None) table.update(row.key_value_pairs) for key, value in table.items(): if isinstance(value, float): table[key] = '{:.3f}'.format(value) kd = meta.get('key_descriptions', {}) misc = set(table.keys()) self.layout = [] for headline, columns in meta['layout']: empty = True newcolumns = [] for column in columns: newcolumn = [] for block in column: if block is None: pass elif isinstance(block, tuple): title, keys = block rows = [] for key in keys: value = table.get(key, None) if value is not None: if key in misc: misc.remove(key) desc, unit = kd.get(key, [0, key, ''])[1:] rows.append((desc, value, unit)) if rows: block = (title, rows) else: continue elif block.endswith('.png'): name = op.join(tmpdir, prefix + block) if not op.isfile(name): self.create_figures(row, prefix, tmpdir, meta['functions']) if op.getsize(name) == 0: # Skip empty files: block = None newcolumn.append(block) if block is not None: empty = False newcolumns.append(newcolumn) if not empty: self.layout.append((headline, newcolumns)) if misc: rows = [] for key in sorted(misc): value = table[key] desc, unit = kd.get(key, [0, key, ''])[1:] rows.append((desc, value, unit)) self.layout.append(('Miscellaneous', [[('Items', rows)]])) self.dipole = row.get('dipole') if self.dipole is not None: self.dipole = ', '.join('{0:.3f}'.format(d) for d in self.dipole) self.data = row.get('data') if self.data: self.data = ', '.join(self.data.keys()) self.constraints = row.get('constraints') if self.constraints: self.constraints = ', '.join(d['name'] for d in self.constraints) def create_figures(self, row, prefix, tmpdir, functions): with Lock('ase.db.web.lock'): for func, filenames in functions: for filename in filenames: try: os.remove(filename) except OSError: # Python 3 only: FileNotFoundError pass func(row) for filename in filenames: path = os.path.join(tmpdir, prefix + filename) if os.path.isfile(filename): shutil.move(filename, path) else: # Create an empty file: with open(path, 'w'): pass def write(self): row = self.row print(self.formula + ':') for headline, columns in self.layout: blocks = columns[0] if len(columns) == 2: blocks += columns[1] print((' ' + headline + ' ').center(78, '=')) for block in blocks: if block is None: pass elif isinstance(block, tuple): title, keys = block print(title + ':') if not keys: print() continue width = max(len(name) for name, value, unit in keys) print('{:{width}}|value'.format('name', width=width)) for name, value, unit in keys: print('{:{width}}|{} {}'.format(name, value, unit, width=width)) print() elif block.endswith('.png'): if op.isfile(block) and op.getsize(block) > 0: print(block) print() elif block == 'CELL': print('Unit cell in Ang:') print('axis|periodic| x| y| z') c = 1 fmt = ' {0}| {1}|{2[0]:>11}|{2[1]:>11}|{2[2]:>11}' for p, axis in zip(row.pbc, self.cell): print(fmt.format(c, [' no', 'yes'][p], axis)) c += 1 print('Lengths: {:>10}{:>10}{:>10}' .format(*self.lengths)) print('Angles: {:>10}{:>10}{:>10}\n' .format(*self.angles)) elif block == 'FORCES' and self.forces is not None: print('\nForces in ev/Ang:') for f in self.forces: print('{:4}|{:2}|{}|{}|{}'.format(*f)) print() if self.stress: print('Stress tensor (xx, yy, zz, zy, zx, yx) in eV/Ang^3:') print(' ', self.stress, '\n') if self.dipole: print('Dipole moment in e*Ang: ({})\n'.format(self.dipole)) if self.constraints: print('Constraints:', self.constraints, '\n') if self.data: print('Data:', self.data, '\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/table.py000066400000000000000000000107001316323560300225630ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.db.core import float_to_time_string, now all_columns = ['id', 'age', 'user', 'formula', 'calculator', 'energy', 'fmax', 'pbc', 'volume', 'charge', 'mass', 'smax', 'magmom'] def plural(n, word): if n == 1: return '1 ' + word return '%d %ss' % (n, word) def cut(txt, length): if len(txt) <= length or length == 0: return txt return txt[:length - 3] + '...' def cutlist(lst, length): if len(lst) <= length or length == 0: return lst return lst[:9] + ['... ({0} more)'.format(len(lst) - 9)] class Table: def __init__(self, connection, verbosity=1, cut=35): self.connection = connection self.verbosity = verbosity self.cut = cut self.rows = [] self.columns = None self.id = None self.right = None self.keys = None def select(self, query, columns, sort, limit, offset): self.limit = limit self.offset = offset self.rows = [Row(row, columns) for row in self.connection.select( query, verbosity=self.verbosity, limit=limit, offset=offset, sort=sort, include_data=False)] delete = set(range(len(columns))) for row in self.rows: for n in delete.copy(): if row.values[n] is not None: delete.remove(n) delete = sorted(delete, reverse=True) for row in self.rows: for n in delete: del row.values[n] self.columns = list(columns) for n in delete: del self.columns[n] def format(self, subscript=None): right = set() # right-adjust numbers allkeys = set() for row in self.rows: numbers = row.format(self.columns, subscript) right.update(numbers) allkeys.update(row.dct.get('key_value_pairs', {})) right.add('age') self.right = [column in right for column in self.columns] self.keys = sorted(allkeys) def write(self, query=None): self.format() L = [[len(s) for s in row.strings] for row in self.rows] L.append([len(c) for c in self.columns]) N = np.max(L, axis=0) fmt = '{0:{align}{width}}' print('|'.join(fmt.format(c, align='<>'[a], width=w) for c, a, w in zip(self.columns, self.right, N))) for row in self.rows: print('|'.join(fmt.format(c, align='<>'[a], width=w) for c, a, w in zip(row.strings, self.right, N))) if self.verbosity == 0: return nrows = len(self.rows) if self.limit and nrows == self.limit: n = self.connection.count(query) print('Rows:', n, '(showing first {0})'.format(self.limit)) else: print('Rows:', nrows) if self.keys: print('Keys:', ', '.join(cutlist(self.keys, self.cut))) def write_csv(self): print(', '.join(self.columns)) for row in self.rows: print(', '.join(str(val) for val in row.values)) class Row: def __init__(self, dct, columns): self.dct = dct self.values = None self.strings = None self.more = False self.set_columns(columns) def set_columns(self, columns): self.values = [] for c in columns: if c == 'age': value = float_to_time_string(now() - self.dct.ctime) elif c == 'pbc': value = ''.join('FT'[p] for p in self.dct.pbc) else: value = getattr(self.dct, c, None) self.values.append(value) def toggle(self): self.more = not self.more def format(self, columns, subscript=None): self.strings = [] numbers = set() for value, column in zip(self.values, columns): if column == 'formula' and subscript: value = subscript.sub(r'\1', value) elif isinstance(value, int): value = str(value) numbers.add(column) elif isinstance(value, float): numbers.add(column) value = '{0:.3f}'.format(value) elif value is None: value = '' self.strings.append(value) return numbers ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/000077500000000000000000000000001316323560300231225ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/checkbox.html000066400000000000000000000014401316323560300255750ustar00rootroot00000000000000

ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/combo.html000066400000000000000000000032161316323560300251110ustar00rootroot00000000000000
ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/interval.html000066400000000000000000000023551316323560300256410ustar00rootroot00000000000000
-
ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/js.html000066400000000000000000000011451316323560300244250ustar00rootroot00000000000000 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/layout.html000066400000000000000000000040471316323560300253320ustar00rootroot00000000000000 {% include 'js.html' %} {% include 'style.html' %} {% block head %} {% endblock %} {% set proj = md['title'] or 'Browse ASE Database' %} {% block title %}{% endblock %} {% if projects|length != 0 %}
{% endif %} {% block content %} {% endblock %} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/style.html000066400000000000000000000015331316323560300251520ustar00rootroot00000000000000 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/summary.html000066400000000000000000000120601316323560300255040ustar00rootroot00000000000000{% extends 'layout.html' %} {% macro atoms() %} {% if d.numbers|length %}
{% if open_ase_gui %} {% endif %}
{% if open_ase_gui %} Open ASE's GUI {% endif %}
{% endif %} {% endmacro %} {% macro forces() %} {% if s.forces %}

Relaxtion forces in eV/Ã…

{% for f in s.forces %} {% endfor %}
# symbol x y z
{{ f[0] }} {{ f[1] }} {{ f[2] }} {{ f[3] }} {{ f[4] }}
{% endif %} {% endmacro %} {% macro cell() %} {% for axis in s.cell %} {% for a in axis %} {% endfor %} {% endfor %}
Axis x y z Periodic
{{ loop.index }}{{ a }}{{ d.pbc[loop.index0] }}
{% for L in s.lengths %} {% endfor %}{% for a in s.angles %} {% endfor %}
Lengths:{{ L }}
Angles:{{ a }}
{% endmacro %} {% macro table(thing) %} {% set subtitle, rows = thing %} {% for key, value, unit in rows %} {% endfor %}
{{ subtitle }} Value Unit
{{ key }} {{ value|safe }} {{ unit|safe }}
{% endmacro %} {% block title %} {{proj}} - Summary {% endblock %} {% set d = s.row %} {% block head %} {% if not open_ase_gui %} {% endif %} {% endblock %} {% block content %}

{{ s.formula|safe }}

{% for title, things in s.layout %}
{% for column in things %}
{% for thing in column %}
{% if thing == 'ATOMS' %} {{ atoms() }} {% elif thing == 'FORCES' %} {{ forces() }} {% elif thing == 'CELL' %} {{ cell() }} {% elif thing is none %} {% elif thing|length == 2 %} {{ table(thing) }} {% else %} {% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endblock content %} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/templates/table.html000066400000000000000000000175331316323560300251100ustar00rootroot00000000000000{% extends 'layout.html' %} {% block title %} {{proj}} - Search {% endblock %} {% block content %} {% set columns = md['default_columns'] %} {% set meta = md['key_descriptions'] or { } %} {% set ctrl = md['special_keys'] or [] %}

{{proj}}

Displaying rows {{ row1 }}-{{ row2 }} out of {{ nrows }}
{%- for c in t.columns %} {%- endfor %} {% for row in t.rows -%} {%- autoescape false -%} {%- for s in row.strings -%} {% if s != "" %} {% else %} {% endif %} {% endfor %} {% endautoescape %} {% set dct=row.dct %} {% set id=dct.id %} {% endfor %}
{% set colDisplay = { 'col' : c } %} {% if c in meta %} {% set _dummy = colDisplay.update({'col' : meta[c][0]}) %} {% endif %} {% if con.sort == c %}↓ {% elif con.sort == '-' + c %}↑ {% endif -%} {% if c == 'formula' %} Formula {% else %} {{ colDisplay['col'] }} {% endif %}
{{ s }} -
{% endblock content %} {% macro select(control) %} {% set key, text, choises = control[1:] %} {% set choise = con.query[1][key] %} {{ text }}: {% endmacro %} {% macro boolean(control) %} {% set key, text = control[1:] %} {% set choise = con.query[1][key] %} {{ text }}: {% endmacro %} {% macro myrange(control) %} {% set id, text, choises = control[1:] %} {% set v1, v2, var = con.query[1].get(id, ['', '', '']) %} {{ text }}: -
{% endmacro %} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/db/web.py000066400000000000000000000062011316323560300222520ustar00rootroot00000000000000import re import os from ase.db.core import default_key_descriptions functions = [] def creates(*filenames): def decorator(func): functions.append((func, filenames)) return func return decorator def process_metadata(db, html=True): meta = db.metadata mod = {} if db.python: with open(db.python) as fd: code = fd.read() path = os.path.dirname(db.python) code = 'import sys; sys.path[:0] = ["{}"]; {}'.format(path, code) # We use eval here instead of exec because it works on both # Python 2 and 3. eval(compile(code, db.python, 'exec'), mod, mod) for key, default in [('title', 'ASE database'), ('default_columns', []), ('special_keys', []), ('key_descriptions', {}), ('layout', [])]: meta[key] = mod.get(key, meta.get(key, default)) if not meta['default_columns']: meta['default_columns'] = ['id', 'formula'] # Also fill in default key-descriptions: kd = default_key_descriptions.copy() kd.update(meta['key_descriptions']) meta['key_descriptions'] = kd for key, value in kd.items(): if not value[1]: kd[key] = (value[0], value[0], value[2]) sk = [] for special in meta['special_keys']: kind = special[0] if kind == 'SELECT': key = special[1] choises = sorted({row.get(key) for row in db.select(key)}) if key in kd: longkey = kd[key][0] else: longkey = key special = ['SELECT', key, longkey, choises] elif kind == 'BOOL': key = special[1] if key in kd: longkey = kd[key][0] else: longkey = key special = ['BOOL', key, longkey] else: # RANGE pass sk.append(special) meta['special_keys'] = sk if not meta['layout']: keys = ['id', 'formula', 'age'] meta['layout'] = [ ('Basic properties', [['ATOMS', 'CELL'], [('Key Value Pairs', keys), 'FORCES']])] if mod: meta['functions'] = functions[:] functions[:] = [] sub = re.compile(r'`(.)_(.)`') sup = re.compile(r'`(.*)\^\{?(.*?)\}?`') # Convert LaTeX to HTML or raw text: for key, value in meta['key_descriptions'].items(): short, long, unit = value if html: unit = sub.sub(r'\1\2', unit) unit = sup.sub(r'\1\2', unit) unit = unit.replace(r'\text{', '').replace('}', '') else: unit = sub.sub(r'\1_\2', unit) unit = sup.sub(r'\1^\2', unit) meta['key_descriptions'][key] = (short, long, unit) all_keys1 = set(meta['key_descriptions']) for row in db.select(): all_keys1.update(row._keys) all_keys2 = [] for key in all_keys1: short, long, unit = meta['key_descriptions'].get(key, ('', '', '')) all_keys2.append((key, long, unit)) meta['all_keys'] = sorted(all_keys2) return meta ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/000077500000000000000000000000001316323560300213145ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/__init__.py000066400000000000000000000015061316323560300234270ustar00rootroot00000000000000import numpy as np from ase.dft.stm import STM from ase.dft.dos import DOS from ase.dft.wannier import Wannier from ase.dft.kpoints import monkhorst_pack __all__ = ['STM', 'DOS', 'Wannier', 'monkhorst_pack'] def get_distribution_moment(x, y, order=0): """Return the moment of nth order of distribution. 1st and 2nd order moments of a band correspond to the band's center and width respectively. For integration, the trapezoid rule is used. """ x = np.asarray(x) y = np.asarray(y) if order == 0: return np.trapz(y, x) elif isinstance(order, int): return np.trapz(x**order * y, x) / np.trapz(y, x) elif hasattr(order, '__iter__'): return [get_distribution_moment(x, y, n) for n in order] else: raise ValueError('Illegal order: %s' % order) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/band_structure.py000066400000000000000000000141211316323560300247110ustar00rootroot00000000000000import numpy as np from ase.dft.kpoints import labels_from_kpts from ase.io.jsonio import encode, decode from ase.parallel import paropen def get_band_structure(atoms=None, calc=None): """Create band structure object from Atoms or calculator.""" atoms = atoms if atoms is not None else calc.atoms calc = calc if calc is not None else atoms.calc kpts = calc.get_ibz_k_points() energies = [] for s in range(calc.get_number_of_spins()): energies.append([calc.get_eigenvalues(kpt=k, spin=s) for k in range(len(kpts))]) energies = np.array(energies) return BandStructure(cell=atoms.cell, kpts=kpts, energies=energies, reference=calc.get_fermi_level()) class BandStructure: def __init__(self, cell, kpts, energies=None, reference=0.0): """Create band structure object from energies and k-points.""" assert cell.shape == (3, 3) self.cell = cell assert kpts.shape[1] == 3 self.kpts = kpts if energies is not None: self.energies = np.asarray(energies) else: self.energies = None self.reference = reference self.ax = None self.xcoords = None self.show_legend = False def get_labels(self): return labels_from_kpts(self.kpts, self.cell) def todict(self): return dict((key, getattr(self, key)) for key in ['cell', 'kpts', 'energies', 'reference']) def write(self, filename): """Write to json file.""" with paropen(filename, 'w') as f: f.write(encode(self)) @staticmethod def read(filename): """Read from json file.""" with open(filename, 'r') as f: dct = decode(f.read()) return BandStructure(**dct) def plot(self, ax=None, spin=None, emin=-10, emax=5, filename=None, show=None, ylabel=None, colors=None, label=None, spin_labels=['spin up', 'spin down'], loc=None, **plotkwargs): """Plot band-structure. spin: int or None Spin channel. Default behaviour is to plot both spin up and down for spin-polarized calculations. emin,emax: float Maximum energy above reference. filename: str Write image to a file. ax: Axes MatPlotLib Axes object. Will be created if not supplied. show: bool Show the image. """ if self.ax is None: ax = self.prepare_plot(ax, emin, emax, ylabel) if spin is None: e_skn = self.energies else: e_skn = self.energies[spin, np.newaxis] if colors is None: if len(e_skn) == 1: colors = 'g' else: colors = 'yb' nspins = len(e_skn) for spin, e_kn in enumerate(e_skn): color = colors[spin] kwargs = dict(color=color) kwargs.update(plotkwargs) if nspins == 2: if label: lbl = label + ' ' + spin_labels[spin] else: lbl = spin_labels[spin] else: lbl = label ax.plot(self.xcoords, e_kn[:, 0], label=lbl, **kwargs) for e_k in e_kn.T[1:]: ax.plot(self.xcoords, e_k, **kwargs) self.show_legend = label is not None or nspins == 2 self.finish_plot(filename, show, loc) return ax def plot_with_colors(self, ax=None, emin=-10, emax=5, filename=None, show=None, energies=None, colors=None, ylabel=None, clabel='$s_z$', cmin=-1.0, cmax=1.0, sortcolors=False, loc=None): """Plot band-structure with colors.""" import matplotlib.pyplot as plt if self.ax is None: ax = self.prepare_plot(ax, emin, emax, ylabel) shape = energies.shape xcoords = np.vstack([self.xcoords] * shape[1]) if sortcolors: perm = colors.argsort(axis=None) energies = energies.ravel()[perm].reshape(shape) colors = colors.ravel()[perm].reshape(shape) xcoords = xcoords.ravel()[perm].reshape(shape) for e_k, c_k, x_k in zip(energies, colors, xcoords): things = ax.scatter(x_k, e_k, c=c_k, s=2, vmin=cmin, vmax=cmax) cbar = plt.colorbar(things) cbar.set_label(clabel) self.finish_plot(filename, show, loc) return ax def prepare_plot(self, ax=None, emin=-10, emax=5, ylabel=None): import matplotlib.pyplot as plt if ax is None: ax = plt.figure().add_subplot(111) def pretty(kpt): if kpt == 'G': kpt = r'\Gamma' elif len(kpt) == 2: kpt = kpt[0] + '_' + kpt[1] return '$' + kpt + '$' emin += self.reference emax += self.reference self.xcoords, label_xcoords, orig_labels = self.get_labels() labels = [pretty(name) for name in orig_labels] i = 1 while i < len(labels): if label_xcoords[i - 1] == label_xcoords[i]: labels[i - 1] = labels[i - 1][:-1] + ',' + labels[i][1:] labels[i] = '' i += 1 for x in label_xcoords[1:-1]: ax.axvline(x, color='0.5') ylabel = ylabel if ylabel is not None else 'energies [eV]' ax.set_xticks(label_xcoords) ax.set_xticklabels(labels) ax.axis(xmin=0, xmax=self.xcoords[-1], ymin=emin, ymax=emax) ax.set_ylabel(ylabel) ax.axhline(self.reference, color='k') self.ax = ax return ax def finish_plot(self, filename, show, loc): import matplotlib.pyplot as plt if self.show_legend: leg = plt.legend(loc=loc) leg.get_frame().set_alpha(1) if filename: plt.savefig(filename) if show is None: show = not filename if show: plt.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/bandgap.py000066400000000000000000000106521316323560300232660ustar00rootroot00000000000000from __future__ import print_function import functools import warnings from ase.utils import convert_string_to_fd import numpy as np def get_band_gap(calc, direct=False, spin=None, output='-'): warnings.warn('Please use ase.dft.bandgap.bandgap() instead!') gap, (s1, k1, n1), (s2, k2, n2) = bandgap(calc, direct, spin, output) ns = calc.get_number_of_spins() if ns == 2 and spin is None: return gap, (s1, k1), (s2, k2) return gap, k1, k2 def bandgap(calc=None, direct=False, spin=None, output='-', eigenvalues=None, efermi=None, kpts=None): """Calculates the band-gap. Parameters: calc: Calculator object Electronic structure calculator object. direct: bool Calculate direct band-gap. spin: int or None For spin-polarized systems, you can use spin=0 or spin=1 to look only at a single spin-channel. output: file descriptor Use output=None for no text output or '-' for stdout (default). eigenvalues: ndarray of shape (nspin, nkpt, nband) or (nkpt, nband) Eigenvalues. efermi: float Fermi level (defaults to 0.0). kpts: ndarray of shape (nkpt, 3) For pretty text output only. Returns a (gap, p1, p2) tuple where p1 and p2 are tuples of indices of the valence and conduction points (s, k, n). Example: >>> gap, p1, p2 = bandgap(silicon.calc) Gap: 1.2 eV Transition (v -> c): [0.000, 0.000, 0.000] -> [0.500, 0.500, 0.000] >>> print(gap, p1, p2) 1.2 (0, 0, 3), (0, 5, 4) >>> gap, p1, p2 = bandgap(silicon.calc, direct=True) Direct gap: 3.4 eV Transition at: [0.000, 0.000, 0.000] >>> print(gap, p1, p2) 3.4 (0, 0, 3), (0, 0, 4) """ if calc: kpts = calc.get_ibz_k_points() nk = len(kpts) ns = calc.get_number_of_spins() eigenvalues = np.array([[calc.get_eigenvalues(kpt=k, spin=s) for k in range(nk)] for s in range(ns)]) if efermi is None: efermi = calc.get_fermi_level() efermi = efermi or 0.0 e_skn = eigenvalues - efermi if eigenvalues.ndim != 3: e_skn = e_skn[np.newaxis] ns, nk, nb = e_skn.shape N_sk = (e_skn < 0.0).sum(2) # number of occupied bands e_skn = np.array([[e_skn[s, k, N_sk[s, k] - 1:N_sk[s, k] + 1] for k in range(nk)] for s in range(ns)]) ev_sk = e_skn[:, :, 0] # valence band ec_sk = e_skn[:, :, 1] # conduction band if ns == 1: s1 = 0 s2 = 0 gap, k1, n1, k2, n2 = find_gap(N_sk, ev_sk[0], ec_sk[0], direct) elif spin is None: gap, k1, n1, k2, n2 = find_gap(N_sk, ev_sk.ravel(), ec_sk.ravel(), direct) if gap > 0.0: s1, k1 = divmod(k1, nk) s2, k2 = divmod(k2, nk) else: s1 = None s2 = None else: gap, k1, n1, k2, n2 = find_gap(N_sk[spin:spin + 1], ev_sk[spin], ec_sk[spin], direct) s1 = spin s2 = spin if output is not None: def skn(s, k, n): """Convert k or (s, k) to string.""" if kpts is None: return '(s={}, k={}, n={})'.format(s, k, n) return '(s={}, k={}, n={}, [{:.3f}, {:.3f}, {:.3f}])'.format( s, k, n, *kpts[k]) p = functools.partial(print, file=convert_string_to_fd(output)) if spin is not None: p('spin={}: '.format(spin), end='') if gap == 0.0: p('No gap!') elif direct: p('Direct gap: {:.3f} eV'.format(gap)) p('Transition at:', skn(s1, k1, n1)) else: p('Gap: {:.3f} eV'.format(gap)) p('Transition (v -> c):') p(' ', skn(s1, k1, n1), '->', skn(s2, k2, n2)) if eigenvalues.ndim != 3: p1 = (k1, n1) p2 = (k2, n2) else: p1 = (s1, k1, n1) p2 = (s2, k2, n2) return gap, p1, p2 def find_gap(N_sk, ev_k, ec_k, direct): """Helper function.""" if (N_sk.ptp(axis=1) > 0).any(): # Some band must be crossing the fermi-level return 0.0, None, None, None, None n = N_sk[0, 0] if direct: gap_k = ec_k - ev_k k = gap_k.argmin() return gap_k[k], k, n - 1, k, n kv = ev_k.argmax() kc = ec_k.argmin() return ec_k[kc] - ev_k[kv], kv, n - 1, kc, n ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/bee.py000066400000000000000000000125351316323560300224270ustar00rootroot00000000000000from __future__ import print_function import os import pickle import numpy as np from ase.atoms import Atoms from ase.parallel import rank from ase.utils import pickleload def ensemble(energy, contributions, xc, verbose=False): """Returns an array of ensemble total energies.""" ensemble = BEEFEnsemble(None, energy, contributions, xc, verbose) return ensemble.get_ensemble_energies() class BEEFEnsemble: """BEEF type ensemble error estimation""" def __init__(self, atoms=None, e=None, contribs=None, xc=None, verbose=True): if (atoms is not None or contribs is not None or xc is not None): if atoms is None: assert e is not None assert contribs is not None assert xc is not None else: if isinstance(atoms, Atoms): calc = atoms.get_calculator() self.atoms = atoms else: calc = atoms self.atoms = calc.atoms self.calc = calc xc = self.calc.get_xc_functional() self.e = e self.contribs = contribs self.xc = xc self.verbose = verbose self.done = False if self.xc in ['BEEF-vdW', 'BEEF', 'PBE']: self.beef_type = 'beefvdw' elif self.xc == 'mBEEF': self.beef_type = 'mbeef' elif self.xc == 'mBEEF-vdW': self.beef_type = 'mbeefvdw' else: raise NotImplementedError('No ensemble for xc = %s' % self.xc) def get_ensemble_energies(self, size=2000, seed=0): """Returns an array of ensemble total energies""" self.seed = seed if rank == 0 and self.verbose: print(self.beef_type, 'ensemble started') if self.contribs is None: self.contribs = self.calc.get_nonselfconsistent_energies( self.beef_type) self.e = self.calc.get_potential_energy(self.atoms) if self.beef_type == 'beefvdw': assert len(self.contribs) == 32 coefs = self.get_beefvdw_ensemble_coefs(size, seed) elif self.beef_type == 'mbeef': assert len(self.contribs) == 64 coefs = self.get_mbeef_ensemble_coefs(size, seed) elif self.beef_type == 'mbeefvdw': assert len(self.contribs) == 28 coefs = self.get_mbeefvdw_ensemble_coefs(size, seed) self.de = np.dot(coefs, self.contribs) self.done = True if rank == 0 and self.verbose: print(self.beef_type, 'ensemble finished') return self.e + self.de def get_beefvdw_ensemble_coefs(self, size=2000, seed=0): """Perturbation coefficients of the BEEF-vdW ensemble""" from ase.dft.pars_beefvdw import uiOmega as omega assert np.shape(omega) == (31, 31) W, V, generator = self.eigendecomposition(omega, seed) RandV = generator.randn(31, size) for j in range(size): v = RandV[:, j] coefs_i = (np.dot(np.dot(V, np.diag(np.sqrt(W))), v)[:]) if j == 0: ensemble_coefs = coefs_i else: ensemble_coefs = np.vstack((ensemble_coefs, coefs_i)) PBEc_ens = -ensemble_coefs[:, 30] return (np.vstack((ensemble_coefs.T, PBEc_ens))).T def get_mbeef_ensemble_coefs(self, size=2000, seed=0): """Perturbation coefficients of the mBEEF ensemble""" from ase.dft.pars_mbeef import uiOmega as omega assert np.shape(omega) == (64, 64) W, V, generator = self.eigendecomposition(omega, seed) mu, sigma = 0.0, 1.0 rand = np.array(generator.normal(mu, sigma, (len(W), size))) return (np.sqrt(2) * np.dot(np.dot(V, np.diag(np.sqrt(W))), rand)[:]).T def get_mbeefvdw_ensemble_coefs(self, size=2000, seed=0): """Perturbation coefficients of the mBEEF-vdW ensemble""" from ase.dft.pars_mbeefvdw import uiOmega as omega assert np.shape(omega) == (28, 28) W, V, generator = self.eigendecomposition(omega, seed) mu, sigma = 0.0, 1.0 rand = np.array(generator.normal(mu, sigma, (len(W), size))) return (np.sqrt(2) * np.dot(np.dot(V, np.diag(np.sqrt(W))), rand)[:]).T def eigendecomposition(self, omega, seed=0): u, s, v = np.linalg.svd(omega) # unsafe: W, V = np.linalg.eig(omega) generator = np.random.RandomState(seed) return s, v.T, generator def write(self, fname): """Write ensemble data file""" if not fname.endswith('.bee'): fname += '.bee' assert self.done if rank == 0: if os.path.isfile(fname): os.rename(fname, fname + '.old') obj = [self.e, self.de, self.contribs, self.seed, self.xc] with open(fname, 'wb') as f: pickle.dump(obj, f, protocol=2) def readbee(fname, all=False): if not fname.endswith('.bee'): fname += '.bee' with open(fname, 'rb') as f: e, de, contribs, seed, xc = pickleload(f) if all: return e, de, contribs, seed, xc else: return e + de def BEEF_Ensemble(*args, **kwargs): import warnings warnings.warn('Please use BEEFEnsemble instead of BEEF_Ensemble.') return BEEFEnsemble(*args, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/dos.py000066400000000000000000000167601316323560300224650ustar00rootroot00000000000000import functools from math import pi, sqrt import numpy as np from ase.dft.kpoints import get_monkhorst_pack_size_and_offset class DOS: def __init__(self, calc, width=0.1, window=None, npts=401): """Electronic Density Of States object. calc: calculator object Any ASE compliant calculator object. width: float Width of guassian smearing. Use width=0.0 for linear tetrahedron interpolation. window: tuple of two float Use ``window=(emin, emax)``. If not specified, a window big enough to hold all the eigenvalues will be used. npts: int Number of points. """ self.npts = npts self.width = width self.w_k = calc.get_k_point_weights() self.nspins = calc.get_number_of_spins() self.e_skn = np.array([[calc.get_eigenvalues(kpt=k, spin=s) for k in range(len(self.w_k))] for s in range(self.nspins)]) self.e_skn -= calc.get_fermi_level() if window is None: emin = None emax = None else: emin, emax = window if emin is None: emin = self.e_skn.min() - 5 * self.width if emax is None: emax = self.e_skn.max() + 5 * self.width self.energies = np.linspace(emin, emax, npts) if width == 0.0: bzkpts = calc.get_bz_k_points() size, offset = get_monkhorst_pack_size_and_offset(bzkpts) bz2ibz = calc.get_bz_to_ibz_map() shape = (self.nspins,) + tuple(size) + (-1,) self.e_skn = self.e_skn[:, bz2ibz].reshape(shape) self.cell = calc.atoms.cell def get_energies(self): """Return the array of energies used to sample the DOS. The energies are reported relative to the Fermi level. """ return self.energies def delta(self, energy): """Return a delta-function centered at 'energy'.""" x = -((self.energies - energy) / self.width)**2 return np.exp(x) / (sqrt(pi) * self.width) def get_dos(self, spin=None): """Get array of DOS values. The *spin* argument can be 0 or 1 (spin up or down) - if not specified, the total DOS is returned. """ if spin is None: if self.nspins == 2: # Spin-polarized calculation, but no spin specified - # return the total DOS: return self.get_dos(spin=0) + self.get_dos(spin=1) else: spin = 0 if self.width == 0.0: return ltidos(self.cell, self.e_skn[spin], self.energies) dos = np.zeros(self.npts) for w, e_n in zip(self.w_k, self.e_skn[spin]): for e in e_n: dos += w * self.delta(e) return dos def ltidos(cell, eigs, energies, weights=None): """DOS from linear tetrahedron interpolation. cell: 3x3 ndarray-like Unit cell. eigs: (n1, n2, n3, nbands)-shaped ndarray Eigenvalues on a Monkhorst-Pack grid (not reduced). energies: 1-d array-like Energies where the DOS is calculated (must be a uniform grid). weights: (n1, n2, n3, nbands)-shaped ndarray Weights. Defaults to 1. """ from scipy.spatial import Delaunay I, J, K = size = eigs.shape[:3] B = (np.linalg.inv(cell) / size).T indices = np.array([[i, j, k] for i in [0, 1] for j in [0, 1] for k in [0, 1]]) dt = Delaunay(np.dot(indices, B)) dos = np.zeros_like(energies) integrate = functools.partial(_lti, energies, dos) for s in dt.simplices: kpts = dt.points[s] try: M = np.linalg.inv(kpts[1:, :] - kpts[0, :]) except np.linalg.linalg.LinAlgError: continue for i in range(I): for j in range(J): for k in range(K): E = np.array([eigs[(i + a) % I, (j + b) % J, (k + c) % K] for a, b, c in indices[s]]) if weights is None: integrate(kpts, M, E) else: w = np.array([weights[(i + a) % I, (j + b) % J, (k + c) % K] for a, b, c in indices[s]]) integrate(kpts, M, E, w) return dos * abs(np.linalg.det(cell)) def _lti(energies, dos, kpts, M, E, W=None): zero = energies[0] de = energies[1] - zero for z, e in enumerate(E.T): dedk = (np.dot(M, e[1:] - e[0])**2).sum()**0.5 i = e.argsort() k = kpts[i, :, np.newaxis] e0, e1, e2, e3 = ee = e[i] for j in range(3): m = max(0, int((ee[j] - zero) / de) + 1) n = min(len(energies) - 1, int((ee[j + 1] - zero) / de) + 1) if n > m: v = energies[m:n] if j == 0: x10 = (e1 - v) / (e1 - e0) x01 = (v - e0) / (e1 - e0) x20 = (e2 - v) / (e2 - e0) x02 = (v - e0) / (e2 - e0) x30 = (e3 - v) / (e3 - e0) x03 = (v - e0) / (e3 - e0) k1 = k[0] * x10 + k[1] * x01 k2 = k[0] * x20 + k[2] * x02 - k1 k3 = k[0] * x30 + k[3] * x03 - k1 if W is None: w = 0.5 / dedk else: w = np.dot(W[i, z], [x10 + x20 + x30, x01, x02, x03]) w /= 6 * dedk dos[m:n] += (np.cross(k2, k3, 0, 0)**2).sum(1)**0.5 * w elif j == 1: x21 = (e2 - v) / (e2 - e1) x12 = (v - e1) / (e2 - e1) x20 = (e2 - v) / (e2 - e0) x02 = (v - e0) / (e2 - e0) x30 = (e3 - v) / (e3 - e0) x03 = (v - e0) / (e3 - e0) x31 = (e3 - v) / (e3 - e1) x13 = (v - e1) / (e3 - e1) k1 = k[1] * x21 + k[2] * x12 k2 = k[0] * x20 + k[2] * x02 - k1 k3 = k[0] * x30 + k[3] * x03 - k1 k4 = k[1] * x31 + k[3] * x13 - k1 if W is None: w = 0.5 / dedk else: w = np.dot(W[i, z], [x20 + x30, x21 + x31, x12 + x02, x03 + x13]) w /= 8 * dedk dos[m:n] += (np.cross(k2, k3, 0, 0)**2).sum(1)**0.5 * w dos[m:n] += (np.cross(k4, k3, 0, 0)**2).sum(1)**0.5 * w elif j == 2: x30 = (e3 - v) / (e3 - e0) x03 = (v - e0) / (e3 - e0) x31 = (e3 - v) / (e3 - e1) x13 = (v - e1) / (e3 - e1) x32 = (e3 - v) / (e3 - e2) x23 = (v - e2) / (e3 - e2) k1 = k[0] * x30 + k[3] * x03 k2 = k[1] * x31 + k[3] * x13 - k1 k3 = k[2] * x32 + k[3] * x23 - k1 if W is None: w = 0.5 / dedk else: w = np.dot(W[i, z], [x30, x31, x32, x03 + x13 + x23]) w /= 6 * dedk dos[m:n] += (np.cross(k2, k3, 0, 0)**2).sum(1)**0.5 * w ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/kpoints.py000066400000000000000000000473761316323560300233760ustar00rootroot00000000000000from __future__ import division from ase.utils import basestring import re import warnings from math import sin, cos import numpy as np from ase.geometry import cell_to_cellpar, crystal_structure_from_cell def monkhorst_pack(size): """Construct a uniform sampling of k-space of given size.""" if np.less_equal(size, 0).any(): raise ValueError('Illegal size: %s' % list(size)) kpts = np.indices(size).transpose((1, 2, 3, 0)).reshape((-1, 3)) return (kpts + 0.5) / size - 0.5 def get_monkhorst_pack_size_and_offset(kpts): """Find Monkhorst-Pack size and offset. Returns (size, offset), where:: kpts = monkhorst_pack(size) + offset. The set of k-points must not have been symmetry reduced.""" if len(kpts) == 1: return np.ones(3, int), np.array(kpts[0], dtype=float) size = np.zeros(3, int) for c in range(3): # Determine increment between k-points along current axis delta = max(np.diff(np.sort(kpts[:, c]))) # Determine number of k-points as inverse of distance between kpoints if delta > 1e-8: size[c] = int(round(1.0 / delta)) else: size[c] = 1 if size.prod() == len(kpts): kpts0 = monkhorst_pack(size) offsets = kpts - kpts0 # All offsets must be identical: if (offsets.ptp(axis=0) < 1e-9).all(): return size, offsets[0].copy() raise ValueError('Not an ASE-style Monkhorst-Pack grid!') def get_monkhorst_shape(kpts): warnings.warn('Use get_monkhorst_pack_size_and_offset()[0] instead.') return get_monkhorst_pack_size_and_offset(kpts)[0] def kpoint_convert(cell_cv, skpts_kc=None, ckpts_kv=None): """Convert k-points between scaled and cartesian coordinates. Given the atomic unit cell, and either the scaled or cartesian k-point coordinates, the other is determined. The k-point arrays can be either a single point, or a list of points, i.e. the dimension k can be empty or multidimensional. """ if ckpts_kv is None: icell_cv = 2 * np.pi * np.linalg.pinv(cell_cv).T return np.dot(skpts_kc, icell_cv) elif skpts_kc is None: return np.dot(ckpts_kv, cell_cv.T) / (2 * np.pi) else: raise KeyError('Either scaled or cartesian coordinates must be given.') def parse_path_string(s): """Parse compact string representation of BZ path. A path string can have several non-connected sections separated by commas. The return value is a list of sections where each section is a list of labels. Examples: >>> parse_path_string('GX') [['G', 'X']] >>> parse_path_string('GX,M1A') [['G', 'X'], ['M1', 'A']] """ paths = [] for path in s.split(','): names = [name if name != 'Gamma' else 'G' for name in re.split(r'([A-Z][a-z0-9]*)', path) if name] paths.append(names) return paths def bandpath(path, cell, npoints=50): """Make a list of kpoints defining the path between the given points. path: list or str Can be: * a string that parse_path_string() understands: 'GXL' * a list of BZ points: [(0, 0, 0), (0.5, 0, 0)] * or several lists of BZ points if the the path is not continuous. cell: 3x3 Unit cell of the atoms. npoints: int Length of the output kpts list. Return list of k-points, list of x-coordinates and list of x-coordinates of special points.""" if isinstance(path, basestring): special = get_special_points(cell) paths = [] for names in parse_path_string(path): paths.append([special[name] for name in names]) elif np.array(path[0]).ndim == 1: paths = [path] else: paths = path points = np.concatenate(paths) dists = points[1:] - points[:-1] lengths = [np.linalg.norm(d) for d in kpoint_convert(cell, skpts_kc=dists)] i = 0 for path in paths[:-1]: i += len(path) lengths[i - 1] = 0 length = sum(lengths) kpts = [] x0 = 0 x = [] X = [0] for P, d, L in zip(points[:-1], dists, lengths): n = max(2, int(round(L * (npoints - len(x)) / (length - x0)))) for t in np.linspace(0, 1, n)[:-1]: kpts.append(P + t * d) x.append(x0 + t * L) x0 += L X.append(x0) kpts.append(points[-1]) x.append(x0) return np.array(kpts), np.array(x), np.array(X) get_bandpath = bandpath # old name def labels_from_kpts(kpts, cell, eps=1e-5): """Get an x-axis to be used when plotting a band structure. The first of the returned lists can be used as a x-axis when plotting the band structure. The second list can be used as xticks, and the third as xticklabels. Parameters: kpts: list List of scaled k-points. cell: list Unit cell of the atomic structure. Returns: Three arrays; the first is a list of cumulative distances between k-points, the second is x coordinates of the special points, the third is the special points as strings. """ special_points = get_special_points(cell) points = np.asarray(kpts) diffs = points[1:] - points[:-1] kinks = abs(diffs[1:] - diffs[:-1]).sum(1) > eps N = len(points) indices = [0] indices.extend(np.arange(1, N - 1)[kinks]) indices.append(N - 1) labels = [] for kpt in points[indices]: for label, k in special_points.items(): if abs(kpt - k).sum() < eps: break else: label = '?' labels.append(label) jump = False # marks a discontinuity in the path xcoords = [0] for i1, i2 in zip(indices[:-1], indices[1:]): if not jump and i1 + 1 == i2: length = 0 jump = True # we don't want two jumps in a row else: diff = points[i2] - points[i1] length = np.linalg.norm(kpoint_convert(cell, skpts_kc=diff)) jump = False xcoords.extend(np.linspace(0, length, i2 - i1 + 1)[1:] + xcoords[-1]) xcoords = np.array(xcoords) return xcoords, xcoords[indices], labels special_points = { 'cubic': {'G': [0, 0, 0], 'M': [1 / 2, 1 / 2, 0], 'R': [1 / 2, 1 / 2, 1 / 2], 'X': [0, 1 / 2, 0]}, 'fcc': {'G': [0, 0, 0], 'K': [3 / 8, 3 / 8, 3 / 4], 'L': [1 / 2, 1 / 2, 1 / 2], 'U': [5 / 8, 1 / 4, 5 / 8], 'W': [1 / 2, 1 / 4, 3 / 4], 'X': [1 / 2, 0, 1 / 2]}, 'bcc': {'G': [0, 0, 0], 'H': [1 / 2, -1 / 2, 1 / 2], 'P': [1 / 4, 1 / 4, 1 / 4], 'N': [0, 0, 1 / 2]}, 'tetragonal': {'G': [0, 0, 0], 'A': [1 / 2, 1 / 2, 1 / 2], 'M': [1 / 2, 1 / 2, 0], 'R': [0, 1 / 2, 1 / 2], 'X': [0, 1 / 2, 0], 'Z': [0, 0, 1 / 2]}, 'orthorhombic': {'G': [0, 0, 0], 'R': [1 / 2, 1 / 2, 1 / 2], 'S': [1 / 2, 1 / 2, 0], 'T': [0, 1 / 2, 1 / 2], 'U': [1 / 2, 0, 1 / 2], 'X': [1 / 2, 0, 0], 'Y': [0, 1 / 2, 0], 'Z': [0, 0, 1 / 2]}, 'hexagonal': {'G': [0, 0, 0], 'A': [0, 0, 1 / 2], 'H': [1 / 3, 1 / 3, 1 / 2], 'K': [1 / 3, 1 / 3, 0], 'L': [1 / 2, 0, 1 / 2], 'M': [1 / 2, 0, 0]}} special_paths = { 'cubic': 'GXMGRX,MR', 'fcc': 'GXWKGLUWLK,UX', 'bcc': 'GHNGPH,PN', 'tetragonal': 'GXMGZRAZXR,MA', 'orthorhombic': 'GXSYGZURTZ,YT,UX,SR', 'hexagonal': 'GMKGALHA,LM,KH', 'monoclinic': 'GYHCEM1AXH1,MDZ,YD', 'rhombohedral type 1': 'GLB1,BZGX,QFP1Z,LP', 'rhombohedral type 2': 'GPZQGFP1Q1LZ'} def get_special_points(cell, lattice=None, eps=2e-4): """Return dict of special points. The definitions are from a paper by Wahyu Setyawana and Stefano Curtarolo:: http://dx.doi.org/10.1016/j.commatsci.2010.05.010 cell: 3x3 ndarray Unit cell. lattice: str Optionally check that the cell is one of the following: cubic, fcc, bcc, orthorhombic, tetragonal, hexagonal or monoclinic. eps: float Tolerance for cell-check. """ if isinstance(cell, str): warnings.warn('Please call this function with cell as the first ' 'argument') lattice, cell = cell, lattice from ase.build.tools import niggli_reduce_cell rcell, M = niggli_reduce_cell(cell) latt = crystal_structure_from_cell(rcell, niggli_reduce=False) if lattice: assert latt == lattice.lower(), latt if latt == 'monoclinic': # Transform From Niggli to Setyawana-Curtarolo cell: T = np.array([[0, 1, 0], [-1, 0, 0], [0, 0, 1]]) scell = np.dot(T, rcell) a, b, c, alpha, beta, gamma = cell_to_cellpar(scell, radians=True) M = np.dot(M, T.T) eta = (1 - b * cos(alpha) / c) / (2 * sin(alpha)**2) nu = 1 / 2 - eta * c * cos(alpha) / b points = {'G': [0, 0, 0], 'A': [1 / 2, 1 / 2, 0], 'C': [0, 1 / 2, 1 / 2], 'D': [1 / 2, 0, 1 / 2], 'D1': [1 / 2, 0, -1 / 2], 'E': [1 / 2, 1 / 2, 1 / 2], 'H': [0, eta, 1 - nu], 'H1': [0, 1 - eta, nu], 'H2': [0, eta, -nu], 'M': [1 / 2, eta, 1 - nu], 'M1': [1 / 2, 1 - eta, nu], 'M2': [1 / 2, eta, -nu], 'X': [0, 1 / 2, 0], 'Y': [0, 0, 1 / 2], 'Y1': [0, 0, -1 / 2], 'Z': [1 / 2, 0, 0]} elif latt == 'rhombohedral type 1': a, b, c, alpha, beta, gamma = cell_to_cellpar(cell=cell, radians=True) eta = (1 + 4 * np.cos(alpha)) / (2 + 4 * np.cos(alpha)) nu = 3 / 4 - eta / 2 points = {'G': [0, 0, 0], 'B': [eta, 1 / 2, 1 - eta], 'B1': [1 / 2, 1 - eta, eta - 1], 'F': [1 / 2, 1 / 2, 0], 'L': [1 / 2, 0, 0], 'L1': [0, 0, - 1 / 2], 'P': [eta, nu, nu], 'P1': [1 - nu, 1 - nu, 1 - eta], 'P2': [nu, nu, eta - 1], 'Q': [1 - nu, nu, 0], 'X': [nu, 0, -nu], 'Z': [0.5, 0.5, 0.5]} else: points = special_points[latt] return {label: np.dot(M, kpt) for label, kpt in points.items()} def monkhorst_pack_interpolate(path, values, icell, bz2ibz, size, offset=(0, 0, 0)): """Interpolate values from Monkhorst-Pack sampling. path: (nk, 3) array-like Desired path in units of reciprocal lattice vectors. values: (nibz, ...) array-like Values on Monkhorst-Pack grid. icell: (3, 3) array-like Reciprocal lattice vectors. bz2ibz: (nbz,) array-like of int Map from nbz points in BZ to nibz reduced points in IBZ. size: (3,) array-like of int Size of Monkhorst-Pack grid. offset: (3,) array-like Offset of Monkhorst-Pack grid. Returns *values* interpolated to *path*. """ from scipy.interpolate import LinearNDInterpolator path = (np.asarray(path) + 0.5) % 1 - 0.5 path = np.dot(path, icell) # Fold out values from IBZ to BZ: v = np.asarray(values)[bz2ibz] v = v.reshape(tuple(size) + v.shape[1:]) # Create padded Monkhorst-Pack grid: size = np.asarray(size) i = np.indices(size + 2).transpose((1, 2, 3, 0)).reshape((-1, 3)) k = (i - 0.5) / size - 0.5 + offset k = np.dot(k, icell) # Fill in boundary values: V = np.zeros(tuple(size + 2) + v.shape[3:]) V[1:-1, 1:-1, 1:-1] = v V[0, 1:-1, 1:-1] = v[-1] V[-1, 1:-1, 1:-1] = v[0] V[:, 0, 1:-1] = V[:, -2, 1:-1] V[:, -1, 1:-1] = V[:, 1, 1:-1] V[:, :, 0] = V[:, :, -2] V[:, :, -1] = V[:, :, 1] interpolate = LinearNDInterpolator(k, V.reshape((-1,) + V.shape[3:])) return interpolate(path) # ChadiCohen k point grids. The k point grids are given in units of the # reciprocal unit cell. The variables are named after the following # convention: cc+''+_+'shape'. For example an 18 k point # sq(3)xsq(3) is named 'cc18_sq3xsq3'. cc6_1x1 = np.array([ 1, 1, 0, 1, 0, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 1, 0]).reshape((6, 3)) / 3.0 cc12_2x3 = np.array([ 3, 4, 0, 3, 10, 0, 6, 8, 0, 3, -2, 0, 6, -4, 0, 6, 2, 0, -3, 8, 0, -3, 2, 0, -3, -4, 0, -6, 4, 0, -6, -2, 0, -6, -8, 0]).reshape((12, 3)) / 18.0 cc18_sq3xsq3 = np.array([ 2, 2, 0, 4, 4, 0, 8, 2, 0, 4, -2, 0, 8, -4, 0, 10, -2, 0, 10, -8, 0, 8, -10, 0, 2, -10, 0, 4, -8, 0, -2, -8, 0, 2, -4, 0, -4, -4, 0, -2, -2, 0, -4, 2, 0, -2, 4, 0, -8, 4, 0, -4, 8, 0]).reshape((18, 3)) / 18.0 cc18_1x1 = np.array([ 2, 4, 0, 2, 10, 0, 4, 8, 0, 8, 4, 0, 8, 10, 0, 10, 8, 0, 2, -2, 0, 4, -4, 0, 4, 2, 0, -2, 8, 0, -2, 2, 0, -2, -4, 0, -4, 4, 0, -4, -2, 0, -4, -8, 0, -8, 2, 0, -8, -4, 0, -10, -2, 0]).reshape((18, 3)) / 18.0 cc54_sq3xsq3 = np.array([ 4, -10, 0, 6, -10, 0, 0, -8, 0, 2, -8, 0, 6, -8, 0, 8, -8, 0, -4, -6, 0, -2, -6, 0, 2, -6, 0, 4, -6, 0, 8, -6, 0, 10, -6, 0, -6, -4, 0, -2, -4, 0, 0, -4, 0, 4, -4, 0, 6, -4, 0, 10, -4, 0, -6, -2, 0, -4, -2, 0, 0, -2, 0, 2, -2, 0, 6, -2, 0, 8, -2, 0, -8, 0, 0, -4, 0, 0, -2, 0, 0, 2, 0, 0, 4, 0, 0, 8, 0, 0, -8, 2, 0, -6, 2, 0, -2, 2, 0, 0, 2, 0, 4, 2, 0, 6, 2, 0, -10, 4, 0, -6, 4, 0, -4, 4, 0, 0, 4, 0, 2, 4, 0, 6, 4, 0, -10, 6, 0, -8, 6, 0, -4, 6, 0, -2, 6, 0, 2, 6, 0, 4, 6, 0, -8, 8, 0, -6, 8, 0, -2, 8, 0, 0, 8, 0, -6, 10, 0, -4, 10, 0]).reshape((54, 3)) / 18.0 cc54_1x1 = np.array([ 2, 2, 0, 4, 4, 0, 8, 8, 0, 6, 8, 0, 4, 6, 0, 6, 10, 0, 4, 10, 0, 2, 6, 0, 2, 8, 0, 0, 2, 0, 0, 4, 0, 0, 8, 0, -2, 6, 0, -2, 4, 0, -4, 6, 0, -6, 4, 0, -4, 2, 0, -6, 2, 0, -2, 0, 0, -4, 0, 0, -8, 0, 0, -8, -2, 0, -6, -2, 0, -10, -4, 0, -10, -6, 0, -6, -4, 0, -8, -6, 0, -2, -2, 0, -4, -4, 0, -8, -8, 0, 4, -2, 0, 6, -2, 0, 6, -4, 0, 2, 0, 0, 4, 0, 0, 6, 2, 0, 6, 4, 0, 8, 6, 0, 8, 0, 0, 8, 2, 0, 10, 4, 0, 10, 6, 0, 2, -4, 0, 2, -6, 0, 4, -6, 0, 0, -2, 0, 0, -4, 0, -2, -6, 0, -4, -6, 0, -6, -8, 0, 0, -8, 0, -2, -8, 0, -4, -10, 0, -6, -10, 0]).reshape((54, 3)) / 18.0 cc162_sq3xsq3 = np.array([ -8, 16, 0, -10, 14, 0, -7, 14, 0, -4, 14, 0, -11, 13, 0, -8, 13, 0, -5, 13, 0, -2, 13, 0, -13, 11, 0, -10, 11, 0, -7, 11, 0, -4, 11, 0, -1, 11, 0, 2, 11, 0, -14, 10, 0, -11, 10, 0, -8, 10, 0, -5, 10, 0, -2, 10, 0, 1, 10, 0, 4, 10, 0, -16, 8, 0, -13, 8, 0, -10, 8, 0, -7, 8, 0, -4, 8, 0, -1, 8, 0, 2, 8, 0, 5, 8, 0, 8, 8, 0, -14, 7, 0, -11, 7, 0, -8, 7, 0, -5, 7, 0, -2, 7, 0, 1, 7, 0, 4, 7, 0, 7, 7, 0, 10, 7, 0, -13, 5, 0, -10, 5, 0, -7, 5, 0, -4, 5, 0, -1, 5, 0, 2, 5, 0, 5, 5, 0, 8, 5, 0, 11, 5, 0, -14, 4, 0, -11, 4, 0, -8, 4, 0, -5, 4, 0, -2, 4, 0, 1, 4, 0, 4, 4, 0, 7, 4, 0, 10, 4, 0, -13, 2, 0, -10, 2, 0, -7, 2, 0, -4, 2, 0, -1, 2, 0, 2, 2, 0, 5, 2, 0, 8, 2, 0, 11, 2, 0, -11, 1, 0, -8, 1, 0, -5, 1, 0, -2, 1, 0, 1, 1, 0, 4, 1, 0, 7, 1, 0, 10, 1, 0, 13, 1, 0, -10, -1, 0, -7, -1, 0, -4, -1, 0, -1, -1, 0, 2, -1, 0, 5, -1, 0, 8, -1, 0, 11, -1, 0, 14, -1, 0, -11, -2, 0, -8, -2, 0, -5, -2, 0, -2, -2, 0, 1, -2, 0, 4, -2, 0, 7, -2, 0, 10, -2, 0, 13, -2, 0, -10, -4, 0, -7, -4, 0, -4, -4, 0, -1, -4, 0, 2, -4, 0, 5, -4, 0, 8, -4, 0, 11, -4, 0, 14, -4, 0, -8, -5, 0, -5, -5, 0, -2, -5, 0, 1, -5, 0, 4, -5, 0, 7, -5, 0, 10, -5, 0, 13, -5, 0, 16, -5, 0, -7, -7, 0, -4, -7, 0, -1, -7, 0, 2, -7, 0, 5, -7, 0, 8, -7, 0, 11, -7, 0, 14, -7, 0, 17, -7, 0, -8, -8, 0, -5, -8, 0, -2, -8, 0, 1, -8, 0, 4, -8, 0, 7, -8, 0, 10, -8, 0, 13, -8, 0, 16, -8, 0, -7, -10, 0, -4, -10, 0, -1, -10, 0, 2, -10, 0, 5, -10, 0, 8, -10, 0, 11, -10, 0, 14, -10, 0, 17, -10, 0, -5, -11, 0, -2, -11, 0, 1, -11, 0, 4, -11, 0, 7, -11, 0, 10, -11, 0, 13, -11, 0, 16, -11, 0, -1, -13, 0, 2, -13, 0, 5, -13, 0, 8, -13, 0, 11, -13, 0, 14, -13, 0, 1, -14, 0, 4, -14, 0, 7, -14, 0, 10, -14, 0, 13, -14, 0, 5, -16, 0, 8, -16, 0, 11, -16, 0, 7, -17, 0, 10, -17, 0]).reshape((162, 3)) / 27.0 cc162_1x1 = np.array([ -8, -16, 0, -10, -14, 0, -7, -14, 0, -4, -14, 0, -11, -13, 0, -8, -13, 0, -5, -13, 0, -2, -13, 0, -13, -11, 0, -10, -11, 0, -7, -11, 0, -4, -11, 0, -1, -11, 0, 2, -11, 0, -14, -10, 0, -11, -10, 0, -8, -10, 0, -5, -10, 0, -2, -10, 0, 1, -10, 0, 4, -10, 0, -16, -8, 0, -13, -8, 0, -10, -8, 0, -7, -8, 0, -4, -8, 0, -1, -8, 0, 2, -8, 0, 5, -8, 0, 8, -8, 0, -14, -7, 0, -11, -7, 0, -8, -7, 0, -5, -7, 0, -2, -7, 0, 1, -7, 0, 4, -7, 0, 7, -7, 0, 10, -7, 0, -13, -5, 0, -10, -5, 0, -7, -5, 0, -4, -5, 0, -1, -5, 0, 2, -5, 0, 5, -5, 0, 8, -5, 0, 11, -5, 0, -14, -4, 0, -11, -4, 0, -8, -4, 0, -5, -4, 0, -2, -4, 0, 1, -4, 0, 4, -4, 0, 7, -4, 0, 10, -4, 0, -13, -2, 0, -10, -2, 0, -7, -2, 0, -4, -2, 0, -1, -2, 0, 2, -2, 0, 5, -2, 0, 8, -2, 0, 11, -2, 0, -11, -1, 0, -8, -1, 0, -5, -1, 0, -2, -1, 0, 1, -1, 0, 4, -1, 0, 7, -1, 0, 10, -1, 0, 13, -1, 0, -10, 1, 0, -7, 1, 0, -4, 1, 0, -1, 1, 0, 2, 1, 0, 5, 1, 0, 8, 1, 0, 11, 1, 0, 14, 1, 0, -11, 2, 0, -8, 2, 0, -5, 2, 0, -2, 2, 0, 1, 2, 0, 4, 2, 0, 7, 2, 0, 10, 2, 0, 13, 2, 0, -10, 4, 0, -7, 4, 0, -4, 4, 0, -1, 4, 0, 2, 4, 0, 5, 4, 0, 8, 4, 0, 11, 4, 0, 14, 4, 0, -8, 5, 0, -5, 5, 0, -2, 5, 0, 1, 5, 0, 4, 5, 0, 7, 5, 0, 10, 5, 0, 13, 5, 0, 16, 5, 0, -7, 7, 0, -4, 7, 0, -1, 7, 0, 2, 7, 0, 5, 7, 0, 8, 7, 0, 11, 7, 0, 14, 7, 0, 17, 7, 0, -8, 8, 0, -5, 8, 0, -2, 8, 0, 1, 8, 0, 4, 8, 0, 7, 8, 0, 10, 8, 0, 13, 8, 0, 16, 8, 0, -7, 10, 0, -4, 10, 0, -1, 10, 0, 2, 10, 0, 5, 10, 0, 8, 10, 0, 11, 10, 0, 14, 10, 0, 17, 10, 0, -5, 11, 0, -2, 11, 0, 1, 11, 0, 4, 11, 0, 7, 11, 0, 10, 11, 0, 13, 11, 0, 16, 11, 0, -1, 13, 0, 2, 13, 0, 5, 13, 0, 8, 13, 0, 11, 13, 0, 14, 13, 0, 1, 14, 0, 4, 14, 0, 7, 14, 0, 10, 14, 0, 13, 14, 0, 5, 16, 0, 8, 16, 0, 11, 16, 0, 7, 17, 0, 10, 17, 0]).reshape((162, 3)) / 27.0 # The following is a list of the critical points in the 1. Brillouin zone # for some typical crystal structures. # (In units of the reciprocal basis vectors) # See http://en.wikipedia.org/wiki/Brillouin_zone ibz_points = {'cubic': {'Gamma': [0, 0, 0], 'X': [0, 0 / 2, 1 / 2], 'R': [1 / 2, 1 / 2, 1 / 2], 'M': [0 / 2, 1 / 2, 1 / 2]}, 'fcc': {'Gamma': [0, 0, 0], 'X': [1 / 2, 0, 1 / 2], 'W': [1 / 2, 1 / 4, 3 / 4], 'K': [3 / 8, 3 / 8, 3 / 4], 'U': [5 / 8, 1 / 4, 5 / 8], 'L': [1 / 2, 1 / 2, 1 / 2]}, 'bcc': {'Gamma': [0, 0, 0], 'H': [1 / 2, -1 / 2, 1 / 2], 'N': [0, 0, 1 / 2], 'P': [1 / 4, 1 / 4, 1 / 4]}, 'hexagonal': {'Gamma': [0, 0, 0], 'M': [0, 1 / 2, 0], 'K': [-1 / 3, 1 / 3, 0], 'A': [0, 0, 1 / 2], 'L': [0, 1 / 2, 1 / 2], 'H': [-1 / 3, 1 / 3, 1 / 2]}, 'tetragonal': {'Gamma': [0, 0, 0], 'X': [1 / 2, 0, 0], 'M': [1 / 2, 1 / 2, 0], 'Z': [0, 0, 1 / 2], 'R': [1 / 2, 0, 1 / 2], 'A': [1 / 2, 1 / 2, 1 / 2]}, 'orthorhombic': {'Gamma': [0, 0, 0], 'R': [1 / 2, 1 / 2, 1 / 2], 'S': [1 / 2, 1 / 2, 0], 'T': [0, 1 / 2, 1 / 2], 'U': [1 / 2, 0, 1 / 2], 'X': [1 / 2, 0, 0], 'Y': [0, 1 / 2, 0], 'Z': [0, 0, 1 / 2]}} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/pars_beefvdw.py000066400000000000000000000561621316323560300243470ustar00rootroot00000000000000import numpy as np """ BEEF-vdW ensemble matrix """ uiOmega = np.array([ [ 9.238289896663336e-02 , 1.573812432079919e-01 , 1.029935738540308e-01 , 1.366003143143216e-02 , -2.170819634832974e-02 , -1.971473025898487e-03 , 6.694499988752175e-03 , -1.436837103528228e-03 , -1.894288263659829e-03 , 1.620730202731354e-03 , 3.342742083591797e-05 , -8.935288190655010e-04 , 5.660396510944252e-04 , 1.092640880494036e-04 , -3.909536572033999e-04 , 2.271387694573118e-04 , 4.720081507064245e-05 , -1.728805247746040e-04 , 1.161095890105822e-04 , 1.632569772443308e-05 , -9.505329207480296e-05 , 5.966357079138161e-05 , 3.909940118293563e-05 , -9.094078397503243e-05 , 3.979403197298154e-05 , 5.883724662690913e-05 , -8.868728142026543e-05 , 1.649195968392651e-05 , 3.986378541237102e-05 , -2.080734204109696e-05 , -5.210020320050114e-02 ], [ 1.573812432080020e-01 , 3.194503568212250e-01 , 2.330350019456029e-01 , 3.539526885754365e-02 , -4.398162505429017e-02 , -7.870052015456349e-03 , 1.288386845762548e-02 , -1.452985165647521e-03 , -3.414852982913958e-03 , 2.242106483095301e-03 , 2.411666744826487e-04 , -1.065238741066354e-03 , 4.135880276069384e-04 , 2.536775346693924e-04 , -2.530397572915468e-04 , -5.690638693892032e-05 , 1.673844673999724e-04 , -9.944997873568069e-06 , -1.718953440120930e-04 , 1.760399953825598e-04 , -4.156338135631344e-06 , -1.832004402941794e-04 , 2.147464735651294e-04 , -6.193272093284920e-05 , -1.319710553323893e-04 , 1.948452573660156e-04 , -5.101630490846988e-05 , -9.176394513865211e-05 , 4.717722996545362e-05 , 7.111249931485782e-06 , -1.890906559696380e-02 ], [ 1.029935738540465e-01 , 2.330350019456185e-01 , 1.906771663140688e-01 , 4.596131842244390e-02 , -2.792908137436464e-02 , -1.240232492150593e-02 , 5.672917933168648e-03 , 1.434385697982085e-03 , -9.455904542077782e-04 , 3.036359098459168e-05 , 1.161828188486106e-04 , 7.937359374341367e-05 , -1.452498186750268e-04 , 1.384058476815110e-05 , 1.530299855805981e-04 , -1.908370243275392e-04 , 5.614920168522352e-05 , 1.448595900033545e-04 , -2.366731351667913e-04 , 1.303628937641542e-04 , 8.403491035544659e-05 , -2.162539474930004e-04 , 1.579894933576654e-04 , 1.853443013110853e-05 , -1.453365923716440e-04 , 1.270119640983266e-04 , 1.393651877686879e-05 , -8.735349638010247e-05 , 1.562163815156337e-05 , 1.819382613180743e-05 , 1.382668594717776e-02 ], [ 1.366003143144247e-02 , 3.539526885755911e-02 , 4.596131842245237e-02 , 3.412600355844948e-02 , 5.788002236623282e-03 , -9.314441356035262e-03 , -5.276305980529734e-03 , 2.351769282262449e-03 , 1.746899840570664e-03 , -1.053810170761046e-03 , -2.902616086744972e-04 , 5.752547360555607e-04 , -8.857003353891879e-05 , -2.395794347875841e-04 , 1.413569388536142e-04 , 5.605747482892052e-05 , -9.488998643296934e-05 , 2.026963310534137e-05 , 3.772638762355388e-05 , -4.067190865485931e-05 , 1.321492117521963e-05 , 1.940880629107831e-05 , -3.480998018498056e-05 , 1.778991053651829e-05 , 1.586887875776044e-05 , -3.017037178432038e-05 , 6.647594986708508e-06 , 1.545376441325688e-05 , -5.578313586587479e-06 , -2.498675358121092e-06 , -7.076421937394695e-03 ], [ -2.170819634832771e-02 , -4.398162505428508e-02 , -2.792908137435959e-02 , 5.788002236625639e-03 , 1.599472206930952e-02 , 1.608917143245890e-03 , -5.597384471167169e-03 , -1.499164748509191e-03 , 1.031475806000458e-03 , 5.332996506181574e-04 , -2.489713532023827e-04 , -1.029965243518429e-04 , 1.699409468310518e-04 , -5.189717276078564e-05 , -6.126197146900113e-05 , 8.454620554637730e-05 , -2.898403340456230e-05 , -4.695866195676658e-05 , 7.705234549813160e-05 , -3.658438803802928e-05 , -3.319317982415972e-05 , 6.573717163798472e-05 , -3.698152620572900e-05 , -1.629294629181860e-05 , 4.241341573520274e-05 , -2.624727597577873e-05 , -1.229090821564833e-05 , 2.348090332681114e-05 , -2.215657597169080e-07 , -6.444872622959645e-06 , 7.322667111791249e-04 ], [ -1.971473025900972e-03 , -7.870052015460869e-03 , -1.240232492150907e-02 , -9.314441356035836e-03 , 1.608917143246348e-03 , 7.634754660592785e-03 , 2.015667017611551e-03 , -3.623574339977459e-03 , -1.474755821692741e-03 , 1.127995802260326e-03 , 4.639737083120432e-04 , -4.567637545650261e-04 , -2.016876766012911e-05 , 2.508509815496272e-04 , -1.147671414054848e-04 , -7.415040892571524e-05 , 9.932046149486572e-05 , -1.325820303664777e-05 , -5.028147494244732e-05 , 4.435536803388949e-05 , -2.227553213442618e-06 , -3.139708798837062e-05 , 3.307650446358692e-05 , -6.558671845195734e-06 , -2.123041867524418e-05 , 2.397646436678162e-05 , 9.138618011606733e-07 , -1.527849014454442e-05 , 2.261408120954423e-06 , 3.617283769859004e-06 , 2.325697711871941e-03 ], [ 6.694499988750638e-03 , 1.288386845762195e-02 , 5.672917933165492e-03 , -5.276305980530938e-03 , -5.597384471167074e-03 , 2.015667017611739e-03 , 4.377508336814056e-03 , 4.100359917331289e-04 , -1.876150671093797e-03 , -7.271917289430953e-04 , 4.632933527994722e-04 , 2.963398987389869e-04 , -1.506945170950558e-04 , -5.149346314745077e-05 , 9.215110292974351e-05 , -3.132804577761338e-05 , -2.100641270393858e-05 , 3.506730172274297e-05 , -2.465494126635098e-05 , 1.240900749825681e-06 , 2.076535734347166e-05 , -2.285062874633954e-05 , 4.208354769194986e-06 , 1.425348474305690e-05 , -1.526811061895161e-05 , 3.047660598079506e-06 , 9.299255727538788e-06 , -8.183025849838069e-06 , -2.016271133614633e-06 , 3.118202698102115e-06 , -1.983005807705875e-03 ], [ -1.436837103527614e-03 , -1.452985165646303e-03 , 1.434385697983009e-03 , 2.351769282262657e-03 , -1.499164748509336e-03 , -3.623574339977513e-03 , 4.100359917331572e-04 , 3.388139698932502e-03 , 4.194131188659545e-04 , -1.640686728848097e-03 , -4.535159587025243e-04 , 5.155942974268080e-04 , 1.219637950738874e-04 , -1.881362361335498e-04 , 5.406677887798438e-05 , 6.730117550948196e-05 , -6.826604522477651e-05 , -7.600076704978491e-08 , 4.545041141091276e-05 , -3.434406804211548e-05 , -5.396753498031206e-06 , 3.160900890445868e-05 , -2.489184945477622e-05 , -2.480536094745677e-06 , 2.230938441981598e-05 , -1.767486060639981e-05 , -6.845063675872953e-06 , 1.581526117380142e-05 , 2.198506926484949e-07 , -4.837425950871762e-06 , -2.819410239268639e-05 ], [ -1.894288263659430e-03 , -3.414852982912986e-03 , -9.455904542068480e-04 , 1.746899840571073e-03 , 1.031475806000471e-03 , -1.474755821692797e-03 , -1.876150671093806e-03 , 4.194131188659666e-04 , 2.016821929004358e-03 , 2.913183096117767e-04 , -1.031831612901280e-03 , -3.523961692265613e-04 , 3.020345263188065e-04 , 1.358462914820522e-04 , -1.115872186939481e-04 , 4.093795217439325e-06 , 4.590005891560275e-05 , -2.788695451888706e-05 , -4.445454868386084e-06 , 1.774618276396958e-05 , -1.122137909788981e-05 , -3.231227423595720e-06 , 1.210473810098234e-05 , -7.926468935313864e-06 , -3.432017428898823e-06 , 8.827938351713780e-06 , -2.192391060027345e-06 , -4.171466247118773e-06 , 1.331053824099077e-06 , 8.121122753847691e-07 , 1.468573793837378e-03 ], [ 1.620730202730968e-03 , 2.242106483094428e-03 , 3.036359098381830e-05 , -1.053810170761330e-03 , 5.332996506181955e-04 , 1.127995802260379e-03 , -7.271917289430953e-04 , -1.640686728848104e-03 , 2.913183096117794e-04 , 1.618640260028683e-03 , 1.578833514403573e-04 , -8.684832913376226e-04 , -1.835212360942493e-04 , 2.681276727854413e-04 , 3.285354767345348e-05 , -7.506050741939204e-05 , 4.030911032027864e-05 , 1.270499721233960e-05 , -3.550009040339185e-05 , 2.093845130027192e-05 , 6.936412133339431e-06 , -2.092061019101916e-05 , 1.263627438389547e-05 , 5.132905197400893e-06 , -1.410173385828192e-05 , 8.068421998377687e-06 , 6.590533164499491e-06 , -9.628875957888051e-06 , -1.186884523575427e-06 , 3.379003341108947e-06 , -1.318935000558665e-03 ], [ 3.342742083582248e-05 , 2.411666744824321e-04 , 1.161828188484188e-04 , -2.902616086745682e-04 , -2.489713532023758e-04 , 4.639737083120528e-04 , 4.632933527994702e-04 , -4.535159587025258e-04 , -1.031831612901280e-03 , 1.578833514403571e-04 , 1.126887798536041e-03 , 1.596306400901984e-04 , -6.262219982793480e-04 , -1.832949555936158e-04 , 2.062011811517906e-04 , 5.639579837834072e-05 , -7.429445085205222e-05 , 1.947674856272851e-05 , 2.925850101283131e-05 , -3.392404367734551e-05 , 7.606268115327377e-06 , 1.774935646371143e-05 , -2.076809415497982e-05 , 3.678275105655822e-06 , 1.351664987117452e-05 , -1.391917758734145e-05 , -3.264922954751679e-06 , 1.128720431864021e-05 , -1.552278484090616e-07 , -3.464691582178041e-06 , 2.259380952893320e-04 ], [ -8.935288190652161e-04 , -1.065238741065750e-03 , 7.937359374391768e-05 , 5.752547360557256e-04 , -1.029965243518811e-04 , -4.567637545650542e-04 , 2.963398987389943e-04 , 5.155942974268113e-04 , -3.523961692265653e-04 , -8.684832913376213e-04 , 1.596306400901987e-04 , 9.274502975544414e-04 , 4.771446682359326e-05 , -5.007069662988802e-04 , -7.942270207742560e-05 , 1.322450571128168e-04 , 2.441262913064850e-05 , -2.756468125262591e-05 , 6.943645566973078e-06 , 1.041750480940249e-05 , -1.187862037244014e-05 , 1.702364109770825e-06 , 7.400825614557900e-06 , -6.767501859886680e-06 , -7.456805310854244e-07 , 5.695968329623519e-06 , -2.204234030240727e-06 , -2.458146094280224e-06 , 1.077364537604088e-06 , 4.312391512705764e-07 , 5.884326361165565e-04 ], [ 5.660396510942980e-04 , 4.135880276066762e-04 , -1.452498186752349e-04 , -8.857003353897563e-05 , 1.699409468310743e-04 , -2.016876766011903e-05 , -1.506945170950608e-04 , 1.219637950738874e-04 , 3.020345263188087e-04 , -1.835212360942504e-04 , -6.262219982793482e-04 , 4.771446682359360e-05 , 7.353511125371758e-04 , 8.054171359132859e-05 , -4.354044149858314e-04 , -6.575758219487838e-05 , 1.322779340443631e-04 , 4.893233447412187e-06 , -2.860359932846397e-05 , 1.985815168274937e-05 , 1.407122212777636e-06 , -1.355631776270834e-05 , 9.804336837952511e-06 , 1.705077595669618e-06 , -8.448838581047592e-06 , 5.271239541237292e-06 , 3.753161433794400e-06 , -5.679341230392703e-06 , -7.297839478992945e-07 , 1.996414791054073e-06 , -5.689656491774725e-04 ], [ 1.092640880493588e-04 , 2.536775346692864e-04 , 1.384058476804722e-05 , -2.395794347876363e-04 , -5.189717276079290e-05 , 2.508509815496312e-04 , -5.149346314745000e-05 , -1.881362361335514e-04 , 1.358462914820523e-04 , 2.681276727854418e-04 , -1.832949555936157e-04 , -5.007069662988805e-04 , 8.054171359132875e-05 , 5.670985721529502e-04 , 4.105350281394086e-05 , -3.243779076268346e-04 , -5.693079967475888e-05 , 9.476238507687856e-05 , 1.671992883730651e-05 , -2.625490072653236e-05 , 1.094711235171939e-05 , 8.092095182176009e-06 , -1.368592923368957e-05 , 4.725521343618847e-06 , 6.462723202671019e-06 , -8.176454311340966e-06 , -1.037965911726869e-06 , 5.963104944027835e-06 , -2.287646204875769e-07 , -1.804397982061943e-06 , 6.675499678278738e-05 ], [ -3.909536572033257e-04 , -2.530397572913827e-04 , 1.530299855807417e-04 , 1.413569388536693e-04 , -6.126197146900289e-05 , -1.147671414054899e-04 , 9.215110292974495e-05 , 5.406677887798494e-05 , -1.115872186939490e-04 , 3.285354767345385e-05 , 2.062011811517907e-04 , -7.942270207742549e-05 , -4.354044149858315e-04 , 4.105350281394089e-05 , 5.023053531078210e-04 , 1.395753202566780e-05 , -2.794248341066854e-04 , -2.462616877967573e-05 , 7.014950575686348e-05 , 7.678983396148418e-06 , -1.200073137869544e-05 , 4.735853628377502e-06 , 3.823008200476699e-06 , -5.632608045337210e-06 , 1.401726052082347e-06 , 2.631914429094741e-06 , -1.879900165857796e-06 , -6.802392260490853e-07 , 6.412891565621652e-07 , 5.793723170821993e-08 , 2.979440856739876e-04 ], [ 2.271387694572524e-04 , -5.690638693903491e-05 , -1.908370243276230e-04 , 5.605747482890452e-05 , 8.454620554639201e-05 , -7.415040892571150e-05 , -3.132804577761707e-05 , 6.730117550948228e-05 , 4.093795217440853e-06 , -7.506050741939299e-05 , 5.639579837834042e-05 , 1.322450571128173e-04 , -6.575758219487839e-05 , -3.243779076268348e-04 , 1.395753202566789e-05 , 4.086277915281374e-04 , 2.438181614175771e-05 , -2.406201469878970e-04 , -2.063418073175250e-05 , 6.468348516289834e-05 , 1.651842998945461e-06 , -1.016330205472771e-05 , 7.380837404491689e-06 , 7.876901704903023e-07 , -5.693055610174383e-06 , 3.898194171094561e-06 , 1.890193310260514e-06 , -3.494268997347222e-06 , -2.097250054628417e-07 , 1.107934512468949e-06 , -2.578053969849174e-04 ], [ 4.720081507065945e-05 , 1.673844673999971e-04 , 5.614920168523253e-05 , -9.488998643297809e-05 , -2.898403340457248e-05 , 9.932046149486507e-05 , -2.100641270393638e-05 , -6.826604522477717e-05 , 4.590005891560220e-05 , 4.030911032027912e-05 , -7.429445085205212e-05 , 2.441262913064812e-05 , 1.322779340443633e-04 , -5.693079967475883e-05 , -2.794248341066855e-04 , 2.438181614175779e-05 , 3.367003211899217e-04 , 1.421493027932063e-05 , -1.961053122230117e-04 , -1.831760815509797e-05 , 5.249705849097755e-05 , 4.009767661794436e-06 , -9.222615132968448e-06 , 4.447935971545765e-06 , 2.844605015203588e-06 , -4.927439995523699e-06 , 2.779858179450743e-07 , 2.890920446156232e-06 , -3.536840533005166e-07 , -7.989052895188473e-07 , -2.873774500946350e-05 ], [ -1.728805247745767e-04 , -9.944997873510153e-06 , 1.448595900034050e-04 , 2.026963310536173e-05 , -4.695866195676680e-05 , -1.325820303664937e-05 , 3.506730172274367e-05 , -7.600076704937241e-08 , -2.788695451888763e-05 , 1.270499721233979e-05 , 1.947674856272868e-05 , -2.756468125262590e-05 , 4.893233447412072e-06 , 9.476238507687867e-05 , -2.462616877967574e-05 , -2.406201469878971e-04 , 1.421493027932067e-05 , 2.919803798609199e-04 , 7.292181033176667e-06 , -1.680274842794751e-04 , -1.103641130738799e-05 , 4.275283346882578e-05 , 1.839573029824585e-06 , -5.092906646915116e-06 , 2.996296133918005e-06 , 5.026786485483826e-07 , -1.803524706078249e-06 , 7.612853881615933e-07 , 3.175194859018497e-07 , -2.524196216716103e-07 , 2.671139718648832e-04 ], [ 1.161095890105204e-04 , -1.718953440122134e-04 , -2.366731351668826e-04 , 3.772638762353110e-05 , 7.705234549814230e-05 , -5.028147494244480e-05 , -2.465494126635465e-05 , 4.545041141091324e-05 , -4.445454868384867e-06 , -3.550009040339265e-05 , 2.925850101283112e-05 , 6.943645566973460e-06 , -2.860359932846412e-05 , 1.671992883730641e-05 , 7.014950575686358e-05 , -2.063418073175254e-05 , -1.961053122230117e-04 , 7.292181033176704e-06 , 2.476672606367232e-04 , 8.122604369362667e-06 , -1.452133704846186e-04 , -9.497391478575562e-06 , 3.809665940899583e-05 , 1.059672833862896e-06 , -5.566702444135148e-06 , 4.241342392780321e-06 , 1.125163314158913e-06 , -3.300826353062116e-06 , 2.381295916739009e-07 , 8.492464195141368e-07 , -2.789569803656198e-04 ], [ 1.632569772446249e-05 , 1.760399953826087e-04 , 1.303628937641828e-04 , -4.067190865486029e-05 , -3.658438803803874e-05 , 4.435536803388934e-05 , 1.240900749828609e-06 , -3.434406804211623e-05 , 1.774618276396873e-05 , 2.093845130027264e-05 , -3.392404367734537e-05 , 1.041750480940207e-05 , 1.985815168274956e-05 , -2.625490072653231e-05 , 7.678983396148288e-06 , 6.468348516289841e-05 , -1.831760815509795e-05 , -1.680274842794751e-04 , 8.122604369362710e-06 , 2.112966630126243e-04 , 5.363176092207731e-06 , -1.235778898069599e-04 , -7.709953870959738e-06 , 3.098655427549614e-05 , 2.634638058314591e-06 , -4.584365006125596e-06 , 7.784307399132289e-07 , 2.345452381285535e-06 , -6.188482408032955e-07 , -4.998403651495349e-07 , 8.079312086264899e-05 ], [ -9.505329207477657e-05 , -4.156338135574478e-06 , 8.403491035549607e-05 , 1.321492117523870e-05 , -3.319317982416059e-05 , -2.227553213444590e-06 , 2.076535734347213e-05 , -5.396753498031014e-06 , -1.122137909789006e-05 , 6.936412133339521e-06 , 7.606268115327406e-06 , -1.187862037244012e-05 , 1.407122212777626e-06 , 1.094711235171940e-05 , -1.200073137869545e-05 , 1.651842998945439e-06 , 5.249705849097757e-05 , -1.103641130738799e-05 , -1.452133704846186e-04 , 5.363176092207760e-06 , 1.841513653060571e-04 , 4.008684964031859e-06 , -1.088327175419565e-04 , -4.436272922923257e-06 , 2.663616882515994e-05 , 4.441129647729434e-07 , -1.823900470977472e-06 , 9.131027910925659e-07 , 3.423181895869568e-07 , -3.248030257457939e-07 , 1.565114731653676e-04 ], [ 5.966357079134110e-05 , -1.832004402942522e-04 , -2.162539474930512e-04 , 1.940880629106866e-05 , 6.573717163799288e-05 , -3.139708798836991e-05 , -2.285062874634257e-05 , 3.160900890445919e-05 , -3.231227423594649e-06 , -2.092061019101990e-05 , 1.774935646371122e-05 , 1.702364109771204e-06 , -1.355631776270847e-05 , 8.092095182175919e-06 , 4.735853628377626e-06 , -1.016330205472776e-05 , 4.009767661794407e-06 , 4.275283346882582e-05 , -9.497391478575592e-06 , -1.235778898069599e-04 , 4.008684964031889e-06 , 1.585945240480566e-04 , 4.814276592252276e-06 , -9.505942249560426e-05 , -5.269885642910686e-06 , 2.508762233822088e-05 , 1.002347324957512e-06 , -3.233685256439425e-06 , 3.615248228908033e-07 , 7.731232588721100e-07 , -2.364008973553363e-04 ], [ 3.909940118295615e-05 , 2.147464735651595e-04 , 1.579894933576790e-04 , -3.480998018498535e-05 , -3.698152620573602e-05 , 3.307650446358831e-05 , 4.208354769197900e-06 , -2.489184945477703e-05 , 1.210473810098150e-05 , 1.263627438389614e-05 , -2.076809415497966e-05 , 7.400825614557483e-06 , 9.804336837952683e-06 , -1.368592923368950e-05 , 3.823008200476585e-06 , 7.380837404491765e-06 , -9.222615132968445e-06 , 1.839573029824542e-06 , 3.809665940899589e-05 , -7.709953870959746e-06 , -1.088327175419565e-04 , 4.814276592252303e-06 , 1.387884209137800e-04 , 2.113244593212237e-06 , -8.153912579909763e-05 , -4.652337820383065e-06 , 1.937304772679640e-05 , 2.478096542996087e-06 , -8.169606503678209e-07 , -4.287488876009555e-07 , 1.035998031439656e-04 ], [ -9.094078397502061e-05 , -6.193272093282151e-05 , 1.853443013113500e-05 , 1.778991053653038e-05 , -1.629294629181825e-05 , -6.558671845197636e-06 , 1.425348474305646e-05 , -2.480536094745301e-06 , -7.926468935313898e-06 , 5.132905197400817e-06 , 3.678275105655839e-06 , -6.767501859886567e-06 , 1.705077595669545e-06 , 4.725521343618848e-06 , -5.632608045337194e-06 , 7.876901704902667e-07 , 4.447935971545785e-06 , -5.092906646915108e-06 , 1.059672833862867e-06 , 3.098655427549616e-05 , -4.436272922923254e-06 , -9.505942249560430e-05 , 2.113244593212259e-06 , 1.241068277448159e-04 , 1.324825159079387e-06 , -7.356715084057034e-05 , -1.785631352650215e-06 , 1.695100826863567e-05 , 5.774682432637083e-07 , -3.303613432465353e-07 , 9.651449332646128e-05 ], [ 3.979403197295345e-05 , -1.319710553324410e-04 , -1.453365923716808e-04 , 1.586887875775279e-05 , 4.241341573520792e-05 , -2.123041867524383e-05 , -1.526811061895372e-05 , 2.230938441981634e-05 , -3.432017428898139e-06 , -1.410173385828241e-05 , 1.351664987117440e-05 , -7.456805310851761e-07 , -8.448838581047687e-06 , 6.462723202670970e-06 , 1.401726052082422e-06 , -5.693055610174417e-06 , 2.844605015203572e-06 , 2.996296133918029e-06 , -5.566702444135167e-06 , 2.634638058314581e-06 , 2.663616882515997e-05 , -5.269885642910686e-06 , -8.153912579909767e-05 , 1.324825159079404e-06 , 1.082133675166925e-04 , 2.990415878922840e-06 , -6.513246311773947e-05 , -2.759724213714544e-06 , 1.484095638923724e-05 , 7.424809301046746e-07 , -1.617594954504215e-04 ], [ 5.883724662691994e-05 , 1.948452573660281e-04 , 1.270119640983281e-04 , -3.017037178432670e-05 , -2.624727597578309e-05 , 2.397646436678337e-05 , 3.047660598081647e-06 , -1.767486060640050e-05 , 8.827938351713212e-06 , 8.068421998378197e-06 , -1.391917758734134e-05 , 5.695968329623178e-06 , 5.271239541237441e-06 , -8.176454311340913e-06 , 2.631914429094653e-06 , 3.898194171094623e-06 , -4.927439995523706e-06 , 5.026786485483527e-07 , 4.241342392780371e-06 , -4.584365006125614e-06 , 4.441129647729196e-07 , 2.508762233822091e-05 , -4.652337820383076e-06 , -7.356715084057034e-05 , 2.990415878922861e-06 , 9.541694080046339e-05 , 5.311088722428387e-07 , -5.655395254747548e-05 , -7.544356044794082e-07 , 1.269980847624510e-05 , 4.696018935268347e-05 ], [ -8.868728142024831e-05 , -5.101630490843126e-05 , 1.393651877690296e-05 , 6.647594986721235e-06 , -1.229090821564965e-05 , 9.138618011586676e-07 , 9.299255727538887e-06 , -6.845063675872692e-06 , -2.192391060027468e-06 , 6.590533164499501e-06 , -3.264922954751675e-06 , -2.204234030240666e-06 , 3.753161433794360e-06 , -1.037965911726866e-06 , -1.879900165857787e-06 , 1.890193310260486e-06 , 2.779858179450956e-07 , -1.803524706078243e-06 , 1.125163314158881e-06 , 7.784307399132557e-07 , -1.823900470977467e-06 , 1.002347324957483e-06 , 1.937304772679643e-05 , -1.785631352650217e-06 , -6.513246311773947e-05 , 5.311088722428587e-07 , 7.440208775369848e-05 , 7.311641032314037e-07 , -2.774078047441206e-05 , -4.408828958294675e-07 , 1.075017250578020e-04 ], [ 1.649195968391140e-05 , -9.176394513867907e-05 , -8.735349638012086e-05 , 1.545376441325374e-05 , 2.348090332681419e-05 , -1.527849014454438e-05 , -8.183025849839297e-06 , 1.581526117380169e-05 , -4.171466247118380e-06 , -9.628875957888362e-06 , 1.128720431864013e-05 , -2.458146094280058e-06 , -5.679341230392763e-06 , 5.963104944027804e-06 , -6.802392260490372e-07 , -3.494268997347246e-06 , 2.890920446156225e-06 , 7.612853881616096e-07 , -3.300826353062134e-06 , 2.345452381285531e-06 , 9.131027910925789e-07 , -3.233685256439427e-06 , 2.478096542996079e-06 , 1.695100826863569e-05 , -2.759724213714545e-06 , -5.655395254747549e-05 , 7.311641032314153e-07 , 6.559666484932615e-05 , 1.240877065411180e-07 , -2.470688255280269e-05 , -9.189338863514660e-05 ], [ 3.986378541236639e-05 , 4.717722996544147e-05 , 1.562163815155139e-05 , -5.578313586592747e-06 , -2.215657597169136e-07 , 2.261408120955417e-06 , -2.016271133614381e-06 , 2.198506926483088e-07 , 1.331053824099042e-06 , -1.186884523575363e-06 , -1.552278484090472e-07 , 1.077364537604021e-06 , -7.297839478992591e-07 , -2.287646204875707e-07 , 6.412891565621495e-07 , -2.097250054628229e-07 , -3.536840533005254e-07 , 3.175194859018434e-07 , 2.381295916739206e-07 , -6.188482408033085e-07 , 3.423181895869513e-07 , 3.615248228908187e-07 , -8.169606503678325e-07 , 5.774682432637071e-07 , 1.484095638923725e-05 , -7.544356044794156e-07 , -2.774078047441205e-05 , 1.240877065411238e-07 , 1.330905767924987e-05 , 8.884104622005010e-08 , -3.158609279173533e-05 ], [ -2.080734204109082e-05 , 7.111249931498269e-06 , 1.819382613181743e-05 , -2.498675358118083e-06 , -6.444872622960494e-06 , 3.617283769858598e-06 , 3.118202698102355e-06 , -4.837425950871769e-06 , 8.121122753846729e-07 , 3.379003341109011e-06 , -3.464691582178025e-06 , 4.312391512705559e-07 , 1.996414791054076e-06 , -1.804397982061937e-06 , 5.793723170821257e-08 , 1.107934512468949e-06 , -7.989052895188420e-07 , -2.524196216716127e-07 , 8.492464195141338e-07 , -4.998403651495291e-07 , -3.248030257457955e-07 , 7.731232588721048e-07 , -4.287488876009484e-07 , -3.303613432465375e-07 , 7.424809301046709e-07 , 1.269980847624510e-05 , -4.408828958294696e-07 , -2.470688255280269e-05 , 8.884104622005171e-08 , 1.197542910948322e-05 , 3.878501241188344e-05 ], [ -5.210020320049051e-02 , -1.890906559693971e-02 , 1.382668594719924e-02 , -7.076421937386331e-03 , 7.322667111787697e-04 , 2.325697711870943e-03 , -1.983005807705755e-03 , -2.819410239254837e-05 , 1.468573793837301e-03 , -1.318935000558654e-03 , 2.259380952893342e-04 , 5.884326361165944e-04 , -5.689656491774901e-04 , 6.675499678278620e-05 , 2.979440856739906e-04 , -2.578053969849344e-04 , -2.873774500945195e-05 , 2.671139718648887e-04 , -2.789569803656384e-04 , 8.079312086266559e-05 , 1.565114731653709e-04 , -2.364008973553556e-04 , 1.035998031439817e-04 , 9.651449332646111e-05 , -1.617594954504337e-04 , 4.696018935269557e-05 , 1.075017250578020e-04 , -9.189338863515410e-05 , -3.158609279173351e-05 , 3.878501241188487e-05 , 2.121632678397157e-01 ]]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/pars_mbeef.py000066400000000000000000002262071316323560300240020ustar00rootroot00000000000000import numpy as np """ mBEEF ensemble matrix """ uiOmega = np.array([ [ +3.97526822e+00 , +9.89942369e+00 , +1.07326424e+01 , +6.75380818e+00 , +1.77302640e+00 , -6.84112187e-01 , -6.54206764e-01 , -1.39507729e-01 , -4.36967834e+00 , -1.16814935e+01 , -1.39547031e+01 , -9.53518416e+00 , -2.62228452e+00 , +1.14105816e+00 , +1.16365187e+00 , +2.82352691e-01 , -9.81697534e-01 , -1.41339774e+00 , +6.15364041e-01 , +2.54529066e+00 , +2.16101378e+00 , +6.60664611e-01 , +1.36501058e-03 , -2.32275169e-03 , +2.53968706e-01 , +3.74626666e-01 , -2.05813962e-01 , -8.44468626e-01 , -7.68127322e-01 , -2.69065920e-01 , -5.47673080e-05 , -1.61579894e-05 , -6.88223680e-02 , -1.92158621e-01 , -2.16638369e-01 , -1.17358804e-01 , -6.77575337e-04 , +1.32077264e-03 , -2.51835861e-04 , +3.96250933e-04 , +1.33956923e-02 , +3.87302168e-02 , +4.27005394e-02 , +2.68638059e-02 , +8.89902141e-05 , -7.44173561e-05 , +3.99260995e-05 , -4.28746505e-06 , +6.75748630e-04 , +1.66816940e-03 , +8.45332951e-05 , -1.96576973e-04 , +7.61037965e-05 , -9.43608480e-05 , +3.16431618e-05 , -4.45517629e-05 , -9.17705334e-05 , -2.75099179e-04 , -1.51884837e-05 , +2.25081009e-05 , -2.68193558e-05 , +2.04396573e-05 , -6.98162678e-06 , -4.44246376e-06 ], [ +9.89942369e+00 , +2.48462398e+01 , +2.72961422e+01 , +1.75339421e+01 , +4.84077678e+00 , -1.66256296e+00 , -1.69903464e+00 , -3.69347990e-01 , -1.06680161e+01 , -2.85412091e+01 , -3.42584233e+01 , -2.36338271e+01 , -6.59254846e+00 , +2.92322623e+00 , +3.04630046e+00 , +7.54658909e-01 , -2.57832311e+00 , -3.82240745e+00 , +1.32299675e+00 , +6.42484068e+00 , +5.61261493e+00 , +1.74814856e+00 , +3.73980970e-03 , -6.84283125e-03 , +6.00384512e-01 , +8.55253481e-01 , -6.02361336e-01 , -2.20369524e+00 , -2.01091687e+00 , -7.18947807e-01 , -2.65351664e-04 , +1.96742578e-04 , -1.76403390e-01 , -4.94927722e-01 , -5.62730485e-01 , -3.10118352e-01 , -1.84143143e-03 , +3.84450130e-03 , -7.23669468e-04 , +1.19393383e-03 , +3.53809131e-02 , +1.02174628e-01 , +1.11818628e-01 , +7.16897926e-02 , +2.62494628e-04 , -2.86897997e-04 , +1.51714933e-04 , -1.00094347e-04 , +1.75643964e-03 , +4.38501160e-03 , +2.24783064e-04 , -5.58567196e-04 , +2.03670441e-04 , -2.74524725e-04 , +1.00265250e-04 , -1.47525319e-04 , -2.41998964e-04 , -7.24967136e-04 , -4.49685991e-05 , +7.30327855e-05 , -7.40137176e-05 , +6.59539212e-05 , -2.88277013e-05 , +7.01714628e-06 ], [ +1.07326424e+01 , +2.72961422e+01 , +3.08517093e+01 , +2.09243877e+01 , +6.78971087e+00 , -1.20198675e+00 , -1.78013092e+00 , -4.12741140e-01 , -1.13343829e+01 , -3.03721286e+01 , -3.70059336e+01 , -2.67007286e+01 , -8.78688082e+00 , +2.16732861e+00 , +3.07444525e+00 , +8.18326743e-01 , -3.55620410e+00 , -6.05477908e+00 , -6.17105792e-01 , +5.79834358e+00 , +5.88129151e+00 , +1.95117019e+00 , +4.75788247e-03 , -9.34685366e-03 , +8.03385351e-01 , +1.34370771e+00 , -1.10156830e-01 , -1.96826295e+00 , -2.02953739e+00 , -7.79325366e-01 , -4.48896157e-04 , +5.99194963e-04 , -1.67760279e-01 , -4.92967114e-01 , -5.89983939e-01 , -3.45130767e-01 , -2.24934808e-03 , +5.12873094e-03 , -9.43933585e-04 , +1.62428178e-03 , +3.33558699e-02 , +1.00645901e-01 , +1.12908315e-01 , +7.75632007e-02 , +3.21010483e-04 , -4.47617442e-04 , +2.26457038e-04 , -2.41331304e-04 , +1.85038643e-03 , +4.81901216e-03 , +2.68751414e-04 , -7.17942224e-04 , +2.38973419e-04 , -3.56454344e-04 , +1.40452020e-04 , -2.13945344e-04 , -2.48072180e-04 , -7.67791109e-04 , -5.90737875e-05 , +1.03390024e-04 , -8.70430417e-05 , +8.92952512e-05 , -4.41152932e-05 , +3.28087412e-05 ], [ +6.75380817e+00 , +1.75339421e+01 , +2.09243877e+01 , +1.59716063e+01 , +7.13399329e+00 , +8.71480564e-01 , -6.47324653e-01 , -2.06400474e-01 , -7.38161742e+00 , -1.97748537e+01 , -2.48822797e+01 , -2.00185546e+01 , -9.29228728e+00 , -1.08019525e+00 , +1.11973389e+00 , +4.08083195e-01 , -3.97334744e+00 , -8.28852069e+00 , -5.66492619e+00 , -1.96714051e-01 , +2.14059303e+00 , +9.72812934e-01 , +3.73968914e-03 , -6.46977724e-03 , +9.45721973e-01 , +2.00614963e+00 , +1.38147405e+00 , -7.39925977e-02 , -7.38953239e-01 , -3.88652594e-01 , -2.44397697e-04 , +5.40516249e-04 , -1.46118789e-02 , -1.12839852e-01 , -2.15407056e-01 , -1.71061496e-01 , -1.58842691e-03 , +3.47750188e-03 , -6.57672843e-04 , +1.00975956e-03 , +5.38674913e-03 , +2.85395155e-02 , +4.11033431e-02 , +3.86636488e-02 , +9.57096141e-05 , -2.43325480e-04 , +1.11219526e-04 , -1.73906206e-04 , +6.94735976e-04 , +2.32756351e-03 , +1.72534544e-04 , -4.54457176e-04 , +1.48573809e-04 , -2.21570151e-04 , +8.92714594e-05 , -1.22428827e-04 , -9.15028132e-05 , -3.79520424e-04 , -2.47685280e-05 , +5.14415522e-05 , -3.38221017e-05 , +4.08127877e-05 , -1.79855445e-05 , +2.01134776e-05 ], [ +1.77302640e+00 , +4.84077677e+00 , +6.78971085e+00 , +7.13399329e+00 , +5.45078785e+00 , +2.68292167e+00 , +7.21375013e-01 , +7.75881757e-02 , -2.71472615e+00 , -7.17973487e+00 , -9.68701212e+00 , -9.85659382e+00 , -7.34902805e+00 , -3.56997318e+00 , -9.50848950e-01 , -9.85029370e-02 , -3.49420597e+00 , -8.57456944e+00 , -9.31626879e+00 , -6.25175245e+00 , -2.37985521e+00 , -3.69419384e-01 , +1.29040028e-03 , +7.28907342e-04 , +8.76527543e-01 , +2.16444406e+00 , +2.38328416e+00 , +1.62603650e+00 , +6.28271374e-01 , +9.32978712e-02 , +2.68823152e-04 , -1.68692490e-04 , +1.49610663e-01 , +3.14498460e-01 , +2.37733053e-01 , +6.58688849e-02 , -3.62660945e-04 , -3.46243404e-04 , -2.69261299e-05 , -3.61194367e-04 , -2.15182352e-02 , -4.50862489e-02 , -3.50723337e-02 , -9.06358508e-03 , -2.59958962e-04 , +2.47794970e-04 , -1.39142538e-04 , +1.30483974e-04 , -7.18171794e-04 , -9.46516814e-04 , +5.74404093e-06 , +8.23988495e-05 , +5.20180553e-06 , +5.16178171e-05 , -2.85216961e-05 , +8.67492299e-05 , +8.12470741e-05 , +6.80502614e-05 , +3.76643891e-05 , -5.72730087e-05 , +4.81831226e-05 , -5.26892601e-05 , +3.76242631e-05 , -3.73320890e-05 ], [ -6.84112191e-01 , -1.66256297e+00 , -1.20198676e+00 , +8.71480558e-01 , +2.68292167e+00 , +2.50274085e+00 , +1.10737906e+00 , +1.90318472e-01 , -1.74878087e-01 , -3.30139335e-01 , -8.44759084e-01 , -2.37547360e+00 , -3.61774441e+00 , -3.03871428e+00 , -1.39919684e+00 , -2.76948349e-01 , -2.11828143e+00 , -5.77888818e+00 , -7.67200655e+00 , -6.76301160e+00 , -3.65574211e+00 , -8.99584691e-01 , -6.76569040e-04 , +5.37599144e-03 , +5.19547282e-01 , +1.39609471e+00 , +1.82776666e+00 , +1.63324906e+00 , +9.24295294e-01 , +2.62905879e-01 , +5.63053977e-04 , -7.58338682e-04 , +1.73158663e-01 , +4.02083923e-01 , +3.66068969e-01 , +1.58454175e-01 , +4.38421027e-04 , -2.73248171e-03 , +3.69728163e-04 , -1.11920657e-03 , -2.36814914e-02 , -5.68516879e-02 , -5.16074562e-02 , -2.57667257e-02 , -3.82509996e-04 , +5.17098493e-04 , -2.68592722e-04 , +3.36979790e-04 , -1.13047468e-03 , -2.16750571e-03 , -8.54703015e-05 , +3.83708324e-04 , -6.91558748e-05 , +2.00204398e-04 , -9.33756340e-05 , +1.91551440e-04 , +1.21629453e-04 , +2.15064263e-04 , +6.24680716e-05 , -1.09361373e-04 , +7.84590747e-05 , -9.62804317e-05 , +6.39648556e-05 , -7.22203671e-05 ], [ -6.54206766e-01 , -1.69903464e+00 , -1.78013092e+00 , -6.47324656e-01 , +7.21375012e-01 , +1.10737906e+00 , +5.89181578e-01 , +1.13115025e-01 , +2.76106053e-01 , +8.20026094e-01 , +9.49474837e-01 , +2.14299002e-01 , -8.29935587e-01 , -1.12722881e+00 , -6.44440192e-01 , -1.45734250e-01 , -7.54345816e-01 , -2.20385299e+00 , -3.25886973e+00 , -3.21887372e+00 , -1.94562005e+00 , -5.32998890e-01 , -1.02024946e-03 , +4.25939321e-03 , +1.54178875e-01 , +4.42807013e-01 , +6.46723370e-01 , +6.61178350e-01 , +4.25761129e-01 , +1.38224307e-01 , +3.76128909e-04 , -5.69574089e-04 , +8.51518736e-02 , +2.04093210e-01 , +1.95048293e-01 , +9.32815939e-02 , +4.66944603e-04 , -2.14579453e-03 , +3.03633025e-04 , -7.85859258e-04 , -9.98695833e-03 , -2.51514750e-02 , -2.38031652e-02 , -1.34898398e-02 , -2.17819013e-04 , +3.33790789e-04 , -1.70099932e-04 , +2.28610888e-04 , -6.08005395e-04 , -1.24177211e-03 , -6.65943614e-05 , +2.81559820e-04 , -5.31061368e-05 , +1.42569467e-04 , -6.47466824e-05 , +1.24280760e-04 , +5.77842166e-05 , +1.07006895e-04 , +3.60446395e-05 , -6.69690940e-05 , +4.50608719e-05 , -5.87147591e-05 , +3.87120822e-05 , -4.57872945e-05 ], [ -1.39507729e-01 , -3.69347991e-01 , -4.12741140e-01 , -2.06400475e-01 , +7.75881755e-02 , +1.90318472e-01 , +1.13115025e-01 , +2.32646180e-02 , +7.66538334e-02 , +2.21516751e-01 , +2.80737665e-01 , +1.64301731e-01 , -4.91638023e-02 , -1.54584678e-01 , -1.04009469e-01 , -2.53248631e-02 , -1.15463245e-01 , -3.52383632e-01 , -5.54827710e-01 , -5.82599706e-01 , -3.73723060e-01 , -1.09099882e-01 , -3.75380612e-04 , +1.20382089e-03 , +1.64195612e-02 , +5.15047376e-02 , +8.46029279e-02 , +9.75224142e-02 , +6.87293530e-02 , +2.39908996e-02 , +8.34493592e-05 , -1.30629457e-04 , +1.57617385e-02 , +3.83959866e-02 , +3.75256494e-02 , +1.89047321e-02 , +1.52795123e-04 , -6.00125848e-04 , +8.38734411e-05 , -1.99694876e-04 , -1.51926328e-03 , -3.94815364e-03 , -3.84851852e-03 , -2.32871614e-03 , -4.37745728e-05 , +7.15227057e-05 , -3.61306006e-05 , +4.97187484e-05 , -1.18293305e-04 , -2.41147735e-04 , -1.78582518e-05 , +7.43243106e-05 , -1.39029362e-05 , +3.61955020e-05 , -1.56800116e-05 , +2.90415623e-05 , +9.64489117e-06 , +1.72632625e-05 , +7.16729874e-06 , -1.38098126e-05 , +8.98217711e-06 , -1.21227397e-05 , +7.96991794e-06 , -9.59765553e-06 ], [ -4.36967834e+00 , -1.06680161e+01 , -1.13343829e+01 , -7.38161743e+00 , -2.71472616e+00 , -1.74878095e-01 , +2.76106050e-01 , +7.66538327e-02 , +1.14317912e+01 , +3.12030287e+01 , +4.11085373e+01 , +3.71761363e+01 , +2.38185130e+01 , +1.04813369e+01 , +2.88928109e+00 , +3.71912897e-01 , +1.81591960e+00 , +3.54807042e+00 , +2.03380600e+00 , -2.41663959e-01 , -9.12497307e-01 , -3.63245856e-01 , -5.24309938e-04 , +1.08572079e-03 , -3.00087103e+00 , -7.24520358e+00 , -7.58791039e+00 , -4.88303220e+00 , -1.90682820e+00 , -3.54367279e-01 , -1.27406828e-04 , +3.80646344e-04 , +9.40583293e-03 , +5.60428696e-02 , +9.15661470e-02 , +6.45647468e-02 , +3.04697354e-04 , -6.13531385e-04 , +1.05151516e-04 , -2.11409275e-04 , +6.69606087e-02 , +1.40696276e-01 , +1.05964317e-01 , +3.53205177e-02 , -3.52701292e-06 , -1.19507597e-04 , +6.41980513e-05 , -1.43862303e-04 , -2.90647139e-04 , -9.11748744e-04 , -5.40864384e-05 , +1.05168711e-04 , -3.49416988e-05 , +4.64931595e-05 , -1.78809290e-05 , +2.95185424e-05 , -2.23824279e-04 , -3.58437845e-04 , -1.36616121e-06 , +1.48464038e-05 , +1.39162680e-07 , +1.75021102e-05 , -1.64920060e-05 , +3.08317964e-05 ], [ -1.16814935e+01 , -2.85412091e+01 , -3.03721286e+01 , -1.97748537e+01 , -7.17973490e+00 , -3.30139359e-01 , +8.20026085e-01 , +2.21516749e-01 , +3.12030287e+01 , +8.53351169e+01 , +1.12944008e+02 , +1.02972988e+02 , +6.67477894e+01 , +2.98232942e+01 , +8.35696946e+00 , +1.08910158e+00 , +4.74034465e+00 , +9.17792161e+00 , +5.01067658e+00 , -1.06577019e+00 , -2.70933541e+00 , -1.04960309e+00 , -1.21686401e-03 , +3.54745607e-03 , -8.41086157e+00 , -2.03596031e+01 , -2.14467427e+01 , -1.39341511e+01 , -5.51527141e+00 , -1.03788052e+00 , -2.82604604e-04 , +9.23143951e-04 , +3.67389252e-02 , +1.77488855e-01 , +2.71784497e-01 , +1.86331667e-01 , +7.38936232e-04 , -1.92155846e-03 , +2.93355296e-04 , -7.19998335e-04 , +1.91279273e-01 , +4.03391305e-01 , +3.06444642e-01 , +1.03541509e-01 , -4.53699942e-05 , -2.69889065e-04 , +1.48738764e-04 , -3.49671968e-04 , -8.61971728e-04 , -2.61228008e-03 , -1.50283045e-04 , +3.24108037e-04 , -9.09262792e-05 , +1.44464624e-04 , -5.86154509e-05 , +1.11307863e-04 , -6.44720523e-04 , -1.06199882e-03 , +5.46427262e-06 , +2.66530662e-05 , +7.93197907e-06 , +3.81841075e-05 , -3.82509369e-05 , +7.47396899e-05 ], [ -1.39547031e+01 , -3.42584233e+01 , -3.70059336e+01 , -2.48822798e+01 , -9.68701216e+00 , -8.44759114e-01 , +9.49474824e-01 , +2.80737663e-01 , +4.11085373e+01 , +1.12944008e+02 , +1.51803696e+02 , +1.42849857e+02 , +9.71134767e+01 , +4.61096176e+01 , +1.38010921e+01 , +1.90965491e+00 , +6.17602531e+00 , +1.22698388e+01 , +7.40432170e+00 , -4.52431042e-01 , -3.13631869e+00 , -1.32900027e+00 , -1.12028539e-03 , +5.98459982e-03 , -1.22804119e+01 , -3.00244533e+01 , -3.23575173e+01 , -2.18358194e+01 , -9.10838689e+00 , -1.82010155e+00 , -2.93535339e-04 , +9.83278190e-04 , +2.88385993e-02 , +1.85626391e-01 , +3.14674599e-01 , +2.35073678e-01 , +6.96656797e-04 , -3.04659259e-03 , +3.90216439e-04 , -1.25546623e-03 , +3.01290750e-01 , +6.45674346e-01 , +5.06049294e-01 , +1.81749205e-01 , -3.16346981e-05 , -3.15328136e-04 , +1.73354960e-04 , -3.84477793e-04 , -1.00664774e-03 , -3.22833335e-03 , -1.85085726e-04 , +4.85316781e-04 , -9.24057092e-05 , +2.20975553e-04 , -1.00341379e-04 , +2.18862704e-04 , -1.06226522e-03 , -1.88370223e-03 , +9.27544182e-06 , +3.02061923e-05 , +2.11084765e-06 , +4.83814974e-05 , -4.29649497e-05 , +7.97249392e-05 ], [ -9.53518416e+00 , -2.36338271e+01 , -2.67007286e+01 , -2.00185546e+01 , -9.85659385e+00 , -2.37547363e+00 , +2.14298990e-01 , +1.64301729e-01 , +3.71761363e+01 , +1.02972988e+02 , +1.42849857e+02 , +1.43732679e+02 , +1.07658030e+02 , +5.73396043e+01 , +1.92930394e+01 , +2.96461771e+00 , +6.04037681e+00 , +1.31115645e+01 , +1.06180810e+01 , +3.68943111e+00 , -7.07110240e-01 , -7.76503979e-01 , +1.42909822e-04 , +5.50818085e-03 , -1.38191645e+01 , -3.44213470e+01 , -3.86772354e+01 , -2.79165129e+01 , -1.27337323e+01 , -2.82532609e+00 , -4.62487982e-04 , +1.03979948e-03 , -7.00237233e-02 , -6.20066692e-02 , +7.13071770e-02 , +1.36189584e-01 , -6.97718975e-05 , -2.50011121e-03 , +1.74239030e-04 , -1.18157252e-03 , +3.89970453e-01 , +8.60008166e-01 , +7.07567767e-01 , +2.82067885e-01 , +2.31769608e-04 , -5.33793624e-04 , +2.69570215e-04 , -4.40507545e-04 , -2.59229168e-04 , -1.76341574e-03 , -1.06360905e-04 , +3.75452571e-04 , -2.90606669e-07 , +1.60742001e-04 , -8.44068098e-05 , +2.37405475e-04 , -1.49022835e-03 , -2.91783739e-03 , -2.52032598e-05 , +8.61237390e-05 , -5.54383584e-05 , +9.53166240e-05 , -6.07664654e-05 , +8.47178528e-05 ], [ -2.62228452e+00 , -6.59254846e+00 , -8.78688083e+00 , -9.29228730e+00 , -7.34902807e+00 , -3.61774442e+00 , -8.29935594e-01 , -4.91638035e-02 , +2.38185130e+01 , +6.67477894e+01 , +9.71134767e+01 , +1.07658030e+02 , +9.15037261e+01 , +5.55978813e+01 , +2.10783981e+01 , +3.57095294e+00 , +4.51284991e+00 , +1.10836104e+01 , +1.19768822e+01 , +7.99111674e+00 , +2.74211987e+00 , +2.33328782e-01 , +1.71236945e-03 , +9.07076298e-04 , -1.20965161e+01 , -3.07653629e+01 , -3.61629417e+01 , -2.79678907e+01 , -1.39131023e+01 , -3.40212609e+00 , -1.01258271e-03 , +1.79971426e-03 , -1.83045533e-01 , -3.72925706e-01 , -2.74416636e-01 , -4.24452290e-02 , -9.68148998e-04 , +2.35277546e-05 , -2.80476940e-04 , -2.69656211e-04 , +3.97093770e-01 , +9.00935745e-01 , +7.73352363e-01 , +3.39186852e-01 , +6.69024134e-04 , -1.06832997e-03 , +5.09598895e-04 , -7.37809353e-04 , +8.17788389e-04 , +7.26501209e-04 , +2.68606778e-05 , +5.61497204e-07 , +1.14307376e-04 , -3.33589805e-05 , +1.82422576e-06 , +1.03373337e-04 , -1.64168366e-03 , -3.46165373e-03 , -9.40183924e-05 , +2.04384183e-04 , -1.43188313e-04 , +1.87544958e-04 , -1.09339981e-04 , +1.35368384e-04 ], [ +1.14105816e+00 , +2.92322623e+00 , +2.16732861e+00 , -1.08019526e+00 , -3.56997319e+00 , -3.03871429e+00 , -1.12722881e+00 , -1.54584678e-01 , +1.04813369e+01 , +2.98232942e+01 , +4.61096176e+01 , +5.73396043e+01 , +5.55978813e+01 , +3.81241085e+01 , +1.59663376e+01 , +2.91728724e+00 , +2.36919403e+00 , +6.59289808e+00 , +8.78865430e+00 , +7.60698048e+00 , +3.72367867e+00 , +7.30042451e-01 , +2.42463779e-03 , -3.53129165e-03 , -7.65691083e+00 , -1.98246537e+01 , -2.41930022e+01 , -1.97825973e+01 , -1.05394613e+01 , -2.77833093e+00 , -1.35203771e-03 , +2.41686301e-03 , -1.84685838e-01 , -4.17784410e-01 , -3.73078533e-01 , -1.29104629e-01 , -1.23615787e-03 , +2.14567679e-03 , -5.37324965e-04 , +5.55056952e-04 , +2.85606165e-01 , +6.62710415e-01 , +5.86050234e-01 , +2.76512615e-01 , +8.07577106e-04 , -1.32187708e-03 , +6.14527580e-04 , -9.18102798e-04 , +1.14059317e-03 , +1.84389411e-03 , +9.72361742e-05 , -2.79821982e-04 , +1.43484908e-04 , -1.66500585e-04 , +6.80195000e-05 , -3.87250767e-05 , -1.25488176e-03 , -2.77577780e-03 , -1.20393458e-04 , +2.51975822e-04 , -1.63937327e-04 , +2.18045341e-04 , -1.28374788e-04 , +1.64992498e-04 ], [ +1.16365187e+00 , +3.04630046e+00 , +3.07444525e+00 , +1.11973389e+00 , -9.50848952e-01 , -1.39919685e+00 , -6.44440193e-01 , -1.04009469e-01 , +2.88928109e+00 , +8.35696946e+00 , +1.38010921e+01 , +1.92930394e+01 , +2.10783981e+01 , +1.59663376e+01 , +7.23414643e+00 , +1.40269743e+00 , +7.71439142e-01 , +2.41412066e+00 , +3.75298326e+00 , +3.76199858e+00 , +2.12858824e+00 , +4.90853807e-01 , +1.49512374e-03 , -2.98025002e-03 , -3.04054349e+00 , -7.97570913e+00 , -1.00022444e+01 , -8.51808184e+00 , -4.77559253e+00 , -1.33528020e+00 , -9.80559904e-04 , +1.80431522e-03 , -9.47227842e-02 , -2.22636089e-01 , -2.13349891e-01 , -8.65102744e-02 , -6.78738774e-04 , +1.60887340e-03 , -3.13509246e-04 , +4.45545001e-04 , +1.24869469e-01 , +2.94783588e-01 , +2.65670205e-01 , +1.32613143e-01 , +5.08491361e-04 , -8.93882920e-04 , +4.04714749e-04 , -6.34999593e-04 , +6.56476325e-04 , +1.21083239e-03 , +5.96368584e-05 , -1.97973667e-04 , +7.01242203e-05 , -1.04499532e-04 , +4.32259650e-05 , -4.46472027e-05 , -5.74559892e-04 , -1.30536890e-03 , -7.80257296e-05 , +1.64720522e-04 , -9.77939519e-05 , +1.37205629e-04 , -8.14635493e-05 , +1.10821099e-04 ], [ +2.82352691e-01 , +7.54658910e-01 , +8.18326743e-01 , +4.08083194e-01 , -9.85029374e-02 , -2.76948349e-01 , -1.45734250e-01 , -2.53248631e-02 , +3.71912897e-01 , +1.08910158e+00 , +1.90965491e+00 , +2.96461771e+00 , +3.57095294e+00 , +2.91728724e+00 , +1.40269743e+00 , +2.85127304e-01 , +1.19439277e-01 , +4.11800989e-01 , +7.12732913e-01 , +7.82377936e-01 , +4.81262018e-01 , +1.19680443e-01 , +3.08297799e-04 , -6.63926587e-04 , -5.38240281e-01 , -1.42428027e+00 , -1.81908652e+00 , -1.59339293e+00 , -9.26080584e-01 , -2.71222197e-01 , -3.11630207e-04 , +5.78111554e-04 , -2.02534543e-02 , -4.85196776e-02 , -4.82261437e-02 , -2.11488684e-02 , -1.23668355e-04 , +3.36213414e-04 , -5.52757782e-05 , +8.72816072e-05 , +2.36500679e-02 , +5.65674106e-02 , +5.15568750e-02 , +2.68472703e-02 , +1.40798929e-04 , -2.63852214e-04 , +1.15985617e-04 , -1.89201177e-04 , +1.48041102e-04 , +2.99858329e-04 , +9.98230616e-06 , -3.79678968e-05 , +1.02222637e-05 , -1.79057052e-05 , +6.97543732e-06 , -8.24734878e-06 , -1.13128644e-04 , -2.56436193e-04 , -2.15720741e-05 , +4.64143704e-05 , -2.50973326e-05 , +3.73472480e-05 , -2.20548302e-05 , +3.16066186e-05 ], [ -9.81697530e-01 , -2.57832310e+00 , -3.55620409e+00 , -3.97334744e+00 , -3.49420597e+00 , -2.11828143e+00 , -7.54345817e-01 , -1.15463245e-01 , +1.81591959e+00 , +4.74034463e+00 , +6.17602528e+00 , +6.04037679e+00 , +4.51284989e+00 , +2.36919403e+00 , +7.71439140e-01 , +1.19439276e-01 , +2.49151001e+00 , +6.24660325e+00 , +7.17060106e+00 , +5.36066563e+00 , +2.49005314e+00 , +5.44842201e-01 , +3.35290771e-04 , -4.15702502e-03 , -5.76362318e-01 , -1.42956699e+00 , -1.59546840e+00 , -1.14846076e+00 , -5.09858147e-01 , -1.12920345e-01 , -4.79882627e-04 , +6.47214307e-04 , -1.34611496e-01 , -2.97387715e-01 , -2.49319125e-01 , -9.54390148e-02 , -2.14497672e-04 , +2.04442703e-03 , -2.54681477e-04 , +8.60109746e-04 , +1.58700003e-02 , +3.49651640e-02 , +2.85412381e-02 , +1.08545709e-02 , +3.10016371e-04 , -4.24269089e-04 , +2.21091996e-04 , -2.82681966e-04 , +7.68664524e-04 , +1.27384559e-03 , +4.93996724e-05 , -2.77315521e-04 , +3.61506207e-05 , -1.44745550e-04 , +7.11678830e-05 , -1.51181286e-04 , -7.04579981e-05 , -6.94562657e-05 , -4.87365770e-05 , +8.65282814e-05 , -6.00152887e-05 , +7.69086531e-05 , -5.32406461e-05 , +6.22715882e-05 ], [ -1.41339773e+00 , -3.82240743e+00 , -6.05477906e+00 , -8.28852068e+00 , -8.57456944e+00 , -5.77888818e+00 , -2.20385299e+00 , -3.52383632e-01 , +3.54807040e+00 , +9.17792155e+00 , +1.22698387e+01 , +1.31115644e+01 , +1.10836104e+01 , +6.59289806e+00 , +2.41412065e+00 , +4.11800988e-01 , +6.24660325e+00 , +1.59800831e+01 , +1.90434018e+01 , +1.49211603e+01 , +7.27543922e+00 , +1.66312017e+00 , +1.45640551e-03 , -1.21083109e-02 , -1.45047950e+00 , -3.67240669e+00 , -4.28358540e+00 , -3.29872904e+00 , -1.59523802e+00 , -3.89997483e-01 , -1.31675617e-03 , +1.77345063e-03 , -3.76982768e-01 , -8.46203904e-01 , -7.28599609e-01 , -2.91672543e-01 , -8.36990627e-04 , +6.01830066e-03 , -7.85984173e-04 , +2.46703885e-03 , +4.62683573e-02 , +1.05003114e-01 , +8.92117267e-02 , +3.78034703e-02 , +8.55226172e-04 , -1.17062878e-03 , +6.09805568e-04 , -7.73371584e-04 , +2.24942036e-03 , +3.91588377e-03 , +1.62552119e-04 , -8.18544500e-04 , +1.23930017e-04 , -4.25165537e-04 , +2.04983160e-04 , -4.25056593e-04 , -2.16306940e-04 , -2.74310948e-04 , -1.35201659e-04 , +2.39988586e-04 , -1.68367469e-04 , +2.13344875e-04 , -1.45832037e-04 , +1.68245030e-04 ], [ +6.15364053e-01 , +1.32299678e+00 , -6.17105761e-01 , -5.66492617e+00 , -9.31626879e+00 , -7.67200655e+00 , -3.25886973e+00 , -5.54827710e-01 , +2.03380597e+00 , +5.01067651e+00 , +7.40432160e+00 , +1.06180809e+01 , +1.19768821e+01 , +8.78865428e+00 , +3.75298326e+00 , +7.12732912e-01 , +7.17060106e+00 , +1.90434018e+01 , +2.42370038e+01 , +2.04989214e+01 , +1.07594198e+01 , +2.61885414e+00 , +3.13791727e-03 , -1.83080465e-02 , -1.65494163e+00 , -4.34130262e+00 , -5.43315155e+00 , -4.60912534e+00 , -2.47956386e+00 , -6.75855854e-01 , -1.85558067e-03 , +2.53164340e-03 , -5.23933904e-01 , -1.20436098e+00 , -1.07780208e+00 , -4.59767965e-01 , -1.64529377e-03 , +9.19823674e-03 , -1.26700244e-03 , +3.64238943e-03 , +6.60718229e-02 , +1.55771547e-01 , +1.38563993e-01 , +6.59115957e-02 , +1.19626000e-03 , -1.65741613e-03 , +8.59617771e-04 , -1.08928361e-03 , +3.33563885e-03 , +6.20286492e-03 , +2.77925529e-04 , -1.25005940e-03 , +2.17892056e-04 , -6.44493632e-04 , +3.03740170e-04 , -6.10625321e-04 , -3.31812557e-04 , -5.18447445e-04 , -1.91711433e-04 , +3.41348789e-04 , -2.40944511e-04 , +3.02159478e-04 , -2.02581790e-04 , +2.31220011e-04 ], [ +2.54529067e+00 , +6.42484070e+00 , +5.79834361e+00 , -1.96714034e-01 , -6.25175245e+00 , -6.76301160e+00 , -3.21887372e+00 , -5.82599706e-01 , -2.41663982e-01 , -1.06577025e+00 , -4.52431124e-01 , +3.68943104e+00 , +7.99111670e+00 , +7.60698046e+00 , +3.76199857e+00 , +7.82377936e-01 , +5.36066562e+00 , +1.49211603e+01 , +2.04989214e+01 , +1.88082922e+01 , +1.06287695e+01 , +2.74834889e+00 , +4.43748176e-03 , -1.98970029e-02 , -1.22133268e+00 , -3.34052456e+00 , -4.50936393e+00 , -4.20303844e+00 , -2.48531738e+00 , -7.42300794e-01 , -1.85040212e-03 , +2.63832918e-03 , -4.88174286e-01 , -1.14780642e+00 , -1.06514748e+00 , -4.82144064e-01 , -2.14894147e-03 , +1.00585042e-02 , -1.45035502e-03 , +3.83341216e-03 , +6.17682332e-02 , +1.50688257e-01 , +1.38856067e-01 , +7.25666544e-02 , +1.15367984e-03 , -1.65868124e-03 , +8.53510160e-04 , -1.10608413e-03 , +3.30897023e-03 , +6.48262246e-03 , +3.22988798e-04 , -1.35039207e-03 , +2.57042358e-04 , -6.92016303e-04 , +3.22007848e-04 , -6.24981295e-04 , -3.31926744e-04 , -5.87907726e-04 , -1.88515033e-04 , +3.40225401e-04 , -2.36681751e-04 , +2.99310789e-04 , -1.98203430e-04 , +2.28622096e-04 ], [ +2.16101379e+00 , +5.61261494e+00 , +5.88129152e+00 , +2.14059304e+00 , -2.37985520e+00 , -3.65574211e+00 , -1.94562005e+00 , -3.73723060e-01 , -9.12497318e-01 , -2.70933544e+00 , -3.13631873e+00 , -7.07110278e-01 , +2.74211984e+00 , +3.72367866e+00 , +2.12858824e+00 , +4.81262017e-01 , +2.49005314e+00 , +7.27543922e+00 , +1.07594198e+01 , +1.06287695e+01 , +6.42551597e+00 , +1.76102482e+00 , +3.72959779e-03 , -1.40494294e-02 , -5.09308000e-01 , -1.46272160e+00 , -2.13632497e+00 , -2.18393347e+00 , -1.40628896e+00 , -4.56464149e-01 , -1.24076035e-03 , +1.87893338e-03 , -2.81219915e-01 , -6.74058102e-01 , -6.44272286e-01 , -3.08216741e-01 , -1.68247061e-03 , +7.07708656e-03 , -1.04388149e-03 , +2.59227648e-03 , +3.29878099e-02 , +8.30710060e-02 , +7.86214528e-02 , +4.45490536e-02 , +7.18689616e-04 , -1.10116235e-03 , +5.61108894e-04 , -7.54068948e-04 , +2.01058942e-03 , +4.10399803e-03 , +2.28514285e-04 , -9.28619389e-04 , +1.81676676e-04 , -4.70179015e-04 , +2.17537114e-04 , -4.10013431e-04 , -1.90841881e-04 , -3.53471382e-04 , -1.18957155e-04 , +2.20963041e-04 , -1.48684798e-04 , +1.93701402e-04 , -1.27701445e-04 , +1.51019338e-04 ], [ +6.60664612e-01 , +1.74814857e+00 , +1.95117019e+00 , +9.72812936e-01 , -3.69419383e-01 , -8.99584690e-01 , -5.32998889e-01 , -1.09099882e-01 , -3.63245859e-01 , -1.04960310e+00 , -1.32900028e+00 , -7.76503988e-01 , +2.33328776e-01 , +7.30042448e-01 , +4.90853806e-01 , +1.19680442e-01 , +5.44842201e-01 , +1.66312017e+00 , +2.61885414e+00 , +2.74834889e+00 , +1.76102482e+00 , +5.12625096e-01 , +1.80124197e-03 , -5.14696034e-03 , -7.74984365e-02 , -2.43240979e-01 , -3.99575643e-01 , -4.60656797e-01 , -3.24359936e-01 , -1.13369138e-01 , -3.98311416e-04 , +6.23680495e-04 , -7.43120842e-02 , -1.81044750e-01 , -1.76837465e-01 , -8.91120487e-02 , -7.33360666e-04 , +2.56171737e-03 , -4.02301065e-04 , +8.86632630e-04 , +7.17166737e-03 , +1.86510559e-02 , +1.81640335e-02 , +1.10010480e-02 , +2.08902712e-04 , -3.41560152e-04 , +1.72632755e-04 , -2.37645459e-04 , +5.57815810e-04 , +1.15228292e-03 , +8.56290963e-05 , -3.25310428e-04 , +6.67557419e-05 , -1.60728992e-04 , +7.51496669e-05 , -1.33122261e-04 , -4.55913623e-05 , -8.12195921e-05 , -3.41714846e-05 , +6.59235503e-05 , -4.28771927e-05 , +5.79188403e-05 , -3.80974837e-05 , +4.59077793e-05 ], [ +1.36501058e-03 , +3.73980972e-03 , +4.75788248e-03 , +3.73968914e-03 , +1.29040028e-03 , -6.76569047e-04 , -1.02024947e-03 , -3.75380612e-04 , -5.24309954e-04 , -1.21686405e-03 , -1.12028544e-03 , +1.42909780e-04 , +1.71236943e-03 , +2.42463779e-03 , +1.49512373e-03 , +3.08297799e-04 , +3.35290775e-04 , +1.45640552e-03 , +3.13791728e-03 , +4.43748178e-03 , +3.72959780e-03 , +1.80124197e-03 , +3.79366732e-04 , +6.20661660e-06 , -3.64477856e-04 , -1.00940102e-03 , -1.45031458e-03 , -1.41712009e-03 , -9.86905498e-04 , -2.93933287e-04 , -1.60146825e-08 , -1.28339567e-07 , -1.65396228e-04 , -4.20966460e-04 , -4.90834024e-04 , -3.28056189e-04 , -1.17291974e-04 , -3.63542275e-06 , -4.06165612e-05 , -1.12613356e-06 , +2.28753972e-05 , +5.40693739e-05 , +5.49030020e-05 , +2.94033428e-05 , +2.49843908e-08 , +7.41658905e-08 , -6.35909243e-08 , +1.48478834e-07 , +3.53863927e-06 , +5.20953220e-06 , +7.82865789e-06 , +4.50583886e-07 , +3.94662688e-06 , +2.79080358e-07 , +3.20705384e-06 , +1.53379090e-07 , -1.19565301e-07 , -3.05685857e-07 , -1.26922121e-08 , -6.93182287e-09 , +7.38522857e-10 , -2.14682175e-08 , +2.05157096e-08 , -4.08437804e-08 ], [ -2.32275170e-03 , -6.84283128e-03 , -9.34685370e-03 , -6.46977726e-03 , +7.28907337e-04 , +5.37599144e-03 , +4.25939321e-03 , +1.20382089e-03 , +1.08572082e-03 , +3.54745616e-03 , +5.98459993e-03 , +5.50818095e-03 , +9.07076363e-04 , -3.53129162e-03 , -2.98025001e-03 , -6.63926586e-04 , -4.15702501e-03 , -1.21083109e-02 , -1.83080465e-02 , -1.98970029e-02 , -1.40494294e-02 , -5.14696034e-03 , +6.20661661e-06 , +4.29086475e-04 , +3.49959305e-04 , +1.07184733e-03 , +1.88253682e-03 , +2.34239246e-03 , +1.96684140e-03 , +6.33369414e-04 , -1.84452144e-07 , +4.39075084e-07 , +5.68789498e-04 , +1.36777488e-03 , +1.40280625e-03 , +6.89033310e-04 , -2.53107624e-06 , -1.90489863e-04 , -1.41153381e-06 , -4.41054452e-05 , -4.07528186e-05 , -9.96923337e-05 , -1.09252353e-04 , -6.35669982e-05 , +1.39611343e-07 , -3.16671597e-07 , +2.04712131e-07 , -3.23815730e-07 , -4.18567259e-06 , +1.21992362e-06 , +2.71015917e-07 , +1.88840385e-05 , +2.51176259e-07 , +6.05998145e-06 , +2.44170352e-07 , +3.02285712e-06 , +2.29372615e-07 , +6.85623304e-07 , -1.18627081e-08 , +5.79563467e-08 , -4.11055809e-08 , +7.44950661e-08 , -5.81951310e-08 , +8.17899381e-08 ], [ +2.53968706e-01 , +6.00384512e-01 , +8.03385352e-01 , +9.45721976e-01 , +8.76527546e-01 , +5.19547284e-01 , +1.54178876e-01 , +1.64195614e-02 , -3.00087103e+00 , -8.41086157e+00 , -1.22804119e+01 , -1.38191645e+01 , -1.20965161e+01 , -7.65691083e+00 , -3.04054349e+00 , -5.38240281e-01 , -5.76362320e-01 , -1.45047951e+00 , -1.65494164e+00 , -1.22133269e+00 , -5.09308003e-01 , -7.74984372e-02 , -3.64477858e-04 , +3.49959313e-04 , +1.63341892e+00 , +4.17352151e+00 , +4.95922109e+00 , +3.91156465e+00 , +2.00704211e+00 , +5.12611319e-01 , +2.60646959e-04 , -4.67818302e-04 , +2.91360928e-02 , +6.21265778e-02 , +5.10120555e-02 , +1.37341177e-02 , +1.75011991e-04 , -2.28409250e-04 , +6.78169640e-05 , -3.57322226e-05 , -5.60667093e-02 , -1.28497482e-01 , -1.11597062e-01 , -5.10208078e-02 , -1.39350467e-04 , +2.40657329e-04 , -1.13730319e-04 , +1.72688470e-04 , -1.54341382e-04 , -2.02707611e-04 , -8.84152153e-06 , +2.56588554e-05 , -1.86690510e-05 , +1.65914269e-05 , -5.84519895e-06 , -3.61270472e-06 , +2.38746706e-04 , +5.12701768e-04 , +2.05357669e-05 , -4.43061417e-05 , +2.76745348e-05 , -3.85810496e-05 , +2.33674002e-05 , -3.08495728e-05 ], [ +3.74626666e-01 , +8.55253482e-01 , +1.34370771e+00 , +2.00614964e+00 , +2.16444406e+00 , +1.39609472e+00 , +4.42807015e-01 , +5.15047380e-02 , -7.24520358e+00 , -2.03596031e+01 , -3.00244533e+01 , -3.44213470e+01 , -3.07653629e+01 , -1.98246537e+01 , -7.97570913e+00 , -1.42428027e+00 , -1.42956699e+00 , -3.67240670e+00 , -4.34130264e+00 , -3.34052457e+00 , -1.46272161e+00 , -2.43240980e-01 , -1.00940103e-03 , +1.07184735e-03 , +4.17352151e+00 , +1.06946428e+01 , +1.27834392e+01 , +1.01671401e+01 , +5.26475989e+00 , +1.35641231e+00 , +7.14155351e-04 , -1.26893854e-03 , +8.01539925e-02 , +1.73847021e-01 , +1.46511969e-01 , +4.31149338e-02 , +4.87347323e-04 , -6.81811880e-04 , +1.92619388e-04 , -1.23171973e-04 , -1.45997441e-01 , -3.35647062e-01 , -2.92749264e-01 , -1.34983012e-01 , -3.85579211e-04 , +6.56763887e-04 , -3.09896625e-04 , +4.67425730e-04 , -4.44288989e-04 , -6.32107909e-04 , -2.73519819e-05 , +7.92361158e-05 , -5.23964985e-05 , +4.96411019e-05 , -1.81360992e-05 , -5.15246939e-06 , +6.26582335e-04 , +1.35467889e-03 , +5.70353201e-05 , -1.21568376e-04 , +7.63098574e-05 , -1.05203248e-04 , +6.34394317e-05 , -8.32291916e-05 ], [ -2.05813962e-01 , -6.02361335e-01 , -1.10156827e-01 , +1.38147406e+00 , +2.38328416e+00 , +1.82776666e+00 , +6.46723373e-01 , +8.46029283e-02 , -7.58791039e+00 , -2.14467427e+01 , -3.23575173e+01 , -3.86772354e+01 , -3.61629417e+01 , -2.41930022e+01 , -1.00022444e+01 , -1.81908652e+00 , -1.59546841e+00 , -4.28358541e+00 , -5.43315156e+00 , -4.50936394e+00 , -2.13632498e+00 , -3.99575645e-01 , -1.45031459e-03 , +1.88253684e-03 , +4.95922109e+00 , +1.27834392e+01 , +1.54670703e+01 , +1.25120015e+01 , +6.60256401e+00 , +1.73231109e+00 , +9.59437024e-04 , -1.68745023e-03 , +1.09305341e-01 , +2.43541012e-01 , +2.14025343e-01 , +7.07323678e-02 , +7.02895939e-04 , -1.13602156e-03 , +2.85735523e-04 , -2.50120866e-04 , -1.80410779e-01 , -4.17387445e-01 , -3.67168622e-01 , -1.72349175e-01 , -5.22271216e-04 , +8.77200639e-04 , -4.12357235e-04 , +6.18215580e-04 , -6.52348451e-04 , -1.02094074e-03 , -4.81816794e-05 , +1.38985149e-04 , -7.59528761e-05 , +8.12089328e-05 , -3.07911349e-05 , +7.23658831e-06 , +7.87058011e-04 , +1.72523469e-03 , +7.82414109e-05 , -1.63377462e-04 , +1.03003790e-04 , -1.40136769e-04 , +8.39617951e-05 , -1.09427817e-04 ], [ -8.44468626e-01 , -2.20369524e+00 , -1.96826295e+00 , -7.39925945e-02 , +1.62603650e+00 , +1.63324906e+00 , +6.61178352e-01 , +9.75224145e-02 , -4.88303220e+00 , -1.39341511e+01 , -2.18358194e+01 , -2.79165129e+01 , -2.79678907e+01 , -1.97825973e+01 , -8.51808184e+00 , -1.59339293e+00 , -1.14846077e+00 , -3.29872905e+00 , -4.60912535e+00 , -4.20303845e+00 , -2.18393347e+00 , -4.60656799e-01 , -1.41712009e-03 , +2.34239247e-03 , +3.91156465e+00 , +1.01671401e+01 , +1.25120015e+01 , +1.03676968e+01 , +5.62302818e+00 , +1.51714135e+00 , +9.71867237e-04 , -1.69141413e-03 , +1.03657307e-01 , +2.37964792e-01 , +2.18821221e-01 , +8.14414381e-02 , +6.79215123e-04 , -1.33629760e-03 , +2.97150261e-04 , -3.46092220e-04 , -1.50513165e-01 , -3.51433504e-01 , -3.12750788e-01 , -1.50837667e-01 , -5.21756654e-04 , +8.71536553e-04 , -4.08553737e-04 , +6.11696865e-04 , -6.69781540e-04 , -1.16017365e-03 , -5.37667756e-05 , +1.66671495e-04 , -7.34845303e-05 , +9.30942480e-05 , -3.75853918e-05 , +2.69455792e-05 , +6.73236043e-04 , +1.49902787e-03 , +7.85510454e-05 , -1.61807112e-04 , +1.01410471e-04 , -1.37522779e-04 , +8.25436469e-05 , -1.07792910e-04 ], [ -7.68127323e-01 , -2.01091687e+00 , -2.02953739e+00 , -7.38953238e-01 , +6.28271375e-01 , +9.24295296e-01 , +4.25761130e-01 , +6.87293531e-02 , -1.90682820e+00 , -5.51527141e+00 , -9.10838688e+00 , -1.27337323e+01 , -1.39131023e+01 , -1.05394613e+01 , -4.77559253e+00 , -9.26080584e-01 , -5.09858148e-01 , -1.59523802e+00 , -2.47956387e+00 , -2.48531738e+00 , -1.40628896e+00 , -3.24359937e-01 , -9.86905498e-04 , +1.96684141e-03 , +2.00704211e+00 , +5.26475989e+00 , +6.60256401e+00 , +5.62302818e+00 , +3.15264973e+00 , +8.81571955e-01 , +6.78479103e-04 , -1.19026676e-03 , +6.25809720e-02 , +1.47093047e-01 , +1.40952958e-01 , +5.71682856e-02 , +4.47969855e-04 , -1.06182374e-03 , +2.06971057e-04 , -2.94059449e-04 , -8.24329382e-02 , -1.94603239e-01 , -1.75391241e-01 , -8.75536892e-02 , -3.53254578e-04 , +5.89633619e-04 , -2.75367681e-04 , +4.18884270e-04 , -4.33701128e-04 , -8.00247191e-04 , -3.93489901e-05 , +1.30647868e-04 , -4.62845356e-05 , +6.89773924e-05 , -2.85407222e-05 , +2.94685717e-05 , +3.79553800e-04 , +8.61879037e-04 , +5.24321387e-05 , -1.08655060e-04 , +6.63847454e-05 , -9.05026141e-05 , +5.48512681e-05 , -7.31004204e-05 ], [ -2.69065920e-01 , -7.18947807e-01 , -7.79325366e-01 , -3.88652594e-01 , +9.32978715e-02 , +2.62905880e-01 , +1.38224307e-01 , +2.39908996e-02 , -3.54367279e-01 , -1.03788052e+00 , -1.82010155e+00 , -2.82532609e+00 , -3.40212609e+00 , -2.77833093e+00 , -1.33528020e+00 , -2.71222197e-01 , -1.12920345e-01 , -3.89997484e-01 , -6.75855855e-01 , -7.42300794e-01 , -4.56464149e-01 , -1.13369139e-01 , -2.93933287e-04 , +6.33369415e-04 , +5.12611319e-01 , +1.35641231e+00 , +1.73231109e+00 , +1.51714135e+00 , +8.81571955e-01 , +2.58085674e-01 , +2.98116625e-04 , -4.99926984e-04 , +1.92086777e-02 , +4.60101236e-02 , +4.57418352e-02 , +2.00308179e-02 , +1.17997503e-04 , -3.20710542e-04 , +5.26252708e-05 , -8.32226467e-05 , -2.25165989e-02 , -5.38602969e-02 , -4.90793707e-02 , -2.55654354e-02 , -1.34637006e-04 , +2.23059612e-04 , -1.11012063e-04 , +1.67164285e-04 , -1.40432775e-04 , -2.83845294e-04 , -9.54428270e-06 , +3.62361000e-05 , -9.74840164e-06 , +1.70616106e-05 , -6.62773849e-06 , +7.85548070e-06 , +1.07709515e-04 , +2.45745394e-04 , +2.06157944e-05 , -4.16021614e-05 , +2.40037513e-05 , -3.27956689e-05 , +2.11223256e-05 , -2.84748027e-05 ], [ -5.47673158e-05 , -2.65351684e-04 , -4.48896178e-04 , -2.44397712e-04 , +2.68823147e-04 , +5.63053977e-04 , +3.76128910e-04 , +8.34493595e-05 , -1.27406815e-04 , -2.82604567e-04 , -2.93535290e-04 , -4.62487938e-04 , -1.01258268e-03 , -1.35203770e-03 , -9.80559902e-04 , -3.11630207e-04 , -4.79882624e-04 , -1.31675616e-03 , -1.85558066e-03 , -1.85040212e-03 , -1.24076035e-03 , -3.98311418e-04 , -1.60146832e-08 , -1.84452137e-07 , +2.60646955e-04 , +7.14155344e-04 , +9.59437016e-04 , +9.71867232e-04 , +6.78479102e-04 , +2.98116625e-04 , +6.77784999e-05 , +9.14351850e-07 , +5.23077218e-05 , +1.30000555e-04 , +1.24001658e-04 , +7.18864251e-05 , -5.49476755e-08 , +7.30725384e-08 , +5.76974491e-08 , -1.39623290e-08 , -1.86865840e-05 , -4.39403655e-05 , -5.07064198e-05 , -3.01818438e-05 , -1.32935771e-05 , -4.70388580e-07 , -1.62046751e-05 , -3.52439031e-07 , -3.70467907e-07 , -1.10719001e-06 , +1.77786370e-08 , -2.12041577e-08 , +2.41328517e-09 , +9.19787256e-09 , -1.77057783e-08 , +1.01900611e-08 , +4.39468050e-07 , +3.45871283e-07 , +1.34657038e-06 , +6.65514132e-08 , +1.09219668e-06 , +7.55690007e-08 , +1.79042333e-06 , +7.01705633e-08 ], [ -1.61579955e-05 , +1.96742562e-04 , +5.99194946e-04 , +5.40516236e-04 , -1.68692495e-04 , -7.58338683e-04 , -5.69574089e-04 , -1.30629457e-04 , +3.80646356e-04 , +9.23143984e-04 , +9.83278232e-04 , +1.03979952e-03 , +1.79971428e-03 , +2.41686301e-03 , +1.80431522e-03 , +5.78111554e-04 , +6.47214310e-04 , +1.77345063e-03 , +2.53164340e-03 , +2.63832918e-03 , +1.87893338e-03 , +6.23680494e-04 , -1.28339565e-07 , +4.39075085e-07 , -4.67818304e-04 , -1.26893854e-03 , -1.68745024e-03 , -1.69141414e-03 , -1.19026676e-03 , -4.99926984e-04 , +9.14351854e-07 , +7.72673899e-05 , -7.68120839e-05 , -1.92503844e-04 , -1.87753657e-04 , -1.12618766e-04 , +1.18002440e-07 , -2.17727703e-07 , -2.80655884e-08 , -3.51277604e-08 , +2.72183217e-05 , +6.02108866e-05 , +6.58977204e-05 , +2.40612214e-05 , -3.56488114e-07 , -2.16371197e-05 , -4.20527899e-07 , -1.81558926e-05 , +5.62053615e-07 , +1.73453456e-06 , -2.10426269e-08 , +3.52707077e-08 , -3.83544861e-09 , -9.81415352e-10 , +1.28395117e-08 , -8.28072662e-10 , -1.27407012e-07 , +1.40440073e-06 , +4.92708624e-08 , +2.87985084e-06 , +7.16792636e-08 , +1.71813132e-06 , +9.67577628e-08 , +1.91466896e-06 ], [ -6.88223683e-02 , -1.76403390e-01 , -1.67760280e-01 , -1.46118793e-02 , +1.49610663e-01 , +1.73158663e-01 , +8.51518736e-02 , +1.57617385e-02 , +9.40583353e-03 , +3.67389268e-02 , +2.88386014e-02 , -7.00237214e-02 , -1.83045532e-01 , -1.84685837e-01 , -9.47227841e-02 , -2.02534543e-02 , -1.34611496e-01 , -3.76982768e-01 , -5.23933904e-01 , -4.88174286e-01 , -2.81219915e-01 , -7.43120842e-02 , -1.65396228e-04 , +5.68789498e-04 , +2.91360927e-02 , +8.01539921e-02 , +1.09305341e-01 , +1.03657307e-01 , +6.25809719e-02 , +1.92086777e-02 , +5.23077217e-05 , -7.68120839e-05 , +1.27642410e-02 , +3.01516400e-02 , +2.81978664e-02 , +1.30195063e-02 , +7.32276381e-05 , -2.86285584e-04 , +4.58530585e-05 , -1.07221510e-04 , -1.53554158e-03 , -3.77583979e-03 , -3.49817214e-03 , -1.87432732e-03 , -3.13412423e-05 , +4.65085224e-05 , -2.38273751e-05 , +3.14495864e-05 , -8.83832050e-05 , -1.74134011e-04 , -9.84069350e-06 , +3.79333705e-05 , -7.72996727e-06 , +1.93059463e-05 , -9.56212026e-06 , +1.72571565e-05 , +8.45130747e-06 , +1.48393318e-05 , +5.13365990e-06 , -9.40782090e-06 , +6.42768184e-06 , -8.27186291e-06 , +5.48195854e-06 , -6.40967968e-06 ], [ -1.92158622e-01 , -4.94927723e-01 , -4.92967115e-01 , -1.12839853e-01 , +3.14498460e-01 , +4.02083923e-01 , +2.04093210e-01 , +3.83959866e-02 , +5.60428709e-02 , +1.77488858e-01 , +1.85626396e-01 , -6.20066650e-02 , -3.72925704e-01 , -4.17784409e-01 , -2.22636089e-01 , -4.85196775e-02 , -2.97387715e-01 , -8.46203904e-01 , -1.20436098e+00 , -1.14780642e+00 , -6.74058102e-01 , -1.81044750e-01 , -4.20966459e-04 , +1.36777488e-03 , +6.21265774e-02 , +1.73847020e-01 , +2.43541011e-01 , +2.37964792e-01 , +1.47093047e-01 , +4.60101235e-02 , +1.30000555e-04 , -1.92503844e-04 , +3.01516400e-02 , +7.16892713e-02 , +6.75972310e-02 , +3.17285975e-02 , +1.86082824e-04 , -6.90470766e-04 , +1.13712594e-04 , -2.56938042e-04 , -3.54588185e-03 , -8.79688589e-03 , -8.22371176e-03 , -4.48694248e-03 , -7.60491051e-05 , +1.14611236e-04 , -5.85902587e-05 , +7.77212500e-05 , -2.11135313e-04 , -4.26077508e-04 , -2.48202751e-05 , +9.18151084e-05 , -1.95801498e-05 , +4.67740141e-05 , -2.34247990e-05 , +4.12484662e-05 , +1.99454788e-05 , +3.52870578e-05 , +1.24291020e-05 , -2.29822248e-05 , +1.56080544e-05 , -2.02146516e-05 , +1.33563694e-05 , -1.56615859e-05 ], [ -2.16638370e-01 , -5.62730486e-01 , -5.89983941e-01 , -2.15407057e-01 , +2.37733052e-01 , +3.66068969e-01 , +1.95048293e-01 , +3.75256494e-02 , +9.15661482e-02 , +2.71784500e-01 , +3.14674603e-01 , +7.13071808e-02 , -2.74416634e-01 , -3.73078532e-01 , -2.13349891e-01 , -4.82261437e-02 , -2.49319125e-01 , -7.28599608e-01 , -1.07780208e+00 , -1.06514748e+00 , -6.44272286e-01 , -1.76837465e-01 , -4.90834023e-04 , +1.40280625e-03 , +5.10120552e-02 , +1.46511968e-01 , +2.14025342e-01 , +2.18821220e-01 , +1.40952958e-01 , +4.57418351e-02 , +1.24001658e-04 , -1.87753657e-04 , +2.81978664e-02 , +6.75972310e-02 , +6.46467202e-02 , +3.09553532e-02 , +2.07469415e-04 , -7.06490932e-04 , +1.22050635e-04 , -2.58860315e-04 , -3.30589145e-03 , -8.32391033e-03 , -7.88014948e-03 , -4.46450270e-03 , -7.18407088e-05 , +1.10038839e-04 , -5.60639523e-05 , +7.53249029e-05 , -2.02490738e-04 , -4.12519737e-04 , -2.80203761e-05 , +9.26981260e-05 , -2.02414836e-05 , +4.69309281e-05 , -2.40793886e-05 , +4.09542803e-05 , +1.91221702e-05 , +3.54521568e-05 , +1.18943691e-05 , -2.20842884e-05 , +1.48622105e-05 , -1.93553187e-05 , +1.27582384e-05 , -1.50820404e-05 ], [ -1.17358804e-01 , -3.10118352e-01 , -3.45130767e-01 , -1.71061497e-01 , +6.58688847e-02 , +1.58454175e-01 , +9.32815939e-02 , +1.89047321e-02 , +6.45647473e-02 , +1.86331669e-01 , +2.35073680e-01 , +1.36189586e-01 , -4.24452280e-02 , -1.29104628e-01 , -8.65102742e-02 , -2.11488684e-02 , -9.54390147e-02 , -2.91672543e-01 , -4.59767964e-01 , -4.82144064e-01 , -3.08216741e-01 , -8.91120487e-02 , -3.28056188e-04 , +6.89033310e-04 , +1.37341176e-02 , +4.31149334e-02 , +7.07323674e-02 , +8.14414378e-02 , +5.71682855e-02 , +2.00308179e-02 , +7.18864249e-05 , -1.12618766e-04 , +1.30195063e-02 , +3.17285975e-02 , +3.09553532e-02 , +1.56207824e-02 , +1.33628631e-04 , -3.48981349e-04 , +7.32910488e-05 , -1.25462139e-04 , -1.26556799e-03 , -3.29596371e-03 , -3.20196737e-03 , -1.94244457e-03 , -3.77185026e-05 , +6.17244983e-05 , -3.12274123e-05 , +4.30090197e-05 , -9.77979573e-05 , -2.08579409e-04 , -1.55952399e-05 , +4.31143648e-05 , -1.21826092e-05 , +2.34761998e-05 , -1.36791757e-05 , +1.97889218e-05 , +8.06524096e-06 , +1.42084608e-05 , +6.16145585e-06 , -1.19094499e-05 , +7.74806700e-06 , -1.04787929e-05 , +6.89900544e-06 , -8.32073693e-06 ], [ -6.77575337e-04 , -1.84143143e-03 , -2.24934808e-03 , -1.58842691e-03 , -3.62660943e-04 , +4.38421028e-04 , +4.66944604e-04 , +1.52795123e-04 , +3.04697353e-04 , +7.38936230e-04 , +6.96656794e-04 , -6.97719003e-05 , -9.68149000e-04 , -1.23615787e-03 , -6.78738775e-04 , -1.23668355e-04 , -2.14497673e-04 , -8.36990631e-04 , -1.64529377e-03 , -2.14894148e-03 , -1.68247061e-03 , -7.33360667e-04 , -1.17291974e-04 , -2.53107624e-06 , +1.75011991e-04 , +4.87347324e-04 , +7.02895940e-04 , +6.79215124e-04 , +4.47969855e-04 , +1.17997504e-04 , -5.49476781e-08 , +1.18002440e-07 , +7.32276382e-05 , +1.86082824e-04 , +2.07469416e-04 , +1.33628631e-04 , +5.44060100e-05 , +1.52936308e-06 , +1.74491609e-05 , +4.70004375e-07 , -1.05944751e-05 , -2.43405076e-05 , -2.49116631e-05 , -1.18291438e-05 , +1.07054390e-08 , -6.90929055e-08 , +5.06574836e-08 , -8.88483074e-08 , -1.54943670e-06 , -2.12840754e-06 , -3.49805441e-06 , -1.98334725e-07 , -5.63136915e-06 , -1.24090727e-07 , -2.27199365e-06 , -6.40903333e-08 , +5.39559348e-08 , +1.24705131e-07 , +4.03252891e-09 , +7.62682488e-09 , -3.77593799e-09 , +1.52456861e-08 , -1.36899923e-08 , +2.28011833e-08 ], [ +1.32077265e-03 , +3.84450132e-03 , +5.12873097e-03 , +3.47750190e-03 , -3.46243400e-04 , -2.73248171e-03 , -2.14579453e-03 , -6.00125848e-04 , -6.13531409e-04 , -1.92155853e-03 , -3.04659267e-03 , -2.50011129e-03 , +2.35277063e-05 , +2.14567677e-03 , +1.60887340e-03 , +3.36213414e-04 , +2.04442703e-03 , +6.01830066e-03 , +9.19823674e-03 , +1.00585042e-02 , +7.07708657e-03 , +2.56171737e-03 , -3.63542276e-06 , -1.90489863e-04 , -2.28409244e-04 , -6.81811866e-04 , -1.13602154e-03 , -1.33629759e-03 , -1.06182374e-03 , -3.20710541e-04 , +7.30725430e-08 , -2.17727699e-07 , -2.86285584e-04 , -6.90470767e-04 , -7.06490932e-04 , -3.48981349e-04 , +1.52936308e-06 , +1.07702053e-04 , +8.71439545e-07 , +2.70196523e-05 , +2.25707859e-05 , +5.40583108e-05 , +5.89865955e-05 , +3.21854211e-05 , -6.25407244e-08 , +1.60830073e-07 , -1.09219495e-07 , +1.80323736e-07 , +2.10620308e-06 , -1.48664831e-06 , -1.52490322e-07 , -1.09950088e-05 , -1.58932007e-07 , -8.46877791e-06 , -1.56695740e-07 , -3.21771641e-06 , -1.23917824e-07 , -3.47705891e-07 , +5.45447564e-09 , -3.03353052e-08 , +2.08784325e-08 , -4.01478702e-08 , +3.23142889e-08 , -4.70655305e-08 ], [ -2.51835863e-04 , -7.23669471e-04 , -9.43933588e-04 , -6.57672845e-04 , -2.69261303e-05 , +3.69728163e-04 , +3.03633026e-04 , +8.38734411e-05 , +1.05151519e-04 , +2.93355305e-04 , +3.90216451e-04 , +1.74239040e-04 , -2.80476933e-04 , -5.37324962e-04 , -3.13509246e-04 , -5.52757781e-05 , -2.54681477e-04 , -7.85984173e-04 , -1.26700244e-03 , -1.45035502e-03 , -1.04388150e-03 , -4.02301065e-04 , -4.06165612e-05 , -1.41153381e-06 , +6.78169631e-05 , +1.92619386e-04 , +2.85735521e-04 , +2.97150259e-04 , +2.06971057e-04 , +5.26252707e-05 , +5.76974486e-08 , -2.80655886e-08 , +4.58530586e-05 , +1.13712594e-04 , +1.22050635e-04 , +7.32910488e-05 , +1.74491609e-05 , +8.71439546e-07 , +2.37983361e-05 , +3.41862028e-07 , -4.70471087e-06 , -1.07216943e-05 , -1.15032991e-05 , -5.26032061e-06 , -1.18126235e-08 , +5.52943870e-09 , +2.54324610e-09 , -1.93615165e-08 , -1.05555805e-06 , -1.16449478e-06 , -2.78814086e-06 , -1.10009545e-07 , -2.32547548e-06 , -8.57000152e-08 , -5.47053709e-06 , -6.13771757e-08 , +2.40476217e-08 , +5.64589224e-08 , -3.79689035e-10 , +2.56728248e-09 , -1.27853965e-09 , +3.66057841e-09 , -3.60935948e-09 , +7.58988369e-09 ], [ +3.96250935e-04 , +1.19393383e-03 , +1.62428179e-03 , +1.00975957e-03 , -3.61194366e-04 , -1.11920657e-03 , -7.85859258e-04 , -1.99694876e-04 , -2.11409282e-04 , -7.19998353e-04 , -1.25546626e-03 , -1.18157254e-03 , -2.69656224e-04 , +5.55056946e-04 , +4.45545000e-04 , +8.72816070e-05 , +8.60109745e-04 , +2.46703885e-03 , +3.64238943e-03 , +3.83341216e-03 , +2.59227648e-03 , +8.86632630e-04 , -1.12613356e-06 , -4.41054452e-05 , -3.57322209e-05 , -1.23171969e-04 , -2.50120862e-04 , -3.46092217e-04 , -2.94059448e-04 , -8.32226465e-05 , -1.39623279e-08 , -3.51277600e-08 , -1.07221510e-04 , -2.56938042e-04 , -2.58860315e-04 , -1.25462139e-04 , +4.70004376e-07 , +2.70196523e-05 , +3.41862028e-07 , +2.58431126e-05 , +5.93894002e-06 , +1.40245244e-05 , +1.63215346e-05 , +8.36404527e-06 , -2.06846804e-08 , +4.01609448e-08 , -2.76609304e-08 , +5.03220537e-08 , +7.74342836e-07 , -1.36390918e-06 , -4.57356519e-08 , -5.71580034e-06 , -5.49405841e-08 , -3.53039967e-06 , -7.09043689e-08 , -5.80686451e-06 , -3.31836277e-08 , -9.34668200e-08 , +5.55902426e-09 , -1.23561222e-08 , +8.72314706e-09 , -1.29510501e-08 , +9.95776036e-09 , -1.44173771e-08 ], [ +1.33956923e-02 , +3.53809131e-02 , +3.33558699e-02 , +5.38674909e-03 , -2.15182353e-02 , -2.36814915e-02 , -9.98695835e-03 , -1.51926328e-03 , +6.69606087e-02 , +1.91279273e-01 , +3.01290750e-01 , +3.89970453e-01 , +3.97093770e-01 , +2.85606165e-01 , +1.24869469e-01 , +2.36500679e-02 , +1.58700003e-02 , +4.62683574e-02 , +6.60718230e-02 , +6.17682333e-02 , +3.29878100e-02 , +7.17166739e-03 , +2.28753972e-05 , -4.07528187e-05 , -5.60667093e-02 , -1.45997441e-01 , -1.80410779e-01 , -1.50513165e-01 , -8.24329382e-02 , -2.25165989e-02 , -1.86865841e-05 , +2.72183216e-05 , -1.53554158e-03 , -3.54588186e-03 , -3.30589145e-03 , -1.26556799e-03 , -1.05944751e-05 , +2.25707860e-05 , -4.70471089e-06 , +5.93894006e-06 , +2.19331813e-03 , +5.13537670e-03 , +4.58592800e-03 , +2.23774938e-03 , +9.00025643e-06 , -1.36785981e-05 , +7.48114004e-06 , -9.69165660e-06 , +1.01422888e-05 , +1.78676713e-05 , +8.66688855e-07 , -2.77415469e-06 , +1.11083978e-06 , -1.50100393e-06 , +6.06641099e-07 , -5.08415220e-07 , -1.01528223e-05 , -2.21723748e-05 , -1.30745796e-06 , +2.52500810e-06 , -1.67073899e-06 , +2.12478461e-06 , -1.47531268e-06 , +1.69783919e-06 ], [ +3.87302168e-02 , +1.02174628e-01 , +1.00645901e-01 , +2.85395154e-02 , -4.50862491e-02 , -5.68516880e-02 , -2.51514750e-02 , -3.94815365e-03 , +1.40696276e-01 , +4.03391305e-01 , +6.45674346e-01 , +8.60008166e-01 , +9.00935744e-01 , +6.62710415e-01 , +2.94783588e-01 , +5.65674106e-02 , +3.49651641e-02 , +1.05003114e-01 , +1.55771547e-01 , +1.50688257e-01 , +8.30710062e-02 , +1.86510559e-02 , +5.40693740e-05 , -9.96923341e-05 , -1.28497482e-01 , -3.35647062e-01 , -4.17387445e-01 , -3.51433504e-01 , -1.94603239e-01 , -5.38602969e-02 , -4.39403656e-05 , +6.02108866e-05 , -3.77583980e-03 , -8.79688591e-03 , -8.32391035e-03 , -3.29596371e-03 , -2.43405076e-05 , +5.40583111e-05 , -1.07216943e-05 , +1.40245245e-05 , +5.13537670e-03 , +1.20823972e-02 , +1.08271195e-02 , +5.35385860e-03 , +2.18452665e-05 , -3.10007720e-05 , +1.74997308e-05 , -2.12450646e-05 , +2.55096850e-05 , +4.68176169e-05 , +1.94026871e-06 , -6.48045038e-06 , +2.42222631e-06 , -3.40012419e-06 , +1.35645476e-06 , -1.19281840e-06 , -2.34571503e-05 , -5.37775756e-05 , -3.32338669e-06 , +5.95324480e-06 , -4.09986001e-06 , +4.88476330e-06 , -3.44935894e-06 , +3.69110775e-06 ], [ +4.27005394e-02 , +1.11818628e-01 , +1.12908315e-01 , +4.11033431e-02 , -3.50723338e-02 , -5.16074563e-02 , -2.38031652e-02 , -3.84851853e-03 , +1.05964317e-01 , +3.06444642e-01 , +5.06049294e-01 , +7.07567767e-01 , +7.73352363e-01 , +5.86050234e-01 , +2.65670205e-01 , +5.15568750e-02 , +2.85412382e-02 , +8.92117269e-02 , +1.38563993e-01 , +1.38856068e-01 , +7.86214529e-02 , +1.81640335e-02 , +5.49030020e-05 , -1.09252353e-04 , -1.11597062e-01 , -2.92749264e-01 , -3.67168622e-01 , -3.12750788e-01 , -1.75391241e-01 , -4.90793707e-02 , -5.07064198e-05 , +6.58977204e-05 , -3.49817214e-03 , -8.22371177e-03 , -7.88014950e-03 , -3.20196737e-03 , -2.49116631e-05 , +5.89865957e-05 , -1.15032991e-05 , +1.63215347e-05 , +4.58592800e-03 , +1.08271195e-02 , +9.76480860e-03 , +4.87457616e-03 , +2.28463772e-05 , -3.26335078e-05 , +1.97044193e-05 , -2.31786234e-05 , +2.42443142e-05 , +4.48531634e-05 , +2.18827378e-06 , -7.25850970e-06 , +2.57532349e-06 , -3.83166802e-06 , +1.58339070e-06 , -1.63002748e-06 , -2.12120837e-05 , -4.80151805e-05 , -4.47434163e-06 , +6.00144005e-06 , -4.10563669e-06 , +5.00544985e-06 , -3.82774906e-06 , +4.04170529e-06 ], [ +2.68638059e-02 , +7.16897926e-02 , +7.75632007e-02 , +3.86636488e-02 , -9.06358511e-03 , -2.57667258e-02 , -1.34898398e-02 , -2.32871615e-03 , +3.53205177e-02 , +1.03541509e-01 , +1.81749205e-01 , +2.82067885e-01 , +3.39186852e-01 , +2.76512615e-01 , +1.32613143e-01 , +2.68472703e-02 , +1.08545710e-02 , +3.78034704e-02 , +6.59115958e-02 , +7.25666545e-02 , +4.45490536e-02 , +1.10010480e-02 , +2.94033428e-05 , -6.35669983e-05 , -5.10208078e-02 , -1.34983012e-01 , -1.72349175e-01 , -1.50837667e-01 , -8.75536892e-02 , -2.55654354e-02 , -3.01818438e-05 , +2.40612214e-05 , -1.87432733e-03 , -4.48694248e-03 , -4.46450270e-03 , -1.94244457e-03 , -1.18291438e-05 , +3.21854212e-05 , -5.26032062e-06 , +8.36404529e-06 , +2.23774938e-03 , +5.35385860e-03 , +4.87457616e-03 , +2.54819581e-03 , +1.36581046e-05 , -1.33971291e-05 , +1.12830699e-05 , -8.07687560e-06 , +1.37133410e-05 , +2.74522800e-05 , +9.60517944e-07 , -3.64003418e-06 , +9.74213391e-07 , -1.70992266e-06 , +6.62893016e-07 , -7.94551896e-07 , -1.07106899e-05 , -2.52220937e-05 , -2.10091240e-06 , +1.15262849e-06 , -2.44272584e-06 , +2.18283709e-06 , -2.15575165e-06 , +1.35376435e-06 ], [ +8.89902191e-05 , +2.62494641e-04 , +3.21010497e-04 , +9.57096228e-05 , -2.59958960e-04 , -3.82509997e-04 , -2.17819014e-04 , -4.37745731e-05 , -3.52702158e-06 , -4.53700181e-05 , -3.16347296e-05 , +2.31769580e-04 , +6.69024117e-04 , +8.07577100e-04 , +5.08491360e-04 , +1.40798929e-04 , +3.10016370e-04 , +8.55226171e-04 , +1.19626000e-03 , +1.15367984e-03 , +7.18689619e-04 , +2.08902714e-04 , +2.49843946e-08 , +1.39611335e-07 , -1.39350465e-04 , -3.85579206e-04 , -5.22271211e-04 , -5.21756651e-04 , -3.53254578e-04 , -1.34637006e-04 , -1.32935771e-05 , -3.56488111e-07 , -3.13412425e-05 , -7.60491054e-05 , -7.18407092e-05 , -3.77185028e-05 , +1.07054392e-08 , -6.25407189e-08 , -1.18126243e-08 , -2.06846789e-08 , +9.00025640e-06 , +2.18452664e-05 , +2.28463772e-05 , +1.36581046e-05 , +1.11143656e-05 , +1.97588894e-07 , +4.47875195e-06 , +1.43546403e-07 , +2.15964800e-07 , +5.80802465e-07 , -5.42039709e-09 , +1.18477971e-08 , -1.10491023e-10 , +7.86214544e-10 , +2.39384608e-09 , +3.48270539e-09 , -1.89053342e-07 , -1.64176246e-07 , -5.42527744e-07 , -3.87744115e-08 , -2.49184856e-06 , -3.42927754e-08 , -7.87495431e-07 , -2.94688914e-08 ], [ -7.44173547e-05 , -2.86897993e-04 , -4.47617437e-04 , -2.43325477e-04 , +2.47794971e-04 , +5.17098493e-04 , +3.33790789e-04 , +7.15227056e-05 , -1.19507600e-04 , -2.69889071e-04 , -3.15328144e-04 , -5.33793630e-04 , -1.06832997e-03 , -1.32187708e-03 , -8.93882920e-04 , -2.63852214e-04 , -4.24269089e-04 , -1.17062878e-03 , -1.65741613e-03 , -1.65868124e-03 , -1.10116235e-03 , -3.41560152e-04 , +7.41658900e-08 , -3.16671595e-07 , +2.40657330e-04 , +6.56763888e-04 , +8.77200639e-04 , +8.71536553e-04 , +5.89633619e-04 , +2.23059612e-04 , -4.70388582e-07 , -2.16371197e-05 , +4.65085224e-05 , +1.14611236e-04 , +1.10038839e-04 , +6.17244983e-05 , -6.90929056e-08 , +1.60830073e-07 , +5.52943871e-09 , +4.01609444e-08 , -1.36785981e-05 , -3.10007720e-05 , -3.26335078e-05 , -1.33971291e-05 , +1.97588895e-07 , +1.66331968e-05 , +2.20875624e-07 , +7.12761551e-06 , -3.29663054e-07 , -9.53824281e-07 , +1.28959138e-08 , -2.62805425e-08 , +4.57472177e-09 , -4.24086890e-09 , -4.40163363e-09 , -3.28666556e-09 , +6.25772695e-08 , -7.47439346e-07 , -2.75413553e-08 , -1.48140357e-06 , -4.06087420e-08 , -3.34008174e-06 , -5.13884676e-08 , -1.21130717e-06 ], [ +3.99261016e-05 , +1.51714938e-04 , +2.26457043e-04 , +1.11219530e-04 , -1.39142537e-04 , -2.68592722e-04 , -1.70099933e-04 , -3.61306006e-05 , +6.41980475e-05 , +1.48738753e-04 , +1.73354946e-04 , +2.69570203e-04 , +5.09598887e-04 , +6.14527577e-04 , +4.04714748e-04 , +1.15985617e-04 , +2.21091995e-04 , +6.09805566e-04 , +8.59617770e-04 , +8.53510160e-04 , +5.61108895e-04 , +1.72632756e-04 , -6.35909243e-08 , +2.04712129e-07 , -1.13730318e-04 , -3.09896623e-04 , -4.12357233e-04 , -4.08553735e-04 , -2.75367681e-04 , -1.11012063e-04 , -1.62046751e-05 , -4.20527898e-07 , -2.38273751e-05 , -5.85902588e-05 , -5.60639523e-05 , -3.12274123e-05 , +5.06574831e-08 , -1.09219494e-07 , +2.54324597e-09 , -2.76609301e-08 , +7.48114002e-06 , +1.74997307e-05 , +1.97044193e-05 , +1.12830699e-05 , +4.47875195e-06 , +2.20875623e-07 , +1.17952621e-05 , +1.79740047e-07 , +1.67646577e-07 , +4.84654772e-07 , -8.48601946e-09 , +1.78518094e-08 , -4.69732057e-09 , +4.40391715e-09 , +1.93971820e-09 , +1.76816987e-09 , -2.46316821e-07 , -1.34380638e-07 , -8.50507007e-07 , -3.45004306e-08 , -7.94562212e-07 , -3.88149262e-08 , -3.10196062e-06 , -3.85222831e-08 ], [ -4.28746390e-06 , -1.00094344e-04 , -2.41331300e-04 , -1.73906204e-04 , +1.30483975e-04 , +3.36979790e-04 , +2.28610888e-04 , +4.97187484e-05 , -1.43862305e-04 , -3.49671973e-04 , -3.84477799e-04 , -4.40507550e-04 , -7.37809356e-04 , -9.18102799e-04 , -6.34999593e-04 , -1.89201177e-04 , -2.82681967e-04 , -7.73371586e-04 , -1.08928361e-03 , -1.10608413e-03 , -7.54068948e-04 , -2.37645459e-04 , +1.48478834e-07 , -3.23815730e-07 , +1.72688470e-04 , +4.67425730e-04 , +6.18215581e-04 , +6.11696865e-04 , +4.18884270e-04 , +1.67164285e-04 , -3.52439032e-07 , -1.81558926e-05 , +3.14495864e-05 , +7.77212500e-05 , +7.53249029e-05 , +4.30090197e-05 , -8.88483076e-08 , +1.80323737e-07 , -1.93615165e-08 , +5.03220537e-08 , -9.69165661e-06 , -2.12450646e-05 , -2.31786234e-05 , -8.07687560e-06 , +1.43546404e-07 , +7.12761551e-06 , +1.79740047e-07 , +1.31760341e-05 , -2.25067081e-07 , -6.68343700e-07 , +1.13549279e-08 , -2.57782317e-08 , +6.90223664e-09 , -9.18474880e-09 , +7.23812558e-10 , -5.59919050e-09 , +4.41680628e-08 , -8.68229130e-07 , -2.04285726e-08 , -1.71798778e-06 , -3.08151599e-08 , -1.24564543e-06 , -4.36963815e-08 , -3.43582728e-06 ], [ +6.75748632e-04 , +1.75643965e-03 , +1.85038644e-03 , +6.94735979e-04 , -7.18171793e-04 , -1.13047468e-03 , -6.08005395e-04 , -1.18293305e-04 , -2.90647143e-04 , -8.61971739e-04 , -1.00664775e-03 , -2.59229181e-04 , +8.17788380e-04 , +1.14059317e-03 , +6.56476324e-04 , +1.48041102e-04 , +7.68664523e-04 , +2.24942036e-03 , +3.33563885e-03 , +3.30897023e-03 , +2.01058942e-03 , +5.57815810e-04 , +3.53863927e-06 , -4.18567258e-06 , -1.54341381e-04 , -4.44288986e-04 , -6.52348448e-04 , -6.69781538e-04 , -4.33701127e-04 , -1.40432775e-04 , -3.70467906e-07 , +5.62053615e-07 , -8.83832050e-05 , -2.11135313e-04 , -2.02490738e-04 , -9.77979573e-05 , -1.54943669e-06 , +2.10620308e-06 , -1.05555804e-06 , +7.74342836e-07 , +1.01422887e-05 , +2.55096849e-05 , +2.42443141e-05 , +1.37133410e-05 , +2.15964799e-07 , -3.29663054e-07 , +1.67646577e-07 , -2.25067081e-07 , +8.28073897e-07 , +1.31395837e-06 , +1.78283657e-07 , -2.75691643e-07 , +1.67805233e-07 , -1.40174270e-07 , +2.13234679e-07 , -1.23019113e-07 , -5.87403195e-08 , -1.09485174e-07 , -3.60213967e-08 , +6.64534243e-08 , -4.47470790e-08 , +5.80240075e-08 , -3.81627948e-08 , +4.49909000e-08 ], [ +1.66816940e-03 , +4.38501160e-03 , +4.81901217e-03 , +2.32756351e-03 , -9.46516812e-04 , -2.16750570e-03 , -1.24177211e-03 , -2.41147735e-04 , -9.11748749e-04 , -2.61228009e-03 , -3.22833337e-03 , -1.76341575e-03 , +7.26501199e-04 , +1.84389411e-03 , +1.21083239e-03 , +2.99858329e-04 , +1.27384559e-03 , +3.91588376e-03 , +6.20286491e-03 , +6.48262245e-03 , +4.10399803e-03 , +1.15228292e-03 , +5.20953219e-06 , +1.21992362e-06 , -2.02707609e-04 , -6.32107906e-04 , -1.02094074e-03 , -1.16017364e-03 , -8.00247190e-04 , -2.83845294e-04 , -1.10719001e-06 , +1.73453456e-06 , -1.74134011e-04 , -4.26077508e-04 , -4.12519737e-04 , -2.08579409e-04 , -2.12840753e-06 , -1.48664832e-06 , -1.16449478e-06 , -1.36390918e-06 , +1.78676713e-05 , +4.68176168e-05 , +4.48531633e-05 , +2.74522799e-05 , +5.80802462e-07 , -9.53824281e-07 , +4.84654772e-07 , -6.68343700e-07 , +1.31395837e-06 , +3.79886814e-06 , +2.49689303e-07 , +2.77993234e-07 , +1.95564723e-07 , +2.94726707e-07 , +2.16554000e-07 , +3.13977485e-07 , -1.14526203e-07 , -1.93506925e-07 , -9.40786353e-08 , +1.83548774e-07 , -1.19583834e-07 , +1.62608774e-07 , -1.07504319e-07 , +1.30099000e-07 ], [ +8.45332954e-05 , +2.24783065e-04 , +2.68751415e-04 , +1.72534545e-04 , +5.74404149e-06 , -8.54703012e-05 , -6.65943613e-05 , -1.78582518e-05 , -5.40864394e-05 , -1.50283047e-04 , -1.85085729e-04 , -1.06360909e-04 , +2.68606757e-05 , +9.72361732e-05 , +5.96368581e-05 , +9.98230612e-06 , +4.93996719e-05 , +1.62552118e-04 , +2.77925528e-04 , +3.22988798e-04 , +2.28514284e-04 , +8.56290963e-05 , +7.82865789e-06 , +2.71015918e-07 , -8.84152126e-06 , -2.73519812e-05 , -4.81816787e-05 , -5.37667751e-05 , -3.93489899e-05 , -9.54428266e-06 , +1.77786372e-08 , -2.10426264e-08 , -9.84069348e-06 , -2.48202750e-05 , -2.80203761e-05 , -1.55952399e-05 , -3.49805441e-06 , -1.52490323e-07 , -2.78814086e-06 , -4.57356521e-08 , +8.66688848e-07 , +1.94026870e-06 , +2.18827377e-06 , +9.60517939e-07 , -5.42039727e-09 , +1.28959137e-08 , -8.48601952e-09 , +1.13549279e-08 , +1.78283657e-07 , +2.49689303e-07 , +1.22732507e-06 , +2.23900067e-08 , +4.09211518e-07 , +1.06767255e-08 , +5.80339376e-07 , +5.43889660e-09 , -4.84036749e-09 , -1.00874401e-08 , -3.82446646e-10 , -1.29025224e-09 , +9.62402969e-10 , -2.34475172e-09 , +1.96028423e-09 , -2.66859099e-09 ], [ -1.96576974e-04 , -5.58567198e-04 , -7.17942226e-04 , -4.54457177e-04 , +8.23988489e-05 , +3.83708324e-04 , +2.81559820e-04 , +7.43243106e-05 , +1.05168713e-04 , +3.24108042e-04 , +4.85316787e-04 , +3.75452576e-04 , +5.61500997e-07 , -2.79821980e-04 , -1.97973667e-04 , -3.79678967e-05 , -2.77315521e-04 , -8.18544499e-04 , -1.25005940e-03 , -1.35039207e-03 , -9.28619389e-04 , -3.25310428e-04 , +4.50583888e-07 , +1.88840385e-05 , +2.56588549e-05 , +7.92361146e-05 , +1.38985148e-04 , +1.66671494e-04 , +1.30647867e-04 , +3.62360999e-05 , -2.12041581e-08 , +3.52707074e-08 , +3.79333705e-05 , +9.18151084e-05 , +9.26981260e-05 , +4.31143648e-05 , -1.98334725e-07 , -1.09950088e-05 , -1.10009545e-07 , -5.71580034e-06 , -2.77415468e-06 , -6.48045036e-06 , -7.25850969e-06 , -3.64003418e-06 , +1.18477976e-08 , -2.62805425e-08 , +1.78518095e-08 , -2.57782317e-08 , -2.75691643e-07 , +2.77993234e-07 , +2.23900066e-08 , +2.77357551e-06 , +2.19070010e-08 , +1.08198728e-06 , +1.98896719e-08 , +1.10315591e-06 , +1.53923267e-08 , +3.92487886e-08 , -5.00165545e-10 , +4.22831563e-09 , -3.22129967e-09 , +6.05527520e-09 , -4.89007227e-09 , +6.56603904e-09 ], [ +7.61037965e-05 , +2.03670441e-04 , +2.38973420e-04 , +1.48573809e-04 , +5.20180577e-06 , -6.91558747e-05 , -5.31061367e-05 , -1.39029361e-05 , -3.49416991e-05 , -9.09262800e-05 , -9.24057103e-05 , -2.90607787e-07 , +1.14307375e-04 , +1.43484908e-04 , +7.01242201e-05 , +1.02222637e-05 , +3.61506205e-05 , +1.23930016e-04 , +2.17892055e-04 , +2.57042357e-04 , +1.81676676e-04 , +6.67557419e-05 , +3.94662688e-06 , +2.51176259e-07 , -1.86690509e-05 , -5.23964982e-05 , -7.59528758e-05 , -7.34845301e-05 , -4.62845355e-05 , -9.74840162e-06 , +2.41328549e-09 , -3.83544848e-09 , -7.72996726e-06 , -1.95801497e-05 , -2.02414836e-05 , -1.21826092e-05 , -5.63136915e-06 , -1.58932007e-07 , -2.32547548e-06 , -5.49405841e-08 , +1.11083978e-06 , +2.42222630e-06 , +2.57532349e-06 , +9.74213388e-07 , -1.10491136e-10 , +4.57472176e-09 , -4.69732065e-09 , +6.90223662e-09 , +1.67805233e-07 , +1.95564723e-07 , +4.09211518e-07 , +2.19070010e-08 , +1.75933767e-06 , +1.52006128e-08 , +5.31186074e-07 , +8.64990893e-09 , -5.67955417e-09 , -9.85488773e-09 , -7.32403561e-10 , -2.68025416e-10 , +3.51825298e-10 , -1.45146029e-09 , +1.43849972e-09 , -2.05616894e-09 ], [ -9.43608486e-05 , -2.74524727e-04 , -3.56454345e-04 , -2.21570152e-04 , +5.16178168e-05 , +2.00204398e-04 , +1.42569467e-04 , +3.61955020e-05 , +4.64931611e-05 , +1.44464628e-04 , +2.20975558e-04 , +1.60742006e-04 , -3.33589772e-05 , -1.66500583e-04 , -1.04499532e-04 , -1.79057051e-05 , -1.44745550e-04 , -4.25165537e-04 , -6.44493632e-04 , -6.92016303e-04 , -4.70179015e-04 , -1.60728992e-04 , +2.79080358e-07 , +6.05998145e-06 , +1.65914265e-05 , +4.96411009e-05 , +8.12089317e-05 , +9.30942474e-05 , +6.89773921e-05 , +1.70616106e-05 , +9.19787223e-09 , -9.81415498e-10 , +1.93059463e-05 , +4.67740141e-05 , +4.69309281e-05 , +2.34761999e-05 , -1.24090727e-07 , -8.46877791e-06 , -8.57000151e-08 , -3.53039967e-06 , -1.50100392e-06 , -3.40012417e-06 , -3.83166800e-06 , -1.70992265e-06 , +7.86214911e-10 , -4.24086896e-09 , +4.40391722e-09 , -9.18474877e-09 , -1.40174270e-07 , +2.94726707e-07 , +1.06767254e-08 , +1.08198728e-06 , +1.52006128e-08 , +2.33982871e-06 , +1.78217752e-08 , +7.75372489e-07 , +7.94763812e-09 , +1.86785955e-08 , -5.72901033e-10 , +1.75784888e-09 , -1.26768762e-09 , +2.25067476e-09 , -1.94269186e-09 , +3.03210691e-09 ], [ +3.16431621e-05 , +1.00265251e-04 , +1.40452020e-04 , +8.92714599e-05 , -2.85216959e-05 , -9.33756339e-05 , -6.47466824e-05 , -1.56800116e-05 , -1.78809296e-05 , -5.86154526e-05 , -1.00341381e-04 , -8.44068118e-05 , +1.82422446e-06 , +6.80194994e-05 , +4.32259648e-05 , +6.97543730e-06 , +7.11678828e-05 , +2.04983160e-04 , +3.03740170e-04 , +3.22007848e-04 , +2.17537114e-04 , +7.51496669e-05 , +3.20705384e-06 , +2.44170352e-07 , -5.84519878e-06 , -1.81360988e-05 , -3.07911344e-05 , -3.75853915e-05 , -2.85407221e-05 , -6.62773847e-06 , -1.77057782e-08 , +1.28395118e-08 , -9.56212025e-06 , -2.34247990e-05 , -2.40793886e-05 , -1.36791757e-05 , -2.27199365e-06 , -1.56695740e-07 , -5.47053709e-06 , -7.09043690e-08 , +6.06641095e-07 , +1.35645475e-06 , +1.58339070e-06 , +6.62893014e-07 , +2.39384594e-09 , -4.40163364e-09 , +1.93971816e-09 , +7.23812549e-10 , +2.13234679e-07 , +2.16554000e-07 , +5.80339377e-07 , +1.98896719e-08 , +5.31186074e-07 , +1.78217752e-08 , +2.13948748e-06 , +1.44666361e-08 , -3.04220981e-09 , -7.71524455e-09 , +8.83276352e-10 , -8.12012682e-10 , +4.34840145e-10 , -3.03790881e-10 , +2.67317774e-10 , -9.01771216e-10 ], [ -4.45517633e-05 , -1.47525320e-04 , -2.13945345e-04 , -1.22428828e-04 , +8.67492297e-05 , +1.91551440e-04 , +1.24280760e-04 , +2.90415623e-05 , +2.95185435e-05 , +1.11307866e-04 , +2.18862708e-04 , +2.37405479e-04 , +1.03373340e-04 , -3.87250758e-05 , -4.46472025e-05 , -8.24734874e-06 , -1.51181286e-04 , -4.25056593e-04 , -6.10625321e-04 , -6.24981295e-04 , -4.10013431e-04 , -1.33122261e-04 , +1.53379090e-07 , +3.02285712e-06 , -3.61270499e-06 , -5.15247005e-06 , +7.23658762e-06 , +2.69455787e-05 , +2.94685716e-05 , +7.85548066e-06 , +1.01900610e-08 , -8.28072726e-10 , +1.72571565e-05 , +4.12484662e-05 , +4.09542804e-05 , +1.97889218e-05 , -6.40903336e-08 , -3.21771641e-06 , -6.13771758e-08 , -5.80686451e-06 , -5.08415214e-07 , -1.19281839e-06 , -1.63002747e-06 , -7.94551892e-07 , +3.48270561e-09 , -3.28666561e-09 , +1.76816990e-09 , -5.59919049e-09 , -1.23019113e-07 , +3.13977485e-07 , +5.43889657e-09 , +1.10315591e-06 , +8.64990892e-09 , +7.75372489e-07 , +1.44666361e-08 , +2.30188338e-06 , +2.85795476e-09 , +1.01450933e-08 , -2.11237387e-09 , +2.70716365e-09 , -1.74231373e-09 , +1.74807362e-09 , -1.16452732e-09 , +1.88792713e-09 ], [ -9.17705335e-05 , -2.41998964e-04 , -2.48072180e-04 , -9.15028133e-05 , +8.12470743e-05 , +1.21629453e-04 , +5.77842166e-05 , +9.64489118e-06 , -2.23824279e-04 , -6.44720522e-04 , -1.06226522e-03 , -1.49022835e-03 , -1.64168366e-03 , -1.25488176e-03 , -5.74559892e-04 , -1.13128644e-04 , -7.04579982e-05 , -2.16306941e-04 , -3.31812558e-04 , -3.31926745e-04 , -1.90841882e-04 , -4.55913624e-05 , -1.19565301e-07 , +2.29372616e-07 , +2.38746706e-04 , +6.26582335e-04 , +7.87058011e-04 , +6.73236043e-04 , +3.79553800e-04 , +1.07709515e-04 , +4.39468050e-07 , -1.27407012e-07 , +8.45130749e-06 , +1.99454789e-05 , +1.91221703e-05 , +8.06524098e-06 , +5.39559347e-08 , -1.23917824e-07 , +2.40476218e-08 , -3.31836278e-08 , -1.01528223e-05 , -2.34571503e-05 , -2.12120837e-05 , -1.07106899e-05 , -1.89053342e-07 , +6.25772695e-08 , -2.46316821e-07 , +4.41680629e-08 , -5.87403196e-08 , -1.14526203e-07 , -4.84036752e-09 , +1.53923268e-08 , -5.67955419e-09 , +7.94763815e-09 , -3.04220983e-09 , +2.85795478e-09 , +1.49818911e-07 , +1.07315592e-07 , +2.43096987e-08 , -1.04835117e-08 , +3.70098722e-08 , -9.38097077e-09 , +5.91066723e-08 , -7.52969843e-09 ], [ -2.75099179e-04 , -7.24967137e-04 , -7.67791110e-04 , -3.79520424e-04 , +6.80502615e-05 , +2.15064263e-04 , +1.07006895e-04 , +1.72632626e-05 , -3.58437845e-04 , -1.06199882e-03 , -1.88370223e-03 , -2.91783739e-03 , -3.46165373e-03 , -2.77577780e-03 , -1.30536890e-03 , -2.56436193e-04 , -6.94562658e-05 , -2.74310948e-04 , -5.18447446e-04 , -5.87907727e-04 , -3.53471383e-04 , -8.12195922e-05 , -3.05685857e-07 , +6.85623305e-07 , +5.12701768e-04 , +1.35467889e-03 , +1.72523469e-03 , +1.49902787e-03 , +8.61879037e-04 , +2.45745394e-04 , +3.45871283e-07 , +1.40440073e-06 , +1.48393318e-05 , +3.52870578e-05 , +3.54521568e-05 , +1.42084608e-05 , +1.24705132e-07 , -3.47705892e-07 , +5.64589225e-08 , -9.34668202e-08 , -2.21723748e-05 , -5.37775756e-05 , -4.80151805e-05 , -2.52220937e-05 , -1.64176246e-07 , -7.47439346e-07 , -1.34380638e-07 , -8.68229130e-07 , -1.09485174e-07 , -1.93506925e-07 , -1.00874401e-08 , +3.92487886e-08 , -9.85488776e-09 , +1.86785956e-08 , -7.71524458e-09 , +1.01450934e-08 , +1.07315592e-07 , +6.26364215e-07 , +2.76985553e-08 , +1.25031812e-07 , +3.05519869e-08 , +1.44763809e-07 , +2.66707985e-08 , +2.15408864e-07 ], [ -1.51884840e-05 , -4.49685998e-05 , -5.90737882e-05 , -2.47685285e-05 , +3.76643889e-05 , +6.24680716e-05 , +3.60446395e-05 , +7.16729875e-06 , -1.36616074e-06 , +5.46427391e-06 , +9.27544352e-06 , -2.52032582e-05 , -9.40183914e-05 , -1.20393457e-04 , -7.80257295e-05 , -2.15720741e-05 , -4.87365768e-05 , -1.35201659e-04 , -1.91711433e-04 , -1.88515033e-04 , -1.18957155e-04 , -3.41714846e-05 , -1.26922119e-08 , -1.18627080e-08 , +2.05357668e-05 , +5.70353198e-05 , +7.82414106e-05 , +7.85510452e-05 , +5.24321386e-05 , +2.06157944e-05 , +1.34657038e-06 , +4.92708623e-08 , +5.13365990e-06 , +1.24291020e-05 , +1.18943691e-05 , +6.16145585e-06 , +4.03252894e-09 , +5.45447561e-09 , -3.79689042e-10 , +5.55902425e-09 , -1.30745796e-06 , -3.32338668e-06 , -4.47434162e-06 , -2.10091240e-06 , -5.42527744e-07 , -2.75413553e-08 , -8.50507007e-07 , -2.04285726e-08 , -3.60213968e-08 , -9.40786354e-08 , -3.82446647e-10 , -5.00165541e-10 , -7.32403572e-10 , -5.72901030e-10 , +8.83276350e-10 , -2.11237387e-09 , +2.43096987e-08 , +2.76985553e-08 , +5.62760007e-07 , +8.44739599e-09 , +1.07905222e-07 , +5.17215342e-09 , +2.13823888e-07 , +4.32828039e-09 ], [ +2.25081009e-05 , +7.30327853e-05 , +1.03390024e-04 , +5.14415520e-05 , -5.72730088e-05 , -1.09361373e-04 , -6.69690940e-05 , -1.38098126e-05 , +1.48464038e-05 , +2.66530661e-05 , +3.02061922e-05 , +8.61237387e-05 , +2.04384183e-04 , +2.51975822e-04 , +1.64720522e-04 , +4.64143704e-05 , +8.65282814e-05 , +2.39988586e-04 , +3.41348789e-04 , +3.40225401e-04 , +2.20963040e-04 , +6.59235503e-05 , -6.93182306e-09 , +5.79563470e-08 , -4.43061417e-05 , -1.21568375e-04 , -1.63377462e-04 , -1.61807112e-04 , -1.08655060e-04 , -4.16021614e-05 , +6.65514134e-08 , +2.87985084e-06 , -9.40782090e-06 , -2.29822248e-05 , -2.20842884e-05 , -1.19094499e-05 , +7.62682497e-09 , -3.03353055e-08 , +2.56728251e-09 , -1.23561222e-08 , +2.52500810e-06 , +5.95324480e-06 , +6.00144005e-06 , +1.15262849e-06 , -3.87744116e-08 , -1.48140357e-06 , -3.45004306e-08 , -1.71798778e-06 , +6.64534243e-08 , +1.83548774e-07 , -1.29025226e-09 , +4.22831564e-09 , -2.68025420e-10 , +1.75784889e-09 , -8.12012686e-10 , +2.70716366e-09 , -1.04835117e-08 , +1.25031812e-07 , +8.44739600e-09 , +9.44803685e-07 , +8.79855127e-09 , +2.77132783e-07 , +8.47311881e-09 , +4.19466777e-07 ], [ -2.68193562e-05 , -7.40137185e-05 , -8.70430426e-05 , -3.38221023e-05 , +4.81831224e-05 , +7.84590748e-05 , +4.50608719e-05 , +8.98217712e-06 , +1.39163332e-07 , +7.93198086e-06 , +2.11085001e-06 , -5.54383563e-05 , -1.43188311e-04 , -1.63937326e-04 , -9.77939517e-05 , -2.50973326e-05 , -6.00152886e-05 , -1.68367469e-04 , -2.40944512e-04 , -2.36681751e-04 , -1.48684798e-04 , -4.28771927e-05 , +7.38522813e-10 , -4.11055805e-08 , +2.76745346e-05 , +7.63098570e-05 , +1.03003789e-04 , +1.01410471e-04 , +6.63847453e-05 , +2.40037513e-05 , +1.09219668e-06 , +7.16792635e-08 , +6.42768184e-06 , +1.56080544e-05 , +1.48622105e-05 , +7.74806701e-06 , -3.77593803e-09 , +2.08784323e-08 , -1.27853961e-09 , +8.72314699e-09 , -1.67073899e-06 , -4.09986001e-06 , -4.10563669e-06 , -2.44272584e-06 , -2.49184856e-06 , -4.06087420e-08 , -7.94562212e-07 , -3.08151599e-08 , -4.47470791e-08 , -1.19583835e-07 , +9.62402953e-10 , -3.22129964e-09 , +3.51825290e-10 , -1.26768760e-09 , +4.34840136e-10 , -1.74231372e-09 , +3.70098722e-08 , +3.05519869e-08 , +1.07905222e-07 , +8.79855126e-09 , +9.51013091e-07 , +7.52845576e-09 , +2.07883245e-07 , +6.60032449e-09 ], [ +2.04396573e-05 , +6.59539213e-05 , +8.92952513e-05 , +4.08127877e-05 , -5.26892601e-05 , -9.62804318e-05 , -5.87147592e-05 , -1.21227397e-05 , +1.75021100e-05 , +3.81841069e-05 , +4.83814965e-05 , +9.53166232e-05 , +1.87544957e-04 , +2.18045341e-04 , +1.37205629e-04 , +3.73472480e-05 , +7.69086532e-05 , +2.13344876e-04 , +3.02159478e-04 , +2.99310789e-04 , +1.93701402e-04 , +5.79188403e-05 , -2.14682176e-08 , +7.44950660e-08 , -3.85810496e-05 , -1.05203248e-04 , -1.40136769e-04 , -1.37522779e-04 , -9.05026140e-05 , -3.27956689e-05 , +7.55690008e-08 , +1.71813132e-06 , -8.27186291e-06 , -2.02146516e-05 , -1.93553188e-05 , -1.04787929e-05 , +1.52456862e-08 , -4.01478702e-08 , +3.66057840e-09 , -1.29510501e-08 , +2.12478461e-06 , +4.88476330e-06 , +5.00544985e-06 , +2.18283709e-06 , -3.42927755e-08 , -3.34008174e-06 , -3.88149263e-08 , -1.24564543e-06 , +5.80240075e-08 , +1.62608774e-07 , -2.34475172e-09 , +6.05527520e-09 , -1.45146029e-09 , +2.25067476e-09 , -3.03790878e-10 , +1.74807361e-09 , -9.38097076e-09 , +1.44763809e-07 , +5.17215343e-09 , +2.77132783e-07 , +7.52845577e-09 , +1.21059609e-06 , +9.45991156e-09 , +3.20829504e-07 ], [ -6.98162707e-06 , -2.88277020e-05 , -4.41152940e-05 , -1.79855450e-05 , +3.76242630e-05 , +6.39648556e-05 , +3.87120823e-05 , +7.96991794e-06 , -1.64920055e-05 , -3.82509353e-05 , -4.29649476e-05 , -6.07664635e-05 , -1.09339980e-04 , -1.28374787e-04 , -8.14635492e-05 , -2.20548302e-05 , -5.32406460e-05 , -1.45832037e-04 , -2.02581790e-04 , -1.98203430e-04 , -1.27701445e-04 , -3.80974837e-05 , +2.05157096e-08 , -5.81951308e-08 , +2.33674001e-05 , +6.34394314e-05 , +8.39617948e-05 , +8.25436467e-05 , +5.48512680e-05 , +2.11223256e-05 , +1.79042333e-06 , +9.67577627e-08 , +5.48195855e-06 , +1.33563694e-05 , +1.27582384e-05 , +6.89900545e-06 , -1.36899923e-08 , +3.23142888e-08 , -3.60935946e-09 , +9.95776033e-09 , -1.47531267e-06 , -3.44935893e-06 , -3.82774906e-06 , -2.15575165e-06 , -7.87495431e-07 , -5.13884676e-08 , -3.10196062e-06 , -4.36963814e-08 , -3.81627948e-08 , -1.07504320e-07 , +1.96028422e-09 , -4.89007226e-09 , +1.43849970e-09 , -1.94269185e-09 , +2.67317769e-10 , -1.16452732e-09 , +5.91066723e-08 , +2.66707985e-08 , +2.13823888e-07 , +8.47311880e-09 , +2.07883245e-07 , +9.45991156e-09 , +1.27442343e-06 , +9.72610493e-09 ], [ -4.44246381e-06 , +7.01714613e-06 , +3.28087410e-05 , +2.01134774e-05 , -3.73320891e-05 , -7.22203672e-05 , -4.57872945e-05 , -9.59765553e-06 , +3.08317964e-05 , +7.47396898e-05 , +7.97249392e-05 , +8.47178527e-05 , +1.35368384e-04 , +1.64992498e-04 , +1.10821099e-04 , +3.16066186e-05 , +6.22715883e-05 , +1.68245030e-04 , +2.31220011e-04 , +2.28622096e-04 , +1.51019338e-04 , +4.59077793e-05 , -4.08437804e-08 , +8.17899381e-08 , -3.08495727e-05 , -8.32291915e-05 , -1.09427817e-04 , -1.07792910e-04 , -7.31004203e-05 , -2.84748026e-05 , +7.01705634e-08 , +1.91466896e-06 , -6.40967968e-06 , -1.56615859e-05 , -1.50820404e-05 , -8.32073693e-06 , +2.28011834e-08 , -4.70655306e-08 , +7.58988369e-09 , -1.44173771e-08 , +1.69783919e-06 , +3.69110775e-06 , +4.04170529e-06 , +1.35376434e-06 , -2.94688915e-08 , -1.21130717e-06 , -3.85222831e-08 , -3.43582728e-06 , +4.49909001e-08 , +1.30099000e-07 , -2.66859099e-09 , +6.56603904e-09 , -2.05616894e-09 , +3.03210691e-09 , -9.01771215e-10 , +1.88792713e-09 , -7.52969842e-09 , +2.15408864e-07 , +4.32828039e-09 , +4.19466777e-07 , +6.60032450e-09 , +3.20829504e-07 , +9.72610493e-09 , +1.42018284e-06 ]]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/pars_mbeefvdw.py000066400000000000000000000344531316323560300245230ustar00rootroot00000000000000import numpy as np """ mBEEF-vdW ensemble matrix """ uiOmega = np.array([ [ +9.79238372e-03 , +9.50432310e-03 , +1.50664280e-03 , +6.61931580e-04 , +2.72510261e-05 , +9.90017737e-04 , +1.23236176e-04 , +2.62528888e-04 , +2.34614133e-04 , +6.84454480e-07 , -5.14228020e-04 , -1.04662360e-03 , -1.00585951e-04 , +3.57949943e-08 , -2.56240699e-08 , -1.67475516e-05 , -7.41926572e-05 , -5.02094424e-07 , +1.19039715e-08 , -1.29725342e-09 , +2.72539382e-06 , -1.23014194e-09 , +9.61006747e-09 , -4.23645875e-09 , +4.83157082e-09 , -2.37696438e-03 , +6.30187579e-03 , +8.45414159e-03 ], [ +9.50432310e-03 , +1.48454683e-02 , +8.19524284e-03 , +2.99452202e-03 , +4.19982301e-04 , +8.65266882e-04 , -7.84232852e-04 , -3.02933428e-03 , -1.09999053e-03 , +5.04829749e-07 , -3.17422914e-03 , -4.73475658e-03 , -1.54957880e-03 , +6.94163523e-08 , -5.87481438e-08 , +1.91484554e-04 , +3.47848793e-04 , -3.69344627e-07 , +4.00562770e-09 , +2.38952342e-09 , +4.20025223e-05 , -7.41374790e-09 , +2.51886090e-08 , -8.06116478e-09 , +7.58498138e-09 , -2.53805670e-03 , +4.44858633e-03 , +1.13607915e-02 ], [ +1.50664280e-03 , +8.19524284e-03 , +9.68246500e-03 , +4.60794826e-03 , +9.57794927e-04 , +7.91698846e-04 , +3.02182549e-04 , -2.92734046e-03 , -1.14832064e-03 , -1.19250814e-06 , -4.39066124e-03 , -7.28579873e-03 , -3.53350385e-03 , -4.63971114e-08 , +1.48775235e-07 , +1.85392800e-04 , +3.63129723e-04 , +8.78208888e-07 , -9.00768180e-09 , -2.32642126e-08 , +9.57618157e-05 , +3.79151614e-09 , -4.37832686e-08 , +4.39367089e-09 , -1.15880046e-08 , +4.12406124e-04 , -2.34003226e-03 , +2.76246807e-03 ], [ +6.61931580e-04 , +2.99452202e-03 , +4.60794826e-03 , +3.68858946e-03 , +1.03215651e-03 , +1.01882200e-03 , +1.84982081e-03 , +2.12057592e-04 , +1.71824389e-04 , -1.16829718e-06 , -2.88910105e-03 , -5.83219403e-03 , -3.80766808e-03 , -1.14588088e-07 , +2.61037141e-07 , -1.31651700e-05 , -5.43361509e-05 , +8.57297369e-07 , -2.75193317e-09 , -2.69213762e-08 , +1.03184182e-04 , +1.42047337e-08 , -8.57390506e-08 , +1.16543616e-08 , -2.13553999e-08 , +1.31242915e-03 , +4.12599185e-04 , -4.03633739e-04 ], [ +2.72510261e-05 , +4.19982301e-04 , +9.57794927e-04 , +1.03215651e-03 , +3.30125740e-04 , +2.74639742e-04 , +6.70624314e-04 , +3.04292673e-04 , +1.69223504e-04 , -2.88551411e-07 , -7.60839808e-04 , -1.63202154e-03 , -1.21774465e-03 , -7.40128104e-08 , +1.55291965e-07 , -1.91844916e-05 , -5.35127143e-05 , +2.11089750e-07 , -3.60080833e-10 , -6.36045136e-09 , +3.29928974e-05 , +1.09646220e-08 , -5.24829640e-08 , +7.09061625e-09 , -1.25751693e-08 , +2.66170220e-04 , +4.19886833e-04 , -1.53276698e-04 ], [ +9.90017737e-04 , +8.65266882e-04 , +7.91698846e-04 , +1.01882200e-03 , +2.74639742e-04 , +5.71805336e-03 , +1.07594484e-02 , +7.30821331e-03 , +1.86467250e-03 , +6.04989862e-07 , -6.31345738e-04 , -1.61093490e-03 , -1.01312558e-03 , -2.01746526e-08 , +9.74609274e-08 , -4.62340444e-04 , -5.89660173e-04 , -4.45396553e-07 , +4.53087729e-09 , +1.03506087e-08 , +2.74507815e-05 , +5.67601230e-09 , -3.22487615e-08 , +1.96941674e-09 , -7.16476249e-09 , -4.64673810e-04 , -5.85522233e-04 , +1.86494917e-03 ], [ +1.23236176e-04 , -7.84232852e-04 , +3.02182549e-04 , +1.84982081e-03 , +6.70624314e-04 , +1.07594484e-02 , +2.17490074e-02 , +1.56346470e-02 , +4.38169379e-03 , +2.02053669e-06 , -1.02592042e-03 , -2.92485426e-03 , -2.47391959e-03 , -7.22382735e-08 , +2.10729273e-07 , -9.89249619e-04 , -1.38560910e-03 , -1.48793375e-06 , +7.37606189e-09 , +4.44431993e-08 , +6.70374964e-05 , +1.00626123e-08 , -6.84118030e-08 , +7.78331509e-09 , -1.85012551e-08 , -8.42061784e-04 , -8.45327436e-04 , +4.29840991e-03 ], [ +2.62528888e-04 , -3.02933428e-03 , -2.92734046e-03 , +2.12057592e-04 , +3.04292673e-04 , +7.30821331e-03 , +1.56346470e-02 , +1.37522091e-02 , +4.54545202e-03 , +4.46846524e-06 , +5.03562911e-04 , -3.35334388e-04 , -1.12247640e-03 , -7.97967222e-08 , +1.11924011e-07 , -8.70709322e-04 , -1.43739110e-03 , -3.28832967e-06 , +1.68045306e-08 , +9.49033008e-08 , +3.04155636e-05 , +1.12942113e-08 , -3.89523797e-08 , +7.72331538e-09 , -1.03944401e-08 , +3.34852709e-04 , -2.98782797e-03 , +3.13475363e-03 ], [ +2.34614133e-04 , -1.09999053e-03 , -1.14832064e-03 , +1.71824389e-04 , +1.69223504e-04 , +1.86467250e-03 , +4.38169379e-03 , +4.54545202e-03 , +1.90035377e-03 , +5.90455164e-06 , +1.28295178e-04 , -2.71674080e-04 , -6.24452180e-04 , +3.86856722e-08 , -1.38167749e-07 , -2.88727565e-04 , -6.00934035e-04 , -4.34005248e-06 , +1.36416517e-08 , +1.33945566e-07 , +1.69386526e-05 , -5.43803093e-09 , +4.40875972e-08 , -4.44117566e-09 , +1.06101747e-08 , +5.60504546e-04 , -1.66863173e-03 , +1.34126356e-03 ], [ +6.84454480e-07 , +5.04829749e-07 , -1.19250814e-06 , -1.16829718e-06 , -2.88551411e-07 , +6.04989862e-07 , +2.02053669e-06 , +4.46846524e-06 , +5.90455164e-06 , +2.72320605e-06 , +7.77447682e-07 , +1.84724608e-06 , +1.06456034e-06 , +6.69493478e-12 , +6.30646706e-12 , -8.56710027e-07 , -1.86719086e-06 , -1.99409195e-06 , -2.07679229e-11 , +6.44562331e-08 , -2.88558852e-08 , -1.11030343e-13 , -3.28984512e-12 , +1.93883885e-12 , -2.60058997e-12 , +9.72721650e-08 , +1.03866025e-06 , +1.76745507e-06 ], [ -5.14228020e-04 , -3.17422914e-03 , -4.39066124e-03 , -2.88910105e-03 , -7.60839808e-04 , -6.31345738e-04 , -1.02592042e-03 , +5.03562911e-04 , +1.28295178e-04 , +7.77447682e-07 , +2.44400487e-03 , +4.56812141e-03 , +2.80678109e-03 , +1.17366862e-07 , -1.74755350e-07 , -3.20118275e-05 , -4.05707677e-05 , -5.70585303e-07 , +3.34803030e-09 , +1.61815389e-08 , -7.60641405e-05 , -1.64128287e-08 , +5.79789803e-08 , -1.12279343e-08 , +1.44018734e-08 , -4.99745472e-04 , +1.57431803e-04 , -6.60989591e-04 ], [ -1.04662360e-03 , -4.73475658e-03 , -7.28579873e-03 , -5.83219403e-03 , -1.63202154e-03 , -1.61093490e-03 , -2.92485426e-03 , -3.35334388e-04 , -2.71674080e-04 , +1.84724608e-06 , +4.56812141e-03 , +9.22166011e-03 , +6.02059499e-03 , +2.64249604e-07 , -4.12725590e-07 , +2.08186100e-05 , +8.59116912e-05 , -1.35551058e-06 , +4.35129473e-09 , +4.25664567e-08 , -1.63152398e-04 , -4.06173537e-08 , +1.35561846e-07 , -2.55304553e-08 , +3.37650355e-08 , -2.07507947e-03 , -6.52350596e-04 , +6.38273811e-04 ], [ -1.00585951e-04 , -1.54957880e-03 , -3.53350385e-03 , -3.80766808e-03 , -1.21774465e-03 , -1.01312558e-03 , -2.47391959e-03 , -1.12247640e-03 , -6.24452180e-04 , +1.06456034e-06 , +2.80678109e-03 , +6.02059499e-03 , +4.49230737e-03 , +2.73078483e-07 , -3.40246051e-07 , +7.07678211e-05 , +1.97467435e-04 , -7.78779091e-07 , +1.32834740e-09 , +2.34660148e-08 , -1.21733100e-04 , -4.04555296e-08 , +1.08842940e-07 , -2.61619244e-08 , +2.86711066e-08 , -9.82131412e-04 , -1.54903596e-03 , +5.65290647e-04 ], [ +3.57949943e-08 , +6.94163523e-08 , -4.63971114e-08 , -1.14588088e-07 , -7.40128104e-08 , -2.01746526e-08 , -7.22382735e-08 , -7.97967222e-08 , +3.86856722e-08 , +6.69493478e-12 , +1.17366862e-07 , +2.64249604e-07 , +2.73078483e-07 , +1.83885237e-07 , +1.84772071e-11 , +5.04542783e-09 , -1.22335796e-08 , -4.90688923e-12 , +1.72899348e-13 , -5.42214908e-14 , -7.40357839e-09 , -2.49210461e-08 , -6.16160227e-12 , -1.57240072e-08 , -1.49312340e-12 , +7.83338129e-08 , -7.54039419e-09 , +6.99371400e-08 ], [ -2.56240699e-08 , -5.87481438e-08 , +1.48775235e-07 , +2.61037141e-07 , +1.55291965e-07 , +9.74609274e-08 , +2.10729273e-07 , +1.11924011e-07 , -1.38167749e-07 , +6.30646706e-12 , -1.74755350e-07 , -4.12725590e-07 , -3.40246051e-07 , +1.84772071e-11 , +2.21554697e-07 , -7.08008517e-09 , +4.36926162e-08 , -4.69670738e-12 , -4.13877958e-14 , +3.31303941e-13 , -1.07950559e-08 , -2.98766537e-12 , -6.98031417e-08 , -2.05269794e-12 , -1.69620289e-08 , -9.58766371e-08 , +6.91609109e-08 , -1.64810443e-07 ], [ -1.67475516e-05 , +1.91484554e-04 , +1.85392800e-04 , -1.31651700e-05 , -1.91844916e-05 , -4.62340444e-04 , -9.89249619e-04 , -8.70709322e-04 , -2.88727565e-04 , -8.56710027e-07 , -3.20118275e-05 , +2.08186100e-05 , +7.07678211e-05 , +5.04542783e-09 , -7.08008517e-09 , +5.52514333e-05 , +9.13032298e-05 , +6.28361676e-07 , -1.05842476e-09 , -1.95907146e-08 , -1.91758229e-06 , -7.14298923e-10 , +2.46428666e-09 , -4.88879860e-10 , +6.57952661e-10 , -2.12013649e-05 , +1.88744789e-04 , -1.98634974e-04 ], [ -7.41926572e-05 , +3.47848793e-04 , +3.63129723e-04 , -5.43361509e-05 , -5.35127143e-05 , -5.89660173e-04 , -1.38560910e-03 , -1.43739110e-03 , -6.00934035e-04 , -1.86719086e-06 , -4.05707677e-05 , +8.59116912e-05 , +1.97467435e-04 , -1.22335796e-08 , +4.36926162e-08 , +9.13032298e-05 , +1.90035439e-04 , +1.37245078e-06 , -4.31390391e-09 , -4.23574780e-08 , -5.35642668e-06 , +1.71968282e-09 , -1.39417854e-08 , +1.40443715e-09 , -3.35524075e-09 , -1.77241856e-04 , +5.27672890e-04 , -4.24140805e-04 ], [ -5.02094424e-07 , -3.69344627e-07 , +8.78208888e-07 , +8.57297369e-07 , +2.11089750e-07 , -4.45396553e-07 , -1.48793375e-06 , -3.28832967e-06 , -4.34005248e-06 , -1.99409195e-06 , -5.70585303e-07 , -1.35551058e-06 , -7.78779091e-07 , -4.90688923e-12 , -4.69670738e-12 , +6.28361676e-07 , +1.37245078e-06 , +1.47137559e-06 , +1.53009722e-11 , -4.75601282e-08 , +2.11095324e-08 , +7.37036156e-14 , +2.44763282e-12 , -1.43430074e-12 , +1.92137501e-12 , -7.28460072e-08 , -7.62645903e-07 , -1.29440956e-06 ], [ +1.19039715e-08 , +4.00562770e-09 , -9.00768180e-09 , -2.75193317e-09 , -3.60080833e-10 , +4.53087729e-09 , +7.37606189e-09 , +1.68045306e-08 , +1.36416517e-08 , -2.07679229e-11 , +3.34803030e-09 , +4.35129473e-09 , +1.32834740e-09 , +1.72899348e-13 , -4.13877958e-14 , -1.05842476e-09 , -4.31390391e-09 , +1.53009722e-11 , +1.43429102e-08 , -3.54619237e-13 , -3.60003242e-11 , -2.31122149e-14 , +6.21751119e-15 , +1.31255209e-14 , -3.05018991e-14 , -2.71858486e-09 , -3.16500839e-09 , +8.01110140e-09 ], [ -1.29725342e-09 , +2.38952342e-09 , -2.32642126e-08 , -2.69213762e-08 , -6.36045136e-09 , +1.03506087e-08 , +4.44431993e-08 , +9.49033008e-08 , +1.33945566e-07 , +6.44562331e-08 , +1.61815389e-08 , +4.25664567e-08 , +2.34660148e-08 , -5.42214908e-14 , +3.31303941e-13 , -1.95907146e-08 , -4.23574780e-08 , -4.75601282e-08 , -3.54619237e-13 , +1.42837187e-08 , -6.36088407e-10 , +2.84240518e-14 , -1.31773354e-13 , +4.28363928e-14 , -4.56626091e-14 , +3.56938041e-09 , +2.85769294e-08 , +2.98911743e-08 ], [ +2.72539382e-06 , +4.20025223e-05 , +9.57618157e-05 , +1.03184182e-04 , +3.29928974e-05 , +2.74507815e-05 , +6.70374964e-05 , +3.04155636e-05 , +1.69386526e-05 , -2.88558852e-08 , -7.60641405e-05 , -1.63152398e-04 , -1.21733100e-04 , -7.40357839e-09 , -1.07950559e-08 , -1.91758229e-06 , -5.35642668e-06 , +2.11095324e-08 , -3.60003242e-11 , -6.36088407e-10 , +3.30123691e-06 , +1.09683945e-09 , +3.35650816e-09 , +7.09315875e-10 , +7.55386204e-10 , +2.66304703e-05 , +4.19829380e-05 , -1.53056583e-05 ], [ -1.23014194e-09 , -7.41374790e-09 , +3.79151614e-09 , +1.42047337e-08 , +1.09646220e-08 , +5.67601230e-09 , +1.00626123e-08 , +1.12942113e-08 , -5.43803093e-09 , -1.11030343e-13 , -1.64128287e-08 , -4.06173537e-08 , -4.04555296e-08 , -2.49210461e-08 , -2.98766537e-12 , -7.14298923e-10 , +1.71968282e-09 , +7.37036156e-14 , -2.31122149e-14 , +2.84240518e-14 , +1.09683945e-09 , +5.44732885e-09 , +1.00514455e-12 , +2.13099114e-09 , +2.39387495e-13 , -1.43942267e-08 , -2.98613193e-09 , -1.47071201e-08 ], [ +9.61006747e-09 , +2.51886090e-08 , -4.37832686e-08 , -8.57390506e-08 , -5.24829640e-08 , -3.22487615e-08 , -6.84118030e-08 , -3.89523797e-08 , +4.40875972e-08 , -3.28984512e-12 , +5.79789803e-08 , +1.35561846e-07 , +1.08842940e-07 , -6.16160227e-12 , -6.98031417e-08 , +2.46428666e-09 , -1.39417854e-08 , +2.44763282e-12 , +6.21751119e-15 , -1.31773354e-13 , +3.35650816e-09 , +1.00514455e-12 , +2.54352135e-08 , +6.87052397e-13 , +5.31684220e-09 , +3.53044149e-08 , -2.12170404e-08 , +5.60695185e-08 ], [ -4.23645875e-09 , -8.06116478e-09 , +4.39367089e-09 , +1.16543616e-08 , +7.09061625e-09 , +1.96941674e-09 , +7.78331509e-09 , +7.72331538e-09 , -4.44117566e-09 , +1.93883885e-12 , -1.12279343e-08 , -2.55304553e-08 , -2.61619244e-08 , -1.57240072e-08 , -2.05269794e-12 , -4.88879860e-10 , +1.40443715e-09 , -1.43430074e-12 , +1.31255209e-14 , +4.28363928e-14 , +7.09315875e-10 , +2.13099114e-09 , +6.87052397e-13 , +4.71738370e-09 , +1.78694840e-13 , -5.77469515e-09 , +4.75788636e-09 , -6.92043746e-09 ], [ +4.83157082e-09 , +7.58498138e-09 , -1.15880046e-08 , -2.13553999e-08 , -1.25751693e-08 , -7.16476249e-09 , -1.85012551e-08 , -1.03944401e-08 , +1.06101747e-08 , -2.60058997e-12 , +1.44018734e-08 , +3.37650355e-08 , +2.86711066e-08 , -1.49312340e-12 , -1.69620289e-08 , +6.57952661e-10 , -3.35524075e-09 , +1.92137501e-12 , -3.05018991e-14 , -4.56626091e-14 , +7.55386204e-10 , +2.39387495e-13 , +5.31684220e-09 , +1.78694840e-13 , +5.30772991e-09 , +4.72338916e-09 , -1.17284428e-08 , +1.33104649e-08 ], [ -2.37696438e-03 , -2.53805670e-03 , +4.12406124e-04 , +1.31242915e-03 , +2.66170220e-04 , -4.64673810e-04 , -8.42061784e-04 , +3.34852709e-04 , +5.60504546e-04 , +9.72721650e-08 , -4.99745472e-04 , -2.07507947e-03 , -9.82131412e-04 , +7.83338129e-08 , -9.58766371e-08 , -2.12013649e-05 , -1.77241856e-04 , -7.28460072e-08 , -2.71858486e-09 , +3.56938041e-09 , +2.66304703e-05 , -1.43942267e-08 , +3.53044149e-08 , -5.77469515e-09 , +4.72338916e-09 , +3.92773651e-02 , -1.98144281e-02 , -2.86271098e-03 ], [ +6.30187579e-03 , +4.44858633e-03 , -2.34003226e-03 , +4.12599185e-04 , +4.19886833e-04 , -5.85522233e-04 , -8.45327436e-04 , -2.98782797e-03 , -1.66863173e-03 , +1.03866025e-06 , +1.57431803e-04 , -6.52350596e-04 , -1.54903596e-03 , -7.54039419e-09 , +6.91609109e-08 , +1.88744789e-04 , +5.27672890e-04 , -7.62645903e-07 , -3.16500839e-09 , +2.85769294e-08 , +4.19829380e-05 , -2.98613193e-09 , -2.12170404e-08 , +4.75788636e-09 , -1.17284428e-08 , -1.98144281e-02 , +4.31445418e-02 , -2.27839928e-03 ], [ +8.45414159e-03 , +1.13607915e-02 , +2.76246807e-03 , -4.03633739e-04 , -1.53276698e-04 , +1.86494917e-03 , +4.29840991e-03 , +3.13475363e-03 , +1.34126356e-03 , +1.76745507e-06 , -6.60989591e-04 , +6.38273811e-04 , +5.65290647e-04 , +6.99371400e-08 , -1.64810443e-07 , -1.98634974e-04 , -4.24140805e-04 , -1.29440956e-06 , +8.01110140e-09 , +2.98911743e-08 , -1.53056583e-05 , -1.47071201e-08 , +5.60695185e-08 , -6.92043746e-09 , +1.33104649e-08 , -2.86271098e-03 , -2.27839928e-03 , +2.82051899e-02 ]]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/stm.py000066400000000000000000000142161316323560300224750ustar00rootroot00000000000000import pickle import numpy as np from ase.utils import basestring class STM: def __init__(self, atoms, symmetries=None, use_density=False): """Scanning tunneling microscope. atoms: Atoms object or filename Atoms to scan or name of file to read LDOS from. symmetries: list of int List of integers 0, 1, and/or 2 indicating which surface symmetries have been used to reduce the number of k-points for the DFT calculation. The three integers correspond to the following three symmetry operations:: [-1 0] [ 1 0] [ 0 1] [ 0 1] [ 0 -1] [ 1 0] use_density: bool Use the electron density instead of the LDOS. """ self.use_density = use_density if isinstance(atoms, basestring): with open(atoms, 'rb') as f: self.ldos, self.bias, self.cell = pickle.load(f) self.atoms = None else: self.atoms = atoms self.cell = atoms.cell self.bias = None self.ldos = None assert not self.cell[2, :2].any() and not self.cell[:2, 2].any() self.symmetries = symmetries or [] def calculate_ldos(self, bias): """Calculate local density of states for given bias.""" if self.ldos is not None and bias == self.bias: return self.bias = bias calc = self.atoms.calc if self.use_density: self.ldos = calc.get_pseudo_density() return if bias < 0: emin = bias emax = 0.0 else: emin = 0 emax = bias nbands = calc.get_number_of_bands() weights = calc.get_k_point_weights() nkpts = len(weights) nspins = calc.get_number_of_spins() eigs = np.array([[calc.get_eigenvalues(k, s) for k in range(nkpts)] for s in range(nspins)]) eigs -= calc.get_fermi_level() ldos = 0.0 for s in range(nspins): for k in range(nkpts): for n in range(nbands): e = eigs[s, k, n] if emin < e < emax: psi = calc.get_pseudo_wave_function(n, k, s) ldos += weights[k] * (psi * np.conj(psi)).real if 0 in self.symmetries: # (x,y) -> (-x,y) ldos[1:] += ldos[:0:-1].copy() ldos[1:] *= 0.5 if 1 in self.symmetries: # (x,y) -> (x,-y) ldos[:, 1:] += ldos[:, :0:-1].copy() ldos[:, 1:] *= 0.5 if 2 in self.symmetries: # (x,y) -> (y,x) ldos += ldos.transpose((1, 0, 2)).copy() ldos *= 0.5 self.ldos = ldos def write(self, filename='stm.pckl'): """Write local density of states to pickle file.""" with open(filename, 'wb') as f: pickle.dump((self.ldos, self.bias, self.cell), f, protocol=pickle.HIGHEST_PROTOCOL) def get_averaged_current(self, bias, z): """Calculate avarage current at height z. Use this to get an idea of what current to use when scanning.""" self.calculate_ldos(bias) nz = self.ldos.shape[2] # Find grid point: n = z / self.cell[2, 2] * nz dn = n - np.floor(n) n = int(n) % nz # Average and do linear interpolation: return ((1 - dn) * self.ldos[:, :, n].mean() + dn * self.ldos[:, :, (n + 1) % nz].mean()) def scan(self, bias, current, z0=None, repeat=(1, 1)): """Constant current 2-d scan. Returns three 2-d arrays (x, y, z) containing x-coordinates, y-coordinates and heights. These three arrays can be passed to matplotlibs contourf() function like this: >>> import matplotlib.pyplot as plt >>> plt.gca(aspect='equal') >>> plt.contourf(x, y, z) >>> plt.show() """ self.calculate_ldos(bias) L = self.cell[2, 2] nz = self.ldos.shape[2] h = L / nz ldos = self.ldos.reshape((-1, nz)) heights = np.empty(ldos.shape[0]) for i, a in enumerate(ldos): heights[i] = find_height(a, current, h, z0) s0 = heights.shape = self.ldos.shape[:2] heights = np.tile(heights, repeat) s = heights.shape ij = np.indices(s, dtype=float).reshape((2, -1)).T x, y = np.dot(ij / s0, self.cell[:2, :2]).T.reshape((2,) + s) return x, y, heights def linescan(self, bias, current, p1, p2, npoints=50, z0=None): """Constant current line scan. Example:: stm = STM(...) z = ... # tip position c = stm.get_averaged_current(-1.0, z) stm.linescan(-1.0, c, (1.2, 0.0), (1.2, 3.0)) """ heights = self.scan(bias, current, z0)[2] p1 = np.asarray(p1, float) p2 = np.asarray(p2, float) d = p2 - p1 s = np.dot(d, d)**0.5 cell = self.cell[:2, :2] shape = np.array(heights.shape, float) M = np.linalg.inv(cell) line = np.empty(npoints) for i in range(npoints): p = p1 + i * d / (npoints - 1) q = np.dot(p, M) * shape line[i] = interpolate(q, heights) return np.linspace(0, s, npoints), line def interpolate(q, heights): qi = q.astype(int) f = q - qi g = 1 - f qi %= heights.shape n0, m0 = qi n1, m1 = (qi + 1) % heights.shape z = (g[0] * g[1] * heights[n0, m0] + f[0] * g[1] * heights[n1, m0] + g[0] * f[1] * heights[n0, m1] + f[0] * f[1] * heights[n1, m1]) return z def find_height(ldos, current, h, z0=None): if z0 is None: n = len(ldos) - 2 else: n = int(z0 / h) while n >= 0: if ldos[n] > current: break n -= 1 else: return 0.0 c2, c1 = ldos[n:n + 2] return (n + 1 - (current - c1) / (c2 - c1)) * h ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dft/wannier.py000066400000000000000000000731101316323560300233330ustar00rootroot00000000000000from __future__ import print_function """ Maximally localized Wannier Functions Find the set of maximally localized Wannier functions using the spread functional of Marzari and Vanderbilt (PRB 56, 1997 page 12847). """ from time import time from math import sqrt, pi from pickle import dump, load import numpy as np from ase.parallel import paropen from ase.dft.kpoints import get_monkhorst_pack_size_and_offset from ase.transport.tools import dagger, normalize dag = dagger def gram_schmidt(U): """Orthonormalize columns of U according to the Gram-Schmidt procedure.""" for i, col in enumerate(U.T): for col2 in U.T[:i]: col -= col2 * np.dot(col2.conj(), col) col /= np.linalg.norm(col) def gram_schmidt_single(U, n): """Orthogonalize columns of U to column n""" N = len(U.T) v_n = U.T[n] indices = list(range(N)) del indices[indices.index(n)] for i in indices: v_i = U.T[i] v_i -= v_n * np.dot(v_n.conj(), v_i) def lowdin(U, S=None): """Orthonormalize columns of U according to the Lowdin procedure. If the overlap matrix is know, it can be specified in S. """ if S is None: S = np.dot(dag(U), U) eig, rot = np.linalg.eigh(S) rot = np.dot(rot / np.sqrt(eig), dag(rot)) U[:] = np.dot(U, rot) def neighbor_k_search(k_c, G_c, kpt_kc, tol=1e-4): # search for k1 (in kpt_kc) and k0 (in alldir), such that # k1 - k - G + k0 = 0 alldir_dc = np.array([[0,0,0],[1,0,0],[0,1,0],[0,0,1], [1,1,0],[1,0,1],[0,1,1]], int) for k0_c in alldir_dc: for k1, k1_c in enumerate(kpt_kc): if np.linalg.norm(k1_c - k_c - G_c + k0_c) < tol: return k1, k0_c print('Wannier: Did not find matching kpoint for kpt=', k_c) print('Probably non-uniform k-point grid') raise NotImplementedError def calculate_weights(cell_cc): """ Weights are used for non-cubic cells, see PRB **61**, 10040""" alldirs_dc = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 0], [1, 0, 1], [0, 1, 1]], dtype=int) g = np.dot(cell_cc, cell_cc.T) # NOTE: Only first 3 of following 6 weights are presently used: w = np.zeros(6) w[0] = g[0, 0] - g[0, 1] - g[0, 2] w[1] = g[1, 1] - g[0, 1] - g[1, 2] w[2] = g[2, 2] - g[0, 2] - g[1, 2] w[3] = g[0, 1] w[4] = g[0, 2] w[5] = g[1, 2] # Make sure that first 3 Gdir vectors are included - # these are used to calculate Wanniercenters. Gdir_dc = alldirs_dc[:3] weight_d = w[:3] for d in range(3, 6): if abs(w[d]) > 1e-5: Gdir_dc = np.concatenate((Gdir_dc, alldirs_dc[d:d + 1])) weight_d = np.concatenate((weight_d, w[d:d + 1])) weight_d /= max(abs(weight_d)) return weight_d, Gdir_dc def random_orthogonal_matrix(dim, seed=None, real=False): """Generate a random orthogonal matrix""" if seed is not None: np.random.seed(seed) H = np.random.rand(dim, dim) np.add(dag(H), H, H) np.multiply(.5, H, H) if real: gram_schmidt(H) return H else: val, vec = np.linalg.eig(H) return np.dot(vec * np.exp(1.j * val), dag(vec)) def steepest_descent(func, step=.005, tolerance=1e-6, **kwargs): fvalueold = 0. fvalue = fvalueold + 10 count=0 while abs((fvalue - fvalueold) / fvalue) > tolerance: fvalueold = fvalue dF = func.get_gradients() func.step(dF * step, **kwargs) fvalue = func.get_functional_value() count += 1 print('SteepestDescent: iter=%s, value=%s' % (count, fvalue)) def md_min(func, step=.25, tolerance=1e-6, verbose=False, **kwargs): if verbose: print('Localize with step =', step, 'and tolerance =', tolerance) t = -time() fvalueold = 0. fvalue = fvalueold + 10 count = 0 V = np.zeros(func.get_gradients().shape, dtype=complex) while abs((fvalue - fvalueold) / fvalue) > tolerance: fvalueold = fvalue dF = func.get_gradients() V *= (dF * V.conj()).real > 0 V += step * dF func.step(V, **kwargs) fvalue = func.get_functional_value() if fvalue < fvalueold: step *= 0.5 count += 1 if verbose: print('MDmin: iter=%s, step=%s, value=%s' % (count, step, fvalue)) if verbose: t += time() print('%d iterations in %0.2f seconds (%0.2f ms/iter), endstep = %s' %( count, t, t * 1000. / count, step)) def rotation_from_projection2(proj_nw, fixed): V_ni = proj_nw Nb, Nw = proj_nw.shape M = fixed L = Nw - M print('M=%i, L=%i, Nb=%i, Nw=%i' % (M, L, Nb, Nw)) U_ww = np.zeros((Nw, Nw), dtype=proj_nw.dtype) c_ul = np.zeros((Nb-M, L), dtype=proj_nw.dtype) for V_n in V_ni.T: V_n /= np.linalg.norm(V_n) # Find EDF P_ui = V_ni[M:].copy() la = np.linalg for l in range(L): norm_list = np.array([la.norm(v) for v in P_ui.T]) perm_list = np.argsort(-norm_list) P_ui = P_ui[:, perm_list].copy() # largest norm to the left P_ui[:, 0] /= la.norm(P_ui[:, 0]) # normalize c_ul[:, l] = P_ui[:, 0] # save normalized EDF gram_schmidt_single(P_ui, 0) # ortho remain. to this EDF P_ui = P_ui[:, 1:].copy() # remove this EDF U_ww[:M] = V_ni[:M, :] U_ww[M:] = np.dot(c_ul.T.conj(), V_ni[M:]) gram_schmidt(U_ww) return U_ww, c_ul def rotation_from_projection(proj_nw, fixed, ortho=True): """Determine rotation and coefficient matrices from projections proj_nw = psi_n: eigenstates p_w: localized function Nb (n) = Number of bands Nw (w) = Number of wannier functions M (f) = Number of fixed states L (l) = Number of extra degrees of freedom U (u) = Number of non-fixed states """ Nb, Nw = proj_nw.shape M = fixed L = Nw - M U_ww = np.empty((Nw, Nw), dtype=proj_nw.dtype) U_ww[:M] = proj_nw[:M] if L > 0: proj_uw = proj_nw[M:] eig_w, C_ww = np.linalg.eigh(np.dot(dag(proj_uw), proj_uw)) C_ul = np.dot(proj_uw, C_ww[:, np.argsort(-eig_w.real)[:L]]) #eig_u, C_uu = np.linalg.eigh(np.dot(proj_uw, dag(proj_uw))) #C_ul = C_uu[:, np.argsort(-eig_u.real)[:L]] U_ww[M:] = np.dot(dag(C_ul), proj_uw) else: C_ul = np.empty((Nb - M, 0)) normalize(C_ul) if ortho: lowdin(U_ww) else: normalize(U_ww) return U_ww, C_ul class Wannier: """Maximally localized Wannier Functions Find the set of maximally localized Wannier functions using the spread functional of Marzari and Vanderbilt (PRB 56, 1997 page 12847). """ def __init__(self, nwannier, calc, file=None, nbands=None, fixedenergy=None, fixedstates=None, spin=0, initialwannier='random', seed=None, verbose=False): """ Required arguments: ``nwannier``: The number of Wannier functions you wish to construct. This must be at least half the number of electrons in the system and at most equal to the number of bands in the calculation. ``calc``: A converged DFT calculator class. If ``file`` arg. is not provided, the calculator *must* provide the method ``get_wannier_localization_matrix``, and contain the wavefunctions (save files with only the density is not enough). If the localization matrix is read from file, this is not needed, unless ``get_function`` or ``write_cube`` is called. Optional arguments: ``nbands``: Bands to include in localization. The number of bands considered by Wannier can be smaller than the number of bands in the calculator. This is useful if the highest bands of the DFT calculation are not well converged. ``spin``: The spin channel to be considered. The Wannier code treats each spin channel independently. ``fixedenergy`` / ``fixedstates``: Fixed part of Heilbert space. Determine the fixed part of Hilbert space by either a maximal energy *or* a number of bands (possibly a list for multiple k-points). Default is None meaning that the number of fixed states is equated to ``nwannier``. ``file``: Read localization and rotation matrices from this file. ``initialwannier``: Initial guess for Wannier rotation matrix. Can be 'bloch' to start from the Bloch states, 'random' to be randomized, or a list passed to calc.get_initial_wannier. ``seed``: Seed for random ``initialwannier``. ``verbose``: True / False level of verbosity. """ # Bloch phase sign convention sign = -1 classname = calc.__class__.__name__ if classname in ['Dacapo', 'Jacapo']: print('Using ' + classname) sign = +1 self.nwannier = nwannier self.calc = calc self.spin = spin self.verbose = verbose self.kpt_kc = calc.get_bz_k_points() assert len(calc.get_ibz_k_points()) == len(self.kpt_kc) self.kptgrid = get_monkhorst_pack_size_and_offset(self.kpt_kc)[0] self.kpt_kc *= sign self.Nk = len(self.kpt_kc) self.unitcell_cc = calc.get_atoms().get_cell() self.largeunitcell_cc = (self.unitcell_cc.T * self.kptgrid).T self.weight_d, self.Gdir_dc = calculate_weights(self.largeunitcell_cc) self.Ndir = len(self.weight_d) # Number of directions if nbands is not None: self.nbands = nbands else: self.nbands = calc.get_number_of_bands() if fixedenergy is None: if fixedstates is None: self.fixedstates_k = np.array([nwannier] * self.Nk, int) else: if isinstance(fixedstates, int): fixedstates = [fixedstates] * self.Nk self.fixedstates_k = np.array(fixedstates, int) else: # Setting number of fixed states and EDF from specified energy. # All states below this energy (relative to Fermi level) are fixed. fixedenergy += calc.get_fermi_level() print(fixedenergy) self.fixedstates_k = np.array( [calc.get_eigenvalues(k, spin).searchsorted(fixedenergy) for k in range(self.Nk)], int) self.edf_k = self.nwannier - self.fixedstates_k if verbose: print('Wannier: Fixed states : %s' % self.fixedstates_k) print('Wannier: Extra degrees of freedom: %s' % self.edf_k) # Set the list of neighboring k-points k1, and the "wrapping" k0, # such that k1 - k - G + k0 = 0 # # Example: kpoints = (-0.375,-0.125,0.125,0.375), dir=0 # G = [0.25,0,0] # k=0.375, k1= -0.375 : -0.375-0.375-0.25 => k0=[1,0,0] # # For a gamma point calculation k1 = k = 0, k0 = [1,0,0] for dir=0 if self.Nk == 1: self.kklst_dk = np.zeros((self.Ndir, 1), int) k0_dkc = self.Gdir_dc.reshape(-1, 1, 3) else: self.kklst_dk = np.empty((self.Ndir, self.Nk), int) k0_dkc = np.empty((self.Ndir, self.Nk, 3), int) # Distance between kpoints kdist_c = np.empty(3) for c in range(3): # make a sorted list of the kpoint values in this direction slist = np.argsort(self.kpt_kc[:, c], kind='mergesort') skpoints_kc = np.take(self.kpt_kc, slist, axis=0) kdist_c[c] = max([skpoints_kc[n + 1, c] - skpoints_kc[n, c] for n in range(self.Nk - 1)]) for d, Gdir_c in enumerate(self.Gdir_dc): for k, k_c in enumerate(self.kpt_kc): # setup dist vector to next kpoint G_c = np.where(Gdir_c > 0, kdist_c, 0) if max(G_c) < 1e-4: self.kklst_dk[d, k] = k k0_dkc[d, k] = Gdir_c else: self.kklst_dk[d, k], k0_dkc[d, k] = \ neighbor_k_search(k_c, G_c, self.kpt_kc) # Set the inverse list of neighboring k-points self.invkklst_dk = np.empty((self.Ndir, self.Nk), int) for d in range(self.Ndir): for k1 in range(self.Nk): self.invkklst_dk[d, k1] = self.kklst_dk[d].tolist().index(k1) Nw = self.nwannier Nb = self.nbands self.Z_dkww = np.empty((self.Ndir, self.Nk, Nw, Nw), complex) self.V_knw = np.zeros((self.Nk, Nb, Nw), complex) if file is None: self.Z_dknn = np.empty((self.Ndir, self.Nk, Nb, Nb), complex) for d, dirG in enumerate(self.Gdir_dc): for k in range(self.Nk): k1 = self.kklst_dk[d, k] k0_c = k0_dkc[d, k] self.Z_dknn[d, k] = calc.get_wannier_localization_matrix( nbands=Nb, dirG=dirG, kpoint=k, nextkpoint=k1, G_I=k0_c, spin=self.spin) self.initialize(file=file, initialwannier=initialwannier, seed=seed) def initialize(self, file=None, initialwannier='random', seed=None): """Re-initialize current rotation matrix. Keywords are identical to those of the constructor. """ Nw = self.nwannier Nb = self.nbands if file is not None: self.Z_dknn, self.U_kww, self.C_kul = load(paropen(file, 'rb')) elif initialwannier == 'bloch': # Set U and C to pick the lowest Bloch states self.U_kww = np.zeros((self.Nk, Nw, Nw), complex) self.C_kul = [] for U, M, L in zip(self.U_kww, self.fixedstates_k, self.edf_k): U[:] = np.identity(Nw, complex) if L > 0: self.C_kul.append( np.identity(Nb - M, complex)[:, :L]) else: self.C_kul.append([]) elif initialwannier == 'random': # Set U and C to random (orthogonal) matrices self.U_kww = np.zeros((self.Nk, Nw, Nw), complex) self.C_kul = [] for U, M, L in zip(self.U_kww, self.fixedstates_k, self.edf_k): U[:] = random_orthogonal_matrix(Nw, seed, real=False) if L > 0: self.C_kul.append(random_orthogonal_matrix( Nb - M, seed=seed, real=False)[:, :L]) else: self.C_kul.append(np.array([])) else: # Use initial guess to determine U and C self.C_kul, self.U_kww = self.calc.initial_wannier( initialwannier, self.kptgrid, self.fixedstates_k, self.edf_k, self.spin, self.nbands) self.update() def save(self, file): """Save information on localization and rotation matrices to file.""" dump((self.Z_dknn, self.U_kww, self.C_kul), paropen(file, 'wb')) def update(self): # Update large rotation matrix V (from rotation U and coeff C) for k, M in enumerate(self.fixedstates_k): self.V_knw[k, :M] = self.U_kww[k, :M] if M < self.nwannier: self.V_knw[k, M:] = np.dot(self.C_kul[k], self.U_kww[k, M:]) # else: self.V_knw[k, M:] = 0.0 # Calculate the Zk matrix from the large rotation matrix: # Zk = V^d[k] Zbloch V[k1] for d in range(self.Ndir): for k in range(self.Nk): k1 = self.kklst_dk[d, k] self.Z_dkww[d, k] = np.dot(dag(self.V_knw[k]), np.dot( self.Z_dknn[d, k], self.V_knw[k1])) # Update the new Z matrix self.Z_dww = self.Z_dkww.sum(axis=1) / self.Nk def get_centers(self, scaled=False): """Calculate the Wannier centers :: pos = L / 2pi * phase(diag(Z)) """ coord_wc = np.angle(self.Z_dww[:3].diagonal(0, 1, 2)).T / (2 * pi) % 1 if not scaled: coord_wc = np.dot(coord_wc, self.largeunitcell_cc) return coord_wc def get_radii(self): """Calculate the spread of the Wannier functions. :: -- / L \ 2 2 radius**2 = - > | --- | ln |Z| --d \ 2pi / """ r2 = -np.dot(self.largeunitcell_cc.diagonal()**2 / (2 * pi)**2, np.log(abs(self.Z_dww[:3].diagonal(0, 1, 2))**2)) return np.sqrt(r2) def get_spectral_weight(self, w): return abs(self.V_knw[:, :, w])**2 / self.Nk def get_pdos(self, w, energies, width): """Projected density of states (PDOS). Returns the (PDOS) for Wannier function ``w``. The calculation is performed over the energy grid specified in energies. The PDOS is produced as a sum of Gaussians centered at the points of the energy grid and with the specified width. """ spec_kn = self.get_spectral_weight(w) dos = np.zeros(len(energies)) for k, spec_n in enumerate(spec_kn): eig_n = self.calc.get_eigenvalues(k=k, s=self.spin) for weight, eig in zip(spec_n, eig_n): # Add gaussian centered at the eigenvalue x = ((energies - eig) / width)**2 dos += weight * np.exp(-x.clip(0., 40.)) / (sqrt(pi) * width) return dos def max_spread(self, directions=[0, 1, 2]): """Returns the index of the most delocalized Wannier function together with the value of the spread functional""" d = np.zeros(self.nwannier) for dir in directions: d[dir] = np.abs(self.Z_dww[dir].diagonal())**2 *self.weight_d[dir] index = np.argsort(d)[0] print('Index:', index) print('Spread:', d[index]) def translate(self, w, R): """Translate the w'th Wannier function The distance vector R = [n1, n2, n3], is in units of the basis vectors of the small cell. """ for kpt_c, U_ww in zip(self.kpt_kc, self.U_kww): U_ww[:, w] *= np.exp(2.j * pi * np.dot(np.array(R), kpt_c)) self.update() def translate_to_cell(self, w, cell): """Translate the w'th Wannier function to specified cell""" scaled_c = np.angle(self.Z_dww[:3, w, w]) * self.kptgrid / (2 * pi) trans = np.array(cell) - np.floor(scaled_c) self.translate(w, trans) def translate_all_to_cell(self, cell=[0, 0, 0]): """Translate all Wannier functions to specified cell. Move all Wannier orbitals to a specific unit cell. There exists an arbitrariness in the positions of the Wannier orbitals relative to the unit cell. This method can move all orbitals to the unit cell specified by ``cell``. For a `\Gamma`-point calculation, this has no effect. For a **k**-point calculation the periodicity of the orbitals are given by the large unit cell defined by repeating the original unitcell by the number of **k**-points in each direction. In this case it is useful to move the orbitals away from the boundaries of the large cell before plotting them. For a bulk calculation with, say 10x10x10 **k** points, one could move the orbitals to the cell [2,2,2]. In this way the pbc boundary conditions will not be noticed. """ scaled_wc = np.angle(self.Z_dww[:3].diagonal(0, 1, 2)).T * \ self.kptgrid / (2 * pi) trans_wc = np.array(cell)[None] - np.floor(scaled_wc) for kpt_c, U_ww in zip(self.kpt_kc, self.U_kww): U_ww *= np.exp(2.j * pi * np.dot(trans_wc, kpt_c)) self.update() def distances(self, R): Nw = self.nwannier cen = self.get_centers() r1 = cen.repeat(Nw, axis=0).reshape(Nw, Nw, 3) r2 = cen.copy() for i in range(3): r2 += self.unitcell_cc[i] * R[i] r2 = np.swapaxes(r2.repeat(Nw, axis=0).reshape(Nw, Nw, 3), 0, 1) return np.sqrt(np.sum((r1 - r2)**2, axis=-1)) def get_hopping(self, R): """Returns the matrix H(R)_nm=<0,n|H|R,m>. :: 1 _ -ik.R H(R) = <0,n|H|R,m> = --- >_ e H(k) Nk k where R is the cell-distance (in units of the basis vectors of the small cell) and n,m are indices of the Wannier functions. """ H_ww = np.zeros([self.nwannier, self.nwannier], complex) for k, kpt_c in enumerate(self.kpt_kc): phase = np.exp(-2.j * pi * np.dot(np.array(R), kpt_c)) H_ww += self.get_hamiltonian(k) * phase return H_ww / self.Nk def get_hamiltonian(self, k=0): """Get Hamiltonian at existing k-vector of index k :: dag H(k) = V diag(eps ) V k k k """ eps_n = self.calc.get_eigenvalues(kpt=k, spin=self.spin)[:self.nbands] return np.dot(dag(self.V_knw[k]) * eps_n, self.V_knw[k]) def get_hamiltonian_kpoint(self, kpt_c): """Get Hamiltonian at some new arbitrary k-vector :: _ ik.R H(k) = >_ e H(R) R Warning: This method moves all Wannier functions to cell (0, 0, 0) """ if self.verbose: print('Translating all Wannier functions to cell (0, 0, 0)') self.translate_all_to_cell() max = (self.kptgrid - 1) // 2 N1, N2, N3 = max Hk = np.zeros([self.nwannier, self.nwannier], complex) for n1 in range(-N1, N1 + 1): for n2 in range(-N2, N2 + 1): for n3 in range(-N3, N3 + 1): R = np.array([n1, n2, n3], float) hop_ww = self.get_hopping(R) phase = np.exp(+2.j * pi * np.dot(R, kpt_c)) Hk += hop_ww * phase return Hk def get_function(self, index, repeat=None): """Get Wannier function on grid. Returns an array with the funcion values of the indicated Wannier function on a grid with the size of the *repeated* unit cell. For a calculation using **k**-points the relevant unit cell for eg. visualization of the Wannier orbitals is not the original unit cell, but rather a larger unit cell defined by repeating the original unit cell by the number of **k**-points in each direction. Note that for a `\Gamma`-point calculation the large unit cell coinsides with the original unit cell. The large unitcell also defines the periodicity of the Wannier orbitals. ``index`` can be either a single WF or a coordinate vector in terms of the WFs. """ # Default size of plotting cell is the one corresponding to k-points. if repeat is None: repeat = self.kptgrid N1, N2, N3 = repeat dim = self.calc.get_number_of_grid_points() largedim = dim * [N1, N2, N3] wanniergrid = np.zeros(largedim, dtype=complex) for k, kpt_c in enumerate(self.kpt_kc): # The coordinate vector of wannier functions if isinstance(index, int): vec_n = self.V_knw[k, :, index] else: vec_n = np.dot(self.V_knw[k], index) wan_G = np.zeros(dim, complex) for n, coeff in enumerate(vec_n): wan_G += coeff * self.calc.get_pseudo_wave_function( n, k, self.spin, pad=True) # Distribute the small wavefunction over large cell: for n1 in range(N1): for n2 in range(N2): for n3 in range(N3): # sign? e = np.exp(-2.j * pi * np.dot([n1, n2, n3], kpt_c)) wanniergrid[n1 * dim[0]:(n1 + 1) * dim[0], n2 * dim[1]:(n2 + 1) * dim[1], n3 * dim[2]:(n3 + 1) * dim[2]] += e * wan_G # Normalization wanniergrid /= np.sqrt(self.Nk) return wanniergrid def write_cube(self, index, fname, repeat=None, real=True): """Dump specified Wannier function to a cube file""" from ase.io.cube import write_cube # Default size of plotting cell is the one corresponding to k-points. if repeat is None: repeat = self.kptgrid atoms = self.calc.get_atoms() * repeat func = self.get_function(index, repeat) # Handle separation of complex wave into real parts if real: if self.Nk == 1: func *= np.exp(-1.j * np.angle(func.max())) if 0: assert max(abs(func.imag).flat) < 1e-4 func = func.real else: func = abs(func) else: phase_fname = fname.split('.') phase_fname.insert(1, 'phase') phase_fname = '.'.join(phase_fname) write_cube(phase_fname, atoms, data=np.angle(func)) func = abs(func) write_cube(fname, atoms, data=func) def localize(self, step=0.25, tolerance=1e-08, updaterot=True, updatecoeff=True): """Optimize rotation to give maximal localization""" md_min(self, step, tolerance, verbose=self.verbose, updaterot=updaterot, updatecoeff=updatecoeff) def get_functional_value(self): """Calculate the value of the spread functional. :: Tr[|ZI|^2]=sum(I)sum(n) w_i|Z_(i)_nn|^2, where w_i are weights.""" a_d = np.sum(np.abs(self.Z_dww.diagonal(0, 1, 2))**2, axis=1) return np.dot(a_d, self.weight_d).real def get_gradients(self): # Determine gradient of the spread functional. # # The gradient for a rotation A_kij is:: # # dU = dRho/dA_{k,i,j} = sum(I) sum(k') # + Z_jj Z_kk',ij^* - Z_ii Z_k'k,ij^* # - Z_ii^* Z_kk',ji + Z_jj^* Z_k'k,ji # # The gradient for a change of coefficients is:: # # dRho/da^*_{k,i,j} = sum(I) [[(Z_0)_{k} V_{k'} diag(Z^*) + # (Z_0_{k''})^d V_{k''} diag(Z)] * # U_k^d]_{N+i,N+j} # # where diag(Z) is a square,diagonal matrix with Z_nn in the diagonal, # k' = k + dk and k = k'' + dk. # # The extra degrees of freedom chould be kept orthonormal to the fixed # space, thus we introduce lagrange multipliers, and minimize instead:: # # Rho_L=Rho- sum_{k,n,m} lambda_{k,nm} # # for this reason the coefficient gradients should be multiplied # by (1 - c c^d). Nb = self.nbands Nw = self.nwannier dU = [] dC = [] for k in range(self.Nk): M = self.fixedstates_k[k] L = self.edf_k[k] U_ww = self.U_kww[k] C_ul = self.C_kul[k] Utemp_ww = np.zeros((Nw, Nw), complex) Ctemp_nw = np.zeros((Nb, Nw), complex) for d, weight in enumerate(self.weight_d): if abs(weight) < 1.0e-6: continue Z_knn = self.Z_dknn[d] diagZ_w = self.Z_dww[d].diagonal() Zii_ww = np.repeat(diagZ_w, Nw).reshape(Nw, Nw) k1 = self.kklst_dk[d, k] k2 = self.invkklst_dk[d, k] V_knw = self.V_knw Z_kww = self.Z_dkww[d] if L > 0: Ctemp_nw += weight * np.dot( np.dot(Z_knn[k], V_knw[k1]) * diagZ_w.conj() + np.dot(dag(Z_knn[k2]), V_knw[k2]) * diagZ_w, dag(U_ww)) temp = Zii_ww.T * Z_kww[k].conj() - Zii_ww * Z_kww[k2].conj() Utemp_ww += weight * (temp - dag(temp)) dU.append(Utemp_ww.ravel()) if L > 0: # Ctemp now has same dimension as V, the gradient is in the # lower-right (Nb-M) x L block Ctemp_ul = Ctemp_nw[M:, M:] G_ul = Ctemp_ul - np.dot(np.dot(C_ul, dag(C_ul)), Ctemp_ul) dC.append(G_ul.ravel()) return np.concatenate(dU + dC) def step(self, dX, updaterot=True, updatecoeff=True): # dX is (A, dC) where U->Uexp(-A) and C->C+dC Nw = self.nwannier Nk = self.Nk M_k = self.fixedstates_k L_k = self.edf_k if updaterot: A_kww = dX[:Nk * Nw**2].reshape(Nk, Nw, Nw) for U, A in zip(self.U_kww, A_kww): H = -1.j * A.conj() epsilon, Z = np.linalg.eigh(H) # Z contains the eigenvectors as COLUMNS. # Since H = iA, dU = exp(-A) = exp(iH) = ZDZ^d dU = np.dot(Z * np.exp(1.j * epsilon), dag(Z)) if U.dtype == float: U[:] = np.dot(U, dU).real else: U[:] = np.dot(U, dU) if updatecoeff: start = 0 for C, unocc, L in zip(self.C_kul, self.nbands - M_k, L_k): if L == 0 or unocc == 0: continue Ncoeff = L * unocc deltaC = dX[Nk * Nw**2 + start: Nk * Nw**2 + start + Ncoeff] C += deltaC.reshape(unocc, L) gram_schmidt(C) start += Ncoeff self.update() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/dimer.py000066400000000000000000001313131316323560300222130ustar00rootroot00000000000000"""Minimum mode follower for finding saddle points in an unbiased way. There is, currently, only one implemented method: The Dimer method. """ import sys import time import warnings import numpy as np from ase.optimize.optimize import Optimizer from math import cos, sin, atan, tan, degrees, pi, sqrt from ase.parallel import rank, size, world from ase.calculators.singlepoint import SinglePointCalculator from ase.utils import basestring # Handy vector methods norm = np.linalg.norm def normalize(vector): """Create a unit vector along *vector*""" return vector / norm(vector) def parallel_vector(vector, base): """Extract the components of *vector* that are parallel to *base*""" return np.vdot(vector, base) * base def perpendicular_vector(vector, base): """Remove the components of *vector* that are parallel to *base*""" return vector - parallel_vector(vector, base) def rotate_vectors(v1i, v2i, angle): """Rotate vectors *v1i* and *v2i* by *angle*""" cAng = cos(angle) sAng = sin(angle) v1o = v1i * cAng + v2i * sAng v2o = v2i * cAng - v1i * sAng # Ensure the length of the input and output vectors is equal return normalize(v1o) * norm(v1i), normalize(v2o) * norm(v2i) class DimerEigenmodeSearch: """An implementation of the Dimer's minimum eigenvalue mode search. This class implements the rotational part of the dimer saddle point searching method. Parameters: atoms: MinModeAtoms object MinModeAtoms is an extension to the Atoms object, which includes information about the lowest eigenvalue mode. control: DimerControl object Contains the parameters necessary for the eigenmode search. If no control object is supplied a default DimerControl will be created and used. basis: list of xyz-values Eigenmode. Must be an ndarray of shape (n, 3). It is possible to constrain the eigenmodes to be orthogonal to this given eigenmode. Notes: The code is inspired, with permission, by code written by the Henkelman group, which can be found at http://theory.cm.utexas.edu/vtsttools/code/ References: * Henkelman and Jonsson, JCP 111, 7010 (1999) * Olsen, Kroes, Henkelman, Arnaldsson, and Jonsson, JCP 121, 9776 (2004). * Heyden, Bell, and Keil, JCP 123, 224101 (2005). * Kastner and Sherwood, JCP 128, 014106 (2008). """ def __init__(self, atoms, control=None, eigenmode=None, basis=None, **kwargs): if hasattr(atoms, 'get_eigenmode'): self.atoms = atoms else: e = 'The atoms object must be a MinModeAtoms object' raise TypeError(e) self.basis = basis if eigenmode is None: self.eigenmode = self.atoms.get_eigenmode() else: self.eigenmode = eigenmode if control is None: self.control = DimerControl(**kwargs) w = 'Missing control object in ' + self.__class__.__name__ + \ '. Using default: DimerControl()' warnings.warn(w, UserWarning) if self.control.logfile is not None: self.control.logfile.write('DIM:WARN: ' + w + '\n') self.control.logfile.flush() else: self.control = control # kwargs must be empty if a control object is supplied for key in kwargs: e = '__init__() got an unexpected keyword argument \'%s\'' % \ (key) raise TypeError(e) self.dR = self.control.get_parameter('dimer_separation') self.logfile = self.control.get_logfile() def converge_to_eigenmode(self): """Perform an eigenmode search.""" self.set_up_for_eigenmode_search() stoprot = False # Load the relevant parameters from control f_rot_min = self.control.get_parameter('f_rot_min') f_rot_max = self.control.get_parameter('f_rot_max') trial_angle = self.control.get_parameter('trial_angle') max_num_rot = self.control.get_parameter('max_num_rot') extrapolate = self.control.get_parameter('extrapolate_forces') while not stoprot: if self.forces1E is None: self.update_virtual_forces() else: self.update_virtual_forces(extrapolated_forces=True) self.forces1A = self.forces1 self.update_curvature() f_rot_A = self.get_rotational_force() # Pre rotation stop criteria if norm(f_rot_A) <= f_rot_min: self.log(f_rot_A, None) stoprot = True else: n_A = self.eigenmode rot_unit_A = normalize(f_rot_A) # Get the curvature and its derivative c0 = self.get_curvature() c0d = np.vdot((self.forces2 - self.forces1), rot_unit_A) / \ self.dR # Trial rotation (no need to store the curvature) # NYI variable trial angles from [3] n_B, rot_unit_B = rotate_vectors(n_A, rot_unit_A, trial_angle) self.eigenmode = n_B self.update_virtual_forces() self.forces1B = self.forces1 # Get the curvature's derivative c1d = np.vdot((self.forces2 - self.forces1), rot_unit_B) / \ self.dR # Calculate the Fourier coefficients a1 = c0d * cos(2 * trial_angle) - c1d / \ (2 * sin(2 * trial_angle)) b1 = 0.5 * c0d a0 = 2 * (c0 - a1) # Estimate the rotational angle rotangle = atan(b1 / a1) / 2.0 # Make sure that you didn't find a maximum cmin = a0 / 2.0 + a1 * cos(2 * rotangle) + \ b1 * sin(2 * rotangle) if c0 < cmin: rotangle += pi / 2.0 # Rotate into the (hopefully) lowest eigenmode # NYI Conjugate gradient rotation n_min, dummy = rotate_vectors(n_A, rot_unit_A, rotangle) self.update_eigenmode(n_min) # Store the curvature estimate instead of the old curvature self.update_curvature(cmin) self.log(f_rot_A, rotangle) # Force extrapolation scheme from [4] if extrapolate: self.forces1E = sin(trial_angle - rotangle) / \ sin(trial_angle) * self.forces1A + sin(rotangle) / \ sin(trial_angle) * self.forces1B + \ (1 - cos(rotangle) - sin(rotangle) * \ tan(trial_angle / 2.0)) * self.forces0 else: self.forces1E = None # Post rotation stop criteria if not stoprot: if self.control.get_counter('rotcount') >= max_num_rot: stoprot = True elif norm(f_rot_A) <= f_rot_max: stoprot = True def log(self, f_rot_A, angle): """Log each rotational step.""" # NYI Log for the trial angle if self.logfile is not None: if angle: l = 'DIM:ROT: %7d %9d %9.4f %9.4f %9.4f\n' % \ (self.control.get_counter('optcount'), self.control.get_counter('rotcount'), self.get_curvature(), degrees(angle), norm(f_rot_A)) else: l = 'DIM:ROT: %7d %9d %9.4f %9s %9.4f\n' % \ (self.control.get_counter('optcount'), self.control.get_counter('rotcount'), self.get_curvature(), '---------', norm(f_rot_A)) self.logfile.write(l) self.logfile.flush() def get_rotational_force(self): """Calculate the rotational force that acts on the dimer.""" rot_force = perpendicular_vector((self.forces1 - self.forces2), self.eigenmode) / (2.0 * self.dR) if self.basis is not None: if len(self.basis) == len(self.atoms) and len(self.basis[0]) == \ 3 and isinstance(self.basis[0][0], float): rot_force = perpendicular_vector(rot_force, self.basis) else: for base in self.basis: rot_force = perpendicular_vector(rot_force, base) return rot_force def update_curvature(self, curv = None): """Update the curvature in the MinModeAtoms object.""" if curv: self.curvature = curv else: self.curvature = np.vdot((self.forces2 - self.forces1), self.eigenmode) / (2.0 * self.dR) def update_eigenmode(self, eigenmode): """Update the eigenmode in the MinModeAtoms object.""" self.eigenmode = eigenmode self.update_virtual_positions() self.control.increment_counter('rotcount') def get_eigenmode(self): """Returns the current eigenmode.""" return self.eigenmode def get_curvature(self): """Returns the curvature along the current eigenmode.""" return self.curvature def get_control(self): """Return the control object.""" return self.control def update_center_forces(self): """Get the forces at the center of the dimer.""" self.atoms.set_positions(self.pos0) self.forces0 = self.atoms.get_forces(real = True) self.energy0 = self.atoms.get_potential_energy() def update_virtual_forces(self, extrapolated_forces = False): """Get the forces at the endpoints of the dimer.""" self.update_virtual_positions() # Estimate / Calculate the forces at pos1 if extrapolated_forces: self.forces1 = self.forces1E.copy() else: self.forces1 = self.atoms.get_forces(real = True, pos = self.pos1) # Estimate / Calculate the forces at pos2 if self.control.get_parameter('use_central_forces'): self.forces2 = 2 * self.forces0 - self.forces1 else: self.forces2 = self.atoms.get_forces(real = True, pos = self.pos2) def update_virtual_positions(self): """Update the end point positions.""" self.pos1 = self.pos0 + self.eigenmode * self.dR self.pos2 = self.pos0 - self.eigenmode * self.dR def set_up_for_eigenmode_search(self): """Before eigenmode search, prepare for rotation.""" self.pos0 = self.atoms.get_positions() self.update_center_forces() self.update_virtual_positions() self.control.reset_counter('rotcount') self.forces1E = None def set_up_for_optimization_step(self): """At the end of rotation, prepare for displacement of the dimer.""" self.atoms.set_positions(self.pos0) self.forces1E = None class MinModeControl: """A parent class for controlling minimum mode saddle point searches. Method specific control classes inherit this one. The only thing inheriting classes need to implement are the log() method and the *parameters* class variable with default values for ALL parameters needed by the method in question. When instantiating control classes default parameter values can be overwritten. """ parameters = {} def __init__(self, logfile = '-', eigenmode_logfile=None, **kwargs): # Overwrite the defaults with the input parameters given for key in kwargs: if not key in self.parameters.keys(): e = 'Invalid parameter >>%s<< with value >>%s<< in %s' % \ (key, str(kwargs[key]), self.__class__.__name__) raise ValueError(e) else: self.set_parameter(key, kwargs[key], log = False) # Initialize the log files self.initialize_logfiles(logfile, eigenmode_logfile) # Initialize the counters self.counters = {'forcecalls': 0, 'rotcount': 0, 'optcount': 0} self.log() def initialize_logfiles(self, logfile=None, eigenmode_logfile=None): """Set up the log files.""" # Set up the regular logfile if rank != 0: logfile = None elif isinstance(logfile, basestring): if logfile == '-': logfile = sys.stdout else: logfile = open(logfile, 'a') self.logfile = logfile # Set up the eigenmode logfile if eigenmode_logfile: if rank != 0: eigenmode_logfile = None elif isinstance(eigenmode_logfile, basestring): if eigenmode_logfile == '-': eigenmode_logfile = sys.stdout else: eigenmode_logfile = open(eigenmode_logfile, 'a') self.eigenmode_logfile = eigenmode_logfile def log(self, parameter=None): """Log the parameters of the eigenmode search.""" pass def set_parameter(self, parameter, value, log=True): """Change a parameter's value.""" if not parameter in self.parameters.keys(): e = 'Invalid parameter >>%s<< with value >>%s<<' % \ (parameter, str(value)) raise ValueError(e) self.parameters[parameter] = value if log: self.log(parameter) def get_parameter(self, parameter): """Returns the value of a parameter.""" if not parameter in self.parameters.keys(): e = 'Invalid parameter >>%s<<' % \ (parameter) raise ValueError(e) return self.parameters[parameter] def get_logfile(self): """Returns the log file.""" return self.logfile def get_eigenmode_logfile(self): """Returns the eigenmode log file.""" return self.eigenmode_logfile def get_counter(self, counter): """Returns a given counter.""" return self.counters[counter] def increment_counter(self, counter): """Increment a given counter.""" self.counters[counter] += 1 def reset_counter(self, counter): """Reset a given counter.""" self.counters[counter] = 0 def reset_all_counters(self): """Reset all counters.""" for key in self.counters.keys(): self.counters[key] = 0 class DimerControl(MinModeControl): """A class that takes care of the parameters needed for a Dimer search. Parameters: eigenmode_method: str The name of the eigenmode search method. f_rot_min: float Size of the rotational force under which no rotation will be performed. f_rot_max: float Size of the rotational force under which only one rotation will be performed. max_num_rot: int Maximum number of rotations per optimizer step. trial_angle: float Trial angle for the finite difference estimate of the rotational angle in radians. trial_trans_step: float Trial step size for the MinModeTranslate optimizer. maximum_translation: float Maximum step size and forced step size when the curvature is still positive for the MinModeTranslate optimizer. cg_translation: bool Conjugate Gradient for the MinModeTranslate optimizer. use_central_forces: bool Only calculate the forces at one end of the dimer and extrapolate the forces to the other. dimer_separation: float Separation of the dimer's images. initial_eigenmode_method: str How to construct the initial eigenmode of the dimer. If an eigenmode is given when creating the MinModeAtoms object, this will be ignored. Possible choices are: 'gauss' and 'displacement' extrapolate_forces: bool When more than one rotation is performed, an extrapolation scheme can be used to reduce the number of force evaluations. displacement_method: str How to displace the atoms. Possible choices are 'gauss' and 'vector'. gauss_std: float The standard deviation of the gauss curve used when doing random displacement. order: int How many lowest eigenmodes will be inverted. mask: list of bool Which atoms will be moved during displacement. displacement_center: int or [float, float, float] The center of displacement, nearby atoms will be displaced. displacement_radius: float When choosing which atoms to displace with the *displacement_center* keyword, this decides how many nearby atoms to displace. number_of_displacement_atoms: int The amount of atoms near *displacement_center* to displace. """ # Default parameters for the Dimer eigenmode search parameters = {'eigenmode_method': 'dimer', 'f_rot_min': 0.1, 'f_rot_max': 1.00, 'max_num_rot': 1, 'trial_angle': pi / 4.0, 'trial_trans_step': 0.001, 'maximum_translation': 0.1, 'cg_translation': True, 'use_central_forces': True, 'dimer_separation': 0.0001, 'initial_eigenmode_method': 'gauss', 'extrapolate_forces': False, 'displacement_method': 'gauss', 'gauss_std': 0.1, 'order': 1, 'mask': None, # NB mask should not be a "parameter" 'displacement_center': None, 'displacement_radius': None, 'number_of_displacement_atoms': None} # NB: Can maybe put this in EigenmodeSearch and MinModeControl def log(self, parameter=None): """Log the parameters of the eigenmode search.""" if self.logfile is not None: if parameter is not None: l = 'DIM:CONTROL: Updated Parameter: %s = %s\n' % (parameter, str(self.get_parameter(parameter))) else: l = 'MINMODE:METHOD: Dimer\n' l += 'DIM:CONTROL: Search Parameters:\n' l += 'DIM:CONTROL: ------------------\n' for key in self.parameters: l += 'DIM:CONTROL: %s = %s\n' % (key, str(self.get_parameter(key))) l += 'DIM:CONTROL: ------------------\n' l += 'DIM:ROT: OPT-STEP ROT-STEP CURVATURE ROT-ANGLE ' + \ 'ROT-FORCE\n' self.logfile.write(l) self.logfile.flush() class MinModeAtoms: """Wrapper for Atoms with information related to minimum mode searching. Contains an Atoms object and pipes all unknown function calls to that object. Other information that is stored in this object are the estimate for the lowest eigenvalue, *curvature*, and its corresponding eigenmode, *eigenmode*. Furthermore, the original configuration of the Atoms object is stored for use in multiple minimum mode searches. The forces on the system are modified by inverting the component along the eigenmode estimate. This eventually brings the system to a saddle point. Parameters: atoms : Atoms object A regular Atoms object control : MinModeControl object Contains the parameters necessary for the eigenmode search. If no control object is supplied a default DimerControl will be created and used. mask: list of bool Determines which atoms will be moved when calling displace() random_seed: int The seed used for the random number generator. Defaults to modified version the current time. References: [1]_ [2]_ [3]_ [4]_ .. [1] Henkelman and Jonsson, JCP 111, 7010 (1999) .. [2] Olsen, Kroes, Henkelman, Arnaldsson, and Jonsson, JCP 121, 9776 (2004). .. [3] Heyden, Bell, and Keil, JCP 123, 224101 (2005). .. [4] Kastner and Sherwood, JCP 128, 014106 (2008). """ def __init__(self, atoms, control=None, eigenmodes=None, random_seed=None, **kwargs): self.minmode_init = True self.atoms = atoms # Initialize to None to avoid strange behaviour due to __getattr__ self.eigenmodes = eigenmodes self.curvatures = None if control is None: self.control = DimerControl(**kwargs) w = 'Missing control object in ' + self.__class__.__name__ + \ '. Using default: DimerControl()' warnings.warn(w, UserWarning) if self.control.logfile is not None: self.control.logfile.write('DIM:WARN: ' + w + '\n') self.control.logfile.flush() else: self.control = control logfile = self.control.get_logfile() mlogfile = self.control.get_eigenmode_logfile() for key in kwargs: if key == 'logfile': logfile = kwargs[key] elif key == 'eigenmode_logfile': mlogfile = kwargs[key] else: self.control.set_parameter(key, kwargs[key]) self.control.initialize_logfiles(logfile = logfile, eigenmode_logfile = mlogfile) # Seed the randomness if random_seed is None: t = time.time() if size > 1: t = world.sum(t) / float(size) # Harvest the latter part of the current time random_seed = int(('%30.9f' % t)[-9:]) self.random_state = np.random.RandomState(random_seed) # Check the order self.order = self.control.get_parameter('order') # Construct the curvatures list self.curvatures = [100.0] * self.order # Save the original state of the atoms. self.atoms0 = self.atoms.copy() self.save_original_forces() # Get a reference to the log files self.logfile = self.control.get_logfile() self.mlogfile = self.control.get_eigenmode_logfile() def save_original_forces(self, force_calculation=False): """Store the forces (and energy) of the original state.""" # NB: Would be nice if atoms.copy() took care of this. if self.calc is not None: # Hack because some calculators do not have calculation_required if (hasattr(self.calc, 'calculation_required') \ and not self.calc.calculation_required(self.atoms, ['energy', 'forces'])) or force_calculation: calc = SinglePointCalculator( self.atoms0, energy=self.atoms.get_potential_energy(), forces=self.atoms.get_forces()) self.atoms0.set_calculator(calc) def initialize_eigenmodes(self, method=None, eigenmodes=None, \ gauss_std=None): """Make an initial guess for the eigenmode.""" if eigenmodes is None: pos = self.get_positions() old_pos = self.get_original_positions() if method == None: method = \ self.control.get_parameter('initial_eigenmode_method') if method.lower() == 'displacement' and (pos - old_pos).any(): eigenmode = normalize(pos - old_pos) elif method.lower() == 'gauss': self.displace(log = False, gauss_std = gauss_std, method = method) new_pos = self.get_positions() eigenmode = normalize(new_pos - pos) self.set_positions(pos) else: e = 'initial_eigenmode must use either \'gauss\' or ' + \ '\'displacement\', if the latter is used the atoms ' + \ 'must have moved away from the original positions.' + \ 'You have requested \'%s\'.' % method raise NotImplementedError(e) # NYI eigenmodes = [eigenmode] # Create random higher order mode guesses if self.order > 1: if len(eigenmodes) == 1: for k in range(1, self.order): pos = self.get_positions() self.displace(log = False, gauss_std = gauss_std, method = method) new_pos = self.get_positions() eigenmode = normalize(new_pos - pos) self.set_positions(pos) eigenmodes += [eigenmode] self.eigenmodes = eigenmodes # Ensure that the higher order mode guesses are all orthogonal if self.order > 1: for k in range(self.order): self.ensure_eigenmode_orthogonality(k) self.eigenmode_log() # NB maybe this name might be confusing in context to # calc.calculation_required() def calculation_required(self): """Check if a calculation is required.""" return self.minmode_init or self.check_atoms != self.atoms def calculate_real_forces_and_energies(self, **kwargs): """Calculate and store the potential energy and forces.""" if self.minmode_init: self.minmode_init = False self.initialize_eigenmodes(eigenmodes = self.eigenmodes) self.rotation_required = True self.forces0 = self.atoms.get_forces(**kwargs) self.energy0 = self.atoms.get_potential_energy() self.control.increment_counter('forcecalls') self.check_atoms = self.atoms.copy() def get_potential_energy(self): """Return the potential energy.""" if self.calculation_required(): self.calculate_real_forces_and_energies() return self.energy0 def get_forces(self, real=False, pos=None, **kwargs): """Return the forces, projected or real.""" if self.calculation_required() and pos is None: self.calculate_real_forces_and_energies(**kwargs) if real and pos is None: return self.forces0 elif real and pos is not None: old_pos = self.atoms.get_positions() self.atoms.set_positions(pos) forces = self.atoms.get_forces() self.control.increment_counter('forcecalls') self.atoms.set_positions(old_pos) return forces else: if self.rotation_required: self.find_eigenmodes(order = self.order) self.eigenmode_log() self.rotation_required = False self.control.increment_counter('optcount') return self.get_projected_forces() def ensure_eigenmode_orthogonality(self, order): mode = self.eigenmodes[order - 1].copy() for k in range(order - 1): mode = perpendicular_vector(mode, self.eigenmodes[k]) self.eigenmodes[order - 1] = normalize(mode) def find_eigenmodes(self, order=1): """Launch eigenmode searches.""" if self.control.get_parameter('eigenmode_method').lower() != 'dimer': e = 'Only the Dimer control object has been implemented.' raise NotImplementedError(e) # NYI for k in range(order): if k > 0: self.ensure_eigenmode_orthogonality(k + 1) search = DimerEigenmodeSearch(self, self.control, \ eigenmode = self.eigenmodes[k], basis = self.eigenmodes[:k]) search.converge_to_eigenmode() search.set_up_for_optimization_step() self.eigenmodes[k] = search.get_eigenmode() self.curvatures[k] = search.get_curvature() def get_projected_forces(self, pos=None): """Return the projected forces.""" if pos is not None: forces = self.get_forces(real = True, pos = pos).copy() else: forces = self.forces0.copy() # Loop through all the eigenmodes # NB: Can this be done with a linear combination, instead? for k, mode in enumerate(self.eigenmodes): # NYI This If statement needs to be overridable in the control if self.get_curvature(order = k) > 0.0 and self.order == 1: forces = -parallel_vector(forces, mode) else: forces -= 2 * parallel_vector(forces, mode) return forces def restore_original_positions(self): """Restore the MinModeAtoms object positions to the original state.""" self.atoms.set_positions(self.get_original_positions()) def get_barrier_energy(self): """The energy difference between the current and original states""" try: original_energy = self.get_original_potential_energy() dimer_energy = self.get_potential_energy() return dimer_energy - original_energy except RuntimeError: w = 'The potential energy is not available, without further ' + \ 'calculations, most likely at the original state.' warnings.warn(w, UserWarning) return np.nan def get_control(self): """Return the control object.""" return self.control def get_curvature(self, order='max'): """Return the eigenvalue estimate.""" if order == 'max': return max(self.curvatures) else: return self.curvatures[order - 1] def get_eigenmode(self, order=1): """Return the current eigenmode guess.""" return self.eigenmodes[order - 1] def get_atoms(self): """Return the unextended Atoms object.""" return self.atoms def set_atoms(self, atoms): """Set a new Atoms object""" self.atoms = atoms def set_eigenmode(self, eigenmode, order=1): """Set the eigenmode guess.""" self.eigenmodes[order - 1] = eigenmode def set_curvature(self, curvature, order=1): """Set the eigenvalue estimate.""" self.curvatures[order - 1] = curvature # Pipe all the stuff from Atoms that is not overwritten. # Pipe all requests for get_original_* to self.atoms0. def __getattr__(self, attr): """Return any value of the Atoms object""" if 'original' in attr.split('_'): attr = attr.replace('_original_', '_') return getattr(self.atoms0, attr) else: return getattr(self.atoms, attr) def __len__(self): return len(self.atoms) def displace(self, displacement_vector=None, mask=None, method=None, displacement_center=None, radius=None, number_of_atoms=None, gauss_std=None, mic=True, log=True): """Move the atoms away from their current position. This is one of the essential parts of minimum mode searches. The parameters can all be set in the control object and overwritten when this method is run, apart from *displacement_vector*. It is preferred to modify the control values rather than those here in order for the correct ones to show up in the log file. *method* can be either 'gauss' for random displacement or 'vector' to perform a predefined displacement. *gauss_std* is the standard deviation of the gauss curve that is used for random displacement. *displacement_center* can be either the number of an atom or a 3D position. It must be accompanied by a *radius* (all atoms within it will be displaced) or a *number_of_atoms* which decides how many of the closest atoms will be displaced. *mic* controls the usage of the Minimum Image Convention. If both *mask* and *displacement_center* are used, the atoms marked as False in the *mask* will not be affected even though they are within reach of the *displacement_center*. The parameters priority order: 1) displacement_vector 2) mask 3) displacement_center (with radius and/or number_of_atoms) If both *radius* and *number_of_atoms* are supplied with *displacement_center*, only atoms that fulfill both criteria will be displaced. """ # Fetch the default values from the control if mask is None: mask = self.control.get_parameter('mask') if method is None: method = self.control.get_parameter('displacement_method') if gauss_std is None: gauss_std = self.control.get_parameter('gauss_std') if displacement_center is None: displacement_center = \ self.control.get_parameter('displacement_center') if radius is None: radius = self.control.get_parameter('displacement_radius') if number_of_atoms is None: number_of_atoms = \ self.control.get_parameter('number_of_displacement_atoms') # Check for conflicts if displacement_vector is not None and method.lower() != 'vector': e = 'displacement_vector was supplied but a different method ' + \ '(\'%s\') was chosen.\n' % str(method) raise ValueError(e) elif displacement_vector is None and method.lower() == 'vector': e = 'A displacement_vector must be supplied when using ' + \ 'method = \'%s\'.\n' % str(method) raise ValueError(e) elif displacement_center is not None and radius is None and \ number_of_atoms is None: e = 'When displacement_center is chosen, either radius or ' + \ 'number_of_atoms must be supplied.\n' raise ValueError(e) # Set up the center of displacement mask (c_mask) if displacement_center is not None: c = displacement_center # Construct a distance list # The center is an atom if isinstance(c, int): # Parse negative indexes c = displacement_center % len(self) d = [(k, self.get_distance(k, c, mic = mic)) for k in \ range(len(self))] # The center is a position in 3D space elif len(c) == 3 and [type(c_k) for c_k in c] == [float]*3: # NB: MIC is not considered. d = [(k, norm(self.get_positions()[k] - c)) \ for k in range(len(self))] else: e = 'displacement_center must be either the number of an ' + \ 'atom in MinModeAtoms object or a 3D position ' + \ '(3-tuple of floats).' raise ValueError(e) # Set up the mask if radius is not None: r_mask = [dist[1] < radius for dist in d] else: r_mask = [True for _ in self] if number_of_atoms is not None: d_sorted = [n[0] for n in sorted(d, key = lambda k: k[1])] n_nearest = d_sorted[:number_of_atoms] n_mask = [k in n_nearest for k in range(len(self))] else: n_mask = [True for _ in self] # Resolve n_mask / r_mask conflicts c_mask = [n_mask[k] and r_mask[k] for k in range(len(self))] else: c_mask = None # Set up a True mask if there is no mask supplied if mask is None: mask = [True for _ in self] if c_mask is None: w = 'It was not possible to figure out which atoms to ' + \ 'displace, Will try to displace all atoms.\n' warnings.warn(w, UserWarning) if self.logfile is not None: self.logfile.write('MINMODE:WARN: ' + w + '\n') self.logfile.flush() # Resolve mask / c_mask conflicts if c_mask is not None: mask = [mask[k] and c_mask[k] for k in range(len(self))] if displacement_vector is None: displacement_vector = [] for k in range(len(self)): if mask[k]: diff_line = [] for _ in range(3): if method.lower() == 'gauss': if not gauss_std: gauss_std = \ self.control.get_parameter('gauss_std') diff = self.random_state.normal(0.0, gauss_std) else: e = 'Invalid displacement method >>%s<<' % \ str(method) raise ValueError(e) diff_line.append(diff) displacement_vector.append(diff_line) else: displacement_vector.append([0.0]*3) # Remove displacement of masked atoms for k in range(len(mask)): if not mask[k]: displacement_vector[k] = [0.0]*3 # Perform the displacement and log it if log: pos0 = self.get_positions() self.set_positions(self.get_positions() + displacement_vector) if log: parameters = {'mask': mask, 'displacement_method': method, 'gauss_std': gauss_std, 'displacement_center': displacement_center, 'displacement_radius': radius, 'number_of_displacement_atoms': number_of_atoms} self.displacement_log(self.get_positions() - pos0, parameters) def eigenmode_log(self): """Log the eigenmodes (eigenmode estimates)""" if self.mlogfile is not None: l = 'MINMODE:MODE: Optimization Step: %i\n' % \ (self.control.get_counter('optcount')) for m_num, mode in enumerate(self.eigenmodes): l += 'MINMODE:MODE: Order: %i\n' % m_num for k in range(len(mode)): l += 'MINMODE:MODE: %7i %15.8f %15.8f %15.8f\n' % (k, mode[k][0], mode[k][1], mode[k][2]) self.mlogfile.write(l) self.mlogfile.flush() def displacement_log(self, displacement_vector, parameters): """Log the displacement""" if self.logfile is not None: lp = 'MINMODE:DISP: Parameters, different from the control:\n' mod_para = False for key in parameters: if parameters[key] != self.control.get_parameter(key): lp += 'MINMODE:DISP: %s = %s\n' % (str(key), str(parameters[key])) mod_para = True if mod_para: l = lp else: l = '' for k in range(len(displacement_vector)): l += 'MINMODE:DISP: %7i %15.8f %15.8f %15.8f\n' % (k, displacement_vector[k][0], displacement_vector[k][1], displacement_vector[k][2]) self.logfile.write(l) self.logfile.flush() def summarize(self): """Summarize the Minimum mode search.""" if self.logfile is None: logfile = sys.stdout else: logfile = self.logfile c = self.control label = 'MINMODE:SUMMARY: ' l = label + '-------------------------\n' l += label + 'Barrier: %16.4f\n' % self.get_barrier_energy() l += label + 'Curvature: %14.4f\n' % self.get_curvature() l += label + 'Optimizer steps: %8i\n' % c.get_counter('optcount') l += label + 'Forcecalls: %13i\n' % c.get_counter('forcecalls') l += label + '-------------------------\n' logfile.write(l) class MinModeTranslate(Optimizer): """An Optimizer specifically tailored to minimum mode following.""" def __init__(self, atoms, logfile='-', trajectory=None): Optimizer.__init__(self, atoms, None, logfile, trajectory) self.control = atoms.get_control() # Make a header for the log if self.logfile is not None: l = '' if isinstance(self.control, DimerControl): l = 'MinModeTranslate: STEP TIME ENERGY ' + \ 'MAX-FORCE STEPSIZE CURVATURE ROT-STEPS\n' self.logfile.write(l) self.logfile.flush() # Load the relevant parameters from control self.cg_on = self.control.get_parameter('cg_translation') self.trial_step = self.control.get_parameter('trial_trans_step') self.max_step = self.control.get_parameter('maximum_translation') # Start conjugate gradient if self.cg_on: self.cg_init = True def initialize(self): """Set initial values.""" self.r0 = None self.f0 = None def run(self, fmax=0.05, steps=100000000): """Run structure optimization algorithm. This method will return when the forces on all individual atoms are less than *fmax* or when the number of steps exceeds *steps*. """ self.fmax = fmax step = 0 while step < steps: f = self.atoms.get_forces() self.call_observers() if self.converged(f): self.log(f, None) return self.step(f) self.nsteps += 1 step += 1 def step(self, f): """Perform the optimization step.""" atoms = self.atoms r = atoms.get_positions() curv = atoms.get_curvature() f0p = f.copy() r0 = r.copy() direction = f0p.copy() if self.cg_on: direction = self.get_cg_direction(direction) direction = normalize(direction) if curv > 0.0: step = direction * self.max_step else: r0t = r0 + direction * self.trial_step f0tp = self.atoms.get_projected_forces(r0t) F = np.vdot((f0tp + f0p), direction) / 2.0 C = np.vdot((f0tp - f0p), direction) / self.trial_step step = ( -F / C + self.trial_step / 2.0 ) * direction if norm(step) > self.max_step: step = direction * self.max_step self.log(f0p, norm(step)) atoms.set_positions(r + step) self.f0 = f.flat.copy() self.r0 = r.flat.copy() def get_cg_direction(self, direction): """Apply the Conjugate Gradient algorithm to the step direction.""" if self.cg_init: self.cg_init = False self.direction_old = direction.copy() self.cg_direction = direction.copy() old_norm = np.vdot(self.direction_old, self.direction_old) # Polak-Ribiere Conjugate Gradient if old_norm != 0.0: betaPR = np.vdot(direction, (direction - self.direction_old)) / \ old_norm else: betaPR = 0.0 if betaPR < 0.0: betaPR = 0.0 self.cg_direction = direction + self.cg_direction * betaPR self.direction_old = direction.copy() return self.cg_direction.copy() def log(self, f, stepsize): """Log each step of the optimization.""" if self.logfile is not None: T = time.localtime() e = self.atoms.get_potential_energy() fmax = sqrt((f**2).sum(axis = 1).max()) rotsteps = self.atoms.control.get_counter('rotcount') curvature = self.atoms.get_curvature() l = '' if stepsize: if isinstance(self.control, DimerControl): l = '%s: %4d %02d:%02d:%02d %15.6f %12.4f %12.6f ' \ '%12.6f %10d\n' % ('MinModeTranslate', self.nsteps, T[3], T[4], T[5], e, fmax, stepsize, curvature, rotsteps) else: if isinstance(self.control, DimerControl): l = '%s: %4d %02d:%02d:%02d %15.6f %12.4f %s ' \ '%12.6f %10d\n' % ('MinModeTranslate', self.nsteps, T[3], T[4], T[5], e, fmax, ' --------', curvature, rotsteps) self.logfile.write(l) self.logfile.flush() def read_eigenmode(mlog, index = -1): """Read an eigenmode. To access the pre optimization eigenmode set index = 'null'. """ if isinstance(mlog, basestring): f = open(mlog, 'r') else: f = mlog lines = f.readlines() # Detect the amount of atoms and iterations k = 2 while lines[k].split()[1].lower() not in ['optimization', 'order']: k += 1 n = k - 2 n_itr = (len(lines) // (n + 1)) - 2 # Locate the correct image. if isinstance(index, basestring): if index.lower() == 'null': i = 0 else: i = int(index) + 1 else: if index >= 0: i = index + 1 else: if index < -n_itr - 1: raise IndexError('list index out of range') else: i = index mode = np.ndarray(shape = (n, 3), dtype = float) k_atom = 0 for k in range(1, n + 1): line = lines[i * (n + 1) + k].split() for k_dim in range(3): mode[k_atom][k_dim] = float(line[k_dim + 2]) k_atom += 1 return mode # Aliases DimerAtoms = MinModeAtoms DimerTranslate = MinModeTranslate ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/eos.py000066400000000000000000000336021316323560300217030ustar00rootroot00000000000000# -*- coding: utf-8 -*- from __future__ import print_function, division from ase.units import kJ from ase.utils import basestring import numpy as np try: from scipy.optimize import curve_fit except ImportError: try: from scipy.optimize import leastsq # this part comes from # http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/minpack.py def _general_function(params, xdata, ydata, function): return function(xdata, *params) - ydata # end of this part def curve_fit(f, x, y, p0): func = _general_function args = (x, y, f) # this part comes from # http://projects.scipy.org/scipy/browser/trunk/scipy/optimize/minpack.py popt, pcov, infodict, mesg, ier = leastsq(func, p0, args=args, full_output=1) if ier not in [1, 2, 3, 4]: raise RuntimeError("Optimal parameters not found: " + mesg) # end of this part return popt, pcov except ImportError: curve_fit = None eos_names = ['sj', 'taylor', 'murnaghan', 'birch', 'birchmurnaghan', 'pouriertarantola', 'vinet', 'antonschmidt', 'p3'] def taylor(V, E0, beta, alpha, V0): 'Taylor Expansion up to 3rd order about V0' E = E0 + beta / 2 * (V - V0)**2 / V0 + alpha / 6 * (V - V0)**3 / V0 return E def murnaghan(V, E0, B0, BP, V0): 'From PRB 28,5480 (1983' E = E0 + B0 * V / BP * (((V0 / V)**BP) / (BP - 1) + 1) - V0 * B0 / (BP - 1) return E def birch(V, E0, B0, BP, V0): """ From Intermetallic compounds: Principles and Practice, Vol. I: Principles Chapter 9 pages 195-210 by M. Mehl. B. Klein, D. Papaconstantopoulos paper downloaded from Web case where n=0 """ E = (E0 + 9 / 8 * B0 * V0 * ((V0 / V)**(2 / 3) - 1)**2 + 9 / 16 * B0 * V0 * (BP - 4) * ((V0 / V)**(2 / 3) - 1)**3) return E def birchmurnaghan(V, E0, B0, BP, V0): """ BirchMurnaghan equation from PRB 70, 224107 Eq. (3) in the paper. Note that there's a typo in the paper and it uses inversed expression for eta. """ eta = (V0 / V)**(1 / 3) E = E0 + 9 * B0 * V0 / 16 * (eta**2 - 1)**2 * ( 6 + BP * (eta**2 - 1) - 4 * eta**2) return E def check_birchmurnaghan(): from sympy import symbols, Rational, diff, simplify v, b, bp, v0 = symbols('v b bp v0') x = (v0 / v)**Rational(2, 3) e = 9 * b * v0 * (x - 1)**2 * (6 + bp * (x - 1) - 4 * x) / 16 print(e) B = diff(e, v, 2) * v BP = -v * diff(B, v) / b print(simplify(B.subs(v, v0))) print(simplify(BP.subs(v, v0))) def pouriertarantola(V, E0, B0, BP, V0): 'Pourier-Tarantola equation from PRB 70, 224107' eta = (V / V0)**(1 / 3) squiggle = -3 * np.log(eta) E = E0 + B0 * V0 * squiggle**2 / 6 * (3 + squiggle * (BP - 2)) return E def vinet(V, E0, B0, BP, V0): 'Vinet equation from PRB 70, 224107' eta = (V / V0)**(1 / 3) E = (E0 + 2 * B0 * V0 / (BP - 1)**2 * (2 - (5 + 3 * BP * (eta - 1) - 3 * eta) * np.exp(-3 * (BP - 1) * (eta - 1) / 2))) return E def antonschmidt(V, Einf, B, n, V0): """From Intermetallics 11, 23-32 (2003) Einf should be E_infinity, i.e. infinite separation, but according to the paper it does not provide a good estimate of the cohesive energy. They derive this equation from an empirical formula for the volume dependence of pressure, E(vol) = E_inf + int(P dV) from V=vol to V=infinity but the equation breaks down at large volumes, so E_inf is not that meaningful n should be about -2 according to the paper. I find this equation does not fit volumetric data as well as the other equtions do. """ E = B * V0 / (n + 1) * (V / V0)**(n + 1) * (np.log(V / V0) - (1 / (n + 1))) + Einf return E def p3(V, c0, c1, c2, c3): 'polynomial fit' E = c0 + c1 * V + c2 * V**2 + c3 * V**3 return E def parabola(x, a, b, c): """parabola polynomial function this function is used to fit the data to get good guesses for the equation of state fits a 4th order polynomial fit to get good guesses for was not a good idea because for noisy data the fit is too wiggly 2nd order seems to be sufficient, and guarantees a single minimum""" return a + b * x + c * x**2 class EquationOfState: """Fit equation of state for bulk systems. The following equation is used:: sjeos (default) A third order inverse polynomial fit 10.1103/PhysRevB.67.026103 :: 2 3 -1/3 E(V) = c + c t + c t + c t , t = V 0 1 2 3 taylor A third order Taylor series expansion about the minimum volume murnaghan PRB 28, 5480 (1983) birch Intermetallic compounds: Principles and Practice, Vol I: Principles. pages 195-210 birchmurnaghan PRB 70, 224107 pouriertarantola PRB 70, 224107 vinet PRB 70, 224107 antonschmidt Intermetallics 11, 23-32 (2003) p3 A third order polynomial fit Use:: eos = EquationOfState(volumes, energies, eos='murnaghan') v0, e0, B = eos.fit() eos.plot() """ def __init__(self, volumes, energies, eos='sj'): self.v = np.array(volumes) self.e = np.array(energies) if eos == 'sjeos': eos = 'sj' self.eos_string = eos self.v0 = None def fit(self): """Calculate volume, energy, and bulk modulus. Returns the optimal volume, the minimum energy, and the bulk modulus. Notice that the ASE units for the bulk modulus is eV/Angstrom^3 - to get the value in GPa, do this:: v0, e0, B = eos.fit() print(B / kJ * 1.0e24, 'GPa') """ if self.eos_string == 'sj': return self.fit_sjeos() self.func = globals()[self.eos_string] p0 = [min(self.e), 1, 1] popt, pcov = curve_fit(parabola, self.v, self.e, p0) parabola_parameters = popt # Here I just make sure the minimum is bracketed by the volumes # this if for the solver minvol = min(self.v) maxvol = max(self.v) # the minimum of the parabola is at dE/dV = 0, or 2 * c V +b =0 c = parabola_parameters[2] b = parabola_parameters[1] a = parabola_parameters[0] parabola_vmin = -b / 2 / c if not (minvol < parabola_vmin and parabola_vmin < maxvol): print('Warning the minimum volume of a fitted parabola is not in ' 'your volumes. You may not have a minimum in your dataset') # evaluate the parabola at the minimum to estimate the groundstate # energy E0 = parabola(parabola_vmin, a, b, c) # estimate the bulk modulus from Vo * E''. E'' = 2 * c B0 = 2 * c * parabola_vmin if self.eos_string == 'antonschmidt': BP = -2 else: BP = 4 initial_guess = [E0, B0, BP, parabola_vmin] # now fit the equation of state p0 = initial_guess popt, pcov = curve_fit(self.func, self.v, self.e, p0) self.eos_parameters = popt if self.eos_string == 'p3': c0, c1, c2, c3 = self.eos_parameters # find minimum E in E = c0 + c1 * V + c2 * V**2 + c3 * V**3 # dE/dV = c1+ 2 * c2 * V + 3 * c3 * V**2 = 0 # solve by quadratic formula with the positive root a = 3 * c3 b = 2 * c2 c = c1 self.v0 = (-b + np.sqrt(b**2 - 4 * a * c)) / (2 * a) self.e0 = p3(self.v0, c0, c1, c2, c3) self.B = (2 * c2 + 6 * c3 * self.v0) * self.v0 else: self.v0 = self.eos_parameters[3] self.e0 = self.eos_parameters[0] self.B = self.eos_parameters[1] return self.v0, self.e0, self.B def plot(self, filename=None, show=None, ax=None): """Plot fitted energy curve. Uses Matplotlib to plot the energy curve. Use *show=True* to show the figure and *filename='abc.png'* or *filename='abc.eps'* to save the figure to a file.""" import matplotlib.pyplot as plt if self.v0 is None: self.fit() if filename is None and show is None: show = True if ax is None: ax = plt.gca() x = np.linspace(min(self.v), max(self.v), 100) if self.eos_string == 'sj': y = self.fit0(x**-(1 / 3)) else: y = self.func(x, *self.eos_parameters) ax.plot(x, y, '-r') ax.plot(self.v, self.e, 'o') try: ax.set_xlabel(u'volume [Ã…$^3$]') ax.set_ylabel(u'energy [eV]') ax.set_title(u'%s: E: %.3f eV, V: %.3f Ã…$^3$, B: %.3f GPa' % (self.eos_string, self.e0, self.v0, self.B / kJ * 1.e24)) except ImportError: # XXX what would cause this error? LaTeX? ax.set_xlabel(u'volume [L(length)^3]') ax.set_ylabel(u'energy [E(energy)]') ax.set_title(u'%s: E: %.3f E, V: %.3f L^3, B: %.3e E/L^3' % (self.eos_string, self.e0, self.v0, self.B)) if show: plt.show() if filename is not None: fig = ax.get_figure() fig.savefig(filename) return ax def fit_sjeos(self): """Calculate volume, energy, and bulk modulus. Returns the optimal volume, the minimum energy, and the bulk modulus. Notice that the ASE units for the bulk modulus is eV/Angstrom^3 - to get the value in GPa, do this:: v0, e0, B = eos.fit() print(B / kJ * 1.0e24, 'GPa') """ fit0 = np.poly1d(np.polyfit(self.v**-(1 / 3), self.e, 3)) fit1 = np.polyder(fit0, 1) fit2 = np.polyder(fit1, 1) self.v0 = None for t in np.roots(fit1): if isinstance(t, float) and t > 0 and fit2(t) > 0: self.v0 = t**-3 break if self.v0 is None: raise ValueError('No minimum!') self.e0 = fit0(t) self.B = t**5 * fit2(t) / 9 self.fit0 = fit0 return self.v0, self.e0, self.B def calculate_eos(atoms, npoints=5, eps=0.04, trajectory=None, callback=None): """Calculate equation-of-state. atoms: Atoms object System to calculate EOS for. Must have a calculator attached. npoints: int Number of points. eps: float Variation in volume from v0*(1-eps) to v0*(1+eps). trajectory: Trjectory object or str Write configurations to a trajectory file. callback: function Called after every energy calculation. >>> from ase.build import bulk >>> from ase.calculators.emt import EMT >>> a = bulk('Cu', 'fcc', a=3.6) >>> a.calc = EMT() >>> eos = calculate_eos(a, trajectory='Cu.traj') >>> v, e, B = eos.fit() >>> a = (4 * v)**(1 / 3.0) >>> print('{0:.6f}'.format(a)) 3.589825 """ # Save original positions and cell: p0 = atoms.get_positions() c0 = atoms.get_cell() if isinstance(trajectory, basestring): from ase.io import Trajectory trajectory = Trajectory(trajectory, 'w', atoms) if trajectory is not None: trajectory.set_description({'type': 'eos', 'npoints': npoints, 'eps': eps}) try: energies = [] volumes = [] for x in np.linspace(1 - eps, 1 + eps, npoints)**(1 / 3): atoms.set_cell(x * c0, scale_atoms=True) volumes.append(atoms.get_volume()) energies.append(atoms.get_potential_energy()) if callback: callback() if trajectory is not None: trajectory.write() return EquationOfState(volumes, energies) finally: atoms.cell = c0 atoms.positions = p0 if trajectory is not None: trajectory.close() class CLICommand: short_description = 'Calculate equation of state' @staticmethod def add_arguments(parser): parser.add_argument('trajectories', nargs='+', metavar='trajectory') parser.add_argument('-p', '--plot', action='store_true') parser.add_argument('-t', '--type', default='sj') @staticmethod def run(args): from ase.io import read if not args.plot: print('# filename ' 'points volume energy bulk modulus') print('# ' ' [Ang^3] [eV] [GPa]') for name in args.trajectories: if name == '-': # Special case - used by ASE's GUI: import pickle import sys if sys.version_info[0] == 2: v, e = pickle.load(sys.stdin) else: v, e = pickle.load(sys.stdin.buffer) else: if '@' in name: index = None else: index = ':' images = read(name, index=index) v = [atoms.get_volume() for atoms in images] e = [atoms.get_potential_energy() for atoms in images] eos = EquationOfState(v, e, args.type) if args.plot: eos.plot() else: try: v0, e0, B = eos.fit() except ValueError as ex: print('{0:30}{1:2} {2}'.format(name, len(v), ex.message)) else: print('{0:30}{1:2} {2:10.3f}{3:10.3f}{4:14.3f}' .format(name, len(v), v0, e0, B / kJ * 1.0e24)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/000077500000000000000000000000001316323560300211265ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/__init__.py000066400000000000000000000033661316323560300232470ustar00rootroot00000000000000"""Functions that are important for the genetic algorithm. Shorthand for setting and getting - the raw_score - the neighbor_list - the parametrization of an atoms object. """ def set_raw_score(atoms, raw_score): """Set the raw_score of an atoms object in the atoms.info['key_value_pairs'] dictionary. Parameters ---------- atoms : Atoms object The atoms object that corresponds to this raw_score raw_score : float or int Independent calculation of how fit the candidate is. """ if 'key_value_pairs' not in atoms.info: atoms.info['key_value_pairs'] = {} atoms.info['key_value_pairs']['raw_score'] = raw_score def get_raw_score(atoms): """Gets the raw_score of the supplied atoms object. Parameters ---------- atoms : Atoms object The atoms object from which the raw_score will be returned. Returns ------- raw_score : float or int The raw_score set previously. """ return atoms.info['key_value_pairs']['raw_score'] def set_parametrization(atoms, parametrization): if 'data' not in atoms.info: atoms.info['data'] = {} atoms.info['data']['parametrization'] = parametrization def get_parametrization(atoms): if 'parametrization' in atoms.info['data']: return atoms.info['data']['parametrization'] else: raise ValueError('Trying to get the parametrization before it is set!') def set_neighbor_list(atoms, neighbor_list): if 'data' not in atoms.info: atoms.info['data'] = {} atoms.info['data']['neighborlist'] = neighbor_list def get_neighbor_list(atoms): if 'neighborlist' in atoms.info['data']: return atoms.info['data']['neighborlist'] else: return None ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/adsorbate_comparators.py000066400000000000000000000077051316323560300260670ustar00rootroot00000000000000"""Comparator objects relevant to particles with adsorbates.""" from ase import Atoms def count_ads(atoms, adsorbate): """Very naive implementation only taking into account the symbols. atoms and adsorbate should both be supplied as Atoms objects.""" syms = atoms.get_chemical_symbols() try: ads_syms = adsorbate.get_chemical_symbols() except AttributeError: # It is hopefully a string ads_syms = Atoms(adsorbate).get_chemical_symbols() counts = [] for c in ads_syms: counts.append(syms.count(c)) if len(set(counts)) == 1: return counts[0] else: raise NotImplementedError class AdsorbateCountComparator(object): """Compares the number of adsorbates on the particles and returns True if the numbers are the same, False otherwise. Parameters: adsorbate: list or string a supplied list of adsorbates or a string if only one adsorbate is possible """ def __init__(self, adsorbate): try: adsorbate + '' # It is a string (or similar) type self.adsorbate = [adsorbate] except TypeError: self.adsorbate = adsorbate def looks_like(self, a1, a2): """Does the actual comparison.""" for ads in self.adsorbate: ads = Atoms(ads) if count_ads(a1, ads) != count_ads(a2, ads): return False return True class AdsorptionSitesComparator(object): """Compares the metal atoms in the adsorption sites and returns True if less than min_diff_adsorption_sites of the sites with adsorbates consist of different atoms. Ex: a1.info['data']['adsorbates_site_atoms'] = [('Cu','Ni'),('Cu','Ni'),('Ni'),('Ni')] a2.info['data']['adsorbates_site_atoms'] = [('Cu','Ni'),('Ni','Ni', 'Ni'),('Ni'),('Ni')] will have a difference of 2: (2*('Cu','Ni')-1*('Cu','Ni')=1, 1*('Ni','Ni','Ni')=1, 2*('Ni')-2*('Ni')=0) """ def __init__(self, min_diff_adsorption_sites=2): self.min_diff_adsorption_sites = min_diff_adsorption_sites def looks_like(self, a1, a2): s = 'adsorbates_site_atoms' if not all([(s in a.info['data'] and a.info['data'][s] != []) for a in [a1, a2]]): return False counter = {} for asa in a1.info['data'][s]: t_asa = tuple(sorted(asa)) if t_asa not in counter.keys(): counter[t_asa] = 1 else: counter[t_asa] += 1 for asa in a2.info['data'][s]: t_asa = tuple(sorted(asa)) if t_asa not in counter.keys(): counter[t_asa] = -1 else: counter[t_asa] -= 1 # diffs = len([k for k, v in counter.items() if v != 0]) sumdiffs = sum([abs(v) for k, v in counter.items()]) if sumdiffs < self.min_diff_adsorption_sites: return True return False class AdsorptionMetalsComparator(object): """Compares the number of adsorbate-metal bonds and returns True if the number for a1 and a2 differs by less than the supplied parameter ``same_adsorption_number`` Ex: a1.info['data']['adsorbates_bound_to'] = {'Cu':1, 'Ni':3} a2.info['data']['adsorbates_bound_to'] = {'Cu':.5, 'Ni':3.5} will have a difference of .5 in both elements: """ def __init__(self, same_adsorption_number): self.same_adsorption_number = same_adsorption_number def looks_like(self, a1, a2): s = 'adsorbates_bound_to' if not all([(s in a.info['data'] and any(a.info['data'][s].values())) for a in [a1, a2]]): return False diffs = [a1.info['data'][s][k] - a2.info['data'][s][k] for k in a1.info['data'][s].keys()] for d in diffs: if abs(d) < self.same_adsorption_number: return True return False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/adsorbate_operators.py000066400000000000000000000645751316323560300255630ustar00rootroot00000000000000"""Adsorbate operators that adds an adsorbate to the surface of a particle or given structure, using a supplied list of sites.""" import numpy as np import random from itertools import chain from ase import Atoms, Atom from ase.build import molecule from ase.ga.offspring_creator import OffspringCreator from ase.neighborlist import NeighborList as aseNeighborList class AdsorbateOperator(OffspringCreator): """Base class for all operators that add, move or remove adsorbates. Don't use this operator directly!""" def __init__(self, adsorbate, adsorption_sites=None, num_muts=1): OffspringCreator.__init__(self, num_muts=num_muts) self.adsorbate = self.convert_adsorbate(adsorbate) self.adsorbate_set = set(self.adsorbate.get_chemical_symbols()) if adsorption_sites is None: raise NotImplementedError self.adsorption_sites = adsorption_sites self.descriptor = 'AdsorbateOperator' @classmethod def initialize_individual(cls, parent, indi=None): indi = OffspringCreator.initialize_individual(parent, indi=indi) if 'unrelaxed_adsorbates' in parent.info['data']: unrelaxed = list(parent.info['data']['unrelaxed_adsorbates']) else: unrelaxed = [] indi.info['data']['unrelaxed_adsorbates'] = unrelaxed return indi def get_new_individual(self, parents): raise NotImplementedError def add_adsorbate(self, atoms, sites_list, min_adsorbate_distance=1.5, tilt_angle=0.): """Adds the adsorbate in self.adsorbate to the supplied atoms object at the first free site in the specified sites_list. A site is free if no other adsorbates can be found in a sphere of radius min_adsorbate_distance around the chosen site. Parameters: atoms: Atoms object the atoms object that the adsorbate will be added to sites_list: list a list of dictionaries, each dictionary should be of the following form: {'height': h, 'normal': n, 'adsorbate_position': ap, 'site': si, 'surface': su} min_adsorbate_distance: float the radius of the sphere inside which no other adsorbates should be found tilt_angle: float Tilt the adsorbate with an angle (in degress) relative to the surface normal. """ i = 0 while self.is_site_occupied(atoms, sites_list[i], min_adsorbate_distance): i += 1 if i >= len(sites_list): return False site = sites_list[i] # Make the correct position height = site['height'] normal = np.array(site['normal']) pos = np.array(site['adsorbate_position']) + normal * height # Rotate the adsorbate according to the normal ads = self.adsorbate.copy() if len(ads) > 1: avg_pos = np.average(ads[1:].positions, 0) ads.rotate(avg_pos - ads[0].position, normal) pvec = np.cross(np.random.rand(3) - ads[0].position, normal) ads.rotate(tilt_angle, pvec, center=ads[0].position) ads.translate(pos - ads[0].position) atoms.extend(ads) # Setting the indices of the unrelaxed adsorbates for the cut- # relax-paste function to be executed in the calculation script. # There it should also reset the parameter to [], to indicate # that the adsorbates have been relaxed. ads_indices = sorted([len(atoms) - k - 1 for k in range(len(ads))]) atoms.info['data']['unrelaxed_adsorbates'].append(ads_indices) # site['occupied'] = 1 return True def remove_adsorbate(self, atoms, sites_list, for_move=False): """Removes an adsorbate from the atoms object at the first occupied site in sites_list. If no adsorbates can be found, one will be added instead. """ i = 0 while not self.is_site_occupied(atoms, sites_list[i], min_adsorbate_distance=0.2): # very small min_adsorbate_distance used for testing i += 1 if i >= len(sites_list): if for_move: return False print('removal not possible will add instead') return self.add_adsorbate(atoms, sites_list) # sites_list[i]['occupied'] = 0 site = sites_list[i] # Make the correct position height = site['height'] normal = np.array(site['normal']) pos = np.array(site['adsorbate_position']) + normal * height ads_ind = self.get_adsorbate_indices(atoms, pos) ads_ind.sort(reverse=True) len_ads = len(self.adsorbate) if len(ads_ind) != len_ads: print('removing other than {0}'.format(len_ads), ads_ind, pos) print(atoms.info) random.shuffle(sites_list) return self.remove_adsorbate(atoms, sites_list, for_move=for_move) # print('removing', ads_ind, [atoms[j].symbol for j in ads_ind], pos) for k in ads_ind: atoms.pop(k) return True def get_all_adsorbate_indices(self, atoms): ac = atoms.copy() ads_ind = [a.index for a in ac if a.symbol in self.adsorbate_set] mbl = 1.5 # max_bond_length nl = aseNeighborList([mbl / 2. for i in ac], skin=0.0, self_interaction=False) nl.update(ac) adsorbates = [] while len(ads_ind) != 0: i = int(ads_ind[0]) mol_ind = self._get_indices_in_adsorbate(ac, nl, i) for ind in mol_ind: if int(ind) in ads_ind: ads_ind.remove(int(ind)) adsorbates.append(sorted(mol_ind)) return adsorbates def get_adsorbate_indices(self, atoms, position): """Returns the indices of the adsorbate at the supplied position""" dmin = 1000. for a in atoms: if a.symbol in self.adsorbate_set: d = np.linalg.norm(a.position - position) if d < dmin: dmin = d ind = a.index for ads in self.get_all_adsorbate_indices(atoms): if ind in ads: return ads[:] def _get_indices_in_adsorbate(self, atoms, neighborlist, index, molecule_indices=None): """Internal recursive function that help determine adsorbate indices""" if molecule_indices is None: molecule_indices = [] mi = molecule_indices nl = neighborlist mi.append(index) neighbors, _ = nl.get_neighbors(index) for n in neighbors: if int(n) not in mi: if atoms[int(n)].symbol in self.adsorbate_set: mi = self._get_indices_in_adsorbate(atoms, nl, n, mi) return mi def is_site_occupied(self, atoms, site, min_adsorbate_distance): """Returns True if the site on the atoms object is occupied by creating a sphere of radius min_adsorbate_distance and checking that no other adsorbate is inside the sphere.""" # if site['occupied']: # return True ads = self.adsorbate_set height = site['height'] normal = np.array(site['normal']) pos = np.array(site['adsorbate_position']) + normal * height dists = [np.linalg.norm(pos - a.position) for a in atoms if a.symbol in ads] for d in dists: if d < min_adsorbate_distance: # print('under min d', d, pos) # site['occupied'] = 1 return True return False @classmethod def convert_adsorbate(cls, adsorbate): """Converts the adsorbate to an Atoms object""" if isinstance(adsorbate, Atoms): ads = adsorbate elif isinstance(adsorbate, Atom): ads = Atoms([adsorbate]) else: # Hope it is a useful string or something like that if adsorbate == 'CO': # CO otherwise comes out as OC - very inconvenient ads = molecule(adsorbate, symbols=adsorbate) else: ads = molecule(adsorbate) ads.translate(-ads[0].position) return ads class AddAdsorbate(AdsorbateOperator): """ Use this operator to add adsorbates to the surface. Supply a list of adsorption_sites of the form: [{'adsorbate_position':[.., .., ..], 'normal':surface_normal_vector, 'height':height, 'site':site, 'surface':surface}, {...}, ...] The adsorbate will be positioned at: adsorbate_position + surface_normal_vector * height The site and surface parameters are supplied to be able to keep track of which sites and surfaces are filled - useful to determine beforehand or know afterwards. If the surface is allowed to change during the algorithm run, a list of adsorbate sites should not be supplied. It would instead be generated for every case, however this has not been implemented here yet. Site and surface preference can be supplied. If both are supplied site will be considered first. Supplying a tilt angle will tilt the adsorbate with an angle relative to the standard perpendicular to the surface """ def __init__(self, adsorbate, min_adsorbate_distance=2., adsorption_sites=None, site_preference=None, surface_preference=None, tilt_angle=None, num_muts=1): AdsorbateOperator.__init__(self, adsorbate, adsorption_sites=adsorption_sites, num_muts=num_muts) self.descriptor = 'AddAdsorbate' self.min_adsorbate_distance = min_adsorbate_distance self.site_preference = site_preference self.surface_preference = surface_preference self.tilt_angle = tilt_angle or 0. self.min_inputs = 1 def get_new_individual(self, parents): """Returns the new individual as an atoms object""" f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for atom in f: indi.append(atom) ads_sites = self.adsorption_sites[:] # if self.adsorption_sites is None: # ads_sites = Ads_sites.get_sites() # else: # ads_sites = self.adsorption_sites[:] for _ in range(self.num_muts): random.shuffle(ads_sites) if self.surface_preference is not None: def func(x): return x['surface'] == self.surface_preference ads_sites.sort(key=func, reverse=True) if self.site_preference is not None: def func(x): return x['site'] == self.site_preference ads_sites.sort(key=func, reverse=True) added = self.add_adsorbate(indi, ads_sites, self.min_adsorbate_distance, tilt_angle=self.tilt_angle) if not added: break return (self.finalize_individual(indi), self.descriptor + ': {0}'.format(f.info['confid'])) class RemoveAdsorbate(AdsorbateOperator): """This operator removes an adsorbate from the surface. It works exactly (but doing the opposite) as the AddAdsorbate operator.""" def __init__(self, adsorbate, adsorption_sites=None, site_preference=None, surface_preference=None, num_muts=1): AdsorbateOperator.__init__(self, adsorbate, adsorption_sites=adsorption_sites, num_muts=num_muts) self.descriptor = 'RemoveAdsorbate' self.site_preference = site_preference self.surface_preference = surface_preference self.min_inputs = 1 def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for atom in f: indi.append(atom) ads_sites = self.adsorption_sites[:] for _ in range(self.num_muts): random.shuffle(ads_sites) if self.surface_preference is not None: def func(x): return x['surface'] == self.surface_preference ads_sites.sort(key=func, reverse=True) if self.site_preference is not None: def func(x): return x['site'] == self.site_preference ads_sites.sort(key=func, reverse=True) removed = self.remove_adsorbate(indi, ads_sites) if not removed: break return (self.finalize_individual(indi), self.descriptor + ': {0}'.format(f.info['confid'])) class MoveAdsorbate(AdsorbateOperator): """This operator removes an adsorbate from the surface and adds it again at a different position, i.e. effectively moving the adsorbate.""" def __init__(self, adsorbate, min_adsorbate_distance=2., adsorption_sites=None, site_preference_from=None, surface_preference_from=None, site_preference_to=None, surface_preference_to=None, num_muts=1): AdsorbateOperator.__init__(self, adsorbate, adsorption_sites=adsorption_sites, num_muts=num_muts) self.descriptor = 'MoveAdsorbate' self.min_adsorbate_distance = min_adsorbate_distance self.site_preference_from = site_preference_from self.surface_preference_from = surface_preference_from self.site_preference_to = site_preference_to self.surface_preference_to = surface_preference_to self.min_inputs = 1 def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for atom in f: indi.append(atom) ads_sites = self.adsorption_sites[:] for _ in range(self.num_muts): random.shuffle(ads_sites) if self.surface_preference_from is not None: def func(x): return x['surface'] == self.surface_preference_from ads_sites.sort(key=func, reverse=True) if self.site_preference_from is not None: def func(x): return x['site'] == self.site_preference_from ads_sites.sort(key=func, reverse=True) removed = self.remove_adsorbate(indi, ads_sites, for_move=True) random.shuffle(ads_sites) if self.surface_preference_to is not None: def func(x): return x['surface'] == self.surface_preference_to ads_sites.sort(key=func, reverse=True) if self.site_preference_to is not None: def func(x): return x['site'] == self.site_preference_to ads_sites.sort(key=func, reverse=True) added = self.add_adsorbate(indi, ads_sites, self.min_adsorbate_distance) if (not removed) or (not added): break return (self.finalize_individual(indi), self.descriptor + ': {0}'.format(f.info['confid'])) class CutSpliceCrossoverWithAdsorbates(AdsorbateOperator): """Crossover that cuts two particles through a plane in space and merges two halfes from different particles together. Implementation of the method presented in: D. M. Deaven and K. M. Ho, Phys. Rev. Lett., 75, 2, 288-291 (1995) It keeps the correct composition by randomly assigning elements in the new particle. If some of the atoms in the two particle halves are too close, the halves are moved away from each other perpendicular to the cutting plane. Parameters: adsorbate: str or Atoms specifies the type of adsorbate, it will not be taken into account when keeping the correct size and composition blmin: dict Dictionary of minimum distance between atomic numbers. e.g. {(28,29): 1.5} keep_composition: boolean Should the composition be the same as in the parents rotate_vectors: list A list of vectors that the part of the structure that is cut is able to rotate around, the size of rotation is set in rotate_angles. Default None meaning no rotation is performed rotate_angles: list A list of angles that the structure cut can be rotated. The vector being rotated around is set in rotate_vectors. Default None meaning no rotation is performed """ def __init__(self, adsorbate, blmin, keep_composition=True, fix_coverage=False, adsorption_sites=None, min_adsorbate_distance=2., rotate_vectors=None, rotate_angles=None): if not fix_coverage: # Trick the AdsorbateOperator class to accept no adsorption_sites adsorption_sites = [1] AdsorbateOperator.__init__(self, adsorbate, adsorption_sites=adsorption_sites) self.blmin = blmin self.keep_composition = keep_composition self.fix_coverage = fix_coverage self.min_adsorbate_distance = min_adsorbate_distance self.rvecs = rotate_vectors self.rangs = rotate_angles self.descriptor = 'CutSpliceCrossoverWithAdsorbates' self.min_inputs = 2 def get_new_individual(self, parents): f, m = parents if self.fix_coverage: # Count number of adsorbates adsorbates_in_parents = len(self.get_all_adsorbate_indices(f)) indi = self.initialize_individual(f) indi.info['data']['parents'] = [i.info['confid'] for i in parents] fna = self.get_atoms_without_adsorbates(f) mna = self.get_atoms_without_adsorbates(m) fna_geo_mid = np.average(fna.get_positions(), 0) mna_geo_mid = np.average(mna.get_positions(), 0) if self.rvecs is not None: if not isinstance(self.rvecs, list): print('rotation vectors are not a list, skipping rotation') else: vec = random.choice(self.rvecs) try: angle = random.choice(self.rangs) except TypeError: angle = self.rangs f.rotate(angle, vec, center=fna_geo_mid) vec = random.choice(self.rvecs) try: angle = random.choice(self.rangs) except TypeError: angle = self.rangs m.rotate(angle, vec, center=mna_geo_mid) theta = random.random() * 2 * np.pi # 0,2pi phi = random.random() * np.pi # 0,pi e = np.array((np.sin(phi) * np.cos(theta), np.sin(theta) * np.sin(phi), np.cos(phi))) eps = 0.0001 # Move each particle to origo with their respective geometrical # centers, without adsorbates common_mid = (fna_geo_mid + mna_geo_mid) / 2. f.translate(-common_mid) m.translate(-common_mid) off = 1 while off != 0: fna = self.get_atoms_without_adsorbates(f) mna = self.get_atoms_without_adsorbates(m) # Get the signed distance to the cutting plane # We want one side from f and the other side from m fmap = [np.dot(x, e) for x in fna.get_positions()] mmap = [-np.dot(x, e) for x in mna.get_positions()] ain = sorted([i for i in chain(fmap, mmap) if i > 0], reverse=True) aout = sorted([i for i in chain(fmap, mmap) if i < 0], reverse=True) off = len(ain) - len(fna) # Translating f and m to get the correct number of atoms # in the offspring if off < 0: # too few # move f and m away from the plane dist = abs(aout[abs(off) - 1]) + eps f.translate(e * dist) m.translate(-e * dist) elif off > 0: # too many # move f and m towards the plane dist = abs(ain[-abs(off)]) + eps f.translate(-e * dist) m.translate(e * dist) eps /= 5. fna = self.get_atoms_without_adsorbates(f) mna = self.get_atoms_without_adsorbates(m) # Determine the contributing parts from f and m tmpf, tmpm = Atoms(), Atoms() for atom in fna: if np.dot(atom.position, e) > 0: atom.tag = 1 tmpf.append(atom) for atom in mna: if np.dot(atom.position, e) < 0: atom.tag = 2 tmpm.append(atom) # Place adsorbates from f and m in tmpf and tmpm f_ads = self.get_all_adsorbate_indices(f) m_ads = self.get_all_adsorbate_indices(m) for ads in f_ads: if np.dot(f[ads[0]].position, e) > 0: for i in ads: f[i].tag = 1 tmpf.append(f[i]) for ads in m_ads: pos = m[ads[0]].position if np.dot(pos, e) < 0: # If the adsorbate will sit too close to another adsorbate # (below self.min_adsorbate_distance) do not add it. dists = [np.linalg.norm(pos - a.position) for a in tmpf if a.tag == 1] for d in dists: if d < self.min_adsorbate_distance: break else: for i in ads: m[i].tag = 2 tmpm.append(m[i]) tmpfna = self.get_atoms_without_adsorbates(tmpf) tmpmna = self.get_atoms_without_adsorbates(tmpm) # Check that the correct composition is employed if self.keep_composition: opt_sm = sorted(fna.numbers) tmpf_numbers = list(tmpfna.numbers) tmpm_numbers = list(tmpmna.numbers) cur_sm = sorted(tmpf_numbers + tmpm_numbers) # correct_by: dictionary that specifies how many # of the atom_numbers should be removed (a negative number) # or added (a positive number) correct_by = dict([(j, opt_sm.count(j)) for j in set(opt_sm)]) for n in cur_sm: correct_by[n] -= 1 correct_in = random.choice([tmpf, tmpm]) to_add, to_rem = [], [] for num, amount in correct_by.items(): if amount > 0: to_add.extend([num] * amount) elif amount < 0: to_rem.extend([num] * abs(amount)) for add, rem in zip(to_add, to_rem): tbc = [a.index for a in correct_in if a.number == rem] if len(tbc) == 0: pass ai = random.choice(tbc) correct_in[ai].number = add # Move the contributing apart if any distance is below blmin maxl = 0. for sv, min_dist in self.get_vectors_below_min_dist(tmpf + tmpm): lsv = np.linalg.norm(sv) # length of shortest vector d = [-np.dot(e, sv)] * 2 d[0] += np.sqrt(np.dot(e, sv)**2 - lsv**2 + min_dist**2) d[1] -= np.sqrt(np.dot(e, sv)**2 - lsv**2 + min_dist**2) l = sorted([abs(i) for i in d])[0] / 2. + eps if l > maxl: maxl = l tmpf.translate(e * maxl) tmpm.translate(-e * maxl) # Translate particles halves back to the center tmpf.translate(common_mid) tmpm.translate(common_mid) # Put the two parts together for atom in chain(tmpf, tmpm): indi.append(atom) if self.fix_coverage: # Remove or add adsorbates as needed adsorbates_in_child = self.get_all_adsorbate_indices(indi) diff = len(adsorbates_in_child) - adsorbates_in_parents if diff < 0: # Add adsorbates for _ in range(abs(diff)): self.add_adsorbate(indi, self.adsorption_sites, self.min_adsorbate_distance) elif diff > 0: # Remove adsorbates tbr = random.sample(adsorbates_in_child, diff) # to be removed for adsorbate_indices in sorted(tbr, reverse=True): for i in adsorbate_indices[::-1]: indi.pop(i) return (self.finalize_individual(indi), self.descriptor + ': {0} {1}'.format(f.info['confid'], m.info['confid'])) def get_numbers(self, atoms): """Returns the atomic numbers of the atoms object without adsorbates""" ac = atoms.copy() del ac[[a.index for a in ac if a.symbol in self.adsorbate_set]] return ac.numbers def get_atoms_without_adsorbates(self, atoms): ac = atoms.copy() del ac[[a.index for a in ac if a.symbol in self.adsorbate_set]] return ac def get_vectors_below_min_dist(self, atoms): """Generator function that returns each vector (between atoms) that is shorter than the minimum distance for those atom types (set during the initialization in blmin).""" ap = atoms.get_positions() an = atoms.numbers for i in range(len(atoms)): pos = atoms[i].position for j, d in enumerate([np.linalg.norm(k - pos) for k in ap[i:]]): if d == 0: continue min_dist = self.blmin[tuple(sorted((an[i], an[j + i])))] if d < min_dist: yield atoms[i].position - atoms[j + i].position, min_dist ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/convergence.py000066400000000000000000000066221316323560300240040ustar00rootroot00000000000000"""Classes that determine convergence of an algorithm run based on population stagnation or max raw score reached""" from ase.ga import get_raw_score class Convergence(object): """ Base class for all convergence object to be based on. It is necessary to supply the population instance, to be able to obtain current and former populations. """ def __init__(self, population_instance): self.pop = population_instance self.pops = {} def converged(self): """This function is called to find out if the algorithm run has converged, it should return True or False. Overwrite this in the inherited class.""" raise NotImplementedError def populate_pops(self, to_gen): """Populate the pops dictionary with how the population looked after i number of generations.""" for i in range(to_gen): if i not in self.pops.keys(): self.pops[i] = self.pop.get_population_after_generation(i) class GenerationRepetitionConvergence(Convergence): """Returns True if the latest finished population is stagnated for number_of_generations. Parameters: number_of_generations: int How many generations need to be equal before convergence. number_of_individuals: int How many of the fittest individuals should be included in the convergence test. Default is -1 meaning all in the population. max_generations: int The maximum number of generations the GA is allowed to run. Default is indefinite. """ def __init__(self, population_instance, number_of_generations, number_of_individuals=-1, max_generations=100000000): Convergence.__init__(self, population_instance) self.numgens = number_of_generations self.numindis = number_of_individuals self.maxgen = max_generations def converged(self): size = self.pop.pop_size cur_gen_num = self.pop.dc.get_generation_number(size) if cur_gen_num >= self.maxgen: return True if cur_gen_num <= 1: return False cur_pop = self.pop.get_current_population() newest = max([i.info['key_value_pairs']['generation'] for i in cur_pop[:self.numindis]]) if newest + self.numgens > cur_gen_num: return False self.populate_pops(cur_gen_num) duplicate_gens = 1 latest_pop = self.pops[cur_gen_num - 1] for i in range(cur_gen_num - 2, -1, -1): test_pop = self.pops[i] if test_pop[:self.numindis] == latest_pop[:self.numindis]: duplicate_gens += 1 if duplicate_gens >= self.numgens: return True return False class RawScoreConvergence(Convergence): """Returns True if the supplied max_raw_score has been reached""" def __init__(self, population_instance, max_raw_score, eps=1e-3): Convergence.__init__(self, population_instance) self.max_raw_score = max_raw_score self.eps = eps def converged(self): cur_pop = self.pop.get_current_population() if abs(get_raw_score(cur_pop[0]) - self.max_raw_score) <= self.eps: return True return False class NeverConvergence(object): """Test class that never converges.""" def __init__(self): pass def converged(self): return False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/cutandsplicepairing.py000066400000000000000000000200651316323560300255330ustar00rootroot00000000000000""" Implementaiton of the cut and splice paring operator described by Deaven and Ho. """ import numpy as np from ase import Atoms from random import random, randrange from ase.ga.utilities import atoms_too_close from ase.ga.utilities import atoms_too_close_two_sets from ase.ga.offspring_creator import OffspringCreator from math import pi, cos, sin class Position(object): """Position helper object. This class is just a simple representation used by the pairing operator. Parameters: position: [x, y, z] coordinate number: Atomic species at the position distance: Signed distance to the cutting plane origin: Either 0 or 1 and determines which side of the plane the position should be at. """ def __init__(self, position, number, distance, origin): self.number = number self.position = position self.distance = distance self.origin = origin def to_use(self): """ Method which tells if this position is at the right side. """ if self.distance > 0. and self.origin == 0: return True elif self.distance < 0. and self.origin == 1: return True else: return False def get_distance(point, cutting_plane, cutting_point): """ Utility method for calculating the distance from a plane to a point """ cm = cutting_point n = cutting_plane d = np.dot(point - cm, n) return d class CutAndSplicePairing(OffspringCreator): """ The Cut and splice operator implemented as described in L.B. Vilhelmsen and B. Hammer, PRL, 108, 126101 (2012) Parameters: slab: Atoms object with supercell to optimize the structure in n_top: The number of atoms to optimize blmin: Dictionary with pairs of atom numbers and the closest distance these can have to each other. """ def __init__(self, slab, n_top, blmin, verbose=False): OffspringCreator.__init__(self, verbose) self.blmin = blmin self.slab = slab self.n_top = n_top self.descriptor = 'CutAndSplicePairing' self.min_inputs = 2 def _get_pairing_(self, a1, a2, cutting_plane, cutting_point): """ Pairs configuration a1 and a2 through the defined plane. This method does not check if atoms are too close. """ N = len(a1) num = a1.numbers[:] unique_types = list(set(num)) types = dict() for u in unique_types: types[u] = sum(num == u) # Generate list of all atoms p1 = [Position(a.position, a.number, get_distance(a.position, cutting_plane, cutting_point), origin=0) for a in a1] p2 = [Position(a.position, a.number, get_distance(a.position, cutting_plane, cutting_point), origin=1) for a in a2] all_points = p1 all_points.extend(p2) # Sort these by their atomic number all_points.sort(key=lambda x: x.number, reverse=True) # For each atom type make the pairing unique_types.sort() use_total = dict() for u in unique_types: used = [] not_used = [] # The list is looked trough in # reverse order so atoms can be removed # from the list along the way. for i in reversed(range(len(all_points))): # If there are no more atoms of this type if all_points[i].number != u: break # Check if the atom should be included if all_points[i].to_use(): used.append(all_points.pop(i)) else: not_used.append(all_points.pop(i)) assert len(used) + len(not_used) == types[u] * 2 # While we have too few of the given atom type while len(used) < types[u]: used.append(not_used.pop(randrange(0, len(not_used)))) # While we have too many of the given atom type while len(used) > types[u]: index = used.index(max(used, key=lambda x: abs(x.distance))) not_used.append(used.pop(index)) use_total[u] = used n_tot = sum([len(ll) for ll in use_total.values()]) assert n_tot == N # Reorder the atoms to follow the atom types in the original order pos_new = [use_total[n].pop().position for n in num] return Atoms(numbers=num, positions=pos_new, pbc=a1.get_pbc(), cell=a1.get_cell()) def get_new_individual(self, parents): """ The method called by the user that returns the paired structure. """ f, m = parents indi = self.cross(f, m) desc = 'pairing: {0} {1}'.format(f.info['confid'], m.info['confid']) # It is ok for an operator to return None # It means that it could not make a legal offspring # within a reasonable amount of time if indi is None: return indi, desc indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid'], m.info['confid']] return self.finalize_individual(indi), desc def cross(self, a1, a2, test_dist_to_slab=True): """Crosses the two atoms objects and returns one""" if len(a1) != len(self.slab) + self.n_top: raise ValueError('Wrong size of structure to optimize') if len(a1) != len(a2): raise ValueError('The two structures do not have the same length') N = self.n_top # Only consider the atoms to optimize a1 = a1[len(a1) - N: len(a1)] a2 = a2[len(a2) - N: len(a2)] # if not np.array_equal(a1.numbers, a2.numbers): # a1.numbers.sort() # a2.numbers.sort() if not np.array_equal(a1.numbers, a2.numbers): err = 'Trying to pair two structures with different stoichiometry' raise ValueError(err) # Find the common center of the two clusters c1cm = np.average(a1.get_positions(), axis=0) c2cm = np.average(a2.get_positions(), axis=0) cutting_point = (c1cm + c2cm) / 2. counter = 0 too_close = True n_max = 1000 # Run until a valid pairing is made or 1000 pairings are tested. while too_close and counter < n_max: # Generate the cutting plane theta = pi * random() phi = 2. * pi * random() n = (cos(phi) * sin(theta), sin(phi) * sin(theta), cos(theta)) n = np.array(n) # Get the pairing top = self._get_pairing_(a1, a2, cutting_plane=n, cutting_point=cutting_point) # Check if the candidate is valid too_close = atoms_too_close(top, self.blmin) if not too_close and test_dist_to_slab: too_close = atoms_too_close_two_sets(self.slab, top, self.blmin) # Verify that the generated structure contains atoms from # both parents n1 = -1 * np.ones((N, )) n2 = -1 * np.ones((N, )) for i in range(N): for j in range(N): if np.all(a1.positions[j, :] == top.positions[i, :]): n1[i] = j break elif np.all(a2.positions[j, :] == top.positions[i, :]): n2[i] = j break assert (n1[i] > -1 and n2[i] == -1) or (n1[i] == -1 and n2[i] > -1) if not (len(n1[n1 > -1]) > 0 and len(n2[n2 > -1]) > 0): too_close = True counter += 1 if counter == n_max: return None return self.slab + top ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/data.py000066400000000000000000000417321316323560300224200ustar00rootroot00000000000000""" Objects which handle all communication with the SQLite database. """ import os from ase import Atoms from ase.ga import get_raw_score from ase.ga import set_parametrization, set_neighbor_list import ase.db def split_description(desc): """ Utility method for string splitting. """ d = desc.split(':') assert len(d) == 2, desc return d[0], d[1] def test_raw_score(atoms): """Test that raw_score can be extracted.""" err_msg = "raw_score not put in atoms.info['key_value_pairs']" assert 'raw_score' in atoms.info['key_value_pairs'], err_msg class DataConnection(object): """Class that handles all database communication. All data communication is collected in this class in order to make a decoupling of the data representation and the GA method. A new candidate must be added with one of the functions add_unrelaxed_candidate or add_relaxed_candidate this will correctly initialize a configuration id used to keep track of candidates in the database. After one of the add_*_candidate functions have been used, if the candidate is further modified or relaxed the functions add_unrelaxed_step or add_relaxed_step must be used. This way the configuration id carries through correctly. Parameters: db_file_name: Path to the ase.db data file. """ def __init__(self, db_file_name): self.db_file_name = db_file_name if not os.path.isfile(self.db_file_name): raise IOError('DB file {0} not found'.format(self.db_file_name)) self.c = ase.db.connect(self.db_file_name) self.already_returned = set() def get_number_of_unrelaxed_candidates(self): """ Returns the number of candidates not yet queued or relaxed. """ return len(self.__get_ids_of_all_unrelaxed_candidates__()) def get_an_unrelaxed_candidate(self): """ Returns a candidate ready for relaxation. """ to_get = self.__get_ids_of_all_unrelaxed_candidates__() if len(to_get) == 0: raise ValueError('No unrelaxed candidate to return') a = self.__get_latest_traj_for_confid__(to_get[0]) a.info['confid'] = to_get[0] if 'data' not in a.info: a.info['data'] = {} return a def get_all_unrelaxed_candidates(self): """Return all unrelaxed candidates, useful if they can all be evaluated quickly.""" to_get = self.__get_ids_of_all_unrelaxed_candidates__() if len(to_get) == 0: return [] res = [] for confid in to_get: a = self.__get_latest_traj_for_confid__(confid) a.info['confid'] = confid if 'data' not in a.info: a.info['data'] = {} res.append(a) return res def __get_ids_of_all_unrelaxed_candidates__(self): """ Helper method used by the two above methods. """ all_unrelaxed_ids = set([t.gaid for t in self.c.select(relaxed=0)]) all_relaxed_ids = set([t.gaid for t in self.c.select(relaxed=1)]) all_queued_ids = set([t.gaid for t in self.c.select(queued=1)]) actually_unrelaxed = [gaid for gaid in all_unrelaxed_ids if (gaid not in all_relaxed_ids and gaid not in all_queued_ids)] return actually_unrelaxed def __get_latest_traj_for_confid__(self, confid): """ Method for obtaining the latest traj file for a given configuration. There can be several traj files for one configuration if it has undergone several changes (mutations, pairings, etc.).""" allcands = list(self.c.select(gaid=confid)) allcands.sort(key=lambda x: x.mtime) # return self.get_atoms(all[-1].gaid) return self.get_atoms(allcands[-1].id) def mark_as_queued(self, a): """ Marks a configuration as queued for relaxation. """ gaid = a.info['confid'] self.c.write(None, gaid=gaid, queued=1, key_value_pairs=a.info['key_value_pairs']) # if not np.array_equal(a.numbers, self.atom_numbers): # raise ValueError('Wrong stoichiometry') # self.c.write(a, gaid=gaid, queued=1) def add_relaxed_step(self, a, find_neighbors=None, perform_parametrization=None): """After a candidate is relaxed it must be marked as such. Use this function if the candidate has already been in the database in an unrelaxed version, i.e. add_unrelaxed_candidate has been used. Neighbor list and parametrization parameters to screen candidates before relaxation can be added. Default is not to use. """ # test that raw_score can be extracted err_msg = "raw_score not put in atoms.info['key_value_pairs']" assert 'raw_score' in a.info['key_value_pairs'], err_msg # confid has already been set in add_unrelaxed_candidate gaid = a.info['confid'] if 'generation' not in a.info['key_value_pairs']: g = self.get_generation_number() a.info['key_value_pairs']['generation'] = g if find_neighbors is not None: set_neighbor_list(a, find_neighbors(a)) if perform_parametrization is not None: set_parametrization(a, perform_parametrization(a)) relax_id = self.c.write(a, relaxed=1, gaid=gaid, key_value_pairs=a.info['key_value_pairs'], data=a.info['data']) a.info['relax_id'] = relax_id def add_relaxed_candidate(self, a, find_neighbors=None, perform_parametrization=None): """After a candidate is relaxed it must be marked as such. Use this function if the candidate has *not* been in the database in an unrelaxed version, i.e. add_unrelaxed_candidate has *not* been used. Neighbor list and parametrization parameters to screen candidates before relaxation can be added. Default is not to use. """ test_raw_score(a) if 'generation' not in a.info['key_value_pairs']: g = self.get_generation_number() a.info['key_value_pairs']['generation'] = g if find_neighbors is not None: set_neighbor_list(a, find_neighbors(a)) if perform_parametrization is not None: set_parametrization(a, perform_parametrization(a)) relax_id = self.c.write(a, relaxed=1, key_value_pairs=a.info['key_value_pairs'], data=a.info['data']) self.c.update(relax_id, gaid=relax_id) a.info['confid'] = relax_id a.info['relax_id'] = relax_id def add_more_relaxed_steps(self, a_list): # This function will be removed soon as the function name indicates # that unrelaxed candidates are added beforehand print('Please use add_more_relaxed_candidates instead') self.add_more_relaxed_candidates(a_list) def add_more_relaxed_candidates(self, a_list): """Add more relaxed candidates quickly""" for a in a_list: try: a.info['key_value_pairs']['raw_score'] except KeyError: print("raw_score not put in atoms.info['key_value_pairs']") g = self.get_generation_number() # Insert gaid by getting the next available id and assuming that the # entire a_list will be written without interuption next_id = self.get_next_id() with self.c as con: for j, a in enumerate(a_list): if 'generation' not in a.info['key_value_pairs']: a.info['key_value_pairs']['generation'] = g gaid = next_id + j relax_id = con.write(a, relaxed=1, gaid=gaid, key_value_pairs=a.info['key_value_pairs'], data=a.info['data']) assert gaid == relax_id a.info['confid'] = relax_id a.info['relax_id'] = relax_id def get_next_id(self): """Get the id of the next candidate to be added to the database. This is a hacky way of obtaining the id and it only works on a sqlite database. """ con = self.c._connect() last_id = self.c.get_last_id(con.cursor()) con.close() return last_id + 1 def get_largest_in_db(self, var): return self.c.select(sort='-{0}'.format(var)).next().get(var) def add_unrelaxed_candidate(self, candidate, description): """ Adds a new candidate which needs to be relaxed. """ t, desc = split_description(description) kwargs = {'relaxed': 0, 'extinct': 0, t: 1, 'description': desc} if 'generation' not in candidate.info['key_value_pairs']: kwargs.update({'generation': self.get_generation_number()}) gaid = self.c.write(candidate, key_value_pairs=candidate.info['key_value_pairs'], data=candidate.info['data'], **kwargs) self.c.update(gaid, gaid=gaid) candidate.info['confid'] = gaid def add_unrelaxed_step(self, candidate, description): """ Add a change to a candidate without it having been relaxed. This method is typically used when a candidate has been mutated. """ # confid has already been set by add_unrelaxed_candidate gaid = candidate.info['confid'] t, desc = split_description(description) kwargs = {'relaxed': 0, 'extinct': 0, t: 1, 'description': desc, 'gaid': gaid} self.c.write(candidate, key_value_pairs=candidate.info['key_value_pairs'], data=candidate.info['data'], **kwargs) def get_number_of_atoms_to_optimize(self): """ Get the number of atoms being optimized. """ v = self.c.get(simulation_cell=True) return len(v.data.stoichiometry) def get_atom_numbers_to_optimize(self): """ Get the list of atom numbers being optimized. """ v = self.c.get(simulation_cell=True) return v.data.stoichiometry def get_slab(self): """ Get the super cell, including stationary atoms, in which the structure is being optimized. """ return self.c.get_atoms(simulation_cell=True) def get_participation_in_pairing(self): """ Get information about how many direct offsprings each candidate has, and which specific pairings have been made. This information is used for the extended fitness calculation described in L.B. Vilhelmsen et al., JACS, 2012, 134 (30), pp 12807-12816 """ entries = self.c.select(pairing=1) frequency = dict() pairs = [] for e in entries: c1, c2 = e.data['parents'] pairs.append(tuple(sorted([c1, c2]))) if c1 not in frequency.keys(): frequency[c1] = 0 frequency[c1] += 1 if c2 not in frequency.keys(): frequency[c2] = 0 frequency[c2] += 1 return (frequency, pairs) def get_all_relaxed_candidates(self, only_new=False, use_extinct=False): """ Returns all candidates that have been relaxed. Parameters: only_new: boolean (optional) Used to specify only to get candidates relaxed since last time this function was invoked. Default: False. use_extinct: boolean (optional) Set to True if the extinct key (and mass extinction) is going to be used. Default: False.""" if use_extinct: entries = self.c.select('relaxed=1,extinct=0', sort='-raw_score') else: entries = self.c.select('relaxed=1', sort='-raw_score') trajs = [] for v in entries: if only_new and v.gaid in self.already_returned: continue t = self.get_atoms(id=v.id) t.info['confid'] = v.gaid t.info['relax_id'] = v.id trajs.append(t) self.already_returned.add(v.gaid) return trajs def get_all_relaxed_candidates_after_generation(self, gen): """ Returns all candidates that have been relaxed up to and including the specified generation """ q = 'relaxed=1,extinct=0,generation<={0}' entries = self.c.select(q.format(gen)) trajs = [] for v in entries: t = self.get_atoms(id=v.id) t.info['confid'] = v.gaid t.info['relax_id'] = v.id trajs.append(t) trajs.sort(key=lambda x: get_raw_score(x), reverse=True) return trajs def get_all_candidates_in_queue(self): """ Returns all structures that are queued, but have not yet been relaxed. """ all_queued_ids = [t.gaid for t in self.c.select(queued=1)] all_relaxed_ids = [t.gaid for t in self.c.select(relaxed=1)] in_queue = [qid for qid in all_queued_ids if qid not in all_relaxed_ids] return in_queue def remove_from_queue(self, confid): """ Removes the candidate confid from the queue. """ queued_ids = self.c.select(queued=1, gaid=confid) ids = [q.id for q in queued_ids] self.c.delete(ids) def get_generation_number(self, size=None): """ Returns the current generation number, by looking at the number of relaxed individuals and comparing this number to the supplied size or population size. If all individuals in generation 3 has been relaxed it will return 4 if not all in generation 4 has been relaxed. """ if size is None: size = self.get_param('population_size') if size is None: # size = len(list(self.c.select(relaxed=0,generation=0))) return 0 lg = size g = 0 all_candidates = list(self.c.select(relaxed=1)) while lg > 0: lg = len([c for c in all_candidates if c.generation == g]) if lg >= size: g += 1 else: return g def get_atoms(self, id, add_info=True): """Return the atoms object with the specified id""" a = self.c.get_atoms(id, add_additional_information=add_info) return a def get_param(self, parameter): """ Get a parameter saved when creating the database. """ if self.c.get(1).get('data'): return self.c.get(1).data.get(parameter, None) return None def remove_old_queued(self): pass # gen = self.get_generation_number() # self.c.select() def is_duplicate(self, **kwargs): """Check if the key-value pair is already present in the database""" return len(list(self.c.select(**kwargs))) > 0 def kill_candidate(self, confid): """Sets extinct=1 in the key_value_pairs of the candidate with gaid=confid. This could be used in the mass extinction operator.""" for dct in self.c.select(gaid=confid): self.c.update(dct.id, extinct=1) class PrepareDB(object): """ Class used to initialize a database. This class is used once to setup the database and create working directories. Parameters: db_file_name: Database file to use """ def __init__(self, db_file_name, simulation_cell=None, **kwargs): if os.path.exists(db_file_name): raise IOError('DB file {0} already exists'.format(db_file_name)) self.db_file_name = db_file_name if simulation_cell is None: simulation_cell = Atoms() self.c = ase.db.connect(self.db_file_name) # Just put everything in data, # because we don't want to search the db for it. data = dict(kwargs) self.c.write(simulation_cell, data=data, simulation_cell=True) def add_unrelaxed_candidate(self, candidate, **kwargs): """ Add an unrelaxed starting candidate. """ gaid = self.c.write(candidate, origin='StartingCandidateUnrelaxed', relaxed=0, generation=0, extinct=0, **kwargs) self.c.update(gaid, gaid=gaid) candidate.info['confid'] = gaid def add_relaxed_candidate(self, candidate, **kwargs): """ Add a relaxed starting candidate. """ test_raw_score(candidate) if 'data' in candidate.info: data = candidate.info['data'] else: data = {} gaid = self.c.write(candidate, origin='StartingCandidateRelaxed', relaxed=1, generation=0, extinct=0, key_value_pairs=candidate.info['key_value_pairs'], data=data, **kwargs) self.c.update(gaid, gaid=gaid) candidate.info['confid'] = gaid ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/element_crossovers.py000066400000000000000000000127121316323560300254240ustar00rootroot00000000000000"""Crossover classes, that cross the elements in the supplied atoms objects. """ import random import numpy as np from ase.ga.offspring_creator import OffspringCreator class ElementCrossover(OffspringCreator): """Base class for all operators where the elements of the atoms objects cross. """ def __init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose): OffspringCreator.__init__(self, verbose) if not isinstance(element_pool[0], (list, np.ndarray)): self.element_pools = [element_pool] else: self.element_pools = element_pool if max_diff_elements is None: self.max_diff_elements = [None for _ in self.element_pools] elif isinstance(max_diff_elements, int): self.max_diff_elements = [max_diff_elements] else: self.max_diff_elements = max_diff_elements assert len(self.max_diff_elements) == len(self.element_pools) if min_percentage_elements is None: self.min_percentage_elements = [0 for _ in self.element_pools] elif isinstance(min_percentage_elements, (int, float)): self.min_percentage_elements = [min_percentage_elements] else: self.min_percentage_elements = min_percentage_elements assert len(self.min_percentage_elements) == len(self.element_pools) self.min_inputs = 2 def get_new_individual(self, parents): raise NotImplementedError class OnePointElementCrossover(ElementCrossover): """Crossover of the elements in the atoms objects. Point of cross is chosen randomly. Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False): ElementCrossover.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose) self.descriptor = 'OnePointElementCrossover' def get_new_individual(self, parents): f, m = parents indi = self.initialize_individual(f) indi.info['data']['parents'] = [i.info['confid'] for i in parents] cut_choices = [i for i in range(1, len(f) - 1)] random.shuffle(cut_choices) for cut in cut_choices: fsyms = f.get_chemical_symbols() msyms = m.get_chemical_symbols() syms = fsyms[:cut] + msyms[cut:] ok = True for i, e in enumerate(self.element_pools): elems = e[:] elems_in, indices_in = zip(*[(a.symbol, a.index) for a in f if a.symbol in elems]) max_diff_elem = self.max_diff_elements[i] min_percent_elem = self.min_percentage_elements[i] if min_percent_elem == 0: min_percent_elem = 1. / len(elems_in) if max_diff_elem is None: max_diff_elem = len(elems_in) syms_in = [syms[i] for i in indices_in] for s in set(syms_in): percentage = syms_in.count(s) / float(len(syms_in)) if percentage < min_percent_elem: ok = False break num_diff = len(set(syms_in)) if num_diff > max_diff_elem: ok = False break if not ok: break if ok: break # Sufficient or does some individuals appear # below min_percentage_elements for a in f[:cut] + m[cut:]: indi.append(a) parent_message = ':Parents {0} {1}'.format(f.info['confid'], m.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) class TwoPointElementCrossover(ElementCrossover): """Crosses two individuals by choosing two cross points at random""" def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False): ElementCrossover.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose) self.descriptor = 'TwoPointElementCrossover' def get_new_individual(self, parents): raise NotImplementedError ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/element_mutations.py000066400000000000000000000566701316323560300252520ustar00rootroot00000000000000"""Mutation classes, that mutate the elements in the supplied atoms objects.""" import random import numpy as np from ase.data import atomic_numbers from ase.ga.offspring_creator import OffspringCreator def chunks(l, n): """split a list into smaller chunks""" return [l[i:i + n] for i in range(0, len(l), n)] class ElementMutation(OffspringCreator): """The base class for all operators where the elements of the atoms objects are mutated""" def __init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=1): OffspringCreator.__init__(self, verbose, num_muts=num_muts) if not isinstance(element_pool[0], (list, np.ndarray)): self.element_pools = [element_pool] else: self.element_pools = element_pool if max_diff_elements is None: self.max_diff_elements = [1e6 for _ in self.element_pools] elif isinstance(max_diff_elements, int): self.max_diff_elements = [max_diff_elements] else: self.max_diff_elements = max_diff_elements assert len(self.max_diff_elements) == len(self.element_pools) if min_percentage_elements is None: self.min_percentage_elements = [0 for _ in self.element_pools] elif isinstance(min_percentage_elements, (int, float)): self.min_percentage_elements = [min_percentage_elements] else: self.min_percentage_elements = min_percentage_elements assert len(self.min_percentage_elements) == len(self.element_pools) self.min_inputs = 1 def get_new_individual(self, parents): raise NotImplementedError def get_mutation_index_list_and_choices(self, atoms): """Returns a list of the indices that are going to be mutated and a list of possible elements to mutate to. The lists obey the criteria set in the initialization. """ itbm_ok = False while not itbm_ok: itbm = random.choice(range(len(atoms))) # index to be mutated itbm_ok = True for i, e in enumerate(self.element_pools): if atoms[itbm].symbol in e: elems = e[:] elems_in, indices_in = zip(*[(a.symbol, a.index) for a in atoms if a.symbol in elems]) max_diff_elem = self.max_diff_elements[i] min_percent_elem = self.min_percentage_elements[i] if min_percent_elem == 0: min_percent_elem = 1. / len(elems_in) break else: itbm_ok = False # Check that itbm obeys min/max criteria diff_elems_in = len(set(elems_in)) if diff_elems_in == max_diff_elem: # No more different elements allowed -> one element mutation ltbm = [] # list to be mutated for i in range(len(atoms)): if atoms[i].symbol == atoms[itbm].symbol: ltbm.append(i) else: # Fewer or too many different elements already if self.verbose: print(int(min_percent_elem * len(elems_in)), min_percent_elem, len(elems_in)) all_chunks = chunks(indices_in, int(min_percent_elem * len(elems_in))) itbm_num_of_elems = 0 for a in atoms: if a.index == itbm: break if a.symbol in elems: itbm_num_of_elems += 1 ltbm = all_chunks[itbm_num_of_elems // (int(min_percent_elem * len(elems_in))) - 1] elems.remove(atoms[itbm].symbol) return ltbm, elems class RandomElementMutation(ElementMutation): """Mutation that exchanges an element with a randomly chosen element from the supplied pool of elements If the individual consists of different groups of elements the element pool can be supplied as a list of lists Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False, num_muts=1): ElementMutation.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=num_muts) self.descriptor = 'RandomElementMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] ltbm, choices = self.get_mutation_index_list_and_choices(f) new_element = random.choice(choices) for a in f: if a.index in ltbm: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), self.descriptor + ': Parent {0}'.format(f.info['confid'])) def mendeleiev_table(): """Returns the mendeleiev table as a python list of lists. Each cell contains either None or a pair (symbol, atomic number), or a list of pairs for the cells \* and \**. """ import re elems = 'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRb' elems += 'SrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLaCePrNdPmSmEuGdTbDyHoErTm' elems += 'YbLuHfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAcThPaUNpPuAmCmBkCfEsFmMd' elems += 'NoLrRfDbSgBhHsMtDsRgUubUutUuqUupUuhUusUuo' L = [(e, i + 1) for (i, e) in enumerate(re.compile('[A-Z][a-z]*').findall(elems))] for i, j in ((88, 103), (56, 71)): L[i] = L[i:j] L[i + 1:] = L[j:] for i, j in ((12, 10), (4, 10), (1, 16)): L[i:i] = [None] * j return [L[18 * i:18 * (i + 1)] for i in range(7)] def get_row_column(element): """Returns the row and column of the element in the periodic table. Note that Lanthanides and Actinides are defined to be group (column) 3 elements""" t = mendeleiev_table() en = (element, atomic_numbers[element]) for i in range(len(t)): for j in range(len(t[i])): if en == t[i][j]: return i, j elif isinstance(t[i][j], list): # Lanthanide or Actinide if en in t[i][j]: return i, 3 class MoveDownMutation(ElementMutation): """ Mutation that exchanges an element with an element one step (or more steps if fewer is forbidden) down the same column in the periodic table. This mutation is introduced and used in: P. B. Jensen et al., Phys. Chem. Chem. Phys., 16, 36, 19732-19740 (2014) The idea behind is that elements close to each other in the periodic table is chemically similar, and therefore exhibit similar properties. An individual in the population is typically close to fittest possible, exchanging an element with a similar element will normally result in a slight increase (or decrease) in fitness. Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False, num_muts=1): ElementMutation.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=num_muts) self.descriptor = 'MoveDownMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] ltbm, choices = self.get_mutation_index_list_and_choices(f) # periodic table row, periodic table column ptrow, ptcol = get_row_column(f[ltbm[0]].symbol) popped = [] m = 0 for j in range(len(choices)): e = choices[j - m] row, column = get_row_column(e) if row <= ptrow or column != ptcol: # Throw away if above (lower numbered row) # or in a different column in the periodic table popped.append(choices.pop(j - m)) m += 1 used_descriptor = self.descriptor if len(choices) == 0: msg = '{0},{2} cannot be mutated by {1}, ' msg = msg.format(f.info['confid'], self.descriptor, f[ltbm[0]].symbol) msg += 'doing random mutation instead' if self.verbose: print(msg) used_descriptor = 'RandomElementMutation_from_{0}' used_descriptor = used_descriptor.format(self.descriptor) random.shuffle(popped) choices = popped else: # Sorting the element that lie below and in the same column # in the periodic table so that the one closest below is first choices.sort(key=lambda x: get_row_column(x)[0]) new_element = choices[0] for a in f: if a.index in ltbm: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), used_descriptor + ': Parent {0}'.format(f.info['confid'])) class MoveUpMutation(ElementMutation): """ Mutation that exchanges an element with an element one step (or more steps if fewer is forbidden) up the same column in the periodic table. This mutation is introduced and used in: P. B. Jensen et al., Phys. Chem. Chem. Phys., 16, 36, 19732-19740 (2014) See MoveDownMutation for the idea behind Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False, num_muts=1): ElementMutation.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=num_muts) self.descriptor = 'MoveUpMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] ltbm, choices = self.get_mutation_index_list_and_choices(f) # periodic table row, periodic table column ptrow, ptcol = get_row_column(f[ltbm[0]].symbol) popped = [] m = 0 for j in range(len(choices)): e = choices[j - m] row, column = get_row_column(e) if row >= ptrow or column != ptcol: # Throw away if below (higher numbered row) # or in a different column in the periodic table popped.append(choices.pop(j - m)) m += 1 used_descriptor = self.descriptor if len(choices) == 0: msg = '{0},{2} cannot be mutated by {1}, ' msg = msg.format(f.info['confid'], self.descriptor, f[ltbm[0]].symbol) msg += 'doing random mutation instead' if self.verbose: print(msg) used_descriptor = 'RandomElementMutation_from_{0}' used_descriptor = used_descriptor.format(self.descriptor) random.shuffle(popped) choices = popped else: # Sorting the element that lie above and in the same column # in the periodic table so that the one closest above is first choices.sort(key=lambda x: get_row_column(x)[0], reverse=True) new_element = choices[0] for a in f: if a.index in ltbm: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), used_descriptor + ': Parent {0}'.format(f.info['confid'])) class MoveRightMutation(ElementMutation): """ Mutation that exchanges an element with an element one step (or more steps if fewer is forbidden) to the right in the same row in the periodic table. This mutation is introduced and used in: P. B. Jensen et al., Phys. Chem. Chem. Phys., 16, 36, 19732-19740 (2014) See MoveDownMutation for the idea behind Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False, num_muts=1): ElementMutation.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=num_muts) self.descriptor = 'MoveRightMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] ltbm, choices = self.get_mutation_index_list_and_choices(f) # periodic table row, periodic table column ptrow, ptcol = get_row_column(f[ltbm[0]].symbol) popped = [] m = 0 for j in range(len(choices)): e = choices[j - m] row, column = get_row_column(e) if row != ptrow or column <= ptcol: # Throw away if to the left (a lower numbered column) # or in a different row in the periodic table popped.append(choices.pop(j - m)) m += 1 used_descriptor = self.descriptor if len(choices) == 0: msg = '{0},{2} cannot be mutated by {1}, ' msg = msg.format(f.info['confid'], self.descriptor, f[ltbm[0]].symbol) msg += 'doing random mutation instead' if self.verbose: print(msg) used_descriptor = 'RandomElementMutation_from_{0}' used_descriptor = used_descriptor.format(self.descriptor) random.shuffle(popped) choices = popped else: # Sorting so the element closest to the right is first choices.sort(key=lambda x: get_row_column(x)[1]) new_element = choices[0] for a in f: if a.index in ltbm: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), used_descriptor + ': Parent {0}'.format(f.info['confid'])) class MoveLeftMutation(ElementMutation): """ Mutation that exchanges an element with an element one step (or more steps if fewer is forbidden) to the left in the same row in the periodic table. This mutation is introduced and used in: P. B. Jensen et al., Phys. Chem. Chem. Phys., 16, 36, 19732-19740 (2014) See MoveDownMutation for the idea behind Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] max_diff_elements: The maximum number of different elements in the individual. Default is infinite. If the elements are grouped max_diff_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. min_percentage_elements: The minimum percentage of any element in the individual. Default is any number is allowed. If the elements are grouped min_percentage_elements should be supplied as a list with each input corresponding to the elements specified in the same input in element_pool. Example: element_pool=[[A,B,C,D],[x,y,z]], max_diff_elements=[3,2], min_percentage_elements=[.25, .5] An individual could be "D,B,B,C,x,x,x,x,z,z,z,z" """ def __init__(self, element_pool, max_diff_elements=None, min_percentage_elements=None, verbose=False, num_muts=1): ElementMutation.__init__(self, element_pool, max_diff_elements, min_percentage_elements, verbose, num_muts=num_muts) self.descriptor = 'MoveLeftMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] ltbm, choices = self.get_mutation_index_list_and_choices(f) # periodic table row, periodic table column ptrow, ptcol = get_row_column(f[ltbm[0]].symbol) popped = [] m = 0 for j in range(len(choices)): e = choices[j - m] row, column = get_row_column(e) if row != ptrow or column >= ptcol: # Throw away if to the right (a higher numbered column) # or in a different row in the periodic table popped.append(choices.pop(j - m)) m += 1 used_descriptor = self.descriptor if len(choices) == 0: msg = '{0},{2} cannot be mutated by {1}, ' msg = msg.format(f.info['confid'], self.descriptor, f[ltbm[0]].symbol) msg += 'doing random mutation instead' if self.verbose: print(msg) used_descriptor = 'RandomElementMutation_from_{0}' used_descriptor = used_descriptor.format(self.descriptor) random.shuffle(popped) choices = popped else: # Sorting so the element closest to the left is first choices.sort(key=lambda x: get_row_column(x)[1], reverse=True) new_element = choices[0] for a in f: if a.index in ltbm: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), used_descriptor + ':Parent {0}'.format(f.info['confid'])) class FullElementMutation(OffspringCreator): """Mutation that exchanges an all elements of a certain type with another randomly chosen element from the supplied pool of elements. Any constraints on the mutation are inhereted from the original candidate. Parameters: element_pool: List of elements in the phase space. The elements can be grouped if the individual consist of different types of elements. The list should then be a list of lists e.g. [[list1], [list2]] """ def __init__(self, element_pool, verbose=False, num_muts=1): OffspringCreator.__init__(self, verbose, num_muts=num_muts) self.descriptor = 'FullElementMutation' if not isinstance(element_pool[0], (list, np.ndarray)): self.element_pools = [element_pool] else: self.element_pools = element_pool def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] # Randomly choose an element to mutate in the current individual. old_element = random.choice([a.symbol for a in f]) # Find the list containing the chosen element. By choosing a new # element from the same list, the percentages are not altered. for i in range(len(self.element_pools)): if old_element in self.element_pools[i]: lm = i not_val = True while not_val: new_element = random.choice(self.element_pools[lm]) not_val = new_element == old_element for a in f: if a.symbol == old_element: a.symbol = new_element indi.append(a) return (self.finalize_individual(indi), self.descriptor + ': Parent {0}'.format(f.info['confid'])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/multiprocessingrun.py000066400000000000000000000036221316323560300254570ustar00rootroot00000000000000""" Class for handling several simultaneous jobs. The class has been tested on Niflheim-opteron4. """ from multiprocessing import Pool import time from ase.io import write, read class MultiprocessingRun(object): """Class that allows for the simultaneous relaxation of several candidates on a cluster. Best used if each individual calculation is too small for using a queueing system. Parameters: data_connection: DataConnection object. tmp_folder: Folder for temporary files. n_simul: The number of simultaneous relaxations. relax_function: The relaxation function. This needs to return the filename of the relaxed structure. """ def __init__(self, data_connection, relax_function, tmp_folder, n_simul=None): self.dc = data_connection self.pool = Pool(n_simul) self.relax_function = relax_function self.tmp_folder = tmp_folder self.results = [] def relax(self, a): """Relax the atoms object a by submitting the relaxation to the pool of cpus.""" self.dc.mark_as_queued(a) fname = '{0}/cand{1}.traj'.format(self.tmp_folder, a.info['confid']) write(fname, a) self.results.append(self.pool.apply_async(self.relax_function, [fname])) self._cleanup() def _cleanup(self): for r in self.results: if r.ready() and r.successful(): fname = r.get() a = read(fname) self.dc.add_relaxed_step(a) self.results.remove(r) def finish_all(self): """Checks that all calculations are finished, if not wait and check again. Return when all are finished.""" while len(self.results) > 0: self._cleanup() time.sleep(2.) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/offspring_creator.py000066400000000000000000000053211316323560300252150ustar00rootroot00000000000000"""Base module for all operators that create offspring.""" import numpy as np from random import random from ase import Atoms class OffspringCreator(object): """Base class for all procreation operators Parameters: verbose: Be verbose and print some stuff """ def __init__(self, verbose=False, num_muts=1): self.descriptor = 'OffspringCreator' self.verbose = verbose self.min_inputs = 0 self.num_muts = num_muts def get_min_inputs(self): """Returns the number of inputs required for a mutation, this is to know how many candidates should be selected from the population.""" return self.min_inputs def get_new_individual(self, parents): """Function that returns a new individual. Overwrite in subclass.""" raise NotImplementedError def finalize_individual(self, indi): """Call this function just before returning the new individual""" indi.info['key_value_pairs']['origin'] = self.descriptor return indi @classmethod def initialize_individual(cls, parent, indi=None): """Initializes a new individual that inherits some parameters from the parent, and initializes the info dictionary. If the new individual already has more structure it can be supplied in the parameter indi.""" if indi is None: indi = Atoms(pbc=parent.get_pbc(), cell=parent.get_cell()) else: indi = indi.copy() # key_value_pairs for numbers and strings indi.info['key_value_pairs'] = {'extinct': 0} # data for lists and the like indi.info['data'] = {} return indi class OperationSelector(object): """Class used to randomly select a procreation operation from a list of operations. Parameters: probabilities: A list of probabilities with which the different mutations should be selected. The norm of this list does not need to be 1. oplist: The list of operations to select from. """ def __init__(self, probabilities, oplist): assert len(probabilities) == len(oplist) self.oplist = oplist self.rho = np.cumsum(probabilities) def __get_index__(self): v = random() * self.rho[-1] for i in range(len(self.rho)): if self.rho[i] > v: return i def get_new_individual(self, candidate_list): """Choose operator and use it on the candidate. """ to_use = self.__get_index__() return self.oplist[to_use].get_new_individual(candidate_list) def get_operator(self): """Choose operator and return it.""" to_use = self.__get_index__() return self.oplist[to_use] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/parallellocalrun.py000066400000000000000000000062511316323560300250400ustar00rootroot00000000000000""" Class for handling several simultaneous jobs. The class has been tested on linux and Mac OS X. """ from subprocess import Popen, PIPE import time from ase.io import write, read class ParallelLocalRun(object): """ Class that allows for the simultaneous relaxation of several candidates on the same computer. The method is based on starting each relaxation with an external python script and then monitoring when the relaxations are done adding in the resulting structures to the database. Parameters: data_connection: DataConnection object. tmp_folder: Folder for temporary files n_simul: The number of simultaneous relaxations. calc_script: Reference to the relaxation script. """ def __init__(self, data_connection, tmp_folder, n_simul, calc_script): self.dc = data_connection self.n_simul = n_simul self.calc_script = calc_script self.tmp_folder = tmp_folder self.running_pids = [] def get_number_of_jobs_running(self): """ Returns the number of jobs running. It is a good idea to check that this is 0 before terminating the main program. """ self.__cleanup__() return len(self.running_pids) def relax(self, a): """ Relax the input atoms object a. If n_simul relaxations are already running the function sleeps until a processor becomes available. """ self.__cleanup__() # Wait until a thread is available. while len(self.running_pids) >= self.n_simul: time.sleep(2.) self.__cleanup__() # Mark the structure as queued and run the external py script. self.dc.mark_as_queued(a) fname = '{0}/cand{1}.traj'.format(self.tmp_folder, a.info['confid']) write(fname, a) p = Popen(['python', self.calc_script, fname]) self.running_pids.append([a.info['confid'], p.pid]) def __cleanup__(self): """ Checks if any relaxations are done and load in the structure from the traj file. """ p = Popen(['ps -x -U `whoami`'], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) (_, fout) = (p.stdin, p.stdout) lines = fout.readlines() lines = [l for l in lines if l.find('defunct') == -1] stopped_runs = [] for i in range(len(self.running_pids) - 1, -1, -1): found = False for l in lines: if l.find(str(self.running_pids[i][1])) != -1: found = True break if not found: stopped_runs.append(self.running_pids.pop(i)) # All processes not running any more must be complete and should # be loaded in. for (confid, _) in stopped_runs: try: tf = self.tmp_folder a = read('{0}/cand{1}_done.traj'.format(tf, confid)) self.dc.add_relaxed_step(a) except IOError as e: print(e) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/particle_comparator.py000066400000000000000000000023361316323560300255360ustar00rootroot00000000000000"""Comparators originally meant to be used with particles""" import numpy as np from ase.ga.utilities import get_nnmat class NNMatComparator(object): """Use the nearest neighbor matrix to determine differences in the distribution (and to a slighter degree structure) of atoms. As specified in S. Lysgaard et al., Top. Catal., 57 (1-4), pp 33-39, (2014)""" def __init__(self, d=0.2, elements=None, mic=False): self.d = d if elements is None: elements = [] self.elements = elements self.mic = mic def looks_like(self, a1, a2): """ Return if structure a1 or a2 are similar or not. """ elements = self.elements if elements == []: elements = sorted(set(a1.get_chemical_symbols())) a1, a2 = a1.copy(), a2.copy() a1.set_constraint() a2.set_constraint() del a1[[a.index for a in a1 if a.symbol not in elements]] del a2[[a.index for a in a2 if a.symbol not in elements]] nnmat_a1 = get_nnmat(a1, mic=self.mic) nnmat_a2 = get_nnmat(a2, mic=self.mic) diff = np.linalg.norm(nnmat_a1 - nnmat_a2) if diff < self.d: return True else: return False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/particle_crossovers.py000066400000000000000000000161761316323560300256060ustar00rootroot00000000000000"""Crossover operations originally intended for medium sized particles""" import random import numpy as np from itertools import chain from ase import Atoms from ase.ga.offspring_creator import OffspringCreator class Crossover(OffspringCreator): """Base class for all particle crossovers. Do not call this class directly.""" def __init__(self): OffspringCreator.__init__(self) self.descriptor = 'Crossover' self.min_inputs = 2 class CutSpliceCrossover(Crossover): """Crossover that cuts two particles through a plane in space and merges two halfes from different particles together. Implementation of the method presented in: D. M. Deaven and K. M. Ho, Phys. Rev. Lett., 75, 2, 288-291 (1995) It keeps the correct composition by randomly assigning elements in the new particle. If some of the atoms in the two particle halves are too close, the halves are moved away from each other perpendicular to the cutting plane. Parameters: blmin: dictionary of minimum distance between atomic numbers. e.g. {(28,29): 1.5} keep_composition: boolean that signifies if the composition should be the same as in the parents. """ def __init__(self, blmin, keep_composition=True): Crossover.__init__(self) self.blmin = blmin self.keep_composition = keep_composition self.descriptor = 'CutSpliceCrossover' def get_new_individual(self, parents): f, m = parents indi = self.initialize_individual(f) indi.info['data']['parents'] = [i.info['confid'] for i in parents] theta = random.random() * 2 * np.pi # 0,2pi phi = random.random() * np.pi # 0,pi e = np.array((np.sin(phi) * np.cos(theta), np.sin(theta) * np.sin(phi), np.cos(phi))) eps = 0.0001 f.translate(-f.get_center_of_mass()) m.translate(-m.get_center_of_mass()) # Get the signed distance to the cutting plane # We want one side from f and the other side from m fmap = [np.dot(x, e) for x in f.get_positions()] mmap = [-np.dot(x, e) for x in m.get_positions()] ain = sorted([i for i in chain(fmap, mmap) if i > 0], reverse=True) aout = sorted([i for i in chain(fmap, mmap) if i < 0], reverse=True) off = len(ain) - len(f) # Translating f and m to get the correct number of atoms # in the offspring if off < 0: # too few # move f and m away from the plane dist = (abs(aout[abs(off) - 1]) + abs(aout[abs(off)])) * .5 f.translate(e * dist) m.translate(-e * dist) elif off > 0: # too many # move f and m towards the plane dist = (abs(ain[-off - 1]) + abs(ain[-off])) * .5 f.translate(-e * dist) m.translate(e * dist) if off != 0 and dist == 0: # Exactly same position => we continue with the wrong number # of atoms. What should be done? Fail or return None or # remove one of the two atoms with exactly the same position. pass # Determine the contributing parts from f and m tmpf, tmpm = Atoms(), Atoms() for atom in f: if np.dot(atom.position, e) > 0: atom.tag = 1 tmpf.append(atom) for atom in m: if np.dot(atom.position, e) < 0: atom.tag = 2 tmpm.append(atom) # Check that the correct composition is employed if self.keep_composition: opt_sm = sorted(f.numbers) tmpf_numbers = list(tmpf.numbers) tmpm_numbers = list(tmpm.numbers) cur_sm = sorted(tmpf_numbers + tmpm_numbers) # correct_by: dictionary that specifies how many # of the atom_numbers should be removed (a negative number) # or added (a positive number) correct_by = dict([(j, opt_sm.count(j)) for j in set(opt_sm)]) for n in cur_sm: correct_by[n] -= 1 correct_in = random.choice([tmpf, tmpm]) to_add, to_rem = [], [] for num, amount in correct_by.items(): if amount > 0: to_add.extend([num] * amount) elif amount < 0: to_rem.extend([num] * abs(amount)) for add, rem in zip(to_add, to_rem): tbc = [a.index for a in correct_in if a.number == rem] if len(tbc) == 0: pass ai = random.choice(tbc) correct_in[ai].number = add # Move the contributing apart if any distance is below blmin maxl = 0. for sv, min_dist in self.get_vectors_below_min_dist(tmpf + tmpm): lsv = np.linalg.norm(sv) # length of shortest vector d = [-np.dot(e, sv)] * 2 d[0] += np.sqrt(np.dot(e, sv)**2 - lsv**2 + min_dist**2) d[1] -= np.sqrt(np.dot(e, sv)**2 - lsv**2 + min_dist**2) l = sorted([abs(i) for i in d])[0] / 2. + eps if l > maxl: maxl = l tmpf.translate(e * maxl) tmpm.translate(-e * maxl) # Put the two parts together for atom in chain(tmpf, tmpm): indi.append(atom) parent_message = ':Parents {0} {1}'.format(f.info['confid'], m.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def get_numbers(self, atoms): """Returns the atomic numbers of the atoms object using only the elements defined in self.elements""" ac = atoms.copy() if self.elements is not None: del ac[[a.index for a in ac if a.symbol in self.elements]] return ac.numbers def get_vectors_below_min_dist(self, atoms): """Generator function that returns each vector (between atoms) that is shorter than the minimum distance for those atom types (set during the initialization in blmin).""" norm = np.linalg.norm ap = atoms.get_positions() an = atoms.numbers for i in range(len(atoms)): pos = atoms[i].position for j, d in enumerate([norm(k - pos) for k in ap[i:]]): if d == 0: continue min_dist = self.blmin[tuple(sorted((an[i], an[j + i])))] if d < min_dist: yield atoms[i].position - atoms[j + i].position, min_dist def get_shortest_dist_vector(self, atoms): norm = np.linalg.norm mind = 10000. ap = atoms.get_positions() for i in range(len(atoms)): pos = atoms[i].position for j, d in enumerate([norm(k - pos) for k in ap[i:]]): if d == 0: continue if d < mind: mind = d lowpair = (i, j + i) return atoms[lowpair[0]].position - atoms[lowpair[1]].position ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/particle_mutations.py000066400000000000000000000436051316323560300254160ustar00rootroot00000000000000import random import numpy as np from operator import itemgetter from ase.ga.offspring_creator import OffspringCreator from ase.ga.utilities import get_distance_matrix, get_nndist from ase import Atoms class Mutation(OffspringCreator): """Base class for all particle mutation type operators. Do not call this class directly.""" def __init__(self, num_muts=1): OffspringCreator.__init__(self, num_muts=num_muts) self.descriptor = 'Mutation' self.min_inputs = 1 @classmethod def get_atomic_configuration(cls, atoms, elements=None, eps=4e-2): """Returns the atomic configuration of the particle as a list of lists. Each list contain the indices of the atoms sitting at the same distance from the geometrical center of the particle. Highly symmetrical particles will often have many atoms in each shell. For further elaboration see: J. Montejano-Carrizales and J. Moran-Lopez, Geometrical characteristics of compact nanoclusters, Nanostruct. Mater., 1, 5, 397-409 (1992) Parameters: elements: Only take into account the elements specified in this list. Default is to take all elements into account. eps: The distance allowed to separate elements within each shell.""" atoms = atoms.copy() if elements is None: e = list(set(atoms.get_chemical_symbols())) else: e = elements atoms.set_constraint() atoms.center() geo_mid = np.array([(atoms.get_cell() / 2.)[i][i] for i in range(3)]) dists = [(np.linalg.norm(geo_mid - atoms[i].position), i) for i in range(len(atoms))] dists.sort(key=itemgetter(0)) atomic_conf = [] old_dist = -10. for dist, i in dists: if abs(dist - old_dist) > eps: atomic_conf.append([i]) else: atomic_conf[-1].append(i) old_dist = dist sorted_elems = sorted(set(atoms.get_chemical_symbols())) if e is not None and sorted(e) != sorted_elems: for shell in atomic_conf: torem = [] for i in shell: if atoms[i].symbol not in e: torem.append(i) for i in torem: shell.remove(i) return atomic_conf @classmethod def get_list_of_possible_permutations(cls, atoms, l1, l2): """Returns a list of available permutations from the two lists of indices, l1 and l2. Checking that identical elements are not permuted.""" possible_permutations = [] for i in l1: for j in l2: if atoms[int(i)].symbol != atoms[int(j)].symbol: possible_permutations.append((i, j)) return possible_permutations class RandomMutation(Mutation): """Moves a random atom the supplied length in a random direction.""" def __init__(self, length=2., num_muts=1): Mutation.__init__(self, num_muts=num_muts) self.descriptor = 'RandomMutation' self.length = length def mutate(self, atoms): """ Does the actual mutation. """ tbm = random.choice(range(len(atoms))) indi = Atoms() for a in atoms: if a.index == tbm: a.position += self.random_vector(self.length) indi.append(a) return indi def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] to_mut = f.copy() for _ in range(self.num_muts): to_mut = self.mutate(to_mut) for atom in to_mut: indi.append(atom) return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) @classmethod def random_vector(cls, l): """return random vector of length l""" vec = np.array([random.random() * 2 - 1 for i in range(3)]) vl = np.linalg.norm(vec) return np.array([v * l / vl for v in vec]) class RandomPermutation(Mutation): """Permutes two random atoms. Parameters: num_muts: the number of times to perform this operation.""" def __init__(self, elements=None, num_muts=1): Mutation.__init__(self, num_muts=num_muts) self.descriptor = 'RandomPermutation' self.elements = elements def get_new_individual(self, parents): f = parents[0].copy() diffatoms = len(set(f.numbers)) assert diffatoms > 1, 'Permutations with one atomic type is not valid' indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for _ in range(self.num_muts): RandomPermutation.mutate(f, self.elements) for atom in f: indi.append(atom) return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) @classmethod def mutate(cls, atoms, elements=None): """Do the actual permutation.""" if elements is None: indices = range(len(atoms)) else: indices = [a.index for a in atoms if a.symbol in elements] i1 = random.choice(indices) i2 = random.choice(indices) while atoms[i1].symbol == atoms[i2].symbol: i2 = random.choice(indices) atoms.positions[[i1, i2]] = atoms.positions[[i2, i1]] class COM2surfPermutation(Mutation): """The Center Of Mass to surface (COM2surf) permutation operator described in S. Lysgaard et al., Top. Catal., 2014, 57 (1-4), pp 33-39 Parameters: elements: which elements should be included in this permutation, for example: include all metals and exclude all adsorbates min_ratio: minimum ratio of each element in the core or surface region. If elements=[a, b] then ratio of a is Na / (Na + Nb) (N: Number of). If less than minimum ratio is present in the core, the region defining the core will be extended until the minimum ratio is met, and vice versa for the surface region. It has the potential reach the recursive limit if an element has a smaller total ratio in the complete particle. In that case remember to decrease this min_ratio. num_muts: the number of times to perform this operation. """ def __init__(self, elements=None, min_ratio=0.25, num_muts=1): Mutation.__init__(self, num_muts=num_muts) self.descriptor = 'COM2surfPermutation' self.min_ratio = min_ratio self.elements = elements def get_new_individual(self, parents): f = parents[0].copy() diffatoms = len(set(f.numbers)) assert diffatoms > 1, 'Permutations with one atomic type is not valid' indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for _ in range(self.num_muts): elems = self.elements COM2surfPermutation.mutate(f, elems, self.min_ratio) for atom in f: indi.append(atom) return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) @classmethod def mutate(cls, atoms, elements, min_ratio): """Performs the COM2surf permutation.""" ac = atoms.copy() if elements is not None: del ac[[a.index for a in ac if a.symbol not in elements]] syms = ac.get_chemical_symbols() for el in set(syms): assert syms.count(el) / float(len(syms)) > min_ratio atomic_conf = Mutation.get_atomic_configuration(atoms, elements=elements) core = COM2surfPermutation.get_core_indices(atoms, atomic_conf, min_ratio) shell = COM2surfPermutation.get_shell_indices(atoms, atomic_conf, min_ratio) permuts = Mutation.get_list_of_possible_permutations(atoms, core, shell) swap = list(random.choice(permuts)) atoms.positions[swap] = atoms.positions[swap[::-1]] @classmethod def get_core_indices(cls, atoms, atomic_conf, min_ratio, recurs=0): """Recursive function that returns the indices in the core subject to the min_ratio constraint. The indices are found from the supplied atomic configuration.""" elements = list(set([atoms[i].symbol for subl in atomic_conf for i in subl])) core = [i for subl in atomic_conf[:1 + recurs] for i in subl] while len(core) < 1: recurs += 1 core = [i for subl in atomic_conf[:1 + recurs] for i in subl] for elem in elements: ratio = len([i for i in core if atoms[i].symbol == elem]) / float(len(core)) if ratio < min_ratio: return COM2surfPermutation.get_core_indices(atoms, atomic_conf, min_ratio, recurs + 1) return core @classmethod def get_shell_indices(cls, atoms, atomic_conf, min_ratio, recurs=0): """Recursive function that returns the indices in the surface subject to the min_ratio constraint. The indices are found from the supplied atomic configuration.""" elements = list(set([atoms[i].symbol for subl in atomic_conf for i in subl])) shell = [i for subl in atomic_conf[-1 - recurs:] for i in subl] while len(shell) < 1: recurs += 1 shell = [i for subl in atomic_conf[-1 - recurs:] for i in subl] for elem in elements: ratio = len([i for i in shell if atoms[i].symbol == elem]) / float(len(shell)) if ratio < min_ratio: return COM2surfPermutation.get_shell_indices(atoms, atomic_conf, min_ratio, recurs + 1) return shell class _NeighborhoodPermutation(Mutation): """Helper class that holds common functions to all permutations that look at the neighborhoods of each atoms.""" @classmethod def get_possible_poor2rich_permutations(cls, atoms, inverse=False, recurs=0, distance_matrix=None): dm = distance_matrix if dm is None: dm = get_distance_matrix(atoms) # Adding a small value (0.2) to overcome slight variations # in the average bond length nndist = get_nndist(atoms, dm) + 0.2 same_neighbors = {} def f(x): return x[1] for i, atom in enumerate(atoms): same_neighbors[i] = 0 neighbors = [j for j in range(len(dm[i])) if dm[i][j] < nndist] for n in neighbors: if atoms[n].symbol == atom.symbol: same_neighbors[i] += 1 sorted_same = sorted(same_neighbors.items(), key=f) if inverse: sorted_same.reverse() poor_indices = [j[0] for j in sorted_same if abs(j[1] - sorted_same[0][1]) <= recurs] rich_indices = [j[0] for j in sorted_same if abs(j[1] - sorted_same[-1][1]) <= recurs] permuts = Mutation.get_list_of_possible_permutations(atoms, poor_indices, rich_indices) if len(permuts) == 0: _NP = _NeighborhoodPermutation return _NP.get_possible_poor2rich_permutations(atoms, inverse, recurs + 1, dm) return permuts class Poor2richPermutation(_NeighborhoodPermutation): """The poor to rich (Poor2rich) permutation operator described in S. Lysgaard et al., Top. Catal., 2014, 57 (1-4), pp 33-39 Permutes two atoms from regions short of the same elements, to regions rich in the same elements. (Inverse of Rich2poorPermutation) Parameters: elements: Which elements to take into account in this permutation """ def __init__(self, elements=[], num_muts=1): _NeighborhoodPermutation.__init__(self, num_muts=num_muts) self.descriptor = 'Poor2richPermutation' self.elements = elements def get_new_individual(self, parents): f = parents[0].copy() diffatoms = len(set(f.numbers)) assert diffatoms > 1, 'Permutations with one atomic type is not valid' indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] for _ in range(self.num_muts): Poor2richPermutation.mutate(f, self.elements) for atom in f: indi.append(atom) return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) @classmethod def mutate(cls, atoms, elements): _NP = _NeighborhoodPermutation # indices = [a.index for a in atoms if a.symbol in elements] ac = atoms.copy() del ac[[atom.index for atom in ac if atom.symbol not in elements]] permuts = _NP.get_possible_poor2rich_permutations(ac) swap = list(random.choice(permuts)) atoms.positions[swap] = atoms.positions[swap[::-1]] class Rich2poorPermutation(_NeighborhoodPermutation): """ The rich to poor (Rich2poor) permutation operator described in S. Lysgaard et al., Top. Catal., 2014, 57 (1-4), pp 33-39 Permutes two atoms from regions rich in the same elements, to regions short of the same elements. (Inverse of Poor2richPermutation) Parameters: elements: Which elements to take into account in this permutation """ def __init__(self, elements=None, num_muts=1): _NeighborhoodPermutation.__init__(self, num_muts=num_muts) self.descriptor = 'Rich2poorPermutation' self.elements = elements def get_new_individual(self, parents): f = parents[0].copy() diffatoms = len(set(f.numbers)) assert diffatoms > 1, 'Permutations with one atomic type is not valid' indi = self.initialize_individual(f) indi.info['data']['parents'] = [f.info['confid']] if self.elements is None: elems = list(set(f.get_chemical_symbols())) else: elems = self.elements for _ in range(self.num_muts): Rich2poorPermutation.mutate(f, elems) for atom in f: indi.append(atom) return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) @classmethod def mutate(cls, atoms, elements): _NP = _NeighborhoodPermutation ac = atoms.copy() del ac[[atom.index for atom in ac if atom.symbol not in elements]] permuts = _NP.get_possible_poor2rich_permutations(ac, inverse=True) swap = list(random.choice(permuts)) atoms.positions[swap] = atoms.positions[swap[::-1]] class SymmetricSubstitute(Mutation): """Permute all atoms within a subshell of the symmetric particle. The atoms within a subshell all have the same distance to the center, these are all equivalent under the particle point group symmetry. """ def __init__(self, elements=None, num_muts=1): Mutation.__init__(self, num_muts=num_muts) self.descriptor = 'SymmetricSubstitute' self.elements = elements def substitute(self, atoms): """Does the actual substitution""" atoms = atoms.copy() aconf = self.get_atomic_configuration(atoms, elements=self.elements) itbm = random.randint(0, len(aconf) - 1) to_element = random.choice(self.elements) for i in aconf[itbm]: atoms[i].symbol = to_element return atoms def get_new_individual(self, parents): f = parents[0] indi = self.substitute(f) indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid']] return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) class RandomSubstitute(Mutation): """Substitutes one atom with another atom type. The possible atom types are supplied in the parameter elements""" def __init__(self, elements=None, num_muts=1): Mutation.__init__(self, num_muts=num_muts) self.descriptor = 'RandomSubstitute' self.elements = elements def substitute(self, atoms): """Does the actual substitution""" atoms = atoms.copy() if self.elements is None: elems = list(set(atoms.get_chemical_symbols())) else: elems = self.elements[:] possible_indices = [a.index for a in atoms if a.symbol in elems] itbm = random.choice(possible_indices) elems.remove(atoms[itbm].symbol) new_symbol = random.choice(elems) atoms[itbm].symbol = new_symbol return atoms def get_new_individual(self, parents): f = parents[0] indi = self.substitute(f) indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid']] return (self.finalize_individual(indi), self.descriptor + ':Parent {0}'.format(f.info['confid'])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/pbs_queue_run.py000066400000000000000000000113761316323560300243640ustar00rootroot00000000000000""" Class for handling interaction with the PBS queuing system.""" from ase.io import write import os from ase.io.trajectory import Trajectory from subprocess import Popen, PIPE import time class PBSQueueRun(object): """ Class for communicating with the commonly used PBS queing system at a computer cluster. The user needs to supply a job file generator which takes as input a job name and the relative path to the traj file which is to be locally optimized. The function returns the job script as text. If the traj file is called f the job must write a file f[:-5] + '_done.traj' which is then read by this object. Parameters: data_connection: The DataConnection object. tmp_folder: Temporary folder for all calculations job_prefix: Prefix of the job submitted. This identifier is used to determine how many jobs are currently running. n_simul: The number of simultaneous jobs to keep in the queuing system. job_template_generator: The function generating the job file. This function should return the content of the job file as a string. qsub_command: The name of the qsub command (default qsub). qstat_command: The name of the qstat command (default qstat). """ def __init__(self, data_connection, tmp_folder, job_prefix, n_simul, job_template_generator, qsub_command='qsub', qstat_command='qstat', find_neighbors=None, perform_parametrization=None): self.dc = data_connection self.job_prefix = job_prefix self.n_simul = n_simul self.job_template_generator = job_template_generator self.qsub_command = qsub_command self.qstat_command = qstat_command self.tmp_folder = tmp_folder self.find_neighbors = find_neighbors self.perform_parametrization = perform_parametrization self.__cleanup__() def relax(self, a): """ Add a structure to the queue. This method does not fail if sufficient jobs are already running, but simply submits the job. """ self.__cleanup__() self.dc.mark_as_queued(a) if not os.path.isdir(self.tmp_folder): os.mkdir(self.tmp_folder) fname = '{0}/cand{1}.traj'.format(self.tmp_folder, a.info['confid']) write(fname, a) job_name = '{0}_{1}'.format(self.job_prefix, a.info['confid']) f = open('tmp_job_file.job', 'w') f.write(self.job_template_generator(job_name, fname)) f.close() os.system('{0} tmp_job_file.job'.format(self.qsub_command)) def enough_jobs_running(self): """ Determines if sufficient jobs are running. """ return self.number_of_jobs_running() >= self.n_simul def number_of_jobs_running(self): """ Determines how many jobs are running. The user should use this or the enough_jobs_running method to verify that a job needs to be started before calling the relax method.""" self.__cleanup__() p = Popen(['`which {0}` -u `whoami`'.format(self.qstat_command)], shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True, universal_newlines=True) fout = p.stdout lines = fout.readlines() n_running = 0 for l in lines: if l.find(self.job_prefix) != -1: n_running += 1 return n_running def __cleanup__(self): """ Tries to load in structures previously submitted to the queing system. """ confs = self.dc.get_all_candidates_in_queue() for c in confs: fdone = '{0}/cand{1}_done.traj'.format(self.tmp_folder, c) if os.path.isfile(fdone) and os.path.getsize(fdone) > 0: try: a = [] niter = 0 while len(a) == 0 and niter < 5: t = Trajectory(fdone, 'r') a = [ats for ats in t] if len(a) == 0: time.sleep(1.) niter += 1 if len(a) == 0: txt = 'Could not read candidate ' + \ '{0} from the filesystem'.format(c) raise IOError(txt) a = a[-1] a.info['confid'] = c self.dc.add_relaxed_step( a, find_neighbors=self.find_neighbors, perform_parametrization=self.perform_parametrization) except IOError as e: print(e) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/population.py000066400000000000000000001044061316323560300236770ustar00rootroot00000000000000""" Implementaiton of a population for maintaining a GA population and proposing structures to pair. """ from random import randrange, random from math import tanh, sqrt, exp from operator import itemgetter import numpy as np from ase.db.core import now from ase.ga import get_raw_score def count_looks_like(a, all_cand, comp): """Utility method for counting occurrences.""" n = 0 for b in all_cand: if a.info['confid'] == b.info['confid']: continue if comp.looks_like(a, b): n += 1 return n class Population(object): """Population class which maintains the current population and proposes which candidates to pair together. Parameters: data_connection: DataConnection object Bla bla bla. population_size: int The number of candidates in the population. comparator: Comparator object this will tell if two configurations are equal. Default compare atoms objects directly. logfile: str Text file that contains information about the population The format is:: timestamp: generation(if available): id1,id2,id3... Using this file greatly speeds up convergence checks. Default None meaning that no file is written. use_extinct: boolean Set this to True if mass extinction and the extinct key are going to be used. Default is False. """ def __init__(self, data_connection, population_size, comparator=None, logfile=None, use_extinct=False): self.dc = data_connection self.pop_size = population_size if comparator is None: from ase.ga.standard_comparators import AtomsComparator comparator = AtomsComparator() self.comparator = comparator self.logfile = logfile self.use_extinct = use_extinct self.pop = [] self.pairs = None self.all_cand = None self.__initialize_pop__() def __initialize_pop__(self): """ Private method that initalizes the population when the population is created. """ # Get all relaxed candidates from the database ue = self.use_extinct all_cand = self.dc.get_all_relaxed_candidates(use_extinct=ue) all_cand.sort(key=lambda x: x.info['key_value_pairs']['raw_score'], reverse=True) # all_cand.sort(key=lambda x: x.get_potential_energy()) # Fill up the population with the self.pop_size most stable # unique candidates. i = 0 while i < len(all_cand) and len(self.pop) < self.pop_size: c = all_cand[i] i += 1 eq = False for a in self.pop: if self.comparator.looks_like(a, c): eq = True break if not eq: self.pop.append(c) for a in self.pop: a.info['looks_like'] = count_looks_like(a, all_cand, self.comparator) self.all_cand = all_cand self.__calc_participation__() def __calc_participation__(self): """ Determines, from the database, how many times each candidate has been used to generate new candidates. """ (participation, pairs) = self.dc.get_participation_in_pairing() for a in self.pop: if a.info['confid'] in participation.keys(): a.info['n_paired'] = participation[a.info['confid']] else: a.info['n_paired'] = 0 self.pairs = pairs def update(self, new_cand=None): """ New candidates can be added to the database after the population object has been created. This method extracts these new candidates from the database and includes them in the population. """ if len(self.pop) == 0: self.__initialize_pop__() if new_cand is None: ue = self.use_extinct new_cand = self.dc.get_all_relaxed_candidates(only_new=True, use_extinct=ue) for a in new_cand: self.__add_candidate__(a) self.all_cand.append(a) self.__calc_participation__() self._write_log() def get_current_population(self): """ Returns a copy of the current population. """ self.update() return [a.copy() for a in self.pop] def get_population_after_generation(self, gen): """ Returns a copy of the population as it where after generation gen""" if self.logfile is not None: f = open(self.logfile, 'r') gens = {} for l in f: _, no, popul = l.split(':') gens[int(no)] = [int(i) for i in popul.split(',')] f.close() return [c.copy() for c in self.all_cand[::-1] if c.info['relax_id'] in gens[gen]] all_candidates = [c for c in self.all_cand if c.info['key_value_pairs']['generation'] <= gen] cands = [all_candidates[0]] for b in all_candidates: if b not in cands: for a in cands: if self.comparator.looks_like(a, b): break else: cands.append(b) pop = cands[:self.pop_size] return [a.copy() for a in pop] def __add_candidate__(self, a): """ Adds a single candidate to the population. """ # check if the structure is too low in raw score raw_score_a = get_raw_score(a) raw_score_worst = get_raw_score(self.pop[-1]) if raw_score_a < raw_score_worst \ and len(self.pop) == self.pop_size: return # check if the new candidate should # replace a similar structure in the population for (i, b) in enumerate(self.pop): if self.comparator.looks_like(a, b): if get_raw_score(b) < raw_score_a: del self.pop[i] a.info['looks_like'] = count_looks_like(a, self.all_cand, self.comparator) self.pop.append(a) self.pop.sort(key=lambda x: get_raw_score(x), reverse=True) return # the new candidate needs to be added, so remove the highest # energy one if len(self.pop) == self.pop_size: del self.pop[-1] # add the new candidate a.info['looks_like'] = count_looks_like(a, self.all_cand, self.comparator) self.pop.append(a) self.pop.sort(key=lambda x: get_raw_score(x), reverse=True) def __get_fitness__(self, indecies, with_history=True): """Calculates the fitness using the formula from L.B. Vilhelmsen et al., JACS, 2012, 134 (30), pp 12807-12816 Sign change on the fitness compared to the formulation in the abovementioned paper due to maximizing raw_score instead of minimizing energy. (Set raw_score=-energy to optimize the energy) """ scores = [get_raw_score(x) for x in self.pop] min_s = min(scores) max_s = max(scores) T = min_s - max_s if isinstance(indecies, int): indecies = [indecies] f = [0.5 * (1. - tanh(2. * (scores[i] - max_s) / T - 1.)) for i in indecies] if with_history: M = [float(self.pop[i].info['n_paired']) for i in indecies] L = [float(self.pop[i].info['looks_like']) for i in indecies] f = [f[i] * 1. / sqrt(1. + M[i]) * 1. / sqrt(1. + L[i]) for i in range(len(f))] return f def get_two_candidates(self, with_history=True): """ Returns two candidates for pairing employing the fitness criteria from L.B. Vilhelmsen et al., JACS, 2012, 134 (30), pp 12807-12816 and the roulete wheel selection scheme described in R.L. Johnston Dalton Transactions, Vol. 22, No. 22. (2003), pp. 4193-4207 """ if len(self.pop) < 2: self.update() if len(self.pop) < 2: return None fit = self.__get_fitness__(range(len(self.pop)), with_history) fmax = max(fit) c1 = self.pop[0] c2 = self.pop[0] used_before = False while c1.info['confid'] == c2.info['confid'] and not used_before: nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c1 = self.pop[t] nnf = False nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c2 = self.pop[t] nnf = False c1id = c1.info['confid'] c2id = c2.info['confid'] used_before = (min([c1id, c2id]), max([c1id, c2id])) in self.pairs return (c1.copy(), c2.copy()) def get_one_candidate(self, with_history=True): """Returns one candidate for mutation employing the fitness criteria from L.B. Vilhelmsen et al., JACS, 2012, 134 (30), pp 12807-12816 and the roulete wheel selection scheme described in R.L. Johnston Dalton Transactions, Vol. 22, No. 22. (2003), pp. 4193-4207 """ if len(self.pop) < 1: self.update() if len(self.pop) < 1: return None fit = self.__get_fitness__(range(len(self.pop)), with_history) fmax = max(fit) nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c1 = self.pop[t] nnf = False return c1.copy() def _write_log(self): """Writes the population to a logfile. The format is:: timestamp: generation(if available): id1,id2,id3...""" if self.logfile is not None: ids = [str(a.info['relax_id']) for a in self.pop] if ids != []: try: gen_nums = [c.info['key_value_pairs']['generation'] for c in self.all_cand] max_gen = max(gen_nums) except KeyError: max_gen = ' ' f = open(self.logfile, 'a') f.write('{time}: {gen}: {pop}\n'.format(time=now(), pop=','.join(ids), gen=max_gen)) f.close() def is_uniform(self, func, min_std, pop=None): """Tests whether the current population is uniform or diverse. Returns True if uniform, False otherwise. Parameters: func: function that takes one argument an atoms object and returns a value that will be used for testing against the rest of the population. min_std: int or float The minimum standard deviation, if the population has a lower std dev it is uniform. pop: list, optional use this list of Atoms objects instead of the current population. """ if pop is None: pop = self.pop vals = [func(a) for a in pop] stddev = np.std(vals) if stddev < min_std: return True return False def mass_extinction(self, ids): """Kills every candidate in the database with gaid in the supplied list of ids. Typically used on the main part of the current population if the diversity is to small. Parameters: ids: list list of ids of candidates to be killed. """ for confid in ids: self.dc.kill_candidate(confid) self.pop = [] class RandomPopulation(Population): def __init__(self, data_connection, population_size, comparator=None, logfile=None, exclude_used_pairs=False, bad_candidates=0, use_extinct=False): self.exclude_used_pairs = exclude_used_pairs self.bad_candidates = bad_candidates Population.__init__(self, data_connection, population_size, comparator, logfile, use_extinct) def __initialize_pop__(self): """ Private method that initalizes the population when the population is created. """ # Get all relaxed candidates from the database ue = self.use_extinct all_cand = self.dc.get_all_relaxed_candidates(use_extinct=ue) all_cand.sort(key=lambda x: get_raw_score(x), reverse=True) # all_cand.sort(key=lambda x: x.get_potential_energy()) if len(all_cand) > 0: # Fill up the population with the self.pop_size most stable # unique candidates. ratings = [] best_raw = get_raw_score(all_cand[0]) i = 0 while i < len(all_cand): c = all_cand[i] i += 1 eq = False for a in self.pop: if self.comparator.looks_like(a, c): eq = True break if not eq: if len(self.pop) < self.pop_size - self.bad_candidates: self.pop.append(c) else: exp_fact = exp(get_raw_score(c) / best_raw) ratings.append([c, (exp_fact - 1) * random()]) ratings.sort(key=itemgetter(1), reverse=True) for i in range(self.bad_candidates): self.pop.append(ratings[i][0]) for a in self.pop: a.info['looks_like'] = count_looks_like(a, all_cand, self.comparator) self.all_cand = all_cand self.__calc_participation__() def update(self): """ The update method in Population will add to the end of the population, that can't be used here since we might have bad candidates that need to stay in the population, therefore just recalc the population every time. """ self.pop = [] self.__initialize_pop__() self._write_log() def get_one_candidate(self): """Returns one candidates at random.""" if len(self.pop) < 1: self.update() if len(self.pop) < 1: return None t = randrange(0, len(self.pop), 1) c = self.pop[t] return c.copy() def get_two_candidates(self): """Returns two candidates at random.""" if len(self.pop) < 2: self.update() if len(self.pop) < 2: return None c1 = self.pop[0] c2 = self.pop[0] used_before = False while c1.info['confid'] == c2.info['confid'] and not used_before: t = randrange(0, len(self.pop), 1) c1 = self.pop[t] t = randrange(0, len(self.pop), 1) c2 = self.pop[t] c1id = c1.info['confid'] c2id = c2.info['confid'] used_before = (tuple(sorted([c1id, c2id])) in self.pairs and self.exclude_used_pairs) return (c1.copy(), c2.copy()) class FitnessSharingPopulation(Population): """ Fitness sharing population that penalizes structures if they are too similar. This is determined by a distance measure Parameters: comp_key: string Key where the distance measure can be found in the atoms.info['key_value_pairs'] dictionary. threshold: float or int Value above which no penalization of the fitness takes place alpha_sh: float or int Determines the shape of the sharing function. Default is 1, which gives a linear sharing function. """ def __init__(self, data_connection, population_size, comp_key, threshold, alpha_sh=1., comparator=None, logfile=None, use_extinct=False): self.comp_key = comp_key self.dt = threshold # dissimilarity threshold self.alpha_sh = alpha_sh self.fit_scaling = 1. self.sh_cache = dict() Population.__init__(self, data_connection, population_size, comparator, logfile, use_extinct) def __get_fitness__(self, candidates): """Input should be sorted according to raw_score.""" max_s = get_raw_score(candidates[0]) min_s = get_raw_score(candidates[-1]) T = min_s - max_s shared_fit = [] for c in candidates: sc = get_raw_score(c) obj_fit = 0.5 * (1. - tanh(2. * (sc - max_s) / T - 1.)) m = 1. ck = c.info['key_value_pairs'][self.comp_key] for other in candidates: if other != c: name = tuple(sorted([c.info['confid'], other.info['confid']])) if name not in self.sh_cache: ok = other.info['key_value_pairs'][self.comp_key] d = abs(ck - ok) if d < self.dt: v = 1 - (d / self.dt)**self.alpha_sh self.sh_cache[name] = v else: self.sh_cache[name] = 0 m += self.sh_cache[name] shf = (obj_fit ** self.fit_scaling) / m shared_fit.append(shf) return shared_fit def update(self): """ The update method in Population will add to the end of the population, that can't be used here since the shared fitness will change for all candidates when new are added, therefore just recalc the population every time. """ self.pop = [] self.__initialize_pop__() self._write_log() def __initialize_pop__(self): # Get all relaxed candidates from the database ue = self.use_extinct all_cand = self.dc.get_all_relaxed_candidates(use_extinct=ue) all_cand.sort(key=lambda x: get_raw_score(x), reverse=True) if len(all_cand) > 0: shared_fit = self.__get_fitness__(all_cand) all_sorted = list(zip(*sorted(zip(shared_fit, all_cand), reverse=True)))[1] # Fill up the population with the self.pop_size most stable # unique candidates. i = 0 while i < len(all_sorted) and len(self.pop) < self.pop_size: c = all_sorted[i] i += 1 eq = False for a in self.pop: if self.comparator.looks_like(a, c): eq = True break if not eq: self.pop.append(c) for a in self.pop: a.info['looks_like'] = count_looks_like(a, all_cand, self.comparator) self.all_cand = all_cand def get_two_candidates(self): """ Returns two candidates for pairing employing the fitness criteria from L.B. Vilhelmsen et al., JACS, 2012, 134 (30), pp 12807-12816 and the roulete wheel selection scheme described in R.L. Johnston Dalton Transactions, Vol. 22, No. 22. (2003), pp. 4193-4207 """ if len(self.pop) < 2: self.update() if len(self.pop) < 2: return None fit = self.__get_fitness__(self.pop) fmax = max(fit) c1 = self.pop[0] c2 = self.pop[0] while c1.info['confid'] == c2.info['confid']: nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c1 = self.pop[t] nnf = False nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c2 = self.pop[t] nnf = False return (c1.copy(), c2.copy()) class RankFitnessPopulation(Population): """ Ranks the fitness relative to set variable to flatten the surface in a certain direction such that mating across variable is equally likely irrespective of raw_score. Parameters: variable_function: function A function that takes as input an Atoms object and returns the variable that differentiates the ranks. exp_function: boolean If True use an exponential function for ranking the fitness. If False use the same as in Population. Default True. exp_prefactor: float The prefactor used in the exponential fitness scaling function. Default 0.5 """ def __init__(self, data_connection, population_size, variable_function, comparator=None, logfile=None, use_extinct=False, exp_function=True, exp_prefactor=0.5): self.exp_function = exp_function self.exp_prefactor = exp_prefactor self.vf = variable_function # The current fitness is set at each update of the population self.current_fitness = None Population.__init__(self, data_connection, population_size, comparator, logfile, use_extinct) def get_rank(self, rcand, key=None): # Set the initial order of the candidates, will need to # be returned in this order at the end of ranking. ordered = list(zip(range(len(rcand)), rcand)) # Niche and rank candidates. rec_nic = [] rank_fit = [] for o, c in ordered: if o not in rec_nic: ntr = [] ce1 = self.vf(c) rec_nic.append(o) ntr.append([o, c]) for oother, cother in ordered: if oother not in rec_nic: ce2 = self.vf(cother) if ce1 == ce2: # put the now processed in oother # in rec_nic as well rec_nic.append(oother) ntr.append([oother, cother]) # Each niche is sorted according to raw_score and # assigned a fitness according to the ranking of # the candidates ntr.sort(key=lambda x: x[1].info['key_value_pairs'][key], reverse=True) start_rank = -1 cor = 0 for on, cn in ntr: rank = start_rank - cor rank_fit.append([on, cn, rank]) cor += 1 # The original order is reformed rank_fit.sort(key=itemgetter(0), reverse=False) return np.array(list(zip(*rank_fit))[2]) def __get_fitness__(self, candidates): expf = self.exp_function rfit = self.get_rank(candidates, key='raw_score') if not expf: rmax = max(rfit) rmin = min(rfit) T = rmin - rmax # If using obj_rank probability, must have non-zero T val. # pop_size must be greater than number of permutations. # We test for this here msg = "Equal fitness for best and worst candidate in the " msg += "population! Fitness scaling is impossible! " msg += "Try with a larger population." assert T != 0., msg return 0.5 * (1. - np.tanh(2. * (rfit - rmax) / T - 1.)) else: return self.exp_prefactor ** (-rfit - 1) def update(self): """ The update method in Population will add to the end of the population, that can't be used here since the fitness will potentially change for all candidates when new are added, therefore just recalc the population every time. """ self.pop = [] self.__initialize_pop__() self.current_fitness = self.__get_fitness__(self.pop) self._write_log() def __initialize_pop__(self): # Get all relaxed candidates from the database ue = self.use_extinct all_cand = self.dc.get_all_relaxed_candidates(use_extinct=ue) all_cand.sort(key=lambda x: get_raw_score(x), reverse=True) if len(all_cand) > 0: fitf = self.__get_fitness__(all_cand) all_sorted = list(zip(fitf, all_cand)) all_sorted.sort(key=itemgetter(0), reverse=True) sort_cand = [] for _, t2 in all_sorted: sort_cand.append(t2) all_sorted = sort_cand # Fill up the population with the self.pop_size most stable # unique candidates. i = 0 while i < len(all_sorted) and len(self.pop) < self.pop_size: c = all_sorted[i] c_vf = self.vf(c) i += 1 eq = False for a in self.pop: a_vf = self.vf(a) # Only run comparator if the variable_function (self.vf) # returns the same. If it returns something different the # candidates are inherently different. # This is done to speed up. if a_vf == c_vf: if self.comparator.looks_like(a, c): eq = True break if not eq: self.pop.append(c) self.all_cand = all_cand def get_two_candidates(self): """ Returns two candidates for pairing employing the roulete wheel selection scheme described in R.L. Johnston Dalton Transactions, Vol. 22, No. 22. (2003), pp. 4193-4207 """ if len(self.pop) < 2: self.update() if len(self.pop) < 2: return None # Use saved fitness fit = self.current_fitness fmax = max(fit) c1 = self.pop[0] c2 = self.pop[0] while c1.info['confid'] == c2.info['confid']: nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c1 = self.pop[t] nnf = False nnf = True while nnf: t = randrange(0, len(self.pop), 1) if fit[t] > random() * fmax: c2 = self.pop[t] nnf = False return (c1.copy(), c2.copy()) class MultiObjectivePopulation(RankFitnessPopulation): """ Allows for assignment of fitness based on a set of two variables such that fitness is ranked according to a Pareto-front of non-dominated candidates. Parameters ---------- abs_data: list Set of key_value_pairs in atoms object for which fitness should be assigned based on absolute value. rank_data: list Set of key_value_pairs in atoms object for which data should be ranked in order to ascribe fitness. variable_function: function A function that takes as input an Atoms object and returns the variable that differentiates the ranks. Only use if data is ranked. exp_function: boolean If True use an exponential function for ranking the fitness. If False use the same as in Population. Default True. exp_prefactor: float The prefactor used in the exponential fitness scaling function. Default 0.5 """ def __init__(self, data_connection, population_size, variable_function=None, comparator=None, logfile=None, use_extinct=False, abs_data=None, rank_data=None, exp_function=True, exp_prefactor=0.5): # The current fitness is set at each update of the population self.current_fitness = None if rank_data is None: rank_data = [] self.rank_data = rank_data if abs_data is None: abs_data = [] self.abs_data = abs_data RankFitnessPopulation.__init__(self, data_connection, population_size, variable_function, comparator, logfile, use_extinct, exp_function, exp_prefactor) def get_nonrank(self, nrcand, key=None): """"Returns a list of fitness values.""" nrc_list = [] for nrc in nrcand: nrc_list.append(nrc.info['key_value_pairs'][key]) return nrc_list def __get_fitness__(self, candidates): # There are no defaults set for the datasets to be # used in this function, as such we test that the # user has specified at least two here. msg = "This is a multi-objective fitness function" msg += " so there must be at least two datasets" msg += " stated in the rank_data and abs_data variables" assert len(self.rank_data) + len(self.abs_data) >= 2, msg expf = self.exp_function all_fitnesses = [] used = set() for rd in self.rank_data: used.add(rd) # Build ranked fitness based on rd all_fitnesses.append(self.get_rank(candidates, key=rd)) for d in self.abs_data: if d not in used: used.add(d) # Build fitness based on d all_fitnesses.append(self.get_nonrank(candidates, key=d)) # Set the initial order of the ranks, will need to # be returned in this order at the end. fordered = list(zip(range(len(all_fitnesses[0])), *all_fitnesses)) mvf_rank = -1 # Start multi variable rank at -1. rec_vrc = [] # A record of already ranked candidates. mvf_list = [] # A list for all candidate ranks. # Sort by raw_score_1 in case this is different from # the stored raw_score() variable that all_cands are # sorted by. fordered.sort(key=itemgetter(1), reverse=True) # Niche candidates with equal or better raw_score to # current candidate. for a in fordered: order, rest = a[0], a[1:] if order not in rec_vrc: pff = [] pff2 = [] rec_vrc.append(order) pff.append((order, rest)) for b in fordered: border, brest = b[0], b[1:] if border not in rec_vrc: if np.any(np.array(brest) >= np.array(rest)): pff.append((border, brest)) # Remove any candidate from pff list that is dominated # by another in the list. for na in pff: norder, nrest = na[0], na[1:] dom = False for nb in pff: nborder, nbrest = nb[0], nb[1:] if norder != nborder: if np.all(np.array(nbrest) > np.array(nrest)): dom = True if not dom: pff2.append((norder, nrest)) # Assign pareto rank from -1 to -N niches. for ffa in pff2: fforder, ffrest = ffa[0], ffa[1:] rec_vrc.append(fforder) mvf_list.append((fforder, mvf_rank, ffrest)) mvf_rank = mvf_rank - 1 # The original order is reformed mvf_list.sort(key=itemgetter(0), reverse=False) rfro = np.array(list(zip(*mvf_list))[1]) if not expf: rmax = max(rfro) rmin = min(rfro) T = rmin - rmax # If using obj_rank probability, must have non-zero T val. # pop_size must be greater than number of permutations. # We test for this here msg = "Equal fitness for best and worst candidate in the " msg += "population! Fitness scaling is impossible! " msg += "Try with a larger population." assert T != 0., msg return 0.5 * (1. - np.tanh(2. * (rfro - rmax) / T - 1.)) else: return self.exp_prefactor ** (-rfro - 1) def __initialize_pop__(self): # Get all relaxed candidates from the database ue = self.use_extinct all_cand = self.dc.get_all_relaxed_candidates(use_extinct=ue) all_cand.sort(key=lambda x: get_raw_score(x), reverse=True) if len(all_cand) > 0: fitf = self.__get_fitness__(all_cand) all_sorted = list(zip(fitf, all_cand)) all_sorted.sort(key=itemgetter(0), reverse=True) sort_cand = [] for _, t2 in all_sorted: sort_cand.append(t2) all_sorted = sort_cand # Fill up the population with the self.pop_size most stable # unique candidates. i = 0 while i < len(all_sorted) and len(self.pop) < self.pop_size: c = all_sorted[i] # Use variable_function to decide whether to run comparator # if the function has been defined by the user. This does not # need to be dependent on using the rank_data function. if self.vf is not None: c_vf = self.vf(c) i += 1 eq = False for a in self.pop: if self.vf is not None: a_vf = self.vf(a) # Only run comparator if the variable_function # (self.vf) returns the same. If it returns something # different the candidates are inherently different. # This is done to speed up. if a_vf == c_vf: if self.comparator.looks_like(a, c): eq = True break else: if self.comparator.looks_like(a, c): eq = True break if not eq: self.pop.append(c) self.all_cand = all_cand ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/relax_attaches.py000066400000000000000000000023731316323560300244740ustar00rootroot00000000000000""" An object which can be associated with a local relaxation in order to make the relaxations run more smoothly.""" from math import sqrt class VariansBreak(object): """ Helper class which can be attached to a structure optimization, in order to terminale stalling calculations. Parameters: atoms: Atoms object being optimized dyn: The relaxation object being used min_stdev: The limiting std. deviation in forces to terminate at N: The number of steps used to calculate the st. dev. """ def __init__(self, atoms, dyn, min_stdev=0.005, N=15): self.atoms = atoms self.dyn = dyn self.N = N self.forces = [] self.min_stdev = min_stdev def write(self): """ The method called by the optimizer in each step. """ if len(self.forces) >= self.N: self.forces.pop(0) fmax = (self.atoms.get_forces()**2).sum(axis=1).max()**0.5 self.forces.append(fmax) m = sum(self.forces) / float(len(self.forces)) stdev = sqrt(sum([(c - m)**2 for c in self.forces]) / float(len(self.forces))) if len(self.forces) >= self.N and stdev < self.min_stdev: self.dyn.converged = lambda x: True ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/slab_operators.py000066400000000000000000000464061316323560300245310ustar00rootroot00000000000000"""Operators that work on slabs. Allowed compositions are respected. Identical indexing of the slabs are assumed for the cut-splice operator.""" import random from operator import itemgetter from collections import Counter from itertools import permutations import numpy as np from ase.ga.offspring_creator import OffspringCreator from ase.ga.element_mutations import get_row_column try: import spglib except ImportError: spglib = None def permute2(atoms): i1 = random.choice(range(len(atoms))) sym1 = atoms[i1].symbol i2 = random.choice([a.index for a in atoms if a.symbol != sym1]) atoms[i1].symbol = atoms[i2].symbol atoms[i2].symbol = sym1 def replace_element(atoms, element_out, element_in): syms = np.array(atoms.get_chemical_symbols()) syms[syms == element_out] = element_in atoms.set_chemical_symbols(syms) def get_add_remove_lists(**kwargs): to_add, to_rem = [], [] for s, amount in kwargs.items(): if amount > 0: to_add.extend([s] * amount) elif amount < 0: to_rem.extend([s] * abs(amount)) return to_add, to_rem def get_minority_element(atoms): counter = Counter(atoms.get_chemical_symbols()) return sorted(counter.items(), key=itemgetter(1), reverse=False)[0][0] def minority_element_segregate(atoms, layer_tag=1): """Move the minority alloy element to the layer specified by the layer_tag, Atoms object should contain atoms with the corresponding tag.""" sym = get_minority_element(atoms) layer_indices = set([a.index for a in atoms if a.tag == layer_tag]) minority_indices = set([a.index for a in atoms if a.symbol == sym]) change_indices = minority_indices - layer_indices in_layer_not_sym = list(layer_indices - minority_indices) random.shuffle(in_layer_not_sym) if len(change_indices) > 0: for i, ai in zip(change_indices, in_layer_not_sym): atoms[i].symbol = atoms[ai].symbol atoms[ai].symbol = sym def same_layer_comp(atoms): unique_syms, comp = np.unique(sorted(atoms.get_chemical_symbols()), return_counts=True) l = get_layer_comps(atoms) sym_dict = dict((s, np.array(c) / len(l)) for s, c in zip(unique_syms, comp)) for la in l: correct_by = sym_dict.copy() lcomp = dict( zip(*np.unique([atoms[i].symbol for i in la], return_counts=True))) for s, num in lcomp.items(): correct_by[s] -= num to_add, to_rem = get_add_remove_lists(**correct_by) for add, rem in zip(to_add, to_rem): ai = random.choice([i for i in la if atoms[i].symbol == rem]) atoms[ai].symbol = add def get_layer_comps(atoms, eps=1e-2): lc = [] old_z = np.inf for z, ind in sorted([(a.z, a.index) for a in atoms]): if abs(old_z - z) < eps: lc[-1].append(ind) else: lc.append([ind]) old_z = z return lc def get_ordered_composition(syms, pools=None): if pools is None: pool_index = dict((sym, 0) for sym in set(syms)) else: pool_index = {} for sym in set(syms): for i, pool in enumerate(pools): if sym in pool: pool_index[sym] = i syms = [(sym, pool_index[sym], c) for sym, c in zip(*np.unique(syms, return_counts=True))] unique_syms, pn, comp = zip( *sorted(syms, key=lambda k: (k[1] - k[2], k[0]))) return (unique_syms, pn, comp) def dummy_func(*args): return class SlabOperator(OffspringCreator): def __init__(self, verbose=False, num_muts=1, allowed_compositions=None, distribution_correction_function=None, element_pools=None): OffspringCreator.__init__(self, verbose, num_muts=num_muts) self.allowed_compositions = allowed_compositions self.element_pools = element_pools if distribution_correction_function is None: self.dcf = dummy_func else: self.dcf = distribution_correction_function # Number of different elements i.e. [2, 1] if len(element_pools) == 2 # then 2 different elements in pool 1 is allowed but only 1 from pool 2 def get_symbols_to_use(self, syms): """Get the symbols to use for the offspring candidate. The returned list of symbols will respect self.allowed_compositions""" if self.allowed_compositions is None: return syms unique_syms, counts = np.unique(syms, return_counts=True) comp, unique_syms = zip(*sorted(zip(counts, unique_syms), reverse=True)) for cc in self.allowed_compositions: comp += (0,) * (len(cc) - len(comp)) if comp == tuple(sorted(cc)): return syms comp_diff = self.get_closest_composition_diff(comp) to_add, to_rem = get_add_remove_lists( **dict(zip(unique_syms, comp_diff))) for add, rem in zip(to_add, to_rem): tbc = [i for i in range(len(syms)) if syms[i] == rem] ai = random.choice(tbc) syms[ai] = add return syms def get_add_remove_elements(self, syms): if self.element_pools is None or self.allowed_compositions is None: return [], [] unique_syms, pool_number, comp = get_ordered_composition( syms, self.element_pools) stay_comp, stay_syms = [], [] add_rem = {} per_pool = len(self.allowed_compositions[0]) / len(self.element_pools) pool_count = np.zeros(len(self.element_pools), dtype=int) for pn, num, sym in zip(pool_number, comp, unique_syms): pool_count[pn] += 1 if pool_count[pn] <= per_pool: stay_comp.append(num) stay_syms.append(sym) else: add_rem[sym] = -num # collect elements from individual pools diff = self.get_closest_composition_diff(stay_comp) add_rem.update(dict((s, c) for s, c in zip(stay_syms, diff))) return get_add_remove_lists(**add_rem) def get_closest_composition_diff(self, c): comp = np.array(c) mindiff = 1e10 allowed_list = list(self.allowed_compositions) random.shuffle(allowed_list) for ac in allowed_list: diff = self.get_composition_diff(comp, ac) numdiff = sum([abs(i) for i in diff]) if numdiff < mindiff: mindiff = numdiff ccdiff = diff return ccdiff def get_composition_diff(self, c1, c2): difflen = len(c1) - len(c2) if difflen > 0: c2 += (0,) * difflen return np.array(c2) - c1 def get_possible_mutations(self, a): unique_syms, comp = np.unique(sorted(a.get_chemical_symbols()), return_counts=True) min_num = min([i for i in np.ravel(list(self.allowed_compositions)) if i > 0]) muts = set() for i, n in enumerate(comp): if n != 0: muts.add((unique_syms[i], n)) if n % min_num >= 0: for j in range(1, n // min_num): muts.add((unique_syms[i], min_num * j)) return list(muts) def get_all_element_mutations(self, a): """Get all possible mutations for the supplied atoms object given the element pools.""" muts = [] symset = set(a.get_chemical_symbols()) for sym in symset: for pool in self.element_pools: if sym in pool: muts.extend([(sym, s) for s in pool if s not in symset]) return muts def finalize_individual(self, indi): atoms_string = ''.join(indi.get_chemical_symbols()) indi.info['key_value_pairs']['atoms_string'] = atoms_string return OffspringCreator.finalize_individual(self, indi) class CutSpliceSlabCrossover(SlabOperator): def __init__(self, allowed_compositions=None, element_pools=None, verbose=False, num_muts=1, tries=1000, min_ratio=0.25, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function, element_pools=element_pools) self.tries = tries self.min_ratio = min_ratio self.descriptor = 'CutSpliceSlabCrossover' def get_new_individual(self, parents): f, m = parents indi = self.initialize_individual(f, self.operate(f, m)) indi.info['data']['parents'] = [i.info['confid'] for i in parents] parent_message = ': Parents {0} {1}'.format(f.info['confid'], m.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def operate(self, f, m): child = f.copy() fp = f.positions ma = np.max(fp.transpose(), axis=1) mi = np.min(fp.transpose(), axis=1) for _ in range(self.tries): # Find center point of cut rv = [random.random() for _ in range(3)] # random vector midpoint = (ma - mi) * rv + mi # Determine cut plane theta = random.random() * 2 * np.pi # 0,2pi phi = random.random() * np.pi # 0,pi e = np.array((np.sin(phi) * np.cos(theta), np.sin(theta) * np.sin(phi), np.cos(phi))) # Cut structures d2fp = np.dot(fp - midpoint, e) fpart = d2fp > 0 ratio = float(np.count_nonzero(fpart)) / len(f) if ratio < self.min_ratio or ratio > 1 - self.min_ratio: continue syms = np.where(fpart, f.get_chemical_symbols(), m.get_chemical_symbols()) dists2plane = abs(d2fp) # Correct the composition # What if only one element pool is represented in the offspring to_add, to_rem = self.get_add_remove_elements(syms) # Change elements closest to the cut plane for add, rem in zip(to_add, to_rem): tbc = [(dists2plane[i], i) for i in range(len(syms)) if syms[i] == rem] ai = sorted(tbc)[0][1] syms[ai] = add child.set_chemical_symbols(syms) break self.dcf(child) return child # Mutations: Random, MoveUp/Down/Left/Right, six or all elements class RandomCompositionMutation(SlabOperator): """Change the current composition to another of the allowed compositions. The allowed compositions should be input in the same order as the element pools, for example: element_pools = [['Au', 'Cu'], ['In', 'Bi']] allowed_compositions = [(6, 2), (5, 3)] means that there can be 5 or 6 Au and Cu, and 2 or 3 In and Bi. """ def __init__(self, verbose=False, num_muts=1, element_pools=None, allowed_compositions=None, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function, element_pools=element_pools) self.descriptor = 'RandomCompositionMutation' def get_new_individual(self, parents): f = parents[0] parent_message = ': Parent {0}'.format(f.info['confid']) if self.allowed_compositions is None: if len(set(f.get_chemical_symbols())) == 1: if self.element_pools is None: # We cannot find another composition without knowledge of # other allowed elements or compositions return None, self.descriptor + parent_message # Do the operation indi = self.initialize_individual(f, self.operate(f)) indi.info['data']['parents'] = [i.info['confid'] for i in parents] return (self.finalize_individual(indi), self.descriptor + parent_message) def operate(self, atoms): if self.allowed_compositions is None: n_elems = len(set(atoms.get_chemical_symbols())) n_atoms = len(atoms) allowed_comps = [c for c in permutations(range(1, n_atoms), n_elems) if sum(c) == n_atoms] # Sorting the composition to have the same order as in element_pools syms = atoms.get_chemical_symbols() unique_syms, _, comp = get_ordered_composition(syms, self.element_pools) # Choose the composition to change to for i, allowed in enumerate(allowed_comps): if comp == tuple(allowed): break comps_to_choose_from = np.delete(allowed_comps, i, axis=0) new_comp = random.choice(comps_to_choose_from) comp_diff = self.get_composition_diff(comp, new_comp) # Get difference from current composition to_add, to_rem = get_add_remove_lists( **dict(zip(unique_syms, comp_diff))) # Correct current composition syms = atoms.get_chemical_symbols() for add, rem in zip(to_add, to_rem): tbc = [i for i in range(len(syms)) if syms[i] == rem] ai = random.choice(tbc) syms[ai] = add atoms.set_chemical_symbols(syms) self.dcf(atoms) return atoms class RandomElementMutation(SlabOperator): def __init__(self, element_pools, verbose=False, num_muts=1, allowed_compositions=None, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function, element_pools=element_pools) self.descriptor = 'RandomElementMutation' def get_new_individual(self, parents): f = parents[0] # Do the operation indi = self.initialize_individual(f, self.operate(f)) indi.info['data']['parents'] = [i.info['confid'] for i in parents] parent_message = ': Parent {0}'.format(f.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def operate(self, atoms): mut = random.choice(self.get_all_element_mutations(atoms)) replace_element(atoms, *mut) self.dcf(atoms) return atoms class NeighborhoodElementMutation(SlabOperator): def __init__(self, element_pools, verbose=False, num_muts=1, allowed_compositions=None, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function, element_pools=element_pools) self.descriptor = 'NeighborhoodElementMutation' def get_new_individual(self, parents): f = parents[0] indi = self.initialize_individual(f, f) indi.info['data']['parents'] = [i.info['confid'] for i in parents] indi = self.operate(indi) parent_message = ': Parent {0}'.format(f.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def get_periodic_table_distance(self, s1, s2): rc1 = np.array(get_row_column(s1)) rc2 = np.array(get_row_column(s2)) return sum(np.abs(rc1 - rc2)) def operate(self, atoms): least_diff = 1e22 for mut in self.get_all_element_mutations(atoms): dist = self.get_periodic_table_distance(*mut) if dist < least_diff: poss_muts = [mut] least_diff = dist elif dist == least_diff: poss_muts.append(mut) chosen_mut = random.choice(poss_muts) replace_element(atoms, *chosen_mut) self.dcf(atoms) return atoms class SymmetrySlabPermutation(SlabOperator): """Permutes the atoms in the slab until it has a higher symmetry number.""" def __init__(self, verbose=False, num_muts=1, sym_goal=100, max_tries=50, allowed_compositions=None, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function) if spglib is None: print("SymmetrySlabPermutation needs spglib to function") assert sym_goal >= 1 self.sym_goal = sym_goal self.max_tries = max_tries self.descriptor = 'SymmetrySlabPermutation' def get_new_individual(self, parents): f = parents[0] # Permutation only makes sense if two different elements are present if len(set(f.get_chemical_symbols())) == 1: f = parents[1] if len(set(f.get_chemical_symbols())) == 1: return None, '{1} not possible in {0}'.format(f.info['confid'], self.descriptor) indi = self.initialize_individual(f, self.operate(f)) indi.info['data']['parents'] = [i.info['confid'] for i in parents] parent_message = ': Parent {0}'.format(f.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def operate(self, atoms): # Do the operation sym_num = 1 sg = self.sym_goal while sym_num < sg: for _ in range(self.max_tries): for _ in range(2): permute2(atoms) self.dcf(atoms) sym_num = spglib.get_symmetry_dataset(atoms)['number'] if sym_num >= sg: break sg -= 1 return atoms class RandomSlabPermutation(SlabOperator): def __init__(self, verbose=False, num_muts=1, allowed_compositions=None, distribution_correction_function=None): SlabOperator.__init__(self, verbose, num_muts, allowed_compositions, distribution_correction_function) self.descriptor = 'RandomSlabPermutation' def get_new_individual(self, parents): f = parents[0] # Permutation only makes sense if two different elements are present if len(set(f.get_chemical_symbols())) == 1: f = parents[1] if len(set(f.get_chemical_symbols())) == 1: return None, '{1} not possible in {0}'.format(f.info['confid'], self.descriptor) indi = self.initialize_individual(f, f) indi.info['data']['parents'] = [i.info['confid'] for i in parents] indi = self.operate(indi) parent_message = ': Parent {0}'.format(f.info['confid']) return (self.finalize_individual(indi), self.descriptor + parent_message) def operate(self, atoms): # Do the operation for _ in range(self.num_muts): permute2(atoms) self.dcf(atoms) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/standard_comparators.py000066400000000000000000000145501316323560300257170ustar00rootroot00000000000000import numpy as np from ase.ga import get_raw_score def get_sorted_dist_list(atoms, mic=False): """ Utility method used to calculate the sorted distance list describing the cluster in atoms. """ numbers = atoms.numbers unique_types = set(numbers) pair_cor = dict() for n in unique_types: i_un = [i for i in range(len(atoms)) if atoms[i].number == n] d = [] for i, n1 in enumerate(i_un): for n2 in i_un[i + 1:]: d.append(atoms.get_distance(n1, n2, mic)) d.sort() pair_cor[n] = np.array(d) return pair_cor class InteratomicDistanceComparator(object): """ An implementation of the comparison criteria described in L.B. Vilhelmsen and B. Hammer, PRL, 108, 126101 (2012) Parameters: n_top: The number of atoms being optimized by the GA. Default 0 - meaning all atoms. pair_cor_cum_diff: The limit in eq. 2 of the letter. pair_cor_max: The limit in eq. 3 of the letter dE: The limit of eq. 1 of the letter mic: Determines if distances are calculated using the minimum image convention """ def __init__(self, n_top=None, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False): self.pair_cor_cum_diff = pair_cor_cum_diff self.pair_cor_max = pair_cor_max self.dE = dE self.n_top = n_top or 0 self.mic = mic def looks_like(self, a1, a2): """ Return if structure a1 or a2 are similar or not. """ if len(a1) != len(a2): raise Exception('The two configurations are not the same size') # first we check the energy criteria dE = abs(a1.get_potential_energy() - a2.get_potential_energy()) if dE >= self.dE: return False # then we check the structure a1top = a1[-self.n_top:] a2top = a2[-self.n_top:] cum_diff, max_diff = self.__compare_structure__(a1top, a2top) if cum_diff < self.pair_cor_cum_diff and max_diff < self.pair_cor_max: return True def __compare_structure__(self, a1, a2): """ Private method for calculating the structural difference. """ p1 = get_sorted_dist_list(a1, mic=self.mic) p2 = get_sorted_dist_list(a2, mic=self.mic) numbers = a1.numbers total_cum_diff = 0. max_diff = 0 for n in p1.keys(): cum_diff = 0. c1 = p1[n] c2 = p2[n] assert len(c1) == len(c2) if len(c1) == 0: continue t_size = np.sum(c1) d = np.abs(c1 - c2) cum_diff = np.sum(d) max_diff = np.max(d) ntype = float(sum([i == n for i in numbers])) total_cum_diff += cum_diff / t_size * ntype / float(len(numbers)) return (total_cum_diff, max_diff) class SequentialComparator(object): """Use more than one comparison class and test them all in sequence. Supply a list of integers if for example two comparison tests both need to be positive if two atoms objects are truly equal. Ex: methods = [a, b, c, d], logics = [0, 1, 1, 2] if a or d is positive -> return True if b and c are positive -> return True if b and not c are positive (or vice versa) -> return False """ def __init__(self, methods, logics=None): if not isinstance(methods, list): methods = [methods] if logics is None: logics = [i for i in range(len(methods))] if not isinstance(logics, list): logics = [logics] assert len(logics) == len(methods) self.methods = [] self.logics = [] for m, l in zip(methods, logics): if hasattr(m, 'looks_like'): self.methods.append(m) self.logics.append(l) def looks_like(self, a1, a2): mdct = dict((l, []) for l in self.logics) for m, l in zip(self.methods, self.logics): mdct[l].append(m) for methods in mdct.values(): for m in methods: if not m.looks_like(a1, a2): break else: return True return False class StringComparator(object): """Compares the calculated hash strings. These strings should be stored in atoms.info['key_value_pairs'][key1] and atoms.info['key_value_pairs'][key2] ... where the keys should be supplied as parameters i.e. StringComparator(key1, key2, ...) """ def __init__(self, *keys): self.keys = keys def looks_like(self, a1, a2): for k in self.keys: if a1.info['key_value_pairs'][k] == a2.info['key_value_pairs'][k]: return True return False class EnergyComparator(object): """Compares the energy of the supplied atoms objects using get_potential_energy(). Parameters: dE: the difference in energy below which two energies are deemed equal. """ def __init__(self, dE=0.02): self.dE = dE def looks_like(self, a1, a2): dE = abs(a1.get_potential_energy() - a2.get_potential_energy()) if dE >= self.dE: return False else: return True class RawScoreComparator(object): """Compares the raw_score of the supplied individuals objects using a1.info['key_value_pairs']['raw_score']. Parameters: dist: the difference in raw_score below which two scores are deemed equal. """ def __init__(self, dist=0.02): self.dist = dist def looks_like(self, a1, a2): d = abs(get_raw_score(a1) - get_raw_score(a2)) if d >= self.dist: return False else: return True class NoComparator(object): """Returns False always. If you don't want any comparator.""" def looks_like(self, *args): return False class AtomsComparator(object): """Compares the Atoms objects directly.""" def looks_like(self, a1, a2): return a1 == a2 class CompositionComparator(object): """Compares the composition of the Atoms objects.""" def looks_like(self, a1, a2): return a1.get_chemical_formula() == a2.get_chemical_formula() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/standardmutations.py000066400000000000000000000211751316323560300252520ustar00rootroot00000000000000""" A collection of mutations that can be used. """ import numpy as np from random import random, randrange from math import ceil, cos, sin, pi from ase.ga.utilities import atoms_too_close from ase.ga.utilities import atoms_too_close_two_sets from ase.ga.offspring_creator import OffspringCreator from ase import Atoms class RattleMutation(OffspringCreator): """ An implementation of the rattle mutation as described in R.L. Johnston Dalton Transactions, Vol. 22, No. 22. (2003), pp. 4193-4207 Parameters: blmin: Dictionary defining the minimum distance between atoms after the rattle. n_top: Number of atoms optimized by the GA. rattle_strength: Strength with which the atoms are moved. rattle_prop: The probability with which each atom is rattled. """ def __init__(self, blmin, n_top, rattle_strength=0.8, rattle_prop=0.4, verbose=False): OffspringCreator.__init__(self, verbose) self.blmin = blmin self.n_top = n_top self.rattle_strength = rattle_strength self.rattle_prop = rattle_prop self.descriptor = 'RattleMutation' self.min_inputs = 1 def get_new_individual(self, parents): f = parents[0] indi = self.mutate(f) if indi is None: return indi, 'mutation: rattle' indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid']] return self.finalize_individual(indi), 'mutation: rattle' def mutate(self, atoms): """ Does the actual mutation. """ slab = atoms[0:len(atoms) - self.n_top] pos_ref = atoms.get_positions()[-self.n_top:] num_top = atoms.numbers[-self.n_top:] st = 2. * self.rattle_strength count = 0 tc = True while tc and count < 1000: pos = pos_ref.copy() for i in range(len(pos)): if random() < self.rattle_prop: r = np.array([random() for r in range(3)]) pos[i] = pos[i] + st * (r - 0.5) top = Atoms(num_top, positions=pos, cell=slab.get_cell(), pbc=slab.get_pbc()) tc = atoms_too_close(top, self.blmin) if not tc: tc = atoms_too_close_two_sets(top, slab, self.blmin) count += 1 if count == 1000: return None tot = slab + top return tot class PermutationMutation(OffspringCreator): """Mutation that permutes a percentage of the atom types in the cluster. Parameters: n_top: Number of atoms optimized by the GA. probability: The probability with which an atom is permuted. """ def __init__(self, n_top, probability=0.33, verbose=False): OffspringCreator.__init__(self, verbose) self.n_top = n_top self.probability = probability self.descriptor = 'PermutationMutation' self.min_inputs = 1 def get_new_individual(self, parents): f = parents[0] indi = self.mutate(f) if indi is None: return indi, 'mutation: permutation' indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid']] return self.finalize_individual(indi), 'mutation: permutation' def mutate(self, atoms): """ Does the actual mutation. """ a = atoms.copy() s = self.n_top p = a.get_positions()[-s:] n = a.numbers[-s:] n_un = list(set(n)) assert len(n_un) > 1, 'Permutations with one atomic type is not valid' m = int(ceil(float(s) * self.probability / 2.)) for _ in range(m): i = j = 0 while n[i] == n[j]: i = randrange(0, s) j = randrange(0, s) t = p[i].copy() p[i] = p[j].copy() p[j] = t p_tot = a.get_positions() p_tot[-s:] = p a.set_positions(p_tot) return a class MirrorMutation(OffspringCreator): """ A mirror mutation, as described in TO BE PUBLISHED. This mutation mirrors half of the cluster in a randomly oriented cutting plane discarding the other half. Parameters: blmin: Dictionary defining the minimum allowed distance between atoms. n_top: Number of atoms the GA optimizes. reflect: Defines if the mirrored half is also reflected perpendicular to the mirroring plane. """ def __init__(self, blmin, n_top, reflect=False, verbose=False): OffspringCreator.__init__(self, verbose) self.blmin = blmin self.n_top = n_top self.reflect = reflect self.descriptor = 'MirrorMutation' self.min_inputs = 1 def get_new_individual(self, parents): f = parents[0] indi = self.mutate(f) if indi is None: return indi, 'mutation: mirror' indi = self.initialize_individual(f, indi) indi.info['data']['parents'] = [f.info['confid']] return self.finalize_individual(indi), 'mutation: mirror' def mutate(self, atoms): """ Do the mutation of the atoms input. """ reflect = self.reflect tc = True slab = atoms[0:len(atoms) - self.n_top] top = atoms[len(atoms) - self.n_top: len(atoms)] num = top.numbers unique_types = list(set(num)) nu = dict() for u in unique_types: nu[u] = sum(num == u) n_tries = 1000 counter = 0 changed = False while tc and counter < n_tries: counter += 1 cand = top.copy() pos = cand.get_positions() cm = np.average(top.get_positions(), axis=0) # first select a randomly oriented cutting plane theta = pi * random() phi = 2. * pi * random() n = (cos(phi) * sin(theta), sin(phi) * sin(theta), cos(theta)) n = np.array(n) # Calculate all atoms signed distance to the cutting plane D = [] for (i, p) in enumerate(pos): d = np.dot(p - cm, n) D.append((i, d)) # Sort the atoms by their signed distance D.sort(key=lambda x: x[1]) nu_taken = dict() # Select half of the atoms needed for a full cluster p_use = [] n_use = [] for (i, d) in D: if num[i] not in nu_taken.keys(): nu_taken[num[i]] = 0 if nu_taken[num[i]] < nu[num[i]] / 2.: p_use.append(pos[i]) n_use.append(num[i]) nu_taken[num[i]] += 1 # calculate the mirrored position and add these. pn = [] for p in p_use: pt = p - 2. * np.dot(p - cm, n) * n if reflect: pt = -pt + 2 * cm + 2 * n * np.dot(pt - cm, n) pn.append(pt) n_use.extend(n_use) p_use.extend(pn) # In the case of an uneven number of # atoms we need to add one extra for n in nu.keys(): if nu[n] % 2 == 0: continue while sum(n_use == n) > nu[n]: for i in range(int(len(n_use) / 2), len(n_use)): if n_use[i] == n: del p_use[i] del n_use[i] break assert sum(n_use == n) == nu[n] # Make sure we have the correct number of atoms # and rearrange the atoms so they are in the right order for i in range(len(n_use)): if num[i] == n_use[i]: continue for j in range(i + 1, len(n_use)): if n_use[j] == num[i]: tn = n_use[i] tp = p_use[i] n_use[i] = n_use[j] p_use[i] = p_use[j] p_use[j] = tp n_use[j] = tn # Finally we check that nothing is too close in the end product. cand = Atoms(num, p_use, cell=slab.get_cell(), pbc=slab.get_pbc()) tc = atoms_too_close(cand, self.blmin) if tc: continue tc = atoms_too_close_two_sets(slab, cand, self.blmin) if not changed and counter > n_tries // 2: reflect = not reflect changed = True tot = slab + cand if counter == n_tries: return None return tot ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/startgenerator.py000066400000000000000000000101471316323560300245470ustar00rootroot00000000000000""" Methods for generating new random starting candidates. """ from random import shuffle import numpy as np from ase import Atoms from ase.ga.utilities import get_mic_distance def random_pos(box): """ Returns a random position within the box described by the input box. """ p0 = box[0] vspan = box[1] r = np.random.random((1, len(vspan))) pos = p0.copy() for i in range(len(vspan)): pos += vspan[i] * r[0, i] return pos class StartGenerator(object): """ Class used to generate random starting candidates. The candidates are generated by iteratively adding in one atom at a time within the box described. Parameters: slab: The atoms object describing the super cell to optimize within. atom_numbers: A list of the atomic numbers that needs to be optimized. closed_allowed_distances: A dictionary describing how close two atoms can be. box_to_place_in: The box atoms are placed within. The format is [p0, [v1, v2, v3]] with positions being generated as p0 + r1 * v1 + r2 * v2 + r3 + v3. Default value: [[0, 0, 0], [Unit cell of the slab]] """ def __init__(self, slab, atom_numbers, closest_allowed_distances, box_to_place_in=None): self.slab = slab self.atom_numbers = atom_numbers self.blmin = closest_allowed_distances if box_to_place_in is None: p0 = np.array([0., 0., 0.]) cell = self.slab.get_cell() self.box = [p0, [cell[0, :], cell[1, :], cell[2, :]]] else: self.box = box_to_place_in def get_new_candidate(self): """ Returns a new candidate. """ N = len(self.atom_numbers) cell = self.slab.get_cell() pbc = self.slab.get_pbc() # The ordering is shuffled so different atom # types are added in random order. order = list(range(N)) shuffle(order) num = list(range(N)) for i in range(N): num[i] = self.atom_numbers[order[i]] blmin = self.blmin # Runs until we have found a valid candidate. while True: pos = np.zeros((N, 3)) # Make each new position one at a time. for i in range(N): pos_found = False pi = None while not pos_found: pi = random_pos(self.box) if i == 0: break isolated = True too_close = False for j in range(i): d = get_mic_distance(pi, pos[j], cell, pbc) bij_min = blmin[(num[i], num[j])] bij_max = bij_min * 2. if d < bij_min: too_close = True break if d < bij_max: isolated = False # A new atom must be near something already there, # but not too close. if not isolated and not too_close: pos_found = True pos[i] = pi # Put everything back in the original order. pos_ordered = np.zeros((N, 3)) for i in range(N): pos_ordered[order[i]] = pos[i] pos = pos_ordered top = Atoms(self.atom_numbers, positions=pos, pbc=pbc, cell=cell) # At last it is verified that the new cluster is not too close # to the slab it is supported on. tf = False for i in range(len(self.slab)): for j in range(len(top)): dmin = blmin[(self.slab.numbers[i], top.numbers[j])] d = get_mic_distance(self.slab.positions[i], top.positions[j], cell, pbc) if d < dmin: tf = True break if tf: break if not tf: break return self.slab + top ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/tools/000077500000000000000000000000001316323560300222665ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/tools/get_all_candidates000077500000000000000000000021751316323560300260070ustar00rootroot00000000000000#!/usr/bin/env python """ Program for extracting all relaxed structures from a GA run. """ from ase.ga.data import DataConnection from ase.io import write from optparse import OptionParser description = 'Extracts all relaxed structures and ' + \ 'saves them to all_candidates.traj' p = OptionParser(usage='%prog', description=description) p.add_option('-o', '--output', default='all_candidates.traj', help='Traj file to save the candidates to') p.add_option('-d', '--db', default='gadb.db', help='SQLite db file') p.add_option('-s', '--sort', default='energy', help='Valid values are energy and time,' 'if the candidates should be sorted by' 'energy or by creation time.') opt, args = p.parse_args() dbfile = opt.db outputfile = opt.output sort = opt.sort da = DataConnection(dbfile) all_trajs = da.get_all_relaxed_candidates() if sort == 'energy': all_trajs.sort(key=lambda x: -x.get_potential_energy()) elif sort == 'time': all_trajs.sort(key=lambda x: x.info['confid']) write(outputfile, all_trajs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/tools/remove_from_queue000077500000000000000000000023431316323560300257420ustar00rootroot00000000000000#!/usr/bin/env python """ Program that edits the database in order to requeue a candidate in case the relaxation went wrong. """ from ase.ga.data import DataConnection from optparse import OptionParser parser = OptionParser( description='Show which structures are queued, but not done') parser.add_option('-f', '--db-file', default='ga_db.sql', help='Location of the SQLite DB file') parser.add_option('-r', '--remove-all', default='No') opt, args = parser.parse_args() db_file = opt.db_file dc = DataConnection(db_file) l = dc.get_all_candidates_in_queue() s = 'h' while s.find('Q') == -1 and len(l) > 0: for s in l: print('Queued but not done: %d' % int(s)) if opt.remove_all == 'Yes': s = '' for ni in l: s += '%d ' % ni else: s = raw_input('Choose which you want to requeue or type Q to quit: ') if s.find('Q') != -1: exit() iline = s.split() for i in iline: i = int(i.strip()) assert i in l, 'Not a valid ID' dc.remove_from_queue(i) print('Structure removed from queue %d' % i) if opt.remove_all == 'Yes': exit() l = dc.get_all_candidates_in_queue() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/ga/utilities.py000066400000000000000000000371061316323560300235220ustar00rootroot00000000000000""" Various utility methods used troughout the GA. """ from ase.data import covalent_radii import itertools import numpy as np from ase.io import write, read import os import time import math from ase.ga import get_neighbor_list def closest_distances_generator(atom_numbers, ratio_of_covalent_radii): """ Generates the blmin dict used across the GA. The distances are based on the covalent radii of the atoms. """ cr = covalent_radii ratio = ratio_of_covalent_radii blmin = dict() for i in atom_numbers: blmin[(i, i)] = cr[i] * 2 * ratio for j in atom_numbers: if i == j: continue if (i, j) in blmin.keys(): continue blmin[(i, j)] = blmin[(j, i)] = ratio * (cr[i] + cr[j]) return blmin def get_mic_distance(p1, p2, cell, pbc): """ This method calculates the shortest distance between p1 and p2 through the cell boundaries defined by cell and pbc. This method works for reasonable unit cells, but not for extremely elongated ones. """ ct = cell.T pos = np.mat((p1, p2)) scaled = np.linalg.solve(ct, pos.T).T for i in range(3): if pbc[i]: scaled[:, i] %= 1.0 scaled[:, i] %= 1.0 P = np.dot(scaled, cell) pbc_directions = [[-1, 1] * int(direction) + [0] for direction in pbc] translations = np.mat(list(itertools.product(*pbc_directions))).T p0r = np.tile(np.reshape(P[0, :], (3, 1)), (1, translations.shape[1])) p1r = np.tile(np.reshape(P[1, :], (3, 1)), (1, translations.shape[1])) dp_vec = p0r + ct * translations d = np.min(np.power(p1r - dp_vec, 2).sum(axis=0))**0.5 return d def db_call_with_error_tol(db_cursor, expression, args=[]): """ In case the GA is used on older versions of networking filesystems there might be some delays. For this reason some extra error tolerance when calling the SQLite db is employed. """ import sqlite3 i = 0 while i < 10: try: db_cursor.execute(expression, args) return except sqlite3.OperationalError as e: print(e) time.sleep(2.) i += 1 raise sqlite3.OperationalError( 'Database still locked after 10 attempts (20 s)') def save_trajectory(confid, trajectory, folder): """ Saves traj files to the database folder. This method should never be used directly, but only through the DataConnection object. """ fname = os.path.join(folder, 'traj%05d.traj' % confid) write(fname, trajectory) return fname def get_trajectory(fname): """ Extra error tolerance when loading traj files. """ fname = str(fname) try: t = read(fname) except IOError as e: print('get_trajectory error ' + e) return t def atoms_too_close(a, bl): """ Checks if any atoms in a are too close, as defined by the distances in the bl dictionary. """ num = a.numbers for i in range(len(a)): for j in range(i + 1, len(a)): if a.get_distance(i, j, True) < bl[(num[i], num[j])]: return True return False def atoms_too_close_two_sets(a, b, bl): """ Checks if any atoms in a are too close to an atom in b, as defined by the bl dictionary. """ tot = a + b num = tot.numbers for i in range(len(a)): for j in range(len(a), len(tot)): if tot.get_distance(i, j, True) < bl[(num[i], num[j])]: return True return False def get_all_atom_types(slab, atom_numbers_to_optimize): """ Utility method used to extract all unique atom types from the atoms object slab and the list of atomic numbers atom_numbers_to_optimize. """ from_slab = list(set(slab.numbers)) from_top = list(set(atom_numbers_to_optimize)) from_slab.extend(from_top) return list(set(from_slab)) def get_distance_matrix(atoms, self_distance=1000): """ NB: This function is way slower than atoms.get_all_distances() Returns a numpy matrix with the distances between the atoms in the supplied atoms object, with the indices of the matrix corresponding to the indices in the atoms object. The parameter self_distance will be put in the diagonal elements ([i][i]) """ dm = np.zeros([len(atoms), len(atoms)]) for i in range(len(atoms)): dm[i][i] = self_distance for j in range(i + 1, len(atoms)): rij = atoms.get_distance(i, j) dm[i][j] = rij dm[j][i] = rij return dm def get_rdf(atoms, rmax, nbins, distance_matrix=None, elements=None, no_dists=False): """ Returns two numpy arrays; the radial distribution function and the corresponding distances of the supplied atoms object. If no_dists = True then only the first array is returned. Parameters: rmax : float The maximum distance that will contribute to the rdf. nbins : int Number of bins to divide the rdf into. distance_matrix : numpy.array An array of distances between atoms, typically obtained by atoms.get_all_distances(). Default None meaning that it will be calculated. elements : list or tuple List of two atomic numbers. If elements is not None the partial rdf for the supplied elements will be returned. no_dists : bool If True then the second array with rdf distances will not be returned """ dm = distance_matrix if dm is None: dm = atoms.get_all_distances() rdf = np.zeros(nbins + 1) dr = float(rmax / nbins) if elements is None: # Coefficients to use for normalization phi = len(atoms) / atoms.get_volume() norm = 2.0 * math.pi * dr * phi * len(atoms) for i in range(len(atoms)): for j in range(i + 1, len(atoms)): rij = dm[i][j] index = int(math.ceil(rij / dr)) if index <= nbins: rdf[index] += 1 else: i_indices = np.where(atoms.numbers == elements[0])[0] phi = len(i_indices) / atoms.get_volume() norm = 4.0 * math.pi * dr * phi * len(atoms) for i in i_indices: for j in np.where(atoms.numbers == elements[1])[0]: rij = dm[i][j] index = int(math.ceil(rij / dr)) if index <= nbins: rdf[index] += 1 dists = [] for i in range(1, nbins + 1): rrr = (i - 0.5) * dr dists.append(rrr) # Normalize rdf[i] /= (norm * ((rrr**2) + (dr**2) / 12.)) if no_dists: return rdf[1:] return rdf[1:], np.array(dists) def get_nndist(atoms, distance_matrix): """ Returns an estimate of the nearest neighbor bond distance in the supplied atoms object given the supplied distance_matrix. The estimate comes from the first peak in the radial distribution function. """ rmax = 10. # No bonds longer than 10 angstrom expected nbins = 200 rdf, dists = get_rdf(atoms, rmax, nbins, distance_matrix) return dists[np.argmax(rdf)] def get_nnmat(atoms, mic=False): """ Calculate the nearest neighbor matrix as specified in S. Lysgaard et al., Top. Catal., 2014, 57 (1-4), pp 33-39 Returns an array of average numbers of nearest neighbors the order is determined by self.elements. Example: self.elements = ["Cu", "Ni"] get_nnmat returns a single list [Cu-Cu bonds/N(Cu), Cu-Ni bonds/N(Cu), Ni-Cu bonds/N(Ni), Ni-Ni bonds/N(Ni)] where N(element) is the number of atoms of the type element in the atoms object. The distance matrix can be quite costly to calculate every time nnmat is required (and disk intensive if saved), thus it makes sense to calculate nnmat along with e.g. the potential energy and save it in atoms.info['data']['nnmat']. """ if 'data' in atoms.info and 'nnmat' in atoms.info['data']: return atoms.info['data']['nnmat'] elements = sorted(set(atoms.get_chemical_symbols())) nnmat = np.zeros((len(elements), len(elements))) # dm = get_distance_matrix(atoms) dm = atoms.get_all_distances(mic=mic) nndist = get_nndist(atoms, dm) + 0.2 for i in range(len(atoms)): row = [j for j in range(len(elements)) if atoms[i].symbol == elements[j]][0] neighbors = [j for j in range(len(dm[i])) if dm[i][j] < nndist] for n in neighbors: column = [j for j in range(len(elements)) if atoms[n].symbol == elements[j]][0] nnmat[row][column] += 1 # divide by the number of that type of atoms in the structure for i, el in enumerate(elements): nnmat[i] /= len([j for j in range(len(atoms)) if atoms[int(j)].symbol == el]) # makes a single list out of a list of lists nnlist = np.reshape(nnmat, (len(nnmat)**2)) return nnlist def get_nnmat_string(atoms, decimals=2, mic=False): nnmat = get_nnmat(atoms, mic=mic) s = '-'.join(['{1:2.{0}f}'.format(decimals, i) for i in nnmat]) if len(nnmat) == 1: return s + '-' return s def get_connections_index(atoms, max_conn=5, no_count_types=None): """ This method returns a dictionary where each key value are a specific number of neighbors and list of atoms indices with that amount of neighbors respectively. The method utilizes the neighbor list and hence inherit the restrictions for neighbors. Option added to remove connections between defined atom types. Parameters ---------- atoms : Atoms object The connections will be counted using this supplied Atoms object max_conn : int Any atom with more connections than this will be counted as having max_conn connections. Default 5 no_count_types : list or None List of atomic numbers that should be excluded in the count. Default None (meaning all atoms count). """ conn = get_neighbor_list(atoms) if conn is None: conn = get_neighborlist(atoms) if no_count_types is None: no_count_types = [] conn_index = {} for i in range(len(atoms)): if atoms[i].number not in no_count_types: cconn = min(len(conn[i]), max_conn - 1) if cconn not in conn_index: conn_index[cconn] = [] conn_index[cconn].append(i) return conn_index def get_atoms_connections(atoms, max_conn=5, no_count_types=None): """ This method returns a list of the numbers of atoms with X number of neighbors. The method utilizes the neighbor list and hence inherit the restrictions for neighbors. Option added to remove connections between defined atom types. """ conn_index = get_connections_index(atoms, max_conn=max_conn, no_count_types=no_count_types) no_of_conn = [0] * max_conn for i in conn_index: no_of_conn[i] += len(conn_index[i]) return no_of_conn def get_angles_distribution(atoms, ang_grid=9): """ Method to get the distribution of bond angles in bins (default 9) with bonds defined from the get_neighbor_list(). """ conn = get_neighbor_list(atoms) if conn is None: conn = get_neighborlist(atoms) bins = [0] * ang_grid for atom in atoms: for i in conn[atom.index]: for j in conn[atom.index]: if j != i: a = atoms.get_angle(i, atom.index, j) for k in range(ang_grid): if (k + 1) * 180. / ang_grid > a > k * 180. / ang_grid: bins[k] += 1 # Removing dobbelt counting for i in range(ang_grid): bins[i] /= 2. return bins def get_neighborlist(atoms, dx=0.2, no_count_types=None): """ Method to get the a dict with list of neighboring atoms defined as the two covalent radii + fixed distance. Option added to remove neighbors between defined atom types. """ cell = atoms.get_cell() pbc = atoms.get_pbc() if no_count_types is None: no_count_types = [] conn = {} for atomi in atoms: conn_this_atom = [] for atomj in atoms: if atomi.index != atomj.index: if atomi.number not in no_count_types: if atomj.number not in no_count_types: d = get_mic_distance(atomi.position, atomj.position, cell, pbc) cri = covalent_radii[atomi.number] crj = covalent_radii[atomj.number] d_max = crj + cri + dx if d < d_max: conn_this_atom.append(atomj.index) conn[atomi.index] = conn_this_atom return conn def get_atoms_distribution(atoms, number_of_bins=5, max_distance=8, center=None, no_count_types=None): """ Method to get the distribution of atoms in the structure in bins of distances from a defined center. Option added to remove counting of certain atom types. """ pbc = atoms.get_pbc() cell = atoms.get_cell() if center is None: # Center used for the atom distribution if None is supplied! cx = sum(cell[:, 0]) / 2. cy = sum(cell[:, 1]) / 2. cz = sum(cell[:, 2]) / 2. center = (cx, cy, cz) bins = [0] * number_of_bins if no_count_types is None: no_count_types = [] for atom in atoms: if atom.number not in no_count_types: d = get_mic_distance(atom.position, center, cell, pbc) for k in range(number_of_bins - 1): min_dis_cur_bin = k * max_distance / (number_of_bins - 1.) max_dis_cur_bin = ((k + 1) * max_distance / (number_of_bins - 1.)) if min_dis_cur_bin < d < max_dis_cur_bin: bins[k] += 1 if d > max_distance: bins[number_of_bins - 1] += 1 return bins def get_rings(atoms, rings=[5, 6, 7]): """ This method return a list of the number of atoms involved in rings in the structures. It uses the neighbor list hence inherit the restriction used for neighbors. """ conn = get_neighbor_list(atoms) if conn is None: conn = get_neighborlist(atoms) no_of_loops = [0] * 8 for s1 in range(len(atoms)): for s2 in conn[s1]: v12 = [s1] + [s2] for s3 in [s for s in conn[s2] if s not in v12]: v13 = v12 + [s3] if s1 in conn[s3]: no_of_loops[3] += 1 for s4 in [s for s in conn[s3] if s not in v13]: v14 = v13 + [s4] if s1 in conn[s4]: no_of_loops[4] += 1 for s5 in [s for s in conn[s4] if s not in v14]: v15 = v14 + [s5] if s1 in conn[s5]: no_of_loops[5] += 1 for s6 in [s for s in conn[s5] if s not in v15]: v16 = v15 + [s6] if s1 in conn[s6]: no_of_loops[6] += 1 for s7 in [s for s in conn[s6] if s not in v16]: # v17 = v16 + [s7] if s1 in conn[s7]: no_of_loops[7] += 1 to_return = [] for ring in rings: to_return.append(no_of_loops[ring]) return to_return ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/geometry/000077500000000000000000000000001316323560300223725ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/geometry/__init__.py000066400000000000000000000012321316323560300245010ustar00rootroot00000000000000from ase.geometry.cell import (cell_to_cellpar, cellpar_to_cell, crystal_structure_from_cell, complete_cell, is_orthorhombic, orthorhombic) from ase.geometry.geometry import (wrap_positions, get_layers, find_mic, get_duplicate_atoms) from ase.geometry.distance import distance __all__ = ['wrap_positions', 'complete_cell', 'is_orthorhombic', 'orthorhombic', 'get_layers', 'find_mic', 'get_duplicate_atoms', 'cell_to_cellpar', 'cellpar_to_cell', 'crystal_structure_from_cell', 'distance'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/geometry/cell.py000066400000000000000000000155521316323560300236730ustar00rootroot00000000000000from __future__ import print_function, division # Copyright (C) 2010, Jesper Friis # (see accompanying license files for details). import numpy as np from numpy import pi, sin, cos, arccos, sqrt, dot from numpy.linalg import norm def unit_vector(x): """Return a unit vector in the same direction as x.""" y = np.array(x, dtype='float') return y / norm(y) def angle(x, y): """Return the angle between vectors a and b in degrees.""" return arccos(dot(x, y) / (norm(x) * norm(y))) * 180. / pi def cell_to_cellpar(cell, radians=False): """Returns the cell parameters [a, b, c, alpha, beta, gamma]. Angles are in degrees unless radian=True is used. """ lengths = [np.linalg.norm(v) for v in cell] angles = [] for i in range(3): j = i - 1 k = i - 2 ll = lengths[j] * lengths[k] if ll > 1e-16: x = np.dot(cell[j], cell[k]) / ll angle = 180.0 / pi * arccos(x) else: angle = 90.0 angles.append(angle) if radians: angles = [angle * pi / 180 for angle in angles] return np.array(lengths + angles) def cellpar_to_cell(cellpar, ab_normal=(0, 0, 1), a_direction=None): """Return a 3x3 cell matrix from cellpar=[a,b,c,alpha,beta,gamma]. Angles must be in degrees. The returned cell is orientated such that a and b are normal to `ab_normal` and a is parallel to the projection of `a_direction` in the a-b plane. Default `a_direction` is (1,0,0), unless this is parallel to `ab_normal`, in which case default `a_direction` is (0,0,1). The returned cell has the vectors va, vb and vc along the rows. The cell will be oriented such that va and vb are normal to `ab_normal` and va will be along the projection of `a_direction` onto the a-b plane. Example: >>> cell = cellpar_to_cell([1, 2, 4, 10, 20, 30], (0, 1, 1), (1, 2, 3)) >>> np.round(cell, 3) array([[ 0.816, -0.408, 0.408], [ 1.992, -0.13 , 0.13 ], [ 3.859, -0.745, 0.745]]) """ if a_direction is None: if np.linalg.norm(np.cross(ab_normal, (1, 0, 0))) < 1e-5: a_direction = (0, 0, 1) else: a_direction = (1, 0, 0) # Define rotated X,Y,Z-system, with Z along ab_normal and X along # the projection of a_direction onto the normal plane of Z. ad = np.array(a_direction) Z = unit_vector(ab_normal) X = unit_vector(ad - dot(ad, Z) * Z) Y = np.cross(Z, X) # Express va, vb and vc in the X,Y,Z-system alpha, beta, gamma = 90., 90., 90. if isinstance(cellpar, (int, float)): a = b = c = cellpar elif len(cellpar) == 1: a = b = c = cellpar[0] elif len(cellpar) == 3: a, b, c = cellpar else: a, b, c, alpha, beta, gamma = cellpar # Handle orthorhombic cells separately to avoid rounding errors eps = 2 * np.spacing(90.0, dtype=np.float64) # around 1.4e-14 # alpha if abs(abs(alpha) - 90) < eps: cos_alpha = 0.0 else: cos_alpha = cos(alpha * pi / 180.0) # beta if abs(abs(beta) - 90) < eps: cos_beta = 0.0 else: cos_beta = cos(beta * pi / 180.0) # gamma if abs(gamma - 90) < eps: cos_gamma = 0.0 sin_gamma = 1.0 elif abs(gamma + 90) < eps: cos_gamma = 0.0 sin_gamma = -1.0 else: cos_gamma = cos(gamma * pi / 180.0) sin_gamma = sin(gamma * pi / 180.0) # Build the cell vectors va = a * np.array([1, 0, 0]) vb = b * np.array([cos_gamma, sin_gamma, 0]) cx = cos_beta cy = (cos_alpha - cos_beta * cos_gamma) / sin_gamma cz = sqrt(1. - cx * cx - cy * cy) vc = c * np.array([cx, cy, cz]) # Convert to the Cartesian x,y,z-system abc = np.vstack((va, vb, vc)) T = np.vstack((X, Y, Z)) cell = dot(abc, T) return cell def metric_from_cell(cell): """Calculates the metric matrix from cell, which is given in the Cartesian system.""" cell = np.asarray(cell, dtype=float) return np.dot(cell, cell.T) def crystal_structure_from_cell(cell, eps=2e-4, niggli_reduce=True): """Return the crystal structure as a string calculated from the cell. Supply a cell (from atoms.get_cell()) and get a string representing the crystal structure returned. Works exactly the opposite way as ase.dft.kpoints.get_special_points(). Parameters: cell : numpy.array or list An array like atoms.get_cell() Returns: crystal structure : str 'cubic', 'fcc', 'bcc', 'tetragonal', 'orthorhombic', 'hexagonal' or 'monoclinic' """ cellpar = cell_to_cellpar(cell) abc = cellpar[:3] angles = cellpar[3:] / 180 * pi a, b, c = abc alpha, beta, gamma = angles if abc.ptp() < eps and abs(angles - pi / 2).max() < eps: return 'cubic' elif abc.ptp() < eps and abs(angles - pi / 3).max() < eps: return 'fcc' elif abc.ptp() < eps and abs(angles - np.arccos(-1 / 3)).max() < eps: return 'bcc' elif abs(a - b) < eps and abs(angles - pi / 2).max() < eps: return 'tetragonal' elif abs(angles - pi / 2).max() < eps: return 'orthorhombic' elif (abs(a - b) < eps and abs(gamma - pi / 3 * 2) < eps and abs(angles[:2] - pi / 2).max() < eps): return 'hexagonal' elif (c >= a and c >= b and beta > pi / 2 and abs(angles[::2] - pi / 2).max() < eps): return 'monoclinic' elif (abc.ptp() < eps and angles.ptp() < eps and np.abs(angles).max() < pi / 2): return 'rhombohedral type 1' elif (abc.ptp() < eps and angles.ptp() < eps and np.abs(angles).max() > pi / 2): return 'rhombohedral type 2' else: if niggli_reduce: from ase.build.tools import niggli_reduce_cell cell, _ = niggli_reduce_cell(cell) return crystal_structure_from_cell(cell, niggli_reduce=False) raise ValueError('Cannot find crystal structure') def complete_cell(cell): """Calculate complete cell with missing lattice vectors. Returns a new 3x3 ndarray. """ cell = np.array(cell, dtype=float) missing = np.nonzero(~cell.any(axis=1))[0] if len(missing) == 3: cell.flat[::4] = 1.0 if len(missing) == 2: # Must decide two vectors: i = 3 - missing.sum() assert abs(cell[i, missing]).max() < 1e-16, "Don't do that" cell[missing, missing] = 1.0 elif len(missing) == 1: i = missing[0] cell[i] = np.cross(cell[i - 2], cell[i - 1]) cell[i] /= np.linalg.norm(cell[i]) return cell def is_orthorhombic(cell): """Check that cell only has stuff in the diagonal.""" return not (np.flatnonzero(cell) % 4).any() def orthorhombic(cell): """Return cell as three box dimensions or raise ValueError.""" if not is_orthorhombic(cell): raise ValueError('Not orthorhombic') return cell.diagonal().copy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/geometry/distance.py000066400000000000000000000034041316323560300245370ustar00rootroot00000000000000import numpy as np def distance(s1, s2, permute=True): """Get the distance between two structures s1 and s2. The distance is defined by the Frobenius norm of the spatial distance between all coordinates (see numpy.linalg.norm for the definition). permute: minimise the distance by 'permuting' same elements """ s1 = s1.copy() s2 = s2.copy() for s in [s1, s2]: s.translate(-s.get_center_of_mass()) s2pos = 1. * s2.get_positions() def align(struct, xaxis='x', yaxis='y'): """Align moments of inertia with the coordinate system.""" Is, Vs = struct.get_moments_of_inertia(True) IV = list(zip(Is, Vs)) IV.sort(key=lambda x: x[0]) struct.rotate(IV[0][1], xaxis) Is, Vs = struct.get_moments_of_inertia(True) IV = list(zip(Is, Vs)) IV.sort(key=lambda x: x[0]) struct.rotate(IV[1][1], yaxis) align(s1) def dd(s1, s2, permute): if permute: s2 = s2.copy() dist = 0 for a in s1: imin = None dmin = np.Inf for i, b in enumerate(s2): if a.symbol == b.symbol: d = np.sum((a.position - b.position)**2) if d < dmin: dmin = d imin = i dist += dmin s2.pop(imin) return np.sqrt(dist) else: return np.linalg.norm(s1.get_positions() - s2.get_positions()) dists = [] # principles for x, y in zip(['x', '-x', 'x', '-x'], ['y', 'y', '-y', '-y']): s2.set_positions(s2pos) align(s2, x, y) dists.append(dd(s1, s2, permute)) return min(dists) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/geometry/geometry.py000066400000000000000000000171561316323560300246110ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2010, Jesper Friis # (see accompanying license files for details). """Utility tools for atoms/geometry manipulations. - convenient creation of slabs and interfaces of different orientations. - detection of duplicate atoms / atoms within cutoff radius """ import numpy as np from ase.geometry import complete_cell def wrap_positions(positions, cell, pbc=True, center=(0.5, 0.5, 0.5), eps=1e-7): """Wrap positions to unit cell. Returns positions changed by a multiple of the unit cell vectors to fit inside the space spanned by these vectors. See also the :meth:`ase.Atoms.wrap` method. Parameters: positions: float ndarray of shape (n, 3) Positions of the atoms cell: float ndarray of shape (3, 3) Unit cell vectors. pbc: one or 3 bool For each axis in the unit cell decides whether the positions will be moved along this axis. center: three float The positons in fractional coordinates that the new positions will be nearest possible to. eps: float Small number to prevent slightly negative coordinates from being wrapped. Example: >>> from ase.geometry import wrap_positions >>> wrap_positions([[-0.1, 1.01, -0.5]], ... [[1, 0, 0], [0, 1, 0], [0, 0, 4]], ... pbc=[1, 1, 0]) array([[ 0.9 , 0.01, -0.5 ]]) """ if not hasattr(pbc, '__len__'): pbc = (pbc,) * 3 if not hasattr(center, '__len__'): center = (center,) * 3 shift = np.asarray(center) - 0.5 - eps # Don't change coordinates when pbc is False shift[np.logical_not(pbc)] = 0.0 assert np.asarray(cell)[np.asarray(pbc)].any(axis=1).all(), (cell, pbc) cell = complete_cell(cell) fractional = np.linalg.solve(cell.T, np.asarray(positions).T).T - shift for i, periodic in enumerate(pbc): if periodic: fractional[:, i] %= 1.0 fractional[:, i] += shift[i] return np.dot(fractional, cell) def get_layers(atoms, miller, tolerance=0.001): """Returns two arrays describing which layer each atom belongs to and the distance between the layers and origo. Parameters: miller: 3 integers The Miller indices of the planes. Actually, any direction in reciprocal space works, so if a and b are two float vectors spanning an atomic plane, you can get all layers parallel to this with miller=np.cross(a,b). tolerance: float The maximum distance in Angstrom along the plane normal for counting two atoms as belonging to the same plane. Returns: tags: array of integres Array of layer indices for each atom. levels: array of floats Array of distances in Angstrom from each layer to origo. Example: >>> import numpy as np >>> from ase.spacegroup import crystal >>> atoms = crystal('Al', [(0,0,0)], spacegroup=225, cellpar=4.05) >>> np.round(atoms.positions, decimals=5) array([[ 0. , 0. , 0. ], [ 0. , 2.025, 2.025], [ 2.025, 0. , 2.025], [ 2.025, 2.025, 0. ]]) >>> get_layers(atoms, (0,0,1)) # doctest: +ELLIPSIS (array([0, 1, 1, 0]...), array([ 0. , 2.025])) """ miller = np.asarray(miller) metric = np.dot(atoms.cell, atoms.cell.T) c = np.linalg.solve(metric.T, miller.T).T miller_norm = np.sqrt(np.dot(c, miller)) d = np.dot(atoms.get_scaled_positions(), miller) / miller_norm keys = np.argsort(d) ikeys = np.argsort(keys) mask = np.concatenate(([True], np.diff(d[keys]) > tolerance)) tags = np.cumsum(mask)[ikeys] if tags.min() == 1: tags -= 1 levels = d[keys][mask] return tags, levels def find_mic(D, cell, pbc=True): """Finds the minimum-image representation of vector(s) D""" cell = complete_cell(cell) # Calculate the 4 unique unit cell diagonal lengths diags = np.sqrt((np.dot([[1, 1, 1], [-1, 1, 1], [1, -1, 1], [-1, -1, 1], ], cell)**2).sum(1)) # calculate 'mic' vectors (D) and lengths (D_len) using simple method Dr = np.dot(D, np.linalg.inv(cell)) D = np.dot(Dr - np.round(Dr) * pbc, cell) D_len = np.sqrt((D**2).sum(1)) # return mic vectors and lengths for only orthorhombic cells, # as the results may be wrong for non-orthorhombic cells if (max(diags) - min(diags)) / max(diags) < 1e-9: return D, D_len # The cutoff radius is the longest direct distance between atoms # or half the longest lattice diagonal, whichever is smaller cutoff = min(max(D_len), max(diags) / 2.) # The number of neighboring images to search in each direction is # equal to the ceiling of the cutoff distance (defined above) divided # by the length of the projection of the lattice vector onto its # corresponding surface normal. a's surface normal vector is e.g. # b x c / (|b| |c|), so this projection is (a . (b x c)) / (|b| |c|). # The numerator is just the lattice volume, so this can be simplified # to V / (|b| |c|). This is rewritten as V |a| / (|a| |b| |c|) # for vectorization purposes. latt_len = np.sqrt((cell**2).sum(1)) V = abs(np.linalg.det(cell)) n = pbc * np.array(np.ceil(cutoff * np.prod(latt_len) / (V * latt_len)), dtype=int) # Construct a list of translation vectors. For example, if we are # searching only the nearest images (27 total), tvecs will be a # 27x3 array of translation vectors. This is the only nested loop # in the routine, and it takes a very small fraction of the total # execution time, so it is not worth optimizing further. tvecs = [] for i in range(-n[0], n[0] + 1): latt_a = i * cell[0] for j in range(-n[1], n[1] + 1): latt_ab = latt_a + j * cell[1] for k in range(-n[2], n[2] + 1): tvecs.append(latt_ab + k * cell[2]) tvecs = np.array(tvecs) # Translate the direct displacement vectors by each translation # vector, and calculate the corresponding lengths. D_trans = tvecs[np.newaxis] + D[:, np.newaxis] D_trans_len = np.sqrt((D_trans**2).sum(2)) # Find mic distances and corresponding vector(s) for each given pair # of atoms. For symmetrical systems, there may be more than one # translation vector corresponding to the MIC distance; this finds the # first one in D_trans_len. D_min_len = np.min(D_trans_len, axis=1) D_min_ind = D_trans_len.argmin(axis=1) D_min = D_trans[list(range(len(D_min_ind))), D_min_ind] return D_min, D_min_len def get_duplicate_atoms(atoms, cutoff=0.1, delete=False): """Get list of duplicate atoms and delete them if requested. Identify all atoms which lie within the cutoff radius of each other. Delete one set of them if delete == True. """ from scipy.spatial.distance import pdist dists = pdist(atoms.get_positions(), 'sqeuclidean') dup = np.nonzero(dists < cutoff**2) rem = np.array(_row_col_from_pdist(len(atoms), dup[0])) if delete: if rem.size != 0: del atoms[rem[:, 0]] else: return rem def _row_col_from_pdist(dim, i): """Calculate the i,j index in the square matrix for an index in a condensed (triangular) matrix. """ i = np.array(i) b = 1 - 2 * dim x = (np.floor((-b - np.sqrt(b**2 - 8 * i)) / 2)).astype(int) y = (i + x * (b + x + 2) / 2 + 1).astype(int) if i.shape: return list(zip(x, y)) else: return [(x, y)] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/000077500000000000000000000000001316323560300213235ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/__init__.py000066400000000000000000000000001316323560300234220ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/__main__.py000066400000000000000000000000431316323560300234120ustar00rootroot00000000000000from ase.gui.ag import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/add.py000066400000000000000000000037711316323560300224350ustar00rootroot00000000000000from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.gui.widgets import Element def txt2pos(txt): try: x, y, z = (float(x) for x in txt.split(',')) except ValueError as ex: ui.error(_('Bad position'), ex) else: return x, y, z class AddAtoms: def __init__(self, gui): # XXXXXXXXXXX still array based, not Atoms-based. Will crash win = ui.Window(_('Add atoms')) self.element = Element() win.add(self.element) self.absolute_position = ui.Entry('0,0,0') self.relative_position = ui.Entry('1.5,0,0') win.add([_('Absolute position:'), self.absolute_position, ui.Button(_('Add'), self.add_absolute)]) win.add([_('Relative to average position (of selection):'), self.relative_position, ui.Button(_('Add'), self.add_relative)]) self.gui = gui def add_absolute(self): pos = txt2pos(self.absolute_position.value) self.add(pos) def add_relative(self): rpos = txt2pos(self.relative_position.value) pos = self.gui.atoms.positions if self.gui.images.selected.any(): pos = pos[self.gui.images.selected[:len(pos)]] if len(pos) == 0: ui.error('No atoms present') else: center = pos.mean(0) self.add(center + rpos) def add(self, pos): if pos is None or self.element.symbol is None: return atoms = self.gui.atoms atoms.append(self.element.symbol) atoms.positions[-1] = pos if len(atoms) > self.gui.images.maxnatoms: self.gui.images.initialize(list(self.gui.images), self.gui.images.filenames) self.gui.images.selected[:] = False # 'selected' array may be longer than current atoms self.gui.images.selected[len(atoms) - 1] = True self.gui.set_frame() self.gui.draw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/ag.py000066400000000000000000000070741316323560300222740ustar00rootroot00000000000000# Copyright 2008, 2009 # CAMd (see accompanying license files for details). from __future__ import print_function, unicode_literals class CLICommand: short_description = "ASE's graphical user interface" description = ('ASE-GUI. See the online manual ' '(https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html) ' 'for more information.') @staticmethod def add_arguments(parser): add = parser.add_argument add('filenames', nargs='*') add('-n', '--image-number', default=':', metavar='NUMBER', help='Pick image(s) from trajectory. NUMBER can be a ' 'single number (use a negative number to count from ' 'the back) or a range: start:stop:step, where the ' '":step" part can be left out - default values are ' '0:nimages:1.') add('-u', '--show-unit-cell', type=int, default=1, metavar='I', help="0: Don't show unit cell. 1: Show unit cell. " '2: Show all of unit cell.') add('-r', '--repeat', default='1', help='Repeat unit cell. Use "-r 2" or "-r 2,3,1".') add('-R', '--rotations', default='', help='Examples: "-R -90x", "-R 90z,-30x".') add('-o', '--output', metavar='FILE', help='Write configurations to FILE.') add('-g', '--graph', # TRANSLATORS: EXPR abbreviates 'expression' metavar='EXPR', help='Plot x,y1,y2,... graph from configurations or ' 'write data to sdtout in terminal mode. Use the ' 'symbols: i, s, d, fmax, e, ekin, A, R, E and F. See ' 'https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html' '#plotting-data for more details.') add('-t', '--terminal', action='store_true', default=False, help='Run in terminal window - no GUI.') add('--interpolate', type=int, metavar='N', help='Interpolate N images between 2 given images.') add('-b', '--bonds', action='store_true', default=False, help='Draw bonds between atoms.') add('-s', '--scale', dest='radii_scale', metavar='FLOAT', default=None, type=float, help='Scale covalent radii.') @staticmethod def run(args): from ase.gui.images import Images from ase.atoms import Atoms images = Images() if args.filenames: from ase.io import string2index images.read(args.filenames, string2index(args.image_number)) else: images.initialize([Atoms()]) if args.interpolate: images.interpolate(args.interpolate) if args.repeat != '1': r = args.repeat.split(',') if len(r) == 1: r = 3 * r images.repeat_images([int(c) for c in r]) if args.radii_scale: images.set_radii(args.radii_scale) if args.output is not None: images.write(args.output, rotations=args.rotations, show_unit_cell=args.show_unit_cell) args.terminal = True if args.terminal: if args.graph is not None: data = images.graph(args.graph) for line in data.T: for x in line: print(x, end=' ') print() else: from ase.gui.gui import GUI gui = GUI(images, args.rotations, args.show_unit_cell, args.bonds) gui.run(args.graph) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/calculator.py000066400000000000000000002451051316323560300240350ustar00rootroot00000000000000# encoding: utf-8 """calculator.py - module for choosing a calculator.""" from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui import os import numpy as np from copy import copy import ase from ase.gui.progress import DefaultProgressIndicator, GpawProgressIndicator from ase import Atoms from ase.data import chemical_symbols from ase.utils import basestring pack = error = cancel_apply_ok = SetupWindow = 42 # Asap and GPAW may be imported if selected. introtext = _("""\ To make most calculations on the atoms, a Calculator object must first be associated with it. ASE supports a number of calculators, supporting different elements, and implementing different physical models for the interatomic interactions.\ """) # Informational text about the calculators lj_info_txt = _("""\ The Lennard-Jones pair potential is one of the simplest possible models for interatomic interactions, mostly suitable for noble gasses and model systems. Interactions are described by an interaction length and an interaction strength.\ """) emt_info_txt = _("""\ The EMT potential is a many-body potential, giving a good description of the late transition metals crystalling in the FCC crystal structure. The elements described by the main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and Au, the Al potential is however not suitable for materials science application, as the stacking fault energy is wrong. A number of parameter sets are provided. Default parameters: The default EMT parameters, as published in K. W. Jacobsen, P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996). Alternative Cu, Ag and Au: An alternative set of parameters for Cu, Ag and Au, reoptimized to experimental data including the stacking fault energies by Torben Rasmussen (partly unpublished). Ruthenium: Parameters for Ruthenium, as published in J. Gavnholt and J. Schiøtz, Phys. Rev. B 77, 035404 (2008). Metallic glasses: Parameters for MgCu and CuZr metallic glasses. MgCu parameters are in N. P. Bailey, J. Schiøtz and K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004). CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007). """) aseemt_info_txt = _("""\ The EMT potential is a many-body potential, giving a good description of the late transition metals crystalling in the FCC crystal structure. The elements described by the main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and Au. In addition, this implementation allows for the use of H, N, O and C adatoms, although the description of these is most likely not very good. This is the ASE implementation of EMT. For large simulations the ASAP implementation is more suitable; this implementation is mainly to make EMT available when ASAP is not installed. """) eam_info_txt = _("""\ The EAM/ADP potential is a many-body potential implementation of the Embedded Atom Method and equipotential plus the Angular Dependent Potential, which is an extension of the EAM to include directional bonds. EAM is suited for FCC metallic bonding while the ADP is suited for metallic bonds with some degree of directionality. For EAM see M.S. Daw and M.I. Baskes, Phys. Rev. Letters 50 (1983) 1285. For ADP see Y. Mishin, M.J. Mehl, and D.A. Papaconstantopoulos, Acta Materialia 53 2005 4029--4041. Data for the potential is contained in a file in either LAMMPS Alloy or ADP format which need to be loaded before use. The Interatomic Potentials Repository Project at http://www.ctcms.nist.gov/potentials/ contains many suitable potential files. For large simulations the LAMMPS calculator is more suitable; this implementation is mainly to make EAM available when LAMMPS is not installed or to develop new EAM/ADP poentials by matching results using ab initio. """) brenner_info_txt = _("""\ The Brenner potential is a reactive bond-order potential for carbon and hydrocarbons. As a bond-order potential, it takes into account that carbon orbitals can hybridize in different ways, and that carbon can form single, double and triple bonds. That the potential is reactive means that it can handle gradual changes in the bond order as chemical bonds are formed or broken. The Brenner potential is implemented in Asap, based on a C implentation published at http://www.rahul.net/pcm/brenner/ . The potential is documented here: Donald W Brenner, Olga A Shenderova, Judith A Harrison, Steven J Stuart, Boris Ni and Susan B Sinnott: "A second-generation reactive empirical bond order (REBO) potential energy expression for hydrocarbons", J. Phys.: Condens. Matter 14 (2002) 783-802. doi: 10.1088/0953-8984/14/4/312 """) gpaw_info_txt = _("""\ GPAW implements Density Functional Theory using a Grid-based real-space representation of the wave functions, and the Projector Augmented Wave method for handling the core regions. """) aims_info_txt = _("""\ FHI-aims is an external package implementing density functional theory and quantum chemical methods using all-electron methods and a numeric local orbital basis set. For full details, see http://www.fhi-berlin.mpg.de/aims/ or Comp. Phys. Comm. v180 2175 (2009). The ASE documentation contains information on the keywords and functionalities available within this interface. """) aims_pbc_warning_text = _("""\ WARNING: Your system seems to have more than zero but less than three periodic dimensions. Please check that this is really what you want to compute. Assuming full 3D periodicity for this calculator.""") vasp_info_txt = _("""\ VASP is an external package implementing density functional functional theory using pseudopotentials or the projector-augmented wave method together with a plane wave basis set. For full details, see http://cms.mpi.univie.ac.at/vasp/vasp/ """) emt_parameters = ( (_("Default (Al, Ni, Cu, Pd, Ag, Pt, Au)"), None), (_("Alternative Cu, Ag and Au"), "EMTRasmussenParameters"), (_("Ruthenium"), "EMThcpParameters"), (_("CuMg and CuZr metallic glass"), "EMTMetalGlassParameters")) class SetCalculator: "Window for selecting a calculator." # List the names of the radio button attributes radios = ("none", "lj", "emt", "aseemt", "eam", "brenner", "gpaw", "aims", "vasp") # List the names of the parameter dictionaries paramdicts = ( "lj_parameters", "eam_parameters", "gpaw_parameters", "aims_parameters", ) # The name used to store parameters on the gui object classname = "SetCalculator" def __init__(self, gui): SetupWindow.__init__(self) self.set_title(_("Select calculator")) vbox = ui.VBox() # Intoductory text self.packtext(vbox, introtext) pack(vbox, [ui.Label(_("Calculator:"))]) # No calculator (the default) self.none_radio = ui.RadioButton(None, _("None")) pack(vbox, [self.none_radio]) # Lennard-Jones self.lj_radio = ui.RadioButton(self.none_radio, _("Lennard-Jones (ASAP)")) self.lj_setup = ui.Button(_("Setup")) self.lj_info = InfoButton(lj_info_txt) self.lj_setup.connect("clicked", self.lj_setup_window) self.pack_line(vbox, self.lj_radio, self.lj_setup, self.lj_info) # EMT self.emt_radio = ui.RadioButton( self.none_radio, _("EMT - Effective Medium Theory (ASAP)")) self.emt_setup = ui.combo_box_new_text() self.emt_param_info = {} for p in emt_parameters: self.emt_setup.append_text(p[0]) self.emt_param_info[p[0]] = p[1] self.emt_setup.set_active(0) self.emt_info = InfoButton(emt_info_txt) self.pack_line(vbox, self.emt_radio, self.emt_setup, self.emt_info) # EMT (ASE implementation) self.aseemt_radio = ui.RadioButton( self.none_radio, _("EMT - Effective Medium Theory (ASE)")) self.aseemt_info = InfoButton(aseemt_info_txt) self.pack_line(vbox, self.aseemt_radio, None, self.aseemt_info) # EAM self.eam_radio = ui.RadioButton( self.none_radio, _("EAM - Embedded Atom Method/Angular Dependent Potential (ASE)")) self.eam_setup = ui.Button(_("Setup")) self.eam_setup.connect("clicked", self.eam_setup_window) self.eam_info = InfoButton(eam_info_txt) self.pack_line(vbox, self.eam_radio, self.eam_setup, self.eam_info) # Brenner potential self.brenner_radio = ui.RadioButton(self.none_radio, _("Brenner Potential (ASAP)")) self.brenner_info = InfoButton(brenner_info_txt) self.pack_line(vbox, self.brenner_radio, None, self.brenner_info) # GPAW self.gpaw_radio = ui.RadioButton(self.none_radio, _("Density Functional Theory (GPAW)")) self.gpaw_setup = ui.Button(_("Setup")) self.gpaw_info = InfoButton(gpaw_info_txt) self.gpaw_setup.connect("clicked", self.gpaw_setup_window) self.pack_line(vbox, self.gpaw_radio, self.gpaw_setup, self.gpaw_info) # FHI-aims self.aims_radio = ui.RadioButton(self.none_radio, _("Density Functional Theory " "(FHI-aims)")) self.aims_setup = ui.Button(_("Setup")) self.aims_info = InfoButton(aims_info_txt) self.aims_setup.connect("clicked", self.aims_setup_window) self.pack_line(vbox, self.aims_radio, self.aims_setup, self.aims_info) # VASP self.vasp_radio = ui.RadioButton(self.none_radio, _("Density Functional Theory " "(VASP)")) self.vasp_setup = ui.Button(_("Setup")) self.vasp_info = InfoButton(vasp_info_txt) self.vasp_setup.connect("clicked", self.vasp_setup_window) self.pack_line(vbox, self.vasp_radio, self.vasp_setup, self.vasp_info) # Buttons etc. pack(vbox, ui.Label("")) buts = cancel_apply_ok( cancel=lambda widget: self.destroy(), apply=self.apply, ok=self.ok) pack(vbox, [buts], end=True, bottom=True) self.check = ui.CheckButton( _("Check that the calculator is " "reasonable.")) self.check.set_active(True) fr = ui.Frame() fr.add(self.check) fr.show_all() pack(vbox, [fr], end=True, bottom=True) # Finalize setup self.add(vbox) vbox.show() self.show() self.gui = gui self.load_state() def pack_line(self, box, radio, setup, info): hbox = ui.HBox() hbox.pack_start(radio, 0, 0) hbox.pack_start(ui.Label(" "), 0, 0) hbox.pack_end(info, 0, 0) if setup is not None: radio.connect("toggled", self.radio_toggled, setup) setup.set_sensitive(False) hbox.pack_end(setup, 0, 0) hbox.show_all() box.pack_start(hbox, 0, 0) def radio_toggled(self, radio, button): button.set_sensitive(radio.get_active()) def lj_setup_window(self, widget): if not self.get_atoms(): return lj_param = getattr(self, "lj_parameters", None) LJ_Window(self, lj_param, "lj_parameters") # When control is retuned, self.lj_parameters has been set. def eam_setup_window(self, widget): if not self.get_atoms(): return eam_param = getattr(self, "eam_parameters", None) EAM_Window(self, eam_param, "eam_parameters") # When control is retuned, self.eam_parameters has been set. def gpaw_setup_window(self, widget): if not self.get_atoms(): return gpaw_param = getattr(self, "gpaw_parameters", None) GPAW_Window(self, gpaw_param, "gpaw_parameters") # When control is retuned, self.gpaw_parameters has been set. def aims_setup_window(self, widget): if not self.get_atoms(): return aims_param = getattr(self, "aims_parameters", None) AIMS_Window(self, aims_param, "aims_parameters") # When control is retuned, self.aims_parameters has been set. def vasp_setup_window(self, widget): if not self.get_atoms(): return vasp_param = getattr(self, "vasp_parameters", None) VASP_Window(self, vasp_param, "vasp_parameters") # When control is retuned, self.vasp_parameters has been set. def get_atoms(self): "Make an atoms object from the active frame" images = self.gui.images frame = self.gui.frame if images.natoms < 1: error(_("No atoms present")) return False self.atoms = Atoms( positions=images.P[frame], symbols=images.Z, cell=images.A[frame], pbc=images.pbc, magmoms=images.M[frame]) if not images.dynamic.all(): from ase.constraints import FixAtoms self.atoms.set_constraint(FixAtoms(mask=1 - images.dynamic)) return True def apply(self, *widget): if self.do_apply(): self.save_state() return True else: return False def do_apply(self): nochk = not self.check.get_active() self.gui.simulation["progress"] = DefaultProgressIndicator() if self.none_radio.get_active(): self.gui.simulation['calc'] = None return True elif self.lj_radio.get_active(): if nochk or self.lj_check(): self.choose_lj() return True elif self.emt_radio.get_active(): if nochk or self.emt_check(): self.choose_emt() return True elif self.aseemt_radio.get_active(): if nochk or self.aseemt_check(): self.choose_aseemt() return True elif self.eam_radio.get_active(): if nochk or self.eam_check(): self.choose_eam() return True elif self.brenner_radio.get_active(): if nochk or self.brenner_check(): self.choose_brenner() return True elif self.gpaw_radio.get_active(): if nochk or self.gpaw_check(): self.choose_gpaw() return True elif self.aims_radio.get_active(): if nochk or self.aims_check(): self.choose_aims() return True elif self.vasp_radio.get_active(): if nochk or self.vasp_check(): self.choose_vasp() return True return False def ok(self, *widget): if self.apply(): self.destroy() def save_state(self): state = {} for r in self.radios: radiobutton = getattr(self, r + "_radio") if radiobutton.get_active(): state["radio"] = r state["emtsetup"] = self.emt_setup.get_active() state["check"] = self.check.get_active() for p in self.paramdicts: if hasattr(self, p): state[p] = getattr(self, p) self.gui.module_state[self.classname] = state def load_state(self): try: state = self.gui.module_state[self.classname] except KeyError: return r = state["radio"] radiobutton = getattr(self, r + "_radio") radiobutton.set_active(True) self.emt_setup.set_active(state["emtsetup"]) self.check.set_active(state["check"]) for p in self.paramdicts: if p in state: setattr(self, p, state[p]) def lj_check(self): try: import asap3 except ImportError: error(_("ASAP is not installed. (Failed to import asap3)")) return False if not hasattr(self, "lj_parameters"): error(_("You must set up the Lennard-Jones parameters")) return False try: self.atoms.set_calculator(asap3.LennardJones(**self.lj_parameters)) except (asap3.AsapError, TypeError, ValueError) as e: error( _("Could not create useful Lennard-Jones calculator."), str(e)) return False return True def choose_lj(self): # Define a function on the fly! import asap3 def lj_factory(p=self.lj_parameters, lj=asap3.LennardJones): return lj(**p) self.gui.simulation["calc"] = lj_factory def emt_get(self): import asap3 provider_name = self.emt_setup.get_active_text() provider = self.emt_param_info[provider_name] if provider is not None: provider = getattr(asap3, provider) return (asap3.EMT, provider, asap3) def emt_check(self): if not self.get_atoms(): return False try: emt, provider, asap3 = self.emt_get() except ImportError: error(_("ASAP is not installed. (Failed to import asap3)")) return False try: if provider is not None: self.atoms.set_calculator(emt(provider())) else: self.atoms.set_calculator(emt()) except (asap3.AsapError, TypeError, ValueError) as e: error(_("Could not attach EMT calculator to the atoms."), str(e)) return False return True def choose_emt(self): emt, provider, asap3 = self.emt_get() if provider is None: emt_factory = emt else: def emt_factory(emt=emt, prov=provider): return emt(prov()) self.gui.simulation["calc"] = emt_factory def aseemt_check(self): return self.element_check("ASE EMT", [ 'H', 'Al', 'Cu', 'Ag', 'Au', 'Ni', 'Pd', 'Pt', 'C', 'N', 'O' ]) def eam_check(self): from ase.calculators.eam import EAM if not hasattr(self, "eam_parameters"): error(_("You must set up the EAM parameters")) return False self.atoms.set_calculator(EAM(**self.eam_parameters)) return self.element_check("EAM", self.atoms.get_calculator().elements) def choose_eam(self): from ase.calculators.eam import EAM def eam_factory(p=self.eam_parameters): calc = EAM(**p) return calc self.gui.simulation["calc"] = eam_factory def brenner_check(self): try: import asap3 asap3 # silence pyflakes except ImportError: error(_("ASAP is not installed. (Failed to import asap3)")) return False return self.element_check("Brenner potential", ['H', 'C', 'Si']) def choose_brenner(self): import asap3 self.gui.simulation["calc"] = asap3.BrennerPotential def choose_aseemt(self): import ase.calculators.emt self.gui.simulation["calc"] = ase.calculators.emt.EMT # In case Asap has been imported ase.calculators.emt.EMT.disabled = False def gpaw_check(self): try: import gpaw gpaw # silence pyflakes except ImportError: error(_("GPAW is not installed. (Failed to import gpaw)")) return False if not hasattr(self, "gpaw_parameters"): error(_("You must set up the GPAW parameters")) return False return True def choose_gpaw(self): # This reuses the same GPAW object. try: import gpaw except ImportError: error(_("GPAW is not installed. (Failed to import gpaw)")) return False p = self.gpaw_parameters use = ["xc", "kpts", "mode"] if p["use_h"]: use.append("h") else: use.append("gpts") if p["mode"] == "lcao": use.append("basis") gpaw_param = {} for s in use: gpaw_param[s] = p[s] if p["use mixer"]: mx = getattr(gpaw, p["mixer"]) mx_args = {} mx_arg_n = ["beta", "nmaxold", "weight"] if p["mixer"] == "MixerDiff": mx_arg_n.extend(["beta_m", "nmaxold_m", "weight_m"]) for s in mx_arg_n: mx_args[s] = p[s] gpaw_param["mixer"] = mx(**mx_args) progress = GpawProgressIndicator() self.gui.simulation["progress"] = progress gpaw_param["txt"] = progress.get_gpaw_stream() gpaw_calc = gpaw.GPAW(**gpaw_param) def gpaw_factory(calc=gpaw_calc): return calc self.gui.simulation["calc"] = gpaw_factory def aims_check(self): if not hasattr(self, "aims_parameters"): error(_("You must set up the FHI-aims parameters")) return False return True def choose_aims(self): param = self.aims_parameters from ase.calculators.aims import Aims calc_aims = Aims(**param) def aims_factory(calc=calc_aims): return calc self.gui.simulation["calc"] = aims_factory def vasp_check(self): if not hasattr(self, "vasp_parameters"): error(_("You must set up the VASP parameters")) return False return True def choose_vasp(self): param = self.vasp_parameters from ase.calculators.vasp import Vasp calc_vasp = Vasp(**param) def vasp_factory(calc=calc_vasp): return calc self.gui.simulation["calc"] = vasp_factory def element_check(self, name, elements): "Check that all atoms are allowed" elements = [ase.data.atomic_numbers[s] for s in elements] elements_dict = {} for e in elements: elements_dict[e] = True if not self.get_atoms(): return False try: for e in self.atoms.get_atomic_numbers(): elements_dict[e] except KeyError: error( _("Element %(sym)s not allowed by the '%(name)s' calculator") % dict( sym=ase.data.chemical_symbols[e], name=name)) return False return True class InfoButton: def __init__(self, txt): ui.Button.__init__(self, _("Info")) self.txt = txt self.connect('clicked', self.run) def run(self, widget): dialog = ui.MessageDialog( flags=ui.DIALOG_MODAL, type=ui.MESSAGE_INFO, buttons=ui.BUTTONS_CLOSE) dialog.set_markup(self.txt) dialog.connect('response', lambda x, y: dialog.destroy()) dialog.show() class LJ_Window: def __init__(self, owner, param, attrname): ui.Window.__init__(self) self.set_title(_("Lennard-Jones parameters")) self.owner = owner self.attrname = attrname atoms = owner.atoms atnos = atoms.get_atomic_numbers() found = {} for z in atnos: found[z] = True self.present = found.keys() self.present.sort() # Sorted list of atomic numbers nelem = len(self.present) vbox = ui.VBox() label = ui.Label(_("Specify the Lennard-Jones parameters here")) pack(vbox, [label]) pack(vbox, ui.Label("")) pack(vbox, [ui.Label(_("Epsilon (eV):"))]) tbl, self.epsilon_adj = self.makematrix(self.present) pack(vbox, [tbl]) pack(vbox, ui.Label("")) pack(vbox, [ui.Label(_(u"Sigma (Ã…):"))]) tbl, self.sigma_adj = self.makematrix(self.present) pack(vbox, [tbl]) # TRANSLATORS: Shift roughly means adjust (about a potential) self.modif = ui.CheckButton(_("Shift to make smooth at cutoff")) self.modif.set_active(True) pack(vbox, ui.Label("")) pack(vbox, self.modif) pack(vbox, ui.Label("")) butbox = ui.HButtonBox() cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) vbox.show() self.add(vbox) # Now, set the parameters if param and param['elements'] == self.present: self.set_param(self.epsilon_adj, param["epsilon"], nelem) self.set_param(self.sigma_adj, param["sigma"], nelem) self.modif.set_active(param["modified"]) self.show() self.grab_add() # Lock all other windows def makematrix(self, present): nelem = len(present) adjdict = {} tbl = ui.Table(2 + nelem, 2 + nelem) for i in range(nelem): s = chemical_symbols[present[i]] tbl.attach(ui.Label(" " + str(present[i])), 0, 1, i, i + 1) tbl.attach(ui.Label(" " + s + " "), 1, 2, i, i + 1) tbl.attach( ui.Label(str(present[i])), i + 2, i + 3, 1 + nelem, 2 + nelem) tbl.attach(ui.Label(s), i + 2, i + 3, nelem, 1 + nelem) for j in range(i + 1): adj = ui.Adjustment(1.0, 0.0, 100.0, 0.1) spin = ui.SpinButton(adj, 0.1, 3) tbl.attach(spin, 2 + j, 3 + j, i, i + 1) adjdict[(i, j)] = adj tbl.show_all() return tbl, adjdict def set_param(self, adj, params, n): for i in range(n): for j in range(n): if j <= i: adj[(i, j)].value = params[i, j] def get_param(self, adj, params, n): for i in range(n): for j in range(n): if j <= i: params[i, j] = params[j, i] = adj[(i, j)].value def destroy(self): self.grab_remove() ui.Window.destroy(self) def ok(self, *args): params = {} params["elements"] = copy(self.present) n = len(self.present) eps = np.zeros((n, n)) self.get_param(self.epsilon_adj, eps, n) sigma = np.zeros((n, n)) self.get_param(self.sigma_adj, sigma, n) params["epsilon"] = eps params["sigma"] = sigma params["modified"] = self.modif.get_active() setattr(self.owner, self.attrname, params) self.destroy() class EAM_Window: def __init__(self, owner, param, attrname): ui.Window.__init__(self) self.set_title(_("EAM parameters")) self.owner = owner self.attrname = attrname self.owner = owner atoms = owner.atoms self.natoms = len(atoms) vbox = ui.VBox() vbox.show() self.add(vbox) pack(vbox, ui.Label("")) butbox = ui.HButtonBox() import_potential_but = ui.Button(_("Import Potential")) import_potential_but.connect("clicked", self.import_potential) cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) butbox.pack_start(import_potential_but, 0, 0) butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) vbox.show() # Now, set the parameters if param: self.eam_file = param['potential'] self.show() self.grab_add() # Lock all other windows def ok(self, *args): if not hasattr(self.owner, "eam_parameters"): error(_("You need to import the potential file")) self.destroy() def import_potential(self, *args): dirname = "." filename = "Al99.eam.alloy" chooser = ui.FileChooserDialog( _('Import .alloy or .adp potential file ... '), None, ui.FILE_CHOOSER_ACTION_OPEN, ('Cancel', ui.RESPONSE_CANCEL, 'Open', ui.RESPONSE_OK)) chooser.set_filename(dirname + filename) openr = chooser.run() if openr == ui.RESPONSE_OK: param = {} filename = chooser.get_filename() param['potential'] = filename setattr(self.owner, self.attrname, param) chooser.destroy() class GPAW_Window: gpaw_xc_list = ['LDA', 'PBE', 'RPBE', 'revPBE'] gpaw_xc_default = 'PBE' def __init__(self, owner, param, attrname): ui.Window.__init__(self) self.set_title(_("GPAW parameters")) self.owner = owner self.attrname = attrname atoms = owner.atoms self.ucell = atoms.get_cell() self.size = tuple([self.ucell[i, i] for i in range(3)]) self.pbc = atoms.get_pbc() self.orthogonal = self.isorthogonal(self.ucell) self.natoms = len(atoms) vbox = ui.VBox() # label = ui.Label("Specify the GPAW parameters here") #pack(vbox, [label]) # Print some info txt = _("%i atoms.\n") % (self.natoms, ) if self.orthogonal: txt += _( u"Orthogonal unit cell: %.2f x %.2f x %.2f Ã….") % self.size else: txt += _("Non-orthogonal unit cell:\n") txt += str(self.ucell) pack(vbox, [ui.Label(txt)]) # XC potential self.xc = ui.combo_box_new_text() for i, x in enumerate(self.gpaw_xc_list): self.xc.append_text(x) if x == self.gpaw_xc_default: self.xc.set_active(i) pack(vbox, [ui.Label(_("Exchange-correlation functional: ")), self.xc]) # Grid spacing self.radio_h = ui.RadioButton(None, _("Grid spacing")) self.h = ui.Adjustment(0.18, 0.0, 1.0, 0.01) self.h_spin = ui.SpinButton(self.h, 0, 2) pack(vbox, [self.radio_h, ui.Label(" h = "), self.h_spin, ui.Label(_(u"Ã…"))]) self.radio_gpts = ui.RadioButton(self.radio_h, _("Grid points")) self.gpts = [] self.gpts_spin = [] for i in range(3): g = ui.Adjustment(4, 4, 1000, 4) s = ui.SpinButton(g, 0, 0) self.gpts.append(g) self.gpts_spin.append(s) self.gpts_hlabel = ui.Label("") self.gpts_hlabel_format = _(u"heff = (%.3f, %.3f, %.3f) Ã…") pack(vbox, [ self.radio_gpts, ui.Label(" gpts = ("), self.gpts_spin[0], ui.Label(", "), self.gpts_spin[1], ui.Label(", "), self.gpts_spin[2], ui.Label(") "), self.gpts_hlabel ]) self.radio_h.connect("toggled", self.radio_grid_toggled) self.radio_gpts.connect("toggled", self.radio_grid_toggled) self.radio_grid_toggled(None) for g in self.gpts: g.connect("value-changed", self.gpts_changed) self.h.connect("value-changed", self.h_changed) # K-points self.kpts = [] self.kpts_spin = [] for i in range(3): if self.pbc[i] and self.orthogonal: default = np.ceil(20.0 / self.size[i]) else: default = 1 g = ui.Adjustment(default, 1, 100, 1) s = ui.SpinButton(g, 0, 0) self.kpts.append(g) self.kpts_spin.append(s) if not self.pbc[i]: s.set_sensitive(False) g.connect("value-changed", self.k_changed) pack(vbox, [ ui.Label(_("k-points k = (")), self.kpts_spin[0], ui.Label(", "), self.kpts_spin[1], ui.Label(", "), self.kpts_spin[2], ui.Label(")") ]) self.kpts_label = ui.Label("") self.kpts_label_format = _(u"k-points x size: (%.1f, %.1f, %.1f) Ã…") pack(vbox, [self.kpts_label]) self.k_changed() # Spin polarized self.spinpol = ui.CheckButton(_("Spin polarized")) pack(vbox, [self.spinpol]) pack(vbox, ui.Label("")) # Mode and basis functions self.mode = ui.combo_box_new_text() self.mode.append_text(_("FD - Finite Difference (grid) mode")) self.mode.append_text( _("LCAO - Linear Combination of Atomic " "Orbitals")) self.mode.set_active(0) pack(vbox, [ui.Label(_("Mode: ")), self.mode]) self.basis = ui.combo_box_new_text() self.basis.append_text(_("sz - Single Zeta")) self.basis.append_text(_("szp - Single Zeta polarized")) self.basis.append_text(_("dzp - Double Zeta polarized")) self.basis.set_active(2) # dzp pack(vbox, [ui.Label(_("Basis functions: ")), self.basis]) pack(vbox, ui.Label("")) self.mode.connect("changed", self.mode_changed) self.mode_changed() # Mixer self.use_mixer = ui.CheckButton(_("Non-standard mixer parameters")) pack(vbox, [self.use_mixer]) self.radio_mixer = ui.RadioButton(None, "Mixer ") self.radio_mixersum = ui.RadioButton(self.radio_mixer, "MixerSum ") self.radio_mixerdiff = ui.RadioButton(self.radio_mixer, "MixerDiff") pack(vbox, [self.radio_mixer, self.radio_mixersum, self.radio_mixerdiff]) self.beta_adj = ui.Adjustment(0.25, 0.0, 1.0, 0.05) self.beta_spin = ui.SpinButton(self.beta_adj, 0, 2) self.nmaxold_adj = ui.Adjustment(3, 1, 10, 1) self.nmaxold_spin = ui.SpinButton(self.nmaxold_adj, 0, 0) self.weight_adj = ui.Adjustment(50, 1, 500, 1) self.weight_spin = ui.SpinButton(self.weight_adj, 0, 0) pack(vbox, [ ui.Label("beta = "), self.beta_spin, ui.Label(" nmaxold = "), self.nmaxold_spin, ui.Label(" weight = "), self.weight_spin ]) self.beta_m_adj = ui.Adjustment(0.70, 0.0, 1.0, 0.05) self.beta_m_spin = ui.SpinButton(self.beta_m_adj, 0, 2) self.nmaxold_m_adj = ui.Adjustment(2, 1, 10, 1) self.nmaxold_m_spin = ui.SpinButton(self.nmaxold_m_adj, 0, 0) self.weight_m_adj = ui.Adjustment(10, 1, 500, 1) self.weight_m_spin = ui.SpinButton(self.weight_m_adj, 0, 0) pack(vbox, [ ui.Label("beta_m = "), self.beta_m_spin, ui.Label(" nmaxold_m = "), self.nmaxold_m_spin, ui.Label(" weight_m = "), self.weight_m_spin ]) for but in (self.spinpol, self.use_mixer, self.radio_mixer, self.radio_mixersum, self.radio_mixerdiff): but.connect("clicked", self.mixer_changed) self.mixer_changed() # Eigensolver # Poisson-solver vbox.show() self.add(vbox) # Buttons at the bottom pack(vbox, ui.Label("")) butbox = ui.HButtonBox() cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) # Set stored parameters if param: self.xc.set_active(param["xc#"]) if param["use_h"]: self.radio_h.set_active(True) else: self.radio_gpts.set_active(True) for i in range(3): self.gpts[i].value = param["gpts"][i] self.kpts[i].value = param["kpts"][i] self.spinpol.set_active(param["spinpol"]) self.mode.set_active(param["mode#"]) self.basis.set_active(param["basis#"]) self.use_mixer.set_active(param["use mixer"]) getattr(self, "radio_" + param["mixer"].lower()).set_active(True) for t in ("beta", "nmaxold", "weight", "beta_m", "nmaxold_m", "weight_m"): getattr(self, t + "_adj").value = param[t] self.show() self.grab_add() # Lock all other windows def radio_grid_toggled(self, widget): hmode = self.radio_h.get_active() self.h_spin.set_sensitive(hmode) for s in self.gpts_spin: s.set_sensitive(not hmode) self.gpts_changed() def gpts_changed(self, *args): if self.radio_gpts.get_active(): g = np.array([int(g.value) for g in self.gpts]) size = np.array([self.ucell[i, i] for i in range(3)]) txt = self.gpts_hlabel_format % tuple(size / g) self.gpts_hlabel.set_markup(txt) else: self.gpts_hlabel.set_markup("") def h_changed(self, *args): h = self.h.value for i in range(3): g = 4 * round(self.ucell[i, i] / (4 * h)) self.gpts[i].value = g def k_changed(self, *args): size = [ self.kpts[i].value * np.sqrt(np.vdot(self.ucell[i], self.ucell[i])) for i in range(3) ] self.kpts_label.set_text(self.kpts_label_format % tuple(size)) def mode_changed(self, *args): self.basis.set_sensitive(self.mode.get_active() == 1) def mixer_changed(self, *args): radios = (self.radio_mixer, self.radio_mixersum, self.radio_mixerdiff) spin1 = (self.beta_spin, self.nmaxold_spin, self.weight_spin) spin2 = (self.beta_m_spin, self.nmaxold_m_spin, self.weight_m_spin) if self.use_mixer.get_active(): # Mixer parameters can be specified. if self.spinpol.get_active(): self.radio_mixer.set_sensitive(False) self.radio_mixersum.set_sensitive(True) self.radio_mixerdiff.set_sensitive(True) if self.radio_mixer.get_active(): self.radio_mixersum.set_active(True) else: self.radio_mixer.set_sensitive(True) self.radio_mixersum.set_sensitive(False) self.radio_mixerdiff.set_sensitive(False) self.radio_mixer.set_active(True) if self.radio_mixerdiff.get_active(): active = spin1 + spin2 passive = () else: active = spin1 passive = spin2 for widget in active: widget.set_sensitive(True) for widget in passive: widget.set_sensitive(False) else: # No mixer parameters for widget in radios + spin1 + spin2: widget.set_sensitive(False) def isorthogonal(self, matrix): ortho = True for i in range(3): for j in range(3): if i != j and matrix[i][j] != 0.0: ortho = False return ortho def ok(self, *args): param = {} param["xc"] = self.xc.get_active_text() param["xc#"] = self.xc.get_active() param["use_h"] = self.radio_h.get_active() param["h"] = self.h.value param["gpts"] = [int(g.value) for g in self.gpts] param["kpts"] = [int(k.value) for k in self.kpts] param["spinpol"] = self.spinpol.get_active() param["mode"] = self.mode.get_active_text().split()[0].lower() param["mode#"] = self.mode.get_active() param["basis"] = self.basis.get_active_text().split()[0].lower() param["basis#"] = self.basis.get_active() param["use mixer"] = self.use_mixer.get_active() if self.radio_mixer.get_active(): m = "Mixer" elif self.radio_mixersum.get_active(): m = "MixerSum" else: assert self.radio_mixerdiff.get_active() m = "MixerDiff" param["mixer"] = m for t in ("beta", "nmaxold", "weight", "beta_m", "nmaxold_m", "weight_m"): param[t] = getattr(self, t + "_adj").value setattr(self.owner, self.attrname, param) self.destroy() class AIMS_Window: aims_xc_cluster = [ 'pw-lda', 'pz-lda', 'pbe', 'pbesol', 'rpbe', 'revpbe', 'blyp', 'am05', 'b3lyp', 'hse03', 'hse06', 'pbe0', 'pbesol0', 'hf', 'mp2' ] aims_xc_periodic = [ 'pw-lda', 'pz-lda', 'pbe', 'pbesol', 'rpbe', 'revpbe', 'blyp', 'am05' ] aims_xc_default = 'pbe' aims_relativity_list = ['none', 'atomic_zora', 'zora'] aims_keyword_gui_list = [ 'xc', 'vdw_correction_hirshfeld', 'k_grid', 'spin', 'charge', 'relativistic', 'sc_accuracy_etot', 'sc_accuracy_eev', 'sc_accuracy_rho', 'sc_accuracy_forces', 'compute_forces', 'run_command', 'species_dir', 'default_initial_moment' ] def __init__(self, owner, param, attrname): self.owner = owner self.attrname = attrname atoms = owner.atoms self.periodic = atoms.get_pbc().all() if not self.periodic and atoms.get_pbc().any(): aims_periodic_warning = True self.periodic = True else: aims_periodic_warning = False from ase.calculators.aims import (float_keys, exp_keys, string_keys, int_keys, bool_keys, list_keys, input_keys) self.aims_keyword_list = (float_keys + exp_keys + string_keys + int_keys + bool_keys + list_keys + input_keys) self.expert_keywords = [] natoms = len(atoms) ui.Window.__init__(self) self.set_title(_("FHI-aims parameters")) vbox = ui.VBox() vbox.set_border_width(5) # Print some info txt = _("%i atoms.\n") % (natoms) if self.periodic: self.ucell = atoms.get_cell() txt += _("Periodic geometry, unit cell is:\n") for i in range(3): txt += "(%8.3f %8.3f %8.3f)\n" % ( self.ucell[i][0], self.ucell[i][1], self.ucell[i][2]) self.xc_list = self.aims_xc_periodic else: txt += _("Non-periodic geometry.\n") self.xc_list = self.aims_xc_cluster pack(vbox, [ui.Label(txt)]) # XC functional & dispersion correction self.xc = ui.combo_box_new_text() self.xc_setup = False self.TS = ui.CheckButton(_("Hirshfeld-based dispersion correction")) pack(vbox, [ui.Label(_("Exchange-correlation functional: ")), self.xc]) pack(vbox, [self.TS]) pack(vbox, [ui.Label("")]) # k-grid? if self.periodic: self.kpts = [] self.kpts_spin = [] for i in range(3): default = np.ceil( 20.0 / np.sqrt(np.vdot(self.ucell[i], self.ucell[i]))) g = ui.Adjustment(default, 1, 100, 1) s = ui.SpinButton(g, 0, 0) self.kpts.append(g) self.kpts_spin.append(s) g.connect("value-changed", self.k_changed) pack(vbox, [ ui.Label(_("k-points k = (")), self.kpts_spin[0], ui.Label(", "), self.kpts_spin[1], ui.Label(", "), self.kpts_spin[2], ui.Label(")") ]) self.kpts_label = ui.Label("") self.kpts_label_format = _( u"k-points x size: (%.1f, %.1f, %.1f) Ã…") pack(vbox, [self.kpts_label]) self.k_changed() pack(vbox, ui.Label("")) # Spin polarized, charge, relativity self.spinpol = ui.CheckButton(_("Spin / initial moment ")) self.spinpol.connect('toggled', self.spinpol_changed) self.moment = ui.Adjustment(0, -100, 100, 0.1) self.moment_spin = ui.SpinButton(self.moment, 0, 0) self.moment_spin.set_digits(2) self.moment_spin.set_sensitive(False) self.charge = ui.Adjustment(0, -100, 100, 0.1) self.charge_spin = ui.SpinButton(self.charge, 0, 0) self.charge_spin.set_digits(2) self.relativity_type = ui.combo_box_new_text() for i, x in enumerate(self.aims_relativity_list): self.relativity_type.append_text(x) self.relativity_type.connect('changed', self.relativity_changed) self.relativity_threshold = ui.Entry(max=8) self.relativity_threshold.set_text('1.00e-12') self.relativity_threshold.set_sensitive(False) pack(vbox, [ self.spinpol, self.moment_spin, ui.Label(_(" Charge")), self.charge_spin, ui.Label(_(" Relativity")), self.relativity_type, ui.Label(_(" Threshold")), self.relativity_threshold ]) pack(vbox, ui.Label("")) # self-consistency criteria pack(vbox, [ui.Label(_("Self-consistency convergence:"))]) self.sc_tot_energy = ui.Adjustment(1e-6, 1e-6, 1e0, 1e-6) self.sc_tot_energy_spin = ui.SpinButton(self.sc_tot_energy, 0, 0) self.sc_tot_energy_spin.set_digits(6) self.sc_tot_energy_spin.set_numeric(True) self.sc_sum_eigenvalue = ui.Adjustment(1e-3, 1e-6, 1e0, 1e-6) self.sc_sum_eigenvalue_spin = ui.SpinButton(self.sc_sum_eigenvalue, 0, 0) self.sc_sum_eigenvalue_spin.set_digits(6) self.sc_sum_eigenvalue_spin.set_numeric(True) self.sc_density = ui.Adjustment(1e-4, 1e-6, 1e0, 1e-6) self.sc_density_spin = ui.SpinButton(self.sc_density, 0, 0) self.sc_density_spin.set_digits(6) self.sc_density_spin.set_numeric(True) self.compute_forces = ui.CheckButton(_("Compute forces")) self.compute_forces.set_active(True) self.compute_forces.connect("toggled", self.compute_forces_toggled, "") self.sc_forces = ui.Adjustment(1e-4, 1e-6, 1e0, 1e-6) self.sc_forces_spin = ui.SpinButton(self.sc_forces, 0, 0) self.sc_forces_spin.set_numeric(True) self.sc_forces_spin.set_digits(6) # XXX: use ui.table for layout. Spaces will not work well otherwise # (depend on fonts, widget style, ...) # TRANSLATORS: Don't care too much about these, just get approximately # the same string lengths pack(vbox, [ ui.Label(_("Energy: ")), self.sc_tot_energy_spin, ui.Label(_(" eV Sum of eigenvalues: ")), self.sc_sum_eigenvalue_spin, ui.Label(_(" eV")) ]) pack(vbox, [ ui.Label(_("Electron density: ")), self.sc_density_spin, ui.Label(_(" Force convergence: ")), self.sc_forces_spin, ui.Label(_(" eV/Ang ")) ]) pack(vbox, [self.compute_forces]) pack(vbox, ui.Label("")) swin = ui.ScrolledWindow() swin.set_border_width(0) swin.set_policy(ui.POLICY_AUTOMATIC, ui.POLICY_AUTOMATIC) self.expert_keyword_set = ui.Entry(max=55) self.expert_keyword_add = ui.Button('Add') self.expert_keyword_add.connect("clicked", self.expert_keyword_import) self.expert_keyword_set.connect("activate", self.expert_keyword_import) pack(vbox, [ ui.Label(_("Additional keywords: ")), self.expert_keyword_set, self.expert_keyword_add ]) self.expert_vbox = ui.VBox() vbox.pack_start(swin, True, True, 0) swin.add_with_viewport(self.expert_vbox) self.expert_vbox.get_parent().set_shadow_type(ui.SHADOW_NONE) self.expert_vbox.get_parent().set_size_request(-1, 100) swin.show() self.expert_vbox.show() pack(vbox, ui.Label("")) # run command and species defaults: pack(vbox, ui.Label(_('FHI-aims execution command: '))) self.run_command = pack(vbox, ui.Entry(max=0)) pack(vbox, ui.Label(_('Directory for species defaults: '))) self.species_defaults = pack(vbox, ui.Entry(max=0)) # set defaults from previous instance of the calculator, if applicable: if param is not None: self.set_param(param) else: self.set_defaults() # Buttons at the bottom pack(vbox, ui.Label("")) butbox = ui.HButtonBox() default_but = ui.Button(_("Set Defaults")) default_but.connect("clicked", self.set_defaults) import_control_but = ui.Button(_("Import control.in")) import_control_but.connect("clicked", self.import_control) export_control_but = ui.Button(_("Export control.in")) export_control_but.connect("clicked", self.export_control) cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) butbox.pack_start(default_but, 0, 0) butbox.pack_start(import_control_but, 0, 0) butbox.pack_start(export_control_but, 0, 0) butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) self.expert_vbox.show() vbox.show() self.add(vbox) self.show() self.grab_add() if aims_periodic_warning: error(aims_pbc_warning_text) def set_defaults(self, *args): atoms = self.owner.atoms.copy() if not self.xc_setup: self.xc_setup = True for i, x in enumerate(self.xc_list): self.xc.append_text(x) for i, x in enumerate(self.xc_list): if x == self.aims_xc_default: self.xc.set_active(i) self.TS.set_active(False) if self.periodic: self.ucell = atoms.get_cell() for i in range(3): default = np.ceil( 20.0 / np.sqrt(np.vdot(self.ucell[i], self.ucell[i]))) self.kpts_spin[i].set_value(default) self.spinpol.set_active(False) self.moment.set_value(0) self.moment_spin.set_sensitive(False) self.charge.set_value(0) aims_relativity_default = 'none' for a in atoms: if a.number > 20: aims_relativity_default = 'atomic_zora' for i, x in enumerate(self.aims_relativity_list): if x == aims_relativity_default: self.relativity_type.set_active(i) self.sc_tot_energy.set_value(1e-6) self.sc_sum_eigenvalue.set_value(1e-3) self.sc_density.set_value(1e-4) self.sc_forces.set_value(1e-4) for key in self.expert_keywords: key[0].destroy() key[1].destroy() key[2].destroy() key[3] = False for child in self.expert_vbox.children(): self.expert_vbox.remove(child) if 'AIMS_COMMAND' in os.environ: text = os.environ['AIMS_COMMAND'] else: text = "" self.run_command.set_text(text) if 'AIMS_SPECIES_DIR' in os.environ: text = os.environ['AIMS_SPECIES_DIR'] else: text = "" self.species_defaults.set_text(text) def set_attributes(self, *args): param = {} param["xc"] = self.xc.get_active_text() if self.periodic: param["k_grid"] = (int(self.kpts[0].value), int(self.kpts[1].value), int(self.kpts[2].value)) if self.spinpol.get_active(): param["spin"] = "collinear" param["default_initial_moment"] = self.moment.get_value() else: param["spin"] = "none" param["default_initial_moment"] = None param["vdw_correction_hirshfeld"] = self.TS.get_active() param["charge"] = self.charge.value param["relativistic"] = self.relativity_type.get_active_text() if param["relativistic"] == 'atomic_zora': param["relativistic"] += " scalar " if param["relativistic"] == 'zora': param["relativistic"] += (" scalar " + self.relativity_threshold.get_text()) param["sc_accuracy_etot"] = self.sc_tot_energy.value param["sc_accuracy_eev"] = self.sc_sum_eigenvalue.value param["sc_accuracy_rho"] = self.sc_density.value param["compute_forces"] = self.compute_forces.get_active() param["sc_accuracy_forces"] = self.sc_forces.value param["run_command"] = self.run_command.get_text() param["species_dir"] = self.species_defaults.get_text() from ase.calculators.aims import (float_keys, exp_keys, string_keys, int_keys, bool_keys, list_keys, input_keys) for option in self.expert_keywords: if option[3]: # Set type of parameter according to which list it is in key = option[0].get_text().strip() val = option[1].get_text().strip() if key == 'output': if 'output' in param: param[key] += [val] else: param[key] = [val] elif key in float_keys or key in exp_keys: param[key] = float(val) elif key in list_keys or key in string_keys or key in input_keys: param[key] = val elif key in int_keys: param[key] = int(val) elif key in bool_keys: param[key] = bool(val) setattr(self.owner, self.attrname, param) def set_param(self, param): if param["xc"] is not None: for i, x in enumerate(self.xc_list): if x == param["xc"]: self.xc.set_active(i) if isinstance(param["vdw_correction_hirshfeld"], bool): self.TS.set_active(param["vdw_correction_hirshfeld"]) if self.periodic and param["k_grid"] is not None: self.kpts[0].value = int(param["k_grid"][0]) self.kpts[1].value = int(param["k_grid"][1]) self.kpts[2].value = int(param["k_grid"][2]) if param["spin"] is not None: self.spinpol.set_active(param["spin"] == "collinear") self.moment_spin.set_sensitive(param["spin"] == "collinear") if param["default_initial_moment"] is not None: self.moment.value = param["default_initial_moment"] if param["charge"] is not None: self.charge.value = param["charge"] if param["relativistic"] is not None: if isinstance(param["relativistic"], (tuple, list)): rel = param["relativistic"] else: rel = param["relativistic"].split() for i, x in enumerate(self.aims_relativity_list): if x == rel[0]: self.relativity_type.set_active(i) if x == 'zora': self.relativity_threshold.set_text(rel[2]) self.relativity_threshold.set_sensitive(True) if param["sc_accuracy_etot"] is not None: self.sc_tot_energy.value = param["sc_accuracy_etot"] if param["sc_accuracy_eev"] is not None: self.sc_sum_eigenvalue.value = param["sc_accuracy_eev"] if param["sc_accuracy_rho"] is not None: self.sc_density.value = param["sc_accuracy_rho"] if param["compute_forces"] is not None: if param["compute_forces"]: if param["sc_accuracy_forces"] is not None: self.sc_forces.value = param["sc_accuracy_forces"] self.compute_forces.set_active(param["compute_forces"]) else: self.compute_forces.set_active(False) if param["run_command"] is not None: self.run_command.set_text(param["run_command"]) if param["species_dir"] is not None: self.species_defaults.set_text(param["species_dir"]) for (key, val) in param.items(): if key in self.aims_keyword_list and key not in self.aims_keyword_gui_list: if val is not None: # = existing "expert keyword" if key == 'output': # 'output' can be used more than once options = val if isinstance(options, basestring): options = [options] for arg in options: self.expert_keyword_create([key] + [arg]) else: if isinstance(val, basestring): arg = [key] + val.split() elif isinstance(val, (tuple, list)): arg = [key] + [str(a) for a in val] else: arg = [key] + [str(val)] self.expert_keyword_create(arg) def ok(self, *args): self.set_attributes(*args) self.destroy() def export_control(self, *args): filename = "control.in" chooser = ui.FileChooserDialog( _('Export parameters ... '), None, ui.FILE_CHOOSER_ACTION_SAVE, ('Cancel', ui.RESPONSE_CANCEL, 'Save', ui.RESPONSE_OK)) chooser.set_filename(filename) save = chooser.run() if save == ui.RESPONSE_OK or save == ui.RESPONSE_SAVE: filename = chooser.get_filename() self.set_attributes(*args) param = getattr(self.owner, "aims_parameters") from ase.calculators.aims import Aims calc_temp = Aims(**param) atoms_temp = self.owner.atoms.copy() atoms_temp.set_calculator(calc_temp) atoms_temp.calc.write_control(file=filename) atoms_temp.calc.write_species(file=filename) chooser.destroy() def import_control(self, *args): filename = "control.in" chooser = ui.FileChooserDialog( _('Import control.in file ... '), None, ui.FILE_CHOOSER_ACTION_SAVE, ('Cancel', ui.RESPONSE_CANCEL, 'Save', ui.RESPONSE_OK)) chooser.set_filename(filename) save = chooser.run() if save == ui.RESPONSE_OK: self.set_defaults() filename = chooser.get_filename() control = open(filename, 'r') while True: line = control.readline() if not line: break if "List of parameters used to initialize the calculator:" in line: control.readline() from ase.io.aims import read_aims_calculator calc = read_aims_calculator(control) found_aims_calculator = True control.close() if found_aims_calculator: param = calc.float_params for key in calc.exp_params: param[key] = calc.exp_params[key] for key in calc.string_params: param[key] = calc.string_params[key] for key in calc.int_params: param[key] = calc.int_params[key] for key in calc.bool_params: param[key] = calc.bool_params[key] for key in calc.list_params: param[key] = calc.list_params[key] for key in calc.input_parameters: param[key] = calc.input_parameters[key] self.set_defaults() self.set_param(param) chooser.destroy() def k_changed(self, *args): size = [ self.kpts[i].value * np.sqrt(np.vdot(self.ucell[i], self.ucell[i])) for i in range(3) ] self.kpts_label.set_text(self.kpts_label_format % tuple(size)) def compute_forces_toggled(self, *args): self.sc_forces_spin.set_sensitive(self.compute_forces.get_active()) def relativity_changed(self, *args): self.relativity_threshold.set_sensitive( self.relativity_type.get_active() == 2) def spinpol_changed(self, *args): self.moment_spin.set_sensitive(self.spinpol.get_active()) def expert_keyword_import(self, *args): command = self.expert_keyword_set.get_text().split() if len(command) > 0 and command[ 0] in self.aims_keyword_list and not command[ 0] in self.aims_keyword_gui_list: self.expert_keyword_create(command) elif command[0] in self.aims_keyword_gui_list: error( _("Please use the facilities provided in this window to " "manipulate the keyword: %s!") % command[0]) else: error( _("Don't know this keyword: %s\n" "\nPlease check!\n\n" "If you really think it should be available, " "please add it to the top of ase/calculators/aims.py.") % command[0]) self.expert_keyword_set.set_text("") def expert_keyword_create(self, command): key = command[0] argument = command[1] if len(command) > 2: for a in command[2:]: argument += ' ' + a index = len(self.expert_keywords) self.expert_keywords += [[ ui.Label(" " + key + " "), ui.Entry(max=45), ExpertDeleteButton(index), True ]] self.expert_keywords[index][1].set_text(argument) self.expert_keywords[index][2].connect('clicked', self.expert_keyword_delete) if not self.expert_vbox.get_children(): table = ui.Table(1, 3) table.attach(self.expert_keywords[index][0], 0, 1, 0, 1, 0) table.attach(self.expert_keywords[index][1], 1, 2, 0, 1, 0) table.attach(self.expert_keywords[index][2], 2, 3, 0, 1, 0) table.show_all() pack(self.expert_vbox, table) else: table = self.expert_vbox.get_children()[0] nrows = table.get_property('n-rows') table.resize(nrows + 1, 3) table.attach(self.expert_keywords[index][0], 0, 1, nrows, nrows + 1, 0) table.attach(self.expert_keywords[index][1], 1, 2, nrows, nrows + 1, 0) table.attach(self.expert_keywords[index][2], 2, 3, nrows, nrows + 1, 0) table.show_all() def expert_keyword_delete(self, button, *args): index = button.index # which one to kill for i in [0, 1, 2]: self.expert_keywords[index][i].destroy() table = self.expert_vbox.get_children()[0] nrows = table.get_property('n-rows') table.resize(nrows - 1, 3) self.expert_keywords[index][3] = False class ExpertDeleteButton: def __init__(self, index): ui.Button.__init__(self, 'Delete') alignment = self.get_children()[0] hbox = alignment.get_children()[0] #self.set_size_request(1, 3) image, label = hbox.get_children() if image is not None: label.set_text('Del') self.index = index class VASP_Window: vasp_xc_list = ['PW91', 'PBE', 'LDA'] vasp_xc_default = 'PBE' vasp_prec_default = 'Normal' def __init__(self, owner, param, attrname): self.owner = owner self.attrname = attrname atoms = owner.atoms self.periodic = atoms.get_pbc().all() self.vasp_keyword_gui_list = [ 'ediff', 'encut', 'ismear', 'ispin', 'prec', 'sigma' ] from ase.calculators.vasp import float_keys, exp_keys, string_keys, int_keys, bool_keys, list_keys, special_keys self.vasp_keyword_list = float_keys + exp_keys + string_keys + int_keys + bool_keys + list_keys + special_keys self.expert_keywords = [] natoms = len(atoms) ui.Window.__init__(self) self.set_title(_("VASP parameters")) vbox = ui.VBox() vbox.set_border_width(5) # Print some info txt = _("%i atoms.\n") % natoms self.ucell = atoms.get_cell() txt += _("Periodic geometry, unit cell is: \n") for i in range(3): txt += "(%8.3f %8.3f %8.3f)\n" % ( self.ucell[i][0], self.ucell[i][1], self.ucell[i][2]) pack(vbox, [ui.Label(txt)]) # XC functional () self.xc = ui.combo_box_new_text() for i, x in enumerate(self.vasp_xc_list): self.xc.append_text(x) # Spin polarized self.spinpol = ui.CheckButton(_("Spin polarized")) pack(vbox, [ ui.Label(_("Exchange-correlation functional: ")), self.xc, ui.Label(" "), self.spinpol ]) pack(vbox, ui.Label("")) # k-grid self.kpts = [] self.kpts_spin = [] for i in range(3): default = np.ceil(20.0 / np.sqrt(np.vdot(self.ucell[i], self.ucell[i]))) g = ui.Adjustment(default, 1, 100, 1) s = ui.SpinButton(g, 0, 0) self.kpts.append(g) self.kpts_spin.append(s) g.connect("value-changed", self.k_changed) # Precision of calculation self.prec = ui.combo_box_new_text() for i, x in enumerate(['Low', 'Normal', 'Accurate']): self.prec.append_text(x) if x == self.vasp_prec_default: self.prec.set_active(i) # cutoff energy if 'VASP_PP_PATH' in os.environ: self.encut_min_default, self.encut_max_default = self.get_min_max_cutoff( ) else: self.encut_max_default = 400.0 self.encut_min_default = 100.0 self.encut = ui.Adjustment(self.encut_max_default, 0, 9999, 10) self.encut_spin = ui.SpinButton(self.encut, 0, 0) self.encut_spin.set_digits(2) self.encut_spin.connect("value-changed", self.check_encut_warning) self.encut_warning = ui.Label("") pack(vbox, [ ui.Label(_("k-points k = (")), self.kpts_spin[0], ui.Label(", "), self.kpts_spin[1], ui.Label(", "), self.kpts_spin[2], ui.Label(_(") Cutoff: ")), self.encut_spin, ui.Label(_(" Precision: ")), self.prec ]) self.kpts_label = ui.Label("") self.kpts_label_format = _( u"k-points x size: (%.1f, %.1f, %.1f) Ã… ") pack(vbox, [self.kpts_label, self.encut_warning]) self.k_changed() pack(vbox, ui.Label("")) self.ismear = ui.combo_box_new_text() for x in ['Fermi', 'Gauss', 'Methfessel-Paxton']: self.ismear.append_text(x) self.ismear.set_active(2) self.smearing_order = ui.Adjustment(2, 0, 9, 1) self.smearing_order_spin = ui.SpinButton(self.smearing_order, 0, 0) self.smearing_order_spin.set_digits(0) self.ismear.connect("changed", self.check_ismear_changed) self.sigma = ui.Adjustment(0.1, 0.001, 9.0, 0.1) self.sigma_spin = ui.SpinButton(self.sigma, 0, 0) self.sigma_spin.set_digits(3) pack(vbox, [ ui.Label(_("Smearing: ")), self.ismear, ui.Label(_(" order: ")), self.smearing_order_spin, ui.Label(_(" width: ")), self.sigma_spin ]) pack(vbox, ui.Label("")) self.ediff = ui.Adjustment(1e-4, 1e-6, 1e0, 1e-4) self.ediff_spin = ui.SpinButton(self.ediff, 0, 0) self.ediff_spin.set_digits(6) pack(vbox, [ ui.Label(_("Self-consistency convergence: ")), self.ediff_spin, ui.Label(_(" eV")) ]) pack(vbox, ui.Label("")) swin = ui.ScrolledWindow() swin.set_border_width(0) swin.set_policy(ui.POLICY_AUTOMATIC, ui.POLICY_AUTOMATIC) self.expert_keyword_set = ui.Entry(max=55) self.expert_keyword_add = ui.Button('Add') self.expert_keyword_add.connect("clicked", self.expert_keyword_import) self.expert_keyword_set.connect("activate", self.expert_keyword_import) pack(vbox, [ ui.Label(_("Additional keywords: ")), self.expert_keyword_set, self.expert_keyword_add ]) self.expert_vbox = ui.VBox() vbox.pack_start(swin, True, True, 0) swin.add_with_viewport(self.expert_vbox) self.expert_vbox.get_parent().set_shadow_type(ui.SHADOW_NONE) self.expert_vbox.get_parent().set_size_request(-1, 100) swin.show() self.expert_vbox.show() pack(vbox, ui.Label("")) # run command and location of POTCAR files: pack(vbox, ui.Label(_('VASP execution command: '))) self.run_command = pack(vbox, ui.Entry(max=0)) if 'VASP_COMMAND' in os.environ: self.run_command.set_text(os.environ['VASP_COMMAND']) pack(vbox, ui.Label(_('Directory for species defaults: '))) self.pp_path = pack(vbox, ui.Entry(max=0)) if 'VASP_PP_PATH' in os.environ: self.pp_path.set_text(os.environ['VASP_PP_PATH']) # Buttons at the bottom pack(vbox, ui.Label("")) butbox = ui.HButtonBox() set_default_but = ui.Button(_("Set Defaults")) set_default_but.connect("clicked", self.set_defaults) import_vasp_but = ui.Button(_("Import VASP files")) import_vasp_but.connect("clicked", self.import_vasp_files) export_vasp_but = ui.Button(_("Export VASP files")) export_vasp_but.connect("clicked", self.export_vasp_files) cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) butbox.pack_start(set_default_but, 0, 0) butbox.pack_start(import_vasp_but, 0, 0) butbox.pack_start(export_vasp_but, 0, 0) butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) vbox.show() self.add(vbox) self.show() self.grab_add() # Lock all other windows self.load_attributes() def load_attributes(self, directory="."): """Sets values of fields of the window according to the values set inside the INCAR, KPOINTS and POTCAR file in 'directory'.""" from os import chdir chdir(directory) # Try and load INCAR, in the current directory from ase.calculators.vasp import Vasp calc_temp = Vasp() try: calc_temp.read_incar("INCAR") except IOError: pass else: if calc_temp.spinpol: self.spinpol.set_active(True) else: self.spinpol.set_active(False) if calc_temp.float_params['encut']: self.encut.set_value(calc_temp.float_params['encut']) if calc_temp.int_params['ismear'] == -1: # Fermi vasp_ismear_default = 'Fermi' elif calc_temp.int_params['ismear'] == 0: # Gauss vasp_ismear_default = 'Gauss' elif calc_temp.int_params['ismear'] > 0: # Methfessel-Paxton vasp_ismear_default = 'Methfessel-Paxton' else: vasp_ismear_default = None for i, x in enumerate(['Fermi', 'Gauss', 'Methfessel-Paxton']): if vasp_ismear_default == x: self.ismear.set_active(i) if calc_temp.exp_params['ediff']: self.ediff.set_value(calc_temp.exp_params['ediff']) for i, x in enumerate(['Low', 'Normal', 'Accurate']): if x == calc_temp.string_params['prec']: self.prec.set_active(i) if calc_temp.float_params['sigma']: self.sigma.set_value(calc_temp.float_params['sigma']) import copy all_params = copy.deepcopy(calc_temp.float_params) all_params.update(calc_temp.exp_params) all_params.update(calc_temp.string_params) all_params.update(calc_temp.int_params) all_params.update(calc_temp.bool_params) all_params.update(calc_temp.special_params) for (key, value) in all_params.items(): if key in self.vasp_keyword_list \ and key not in self.vasp_keyword_gui_list \ and value is not None: command = key + " " + str(value) self.expert_keyword_create(command.split()) for (key, value) in calc_temp.list_params.items(): if key == "magmom" and value is not None: command = key + " " rep = 1 previous = value[0] for v in value[1:]: if v == previous: rep += 1 else: if rep > 1: command += "%d*%f " % (rep, previous) else: command += "%f " % previous rep = 1 previous = v if rep > 1: command += "%d*%f " % (rep, previous) else: command += "%f" % previous self.expert_keyword_create(command.split()) elif value is not None: command = key + " " for v in value: command += str(v) + " " self.expert_keyword_create(command.split()) # Try and load POTCAR, in the current directory try: calc_temp.read_potcar() except IOError: pass else: #Set xc read from POTCAR for i, x in enumerate(self.vasp_xc_list): if x == calc_temp.input_params['xc']: self.xc.set_active(i) # Try and load KPOINTS, in the current directory try: calc_temp.read_kpoints("KPOINTS") except IOError: pass else: # Set KPOINTS grid dimensions for i in range(3): self.kpts_spin[i].set_value(calc_temp.input_params['kpts'][i]) def set_attributes(self, *args): self.param = {} self.param["xc"] = self.xc.get_active_text() self.param["prec"] = self.prec.get_active_text() self.param["kpts"] = (int(self.kpts[0].value), int(self.kpts[1].value), int(self.kpts[2].value)) self.param["encut"] = self.encut.value self.param["ediff"] = self.ediff.value self.param["ismear"] = self.get_ismear() self.param["sigma"] = self.sigma.value if self.spinpol.get_active(): self.param["ispin"] = 2 else: self.param["ispin"] = 1 from ase.calculators.vasp import float_keys, exp_keys, string_keys, int_keys, bool_keys, list_keys, special_keys for option in self.expert_keywords: if option[ 3]: # set type of parameter accoding to which list it is in key = option[0].get_text().split()[0].strip() val = option[1].get_text().strip() if key in float_keys or key in exp_keys: self.param[key] = float(val) elif key == "magmom": val = val.replace("*", " * ") c = val.split() val = [] i = 0 while i < len(c): if c[i] == "*": b = val.pop() i += 1 for j in range(int(b)): val.append(float(c[i])) else: val.append(float(c[i])) i += 1 self.param[key] = val elif key in list_keys: c = val.split() val = [] for i in c: val.append(float(i)) self.param[key] = val elif key in string_keys or key in special_keys: self.param[key] = val elif key in int_keys: self.param[key] = int(val) elif key in bool_keys: self.param[key] = bool(val) setattr(self.owner, self.attrname, self.param) os.environ['VASP_COMMAND'] = self.run_command.get_text() os.environ['VASP_PP_PATH'] = self.pp_path.get_text() def ok(self, *args): self.set_attributes(*args) self.destroy() def get_min_max_cutoff(self, *args): # determine the recommended energy cutoff limits from ase.calculators.vasp import Vasp calc_temp = Vasp() atoms_temp = self.owner.atoms.copy() calc_temp.initialize(atoms_temp) calc_temp.write_potcar(suffix='.check_energy_cutoff') enmin = -1e6 enmax = -1e6 for line in open("POTCAR.check_energy_cutoff", 'r').readlines(): if "ENMIN" in line: enmax = max(enmax, float(line.split()[2].split(';')[0])) enmin = max(enmin, float(line.split()[5])) from os import system system("rm POTCAR.check_energy_cutoff") return enmin, enmax def k_changed(self, *args): size = [ self.kpts[i].value * np.sqrt(np.vdot(self.ucell[i], self.ucell[i])) for i in range(3) ] self.kpts_label.set_text(self.kpts_label_format % tuple(size)) def check_encut_warning(self, *args): if self.encut.value < self.encut_min_default: self.encut_warning.set_markup( _("WARNING: cutoff energy is lower than recommended minimum!" )) else: self.encut_warning.set_markup("") def check_ismear_changed(self, *args): if self.ismear.get_active_text() == 'Methfessel-Paxton': self.smearing_order_spin.set_sensitive(True) else: self.smearing_order_spin.set_sensitive(False) def get_ismear(self, *args): type = self.ismear.get_active_text() if type == 'Methfessel-Paxton': ismear_value = self.smearing_order.value elif type == 'Fermi': ismear_value = -1 else: ismear_value = 0 return ismear_value def destroy(self): self.grab_remove() ui.Window.destroy(self) def set_defaults(self, *args): # Reset fields to what they were self.spinpol.set_active(False) for i, x in enumerate(['Low', 'Normal', 'Accurate']): if x == self.vasp_prec_default: self.prec.set_active(i) self.encut_spin.set_value(self.encut_max_default) self.ismear.set_active(2) self.smearing_order.set_value(2) self.ediff.set_value(1e-4) for child in self.expert_vbox.children(): self.expert_vbox.remove(child) for i, x in enumerate(self.vasp_xc_list): if x == self.vasp_xc_default: self.xc.set_active(i) default = np.ceil(20.0 / np.sqrt(np.vdot(self.ucell[i], self.ucell[i]))) for i in range(3): self.kpts_spin[i].set_value(default) def import_vasp_files(self, *args): dirname = "" chooser = ui.FileChooserDialog( _('Import VASP input files: choose directory ... '), None, ui.FILE_CHOOSER_ACTION_SELECT_FOLDER, ( 'Cancel', ui.RESPONSE_CANCEL, 'Open', ui.RESPONSE_OK)) chooser.set_filename(dirname) openr = chooser.run() if openr == ui.RESPONSE_OK or openr == ui.RESPONSE_SAVE: dirname = chooser.get_filename() self.load_attributes(dirname) chooser.destroy() def export_vasp_files(self, *args): filename = "" chooser = ui.FileChooserDialog( _('Export VASP input files: choose directory ... '), None, ui.FILE_CHOOSER_ACTION_SELECT_FOLDER, ( 'Cancel', ui.RESPONSE_CANCEL, 'Save', ui.RESPONSE_OK)) chooser.set_filename(filename) save = chooser.run() if save == ui.RESPONSE_OK or save == ui.RESPONSE_SAVE: filename = chooser.get_filename() from os import chdir chdir(filename) self.set_attributes(*args) param = getattr(self.owner, "vasp_parameters") from ase.calculators.vasp import Vasp calc_temp = Vasp(**param) atoms_temp = self.owner.atoms.copy() atoms_temp.set_calculator(calc_temp) calc_temp.initialize(atoms_temp) calc_temp.write_incar(atoms_temp) calc_temp.write_potcar() calc_temp.write_kpoints() calc_temp.write_sort_file() from ase.io.vasp import write_vasp write_vasp( 'POSCAR', calc_temp.atoms_sorted, symbol_count=calc_temp.symbol_count) chooser.destroy() def expert_keyword_import(self, *args): command = self.expert_keyword_set.get_text().split() if len(command) > 0 and command[ 0] in self.vasp_keyword_list and not command[ 0] in self.vasp_keyword_gui_list: self.expert_keyword_create(command) elif command[0] in self.vasp_keyword_gui_list: error( _("Please use the facilities provided in this window to " "manipulate the keyword: %s!") % command[0]) else: error( _("Don't know this keyword: %s" "\nPlease check!\n\n" "If you really think it should be available, " "please add it to the top of ase/calculators/vasp.py.") % command[0]) self.expert_keyword_set.set_text("") def expert_keyword_create(self, command): key = command[0] if command[1] == "=": command.remove("=") argument = command[1] if len(command) > 2: for a in command[2:]: argument += ' ' + a index = len(self.expert_keywords) self.expert_keywords += [[ ui.Label(" " + key + " = "), ui.Entry(max=55), ExpertDeleteButton(index), True ]] self.expert_keywords[index][1].set_text(argument) self.expert_keywords[index][2].connect('clicked', self.expert_keyword_delete) if not self.expert_vbox.get_children(): table = ui.Table(1, 3) table.attach(self.expert_keywords[index][0], 0, 1, 0, 1, 0) table.attach(self.expert_keywords[index][1], 1, 2, 0, 1, 0) table.attach(self.expert_keywords[index][2], 2, 3, 0, 1, 0) table.show_all() pack(self.expert_vbox, table) else: table = self.expert_vbox.get_children()[0] nrows = table.get_property('n-rows') table.resize(nrows + 1, 3) table.attach(self.expert_keywords[index][0], 0, 1, nrows, nrows + 1, 0) table.attach(self.expert_keywords[index][1], 1, 2, nrows, nrows + 1, 0) table.attach(self.expert_keywords[index][2], 2, 3, nrows, nrows + 1, 0) table.show_all() def expert_keyword_delete(self, button, *args): index = button.index # which one to kill for i in [0, 1, 2]: self.expert_keywords[index][i].destroy() table = self.expert_vbox.get_children()[0] nrows = table.get_property('n-rows') table.resize(nrows - 1, 3) self.expert_keywords[index][3] = False ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/colors.py000066400000000000000000000055051316323560300232030ustar00rootroot00000000000000# -*- coding: utf-8 -*- """colors.py - select how to color the atoms in the GUI.""" from __future__ import unicode_literals from ase.gui.i18n import _ import numpy as np import ase.gui.ui as ui from ase.gui.utils import get_magmoms class ColorWindow: """A window for selecting how to color the atoms.""" def __init__(self, gui): self.win = ui.Window(_('Colors')) self.gui = gui self.win.add(ui.Label(_('Choose how the atoms are colored:'))) values = ['jmol', 'tag', 'force', 'velocity', 'initial charge', 'magmom'] labels = [_('By atomic number, default "jmol" colors'), _('By tag'), _('By force'), _('By velocity'), _('By initial charge'), _('By magnetic moment')] self.radio = ui.RadioButtons(labels, values, self.toggle, vertical=True) self.radio.value = gui.colormode self.win.add(self.radio) self.activate() self.label = ui.Label() self.win.add(self.label) def activate(self): images = self.gui.images atoms = self.gui.atoms radio = self.radio radio['tag'].active = atoms.has('tags') # XXX not sure how to deal with some images having forces, # and other images not. Same goes for below quantities F = images.get_forces(atoms) radio['force'].active = F is not None radio['velocity'].active = atoms.has('momenta') radio['initial charge'].active = atoms.has('initial_charges') radio['magmom'].active = get_magmoms(atoms).any() def toggle(self, value): self.gui.colormode = value if value == 'jmol': text = '' else: scalars = np.array([self.gui.get_color_scalars(i) for i in range(len(self.gui.images))]) mn = scalars.min() mx = scalars.max() colorscale = ['#{0:02X}AA00'.format(red) for red in range(0, 240, 10)] self.gui.colormode_data = colorscale, mn, mx unit = {'tag': '', 'force': 'eV/Ang', 'velocity': '??', 'charge': '|e|', 'initial charge': '|e|', u'magmom': 'μB'}[value] text = '[{0},{1}]: [{2:.6f},{3:.6f}] {4}'.format( _('Green'), _('Yellow'), mn, mx, unit) self.label.text = text self.radio.value = value self.gui.draw() return text # for testing def notify_atoms_changed(self): "Called by gui object when the atoms have changed." self.activate() mode = self.gui.colormode if not self.radio[mode].active: mode = 'jmol' self.toggle(mode) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/constraints.py000066400000000000000000000023111316323560300242410ustar00rootroot00000000000000from __future__ import unicode_literals import ase.gui.ui as ui from ase.gui.i18n import _ class Constraints: def __init__(self, gui): win = ui.Window(_('Constraints')) win.add([ui.Button(_('Constrain'), self.selected), _('selected atoms')]) win.add([ui.Button(_('Constrain'), self.immobile), _('immobile atoms')]) win.add([ui.Button(_('Unconstrain'), self.unconstrain), _('selected atoms')]) win.add(ui.Button(_('Clear constraints'), self.clear)) self.gui = gui def selected(self): self.gui.images.set_dynamic(self.gui.images.selected, False) self.gui.draw() def unconstrain(self): self.gui.images.set_dynamic(self.gui.images.selected, True) self.gui.draw() def immobile(self): # XXX not working. # Should constrain atoms that are not moving self.gui.draw() def clear(self): # This clears *all* constraints. But when we constrain, we # only add FixAtoms.... for atoms in self.gui.images: atoms.constraints = [] # Also, these methods are repeated from settings.py *grumble* self.gui.draw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/crystal.py000066400000000000000000000550241316323560300233640ustar00rootroot00000000000000# encoding: utf-8 """crystal.py - Window for setting up arbitrary crystal lattices """ from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.gui.status import formula from ase.spacegroup import crystal, Spacegroup import ase pack = error = cancel_apply_ok = PyButton = SetupWindow = 42 introtext = _("""\ Use this dialog to create crystal lattices. First select the structure, either from a set of common crystal structures, or by space group description. Then add all other lattice parameters. If an experimental crystal structure is available for an atom, you can look up the crystal type and lattice constant, otherwise you have to specify it yourself. """) py_template = """ from ase.spacegroup import crystal atoms = crystal(spacegroup=%(spacegroup)d, symbols=%(symbols)s, basis=%(basis)s, cellpar=%(cellpar)s) """ label_template = _( """ %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3""") # all predefined crystals go into tuples here: # (selection name, spacegroup, group_active, [repeats], [a,b,c,alpha,beta,gamma],[lattice constraints],[constraints_active],basis) crystal_definitions = [ ('Spacegroup', 1, True, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 0, 0, 0, 0, 0], [True, True, True, True, True, True], [['', '', '', '']]), ('fcc', 225, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 1, 1, 3, 3, 3], [False, False, False, False, False, False], [['', '', '', '']]), ('bcc', 229, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 1, 1, 3, 3, 3], [False, False, False, False, False, False], [['', '', '', '']]), ( 'diamond', 227, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 1, 1, 3, 3, 3], [False, False, False, False, False, False], [['', '', '', '']]), ('hcp', 194, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 120.0], [0, 1, 0, 3, 3, 3], [False, False, False, False, False, False], [['', '1./3.', '2./3.', '3./4.']]), ( 'graphite', 186, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 120.0], [0, 1, 0, 3, 3, 3], [False, False, False, False, False, False], [['', '0', '0', '0'], ['', '1./3.', '2./3.', '0']]), ('rocksalt', 225, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 1, 1, 3, 3, 3], [False, False, False, False, False, False], [['', '0', '0', '0'], ['', '0.5', '0.5', '0.5']]), ( 'rutile', 136, False, [1, 1, 1], [3.0, 3.0, 3.0, 90.0, 90.0, 90.0], [0, 1, 0, 3, 3, 3], [False, False, False, False, False, False], [['', '0', '0', '0'], ['O', '0.3', '0.3', '0']]) ] class SetupBulkCrystal: """Window for setting up a surface.""" def __init__(self, gui): SetupWindow.__init__(self) self.set_title(_("Create Bulk Crystal by Spacegroup")) self.atoms = None vbox = ui.VBox() self.packtext(vbox, introtext) self.structinfo = ui.combo_box_new_text() self.structures = {} for c in crystal_definitions: self.structinfo.append_text(c[0]) self.structures[c[0]] = c self.structinfo.set_active(0) self.structinfo.connect("changed", self.set_lattice_type) self.spacegroup = ui.Entry(max=14) self.spacegroup.set_text('P 1') self.elementinfo = ui.Label("") self.spacegroupinfo = ui.Label(_('Number: 1')) pack(vbox, [ ui.Label(_("Lattice: ")), self.structinfo, ui.Label(_("\tSpace group: ")), self.spacegroup, ui.Label(' '), self.spacegroupinfo, ui.Label(' '), self.elementinfo ]) pack(vbox, [ui.Label("")]) self.size = [ui.Adjustment(1, 1, 100, 1) for i in range(3)] buttons = [ui.SpinButton(s, 0, 0) for s in self.size] pack(vbox, [ ui.Label(_("Size: x: ")), buttons[0], ui.Label(_(" y: ")), buttons[1], ui.Label(_(" z: ")), buttons[2], ui.Label(_(" unit cells")) ]) pack(vbox, [ui.Label("")]) self.lattice_lengths = [ ui.Adjustment(3.0, 0.0, 1000.0, 0.01) for i in range(3) ] self.lattice_angles = [ ui.Adjustment(90.0, 0.0, 180.0, 1) for i in range(3) ] self.lattice_lbuts = [ ui.SpinButton(self.lattice_lengths[i], 0, 0) for i in range(3) ] self.lattice_abuts = [ ui.SpinButton(self.lattice_angles[i], 0, 0) for i in range(3) ] for i in self.lattice_lbuts: i.set_digits(5) for i in self.lattice_abuts: i.set_digits(3) self.lattice_lequals = [ui.combo_box_new_text() for i in range(3)] self.lattice_aequals = [ui.combo_box_new_text() for i in range(3)] self.lattice_lequals[0].append_text(_('free')) self.lattice_lequals[0].append_text(_('equals b')) self.lattice_lequals[0].append_text(_('equals c')) self.lattice_lequals[0].append_text(_('fixed')) self.lattice_lequals[1].append_text(_('free')) self.lattice_lequals[1].append_text(_('equals a')) self.lattice_lequals[1].append_text(_('equals c')) self.lattice_lequals[1].append_text(_('fixed')) self.lattice_lequals[2].append_text(_('free')) self.lattice_lequals[2].append_text(_('equals a')) self.lattice_lequals[2].append_text(_('equals b')) self.lattice_lequals[2].append_text(_('fixed')) self.lattice_aequals[0].append_text(_('free')) self.lattice_aequals[0].append_text(_('equals beta')) self.lattice_aequals[0].append_text(_('equals gamma')) self.lattice_aequals[0].append_text(_('fixed')) self.lattice_aequals[1].append_text(_('free')) self.lattice_aequals[1].append_text(_('equals alpha')) self.lattice_aequals[1].append_text(_('equals gamma')) self.lattice_aequals[1].append_text(_('fixed')) self.lattice_aequals[2].append_text(_('free')) self.lattice_aequals[2].append_text(_('equals alpha')) self.lattice_aequals[2].append_text(_('equals beta')) self.lattice_aequals[2].append_text(_('fixed')) for i in range(3): self.lattice_lequals[i].set_active(0) self.lattice_aequals[i].set_active(0) pack(vbox, [ui.Label(_('Lattice parameters'))]) pack(vbox, [ ui.Label(_('\t\ta:\t')), self.lattice_lbuts[0], ui.Label(' '), self.lattice_lequals[0], ui.Label(_('\talpha:\t')), self.lattice_abuts[0], ui.Label(' '), self.lattice_aequals[0] ]) pack(vbox, [ ui.Label(_('\t\tb:\t')), self.lattice_lbuts[1], ui.Label(' '), self.lattice_lequals[1], ui.Label(_('\tbeta:\t')), self.lattice_abuts[1], ui.Label(' '), self.lattice_aequals[1] ]) pack(vbox, [ ui.Label(_('\t\tc:\t')), self.lattice_lbuts[2], ui.Label(' '), self.lattice_lequals[2], ui.Label(_('\tgamma:\t')), self.lattice_abuts[2], ui.Label(' '), self.lattice_aequals[2] ]) self.get_data = ui.Button(_("Get from database")) self.get_data.connect("clicked", self.get_from_database) self.get_data.set_sensitive(False) pack(vbox, [ui.Label(" "), self.get_data]) pack(vbox, [ui.Label("")]) pack(vbox, [ui.Label(_("Basis: "))]) self.elements = [[ ui.Entry(max=3), ui.Entry(max=8), ui.Entry(max=8), ui.Entry(max=8), True ]] self.element = self.elements[0][0] add_atom = ui.Button(stock='Add') add_atom.connect("clicked", self.add_basis_atom) add_atom.connect("activate", self.add_basis_atom) pack(vbox, [ ui.Label(_(' Element:\t')), self.elements[0][0], ui.Label(_('\tx: ')), self.elements[0][1], ui.Label(_(' y: ')), self.elements[0][2], ui.Label(_(' z: ')), self.elements[0][3], ui.Label('\t'), add_atom ]) self.vbox_basis = ui.VBox() swin = ui.ScrolledWindow() swin.set_border_width(0) swin.set_policy(ui.POLICY_AUTOMATIC, ui.POLICY_AUTOMATIC) vbox.pack_start(swin, True, True, 0) swin.add_with_viewport(self.vbox_basis) self.vbox_basis.get_parent().set_shadow_type(ui.SHADOW_NONE) self.vbox_basis.get_parent().set_size_request(-1, 100) swin.show() pack(self.vbox_basis, [ui.Label('')]) pack(vbox, [self.vbox_basis]) self.vbox_basis.show() pack(vbox, [ui.Label("")]) self.status = ui.Label("") pack(vbox, [self.status]) pack(vbox, [ui.Label("")]) self.pybut = PyButton(_("Creating a crystal.")) self.pybut.connect('clicked', self.update) clear = ui.Button(stock='Clear') clear.connect("clicked", self.clear) buts = cancel_apply_ok( cancel=lambda widget: self.destroy(), apply=self.apply, ok=self.ok) pack(vbox, [self.pybut, clear, buts], end=True, bottom=True) self.structinfo.connect("changed", self.update) self.spacegroup.connect("activate", self.update) for s in self.size: s.connect("value-changed", self.update) for el in self.elements: if el[-1]: for i in el[:-1]: i.connect("activate", self.update) i.connect("changed", self.update) for i in range(3): self.lattice_lbuts[i].connect("value-changed", self.update) self.lattice_abuts[i].connect("value-changed", self.update) self.lattice_lequals[i].connect("changed", self.update) self.lattice_aequals[i].connect("changed", self.update) self.clearing_in_process = False self.gui = gui self.add(vbox) vbox.show() self.show() def update(self, *args): """ all changes of physical constants are handled here, atoms are set up""" if self.clearing_in_process: return True self.update_element() a_equals = self.lattice_lequals[0].get_active() b_equals = self.lattice_lequals[1].get_active() c_equals = self.lattice_lequals[2].get_active() alpha_equals = self.lattice_aequals[0].get_active() beta_equals = self.lattice_aequals[1].get_active() gamma_equals = self.lattice_aequals[2].get_active() sym = self.spacegroup.get_text() valid = True try: no = int(sym) spg = Spacegroup(no).symbol self.spacegroupinfo.set_label(_('Symbol: %s') % str(spg)) spg = no except: try: no = Spacegroup(sym).no self.spacegroupinfo.set_label(_('Number: %s') % str(no)) spg = no except: self.spacegroupinfo.set_label(_('Invalid Spacegroup!')) valid = False if a_equals == 0: self.lattice_lbuts[0].set_sensitive(True) elif a_equals == 1: self.lattice_lbuts[0].set_sensitive(False) self.lattice_lbuts[0].set_value(self.lattice_lbuts[1].get_value()) elif a_equals == 2: self.lattice_lbuts[0].set_sensitive(False) self.lattice_lbuts[0].set_value(self.lattice_lbuts[2].get_value()) else: self.lattice_lbuts[0].set_sensitive(False) if b_equals == 0: self.lattice_lbuts[1].set_sensitive(True) elif b_equals == 1: self.lattice_lbuts[1].set_sensitive(False) self.lattice_lbuts[1].set_value(self.lattice_lbuts[0].get_value()) elif b_equals == 2: self.lattice_lbuts[1].set_sensitive(False) self.lattice_lbuts[1].set_value(self.lattice_lbuts[2].get_value()) else: self.lattice_lbuts[1].set_sensitive(False) if c_equals == 0: self.lattice_lbuts[2].set_sensitive(True) elif c_equals == 1: self.lattice_lbuts[2].set_sensitive(False) self.lattice_lbuts[2].set_value(self.lattice_lbuts[0].get_value()) elif c_equals == 2: self.lattice_lbuts[2].set_sensitive(False) self.lattice_lbuts[2].set_value(self.lattice_lbuts[1].get_value()) else: self.lattice_lbuts[2].set_sensitive(False) if alpha_equals == 0: self.lattice_abuts[0].set_sensitive(True) elif alpha_equals == 1: self.lattice_abuts[0].set_sensitive(False) self.lattice_abuts[0].set_value(self.lattice_abuts[1].get_value()) elif alpha_equals == 2: self.lattice_abuts[0].set_sensitive(False) self.lattice_abuts[0].set_value(self.lattice_abuts[2].get_value()) else: self.lattice_abuts[0].set_sensitive(False) if beta_equals == 0: self.lattice_abuts[1].set_sensitive(True) elif beta_equals == 1: self.lattice_abuts[1].set_sensitive(False) self.lattice_abuts[1].set_value(self.lattice_abuts[0].get_value()) elif beta_equals == 2: self.lattice_abuts[1].set_sensitive(False) self.lattice_abuts[1].set_value(self.lattice_abuts[2].get_value()) else: self.lattice_abuts[1].set_sensitive(False) if gamma_equals == 0: self.lattice_abuts[2].set_sensitive(True) elif gamma_equals == 1: self.lattice_abuts[2].set_sensitive(False) self.lattice_abuts[2].set_value(self.lattice_abuts[0].get_value()) elif gamma_equals == 2: self.lattice_abuts[2].set_sensitive(False) self.lattice_abuts[2].set_value(self.lattice_abuts[1].get_value()) else: self.lattice_abuts[2].set_sensitive(False) valid = len(self.elements[0][0].get_text()) and valid self.get_data.set_sensitive(valid and self.get_n_elements() == 1 and self.update_element()) self.atoms = None if valid: basis_count = -1 for el in self.elements: if el[-1]: basis_count += 1 if basis_count: symbol_str = '[' basis_str = "[" symbol = [] basis = [] else: symbol_str = '' basis_str = '' basis = None for el in self.elements: if el[-1]: symbol_str += "'" + el[0].get_text() + "'" if basis_count: symbol_str += ',' symbol += [el[0].get_text()] exec('basis += [[float(' + el[1].get_text( ) + '),float(' + el[2].get_text() + '),float(' + el[3] .get_text() + ')]]') else: symbol = el[0].get_text() exec('basis = [[float(' + el[1].get_text() + '),float(' + el[2].get_text() + '),float(' + el[3].get_text( ) + ')]]') basis_str += '[' + el[1].get_text() + ',' + el[2].get_text( ) + ',' + el[3].get_text() + '],' basis_str = basis_str[:-1] if basis_count: symbol_str = symbol_str[:-1] + ']' basis_str += ']' size_str = '(' + str(int(self.size[0].get_value())) + ',' + str( int(self.size[1].get_value())) + ',' + str( int(self.size[2].get_value())) + ')' size = (int(self.size[0].get_value()), int(self.size[1].get_value()), int(self.size[2].get_value())) cellpar_str = '' cellpar = [] for i in self.lattice_lbuts: cellpar_str += str(i.get_value()) + ',' cellpar += [i.get_value()] for i in self.lattice_abuts: cellpar_str += str(i.get_value()) + ',' cellpar += [i.get_value()] cellpar_str = '[' + cellpar_str[:-1] + ']' args = { 'symbols': symbol, 'basis': basis, 'size': size, 'spacegroup': spg, 'cellpar': cellpar } args_str = { 'symbols': symbol_str, 'basis': basis_str, 'size': size_str, 'spacegroup': spg, 'cellpar': cellpar_str } self.pybut.python = py_template % args_str try: self.atoms = crystal(**args) label = label_template % { 'natoms': len(self.atoms), 'symbols': formula(self.atoms.get_atomic_numbers()), 'volume': self.atoms.get_volume() } self.status.set_label(label) except: self.atoms = None self.status.set_markup( _("Please specify a consistent set of atoms.")) else: self.atoms = None self.status.set_markup( _("Please specify a consistent set of atoms.")) def apply(self, *args): """ create gui atoms from currently active atoms""" self.update() if self.atoms is not None: self.gui.new_atoms(self.atoms) return True else: error( _('No valid atoms.'), _('You have not (yet) specified a consistent set of ' 'parameters.')) return False def ok(self, *args): if self.apply(): self.destroy() def add_basis_atom(self, *args): """ add an atom to the customizable basis """ n = len(self.elements) self.elements += [[ ui.Entry(max=3), ui.Entry(max=8), ui.Entry(max=8), ui.Entry(max=8), ui.Label('\t\t\t'), ui.Label('\tx: '), ui.Label(' y: '), ui.Label(' z: '), ui.Label(' '), ui.Button('Delete'), True ]] self.elements[n][-2].connect("clicked", self.delete_basis_atom, {'n': n}) pack(self.vbox_basis, [ self.elements[n][4], self.elements[n][0], self.elements[n][5], self.elements[n][1], self.elements[n][6], self.elements[n][2], self.elements[n][7], self.elements[n][3], self.elements[n][8], self.elements[n][9] ]) self.update() def delete_basis_atom(self, button, index, *args): """ delete atom index from customizable basis""" n = index['n'] self.elements[n][-1] = False for i in range(10): self.elements[n][i].destroy() self.update() def get_n_elements(self): """ counts how many basis atoms are actually active """ n = 0 for el in self.elements: if el[-1]: n += 1 return n def clear(self, *args): """ reset to original state """ self.clearing_in_process = True self.clear_lattice() self.structinfo.set_active(0) self.set_lattice_type() self.clearing_in_process = False self.update() def clear_lattice(self, *args): """ delete all custom settings """ self.atoms = None if len(self.elements) > 1: for n, el in enumerate(self.elements[1:]): self.elements[n + 1][-1] = False for i in range(10): self.elements[n + 1][i].destroy() for i in range(4): self.elements[0][i].set_text("") self.spacegroup.set_sensitive(True) for i in self.lattice_lbuts: i.set_sensitive(True) for i in self.lattice_abuts: i.set_sensitive(True) for i in range(3): self.lattice_lequals[i].set_sensitive(True) self.lattice_aequals[i].set_sensitive(True) self.lattice_lequals[i].set_active(0) self.lattice_aequals[i].set_active(0) for s in self.size: s.set_value(1) def set_lattice_type(self, *args): """ set defaults from original """ self.clearing_in_process = True self.clear_lattice() lattice = crystal_definitions[self.structinfo.get_active()] self.spacegroup.set_text(str(lattice[1])) self.spacegroup.set_sensitive(lattice[2]) for s, i in zip(self.size, lattice[3]): s.set_value(i) self.lattice_lbuts[0].set_value(lattice[4][0]) self.lattice_lbuts[1].set_value(lattice[4][1]) self.lattice_lbuts[2].set_value(lattice[4][2]) self.lattice_abuts[0].set_value(lattice[4][3]) self.lattice_abuts[1].set_value(lattice[4][4]) self.lattice_abuts[2].set_value(lattice[4][5]) self.lattice_lequals[0].set_active(lattice[5][0]) self.lattice_lequals[1].set_active(lattice[5][1]) self.lattice_lequals[2].set_active(lattice[5][2]) self.lattice_aequals[0].set_active(lattice[5][3]) self.lattice_aequals[1].set_active(lattice[5][4]) self.lattice_aequals[2].set_active(lattice[5][5]) self.lattice_lequals[0].set_sensitive(lattice[6][0]) self.lattice_lequals[1].set_sensitive(lattice[6][1]) self.lattice_lequals[2].set_sensitive(lattice[6][2]) self.lattice_aequals[0].set_sensitive(lattice[6][3]) self.lattice_aequals[1].set_sensitive(lattice[6][4]) self.lattice_aequals[2].set_sensitive(lattice[6][5]) for n, at in enumerate(lattice[7]): l = 0 if n > 0: l = len(self.elements) self.add_basis_atom() for i, s in enumerate(at): self.elements[l][i].set_text(s) self.clearing_in_process = False self.update() def get_from_database(self, *args): element = self.elements[0][0].get_text() z = ase.data.atomic_numbers[self.legal_element] ref = ase.data.reference_states[z] lattice = ref['symmetry'] index = 0 while index < len(crystal_definitions) and crystal_definitions[index][ 0] != lattice: index += 1 if index == len(crystal_definitions) or not self.legal_element: error(_("Can't find lattice definition!")) return False self.structinfo.set_active(index) self.lattice_lbuts[0].set_value(ref['a']) if lattice == 'hcp': self.lattice_lbuts[2].set_value(ref['c/a'] * ref['a']) self.elements[0][0].set_text(element) if lattice in ['fcc', 'bcc', 'diamond']: self.elements[0][1].set_text('0') self.elements[0][2].set_text('0') self.elements[0][3].set_text('0') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/defaults.py000066400000000000000000000013301316323560300235010ustar00rootroot00000000000000"""This is a module to handle generic ASE (gui) defaults ... ... from a ~/.ase/gui.py configuration file, if it exists. It is imported when opening ASE-GUI and can then be modified at runtime, if necessary. syntax for each entry: gui_default_settings['key'] = value """ gui_default_settings = { 'gui_graphs_string': 'i, e - E[-1]', # default for the graph command 'gui_foreground_color': '#000000', 'gui_background_color': '#ffffff', 'covalent_radii': None, 'radii_scale': 0.89} def read_defaults(): import os.path name = os.path.expanduser('~/.ase/gui.py') config = gui_default_settings if os.path.exists(name): exec(compile(open(name).read(), name, 'exec')) return config ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/energyforces.py000066400000000000000000000063631316323560300244000ustar00rootroot00000000000000# encoding: utf-8 "Module for calculating energies and forces." from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.gui.simulation import Simulation pack = 42 class OutputFieldMixin: def makeoutputfield(self, box, label=_("Output:"), heading=None): frame = ui.Frame(label) if box is not None: box.pack_start(frame, True, True, 0) box2 = ui.VBox() frame.add(box2) if heading is not None: pack(box2, [ui.Label(heading)]) scrwin = ui.ScrolledWindow() scrwin.set_policy(ui.POLICY_AUTOMATIC, ui.POLICY_AUTOMATIC) self.output = ui.TextBuffer() txtview = ui.TextView(self.output) txtview.set_editable(False) scrwin.add(txtview) scrwin.show_all() box2.pack_start(scrwin, True, True, 0) self.savebutton = ui.Button('Save') self.savebutton.connect('clicked', self.saveoutput) self.savebutton.set_sensitive(False) pack(box2, [self.savebutton]) box2.show() frame.show() return frame def activate_output(self): self.savebutton.set_sensitive(True) def saveoutput(self, widget): chooser = ui.FileChooserDialog( _('Save output'), None, ui.FILE_CHOOSER_ACTION_SAVE, ('Cancel', ui.RESPONSE_CANCEL, 'Save', ui.RESPONSE_OK)) ok = chooser.run() if ok == ui.RESPONSE_OK: filename = chooser.get_filename() txt = self.output.get_text(self.output.get_start_iter(), self.output.get_end_iter()) f = open(filename, "w") f.write(txt) f.close() chooser.destroy() class EnergyForces(Simulation, OutputFieldMixin): def __init__(self, gui): Simulation.__init__(self, gui) self.set_title(_("Potential energy and forces")) self.set_default_size(-1, 400) vbox = ui.VBox() self.packtext(vbox, _("Calculate potential energy and the force on all " "atoms")) self.packimageselection(vbox) pack(vbox, ui.Label("")) self.forces = ui.CheckButton(_("Write forces on the atoms")) self.forces.set_active(True) pack(vbox, [self.forces]) pack(vbox, [ui.Label("")]) self.makeoutputfield(vbox) pack(vbox, ui.Label("")) self.makebutbox(vbox) vbox.show() self.add(vbox) self.show() self.gui.register_vulnerable(self) def run(self, *args): if not self.setup_atoms(): return self.begin() e = self.atoms.get_potential_energy() txt = _("Potential Energy:\n") txt += _(" %8.2f eV\n") % (e,) txt += _(" %8.4f eV/atom\n\n") % (e / len(self.atoms),) if self.forces.get_active(): txt += _("Forces:\n") forces = self.atoms.get_forces() for f in forces: txt += " %8.3f, %8.3f, %8.3f eV/Ã…\n" % tuple(f) self.output.set_text(txt) self.activate_output() self.end() def notify_atoms_changed(self): "When atoms have changed, check for the number of images." self.setupimageselection() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/execute.py000066400000000000000000000330661316323560300233470ustar00rootroot00000000000000import __future__ import ase.gui.ui as ui import os.path import numpy as np from ase.gui.widgets import pack, Help from ase.data.colors import jmol_colors from ase.atoms import Atoms _ = 42 class Execute(ui.Window): """The Execute class provides an expert-user window for modification and evaluation of system properties with a simple one-line command structure. There are two types of commands, one set only applies to the global image and one set applies to all atoms. If the command line contains any of the atom commands, then it is executed separately for all atoms and for all images. Otherwise it is executed only once per image. Please do not mix global and atom commands.""" terminal_help_txt = _(""" Global commands work on all frames or only on the current frame - Assignment of a global variable may not reference a local one - use 'Current frame' switch to switch off application to all frames e:\t\ttotal energy of one frame fmax:\tmaximal force in one frame A:\tunit cell E:\t\ttotal energy array of all frames F:\t\tall forces in one frame M:\tall magnetic moments R:\t\tall atomic positions S:\tall selected atoms (boolean array) D:\tall dynamic atoms (boolean array) examples: frame = 1, A[0][1] += 4, e-E[-1] Atom commands work on each atom (or a selection) individually - these can use global commands on the RHS of an equation - use 'selected atoms only' to restrict application of command x,y,z:\tatomic coordinates r,g,b:\tatom display color, range is [0..1] rad:\tatomic radius for display s:\t\tatom is selected d:\t\tatom is movable f:\t\tforce Z:\tatomic number m:\tmagnetic moment examples: x -= A[0][0], s = z > 5, Z = 6 Special commands and objects: sa,cf:\t(un)restrict to selected atoms/current frame frame:\tframe number center:\tcenters the system in its existing unit cell del S:\tdelete selection CM:\tcenter of mass ans[-i]:\tith last calculated result exec file: executes commands listed in file cov[Z]:(read only): covalent radius of atomic number Z gui:\tadvanced: gui window python object img:\tadvanced: gui images object """) def __init__(self, gui): ui.Window.__init__(self) self.gui = gui self.set_title(_('Expert user mode')) vbox = ui.VBox() vbox.set_border_width(5) self.sw = ui.ScrolledWindow() self.sw.set_policy(ui.POLICY_AUTOMATIC, ui.POLICY_AUTOMATIC) self.textview = ui.TextView() self.textbuffer = self.textview.get_buffer() self.textview.set_editable(False) self.textview.set_cursor_visible(False) self.sw.add(self.textview) pack(vbox, self.sw, expand=True, padding=5) self.sw.set_size_request(540, 150) self.textview.show() self.add_text(_('Welcome to the ASE Expert user mode')) self.cmd = ui.Entry(60) self.cmd.connect('activate', self.execute) self.cmd.connect('key-press-event', self.update_command_buffer) pack(vbox, [ui.Label('>>>'), self.cmd]) self.cmd_buffer = getattr(gui, 'expert_mode_buffer', ['']) self.cmd_position = len(self.cmd_buffer) - 1 self.selected = ui.CheckButton(_('Only selected atoms (sa) ')) self.selected.connect('toggled', self.selected_changed) self.images_only = ui.CheckButton(_('Only current frame (cf) ')) self.images_only.connect('toggled', self.images_changed) pack(vbox, [self.selected, self.images_only]) save_button = ui.Button(_('Save')) save_button.connect('clicked', self.save_output) help_button = ui.Button(_('Help')) help_button.connect('clicked', self.terminal_help, "") stop_button = ui.Button(_('Stop')) stop_button.connect('clicked', self.stop_execution) self.stop = False pack( vbox, [ ui.Label( _('Global: Use A, D, E, M, N, R, S, n, frame;' ' Atoms: Use a, f, m, s, x, y, z, Z ')), stop_button, help_button, save_button ], end=True) self.add(vbox) vbox.show() self.show() # set color mode to manual when opening this window for rgb # manipulation self.colors = self.gui.get_colors() rgb_data = self.gui.get_colors(rgb=True) self.rgb_data = [] # ensure proper format of rgb_data for i, rgb in enumerate(rgb_data): self.rgb_data += [[i, rgb]] self.gui.colordata = self.rgb_data self.gui.colors = list(self.colors) self.gui.colormode = 'manual' self.cmd.grab_focus() def execute(self, widget=None, cmd=None): # global_commands = ['A','Col','D','e','E','F','frame','M','n', # 'N','R','S'] # explicitly 'implemented' commands for use on whole system or # entire single frame index_commands = [ 'a', 'b', 'd', 'f', 'g', 'm', 'r', 'rad', 's', 'x', 'y', 'z', 'Z' ] # commands for use on all (possibly selected) atoms new = self.gui.drawing_area.window.new_gc alloc = self.gui.colormap.alloc_color self.stop = False if cmd is None: cmd = self.cmd.get_text().strip() if len(cmd) == 0: return self.add_text('>>> ' + cmd) self.cmd_buffer[-1] = cmd self.cmd_buffer += [''] setattr(self.gui, 'expert_mode_buffer', self.cmd_buffer) self.cmd_position = len(self.cmd_buffer) - 1 self.cmd.set_text('') else: self.add_text('--> ' + cmd) # XXXXXX This is not supported since GUI uses atoms objects directly gui = self.gui img = gui.images frame = gui.frame N = img.nimages n = img.natoms S = img.selected D = img.dynamic[:, np.newaxis] E = img.E if self.selected.get_active(): indices = np.where(S)[0] else: indices = list(range(n)) ans = getattr(gui, 'expert_mode_answers', []) loop_images = range(N) if self.images_only.get_active(): loop_images = [self.gui.frame] # split off the first valid command in cmd to determine whether # it is global or index based, this includes things such as 4*z and z*4 index_based = False first_command = cmd.split()[0] special = [ '=', ',', '+', '-', '/', '*', ';', '.', '[', ']', '(', ')', '{', '}', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ] while first_command[0] in special and len(first_command) > 1: first_command = first_command[1:] for c in special: if c in first_command: first_command = first_command[:first_command.find(c)] for c in index_commands: if c == first_command: index_based = True name = os.path.expanduser('~/.ase/' + cmd) # check various special commands: if os.path.exists(name): # run script from default directory self.run_script(name) elif cmd == 'del S': # delete selection gui.delete_selected_atoms() elif cmd == 'sa': # selected atoms only self.selected.set_active(not self.selected.get_active()) elif cmd == 'cf': # current frame only self.images_only.set_active(not self.images_only.get_active()) elif cmd == 'center': # center system img.center() elif cmd == 'CM': # calculate center of mass for i in loop_images: if self.stop: break atoms = Atoms( positions=img.P[i][indices], numbers=img.Z[indices]) self.add_text(repr(atoms.get_center_of_mass())) ans += [atoms.get_center_of_mass()] elif first_command == 'exec': # execute script name = cmd.split()[1] if '~' in name: name = os.path.expanduser(name) if os.path.exists(name): self.run_script(name) else: self.add_text( _('*** WARNING: file does not exist - %s') % name) else: code = compile(cmd + '\n', 'execute.py', 'single', __future__.CO_FUTURE_DIVISION) if index_based and len(indices) == 0 and self.selected.get_active( ): self.add_text(_("*** WARNING: No atoms selected to work with")) for i in loop_images: if self.stop: break R = img.P[i][indices] A = img.A[i] F = img.F[i][indices] e = img.E[i] M = img.M[i][indices] Col = [] cov = img.covalent_radii for j in indices: Col += [gui.colordata[j]] if len(indices) > 0: fmax = max(((F * D[indices])**2).sum(1)**.5) else: fmax = None frame = gui.frame if not index_based: try: self.add_text(repr(eval(cmd))) ans += [eval(cmd)] except: exec(code) gui.set_frame(frame) if gui.movie_window is not None: gui.movie_window.frame_number.value = frame + 1 img.selected = S img.A[i] = A img.P[i][indices] = R img.M[i][indices] = M else: for n, a in enumerate(indices): if self.stop: break x, y, z = R[n] r, g, b = Col[n][1] d = D[a] f = np.vdot(F[n] * d, F[n] * d)**0.5 s = S[a] Z = img.Z[a] Zold = Z m = M[n] rad = img.r[a] e, f, fmax, E # silence pyflakes try: self.add_text(repr(eval(cmd))) ans += [eval(cmd)] except: exec(code) S[a] = s img.P[i][a] = x, y, z img.Z[a] = Z img.r[a] = rad img.dynamic[a] = d if Z != Zold: img.r[a] = cov[Z] * 0.89 r, g, b = jmol_colors[Z] gui.colordata[a] = [a, [r, g, b]] color = tuple([int(65535 * _x) for _x in [r, g, b]]) gui.colors[a] = new(alloc(*color)) img.M[i][a] = m setattr(self.gui, 'expert_mode_answers', ans) gui.set_frame(frame, init=True) def add_text(self, val): text_end = self.textbuffer.get_end_iter() self.textbuffer.insert(text_end, val + '\n') if self.sw.get_vscrollbar() is not None: scroll = self.sw.get_vscrollbar().get_adjustment() scroll.set_value(scroll.get_upper()) def selected_changed(self, *args): if self.selected.get_active(): self.add_text(_('*** Only working on selected atoms')) else: self.add_text(_('*** Working on all atoms')) def images_changed(self, *args): if self.images_only.get_active(): self.add_text(_('*** Only working on current image')) else: self.add_text(_('*** Working on all images')) def update_command_buffer(self, entry, event, *args): arrow = {ui.keysyms.Up: -1, ui.keysyms.Down: 1}.get(event.keyval, None) if arrow is not None: self.cmd_position += arrow self.cmd_position = max(self.cmd_position, 0) self.cmd_position = min(self.cmd_position, len(self.cmd_buffer) - 1) cmd = self.cmd_buffer[self.cmd_position] self.cmd.set_text(cmd) return True else: return False def save_output(self, *args): chooser = ui.FileChooserDialog( _('Save Terminal text ...'), None, ui.FILE_CHOOSER_ACTION_SAVE, (_('Cancel'), ui.RESPONSE_CANCEL, _('Save'), ui.RESPONSE_OK)) save = chooser.run() if save == ui.RESPONSE_OK or save == ui.RESPONSE_SAVE: filename = chooser.get_filename() text = self.textbuffer.get_text(self.textbuffer.get_start_iter(), self.textbuffer.get_end_iter()) fd = open(filename, 'w') fd.write(text) fd.close() chooser.destroy() def run_script(self, name): commands = open(name, 'r').readlines() for c_parse in commands: c = c_parse.strip() if '#' in c: c = c[:c.find('#')].strip() if len(c) > 0: self.execute(cmd=c.strip()) def terminal_help(self, *args): Help(self.terminal_help_txt) def stop_execution(self, *args): self.stop = True python = execute ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/graphene.py000066400000000000000000000224021316323560300234660ustar00rootroot00000000000000# encoding: utf-8 """nanotube.py - Window for setting up Graphene sheets and ribbons. """ from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.gui.status import formula from ase.build import graphene_nanoribbon import ase import numpy as np pack = error = cancel_apply_ok = SetupWindow = 42 introtext = _("""\ Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may optionally be saturated with hydrogen (or another element).\ """) py_template = """ from ase.build import nanotube atoms = nanotube(%(n)i, %(m)i, length=%(length)i, bond=%(bl).3f, \ symbol=%(symb)s) """ label_template = _( """ %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3""") class SetupGraphene: "Window for setting up a graphene sheet or nanoribbon." def __init__(self, gui): SetupWindow.__init__(self) self.set_title(_("Graphene")) vbox = ui.VBox() # Intoductory text self.packtext(vbox, introtext) # Choose structure label = ui.Label(_("Structure: ")) self.struct = ui.combo_box_new_text() for s in (_("Infinite sheet"), _("Unsaturated ribbon"), _("Saturated ribbon")): self.struct.append_text(s) self.struct.set_active(0) pack(vbox, [label, self.struct]) # Orientation label = ui.Label(_("Orientation: ")) self.orient = ui.combo_box_new_text() self.orient_text = [] for s in (_("zigzag"), _("armchair")): self.orient.append_text(s) self.orient_text.append(s) self.orient.set_active(0) pack(vbox, [label, self.orient]) pack(vbox, ui.Label("")) # Choose the element and bond length label1 = ui.Label("Element: ") # label.set_alignment(0.0, 0.2) self.element = ui.Entry(max=3) self.element.set_text("C") self.bondlength = ui.Adjustment(1.42, 0.0, 1000.0, 0.01) label2 = ui.Label(_(" Bond length: ")) label3 = ui.Label(_(u"Ã…")) bond_box = ui.SpinButton(self.bondlength, 10.0, 3) pack(vbox, [label1, self.element, label2, bond_box, label3]) # Choose the saturation element and bond length self.sat_label1 = ui.Label(_("Saturation: ")) # label.set_alignment(0.0, 0.2) self.element2 = ui.Entry(max=3) self.element2.set_text(_("H")) self.bondlength2 = ui.Adjustment(1.12, 0.0, 1000.0, 0.01) self.sat_label2 = ui.Label(_(" Bond length: ")) self.sat_label3 = ui.Label(_(u"Ã…")) self.bond_box = ui.SpinButton(self.bondlength2, 10.0, 3) pack(vbox, [ self.sat_label1, self.element2, self.sat_label2, self.bond_box, self.sat_label3 ]) self.elementinfo = ui.Label("") self.elementinfo.modify_fg(ui.STATE_NORMAL, '#FF0000') pack(vbox, [self.elementinfo]) pack(vbox, ui.Label("")) # Size label1 = ui.Label(_("Width: ")) label2 = ui.Label(_(" Length: ")) self.n = ui.Adjustment(1, 1, 100, 1) self.m = ui.Adjustment(1, 1, 100, 1) spinn = ui.SpinButton(self.n, 0, 0) spinm = ui.SpinButton(self.m, 0, 0) pack(vbox, [label1, spinn, label2, spinm]) # Vacuum label1 = ui.Label(_("Vacuum: ")) self.vacuum = ui.Adjustment(5.0, 0.0, 1000.0, 0.1) label2 = ui.Label(_(u"Ã…")) vac_box = ui.SpinButton(self.vacuum, 10.0, 2) pack(vbox, [label1, vac_box, label2]) pack(vbox, ui.Label("")) self.status = ui.Label("") pack(vbox, [self.status]) pack(vbox, [ui.Label("")]) # Buttons buts = cancel_apply_ok( cancel=lambda widget: self.destroy(), apply=self.apply, ok=self.ok) pack(vbox, [buts], end=True, bottom=True) # Finalize setup self.makeatoms() self.struct.connect('changed', self.makeatoms) self.orient.connect('changed', self.makeatoms) self.element.connect('activate', self.makeatoms) self.bondlength.connect('value-changed', self.makeatoms) self.element2.connect('activate', self.makeatoms) self.bondlength2.connect('value-changed', self.makeatoms) self.n.connect('value-changed', self.makeatoms) self.m.connect('value-changed', self.makeatoms) self.vacuum.connect('value-changed', self.makeatoms) self.update_gui() self.add(vbox) vbox.show() self.show() self.gui = gui def update_element(self, *args): "Called when a new element may have been entered." # Assumes the element widget is self.element and that a label # for errors is self.elementinfo. The chemical symbol is # placed in self.legalelement - or None if the element is # invalid. symb = [] if self.struct.get_active() == 2: # Saturated nanoribbon elements = (self.element.get_text(), self.element2.get_text()) else: elements = (self.element.get_text(), ) for elem in elements: if not elem: self.invalid_element(_(" No element specified!")) return False try: z = int(elem) except ValueError: # Probably a symbol try: z = ase.data.atomic_numbers[elem] except KeyError: self.invalid_element() return False try: symb.append(ase.data.chemical_symbols[z]) except KeyError: self.invalid_element() return False self.elementinfo.set_text("") self.legal_element = symb[0] if len(symb) == 2: self.legal_element2 = symb[1] else: self.legal_element2 = None return True def update_gui(self, *args): # Saturation element is only relevant for saturated nanoribbons satur = self.struct.get_active() == 2 for w in (self.element2, self.bond_box): w.set_sensitive(satur) # Infinite zigzag sheets must have even width if self.struct.get_active() == 0 and self.orient.get_active() == 0: if self.n.value % 2 == 1: self.n.value += 1 self.n.lower = 2 self.n.step_increment = 2 else: self.n.lower = 1 self.n.step_increment = 1 def makeatoms(self, *args): self.update_element() self.update_gui() if self.legal_element is None or (self.struct.get_active() == 2 and self.legal_element2 is None): self.atoms = None self.pybut.python = None self.status.set_markup( _("Please specify a consistent set of atoms. ")) else: n = int(self.n.value) m = int(self.m.value) CC = self.bondlength.value vacuum = self.vacuum.value orient = self.orient_text[self.orient.get_active()] elem = self.legal_element if self.struct.get_active() == 0: # Extended sheet self.atoms = graphene_nanoribbon( n, m, type=orient, C_C=CC, vacc=vacuum, sheet=True, main_element=elem) elif self.struct.get_active() == 1: # Unsaturated nanoribbon self.atoms = graphene_nanoribbon( n, m, type=orient, C_C=CC, vacc=vacuum, main_element=elem) elif self.struct.get_active() == 2: # Saturated nanoribbon elem2 = self.legal_element2 self.atoms = graphene_nanoribbon( n, m, type=orient, C_C=CC, C_H=self.bondlength2.value, vacuum=vacuum, saturated=True, main_element=elem, saturate_element=elem2) else: raise RuntimeError("Unknown structure in SetupGraphene!") # Now, rotate into the xy plane (ase.gui's default view plane) pos = self.atoms.get_positions() cell = self.atoms.get_cell() pbc = self.atoms.get_pbc() cell[1, 1], cell[2, 2] = cell[2, 2], cell[1, 1] x = pos[:, 1].copy() z = pos[:, 2].copy() pos[:, 1] = z pos[:, 2] = x self.atoms.set_cell(cell) self.atoms.set_positions(pos) self.atoms.set_pbc([pbc[0], pbc[2], pbc[1]]) label = label_template % { 'natoms': len(self.atoms), 'symbols': formula(self.atoms.get_atomic_numbers()), 'volume': np.inf } self.status.set_markup(label) def apply(self, *args): self.makeatoms() if self.atoms is not None: self.gui.new_atoms(self.atoms) return True else: error( _("No valid atoms."), _("You have not (yet) specified a consistent set of " "parameters.")) return False def ok(self, *args): if self.apply(): self.destroy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/graphs.py000066400000000000000000000065601316323560300231700ustar00rootroot00000000000000from __future__ import unicode_literals import pickle import subprocess import sys import numpy as np from ase.gui.i18n import _ import ase.gui.ui as ui graph_help_text = _("""\ Symbols: e: total energy epot: potential energy ekin: kinetic energy fmax: maximum force fave: average force R[n,0-2]: position of atom number n d(n1,n2): distance between two atoms \ n1 and n2 i: current image number E[i]: energy of image number i F[n,0-2]: force on atom number n V[n,0-2]: velocity of atom number n M[n]: magnetic moment of atom number n A[0-2,0-2]: unit-cell basis vectors s: path length a(n1,n2,n3): angle between atoms n1, \ n2 and n3, centered on n2 dih(n1,n2,n3,n4): dihedral angle between n1, \ n2, n3 and n4 T: temperature (K)\ """) class Graphs: def __init__(self, gui): win = ui.Window('Graphs') self.expr = ui.Entry('', 50, self.plot) win.add([self.expr, ui.helpbutton(graph_help_text)]) win.add([ui.Button(_('Plot'), self.plot, 'xy'), ' x, y1, y2, ...'], 'w') win.add([ui.Button(_('Plot'), self.plot, 'y'), ' y1, y2, ...'], 'w') win.add([ui.Button(_('Save'), self.save), ui.Button(_('Clear'), self.clear)], 'w') self.gui = gui def plot(self, type=None, expr=None): if expr is None: expr = self.expr.value else: self.expr.value = expr try: data = self.gui.images.graph(expr) except (SyntaxError, NameError) as ex: ui.error(ex) return process = subprocess.Popen([sys.executable, '-m', 'ase.gui.graphs'], stdin=subprocess.PIPE) pickledata = (data, self.gui.frame, expr, type) pickle.dump(pickledata, process.stdin, protocol=0) process.stdin.close() self.gui.graphs.append(process) def save(self): dialog = ui.SaveFileDialog(self.gui.window.win, _('Save data to file ... ')) filename = dialog.go() if filename: expr = self.expr.value data = self.gui.images.graph(expr) np.savetxt(filename, data.T, header=expr) def clear(self): import matplotlib.pyplot as plt for fig in self.gui.graphs: plt.close(fig) self.gui.graphs = [] def make_plot(data, i, expr, type): import matplotlib.pyplot as plt basesize = 4 plt.figure(figsize=(basesize * 2.5**0.5, basesize)) m = len(data) if type is None: if m == 1: type = 'y' else: type = 'xy' if type == 'y': for j in range(m): plt.plot(data[j]) plt.plot([i], [data[j, i]], 'o') else: for j in range(1, m): plt.plot(data[0], data[j]) plt.plot([data[0, i]], [data[j, i]], 'o') plt.title(expr) plt.show() if __name__ == '__main__': if sys.version_info[0] == 2: make_plot(*pickle.load(sys.stdin)) else: make_plot(*pickle.load(sys.stdin.buffer)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/gui.py000066400000000000000000000456511316323560300224740ustar00rootroot00000000000000from __future__ import unicode_literals import os import pickle import subprocess import sys import tempfile import weakref from functools import partial from ase.gui.i18n import _ import numpy as np from ase import __version__, Atoms import ase.gui.ui as ui from ase.gui.calculator import SetCalculator from ase.gui.crystal import SetupBulkCrystal from ase.gui.defaults import read_defaults from ase.gui.energyforces import EnergyForces from ase.gui.graphene import SetupGraphene from ase.gui.images import Images from ase.gui.minimize import Minimize from ase.gui.nanoparticle import SetupNanoparticle from ase.gui.nanotube import SetupNanotube from ase.gui.save import save_dialog from ase.gui.settings import Settings from ase.gui.status import Status from ase.gui.surfaceslab import SetupSurfaceSlab from ase.gui.view import View class GUI(View, Status): ARROWKEY_SCAN = 0 ARROWKEY_MOVE = 1 ARROWKEY_ROTATE = 2 def __init__(self, images=None, rotations='', show_unit_cell=True, show_bonds=False): # Try to change into directory of file you are viewing try: os.chdir(os.path.split(sys.argv[1])[0]) # This will fail sometimes (e.g. for starting a new session) except: pass if not images: images = Images() images.initialize([Atoms()]) self.images = images self.config = read_defaults() menu = self.get_menu_data(show_unit_cell, show_bonds) self.window = ui.ASEGUIWindow(close=self.exit, menu=menu, config=self.config, scroll=self.scroll, scroll_event=self.scroll_event, press=self.press, move=self.move, release=self.release, resize=self.resize) View.__init__(self, rotations) Status.__init__(self) self.graphs = [] # list of matplotlib processes self.graph_wref = [] # list of weakrefs to Graph objects self.movie_window = None self.vulnerable_windows = [] self.simulation = {} # Used by modules on Calculate menu. self.module_state = {} # Used by modules to store their state. self.arrowkey_mode = self.ARROWKEY_SCAN self.move_atoms_mask = None @property def moving(self): return self.arrowkey_mode != self.ARROWKEY_SCAN def run(self, expr=None, test=None): self.set_frame(len(self.images) - 1, focus=True) if len(self.images) > 1: self.movie() if expr is None: expr = self.config['gui_graphs_string'] if expr is not None and expr != '' and len(self.images) > 1: self.plot_graphs(expr=expr) if test: self.window.test(test) else: self.window.run() def toggle_move_mode(self, key=None): self.toggle_arrowkey_mode(self.ARROWKEY_MOVE) def toggle_rotate_mode(self, key=None): self.toggle_arrowkey_mode(self.ARROWKEY_ROTATE) def toggle_arrowkey_mode(self, mode): # If not currently in given mode, activate it. # Else, deactivate it (go back to SCAN mode) assert mode != self.ARROWKEY_SCAN if self.arrowkey_mode == mode: self.arrowkey_mode = self.ARROWKEY_SCAN self.move_atoms_mask = None else: self.arrowkey_mode = mode self.move_atoms_mask = self.images.selected.copy() self.draw() def step(self, key): d = {'Home': -10000000, 'Page-Up': -1, 'Page-Down': 1, 'End': 10000000}[key] i = max(0, min(len(self.images) - 1, self.frame + d)) self.set_frame(i) if self.movie_window is not None: self.movie_window.frame_number.value = i + 1 def _do_zoom(self, x): """Utility method for zooming""" self.scale *= x self.draw() def zoom(self, key): """Zoom in/out on keypress or clicking menu item""" x = {'+': 1.2, '-': 1 / 1.2}[key] self._do_zoom(x) def scroll_event(self, event): """Zoom in/out when using mouse wheel""" SHIFT = event.modifier == 'shift' x = 1.0 if event.button == 4 or event.delta > 0: x = 1.0 + (1 - SHIFT) * 0.2 + SHIFT * 0.01 elif event.button == 5 or event.delta < 0: x = 1.0 / (1.0 + (1 - SHIFT) * 0.2 + SHIFT * 0.01) self._do_zoom(x) def settings(self): return Settings(self) def scroll(self, event): CTRL = event.modifier == 'ctrl' # Bug: Simultaneous CTRL + shift is the same as just CTRL. # Therefore binding Page Up / Page Dn (keycodes next/prior) # to movement in Z direction. dxdydz = {'up': (0, 1 - CTRL, CTRL), 'down': (0, -1 + CTRL, -CTRL), 'right': (1, 0, 0), 'left': (-1, 0, 0), 'next': (0, 0, 1), 'prior': (0, 0, -1)}.get(event.key, None) if dxdydz is None: return vec = 0.1 * np.dot(self.axes, dxdydz) if event.modifier == 'shift': vec *= 0.1 if self.arrowkey_mode == self.ARROWKEY_MOVE: self.atoms.positions[self.move_atoms_mask[:len(self.atoms)]] += vec self.set_frame() elif self.arrowkey_mode == self.ARROWKEY_ROTATE: # For now we use atoms.rotate having the simplest interface. # (Better to use something more minimalistic, obviously.) mask = self.move_atoms_mask[:len(self.atoms)] center = self.atoms.positions[mask].mean(axis=0) tmp_atoms = self.atoms[mask] tmp_atoms.positions -= center tmp_atoms.rotate(50 * np.linalg.norm(vec), vec) self.atoms.positions[mask] = tmp_atoms.positions + center self.set_frame() else: self.center -= vec # dx * 0.1 * self.axes[:, 0] - dy * 0.1 * self.axes[:, 1]) self.draw() def delete_selected_atoms(self, widget=None, data=None): import ase.gui.ui as ui nselected = sum(self.images.selected) if nselected and ui.ask_question('Delete atoms', 'Delete selected atoms?'): mask = self.images.selected[:len(self.atoms)] del self.atoms[mask] # Will remove selection in other images, too self.images.selected[:] = False self.set_frame() self.draw() def execute(self): from ase.gui.execute import Execute Execute(self) def constraints_window(self): from ase.gui.constraints import Constraints Constraints(self) def select_all(self, key=None): self.images.selected[:] = True self.draw() def invert_selection(self, key=None): self.images.selected[:] = ~self.images.selected self.draw() def select_constrained_atoms(self, key=None): self.images.selected[:] = ~self.images.get_dynamic(self.atoms) self.draw() def select_immobile_atoms(self, key=None): if len(self.images) > 1: R0 = self.images[0].positions for atoms in self.images[1:]: R = atoms.positions self.images.selected[:] = ~(np.abs(R - R0) > 1.0e-10).any(1) self.draw() def movie(self): from ase.gui.movie import Movie self.movie_window = Movie(self) def plot_graphs(self, x=None, expr=None): from ase.gui.graphs import Graphs g = Graphs(self) if expr is not None: g.plot(expr=expr) self.graph_wref.append(weakref.ref(g)) def plot_graphs_newatoms(self): "Notify any Graph objects that they should make new plots." new_wref = [] found = 0 for wref in self.graph_wref: ref = wref() if ref is not None: ref.plot() new_wref.append(wref) # Preserve weakrefs that still work. found += 1 self.graph_wref = new_wref return found def neb(self): if len(self.images) <= 1: return N = self.images.repeat.prod() natoms = len(self.images[0]) // N R = [a.positions[:natoms] for a in self.images] E = [self.images.get_energy(a) for a in self.images] F = [self.images.get_forces(a) for a in self.images] A = self.images[0].cell pbc = self.images[0].pbc process = subprocess.Popen([sys.executable, '-m', 'ase.neb'], stdin=subprocess.PIPE) pickle.dump((E, F, R, A, pbc), process.stdin, protocol=0) process.stdin.close() self.graphs.append(process) def bulk_modulus(self): process = subprocess.Popen([sys.executable, '-m', 'ase', 'eos', '--plot', '-'], stdin=subprocess.PIPE) v = [abs(np.linalg.det(atoms.cell)) for atoms in self.images] e = [self.images.get_energy(a) for a in self.images] pickle.dump((v, e), process.stdin, protocol=0) process.stdin.close() self.graphs.append(process) def open(self, button=None, filename=None): from ase.io.formats import all_formats, get_ioformat labels = [_('Automatic')] values = [''] def key(item): return item[1][0] for format, (description, code) in sorted(all_formats.items(), key=key): io = get_ioformat(format) if io.read and description != '?': labels.append(_(description)) values.append(format) format = [None] def callback(value): format[0] = value chooser = ui.LoadFileDialog(self.window.win, _('Open ...')) ui.Label(_('Choose parser:')).pack(chooser.top) formats = ui.ComboBox(labels, values, callback) formats.pack(chooser.top) filename = filename or chooser.go() if filename: self.images.read([filename], slice(None), format[0]) self.set_frame(len(self.images) - 1, focus=True) def modify_atoms(self, key=None): from ase.gui.modify import ModifyAtoms ModifyAtoms(self) def add_atoms(self, key=None): from ase.gui.add import AddAtoms AddAtoms(self) def quick_info_window(self): from ase.gui.quickinfo import info ui.Window('Quick Info').add(info(self)) def bulk_window(self): SetupBulkCrystal(self) def surface_window(self): SetupSurfaceSlab(self) def nanoparticle_window(self): return SetupNanoparticle(self) def graphene_window(self, menuitem): SetupGraphene(self) def nanotube_window(self): return SetupNanotube(self) def calculator_window(self, menuitem): SetCalculator(self) def energy_window(self, menuitem): EnergyForces(self) def energy_minimize_window(self, menuitem): Minimize(self) def new_atoms(self, atoms, init_magmom=False): "Set a new atoms object." rpt = getattr(self.images, 'repeat', None) self.images.repeat_images(np.ones(3, int)) self.images.initialize([atoms], init_magmom=init_magmom) self.frame = 0 # Prevent crashes self.images.repeat_images(rpt) self.set_frame(frame=0, focus=True) self.notify_vulnerable() def prepare_new_atoms(self): "Marks that the next call to append_atoms should clear the images." self.images.prepare_new_atoms() def append_atoms(self, atoms): "Set a new atoms object." # self.notify_vulnerable() # Do this manually after last frame. frame = self.images.append_atoms(atoms) self.set_frame(frame=frame - 1, focus=True) def notify_vulnerable(self): """Notify windows that would break when new_atoms is called. The notified windows may adapt to the new atoms. If that is not possible, they should delete themselves. """ new_vul = [] # Keep weakrefs to objects that still exist. for wref in self.vulnerable_windows: ref = wref() if ref is not None: new_vul.append(wref) ref.notify_atoms_changed() self.vulnerable_windows = new_vul def register_vulnerable(self, obj): """Register windows that are vulnerable to changing the images. Some windows will break if the atoms (and in particular the number of images) are changed. They can register themselves and be closed when that happens. """ self.vulnerable_windows.append(weakref.ref(obj)) def exit(self, event=None): for process in self.graphs: process.terminate() self.window.close() def new(self, key=None): os.system('ase gui &') def save(self, key=None): return save_dialog(self) def external_viewer(self, name): command = {'xmakemol': 'xmakemol -f', 'rasmol': 'rasmol -xyz'}.get(name, name) fd, filename = tempfile.mkstemp('.xyz', 'ase.gui-') os.close(fd) self.images.write(filename) os.system('(%s %s &); (sleep 60; rm %s) &' % (command, filename, filename)) def get_menu_data(self, show_unit_cell, show_bonds): M = ui.MenuItem return [ (_('_File'), [M(_('_Open'), self.open, 'Ctrl+O'), M(_('_New'), self.new, 'Ctrl+N'), M(_('_Save'), self.save, 'Ctrl+S'), M('---'), M(_('_Quit'), self.exit, 'Ctrl+Q')]), (_('_Edit'), [M(_('Select _all'), self.select_all), M(_('_Invert selection'), self.invert_selection), M(_('Select _constrained atoms'), self.select_constrained_atoms), M(_('Select _immobile atoms'), self.select_immobile_atoms, key='Ctrl+I'), #M('---'), # M(_('_Copy'), self.copy_atoms, 'Ctrl+C'), # M(_('_Paste'), self.paste_atoms, 'Ctrl+V'), M('---'), M(_('Hide selected atoms'), self.hide_selected), M(_('Show selected atoms'), self.show_selected), M('---'), M(_('_Modify'), self.modify_atoms, 'Ctrl+Y'), M(_('_Add atoms'), self.add_atoms, 'Ctrl+A'), M(_('_Delete selected atoms'), self.delete_selected_atoms, 'Backspace'), M('---'), M(_('_First image'), self.step, 'Home'), M(_('_Previous image'), self.step, 'Page-Up'), M(_('_Next image'), self.step, 'Page-Down'), M(_('_Last image'), self.step, 'End')]), (_('_View'), [M(_('Show _unit cell'), self.toggle_show_unit_cell, 'Ctrl+U', value=show_unit_cell > 0), M(_('Show _axes'), self.toggle_show_axes, value=True), M(_('Show _bonds'), self.toggle_show_bonds, 'Ctrl+B', value=show_bonds), M(_('Show _velocities'), self.toggle_show_velocities, 'Ctrl+G', value=False), M(_('Show _forces'), self.toggle_show_forces, 'Ctrl+F', value=False), M(_('Show _Labels'), self.show_labels, choices=[_('_None'), _('Atom _Index'), _('_Magnetic Moments'), # XXX check if exist _('_Element Symbol'), _('_Initial Charges'), # XXX check if exist ]), M('---'), M(_('Quick Info ...'), self.quick_info_window), M(_('Repeat ...'), self.repeat_window, 'R'), M(_('Rotate ...'), self.rotate_window), M(_('Colors ...'), self.colors_window, 'C'), # TRANSLATORS: verb M(_('Focus'), self.focus, 'F'), M(_('Zoom in'), self.zoom, '+'), M(_('Zoom out'), self.zoom, '-'), M(_('Change View'), submenu=[ M(_('Reset View'), self.reset_view, '='), M(_('xy-plane'), self.set_view, 'Z'), M(_('yz-plane'), self.set_view, 'X'), M(_('zx-plane'), self.set_view, 'Y'), M(_('yx-plane'), self.set_view, 'Alt+Z'), M(_('zy-plane'), self.set_view, 'Alt+X'), M(_('xz-plane'), self.set_view, 'Alt+Y'), M(_('a2,a3-plane'), self.set_view, '1'), M(_('a3,a1-plane'), self.set_view, '2'), M(_('a1,a2-plane'), self.set_view, '3'), M(_('a3,a2-plane'), self.set_view, 'Alt+1'), M(_('a1,a3-plane'), self.set_view, 'Alt+2'), M(_('a2,a1-plane'), self.set_view, 'Alt+3')]), M(_('Settings ...'), self.settings), M('---'), M(_('VMD'), partial(self.external_viewer, 'vmd')), M(_('RasMol'), partial(self.external_viewer, 'rasmol')), M(_('xmakemol'), partial(self.external_viewer, 'xmakemol')), M(_('avogadro'), partial(self.external_viewer, 'avogadro'))]), (_('_Tools'), [M(_('Graphs ...'), self.plot_graphs), M(_('Movie ...'), self.movie), M(_('Expert mode ...'), self.execute, 'Ctrl+E', disabled=True), M(_('Constraints ...'), self.constraints_window), M(_('Render scene ...'), self.render_window), M(_('_Move atoms'), self.toggle_move_mode, 'Ctrl+M'), M(_('_Rotate atoms'), self.toggle_rotate_mode, 'Ctrl+R'), M(_('NE_B'), self.neb), M(_('B_ulk Modulus'), self.bulk_modulus)]), # TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... (_('_Setup'), [M(_('_Bulk Crystal'), self.bulk_window, disabled=True), M(_('_Surface slab'), self.surface_window, disabled=False), M(_('_Nanoparticle'), self.nanoparticle_window), M(_('Nano_tube'), self.nanotube_window), M(_('Graphene'), self.graphene_window, disabled=True)]), (_('_Calculate'), [M(_('Set _Calculator'), self.calculator_window, disabled=True), M(_('_Energy and Forces'), self.energy_window, disabled=True), M(_('Energy Minimization'), self.energy_minimize_window, disabled=True)]), (_('_Help'), [M(_('_About'), partial(ui.about, 'ASE-GUI', version=__version__, webpage='https://wiki.fysik.dtu.dk/' 'ase/ase/gui/gui.html')), M(_('Webpage ...'), webpage)])] def webpage(): import webbrowser webbrowser.open('https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/i18n.py000066400000000000000000000022501316323560300224530ustar00rootroot00000000000000# i18n = i(18 letters omitted)n = internationalization """Module for localization with gettext. When this module is imported, ASE-GUI will use translations depending on system settings. Usually language is taken from the LANG or LANGUAGE environment variables. Examples of how to override the system locale: LANG=da_DK.UTF-8 ase gui (Danish) LANGUAGE=da_DK.UTF-8 ase gui (Danish; normally overrides LANG) LANG=C ase gui (bare-bones ASCII locale disabling translations) Other languages: es_ES.UTF-8, en_UK.UTF-8, ... The encoding and/or country code can be omitted on most systems/languages. Translations will be loaded from the mo-files when possible. See ase/gui/po. All modules that need translations should import _ from here, along with ngettext if they want to translate messages with plurals (e.g. "Save 1 file", "Save %d files").""" import os import sys import gettext domain = 'ag' localedir = '%s/po/' % os.path.dirname(__file__) translation = gettext.translation(domain, localedir, fallback=True) if sys.version_info[0] == 2: _ = translation.ugettext ngettext = translation.ungettext else: _ = translation.gettext ngettext = translation.ngettext ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/images.py000066400000000000000000000335411316323560300231500ustar00rootroot00000000000000from __future__ import print_function from math import sqrt import numpy as np from ase.calculators.singlepoint import SinglePointCalculator from ase.constraints import FixAtoms from ase.data import covalent_radii from ase.gui.defaults import read_defaults from ase.io import read, write, string2index from ase.gui.i18n import _ class Images: def __init__(self, images=None): self.covalent_radii = covalent_radii.copy() self.config = read_defaults() self.atom_scale = self.config['radii_scale'] if images is not None: self.initialize(images) def __len__(self): return len(self._images) def __getitem__(self, index): return self._images[index] def __iter__(self): return iter(self._images) # XXXXXXX hack # compatibility hacks while allowing variable number of atoms def get_dynamic(self, atoms): dynamic = np.ones(len(atoms), bool) for constraint in atoms.constraints: if isinstance(constraint, FixAtoms): dynamic[constraint.index] = False return dynamic def set_dynamic(self, mask, value): # Does not make much sense if different images have different # atom counts. Attempts to apply mask to all images, # to the extent possible. for atoms in self: dynamic = self.get_dynamic(atoms) dynamic[mask[:len(atoms)]] = value atoms.constraints = [c for c in atoms.constraints if not isinstance(c, FixAtoms)] atoms.constraints.append(FixAtoms(mask=~dynamic)) def get_energy(self, atoms): try: e = atoms.get_potential_energy() * self.repeat.prod() except RuntimeError: e = np.nan return e def get_forces(self, atoms): try: F = atoms.get_forces(apply_constraint=False) except RuntimeError: return None else: return np.tile(F.T, self.repeat.prod()).T def initialize(self, images, filenames=None, init_magmom=False): nimages = len(images) if filenames is None: filenames = [None] * nimages self.filenames = filenames # The below seems to be about "quaternions" if 0: # XXXXXXXXXXXXXXXXXXXX hasattr(images[0], 'get_shapes'): self.Q = np.empty((nimages, self.natoms, 4)) self.shapes = images[0].get_shapes() import os as os if os.path.exists('shapes'): shapesfile = open('shapes') lines = shapesfile.readlines() shapesfile.close() if '#{type:(shape_x,shape_y,shape_z), .....,}' in lines[0]: shape = eval(lines[1]) shapes = [] for an in images[0].get_atomic_numbers(): shapes.append(shape[an]) self.shapes = np.array(shapes) else: print('shape file has wrong format') else: print('no shapesfile found: default shapes were used!') else: self.shapes = None warning = False self._images = [] # Whether length or chemical composition changes: self.have_varying_species = False for i, atoms in enumerate(images): # copy atoms or not? Not copying allows back-editing, # but copying actually forgets things like the attached # calculator (might have forces/energies self._images.append(atoms) self.have_varying_species |= np.array_equal(self[0].numbers, atoms.numbers) if hasattr(self, 'Q'): assert False # XXX askhl fix quaternions self.Q[i] = atoms.get_quaternions() if (atoms.pbc != self[0].pbc).any(): warning = True if warning: import warnings warnings.warn('Not all images have the same boundary conditions!') self.maxnatoms = max(len(atoms) for atoms in self) self.selected = np.zeros(self.maxnatoms, bool) self.selected_ordered = [] self.visible = np.ones(self.maxnatoms, bool) self.nselected = 0 self.repeat = np.ones(3, int) def get_radii(self, atoms): radii = np.array([self.covalent_radii[z] for z in atoms.numbers]) radii *= self.atom_scale return radii def prepare_new_atoms(self): "Marks that the next call to append_atoms should clear the images." self.next_append_clears = True def append_atoms(self, atoms, filename=None): "Append an atoms object to the images already stored." self.images.append(atoms) self.filenames.append(filename) self.initialize(self.images, filenames=self.filenames) return def read(self, filenames, index=-1, filetype=None): images = [] names = [] for filename in filenames: i = read(filename, index, filetype) if not isinstance(i, list): i = [i] images.extend(i) names.extend([filename] * len(i)) self.initialize(images, names) def repeat_unit_cell(self): for atoms in self: # Get quantities taking into account current repeat(): ref_energy = self.get_energy(atoms) ref_forces = self.get_forces(atoms) atoms.calc = SinglePointCalculator(atoms, energy=ref_energy, forces=ref_forces) atoms.cell *= self.repeat.reshape((3, 1)) self.repeat = np.ones(3, int) def repeat_images(self, repeat): from ase.constraints import FixAtoms repeat = np.array(repeat) oldprod = self.repeat.prod() images = [] constraints_removed = False for i, atoms in enumerate(self): refcell = atoms.get_cell() fa = [] for c in atoms._constraints: if isinstance(c, FixAtoms): fa.append(c) else: constraints_removed = True atoms.set_constraint(fa) del atoms[len(atoms) // oldprod:] atoms *= repeat atoms.cell = refcell images.append(atoms) if constraints_removed: from ase.gui.ui import tk, showwarning # We must be able to show warning before the main GUI # has been created. So we create a new window, # then show the warning, then destroy the window. tmpwindow = tk.Tk() tmpwindow.withdraw() # Host window will never be shown showwarning(_('Constraints discarded'), _('Constraints other than FixAtoms ' 'have been discarded.')) tmpwindow.destroy() self.initialize(images, filenames=self.filenames) self.repeat = repeat def center(self): """Center each image in the existing unit cell, keeping the cell constant.""" for atoms in self: atoms.center() def graph(self, expr): """Routine to create the data in graphs, defined by the string expr.""" import ase.units as units code = compile(expr + ',', '', 'eval') nimages = len(self) def d(n1, n2): return sqrt(((R[n1] - R[n2])**2).sum()) def a(n1, n2, n3): v1 = R[n1] - R[n2] v2 = R[n3] - R[n2] arg = np.vdot(v1, v2) / (sqrt((v1**2).sum() * (v2**2).sum())) if arg > 1.0: arg = 1.0 if arg < -1.0: arg = -1.0 return 180.0 * np.arccos(arg) / np.pi def dih(n1, n2, n3, n4): # vector 0->1, 1->2, 2->3 and their normalized cross products: a = R[n2] - R[n1] b = R[n3] - R[n2] c = R[n4] - R[n3] bxa = np.cross(b, a) bxa /= np.sqrt(np.vdot(bxa, bxa)) cxb = np.cross(c, b) cxb /= np.sqrt(np.vdot(cxb, cxb)) angle = np.vdot(bxa, cxb) # check for numerical trouble due to finite precision: if angle < -1: angle = -1 if angle > 1: angle = 1 angle = np.arccos(angle) if np.vdot(bxa, c) > 0: angle = 2 * np.pi - angle return angle * 180.0 / np.pi # get number of mobile atoms for temperature calculation E = np.array([self.get_energy(atoms) for atoms in self]) s = 0.0 # Namespace for eval: ns = {'E': E, 'd': d, 'a': a, 'dih': dih} data = [] for i in range(nimages): ns['i'] = i ns['s'] = s ns['R'] = R = self[i].get_positions() ns['V'] = self[i].get_velocities() F = self.get_forces(self[i]) if F is not None: ns['F'] = F ns['A'] = self[i].get_cell() ns['M'] = self[i].get_masses() # XXX askhl verify: dynamic = self.get_dynamic(self[i]) if F is not None: ns['f'] = f = ((F * dynamic[:, None])**2).sum(1)**.5 ns['fmax'] = max(f) ns['fave'] = f.mean() ns['epot'] = epot = E[i] ns['ekin'] = ekin = self[i].get_kinetic_energy() ns['e'] = epot + ekin ndynamic = dynamic.sum() if ndynamic > 0: ns['T'] = 2.0 * ekin / (3.0 * ndynamic * units.kB) data = eval(code, ns) if i == 0: nvariables = len(data) xy = np.empty((nvariables, nimages)) xy[:, i] = data if i + 1 < nimages and not self.have_varying_species: s += sqrt(((self[i + 1].positions - R)**2).sum()) return xy def write(self, filename, rotations='', show_unit_cell=False, bbox=None, **kwargs): indices = range(len(self)) p = filename.rfind('@') if p != -1: try: slice = string2index(filename[p + 1:]) except ValueError: pass else: indices = indices[slice] filename = filename[:p] if isinstance(indices, int): indices = [indices] images = [self.get_atoms(i) for i in indices] if len(filename) > 4 and filename[-4:] in ['.eps', '.png', '.pov']: write(filename, images, rotation=rotations, show_unit_cell=show_unit_cell, bbox=bbox, **kwargs) else: write(filename, images, **kwargs) def get_atoms(self, frame, remove_hidden=False): atoms = self[frame] try: E = atoms.get_potential_energy() except RuntimeError: E = None try: F = atoms.get_forces() except RuntimeError: F = None # Remove hidden atoms if applicable if remove_hidden: atoms = atoms[self.visible] if F is not None: F = F[self.visible] atoms.set_calculator(SinglePointCalculator(atoms, energy=E, forces=F)) return atoms def delete(self, i): self.images.pop(i) self.filenames.pop(i) self.initialize(self.images, self.filenames) def aneb(self): raise NotImplementedError('broken at the moment') n = self.nimages assert n % 5 == 0 levels = n // 5 n = self.nimages = 2 * levels + 3 P = np.empty((self.nimages, self.natoms, 3)) V = np.empty((self.nimages, self.natoms, 3)) F = np.empty((self.nimages, self.natoms, 3)) E = np.empty(self.nimages) for L in range(levels): P[L] = self.P[L * 5] P[n - L - 1] = self.P[L * 5 + 4] V[L] = self.V[L * 5] V[n - L - 1] = self.V[L * 5 + 4] F[L] = self.F[L * 5] F[n - L - 1] = self.F[L * 5 + 4] E[L] = self.E[L * 5] E[n - L - 1] = self.E[L * 5 + 4] for i in range(3): P[levels + i] = self.P[levels * 5 - 4 + i] V[levels + i] = self.V[levels * 5 - 4 + i] F[levels + i] = self.F[levels * 5 - 4 + i] E[levels + i] = self.E[levels * 5 - 4 + i] self.P = P self.V = V self.F = F self.E = E def interpolate(self, m): raise NotImplementedError('broken at the moment') assert self.nimages == 2 self.nimages = 2 + m P = np.empty((self.nimages, self.natoms, 3)) V = np.empty((self.nimages, self.natoms, 3)) F = np.empty((self.nimages, self.natoms, 3)) A = np.empty((self.nimages, 3, 3)) E = np.empty(self.nimages) T = np.empty((self.nimages, self.natoms), int) D = np.empty((self.nimages, 3)) P[0] = self.P[0] V[0] = self.V[0] F[0] = self.F[0] A[0] = self.A[0] E[0] = self.E[0] T[:] = self.T[0] for i in range(1, m + 1): x = i / (m + 1.0) y = 1 - x P[i] = y * self.P[0] + x * self.P[1] V[i] = y * self.V[0] + x * self.V[1] F[i] = y * self.F[0] + x * self.F[1] A[i] = y * self.A[0] + x * self.A[1] E[i] = y * self.E[0] + x * self.E[1] D[i] = y * self.D[0] + x * self.D[1] P[-1] = self.P[1] V[-1] = self.V[1] F[-1] = self.F[1] A[-1] = self.A[1] E[-1] = self.E[1] D[-1] = self.D[1] self.P = P self.V = V self.F = F self.A = A self.E = E self.T = T self.D = D self.filenames[1:1] = [None] * m ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/minimize.py000066400000000000000000000122451316323560300235220ustar00rootroot00000000000000# encoding: utf-8 "Module for performing energy minimization." import ase.gui.ui as ui from ase.gui.simulation import Simulation import ase import ase.optimize import numpy as np pack = _ = AseGuiCancelException = 42 class MinimizeMixin: minimizers = ('BFGS', 'BFGSLineSearch', 'LBFGS', 'LBFGSLineSearch', 'MDMin', 'FIRE') def make_minimize_gui(self, box): self.algo = ui.combo_box_new_text() for m in self.minimizers: self.algo.append_text(m) self.algo.set_active(0) self.algo.connect('changed', self.min_algo_specific) pack(box, [ui.Label(_("Algorithm: ")), self.algo]) self.fmax = ui.Adjustment(0.05, 0.00, 10.0, 0.01) self.fmax_spin = ui.SpinButton(self.fmax, 0, 3) lbl = ui.Label() lbl.set_markup(_("Convergence criterion: Fmax = ")) pack(box, [lbl, self.fmax_spin]) self.steps = ui.Adjustment(100, 1, 1000000, 1) self.steps_spin = ui.SpinButton(self.steps, 0, 0) pack(box, [ui.Label(_("Max. number of steps: ")), self.steps_spin]) # Special stuff for MDMin lbl = ui.Label(_("Pseudo time step: ")) self.mdmin_dt = ui.Adjustment(0.05, 0.0, 10.0, 0.01) spin = ui.SpinButton(self.mdmin_dt, 0, 3) self.mdmin_widgets = [lbl, spin] pack(box, self.mdmin_widgets) self.min_algo_specific() def min_algo_specific(self, *args): "SHow or hide algorithm-specific widgets." minimizer = self.minimizers[self.algo.get_active()] for w in self.mdmin_widgets: if minimizer == 'MDMin': w.show() else: w.hide() class Minimize(Simulation, MinimizeMixin): "Window for performing energy minimization." def __init__(self, gui): Simulation.__init__(self, gui) self.set_title(_("Energy minimization")) vbox = ui.VBox() self.packtext(vbox, _("Minimize the energy with respect to the positions.")) self.packimageselection(vbox) pack(vbox, ui.Label("")) self.make_minimize_gui(vbox) pack(vbox, ui.Label("")) self.status_label = ui.Label("") pack(vbox, [self.status_label]) self.makebutbox(vbox) vbox.show() self.add(vbox) self.show() self.gui.register_vulnerable(self) def run(self, *args): "User has pressed [Run]: run the minimization." if not self.setup_atoms(): return fmax = self.fmax.value steps = self.steps.value mininame = self.minimizers[self.algo.get_active()] self.begin(mode="min", algo=mininame, fmax=fmax, steps=steps) algo = getattr(ase.optimize, mininame) try: logger_func = self.gui.simulation['progress'].get_logger_stream except (KeyError, AttributeError): logger = None else: logger = logger_func() # Don't catch errors in the function. # Display status message self.status_label.set_text(_("Running ...")) self.status_label.modify_fg(ui.STATE_NORMAL, '#AA0000') while ui.events_pending(): ui.main_iteration() self.prepare_store_atoms() if mininame == "MDMin": minimizer = algo(self.atoms, logfile=logger, dt=self.mdmin_dt.value) else: minimizer = algo(self.atoms, logfile=logger) minimizer.attach(self.store_atoms) try: minimizer.run(fmax=fmax, steps=steps) except AseGuiCancelException: # Update display to reflect cancellation of simulation. self.status_label.set_text(_("Minimization CANCELLED after " "%i steps.") % (self.count_steps,)) self.status_label.modify_fg(ui.STATE_NORMAL, '#AA4000') except MemoryError: self.status_label.set_text(_("Out of memory, consider using " "LBFGS instead")) self.status_label.modify_fg(ui.STATE_NORMAL, '#AA4000') else: # Update display to reflect successful end of simulation. self.status_label.set_text(_("Minimization completed in %i steps.") % (self.count_steps,)) self.status_label.modify_fg(ui.STATE_NORMAL, '#007700') self.end() if self.count_steps: # Notify other windows that atoms have changed. # This also notifies this window! self.gui.notify_vulnerable() # Open movie window and energy graph if self.gui.images.nimages > 1: self.gui.movie() assert not np.isnan(self.gui.images.E[0]) if not self.gui.plot_graphs_newatoms(): expr = 'i, e - E[-1]' self.gui.plot_graphs(expr=expr) def notify_atoms_changed(self): "When atoms have changed, check for the number of images." self.setupimageselection() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/modify.py000066400000000000000000000036311316323560300231670ustar00rootroot00000000000000from __future__ import unicode_literals from functools import partial from ase.gui.i18n import _ import ase.gui.ui as ui from ase.gui.widgets import Element from ase.gui.utils import get_magmoms class ModifyAtoms: """Presents a dialog box where the user is able to change the atomic type, the magnetic moment and tags of the selected atoms. """ def __init__(self, gui): self.gui = gui selected = self.selection() if not selected.any(): ui.error(_('No atoms selected!')) return win = ui.Window(_('Modify')) element = Element(callback=self.set_element) win.add(element) win.add(ui.Button(_('Change element'), partial(self.set_element, element))) self.tag = ui.SpinBox(0, -1000, 1000, 1, self.set_tag) win.add([_('Tag'), self.tag]) self.magmom = ui.SpinBox(0.0, -10, 10, 0.1, self.set_magmom) win.add([_('Moment'), self.magmom]) atoms = self.gui.atoms Z = atoms.numbers if Z.ptp() == 0: element.Z = Z[0] tags = atoms.get_tags()[selected] if tags.ptp() == 0: self.tag.value = tags[0] magmoms = get_magmoms(atoms)[selected] if magmoms.round(2).ptp() == 0.0: self.magmom.value = round(magmoms[0], 2) def selection(self): return self.gui.images.selected[:len(self.gui.atoms)] def set_element(self, element): self.gui.atoms.numbers[self.selection()] = element.Z self.gui.draw() def set_tag(self): tags = self.gui.atoms.get_tags() tags[self.selection()] = self.tag.value self.gui.atoms.set_tags(tags) self.gui.draw() def set_magmom(self): magmoms = get_magmoms(self.gui.atoms) magmoms[self.selection()] = self.magmom.value self.gui.atoms.set_initial_magnetic_moments(magmoms) self.gui.draw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/movie.py000066400000000000000000000057331316323560300230240ustar00rootroot00000000000000from __future__ import unicode_literals, division import numpy as np import ase.gui.ui as ui from ase.gui.i18n import _ class Movie: def __init__(self, gui): self.win = win = ui.Window(_('Movie'), self.close) win.add(_('Image number:')) self.frame_number = ui.Scale(gui.frame + 1, 1, len(gui.images), callback=self.new_frame) win.add(self.frame_number) win.add([ui.Button(_('First'), self.click, -1, True), ui.Button(_('Back'), self.click, -1), ui.Button(_('Forward'), self.click, 1), ui.Button(_('Last'), self.click, 1, True)]) play = ui.Button(_('Play'), self.play) stop = ui.Button(_('Stop'), self.stop) # TRANSLATORS: This function plays an animation forwards and backwards # alternatingly, e.g. for displaying vibrational movement self.rock = ui.CheckButton(_('Rock')) win.add([play, stop, self.rock]) if len(gui.images) > 150: skipdefault = len(gui.images) // 150 tdefault = min(max(len(gui.images) / (skipdefault * 5.0), 1.0), 30) else: skipdefault = 0 tdefault = min(max(len(gui.images) / 5.0, 1.0), 30) self.time = ui.SpinBox(tdefault, 1.0, 99, 0.1) self.skip = ui.SpinBox(skipdefault, 0, 99, 1) win.add([_(' Frame rate: '), self.time, _(' Skip frames: '), self.skip]) self.gui = gui self.direction = 1 self.timer = None gui.register_vulnerable(self) def notify_atoms_changed(self): """Called by gui object when the atoms have changed.""" self.close() def close(self): self.stop() self.win.close() def click(self, step, firstlast=False): if firstlast and step < 0: i = 0 elif firstlast: i = len(self.gui.images) - 1 else: i = max(0, min(len(self.gui.images) - 1, self.gui.frame + step)) self.frame_number.value = i + 1 if firstlast: self.direction = np.sign(-step) else: self.direction = np.sign(step) def new_frame(self, value): self.gui.set_frame(value - 1) def play(self): self.stop() t = 1 / self.time.value self.timer = self.gui.window.after(t, self.step) def stop(self): if self.timer is not None: self.timer.cancel() def step(self): i = self.gui.frame nimages = len(self.gui.images) delta = int(self.skip.value + 1) if self.rock.value: if i <= self.skip.value: self.direction = 1 elif i >= nimages - delta: self.direction = -1 i += self.direction * delta else: i = (i + self.direction * delta + nimages) % nimages self.frame_number.value = i + 1 self.play() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/nanoparticle.py000066400000000000000000000464771316323560300243760ustar00rootroot00000000000000# encoding: utf-8 """nanoparticle.py - Window for setting up crystalline nanoparticles. """ from __future__ import division, unicode_literals from copy import copy from ase.gui.i18n import _ import numpy as np import ase import ase.data import ase.gui.ui as ui # Delayed imports: # ase.cluster.data from ase.cluster.cubic import FaceCenteredCubic, BodyCenteredCubic, SimpleCubic from ase.cluster.hexagonal import HexagonalClosedPacked, Graphite from ase.cluster import wulff_construction from ase.gui.widgets import Element, pybutton introtext = _("""\ Create a nanoparticle either by specifying the number of layers, or using the Wulff construction. Please press the [Help] button for instructions on how to specify the directions. WARNING: The Wulff construction currently only works with cubic crystals! """) helptext = _(""" The nanoparticle module sets up a nano-particle or a cluster with a given crystal structure. 1) Select the element, the crystal structure and the lattice constant(s). The [Get structure] button will find the data for a given element. 2) Choose if you want to specify the number of layers in each direction, or if you want to use the Wulff construction. In the latter case, you must specify surface energies in each direction, and the size of the cluster. How to specify the directions: ------------------------------ First time a direction appears, it is interpreted as the entire family of directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of these directions is specified again, the second specification overrules that specific direction. For this reason, the order matters and you can rearrange the directions with the [Up] and [Down] keys. You can also add a new direction, remember to press [Add] or it will not be included. Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of directions, the {111} family and then the (001) direction, overruling the value given for the whole family of directions. """) py_template_layers = """ import ase %(import)s surfaces = %(surfaces)s layers = %(layers)s lc = %(latconst)s atoms = %(factory)s('%(element)s', surfaces, layers, latticeconstant=lc) # OPTIONAL: Cast to ase.Atoms object, discarding extra information: # atoms = ase.Atoms(atoms) """ py_template_wulff = """ import ase from ase.cluster import wulff_construction surfaces = %(surfaces)s esurf = %(energies)s lc = %(latconst)s size = %(natoms)s # Number of atoms atoms = wulff_construction('%(element)s', surfaces, esurf, size, '%(structure)s', rounding='%(rounding)s', latticeconstant=lc) # OPTIONAL: Cast to ase.Atoms object, discarding extra information: # atoms = ase.Atoms(atoms) """ class SetupNanoparticle: "Window for setting up a nanoparticle." # Structures: Abbreviation, name, # 4-index (boolean), two lattice const (bool), factory structure_data = (('fcc', _('Face centered cubic (fcc)'), False, False, FaceCenteredCubic), ('bcc', _('Body centered cubic (bcc)'), False, False, BodyCenteredCubic), ('sc', _('Simple cubic (sc)'), False, False, SimpleCubic), ('hcp', _('Hexagonal closed-packed (hcp)'), True, True, HexagonalClosedPacked), ('graphite', _('Graphite'), True, True, Graphite)) # NB: HCP is broken! # A list of import statements for the Python window. import_names = { 'fcc': 'from ase.cluster.cubic import FaceCenteredCubic', 'bcc': 'from ase.cluster.cubic import BodyCenteredCubic', 'sc': 'from ase.cluster.cubic import SimpleCubic', 'hcp': 'from ase.cluster.hexagonal import HexagonalClosedPacked', 'graphite': 'from ase.cluster.hexagonal import Graphite'} # Default layer specifications for the different structures. default_layers = {'fcc': [((1, 0, 0), 6), ((1, 1, 0), 9), ((1, 1, 1), 5)], 'bcc': [((1, 0, 0), 6), ((1, 1, 0), 9), ((1, 1, 1), 5)], 'sc': [((1, 0, 0), 6), ((1, 1, 0), 9), ((1, 1, 1), 5)], 'hcp': [((0, 0, 0, 1), 5), ((1, 0, -1, 0), 5)], 'graphite': [((0, 0, 0, 1), 5), ((1, 0, -1, 0), 5)]} def __init__(self, gui): self.atoms = None self.no_update = True self.old_structure = 'undefined' win = self.win = ui.Window(_('Nanoparticle')) win.add(ui.Text(introtext)) self.element = Element('', self.update) lattice_button = ui.Button(_('Get structure'), self.set_structure_data) self.elementinfo = ui.Label(' ') win.add(self.element) win.add(self.elementinfo) win.add(lattice_button) # The structure and lattice constant labels = [] values = [] self.needs_4index = {} self.needs_2lat = {} self.factory = {} for abbrev, name, n4, c, factory in self.structure_data: labels.append(name) values.append(abbrev) self.needs_4index[abbrev] = n4 self.needs_2lat[abbrev] = c self.factory[abbrev] = factory self.structure = ui.ComboBox(labels, values, self.update_structure) win.add([_('Structure:'), self.structure]) self.fourindex = self.needs_4index[values[0]] self.a = ui.SpinBox(3.0, 0.0, 1000.0, 0.01, self.update) self.c = ui.SpinBox(3.0, 0.0, 1000.0, 0.01, self.update) win.add([_('Lattice constant: a ='), self.a, ' c =', self.c]) # Choose specification method self.method = ui.ComboBox( [_('Layer specification'), _('Wulff construction')], ['layers', 'wulff'], self.update_gui_method) win.add([_('Method: '), self.method]) self.layerlabel = ui.Label('Missing text') # Filled in later win.add(self.layerlabel) self.direction_table_rows = ui.Rows() win.add(self.direction_table_rows) self.default_direction_table() win.add(_('Add new direction:')) self.new_direction_and_size_rows = ui.Rows() win.add(self.new_direction_and_size_rows) self.update_new_direction_and_size_stuff() # Information win.add(_('Information about the created cluster:')) self.info = [_('Number of atoms: '), ui.Label('-'), _(' Approx. diameter: '), ui.Label('-')] win.add(self.info) # Finalize setup self.update_structure('fcc') self.update_gui_method() self.no_update = False self.auto = ui.CheckButton(_('Automatic Apply')) win.add(self.auto) win.add([pybutton(_('Creating a nanoparticle.'), self.makeatoms), ui.helpbutton(helptext), ui.Button(_('Apply'), self.apply), ui.Button(_('OK'), self.ok)]) self.gui = gui self.smaller_button = None self.largeer_button = None self.element[1].entry.focus_set() def default_direction_table(self): 'Set default directions and values for the current crystal structure.' self.direction_table = [] struct = self.structure.value for direction, layers in self.default_layers[struct]: self.direction_table.append((direction, layers, 1.0)) def update_direction_table(self): self.direction_table_rows.clear() for direction, layers, energy in self.direction_table: self.add_direction(direction, layers, energy) self.update() def add_direction(self, direction, layers, energy): i = len(self.direction_table_rows) if self.method.value == 'wulff': spin = ui.SpinBox(energy, 0.0, 1000.0, 0.1, self.update) else: spin = ui.SpinBox(layers, 1, 100, 1, self.update) up = ui.Button(_('Up'), self.row_swap_next, i - 1) down = ui.Button(_('Down'), self.row_swap_next, i) delete = ui.Button(_('Delete'), self.row_delete, i) self.direction_table_rows.add([str(direction) + ':', spin, up, down, delete]) up.active = i > 0 down.active = False delete.active = i > 0 if i > 0: down, delete = self.direction_table_rows[-2][3:] down.active = True delete.active = True def update_new_direction_and_size_stuff(self): if self.needs_4index[self.structure.value]: n = 4 else: n = 3 rows = self.new_direction_and_size_rows rows.clear() self.new_direction = row = ['('] for i in range(n): if i > 0: row.append(',') row.append(ui.SpinBox(0, -100, 100, 1)) row.append('):') if self.method.value == 'wulff': row.append(ui.SpinBox(1.0, 0.0, 1000.0, 0.1)) else: row.append(ui.SpinBox(5, 1, 100, 1)) row.append(ui.Button(_('Add'), self.row_add)) rows.add(row) if self.method.value == 'wulff': # Extra widgets for the Wulff construction self.size_radio = ui.RadioButtons( [_('Number of atoms'), _('Diameter')], ['natoms', 'diameter'], self.update_gui_size) self.size_natoms = ui.SpinBox(100, 1, 100000, 1, self.update_size_natoms) self.size_diameter = ui.SpinBox(5.0, 0, 100.0, 0.1, self.update_size_diameter) self.round_radio = ui.RadioButtons( [_('above '), _('below '), _('closest ')], ['above', 'below', 'closest'], callback=self.update) self.smaller_button = ui.Button(_('Smaller'), self.wulff_smaller) self.larger_button = ui.Button(_('Larger'), self.wulff_larger) rows.add(_('Choose size using:')) rows.add(self.size_radio) rows.add([_('atoms'), self.size_natoms, _(u'ų'), self.size_diameter]) rows.add( _('Rounding: If exact size is not possible, choose the size:')) rows.add(self.round_radio) rows.add([self.smaller_button, self.larger_button]) self.update_gui_size() else: self.smaller_button = None self.larger_button = None def update_structure(self, s): 'Called when the user changes the structure.' # s = self.structure.value if s != self.old_structure: old4 = self.fourindex self.fourindex = self.needs_4index[s] if self.fourindex != old4: # The table of directions is invalid. self.default_direction_table() self.old_structure = s self.c.active = self.needs_2lat[s] self.update() def update_gui_method(self, *args): 'Switch between layer specification and Wulff construction.' self.update_direction_table() self.update_new_direction_and_size_stuff() if self.method.value == 'wulff': self.layerlabel.text = _( 'Surface energies (as energy/area, NOT per atom):') else: self.layerlabel.text = _('Number of layers:') self.update() def wulff_smaller(self, widget=None): 'Make a smaller Wulff construction.' n = len(self.atoms) self.size_radio.value = 'natoms' self.size_natoms.value = n - 1 self.round_radio.value = 'below' self.apply() def wulff_larger(self, widget=None): 'Make a larger Wulff construction.' n = len(self.atoms) self.size_radio.value = 'natoms' self.size_natoms.value = n + 1 self.round_radio.value = 'above' self.apply() def row_add(self, widget=None): 'Add a row to the list of directions.' if self.fourindex: n = 4 else: n = 3 idx = tuple(a.value for a in self.new_direction[1:1 + 2 * n:2]) if not any(idx): ui.error(_('At least one index must be non-zero'), '') return if n == 4 and sum(idx) != 0: ui.error(_('Invalid hexagonal indices', 'The sum of the first three numbers must be zero')) return new = [idx, 5, 1.0] if self.method.value == 'wulff': new[1] = self.new_direction[-2].value else: new[2] = self.new_direction[-2].value self.direction_table.append(new) self.add_direction(*new) self.update() def row_delete(self, row): del self.direction_table[row] self.update_direction_table() def row_swap_next(self, row): dt = self.direction_table dt[row], dt[row + 1] = dt[row + 1], dt[row] self.update_direction_table() def update_gui_size(self, widget=None): 'Update gui when the cluster size specification changes.' self.size_natoms.active = self.size_radio.value == 'natoms' self.size_diameter.active = self.size_radio.value == 'diameter' def update_size_natoms(self, widget=None): at_vol = self.get_atomic_volume() dia = 2.0 * (3 * self.size_natoms.value * at_vol / (4 * np.pi))**(1 / 3) self.size_diameter.value = dia self.update() def update_size_diameter(self, widget=None, update=True): if self.size_diameter.active: at_vol = self.get_atomic_volume() n = round(np.pi / 6 * self.size_diameter.value**3 / at_vol) self.size_natoms.value = int(n) if update: self.update() def update(self, *args): if self.no_update: return self.element.check() if self.auto.value: self.makeatoms() if self.atoms is not None: self.gui.new_atoms(self.atoms) else: self.clearatoms() self.makeinfo() def set_structure_data(self, *args): 'Called when the user presses [Get structure].' if not self.element.check(): return z = self.element.Z ref = ase.data.reference_states[z] if ref is None: structure = None else: structure = ref['symmetry'] if ref is None or structure not in [s[0] for s in self.structure_data]: ui.error(_('Unsupported or unknown structure'), _('Element = {0}, structure = {1}') .format(self.element.symbol, structure)) return self.structure.value = structure a = ref['a'] self.a.value = a self.fourindex = self.needs_4index[structure] if self.fourindex: try: c = ref['c'] except KeyError: c = ref['c/a'] * a self.c.value = c def makeatoms(self, *args): 'Make the atoms according to the current specification.' if not self.element.check(): self.clearatoms() self.makeinfo() return False struct = self.structure.value if self.needs_2lat[struct]: # a and c lattice constants lc = {'a': self.a.value, 'c': self.c.value} lc_str = str(lc) else: lc = self.a.value lc_str = '%.5f' % (lc,) if self.method.value == 'wulff': # Wulff construction surfaces = [x[0] for x in self.direction_table] surfaceenergies = [x[1].value for x in self.direction_table_rows.rows] self.update_size_diameter(update=False) rounding = self.round_radio.value self.atoms = wulff_construction(self.element.symbol, surfaces, surfaceenergies, self.size_natoms.value, self.factory[struct], rounding, lc) python = py_template_wulff % {'element': self.element.symbol, 'surfaces': str(surfaces), 'energies': str(surfaceenergies), 'latconst': lc_str, 'natoms': self.size_natoms.value, 'structure': struct, 'rounding': rounding} else: # Layer-by-layer specification surfaces = [x[0] for x in self.direction_table] layers = [x[1].value for x in self.direction_table_rows.rows] self.atoms = self.factory[struct](self.element.symbol, copy(surfaces), layers, latticeconstant=lc) imp = self.import_names[struct] python = py_template_layers % {'import': imp, 'element': self.element.symbol, 'surfaces': str(surfaces), 'layers': str(layers), 'latconst': lc_str, 'factory': imp.split()[-1]} self.makeinfo() return python def clearatoms(self): self.atoms = None def get_atomic_volume(self): s = self.structure.value a = self.a.value c = self.c.value if s == 'fcc': return a**3 / 4 elif s == 'bcc': return a**3 / 2 elif s == 'sc': return a**3 elif s == 'hcp': return np.sqrt(3.0) / 2 * a * a * c / 2 elif s == 'graphite': return np.sqrt(3.0) / 2 * a * a * c / 4 def makeinfo(self): """Fill in information field about the atoms. Also turns the Wulff construction buttons [Larger] and [Smaller] on and off. """ if self.atoms is None: self.info[1].text = '-' self.info[3].text = '-' else: at_vol = self.get_atomic_volume() dia = 2 * (3 * len(self.atoms) * at_vol / (4 * np.pi))**(1 / 3) self.info[1].text = str(len(self.atoms)) self.info[3].text = u'{0:.1f} Ã…'.format(dia) if self.method.value == 'wulff': if self.smaller_button is not None: self.smaller_button.active = self.atoms is not None self.larger_button.active = self.atoms is not None def apply(self): self.makeatoms() if self.atoms is not None: self.gui.new_atoms(self.atoms) return True else: ui.error(_('No valid atoms.'), _('You have not (yet) specified a consistent set of ' 'parameters.')) return False def ok(self): if self.apply(): self.win.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/nanotube.py000066400000000000000000000055261316323560300235200ustar00rootroot00000000000000# encoding: utf-8 """Window for setting up Carbon nanotubes and similar tubes. """ from __future__ import unicode_literals import ase.gui.ui as ui from ase.build import nanotube from ase.gui.i18n import _ from ase.gui.widgets import Element, pybutton introtext = _("""\ Set up a Carbon nanotube by specifying the (n,m) roll-up vector. Please note that m <= n. Nanotubes of other elements can be made by specifying the element and bond length.\ """) py_template = """\ from ase.build import nanotube atoms = nanotube({n}, {m}, length={length}, bond={bl:.3f}, symbol='{symb}') """ label_template = _('{natoms} atoms, diameter: {diameter:.3f} Ã…, ' 'total length: {total_length:.3f} Ã…') class SetupNanotube: """Window for setting up a (Carbon) nanotube.""" def __init__(self, gui): self.element = Element('C', self.make) self.bondlength = ui.SpinBox(1.42, 0.0, 10.0, 0.01, self.make) self.n = ui.SpinBox(5, 1, 100, 1, self.make) self.m = ui.SpinBox(5, 0, 100, 1, self.make) self.length = ui.SpinBox(1, 1, 100, 1, self.make) self.description = ui.Label('') win = self.win = ui.Window(_('Nanotube')) win.add(ui.Text(introtext)) win.add(self.element) win.add([_('Bond length: '), self.bondlength, _(u'Ã…')]) win.add(_('Select roll-up vector (n,m) and tube length:')) win.add(['n:', self.n, 'm:', self.m, _('Length:'), self.length]) win.add(self.description) win.add([pybutton(_('Creating a nanoparticle.'), self.make), ui.Button(_('Apply'), self.apply), ui.Button(_('OK'), self.ok)]) self.gui = gui self.atoms = None def make(self, element=None): symbol = self.element.symbol if symbol is None: self.atoms = None self.python = None self.description.text = '' return n = self.n.value m = self.m.value length = self.length.value bl = self.bondlength.value self.atoms = nanotube(n, m, length=length, bond=bl, symbol=symbol) label = label_template.format( natoms=len(self.atoms), total_length=self.atoms.cell[2, 2], diameter=self.atoms.cell[0, 0] / 2) self.description.text = label return py_template.format(n=n, m=m, length=length, symb=symbol, bl=bl) def apply(self): self.make() if self.atoms is not None: self.gui.new_atoms(self.atoms) return True else: ui.error(_('No valid atoms.'), _('You have not (yet) specified a consistent ' 'set of parameters.')) return False def ok(self, *args): if self.apply(): self.win.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/000077500000000000000000000000001316323560300217415ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/.gitignore000066400000000000000000000000131316323560300237230ustar00rootroot00000000000000*.mo *.po~ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/Makefile000066400000000000000000000055651316323560300234140ustar00rootroot00000000000000# This makefile is used to update templates for internationalization ("i18n") # of ase-gui. # INSTRUCTIONS # ------------ # # To update existing templates with strings from the latest python files, # just run 'make'. # # To create a translation template for a new language (e.g. de_DE.UTF8), run: # LANG=de_DE.UTF8 make init # # After writing translations, you need to run 'make' again to generate the # binary translation files loaded by the programme. # # Then you can run 'LANG=de_DE.UTF8 ase-gui' and your translations should be # visible if you have a developer installation. # # For distutils installation, the po-files are globbed from setup.py so # they are automatically included when you run install. # List of files calling gettext. TRANSLATIONFILES=../add.py ../colors.py ../constraints.py ../crystal.py ../energyforces.py ../graphene.py ../graphs.py ../gui.py ../images.py ../modify.py ../movie.py ../nanoparticle.py ../nanotube.py ../quickinfo.py ../render.py ../repeat.py ../rotate.py ../save.py ../settings.py ../simulation.py ../status.py ../surfaceslab.py ../ui.py ../widgets.py #TRANSLATIONFILES=../ag.py ../calculator.py ../colors.py ../constraints.py ../crystal.py ../debug.py ../dft.py ../energyforces.py ../execute.py ../graphene.py ../graphs.py ../gtkexcepthook.py ../gui.py ../minimize.py ../movie.py ../nanoparticle.py ../nanotube.py ../progress.py ../pybutton.py ../quickinfo.py ../render.py ../repeat.py ../rotate.py ../scaling.py ../settings.py ../setupwindow.py ../simulation.py ../status.py ../surfaceslab.py ../widgets.py #TRANSLATIONFILES=../*.py i18n: ag.pot update-po compile # This will update the English template (ag.pot) with English messages from # the Python source code. ag.pot: ${TRANSLATIONFILES} xgettext --add-comments --language=Python --keyword=_ --output=ag.pot --msgid-bugs-address=ase-users@listserv.fysik.dtu.dk --copyright-holder="ASE developers" --package-name=ase ${TRANSLATIONFILES} # This will create an empty translation file ($LANG.po, where $LANG is # an environment variable) from the English template ag.pot. # The po-file header will have to be edited afterwards. init: ag.pot mkdir -p ${LANG}/LC_MESSAGES msginit --locale=${LANG} --input=ag.pot --output-file=${LANG}/LC_MESSAGES/ag.po # This will merge new/changed English strings from the template ag.pot # into all existing translations (*.po), maximally # reusing the existing translations. update-po: ag.pot for FILE in $(wildcard */LC_MESSAGES/ag.po); do \ msgmerge --previous --update $$FILE ag.pot ;\ done # This will compile all translations (*.po) into binary files in gettext's # search directory. compile: */LC_MESSAGES/ag.po for DIR in $(wildcard */LC_MESSAGES); do \ echo Checking $$DIR/ag.po ;\ msgfmt -cv --output-file=$$DIR/ag.mo $$DIR/ag.po ;\ done gitrevert: git checkout -- ag.pot '*/LC_MESSAGES/ag.po' clean: rm -f ./*/LC_MESSAGES/ag.mo rm -f ./*/LC_MESSAGES/ag.po~ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/ag.pot000066400000000000000000000651241316323560300230640ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ASE developers # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ase\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-04-11 20:41+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: ../add.py:12 msgid "Bad position" msgstr "" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "" #: ../add.py:25 msgid "Absolute position:" msgstr "" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:262 msgid "Add" msgstr "" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "" #: ../colors.py:14 msgid "Colors" msgstr "" #: ../colors.py:16 msgid "Choose how the atoms are colored:" msgstr "" #: ../colors.py:18 msgid "By atomic number, default \"jmol\" colors" msgstr "" #: ../colors.py:19 msgid "By tag" msgstr "" #: ../colors.py:20 msgid "By force" msgstr "" #: ../colors.py:21 msgid "By velocity" msgstr "" #: ../colors.py:22 msgid "By charge" msgstr "" #: ../colors.py:23 msgid "By magnetic moment" msgstr "" #: ../colors.py:65 msgid "Green" msgstr "" #: ../colors.py:65 msgid "Yellow" msgstr "" #: ../constraints.py:8 msgid "Constraints" msgstr "" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "" #: ../constraints.py:12 msgid "immobile atoms" msgstr "" #: ../constraints.py:13 msgid "Unconstrain" msgstr "" #: ../constraints.py:15 msgid "Clear constraints" msgstr "" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr "" #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "" #: ../crystal.py:85 msgid "Number: 1" msgstr "" #: ../crystal.py:87 msgid "Lattice: " msgstr "" #: ../crystal.py:88 msgid "\tSpace group: " msgstr "" #: ../crystal.py:95 msgid "Size: x: " msgstr "" #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr "" #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr "" #: ../crystal.py:97 ../surfaceslab.py:77 ../surfaceslab.py:78 #: ../surfaceslab.py:79 msgid " unit cells" msgstr "" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "" #: ../crystal.py:161 ../surfaceslab.py:57 msgid "Get from database" msgstr "" #: ../crystal.py:166 msgid "Basis: " msgstr "" #: ../crystal.py:176 msgid " Element:\t" msgstr "" #: ../crystal.py:177 msgid "\tx: " msgstr "" #: ../crystal.py:198 msgid "Creating a crystal." msgstr "" #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "" #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:528 #: ../nanotube.py:84 ../surfaceslab.py:221 msgid "No valid atoms." msgstr "" #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:529 #: ../nanotube.py:85 ../surfaceslab.py:222 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "" #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "" #: ../energyforces.py:15 msgid "Output:" msgstr "" #: ../energyforces.py:44 msgid "Save output" msgstr "" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr "" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" #: ../graphene.py:38 ../gui.py:466 msgid "Graphene" msgstr "" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "" #: ../graphene.py:47 msgid "Infinite sheet" msgstr "" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "" #: ../graphene.py:58 msgid "zigzag" msgstr "" #: ../graphene.py:58 msgid "armchair" msgstr "" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr "" #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "" #: ../graphene.py:80 msgid "H" msgstr "" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "" #: ../graphene.py:97 msgid " Length: " msgstr "" #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:80 msgid "Vacuum: " msgstr "" #: ../graphene.py:153 msgid " No element specified!" msgstr "" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "" #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "" #: ../graphs.py:46 msgid "Save" msgstr "" #: ../graphs.py:47 msgid "Clear" msgstr "" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "" #: ../gui.py:243 msgid "Automatic" msgstr "" #: ../gui.py:261 msgid "Open ..." msgstr "" #: ../gui.py:262 msgid "Choose parser:" msgstr "" #: ../gui.py:373 msgid "_File" msgstr "" #: ../gui.py:374 msgid "_Open" msgstr "" #: ../gui.py:375 msgid "_New" msgstr "" #: ../gui.py:376 msgid "_Save" msgstr "" #: ../gui.py:378 msgid "_Quit" msgstr "" #: ../gui.py:380 msgid "_Edit" msgstr "" #: ../gui.py:381 msgid "Select _all" msgstr "" #: ../gui.py:382 msgid "_Invert selection" msgstr "" #: ../gui.py:383 msgid "Select _constrained atoms" msgstr "" #: ../gui.py:384 msgid "Select _immobile atoms" msgstr "" #: ../gui.py:390 msgid "Hide selected atoms" msgstr "" #: ../gui.py:391 msgid "Show selected atoms" msgstr "" #: ../gui.py:393 msgid "_Modify" msgstr "" #: ../gui.py:394 msgid "_Add atoms" msgstr "" #: ../gui.py:395 msgid "_Delete selected atoms" msgstr "" #: ../gui.py:398 msgid "_First image" msgstr "" #: ../gui.py:399 msgid "_Previous image" msgstr "" #: ../gui.py:400 msgid "_Next image" msgstr "" #: ../gui.py:401 msgid "_Last image" msgstr "" #: ../gui.py:403 msgid "_View" msgstr "" #: ../gui.py:404 msgid "Show _unit cell" msgstr "" #: ../gui.py:406 msgid "Show _axes" msgstr "" #: ../gui.py:407 msgid "Show _bonds" msgstr "" #: ../gui.py:409 msgid "Show _velocities" msgstr "" #: ../gui.py:411 msgid "Show _forces" msgstr "" #: ../gui.py:413 msgid "Show _Labels" msgstr "" #: ../gui.py:414 msgid "_None" msgstr "" #: ../gui.py:415 msgid "Atom _Index" msgstr "" #: ../gui.py:416 msgid "_Magnetic Moments" msgstr "" #: ../gui.py:417 msgid "_Element Symbol" msgstr "" #: ../gui.py:419 msgid "Quick Info ..." msgstr "" #: ../gui.py:420 msgid "Repeat ..." msgstr "" #: ../gui.py:421 msgid "Rotate ..." msgstr "" #: ../gui.py:422 msgid "Colors ..." msgstr "" #. TRANSLATORS: verb #: ../gui.py:424 msgid "Focus" msgstr "" #: ../gui.py:425 msgid "Zoom in" msgstr "" #: ../gui.py:426 msgid "Zoom out" msgstr "" #: ../gui.py:427 msgid "Change View" msgstr "" #: ../gui.py:429 msgid "Reset View" msgstr "" #: ../gui.py:430 msgid "xy-plane" msgstr "" #: ../gui.py:431 msgid "yz-plane" msgstr "" #: ../gui.py:432 msgid "zx-plane" msgstr "" #: ../gui.py:433 msgid "yx-plane" msgstr "" #: ../gui.py:434 msgid "zy-plane" msgstr "" #: ../gui.py:435 msgid "xz-plane" msgstr "" #: ../gui.py:436 msgid "a2,a3-plane" msgstr "" #: ../gui.py:437 msgid "a3,a1-plane" msgstr "" #: ../gui.py:438 msgid "a1,a2-plane" msgstr "" #: ../gui.py:439 msgid "a3,a2-plane" msgstr "" #: ../gui.py:440 msgid "a1,a3-plane" msgstr "" #: ../gui.py:441 msgid "a2,a1-plane" msgstr "" #: ../gui.py:442 msgid "Settings ..." msgstr "" #: ../gui.py:444 msgid "VMD" msgstr "" #: ../gui.py:445 msgid "RasMol" msgstr "" #: ../gui.py:446 msgid "xmakemol" msgstr "" #: ../gui.py:447 msgid "avogadro" msgstr "" #: ../gui.py:449 msgid "_Tools" msgstr "" #: ../gui.py:450 msgid "Graphs ..." msgstr "" #: ../gui.py:451 msgid "Movie ..." msgstr "" #: ../gui.py:452 msgid "Expert mode ..." msgstr "" #: ../gui.py:453 msgid "Constraints ..." msgstr "" #: ../gui.py:454 msgid "Render scene ..." msgstr "" #: ../gui.py:455 msgid "_Move atoms" msgstr "" #: ../gui.py:456 msgid "NE_B" msgstr "" #: ../gui.py:457 msgid "B_ulk Modulus" msgstr "" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:460 msgid "_Setup" msgstr "" #: ../gui.py:461 msgid "_Bulk Crystal" msgstr "" #: ../gui.py:462 msgid "_Surface slab" msgstr "" #: ../gui.py:463 msgid "_Nanoparticle" msgstr "" #: ../gui.py:465 msgid "Nano_tube" msgstr "" #: ../gui.py:468 msgid "_Calculate" msgstr "" #: ../gui.py:469 msgid "Set _Calculator" msgstr "" #: ../gui.py:470 msgid "_Energy and Forces" msgstr "" #: ../gui.py:471 msgid "Energy Minimization" msgstr "" #: ../gui.py:474 msgid "_Help" msgstr "" #: ../gui.py:475 msgid "_About" msgstr "" #: ../gui.py:479 msgid "Webpage ..." msgstr "" #: ../modify.py:18 msgid "No atoms selected!" msgstr "" #: ../modify.py:21 msgid "Modify" msgstr "" #: ../modify.py:24 msgid "Change element" msgstr "" #: ../modify.py:27 msgid "Tag" msgstr "" #: ../modify.py:29 msgid "Moment" msgstr "" #: ../movie.py:11 msgid "Movie" msgstr "" #: ../movie.py:12 msgid "Image number:" msgstr "" #: ../movie.py:18 msgid "First" msgstr "" #: ../movie.py:19 msgid "Back" msgstr "" #: ../movie.py:20 msgid "Forward" msgstr "" #: ../movie.py:21 msgid "Last" msgstr "" #: ../movie.py:23 msgid "Play" msgstr "" #: ../movie.py:24 msgid "Stop" msgstr "" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "" #: ../movie.py:41 msgid " Frame rate: " msgstr "" #: ../movie.py:41 msgid " Skip frames: " msgstr "" #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "" #: ../nanoparticle.py:154 ../surfaceslab.py:72 msgid "Structure:" msgstr "" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "" #: ../nanoparticle.py:166 msgid "Method: " msgstr "" #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "" #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr "" #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "" #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:84 msgid "Apply" msgstr "" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:85 msgid "OK" msgstr "" #: ../nanoparticle.py:225 msgid "Up" msgstr "" #: ../nanoparticle.py:226 msgid "Down" msgstr "" #: ../nanoparticle.py:227 msgid "Delete" msgstr "" #: ../nanoparticle.py:269 msgid "Number of atoms" msgstr "" #: ../nanoparticle.py:269 msgid "Diameter" msgstr "" #: ../nanoparticle.py:277 msgid "above " msgstr "" #: ../nanoparticle.py:277 msgid "below " msgstr "" #: ../nanoparticle.py:277 msgid "closest " msgstr "" #: ../nanoparticle.py:280 msgid "Smaller" msgstr "" #: ../nanoparticle.py:281 msgid "Larger" msgstr "" #: ../nanoparticle.py:282 msgid "Choose size using:" msgstr "" #: ../nanoparticle.py:284 msgid "atoms" msgstr "" #: ../nanoparticle.py:285 msgid "ų" msgstr "" #: ../nanoparticle.py:287 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "" #: ../nanoparticle.py:315 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "" #: ../nanoparticle.py:317 msgid "Number of layers:" msgstr "" #: ../nanoparticle.py:345 msgid "At least one index must be non-zero" msgstr "" #: ../nanoparticle.py:348 msgid "Invalid hexagonal indices" msgstr "" #: ../nanoparticle.py:414 msgid "Unsupported or unknown structure" msgstr "" #: ../nanoparticle.py:415 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" #: ../nanotube.py:40 msgid "Nanotube" msgstr "" #: ../nanotube.py:43 msgid "Bond length: " msgstr "" #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "" #: ../nanotube.py:49 msgid "Length:" msgstr "" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "" #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "" #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "" #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "" #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "" #: ../quickinfo.py:53 msgid "no" msgstr "" #: ../quickinfo.py:53 msgid "yes" msgstr "" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "" #: ../render.py:19 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" #: ../render.py:38 msgid "Render current view in povray ... " msgstr "" #: ../render.py:42 #, python-format msgid "Rendering %d atoms." msgstr "" #: ../render.py:49 msgid "Render constraints" msgstr "" #: ../render.py:54 msgid "Width" msgstr "" #: ../render.py:54 msgid " Height" msgstr "" #: ../render.py:63 msgid "Render unit cell" msgstr "" #: ../render.py:75 msgid "Line width" msgstr "" #: ../render.py:76 msgid "Angstrom " msgstr "" #: ../render.py:86 msgid "Set" msgstr "" #: ../render.py:88 msgid "Output basename: " msgstr "" #: ../render.py:90 msgid " Filename: " msgstr "" #: ../render.py:102 msgid " Default texture for atoms: " msgstr "" #: ../render.py:103 msgid " transparency: " msgstr "" #: ../render.py:106 msgid "Define atom selection for new texture:" msgstr "" #: ../render.py:108 msgid "Select" msgstr "" #: ../render.py:112 msgid "Create new texture from selection" msgstr "" #: ../render.py:115 msgid "Help on textures" msgstr "" #: ../render.py:131 msgid "Camera type: " msgstr "" #: ../render.py:132 msgid " Camera distance" msgstr "" #: ../render.py:134 msgid "Render current frame" msgstr "" #: ../render.py:138 #, python-format msgid "Render all %d frames" msgstr "" #: ../render.py:143 msgid "Transparent background" msgstr "" #: ../render.py:146 msgid "Run povray " msgstr "" #: ../render.py:149 msgid "Keep povray files " msgstr "" #: ../render.py:152 msgid "Show output window" msgstr "" #: ../render.py:237 msgid " transparency: " msgstr "" #: ../render.py:247 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" #: ../repeat.py:10 msgid "Repeat" msgstr "" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "" #: ../repeat.py:15 msgid "Set unit cell" msgstr "" #: ../rotate.py:13 msgid "Rotate" msgstr "" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "" #: ../rotate.py:18 msgid "Update" msgstr "" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" #: ../save.py:26 msgid "Save ..." msgstr "" #: ../settings.py:10 msgid "Settings" msgstr "" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "" #: ../settings.py:16 msgid "release" msgstr "" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr "" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "" #: ../settings.py:19 msgid "Clear all constraints" msgstr "" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "" #: ../settings.py:23 msgid "Hide" msgstr "" #: ../settings.py:25 msgid "show" msgstr "" #: ../settings.py:27 msgid "View all atoms" msgstr "" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr "" #: ../simulation.py:31 msgid " (continue simulation)" msgstr "" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "" #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "" #: ../simulation.py:50 msgid "Configuration number " msgstr "" #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "" #: ../simulation.py:92 msgid "Run" msgstr "" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "" #: ../simulation.py:123 msgid "No atoms present" msgstr "" #: ../status.py:57 #, python-format msgid " tag=%(tag)s" msgstr "" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:61 #, python-brace-format msgid " mom={0:1.2f}" msgstr "" #: ../status.py:65 #, python-brace-format msgid " q={0:1.2f}" msgstr "" #: ../status.py:110 msgid "dihedral" msgstr "" #: ../surfaceslab.py:14 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" #. Name, structure, orthogonal, function #: ../surfaceslab.py:26 msgid "FCC(100)" msgstr "" #: ../surfaceslab.py:26 ../surfaceslab.py:27 ../surfaceslab.py:28 #: ../surfaceslab.py:29 msgid "fcc" msgstr "" #: ../surfaceslab.py:27 msgid "FCC(110)" msgstr "" #: ../surfaceslab.py:28 ../surfaceslab.py:172 msgid "FCC(111)" msgstr "" #: ../surfaceslab.py:29 ../surfaceslab.py:175 msgid "FCC(211)" msgstr "" #: ../surfaceslab.py:30 msgid "BCC(100)" msgstr "" #: ../surfaceslab.py:30 ../surfaceslab.py:31 ../surfaceslab.py:32 msgid "bcc" msgstr "" #: ../surfaceslab.py:31 ../surfaceslab.py:169 msgid "BCC(110)" msgstr "" #: ../surfaceslab.py:32 ../surfaceslab.py:166 msgid "BCC(111)" msgstr "" #: ../surfaceslab.py:33 ../surfaceslab.py:179 msgid "HCP(0001)" msgstr "" #: ../surfaceslab.py:33 ../surfaceslab.py:34 ../surfaceslab.py:133 #: ../surfaceslab.py:189 msgid "hcp" msgstr "" #: ../surfaceslab.py:34 ../surfaceslab.py:182 msgid "HCP(10-10)" msgstr "" #: ../surfaceslab.py:35 msgid "DIAMOND(100)" msgstr "" #: ../surfaceslab.py:35 ../surfaceslab.py:36 msgid "diamond" msgstr "" #: ../surfaceslab.py:36 msgid "DIAMOND(111)" msgstr "" #: ../surfaceslab.py:69 msgid "Surface" msgstr "" #: ../surfaceslab.py:73 msgid "Orthogonal cell:" msgstr "" #: ../surfaceslab.py:74 msgid "Lattice constant:\ta" msgstr "" #: ../surfaceslab.py:76 msgid "\t\tc" msgstr "" #: ../surfaceslab.py:77 msgid "Size: \tx: " msgstr "" #: ../surfaceslab.py:78 msgid "\ty: " msgstr "" #: ../surfaceslab.py:79 msgid "\tz: " msgstr "" #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:83 msgid "Creating a surface." msgstr "" #: ../surfaceslab.py:163 msgid "Please enter an even value for orthogonal cell" msgstr "" #: ../surfaceslab.py:176 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "" #: ../surfaceslab.py:196 msgid "Vacuum: {} Ã…." msgstr "" #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:203 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "" msgstr[1] "" #: ../ui.py:45 msgid "Error" msgstr "" #: ../ui.py:52 msgid "Version" msgstr "" #: ../ui.py:53 msgid "Web-page" msgstr "" #: ../ui.py:54 msgid "About" msgstr "" #: ../ui.py:59 ../ui.py:63 msgid "Help" msgstr "" #: ../widgets.py:11 msgid "Element:" msgstr "" #: ../widgets.py:39 msgid "No element specified!" msgstr "" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "" #: ../widgets.py:75 msgid "No Python code" msgstr "" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/da/000077500000000000000000000000001316323560300223255ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/da/LC_MESSAGES/000077500000000000000000000000001316323560300241125ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/da/LC_MESSAGES/ag.po000066400000000000000000002430551316323560300250520ustar00rootroot00000000000000# Danish translations for ASE package # Danske oversættelser for pakken ASE. # Copyright (C) 2011-2017 ASE developers # This file is distributed under the same license as the ASE package. # # Ask Hjorth Larsen , 2011-2017. # msgid "" msgstr "" "Project-Id-Version: ase-3.5.2\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-20 19:21+0200\n" "PO-Revision-Date: 2017-09-20 19:23+0200\n" "Last-Translator: Ask Hjorth Larsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../add.py:12 msgid "Bad position" msgstr "Ugyldig position" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "Tilføj atomer" #: ../add.py:25 msgid "Absolute position:" msgstr "Absolut position:" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "Tilføj" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "Relativ til middelposition (af markering):" #: ../colors.py:15 msgid "Colors" msgstr "Farver" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "Vælg hvordan atomerne farves:" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "Efter atomnummer; \"jmol\"-farver som standard" #: ../colors.py:21 msgid "By tag" msgstr "Efter mærke" #: ../colors.py:22 msgid "By force" msgstr "Efter kraft" #: ../colors.py:23 msgid "By velocity" msgstr "Efter hastighed" #: ../colors.py:24 msgid "By initial charge" msgstr "Efter startladning" #: ../colors.py:25 msgid "By magnetic moment" msgstr "Efter magnetisk moment" #: ../colors.py:69 msgid "Green" msgstr "Grøn" #: ../colors.py:69 msgid "Yellow" msgstr "Gul" #: ../constraints.py:8 msgid "Constraints" msgstr "Begrænsninger" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "Begræns" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "markerede atomer" #: ../constraints.py:12 msgid "immobile atoms" msgstr "immobile atomer" #: ../constraints.py:13 msgid "Unconstrain" msgstr "Fjern begrænsninger" #: ../constraints.py:15 msgid "Clear constraints" msgstr "Ryd begrænsninger" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" " Brug denne dialog til at oprette krystalstrukturer. Vælg først " "strukturen,\n" " enten fra en samling almindelige krystalstrukturer eller ud fra en\n" " rumgruppebeskrivelse. Tilføj sÃ¥ alle andre gitterparametre.\n" "\n" " Hvis der er en eksperimentel krystalstruktur tilgængelig for at\n" " atom, kan du slÃ¥ krystaltypen samt gitterkonstanten op – ellers skal\n" " du angive den selv. " #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr " %(natoms)i atomer: %(symbols)s, Volumen: %(volume).3f A3" #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "Opret krystalstruktur fra rumgruppe" #: ../crystal.py:85 msgid "Number: 1" msgstr "Nummer: 1" # slice ~ opdel #: ../crystal.py:87 msgid "Lattice: " msgstr "Gitter: " #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\tRumgruppe: " #: ../crystal.py:95 msgid "Size: x: " msgstr "Størrelse: x: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " enhedsceller" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "fri" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "lig med b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "lig med c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "fast" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "lig med a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "lig med beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "lig med gamma" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "lig med alfa" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "Gitterparametre" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\talfa:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tbeta:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tgamma:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "Hent fra database" #: ../crystal.py:166 msgid "Basis: " msgstr "Basis: " #: ../crystal.py:176 msgid " Element:\t" msgstr " Grundstof:\t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "Oprettelse af krystal." #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "Symbol: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "Nummer: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "Ugyldig rumgruppe!" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "Angiv venligst en konsistent samling atomer." #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "Ingen gyldige atomer." #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "Du har (endnu) ikke angivet konsistente parametre." #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "Kan ikke finde gitterdefinition!" #: ../energyforces.py:15 msgid "Output:" msgstr "Uddata:" #: ../energyforces.py:44 msgid "Save output" msgstr "Gem uddata" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "Potentiel energi og kræfter" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "Beregn potentiel energi og kræfter pÃ¥ alle atomer" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "Skriv kræfter pÃ¥ atomerne" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "Potentiel energi:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/atom\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "Kræfter:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "Konstruér et grafénlag eller et grafénnanobÃ¥nd. Et nanobÃ¥nd kan eventuelt\n" "mættes med hydrogen (eller et andet grundstof)." #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "Grafén" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "Struktur: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "Uendeligt lag" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "Umættet bÃ¥nd" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "Mættet bÃ¥nd" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "Orientering: " #: ../graphene.py:58 msgid "zigzag" msgstr "zigzag" #: ../graphene.py:58 msgid "armchair" msgstr "lænestol" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " Bindingslængde: " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "Mætning: " #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "Bredde: " #: ../graphene.py:97 msgid " Length: " msgstr " Længde: " #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "Vakuum: " #: ../graphene.py:153 msgid " No element specified!" msgstr " Intet grundstof angivet!" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "Angiv venligst en konsistent samling atomer. " #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" "Symboler:\n" "e: total energi\n" "epot: potentiel energi\n" "ekin: kinetisk energi\n" "fmax: maksimal kraft\n" "fave: gennemsnitlig kraft\n" "R[n,0-2]: position af atom nummer n\n" "d(n1,n1): afstand mellem to atomer n1 og n2\n" "i: nuværende billedes nummer\n" "E[i]: energi af billede nummer i\n" "F[n,0-2]: kraft pÃ¥ atom nummer n\n" "V[n,0-2]: hastighed af atom nummer n\n" "M[n]: magnetisk moment af atom nummer n\n" "A[0-2,0-2]: enhedscellevektorer\n" "s: vejlængde\n" "a(n1,n2,n3): vinkel mellem atomerne n1, n2 and n3, centreret pÃ¥ n2\n" "dih(n1,n2,n3,n4): dihedral vinkel mellem n1, " "n2, n3 og n4\n" "T: temperatur (K)" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "Graf" #: ../graphs.py:46 msgid "Save" msgstr "Gem" #: ../graphs.py:47 msgid "Clear" msgstr "Ryd" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "Gem data til fil …" #: ../gui.py:286 msgid "Automatic" msgstr "Automatisk" #: ../gui.py:304 msgid "Open ..." msgstr "Ã…bn …" #: ../gui.py:305 msgid "Choose parser:" msgstr "Vælg fortolker:" #: ../gui.py:416 msgid "_File" msgstr "_Fil" #: ../gui.py:417 msgid "_Open" msgstr "_Ã…bn" #: ../gui.py:418 msgid "_New" msgstr "_Ny" #: ../gui.py:419 msgid "_Save" msgstr "_Gem" #: ../gui.py:421 msgid "_Quit" msgstr "_Afslut" #: ../gui.py:423 msgid "_Edit" msgstr "_Redigér" #: ../gui.py:424 msgid "Select _all" msgstr "Vælg _alle" #: ../gui.py:425 msgid "_Invert selection" msgstr "_Omvend markering" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "Vælg _fastgjorte atomer" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "Vælg _immobile atomer" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "Skjul markerede atomer" #: ../gui.py:434 msgid "Show selected atoms" msgstr "Vis markerede atomer" #: ../gui.py:436 msgid "_Modify" msgstr "_Ændr" #: ../gui.py:437 msgid "_Add atoms" msgstr "_Tilføj atomer" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "_Slet markerede atomer" #: ../gui.py:441 msgid "_First image" msgstr "_Første billede" #: ../gui.py:442 msgid "_Previous image" msgstr "_Forrige billede" #: ../gui.py:443 msgid "_Next image" msgstr "_Næste billede" #: ../gui.py:444 msgid "_Last image" msgstr "_Sidste billede" #: ../gui.py:446 msgid "_View" msgstr "_Vis" #: ../gui.py:447 msgid "Show _unit cell" msgstr "Vis _enhedscelle" #: ../gui.py:449 msgid "Show _axes" msgstr "Vis _akser" #: ../gui.py:450 msgid "Show _bonds" msgstr "Vis _bindinger" #: ../gui.py:452 msgid "Show _velocities" msgstr "Vis _hastigheder" #: ../gui.py:454 msgid "Show _forces" msgstr "Vis _kræfter" #: ../gui.py:456 msgid "Show _Labels" msgstr "Vis _etiketter" #: ../gui.py:457 msgid "_None" msgstr "_Ingen" #: ../gui.py:458 msgid "Atom _Index" msgstr "Atom_indeks" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "_Magnetiske momenter" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "_Kemisk symbol" #: ../gui.py:461 msgid "_Initial Charges" msgstr "_Startladninger" #: ../gui.py:464 msgid "Quick Info ..." msgstr "Hurtig info …" #: ../gui.py:465 msgid "Repeat ..." msgstr "Gentag …" #: ../gui.py:466 msgid "Rotate ..." msgstr "Rotér …" #: ../gui.py:467 msgid "Colors ..." msgstr "Farver …" #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "Fokusér" #: ../gui.py:470 msgid "Zoom in" msgstr "Zoom ind" #: ../gui.py:471 msgid "Zoom out" msgstr "Zoom ud" #: ../gui.py:472 msgid "Change View" msgstr "Skift perspektiv" #: ../gui.py:474 msgid "Reset View" msgstr "Nulstil perspektiv" #: ../gui.py:475 msgid "xy-plane" msgstr "xy-plan" #: ../gui.py:476 msgid "yz-plane" msgstr "yz-plan" #: ../gui.py:477 msgid "zx-plane" msgstr "zx-plan" #: ../gui.py:478 msgid "yx-plane" msgstr "yx-plan" #: ../gui.py:479 msgid "zy-plane" msgstr "zy-plan" #: ../gui.py:480 msgid "xz-plane" msgstr "xz-plan" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "a2,a3-plan" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "a3,a1-plan" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "a1,a2-plan" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "a3,a2-plan" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "a1,a3-plan" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "a2,a1-plan" #: ../gui.py:487 msgid "Settings ..." msgstr "Indstillinger …" #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "_Værktøjer" #: ../gui.py:495 msgid "Graphs ..." msgstr "Grafer …" #: ../gui.py:496 msgid "Movie ..." msgstr "Film …" #: ../gui.py:497 msgid "Expert mode ..." msgstr "Eksperttilstand …" #: ../gui.py:498 msgid "Constraints ..." msgstr "Begrænsninger …" # gemmer et billede af atomerne #: ../gui.py:499 msgid "Render scene ..." msgstr "Tegn struktur …" #: ../gui.py:500 msgid "_Move atoms" msgstr "_Flyt atomer" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "_Rotér atomer" #: ../gui.py:502 msgid "NE_B" msgstr "NE_B" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "K_ompressibilitetsmodul" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "_Byg" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "_Krystal" #: ../gui.py:508 msgid "_Surface slab" msgstr "_Overflade" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "_Nanopartikel" #: ../gui.py:511 msgid "Nano_tube" msgstr "Nano_rør" #: ../gui.py:514 msgid "_Calculate" msgstr "_Beregn" #: ../gui.py:515 msgid "Set _Calculator" msgstr "Angiv _beregner" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "_Energi og kræfter" #: ../gui.py:517 msgid "Energy Minimization" msgstr "Energiminimering" #: ../gui.py:520 msgid "_Help" msgstr "_Hjælp" #: ../gui.py:521 msgid "_About" msgstr "_Om" #: ../gui.py:525 msgid "Webpage ..." msgstr "Webside …" #. Host window will never be shown #: ../images.py:192 msgid "Constraints discarded" msgstr "Begrænsninger fjernet" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "Begrænsninger pÃ¥ nær FixAtoms er blevet fjernet." #: ../modify.py:19 msgid "No atoms selected!" msgstr "Ingen atomer markeret!" #: ../modify.py:22 msgid "Modify" msgstr "Ændr" #: ../modify.py:25 msgid "Change element" msgstr "Skift grundstof" #: ../modify.py:28 msgid "Tag" msgstr "Mærke" #: ../modify.py:30 msgid "Moment" msgstr "Moment" #: ../movie.py:11 msgid "Movie" msgstr "Film" #: ../movie.py:12 msgid "Image number:" msgstr "Billednummer:" #: ../movie.py:18 msgid "First" msgstr "Første" #: ../movie.py:19 msgid "Back" msgstr "Tilbage" #: ../movie.py:20 msgid "Forward" msgstr "Fremad" #: ../movie.py:21 msgid "Last" msgstr "Sidste" #: ../movie.py:23 msgid "Play" msgstr "Afspil" #: ../movie.py:24 msgid "Stop" msgstr "Stop" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Pendul" #: ../movie.py:41 msgid " Frame rate: " msgstr " Billedrate: " #: ../movie.py:41 msgid " Skip frames: " msgstr " Overspring billeder: " #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" "Opret en nanopartikel enten ved at angive antallet af lag, eller ved\n" "brug af Wulffkonstruktion. Tryk pÃ¥ knappen [Hjælp] for at fÃ¥\n" "instruktioner om hvordan retninger angives.\n" "\n" "ADVARSEL: Wulffkonstruktion fungerer i øjeblikket kun med kubiske " "krystaller!\n" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" "\n" "Nanopartikelmodulet konstruerer en nanopartikel eller klynge med en\n" "given krystalstruktur.\n" "\n" "1) Vælg grundstoffet, krystalstrukturen og gitterkonstanterne.\n" " Knappen [Hent struktur] vil finde data for et givet grundstof.\n" "\n" "2) Vælg om du vil angive antallet af lag i hver retning, eller om du\n" " vil benytte en Wulffkonstruktion. I sidstnævnte tilfælde skal du\n" " angive overfladeenergier for hver retning samt klyngens størrelse.\n" "\n" "Hvordan retninger angives\n" "-------------------------\n" "\n" "Første gang en retning dukker op, fortolkes den som en hel familie af\n" "retninger – f.eks. dækker (0,0,1) ogsÃ¥ (1,0,0), (-1,0,0) osv. Hvis en af\n" "disse retninger angives igen, vil anden specifikation særligt gælde\n" "denne specifikke retning. Derfor er rækkefølgen ikke ligegyldig, og du kan\n" "omarrangere retningerne med knapperne [Op] og [Ned]. Du kan ogsÃ¥ tilføje in " "ny retning – husk at trykke [Tilføj], eller den vil ikke blive inkluderet.\n" "\n" "Eksempel: (1,0,0), (1,1,1), (0,0,1) ville angive familien {100} af " "retninger,\n" "{111}-familien og sÃ¥ (001) retningen, der tilsidesætter værdien givet til\n" "selve familien af retninger.\n" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "Face centered cubic (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "Body centered cubic (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "Simpel kubisk (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "Heksagonal tætpakket (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "Grafit" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "Nanopartikel" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "Hent struktur" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "Struktur:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "Gitterkonstant: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "Lagspecifikation" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Wulffkonstruktion" #: ../nanoparticle.py:166 msgid "Method: " msgstr "Metode: " #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "Tilføj ny retning:" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "Information om den konstruerede klynge:" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "Antal atomer: " #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " Diameter omtrent: " #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "Anvend automatisk" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "Konstruktion af nanopartikel." #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "Anvend" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "OK" #: ../nanoparticle.py:227 msgid "Up" msgstr "Op" #: ../nanoparticle.py:228 msgid "Down" msgstr "Ned" #: ../nanoparticle.py:229 msgid "Delete" msgstr "Slet" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "Antal atomer" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "Diameter" #: ../nanoparticle.py:279 msgid "above " msgstr "over " #: ../nanoparticle.py:279 msgid "below " msgstr "under " #: ../nanoparticle.py:279 msgid "closest " msgstr "tættest pÃ¥ " #: ../nanoparticle.py:282 msgid "Smaller" msgstr "Mindre" #: ../nanoparticle.py:283 msgid "Larger" msgstr "Større" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "Vælg størrelse med:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "atomer" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "Afrunding: Hvis eksakt størrelse ikke kan opnÃ¥s, sÃ¥ vælg størrelsen:" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "Overfladeenergier (som energi/areal, IKKE per atom):" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "Antal lag:" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "Mindst et indeks skal være forskelligt fra nul" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "Ugyldige heksagonale indeks" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "Uunderstøttet eller ukendt struktur" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "Grundstof = {0}, struktur = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "Byg et kulstofnanorør ved at angive uprulningsvektoren (n, m).\n" "Bemærk at m <= n.\n" "\n" "Nanorør af andre grundstoffer kan bygges ved at angive hvilket grundstof,\n" "samt bindingslængde." #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" "{natoms} atomer, diameter: {diameter:.3f} Ã…, samlet længde: " "{total_length:.3f} Ã…" #: ../nanotube.py:40 msgid "Nanotube" msgstr "Nanorør" #: ../nanotube.py:43 msgid "Bond length: " msgstr "Bindingslængde: " #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "Vælg oprulningsvektor (n,m) og rørlængde:" #: ../nanotube.py:49 msgid "Length:" msgstr "Længde:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "Enkelt billede indlæst." #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "Billede %d indlæst (0 – %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "Enhedscelle fastholdes." #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "Enhedscelle varierer." #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "Antal atomer: %d.\n" "\n" "Enhedscelle:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "Dette billede har ingen atomer." #: ../quickinfo.py:53 msgid "no" msgstr "nej" #: ../quickinfo.py:53 msgid "yes" msgstr "ja" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "Periodisk: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "Volumen: " # gemmer et billede af atomerne #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "Tegn nuværende struktur i povray …" #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "Tegner %d atomer." #: ../render.py:26 msgid "Size" msgstr "Størrelse" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "Linjebredde" #: ../render.py:32 msgid "Ã…ngström" msgstr "Ã…ngström" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "Tegn begrænsninger" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "Tegn _enhedscelle" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "Basisnavn for output: " #: ../render.py:43 msgid "Output filename: " msgstr "Outputfilnavn: " #: ../render.py:48 msgid "Atomic texture set:" msgstr "Atomtekstursæt:" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "Kameratype: " #: ../render.py:56 msgid "Camera distance" msgstr "Kameraafstand" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "Tegn det aktuelle billede" #: ../render.py:60 msgid "Render all frames" msgstr "Tegn alle billeder" #: ../render.py:65 msgid "Run povray" msgstr "Kør povray" #: ../render.py:66 msgid "Keep povray files" msgstr "Behold povray-filer" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "Vis outputvindue" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "Gennemsigtig baggrund" #: ../render.py:72 msgid "Render" msgstr "Tegn" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" " Teksturer kan bruges til at fremhæve forskellige dele af en\n" " atomar struktur. Dette vindue anvender standardteksturen pÃ¥ hele\n" " strukturen, og anvender valgfrit en anden tekstur til bestemte\n" " atomer som kan markeres med musen.\n" " En alternativ markeringsmetode baseret pÃ¥ booleske udtryk\n" " i et tekstfelt kan bruges med variabelnavnene x, y, z eller Z.\n" " For eksempel vil udtrykket Z == 11 and x > 10 and y > 10\n" " markere alle natriumatomer med x- eller y-koordinater\n" " større end 10. I begge tilfælde vil knappen med teksten\n" " \"Opret ny tekstur fra markering\" tillade ændring af\n" " attributterne for den nuværende markering.\n" " " #: ../render.py:206 msgid "Width" msgstr "Bredde" #: ../render.py:206 msgid " Height" msgstr " Højde" #: ../render.py:228 msgid "Angstrom " msgstr "Ã…ngström " #: ../render.py:238 msgid "Set" msgstr "Angiv" #: ../render.py:242 msgid " Filename: " msgstr " Filnavn: " #: ../render.py:254 msgid " Default texture for atoms: " msgstr " Standardtekstur for atomer: " #: ../render.py:255 msgid " transparency: " msgstr " gennemsigtighed: " #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "Definér atommarkering til ny tekstur:" #: ../render.py:260 msgid "Select" msgstr "Vælg" #: ../render.py:264 msgid "Create new texture from selection" msgstr "Opret ny tekstur fra markering" #: ../render.py:267 msgid "Help on textures" msgstr "Hjælp til teksturer" #: ../render.py:284 msgid " Camera distance" msgstr " Kameraafstand" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "Tegn alle %d billeder" #: ../render.py:298 msgid "Run povray " msgstr "Kør povray " #: ../render.py:301 msgid "Keep povray files " msgstr "Behold povray-filer " #: ../render.py:389 msgid " transparency: " msgstr " gennemsigtighed: " #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" "Kan ikke oprette ny tekstur! Der skal være atomer markeret for at kunne " "oprette nyt materiale!" #: ../repeat.py:10 msgid "Repeat" msgstr "Gentag" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "Gentag atomer:" #: ../repeat.py:15 msgid "Set unit cell" msgstr "Angiv enhedscelle" #: ../rotate.py:13 msgid "Rotate" msgstr "Rotér" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "Rotationsvinkler:" #: ../rotate.py:18 msgid "Update" msgstr "Opdatér" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "Bemærk:\n" "Du kan frit rotere med\n" "musen ved at holde\n" "musetast 2 nede." #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" "Tilføj \"@n\" i navnet for at skrive billede nummer \"n\" frem for\n" "nuværende billede. Tilføj \"@start:stop\" eller \"@start:stop:trin\" hvis\n" "du vil skrive et interval af billeder. Du kan udelade \"start\" og\n" "\"stop\", sÃ¥ \"navn@:\" vil give dig alle billeder. Negative tal regnes\n" "fra sidste billede. Eksempler: \"navn@-1\": sidste billede, \"name@-2:\": de " "to\n" "sidste." #: ../save.py:26 msgid "Save ..." msgstr "Gem …" #: ../settings.py:10 msgid "Settings" msgstr "Indstillinger" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "Begrænsninger:" #: ../settings.py:16 msgid "release" msgstr "frigiv" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr " markerede atomer" # I dette tilfælde er constrain = fastgøre #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "Fastgør immobile atomer" #: ../settings.py:19 msgid "Clear all constraints" msgstr "Ryd alle begrænsninger" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "Synlighed:" #: ../settings.py:23 msgid "Hide" msgstr "Skjul" #: ../settings.py:25 msgid "show" msgstr "vis" #: ../settings.py:27 msgid "View all atoms" msgstr "Vis alle atomer" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "Diverse:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "Skalér atomradier:" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " (kør simulation igen)" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (fortsæt simulation)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "Vælg startkonfiguration:" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "Der er i øjeblikket indlæst %i konfigurationer." #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "Vælg hvilken, der skal bruges som begyndelseskonfiguration" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "Første konfiguration %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "Konfiguration nummer " #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "Sidste konfiguration %s." #: ../simulation.py:92 msgid "Run" msgstr "Kør" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "Ingen beregner: Brug Beregn/Angiv beregner i menuen." #: ../simulation.py:123 msgid "No atoms present" msgstr "Ingen atomer til stede" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr " mærke=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr " mom={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr " q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "dihedral" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" " Brug denne dialog til at oprette overflader. Vælg grundstoffet ved at \n" "skrive det kemiske symbol eller atomnummeret i boksen. Vælg sÃ¥ den ønskede\n" "overfladestruktur. Bemærk at visse strukturer kan oprettes med bÃ¥de en\n" "ortogonal og en ikke-ortogonal enhedscelle; i disse tilfælde vil\n" "den ikke-ortogonale enhedscelle indeholde færre atomer.\n" "\n" " Hvis strukturen svarer til den eksperimentelle krystalstruktur, kan\n" "du slÃ¥ gitterkonstanten op. Ellers skal du angive den selv." #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(110)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10–10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "DIAMANT(100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "diamant" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "DIAMANT(111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "Overflade" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "Ortogonal celle:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "Gitterkonstant:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "Størr.:\tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "Oprettelse af overflade." #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "Indtast venligst en lige værdi for ortogonal celle" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "Indtast venligst en værdi delelig med 3 for ortogonal celle" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr " Vakuum: {} Ã…." #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "{symbol} {surf}-overflade med {natoms} atom.{vacuum}" msgstr[1] "{symbol} {surf}-overflade med {natoms} atomer.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "Fejl" #: ../ui.py:53 msgid "Version" msgstr "Version" #: ../ui.py:54 msgid "Web-page" msgstr "Webside" #: ../ui.py:55 msgid "About" msgstr "Om" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "Hjælp" #: ../widgets.py:11 msgid "Element:" msgstr "Grundstof:" #: ../widgets.py:39 msgid "No element specified!" msgstr "Intet grundstof angivet!" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "FEJL: ugyldigt grundstof!" #: ../widgets.py:75 msgid "No Python code" msgstr "Ingen Pythonkode" #~ msgid "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgstr "" #~ "For at kunne foretage de fleste typer atomare beregninger, skal der\n" #~ "først tilknyttes et beregnerobject (Calculator). ASE tilbyder\n" #~ "adskillige beregnere, som understøtter forskellige grundstoffer, og\n" #~ "implementerer forskellige fysiske modeller for atomernes vekselvirkning." #~ msgid "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgstr "" #~ "Lennard–Jones-parpotentialet er en af de simpleste mulige modeller for\n" #~ "atomare interaktioner, og er især nyttigt til ædelgasser og\n" #~ "modelsystemer.\n" #~ "\n" #~ "Interaktionerne beskrives ved en interaktionslængde og en\n" #~ "interaktionsstyrke." #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimized to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgstr "" #~ "EMT-potentialet er et mangepartikelpotential, som giver en god\n" #~ "beskrivelse af de sene overgangsmetaller som danner FCC-strukturer.\n" #~ "Grundstofferne som beskrives af hoveddelen af EMT-parametrene er Al,\n" #~ "Ni, Cu, Pd, Ag, Pt og Au. Dog er Al-potentialet ikke egnet til\n" #~ "anvendelse i materialevidenskab, da energien for fejl i " #~ "krystalstrukturen\n" #~ "er forkert.\n" #~ "\n" #~ "Der medfølger en række standardparametre.\n" #~ "\n" #~ "Standardparametre:\n" #~ "\n" #~ "Standardparametrene som udgivet i K. W. Jacobsen,\n" #~ "P. Stoltze og J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternativ Cu, Ag og Au:\n" #~ "\n" #~ "Et alternativt sæt parametre for Cu, Ag og Au, genoptimeret til\n" #~ "eksperimentelle data inklusive energier for krystalfejl af Torben\n" #~ "Rasmussen (delvis upubliceret).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parametre for ruthenium som udgivet i J. Gavnholt og\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metalglas:\n" #~ "\n" #~ "Parametre for MgCu- og CuZr-metalglas. MgCu-parametrene findes i\n" #~ "N. P. Bailey, J. Schiøtz anog K. W. Jacobsen, Phys. Rev. B 69, \n" #~ "144205 (2004).\n" #~ "CuZr findes i A. Paduraru, A. Kenoufi, N. P. Bailey og\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgstr "" #~ "EMT-potentialet er et mangepartikelpotential, som giver en god\n" #~ "beskrivelse af de sene overgangsmetaller som danner FCC-strukturer.\n" #~ "Grundstofferne som beskrives af hoveddelen af EMT-parametrene er Al,\n" #~ "Ni, Cu, Pd, Ag, Pt og Au. Yderligere tillader denne implementation\n" #~ "brugen af H-, N-, O- og C-adatomer, selvom beskrivelsen af disse\n" #~ "sandsynligvis er dÃ¥rlig.\n" #~ "\n" #~ "Dette er ASE's implementation af EMT. For støre simulationer er\n" #~ "ASAP-implementationen bedre; denne implementation bruges hovedsageligt\n" #~ "for at tilbyde en EMT-beskrivelse nÃ¥r ASAP ikke er installeret.\n" #~ msgid "" #~ "The EAM/ADP potential is a many-body potential\n" #~ "implementation of the Embedded Atom Method and\n" #~ "equipotential plus the Angular Dependent Potential,\n" #~ "which is an extension of the EAM to include\n" #~ "directional bonds. EAM is suited for FCC metallic\n" #~ "bonding while the ADP is suited for metallic bonds\n" #~ "with some degree of directionality.\n" #~ "\n" #~ "For EAM see M.S. Daw and M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "For ADP see Y. Mishin, M.J. Mehl, and\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029--4041.\n" #~ "\n" #~ "Data for the potential is contained in a file in either LAMMPS Alloy\n" #~ "or ADP format which need to be loaded before use. The Interatomic\n" #~ "Potentials Repository Project at http://www.ctcms.nist.gov/potentials/\n" #~ "contains many suitable potential files.\n" #~ "\n" #~ "For large simulations the LAMMPS calculator is more\n" #~ "suitable; this implementation is mainly to make EAM\n" #~ "available when LAMMPS is not installed or to develop\n" #~ "new EAM/ADP poentials by matching results using ab\n" #~ "initio.\n" #~ msgstr "" #~ "EAM/ADP potentialet er ee mangelegme-potential\n" #~ "implementering af Embedded Atom Method og\n" #~ "equipotential plus Angular Dependent Potential,\n" #~ "hvilket er en udvidelse til EAM de inkluderer\n" #~ "retningsafhængige bindinger. EAM er velegnet til FCC metalliske\n" #~ "bindinger og ADP er velegnet til metalliske bindinger\n" #~ "med nogen grad af retningsafhængighed.\n" #~ "\n" #~ "For EAM se M.S. Daw and M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "For ADP se Y. Mishin, M.J. Mehl, and\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029–4041.\n" #~ "\n" #~ "Data for potentialet er indeholdt i en fil i enten LAMMPS Alloy\n" #~ "eller ADP formatet som skal indlæses før brug. Interatomic\n" #~ "Potentials Repository Project (http://www.ctcms.nist.gov/potentials/)\n" #~ "indeholder mange passende potential filer.\n" #~ "\n" #~ "For store simulationer er LAMMPS beregneren mere\n" #~ "passende; denne implementation er hovedsageligis inkluderet for at\n" #~ "gøre EAM tilgængelig nÃ¥r LAMMPS ikke er installeret eller for at udvikle\n" #~ "nye EAM/ADP poentialer ved at matche ab initio resultater.\n" #~ msgid "" #~ "The Brenner potential is a reactive bond-order potential for\n" #~ "carbon and hydrocarbons. As a bond-order potential, it takes\n" #~ "into account that carbon orbitals can hybridize in different\n" #~ "ways, and that carbon can form single, double and triple\n" #~ "bonds. That the potential is reactive means that it can\n" #~ "handle gradual changes in the bond order as chemical bonds\n" #~ "are formed or broken.\n" #~ "\n" #~ "The Brenner potential is implemented in Asap, based on a\n" #~ "C implentation published at http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "The potential is documented here:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgstr "" #~ "Brennerpotentialet er et reaktivt bindingsordenspotential til kulstof og " #~ "kulbrinter. Som et bindingsordenspotential tager det højde for at " #~ "kulstoforbitaler kan hybridisere pÃ¥ forskellige mÃ¥der, og at kulstof kan " #~ "danne enkelt- dobbelt- og tripelbindinger. At potentialet er reaktivt " #~ "betyder, at det kan beskrive gradvise ændringer i bindingsorden " #~ "efterhÃ¥nden som kemiske bindinger dannes eller brydes.\n" #~ "\n" #~ "Brennerpotentialet er implementeret i ASAP baseret pÃ¥ en C-implementation " #~ "publiceret pÃ¥ siden http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "Potentialet dokumenteres her:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783–802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgid "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgstr "" #~ "GPAW implementerer tæthedsfunktionalteori med en Gitterbaseret\n" #~ "repræsentation af bølgefunktioner i det reelle rum, samt\n" #~ "Projector Augmented Wave-metoden til behandling\n" #~ "af regionen omkring atomkerner.\n" #~ msgid "" #~ "FHI-aims is an external package implementing density\n" #~ "functional theory and quantum chemical methods using\n" #~ "all-electron methods and a numeric local orbital basis set.\n" #~ "For full details, see http://www.fhi-berlin.mpg.de/aims/\n" #~ "or Comp. Phys. Comm. v180 2175 (2009). The ASE\n" #~ "documentation contains information on the keywords and\n" #~ "functionalities available within this interface.\n" #~ msgstr "" #~ "FHI-aims er en ekstern pakke, der implementerer tæthedsfunktionalteori\n" #~ "og kvantekemiske metoder ved brug af \"all-electron\"-metoder og et\n" #~ "numerisk lokaliseret atomart basissæt. De fulde detaljer kan findes pÃ¥\n" #~ "http://www.fhi-berlin.mpg.de/aims/ eller i Comp. Phys. Comm. v180 2175\n" #~ "(2009). ASE-dokumentationen indeholder oplysninger om nøgleord og\n" #~ "funktioner, som er tilgængelige i denne grænseflade.\n" #~ msgid "" #~ "WARNING:\n" #~ "Your system seems to have more than zero but less than\n" #~ "three periodic dimensions. Please check that this is\n" #~ "really what you want to compute. Assuming full\n" #~ "3D periodicity for this calculator." #~ msgstr "" #~ "ADVARSEL:\n" #~ "Dit system skal have flere end nul men mindre end tre periodiske\n" #~ "dimensioner. Kontrollér venligst at dette virkelig er hvad du godt\n" #~ "vil beregne. Antager fuld 3D-periodicitet for denne beregner." #~ msgid "" #~ "VASP is an external package implementing density\n" #~ "functional functional theory using pseudopotentials\n" #~ "or the projector-augmented wave method together\n" #~ "with a plane wave basis set. For full details, see\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgstr "" #~ "VASP er en ekstern pakke, der implementerer tæthedsfunktionalteori med\n" #~ "pseudopotentialer eller PAW-metoden (projector augmented wave method)\n" #~ "sammen med en planbølgebasis. De fulde detaljer kan findes pÃ¥\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgid "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgstr "Standard (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgid "Alternative Cu, Ag and Au" #~ msgstr "Alternativ Cu, Ag og Au" #~ msgid "Ruthenium" #~ msgstr "Ruthenium" #~ msgid "CuMg and CuZr metallic glass" #~ msgstr "Metallisk glas med CuMg og CuZr" #~ msgid "Select calculator" #~ msgstr "Vælg beregner" #~ msgid "Calculator:" #~ msgstr "Beregner:" #~ msgid "None" #~ msgstr "Ingen" #~ msgid "Lennard-Jones (ASAP)" #~ msgstr "Lennard–Jones (ASAP)" #~ msgid "Setup" #~ msgstr "Opsætning" #~ msgid "EMT - Effective Medium Theory (ASAP)" #~ msgstr "EMT – Effective Medium Theory (ASAP)" #~ msgid "EMT - Effective Medium Theory (ASE)" #~ msgstr "EMT – Effective Medium Theory (ASE)" #~ msgid "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgstr "EAM – Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgid "Brenner Potential (ASAP)" #~ msgstr "Brenner-potentialet (ASAP)" #~ msgid "Density Functional Theory (GPAW)" #~ msgstr "Tæthedsfunktionalteori (GPAW)" #~ msgid "Density Functional Theory (FHI-aims)" #~ msgstr "Tæthedsfunktionalteori (FHI-aims)" #~ msgid "Density Functional Theory (VASP)" #~ msgstr "Tæthedsfunktionalteori (VASP)" #~ msgid "Check that the calculator is reasonable." #~ msgstr "Kontrollér at beregneren er rimelig." #~ msgid "ASAP is not installed. (Failed to import asap3)" #~ msgstr "ASAP er ikke installeret. (Kunne ikke importere asap3)" #~ msgid "You must set up the Lennard-Jones parameters" #~ msgstr "Du skal indstille Lennard–Jones-parametrene" #~ msgid "Could not create useful Lennard-Jones calculator." #~ msgstr "Kunne ikke oprette en nyttig Lennard–Jones-beregner." #~ msgid "Could not attach EMT calculator to the atoms." #~ msgstr "Kunne ikke knytte EMT-beregner til atomerne." #~ msgid "You must set up the EAM parameters" #~ msgstr "Du skal angive EAM-parametrene" #~ msgid "GPAW is not installed. (Failed to import gpaw)" #~ msgstr "GPAW er ikke installeret. (Kunne ikke importere gpaw)" #~ msgid "You must set up the GPAW parameters" #~ msgstr "Du skal angive GPAW-parametrene" #~ msgid "You must set up the FHI-aims parameters" #~ msgstr "Du skal angive FHI-aims-parametrene" #~ msgid "You must set up the VASP parameters" #~ msgstr "Du skal angive VASP-parametrene" #~ msgid "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgstr "Grundstoffet %(sym)s tillades ikke af \"%(name)s\"-beregneren" #~ msgid "Info" #~ msgstr "Info" #~ msgid "Lennard-Jones parameters" #~ msgstr "Lennard–Jones-parametre" #~ msgid "Specify the Lennard-Jones parameters here" #~ msgstr "Angiv Lennard–Jones-parametrene her" #~ msgid "Epsilon (eV):" #~ msgstr "Epsilon (eV):" #~ msgid "Sigma (Ã…):" #~ msgstr "Sigma (Ã…):" #~ msgid "Shift to make smooth at cutoff" #~ msgstr "Skift for at blødgøre ved afskæring" #~ msgid "EAM parameters" #~ msgstr "EAM-parametre" #~ msgid "Import Potential" #~ msgstr "Importér potential" #~ msgid "You need to import the potential file" #~ msgstr "Du skal importere potentialfilen" #~ msgid "Import .alloy or .adp potential file ... " #~ msgstr "Importér .alloy- eller .adp-potentialfil …" #~ msgid "GPAW parameters" #~ msgstr "GPAW-parametre" #~ msgid "%i atoms.\n" #~ msgstr "%i atomer.\n" #~ msgid "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgstr "Ortogonal enhedscelle: %.2f x %.2f x %.2f Ã…." #~ msgid "Non-orthogonal unit cell:\n" #~ msgstr "Ikke-ortogonal enhedscelle:\n" #~ msgid "Exchange-correlation functional: " #~ msgstr "Udvekslings- og korrelationsfunktional: " #~ msgid "Grid spacing" #~ msgstr "Gitterafstand" #~ msgid "Grid points" #~ msgstr "Gitterpunkter" #~ msgid "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgstr "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgid "k-points k = (" #~ msgstr "k-punkter k = (" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgstr "k-punkter x størrelse: (%.1f, %.1f, %.1f) Ã…" #~ msgid "Spin polarized" #~ msgstr "Spinpolariseret" #~ msgid "FD - Finite Difference (grid) mode" #~ msgstr "FD – finite difference-tilstand (gitter)" #~ msgid "LCAO - Linear Combination of Atomic Orbitals" #~ msgstr "LCAO – linearkombination af atomare orbitaler" #~ msgid "Mode: " #~ msgstr "Tilstand: " #~ msgid "sz - Single Zeta" #~ msgstr "sz – enkelt-zeta" #~ msgid "szp - Single Zeta polarized" #~ msgstr "szp – enkelt-zeta polariseret" #~ msgid "dzp - Double Zeta polarized" #~ msgstr "dzp – dobbelt-zeta polariseret" #~ msgid "Basis functions: " #~ msgstr "Basisfunktioner: " #~ msgid "Non-standard mixer parameters" #~ msgstr "Særlige mikserparametre" #~ msgid "FHI-aims parameters" #~ msgstr "FHI-aims-parametre" #~ msgid "Periodic geometry, unit cell is:\n" #~ msgstr "Periodisk geometri; enhedscellen er:\n" #~ msgid "Non-periodic geometry.\n" #~ msgstr "Ikke-periodisk geometri.\n" # XXX ikke Hirschfeld? #~ msgid "Hirshfeld-based dispersion correction" #~ msgstr "Hirshfeld-baseret dispersionskorrektion" #~ msgid "Spin / initial moment " #~ msgstr "Spin / startmoment " #~ msgid " Charge" #~ msgstr " Ladning" #~ msgid " Relativity" #~ msgstr " Relativitet" #~ msgid " Threshold" #~ msgstr " Tærskel" #~ msgid "Self-consistency convergence:" #~ msgstr "Selfkonsistenskonvergens:" #~ msgid "Compute forces" #~ msgstr "Beregn kræfter" #~ msgid "Energy: " #~ msgstr "Energi: " #~ msgid " eV Sum of eigenvalues: " #~ msgstr " eV Sum af egenværdier: " #~ msgid " eV" #~ msgstr " eV" #~ msgid "Electron density: " #~ msgstr "Elektrontæthed: " #~ msgid " Force convergence: " #~ msgstr " Kraftkonvergens: " #~ msgid " eV/Ang " #~ msgstr " eV/Ã… " #~ msgid "Additional keywords: " #~ msgstr "Yderligere nøgleord: " #~ msgid "FHI-aims execution command: " #~ msgstr "Kørselskommando til FHI-aims: " # ?? #~ msgid "Directory for species defaults: " #~ msgstr "Mappe for grundstofstandarder: " #~ msgid "Set Defaults" #~ msgstr "Brug standardværdier" #~ msgid "Import control.in" #~ msgstr "Importér control.in" #~ msgid "Export control.in" #~ msgstr "Eksportér control.in" #~ msgid "Export parameters ... " #~ msgstr "Eksportér parametre …" #~ msgid "Import control.in file ... " #~ msgstr "Importér control.in-fil …" #~ msgid "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgstr "" #~ "Brug venligst faciliteterne i dette vindue til at manipulere nøgleordet: " #~ "%s!" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgstr "" #~ "Kender ikke dette nøgleord: %s\n" #~ "\n" #~ "Kontrollér venligst!\n" #~ "\n" #~ "Hvis du virkelig mener det børe være tilgængeligt, sÃ¥ tilføj det venligst " #~ "øverst i ase/calculators/aims.py." #~ msgid "VASP parameters" #~ msgstr "VASP-parametre" #~ msgid "Periodic geometry, unit cell is: \n" #~ msgstr "Periodisk geometri; enhedscelle er: \n" #~ msgid ") Cutoff: " #~ msgstr ") Afskæring: " #~ msgid " Precision: " #~ msgstr " Præcision: " #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgstr "k-punkter x størrelse: (%.1f, %.1f, %.1f) Ã… " #~ msgid "Smearing: " #~ msgstr "Udjævning: " #~ msgid " order: " #~ msgstr " orden: " #~ msgid " width: " #~ msgstr " bredde: " #~ msgid "Self-consistency convergence: " #~ msgstr "Selfkonsistenskonvergens: " #~ msgid "VASP execution command: " #~ msgstr "Kørselskommando til VASP: " #~ msgid "Import VASP files" #~ msgstr "Importér VASP-filer" #~ msgid "Export VASP files" #~ msgstr "Eksportér VASP-filer" #~ msgid "WARNING: cutoff energy is lower than recommended minimum!" #~ msgstr "" #~ "ADVARSEL: afskæringsenergi er lavere end det anbefalede minimum!" #~ msgid "Import VASP input files: choose directory ... " #~ msgstr "Importér VASP-inputfiler: vælg mappe …" #~ msgid "Export VASP input files: choose directory ... " #~ msgstr "Eksportér VASP-inputfiler: vælg mappe …" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgstr "" #~ "Kender ikke dette nøgleord:: %s\n" #~ "Kontrollér venligst!\n" #~ "\n" #~ "Hvis du virkelig tror det bør være tilgængeligt, sÃ¥ tilføj det venligst " #~ "øverst i ase/calculators/vasp.py." #~ msgid "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display color, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcenter of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgstr "" #~ "\n" #~ " Globale kommandoer virker pÃ¥ alle billeder, eller kun pÃ¥ nuværende " #~ "billede\n" #~ " – tildeling af en global variabel refererer mÃ¥ske ikke til en lokal\n" #~ " – brug \"Nuværende billede\"-knappen til at slÃ¥ anvendelse pÃ¥ alle " #~ "billeder\n" #~ " til eller fra\n" #~ " e:\t\ttotalenergi af et billede\n" #~ " fmax:\tmaksimal kraft i et billede\n" #~ " A:\tenhedscelle\n" #~ " E:\t\ttotalenergi som array for alle billeder\n" #~ " F:\t\talle kræfter i et billede\n" #~ " M:\talle magnetiske momenter\n" #~ " R:\t\talle atompositioner\n" #~ " S:\talle markerede atoms (boolesk array)\n" #~ " D:\talle dynamiske atomer (boolesk array)\n" #~ " eksempler: billede = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atomkommandoer virker pÃ¥ hvert atom (eller en markering) enkeltvis\n" #~ " – disse kan bruge globale kommandoer pÃ¥ højresiden af en ligning\n" #~ " – brug \"kun markerede atomer\" for at begrænse anvendelsen af en " #~ "kommando\n" #~ " x,y,z:\tatomkoordinater\n" #~ " r,g,b:\tatomvisningsfarve; interval er [0..1]\n" #~ " rad:\tatomradius (grafisk)\n" #~ " s:\t\tatom er markeret\n" #~ " d:\t\tatom kan flyttes\n" #~ " f:\t\tkraft\n" #~ " Z:\tatomnummer\n" #~ " m:\tmagnetisk moment\n" #~ " eksempler: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Specialkommandoer og objekter:\n" #~ " sa,cf:\tslÃ¥ begrænsning til markerede atomer/nuværende atomer\n" #~ " til eller fra\n" #~ " frame:\tbillednummer\n" #~ " center:\tcentrerer systemet i dets eksisterende enhedscelle\n" #~ " del S:\tfjern markering\n" #~ " CM:\tmassemidtpunkt\n" #~ " ans[-i]:\ti'te sidst udregnede resultat\n" #~ " exec file: kører kommandoerne i en fil\n" #~ " cov[Z]:(skrivebeskyttet): kovalent radius for atomnummer Z\n" #~ " gui:\tavanceret: python-objekt for gui-vinduet\n" #~ " img:\tavanceret: gui-billeder som objekt\n" #~ " " #~ msgid "Expert user mode" #~ msgstr "Eksperttilstand" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "Velkommen til ASE's eksperttilstand" #~ msgid "Only selected atoms (sa) " #~ msgstr "Kun markerede atomer (sa) " #~ msgid "Only current frame (cf) " #~ msgstr "Kun nuværende billede (cf) " #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "Globalt: Brug A, D, E, M, N, R, S, n, frame; Atomer: Brug a, f, m, s, x, " #~ "y, z, Z " #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** ADVARSEL: filen findes ikke – %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "*** ADVARSEL: Ingen atomer markeret til at arbejde pÃ¥" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** Arbejder kun pÃ¥ markerede atomer" #~ msgid "*** Working on all atoms" #~ msgstr "*** Arbejder pÃ¥ alle atomer" #~ msgid "*** Only working on current image" #~ msgstr "*** Arbejder kun pÃ¥ nuværende billede" #~ msgid "*** Working on all images" #~ msgstr "*** Arbejder pÃ¥ alle billeder" #~ msgid "Save Terminal text ..." #~ msgstr "Gem terminaltekst …" #~ msgid "Cancel" #~ msgstr "Annullér" #~ msgid "Algorithm: " #~ msgstr "Algoritme: " #~ msgid "Convergence criterion: Fmax = " #~ msgstr "Konvergenskriterium: Fmax = " #~ msgid "Max. number of steps: " #~ msgstr "Maksimalt antal trin: " #~ msgid "Pseudo time step: " #~ msgstr "Pseudotidsskridt: " #~ msgid "Energy minimization" #~ msgstr "Energiminimering" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "Minimér energien med hensyn til positionerne." #~ msgid "Running ..." #~ msgstr "Kører …" #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "Minimering AFBRUDT efter %i trin." #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "Løbet tør for hukommelse; overvej at bruge LBFGS i stedet" #~ msgid "Minimization completed in %i steps." #~ msgstr "Minimering fuldført pÃ¥ %i trin." #~ msgid "Progress" #~ msgstr "Fremgang" #~ msgid "Scaling deformation:" #~ msgstr "Skaleringsdeformation:" #~ msgid "Step number %s of %s." #~ msgstr "Trin nummer %s af %s." #~ msgid "Energy minimization:" #~ msgstr "Energiminimering:" #~ msgid "Step number: " #~ msgstr "Trinnummer: " #~ msgid "Fmax: " #~ msgstr "Fmax: " #~ msgid "unknown" #~ msgstr "ukendt" #~ msgid "Status: " #~ msgstr "Status: " #~ msgid "Iteration: " #~ msgstr "Iteration: " #~ msgid "log10(change):" #~ msgstr "log10(skift):" #~ msgid "Wave functions: " #~ msgstr "Bølgefunktioner: " #~ msgid "Density: " #~ msgstr "Tæthed: " #~ msgid "Energy: " #~ msgstr "Energi: " #~ msgid "GPAW version: " #~ msgstr "GPAW-version: " #~ msgid "N/A" #~ msgstr "–" #~ msgid "Memory estimate: " #~ msgstr "Hukommelsesestimat: " #~ msgid "No info" #~ msgstr "Ingen info" #~ msgid "Initializing" #~ msgstr "Klargør" #~ msgid "Positions:" #~ msgstr "Positioner:" #~ msgid "Starting calculation" #~ msgstr "Starter beregning" #~ msgid "unchanged" #~ msgstr "uændret" #~ msgid "Self-consistency loop" #~ msgstr "Selvkonsistensløkke" #~ msgid "Calculating forces" #~ msgstr "Beregner kræfter" #~ msgid " (converged)" #~ msgstr " (konvergeret)" #~ msgid "To get a full traceback, use: ase-gui --verbose" #~ msgstr "Kør ase-gui --verbose for at se det fulde traceback" #~ msgid "No atoms loaded." #~ msgstr "Ingen atomer indlæst." #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC(111) ikke-ortogonal" #~ msgid "FCC(111) orthogonal" #~ msgstr "FCC(111) ortogonal" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC(110) ikke-ortogonal" #~ msgid "BCC(110) orthogonal" #~ msgstr "BCC(110) ortogonal" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC(111) ikke-ortogonal" #~ msgid "BCC(111) orthogonal" #~ msgstr "BCC(111) ortogonal" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP(0001) ikke-ortogonal" #~ msgid "Element: " #~ msgstr "Grundstof: " #~ msgid "a:" #~ msgstr "a:" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% af ideel)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " lag, " #~ msgid " Ã… vacuum" #~ msgstr " Ã… vakuum" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\tEndnu ingen størrelsesoplysninger." #~ msgid "%i atoms." #~ msgstr "%i atomer." #~ msgid "Invalid element." #~ msgstr "Ugyldigt grundstof." #~ msgid "No structure specified!" #~ msgstr "Ingen struktur angivet!" # %s ~ BCC #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "%(struct)s-gitterkonstant ukendt for %(element)s." #~ msgid "By atomic number, user specified" #~ msgstr "Efter atomnummer, brugerdefineret" #~ msgid "By coordination" #~ msgstr "Efter koordination" #~ msgid "Manually specified" #~ msgstr "Manuelt angivet" #~ msgid "All the same color" #~ msgstr "Alle med samme farve" #~ msgid "This should not be displayed in forces!" #~ msgstr "Dette bør ikke blive vist ved kræfter!" #~ msgid "Min: " #~ msgstr "Min: " #~ msgid " Max: " #~ msgstr " Maks: " #~ msgid " Steps: " #~ msgstr " Trin: " #~ msgid "This should not be displayed!" #~ msgstr "Dette bør ikke blive vist!" #~ msgid "Create a color scale:" #~ msgstr "Opret en farveskala:" #~ msgid "Black - white" #~ msgstr "Sort – hvid" #~ msgid "Black - red - yellow - white" #~ msgstr "Sort – rød – gul – hvid" #~ msgid "Black - green - white" #~ msgstr "Sort – grøn – hvid" #~ msgid "Black - blue - cyan" #~ msgstr "Sort – blÃ¥ – cyan" #~ msgid "Blue - white - red" #~ msgstr "BlÃ¥ – hvid – rød" #~ msgid "Hue" #~ msgstr "Farvetone" #~ msgid "Named colors" #~ msgstr "Navngivne farver" #~ msgid "Create" #~ msgstr "Opret" #~ msgid "ERROR" #~ msgstr "FEJL" #~ msgid "ERR" #~ msgstr "FEJL" #~ msgid "Incorrect color specification" #~ msgstr "Forkert farveangivelse" #~ msgid " selected atoms:" #~ msgstr " markerede atomer:" #~ msgid "Close" #~ msgstr "Luk" #~ msgid "Debug" #~ msgstr "Fejlsøgning" #~ msgid "Bug Detected" #~ msgstr "Fejl fundet" #~ msgid "A programming error has been detected." #~ msgstr "Der blev fundet en programmeringsfejl." #~ msgid "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgstr "" #~ "Den er nok ikke fatal, men detaljerne bør alligevel rapporteres til " #~ "udviklerne." #~ msgid "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Fra: fejlagtigt_program\"\n" #~ "Til: dÃ¥rlig_programmør\n" #~ "Emne: Exception feedback\n" #~ "\n" #~ "%s" #~ msgid "Bug Details" #~ msgstr "Detaljer om fejl" #~ msgid "Create a new file" #~ msgstr "Opret en ny fil" #~ msgid "New ase.gui window" #~ msgstr "Nyt ase.gui-vindue" #~ msgid "Save current file" #~ msgstr "Gem den aktuelle fil" #~ msgid "Quit" #~ msgstr "Afslut" #~ msgid "_Copy" #~ msgstr "_Kopiér" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "Kopiér nuværende markering og dens orientering til udklipsholderen" #~ msgid "_Paste" #~ msgstr "_Indsæt" #~ msgid "Insert current clipboard selection" #~ msgstr "Indsæt nuværende markering fra udklipsholderen" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "Ændr mærker, impuls og atomnummer for de valgte atomer" #~ msgid "Insert or import atoms and molecules" #~ msgstr "Indsæt eller importér atomer og molekyler" #~ msgid "Delete the selected atoms" #~ msgstr "Slet de markerede atomer" #~ msgid "'xy' Plane" #~ msgstr "'xy'-plan" #~ msgid "'yz' Plane" #~ msgstr "'yz'-plan" #~ msgid "'zx' Plane" #~ msgstr "'zx'-plan" #~ msgid "'yx' Plane" #~ msgstr "'yx'-plan" #~ msgid "'zy' Plane" #~ msgstr "'zy'-plan" #~ msgid "'xz' Plane" #~ msgstr "'xz'-plan" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "Opret en krystalstruktur med arbitrær orientering" #~ msgid "Create the most common surfaces" #~ msgstr "Opret de mest almindelige overflader" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "Opret en krystallinsk nanopartikel" #~ msgid "Create a nanotube" #~ msgstr "Opret et nanorør" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "Opret et lag eller bÃ¥nd af grafén" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "Angiv en beregner der skal bruges i alle beregningsmoduler" #~ msgid "Calculate energy and forces" #~ msgstr "Beregn energi og kræfter" #~ msgid "Minimize the energy" #~ msgstr "Minimér energien" #~ msgid "Scale system" #~ msgstr "Skalér systemet" #~ msgid "Deform system by scaling it" #~ msgstr "Deformér systemet ved skalering" #~ msgid "Orien_t atoms" #~ msgstr "Orien_tér atomer" #~ msgid "<>" #~ msgstr "<>" #~ msgid "Paste" #~ msgstr "Indsæt" #~ msgid "Insert atom or molecule" #~ msgstr "Indsæt atom eller molekyle" #~ msgid "_Load molecule" #~ msgstr "_Indlæs molekyle" #~ msgid "_Cancel" #~ msgstr "_Annullér" #~ msgid "Atom" #~ msgstr "Atom" #~ msgid "Confirmation" #~ msgstr "Bekræftelse" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "Slet det valgte atom?" #~ msgstr[1] "Slet de valgte atomer?" #~ msgid "File type:" #~ msgstr "Filtype:" #~ msgid "Not implemented!" #~ msgstr "Ikke implementeret!" #~ msgid "do you really need it?" #~ msgstr "har du virkelig brug for dette?" #~ msgid "Dummy placeholder object" #~ msgstr "Stedfortræderobjekt" #~ msgid "Set all directions to default values" #~ msgstr "Sæt alle retninger til standardværdier" #~ msgid "Particle size: " #~ msgstr "Partikelstørrelse: " #~ msgid "%.1f Ã…" #~ msgstr "%.1f Ã…" #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "Titel: %(title)s\n" #~ "Tid: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: Pythonkode" #~ msgid "Information:" #~ msgstr "Information:" #~ msgid "Python code:" #~ msgstr "Pythonkode:" #~ msgid "Quick Info" #~ msgstr "Hurtig info" #~ msgid "Homogeneous scaling" #~ msgstr "Homogen skalering" #~ msgid "3D deformation " #~ msgstr "3D-deformation " #~ msgid "2D deformation " #~ msgstr "2D-deformation " #~ msgid "1D deformation " #~ msgstr "1D-deformation " #~ msgid "Bulk" #~ msgstr "Krystal" #~ msgid "x-axis" #~ msgstr "x-akse" #~ msgid "y-axis" #~ msgstr "y-akse" #~ msgid "z-axis" #~ msgstr "z-akse" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "Tillad deformation langs ikke-periodiske retninger." #~ msgid "Deformation:" #~ msgstr "Deformation:" #~ msgid "Maximal scale factor: " #~ msgstr "Maksimal skaleringsfaktor: " #~ msgid "Scale offset: " #~ msgstr "Forskydning ved skalering: " #~ msgid "Number of steps: " #~ msgstr "Antal trin: " #~ msgid "Only positive deformation" #~ msgstr "Kun positiv deformation" #~ msgid "On " #~ msgstr "Til " #~ msgid "Off" #~ msgstr "Fra" #~ msgid "Results:" #~ msgstr "Resultater:" #~ msgid "Keep original configuration" #~ msgstr "Behold oprindelig konfiguration" #~ msgid "Load optimal configuration" #~ msgstr "Indlæs optimal konfiguration" #~ msgid "Load all configurations" #~ msgstr "Indlæs alle konfigurationer" #~ msgid "Strain\t\tEnergy [eV]" #~ msgstr "Spænding\t\tEnergi [eV]" #~ msgid "Fit:" #~ msgstr "Fit:" #~ msgid "2nd" #~ msgstr "2." #~ msgid "3rd" #~ msgstr "3." #~ msgid "Order of fit: " #~ msgstr "Orden for fit: " #~ msgid "Calculation CANCELLED." #~ msgstr "Beregning AFBRUDT." #~ msgid "Calculation completed." #~ msgstr "Beregning fuldført." #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "Intet troværdigt minimum: Gammel konfiguration beholdt." #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "Utilstrækkelige data til fit\n" #~ "(kun %i datapunkter)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "GÃ…R NED TIL ANDENORDENS FIT\n" #~ "(kun 3 datapunkter)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "Intet minimum fundet!" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "ADVARSEL: Minimum ligger uden for interval\n" #~ msgid "It is UNRELIABLE!\n" #~ msgstr "Det er UTILREGNELIGT!\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "Ingen data for krystalstruktur" #~ msgid "Tip for status box ..." #~ msgstr "Fif til statusboks ..." #~ msgid "Clear constraint" #~ msgstr "Ryd begrænsninger" #~ msgid "DFT" #~ msgstr "DFT" #~ msgid "XC-functional: " #~ msgstr "XC-funktional: " #~ msgid "DFT ..." #~ msgstr "DFT ..." #~ msgid "building menus failed: %s" #~ msgstr "bygning af menuer mislykkedes: %s" #~ msgid "Dacapo netCDF output file" #~ msgstr "netCDF-uddatafil fra Dacapo" #~ msgid "Virtual Nano Lab file" #~ msgstr "Virtual Nano Lab-fil" #~ msgid "ASE pickle trajectory" #~ msgstr "Pickletrajectory fra ASE" #~ msgid "ASE bundle trajectory" #~ msgstr "Bundletrajectory fra ASE" #~ msgid "GPAW text output" #~ msgstr "Textudskrift fra GPAW" #~ msgid "CUBE file" #~ msgstr "CUBE-fil" #~ msgid "XCrySDen Structure File" #~ msgstr "XCrySDen-strukturfil" #~ msgid "Dacapo text output" #~ msgstr "Tekstudskrift fra Dacapo" #~ msgid "XYZ-file" #~ msgstr "XYZ-fil" #~ msgid "VASP POSCAR/CONTCAR file" #~ msgstr "POSCAR/CONTCAR-fil fra VASP" #~ msgid "VASP OUTCAR file" #~ msgstr "OUTCAR-fil fra VASP" #~ msgid "Protein Data Bank" #~ msgstr "Proteindatabank" #~ msgid "CIF-file" #~ msgstr "CIF-fil" #~ msgid "FHI-aims geometry file" #~ msgstr "FHI-aims-geometrifil" #~ msgid "FHI-aims output file" #~ msgstr "Uddatafil fra FHI-aims" #~ msgid "TURBOMOLE coord file" #~ msgstr "TURBOMOLE-koordinatfil" # exciting er et program #~ msgid "exciting input" #~ msgstr "exciting-inddata" #~ msgid "WIEN2k structure file" #~ msgstr "WIEN2k-strukturfil" #~ msgid "DftbPlus input file" #~ msgstr "DftbPlus-inddatafil" #~ msgid "ETSF format" #~ msgstr "ETSF-format" #~ msgid "CASTEP geom file" #~ msgstr "CASTEP-geom-fil" #~ msgid "CASTEP output file" #~ msgstr "Uddatafil fra CASTEP" #~ msgid "CASTEP trajectory file" #~ msgstr "Trajectory-fil fra CASTEP" #~ msgid "DFTBPlus GEN format" #~ msgstr "GEN-format fra DFTBPlus" #~ msgid "" #~ "\n" #~ "An exception occurred! Please report the issue to\n" #~ "ase-developers@listserv.fysik.dtu.dk - thanks! Please also report this " #~ "if\n" #~ "it was a user error, so that a better error message can be provided\n" #~ "next time." #~ msgstr "" #~ "\n" #~ "Der opstod en undtagelse! Rapportér venligst dette problem til \n" #~ "ase-developers@listserv.fysik.dtu.dk - mange tak! Rapportér ogsÃ¥ gerne " #~ "dette\n" #~ "hvis det var en brugerfejl, sÃ¥ der kan gives en bedre fejlmeddelelse " #~ "næste\n" #~ "gang." #~ msgid "Max force: %.2f (this frame), %.2f (all frames)" #~ msgstr "Maks. kraft: %.2f (dette billede), %.2f (alle billeder)" #~ msgid "Max force: %.2f." #~ msgstr "Maks. kraft: %.2f." #~ msgid "Max velocity: %.2f (this frame), %.2f (all frames)" #~ msgstr "Maks. hastighed: %.2f (dette billede), %.2f (alle billeder)" #~ msgid "Max velocity: %.2f." #~ msgstr "Maks. hastighed: %.2f." #~ msgid "Min, max charge: %.2f, %.2f (this frame)," #~ msgstr "Min., maks. ladning: %.2f, %.2f (dette billede)," #~ msgid "Min, max charge: %.2f, %.2f." #~ msgstr "Min., maks. ladning: %.2f, %.2f." #~ msgid "XYZ file" #~ msgstr "XYZ-fil" #~ msgid "ASE trajectory" #~ msgstr "Trajectory fra ASE" #~ msgid "PDB file" #~ msgstr "PDB-fil" #~ msgid "Gaussian cube file" #~ msgstr "Cube-fil fra Gaussian" #~ msgid "Python script" #~ msgstr "Pythonscript" #~ msgid "VNL file" #~ msgstr "VNL-fil" #~ msgid "Portable Network Graphics" #~ msgstr "Portable Network Graphics" #~ msgid "Persistence of Vision" #~ msgstr "Persistence of Vision" #~ msgid "Encapsulated PostScript" #~ msgstr "Encapsulated PostScript" #~ msgid "FHI-aims geometry input" #~ msgstr "Geometriinddata til FHI-aims" #~ msgid "VASP geometry input" #~ msgstr "Geometriinddata til VASP" #~ msgid "cif file" #~ msgstr "cif-fil" #~ msgid "Save current image only (#%d)" #~ msgstr "Gem kun nuværende billede (#%d)" # slice ~ opdel #~ msgid "Slice: " #~ msgstr "Del: " #~ msgid "Help for slice ..." #~ msgstr "Hjælp til opdeling ..." #~ msgid "ase-gui INTERNAL ERROR: strange response in Save," #~ msgstr "INTERN FEJL I ase-gui: mystisk svar i Save," #~ msgid "Unknown output format!" #~ msgstr "Ukendt uddataformat!" #~ msgid "Use one of: %s" #~ msgstr "Brug et af: %s" #~ msgid " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgstr " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgid "%s (a=%.3f Ã…)" #~ msgstr "%s (a=%.3f Ã…)" #~ msgid " %s: %s, Z=%i, %s" #~ msgstr " %s: %s, Z=%i, %s" #~ msgid " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgstr " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgid " %s-%s: %.3f Ã…" #~ msgstr " %s-%s: %.3f Ã…" #~ msgid " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgstr " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgid "dihedral %s->%s->%s->%s: %.1f°" #~ msgstr "dihedral %s->%s->%s->%s: %.1f°" #~ msgid "c:" #~ msgstr "c:" #~ msgid "\t\t%.2f Ã… x %.2f Ã… x %.2f Ã…, %i atoms." #~ msgstr "\t\t%.2f Ã… x %.2f Ã… x %.2f Ã…, %i atomer." #~ msgid "FILE" #~ msgstr "FIL" #~ msgid "%prog [options] [file[, file2, ...]]" #~ msgstr "%prog [tilvalg] [fil[, fil2, ...]]" #~ msgid "NUMBER" #~ msgstr "NUMMER" #~ msgid "" #~ "Pick image(s) from trajectory. NUMBER can be a single number (use a " #~ "negative number to count from the back) or a range: start:stop:step, " #~ "where the \":step\" part can be left out - default values are 0:nimages:1." #~ msgstr "" #~ "Vælg billeder fra traj-fil. NUMMER kan være et enkelt tal (brug et " #~ "negativt tal til at tælle bagfra) eller et interval pÃ¥ formen start:stop:" #~ "trin, hvor elementet \":trin\" kan udelades. Standardværdi er 0:" #~ "antalbilleder:1." #~ msgid "I" #~ msgstr "I" #~ msgid "" #~ "0: Don't show unit cell. 1: Show unit cell. 2: Show all of unit cell." #~ msgstr "" #~ "0: Vis ikke enhedscellen. 1: Vis enhedscellen. 2: Vis hele enhedscellen." #~ msgid "Repeat unit cell. Use \"-r 2\" or \"-r 2,3,1\"." #~ msgstr "Gentag enhedscellen. Brug \"-r 2\" eller \"-r 2,3,1\"." #~ msgid "Examples: \"-R -90x\", \"-R 90z,-30x\"." #~ msgstr "Eksempler: \"-R -90x\", \"-R 90z,-30x\"." #~ msgid "Write configurations to FILE." #~ msgstr "Skriv konfigurationer til FIL." #~ msgid "EXPR" #~ msgstr "UDTRYK" #~ msgid "" #~ "Plot x,y1,y2,... graph from configurations or write data to sdtout in " #~ "terminal mode. Use the symbols: i, s, d, fmax, e, ekin, A, R, E and F. " #~ "See https://wiki.fysik.dtu.dk/ase/ase/gui.html#plotting-data for more " #~ "details." #~ msgstr "" #~ "Tegn graf for x,y1,y2,... fra konfigurationer, eller skriv data til " #~ "stdout i teksttilstand. Brug symbolerne i, s, d, fmax, e, ekin, A, R, E " #~ "og F. Yderligere detaljer kan findes pÃ¥ https://wiki.fysik.dtu.dk/ase/" #~ "ase/gui.html#plotting-data for more details." #~ msgid "Run in terminal window - no GUI." #~ msgstr "Kør i terminalvindue - uden grafisk grænseflade." #~ msgid "Read ANEB data." #~ msgstr "Læs ANEB-data." #~ msgid "N" #~ msgstr "N" #~ msgid "Interpolate N images between 2 given images." #~ msgstr "Interpolér N billeder mellem to givne billeder." #~ msgid "Draw bonds between atoms." #~ msgstr "Tegn bindinger mellem atomer." ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/de/000077500000000000000000000000001316323560300223315ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/de/LC_MESSAGES/000077500000000000000000000000001316323560300241165ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/de/LC_MESSAGES/ag.po000066400000000000000000001666631316323560300250670ustar00rootroot00000000000000# German translations for ase package. # Copyright (C) 2016-2017 ASE developers # This file is distributed under the same license as the ase package. # # Lukas Deuchler # Ask Hjorth Larsen # Robert Warmbier # msgid "" msgstr "" "Project-Id-Version: ase\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-28 19:11+0200\n" "PO-Revision-Date: 2017-09-28 19:13+0200\n" "Last-Translator: Robert Warmbier \n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../add.py:12 msgid "Bad position" msgstr "Illegale Position" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "Füge Atome hinzu" #: ../add.py:25 msgid "Absolute position:" msgstr "Absolute Position:" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "Hinzufügen" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "Relativ zur gemittelten Position (von Auswahl):" #: ../colors.py:15 msgid "Colors" msgstr "Farben" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "Wählen Sie wie die Atome gefärbt werden:" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "Gemäß Ordnungszahl, \"jmol\"-Standardfarben" #: ../colors.py:21 msgid "By tag" msgstr "Gemäß Markierung" #: ../colors.py:22 msgid "By force" msgstr "Gemäß Kraft" #: ../colors.py:23 msgid "By velocity" msgstr "Gemäß Geschwindigkeit" #: ../colors.py:24 #, fuzzy #| msgid "By charge" msgid "By initial charge" msgstr "Gemäß Ladung" #: ../colors.py:25 msgid "By magnetic moment" msgstr "Gemäß Magnetischem Moment" #: ../colors.py:69 msgid "Green" msgstr "Grün" #: ../colors.py:69 msgid "Yellow" msgstr "Gelb" #: ../constraints.py:8 msgid "Constraints" msgstr "Beschränkungen" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "Beschränken" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "gewählte Atome" #: ../constraints.py:12 msgid "immobile atoms" msgstr "unbewegliche Atome" #: ../constraints.py:13 msgid "Unconstrain" msgstr "Beschränkung entfernen" #: ../constraints.py:15 msgid "Clear constraints" msgstr "Lösche Beschränkungen" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr "%(natoms)i Atome: %(symbols)s, Volumen: %(volume).3f A3" #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "Erzeuge Bulk Kristall mittels Raumgruppe" #: ../crystal.py:85 msgid "Number: 1" msgstr "Nummer: 1" #: ../crystal.py:87 msgid "Lattice: " msgstr "Gitter " #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\tRaumgruppe: " #: ../crystal.py:95 msgid "Size: x: " msgstr "Größe: x: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " Einheitszelle" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "leer" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "gleich b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "gleich c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "fixiert" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "gleich a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "gleich beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "gleich gamma" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "gleich alpha" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "Gitterkonstanten" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\tα:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tβ:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tγ:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "Aus Database holen" #: ../crystal.py:166 msgid "Basis: " msgstr "Basis: " #: ../crystal.py:176 msgid " Element:\t" msgstr " Element:\t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "Erzeuge einen Kristall." #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "Symbol: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "Nummer: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "Ungültige Raumgruppe!" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "Bitte konsistente Atommenge spezifizieren." #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "Keine gültigen Atome." #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "(Noch) kein konsistenter Parametersatz spezifiziert." #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "Kann Definition des Gitters nicht finden!" #: ../energyforces.py:15 msgid "Output:" msgstr "Ausgabe:" #: ../energyforces.py:44 msgid "Save output" msgstr "Speichere Ausgabe" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "Potential energy und Kräfte" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "Berechne potential energy und Kräfte auf/zwischen allen Atome" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "Schreibe Kräfte auf Atome" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "Potentialenergie:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/Atom\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "Kräfte:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "Bereite Graphenlage oder Graphen Nanoribbon vor. Ein Nanoribbon kann\n" "optional mit Wasserstoff (oder einem anderen Element) saturiert werden" #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "Graphen" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "Struktur: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "Unendliche Lage" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "Nicht-saturierte Ribbon" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "Saturierte Ribbon" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "Orientierung: " #: ../graphene.py:58 msgid "zigzag" msgstr "Zick-Zack" #: ../graphene.py:58 msgid "armchair" msgstr "Armchair" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " Bindungslänge: " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "Saturierung: " #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "Breite: " #: ../graphene.py:97 msgid " Length: " msgstr " Länge: " #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "Vakuum: " #: ../graphene.py:153 msgid " No element specified!" msgstr " Kein Element spezifiziert!" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "Bitte konsistenten Satz Atome spezifizieren." #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "Zeichnen" #: ../graphs.py:46 msgid "Save" msgstr "Speichern" #: ../graphs.py:47 msgid "Clear" msgstr "Löschen" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "Speichere Daten in Datei …" #: ../gui.py:286 msgid "Automatic" msgstr "Automatisch" #: ../gui.py:304 msgid "Open ..." msgstr "Öffne …" #: ../gui.py:305 msgid "Choose parser:" msgstr "Wähle Interpreter:" #: ../gui.py:416 msgid "_File" msgstr "_Datei" #: ../gui.py:417 msgid "_Open" msgstr "_Öffnen" #: ../gui.py:418 msgid "_New" msgstr "_Neu" #: ../gui.py:419 msgid "_Save" msgstr "_Speichern" #: ../gui.py:421 msgid "_Quit" msgstr "_Beenden" #: ../gui.py:423 msgid "_Edit" msgstr "_Bearbeiten" #: ../gui.py:424 msgid "Select _all" msgstr "Wähle _alle aus" #: ../gui.py:425 msgid "_Invert selection" msgstr "_Invertiere Auswahl" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "Wähle _constraint Atome" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "Wähle unbewegl_iche Atome aus" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "Verstecke ausgewählte Atome" #: ../gui.py:434 msgid "Show selected atoms" msgstr "Zeige ausgewählte Atome" #: ../gui.py:436 msgid "_Modify" msgstr "_Modifizieren" #: ../gui.py:437 msgid "_Add atoms" msgstr "Füge _Atome hinzu" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "_Lösche ausgewählte Atome" #: ../gui.py:441 msgid "_First image" msgstr "_Erstes Bild" #: ../gui.py:442 msgid "_Previous image" msgstr "_Vorheriges Bild" #: ../gui.py:443 msgid "_Next image" msgstr "_Nächstes Bild" #: ../gui.py:444 msgid "_Last image" msgstr "_Letztes Bild" #: ../gui.py:446 msgid "_View" msgstr "_Ansehen" #: ../gui.py:447 msgid "Show _unit cell" msgstr "Zeige _Einheitszelle" #: ../gui.py:449 msgid "Show _axes" msgstr "Zeige _Achsen" #: ../gui.py:450 msgid "Show _bonds" msgstr "Zeige _Bindungen" #: ../gui.py:452 msgid "Show _velocities" msgstr "Zeige _Geschwindigkeiten" #: ../gui.py:454 msgid "Show _forces" msgstr "Zeige Krä_fte" #: ../gui.py:456 msgid "Show _Labels" msgstr "Zeige _Label" #: ../gui.py:457 msgid "_None" msgstr "_Keine" #: ../gui.py:458 msgid "Atom _Index" msgstr "Atom_index" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "_Magnetische Momente" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "_Elementsymbol" #: ../gui.py:461 msgid "_Initial Charges" msgstr "" #: ../gui.py:464 msgid "Quick Info ..." msgstr "Kurzinfo …" #: ../gui.py:465 msgid "Repeat ..." msgstr "Wiederhole …" #: ../gui.py:466 msgid "Rotate ..." msgstr "Rotieren …" #: ../gui.py:467 msgid "Colors ..." msgstr "Farben …" #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "Fokus" #: ../gui.py:470 msgid "Zoom in" msgstr "Reinzoomen" #: ../gui.py:471 msgid "Zoom out" msgstr "Rauszoomen" #: ../gui.py:472 msgid "Change View" msgstr "Ändere Perspektive" #: ../gui.py:474 msgid "Reset View" msgstr "Setze Perspektive Zurück" #: ../gui.py:475 msgid "xy-plane" msgstr "xy-Ebene" #: ../gui.py:476 msgid "yz-plane" msgstr "yz-Ebene" #: ../gui.py:477 msgid "zx-plane" msgstr "zx-Ebene" #: ../gui.py:478 msgid "yx-plane" msgstr "yx-Ebene" #: ../gui.py:479 msgid "zy-plane" msgstr "zy-Ebene" #: ../gui.py:480 msgid "xz-plane" msgstr "xz-Ebene" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "a2,a3-Ebene" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "a3,a1-Ebene" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "a1,a2-Ebene" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "a3,a2-Ebene" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "a1,a3-Ebene" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "a2,a1-Ebene" #: ../gui.py:487 msgid "Settings ..." msgstr "Einstellungen …" #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "_Werkzeuge" #: ../gui.py:495 msgid "Graphs ..." msgstr "Graphen …" #: ../gui.py:496 msgid "Movie ..." msgstr "Film …" #: ../gui.py:497 msgid "Expert mode ..." msgstr "Expertenmodus …" #: ../gui.py:498 msgid "Constraints ..." msgstr "Beschränkungen …" #: ../gui.py:499 msgid "Render scene ..." msgstr "Zeichne Szene …" #: ../gui.py:500 msgid "_Move atoms" msgstr "_Bewege Atome" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "_Rotiere Atome" #: ../gui.py:502 msgid "NE_B" msgstr "NE_B" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "_Kompressionsmodul" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "_Erstellen" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "_Kristallstruktur" #: ../gui.py:508 msgid "_Surface slab" msgstr "_Oberfläche" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "_Nanoparikel" #: ../gui.py:511 msgid "Nano_tube" msgstr "Nano_röhre" #: ../gui.py:514 msgid "_Calculate" msgstr "_Berechne" #: ../gui.py:515 msgid "Set _Calculator" msgstr "Setze _Berechner" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "_Energie und Kräfte" #: ../gui.py:517 msgid "Energy Minimization" msgstr "Energieminimierung" #: ../gui.py:520 msgid "_Help" msgstr "_Hilfe" #: ../gui.py:521 msgid "_About" msgstr "_Info" #: ../gui.py:525 msgid "Webpage ..." msgstr "Webseite …" #. Host window will never be shown #: ../images.py:192 #, fuzzy #| msgid "Constraints" msgid "Constraints discarded" msgstr "Beschränkungen" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "" #: ../modify.py:19 msgid "No atoms selected!" msgstr "Keine Atome ausgewählt!" #: ../modify.py:22 msgid "Modify" msgstr "Modifizieren" #: ../modify.py:25 msgid "Change element" msgstr "Ändere Element" #: ../modify.py:28 msgid "Tag" msgstr "Markierung" #: ../modify.py:30 msgid "Moment" msgstr "Magnetisches Moment" #: ../movie.py:11 msgid "Movie" msgstr "Film" #: ../movie.py:12 msgid "Image number:" msgstr "Bildnummer:" #: ../movie.py:18 msgid "First" msgstr "Erstes" #: ../movie.py:19 msgid "Back" msgstr "Zurück" #: ../movie.py:20 msgid "Forward" msgstr "Vorwärts" #: ../movie.py:21 msgid "Last" msgstr "Letztes" #: ../movie.py:23 msgid "Play" msgstr "Abspielen" #: ../movie.py:24 msgid "Stop" msgstr "Stop" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Pendeln" #: ../movie.py:41 msgid " Frame rate: " msgstr " Bildrate: " #: ../movie.py:41 msgid " Skip frames: " msgstr " Überspringe Bilder: " #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "Kubisch, flächenzentriert (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "Kubisch, raumzentriert (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "Kubisch, einfach (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "Hexagonal, dichte Packung (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "Graphit" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "Nanopartikel" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "Lade Struktur" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "Struktur:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "Gitterkonstante: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "Lagenspezifizierung" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Wulffkonstruktion" #: ../nanoparticle.py:166 msgid "Method: " msgstr "Methode: " #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "Füge neue Richtung hinzu:" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "Information über das erzeugte Cluster:" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "Anzahl der Atome: " #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " Ungef. Durchmesser: " #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "Automatisch Anwenden" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "Erzeuge Nanopartikel." #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "Anwenden" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "Ok" #: ../nanoparticle.py:227 msgid "Up" msgstr "Auf" #: ../nanoparticle.py:228 msgid "Down" msgstr "Ab" #: ../nanoparticle.py:229 msgid "Delete" msgstr "Lösche" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "Anzahl der Atome" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "Diameter" #: ../nanoparticle.py:279 msgid "above " msgstr "über " #: ../nanoparticle.py:279 msgid "below " msgstr "unter " #: ../nanoparticle.py:279 msgid "closest " msgstr "nächstes " #: ../nanoparticle.py:282 msgid "Smaller" msgstr "Kleiner" #: ../nanoparticle.py:283 msgid "Larger" msgstr "Größer" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "Wähle Größe mittels:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "Atome" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "Runden: Wenn exakte Größe nicht möglich, dann wähle Größe:" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "Oberflächenenergien (als Energie/Fläche, NICHT pro Atom)" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "Lagenzahl:" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "Mindestens ein Index muss ungleich Null sein" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "Ungültige Hexagonalindizes" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "Nicht unterstützte oder unbekannte Struktur" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "Element = {0}, Struktur = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "Erzeuge eine Kohlenstoffnanoröhre gegeben durch den Aufrollvektor (n,m).\n" "Beachte m <= n.\n" "\n" "Um Nanoröhren anderer Elemente herzustellen geben Sie das Element und die " "Bindungslänge an." #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" "{natoms} Atome, Durchmesser: {diameter:.3f} Ã…, Gesamtlänge: " "{total_length:.3f} Ã…" #: ../nanotube.py:40 msgid "Nanotube" msgstr "Nanoröhre" #: ../nanotube.py:43 msgid "Bond length: " msgstr "Bindungslänge: " #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "Wähle Aufrollvektor (n,m) und Röhrenlänge:" #: ../nanotube.py:49 msgid "Length:" msgstr "Länge:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "Einzelnes Bild geladen." #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "Bild %d geladen (0 - %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "Einheitszelle ist fest." #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "Einheitszelle variiert." #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "Anzahl Atome: %d.\n" "\n" "Einheitszelle:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "Dieses Bild hat keine Atome." #: ../quickinfo.py:53 msgid "no" msgstr "Nein" #: ../quickinfo.py:53 msgid "yes" msgstr "Ja" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "Periodisch: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "Volumen: " #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "Zeichne aktuelle Sicht in povray …" #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "Zeichne %d Atome." #: ../render.py:26 msgid "Size" msgstr "Größe" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "Linienbreite" #: ../render.py:32 msgid "Ã…ngström" msgstr "Ã…ngström" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "Zeichne Beschränkungen" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "Zeichne Einheitszelle" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "Ausgabe basename: " #: ../render.py:43 msgid "Output filename: " msgstr "Dateiname für Ausgabe: " #: ../render.py:48 msgid "Atomic texture set:" msgstr "Atomtextursammlung:" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "Kameratyp: " #: ../render.py:56 msgid "Camera distance" msgstr "Kameraabstand" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "Zeichne aktuelles Bild" #: ../render.py:60 msgid "Render all frames" msgstr "Zeichne alle Bilder" #: ../render.py:65 msgid "Run povray" msgstr "Führe povray aus" #: ../render.py:66 msgid "Keep povray files" msgstr "Behalte povray-Dateien" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "Zeige Ausgabefenster" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "Transparenter Hintergrund" #: ../render.py:72 msgid "Render" msgstr "Zeichne" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" #: ../render.py:206 msgid "Width" msgstr "Breite" #: ../render.py:206 msgid " Height" msgstr " Höhe" #: ../render.py:228 msgid "Angstrom " msgstr "Ã…ngström " #: ../render.py:238 msgid "Set" msgstr "Setze" #: ../render.py:242 msgid " Filename: " msgstr " Dateiname: " #: ../render.py:254 msgid " Default texture for atoms: " msgstr " Standardtextur für Atome: " #: ../render.py:255 msgid " transparency: " msgstr " Transparenz: " #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "Definiere Atomauswahl für Textur:" #: ../render.py:260 msgid "Select" msgstr "Auswählen" #: ../render.py:264 msgid "Create new texture from selection" msgstr "Erzeuge neue Textur aus Auswahl" #: ../render.py:267 msgid "Help on textures" msgstr "Hilfe zu Texturen" #: ../render.py:284 msgid " Camera distance" msgstr " Kameraabstand" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "Zeichne alle %d Bilder" #: ../render.py:298 msgid "Run povray " msgstr "Führe povray aus" #: ../render.py:301 msgid "Keep povray files " msgstr "Behalte povray-Dateien" #: ../render.py:389 msgid " transparency: " msgstr " Transparenz: " #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" "Kann keine neue Textur erzeugen! Es müssen einige Atome ausgewählt sein,um " "ein neues Material zu erzeugen!" #: ../repeat.py:10 msgid "Repeat" msgstr "Wiederholen" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "Wiederhole Atome:" #: ../repeat.py:15 msgid "Set unit cell" msgstr "Setze Einheitszelle" #: ../rotate.py:13 msgid "Rotate" msgstr "Rotiere" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "Rotationswinkel:" #: ../rotate.py:18 msgid "Update" msgstr "Aktualisieren" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "Hinweis:\n" "Freies Rotieren mit Maus möglich,\n" "indem rechte Maustaste gedrückt\n" "gehalten wird." #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" #: ../save.py:26 msgid "Save ..." msgstr "Speichern …" #: ../settings.py:10 msgid "Settings" msgstr "Einstellungen" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "Constraints:" #: ../settings.py:16 msgid "release" msgstr "loslassen" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr " gewählte Atome" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "Constrain unbewegliche Atome" #: ../settings.py:19 msgid "Clear all constraints" msgstr "Lösche alle Constraints" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "Sichtbarkeit:" #: ../settings.py:23 msgid "Hide" msgstr "Verstecke" #: ../settings.py:25 msgid "show" msgstr "zeige" #: ../settings.py:27 msgid "View all atoms" msgstr "Betrachte alle Atome" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "Verschiedenes:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "Skaliere Atomradien:" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " (Simulation erneut starten)" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (Simulation fortführen)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "Wähle Startkonfiguration:" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "Momentan sind %i Konfigurationen geladen." #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "Wähle welche als initiale Konfiguration gewählt werden soll" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "Die erste Konfiguration %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "Konfigurationsnummer " #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "Letzte Konfiguration %s." #: ../simulation.py:92 msgid "Run" msgstr "Los!" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "Kein Berechner: Nutze Berechner/Setze Berechner im Menü." #: ../simulation.py:123 msgid "No atoms present" msgstr "Keine Atome auffindbar" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr " Markierung=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr " Mom={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr " q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "Diederwinkel" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" " Nutzen Sie diesen Dialog, um Oberflächen zu erzeugen. Wähle Element\n" "durch Schreiben des chemischen Symbols oder der Atomnummer in die Box. Dann\n" "wähle die gewünschte Oberflächenstruktur. Anmerkung: Einige Strukturen " "können\n" "mit einer orthogonalen oder einer nicht-orthogonalen Einheitszelle erzeugt " "werden. In\n" "diesen Fällen wird die nicht-orthogonale Einheitszelle weniger Atome " "enthalten.\n" "\n" " Wenn die Struktur mit dem experimentellen Kristall übereinstimmt, dann " "kann\n" "die Gitterkonstante nachgeschlagen werden, andernfalls muss diese " "eigenständig\n" "spezifiziert werden." #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(110)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10-10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "DIAMANT(100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "Diamant" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "DIAMANT(111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "Oberfläche" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "Orthogonale Einheitszelle:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "Gitterkonstante:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "Größe: \tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "Erzeuge Oberfläche." #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "Bitte einen geraden Wert für orthogonale Zelle angeben" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "Bitte einen durch 3 teilbaren Wert für orthogonale Zelle angeben" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr " Vakuum: {} Ã…." #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "{symbol} {surf}-Oberfläche mit {natoms} Atom.{vacuum}" msgstr[1] "{symbol} {surf}-Oberfläche mit {natoms} Atomen.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "Fehler" #: ../ui.py:53 msgid "Version" msgstr "Version" #: ../ui.py:54 msgid "Web-page" msgstr "Webseite" #: ../ui.py:55 msgid "About" msgstr "Info" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "Hilfe" #: ../widgets.py:11 msgid "Element:" msgstr "Element:" #: ../widgets.py:39 msgid "No element specified!" msgstr "Kein Element spezifiziert!" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "FEHLER: Ungültiges Element!" #: ../widgets.py:75 msgid "No Python code" msgstr "Kein Python-Code" #~ msgid "Magnetic moment" #~ msgstr "Magnetisches Moment" #~ msgid "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgstr "" #~ "Um die meisten Rechnungen durchführen zu können muss zunächst ein\n" #~ "sogenanntes Berechnerobjekt zu diesen assoziiert werden. ASE unterstützt\n" #~ "eine Vielzahl von Berechnern, die unterschiedliche Elemente unterstützen\n" #~ "und verschiedene physikalische Modelle der Interaktion zwischen den\n" #~ "Atomen implementieren." #~ msgid "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgstr "" #~ "Das Lennard-Jones-Paar-Potential ist eines der einfachsten\n" #~ "möglichen Modelle zur Beschreibung der Interaktion zwischen Atomen,\n" #~ "welches am Besten für Edelgase und Modellsysteme geeignet ist.\n" #~ "Wechselwirkungen werden durch eine Wechselwirkungslänge und\n" #~ "eine Wechselwirkungsstärke beschrieben." #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimized to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgstr "" #~ "Das EMT Potential ist ein Vielteilchenpotential, welches eine\n" #~ "gute Beschreibung für die höheren Übergangsmetalle, die in FCC Kristall-\n" #~ "Strukturen kristallisieren, liefert. Die Elemente, welche durch die " #~ "Menge\n" #~ "der EMT Parameter bestimmt werden sind Al, Ni, Cu, Pd, Ag, Pt, und\n" #~ "Au, das Al Potential ist nicht geeignet für eine Anwendung in den\n" #~ "Materialwissenschaften, da die stacking fault Energie falsch ist.\n" #~ "\n" #~ "Einige Beispiele für Parametermengen werden zur Verfügung gestellt.\n" #~ "\n" #~ "Default Parameters:\n" #~ "\n" #~ "Die default EMT Parameter, publiziert in K. W. Jacobsen,\n" #~ "P. Stoltze und J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag und Au:\n" #~ "\n" #~ "Eine alternative Parametermenge für Cu, Ag und Au,\n" #~ "welche erneut mit Hilfe von experimentellen Daten optimiert wurden\n" #~ "und die stacking fault Energie beinhalten, wurde von Torben Rasmussen\n" #~ "teilweise veröffentlicht\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameter für Ruthenium, publiziert in J. Gavnholt und\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallische Glase:\n" #~ "\n" #~ "Parameter für MgCu und CuZr Metallische Glase. MgCu\n" #~ "Parameter sind in N. P. Bailey, J. Schiøtz und\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey und\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgstr "" #~ "Das EMT Potential ist ein Vielteilchenpotential, welches\n" #~ "eine gute Beschreibung der höheren Übergangsmetalle, die\n" #~ "in FCC Kristallstruktur kristallisieren, liefert.\n" #~ "Die Elemente, welche durch einen Satz EMT Parameter/nbeschrieben werden " #~ "sind Al, Ni, Cu, Pd, Ag, Pt und Au.\n" #~ "Zusätzlich erlaubt diese Implementierung noch die Verwendung\n" #~ "von H, N, O und C Adatomen, dennoch ist deren Beschreibung\n" #~ "sehr wahrscheinlich nicht sehr gut.\n" #~ "\n" #~ "Dies ist die ASE Implementierung von EMT. Für große\n" #~ "Simulationen ist die ASAP Implementierung besser geeignet; diese\n" #~ "Implementierung gibt es im wesentlichen, um EMT verfügbar zu machen, ween " #~ "ASAP\n" #~ "nicht installiert ist.\n" #~ msgid "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgstr "" #~ "GPAW implementiert Dichtefunktionaltheorie und benutzt dazu eine\n" #~ "Gitter basierte real-space Darstellung der Wellenfunktionen\n" #~ "und die Projector Augmented Wave Methode,\n" #~ "um die Kerne zu beschreiben.\n" #~ msgid "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgstr "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgid "Alternative Cu, Ag and Au" #~ msgstr "Alternative Cu, Ag and Au" #~ msgid "Ruthenium" #~ msgstr "Ruthenium" #~ msgid "CuMg and CuZr metallic glass" #~ msgstr "CuMg und CuZr metallic glass" #~ msgid "Select calculator" #~ msgstr "Wähle Berechner" #~ msgid "Calculator:" #~ msgstr "Berechner:" #~ msgid "None" #~ msgstr "Keiner" #~ msgid "Lennard-Jones (ASAP)" #~ msgstr "Lennard-Jones (ASAP)" #~ msgid "Setup" #~ msgstr "Einstellungen" #~ msgid "EMT - Effective Medium Theory (ASAP)" #~ msgstr "EMT - Effective Medium Theory (ASAP)" #~ msgid "EMT - Effective Medium Theory (ASE)" #~ msgstr "EMT - Effective Medium Theory (ASEP)" #~ msgid "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgstr "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgid "Brenner Potential (ASAP)" #~ msgstr "Brenner Potential (ASAP)" #~ msgid "Density Functional Theory (GPAW)" #~ msgstr "Density Functional Theory (GPAW)" #~ msgid "Density Functional Theory (FHI-aims)" #~ msgstr "Density Functional Theory (FHI-aims)" #~ msgid "Density Functional Theory (VASP)" #~ msgstr "Density Functional Theory (VASP)" #~ msgid "Check that the calculator is reasonable." #~ msgstr "Überprüfe ob der Berechner sinnvoll ist." #~ msgid "ASAP is not installed. (Failed to import asap3)" #~ msgstr "ASAP ist nicht installiert. (import asap3 schlägt fehl)" #~ msgid "You must set up the Lennard-Jones parameters" #~ msgstr "Lennard-Jones-Parameter müssen gesetzt werden" #~ msgid "Could not create useful Lennard-Jones calculator." #~ msgstr "Sinnvoller Lennard-Jones-Berechner konnte nicht erzeugt werden." #~ msgid "Could not attach EMT calculator to the atoms." #~ msgstr "Konnte EMT Berechner nicht den Atomen zuweisen." #~ msgid "You must set up the EAM parameters" #~ msgstr "EAM Parameter müssen gesetzt werden" #~ msgid "GPAW is not installed. (Failed to import gpaw)" #~ msgstr "GPAW ist nicht installiert. (import gpaw) schlägt fehl)" #~ msgid "You must set up the GPAW parameters" #~ msgstr "GPAW Parameter müssen gesetzt werden" #~ msgid "You must set up the FHI-aims parameters" #~ msgstr "FHI-aims Parameter müssen gesetzt werden" #~ msgid "You must set up the VASP parameters" #~ msgstr "VASP Parameter müssen gesetzt werden" #~ msgid "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgstr "Berechner '%(name)s' erlaubt Element %(sym)s nicht" #~ msgid "Info" #~ msgstr "Info" #~ msgid "Lennard-Jones parameters" #~ msgstr "Lennard-Jones Parameters" #~ msgid "Specify the Lennard-Jones parameters here" #~ msgstr "Spezifiziere Lennard-Jones Parameter hier" #~ msgid "Epsilon (eV):" #~ msgstr "Epsilon (eV):" #~ msgid "Sigma (Ã…):" #~ msgstr "Sigma (Ã…):" #~ msgid "Shift to make smooth at cutoff" #~ msgstr "Shift für einen weichen/smoothen Cutoff" #~ msgid "EAM parameters" #~ msgstr "EAM Parameter" #~ msgid "Import Potential" #~ msgstr "Importiere Potential" #~ msgid "You need to import the potential file" #~ msgstr "Potentialfile muss importiert werden" #~ msgid "Import .alloy or .adp potential file ... " #~ msgstr "Importiere .alloy oder .adp-Potentialfile …" #~ msgid "GPAW parameters" #~ msgstr "GPAW Parameter" #~ msgid "%i atoms.\n" #~ msgstr "%i Atome.\n" #~ msgid "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgstr "Orthogonale Einheitszelle: %.2f x %.2f x %.2f Ã…." #~ msgid "Non-orthogonal unit cell:\n" #~ msgstr "Nicht-orthogonale Einheitszelle:\n" #~ msgid "Exchange-correlation functional: " #~ msgstr "Austauschkorrelationsfunktional: " #~ msgid "Grid spacing" #~ msgstr "Gitter Spacing" #~ msgid "Grid points" #~ msgstr "Gitterpunkte" #~ msgid "k-points k = (" #~ msgstr "k-Punkte k = (" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgstr "k-Punkte x Größe: (%.1f, %.1f, %.1f) Ã…" #~ msgid "Spin polarized" #~ msgstr "Spinpolarisiert" #~ msgid "FD - Finite Difference (grid) mode" #~ msgstr "FD - Finite Elemente (Gitter) Modus" #~ msgid "LCAO - Linear Combination of Atomic Orbitals" #~ msgstr "LCAO - Linear Combination of Atomic Orbitals" #~ msgid "Mode: " #~ msgstr "Modus: " #~ msgid "Basis functions: " #~ msgstr "Basisfunktionen: " #~ msgid "FHI-aims parameters" #~ msgstr "FHI-aims Parameter" #~ msgid "Periodic geometry, unit cell is:\n" #~ msgstr "Periodische Geometrie, Einheitszelle ist:\n" #~ msgid "Non-periodic geometry.\n" #~ msgstr "Nicht-periodische Geometrie.\n" #~ msgid "Hirshfeld-based dispersion correction" #~ msgstr "Hirshfeld basierte Dispersionskorrektur" #~ msgid "Spin / initial moment " #~ msgstr "Spin / initial moment " #~ msgid " Charge" #~ msgstr " Ladung" #~ msgid " Relativity" #~ msgstr " Relativität" #~ msgid " Threshold" #~ msgstr " Threshold" #~ msgid "Self-consistency convergence:" #~ msgstr "Selbst-Konsistenz-Konvergenz" #~ msgid "Compute forces" #~ msgstr "Berechne Kräfte" #~ msgid "Energy: " #~ msgstr "Energie: " #~ msgid " eV Sum of eigenvalues: " #~ msgstr " eV Summe der Eigenwerte: " #~ msgid " eV" #~ msgstr " eV" #~ msgid "Electron density: " #~ msgstr "Elektronendichte: " #~ msgid " Force convergence: " #~ msgstr " Kraftkonvergenz: " #~ msgid "Additional keywords: " #~ msgstr "Zusätzliche Keywords: " #~ msgid "Directory for species defaults: " #~ msgstr "Ordner für species defaults: " #~ msgid "Set Defaults" #~ msgstr "Setze Defaults" #~ msgid "Import control.in" #~ msgstr "Importiere control.in" #~ msgid "Export control.in" #~ msgstr "Exportiere control.in" #~ msgid "Export parameters ... " #~ msgstr "Exportiere Parameter …" #~ msgid "Import control.in file ... " #~ msgstr "Importiere control.in file …" #~ msgid "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgstr "" #~ "Bitte nutzen Sie die Möglichkeiten, die in diesem Fenster zur Verfügung " #~ "stehen, um das Keyword zu ändern:%s!" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgstr "" #~ "Unbekanntes Keyword: %s\n" #~ "\n" #~ "Bitte Prüfen!\n" #~ "\n" #~ "Wenn Sie wirklich der Meinung sind, dass es zur Verfügung stehen sollte, " #~ "fügen \n" #~ "Sie es bitte zum Kopf von ase/calculators/aims.py hinzu." #~ msgid "VASP parameters" #~ msgstr "VASP Parameter" #~ msgid "Periodic geometry, unit cell is: \n" #~ msgstr "Periodische Geometrie, Einheitszelle ist: \n" #~ msgid " Precision: " #~ msgstr " Präzision: " #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgstr "k-Punkte x Größe: (%.1f, %.1f, %.1f) Ã… " #~ msgid " order: " #~ msgstr " Ordnung: " #~ msgid " width: " #~ msgstr " Breite: " #~ msgid "Self-consistency convergence: " #~ msgstr "Selbstkonsistenzkonvergenz: " #~ msgid "Import VASP files" #~ msgstr "Importiere VASP files" #~ msgid "Export VASP files" #~ msgstr "Exportiere VASP files" #~ msgid "WARNING: cutoff energy is lower than recommended minimum!" #~ msgstr "" #~ "WARNUNG: Cutoff Energy ist niedriger als empfohlener Minimalwert!" #~ msgid "Import VASP input files: choose directory ... " #~ msgstr "Importiere VASP Eingabefiles: wähle Ordner …" #~ msgid "Export VASP input files: choose directory ... " #~ msgstr "Exportiere VASP Eingabefiles: wähle Ordne …" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgstr "" #~ "Unbekanntes Keyword: %s\n" #~ "Bitte Prüfen!\n" #~ "\n" #~ "Wenn Sie wirklich der Meinung sind, dass es zur Verfügung stehen sollte, " #~ "fügen \n" #~ "Sie es bitte zum Kopf von ase/calculators/vasp.py hinzu." #~ msgid "Expert user mode" #~ msgstr "Expertenmodus" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "Willkommen im ASE Expertenmodus" #~ msgid "Only selected atoms (sa) " #~ msgstr "Nur ausgewählte Atome (sa)" #~ msgid "Only current frame (cf) " #~ msgstr "Nur dieser frame (cf)" #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "Global: Nutze A, D, E, M, N, R, S, n, frame; Atome: Nutze a, f, m, s, x, " #~ "y, z, Z " #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** WARNUNG: Datei existiert nicht - %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "" #~ "*** WARNUNG: Keine Atome ausgewählt, mit denen gearbeitet werden soll" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** Arbeite nur mit ausgewählten Atomen" #~ msgid "*** Working on all atoms" #~ msgstr "*** Arbeite mit allen Atomen" #~ msgid "*** Only working on current image" #~ msgstr "*** Arbeite nur mit diesm Bild" #~ msgid "*** Working on all images" #~ msgstr "*** Arbeite mit allen Bildern" #~ msgid "Save Terminal text ..." #~ msgstr "Speichere Text von Terminal …" #~ msgid "Cancel" #~ msgstr "Abbrechen" #~ msgid "Algorithm: " #~ msgstr "Algorithmus: " #~ msgid "Convergence criterion: Fmax = " #~ msgstr "Konvergenzkriterium: Fmax = " #~ msgid "Max. number of steps: " #~ msgstr "Maximale Schrittzahl: " #~ msgid "Pseudo time step: " #~ msgstr "Pseudozeitschritt: " #~ msgid "Energy minimization" #~ msgstr "Energieminimierung" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "Minimiere die Energie bezüglich Positionen." #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "Minimierung abgeborchen nach %i Schritten." #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "Benötige zu viel Speicher, nutzen Sie vielleicht LBFGS" #~ msgid "Minimization completed in %i steps." #~ msgstr "Minimierung beendet nach %i Schritten." #~ msgid "Step number %s of %s." #~ msgstr "Schritt Nummer %s von %s." #~ msgid "Energy minimization:" #~ msgstr "Energieminimierung:" #~ msgid "Step number: " #~ msgstr "Schrittnummer: " #~ msgid "unknown" #~ msgstr "unbekannt" #~ msgid "Status: " #~ msgstr "Status: " #~ msgid "Iteration: " #~ msgstr "Iteration: " #~ msgid "Wave functions: " #~ msgstr "Wellenfunktionen: " #~ msgid "Density: " #~ msgstr "Dichte: " #~ msgid "Energy: " #~ msgstr "Energie: " #~ msgid "GPAW version: " #~ msgstr "GPAW Version: " #~ msgid "Memory estimate: " #~ msgstr "Speicherabschätzung: " #~ msgid "No info" #~ msgstr "Keine Information" #~ msgid "Initializing" #~ msgstr "Initialisiere" #~ msgid "Positions:" #~ msgstr "Positionen:" #~ msgid "Starting calculation" #~ msgstr "Starte Berechnung" #~ msgid "unchanged" #~ msgstr "unverändert" #~ msgid "Self-consistency loop" #~ msgstr "Selbstkonsistenzschleife" #~ msgid "Calculating forces" #~ msgstr "Berechne Kräfte" #~ msgid " (converged)" #~ msgstr " (konvergiert)" #~ msgid "To get a full traceback, use: ase-gui --verbose" #~ msgstr "Für eine vollständige Rückverfolgung nutze: ase-gui --verbose" #~ msgid "No atoms loaded." #~ msgstr "Keine Atome geladen." #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC(111) nicht-orthogonal" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC(110) nicht-orthogonal" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC(111) nicht-orthogonal" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP(0001) nicht-orthogonal" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% des idealen)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " Lagen, " #~ msgid " Ã… vacuum" #~ msgstr " Ã… Vakuum" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\tNoch keine Größeninformation vorhanden." #~ msgid "%i atoms." #~ msgstr "%i Atome." #~ msgid "Invalid element." #~ msgstr "Ungültiges Element." #~ msgid "No structure specified!" #~ msgstr "Nicht spezifiziert!" #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "%(struct)s Gitterkonstanten unbekannt für %(element)s." #~ msgid "By atomic number, user specified" #~ msgstr "Gemäß Ordnungszahl, user specified" #~ msgid "By coordination" #~ msgstr "Gemäß Koordinierung" #~ msgid "Manually specified" #~ msgstr "Per Hand spezifiziert" #~ msgid "All the same color" #~ msgstr "Alle mit der gleichen Farge" #~ msgid " Steps: " #~ msgstr " Schritte: " #~ msgid "This should not be displayed!" #~ msgstr "Das sollte nicht dargestellt werden!" #~ msgid "Create a color scale:" #~ msgstr "Erzeuge Farbskala:" #~ msgid "Black - white" #~ msgstr "Schwarz - Weiß" #~ msgid "Black - red - yellow - white" #~ msgstr "Schwarz - Rot - Gelb - Weiß" #~ msgid "Black - green - white" #~ msgstr "Schwarz - Grün - Weiß" #~ msgid "Black - blue - cyan" #~ msgstr "Schwarz - Blau - Cyan" #~ msgid "Blue - white - red" #~ msgstr "Blau - Weiß - Rot" #~ msgid "Named colors" #~ msgstr "Benannte Farben" #~ msgid "Create" #~ msgstr "Erzeuge" #~ msgid "ERROR" #~ msgstr "FEHLER" #~ msgid "Incorrect color specification" #~ msgstr "Fehlerhafte Farbspezifizierung" #~ msgid " selected atoms:" #~ msgstr " gewählte Atome:" #~ msgid "Close" #~ msgstr "Schließen" #~ msgid "Bug Detected" #~ msgstr "Fehler Gefunden" #~ msgid "A programming error has been detected." #~ msgstr "Ein Programmierungsfehler wurde entdeckt." #~ msgid "Report..." #~ msgstr "Berichte …" #~ msgid "Bug Details" #~ msgstr "Fehlerdetails" #~ msgid "Create a new file" #~ msgstr "Erzeuge neue Datei" #~ msgid "New ase.gui window" #~ msgstr "Neues ase.gui Fenster" #~ msgid "Save current file" #~ msgstr "Speichere aktuelle Datei" #~ msgid "Quit" #~ msgstr "Beenden" #~ msgid "_Copy" #~ msgstr "_Kopieren" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "Kopiere aktuelle Auswahl und deren Orientierung in Zwischenablage" #~ msgid "_Paste" #~ msgstr "_Einfügen" #~ msgid "Insert current clipboard selection" #~ msgstr "Füge aktuelle Zwischenablage ein" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "Ändere Markierungen, Momenta und Atomsorten der ausgewählten Atome" #~ msgid "Insert or import atoms and molecules" #~ msgstr "Füge oder importiere Atome und Moleküle" #~ msgid "Delete the selected atoms" #~ msgstr "Lösche ausgewählte Atome" #~ msgid "'xy' Plane" #~ msgstr "'xy' Ebene" #~ msgid "'yz' Plane" #~ msgstr "'yz' Ebene" #~ msgid "'zx' Plane" #~ msgstr "'zx' Ebene" #~ msgid "'yx' Plane" #~ msgstr "'yx' Ebene" #~ msgid "'zy' Plane" #~ msgstr "'zy' Ebene" #~ msgid "'xz' Plane" #~ msgstr "'xz' Ebene" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "Erzeuge Bulk-Kristall mit willkürlicher Orientierung" #~ msgid "Create the most common surfaces" #~ msgstr "Erzeuge häufigste Oberfläche" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "Erzeuge kristallinen Nanopartikel" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "Erzeuge Graphenschicht oder Nanoribbon" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "Setze Berechner, welcher in allen Rechenmodi vewendet wird" #~ msgid "Calculate energy and forces" #~ msgstr "Berechne Energien und Kräfte" #~ msgid "Minimize the energy" #~ msgstr "Minimiere Energie" #~ msgid "Scale system" #~ msgstr "Skaliere System" #~ msgid "Deform system by scaling it" #~ msgstr "Deformiere System durch Skalierung" #~ msgid "Debug ..." #~ msgstr "Debug …" #~ msgid "Orien_t atoms" #~ msgstr "Orien_tiere Atome" #~ msgid "Paste" #~ msgstr "Einfügen" #~ msgid "Insert atom or molecule" #~ msgstr "Füge Atom oder Molekül hinzu" #~ msgid "_Load molecule" #~ msgstr "_Lade Molekül" #~ msgid "_Cancel" #~ msgstr "_Abbrechen" #~ msgid "Confirmation" #~ msgstr "Bestätigung" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "Lösche ausgewähltes Atom?" #~ msgstr[1] "Lösche ausgewählte Atome?" #~ msgid "File type:" #~ msgstr "Dateityp:" #~ msgid "Not implemented!" #~ msgstr "Nicht implementiert!" #~ msgid "do you really need it?" #~ msgstr "brenötigen Sie das wirklich?" #~ msgid "Dummy placeholder object" #~ msgstr "Dummy Platzhalterobjekt" #~ msgid "Set all directions to default values" #~ msgstr "Setze alle Richtungen auf default Werten" #~ msgid "Particle size: " #~ msgstr "Teilchengröße: " #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "Titel: %(title)s\n" #~ "Zeit: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: Python Code" #~ msgid "Python code:" #~ msgstr "Python Code:" #~ msgid "Homogeneous scaling" #~ msgstr "Homogene Skalierung" #~ msgid "3D deformation " #~ msgstr "3D Deformierung " #~ msgid "2D deformation " #~ msgstr "2D Deformierung " #~ msgid "1D deformation " #~ msgstr "1D Deformierung " #~ msgid "x-axis" #~ msgstr "x-Achse" #~ msgid "y-axis" #~ msgstr "y-Achse" #~ msgid "z-axis" #~ msgstr "z-Achse" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "Erlaube Deformierung entlang nicht-periodischer Richtung." #~ msgid "Deformation:" #~ msgstr "Deformierung:" #~ msgid "Maximal scale factor: " #~ msgstr "Maximaler Skalenfaktor: " #~ msgid "Scale offset: " #~ msgstr "Skalenoffset: " #~ msgid "Number of steps: " #~ msgstr "Schrittzahl: " #~ msgid "Only positive deformation" #~ msgstr "Nur positive Deformation" #~ msgid "On " #~ msgstr "An " #~ msgid "Off" #~ msgstr "Aus" #~ msgid "Results:" #~ msgstr "Ergebnis:" #~ msgid "Keep original configuration" #~ msgstr "Behalte originale Konfiguration bei" #~ msgid "Load optimal configuration" #~ msgstr "Lade optimale Konfiguration" #~ msgid "Load all configurations" #~ msgstr "Lade alle Konfigurationen" #~ msgid "2nd" #~ msgstr "zweite" #~ msgid "3rd" #~ msgstr "dritte" #~ msgid "Order of fit: " #~ msgstr "Ordnung des Fits: " #~ msgid "Calculation CANCELLED." #~ msgstr "Berechnung ABGEBROCHEN." #~ msgid "Calculation completed." #~ msgstr "Berechnung abgeschlossen." #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "Kein glaubwürdiges Minimum: Alte Konfiguration wird beibehalten." #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "Nicht genügend Daten für Fit\n" #~ "(nur %i Datenpunkte)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "ZURÜCKSETZEN AUF FIT 2TER ORDNUNG\n" #~ "(nur 3 Datenpunkte)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "Kein Minimum gefunden!" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "WARNUNG: Minimum ist außerhalb des Intervalls\n" #~ msgid "It is UNRELIABLE!\n" #~ msgstr "Das ist NICHT ZUVERLÄSSIG!\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "Keine Daten über Kristallstruktur" #~ msgid "Tip for status box ..." #~ msgstr "Tippen für Statusbox …" #~ msgid "Clear constraint" #~ msgstr "Lösche Constraints" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/en_GB/000077500000000000000000000000001316323560300227135ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/en_GB/LC_MESSAGES/000077500000000000000000000000001316323560300245005ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/en_GB/LC_MESSAGES/ag.po000066400000000000000000002405441316323560300254400ustar00rootroot00000000000000# English translations for ASE package # Copyright (C) 2011-2017 ASE developers # This file is distributed under the same license as the ASE package. # # Ask Hjorth Larsen , 2011-2017. # msgid "" msgstr "" "Project-Id-Version: ase-3.5.2\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-20 19:21+0200\n" "PO-Revision-Date: 2017-09-20 19:24+0200\n" "Last-Translator: Ask Hjorth Larsen \n" "Language-Team: English (British) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../add.py:12 msgid "Bad position" msgstr "Bad position" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "Add atoms" #: ../add.py:25 msgid "Absolute position:" msgstr "Absolute position:" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "Add" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "Relative to average position (of selection):" #: ../colors.py:15 msgid "Colors" msgstr "Colours" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "Choose how the atoms are coloured:" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "By atomic number, default \"jmol\" colours" #: ../colors.py:21 msgid "By tag" msgstr "By tag" #: ../colors.py:22 msgid "By force" msgstr "By force" #: ../colors.py:23 msgid "By velocity" msgstr "By velocity" #: ../colors.py:24 msgid "By initial charge" msgstr "By initial charge" #: ../colors.py:25 msgid "By magnetic moment" msgstr "By magnetic moment" #: ../colors.py:69 msgid "Green" msgstr "Green" #: ../colors.py:69 msgid "Yellow" msgstr "Yellow" #: ../constraints.py:8 msgid "Constraints" msgstr "Constraints" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "Constrain" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "selected atoms" #: ../constraints.py:12 msgid "immobile atoms" msgstr "immobile atoms" #: ../constraints.py:13 msgid "Unconstrain" msgstr "Unconstrain" #: ../constraints.py:15 msgid "Clear constraints" msgstr "Clear constraints" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "Create Bulk Crystal by Spacegroup" #: ../crystal.py:85 msgid "Number: 1" msgstr "Number: 1" #: ../crystal.py:87 msgid "Lattice: " msgstr "Lattice: " #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\tSpace group: " #: ../crystal.py:95 msgid "Size: x: " msgstr "Size: x: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " unit cells" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "free" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "equals b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "equals c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "fixed" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "equals a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "equals beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "equals gamma" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "equals alpha" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "Lattice parameters" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\talpha:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tbeta:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tgamma:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "Get from database" #: ../crystal.py:166 msgid "Basis: " msgstr "Basis: " #: ../crystal.py:176 msgid " Element:\t" msgstr " Element:\t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "Creating a crystal." #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "Symbol: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "Number: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "Invalid Spacegroup!" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "Please specify a consistent set of atoms." #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "No valid atoms." #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "You have not (yet) specified a consistent set of parameters." #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "Can't find lattice definition!" #: ../energyforces.py:15 msgid "Output:" msgstr "Output:" #: ../energyforces.py:44 msgid "Save output" msgstr "Save output" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "Potential energy and forces" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "Calculate potential energy and the force on all atoms" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "Write forces on the atoms" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "Potential Energy:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/atom\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "Forces:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "Graphene" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "Structure: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "Infinite sheet" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "Unsaturated ribbon" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "Saturated ribbon" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "Orientation: " #: ../graphene.py:58 msgid "zigzag" msgstr "zigzag" #: ../graphene.py:58 msgid "armchair" msgstr "armchair" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " Bond length: " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "Saturation: " #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "Width: " #: ../graphene.py:97 msgid " Length: " msgstr " Length: " #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "Vacuum: " #: ../graphene.py:153 msgid " No element specified!" msgstr " No element specified!" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "Please specify a consistent set of atoms. " #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "Plot" #: ../graphs.py:46 msgid "Save" msgstr "Save" #: ../graphs.py:47 msgid "Clear" msgstr "Clear" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "Save data to file ... " #: ../gui.py:286 msgid "Automatic" msgstr "Automatic" #: ../gui.py:304 msgid "Open ..." msgstr "Open ..." #: ../gui.py:305 msgid "Choose parser:" msgstr "Choose parser:" #: ../gui.py:416 msgid "_File" msgstr "_File" #: ../gui.py:417 msgid "_Open" msgstr "_Open" #: ../gui.py:418 msgid "_New" msgstr "_New" #: ../gui.py:419 msgid "_Save" msgstr "_Save" #: ../gui.py:421 msgid "_Quit" msgstr "_Quit" #: ../gui.py:423 msgid "_Edit" msgstr "_Edit" #: ../gui.py:424 msgid "Select _all" msgstr "Select _all" #: ../gui.py:425 msgid "_Invert selection" msgstr "_Invert selection" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "Select _constrained atoms" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "Select _immobile atoms" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "Hide selected atoms" #: ../gui.py:434 msgid "Show selected atoms" msgstr "Show selected atoms" #: ../gui.py:436 msgid "_Modify" msgstr "_Modify" #: ../gui.py:437 msgid "_Add atoms" msgstr "_Add atoms" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "_Delete selected atoms" #: ../gui.py:441 msgid "_First image" msgstr "_First image" #: ../gui.py:442 msgid "_Previous image" msgstr "_Previous image" #: ../gui.py:443 msgid "_Next image" msgstr "_Next image" #: ../gui.py:444 msgid "_Last image" msgstr "_Last image" #: ../gui.py:446 msgid "_View" msgstr "_View" #: ../gui.py:447 msgid "Show _unit cell" msgstr "Show _unit cell" #: ../gui.py:449 msgid "Show _axes" msgstr "Show _axes" #: ../gui.py:450 msgid "Show _bonds" msgstr "Show _bonds" #: ../gui.py:452 msgid "Show _velocities" msgstr "Show _velocities" #: ../gui.py:454 msgid "Show _forces" msgstr "Show _forces" #: ../gui.py:456 msgid "Show _Labels" msgstr "Show _Labels" #: ../gui.py:457 msgid "_None" msgstr "_None" #: ../gui.py:458 msgid "Atom _Index" msgstr "Atom _Index" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "_Magnetic Moments" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "_Element Symbol" #: ../gui.py:461 msgid "_Initial Charges" msgstr "_Initial Charges" #: ../gui.py:464 msgid "Quick Info ..." msgstr "Quick Info ..." #: ../gui.py:465 msgid "Repeat ..." msgstr "Repeat ..." #: ../gui.py:466 msgid "Rotate ..." msgstr "Rotate ..." #: ../gui.py:467 msgid "Colors ..." msgstr "Colours ..." #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "Focus" #: ../gui.py:470 msgid "Zoom in" msgstr "Zoom in" #: ../gui.py:471 msgid "Zoom out" msgstr "Zoom out" #: ../gui.py:472 msgid "Change View" msgstr "Change View" #: ../gui.py:474 msgid "Reset View" msgstr "Reset View" #: ../gui.py:475 msgid "xy-plane" msgstr "xy-plane" #: ../gui.py:476 msgid "yz-plane" msgstr "yz-plane" #: ../gui.py:477 msgid "zx-plane" msgstr "zx-plane" #: ../gui.py:478 msgid "yx-plane" msgstr "yx-plane" #: ../gui.py:479 msgid "zy-plane" msgstr "zy-plane" #: ../gui.py:480 msgid "xz-plane" msgstr "xz-plane" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "a2,a3-plane" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "a3,a1-plane" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "a1,a2-plane" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "a3,a2-plane" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "a1,a3-plane" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "a2,a1-plane" #: ../gui.py:487 msgid "Settings ..." msgstr "Settings ..." #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "_Tools" #: ../gui.py:495 msgid "Graphs ..." msgstr "Graphs ..." #: ../gui.py:496 msgid "Movie ..." msgstr "Film ..." #: ../gui.py:497 msgid "Expert mode ..." msgstr "Expert mode ..." #: ../gui.py:498 msgid "Constraints ..." msgstr "Constraints ..." #: ../gui.py:499 msgid "Render scene ..." msgstr "Render scene ..." #: ../gui.py:500 msgid "_Move atoms" msgstr "_Move atoms" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "_Rotate atoms" #: ../gui.py:502 msgid "NE_B" msgstr "NE_B" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "B_ulk Modulus" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "_Setup" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "_Bulk Crystal" #: ../gui.py:508 msgid "_Surface slab" msgstr "_Surface slab" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "_Nanoparticle" #: ../gui.py:511 msgid "Nano_tube" msgstr "Nano_tube" #: ../gui.py:514 msgid "_Calculate" msgstr "_Calculate" #: ../gui.py:515 msgid "Set _Calculator" msgstr "Set _Calculator" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "_Energy and Forces" #: ../gui.py:517 msgid "Energy Minimization" msgstr "Energy Minimization" #: ../gui.py:520 msgid "_Help" msgstr "_Help" #: ../gui.py:521 msgid "_About" msgstr "_About" #: ../gui.py:525 msgid "Webpage ..." msgstr "Webpage ..." #. Host window will never be shown #: ../images.py:192 msgid "Constraints discarded" msgstr "Constraints discarded" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "Constraints other than FixAtoms have been discarded." #: ../modify.py:19 msgid "No atoms selected!" msgstr "No atoms selected!" #: ../modify.py:22 msgid "Modify" msgstr "Modify" #: ../modify.py:25 msgid "Change element" msgstr "Change element" #: ../modify.py:28 msgid "Tag" msgstr "Tag" #: ../modify.py:30 msgid "Moment" msgstr "Moment" #: ../movie.py:11 msgid "Movie" msgstr "Film" #: ../movie.py:12 msgid "Image number:" msgstr "Image number:" #: ../movie.py:18 msgid "First" msgstr "First" #: ../movie.py:19 msgid "Back" msgstr "Back" #: ../movie.py:20 msgid "Forward" msgstr "Forward" #: ../movie.py:21 msgid "Last" msgstr "Last" #: ../movie.py:23 msgid "Play" msgstr "Play" #: ../movie.py:24 msgid "Stop" msgstr "Stop" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Rock" #: ../movie.py:41 msgid " Frame rate: " msgstr " Frame rate: " #: ../movie.py:41 msgid " Skip frames: " msgstr " Skip frames: " #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "Face centered cubic (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "Body centered cubic (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "Simple cubic (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "Hexagonal closed-packed (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "Graphite" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "Nanoparticle" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "Get structure" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "Structure:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "Lattice constant: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "Layer specification" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Wulff construction" #: ../nanoparticle.py:166 msgid "Method: " msgstr "Method: " #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "Add new direction:" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "Information about the created cluster:" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "Number of atoms: " #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " Approx. diameter: " #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "Automatic Apply" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "Creating a nanoparticle." #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "Apply" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "OK" #: ../nanoparticle.py:227 msgid "Up" msgstr "Up" #: ../nanoparticle.py:228 msgid "Down" msgstr "Down" #: ../nanoparticle.py:229 msgid "Delete" msgstr "Delete" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "Number of atoms" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "Diameter" #: ../nanoparticle.py:279 msgid "above " msgstr "above " #: ../nanoparticle.py:279 msgid "below " msgstr "below " #: ../nanoparticle.py:279 msgid "closest " msgstr "closest " #: ../nanoparticle.py:282 msgid "Smaller" msgstr "Smaller" #: ../nanoparticle.py:283 msgid "Larger" msgstr "Larger" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "Choose size using:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "atoms" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "Rounding: If exact size is not possible, choose the size:" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "Surface energies (as energy/area, NOT per atom):" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "Number of layers:" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "At least one index must be non-zero" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "Invalid hexagonal indices" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "Unsupported or unknown structure" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "Element = {0}, structure = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" #: ../nanotube.py:40 msgid "Nanotube" msgstr "Nanotube" #: ../nanotube.py:43 msgid "Bond length: " msgstr "Bond length: " #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "Select roll-up vector (n,m) and tube length:" #: ../nanotube.py:49 msgid "Length:" msgstr "Length:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "Single image loaded." #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "Image %d loaded (0 - %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "Unit cell is fixed." #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "Unit cell varies." #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "This frame has no atoms." #: ../quickinfo.py:53 msgid "no" msgstr "no" #: ../quickinfo.py:53 msgid "yes" msgstr "yes" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "Periodic: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "Volume: " #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "Render current view in povray ... " #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "Rendering %d atoms." #: ../render.py:26 msgid "Size" msgstr "Size" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "Line width" #: ../render.py:32 msgid "Ã…ngström" msgstr "Ã…ngström" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "Render constraints" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "Render unit cell" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "Output basename: " #: ../render.py:43 msgid "Output filename: " msgstr "Output filename: " #: ../render.py:48 msgid "Atomic texture set:" msgstr "Atomic texture set:" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "Camera type: " #: ../render.py:56 msgid "Camera distance" msgstr "Camera distance" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "Render current frame" #: ../render.py:60 msgid "Render all frames" msgstr "Render all frames" #: ../render.py:65 msgid "Run povray" msgstr "Run povray" #: ../render.py:66 msgid "Keep povray files" msgstr "Keep povray files" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "Show output window" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "Transparent background" #: ../render.py:72 msgid "Render" msgstr "Render" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " #: ../render.py:206 msgid "Width" msgstr "Width" #: ../render.py:206 msgid " Height" msgstr " Height" #: ../render.py:228 msgid "Angstrom " msgstr "Angstrom " #: ../render.py:238 msgid "Set" msgstr "Set" #: ../render.py:242 msgid " Filename: " msgstr " Filename: " #: ../render.py:254 msgid " Default texture for atoms: " msgstr " Default texture for atoms: " #: ../render.py:255 msgid " transparency: " msgstr " transparency: " #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "Define atom selection for new texture:" #: ../render.py:260 msgid "Select" msgstr "Select" #: ../render.py:264 msgid "Create new texture from selection" msgstr "Create new texture from selection" #: ../render.py:267 msgid "Help on textures" msgstr "Help on textures" #: ../render.py:284 msgid " Camera distance" msgstr " Camera distance" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "Render all %d frames" #: ../render.py:298 msgid "Run povray " msgstr "Run povray " #: ../render.py:301 msgid "Keep povray files " msgstr "Keep povray files " #: ../render.py:389 msgid " transparency: " msgstr " transparency: " #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" "Can not create new texture! Must have some atoms selected to create a new " "material!" #: ../repeat.py:10 msgid "Repeat" msgstr "Repeat" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "Repeat atoms:" #: ../repeat.py:15 msgid "Set unit cell" msgstr "Set unit cell" #: ../rotate.py:13 msgid "Rotate" msgstr "Rotate" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "Rotation angles:" #: ../rotate.py:18 msgid "Update" msgstr "Update" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." #: ../save.py:26 msgid "Save ..." msgstr "Save ..." #: ../settings.py:10 msgid "Settings" msgstr "Settings" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "Constraints:" #: ../settings.py:16 msgid "release" msgstr "release" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr " selected atoms" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "Constrain immobile atoms" #: ../settings.py:19 msgid "Clear all constraints" msgstr "Clear all constraints" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "Visibility:" #: ../settings.py:23 msgid "Hide" msgstr "Hide" #: ../settings.py:25 msgid "show" msgstr "show" #: ../settings.py:27 msgid "View all atoms" msgstr "View all atoms" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "Miscellaneous:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "Scale atomic radii:" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " (rerun simulation)" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (continue simulation)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "Select starting configuration:" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "There are currently %i configurations loaded." #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "Choose which one to use as the initial configuration" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "The first configuration %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "Configuration number " #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "The last configuration %s." #: ../simulation.py:92 msgid "Run" msgstr "Run" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "No calculator: Use Calculate/Set Calculator on the menu." #: ../simulation.py:123 msgid "No atoms present" msgstr "No atoms present" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr " tag=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr " mom={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr " q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "dihedral" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(110)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10-10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "DIAMOND(100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "diamond" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "DIAMOND(111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "Surface" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "Orthogonal cell:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "Lattice constant:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "Size: \tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "Creating a surface." #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "Please enter an even value for orthogonal cell" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "Please enter a value divisible by 3 for orthogonal cell" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr " Vacuum: {} Ã…." #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "{symbol} {surf} surface with {natoms} atom.{vacuum}" msgstr[1] "{symbol} {surf} surface with {natoms} atoms.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "Error" #: ../ui.py:53 msgid "Version" msgstr "Version" #: ../ui.py:54 msgid "Web-page" msgstr "Web-page" #: ../ui.py:55 msgid "About" msgstr "About" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "Help" #: ../widgets.py:11 msgid "Element:" msgstr "Element:" #: ../widgets.py:39 msgid "No element specified!" msgstr "No element specified!" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "ERROR: Invalid element!" #: ../widgets.py:75 msgid "No Python code" msgstr "No Python code" #~ msgid "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgstr "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgid "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgstr "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimized to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgstr "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimised to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgstr "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgid "" #~ "The EAM/ADP potential is a many-body potential\n" #~ "implementation of the Embedded Atom Method and\n" #~ "equipotential plus the Angular Dependent Potential,\n" #~ "which is an extension of the EAM to include\n" #~ "directional bonds. EAM is suited for FCC metallic\n" #~ "bonding while the ADP is suited for metallic bonds\n" #~ "with some degree of directionality.\n" #~ "\n" #~ "For EAM see M.S. Daw and M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "For ADP see Y. Mishin, M.J. Mehl, and\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029--4041.\n" #~ "\n" #~ "Data for the potential is contained in a file in either LAMMPS Alloy\n" #~ "or ADP format which need to be loaded before use. The Interatomic\n" #~ "Potentials Repository Project at http://www.ctcms.nist.gov/potentials/\n" #~ "contains many suitable potential files.\n" #~ "\n" #~ "For large simulations the LAMMPS calculator is more\n" #~ "suitable; this implementation is mainly to make EAM\n" #~ "available when LAMMPS is not installed or to develop\n" #~ "new EAM/ADP poentials by matching results using ab\n" #~ "initio.\n" #~ msgstr "" #~ "The EAM/ADP potential is a many-body potential\n" #~ "implementation of the Embedded Atom Method and\n" #~ "equipotential plus the Angular Dependent Potential,\n" #~ "which is an extension of the EAM to include\n" #~ "directional bonds. EAM is suited for FCC metallic\n" #~ "bonding while the ADP is suited for metallic bonds\n" #~ "with some degree of directionality.\n" #~ "\n" #~ "For EAM see M.S. Daw and M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "For ADP see Y. Mishin, M.J. Mehl, and\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029--4041.\n" #~ "\n" #~ "Data for the potential is contained in a file in either LAMMPS Alloy\n" #~ "or ADP format which need to be loaded before use. The Interatomic\n" #~ "Potentials Repository Project at http://www.ctcms.nist.gov/potentials/\n" #~ "contains many suitable potential files.\n" #~ "\n" #~ "For large simulations the LAMMPS calculator is more\n" #~ "suitable; this implementation is mainly to make EAM\n" #~ "available when LAMMPS is not installed or to develop\n" #~ "new EAM/ADP poentials by matching results using ab\n" #~ "initio.\n" #~ msgid "" #~ "The Brenner potential is a reactive bond-order potential for\n" #~ "carbon and hydrocarbons. As a bond-order potential, it takes\n" #~ "into account that carbon orbitals can hybridize in different\n" #~ "ways, and that carbon can form single, double and triple\n" #~ "bonds. That the potential is reactive means that it can\n" #~ "handle gradual changes in the bond order as chemical bonds\n" #~ "are formed or broken.\n" #~ "\n" #~ "The Brenner potential is implemented in Asap, based on a\n" #~ "C implentation published at http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "The potential is documented here:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgstr "" #~ "The Brenner potential is a reactive bond-order potential for\n" #~ "carbon and hydrocarbons. As a bond-order potential, it takes\n" #~ "into account that carbon orbitals can hybridise in different\n" #~ "ways, and that carbon can form single, double and triple\n" #~ "bonds. That the potential is reactive means that it can\n" #~ "handle gradual changes in the bond order as chemical bonds\n" #~ "are formed or broken.\n" #~ "\n" #~ "The Brenner potential is implemented in Asap, based on a\n" #~ "C implentation published at http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "The potential is documented here:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgid "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgstr "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgid "" #~ "FHI-aims is an external package implementing density\n" #~ "functional theory and quantum chemical methods using\n" #~ "all-electron methods and a numeric local orbital basis set.\n" #~ "For full details, see http://www.fhi-berlin.mpg.de/aims/\n" #~ "or Comp. Phys. Comm. v180 2175 (2009). The ASE\n" #~ "documentation contains information on the keywords and\n" #~ "functionalities available within this interface.\n" #~ msgstr "" #~ "FHI-aims is an external package implementing density\n" #~ "functional theory and quantum chemical methods using\n" #~ "all-electron methods and a numeric local orbital basis set.\n" #~ "For full details, see http://www.fhi-berlin.mpg.de/aims/\n" #~ "or Comp. Phys. Comm. v180 2175 (2009). The ASE\n" #~ "documentation contains information on the keywords and\n" #~ "functionalities available within this interface.\n" #~ msgid "" #~ "WARNING:\n" #~ "Your system seems to have more than zero but less than\n" #~ "three periodic dimensions. Please check that this is\n" #~ "really what you want to compute. Assuming full\n" #~ "3D periodicity for this calculator." #~ msgstr "" #~ "WARNING:\n" #~ "Your system seems to have more than zero but less than\n" #~ "three periodic dimensions. Please check that this is\n" #~ "really what you want to compute. Assuming full\n" #~ "3D periodicity for this calculator." #~ msgid "" #~ "VASP is an external package implementing density\n" #~ "functional functional theory using pseudopotentials\n" #~ "or the projector-augmented wave method together\n" #~ "with a plane wave basis set. For full details, see\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgstr "" #~ "VASP is an external package implementing density\n" #~ "functional functional theory using pseudopotentials\n" #~ "or the projector-augmented wave method together\n" #~ "with a plane wave basis set. For full details, see\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgid "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgstr "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgid "Alternative Cu, Ag and Au" #~ msgstr "Alternative Cu, Ag and Au" #~ msgid "Ruthenium" #~ msgstr "Ruthenium" #~ msgid "CuMg and CuZr metallic glass" #~ msgstr "CuMg and CuZr metallic glass" #~ msgid "Select calculator" #~ msgstr "Select calculator" #~ msgid "Calculator:" #~ msgstr "Calculator:" #~ msgid "None" #~ msgstr "None" #~ msgid "Lennard-Jones (ASAP)" #~ msgstr "Lennard-Jones (ASAP)" #~ msgid "Setup" #~ msgstr "Setup" #~ msgid "EMT - Effective Medium Theory (ASAP)" #~ msgstr "EMT - Effective Medium Theory (ASAP)" #~ msgid "EMT - Effective Medium Theory (ASE)" #~ msgstr "EMT - Effective Medium Theory (ASE)" #~ msgid "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgstr "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgid "Brenner Potential (ASAP)" #~ msgstr "Brenner Potential (ASAP)" #~ msgid "Density Functional Theory (GPAW)" #~ msgstr "Density Functional Theory (GPAW)" #~ msgid "Density Functional Theory (FHI-aims)" #~ msgstr "Density Functional Theory (FHI-aims)" #~ msgid "Density Functional Theory (VASP)" #~ msgstr "Density Functional Theory (VASP)" #~ msgid "Check that the calculator is reasonable." #~ msgstr "Check that the calculator is reasonable." #~ msgid "ASAP is not installed. (Failed to import asap3)" #~ msgstr "ASAP is not installed. (Failed to import asap3)" #~ msgid "You must set up the Lennard-Jones parameters" #~ msgstr "You must set up the Lennard-Jones parameters" #~ msgid "Could not create useful Lennard-Jones calculator." #~ msgstr "Could not create useful Lennard-Jones calculator." #~ msgid "Could not attach EMT calculator to the atoms." #~ msgstr "Could not attach EMT calculator to the atoms." #~ msgid "You must set up the EAM parameters" #~ msgstr "You must set up the EAM parameters" #~ msgid "GPAW is not installed. (Failed to import gpaw)" #~ msgstr "GPAW is not installed. (Failed to import gpaw)" #~ msgid "You must set up the GPAW parameters" #~ msgstr "You must set up the GPAW parameters" #~ msgid "You must set up the FHI-aims parameters" #~ msgstr "You must set up the FHI-aims parameters" #~ msgid "You must set up the VASP parameters" #~ msgstr "You must set up the VASP parameters" #~ msgid "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgstr "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgid "Info" #~ msgstr "Info" #~ msgid "Lennard-Jones parameters" #~ msgstr "Lennard-Jones parameters" #~ msgid "Specify the Lennard-Jones parameters here" #~ msgstr "Specify the Lennard-Jones parameters here" #~ msgid "Epsilon (eV):" #~ msgstr "Epsilon (eV):" #~ msgid "Sigma (Ã…):" #~ msgstr "Sigma (Ã…):" #~ msgid "Shift to make smooth at cutoff" #~ msgstr "Shift to make smooth at cutoff" #~ msgid "EAM parameters" #~ msgstr "EAM parameters" #~ msgid "Import Potential" #~ msgstr "Import Potential" #~ msgid "You need to import the potential file" #~ msgstr "You need to import the potential file" #~ msgid "Import .alloy or .adp potential file ... " #~ msgstr "Import .alloy or .adp potential file ... " #~ msgid "GPAW parameters" #~ msgstr "GPAW parameters" #~ msgid "%i atoms.\n" #~ msgstr "%i atoms.\n" #~ msgid "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgstr "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgid "Non-orthogonal unit cell:\n" #~ msgstr "Non-orthogonal unit cell:\n" #~ msgid "Exchange-correlation functional: " #~ msgstr "Exchange-correlation functional: " #~ msgid "Grid spacing" #~ msgstr "Grid spacing" #~ msgid "Grid points" #~ msgstr "Grid points" #~ msgid "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgstr "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgid "k-points k = (" #~ msgstr "k-points k = (" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgstr "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgid "Spin polarized" #~ msgstr "Spin polarised" #~ msgid "FD - Finite Difference (grid) mode" #~ msgstr "FD - Finite Difference (grid) mode" #~ msgid "LCAO - Linear Combination of Atomic Orbitals" #~ msgstr "LCAO - Linear Combination of Atomic Orbitals" #~ msgid "Mode: " #~ msgstr "Mode: " #~ msgid "sz - Single Zeta" #~ msgstr "sz - Single Zeta" #~ msgid "szp - Single Zeta polarized" #~ msgstr "szp - Single Zeta polarised" #~ msgid "dzp - Double Zeta polarized" #~ msgstr "dzp - Double Zeta polarised" #~ msgid "Basis functions: " #~ msgstr "Basis functions: " #~ msgid "Non-standard mixer parameters" #~ msgstr "Non-standard mixer parameters" #~ msgid "FHI-aims parameters" #~ msgstr "FHI-aims parameters" #~ msgid "Periodic geometry, unit cell is:\n" #~ msgstr "Periodic geometry, unit cell is:\n" #~ msgid "Non-periodic geometry.\n" #~ msgstr "Non-periodic geometry.\n" #~ msgid "Hirshfeld-based dispersion correction" #~ msgstr "Hirshfeld-based dispersion correction" #~ msgid "Spin / initial moment " #~ msgstr "Spin / initial moment " #~ msgid " Charge" #~ msgstr " Charge" #~ msgid " Relativity" #~ msgstr " Relativity" #~ msgid " Threshold" #~ msgstr " Threshold" #~ msgid "Self-consistency convergence:" #~ msgstr "Self-consistency convergence:" #~ msgid "Compute forces" #~ msgstr "Compute forces" #~ msgid "Energy: " #~ msgstr "Energy: " #~ msgid " eV Sum of eigenvalues: " #~ msgstr " eV Sum of eigenvalues: " #~ msgid " eV" #~ msgstr " eV" #~ msgid "Electron density: " #~ msgstr "Electron density: " #~ msgid " Force convergence: " #~ msgstr " Force convergence: " #~ msgid " eV/Ang " #~ msgstr " eV/Ang " #~ msgid "Additional keywords: " #~ msgstr "Additional keywords: " #~ msgid "FHI-aims execution command: " #~ msgstr "FHI-aims execution command: " #~ msgid "Directory for species defaults: " #~ msgstr "Directory for species defaults: " #~ msgid "Set Defaults" #~ msgstr "Set Defaults" #~ msgid "Import control.in" #~ msgstr "Import control.in" #~ msgid "Export control.in" #~ msgstr "Export control.in" #~ msgid "Export parameters ... " #~ msgstr "Export parameters ... " #~ msgid "Import control.in file ... " #~ msgstr "Import control.in file ... " #~ msgid "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgstr "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgstr "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgid "VASP parameters" #~ msgstr "VASP parameters" #~ msgid "Periodic geometry, unit cell is: \n" #~ msgstr "Periodic geometry, unit cell is: \n" #~ msgid ") Cutoff: " #~ msgstr ") Cutoff: " #~ msgid " Precision: " #~ msgstr " Precision: " #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgstr "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgid "Smearing: " #~ msgstr "Smearing: " #~ msgid " order: " #~ msgstr " order: " #~ msgid " width: " #~ msgstr " width: " #~ msgid "Self-consistency convergence: " #~ msgstr "Self-consistency convergence: " #~ msgid "VASP execution command: " #~ msgstr "VASP execution command: " #~ msgid "Import VASP files" #~ msgstr "Import VASP files" #~ msgid "Export VASP files" #~ msgstr "Export VASP files" #~ msgid "WARNING: cutoff energy is lower than recommended minimum!" #~ msgstr "WARNING: cutoff energy is lower than recommended minimum!" #~ msgid "Import VASP input files: choose directory ... " #~ msgstr "Import VASP input files: choose directory ... " #~ msgid "Export VASP input files: choose directory ... " #~ msgstr "Export VASP input files: choose directory ... " #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgstr "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgid "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display color, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcenter of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgstr "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display colour, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcentre of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgid "Expert user mode" #~ msgstr "Expert user mode" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "Welcome to the ASE Expert user mode" #~ msgid "Only selected atoms (sa) " #~ msgstr "Only selected atoms (sa) " #~ msgid "Only current frame (cf) " #~ msgstr "Only current frame (cf) " #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** WARNING: file does not exist - %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "*** WARNING: No atoms selected to work with" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** Only working on selected atoms" #~ msgid "*** Working on all atoms" #~ msgstr "*** Working on all atoms" #~ msgid "*** Only working on current image" #~ msgstr "*** Only working on current image" #~ msgid "*** Working on all images" #~ msgstr "*** Working on all images" #~ msgid "Save Terminal text ..." #~ msgstr "Save Terminal text ..." #~ msgid "Cancel" #~ msgstr "Cancel" #~ msgid "Algorithm: " #~ msgstr "Algorithm: " #~ msgid "Convergence criterion: Fmax = " #~ msgstr "Convergence criterion: Fmax = " #~ msgid "Max. number of steps: " #~ msgstr "Max. number of steps: " #~ msgid "Pseudo time step: " #~ msgstr "Pseudo time step: " #~ msgid "Energy minimization" #~ msgstr "Energy minimisation" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "Minimise the energy with respect to the positions." #~ msgid "Running ..." #~ msgstr "Running ..." #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "Minimisation CANCELLED after %i steps." #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "Out of memory, consider using LBFGS instead" #~ msgid "Minimization completed in %i steps." #~ msgstr "Minimisation completed in %i steps." #~ msgid "Progress" #~ msgstr "Progress" #~ msgid "Scaling deformation:" #~ msgstr "Scaling deformation:" #~ msgid "Step number %s of %s." #~ msgstr "Step number %s of %s." #~ msgid "Energy minimization:" #~ msgstr "Energy minimisation:" #~ msgid "Step number: " #~ msgstr "Step number: " #~ msgid "Fmax: " #~ msgstr "Fmax: " #~ msgid "unknown" #~ msgstr "unknown" #~ msgid "Status: " #~ msgstr "Status: " #~ msgid "Iteration: " #~ msgstr "Iteration: " #~ msgid "log10(change):" #~ msgstr "log10(change):" #~ msgid "Wave functions: " #~ msgstr "Wave functions: " #~ msgid "Density: " #~ msgstr "Density: " #~ msgid "Energy: " #~ msgstr "Energy: " #~ msgid "GPAW version: " #~ msgstr "GPAW version: " #~ msgid "N/A" #~ msgstr "N/A" #~ msgid "Memory estimate: " #~ msgstr "Memory estimate: " #~ msgid "No info" #~ msgstr "No info" #~ msgid "Initializing" #~ msgstr "Initializing" #~ msgid "Positions:" #~ msgstr "Positions:" #~ msgid "Starting calculation" #~ msgstr "Starting calculation" #~ msgid "unchanged" #~ msgstr "unchanged" #~ msgid "Self-consistency loop" #~ msgstr "Self-consistency loop" #~ msgid "Calculating forces" #~ msgstr "Calculating forces" #~ msgid " (converged)" #~ msgstr " (converged)" #~ msgid "To get a full traceback, use: ase-gui --verbose" #~ msgstr "To get a full traceback, use: ase-gui --verbose" #~ msgid "No atoms loaded." #~ msgstr "No atoms loaded." #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC(111) non-orthogonal" #~ msgid "FCC(111) orthogonal" #~ msgstr "FCC(111) orthogonal" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC(110) non-orthogonal" #~ msgid "BCC(110) orthogonal" #~ msgstr "BCC(110) orthogonal" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC(111) non-orthogonal" #~ msgid "BCC(111) orthogonal" #~ msgstr "BCC(111) orthogonal" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP(0001) non-orthogonal" #~ msgid "Element: " #~ msgstr "Element: " #~ msgid "a:" #~ msgstr "a:" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% of ideal)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " layers, " #~ msgid " Ã… vacuum" #~ msgstr " Ã… vacuum" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\tNo size information yet." #~ msgid "%i atoms." #~ msgstr "%i atoms." #~ msgid "Invalid element." #~ msgstr "Invalid element." #~ msgid "No structure specified!" #~ msgstr "No structure specified!" #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "%(struct)s lattice constant unknown for %(element)s." #~ msgid "By atomic number, user specified" #~ msgstr "By atomic number, user specified" #~ msgid "By coordination" #~ msgstr "By coordination" #~ msgid "Manually specified" #~ msgstr "Manually specified" #~ msgid "All the same color" #~ msgstr "All the same colour" #~ msgid "This should not be displayed in forces!" #~ msgstr "This should not be displayed in forces!" #~ msgid "Min: " #~ msgstr "Min: " #~ msgid " Max: " #~ msgstr " Max: " #~ msgid " Steps: " #~ msgstr " Steps: " #~ msgid "This should not be displayed!" #~ msgstr "This should not be displayed!" #~ msgid "Create a color scale:" #~ msgstr "Create a colour scale:" #~ msgid "Black - white" #~ msgstr "Black - white" #~ msgid "Black - red - yellow - white" #~ msgstr "Black - red - yellow - white" #~ msgid "Black - green - white" #~ msgstr "Black - green - white" #~ msgid "Black - blue - cyan" #~ msgstr "Black - blue - cyan" #~ msgid "Blue - white - red" #~ msgstr "Blue - white - red" #~ msgid "Hue" #~ msgstr "Hue" #~ msgid "Named colors" #~ msgstr "Named colours" #~ msgid "Create" #~ msgstr "Create" #~ msgid "ERROR" #~ msgstr "ERROR" #~ msgid "ERR" #~ msgstr "ERR" #~ msgid "Incorrect color specification" #~ msgstr "Incorrect colour specification" #~ msgid " selected atoms:" #~ msgstr " selected atoms:" #~ msgid "Close" #~ msgstr "Close" #~ msgid "Debug" #~ msgstr "Debug" #~ msgid "Bug Detected" #~ msgstr "Bug Detected" #~ msgid "A programming error has been detected." #~ msgstr "A programming error has been detected." #~ msgid "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgstr "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgid "Report..." #~ msgstr "Report..." #~ msgid "Details..." #~ msgstr "Details..." #~ msgid "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgid "Bug Details" #~ msgstr "Bug Details" #~ msgid "Create a new file" #~ msgstr "Create a new file" #~ msgid "New ase.gui window" #~ msgstr "New ase.gui window" #~ msgid "Save current file" #~ msgstr "Save current file" #~ msgid "Quit" #~ msgstr "Quit" #~ msgid "_Copy" #~ msgstr "_Copy" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "Copy current selection and its orientation to clipboard" #~ msgid "_Paste" #~ msgstr "_Paste" #~ msgid "Insert current clipboard selection" #~ msgstr "Insert current clipboard selection" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "Change tags, moments and atom types of the selected atoms" #~ msgid "Insert or import atoms and molecules" #~ msgstr "Insert or import atoms and molecules" #~ msgid "Delete the selected atoms" #~ msgstr "Delete the selected atoms" #~ msgid "'xy' Plane" #~ msgstr "'xy' Plane" #~ msgid "'yz' Plane" #~ msgstr "'yz' Plane" #~ msgid "'zx' Plane" #~ msgstr "'zx' Plane" #~ msgid "'yx' Plane" #~ msgstr "'yx' Plane" #~ msgid "'zy' Plane" #~ msgstr "'zy' Plane" #~ msgid "'xz' Plane" #~ msgstr "'xz' Plane" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "Create a bulk crystal with arbitrary orientation" #~ msgid "Create the most common surfaces" #~ msgstr "Create the most common surfaces" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "Create a crystalline nanoparticle" #~ msgid "Create a nanotube" #~ msgstr "Create a nanotube" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "Create a graphene sheet or nanoribbon" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "Set a calculator used in all calculation modules" #~ msgid "Calculate energy and forces" #~ msgstr "Calculate energy and forces" #~ msgid "Minimize the energy" #~ msgstr "Minimise the energy" #~ msgid "Scale system" #~ msgstr "Scale system" #~ msgid "Deform system by scaling it" #~ msgstr "Deform system by scaling it" #~ msgid "Debug ..." #~ msgstr "Debug ..." #~ msgid "Orien_t atoms" #~ msgstr "Orien_t atoms" #~ msgid "<>" #~ msgstr "<>" #~ msgid "Paste" #~ msgstr "Paste" #~ msgid "Insert atom or molecule" #~ msgstr "Insert atom or molecule" #~ msgid "_Load molecule" #~ msgstr "_Load molecule" #~ msgid "_Cancel" #~ msgstr "_Cancel" #~ msgid "Atom" #~ msgstr "Atom" #~ msgid "Confirmation" #~ msgstr "Confirmation" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "Delete selected atom?" #~ msgstr[1] "Delete selected atoms?" #~ msgid "File type:" #~ msgstr "File type:" #~ msgid "Not implemented!" #~ msgstr "Not implemented!" #~ msgid "do you really need it?" #~ msgstr "do you really need it?" #~ msgid "Dummy placeholder object" #~ msgstr "Dummy placeholder object" #~ msgid "Set all directions to default values" #~ msgstr "Set all directions to default values" #~ msgid "Particle size: " #~ msgstr "Particle size: " #~ msgid "%.1f Ã…" #~ msgstr "%.1f Ã…" #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: Python code" #~ msgid "Information:" #~ msgstr "Information:" #~ msgid "Python code:" #~ msgstr "Python code:" #~ msgid "Quick Info" #~ msgstr "Quick Info" #~ msgid "Homogeneous scaling" #~ msgstr "Homogeneous scaling" #~ msgid "3D deformation " #~ msgstr "3D deformation " #~ msgid "2D deformation " #~ msgstr "2D deformation " #~ msgid "1D deformation " #~ msgstr "1D deformation " #~ msgid "Bulk" #~ msgstr "Bulk" #~ msgid "x-axis" #~ msgstr "x-axis" #~ msgid "y-axis" #~ msgstr "y-axis" #~ msgid "z-axis" #~ msgstr "z-axis" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "Allow deformation along non-periodic directions." #~ msgid "Deformation:" #~ msgstr "Deformation:" #~ msgid "Maximal scale factor: " #~ msgstr "Maximal scale factor: " #~ msgid "Scale offset: " #~ msgstr "Scale offset: " #~ msgid "Number of steps: " #~ msgstr "Number of steps: " #~ msgid "Only positive deformation" #~ msgstr "Only positive deformation" #~ msgid "On " #~ msgstr "On " #~ msgid "Off" #~ msgstr "Off" #~ msgid "Results:" #~ msgstr "Results:" #~ msgid "Keep original configuration" #~ msgstr "Keep original configuration" #~ msgid "Load optimal configuration" #~ msgstr "Load optimal configuration" #~ msgid "Load all configurations" #~ msgstr "Load all configurations" #~ msgid "Strain\t\tEnergy [eV]" #~ msgstr "Strain\t\tEnergy [eV]" #~ msgid "Fit:" #~ msgstr "Fit:" #~ msgid "2nd" #~ msgstr "2nd" #~ msgid "3rd" #~ msgstr "3rd" #~ msgid "Order of fit: " #~ msgstr "Order of fit: " #~ msgid "Calculation CANCELLED." #~ msgstr "Calculation CANCELLED." #~ msgid "Calculation completed." #~ msgstr "Calculation completed." #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "No trustworthy minimum: Old configuration kept." #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "No minimum found!" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgid "It is UNRELIABLE!\n" #~ msgstr "It is UNRELIABLE!\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "No crystal structure data" #~ msgid "Tip for status box ..." #~ msgstr "Tip for status box ..." #~ msgid "Clear constraint" #~ msgstr "Clear constraint" #~ msgid "DFT" #~ msgstr "DFT" #~ msgid "XC-functional: " #~ msgstr "XC-functional: " #~ msgid "DFT ..." #~ msgstr "DFT ..." #~ msgid "building menus failed: %s" #~ msgstr "building menus failed: %s" #~ msgid "Dacapo netCDF output file" #~ msgstr "Dacapo netCDF output file" #~ msgid "Virtual Nano Lab file" #~ msgstr "Virtual Nano Lab file" #~ msgid "ASE pickle trajectory" #~ msgstr "ASE pickle trajectory" #~ msgid "ASE bundle trajectory" #~ msgstr "ASE bundle trajectory" #~ msgid "GPAW text output" #~ msgstr "GPAW text output" #~ msgid "CUBE file" #~ msgstr "CUBE file" #~ msgid "XCrySDen Structure File" #~ msgstr "XCrySDen Structure File" #~ msgid "Dacapo text output" #~ msgstr "Dacapo text output" #~ msgid "XYZ-file" #~ msgstr "XYZ-file" #~ msgid "VASP POSCAR/CONTCAR file" #~ msgstr "VASP POSCAR/CONTCAR file" #~ msgid "VASP OUTCAR file" #~ msgstr "VASP OUTCAR file" #~ msgid "Protein Data Bank" #~ msgstr "Protein Data Bank" #~ msgid "CIF-file" #~ msgstr "CIF-file" #~ msgid "FHI-aims geometry file" #~ msgstr "FHI-aims geometry file" #~ msgid "FHI-aims output file" #~ msgstr "FHI-aims output file" #~ msgid "TURBOMOLE coord file" #~ msgstr "TURBOMOLE coord file" #~ msgid "exciting input" #~ msgstr "exciting input" #~ msgid "WIEN2k structure file" #~ msgstr "WIEN2k structure file" #~ msgid "DftbPlus input file" #~ msgstr "DftbPlus input file" #~ msgid "ETSF format" #~ msgstr "ETSF format" #~ msgid "CASTEP geom file" #~ msgstr "CASTEP geom file" #~ msgid "CASTEP output file" #~ msgstr "CASTEP output file" #~ msgid "CASTEP trajectory file" #~ msgstr "CASTEP trajectory file" #~ msgid "DFTBPlus GEN format" #~ msgstr "DFTBPlus GEN format" #~ msgid "" #~ "\n" #~ "An exception occurred! Please report the issue to\n" #~ "ase-developers@listserv.fysik.dtu.dk - thanks! Please also report this " #~ "if\n" #~ "it was a user error, so that a better error message can be provided\n" #~ "next time." #~ msgstr "" #~ "\n" #~ "An exception occurred! Please report the issue to\n" #~ "ase-developers@listserv.fysik.dtu.dk - thanks! Please also report this " #~ "if\n" #~ "it was a user error, so that a better error message can be provided\n" #~ "next time." #~ msgid "Max force: %.2f (this frame), %.2f (all frames)" #~ msgstr "Max force: %.2f (this frame), %.2f (all frames)" #~ msgid "Max force: %.2f." #~ msgstr "Max force: %.2f." #~ msgid "Max velocity: %.2f (this frame), %.2f (all frames)" #~ msgstr "Max velocity: %.2f (this frame), %.2f (all frames)" #~ msgid "Max velocity: %.2f." #~ msgstr "Max velocity: %.2f." #~ msgid "Min, max charge: %.2f, %.2f (this frame)," #~ msgstr "Min, max charge: %.2f, %.2f (this frame)," #~ msgid "Min, max charge: %.2f, %.2f." #~ msgstr "Min, max charge: %.2f, %.2f." #~ msgid "XYZ file" #~ msgstr "XYZ file" #~ msgid "ASE trajectory" #~ msgstr "ASE trajectory" #~ msgid "PDB file" #~ msgstr "PDB file" #~ msgid "Gaussian cube file" #~ msgstr "Gaussian cube file" #~ msgid "Python script" #~ msgstr "Python script" #~ msgid "VNL file" #~ msgstr "VNL file" #~ msgid "Portable Network Graphics" #~ msgstr "Portable Network Graphics" #~ msgid "Persistence of Vision" #~ msgstr "Persistence of Vision" #~ msgid "Encapsulated PostScript" #~ msgstr "Encapsulated PostScript" #~ msgid "FHI-aims geometry input" #~ msgstr "FHI-aims geometry input" #~ msgid "VASP geometry input" #~ msgstr "VASP geometry input" #~ msgid "cif file" #~ msgstr "cif file" #~ msgid "Save current image only (#%d)" #~ msgstr "Save current image only (#%d)" #~ msgid "Slice: " #~ msgstr "Slice: " #~ msgid "Help for slice ..." #~ msgstr "Help for slice ..." #~ msgid "ase-gui INTERNAL ERROR: strange response in Save," #~ msgstr "ase-gui INTERNAL ERROR: strange response in Save," #~ msgid "Unknown output format!" #~ msgstr "Unknown output format!" #~ msgid "Use one of: %s" #~ msgstr "Use one of: %s" #~ msgid " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgstr " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgid "%s (a=%.3f Ã…)" #~ msgstr "%s (a=%.3f Ã…)" #~ msgid " %s: %s, Z=%i, %s" #~ msgstr " %s: %s, Z=%i, %s" #~ msgid " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgstr " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgid " %s-%s: %.3f Ã…" #~ msgstr " %s-%s: %.3f Ã…" #~ msgid " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgstr " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgid "dihedral %s->%s->%s->%s: %.1f°" #~ msgstr "dihedral %s->%s->%s->%s: %.1f°" #~ msgid "c:" #~ msgstr "c:" #~ msgid "\t\t%.2f Ã… x %.2f Ã… x %.2f Ã…, %i atoms." #~ msgstr "\t\t%.2f Ã… x %.2f Ã… x %.2f Ã…, %i atoms." #~ msgid "FILE" #~ msgstr "FILE" #~ msgid "%prog [options] [file[, file2, ...]]" #~ msgstr "%prog [options] [file[, file2, ...]]" #~ msgid "NUMBER" #~ msgstr "NUMBER" #~ msgid "" #~ "Pick image(s) from trajectory. NUMBER can be a single number (use a " #~ "negative number to count from the back) or a range: start:stop:step, " #~ "where the \":step\" part can be left out - default values are 0:nimages:1." #~ msgstr "" #~ "Pick image(s) from trajectory. NUMBER can be a single number (use a " #~ "negative number to count from the back) or a range: start:stop:step, " #~ "where the \":step\" part can be left out - default values are 0:nimages:1." #~ msgid "I" #~ msgstr "I" #~ msgid "" #~ "0: Don't show unit cell. 1: Show unit cell. 2: Show all of unit cell." #~ msgstr "" #~ "0: Don't show unit cell. 1: Show unit cell. 2: Show all of unit cell." #~ msgid "Repeat unit cell. Use \"-r 2\" or \"-r 2,3,1\"." #~ msgstr "Repeat unit cell. Use \"-r 2\" or \"-r 2,3,1\"." #~ msgid "Examples: \"-R -90x\", \"-R 90z,-30x\"." #~ msgstr "Examples: \"-R -90x\", \"-R 90z,-30x\"." #~ msgid "Write configurations to FILE." #~ msgstr "Write configurations to FILE." #~ msgid "EXPR" #~ msgstr "EXPR" #~ msgid "" #~ "Plot x,y1,y2,... graph from configurations or write data to sdtout in " #~ "terminal mode. Use the symbols: i, s, d, fmax, e, ekin, A, R, E and F. " #~ "See https://wiki.fysik.dtu.dk/ase/ase/gui.html#plotting-data for more " #~ "details." #~ msgstr "" #~ "Plot x,y1,y2,... graph from configurations or write data to sdtout in " #~ "terminal mode. Use the symbols: i, s, d, fmax, e, ekin, A, R, E and F. " #~ "See https://wiki.fysik.dtu.dk/ase/ase/gui.html#plotting-data for more " #~ "details." #~ msgid "Run in terminal window - no GUI." #~ msgstr "Run in terminal window - no GUI." #~ msgid "Read ANEB data." #~ msgstr "Read ANEB data." #~ msgid "N" #~ msgstr "N" #~ msgid "Interpolate N images between 2 given images." #~ msgstr "Interpolate N images between 2 given images." #~ msgid "Draw bonds between atoms." #~ msgstr "Draw bonds between atoms." ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/es/000077500000000000000000000000001316323560300223505ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/es/LC_MESSAGES/000077500000000000000000000000001316323560300241355ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/es/LC_MESSAGES/ag.po000066400000000000000000002474261316323560300251030ustar00rootroot00000000000000# Spanish translations for ASE package. # Copyright (C) 2012-2017 ASE developers # This file is distributed under the same license as the ASE package. # Max Ramirez , 2012. # Ask Hjorth Larsen , 2012-17. # msgid "" msgstr "" "Project-Id-Version: ase-3.5.2\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-20 19:21+0200\n" "PO-Revision-Date: 2017-09-20 19:27+0200\n" "Last-Translator: Max Ramirez \n" "Language-Team: Spanish\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../add.py:12 msgid "Bad position" msgstr "Posición no válida" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "Agregar átomos" #: ../add.py:25 msgid "Absolute position:" msgstr "Posición absoluta:" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "Agregar" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "Relativo a posición media (de la selección):" #: ../colors.py:15 msgid "Colors" msgstr "Colores" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "Elija el color de los átomos:" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "Por número atómico, colores de \"jmol\" por defecto" #: ../colors.py:21 msgid "By tag" msgstr "Por etiqueta" #: ../colors.py:22 msgid "By force" msgstr "Por fuerza" #: ../colors.py:23 msgid "By velocity" msgstr "Por velocidad" #: ../colors.py:24 msgid "By initial charge" msgstr "Por carga inicial" #: ../colors.py:25 msgid "By magnetic moment" msgstr "Por momento magnético" #: ../colors.py:69 msgid "Green" msgstr "Verde" #: ../colors.py:69 msgid "Yellow" msgstr "Amarillo" #: ../constraints.py:8 msgid "Constraints" msgstr "Restricciones" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "Restricción" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "átomos seleccionados" #: ../constraints.py:12 msgid "immobile atoms" msgstr "átomos inamovibles" #: ../constraints.py:13 msgid "Unconstrain" msgstr "Liberar restricciones" #: ../constraints.py:15 msgid "Clear constraints" msgstr "Quitar las restricciones" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" " Utilice este diálogo para crear estructuras cristalinas.\n" " Seleccione primero la estructura, desde un conjunto de\n" " estructuras cristalinas básicas ó desde la descripción del\n" " grupo espacial.\n" " Luego añada todos los parámetros de red.\n" "\n" " Si dispone de una estructura cristalina experimental para un\n" " átomo, puede buscar el tipo de cristal y la constante de red,\n" " de otra manera tendrá que especificarlas." #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr " %(natoms)i átomos: %(symbols)s, Volumen: %(volume).3f A3" # Crear cristal por grupo espacial #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "Crear cristal por grupo espacial" #: ../crystal.py:85 msgid "Number: 1" msgstr "Número: 1" #: ../crystal.py:87 msgid "Lattice: " msgstr "Red: " #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\tGrupo espacial: " # Tamaño: x: #: ../crystal.py:95 msgid "Size: x: " msgstr "Tamaño: x: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " celdas unitarias" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "libre" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "igual a b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "igual a c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "fijo" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "igual a a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "igual a beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "igual a gama" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "igual a alfa" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "Parámetros de red" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\talfa:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tbeta:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tgamma:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "Obtener desde la base de datos" #: ../crystal.py:166 msgid "Basis: " msgstr "Base: " #: ../crystal.py:176 msgid " Element:\t" msgstr " Elemento:%t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "Creando un cristal." #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "Símbolo: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "Número: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "¡Grupo espacial inválido!" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "Por favor, especifique un conjunto consistente de átomos." #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "Los átomos no son válidos." #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "No ha especificado aún un conjunto consistente de parámetros." #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "¡No puedo encontrar la definición de red!" #: ../energyforces.py:15 msgid "Output:" msgstr "Salida:" #: ../energyforces.py:44 msgid "Save output" msgstr "Guardar salida" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "Energía potencial y fuerzas" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "Calcular la energía potencial y la fuerza en todos los átomos" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "Escribir las fuerzas en los átomos" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "Energía potencial:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/átomo\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "Fuerzas:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "Configure una sábana de grafeno o una nanocinta. Opcionalmente,\n" "la nanocinta puede ser saturada con hidrógeno u otro elemento." #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "Grafeno" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "Estructura: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "Sábana infinita" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "Cinta no saturada" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "Cinta saturada" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "Orientación: " #: ../graphene.py:58 msgid "zigzag" msgstr "Zigzag" #: ../graphene.py:58 msgid "armchair" msgstr "Sillón" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " Largo del enlace: " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "Saturación: " #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "Ancho: " #: ../graphene.py:97 msgid " Length: " msgstr " Largo: " #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "Vacío: " #: ../graphene.py:153 msgid " No element specified!" msgstr " ¡No se especifica el elemento!" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "Por favor, especifique un conjunto consistente de átomos. " #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" "Ayuda para graficar ...\n" "\n" "e: energía total\n" "epot: energía potencial\n" "ekin: energía cinética\n" "fmax: fuerza máxima\n" "fave: fuerza media\n" "R[n,0-2]: posición del átomo de número n\n" "d(n1,n2): distancia entre dos átomos " "n1 y n2\n" "i: número de la imagen actual\n" "E[i]: energía del número de la imagen i\n" "F[n,0-2]: fuerza de en número de átomos de n\n" "V[n,0-2]: velocidad de número de átomos de n\n" "M[n]: momento magnético de número de átomos de n\n" "A[0-2,0-2]: celda unitaria vectores de la base\n" "s: longitud de la trayectoria\n" "a(n1,n2,n3): ángulo entre los átomos n1, " "n2 y n3, centrado en n2\n" "dih(n1,n2,n3,n4): diedro ángulo entre n1, " "n2, n3 y n4\n" "T: temperatura (K)" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "Graficar" #: ../graphs.py:46 msgid "Save" msgstr "Guardar" #: ../graphs.py:47 msgid "Clear" msgstr "Limpiar" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "Salve los datos a un archivo ..." #: ../gui.py:286 msgid "Automatic" msgstr "Automático" #: ../gui.py:304 msgid "Open ..." msgstr "Abrir ..." #: ../gui.py:305 msgid "Choose parser:" msgstr "Elegir parser:" #: ../gui.py:416 msgid "_File" msgstr "_Archivo" #: ../gui.py:417 msgid "_Open" msgstr "_Abrir" #: ../gui.py:418 msgid "_New" msgstr "_Nuevo" #: ../gui.py:419 msgid "_Save" msgstr "_Guardar" #: ../gui.py:421 msgid "_Quit" msgstr "_Salir" #: ../gui.py:423 msgid "_Edit" msgstr "_Editar" #: ../gui.py:424 msgid "Select _all" msgstr "Seleccionar _todo" #: ../gui.py:425 msgid "_Invert selection" msgstr "_Invertir selección" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "Seleccionar los átomos _restringidos" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "Seleccionar los átomos _inmóbiles" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "Ocultar átomos seleccionados" #: ../gui.py:434 msgid "Show selected atoms" msgstr "Mostrar átomos seleccionados" #: ../gui.py:436 msgid "_Modify" msgstr "_Modificar" #: ../gui.py:437 msgid "_Add atoms" msgstr "_Añadir átomos" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "_Borrar átomos seleccionados" #: ../gui.py:441 msgid "_First image" msgstr "_Primera imagen" #: ../gui.py:442 msgid "_Previous image" msgstr "_Imagen previa" #: ../gui.py:443 msgid "_Next image" msgstr "_Próxima imagen" #: ../gui.py:444 msgid "_Last image" msgstr "Ú_ltima imagen" #: ../gui.py:446 msgid "_View" msgstr "_Ver" #: ../gui.py:447 msgid "Show _unit cell" msgstr "Mostrar la celda _unitaria" #: ../gui.py:449 msgid "Show _axes" msgstr "Mostrar los _ejes" #: ../gui.py:450 msgid "Show _bonds" msgstr "Mostrar los _enlaces" #: ../gui.py:452 msgid "Show _velocities" msgstr "Mostrar las _velocidades" #: ../gui.py:454 msgid "Show _forces" msgstr "Mostrar las _fuerzas" #: ../gui.py:456 msgid "Show _Labels" msgstr "Mostrar los _etiquetas" #: ../gui.py:457 msgid "_None" msgstr "_Ninguno" #: ../gui.py:458 msgid "Atom _Index" msgstr "_Ãndice de Atom" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "Momentos _Magnético" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "Símbolo _Químico" #: ../gui.py:461 msgid "_Initial Charges" msgstr "Cargas _iniciales" #: ../gui.py:464 msgid "Quick Info ..." msgstr "Información rápida ..." #: ../gui.py:465 msgid "Repeat ..." msgstr "Repetir ..." #: ../gui.py:466 msgid "Rotate ..." msgstr "Rotar ..." #: ../gui.py:467 msgid "Colors ..." msgstr "Colores ..." #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "Enfocar" #: ../gui.py:470 msgid "Zoom in" msgstr "Ampliar" #: ../gui.py:471 msgid "Zoom out" msgstr "Alejar" #: ../gui.py:472 msgid "Change View" msgstr "Cambiar de vista" #: ../gui.py:474 msgid "Reset View" msgstr "Reiniciar la vista" #: ../gui.py:475 msgid "xy-plane" msgstr "plano xy" #: ../gui.py:476 msgid "yz-plane" msgstr "plano yz" #: ../gui.py:477 msgid "zx-plane" msgstr "plano xz" #: ../gui.py:478 msgid "yx-plane" msgstr "plano yx" #: ../gui.py:479 msgid "zy-plane" msgstr "plano zy" #: ../gui.py:480 msgid "xz-plane" msgstr "plano xz" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "plano a2,a3" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "plano a3,a1" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "plano a1,a2" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "plano a3,a2" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "plano a1,a3" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "plano a2,a1" #: ../gui.py:487 msgid "Settings ..." msgstr "Ajustes ..." #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "_Herramientas" #: ../gui.py:495 msgid "Graphs ..." msgstr "Gráficos ..." #: ../gui.py:496 msgid "Movie ..." msgstr "Película ..." #: ../gui.py:497 msgid "Expert mode ..." msgstr "Modo experto ..." #: ../gui.py:498 msgid "Constraints ..." msgstr "Restricciones ..." #: ../gui.py:499 msgid "Render scene ..." msgstr "Dibujar escena ..." #: ../gui.py:500 msgid "_Move atoms" msgstr "_Mover los átomos" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "_Rotar los átomos" #: ../gui.py:502 msgid "NE_B" msgstr "NE_B" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "Módulo de b_ulto" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "_Configurar" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "Cristal en _bulto" #: ../gui.py:508 msgid "_Surface slab" msgstr "Trozo de _superficie" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "_Nanopartícula" #: ../gui.py:511 msgid "Nano_tube" msgstr "Nano_tubo" #: ../gui.py:514 msgid "_Calculate" msgstr "_Calcular" #: ../gui.py:515 msgid "Set _Calculator" msgstr "Fijar el _calculador" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "_Energía y Fuerzas" #: ../gui.py:517 msgid "Energy Minimization" msgstr "Minimización de energía" #: ../gui.py:520 msgid "_Help" msgstr "_Ayuda" #: ../gui.py:521 msgid "_About" msgstr "_Acerca de ag" #: ../gui.py:525 msgid "Webpage ..." msgstr "Página web ..." #. Host window will never be shown #: ../images.py:192 msgid "Constraints discarded" msgstr "Restricciones descartadas" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "Se han descartado las restricciones salvo FixAtoms." #: ../modify.py:19 msgid "No atoms selected!" msgstr "¡No hay átomos seleccionados!" #: ../modify.py:22 msgid "Modify" msgstr "Modificar" #: ../modify.py:25 msgid "Change element" msgstr "Cambiar elemento" #: ../modify.py:28 msgid "Tag" msgstr "Etiqueta" #: ../modify.py:30 msgid "Moment" msgstr "Momento magnético" #: ../movie.py:11 msgid "Movie" msgstr "Película" #: ../movie.py:12 msgid "Image number:" msgstr "Imagen número:" #: ../movie.py:18 msgid "First" msgstr "Primero" #: ../movie.py:19 msgid "Back" msgstr "Volver" #: ../movie.py:20 msgid "Forward" msgstr "Avanzar" #: ../movie.py:21 msgid "Last" msgstr "Último" #: ../movie.py:23 msgid "Play" msgstr "Reproducir" #: ../movie.py:24 msgid "Stop" msgstr "Detener" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Repetir cuadro" #: ../movie.py:41 msgid " Frame rate: " msgstr "Velocidad del cuadro: " #: ../movie.py:41 msgid " Skip frames: " msgstr "Saltar los cuadros: " #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" "Crear una nanopartícula especificando el número de capas,\n" "ó utilizando la construcción de Wulff. Por favor, presione\n" "el boton de ayuda para leer las instrucciones sobre cómo\n" "especificar las direcciones.\n" "¡ADVERTENCIA: En esta versión, la construcción de Wulff \n" "sólo funciona para cristales cúbicos!\n" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" "\n" "Este módulo crea una nanopartícula o un cúmulo dada una\n" "estructura cristalina.\n" "\n" "1) Seleccione el elemento, la estructura cristalina y la(s)\n" " constante(s) de red. El botón \"Obtener estructura\" \n" " encontrará los datos para el elemento seleccionado.\n" "\n" "2) Elija si desea especificar el número de capas en cada \n" " dirección, o si desea utilizar la construcción de Wulff.\n" " En el último caso, se debe especificar las energías de \n" " superficie en cada dirección, y el tamaño del cúmulo.\n" "\n" "Cómo especificar las direcciones:\n" "---------------------------------\n" "\n" "La primera vez una dirección aparece, la cual es interpretada\n" "como la familia completa de las direcciones, es decir, (0,0,1)\n" "también cubre la dirección (1,0,0), (-1,0,0) etc. Si una de estas\n" "direcciones es especificada nuevamente, la segunda especificación\n" "reemplaza esa dirección en específico. Debido a esto, el orden\n" "importa y se puede rearreglar la dirección con los botones Arriba y\n" "Abajo. También se puede añadir una nueva dirección, recuerde presionar\n" "el botón Añadir o ésta no será incluida.\n" "\n" "Ejemplo: (1,0,0) (1,1,1), (0,0,1) especificará la familia {100} de\n" "direcciones, la familia {111} y luego la dirección (001), \n" "sobreescribiendo el valor dado por toda la familia de direcciones.\n" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "Cúbico centrado en las caras (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "Cúbico centrado en el cuerpo (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "Cúbico simple (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "Empacamiento hexagonal cerrado (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "Grafito" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "Nanopartícula" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "Obtener la estructura" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "Estructura:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "Constante de red: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "Especificación de capas" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Construcción de Wulff" #: ../nanoparticle.py:166 msgid "Method: " msgstr "Método: " #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "Agregar nueva dirección:" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "Información sobre el cluster creado:" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "Número de átomos: " #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " Diámetro aproximado: " #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "Aplicar automáticamente" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "Creando una nanopartícula." #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "Aplicar" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "Aceptar" #: ../nanoparticle.py:227 msgid "Up" msgstr "Arriba" #: ../nanoparticle.py:228 msgid "Down" msgstr "Abajo" #: ../nanoparticle.py:229 msgid "Delete" msgstr "Borrar" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "Número de átomos" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "Diámetro" #: ../nanoparticle.py:279 msgid "above " msgstr "sobre " #: ../nanoparticle.py:279 msgid "below " msgstr "abajo " #: ../nanoparticle.py:279 msgid "closest " msgstr "más cercano " #: ../nanoparticle.py:282 msgid "Smaller" msgstr "Mas pequeño" #: ../nanoparticle.py:283 msgid "Larger" msgstr "Más largo" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "Seleccionar tamaño usando:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "átomos" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "Redondear: si el tamaño exacto no es posible, elegir el tamaño:" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "Energía de superficie (se reporta energía por área, NO por átomo):" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "Número de capas:" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "Al menos un índice debe ser distinto de cero" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "Ãndices hexagonales inválidos" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "Estructura no soportada o desconocida" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "Elemento = {0}, estructura = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "Configure un nanotubo de carbono specificando el vector de roll-up.\n" "Note que m <= n.\n" "\n" "Nanotubos de otros elementos se pueden construir especificando el elemento y " "largo del enlace." #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" "{natoms} átomos, diámetro: {diameter:.3f} Ã…, longitud total " "{total_length:.3f} Ã…" #: ../nanotube.py:40 msgid "Nanotube" msgstr "Nanotubo" #: ../nanotube.py:43 msgid "Bond length: " msgstr "Largo del enlace: " #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "Seleccione vector de roll-up (n,m) y largo del tubo:" #: ../nanotube.py:49 msgid "Length:" msgstr "Largo:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "Una imagen cargada." #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "Imagen %d cargada (0 - %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "La celda unitaria está fija." #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "La celda unitaria varía." #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "Número de átomos: %d.\n" "\n" "Celda unitaria:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "Este cuadro no tiene átomos." #: ../quickinfo.py:53 msgid "no" msgstr "no" #: ../quickinfo.py:53 msgid "yes" msgstr "sí" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "Periódico: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "Volumen: " #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "Dibujar vista actual en povray ... " #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "Dibujando %d átomos." #: ../render.py:26 msgid "Size" msgstr "Tamaño" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "Ancho de la línea" #: ../render.py:32 msgid "Ã…ngström" msgstr "Ã…ngström" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "Restricciones del dibujo" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "Dibujar celda unitaria" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "Nombre base para el archivo de salida: " #: ../render.py:43 msgid "Output filename: " msgstr "Nombre de archivo de salida: " #: ../render.py:48 msgid "Atomic texture set:" msgstr "Conjunto de texturas atómicas:" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "Tipo de cámara: " #: ../render.py:56 msgid "Camera distance" msgstr "Distancia de la cámara" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "Dibujar el cuadro actual" #: ../render.py:60 msgid "Render all frames" msgstr "Dibujar todos los cuadros" #: ../render.py:65 msgid "Run povray" msgstr "Ejecutar povray" #: ../render.py:66 msgid "Keep povray files" msgstr "Mantener los archivos povray" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "Mostrar ventana de salida" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "Fondo transparente" #: ../render.py:72 msgid "Render" msgstr "Dibujar" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" " Las texturas pueden ser utilizadas para destacar diferentes partes\n" " de una estructura atómica. Esta ventana aplica la textura por defecto\n" " a la estructura completa. Opcionalmente, aplica una textura distinta\n" " a subconjuntos de átomos, los cuales pueden ser seleccionados " "utilizando\n" " el ratón.\n" " Además, en esta versión de ASE, se implementa un método de\n" " selección alternativo, el cual está basado en expresiones\n" " booleanas. Estas se pueden fijar en la caja de entrada, utilizando\n" " las variables x, y, z ó Z. Por ejemplo, la expresión\n" " Z == 11 and x > 10 and y > 10 marcará todos los átomos de sodio\n" " con x o coordenadas mayores que 10. En cualquier caso, el botón\n" " 'Crear nueva estructura desde la selección' activará los cambios a\n" " los atributos de la selección actual.\n" " " #: ../render.py:206 msgid "Width" msgstr "Ancho" #: ../render.py:206 msgid " Height" msgstr " Altura" #: ../render.py:228 msgid "Angstrom " msgstr "Angstrom " #: ../render.py:238 msgid "Set" msgstr "Fijar" #: ../render.py:242 msgid " Filename: " msgstr " Nombre de archivo: " #: ../render.py:254 msgid " Default texture for atoms: " msgstr " Textura por defecto para los átomos: " #: ../render.py:255 msgid " transparency: " msgstr " transparencia: " #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "Definir al selección del átomo para la nueva textura:" #: ../render.py:260 msgid "Select" msgstr "Seleccionar" #: ../render.py:264 msgid "Create new texture from selection" msgstr "Crear nueva textura desde selección" #: ../render.py:267 msgid "Help on textures" msgstr "Ayuda en texturas" #: ../render.py:284 msgid " Camera distance" msgstr " Distancia de la cámara" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "Dibujar todos los %d cuadros" #: ../render.py:298 msgid "Run povray " msgstr "Ejecutar povray " #: ../render.py:301 msgid "Keep povray files " msgstr "Mantener los archivos povray " #: ../render.py:389 msgid " transparency: " msgstr " transparencia: " #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" "¡No se puede crear la nueva textura! ¡Se debe seleccionar algunos átomos " "para crear un nuevo material!" #: ../repeat.py:10 msgid "Repeat" msgstr "Repetir" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "Repetir átomos:" #: ../repeat.py:15 msgid "Set unit cell" msgstr "Fijar la celda unitaria" #: ../rotate.py:13 msgid "Rotate" msgstr "Rotar" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "Ãngulos de rotación:" #: ../rotate.py:18 msgid "Update" msgstr "Actualizar" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "Nota:\n" "Usted puede rotar libremente\n" "con el ratón, presionando el\n" "botón número 2 del ratón." #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" "Agregue \"@n\" al nombre para escribir imágen número \"n\" en vez de la\n" "imágen actual. Agregue \"@principio:fin\" o \"@principio:fin:paso\" para\n" "escribir una secuencia de imágenes. Puede omitir \"principio\" y \"fin\"\n" "y así \"nombre@:\" incluirá todas las imágenes. Números negativos se\n" "cuentan desde la última imágen. Ejemplos: \"nombre@-1\": última, \"nombre@-2:" "\": las\n" "dos últimas." #: ../save.py:26 msgid "Save ..." msgstr "Guardar ..." #: ../settings.py:10 msgid "Settings" msgstr "Ajustes" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "Restricciones:" #: ../settings.py:16 msgid "release" msgstr "Soltar" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr " átomos seleccionados" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "Restringir los átomos inmóbiles" #: ../settings.py:19 msgid "Clear all constraints" msgstr "Eliminar todas las restricciones" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "Visibilidad:" #: ../settings.py:23 msgid "Hide" msgstr "Esconder" #: ../settings.py:25 msgid "show" msgstr "Mostrar" #: ../settings.py:27 msgid "View all atoms" msgstr "Ver todos los átomos" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "Misceláneos:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "Radio de escala atómica:" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " (recalcular la simulación)" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (continuar simulación)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "Seleccione la configuración inicial:" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "Actualmente hay %i configuraciones cargadas." # Elegir cual será utilizada como la configuración inicial #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "Elegir cual será utilizada como la configuración inicial" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "La primera configuración %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "Configuración número " #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "La última configuración %s." #: ../simulation.py:92 msgid "Run" msgstr "Calcular" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "No hay un calculador. Use Calcular/Fijar Calculador en el menú." #: ../simulation.py:123 msgid "No atoms present" msgstr "No hay átomos presentes" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr " etiqueta=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr " mom={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr " q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "diedral" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" "Use esta ventana para crear un trozo de superficie. Seleccione el\n" "elemento escribiendo el símbolo químico ó el número atómico en la\n" "caja. Luego, seleccione la estructura de la superficie deseada. Note\n" "que algunas estructuras pueden ser creadas con una celda unitaria or-\n" "togonal u no ortogonal. En estos casos, la celda unitaria no ortogonal\n" "contendrá menos átomos.\n" "\n" "Si la estructura coincide con la estructura cristalina experimental, usted\n" "podrá buscar la constante de red en la base de datos de ASE. En otro caso, \n" "tendrá que especificarla manualmente." #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(110)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10-10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "Diamante (100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "diamante" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "Diamante (111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "Superficie" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "Celda unitaria ortogonal:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "Constante de red:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "Tamaño en\tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "Crear un trozo de superficie." #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "Por favor entre un valor par para celda ortogonal" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "Por favor entre un valor divisible por 3 para celda ortogonal" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr " Vacío: {} Ã…." #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "Superficie {surf} de {symbol} con {natoms} átomo.{vacuum}" msgstr[1] "Superficie {surf} de {symbol} con {natoms} átomos.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "Error" #: ../ui.py:53 msgid "Version" msgstr "Versión" #: ../ui.py:54 msgid "Web-page" msgstr "Página web" #: ../ui.py:55 msgid "About" msgstr "Acerca de ag" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "Ayuda" #: ../widgets.py:11 msgid "Element:" msgstr "Elemento:" #: ../widgets.py:39 msgid "No element specified!" msgstr "¡No se especifica el elemento!" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "ERROR: ¡elemento inválido!" #: ../widgets.py:75 msgid "No Python code" msgstr "No es código de Python" #~ msgid "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgstr "" #~ "Para realizar la mayoría de los calculos sobre los átomos,\n" #~ "se debe primero definir y asociar un objeto calculador \n" #~ "(Calculator) con éstos. ASE soporta un número de calculadores, \n" #~ "los cuales además de poder realizar cálculos sobre distintos \n" #~ "elementos, implementan también modelos físicos diferentes para \n" #~ "las interacciones interatómicas." #~ msgid "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgstr "" #~ "El potencial de pares de Lennard-Jones es uno de los \n" #~ "modelos más simples para las interacciones atómicas. \n" #~ "Éste es adecuado para describir y modelar sistemas \n" #~ "compuestos de gases nobles.\n" #~ "\n" #~ "Las interacciones en este potencial son descritas por \n" #~ "un largo de interacción y una fuerza de interacción." #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimized to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgstr "" #~ "El potencial EMT es un potencial de muchos cuerpos, el cual describe\n" #~ "de manera correcta a los metales de transición que cristalizan en una\n" #~ "estructura tipo FCC. Los elementos descritos por el conjunto de pará-\n" #~ "metros del EMT son Al, Ni, Cu, Pd, Ag, Pt y Au. Sin embargo, la " #~ "descripción\n" #~ "de este potencial para el aluminio no es adecuado para su uso en la\n" #~ "ciencia de materiales, ya que la energía de apilamiento es incorrecta.\n" #~ "\n" #~ "Con ASE se provee un conjunto de parámetros para este potencial.\n" #~ "\n" #~ "Parámetros por defecto:\n" #~ "\n" #~ "Los parámetros por defecto de este potencial son extraídos de la " #~ "siguiente\n" #~ "publicación: K. W. Jacobsen, P. Stoltze y J. K. Nørskov, Surf. Sci. \n" #~ "366, 394 (1996).\n" #~ "\n" #~ "Parámetros alternativos para Cu, Ag y Au:\n" #~ "\n" #~ "Un conjunto de parámetros alternativo para Cu, Ag y Au fueron " #~ "reoptimizados\n" #~ "con datos experimentales incluyendo la energía de apilamiento " #~ "(parcialmente no\n" #~ "publicada) por Torben Rasmussen.\n" #~ "\n" #~ "Rutenio:\n" #~ "\n" #~ "Los parámetros para Rutenio fueron extraídos de la publicación J. " #~ "Gavnholt y\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Vidrios metálicos:\n" #~ "\n" #~ "Conjunto de parámetros para vidrios metálicos compuestos de MgCu y CuZr. " #~ "Los\n" #~ "parámetros para MgCu fueron extraídos desde N. P. Bailey, J. Schiøtz y \n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004). Para CuZr " #~ "los\n" #~ "parámetros fueron extraídos de la publicación A. Paduraru, A. Kenoufi, \n" #~ "N. P. Bailey y J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgstr "" #~ "El potencial EMT es un potencial de muchos cuerpos, el\n" #~ "cual describe de manera correcta a los metales de tran-\n" #~ "sición que cristalizan en una estructura tipo FCC. Los \n" #~ "elementos descritos por el conjunto de parámetros del \n" #~ "EMT son Al, Ni, Cu, Pd, Ag, Pt y Au. Adicionalmente, esta\n" #~ "implementación permite el uso de H, N, O y C. Sin embargo, \n" #~ "la descripción de estos no es muy buena.\n" #~ "\n" #~ "Esta es la implementación de ASE de EMT. Para simu-\n" #~ "laciones más grandes la implementación ASAP es más confiable.\n" #~ "Esta implemetación es para tener un EMT cuando ASAP no está\n" #~ "instalado.\n" #~ msgid "" #~ "The EAM/ADP potential is a many-body potential\n" #~ "implementation of the Embedded Atom Method and\n" #~ "equipotential plus the Angular Dependent Potential,\n" #~ "which is an extension of the EAM to include\n" #~ "directional bonds. EAM is suited for FCC metallic\n" #~ "bonding while the ADP is suited for metallic bonds\n" #~ "with some degree of directionality.\n" #~ "\n" #~ "For EAM see M.S. Daw and M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "For ADP see Y. Mishin, M.J. Mehl, and\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029--4041.\n" #~ "\n" #~ "Data for the potential is contained in a file in either LAMMPS Alloy\n" #~ "or ADP format which need to be loaded before use. The Interatomic\n" #~ "Potentials Repository Project at http://www.ctcms.nist.gov/potentials/\n" #~ "contains many suitable potential files.\n" #~ "\n" #~ "For large simulations the LAMMPS calculator is more\n" #~ "suitable; this implementation is mainly to make EAM\n" #~ "available when LAMMPS is not installed or to develop\n" #~ "new EAM/ADP poentials by matching results using ab\n" #~ "initio.\n" #~ msgstr "" #~ "El potencial EAM/ADP es una implementación del método «embedded atom»\n" #~ "(EAM) y equipotencial más el potencial direccional (ADP) como\n" #~ "potencial de muchos cuerpos. ADP es una extensión del EAM para\n" #~ "incluir enlaces direccionales. El EAM es adecuado para enlaces\n" #~ "metálicos FCC mientras ADP es adecuado para enlaces metálicos con\n" #~ "cierto carácter direccional.\n" #~ "\n" #~ "Para EAM véase M.S. Daw y M.I. Baskes,\n" #~ "Phys. Rev. Letters 50 (1983) 1285.\n" #~ "\n" #~ "Para ADP véase Y. Mishin, M.J. Mehl, y\n" #~ "D.A. Papaconstantopoulos, Acta Materialia 53 2005\n" #~ "4029--4041.\n" #~ "\n" #~ "Los datos del potencial se encuentran en un fichero con formato LAMMPS\n" #~ "Alloy o ADP, que necesita ser cargado antes de usarse. Muchos ficheros\n" #~ "de potenciales adecuados están disponibles en el proyecto de\n" #~ "potenciales interatómicos en http://www.ctcms.nist.gov/potentials/.\n" #~ "\n" #~ "Para simulaciones grandes el calculador LAMMPS es más eficiente; esta\n" #~ "implementación sirve principalmente para que EAM esté disponible cuando\n" #~ "LAMMPS no se haya instalado o para desarrollar nuevos potenciales\n" #~ "EAM/ADP comparando los resultados con aquellos obtenidos con métodos\n" #~ "ab-initio.\n" #~ msgid "" #~ "The Brenner potential is a reactive bond-order potential for\n" #~ "carbon and hydrocarbons. As a bond-order potential, it takes\n" #~ "into account that carbon orbitals can hybridize in different\n" #~ "ways, and that carbon can form single, double and triple\n" #~ "bonds. That the potential is reactive means that it can\n" #~ "handle gradual changes in the bond order as chemical bonds\n" #~ "are formed or broken.\n" #~ "\n" #~ "The Brenner potential is implemented in Asap, based on a\n" #~ "C implentation published at http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "The potential is documented here:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgstr "" #~ "El potencial de Brenner es un potencial reactivo al orden\n" #~ "del enlace para carbón e hidrocarbones. Como es un potencial\n" #~ "con orden de enlace, toma en cuenta que los orbitales de \n" #~ "carbono pueden hibridizarse de diferentes maneras, y que el\n" #~ "carbon puede formar enlaces simples, dobles y triples. \n" #~ "Que el potencial sea reactivo significa que puede manejar \n" #~ "cambios graduales en el orden del enlace, como por ejemplo\n" #~ " que los enlaces químicos se pueden crear y destruir.\n" #~ "\n" #~ "El potencial de Brenner está implementado en ASAP, basado \n" #~ "en una implementación de C publicada en \n" #~ "\n" #~ "http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "El potencial está documentado aquí:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802. \n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgid "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgstr "" #~ "GPAW implementa la teoría del funcional de la densidad\n" #~ "utilizando una representación en el espacio real basado\n" #~ "en grillas de las funciones de onda, y el método de las\n" #~ "ondas aumentadas proyectadas para manejar las regiones\n" #~ "del núcleo.\n" #~ msgid "" #~ "FHI-aims is an external package implementing density\n" #~ "functional theory and quantum chemical methods using\n" #~ "all-electron methods and a numeric local orbital basis set.\n" #~ "For full details, see http://www.fhi-berlin.mpg.de/aims/\n" #~ "or Comp. Phys. Comm. v180 2175 (2009). The ASE\n" #~ "documentation contains information on the keywords and\n" #~ "functionalities available within this interface.\n" #~ msgstr "" #~ "FHI-aims es un paquete externo que implementa la teoría del \n" #~ "funcional de la densidad y métodos químicos cuánticos utilizando\n" #~ "métodos con todos los electrones y bases numéricas locales. \n" #~ "\n" #~ "Para mayores detalles, visite\n" #~ "\n" #~ "http://www.fhi-berlin.mpg.de/aims/ \n" #~ "\n" #~ "o revise la referencia Comp. Phys. Comm. v180 2175 (2009). \n" #~ "La documentación de ASE contiene información sobre las \n" #~ "palabras clave y las funcionalidades disponibles en esta \n" #~ "interfaz.\n" #~ msgid "" #~ "WARNING:\n" #~ "Your system seems to have more than zero but less than\n" #~ "three periodic dimensions. Please check that this is\n" #~ "really what you want to compute. Assuming full\n" #~ "3D periodicity for this calculator." #~ msgstr "" #~ "ADVERTENCIA: al parecer su sistema tiene más de una pero menos\n" #~ "de tres dimensiones periódicas. Por favor, compruebe que esto es\n" #~ "realmente lo que desea calcular. Asumiendo periodicidad 3D completa\n" #~ "para éste cálculo." #~ msgid "" #~ "VASP is an external package implementing density\n" #~ "functional functional theory using pseudopotentials\n" #~ "or the projector-augmented wave method together\n" #~ "with a plane wave basis set. For full details, see\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgstr "" #~ "VASP es un paquete externo, el cual implementa la\n" #~ "teoría del funcional de la densidad utilizando\n" #~ "pseudopotenciales ó el método de las ondas proyectadas\n" #~ "y aumentadas en conjunto con un conjunto de ondas planas.\n" #~ "Para más detalles, visite\n" #~ "\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgid "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgstr "Por defecto (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgid "Alternative Cu, Ag and Au" #~ msgstr "Parámetros alternativos para Cu, Ag y Au" #~ msgid "Ruthenium" #~ msgstr "Rutenio" #~ msgid "CuMg and CuZr metallic glass" #~ msgstr "Vidrios metálicos de CuMg y CuZr" #~ msgid "Select calculator" #~ msgstr "Seleccione Calculador (Calculator)" #~ msgid "Calculator:" #~ msgstr "Calculador:" #~ msgid "None" #~ msgstr "Ninguno" #~ msgid "Lennard-Jones (ASAP)" #~ msgstr "Lennard-Jones (ASAP)" #~ msgid "Setup" #~ msgstr "Configuración" # EMT - Effective Medium Theory (ASAP) #~ msgid "EMT - Effective Medium Theory (ASAP)" #~ msgstr "EMT - Teoría Media Efectiva (ASAP)" #~ msgid "EMT - Effective Medium Theory (ASE)" #~ msgstr "EMT - Teoría Media Efectiva (ASE)" #~ msgid "EAM - Embedded Atom Method/Angular Dependent Potential (ASE)" #~ msgstr "EAM - Método «embedded atom»/potencial direccional (ASE)" #~ msgid "Brenner Potential (ASAP)" #~ msgstr "Potencial de Brenner (ASAP)" #~ msgid "Density Functional Theory (GPAW)" #~ msgstr "Teoría del funcional de la densidad (GPAW)" #~ msgid "Density Functional Theory (FHI-aims)" #~ msgstr "Teoría del funcional de la densidad (FHI-aims)" #~ msgid "Density Functional Theory (VASP)" #~ msgstr "Teoría del funcional de la densidad (VASP)" #~ msgid "Check that the calculator is reasonable." #~ msgstr "Compruebe que el calculador sea razonable." #~ msgid "ASAP is not installed. (Failed to import asap3)" #~ msgstr "ASAP no está instalado. (Error al importar asap3)" #~ msgid "You must set up the Lennard-Jones parameters" #~ msgstr "Usted debe establecer los parámetros del potencial de Lennard-Jones" #~ msgid "Could not create useful Lennard-Jones calculator." #~ msgstr "No se pudo crear un calculador Lennard-Jones útil." #~ msgid "Could not attach EMT calculator to the atoms." #~ msgstr "No se pudo adjuntar el calculador EMT a los átomos." #~ msgid "You must set up the EAM parameters" #~ msgstr "Debe establecer los parámetros para EAM" #~ msgid "GPAW is not installed. (Failed to import gpaw)" #~ msgstr "GPAW no está instalado (Error al importar gpaw)" #~ msgid "You must set up the GPAW parameters" #~ msgstr "Debe establecer los parámetros para GPAW" #~ msgid "You must set up the FHI-aims parameters" #~ msgstr "Debe establecer los parámetros para FHI-aims" #~ msgid "You must set up the VASP parameters" #~ msgstr "Debe establecer los parámetros para VASP" #~ msgid "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgstr "El elemento %(sym)s no está permitido para el calculador '%(name)s'" #~ msgid "Info" #~ msgstr "Información" #~ msgid "Lennard-Jones parameters" #~ msgstr "Parámetros de Lennard-Jones" #~ msgid "Specify the Lennard-Jones parameters here" #~ msgstr "Especifique los parámetros de Lennard-Jones aquí" # Epsilon (eV) #~ msgid "Epsilon (eV):" #~ msgstr "Epsilon (eV):" #~ msgid "Sigma (Ã…):" #~ msgstr "Sigma (Ã…):" #~ msgid "Shift to make smooth at cutoff" #~ msgstr "Cambie para que el corte sea suave" #~ msgid "EAM parameters" #~ msgstr "Parámetros de EAM" #~ msgid "Import Potential" #~ msgstr "Importar potencial" #~ msgid "You need to import the potential file" #~ msgstr "Se necesita importar el fichero del potencial" #~ msgid "Import .alloy or .adp potential file ... " #~ msgstr "Importar fichero potencial .alloy o .adp ..." #~ msgid "GPAW parameters" #~ msgstr "Parámetros de GPAW" #~ msgid "%i atoms.\n" #~ msgstr "átomos %i.\n" #~ msgid "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgstr "Celda unitaria ortogonal: %.2f x %.2f x %.2f Ã…." #~ msgid "Non-orthogonal unit cell:\n" #~ msgstr "Celda unitaria no ortogonal:\n" #~ msgid "Exchange-correlation functional: " #~ msgstr "Funcional de intercambio y correlación: " #~ msgid "Grid spacing" #~ msgstr "Espacio de grilla" #~ msgid "Grid points" #~ msgstr "Puntos de grilla" #~ msgid "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgstr "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgid "k-points k = (" #~ msgstr "puntos k k=(" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgstr "Tamaño de los puntos k: (%.1f, %.1f, %.1f) Ã…" #~ msgid "Spin polarized" #~ msgstr "Polarizado de espín" #~ msgid "FD - Finite Difference (grid) mode" #~ msgstr "Modo de grilla tipo diferencias finitas" #~ msgid "LCAO - Linear Combination of Atomic Orbitals" #~ msgstr "LCAO - Combinaciones lineales de orbitales atómicos" #~ msgid "Mode: " #~ msgstr "Modo: " #~ msgid "sz - Single Zeta" #~ msgstr "sz - Single Zeta" #~ msgid "szp - Single Zeta polarized" #~ msgstr "szp - Single Zeta polarizado" #~ msgid "dzp - Double Zeta polarized" #~ msgstr "dzp - Doble Zeta polarizado" #~ msgid "Basis functions: " #~ msgstr "Funciones base: " #~ msgid "Non-standard mixer parameters" #~ msgstr "Parámetros combinados no estándar" #~ msgid "FHI-aims parameters" #~ msgstr "Parámetros de FHI-aims" #~ msgid "Periodic geometry, unit cell is:\n" #~ msgstr "Geometría periódica, la celda unitaria es:\n" #~ msgid "Non-periodic geometry.\n" #~ msgstr "Geometría no periódica\n" #~ msgid "Hirshfeld-based dispersion correction" #~ msgstr "Corrección a la dispersión basada en el método de Hirshfeld" #~ msgid "Spin / initial moment " #~ msgstr "Spin / momento inicial" #~ msgid " Charge" #~ msgstr " Carga" #~ msgid " Relativity" #~ msgstr " Relatividad" #~ msgid " Threshold" #~ msgstr " Umbral" #~ msgid "Self-consistency convergence:" #~ msgstr "Convergencia auto-consistente:" #~ msgid "Compute forces" #~ msgstr "Calcule las fuerzas" #~ msgid "Energy: " #~ msgstr "Energía: " #~ msgid " eV Sum of eigenvalues: " #~ msgstr " eV Suma de los autovalores: " #~ msgid " eV" #~ msgstr " eV" #~ msgid "Electron density: " #~ msgstr "Densidad electrónica: " #~ msgid " Force convergence: " #~ msgstr " Convergencia de la fuerza: " #~ msgid " eV/Ang " #~ msgstr " eV/Ã… " #~ msgid "Additional keywords: " #~ msgstr "Palabras clave adicionales: " #~ msgid "FHI-aims execution command: " #~ msgstr "Comando de ejecución por FHI-aims: " #~ msgid "Directory for species defaults: " #~ msgstr "Directorio para las especies por defecto: " #~ msgid "Set Defaults" #~ msgstr "Establecer por defecto" #~ msgid "Import control.in" #~ msgstr "Importar control.in" #~ msgid "Export control.in" #~ msgstr "Exportar control.in" #~ msgid "Export parameters ... " #~ msgstr "Exportar parámetros ... " #~ msgid "Import control.in file ... " #~ msgstr "Importar el archivo control.in ... " #~ msgid "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgstr "" #~ "Por favor use las interfases previstas en esta ventana para manipular la " #~ "palabra clave: \n" #~ "%s!" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgstr "" #~ "No conozco la palabra clave %s\n" #~ "\n" #~ "Por favor, compruebe que la palabra clave esté correcta!\n" #~ "\n" #~ "Si usted realmente piensa que debería estar disponible, por favor " #~ "agrégela al inicio de\n" #~ "\n" #~ "ase/calculators/aims.py." #~ msgid "VASP parameters" #~ msgstr "Parámetros de VASP" #~ msgid "Periodic geometry, unit cell is: \n" #~ msgstr "Geometría periódica, la celda unitaria es: \n" #~ msgid ") Cutoff: " #~ msgstr ") radio de corte: " #~ msgid " Precision: " #~ msgstr " Precisión: " #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgstr "Tamaño de los puntos k: (%.1f, %.1f, %.1f) Ã… " # Smearing: #~ msgid "Smearing: " #~ msgstr "Smearing: " #~ msgid " order: " #~ msgstr " orden: " #~ msgid " width: " #~ msgstr " ancho: " #~ msgid "Self-consistency convergence: " #~ msgstr "Convergencia auto-consistente: " #~ msgid "VASP execution command: " #~ msgstr "Comando de ejecución de VASP: " #~ msgid "Import VASP files" #~ msgstr "Importar archivos de VASP" #~ msgid "Export VASP files" #~ msgstr "Exportar archivos de VASP" #~ msgid "WARNING: cutoff energy is lower than recommended minimum!" #~ msgstr "" #~ "ADVERTENCIA: ¡La energía de corte es más baja que el mínimo " #~ "recomendado!" #~ msgid "Import VASP input files: choose directory ... " #~ msgstr "Importando archivos de entrada de VASP: elija directorio ... " #~ msgid "Export VASP input files: choose directory ... " #~ msgstr "Exportando archivos de salida de VASP: elija directorio ... " #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgstr "" #~ "No conozco esta palabra clave: %s\n" #~ "¡Por favor, revísela!\n" #~ "\n" #~ "Si usted realmente cree que debería estar disponible, por favor\n" #~ "agrégela al inicio del archivo\n" #~ "calculators/vasp.py." #~ msgid "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display color, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcenter of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgstr "" #~ "\n" #~ " Los comandos globales funcionan tanto en todos los cuadros como\n" #~ " en el cuadro actual\n" #~ " - La asignación de una variable global puede no ser refernciada\n" #~ " a una local.\n" #~ " - Utilice el interruptor 'Cuadro actual' para apagar la aplicación\n" #~ " a todos los cuadros.\n" #~ " e: energía total de un cuadro\n" #~ " fmáx: fuerza máxima en un cuadro\n" #~ " A: celda unitaria\n" #~ " E: arreglo con las energías totales en todos los cuadros\n" #~ " F: todas las fuerzas en un cuadro\n" #~ " M: todos los momentos magnéticos\n" #~ " R: todas las posiciones atómicas\n" #~ " S: arreglo booleano, todos los átomos seleccionados\n" #~ " D: arreglo booleano, todos los átomos dinámicos\n" #~ " Ejemplos: cuadro = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Los comandos atómicos funcionan en una selección o en cada uno de\n" #~ " los átomos.\n" #~ " - Éstos pueden utilizar comandos globales en el lado derecho de\n" #~ " una ecuación.\n" #~ " - Utilice 'Sólo los átomos seleccionados' para restringir la\n" #~ " aplicación del comando.\n" #~ " x,y,z: coordenadas atómicas\n" #~ " r,g,b: color del átomo, el rango es [0..1]\n" #~ " rad: radio atómico a mostrar\n" #~ " s: átomo es seleccionado\n" #~ " d: átomo es movible\n" #~ " f: fuerza\n" #~ " Z: número atómico\n" #~ " m: momento magnético\n" #~ " ejemplos: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Comandos especiales y objetos:\n" #~ " sa,cf:(un)restrict to selected atoms/current frame\n" #~ " cuadro: número del cuadro\n" #~ " centrar: centra el sistema con respecto a su celda unitaria\n" #~ " borra S: borra la selección\n" #~ " CM: centro de masa\n" #~ " ans[-i]: el i-ésimo resultado calculado\n" #~ " exec archivo: ejecuta el comando listado en archivo\n" #~ " cov[Z]:(sólo lectura): radio covalente del número atómico Z\n" #~ " gui:avanzado: objeto de Python, ventana de ase-gui\n" #~ " img:avanzado: objeto de imágenes de ase-gui\n" #~ " " #~ msgid "Expert user mode" #~ msgstr "Modo de usuario experto" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "Bienvenido al modo de usuario experto de ASE" #~ msgid "Only selected atoms (sa) " #~ msgstr "Sólo los átomos seleccionados (sa) " #~ msgid "Only current frame (cf) " #~ msgstr "Sólo el cuadro actual (cf) " #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "Global: utilice los cuadros A, D, E, M, N, R, S y n; Ãtomos: utilice a, " #~ "f, m, s, x, y, z y Z" #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** ADVERTENCIA: el archivo no existe - %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "***ADVERTENCIA: No hay átomos seleccionados para trabajar" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** Trabajando sólo en los átomos seleccionados" #~ msgid "*** Working on all atoms" #~ msgstr "*** Trabajando en todos los átomos" #~ msgid "*** Only working on current image" #~ msgstr "*** Trabajando solamente en la imagen actual" #~ msgid "*** Working on all images" #~ msgstr "*** Trabajando en todas las imágenes" #~ msgid "Save Terminal text ..." #~ msgstr "Guarde texto a Terminal ..." #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Algorithm: " #~ msgstr "Algoritmo: " #~ msgid "Convergence criterion: Fmax = " #~ msgstr "Criterio de convergencia: Fmáx = " #~ msgid "Max. number of steps: " #~ msgstr "Número máximo de pasos: " #~ msgid "Pseudo time step: " #~ msgstr "Paso de pseudotiempo: " #~ msgid "Energy minimization" #~ msgstr "Minimización de energía" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "Minimize la energía con respecto a las posiciones." #~ msgid "Running ..." #~ msgstr "Calculando ..." #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "Minimización CANCELADO después de %i iteraciones." #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "No hay más memoria, considere usar el algoritmo LBFGS" #~ msgid "Minimization completed in %i steps." #~ msgstr "Minimización hecha en %i pasos." #~ msgid "Progress" #~ msgstr "Progreso" #~ msgid "Scaling deformation:" #~ msgstr "Escala de deformación:" #~ msgid "Step number %s of %s." #~ msgstr "Paso número %s de %s." #~ msgid "Energy minimization:" #~ msgstr "Minimización de energía:" #~ msgid "Step number: " #~ msgstr "Paso número: " #~ msgid "Fmax: " #~ msgstr "Fmáx: " #~ msgid "unknown" #~ msgstr "desconocido" #~ msgid "Status: " #~ msgstr "Estado: " #~ msgid "Iteration: " #~ msgstr "Iteración: " #~ msgid "log10(change):" #~ msgstr "log10 (cambio):" #~ msgid "Wave functions: " #~ msgstr "Funciones de onda: " #~ msgid "Density: " #~ msgstr "Densidad: " #~ msgid "Energy: " #~ msgstr "Energía: " #~ msgid "GPAW version: " #~ msgstr "Versión de GPAW: " #~ msgid "N/A" #~ msgstr "No disponible" #~ msgid "Memory estimate: " #~ msgstr "Memoria estimada: " #~ msgid "No info" #~ msgstr "No hay información" #~ msgid "Initializing" #~ msgstr "Iniciando" #~ msgid "Positions:" #~ msgstr "Posiciones:" #~ msgid "Starting calculation" #~ msgstr "Comenzando cálculo" #~ msgid "unchanged" #~ msgstr "sin cambios" #~ msgid "Self-consistency loop" #~ msgstr "Bucle de auto consistencia" #~ msgid "Calculating forces" #~ msgstr "Calculando fuerzas" #~ msgid " (converged)" #~ msgstr " (convergido)" #~ msgid "To get a full traceback, use: ase-gui --verbose" #~ msgstr "Para ver el traceback entero, use ase-gui --verbose" #~ msgid "No atoms loaded." #~ msgstr "No hay átomos seleccionados." #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC (111) no ortogonal" #~ msgid "FCC(111) orthogonal" #~ msgstr "FCC (111) ortogonal" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC (110) no ortogonal" #~ msgid "BCC(110) orthogonal" #~ msgstr "BCC (110) ortogonal" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC (111) no ortogonal" #~ msgid "BCC(111) orthogonal" #~ msgstr "BCC (111) ortogonal" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP (0001) no ortogonal" #~ msgid "Element: " #~ msgstr "Elemento: " #~ msgid "a:" #~ msgstr "a:" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% de ideal)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " capas, " #~ msgid " Ã… vacuum" #~ msgstr " vacío en Ã…" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\tNo hay información sobre el tamaño aún." #~ msgid "%i atoms." #~ msgstr "Ãtomos %i." #~ msgid "Invalid element." #~ msgstr "Elemento inválido." #~ msgid "No structure specified!" #~ msgstr "¡No se especificó la estructura!" #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "" #~ "La constante de red %(struct)s es desconocida para el elemento " #~ "%(element)s." #~ msgid "By atomic number, user specified" #~ msgstr "Por número atómico, especificado por el usuario" #~ msgid "By coordination" #~ msgstr "Por coordinación" #~ msgid "Manually specified" #~ msgstr "Especificado manualmente" #~ msgid "All the same color" #~ msgstr "Todos del mismo color" #~ msgid "This should not be displayed in forces!" #~ msgstr "¡Esto no debería ser mostrado en fuerzas!" #~ msgid "Min: " #~ msgstr "Mín: " #~ msgid " Max: " #~ msgstr " Máx: " #~ msgid " Steps: " #~ msgstr " Pasos: " #~ msgid "This should not be displayed!" #~ msgstr "¡Esto no debería ser mostrado!" #~ msgid "Create a color scale:" #~ msgstr "Crear una escala de colores:" #~ msgid "Black - white" #~ msgstr "Negro - blanco" #~ msgid "Black - red - yellow - white" #~ msgstr "Negro - rojo - amarillo - blanco" #~ msgid "Black - green - white" #~ msgstr "Negro - verde - blanco" #~ msgid "Black - blue - cyan" #~ msgstr "Negro - azul - cian" #~ msgid "Blue - white - red" #~ msgstr "Azul - blanco - rojo" #~ msgid "Hue" #~ msgstr "Tonalidad" #~ msgid "Named colors" #~ msgstr "Colores con nombre" #~ msgid "Create" #~ msgstr "Crear" #~ msgid "ERROR" #~ msgstr "ERROR" #~ msgid "ERR" #~ msgstr "ERR" #~ msgid "Incorrect color specification" #~ msgstr "Especificación de color incorrecta" #~ msgid " selected atoms:" #~ msgstr " átomos seleccionados:" #~ msgid "Close" #~ msgstr "Cerrar" #~ msgid "Debug" #~ msgstr "Depurar" #~ msgid "Bug Detected" #~ msgstr "Error detectado" #~ msgid "A programming error has been detected." #~ msgstr "Un error de programación ha sido detectado." #~ msgid "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgstr "" #~ "Probablemente no es fatal. Sin embargo, los detalles deberían\n" #~ "ser reportados a los desarrolladores." #~ msgid "Report..." #~ msgstr "Reporte..." #~ msgid "Details..." #~ msgstr "Detalles..." #~ msgid "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Desde: buggy_application\"\n" #~ "A: bad_programmer\n" #~ "Asunto: Retroalimentación de un error\n" #~ "\n" #~ "%s" #~ msgid "Bug Details" #~ msgstr "Detalles del error" #~ msgid "Create a new file" #~ msgstr "Crear un archivo nuevo" #~ msgid "New ase.gui window" #~ msgstr "Nueva ventana ase.gui" #~ msgid "Save current file" #~ msgstr "Guardar archivo actual" #~ msgid "Quit" #~ msgstr "Salir" #~ msgid "_Copy" #~ msgstr "_Copiar" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "Copiar la selección actual y su orientación" #~ msgid "_Paste" #~ msgstr "_Pegar" #~ msgid "Insert current clipboard selection" #~ msgstr "Insertar selección actual" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "" #~ "Cambiar etiquetas, momentos magnéticos y tipo de los átomos seleccionados" #~ msgid "Insert or import atoms and molecules" #~ msgstr "Insertar o importar átomos y moléculas" #~ msgid "Delete the selected atoms" #~ msgstr "Borrar los átomos seleccionados" #~ msgid "'xy' Plane" #~ msgstr "Plano 'xy'" #~ msgid "'yz' Plane" #~ msgstr "Plano 'yz'" #~ msgid "'zx' Plane" #~ msgstr "Plano 'zx'" #~ msgid "'yx' Plane" #~ msgstr "Plano 'yx'" #~ msgid "'zy' Plane" #~ msgstr "Plano 'zy'" #~ msgid "'xz' Plane" #~ msgstr "Plano 'xz'" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "Crear un cristal en bulto con orientación arbitraria" #~ msgid "Create the most common surfaces" #~ msgstr "Crear las superficies más comunes" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "Crear una nanoparticula cristalina" #~ msgid "Create a nanotube" #~ msgstr "Crear un nanotubo" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "Crear una sábana de grafeno o una nanocinta" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "Fijar un calculador utilizado en todos los módulos de cálculo" #~ msgid "Calculate energy and forces" #~ msgstr "Calcular energía y fuerzas" #~ msgid "Minimize the energy" #~ msgstr "Minimize la energía" #~ msgid "Scale system" #~ msgstr "Escale el sistema" #~ msgid "Deform system by scaling it" #~ msgstr "Deforme el sistema escalándolo" #~ msgid "Debug ..." #~ msgstr "Quitar errores ..." #~ msgid "Orien_t atoms" #~ msgstr "Orien_tar los átomos" #~ msgid "<>" #~ msgstr "<>" #~ msgid "Paste" #~ msgstr "Pegar" #~ msgid "Insert atom or molecule" #~ msgstr "Insertar átomo o molécula" #~ msgid "_Load molecule" #~ msgstr "_Cargar molécula" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "Atom" #~ msgstr "Ãtomo" #~ msgid "Confirmation" #~ msgstr "Confirmación" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "¿Borrar el átomo seleccionado?" #~ msgstr[1] "¿Borrar los átomos seleccionados?" #~ msgid "File type:" #~ msgstr "Tipo de archivo:" #~ msgid "Not implemented!" #~ msgstr "No implementado!" #~ msgid "do you really need it?" #~ msgstr "¿realmente necesita esto?" #~ msgid "Dummy placeholder object" #~ msgstr "Objeto marcador de posición ficticia" #~ msgid "Set all directions to default values" #~ msgstr "Fijar en todas las direcciones los valores por defecto" #~ msgid "Particle size: " #~ msgstr "Tamaño de la partícula: " #~ msgid "%.1f Ã…" #~ msgstr "%.1f Ã…" #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "Título: %(title)s\n" #~ "Tiempo: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: código en Python" #~ msgid "Information:" #~ msgstr "Información:" #~ msgid "Python code:" #~ msgstr "Código en Python:" #~ msgid "Quick Info" #~ msgstr "Información rápida" #~ msgid "Homogeneous scaling" #~ msgstr "Escala homogénea" #~ msgid "3D deformation " #~ msgstr "Deformación en tres dimensiones " #~ msgid "2D deformation " #~ msgstr "Deformación en dos dimensiones " #~ msgid "1D deformation " #~ msgstr "Deformación en una dimensión " #~ msgid "Bulk" #~ msgstr "Bulto" #~ msgid "x-axis" #~ msgstr "eje x" #~ msgid "y-axis" #~ msgstr "eje y" #~ msgid "z-axis" #~ msgstr "eje z" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "Permitir deformaciones a lo largo de direcciones no periódicas." #~ msgid "Deformation:" #~ msgstr "Deformación:" #~ msgid "Maximal scale factor: " #~ msgstr "Factor de escala máximo: " #~ msgid "Scale offset: " #~ msgstr "Compensación de escala: " #~ msgid "Number of steps: " #~ msgstr "Número de pasos: " #~ msgid "Only positive deformation" #~ msgstr "Sólo deformaciones positivas" #~ msgid "On " #~ msgstr "Encendido " #~ msgid "Off" #~ msgstr "Apagado" #~ msgid "Results:" #~ msgstr "Resultados:" #~ msgid "Keep original configuration" #~ msgstr "Mantener la configuración original" #~ msgid "Load optimal configuration" #~ msgstr "Cargar la configuración óptima" #~ msgid "Load all configurations" #~ msgstr "Cargar todas las configuraciones" #~ msgid "Strain\t\tEnergy [eV]" #~ msgstr "Energía de deformación [eV]" #~ msgid "Fit:" #~ msgstr "Ajuste:" #~ msgid "2nd" #~ msgstr "Segundo" #~ msgid "3rd" #~ msgstr "Tercero" #~ msgid "Order of fit: " #~ msgstr "Grado del ajuste: " #~ msgid "Calculation CANCELLED." #~ msgstr "Cálculo CANCELADO." #~ msgid "Calculation completed." #~ msgstr "Cálculo terminado." #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "El mínimo no es confiable: se mantiene la configuración anterior." #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "Datos insuficientes para un ajuste\n" #~ "(sólo hay %i puntos)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "VOLVIENDO A UN AJUSTE DE SEGUNDO ORDEN\n" #~ "(sólo con 3 puntos)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "¡No se encontró el mínimo!" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "ADVERTENCIA: El mínimo está fuera del intervalo\n" #~ msgid "It is UNRELIABLE!\n" #~ msgstr "¡Esto NO es confiable!\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "No existen los datos de estructura cristalina" #~ msgid "Tip for status box ..." #~ msgstr "Consejo para la ventana de estado ..." #~ msgid "Clear constraint" #~ msgstr "Borrar restricción" #~ msgid "DFT" #~ msgstr "DFT" #~ msgid "XC-functional: " #~ msgstr "Funcional de XC: " #~ msgid "DFT ..." #~ msgstr "DFT ..." #~ msgid "building menus failed: %s" #~ msgstr "La construcción de los menús ha fallado: %s" #~ msgid "Dacapo netCDF output file" #~ msgstr "Archivo de salida Dacapo (.netCDF)" #~ msgid "Virtual Nano Lab file" #~ msgstr "Archivo Virtual Nano Lab" #~ msgid "ASE pickle trajectory" #~ msgstr "Trajectoria ASE pickle" #~ msgid "ASE bundle trajectory" #~ msgstr "Trajectoria ASE ligada" #~ msgid "GPAW text output" #~ msgstr "Archivo de salida de texto (GPAW)" #~ msgid "CUBE file" #~ msgstr "Archivo CUBE" #~ msgid "XCrySDen Structure File" #~ msgstr "Archivo de estructura XCrySDen" #~ msgid "Dacapo text output" #~ msgstr "Archivo de salida de texto (Dacapo)" #~ msgid "XYZ-file" #~ msgstr "Archivo XYZ" #~ msgid "VASP POSCAR/CONTCAR file" #~ msgstr "Archivo POSCAR/CONTCAR (VASP)" #~ msgid "VASP OUTCAR file" #~ msgstr "Archivo OUTCAR (VASP)" #~ msgid "Protein Data Bank" #~ msgstr "Banco de datos de proteínas" #~ msgid "CIF-file" #~ msgstr "Archivo CIF" #~ msgid "FHI-aims geometry file" #~ msgstr "Archivo de geometría (FHI-aims)" #~ msgid "FHI-aims output file" #~ msgstr "Archivo de salida (FHI-aims)" #~ msgid "TURBOMOLE coord file" #~ msgstr "Archivo de coordenadas (TURBOMOLE)" #~ msgid "exciting input" #~ msgstr "Archivo de entrada (exciting)" #~ msgid "WIEN2k structure file" #~ msgstr "Archivo de estructura (WIEN2k)" #~ msgid "DftbPlus input file" #~ msgstr "Archivo de entrada (DFTBPlus)" #~ msgid "ETSF format" #~ msgstr "Formato ETSF" #~ msgid "CASTEP geom file" #~ msgstr "Archivo de geometría (CASTEP)" #~ msgid "CASTEP output file" #~ msgstr "Archivo de salida (CASTEP)" #~ msgid "CASTEP trajectory file" #~ msgstr "Archivo de trajectoria (CASTEP)" #~ msgid "DFTBPlus GEN format" #~ msgstr "Formato GEN (DFTBPlus)" #~ msgid "" #~ "\n" #~ "An exception occurred! Please report the issue to\n" #~ "ase-developers@listserv.fysik.dtu.dk - thanks! Please also report this " #~ "if\n" #~ "it was a user error, so that a better error message can be provided\n" #~ "next time." #~ msgstr "" #~ "\n" #~ "Se produjo un error! Por favor, reporte el problema a\n" #~ "\n" #~ "ase-developers@listserv.fysik.dtu.dk \n" #~ "\n" #~ "Muchas gracias! Por favor, reporte también el problema si\n" #~ "fue un error de usuario, de esta forma podemos proveer un\n" #~ "mejor mensaje de error la próxima vez." #~ msgid "Max force: %.2f (this frame), %.2f (all frames)" #~ msgstr "Fuerza máx: %.2f (este cuadro), %.2f (todos los cuadros)" #~ msgid "Max force: %.2f." #~ msgstr "Fuerza máx: %.2f." #~ msgid "Max velocity: %.2f (this frame), %.2f (all frames)" #~ msgstr "Velocidad máxima: %.2f (este cuadro), %.2f (todos los cuadros)" #~ msgid "Max velocity: %.2f." #~ msgstr "Velocidad máxima: %.2f." #~ msgid "Min, max charge: %.2f, %.2f (this frame)," #~ msgstr "Carga mín, máx: %.2f, %.2f (este cuadro)," #~ msgid "Min, max charge: %.2f, %.2f." #~ msgstr "Carga mín, máx: %.2f, %.2f." #~ msgid "XYZ file" #~ msgstr "Archivo XYZ" #~ msgid "ASE trajectory" #~ msgstr "Trajectoria ASE" #~ msgid "PDB file" #~ msgstr "Archivo PDB" #~ msgid "Gaussian cube file" #~ msgstr "Archivo cube (Gaussian)" #~ msgid "Python script" #~ msgstr "Script de Python" #~ msgid "VNL file" #~ msgstr "Archivo VNL" #~ msgid "Portable Network Graphics" #~ msgstr "Archivo PNG" #~ msgid "Persistence of Vision" #~ msgstr "Archivo POV" #~ msgid "Encapsulated PostScript" #~ msgstr "Archivo EPS" #~ msgid "FHI-aims geometry input" #~ msgstr "Geometría de entrada (FHI-aims)" #~ msgid "VASP geometry input" #~ msgstr "Geometría de entrada (VASP)" #~ msgid "cif file" #~ msgstr "Archivo cif" #~ msgid "Save current image only (#%d)" #~ msgstr "Guardar solamente la imagen actual (#%d)" #~ msgid "Slice: " #~ msgstr "Trozo: " #~ msgid "Help for slice ..." #~ msgstr "Ayuda para trozar ..." #~ msgid "ase-gui INTERNAL ERROR: strange response in Save," #~ msgstr "ERROR INTERNO DE ase-gui: respuesta extraña en guardar," #~ msgid "Unknown output format!" #~ msgstr "¡Formato de salida desconocido!" #~ msgid "Use one of: %s" #~ msgstr "Use uno de: %s" #~ msgid " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgstr " %8.3f, %8.3f, %8.3f eV/Ã…\n" #~ msgid "%s (a=%.3f Ã…)" #~ msgstr "%s (a=%.3f Ã…)" #~ msgid " %s: %s, Z=%i, %s" #~ msgstr " %s: %s, Z=%i, %s" #~ msgid " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgstr " #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… " #~ msgid " %s-%s: %.3f Ã…" #~ msgstr " %s-%s: %.3f Ã…" #~ msgid " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgstr " %s-%s-%s: %.1f°, %.1f°, %.1f°" #~ msgid "c:" #~ msgstr "c:" #~ msgid "FILE" #~ msgstr "ARCHIVO" #~ msgid "%prog [options] [file[, file2, ...]]" #~ msgstr "%prog [opciones] [archivo[, archivo2, ...]]" #~ msgid "NUMBER" #~ msgstr "NÚMERO" #~ msgid "I" #~ msgstr "I" #~ msgid "Examples: \"-R -90x\", \"-R 90z,-30x\"." #~ msgstr "Ejemplos: \"-R -90x\", \"-R 90z,-30x\"." #~ msgid "EXPR" #~ msgstr "EXPR" #~ msgid "N" #~ msgstr "N" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/gl/000077500000000000000000000000001316323560300223435ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/gl/LC_MESSAGES/000077500000000000000000000000001316323560300241305ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/gl/LC_MESSAGES/ag.po000066400000000000000000001704101316323560300250620ustar00rootroot00000000000000# Galician translations for ase package. # Copyright (C) 2016-2017 ASE developers # This file is distributed under the same license as the ASE package. # # Alejandro Pérez Paz , 2016-2017. # msgid "" msgstr "" "Project-Id-Version: ase\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-28 19:11+0200\n" "PO-Revision-Date: 2017-09-28 19:12+0200\n" "Last-Translator: Alejandro Pérez Paz \n" "Language-Team: Galician\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../add.py:12 msgid "Bad position" msgstr "Posición inválida" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "Engadir átomos" #: ../add.py:25 msgid "Absolute position:" msgstr "Posición absoluta:" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "Engadir" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "Relativo a unha posición promedio (de selección):" #: ../colors.py:15 msgid "Colors" msgstr "Cores" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "Elixa a cor dos átomos:" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "Por número atómico, cores de \"jmol\" por defecto" #: ../colors.py:21 msgid "By tag" msgstr "Por etiqueta" #: ../colors.py:22 msgid "By force" msgstr "Por forza" #: ../colors.py:23 msgid "By velocity" msgstr "Por velocidade" #: ../colors.py:24 #, fuzzy #| msgid "By charge" msgid "By initial charge" msgstr "Por carga" #: ../colors.py:25 msgid "By magnetic moment" msgstr "Por momento magnético" #: ../colors.py:69 msgid "Green" msgstr "Verde" #: ../colors.py:69 msgid "Yellow" msgstr "Amarelo" #: ../constraints.py:8 msgid "Constraints" msgstr "Restriccións" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "Restricción" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "átomos seleccionados" #: ../constraints.py:12 msgid "immobile atoms" msgstr "átomos fixos" #: ../constraints.py:13 msgid "Unconstrain" msgstr "Liberar restricccións" #: ../constraints.py:15 msgid "Clear constraints" msgstr "Quitar as restriccións" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" " Utilice este diálogo para crear estruturas cristalinas.\n" " Seleccione primeiro a estrutura, desde un conxunto común\n" " de estruturas cristalinas ou ben desde a descripción do grupo\n" " espacial.\n" " Logo engada tódolos parámetros de rede.\n" "\n" " Se dispón dunha estrutura cristalina experimental para un\n" " átomo, pode buscar o tipo de cristal e a constante de rede,\n" " doutro xeito terá que especificalas." #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr " %(natoms)i átomos: %(symbols)s, Volume: %(volume).3f A3" # Crear cristal por grupo espacial #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "Crear cristal polo grupo espacial" #: ../crystal.py:85 msgid "Number: 1" msgstr "Número: 1" #: ../crystal.py:87 msgid "Lattice: " msgstr "Rede: " #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\tGrupo espacial: " # Tamaño: x: #: ../crystal.py:95 msgid "Size: x: " msgstr "Tamaño: x: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " celdas unidades" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "libre" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "igual a b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "igual a c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "fixo" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "igual a a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "igual a beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "igual a gama" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "igual a alfa" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "Parámetros de rede" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\talfa:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tbeta:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tgama:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "Obter desde a base de datos" #: ../crystal.py:166 msgid "Basis: " msgstr "Base: " #: ../crystal.py:176 msgid " Element:\t" msgstr " Elemento:%t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "Creando un cristal." #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "Símbolo: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "Número: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "¡Grupo espacial inválido!" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "Por favor, especifique un conxunto consistente de átomos." #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "Os átomos no son válidos." #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "Aínda non especificou un conxunto consistente de parámetros." #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "¡Non podo atopar a definición de rede!" #: ../energyforces.py:15 msgid "Output:" msgstr "Saída:" #: ../energyforces.py:44 msgid "Save output" msgstr "Gardar saída" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "Enerxía potencial e forzas" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "Calcular a enerxía potencial e a forza en tódolos átomos" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "Escribir forzas nos átomos" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "Enerxía potencial:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/átomo\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "Forzas:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "Faga unha folla de grafeno ou unha nanocinta. Opcionalmente,\n" "a nanocinta pode estar saturada con hidróxeno u outro elemento." #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "Grafeno" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "Estrutura: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "Folla infinita" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "Cinta no saturada" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "Cinta saturada" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "Orientación: " #: ../graphene.py:58 msgid "zigzag" msgstr "Zigzag" #: ../graphene.py:58 msgid "armchair" msgstr "armchair" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " Lonxitude do enlace: " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "Saturación: " #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "Ancho: " #: ../graphene.py:97 msgid " Length: " msgstr " Lonxitude: " #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "Vacío: " #: ../graphene.py:153 msgid " No element specified!" msgstr " ¡Non especificou o elemento!" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "Por favor, especifique un conxunto consistente de átomos. " #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" "Símbolos:\n" "e: enerxía total\n" "epot: enerxía potencial\n" "ekin: enerxía cinética\n" "fmax: forza máxima\n" "fave: forza media\n" "R[n,0-2]: posición do átomo de número n\n" "d(n1,n2): distancia entre dous átomos " "n1 y n2\n" "i: número da imaxe actual\n" "E[i]: enerxía da imaxe número i\n" "F[n,0-2]: forza do átomo número n\n" "V[n,0-2]: velocidade do átomo número n\n" "M[n]: momento magnético do átomo número n\n" "A[0-2,0-2]: vectores base da celda unidade\n" "s: lonxitude da traxectoria\n" "a(n1,n2,n3): ángulo entre os átomos n1, n2 and n3, centrado en n2\n" "dih(n1,n2,n3,n4): ángulo diedro entre n1, " "n2, n3 y n4\n" "T: temperatura (K)" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "Graficar" #: ../graphs.py:46 msgid "Save" msgstr "Gardar" #: ../graphs.py:47 msgid "Clear" msgstr "Limpar" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "Garde os datos nun arquivo ..." #: ../gui.py:286 msgid "Automatic" msgstr "Automático" #: ../gui.py:304 msgid "Open ..." msgstr "Abrir ..." #: ../gui.py:305 msgid "Choose parser:" msgstr "Escolla un párser:" #: ../gui.py:416 msgid "_File" msgstr "_Arquivo" #: ../gui.py:417 msgid "_Open" msgstr "_Abrir" #: ../gui.py:418 msgid "_New" msgstr "_Novo" #: ../gui.py:419 msgid "_Save" msgstr "_Gardar" #: ../gui.py:421 msgid "_Quit" msgstr "_Saír" #: ../gui.py:423 msgid "_Edit" msgstr "_Editar" #: ../gui.py:424 msgid "Select _all" msgstr "Seleccionar _todo" #: ../gui.py:425 msgid "_Invert selection" msgstr "_Invertir selección" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "Seleccionar átomos _restrinxidos" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "Seleccionar átomos _inamovibles" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "Ocultar átomos seleccionados" #: ../gui.py:434 msgid "Show selected atoms" msgstr "Mostrar átomos seleccionados" #: ../gui.py:436 msgid "_Modify" msgstr "_Modificar" #: ../gui.py:437 msgid "_Add atoms" msgstr "_Engadir átomos" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "_Borrar átomos seleccionados" #: ../gui.py:441 msgid "_First image" msgstr "_Primeira imaxe" #: ../gui.py:442 msgid "_Previous image" msgstr "_Imaxe previa" #: ../gui.py:443 msgid "_Next image" msgstr "_Próxima imaxe" #: ../gui.py:444 msgid "_Last image" msgstr "Última imaxe" #: ../gui.py:446 msgid "_View" msgstr "_Ver" #: ../gui.py:447 msgid "Show _unit cell" msgstr "Mostrar celda _unidade" #: ../gui.py:449 msgid "Show _axes" msgstr "Mostrar _eixes" #: ../gui.py:450 msgid "Show _bonds" msgstr "Mostrar _enlaces" #: ../gui.py:452 msgid "Show _velocities" msgstr "Mostrar _velocidades" #: ../gui.py:454 msgid "Show _forces" msgstr "Mostrar _forzas" #: ../gui.py:456 msgid "Show _Labels" msgstr "Mostrar _etiquetas" #: ../gui.py:457 msgid "_None" msgstr "_Ningún" #: ../gui.py:458 msgid "Atom _Index" msgstr "_Ãndice do Ãtomo" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "Momentos _Magnéticos" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "Símbolo _Químico" #: ../gui.py:461 msgid "_Initial Charges" msgstr "" #: ../gui.py:464 msgid "Quick Info ..." msgstr "Información rápida ..." #: ../gui.py:465 msgid "Repeat ..." msgstr "Repetir ..." #: ../gui.py:466 msgid "Rotate ..." msgstr "Xirar ..." #: ../gui.py:467 msgid "Colors ..." msgstr "Cores ..." #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "Enfocar" #: ../gui.py:470 msgid "Zoom in" msgstr "Ampliar" #: ../gui.py:471 msgid "Zoom out" msgstr "Afastar" #: ../gui.py:472 msgid "Change View" msgstr "Cambiar de vista" #: ../gui.py:474 msgid "Reset View" msgstr "Reiniciar Vista" #: ../gui.py:475 msgid "xy-plane" msgstr "plano xy" #: ../gui.py:476 msgid "yz-plane" msgstr "plano yz" #: ../gui.py:477 msgid "zx-plane" msgstr "plano zx" #: ../gui.py:478 msgid "yx-plane" msgstr "plano yx" #: ../gui.py:479 msgid "zy-plane" msgstr "plano zy" #: ../gui.py:480 msgid "xz-plane" msgstr "plano xz" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "Plano a2,a3" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "Plano a3,a1" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "Plano a1,a2" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "Plano a3,a2" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "Plano a1,a3" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "Plano a2,a1" #: ../gui.py:487 msgid "Settings ..." msgstr "Axustes ..." #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "_Ferramentas" #: ../gui.py:495 msgid "Graphs ..." msgstr "Gráficos ..." #: ../gui.py:496 msgid "Movie ..." msgstr "Película ..." #: ../gui.py:497 msgid "Expert mode ..." msgstr "Modo experto ..." #: ../gui.py:498 msgid "Constraints ..." msgstr "Restriccións ..." #: ../gui.py:499 msgid "Render scene ..." msgstr "Debuxar escena ..." #: ../gui.py:500 msgid "_Move atoms" msgstr "_Mover átomos" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "_Xirar átomos" #: ../gui.py:502 msgid "NE_B" msgstr "NE_B" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "Módulo E_nteiro" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "_Configurar" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "Cristal _Enteiro" #: ../gui.py:508 msgid "_Surface slab" msgstr "Peza de _superficie" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "_Nanopartícula" #: ../gui.py:511 msgid "Nano_tube" msgstr "Nano_tubo" #: ../gui.py:514 msgid "_Calculate" msgstr "_Calcular" #: ../gui.py:515 msgid "Set _Calculator" msgstr "Fixar _calculador" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "_Enerxía e Forzas" #: ../gui.py:517 msgid "Energy Minimization" msgstr "Minimización enerxética" #: ../gui.py:520 msgid "_Help" msgstr "_Axuda" #: ../gui.py:521 msgid "_About" msgstr "_Acerca de ag" #: ../gui.py:525 msgid "Webpage ..." msgstr "Páxina web ..." #. Host window will never be shown #: ../images.py:192 #, fuzzy #| msgid "Constraints" msgid "Constraints discarded" msgstr "Restriccións" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "" #: ../modify.py:19 msgid "No atoms selected!" msgstr "Non hai átomos seleccionados." #: ../modify.py:22 msgid "Modify" msgstr "Modificar" #: ../modify.py:25 msgid "Change element" msgstr "Cambiar de elemento" #: ../modify.py:28 msgid "Tag" msgstr "Etiqueta" #: ../modify.py:30 msgid "Moment" msgstr "Momento magnético" #: ../movie.py:11 msgid "Movie" msgstr "Película" #: ../movie.py:12 msgid "Image number:" msgstr "Imaxe número:" #: ../movie.py:18 msgid "First" msgstr "Primeira" #: ../movie.py:19 msgid "Back" msgstr "Atrás" #: ../movie.py:20 msgid "Forward" msgstr "Adiante" #: ../movie.py:21 msgid "Last" msgstr "Última" #: ../movie.py:23 msgid "Play" msgstr "Reproducir" #: ../movie.py:24 msgid "Stop" msgstr "Detener" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Repetir cadro" #: ../movie.py:41 msgid " Frame rate: " msgstr "Velocidade do cadro: " #: ../movie.py:41 msgid " Skip frames: " msgstr "Saltar os cadros: " #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" "Crear unha nanopartícula especificando o número de capas,\n" "ou utilizando a construcción de Wulff. Por favor, presione\n" "o boton de axuda para ler as instruccións sobre cómo\n" "especificar as direccións.\n" "¡ADVERTENCIA: nesta versión, a construcción de Wulff \n" "sólo funciona para cristais cúbicos!\n" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" "\n" "Este módulo crea unha nanopartícula ou un agregado dada unha\n" "estructura cristalina.\n" "\n" "1) Escolla un elemento, a estructura cristalina e a(s)\n" " constante(s) de rede. O botón \"Obter estructura\" \n" " encontrará os datos para o elemento seleccionado.\n" "\n" "2) Escolla se desexa especificar o número de capas en cada \n" " dirección, ou se desexa empregar a construcción de Wulff.\n" " Neste último caso, debe especificalas enerxías de \n" " superficie en cada dirección, e o tamaño do agregado.\n" "\n" "Cómo especificar as direccións:\n" "---------------------------------\n" "\n" "A primeira vez unha dirección aparece, a cal é interpretada\n" "como a familia completa das direccións, é dicir, (0,0,1)\n" "tamén cubre a dirección (1,0,0), (-1,0,0) etc. Se unha destas\n" "direccións é especificada novamente, a segunda especificación\n" "reemplaza esa dirección en específico. Debido a isto, o orden\n" "importa e pódese rearreglar a dirección cos botones Arriba e\n" "Abaixo. Tamén pódese engadir unha nova dirección: lembre presionar\n" "o botón Engadir ou ésta non será incluida.\n" "\n" "Exemplo: (1,0,0) (1,1,1), (0,0,1) especificará a familia {100} de\n" "direccions, a familia {111} e logo a dirección (001), \n" "sobreescribindo o valor dado por tódala familia de direccions.\n" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "Cúbico centrado nas caras (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "Cúbico centrado no corpo (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "Cúbico simple (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "Empacamento hexagonal pechado (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "Grafito" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "Nanopartícula" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "Obter estrutura" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "Estrutura:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "Constante de rede: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "Especificación de capas" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Construcción de Wulff" #: ../nanoparticle.py:166 msgid "Method: " msgstr "Método: " #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "Engadir nova dirección:" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "Información sobre o agregado creado:" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "Número de átomos: " #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " Diámetro aproximado: " #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "Aplicar automáticamente" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "Creando unha nanopartícula." #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "Aplicar" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "OK" #: ../nanoparticle.py:227 msgid "Up" msgstr "Arriba" #: ../nanoparticle.py:228 msgid "Down" msgstr "Abaixo" #: ../nanoparticle.py:229 msgid "Delete" msgstr "Borrar" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "Número de átomos" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "Diámetro" #: ../nanoparticle.py:279 msgid "above " msgstr "sobre " #: ../nanoparticle.py:279 msgid "below " msgstr "abajo " #: ../nanoparticle.py:279 msgid "closest " msgstr "máis cercano " #: ../nanoparticle.py:282 msgid "Smaller" msgstr "Máis pequeno" #: ../nanoparticle.py:283 msgid "Larger" msgstr "Máis longo" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "Escolla dimensions usando:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "átomos" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "Redondear: se o tamaño exacto non é posible, elexir o tamaño:" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "Enerxía de superficie (enerxía por área, NON por átomo):" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "Número de capas:" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "O menos un índice debe ser distinto de cero" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "Ãndices hexagonales inválidos" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "Estrutura non soportada ou descoñecida" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "Elemento = {0}, estrutura = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "Configure un nanotubo de carbono specificando o vector de roll-up.\n" "Teña en conta que m <= n.\n" "\n" "Nanotubos doutros elementos pódense construir especificando o elemento e a " "lonxitude do enlace." #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "" "{natoms} átomos, diámetro: {diameter:.3f} Ã…, lonxitude total: " "{total_length:.3f} Ã…" #: ../nanotube.py:40 msgid "Nanotube" msgstr "Nanotubo" #: ../nanotube.py:43 msgid "Bond length: " msgstr "Lonxitude do enlace: " #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "Seleccione o vector de roll-up (n,m) e a lonxitude do tubo:" #: ../nanotube.py:49 msgid "Length:" msgstr "Lonxitude:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "Unha imaxe cargada." #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "Imaxe %d cargada (0 - %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "Celda unidade está fixa." #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "A celda unidade varía." #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "Número de átomos: %d.\n" "\n" "Celda unidade:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "Este cadro non ten átomos." #: ../quickinfo.py:53 msgid "no" msgstr "no" #: ../quickinfo.py:53 msgid "yes" msgstr "sí" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "Periódico: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "Volume: " #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "Renderiza vista actual en povray ... " #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "Renderizando %d átomos." #: ../render.py:26 msgid "Size" msgstr "Tamaño" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "Ancho da línea" #: ../render.py:32 msgid "Ã…ngström" msgstr "Ã…ngström" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "Mostrar restriccións" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "Renderizar celda unidade" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "Nome base para o arquivo de saída: " #: ../render.py:43 #, fuzzy #| msgid "Output basename: " msgid "Output filename: " msgstr "Nome base para o arquivo de saída: " #: ../render.py:48 #, fuzzy #| msgid "Atomic relaxations:" msgid "Atomic texture set:" msgstr "Relaxacións atómicas:" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "Tipo de cámara: " #: ../render.py:56 msgid "Camera distance" msgstr "Distancia á cámara" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "Debuxar o cuadro actual" #: ../render.py:60 #, fuzzy #| msgid "Render all %d frames" msgid "Render all frames" msgstr "Debuxar tódolos %d cadros" #: ../render.py:65 msgid "Run povray" msgstr "Executar povray" #: ../render.py:66 msgid "Keep povray files" msgstr "Manter os archivos povray" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "Mostrar ventá de saída" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "Fondo transparente" #: ../render.py:72 msgid "Render" msgstr "" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" " As texturas pódense empregar para destacar diferentes partes\n" " dunha estructura atómica. Esta ventá aprica a textura por defecto\n" " á estructura completa. Opcionalmente, aprica unha textura distinta\n" " á subconxuntos de átomos, os cales pódense seleccionar empregando o " "ratón.\n" " Además, nesta versión de ASE, implementouse un método de\n" " selección alternativo, o cal está basado en expresións\n" " booleanas. Éstas pódense especificar na caixa de entrada, empregando\n" " as variables x, y, z ou Z. Por exemplo, a expresión: \n" " Z == 11 and x > 10 and y > 10\n" " marcará tódolos átomos de sodio\n" " con x ou coordenadas superiores a dez. En calquera caso, o botón\n" " 'Crear nova estructura desde a selección' activará os cambios os\n" " atributos da selección actual.\n" " " #: ../render.py:206 msgid "Width" msgstr "Ancho" #: ../render.py:206 msgid " Height" msgstr " Altura" #: ../render.py:228 msgid "Angstrom " msgstr "Angstrom " #: ../render.py:238 msgid "Set" msgstr "Fixar" #: ../render.py:242 msgid " Filename: " msgstr " Nome do arquivo: " #: ../render.py:254 msgid " Default texture for atoms: " msgstr " Textura por defecto para os átomos: " #: ../render.py:255 msgid " transparency: " msgstr " transparencia: " #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "Definir a selección do átomo para a nova textura:" #: ../render.py:260 msgid "Select" msgstr "Seleccionar" #: ../render.py:264 msgid "Create new texture from selection" msgstr "Crear nova textura desde selección" #: ../render.py:267 msgid "Help on textures" msgstr "Axuda en texturas" #: ../render.py:284 msgid " Camera distance" msgstr " Distancia á cámara" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "Debuxar tódolos %d cadros" #: ../render.py:298 msgid "Run povray " msgstr "Executar povray " #: ../render.py:301 msgid "Keep povray files " msgstr "Manter os archivos povray " #: ../render.py:389 msgid " transparency: " msgstr " transparencia: " #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "" "¡Non pode crearse a nova textura! ¡Débese seleccionar alguns átomos para " "crear un novo material!" #: ../repeat.py:10 msgid "Repeat" msgstr "Repetir" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "Repetir átomos:" #: ../repeat.py:15 msgid "Set unit cell" msgstr "Fixar celda unidade" #: ../rotate.py:13 msgid "Rotate" msgstr "Xirar" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "Ãngulos de rotación:" #: ../rotate.py:18 msgid "Update" msgstr "Actualizar" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "Nota:\n" "Pode rotar libremente\n" "co ratón, presionando o\n" "botón número 2 do ratón." #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" "Engada \"@n\" o nome para escribir a imáxe número\n" "\"n\" en vez da imaxe actual. Engada \"@principio:fin\"\n" "o \"@principio:fin:paso\" para escribir unha secuencia\n" "de imaxes. Pode omitir \"principio\" e \"fin\" e así\n" "\"nome@:\" incluirá tódalas imaxes. Números negativos\n" "cóntanse desde a última imaxe. Exemplos: \"nome@-1\":\n" "última imaxe, \"nome@-2:\": as dúas últimas)." #: ../save.py:26 msgid "Save ..." msgstr "Gardar ..." #: ../settings.py:10 msgid "Settings" msgstr "Axustes" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "Restriccións:" #: ../settings.py:16 msgid "release" msgstr "Soltar" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr " átomos seleccionados" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "Restrinxir átomos inamovibles" #: ../settings.py:19 msgid "Clear all constraints" msgstr "Eliminar tódalas restriccións" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "Visibilidade:" #: ../settings.py:23 msgid "Hide" msgstr "Ocultar" #: ../settings.py:25 msgid "show" msgstr "Mostrar" #: ../settings.py:27 msgid "View all atoms" msgstr "Ver tódolos átomos" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "Miscelánea:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "Escale o radio atómico:" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " (recalcular simulación)" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (continuar simulación)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "Seleccione configuración inicial:" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "Actualmente hai %i configuracións cargadas." # Elegir cual será utilizada como la configuración inicial #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "Elexir cal será empregada como configuración inicial" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "Primeira configuración %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "Configuración número " #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "A última configuración %s." #: ../simulation.py:92 msgid "Run" msgstr "Calcular" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "No hai un calculador. Use Calcular/Fixar Calculador no menú." #: ../simulation.py:123 msgid "No atoms present" msgstr "Non hai átomos presentes" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr " etiqueta=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr " mom={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr " q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "diedro" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" "Use este diálogo para crear unha peza de superficie. Seleccione\n" "o elemento escribindo o símbolo químico ou número atómico na caixa.\n" "Logo, seleccione a estrutura da superficie desexada.\n" "Algunhas estruturas poden ser creadas cunha celda unidade or-\n" "togonal ou non ortogonal. Lembre que a celda unidade non ortogonal\n" "conterá menos átomos.\n" "\n" " Se a estrutura coincide coa experimental, pode mirar a constante de rede \n" "na base de datos de ASE, se non terá que especificala." #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(110)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10-10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "Diamante(100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "diamante" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "Diamante(111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "Superficie" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "Celda ortogonal:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "Constante de rede:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "Tamaño\tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "Creando unha peza de superficie." #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "Por favor, escolla un número par para a cela ortogonal" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "Por favor, escolla un valor divisible por 3 para a cela ortogonal" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr " Vacío: {} Ã…." #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "{symbol} {surf} superficie cun átomo.{vacuum}" msgstr[1] "{symbol} {surf} superficie con {natoms} átomos.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "Erro" #: ../ui.py:53 msgid "Version" msgstr "Versión" #: ../ui.py:54 msgid "Web-page" msgstr "Páxina web" #: ../ui.py:55 msgid "About" msgstr "Acerca de ase-gui" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "Axuda" #: ../widgets.py:11 msgid "Element:" msgstr "Elemento:" #: ../widgets.py:39 msgid "No element specified!" msgstr "¡Non especificou o elemento!" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "ERRO: ¡elemento inválido!" #: ../widgets.py:75 msgid "No Python code" msgstr "Non é código de Python" #, fuzzy #~| msgid "Set _Calculator" #~ msgid "Select calculator" #~ msgstr "Fixar _calculador" #, fuzzy #~| msgid "Set _Calculator" #~ msgid "Calculator:" #~ msgstr "Fixar _calculador" #~ msgid "None" #~ msgstr "Ningún" #~ msgid "Setup" #~ msgstr "Configurar" #, fuzzy #~| msgid "Lattice parameters" #~ msgid "Lennard-Jones parameters" #~ msgstr "Parámetros de rede" #, fuzzy #~| msgid "Lattice parameters" #~ msgid "EAM parameters" #~ msgstr "Parámetros de rede" #, fuzzy #~| msgid "Lattice parameters" #~ msgid "GPAW parameters" #~ msgstr "Parámetros de rede" #, fuzzy #~| msgid "%i atoms." #~ msgid "%i atoms.\n" #~ msgstr "Ãtomos %i." #, fuzzy #~| msgid "Wave functions: " #~ msgid "Basis functions: " #~ msgstr "Funcións de onda: " #, fuzzy #~| msgid "Lattice parameters" #~ msgid "FHI-aims parameters" #~ msgstr "Parámetros de rede" #, fuzzy #~| msgid "By charge" #~ msgid " Charge" #~ msgstr "Por carga" #, fuzzy #~| msgid "Self-consistency loop" #~ msgid "Self-consistency convergence:" #~ msgstr "Bucle de auto consistencia" #, fuzzy #~| msgid "Calculating forces" #~ msgid "Compute forces" #~ msgstr "Calculando forzas" #, fuzzy #~| msgid " Filename: " #~ msgid "Energy: " #~ msgstr " Nome do arquivo: " #, fuzzy #~| msgid "Expert mode ..." #~ msgid "Export parameters ... " #~ msgstr "Modo experto ..." #, fuzzy #~| msgid "Lattice parameters" #~ msgid "VASP parameters" #~ msgstr "Parámetros de rede" #~ msgid " width: " #~ msgstr " ancho: " #, fuzzy #~| msgid "Self-consistency loop" #~ msgid "Self-consistency convergence: " #~ msgstr "Bucle de auto consistencia" #, fuzzy #~| msgid "" #~| "\n" #~| " Global commands work on all frames or only on the current frame\n" #~| " - Assignment of a global variable may not reference a local one\n" #~| " - use 'Current frame' switch to switch off application to all " #~| "frames\n" #~| " e:\t\ttotal energy of one frame\n" #~| " fmax:\tmaximal force in one frame\n" #~| " A:\tunit cell\n" #~| " E:\t\ttotal energy array of all frames\n" #~| " F:\t\tall forces in one frame\n" #~| " M:\tall magnetic moments\n" #~| " R:\t\tall atomic positions\n" #~| " S:\tall selected atoms (boolean array)\n" #~| " D:\tall dynamic atoms (boolean array)\n" #~| " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~| "\n" #~| " Atom commands work on each atom (or a selection) individually\n" #~| " - these can use global commands on the RHS of an equation\n" #~| " - use 'selected atoms only' to restrict application of command\n" #~| " x,y,z:\tatomic coordinates\n" #~| " r,g,b:\tatom display color, range is [0..1]\n" #~| " rad:\tatomic radius for display\n" #~| " s:\t\tatom is selected\n" #~| " d:\t\tatom is movable\n" #~| " f:\t\tforce\n" #~| " Z:\tatomic number\n" #~| " m:\tmagnetic moment\n" #~| " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~| "\n" #~| " Special commands and objects:\n" #~| " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~| " frame:\tframe number\n" #~| " center:\tcenters the system in its existing unit cell\n" #~| " del S:\tdelete selection\n" #~| " CM:\tcenter of mass\n" #~| " ans[-i]:\tith last calculated result\n" #~| " exec file: executes commands listed in file\n" #~| " cov[Z]:(read only): covalent radius of atomic number Z\n" #~| " gui:\tadvanced: ase-gui window python object\n" #~| " img:\tadvanced: ase-gui images object\n" #~| " " #~ msgid "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display color, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcenter of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgstr "" #~ "\n" #~ " Os comandos globales funcionan tanto en tódolos cadros como\n" #~ " no cadro actual.\n" #~ " - A asignación dunha variable global pode non ser referenciada\n" #~ " a unha local.\n" #~ " - Utilice a opción 'Cadro actual' para pechar a aplicación\n" #~ " en tódolos cadros.\n" #~ " e: enerxía total dun cadro\n" #~ " fmáx: forza máxima dun cadro\n" #~ " A: celda unidade\n" #~ " E: arreglo coas enerxías totales en tódolos cadros\n" #~ " F: tódalas forzas nun cadro\n" #~ " M: tódolos momentos magnéticos\n" #~ " R: tódalas posicions atómicas\n" #~ " S: arreglo booleano, tódolos átomos seleccionados\n" #~ " D: arreglo booleano, tódolos átomos dinámicos\n" #~ " Exemplos: cadro = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Os comandos atómicos funcionan nunha selección ou en cada un dos\n" #~ " átomos.\n" #~ " - Éstos poden usar comandos globales no lado dereito dunha\n" #~ " ecuación.\n" #~ " - Utilice 'Sólo os átomos seleccionados' para restrinxir a\n" #~ " aplicación do comando.\n" #~ " x,y,z: coordenadas atómicas\n" #~ " r,g,b: color do átomo, o rango é [0..1]\n" #~ " rad: radio atómico a mostrar\n" #~ " s: átomo é seleccionado\n" #~ " d: átomo é movible\n" #~ " f: forza\n" #~ " Z: número atómico\n" #~ " m: momento magnético\n" #~ " exemplos: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Comandos especiais e obxectos:\n" #~ " sa,cf:restrinxir (ou non) ós átomos seleccionados/cadro " #~ "actual\n" #~ " cadro: número do cadro\n" #~ " centrar: centra o sistema con respecto a súa celda unidade\n" #~ " borra S: borra a selección\n" #~ " CM: centro de masa\n" #~ " ans[-i]: o i-ésimo resultado calculado\n" #~ " exec archivo: executa o comando listado no arquivo\n" #~ " cov[Z]:(sólo lectura): radio covalente do número atómico Z\n" #~ " gui:avanzado: obxecto de Python, ventá de ag\n" #~ " img:avanzado: obxecto imaxes de ag\n" #~ " " #~ msgid "Expert user mode" #~ msgstr "Modo de usuario experto" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "Benvido ó modo de usuario experto de ASE" #~ msgid "Only selected atoms (sa) " #~ msgstr "Soamente átomos seleccionados (sa) " #~ msgid "Only current frame (cf) " #~ msgstr "Soamente o cadro actual (cf) " #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "Global: utilice os cadros A, D, E, M, N, R, S y n; Ãtomos: utilice a, f, " #~ "m, s, x, y, z y Z" #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** ADVERTENCIA: o arquivo non existe - %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "***ADVERTENCIA: Non hai átomos seleccionados para traballar" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** Traballando soamente cos átomos seleccionados" #~ msgid "*** Working on all atoms" #~ msgstr "*** Traballando en tódolos átomos" #~ msgid "*** Only working on current image" #~ msgstr "*** Traballando únicamente na imaxe actual" #~ msgid "*** Working on all images" #~ msgstr "*** Traballando en tódalas imaxes" #~ msgid "Save Terminal text ..." #~ msgstr "Garde texto da Terminal ..." #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Algorithm: " #~ msgstr "Algoritmo: " #~ msgid "Convergence criterion: Fmax = " #~ msgstr "Criterio de converxencia: Fmáx = " #~ msgid "Max. number of steps: " #~ msgstr "Número máximo de pasos: " #~ msgid "Pseudo time step: " #~ msgstr "Paso de pseudotempo: " #~ msgid "Energy minimization" #~ msgstr "Minimización enerxética" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "Minimize a enerxía con respecto as posicións." #~ msgid "Running ..." #~ msgstr "Calculando ..." #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "Minimización CANCELADA despois de %i iteracións." #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "Non hai máis memoria, considere usar o algoritmo LBFGS" #~ msgid "Minimization completed in %i steps." #~ msgstr "Minimización feita en %i pasos." #~ msgid "Progress" #~ msgstr "Progreso" #~ msgid "Scaling deformation:" #~ msgstr "Escala de deformación:" #~ msgid "Step number %s of %s." #~ msgstr "Paso número %s de %s." #~ msgid "Energy minimization:" #~ msgstr "Minimización de enerxía:" #~ msgid "Step number: " #~ msgstr "Paso número: " #~ msgid "Fmax: " #~ msgstr "Fmáx: " #~ msgid "unknown" #~ msgstr "descoñecido" #~ msgid "Status: " #~ msgstr "Estado: " #~ msgid "Iteration: " #~ msgstr "Iteración: " #~ msgid "log10(change):" #~ msgstr "log10 (cambio):" #~ msgid "Wave functions: " #~ msgstr "Funcións de onda: " #~ msgid "Density: " #~ msgstr "Densidade: " #~ msgid "Energy: " #~ msgstr "Enerxía: " #~ msgid "GPAW version: " #~ msgstr "Versión de GPAW: " #~ msgid "N/A" #~ msgstr "Non disponible" #~ msgid "Memory estimate: " #~ msgstr "Memoria estimada: " #~ msgid "No info" #~ msgstr "No hai información" #~ msgid "Initializing" #~ msgstr "Iniciando" #~ msgid "Positions:" #~ msgstr "Posicións:" #~ msgid "Starting calculation" #~ msgstr "Comenzando o cálculo" #~ msgid "unchanged" #~ msgstr "sen cambios" #~ msgid "Self-consistency loop" #~ msgstr "Bucle de auto consistencia" #~ msgid "Calculating forces" #~ msgstr "Calculando forzas" #~ msgid " (converged)" #~ msgstr " (converxido)" #~ msgid "To get a full traceback, use: ase-gui --verbose" #~ msgstr "Para ollar o traceback completo, use ase-gui --verbose" #~ msgid "No atoms loaded." #~ msgstr "Non hai átomos seleccionados." #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC (111) non ortogonal" #~ msgid "FCC(111) orthogonal" #~ msgstr "FCC (111) ortogonal" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC (110) non ortogonal" #~ msgid "BCC(110) orthogonal" #~ msgstr "BCC (110) ortogonal" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC (111) non ortogonal" #~ msgid "BCC(111) orthogonal" #~ msgstr "BCC (111) ortogonal" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP (0001) non ortogonal" #~ msgid "Element: " #~ msgstr "Elemento: " #~ msgid "a:" #~ msgstr "a:" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% de ideal)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " capas, " #~ msgid " Ã… vacuum" #~ msgstr " vacío en Ã…" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\tAínda non hai información sobre o tamaño." #~ msgid "%i atoms." #~ msgstr "Ãtomos %i." #~ msgid "Invalid element." #~ msgstr "Elemento inválido." #~ msgid "No structure specified!" #~ msgstr "¡Non se especificou a estrutura!" #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "" #~ "A constante de rede %(struct)s é descoñecida para o elemento %(element)s." #~ msgid "By atomic number, user specified" #~ msgstr "Por número atómico, especificado polo usuario" #~ msgid "By coordination" #~ msgstr "Por coordinación" #~ msgid "Manually specified" #~ msgstr "Especificado manualmente" #~ msgid "All the same color" #~ msgstr "Todos da mesma cor" #~ msgid "This should not be displayed in forces!" #~ msgstr "¡Isto non debería mostrarse en forzas!" #~ msgid "Min: " #~ msgstr "Mín: " #~ msgid " Max: " #~ msgstr " Máx: " #~ msgid " Steps: " #~ msgstr " Pasos: " #~ msgid "This should not be displayed!" #~ msgstr "¡Isto non debería mostrarse!" #~ msgid "Create a color scale:" #~ msgstr "Crear unha escala de cores:" #~ msgid "Black - white" #~ msgstr "Negro - branco" #~ msgid "Black - red - yellow - white" #~ msgstr "Negro - vermello - amarelo - branco" #~ msgid "Black - green - white" #~ msgstr "Negro - verde - blanco" #~ msgid "Black - blue - cyan" #~ msgstr "Negro - azul - ciano" #~ msgid "Blue - white - red" #~ msgstr "Azul - branco - vermello" #~ msgid "Hue" #~ msgstr "Tonalidade" #~ msgid "Named colors" #~ msgstr "Cores con nome" #~ msgid "Create" #~ msgstr "Crear" #~ msgid "ERROR" #~ msgstr "ERRO" #~ msgid "ERR" #~ msgstr "ERR" #~ msgid "Incorrect color specification" #~ msgstr "Especificación da cor incorrecta" #~ msgid " selected atoms:" #~ msgstr " átomos seleccionados:" #~ msgid "Close" #~ msgstr "Pechar" #~ msgid "Debug" #~ msgstr "Depurar" #~ msgid "Bug Detected" #~ msgstr "Erro atopado" #~ msgid "A programming error has been detected." #~ msgstr "Atopouse un erro de programación." #~ msgid "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgstr "" #~ "Probablemente non é fatal. Sen embargo, os detalles deberían\n" #~ "enviarse os desenvolvedores." #~ msgid "Report..." #~ msgstr "Reporte..." #~ msgid "Details..." #~ msgstr "Detalles..." #~ msgid "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "Desde: buggy_application\"\n" #~ "A: bad_programmer\n" #~ "Asunto: Retroalimentación dun erro\n" #~ "\n" #~ "%s" #~ msgid "Bug Details" #~ msgstr "Detalles do erro" #~ msgid "Create a new file" #~ msgstr "Crear un arquivo novo" #~ msgid "New ase.gui window" #~ msgstr "Nova ventá ase.gui" #~ msgid "Save current file" #~ msgstr "Gardar arquivo actual" #~ msgid "Quit" #~ msgstr "Saír" #~ msgid "_Copy" #~ msgstr "_Copiar" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "Copiar a selección actual e súa orientación" #~ msgid "_Paste" #~ msgstr "_Pegar" #~ msgid "Insert current clipboard selection" #~ msgstr "Insertar selección actual" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "" #~ "Cambiar etiquetas, momentos magnéticos e tipo dos átomos seleccionados" #~ msgid "Insert or import atoms and molecules" #~ msgstr "Insertar ou importar átomos e moléculas" #~ msgid "Delete the selected atoms" #~ msgstr "Borrar os átomos seleccionados" #~ msgid "'xy' Plane" #~ msgstr "Plano 'xy'" #~ msgid "'yz' Plane" #~ msgstr "Plano 'yz'" #~ msgid "'zx' Plane" #~ msgstr "Plano 'zx'" #~ msgid "'yx' Plane" #~ msgstr "Plano 'yx'" #~ msgid "'zy' Plane" #~ msgstr "Plano 'zy'" #~ msgid "'xz' Plane" #~ msgstr "Plano 'xz'" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "Crear un cristal cunha orientación arbitraria" #~ msgid "Create the most common surfaces" #~ msgstr "Crear as superficies máis comunes" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "Crear unha nanoparticula cristalina" #~ msgid "Create a nanotube" #~ msgstr "Crear un nanotubo" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "Crear unha folla de grafeno o unha nanocinta" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "Fixar un calculador para tódolos módulos de cálculo" #~ msgid "Calculate energy and forces" #~ msgstr "Calcular enerxía e forzas" #~ msgid "Minimize the energy" #~ msgstr "Minimize a enerxía" #~ msgid "Scale system" #~ msgstr "Escalar sistema" #~ msgid "Deform system by scaling it" #~ msgstr "Deforme o sistema escalándolo" #~ msgid "Debug ..." #~ msgstr "Depurar..." #~ msgid "Orien_t atoms" #~ msgstr "Orien_tar átomos" #~ msgid "<>" #~ msgstr "<>" #~ msgid "Paste" #~ msgstr "Pegar" #~ msgid "Insert atom or molecule" #~ msgstr "Engadir átomo ou molécula" #~ msgid "_Load molecule" #~ msgstr "_Cargar molécula" #~ msgid "_Cancel" #~ msgstr "_Cancelar" #~ msgid "Atom" #~ msgstr "Ãtomo" #~ msgid "Confirmation" #~ msgstr "Confirmación" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "¿Borrar átomo seleccionado?" #~ msgstr[1] "¿Borrar os átomos seleccionados?" #~ msgid "File type:" #~ msgstr "Tipo de arquivo:" #~ msgid "Not implemented!" #~ msgstr "Non implementado!" #~ msgid "do you really need it?" #~ msgstr "¿realmente necesita isto?" #~ msgid "Dummy placeholder object" #~ msgstr "Objeto marcador de posición ficticia" #~ msgid "Set all directions to default values" #~ msgstr "Fixar en todalas direccións os valores por defecto" #~ msgid "Particle size: " #~ msgstr "Tamaño da partícula: " #~ msgid "%.1f Ã…" #~ msgstr "%.1f Ã…" #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "Título: %(title)s\n" #~ "Tempo: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: código en Python" #~ msgid "Information:" #~ msgstr "Información:" #~ msgid "Python code:" #~ msgstr "Código en Python:" #~ msgid "Quick Info" #~ msgstr "Información rápida" #~ msgid "Homogeneous scaling" #~ msgstr "Escala uniforme" #~ msgid "3D deformation " #~ msgstr "Deformación en tres dimensións " #~ msgid "2D deformation " #~ msgstr "Deformación en dúas dimensións " #~ msgid "1D deformation " #~ msgstr "Deformación nunha dimensión " #~ msgid "Bulk" #~ msgstr "Enteiro" #~ msgid "x-axis" #~ msgstr "eixe x" #~ msgid "y-axis" #~ msgstr "eixe y" #~ msgid "z-axis" #~ msgstr "eixe z" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "Permitir deformacións ó longo de direccións non periódicas." #~ msgid "Deformation:" #~ msgstr "Deformación:" #~ msgid "Maximal scale factor: " #~ msgstr "Factor de escala máximo: " #~ msgid "Scale offset: " #~ msgstr "Compensación de escala: " #~ msgid "Number of steps: " #~ msgstr "Número de pasos: " #~ msgid "Only positive deformation" #~ msgstr "Sólo deformacións positivas" #~ msgid "On " #~ msgstr "Activo " #~ msgid "Off" #~ msgstr "Inactivo" #~ msgid "Results:" #~ msgstr "Resultados:" #~ msgid "Keep original configuration" #~ msgstr "Manter a configuración orixinal" #~ msgid "Load optimal configuration" #~ msgstr "Cargala configuración óptima" #~ msgid "Load all configurations" #~ msgstr "Cargar tódalas configuracións" #~ msgid "Strain\t\tEnergy [eV]" #~ msgstr "Enerxía de deformación [eV]" #~ msgid "Fit:" #~ msgstr "Axuste:" #~ msgid "2nd" #~ msgstr "Segundo" #~ msgid "3rd" #~ msgstr "Terceiro" #~ msgid "Order of fit: " #~ msgstr "Grado do axuste: " #~ msgid "Calculation CANCELLED." #~ msgstr "Cálculo CANCELADO." #~ msgid "Calculation completed." #~ msgstr "Cálculo rematado." #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "O mínimo non é de fiar: mantense a configuración anterior." #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "Datos insuficentes para un axuste\n" #~ "(sólo hai %i puntos)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "VOLVENDO A UN AXUSTE DE SEGUNDO ORDEN\n" #~ "(sólo con 3 puntos)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "¡Non se atopou o mínimo!" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "ADVERTENCIA: O mínimo está fora do intervalo\n" #~ msgid "It is UNRELIABLE!\n" #~ msgstr "¡Isto NON é seguro!\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "No existen datos da estructura cristalina" #~ msgid "Tip for status box ..." #~ msgstr "Consello para a ventá de estado ..." #~ msgid "Clear constraint" #~ msgstr "Borrar restricción" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/zh_CN/000077500000000000000000000000001316323560300227425ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/zh_CN/LC_MESSAGES/000077500000000000000000000000001316323560300245275ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/po/zh_CN/LC_MESSAGES/ag.po000066400000000000000000002272441316323560300254710ustar00rootroot00000000000000# Chinese translations for python-ase package. # Copyright (C) 2017 CAMD and ASE Developers # This file is distributed under the same license as the python-ase package. # # Jun Yan , 2012. # Tao Jiang , 2012. # Chengjun , 2012. # Keenan Lyon , 2017. # msgid "" msgstr "" "Project-Id-Version: python-ase 3.6.0.2515\n" "Report-Msgid-Bugs-To: ase-users@listserv.fysik.dtu.dk\n" "POT-Creation-Date: 2017-09-28 19:11+0200\n" "PO-Revision-Date: 2017-09-28 19:14+0200\n" "Last-Translator: Keenan Lyon \n" "Language-Team: Chinese (simplified)\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../add.py:12 msgid "Bad position" msgstr "åä½ç½®" #. XXXXXXXXXXX still array based, not Atoms-based. Will crash #: ../add.py:20 msgid "Add atoms" msgstr "添加原å­" #: ../add.py:25 msgid "Absolute position:" msgstr "ç»å¯¹ä½ç½®" #: ../add.py:27 ../add.py:30 ../nanoparticle.py:264 msgid "Add" msgstr "添加" #: ../add.py:28 msgid "Relative to average position (of selection):" msgstr "éšå‡å€¼çš„ä½ç½®" #: ../colors.py:15 msgid "Colors" msgstr "颜色" #: ../colors.py:17 msgid "Choose how the atoms are colored:" msgstr "选择原å­é¢œè‰²" #: ../colors.py:20 msgid "By atomic number, default \"jmol\" colors" msgstr "æ ¹æ®åŽŸå­åºæ•°ï¼Œ 默认\"jmol\"颜色" #: ../colors.py:21 msgid "By tag" msgstr "æ ¹æ®æ ‡ç­¾" #: ../colors.py:22 msgid "By force" msgstr "æ ¹æ®å—力" #: ../colors.py:23 msgid "By velocity" msgstr "æ ¹æ®é€Ÿåº¦" #: ../colors.py:24 #, fuzzy #| msgid "By charge" msgid "By initial charge" msgstr " 电è·" #: ../colors.py:25 msgid "By magnetic moment" msgstr "ç”±ç£çŸ©" #: ../colors.py:69 msgid "Green" msgstr "绿色" #: ../colors.py:69 msgid "Yellow" msgstr "黄色" #: ../constraints.py:8 msgid "Constraints" msgstr "é™åˆ¶" #: ../constraints.py:9 ../constraints.py:11 ../settings.py:14 msgid "Constrain" msgstr "é™åˆ¶" #: ../constraints.py:10 ../constraints.py:14 msgid "selected atoms" msgstr "已选择的原å­" #: ../constraints.py:12 msgid "immobile atoms" msgstr "固定的原å­ï¼š" #: ../constraints.py:13 msgid "Unconstrain" msgstr "éžé™åˆ¶" #: ../constraints.py:15 msgid "Clear constraints" msgstr "清除é™åˆ¶" #: ../crystal.py:16 msgid "" " Use this dialog to create crystal lattices. First select the structure,\n" " either from a set of common crystal structures, or by space group " "description.\n" " Then add all other lattice parameters.\n" "\n" " If an experimental crystal structure is available for an atom, you can\n" " look up the crystal type and lattice constant, otherwise you have to " "specify it\n" " yourself. " msgstr "" " 使用这个对è¯çª—壿¥åˆ›å»ºæ™¶æ ¼ã€‚é¦–å…ˆï¼Œä»Žå¸¸è§æ™¶ä½“结构或者根æ®ç©ºé—´ç¾¤ä¸­é€‰æ‹©ç»“" "构。\n" " ç„¶åŽï¼Œæ·»åŠ å…¶ä»–æ™¶æ ¼å‚æ•°ã€‚\n" "\n" " ä½ å¯ä»¥æŸ¥æ‰¾å®žéªŒæ™¶ä½“ç»“æž„å‚æ•°ï¼Œå¹¶ä¾æ¬¡è®¾ç½®æ™¶æ ¼ç±»åž‹å’Œæ™¶æ ¼å¸¸æ•°ã€‚\n" "å¦åˆ™ä½ éœ€è¦è‡ªå·±å¯¹å…¶è¿›è¡ŒæŒ‡å®šã€‚" #: ../crystal.py:34 ../graphene.py:30 #, python-format msgid " %(natoms)i atoms: %(symbols)s, Volume: %(volume).3f A3" msgstr " %(natoms)i 原å­: %(symbols)s, 体积: %(volume).3f A3" #: ../crystal.py:71 msgid "Create Bulk Crystal by Spacegroup" msgstr "æ ¹æ®ç©ºé—´ç¾¤åˆ›å»ºæ™¶ä½“" #: ../crystal.py:85 msgid "Number: 1" msgstr "æ ‡å·ï¼š 1" #: ../crystal.py:87 msgid "Lattice: " msgstr "晶格:" #: ../crystal.py:88 msgid "\tSpace group: " msgstr "\t空间群: " #: ../crystal.py:95 msgid "Size: x: " msgstr "尺寸大å°ï¼šx: " #: ../crystal.py:95 ../crystal.py:177 msgid " y: " msgstr " y: " #: ../crystal.py:96 ../crystal.py:178 msgid " z: " msgstr " z: " #: ../crystal.py:97 ../surfaceslab.py:75 ../surfaceslab.py:76 #: ../surfaceslab.py:77 msgid " unit cells" msgstr " 晶胞" #: ../crystal.py:118 ../crystal.py:122 ../crystal.py:126 ../crystal.py:130 #: ../crystal.py:134 ../crystal.py:138 msgid "free" msgstr "自由" #: ../crystal.py:119 ../crystal.py:128 msgid "equals b" msgstr "等于 b" #: ../crystal.py:120 ../crystal.py:124 msgid "equals c" msgstr "等于 c" #: ../crystal.py:121 ../crystal.py:125 ../crystal.py:129 ../crystal.py:133 #: ../crystal.py:137 ../crystal.py:141 msgid "fixed" msgstr "固定的" #: ../crystal.py:123 ../crystal.py:127 msgid "equals a" msgstr "等于 a" #: ../crystal.py:131 ../crystal.py:140 msgid "equals beta" msgstr "等于 beta" #: ../crystal.py:132 ../crystal.py:136 msgid "equals gamma" msgstr "等于 gamma" #: ../crystal.py:135 ../crystal.py:139 msgid "equals alpha" msgstr "等于 alpha" #: ../crystal.py:145 msgid "Lattice parameters" msgstr "æ™¶æ ¼å‚æ•°" #: ../crystal.py:147 msgid "\t\ta:\t" msgstr "\t\ta:\t" #: ../crystal.py:148 msgid "\talpha:\t" msgstr "\talpha:\t" #: ../crystal.py:152 msgid "\t\tb:\t" msgstr "\t\tb:\t" #: ../crystal.py:153 msgid "\tbeta:\t" msgstr "\tbeta:\t" #: ../crystal.py:157 msgid "\t\tc:\t" msgstr "\t\tc:\t" #: ../crystal.py:158 msgid "\tgamma:\t" msgstr "\tgamma:\t" #: ../crystal.py:161 ../surfaceslab.py:55 msgid "Get from database" msgstr "从数æ®åº“读å–" #: ../crystal.py:166 msgid "Basis: " msgstr "基组: " #: ../crystal.py:176 msgid " Element:\t" msgstr " 元素:\t" #: ../crystal.py:177 msgid "\tx: " msgstr "\tx: " #: ../crystal.py:198 msgid "Creating a crystal." msgstr "创建一个晶体。" #: ../crystal.py:242 #, python-format msgid "Symbol: %s" msgstr "化学符å·: %s" #: ../crystal.py:247 #, python-format msgid "Number: %s" msgstr "åºå·: %s" #: ../crystal.py:250 msgid "Invalid Spacegroup!" msgstr "此空间群ä¸å­˜åœ¨ï¼" #: ../crystal.py:393 ../crystal.py:397 msgid "Please specify a consistent set of atoms." msgstr "请指定相应的原å­åºåˆ—。" #: ../crystal.py:407 ../graphene.py:264 ../nanoparticle.py:530 #: ../nanotube.py:84 ../surfaceslab.py:220 msgid "No valid atoms." msgstr "原å­ä¸å­˜åœ¨ã€‚" #: ../crystal.py:408 ../graphene.py:265 ../nanoparticle.py:531 #: ../nanotube.py:85 ../surfaceslab.py:221 ../widgets.py:76 msgid "You have not (yet) specified a consistent set of parameters." msgstr "你没有指定åˆç†çš„傿•°ã€‚" #: ../crystal.py:529 msgid "Can't find lattice definition!" msgstr "没有å‘现已定义的晶格ï¼" #: ../energyforces.py:15 msgid "Output:" msgstr "输出:" #: ../energyforces.py:44 msgid "Save output" msgstr "ä¿å­˜è¾“出" #: ../energyforces.py:61 msgid "Potential energy and forces" msgstr "势能和å—力" #: ../energyforces.py:65 msgid "Calculate potential energy and the force on all atoms" msgstr "计算所有原å­çš„势能和å—力" #: ../energyforces.py:69 msgid "Write forces on the atoms" msgstr "把å—力标在原å­ä¸Š" #: ../energyforces.py:86 msgid "Potential Energy:\n" msgstr "势能:\n" #: ../energyforces.py:87 #, python-format msgid " %8.2f eV\n" msgstr " %8.2f eV\n" #: ../energyforces.py:88 #, python-format msgid "" " %8.4f eV/atom\n" "\n" msgstr "" " %8.4f eV/原å­\n" "\n" #: ../energyforces.py:90 msgid "Forces:\n" msgstr "å—力:\n" #: ../graphene.py:17 msgid "" "Set up a graphene sheet or a graphene nanoribbon. A nanoribbon may\n" "optionally be saturated with hydrogen (or another element)." msgstr "" "建立一个石墨烯å•层或者石墨烯纳米带。一个纳米带å¯ä»¥\n" "选择被氢(或其他元素)饱和。" #: ../graphene.py:38 ../gui.py:512 msgid "Graphene" msgstr "石墨稀" #. Choose structure #: ../graphene.py:45 msgid "Structure: " msgstr "结构: " #: ../graphene.py:47 msgid "Infinite sheet" msgstr "æ— é™sheet" #: ../graphene.py:47 msgid "Unsaturated ribbon" msgstr "未饱和的ribbon" #: ../graphene.py:48 msgid "Saturated ribbon" msgstr "饱和的ribbon" #. Orientation #: ../graphene.py:55 msgid "Orientation: " msgstr "å–å‘: " #: ../graphene.py:58 msgid "zigzag" msgstr "zigzag" #: ../graphene.py:58 msgid "armchair" msgstr "armchair" #: ../graphene.py:71 ../graphene.py:82 msgid " Bond length: " msgstr " å¥é•¿ï¼š " #: ../graphene.py:72 ../graphene.py:83 ../graphene.py:107 ../nanotube.py:45 msgid "Ã…" msgstr "Ã…" #. Choose the saturation element and bond length #: ../graphene.py:77 msgid "Saturation: " msgstr "饱和:" #: ../graphene.py:80 msgid "H" msgstr "H" #. Size #: ../graphene.py:96 msgid "Width: " msgstr "宽度:" #: ../graphene.py:97 msgid " Length: " msgstr "长度:" #. Vacuum #: ../graphene.py:105 ../surfaceslab.py:78 msgid "Vacuum: " msgstr "真空:" #: ../graphene.py:153 msgid " No element specified!" msgstr "未指定元素ï¼" #: ../graphene.py:200 msgid "Please specify a consistent set of atoms. " msgstr "请指定相应的原å­åºåˆ—。" #: ../graphs.py:11 msgid "" "Symbols:\n" "e: total energy\n" "epot: potential energy\n" "ekin: kinetic energy\n" "fmax: maximum force\n" "fave: average force\n" "R[n,0-2]: position of atom number n\n" "d(n1,n2): distance between two atoms " "n1 and n2\n" "i: current image number\n" "E[i]: energy of image number i\n" "F[n,0-2]: force on atom number n\n" "V[n,0-2]: velocity of atom number n\n" "M[n]: magnetic moment of atom number n\n" "A[0-2,0-2]: unit-cell basis vectors\n" "s: path length\n" "a(n1,n2,n3): angle between atoms n1, n2 and n3, centered on n2\n" "dih(n1,n2,n3,n4): dihedral angle between n1, " "n2, n3 and n4\n" "T: temperature (K)" msgstr "" "符å·:\n" "e: 总能é‡\n" "epot: 势能\n" "ekin: 动能\n" "fmax: 最大å—力\n" "fave: å‡å€¼å—里\n" "R[n,0-2]: nå·åŽŸå­çš„ä½ç½®\n" "d(n1,n2): n1å·ä¸Žn2å·åŽŸå­çš„è·ç¦»\n" "i: 这次画é¢åºå·\n" "E[i]: iåºå·è¯é¢çš„能é‡\n" "F[n,0-2]: 作用于nå·åŽŸå­çš„å—力\n" "V[n,0-2]: nå·åŽŸå­çš„速度\n" "M[n]: nå·åŽŸå­çš„ç£çŸ©\n" "A[0-2,0-2]: å•使™¶æ ¼çš„基底å‘é‡\n" "s: 路径长度\n" "a(n1,n2,n3): n1å·, n2å·ä¸Ž" "n3å·åŽŸå­ä¹‹é—´çš„夹角, 集中在 n2å·åŽŸå­\n" "dih(n1,n2,n3,n4): n1å·, n2å·, " "n3å·ä¸Žn4å·åŽŸå­çš„二é¢è§’\n" "T: 温度 (K)" #: ../graphs.py:42 ../graphs.py:44 msgid "Plot" msgstr "画图" #: ../graphs.py:46 msgid "Save" msgstr "ä¿å­˜" #: ../graphs.py:47 msgid "Clear" msgstr "清空" #: ../graphs.py:72 msgid "Save data to file ... " msgstr "ä¿å­˜æ•°æ®åˆ°æ–‡ä»¶ ..." #: ../gui.py:286 msgid "Automatic" msgstr "自动" #: ../gui.py:304 msgid "Open ..." msgstr "打开 ..." #: ../gui.py:305 msgid "Choose parser:" msgstr "选泽一个分æžå™¨:" #: ../gui.py:416 msgid "_File" msgstr "文件" #: ../gui.py:417 msgid "_Open" msgstr "打开" #: ../gui.py:418 msgid "_New" msgstr "新文件" #: ../gui.py:419 msgid "_Save" msgstr "ä¿å­˜" #: ../gui.py:421 msgid "_Quit" msgstr "退出" #: ../gui.py:423 msgid "_Edit" msgstr "编辑" #: ../gui.py:424 msgid "Select _all" msgstr "选择所有" #: ../gui.py:425 msgid "_Invert selection" msgstr "å选" #: ../gui.py:426 msgid "Select _constrained atoms" msgstr "选择被é™åˆ¶çš„原å­" #: ../gui.py:427 msgid "Select _immobile atoms" msgstr "选择固定的原å­" #: ../gui.py:433 msgid "Hide selected atoms" msgstr "把已选择的原å­éšè—" #: ../gui.py:434 msgid "Show selected atoms" msgstr "显示已选择的原å­" #: ../gui.py:436 msgid "_Modify" msgstr "修改" #: ../gui.py:437 msgid "_Add atoms" msgstr "添加原å­" #: ../gui.py:438 msgid "_Delete selected atoms" msgstr "删除所选原å­" #: ../gui.py:441 msgid "_First image" msgstr "第一个图åƒ" #: ../gui.py:442 msgid "_Previous image" msgstr "å‰ä¸€ä¸ªå›¾åƒ" #: ../gui.py:443 msgid "_Next image" msgstr "下一个图åƒ" #: ../gui.py:444 msgid "_Last image" msgstr "最åŽä¸€ä¸ªå›¾åƒ" #: ../gui.py:446 msgid "_View" msgstr "视图" #: ../gui.py:447 msgid "Show _unit cell" msgstr "显示原胞" #: ../gui.py:449 msgid "Show _axes" msgstr "æ˜¾ç¤ºåæ ‡è½´" #: ../gui.py:450 msgid "Show _bonds" msgstr "显示原å­é”®" #: ../gui.py:452 msgid "Show _velocities" msgstr "显示速度" #: ../gui.py:454 msgid "Show _forces" msgstr "显示å—力" #: ../gui.py:456 msgid "Show _Labels" msgstr "显示标签" #: ../gui.py:457 msgid "_None" msgstr "æ— " #: ../gui.py:458 msgid "Atom _Index" msgstr "åŽŸå­æŒ‡æ•°" #: ../gui.py:459 msgid "_Magnetic Moments" msgstr "ç£çŸ©" #. XXX check if exist #: ../gui.py:460 msgid "_Element Symbol" msgstr "化学元素符å·" #: ../gui.py:461 msgid "_Initial Charges" msgstr "" #: ../gui.py:464 msgid "Quick Info ..." msgstr "简è¦ä¿¡æ¯ ..." #: ../gui.py:465 msgid "Repeat ..." msgstr "é‡å¤ ..." #: ../gui.py:466 msgid "Rotate ..." msgstr "旋转 ..." #: ../gui.py:467 msgid "Colors ..." msgstr "颜色 ..." #. TRANSLATORS: verb #: ../gui.py:469 msgid "Focus" msgstr "èšç„¦" #: ../gui.py:470 msgid "Zoom in" msgstr "放大" #: ../gui.py:471 msgid "Zoom out" msgstr "缩å°" #: ../gui.py:472 msgid "Change View" msgstr "改å˜è§†å›¾" #: ../gui.py:474 msgid "Reset View" msgstr "å¤åŽŸ" #: ../gui.py:475 msgid "xy-plane" msgstr "xyå¹³é¢" #: ../gui.py:476 msgid "yz-plane" msgstr "yzå¹³é¢" #: ../gui.py:477 msgid "zx-plane" msgstr "zx-å¹³é¢" #: ../gui.py:478 msgid "yx-plane" msgstr "yx-å¹³é¢" #: ../gui.py:479 msgid "zy-plane" msgstr "zy-å¹³é¢" #: ../gui.py:480 msgid "xz-plane" msgstr "xzå¹³é¢" #: ../gui.py:481 msgid "a2,a3-plane" msgstr "a2,a3-å¹³é¢" #: ../gui.py:482 msgid "a3,a1-plane" msgstr "a3,a1-å¹³é¢" #: ../gui.py:483 msgid "a1,a2-plane" msgstr "a1,a2-å¹³é¢" #: ../gui.py:484 msgid "a3,a2-plane" msgstr "a3,a2-å¹³é¢" #: ../gui.py:485 msgid "a1,a3-plane" msgstr "a1,a3-å¹³é¢" #: ../gui.py:486 msgid "a2,a1-plane" msgstr "a2,a1-å¹³é¢" #: ../gui.py:487 msgid "Settings ..." msgstr "设置 ..." #: ../gui.py:489 msgid "VMD" msgstr "VMD" #: ../gui.py:490 msgid "RasMol" msgstr "RasMol" #: ../gui.py:491 msgid "xmakemol" msgstr "xmakemol" #: ../gui.py:492 msgid "avogadro" msgstr "avogadro" #: ../gui.py:494 msgid "_Tools" msgstr "工具" #: ../gui.py:495 msgid "Graphs ..." msgstr "图片 ..." #: ../gui.py:496 msgid "Movie ..." msgstr "动画 ..." #: ../gui.py:497 msgid "Expert mode ..." msgstr "ä¸“å®¶æ¨¡å¼ ..." #: ../gui.py:498 msgid "Constraints ..." msgstr "é™åˆ¶ ..." #: ../gui.py:499 msgid "Render scene ..." msgstr "渲染场景 ..." #: ../gui.py:500 msgid "_Move atoms" msgstr "移动原å­" #: ../gui.py:501 msgid "_Rotate atoms" msgstr "旋转原å­" #: ../gui.py:502 msgid "NE_B" msgstr "NEB" #: ../gui.py:503 msgid "B_ulk Modulus" msgstr "å—体的模å—" #. TRANSLATORS: Set up (i.e. build) surfaces, nanoparticles, ... #: ../gui.py:506 msgid "_Setup" msgstr "设置" #: ../gui.py:507 msgid "_Bulk Crystal" msgstr "晶体" #: ../gui.py:508 msgid "_Surface slab" msgstr "表é¢" #: ../gui.py:509 msgid "_Nanoparticle" msgstr "纳米颗粒" #: ../gui.py:511 msgid "Nano_tube" msgstr "纳米管" #: ../gui.py:514 msgid "_Calculate" msgstr "计算" #: ../gui.py:515 msgid "Set _Calculator" msgstr "设置计算器" #: ../gui.py:516 msgid "_Energy and Forces" msgstr "能é‡å’Œå—力" #: ../gui.py:517 msgid "Energy Minimization" msgstr "èƒ½é‡æœ€å°åŒ–" #: ../gui.py:520 msgid "_Help" msgstr "帮助" #: ../gui.py:521 msgid "_About" msgstr "关于" #: ../gui.py:525 msgid "Webpage ..." msgstr "网页" #. Host window will never be shown #: ../images.py:192 #, fuzzy #| msgid "Constraints" msgid "Constraints discarded" msgstr "é™åˆ¶" #: ../images.py:193 msgid "Constraints other than FixAtoms have been discarded." msgstr "" #: ../modify.py:19 msgid "No atoms selected!" msgstr "没有原å­è¢«é€‰æ³½äº†" #: ../modify.py:22 msgid "Modify" msgstr "修改" #: ../modify.py:25 msgid "Change element" msgstr "改å˜å…ƒç´ " #: ../modify.py:28 msgid "Tag" msgstr "标签" #: ../modify.py:30 msgid "Moment" msgstr "ç£çŸ©" #: ../movie.py:11 msgid "Movie" msgstr "动画" #: ../movie.py:12 msgid "Image number:" msgstr "ç”»é¢åºå·ï¼š" #: ../movie.py:18 msgid "First" msgstr "最åˆ" #: ../movie.py:19 msgid "Back" msgstr "返回" #: ../movie.py:20 msgid "Forward" msgstr "å‰è¿›" #: ../movie.py:21 msgid "Last" msgstr "最åŽ" #: ../movie.py:23 msgid "Play" msgstr "播放" #: ../movie.py:24 msgid "Stop" msgstr "åœæ­¢" #. TRANSLATORS: This function plays an animation forwards and backwards #. alternatingly, e.g. for displaying vibrational movement #: ../movie.py:28 msgid "Rock" msgstr "Rock" #: ../movie.py:41 msgid " Frame rate: " msgstr "帧速率" #: ../movie.py:41 msgid " Skip frames: " msgstr "略过帧数" #: ../nanoparticle.py:23 msgid "" "Create a nanoparticle either by specifying the number of layers, or using " "the\n" "Wulff construction. Please press the [Help] button for instructions on how " "to\n" "specify the directions.\n" "WARNING: The Wulff construction currently only works with cubic crystals!\n" msgstr "" "通过指定层数或使用Wulff construction创建纳米颗粒。请按[帮助]已获å–关于指定" "æ–¹å‘的指导。\n" "警告:目å‰Wulff construction仅适用于立方结构晶体\n" #: ../nanoparticle.py:30 #, python-brace-format msgid "" "\n" "The nanoparticle module sets up a nano-particle or a cluster with a given\n" "crystal structure.\n" "\n" "1) Select the element, the crystal structure and the lattice constant(s).\n" " The [Get structure] button will find the data for a given element.\n" "\n" "2) Choose if you want to specify the number of layers in each direction, or " "if\n" " you want to use the Wulff construction. In the latter case, you must\n" " specify surface energies in each direction, and the size of the cluster.\n" "\n" "How to specify the directions:\n" "------------------------------\n" "\n" "First time a direction appears, it is interpreted as the entire family of\n" "directions, i.e. (0,0,1) also covers (1,0,0), (-1,0,0) etc. If one of " "these\n" "directions is specified again, the second specification overrules that " "specific\n" "direction. For this reason, the order matters and you can rearrange the\n" "directions with the [Up] and [Down] keys. You can also add a new " "direction,\n" "remember to press [Add] or it will not be included.\n" "\n" "Example: (1,0,0) (1,1,1), (0,0,1) would specify the {100} family of " "directions,\n" "the {111} family and then the (001) direction, overruling the value given " "for\n" "the whole family of directions.\n" msgstr "" "\n" "纳米颗粒模å—å¯ä»¥æ ¹æ®æ™¶ä½“结构创建纳米颗粒或团蔟\n" "\n" "1) 选择元素,晶体结构和晶格常数。\n" " [读å–ç»“æž„ï¼½æŒ‰é’®åŒ…å«æŒ‡å®šå…ƒç´ çš„æ•°æ®ã€‚\n" "\n" "2) 进行选择你想通过指定æ¯ä¸ªæ–¹å‘上的层数或 \n" " 使用Wulff construction。如使用åŽè€…,你必须指定å„个方å‘上的表é¢èƒ½å’Œå›¢è”Ÿçš„" "大å°ã€‚\n" "\n" "怎样指定方å‘:\n" "------------------------------\n" "\n" "æ–¹å‘ç¬¬ä¸€æ¬¡å‡ºçŽ°æ—¶ï¼Œå®ƒä»£è¡¨æ•´ä¸ªæ™¶å‘æ—,\n" "就是说: (0,0,1) åŒ…å« (1,0,0), (-1,0,0) ç­‰. 如果被包å«çš„任何一\n" "个方å‘è¢«é‡æ–°æŒ‡å®šï¼Œé‚£ä¹ˆåŽè€…会覆盖该方å‘çš„åŽŸå§‹å®šä¹‰ã€‚æ‰€ä»¥å…ˆåŽæ¬¡åºå¾ˆé‡è¦ã€‚ä½ å¯\n" "ä»¥ç”¨ï¼»ä¸Šï¼½å’Œï¼»ä¸‹ï¼½æ”¹å˜æ–¹å‘。你也å¯ä»¥æ·»åŠ æ–°çš„æ–¹å‘,但是请记ä½\n" "点击[添加]以确认添加。例如:(1,0,0) (1,1,1), (0,0,1) 先指\n" "定了{100}æ™¶å‘æ—ï¼Œç„¶åŽæ˜¯{111}æ™¶å‘æ—,最åŽ(001)覆盖了{100}æ™¶å‘æ—定义中改晶å‘\n" "的定义。\n" #. Structures: Abbreviation, name, #. 4-index (boolean), two lattice const (bool), factory #: ../nanoparticle.py:90 msgid "Face centered cubic (fcc)" msgstr "é¢å¿ƒç«‹æ–¹ (fcc)" #: ../nanoparticle.py:92 msgid "Body centered cubic (bcc)" msgstr "体心立方 (bcc)" #: ../nanoparticle.py:94 msgid "Simple cubic (sc)" msgstr "简å•ç«‹æ–¹ (sc)" #: ../nanoparticle.py:96 msgid "Hexagonal closed-packed (hcp)" msgstr "六角密堆积 (hcp)" #: ../nanoparticle.py:98 msgid "Graphite" msgstr "石墨" #: ../nanoparticle.py:130 msgid "Nanoparticle" msgstr "纳米颗粒" #: ../nanoparticle.py:134 msgid "Get structure" msgstr "读å–结构" #: ../nanoparticle.py:154 ../surfaceslab.py:70 msgid "Structure:" msgstr "结构:" #: ../nanoparticle.py:159 msgid "Lattice constant: a =" msgstr "晶格常数: a =" #: ../nanoparticle.py:163 msgid "Layer specification" msgstr "层指定" #: ../nanoparticle.py:163 msgid "Wulff construction" msgstr "Wulff构造" #: ../nanoparticle.py:166 msgid "Method: " msgstr "方法:" #: ../nanoparticle.py:174 msgid "Add new direction:" msgstr "添加新的方å‘" #. Information #: ../nanoparticle.py:180 msgid "Information about the created cluster:" msgstr "创建的团蔟信æ¯ï¼š" #: ../nanoparticle.py:181 msgid "Number of atoms: " msgstr "åŽŸå­æ•°ç›®ï¼š" #: ../nanoparticle.py:183 msgid " Approx. diameter: " msgstr " 近似直径:" #: ../nanoparticle.py:192 msgid "Automatic Apply" msgstr "自动è¿è¡Œ" #: ../nanoparticle.py:195 ../nanotube.py:51 msgid "Creating a nanoparticle." msgstr "创建纳米颗粒中。" #: ../nanoparticle.py:197 ../nanotube.py:52 ../surfaceslab.py:82 msgid "Apply" msgstr "使用" #: ../nanoparticle.py:198 ../nanotube.py:53 ../surfaceslab.py:83 msgid "OK" msgstr "完æˆ" #: ../nanoparticle.py:227 msgid "Up" msgstr "上" #: ../nanoparticle.py:228 msgid "Down" msgstr "下" #: ../nanoparticle.py:229 msgid "Delete" msgstr "删除" #: ../nanoparticle.py:271 msgid "Number of atoms" msgstr "åŽŸå­æ•°ç›®ï¼š" #: ../nanoparticle.py:271 msgid "Diameter" msgstr "直径" #: ../nanoparticle.py:279 msgid "above " msgstr "上é¢" #: ../nanoparticle.py:279 msgid "below " msgstr "下é¢" #: ../nanoparticle.py:279 msgid "closest " msgstr "最近邻的" #: ../nanoparticle.py:282 msgid "Smaller" msgstr "æ›´å°" #: ../nanoparticle.py:283 msgid "Larger" msgstr "更大" #: ../nanoparticle.py:284 msgid "Choose size using:" msgstr "选泽大å°ç”¨:" #: ../nanoparticle.py:286 msgid "atoms" msgstr "原å­" #: ../nanoparticle.py:287 msgid "ų" msgstr "ų" #: ../nanoparticle.py:289 msgid "Rounding: If exact size is not possible, choose the size:" msgstr "å–æ•´ï¼šå¦‚果没有具体的尺寸,请选择相近尺寸" #: ../nanoparticle.py:317 msgid "Surface energies (as energy/area, NOT per atom):" msgstr "表é¢èƒ½ï¼ˆå•ä½é¢ç§¯ï¼Œä¸æ˜¯æ¯ä¸ªåŽŸå­ï¼‰ï¼š" #: ../nanoparticle.py:319 msgid "Number of layers:" msgstr "层数" #: ../nanoparticle.py:347 msgid "At least one index must be non-zero" msgstr "至少一个指数必须ä¸ä¸ºé›¶" #: ../nanoparticle.py:350 msgid "Invalid hexagonal indices" msgstr "无效的六角指数" #: ../nanoparticle.py:416 msgid "Unsupported or unknown structure" msgstr "䏿”¯æŒæˆ–未知的结构" #: ../nanoparticle.py:417 #, python-brace-format msgid "Element = {0}, structure = {1}" msgstr "化学元素 = {0}, 晶格结构 = {1}" #: ../nanotube.py:13 msgid "" "Set up a Carbon nanotube by specifying the (n,m) roll-up vector.\n" "Please note that m <= n.\n" "\n" "Nanotubes of other elements can be made by specifying the element\n" "and bond length." msgstr "" "通过指定(n,m) roll-up 矢é‡ï¼Œæ¥åˆ›å»ºç¢³çº³ç±³ç®¡\n" "è¯·æ³¨æ„ m <= n.\n" "\n" "其他元素的纳米管å¯ä»¥é€šè¿‡æŒ‡å®šå…ƒç´ å’Œå¥é•¿æ¥åˆ›å»ºã€‚" #: ../nanotube.py:26 #, python-brace-format msgid "" "{natoms} atoms, diameter: {diameter:.3f} Ã…, total length: {total_length:.3f} " "Ã…" msgstr "{natoms}原å­, 直径: {diameter:.3f}埃, 总长度: {total_length:.3f}埃" #: ../nanotube.py:40 msgid "Nanotube" msgstr "纳米管" #: ../nanotube.py:43 msgid "Bond length: " msgstr " å¥é•¿ï¼š" #: ../nanotube.py:46 msgid "Select roll-up vector (n,m) and tube length:" msgstr "选择roll-up 矢é‡(n,m)和管长度:" #: ../nanotube.py:49 msgid "Length:" msgstr "长度:" #: ../quickinfo.py:6 msgid "Single image loaded." msgstr "加载了å•个图åƒã€‚" #: ../quickinfo.py:7 #, python-format msgid "Image %d loaded (0 - %d)." msgstr "åŠ è½½äº†å›¾åƒ %d (0 - %d)." #: ../quickinfo.py:8 msgid "Unit cell is fixed." msgstr "原胞大å°å·²å›ºå®šã€‚" #: ../quickinfo.py:9 msgid "Unit cell varies." msgstr "åŽŸèƒžå¤§å°æ”¹å˜äº†ã€‚" #: ../quickinfo.py:11 #, python-format msgid "" "%s\n" "\n" "Number of atoms: %d.\n" "\n" "Unit cell:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "\n" "%s\n" "%s\n" msgstr "" "%s\n" "\n" "åŽŸå­æ•°ç›®: %d.\n" "\n" "原胞:\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" " %8.3f %8.3f %8.3f\n" "%s\n" "%s\n" #: ../quickinfo.py:33 msgid "This frame has no atoms." msgstr "这个帧没有原å­" #: ../quickinfo.py:53 msgid "no" msgstr "䏿˜¯" #: ../quickinfo.py:53 msgid "yes" msgstr "对" #. TRANSLATORS: This has the form Periodic: no, no, yes #: ../quickinfo.py:57 #, python-format msgid "Periodic: %s, %s, %s" msgstr "周期性: %s, %s, %s" #: ../quickinfo.py:61 msgid "Volume: " msgstr "体积:" #: ../render.py:20 ../render.py:190 msgid "Render current view in povray ... " msgstr "在povray中渲染当å‰è§†å›¾ ..." #: ../render.py:21 ../render.py:194 #, python-format msgid "Rendering %d atoms." msgstr "渲染%d 原å­ä¸­ã€‚" #: ../render.py:26 msgid "Size" msgstr "尺寸大å°" #: ../render.py:31 ../render.py:227 msgid "Line width" msgstr "线宽" #: ../render.py:32 msgid "Ã…ngström" msgstr "埃" #: ../render.py:34 ../render.py:201 msgid "Render constraints" msgstr "渲染é™åˆ¶" #: ../render.py:35 ../render.py:215 msgid "Render unit cell" msgstr "渲染原胞" #: ../render.py:41 ../render.py:240 msgid "Output basename: " msgstr "输出基本å" #: ../render.py:43 msgid "Output filename: " msgstr "输出文件å" #: ../render.py:48 msgid "Atomic texture set:" msgstr "åŽŸå­æè´¨é›†" #: ../render.py:55 ../render.py:283 msgid "Camera type: " msgstr "相机类型:" #: ../render.py:56 msgid "Camera distance" msgstr "相机è·ç¦»" #. render current frame/all frames #: ../render.py:59 ../render.py:286 msgid "Render current frame" msgstr "渲染当å‰å¸§" #: ../render.py:60 msgid "Render all frames" msgstr "渲染所有 %d 帧" #: ../render.py:65 msgid "Run povray" msgstr "è¿è¡Œpovray" #: ../render.py:66 msgid "Keep povray files" msgstr "ä¿æŒvray文件" #: ../render.py:67 ../render.py:304 msgid "Show output window" msgstr "显示输出窗å£" #: ../render.py:68 ../render.py:295 msgid "Transparent background" msgstr "逿˜Žçš„背景" #: ../render.py:72 msgid "Render" msgstr "渲染" #: ../render.py:171 msgid "" " Textures can be used to highlight different parts of\n" " an atomic structure. This window applies the default\n" " texture to the entire structure and optionally\n" " applies a different texture to subsets of atoms that\n" " can be selected using the mouse.\n" " An alternative selection method is based on a boolean\n" " expression in the entry box provided, using the\n" " variables x, y, z, or Z. For example, the expression\n" " Z == 11 and x > 10 and y > 10\n" " will mark all sodium atoms with x or coordinates\n" " larger than 10. In either case, the button labeled\n" " `Create new texture from selection` will enable\n" " to change the attributes of the current selection.\n" " " msgstr "" " æè´¨å¯ä»¥ç”¨æ¥æ ‡è¯†åŽŸå­ç»“构的ä¸åŒéƒ¨åˆ†ã€‚这个窗å£å¯¹æ‰€æœ‰\n" " 的结构使用默认的æè´¨ã€‚你也å¯ä»¥ç”¨é¼ æ ‡é€‰æ‹©å¯¹æŒ‡å®šçš„原å­é›†åˆ\n" " 使用ä¸åŒçš„æè´¨ã€‚也å¯ä»¥é€šè¿‡æä¾›çš„booleanè¡¨è¾¾å¼æ¥\n" " 进行原å­é€‰æ‹©ã€‚例如:表达å¼Z == 11 与 x > 10 与 y > 10,\n" " 这将选择xå’Œyåæ ‡å¤§äºŽ10的钠原å­ã€‚ç„¶åŽé€šè¿‡â€˜ç»™æŒ‡å®š\n" " 的原å­é›†åˆåˆ›å»ºæ–°çš„æè´¨â€™æ¥æ›´æ”¹æè´¨çš„属性。\n" " " #: ../render.py:206 msgid "Width" msgstr "宽度" #: ../render.py:206 msgid " Height" msgstr " 高度" #: ../render.py:228 msgid "Angstrom " msgstr "Angstrom " #: ../render.py:238 msgid "Set" msgstr "设置" #: ../render.py:242 msgid " Filename: " msgstr " 文件å:" #: ../render.py:254 msgid " Default texture for atoms: " msgstr "é»˜è®¤çš„åŽŸå­æè´¨ï¼š" #: ../render.py:255 msgid " transparency: " msgstr " 逿˜Žåº¦ï¼š" #: ../render.py:258 msgid "Define atom selection for new texture:" msgstr "选择原å­ä»¥è¿›è¡Œæè´¨å®šä¹‰" #: ../render.py:260 msgid "Select" msgstr "选择" #: ../render.py:264 msgid "Create new texture from selection" msgstr "选择新的æè´¨" #: ../render.py:267 msgid "Help on textures" msgstr "关于æè´¨çš„帮助" #: ../render.py:284 msgid " Camera distance" msgstr " 相机è·ç¦»" #: ../render.py:290 #, python-format msgid "Render all %d frames" msgstr "渲染所有 %d 帧" #: ../render.py:298 msgid "Run povray " msgstr "è¿è¡Œpovray" #: ../render.py:301 msgid "Keep povray files " msgstr "ä¿æŒvray文件" #: ../render.py:389 msgid " transparency: " msgstr " 逿˜Žåº¦ï¼š" #: ../render.py:399 msgid "" "Can not create new texture! Must have some atoms selected to create a new " "material!" msgstr "ä¸èƒ½åˆ›å»ºæ–°çš„æè´¨ï¼å¿…须先选择原å­ï¼Œç„¶åŽåˆ›å»ºææ–™ï¼" #: ../repeat.py:10 msgid "Repeat" msgstr "é‡å¤" #: ../repeat.py:11 msgid "Repeat atoms:" msgstr "é‡å¤åŽŸå­ï¼š" #: ../repeat.py:15 msgid "Set unit cell" msgstr "设置原胞" #: ../rotate.py:13 msgid "Rotate" msgstr "旋转" #: ../rotate.py:14 msgid "Rotation angles:" msgstr "旋转角度:" #: ../rotate.py:18 msgid "Update" msgstr "æ›´æ–°" #: ../rotate.py:19 msgid "" "Note:\n" "You can rotate freely\n" "with the mouse, by holding\n" "down mouse button 2." msgstr "" "注æ„:\n" "æŒ‰ä½æŒ‰é’®2(通常为å³é”®),你用鼠标\n" "进行å¯ä»¥è‡ªç”±çš„æ—‹è½¬ã€‚" #: ../save.py:14 msgid "" "Append name with \"@n\" in order to write image\n" "number \"n\" instead of the current image. Append\n" "\"@start:stop\" or \"@start:stop:step\" if you want\n" "to write a range of images. You can leave out\n" "\"start\" and \"stop\" so that \"name@:\" will give\n" "you all images. Negative numbers count from the\n" "last image. Examples: \"name@-1\": last image,\n" "\"name@-2:\": last two." msgstr "" "把原文件的åå­(比如: name)加\"@n\"为了写入\"n\"å·ç”»é¢,\n" "䏿˜¯çŽ°ç”¨çš„ç”»é¢. 把åå­åŠ \"@start:stop\"还是\"@start:stop:step\"\n" "为了写入一连串画é¢. ä½ å¯ä»¥çœ\"start\"还是\"stop\"的选项,\n" "以便\"name@:\"会写入所有的画é¢. 用负数æ¥ä»Žæœ€åŽçš„ç”»é¢å€’æ•°,\n" "比如说: \"name@-1\": 最åŽçš„ç”»é¢,\"name@-2:\": 最åŽä¸¤ä¸ªç”»é¢." #: ../save.py:26 msgid "Save ..." msgstr "ä¿å­˜ ..." #: ../settings.py:10 msgid "Settings" msgstr "设置" #. Constraints #: ../settings.py:13 msgid "Constraints:" msgstr "é™åˆ¶ï¼š" #: ../settings.py:16 msgid "release" msgstr "释放" #: ../settings.py:17 ../settings.py:26 msgid " selected atoms" msgstr "已选择的原å­" #: ../settings.py:18 msgid "Constrain immobile atoms" msgstr "é™åˆ¶å›ºå®šçš„原å­" #: ../settings.py:19 msgid "Clear all constraints" msgstr "清除所有的é™åˆ¶" #. Visibility #: ../settings.py:22 msgid "Visibility:" msgstr "å¯è§†åŒ–" #: ../settings.py:23 msgid "Hide" msgstr "éšè—" #: ../settings.py:25 msgid "show" msgstr "显示" #: ../settings.py:27 msgid "View all atoms" msgstr "显示所有原å­" #. Miscellaneous #: ../settings.py:30 msgid "Miscellaneous:" msgstr "其他:" #: ../settings.py:33 msgid "Scale atomic radii:" msgstr "缩放原å­åŠç»" #: ../simulation.py:30 msgid " (rerun simulation)" msgstr " ï¼ˆé‡æ–°è¿è¡Œæ¨¡æ‹Ÿï¼‰" #: ../simulation.py:31 msgid " (continue simulation)" msgstr " (继续模拟)" #: ../simulation.py:33 msgid "Select starting configuration:" msgstr "选择开始构型" #: ../simulation.py:38 #, python-format msgid "There are currently %i configurations loaded." msgstr "ç›®å‰åŠ è½½äº†%i个构型。" #: ../simulation.py:43 msgid "Choose which one to use as the initial configuration" msgstr "选择åˆå§‹åŒ–构型" #: ../simulation.py:47 #, python-format msgid "The first configuration %s." msgstr "第一个构型 %s." #: ../simulation.py:50 msgid "Configuration number " msgstr "构型数目" #: ../simulation.py:56 #, python-format msgid "The last configuration %s." msgstr "最åŽä¸€ä¸ªæž„åž‹ %s." #: ../simulation.py:92 msgid "Run" msgstr "è¿è¡Œ" #: ../simulation.py:112 msgid "No calculator: Use Calculate/Set Calculator on the menu." msgstr "未找到计算器: 请使用èœå•上的Calculate/设置计算器。" #: ../simulation.py:123 msgid "No atoms present" msgstr "没有å‘现原å­" #: ../status.py:58 #, python-format msgid " tag=%(tag)s" msgstr "标签=%(tag)s" #. TRANSLATORS: mom refers to magnetic moment #: ../status.py:62 #, python-brace-format msgid " mom={0:1.2f}" msgstr "ç£çŸ©={0:1.2f}" #: ../status.py:66 #, python-brace-format msgid " q={0:1.2f}" msgstr "q={0:1.2f}" #: ../status.py:111 msgid "dihedral" msgstr "二é¢çš„" #: ../surfaceslab.py:12 msgid "" " Use this dialog to create surface slabs. Select the element by\n" "writing the chemical symbol or the atomic number in the box. Then\n" "select the desired surface structure. Note that some structures can\n" "be created with an othogonal or a non-orthogonal unit cell, in these\n" "cases the non-orthogonal unit cell will contain fewer atoms.\n" "\n" " If the structure matches the experimental crystal structure, you can\n" "look up the lattice constant, otherwise you have to specify it\n" "yourself." msgstr "" " ä½¿ç”¨è¿™ä¸ªçª—å£æ¥åˆ›å»ºè¡¨é¢ã€‚通过输入化学元素或原å­åºå·æ¥é€‰æ‹©\n" "元素。然åŽé€‰æ‹©éœ€è¦çš„表é¢ç»“构。注æ„,有些结构的原胞å¯ä»¥æ˜¯æ­£äº¤\n" "çš„æˆ–éžæ­£äº¤çš„ã€‚è¿™ç§æƒ…å†µä¸‹ï¼Œéžæ­£äº¤çš„åŽŸèƒžåŒ…å«æ›´å°‘的原å­ã€‚\n" "\n" "如果符åˆå®žéªŒçš„æ™¶ä½“结构,你å¯ä»¥æŸ¥æ‰¾æ™¶æ ¼å¸¸æ•°ï¼Œå¦åˆ™ä½ éœ€è¦è‡ªå·±æŒ‡å®šã€‚" #. Name, structure, orthogonal, function #: ../surfaceslab.py:24 msgid "FCC(100)" msgstr "FCC(100)" #: ../surfaceslab.py:24 ../surfaceslab.py:25 ../surfaceslab.py:26 #: ../surfaceslab.py:27 msgid "fcc" msgstr "fcc" #: ../surfaceslab.py:25 msgid "FCC(110)" msgstr "FCC(110)" #: ../surfaceslab.py:26 ../surfaceslab.py:170 msgid "FCC(111)" msgstr "FCC(111)" #: ../surfaceslab.py:27 ../surfaceslab.py:173 msgid "FCC(211)" msgstr "FCC(211)" #: ../surfaceslab.py:28 msgid "BCC(100)" msgstr "BCC(100)" #: ../surfaceslab.py:28 ../surfaceslab.py:29 ../surfaceslab.py:30 msgid "bcc" msgstr "bcc" #: ../surfaceslab.py:29 ../surfaceslab.py:167 msgid "BCC(110)" msgstr "BCC(111)" #: ../surfaceslab.py:30 ../surfaceslab.py:164 msgid "BCC(111)" msgstr "BCC(111)" #: ../surfaceslab.py:31 ../surfaceslab.py:177 msgid "HCP(0001)" msgstr "HCP(0001)" #: ../surfaceslab.py:31 ../surfaceslab.py:32 ../surfaceslab.py:131 #: ../surfaceslab.py:187 msgid "hcp" msgstr "hcp" #: ../surfaceslab.py:32 ../surfaceslab.py:180 msgid "HCP(10-10)" msgstr "HCP(10-10)" #: ../surfaceslab.py:33 msgid "DIAMOND(100)" msgstr "金刚石结构(100)" #: ../surfaceslab.py:33 ../surfaceslab.py:34 msgid "diamond" msgstr "金刚石" #: ../surfaceslab.py:34 msgid "DIAMOND(111)" msgstr "金刚石结构(111)" #: ../surfaceslab.py:67 msgid "Surface" msgstr "表é¢" #: ../surfaceslab.py:71 msgid "Orthogonal cell:" msgstr "正交原胞:" #: ../surfaceslab.py:72 msgid "Lattice constant:\ta" msgstr "晶格常数:\ta" #: ../surfaceslab.py:74 msgid "\t\tc" msgstr "\t\tc" #: ../surfaceslab.py:75 msgid "Size: \tx: " msgstr "大å°: \tx: " #: ../surfaceslab.py:76 msgid "\ty: " msgstr "\ty: " #: ../surfaceslab.py:77 msgid "\tz: " msgstr "\tz: " #. TRANSLATORS: This is a title of a window. #: ../surfaceslab.py:81 msgid "Creating a surface." msgstr "创建表é¢ã€‚" #: ../surfaceslab.py:161 msgid "Please enter an even value for orthogonal cell" msgstr "è¯·ä¸ºæ­£äº¤çš„æ™¶æ ¼è¾“å…¥ä¸€ä¸ªåŒæ•°" #: ../surfaceslab.py:174 msgid "Please enter a value divisible by 3 for orthogonal cell" msgstr "请为正交的晶格输入一个å¯è¢«3除尽的数" #: ../surfaceslab.py:194 msgid " Vacuum: {} Ã…." msgstr "真空: {}埃" #. TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." #. or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." #: ../surfaceslab.py:202 #, python-brace-format msgid "{symbol} {surf} surface with one atom.{vacuum}" msgid_plural "{symbol} {surf} surface with {natoms} atoms.{vacuum}" msgstr[0] "{symbol} {surf} 表é¢{natoms}å·çš„原å­.{vacuum}" #: ../ui.py:46 msgid "Error" msgstr "错误" #: ../ui.py:53 msgid "Version" msgstr "版本" #: ../ui.py:54 msgid "Web-page" msgstr "网页" #: ../ui.py:55 msgid "About" msgstr "关于" #: ../ui.py:60 ../ui.py:64 msgid "Help" msgstr "帮助" #: ../widgets.py:11 msgid "Element:" msgstr "元素:" #: ../widgets.py:39 msgid "No element specified!" msgstr "未指定元素ï¼" #: ../widgets.py:56 msgid "ERROR: Invalid element!" msgstr "错误:无效元素ï¼" #: ../widgets.py:75 msgid "No Python code" msgstr "没有Python代ç " #~ msgid "" #~ "To make most calculations on the atoms, a Calculator object must first\n" #~ "be associated with it. ASE supports a number of calculators, supporting\n" #~ "different elements, and implementing different physical models for the\n" #~ "interatomic interactions." #~ msgstr "" #~ "如果è¦è¿›è¡Œè®¡ç®—,请先指定一个计算器。ASE支æŒå¤šä¸ªè®¡ç®—器,\n" #~ "这些计算起支æŒå¤šç§å…ƒç´ ï¼Œå¹¶ä¸”有多ç§ç‰©ç†æ¨¡åž‹å¤„ç†åŽŸå­é—´çš„作用。" # XXX 计算器 #, fuzzy #~ msgid "" #~ "The Lennard-Jones pair potential is one of the simplest\n" #~ "possible models for interatomic interactions, mostly\n" #~ "suitable for noble gasses and model systems.\n" #~ "\n" #~ "Interactions are described by an interaction length and an\n" #~ "interaction strength." #~ msgstr "" #~ "Lennard-Jones势是æè¿°åŽŸå­é—´ç›¸äº’作用的最简å•的模型之一。它适åˆäºŽæƒ°æ€§æ°”\n" #~ "体和模型体系. 该势使用原å­é—´è·å’Œç›¸äº’ä½œç”¨å¼ºåº¦å‚æ•°æ¥æè¿°åŽŸå­é—´çš„相互作用" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au, the Al potential is however not suitable for materials\n" #~ "science application, as the stacking fault energy is wrong.\n" #~ "\n" #~ "A number of parameter sets are provided.\n" #~ "\n" #~ "Default parameters:\n" #~ "\n" #~ "The default EMT parameters, as published in K. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Alternative Cu, Ag and Au:\n" #~ "\n" #~ "An alternative set of parameters for Cu, Ag and Au,\n" #~ "reoptimized to experimental data including the stacking\n" #~ "fault energies by Torben Rasmussen (partly unpublished).\n" #~ "\n" #~ "Ruthenium:\n" #~ "\n" #~ "Parameters for Ruthenium, as published in J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "Metallic glasses:\n" #~ "\n" #~ "Parameters for MgCu and CuZr metallic glasses. MgCu\n" #~ "parameters are in N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZr in A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgstr "" #~ "有效介质ç†è®º(EMT)势是一ç§å¤šä½“势。它能很好的æè¿°FCC结构的åŽè¿‡æ¸¡é‡‘属元素。\n" #~ "EMT所包å«çš„元素有 (é“)Al, (é•)Ni, (铜)Cu, (钯)Pd, \n" #~ "(银)Ag, (铂)Pt, (金)Au。但由于(é“)Al势给出错误的堆积能,\n" #~ "å…¶ä¸é€‚åˆææ–™ç§‘å­¦è®¡ç®—ã€‚\n" #~ "\n" #~ "本软件包所æä¾›çš„EMT势æä¾›äº†å¾ˆå¤šå‚数的默认值。\n" #~ "\n" #~ "默认值:\n" #~ "\n" #~ "EMT傿•°çš„默认值æ¥è‡ªäºŽK. W. Jacobsen,\n" #~ "P. Stoltze and J. K. Nørskov, Surf. Sci. 366, 394 (1996).\n" #~ "\n" #~ "Cu, Agå’ŒAuçš„å¦ä¸€ç»„傿•°å€¼:\n" #~ "\n" #~ "Torben Rasmussen æ ¹æ®å®žéªŒå€¼è¿›è¡Œäº†é‡æ–°ä¼˜åŒ–, 得到了Cu, Agå’ŒAu\n" #~ "çš„å¦ä¸€ç»„傿•°å€¼ï¼ˆéƒ¨åˆ†å·²å‘è¡¨ï¼‰ã€‚è¿™ç»„å‚æ•°å¾ˆå¥½çš„修正了堆积能计算值。\n" #~ "\n" #~ "(钌)Ru:\n" #~ "\n" #~ "(钌)Ruçš„å‚æ•°æ¥è‡ª J. Gavnholt and\n" #~ "J. Schiøtz, Phys. Rev. B 77, 035404 (2008).\n" #~ "\n" #~ "金属玻璃:\n" #~ "\n" #~ "MgCu å’Œ CuZr é‡‘å±žçŽ»ç’ƒçš„å‚æ•°ã€‚ MgCu\n" #~ "çš„å‚æ•°æ¥è‡ªäºŽ N. P. Bailey, J. Schiøtz and\n" #~ "K. W. Jacobsen, Phys. Rev. B 69, 144205 (2004).\n" #~ "CuZrçš„å‚æ•°æ¥è‡ªäºŽ A. Paduraru, A. Kenoufi, N. P. Bailey and\n" #~ "J. Schiøtz, Adv. Eng. Mater. 9, 505 (2007).\n" #~ msgid "" #~ "The EMT potential is a many-body potential, giving a\n" #~ "good description of the late transition metals crystalling\n" #~ "in the FCC crystal structure. The elements described by the\n" #~ "main set of EMT parameters are Al, Ni, Cu, Pd, Ag, Pt, and\n" #~ "Au. In addition, this implementation allows for the use of\n" #~ "H, N, O and C adatoms, although the description of these is\n" #~ "most likely not very good.\n" #~ "\n" #~ "This is the ASE implementation of EMT. For large\n" #~ "simulations the ASAP implementation is more suitable; this\n" #~ "implementation is mainly to make EMT available when ASAP is\n" #~ "not installed.\n" #~ msgstr "" #~ "EMT势是一ç§å¤šä½“势。它能很好的æè¿°FCC结构的åŽè¿‡æ¸¡æ€§é‡‘属元素。\n" #~ "EMT所包å«çš„元素有 (é“)Al, (é•)Ni, (铜)Cu, (钯)Pd, \n" #~ "(银)Ag, (铂)Pt, (金)Au。å¦å¤–,此版本å…许用户使用(氢)H, \n" #~ "(氮)N, (氧)O和(碳)C作为å¸é™„原å­, 但是其精度并ä¸é«˜ã€‚\n" #~ "\n" #~ "这是ASE中的所包å«çš„EMT计算器,它仅æä¾›æµ‹è¯•所用的最基本的\n" #~ "功能。如需对于大体系进行计算,请安装使用ASAP中所包å«çš„版本。\n" #~ msgid "" #~ "The Brenner potential is a reactive bond-order potential for\n" #~ "carbon and hydrocarbons. As a bond-order potential, it takes\n" #~ "into account that carbon orbitals can hybridize in different\n" #~ "ways, and that carbon can form single, double and triple\n" #~ "bonds. That the potential is reactive means that it can\n" #~ "handle gradual changes in the bond order as chemical bonds\n" #~ "are formed or broken.\n" #~ "\n" #~ "The Brenner potential is implemented in Asap, based on a\n" #~ "C implentation published at http://www.rahul.net/pcm/brenner/ .\n" #~ "\n" #~ "The potential is documented here:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" #~ msgstr "" #~ "Brenner势是一ç§é€‚ç”¨äºŽç¢³ææ–™å’Œç¢³æ°¢åŒ–åˆç‰©çš„å应键æžåŠ¿ã€‚\n" #~ "作为一ç§é”®æžåŠ¿, 它考虑了碳轨é“的多ç§å¯èƒ½æ‚化形å¼ï¼Œ\n" #~ "以åŠç¢³å¯ä»¥å•键,åŒé”®ï¼Œä¸‰é‡é”®ã€‚å应键æžåŠ¿ä¸­çš„å应æ„味ç€ä»–能\n" #~ "处ç†åŒ–学键断裂和形æˆè¿‡ç¨‹ä¸­é”®æžçš„逿­¥å˜åŒ–。\n" #~ "\n" #~ "ASAP 包å«Brenner势, 这势是用C语言编写的。æ¥è‡ªäºŽhttp://www.rahul.net/pcm/" #~ "brenner/ .\n" #~ "\n" #~ "该势能的å‚考文献:\n" #~ " Donald W Brenner, Olga A Shenderova, Judith A Harrison,\n" #~ " Steven J Stuart, Boris Ni and Susan B Sinnott:\n" #~ " \"A second-generation reactive empirical bond order (REBO)\n" #~ " potential energy expression for hydrocarbons\",\n" #~ " J. Phys.: Condens. Matter 14 (2002) 783-802.\n" #~ " doi: 10.1088/0953-8984/14/4/312\n" # Here, I am not sure about how to present the name of GPAW in chinese.*** #, fuzzy #~| msgid "" #~| "GPAW implements Density Functional Theory using a\n" #~| "Grid-based real-space representation of the wave\n" #~| "functions, and the Projector Augmented Wave\n" #~| "method for handling the core regions. \n" #~ msgid "" #~ "GPAW implements Density Functional Theory using a\n" #~ "Grid-based real-space representation of the wave\n" #~ "functions, and the Projector Augmented Wave\n" #~ "method for handling the core regions.\n" #~ msgstr "" #~ "GPAW 基于密度泛函ç†è®ºï¼ˆDensity Functional Theory),使用实空间格点展开波函" #~ "数,\n" #~ "使用投射增广波方法( Projector Augmented Wave " #~ "method)\n" #~ "å¤„ç†æ ¸å¿ƒç”µå­ã€‚\n" #, fuzzy #~| msgid "" #~| "FHI-aims is an external package implementing density \n" #~| "functional theory and quantum chemical methods using \n" #~| "all-electron methods and a numeric local orbital basis set. \n" #~| "For full details, see http://www.fhi-berlin.mpg.de/aims/ \n" #~| "or Comp. Phys. Comm. v180 2175 (2009). The ASE \n" #~| "documentation contains information on the keywords and \n" #~| "functionalities available within this interface. \n" #~ msgid "" #~ "FHI-aims is an external package implementing density\n" #~ "functional theory and quantum chemical methods using\n" #~ "all-electron methods and a numeric local orbital basis set.\n" #~ "For full details, see http://www.fhi-berlin.mpg.de/aims/\n" #~ "or Comp. Phys. Comm. v180 2175 (2009). The ASE\n" #~ "documentation contains information on the keywords and\n" #~ "functionalities available within this interface.\n" #~ msgstr "" #~ "FHI-aims 是一个外部的软件包。它基于密度泛函ç†è®ºå’Œé‡å­åŒ–学方法,\n" #~ "使用全电å­å’Œæ•°å€¼å±€éƒ¨è½¨é“基组。\n" #~ "å‚考信æ¯ï¼š http://www.fhi-berlin.mpg.de/aims/ \n" #~ "或者 Comp. Phys. Comm. v180 2175 (2009). ASE \n" #~ "的使用手册里包å«å…³é”®è¯å’ŒåŠŸèƒ½ä¿¡æ¯ã€‚\n" #~ msgid "" #~ "WARNING:\n" #~ "Your system seems to have more than zero but less than\n" #~ "three periodic dimensions. Please check that this is\n" #~ "really what you want to compute. Assuming full\n" #~ "3D periodicity for this calculator." #~ msgstr "" #~ "警告:\n" #~ "你的计算体系的周期性大于零维但å°äºŽä¸‰ç»´ã€‚请对此进行确认。\n" #~ "此计算器将使用三维周期性进行计算。" #~ msgid "" #~ "VASP is an external package implementing density\n" #~ "functional functional theory using pseudopotentials\n" #~ "or the projector-augmented wave method together\n" #~ "with a plane wave basis set. For full details, see\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgstr "" #~ "VASP 是一个外部的软件包。它基于密度泛函ç†è®ºï¼Œä½¿ç”¨\n" #~ "èµåŠ¿æˆ–è€…PAWæ–¹æ³•ï¼Œæ³¢å‡½æ•°ç”¨å¹³é¢æ³¢å±•开。å‚考信æ¯ï¼š\n" #~ "http://cms.mpi.univie.ac.at/vasp/vasp/\n" #~ msgid "Default (Al, Ni, Cu, Pd, Ag, Pt, Au)" #~ msgstr "默认(é“Al, é•Ni, 铜Cu, é’¯Pd,é“¶Ag, é“‚Pt, 金Au)" #~ msgid "Alternative Cu, Ag and Au" #~ msgstr "å¦å¤– 铜Cu,银Ag, 金Au" #~ msgid "Ruthenium" #~ msgstr "Ruthenium" #~ msgid "CuMg and CuZr metallic glass" #~ msgstr "CuMg å’Œ CuZr 金属玻璃" #, fuzzy #~| msgid "Set _Calculator" #~ msgid "Select calculator" #~ msgstr "设置计算器" #~ msgid "Calculator:" #~ msgstr "计算器" #~ msgid "None" #~ msgstr "æ— " #~ msgid "Lennard-Jones (ASAP)" #~ msgstr "Lennard-Jones (ASAP)" #~ msgid "Setup" #~ msgstr "设置" #~ msgid "EMT - Effective Medium Theory (ASAP)" #~ msgstr "EMT - 有效介质ç†è®º (ASAP)" #~ msgid "EMT - Effective Medium Theory (ASE)" #~ msgstr "EMT - 有效介质ç†è®º (ASE)" #~ msgid "Brenner Potential (ASAP)" #~ msgstr "Brenner 势 (ASAP)" #~ msgid "Density Functional Theory (GPAW)" #~ msgstr "密度泛函ç†è®º (GPAW)" #~ msgid "Density Functional Theory (FHI-aims)" #~ msgstr "密度泛函ç†è®º (FHI-aims)" #~ msgid "Density Functional Theory (VASP)" #~ msgstr "密度泛函ç†è®º (VASP)" #~ msgid "Check that the calculator is reasonable." #~ msgstr "检查计算器是å¦åˆç†ã€‚" #~ msgid "ASAP is not installed. (Failed to import asap3)" #~ msgstr "ASAP 没有安装。(加载asap3失败)" #~ msgid "You must set up the Lennard-Jones parameters" #~ msgstr "你必须设置Lennard-Jones傿•°" #~ msgid "Could not create useful Lennard-Jones calculator." #~ msgstr "创建Lennard-Jones 计算器失败。" #~ msgid "Could not attach EMT calculator to the atoms." #~ msgstr "ä¸èƒ½å°†EMT计算器赋予给原å­ã€‚" #, fuzzy #~| msgid "You must set up the GPAW parameters" #~ msgid "You must set up the EAM parameters" #~ msgstr "你必须设置GPAWçš„å‚æ•°" #~ msgid "GPAW is not installed. (Failed to import gpaw)" #~ msgstr "GPAW 没有安装。(加载gpaw失败)" #~ msgid "You must set up the GPAW parameters" #~ msgstr "你必须设置GPAWçš„å‚æ•°" #~ msgid "You must set up the FHI-aims parameters" #~ msgstr "你必须设置FHI-aimsçš„å‚æ•°" #~ msgid "You must set up the VASP parameters" #~ msgstr "你必须设置VASPçš„å‚æ•°" #~ msgid "Element %(sym)s not allowed by the '%(name)s' calculator" #~ msgstr "'%(name)s'计算器中无法使用元素 %(sym)s" #~ msgid "Info" #~ msgstr "ä¿¡æ¯" #~ msgid "Lennard-Jones parameters" #~ msgstr "Lennard-Jones傿•°" #~ msgid "Specify the Lennard-Jones parameters here" #~ msgstr "请设置Lennard-Jones傿•°" #~ msgid "Epsilon (eV):" #~ msgstr "Epsilon (eV):" #~ msgid "Sigma (Ã…):" #~ msgstr "Sigma (Ã…):" # I am not sure about this part. What calculator is this info for?*** #~ msgid "Shift to make smooth at cutoff" #~ msgstr "在阶段处进行调整,使其光滑" # XXX截断 #, fuzzy #~| msgid "GPAW parameters" #~ msgid "EAM parameters" #~ msgstr "GPAW 傿•°" #, fuzzy #~| msgid "Import control.in" #~ msgid "Import Potential" #~ msgstr "导入control.in" #, fuzzy #~| msgid "Import control.in file ... " #~ msgid "Import .alloy or .adp potential file ... " #~ msgstr "导入control.in文件 ..." # XXX截断 #~ msgid "GPAW parameters" #~ msgstr "GPAW 傿•°" #~ msgid "%i atoms.\n" #~ msgstr "%i 原å­.\n" #~ msgid "Orthogonal unit cell: %.2f x %.2f x %.2f Ã…." #~ msgstr "正交原胞: %.2f x %.2f x %.2f Ã…." #~ msgid "Non-orthogonal unit cell:\n" #~ msgstr "éžæ­£äº¤åŽŸèƒž:\n" #~ msgid "Exchange-correlation functional: " #~ msgstr "交æ¢ï¼ç›¸å…³ 势能:" #~ msgid "Grid spacing" #~ msgstr "æ ¼å­é—´è·" #~ msgid "Grid points" #~ msgstr "格点" #~ msgid "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgstr "heff = (%.3f, %.3f, %.3f) Ã…" #~ msgid "k-points k = (" #~ msgstr "k点数 k = (" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã…" #~ msgstr "k点数 x 尺寸: (%.1f, %.1f, %.1f) Ã…" #~ msgid "Spin polarized" #~ msgstr "自旋æžåŒ–" #~ msgid "FD - Finite Difference (grid) mode" #~ msgstr "FD - 有é™å·®åˆ† (格点) 模å¼" #~ msgid "LCAO - Linear Combination of Atomic Orbitals" #~ msgstr "LCAO - 原å­è½¨é“线性组åˆ" #~ msgid "Mode: " #~ msgstr "模å¼ï¼š" #~ msgid "sz - Single Zeta" #~ msgstr "sz - å•Zeta" #~ msgid "szp - Single Zeta polarized" #~ msgstr "szp - å•ZetaæžåŒ–" #~ msgid "dzp - Double Zeta polarized" #~ msgstr "dzp - åŒZetaæžåŒ–" #~ msgid "Basis functions: " #~ msgstr "基组函数:" #~ msgid "Non-standard mixer parameters" #~ msgstr "éžæ ‡å‡†æ··åˆå‚æ•°" #~ msgid "FHI-aims parameters" #~ msgstr "FHI-aims傿•°" #~ msgid "Periodic geometry, unit cell is:\n" #~ msgstr "周期性构型,原胞是:\n" #~ msgid "Non-periodic geometry.\n" #~ msgstr "éžå‘¨æœŸæ€§æž„åž‹\n" # Not sure about this translation. #~ msgid "Hirshfeld-based dispersion correction" #~ msgstr "基于Hirshfeld的分布修正" #~ msgid "Spin / initial moment " #~ msgstr "自旋 / åˆå§‹ç£çŸ©" #~ msgid " Charge" #~ msgstr " 电è·" #~ msgid " Relativity" #~ msgstr " 相对论" #~ msgid " Threshold" #~ msgstr " 阈值" #~ msgid "Self-consistency convergence:" #~ msgstr "è‡ªæ°æ”¶æ•›ï¼š" #~ msgid "Compute forces" #~ msgstr "计算å—力" #~ msgid "Energy: " #~ msgstr "能é‡ï¼š " #~ msgid " eV Sum of eigenvalues: " #~ msgstr " eV 本å¾å€¼ä¹‹å’Œï¼š" #~ msgid " eV" #~ msgstr " eV" #~ msgid "Electron density: " #~ msgstr "电å­å¯†åº¦ï¼š" #~ msgid " Force convergence: " #~ msgstr " 力的收敛:" #~ msgid " eV/Ang " #~ msgstr " eV/Ang " #~ msgid "Additional keywords: " #~ msgstr "其他关键è¯ï¼š" #~ msgid "FHI-aims execution command: " #~ msgstr "FHI-aims执行命令:" #~ msgid "Directory for species defaults: " #~ msgstr "默认的元素目录:" #~ msgid "Set Defaults" #~ msgstr "设置默认值" #~ msgid "Import control.in" #~ msgstr "导入control.in" #~ msgid "Export control.in" #~ msgstr "导出control.in" #~ msgid "Export parameters ... " #~ msgstr "å¯¼å‡ºå‚æ•°" #~ msgid "Import control.in file ... " #~ msgstr "导入control.in文件 ..." #~ msgid "" #~ "Please use the facilities provided in this window to manipulate the " #~ "keyword: %s!" #~ msgstr "请使用这个窗å£é‡Œæä¾›çš„工具æ¥ä¿®æ”¹å…³é”®è¯ï¼š%s!" #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/aims.py." #~ msgstr "" #~ "ä¸å­˜åœ¨è¿™ä¸ªå…³é”®è¯ï¼š %s\n" #~ "\n" #~ "请检查ï¼\n" #~ "\n" #~ "如果你觉得此关键è¯åº”当存在,请添加在 ase/calculators/aims.py的上方。" #~ msgid "VASP parameters" #~ msgstr "VASP 傿•°" #~ msgid "Periodic geometry, unit cell is: \n" #~ msgstr "周期性构型,原胞是:\n" #~ msgid ") Cutoff: " #~ msgstr ") 截断: " #~ msgid " Precision: " #~ msgstr " 精度:" #~ msgid "k-points x size: (%.1f, %.1f, %.1f) Ã… " #~ msgstr "k点数 x 尺寸: (%.1f, %.1f, %.1f) Ã… " # don't know how to translate this term. #~ msgid "Smearing: " #~ msgstr "Smearing: " # order of what?*** #~ msgid " order: " #~ msgstr " order: " #~ msgid " width: " #~ msgstr " 宽度: " #~ msgid "Self-consistency convergence: " #~ msgstr "è‡ªæ°æ”¶æ•›:" #~ msgid "VASP execution command: " #~ msgstr "VASP 执行命令:" #~ msgid "Import VASP files" #~ msgstr "导入 VASP 文件" #~ msgid "Export VASP files" #~ msgstr "导出 VASP 文件" #~ msgid "WARNING: cutoff energy is lower than recommended minimum!" #~ msgstr "警告: 截断能(E-cutoff)低于推è值ï¼" #~ msgid "Import VASP input files: choose directory ... " #~ msgstr "导入 VASP 输入文件:选择目录 ..." #~ msgid "Export VASP input files: choose directory ... " #~ msgstr "导出 VASP 输入文件:选择目录 ..." #~ msgid "" #~ "Don't know this keyword: %s\n" #~ "Please check!\n" #~ "\n" #~ "If you really think it should be available, please add it to the top of " #~ "ase/calculators/vasp.py." #~ msgstr "" #~ "ä¸å­˜åœ¨è¿™ä¸ªå…³é”®è¯ï¼š %s\n" #~ "\n" #~ "请检查ï¼\n" #~ "\n" #~ "如果你觉得此关键è¯åº”当存在,请添加在 ase/calculators/vasp.py的上方。" #, fuzzy #~| msgid "" #~| "\n" #~| " Global commands work on all frames or only on the current frame\n" #~| " - Assignment of a global variable may not reference a local one\n" #~| " - use 'Current frame' switch to switch off application to all " #~| "frames\n" #~| " e:\t\ttotal energy of one frame\n" #~| " fmax:\tmaximal force in one frame\n" #~| " A:\tunit cell\n" #~| " E:\t\ttotal energy array of all frames\n" #~| " F:\t\tall forces in one frame\n" #~| " M:\tall magnetic moments\n" #~| " R:\t\tall atomic positions\n" #~| " S:\tall selected atoms (boolean array)\n" #~| " D:\tall dynamic atoms (boolean array)\n" #~| " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~| "\n" #~| " Atom commands work on each atom (or a selection) individually\n" #~| " - these can use global commands on the RHS of an equation\n" #~| " - use 'selected atoms only' to restrict application of command\n" #~| " x,y,z:\tatomic coordinates\n" #~| " r,g,b:\tatom display color, range is [0..1]\n" #~| " rad:\tatomic radius for display\n" #~| " s:\t\tatom is selected\n" #~| " d:\t\tatom is movable\n" #~| " f:\t\tforce\n" #~| " Z:\tatomic number\n" #~| " m:\tmagnetic moment\n" #~| " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~| "\n" #~| " Special commands and objects:\n" #~| " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~| " frame:\tframe number\n" #~| " center:\tcenters the system in its existing unit cell\n" #~| " del S:\tdelete selection\n" #~| " CM:\tcenter of mass\n" #~| " ans[-i]:\tith last calculated result\n" #~| " exec file: executes commands listed in file\n" #~| " cov[Z]:(read only): covalent radius of atomic number Z\n" #~| " gui:\tadvanced: ase-gui window python object\n" #~| " img:\tadvanced: ase-gui images object\n" #~| " " #~ msgid "" #~ "\n" #~ " Global commands work on all frames or only on the current frame\n" #~ " - Assignment of a global variable may not reference a local one\n" #~ " - use 'Current frame' switch to switch off application to all frames\n" #~ " e:\t\ttotal energy of one frame\n" #~ " fmax:\tmaximal force in one frame\n" #~ " A:\tunit cell\n" #~ " E:\t\ttotal energy array of all frames\n" #~ " F:\t\tall forces in one frame\n" #~ " M:\tall magnetic moments\n" #~ " R:\t\tall atomic positions\n" #~ " S:\tall selected atoms (boolean array)\n" #~ " D:\tall dynamic atoms (boolean array)\n" #~ " examples: frame = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom commands work on each atom (or a selection) individually\n" #~ " - these can use global commands on the RHS of an equation\n" #~ " - use 'selected atoms only' to restrict application of command\n" #~ " x,y,z:\tatomic coordinates\n" #~ " r,g,b:\tatom display color, range is [0..1]\n" #~ " rad:\tatomic radius for display\n" #~ " s:\t\tatom is selected\n" #~ " d:\t\tatom is movable\n" #~ " f:\t\tforce\n" #~ " Z:\tatomic number\n" #~ " m:\tmagnetic moment\n" #~ " examples: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " Special commands and objects:\n" #~ " sa,cf:\t(un)restrict to selected atoms/current frame\n" #~ " frame:\tframe number\n" #~ " center:\tcenters the system in its existing unit cell\n" #~ " del S:\tdelete selection\n" #~ " CM:\tcenter of mass\n" #~ " ans[-i]:\tith last calculated result\n" #~ " exec file: executes commands listed in file\n" #~ " cov[Z]:(read only): covalent radius of atomic number Z\n" #~ " gui:\tadvanced: gui window python object\n" #~ " img:\tadvanced: gui images object\n" #~ " " #~ msgstr "" #~ "\n" #~ " å…¨å±€å‘½ä»¤ä½œç”¨äºŽæ‰€æœ‰æž„åž‹æˆ–è€…å½“å‰æž„åž‹\n" #~ " - 全局å˜é‡çš„æŒ‡å®šå¯èƒ½ä¸Žå±€åŸŸå˜é‡æ— å…³\n" #~ " - 使用'当剿ž„åž‹'开关使其ä¸åº”用于所有构型\n" #~ " e:\t\t一个构型的总能\n" #~ " fmax:\t一个构型的最大å—力\n" #~ " A:\t原胞\n" #~ " E:\t\t所有构型的总能\n" #~ " F:\t\t一个构型的总å—力\n" #~ " M:\t所有构型的ç£çŸ©\n" #~ " R:\t\t所有的原å­ä½ç½®\n" #~ " S:\t所有所选的原å­(boolean array)\n" #~ " D:\t所有å¯ç§»åŠ¨çš„åŽŸå­ (boolean array)\n" #~ " 例å­: 构型 = 1, A[0][1] += 4, e-E[-1]\n" #~ "\n" #~ " Atom 命令分别作用于å„个原å­ï¼ˆæˆ–所选的原å­é›†åˆï¼‰\n" #~ " - 这些å¯ä½¿ç”¨å…¨å±€å‘½ä»¤ä½œç”¨äºŽthe RHS of an equation\n" #~ " - 使用 '仅应用于被选择的原å­' æ¥é™åˆ¶å‘½ä»¤çš„应用\n" #~ " x,y,z:\t原å­çš„åæ ‡\n" #~ " r,g,b:\tè¦æ˜¾ç¤ºçš„原å­é¢œè‰²ï¼ŒèŒƒå›´æ˜¯[0..1]\n" #~ " rad:\t显示的原å­åŠå¾„\n" #~ " s:\t\t已被选择的原å­\n" #~ " d:\t\tå¯ç§»åŠ¨çš„åŽŸå­\n" #~ " f:\t\tå—力\n" #~ " Z:\tåŽŸå­æ•°\n" #~ " m:\tç£çŸ©\n" #~ " 例å­: x -= A[0][0], s = z > 5, Z = 6\n" #~ "\n" #~ " 特殊命令和对象:\n" #~ " sa,cf:\t(ä¸ï¼‰é™åˆ¶äºŽæ‰€é€‰åŽŸå­/当剿ž„åž‹\n" #~ " frame:\t构型åºå·\n" #~ " center:\t将体系居中于当å‰å­˜åœ¨çš„原胞中\n" #~ " del S:\t删除选择\n" #~ " CM:\té‡å¿ƒ\n" #~ " ans[-i]:\t最åŽç¬¬i个计算结果\n" #~ " exec file: 执行文件中列出的命令\n" #~ " cov[Z]:(仅仅读å–): åŽŸå­æ•°ä¸ºZ的原å­å…±ä»·åŠå¾„\n" #~ " gui:\t高级:ase-gui çª—å£ python 对象\n" #~ " img:\t高级:ase-gui å›¾åƒ å¯¹è±¡\n" #~ " " #~ msgid "Expert user mode" #~ msgstr "专家级模å¼" #~ msgid "Welcome to the ASE Expert user mode" #~ msgstr "欢迎使用ASE专家级模å¼" #~ msgid "Only selected atoms (sa) " #~ msgstr "仅应用于被选择的原å­(sa) " #~ msgid "Only current frame (cf) " #~ msgstr "ä»…åº”ç”¨äºŽå½“å‰æž„åž‹ (cf) " #~ msgid "" #~ "Global: Use A, D, E, M, N, R, S, n, frame; Atoms: Use a, f, m, s, x, y, " #~ "z, Z " #~ msgstr "" #~ "全局: 使用 A, D, E, M, N, R, S, n, 构型; Atoms: 使用 a, f, m, s, x, y, z, " #~ "Z " #~ msgid "*** WARNING: file does not exist - %s" #~ msgstr "*** 警告:文件ä¸å­˜åœ¨ - %s" #~ msgid "*** WARNING: No atoms selected to work with" #~ msgstr "*** 警告: 没有选择原å­" #~ msgid "*** Only working on selected atoms" #~ msgstr "*** 仅应用于所选的原å­" #~ msgid "*** Working on all atoms" #~ msgstr "*** 应用于所有原å­" #~ msgid "*** Only working on current image" #~ msgstr "*** 仅应用于当å‰å›¾åƒ" #~ msgid "*** Working on all images" #~ msgstr "*** 应用于所有图åƒ" #~ msgid "Save Terminal text ..." #~ msgstr "ä¿å­˜ç»ˆç«¯æ–‡å­— ..." #~ msgid "Cancel" #~ msgstr "å–æ¶ˆ" #~ msgid "Algorithm: " #~ msgstr "算法:" #~ msgid "Convergence criterion: Fmax = " #~ msgstr "收敛标准: Fmax = " #~ msgid "Max. number of steps: " #~ msgstr "最多迭代次数:" #~ msgid "Pseudo time step: " #~ msgstr "èµæ—¶é—´æ¬¡æ•°ï¼š" #~ msgid "Energy minimization" #~ msgstr "èƒ½é‡æœ€å°åŒ–" #~ msgid "Minimize the energy with respect to the positions." #~ msgstr "æ ¹æ®ä½ç½®ï¼Œè¿›è¡Œèƒ½é‡æœ€å°åŒ–" #~ msgid "Running ..." #~ msgstr "è¿è¡Œä¸­ ..." #~ msgid "Minimization CANCELLED after %i steps." #~ msgstr "%iæ­¥åŽä¼˜åŒ–è¢«å–æ¶ˆã€‚" #~ msgid "Out of memory, consider using LBFGS instead" #~ msgstr "内存ä¸è¶³ï¼Œè¯·æ”¹ç”¨LBFGS方法" #~ msgid "Minimization completed in %i steps." #~ msgstr "ç»è¿‡%iæ­¥åŽï¼Œä¼˜åŒ–结æŸã€‚" #~ msgid "Progress" #~ msgstr "过程" #~ msgid "Scaling deformation:" #~ msgstr "调整å˜å½¢ï¼š" #~ msgid "Step number %s of %s." #~ msgstr " 第%s步,总共 %s步。" #~ msgid "Energy minimization:" #~ msgstr "能é‡ä¼˜åŒ–:" #~ msgid "Step number: " #~ msgstr "步数:" #~ msgid "Fmax: " #~ msgstr "Fmax: " #~ msgid "unknown" #~ msgstr "未知" #~ msgid "Status: " #~ msgstr "状æ€ï¼š" #~ msgid "Iteration: " #~ msgstr "迭代:" #~ msgid "log10(change):" #~ msgstr "log10(å˜åŒ–):" #~ msgid "Wave functions: " #~ msgstr "波函数:" #~ msgid "Density: " #~ msgstr "密度:" #~ msgid "Energy: " #~ msgstr "能é‡ï¼š" #~ msgid "GPAW version: " #~ msgstr "GPAW 版本:" #~ msgid "N/A" #~ msgstr "N/A" #~ msgid "Memory estimate: " #~ msgstr "所需内存大å°ä¼°è®¡" #~ msgid "No info" #~ msgstr "没有信æ¯" #~ msgid "Initializing" #~ msgstr "åˆå§‹åŒ–中" #~ msgid "Positions:" #~ msgstr "ä½ç½®ï¼š" #~ msgid "Starting calculation" #~ msgstr "开始计算中" #~ msgid "unchanged" #~ msgstr "没改å˜" #~ msgid "Self-consistency loop" #~ msgstr "自æ°è¿­ä»£å¾ªçޝ" #~ msgid "Calculating forces" #~ msgstr "正在计算å—力" #~ msgid " (converged)" #~ msgstr "(收敛)" #~ msgid "No atoms loaded." #~ msgstr "未加载原å­" #~ msgid "FCC(111) non-orthogonal" #~ msgstr "FCC(111) éžæ­£äº¤çš„" #~ msgid "FCC(111) orthogonal" #~ msgstr "FCC(111) 正交的" #~ msgid "BCC(110) non-orthogonal" #~ msgstr "BCC(110) éžæ­£äº¤çš„" #~ msgid "BCC(110) orthogonal" #~ msgstr "BCC(110) 正交的" #~ msgid "BCC(111) non-orthogonal" #~ msgstr "BCC(111) éžæ­£äº¤çš„" #~ msgid "BCC(111) orthogonal" #~ msgstr "BCC(111) 正交的" #~ msgid "HCP(0001) non-orthogonal" #~ msgstr "HCP(0001) éžæ­£äº¤çš„" #~ msgid "Element: " #~ msgstr "元素" #~ msgid "a:" #~ msgstr "a" #~ msgid "(%.1f %% of ideal)" #~ msgstr "(%.1f %% ç†æƒ³çš„)" #~ msgid " \t\tz: " #~ msgstr " \t\tz: " #~ msgid " layers, " #~ msgstr " 层, " #~ msgid " Ã… vacuum" #~ msgstr "Ã… 真空" #~ msgid "\t\tNo size information yet." #~ msgstr "\t\t还没有尺寸大å°ä¿¡æ¯ã€‚" #~ msgid "%i atoms." #~ msgstr "%i 原å­" #~ msgid "No structure specified!" #~ msgstr "未指定结构ï¼" #~ msgid "%(struct)s lattice constant unknown for %(element)s." #~ msgstr "对于%(element)s, %(struct)s 晶格常数未知。" #~ msgid "By atomic number, user specified" #~ msgstr "æ ¹æ®åŽŸå­åºæ•°ï¼Œç”¨æˆ·æŒ‡å®š" #~ msgid "Manually specified" #~ msgstr "手动设置" #~ msgid "All the same color" #~ msgstr "使用统一颜色" #, fuzzy #~| msgid "This should not be displayed!" #~ msgid "This should not be displayed in forces!" #~ msgstr "è¿™ä¸åº”该被显示ï¼" #~ msgid "Min: " #~ msgstr "最å°å€¼ï¼š" #~ msgid " Max: " #~ msgstr " 最大值:" #~ msgid " Steps: " #~ msgstr " 步骤:" #~ msgid "This should not be displayed!" #~ msgstr "è¿™ä¸åº”该被显示ï¼" #~ msgid "Create a color scale:" #~ msgstr "创建一个颜色标度:" #~ msgid "Black - white" #~ msgstr "黑色ï¼ç™½è‰²" #~ msgid "Black - red - yellow - white" #~ msgstr "黑色ï¼çº¢è‰²ï¼é»„色ï¼ç™½è‰²" #~ msgid "Black - green - white" #~ msgstr "黑色ï¼ç»¿è‰²ï¼ç™½è‰²" #~ msgid "Black - blue - cyan" #~ msgstr "黑色ï¼è“è‰²ï¼æ©™è‰²" #, fuzzy #~| msgid "Black - white" #~ msgid "Blue - white - red" #~ msgstr "黑色ï¼ç™½è‰²" #~ msgid "Hue" #~ msgstr "色度" #~ msgid "Named colors" #~ msgstr "命å的颜色" #~ msgid "Create" #~ msgstr "创建" #~ msgid "ERROR" #~ msgstr "错误" #~ msgid "ERR" #~ msgstr "错误" #~ msgid "Incorrect color specification" #~ msgstr "颜色指定错误" #~ msgid " selected atoms:" #~ msgstr " 已选择的原å­ï¼š" #~ msgid "Close" #~ msgstr "关闭" #~ msgid "Debug" #~ msgstr "除错" #~ msgid "Bug Detected" #~ msgstr "å‘现错误" #~ msgid "A programming error has been detected." #~ msgstr "å‘现一个程åºé”™è¯¯ã€‚" #~ msgid "" #~ "It probably isn't fatal, but the details should be reported to the " #~ "developers nonetheless." #~ msgstr "这也许ä¸è‡´å‘½ï¼Œä½†è¯·å°†é”™è¯¯ç»†èŠ‚æäº¤ç»™å¼€å‘者" #~ msgid "Report..." #~ msgstr "æäº¤..." #~ msgid "Details..." #~ msgstr "细节..." #~ msgid "" #~ "From: buggy_application\"\n" #~ "To: bad_programmer\n" #~ "Subject: Exception feedback\n" #~ "\n" #~ "%s" #~ msgstr "" #~ "æ¥è‡ª: buggy_application\"\n" #~ "至: bad_programmer\n" #~ "主题: Exception feedback\n" #~ "\n" #~ "%s" #~ msgid "Bug Details" #~ msgstr "错误细节" #~ msgid "Create a new file" #~ msgstr "创建新文件" #~ msgid "New ase.gui window" #~ msgstr "æ–°ase.gui窗å£" #~ msgid "Save current file" #~ msgstr "ä¿å­˜å½“剿–‡ä»¶" #~ msgid "Quit" #~ msgstr "退出" #~ msgid "_Copy" #~ msgstr "å¤åˆ¶" #~ msgid "Copy current selection and its orientation to clipboard" #~ msgstr "å¤åˆ¶å½“å‰çš„选择和它的å–å‘到剪贴æ¿" #~ msgid "_Paste" #~ msgstr "粘贴" #~ msgid "Insert current clipboard selection" #~ msgstr "æ’入当å‰å‰ªè´´æ¿çš„内容" #~ msgid "Change tags, moments and atom types of the selected atoms" #~ msgstr "修改所选原å­çš„æ ‡ç­¾ï¼Œç£çŸ©å’Œç±»åž‹" #~ msgid "Insert or import atoms and molecules" #~ msgstr "æ’入或导入原å­å’Œåˆ†å­" #~ msgid "Delete the selected atoms" #~ msgstr "删除所选原å­" #, fuzzy #~| msgid "xy-plane" #~ msgid "'xy' Plane" #~ msgstr "xyå¹³é¢" #, fuzzy #~| msgid "yz-plane" #~ msgid "'yz' Plane" #~ msgstr "yzå¹³é¢" #, fuzzy #~| msgid "xz-plane" #~ msgid "'xz' Plane" #~ msgstr "xzå¹³é¢" #~ msgid "Create a bulk crystal with arbitrary orientation" #~ msgstr "创建一个任æ„å–å‘的晶体" #~ msgid "Create the most common surfaces" #~ msgstr "创建常用的表é¢" #~ msgid "Create a crystalline nanoparticle" #~ msgstr "创建晶体纳米颗粒" #~ msgid "Create a nanotube" #~ msgstr "创建纳米管" #~ msgid "Create a graphene sheet or nanoribbon" #~ msgstr "创建石墨烯å•层或纳米带" #~ msgid "Set a calculator used in all calculation modules" #~ msgstr "设置所有计算模å—使用的计算器" #~ msgid "Calculate energy and forces" #~ msgstr "计算能é‡å’Œå—力" #~ msgid "Minimize the energy" #~ msgstr "最å°åŒ–能é‡" #~ msgid "Scale system" #~ msgstr "缩放体系" #~ msgid "Deform system by scaling it" #~ msgstr "通过缩放改å˜ä½“系形状" #~ msgid "Debug ..." #~ msgstr "除错" #~ msgid "Orien_t atoms" #~ msgstr "å–å‘原å­" #~ msgid "<>" #~ msgstr "<>" #~ msgid "Paste" #~ msgstr "粘贴" #~ msgid "Insert atom or molecule" #~ msgstr "æ’å…¥åŽŸå­æˆ–分å­" #~ msgid "_Load molecule" #~ msgstr "载入分å­" #~ msgid "_Cancel" #~ msgstr "å–æ¶ˆ" #~ msgid "Atom" #~ msgstr "原å­" #~ msgid "Confirmation" #~ msgstr "确认" #~ msgid "Delete selected atom?" #~ msgid_plural "Delete selected atoms?" #~ msgstr[0] "删除所选原å­ï¼Ÿ" #~ msgid "File type:" #~ msgstr "文件类型:" #~ msgid "Not implemented!" #~ msgstr "该模å—尚未加入ï¼" #~ msgid "do you really need it?" #~ msgstr "你确定需è¦å®ƒï¼Ÿ" #~ msgid "Dummy placeholder object" #~ msgstr "虚设å ä½ç¬¦å¯¹è±¡" #~ msgid "Set all directions to default values" #~ msgstr "把所有方å‘设置æˆé»˜è®¤å€¼" #~ msgid "Particle size: " #~ msgstr "纳米颗粒大å°ï¼š" #~ msgid "%.1f Ã…" #~ msgstr "%.1f Ã…" #~ msgid "Python" #~ msgstr "Python" #~ msgid "" #~ "\n" #~ "Title: %(title)s\n" #~ "Time: %(time)s\n" #~ msgstr "" #~ "\n" #~ "标题: %(title)s\n" #~ "æ—¶é—´: %(time)s\n" #~ msgid "ag: Python code" #~ msgstr "ag: Python代ç " #~ msgid "Information:" #~ msgstr "ä¿¡æ¯ï¼š" #~ msgid "Python code:" #~ msgstr "Python代ç ï¼š" #~ msgid "Quick Info" #~ msgstr "简å•ä¿¡æ¯" #~ msgid "Homogeneous scaling" #~ msgstr "å‡åŒ€ç¼©æ”¾" #~ msgid "3D deformation " #~ msgstr "3ç»´å½¢å˜ " #~ msgid "2D deformation " #~ msgstr "2ç»´å½¢å˜ " #~ msgid "1D deformation " #~ msgstr "1ç»´å½¢å˜ " #~ msgid "Bulk" #~ msgstr "å—体" #~ msgid "x-axis" #~ msgstr "xè½´" #~ msgid "y-axis" #~ msgstr "yè½´" #~ msgid "z-axis" #~ msgstr "zè½´" #~ msgid "Allow deformation along non-periodic directions." #~ msgstr "å…许沿ç€éžå‘¨æœŸæ€§æ–¹å‘å½¢å˜ã€‚" #~ msgid "Deformation:" #~ msgstr "å½¢å˜ï¼š" #~ msgid "Maximal scale factor: " #~ msgstr "最大缩放比例:" #~ msgid "Scale offset: " #~ msgstr "缩放移ä½ï¼š" #~ msgid "Number of steps: " #~ msgstr "步数;" #~ msgid "Only positive deformation" #~ msgstr "ä»…å…许正å˜å½¢" #~ msgid "On " #~ msgstr "å¼€" #~ msgid "Off" #~ msgstr "å…³" #~ msgid "Results:" #~ msgstr "结果;" #~ msgid "Keep original configuration" #~ msgstr "ä¿æŒåŽŸå§‹æž„åž‹" #~ msgid "Load optimal configuration" #~ msgstr "加载优化的构型" #~ msgid "Load all configurations" #~ msgstr "加载所有的构型" #~ msgid "Strain\t\tEnergy [eV]" #~ msgstr "应力\t\tèƒ½é‡ [eV]" #~ msgid "Fit:" #~ msgstr "拟åˆï¼š" #~ msgid "2nd" #~ msgstr "第2个" #~ msgid "3rd" #~ msgstr "第3个" #~ msgid "Order of fit: " #~ msgstr "拟åˆçº§æ•°ï¼š" #~ msgid "Calculation CANCELLED." #~ msgstr "è®¡ç®—è¢«å–æ¶ˆ(!!!)。" #~ msgid "Calculation completed." #~ msgstr "计算结æŸã€‚" #~ msgid "No trustworthy minimum: Old configuration kept." #~ msgstr "没有å¯ä¿¡ä»»çš„æœ€å°å€¼ï¼šåŽŸå§‹æž„åž‹è¢«ä¿ç•™ã€‚" #~ msgid "" #~ "Insufficent data for a fit\n" #~ "(only %i data points)\n" #~ msgstr "" #~ "éœ€è¦æ‹Ÿåˆçš„æ•°æ®ä¸å¤Ÿ\n" #~ "(åªæœ‰ %i 个数æ®ç‚¹)\n" #~ msgid "" #~ "REVERTING TO 2ND ORDER FIT\n" #~ "(only 3 data points)\n" #~ "\n" #~ msgstr "" #~ "还原到2阶拟åˆ\n" #~ "(åªæœ‰3个数æ®ç‚¹)\n" #~ "\n" #~ msgid "No minimum found!" #~ msgstr "未å‘现最å°å€¼ï¼" #~ msgid "" #~ "\n" #~ "WARNING: Minimum is outside interval\n" #~ msgstr "" #~ "\n" #~ "警告:最å°å€¼ä¸å†åŒºé—´å†…\n" # XXX 在 #~ msgid "It is UNRELIABLE!\n" #~ msgstr "ä¸å¯é ï¼\n" #~ msgid "\n" #~ msgstr "\n" #~ msgid "No crystal structure data" #~ msgstr "没有找到晶体结构数æ®" #~ msgid "Tip for status box ..." #~ msgstr "状æ€ç›’的建议 ..." #~ msgid "Clear constraint" #~ msgstr "清空é™åˆ¶" #~ msgid "" #~ "\n" #~ "An exception occurred! Please report the issue to\n" #~ "ase-developers@listserv.fysik.dtu.dk - thanks! Please also report this " #~ "if\n" #~ "it was a user error, so that a better error message can be provided\n" #~ "next time." #~ msgstr "" #~ "\n" #~ "å‘çŽ°å¼‚å¸¸ï¼ è¯·æäº¤å¼‚常信æ¯åˆ°\n" #~ "ase-developers@listserv.fysik.dtu.dk - è°¢è°¢ï¼ å¦‚æžœè¿™ä¸ªæ˜¯ç”¨æˆ·é”™è¯¯ï¼Œä¹Ÿè¯·ä¸€èµ·" #~ "æäº¤ï¼Œ\n" #~ "以方便我们æä¾›æ›´å¥½çš„错误信æ¯ã€‚" #~ msgid "Max force: %.2f (this frame), %.2f (all frames)" #~ msgstr "最大的å—力: %.2f (这个结构), %.2f (所有结构)" #~ msgid "Max force: %.2f." #~ msgstr "最大å—力:%.2f." #~ msgid "Max velocity: %.2f (this frame), %.2f (all frames)" #~ msgstr "最大速度:%.2f (这个结构), %.2f (所有结构)" #~ msgid "Max velocity: %.2f." #~ msgstr "最大速度:%.2f." #~ msgid "DFT" #~ msgstr "DFT" #~ msgid "XC-functional: " #~ msgstr "交æ¢ç›¸å…³æ³›å‡½: " #~ msgid "DFT ..." #~ msgstr "DFT ..." #~ msgid "building menus failed: %s" #~ msgstr "创建èœå•失败:%s" #~ msgid "Dacapo netCDF output file" #~ msgstr "Dacapo netCDF 输出文件" #~ msgid "Virtual Nano Lab file" #~ msgstr "Virtual Nano Lab 文件" #~ msgid "ASE pickle trajectory" #~ msgstr "ASE pickle 轨迹" #~ msgid "ASE bundle trajectory" #~ msgstr "ASE bundle 轨迹" #~ msgid "GPAW text output" #~ msgstr "GPAW 文本输出" #~ msgid "CUBE file" #~ msgstr "CUBE 文件" #~ msgid "XCrySDen Structure File" #~ msgstr "XCrySDen 结构文件" #~ msgid "Dacapo text output" #~ msgstr "Dacapo 文本输出" #~ msgid "XYZ-file" #~ msgstr "XYZ-文件" #~ msgid "VASP POSCAR/CONTCAR file" #~ msgstr "VASP POSCAR/CONTCAR 文件" #~ msgid "VASP OUTCAR file" #~ msgstr "VASP OUTCAR 文件" #~ msgid "Protein Data Bank" #~ msgstr "Protein Data Bank" #~ msgid "CIF-file" #~ msgstr "CIF-文件" #~ msgid "FHI-aims geometry file" #~ msgstr "FHI-aims 构型文件" #~ msgid "FHI-aims output file" #~ msgstr "FHI-aims 输出文件" #~ msgid "TURBOMOLE coord file" #~ msgstr "TURBOMOLE coord 文件" #~ msgid "exciting input" #~ msgstr "exciting 输入" #~ msgid "WIEN2k structure file" #~ msgstr "WIEN2k 结构文件" #~ msgid "DftbPlus input file" #~ msgstr "DftbPlus 输入文件" #~ msgid "ETSF format" #~ msgstr "ETSF æ ¼å¼" #~ msgid "CASTEP geom file" #~ msgstr "CASTEP geom 文件" #~ msgid "CASTEP output file" #~ msgstr "CASTEP 输出文件" #~ msgid "CASTEP trajectory file" #~ msgstr "CASTEP 轨迹文件" #~ msgid "DFTBPlus GEN format" #~ msgstr "DFTBPlus GEN æ ¼å¼" #~ msgid "XYZ file" #~ msgstr "XYZ 文件" #~ msgid "ASE trajectory" #~ msgstr "ASE 轨迹" #~ msgid "PDB file" #~ msgstr "PDB 文件" #~ msgid "Gaussian cube file" #~ msgstr "Gaussian cube 文件" #~ msgid "Python script" #~ msgstr "Python 脚本" #~ msgid "VNL file" #~ msgstr "VNL 文件" #~ msgid "Portable Network Graphics" #~ msgstr "Portable Network Graphics" #~ msgid "Persistence of Vision" #~ msgstr "Persistence of Vision" #~ msgid "Encapsulated PostScript" #~ msgstr "Encapsulated PostScript" #~ msgid "FHI-aims geometry input" #~ msgstr "FHI-aims 结构输入" #~ msgid "VASP geometry input" #~ msgstr "VASP 结构输入" #~ msgid "cif file" #~ msgstr "cif 文件" #~ msgid "Save current image only (#%d)" #~ msgstr "ä»…ä¿å­˜å½“å‰å›¾åƒ (#%d)" #~ msgid "Slice: " #~ msgstr "切片:" #~ msgid "Help for slice ..." #~ msgstr "切片帮助" #~ msgid "ase-gui INTERNAL ERROR: strange response in Save," #~ msgstr "ase-gui内部错误:对ä¿å­˜å‘½ä»¤çš„å“应出错" #~ msgid "Unknown output format!" #~ msgstr "未知输入格å¼" #~ msgid "Use one of: %s" #~ msgstr "使用 :%s 之一" #~ msgid "选择 Calculator" #~ msgstr "选择计算器" #~ msgid "Help for plot ..." #~ msgstr "画图帮助 ..." ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/progress.py000066400000000000000000000313641316323560300235500ustar00rootroot00000000000000from __future__ import print_function # encoding: utf-8 import ase.gui.ui as ui import numpy as np import sys import re import time _ = pack = AseGuiCancelException = 42 class DummyProgressIndicator: def begin(self, **kwargs): pass def end(self): pass class DefaultProgressIndicator: "Window for reporting progress." waittime = 3 # time (in sec) after which a progress bar appears updatetime = 0.1 # min time (in sec) between updates of the progress bars def __init__(self): ui.Window.__init__(self) self.set_title(_("Progress")) self.globalbox = ui.VBox() self.nextupdate = 0 self.fmax_max = 1.0 # Scaling deformation progress frame self.scalebox = ui.VBox() self.scaleframe = ui.Frame(_("Scaling deformation:")) vbox = ui.VBox() self.scaleframe.add(vbox) pack(self.scalebox, [self.scaleframe]) pack(self.scalebox, ui.Label("")) self.label_scale_stepno_format = _("Step number %s of %s.") self.label_scale_stepno = ui.Label(self.label_scale_stepno_format % ("-", "-")) pack(vbox, [self.label_scale_stepno]) self.scale_progress = ui.ProgressBar() self.scale_progress.modify_bg(ui.STATE_PRELIGHT, '#00AA00') pack(vbox, [self.scale_progress]) vbox.show() self.scaleframe.show() self.globalbox.pack_start(self.scalebox) # Minimization progress frame self.minbox = ui.VBox() # Box containing frame and spacing self.minframe = ui.Frame(_("Energy minimization:")) vbox = ui.VBox() # Box containing the frames content. self.minframe.add(vbox) pack(self.minbox, [self.minframe]) pack(self.minbox, ui.Label("")) self.label_min_stepno = ui.Label("-") pack(vbox, [ui.Label(_("Step number: ")), self.label_min_stepno]) lbl = ui.Label() lbl.set_markup(_("Fmax: ")) self.minimize_progress = ui.ProgressBar() pack(vbox, [lbl, self.minimize_progress]) self.label_min_fmax = ui.Label("-") lbl = ui.Label() lbl.set_markup(_("Convergence criterion: Fmax = ")) pack(vbox, [lbl, self.label_min_fmax]) self.label_min_maxsteps = ui.Label("-") pack(vbox, [ui.Label(_("Max. number of steps: ")), self.label_min_maxsteps]) vbox.show() self.minframe.show() self.globalbox.pack_start(self.minbox) self.globalbox.show() self.add(self.globalbox) # Make the cancel button self.cancelbut = ui.Button('Cancel') self.cancelbut.connect('clicked', self.cancel) pack(self.globalbox, [self.cancelbut], end=True, bottom=True) def begin(self, mode=None, algo=None, fmax=None, steps=None, scalesteps=None): self.mode = mode # Hide all mode-specific boxes self.scalebox.hide() self.minbox.hide() # Activate any relevant box if mode == "scale" or mode == "scale/min": self.scalesteps = int(scalesteps) self.scalebox.show() self.set_scale_progress(0, init=True) if mode == "min" or mode == "scale/min": # It is a minimization. self.minbox.show() self.label_min_stepno.set_text("-") self.label_min_fmax.set_text("%.3f" % (fmax, )) self.label_min_maxsteps.set_text(str(int(steps))) self.minimize_progress.set_fraction(0) self.minimize_progress.set_text(_("unknown")) # Record starting time self.starttime = time.time() self.active = None # Becoming active self.raisecancelexception = False def end(self): self.hide() self.active = False def activity(self): "Register that activity occurred." if self.active is None and time.time( ) > self.starttime + self.waittime: # This has taken so long that a progress bar is needed. self.show() self.active = True # Allow GTK to update display if self.active: while ui.events_pending(): ui.main_iteration() if self.raisecancelexception: self.cancelbut.set_sensitive(True) raise AseGuiCancelException def cancel(self, widget): print("CANCEL pressed.") # We cannot raise the exception here, as this function is # called by the GTK main loop. self.raisecancelexception = True self.cancelbut.set_sensitive(False) def set_scale_progress(self, step, init=False): "Set the step number in scaling deformation." self.label_scale_stepno.set_text(self.label_scale_stepno_format % (step, self.scalesteps)) percent = 1.0 * step / self.scalesteps self.scale_progress.set_fraction(percent) self.scale_progress.set_text("%i%%" % (round(100 * percent), )) if not init: self.activity() def logger_write(self, line): if time.time() > self.nextupdate: if self.mode == "min" or self.mode == "scale/min": # Update the minimization progress bar. w = line.split() fmax = float(w[-1]) step = w[1] if fmax > self.fmax_max: self.fmax_max = np.ceil(fmax) self.minimize_progress.set_fraction(fmax / self.fmax_max) self.minimize_progress.set_text(w[-1]) self.label_min_stepno.set_text(step) else: raise RuntimeError( "ProgressIndicator.logger_write called unexpectedly") self.activity() self.nextupdate = time.time() + self.updatetime def get_logger_stream(self): return LoggerStream(self) class GpawProgressIndicator(DefaultProgressIndicator): "Window for reporting GPAW progress." def __init__(self): DefaultProgressIndicator.__init__(self) # GPAW progress frame self.gpawframe = ui.Frame("GPAW progress:") vbox = self.gpawvbox = ui.VBox() self.gpawframe.add(vbox) self.table = ui.Table(1, 2) self.tablerows = 0 pack(vbox, self.table) self.status = ui.Label("-") self.tablepack([ui.Label(_("Status: ")), self.status]) self.iteration = ui.Label("-") self.tablepack([ui.Label(_("Iteration: ")), self.iteration]) self.tablepack([ui.Label("")]) lbl = ui.Label() lbl.set_markup(_("log10(change):")) self.tablepack([ui.Label(""), lbl]) self.wfs_progress = ui.ProgressBar() self.tablepack([ui.Label(_("Wave functions: ")), self.wfs_progress]) self.dens_progress = ui.ProgressBar() self.tablepack([ui.Label(_("Density: ")), self.dens_progress]) self.energy_progress = ui.ProgressBar() self.tablepack([ui.Label(_("Energy: ")), self.energy_progress]) self.tablepack([ui.Label("")]) self.versionlabel = ui.Label("") self.tablepack([ui.Label(_("GPAW version: ")), self.versionlabel]) self.natomslabel = ui.Label("") self.tablepack([ui.Label(_("Number of atoms: ")), self.natomslabel]) self.memorylabel = ui.Label(_("N/A")) self.tablepack([ui.Label(_("Memory estimate: ")), self.memorylabel]) self.globalbox.pack_start(self.gpawframe) self.gpawframe.show() vbox.show() self.active = False def tablepack(self, widgets): self.tablerows += 1 self.table.resize(self.tablerows, 2) for i, w in enumerate(widgets): self.table.attach(w, i, i + 1, self.tablerows - 1, self.tablerows) if hasattr(w, "set_alignment"): w.set_alignment(0, 0.5) w.show() def begin(self, **kwargs): DefaultProgressIndicator.begin(self, **kwargs) # Set GPAW specific stuff. self.active = True self.oldenergy = None self.poscount = None self.reset_gpaw_bars() # With GPAW, all calculations are slow: Show progress window # immediately. self.show() while ui.events_pending(): ui.main_iteration() def reset_gpaw_bars(self): for lbl in (self.status, self.iteration): lbl.set_text("-") for bar in (self.wfs_progress, self.dens_progress, self.energy_progress): bar.set_fraction(0.0) bar.set_text(_("No info")) def gpaw_write(self, txt): # if not self.active: # self.begin() sys.stdout.write(txt) versearch = re.search("\|[ |_.]+([0-9]+\.[0-9]+\.[0-9]+)", txt) if versearch: # Starting a gpaw calculation. self.versionlabel.set_text(versearch.group(1)) self.status.set_text(_("Initializing")) elif txt.startswith(_("Positions:")): # Start counting atoms self.poscount = True self.reset_gpaw_bars() self.status.set_text(_("Starting calculation")) self.oldenergy = None elif txt.strip() == "": # Stop counting atoms self.poscount = False elif self.poscount: # Count atoms. w = txt.split() assert (len(w) == 5) self.natoms = int(w[0]) + 1 self.natomslabel.set_text(str(self.natoms)) elif txt.startswith("iter:"): # Found iteration line. wfs = txt[self.wfs_idx:self.density_idx].strip() dens = txt[self.density_idx:self.energy_idx].strip() energy = txt[self.energy_idx:self.fermi_idx].strip() if wfs: p = fraction(float(wfs), -9.0) self.wfs_progress.set_fraction(p) self.wfs_progress.set_text(wfs) if dens: p = fraction(float(dens), -4.0) self.dens_progress.set_fraction(p) self.dens_progress.set_text(dens) if energy: if self.oldenergy is None: self.oldenergy = float(energy) else: de = abs(self.oldenergy - float(energy)) self.oldenergy = float(energy) if de > 1e-10: de = np.log10(de / self.natoms) p = fraction(de, -3.0) self.energy_progress.set_fraction(p) self.energy_progress.set_text("%.1f" % de) else: self.energy_progress.set_fraction(1) self.energy_progress.set_text(_("unchanged")) words = txt.split() self.iteration.set_text(words[1]) elif (-1 < txt.find("WFS") < txt.find("Density") < txt.find("Energy") < txt.find("Fermi")): # Found header of convergence table self.wfs_idx = txt.find("WFS") self.density_idx = txt.find("Density") self.energy_idx = txt.find("Energy") self.fermi_idx = txt.find("Fermi") self.status.set_text(_("Self-consistency loop")) self.iteration.set_text("0") elif txt.find("Converged After") != -1: # SCF loop has converged. words = txt.split() self.status.set_text(_("Calculating forces")) self.iteration.set_text(words[2] + _(" (converged)")) elif -1 < txt.find("Calculator") < txt.find("MiB"): # Memory estimate words = txt.split() self.memorylabel.set_text(words[1] + " " + words[2]) self.activity() def get_gpaw_stream(self): return GpawStream(self) class LoggerStream: "A file-like object feeding minimizer logs to GpawProgressWindow." def __init__(self, progresswindow): self.window = progresswindow def write(self, txt): self.window.logger_write(txt) def flush(self): pass class GpawStream: "A file-like object feeding GPAWs txt file to GpawProgressWindow." def __init__(self, progresswindow): self.window = progresswindow def write(self, txt): if txt == "": return endline = txt[-1] == '\n' if endline: txt = txt[:-1] lines = txt.split("\n") if endline: for l in lines: self.window.gpaw_write(l + '\n') else: for l in lines[:-1]: self.window.gpaw_write(l + '\n') self.window.gpaw_write(lines[-1]) def flush(self): pass def fraction(value, maximum): p = value / maximum if p < 0.0: return 0.0 elif p > 1.0: return 1.0 else: return p ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/quickinfo.py000066400000000000000000000027601316323560300236720ustar00rootroot00000000000000"Module for displaying information about the system." from __future__ import unicode_literals from ase.gui.i18n import _ singleimage = _('Single image loaded.') multiimage = _('Image %d loaded (0 - %d).') ucconst = _('Unit cell is fixed.') ucvaries = _('Unit cell varies.') format = _("""\ %s Number of atoms: %d. Unit cell: %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f %s %s """) def info(gui): images = gui.images nimg = len(images) atoms = gui.atoms natoms = len(atoms) if len(atoms) < 1: txt = _('This frame has no atoms.') else: img = gui.frame uc = atoms.cell if nimg > 1: equal = True for i in range(nimg): equal = equal and (uc == images[i].cell).all() if equal: uctxt = ucconst else: uctxt = ucvaries else: uctxt = '' if nimg == 1: imgtxt = singleimage else: imgtxt = multiimage % (img, nimg - 1) periodic = [[_('no'), _('yes')][periodic] for periodic in atoms.pbc] # TRANSLATORS: This has the form Periodic: no, no, yes pbcstring = _('Periodic: %s, %s, %s') % tuple(periodic) txt = format % ((imgtxt, natoms) + tuple(uc.flat) + (pbcstring,) + (uctxt,)) if atoms.number_of_lattice_vectors == 3: txt += _('Volume: ') + '{:8.3f}'.format(atoms.get_volume()) return txt ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/render.py000066400000000000000000000537671316323560300231760ustar00rootroot00000000000000# -*- encoding: utf-8 -*- from __future__ import print_function, unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.io.pov import write_pov from ase.gui.status import formula from os.path import basename from os import system import numpy as np pack = error = Help = 42 class Render: texture_list = ['ase2', 'ase3', 'glass', 'simple', 'pale', 'intermediate', 'vmd', 'jmol'] cameras = ['orthographic', 'perspective', 'ultra_wide_angle'] def __init__(self, gui): self.gui = gui self.win = win = ui.Window(_('Render current view in povray ... ')) win.add(ui.Label(_("Rendering %d atoms.") % len(self.gui.atoms))) guiwidth, guiheight = self.get_guisize() self.width_widget = ui.SpinBox(guiwidth, start=1, end=9999, step=1) self.height_widget = ui.SpinBox(guiheight, start=1, end=9999, step=1) win.add([ui.Label(_('Size')), self.width_widget, ui.Label('⨯'), self.height_widget]) self.linewidth_widget = ui.SpinBox(0.07, start=0.01, end=9.99, step=0.01) win.add([ui.Label(_('Line width')), self.linewidth_widget, ui.Label(_('Ã…ngström'))]) self.constraints_widget = ui.CheckButton(_("Render constraints")) self.cell_widget = ui.CheckButton(_("Render unit cell"), value=True) win.add([self.cell_widget, self.constraints_widget]) formula = gui.atoms.get_chemical_formula(mode='hill') self.basename_widget = ui.Entry(width=30, value=formula, callback=self.update_outputname) win.add([ui.Label(_('Output basename: ')), self.basename_widget]) self.outputname_widget = ui.Label() win.add([ui.Label(_('Output filename: ')), self.outputname_widget]) self.update_outputname() self.texture_widget = ui.ComboBox(labels=self.texture_list, values=self.texture_list) win.add([ui.Label(_('Atomic texture set:')), self.texture_widget]) # complicated texture stuff self.camera_widget = ui.ComboBox(labels=self.cameras, values=self.cameras) self.camera_distance_widget = ui.SpinBox(50.0, -99.0, 99.0, 1.0) win.add([ui.Label(_('Camera type: ')), self.camera_widget]) win.add([ui.Label(_('Camera distance')), self.camera_distance_widget]) # render current frame/all frames self.frames_widget = ui.RadioButtons([_('Render current frame'), _('Render all frames')]) win.add(self.frames_widget) if len(gui.images) == 1: self.frames_widget.buttons[1].widget.configure(state='disabled') self.run_povray_widget = ui.CheckButton(_('Run povray'), True) self.keep_files_widget = ui.CheckButton(_('Keep povray files'), False) self.show_output_widget = ui.CheckButton(_('Show output window'), True) self.transparent = ui.CheckButton(_("Transparent background"), True) win.add(self.transparent) win.add([self.run_povray_widget, self.keep_files_widget, self.show_output_widget]) win.add(ui.Button(_('Render'), self.ok)) def get_guisize(self): win = self.gui.window.win return win.winfo_width(), win.winfo_height() def ok(self, *args): print("Rendering with povray:") guiwidth, guiheight = self.get_guisize() width = self.width_widget.value height = self.height_widget.value # (Do width/height become inconsistent upon gui resize? Not critical) scale = self.gui.scale * height / guiheight bbox = np.empty(4) size = np.array([width, height]) / scale bbox[0:2] = np.dot(self.gui.center, self.gui.axes[:, :2]) - size / 2 bbox[2:] = bbox[:2] + size povray_settings = { 'run_povray': self.run_povray_widget.value, 'bbox': bbox, 'rotation': self.gui.axes, 'show_unit_cell': self.cell_widget.value, 'display': self.show_output_widget.value, 'transparent': self.transparent.value, 'camera_type': self.camera_widget.value, 'camera_dist': self.camera_distance_widget.value, 'canvas_width': width, 'celllinewidth': self.linewidth_widget.value, 'exportconstraints': self.constraints_widget.value, } multiframe = bool(self.frames_widget.value) if multiframe: assert len(self.gui.images) > 1 if multiframe: frames = range(len(self.gui.images)) else: frames = [self.gui.frame] initial_frame = self.gui.frame for frame in frames: self.gui.set_frame(frame) povray_settings['textures'] = self.get_textures() povray_settings['colors'] = self.gui.get_colors(rgb=True) atoms = self.gui.images.get_atoms(frame) filename = self.update_outputname() print(" | Writing files for image", filename, "...") write_pov( filename, atoms, radii=self.gui.get_covalent_radii(), **povray_settings) if not self.keep_files_widget.value: print(" | Deleting temporary file ", filename) system("rm " + filename) filename = filename[:-4] + '.ini' print(" | Deleting temporary file ", filename) system("rm " + filename) self.gui.set_frame(initial_frame) self.update_outputname() def update_outputname(self): tokens = [self.basename_widget.value] movielen = len(self.gui.images) if movielen > 1: ndigits = len(str(movielen)) token = ('{:0' + str(ndigits) + 'd}').format(self.gui.frame) tokens.append(token) tokens.append('pov') fname = '.'.join(tokens) self.outputname_widget.text = fname return fname #if self.movie.get_active(): # while len(movie_index) + len(str(self.iframe)) < len( # str(self.nimages)): # movie_index += '0' # movie_index = '.' + movie_index + str(self.iframe) #name = self.basename.get_text() + movie_index + '.pov' #self.outputname.set_text(name) def get_textures(self): return [self.texture_widget.value] * len(self.gui.atoms) #natoms = len(self.gui.atoms) #textures = natoms * [ #self.texture_list[0] #self.default_texture.get_active()] #] #for mat in self.materials: # sel = mat[1] # t = self.finish_list[mat[2].get_active()] # if mat[0]: # for n, val in enumerate(sel): # if val: # textures[n] = t #return textures class OldRender: finish_list = [ 'ase2', 'ase3', 'glass', 'simple', 'pale', 'intermediate', 'vmd', 'jmol' ] cameras = ['orthographic', 'perspective', 'ultra_wide_angle'] selection_info_txt = _("""\ Textures can be used to highlight different parts of an atomic structure. This window applies the default texture to the entire structure and optionally applies a different texture to subsets of atoms that can be selected using the mouse. An alternative selection method is based on a boolean expression in the entry box provided, using the variables x, y, z, or Z. For example, the expression Z == 11 and x > 10 and y > 10 will mark all sodium atoms with x or coordinates larger than 10. In either case, the button labeled `Create new texture from selection` will enable to change the attributes of the current selection. """) def __init__(self, gui): self.gui = gui ui.Window.__init__(self) self.set_title(_('Render current view in povray ... ')) vbox = ui.VBox() vbox.set_border_width(5) self.natoms = len(self.gui.atoms) pack(vbox, [ui.Label(_("Rendering %d atoms.") % self.natoms)]) self.size = [ ui.Adjustment(self.gui.width, 1, 9999, 50), ui.Adjustment(self.gui.height, 1, 9999, 50) ] self.width = ui.SpinButton(self.size[0], 0, 0) self.height = ui.SpinButton(self.size[1], 0, 0) self.render_constraints = ui.CheckButton(_("Render constraints")) self.render_constraints.set_sensitive( not self.gui.images.get_dynamic(self.gui.atoms).all()) self.render_constraints.connect("toggled", self.toggle_render_lines) pack(vbox, [ ui.Label(_("Width")), self.width, ui.Label(_(" Height")), self.height, ui.Label(" "), self.render_constraints ]) self.width.connect('value-changed', self.change_width, "") self.height.connect('value-changed', self.change_height, "") self.sizeratio = gui.width / float(gui.height) self.line_width = ui.SpinButton( ui.Adjustment(0.07, 0.01, 9.99, 0.01), 0, 0) self.line_width.set_digits(3) self.render_cell = ui.CheckButton(_("Render unit cell")) if self.gui.ui.get_widget('/MenuBar/ViewMenu/ShowUnitCell').get_active( ): self.render_cell.set_active(True) else: self.render_cell.set_active(False) self.render_cell.set_sensitive(False) self.render_cell.connect("toggled", self.toggle_render_lines) have_lines = ( not self.gui.images.dynamic.all()) or self.render_cell.get_active() self.line_width.set_sensitive(have_lines) pack(vbox, [ ui.Label(_("Line width")), self.line_width, ui.Label(_("Angstrom ")), self.render_cell ]) pack(vbox, [ui.Label("")]) filename = gui.window.get_title() len_suffix = len(filename.split('.')[-1]) + 1 if len(filename) > len_suffix: filename = filename[:-len_suffix] self.basename = ui.Entry(max=30) self.basename.connect("activate", self.set_outputname, "") self.basename.set_text(basename(filename)) set_name = ui.Button(_("Set")) set_name.connect("clicked", self.set_outputname, "") pack(vbox, [ui.Label(_("Output basename: ")), self.basename, set_name]) self.outputname = ui.Label("") pack(vbox, [ui.Label(_(" Filename: ")), self.outputname]) pack(vbox, [ui.Label("")]) self.tbox = ui.VBox() self.tbox.set_border_width(10) self.default_texture = ui.combo_box_new_text() for t in self.finish_list: self.default_texture.append_text(t) self.default_texture.set_active(1) self.default_transparency = ui.Adjustment(0, 0.0, 1.0, 0.01) self.transparency = ui.SpinButton(self.default_transparency, 0, 0) self.transparency.set_digits(2) pack(self.tbox, [ ui.Label(_(" Default texture for atoms: ")), self.default_texture, ui.Label(_(" transparency: ")), self.transparency ]) pack(self.tbox, [ui.Label(_("Define atom selection for new texture:"))]) self.texture_selection = ui.Entry(max=50) self.texture_select_but = ui.Button(_("Select")) self.texture_selection.connect("activate", self.select_texture, "") self.texture_select_but.connect("clicked", self.select_texture, "") pack(self.tbox, [self.texture_selection, self.texture_select_but]) self.create_texture = ui.Button(_("Create new texture from selection")) self.create_texture.connect("clicked", self.material_from_selection, "") self.selection_help_but = ui.Button(_("Help on textures")) self.selection_help_but.connect("clicked", self.selection_help, "") self.materials = [] pack(self.tbox, [ self.create_texture, ui.Label(" "), self.selection_help_but ]) pack(vbox, [self.tbox]) pack(vbox, [ui.Label("")]) self.camera_style = ui.combo_box_new_text() for c in self.cameras: self.camera_style.append_text(c) self.camera_style.set_active(0) self.camera_distance = ui.SpinButton( ui.Adjustment(50.0, -99.0, 99.0, 1.0), 0, 0) self.camera_distance.set_digits(1) pack(vbox, [ ui.Label(_("Camera type: ")), self.camera_style, ui.Label(_(" Camera distance")), self.camera_distance ]) self.single_frame = ui.RadioButton(None, _("Render current frame")) self.nimages = len(self.gui.images) self.iframe = self.gui.frame self.movie = ui.RadioButton(self.single_frame, _("Render all %d frames") % self.nimages) self.movie.connect("toggled", self.set_movie) self.movie.set_sensitive(self.nimages > 1) self.set_outputname() pack(vbox, [self.single_frame, ui.Label(" "), self.movie]) self.transparent = ui.CheckButton(_("Transparent background")) self.transparent.set_active(True) pack(vbox, [self.transparent]) self.run_povray = ui.CheckButton(_("Run povray ")) self.run_povray.set_active(True) self.run_povray.connect("toggled", self.toggle_run_povray, "") self.keep_files = ui.CheckButton(_("Keep povray files ")) self.keep_files.set_active(False) self.keep_files_status = True self.window_open = ui.CheckButton(_("Show output window")) self.window_open.set_active(True) self.window_open_status = True pack(vbox, [self.run_povray, self.keep_files, self.window_open]) pack(vbox, [ui.Label("")]) cancel_but = ui.Button('Cancel') cancel_but.connect('clicked', lambda widget: self.destroy()) ok_but = ui.Button('OK') ok_but.connect('clicked', self.ok) close_but = ui.Button('Close') close_but.connect('clicked', lambda widget: self.destroy()) butbox = ui.HButtonBox() butbox.pack_start(cancel_but, 0, 0) butbox.pack_start(ok_but, 0, 0) butbox.pack_start(close_but, 0, 0) butbox.show_all() pack(vbox, [butbox], end=True, bottom=True) self.add(vbox) vbox.show() self.show() def change_width(self, *args): self.height.set_value(self.width.get_value() * self.gui.height / float(self.gui.width)) def change_height(self, *args): self.width.set_value(self.height.get_value() * self.gui.width / float(self.gui.height)) def toggle_render_lines(self, *args): self.line_width.set_sensitive(self.render_cell.get_active() or self.render_constraints.get_active()) def set_outputname(self, *args): movie_index = '' self.iframe = self.gui.frame if self.movie.get_active(): while len(movie_index) + len(str(self.iframe)) < len( str(self.nimages)): movie_index += '0' movie_index = '.' + movie_index + str(self.iframe) name = self.basename.get_text() + movie_index + '.pov' self.outputname.set_text(name) def get_selection(self): selection = np.zeros(self.natoms, bool) text = self.texture_selection.get_text() or 'False' code = compile(text, 'render.py', 'eval') atoms = self.gui.atoms for n in range(len(atoms)): Z = atoms.numbers[n] x, y, z = atoms.positions[n] dct = {'n': n, 'Z': Z, 'x': x, 'y': y, 'z': z} selection[n] = eval(code, dct) return selection def select_texture(self, *args): self.iframe = self.gui.frame self.gui.images.selected = self.get_selection() self.gui.set_frame(self.iframe) def material_from_selection(self, *args): box_selection = self.get_selection() selection = self.gui.images.selected.copy() if selection.any(): Z = [] for n in range(len(selection)): if selection[n]: Z += [self.gui.atoms.Z[n]] name = formula(Z) if (box_selection == selection).all(): name += ': ' + self.texture_selection.get_text() texture_button = ui.combo_box_new_text() for t in self.finish_list: texture_button.append_text(t) texture_button.set_active(1) transparency = ui.Adjustment(0, 0.0, 1.0, 0.01) transparency_spin = ui.SpinButton(transparency, 0, 0) transparency_spin.set_digits(2) delete_button = ui.Button('Delete') index = len(self.materials) delete_button.connect("clicked", self.delete_material, {"n": index}) self.materials += [[ True, selection, texture_button, ui.Label(_(" transparency: ")), transparency_spin, ui.Label(" "), delete_button, ui.Label() ]] self.materials[-1][-1].set_markup(" " + name) pack(self.tbox, [ self.materials[-1][2], self.materials[-1][3], self.materials[-1][4], self.materials[-1][5], self.materials[-1][6], self.materials[-1][7] ]) else: error(_('Can not create new texture! Must have some atoms selected ' 'to create a new material!')) def delete_material(self, button, index, *args): n = index["n"] self.materials[n][0] = False self.materials[n][1] = np.zeros(self.natoms, bool) self.materials[n][2].destroy() self.materials[n][3].destroy() self.materials[n][4].destroy() self.materials[n][5].destroy() self.materials[n][6].destroy() self.materials[n][7].destroy() def set_movie(self, *args): if self.single_frame.get_active() and self.run_povray.get_active(): self.window_open.set_active(self.window_open_status) self.window_open.set_sensitive(True) else: if self.run_povray.get_active(): self.window_open_status = self.window_open.get_active() self.window_open.set_active(False) self.window_open.set_sensitive(False) self.set_outputname() def toggle_run_povray(self, *args): if self.run_povray.get_active(): self.keep_files.set_active(self.keep_files_status) self.keep_files.set_sensitive(True) if self.single_frame.get_active(): self.window_open.set_active(self.window_open_status) self.window_open.set_sensitive(True) else: self.keep_files_status = self.keep_files.get_active() self.keep_files.set_active(True) self.keep_files.set_sensitive(False) if self.single_frame.get_active(): self.window_open_status = self.window_open.get_active() self.window_open.set_active(False) self.window_open.set_sensitive(False) def selection_help(self, *args): Help(self.selection_info_txt) def set_textures(self): textures = self.natoms * [ self.finish_list[self.default_texture.get_active()] ] for mat in self.materials: sel = mat[1] t = self.finish_list[mat[2].get_active()] if mat[0]: for n, val in enumerate(sel): if val: textures[n] = t return textures def get_colors(self): colors = self.gui.get_colors(rgb=True) colors_tmp = [] for n in range(self.natoms): colors_tmp.append( list(colors[n]) + [0, self.default_transparency.value]) colors = colors_tmp for mat in self.materials: sel = mat[1] trans = mat[4].get_value() for n, val in enumerate(sel): if val: colors[n][4] = trans return colors def ok(self, *args): print("Rendering povray image(s): ") scale = self.gui.scale * self.height.get_value() / self.gui.height bbox = np.empty(4) size = np.array( [self.width.get_value(), self.height.get_value()]) / scale bbox[0:2] = np.dot(self.gui.center, self.gui.axes[:, :2]) - size / 2 bbox[2:] = bbox[:2] + size povray_settings = { 'run_povray': self.run_povray.get_active(), 'bbox': bbox, 'rotation': self.gui.axes, 'show_unit_cell': self.render_cell.get_active(), 'display': self.window_open.get_active(), 'transparent': self.transparent.get_active(), 'camera_type': self.cameras[self.camera_style.get_active()], 'camera_dist': self.camera_distance.get_value(), 'canvas_width': self.width.get_value(), 'celllinewidth': self.line_width.get_value(), 'textures': self.set_textures(), 'exportconstraints': self.render_constraints.get_active() } if self.single_frame.get_active(): frames = [self.gui.frame] else: frames = range(self.nimages) initial_frame = self.gui.frame for frame in frames: self.gui.set_frame(frame) povray_settings['colors'] = self.get_colors() atoms = self.gui.images.get_atoms(frame) self.set_outputname() filename = self.outputname.get_text() print(" | Writing files for image", filename, "...") write_pov( filename, atoms, radii=self.gui.get_covalent_radii(), **povray_settings) if not self.keep_files.get_active(): print(" | Deleting temporary file ", filename) system("rm " + filename) filename = filename[:-4] + '.ini' print(" | Deleting temporary file ", filename) system("rm " + filename) self.gui.set_frame(initial_frame) self.set_outputname() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/repeat.py000066400000000000000000000022321316323560300231540ustar00rootroot00000000000000from __future__ import unicode_literals import numpy as np import ase.gui.ui as ui from ase.gui.i18n import _ class Repeat: def __init__(self, gui): win = ui.Window(_('Repeat')) win.add(_('Repeat atoms:')) self.repeat = [ui.SpinBox(r, 1, 9, 1, self.change) for r in gui.images.repeat] win.add(self.repeat) win.add(ui.Button(_('Set unit cell'), self.set_unit_cell)) for sb, vec in zip(self.repeat, gui.atoms.cell): if not vec.any(): sb.active = False self.gui = gui def change(self): repeat = [int(r.value) for r in self.repeat] self.gui.images.repeat_images(repeat) self.gui.set_frame() def set_unit_cell(self): self.gui.images.repeat_unit_cell() for r in self.repeat: r.value = 1 self.gui.set_frame() def set_unit_cell0(self): self.gui.images.A *= self.gui.images.repeat.reshape((3, 1)) self.gui.images.E *= self.gui.images.repeat.prod() self.gui.images.repeat = np.ones(3, int) for r in self.repeat: r.value = 1 self.gui.set_frame() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/rot_tools.py000066400000000000000000000031141316323560300237200ustar00rootroot00000000000000# Gives the rotation matrix which rotates theta degrees about # vecU def rotate_about_vec(vecU, theta): "Generates the rotation matrix that rotate theta degrees about the vecU" import numpy as np vecU = np.array(vecU) vecU = vecU / (sum(vecU**2)**0.5) ux, uy, uz = vecU st = np.sin(theta) ct = np.cos(theta) mat = np.array([[ux**2 + ct * (1 - ux**2), ux * uy * (1 - ct) - uz * st, uz * ux * (1 - ct) + uy * st], [ux * uy * (1 - ct) + uz * st, uy**2 + ct * (1 - uy**2), uy * uz * (1 - ct) - ux * st], [uz * ux * (1 - ct) - uy * st, uy * uz * (1 - ct) + ux * st, uz**2 + ct * (1 - uz**2)]]) return (mat) def rotate_vec_into_newvec(aVec, intoVec): """Generates the rotation matrix which rotates aVec into intoVec""" def length(v): return((sum(v**2))**0.5) import numpy as np from math import acos fac = 1.0 aVec = np.array(aVec) intoVec = np.array(intoVec) nor = np.cross(aVec, intoVec) if length(nor) == 0: nor = np.array([1, 0, 0]) nor = nor / length(nor) theta = acos(np.dot(aVec, intoVec) / (length(aVec) * length(intoVec))) if np.dot(aVec, intoVec) < 0: theta = theta + np.pi fac = -1 return(fac * rotate_about_vec(nor, theta)) def rotate_vec(rot_mat, vec): "Applies the rotation matrix to the vector and returns the rotated vector" import numpy as np rot_vec = np.dot(rot_mat, vec) return (rot_vec) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/rotate.py000066400000000000000000000017061316323560300231770ustar00rootroot00000000000000from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui from ase.utils import rotate, irotate class Rotate: update = True def __init__(self, gui): self.gui = gui win = ui.Window(_('Rotate')) win.add(_('Rotation angles:')) self.rotate = [ui.SpinBox(42.0, -360, 360, 1, self.change) for i in '123'] win.add(self.rotate) win.add(ui.Button(_('Update'), self.update_angles)) win.add(_('Note:\nYou can rotate freely\n' 'with the mouse, by holding\n' 'down mouse button 2.')) self.update_angles() def change(self): x, y, z = [float(a.value) for a in self.rotate] self.gui.axes = rotate('%fx,%fy,%fz' % (x, y, z)) self.gui.set_frame() def update_angles(self): angles = irotate(self.gui.axes) for r, a in zip(self.rotate, angles): r.value = a ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/save.py000066400000000000000000000047551316323560300226460ustar00rootroot00000000000000"""Dialog for saving one or more configurations.""" from __future__ import unicode_literals from ase.gui.i18n import _ import numpy as np import ase.gui.ui as ui from ase.io.formats import (write, parse_filename, get_ioformat, string2index, filetype) from ase.utils import basestring text = _("""\ Append name with "@n" in order to write image number "n" instead of the current image. Append "@start:stop" or "@start:stop:step" if you want to write a range of images. You can leave out "start" and "stop" so that "name@:" will give you all images. Negative numbers count from the last image. Examples: "name@-1": last image, "name@-2:": last two.""") def save_dialog(gui, filename=None): dialog = ui.SaveFileDialog(gui.window.win, _('Save ...')) ui.Text(text).pack(dialog.top) filename = filename or dialog.go() if not filename: return filename, index = parse_filename(filename) if index is None: index = slice(gui.frame, gui.frame + 1) elif isinstance(index, basestring): index = string2index(index) elif isinstance(index, slice): pass else: if index < 0: index += len(gui.images) index = slice(index, index + 1) format = filetype(filename, read=False) io = get_ioformat(format) extra = {} remove_hidden = False if format in ['png', 'eps', 'pov']: bbox = np.empty(4) size = gui.window.size / gui.scale bbox[0:2] = np.dot(gui.center, gui.axes[:, :2]) - size / 2 bbox[2:] = bbox[:2] + size extra['rotation'] = gui.axes extra['show_unit_cell'] = gui.window['toggle-show-unit-cell'] extra['bbox'] = bbox colors = gui.get_colors(rgb=True) extra['colors'] = [rgb for rgb, visible in zip(colors, gui.images.visible) if visible] remove_hidden = True images = [gui.images.get_atoms(i, remove_hidden=remove_hidden) for i in range(*index.indices(len(gui.images)))] if len(images) > 1 and io.single: # We want to write multiple images, but the file format does not # support it. The solution is to write multiple files, inserting # a number in the file name before the suffix. j = filename.rfind('.') filename = filename[:j] + '{0:05d}' + filename[j:] for i, atoms in enumerate(images): write(filename.format(i), atoms, **extra) else: write(filename, images, **extra) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/settings.py000066400000000000000000000042641316323560300235430ustar00rootroot00000000000000from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui class Settings: def __init__(self, gui): self.gui = gui win = ui.Window(_('Settings')) # Constraints win.add(_('Constraints:')) win.add([ui.Button(_('Constrain'), self.constrain_selected), '/', ui.Button(_('release'), self.release_selected), _(' selected atoms')]) win.add(ui.Button(_('Constrain immobile atoms'), self.immobile)) win.add(ui.Button(_('Clear all constraints'), self.clear_constraints)) # Visibility win.add(_('Visibility:')) win.add([ui.Button(_('Hide'), self.hide_selected), '/', ui.Button(_('show'), self.show_selected), _(' selected atoms')]) win.add(ui.Button(_('View all atoms'), self.view_all)) # Miscellaneous win.add(_('Miscellaneous:')) self.scale = ui.SpinBox(self.gui.images.atom_scale, 0.2, 2.0, 0.1, self.scale_radii) win.add([_('Scale atomic radii:'), self.scale]) def scale_radii(self): self.gui.images.atom_scale = self.scale.value self.gui.draw() return True def hide_selected(self): self.gui.images.visible[self.gui.images.selected] = False self.gui.draw() def show_selected(self): self.gui.images.visible[self.gui.images.selected] = True self.gui.draw() def view_all(self): self.gui.images.visible[:] = True self.gui.draw() def constrain_selected(self): self.gui.images.set_dynamic(self.gui.images.selected, False) self.gui.draw() def release_selected(self): self.gui.images.set_dynamic(self.gui.images.selected, True) self.gui.draw() def immobile(self): # wtf? XXX detect non-moving atoms somehow #self.gui.images.set_dynamic() self.gui.draw() def clear_constraints(self): # This clears *all* constraints. But when we constrain, we # only add FixAtoms.... for atoms in self.gui.images: atoms.constraints = [] self.gui.draw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/simulation.py000066400000000000000000000120521316323560300240610ustar00rootroot00000000000000"Base class for simulation windows" from __future__ import unicode_literals from ase.gui.i18n import _ import ase.gui.ui as ui #from ase import Atoms #from ase.constraints import FixAtoms pack = error = 42 class Simulation: def __init__(self, gui): ui.Window.__init__(self) self.gui = gui def packtext(self, vbox, text, label=None): "Pack an text frame into the window." pack(vbox, ui.Label("")) txtframe = ui.Frame(label) txtlbl = ui.Label(text) txtframe.add(txtlbl) txtlbl.show() pack(vbox, txtframe) pack(vbox, ui.Label("")) def packimageselection(self, outerbox, txt1=_(" (rerun simulation)"), txt2=_(" (continue simulation)")): "Make the frame for selecting starting config if more than one." self.startframe = ui.Frame(_("Select starting configuration:")) pack(outerbox, [self.startframe]) vbox = ui.VBox() self.startframe.add(vbox) vbox.show() self.numconfig_format = _("There are currently %i " "configurations loaded.") self.numconfig_label = ui.Label("") pack(vbox, [self.numconfig_label]) lbl = ui.Label( _("Choose which one to use as the " "initial configuration")) pack(vbox, [lbl]) self.start_radio_first = ui.RadioButton( None, _("The first configuration %s.") % txt1) pack(vbox, [self.start_radio_first]) self.start_radio_nth = ui.RadioButton(self.start_radio_first, _("Configuration number ")) self.start_nth_adj = ui.Adjustment(0, 0, 1, 1) self.start_nth_spin = ui.SpinButton(self.start_nth_adj, 0, 0) self.start_nth_spin.set_sensitive(False) pack(vbox, [self.start_radio_nth, self.start_nth_spin]) self.start_radio_last = ui.RadioButton( self.start_radio_first, _("The last configuration %s.") % txt2) self.start_radio_last.set_active(True) pack(vbox, self.start_radio_last) self.start_radio_nth.connect("toggled", self.start_radio_nth_toggled) self.setupimageselection() def start_radio_nth_toggled(self, widget): self.start_nth_spin.set_sensitive(self.start_radio_nth.get_active()) def setupimageselection(self): "Decide if the start image selection frame should be shown." n = len(self.gui.images) if n <= 1: self.startframe.hide() else: self.startframe.show() if self.start_nth_adj.value >= n: self.start_nth_adj.value = n - 1 self.start_nth_adj.upper = n - 1 self.numconfig_label.set_text(self.numconfig_format % (n, )) def getimagenumber(self): "Get the image number selected in the start image frame." nmax = len(self.gui.images) if nmax <= 1: return 0 elif self.start_radio_first.get_active(): return 0 elif self.start_radio_nth.get_active(): return self.start_nth_adj.value else: assert self.start_radio_last.get_active() return nmax - 1 def makebutbox(self, vbox, helptext=None): self.buttons = ui.HButtonBox() runbut = ui.Button(_("Run")) runbut.connect('clicked', self.run) closebut = ui.Button('Close') closebut.connect('clicked', lambda x: self.destroy()) for w in (runbut, closebut): self.buttons.pack_start(w, 0, 0) w.show() if helptext: helpbut = [help(helptext)] else: helpbut = [] pack(vbox, helpbut + [self.buttons], end=True, bottom=True) def setup_atoms(self): self.atoms = self.get_atoms() if self.atoms is None: return False try: self.calculator = self.gui.simulation['calc'] except KeyError: error(_("No calculator: Use Calculate/Set Calculator on the menu.")) return False self.atoms.set_calculator(self.calculator()) return True def get_atoms(self): "Make an atoms object from the active image" images = self.gui.images atoms = images[self.getimagenumber()] natoms = len(atoms) // images.repeat.prod() if natoms < 1: error(_("No atoms present")) return None return atoms[:natoms] def begin(self, **kwargs): if 'progress' in self.gui.simulation: self.gui.simulation['progress'].begin(**kwargs) def end(self): if 'progress' in self.gui.simulation: self.gui.simulation['progress'].end() def prepare_store_atoms(self): "Informs the gui that the next configuration should be the first." self.gui.prepare_new_atoms() self.count_steps = 0 def store_atoms(self): "Observes the minimization and stores the atoms in the gui." self.gui.append_atoms(self.atoms) self.count_steps += 1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/status.py000066400000000000000000000071361316323560300232270ustar00rootroot00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from ase.gui.i18n import _ from math import sqrt, pi, acos import numpy as np from ase.data import chemical_symbols as symbols from ase.data import atomic_names as names from ase.gui.utils import get_magmoms try: chr = unichr except NameError: pass def formula(Z): hist = {} for z in Z: if z in hist: hist[z] += 1 else: hist[z] = 1 Z = sorted(hist.keys()) strings = [] for z in Z: n = hist[z] s = ('' if n == 1 else str(n)) + symbols[z] strings.append(s) return '+'.join(strings) class Status: # Status is used as a mixin in GUI def __init__(self): self.ordered_indices = [] def status(self, atoms): # use where here: XXX natoms = len(atoms) indices = np.arange(natoms)[self.images.selected[:natoms]] ordered_indices = [i for i in self.images.selected_ordered if i < len(atoms)] n = len(indices) self.nselected = n if n == 0: self.window.update_status_line('') return Z = atoms.numbers[indices] R = atoms.positions[indices] if n == 1: tag = atoms.get_tags()[indices[0]] text = (u' #%d %s (%s): %.3f Ã…, %.3f Ã…, %.3f Ã… ' % ((indices[0], names[Z[0]], symbols[Z[0]]) + tuple(R[0]))) text += _(' tag=%(tag)s') % dict(tag=tag) magmoms = get_magmoms(self.atoms) if magmoms.any(): # TRANSLATORS: mom refers to magnetic moment text += _(' mom={0:1.2f}'.format( magmoms[indices][0])) charges = self.atoms.get_initial_charges() if charges.any(): text += _(' q={0:1.2f}'.format( charges[indices][0])) elif n == 2: D = R[0] - R[1] d = sqrt(np.dot(D, D)) text = u' %s-%s: %.3f Ã…' % (symbols[Z[0]], symbols[Z[1]], d) elif n == 3: d = [] for c in range(3): D = R[c] - R[(c + 1) % 3] d.append(np.dot(D, D)) a = [] for c in range(3): t1 = 0.5 * (d[c] + d[(c + 1) % 3] - d[(c + 2) % 3]) t2 = sqrt(d[c] * d[(c + 1) % 3]) try: t3 = acos(t1 / t2) except ValueError: if t1 > 0: t3 = 0 else: t3 = pi a.append(t3 * 180 / pi) text = (u' %s-%s-%s: %.1f°, %.1f°, %.1f°' % tuple([symbols[z] for z in Z] + a)) elif len(ordered_indices) == 4: R = self.atoms.positions[ordered_indices] Z = self.atoms.numbers[ordered_indices] a = R[1] - R[0] b = R[2] - R[1] c = R[3] - R[2] bxa = np.cross(b, a) bxa /= np.sqrt(np.vdot(bxa, bxa)) cxb = np.cross(c, b) cxb /= np.sqrt(np.vdot(cxb, cxb)) angle = np.vdot(bxa, cxb) if angle < -1: angle = -1 if angle > 1: angle = 1 angle = np.arccos(angle) if (np.vdot(bxa, c)) > 0: angle = 2 * np.pi - angle angle = angle * 180.0 / np.pi text = (u'%s %s → %s → %s → %s: %.1f°' % tuple([_('dihedral')] + [symbols[z] for z in Z] + [angle])) else: text = ' ' + formula(Z) self.window.update_status_line(text) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/surfaceslab.py000066400000000000000000000221331316323560300241700ustar00rootroot00000000000000# encoding: utf-8 '''surfaceslab.py - Window for setting up surfaces ''' from __future__ import division, unicode_literals from ase.gui.i18n import _, ngettext import ase.gui.ui as ui import ase.build as build from ase.data import reference_states from ase.gui.widgets import Element, pybutton introtext = _("""\ Use this dialog to create surface slabs. Select the element by writing the chemical symbol or the atomic number in the box. Then select the desired surface structure. Note that some structures can be created with an othogonal or a non-orthogonal unit cell, in these cases the non-orthogonal unit cell will contain fewer atoms. If the structure matches the experimental crystal structure, you can look up the lattice constant, otherwise you have to specify it yourself.""") # Name, structure, orthogonal, function surfaces = [(_('FCC(100)'), _('fcc'), 'ortho', build.fcc100), (_('FCC(110)'), _('fcc'), 'ortho', build.fcc110), (_('FCC(111)'), _('fcc'), 'both', build.fcc111), (_('FCC(211)'), _('fcc'), 'ortho', build.fcc211), (_('BCC(100)'), _('bcc'), 'ortho', build.bcc100), (_('BCC(110)'), _('bcc'), 'both', build.bcc110), (_('BCC(111)'), _('bcc'), 'both', build.bcc111), (_('HCP(0001)'), _('hcp'), 'both', build.hcp0001), (_('HCP(10-10)'), _('hcp'), 'ortho', build.hcp10m10), (_('DIAMOND(100)'), _('diamond'), 'ortho', build.diamond100), (_('DIAMOND(111)'), _('diamond'), 'non-ortho', build.diamond111)] structures, crystal, orthogonal, functions = zip(*surfaces) py_template = """ from ase.build import {func} atoms = {func}(symbol='{symbol}', size={size}, a={a}, {c}vacuum={vacuum}, orthogonal={ortho}) """ class SetupSurfaceSlab: '''Window for setting up a surface.''' def __init__(self, gui): self.element = Element('', self.make) self.structure = ui.ComboBox(structures, structures, self.structure_changed) self.structure_warn = ui.Label('', 'red') self.orthogonal = ui.CheckButton('', True, self.make) self.lattice_a = ui.SpinBox(3.2, 0.0, 10.0, 0.001, self.make) self.retrieve = ui.Button(_('Get from database'), self.structure_changed) self.lattice_c = ui.SpinBox(None, 0.0, 10.0, 0.001, self.make) self.x = ui.SpinBox(1, 1, 30, 1, self.make) self.x_warn = ui.Label('', 'red') self.y = ui.SpinBox(1, 1, 30, 1, self.make) self.y_warn = ui.Label('', 'red') self.z = ui.SpinBox(1, 1, 30, 1, self.make) self.vacuum_check = ui.CheckButton('', False, self.vacuum_checked) self.vacuum = ui.SpinBox(5, 0, 40, 0.01, self.make) self.description = ui.Label('') win = self.win = ui.Window(_('Surface')) win.add(ui.Text(introtext)) win.add(self.element) win.add([_('Structure:'), self.structure, self.structure_warn]) win.add([_('Orthogonal cell:'), self.orthogonal]) win.add([_('Lattice constant:\ta'), self.lattice_a, (u'Ã…'), self.retrieve]) win.add([_('\t\tc'), self.lattice_c, (u'Ã…')]) win.add([_('Size: \tx: '), self.x, _(' unit cells'), self.x_warn]) win.add([_('\ty: '), self.y, _(' unit cells'), self.y_warn]) win.add([_('\tz: '), self.z, _(' unit cells')]) win.add([_('Vacuum: '), self.vacuum_check, self.vacuum, (u'Ã…')]) win.add(self.description) # TRANSLATORS: This is a title of a window. win.add([pybutton(_('Creating a surface.'), self.make), ui.Button(_('Apply'), self.apply), ui.Button(_('OK'), self.ok)]) self.gui = gui self.atoms = None self.lattice_c.active = False self.vacuum.active = False self.structure_changed() def vacuum_checked(self, *args): if self.vacuum_check.var.get(): self.vacuum.active = True else: self.vacuum.active = False self.make() def get_lattice(self, *args): if self.element.symbol is None: return ref = reference_states[self.element.Z] symmetry = "unknown" for struct in surfaces: if struct[0] == self.structure.value: symmetry = struct[1] if ref['symmetry'] != symmetry: self.structure_warn.text = ('Error: Reference values assume {}' 'crystal structure for {}!'. format(ref['symmetry'], self.element.symbol)) else: if symmetry == 'fcc' or symmetry == 'bcc' or symmetry == 'diamond': self.lattice_a.value = ref['a'] elif symmetry == 'hcp': self.lattice_a.value = ref['a'] self.lattice_c.value = ref['a'] * ref['c/a'] self.make() def structure_changed(self, *args): for surface in surfaces: if surface[0] == self.structure.value: if surface[2] == 'ortho': self.orthogonal.var.set(True) self.orthogonal.check['state'] = ['disabled'] elif surface[2] == 'non-ortho': self.orthogonal.var.set(False) self.orthogonal.check['state'] = ['disabled'] else: self.orthogonal.check['state'] = ['normal'] if surface[1] == _('hcp'): self.lattice_c.active = True self.lattice_c.value = round(self.lattice_a.value * ((8.0/3.0) ** (0.5)), 3) else: self.lattice_c.active = False self.lattice_c.value = 'None' self.get_lattice() def make(self, *args): symbol = self.element.symbol self.atoms = None self.description.text = '' self.python = None self.x_warn.text = '' self.y_warn.text = '' if symbol is None: return x = self.x.value y = self.y.value z = self.z.value size = (x, y, z) a = self.lattice_a.value c = self.lattice_c.value vacuum = self.vacuum.value if not self.vacuum_check.var.get(): vacuum = None ortho = self.orthogonal.var.get() ortho_warn_even = _('Please enter an even value for orthogonal cell') struct = self.structure.value if struct == _('BCC(111)') and (not (y % 2 == 0) and ortho): self.y_warn.text = ortho_warn_even return if struct == _('BCC(110)') and (not (y % 2 == 0) and ortho): self.y_warn.text = ortho_warn_even return if struct == _('FCC(111)') and (not (y % 2 == 0) and ortho): self.y_warn.text = ortho_warn_even return if struct == _('FCC(211)') and (not (x % 3 == 0) and ortho): self.x_warn.text = _('Please enter a value divisible by 3' ' for orthogonal cell') return if struct == _('HCP(0001)') and (not (y % 2 == 0) and ortho): self.y_warn.text = ortho_warn_even return if struct == _('HCP(10-10)') and (not (y % 2 == 0) and ortho): self.y_warn.text = ortho_warn_even return for surface in surfaces: if surface[0] == struct: c_py = "" if surface[1] == _('hcp'): self.atoms = surface[3](symbol, size, a, c, vacuum, ortho) c_py = "{}, ".format(c) else: self.atoms = surface[3](symbol, size, a, vacuum, ortho) if vacuum is not None: vacuumtext =_(' Vacuum: {} Ã….').format(vacuum) else: vacuumtext = '' natoms = len(self.atoms) label = ngettext( # TRANSLATORS: e.g. "Au fcc100 surface with 2 atoms." # or "Au fcc100 surface with 2 atoms. Vacuum: 5 Ã…." '{symbol} {surf} surface with one atom.{vacuum}', '{symbol} {surf} surface with {natoms} atoms.{vacuum}', natoms).format(symbol=symbol, surf=surface[3].__name__, natoms=natoms, vacuum=vacuumtext) self.description.text = label return py_template.format(func=surface[3].__name__, a=a, c=c_py, symbol=symbol, size=size, ortho=ortho, vacuum=vacuum) def apply(self, *args): self.make() if self.atoms is not None: self.gui.new_atoms(self.atoms) return True else: ui.error(_('No valid atoms.'), _('You have not (yet) specified a consistent ' 'set of parameters.')) return False def ok(self, *args): if self.apply(): self.win.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/ui.py000066400000000000000000000436341316323560300223240ustar00rootroot00000000000000from __future__ import unicode_literals try: # Python 3 import tkinter as tk import tkinter.ttk as ttk from tkinter.messagebox import askokcancel as ask_question from tkinter.messagebox import showerror, showwarning from tkinter.filedialog import LoadFileDialog, SaveFileDialog except ImportError: # Python 2 import Tkinter as tk try: import ttk except ImportError: ttk = None from tkMessageBox import (askokcancel as ask_question, showerror, showwarning) from FileDialog import LoadFileDialog, SaveFileDialog import re import sys from collections import namedtuple from functools import partial from ase.gui.i18n import _ import numpy as np from ase.utils import basestring __all__ = [ 'error', 'ask_question', 'MainWindow', 'LoadFileDialog', 'SaveFileDialog', 'ASEGUIWindow', 'Button', 'CheckButton', 'ComboBox', 'Entry', 'Label', 'Window', 'MenuItem', 'RadioButton', 'RadioButtons', 'Rows', 'Scale', 'showwarning', 'SpinBox', 'Text'] if sys.platform == 'darwin': mouse_buttons = {2: 3, 3: 2} else: mouse_buttons = {} def error(title, message=None): if message is None: message = title title = _('Error') return showerror(title, message) def about(name, version, webpage): text = [name, '', _('Version') + ': ' + version, _('Web-page') + ': ' + webpage] win = Window(_('About')) win.add(Text('\n'.join(text))) def helpbutton(text): return Button(_('Help'), helpwindow, text) def helpwindow(text): win = Window(_('Help')) win.add(Text(text)) class BaseWindow(object): def __init__(self, title, close=None): self.title = title if close: self.win.protocol('WM_DELETE_WINDOW', close) else: self.win.protocol('WM_DELETE_WINDOW', self.close) self.things = [] def close(self): self.win.destroy() def title(self, txt): self.win.title(txt) title = property(None, title) def add(self, stuff, anchor='w'): # 'center'): if isinstance(stuff, basestring): stuff = Label(stuff) elif isinstance(stuff, list): stuff = Row(stuff) stuff.pack(self.win, anchor=anchor) self.things.append(stuff) class Window(BaseWindow): def __init__(self, title, close=None): self.win = tk.Toplevel() BaseWindow.__init__(self, title, close) class Widget(object): def pack(self, parent, side='top', anchor='center'): widget = self.create(parent) widget.pack(side=side, anchor=anchor) if not isinstance(self, (Rows, RadioButtons)): pass def grid(self, parent): widget = self.create(parent) widget.grid() def create(self, parent): self.widget = self.creator(parent) return self.widget @property def active(self): return self.widget['state'] == 'normal' @active.setter def active(self, value): self.widget['state'] = ['disabled', 'normal'][bool(value)] class Row(Widget): def __init__(self, things): self.things = things def create(self, parent): self.widget = tk.Frame(parent) for thing in self.things: if isinstance(thing, basestring): thing = Label(thing) thing.pack(self.widget, 'left') return self.widget def __getitem__(self, i): return self.things[i] class Label(Widget): def __init__(self, text='', color=None): self.creator = partial(tk.Label, text=text, fg=color) def text(self, new): self.widget.config(text=new) text = property(None, text) class Text(Widget): def __init__(self, text): self.creator = partial(tk.Text, height=text.count('\n') + 1) s = re.split('<(.*?)>', text) self.text = [(s[0], ())] i = 1 tags = [] while i < len(s): tag = s[i] if tag[0] != '/': tags.append(tag) else: tags.pop() self.text.append((s[i + 1], tuple(tags))) i += 2 def create(self, parent): widget = Widget.create(self, parent) widget.tag_configure('sub', offset=-6) widget.tag_configure('sup', offset=6) widget.tag_configure('c', foreground='blue') for text, tags in self.text: widget.insert('insert', text, tags) widget.configure(state='disabled', background=parent['bg']) widget.bind("<1>", lambda event: widget.focus_set()) return widget class Button(Widget): def __init__(self, text, callback, *args, **kwargs): self.callback = partial(callback, *args, **kwargs) self.creator = partial(tk.Button, text=text, command=self.callback) class CheckButton(Widget): def __init__(self, text, value=False, callback=None): self.text = text self.var = tk.BooleanVar(value=value) self.callback = callback def create(self, parent): self.check = tk.Checkbutton(parent, text=self.text, var=self.var, command=self.callback) return self.check @property def value(self): return self.var.get() class SpinBox(Widget): def __init__(self, value, start, end, step, callback=None): self.callback = callback self.creator = partial(tk.Spinbox, from_=start, to=end, increment=step, command=callback, width=6) self.initial = str(value) def create(self, parent): self.widget = self.creator(parent) self.widget.bind('', lambda event: self.callback()) self.value = self.initial return self.widget @property def value(self): x = self.widget.get().replace(',', '.') if '.' in x: return float(x) if x == 'None': return None return int(x) @value.setter def value(self, x): self.widget.delete(0, 'end') self.widget.insert(0, x) class Entry(Widget): def __init__(self, value='', width=20, callback=None): self.creator = partial(tk.Entry, width=width) if callback is not None: self.callback = lambda event: callback() else: self.callback = None self.initial = value def create(self, parent): self.entry = self.creator(parent) self.value = self.initial if self.callback: self.entry.bind('', self.callback) return self.entry @property def value(self): return self.entry.get() @value.setter def value(self, x): self.entry.delete(0, 'end') self.entry.insert(0, x) class Scale(Widget): def __init__(self, value, start, end, callback): def command(val): callback(int(val)) self.creator = partial(tk.Scale, from_=start, to=end, orient='horizontal', command=command) self.initial = value def create(self, parent): self.scale = self.creator(parent) self.value = self.initial return self.scale @property def value(self): return self.scale.get() @value.setter def value(self, x): self.scale.set(x) class RadioButtons(Widget): def __init__(self, labels, values=None, callback=None, vertical=False): self.var = tk.IntVar() if callback: def callback2(): callback(self.value) else: callback2 = None self.values = values or list(range(len(labels))) self.buttons = [RadioButton(label, i, self.var, callback2) for i, label in enumerate(labels)] self.vertical = vertical def create(self, parent): self.widget = frame = tk.Frame(parent) side = 'top' if self.vertical else 'left' for button in self.buttons: button.create(frame).pack(side=side) return frame @property def value(self): return self.values[self.var.get()] @value.setter def value(self, value): self.var.set(self.values.index(value)) def __getitem__(self, value): return self.buttons[self.values.index(value)] class RadioButton(Widget): def __init__(self, label, i, var, callback): self.creator = partial(tk.Radiobutton, text=label, var=var, value=i, command=callback) if ttk is not None: class ComboBox(Widget): def __init__(self, labels, values=None, callback=None): self.values = values or list(range(len(labels))) self.callback = callback self.creator = partial(ttk.Combobox, values=labels) def create(self, parrent): widget = Widget.create(self, parrent) widget.current(0) if self.callback: def callback(event): self.callback(self.value) widget.bind('<>', callback) return widget @property def value(self): return self.values[self.widget.current()] @value.setter def value(self, val): self.widget.current(self.values.index(val)) else: # Use Entry object when there is no ttk: def ComboBox(labels, values, callback): return Entry(values[0], callback=callback) class Rows(Widget): def __init__(self, rows=None): self.rows_to_be_added = rows or [] self.creator = tk.Frame self.rows = [] def create(self, parent): widget = Widget.create(self, parent) for row in self.rows_to_be_added: self.add(row) self.rows_to_be_added = [] return widget def add(self, row): if isinstance(row, basestring): row = Label(row) elif isinstance(row, list): row = Row(row) row.grid(self.widget) self.rows.append(row) def clear(self): while self.rows: del self[0] def __getitem__(self, i): return self.rows[i] def __delitem__(self, i): widget = self.rows.pop(i).widget widget.grid_remove() widget.destroy() def __len__(self): return len(self.rows) class MenuItem: def __init__(self, label, callback=None, key=None, value=None, choices=None, submenu=None, disabled=False): self.underline = label.find('_') self.label = label.replace('_', '') if key: if key[:4] == 'Ctrl': self.keyname = ''.format(key[-1].lower()) else: self.keyname = { 'Home': '', 'End': '', 'Page-Up': '', 'Page-Down': '', 'Backspace': ''}.get(key, key.lower()) if key: def callback2(event=None): callback(key) callback2.__name__ = callback.__name__ self.callback = callback2 else: self.callback = callback self.key = key self.value = value self.choices = choices self.submenu = submenu self.disabled = disabled def addto(self, menu, window, stuff=None): callback = self.callback if self.label == '---': menu.add_separator() elif self.value is not None: var = tk.BooleanVar(value=self.value) stuff[self.callback.__name__.replace('_', '-')] = var menu.add_checkbutton(label=self.label, underline=self.underline, command=self.callback, accelerator=self.key, var=var) def callback(key): var.set(not var.get()) self.callback() elif self.choices: submenu = tk.Menu(menu) menu.add_cascade(label=self.label, menu=submenu) var = tk.IntVar() var.set(0) stuff[self.callback.__name__.replace('_', '-')] = var for i, choice in enumerate(self.choices): submenu.add_radiobutton(label=choice.replace('_', ''), underline=choice.find('_'), command=self.callback, value=i, var=var) elif self.submenu: submenu = tk.Menu(menu) menu.add_cascade(label=self.label, menu=submenu) for thing in self.submenu: thing.addto(submenu, window) else: state = 'normal' if self.disabled: state = 'disabled' menu.add_command(label=self.label, underline=self.underline, command=self.callback, accelerator=self.key, state=state) if self.key: window.bind(self.keyname, callback) class MainWindow(BaseWindow): def __init__(self, title, close=None, menu=[]): self.win = tk.Tk() BaseWindow.__init__(self, title, close) # self.win.tk.call('tk', 'scaling', 3.0) # self.win.tk.call('tk', 'scaling', '-displayof', '.', 7) self.menu = {} if menu: self.create_menu(menu) def create_menu(self, menu_description): menu = tk.Menu(self.win) self.win.config(menu=menu) for label, things in menu_description: submenu = tk.Menu(menu) menu.add_cascade(label=label.replace('_', ''), underline=label.find('_'), menu=submenu) for thing in things: thing.addto(submenu, self.win, self.menu) def resize_event(self): # self.scale *= sqrt(1.0 * self.width * self.height / (w * h)) self.draw() self.configured = True def run(self): tk.mainloop() def test(self, test, close_after_test=False): def callback(): try: next(test) except StopIteration: if close_after_test: self.close() else: self.win.after_idle(callback) test.__name__ = str('?') self.win.after_idle(test) # callback) self.run() def __getitem__(self, name): return self.menu[name].get() def __setitem__(self, name, value): return self.menu[name].set(value) def bind(callback, modifier=None): def handle(event): event.button = mouse_buttons.get(event.num, event.num) event.key = event.keysym.lower() event.modifier = modifier callback(event) return handle class ASEGUIWindow(MainWindow): def __init__(self, close, menu, config, scroll, scroll_event, press, move, release, resize): MainWindow.__init__(self, 'ASE-GUI', close, menu) self.size = np.array([450, 450]) self.canvas = tk.Canvas(self.win, width=self.size[0], height=self.size[1], bg='white', highlightthickness=0) self.canvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True) self.status = tk.Label(self.win, text='', anchor=tk.W) self.status.pack(side=tk.BOTTOM, fill=tk.X) right = mouse_buttons.get(3, 3) self.canvas.bind('', bind(press)) self.canvas.bind('', bind(move)) self.canvas.bind(''.format(right=right), bind(move)) self.canvas.bind('', bind(release)) self.canvas.bind('', bind(release, 'ctrl')) self.canvas.bind('', bind(release, 'shift')) self.canvas.bind('', resize) self.win.bind('', bind(scroll_event)) for key in ['Key', 'Next', 'Prior']: # Next and Prior are PageUp/Dn, referring to Z axis. self.win.bind('<{}>'.format(key), bind(scroll)) self.win.bind(''.format(key), bind(scroll, 'shift')) self.win.bind(''.format(key), bind(scroll, 'ctrl')) self.fg = config['gui_foreground_color'] self.bg = config['gui_background_color'] def update_status_line(self, text): self.status.config(text=text) def run(self): MainWindow.run(self) def click(self, name): self.callbacks[name]() def clear(self): self.canvas.delete(tk.ALL) def update(self): self.canvas.update_idletasks() def circle(self, color, selected, *bbox): if selected: outline = '#004500' width = 3 else: outline = 'black' width = 1 self.canvas.create_oval(*tuple(int(x) for x in bbox), fill=color, outline=outline, width=width) def line(self, bbox, width=1): self.canvas.create_line(*tuple(int(x) for x in bbox), width=width) def text(self, x, y, txt, anchor=tk.CENTER, color='black'): anchor = {'SE': tk.SE}.get(anchor, anchor) self.canvas.create_text((x, y), text=txt, anchor=anchor, fill=color) def after(self, time, callback): id = self.win.after(int(time * 1000), callback) # Quick'n'dirty object with a cancel() method: return namedtuple('Timer', 'cancel')(lambda: self.win.after_cancel(id)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/utils.py000066400000000000000000000003331316323560300230340ustar00rootroot00000000000000def get_magmoms(atoms): if atoms.calc is not None: if not atoms.calc.calculation_required(atoms, ['magmoms']): return atoms.get_magnetic_moments() return atoms.get_initial_magnetic_moments() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/view.py000066400000000000000000000466001316323560300226550ustar00rootroot00000000000000from __future__ import division from math import cos, sin, sqrt from os.path import basename import numpy as np from ase.data.colors import jmol_colors from ase.geometry import complete_cell from ase.gui.repeat import Repeat from ase.gui.rotate import Rotate from ase.gui.render import Render from ase.gui.colors import ColorWindow from ase.gui.utils import get_magmoms from ase.utils import rotate GREEN = '#74DF00' PURPLE = '#AC58FA' def get_cell_coordinates(cell): """Get start and end points of lines segments used to draw cell.""" nn = [] for c in range(3): v = cell[c] d = sqrt(np.dot(v, v)) if d < 1e-12: n = 0 else: n = max(2, int(d / 0.3)) nn.append(n) B1 = np.zeros((2, 2, sum(nn), 3)) B2 = np.zeros((2, 2, sum(nn), 3)) n1 = 0 for c, n in enumerate(nn): n2 = n1 + n h = 1.0 / (2 * n - 1) R = np.arange(n) * (2 * h) for i, j in [(0, 0), (0, 1), (1, 0), (1, 1)]: B1[i, j, n1:n2, c] = R B1[i, j, n1:n2, (c + 1) % 3] = i B1[i, j, n1:n2, (c + 2) % 3] = j B2[:, :, n1:n2] = B1[:, :, n1:n2] B2[:, :, n1:n2, c] += h n1 = n2 B1.shape = (-1, 3) B2.shape = (-1, 3) return B1, B2 def get_bonds(atoms, covalent_radii): from ase.neighborlist import NeighborList nl = NeighborList(covalent_radii * 1.5, skin=0, self_interaction=False) nl.update(atoms) nbonds = nl.nneighbors + nl.npbcneighbors bonds = np.empty((nbonds, 5), int) if nbonds == 0: return bonds n1 = 0 for a in range(len(atoms)): indices, offsets = nl.get_neighbors(a) n2 = n1 + len(indices) bonds[n1:n2, 0] = a bonds[n1:n2, 1] = indices bonds[n1:n2, 2:] = offsets n1 = n2 i = bonds[:n2, 2:].any(1) pbcbonds = bonds[:n2][i] bonds[n2:, 0] = pbcbonds[:, 1] bonds[n2:, 1] = pbcbonds[:, 0] bonds[n2:, 2:] = -pbcbonds[:, 2:] return bonds class View: def __init__(self, rotations): self.colormode = 'jmol' # The default colors self.nselected = 0 self.labels = None self.axes = rotate(rotations) self.configured = False self.frame = None # XXX self.colormode = 'jmol' self.colors = {} for i, rgb in enumerate(jmol_colors): self.colors[i] = ('#{0:02X}{1:02X}{2:02X}' .format(*(int(x * 255) for x in rgb))) @property def atoms(self): return self.images[self.frame] def set_frame(self, frame=None, focus=False): if frame is None: frame = self.frame assert frame < len(self.images) self.frame = frame self.set_atoms(self.images[frame]) fname = self.images.filenames[frame] if fname is None: title = 'ase.gui' else: title = '{}@{}'.format(basename(fname), frame) self.window.title = title if focus: self.focus() else: self.draw() def set_atoms(self, atoms): natoms = len(atoms) if self.showing_cell(): B1, B2 = get_cell_coordinates(atoms.cell) else: B1 = B2 = np.zeros((0, 3)) if self.showing_bonds(): atomscopy = atoms.copy() atomscopy.cell *= self.images.repeat[:, np.newaxis] bonds = get_bonds(atomscopy, self.get_covalent_radii(atoms)) else: bonds = np.empty((0, 5), int) # X is all atomic coordinates, and starting points of vectors # like bonds and cell segments. # The reason to have them all in one big list is that we like to # eventually rotate/sort it by Z-order when rendering. # Also B are the end points of line segments. self.X = np.empty((natoms + len(B1) + len(bonds), 3)) self.X_pos = self.X[:natoms] self.X_pos[:] = atoms.positions self.X_cell = self.X[natoms:natoms + len(B1)] self.X_bonds = self.X[natoms + len(B1):] if 1:#if init or frame != self.frame: cell = atoms.cell ncellparts = len(B1) nbonds = len(bonds) if 1: #init or (atoms.cell != self.atoms.cell).any(): self.X_cell[:] = np.dot(B1, cell) self.B = np.empty((ncellparts + nbonds, 3)) self.B[:ncellparts] = np.dot(B2, cell) if nbonds > 0: P = atoms.positions Af = self.images.repeat[:, np.newaxis] * cell a = P[bonds[:, 0]] b = P[bonds[:, 1]] + np.dot(bonds[:, 2:], Af) - a d = (b**2).sum(1)**0.5 r = 0.65 * self.get_covalent_radii() x0 = (r[bonds[:, 0]] / d).reshape((-1, 1)) x1 = (r[bonds[:, 1]] / d).reshape((-1, 1)) self.X_bonds[:] = a + b * x0 b *= 1.0 - x0 - x1 b[bonds[:, 2:].any(1)] *= 0.5 self.B[ncellparts:] = self.X_bonds + b def showing_bonds(self): return self.window['toggle-show-bonds'] def showing_cell(self): return self.window['toggle-show-unit-cell'] def toggle_show_unit_cell(self, key=None): self.set_frame() def update_labels(self): index = self.window['show-labels'] if index == 0: self.labels = None elif index == 1: self.labels = list(range(len(self.atoms))) elif index == 2: self.labels = list(get_magmoms(self.atoms)) elif index == 4: Q = self.atoms.get_initial_charges() self.labels = ['{0:.4g}'.format(q) for q in Q] else: self.labels = self.atoms.get_chemical_symbols() def show_labels(self): self.update_labels() self.draw() def toggle_show_axes(self, key=None): self.draw() def toggle_show_bonds(self, key=None): self.set_frame() def toggle_show_velocities(self, key=None): self.draw() # transitional compat hack def get_forces(self): return self.images.get_forces(self.atoms) def toggle_show_forces(self, key=None): self.draw() def hide_selected(self): self.images.visible[self.images.selected] = False self.draw() def show_selected(self): self.images.visible[self.images.selected] = True self.draw() def repeat_window(self, key=None): Repeat(self) def rotate_window(self): return Rotate(self) def colors_window(self, key=None): win = ColorWindow(self) self.register_vulnerable(win) return win def focus(self, x=None): cell = (self.window['toggle-show-unit-cell'] and self.images[0].cell.any()) if (len(self.atoms) == 0 and not cell): self.scale = 1.0 self.center = np.zeros(3) self.draw() return P = np.dot(self.X, self.axes) n = len(self.atoms) covalent_radii = self.get_covalent_radii() P[:n] -= covalent_radii[:, None] P1 = P.min(0) P[:n] += 2 * covalent_radii[:, None] P2 = P.max(0) self.center = np.dot(self.axes, (P1 + P2) / 2) S = 1.3 * (P2 - P1) w, h = self.window.size if S[0] * h < S[1] * w: self.scale = h / S[1] elif S[0] > 0.0001: self.scale = w / S[0] else: self.scale = 1.0 self.draw() def reset_view(self, menuitem): self.axes = rotate('0.0x,0.0y,0.0z') self.set_frame() self.focus(self) def set_view(self, key): if key == 'Z': self.axes = rotate('0.0x,0.0y,0.0z') elif key == 'X': self.axes = rotate('-90.0x,-90.0y,0.0z') elif key == 'Y': self.axes = rotate('90.0x,0.0y,90.0z') elif key == 'Alt+Z': self.axes = rotate('180.0x,0.0y,90.0z') elif key == 'Alt+X': self.axes = rotate('0.0x,90.0y,0.0z') elif key == 'Alt+Y': self.axes = rotate('-90.0x,0.0y,0.0z') else: if key == '3': i, j = 0, 1 elif key == '1': i, j = 1, 2 elif key == '2': i, j = 2, 0 elif key == 'Alt+3': i, j = 1, 0 elif key == 'Alt+1': i, j = 2, 1 elif key == 'Alt+2': i, j = 0, 2 A = complete_cell(self.atoms.cell) x1 = A[i] x2 = A[j] norm = np.linalg.norm x1 = x1 / norm(x1) x2 = x2 - x1 * np.dot(x1, x2) x2 /= norm(x2) x3 = np.cross(x1, x2) self.axes = np.array([x1, x2, x3]).T self.set_frame() def get_colors(self, rgb=False): if rgb: return [tuple(int(_rgb[i:i + 2], 16) / 255 for i in range(1, 7, 2)) for _rgb in self.get_colors()] if self.colormode == 'jmol': return [self.colors[Z] for Z in self.atoms.numbers] colorscale, cmin, cmax = self.colormode_data N = len(colorscale) if cmin == cmax: indices = [N // 2] * len(self.atoms) else: scalars = self.get_color_scalars() indices = np.clip(((scalars - cmin) / (cmax - cmin) * N + 0.5).astype(int), 0, N - 1) return [colorscale[i] for i in indices] def get_color_scalars(self, frame=None): if self.colormode == 'tag': return self.atoms.get_tags() if self.colormode == 'force': f = (self.get_forces()**2).sum(1)**0.5 return f * self.images.get_dynamic(self.atoms) elif self.colormode == 'velocity': return (self.atoms.get_velocities()**2).sum(1)**0.5 elif self.colormode == 'initial charge': return self.atoms.get_initial_charges() elif self.colormode == 'magmom': return get_magmoms(self.atoms) def get_covalent_radii(self, atoms=None): if atoms is None: atoms = self.atoms return self.images.get_radii(atoms) def draw(self, status=True): self.window.clear() axes = self.scale * self.axes * (1, -1, 1) offset = np.dot(self.center, axes) offset[:2] -= 0.5 * self.window.size X = np.dot(self.X, axes) - offset n = len(self.atoms) # The indices enumerate drawable objects in z order: self.indices = X[:, 2].argsort() r = self.get_covalent_radii() * self.scale if self.window['toggle-show-bonds']: r *= 0.65 P = self.P = X[:n, :2] A = (P - r[:, None]).round().astype(int) X1 = X[n:, :2].round().astype(int) X2 = (np.dot(self.B, axes) - offset).round().astype(int) disp = (np.dot(self.atoms.get_celldisp().reshape((3,)), axes)).round().astype(int) d = (2 * r).round().astype(int) vector_arrays = [] if self.window['toggle-show-velocities']: # Scale ugly? v = self.atoms.get_velocities() if v is not None: vector_arrays.append(v * 10.0) if self.window['toggle-show-forces']: f = self.get_forces() if f is not None: vector_arrays.append(f) for array in vector_arrays: array[:] = np.dot(array, axes) + X[:n] colors = self.get_colors() circle = self.window.circle line = self.window.line constrained = ~self.images.get_dynamic(self.atoms) selected = self.images.selected visible = self.images.visible ncell = len(self.X_cell) bond_linewidth = self.scale * 0.15 self.update_labels() if self.arrowkey_mode == self.ARROWKEY_MOVE: movecolor = GREEN elif self.arrowkey_mode == self.ARROWKEY_ROTATE: movecolor = PURPLE for a in self.indices: if a < n: ra = d[a] if visible[a]: # Draw the atoms if (self.moving and a < len(self.move_atoms_mask) and self.move_atoms_mask[a]): circle(movecolor, False, A[a, 0] - 4, A[a, 1] - 4, A[a, 0] + ra + 4, A[a, 1] + ra + 4) circle(colors[a], selected[a], A[a, 0], A[a, 1], A[a, 0] + ra, A[a, 1] + ra) # Draw labels on the atoms if self.labels is not None: self.window.text(A[a, 0] + ra / 2, A[a, 1] + ra / 2, str(self.labels[a])) # Draw cross on constrained atoms if constrained[a]: R1 = int(0.14644 * ra) R2 = int(0.85355 * ra) line((A[a, 0] + R1, A[a, 1] + R1, A[a, 0] + R2, A[a, 1] + R2)) line((A[a, 0] + R2, A[a, 1] + R1, A[a, 0] + R1, A[a, 1] + R2)) # Draw velocities and/or forces for v in vector_arrays: assert not np.isnan(v).any() self.arrow((X[a, 0], X[a, 1], v[a, 0], v[a, 1]), width=2) else: # Draw unit cell and/or bonds: a -= n if a < ncell: line((X1[a, 0] + disp[0], X1[a, 1] + disp[1], X2[a, 0] + disp[0], X2[a, 1] + disp[1])) else: line((X1[a, 0] + disp[0], X1[a, 1] + disp[1], X2[a, 0] + disp[0], X2[a, 1] + disp[1]), width=bond_linewidth) if self.window['toggle-show-axes']: self.draw_axes() if len(self.images) > 1: self.draw_frame_number() self.window.update() if status: self.status(self.atoms) def arrow(self, coords, width): line = self.window.line begin = np.array((coords[0], coords[1])) end = np.array((coords[2], coords[3])) line(coords, width) vec = end - begin length = np.sqrt((vec[:2]**2).sum()) length = min(length, 0.3 * self.scale) angle = np.arctan2(end[1] - begin[1], end[0] - begin[0]) + np.pi x1 = (end[0] + length * np.cos(angle - 0.3)).round().astype(int) y1 = (end[1] + length * np.sin(angle - 0.3)).round().astype(int) x2 = (end[0] + length * np.cos(angle + 0.3)).round().astype(int) y2 = (end[1] + length * np.sin(angle + 0.3)).round().astype(int) line((x1, y1, end[0], end[1]), width) line((x2, y2, end[0], end[1]), width) def draw_axes(self): axes_length = 15 rgb = ['red', 'green', 'blue'] for i in self.axes[:, 2].argsort(): a = 20 b = self.window.size[1] - 20 c = int(self.axes[i][0] * axes_length + a) d = int(-self.axes[i][1] * axes_length + b) self.window.line((a, b, c, d)) self.window.text(c, d, 'XYZ'[i], color=rgb[i]) def draw_frame_number(self): x, y = self.window.size self.window.text(x, y, '{0}/{1}'.format(self.frame + 1, len(self.images)), anchor='SE') def release(self, event): if event.button in [4, 5]: self.scroll_event(event) return if event.button != 1: return selected = self.images.selected selected_ordered = self.images.selected_ordered if event.time < self.t0 + 200: # 200 ms d = self.P - self.xy r = self.get_covalent_radii() hit = np.less((d**2).sum(1), (self.scale * r)**2) for a in self.indices[::-1]: if a < len(self.atoms) and hit[a]: if event.modifier == 'ctrl': selected[a] = not selected[a] if selected[a]: selected_ordered += [a] elif len(selected_ordered) > 0: if selected_ordered[-1] == a: selected_ordered = selected_ordered[:-1] else: selected_ordered = [] else: selected[:] = False selected[a] = True selected_ordered = [a] break else: selected[:] = False selected_ordered = [] self.draw() else: A = (event.x, event.y) C1 = np.minimum(A, self.xy) C2 = np.maximum(A, self.xy) hit = np.logical_and(self.P > C1, self.P < C2) indices = np.compress(hit.prod(1), np.arange(len(hit))) if event.modifier != 'ctrl': selected[:] = False selected[indices] = True if (len(indices) == 1 and indices[0] not in self.images.selected_ordered): selected_ordered += [indices[0]] elif len(indices) > 1: selected_ordered = [] self.draw() # XXX check bounds indices = np.arange(len(self.atoms))[self.images.selected[:len(self.atoms)]] if len(indices) != len(selected_ordered): selected_ordered = [] self.images.selected_ordered = selected_ordered def press(self, event): self.button = event.button self.xy = (event.x, event.y) self.t0 = event.time self.axes0 = self.axes self.center0 = self.center def move(self, event): x = event.x y = event.y x0, y0 = self.xy if self.button == 1: x0 = int(round(x0)) y0 = int(round(y0)) self.draw() self.window.canvas.create_rectangle((x, y, x0, y0)) return if event.modifier == 'shift': self.center = (self.center0 - np.dot(self.axes, (x - x0, y0 - y, 0)) / self.scale) else: # Snap mode: the a-b angle and t should multipla of 15 degrees ??? a = x - x0 b = y0 - y t = sqrt(a * a + b * b) if t > 0: a /= t b /= t else: a = 1.0 b = 0.0 c = cos(0.01 * t) s = -sin(0.01 * t) rotation = np.array([(c * a * a + b * b, (c - 1) * b * a, s * a), ((c - 1) * a * b, c * b * b + a * a, s * b), (-s * a, -s * b, c)]) self.axes = np.dot(self.axes0, rotation) if len(self.atoms) > 0: com = self.X_pos.mean(0) else: com = self.atoms.cell.mean(0) self.center = com - np.dot(com - self.center0, np.dot(self.axes0, self.axes.T)) self.draw(status=False) def render_window(self): Render(self) def resize(self, event): w, h = self.window.size self.scale *= (event.width * event.height / (w * h))**0.5 self.window.size[:] = [event.width, event.height] self.draw() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/gui/widgets.py000066400000000000000000000037471316323560300233560ustar00rootroot00000000000000from __future__ import unicode_literals from ase.gui.i18n import _ import ase.data import ase.gui.ui as ui class Element(list): def __init__(self, symbol='', callback=None): list.__init__(self, [_('Element:'), ui.Entry(symbol, 3, self.enter), ui.Label('', 'red')]) self.callback = callback self._symbol = None self._Z = None @property def symbol(self): self.check() return self._symbol @symbol.setter def symbol(self, value): self[1].value = value @property def Z(self): self.check() return self._Z @Z.setter def Z(self, value): self.symbol = ase.data.chemical_symbols[value] def check(self): self._symbol = self[1].value if not self._symbol: self.error(_('No element specified!')) return False self._Z = ase.data.atomic_numbers.get(self._symbol) if self._Z is None: try: self._Z = int(self._symbol) except ValueError: self.error() return False self._symbol = ase.data.chemical_symbols[self._Z] self[2].text = '' return True def enter(self): self.check() self.callback(self) def error(self, text=_('ERROR: Invalid element!')): self._symbol = None self._Z = None self[2].text = text def pybutton(title, callback): """A button for displaying Python code. When pressed, it opens a window displaying some Python code, or an error message if no Python code is ready. """ return ui.Button('Python', pywindow, title, callback) def pywindow(title, callback): code = callback() if code is None: ui.error( _('No Python code'), _('You have not (yet) specified a consistent set of parameters.')) else: win = ui.Window(title) win.add(ui.Text(code)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/infrared.py000066400000000000000000000002161316323560300227020ustar00rootroot00000000000000import warnings from vibrations.infrared import InfraRed __all__ = ['InfraRed'] warnings.warn('Renamed to ase.vibrations.infrared.Infrared') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/000077500000000000000000000000001316323560300211465ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/__init__.py000066400000000000000000000005531316323560300232620ustar00rootroot00000000000000from ase.io.trajectory import Trajectory, PickleTrajectory from ase.io.bundletrajectory import BundleTrajectory from ase.io.netcdftrajectory import NetCDFTrajectory from ase.io.formats import read, iread, write, string2index __all__ = ['Trajectory', 'PickleTrajectory', 'BundleTrajectory', 'NetCDFTrajectory', 'read', 'iread', 'write', 'string2index'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/abinit.py000066400000000000000000000134571316323560300230000ustar00rootroot00000000000000from ase.utils import basestring """ This module contains functionality for reading an ASE Atoms object in ABINIT input format. """ def read_abinit(filename='abinit.in'): """Import ABINIT input file. Reads cell, atom positions, etc. from abinit input file """ from ase import Atoms, units if isinstance(filename, basestring): f = open(filename) else: # Assume it's a file-like object f = filename lines = [] for line in f.readlines(): meat = line.split('#', 1)[0] lines.append(meat) tokens = ' '.join(lines).lower().split() if isinstance(filename, basestring): f.close() # note that the file can not be scanned sequentially index = tokens.index("acell") unit = 1.0 if(tokens[index + 4].lower()[:3] != 'ang'): unit = units.Bohr acell = [unit * float(tokens[index + 1]), unit * float(tokens[index + 2]), unit * float(tokens[index + 3])] index = tokens.index("natom") natom = int(tokens[index+1]) index = tokens.index("ntypat") ntypat = int(tokens[index+1]) index = tokens.index("typat") typat = [] for i in range(natom): t = tokens[index+1+i] if '*' in t: # e.g. typat 4*1 3*2 ... typat.extend([int(t) for t in ((t.split('*')[1] + ' ') * int(t.split('*')[0])).split()]) else: typat.append(int(t)) if len(typat) == natom: break index = tokens.index("znucl") znucl = [] for i in range(ntypat): znucl.append(int(tokens[index+1+i])) index = tokens.index("rprim") rprim = [] for i in range(3): rprim.append([acell[i]*float(tokens[index+3*i+1]), acell[i]*float(tokens[index+3*i+2]), acell[i]*float(tokens[index+3*i+3])]) # create a list with the atomic numbers numbers = [] for i in range(natom): ii = typat[i] - 1 numbers.append(znucl[ii]) # now the positions of the atoms if "xred" in tokens: index = tokens.index("xred") xred = [] for i in range(natom): xred.append([float(tokens[index+3*i+1]), float(tokens[index+3*i+2]), float(tokens[index+3*i+3])]) atoms = Atoms(cell=rprim, scaled_positions=xred, numbers=numbers, pbc=True) else: if "xcart" in tokens: index = tokens.index("xcart") unit = units.Bohr elif "xangst" in tokens: unit = 1.0 index = tokens.index("xangst") else: raise IOError( "No xred, xcart, or xangs keyword in abinit input file") xangs = [] for i in range(natom): xangs.append([unit*float(tokens[index+3*i+1]), unit*float(tokens[index+3*i+2]), unit*float(tokens[index+3*i+3])]) atoms = Atoms(cell=rprim, positions=xangs, numbers=numbers, pbc=True) try: ii = tokens.index('nsppol') except ValueError: nsppol = None else: nsppol = int(tokens[ii + 1]) if nsppol == 2: index = tokens.index('spinat') magmoms = [float(tokens[index + 3 * i + 3]) for i in range(natom)] atoms.set_initial_magnetic_moments(magmoms) return atoms def write_abinit(filename, atoms, cartesian=False, long_format=True): """Method to write abinit input files.""" import numpy as np from ase import data if isinstance(filename, basestring): f = open(filename, 'w') else: # Assume it's a 'file-like object' f = filename if isinstance(atoms, (list, tuple)): if len(atoms) > 1: raise RuntimeError("Don't know how to save more than "+ "one image to input") else: atoms = atoms[0] # Write atom positions in scaled or cartesian coordinates if cartesian: coord = atoms.get_positions() else: coord = atoms.get_scaled_positions() # let us order the atoms according to chemical symbol ind = np.argsort(atoms.get_chemical_symbols()) symbols = np.array(atoms.get_chemical_symbols())[ind] coord = coord[ind] # and now we count how many atoms of which type we have sc = [] psym = symbols[0] count = 0 for sym in symbols: if sym != psym: sc.append((psym, count)) psym = sym count = 1 else: count += 1 sc.append((psym, count)) f.write('\n# Definition of the atom types\n') f.write("ntypat " + str(len(sc)) + "\n") f.write("znucl ") for specie in sc: f.write(str(data.atomic_numbers[specie[0]]) + " ") f.write('\n') f.write('\n# Definition of the atoms\n') f.write('natom ' + str(len(symbols)) + '\n') f.write('typat ') typat = 1 for specie in sc: for natom in range(specie[1]): f.write(str(typat) + ' ') typat = typat + 1 f.write('\n') f.write('\n# Definition of the unit cell\n') f.write('acell\n') f.write('%.14f %.14f %.14f Angstrom\n' % (1.0, 1.0, 1.0)) f.write('\n') f.write('rprim\n') if long_format: latt_form = ' %21.16f' else: latt_form = ' %11.6f' for vec in atoms.get_cell(): f.write(' ') for el in vec: f.write(latt_form % el) f.write('\n') f.write('\n') # Write atom positions in scaled or cartesian coordinates if cartesian: f.write('xangst\n') else: f.write('xred\n') if long_format: cform = ' %19.16f' else: cform = ' %9.6f' for iatom, atom in enumerate(coord): f.write(' ') for dcoord in atom: f.write(cform % dcoord) f.write('\n') if isinstance(filename, basestring): f.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/aff.py000066400000000000000000000003661316323560300222610ustar00rootroot00000000000000from ase.io.ulm import (open as affopen, InvalidULMFileError as InvalidAFFError, Reader, Writer, DummyWriter) __all__ = ['affopen', 'InvalidAFFError', 'Reader', 'Writer', 'DummyWriter'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/aims.py000066400000000000000000000271311316323560300224550ustar00rootroot00000000000000def read_aims(filename): """Import FHI-aims geometry type files. Reads unitcell, atom positions and constraints from a geometry.in file. """ from ase import Atoms from ase.constraints import FixAtoms, FixCartesian import numpy as np atoms = Atoms() fd = open(filename, 'r') lines = fd.readlines() fd.close() positions = [] cell = [] symbols = [] magmoms = [] fix = [] fix_cart = [] xyz = np.array([0, 0, 0]) i = -1 n_periodic = -1 periodic = np.array([False, False, False]) cart_positions, scaled_positions = False, False for n, line in enumerate(lines): inp = line.split() if inp == []: continue if inp[0] == 'atom': cart_positions = True if xyz.all(): fix.append(i) elif xyz.any(): fix_cart.append(FixCartesian(i, xyz)) floatvect = float(inp[1]), float(inp[2]), float(inp[3]) positions.append(floatvect) symbols.append(inp[-1]) i += 1 xyz = np.array([0, 0, 0]) if inp[0] == 'atom_frac': scaled_positions = True if xyz.all(): fix.append(i) elif xyz.any(): fix_cart.append(FixCartesian(i, xyz)) floatvect = float(inp[1]), float(inp[2]), float(inp[3]) positions.append(floatvect) symbols.append(inp[-1]) i += 1 xyz = np.array([0, 0, 0]) elif inp[0] == 'lattice_vector': floatvect = float(inp[1]), float(inp[2]), float(inp[3]) cell.append(floatvect) n_periodic = n_periodic + 1 periodic[n_periodic] = True elif inp[0] == 'initial_moment': magmoms.append(float(inp[1])) if inp[0] == 'constrain_relaxation': if inp[1] == '.true.': fix.append(i) elif inp[1] == 'x': xyz[0] = 1 elif inp[1] == 'y': xyz[1] = 1 elif inp[1] == 'z': xyz[2] = 1 if xyz.all(): fix.append(i) elif xyz.any(): fix_cart.append(FixCartesian(i, xyz)) if cart_positions and scaled_positions: raise Exception("Can't specify atom positions with mixture of " 'Cartesian and fractional coordinates') elif scaled_positions and periodic.any(): atoms = Atoms(symbols, scaled_positions=positions, cell=cell, pbc=periodic) else: atoms = Atoms(symbols, positions) if len(magmoms) > 0: atoms.set_initial_magnetic_moments(magmoms) if periodic.any(): atoms.set_cell(cell) atoms.set_pbc(periodic) if len(fix): atoms.set_constraint([FixAtoms(indices=fix)] + fix_cart) else: atoms.set_constraint(fix_cart) return atoms def write_aims(filename, atoms, scaled=False, ghosts=None): """Method to write FHI-aims geometry files. Writes the atoms positions and constraints (only FixAtoms is supported at the moment). """ from ase.constraints import FixAtoms, FixCartesian import numpy as np if isinstance(atoms, (list, tuple)): if len(atoms) > 1: raise RuntimeError("Don't know how to save more than " "one image to FHI-aims input") else: atoms = atoms[0] fd = open(filename, 'w') fd.write('#=======================================================\n') fd.write('#FHI-aims file: ' + filename + '\n') fd.write('#Created using the Atomic Simulation Environment (ASE)\n') fd.write('#=======================================================\n') i = 0 if atoms.get_pbc().any(): for n, vector in enumerate(atoms.get_cell()): fd.write('lattice_vector ') for i in range(3): fd.write('%16.16f ' % vector[i]) fd.write('\n') fix_cart = np.zeros([len(atoms), 3]) if atoms.constraints: for constr in atoms.constraints: if isinstance(constr, FixAtoms): fix_cart[constr.index] = [1, 1, 1] elif isinstance(constr, FixCartesian): fix_cart[constr.a] = -constr.mask + 1 if ghosts is None: ghosts = np.zeros(len(atoms)) else: assert len(ghosts) == len(atoms) scaled_positions = atoms.get_scaled_positions() for i, atom in enumerate(atoms): if ghosts[i] == 1: atomstring = 'empty ' elif scaled: atomstring = 'atom_frac ' else: atomstring = 'atom ' fd.write(atomstring) if scaled: for pos in scaled_positions[i]: fd.write('%16.16f ' % pos) else: for pos in atom.position: fd.write('%16.16f ' % pos) fd.write(atom.symbol) fd.write('\n') # (1) all coords are constrained: if fix_cart[i].all(): fd.write('constrain_relaxation .true.\n') # (2) some coords are constrained: elif fix_cart[i].any(): xyz = fix_cart[i] for n in range(3): if xyz[n]: fd.write('constrain_relaxation %s\n' % 'xyz'[n]) if atom.charge: fd.write('initial_charge %16.6f\n' % atom.charge) if atom.magmom: fd.write('initial_moment %16.6f\n' % atom.magmom) # except KeyError: # continue def read_energy(filename): for line in open(filename, 'r'): if line.startswith(' | Total energy corrected'): E = float(line.split()[-2]) return E def read_aims_output(filename, index=-1): """Import FHI-aims output files with all data available, i.e. relaxations, MD information, force information etc etc etc.""" from ase import Atoms, Atom from ase.calculators.singlepoint import SinglePointCalculator from ase.units import Ang, fs from ase.constraints import FixAtoms, FixCartesian molecular_dynamics = False fd = open(filename, 'r') cell = [] images = [] fix = [] fix_cart = [] f = None pbc = False found_aims_calculator = False v_unit = Ang / (1000.0 * fs) while True: line = fd.readline() if not line: break # if "List of parameters used to initialize the calculator:" in line: # fd.readline() # calc = read_aims_calculator(fd) # calc.out = filename # found_aims_calculator = True if "| Number of atoms :" in line: inp = line.split() n_atoms = int(inp[5]) if "| Unit cell:" in line: if not pbc: pbc = True for i in range(3): inp = fd.readline().split() cell.append([inp[1], inp[2], inp[3]]) if "Found relaxation constraint for atom" in line: xyz = [0, 0, 0] ind = int(line.split()[5][:-1]) - 1 if "All coordinates fixed" in line: if ind not in fix: fix.append(ind) if "coordinate fixed" in line: coord = line.split()[6] if coord == 'x': xyz[0] = 1 elif coord == 'y': xyz[1] = 1 elif coord == 'z': xyz[2] = 1 keep = True for n, c in enumerate(fix_cart): if ind == c.a: keep = False if keep: fix_cart.append(FixCartesian(ind, xyz)) else: fix_cart[n].mask[xyz.index(1)] = 0 if "Atomic structure:" in line and not molecular_dynamics: fd.readline() atoms = Atoms() for i in range(n_atoms): inp = fd.readline().split() atoms.append(Atom(inp[3], (inp[4], inp[5], inp[6]))) if "Complete information for previous time-step:" in line: molecular_dynamics = True if "Updated atomic structure:" in line and not molecular_dynamics: fd.readline() atoms = Atoms() velocities = [] for i in range(n_atoms): inp = fd.readline().split() if 'lattice_vector' in inp[0]: cell = [] for i in range(3): cell += [[float(inp[1]), float(inp[2]), float(inp[3])]] inp = fd.readline().split() atoms.set_cell(cell) inp = fd.readline().split() atoms.append(Atom(inp[4], (inp[1], inp[2], inp[3]))) if molecular_dynamics: inp = fd.readline().split() if "Atomic structure (and velocities)" in line: fd.readline() atoms = Atoms() velocities = [] for i in range(n_atoms): inp = fd.readline().split() atoms.append(Atom(inp[4], (inp[1], inp[2], inp[3]))) inp = fd.readline().split() velocities += [[float(inp[1]) * v_unit, float(inp[2]) * v_unit, float(inp[3]) * v_unit]] atoms.set_velocities(velocities) if len(fix): atoms.set_constraint([FixAtoms(indices=fix)] + fix_cart) else: atoms.set_constraint(fix_cart) images.append(atoms) if "Total atomic forces" in line: f = [] for i in range(n_atoms): inp = fd.readline().split() f.append([float(inp[2]), float(inp[3]), float(inp[4])]) if not found_aims_calculator: e = images[-1].get_potential_energy() images[-1].set_calculator(SinglePointCalculator(atoms, energy=e, forces=f)) e = None f = None if "Total energy corrected" in line: e = float(line.split()[5]) if pbc: atoms.set_cell(cell) atoms.pbc = True if not found_aims_calculator: atoms.set_calculator(SinglePointCalculator(atoms, energy=e)) if not molecular_dynamics: if len(fix): atoms.set_constraint([FixAtoms(indices=fix)] + fix_cart) else: atoms.set_constraint(fix_cart) images.append(atoms) e = None # if found_aims_calculator: # calc.set_results(images[-1]) # images[-1].set_calculator(calc) fd.close() if molecular_dynamics: images = images[1:] # return requested images, code borrowed from ase/io/trajectory.py if isinstance(index, int): return images[index] else: step = index.step or 1 if step > 0: start = index.start or 0 if start < 0: start += len(images) stop = index.stop or len(images) if stop < 0: stop += len(images) else: if index.start is None: start = len(images) - 1 else: start = index.start if start < 0: start += len(images) if index.stop is None: stop = -1 else: stop = index.stop if stop < 0: stop += len(images) return [images[i] for i in range(start, stop, step)] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/bader.py000066400000000000000000000036661316323560300226100ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.units import Bohr from ase.utils import basestring def attach_charges(atoms, fileobj='ACF.dat', displacement=1e-4): """Attach the charges from the fileobj to the Atoms.""" if isinstance(fileobj, basestring): fileobj = open(fileobj) sep = '---------------' i = 0 # Counter for the lines k = 0 # Counter of sep assume6columns = False for line in fileobj: if line[0] == '\n': # check if there is an empty line in the i -= 1 # head of ACF.dat file if i == 0: headings = line if 'BADER' in headings.split(): j = headings.split().index('BADER') elif 'CHARGE' in headings.split(): j = headings.split().index('CHARGE') else: print('Can\'t find keyword "BADER" or "CHARGE".' \ +' Assuming the ACF.dat file has 6 columns.') j = 4 assume6columns = True if sep in line: # Stop at last seperator line if k == 1: break k += 1 if not i > 1: pass else: words = line.split() if assume6columns is True: if len(words) != 6: raise IOError('Number of columns in ACF file incorrect!\n' 'Check that Bader program version >= 0.25') atom = atoms[int(words[0]) - 1] atom.charge = float(words[j]) if displacement is not None: # check if the atom positions match xyz = np.array([float(w) for w in words[1:4]]) # ACF.dat units could be Bohr or Angstrom norm1 = np.linalg.norm(atom.position - xyz) norm2 = np.linalg.norm(atom.position - xyz*Bohr) assert norm1 < displacement or norm2 < displacement i += 1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/bundlemanipulate.py000066400000000000000000000165441316323560300250630ustar00rootroot00000000000000"""Functions for in-place manipulation of bundletrajectories. This module defines a number of functions that can be used to extract and delete data from BundleTrajectories directly on disk. The functions are intended for large-scale MD output, so they avoid copying the potentially large amounts of data. In stead, data is either directly deleted in-place; or copies are made by creating a new directory structure, but hardlinking the data files. Hard links makes it possible to delete the original data without invalidating the copy. Usage from command line: python -m ase.io.bundlemanipulate inbundle outbundle [start [end [step]]] """ from __future__ import print_function from ase.io.bundletrajectory import PickleBundleBackend, UlmBundleBackend import os import pickle import json import numpy as np def copy_frames(inbundle, outbundle, start=0, end=None, step=1, verbose=False): """Copies selected frame from one bundle to the next.""" if not (isinstance(start, int) and (isinstance(end, int) or end is None) and isinstance(step, int)): raise TypeError("copy_frames: start, end and step must be integers.") metadata, nframes = read_bundle_info(inbundle) if metadata['backend'] == 'ulm': ulm = True backend = UlmBundleBackend(True, metadata['ulm.singleprecision']) else: ulm = False assert(metadata['backend'] == 'pickle') backend = PickleBundleBackend(True) backend.readpy2 = False if start < 0: start += nframes if end is None: end = nframes if end < 0: end += nframes if start < 0 or (start > nframes - 1 and end > 0): raise ValueError("copy_frames: Invalid start value.") if end < 0 or (end > nframes - 1 and end < 0): raise ValueError("copy_frames: Invalid end value.") if step == 0: raise ValueError("copy_frames: Invalid step value (zero)") frames = list(range(start, end, step)) if verbose: print("Copying the frames", frames) # Make the new bundle directory os.mkdir(outbundle) with open(os.path.join(outbundle, 'metadata.json'), 'w') as f: json.dump(metadata, f, indent=2) for nout, nin in enumerate(frames): if verbose: print("F%i -> F%i" % (nin, nout)) indir = os.path.join(inbundle, "F" + str(nin)) outdir = os.path.join(outbundle, "F" + str(nout)) os.mkdir(outdir) names = os.listdir(indir) for name in names: fromfile = os.path.join(indir, name) tofile = os.path.join(outdir, name) os.link(fromfile, tofile) if nout == 0 and nin != 0: if verbose: print("F0 -> F0 (supplemental)") # The smalldata.pickle stuff must be updated. # At the same time, check if the number of fragments # has not changed. data0 = backend.read_small(os.path.join(inbundle, "F0")) data1 = backend.read_small(indir) split_data = (metadata['subtype'] == 'split') if split_data: fragments0 = data0['fragments'] fragments1 = data1['fragments'] data0.update(data1) # Data in frame overrides data from frame 0. backend.write_small(outdir, data0) # If data is written in split mode, it must be reordered firstnames = os.listdir(os.path.join(inbundle, "F0")) if not split_data: # Simple linking for name in firstnames: if name not in names: if verbose: print(" ", name, " (linking)") fromfile = os.path.join(inbundle, "F0", name) tofile = os.path.join(outdir, name) os.link(fromfile, tofile) else: # Must read and rewrite data # First we read the ID's from frame 0 and N if ulm: assert 'ID_0.ulm' in firstnames and 'ID_0.ulm' in names else: assert 'ID_0.pickle' in firstnames and 'ID_0.pickle' in names backend.nfrag = fragments0 f0_id, dummy = backend.read_split(os.path.join(inbundle, "F0"), "ID") backend.nfrag = fragments1 fn_id, fn_sizes = backend.read_split(indir, "ID") for name in firstnames: # Only look at each array, not each file if '_0.' not in name: continue if name not in names: # We need to load this array arrayname = name.split('_')[0] print(" Reading", arrayname) backend.nfrag = fragments0 f0_data, dummy = backend.read_split(os.path.join(inbundle, "F0"), arrayname) # Sort data f0_data[f0_id] = np.array(f0_data) # Unsort with new ordering f0_data = f0_data[fn_id] # Write it print(" Writing reshuffled", arrayname) pointer = 0 backend.nfrag = fragments1 for i, s in enumerate(fn_sizes): segment = f0_data[pointer:pointer+s] pointer += s backend.write(outdir, arrayname+"_{0}".format(i), segment) # Finally, write the number of frames f = open(os.path.join(outbundle, 'frames'), 'w') f.write(str(len(frames)) + '\n') f.close() # Helper functions def read_bundle_info(name): """Read global info about a bundle. Returns (metadata, nframes) """ if not os.path.isdir(name): raise IOError("No directory (bundle) named '%s' found." % (name,)) metaname = bestmetaname = os.path.join(name, 'metadata.json') if os.path.isfile(metaname): with open(metaname) as f: mdata = json.load(f) else: metaname = os.path.join(name, 'metadata') if os.path.isfile(metaname): with open(metaname, "rb") as f: mdata = pickle.load(f) else: raise IOError("'%s' does not appear to be a BundleTrajectory (no %s)" % (name, bestmetaname)) if 'format' not in mdata or mdata['format'] != 'BundleTrajectory': raise IOError("'%s' does not appear to be a BundleTrajectory" % (name,)) if mdata['version'] != 1: raise IOError("Cannot manipulate BundleTrajectories with version " "number %s" % (mdata['version'],)) f = open(os.path.join(name, "frames")) nframes = int(f.read()) if nframes == 0: raise IOError("'%s' is an empty BundleTrajectory" % (name,)) return mdata, nframes if __name__ == '__main__': import sys if len(sys.argv) < 3: print(__doc__) sys.exit() inname, outname = sys.argv[1:3] if len(sys.argv) > 3: start = int(sys.argv[3]) else: start = 0 if len(sys.argv) > 4: end = int(sys.argv[4]) else: end = None if len(sys.argv) > 5: step = int(sys.argv[5]) else: step = 1 copy_frames(inname, outname, start, end, step, verbose=1) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/bundletrajectory.py000066400000000000000000001261021316323560300251020ustar00rootroot00000000000000from __future__ import print_function """bundletrajectory - a module for I/O from large MD simulations. The BundleTrajectory class writes trajectory into a directory with the following structure:: filename.bundle (dir) metadata.pickle Data about the file format, and about which data is present. state.pickle The number of frames F0 (dir) Frame number 0 small.pickle Small data structures in a dictionary (pbc, cell, ...) numbers.pickle Atomic numbers positions.pickle Positions momenta.pickle Momenta ... F1 (dir) """ import ase.parallel from ase.parallel import paropen from ase.calculators.singlepoint import (SinglePointCalculator, PropertyNotImplementedError) from ase.io.ulm import open as ulmopen import numpy as np import os import sys import shutil import time # The system json module causes memory leaks! Use ase's own. # import json from ase.io import jsonio try: import cPickle as pickle # Need efficient pickle if using Python 2 except ImportError: import pickle # Python 3 pickle is efficient. import collections # We would like to use an OrderedDict for nice printing try: from collections import OrderedDict as odict except ImportError: odict = dict class BundleTrajectory: """Reads and writes atoms into a .bundle directory. The BundleTrajectory is an alternative way of storing trajectories, intended for large-scale molecular dynamics simulations, where a single flat file becomes unwieldy. Instead, the data is stored in directory, a 'bundle' (the name bundle is inspired from bundles in Mac OS, which are really just directories the user is supposed to think of as a single file-like unit). Parameters: filename: The name of the directory. Preferably ending in .bundle. mode (optional): The file opening mode. 'r' means open for reading, 'w' for writing and 'a' for appending. Default: 'r'. If opening in write mode, and the filename already exists, the old file is renamed to .bak (any old .bak file is deleted), except if the existing file is empty. atoms (optional): The atoms that will be written. Can only be specified in write or append mode. If not specified, the atoms must be given as an argument to the .write() method instead. backup=True: Use backup=False to disable renaming of an existing file. backend='ulm': Request a backend. Supported backends are 'pickle' and 'ulm'. Only honored when writing. singleprecision=False: Store floating point data in single precision (ulm backend only). """ slavelog = True # Log from all nodes def __init__(self, filename, mode='r', atoms=None, backup=True, backend='ulm', singleprecision=False): self.state = 'constructing' self.filename = filename self.pre_observers = [] # callback functions before write is performed self.post_observers = [] # callback functions after write is performed self.master = ase.parallel.rank == 0 self.extra_data = [] self.singleprecision = singleprecision self._set_defaults() if mode == 'r': if atoms is not None: raise ValueError('You cannot specify atoms in read mode.') self._open_read() elif mode == 'w': self._open_write(atoms, backup, backend) elif mode == 'a': self._open_append(atoms) else: raise ValueError('Unknown mode: ' + str(mode)) def _set_defaults(self): "Set default values for internal parameters." self.version = 1 self.subtype = 'normal' # self.backend_name = 'pickle' self.datatypes = {'positions': True, 'numbers': 'once', 'tags': 'once', 'masses': 'once', 'momenta': True, 'forces': True, 'energy': True, 'energies': False, 'stress': False, 'magmoms': True} def _set_backend(self, backend): """Set the backed doing the actual I/O.""" if backend is not None: self.backend_name = backend if self.backend_name == 'pickle': self.backend = PickleBundleBackend(self.master) elif self.backend_name == 'ulm': self.backend = UlmBundleBackend(self.master, self.singleprecision) else: raise NotImplementedError( 'This version of ASE cannot use BundleTrajectory ' 'with backend "%s"' % self.backend_name) def write(self, atoms=None): """Write the atoms to the file. If the atoms argument is not given, the atoms object specified when creating the trajectory object is used. """ # Check that we are in write mode if self.state == 'prewrite': self.state = 'write' assert self.nframes == 0 elif self.state != 'write': raise RuntimeError('Cannot write in ' + self.state + ' mode.') if atoms is None: atoms = self.atoms for image in atoms._images_(): self._write_atoms(image) def _write_atoms(self, atoms): # OK, it is a real atoms object. Write it. self._call_observers(self.pre_observers) self.log('Beginning to write frame ' + str(self.nframes)) framedir = self._make_framedir(self.nframes) # Check which data should be written the first time: # Modify datatypes so any element of type 'once' becomes true # for the first frame but false for subsequent frames. datatypes = {} for k, v in self.datatypes.items(): if v == 'once': v = (self.nframes == 0) datatypes[k] = v # Write 'small' data structures. They are written jointly. smalldata = {'pbc': atoms.get_pbc(), 'cell': atoms.get_cell(), # GLOBAL number of atoms: 'natoms': atoms.get_number_of_atoms(), 'constraints': atoms.constraints} if datatypes.get('energy'): try: smalldata['energy'] = atoms.get_potential_energy() except (RuntimeError, PropertyNotImplementedError): self.datatypes['energy'] = False if datatypes.get('stress'): try: smalldata['stress'] = atoms.get_stress() except PropertyNotImplementedError: self.datatypes['stress'] = False self.backend.write_small(framedir, smalldata) # Write the large arrays. if datatypes.get('positions'): self.backend.write(framedir, 'positions', atoms.get_positions()) if datatypes.get('numbers'): self.backend.write(framedir, 'numbers', atoms.get_atomic_numbers()) if datatypes.get('tags'): if atoms.has('tags'): self.backend.write(framedir, 'tags', atoms.get_tags()) else: self.datatypes['tags'] = False if datatypes.get('masses'): if atoms.has('masses'): self.backend.write(framedir, 'masses', atoms.get_masses()) else: self.datatypes['masses'] = False if datatypes.get('momenta'): if atoms.has('momenta'): self.backend.write(framedir, 'momenta', atoms.get_momenta()) else: self.datatypes['momenta'] = False if datatypes.get('magmoms'): if atoms.has('initial_magmoms'): self.backend.write(framedir, 'magmoms', atoms.get_initial_magnetic_moments()) else: self.datatypes['magmoms'] = False if datatypes.get('forces'): try: x = atoms.get_forces() except (RuntimeError, PropertyNotImplementedError): self.datatypes['forces'] = False else: self.backend.write(framedir, 'forces', x) del x if datatypes.get('energies'): try: x = atoms.get_potential_energies() except (RuntimeError, PropertyNotImplementedError): self.datatypes['energies'] = False else: self.backend.write(framedir, 'energies', x) del x # Write any extra data for (label, source, once) in self.extra_data: if self.nframes == 0 or not once: if source is not None: x = source() else: x = atoms.get_array(label) self.backend.write(framedir, label, x) del x if once: self.datatypes[label] = 'once' else: self.datatypes[label] = True # Finally, write metadata if it is the first frame if self.nframes == 0: metadata = {'datatypes': self.datatypes} self._write_metadata(metadata) self._write_nframes(self.nframes + 1) self._call_observers(self.post_observers) self.log('Done writing frame ' + str(self.nframes)) self.nframes += 1 def select_data(self, data, value): """Selects if a given data type should be written. Data can be written in every frame (specify True), in the first frame only (specify 'only') or not at all (specify False). Not all data types support the 'only' keyword, if not supported it is interpreted as True. The following data types are supported, the letter in parenthesis indicates the default: positions (T), numbers (O), tags (O), masses (O), momenta (T), forces (T), energy (T), energies (F), stress (F), magmoms (T) If a given property is not present during the first write, it will be not be saved at all. """ if value not in (True, False, 'once'): raise ValueError('Unknown write mode') if data not in self.datatypes: raise ValueError('Unsupported data type: ' + data) self.datatypes[data] = value def set_extra_data(self, name, source=None, once=False): """Adds extra data to be written. Parameters: name: The name of the data. source (optional): If specified, a callable object returning the data to be written. If not specified it is instead assumed that the atoms contains the data as an array of the same name. once (optional): If specified and True, the data will only be written to the first frame. """ self.extra_data.append((name, source, once)) def close(self): "Closes the trajectory." self.state = 'closed' lf = getattr(self, 'logfile', None) self.backend.close(log=lf) if lf is not None: lf.close() del self.logfile def log(self, text): """Write to the log file in the bundle. Logging is only possible in write/append mode. This function is mainly for internal use, but can also be called by the user. """ if not (self.master or self.slavelog): return text = time.asctime() + ': ' + text if hasattr(self, 'logfile'): # Logging enabled if self.logfile is None: # Logfile not yet open try: self.logdata.append(text) except AttributeError: self.logdata = [text] else: self.logfile.write(text + '\n') self.logfile.flush() else: raise RuntimeError('Cannot write to log file in mode ' + self.state) # __getitem__ is the main reading method. def __getitem__(self, n): return self._read(n) def _read(self, n): """Read an atoms object from the BundleTrajectory.""" if self.state != 'read': raise IOError('Cannot read in %s mode' % (self.state,)) if n < 0: n += self.nframes if n < 0 or n >= self.nframes: raise IndexError('Trajectory index %d out of range [0, %d[' % (n, self.nframes)) framedir = os.path.join(self.filename, 'F' + str(n)) framezero = os.path.join(self.filename, 'F0') smalldata = self.backend.read_small(framedir) data = {} data['pbc'] = smalldata['pbc'] data['cell'] = smalldata['cell'] data['constraint'] = smalldata['constraints'] if self.subtype == 'split': self.backend.set_fragments(smalldata['fragments']) self.atom_id, dummy = self.backend.read_split(framedir, 'ID') else: self.atom_id = None atoms = ase.Atoms(**data) natoms = smalldata['natoms'] for name in ('positions', 'numbers', 'tags', 'masses', 'momenta'): if self.datatypes.get(name): atoms.arrays[name] = self._read_data(framezero, framedir, name, self.atom_id) assert len(atoms.arrays[name]) == natoms # Create the atoms object if self.datatypes.get('energy'): if self.datatypes.get('forces'): forces = self.backend.read(framedir, 'forces') else: forces = None if self.datatypes.get('magmoms'): magmoms = self.backend.read(framedir, 'magmoms') else: magmoms = None calc = SinglePointCalculator(atoms, energy=smalldata.get('energy'), forces=forces, stress=smalldata.get('stress'), magmoms=magmoms) atoms.set_calculator(calc) return atoms def read_extra_data(self, name, n=0): """Read extra data stored alongside the atoms. Currently only used to read data stored by an NPT dynamics object. The data is not associated with individual atoms. """ if self.state != 'read': raise IOError('Cannot read extra data in %s mode' % (self.state,)) # Handle negative n. if n < 0: n += self.nframes if n < 0 or n >= self.nframes: raise IndexError('Trajectory index %d out of range [0, %d[' % (n, self.nframes)) framedir = os.path.join(self.filename, 'F' + str(n)) framezero = os.path.join(self.filename, 'F0') return self._read_data(framezero, framedir, name, self.atom_id) def _read_data(self, f0, f, name, atom_id): "Read single data item." if self.subtype == 'normal': if self.datatypes[name] == 'once': d = self.backend.read(f0, name) else: d = self.backend.read(f, name) elif self.subtype == 'split': if self.datatypes[name] == 'once': d, issplit = self.backend.read_split(f0, name) atom_id, dummy = self.backend.read_split(f0, 'ID') else: d, issplit = self.backend.read_split(f, name) if issplit: assert atom_id is not None assert len(d) == len(atom_id) d[atom_id] = np.array(d) return d def __len__(self): return self.nframes def _open_log(self): if not (self.master or self.slavelog): return if self.master: lfn = os.path.join(self.filename, 'log.txt') else: lfn = os.path.join(self.filename, ('log-node%d.txt' % (ase.parallel.rank,))) self.logfile = open(lfn, 'a', 1) # Append to log if it exists. if hasattr(self, 'logdata'): for text in self.logdata: self.logfile.write(text + '\n') self.logfile.flush() del self.logdata def _open_write(self, atoms, backup, backend): "Open a bundle trajectory for writing." self._set_backend(backend) self.logfile = None # enable delayed logging self.atoms = atoms if os.path.exists(self.filename): # The output directory already exists. if not self.is_bundle(self.filename): raise IOError( 'Filename "' + self.filename + '" already exists, but is not a BundleTrajectory.' + 'Cowardly refusing to remove it.') ase.parallel.barrier() # all must have time to see it exists if self.is_empty_bundle(self.filename): ase.parallel.barrier() self.log('Deleting old "%s" as it is empty' % (self.filename,)) self.delete_bundle(self.filename) elif not backup: ase.parallel.barrier() self.log('Deleting old "%s" as backup is turned off.' % (self.filename,)) self.delete_bundle(self.filename) else: ase.parallel.barrier() # Make a backup file bakname = self.filename + '.bak' if os.path.exists(bakname): ase.parallel.barrier() # All must see it exists self.log('Deleting old backup file "%s"' % (bakname,)) self.delete_bundle(bakname) self.log('Renaming "%s" to "%s"' % (self.filename, bakname)) self._rename_bundle(self.filename, bakname) # Ready to create a new bundle. ase.parallel.barrier() self.log('Creating new "%s"' % (self.filename,)) self._make_bundledir(self.filename) self.state = 'prewrite' self._write_metadata({}) self._write_nframes(0) # Mark new bundle as empty self._open_log() self.nframes = 0 def _open_read(self): "Open a bundle trajectory for reading." if not os.path.exists(self.filename): raise IOError('File not found: ' + self.filename) if not self.is_bundle(self.filename): raise IOError('Not a BundleTrajectory: ' + self.filename) self.state = 'read' # Read the metadata metadata = self._read_metadata() self.metadata = metadata if metadata['version'] > self.version: raise NotImplementedError( 'This version of ASE cannot read a BundleTrajectory version ' + str(metadata['version'])) if metadata['subtype'] not in ('normal', 'split'): raise NotImplementedError( 'This version of ASE cannot read BundleTrajectory subtype ' + metadata['subtype']) self.subtype = metadata['subtype'] if metadata['backend'] == 'ulm': self.singleprecision = metadata['ulm.singleprecision'] self._set_backend(metadata['backend']) self.nframes = self._read_nframes() if self.nframes == 0: raise IOError('Empty BundleTrajectory') self.datatypes = metadata['datatypes'] try: self.pythonmajor = metadata['python_ver'][0] except KeyError: self.pythonmajor = 2 # Assume written with Python 2. # We need to know if we are running Python 3.X and try to read # a bundle written with Python 2.X self.backend.readpy2 = (sys.version_info[0] >= 3 and self.pythonmajor == 2) self.state = 'read' def _open_append(self, atoms): if not os.path.exists(self.filename): # OK, no old bundle. Open as for write instead. ase.parallel.barrier() self._open_write(atoms, False) return if not self.is_bundle(self.filename): raise IOError('Not a BundleTrajectory: ' + self.filename) self.state = 'read' metadata = self._read_metadata() self.metadata = metadata if metadata['version'] != self.version: raise NotImplementedError( 'Cannot append to a BundleTrajectory version ' '%s (supported version is %s)' % (str(metadata['version']), str(self.version))) if metadata['subtype'] not in ('normal', 'split'): raise NotImplementedError( 'This version of ASE cannot append to BundleTrajectory ' 'subtype ' + metadata['subtype']) self.subtype = metadata['subtype'] if metadata['backend'] == 'ulm': self.singleprecision = metadata['ulm.singleprecision'] self._set_backend(metadata['backend']) self.nframes = self._read_nframes() self._open_log() self.log('Opening "%s" in append mode (nframes=%i)' % (self.filename, self.nframes)) self.state = 'write' self.atoms = atoms def _write_nframes(self, n): "Write the number of frames in the bundle." assert self.state == 'write' or self.state == 'prewrite' f = paropen(os.path.join(self.filename, 'frames'), 'w') f.write(str(n) + '\n') f.close() def _read_nframes(self): "Read the number of frames." f = open(os.path.join(self.filename, 'frames')) n = int(f.read()) return n def _write_metadata(self, metadata): """Write the metadata file of the bundle. Modifies the medadata dictionary! """ # Add standard fields that must always be present. assert self.state == 'write' or self.state == 'prewrite' metadata['format'] = 'BundleTrajectory' metadata['version'] = self.version metadata['subtype'] = self.subtype metadata['backend'] = self.backend_name if self.backend_name == 'ulm': metadata['ulm.singleprecision'] = self.singleprecision metadata['python_ver'] = tuple(sys.version_info) f = paropen(os.path.join(self.filename, 'metadata.json'), 'w') fido = jsonio.encode(metadata) f.write(fido) f.close() # Write a compatibility .pickle file - will be picked up by # older versions of ASE and result in a meaningful error. metadata['comment'] = ('For compatibility only - ' 'see metadata.json instead.') f = paropen(os.path.join(self.filename, 'metadata'), 'wb') pickle.dump(metadata, f, protocol=0) del metadata['comment'] f.close() def _read_metadata(self): """Read the metadata.""" assert self.state == 'read' metafile = os.path.join(self.filename, 'metadata.json') if os.path.exists(metafile): f = open(metafile, 'r') metadata = jsonio.decode(f.read()) else: metafile = os.path.join(self.filename, 'metadata') f = open(metafile, 'rb') metadata = pickle.load(f) f.close() return metadata @staticmethod def is_bundle(filename): """Check if a filename exists and is a BundleTrajectory.""" if not os.path.isdir(filename): return False metaname = os.path.join(filename, 'metadata.json') if os.path.isfile(metaname): f = open(metaname, 'r') mdata = jsonio.decode(f.read()) f.close() else: metaname = os.path.join(filename, 'metadata') if os.path.isfile(metaname): f = open(metaname, 'rb') mdata = pickle.load(f) f.close() else: return False try: return mdata['format'] == 'BundleTrajectory' except KeyError: return False @staticmethod def is_empty_bundle(filename): """Check if a filename is an empty bundle. Assumes that it is a bundle.""" f = open(os.path.join(filename, 'frames'), 'rb') nframes = int(f.read()) f.close() # File may be removed by the master immediately after this. ase.parallel.barrier() return nframes == 0 @classmethod def delete_bundle(cls, filename): "Deletes a bundle." if ase.parallel.rank == 0: # Only the master deletes if not cls.is_bundle(filename): raise IOError( 'Cannot remove "%s" as it is not a bundle trajectory.' % (filename,)) if os.path.islink(filename): # A symbolic link to a bundle. Only remove the link. os.remove(filename) else: # A real bundle shutil.rmtree(filename) else: # All other tasks wait for the directory to go away. while os.path.exists(filename): time.sleep(1) # The master may not proceed before all tasks have seen the # directory go away, as it might otherwise create a new bundle # with the same name, fooling the wait loop in _make_bundledir. ase.parallel.barrier() def _rename_bundle(self, oldname, newname): "Rename a bundle. Used to create the .bak" if self.master: os.rename(oldname, newname) else: while os.path.exists(oldname): time.sleep(1) # The master may not proceed before all tasks have seen the # directory go away. ase.parallel.barrier() def _make_bundledir(self, filename): """Make the main bundle directory. Since all MPI tasks might write to it, all tasks must wait for the directory to appear. """ self.log('Making directory ' + filename) assert not os.path.isdir(filename) ase.parallel.barrier() if self.master: os.mkdir(filename) else: i = 0 while not os.path.isdir(filename): time.sleep(1) i += 1 if i > 10: self.log('Waiting %d seconds for %s to appear!' % (i, filename)) def _make_framedir(self, frame): """Make subdirectory for the frame. As only the master writes to it, no synchronization between MPI tasks is necessary. """ framedir = os.path.join(self.filename, 'F' + str(frame)) if self.master: self.log('Making directory ' + framedir) os.mkdir(framedir) return framedir def pre_write_attach(self, function, interval=1, *args, **kwargs): """Attach a function to be called before writing begins. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.pre_observers.append((function, interval, args, kwargs)) def post_write_attach(self, function, interval=1, *args, **kwargs): """Attach a function to be called after writing ends. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.post_observers.append((function, interval, args, kwargs)) def _call_observers(self, obs): "Call pre/post write observers." for function, interval, args, kwargs in obs: if (self.nframes + 1) % interval == 0: function(*args, **kwargs) class UlmBundleBackend: """Backend for BundleTrajectories stored as ASE Ulm files.""" def __init__(self, master, singleprecision): # Store if this backend will actually write anything self.writesmall = master self.writelarge = master self.singleprecision = singleprecision # Integer data may be downconverted to the following types self.integral_dtypes = ['uint8', 'int8', 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64'] # Dict comprehensions not supported in Python 2.6 :-( self.int_dtype = dict((k, getattr(np, k)) for k in self.integral_dtypes) self.int_minval = dict((k, np.iinfo(self.int_dtype[k]).min) for k in self.integral_dtypes) self.int_maxval = dict((k, np.iinfo(self.int_dtype[k]).max) for k in self.integral_dtypes) self.int_itemsize = dict((k, np.dtype(self.int_dtype[k]).itemsize) for k in self.integral_dtypes) def write_small(self, framedir, smalldata): "Write small data to be written jointly." if self.writesmall: f = ulmopen(os.path.join(framedir, 'smalldata.ulm'), 'w') f.write(**smalldata) f.close() def write(self, framedir, name, data): "Write data to separate file." if self.writelarge: shape = data.shape dtype = str(data.dtype) stored_as = dtype all_identical = False # Check if it a type that can be stored with less space if np.issubdtype(data.dtype, np.integer): # An integer type, we may want to convert minval = data.min() maxval = data.max() # ulm cannot write np.bool_: all_identical = bool(minval == maxval) if all_identical: data = int(data.flat[0]) # Convert to standard integer else: for typ in self.integral_dtypes: if (minval >= self.int_minval[typ] and maxval <= self.int_maxval[typ] and data.itemsize > self.int_itemsize[typ]): # Convert to smaller type stored_as = typ data = data.astype(self.int_dtype[typ]) elif data.dtype == np.float32 or data.dtype == np.float64: all_identical = bool(data.min() == data.max()) if all_identical: data = float(data.flat[0]) # Convert to standard float elif data.dtype == np.float64 and self.singleprecision: # Downconvert double to single precision stored_as = 'float32' data = data.astype(np.float32) fn = os.path.join(framedir, name + '.ulm') f = ulmopen(fn, 'w') f.write(shape=shape, dtype=dtype, stored_as=stored_as, all_identical=all_identical, data=data) f.close() def read_small(self, framedir): "Read small data." f = ulmopen(os.path.join(framedir, 'smalldata.ulm'), 'r') data = f.asdict() f.close() return data def read(self, framedir, name): "Read data from separate file." fn = os.path.join(framedir, name + '.ulm') f = ulmopen(fn, 'r') if f.all_identical: # Only a single data value data = np.zeros(f.shape, dtype=getattr(np, f.dtype)) + f.data elif f.dtype == f.stored_as: # Easy, the array can be returned as-is. data = f.data else: # Cast the data back data = f.data.astype(getattr(np, f.dtype)) f.close() return data def read_info(self, framedir, name, split=None): """Read information about file contents without reading the data. Information is a dictionary containing as aminimum the shape and type. """ fn = os.path.join(framedir, name + '.ulm') if split is None or os.path.exists(fn): f = ulmopen(fn, 'r') info = odict() info['shape'] = f.shape info['type'] = f.dtype info['stored_as'] = f.stored_as info['identical'] = f.all_identical f.close() return info else: info = odict() for i in range(split): fn = os.path.join(framedir, name + '_' + str(i) + '.ulm') f = ulmopen(fn, 'r') if i == 0: info['shape'] = list(f.shape) info['type'] = f.dtype info['stored_as'] = f.stored_as info['identical'] = f.all_identical else: info['shape'][0] += f.shape[0] assert info['type'] == f.dtype info['identical'] = info['identical'] and f.all_identical f.close() info['shape'] = tuple(info['shape']) return info def set_fragments(self, nfrag): self.nfrag = nfrag def read_split(self, framedir, name): """Read data from multiple files. Falls back to reading from single file if that is how data is stored. Returns the data and an object indicating if the data was really read from split files. The latter object is False if not read from split files, but is an array of the segment length if split files were used. """ data = [] if os.path.exists(os.path.join(framedir, name + '.ulm')): # Not stored in split form! return (self.read(framedir, name), False) for i in range(self.nfrag): suf = '_%d' % (i,) data.append(self.read(framedir, name + suf)) seglengths = [len(d) for d in data] return (np.concatenate(data), seglengths) def close(self, log=None): """Close anything that needs to be closed by the backend. The default backend does nothing here. """ pass class PickleBundleBackend: """Backend for BundleTrajectories stored as pickle files.""" def __init__(self, master): # Store if this backend will actually write anything self.writesmall = master self.writelarge = master # To be overwritten after the backend is initialized self.readpy2 = False def write_small(self, framedir, smalldata): "Write small data to be written jointly." if self.writesmall: f = open(os.path.join(framedir, 'smalldata.pickle'), 'wb') pickle.dump(smalldata, f, -1) f.close() def write(self, framedir, name, data): "Write data to separate file." if self.writelarge: fn = os.path.join(framedir, name + '.pickle') f = open(fn, 'wb') try: info = (data.shape, str(data.dtype)) except AttributeError: info = None pickle.dump(info, f, -1) pickle.dump(data, f, -1) f.close() def read_small(self, framedir): "Read small data." f = open(os.path.join(framedir, 'smalldata.pickle'), 'rb') if self.readpy2: data = pickle.load(f, encoding='latin1') else: data = pickle.load(f) f.close() return data def read(self, framedir, name): "Read data from separate file." fn = os.path.join(framedir, name + '.pickle') f = open(fn, 'rb') if self.readpy2: pickle.load(f, encoding='latin1') # Discarded. data = pickle.load(f, encoding='latin1') else: pickle.load(f) # Discarded. data = pickle.load(f) f.close() return data def read_info(self, framedir, name, split=None): "Read information about file contents without reading the data." fn = os.path.join(framedir, name + '.pickle') if split is None or os.path.exists(fn): f = open(fn, 'rb') if self.readpy2: info = pickle.load(f, encoding='latin1') else: info = pickle.load(f) f.close() result = odict() result['shape'] = info[0] result['type'] = info[1] return result else: for i in range(split): fn = os.path.join(framedir, name + '_' + str(i) + '.pickle') f = open(fn, 'rb') if self.readpy2: info = pickle.load(f, encoding='latin1') else: info = pickle.load(f) f.close() if i == 0: shape = list(info[0]) dtype = info[1] else: shape[0] += info[0][0] assert dtype == info[1] result = odict() result['shape'] = info[0] result['type'] = info[1] return result def set_fragments(self, nfrag): self.nfrag = nfrag def read_split(self, framedir, name): """Read data from multiple files. Falls back to reading from single file if that is how data is stored. Returns the data and an object indicating if the data was really read from split files. The latter object is False if not read from split files, but is an array of the segment length if split files were used. """ data = [] if os.path.exists(os.path.join(framedir, name + '.pickle')): # Not stored in split form! return (self.read(framedir, name), False) for i in range(self.nfrag): suf = '_%d' % (i,) fn = os.path.join(framedir, name + suf + '.pickle') f = open(fn, 'rb') if self.readpy2: pickle.load(f, encoding='latin1') # Discarding the shape. data.append(pickle.load(f, encoding='latin1')) else: pickle.load(f) # Discarding the shape. data.append(pickle.load(f)) f.close() seglengths = [len(d) for d in data] return (np.concatenate(data), seglengths) def close(self, log=None): """Close anything that needs to be closed by the backend. The default backend does nothing here. """ pass def read_bundletrajectory(filename, index=-1): """Reads one or more atoms objects from a BundleTrajectory. Arguments: filename: str The name of the bundle (really a directory!) index: int An integer specifying which frame to read, or an index object for reading multiple frames. Default: -1 (reads the last frame). """ traj = BundleTrajectory(filename, mode='r') for i in range(*index.indices(len(traj))): yield traj[i] def write_bundletrajectory(filename, images): """Write image(s) to a BundleTrajectory. Write also energy, forces, and stress if they are already calculated. """ traj = BundleTrajectory(filename, mode='w') if hasattr(images, 'get_positions'): images = [images] for atoms in images: # Avoid potentially expensive calculations: calc = atoms.get_calculator() if hasattr(calc, 'calculation_required'): for quantity in ('energy', 'forces', 'stress', 'magmoms'): traj.select_data(quantity, not calc.calculation_required(atoms, [quantity])) traj.write(atoms) traj.close() def print_bundletrajectory_info(filename): """Prints information about a BundleTrajectory. Mainly intended to be called from a command line tool. """ if not BundleTrajectory.is_bundle(filename): raise ValueError('Not a BundleTrajectory!') if BundleTrajectory.is_empty_bundle(filename): print(filename, 'is an empty BundleTrajectory.') return # Read the metadata fn = os.path.join(filename, 'metadata.json') if os.path.exists(fn): f = open(fn, 'r') metadata = jsonio.decode(f.read()) else: fn = os.path.join(filename, 'metadata') f = open(fn, 'rb') metadata = pickle.load(f) f.close() print('Metadata information of BundleTrajectory "%s":' % (filename,)) for k, v in metadata.items(): if k != 'datatypes': print(" %s: %s" % (k, v)) f = open(os.path.join(filename, 'frames'), 'rb') nframes = int(f.read()) print('Number of frames: %i' % (nframes,)) print('Data types:') for k, v in metadata['datatypes'].items(): if v == 'once': print(' %s: First frame only.' % (k,)) elif v: print(' %s: All frames.' % (k,)) # Look at first frame if metadata['backend'] == 'pickle': backend = PickleBundleBackend(True) elif metadata['backend'] == 'ulm': backend = UlmBundleBackend(True, False) else: raise NotImplementedError('Backend %s not supported.' % (metadata['backend'],)) frame = os.path.join(filename, 'F0') small = backend.read_small(frame) print('Contents of first frame:') for k, v in small.items(): if k == 'constraints': if v: print(' %i constraints are present') else: print(' Constraints are absent.') elif k == 'pbc': print(' Periodic boundary conditions: %s' % (str(v),)) elif k == 'natoms': print(' Number of atoms: %i' % (v,)) elif hasattr(v, 'shape'): print(' %s: shape = %s, type = %s' % (k, str(v.shape), str(v.dtype))) if k == 'cell': print(' [[%12.6f, %12.6f, %12.6f],' % tuple(v[0])) print(' [%12.6f, %12.6f, %12.6f],' % tuple(v[1])) print(' [%12.6f, %12.6f, %12.6f]]' % tuple(v[2])) else: print(' %s: %s' % (k, str(v))) # Read info from separate files. if metadata['subtype'] == 'split': nsplit = small['fragments'] else: nsplit = False for k, v in metadata['datatypes'].items(): if v and k not in small: info = backend.read_info(frame, k, nsplit) infoline = ' %s: ' % (k,) for k, v in info.items(): infoline += '%s = %s, ' % (k, str(v)) infoline = infoline[:-2] + '.' # Fix punctuation. print(infoline) def main(): import optparse parser = optparse.OptionParser( usage='python -m ase.io.bundletrajectory ' 'a.bundle [b.bundle ...]', description='Print information about ' 'the contents of one or more bundletrajectories.') opts, args = parser.parse_args() for name in args: print_bundletrajectory_info(name) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/castep.py000066400000000000000000001447511316323560300230130ustar00rootroot00000000000000from __future__ import print_function # -*- coding: utf-8 -*- """This module defines I/O routines with CASTEP files. The key idea is that all function accept or return atoms objects. CASTEP specific parameters will be returned through the .calc attribute. """ import os import re import numpy as np import ase from ase.spacegroup import Spacegroup from ase.constraints import FixAtoms, FixCartesian, FixedLine from ase.parallel import paropen # independent unit management included here: # When high accuracy is required, this allows to easily pin down # unit conversion factors from different "unit definition systems" # (CODATA1986 for ase-3.6.0.2515 vs CODATA2002 for CASTEP 5.01). # # ase.units in in ase-3.6.0.2515 is based on CODATA1986 import ase.units units_ase = { 'hbar': ase.units._hbar * ase.units.J, 'Eh': ase.units.Hartree, 'kB': ase.units.kB, 'a0': ase.units.Bohr, 't0': ase.units._hbar * ase.units.J / ase.units.Hartree, 'c': ase.units._c, 'me': ase.units._me / ase.units._amu, 'Pascal': 1.0 / ase.units.Pascal} # CODATA1986 (included herein for the sake of completeness) # taken from # http://physics.nist.gov/cuu/Archive/1986RMP.pdf units_CODATA1986 = { 'hbar': 6.5821220E-16, # eVs 'Eh': 27.2113961, # eV 'kB': 8.617385E-5, # eV/K 'a0': 0.529177249, # A 'c': 299792458, # m/s 'e': 1.60217733E-19, # C 'me': 5.485799110E-4} # u # CODATA2002: default in CASTEP 5.01 # (-> check in more recent CASTEP in case of numerical discrepancies?!) # taken from # http://physics.nist.gov/cuu/Document/all_2002.pdf units_CODATA2002 = { 'hbar': 6.58211915E-16, # eVs 'Eh': 27.2113845, # eV 'kB': 8.617343E-5, # eV/K 'a0': 0.5291772108, # A 'c': 299792458, # m/s 'e': 1.60217653E-19, # C 'me': 5.4857990945E-4} # u # (common) derived entries for d in (units_CODATA1986, units_CODATA2002): d['t0'] = d['hbar'] / d['Eh'] # s d['Pascal'] = d['e'] * 1E30 # Pa __all__ = [ # routines for the generic io function 'read_castep', 'read_castep_castep', 'read_castep_castep_old', 'read_cell', 'read_castep_cell', 'read_geom', 'read_castep_geom', 'read_phonon', 'read_castep_phonon', # additional reads that still need to be wrapped 'read_md', 'read_param', 'read_seed', # write that is already wrapped 'write_castep_cell', # param write - in principle only necessary in junction with the calculator 'write_param'] def write_cell(filename, atoms, positions_frac=False, castep_cell=None, force_write=False): """ Wrapper function for the more generic write() functionality. Note that this is function is intended to maintain backwards-compatibility only. """ from ase.io import write write(filename, atoms, positions_frac=positions_frac, castep_cell=castep_cell, force_write=force_write) def write_castep_cell(fd, atoms, positions_frac=False, castep_cell=None, force_write=False): """ This CASTEP export function write minimal information to a .cell file. If the atoms object is a trajectory, it will take the last image. Note that function has been altered in order to require a filedescriptor rather than a filename. This allows to use the more generic write() function from formats.py Note that the "force_write" keywords has no effect currently. """ if atoms is None: print('Atoms object not initialized') return False if isinstance(atoms, list): if len(atoms) > 1: atoms = atoms[-1] # deprecated; should be handled on the more generic write() level # if os.path.isfile(filename) and not force_write: # print('ase.io.castep.write_param: Set optional argument') # print('force_write=True to overwrite %s.' % filename) # return False # fd = open(filename, 'w') fd.write('#######################################################\n') fd.write('#CASTEP cell file: %s\n' % fd.name) fd.write('#Created using the Atomic Simulation Environment (ASE)#\n') fd.write('#######################################################\n\n') fd.write('%BLOCK LATTICE_CART\n') cell = np.matrix(atoms.get_cell()) for line in atoms.get_cell(): fd.write(' %.10f %.10f %.10f\n' % tuple(line)) fd.write('%ENDBLOCK LATTICE_CART\n\n\n') if positions_frac: keyword = 'POSITIONS_FRAC' positions = np.array(atoms.get_positions() * cell.I) else: keyword = 'POSITIONS_ABS' positions = atoms.get_positions() if (hasattr(atoms, 'calc') and hasattr(atoms.calc, 'param') and hasattr(atoms.calc.param, 'task')): _spin_pol = any([getattr(atoms.calc.param, i).value for i in ['spin_polarized', 'spin_polarised']]) else: _spin_pol = True # Gather the data that will be used to generate the block pos_block_data = [] pos_block_format = '%s %8.6f %8.6f %8.6f' if atoms.has('castep_custom_species'): pos_block_data.append(atoms.get_array('castep_custom_species')) else: pos_block_data.append(atoms.get_chemical_symbols()) pos_block_data += [xlist for xlist in zip(*positions)] if atoms.get_initial_magnetic_moments().any() and _spin_pol: pos_block_data.append(atoms.get_initial_magnetic_moments()) pos_block_format += ' SPIN=%4.2f' pos_block = [(pos_block_format % line_data) for line_data in zip(*pos_block_data)] # Adding the CASTEP labels output if atoms.has('castep_labels'): labels = atoms.get_array('castep_labels') for l_i, label in enumerate(labels): # avoid empty labels that crash CASTEP runs if label and label != 'NULL': pos_block[l_i] += ' LABEL=%s' % label fd.write('%%BLOCK %s\n' % keyword) for line in pos_block: fd.write(' %s\n' % line) fd.write('%%ENDBLOCK %s\n\n' % keyword) # if atoms, has a CASTEP calculator attached, then only # write constraints if really necessary if (hasattr(atoms, 'calc') and hasattr(atoms.calc, 'param') and hasattr(atoms.calc.param, 'task')): task = atoms.calc.param.task if atoms.calc.param.task.value is None: suppress_constraints = True elif task.value.lower() not in [ 'geometryoptimization', # well, CASTEP understands US and UK english... 'geometryoptimisation', 'moleculardynamics', 'transitionstatesearch', 'phonon']: suppress_constraints = True else: suppress_constraints = False else: suppress_constraints = True constraints = atoms.constraints if len(constraints) and not suppress_constraints: fd.write('%BLOCK IONIC_CONSTRAINTS \n') count = 0 for constr in constraints: if (not isinstance(constr, FixAtoms) and not isinstance(constr, FixCartesian) and not isinstance(constr, FixedLine) and not suppress_constraints): print('Warning: you have constraints in your atoms, that are') print(' not supported by the CASTEP ase interface') break if isinstance(constr, FixAtoms): # sorry, for this complicated block # reason is that constraint.index can either # hold booleans or integers and in both cases # it is an numpy array, so no simple comparison works for n, val in enumerate(constr.index): if val.dtype.name.startswith('bool'): if not val: continue symbol = atoms.get_chemical_symbols()[n] nis = atoms.calc._get_number_in_species(n) elif val.dtype.name.startswith('int'): symbol = atoms.get_chemical_symbols()[val] nis = atoms.calc._get_number_in_species(val) else: raise UserWarning('Unrecognized index in' + ' constraint %s' % constr) fd.write('%6d %3s %3d 1 0 0 \n' % (count + 1, symbol, nis)) fd.write('%6d %3s %3d 0 1 0 \n' % (count + 2, symbol, nis)) fd.write('%6d %3s %3d 0 0 1 \n' % (count + 3, symbol, nis)) count += 3 elif isinstance(constr, FixCartesian): n = constr.a symbol = atoms.get_chemical_symbols()[n] nis = atoms.calc._get_number_in_species(n) # fix_cart = - constr.mask + 1 # just use the logical opposite fix_cart = np.logical_not(constr.mask) if fix_cart[0]: count += 1 fd.write('%6d %3s %3d 1 0 0 \n' % (count, symbol, nis)) if fix_cart[1]: count += 1 fd.write('%6d %3s %3d 0 1 0 \n' % (count, symbol, nis)) if fix_cart[2]: count += 1 fd.write('%6d %3s %3d 0 0 1 \n' % (count, symbol, nis)) elif isinstance(constr, FixedLine): n = constr.a symbol = atoms.get_chemical_symbols()[n] nis = atoms.calc._get_number_in_species(n) direction = constr.dir # print(direction) ((i1, v1), (i2, v2)) = sorted(enumerate(direction), key=lambda x: abs(x[1]), reverse=True)[:2] # print(sorted(enumerate(direction), key = lambda x:x[1])[:2]) # print(sorted(enumerate(direction), key = lambda x:x[1])) # print(v1) # print(v2) n1 = np.array([v2, v1, 0]) n1 = n1 / np.linalg.norm(n1) n2 = np.cross(direction, n1) count += 1 fd.write('%6d %3s %3d %f %f %f \n' % (count, symbol, nis, n1[0], n1[1], n1[2])) count += 1 fd.write('%6d %3s %3d %f %f %f \n' % (count, symbol, nis, n2[0], n2[1], n2[2])) fd.write('%ENDBLOCK IONIC_CONSTRAINTS \n') if castep_cell is None: if hasattr(atoms, 'calc') and hasattr(atoms.calc, 'cell'): castep_cell = atoms.calc.cell else: # fd.close() return True for option in castep_cell._options.values(): if option.value is not None: # print(option.value) if option.type == 'Block': fd.write('%%BLOCK %s\n' % option.keyword.upper()) fd.write(option.value) fd.write('\n%%ENDBLOCK %s\n\n' % option.keyword.upper()) else: fd.write('%s : %s\n\n' % (option.keyword.upper(), option.value)) # fd.close() return True def read_cell(filename, index=None): """ Wrapper function for the more generic read() functionality. Note that this is function is intended to maintain backwards-compatibility only. """ from ase.io import read return read(filename, index=index, format='castep-cell') def read_castep_cell(fd, index=None): """Read a .cell file and return an atoms object. Any value found that does not fit the atoms API will be stored in the atoms.calc attribute. This routine has been modified to also be able to read *.cell files even if there is no CASTEP installation or castep_keywords.py available. We wil then make use of a fallback-mode which basically just read atoms positions and unit cell information. This can very highly useful for visualization using the ASE gui. """ from ase.calculators.castep import Castep _fallback = False try: calc = Castep() except Exception as exception: print('read_cell: Warning - Was not able to initialize CASTEP ' 'calculator.') print(' This may be due to a non-existing ' '"castep.keywords.py"') print(' file or a non-existing CASTEP installation.') print(' Original error message appears below:') print('') print(' ' * 11 + exception.__str__().replace('\n', '\n' + ' ' * 11)) print('') print( ' Fallback-mode will be applied to provide at least the') print(' geometric information contained in the *.cell file.') calc = None _fallback = True # fd will be closed by embracing read() routine lines = fd.readlines() def get_tokens(lines, l, maxsplit=0, has_species=False): """Tokenizes one line of a *cell file.""" comment_chars = '#!;' separator_re = '[\s=:]+' while l < len(lines): line = lines[l].strip() if len(line) == 0 or line[0] in comment_chars: l += 1 continue else: # Remove comments line = re.split('[{0}]+'.format(comment_chars), line, 1)[0] # Tokenize # If we expect a species symbol to be in there, we take it out # first: if has_species: species, line = line.split(None, 1) tokens = [species] else: tokens = [] tokens += re.split(separator_re, line.strip(), maxsplit) return tokens, l + 1 tokens = '' # This print statement is definitely not necessary # print("read_cell: Warning - get_tokens has not found any more tokens") return tokens, l lat = [] have_lat = False pos = [] spec = [] # Here we extract all the possible additional info # These are marked by their type add_info = { 'SPIN': float, 'MAGMOM': float, 'LABEL': str, } add_info_arrays = dict((k, []) for k in add_info) # Array for custom species (a CASTEP special thing) # Usually left unused custom_species = None # Spacegroup, only if SYMMETRY_OPS is found atoms_spg = None # A convenient function that extracts this info from a line fragment def get_add_info(ai_arrays, line=''): re_keys = '({0})'.format('|'.join(add_info.keys())) ai_dict = {} sline = re.split(re_keys, line, flags=re.IGNORECASE) for t_i, tok in enumerate(sline): if tok in add_info: try: ai_dict[tok] = re.split('[:=]', sline[t_i + 1], maxsplit=1)[1].strip() except IndexError: ai_dict[tok] = None # Then turn these into values into the arrays for k in ai_arrays: if k not in ai_dict or ai_dict[k] is None: ai_arrays[k].append({str: 'NULL', float: 0.0, }[add_info[k]]) else: ai_arrays[k].append(add_info[k](ai_dict[k])) constraints = [] raw_constraints = {} have_pos = False pos_frac = False l = 0 while l < len(lines): tokens, l = get_tokens(lines, l) if not tokens: continue elif tokens[0].upper() == '%BLOCK': block_name = tokens[1].upper() if block_name == 'LATTICE_CART' and not have_lat: tokens, l = get_tokens(lines, l) if len(tokens) == 1: print('read_cell: Warning - ignoring unit specifier in') print('%BLOCK LATTICE_CART (assuming Angstrom instead)') tokens, l = get_tokens(lines, l) for _ in range(3): lat_vec = [float(a) for a in tokens[0:3]] lat.append(lat_vec) tokens, l = get_tokens(lines, l) if tokens[0].upper() != '%ENDBLOCK': print('read_cell: Warning - ignoring more than three') print('lattice vectors in invalid %BLOCK LATTICE_CART') print('%s ...' % tokens[0].upper()) have_lat = True elif block_name == 'LATTICE_ABC' and not have_lat: tokens, l = get_tokens(lines, l) if len(tokens) == 1: print('read_cell: Warning - ignoring unit specifier in') print('%BLOCK LATTICE_ABC (assuming Angstrom instead)') tokens, l = get_tokens(lines, l) a, b, c = map(float, tokens[0:3]) tokens, l = get_tokens(lines, l) alpha, beta, gamma = [np.radians(float(phi)) for phi in tokens[0:3]] tokens, l = get_tokens(lines, l) if tokens[0].upper() != '%ENDBLOCK': print('read_cell: Warning - ignoring additional lines in') print('invalid %BLOCK LATTICE_ABC') lat_a = [a, 0, 0] lat_b = [b * np.cos(gamma), b * np.sin(gamma), 0] lat_c1 = c * np.cos(beta) lat_c2 = c * ((np.cos(alpha) - np.cos(beta) * np.cos(gamma)) / np.sin(gamma)) lat_c3 = np.sqrt(c * c - lat_c1 * lat_c1 - lat_c2 * lat_c2) lat_c = [lat_c1, lat_c2, lat_c3] lat = [lat_a, lat_b, lat_c] have_lat = True elif block_name in ('POSITIONS_ABS', 'POSITIONS_FRAC') and not have_pos: pos_frac = (block_name == 'POSITIONS_FRAC') if not pos_frac: # Check for units l_start = l tokens, l = get_tokens(lines, l) if len(tokens) == 1: print( 'read_cell: Warning - ignoring unit specifier in') print( '%BLOCK POSITIONS_ABS(assuming Angstrom instead)') else: l = l_start # fix to be able to read initial spin assigned on the atoms tokens, l = get_tokens(lines, l, maxsplit=4, has_species=True) while len(tokens) >= 4: # Now, process the whole 'species' thing spec_custom = tokens[0].split(':', 1) elem = spec_custom[0] if len(spec_custom) > 1 and custom_species is None: # Add it to the custom info! custom_species = list(spec) spec.append(elem) if custom_species is not None: custom_species.append(tokens[0]) pos.append([float(p) for p in tokens[1:4]]) if len(tokens) > 4: get_add_info(add_info_arrays, tokens[4]) else: get_add_info(add_info_arrays) tokens, l = get_tokens(lines, l, maxsplit=4, has_species=True) if tokens[0].upper() != '%ENDBLOCK': print('read_cell: Warning - ignoring invalid lines in') print('%%BLOCK %s:\n\t %s' % (block_name, tokens)) have_pos = True elif block_name == 'SPECIES_POT': if not _fallback: tokens, l = get_tokens(lines, l, has_species=True) while tokens and not tokens[0].upper() == '%ENDBLOCK': if len(tokens) == 2: calc.cell.species_pot = tuple(tokens) tokens, l = get_tokens(lines, l, has_species=True) elif block_name == 'IONIC_CONSTRAINTS': while True: if tokens and tokens[0].upper() == '%ENDBLOCK': break tokens, l = get_tokens(lines, l) if not len(tokens) == 6: continue _, species, nic, x, y, z = tokens # convert xyz to floats x = float(x) y = float(y) z = float(z) nic = int(nic) if (species, nic) not in raw_constraints: raw_constraints[(species, nic)] = [] raw_constraints[(species, nic)].append(np.array( [x, y, z])) elif block_name == 'SYMMETRY_OPS': # Parse the symmetry operations, create a spacegroup rotations = [] translations = [] while tokens[0].upper() != '%ENDBLOCK': # Read in blocks of four for i in range(4): tokens, l = get_tokens(lines, l) if tokens[0].upper() == '%ENDBLOCK': break if i == 0: rotations.append([]) if i < 3: rotations[-1].append([float(x) for x in tokens[:3]]) else: translations.append([float(x) for x in tokens[:3]]) rotations = np.sort(rotations, axis=0) translations = np.sort(translations, axis=0) if rotations.shape[1:] != (3, 3) or \ translations.shape[1:] != (3,): print('Warning: could not parse SYMMETRY_OPS' ' block properly, skipping') continue # Now on to find the actual symmetry! for spg_n in range(1, 231): test_spg = Spacegroup(spg_n) test_symops = test_spg.get_op() test_symops[0].sort(axis=0) test_symops[1].sort(axis=0) # And test! try: found = np.allclose(test_symops[0], rotations) and \ np.allclose(test_symops[1], translations) except ValueError: found = False if found: # We got it! atoms_spg = test_spg if atoms_spg is None: # All failed... print('Could not identify Spacegroup from SYMMETRY_OPS,' ' skipping') else: calc.__setattr__(block_name, (rotations, translations)) else: print('Warning: the keyword %s is not' % block_name) print(' interpreted in cell files') # Just collect all lines block_lines = [] while l < len(lines): tokens, l = get_tokens(lines, l) if tokens[0].upper() == '%ENDBLOCK': break else: block_lines.append(lines[l-1].strip()) if not _fallback: try: calc.__setattr__(block_name, block_lines) except: print('Problem setting calc.cell.%s' % (block_name)) raise else: key = tokens[0] value = ' '.join(tokens[1:]) if not _fallback: try: calc.__setattr__(key, value) except: print('Problem setting calc.cell.%s = %s' % (key, value)) raise # Get the relevant additional info magmom = np.array(add_info_arrays['SPIN']) # SPIN or MAGMOM are alternative keywords magmom = np.where(magmom != 0, magmom, add_info_arrays['MAGMOM']) labels = np.array(add_info_arrays['LABEL']) if pos_frac: atoms = ase.Atoms( calculator=calc, cell=lat, pbc=True, scaled_positions=pos, symbols=spec, magmoms=magmom) else: atoms = ase.Atoms( calculator=calc, cell=lat, pbc=True, positions=pos, symbols=spec, magmoms=magmom) # Spacegroup... if atoms_spg is not None: atoms.info['spacegroup'] = atoms_spg atoms.new_array('castep_labels', labels) if custom_species is not None: atoms.new_array('castep_custom_species', np.array(custom_species)) fixed_atoms = [] for (species, nic), value in raw_constraints.items(): absolute_nr = atoms.calc._get_absolute_number(species, nic) if len(value) == 3: fixed_atoms.append(absolute_nr) elif len(value) == 2: constraint = ase.constraints.FixedLine( a=absolute_nr, direction=np.cross(value[0], value[1])) constraints.append(constraint) elif len(value) == 1: # catch cases in which constraints are given in a single line in # the cell file # if np.count_nonzero(value[0]) == 3: # fixed_atoms.append(absolute_nr) # elif np.count_nonzero(value[0]) == 2: # # in this case we need a FixedLine instance # # it is initialized with the atom's index # constraint = ase.constraints.FixedLine(a=absolute_nr, # direction=[not v for v in value[0]]) # constraints.append(constraint) # else: # I do not think you can have a fixed position of a fixed # line with only one constraint -- JML constraint = ase.constraints.FixedPlane( a=absolute_nr, direction=np.array(value[0], dtype=np.float32)) constraints.append(constraint) else: print('Error: Found %s statements attached to atoms %s' % (len(value), absolute_nr)) # we need to sort the fixed atoms list in order not to raise an assertion # error in FixAtoms if fixed_atoms: constraints.append( ase.constraints.FixAtoms(indices=sorted(fixed_atoms))) if constraints: atoms.set_constraint(constraints) if not _fallback: # needs to go here again to have the constraints in # atoms.calc.atoms.constraints as well atoms.calc.atoms = atoms atoms.calc.push_oldstate() return atoms # this actually does not belong here # think how one could join this with # the ase.calculators.castep.Castep.read() # in the future! # --> has been done (see read_castep_new()) # but not failsave yet! def read_castep(filename, index=None): """ Wrapper function for the more generic read() functionality. Note that this is function is intended to maintain backwards-compatibility only. """ from ase.io import read return read(filename, index=index, format='castep-castep') def read_castep_castep(fd, index=None): """ Reads a .castep file and returns an atoms object. The calculator information will be stored in the calc attribute. There is no use of the "index" argument as of now, it is just inserted for convenience to comply with the generic "read()" in ase.io Please note that this routine will return an atom ordering as found within the castep file. This means that the species will be ordered by ascending atomic numbers. The atoms witin a species are ordered as given in the original cell file. Note: This routine returns a single atoms_object only, the last configuration in the file. Yet, if you want to parse an MD run, use the novel function `read_md()` """ from ase.calculators.castep import Castep try: calc = Castep() except Exception as e: # No CASTEP keywords found? print('WARNING:\n{0}\nUsing fallback .castep reader...'.format(e)) # Fall back on the old method return read_castep_castep_old(fd, index) calc.read(castep_file=fd) # now we trick the calculator instance such that we can savely extract # energies and forces from this atom. Basically what we do is to trick the # internal routine calculation_required() to always return False such that # we do not need to re-run a CASTEP calculation. # # Probably we can solve this with a flag to the read() routine at some # point, but for the moment I do not want to change too much in there. calc._old_atoms = calc.atoms calc._old_param = calc.param calc._old_cell = calc.cell return [calc.atoms] # Returning in the form of a list for next() def read_castep_castep_old(fd, index=None): """ DEPRECATED Now replaced by ase.calculators.castep.Castep.read(). Left in for future reference and backwards compatibility needs, as well as a fallback for when castep_keywords.py can't be created. Reads a .castep file and returns an atoms object. The calculator information will be stored in the calc attribute. If more than one SCF step is found, a list of all steps will be stored in the traj attribute. Note that the index argument has no effect as of now. Please note that this routine will return an atom ordering as found within the castep file. This means that the species will be ordered by ascending atomic numbers. The atoms witin a species are ordered as given in the original cell file. """ from ase.calculators.singlepoint import SinglePointCalculator lines = fd.readlines() traj = [] energy_total = None energy_0K = None for i, line in enumerate(lines): if 'NB est. 0K energy' in line: energy_0K = float(line.split()[6]) # support also for dispersion correction elif 'NB dispersion corrected est. 0K energy*' in line: energy_0K = float(line.split()[-2]) elif 'Final energy, E' in line: energy_total = float(line.split()[4]) elif 'Dispersion corrected final energy' in line: pass # dispcorr_energy_total = float(line.split()[-2]) # sedc_apply = True elif 'Dispersion corrected final free energy' in line: pass # dispcorr_energy_free = float(line.split()[-2]) elif 'dispersion corrected est. 0K energy' in line: pass # dispcorr_energy_0K = float(line.split()[-2]) elif 'Unit Cell' in line: cell = [x.split()[0:3] for x in lines[i + 3:i + 6]] cell = np.array([[float(col) for col in row] for row in cell]) elif 'Cell Contents' in line: geom_starts = i start_found = False for j, jline in enumerate(lines[geom_starts:]): if jline.find('xxxxx') > 0 and start_found: geom_stop = j + geom_starts break if jline.find('xxxx') > 0 and not start_found: geom_start = j + geom_starts + 4 start_found = True species = [line.split()[1] for line in lines[geom_start:geom_stop]] geom = np.dot(np.array([[float(col) for col in line.split()[3:6]] for line in lines[geom_start:geom_stop]]), cell) elif 'Writing model to' in line: atoms = ase.Atoms( cell=cell, pbc=True, positions=geom, symbols=''.join(species)) # take 0K energy where available, else total energy if energy_0K: energy = energy_0K else: energy = energy_total # generate a minimal single-point calculator sp_calc = SinglePointCalculator(atoms=atoms, energy=energy, forces=None, magmoms=None, stress=None) atoms.set_calculator(sp_calc) traj.append(atoms) if index is None: return traj else: return traj[index] def read_geom(filename, index=':', units=units_CODATA2002): """ Wrapper function for the more generic read() functionality. Note that this is function is intended to maintain backwards-compatibility only. Keyword arguments will be passed to read_castep_geom(). """ from ase.io import read return read(filename, index=index, format='castep-geom', units=units) def read_castep_geom(fd, index=None, units=units_CODATA2002): """Reads a .geom file produced by the CASTEP GeometryOptimization task and returns an atoms object. The information about total free energy and forces of each atom for every relaxation step will be stored for further analysis especially in a single-point calculator. Note that everything in the .geom file is in atomic units, which has been conversed to commonly used unit angstrom(length) and eV (energy). Note that the index argument has no effect as of now. Contribution by Wei-Bing Zhang. Thanks! Routine now accepts a filedescriptor in order to out-source the *.gz and *.bz2 handling to formats.py. Note that there is a fallback routine read_geom() that behaves like previous versions did. """ from ase.calculators.singlepoint import SinglePointCalculator # fd is closed by embracing read() routine txt = fd.readlines() traj = [] Hartree = units['Eh'] Bohr = units['a0'] # Yeah, we know that... # print('N.B.: Energy in .geom file is not 0K extrapolated.') for i, line in enumerate(txt): if line.find('<-- E') > 0: start_found = True energy = float(line.split()[0]) * Hartree cell = [x.split()[0:3] for x in txt[i + 1:i + 4]] cell = np.array([[float(col) * Bohr for col in row] for row in cell]) if line.find('<-- R') > 0 and start_found: start_found = False geom_start = i for i, line in enumerate(txt[geom_start:]): if line.find('<-- F') > 0: geom_stop = i + geom_start break species = [line.split()[0] for line in txt[geom_start:geom_stop]] geom = np.array([[float(col) * Bohr for col in line.split()[2:5]] for line in txt[geom_start:geom_stop]]) forces = np.array([[float(col) * Hartree / Bohr for col in line.split()[2:5]] for line in txt[geom_stop:geom_stop + (geom_stop - geom_start)]]) image = ase.Atoms(species, geom, cell=cell, pbc=True) image.set_calculator( SinglePointCalculator(atoms=image, energy=energy, forces=forces)) traj.append(image) if index is None: return traj else: return traj[index] def read_phonon(filename, index=None, read_vib_data=False, gamma_only=True, frequency_factor=None, units=units_CODATA2002): """ Wrapper function for the more generic read() functionality. Note that this is function is intended to maintain backwards-compatibility only. For documentation see read_castep_phonon(). """ from ase.io import read if read_vib_data: full_output = True else: full_output = False return read(filename, index=index, format='castep-phonon', full_output=full_output, read_vib_data=read_vib_data, gamma_only=gamma_only, frequency_factor=frequency_factor, units=units) def read_castep_phonon(fd, index=None, read_vib_data=False, gamma_only=True, frequency_factor=None, units=units_CODATA2002): """ Reads a .phonon file written by a CASTEP Phonon task and returns an atoms object, as well as the calculated vibrational data if requested. Note that the index argument has no effect as of now. """ # fd is closed by embracing read() routine lines = fd.readlines() atoms = None cell = [] N = Nb = Nq = 0 scaled_positions = [] symbols = [] masses = [] # header l = 0 while l < len(lines): line = lines[l] if 'Number of ions' in line: N = int(line.split()[3]) elif 'Number of branches' in line: Nb = int(line.split()[3]) elif 'Number of wavevectors'in line: Nq = int(line.split()[3]) elif 'Unit cell vectors (A)' in line: for ll in range(3): l += 1 fields = lines[l].split() cell.append([float(x) for x in fields[0:3]]) elif 'Fractional Co-ordinates' in line: for ll in range(N): l += 1 fields = lines[l].split() scaled_positions.append([float(x) for x in fields[1:4]]) symbols.append(fields[4]) masses.append(float(fields[5])) elif 'END header' in line: l += 1 atoms = ase.Atoms(symbols=symbols, scaled_positions=scaled_positions, cell=cell) break l += 1 # Eigenmodes and -vectors if frequency_factor is None: Kayser_to_eV = 1E2 * 2 * np.pi * units['hbar'] * units['c'] # N.B. "fixed default" unit for frequencies in .phonon files is "cm-1" # (i.e. the latter is unaffected by the internal unit conversion system of # CASTEP!) set conversion factor to convert therefrom to eV by default for # now frequency_factor = Kayser_to_eV qpoints = [] weights = [] frequencies = [] displacements = [] for nq in range(Nq): fields = lines[l].split() qpoints.append([float(x) for x in fields[2:5]]) weights.append(float(fields[5])) freqs = [] for ll in range(Nb): l += 1 fields = lines[l].split() freqs.append(frequency_factor * float(fields[1])) frequencies.append(np.array(freqs)) # skip the two Phonon Eigenvectors header lines l += 2 # generate a list of displacements with a structure that is identical to # what is stored internally in the Vibrations class (see in # ase.vibrations.Vibrations.modes): # np.array(displacements).shape == (Nb,3*N) disps = [] for ll in range(Nb): disp_coords = [] for lll in range(N): l += 1 fields = lines[l].split() disp_x = float(fields[2]) + float(fields[3]) * 1.0j disp_y = float(fields[4]) + float(fields[5]) * 1.0j disp_z = float(fields[6]) + float(fields[7]) * 1.0j disp_coords.extend([disp_x, disp_y, disp_z]) disps.append(np.array(disp_coords)) displacements.append(np.array(disps)) if read_vib_data: if gamma_only: vibdata = [frequencies[0], displacements[0]] else: vibdata = [qpoints, weights, frequencies, displacements] return vibdata, atoms else: return atoms def read_md(filename, index=None, return_scalars=False, units=units_CODATA2002): """Wrapper function for the more generic read() functionality. Note that this function is intended to maintain backwards-compatibility only. For documentation see read_castep_md() """ if return_scalars: full_output = True else: full_output = False from ase.io import read return read(filename, index=index, format='castep-md', full_output=full_output, return_scalars=return_scalars, units=units) def read_castep_md(fd, index=None, return_scalars=False, units=units_CODATA2002): """Reads a .md file written by a CASTEP MolecularDynamics task and returns the trajectory stored therein as a list of atoms object. Note that the index argument has no effect as of now.""" from ase.calculators.singlepoint import SinglePointCalculator factors = { 't': units['t0'] * 1E15, # fs 'E': units['Eh'], # eV 'T': units['Eh'] / units['kB'], 'P': units['Eh'] / units['a0']**3 * units['Pascal'], 'h': units['a0'], 'hv': units['a0'] / units['t0'], 'S': units['Eh'] / units['a0']**3, 'R': units['a0'], 'V': np.sqrt(units['Eh'] / units['me']), 'F': units['Eh'] / units['a0']} # fd is closed by embracing read() routine lines = fd.readlines() l = 0 while 'END header' not in lines[l]: l += 1 l_end_header = l lines = lines[l_end_header + 1:] times = [] energies = [] temperatures = [] pressures = [] traj = [] # Initialization time = None Epot = None Ekin = None EH = None temperature = None pressure = None symbols = None positions = None cell = None velocities = None symbols = [] positions = [] velocities = [] forces = [] cell = np.eye(3) cell_velocities = [] stress = [] for (l, line) in enumerate(lines): fields = line.split() if len(fields) == 0: if l != 0: times.append(time) energies.append([Epot, EH, Ekin]) temperatures.append(temperature) pressures.append(pressure) atoms = ase.Atoms(symbols=symbols, positions=positions, cell=cell) atoms.set_velocities(velocities) if len(stress) == 0: atoms.set_calculator( SinglePointCalculator(atoms=atoms, energy=Epot, forces=forces)) else: atoms.set_calculator( SinglePointCalculator(atoms=atoms, energy=Epot, forces=forces, stress=stress)) traj.append(atoms) symbols = [] positions = [] velocities = [] forces = [] cell = [] cell_velocities = [] stress = [] continue if len(fields) == 1: time = factors['t'] * float(fields[0]) continue if fields[-1] == 'E': E = [float(x) for x in fields[0:3]] Epot, EH, Ekin = [factors['E'] * Ei for Ei in E] continue if fields[-1] == 'T': temperature = factors['T'] * float(fields[0]) continue # only printed in case of variable cell calculation or calculate_stress # explicitly requested if fields[-1] == 'P': pressure = factors['P'] * float(fields[0]) continue if fields[-1] == 'h': h = [float(x) for x in fields[0:3]] cell.append([factors['h'] * hi for hi in h]) continue # only printed in case of variable cell calculation if fields[-1] == 'hv': hv = [float(x) for x in fields[0:3]] cell_velocities.append([factors['hv'] * hvi for hvi in hv]) continue # only printed in case of variable cell calculation if fields[-1] == 'S': S = [float(x) for x in fields[0:3]] stress.append([factors['S'] * Si for Si in S]) continue if fields[-1] == 'R': symbols.append(fields[0]) R = [float(x) for x in fields[2:5]] positions.append([factors['R'] * Ri for Ri in R]) continue if fields[-1] == 'V': V = [float(x) for x in fields[2:5]] velocities.append([factors['V'] * Vi for Vi in V]) continue if fields[-1] == 'F': F = [float(x) for x in fields[2:5]] forces.append([factors['F'] * Fi for Fi in F]) continue if index is None: pass else: traj = traj[index] if return_scalars: data = [times, energies, temperatures, pressures] return data, traj else: return traj # Routines that only the calculator requires def read_param(filename, calc=None): """Reads a param file. If an Castep object is passed as the second argument, the parameter setings are merged into the existing object and returned. Otherwise a new Castep() calculator instance gets created and returned. Parameters: filename: the .param file. Only opens reading calc: [Optional] calculator object to hang parameters onto """ if calc is None: from ase.calculators.castep import Castep calc = Castep(check_castep_version=False) calc.merge_param(filename) return calc def write_param(filename, param, check_checkfile=False, force_write=False, interface_options=None): """Writes a CastepParam object to a CASTEP .param file Parameters: filename: the location of the file to write to. If it exists it will be overwritten without warning. If it doesn't it will be created. param: a CastepParam instance check_checkfile : if set to True, write_param will only write continuation or reuse statement if a restart file exists in the same directory """ if os.path.isfile(filename) and not force_write: print('ase.io.castep.write_param: Set optional argument') print('force_write=True to overwrite %s.' % filename) return False out = paropen(filename, 'w') out.write('#######################################################\n') out.write('#CASTEP param file: %s\n' % filename) out.write('#Created using the Atomic Simulation Environment (ASE)#\n') if interface_options is not None: out.write('# Internal settings of the calculator\n') out.write('# This can be switched off by settings\n') out.write('# calc._export_settings = False\n') out.write('# If stated, this will be automatically processed\n') out.write('# by ase.io.castep.read_seed()\n') for option, value in sorted(interface_options.items()): out.write('# ASE_INTERFACE %s : %s\n' % (option, value)) out.write('#######################################################\n\n') for keyword, opt in sorted(param._options.items()): if opt.type == 'Defined': if opt.value is not None: out.write('%s\n' % (opt)) elif opt.value is not None: if keyword in ['continuation', 'reuse'] and check_checkfile: if opt.value == 'default': if not os.path.exists('%s.%s' % (os.path.splitext(filename)[0], 'check')): continue elif not (os.path.exists(opt.value) or # CASTEP also understands relative path names, hence # also check relative to the param file directory os.path.exists( os.path.join(os.path.dirname(filename), opt.value))): continue if opt.type == 'Block': out.write('%%BLOCK %s\n' % keyword.upper()) out.write(opt.value) out.write('\n%%ENDBLOCK %s\n' % keyword.upper()) else: out.write('%s : %s\n' % (keyword, opt.value)) out.close() def read_seed(seed, new_seed=None, ignore_internal_keys=False): """A wrapper around the CASTEP Calculator in conjunction with read_cell and read_param. Basically this can be used to reuse a previous calculation which results in a triple of cell/param/castep file. The label of the calculation if pre- fixed with `copy_of_` and everything else will be recycled as much as possible from the addressed calculation. Please note that this routine will return an atoms ordering as specified in the cell file! It will thus undo the potential reordering internally done by castep. """ directory = os.path.abspath(os.path.dirname(seed)) seed = os.path.basename(seed) paramfile = os.path.join(directory, '%s.param' % seed) cellfile = os.path.join(directory, '%s.cell' % seed) castepfile = os.path.join(directory, '%s.castep' % seed) checkfile = os.path.join(directory, '%s.check' % seed) atoms = read_cell(cellfile) atoms.calc._directory = directory atoms.calc._rename_existing_dir = False atoms.calc._castep_pp_path = directory atoms.calc.merge_param(paramfile, ignore_internal_keys=ignore_internal_keys) if new_seed is None: atoms.calc._label = 'copy_of_%s' % seed else: atoms.calc._label = str(new_seed) if os.path.isfile(castepfile): # _set_atoms needs to be True here # but we set it right back to False # atoms.calc._set_atoms = False # BUGFIX: I do not see a reason to do that! atoms.calc.read(castepfile) # atoms.calc._set_atoms = False # if here is a check file, we also want to re-use this information if os.path.isfile(checkfile): atoms.calc._check_file = os.path.basename(checkfile) # sync the top-level object with the # one attached to the calculator atoms = atoms.calc.atoms else: # There are cases where we only want to restore a calculator/atoms # setting without a castep file... pass # No print statement required in these cases print('Corresponding *.castep file not found.') print('Atoms object will be restored from *.cell and *.param only.') atoms.calc.push_oldstate() return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/cfg.py000066400000000000000000000207771316323560300222740ustar00rootroot00000000000000import numpy as np import ase from ase.data import chemical_symbols from ase.parallel import paropen from ase.utils import basestring cfg_default_fields = np.array(['positions', 'momenta', 'numbers', 'magmoms']) def write_cfg(f, a): """Write atomic configuration to a CFG-file (native AtomEye format). See: http://mt.seas.upenn.edu/Archive/Graphics/A/ """ if isinstance(f, basestring): f = paropen(f, 'w') if isinstance(a, list): if len(a) == 1: a = a[0] else: raise RuntimeError('Cannot write sequence to single .cfg file.') f.write('Number of particles = %i\n' % len(a)) f.write('A = 1.0 Angstrom\n') cell = a.get_cell(complete=True) for i in range(3): for j in range(3): f.write('H0(%1.1i,%1.1i) = %f A\n' % (i + 1, j + 1, cell[i, j])) entry_count = 3 for x in a.arrays.keys(): if x not in cfg_default_fields: if len(a.get_array(x).shape) == 1: entry_count += 1 else: entry_count += a.get_array(x).shape[1] vels = a.get_velocities() if isinstance(vels, np.ndarray): entry_count += 3 else: f.write('.NO_VELOCITY.\n') f.write('entry_count = %i\n' % entry_count) i = 0 for name, aux in a.arrays.items(): if name not in cfg_default_fields: if len(aux.shape) == 1: f.write('auxiliary[%i] = %s [a.u.]\n' % (i, name)) i += 1 else: if aux.shape[1] == 3: for j in range(3): f.write('auxiliary[%i] = %s_%s [a.u.]\n' % (i, name, chr(ord('x') + j))) i += 1 else: for j in range(aux.shape[1]): f.write('auxiliary[%i] = %s_%1.1i [a.u.]\n' % (i, name, j)) i += 1 # Distinct elements spos = a.get_scaled_positions() for i in a: el = i.symbol f.write('%f\n' % ase.data.atomic_masses[chemical_symbols.index(el)]) f.write('%s\n' % el) x, y, z = spos[i.index, :] s = '%e %e %e ' % (x, y, z) if isinstance(vels, np.ndarray): vx, vy, vz = vels[i.index, :] s = s + ' %e %e %e ' % (vx, vy, vz) for name, aux in a.arrays.items(): if name not in cfg_default_fields: if len(aux.shape) == 1: s += ' %e' % aux[i.index] else: s += (aux.shape[1] * ' %e') % tuple(aux[i.index].tolist()) f.write('%s\n' % s) default_color = { 'H': [0.800, 0.800, 0.800], 'C': [0.350, 0.350, 0.350], 'O': [0.800, 0.200, 0.200]} default_radius = {'H': 0.435, 'C': 0.655, 'O': 0.730} def write_clr(f, atoms): """Write extra color and radius code to a CLR-file (for use with AtomEye). Hit F12 in AtomEye to use. See: http://mt.seas.upenn.edu/Archive/Graphics/A/ """ color = None radius = None if atoms.has('color'): color = atoms.get_array('color') if atoms.has('radius'): radius = atoms.get_array('radius') if color is None: color = np.zeros([len(atoms), 3], dtype=float) for a in atoms: color[a.index, :] = default_color[a.symbol] if radius is None: radius = np.zeros(len(atoms), dtype=float) for a in atoms: radius[a.index] = default_radius[a.symbol] radius.shape = (-1, 1) if isinstance(f, basestring): f = paropen(f, 'w') for c1, c2, c3, r in np.append(color, radius, axis=1): f.write('%f %f %f %f\n' % (c1, c2, c3, r)) def read_cfg(f): """Read atomic configuration from a CFG-file (native AtomEye format). See: http://mt.seas.upenn.edu/Archive/Graphics/A/ """ if isinstance(f, basestring): f = open(f) nat = None naux = 0 aux = None auxstrs = None cell = np.zeros([3, 3]) transform = np.eye(3) eta = np.zeros([3, 3]) current_atom = 0 current_symbol = None current_mass = None l = f.readline() while l: l = l.strip() if len(l) != 0 and not l.startswith('#'): if l == '.NO_VELOCITY.': vels = None naux += 3 else: s = l.split('=') if len(s) == 2: key, value = s key = key.strip() value = [x.strip() for x in value.split()] if key == 'Number of particles': nat = int(value[0]) spos = np.zeros([nat, 3]) masses = np.zeros(nat) syms = [''] * nat vels = np.zeros([nat, 3]) if naux > 0: aux = np.zeros([nat, naux]) elif key == 'A': pass # unit = float(value[0]) elif key == 'entry_count': naux += int(value[0]) - 6 auxstrs = [''] * naux if nat is not None: aux = np.zeros([nat, naux]) elif key.startswith('H0('): i, j = [int(x) for x in key[3:-1].split(',')] cell[i - 1, j - 1] = float(value[0]) elif key.startswith('Transform('): i, j = [int(x) for x in key[10:-1].split(',')] transform[i - 1, j - 1] = float(value[0]) elif key.startswith('eta('): i, j = [int(x) for x in key[4:-1].split(',')] eta[i - 1, j - 1] = float(value[0]) elif key.startswith('auxiliary['): i = int(key[10:-1]) auxstrs[i] = value[0] else: # Everything else must be particle data. # First check if current line contains an element mass or # name. Then we have an extended XYZ format. s = [x.strip() for x in l.split()] if len(s) == 1: if l in chemical_symbols: current_symbol = l else: current_mass = float(l) elif current_symbol is None and current_mass is None: # Standard CFG format masses[current_atom] = float(s[0]) syms[current_atom] = s[1] spos[current_atom, :] = [float(x) for x in s[2:5]] vels[current_atom, :] = [float(x) for x in s[5:8]] current_atom += 1 elif (current_symbol is not None and current_mass is not None): # Extended CFG format masses[current_atom] = current_mass syms[current_atom] = current_symbol props = [float(x) for x in s] spos[current_atom, :] = props[0:3] off = 3 if vels is not None: off = 6 vels[current_atom, :] = props[3:6] aux[current_atom, :] = props[off:] current_atom += 1 l = f.readline() # Sanity check if current_atom != nat: raise RuntimeError('Number of atoms reported for CFG file (={0}) and ' 'number of atoms actually read (={1}) differ.' .format(nat, current_atom)) if np.any(eta != 0): raise NotImplementedError('eta != 0 not yet implemented for CFG ' 'reader.') cell = np.dot(cell, transform) if vels is None: a = ase.Atoms( symbols=syms, masses=masses, scaled_positions=spos, cell=cell, pbc=True) else: a = ase.Atoms( symbols=syms, masses=masses, scaled_positions=spos, momenta=masses.reshape(-1, 1) * vels, cell=cell, pbc=True) i = 0 while i < naux: auxstr = auxstrs[i] if auxstr[-2:] == '_x': a.set_array(auxstr[:-2], aux[:, i:i + 3]) i += 3 else: a.set_array(auxstr, aux[:, i]) i += 1 return a ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/cif.py000066400000000000000000000335631316323560300222730ustar00rootroot00000000000000"""Module to read and write atoms in cif file format. See http://www.iucr.org/resources/cif/spec/version1.1/cifsyntax for a description of the file format. STAR extensions as save frames, global blocks, nested loops and multi-data values are not supported. """ import re import shlex import warnings import numpy as np from ase.parallel import paropen from ase.spacegroup import crystal from ase.spacegroup.spacegroup import spacegroup_from_data from ase.utils import basestring # Old conventions: old_spacegroup_names = {'Abm2': 'Aem2', 'Aba2': 'Aea2', 'Cmca': 'Cmce', 'Cmma': 'Cmme', 'Ccca': 'Ccc1'} def convert_value(value): """Convert CIF value string to corresponding python type.""" value = value.strip() if re.match('(".*")|(\'.*\')$', value): return value[1:-1] elif re.match(r'[+-]?\d+$', value): return int(value) elif re.match(r'[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$', value): return float(value) elif re.match(r'[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?\(\d+\)$', value): return float(value[:value.index('(')]) # strip off uncertainties elif re.match(r'[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?\(\d+$', value): warnings.warn('Badly formed number: "{0}"'.format(value)) return float(value[:value.index('(')]) # strip off uncertainties else: return value def parse_multiline_string(lines, line): """Parse semicolon-enclosed multiline string and return it.""" assert line[0] == ';' strings = [line[1:].lstrip()] while True: line = lines.pop().strip() if line[:1] == ';': break strings.append(line) return '\n'.join(strings).strip() def parse_singletag(lines, line): """Parse a CIF tag (entries starting with underscore). Returns a key-value pair.""" kv = line.split(None, 1) if len(kv) == 1: key = line line = lines.pop().strip() while not line or line[0] == '#': line = lines.pop().strip() if line[0] == ';': value = parse_multiline_string(lines, line) else: value = line else: key, value = kv return key, convert_value(value) def parse_loop(lines): """Parse a CIF loop. Returns a dict with column tag names as keys and a lists of the column content as values.""" header = [] line = lines.pop().strip() while line.startswith('_'): header.append(line.lower()) line = lines.pop().strip() columns = dict([(h, []) for h in header]) tokens = [] while True: lowerline = line.lower() if (not line or line.startswith('_') or lowerline.startswith('data_') or lowerline.startswith('loop_')): break if line.startswith('#'): line = lines.pop().strip() continue if line.startswith(';'): t = [parse_multiline_string(lines, line)] else: if len(header) == 1: t = [line] else: t = shlex.split(line, posix=False) line = lines.pop().strip() tokens.extend(t) if len(tokens) < len(columns): continue if len(tokens) == len(header): for h, t in zip(header, tokens): columns[h].append(convert_value(t)) else: warnings.warn('Wrong number of tokens: {0}'.format(tokens)) tokens = [] if line: lines.append(line) return columns def parse_items(lines, line): """Parse a CIF data items and return a dict with all tags.""" tags = {} while True: if not lines: break line = lines.pop() if not line: break line = line.strip() lowerline = line.lower() if not line or line.startswith('#'): continue elif line.startswith('_'): key, value = parse_singletag(lines, line) tags[key.lower()] = value elif lowerline.startswith('loop_'): tags.update(parse_loop(lines)) elif lowerline.startswith('data_'): if line: lines.append(line) break elif line.startswith(';'): parse_multiline_string(lines, line) else: raise ValueError('Unexpected CIF file entry: "{0}"'.format(line)) return tags def parse_block(lines, line): """Parse a CIF data block and return a tuple with the block name and a dict with all tags.""" assert line.lower().startswith('data_') blockname = line.split('_', 1)[1].rstrip() tags = parse_items(lines, line) return blockname, tags def parse_cif(fileobj): """Parse a CIF file. Returns a list of blockname and tag pairs. All tag names are converted to lower case.""" if isinstance(fileobj, basestring): fileobj = open(fileobj) lines = [''] + fileobj.readlines()[::-1] # all lines (reversed) blocks = [] while True: if not lines: break line = lines.pop() line = line.strip() if not line or line.startswith('#'): continue blocks.append(parse_block(lines, line)) return blocks def tags2atoms(tags, store_tags=False, primitive_cell=False, subtrans_included=True): """Returns an Atoms object from a cif tags dictionary. See read_cif() for a description of the arguments.""" if primitive_cell and subtrans_included: raise RuntimeError( 'Primitive cell cannot be determined when sublattice translations ' 'are included in the symmetry operations listed in the CIF file, ' 'i.e. when `subtrans_included` is True.') a = tags['_cell_length_a'] b = tags['_cell_length_b'] c = tags['_cell_length_c'] alpha = tags['_cell_angle_alpha'] beta = tags['_cell_angle_beta'] gamma = tags['_cell_angle_gamma'] scaled_positions = np.array([tags['_atom_site_fract_x'], tags['_atom_site_fract_y'], tags['_atom_site_fract_z']]).T symbols = [] if '_atom_site_type_symbol' in tags: labels = tags['_atom_site_type_symbol'] else: labels = tags['_atom_site_label'] for s in labels: # Strip off additional labeling on chemical symbols m = re.search(r'([A-Z][a-z]?)', s) symbol = m.group(0) symbols.append(symbol) # Symmetry specification, see # http://www.iucr.org/resources/cif/dictionaries/cif_sym for a # complete list of official keys. In addition we also try to # support some commonly used depricated notations no = None if '_space_group.it_number' in tags: no = tags['_space_group.it_number'] elif '_space_group_it_number' in tags: no = tags['_space_group_it_number'] elif '_symmetry_int_tables_number' in tags: no = tags['_symmetry_int_tables_number'] symbolHM = None if '_space_group.Patterson_name_h-m' in tags: symbolHM = tags['_space_group.patterson_name_h-m'] elif '_symmetry_space_group_name_h-m' in tags: symbolHM = tags['_symmetry_space_group_name_h-m'] elif '_space_group_name_h-m_alt' in tags: symbolHM = tags['_space_group_name_h-m_alt'] if symbolHM is not None: symbolHM = old_spacegroup_names.get(symbolHM.strip(), symbolHM) for name in ['_space_group_symop_operation_xyz', '_space_group_symop.operation_xyz', '_symmetry_equiv_pos_as_xyz']: if name in tags: sitesym = tags[name] break else: sitesym = None spacegroup = 1 if sitesym is not None: subtrans = [(0.0, 0.0, 0.0)] if subtrans_included else None spacegroup = spacegroup_from_data( no=no, symbol=symbolHM, sitesym=sitesym, subtrans=subtrans) elif no is not None: spacegroup = no elif symbolHM is not None: spacegroup = symbolHM else: spacegroup = 1 if store_tags: kwargs = {'info': tags.copy()} else: kwargs = {} if 'D' in symbols: deuterium = [symbol == 'D' for symbol in symbols] symbols = [symbol if symbol != 'D' else 'H' for symbol in symbols] else: deuterium = False atoms = crystal(symbols, basis=scaled_positions, cellpar=[a, b, c, alpha, beta, gamma], spacegroup=spacegroup, primitive_cell=primitive_cell, **kwargs) if deuterium: masses = atoms.get_masses() masses[atoms.numbers == 1] = 1.00783 masses[deuterium] = 2.01355 atoms.set_masses(masses) return atoms def read_cif(fileobj, index, store_tags=False, primitive_cell=False, subtrans_included=True): """Read Atoms object from CIF file. *index* specifies the data block number or name (if string) to return. If *index* is None or a slice object, a list of atoms objects will be returned. In the case of *index* is *None* or *slice(None)*, only blocks with valid crystal data will be included. If *store_tags* is true, the *info* attribute of the returned Atoms object will be populated with all tags in the corresponding cif data block. If *primitive_cell* is true, the primitive cell will be built instead of the conventional cell. If *subtrans_included* is true, sublattice translations are assumed to be included among the symmetry operations listed in the CIF file (seems to be the common behaviour of CIF files). Otherwise the sublattice translations are determined from setting 1 of the extracted space group. A result of setting this flag to true, is that it will not be possible to determine the primitive cell. """ blocks = parse_cif(fileobj) # Find all CIF blocks with valid crystal data images = [] for name, tags in blocks: try: atoms = tags2atoms(tags, store_tags, primitive_cell, subtrans_included) images.append(atoms) except KeyError: pass for atoms in images[index]: yield atoms def split_chem_form(comp_name): """Returns e.g. AB2 as ['A', '1', 'B', '2']""" split_form = re.findall(r'[A-Z][a-z]*|\d+', re.sub('[A-Z][a-z]*(?![\da-z])', r'\g<0>1', comp_name)) return split_form def write_cif(fileobj, images, format='default'): """Write *images* to CIF file.""" if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if hasattr(images, 'get_positions'): images = [images] for i, atoms in enumerate(images): fileobj.write('data_image%d\n' % i) a, b, c, alpha, beta, gamma = atoms.get_cell_lengths_and_angles() if format == 'mp': comp_name = atoms.get_chemical_formula(mode='reduce') sf = split_chem_form(comp_name) formula_sum = '' ii = 0 while ii < len(sf): formula_sum = formula_sum + ' ' + sf[ii] + sf[ii + 1] ii = ii + 2 formula_sum = str(formula_sum) fileobj.write('_chemical_formula_structural %s\n' % atoms.get_chemical_formula(mode='reduce')) fileobj.write('_chemical_formula_sum "%s"\n' % formula_sum) fileobj.write('_cell_length_a %g\n' % a) fileobj.write('_cell_length_b %g\n' % b) fileobj.write('_cell_length_c %g\n' % c) fileobj.write('_cell_angle_alpha %g\n' % alpha) fileobj.write('_cell_angle_beta %g\n' % beta) fileobj.write('_cell_angle_gamma %g\n' % gamma) fileobj.write('\n') if atoms.pbc.all(): fileobj.write('_symmetry_space_group_name_H-M %s\n' % '"P 1"') fileobj.write('_symmetry_int_tables_number %d\n' % 1) fileobj.write('\n') fileobj.write('loop_\n') fileobj.write(' _symmetry_equiv_pos_as_xyz\n') fileobj.write(" 'x, y, z'\n") fileobj.write('\n') fileobj.write('loop_\n') if format == 'mp': fileobj.write(' _atom_site_type_symbol\n') fileobj.write(' _atom_site_label\n') fileobj.write(' _atom_site_symmetry_multiplicity\n') fileobj.write(' _atom_site_fract_x\n') fileobj.write(' _atom_site_fract_y\n') fileobj.write(' _atom_site_fract_z\n') fileobj.write(' _atom_site_occupancy\n') else: fileobj.write(' _atom_site_label\n') fileobj.write(' _atom_site_occupancy\n') fileobj.write(' _atom_site_fract_x\n') fileobj.write(' _atom_site_fract_y\n') fileobj.write(' _atom_site_fract_z\n') fileobj.write(' _atom_site_thermal_displace_type\n') fileobj.write(' _atom_site_B_iso_or_equiv\n') fileobj.write(' _atom_site_type_symbol\n') scaled = atoms.get_scaled_positions() no = {} for i, atom in enumerate(atoms): symbol = atom.symbol if symbol in no: no[symbol] += 1 else: no[symbol] = 1 if format == 'mp': fileobj.write( ' %-2s %4s %4s %7.5f %7.5f %7.5f %6.1f\n' % (symbol, symbol + str(no[symbol]), 1, scaled[i][0], scaled[i][1], scaled[i][2], 1.0)) else: fileobj.write( ' %-8s %6.4f %7.5f %7.5f %7.5f %4s %6.3f %s\n' % ('%s%d' % (symbol, no[symbol]), 1.0, scaled[i][0], scaled[i][1], scaled[i][2], 'Biso', 1.0, symbol)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/cmdft.py000066400000000000000000000007631316323560300226230ustar00rootroot00000000000000import numpy as np from ase.atom import Atom from ase.atoms import Atoms from ase.units import Bohr def read_cmdft(fileobj): lines = fileobj.readlines() del lines[0] finished = False s = Atoms() while not finished: w = lines.pop(0).split() if w[0].startswith('"'): position = Bohr * np.array([float(w[3]), float(w[4]), float(w[5])]) s.append(Atom(w[0].replace('"', ''), position)) else: finished = True yield s ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/cube.py000066400000000000000000000123571316323560300224460ustar00rootroot00000000000000""" IO support for the Gaussian cube format. See the format specifications on: http://local.wasp.uwa.edu.au/~pbourke/dataformats/cube/ """ import numpy as np import time from ase.atoms import Atoms from ase.io import read from ase.units import Bohr def write_cube(fileobj, atoms, data=None, origin=None, comment=None): """ Function to write a cube file. fileobj: str or file object File to which output is written. atoms: Atoms object Atoms object specifying the atomic configuration. data : 3dim numpy array, optional (default = None) Array containing volumetric data as e.g. electronic density origin : 3-tuple Origin of the volumetric data (units: Angstrom) comment : str, optional (default = None) Comment for the first line of the cube file. """ if data is None: data = np.ones((2, 2, 2)) data = np.asarray(data) if data.dtype == complex: data = np.abs(data) if comment is None: comment = 'Cube file from ASE, written on ' + time.strftime('%c') else: comment = comment.strip() fileobj.write(comment) fileobj.write('\nOUTER LOOP: X, MIDDLE LOOP: Y, INNER LOOP: Z\n') if origin is None: origin = np.zeros(3) else: origin = np.asarray(origin) / Bohr fileobj.write('{0:5}{1:12.6f}{2:12.6f}{3:12.6f}\n' .format(len(atoms), *origin)) for i in range(3): n = data.shape[i] d = atoms.cell[i] / n / Bohr fileobj.write('{0:5}{1:12.6f}{2:12.6f}{3:12.6f}\n'.format(n, *d)) positions = atoms.positions / Bohr numbers = atoms.numbers for Z, (x, y, z) in zip(numbers, positions): fileobj.write('{0:5}{1:12.6f}{2:12.6f}{3:12.6f}{4:12.6f}\n' .format(Z, 0.0, x, y, z)) data.tofile(fileobj, sep='\n', format='%e') def read_cube(fileobj, read_data=True, program=None, verbose=False): """Read atoms and data from CUBE file. fileobj : str or file Location to the cubefile. read_data : boolean If set true, the actual cube file content, i.e. an array containing the electronic density (or something else )on a grid and the dimensions of the corresponding voxels are read. program: str Use program='castep' to follow the PBC convention that first and last voxel along a direction are mirror images, thus the last voxel is to be removed. If program=None, the routine will try to catch castep files from the comment lines. verbose : bool Print some more information to stdout. Returns a dict with the following keys: * 'atoms': Atoms object * 'data' : (Nx, Ny, Nz) ndarray * 'origin': (3,) ndarray, specifying the cube_data origin. """ readline = fileobj.readline line = readline() # the first comment line line = readline() # the second comment line # The second comment line *CAN* contain information on the axes # But this is by far not the case for all programs axes = [] if 'OUTER LOOP' in line.upper(): axes = ['XYZ'.index(s[0]) for s in line.upper().split()[2::3]] if not axes: axes = [0, 1, 2] # castep2cube files have a specific comment in the second line ... if 'castep2cube' in line: program = 'castep' print('read_cube identified program: castep') # Third line contains actual system information: line = readline().split() natoms = int(line[0]) # Origin around which the volumetric data is centered # (at least in FHI aims): origin = np.array([float(x) * Bohr for x in line[1::]]) cell = np.empty((3, 3)) shape = [] # the upcoming three lines contain the cell information for i in range(3): n, x, y, z = [float(s) for s in readline().split()] shape.append(int(n)) # different PBC treatment in castep, basically the last voxel row is # identical to the first one if program == 'castep': n -= 1 cell[i] = n * Bohr * np.array([x, y, z]) numbers = np.empty(natoms, int) positions = np.empty((natoms, 3)) for i in range(natoms): line = readline().split() numbers[i] = int(line[0]) positions[i] = [float(s) for s in line[2:]] positions *= Bohr atoms = Atoms(numbers=numbers, positions=positions, cell=cell) # CASTEP will always have PBC, although the cube format does not # contain this kind of information if program == 'castep': atoms.pbc = True dct = {'atoms': atoms} if read_data: data = np.array([float(s) for s in fileobj.read().split()]).reshape(shape) if axes != [0, 1, 2]: data = data.transpose(axes).copy() if program == 'castep': # Due to the PBC applied in castep2cube, the last entry along each # dimension equals the very first one. data = data[:-1, :-1, :-1] dct['data'] = data dct['origin'] = origin return dct def read_cube_data(filename): """Wrapper function to read not only the atoms information from a cube file but also the contained volumetric data. """ dct = read(filename, format='cube', read_data=True, full_output=True) return dct['data'], dct['atoms'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/dacapo.py000066400000000000000000000047021316323560300227520ustar00rootroot00000000000000import numpy as np from ase.calculators.singlepoint import SinglePointCalculator from ase.atom import Atom from ase.atoms import Atoms from ase.utils import basestring def read_dacapo_text(fileobj): if isinstance(fileobj, basestring): fileobj = open(fileobj) lines = fileobj.readlines() i = lines.index(' Structure: A1 A2 A3\n') cell = np.array([[float(w) for w in line.split()[2:5]] for line in lines[i + 1:i + 4]]).transpose() i = lines.index(' Structure: >> Ionic positions/velocities ' + 'in cartesian coordinates <<\n') atoms = [] for line in lines[i + 4:]: words = line.split() if len(words) != 9: break Z, x, y, z = words[2:6] atoms.append(Atom(int(Z), [float(x), float(y), float(z)])) atoms = Atoms(atoms, cell=cell.tolist()) try: i = lines.index( ' DFT: CPU time Total energy\n') except ValueError: pass else: column = lines[i + 3].split().index('selfcons') - 1 try: i2 = lines.index(' ANALYSIS PART OF CODE\n', i) except ValueError: pass else: while i2 > i: if lines[i2].startswith(' DFT:'): break i2 -= 1 energy = float(lines[i2].split()[column]) atoms.set_calculator(SinglePointCalculator(atoms, energy=energy)) return atoms def read_dacapo(filename): from ase.io.pupynere import NetCDFFile nc = NetCDFFile(filename) vars = nc.variables cell = vars['UnitCell'][-1] try: magmoms = vars['InitialAtomicMagneticMoment'][:] except KeyError: magmoms = None try: tags = vars['AtomTags'][:] except KeyError: tags = None atoms = Atoms(scaled_positions=vars['DynamicAtomPositions'][-1], symbols=[(a + b).strip() for a, b in vars['DynamicAtomSpecies'][:]], cell=cell, magmoms=magmoms, tags=tags, pbc=True) try: energy = vars['TotalEnergy'][-1] force = vars['DynamicAtomForces'][-1] except KeyError: energy = None force = None calc = SinglePointCalculator(atoms, energy=energy, forces=force) ### Fixme magmoms atoms.set_calculator(calc) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/db.py000066400000000000000000000020121316323560300221000ustar00rootroot00000000000000import ase.db from ase.utils import basestring from ase.io.formats import string2index def read_db(filename, index, **kwargs): db = ase.db.connect(filename, serial=True, **kwargs) if isinstance(index, basestring): try: index = string2index(index) except ValueError: pass if isinstance(index, int): index = slice(index, index + 1 or None) if isinstance(index, basestring): # index is a database query string: for row in db.select(index): yield row.toatoms() else: start, stop, step = index.indices(db.count()) if start == stop: return assert step == 1 for row in db.select(offset=start, limit=stop - start): yield row.toatoms() def write_db(filename, images, **kwargs): con = ase.db.connect(filename, serial=True, **kwargs) for atoms in images: con.write(atoms) read_json = read_db write_json = write_db read_postgresql = read_db write_postgresql = write_db ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/dftb.py000066400000000000000000000144561316323560300224510ustar00rootroot00000000000000import numpy as np from ase.atoms import Atoms from ase.utils import basestring def read_dftb(filename='dftb_in.hsd'): """Method to read coordinates form DFTB+ input file dftb_in.hsd additionally read information about fixed atoms and periodic boundary condition """ with open(filename, 'r') as myfile: lines = myfile.readlines() atoms_pos = [] atom_symbols = [] type_names = [] my_pbc = False fractional = False mycell = [] for iline, line in enumerate(lines): if (line.strip().startswith('#')): pass elif ('genformat') in line.lower(): natoms = int(lines[iline + 1].split()[0]) if lines[iline + 1].split()[1].lower() == 's': my_pbc = True elif lines[iline + 1].split()[1].lower() == 'f': my_pbc = True fractional = True symbols = lines[iline + 2].split() for i in range(natoms): index = iline + 3 + i aindex = int(lines[index].split()[1]) - 1 atom_symbols.append(symbols[aindex]) position = [float(p) for p in lines[index].split()[2:]] atoms_pos.append(position) if my_pbc: for i in range(3): index = iline + 4 + natoms + i cell = [float(c) for c in lines[index].split()] mycell.append(cell) else: if ('TypeNames' in line): col = line.split() for i in range(3, len(col) - 1): type_names.append(col[i].strip("\"")) elif ('Periodic' in line): if ('Yes' in line): my_pbc = True elif ('LatticeVectors' in line): for imycell in range(3): extraline = lines[iline + imycell + 1] cols = extraline.split() mycell.append( [float(cols[0]), float(cols[1]), float(cols[2])]) else: pass if not my_pbc: mycell = [1.0, 1.0, 1.0] start_reading_coords = False stop_reading_coords = False for line in lines: if (line.strip().startswith('#')): pass else: if ('TypesAndCoordinates' in line): start_reading_coords = True if start_reading_coords: if ('}' in line): stop_reading_coords = True if (start_reading_coords and not (stop_reading_coords) and 'TypesAndCoordinates' not in line): typeindexstr, xxx, yyy, zzz = line.split()[:4] typeindex = int(typeindexstr) symbol = type_names[typeindex-1] atom_symbols.append(symbol) atoms_pos.append([float(xxx), float(yyy), float(zzz)]) if fractional: atoms = Atoms(scaled_positions=atoms_pos, symbols=atom_symbols, cell=mycell, pbc=my_pbc) elif not fractional: atoms = Atoms(positions=atoms_pos, symbols=atom_symbols, cell=mycell, pbc=my_pbc) return atoms def read_dftb_velocities(atoms, filename='geo_end.xyz'): """Method to read velocities (AA/ps) from DFTB+ output file geo_end.xyz """ from ase.units import second # AA/ps -> ase units AngdivPs2ASE = 1.0/(1e-12*second) myfile = open(filename) lines = myfile.readlines() # remove empty lines lines_ok = [] for line in lines: if line.rstrip(): lines_ok.append(line) velocities = [] natoms = len(atoms) last_lines = lines_ok[-natoms:] for iline, line in enumerate(last_lines): inp = line.split() velocities.append([float(inp[4])*AngdivPs2ASE, float(inp[5])*AngdivPs2ASE, float(inp[6])*AngdivPs2ASE]) atoms.set_velocities(velocities) return atoms def write_dftb_velocities(atoms, filename='velocities.txt'): """Method to write velocities (in atomic units) from ASE to a file to be read by dftb+ """ from ase.units import AUT, Bohr # ase units -> atomic units ASE2au = Bohr / AUT if isinstance(filename, basestring): myfile = open(filename, 'w') else: # Assume it's a 'file-like object' myfile = filename velocities = atoms.get_velocities() for velocity in velocities: myfile.write(' %19.16f %19.16f %19.16f \n' % (velocity[0] / ASE2au, velocity[1] / ASE2au, velocity[2] / ASE2au)) return def write_dftb(filename, atoms): """Method to write atom structure in DFTB+ format (gen format) """ # sort atoms.set_masses() masses = atoms.get_masses() indexes = np.argsort(masses) atomsnew = Atoms() for i in indexes: atomsnew = atomsnew + atoms[i] if isinstance(filename, basestring): myfile = open(filename, 'w') else: # Assume it's a 'file-like object' myfile = filename ispbc = atoms.get_pbc() box = atoms.get_cell() if (any(ispbc)): myfile.write('%8d %2s \n' % (len(atoms), 'S')) else: myfile.write('%8d %2s \n' % (len(atoms), 'C')) chemsym = atomsnew.get_chemical_symbols() allchem = '' for i in chemsym: if i not in allchem: allchem = allchem + i + ' ' myfile.write(allchem+' \n') coords = atomsnew.get_positions() itype = 1 for iatom, coord in enumerate(coords): if iatom > 0: if chemsym[iatom] != chemsym[iatom-1]: itype = itype+1 myfile.write('%5i%5i %19.16f %19.16f %19.16f \n' % (iatom+1, itype, coords[iatom][0], coords[iatom][1], coords[iatom][2])) # write box if (any(ispbc)): # dftb dummy myfile.write(' %19.16f %19.16f %19.16f \n' % (0, 0, 0)) myfile.write(' %19.16f %19.16f %19.16f \n' % (box[0][0], box[0][1], box[0][2])) myfile.write(' %19.16f %19.16f %19.16f \n' % (box[1][0], box[1][1], box[1][2])) myfile.write(' %19.16f %19.16f %19.16f \n' % (box[2][0], box[2][1], box[2][2])) if isinstance(filename, basestring): myfile.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/dlp4.py000066400000000000000000000076121316323560300223710ustar00rootroot00000000000000""" Read/Write DL_POLY_4 CONFIG files """ from ase.atoms import Atoms from ase.data import chemical_symbols from numpy import zeros from ase.calculators.singlepoint import SinglePointCalculator __all__ = ['read_dlp4', 'write_dlp4'] def read_dlp4(f): """Read a DL_POLY_4 config/revcon file. Typically used indirectly through read('filename', atoms, format='dlp4'). Can be unforgiven with custom chemical element names. Please complain to alin@elena.space for bugs.""" line = f.readline() line = f.readline().split() levcfg = int(line[0]) imcon = int(line[1]) pbc = False if imcon > 0: pbc = True cell = zeros((3, 3)) if pbc: for j in range(3): line = f.readline().split() for i in range(3): try: cell[j, i] = float(line[i]) except ValueError: raise RuntimeError("error reading cell") symbols = [] positions = [] velocities = [] forces = [] line = f.readline() while line: symbol = line.split()[0] if symbol in chemical_symbols: symbols.append(symbol) else: ns = symbol[0] if ns in chemical_symbols: symbols.append(ns) else: ns = symbol[0:2] if ns in chemical_symbols: symbols.append(ns) else: symbols.append('X') x, y, z = f.readline().split()[:3] positions.append([float(x), float(y), float(z)]) if levcfg > 0: vx, vy, vz = f.readline().split()[:3] velocities.append([float(vx), float(vy), float(vz)]) if levcfg > 1: fx, fy, fz = f.readline().split()[:3] forces.append([float(fx), float(fy), float(fz)]) line = f.readline() ats = Atoms(positions=positions, symbols=symbols, cell=cell, pbc=pbc) # XXX Fix this once atom labels are a thing. if not ats.has('names'): ats.new_array('names', symbols, str) ats.set_array('names', symbols, str) f.readline() if levcfg > 0: ats.set_velocities(velocities) if levcfg > 1: ats.set_calculator(SinglePointCalculator(ats, forces=forces)) return ats def write_dlp4(f, atoms, levcfg = 0, title = 'CONFIG generated by ASE'): """Write a DL_POLY_4 config file. Typically used indirectly through write('filename', atoms, format='dlp4'). Can be unforgiven with custom chemical element names. Please complain to alin@elena.space in case of bugs""" f.write('{0:72s}\n'.format(title)) natoms = atoms.get_number_of_atoms() imcon = 0 if all(atoms.pbc): imcon = 3 f.write('{0:10d}{1:10d}{2:10d}\n'.format(levcfg, imcon, natoms)) if imcon > 0: cell = atoms.get_cell() for j in range(3): f.write('{0:20.10f}{1:20.10f}{2:20.10f}\n'.format( cell[j, 0], cell[j, 1], cell[j, 2])) vels = [] forces = [] if levcfg > 0: vels = atoms.get_velocities() if levcfg > 1: forces = atoms.get_forces() for a in atoms: f.write("{0:8s}{1:10d}\n{2:20.10f}{3:20.10f}{4:20.10f}\n".format( a.symbol, a.index+1, a.x, a.y, a.z)) if levcfg > 0: if vels is None: f.write("{0:20.10f}{1:20.10f}{2:20.10f}\n".format( 0.0, 0.0, 0.0)) else: f.write("{0:20.10f}{1:20.10f}{2:20.10f}\n".format( vels[a.index, 0], vels[a.index, 1], vels[a.index, 2])) if levcfg > 1: if forces is None: f.write("{0:20.10f}{1:20.10f}{2:20.10f}\n".format( 0.0, 0.0, 0.0)) else: f.write("{0:20.10f}{1:20.10f}{2:20.10f}\n".format( forces[a.index, 0], forces[a.index, 1], forces[a.index, 2])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/dmol.py000066400000000000000000000235141316323560300224600ustar00rootroot00000000000000""" IO functions for DMol3 file formats. read/write functionality for car, incoor and arc file formats only car format is added to known ase file extensions use format='dmol-arc' or 'dmol-incoor' for others car structure file - Angstrom and cellpar description of cell. incoor structure file - Bohr and cellvector describption of cell. Note: incoor file not used if car file present. arc multiple-structure file - Angstrom and cellpar description of cell. The formats follow strict formatting car ---- col: 1-5 atom name col: 7-20 x Cartesian coordinate of atom in A col: 22-35 y Cartesian coordinate of atom in A col: 37-50 z Cartesian coordinate of atom in A col: 52-55 type of residue containing atom col: 57-63 residue sequence name relative to beginning of current molecule, left justified col: 64-70 potential type of atom left justified col: 72-73 element symbol col: 75-80 partial charge on atom incoor ------- $cell vectors 37.83609647462165 0.00000000000000 0.00000000000000 0.00000000000000 37.60366016124745 0.00000000000000 0.00000000000000 0.00000000000000 25.29020473078921 $coordinates Si 15.94182672614820 1.85274838936809 16.01426481346124 Si 4.45559370448989 2.68957177851318 -0.05326937257442 $end arc ---- multiple images of car format separated with $end """ from __future__ import print_function from datetime import datetime import numpy as np from ase import Atom, Atoms from ase.geometry.cell import cell_to_cellpar, cellpar_to_cell from ase.units import Bohr def write_dmol_car(filename, atoms): """ Write a dmol car-file from an Atoms object Notes ----- The positions written to file are rotated as to allign with the cell when reading (due to cellpar information) Can not handle multiple images. Only allows for pbc 111 or 000. """ f = open(filename, 'w') f.write('!BIOSYM archive 3\n') dt = datetime.now() symbols = atoms.get_chemical_symbols() if np.all(atoms.pbc): # Rotate positions so they will allign with cellpar cell cellpar = cell_to_cellpar(atoms.cell) new_cell = cellpar_to_cell(cellpar) lstsq_fit = np.linalg.lstsq(atoms.cell, new_cell) R = lstsq_fit[0] positions = np.dot(atoms.positions, R) f.write('PBC=ON\n\n') f.write('!DATE %s\n' % dt.strftime('%b %d %H:%m:%S %Y')) f.write('PBC %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n' % tuple(cellpar)) elif not np.any(atoms.pbc): # [False,False,False] f.write('PBC=OFF\n\n') f.write('!DATE %s\n' % dt.strftime('%b %d %H:%m:%S %Y')) positions = atoms.positions else: raise ValueError('PBC must be all true or all false for .car format') for i, (sym, pos) in enumerate(zip(symbols, positions)): f.write('%-6s %12.8f %12.8f %12.8f XXXX 1 xx %-2s ' '0.000\n' % (sym + str(i+1), pos[0], pos[1], pos[2], sym)) f.write('end\nend\n') f.close() def read_dmol_car(filename): """ Read a dmol car-file and return an Atoms object. Notes ----- Cell is constructed from cellpar so orientation of cell might be off. """ lines = open(filename, 'r').readlines() atoms = Atoms() start_line = 4 if lines[1][4:6] == 'ON': start_line += 1 cell_dat = np.array([float(fld) for fld in lines[4].split()[1:7]]) cell = cellpar_to_cell(cell_dat) pbc = [True, True, True] else: cell = np.zeros((3, 3)) pbc = [False, False, False] symbols = [] positions = [] for line in lines[start_line:]: if line.startswith('end'): break flds = line.split() symbols.append(flds[7]) positions.append(flds[1:4]) atoms.append(Atom(flds[7], flds[1:4])) atoms = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=pbc) return atoms def write_dmol_incoor(filename, atoms, bohr=True): """ Write a dmol incoor-file from an Atoms object Notes ----- Only used for pbc 111. Can not handle multiple images. DMol3 expect data in .incoor files to be in bohr, if bohr is false however the data is written in Angstroms. """ if not np.all(atoms.pbc): raise ValueError('PBC must be all true for .incoor format') if bohr: cell = atoms.cell / Bohr positions = atoms.positions / Bohr else: cell = atoms.cell positions = atoms.positions f = open(filename, 'w') f.write('$cell vectors\n') f.write(' %18.14f %18.14f %18.14f\n' % ( cell[0, 0], cell[0, 1], cell[0, 2])) f.write(' %18.14f %18.14f %18.14f\n' % ( cell[1, 0], cell[1, 1], cell[1, 2])) f.write(' %18.14f %18.14f %18.14f\n' % ( cell[2, 0], cell[2, 1], cell[2, 2])) f.write('$coordinates\n') for a, pos in zip(atoms, positions): f.write('%-12s%18.14f %18.14f %18.14f \n' % ( a.symbol, pos[0], pos[1], pos[2])) f.write('$end\n') f.close() def read_dmol_incoor(filename, bohr=True): """ Reads an incoor file and returns an atoms object. Notes ----- If bohr is True then incoor is assumed to be in bohr and the data is rescaled to Angstrom. """ lines = open(filename, 'r').readlines() symbols = [] positions = [] for i, line in enumerate(lines): if line.startswith('$cell vectors'): cell = np.zeros((3, 3)) for j, line in enumerate(lines[i + 1:i + 4]): cell[j, :] = [float(fld) for fld in line.split()] if line.startswith('$coordinates'): j = i + 1 while True: if lines[j].startswith('$end'): break flds = lines[j].split() symbols.append(flds[0]) positions.append(flds[1:4]) j += 1 atoms = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=True) if bohr: atoms.cell = atoms.cell * Bohr atoms.positions = atoms.positions * Bohr return atoms def write_dmol_arc(filename, images): """ Writes all images to file filename in arc format. Similar to the .car format only pbc 111 or 000 is supported. """ f = open(filename, 'w') f.write('!BIOSYM archive 3\n') if np.all(images[0].pbc): f.write('PBC=ON\n\n') # Rotate positions so they will allign with cellpar cell elif not np.any(images[0].pbc): f.write('PBC=OFF\n\n') else: raise ValueError('PBC must be all true or all false for .arc format') for atoms in images: dt = datetime.now() symbols = atoms.get_chemical_symbols() if np.all(atoms.pbc): cellpar = cell_to_cellpar(atoms.cell) new_cell = cellpar_to_cell(cellpar) lstsq_fit = np.linalg.lstsq(atoms.cell, new_cell) R = lstsq_fit[0] f.write('!DATE %s\n' % dt.strftime('%b %d %H:%m:%S %Y')) f.write('PBC %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n' % tuple(cellpar)) positions = np.dot(atoms.positions, R) elif not np.any(atoms.pbc): # [False,False,False] f.write('!DATE %s\n' % dt.strftime('%b %d %H:%m:%S %Y')) positions = atoms.positions else: raise ValueError( 'PBC must be all true or all false for .arc format') for i, (sym, pos) in enumerate(zip(symbols, positions)): f.write('%-6s %12.8f %12.8f %12.8f XXXX 1 xx %-2s ' '0.000\n' % (sym + str(i+1), pos[0], pos[1], pos[2], sym)) f.write('end\nend\n') f.write('\n') f.close() def read_dmol_arc(filename, index=-1): """ Read a dmol arc-file and return a series of Atoms objects (images). """ lines = open(filename, 'r').readlines() images = [] if lines[1].startswith('PBC=ON'): pbc = True elif lines[1].startswith('PBC=OFF'): pbc = False else: raise RuntimeError('Could not read pbc from second line in %s' % filename) i = 0 while i < len(lines): cell = np.zeros((3, 3)) symbols = [] positions = [] # parse single image if lines[i].startswith('!DATE'): # read cell if pbc: cell_dat = np.array([float(fld) for fld in lines[i + 1].split()[1:7]]) cell = cellpar_to_cell(cell_dat) i += 1 i += 1 # read atoms while not lines[i].startswith('end'): flds = lines[i].split() symbols.append(flds[7]) positions.append(flds[1:4]) i += 1 image = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=pbc) images.append(image) if len(images) == index: return images[-1] i += 1 # return requested images, code borrowed from ase/io/trajectory.py if isinstance(index, int): return images[index] else: step = index.step or 1 if step > 0: start = index.start or 0 if start < 0: start += len(images) stop = index.stop or len(images) if stop < 0: stop += len(images) else: if index.start is None: start = len(images) - 1 else: start = index.start if start < 0: start += len(images) if index.stop is None: stop = -1 else: stop = index.stop if stop < 0: stop += len(images) return [images[j] for j in range(start, stop, step)] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/elk.py000066400000000000000000000054761316323560300223070ustar00rootroot00000000000000 def read_elk(filename): """Import ELK atoms definition. Reads unitcell, atom positions, magmoms from elk.in/GEOMETRY.OUT file. """ from ase import Atoms from ase.units import Bohr import numpy as np atoms = Atoms() fd = open(filename, 'r') lines = fd.readlines() fd.close() scale = np.ones(4) # unit cell scale positions = [] cell = [] symbols = [] magmoms = [] periodic = np.array([True, True, True]) # find cell scale for n, line in enumerate(lines): if line.split() == []: continue if line.strip() == 'scale': scale[0] = float(lines[n + 1]) elif line.startswith('scale'): scale[int(line.strip()[-1])] = float(lines[n + 1]) for n, line in enumerate(lines): if line.split() == []: continue if line.startswith('avec'): cell = np.array( [[float(v) * scale[1] for v in lines[n + 1].split()], [float(v) * scale[2] for v in lines[n + 2].split()], [float(v) * scale[3] for v in lines[n + 3].split()]]) if line.startswith('atoms'): lines1 = lines[n + 1:] # start subsearch spfname = [] natoms = [] atpos = [] bfcmt = [] for n1, line1 in enumerate(lines1): if line1.split() == []: continue if 'spfname' in line1: spfnamenow = lines1[n1].split()[0] spfname.append(spfnamenow) natomsnow = int(lines1[n1 + 1].split()[0]) natoms.append(natomsnow) atposnow = [] bfcmtnow = [] for l in lines1[n1 + 2:n1 + 2 + natomsnow]: atposnow.append([float(v) for v in l.split()[0:3]]) if len(l.split()) == 6: # bfcmt present bfcmtnow.append([float(v) for v in l.split()[3:]]) atpos.append(atposnow) bfcmt.append(bfcmtnow) # symbols, positions, magmoms based on ELK spfname, atpos, and bfcmt symbols = '' positions = [] magmoms = [] for n, s in enumerate(spfname): symbols += str(s[1:].split('.')[0]) * natoms[n] positions += atpos[n] # assumes fractional coordinates if len(bfcmt[n]) > 0: # how to handle cases of magmoms being one or three dim array? magmoms += [m[-1] for m in bfcmt[n]] atoms = Atoms(symbols, scaled_positions=positions, cell=[1, 1, 1]) if len(magmoms) > 0: atoms.set_initial_magnetic_moments(magmoms) # final cell scale cell = cell * scale[0] * Bohr if periodic.any(): atoms.set_cell(cell, scale_atoms=True) atoms.set_pbc(periodic) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/eon.py000066400000000000000000000113611316323560300223030ustar00rootroot00000000000000# Copyright (C) 2012, Jesper Friis, SINTEF # (see accompanying license files for ASE). """Module to read and write atoms EON reactant.con files. See http://theory.cm.utexas.edu/eon/index.html for a description of EON. """ import os from warnings import warn from glob import glob import numpy as np from ase.atoms import Atoms from ase.constraints import FixAtoms from ase.geometry import cellpar_to_cell, cell_to_cellpar from ase.parallel import paropen from ase.utils import basestring def read_eon(fileobj): """Reads an EON reactant.con file. If *fileobj* is the name of a "states" directory created by EON, all the structures will be read.""" if isinstance(fileobj, basestring): if (os.path.isdir(fileobj)): return read_states(fileobj) else: f = open(fileobj) else: f = fileobj comment = f.readline().strip() f.readline() # 0.0000 TIME (??) cell_lengths = f.readline().split() cell_angles = f.readline().split() # Different order of angles in EON. cell_angles = [cell_angles[2], cell_angles[1], cell_angles[0]] cellpar = [float(x) for x in cell_lengths + cell_angles] f.readline() # 0 0 (??) f.readline() # 0 0 0 (??) ntypes = int(f.readline()) # number of atom types natoms = [int(n) for n in f.readline().split()] atommasses = [float(m) for m in f.readline().split()] symbols = [] coords = [] masses = [] fixed = [] for n in range(ntypes): symbol = f.readline().strip() symbols.extend([symbol] * natoms[n]) masses.extend([atommasses[n]] * natoms[n]) f.readline() # Coordinates of Component n for i in range(natoms[n]): row = f.readline().split() coords.append([float(x) for x in row[:3]]) fixed.append(bool(int(row[3]))) if isinstance(fileobj, basestring): f.close() atoms = Atoms(symbols=symbols, positions=coords, masses=masses, cell=cellpar_to_cell(cellpar), constraint=FixAtoms(mask=fixed), info=dict(comment=comment)) return atoms def read_states(states_dir): """Read structures stored by EON in the states directory *states_dir*.""" subdirs = glob(os.path.join(states_dir, '[0123456789]*')) subdirs.sort(key=lambda d: int(os.path.basename(d))) images = [read_eon(os.path.join(subdir, 'reactant.con')) for subdir in subdirs] return images def write_eon(fileobj, images): """Writes structure to EON reactant.con file Multiple snapshots are not allowed.""" if isinstance(fileobj, basestring): f = paropen(fileobj, 'w') else: f = fileobj if isinstance(images, Atoms): atoms = images elif len(images) == 1: atoms = images[0] else: raise ValueError('Can only write one configuration to EON ' 'reactant.con file') out = [] out.append(atoms.info.get('comment', 'Generated by ASE')) out.append('0.0000 TIME') # ?? a, b, c, alpha, beta, gamma = cell_to_cellpar(atoms.cell) out.append('%-10.6f %-10.6f %-10.6f' % (a, b, c)) out.append('%-10.6f %-10.6f %-10.6f' % (gamma, beta, alpha)) out.append('0 0') # ?? out.append('0 0 0') # ?? symbols = atoms.get_chemical_symbols() massdict = dict(list(zip(symbols, atoms.get_masses()))) atomtypes = sorted(massdict.keys()) atommasses = [massdict[at] for at in atomtypes] natoms = [symbols.count(at) for at in atomtypes] ntypes = len(atomtypes) out.append(str(ntypes)) out.append(' '.join([str(n) for n in natoms])) out.append(' '.join([str(n) for n in atommasses])) atom_id = 0 for n in range(ntypes): fixed = np.array([False] * len(atoms)) out.append(atomtypes[n]) out.append('Coordinates of Component %d' % (n + 1)) indices = [i for i, at in enumerate(symbols) if at == atomtypes[n]] a = atoms[indices] coords = a.positions for c in a.constraints: if not isinstance(c, FixAtoms): warn('Only FixAtoms constraints are supported by con files. ' 'Dropping %r', c) continue if c.index.dtype.kind == 'b': fixed = np.array(c.index, dtype=int) else: fixed = np.zeros((natoms[n], ), dtype=int) for i in c.index: fixed[i] = 1 for xyz, fix in zip(coords, fixed): out.append('%22.17f %22.17f %22.17f %d %4d' % (tuple(xyz) + (fix, atom_id))) atom_id += 1 f.write('\n'.join(out)) f.write('\n') if isinstance(fileobj, basestring): f.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/eps.py000066400000000000000000000044321316323560300223120ustar00rootroot00000000000000import time from distutils.version import LooseVersion from ase.io.utils import generate_writer_variables, make_patch_list class EPS: def __init__(self, atoms, rotation='', show_unit_cell=False, radii=None, bbox=None, colors=None, scale=20, maxwidth=500): generate_writer_variables( self, atoms, rotation=rotation, show_unit_cell=show_unit_cell, radii=radii, bbox=bbox, colors=colors, scale=scale, maxwidth=maxwidth) def write(self, filename): self.filename = filename self.write_header() self.write_body() self.write_trailer() def write_header(self): import matplotlib if LooseVersion(matplotlib.__version__) <= '0.8': raise RuntimeError('Your version of matplotlib (%s) is too old' % matplotlib.__version__) from matplotlib.backends.backend_ps import RendererPS, psDefs self.fd = open(self.filename, 'w') self.fd.write('%!PS-Adobe-3.0 EPSF-3.0\n') self.fd.write('%%Creator: G2\n') self.fd.write('%%CreationDate: %s\n' % time.ctime(time.time())) self.fd.write('%%Orientation: portrait\n') bbox = (0, 0, self.w, self.h) self.fd.write('%%%%BoundingBox: %d %d %d %d\n' % bbox) self.fd.write('%%EndComments\n') Ndict = len(psDefs) self.fd.write('%%BeginProlog\n') self.fd.write('/mpldict %d dict def\n' % Ndict) self.fd.write('mpldict begin\n') for d in psDefs: d = d.strip() for l in d.split('\n'): self.fd.write(l.strip() + '\n') self.fd.write('%%EndProlog\n') self.fd.write('mpldict begin\n') self.fd.write('%d %d 0 0 clipbox\n' % (self.w, self.h)) self.renderer = RendererPS(self.w, self.h, self.fd) def write_body(self): patch_list = make_patch_list(self) for patch in patch_list: patch.draw(self.renderer) def write_trailer(self): self.fd.write('end\n') self.fd.write('showpage\n') self.fd.close() def write_eps(filename, atoms, **parameters): if isinstance(atoms, list): assert len(atoms) == 1 atoms = atoms[0] EPS(atoms, **parameters).write(filename) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/espresso.py000066400000000000000000001617761316323560300234050ustar00rootroot00000000000000"""Reads Quantum ESPRESSO files. Read multiple structures and results from pw.x output files. Read structures from pw.x input files. Built for PWSCF v.5.3.0 but should work with earlier and later versions. Can deal with most major functionality, but might fail with ibrav =/= 0 or crystal_sg positions. Units are converted using CODATA 2006, as used internally by Quantum ESPRESSO. """ import os import operator as op import warnings from collections import OrderedDict from os import path import numpy as np from ase.atoms import Atoms from ase.calculators.singlepoint import SinglePointCalculator from ase.constraints import FixAtoms, FixCartesian from ase.data import chemical_symbols, atomic_numbers from ase.units import create_units from ase.utils import basestring # Quantum ESPRESSO uses CODATA 2006 internally units = create_units('2006') # Section identifiers _PW_START = 'Program PWSCF' _PW_END = 'End of self-consistent calculation' _PW_CELL = 'CELL_PARAMETERS' _PW_POS = 'ATOMIC_POSITIONS' _PW_MAGMOM = 'Magnetic moment per site' _PW_FORCE = 'Forces acting on atoms' _PW_TOTEN = '! total energy' _PW_STRESS = 'total stress' class Namelist(OrderedDict): """Case insensitive dict that emulates Fortran Namelists.""" def __contains__(self, key): return super(Namelist, self).__contains__(key.lower()) def __delitem__(self, key): return super(Namelist, self).__delitem__(key.lower()) def __getitem__(self, key): return super(Namelist, self).__getitem__(key.lower()) def __setitem__(self, key, value): super(Namelist, self).__setitem__(key.lower(), value) def get(self, key, default=None): return super(Namelist, self).get(key.lower(), default) def read_espresso_out(fileobj, index=-1, results_required=True): """Reads Quantum ESPRESSO output files. The atomistic configurations as well as results (energy, force, stress, magnetic moments) of the calculation are read for all configurations within the output file. Will probably raise errors for broken or incomplete files. Parameters ---------- fileobj : file|str A file like object or filename index : slice The index of configurations to extract. results_required : bool If True, atomistic configurations that do not have any associated results will not be included. This prevents double printed configurations and incomplete calculations from being returned as the final configuration with no results data. Yields ------ structure : Atoms The next structure from the index slice. The Atoms has a SinglePointCalculator attached with any results parsed from the file. """ if isinstance(fileobj, basestring): fileobj = open(fileobj, 'rU') # work with a copy in memory for faster random access pwo_lines = fileobj.readlines() # TODO: index -1 special case? # Index all the interesting points indexes = { _PW_START: [], _PW_END: [], _PW_CELL: [], _PW_POS: [], _PW_MAGMOM: [], _PW_FORCE: [], _PW_TOTEN: [], _PW_STRESS: [] } for idx, line in enumerate(pwo_lines): for identifier in indexes: if identifier in line: indexes[identifier].append(idx) # Configurations are either at the start, or defined in ATOMIC_POSITIONS # in a subsequent step. Can deal with concatenated output files. all_config_indexes = sorted(indexes[_PW_START] + indexes[_PW_POS]) # Slice only requested indexes # setting results_required argument stops configuration-only # structures from being returned. This ensures the [-1] structure # is one that has results. Two cases: # - SCF of last configuration is not converged, job terminated # abnormally. # - 'relax' and 'vc-relax' re-prints the final configuration but # only 'vc-relax' recalculates. if results_required: results_indexes = sorted(indexes[_PW_TOTEN] + indexes[_PW_FORCE] + indexes[_PW_STRESS] + indexes[_PW_MAGMOM]) # Prune to only configurations with results data before the next # configuration results_config_indexes = [] for config_index, config_index_next in zip( all_config_indexes, all_config_indexes[1:] + [len(pwo_lines)]): if any([config_index < results_index < config_index_next for results_index in results_indexes]): results_config_indexes.append(config_index) # slice from the subset image_indexes = results_config_indexes[index] else: image_indexes = all_config_indexes[index] # Extract initialisation information each time PWSCF starts # to add to subsequent configurations. Use None so slices know # when to fill in the blanks. pwscf_start_info = dict((idx, None) for idx in indexes[_PW_START]) for image_index in image_indexes: # Find the nearest calculation start to parse info. Needed in, # for example, relaxation where cell is only printed at the # start. if image_index in indexes[_PW_START]: prev_start_index = image_index else: # The greatest start index before this structure prev_start_index = [idx for idx in indexes[_PW_START] if idx < image_index][-1] # add structure to reference if not there if pwscf_start_info[prev_start_index] is None: pwscf_start_info[prev_start_index] = parse_pwo_start( pwo_lines, prev_start_index) # Get the bounds for information for this structure. Any associated # values will be between the image_index and the following one, # EXCEPT for cell, which will be 4 lines before if it exists. for next_index in all_config_indexes: if next_index > image_index: break else: # right to the end of the file next_index = len(pwo_lines) # Get the structure # Use this for any missing data prev_structure = pwscf_start_info[prev_start_index]['atoms'] if image_index in indexes[_PW_START]: structure = prev_structure.copy() # parsed from start info else: if _PW_CELL in pwo_lines[image_index - 5]: # CELL_PARAMETERS would be just before positions if present cell, cell_alat = get_cell_parameters( pwo_lines[image_index - 5:image_index]) else: cell = prev_structure.cell cell_alat = pwscf_start_info[prev_start_index]['alat'] # give at least enough lines to parse the positions # should be same format as input card n_atoms = len(prev_structure) positions_card = get_atomic_positions( pwo_lines[image_index:image_index + n_atoms + 1], n_atoms=n_atoms, cell=cell, alat=cell_alat) # convert to Atoms object symbols = [label_to_symbol(position[0]) for position in positions_card] positions = [position[1] for position in positions_card] structure = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=True) # Extract calculation results # Energy energy = None for energy_index in indexes[_PW_TOTEN]: if image_index < energy_index < next_index: energy = float( pwo_lines[energy_index].split()[-2]) * units['Ry'] # Forces forces = None for force_index in indexes[_PW_FORCE]: if image_index < force_index < next_index: # Before QE 5.3 'negative rho' added 2 lines before forces # Use exact lines to stop before 'non-local' forces # in high verbosity if not pwo_lines[force_index + 2].strip(): force_index += 4 else: force_index += 2 # assume contiguous forces = [ [float(x) for x in force_line.split()[-3:]] for force_line in pwo_lines[force_index:force_index + len(structure)]] forces = np.array(forces) * units['Ry'] / units['Bohr'] # Stress stress = None for stress_index in indexes[_PW_STRESS]: if image_index < stress_index < next_index: sxx, sxy, sxz = pwo_lines[stress_index + 1].split()[:3] _, syy, syz = pwo_lines[stress_index + 2].split()[:3] _, _, szz = pwo_lines[stress_index + 3].split()[:3] stress = np.array([sxx, syy, szz, syz, sxz, sxy], dtype=float) # sign convention is opposite of ase stress *= -1 * units['Ry'] / (units['Bohr'] ** 3) # Magmoms magmoms = None for magmoms_index in indexes[_PW_MAGMOM]: if image_index < magmoms_index < next_index: magmoms = [ float(mag_line.split()[5]) for mag_line in pwo_lines[magmoms_index + 1: magmoms_index + 1 + len(structure)]] # Put everything together calc = SinglePointCalculator(structure, energy=energy, forces=forces, stress=stress, magmoms=magmoms) structure.set_calculator(calc) yield structure def parse_pwo_start(lines, index=0): """Parse Quantum ESPRESSO calculation info from lines, starting from index. Return a dictionary containing extracted information. - `celldm(1)`: lattice parameters (alat) - `cell`: unit cell in Angstrom - `symbols`: element symbols for the structure - `positions`: cartesian coordinates of atoms in Angstrom - `atoms`: an `ase.Atoms` object constructed from the extracted data Parameters ---------- lines : list[str] Contents of PWSCF output file. index : int Line number to begin parsing. Only first calculation will be read. Returns ------- info : dict Dictionary of calculation parameters, including `celldm(1)`, `cell`, `symbols`, `positions`, `atoms`. Raises ------ KeyError If interdependent values cannot be found (especially celldm(1)) an error will be raised as other quantities cannot then be calculated (e.g. cell and positions). """ # TODO: extend with extra DFT info? info = {} for idx, line in enumerate(lines[index:], start=index): if 'celldm(1)' in line: # celldm(1) has more digits than alat!! info['celldm(1)'] = float(line.split()[1]) * units['Bohr'] info['alat'] = info['celldm(1)'] elif 'number of atoms/cell' in line: info['nat'] = int(line.split()[-1]) elif 'number of atomic types' in line: info['ntyp'] = int(line.split()[-1]) elif 'crystal axes:' in line: info['cell'] = info['celldm(1)'] * np.array([ [float(x) for x in lines[idx + 1].split()[3:6]], [float(x) for x in lines[idx + 2].split()[3:6]], [float(x) for x in lines[idx + 3].split()[3:6]]]) elif 'positions (alat units)' in line: info['symbols'] = [ label_to_symbol(at_line.split()[1]) for at_line in lines[idx + 1:idx + 1 + info['nat']]] info['positions'] = [ [float(x) * info['celldm(1)'] for x in at_line.split()[6:9]] for at_line in lines[idx + 1:idx + 1 + info['nat']]] # This should be the end of interesting info. # Break here to avoid dealing with large lists of kpoints. # Will need to be extended for DFTCalculator info. break # Make atoms for convenience info['atoms'] = Atoms(symbols=info['symbols'], positions=info['positions'], cell=info['cell'], pbc=True) return info def read_espresso_in(fileobj): """Parse a Quantum ESPRESSO input files, '.in', '.pwi'. ESPRESSO inputs are generally a fortran-namelist format with custom blocks of data. The namelist is parsed as a dict and an atoms object is constructed from the included information. Parameters ---------- fileobj : file | str A file-like object that supports line iteration with the contents of the input file, or a filename. Returns ------- atoms : Atoms Structure defined in the input file. Raises ------ KeyError Raised for missing keys that are required to process the file """ # TODO: use ase opening mechanisms if isinstance(fileobj, basestring): fileobj = open(fileobj, 'rU') # parse namelist section and extract remaining lines data, card_lines = read_fortran_namelist(fileobj) # get the cell if ibrav=0 if 'system' not in data: raise KeyError('Required section &SYSTEM not found.') elif 'ibrav' not in data['system']: raise KeyError('ibrav is required in &SYSTEM') elif data['system']['ibrav'] == 0: # celldm(1) is in Bohr, A is in angstrom. celldm(1) will be # used even if A is also specified. if 'celldm(1)' in data['system']: alat = data['system']['celldm(1)'] * units['Bohr'] elif 'A' in data['system']: alat = data['system']['A'] else: alat = None cell, cell_alat = get_cell_parameters(card_lines, alat=alat) else: alat, cell = ibrav_to_cell(data['system']) positions_card = get_atomic_positions( card_lines, n_atoms=data['system']['nat'], cell=cell, alat=alat) symbols = [label_to_symbol(position[0]) for position in positions_card] positions = [position[1] for position in positions_card] # TODO: put more info into the atoms object # e.g magmom, force constraints atoms = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=True) return atoms def ibrav_to_cell(system): """ Convert a value of ibrav to a cell. Any unspecified lattice dimension is set to 0.0, but will not necessarily raise an error. Also return the lattice parameter. Parameters ---------- system : dict The &SYSTEM section of the input file, containing the 'ibrav' setting, and either celldm(1)..(6) or a, b, c, cosAB, cosAC, cosBC. Returns ------- alat, cell : float, np.array Cell parameter in Angstrom, and The 3x3 array representation of the cell. Raises ------ KeyError Raise an error if any required keys are missing. NotImplementedError Only a limited number of ibrav settings can be parsed. An error is raised if the ibrav interpretation is not implemented. """ if 'celldm(1)' in system and 'a' in system: raise KeyError('do not specify both celldm and a,b,c!') elif 'celldm(1)' in system: # celldm(x) in bohr alat = system['celldm(1)'] * units['Bohr'] b_over_a = system.get('celldm(2)', 0.0) c_over_a = system.get('celldm(3)', 0.0) cosab = system.get('celldm(4)', 0.0) cosac = system.get('celldm(5)', 0.0) cosbc = 0.0 if system['ibrav'] == 14: cosbc = system.get('celldm(4)', 0.0) cosac = system.get('celldm(5)', 0.0) cosab = system.get('celldm(6)', 0.0) elif 'a' in system: # a, b, c, cosAB, cosAC, cosBC in Angstrom alat = system['a'] b_over_a = system.get('b', 0.0) / alat c_over_a = system.get('c', 0.0) / alat cosab = system.get('cosab', 0.0) cosac = system.get('cosac', 0.0) cosbc = system.get('cosbc', 0.0) else: raise KeyError("Missing celldm(1) or a cell parameter.") if system['ibrav'] == 1: cell = np.identity(3) * alat elif system['ibrav'] == 2: cell = np.array([[-1.0, 0.0, 1.0], [0.0, 1.0, 1.0], [-1.0, 1.0, 0.0]]) * (alat / 2) elif system['ibrav'] == 3: cell = np.array([[1.0, 1.0, 1.0], [-1.0, 1.0, 1.0], [-1.0, -1.0, 1.0]]) * (alat / 2) elif system['ibrav'] == -3: cell = np.array([[-1.0, 1.0, 1.0], [1.0, -1.0, 1.0], [1.0, 1.0, -1.0]]) * (alat / 2) elif system['ibrav'] == 4: cell = np.array([[1.0, 0.0, 0.0], [-0.5, 0.5*3**0.5, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == 5: tx = ((1.0 - cosab) / 2.0)**0.5 ty = ((1.0 - cosab) / 6.0)**0.5 tz = ((1 + 2 * cosab) / 3.0)**0.5 cell = np.array([[tx, -ty, tz], [0, 2*ty, tz], [-tx, -ty, tz]]) * alat elif system['ibrav'] == -5: ty = ((1.0 - cosab) / 6.0)**0.5 tz = ((1 + 2 * cosab) / 3.0)**0.5 a_prime = alat / 3**0.5 u = tz - 2 * 2**0.5 * ty v = tz + 2**0.5 * ty cell = np.array([[u, v, v], [v, u, v], [v, v, u]]) * a_prime elif system['ibrav'] == 6: cell = np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == 7: cell = np.array([[1.0, -1.0, c_over_a], [1.0, 1.0, c_over_a], [-1.0, -1.0, c_over_a]]) * (alat / 2) elif system['ibrav'] == 8: cell = np.array([[1.0, 0.0, 0.0], [0.0, b_over_a, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == 9: cell = np.array([[1.0 / 2.0, b_over_a / 2.0, 0.0], [-1.0 / 2.0, b_over_a / 2.0, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == -9: cell = np.array([[1.0 / 2.0, -b_over_a / 2.0, 0.0], [1.0 / 2.0, b_over_a / 2.0, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == 10: cell = np.array([[1.0 / 2.0, 0.0, c_over_a/2.0], [1.0 / 2.0, b_over_a / 2.0, 0.0], [0.0, b_over_a / 2.0, c_over_a / 2.0]]) * alat elif system['ibrav'] == 11: cell = np.array([[1.0 / 2.0, b_over_a / 2.0, c_over_a / 2.0], [-1.0 / 2.0, b_over_a / 2.0, c_over_a / 2.0], [-1.0, 2.0, -b_over_a / 2.0, c_over_a / 2.0]]) * alat elif system['ibrav'] == 12: sinab = (1.0 - cosab**2)**0.5 cell = np.array([[1.0, 0.0, 0.0], [b_over_a * cosab, b_over_a * sinab, 0.0], [0.0, 0.0, c_over_a]]) * alat elif system['ibrav'] == -12: sinac = (1.0 - cosac**2)**0.5 cell = np.array([[1.0, 0.0, 0.0], [0.0, b_over_a, 0.0], [c_over_a * cosac, 0.0, c_over_a * sinac]]) * alat elif system['ibrav'] == 13: sinab = (1.0 - cosab**2)**0.5 cell = np.array([[1.0 / 2.0, 0.0, -c_over_a / 2.0], [b_over_a * cosab, b_over_a * sinab, 0.0], [1.0 / 2.0, 0.0, c_over_a / 2.0]]) * alat elif system['ibrav'] == 14: sinab = (1.0 - cosab**2)**0.5 v3 = [c_over_a * cosac, c_over_a * (cosbc - cosac * cosab) / sinab, c_over_a * ((1 + 2 * cosbc * cosac * cosab - cosbc**2 - cosac**2 - cosab**2)**0.5) / sinab] cell = np.array([[1.0, 0.0, 0.0], [b_over_a * cosab, b_over_a * sinab, 0.0], v3]) * alat else: raise NotImplementedError('ibrav = {0} is not implemented' ''.format(system['ibrav'])) return alat, cell def get_atomic_positions(lines, n_atoms, cell=None, alat=None): """Parse atom positions from ATOMIC_POSITIONS card. Parameters ---------- lines : list[str] A list of lines containing the ATOMIC_POSITIONS card. n_atoms : int Expected number of atoms. Only this many lines will be parsed. cell : np.array Unit cell of the crystal. Only used with crystal coordinates. alat : float Lattice parameter for atomic coordinates. Only used for alat case. Returns ------- positions : list[(str, (float, float, float), (float, float, float))] A list of the ordered atomic positions in the format: label, (x, y, z), (if_x, if_y, if_z) Force multipliers are set to None if not present. Raises ------ ValueError Any problems parsing the data result in ValueError """ positions = None # no blanks or comment lines, can the consume n_atoms lines for positions trimmed_lines = (line for line in lines if line.strip() and not line[0] == '#') for line in trimmed_lines: if line.strip().startswith('ATOMIC_POSITIONS'): if positions is not None: raise ValueError('Multiple ATOMIC_POSITIONS specified') # Priority and behaviour tested with QE 5.3 if 'crystal_sg' in line.lower(): raise NotImplementedError('CRYSTAL_SG not implemented') elif 'crystal' in line.lower(): cell = cell elif 'bohr' in line.lower(): cell = np.identity(3) * units['Bohr'] elif 'angstrom' in line.lower(): cell = np.identity(3) # elif 'alat' in line.lower(): # cell = np.identity(3) * alat else: if alat is None: raise ValueError('Set lattice parameter in &SYSTEM for ' 'alat coordinates') # Always the default, will be DEPRECATED as mandatory # in future cell = np.identity(3) * alat positions = [] for _dummy in range(n_atoms): split_line = next(trimmed_lines).split() # These can be fractions and other expressions position = np.dot((infix_float(split_line[1]), infix_float(split_line[2]), infix_float(split_line[3])), cell) if len(split_line) > 4: force_mult = (float(split_line[4]), float(split_line[5]), float(split_line[6])) else: force_mult = None positions.append((split_line[0], position, force_mult)) return positions def get_cell_parameters(lines, alat=None): """Parse unit cell from CELL_PARAMETERS card. Parameters ---------- lines : list[str] A list with lines containing the CELL_PARAMETERS card. alat : float | None Unit of lattice vectors in Angstrom. Only used if the card is given in units of alat. alat must be None if CELL_PARAMETERS card is in Bohr or Angstrom. For output files, alat will be parsed from the card header and used in preference to this value. Returns ------- cell : np.array | None Cell parameters as a 3x3 array in Angstrom. If no cell is found None will be returned instead. cell_alat : float | None If a value for alat is given in the card header, this is also returned, otherwise this will be None. Raises ------ ValueError If CELL_PARAMETERS are given in units of bohr or angstrom and alat is not """ cell = None cell_alat = None # no blanks or comment lines, can take three lines for cell trimmed_lines = (line for line in lines if line.strip() and not line[0] == '#') for line in trimmed_lines: if line.strip().startswith('CELL_PARAMETERS'): if cell is not None: # multiple definitions raise ValueError('CELL_PARAMETERS specified multiple times') # Priority and behaviour tested with QE 5.3 if 'bohr' in line.lower(): if alat is not None: raise ValueError('Lattice parameters given in ' '&SYSTEM celldm/A and CELL_PARAMETERS ' 'bohr') cell_units = units['Bohr'] elif 'angstrom' in line.lower(): if alat is not None: raise ValueError('Lattice parameters given in ' '&SYSTEM celldm/A and CELL_PARAMETERS ' 'angstrom') cell_units = 1.0 elif 'alat' in line.lower(): # Output file has (alat = value) if '=' in line: alat = float(line.strip(') \n').split()[-1]) cell_alat = alat elif alat is None: raise ValueError('Lattice parameters must be set in ' '&SYSTEM for alat units') cell_units = alat elif alat is None: # may be DEPRECATED in future cell_units = units['Bohr'] else: # may be DEPRECATED in future cell_units = alat # Grab the parameters; blank lines have been removed cell = [[ffloat(x) for x in next(trimmed_lines).split()[:3]], [ffloat(x) for x in next(trimmed_lines).split()[:3]], [ffloat(x) for x in next(trimmed_lines).split()[:3]]] cell = np.array(cell) * cell_units return cell, cell_alat def str_to_value(string): """Attempt to convert string into int, float (including fortran double), or bool, in that order, otherwise return the string. Valid (case-insensitive) bool values are: '.true.', '.t.', 'true' and 't' (or false equivalents). Parameters ---------- string : str Test to parse for a datatype Returns ------- value : any Parsed string as the most appropriate datatype of int, float, bool or string. """ # Just an integer try: return int(string) except ValueError: pass # Standard float try: return float(string) except ValueError: pass # Fortran double try: return ffloat(string) except ValueError: pass # possible bool, else just the raw string if string.lower() in ('.true.', '.t.', 'true', 't'): return True elif string.lower() in ('.false.', '.f.', 'false', 'f'): return False else: return string.strip("'") def read_fortran_namelist(fileobj): """Takes a fortran-namelist formatted file and returns nested dictionaries of sections and key-value data, followed by a list of lines of text that do not fit the specifications. Behaviour is taken from Quantum ESPRESSO 5.3. Parses fairly convoluted files the same way that QE should, but may not get all the MANDATORY rules and edge cases for very non-standard files: Ignores anything after '!' in a namelist, split pairs on ',' to include multiple key=values on a line, read values on section start and end lines, section terminating character, '/', can appear anywhere on a line. All of these are ignored if the value is in 'quotes'. Parameters ---------- fileobj : file An open file-like object. Returns ------- data : dict of dict Dictionary for each section in the namelist with key = value pairs of data. card_lines : list of str Any lines not used to create the data, assumed to belong to 'cards' in the input file. """ # Espresso requires the correct order data = Namelist() card_lines = [] in_namelist = False section = 'none' # can't be in a section without changing this for line in fileobj: # leading and trailing whitespace never needed line = line.strip() if line.startswith('&'): # inside a namelist section = line.split()[0][1:].lower() # case insensitive if section in data: # Repeated sections are completely ignored. # (Note that repeated keys overwrite within a section) section = "_ignored" data[section] = Namelist() in_namelist = True if not in_namelist and line: # Stripped line is Truthy, so safe to index first character if line[0] not in ('!', '#'): card_lines.append(line) if in_namelist: # parse k, v from line: key = [] value = None in_quotes = False for character in line: if character == ',' and value is not None and not in_quotes: # finished value: data[section][''.join(key).strip()] = str_to_value( ''.join(value).strip()) key = [] value = None elif character == '=' and value is None and not in_quotes: # start writing value value = [] elif character == "'": # only found in value anyway in_quotes = not in_quotes value.append("'") elif character == '!' and not in_quotes: break elif character == '/' and not in_quotes: in_namelist = False break elif value is not None: value.append(character) else: key.append(character) if value is not None: data[section][''.join(key).strip()] = str_to_value( ''.join(value).strip()) return data, card_lines def ffloat(string): """Parse float from fortran compatible float definitions. In fortran exponents can be defined with 'd' or 'q' to symbolise double or quad precision numbers. Double precision numbers are converted to python floats and quad precision values are interpreted as numpy longdouble values (platform specific precision). Parameters ---------- string : str A string containing a number in fortran real format Returns ------- value : float | np.longdouble Parsed value of the string. Raises ------ ValueError Unable to parse a float value. """ if 'q' in string.lower(): return np.longdouble(string.lower().replace('q', 'e')) else: return float(string.lower().replace('d', 'e')) def label_to_symbol(label): """Convert a valid espresso ATOMIC_SPECIES label to a chemical symbol. Parameters ---------- label : str chemical symbol X (1 or 2 characters, case-insensitive) or chemical symbol plus a number or a letter, as in "Xn" (e.g. Fe1) or "X_*" or "X-*" (e.g. C1, C_h; max total length cannot exceed 3 characters). Returns ------- symbol : str The best matching species from ase.utils.chemical_symbols Raises ------ KeyError Couldn't find an appropriate species. Notes ----- It's impossible to tell whether e.g. He is helium or hydrogen labelled 'e'. """ # possibly a two character species # ase Atoms need proper case of chemical symbols. if len(label) >= 2: test_symbol = label[0].upper() + label[1].lower() if test_symbol in chemical_symbols: return test_symbol # finally try with one character test_symbol = label[0].upper() if test_symbol in chemical_symbols: return test_symbol else: raise KeyError('Could not parse species from label {0}.' ''.format(label)) def infix_float(text): """Parse simple infix maths into a float for compatibility with Quantum ESPRESSO ATOMIC_POSITIONS cards. Note: this works with the example, and most simple expressions, but the capabilities of the two parsers are not identical. Will also parse a normal float value properly, but slowly. >>> infix_float('1/2*3^(-1/2)') 0.28867513459481287 Parameters ---------- text : str An arithmetic expression using +, -, *, / and ^, including brackets. Returns ------- value : float Result of the mathematical expression. """ def middle_brackets(full_text): """Extract text from innermost brackets.""" start, end = 0, len(full_text) for (idx, char) in enumerate(full_text): if char == '(': start = idx if char == ')': end = idx + 1 break return full_text[start:end] def eval_no_bracket_expr(full_text): """Calculate value of a mathematical expression, no brackets.""" exprs = [('+', op.add), ('*', op.mul), ('/', op.truediv), ('^', op.pow)] full_text = full_text.lstrip('(').rstrip(')') try: return float(full_text) except ValueError: for symbol, func in exprs: if symbol in full_text: left, right = full_text.split(symbol, 1) # single split return func(eval_no_bracket_expr(left), eval_no_bracket_expr(right)) while '(' in text: middle = middle_brackets(text) text = text.replace(middle, '{}'.format(eval_no_bracket_expr(middle))) return float(eval_no_bracket_expr(text)) ### # Input file writing ### # Ordered and case insensitive KEYS = Namelist(( ('CONTROL', [ 'calculation', 'title', 'verbosity', 'restart_mode', 'wf_collect', 'nstep', 'iprint', 'tstress', 'tprnfor', 'dt', 'outdir', 'wfcdir', 'prefix', 'lkpoint_dir', 'max_seconds', 'etot_conv_thr', 'forc_conv_thr', 'disk_io', 'pseudo_dir', 'tefield', 'dipfield', 'lelfield', 'nberrycyc', 'lorbm', 'lberry', 'gdir', 'nppstr', 'lfcpopt', 'monopole']), ('SYSTEM', [ 'ibrav', 'celldm', 'A', 'B', 'C', 'cosAB', 'cosAC', 'cosBC', 'nat', 'ntyp', 'nbnd', 'tot_charge', 'tot_magnetization', 'starting_magnetization', 'ecutwfc', 'ecutrho', 'ecutfock', 'nr1', 'nr2', 'nr3', 'nr1s', 'nr2s', 'nr3s', 'nosym', 'nosym_evc', 'noinv', 'no_t_rev', 'force_symmorphic', 'use_all_frac', 'occupations', 'one_atom_occupations', 'starting_spin_angle', 'degauss', 'smearing', 'nspin', 'noncolin', 'ecfixed', 'qcutz', 'q2sigma', 'input_dft', 'exx_fraction', 'screening_parameter', 'exxdiv_treatment', 'x_gamma_extrapolation', 'ecutvcut', 'nqx1', 'nqx2', 'nqx3', 'lda_plus_u', 'lda_plus_u_kind', 'Hubbard_U', 'Hubbard_J0', 'Hubbard_alpha', 'Hubbard_beta', 'Hubbard_J', 'starting_ns_eigenvalue', 'U_projection_type', 'edir', 'emaxpos', 'eopreg', 'eamp', 'angle1', 'angle2', 'constrained_magnetization', 'fixed_magnetization', 'lambda', 'report', 'lspinorb', 'assume_isolated', 'esm_bc', 'esm_w', 'esm_efield', 'esm_nfit', 'fcp_mu', 'vdw_corr', 'london', 'london_s6', 'london_c6', 'london_rvdw', 'london_rcut', 'ts_vdw_econv_thr', 'ts_vdw_isolated', 'xdm', 'xdm_a1', 'xdm_a2', 'space_group', 'uniqueb', 'origin_choice', 'rhombohedral', 'zmon', 'realxz', 'block', 'block_1', 'block_2', 'block_height']), ('ELECTRONS', [ 'electron_maxstep', 'scf_must_converge', 'conv_thr', 'adaptive_thr', 'conv_thr_init', 'conv_thr_multi', 'mixing_mode', 'mixing_beta', 'mixing_ndim', 'mixing_fixed_ns', 'diagonalization', 'ortho_para', 'diago_thr_init', 'diago_cg_maxiter', 'diago_david_ndim', 'diago_full_acc', 'efield', 'efield_cart', 'efield_phase', 'startingpot', 'startingwfc', 'tqr']), ('IONS', [ 'ion_dynamics', 'ion_positions', 'pot_extrapolation', 'wfc_extrapolation', 'remove_rigid_rot', 'ion_temperature', 'tempw', 'tolp', 'delta_t', 'nraise', 'refold_pos', 'upscale', 'bfgs_ndim', 'trust_radius_max', 'trust_radius_min', 'trust_radius_ini', 'w_1', 'w_2']), ('CELL', [ 'cell_dynamics', 'press', 'wmass', 'cell_factor', 'press_conv_thr', 'cell_dofree']))) # Number of valence electrons in the pseudopotentials recommended by # http://materialscloud.org/sssp/. These are just used as a fallback for # calculating inital magetization values which are given as a fraction # of valence electrons. SSSP_VALENCE = [ 0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 13.0, 14.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 12.0, 13.0, 14.0, 15.0, 6.0, 7.0, 18.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 36.0, 27.0, 14.0, 15.0, 30.0, 15.0, 32.0, 19.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0] def construct_namelist(parameters=None, warn=False, **kwargs): """ Construct an ordered Namelist containing all the parameters given (as a dictionary or kwargs). Keys will be inserted into their appropriate section in the namelist and the dictionary may contain flat and nested structures. Any kwargs that match input keys will be incorporated into their correct section. All matches are case-insensitive, and returned Namelist object is a case-insensitive dict. If a key is not known to ase, but in a section within `parameters`, it will be assumed that it was put there on purpose and included in the output namelist. Anything not in a section will be ignored (set `warn` to True to see ignored keys). Keys with a dimension (e.g. Hubbard_U(1)) will be incorporated as-is so the `i` should be made to match the output. The priority of the keys is: kwargs[key] > parameters[key] > parameters[section][key] Only the highest priority item will be included. Parameters ---------- parameters: dict Flat or nested set of input parameters. warn: bool Enable warnings for unused keys. Returns ------- input_namelist: Namelist pw.x compatible namelist of input parameters. """ # Convert everything to Namelist early to make case-insensitive if parameters is None: parameters = Namelist() else: # Maximum one level of nested dict # Don't modify in place parameters_namelist = Namelist() for key, value in parameters.items(): if isinstance(value, dict): parameters_namelist[key] = Namelist(value) else: parameters_namelist[key] = value parameters = parameters_namelist # Just a dict kwargs = Namelist(kwargs) # Final parameter set input_namelist = Namelist() # Collect for section in KEYS: sec_list = Namelist() for key in KEYS[section]: # Check all three separately and pop them all so that # we can check for missing values later if key in parameters.get(section, {}): sec_list[key] = parameters[section].pop(key) if key in parameters: sec_list[key] = parameters.pop(key) if key in kwargs: sec_list[key] = kwargs.pop(key) # Check if there is a key(i) version (no extra parsing) for arg_key in parameters.get(section, {}): if arg_key.split('(')[0].strip().lower() == key.lower(): sec_list[arg_key] = parameters[section].pop(arg_key) for arg_key in parameters: if arg_key.split('(')[0].strip().lower() == key.lower(): sec_list[arg_key] = parameters.pop(arg_key) for arg_key in kwargs: if arg_key.split('(')[0].strip().lower() == key.lower(): sec_list[arg_key] = kwargs.pop(arg_key) # Add to output input_namelist[section] = sec_list unused_keys = list(kwargs) # pass anything else already in a section for key, value in parameters.items(): if key in KEYS and isinstance(value, dict): input_namelist[key].update(value) elif isinstance(value, dict): unused_keys.extend(list(value)) else: unused_keys.append(key) if warn and unused_keys: warnings.warn('Unused keys: {}'.format(', '.join(unused_keys))) return input_namelist def grep_valence(pseudopotential): """ Given a UPF pseudopotential file, find the number of valence atoms. Parameters ---------- pseudopotential: str Filename of the pseudopotential. Returns ------- valence: float Valence as reported in the pseudopotential. Raises ------ ValueError If valence cannot be found in the pseudopotential. """ # Example lines # Sr.pbe-spn-rrkjus_psl.1.0.0.UPF: z_valence="1.000000000000000E+001" # Ta_pbe_v1.uspp.F.UPF: 13.00000000000 Z valence with open(pseudopotential) as psfile: for line in psfile: if 'z valence' in line.lower(): return float(line.split()[0]) elif 'z_valence' in line.lower(): return float(line.split('=')[-1].strip().strip('"')) else: raise ValueError('Valence missing in {}'.format(pseudopotential)) def cell_to_ibrav(cell, ibrav): """ Calculate the appropriate `celldm(..)` parameters for the given ibrav using the given cell. The units for `celldm(..)` are Bohr. Does minimal checking of the cell shape, so it is possible to create a nonsense structure if the ibrav is inapproprite for the cell. These are derived to be symmetric with the routine for constructing the cell from ibrav parameters so directions of some vectors may be unexpected. Parameters ---------- cell : np.array A 3x3 representation of a unit cell ibrav : int Bravais-lattice index according to the pw.x designations. Returns ------- parameters : dict A dictionary with all the necessary `celldm(..)` keys assigned necessary values (in units of Bohr). Also includes `ibrav` so it can be passed back to `ibrav_to_cell`. Raises ------ NotImplementedError Only a limited number of ibrav settings can be parsed. An error is raised if the ibrav interpretation is not implemented. """ parameters = {'ibrav': ibrav} if ibrav == 1: parameters['celldm(1)'] = cell[0][0] / units['Bohr'] elif ibrav in [2, 3, -3]: parameters['celldm(1)'] = cell[0][2] * 2 / units['Bohr'] elif ibrav in [4, 6]: parameters['celldm(1)'] = cell[0][0] / units['Bohr'] parameters['celldm(3)'] = cell[2][2] / cell[0][0] elif ibrav in [5, -5]: # Manually derive a = np.linalg.norm(cell[0]) cosab = np.dot(cell[0], cell[1]) / (a ** 2) parameters['celldm(1)'] = a / units['Bohr'] parameters['celldm(4)'] = cosab elif ibrav == 7: parameters['celldm(1)'] = cell[0][0] * 2 / units['Bohr'] parameters['celldm(3)'] = cell[2][2] / cell[0][0] elif ibrav == 8: parameters['celldm(1)'] = cell[0][0] / units['Bohr'] parameters['celldm(2)'] = cell[1][1] / cell[0][0] parameters['celldm(3)'] = cell[2][2] / cell[0][0] elif ibrav in [9, -9]: parameters['celldm(1)'] = cell[0][0] * 2 / units['Bohr'] parameters['celldm(2)'] = cell[1][1] / cell[0][0] parameters['celldm(3)'] = cell[2][2] * 2 / cell[0][0] elif ibrav in [10, 11]: parameters['celldm(1)'] = cell[0][0] * 2 / units['Bohr'] parameters['celldm(2)'] = cell[1][1] / cell[0][0] parameters['celldm(3)'] = cell[2][2] / cell[0][0] elif ibrav == 12: # cos^2 + sin^2 b = (cell[1][0]**2 + cell[1][1]**2)**0.5 parameters['celldm(1)'] = cell[0][0] / units['Bohr'] parameters['celldm(2)'] = b / cell[0][0] parameters['celldm(3)'] = cell[2][2] / cell[0][0] parameters['celldm(4)'] = cell[1][0] / b elif ibrav == -12: # cos^2 + sin^2 c = (cell[2][0]**2 + cell[2][2]**2)**0.5 parameters['celldm(1)'] = cell[0][0] / units['Bohr'] parameters['celldm(2)'] = cell[1][1] / cell[0][0] parameters['celldm(3)'] = c / cell[0][0] parameters['celldm(4)'] = cell[2][0] / c elif ibrav == 13: b = (cell[1][0]**2 + cell[1][1]**2)**0.5 parameters['celldm(1)'] = cell[0][0] * 2 / units['Bohr'] parameters['celldm(2)'] = b / (cell[0][0] * 2) parameters['celldm(3)'] = cell[2][2] / cell[0][0] parameters['celldm(4)'] = cell[1][0] / b elif ibrav == 14: # Manually derive a, b, c = np.linalg.norm(cell, axis=1) cosbc = np.dot(cell[1], cell[2]) / (b * c) cosac = np.dot(cell[0], cell[2]) / (a * c) cosab = np.dot(cell[0], cell[1]) / (a * b) parameters['celldm(1)'] = a / units['Bohr'] parameters['celldm(2)'] = b / a parameters['celldm(3)'] = c / a parameters['celldm(4)'] = cosbc parameters['celldm(5)'] = cosac parameters['celldm(6)'] = cosab else: raise NotImplementedError('ibrav = {0} is not implemented' ''.format(ibrav)) return parameters def kspacing_to_grid(atoms, spacing, calculated_spacing=None): """ Calculate the kpoint mesh that is equivalent to the given spacing in reciprocal space (units Angstrom^-1). The number of kpoints is each dimension is rounded up (compatible with CASTEP). Parameters ---------- atoms: ase.Atoms A structure that can have get_reciprocal_cell called on it. spacing: float Minimum K-Point spacing in $A^{-1}$. calculated_spacing : list If a three item list (or similar mutable sequence) is given the members will be replaced with the actual calculated spacing in $A^{-1}$. Returns ------- kpoint_grid : [int, int, int] MP grid specification to give the required spacing. """ # No factor of 2pi in ase, everything in A^-1 # reciprocal dimensions r_x, r_y, r_z = np.linalg.norm(atoms.get_reciprocal_cell(), axis=1) kpoint_grid = [int(r_x/spacing) + 1, int(r_y/spacing) + 1, int(r_z/spacing) + 1] if calculated_spacing is not None: calculated_spacing[:] = [r_x/kpoint_grid[0], r_y/kpoint_grid[1], r_z/kpoint_grid[2]] return kpoint_grid def write_espresso_in(fd, atoms, input_data=None, pseudopotentials=None, kspacing=None, kpts=None, koffset=(0, 0, 0), **kwargs): """ Create an input file for pw.x. Use set_initial_magnetic_moments to turn on spin, if ispin is set to 2 with no magnetic moments, they will all be set to 0.0. Magnetic moments will be converted to the QE units (fraction of valence electrons) using any pseudopotential files found, or a best guess for the number of valence electrons. Units are not converted for any other input data, so use Quantum ESPRESSO units (Usually Ry or atomic units). Keys with a dimension (e.g. Hubbard_U(1)) will be incorporated as-is so the `i` should be made to match the output. Implemented features: - Conversion of :class:`ase.constraints.FixAtoms` and :class:`ase.constraints.FixCartesian`. - `starting_magnetization` derived from the `mgmoms` and pseudopotentials (searches default paths for pseudo files.) - Automatic assignment of options to their correct sections. - Interpretation of ibrav (cell must exactly match the vectors defined in the QE docs). Not implemented: - Lists of k-points - Other constraints - Hubbard parameters - Validation of the argument types for input - Validation of required options - Reorientation for ibrav settings - Noncollinear magnetism Parameters ---------- fd: file A file like object to write the input file to. atoms: Atoms A single atomistic configuration to write to `fd`. input_data: dict A flat or nested dictionary with input parameters for pw.x pseudopotentials: dict A filename for each atomic species, e.g. {'O': 'O.pbe-rrkjus.UPF', 'H': 'H.pbe-rrkjus.UPF'}. A dummy name will be used if none are given. kspacing: float Generate a grid of k-points with this as the minimum distance, in A^-1 between them in reciprocal space. If set to None, kpts will be used instead. kpts: Number of kpoints in each dimension for automatic kpoint generation. koffset: (int, int, int) Offset of kpoints in each direction. Must be 0 (no offset) or 1 (half grid offset). Setting to True is equivalent to (1, 1, 1). """ # Convert to a namelist to make working with parameters much easier # Note that the name ``input_data`` is chosen to prevent clash with # ``parameters`` in Calculator objects input_parameters = construct_namelist(input_data, **kwargs) # Convert ase constraints to QE constraints # Nx3 array of force multipliers matches what QE uses # Do this early so it is available when constructing the atoms card constraint_mask = np.ones((len(atoms), 3), dtype='int') for constraint in atoms.constraints: if isinstance(constraint, FixAtoms): constraint_mask[constraint.index] = 0 elif isinstance(constraint, FixCartesian): constraint_mask[constraint.a] = constraint.mask else: warnings.warn('Ignored unknown constraint {}'.format(constraint)) # Deal with pseudopotentials # Look in all possible locations for the pseudos and try to figure # out the number of valence electrons pseudo_dirs = [] if 'pseudo_dir' in input_parameters['control']: pseudo_dirs.append(input_parameters['control']['pseudo_dir']) if 'ESPRESSO_PSEUDO' in os.environ: pseudo_dirs.append(os.environ['ESPRESSO_PSEUDO']) pseudo_dirs.append(path.expanduser('~/espresso/pseudo/')) # Species info holds the information on the pseudopotential and # associated for each element if pseudopotentials is None: pseudopotentials = {} species_info = {} for species in set(atoms.get_chemical_symbols()): pseudo = pseudopotentials.get(species, '{}_dummy.UPF'.format(species)) for pseudo_dir in pseudo_dirs: if path.exists(path.join(pseudo_dir, pseudo)): valence = grep_valence(path.join(pseudo_dir, pseudo)) break else: # not found in a file valence = SSSP_VALENCE[atomic_numbers[species]] species_info[species] = {'pseudo': pseudo, 'valence': valence} # Convert atoms into species. # Each different magnetic moment needs to be a separate type even with # the same pseudopotential (e.g. an up and a down for AFM). # if any magmom are > 0 or nspin == 2 then use species labels. # Rememeber: magnetisation uses 1 based indexes atomic_species = OrderedDict() atomic_species_str = [] atomic_positions_str = [] nspin = input_parameters['system'].get('nspin', 1) # 1 is the default if any(atoms.get_initial_magnetic_moments()): if nspin == 1: # Force spin on input_parameters['system']['nspin'] = 2 nspin = 2 if nspin == 2: # Spin on for atom, magmom in zip(atoms, atoms.get_initial_magnetic_moments()): if (atom.symbol, magmom) not in atomic_species: # spin as fraction of valence fspin = float(magmom) / species_info[atom.symbol]['valence'] # Index in the atomic species list sidx = len(atomic_species) + 1 # Index for that atom type; no index for first one tidx = sum(atom.symbol == x[0] for x in atomic_species) or ' ' atomic_species[(atom.symbol, magmom)] = (sidx, tidx) # Add magnetization to the input file mag_str = 'starting_magnetization({0})'.format(sidx) input_parameters['system'][mag_str] = fspin atomic_species_str.append( '{species}{tidx} {mass} {pseudo}\n'.format( species=atom.symbol, tidx=tidx, mass=atom.mass, pseudo=species_info[atom.symbol]['pseudo'])) # lookup tidx to append to name sidx, tidx = atomic_species[(atom.symbol, magmom)] # only inclued mask if something is fixed if not all(constraint_mask[atom.index]): mask = ' {mask[0]} {mask[1]} {mask[2]}'.format( mask=constraint_mask[atom.index]) else: mask = '' # construct line for atomic positions atomic_positions_str.append( '{atom.symbol}{tidx} ' '{atom.x:.10f} {atom.y:.10f} {atom.z:.10f}' '{mask}\n'.format(atom=atom, tidx=tidx, mask=mask)) else: # Do nothing about magnetisation for atom in atoms: if atom.symbol not in atomic_species: atomic_species[atom.symbol] = True # just a placeholder atomic_species_str.append( '{species} {mass} {pseudo}\n'.format( species=atom.symbol, mass=atom.mass, pseudo=species_info[atom.symbol]['pseudo'])) # only inclued mask if something is fixed if not all(constraint_mask[atom.index]): mask = ' {mask[0]} {mask[1]} {mask[2]}'.format( mask=constraint_mask[atom.index]) else: mask = '' atomic_positions_str.append( '{atom.symbol} ' '{atom.x:.10f} {atom.y:.10f} {atom.z:.10f} ' '{mask}\n'.format(atom=atom, mask=mask)) # Add computed parameters # different magnetisms means different types input_parameters['system']['ntyp'] = len(atomic_species) input_parameters['system']['nat'] = len(atoms) # Use cell as given or fit to a specific ibrav if 'ibrav' in input_parameters['system']: ibrav = input_parameters['system']['ibrav'] if ibrav != 0: celldm = cell_to_ibrav(atoms.cell, ibrav) regen_cell = ibrav_to_cell(celldm)[1] if not np.allclose(atoms.cell, regen_cell): warnings.warn('Input cell does not match requested ibrav' '{} != {}'.format(regen_cell, atoms.cell)) input_parameters['system'].update(celldm) else: # Just use standard cell block input_parameters['system']['ibrav'] = 0 # Construct input file into this pwi = [] # Assume sections are ordered (taken care of in namelist construction) # and that repr converts to a QE readable representation (except bools) for section in input_parameters: pwi.append('&{0}\n'.format(section.upper())) for key, value in input_parameters[section].items(): if value is True: pwi.append(' {0:16} = .true.\n'.format(key)) elif value is False: pwi.append(' {0:16} = .false.\n'.format(key)) else: # repr format to get quotes around strings pwi.append(' {0:16} = {1!r:}\n'.format(key, value)) pwi.append('/\n') # terminate section pwi.append('\n') # Pseudopotentials pwi.append('ATOMIC_SPECIES\n') pwi.extend(atomic_species_str) pwi.append('\n') # KPOINTS - add a MP grid as required if kspacing is not None: kgrid = kspacing_to_grid(atoms, kspacing) elif kpts is not None: kgrid = kpts else: kgrid = (1, 1, 1) # True and False work here and will get converted by ':d' format if isinstance(koffset, int): koffset = (koffset, ) * 3 # QE defaults to gamma point, make it explicit if all([x == 1 for x in kgrid]) and not any(koffset): pwi.append('K_POINTS gamma\n') pwi.append('\n') else: pwi.append('K_POINTS automatic\n') pwi.append('{0[0]} {0[1]} {0[2]} {1[0]:d} {1[1]:d} {1[2]:d}\n' ''.format(kgrid, koffset)) pwi.append('\n') # CELL block, if required if input_parameters['SYSTEM']['ibrav'] == 0: pwi.append('CELL_PARAMETERS angstrom\n') pwi.append('{cell[0][0]:.14f} {cell[0][1]:.14f} {cell[0][2]:.14f}\n' '{cell[1][0]:.14f} {cell[1][1]:.14f} {cell[1][2]:.14f}\n' '{cell[2][0]:.14f} {cell[2][1]:.14f} {cell[2][2]:.14f}\n' ''.format(cell=atoms.cell)) pwi.append('\n') # Positions - already constructed, but must appear after namelist pwi.append('ATOMIC_POSITIONS angstrom\n') pwi.extend(atomic_positions_str) pwi.append('\n') # DONE! fd.write(''.join(pwi)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/etsf.py000066400000000000000000000066741316323560300224760ustar00rootroot00000000000000import numpy as np from ase.atoms import Atoms from ase.units import Bohr def read_etsf(filename): yield ETSFReader(filename).read_atoms() def write_etsf(filename, atoms): ETSFWriter(filename).write_atoms(atoms) class ETSFReader: def __init__(self, filename): from Scientific.IO.NetCDF import NetCDFFile self.nc = NetCDFFile(filename, 'r') def read_atoms(self): var = self.nc.variables cell = var['primitive_vectors'] assert cell.units == 'atomic units' species = var['atom_species'][:] spos = var['reduced_atom_positions'][:] numbers = var['atomic_numbers'][:] return Atoms(numbers=numbers[species - 1], scaled_positions=spos, cell=cell[:] * Bohr, pbc=True) class ETSFWriter: def __init__(self, filename): from Scientific.IO.NetCDF import NetCDFFile self.nc = NetCDFFile(filename, 'w') self.nc.file_format = 'ETSF Nanoquanta' self.nc.file_format_version = np.array([3.3], dtype=np.float32) self.nc.Conventions = 'http://www.etsf.eu/fileformats/' self.nc.history = 'File generated by ASE' def write_atoms(self, atoms): specie_a = np.empty(len(atoms), np.int32) nspecies = 0 species = {} numbers = [] for a, Z in enumerate(atoms.get_atomic_numbers()): if Z not in species: species[Z] = nspecies nspecies += 1 numbers.append(Z) specie_a[a] = species[Z] dimensions = [ ('character_string_length', 80), ('number_of_atoms', len(atoms)), ('number_of_atom_species', nspecies), ('number_of_cartesian_directions', 3), ('number_of_reduced_dimensions', 3), ('number_of_vectors', 3)] for name, size in dimensions: self.nc.createDimension(name, size) var = self.add_variable var('primitive_vectors', ('number_of_vectors', 'number_of_cartesian_directions'), atoms.cell / Bohr, units='atomic units') var('atom_species', ('number_of_atoms',), specie_a + 1) var('reduced_atom_positions', ('number_of_atoms', 'number_of_reduced_dimensions'), atoms.get_scaled_positions()) var('atomic_numbers', ('number_of_atom_species',), np.array(numbers, dtype=float)) def close(self): self.nc.close() def add_variable(self, name, dims, data=None, **kwargs): if data is None: char = 'd' else: if isinstance(data, np.ndarray): char = data.dtype.char elif isinstance(data, float): char = 'd' elif isinstance(data, int): char = 'i' else: char = 'c' var = self.nc.createVariable(name, char, dims) for attr, value in kwargs.items(): setattr(var, attr, value) if data is not None: if len(dims) == 0: var.assignValue(data) else: if char == 'c': if len(dims) == 1: var[:len(data)] = data else: for i, x in enumerate(data): var[i, :len(x)] = x else: var[:] = data return var ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/exciting.py000066400000000000000000000115161316323560300233360ustar00rootroot00000000000000""" This is the implementation of the exciting I/O functions The functions are called with read write using the format "exciting" """ import numpy as np import xml.etree.ElementTree as ET from ase.atoms import Atoms from ase.units import Bohr from xml.dom import minidom def read_exciting(fileobj, index=-1): """Reads structure from exiting xml file. Parameters ---------- fileobj: file object File handle from which data should be read. Other parameters ---------------- index: integer -1 Not used in this implementation. """ # Parse file into element tree doc = ET.parse(fileobj) root = doc.getroot() speciesnodes = root.find('structure').getiterator('species') symbols = [] positions = [] basevects = [] atoms = None # Collect data from tree for speciesnode in speciesnodes: symbol = speciesnode.get('speciesfile').split('.')[0] natoms = speciesnode.getiterator('atom') for atom in natoms: x, y, z = atom.get('coord').split() positions.append([float(x), float(y), float(z)]) symbols.append(symbol) # scale unit cell accorting to scaling attributes if 'scale' in doc.find('structure/crystal').attrib: scale = float(str(doc.find('structure/crystal').attrib['scale'])) else: scale = 1 if 'stretch' in doc.find('structure/crystal').attrib: a, b, c = doc.find('structure/crystal').attrib['stretch'].text.split() stretch = np.array([float(a), float(b), float(c)]) else: stretch = np.array([1.0, 1.0, 1.0]) basevectsn = root.findall('structure/crystal/basevect') for basevect in basevectsn: x, y, z = basevect.text.split() basevects.append(np.array([float(x) * Bohr * stretch[0], float(y) * Bohr * stretch[1], float(z) * Bohr * stretch[2] ]) * scale) atoms = Atoms(symbols=symbols, cell=basevects) atoms.set_scaled_positions(positions) if 'molecule' in root.find('structure').attrib.keys(): if root.find('structure').attrib['molecule']: atoms.set_pbc(False) else: atoms.set_pbc(True) return atoms def write_exciting(filename, images): """writes exciting input structure in XML Parameters ---------- filename : str Name of file to which data should be written. images : Atom Object or List of Atoms objects This function will write the first Atoms object to file. Returns ------- """ fileobj = open(filename, 'wb') root = atoms2etree(images) rough_string = ET.tostring(root, 'utf-8') reparsed = minidom.parseString(rough_string) pretty = reparsed.toprettyxml(indent="\t") fileobj.write(pretty.encode('utf-8')) def atoms2etree(images): """This function creates the XML DOM corresponding to the structure for use in write and calculator Parameters ---------- images : Atom Object or List of Atoms objects Returns ------- root : etree object Element tree of exciting input file containing the structure """ if not isinstance(images, (list, tuple)): images = [images] root = ET.Element('input') root.set( '{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation', 'http://xml.exciting-code.org/excitinginput.xsd') title = ET.SubElement(root, 'title') title.text = '' structure = ET.SubElement(root, 'structure') crystal = ET.SubElement(structure, 'crystal') atoms = images[0] for vec in atoms.cell: basevect = ET.SubElement(crystal, 'basevect') basevect.text = '%.14f %.14f %.14f' % tuple(vec / Bohr) oldsymbol = '' oldrmt = -1 newrmt = -1 scaled = atoms.get_scaled_positions() for aindex, symbol in enumerate(atoms.get_chemical_symbols()): if 'rmt' in atoms.arrays: newrmt = atoms.get_array('rmt')[aindex] / Bohr if symbol != oldsymbol or newrmt != oldrmt: speciesnode = ET.SubElement(structure, 'species', speciesfile='%s.xml' % symbol, chemicalSymbol=symbol) oldsymbol = symbol if 'rmt' in atoms.arrays: oldrmt = atoms.get_array('rmt')[aindex] / Bohr if oldrmt > 0: speciesnode.attrib['rmt'] = '%.4f' % oldrmt atom = ET.SubElement(speciesnode, 'atom', coord='%.14f %.14f %.14f' % tuple(scaled[aindex])) if 'momenta' in atoms.arrays: atom.attrib['bfcmt'] = '%.14f %.14f %.14f' % tuple( atoms.get_array('mommenta')[aindex]) return root ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/extxyz.py000066400000000000000000000506471316323560300231070ustar00rootroot00000000000000""" Extended XYZ support Read/write files in "extended" XYZ format, storing additional per-configuration information as key-value pairs on the XYZ comment line, and additional per-atom properties as extra columns. See http://jrkermode.co.uk/quippy/io.html#extendedxyz for a full description of the Extended XYZ file format. Contributed by James Kermode """ from __future__ import print_function from itertools import islice import re import numpy as np from ase.atoms import Atoms from ase.calculators.calculator import all_properties, Calculator from ase.calculators.singlepoint import SinglePointCalculator from ase.spacegroup.spacegroup import Spacegroup from ase.parallel import paropen from ase.utils import basestring __all__ = ['read_xyz', 'write_xyz', 'iread_xyz'] PROPERTY_NAME_MAP = {'positions': 'pos', 'numbers': 'Z', 'charges': 'charge', 'symbols': 'species'} REV_PROPERTY_NAME_MAP = dict(zip(PROPERTY_NAME_MAP.values(), PROPERTY_NAME_MAP.keys())) KEY_QUOTED_VALUE = re.compile(r'([A-Za-z_]+[A-Za-z0-9_-]*)' + r'\s*=\s*["\{\}]([^"\{\}]+)["\{\}]\s*') KEY_VALUE = re.compile(r'([A-Za-z_]+[A-Za-z0-9_]*)\s*=' + r'\s*([^\s]+)\s*') KEY_RE = re.compile(r'([A-Za-z_]+[A-Za-z0-9_-]*)\s*') UNPROCESSED_KEYS = ['uid'] def key_val_str_to_dict(s): """ Parse strings in the form 'key1=value1 key2="quoted value"' """ d = {} s = s.strip() while True: # Match quoted string first, then fall through to plain key=value m = KEY_QUOTED_VALUE.match(s) if m is None: m = KEY_VALUE.match(s) if m is not None: s = KEY_VALUE.sub('', s, 1) else: # Just a key with no value m = KEY_RE.match(s) if m is not None: s = KEY_RE.sub('', s, 1) else: s = KEY_QUOTED_VALUE.sub('', s, 1) if m is None: break # No more matches key = m.group(1) try: value = m.group(2) except IndexError: # default value is 'T' (True) value = 'T' if key.lower() not in UNPROCESSED_KEYS: # Try to convert to (arrays of) floats, ints try: numvalue = [] for x in value.split(): if x.find('.') == -1: numvalue.append(int(float(x))) else: numvalue.append(float(x)) if len(numvalue) == 1: numvalue = numvalue[0] # Only one number elif len(numvalue) == 9: # special case: 3x3 matrix, fortran ordering numvalue = np.array(numvalue).reshape((3, 3), order='F') else: numvalue = np.array(numvalue) # vector value = numvalue except (ValueError, OverflowError): pass # Parse boolean values: 'T' -> True, 'F' -> False, # 'T T F' -> [True, True, False] if isinstance(value, basestring): str_to_bool = {'T': True, 'F': False} if len(value.split()) > 1: if all([x in str_to_bool.keys() for x in value.split()]): value = [str_to_bool[x] for x in value.split()] elif value in str_to_bool: value = str_to_bool[value] d[key] = value return d def key_val_dict_to_str(d, sep=' '): """ Convert atoms.info dictionary to extended XYZ string representation """ if len(d) == 0: return '' s = '' type_val_map = {(bool, True): 'T', (bool, False): 'F', (np.bool_, True): 'T', (np.bool_, False): 'F'} s = '' for key in d.keys(): val = d[key] if isinstance(val, dict): continue if hasattr(val, '__iter__'): val = np.array(val) val = ' '.join(str(type_val_map.get((type(x), x), x)) for x in val.reshape(val.size, order='F')) val.replace('[', '') val.replace(']', '') elif isinstance(val, Spacegroup): val = val.symbol else: val = type_val_map.get((type(val), val), val) if val is None: s = s + '%s%s' % (key, sep) elif isinstance(val, basestring) and ' ' in val: s = s + '%s="%s"%s' % (key, val, sep) else: s = s + '%s=%s%s' % (key, str(val), sep) return s.strip() def parse_properties(prop_str): """ Parse extended XYZ properties format string Format is "[NAME:TYPE:NCOLS]...]", e.g. "species:S:1:pos:R:3". NAME is the name of the property. TYPE is one of R, I, S, L for real, integer, string and logical. NCOLS is number of columns for that property. """ properties = {} properties_list = [] dtypes = [] converters = [] fields = prop_str.split(':') def parse_bool(x): """ Parse bool to string """ return {'T': True, 'F': False, 'True': True, 'False': False}.get(x) fmt_map = {'R': ('d', float), 'I': ('i', int), 'S': (object, str), 'L': ('bool', parse_bool)} for name, ptype, cols in zip(fields[::3], fields[1::3], [int(x) for x in fields[2::3]]): if ptype not in ('R', 'I', 'S', 'L'): raise ValueError('Unknown property type: ' + ptype) ase_name = REV_PROPERTY_NAME_MAP.get(name, name) dtype, converter = fmt_map[ptype] if cols == 1: dtypes.append((name, dtype)) converters.append(converter) else: for c in range(cols): dtypes.append((name + str(c), dtype)) converters.append(converter) properties[name] = (ase_name, cols) properties_list.append(name) dtype = np.dtype(dtypes) return properties, properties_list, dtype, converters def _read_xyz_frame(lines, natoms): # comment line line = next(lines) info = key_val_str_to_dict(line) pbc = None if 'pbc' in info: pbc = info['pbc'] del info['pbc'] elif 'Lattice' in info: # default pbc for extxyz file containing Lattice # is True in all directions pbc = [True, True, True] cell = None if 'Lattice' in info: # NB: ASE cell is transpose of extended XYZ lattice cell = info['Lattice'].T del info['Lattice'] if 'Properties' not in info: # Default set of properties is atomic symbols and positions only info['Properties'] = 'species:S:1:pos:R:3' properties, names, dtype, convs = parse_properties(info['Properties']) del info['Properties'] data = [] for ln in range(natoms): line = next(lines) vals = line.split() row = tuple([conv(val) for conv, val in zip(convs, vals)]) data.append(row) try: data = np.array(data, dtype) except TypeError: raise IOError('Badly formatted data, ' + 'or end of file reached before end of frame') arrays = {} for name in names: ase_name, cols = properties[name] if cols == 1: value = data[name] else: value = np.vstack([data[name + str(c)] for c in range(cols)]).T arrays[ase_name] = value symbols = None if 'symbols' in arrays: symbols = arrays['symbols'] del arrays['symbols'] numbers = None duplicate_numbers = None if 'numbers' in arrays: if symbols is None: numbers = arrays['numbers'] else: duplicate_numbers = arrays['numbers'] del arrays['numbers'] charges = None if 'charges' in arrays: charges = arrays['charges'] del arrays['charges'] positions = None if 'positions' in arrays: positions = arrays['positions'] del arrays['positions'] atoms = Atoms(symbols=symbols, positions=positions, numbers=numbers, charges = charges, cell=cell, pbc=pbc, info=info) for name, array in arrays.items(): atoms.new_array(name, array) if duplicate_numbers is not None: atoms.set_atomic_numbers(duplicate_numbers) # Load results of previous calculations into SinglePointCalculator results = {} for key in list(atoms.info.keys()): if key in all_properties: results[key] = atoms.info[key] # special case for stress- convert to Voigt 6-element form if key.startswith('stress') and results[key].shape == (3, 3): stress = results[key] stress = np.array([stress[0, 0], stress[1, 1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1]]) results[key] = stress del atoms.info[key] for key in list(atoms.arrays.keys()): if key in all_properties: results[key] = atoms.arrays[key] del atoms.arrays[key] if results != {}: calculator = SinglePointCalculator(atoms, **results) atoms.set_calculator(calculator) return atoms class XYZError(IOError): pass class XYZChunk: def __init__(self, lines, natoms): self.lines = lines self.natoms = natoms def build(self): """Convert unprocessed chunk into Atoms.""" return _read_xyz_frame(iter(self.lines), self.natoms) def ixyzchunks(fd): """Yield unprocessed chunks (header, lines) for each xyz image.""" while True: line = next(fd).strip() # Raises StopIteration on empty file try: natoms = int(line) except ValueError: raise XYZError('Expected integer, found "{0}"'.format(line)) try: lines = [next(fd) for _ in range(1 + natoms)] except StopIteration: raise XYZError('Incomplete XYZ chunk') yield XYZChunk(lines, natoms) class ImageIterator: """""" def __init__(self, ichunks): self.ichunks = ichunks def __call__(self, fd, indices=-1): if not hasattr(indices, 'start'): if indices < 0: indices = slice(indices - 1, indices) else: indices = slice(indices, indices + 1) for chunk in self._getslice(fd, indices): yield chunk.build() def _getslice(self, fd, indices): try: iterator = islice(self.ichunks(fd), indices.start, indices.stop, indices.step) except ValueError: # Negative indices. Go through the whole thing to get the length, # which allows us to evaluate the slice, and then read it again startpos = fd.tell() nchunks = 0 for chunk in self.ichunks(fd): nchunks += 1 fd.seek(startpos) indices_tuple = indices.indices(nchunks) iterator = islice(self.ichunks(fd), *indices_tuple) return iterator iread_xyz = ImageIterator(ixyzchunks) def read_xyz(fileobj, index=-1): """ Read from a file in Extended XYZ format index is the frame to read, default is last frame (index=-1). """ if isinstance(fileobj, basestring): fileobj = open(fileobj) if not isinstance(index, int) and not isinstance(index, slice): raise TypeError('Index argument is neither slice nor integer!') # If possible, build a partial index up to the last frame required last_frame = None if isinstance(index, int) and index >= 0: last_frame = index elif isinstance(index, slice): if index.stop is not None and index.stop >= 0: last_frame = index.stop # scan through file to find where the frames start fileobj.seek(0) frames = [] while fileobj: frame_pos = fileobj.tell() line = fileobj.readline() if line.strip() == '': break natoms = int(line) frames.append((frame_pos, natoms)) if last_frame is not None and len(frames) > last_frame: break fileobj.readline() # read comment line for i in range(natoms): fileobj.readline() if isinstance(index, int): if index < 0: tmpsnp = len(frames) + index trbl = range(tmpsnp, tmpsnp + 1, 1) else: trbl = range(index, index + 1, 1) elif isinstance(index, slice): start = index.start stop = index.stop step = index.step if start is None: start = 0 elif start < 0: start = len(frames) + start if step is None: step = 1 if stop is None: stop = len(frames) elif stop < 0: stop = len(frames) + stop trbl = range(start, stop, step) if step < 0: trbl.reverse() for index in trbl: frame_pos, natoms = frames[index] fileobj.seek(frame_pos) # check for consistency with frame index table assert int(fileobj.readline()) == natoms yield _read_xyz_frame(fileobj, natoms) def output_column_format(atoms, columns, arrays, write_info=True, results=None): """ Helper function to build extended XYZ comment line """ fmt_map = {'d': ('R', '%16.8f '), 'f': ('R', '%16.8f '), 'i': ('I', '%8d '), 'O': ('S', '%s '), 'S': ('S', '%s '), 'U': ('S', '%s '), 'b': ('L', ' %.1s ')} # NB: Lattice is stored as tranpose of ASE cell, # with Fortran array ordering lattice_str = ('Lattice="' + ' '.join([str(x) for x in np.reshape(atoms.cell.T, 9, order='F')]) + '"') property_names = [] property_types = [] property_ncols = [] dtypes = [] formats = [] for column in columns: array = arrays[column] dtype = array.dtype property_name = PROPERTY_NAME_MAP.get(column, column) property_type, fmt = fmt_map[dtype.kind] property_names.append(property_name) property_types.append(property_type) if (len(array.shape) == 1 or (len(array.shape) == 2 and array.shape[1] == 1)): ncol = 1 dtypes.append((column, dtype)) else: ncol = array.shape[1] for c in range(ncol): dtypes.append((column + str(c), dtype)) formats.extend([fmt] * ncol) property_ncols.append(ncol) props_str = ':'.join([':'.join(x) for x in zip(property_names, property_types, [str(nc) for nc in property_ncols])]) comment_str = '' if atoms.cell.any(): comment_str += lattice_str + ' ' comment_str += 'Properties={}'.format(props_str) info = {} if write_info: info.update(atoms.info) if results is not None: info.update(results) info['pbc'] = atoms.get_pbc() # always save periodic boundary conditions comment_str += ' ' + key_val_dict_to_str(info) dtype = np.dtype(dtypes) fmt = ''.join(formats) + '\n' return comment_str, property_ncols, dtype, fmt def write_xyz(fileobj, images, comment='', columns=None, write_info=True, write_results=True, plain=False): """ Write output in extended XYZ format Optionally, specify which columns (arrays) to include in output, and whether to write the contents of the Atoms.info dict to the XYZ comment line (default is True) and the results of any calculator attached to this Atoms. """ if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if hasattr(images, 'get_positions'): images = [images] for atoms in images: natoms = len(atoms) if columns is None: fr_cols = None else: fr_cols = columns[:] if fr_cols is None: fr_cols = (['symbols', 'positions'] + [key for key in atoms.arrays.keys() if key not in ['symbols', 'positions', 'species', 'pos']]) if plain: fr_cols = ['symbols', 'positions'] write_info = False write_results = False per_frame_results = {} per_atom_results = {} if write_results: calculator = atoms.get_calculator() if (calculator is not None and isinstance(calculator, Calculator)): for key in all_properties: value = calculator.results.get(key, None) if value is None: # skip missing calculator results continue if (isinstance(value, np.ndarray) and value.shape[0] == len(atoms)): # per-atom quantities (forces, energies, stresses) per_atom_results[key] = value else: # per-frame quantities (energy, stress) # special case for stress, which should be converted # to 3x3 matrices before writing if key.startswith('stress'): xx, yy, zz, yz, xz, xy = value value = np.array([(xx, xy, xz), (xy, yy, yz), (xz, yz, zz)]) per_frame_results[key] = value # Move symbols and positions to first two properties if 'symbols' in fr_cols: i = fr_cols.index('symbols') fr_cols[0], fr_cols[i] = fr_cols[i], fr_cols[0] if 'positions' in fr_cols: i = fr_cols.index('positions') fr_cols[1], fr_cols[i] = fr_cols[i], fr_cols[1] # Check first column "looks like" atomic symbols if fr_cols[0] in atoms.arrays: symbols = atoms.arrays[fr_cols[0]] else: symbols = atoms.get_chemical_symbols() if not isinstance(symbols[0], basestring): raise ValueError('First column must be symbols-like') # Check second column "looks like" atomic positions pos = atoms.arrays[fr_cols[1]] if pos.shape != (natoms, 3) or pos.dtype.kind != 'f': raise ValueError('Second column must be position-like') # Collect data to be written out arrays = {} for column in fr_cols: if column in atoms.arrays: arrays[column] = atoms.arrays[column] elif column == 'symbols': arrays[column] = np.array(symbols) else: raise ValueError('Missing array "%s"' % column) if write_results: fr_cols += per_atom_results.keys() arrays.update(per_atom_results) comm, ncols, dtype, fmt = output_column_format(atoms, fr_cols, arrays, write_info, per_frame_results) if plain or comment != '': # override key/value pairs with user-speficied comment string comm = comment # Pack fr_cols into record array data = np.zeros(natoms, dtype) for column, ncol in zip(fr_cols, ncols): value = arrays[column] if ncol == 1: data[column] = np.squeeze(value) else: for c in range(ncol): data[column + str(c)] = value[:, c] # Write the output fileobj.write('%d\n' % natoms) fileobj.write('%s\n' % comm) for i in range(natoms): fileobj.write(fmt % tuple(data[i])) # create aliases for read/write functions read_extxyz = read_xyz write_extxyz = write_xyz ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/findsym.py000066400000000000000000000017371316323560300232010ustar00rootroot00000000000000def write_findsym(fileobj, images): symbols = images[0].get_chemical_symbols() natoms = len(symbols) for atoms in images: formula = atoms.get_chemical_symbols() accuracy = 1.0e-4 # Write Comment fileobj.write('%s\n' % formula) fileobj.write('%f accuracy\n' % accuracy) fileobj.write('1 vectors in cartesian coordinates\n') # Write cartesian coordinates of vectors for x, y, z in atoms.cell: fileobj.write('%22.15f %22.15f %22.15f\n' % (x, y, z)) fileobj.write('1 no known centering\n') fileobj.write('1 0 0 \n') fileobj.write('0 1 0 \n') fileobj.write('0 0 1 \n') fileobj.write('%d\n' % natoms) numbers = atoms.get_atomic_numbers() for n in numbers: fileobj.write('%d ' % (n)) fileobj.write('\n') for x, y, z in atoms.get_positions(): fileobj.write('%22.15f %22.15f %22.15f\n' % (x, y, z)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/foldtrajectory.py000077500000000000000000000023141316323560300245560ustar00rootroot00000000000000"""foldtrajectory - folds atoms into the periodic computational box. Usage: python -m ase.io.foldtrajectory infile.traj outfile.traj In molecular dynamics simulations with periodic boundary conditions, atoms sometimes move out of one side of the computational box and in through the other. Such atoms have coordinates outside the box. This facilitates analysis of e.g. diffusion, but can be problematic when plotting. This script reads through a trajectory file, and write a new one where all atoms are mapped into the computational box. If there are axes with free boundary conditions, the corresponding coordinate is left unchanged. SIDE EFFECT: All energies, forces and stresses are removed (yes, this can be considered as a bug!) """ from __future__ import print_function import sys from ase.io.trajectory import Trajectory if len(sys.argv) != 3: print(__doc__) sys.exit(1) infile = Trajectory(sys.argv[1]) outfile = None for atoms in infile: atoms.set_scaled_positions(atoms.get_scaled_positions()) atoms.set_calculator(None) # or the singlepointcalculator fails! if outfile is None: outfile = Trajectory(sys.argv[2], 'w') outfile.write(atoms) outfile.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/formats.py000066400000000000000000000503441316323560300232010ustar00rootroot00000000000000"""File formats. This module implements the read(), iread() and write() functions in ase.io. For each file format there is a namedtuple (IOFormat) that has the following elements: * a read(filename, index, **kwargs) generator that will yield Atoms objects * a write(filename, images) function * a 'single' boolean (False if multiple configurations is supported) * a 'acceptsfd' boolean (True if file-descriptors are accepted) There is a dict 'ioformats' that is filled with IOFormat objects as they are needed. The 'initialize()' function will create the IOFormat object by looking at the all_formats dict and by importing the correct read/write functions from the correct module. The 'single' and 'acceptsfd' bools are parsed from two-charcter string in the all_formats dict below. Example ======= The xyz format is implemented in the ase/io/xyz.py file which has a read_xyz() generator and a write_xyz() function. """ import collections import functools import inspect import os import sys from ase.atoms import Atoms from ase.utils import import_module, basestring from ase.parallel import parallel_function, parallel_generator IOFormat = collections.namedtuple('IOFormat', 'read, write, single, acceptsfd') ioformats = {} # will be filled at run-time # 1=single, +=multiple, F=accepts a file-descriptor, S=needs a file-name str all_formats = { 'abinit': ('ABINIT input file', '1F'), 'aims': ('FHI-aims geometry file', '1S'), 'aims-output': ('FHI-aims output', '+S'), 'bundletrajectory': ('ASE bundle trajectory', '+S'), 'castep-castep': ('CASTEP output file', '+F'), 'castep-cell': ('CASTEP geom file', '1F'), 'castep-geom': ('CASTEP trajectory file', '+F'), 'castep-md': ('CASTEP molecular dynamics file', '+F'), 'castep-phonon': ('CASTEP phonon file', '1F'), 'cfg': ('AtomEye configuration', '1F'), 'cif': ('CIF-file', '+F'), 'cmdft': ('CMDFT-file', '1F'), 'cube': ('CUBE file', '1F'), 'dacapo': ('Dacapo netCDF output file', '1F'), 'dacapo-text': ('Dacapo text output', '1F'), 'db': ('ASE SQLite database file', '+S'), 'dftb': ('DftbPlus input file', '1S'), 'dlp4': ('DL_POLY_4 CONFIG file', '1F'), 'dmol-arc': ('DMol3 arc file', '+S'), 'dmol-car': ('DMol3 structure file', '1S'), 'dmol-incoor': ('DMol3 structure file', '1S'), 'elk': ('ELK atoms definition', '1S'), 'eon': ('EON reactant.con file', '1F'), 'eps': ('Encapsulated Postscript', '1S'), 'espresso-in': ('Quantum espresso in file', '1F'), 'espresso-out': ('Quantum espresso out file', '+F'), 'etsf': ('ETSF format', '1S'), 'exciting': ('exciting input', '1S'), 'extxyz': ('Extended XYZ file', '+F'), 'findsym': ('FINDSYM-format', '+F'), 'gaussian': ('Gaussian com (input) file', '1S'), 'gaussian-out': ('Gaussian output file', '1F'), 'gen': ('DFTBPlus GEN format', '1F'), 'gpaw-out': ('GPAW text output', '+F'), 'gpw': ('GPAW restart-file', '1S'), 'gromacs': ('Gromacs coordinates', '1S'), 'gromos': ('Gromos96 geometry file', '1F'), 'html': ('X3DOM HTML', '1S'), 'iwm': ('?', '1F'), 'json': ('ASE JSON database file', '+F'), 'jsv': ('JSV file format', '1F'), 'lammps-dump': ('LAMMPS dump file', '+F'), 'lammps-data': ('LAMMPS data file', '1F'), 'magres': ('MAGRES ab initio NMR data file', '1S'), 'mol': ('MDL Molfile', '1F'), 'nwchem': ('NWChem input file', '1F'), 'octopus': ('Octopus input file', '1F'), 'proteindatabank': ('Protein Data Bank', '+F'), 'png': ('Portable Network Graphics', '1S'), 'postgresql': ('ASE PostgreSQL database file', '+S'), 'pov': ('Persistance of Vision', '1S'), 'py': ('Python file', '+F'), 'qbox': ('QBOX output file', '+F'), 'res': ('SHELX format', '1S'), 'sdf': ('SDF format', '1F'), 'struct': ('WIEN2k structure file', '1S'), 'struct_out': ('SIESTA STRUCT file', '1F'), 'traj': ('ASE trajectory', '+S'), 'trj': ('Old ASE pickle trajectory', '+S'), 'turbomole': ('TURBOMOLE coord file', '1F'), 'turbomole-gradient': ('TURBOMOLE gradient file', '+F'), 'v-sim': ('V_Sim ascii file', '1F'), 'vasp': ('VASP POSCAR/CONTCAR file', '1F'), 'vasp-out': ('VASP OUTCAR file', '+F'), 'vasp-xdatcar': ('VASP XDATCAR file', '+S'), 'vasp-xml': ('VASP vasprun.xml file', '+F'), 'vti': ('VTK XML Image Data', '1F'), 'vtu': ('VTK XML Unstructured Grid', '1F'), 'x3d': ('X3D', '1S'), 'xsd': ('Materials Studio file', '1F'), 'xsf': ('XCrySDen Structure File', '+F'), 'xyz': ('XYZ-file', '+F')} # Special cases: format2modulename = { 'aims-output': 'aims', 'dmol-arc': 'dmol', 'dmol-car': 'dmol', 'dmol-incoor': 'dmol', 'castep-castep': 'castep', 'castep-cell': 'castep', 'castep-geom': 'castep', 'castep-md': 'castep', 'castep-phonon': 'castep', 'dacapo-text': 'dacapo', 'dlp4': 'dlp4', 'espresso-in': 'espresso', 'espresso-out': 'espresso', 'gaussian-out': 'gaussian', 'html': 'x3d', 'json': 'db', 'lammps-dump': 'lammpsrun', 'lammps-data': 'lammpsdata', 'postgresql': 'db', 'struct': 'wien2k', 'struct_out': 'siesta', 'traj': 'trajectory', 'trj': 'pickletrajectory', 'turbomole-gradient': 'turbomole', 'vasp-out': 'vasp', 'vasp-xdatcar': 'vasp', 'vasp-xml': 'vasp', 'vti': 'vtkxml', 'vtu': 'vtkxml'} extension2format = { 'ascii': 'v-sim', 'car': 'dmol-car', 'castep': 'castep-castep', 'cell': 'castep-cell', 'com': 'gaussian', 'con': 'eon', 'config': 'dlp4', 'exi': 'exciting', 'g96': 'gromos', 'geom': 'castep-geom', 'gro': 'gromacs', 'log': 'gaussian-out', 'md': 'castep-md', 'nw': 'nwchem', 'out': 'espresso-out', 'pwo': 'espresso-out', 'pwi': 'espresso-in', 'pdb': 'proteindatabank', 'shelx': 'res', 'in': 'aims', 'poscar': 'vasp', 'phonon': 'castep-phonon'} def initialize(format): """Import read and write functions.""" if format in ioformats: return # already done _format = format.replace('-', '_') module_name = format2modulename.get(format, _format) try: module = import_module('ase.io.' + module_name) except ImportError as err: raise ValueError('File format not recognized: %s. Error: %s' % (format, err)) read = getattr(module, 'read_' + _format, None) write = getattr(module, 'write_' + _format, None) if read and not inspect.isgeneratorfunction(read): read = functools.partial(wrap_read_function, read) if not read and not write: raise ValueError('File format not recognized: ' + format) code = all_formats[format][1] single = code[0] == '1' acceptsfd = code[1] == 'F' ioformats[format] = IOFormat(read, write, single, acceptsfd) def get_ioformat(format): """Initialize and return IOFormat tuple.""" initialize(format) return ioformats[format] def get_compression(filename): """ Parse any expected file compression from the extension of a filename. Return the filename without the extension, and the extension. Recognises ``.gz``, ``.bz2``, ``.xz``. >>> get_compression('H2O.pdb.gz') ('H2O.pdb', 'gz') >>> get_compression('crystal.cif') ('crystal.cif', None) Parameters ========== filename: str Full filename including extension. Returns ======= (root, extension): (str, str or None) Filename split into root without extension, and the extension indicating compression format. Will not split if compression is not recognised. """ # Update if anything is added valid_compression = ['gz', 'bz2', 'xz'] # Use stdlib as it handles most edge cases root, compression = os.path.splitext(filename) # extension keeps the '.' so remember to remove it if compression.strip('.') in valid_compression: return root, compression.strip('.') else: return filename, None def open_with_compression(filename, mode='r'): """ Wrapper around builtin `open` that will guess compression of a file from the filename and open it for reading or writing as if it were a standard file. Implemented for ``gz``(gzip), ``bz2``(bzip2) and ``xz``(lzma). Either Python 3 or the ``backports.lzma`` module are required for ``xz``. Supported modes are: * 'r', 'rt', 'w', 'wt' for text mode read and write. * 'rb, 'wb' for binary read and write. Depending on the Python version, you may get errors trying to write the wrong string type to the file. Parameters ========== filename: str Path to the file to open, including any extensions that indicate the compression used. mode: str Mode to open the file, same as for builtin ``open``, e.g 'r', 'w'. Returns ======= fd: file File-like object open with the specified mode. """ if sys.version_info[0] > 2: # Compressed formats sometimes default to binary, so force # text mode in Python 3. if mode == 'r': mode = 'rt' elif mode == 'w': mode = 'wt' else: # The version of gzip in Anaconda Python 2 on Windows forcibly # adds a 'b', so strip any 't' and let the string conversions # be carried out implicitly by Python. mode = mode.strip('t') root, compression = get_compression(filename) if compression is None: return open(filename, mode) elif compression == 'gz': import gzip fd = gzip.open(filename, mode=mode) elif compression == 'bz2': import bz2 if hasattr(bz2, 'open'): # Python 3 only fd = bz2.open(filename, mode=mode) else: # Python 2 fd = bz2.BZ2File(filename, mode=mode) elif compression == 'xz': try: import lzma except ImportError: from backports import lzma fd = lzma.open(filename, mode) else: fd = open(filename, mode) return fd def wrap_read_function(read, filename, index=None, **kwargs): """Convert read-function to generator.""" if index is None: yield read(filename, **kwargs) else: for atoms in read(filename, index, **kwargs): yield atoms def write(filename, images, format=None, parallel=True, **kwargs): """Write Atoms object(s) to file. filename: str or file Name of the file to write to or a file descriptor. The name '-' means standard output. images: Atoms object or list of Atoms objects A single Atoms object or a list of Atoms objects. format: str Used to specify the file-format. If not given, the file-format will be taken from suffix of the filename. parallel: bool Default is to write on master only. Use parallel=False to write from all slaves. The use of additional keywords is format specific.""" if isinstance(filename, basestring): filename = os.path.expanduser(filename) fd = None if filename == '-': fd = sys.stdout filename = None elif format is None: format = filetype(filename, read=False) else: fd = filename filename = None format = format or 'json' # default is json io = get_ioformat(format) _write(filename, fd, format, io, images, parallel=parallel, **kwargs) @parallel_function def _write(filename, fd, format, io, images, parallel=None, **kwargs): if isinstance(images, Atoms): images = [images] if io.single: if len(images) > 1: raise ValueError('{}-format can only store 1 Atoms object.' .format(format)) images = images[0] if io.write is None: raise ValueError("Can't write to {}-format".format(format)) # Special case for json-format: if format == 'json' and len(images) > 1: if filename is not None: io.write(filename, images, **kwargs) return raise ValueError("Can't write more than one image to file-descriptor" 'using json-format.') if io.acceptsfd: open_new = (fd is None) if open_new: fd = open_with_compression(filename, 'w') io.write(fd, images, **kwargs) if open_new: fd.close() else: if fd is not None: raise ValueError("Can't write {}-format to file-descriptor" .format(format)) io.write(filename, images, **kwargs) def read(filename, index=None, format=None, parallel=True, **kwargs): """Read Atoms object(s) from file. filename: str or file Name of the file to read from or a file descriptor. index: int, slice or str The last configuration will be returned by default. Examples: * ``index=0``: first configuration * ``index=-2``: second to last * ``index=':'`` or ``index=slice(None)``: all * ``index='-3:`` or ``index=slice(-3, None)``: three last * ``index='::2`` or ``index=slice(0, None, 2)``: even * ``index='1::2`` or ``index=slice(1, None, 2)``: odd format: str Used to specify the file-format. If not given, the file-format will be guessed by the *filetype* function. parallel: bool Default is to read on master and broadcast to slaves. Use parallel=False to read on all slaves. Many formats allow on open file-like object to be passed instead of ``filename``. In this case the format cannot be auto-decected, so the ``format`` argument should be explicitly given.""" if isinstance(index, basestring): index = string2index(index) filename, index = parse_filename(filename, index) if index is None: index = -1 format = format or filetype(filename) io = get_ioformat(format) if isinstance(index, (slice, basestring)): return list(_iread(filename, index, format, io, parallel=parallel, **kwargs)) else: return next(_iread(filename, slice(index, None), format, io, parallel=parallel, **kwargs)) def iread(filename, index=None, format=None, parallel=True, **kwargs): """Iterator for reading Atoms objects from file. Works as the `read` function, but yields one Atoms object at a time instead of all at once.""" if isinstance(index, basestring): index = string2index(index) filename, index = parse_filename(filename, index) if index is None or index == ':': index = slice(None, None, None) if not isinstance(index, (slice, basestring)): index = slice(index, (index + 1) or None) format = format or filetype(filename) io = get_ioformat(format) for atoms in _iread(filename, index, format, io, parallel=parallel, **kwargs): yield atoms @parallel_generator def _iread(filename, index, format, io, parallel=None, full_output=False, **kwargs): if isinstance(filename, basestring): filename = os.path.expanduser(filename) if not io.read: raise ValueError("Can't read from {}-format".format(format)) if io.single: start = index.start assert start is None or start == 0 or start == -1 args = () else: args = (index,) must_close_fd = False if isinstance(filename, basestring): if io.acceptsfd: fd = open_with_compression(filename) must_close_fd = True else: fd = filename else: assert io.acceptsfd fd = filename # Make sure fd is closed in case loop doesn't finish: try: for dct in io.read(fd, *args, **kwargs): if not isinstance(dct, dict): dct = {'atoms': dct} if full_output: yield dct else: yield dct['atoms'] finally: if must_close_fd: fd.close() def parse_filename(filename, index=None): if not isinstance(filename, basestring) or '@' not in filename: return filename, index newindex = None if ('.json@' in filename or '.db@' in filename or filename.startswith('pg://')): newfilename, newindex = filename.rsplit('@', 1) else: newfilename, newindex = filename.rsplit('@', 1) try: newindex = string2index(newindex) except ValueError: return filename, index return newfilename, newindex def string2index(string): if ':' not in string: return int(string) i = [] for s in string.split(':'): if s == '': i.append(None) else: i.append(int(s)) i += (3 - len(i)) * [None] return slice(*i) def filetype(filename, read=True, guess=True): """Try to guess the type of the file. First, special signatures in the filename will be checked for. If that does not identify the file type, then the first 2000 bytes of the file will be read and analysed. Turn off this second part by using read=False. Can be used from the command-line also:: $ ase info filename ... """ ext = None if isinstance(filename, basestring): if os.path.isdir(filename): if os.path.basename(os.path.normpath(filename)) == 'states': return 'eon' return 'bundletrajectory' if filename.startswith('pg://'): return 'postgresql' # strip any compression extensions that can be read root, compression = get_compression(filename) basename = os.path.basename(root) if basename == 'inp': return 'octopus' if '.' in basename: ext = os.path.splitext(basename)[1].strip('.').lower() if ext in ['xyz', 'cube', 'json', 'cif']: return ext if 'POSCAR' in basename or 'CONTCAR' in basename: return 'vasp' if 'OUTCAR' in basename: return 'vasp-out' if 'XDATCAR' in basename: return 'vasp-xdatcar' if 'vasp' in basename and basename.endswith('.xml'): return 'vasp-xml' if basename == 'coord': return 'turbomole' if basename == 'gradient': return 'turbomole-gradient' if basename.endswith('I_info'): return 'cmdft' if basename == 'atoms.dat': return 'iwm' if 'CONFIG' in basename: return 'dlp4' if not read: return extension2format.get(ext, ext) fd = open_with_compression(filename, 'rb') else: fd = filename if fd is sys.stdin: return 'json' data = fd.read(50000) if fd is not filename: fd.close() else: fd.seek(0) if len(data) == 0: raise IOError('Empty file: ' + filename) for format, magic in [('traj', b'- of UlmASE-Trajectory'), ('traj', b'AFFormatASE-Trajectory'), ('gpw', b'- of UlmGPAW'), ('gpw', b'AFFormatGPAW'), ('trj', b'PickleTrajectory'), ('etsf', b'CDF'), ('turbomole', b'$coord'), ('turbomole-gradient', b'$grad'), ('dftb', b'Geometry')]: if data.startswith(magic): return format for format, magic in [('gpaw-out', b' ___ ___ ___ _ _ _'), ('espresso-in', b'\n&system'), ('espresso-in', b'\n&SYSTEM'), ('espresso-out', b'Program PWSCF'), ('aims-output', b'Invoking FHI-aims ...'), ('lammps-dump', b'\nITEM: TIMESTEP\n'), ('qbox', b'>> f = FortranFile('filename') >>> x = f.readReals() One can read arrays with varying precisions: >>> f = FortranFile('filename') >>> x = f.readInts('h') >>> y = f.readInts('q') >>> z = f.readReals('f') Where the format codes are those used by Python's struct module. One can change the default endian-ness and header precision: >>> f = FortranFile('filename', endian='>', header_prec='l') for a file with little-endian data whose record headers are long integers. """ __docformat__ = "restructuredtext en" import numpy try: file except NameError: # For python3 compatibility from io import FileIO as file try: bytes except NameError: # For python2.x compatibility, I think it would have been nicer to # "from __future__ import unicode_literals" and used b'' instead of bytes() bytes = str class FortranFile(file): """File with methods for dealing with fortran unformatted data files""" def _get_header_length(self): return numpy.dtype(self._header_prec).itemsize _header_length = property(fget=_get_header_length) def _set_endian(self,c): """Set endian to big (c='>') or little (c='<') or native (c='=') :Parameters: `c` : string The endian-ness to use when reading from this file. """ if c in '<>@=': if c == '@': c = '=' self._endian = c else: raise ValueError('Cannot set endian-ness') def _get_endian(self): return self._endian ENDIAN = property(fset=_set_endian, fget=_get_endian, doc="Possible endian values are '<', '>', '@', '='" ) def _set_header_prec(self, prec): if prec in 'hilq': self._header_prec = prec else: raise ValueError('Cannot set header precision') def _get_header_prec(self): return self._header_prec HEADER_PREC = property(fset=_set_header_prec, fget=_get_header_prec, doc="Possible header precisions are 'h', 'i', 'l', 'q'" ) def __init__(self, fname, endian='@', header_prec='i', *args, **kwargs): """Open a Fortran unformatted file for writing. Parameters ---------- endian : character, optional Specify the endian-ness of the file. Possible values are '>', '<', '@' and '='. See the documentation of Python's struct module for their meanings. The deafult is '>' (native byte order) header_prec : character, optional Specify the precision used for the record headers. Possible values are 'h', 'i', 'l' and 'q' with their meanings from Python's struct module. The default is 'i' (the system's default integer). """ file.__init__(self, fname, *args, **kwargs) self.ENDIAN = endian self.HEADER_PREC = header_prec def _read_exactly(self, num_bytes): """Read in exactly num_bytes, raising an error if it can't be done.""" data = bytes() while True: l = len(data) if l == num_bytes: return data else: read_data = self.read(num_bytes - l) if read_data == bytes(): raise IOError('Could not read enough data.' ' Wanted %d bytes, got %d.' % (num_bytes, l)) data += read_data def _read_check(self): return numpy.fromstring(self._read_exactly(self._header_length), dtype=self.ENDIAN+self.HEADER_PREC )[0] def _write_check(self, number_of_bytes): """Write the header for the given number of bytes""" self.write(numpy.array(number_of_bytes, dtype=self.ENDIAN+self.HEADER_PREC,).tostring() ) def readRecord(self): """Read a single fortran record""" l = self._read_check() data_str = self._read_exactly(l) check_size = self._read_check() if check_size != l: raise IOError('Error reading record from data file') return data_str def writeRecord(self,s): """Write a record with the given bytes. Parameters ---------- s : the string to write """ length_bytes = len(s) self._write_check(length_bytes) self.write(s) self._write_check(length_bytes) def readString(self): """Read a string.""" return self.readRecord() def writeString(self,s): """Write a string Parameters ---------- s : the string to write """ self.writeRecord(s) _real_precisions = 'df' def readReals(self, prec='f'): """Read in an array of real numbers. Parameters ---------- prec : character, optional Specify the precision of the array using character codes from Python's struct module. Possible values are 'd' and 'f'. """ if prec not in self._real_precisions: raise ValueError('Not an appropriate precision') data_str = self.readRecord() return numpy.fromstring(data_str, dtype=self.ENDIAN+prec) def writeReals(self, reals, prec='f'): """Write an array of floats in given precision Parameters ---------- reals : array Data to write prec` : string Character code for the precision to use in writing """ if prec not in self._real_precisions: raise ValueError('Not an appropriate precision') nums = numpy.array(reals, dtype=self.ENDIAN+prec) self.writeRecord(nums.tostring()) _int_precisions = 'hilq' def readInts(self, prec='i'): """Read an array of integers. Parameters ---------- prec : character, optional Specify the precision of the data to be read using character codes from Python's struct module. Possible values are 'h', 'i', 'l' and 'q' """ if prec not in self._int_precisions: raise ValueError('Not an appropriate precision') data_str = self.readRecord() return numpy.fromstring(data_str, dtype=self.ENDIAN+prec) def writeInts(self, ints, prec='i'): """Write an array of integers in given precision Parameters ---------- reals : array Data to write prec : string Character code for the precision to use in writing """ if prec not in self._int_precisions: raise ValueError('Not an appropriate precision') nums = numpy.array(ints, dtype=self.ENDIAN+prec) self.writeRecord(nums.tostring()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gaussian.py000066400000000000000000000103161316323560300233330ustar00rootroot00000000000000""" Read/write functions for Gaussian. Written by: Glen R. Jenness University of Wisconsin - Madison See accompanying license files for details. """ import numpy as np import ase.units from ase.data import chemical_symbols from ase.atoms import Atoms from ase.atom import Atom from ase.calculators.singlepoint import SinglePointCalculator from ase.io.gaussian_reader import GaussianReader as GR from ase.calculators.gaussian import Gaussian from ase.utils import basestring # http://www.gaussian.com/g_tech/g_ur/k_dft.htm allowed_dft_functionals = ['lsda', # = 'svwn' 'svwn', 'svwn5', # != 'svwn' 'blyp', 'b3lyp', 'bp86', 'pbepbe', 'pbe1pbe', # pbe0 'm06', 'm06hf', 'm062x', 'tpssh', 'tpsstpss', 'wb97xd'] def read_gaussian_out(filename, index=-1, quantity='atoms'): """"Interface to GaussianReader and returns various quantities""" energy = 0.0 data = GR(filename)[index] if isinstance(data, list): msg = 'Cannot parse multiple images from Gaussian out files at this' msg += ' time. Please select a single image.' raise RuntimeError(msg) atomic_numbers = data['Atomic_numbers'] formula = str() for number in atomic_numbers: formula += chemical_symbols[number] positions = np.array(data['Positions']) method = data['Method'] version = data['Version'] charge = data['Charge'] multiplicity = data['Multiplicity'] if method.lower()[1:] in allowed_dft_functionals: method = 'HF' atoms = Atoms(formula, positions=positions) for key, value in data.items(): if (key in method): energy = value try: if isinstance(filename, basestring): fileobj = open(filename, 'r') else: fileobj = filename # Re-wind the file in case it was previously read. fileobj.seek(0) lines = fileobj.readlines() iforces = list() for n, line in enumerate(lines): if ('Forces (Hartrees/Bohr)' in line): forces = list() for j in range(len(atoms)): forces += [[float(lines[n + j + 3].split()[2]), float(lines[n + j + 3].split()[3]), float(lines[n + j + 3].split()[4])]] iforces.append(np.array(forces)) convert = ase.units.Hartree / ase.units.Bohr forces = np.array(iforces) * convert except: forces = None energy *= ase.units.Hartree # Convert the energy from a.u. to eV calc = SinglePointCalculator(atoms, energy=energy, forces=forces) atoms.set_calculator(calc) if (quantity == 'energy'): return energy elif (quantity == 'forces'): return forces[index] elif (quantity == 'dipole'): return np.array(data['Dipole']) elif (quantity == 'atoms'): return atoms elif (quantity == 'version'): return version elif (quantity == 'multiplicity'): return multiplicity elif (quantity == 'charge'): return charge def read_gaussian(filename): """Reads a Gaussian input file""" f = open(filename, 'r') lines = f.readlines() f.close() atoms = Atoms() for n, line in enumerate(lines): if ('#' in line): i = 0 while (lines[n + i + 5] != '\n'): info = lines[n + i + 5].split() symbol = info[0] position = [float(info[1]), float(info[2]), float(info[3])] atoms += Atom(symbol, position=position) i += 1 return atoms def write_gaussian(filename, atoms): """Writes a basic Gaussian input file""" # Since Gaussian prints the geometry directly into the input file, we'll just # the write_input method from the Gaussian calculator, and just use the # default settings calc = Gaussian() calc.initialize(atoms) calc.write_input(filename, atoms) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gaussian_reader.py000066400000000000000000000067211316323560300246620ustar00rootroot00000000000000from __future__ import print_function from ase.utils import basestring # Copyright (C) 2010 by CAMd, DTU # Please see the accompanying LICENSE file for further information. # This file is taken (almost) verbatim from CMR with D. Landis agreement FIELD_SEPARATOR = "\\" PARA_START = "\n\n" PARA_END = "\\\\@" names = ['', '', 'Computer_system', 'Type_of_run', 'Method', 'Basis_set', 'Chemical_formula', 'Person', 'Date', '', '', '', '', 'Title', ''] names_compact = ['', '', 'Computer_system', 'Type_of_run', 'Method', 'Basis_set', 'Chemical_formula', 'Person', 'Date', '', '', '', '', 'Title', ''] charge_multiplicity = 15 class GaussianReader: def auto_type(self, data): """ tries to determine type""" try: return float(data) except ValueError: pass try: ds = data.split(",") array = [] for d in ds: array.append(float(d)) return array except ValueError: pass return data def __init__(self, filename): """filename is optional; if not set, use parse to set the content""" if isinstance(filename, basestring): fileobj = open(filename, 'r') else: fileobj = filename fileobj.seek(0) # Re-wind fileobj content = fileobj.read() # handles the case that users used windows after the calculation: content = content.replace("\r\n", "\n") self.parse(content) def parse(self, content): from ase.data import atomic_numbers self.data = [] temp_items = content.split(PARA_START) seq_count = 0 for i in temp_items: i = i.replace("\n ", "") if i.endswith(PARA_END): i = i.replace(PARA_END, "") i = i.split(FIELD_SEPARATOR) new_dict = {} self.data.append(new_dict) new_dict['Sequence number'] = seq_count seq_count += 1 for pos in range(len(names)): if names[pos] != "": new_dict[names[pos]] = self.auto_type(i[pos]) chm = i[charge_multiplicity].split(",") new_dict["Charge"] = int(chm[0]) new_dict["Multiplicity"] = int(chm[1]) # Read atoms atoms = [] positions = [] position = charge_multiplicity + 1 while position < len(i) and i[position] != "": s = i[position].split(",") atoms.append(atomic_numbers[s[0]]) positions.append([float(s[1]), float(s[2]), float(s[3])]) position = position + 1 new_dict["Atomic_numbers"] = atoms new_dict["Positions"] = positions # Read more variables position += 1 while position < len(i) and i[position] != "": s = i[position].split('=') if len(s) == 2: new_dict[s[0]] = self.auto_type(s[1]) else: print("Warning: unexpected input ", s) position = position + 1 def __iter__(self): """returns an iterator that iterates over all keywords""" return self.data.__iter__() def __len__(self): return len(self.data) def __getitem__(self, pos): return self.data[pos] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gen.py000066400000000000000000000112311316323560300222670ustar00rootroot00000000000000"""Extension to ASE: read and write structures in GEN format Refer to DFTB+ manual for GEN format description. Note: GEN format only supports single snapshot. """ from ase.atoms import Atoms from ase.parallel import paropen from ase.utils import basestring def read_gen(fileobj): """Read structure in GEN format (refer to DFTB+ manual). Multiple snapshot are not allowed. """ if isinstance(fileobj, basestring): fileobj = open(fileobj) image = Atoms() lines = fileobj.readlines() line = lines[0].split() natoms = int(line[0]) if line[1] == 'S': supercell = True elif line[1] == 'C': supercell = False else: raise IOError('Error in line #1: only C (Cluster) or S (Supercell) ' + 'are valid options') # Read atomic symbols line = lines[1].split() # Define a dictionary with symbols-id symboldict = dict() symbolid = 1 for symb in line: symboldict[symbolid] = symb symbolid += 1 # Read atoms (GEN format supports only single snapshot) del lines[:2] positions = [] symbols = [] for line in lines[:natoms]: dummy, symbolid, x, y, z = line.split()[:5] symbols.append(symboldict[int(symbolid)]) positions.append([float(x), float(y), float(z)]) image = Atoms(symbols=symbols, positions=positions) del lines[:natoms] # If Supercell, parse periodic vectors if not supercell: return image else: # Dummy line: line after atom positions is not uniquely defined # in gen implementations, and not necessary in DFTB package del lines[:1] image.set_pbc([True, True, True]) p = [] for i in range(3): x, y, z = lines[i].split()[:3] p.append([float(x), float(y), float(z)]) image.set_cell([(p[0][0], p[0][1], p[0][2]), (p[1][0], p[1][1], p[1][2]), (p[2][0], p[2][1], p[2][2])]) return image def write_gen(fileobj, images): """Write structure in GEN format (refer to DFTB+ manual). Multiple snapshots are not allowed. """ if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if not isinstance(images, (list, tuple)): images = [images] # Images is kept in a list but a size > 0 is not allowed # as GEN format doesn't support multiple snapshots. # Images is used as a list for consistency with the other # output modules if len(images) != 1: raise ValueError('images contains more than one structure\n' + 'GEN format supports only single snapshot output') symbols = images[0].get_chemical_symbols() # Define a dictionary with symbols-id symboldict = dict() for sym in symbols: if not (sym in symboldict): symboldict[sym] = len(symboldict) + 1 # An ordered symbol list is needed as ordered dictionary # is just available in python 2.7 orderedsymbols = list(['null'] * len(symboldict.keys())) for sym in symboldict.keys(): orderedsymbols[symboldict[sym] - 1] = sym # Check whether the structure is periodic # GEN cannot describe periodicity in one or two direction, # a periodic structure is considered periodic in all the # directions. If your structure is not periodical in all # the directions, be sure you have set big periodicity # vectors in the non-periodic directions if images[0].pbc.any(): pb_flag = 'S' else: pb_flag = 'C' natoms = len(symbols) ind = 0 for atoms in images: fileobj.write('%d %-5s\n' % (natoms, pb_flag)) for s in orderedsymbols: fileobj.write('%-5s' % s) fileobj.write('\n') for sym, (x, y, z) in zip(symbols, atoms.get_positions()): ind += 1 symbolid = symboldict[sym] fileobj.write('%-6d %d %22.15f %22.15f %22.15f\n' % (ind, symbolid, x, y, z)) if images[0].pbc.any(): fileobj.write('%22.15f %22.15f %22.15f \n' % (0.0, 0.0, 0.0)) fileobj.write('%22.15f %22.15f %22.15f \n' % (images[0].get_cell()[0][0], images[0].get_cell()[0][1], images[0].get_cell()[0][2])) fileobj.write('%22.15f %22.15f %22.15f \n' % (images[0].get_cell()[1][0], images[0].get_cell()[1][1], images[0].get_cell()[1][2])) fileobj.write('%22.15f %22.15f %22.15f \n' % (images[0].get_cell()[2][0], images[0].get_cell()[2][1], images[0].get_cell()[2][2])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gpaw_out.py000066400000000000000000000173261316323560300233560ustar00rootroot00000000000000import re import numpy as np from ase.atoms import Atoms from ase.calculators.singlepoint import SinglePointDFTCalculator from ase.calculators.singlepoint import SinglePointKPoint from ase.utils import basestring def read_gpaw_out(fileobj, index): notfound = [] def index_startswith(lines, string): if not isinstance(string, basestring): # assume it's a list for entry in string: try: return index_startswith(lines, entry) except ValueError: pass raise ValueError if string in notfound: raise ValueError for i, line in enumerate(lines): if line.startswith(string): return i notfound.append(string) raise ValueError def index_pattern(lines, pattern): repat = re.compile(pattern) if pattern in notfound: raise ValueError for i, line in enumerate(lines): if repat.match(line): return i notfound.append(pattern) raise ValueError def read_forces(lines, ii): f = [] for i in range(ii + 1, ii + 1 + len(atoms)): try: x, y, z = lines[i].split()[-3:] f.append((float(x), float(y), float(z))) except (ValueError, IndexError) as m: raise IOError('Malformed GPAW log file: %s' % m) return f, i lines = [line.lower() for line in fileobj.readlines()] images = [] while True: try: i = lines.index('unit cell:\n') except ValueError: pass else: if lines[i + 2].startswith(' -'): del lines[i + 2] # old format cell = [] pbc = [] for line in lines[i + 2:i + 5]: words = line.split() if len(words) == 5: # old format cell.append(float(words[2])) pbc.append(words[1] == 'yes') else: # new format with GUC cell.append([float(word) for word in words[3:6]]) pbc.append(words[2] == 'yes') try: i = lines.index('positions:\n') except ValueError: break symbols = [] positions = [] for line in lines[i + 1:]: words = line.split() if len(words) != 5: break n, symbol, x, y, z = words symbols.append(symbol.split('.')[0].title()) positions.append([float(x), float(y), float(z)]) if len(symbols): atoms = Atoms(symbols=symbols, positions=positions, cell=cell, pbc=pbc) else: atoms = Atoms(cell=cell, pbc=pbc) lines = lines[i + 5:] try: ii = index_startswith(lines, 'reference energy:') Eref = float(lines[ii].split()[-1]) except ValueError: Eref = None try: ii = index_pattern(lines, '\d+ k-point') word = lines[ii].split() kx = int(word[2]) ky = int(word[4]) kz = int(word[6]) bz_kpts = (kx, ky, kz) ibz_kpts = int(lines[ii + 1].split()[0]) except (ValueError, TypeError, IndexError): bz_kpts = None ibz_kpts = None try: i = index_startswith(lines, 'energy contributions relative to') except ValueError: e = energy_contributions = None else: energy_contributions = {} for line in lines[i + 2:i + 8]: fields = line.split(':') energy_contributions[fields[0]] = float(fields[1]) line = lines[i + 10] assert (line.startswith('zero kelvin:') or line.startswith('extrapolated:')) e = float(line.split()[-1]) try: ii = index_pattern(lines, '(fixed )?fermi level(s)?:') except ValueError: eFermi = None else: fields = lines[ii].split() try: def strip(string): for rubbish in '[],': string = string.replace(rubbish, '') return string eFermi = [float(strip(fields[-2])), float(strip(fields[-1]))] except ValueError: eFermi = float(fields[-1]) # read Eigenvalues and occupations ii1 = ii2 = 1e32 try: ii1 = index_startswith(lines, ' band eigenvalues occupancy') except ValueError: pass try: ii2 = index_startswith(lines, ' band eigenvalues occupancy') except ValueError: pass ii = min(ii1, ii2) if ii == 1e32: kpts = None else: ii += 1 words = lines[ii].split() vals = [] while(len(words) > 2): vals.append([float(w) for w in words]) ii += 1 words = lines[ii].split() vals = np.array(vals).transpose() kpts = [SinglePointKPoint(1, 0, 0)] kpts[0].eps_n = vals[1] kpts[0].f_n = vals[2] if vals.shape[0] > 3: kpts.append(SinglePointKPoint(1, 1, 0)) kpts[1].eps_n = vals[3] kpts[1].f_n = vals[4] # read charge try: ii = index_startswith(lines, 'total charge:') except ValueError: q = None else: q = float(lines[ii].split()[2]) # read dipole moment try: ii = index_startswith(lines, 'dipole moment:') except ValueError: dipole = None else: line = lines[ii] for x in '()[],': line = line.replace(x, '') dipole = np.array([float(c) for c in line.split()[2:5]]) try: ii = index_startswith(lines, 'local magnetic moments') except ValueError: magmoms = None else: magmoms = [] for j in range(ii + 1, ii + 1 + len(atoms)): magmom = lines[j].split()[-1] magmoms.append(float(magmom)) try: ii = lines.index('forces in ev/ang:\n') except ValueError: f = None else: f, i = read_forces(lines, ii) try: ii = index_startswith(lines, 'vdw correction:') except ValueError: pass else: line = lines[ii + 1] assert line.startswith('energy:') e = float(line.split()[-1]) f, i = read_forces(lines, ii + 3) if len(images) > 0 and e is None: break if q is not None and len(atoms) > 0: n = len(atoms) atoms.set_initial_charges([q / n] * n) if magmoms is not None: atoms.set_initial_magnetic_moments(magmoms) if e is not None or f is not None: calc = SinglePointDFTCalculator(atoms, energy=e, forces=f, dipole=dipole, magmoms=magmoms, efermi=eFermi, bzkpts=bz_kpts, ibzkpts=ibz_kpts) calc.eref = Eref calc.name = 'gpaw' if energy_contributions is not None: calc.energy_contributions = energy_contributions if kpts is not None: calc.kpts = kpts atoms.set_calculator(calc) images.append(atoms) lines = lines[i:] if len(images) == 0: raise IOError('Corrupted GPAW-text file!') return images[index] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gpw.py000066400000000000000000000054411316323560300223210ustar00rootroot00000000000000from ase import Atoms from ase.calculators.singlepoint import (SinglePointDFTCalculator, SinglePointKPoint) from ase.units import Bohr, Hartree import ase.io.ulm as ulm from ase.io.trajectory import read_atoms def read_gpw(filename): try: reader = ulm.open(filename) except ulm.InvalidULMFileError: return read_old_gpw(filename) atoms = read_atoms(reader.atoms) wfs = reader.wave_functions kpts = wfs.get('kpts') if kpts is None: ibzkpts = None bzkpts = None bz2ibz = None else: ibzkpts = kpts.ibzkpts bzkpts = kpts.get('bzkpts') bz2ibz = kpts.get('bz2ibz') atoms.calc = SinglePointDFTCalculator( atoms, efermi=reader.occupations.fermilevel, ibzkpts=ibzkpts, bzkpts=bzkpts, bz2ibz=bz2ibz, **reader.results.asdict()) if kpts is not None: atoms.calc.kpts = [] spin = 0 for eps_kn, f_kn in zip(wfs.eigenvalues, wfs.occupations): kpt = 0 for weight, eps_n, f_n in zip(kpts.weights, eps_kn, f_kn): atoms.calc.kpts.append( SinglePointKPoint(weight, spin, kpt, eps_n, f_n)) kpt += 1 spin += 1 return atoms def read_old_gpw(filename): from gpaw.io.tar import Reader r = Reader(filename) positions = r.get('CartesianPositions') * Bohr numbers = r.get('AtomicNumbers') cell = r.get('UnitCell') * Bohr pbc = r.get('BoundaryConditions') tags = r.get('Tags') magmoms = r.get('MagneticMoments') energy = r.get('PotentialEnergy') * Hartree if r.has_array('CartesianForces'): forces = r.get('CartesianForces') * Hartree / Bohr else: forces = None atoms = Atoms(positions=positions, numbers=numbers, cell=cell, pbc=pbc) if tags.any(): atoms.set_tags(tags) if magmoms.any(): atoms.set_initial_magnetic_moments(magmoms) magmom = magmoms.sum() else: magmoms = None magmom = None atoms.calc = SinglePointDFTCalculator(atoms, energy=energy, forces=forces, magmoms=magmoms, magmom=magmom) kpts = [] if r.has_array('IBZKPoints'): for w, kpt, eps_n, f_n in zip(r.get('IBZKPointWeights'), r.get('IBZKPoints'), r.get('Eigenvalues'), r.get('OccupationNumbers')): kpts.append(SinglePointKPoint(w, kpt[0], kpt[1], eps_n[0], f_n[0])) atoms.calc.kpts = kpts return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gromacs.py000066400000000000000000000146031316323560300231570ustar00rootroot00000000000000from __future__ import print_function """ read and write gromacs geometry files """ from ase.atoms import Atoms from ase.parallel import paropen from ase.utils import basestring def read_gromacs(filename): """ From: http://manual.gromacs.org/current/online/gro.html C format "%5d%5s%5s%5d%8.3f%8.3f%8.3f%8.4f%8.4f%8.4f" python: starting from 0, including first excluding last 0:4 5:10 10:15 15:20 20:28 28:36 36:44 44:52 52:60 60:68 Import gromacs geometry type files (.gro). Reads atom positions, velocities(if present) and simulation cell (if present) """ from ase.data import chemical_symbols from ase import units atoms = Atoms() filed = open(filename, 'r') lines = filed.readlines() filed.close() positions = [] gromacs_velocities = [] symbols = [] gromacs_residuenames = [] gromacs_atomtypes = [] for line in (lines[2:-1]): #print line[0:5]+':'+line[5:11]+':'+line[11:15]+':'+line[15:20] inp = line.split() floatvect = float(line[20:28]) * 10.0, \ float(line[28:36]) * 10.0, \ float(line[36:44]) * 10.0 positions.append(floatvect) try: #velocities from nm/ps to ase units floatvect = \ float(line[44:52]) * units.nm / (1000.0 * units.fs), \ float(line[52:60]) * units.nm / (1000.0 * units.fs), \ float(line[60:68]) * units.nm / (1000.0 * units.fs) except: floatvect = 0.0, 0.0, 0.0 gromacs_velocities.append(floatvect) symbols.append(inp[1][0:2]) gromacs_residuenames.append(inp[0]) gromacs_atomtypes.append(inp[1]) line = lines[-1] symbols_ok = [] for isymbol in symbols: if isymbol in chemical_symbols: #ok atom name symbols_ok.append(isymbol) else: #not ok atom name symbols_ok.append(isymbol[0]) atoms = Atoms(symbols_ok, positions) atoms.set_velocities(gromacs_velocities) if not atoms.has('residuenames'): atoms.new_array('residuenames', gromacs_residuenames, str) atoms.set_array('residuenames', gromacs_residuenames, str) if not atoms.has('atomtypes'): atoms.new_array('atomtypes', gromacs_atomtypes, str) atoms.set_array('atomtypes', gromacs_atomtypes, str) try: line = lines[-1] inp = line.split() floatvect0 = \ float(inp[0]) * 10.0, \ float(inp[1]) * 10.0, \ float(inp[2]) * 10.0 try: floatvect1 = \ float(inp[3]) * 10.0, \ float(inp[4]) * 10.0, \ float(inp[5]) * 10.0 floatvect2 = \ float(inp[6]) * 10.0, \ float(inp[7]) * 10.0, \ float(inp[8]) * 10.0 mycell = [] #gromacs manual (manual.gromacs.org/online/gro.html) says: #v1(x) v2(y) v3(z) v1(y) v1(z) v2(x) v2(z) v3(x) v3(y) # #v1(x) v2(y) v3(z) fv0[0 1 2] v1(x) v2(x) v3(x) #v1(y) v1(z) v2(x) fv1[0 1 2] v1(y) v2(y) v3(y) #v2(z) v3(x) v3(y) fv2[0 1 2] v1(z) v2(z) v3(z) mycell += [[floatvect0[0], floatvect1[2], floatvect2[1]]] mycell += [[floatvect1[0], floatvect0[1], floatvect2[2]]] mycell += [[floatvect1[1], floatvect2[0], floatvect0[2]]] atoms.set_cell(mycell) atoms.set_pbc(True) except: mycell = [] #gromacs manual (manual.gromacs.org/online/gro.html) says: #v1(x) v2(y) v3(z) v1(y) v1(z) v2(x) v2(z) v3(x) v3(y) mycell += [[floatvect0[0], 0.0, 0.0]] mycell += [[ 0.0, floatvect0[1], 0.0]] mycell += [[ 0.0, 0.0, floatvect0[2]]] atoms.set_cell(floatvect0) atoms.set_pbc(True) except: atoms.set_pbc(False) return atoms def write_gromacs(fileobj, images): """Write gromacs geometry files (\*.gro). Writes: atom positions, velocities (if present, otherwise 0) and simulation cell (if present) """ from ase import units if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if not isinstance(images, (list, tuple)): images = [images] natoms = len(images[-1]) try: gromacs_residuenames = images[-1].get_array('residuenames') except: gromacs_residuenames = [] for idum in range(natoms): gromacs_residuenames.append('1DUM') try: gromacs_atomtypes = images[-1].get_array('atomtypes') except: gromacs_atomtypes = images[-1].get_chemical_symbols() pos = images[-1].get_positions() pos = pos / 10.0 try: vel = images[-1].get_velocities() vel = vel * 1000.0 * units.fs / units.nm except: vel = pos vel = pos * 0.0 fileobj.write('#A Gromacs structure file written by ASE \n') fileobj.write('%5d \n' % len(images[-1])) count = 1 for resname, atomtype, xyz, vxyz in zip\ (gromacs_residuenames, gromacs_atomtypes, pos, vel): fileobj.write(\ ' %5s %5s%5d%8.3f%8.3f%8.3f%8.4f%8.4f%8.4f\n' % \ (resname, atomtype, count, \ xyz[0], xyz[1], xyz[2], \ vxyz[0], vxyz[1], vxyz[2])) count = count + 1 if images[-1].get_pbc().any(): mycell = images[-1].get_cell() #gromacs manual (manual.gromacs.org/online/gro.html) says: #v1(x) v2(y) v3(z) v1(y) v1(z) v2(x) v2(z) v3(x) v3(y) # #cell[0,0] cell[1,0] cell[2,0] v1(x) v2(y) v3(z) fv0[0 1 2] #cell[0,1] cell[1,1] cell[2,1] v1(y) v1(z) v2(x) fv1[0 1 2] #cell[0,2] cell[1,2] cell[2,2] v2(z) v3(x) v3(y) fv2[0 1 2] fileobj.write('%10.5f%10.5f%10.5f' \ % (mycell[0, 0] * 0.1, \ mycell[1, 1] * 0.1, \ mycell[2, 2] * 0.1)) fileobj.write('%10.5f%10.5f%10.5f' \ % (mycell[1, 0] * 0.1, \ mycell[2, 0] * 0.1, \ mycell[0, 1] * 0.1)) fileobj.write('%10.5f%10.5f%10.5f\n' \ % (mycell[2, 1] * 0.1, \ mycell[0, 2] * 0.1, \ mycell[1, 2] * 0.1)) return ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/gromos.py000066400000000000000000000117121316323560300230300ustar00rootroot00000000000000from __future__ import print_function """ write gromos96 geometry files (the exact file format is copied from the freely available gromacs package, http://www.gromacs.org its procedure src/gmxlib/confio.c (write_g96_conf) """ from ase.parallel import paropen from ase.utils import basestring def read_gromos(fileobj, index=-1): """Read gromos geometry files (.g96). Reads: atom positions, and simulation cell (if present) tries to set atom types """ from ase import Atoms from ase.data import chemical_symbols import sys if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'r') if (index != -1): print('In gromos (g96) format only last frame can be read') sys.exit() lines = fileobj.readlines() read_pos = False read_box = False tmp_pos = [] symbols = [] mycell = None for line in lines: if (read_pos and ('END' in line)): read_pos = False if (read_box and ('END' in line)): read_box = False if read_pos: symbol, dummy, x, y, z = line.split()[2:7] tmp_pos.append((10*float(x), 10*float(y), 10*float(z))) if (len(symbol) != 2): symbols.append(symbol[0].lower().capitalize()) else: symbol2 = symbol[0].lower().capitalize() + \ symbol[1] if symbol2 in chemical_symbols: symbols.append(symbol2) else: symbols.append(symbol[0].lower().capitalize()) if symbols[-1] not in chemical_symbols: print('Symbol not in chemical symbols, please check',\ symbols[-1]) sys.exit() if read_box: try: b00, b11, b22, b10, b20, b01, b21, b02, b12 = line.split()[:9] mycell = [(10.*float(b00), 10.*float(b01), 10.*float(b02)), (10.*float(b10), 10.*float(b11), 10.*float(b12)), (10.*float(b20), 10.*float(b21), 10.*float(b22))] except: b00, b11, b22 = line.split()[:3] mycell = [(10.*float(b00), 0.0, 0.0), (0.0, 10.*float(b11), 0.0), (0.0, 0.0, 10.*float(b22))] if ('POSITION' in line): read_pos = True if ('BOX' in line): read_box = True if mycell == None: gmx_system = Atoms(symbols=symbols, positions=tmp_pos) else: gmx_system = Atoms(symbols=symbols, positions=tmp_pos, cell=mycell) gmx_system.set_pbc(True) return gmx_system def write_gromos(fileobj, images): """Write gromos geometry files (.g96). Writes: atom positions, and simulation cell (if present) """ from ase import units if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if not isinstance(images, (list, tuple)): images = [images] natoms = len(images[-1]) try: gromos_residuenames = images[-1].get_array('residuenames') except: gromos_residuenames = [] for idum in range(natoms): gromos_residuenames.append('1DUM') try: gromos_atomtypes = images[-1].get_array('atomtypes') except: gromos_atomtypes = images[-1].get_chemical_symbols() pos = images[-1].get_positions() pos = pos / 10.0 try: vel = images[-1].get_velocities() vel = vel * 1000.0 * units.fs / units.nm except: vel = pos vel = pos * 0.0 fileobj.write('TITLE\n') fileobj.write('Gromos96 structure file written by ASE \n') fileobj.write('END\n') fileobj.write('POSITION\n') count = 1 rescount = 0 oldresname = '' for resname, atomtype, xyz in zip\ (gromos_residuenames, gromos_atomtypes, pos): if resname != oldresname: oldresname = resname rescount = rescount + 1 okresname = resname.lstrip('0123456789 ') fileobj.write('%5d %-5s %-5s%7d%15.9f%15.9f%15.9f\n' % \ (rescount, okresname, atomtype, count, \ xyz[0], xyz[1], xyz[2])) count = count + 1 fileobj.write('END\n') if images[-1].get_pbc().any(): fileobj.write('BOX\n') mycell = images[-1].get_cell() fileobj.write('%15.9f%15.9f%15.9f' \ % (mycell[0, 0] * 0.1, \ mycell[1, 1] * 0.1, \ mycell[2, 2] * 0.1)) fileobj.write('%15.9f%15.9f%15.9f' \ % (mycell[1, 0] * 0.1, \ mycell[2, 0] * 0.1, \ mycell[0, 1] * 0.1)) fileobj.write('%15.9f%15.9f%15.9f\n' \ % (mycell[2, 1] * 0.1, \ mycell[0, 2] * 0.1, \ mycell[1, 2] * 0.1)) fileobj.write('END\n') return ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/iwm.py000066400000000000000000000021461316323560300223170ustar00rootroot00000000000000import numpy as np from ase.data import chemical_symbols from ase.atoms import Atoms from ase.utils import basestring iwm_symbols = {'1': 'C', '2': 'Au', '5': 'Ag'} def read_iwm(fileobj, index=-1): if isinstance(fileobj, basestring): fileobj = open(fileobj) lines = fileobj.readlines() L1 = lines[1].split() if len(L1) == 1: del lines[:3] natoms = int(L1[0]) else: natoms = len(lines) images = [] positions = [] symbols = [] for line in lines[:natoms]: symbol, mass, x, y, z = line.split()[:5] if symbol in iwm_symbols: symbols.append(iwm_symbols[symbol]) else: symbols.append(chemical_symbols[int(symbol)]) positions.append([float(x), float(y), float(z)]) del(lines[natoms:3 * natoms + 3]) cell = [] for line in lines[natoms:natoms + 3]: x, y, z = line.split()[:3] cell.append(np.array([float(x), float(y), float(z)])) images.append(Atoms(symbols=symbols, positions=positions, cell=cell)) return images[index] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/jsonio.py000066400000000000000000000035741316323560300230320ustar00rootroot00000000000000import datetime import json import numpy as np from ase.utils import basestring class MyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, np.ndarray): if obj.dtype == complex: return {'__complex_ndarray__': (obj.real.tolist(), obj.imag.tolist())} return obj.tolist() if isinstance(obj, np.integer): return int(obj) if isinstance(obj, np.bool_): return bool(obj) if isinstance(obj, datetime.datetime): return {'__datetime__': obj.isoformat()} if hasattr(obj, 'todict'): return obj.todict() return json.JSONEncoder.default(self, obj) encode = MyEncoder().encode def object_hook(dct): if '__datetime__' in dct: return datetime.datetime.strptime(dct['__datetime__'], '%Y-%m-%dT%H:%M:%S.%f') if '__complex_ndarray__' in dct: r, i = (np.array(x) for x in dct['__complex_ndarray__']) return r + i * 1j return dct mydecode = json.JSONDecoder(object_hook=object_hook).decode def intkey(key): try: return int(key) except ValueError: return key def numpyfy(obj): if isinstance(obj, dict): return dict((intkey(key), numpyfy(value)) for key, value in obj.items()) if isinstance(obj, list) and len(obj) > 0: try: a = np.array(obj) except ValueError: pass else: if a.dtype in [bool, int, float]: return a obj = [numpyfy(value) for value in obj] return obj def decode(txt): return numpyfy(mydecode(txt)) def read_json(name): if isinstance(name, basestring): fd = open(name, 'r') else: fd = name dct = decode(fd.read()) fd.close() return dct ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/jsv.py000066400000000000000000000111731316323560300223250ustar00rootroot00000000000000""" A module for reading and writing crystal structures from JSV See http://www.jcrystal.com/steffenweber/JAVA/JSV/jsv.html By Jesper Friis, Jan. 2012 """ import re import numpy as np import ase from ase.spacegroup import Spacegroup, crystal from ase.geometry import cellpar_to_cell, cell_to_cellpar def read_jsv(f): """Reads a JSV file.""" natom = nbond = npoly = 0 symbols = [] labels = [] cellpar = basis = title = bonds = poly = origin = shell_numbers = None spacegroup = 1 headline = f.readline().strip() while True: line = f.readline() if not line: break line = line.strip() m = re.match(r'^\[([^]]+)\]\s*(.*)', line) if m is None or not line: continue tag = m.groups()[0].lower() if len(m.groups()) > 1: args = m.groups()[1].split() else: args = [] if tag == 'cell': cellpar = [float(x) for x in args] elif tag == 'natom': natom = int(args[0]) elif tag == 'nbond': nbond = int(args[0]) # optional margin of the bondlengths elif tag == 'npoly': npoly = int(args[0]) elif tag == 'space_group': spacegroup = Spacegroup(*tuple(int(x) for x in args)) elif tag == 'title': title = m.groups()[1] elif tag == 'atoms': symbols = [] basis = np.zeros((natom, 3), dtype=float) shell_numbers = -np.ones((natom, ), dtype=int) # float? for i in range(natom): tokens = f.readline().strip().split() labels.append(tokens[0]) symbols.append(ase.data.chemical_symbols[int(tokens[1])]) basis[i] = [float(x) for x in tokens[2:5]] if len(tokens) > 5: shell_numbers[i] = float(tokens[5]) # float? elif tag == 'bonds': for i in range(nbond): f.readline() bonds = NotImplemented elif tag == 'poly': for i in range(npoly): f.readline() poly = NotImplemented elif tag == 'origin': origin = NotImplemented else: raise ValueError('Unknown tag: "%s"' % tag) if headline == 'asymmetric_unit_cell': atoms = crystal(symbols=symbols, basis=basis, spacegroup=spacegroup, cellpar=cellpar, ) elif headline == 'full_unit_cell': atoms = ase.Atoms(symbols=symbols, scaled_positions=basis, cell=cellpar_to_cell(cellpar), ) atoms.info['spacegroup'] = Spacegroup(spacegroup) elif headline == 'cartesian_cell': atoms = ase.Atoms(symbols=symbols, positions=basis, cell=cellpar_to_cell(cellpar), ) atoms.info['spacegroup'] = Spacegroup(spacegroup) else: raise ValueError('Invalid JSV file type: "%s"' % headline) atoms.info['title'] = title atoms.info['labels'] = labels if bonds is not None: atoms.info['bonds'] = bonds if poly is not None: atoms.info['poly'] = poly if origin is not None: atoms.info['origin'] = origin if shell_numbers is not None: atoms.info['shell_numbers'] = shell_numbers return atoms def write_jsv(f, atoms): """Writes JSV file.""" f.write('asymmetric_unit_cell\n') f.write('[cell]') for v in cell_to_cellpar(atoms.cell): f.write(' %g' % v) f.write('\n') f.write('[natom] %d\n' % len(atoms)) f.write('[nbond] 0\n') # FIXME f.write('[npoly] 0\n') # FIXME if 'spacegroup' in atoms.info: sg = Spacegroup(atoms.info['spacegroup']) f.write('[space_group] %d %d\n' % (sg.no, sg.setting)) else: f.write('[space_group] 1 1\n') f.write('[title] %s\n' % atoms.info.get('title', 'untitled')) f.write('\n') f.write('[atoms]\n') if 'labels' in atoms.info: labels = atoms.info['labels'] else: labels = ['%s%d' % (s, i + 1) for i, s in enumerate(atoms.get_chemical_symbols())] numbers = atoms.get_atomic_numbers() scaled = atoms.get_scaled_positions() for l, n, p in zip(labels, numbers, scaled): f.write('%-4s %2d %9.6f %9.6f %9.6f\n' % (l, n, p[0], p[1], p[2])) f.write('Label AtomicNumber x y z (repeat natom times)\n') f.write('\n') f.write('[bonds]\n') f.write('\n') f.write('[poly]\n') f.write('\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/lammpsdata.py000066400000000000000000000232071316323560300236470ustar00rootroot00000000000000import re import numpy as np from ase.atoms import Atoms from ase.parallel import paropen from ase.utils import basestring def read_lammps_data(fileobj, Z_of_type=None, style='full'): """Method which reads a LAMMPS data file. order: Order the particles according to their id. Might be faster to switch it off. """ if isinstance(fileobj, basestring): f = paropen(fileobj) else: f = fileobj # load everything into memory lines = f.readlines() # begin read_lammps_data comment = None N = None # N_types = None xlo = None xhi = None ylo = None yhi = None zlo = None zhi = None xy = None xz = None yz = None pos_in = {} travel_in = {} mol_id_in = {} mass_in = {} vel_in = {} bonds_in = [] angles_in = [] sections = ["Atoms", "Velocities", "Masses", "Ellipsoids", "Lines", "Triangles", "Bodies", "Bonds", "Angles", "Dihedrals", "Impropers Pair Coeffs", "PairIJ Coeffs", "Pair Coeffs", "Bond Coeffs", "Angle Coeffs", "Dihedral Coeffs", "Improper Coeffs", "BondBond Coeffs", "BondAngle Coeffs", "MiddleBondTorsion Coeffs", "EndBondTorsion Coeffs", "AngleTorsion Coeffs", "AngleAngleTorsion Coeffs", "BondBond13 Coeffs", "AngleAngle Coeffs"] header_fields = ["atoms", "bonds", "angles", "dihedrals", "impropers", "atom types", "bond types", "angle types", "dihedral types", "improper types", "extra bond per atom", "extra angle per atom", "extra dihedral per atom", "extra improper per atom", "extra special per atom", "ellipsoids", "lines", "triangles", "bodies", "xlo xhi", "ylo yhi", "zlo zhi", "xy xz yz"] sections_re = '(' + '|'.join(sections).replace(' ', '\s+') + ')' header_fields_re = '(' + '|'.join(header_fields).replace(' ', '\s+') + ')' section = None header = True for line in lines: if comment is None: comment = line.rstrip() else: line = re.sub("#.*", "", line).rstrip().lstrip() if re.match("^\s*$", line): # skip blank lines continue # check for known section names m = re.match(sections_re, line) if m is not None: section = m.group(0).rstrip().lstrip() header = False continue if header: field = None val = None # m = re.match(header_fields_re+"\s+=\s*(.*)", line) # if m is not None: # got a header line # field=m.group(1).lstrip().rstrip() # val=m.group(2).lstrip().rstrip() # else: # try other format # m = re.match("(.*)\s+"+header_fields_re, line) # if m is not None: # field = m.group(2).lstrip().rstrip() # val = m.group(1).lstrip().rstrip() m = re.match("(.*)\s+" + header_fields_re, line) if m is not None: field = m.group(2).lstrip().rstrip() val = m.group(1).lstrip().rstrip() if field is not None and val is not None: if field == "atoms": N = int(val) # elif field == "atom types": # N_types = int(val) elif field == "xlo xhi": (xlo, xhi) = [float(x) for x in val.split()] elif field == "ylo yhi": (ylo, yhi) = [float(x) for x in val.split()] elif field == "zlo zhi": (zlo, zhi) = [float(x) for x in val.split()] elif field == "xy xz yz": (xy, xz, yz) = [float(x) for x in val.split()] if section is not None: fields = line.split() if section == "Atoms": # id * id = int(fields[0]) if style == 'full' and (len(fields) == 7 or len(fields) == 10): # id mol-id type q x y z [tx ty tz] pos_in[id] = (int(fields[2]), float(fields[4]), float(fields[5]), float(fields[6])) mol_id_in[id] = int(fields[1]) if len(fields) == 10: travel_in[id] = (int(fields[7]), int(fields[8]), int(fields[9])) elif (style == 'atomic' and (len(fields) == 5 or len(fields) == 8)): # id type x y z [tx ty tz] pos_in[id] = (int(fields[1]), float(fields[2]), float(fields[3]), float(fields[4])) if len(fields) == 8: travel_in[id] = (int(fields[5]), int(fields[6]), int(fields[7])) else: raise RuntimeError("Style '%s' not supported or invalid" + " number of fields %d" % (style, len(fields))) elif section == "Velocities": # id vx vy vz vel_in[int(fields[0])] = (float(fields[1]), float(fields[2]), float(fields[3])) elif section == "Masses": mass_in[int(fields[0])] = float(fields[1]) elif section == "Bonds": # id type atom1 atom2 bonds_in.append((int(fields[1]), int(fields[2]), int(fields[3]))) elif section == "Angles": # id type atom1 atom2 atom3 angles_in.append((int(fields[1]), int(fields[2]), int(fields[3]), int(fields[4]))) # set cell cell = np.zeros((3, 3)) cell[0, 0] = xhi - xlo cell[1, 1] = yhi - ylo cell[2, 2] = zhi - zlo if xy is not None: cell[1, 0] = xy if xz is not None: cell[2, 0] = xz if yz is not None: cell[2, 1] = yz # initialize arrays for per-atom quantities positions = np.zeros((N, 3)) numbers = np.zeros((N), int) ids = np.zeros((N), int) types = np.zeros((N), int) if len(vel_in) > 0: velocities = np.zeros((N, 3)) else: velocities = None if len(mass_in) > 0: masses = np.zeros((N)) else: masses = None if len(mol_id_in) > 0: mol_id = np.zeros((N), int) else: mol_id = None if len(travel_in) > 0: travel = np.zeros((N, 3), int) else: travel = None if len(bonds_in) > 0: bonds = [""] * N else: bonds = None if len(angles_in) > 0: angles = [""] * N else: angles = None ind_of_id = {} # copy per-atom quantities from read-in values for (i, id) in enumerate(pos_in.keys()): # by id ind_of_id[id] = i type = pos_in[id][0] positions[i, :] = [pos_in[id][1], pos_in[id][2], pos_in[id][3]] if velocities is not None: velocities[i, :] = [vel_in[id][0], vel_in[id][1], vel_in[id][2]] if travel is not None: travel[i] = travel_in[id] if mol_id is not None: mol_id[i] = mol_id_in[id] ids[i] = id # by type types[i] = type if Z_of_type is None: numbers[i] = type else: numbers[i] = Z_of_type[type] if masses is not None: masses[i] = mass_in[type] # create ase.Atoms at = Atoms(positions=positions, numbers=numbers, masses=masses, cell=cell, pbc=[True, True, True]) # set velocities (can't do it via constructor) if velocities is not None: at.set_velocities(velocities) at.arrays['id'] = ids at.arrays['type'] = types if travel is not None: at.arrays['travel'] = travel if mol_id is not None: at.arrays['mol-id'] = mol_id if bonds is not None: for (type, a1, a2) in bonds_in: i_a1 = ind_of_id[a1] i_a2 = ind_of_id[a2] if len(bonds[i_a1]) > 0: bonds[i_a1] += "," bonds[i_a1] += "%d(%d)" % (i_a2, type) for i in range(len(bonds)): if len(bonds[i]) == 0: bonds[i] = '_' at.arrays['bonds'] = np.array(bonds) if angles is not None: for (type, a1, a2, a3) in angles_in: i_a1 = ind_of_id[a1] i_a2 = ind_of_id[a2] i_a3 = ind_of_id[a3] if len(angles[i_a2]) > 0: angles[i_a2] += "," angles[i_a2] += "%d-%d(%d)" % (i_a1, i_a3, type) for i in range(len(angles)): if len(angles[i]) == 0: angles[i] = '_' at.arrays['angles'] = np.array(angles) at.info['comment'] = comment return at ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/lammpsrun.py000066400000000000000000000132631316323560300235430ustar00rootroot00000000000000from ase.atoms import Atoms from ase.quaternions import Quaternions from ase.calculators.singlepoint import SinglePointCalculator from ase.parallel import paropen from ase.utils import basestring from collections import deque def read_lammps_dump(fileobj, index=-1, order=True, atomsobj=Atoms): """Method which reads a LAMMPS dump file. order: Order the particles according to their id. Might be faster to switch it off. """ if isinstance(fileobj, basestring): f = paropen(fileobj) else: f = fileobj # load everything into memory lines = deque(f.readlines()) natoms = 0 images = [] while len(lines) > natoms: line = lines.popleft() if 'ITEM: TIMESTEP' in line: lo = [] hi = [] tilt = [] id = [] types = [] positions = [] scaled_positions = [] velocities = [] forces = [] quaternions = [] if 'ITEM: NUMBER OF ATOMS' in line: line = lines.popleft() natoms = int(line.split()[0]) if 'ITEM: BOX BOUNDS' in line: # save labels behind "ITEM: BOX BOUNDS" in # triclinic case (>=lammps-7Jul09) tilt_items = line.split()[3:] for i in range(3): line = lines.popleft() fields = line.split() lo.append(float(fields[0])) hi.append(float(fields[1])) if (len(fields) >= 3): tilt.append(float(fields[2])) # determine cell tilt (triclinic case!) if (len(tilt) >= 3): # for >=lammps-7Jul09 use labels behind # "ITEM: BOX BOUNDS" to assign tilt (vector) elements ... if (len(tilt_items) >= 3): xy = tilt[tilt_items.index('xy')] xz = tilt[tilt_items.index('xz')] yz = tilt[tilt_items.index('yz')] # ... otherwise assume default order in 3rd column # (if the latter was present) else: xy = tilt[0] xz = tilt[1] yz = tilt[2] else: xy = xz = yz = 0 xhilo = (hi[0] - lo[0]) - (xy**2)**0.5 - (xz**2)**0.5 yhilo = (hi[1] - lo[1]) - (yz**2)**0.5 zhilo = (hi[2] - lo[2]) if xy < 0: if xz < 0: celldispx = lo[0] - xy - xz else: celldispx = lo[0] - xy else: celldispx = lo[0] celldispy = lo[1] celldispz = lo[2] cell = [[xhilo, 0, 0], [xy, yhilo, 0], [xz, yz, zhilo]] celldisp = [[celldispx, celldispy, celldispz]] def add_quantity(fields, var, labels): for label in labels: if label not in atom_attributes: return var.append([float(fields[atom_attributes[label]]) for label in labels]) if 'ITEM: ATOMS' in line: # (reliably) identify values by labels behind # "ITEM: ATOMS" - requires >=lammps-7Jul09 # create corresponding index dictionary before # iterating over atoms to (hopefully) speed up lookups... atom_attributes = {} for (i, x) in enumerate(line.split()[2:]): atom_attributes[x] = i for n in range(natoms): line = lines.popleft() fields = line.split() id.append(int(fields[atom_attributes['id']])) types.append(int(fields[atom_attributes['type']])) add_quantity(fields, positions, ['x', 'y', 'z']) add_quantity(fields, scaled_positions, ['xs', 'ys', 'zs']) add_quantity(fields, velocities, ['vx', 'vy', 'vz']) add_quantity(fields, forces, ['fx', 'fy', 'fz']) add_quantity(fields, quaternions, ['c_q[1]', 'c_q[2]', 'c_q[3]', 'c_q[4]']) if order: def reorder(inlist): if not len(inlist): return inlist outlist = [None] * len(id) for i, v in zip(id, inlist): outlist[i - 1] = v return outlist types = reorder(types) positions = reorder(positions) scaled_positions = reorder(scaled_positions) velocities = reorder(velocities) forces = reorder(forces) quaternions = reorder(quaternions) if len(quaternions): images.append(Quaternions(symbols=types, positions=positions, cell=cell, celldisp=celldisp, quaternions=quaternions)) elif len(positions): images.append(atomsobj( symbols=types, positions=positions, celldisp=celldisp, cell=cell)) elif len(scaled_positions): images.append(atomsobj( symbols=types, scaled_positions=scaled_positions, celldisp=celldisp, cell=cell)) if len(velocities): images[-1].set_velocities(velocities) if len(forces): calculator = SinglePointCalculator(images[-1], energy=0.0, forces=forces) images[-1].set_calculator(calculator) return images[index] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/magres.py000066400000000000000000000445651316323560300230140ustar00rootroot00000000000000"""This module provides I/O functions for the MAGRES file format, introduced by CASTEP as an output format to store structural data and ab-initio calculated NMR parameters. Authors: Simone Sturniolo (ase implementation), Tim Green (original magres parser code) """ import re import numpy as np from collections import OrderedDict import ase.units from ase.atoms import Atoms from ase.spacegroup import Spacegroup def read_magres(filename, include_unrecognised=False): """ Reader function for magres files. """ blocks_re = re.compile(r'[\[<](?P.*?)[>\]](.*?)[<\[]/' + '(?P=block_name)[\]>]', re.M | re.S) """ Here are defined the various functions required to parse different blocks. """ def tensor33(x): return np.squeeze(np.reshape(x, (3, 3))).tolist() def tensor31(x): return np.squeeze(np.reshape(x, (3, 1))).tolist() def get_version(file_contents): """ Look for and parse the magres file format version line """ lines = file_contents.split('\n') match = re.match('\#\$magres-abinitio-v([0-9]+).([0-9]+)', lines[0]) if match: version = match.groups() version = tuple(vnum for vnum in version) else: version = None return version def parse_blocks(file_contents): """ Parse series of XML-like deliminated blocks into a list of (block_name, contents) tuples """ blocks = blocks_re.findall(file_contents) return blocks def parse_block(block): """ Parse block contents into a series of (tag, data) records """ def clean_line(line): # Remove comments and whitespace at start and ends of line line = re.sub('#(.*?)\n', '', line) line = line.strip() return line name, data = block lines = [clean_line(line) for line in data.split('\n')] records = [] for line in lines: xs = line.split() if len(xs) > 0: tag = xs[0] data = xs[1:] records.append((tag, data)) return (name, records) def check_units(d): """ Verify that given units for a particular tag are correct. """ allowed_units = {'lattice': 'Angstrom', 'atom': 'Angstrom', 'ms': 'ppm', 'efg': 'au', 'efg_local': 'au', 'efg_nonlocal': 'au', 'isc': '10^19.T^2.J^-1', 'isc_fc': '10^19.T^2.J^-1', 'isc_orbital_p': '10^19.T^2.J^-1', 'isc_orbital_d': '10^19.T^2.J^-1', 'isc_spin': '10^19.T^2.J^-1', 'isc': '10^19.T^2.J^-1', 'sus': '10^-6.cm^3.mol^-1', 'calc_cutoffenergy': 'Hartree', } if d[0] in d and d[1] == allowed_units[d[0]]: pass else: raise RuntimeError('Unrecognized units: %s %s' % (d[0], d[1])) return d def parse_magres_block(block): """ Parse magres block into data dictionary given list of record tuples. """ name, records = block # Atom label, atom index and 3x3 tensor def sitensor33(name): return lambda d: {'atom': {'label': data[0], 'index': int(data[1])}, name: tensor33([float(x) for x in data[2:]])} # 2x(Atom label, atom index) and 3x3 tensor def sisitensor33(name): return lambda d: {'atom1': {'label': data[0], 'index': int(data[1])}, 'atom2': {'label': data[2], 'index': int(data[3])}, name: tensor33([float(x) for x in data[4:]])} tags = {'ms': sitensor33('sigma'), 'efg': sitensor33('V'), 'efg_local': sitensor33('V'), 'efg_nonlocal': sitensor33('V'), 'isc': sisitensor33('K'), 'isc_fc': sisitensor33('K'), 'isc_spin': sisitensor33('K'), 'isc_orbital_p': sisitensor33('K'), 'isc_orbital_d': sisitensor33('K'), 'units': check_units} data_dict = {} for record in records: tag, data = record if tag not in data_dict: data_dict[tag] = [] data_dict[tag].append(tags[tag](data)) return data_dict def parse_atoms_block(block): """ Parse atoms block into data dictionary given list of record tuples. """ name, records = block # Lattice record: a1, a2 a3, b1, b2, b3, c1, c2 c3 def lattice(d): return tensor33([float(x) for x in data]) # Atom record: label, index, x, y, z def atom(d): return {'species': data[0], 'label': data[1], 'index': int(data[2]), 'position': tensor31([float(x) for x in data[3:]])} def symmetry(d): return ' '.join(data) tags = {'lattice': lattice, 'atom': atom, 'units': check_units, 'symmetry': symmetry} data_dict = {} for record in records: tag, data = record if tag not in data_dict: data_dict[tag] = [] data_dict[tag].append(tags[tag](data)) return data_dict def parse_generic_block(block): """ Parse any other block into data dictionary given list of record tuples. """ name, records = block data_dict = {} for record in records: tag, data = record if tag not in data_dict: data_dict[tag] = [] data_dict[tag].append(data) return data_dict """ Actual parser code. """ block_parsers = {'magres': parse_magres_block, 'atoms': parse_atoms_block, 'calculation': parse_generic_block, } with open(filename) as f: file_contents = f.read() # This works as a validity check version = get_version(file_contents) if version is None: # This isn't even a .magres file! raise RuntimeError('File is not in standard Magres format') blocks = parse_blocks(file_contents) data_dict = {} for block_data in blocks: block = parse_block(block_data) if block[0] in block_parsers: block_dict = block_parsers[block[0]](block) data_dict[block[0]] = block_dict else: # Throw in the text content of blocks we don't recognise if include_unrecognised: data_dict[block[0]] = block_data[1] # Now the loaded data must be turned into an ASE Atoms object # First check if the file is even viable if 'atoms' not in data_dict: raise RuntimeError('Magres file does not contain structure data') # Allowed units handling. This is redundant for now but # could turn out useful in the future magres_units = {'Angstrom': ase.units.Ang} # Lattice parameters? if 'lattice' in data_dict['atoms']: try: u = dict(data_dict['atoms']['units'])['lattice'] except KeyError: raise RuntimeError('No units detected in file for lattice') u = magres_units[u] cell = np.array(data_dict['atoms']['lattice'][0]) * u pbc = True else: cell = None pbc = False # Now the atoms symbols = [] positions = [] indices = [] labels = [] if 'atom' in data_dict['atoms']: try: u = dict(data_dict['atoms']['units'])['atom'] except KeyError: raise RuntimeError('No units detected in file for atom positions') u = magres_units[u] # Now we have to account for the possibility of there being CASTEP # 'custom' species amongst the symbols custom_species = None for a in data_dict['atoms']['atom']: spec_custom = a['species'].split(':', 1) if len(spec_custom) > 1 and custom_species is None: # Add it to the custom info! custom_species = list(symbols) symbols.append(spec_custom[0]) positions.append(a['position']) indices.append(a['index']) labels.append(a['label']) if custom_species is not None: custom_species.append(a['species']) atoms = Atoms(cell=cell, pbc=pbc, symbols=symbols, positions=positions) # Add custom species if present if custom_species is not None: atoms.new_array('castep_custom_species', np.array(custom_species)) # Add the spacegroup, if present and recognizable if 'symmetry' in data_dict['atoms']: try: spg = Spacegroup(data_dict['atoms']['symmetry'][0]) except: # Not found spg = Spacegroup(1) # Most generic one atoms.info['spacegroup'] = spg # Set up the rest of the properties as arrays atoms.new_array('indices', np.array(indices)) atoms.new_array('labels', np.array(labels)) # Now for the magres specific stuff li_list = list(zip(labels, indices)) mprops = { 'ms': ('sigma', False), 'efg': ('V', False), 'isc': ('K', True)} # (matrix name, is pair interaction) for various magres quantities def create_magres_array(u, block): # This bit to keep track of tags u0 = u.split('_')[0] if u0 not in mprops: raise RuntimeError('Invalid data in magres block') mn = mprops[u0][0] is_pair = mprops[u0][1] if not is_pair: u_arr = [None] * len(li_list) else: u_arr = [[None] * (i + 1) for i in range(len(li_list))] for s in block: # Find the atom index/indices if not is_pair: # First find out which atom this is at = (s['atom']['label'], s['atom']['index']) try: ai = li_list.index(at) except ValueError: raise RuntimeError('Invalid data in magres block') # Then add the relevant quantity u_arr[ai] = s[mn] else: at1 = (s['atom1']['label'], s['atom1']['index']) at2 = (s['atom2']['label'], s['atom2']['index']) ai1 = li_list.index(at1) ai2 = li_list.index(at2) # Sort them ai1, ai2 = sorted((ai1, ai2), reverse=True) u_arr[ai1][ai2] = s[mn] return np.array(u_arr) if 'magres' in data_dict: if 'units' in data_dict['magres']: atoms.info['magres_units'] = dict(data_dict['magres']['units']) for u in atoms.info['magres_units']: u_arr = create_magres_array(u, data_dict['magres'][u]) atoms.new_array(u, u_arr) if 'calculation' in data_dict: atoms.info['magresblock_calculation'] = data_dict['calculation'] if include_unrecognised: for b in data_dict: if b not in block_parsers: atoms.info['magresblock_' + b] = data_dict[b] return atoms def tensor_string(tensor): return ' '.join(' '.join(str(x) for x in xs) for xs in tensor) def write_magres(filename, image): """ A writing function for magres files. Two steps: first data are arranged into structures, then dumped to the actual file """ image_data = {} image_data['atoms'] = {'units': []} # Contains units, lattice and each individual atom if np.all(image.get_pbc()): # Has lattice! image_data['atoms']['units'].append(['lattice', 'Angstrom']) image_data['atoms']['lattice'] = [image.get_cell()] # Now for the atoms if image.has('labels'): labels = image.get_array('labels') else: labels = image.get_chemical_symbols() if image.has('indices'): indices = image.get_array('indices') else: indices = [labels[:i + 1].count(labels[i]) for i in range(len(labels))] # Iterate over atoms symbols = (image.get_array('castep_custom_species') if image.has('castep_custom_species') else image.get_chemical_symbols()) atom_info = list(zip(symbols, image.get_positions())) if len(atom_info) > 0: image_data['atoms']['units'].append(['atom', 'Angstrom']) image_data['atoms']['atom'] = [] for i, a in enumerate(atom_info): image_data['atoms']['atom'].append({ 'index': indices[i], 'position': a[1], 'species': a[0], 'label': labels[i]}) # Spacegroup, if present if 'spacegroup' in image.info: image_data['atoms']['symmetry'] = [image.info['spacegroup'] .symbol.replace(' ', '')] # Now go on to do the same for magres information if 'magres_units' in image.info: image_data['magres'] = {'units': []} mprops = { 'ms': ('sigma', False), 'efg': ('V', False), 'isc': ('K', True)} for u in image.info['magres_units']: # Get the type p = u.split('_')[0] if p in mprops: image_data['magres']['units'].append( [u, image.info['magres_units'][u]]) image_data['magres'][u] = [] prop = mprops[p] arr = image.get_array(u) li_tab = zip(labels, indices) for i, (lab, ind) in enumerate(li_tab): if prop[1]: for j, (lab2, ind2) in enumerate(li_tab[:i + 1]): if arr[i][j] is not None: tens = {prop[0]: arr[i][j], 'atom1': {'label': lab, 'index': ind}, 'atom2': {'label': lab2, 'index': ind2}} image_data['magres'][u].append(tens) else: if arr[i] is not None: tens = {prop[0]: arr[i], 'atom': {'label': lab, 'index': ind}} image_data['magres'][u].append(tens) # Calculation block, if present if 'magresblock_calculation' in image.info: image_data['calculation'] = image.info['magresblock_calculation'] def write_units(data, out): if 'units' in data: for tag, units in data['units']: out.append(' units %s %s' % (tag, units)) def write_magres_block(data): """ Write out a block from its dictionary representation """ out = [] def siout(tag, tensor_name): if tag in data: for atom_si in data[tag]: out.append((' %s %s %d ' '%s') % (tag, atom_si['atom']['label'], atom_si['atom']['index'], tensor_string(atom_si[tensor_name]))) write_units(data, out) siout('ms', 'sigma') siout('efg_local', 'V') siout('efg_nonlocal', 'V') siout('efg', 'V') def sisiout(tag, tensor_name): if tag in data: for isc in data[tag]: out.append((' %s %s %d %s %d ' '%s') % (tag, isc['atom1']['label'], isc['atom1']['index'], isc['atom2']['label'], isc['atom2']['index'], tensor_string(isc[tensor_name]))) sisiout('isc_fc', 'K') sisiout('isc_orbital_p', 'K') sisiout('isc_orbital_d', 'K') sisiout('isc_spin', 'K') sisiout('isc', 'K') return '\n'.join(out) def write_atoms_block(data): out = [] write_units(data, out) if 'lattice' in data: for lat in data['lattice']: out.append(" lattice %s" % tensor_string(lat)) if 'symmetry' in data: for sym in data['symmetry']: out.append(' symmetry %s' % sym) if 'atom' in data: for a in data['atom']: out.append((' atom %s %s %s ' '%s') % (a['species'], a['label'], a['index'], ' '.join(str(x) for x in a['position']))) return '\n'.join(out) def write_generic_block(data): out = [] for tag, data in data.items(): for value in data: out.append('%s %s' % (tag, ' '.join(str(x) for x in value))) return '\n'.join(out) # Using this to preserve order block_writers = OrderedDict([('calculation', write_generic_block), ('atoms', write_atoms_block), ('magres', write_magres_block)]) # Opening the file ofile = open(filename, 'w') # First, write the header ofile.write('#$magres-abinitio-v1.0\n') ofile.write('# Generated by the Atomic Simulation Environment library\n') for b in block_writers: if b in image_data: ofile.write('[{0}]\n'.format(b)) ofile.write(block_writers[b](image_data[b])) ofile.write('\n[/{0}]\n'.format(b)) # Now on to check for any non-standard blocks... for i in image.info: if '_' in i: ismag, b = i.split('_', 1) if ismag == 'magresblock' and b not in block_writers: ofile.write('[{0}]\n'.format(b)) ofile.write(image.info[i]) ofile.write('[/{0}]\n'.format(b)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/mol.py000066400000000000000000000010401316323560300223020ustar00rootroot00000000000000"""Reads chemical data in MDL Molfile format. See https://en.wikipedia.org/wiki/Chemical_table_file """ from ase.atoms import Atoms def read_mol(fileobj): lines = fileobj.readlines() del(lines[:3]) L1 = lines[0].split() del(lines[0]) natoms = int(L1[0]) positions = [] symbols = [] for line in lines[:natoms]: x, y, z, symbol = line.split()[:4] symbols.append(symbol) positions.append([float(x), float(y), float(z)]) return Atoms(symbols=symbols, positions=positions) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/netcdftrajectory.py000066400000000000000000000607001316323560300250750ustar00rootroot00000000000000""" netcdftrajectory - I/O trajectory files in the AMBER NetCDF convention More information on the AMBER NetCDF conventions can be found at http://ambermd.org/netcdf/. This module supports extensions to these conventions, such as writing of additional fields and writing to HDF5 (NetCDF-4) files. A Python NetCDF module is required. Supported are netCDF4-python - http://code.google.com/p/netcdf4-python/ scipy.io.netcdf - http://docs.scipy.org/doc/scipy/reference/io.html Availability is checked in the above order of preference. Note that scipy.io.netcdf cannot write HDF5 NetCDF-4 files. NetCDF files can be directly visualized using the libAtoms flavor of AtomEye (http://www.libatoms.org/), VMD (http://www.ks.uiuc.edu/Research/vmd/) or Ovito (http://www.ovito.org/, starting with version 2.3). """ import os import warnings import numpy as np import ase from ase.data import atomic_masses from ase.geometry import cellpar_to_cell, cell_to_cellpar import collections from functools import reduce NC_NOT_FOUND = 0 NC_IS_NETCDF4 = 1 NC_IS_SCIPY = 2 have_nc = NC_NOT_FOUND # Check if we have netCDF4-python try: from netCDF4 import Dataset have_nc = NC_IS_NETCDF4 except: pass if not have_nc: # Check for scipy netcdf_file = None # Someone should fix scipy support or remove it # try: # from scipy.io.netcdf import netcdf_file # have_nc = NC_IS_SCIPY # except: # pass class NetCDFTrajectory: """ Reads/writes Atoms objects into an AMBER-style .nc trajectory file. """ # netCDF4-python format strings to scipy.io.netcdf version numbers _netCDF4_to_scipy = {'NETCDF3_CLASSIC': 1, 'NETCDF3_64BIT': 2} # Default dimension names _frame_dim = 'frame' _spatial_dim = 'spatial' _atom_dim = 'atom' _cell_spatial_dim = 'cell_spatial' _cell_angular_dim = 'cell_angular' _label_dim = 'label' _Voigt_dim = 'Voigt' # For stress/strain tensors # Default field names. If it is a list, check for any of these names upon # opening. Upon writing, use the first name. _spatial_var = 'spatial' _cell_spatial_var = 'cell_spatial' _cell_angular_var = 'cell_angular' _time_var = 'time' _numbers_var = ['atom_types', 'type', 'Z'] _positions_var = 'coordinates' _velocities_var = 'velocities' _cell_origin_var = 'cell_origin' _cell_lengths_var = 'cell_lengths' _cell_angles_var = 'cell_angles' _default_vars = reduce(lambda x, y: x + y, [_numbers_var, [_positions_var], [_velocities_var], [_cell_origin_var], [_cell_lengths_var], [_cell_angles_var]]) def __init__(self, filename, mode='r', atoms=None, types_to_numbers=None, double=True, netcdf_format='NETCDF3_CLASSIC', keep_open=True, index_var='id', index_offset=-1): """ A NetCDFTrajectory can be created in read, write or append mode. Parameters: filename: The name of the parameter file. Should end in .nc. mode='r': The mode. 'r' is read mode, the file should already exist, and no atoms argument should be specified. 'w' is write mode. The atoms argument specifies the Atoms object to be written to the file, if not given it must instead be given as an argument to the write() method. 'a' is append mode. It acts a write mode, except that data is appended to a preexisting file. atoms=None: The Atoms object to be written in write or append mode. types_to_numbers=None: Dictionary for conversion of atom types to atomic numbers when reading a trajectory file. double=True: Create new variable in double precision. netcdf_format='NETCDF3_CLASSIC': Format string for the underlying NetCDF file format. Only relevant if a new file is created. More information can be found at https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/File-Format.html 'NETCDF3_CLASSIC' is the original binary format. 'NETCDF3_64BIT' can be used to write larger files. 'NETCDF4_CLASSIC' is HDF5 with some NetCDF limitations. 'NETCDF4' is HDF5. keep_open=True: Keep the file open during consecutive read/write operations. Set to false if you experience data corruption. This will close the file after each read/write operation by comes with serious performance penalty. index_var='id': Name of variable containing the atom indices. Atoms are reordered by this index upon reading if this variable is present. Default value is for LAMMPS output. index_offset=-1: Set to 0 if atom index is zero based, set to -1 if atom index is one based. Default value is for LAMMPS output. """ if not have_nc: raise RuntimeError('NetCDFTrajectory requires a NetCDF Python ' 'module.') self.nc = None self.numbers = None self.pre_observers = [] # Callback functions before write self.post_observers = [] # Callback functions after write are called self.has_header = False self._set_atoms(atoms) self.types_to_numbers = None if types_to_numbers: self.types_to_numbers = np.array(types_to_numbers) self.index_var = index_var self.index_offset = index_offset self._default_vars += [self.index_var] # 'l' should be a valid type according to the netcdf4-python # documentation, but does not appear to work. self.dtype_conv = {'l': 'i'} if not double: self.dtype_conv.update(dict(d='f')) self.extra_per_frame_vars = [] self.extra_per_file_vars = [] # per frame atts are global quantities, not quantities stored for each # atom self.extra_per_frame_atts = [] self.mode = mode self.netcdf_format = netcdf_format if atoms: self.n_atoms = len(atoms) else: self.n_atoms = None self.filename = filename if keep_open is None: # Only netCDF4-python supports append to files self.keep_open = self.mode == 'r' or have_nc != NC_IS_NETCDF4 else: self.keep_open = keep_open if (mode == 'a' or not self.keep_open) and have_nc != NC_IS_NETCDF4: raise RuntimeError('netCDF4-python is required for append mode.') def __del__(self): self.close() def _open(self): """ Opens the file. For internal use only. """ if self.nc is not None: return if self.mode == 'a' and not os.path.exists(self.filename): self.mode = 'w' if have_nc == NC_IS_NETCDF4: self.nc = Dataset(self.filename, self.mode, format=self.netcdf_format) elif have_nc == NC_IS_SCIPY: if self.netcdf_format not in self._netCDF4_to_scipy: raise ValueError("NetCDF format '%s' not supported by " "scipy.io.netcdf." % self.netcdf_format) version = self._netCDF4_to_scipy[self.netcdf_format] if version == 1: # This supports older scipy.io.netcdf versions that do not # support the 'version' argument self.nc = netcdf_file(self.filename, self.mode) else: self.nc = netcdf_file( self.filename, self.mode, version=self._netCDF4_to_scipy[self.netcdf_format] ) else: # Should not happen raise RuntimeError('Internal error: Unknown *have_nc* value.') self.frame = 0 if self.mode == 'r' or self.mode == 'a': self._read_header() self.frame = self._len() def _set_atoms(self, atoms=None): """ Associate an Atoms object with the trajectory. For internal use only. """ if atoms is not None and not hasattr(atoms, 'get_positions'): raise TypeError('"atoms" argument is not an Atoms object.') self.atoms = atoms def _read_header(self): if not self.n_atoms: if have_nc == NC_IS_NETCDF4: self.n_atoms = len(self.nc.dimensions[self._atom_dim]) else: self.n_atoms = self.nc.dimensions[self._atom_dim] for name, var in self.nc.variables.items(): # This can be unicode which confuses ASE name = str(name) # _default_vars is taken care of already if name not in self._default_vars: if len(var.dimensions) >= 2: if var.dimensions[0] == self._frame_dim: if var.dimensions[1] == self._atom_dim: self.extra_per_frame_vars += [name] else: self.extra_per_frame_atts += [name] elif len(var.dimensions) == 1: if var.dimensions[0] == self._atom_dim: self.extra_per_file_vars += [name] elif var.dimensions[0] == self._frame_dim: self.extra_per_frame_atts += [name] self.has_header = True def write(self, atoms=None, frame=None, arrays=None, time=None): """ Write the atoms to the file. If the atoms argument is not given, the atoms object specified when creating the trajectory object is used. """ self._open() self._call_observers(self.pre_observers) if atoms is None: atoms = self.atoms if hasattr(atoms, 'interpolate'): # seems to be a NEB neb = atoms assert not neb.parallel try: neb.get_energies_and_forces(all=True) except AttributeError: pass for image in neb.images: self.write(image) return if not self.has_header: self._define_file_structure(atoms) else: if len(atoms) != self.n_atoms: raise ValueError('Bad number of atoms!') if frame is None: i = self.frame else: i = frame # Number can be per file variable numbers = self._get_variable(self._numbers_var) if numbers.dimensions[0] == self._frame_dim: numbers[i] = atoms.get_atomic_numbers() else: if np.any(numbers != atoms.get_atomic_numbers()): raise ValueError('Atomic numbers do not match!') self._get_variable(self._positions_var)[i] = atoms.get_positions() if atoms.has('momenta'): self._add_velocities() self._get_variable(self._velocities_var)[i] = \ atoms.get_momenta() / atoms.get_masses().reshape(-1, 1) a, b, c, alpha, beta, gamma = cell_to_cellpar(atoms.get_cell()) if np.any(np.logical_not(atoms.pbc)): warnings.warn('Atoms have nonperiodic directions. Cell lengths in ' 'these directions are lost and will be ' 'shrink-wrapped when reading the NetCDF file.') cell_lengths = np.array([a, b, c]) * atoms.pbc self._get_variable(self._cell_lengths_var)[i] = cell_lengths self._get_variable(self._cell_angles_var)[i] = [alpha, beta, gamma] if arrays is not None: for array in arrays: data = atoms.get_array(array) if array in self.extra_per_file_vars: # This field exists but is per file data. Check that the # data remains consistent. if np.any(self._get_variable(array) != data): raise ValueError('Trying to write Atoms object with ' 'incompatible data for the {0} ' 'array.'.format(array)) else: self._add_array(atoms, array, data.dtype, data.shape) self._get_variable(array)[i] = data if time is not None: self._add_time() self._get_variable(self._time_var)[i] = time self.sync() self._call_observers(self.post_observers) self.frame += 1 self._close() def write_arrays(self, atoms, frame, arrays): self._open() self._call_observers(self.pre_observers) for array in arrays: data = atoms.get_array(array) if array in self.extra_per_file_vars: # This field exists but is per file data. Check that the # data remains consistent. if np.any(self._get_variable(array) != data): raise ValueError('Trying to write Atoms object with ' 'incompatible data for the {0} ' 'array.'.format(array)) else: self._add_array(atoms, array, data.dtype, data.shape) self._get_variable(array)[frame] = data self._call_observers(self.post_observers) self._close() def _define_file_structure(self, atoms): if not hasattr(self.nc, 'Conventions'): self.nc.Conventions = 'AMBER' if not hasattr(self.nc, 'ConventionVersion'): self.nc.ConventionVersion = '1.0' if not hasattr(self.nc, 'program'): self.nc.program = 'ASE' if not hasattr(self.nc, 'programVersion'): self.nc.programVersion = ase.__version__ if self._frame_dim not in self.nc.dimensions: self.nc.createDimension(self._frame_dim, None) if self._spatial_dim not in self.nc.dimensions: self.nc.createDimension(self._spatial_dim, 3) if self._atom_dim not in self.nc.dimensions: self.nc.createDimension(self._atom_dim, len(atoms)) if self._cell_spatial_dim not in self.nc.dimensions: self.nc.createDimension(self._cell_spatial_dim, 3) if self._cell_angular_dim not in self.nc.dimensions: self.nc.createDimension(self._cell_angular_dim, 3) if self._label_dim not in self.nc.dimensions: self.nc.createDimension(self._label_dim, 5) # Self-describing variables from AMBER convention if not self._has_variable(self._spatial_var): self.nc.createVariable(self._spatial_var, 'S1', (self._spatial_dim,)) self.nc.variables[self._spatial_var][:] = ['x', 'y', 'z'] if not self._has_variable(self._cell_spatial_var): self.nc.createVariable(self._cell_spatial_dim, 'S1', (self._cell_spatial_dim,)) self.nc.variables[self._cell_spatial_var][:] = ['a', 'b', 'c'] if not self._has_variable(self._cell_angular_var): self.nc.createVariable(self._cell_angular_var, 'S1', (self._cell_angular_dim, self._label_dim,)) self.nc.variables[self._cell_angular_var][0] = [x for x in 'alpha'] self.nc.variables[self._cell_angular_var][1] = [x for x in 'beta '] self.nc.variables[self._cell_angular_var][2] = [x for x in 'gamma'] if not self._has_variable(self._numbers_var): self.nc.createVariable(self._numbers_var[0], 'i', (self._frame_dim, self._atom_dim,)) if not self._has_variable(self._positions_var): self.nc.createVariable(self._positions_var, 'f4', (self._frame_dim, self._atom_dim, self._spatial_dim)) self.nc.variables[self._positions_var].units = 'Angstrom' self.nc.variables[self._positions_var].scale_factor = 1. if not self._has_variable(self._cell_lengths_var): self.nc.createVariable(self._cell_lengths_var, 'd', (self._frame_dim, self._cell_spatial_dim)) self.nc.variables[self._cell_lengths_var].units = 'Angstrom' self.nc.variables[self._cell_lengths_var].scale_factor = 1. if not self._has_variable(self._cell_angles_var): self.nc.createVariable(self._cell_angles_var, 'd', (self._frame_dim, self._cell_angular_dim)) self.nc.variables[self._cell_angles_var].units = 'degree' def _add_time(self): if not self._has_variable(self._time_var): self.nc.createVariable(self._time_var, 'f8', (self._frame_dim,)) def _add_velocities(self): if not self._has_variable(self._velocities_var): self.nc.createVariable(self._velocities_var, 'f4', (self._frame_dim, self._atom_dim, self._spatial_dim)) self.nc.variables[self._positions_var].units = \ 'Angstrom/Femtosecond' self.nc.variables[self._positions_var].scale_factor = 1. def _add_array(self, atoms, array_name, type, shape): if not self._has_variable(array_name): dims = [self._frame_dim] for i in shape: if i == len(atoms): dims += [self._atom_dim] elif i == 3: dims += [self._spatial_dim] elif i == 6: # This can only be stress/strain tensor in Voigt notation if self._Voigt_dim not in self.nc.dimensions: self.nc.createDimension(self._Voigt_dim, 6) dims += [self._Voigt_dim] else: raise TypeError("Don't know how to dump array of shape {0}" " into NetCDF trajectory.".format(shape)) try: t = self.dtype_conv[type.char] except: t = type self.nc.createVariable(array_name, t, dims) def _get_variable(self, name, exc=True): if isinstance(name, list): for n in name: if n in self.nc.variables: return self.nc.variables[n] if exc: raise RuntimeError( 'None of the variables {0} was found in the ' 'NetCDF trajectory.'.format(', '.join(name))) else: if name in self.nc.variables: return self.nc.variables[name] if exc: raise RuntimeError('Variables {0} was found in the NetCDF ' 'trajectory.'.format(name)) return None def _has_variable(self, name): if isinstance(name, list): for n in name: if n in self.nc.variables: return True return False else: return name in self.nc.variables def _get_data(self, name, frame, exc=True): var = self._get_variable(name, exc=exc) if var is None: return None if var.dimensions[0] == self._frame_dim: return var[frame, ...] else: return var[...] def close(self): """Close the trajectory file.""" if self.nc is not None: self.nc.close() self.nc = None def _close(self): if not self.keep_open: self.close() if self.mode == 'w': self.mode = 'a' def sync(self): self.nc.sync() def __getitem__(self, i=-1): self._open() if isinstance(i, slice): return [self[j] for j in range(*i.indices(self._len()))] N = self._len() if 0 <= i < N: # Non-periodic boundaries have cell_length == 0.0 cell_lengths = \ np.array(self.nc.variables[self._cell_lengths_var][i][:]) pbc = np.abs(cell_lengths > 1e-6) # Do we have a cell origin? if self._has_variable(self._cell_origin_var): origin = np.array( self.nc.variables[self._cell_origin_var][i][:]) else: origin = np.zeros([3], dtype=float) # Do we have an index variable? if self._has_variable(self.index_var): index = np.array(self.nc.variables[self.index_var][i][:]) + \ self.index_offset else: index = np.arange(self.n_atoms) # Read element numbers self.numbers = self._get_data(self._numbers_var, i, exc=False) if self.numbers is None: self.numbers = np.ones(self.n_atoms, dtype=int) else: self.numbers = np.array(self.numbers[index]) if self.types_to_numbers is not None: self.numbers = self.types_to_numbers[self.numbers] self.masses = atomic_masses[self.numbers] # Read positions positions = np.array(self._get_data(self._positions_var, i)[index]) # Determine cell size for non-periodic directions from shrink # wrapped cell. for dim in np.arange(3)[np.logical_not(pbc)]: origin[dim] = positions[:, dim].min() cell_lengths[dim] = positions[:, dim].max() - origin[dim] # Construct cell shape from cell lengths and angles cell = cellpar_to_cell( list(cell_lengths) + list(self.nc.variables[self._cell_angles_var][i]) ) # Compute momenta from velocities (if present) momenta = self._get_data(self._velocities_var, i, exc=False) if momenta is not None: momenta = momenta[index] * self.masses.reshape(-1, 1) # Fill info dict with additional data found in the NetCDF file info = {} for name in self.extra_per_frame_atts: info[name] = np.array(self.nc.variables[name][i]) # Create atoms object atoms = ase.Atoms( positions=positions, numbers=self.numbers, cell=cell, celldisp=origin, momenta=momenta, masses=self.masses, pbc=pbc, info=info ) # Attach additional arrays found in the NetCDF file for name in self.extra_per_frame_vars: atoms.set_array(name, self.nc.variables[name][i][index]) for name in self.extra_per_file_vars: atoms.set_array(name, self.nc.variables[name][:]) self._close() return atoms i = N + i if i < 0 or i >= N: self._close() raise IndexError('Trajectory index out of range.') return self[i] def _len(self): if self._frame_dim in self.nc.dimensions: return int(self._get_variable(self._positions_var).shape[0]) else: return 0 def __len__(self): self._open() n_frames = self._len() self._close() return n_frames def pre_write_attach(self, function, interval=1, *args, **kwargs): """ Attach a function to be called before writing begins. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.pre_observers.append((function, interval, args, kwargs)) def post_write_attach(self, function, interval=1, *args, **kwargs): """ Attach a function to be called after writing ends. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.post_observers.append((function, interval, args, kwargs)) def _call_observers(self, obs): """Call pre/post write observers.""" for function, interval, args, kwargs in obs: if self.write_counter % interval == 0: function(*args, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/nwchem.py000066400000000000000000000054001316323560300230000ustar00rootroot00000000000000from ase.utils import StringIO from ase.io import read from ase.utils import basestring def read_nwchem_output(filename): """Method to read geometry from a nwchem output.""" f = filename if isinstance(filename, basestring): f = open(filename) lines = f.readlines() i = 0 while i < len(lines): if lines[i].find('XYZ format geometry') >= 0: natoms = int(lines[i + 2].split()[0]) string = '' for j in range(2, natoms + 4): xyzstring = lines[i + j] symbol = xyzstring.split()[0].strip() # replace bq ghost with X: MDTMP can we do better? if symbol.startswith('bq'): xyzstring = xyzstring.replace(symbol, 'X') string += xyzstring atoms = read(StringIO(string), format='xyz') i += natoms + 4 else: i += 1 if isinstance(filename, basestring): f.close() return atoms def read_nwchem(filename): """Method to read geometry from an NWChem input file.""" f = filename if isinstance(filename, basestring): f = open(filename) lines = f.readlines() # Find geometry region of input file. stopline = 0 for index, line in enumerate(lines): if line.startswith('geometry'): startline = index + 1 stopline = -1 elif (line.startswith('end') and stopline == -1): stopline = index # Format and send to read_xyz. xyz_text = '%i\n' % (stopline - startline) xyz_text += ' geometry\n' for line in lines[startline:stopline]: xyz_text += line atoms = read(StringIO(xyz_text), format='xyz') atoms.set_cell((0., 0., 0.)) # no unit cell defined if type(filename) == str: f.close() return atoms def write_nwchem(filename, atoms, geometry=None): """Method to write nwchem coord file """ if isinstance(filename, basestring): f = open(filename, 'w') else: # Assume it's a 'file-like object' f = filename # autosym and autoz are defaults # http://www.nwchem-sw.org/index.php/Geometry # geometry noautoz results in higher memory demand! # http://www.emsl.pnl.gov/docs/nwchem/nwchem-support/2010/10/0060.RE:_NWCHEM_Geometry_problem_fwd_ if geometry is not None: f.write('geometry ' + str(geometry) + '\n') else: f.write('geometry\n') for atom in atoms: if atom.tag == -71: # 71 is ascii G (Ghost) symbol = 'bq' + atom.symbol else: symbol = atom.symbol f.write(' ' + symbol + ' ' + str(atom.position[0]) + ' ' + str(atom.position[1]) + ' ' + str(atom.position[2]) + '\n') f.write('end\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/octopus.py000066400000000000000000000021001316323560300232050ustar00rootroot00000000000000import os from ase.calculators.octopus import parse_input_file, kwargs2atoms from ase.utils import basestring def read_octopus(fileobj, get_kwargs=False): if isinstance(fileobj, basestring): # This could be solved with decorators... fileobj = open(fileobj) kwargs = parse_input_file(fileobj) # input files may contain internal references to other files such # as xyz or xsf. We need to know the directory where the file # resides in order to locate those. If fileobj is a real file # object, it contains the path and we can use it. Else assume # pwd. # # Maybe this is ugly; maybe it can lead to strange bugs if someone # wants a non-standard file-like type. But it's probably better than # failing 'ase gui somedir/inp' try: fname = fileobj.name except AttributeError: directory = None else: directory = os.path.split(fname)[0] atoms, remaining_kwargs = kwargs2atoms(kwargs, directory=directory) if get_kwargs: return atoms, remaining_kwargs else: return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/opls.py000066400000000000000000000636471316323560300225150ustar00rootroot00000000000000from __future__ import print_function import time import numpy as np from ase.atom import Atom from ase.atoms import Atoms from ase.calculators.lammpsrun import Prism from ase.neighborlist import NeighborList from ase.data import atomic_masses, chemical_symbols from ase.io import read from ase.utils import basestring def twochar(name): if len(name) > 1: return name[:2] else: return name + ' ' class BondData: def __init__(self, name_value_hash): self.nvh = name_value_hash def name_value(self, aname, bname): name1 = twochar(aname) + '-' + twochar(bname) name2 = twochar(bname) + '-' + twochar(aname) if name1 in self.nvh: return name1, self.nvh[name1] if name2 in self.nvh: return name2, self.nvh[name2] return None, None def value(self, aname, bname): return self.name_value(aname, bname)[1] class CutoffList(BondData): def max(self): return max(self.nvh.values()) class AnglesData: def __init__(self, name_value_hash): self.nvh = name_value_hash def name_value(self, aname, bname, cname): for name in [ (twochar(aname) + '-' + twochar(bname) + '-' + twochar(cname)), (twochar(cname) + '-' + twochar(bname) + '-' + twochar(aname))]: if name in self.nvh: return name, self.nvh[name] return None, None class DihedralsData: def __init__(self, name_value_hash): self.nvh = name_value_hash def name_value(self, aname, bname, cname, dname): for name in [ (twochar(aname) + '-' + twochar(bname) + '-' + twochar(cname) + '-' + twochar(dname)), (twochar(dname) + '-' + twochar(cname) + '-' + twochar(bname) + '-' + twochar(aname))]: if name in self.nvh: return name, self.nvh[name] return None, None class OPLSff: def __init__(self, fileobj=None, warnings=0): self.warnings = warnings self.data = {} if fileobj is not None: self.read(fileobj) def read(self, fileobj, comments='#'): if isinstance(fileobj, basestring): fileobj = open(fileobj) def read_block(name, symlen, nvalues): """Read a data block. name: name of the block to store in self.data symlen: length of the symbol nvalues: number of values expected """ if name not in self.data: self.data[name] = {} data = self.data[name] def add_line(): line = fileobj.readline().strip() if not len(line): # end of the block return False line = line.split('#')[0] # get rid of comments if len(line) > symlen: symbol = line[:symlen] words = line[symlen:].split() if len(words) >= nvalues: if nvalues == 1: data[symbol] = float(words[0]) else: data[symbol] = [float(word) for word in words[:nvalues]] return True while add_line(): pass read_block('one', 2, 3) read_block('bonds', 5, 2) read_block('angles', 8, 2) read_block('dihedrals', 11, 4) read_block('cutoffs', 5, 1) self.bonds = BondData(self.data['bonds']) self.angles = AnglesData(self.data['angles']) self.dihedrals = DihedralsData(self.data['dihedrals']) self.cutoffs = CutoffList(self.data['cutoffs']) def write_lammps(self, atoms, prefix='lammps'): """Write input for a LAMMPS calculation.""" self.prefix = prefix if hasattr(atoms, 'connectivities'): connectivities = atoms.connectivities else: btypes, blist = self.get_bonds(atoms) atypes, alist = self.get_angles() dtypes, dlist = self.get_dihedrals(alist, atypes) connectivities = { 'bonds': blist, 'bond types': btypes, 'angles': alist, 'angle types': atypes, 'dihedrals': dlist, 'dihedral types': dtypes} self.write_lammps_definitions(atoms, btypes, atypes, dtypes) self.write_lammps_in() self.write_lammps_atoms(atoms, connectivities) def write_lammps_in(self): fileobj = self.prefix + '_in' if isinstance(fileobj, basestring): fileobj = open(fileobj, 'w') fileobj.write("""# LAMMPS relaxation (written by ASE) units metal atom_style full boundary p p p #boundary p p f """) fileobj.write('read_data ' + self.prefix + '_atoms\n') fileobj.write('include ' + self.prefix + '_opls\n') fileobj.write(""" kspace_style pppm 1e-5 #kspace_modify slab 3.0 neighbor 1.0 bin neigh_modify delay 0 every 1 check yes thermo 1000 thermo_style custom step temp press cpu pxx pyy pzz pxy pxz pyz ke pe etotal vol lx ly lz atoms dump 1 all xyz 1000 dump_relax.xyz dump_modify 1 sort id restart 100000 test_relax min_style fire minimize 1.0e-14 1.0e-5 100000 100000 """) fileobj.close() def write_lammps_atoms(self, atoms, connectivities): """Write atoms input for LAMMPS""" fname = self.prefix + '_atoms' fileobj = open(fname, 'w') # header fileobj.write(fileobj.name + ' (by ' + str(self.__class__) + ')\n\n') fileobj.write(str(len(atoms)) + ' atoms\n') fileobj.write(str(len(atoms.types)) + ' atom types\n') blist = connectivities['bonds'] if len(blist): btypes = connectivities['bond types'] fileobj.write(str(len(blist)) + ' bonds\n') fileobj.write(str(len(btypes)) + ' bond types\n') alist = connectivities['angles'] if len(alist): atypes = connectivities['angle types'] fileobj.write(str(len(alist)) + ' angles\n') fileobj.write(str(len(atypes)) + ' angle types\n') dlist = connectivities['dihedrals'] if len(dlist): dtypes = connectivities['dihedral types'] fileobj.write(str(len(dlist)) + ' dihedrals\n') fileobj.write(str(len(dtypes)) + ' dihedral types\n') # cell p = Prism(atoms.get_cell()) xhi, yhi, zhi, xy, xz, yz = p.get_lammps_prism_str() fileobj.write('\n0.0 %s xlo xhi\n' % xhi) fileobj.write('0.0 %s ylo yhi\n' % yhi) fileobj.write('0.0 %s zlo zhi\n' % zhi) # atoms fileobj.write('\nAtoms\n\n') tag = atoms.get_tags() if atoms.has('molid'): molid = atoms.get_array('molid') else: molid = [1] * len(atoms) for i, r in enumerate( p.positions_to_lammps_strs(atoms.get_positions())): q = self.data['one'][atoms.types[tag[i]]][2] fileobj.write('%6d %3d %3d %s %s %s %s' % ((i + 1, molid[i], tag[i] + 1, q) + tuple(r))) fileobj.write(' # ' + atoms.types[tag[i]] + '\n') # velocities velocities = atoms.get_velocities() if velocities is not None: fileobj.write('\nVelocities\n\n') for i, v in enumerate(velocities): fileobj.write('%6d %g %g %g\n' % (i + 1, v[0], v[1], v[2])) # masses fileobj.write('\nMasses\n\n') for i, typ in enumerate(atoms.types): cs = atoms.split_symbol(typ)[0] fileobj.write('%6d %g # %s -> %s\n' % (i + 1, atomic_masses[chemical_symbols.index(cs)], typ, cs)) # bonds if len(blist): fileobj.write('\nBonds\n\n') for ib, bvals in enumerate(blist): fileobj.write('%8d %6d %6d %6d ' % (ib + 1, bvals[0] + 1, bvals[1] + 1, bvals[2] + 1)) try: fileobj.write('# ' + btypes[bvals[0]]) except: pass fileobj.write('\n') # angles if len(alist): fileobj.write('\nAngles\n\n') for ia, avals in enumerate(alist): fileobj.write('%8d %6d %6d %6d %6d ' % (ia + 1, avals[0] + 1, avals[1] + 1, avals[2] + 1, avals[3] + 1)) try: fileobj.write('# ' + atypes[avals[0]]) except: pass fileobj.write('\n') # dihedrals if len(dlist): fileobj.write('\nDihedrals\n\n') for i, dvals in enumerate(dlist): fileobj.write('%8d %6d %6d %6d %6d %6d ' % (i + 1, dvals[0] + 1, dvals[1] + 1, dvals[2] + 1, dvals[3] + 1, dvals[4] + 1)) try: fileobj.write('# ' + dtypes[dvals[0]]) except: pass fileobj.write('\n') def update_neighbor_list(self, atoms): cut = 0.5 * max(self.data['cutoffs'].values()) self.nl = NeighborList([cut] * len(atoms), skin=0, bothways=True, self_interaction=False) self.nl.update(atoms) self.atoms = atoms def get_bonds(self, atoms): """Find bonds and return them and their types""" cutoffs = CutoffList(self.data['cutoffs']) self.update_neighbor_list(atoms) types = atoms.get_types() tags = atoms.get_tags() cell = atoms.get_cell() bond_list = [] bond_types = [] for i, atom in enumerate(atoms): iname = types[tags[i]] indices, offsets = self.nl.get_neighbors(i) for j, offset in zip(indices, offsets): if j <= i: continue # do not double count jname = types[tags[j]] cut = cutoffs.value(iname, jname) if cut is None: if self.warnings > 1: print('Warning: cutoff %s-%s not found' % (iname, jname)) continue # don't have it dist = np.linalg.norm(atom.position - atoms[j].position - np.dot(offset, cell)) if dist > cut: continue # too far away name, val = self.bonds.name_value(iname, jname) if name is None: if self.warnings: print('Warning: potential %s-%s not found' % (iname, jname)) continue # don't have it if name not in bond_types: bond_types.append(name) bond_list.append([bond_types.index(name), i, j]) return bond_types, bond_list def get_angles(self, atoms=None): cutoffs = CutoffList(self.data['cutoffs']) if atoms is not None: self.update_neighbor_list(atoms) else: atoms = self.atoms types = atoms.get_types() tags = atoms.get_tags() cell = atoms.get_cell() ang_list = [] ang_types = [] # center atom *-i-* for i, atom in enumerate(atoms): iname = types[tags[i]] indicesi, offsetsi = self.nl.get_neighbors(i) # search for first neighbor j-i-* for j, offsetj in zip(indicesi, offsetsi): jname = types[tags[j]] cut = cutoffs.value(iname, jname) if cut is None: continue # don't have it dist = np.linalg.norm(atom.position - atoms[j].position - np.dot(offsetj, cell)) if dist > cut: continue # too far away # search for second neighbor j-i-k for k, offsetk in zip(indicesi, offsetsi): if k <= j: continue # avoid double count kname = types[tags[k]] cut = cutoffs.value(iname, kname) if cut is None: continue # don't have it dist = np.linalg.norm(atom.position - np.dot(offsetk, cell) - atoms[k].position) if dist > cut: continue # too far away name, val = self.angles.name_value(jname, iname, kname) if name is None: if self.warnings > 1: print('Warning: angles %s-%s-%s not found' % (jname, iname, kname)) continue # don't have it if name not in ang_types: ang_types.append(name) ang_list.append([ang_types.index(name), j, i, k]) return ang_types, ang_list def get_dihedrals(self, ang_types, ang_list): 'Dihedrals derived from angles.' cutoffs = CutoffList(self.data['cutoffs']) atoms = self.atoms types = atoms.get_types() tags = atoms.get_tags() cell = atoms.get_cell() dih_list = [] dih_types = [] def append(name, i, j, k, l): if name not in dih_types: dih_types.append(name) index = dih_types.index(name) if (([index, i, j, k, l] not in dih_list) and ([index, l, k, j, i] not in dih_list)): dih_list.append([index, i, j, k, l]) for angle in ang_types: l, i, j, k = angle iname = types[tags[i]] jname = types[tags[j]] kname = types[tags[k]] # search for l-i-j-k indicesi, offsetsi = self.nl.get_neighbors(i) for l, offsetl in zip(indicesi, offsetsi): if l == j: continue # avoid double count lname = types[tags[l]] cut = cutoffs.value(iname, lname) if cut is None: continue # don't have it dist = np.linalg.norm(atoms[i].position - atoms[l].position - np.dot(offsetl, cell)) if dist > cut: continue # too far away name, val = self.dihedrals.name_value(lname, iname, jname, kname) if name is None: continue # don't have it append(name, l, i, j, k) # search for i-j-k-l indicesk, offsetsk = self.nl.get_neighbors(k) for l, offsetl in zip(indicesk, offsetsk): if l == j: continue # avoid double count lname = types[tags[l]] cut = cutoffs.value(kname, lname) if cut is None: continue # don't have it dist = np.linalg.norm(atoms[k].position - atoms[l].position - np.dot(offsetl, cell)) if dist > cut: continue # too far away name, val = self.dihedrals.name_value(iname, jname, kname, lname) if name is None: continue # don't have it append(name, i, j, k, l) return dih_types, dih_list def write_lammps_definitions(self, atoms, btypes, atypes, dtypes): """Write force field definitions for LAMMPS.""" fileobj = self.prefix + '_opls' if isinstance(fileobj, basestring): fileobj = open(fileobj, 'w') fileobj.write('# OPLS potential\n') fileobj.write('# write_lammps' + str(time.asctime(time.localtime(time.time())))) # bonds if len(btypes): fileobj.write('\n# bonds\n') fileobj.write('bond_style harmonic\n') for ib, btype in enumerate(btypes): fileobj.write('bond_coeff %6d' % (ib + 1)) for value in self.bonds.nvh[btype]: fileobj.write(' ' + str(value)) fileobj.write(' # ' + btype + '\n') # angles if len(atypes): fileobj.write('\n# angles\n') fileobj.write('angle_style harmonic\n') for ia, atype in enumerate(atypes): fileobj.write('angle_coeff %6d' % (ia + 1)) for value in self.angles.nvh[atype]: fileobj.write(' ' + str(value)) fileobj.write(' # ' + atype + '\n') # dihedrals if len(dtypes): fileobj.write('\n# dihedrals\n') fileobj.write('dihedral_style opls\n') for i, dtype in enumerate(dtypes): fileobj.write('dihedral_coeff %6d' % (i + 1)) for value in self.dihedrals.nvh[dtype]: fileobj.write(' ' + str(value)) fileobj.write(' # ' + dtype + '\n') # Lennard Jones settings fileobj.write('\n# L-J parameters\n') fileobj.write('pair_style lj/cut/coul/long 10.0 7.4' + ' # consider changing these parameters\n') fileobj.write('special_bonds lj/coul 0.0 0.0 0.5\n') data = self.data['one'] for ia, atype in enumerate(atoms.types): if len(atype) < 2: atype = atype + ' ' fileobj.write('pair_coeff ' + str(ia + 1) + ' ' + str(ia + 1)) for value in data[atype][:2]: fileobj.write(' ' + str(value)) fileobj.write(' # ' + atype + '\n') fileobj.write('pair_modify shift yes mix geometric\n') # Charges fileobj.write('\n# charges\n') for ia, atype in enumerate(atoms.types): if len(atype) < 2: atype = atype + ' ' fileobj.write('set type ' + str(ia + 1)) fileobj.write(' charge ' + str(data[atype][2])) fileobj.write(' # ' + atype + '\n') class OPLSStructure(Atoms): default_map = { 'BR': 'Br', 'Be': 'Be', 'C0': 'Ca', 'Li': 'Li', 'Mg': 'Mg', 'Al': 'Al', 'Ar': 'Ar'} def __init__(self, filename=None, *args, **kwargs): Atoms.__init__(self, *args, **kwargs) if filename: self.read_extended_xyz(filename) else: self.types = [] for atom in self: if atom.symbol not in self.types: self.types.append(atom.symbol) atom.tag = self.types.index(atom.symbol) def append(self, atom): """Append atom to end.""" self.extend(Atoms([atom])) def read_extended_xyz(self, fileobj, map={}): """Read extended xyz file with labeled atoms.""" atoms = read(fileobj) self.set_cell(atoms.get_cell()) self.set_pbc(atoms.get_pbc()) types = [] types_map = {} for atom, type in zip(atoms, atoms.get_array('type')): if type not in types: types_map[type] = len(types) types.append(type) atom.tag = types_map[type] self.append(atom) self.types = types # copy extra array info for name, array in atoms.arrays.items(): if name not in self.arrays: self.new_array(name, array) def split_symbol(self, string, translate=default_map): if string in translate: return translate[string], string if len(string) < 2: return string, None return string[0], string[1] def get_types(self): return self.types def colored(self, elements): res = Atoms() res.set_cell(self.get_cell()) for atom in self: elem = self.types[atom.tag] if elem in elements: elem = elements[elem] res.append(Atom(elem, atom.position)) return res def update_from_lammps_dump(self, fileobj, check=True): atoms = read(fileobj, format='lammps-dump') if len(atoms) != len(self): raise RuntimeError('Structure in ' + str(fileobj) + ' has wrong length: %d != %d' % (len(atoms), len(self))) if check: for a, b in zip(self, atoms): # check that the atom types match if not (a.tag + 1 == b.number): raise RuntimeError('Atoms index %d are of different ' 'type (%d != %d)' % (a.index, a.tag + 1, b.number)) self.set_cell(atoms.get_cell()) self.set_positions(atoms.get_positions()) if atoms.get_velocities() is not None: self.set_velocities(atoms.get_velocities()) # XXX what about energy and forces ??? def read_connectivities(self, fileobj, update_types=False): """Read positions, connectivities, etc. update_types: update atom types from the masses """ if isinstance(fileobj, basestring): fileobj = open(fileobj, 'r') lines = fileobj.readlines() lines.pop(0) def next_entry(): line = lines.pop(0).strip() if(len(line) > 0): lines.insert(0, line) def next_key(): while(len(lines)): line = lines.pop(0).strip() if(len(line) > 0): lines.pop(0) return line return None next_entry() header = {} while(True): line = lines.pop(0).strip() if len(line): w = line.split() if len(w) == 2: header[w[1]] = int(w[0]) else: header[w[1] + ' ' + w[2]] = int(w[0]) else: break while(not lines.pop(0).startswith('Atoms')): pass lines.pop(0) natoms = len(self) positions = np.empty((natoms, 3)) for i in range(natoms): w = lines.pop(0).split() assert(int(w[0]) == (i + 1)) positions[i] = np.array([float(w[4 + c]) for c in range(3)]) # print(w, positions[i]) key = next_key() velocities = None if key == 'Velocities': velocities = np.empty((natoms, 3)) for i in range(natoms): w = lines.pop(0).split() assert(int(w[0]) == (i + 1)) velocities[i] = np.array([float(w[1 + c]) for c in range(3)]) key = next_key() if key == 'Masses': ntypes = len(self.types) masses = np.empty((ntypes)) for i in range(ntypes): w = lines.pop(0).split() assert(int(w[0]) == (i + 1)) masses[i] = float(w[1]) if update_types: # get the elements from the masses # this ensures that we have the right elements # even when reading from a lammps dump file def newtype(element, types): if len(element) > 1: # can not extend, we are restricted to # two characters return element count = 0 for type in types: if type[0] == element: count += 1 label = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' return (element + label[count]) symbolmap = {} typemap = {} types = [] ams = atomic_masses[:] ams[np.isnan(ams)] = 0 for i, mass in enumerate(masses): m2 = (ams - mass)**2 symbolmap[self.types[i]] = chemical_symbols[m2.argmin()] typemap[self.types[i]] = newtype( chemical_symbols[m2.argmin()], types) types.append(typemap[self.types[i]]) for atom in self: atom.symbol = symbolmap[atom.symbol] self.types = types key = next_key() def read_list(key_string, length, debug=False): if key != key_string: return [], key lst = [] while(len(lines)): w = lines.pop(0).split() if len(w) > length: lst.append([(int(w[1 + c]) - 1) for c in range(length)]) else: return lst, next_key() return lst, None bonds, key = read_list('Bonds', 3) angles, key = read_list('Angles', 4) dihedrals, key = read_list('Dihedrals', 5, True) self.connectivities = { 'bonds': bonds, 'angles': angles, 'dihedrals': dihedrals } if 'bonds' in header: assert(len(bonds) == header['bonds']) self.connectivities['bond types'] = list( range(header['bond types'])) if 'angles' in header: assert(len(angles) == header['angles']) self.connectivities['angle types'] = list( range(header['angle types'])) if 'dihedrals' in header: assert(len(dihedrals) == header['dihedrals']) self.connectivities['dihedral types'] = list(range( header['dihedral types'])) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/pickletrajectory.py000066400000000000000000000530311316323560300251000ustar00rootroot00000000000000from __future__ import print_function import os import sys import errno import pickle import warnings import collections # Python 3 stuff: try: unicode except NameError: unicode = str # pass for WindowsError on non-Win platforms try: WindowsError except NameError: class WindowsError(OSError): pass import numpy as np from ase.atoms import Atoms from ase.calculators.singlepoint import SinglePointCalculator, all_properties from ase.calculators.calculator import PropertyNotImplementedError from ase.constraints import FixAtoms from ase.parallel import rank, barrier from ase.utils import devnull, basestring class PickleTrajectory: """Reads/writes Atoms objects into a .traj file.""" # Per default, write these quantities write_energy = True write_forces = True write_stress = True write_charges = True write_magmoms = True write_momenta = True write_info = True def __init__(self, filename, mode='r', atoms=None, master=None, backup=True, _warn=True): """A PickleTrajectory can be created in read, write or append mode. Parameters: filename: The name of the parameter file. Should end in .traj. mode='r': The mode. 'r' is read mode, the file should already exist, and no atoms argument should be specified. 'w' is write mode. If the file already exists, it is renamed by appending .bak to the file name. The atoms argument specifies the Atoms object to be written to the file, if not given it must instead be given as an argument to the write() method. 'a' is append mode. It acts a write mode, except that data is appended to a preexisting file. atoms=None: The Atoms object to be written in write or append mode. master=None: Controls which process does the actual writing. The default is that process number 0 does this. If this argument is given, processes where it is True will write. backup=True: Use backup=False to disable renaming of an existing file. """ if _warn: msg = 'Please stop using old trajectory files!' if mode == 'r': msg += ('\nConvert to the new future-proof format like this:\n' '\n $ python -m ase.io.trajectory ' + filename + '\n') raise DeprecationWarning(msg) self.numbers = None self.pbc = None self.sanitycheck = True self.pre_observers = [] # Callback functions before write self.post_observers = [] # Callback functions after write # Counter used to determine when callbacks are called: self.write_counter = 0 self.offsets = [] if master is None: master = (rank == 0) self.master = master self.backup = backup self.set_atoms(atoms) self.open(filename, mode) def open(self, filename, mode): """Opens the file. For internal use only. """ self.fd = filename if mode == 'r': if isinstance(filename, basestring): self.fd = open(filename, 'rb') self.read_header() elif mode == 'a': exists = True if isinstance(filename, basestring): exists = os.path.isfile(filename) if exists: exists = os.path.getsize(filename) > 0 if exists: self.fd = open(filename, 'rb') self.read_header() self.fd.close() barrier() if self.master: self.fd = open(filename, 'ab+') else: self.fd = devnull elif mode == 'w': if self.master: if isinstance(filename, basestring): if self.backup and os.path.isfile(filename): try: os.rename(filename, filename + '.bak') except WindowsError as e: # this must run on Win only! Not atomic! if e.errno != errno.EEXIST: raise os.unlink(filename + '.bak') os.rename(filename, filename + '.bak') self.fd = open(filename, 'wb') else: self.fd = devnull else: raise ValueError('mode must be "r", "w" or "a".') def set_atoms(self, atoms=None): """Associate an Atoms object with the trajectory. Mostly for internal use. """ if atoms is not None and not hasattr(atoms, 'get_positions'): raise TypeError('"atoms" argument is not an Atoms object.') self.atoms = atoms def read_header(self): if hasattr(self.fd, 'name'): if os.path.isfile(self.fd.name): if os.path.getsize(self.fd.name) == 0: return self.fd.seek(0) try: if self.fd.read(len('PickleTrajectory')) != b'PickleTrajectory': raise IOError('This is not a trajectory file!') d = pickle.load(self.fd) except EOFError: raise EOFError('Bad trajectory file.') self.pbc = d['pbc'] self.numbers = d['numbers'] self.tags = d.get('tags') self.masses = d.get('masses') self.constraints = dict2constraints(d) self.offsets.append(self.fd.tell()) def write(self, atoms=None): if atoms is None: atoms = self.atoms for image in atoms._images_(): self._write_atoms(image) def _write_atoms(self, atoms): """Write the atoms to the file. If the atoms argument is not given, the atoms object specified when creating the trajectory object is used. """ self._call_observers(self.pre_observers) if len(self.offsets) == 0: self.write_header(atoms) else: if (atoms.pbc != self.pbc).any(): raise ValueError('Bad periodic boundary conditions!') elif self.sanitycheck and len(atoms) != len(self.numbers): raise ValueError('Bad number of atoms!') elif self.sanitycheck and (atoms.numbers != self.numbers).any(): raise ValueError('Bad atomic numbers!') if atoms.has('momenta'): momenta = atoms.get_momenta() else: momenta = None d = {'positions': atoms.get_positions(), 'cell': atoms.get_cell(), 'momenta': momenta} if atoms.get_calculator() is not None: if self.write_energy: d['energy'] = atoms.get_potential_energy() if self.write_forces: assert self.write_energy try: d['forces'] = atoms.get_forces(apply_constraint=False) except PropertyNotImplementedError: pass if self.write_stress: assert self.write_energy try: d['stress'] = atoms.get_stress() except PropertyNotImplementedError: pass if self.write_charges: try: d['charges'] = atoms.get_charges() except PropertyNotImplementedError: pass if self.write_magmoms: try: if atoms.calc.get_spin_polarized(): d['magmoms'] = atoms.get_magnetic_moments() except (PropertyNotImplementedError, AttributeError): pass if 'magmoms' not in d and atoms.has('initial_magmoms'): d['magmoms'] = atoms.get_initial_magnetic_moments() if 'charges' not in d and atoms.has('initial_charges'): charges = atoms.get_initial_charges() if (charges != 0).any(): d['charges'] = charges if self.write_info: d['info'] = stringnify_info(atoms.info) if self.master: pickle.dump(d, self.fd, protocol=2) self.fd.flush() self.offsets.append(self.fd.tell()) self._call_observers(self.post_observers) self.write_counter += 1 def write_header(self, atoms): self.fd.write(b'PickleTrajectory') if atoms.has('tags'): tags = atoms.get_tags() else: tags = None if atoms.has('masses'): masses = atoms.get_masses() else: masses = None d = {'version': 3, 'pbc': atoms.get_pbc(), 'numbers': atoms.get_atomic_numbers(), 'tags': tags, 'masses': masses, 'constraints': [], # backwards compatibility 'constraints_string': pickle.dumps(atoms.constraints, protocol=0)} pickle.dump(d, self.fd, protocol=2) self.header_written = True self.offsets.append(self.fd.tell()) # Atomic numbers and periodic boundary conditions are only # written once - in the header. Store them here so that we can # check that they are the same for all images: self.numbers = atoms.get_atomic_numbers() self.pbc = atoms.get_pbc() def close(self): """Close the trajectory file.""" self.fd.close() def __getitem__(self, i=-1): if isinstance(i, slice): return [self[j] for j in range(*i.indices(len(self)))] N = len(self.offsets) if 0 <= i < N: self.fd.seek(self.offsets[i]) try: d = pickle.load(self.fd) except EOFError: raise IndexError if i == N - 1: self.offsets.append(self.fd.tell()) charges = d.get('charges') magmoms = d.get('magmoms') try: constraints = [c.copy() for c in self.constraints] except: constraints = [] warnings.warn('Constraints did not unpickle correctly.') atoms = Atoms(positions=d['positions'], numbers=self.numbers, cell=d['cell'], momenta=d['momenta'], magmoms=magmoms, charges=charges, tags=self.tags, masses=self.masses, pbc=self.pbc, info=unstringnify_info(d.get('info', {})), constraint=constraints) if 'energy' in d: calc = SinglePointCalculator( atoms, energy=d.get('energy', None), forces=d.get('forces', None), stress=d.get('stress', None), magmoms=magmoms) atoms.set_calculator(calc) return atoms if i >= N: for j in range(N - 1, i + 1): atoms = self[j] return atoms i = len(self) + i if i < 0: raise IndexError('Trajectory index out of range.') return self[i] def __len__(self): if len(self.offsets) == 0: return 0 N = len(self.offsets) - 1 while True: self.fd.seek(self.offsets[N]) try: pickle.load(self.fd) except EOFError: return N self.offsets.append(self.fd.tell()) N += 1 def __iter__(self): del self.offsets[1:] return self def next(self): try: return self[len(self.offsets) - 1] except IndexError: raise StopIteration __next__ = next def guess_offsets(self): size = os.path.getsize(self.fd.name) while True: self.fd.seek(self.offsets[-1]) try: pickle.load(self.fd) except: raise EOFError('Damaged trajectory file.') else: self.offsets.append(self.fd.tell()) if self.offsets[-1] >= size: break if len(self.offsets) > 2: step1 = self.offsets[-1] - self.offsets[-2] step2 = self.offsets[-2] - self.offsets[-3] if step1 == step2: m = int((size - self.offsets[-1]) / step1) - 1 while m > 1: self.fd.seek(self.offsets[-1] + m * step1) try: pickle.load(self.fd) except: m = m // 2 else: for i in range(m): self.offsets.append(self.offsets[-1] + step1) m = 0 def pre_write_attach(self, function, interval=1, *args, **kwargs): """Attach a function to be called before writing begins. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.pre_observers.append((function, interval, args, kwargs)) def post_write_attach(self, function, interval=1, *args, **kwargs): """Attach a function to be called after writing ends. function: The function or callable object to be called. interval: How often the function is called. Default: every time (1). All other arguments are stored, and passed to the function. """ if not isinstance(function, collections.Callable): raise ValueError('Callback object must be callable.') self.post_observers.append((function, interval, args, kwargs)) def _call_observers(self, obs): """Call pre/post write observers.""" for function, interval, args, kwargs in obs: if self.write_counter % interval == 0: function(*args, **kwargs) def stringnify_info(info): """Return a stringnified version of the dict *info* that is ensured to be picklable. Items with non-string keys or unpicklable values are dropped and a warning is issued.""" stringnified = {} for k, v in info.items(): if not isinstance(k, basestring): warnings.warn('Non-string info-dict key is not stored in ' + 'trajectory: ' + repr(k), UserWarning) continue try: # Should highest protocol be used here for efficiency? # Protocol 2 seems not to raise an exception when one # tries to pickle a file object, so by using that, we # might end up with file objects in inconsistent states. s = pickle.dumps(v, protocol=0) except: warnings.warn('Skipping not picklable info-dict item: ' + '"%s" (%s)' % (k, sys.exc_info()[1]), UserWarning) else: stringnified[k] = s return stringnified def unstringnify_info(stringnified): """Convert the dict *stringnified* to a dict with unstringnified objects and return it. Objects that cannot be unpickled will be skipped and a warning will be issued.""" info = {} for k, s in stringnified.items(): try: v = pickle.loads(s) except: warnings.warn('Skipping not unpicklable info-dict item: ' + '"%s" (%s)' % (k, sys.exc_info()[1]), UserWarning) else: info[k] = v return info def read_trajectory(filename, index=-1): traj = PickleTrajectory(filename, mode='r') if isinstance(index, int): return traj[index] else: # Here, we try to read only the configurations we need to read # and len(traj) should only be called if we need to as it will # read all configurations! # XXX there must be a simpler way? step = index.step or 1 if step > 0: start = index.start or 0 if start < 0: start += len(traj) stop = index.stop or len(traj) if stop < 0: stop += len(traj) else: if index.start is None: start = len(traj) - 1 else: start = index.start if start < 0: start += len(traj) if index.stop is None: stop = -1 else: stop = index.stop if stop < 0: stop += len(traj) return [traj[i] for i in range(start, stop, step)] def write_trajectory(filename, images): """Write image(s) to trajectory. Write also energy, forces, and stress if they are already calculated.""" traj = PickleTrajectory(filename, mode='w') if hasattr(images, 'get_positions'): images = [images] for atoms in images: # Avoid potentially expensive calculations: calc = atoms.get_calculator() if hasattr(calc, 'check_state'): nochange = len(calc.check_state(atoms)) == 0 for property in all_properties: if not (nochange and property in calc.results): setattr(traj, 'write_' + property, False) elif hasattr(calc, 'calculation_required'): # Old interface: for property in all_properties: if calc.calculation_required(atoms, [property]): setattr(traj, 'write_' + property, False) else: for property in all_properties: setattr(traj, 'write_' + property, False) break for atoms in images: traj.write(atoms) traj.close() read_trj = read_trajectory write_trj = write_trajectory def dict2constraints(d): """Convert dict unpickled from trajectory file to list of constraints.""" version = d.get('version', 1) if version == 1: return d['constraints'] elif version in (2, 3): try: constraints = pickle.loads(d['constraints_string']) for c in constraints: if isinstance(c, FixAtoms) and c.index.dtype == bool: # Special handling of old pickles: c.index = np.arange(len(c.index))[c.index] return constraints except (AttributeError, KeyError, EOFError, ImportError): warnings.warn('Could not unpickle constraints!') return [] else: return [] def print_trajectory_info(filename): """Prints information about a PickleTrajectory file. Mainly intended to be called from a command line tool. """ f = open(filename, 'rb') hdr = 'PickleTrajectory' x = f.read(len(hdr)) if x != hdr: raise ValueError('Not a PickleTrajectory file!') # Head header header = pickle.load(f) print('Header information of trajectory file %r:' % filename) print(' Version: %d' % header.get('version', 1)) print(' Boundary conditions: %s' % header['pbc']) print(' Atomic numbers: shape = %s, type = %s' % (header['numbers'].shape, header['numbers'].dtype)) if header.get('tags') is None: print(' Tags are absent.') else: print(' Tags: shape = %s, type = %s' % (header['tags'].shape, header['tags'].dtype)) if header.get('masses') is None: print(' Masses are absent.') else: print(' Masses: shape = %s, type = %s' % (header['masses'].shape, header['masses'].dtype)) constraints = dict2constraints(header) if constraints: print(' %d constraints are present.' % len(constraints)) else: print(' No constraints.') after_header = f.tell() # Read the first frame frame = pickle.load(f) print('Contents of first frame:') for k, v in frame.items(): if hasattr(v, 'shape'): print(' %s: shape = %s, type = %s' % (k, v.shape, v.dtype)) else: print(' %s: %s' % (k, v)) after_frame = f.tell() kB = 1024 MB = 1024 * kB GB = 1024 * MB framesize = after_frame - after_header if framesize >= GB: print('Frame size: %.2f GB' % (1.0 * framesize / GB)) elif framesize >= MB: print(('Frame size: %.2f MB' % (1.0 * framesize / MB))) else: print(('Frame size: %.2f kB' % (1.0 * framesize / kB))) # Print information about file size try: filesize = os.path.getsize(filename) except IOError: print('No information about the file size.') else: if filesize >= GB: print(('File size: %.2f GB' % (1.0 * filesize / GB))) elif filesize >= MB: print(('File size: %.2f MB' % (1.0 * filesize / MB))) else: print(('File size: %.2f kB' % (1.0 * filesize / kB))) nframes = (filesize - after_header) // framesize offset = nframes * framesize + after_header - filesize if offset == 0: if nframes == 1: print('Trajectory contains 1 frame.') else: print(('Trajectory contains %d frames.' % nframes)) else: print(('Trajectory appears to contain approximately %d frames,' % nframes)) print('but the file size differs by %d bytes from the expected' % (-offset)) print('value.') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/plt.py000066400000000000000000000030751316323560300223240ustar00rootroot00000000000000import numpy as np from ase.atoms import Atoms from ase.utils import basestring def write_plt(filename, atoms, data): if isinstance(atoms, Atoms): cell = atoms.get_cell() else: cell = np.asarray(atoms, float) if cell.ndim == 2: c = cell.copy() cell = c.diagonal().copy() c.flat[::4] = 0.0 if c.any(): raise ValueError('Unit cell must be orthorhombic!') f = open(filename, 'w') np.array([3, 4], np.int32).tofile(f) dims = np.array(data.shape, np.int32) dims[::-1].tofile(f) for n, L in zip(dims[::-1], cell[::-1]): if n % 2 == 0: d = L / n np.array([0.0, L - d], np.float32).tofile(f) else: d = L / (n + 1) np.array([d, L - d], np.float32).tofile(f) if data.dtype == complex: data = np.abs(data) data.astype(np.float32).T.tofile(f) f.close() def read_plt(fileobj): if isinstance(fileobj, basestring): fileobj = open(fileobj, 'rb') # dummy numbers np.fromfile(fileobj, dtype=np.int32, count=2) # read dimensions dims = np.fromfile(fileobj, dtype=np.int32, count=3) # read cell cell = np.zeros((3, 3), np.float32) for c in range(3): beg, Lmd = np.fromfile(fileobj, dtype=np.float32, count=2) n = dims[c] if n % 2 == 0: cell[2 - c, 2 - c] = Lmd / (1 - 1. / n) else: cell[2 - c, 2 - c] = Lmd / (1 - 1. / (n + 1)) # read data data = np.fromfile(fileobj, dtype=np.float32) return data.reshape(dims).T, cell ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/png.py000066400000000000000000000030321316323560300223020ustar00rootroot00000000000000from distutils.version import LooseVersion import numpy as np from ase.io.eps import EPS class PNG(EPS): def write_header(self): from matplotlib.backends.backend_agg import RendererAgg try: from matplotlib.transforms import Value except ImportError: dpi = 72 else: dpi = Value(72) self.renderer = RendererAgg(self.w, self.h, dpi) def write_trailer(self): renderer = self.renderer if hasattr(renderer._renderer, 'write_png'): # Old version of matplotlib: renderer._renderer.write_png(self.filename) else: from matplotlib import _png # buffer_rgba does not accept arguments from version 1.2.0 # https://github.com/matplotlib/matplotlib/commit/f4fee350f9f import matplotlib if LooseVersion(matplotlib.__version__) < '1.2.0': _png.write_png(renderer.buffer_rgba(0, 0), renderer.width, renderer.height, self.filename, 72) else: x = renderer.buffer_rgba() try: _png.write_png(x, self.w, self.h, self.filename, 72) except (TypeError, ValueError): x = np.frombuffer(x, np.uint8).reshape( (int(self.h), int(self.w), 4)) _png.write_png(x, self.filename, 72) def write_png(filename, atoms, **parameters): PNG(atoms, **parameters).write(filename) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/pov.py000066400000000000000000000302311316323560300223230ustar00rootroot00000000000000""" Module for povray file format support. See http://www.povray.org/ for details on the format. """ import os import numpy as np from ase.io.eps import EPS from ase.constraints import FixAtoms from ase.utils import basestring def pa(array): """Povray array syntax""" return '<% 6.2f, % 6.2f, % 6.2f>' % tuple(array) def pc(array): """Povray color syntax""" if isinstance(array, basestring): return 'color ' + array if isinstance(array, float): return 'rgb <%.2f>*3' % array if len(array) == 3: return 'rgb <%.2f, %.2f, %.2f>' % tuple(array) if len(array) == 4: # filter return 'rgbf <%.2f, %.2f, %.2f, %.2f>' % tuple(array) if len(array) == 5: # filter and transmit return 'rgbft <%.2f, %.2f, %.2f, %.2f, %.2f>' % tuple(array) def get_bondpairs(atoms, radius=1.1): """Get all pairs of bonding atoms Return all pairs of atoms which are closer than radius times the sum of their respective covalent radii. The pairs are returned as tuples:: (a, b, (i1, i2, i3)) so that atoms a bonds to atom b displaced by the vector:: _ _ _ i c + i c + i c , 1 1 2 2 3 3 where c1, c2 and c3 are the unit cell vectors and i1, i2, i3 are integers.""" from ase.data import covalent_radii from ase.neighborlist import NeighborList cutoffs = radius * covalent_radii[atoms.numbers] nl = NeighborList(cutoffs=cutoffs, self_interaction=False) nl.update(atoms) bondpairs = [] for a in range(len(atoms)): indices, offsets = nl.get_neighbors(a) bondpairs.extend([(a, a2, offset) for a2, offset in zip(indices, offsets)]) return bondpairs class POVRAY(EPS): default_settings = { # x, y is the image plane, z is *out* of the screen 'display': True, # display while rendering 'pause': True, # pause when done rendering (only if display) 'transparent': True, # transparent background 'canvas_width': None, # width of canvas in pixels 'canvas_height': None, # height of canvas in pixels 'camera_dist': 50., # distance from camera to front atom 'image_plane': None, # distance from front atom to image plane 'camera_type': 'orthographic', # perspective, ultra_wide_angle 'point_lights': [], # [[loc1, color1], [loc2, color2],...] 'area_light': [(2., 3., 40.), # location 'White', # color .7, .7, 3, 3], # width, height, Nlamps_x, Nlamps_y 'background': 'White', # color 'textures': None, # length of atoms list of texture names 'transmittances': None, # transmittance of the atoms # use with care - in particular adjust the camera_distance to be closer 'depth_cueing': False, # fog a.k.a. depth cueing 'cue_density': 5e-3, # fog a.k.a. depth cueing 'celllinewidth': 0.05, # radius of the cylinders representing the cell 'bondlinewidth': 0.10, # radius of the cylinders representing bonds 'bondatoms': [], # [[atom1, atom2], ... ] pairs of bonding atoms 'exportconstraints': False} # honour FixAtoms and mark relevant atoms? def __init__(self, atoms, scale=1.0, **parameters): for k, v in self.default_settings.items(): setattr(self, k, parameters.pop(k, v)) EPS.__init__(self, atoms, scale=scale, **parameters) constr = atoms.constraints self.constrainatoms = [] for c in constr: if isinstance(c, FixAtoms): for n, i in enumerate(c.index): if i: self.constrainatoms += [n] def cell_to_lines(self, cell): return np.empty((0, 3)), None, None def write(self, filename, **settings): # Determine canvas width and height ratio = float(self.w) / self.h if self.canvas_width is None: if self.canvas_height is None: self.canvas_width = min(self.w * 15, 640) else: self.canvas_width = self.canvas_height * ratio elif self.canvas_height is not None: raise RuntimeError("Can't set *both* width and height!") # Distance to image plane from camera if self.image_plane is None: if self.camera_type == 'orthographic': self.image_plane = 1 - self.camera_dist else: self.image_plane = 0 self.image_plane += self.camera_dist # Produce the .ini file if filename.endswith('.pov'): ini = open(filename[:-4] + '.ini', 'w').write else: ini = open(filename + '.ini', 'w').write ini('Input_File_Name=%s\n' % filename) ini('Output_to_File=True\n') ini('Output_File_Type=N\n') ini('Output_Alpha=%s\n' % self.transparent) ini('; if you adjust Height, and width, you must preserve the ratio\n') ini('; Width / Height = %s\n' % repr(ratio)) ini('Width=%s\n' % self.canvas_width) ini('Height=%s\n' % (self.canvas_width / ratio)) ini('Antialias=True\n') ini('Antialias_Threshold=0.1\n') ini('Display=%s\n' % self.display) ini('Pause_When_Done=%s\n' % self.pause) ini('Verbose=False\n') del ini # Produce the .pov file w = open(filename, 'w').write w('#include "colors.inc"\n') w('#include "finish.inc"\n') w('\n') w('global_settings {assumed_gamma 1 max_trace_level 6}\n') w('background {%s}\n' % pc(self.background)) w('camera {%s\n' % self.camera_type) w(' right -%.2f*x up %.2f*y\n' % (self.w, self.h)) w(' direction %.2f*z\n' % self.image_plane) w(' location <0,0,%.2f> look_at <0,0,0>}\n' % self.camera_dist) for loc, rgb in self.point_lights: w('light_source {%s %s}\n' % (pa(loc), pc(rgb))) if self.area_light is not None: loc, color, width, height, nx, ny = self.area_light w('light_source {%s %s\n' % (pa(loc), pc(color))) w(' area_light <%.2f, 0, 0>, <0, %.2f, 0>, %i, %i\n' % ( width, height, nx, ny)) w(' adaptive 1 jitter}\n') # the depth cueing if self.depth_cueing and (self.cue_density >= 1e-4): # same way vmd does it if self.cue_density > 1e4: # larger does not make any sense dist = 1e-4 else: dist = 1. / self.cue_density w('fog {fog_type 1 distance %.4f color %s}' % (dist, pc(self.background))) w('\n') w('#declare simple = finish {phong 0.7}\n') w('#declare pale = finish {' 'ambient .5 ' 'diffuse .85 ' 'roughness .001 ' 'specular 0.200 }\n') w('#declare intermediate = finish {' 'ambient 0.3 ' 'diffuse 0.6 ' 'specular 0.10 ' 'roughness 0.04 }\n') w('#declare vmd = finish {' 'ambient .0 ' 'diffuse .65 ' 'phong 0.1 ' 'phong_size 40. ' 'specular 0.500 }\n') w('#declare jmol = finish {' 'ambient .2 ' 'diffuse .6 ' 'specular 1 ' 'roughness .001 ' 'metallic}\n') w('#declare ase2 = finish {' 'ambient 0.05 ' 'brilliance 3 ' 'diffuse 0.6 ' 'metallic ' 'specular 0.70 ' 'roughness 0.04 ' 'reflection 0.15}\n') w('#declare ase3 = finish {' 'ambient .15 ' 'brilliance 2 ' 'diffuse .6 ' 'metallic ' 'specular 1. ' 'roughness .001 ' 'reflection .0}\n') w('#declare glass = finish {' 'ambient .05 ' 'diffuse .3 ' 'specular 1. ' 'roughness .001}\n') w('#declare glass2 = finish {' 'ambient .0 ' 'diffuse .3 ' 'specular 1. ' 'reflection .25 ' 'roughness .001}\n') w('#declare Rcell = %.3f;\n' % self.celllinewidth) w('#declare Rbond = %.3f;\n' % self.bondlinewidth) w('\n') w('#macro atom(LOC, R, COL, TRANS, FIN)\n') w(' sphere{LOC, R texture{pigment{color COL transmit TRANS} ' 'finish{FIN}}}\n') w('#end\n') w('#macro constrain(LOC, R, COL, TRANS FIN)\n') w('union{torus{R, Rcell rotate 45*z ' 'texture{pigment{color COL transmit TRANS} finish{FIN}}}\n') w(' torus{R, Rcell rotate -45*z ' 'texture{pigment{color COL transmit TRANS} finish{FIN}}}\n') w(' translate LOC}\n') w('#end\n') w('\n') z0 = self.positions[:, 2].max() self.positions -= (self.w / 2, self.h / 2, z0) # Draw unit cell if self.cell_vertices is not None: self.cell_vertices -= (self.w / 2, self.h / 2, z0) self.cell_vertices.shape = (2, 2, 2, 3) for c in range(3): for j in ([0, 0], [1, 0], [1, 1], [0, 1]): parts = [] for i in range(2): j.insert(c, i) parts.append(self.cell_vertices[tuple(j)]) del j[c] distance = np.linalg.norm(parts[1] - parts[0]) if distance < 1e-12: continue w('cylinder {') for i in range(2): w(pa(parts[i]) + ', ') w('Rcell pigment {Black}}\n') # Draw atoms a = 0 for loc, dia, color in zip(self.positions, self.d, self.colors): tex = 'ase3' trans = 0. if self.textures is not None: tex = self.textures[a] if self.transmittances is not None: trans = self.transmittances[a] w('atom(%s, %.2f, %s, %s, %s) // #%i \n' % ( pa(loc), dia / 2., pc(color), trans, tex, a)) a += 1 # Draw atom bonds for pair in self.bondatoms: if len(pair) == 2: a, b = pair offset = (0, 0, 0) else: a, b, offset = pair R = np.dot(offset, self.cell) mida = 0.5 * (self.positions[a] + self.positions[b] + R) midb = 0.5 * (self.positions[a] + self.positions[b] - R) if self.textures is not None: texa = self.textures[a] texb = self.textures[b] else: texa = texb = 'ase3' if self.transmittances is not None: transa = self.transmittances[a] transb = self.transmittances[b] else: transa = transb = 0. fmt = ('cylinder {%s, %s, Rbond texture{pigment ' '{color %s transmit %s} finish{%s}}}\n') w(fmt % (pa(self.positions[a]), pa(mida), pc(self.colors[a]), transa, texa)) w(fmt % (pa(self.positions[b]), pa(midb), pc(self.colors[b]), transb, texb)) # Draw constraints if requested if self.exportconstraints: for a in self.constrainatoms: dia = self.d[a] loc = self.positions[a] trans = 0.0 if self.transmittances is not None: trans = self.transmittances[a] w('constrain(%s, %.2f, Black, %s, %s) // #%i \n' % ( pa(loc), dia / 2., tex, a, trans)) def write_pov(filename, atoms, run_povray=False, stderr=None, **parameters): if isinstance(atoms, list): assert len(atoms) == 1 atoms = atoms[0] assert 'scale' not in parameters POVRAY(atoms, **parameters).write(filename) if run_povray: cmd = 'povray {}.ini'.format(filename[:-4]) if stderr != '-': if stderr is None: stderr = '/dev/null' cmd += ' 2> {}'.format(stderr) errcode = os.system(cmd) if errcode != 0: raise OSError('Povray command ' + cmd + ' failed with error code %d' % errcode) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/proteindatabank.py000066400000000000000000000073411316323560300246730ustar00rootroot00000000000000"""Module to read and write atoms in PDB file format. See:: http://www.wwpdb.org/documentation/file-format Note: The PDB format saves cell lengths and angles; hence the absolute orientation is lost when saving. Saving and loading a file will conserve the scaled positions, not the absolute ones. """ import warnings import numpy as np from ase.atoms import Atom, Atoms from ase.parallel import paropen from ase.geometry import cellpar_to_cell from ase.utils import basestring def read_proteindatabank(fileobj, index=-1): """Read PDB files.""" if isinstance(fileobj, basestring): fileobj = open(fileobj) images = [] orig = np.identity(3) trans = np.zeros(3) atoms = Atoms() for line in fileobj.readlines(): if line.startswith('CRYST1'): cellpar = [float(word) for word in line[6:54].split()] atoms.set_cell(cellpar_to_cell(cellpar)) atoms.pbc = True for c in range(3): if line.startswith('ORIGX' + '123'[c]): pars = [float(word) for word in line[10:55].split()] orig[c] = pars[:3] trans[c] = pars[3] if line.startswith('ATOM') or line.startswith('HETATM'): try: # Atom name is arbitrary and does not necessarily # contain the element symbol. The specification # requires the element symbol to be in columns 77+78. symbol = line[76:78].strip().lower().capitalize() words = line[30:55].split() position = np.array([float(words[0]), float(words[1]), float(words[2])]) position = np.dot(orig, position) + trans atoms.append(Atom(symbol, position)) except Exception as ex: warnings.warn('Discarding atom when reading PDB file: {}' .format(ex)) if line.startswith('ENDMDL'): images.append(atoms) atoms = Atoms() if len(images) == 0: images.append(atoms) return images[index] def write_proteindatabank(fileobj, images): """Write images to PDB-file.""" if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if hasattr(images, 'get_positions'): images = [images] rotation = None if images[0].get_pbc().any(): from ase.geometry import cell_to_cellpar, cellpar_to_cell currentcell = images[0].get_cell() cellpar = cell_to_cellpar(currentcell) exportedcell = cellpar_to_cell(cellpar) rotation = np.linalg.solve(currentcell, exportedcell) # ignoring Z-value, using P1 since we have all atoms defined explicitly format = 'CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f P 1\n' fileobj.write(format % (cellpar[0], cellpar[1], cellpar[2], cellpar[3], cellpar[4], cellpar[5])) # 1234567 123 6789012345678901 89 67 456789012345678901234567 890 format = ('ATOM %5d %4s MOL 1 %8.3f%8.3f%8.3f 1.00 0.00' ' %2s \n') # RasMol complains if the atom index exceeds 100000. There might # be a limit of 5 digit numbers in this field. MAXNUM = 100000 symbols = images[0].get_chemical_symbols() natoms = len(symbols) for n, atoms in enumerate(images): fileobj.write('MODEL ' + str(n + 1) + '\n') p = atoms.get_positions() if rotation is not None: p = p.dot(rotation) for a in range(natoms): x, y, z = p[a] fileobj.write(format % (a % MAXNUM, symbols[a], x, y, z, symbols[a].upper())) fileobj.write('ENDMDL\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/py.py000066400000000000000000000014151316323560300221510ustar00rootroot00000000000000 def write_py(fileobj, images): """Write to ASE-compatible python script.""" fileobj.write('from ase import Atoms\n\n') fileobj.write('import numpy as np\n\n') if hasattr(images, 'get_positions'): images = [images] fileobj.write('images = [\n') for image in images: fileobj.write(" Atoms(symbols='%s',\n" " pbc=np.%s,\n" " cell=np.array(\n %s,\n" " positions=np.array(\n %s),\n" % ( image.get_chemical_formula(mode='reduce'), repr(image.pbc), repr(image.cell)[6:], repr(image.positions)[6:])) fileobj.write(']') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/qbox.py000066400000000000000000000057011316323560300224740ustar00rootroot00000000000000"""This module contains functions to read from QBox output files""" from ase import Atom, Atoms from ase.calculators.singlepoint import SinglePointCalculator import xml.etree.ElementTree as ET def read_qbox(file, index=-1): """Read data from QBox output file Inputs: file - str or fileobj, path to file or file object to read from index - int or slice, which frames to return Returns: list of Atoms or atoms, requested frame(s) """ # Read in the output file tree = ET.parse(file) # Load in atomic species species = dict() for spec in tree.findall('species'): name = spec.get('name') spec_data = dict( symbol=spec.find('symbol').text, mass=float(spec.find('mass').text), number=int(spec.find('atomic_number').text)) species[name] = spec_data # Find all of the frames frames = tree.findall("iteration") # If index is an int, return one frame if isinstance(index, int): return _parse_frame(frames[index], species) else: return [_parse_frame(frame, species) for frame in frames[index]] def _parse_frame(tree, species): """Parse a certain frame from QBOX output Inputs: tree - ElementTree, block from output file species - dict, data about species. Key is name of atom type, value is data about that type Return: Atoms object describing this iteration""" # Load in data about the system energy = float(tree.find("etotal").text) # Load in data about the cell unitcell = tree.find('atomset').find('unit_cell') cell = [] for d in ['a', 'b', 'c']: cell.append([float(x) for x in unitcell.get(d).split()]) stress_tree = tree.find('stress_tensor') if stress_tree is None: stresses = None else: stresses = [float(stress_tree.find('sigma_%s' % x).text) for x in ['xx', 'yy', 'zz', 'yz', 'xz', 'xy']] # Create the Atoms object atoms = Atoms(pbc=True, cell=cell) # Load in the atom information forces = [] for atom in tree.find('atomset').findall('atom'): # Load data about the atom type spec = atom.get('species') symbol = species[spec]['symbol'] mass = species[spec]['mass'] # Get data about position / velocity / force pos = [float(x) for x in atom.find('position').text.split()] force = [float(x) for x in atom.find('force').text.split()] momentum = [float(x) * mass for x in atom.find('velocity').text.split()] # Create the objects atom = Atom(symbol=symbol, mass=mass, position=pos, momentum=momentum) atoms += atom forces.append(force) # Create the calculator object that holds energy/forces calc = SinglePointCalculator(atoms, energy=energy, forces=forces, stress=stresses) atoms.set_calculator(calc) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/res.py000066400000000000000000000241201316323560300223100ustar00rootroot00000000000000""" SHELX (.res) input/output Read/write files in SHELX (.res) file format. Format documented at http://shelx.uni-ac.gwdg.de/SHELX/ Written by Martin Uhren and Georg Schusteritsch. Adapted for ASE by James Kermode. """ from __future__ import division import glob import re from ase.atoms import Atoms from ase.geometry import cellpar_to_cell, cell_to_cellpar from ase.calculators.calculator import Calculator from ase.calculators.singlepoint import SinglePointCalculator __all__ = ['Res', 'read_res', 'write_res'] class Res(object): """ Object for representing the data in a Res file. Most attributes can be set directly. Args: atoms (Atoms): Atoms object. .. attribute:: atoms Associated Atoms object. .. attribute:: name The name of the structure. .. attribute:: pressure The external pressure. .. attribute:: energy The internal energy of the structure. .. attribute:: spacegroup The space group of the structure. .. attribute:: times_found The number of times the structure was found. """ def __init__(self, atoms, name=None, pressure=None, energy=None, spacegroup=None, times_found=None): self.atoms_ = atoms if name is None: name = atoms.info.get('name') if pressure is None: pressure = atoms.info.get('pressure') if spacegroup is None: spacegroup = atoms.info.get('spacegroup') if times_found is None: times_found = atoms.info.get('times_found') self.name = name self.pressure = pressure self.energy = energy self.spacegroup = spacegroup self.times_found = times_found @property def atoms(self): """ Returns Atoms object associated with this Res. """ return self.atoms_ @staticmethod def from_file(filename): """ Reads a Res from a file. Args: filename (str): File name containing Res data. Returns: Res object. """ with open(filename, 'r') as f: return Res.from_string(f.read()) @staticmethod def parse_title(line): info = dict() tokens = line.split() num_tokens = len(tokens) # 1 = Name if num_tokens <= 1: return info info['name'] = tokens[1] # 2 = Pressure if num_tokens <= 2: return info info['pressure'] = float(tokens[2]) # 3 = Volume # 4 = Internal energy if num_tokens <= 4: return info info['energy'] = float(tokens[4]) # 5 = Spin density, 6 - Abs spin density # 7 = Space group OR num atoms (new format ONLY) idx = 7 if tokens[idx][0] != '(': idx += 1 if num_tokens <= idx: return info info['spacegroup'] = tokens[idx][1:len(tokens[idx]) - 1] # idx + 1 = n, idx + 2 = - # idx + 3 = times found if num_tokens <= idx + 3: return info info['times_found'] = int(tokens[idx + 3]) return info @staticmethod def from_string(data): """ Reads a Res from a string. Args: data (str): string containing Res data. Returns: Res object. """ abc = [] ang = [] sp = [] coords = [] info = dict() coord_patt = re.compile("""(\w+)\s+ ([0-9]+)\s+ ([0-9\-\.]+)\s+ ([0-9\-\.]+)\s+ ([0-9\-\.]+)\s+ ([0-9\-\.]+)""", re.VERBOSE) lines = data.splitlines() line_no = 0 while line_no < len(lines): line = lines[line_no] tokens = line.split() if tokens: if tokens[0] == 'TITL': try: info = Res.parse_title(line) except (ValueError, IndexError): info = dict() elif tokens[0] == 'CELL' and len(tokens) == 8: abc = [float(tok) for tok in tokens[2:5]] ang = [float(tok) for tok in tokens[5:8]] elif tokens[0] == 'SFAC': for atom_line in lines[line_no:]: if line.strip() == 'END': break else: match = coord_patt.search(atom_line) if match: sp.append(match.group(1)) # 1-indexed cs = match.groups()[2:5] coords.append([float(c) for c in cs]) line_no += 1 # Make sure the global is updated line_no += 1 return Res(Atoms(symbols=sp, scaled_positions=coords, cell=cellpar_to_cell(list(abc) + list(ang)), pbc=True, info=info), info.get('name'), info.get('pressure'), info.get('energy'), info.get('spacegroup'), info.get('times_found')) def get_string(self, significant_figures=6, write_info=False): """ Returns a string to be written as a Res file. Args: significant_figures (int): No. of significant figures to output all quantities. Defaults to 6. write_info (bool): if True, format TITL line using key-value pairs from atoms.info in addition to attributes stored in Res object Returns: String representation of Res. """ # Title line if write_info: info = self.atoms.info.copy() for attribute in ['name', 'pressure', 'energy', 'spacegroup', 'times_found']: if getattr(self, attribute) and attribute not in info: info[attribute] = getattr(self, attribute) lines = ['TITL ' + ' '.join(['{0}={1}'.format(k, v) for (k, v) in info.items()])] else: lines = ['TITL ' + self.print_title()] # Cell abc_ang = cell_to_cellpar(self.atoms.get_cell()) fmt = '{{0:.{0}f}}'.format(significant_figures) cell = ' '.join([fmt.format(a) for a in abc_ang]) lines.append('CELL 1.0 ' + cell) # Latt lines.append('LATT -1') # Atoms symbols = self.atoms.get_chemical_symbols() species_types = [] for symbol in symbols: if symbol not in species_types: species_types.append(symbol) lines.append('SFAC ' + ' '.join(species_types)) fmt = '{{0}} {{1}} {{2:.{0}f}} {{3:.{0}f}} {{4:.{0}f}} 1.0' fmtstr = fmt.format(significant_figures) for symbol, coords in zip(symbols, self.atoms_.get_scaled_positions()): lines.append( fmtstr.format(symbol, species_types.index(symbol) + 1, coords[0], coords[1], coords[2])) lines.append('END') return '\n'.join(lines) def __str__(self): """ String representation of Res file. """ return self.get_string() def write_file(self, filename, **kwargs): """ Writes Res to a file. The supported kwargs are the same as those for the Res.get_string method and are passed through directly. """ with open(filename, 'w') as f: f.write(self.get_string(**kwargs) + '\n') def print_title(self): tokens = [self.name, self.pressure, self.atoms.get_volume(), self.energy, 0.0, 0.0, len(self.atoms)] if self.spacegroup: tokens.append('(' + self.spacegroup + ')') else: tokens.append('(P1)') if self.times_found: tokens.append('n - ' + str(self.times_found)) else: tokens.append('n - 1') return ' '.join([str(tok) for tok in tokens]) def read_res(filename, index=-1): """ Read input in SHELX (.res) format Multiple frames are read if `filename` contains a wildcard character, e.g. `file_*.res`. `index` specifes which frames to retun: default is last frame only (index=-1). """ images = [] for fn in sorted(glob.glob(filename)): res = Res.from_file(fn) if res.energy: calc = SinglePointCalculator(res.atoms, energy=res.energy) res.atoms.set_calculator(calc) images.append(res.atoms) return images[index] def write_res(filename, images, write_info=True, write_results=True, significant_figures=6): """ Write output in SHELX (.res) format To write multiple images, include a % format string in filename, e.g. `file_%03d.res`. Optionally include contents of Atoms.info dictionary if `write_info` is True, and/or results from attached calculator if `write_results` is True (only energy results are supported). """ if not isinstance(images, (list, tuple)): images = [images] if len(images) > 1 and '%' not in filename: raise RuntimeError('More than one Atoms provided but no %' + ' format string found in filename') for i, atoms in enumerate(images): fn = filename if '%' in filename: fn = filename % i res = Res(atoms) if write_results: calculator = atoms.get_calculator() if (calculator is not None and isinstance(calculator, Calculator)): energy = calculator.results.get('energy') if energy is not None: res.energy = energy res.write_file(fn, write_info=write_info, significant_figures=significant_figures) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/sdf.py000066400000000000000000000012451316323560300222760ustar00rootroot00000000000000"""Reads chemical data in SDF format (wraps the molfile format). See https://en.wikipedia.org/wiki/Chemical_table_file#SDF """ from ase.atoms import Atoms from ase.utils import basestring def read_sdf(fileobj): if isinstance(fileobj, basestring): fileobj = open(fileobj) lines = fileobj.readlines() # first three lines header del lines[:3] L1 = lines.pop(0).split() natoms = int(L1[0]) positions = [] symbols = [] for line in lines[:natoms]: x, y, z, symbol = line.split()[:4] symbols.append(symbol) positions.append([float(x), float(y), float(z)]) return Atoms(symbols=symbols, positions=positions) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/siesta.py000066400000000000000000000153071316323560300230160ustar00rootroot00000000000000"""Helper functions for read_fdf.""" from os import fstat from re import compile from ase.utils import basestring _label_strip_re = compile(r'[\s._-]') def _labelize(raw_label): # Labels are case insensitive and -_. should be ignored, lower and strip it return _label_strip_re.sub('', raw_label).lower() def _is_block(val): # Tell whether value is a block-value or an ordinary value. # A block is represented as a list of lists of strings, # and a ordinary value is represented as a list of strings if isinstance(val, list) and \ len(val) > 0 and \ isinstance(val[0], list): return True return False def _get_stripped_lines(fd): # Remove comments, leading blanks, and empty lines return [_f for _f in [L.split('#')[0].strip() for L in fd] if _f] def _read_fdf_lines(file, inodes=[]): # Read lines and resolve includes if isinstance(file, basestring): file = open(file, 'r') fst = fstat(file.fileno()) inode = (fst.st_dev, fst.st_ino) if inode in inodes: raise IOError('Cyclic include in fdf file') inodes = inodes + [inode] lbz = _labelize lines = [] for L in _get_stripped_lines(file): w0 = lbz(L.split(None, 1)[0]) if w0 == '%include': # Include the contents of fname fname = L.split(None, 1)[1].strip() lines += _read_fdf_lines(fname, inodes) elif '<' in L: L, fname = L.split('<', 1) w = L.split() fname = fname.strip() if w0 == '%block': # "%block label < filename" means that the block contents # should be read from filename if len(w) != 2: raise IOError('Bad %%block-statement "%s < %s"' % (L, fname)) label = lbz(w[1]) lines.append('%%block %s' % label) lines += _get_stripped_lines(open(fname)) lines.append('%%endblock %s' % label) else: # "label < filename.fdf" means that the label # (_only_ that label) is to be resolved from filename.fdf label = lbz(w[0]) fdf = _read_fdf(fname, inodes) if label in fdf: if _is_block(fdf[label]): lines.append('%%block %s' % label) lines += [' '.join(x) for x in fdf[label]] lines.append('%%endblock %s' % label) else: lines.append('%s %s' % (label, ' '.join(fdf[label]))) # else: # label unresolved! # One should possibly issue a warning about this! else: # Simple include line L lines.append(L) return lines # The reason for creating a separate _read_fdf is simply to hide the # inodes-argument def _read_fdf(fname, inodes=[]): # inodes is used to detect cyclic includes fdf = {} lbz = _labelize lines = _read_fdf_lines(fname, inodes) while lines: w = lines.pop(0).split(None, 1) if lbz(w[0]) == '%block': # Block value if len(w) == 2: label = lbz(w[1]) content = [] while True: if len(lines) == 0: raise IOError('Unexpected EOF reached in %s, ' 'un-ended block %s' % (fname, label)) w = lines.pop(0).split() if lbz(w[0]) == '%endblock' and lbz(w[1]) == label: break content.append(w) if label not in fdf: # Only first appearance of label is to be used fdf[label] = content else: raise IOError('%%block statement without label') else: # Ordinary value label = lbz(w[0]) if len(w) == 1: # Siesta interpret blanks as True for logical variables fdf[label] = [] else: fdf[label] = w[1].split() return fdf def read_fdf(fname): """Read a siesta style fdf-file. The data is returned as a dictionary ( label:value ). All labels are converted to lower case characters and are stripped of any '-', '_', or '.'. Ordinary values are stored as a list of strings (splitted on WS), and block values are stored as list of lists of strings (splitted per line, and on WS). If a label occurres more than once, the first occurrence takes precedence. The implementation applies no intelligence, and does not "understand" the data or the concept of units etc. Values are never parsed in any way, just stored as split strings. The implementation tries to comply with the fdf-format specification as presented in the siesta 2.0.2 manual. An fdf-dictionary could e.g. look like this:: {'atomiccoordinatesandatomicspecies': [ ['4.9999998', '5.7632392', '5.6095972', '1'], ['5.0000000', '6.5518100', '4.9929091', '2'], ['5.0000000', '4.9746683', '4.9929095', '2']], 'atomiccoordinatesformat': ['Ang'], 'chemicalspecieslabel': [['1', '8', 'O'], ['2', '1', 'H']], 'dmmixingweight': ['0.1'], 'dmnumberpulay': ['5'], 'dmusesavedm': ['True'], 'latticeconstant': ['1.000000', 'Ang'], 'latticevectors': [ ['10.00000000', '0.00000000', '0.00000000'], ['0.00000000', '11.52647800', '0.00000000'], ['0.00000000', '0.00000000', '10.59630900']], 'maxscfiterations': ['120'], 'meshcutoff': ['2721.139566', 'eV'], 'numberofatoms': ['3'], 'numberofspecies': ['2'], 'paobasissize': ['dz'], 'solutionmethod': ['diagon'], 'systemlabel': ['H2O'], 'wavefunckpoints': [['0.0', '0.0', '0.0']], 'writedenchar': ['T'], 'xcauthors': ['PBE'], 'xcfunctional': ['GGA']} """ return _read_fdf(fname) def read_struct_out(fname): """Read a siesta struct file""" from ase.atoms import Atoms, Atom f = fname cell = [] for i in range(3): cell.append([float(x) for x in f.readline().split()]) natoms = int(f.readline()) atoms = Atoms() for atom in f: Z, pos_x, pos_y, pos_z = atom.split()[1:] atoms.append(Atom(int(Z), position=(float(pos_x), float(pos_y), float(pos_z)))) if len(atoms) != natoms: raise IOError('Badly structured input file') atoms.set_cell(cell, scale_atoms=True) return atoms ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/trajectory.py000066400000000000000000000334411316323560300237130ustar00rootroot00000000000000from __future__ import print_function import warnings import numpy as np from ase import __version__ from ase.calculators.singlepoint import SinglePointCalculator, all_properties from ase.constraints import dict2constraint from ase.calculators.calculator import PropertyNotImplementedError from ase.atoms import Atoms from ase.io.jsonio import encode, decode from ase.io.pickletrajectory import PickleTrajectory from ase.parallel import world __all__ = ['Trajectory', 'PickleTrajectory'] def Trajectory(filename, mode='r', atoms=None, properties=None, master=None): """A Trajectory can be created in read, write or append mode. Parameters: filename: str The name of the file. Traditionally ends in .traj. mode: str The mode. 'r' is read mode, the file should already exist, and no atoms argument should be specified. 'w' is write mode. The atoms argument specifies the Atoms object to be written to the file, if not given it must instead be given as an argument to the write() method. 'a' is append mode. It acts as write mode, except that data is appended to a preexisting file. atoms: Atoms object The Atoms object to be written in write or append mode. properties: list of str If specified, these calculator properties are saved in the trajectory. If not specified, all supported quantities are saved. Possible values: energy, forces, stress, dipole, charges, magmom and magmoms. master: bool Controls which process does the actual writing. The default is that process number 0 does this. If this argument is given, processes where it is True will write. The atoms, properties and master arguments are ignores in read mode. """ if mode == 'r': return TrajectoryReader(filename) return TrajectoryWriter(filename, mode, atoms, properties, master=master) class TrajectoryWriter: """Writes Atoms objects to a .traj file.""" def __init__(self, filename, mode='w', atoms=None, properties=None, extra=[], master=None): """A Trajectory writer, in write or append mode. Parameters: filename: str The name of the file. Traditionally ends in .traj. mode: str The mode. 'r' is read mode, the file should already exist, and no atoms argument should be specified. 'w' is write mode. The atoms argument specifies the Atoms object to be written to the file, if not given it must instead be given as an argument to the write() method. 'a' is append mode. It acts as write mode, except that data is appended to a preexisting file. atoms: Atoms object The Atoms object to be written in write or append mode. properties: list of str If specified, these calculator properties are saved in the trajectory. If not specified, all supported quantities are saved. Possible values: energy, forces, stress, dipole, charges, magmom and magmoms. master: bool Controls which process does the actual writing. The default is that process number 0 does this. If this argument is given, processes where it is True will write. """ if master is None: master = (world.rank == 0) self.master = master self.atoms = atoms self.properties = properties self.description = {} self._open(filename, mode) self.header_data = None self.multiple_headers = False def set_description(self, description): self.description.update(description) def _open(self, filename, mode): import ase.io.ulm as ulm if mode not in 'aw': raise ValueError('mode must be "w" or "a".') if self.master: self.backend = ulm.open(filename, mode, tag='ASE-Trajectory') if len(self.backend) > 0: r = ulm.open(filename) self.numbers = r.numbers self.pbc = r.pbc else: self.backend = ulm.DummyWriter() def write(self, atoms=None, **kwargs): """Write the atoms to the file. If the atoms argument is not given, the atoms object specified when creating the trajectory object is used. Use keyword arguments to add extra properties:: writer.write(atoms, energy=117, dipole=[0, 0, 1.0]) """ if atoms is None: atoms = self.atoms for image in atoms._images_(): self._write_atoms(image, **kwargs) def _write_atoms(self, atoms, **kwargs): b = self.backend if self.header_data is None: b.write(version=1, ase_version=__version__) if self.description: b.write(description=self.description) # Atomic numbers and periodic boundary conditions are written # in the header in the beginning. # # If an image later on has other numbers/pbc, we write a new # header. All subsequent images will then have their own header # whether or not their numbers/pbc change. self.header_data = get_header_data(atoms) write_header = True else: if not self.multiple_headers: header_data = get_header_data(atoms) self.multiple_headers = not headers_equal(self.header_data, header_data) write_header = self.multiple_headers write_atoms(b, atoms, write_header=write_header) calc = atoms.get_calculator() if calc is None and len(kwargs) > 0: calc = SinglePointCalculator(atoms) if calc is not None: if not hasattr(calc, 'get_property'): calc = OldCalculatorWrapper(calc) c = b.child('calculator') c.write(name=calc.name) if hasattr(calc, 'todict'): d = calc.todict() if d: c.write(parameters=d) for prop in all_properties: if prop in kwargs: x = kwargs[prop] else: if self.properties is not None: if prop in self.properties: x = calc.get_property(prop, atoms) else: x = None else: try: x = calc.get_property(prop, atoms, allow_calculation=False) except (PropertyNotImplementedError, KeyError): # KeyError is needed for Jacapo. x = None if x is not None: if prop in ['stress', 'dipole']: x = x.tolist() c.write(prop, x) info = {} for key, value in atoms.info.items(): try: encode(value) except TypeError: warnings.warn('Skipping "{0}" info.'.format(key)) else: info[key] = value if info: b.write(info=info) b.sync() def close(self): """Close the trajectory file.""" self.backend.close() def __len__(self): return world.sum(len(self.backend)) class TrajectoryReader: """Reads Atoms objects from a .traj file.""" def __init__(self, filename): """A Trajectory in read mode. The filename traditionally ends in .traj. """ self.numbers = None self.pbc = None self.masses = None self._open(filename) def _open(self, filename): import ase.io.ulm as ulm try: self.backend = ulm.open(filename, 'r') except ulm.InvalidULMFileError: raise RuntimeError('This is not a valid ASE trajectory file. ' 'If this is an old-format (version <3.9) ' 'PickleTrajectory file you can convert it ' 'with ase.io.trajectory.convert("%s") ' 'or:\n\n $ python -m ase.io.trajectory %s' % (filename, filename)) self._read_header() def _read_header(self): b = self.backend if b.get_tag() != 'ASE-Trajectory': raise IOError('This is not a trajectory file!') if len(b) > 0: self.pbc = b.pbc self.numbers = b.numbers self.masses = b.get('masses') self.constraints = b.get('constraints', '[]') self.description = b.get('description') self.version = b.version self.ase_version = b.get('ase_version') def close(self): """Close the trajectory file.""" self.backend.close() def __getitem__(self, i=-1): b = self.backend[i] if 'numbers' in b: # numbers and other header info was written alongside the image: atoms = read_atoms(b) else: # header info was not written because they are the same: atoms = read_atoms(b, header=[self.pbc, self.numbers, self.masses, self.constraints]) if 'calculator' in b: results = {} c = b.calculator for prop in all_properties: if prop in c: results[prop] = c.get(prop) calc = SinglePointCalculator(atoms, **results) calc.name = b.calculator.name atoms.set_calculator(calc) return atoms def __len__(self): return len(self.backend) def __iter__(self): for i in range(len(self)): yield self[i] def get_header_data(atoms): return {'pbc': atoms.pbc.copy(), 'numbers': atoms.get_atomic_numbers(), 'masses': atoms.get_masses() if atoms.has('masses') else None, 'constraints': list(atoms.constraints)} def headers_equal(headers1, headers2): assert len(headers1) == len(headers2) eq = True for key in headers1: eq &= np.array_equal(headers1[key], headers2[key]) return eq def read_atoms(backend, header=None): b = backend if header: pbc, numbers, masses, constraints = header else: pbc = b.pbc numbers = b.numbers masses = b.get('masses') constraints = b.get('constraints', '[]') atoms = Atoms(positions=b.positions, numbers=numbers, cell=b.cell, masses=masses, pbc=pbc, info=b.get('info'), constraint=[dict2constraint(d) for d in decode(constraints)], momenta=b.get('momenta'), magmoms=b.get('magmoms'), charges=b.get('charges'), tags=b.get('tags')) return atoms def write_atoms(backend, atoms, write_header=True): b = backend if write_header: b.write(pbc=atoms.pbc.tolist(), numbers=atoms.numbers) if atoms.constraints: if all(hasattr(c, 'todict') for c in atoms.constraints): b.write(constraints=encode(atoms.constraints)) if atoms.has('masses'): b.write(masses=atoms.get_masses()) b.write(positions=atoms.get_positions(), cell=atoms.get_cell().tolist()) if atoms.has('tags'): b.write(tags=atoms.get_tags()) if atoms.has('momenta'): b.write(momenta=atoms.get_momenta()) if atoms.has('initial_magmoms'): b.write(magmoms=atoms.get_initial_magnetic_moments()) if atoms.has('initial_charges'): b.write(charges=atoms.get_initial_charges()) def read_traj(filename, index): trj = TrajectoryReader(filename) for i in range(*index.indices(len(trj))): yield trj[i] def write_traj(filename, images): """Write image(s) to trajectory.""" trj = TrajectoryWriter(filename, mode='w') if isinstance(images, Atoms): images = [images] for atoms in images: trj.write(atoms) trj.close() class OldCalculatorWrapper: def __init__(self, calc): self.calc = calc try: self.name = calc.name except AttributeError: self.name = calc.__class__.__name__.lower() def get_property(self, prop, atoms, allow_calculation=True): try: if (not allow_calculation and self.calc.calculation_required(atoms, [prop])): return None except AttributeError: pass method = 'get_' + {'energy': 'potential_energy', 'magmom': 'magnetic_moment', 'magmoms': 'magnetic_moments', 'dipole': 'dipole_moment'}.get(prop, prop) try: result = getattr(self.calc, method)(atoms) except AttributeError: raise PropertyNotImplementedError return result def convert(name): import os t = TrajectoryWriter(name + '.new') for atoms in PickleTrajectory(name, _warn=False): t.write(atoms) t.close() os.rename(name, name + '.old') os.rename(name + '.new', name) def main(): import optparse parser = optparse.OptionParser(usage='python -m ase.io.trajectory ' 'a1.traj [a2.traj ...]', description='Convert old trajectory ' 'file(s) to new format. ' 'The old file is kept as a1.traj.old.') opts, args = parser.parse_args() for name in args: convert(name) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/turbomole.py000066400000000000000000000117001316323560300235270ustar00rootroot00000000000000from ase.units import Bohr def read_turbomole(f='coord'): """Method to read turbomole coord file coords in bohr, atom types in lowercase, format: $coord x y z atomtype x y z atomtype f $end Above 'f' means a fixed atom. """ from ase import Atoms from ase.constraints import FixAtoms lines = f.readlines() atoms_pos = [] atom_symbols = [] myconstraints=[] # find $coord section; # does not necessarily have to be the first $ in file... for i, l in enumerate(lines): if l.strip().startswith('$coord'): start = i break for line in lines[start+1:]: if line.startswith('$'): # start of new section break else: x, y, z, symbolraw = line.split()[:4] symbolshort=symbolraw.strip() symbol=symbolshort[0].upper()+symbolshort[1:].lower() #print symbol atom_symbols.append(symbol) atoms_pos.append([float(x)*Bohr, float(y)*Bohr, float(z)*Bohr]) cols = line.split() if (len(cols) == 5): fixedstr = line.split()[4].strip() if (fixedstr == "f"): myconstraints.append(True) else: myconstraints.append(False) else: myconstraints.append(False) atoms = Atoms(positions = atoms_pos, symbols = atom_symbols, pbc = False) c = FixAtoms(mask = myconstraints) atoms.set_constraint(c) return atoms def read_turbomole_gradient(f='gradient', index=-1): """ Method to read turbomole gradient file """ # read entire file lines = [x.strip() for x in f.readlines()] # find $grad section start = end = -1 for i, line in enumerate(lines): if not line.startswith('$'): continue if line.split()[0] == '$grad': start = i elif start >= 0: end = i break if end <= start: raise RuntimeError('File does not contain a valid \'$grad\' section') def formatError(): raise RuntimeError('Data format in file does not correspond to known ' 'Turbomole gradient format') # trim lines to $grad del lines[:start+1] del lines[end-1-start:] # Interpret $grad section from ase import Atoms, Atom from ase.calculators.singlepoint import SinglePointCalculator from ase.units import Bohr, Hartree images = [] while len(lines): # loop over optimization cycles # header line # cycle = 1 SCF energy = -267.6666811409 |dE/dxyz| = 0.157112 fields = lines[0].split('=') try: # cycle = int(fields[1].split()[0]) energy = float(fields[2].split()[0]) * Hartree # gradient = float(fields[3].split()[0]) except (IndexError, ValueError): formatError() # coordinates/gradient atoms = Atoms() forces = [] for line in lines[1:]: fields = line.split() if len(fields) == 4: # coordinates # 0.00000000000000 0.00000000000000 0.00000000000000 c try: symbol = fields[3].lower().capitalize() position = tuple([Bohr * float(x) for x in fields[0:3] ]) except ValueError: formatError() atoms.append(Atom(symbol, position)) elif len(fields) == 3: # gradients # -.51654903354681D-07 -.51654903206651D-07 0.51654903169644D-07 try: grad = [-float(x.replace('D', 'E')) * Hartree / Bohr for x in fields[0:3] ] except ValueError: formatError() forces.append(grad) else: # next cycle break # calculator calc = SinglePointCalculator(atoms, energy=energy, forces=forces) atoms.set_calculator(calc) # save frame images.append(atoms) # delete this frame from data to be handled del lines[:2*len(atoms)+1] return images[index] def write_turbomole(filename, atoms): """ Method to write turbomole coord file """ from ase.constraints import FixAtoms f = filename coord = atoms.get_positions() symbols = atoms.get_chemical_symbols() fix_indices = set() if atoms.constraints: for constr in atoms.constraints: if isinstance(constr, FixAtoms): fix_indices.update(constr.get_indices()) fix_str = [] for i in range(len(atoms)): if i in fix_indices: fix_str.append('f') else: fix_str.append('') f.write('$coord\n') for (x, y, z), s, fix in zip(coord, symbols, fix_str): f.write('%20.14f %20.14f %20.14f %2s %2s \n' % (x / Bohr, y / Bohr, z / Bohr, s.lower(), fix)) f.write('$end\n') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/ulm.py000066400000000000000000000410601316323560300223160ustar00rootroot00000000000000"""Simple and efficient pythonic file-format. Stores ndarrays as binary data and Python's built-in datatypes (bool, int, float, complex, str, dict, list, tuple, None) as json. File layout when there is only a single item:: 0: "- of Ulm" (magic prefix, ascii) 8: " " (tag, ascii) 24: version (int64) 32: nitems (int64) 40: 48 (position of offsets, int64) 48: p0 (offset to json data, int64) 56: array1, array2, ... (8-byte aligned ndarrays) p0: n (length of json data, int64) p0+8: json data p0+8+n: EOF Writing: >>> import numpy as np >>> import ase.io.ulm as ulm >>> w = ulm.open('x.ulm', 'w') >>> w.write(a=np.ones(7), b=42, c='abc') >>> w.write(d=3.14) >>> w.close() Reading: >>> r = ulm.open('x.ulm') >>> print(r.c) abc To see what's inside 'x.ulm' do this:: $ alias ulm="python -m ase.io.ulm" $ ulm x.ulm x.ulm (tag: "", 1 item) item #0: { a: , b: 42, c: abc, d: 3.14} Versions: 1) Initial version. 2) Added support for big endian machines. Json data may now have _little_endian=False item. 3) Changed magic string from "AFFormat" to "- of Ulm". """ from __future__ import print_function import os import sys import numpy as np from ase.io.jsonio import encode, decode from ase.utils import plural, basestring if sys.version_info[0] >= 3: import builtins else: import __builtin__ as builtins VERSION = 3 N1 = 42 # block size - max number of items: 1, N1, N1*N1, N1*N1*N1, ... def open(filename, mode='r', index=None, tag=''): """Open ulm-file.""" if mode == 'r': return Reader(filename, index or 0) if mode not in 'wa': 2 / 0 assert index is None return Writer(filename, mode, tag) ulmopen = open def align(fd): """Advance file descriptor to 8 byte alignment and return position.""" pos = fd.tell() r = pos % 8 if r == 0: return pos fd.write(b'#' * (8 - r)) return pos + 8 - r def writeint(fd, n, pos=None): """Write 64 bit integer n at pos or current position.""" if pos is not None: fd.seek(pos) a = np.array(n, np.int64) if not np.little_endian: a.byteswap(True) a.tofile(fd) def readints(fd, n): a = np.fromfile(fd, np.int64, n) if not np.little_endian: a.byteswap(True) return a class Writer: def __init__(self, fd, mode='w', tag='', data=None): """Create writer object. fd: str Filename. mode: str Mode. Must be 'w' for writing to a new file (overwriting an existing one) and 'a' for appending to an existing file. tag: str Magic ID string. """ assert mode in 'aw' # Header to be written later: self.header = b'' if data is None: if np.little_endian: data = {} else: data = {'_little_endian': False} if mode == 'w' or not os.path.isfile(fd): self.nitems = 0 self.pos0 = 48 self.offsets = np.array([-1], np.int64) fd = builtins.open(fd, 'wb') # File format identifier and other stuff: a = np.array([VERSION, self.nitems, self.pos0], np.int64) if not np.little_endian: a.byteswap(True) self.header = ('- of Ulm{0:16}'.format(tag).encode('ascii') + a.tostring() + self.offsets.tostring()) else: fd = builtins.open(fd, 'r+b') version, self.nitems, self.pos0, offsets = read_header(fd)[1:] assert version == VERSION n = 1 while self.nitems > n: n *= N1 padding = np.zeros(n - self.nitems, np.int64) self.offsets = np.concatenate((offsets, padding)) fd.seek(0, 2) self.fd = fd self.data = data # date for array being filled: self.nmissing = 0 # number of missing numbers self.shape = None self.dtype = None def add_array(self, name, shape, dtype=float): """Add ndarray object. Set name, shape and dtype for array and fill in the data in chunks later with the fill() method. """ self._write_header() if isinstance(shape, int): shape = (shape,) shape = tuple(int(s) for s in shape) # Convert np.int64 to int i = align(self.fd) self.data[name + '.'] = { 'ndarray': (shape, np.dtype(dtype).name, i)} assert self.nmissing == 0, 'last array not done' self.dtype = dtype self.shape = shape self.nmissing = np.prod(shape) def _write_header(self): # We want to delay writing until there is any real data written. # Some people rely on zero file size. if self.header: self.fd.write(self.header) self.header = b'' def fill(self, a): """Fill in ndarray chunks for array currently beeing written.""" assert a.dtype == self.dtype assert a.shape[1:] == self.shape[len(self.shape) - a.ndim + 1:] self.nmissing -= a.size assert self.nmissing >= 0 a.tofile(self.fd) def sync(self): """Write data dictionary. Write bool, int, float, complex and str data, shapes and dtypes for ndarrays.""" self._write_header() assert self.nmissing == 0 i = self.fd.tell() s = encode(self.data).encode() writeint(self.fd, len(s)) self.fd.write(s) n = len(self.offsets) if self.nitems >= n: offsets = np.zeros(n * N1, np.int64) offsets[:n] = self.offsets self.pos0 = align(self.fd) if np.little_endian: offsets.tofile(self.fd) else: offsets.byteswap().tofile(self.fd) writeint(self.fd, self.pos0, 40) self.offsets = offsets self.offsets[self.nitems] = i writeint(self.fd, i, self.pos0 + self.nitems * 8) self.nitems += 1 writeint(self.fd, self.nitems, 32) self.fd.flush() self.fd.seek(0, 2) # end of file if np.little_endian: self.data = {} else: self.data = {'_little_endian': False} def write(self, *args, **kwargs): """Write data. Examples:: writer.write('n', 7) writer.write(n=7) writer.write(n=7, s='abc', a=np.zeros(3), abc=obj) If obj is not one of the supported data types (bool, int, float, complex, tupl, list, dict, None or ndarray) then it must have a obj.write(childwriter) method. """ if args: name, value = args kwargs[name] = value self._write_header() for name, value in kwargs.items(): if isinstance(value, (bool, int, float, complex, dict, list, tuple, basestring, type(None))): self.data[name] = value elif isinstance(value, np.ndarray): self.add_array(name, value.shape, value.dtype) self.fill(value) else: value.write(self.child(name)) def child(self, name): """Create child-writer object.""" self._write_header() dct = self.data[name + '.'] = {} return Writer(self.fd, data=dct) def close(self): """Close file.""" n = int('_little_endian' in self.data) if len(self.data) > n: # There is more than the "_little_endian" key. # Write that stuff before closing: self.sync() else: # Make sure header has been written (empty ulm-file): self._write_header() self.fd.close() def __len__(self): return int(self.nitems) class DummyWriter: def add_array(self, name, shape, dtype=float): pass def fill(self, a): pass def sync(self): pass def write(self, *args, **kwargs): pass def child(self, name): return self def close(self): pass def __len__(self): return 0 def read_header(fd): fd.seek(0) if fd.read(8) not in [b'- of Ulm', b'AFFormat']: raise InvalidULMFileError('This is not an ULM formatted file.') tag = fd.read(16).decode('ascii').rstrip() version, nitems, pos0 = readints(fd, 3) fd.seek(pos0) offsets = readints(fd, nitems) return tag, version, nitems, pos0, offsets class InvalidULMFileError(Exception): pass class Reader: def __init__(self, fd, index=0, data=None, little_endian=None): """Create reader.""" if isinstance(fd, basestring): fd = builtins.open(fd, 'rb') self._fd = fd self._index = index if data is None: (self._tag, self._version, self._nitems, self._pos0, self._offsets) = read_header(fd) if self._nitems > 0: data = self._read_data(index) else: data = {} self._little_endian = data.pop('_little_endian', True) else: self._little_endian = little_endian self._parse_data(data) def _parse_data(self, data): self._data = {} for name, value in data.items(): if name.endswith('.'): if 'ndarray' in value: shape, dtype, offset = value['ndarray'] dtype = dtype.encode() # compatibility with Numpy 1.4 value = NDArrayReader(self._fd, shape, np.dtype(dtype), offset, self._little_endian) else: value = Reader(self._fd, data=value, little_endian=self._little_endian) name = name[:-1] self._data[name] = value def get_tag(self): """Return special tag string.""" return self._tag def keys(self): return self._data.keys() def asdict(self): """Read everything now and convert to dict.""" dct = {} for key, value in self._data.items(): if isinstance(value, NDArrayReader): value = value.read() elif isinstance(value, Reader): value = value.asdict() dct[key] = value return dct __dir__ = keys # needed for tab-completion def __getattr__(self, attr): value = self._data[attr] if isinstance(value, NDArrayReader): return value.read() return value def __contains__(self, key): return key in self._data def __iter__(self): yield self for i in range(self._index + 1, self._nitems): self._index = i data = self._read_data(i) self._parse_data(data) yield self def get(self, attr, value=None): """Get attr or value if no such attr.""" try: return self.__getattr__(attr) except KeyError: return value def proxy(self, name, *indices): value = self._data[name] assert isinstance(value, NDArrayReader) if indices: return value.proxy(*indices) return value def __len__(self): return int(self._nitems) def _read_data(self, index): self._fd.seek(self._offsets[index]) size = readints(self._fd, 1)[0] data = decode(self._fd.read(size).decode()) return data def __getitem__(self, index): data = self._read_data(index) return Reader(self._fd, index, data, self._little_endian) def tostr(self, verbose=False, indent=' '): keys = sorted(self._data) strings = [] for key in keys: value = self._data[key] if verbose and isinstance(value, NDArrayReader): value = value.read() if isinstance(value, NDArrayReader): s = ''.format(value.shape, value.dtype) elif isinstance(value, Reader): s = value.tostr(verbose, indent + ' ') else: s = str(value).replace('\n', '\n ' + ' ' * len(key) + indent) strings.append('{0}{1}: {2}'.format(indent, key, s)) return '{\n' + ',\n'.join(strings) + '}' def __str__(self): return self.tostr(False, '').replace('\n', ' ') def close(self): self._fd.close() class NDArrayReader: def __init__(self, fd, shape, dtype, offset, little_endian): self.fd = fd self.shape = tuple(shape) self.dtype = dtype self.offset = offset self.little_endian = little_endian self.ndim = len(self.shape) self.itemsize = dtype.itemsize self.size = np.prod(self.shape) self.nbytes = self.size * self.itemsize self.scale = 1.0 self.length_of_last_dimension = None def __len__(self): return int(self.shape[0]) # Python-2.6 needs int def read(self): return self[:] def __getitem__(self, i): if isinstance(i, int): if i < 0: i += len(self) return self[i:i + 1][0] start, stop, step = i.indices(len(self)) stride = np.prod(self.shape[1:], dtype=int) offset = self.offset + start * self.itemsize * stride self.fd.seek(offset) count = (stop - start) * stride try: a = np.fromfile(self.fd, self.dtype, count) except (AttributeError, IOError): # Not as fast, but works for reading from tar-files: a = np.fromstring(self.fd.read(count * self.itemsize), self.dtype) a.shape = (stop - start,) + self.shape[1:] if step != 1: a = a[::step].copy() if self.little_endian != np.little_endian: a.byteswap(True) if self.length_of_last_dimension is not None: a = a[..., :self.length_of_last_dimension] if self.scale != 1.0: a *= self.scale return a def proxy(self, *indices): stride = self.size // len(self) start = 0 for i, index in enumerate(indices): start += stride * index stride //= self.shape[i + 1] offset = self.offset + start * self.itemsize p = NDArrayReader(self.fd, self.shape[i + 1:], self.dtype, offset, self.little_endian) p.scale = self.scale return p def print_ulm_info(filename, index=None, verbose=False): b = ulmopen(filename, 'r') if index is None: indices = range(len(b)) else: indices = [index] print('{0} (tag: "{1}", {2})'.format(filename, b.get_tag(), plural(len(b), 'item'))) for i in indices: print('item #{0}:'.format(i)) print(b[i].tostr(verbose)) def copy(reader, writer, exclude=set(), name=''): """Copy from reader to writer except for keys in exclude.""" close_reader = False close_writer = False if isinstance(reader, str): reader = open(reader) close_reader = True if isinstance(writer, str): writer = open(writer, 'w') close_writer = True for key, value in reader._data.items(): if name + '.' + key in exclude: continue if isinstance(value, NDArrayReader): value = value.read() if isinstance(value, Reader): copy(value, writer.child(key), exclude, name + '.' + key) else: writer.write(key, value) if close_reader: reader.close() if close_writer: writer.close() class CLICommand: short_description = 'Manipulate/show content of ulm-file' @staticmethod def add_arguments(parser): add = parser.add_argument add('filename') add('-n', '--index', type=int) add('-d', '--delete', metavar='key') add('-v', '--verbose', action='store_true') @staticmethod def run(args): if args.delete: exclude = set('.' + key for key in args.delete.split(',')) copy(args.filename, args.filename + '.temp', exclude) os.rename(args.filename + '.temp', args.filename) else: print_ulm_info(args.filename, args.index, verbose=args.verbose) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/utils.py000066400000000000000000000117101316323560300226600ustar00rootroot00000000000000import numpy as np from math import sqrt from ase.utils import rotate from ase.data import covalent_radii from ase.data.colors import jmol_colors from ase.utils import basestring def generate_writer_variables(writer, atoms, rotation='', show_unit_cell=False, radii=None, bbox=None, colors=None, scale=20, maxwidth=500, extra_offset=(0., 0.)): writer.numbers = atoms.get_atomic_numbers() writer.colors = colors if colors is None: writer.colors = jmol_colors[writer.numbers] if radii is None: radii = covalent_radii[writer.numbers] elif isinstance(radii, float): radii = covalent_radii[writer.numbers] * radii else: radii = np.array(radii) natoms = len(atoms) if isinstance(rotation, basestring): rotation = rotate(rotation) cell = atoms.get_cell() disp = atoms.get_celldisp().flatten() if show_unit_cell: L, T, D = cell_to_lines(writer, cell) cell_vertices = np.empty((2, 2, 2, 3)) for c1 in range(2): for c2 in range(2): for c3 in range(2): cell_vertices[c1, c2, c3] = np.dot([c1, c2, c3], cell) + disp cell_vertices.shape = (8, 3) cell_vertices = np.dot(cell_vertices, rotation) else: L = np.empty((0, 3)) T = None D = None cell_vertices = None nlines = len(L) positions = np.empty((natoms + nlines, 3)) R = atoms.get_positions() positions[:natoms] = R positions[natoms:] = L r2 = radii**2 for n in range(nlines): d = D[T[n]] if ((((R - L[n] - d)**2).sum(1) < r2) & (((R - L[n] + d)**2).sum(1) < r2)).any(): T[n] = -1 positions = np.dot(positions, rotation) R = positions[:natoms] if bbox is None: X1 = (R - radii[:, None]).min(0) X2 = (R + radii[:, None]).max(0) if show_unit_cell == 2: X1 = np.minimum(X1, cell_vertices.min(0)) X2 = np.maximum(X2, cell_vertices.max(0)) M = (X1 + X2) / 2 S = 1.05 * (X2 - X1) w = scale * S[0] if w > maxwidth: w = maxwidth scale = w / S[0] h = scale * S[1] offset = np.array([scale * M[0] - w / 2, scale * M[1] - h / 2, 0]) else: w = (bbox[2] - bbox[0]) * scale h = (bbox[3] - bbox[1]) * scale offset = np.array([bbox[0], bbox[1], 0]) * scale offset[0] = offset[0] - extra_offset[0] offset[1] = offset[1] - extra_offset[1] writer.w = w + extra_offset[0] writer.h = h + extra_offset[1] positions *= scale positions -= offset if nlines > 0: D = np.dot(D, rotation)[:, :2] * scale if cell_vertices is not None: cell_vertices *= scale cell_vertices -= offset cell = np.dot(cell, rotation) cell *= scale writer.cell = cell writer.positions = positions writer.D = D writer.T = T writer.cell_vertices = cell_vertices writer.natoms = natoms writer.d = 2 * scale * radii def cell_to_lines(writer, cell): # XXX this needs to be updated for cell vectors that are zero. # Cannot read the code though! (What are T and D? nn?) nlines = 0 nsegments = [] for c in range(3): d = sqrt((cell[c]**2).sum()) n = max(2, int(d / 0.3)) nsegments.append(n) nlines += 4 * n positions = np.empty((nlines, 3)) T = np.empty(nlines, int) D = np.zeros((3, 3)) n1 = 0 for c in range(3): n = nsegments[c] dd = cell[c] / (4 * n - 2) D[c] = dd P = np.arange(1, 4 * n + 1, 4)[:, None] * dd T[n1:] = c for i, j in [(0, 0), (0, 1), (1, 0), (1, 1)]: n2 = n1 + n positions[n1:n2] = P + i * cell[c - 2] + j * cell[c - 1] n1 = n2 return positions, T, D def make_patch_list(writer): try: from matplotlib.path import Path except ImportError: Path = None from matplotlib.patches import Circle, Polygon else: from matplotlib.patches import Circle, PathPatch indices = writer.positions[:, 2].argsort() patch_list = [] for a in indices: xy = writer.positions[a, :2] if a < writer.natoms: r = writer.d[a] / 2 if ((xy[1] + r > 0) and (xy[1] - r < writer.h) and (xy[0] + r > 0) and (xy[0] - r < writer.w)): patch = Circle(xy, r, facecolor=writer.colors[a], edgecolor='black') patch_list.append(patch) else: a -= writer.natoms c = writer.T[a] if c != -1: hxy = writer.D[c] if Path is None: patch = Polygon((xy + hxy, xy - hxy)) else: patch = PathPatch(Path((xy + hxy, xy - hxy))) patch_list.append(patch) return patch_list ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/v_sim.py000066400000000000000000000101601316323560300226330ustar00rootroot00000000000000""" This module contains functionality for reading and writing an ASE Atoms object in V_Sim 3.5+ ascii format. """ import numpy as np from ase.utils import basestring def read_v_sim(filename='demo.ascii'): """Import V_Sim input file. Reads cell, atom positions, etc. from v_sim ascii file """ from ase import Atoms, units from ase.geometry import cellpar_to_cell import re if isinstance(filename, basestring): f = open(filename) else: # Assume it's a file-like object f = filename # Read comment: f.readline() line = f.readline() + ' ' + f.readline() box = line.split() for i in range(len(box)): box[i] = float(box[i]) keywords = [] positions = [] symbols = [] unit = 1.0 re_comment = re.compile('^\s*[#!]') re_node = re.compile('^\s*\S+\s+\S+\s+\S+\s+\S+') while(True): line = f.readline() if line == '': break # EOF p = re_comment.match(line) if p is not None: # remove comment character at the beginning of line line = line[p.end():].replace(',', ' ').lower() if line[:8] == "keyword:": keywords.extend(line[8:].split()) elif(re_node.match(line)): unit = 1.0 if not ("reduced" in keywords): if (("bohr" in keywords) or ("bohrd0" in keywords) or ("atomic" in keywords) or ("atomicd0" in keywords)): unit = units.Bohr fields = line.split() positions.append([unit*float(fields[0]), unit*float(fields[1]), unit*float(fields[2])]) symbols.append(fields[3]) f.close() if ("surface" in keywords) or ("freeBC" in keywords): raise NotImplementedError # create atoms object based on the information if ("angdeg" in keywords): cell = cellpar_to_cell(box) else: unit = 1.0 if (("bohr" in keywords) or ("bohrd0" in keywords) or ("atomic" in keywords) or ("atomicd0" in keywords)): unit = units.Bohr cell = [[unit*box[0], 0.0, 0.0], [unit*box[1], unit*box[2], 0.0], [unit*box[3], unit*box[4], unit*box[5]]] if ("reduced" in keywords): atoms = Atoms(cell=cell, scaled_positions=positions) else: atoms = Atoms(cell=cell, positions=positions) atoms.set_chemical_symbols(symbols) return atoms def write_v_sim(filename, atoms): """Write V_Sim input file. Writes the atom positions and unit cell. """ from ase.geometry import cellpar_to_cell, cell_to_cellpar if isinstance(filename, basestring): f = open(filename) else: # Assume it's a file-like object f = filename # Convert the lattice vectors to triangular matrix by converting # to and from a set of lengths and angles cell = cellpar_to_cell(cell_to_cellpar(atoms.cell)) dxx = cell[0, 0] dyx, dyy = cell[1, 0:2] dzx, dzy, dzz = cell[2, 0:3] f.write('===== v_sim input file created using the' ' Atomic Simulation Environment (ASE) ====\n') f.write('{0} {1} {2}\n'.format(dxx, dyx, dyy)) f.write('{0} {1} {2}\n'.format(dzx, dzy, dzz)) # Use v_sim 3.5 keywords to indicate scaled positions, etc. f.write('#keyword: reduced\n') f.write('#keyword: angstroem\n') if np.alltrue(atoms.pbc): f.write('#keyword: periodic\n') elif not np.any(atoms.pbc): f.write('#keyword: freeBC\n') elif np.array_equiv(atoms.pbc, [True, False, True]): f.write('#keyword: surface\n') else: raise Exception('Only supported boundary conditions are full PBC,' ' no periodic boundary, and surface which is free in y direction' ' (i.e. Atoms.pbc = [True, False, True]).') # Add atoms (scaled positions) for position, symbol in zip(atoms.get_scaled_positions(), atoms.get_chemical_symbols()): f.write('{0} {1} {2} {3}\n'.format( position[0], position[1], position[2], symbol)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/vasp.py000066400000000000000000000666161316323560300225100ustar00rootroot00000000000000""" This module contains functionality for reading and writing an ASE Atoms object in VASP POSCAR format. """ import os import ase.units from ase.utils import basestring def get_atomtypes(fname): """Given a file name, get the atomic symbols. The function can get this information from OUTCAR and POTCAR format files. The files can also be compressed with gzip or bzip2. """ atomtypes = [] if fname.find('.gz') != -1: import gzip f = gzip.open(fname) elif fname.find('.bz2') != -1: import bz2 f = bz2.BZ2File(fname) else: f = open(fname) for line in f: if line.find('TITEL') != -1: atomtypes.append(line.split()[3].split('_')[0].split('.')[0]) return atomtypes def atomtypes_outpot(posfname, numsyms): """Try to retrieve chemical symbols from OUTCAR or POTCAR If getting atomtypes from the first line in POSCAR/CONTCAR fails, it might be possible to find the data in OUTCAR or POTCAR, if these files exist. posfname -- The filename of the POSCAR/CONTCAR file we're trying to read numsyms -- The number of symbols we must find """ import os.path as op import glob # First check files with exactly same name except POTCAR/OUTCAR instead # of POSCAR/CONTCAR. fnames = [posfname.replace('POSCAR', 'POTCAR').replace('CONTCAR', 'POTCAR')] fnames.append(posfname.replace('POSCAR', 'OUTCAR').replace('CONTCAR', 'OUTCAR')) # Try the same but with compressed files fsc = [] for fn in fnames: fsc.append(fn + '.gz') fsc.append(fn + '.bz2') for f in fsc: fnames.append(f) # Finally try anything with POTCAR or OUTCAR in the name vaspdir = op.dirname(posfname) fs = glob.glob(vaspdir + '*POTCAR*') for f in fs: fnames.append(f) fs = glob.glob(vaspdir + '*OUTCAR*') for f in fs: fnames.append(f) tried = [] files_in_dir = os.listdir('.') for fn in fnames: if fn in files_in_dir: tried.append(fn) at = get_atomtypes(fn) if len(at) == numsyms: return at raise IOError('Could not determine chemical symbols. Tried files ' + str(tried)) def get_atomtypes_from_formula(formula): """Return atom types from chemical formula (optionally prepended with and underscore). """ from ase.atoms import string2symbols symbols = string2symbols(formula.split('_')[0]) atomtypes = [symbols[0]] for s in symbols[1:]: if s != atomtypes[-1]: atomtypes.append(s) return atomtypes def read_vasp(filename='CONTCAR'): """Import POSCAR/CONTCAR type file. Reads unitcell, atom positions and constraints from the POSCAR/CONTCAR file and tries to read atom types from POSCAR/CONTCAR header, if this fails the atom types are read from OUTCAR or POTCAR file. """ from ase import Atoms from ase.constraints import FixAtoms, FixScaled from ase.data import chemical_symbols import numpy as np if isinstance(filename, basestring): f = open(filename) else: # Assume it's a file-like object f = filename # The first line is in principle a comment line, however in VASP # 4.x a common convention is to have it contain the atom symbols, # eg. "Ag Ge" in the same order as later in the file (and POTCAR # for the full vasp run). In the VASP 5.x format this information # is found on the fifth line. Thus we save the first line and use # it in case we later detect that we're reading a VASP 4.x format # file. line1 = f.readline() lattice_constant = float(f.readline().split()[0]) # Now the lattice vectors a = [] for ii in range(3): s = f.readline().split() floatvect = float(s[0]), float(s[1]), float(s[2]) a.append(floatvect) basis_vectors = np.array(a) * lattice_constant # Number of atoms. Again this must be in the same order as # in the first line # or in the POTCAR or OUTCAR file atom_symbols = [] numofatoms = f.readline().split() # Check whether we have a VASP 4.x or 5.x format file. If the # format is 5.x, use the fifth line to provide information about # the atomic symbols. vasp5 = False try: int(numofatoms[0]) except ValueError: vasp5 = True atomtypes = numofatoms numofatoms = f.readline().split() # check for comments in numofatoms line and get rid of them if necessary commentcheck = np.array(['!' in s for s in numofatoms]) if commentcheck.any(): # only keep the elements up to the first including a '!': numofatoms = numofatoms[:np.arange(len(numofatoms))[commentcheck][0]] if not vasp5: atomtypes = line1.split() numsyms = len(numofatoms) if len(atomtypes) < numsyms: # First line in POSCAR/CONTCAR didn't contain enough symbols. # Sometimes the first line in POSCAR/CONTCAR is of the form # "CoP3_In-3.pos". Check for this case and extract atom types if len(atomtypes) == 1 and '_' in atomtypes[0]: atomtypes = get_atomtypes_from_formula(atomtypes[0]) else: atomtypes = atomtypes_outpot(f.name, numsyms) else: try: for atype in atomtypes[:numsyms]: if atype not in chemical_symbols: raise KeyError except KeyError: atomtypes = atomtypes_outpot(f.name, numsyms) for i, num in enumerate(numofatoms): numofatoms[i] = int(num) [atom_symbols.append(atomtypes[i]) for na in range(numofatoms[i])] # Check if Selective dynamics is switched on sdyn = f.readline() selective_dynamics = sdyn[0].lower() == 's' # Check if atom coordinates are cartesian or direct if selective_dynamics: ac_type = f.readline() else: ac_type = sdyn cartesian = ac_type[0].lower() == 'c' or ac_type[0].lower() == 'k' tot_natoms = sum(numofatoms) atoms_pos = np.empty((tot_natoms, 3)) if selective_dynamics: selective_flags = np.empty((tot_natoms, 3), dtype=bool) for atom in range(tot_natoms): ac = f.readline().split() atoms_pos[atom] = (float(ac[0]), float(ac[1]), float(ac[2])) if selective_dynamics: curflag = [] for flag in ac[3:6]: curflag.append(flag == 'F') selective_flags[atom] = curflag # Done with all reading if isinstance(filename, basestring): f.close() if cartesian: atoms_pos *= lattice_constant atoms = Atoms(symbols=atom_symbols, cell=basis_vectors, pbc=True) if cartesian: atoms.set_positions(atoms_pos) else: atoms.set_scaled_positions(atoms_pos) if selective_dynamics: constraints = [] indices = [] for ind, sflags in enumerate(selective_flags): if sflags.any() and not sflags.all(): constraints.append(FixScaled(atoms.get_cell(), ind, sflags)) elif sflags.all(): indices.append(ind) if indices: constraints.append(FixAtoms(indices)) if constraints: atoms.set_constraint(constraints) return atoms def read_vasp_out(filename='OUTCAR', index=-1, force_consistent=False): """Import OUTCAR type file. Reads unitcell, atom positions, energies, and forces from the OUTCAR file and attempts to read constraints (if any) from CONTCAR/POSCAR, if present. """ import numpy as np from ase.calculators.singlepoint import SinglePointCalculator from ase import Atoms, Atom try: # try to read constraints, first from CONTCAR, then from POSCAR constr = read_vasp('CONTCAR').constraints except Exception: try: constr = read_vasp('POSCAR').constraints except Exception: constr = None if isinstance(filename, basestring): f = open(filename) else: # Assume it's a file-like object f = filename data = f.readlines() natoms = 0 images = [] atoms = Atoms(pbc=True, constraint=constr) energy = 0 species = [] species_num = [] stress = None symbols = [] ecount = 0 poscount = 0 magnetization = [] for n, line in enumerate(data): if 'POTCAR:' in line: temp = line.split()[2] for c in ['.', '_', '1']: if c in temp: temp = temp[0:temp.find(c)] species += [temp] if 'ions per type' in line: species = species[:len(species) // 2] temp = line.split() ntypes = min(len(temp)-4, len(species)) for ispecies in range(ntypes): species_num += [int(temp[ispecies + 4])] natoms += species_num[-1] for iatom in range(species_num[-1]): symbols += [species[ispecies]] if 'direct lattice vectors' in line: cell = [] for i in range(3): temp = data[n + 1 + i].split() cell += [[float(temp[0]), float(temp[1]), float(temp[2])]] atoms.set_cell(cell) if 'FREE ENERGIE OF THE ION-ELECTRON SYSTEM' in line: # choose between energy wigh smearing extrapolated to zero # or free energy (latter is consistent with forces) energy_zero = float(data[n + 4].split()[6]) energy_free = float(data[n + 2].split()[4]) energy = energy_zero if force_consistent: energy = energy_free if ecount < poscount: # reset energy for LAST set of atoms, not current one - # VASP 5.11? and up images[-1].calc.results['energy'] = energy images[-1].calc.set(energy=energy) ecount += 1 if 'magnetization (x)' in line: magnetization = [] for i in range(natoms): magnetization += [float(data[n + 4 + i].split()[4])] if 'in kB ' in line: stress = -np.array([float(a) for a in line.split()[2:]]) stress = stress[[0, 1, 2, 4, 5, 3]] * 1e-1 * ase.units.GPa if 'POSITION ' in line: forces = [] positions = [] for iatom in range(natoms): temp = data[n + 2 + iatom].split() atoms += Atom(symbols[iatom], [float(temp[0]), float(temp[1]), float(temp[2])]) forces += [[float(temp[3]), float(temp[4]), float(temp[5])]] positions += [[float(temp[0]), float(temp[1]), float(temp[2])]] atoms.set_calculator(SinglePointCalculator(atoms, energy=energy, forces=forces, stress=stress)) images += [atoms] if len(magnetization) > 0: mag = np.array(magnetization, float) images[-1].calc.magmoms = mag images[-1].calc.results['magmoms'] = mag atoms = Atoms(pbc=True, constraint=constr) poscount += 1 # return requested images, code borrowed from ase/io/trajectory.py if isinstance(index, int): return images[index] else: step = index.step or 1 if step > 0: start = index.start or 0 if start < 0: start += len(images) stop = index.stop or len(images) if stop < 0: stop += len(images) else: if index.start is None: start = len(images) - 1 else: start = index.start if start < 0: start += len(images) if index.stop is None: stop = -1 else: stop = index.stop if stop < 0: stop += len(images) return [images[i] for i in range(start, stop, step)] def read_vasp_xdatcar(filename, index=-1): """Import XDATCAR file Reads all positions from the XDATCAR and returns a list of Atoms objects. Useful for viewing optimizations runs from VASP5.x Constraints ARE NOT stored in the XDATCAR, and as such, Atoms objects retrieved from the XDATCAR will not have constraints set. """ import numpy as np from ase import Atoms images = list() cell = np.eye(3) atomic_formula = str() with open(filename, 'r') as xdatcar: while True: comment_line = xdatcar.readline() if "Direct configuration=" not in comment_line: try: lattice_constant = float(xdatcar.readline()) except: break xx = [float(x) for x in xdatcar.readline().split()] yy = [float(y) for y in xdatcar.readline().split()] zz = [float(z) for z in xdatcar.readline().split()] cell = np.array([xx, yy, zz]) * lattice_constant symbols = xdatcar.readline().split() numbers = [int(n) for n in xdatcar.readline().split()] total = sum(numbers) atomic_formula = str() for n, sym in enumerate(symbols): atomic_formula += '%s%s' % (sym, numbers[n]) xdatcar.readline() coords = [np.array(xdatcar.readline().split(), np.float) for ii in range(total)] image = Atoms(atomic_formula, cell=cell, pbc=True) image.set_scaled_positions(np.array(coords)) images.append(image) if not index: return images else: return images[index] def __get_xml_parameter(par): """An auxillary function that enables convenient extraction of parameter values from a vasprun.xml file with proper type handling. """ def to_bool(b): if b == 'T': return True else: return False to_type = {'int': int, 'logical': to_bool, 'string': str, 'float': float} text = par.text if text is None: text = '' # Float parameters do not have a 'type' attrib var_type = to_type[par.attrib.get('type', 'float')] if par.tag == 'v': return map(var_type, text.split()) else: return var_type(text.strip()) def read_vasp_xml(filename='vasprun.xml', index=-1): """Parse vasprun.xml file. Reads unit cell, atom positions, energies, forces, and constraints from vasprun.xml file """ import numpy as np import xml.etree.ElementTree as ET from ase import Atoms from ase.constraints import FixAtoms, FixScaled from ase.calculators.singlepoint import (SinglePointDFTCalculator, SinglePointKPoint) from ase.units import GPa from collections import OrderedDict tree = ET.iterparse(filename, events=['start', 'end']) atoms_init = None calculation = [] ibz_kpts = None kpt_weights = None parameters = OrderedDict() try: for event, elem in tree: if event == 'end': if elem.tag == 'kpoints': for subelem in elem.iter(tag='generation'): kpts_params = OrderedDict() parameters['kpoints_generation'] = kpts_params for par in subelem.iter(): if par.tag in ['v', 'i']: parname = par.attrib['name'].lower() kpts_params[parname] = __get_xml_parameter(par) kpts = elem.findall("varray[@name='kpointlist']/v") ibz_kpts = np.zeros((len(kpts), 3)) for i, kpt in enumerate(kpts): ibz_kpts[i] = [float(val) for val in kpt.text.split()] kpt_weights = elem.findall('varray[@name="weights"]/v') kpt_weights = [float(val.text) for val in kpt_weights] elif elem.tag == 'parameters': for par in elem.iter(): if par.tag in ['v', 'i']: parname = par.attrib['name'].lower() parameters[parname] = __get_xml_parameter(par) elif elem.tag == 'atominfo': species = [] for entry in elem.find("array[@name='atoms']/set"): species.append(entry[0].text.strip()) natoms = len(species) elif (elem.tag == 'structure' and elem.attrib.get('name') == 'initialpos'): cell_init = np.zeros((3, 3), dtype=float) for i, v in enumerate(elem.find( "crystal/varray[@name='basis']")): cell_init[i] = np.array([ float(val) for val in v.text.split()]) scpos_init = np.zeros((natoms, 3), dtype=float) for i, v in enumerate(elem.find( "varray[@name='positions']")): scpos_init[i] = np.array([ float(val) for val in v.text.split()]) constraints = [] fixed_indices = [] for i, entry in enumerate(elem.findall( "varray[@name='selective']/v")): flags = (np.array(entry.text.split() == np.array(['F', 'F', 'F']))) if flags.all(): fixed_indices.append(i) elif flags.any(): constraints.append(FixScaled(cell_init, i, flags)) if fixed_indices: constraints.append(FixAtoms(fixed_indices)) atoms_init = Atoms(species, cell=cell_init, scaled_positions=scpos_init, constraint=constraints, pbc=True) elif elem.tag=='dipole': dblock = elem.find('v[@name="dipole"]') if dblock is not None: dipole = np.array([float(val) for val in dblock.text.split()]) elif event == 'start' and elem.tag == 'calculation': calculation.append(elem) except ET.ParseError as parse_error: if atoms_init is None: raise parse_error if calculation[-1].find('energy') is None: calculation = calculation[:-1] if not calculation: yield atoms_init if calculation: if isinstance(index, int): steps = [calculation[index]] else: steps = calculation[index] else: steps = [] for step in steps: # Workaround for VASP bug, e_0_energy contains the wrong value # in calculation/energy, but calculation/scstep/energy does not # include classical VDW corrections. So, first calculate # e_0_energy - e_fr_energy from calculation/scstep/energy, then # apply that correction to e_fr_energy from calculation/energy. lastscf = step.findall('scstep/energy')[-1] try: lastdipole = step.findall('scstep/dipole')[-1] except: lastdipole = None de = (float(lastscf.find('i[@name="e_0_energy"]').text) - float(lastscf.find('i[@name="e_fr_energy"]').text)) free_energy = float(step.find('energy/i[@name="e_fr_energy"]').text) energy = free_energy + de cell = np.zeros((3, 3), dtype=float) for i, vector in enumerate(step.find( 'structure/crystal/varray[@name="basis"]')): cell[i] = np.array([float(val) for val in vector.text.split()]) scpos = np.zeros((natoms, 3), dtype=float) for i, vector in enumerate(step.find( 'structure/varray[@name="positions"]')): scpos[i] = np.array([float(val) for val in vector.text.split()]) forces = None fblocks = step.find('varray[@name="forces"]') if fblocks is not None: forces = np.zeros((natoms, 3), dtype=float) for i, vector in enumerate(fblocks): forces[i] = np.array([float(val) for val in vector.text.split()]) stress = None sblocks = step.find('varray[@name="stress"]') if sblocks is not None: stress = np.zeros((3, 3), dtype=float) for i, vector in enumerate(sblocks): stress[i] = np.array([float(val) for val in vector.text.split()]) stress *= -0.1 * GPa stress = stress.reshape(9)[[0, 4, 8, 5, 2, 1]] dipole = None if lastdipole is not None: dblock = lastdipole.find('v[@name="dipole"]') if dblock is not None: dipole = np.zeros((1,3), dtype=float) dipole = np.array([float(val) for val in dblock.text.split()]) dblock = step.find('dipole/v[@name="dipole"]') if dblock is not None: dipole = np.zeros((1,3), dtype=float) dipole = np.array([float(val) for val in dblock.text.split()]) efermi = step.find('dos/i[@name="efermi"]') if efermi is not None: efermi = float(efermi.text) kpoints = [] for ikpt in range(1, len(ibz_kpts) + 1): kblocks = step.findall( 'eigenvalues/array/set/set/set[@comment="kpoint %d"]' % ikpt) if kblocks is not None: for spin, kpoint in enumerate(kblocks): eigenvals = kpoint.findall('r') eps_n = np.zeros(len(eigenvals)) f_n = np.zeros(len(eigenvals)) for j, val in enumerate(eigenvals): val = val.text.split() eps_n[j] = float(val[0]) f_n[j] = float(val[1]) if len(kblocks) == 1: f_n *= 2 kpoints.append(SinglePointKPoint(kpt_weights[ikpt - 1], spin, ikpt, eps_n, f_n)) if len(kpoints) == 0: kpoints = None atoms = atoms_init.copy() atoms.set_cell(cell) atoms.set_scaled_positions(scpos) atoms.set_calculator( SinglePointDFTCalculator(atoms, energy=energy, forces=forces, stress=stress, free_energy=free_energy, ibzkpts=ibz_kpts, efermi=efermi, dipole=dipole)) atoms.calc.name = 'vasp' atoms.calc.kpts = kpoints atoms.calc.parameters = parameters yield atoms def write_vasp(filename, atoms, label='', direct=False, sort=None, symbol_count=None, long_format=True, vasp5=False): """Method to write VASP position (POSCAR/CONTCAR) files. Writes label, scalefactor, unitcell, # of various kinds of atoms, positions in cartesian or scaled coordinates (Direct), and constraints to file. Cartesian coordiantes is default and default label is the atomic species, e.g. 'C N H Cu'. """ import numpy as np from ase.constraints import FixAtoms, FixScaled, FixedPlane, FixedLine if isinstance(filename, basestring): f = open(filename, 'w') else: # Assume it's a 'file-like object' f = filename if isinstance(atoms, (list, tuple)): if len(atoms) > 1: raise RuntimeError('Don\'t know how to save more than ' + 'one image to VASP input') else: atoms = atoms[0] # Write atom positions in scaled or cartesian coordinates if direct: coord = atoms.get_scaled_positions() else: coord = atoms.get_positions() if atoms.constraints: sflags = np.zeros((len(atoms), 3), dtype=bool) for constr in atoms.constraints: if isinstance(constr, FixScaled): sflags[constr.a] = constr.mask elif isinstance(constr, FixAtoms): sflags[constr.index] = [True, True, True] elif isinstance(constr, FixedPlane): mask = np.all(np.abs(np.cross(constr.dir, atoms.cell)) < 1e-5, axis=1) if sum(mask) != 1: raise RuntimeError( 'VASP requires that the direction of FixedPlane ' 'constraints is parallel with one of the cell axis') sflags[constr.a] = mask elif isinstance(constr, FixedLine): mask = np.all(np.abs(np.cross(constr.dir, atoms.cell)) < 1e-5, axis=1) if sum(mask) != 1: raise RuntimeError( 'VASP requires that the direction of FixedLine ' 'constraints is parallel with one of the cell axis') sflags[constr.a] = ~mask if sort: ind = np.argsort(atoms.get_chemical_symbols()) symbols = np.array(atoms.get_chemical_symbols())[ind] coord = coord[ind] if atoms.constraints: sflags = sflags[ind] else: symbols = atoms.get_chemical_symbols() # Create a list sc of (symbol, count) pairs if symbol_count: sc = symbol_count else: sc = [] psym = symbols[0] count = 0 for sym in symbols: if sym != psym: sc.append((psym, count)) psym = sym count = 1 else: count += 1 sc.append((psym, count)) # Create the label if label == '': for sym, c in sc: label += '%2s ' % sym f.write(label + '\n') # Write unitcell in real coordinates and adapt to VASP convention # for unit cell # ase Atoms doesn't store the lattice constant separately, so always # write 1.0. f.write('%19.16f\n' % 1.0) if long_format: latt_form = ' %21.16f' else: latt_form = ' %11.6f' for vec in atoms.get_cell(): f.write(' ') for el in vec: f.write(latt_form % el) f.write('\n') # If we're writing a VASP 5.x format POSCAR file, write out the # atomic symbols if vasp5: for sym, c in sc: f.write(' %3s' % sym) f.write('\n') # Numbers of each atom for sym, count in sc: f.write(' %3i' % count) f.write('\n') if atoms.constraints: f.write('Selective dynamics\n') if direct: f.write('Direct\n') else: f.write('Cartesian\n') if long_format: cform = ' %19.16f' else: cform = ' %9.6f' for iatom, atom in enumerate(coord): for dcoord in atom: f.write(cform % dcoord) if atoms.constraints: for flag in sflags[iatom]: if flag: s = 'F' else: s = 'T' f.write('%4s' % s) f.write('\n') if isinstance(filename, basestring): f.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/vtkxml.py000066400000000000000000000100631316323560300230450ustar00rootroot00000000000000import numpy as np fast = False def write_vti(filename, atoms, data=None): from vtk import vtkStructuredPoints, vtkDoubleArray, vtkXMLImageDataWriter #if isinstance(fileobj, basestring): # fileobj = paropen(fileobj, 'w') if isinstance(atoms, list): if len(atoms) > 1: raise ValueError('Can only write one configuration to a VTI file!') atoms = atoms[0] if data is None: raise ValueError('VTK XML Image Data (VTI) format requires data!') data = np.asarray(data) if data.dtype == complex: data = np.abs(data) cell = atoms.get_cell() assert np.all(cell==np.diag(cell.diagonal())), 'Unit cell must be orthogonal' bbox = np.array(list(zip(np.zeros(3),cell.diagonal()))).ravel() # Create a VTK grid of structured points spts = vtkStructuredPoints() spts.SetWholeBoundingBox(bbox) spts.SetDimensions(data.shape) spts.SetSpacing(cell.diagonal() / data.shape) #spts.SetSpacing(paw.gd.h_c * Bohr) #print 'paw.gd.h_c * Bohr=',paw.gd.h_c * Bohr #print 'atoms.cell.diagonal() / data.shape=', cell.diagonal()/data.shape #assert np.all(paw.gd.h_c * Bohr==cell.diagonal()/data.shape) #s = paw.wfs.kpt_u[0].psit_nG[0].copy() #data = paw.get_pseudo_wave_function(band=0, kpt=0, spin=0, pad=False) #spts.point_data.scalars = data.swapaxes(0,2).flatten() #spts.point_data.scalars.name = 'scalars' # Allocate a VTK array of type double and copy data da = vtkDoubleArray() da.SetName('scalars') da.SetNumberOfComponents(1) da.SetNumberOfTuples(np.prod(data.shape)) for i,d in enumerate(data.swapaxes(0,2).flatten()): da.SetTuple1(i,d) # Assign the VTK array as point data of the grid spd = spts.GetPointData() # type(spd) is vtkPointData spd.SetScalars(da) """ from vtk.util.vtkImageImportFromArray import vtkImageImportFromArray iia = vtkImageImportFromArray() #iia.SetArray(Numeric_asarray(data.swapaxes(0,2).flatten())) iia.SetArray(Numeric_asarray(data)) ida = iia.GetOutput() ipd = ida.GetPointData() ipd.SetName('scalars') spd.SetScalars(ipd.GetScalars()) """ # Save the ImageData dataset to a VTK XML file. w = vtkXMLImageDataWriter() if fast: w.SetDataModeToAppend() w.EncodeAppendedDataOff() else: w.SetDataModeToAscii() w.SetFileName(filename) w.SetInput(spts) w.Write() def write_vtu(filename, atoms, data=None): from vtk import VTK_MAJOR_VERSION, vtkUnstructuredGrid, vtkPoints, vtkXMLUnstructuredGridWriter from vtk.util.numpy_support import numpy_to_vtk if isinstance(atoms, list): if len(atoms) > 1: raise ValueError('Can only write one configuration to a VTI file!') atoms = atoms[0] # Create a VTK grid of structured points ugd = vtkUnstructuredGrid() # add atoms as vtk Points p = vtkPoints() p.SetNumberOfPoints(len(atoms)) p.SetDataTypeToDouble() for i,pos in enumerate(atoms.get_positions()): p.InsertPoint(i,pos[0],pos[1],pos[2]) ugd.SetPoints(p) # add atomic numbers numbers = numpy_to_vtk(atoms.get_atomic_numbers(), deep=1) ugd.GetPointData().AddArray(numbers) numbers.SetName("atomic numbers") # add tags tags = numpy_to_vtk(atoms.get_tags(), deep=1) ugd.GetPointData().AddArray(tags) tags.SetName("tags") # add covalent radii from ase.data import covalent_radii radii = numpy_to_vtk(np.array([covalent_radii[i] for i in atoms.get_atomic_numbers()]), deep=1) ugd.GetPointData().AddArray(radii) radii.SetName("radii") # Save the UnstructuredGrid dataset to a VTK XML file. w = vtkXMLUnstructuredGridWriter() if fast: w.SetDataModeToAppend() w.EncodeAppendedDataOff() else: w.GetCompressor().SetCompressionLevel(0) w.SetDataModeToAscii() if isinstance(filename, str): w.SetFileName(filename) else: w.SetFileName(filename.name) if VTK_MAJOR_VERSION <= 5: w.SetInput(ugd) else: w.SetInputData(ugd) w.Write() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/wien2k.py000066400000000000000000000135751316323560300227320ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.units import Bohr, Ry def read_scf(filename): try: f = open(filename + '.scf', 'r') pip = f.readlines() ene = [] for line in pip: if line[0:4] == ':ENE': ene.append(float(line[43:59]) * Ry) f.close() return ene except: return None def read_struct(filename, ase=True): f = open(filename, 'r') pip = f.readlines() lattice = pip[1][0:3] nat = int(pip[1][27:30]) cell = np.zeros(6) for i in range(6): cell[i] = float(pip[3][0 + i * 10:10 + i * 10]) cell[0:3] = cell[0:3] * Bohr if lattice == 'P ': lattice = 'P' elif lattice == 'H ': lattice = 'P' cell[3:6] = [90.0, 90.0, 120.0] elif lattice == 'R ': lattice = 'R' elif lattice == 'F ': lattice = 'F' elif lattice == 'B ': lattice = 'I' elif lattice == 'CXY': lattice = 'C' elif lattice == 'CXZ': lattice = 'B' elif lattice == 'CYZ': lattice = 'A' else: raise RuntimeError('TEST needed') pos = np.array([]) atomtype = [] rmt = [] neq = np.zeros(nat) iline = 4 indif = 0 for iat in range(nat): indifini = indif if len(pos) == 0: pos = np.array([[float(pip[iline][12:22]), float(pip[iline][25:35]), float(pip[iline][38:48])]]) else: pos = np.append(pos, np.array([[float(pip[iline][12:22]), float(pip[iline][25:35]), float(pip[iline][38:48])]]), axis=0) indif += 1 iline += 1 neq[iat] = int(pip[iline][15:17]) iline += 1 for ieq in range(1, int(neq[iat])): pos = np.append(pos, np.array([[float(pip[iline][12:22]), float(pip[iline][25:35]), float(pip[iline][38:48])]]), axis=0) indif += 1 iline += 1 for i in range(indif - indifini): atomtype.append(pip[iline][0:2].replace(' ', '')) rmt.append(float(pip[iline][43:48])) iline += 4 if ase: cell2 = coorsys(cell) atoms = Atoms(atomtype, pos, pbc=True) atoms.set_cell(cell2, scale_atoms=True) cell2 = np.dot(c2p(lattice), cell2) if lattice == 'R': atoms.set_cell(cell2, scale_atoms=True) else: atoms.set_cell(cell2) return atoms else: return cell, lattice, pos, atomtype, rmt def write_struct(filename, atoms2=None, rmt=None, lattice='P', zza=None): atoms = atoms2.copy() atoms.set_scaled_positions(atoms.get_scaled_positions()) f = open(filename, 'w') f.write('ASE generated\n') nat = len(atoms) if rmt is None: rmt = [2.0] * nat f.write(lattice + ' LATTICE,NONEQUIV.ATOMS:%3i\nMODE OF CALC=RELA\n' % nat) cell = atoms.get_cell() metT = np.dot(cell, np.transpose(cell)) cell2 = cellconst(metT) cell2[0:3] = cell2[0:3] / Bohr f.write(('%10.6f' * 6) % tuple(cell2) + '\n') if zza is None: zza = atoms.get_atomic_numbers() for ii in range(nat): f.write('ATOM %3i: ' % (ii + 1)) pos = atoms.get_scaled_positions()[ii] f.write('X=%10.8f Y=%10.8f Z=%10.8f\n' % tuple(pos)) f.write(' MULT= 1 ISPLIT= 1\n') zz = zza[ii] if zz > 71: ro = 0.000005 elif zz > 36: ro = 0.00001 elif zz > 18: ro = 0.00005 else: ro = 0.0001 f.write('%-10s NPT=%5i R0=%9.8f RMT=%10.4f Z:%10.5f\n' % (atoms.get_chemical_symbols()[ii], 781, ro, rmt[ii], zz)) f.write('LOCAL ROT MATRIX: %9.7f %9.7f %9.7f\n' % (1.0, 0.0, 0.0)) f.write(' %9.7f %9.7f %9.7f\n' % (0.0, 1.0, 0.0)) f.write(' %9.7f %9.7f %9.7f\n' % (0.0, 0.0, 1.0)) f.write(' 0\n') def cellconst(metT): """ metT=np.dot(cell,cell.T) """ aa = np.sqrt(metT[0, 0]) bb = np.sqrt(metT[1, 1]) cc = np.sqrt(metT[2, 2]) gamma = np.arccos(metT[0, 1] / (aa * bb)) / np.pi * 180.0 beta = np.arccos(metT[0, 2] / (aa * cc)) / np.pi * 180.0 alpha = np.arccos(metT[1, 2] / (bb * cc)) / np.pi * 180.0 return np.array([aa, bb, cc, alpha, beta, gamma]) def coorsys(latconst): a = latconst[0] b = latconst[1] c = latconst[2] cal = np.cos(latconst[3] * np.pi / 180.0) cbe = np.cos(latconst[4] * np.pi / 180.0) cga = np.cos(latconst[5] * np.pi / 180.0) sga = np.sin(latconst[5] * np.pi / 180.0) return np.array([[a, b * cga, c * cbe], [0, b * sga, c * (cal - cbe * cga) / sga], [0, 0, c * np.sqrt(1 - cal**2 - cbe**2 - cga**2 + 2 * cal * cbe * cga) / sga] ]).transpose() def c2p(lattice): """ apply as eg. cell2 = np.dot(c2p('F'), cell)""" if lattice == 'P': cell = np.eye(3) elif lattice == 'F': cell = np.array([[0.0, 0.5, 0.5], [0.5, 0.0, 0.5], [0.5, 0.5, 0.0]]) elif lattice == 'I': cell = np.array([[-0.5, 0.5, 0.5], [0.5, -0.5, 0.5], [0.5, 0.5, -0.5]]) elif lattice == 'C': cell = np.array([[0.5, 0.5, 0.0], [0.5, -0.5, 0.0], [0.0, 0.0, -1.0]]) elif lattice == 'B': cell = np.array([[0.5, 0.0, 0.5], [0.0, 1.0, 0.0], [0.5, 0.0, -0.5]]) elif lattice == 'R': cell = np.array([[2.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0], [-1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0], [-1.0 / 3.0, -2.0 / 3.0, 1.0 / 3.0]]) else: raise ValueError('lattice is ' + lattice + '!') return cell ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/x3d.py000066400000000000000000000070441316323560300222230ustar00rootroot00000000000000""" Output support for X3D and X3DOM file types. See http://www.web3d.org/x3d/specifications/ X3DOM outputs to html pages that should display 3-d manipulatable atoms in modern web browsers. """ from ase.parallel import paropen from ase.data import covalent_radii from ase.data.colors import jmol_colors def write_x3d(filename, atoms): """Writes to html using X3DOM.""" X3D(atoms).write(filename) write_html = write_x3d class X3D: """Class to write either X3D (readable by open-source rendering programs such as Blender) or X3DOM html, readable by modern web browsers. """ def __init__(self, atoms): self._atoms = atoms def write(self, filename): """Writes output to either an 'X3D' or an 'X3DOM' file, based on the extension. For X3D, filename should end in '.x3d'. For X3DOM, filename should end in '.html'.""" if filename.endswith('.x3d'): datatype = 'X3D' elif filename.endswith('.html'): datatype = 'X3DOM' else: raise ValueError("filename must end in '.x3d' or '.html'.") w = WriteToFile(filename, 'w') if datatype == 'X3DOM': w(0, '') w(1, '') w(2, 'ASE atomic visualization') w(2, '') w(2, '') w(2, '') w(1, '') w(1, '') w(2, '') elif datatype == 'X3D': w(0, '') w(0, '') w(0, '') w(3, '') for atom in self._atoms: for indent, line in atom_lines(atom): w(4 + indent, line) w(3, '') if datatype == 'X3DOM': w(2, '') w(1, '') w(0, '') elif datatype == 'X3D': w(0, '') class WriteToFile: """Creates convenience function to write to a file.""" def __init__(self, filename, mode='w'): self._f = paropen(filename, mode) def __call__(self, indent, line): text = ' ' * indent self._f.write(text + line + '\n') def close(self): self._f.close() def atom_lines(atom): """Generates a segment of X3D lines representing an atom.""" x, y, z = atom.position lines = [(0, '' % (x, y, z))] lines += [(1, '')] lines += [(2, '')] color = tuple(jmol_colors[atom.number]) color = 'diffuseColor="%.3f %.3f %.3f"' % color lines += [(3, '' % color)] lines += [(3, '')] lines += [(2, '')] lines += [(2, '' % covalent_radii[atom.number])] lines += [(2, '')] lines += [(1, '')] lines += [(0, '')] return lines ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/xsd.py000066400000000000000000000414341316323560300223240ustar00rootroot00000000000000import numpy as np import xml.etree.ElementTree as ET from xml.dom import minidom from ase import Atoms from ase.utils import basestring def read_xsd(file): if not isinstance(file, basestring): filename = file.name else: filename = file tree = ET.parse(filename) root = tree.getroot() atomtreeroot = root.find('AtomisticTreeRoot') # if periodic system if atomtreeroot.find('SymmetrySystem') is not None: symmetrysystem = atomtreeroot.find('SymmetrySystem') mappingset = symmetrysystem.find('MappingSet') mappingfamily = mappingset.find('MappingFamily') system = mappingfamily.find('IdentityMapping') coords = list() cell = list() formula = str() for atom in system: if atom.tag == 'Atom3d': symbol = atom.get('Components') formula += symbol xyz = atom.get('XYZ') if xyz: coord = [float(coord) for coord in xyz.split(',')] else: coord = [0.0, 0.0, 0.0] coords.append(coord) elif atom.tag == 'SpaceGroup': avec = [float(vec) for vec in atom.get('AVector').split(',')] bvec = [float(vec) for vec in atom.get('BVector').split(',')] cvec = [float(vec) for vec in atom.get('CVector').split(',')] cell.append(avec) cell.append(bvec) cell.append(cvec) atoms = Atoms(formula, cell=cell, pbc=True) atoms.set_scaled_positions(coords) return atoms # if non-periodic system elif atomtreeroot.find('Molecule') is not None: system = atomtreeroot.find('Molecule') coords = list() formula = str() for atom in system: if atom.tag == 'Atom3d': symbol = atom.get('Components') formula += symbol xyz = atom.get('XYZ') coord = [float(coord) for coord in xyz.split(',')] coords.append(coord) atoms = Atoms(formula, pbc=False) atoms.set_scaled_positions(coords) return atoms def CPK_or_BnS(element): """Determine how atom is visualized""" if element in ['C', 'H', 'O', 'S', 'N']: visualization_choice = 'Ball and Stick' else: visualization_choice = 'CPK' return visualization_choice def write_xsd(filename, atoms): """Takes Atoms object, and write materials studio file atoms: Atoms object filename: path of the output file note: material studio file cannot use a partial periodic system. If partial perodic system was inputted, full periodicity was assumed. """ natoms = atoms.get_number_of_atoms() atom_element = atoms.get_chemical_symbols() atom_cell = atoms.get_cell() atom_positions = atoms.get_positions() XSD = ET.Element('XSD') XSD.set('Version', '6.0') AtomisticTreeRootElement = ET.SubElement(XSD, 'AtomisticTreeRoot') AtomisticTreeRootElement.set('ID', '1') AtomisticTreeRootElement.set('NumProperties', '40') AtomisticTreeRootElement.set('NumChildren', '1') Property1 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property1.set('DefinedOn', 'ClassicalEnergyHolder') Property1.set('Name', 'AngleEnergy') Property1.set('Type', 'Double') Property2 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property2.set('DefinedOn', 'ClassicalEnergyHolder') Property2.set('Name', 'BendBendEnergy') Property2.set('Type', 'Double') Property3 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property3.set('DefinedOn', 'ClassicalEnergyHolder') Property3.set('Name', 'BendTorsionBendEnergy') Property3.set('Type', 'Double') Property4 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property4.set('DefinedOn', 'ClassicalEnergyHolder') Property4.set('Name', 'BondEnergy') Property4.set('Type', 'Double') Property5 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property5.set('DefinedOn', 'Atom') Property5.set('Name', 'EFGAsymmetry') Property5.set('Type', 'Double') Property6 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property6.set('DefinedOn', 'Atom') Property6.set('Name', 'EFGQuadrupolarCoupling') Property6.set('Type', 'Double') Property7 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property7.set('DefinedOn', 'ClassicalEnergyHolder') Property7.set('Name', 'ElectrostaticEnergy') Property7.set('Type', 'Double') Property8 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property8.set('DefinedOn', 'GrowthFace') Property8.set('Name', 'FaceMillerIndex') Property8.set('Type', 'MillerIndex') Property9 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property9.set('DefinedOn', 'GrowthFace') Property9.set('Name', 'FacetTransparency') Property9.set('Type', 'Float') Property10 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property10.set('DefinedOn', 'Bondable') Property10.set('Name', 'Force') Property10.set('Type', 'CoDirection') Property11 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property11.set('DefinedOn', 'ClassicalEnergyHolder') Property11.set('Name', 'HydrogenBondEnergy') Property11.set('Type', 'Double') Property12 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property12.set('DefinedOn', 'Bondable') Property12.set('Name', 'ImportOrder') Property12.set('Type', 'UnsignedInteger') Property13 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property13.set('DefinedOn', 'ClassicalEnergyHolder') Property13.set('Name', 'InversionEnergy') Property13.set('Type', 'Double') Property14 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property14.set('DefinedOn', 'Atom') Property14.set('Name', 'IsBackboneAtom') Property14.set('Type', 'Boolean') Property15 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property15.set('DefinedOn', 'Atom') Property15.set('Name', 'IsChiralCenter') Property15.set('Type', 'Boolean') Property16 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property16.set('DefinedOn', 'Atom') Property16.set('Name', 'IsOutOfPlane') Property16.set('Type', 'Boolean') Property17 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property17.set('DefinedOn', 'BestFitLineMonitor') Property17.set('Name', 'LineExtentPadding') Property17.set('Type', 'Double') Property18 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property18.set('DefinedOn', 'Linkage') Property18.set('Name', 'LinkageGroupName') Property18.set('Type', 'String') Property19 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property19.set('DefinedOn', 'PropertyList') Property19.set('Name', 'ListIdentifier') Property19.set('Type', 'String') Property20 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property20.set('DefinedOn', 'Atom') Property20.set('Name', 'NMRShielding') Property20.set('Type', 'Double') Property21 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property21.set('DefinedOn', 'ClassicalEnergyHolder') Property21.set('Name', 'NonBondEnergy') Property21.set('Type', 'Double') Property22 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property22.set('DefinedOn', 'Bondable') Property22.set('Name', 'NormalMode') Property22.set('Type', 'Direction') Property23 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property23.set('DefinedOn', 'Bondable') Property23.set('Name', 'NormalModeFrequency') Property23.set('Type', 'Double') Property24 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property24.set('DefinedOn', 'Bondable') Property24.set('Name', 'OrbitalCutoffRadius') Property24.set('Type', 'Double') Property25 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property25.set('DefinedOn', 'BestFitPlaneMonitor') Property25.set('Name', 'PlaneExtentPadding') Property25.set('Type', 'Double') Property26 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property26.set('DefinedOn', 'ClassicalEnergyHolder') Property26.set('Name', 'PotentialEnergy') Property26.set('Type', 'Double') Property27 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property27.set('DefinedOn', 'ScalarFieldBase') Property27.set('Name', 'QuantizationValue') Property27.set('Type', 'Double') Property28 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property28.set('DefinedOn', 'ClassicalEnergyHolder') Property28.set('Name', 'RestraintEnergy') Property28.set('Type', 'Double') Property29 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property29.set('DefinedOn', 'ClassicalEnergyHolder') Property29.set('Name', 'SeparatedStretchStretchEnergy') Property29.set('Type', 'Double') Property30 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property30.set('DefinedOn', 'Trajectory') Property30.set('Name', 'SimulationStep') Property30.set('Type', 'Integer') Property31 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property31.set('DefinedOn', 'ClassicalEnergyHolder') Property31.set('Name', 'StretchBendStretchEnergy') Property31.set('Type', 'Double') Property32 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property32.set('DefinedOn', 'ClassicalEnergyHolder') Property32.set('Name', 'StretchStretchEnergy') Property32.set('Type', 'Double') Property33 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property33.set('DefinedOn', 'ClassicalEnergyHolder') Property33.set('Name', 'StretchTorsionStretchEnergy') Property33.set('Type', 'Double') Property34 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property34.set('DefinedOn', 'ClassicalEnergyHolder') Property34.set('Name', 'TorsionBendBendEnergy') Property34.set('Type', 'Double') Property35 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property35.set('DefinedOn', 'ClassicalEnergyHolder') Property35.set('Name', 'TorsionEnergy') Property35.set('Type', 'Double') Property36 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property36.set('DefinedOn', 'ClassicalEnergyHolder') Property36.set('Name', 'TorsionStretchEnergy') Property36.set('Type', 'Double') Property37 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property37.set('DefinedOn', 'ClassicalEnergyHolder') Property37.set('Name', 'ValenceCrossTermEnergy') Property37.set('Type', 'Double') Property38 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property38.set('DefinedOn', 'ClassicalEnergyHolder') Property38.set('Name', 'ValenceDiagonalEnergy') Property38.set('Type', 'Double') Property39 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property39.set('DefinedOn', 'ClassicalEnergyHolder') Property39.set('Name', 'VanDerWaalsEnergy') Property39.set('Type', 'Double') Property40 = ET.SubElement(AtomisticTreeRootElement, 'Property') Property40.set('DefinedOn', 'SymmetrySystem') Property40.set('Name', '_Stress') Property40.set('Type', 'Matrix') # non-periodic system if not atoms.pbc.all(): Molecule = ET.SubElement(AtomisticTreeRootElement, 'Molecule') Molecule.set('ID', '2') Molecule.set('NumChildren', str(natoms)) Molecule.set('Name', 'Lattice="1.0') # writing atoms for x in range(0, natoms): NewAtom = ET.SubElement(Molecule, 'Atom3d') NewAtom.set('ID', str(x + 3)) NewAtom.set('Name', (atom_element[x] + str(x + 1))) NewAtom.set('UserID', str(x + 1)) NewAtom.set('DisplayStyle', CPK_or_BnS(atom_element[x])) tmpstr = '' for y in range(3): tmpstr += '%1.16f,' % atom_positions[x, y] NewAtom.set('XYZ', tmpstr[0:-1]) NewAtom.set('Components', atom_element[x]) # periodic system else: atom_positions = np.dot(atom_positions, np.linalg.inv(atom_cell)) SymmSys = ET.SubElement(AtomisticTreeRootElement, 'SymmetrySystem') SymmSys.set('ID', '2') SymmSys.set('Mapping', '3') tmpstr = '' for x in range(4, natoms + 4): tmpstr += '%1.0f,' % (x) tmpstr += str(natoms + 5) SymmSys.set('Children', tmpstr) SymmSys.set('Normalized', '1') SymmSys.set('Name', 'SymmSys') SymmSys.set('UserID', str(natoms + 18)) SymmSys.set('XYZ', '0.00000000000000,0.00000000000000,0.000000000000000') SymmSys.set('OverspecificationTolerance', '0.05') SymmSys.set('PeriodicDisplayType', 'Original') MappngSet = ET.SubElement(SymmSys, 'MappingSet') MappngSet.set('ID', str(natoms + 4)) MappngSet.set('SymmetryDefinition', str(natoms + 5)) MappngSet.set('ActiveSystem', '2') MappngSet.set('NumFamilies', '1') MappngSet.set('OwnsTotalConstraintMapping', '1') MappngSet.set('TotalConstraintMapping', '3') MappngFamily = ET.SubElement(MappngSet, 'MappingFamily') MappngFamily.set('ID', str(natoms + 6)) MappngFamily.set('NumImageMappings', '0') IdentMappng = ET.SubElement(MappngFamily, 'IdentityMapping') IdentMappng.set('ID', str(natoms + 7)) IdentMappng.set('Element', '1,0,0,0,0,1,0,0,0,0,1,0') IdentMappng.set('Constraint', '1,0,0,0,0,1,0,0,0,0,1,0') tmpstr = '' for x in range(4, natoms + 4): tmpstr += '%1.0f,' % (x) IdentMappng.set('MappedObjects', tmpstr[0:-1]) tmpstr = str(natoms + 5) + ',' + str(natoms + 8) IdentMappng.set('DefectObjects', tmpstr) IdentMappng.set('NumImages', str(natoms)) IdentMappng.set('NumDefects', '2') MappngRepairs = ET.SubElement(MappngFamily, 'MappingRepairs') MappngRepairs.set('NumRepairs', '0') # writing atoms for x in range(natoms): NewAtom = ET.SubElement(IdentMappng, 'Atom3d') NewAtom.set('ID', str(x + 4)) NewAtom.set('Mapping', str(natoms + 7)) NewAtom.set('Parent', '2') NewAtom.set('Name', (atom_element[x] + str(x + 1))) NewAtom.set('UserID', str(x + 1)) NewAtom.set('DisplayStyle', CPK_or_BnS(atom_element[x])) tmpstr = '' for y in range(3): tmpstr += '%1.16f,' % atom_positions[x, y] NewAtom.set('XYZ', tmpstr[0:-1]) NewAtom.set('Components', atom_element[x]) SpaceGrp = ET.SubElement(IdentMappng, 'SpaceGroup') SpaceGrp.set('ID', str(natoms + 5)) SpaceGrp.set('Parent', '2') SpaceGrp.set('Children', str(natoms + 8)) SpaceGrp.set('DisplayStyle', 'Solid') SpaceGrp.set('XYZ', '0.00,0.00,0.00') SpaceGrp.set('Color', '0,0,0,0') tmpstr = '' for x in range(3): tmpstr += '%1.16f,' % atom_cell[0, x] SpaceGrp.set('AVector', tmpstr[0:-1]) tmpstr = '' for x in range(3): tmpstr += '%1.16f,' % atom_cell[1, x] SpaceGrp.set('BVector', tmpstr[0:-1]) tmpstr = '' for x in range(3): tmpstr += '%1.16f,' % atom_cell[2, x] SpaceGrp.set('CVector', tmpstr[0:-1]) SpaceGrp.set('OrientationBase', 'C along Z, B in YZ plane') SpaceGrp.set('Centering', '3D Primitive-Centered') SpaceGrp.set('Lattice', '3D Triclinic') SpaceGrp.set('GroupName', 'GroupName') SpaceGrp.set('Operators', '1,0,0,0,0,1,0,0,0,0,1,0') SpaceGrp.set('DisplayRange', '0,1,0,1,0,1') SpaceGrp.set('LineThickness', '2') SpaceGrp.set('CylinderRadius', '0.2') SpaceGrp.set('LabelAxes', '1') SpaceGrp.set('ActiveSystem', '2') SpaceGrp.set('ITNumber', '1') SpaceGrp.set('LongName', 'P 1') SpaceGrp.set('Qualifier', 'Origin-1') SpaceGrp.set('SchoenfliesName', 'C1-1') SpaceGrp.set('System', 'Triclinic') SpaceGrp.set('Class', '1') RecLattc = ET.SubElement(IdentMappng, 'ReciprocalLattice3D') RecLattc.set('ID', str(natoms + 8)) RecLattc.set('Parent', str(natoms + 5)) InfiniteMappng = ET.SubElement(MappngSet, 'InfiniteMapping') InfiniteMappng.set('ID', '3') InfiniteMappng.set('Element', '1,0,0,0,0,1,0,0,0,0,1,0') InfiniteMappng.set('MappedObjects', '2') # check if file is an object or not. if isinstance(filename, basestring): f = open(filename, 'w') else: # Assume it's a 'file-like object' f = filename # Return a pretty-printed XML string for the Element. rough_string = ET.tostring(XSD, 'utf-8') reparsed = minidom.parseString(rough_string) Document = reparsed.toprettyxml(indent='\t') # write f.write(Document) f.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/xsf.py000066400000000000000000000177301316323560300223300ustar00rootroot00000000000000import numpy as np from ase.atoms import Atoms from ase.units import Hartree from ase.parallel import paropen from ase.data import atomic_numbers from ase.calculators.singlepoint import SinglePointCalculator from ase.utils import basestring def write_xsf(fileobj, images, data=None): if isinstance(fileobj, basestring): fileobj = paropen(fileobj, 'w') if hasattr(images, 'get_positions'): images = [images] is_anim = len(images) > 1 if is_anim: fileobj.write('ANIMSTEPS %d\n' % len(images)) numbers = images[0].get_atomic_numbers() pbc = images[0].get_pbc() npbc = sum(pbc) if pbc[2]: fileobj.write('CRYSTAL\n') assert npbc == 3 elif pbc[1]: fileobj.write('SLAB\n') assert npbc == 2 elif pbc[0]: fileobj.write('POLYMER\n') assert npbc == 1 else: # (Header written as part of image loop) assert npbc == 0 cell_variable = False for image in images[1:]: if np.abs(images[0].cell - image.cell).max() > 1e-14: cell_variable = True break for n, atoms in enumerate(images): anim_token = ' %d' % (n + 1) if is_anim else '' if pbc.any(): write_cell = (n == 0 or cell_variable) if write_cell: if cell_variable: fileobj.write('PRIMVEC%s\n' % anim_token) else: fileobj.write('PRIMVEC\n') cell = atoms.get_cell() for i in range(3): fileobj.write(' %.14f %.14f %.14f\n' % tuple(cell[i])) fileobj.write('PRIMCOORD%s\n' % anim_token) else: fileobj.write('ATOMS%s\n' % anim_token) # Get the forces if it's not too expensive: calc = atoms.get_calculator() if (calc is not None and (hasattr(calc, 'calculation_required') and not calc.calculation_required(atoms, ['forces']))): forces = atoms.get_forces() / Hartree else: forces = None pos = atoms.get_positions() if pbc.any(): fileobj.write(' %d 1\n' % len(pos)) for a in range(len(pos)): fileobj.write(' %2d' % numbers[a]) fileobj.write(' %20.14f %20.14f %20.14f' % tuple(pos[a])) if forces is None: fileobj.write('\n') else: fileobj.write(' %20.14f %20.14f %20.14f\n' % tuple(forces[a])) if data is None: return fileobj.write('BEGIN_BLOCK_DATAGRID_3D\n') fileobj.write(' data\n') fileobj.write(' BEGIN_DATAGRID_3Dgrid#1\n') data = np.asarray(data) if data.dtype == complex: data = np.abs(data) shape = data.shape fileobj.write(' %d %d %d\n' % shape) cell = atoms.get_cell() origin = np.zeros(3) for i in range(3): if not pbc[i]: origin += cell[i] / shape[i] fileobj.write(' %f %f %f\n' % tuple(origin)) for i in range(3): # XXXX is this not just supposed to be the cell? # What's with the strange division? # This disagrees with the output of Octopus. Investigate fileobj.write(' %f %f %f\n' % tuple(cell[i] * (shape[i] + 1) / shape[i])) for k in range(shape[2]): for j in range(shape[1]): fileobj.write(' ') fileobj.write(' '.join(['%f' % d for d in data[:, j, k]])) fileobj.write('\n') fileobj.write('\n') fileobj.write(' END_DATAGRID_3D\n') fileobj.write('END_BLOCK_DATAGRID_3D\n') def iread_xsf(fileobj, read_data=False): """Yield images and optionally data from xsf file. Yields image1, image2, ..., imageN[, data]. Images are Atoms objects and data is a numpy array. Presently supports only a single 3D datagrid.""" if isinstance(fileobj, basestring): fileobj = open(fileobj) def _line_generator_func(): for line in fileobj: line = line.strip() if not line or line.startswith('#'): continue # Discard comments and empty lines yield line _line_generator = _line_generator_func() def readline(): return next(_line_generator) line = readline() if line.startswith('ANIMSTEPS'): nimages = int(line.split()[1]) line = readline() else: nimages = 1 if line == 'CRYSTAL': pbc = (True, True, True) elif line == 'SLAB': pbc = (True, True, False) elif line == 'POLYMER': pbc = (True, False, False) else: assert line.startswith('ATOMS'), line # can also be ATOMS 1 pbc = (False, False, False) cell = None for n in range(nimages): if any(pbc): line = readline() if line.startswith('PRIMCOORD'): assert cell is not None # cell read from previous image else: assert line.startswith('PRIMVEC') cell = [] for i in range(3): cell.append([float(x) for x in readline().split()]) line = readline() if line.startswith('CONVVEC'): # ignored; for i in range(3): readline() line = readline() assert line.startswith('PRIMCOORD') natoms = int(readline().split()[0]) lines = [readline() for _ in range(natoms)] else: assert line.startswith('ATOMS'), line line = readline() lines = [] while not (line.startswith('ATOMS') or line.startswith('BEGIN')): lines.append(line) try: line = readline() except StopIteration: break if line.startswith('BEGIN'): # We read "too far" and accidentally got the header # of the data section. This happens only when parsing # ATOMS blocks, because one cannot infer their length. # We will remember the line until later then. data_header_line = line numbers = [] positions = [] for positionline in lines: tokens = positionline.split() symbol = tokens[0] if symbol.isdigit(): numbers.append(int(symbol)) else: numbers.append(atomic_numbers[symbol]) positions.append([float(x) for x in tokens[1:]]) positions = np.array(positions) if len(positions[0]) == 3: forces = None else: forces = positions[:, 3:] * Hartree positions = positions[:, :3] image = Atoms(numbers, positions, cell=cell, pbc=pbc) if forces is not None: image.set_calculator(SinglePointCalculator(image, forces=forces)) yield image if read_data: if any(pbc): line = readline() else: line = data_header_line assert line.startswith('BEGIN_BLOCK_DATAGRID_3D') readline() # name line = readline() assert line.startswith('BEGIN_DATAGRID_3D') shape = [int(x) for x in readline().split()] assert len(shape) == 3 readline() # start # XXX what to do about these? for i in range(3): readline() # Skip 3x3 matrix for some reason npoints = np.prod(shape) data = [] line = readline() # First line of data while not line.startswith('END_DATAGRID_3D'): data.extend([float(x) for x in line.split()]) line = readline() assert len(data) == npoints data = np.array(data, float).reshape(shape[::-1]).T # Note that data array is Fortran-ordered yield data def read_xsf(fileobj, index=-1, read_data=False): images = list(iread_xsf(fileobj, read_data=read_data)) if read_data: array = images[-1] images = images[:-1] return array, images[index] return images[index] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/io/xyz.py000066400000000000000000000022421316323560300223520ustar00rootroot00000000000000"""The functions below are for reference only. We use the implementation from extxyz module, which is backwards compatible with standard XYZ format.""" from ase.atoms import Atoms from ase.io.extxyz import read_extxyz as read_xyz, write_extxyz as write_xyz __all__ = ['read_xyz', 'write_xyz'] def simple_read_xyz(fileobj, index): lines = fileobj.readlines() natoms = int(lines[0]) nimages = len(lines) // (natoms + 2) for i in range(*index.indices(nimages)): symbols = [] positions = [] n = i * (natoms + 2) + 2 for line in lines[n:n + natoms]: symbol, x, y, z = line.split()[:4] symbol = symbol.lower().capitalize() symbols.append(symbol) positions.append([float(x), float(y), float(z)]) yield Atoms(symbols=symbols, positions=positions) def simple_write_xyz(fileobj, images, comment=''): symbols = images[0].get_chemical_symbols() natoms = len(symbols) for atoms in images: fileobj.write('%d\n%s\n' % (natoms, comment)) for s, (x, y, z) in zip(symbols, atoms.positions): fileobj.write('%-2s %22.15f %22.15f %22.15f\n' % (s, x, y, z)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/000077500000000000000000000000001316323560300221645ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/__init__.py000066400000000000000000000003721316323560300242770ustar00rootroot00000000000000import functools import warnings from ase.build.bulk import bulk as newbulk __all__ = ['bulk'] @functools.wraps(newbulk) def bulk(*args, **kwargs): warnings.warn('Use ase.build.bulk() instead', stacklevel=2) return newbulk(*args, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/bravais.py000066400000000000000000000451251316323560300241740ustar00rootroot00000000000000from __future__ import print_function """Bravais.py - class for generating Bravais lattices etc. This is a base class for numerous classes setting up pieces of crystal. """ import math import numpy as np from ase.atoms import Atoms from ase.utils import gcd, basestring import ase.data class Bravais: """Bravais lattice factory. This is a base class for the objects producing various lattices (SC, FCC, ...). """ # The following methods are NOT defined here, but must be defined # in classes inhering from Bravais: # get_lattice_constant # make_crystal_basis # The following class attributes are NOT defined here, but must be defined # in classes inhering from Bravais: # int_basis # inverse_basis other = {0:(1,2), 1:(2,0), 2:(0,1)} # For Bravais lattices with a basis, set the basis here. Leave as # None if no basis is present. bravais_basis = None # If more than one type of element appear in the crystal, give the # order here. For example, if two elements appear in a 3:1 ratio, # bravais_basis could contain four vectors, and element_basis # could be (0,0,1,0) - the third atom in the basis is different # from the other three. Leave as None if all atoms are of the # same type. element_basis = None # How small numbers should be considered zero in the unit cell? chop_tolerance = 1e-10 def __call__(self, symbol, directions=(None,None,None), miller=(None,None,None), size=(1,1,1), latticeconstant=None, pbc=True, align=True, debug=0): "Create a lattice." self.size = size self.pbc = pbc self.debug = debug self.process_element(symbol) self.find_directions(directions, miller) if self.debug: self.print_directions_and_miller() self.convert_to_natural_basis() if self.debug >= 2: self.print_directions_and_miller(" (natural basis)") if latticeconstant is None: if self.element_basis is None: self.latticeconstant = self.get_lattice_constant() else: raise ValueError("A lattice constant must be specified for a compound") else: self.latticeconstant = latticeconstant if self.debug: print("Expected number of atoms in unit cell:", self.calc_num_atoms()) if self.debug >= 2: print("Bravais lattice basis:", self.bravais_basis) if self.bravais_basis is not None: print(" ... in natural basis:", self.natural_bravais_basis) self.make_crystal_basis() self.make_unit_cell() if align: self.align() return self.make_list_of_atoms() def align(self): "Align the first axis along x-axis and the second in the x-y plane." degree = 180/np.pi if self.debug >= 2: print("Basis before alignment:") print(self.basis) if self.basis[0][0]**2 + self.basis[0][2]**2 < 0.01 * self.basis[0][1]**2: # First basis vector along y axis - rotate 90 deg along z t = np.array([[0, -1, 0], [1, 0, 0], [0, 0, 1]], np.float) self.basis = np.dot(self.basis, t) transf = t if self.debug >= 2: print("Rotating -90 degrees around z axis for numerical stability.") print(self.basis) else: transf = np.identity(3, np.float) assert abs(np.linalg.det(transf) - 1) < 1e-6 # Rotate first basis vector into xy plane theta = math.atan2(self.basis[0,2], self.basis[0,0]) t = np.array([[np.cos(theta), 0, -np.sin(theta)], [ 0, 1, 0 ], [np.sin(theta), 0, np.cos(theta) ]]) self.basis = np.dot(self.basis, t) transf = np.dot(transf, t) if self.debug >= 2: print("Rotating %f degrees around y axis." % (-theta*degree,)) print(self.basis) assert abs(np.linalg.det(transf) - 1) < 1e-6 # Rotate first basis vector to point along x axis theta = math.atan2(self.basis[0,1], self.basis[0,0]) t = np.array([[np.cos(theta), -np.sin(theta), 0], [np.sin(theta), np.cos(theta), 0], [ 0, 0, 1]]) self.basis = np.dot(self.basis, t) transf = np.dot(transf, t) if self.debug >= 2: print("Rotating %f degrees around z axis." % (-theta*degree,)) print(self.basis) assert abs(np.linalg.det(transf) - 1) < 1e-6 # Rotate second basis vector into xy plane theta = math.atan2(self.basis[1,2], self.basis[1,1]) t = np.array([[1, 0, 0], [0, np.cos(theta), -np.sin(theta)], [0, np.sin(theta), np.cos(theta)]]) self.basis = np.dot(self.basis, t) transf = np.dot(transf, t) if self.debug >= 2: print("Rotating %f degrees around x axis." % (-theta*degree,)) print(self.basis) assert abs(np.linalg.det(transf) - 1) < 1e-6 # Now we better rotate the atoms as well self.atoms = np.dot(self.atoms, transf) # ... and rotate miller_basis self.miller_basis = np.dot(self.miller_basis, transf) def make_list_of_atoms(self): "Repeat the unit cell." nrep = self.size[0] * self.size[1] * self.size[2] if nrep <= 0: raise ValueError("Cannot create a non-positive number of unit cells") # Now the unit cells must be merged. a2 = [] e2 = [] for i in range(self.size[0]): offset = self.basis[0] * i a2.append(self.atoms + offset[np.newaxis,:]) e2.append(self.elements) atoms = np.concatenate(a2) elements = np.concatenate(e2) a2 = [] e2 = [] for j in range(self.size[1]): offset = self.basis[1] * j a2.append(atoms + offset[np.newaxis,:]) e2.append(elements) atoms = np.concatenate(a2) elements = np.concatenate(e2) a2 = [] e2 = [] for k in range(self.size[2]): offset = self.basis[2] * k a2.append(atoms + offset[np.newaxis,:]) e2.append(elements) atoms = np.concatenate(a2) elements = np.concatenate(e2) del a2, e2 assert len(atoms) == nrep * len(self.atoms) basis = np.array([[self.size[0],0,0], [0,self.size[1],0], [0,0,self.size[2]]]) basis = np.dot(basis, self.basis) # Tiny elements should be replaced by zero. The cutoff is # determined by chop_tolerance which is a class attribute. basis = np.where(np.abs(basis) < self.chop_tolerance, 0.0, basis) # None should be replaced, and memory should be freed. lattice = Lattice(positions=atoms, cell=basis, numbers=elements, pbc=self.pbc) lattice.millerbasis = self.miller_basis # Add info for lattice.surface.AddAdsorbate lattice._addsorbate_info_size = np.array(self.size[:2]) return lattice def process_element(self, element): "Extract atomic number from element" # The types that can be elements: integers and strings if self.element_basis is None: if isinstance(element, basestring): self.atomicnumber = ase.data.atomic_numbers[element] elif isinstance(element, int): self.atomicnumber = element else: raise TypeError("The symbol argument must be a string or an atomic number.") else: atomicnumber = [] try: if len(element) != max(self.element_basis) + 1: oops = True else: oops = False except TypeError: oops = True if oops: raise TypeError( ("The symbol argument must be a sequence of length %d" +" (one for each kind of lattice position") % (max(self.element_basis)+1,)) for e in element: if isinstance(e, basestring): atomicnumber.append(ase.data.atomic_numbers[e]) elif isinstance(e, int): atomicnumber.append(e) else: raise TypeError("The symbols argument must be a sequence of strings or atomic numbers.") self.atomicnumber = [atomicnumber[i] for i in self.element_basis] assert len(self.atomicnumber) == len(self.bravais_basis) def convert_to_natural_basis(self): "Convert directions and miller indices to the natural basis." self.directions = np.dot(self.directions, self.inverse_basis) if self.bravais_basis is not None: self.natural_bravais_basis = np.dot(self.bravais_basis, self.inverse_basis) for i in (0,1,2): self.directions[i] = reduceindex(self.directions[i]) for i in (0,1,2): (j,k) = self.other[i] self.miller[i] = reduceindex(self.handedness * cross(self.directions[j], self.directions[k])) def calc_num_atoms(self): v = int(round(abs(np.linalg.det(self.directions)))) if self.bravais_basis is None: return v else: return v * len(self.bravais_basis) def make_unit_cell(self): "Make the unit cell." # Make three loops, and find the positions in the integral # lattice. Each time a position is found, the atom is placed # in the real unit cell by put_atom(). self.natoms = self.calc_num_atoms() self.nput = 0 self.atoms = np.zeros((self.natoms,3), np.float) self.elements = np.zeros(self.natoms, np.int) self.farpoint = sum(self.directions) # printprogress = self.debug and (len(self.atoms) > 250) # Find the radius of the sphere containing the whole system sqrad = 0 for i in (0,1): for j in (0,1): for k in (0,1): vect = (i * self.directions[0] + j * self.directions[1] + k * self.directions[2]) if np.dot(vect,vect) > sqrad: sqrad = np.dot(vect,vect) del i,j,k # Loop along first crystal axis (i) for (istart, istep) in ((0,1), (-1,-1)): i = istart icont = True while icont: nj = 0 for (jstart, jstep) in ((0,1), (-1,-1)): j = jstart jcont = True while jcont: nk = 0 for (kstart, kstep) in ((0,1), (-1,-1)): k = kstart #print "Starting line i=%d, j=%d, k=%d, step=(%d,%d,%d)" % (i,j,k,istep,jstep,kstep) kcont = True while kcont: # Now (i,j,k) loops over Z^3, except that # the loops can be cut off when we get outside # the unit cell. point = np.array((i,j,k)) if self.inside(point): self.put_atom(point) nk += 1 nj += 1 # Is k too high? if np.dot(point,point) > sqrad: assert not self.inside(point) kcont = False k += kstep # Is j too high? if i*i+j*j > sqrad: jcont = False j += jstep # Is i too high? if i*i > sqrad: icont = False i += istep #if printprogress: # perce = int(100*self.nput / len(self.atoms)) # if perce > percent + 10: # print ("%d%%" % perce), # percent = perce assert(self.nput == self.natoms) def inside(self, point): "Is a point inside the unit cell?" return (np.dot(self.miller[0], point) >= 0 and np.dot(self.miller[0], point - self.farpoint) < 0 and np.dot(self.miller[1], point) >= 0 and np.dot(self.miller[1], point - self.farpoint) < 0 and np.dot(self.miller[2], point) >= 0 and np.dot(self.miller[2], point - self.farpoint) < 0) def put_atom(self, point): "Place an atom given its integer coordinates." if self.bravais_basis is None: # No basis - just place a single atom pos = np.dot(point, self.crystal_basis) if self.debug >= 2: print('Placing an atom at (%d,%d,%d) ~ (%.3f, %.3f, %.3f).' % (tuple(point) + tuple(pos))) self.atoms[self.nput] = pos self.elements[self.nput] = self.atomicnumber self.nput += 1 else: for i, offset in enumerate(self.natural_bravais_basis): pos = np.dot(point + offset, self.crystal_basis) if self.debug >= 2: print('Placing an atom at (%d+%f, %d+%f, %d+%f) ~ ' '(%.3f, %.3f, %.3f).' % (point[0], offset[0], point[1], offset[1], point[2], offset[2], pos[0], pos[1], pos[2])) self.atoms[self.nput] = pos if self.element_basis is None: self.elements[self.nput] = self.atomicnumber else: self.elements[self.nput] = self.atomicnumber[i] self.nput += 1 def find_directions(self, directions, miller): "Find missing directions and miller indices from the specified ones." directions = list(directions) miller = list(miller) # If no directions etc are specified, use a sensible default. if directions == [None, None, None] and miller == [None, None, None]: directions = [[1,0,0], [0,1,0], [0,0,1]] # Now fill in missing directions and miller indices. This is an # iterative process. change = 1 while change: change = False missing = 0 for i in (0, 1, 2): j, k = self.other[i] if directions[i] is None: missing += 1 if miller[j] is not None and miller[k] is not None: directions[i] = reduceindex(cross(miller[j], miller[k])) change = True if self.debug >= 2: print("Calculating directions[%d] from miller indices" % i) if miller[i] is None: missing += 1 if directions[j] is not None and directions[k] is not None: miller[i] = reduceindex(cross(directions[j], directions[k])) change = True if self.debug >= 2: print("Calculating miller[%d] from directions" % i) if missing: raise ValueError("Specification of directions and miller indices is incomplete.") # Make sure that everything is Numeric arrays self.directions = np.array(directions) self.miller = np.array(miller) # Check for zero-volume unit cell if abs(np.linalg.det(self.directions)) < 1e-10: raise ValueError("The direction vectors are linearly dependent (unit cell volume would be zero)") # Check for left-handed coordinate system if np.linalg.det(self.directions) < 0: print("WARNING: Creating a left-handed coordinate system!") self.miller = -self.miller self.handedness = -1 else: self.handedness = 1 # Now check for consistency for i in (0,1,2): (j,k) = self.other[i] m = reduceindex(self.handedness * cross(self.directions[j], self.directions[k])) if sum(np.not_equal(m, self.miller[i])): print("ERROR: Miller index %s is inconsisten with directions %d and %d" % (i,j,k)) print("Miller indices:") print(str(self.miller)) print("Directions:") print(str(self.directions)) raise ValueError("Inconsistent specification of miller indices and directions.") def print_directions_and_miller(self, txt=""): "Print direction vectors and Miller indices." print("Direction vectors of unit cell%s:" % (txt,)) for i in (0, 1, 2): print(" ", self.directions[i]) print("Miller indices of surfaces%s:" % (txt,)) for i in (0, 1, 2): print(" ", self.miller[i]) class MillerInfo: """Mixin class to provide information about Miller indices.""" def miller_to_direction(self, miller): """Returns the direction corresponding to a given Miller index.""" return np.dot(miller, self.millerbasis) class Lattice(Atoms, MillerInfo): """List of atoms initially containing a regular lattice of atoms. A part from the usual list of atoms methods this list of atoms type also has a method, `miller_to_direction`, used to convert from Miller indices to directions in the coordinate system of the lattice. """ pass # Helper functions def cross(a, b): """The cross product of two vectors.""" return np.array((a[1] * b[2] - b[1] * a[2], a[2] * b[0] - b[2] * a[0], a[0] * b[1] - b[0] * a[1])) def reduceindex(M): """Reduce Miller index to the lowest equivalent integers.""" oldM = M g = gcd(M[0], M[1]) h = gcd(g, M[2]) while h != 1: if h == 0: raise ValueError("Division by zero: Are the miller indices linearly dependent?") M = M // h g = gcd(M[0], M[1]) h = gcd(g, M[2]) if np.dot(oldM, M) > 0: return M else: return -M ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/compounds.py000066400000000000000000000154501316323560300245520ustar00rootroot00000000000000"""Function-like objects creating lattices with more than one element. These lattice creators are mainly intended as examples for how to build you own. The following crystal structures are defined: B1 = NaCl = Rocksalt B2 = CsCl B3 = ZnS = Zincblende L1_2 = AuCu3 L1_0 = AuCu TRI_Fe2O3 HEX_Fe2O3 """ from ase.lattice.cubic import DiamondFactory, SimpleCubicFactory from ase.lattice.tetragonal import SimpleTetragonalFactory from ase.lattice.triclinic import TriclinicFactory from ase.lattice.hexagonal import HexagonalFactory # To prevent a layer of element one on one side, and a layer of # element two on the other side, NaCl is based on SimpleCubic instead # of on FaceCenteredCubic class NaClFactory(SimpleCubicFactory): "A factory for creating NaCl (B1, Rocksalt) lattices." bravais_basis = [[0, 0, 0], [0, 0, 0.5], [0, 0.5, 0], [0, 0.5, 0.5], [0.5, 0, 0], [0.5, 0, 0.5], [0.5, 0.5, 0], [0.5, 0.5, 0.5]] element_basis = (0, 1, 1, 0, 1, 0, 0, 1) B1 = NaCl = Rocksalt = NaClFactory() class CsClFactory(SimpleCubicFactory): "A factory for creating CsCl (B2) lattices." bravais_basis = [[0, 0, 0], [0.5, 0.5, 0.5]] element_basis = (0, 1) B2 = CsCl = CsClFactory() # The zincblende structure is easily derived from Diamond, which # already has the right basis. class ZnSFactory(DiamondFactory): "A factory for creating ZnS (B3, Zincblende) lattices." element_basis = (0, 1) B3 = ZnS = Zincblende = ZnSFactory() # The L1_0 structure is "based on FCC", but is a tetragonal distortion # of fcc. It must therefore be derived from the base-centered # tetragonal structure. That structure, however, does not exist, # since it is equivalent to a simple tetragonal structure rotated 45 # degrees along the z-axis. Basing L1_2 on that would however give # unexpected miller indices. L1_2 will therefore be based on a simple # tetragonal structure, but with a basis corresponding to a # base-centered tetragonal. class AuCuFactory(SimpleTetragonalFactory): "A factory for creating AuCu (L1_0) lattices (tetragonal symmetry)." bravais_basis = [[0, 0, 0], [0, 0.5, 0.5], [0.5, 0, 0.5], [0.5, 0.5, 0]] element_basis = (0, 1, 1, 0) AuCu = L1_0 = AuCuFactory() # The L1_2 structure is "based on FCC", but is really simple cubic # with a basis. class AuCu3Factory(SimpleCubicFactory): "A factory for creating AuCu3 (L1_2) lattices." bravais_basis = [[0, 0, 0], [0, 0.5, 0.5], [0.5, 0, 0.5], [0.5, 0.5, 0]] element_basis = (0, 1, 1, 1) AuCu3 = L1_2 = AuCu3Factory() class TriclinicFe2O3Factory(TriclinicFactory): """A factory for creating hematite (Fe2O3) lattices. Rhombohedral unit cell. Pauling L, Hendricks S B Journal of the American Chemical Society 47 (1925) 781-790 Example:: #!/usr/bin/env python from ase.lattice.hexagonal import * from ase.lattice.compounds import * import ase.io as io from ase import Atoms, Atom index1=3 index2=3 index3=3 mya = 5.42 myb = 5.42 myc = 5.42 myalpha = 55.28 mybeta = 55.28 mygamma = 55.28 gra = TRI_Fe2O3(symbol = ('Fe', 'O'), latticeconstant={'a':mya,'b':myb, 'c':myc, 'alpha':myalpha, 'beta':mybeta, 'gamma':mygamma}, size=(index1,index2,index3)) io.write('rhombohedralUC_Fe2O3.xyz', gra, format='xyz') """ bravais_basis = [[0.10534, 0.10534, 0.10534], [0.39466, 0.39466, 0.39466], [0.60534, 0.60534, 0.60534], [0.89466, 0.89466, 0.89466], [0.30569, 0.69431, 0.00000], [0.69431, 0.00000, 0.30569], [0.00000, 0.30569, 0.69431], [0.19431, 0.80569, 0.50000], [0.80569, 0.50000, 0.19431], [0.50000, 0.19431, 0.80569]] element_basis = (0, 0, 0, 0, 1, 1, 1, 1, 1, 1) TRI_Fe2O3 = TriclinicFe2O3Factory() class HexagonalFe2O3Factory(HexagonalFactory): """A factory for creating hematite (Fe2O3) lattices. With hexagonal unit cell. Blake R L, Hessevick R E, Zoltai T, Finger L W American Mineralogist 51 (1966) 123-129 5.038 5.038 13.772 90 90 120 R-3c Fe 0 0 .3553 .0080 .0080 .00029 .0040 0 0 O .3059 0 1/4 .0068 .0083 .00046 .0042 .00058 .0012 Example: #!/usr/bin/env python from ase.lattice.hexagonal import * from ase.lattice.compounds import * import ase.io as io from ase import Atoms, Atom index1=1 index2=1 index3=1 mya = 5.038 myb = 5.038 myc = 13.772 myalpha = 90 mybeta = 90 mygamma = 120 gra = HEX_Fe2O3(symbol = ('Fe', 'O'), latticeconstant={'a':mya,'b':myb, 'c':myc, 'alpha':myalpha, 'beta':mybeta, 'gamma':mygamma}, size=(index1,index2,index3)) io.write('hexaFe2O3.xyz', gra, format='xyz') """ bravais_basis = [[0.000000, 0.000000, 0.355300], [0.000000, 0.000000, 0.144700], [0.000000, 0.000000, 0.644700], [0.000000, 0.000000, 0.855300], [0.666667, 0.333333, 0.688633], [0.666667, 0.333333, 0.478033], [0.666667, 0.333333, 0.978033], [0.666667, 0.333333, 0.188633], [0.333333, 0.666667, 0.021967], [0.333333, 0.666667, 0.811367], [0.333333, 0.666667, 0.311367], [0.333333, 0.666667, 0.521967], # Fe to O here [0.305900, 0.000000, 0.250000], [0.000000, 0.305900, 0.250000], [0.694100, 0.694100, 0.250000], [0.694100, 0.000000, 0.750000], [0.000000, 0.694100, 0.750000], [0.305900, 0.305900, 0.750000], [0.972567, 0.333333, 0.583333], [0.666667, 0.639233, 0.583333], [0.360767, 0.027433, 0.583333], [0.360767, 0.333333, 0.083333], [0.666667, 0.027433, 0.083333], [0.972567, 0.639233, 0.083333], [0.639233, 0.666667, 0.916667], [0.333333, 0.972567, 0.916667], [0.027433, 0.360767, 0.916667], [0.027433, 0.666667, 0.416667], [0.333333, 0.360767, 0.416667], [0.639233, 0.972567, 0.416667]] element_basis = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) HEX_Fe2O3 = HexagonalFe2O3Factory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/cubic.py000066400000000000000000000106401316323560300236240ustar00rootroot00000000000000from __future__ import print_function """Function-like objects creating cubic lattices (SC, FCC, BCC and Diamond). The following lattice creators are defined: SimpleCubic FaceCenteredCubic BodyCenteredCubic Diamond """ from ase.lattice.bravais import Bravais, reduceindex import numpy as np from ase.data import reference_states as _refstate from ase.utils import basestring class SimpleCubicFactory(Bravais): "A factory for creating simple cubic lattices." # The name of the crystal structure in ChemicalElements xtal_name = "sc" # The natural basis vectors of the crystal structure int_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) basis_factor = 1.0 # Converts the natural basis back to the crystallographic basis inverse_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) inverse_basis_factor = 1.0 # For checking the basis volume atoms_in_unit_cell = 1 def get_lattice_constant(self): "Get the lattice constant of an element with cubic crystal structure." if _refstate[self.atomicnumber]['symmetry'] != self.xtal_name: raise ValueError(("Cannot guess the %s lattice constant of" + " an element with crystal structure %s.") % (self.xtal_name, _refstate[self.atomicnumber]['symmetry'])) return _refstate[self.atomicnumber]['a'] def make_crystal_basis(self): "Make the basis matrix for the crystal unit cell and the system unit cell." self.crystal_basis = (self.latticeconstant * self.basis_factor * self.int_basis) self.miller_basis = self.latticeconstant * np.identity(3) self.basis = np.dot(self.directions, self.crystal_basis) self.check_basis_volume() def check_basis_volume(self): "Check the volume of the unit cell." vol1 = abs(np.linalg.det(self.basis)) cellsize = self.atoms_in_unit_cell if self.bravais_basis is not None: cellsize *= len(self.bravais_basis) vol2 = (self.calc_num_atoms() * self.latticeconstant**3 / cellsize) assert abs(vol1-vol2) < 1e-5 def find_directions(self, directions, miller): "Find missing directions and miller indices from the specified ones." directions = list(directions) miller = list(miller) # Process keyword "orthogonal" self.find_ortho(directions) self.find_ortho(miller) Bravais.find_directions(self, directions, miller) def find_ortho(self, idx): "Replace keyword 'ortho' or 'orthogonal' with a direction." for i in range(3): if (isinstance(idx[i], basestring) and (idx[i].lower() == "ortho" or idx[i].lower() == "orthogonal")): if self.debug: print("Calculating orthogonal direction", i) print(idx[i-2], "X", idx[i-1], end=' ') idx[i] = reduceindex(np.cross(idx[i-2], idx[i-1])) if self.debug: print("=", idx[i]) SimpleCubic = SimpleCubicFactory() class FaceCenteredCubicFactory(SimpleCubicFactory): "A factory for creating face-centered cubic lattices." xtal_name = "fcc" int_basis = np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) basis_factor = 0.5 inverse_basis = np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) inverse_basis_factor = 1.0 atoms_in_unit_cell = 4 FaceCenteredCubic = FaceCenteredCubicFactory() class BodyCenteredCubicFactory(SimpleCubicFactory): "A factory for creating body-centered cubic lattices." xtal_name = "bcc" int_basis = np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) basis_factor = 0.5 inverse_basis = np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) inverse_basis_factor = 1.0 atoms_in_unit_cell = 2 BodyCenteredCubic = BodyCenteredCubicFactory() class DiamondFactory(FaceCenteredCubicFactory): "A factory for creating diamond lattices." xtal_name = "diamond" bravais_basis = [[0,0,0], [0.25, 0.25, 0.25]] Diamond = DiamondFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/hexagonal.py000066400000000000000000000100131316323560300244770ustar00rootroot00000000000000from __future__ import print_function """Function-like object creating hexagonal lattices. The following lattice creators are defined: * Hexagonal * HexagonalClosedPacked * Graphite * Graphene Example for using Graphene to create atoms object gra:: from ase.lattice.hexagonal import * import ase.io as io from ase import Atoms, Atom index1=6 index2=7 mya = 2.45 myc = 20.0 gra = Graphene(symbol = 'C',latticeconstant={'a':mya,'c':myc}, size=(index1,index2,1)) io.write('test.xyz', gra, format='xyz') """ from ase.lattice.triclinic import TriclinicFactory class HexagonalFactory(TriclinicFactory): "A factory for creating simple hexagonal lattices." # The name of the crystal structure in ChemicalElements xtal_name = "hexagonal" def make_crystal_basis(self): "Make the basis matrix for the crystal unit cell and the system unit cell." # First convert the basis specification to a triclinic one if isinstance(self.latticeconstant, type({})): self.latticeconstant['alpha'] = 90 self.latticeconstant['beta'] = 90 self.latticeconstant['gamma'] = 120 self.latticeconstant['b/a'] = 1.0 else: if len(self.latticeconstant) == 2: a,c = self.latticeconstant self.latticeconstant = (a,a,c,90,90,120) else: raise ValueError("Improper lattice constants for hexagonal crystal.") TriclinicFactory.make_crystal_basis(self) def find_directions(self, directions, miller): """Find missing directions and miller indices from the specified ones. Also handles the conversion of hexagonal-style 4-index notation to the normal 3-index notation. """ directions = list(directions) miller = list(miller) if miller != [None, None, None]: raise NotImplementedError("Specifying Miller indices of surfaces currently broken for hexagonal crystals.") for obj in (directions,miller): for i in range(3): if obj[i] is not None: (a,b,c,d) = obj[i] if a + b + c != 0: raise ValueError( ("(%d,%d,%d,%d) is not a valid hexagonal Miller " + "index, as the sum of the first three numbers " + "should be zero.") % (a,b,c,d)) x = 4*a + 2*b y = 2*a + 4*b z = 3*d obj[i] = (x,y,z) TriclinicFactory.find_directions(self, directions, miller) def print_directions_and_miller(self, txt=""): "Print direction vectors and Miller indices." print("Direction vectors of unit cell%s:" % (txt,)) for i in (0,1,2): self.print_four_vector("[]", self.directions[i]) print("Miller indices of surfaces%s:" % (txt,)) for i in (0,1,2): self.print_four_vector("()", self.miller[i]) def print_four_vector(self, bracket, numbers): bra, ket = bracket (x,y,z) = numbers a = 2*x - y b = -x + 2*y c = -x -y d = 2*z print(" %s%d, %d, %d%s ~ %s%d, %d, %d, %d%s" % \ (bra,x,y,z,ket, bra,a,b,c,d,ket)) Hexagonal = HexagonalFactory() class HexagonalClosedPackedFactory(HexagonalFactory): "A factory for creating HCP lattices." xtal_name = "hcp" bravais_basis = [[0,0,0], [1.0/3.0, 2.0/3.0, 0.5]] HexagonalClosedPacked = HexagonalClosedPackedFactory() class GraphiteFactory(HexagonalFactory): "A factory for creating graphite lattices." xtal_name = "graphite" bravais_basis = [[0,0,0], [1.0/3.0, 2.0/3.0, 0], [1.0/3.0,2.0/3.0,0.5], [2.0/3.0,1.0/3.0,0.5]] Graphite = GraphiteFactory() class GrapheneFactory(HexagonalFactory): "A factory for creating graphene lattices." xtal_name = "graphene" bravais_basis = [[0,0,0], [1.0/3.0, 2.0/3.0, 0]] Graphene = GrapheneFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/monoclinic.py000066400000000000000000000031371316323560300246740ustar00rootroot00000000000000"""Function-like object creating monoclinic lattices. The following lattice creator is defined: SimpleMonoclinic BaseCenteredMonoclinic """ from ase.lattice.triclinic import TriclinicFactory import numpy as np class SimpleMonoclinicFactory(TriclinicFactory): "A factory for creating simple monoclinic lattices." # The name of the crystal structure in ChemicalElements xtal_name = "monoclinic" def make_crystal_basis(self): "Make the basis matrix for the crystal unit cell and the system unit cell." # First convert the basis specification to a triclinic one if isinstance(self.latticeconstant, type({})): self.latticeconstant['beta'] = 90 self.latticeconstant['gamma'] = 90 else: if len(self.latticeconstant) == 4: self.latticeconstant = self.latticeconstant + (90,90) else: raise ValueError("Improper lattice constants for monoclinic crystal.") TriclinicFactory.make_crystal_basis(self) SimpleMonoclinic = SimpleMonoclinicFactory() class BaseCenteredMonoclinicFactory(SimpleMonoclinicFactory): # The natural basis vectors of the crystal structure int_basis = np.array([[1, -1, 0], [1, 1, 0], [0, 0, 2]]) basis_factor = 0.5 # Converts the natural basis back to the crystallographic basis inverse_basis = np.array([[1, 1, 0], [-1, 1, 0], [0, 0, 1]]) inverse_basis_factor = 1.0 BaseCenteredMonoclinic = BaseCenteredMonoclinicFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/orthorhombic.py000066400000000000000000000125331316323560300252410ustar00rootroot00000000000000from __future__ import print_function """Function-like objects creating orthorhombic lattices. The following lattice creators are defined: SimleOrthorhombic BaseCenteredOrthorhombic BodyCenteredOrthorhombic FaceCenteredOrthorhombic """ from ase.lattice.bravais import Bravais import numpy as np from ase.data import reference_states as _refstate class SimpleOrthorhombicFactory(Bravais): "A factory for creating simple orthorhombic lattices." # The name of the crystal structure in ChemicalElements xtal_name = "orthorhombic" # The natural basis vectors of the crystal structure int_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) basis_factor = 1.0 # Converts the natural basis back to the crystallographic basis inverse_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) inverse_basis_factor = 1.0 def get_lattice_constant(self): "Get the lattice constant of an element with orhtorhombic crystal structure." if _refstate[self.atomicnumber]['symmetry'] != self.xtal_name: raise ValueError(("Cannot guess the %s lattice constant of" + " an element with crystal structure %s.") % (self.xtal_name, _refstate[self.atomicnumber]['symmetry'])) return _refstate[self.atomicnumber].copy() def make_crystal_basis(self): "Make the basis matrix for the crystal unit cell and the system unit cell." lattice = self.latticeconstant if isinstance(lattice, type({})): a = lattice['a'] try: b = lattice['b'] except KeyError: b = a * lattice['b/a'] try: c = lattice['c'] except KeyError: c = a * lattice['c/a'] else: if len(lattice) == 3: (a,b,c) = lattice else: raise ValueError("Improper lattice constants for orthorhombic crystal.") lattice = np.array([[a,0,0],[0,b,0],[0,0,c]]) self.latticeconstant = lattice self.miller_basis = lattice self.crystal_basis = (self.basis_factor * np.dot(self.int_basis, lattice)) self.basis = np.dot(self.directions, self.crystal_basis) self.check_basis_volume() def check_basis_volume(self): "Check the volume of the unit cell." vol1 = abs(np.linalg.det(self.basis)) vol2 = self.calc_num_atoms() * np.linalg.det(self.latticeconstant) if self.bravais_basis is not None: vol2 /= len(self.bravais_basis) if abs(vol1-vol2) > 1e-5: print("WARNING: Got volume %f, expected %f" % (vol1, vol2)) SimpleOrthorhombic = SimpleOrthorhombicFactory() class BaseCenteredOrthorhombicFactory(SimpleOrthorhombicFactory): "A factory for creating base-centered orthorhombic lattices." # The natural basis vectors of the crystal structure int_basis = np.array([[1, -1, 0], [1, 1, 0], [0, 0, 2]]) basis_factor = 0.5 # Converts the natural basis back to the crystallographic basis inverse_basis = np.array([[1, 1, 0], [-1, 1, 0], [0, 0, 1]]) inverse_basis_factor = 1.0 def check_basis_volume(self): "Check the volume of the unit cell." vol1 = abs(np.linalg.det(self.basis)) vol2 = self.calc_num_atoms() * np.linalg.det(self.latticeconstant) / 2.0 if abs(vol1-vol2) > 1e-5: print("WARNING: Got volume %f, expected %f" % (vol1, vol2)) BaseCenteredOrthorhombic = BaseCenteredOrthorhombicFactory() class BodyCenteredOrthorhombicFactory(SimpleOrthorhombicFactory): "A factory for creating body-centered orthorhombic lattices." int_basis = np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) basis_factor = 0.5 inverse_basis = np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) inverse_basis_factor = 1.0 def check_basis_volume(self): "Check the volume of the unit cell." vol1 = abs(np.linalg.det(self.basis)) vol2 = self.calc_num_atoms() * np.linalg.det(self.latticeconstant) / 2.0 if abs(vol1-vol2) > 1e-5: print("WARNING: Got volume %f, expected %f" % (vol1, vol2)) BodyCenteredOrthorhombic = BodyCenteredOrthorhombicFactory() class FaceCenteredOrthorhombicFactory(SimpleOrthorhombicFactory): "A factory for creating face-centered orthorhombic lattices." int_basis = np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]]) basis_factor = 0.5 inverse_basis = np.array([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) inverse_basis_factor = 1.0 def check_basis_volume(self): "Check the volume of the unit cell." vol1 = abs(np.linalg.det(self.basis)) vol2 = self.calc_num_atoms() * np.linalg.det(self.latticeconstant) / 4.0 if abs(vol1-vol2) > 1e-5: print("WARNING: Got volume %f, expected %f" % (vol1, vol2)) FaceCenteredOrthorhombic = FaceCenteredOrthorhombicFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/spacegroup.py000066400000000000000000000002151316323560300247040ustar00rootroot00000000000000import warnings from ase.spacegroup import Spacegroup, crystal __all__ = ['Spacegroup', 'crystal'] warnings.warn('Moved to ase.spacegroup') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/surface.py000066400000000000000000000013751316323560300241740ustar00rootroot00000000000000import warnings from ase.build import (add_adsorbate, add_vacuum, bcc100, bcc110, bcc111, diamond100, diamond111, fcc100, fcc110, fcc111, fcc211, hcp0001, hcp10m10, mx2, hcp0001_root, fcc111_root, bcc111_root, root_surface, root_surface_analysis, surface) __all__ = ['add_adsorbate', 'add_vacuum', 'bcc100', 'bcc110', 'bcc111', 'diamond100', 'diamond111', 'fcc100', 'fcc110', 'fcc111', 'fcc211', 'hcp0001', 'hcp10m10', 'mx2', 'hcp0001_root', 'fcc111_root', 'bcc111_root', 'root_surface', 'root_surface_analysis', 'surface'] warnings.warn('Moved to ase.build') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/tetragonal.py000066400000000000000000000026541316323560300247050ustar00rootroot00000000000000"""Function-like objects creating tetragonal lattices. The following lattice creators are defined: SimleTetragonal CenteredTetragonal """ from ase.lattice.orthorhombic import (SimpleOrthorhombicFactory, BodyCenteredOrthorhombicFactory) class _Tetragonalize: "A mixin class for implementing tetragonal crystals as orthorhombic ones." # The name of the crystal structure in ChemicalElements xtal_name = "tetragonal" def make_crystal_basis(self): lattice = self.latticeconstant if isinstance(lattice, type({})): lattice['b/a'] = 1.0 else: if len(lattice) == 2: lattice = (lattice[0], lattice[0], lattice[1]) else: raise ValueError( 'Improper lattice constants for tetragonal crystal.') self.latticeconstant = lattice self.orthobase.make_crystal_basis(self) class SimpleTetragonalFactory(_Tetragonalize, SimpleOrthorhombicFactory): "A factory for creating simple tetragonal lattices." orthobase = SimpleOrthorhombicFactory SimpleTetragonal = SimpleTetragonalFactory() class CenteredTetragonalFactory(_Tetragonalize, BodyCenteredOrthorhombicFactory): "A factory for creating centered tetragonal lattices." orthobase = BodyCenteredOrthorhombicFactory CenteredTetragonal = CenteredTetragonalFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/lattice/triclinic.py000066400000000000000000000062221316323560300245200ustar00rootroot00000000000000"""Function-like object creating triclinic lattices. The following lattice creator is defined: Triclinic """ from ase.lattice.bravais import Bravais import numpy as np from ase.data import reference_states as _refstate class TriclinicFactory(Bravais): "A factory for creating triclinic lattices." # The name of the crystal structure in ChemicalElements xtal_name = "triclinic" # The natural basis vectors of the crystal structure int_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) basis_factor = 1.0 # Converts the natural basis back to the crystallographic basis inverse_basis = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) inverse_basis_factor = 1.0 def get_lattice_constant(self): "Get the lattice constant of an element with triclinic crystal structure." if _refstate[self.atomicnumber]['symmetry'] != self.xtal_name: raise ValueError(('Cannot guess the %s lattice constant of' + ' an element with crystal structure %s.') % (self.xtal_name, _refstate[self.atomicnumber]['symmetry'])) return _refstate[self.atomicnumber].copy() def make_crystal_basis(self): "Make the basis matrix for the crystal unit cell and the system unit cell." lattice = self.latticeconstant if isinstance(lattice, type({})): a = lattice['a'] try: b = lattice['b'] except KeyError: b = a * lattice['b/a'] try: c = lattice['c'] except KeyError: c = a * lattice['c/a'] alpha = lattice['alpha'] beta = lattice['beta'] gamma = lattice['gamma'] else: if len(lattice) == 6: (a,b,c,alpha,beta,gamma) = lattice else: raise ValueError("Improper lattice constants for triclinic crystal.") degree = np.pi / 180.0 cosa = np.cos(alpha*degree) cosb = np.cos(beta*degree) sinb = np.sin(beta*degree) cosg = np.cos(gamma*degree) sing = np.sin(gamma*degree) lattice = np.array([[a,0,0], [b*cosg, b*sing,0], [c*cosb, c*(cosa-cosb*cosg)/sing, c*np.sqrt(sinb**2 - ((cosa-cosb*cosg)/sing)**2)]]) self.latticeconstant = lattice self.miller_basis = lattice self.crystal_basis = (self.basis_factor * np.dot(self.int_basis, lattice)) self.basis = np.dot(self.directions, self.crystal_basis) assert abs(np.dot(lattice[0],lattice[1]) - a*b*cosg) < 1e-5 assert abs(np.dot(lattice[0],lattice[2]) - a*c*cosb) < 1e-5 assert abs(np.dot(lattice[1],lattice[2]) - b*c*cosa) < 1e-5 assert abs(np.dot(lattice[0],lattice[0]) - a*a) < 1e-5 assert abs(np.dot(lattice[1],lattice[1]) - b*b) < 1e-5 assert abs(np.dot(lattice[2],lattice[2]) - c*c) < 1e-5 Triclinic = TriclinicFactory() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/000077500000000000000000000000001316323560300211375ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/__init__.py000066400000000000000000000003021316323560300232430ustar00rootroot00000000000000"""Molecular Dynamics.""" from ase.md.logger import MDLogger from ase.md.verlet import VelocityVerlet from ase.md.langevin import Langevin __all__ = ['MDLogger', 'VelocityVerlet', 'Langevin'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/fix.py000066400000000000000000000023231316323560300222770ustar00rootroot00000000000000import numpy as np class FixRotation: """Remove rotation from an atoms object. This class is intended as an observer on an atoms class during a molecular dynamics simulation. When it is called, it removes any rotation around the center of mass. It assumes that the system is a (nano)particle with free boundary conditions. Bugs: Should check that the boundary conditions make sense. """ def __init__(self, atoms): self.atoms = atoms def __call__(self): atoms = self.atoms r = atoms.get_positions() - atoms.get_center_of_mass() v = atoms.get_velocities() p = atoms.get_momenta() m = atoms.get_masses() x = r[:,0] y = r[:,1] z = r[:,2] I11 = np.sum(m * (y**2 + z**2)) I22 = np.sum(m * (x**2 + z**2)) I33 = np.sum(m * (x**2 + y**2)) I12 = np.sum(-m * x * y) I13 = np.sum(-m * x * z) I23 = np.sum(-m * y * z) I = np.array([[I11, I12, I13], [I12, I22, I23], [I13, I23, I33]]) w = np.dot(np.linalg.inv(I), np.sum(np.cross(r, p), axis=0)) self.atoms.set_velocities(v - np.cross(w, r)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/langevin.py000066400000000000000000000115461316323560300233230ustar00rootroot00000000000000"""Langevin dynamics class.""" import numpy as np from numpy.random import standard_normal from ase.md.md import MolecularDynamics from ase.parallel import world class Langevin(MolecularDynamics): """Langevin (constant N, V, T) molecular dynamics. Usage: Langevin(atoms, dt, temperature, friction) atoms The list of atoms. dt The time step. temperature The desired temperature, in energy units. friction A friction coefficient, typically 1e-4 to 1e-2. fixcm If True, the position and momentum of the center of mass is kept unperturbed. Default: True. The temperature and friction are normally scalars, but in principle one quantity per atom could be specified by giving an array. RATTLE constraints can be used with these propagators, see: E. V.-Eijnden, and G. Ciccotti, Chem. Phys. Lett. 429, 310 (2006) The propagator is Equation 23 (Eq. 39 if RATTLE constraints are used) of the above reference. That reference also contains another propagator in Eq. 21/34; but that propagator is not quasi-symplectic and gives a systematic offset in the temperature at large time steps. This dynamics accesses the atoms using Cartesian coordinates.""" # Helps Asap doing the right thing. Increment when changing stuff: _lgv_version = 3 def __init__(self, atoms, timestep, temperature, friction, fixcm=True, trajectory=None, logfile=None, loginterval=1, communicator=world): self.temp = temperature self.fr = friction self.fixcm = fixcm # will the center of mass be held fixed? self.communicator = communicator MolecularDynamics.__init__(self, atoms, timestep, trajectory, logfile, loginterval) self.updatevars() def todict(self): d = MolecularDynamics.todict(self) d.update({'temperature': self.temp, 'friction': self.fr, 'fix-cm': self.fixcm}) return d def set_temperature(self, temperature): self.temp = temperature self.updatevars() def set_friction(self, friction): self.fr = friction self.updatevars() def set_timestep(self, timestep): self.dt = timestep self.updatevars() def updatevars(self): dt = self.dt T = self.temp fr = self.fr masses = self.masses sigma = np.sqrt(2 * T * fr / masses) self.c1 = dt / 2. - dt * dt * fr / 8. self.c2 = dt * fr / 2 - dt * dt * fr * fr / 8. self.c3 = np.sqrt(dt) * sigma / 2. - dt**1.5 * fr * sigma / 8. self.c5 = dt**1.5 * sigma / (2 * np.sqrt(3)) self.c4 = fr / 2. * self.c5 # Works in parallel Asap, #GLOBAL number of atoms: self.natoms = self.atoms.get_number_of_atoms() def step(self, f): atoms = self.atoms natoms = len(atoms) # This velocity as well as xi, eta and a few other variables are stored # as attributes, so Asap can do its magic when atoms migrate between # processors. self.v = atoms.get_velocities() self.xi = standard_normal(size=(natoms, 3)) self.eta = standard_normal(size=(natoms, 3)) if self.communicator is not None: self.communicator.broadcast(self.xi, 0) self.communicator.broadcast(self.eta, 0) # First halfstep in the velocity. self.v += (self.c1 * f / self.masses - self.c2 * self.v + self.c3 * self.xi - self.c4 * self.eta) # Full step in positions x = atoms.get_positions() if self.fixcm: old_cm = atoms.get_center_of_mass() # Step: x^n -> x^(n+1) - this applies constraints if any. atoms.set_positions(x + self.dt * self.v + self.c5 * self.eta) if self.fixcm: new_cm = atoms.get_center_of_mass() d = old_cm - new_cm # atoms.translate(d) # Does not respect constraints atoms.set_positions(atoms.get_positions() + d) # recalc velocities after RATTLE constraints are applied self.v = (self.atoms.get_positions() - x - self.c5 * self.eta) / self.dt f = atoms.get_forces(md=True) # Update the velocities self.v += (self.c1 * f / self.masses - self.c2 * self.v + self.c3 * self.xi - self.c4 * self.eta) if self.fixcm: # subtract center of mass vel v_cm = self._get_com_velocity() self.v -= v_cm # Second part of RATTLE taken care of here atoms.set_momenta(self.v * self.masses) return f def _get_com_velocity(self): """Return the center of mass velocity. Internal use only. This function can be reimplemented by Asap. """ return np.dot(self.masses.flatten(), self.v) / self.masses.sum() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/logger.py000066400000000000000000000063351316323560300227770ustar00rootroot00000000000000"""Logging for molecular dynamics.""" import weakref import sys import ase.units as units # ase.parallel imported in __init__ class MDLogger: """Class for logging molecular dynamics simulations. Parameters: dyn: The dynamics. Only a weak reference is kept. atoms: The atoms. logfile: File name or open file, "-" meaning standard output. stress=False: Include stress in log. peratom=False: Write energies per atom. mode="a": How the file is opened if logfile is a filename. """ def __init__(self, dyn, atoms, logfile, header=True, stress=False, peratom=False, mode="a"): import ase.parallel if ase.parallel.rank > 0: logfile="/dev/null" # Only log on master if hasattr(dyn, "get_time"): self.dyn = weakref.proxy(dyn) else: self.dyn = None self.atoms = atoms self.natoms = atoms.get_number_of_atoms() # GLOBAL number of atoms if logfile == "-": self.logfile = sys.stdout self.ownlogfile = False elif hasattr(logfile, "write"): self.logfile = logfile self.ownlogfile = False else: self.logfile = open(logfile, mode, 1) self.ownlogfile = True self.stress = stress self.peratom = peratom if self.dyn is not None: self.hdr = "%-9s " % ("Time[ps]",) self.fmt = "%-9.3f " else: self.hdr = "" self.fmt = "" if self.peratom: self.hdr += "%12s %12s %12s %6s" % ("Etot/N[eV]", "Epot/N[eV]", "Ekin/N[eV]", "T[K]") self.fmt += "%12.4f %12.4f %12.4f %6.1f" else: self.hdr += "%12s %12s %12s %6s" % ("Etot[eV]", "Epot[eV]", "Ekin[eV]", "T[K]") # Choose a sensible number of decimals if self.natoms <= 100: digits = 4 elif self.natoms <= 1000: digits = 3 elif self.natoms <= 10000: digits = 2 else: digits = 1 self.fmt += 3*("%%12.%df " % (digits,)) + " %6.1f" if self.stress: self.hdr += " ---------------------- stress [GPa] -----------------------" self.fmt += 6*" %10.3f" self.fmt += "\n" if header: self.logfile.write(self.hdr+"\n") def __del__(self): self.close() def close(self): if self.ownlogfile: self.logfile.close() def __call__(self): epot = self.atoms.get_potential_energy() ekin = self.atoms.get_kinetic_energy() temp = ekin / (1.5 * units.kB * self.natoms) if self.peratom: epot /= self.natoms ekin /= self.natoms if self.dyn is not None: t = self.dyn.get_time() / (1000*units.fs) dat = (t,) else: dat = () dat += (epot+ekin, epot, ekin, temp) if self.stress: dat += tuple(self.atoms.get_stress() / units.GPa) self.logfile.write(self.fmt % dat) self.logfile.flush() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/md.py000066400000000000000000000026201316323560300221110ustar00rootroot00000000000000"""Molecular Dynamics.""" import warnings import numpy as np from ase.optimize.optimize import Dynamics from ase.md.logger import MDLogger class MolecularDynamics(Dynamics): """Base-class for all MD classes.""" def __init__(self, atoms, timestep, trajectory, logfile=None, loginterval=1): self.dt = timestep Dynamics.__init__(self, atoms, logfile=None, trajectory=trajectory) self.masses = self.atoms.get_masses() if 0 in self.masses: warnings.warn('Zero mass encountered in atoms; this will ' 'likely lead to errors if the massless atoms ' 'are unconstrained.') self.masses.shape = (-1, 1) if logfile: self.attach(MDLogger(dyn=self, atoms=atoms, logfile=logfile), interval=loginterval) def todict(self): return {'type': 'molecular-dynamics', 'md-type': self.__class__.__name__, 'timestep': self.dt} def run(self, steps=50): """Integrate equation of motion.""" f = self.atoms.get_forces(md=True) if not self.atoms.has('momenta'): self.atoms.set_momenta(np.zeros_like(f)) for step in range(steps): f = self.step(f) self.nsteps += 1 self.call_observers() def get_time(self): return self.nsteps * self.dt ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/npt.py000066400000000000000000000766521316323560300223320ustar00rootroot00000000000000from __future__ import print_function '''Constant pressure/stress and temperature dynamics. Combined Nose-Hoover and Parrinello-Rahman dynamics, creating an NPT (or N,stress,T) ensemble. The method is the one proposed by Melchionna et al. [1] and later modified by Melchionna [2]. The differential equations are integrated using a centered difference method [3]. 1. S. Melchionna, G. Ciccotti and B. L. Holian, "Hoover NPT dynamics for systems varying in shape and size", Molecular Physics 78, p. 533 (1993). 2. S. Melchionna, "Constrained systems and statistical distribution", Physical Review E, 61, p. 6165 (2000). 3. B. L. Holian, A. J. De Groot, W. G. Hoover, and C. G. Hoover, "Time-reversible equilibrium and nonequilibrium isothermal-isobaric simulations with centered-difference Stoermer algorithms.", Physical Review A, 41, p. 4552 (1990). ''' import sys import weakref import numpy as np from ase.md.md import MolecularDynamics from ase.utils import basestring linalg = np.linalg # Delayed imports: If the trajectory object is reading a special ASAP version # of HooverNPT, that class is imported from Asap.Dynamics.NPTDynamics. class NPT(MolecularDynamics): '''Constant pressure/stress and temperature dynamics. Combined Nose-Hoover and Parrinello-Rahman dynamics, creating an NPT (or N,stress,T) ensemble. The method is the one proposed by Melchionna et al. [1] and later modified by Melchionna [2]. The differential equations are integrated using a centered difference method [3]. See also NPTdynamics.tex The dynamics object is called with the following parameters: atoms The list of atoms. dt The timestep in units matching eV, A, u. temperature The desired temperature in eV. externalstress The external stress in eV/A^3. Either a symmetric 3x3 tensor, a 6-vector representing the same, or a scalar representing the pressure. Note that the stress is positive in tension whereas the pressure is positive in compression: giving a scalar p is equivalent to giving the tensor (-p, -p, -p, 0, 0, 0). ttime Characteristic timescale of the thermostat. Set to None to disable the thermostat. pfactor A constant in the barostat differential equation. If a characteristic barostat timescale of ptime is desired, set pfactor to ptime^2 * B (where B is the Bulk Modulus). Set to None to disable the barostat. Typical metallic bulk moduli are of the order of 100 GPa or 0.6 eV/A^3. mask=None Optional argument. A tuple of three integers (0 or 1), indicating if the system can change size along the three Cartesian axes. Set to (1,1,1) or None to allow a fully flexible computational box. Set to (1,1,0) to disallow elongations along the z-axis etc. mask may also be specified as a symmetric 3x3 array indicating which strain values may change. Useful parameter values: * The same timestep can be used as in Verlet dynamics, i.e. 5 fs is fine for bulk copper. * The ttime and pfactor are quite critical[4], too small values may cause instabilites and/or wrong fluctuations in T / p. Too large values cause an oscillation which is slow to die. Good values for the characteristic times seem to be 25 fs for ttime, and 75 fs for ptime (used to calculate pfactor), at least for bulk copper with 15000-200000 atoms. But this is not well tested, it is IMPORTANT to monitor the temperature and stress/pressure fluctuations. It has the following methods: run(n) Perform n timesteps. initialize() Estimates the dynamic variables for time=-1 to start the algorithm. This is automatically called before the first timestep. set_stress() Set the external stress. Use with care. It is preferable to set the right value when creating the object. set_mask() Change the mask. Use with care, as you may "freeze" a fluctuation in the strain rate. get_gibbs_free_energy() Gibbs free energy is supposed to be preserved by this dynamics. This is mainly intended as a diagnostic tool. References: 1) S. Melchionna, G. Ciccotti and B. L. Holian, Molecular Physics 78, p. 533 (1993). 2) S. Melchionna, Physical Review E 61, p. 6165 (2000). 3) B. L. Holian, A. J. De Groot, W. G. Hoover, and C. G. Hoover, Physical Review A 41, p. 4552 (1990). 4) F. D. Di Tolla and M. Ronchetti, Physical Review E 48, p. 1726 (1993). ''' classname = "NPT" # Used by the trajectory. _npt_version = 2 # Version number, used for Asap compatibility. def __init__(self, atoms, timestep, temperature, externalstress, ttime, pfactor, mask=None, trajectory=None, logfile=None, loginterval=1): MolecularDynamics.__init__(self, atoms, timestep, trajectory, logfile, loginterval) # self.atoms = atoms # self.timestep = timestep self.zero_center_of_mass_momentum(verbose=1) self.temperature = temperature self.set_stress(externalstress) self.set_mask(mask) self.eta = np.zeros((3, 3), float) self.zeta = 0.0 self.zeta_integrated = 0.0 self.initialized = 0 self.ttime = ttime self.pfactor_given = pfactor self._calculateconstants() self.timeelapsed = 0.0 self.frac_traceless = 1 def set_temperature(self, temperature): self.temperature = temperature self._calculateconstants() def set_stress(self, stress): """Set the applied stress. Must be a symmetric 3x3 tensor, a 6-vector representing a symmetric 3x3 tensor, or a number representing the pressure. """ if isinstance(stress, type(1.0)) or isinstance(stress, type(1)): stress = np.array((-stress, -stress, -stress, 0.0, 0.0, 0.0)) elif stress.shape == (3, 3): if not self._issymmetric(stress): raise ValueError( "The external stress must be a symmetric tensor.") stress = np.array((stress[0, 0], stress[1, 1], stress[2, 2], stress[1, 2], stress[0, 2], stress[0, 1])) elif stress.shape != (6,): raise ValueError("The external stress has the wrong shape.") self.externalstress = stress def set_mask(self, mask): """Set the mask indicating dynamic elements of the computational box. If set to None, all elements may change. If set to a 3-vector of ones and zeros, elements which are zero specify directions along which the size of the computational box cannot change. For example, if mask = (1,1,0) the length of the system along the z-axis cannot change, although xz and yz shear is still possible. To disable shear globally, set the mode to diagonal (not yet implemented). """ if mask is None: mask = np.ones((3,)) if not hasattr(mask, "shape"): mask = np.array(mask) if mask.shape != (3,) and mask.shape != (3, 3): raise RuntimeError('The mask has the wrong shape ' + '(must be a 3-vector or 3x3 matrix)') else: mask = np.not_equal(mask, 0) # Make sure it is 0/1 if mask.shape == (3,): self.mask = np.outer(mask, mask) else: self.mask = mask def set_fraction_traceless(self, fracTraceless): """set what fraction of the traceless part of the force on eta is kept. By setting this to zero, the volume may change but the shape may not. """ self.frac_traceless = fracTraceless def get_strain_rate(self): "Get the strain rate as an upper-triangular 3x3 matrix" return np.array(self.eta, copy=1) def set_strain_rate(self, rate): "Set the strain rate. Must be an upper triangular 3x3 matrix." if not (rate.shape == (3, 3) and self._isuppertriangular(rate)): raise ValueError("Strain rate must be an upper triangular matrix.") self.eta = rate if self.initialized: # Recalculate h_past and eta_past so they match the current value. self._initialize_eta_h() def get_time(self): "Get the elapsed time." return self.timeelapsed def run(self, steps): """Perform a number of time steps.""" if not self.initialized: self.initialize() else: if self.have_the_atoms_been_changed(): raise NotImplementedError( "You have modified the atoms since the last timestep.") for i in range(steps): self.step() self.nsteps += 1 self.call_observers() def have_the_atoms_been_changed(self): "Checks if the user has modified the positions or momenta of the atoms" limit = 1e-10 h = self._getbox() if max(abs((h - self.h).ravel())) > limit: self._warning("The computational box has been modified.") return 1 expected_r = np.dot(self.q + 0.5, h) err = max(abs((expected_r - self.atoms.get_positions()).ravel())) if err > limit: self._warning("The atomic positions have been modified: " + str(err)) return 1 return 0 def step(self): """Perform a single time step. Assumes that the forces and stresses are up to date, and that the positions and momenta have not been changed since last timestep. """ # Assumes the following variables are OK # q_past, q, q_future, p, eta, eta_past, zeta, zeta_past, h, h_past # # q corresponds to the current positions # p must be equal to self.atoms.GetCartesianMomenta() # h must be equal to self.atoms.GetUnitCell() # # print "Making a timestep" dt = self.dt h_future = self.h_past + 2 * dt * np.dot(self.h, self.eta) if self.pfactor_given is None: deltaeta = np.zeros(6, float) else: stress = self.stresscalculator() deltaeta = -2 * dt * (self.pfact * linalg.det(self.h) * (stress - self.externalstress)) if self.frac_traceless == 1: eta_future = self.eta_past + self.mask * self._makeuppertriangular(deltaeta) else: trace_part, traceless_part = self._separatetrace(self._makeuppertriangular(deltaeta)) eta_future = self.eta_past + trace_part + self.frac_traceless * traceless_part deltazeta = 2 * dt * self.tfact * (self.atoms.get_kinetic_energy() - self.desiredEkin) zeta_future = self.zeta_past + deltazeta # Advance time # print "Max change in scaled positions:", max(abs(self.q_future.flat - self.q.flat)) # print "Max change in basis set", max(abs((h_future - self.h).flat)) self.timeelapsed += dt self.h_past = self.h self.h = h_future self.inv_h = linalg.inv(self.h) self.q_past = self.q self.q = self.q_future self._setbox_and_positions(self.h,self.q) self.eta_past = self.eta self.eta = eta_future self.zeta_past = self.zeta self.zeta = zeta_future self._synchronize() # for parallel simulations. self.zeta_integrated += dt * self.zeta force = self.forcecalculator() self._calculate_q_future(force) self.atoms.set_momenta(np.dot(self.q_future-self.q_past, self.h/(2*dt)) * self._getmasses()) # self.stresscalculator() def forcecalculator(self): return self.atoms.get_forces() def stresscalculator(self): return self.atoms.get_stress() def initialize(self): """Initialize the dynamics. The dynamics requires positions etc for the two last times to do a timestep, so the algorithm is not self-starting. This method performs a 'backwards' timestep to generate a configuration before the current. """ # print "Initializing the NPT dynamics." dt = self.dt atoms = self.atoms self.h = self._getbox() if not self._isuppertriangular(self.h): print("I am", self) print("self.h:") print(self.h) print("Min:", min((self.h[1, 0], self.h[2, 0], self.h[2, 1]))) print("Max:", max((self.h[1, 0], self.h[2, 0], self.h[2, 1]))) raise NotImplementedError("Can (so far) only operate on lists of atoms where the computational box is an upper triangular matrix.") self.inv_h = linalg.inv(self.h) # The contents of the q arrays should migrate in parallel simulations. # self._make_special_q_arrays() self.q = np.dot(self.atoms.get_positions(), self.inv_h) - 0.5 # zeta and eta were set in __init__ self._initialize_eta_h() deltazeta = dt * self.tfact * (atoms.get_kinetic_energy() - self.desiredEkin) self.zeta_past = self.zeta - deltazeta self._calculate_q_past_and_future() self.initialized = 1 def get_gibbs_free_energy(self): """Return the Gibb's free energy, which is supposed to be conserved. Requires that the energies of the atoms are up to date. This is mainly intended as a diagnostic tool. If called before the first timestep, Initialize will be called. """ if not self.initialized: self.initialize() n = self._getnatoms() # tretaTeta = sum(diagonal(matrixmultiply(transpose(self.eta), # self.eta))) contractedeta = np.sum((self.eta * self.eta).ravel()) gibbs = (self.atoms.get_potential_energy() + self.atoms.get_kinetic_energy() - np.sum(self.externalstress[0:3]) * linalg.det(self.h) / 3.0) if self.ttime is not None: gibbs += (1.5 * n * self.temperature * (self.ttime * self.zeta)**2 + 3 * self.temperature * (n - 1) * self.zeta_integrated) else: assert self.zeta == 0.0 if self.pfactor_given is not None: gibbs += 0.5 / self.pfact * contractedeta else: assert contractedeta == 0.0 return gibbs def get_center_of_mass_momentum(self): "Get the center of mass momentum." return self.atoms.get_momenta().sum(0) def zero_center_of_mass_momentum(self, verbose=0): "Set the center of mass momentum to zero." cm = self.get_center_of_mass_momentum() abscm = np.sqrt(np.sum(cm * cm)) if verbose and abscm > 1e-4: self._warning( self.classname + ": Setting the center-of-mass momentum to zero " "(was %.6g %.6g %.6g)" % tuple(cm)) self.atoms.set_momenta(self.atoms.get_momenta() - cm / self._getnatoms()) def attach_atoms(self, atoms): """Assign atoms to a restored dynamics object. This function must be called to set the atoms immediately after the dynamics object has been read from a trajectory. """ try: self.atoms except AttributeError: pass else: raise RuntimeError("Cannot call attach_atoms on a dynamics " "which already has atoms.") MolecularDynamics.__init__(self, atoms, self.dt) limit = 1e-6 h = self._getbox() if max(abs((h - self.h).ravel())) > limit: raise RuntimeError("The unit cell of the atoms does not match the unit cell stored in the file.") self.inv_h = linalg.inv(self.h) #self._make_special_q_arrays() self.q = np.dot(self.atoms.get_positions(), self.inv_h) - 0.5 self._calculate_q_past_and_future() self.initialized = 1 def attach(self, function, interval=1, *args, **kwargs): """Attach callback function or trajectory. At every *interval* steps, call *function* with arguments *args* and keyword arguments *kwargs*. If *function* is a trajectory object, its write() method is attached, but if *function* is a BundleTrajectory (or another trajectory supporting set_extra_data(), said method is first used to instruct the trajectory to also save internal data from the NPT dynamics object. """ if hasattr(function, "set_extra_data"): # We are attaching a BundleTrajectory or similar function.set_extra_data("npt_init", WeakMethodWrapper(self, "get_init_data"), once=True) function.set_extra_data("npt_dynamics", WeakMethodWrapper(self, "get_data")) MolecularDynamics.attach(self, function, interval, *args, **kwargs) def get_init_data(self): "Return the data needed to initialize a new NPT dynamics." return {'dt': self.dt, 'temperature': self.temperature, 'desiredEkin': self.desiredEkin, 'externalstress': self.externalstress, 'mask': self.mask, 'ttime': self.ttime, 'tfact': self.tfact, 'pfactor_given': self.pfactor_given, 'pfact': self.pfact, 'frac_traceless': self.frac_traceless} def get_data(self): "Return data needed to restore the state." return {'eta': self.eta, 'eta_past': self.eta_past, 'zeta': self.zeta, 'zeta_past': self.zeta_past, 'zeta_integrated': self.zeta_integrated, 'h': self.h, 'h_past': self.h_past, 'timeelapsed': self.timeelapsed} @classmethod def read_from_trajectory(cls, trajectory, frame=-1, atoms=None): """Read dynamics and atoms from trajectory (Class method). Simultaneously reads the atoms and the dynamics from a BundleTrajectory, including the internal data of the NPT dynamics object (automatically saved when attaching a BundleTrajectory to an NPT object). Arguments: trajectory The filename or an open BundleTrajectory object. frame (optional) Which frame to read. Default: the last. atoms (optional, internal use only) Pre-read atoms. Do not use. """ if isinstance(trajectory, basestring): if trajectory.endswith('/'): trajectory = trajectory[:-1] if trajectory.endswith('.bundle'): from ase.io.bundletrajectory import BundleTrajectory trajectory = BundleTrajectory(trajectory) else: raise ValueError("Cannot open '%': unsupported file format" % trajectory) # trajectory is now a BundleTrajectory object (or compatible) if atoms is None: atoms = trajectory[frame] init_data = trajectory.read_extra_data('npt_init', 0) frame_data = trajectory.read_extra_data('npt_dynamics', frame) dyn = cls(atoms, timestep=init_data['dt'], temperature=init_data['temperature'], externalstress=init_data['externalstress'], ttime=init_data['ttime'], pfactor=init_data['pfactor_given'], mask=init_data['mask']) dyn.desiredEkin = init_data['desiredEkin'] dyn.tfact = init_data['tfact'] dyn.pfact = init_data['pfact'] dyn.frac_traceless = init_data['frac_traceless'] for k, v in frame_data.items(): setattr(dyn, k, v) return (dyn, atoms) def _getbox(self): "Get the computational box." return self.atoms.get_cell() def _getmasses(self): "Get the masses as an Nx1 array." return np.reshape(self.atoms.get_masses(), (-1,1)) # def _getcartesianpositions(self): # "Get the cartesian positions of the atoms" # return self.atoms.get_positions() # def _getmomenta(self): # "Get the (cartesian) momenta of the atoms" # return self.atoms.GetCartesianMomenta() # def _getforces(self): # "Get the (cartesian) forces of the atoms" # return self.atoms.GetCartesianForces() # def _setmomenta(self, momenta): # "Set the (cartesian) momenta of the atoms" # self.atoms.SetCartesianMomenta(momenta) def _separatetrace(self, mat): """return two matrices, one proportional to the identity the other traceless, which sum to the given matrix """ tracePart = ((mat[0][0] + mat[1][1] + mat[2][2]) / 3.) * np.identity(3) return tracePart, mat - tracePart # A number of convenient helper methods def _warning(self, text): "Emit a warning." sys.stderr.write("WARNING: "+text+"\n") sys.stderr.flush() def _calculate_q_future(self, force): "Calculate future q. Needed in Timestep and Initialization." dt = self.dt id3 = np.identity(3) alpha = (dt * dt) * np.dot(force / self._getmasses(), self.inv_h) beta = dt * np.dot(self.h, np.dot(self.eta + 0.5 * self.zeta * id3, self.inv_h)) inv_b = linalg.inv(beta + id3) self.q_future = np.dot(2*self.q + np.dot(self.q_past, beta - id3) + alpha, inv_b) def _calculate_q_past_and_future(self): def ekin(p, m = self.atoms.get_masses()): p2 = np.sum(p*p, -1) return 0.5 * np.sum(p2 / m) / len(m) p0 = self.atoms.get_momenta() m = self._getmasses() p = np.array(p0, copy=1) dt = self.dt for i in range(2): self.q_past = self.q - dt * np.dot(p / m, self.inv_h) self._calculate_q_future(self.atoms.get_forces()) p = np.dot(self.q_future - self.q_past, self.h/(2*dt)) * m e = ekin(p) if e < 1e-5: # The kinetic energy and momenta are virtually zero return p = (p0 - p) + p0 def _initialize_eta_h(self): self.h_past = self.h - self.dt * np.dot(self.h, self.eta) if self.pfactor_given is None: deltaeta = np.zeros(6, float) else: deltaeta = (-self.dt * self.pfact * linalg.det(self.h) * (self.stresscalculator() - self.externalstress)) if self.frac_traceless == 1: self.eta_past = self.eta - self.mask * self._makeuppertriangular(deltaeta) else: trace_part, traceless_part = self._separatetrace(self._makeuppertriangular(deltaeta)) self.eta_past = self.eta - trace_part - self.frac_traceless * traceless_part def _makeuppertriangular(self, sixvector): "Make an upper triangular matrix from a 6-vector." return np.array(((sixvector[0], sixvector[5], sixvector[4]), (0, sixvector[1], sixvector[3]), (0, 0, sixvector[2]))) def _isuppertriangular(self, m): "Check that a matrix is on upper triangular form." return m[1,0] == m[2,0] == m[2,1] == 0.0 def _calculateconstants(self): "(Re)calculate some constants when pfactor, ttime or temperature have been changed." n = self._getnatoms() if self.ttime is None: self.tfact = 0.0 else: self.tfact = 2.0 / (3 * n * self.temperature * self.ttime * self.ttime) if self.pfactor_given is None: self.pfact = 0.0 else: self.pfact = 1.0 / (self.pfactor_given * linalg.det(self._getbox())) # self.pfact = 1.0/(n * self.temperature * self.ptime * self.ptime) self.desiredEkin = 1.5 * (n - 1) * self.temperature def _setbox_and_positions(self, h, q): """Set the computational box and the positions.""" self.atoms.set_cell(h, scale_atoms=True) # Why scale_atoms ... r = np.dot(q + 0.5, h) self.atoms.set_positions(r) # ... they are overwritten here ??? # A few helper methods, which have been placed in separate methods # so they can be replaced in the parallel version. def _synchronize(self): """Synchronizes eta, h and zeta on all processors in a parallel simulation. In a parallel simulation, eta, h and zeta are communicated from the master to all slaves, to prevent numerical noise from causing them to diverge. In a serial simulation, do nothing. """ pass # This is a serial simulation object. Do nothing. def _getnatoms(self): """Get the number of atoms. In a parallel simulation, this is the total number of atoms on all processors. """ return len(self.atoms) def _make_special_q_arrays(self): """Make the arrays used to store data about the atoms. In a parallel simulation, these are migrating arrays. In a serial simulation they are ordinary Numeric arrays. """ natoms = len(self.atoms) self.q = np.zeros((natoms,3), float) self.q_past = np.zeros((natoms,3), float) self.q_future = np.zeros((natoms,3), float) class WeakMethodWrapper: """A weak reference to a method. Create an object storing a weak reference to an instance and the name of the method to call. When called, calls the method. Just storing a weak reference to a bound method would not work, as the bound method object would go away immediately. """ def __init__(self, obj, method): self.obj = weakref.proxy(obj) self.method = method def __call__(self, *args, **kwargs): m = getattr(self.obj, self.method) return m(*args, **kwargs) # class _HooverNPTTrajectory: # """A Trajectory-like object storing data in a HooverNPT object.""" # def InitForWrite(self): # """Does initialization related to write mode.""" # self.CreateDimension('unlim', None) # self.nc.history = 'ASE NPT trajectory' # self.nc.version = '0.1' # self.nc.classname = self.atoms.classname # self.unlim = 0 # self.nc.lengthunit = units.GetLengthUnit() # self.nc.energyunit = units.GetEnergyUnit() # self.conversion = (1, 1) # def InitForWriteOrAppend(self): # """Does initialization related to write and append mode. # Either InitForWrite or InitForReadOrAppend will have been # called before calling this method. # """ # names = copy.copy(self.known_names) # if self.atoms.ttime is None: # del names['ttime'] # if self.atoms.pfactor_given is None: # del names['pfactor_given'] # for d in names.keys(): # def getdata(atoms=self.atoms, name=d): # return getattr(atoms, name) # self.Add(d, data = getdata) # known_names = { # # name shape typecode once units # # ---------------------------------------------------------------- # 'dt': ((), Float, True, (1, -0.5)), # 'temperature': ((), Float, True, (0, 1)), # 'desiredEkin': ((), Float, True, (0, 1)), # 'externalstress': ((6,), Float, True, (-3, 1)), # 'mask': ((3, 3), Float, True, (0, 0)), # 'ttime': ((), Float, True, (1, -0.5)), # 'tfact': ((), Float, True, (-2, 0)), # 'pfactor_given': ((), Float, True, (-1, 0)), # 'pfact': ((), Float, True, (-2, 0)), # 'frac_traceless': ((), Float, True, (0, 0)), # 'eta': ((3, 3), Float, False, (-1, 0.5)), # 'eta_past': ((3, 3), Float, False, (-1, 0.5)), # 'zeta': ((), Float, False, (-1, 0.5)), # 'zeta_past': ((), Float, False, (-1, 0.5)), # 'zeta_integrated': ((), Float, False, (0, 0)), # 'h': ((3, 3), Float, False, (1, 0)), # 'h_past': ((3, 3), Float, False, (1, 0)), # 'timeelapsed': ((), Float, False, (1, -0.5)) # } # # This trajectory does not store a list of atoms # def GetListOfAtoms(self, frame=None): # raise AttributeError, "GetListOfAtoms makes no sense in a HooverNPTTrajectory" # # Instead, we store a dynamics # def GetDynamics(self, frame=None): # """Get a HooverNPT Dynamics object. # If a frame number is not given, the current frame is used. # The variant of the object (ASE HooverNPT, ASAP Serial/Parallel NPT) # will be the same as the stored object. # After getting the dynamics, the atoms should be attached with the # dynamics.attach_atoms(atoms) method. # """ # # Bypass calling the normal constructor # class Dummy: # pass # dyn = Dummy() # dyn.__class__ = self.getClass(self.nc.classname) # vars = self.nc.variables # for q in self.known_names.keys(): # if vars.has_key(q): # once = self.known_names[q][2] # if once: # setattr(dyn, q, vars[q].getValue()) # else: # setattr(dyn, q, vars[q][frame]) # return dyn # def getClass(self, classname): # "Internal function: turns a class name into a class object." # if self.nc.classname == "HooverNPT": # return HooverNPT # else: # raise RuntimeError, ("Cannot create a dynamics of type " # + self.nc.classname) # class HooverNPTTrajectory(_HooverNPTTrajectory,NetCDFTrajectory): # """A Trajectory-like object storing data in a HooverNPT object.""" # def __init__(self, filename, dynamics=None, mode=None, interval=1): # """Open the NetCDF file. # If there is no ``dynamics`` argument, then the file is opened # in read mode - otherwise, write or append mode is used. The # ``interval`` argument determines how often the configurations # are written to file.""" # # Call the original constructor, but passing the dynamics instead of # # the atoms. # if dynamics is not None: # # Prevents a circular reference when the trajectory is attached # # to the dynamics it observes. # dynamics = weakref.proxy(dynamics) # NetCDFTrajectory.__init__(self, filename, # atoms=dynamics, # mode=mode, interval=interval) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/nptberendsen.py000066400000000000000000000153101316323560300242000ustar00rootroot00000000000000"""Berendsen NPT dynamics class.""" import numpy as np from ase.md.nvtberendsen import NVTBerendsen import ase.units as units class NPTBerendsen(NVTBerendsen): """Berendsen (constant N, P, T) molecular dynamics. This dynamics scale the velocities and volumes to maintain a constant pressure and temperature. The shape of the simulation cell is not altered, if that is desired use Inhomogenous_NPTBerendsen. Usage: NPTBerendsen(atoms, timestep, temperature, taut, pressure, taup) atoms The list of atoms. timestep The time step. temperature The desired temperature, in Kelvin. taut Time constant for Berendsen temperature coupling. fixcm If True, the position and momentum of the center of mass is kept unperturbed. Default: True. pressure The desired pressure, in bar (1 bar = 1e5 Pa). taup Time constant for Berendsen pressure coupling. compressibility The compressibility of the material, water 4.57E-5 bar-1, in bar-1 """ def __init__(self, atoms, timestep, temperature, taut=0.5e3 * units.fs, pressure=1.01325, taup=1e3 * units.fs, compressibility=4.57e-5, fixcm=True, trajectory=None, logfile=None, loginterval=1): NVTBerendsen.__init__(self, atoms, timestep, temperature, taut, fixcm, trajectory, logfile, loginterval) self.taup = taup self.pressure = pressure self.compressibility = compressibility def set_taup(self, taut): self.taut = taut def get_taup(self): return self.taut def set_pressure(self, pressure): self.pressure = pressure def get_pressure(self): return self.pressure def set_compressibility(self, compressibility): self.compressibility = compressibility def get_compressibility(self): return self.compressibility def set_timestep(self, timestep): self.dt = timestep def get_timestep(self): return self.dt def scale_positions_and_cell(self): """ Do the Berendsen pressure coupling, scale the atom position and the simulation cell.""" taupscl = self.dt / self.taup stress = self.atoms.get_stress(voigt=False) old_pressure = -stress.trace() / 3 * 1e-5 / units.Pascal scl_pressure = (1.0 - taupscl * self.compressibility / 3.0 * (self.pressure - old_pressure)) #print "old_pressure", old_pressure #print "volume scaling by:", scl_pressure cell = self.atoms.get_cell() cell = scl_pressure * cell self.atoms.set_cell(cell, scale_atoms=True) def step(self, f): """ move one timestep forward using Berenden NPT molecular dynamics.""" NVTBerendsen.scale_velocities(self) self.scale_positions_and_cell() #one step velocity verlet atoms = self.atoms p = self.atoms.get_momenta() p += 0.5 * self.dt * f if self.fixcm: # calculate the center of mass # momentum and subtract it psum = p.sum(axis=0) / float(len(p)) p = p - psum self.atoms.set_positions( self.atoms.get_positions() + self.dt * p / self.atoms.get_masses()[:, np.newaxis]) # We need to store the momenta on the atoms before calculating # the forces, as in a parallel Asap calculation atoms may # migrate during force calculations, and the momenta need to # migrate along with the atoms. For the same reason, we # cannot use self.masses in the line above. self.atoms.set_momenta(p) f = self.atoms.get_forces() atoms.set_momenta(self.atoms.get_momenta() + 0.5 * self.dt * f) return f class Inhomogeneous_NPTBerendsen(NPTBerendsen): """Berendsen (constant N, P, T) molecular dynamics. This dynamics scale the velocities and volumes to maintain a constant pressure and temperature. The size of the unit cell is allowed to change independently in the three directions, but the angles remain constant. Usage: NPTBerendsen(atoms, timestep, temperature, taut, pressure, taup) atoms The list of atoms. timestep The time step. temperature The desired temperature, in Kelvin. taut Time constant for Berendsen temperature coupling. fixcm If True, the position and momentum of the center of mass is kept unperturbed. Default: True. pressure The desired pressure, in bar (1 bar = 1e5 Pa). taup Time constant for Berendsen pressure coupling. compressibility The compressibility of the material, water 4.57E-5 bar-1, in bar-1 mask Specifies which axes participate in the barostat. Default (1, 1, 1) means that all axes participate, set any of them to zero to disable the barostat in that direction. """ def __init__(self, atoms, timestep, temperature, taut=0.5e3 * units.fs, pressure=1.01325, taup=1e3 * units.fs, compressibility=4.57e-5, mask=(1, 1, 1), fixcm=True, trajectory=None, logfile=None, loginterval=1): NPTBerendsen.__init__(self, atoms, timestep, temperature, taut, pressure, taup, compressibility, fixcm, trajectory, logfile, loginterval) self.mask = mask def scale_positions_and_cell(self): """ Do the Berendsen pressure coupling, scale the atom position and the simulation cell.""" taupscl = self.dt * self.compressibility / self.taup / 3.0 stress = - self.atoms.get_stress() * 1e-5 / units.Pascal if stress.shape == (6,): stress = stress[:3] elif stress.shape == (3, 3): stress = [stress[i][i] for i in range(3)] else: raise ValueError('Cannot use a stress tensor of shape ' + str(stress.shape)) pbc = self.atoms.get_pbc() scl_pressurex = 1.0 - taupscl * (self.pressure - stress[0]) \ * pbc[0] * self.mask[0] scl_pressurey = 1.0 - taupscl * (self.pressure - stress[1]) \ * pbc[1] * self.mask[1] scl_pressurez = 1.0 - taupscl * (self.pressure - stress[2]) \ * pbc[2] * self.mask[2] cell = self.atoms.get_cell() cell = np.array([scl_pressurex * cell[0], scl_pressurey * cell[1], scl_pressurez * cell[2]]) self.atoms.set_cell(cell, scale_atoms=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/nvtberendsen.py000066400000000000000000000062221316323560300242100ustar00rootroot00000000000000"""Berendsen NVT dynamics class.""" import numpy as np from ase.md.md import MolecularDynamics from ase.parallel import world class NVTBerendsen(MolecularDynamics): """Berendsen (constant N, V, T) molecular dynamics. Usage: NVTBerendsen(atoms, timestep, temperature, taut, fixcm) atoms The list of atoms. timestep The time step. temperature The desired temperature, in Kelvin. taut Time constant for Berendsen temperature coupling. fixcm If True, the position and momentum of the center of mass is kept unperturbed. Default: True. """ def __init__(self, atoms, timestep, temperature, taut, fixcm=True, trajectory=None, logfile=None, loginterval=1, communicator=world): MolecularDynamics.__init__(self, atoms, timestep, trajectory, logfile, loginterval) self.taut = taut self.temperature = temperature self.fixcm = fixcm # will the center of mass be held fixed? self.communicator = communicator def set_taut(self, taut): self.taut = taut def get_taut(self): return self.taut def set_temperature(self, temperature): self.temperature = temperature def get_temperature(self): return self.temperature def set_timestep(self, timestep): self.dt = timestep def get_timestep(self): return self.dt def scale_velocities(self): """ Do the NVT Berendsen velocity scaling """ tautscl = self.dt / self.taut old_temperature = self.atoms.get_temperature() scl_temperature = np.sqrt(1.0 + (self.temperature / old_temperature - 1.0) * tautscl) # Limit the velocity scaling to reasonable values if scl_temperature > 1.1: scl_temperature = 1.1 if scl_temperature < 0.9: scl_temperature = 0.9 p = self.atoms.get_momenta() p = scl_temperature * p self.atoms.set_momenta(p) return def step(self, f): """Move one timestep forward using Berenden NVT molecular dynamics.""" self.scale_velocities() # one step velocity verlet atoms = self.atoms p = self.atoms.get_momenta() p += 0.5 * self.dt * f if self.fixcm: # calculate the center of mass # momentum and subtract it psum = p.sum(axis=0) / float(len(p)) p = p - psum self.atoms.set_positions( self.atoms.get_positions() + self.dt * p / self.atoms.get_masses()[:, np.newaxis]) # We need to store the momenta on the atoms before calculating # the forces, as in a parallel Asap calculation atoms may # migrate during force calculations, and the momenta need to # migrate along with the atoms. For the same reason, we # cannot use self.masses in the line above. self.atoms.set_momenta(p) f = self.atoms.get_forces() atoms.set_momenta(self.atoms.get_momenta() + 0.5 * self.dt * f) return f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/velocitydistribution.py000066400000000000000000000053041316323560300260110ustar00rootroot00000000000000# VelocityDistributions.py -- set up a velocity distribution """Module for setting up e.g. Maxwell-Boltzmann velocity distributions. Currently, only one function is defined, MaxwellBoltzmannDistribution, which sets the momenta of a list of atoms according to a Maxwell-Boltzmann distribution at a given temperature. """ import numpy as np from ase.parallel import world def _maxwellboltzmanndistribution(masses, temp, communicator=world): # For parallel GPAW simulations, the random velocities should be # distributed. Uses gpaw world communicator as default, but allow # option of specifying other communicator (for ensemble runs) xi = np.random.standard_normal((len(masses), 3)) communicator.broadcast(xi, 0) momenta = xi * np.sqrt(masses * temp)[:, np.newaxis] return momenta def MaxwellBoltzmannDistribution(atoms, temp, communicator=world, force_temp=False): """Sets the momenta to a Maxwell-Boltzmann distribution. temp should be fed in energy units; i.e., for 300 K use temp=300.*units.kB. If force_temp is set to True, it scales the random momenta such that the temperature request is precise. """ momenta = _maxwellboltzmanndistribution(atoms.get_masses(), temp, communicator) atoms.set_momenta(momenta) if force_temp: temp0 = atoms.get_kinetic_energy() / len(atoms) / 1.5 gamma = temp / temp0 atoms.set_momenta(atoms.get_momenta() * np.sqrt(gamma)) def Stationary(atoms): "Sets the center-of-mass momentum to zero." p = atoms.get_momenta() p0 = np.sum(p, 0) # We should add a constant velocity, not momentum, to the atoms m = atoms.get_masses() mtot = np.sum(m) v0 = p0 / mtot p -= v0 * m[:, np.newaxis] atoms.set_momenta(p) def ZeroRotation(atoms): "Sets the total angular momentum to zero by counteracting rigid rotations." # Find the principal moments of inertia and principal axes basis vectors Ip, basis = atoms.get_moments_of_inertia(vectors=True) # Calculate the total angular momentum and transform to principal basis Lp = np.dot(basis, atoms.get_angular_momentum()) # Calculate the rotation velocity vector in the principal basis, avoiding # zero division, and transform it back to the cartesian coordinate system omega = np.dot(np.linalg.inv(basis), np.select([Ip > 0], [Lp / Ip])) # We subtract a rigid rotation corresponding to this rotation vector com = atoms.get_center_of_mass() positions = atoms.get_positions() positions -= com # translate center of mass to origin velocities = atoms.get_velocities() atoms.set_velocities(velocities - np.cross(omega, positions)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/md/verlet.py000066400000000000000000000023641316323560300230170ustar00rootroot00000000000000import numpy as np from ase.md.md import MolecularDynamics class VelocityVerlet(MolecularDynamics): def __init__(self, atoms, dt, trajectory=None, logfile=None, loginterval=1): MolecularDynamics.__init__(self, atoms, dt, trajectory, logfile, loginterval) def step(self, f): p = self.atoms.get_momenta() p += 0.5 * self.dt * f masses = self.atoms.get_masses()[:, np.newaxis] r = self.atoms.get_positions() # if we have constraints then this will do the first part of the # RATTLE algorithm: self.atoms.set_positions(r + self.dt * p / masses) if self.atoms.constraints: p = (self.atoms.get_positions() - r) * masses / self.dt # We need to store the momenta on the atoms before calculating # the forces, as in a parallel Asap calculation atoms may # migrate during force calculations, and the momenta need to # migrate along with the atoms. self.atoms.set_momenta(p, apply_constraint=False) f = self.atoms.get_forces(md=True) # Second part of RATTLE will be done here: self.atoms.set_momenta(self.atoms.get_momenta() + 0.5 * self.dt * f) return f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/neb.py000066400000000000000000000564431316323560300216710ustar00rootroot00000000000000# -*- coding: utf-8 -*- import pickle import sys import threading from math import sqrt import numpy as np import ase.parallel as mpi from ase import Atoms from ase.build import minimize_rotation_and_translation from ase.calculators.calculator import Calculator from ase.calculators.singlepoint import SinglePointCalculator from ase.io import read from ase.optimize import MDMin from ase.geometry import find_mic from ase.utils import basestring class NEB: def __init__(self, images, k=0.1, climb=False, parallel=False, remove_rotation_and_translation=False, world=None, method='aseneb'): """Nudged elastic band. Paper I: G. Henkelman and H. Jonsson, Chem. Phys, 113, 9978 (2000). Paper II: G. Henkelman, B. P. Uberuaga, and H. Jonsson, Chem. Phys, 113, 9901 (2000). Paper III: E. L. Kolsbjerg, M. N. Groves, and B. Hammer, J. Chem. Phys, submitted (2016) images: list of Atoms objects Images defining path from initial to final state. k: float or list of floats Spring constant(s) in eV/Ang. One number or one for each spring. climb: bool Use a climbing image (default is no climbing image). parallel: bool Distribute images over processors. remove_rotation_and_translation: bool TRUE actives NEB-TR for removing translation and rotation during NEB. By default applied non-periodic systems method: string of method Choice betweeen three method: * aseneb: standard ase NEB implementation * improvedtangent: Paper I NEB implementation * eb: Paper III full spring force implementation """ self.images = images self.climb = climb self.parallel = parallel self.natoms = len(images[0]) pbc = images[0].pbc for img in images: if len(img) != self.natoms: raise ValueError('Images have different numbers of atoms') if (pbc != img.pbc).any(): raise ValueError('Images have different boundary conditions') self.nimages = len(images) self.emax = np.nan self.remove_rotation_and_translation = remove_rotation_and_translation if method in ['aseneb', 'eb', 'improvedtangent']: self.method = method else: raise NotImplementedError(method) if isinstance(k, (float, int)): k = [k] * (self.nimages - 1) self.k = list(k) if world is None: world = mpi.world self.world = world if parallel: assert world.size == 1 or world.size % (self.nimages - 2) == 0 def interpolate(self, method='linear', mic=False): if self.remove_rotation_and_translation: minimize_rotation_and_translation(self.images[0], self.images[-1]) interpolate(self.images, mic) if method == 'idpp': self.idpp_interpolate(traj=None, log=None, mic=mic) def idpp_interpolate(self, traj='idpp.traj', log='idpp.log', fmax=0.1, optimizer=MDMin, mic=False, steps=100): d1 = self.images[0].get_all_distances(mic=mic) d2 = self.images[-1].get_all_distances(mic=mic) d = (d2 - d1) / (self.nimages - 1) old = [] for i, image in enumerate(self.images): old.append(image.calc) image.calc = IDPP(d1 + i * d, mic=mic) opt = optimizer(self, trajectory=traj, logfile=log) # BFGS was originally used by the paper, but testing shows that # MDMin results in nearly the same results in 3-4 orders of magnitude # less time. Known working optimizers = BFGS, MDMin, FIRE, HessLBFGS # Internal testing shows BFGS is only needed in situations where MDMIN # cannot converge easily and tends to be obvious on inspection. # # askhl: 3-4 orders of magnitude difference cannot possibly be # true unless something is actually broken. Should it not be # "3-4 times"? opt.run(fmax=fmax, steps=steps) for image, calc in zip(self.images, old): image.calc = calc def get_positions(self): positions = np.empty(((self.nimages - 2) * self.natoms, 3)) n1 = 0 for image in self.images[1:-1]: n2 = n1 + self.natoms positions[n1:n2] = image.get_positions() n1 = n2 return positions def set_positions(self, positions): n1 = 0 for image in self.images[1:-1]: n2 = n1 + self.natoms image.set_positions(positions[n1:n2]) n1 = n2 # Parallel NEB with Jacapo needs this: try: image.get_calculator().set_atoms(image) except AttributeError: pass def get_forces(self): """Evaluate and return the forces.""" images = self.images calculators = [image.calc for image in images if image.calc is not None] if len(set(calculators)) != len(calculators): msg = ('One or more NEB images share the same calculator. ' 'Each image must have its own calculator. ' 'You may wish to use the ase.neb.SingleCalculatorNEB ' 'class instead, although using separate calculators ' 'is recommended.') raise ValueError(msg) forces = np.empty(((self.nimages - 2), self.natoms, 3)) energies = np.empty(self.nimages) if self.remove_rotation_and_translation: # Remove translation and rotation between # images before computing forces: for i in range(1, self.nimages): minimize_rotation_and_translation(images[i - 1], images[i]) if self.method != 'aseneb': energies[0] = images[0].get_potential_energy() energies[-1] = images[-1].get_potential_energy() if not self.parallel: # Do all images - one at a time: for i in range(1, self.nimages - 1): energies[i] = images[i].get_potential_energy() forces[i - 1] = images[i].get_forces() elif self.world.size == 1: def run(image, energies, forces): energies[:] = image.get_potential_energy() forces[:] = image.get_forces() threads = [threading.Thread(target=run, args=(images[i], energies[i:i + 1], forces[i - 1:i])) for i in range(1, self.nimages - 1)] for thread in threads: thread.start() for thread in threads: thread.join() else: # Parallelize over images: i = self.world.rank * (self.nimages - 2) // self.world.size + 1 try: energies[i] = images[i].get_potential_energy() forces[i - 1] = images[i].get_forces() except: # Make sure other images also fail: error = self.world.sum(1.0) raise else: error = self.world.sum(0.0) if error: raise RuntimeError('Parallel NEB failed!') for i in range(1, self.nimages - 1): root = (i - 1) * self.world.size // (self.nimages - 2) self.world.broadcast(energies[i:i + 1], root) self.world.broadcast(forces[i - 1], root) imax = 1 + np.argsort(energies[1:-1])[-1] self.emax = energies[imax] t1 = find_mic(images[1].get_positions() - images[0].get_positions(), images[0].get_cell(), images[0].pbc)[0] if self.method == 'eb': beeline = (images[self.nimages - 1].get_positions() - images[0].get_positions()) beelinelength = np.linalg.norm(beeline) eqlength = beelinelength / (self.nimages - 1) nt1 = np.linalg.norm(t1) for i in range(1, self.nimages - 1): t2 = find_mic(images[i + 1].get_positions() - images[i].get_positions(), images[i].get_cell(), images[i].pbc)[0] nt2 = np.linalg.norm(t2) if self.method == 'eb': # Tangents are bisections of spring-directions # (formula C8 of paper III) tangent = t1 / nt1 + t2 / nt2 # Normalize the tangent vector tangent /= np.linalg.norm(tangent) elif self.method == 'improvedtangent': # Tangents are improved according to formulas 8, 9, 10, # and 11 of paper I. if energies[i + 1] > energies[i] > energies[i - 1]: tangent = t2.copy() elif energies[i + 1] < energies[i] < energies[i - 1]: tangent = t1.copy() else: deltavmax = max(abs(energies[i + 1] - energies[i]), abs(energies[i - 1] - energies[i])) deltavmin = min(abs(energies[i + 1] - energies[i]), abs(energies[i - 1] - energies[i])) if energies[i + 1] > energies[i - 1]: tangent = t2 * deltavmax + t1 * deltavmin else: tangent = t2 * deltavmin + t1 * deltavmax # Normalize the tangent vector tangent /= np.linalg.norm(tangent) else: if i < imax: tangent = t2 elif i > imax: tangent = t1 else: tangent = t1 + t2 tt = np.vdot(tangent, tangent) f = forces[i - 1] ft = np.vdot(f, tangent) if i == imax and self.climb: # imax not affected by the spring forces. The full force # with component along the elestic band converted # (formula 5 of Paper II) if self.method == 'aseneb': f -= 2 * ft / tt * tangent else: f -= 2 * ft * tangent elif self.method == 'eb': f -= ft * tangent # Spring forces # (formula C1, C5, C6 and C7 of Paper III) f1 = -(nt1 - eqlength) * t1 / nt1 * self.k[i - 1] f2 = (nt2 - eqlength) * t2 / nt2 * self.k[i] if self.climb and abs(i - imax) == 1: deltavmax = max(abs(energies[i + 1] - energies[i]), abs(energies[i - 1] - energies[i])) deltavmin = min(abs(energies[i + 1] - energies[i]), abs(energies[i - 1] - energies[i])) f += (f1 + f2) * deltavmin / deltavmax else: f += f1 + f2 elif self.method == 'improvedtangent': f -= ft * tangent # Improved parallel spring force (formula 12 of paper I) f += (nt2 * self.k[i] - nt1 * self.k[i - 1]) * tangent else: f -= ft / tt * tangent f -= np.vdot(t1 * self.k[i - 1] - t2 * self.k[i], tangent) / tt * tangent t1 = t2 nt1 = nt2 return forces.reshape((-1, 3)) def get_potential_energy(self, force_consistent=False): """Return the maximum potential energy along the band. Note that the force_consistent keyword is ignored and is only present for compatibility with ase.Atoms.get_potential_energy.""" return self.emax def __len__(self): # Corresponds to number of optimizable degrees of freedom, i.e. # virtual atom count for the optimization algorithm. return (self.nimages - 2) * self.natoms def _images_(self): # Allows trajectory to convert NEB into several images assert not self.parallel or self.world.size == 1 # (We could collect the atoms objects on master here!) return iter(self.images) class IDPP(Calculator): """Image dependent pair potential. See: Improved initial guess for minimum energy path calculations. Søren Smidstrup, Andreas Pedersen, Kurt Stokbro and Hannes Jónsson Chem. Phys. 140, 214106 (2014) """ implemented_properties = ['energy', 'forces'] def __init__(self, target, mic): Calculator.__init__(self) self.target = target self.mic = mic def calculate(self, atoms, properties, system_changes): Calculator.calculate(self, atoms, properties, system_changes) P = atoms.get_positions() d = [] D = [] for p in P: Di = P - p if self.mic: Di, di = find_mic(Di, atoms.get_cell(), atoms.get_pbc()) else: di = np.sqrt((Di**2).sum(1)) d.append(di) D.append(Di) d = np.array(d) D = np.array(D) dd = d - self.target d.ravel()[::len(d) + 1] = 1 # avoid dividing by zero d4 = d**4 e = 0.5 * (dd**2 / d4).sum() f = -2 * ((dd * (1 - 2 * dd / d) / d**5)[..., np.newaxis] * D).sum(0) self.results = {'energy': e, 'forces': f} class SingleCalculatorNEB(NEB): def __init__(self, images, k=0.1, climb=False): if isinstance(images, basestring): # this is a filename images = read(images) NEB.__init__(self, images, k, climb, False) self.calculators = [None] * self.nimages self.energies_ok = False self.first = True def interpolate(self, initial=0, final=-1, mic=False): """Interpolate linearly between initial and final images.""" if final < 0: final = self.nimages + final n = final - initial pos1 = self.images[initial].get_positions() pos2 = self.images[final].get_positions() dist = (pos2 - pos1) if mic: cell = self.images[initial].get_cell() assert((cell == self.images[final].get_cell()).all()) pbc = self.images[initial].get_pbc() assert((pbc == self.images[final].get_pbc()).all()) dist, D_len = find_mic(dist, cell, pbc) dist /= n for i in range(1, n): self.images[initial + i].set_positions(pos1 + i * dist) def refine(self, steps=1, begin=0, end=-1, mic=False): """Refine the NEB trajectory.""" if end < 0: end = self.nimages + end j = begin n = end - begin for i in range(n): for k in range(steps): self.images.insert(j + 1, self.images[j].copy()) self.calculators.insert(j + 1, None) self.k[j:j + 1] = [self.k[j] * (steps + 1)] * (steps + 1) self.nimages = len(self.images) self.interpolate(j, j + steps + 1, mic=mic) j += steps + 1 def set_positions(self, positions): # new positions -> new forces if self.energies_ok: # restore calculators self.set_calculators(self.calculators[1:-1]) NEB.set_positions(self, positions) def get_calculators(self): """Return the original calculators.""" calculators = [] for i, image in enumerate(self.images): if self.calculators[i] is None: calculators.append(image.get_calculator()) else: calculators.append(self.calculators[i]) return calculators def set_calculators(self, calculators): """Set new calculators to the images.""" self.energies_ok = False self.first = True if not isinstance(calculators, list): calculators = [calculators] * self.nimages n = len(calculators) if n == self.nimages: for i in range(self.nimages): self.images[i].set_calculator(calculators[i]) elif n == self.nimages - 2: for i in range(1, self.nimages - 1): self.images[i].set_calculator(calculators[i - 1]) else: raise RuntimeError( 'len(calculators)=%d does not fit to len(images)=%d' % (n, self.nimages)) def get_energies_and_forces(self): """Evaluate energies and forces and hide the calculators""" if self.energies_ok: return self.emax = -1.e32 def calculate_and_hide(i): image = self.images[i] calc = image.get_calculator() if self.calculators[i] is None: self.calculators[i] = calc if calc is not None: if not isinstance(calc, SinglePointCalculator): self.images[i].set_calculator( SinglePointCalculator( image, energy=image.get_potential_energy(), forces=image.get_forces())) self.emax = min(self.emax, image.get_potential_energy()) if self.first: calculate_and_hide(0) # Do all images - one at a time: for i in range(1, self.nimages - 1): calculate_and_hide(i) if self.first: calculate_and_hide(-1) self.first = False self.energies_ok = True def get_forces(self): self.get_energies_and_forces() return NEB.get_forces(self) def n(self): return self.nimages def write(self, filename): from ase.io.trajectory import Trajectory traj = Trajectory(filename, 'w', self) traj.write() traj.close() def __add__(self, other): for image in other: self.images.append(image) return self def fit0(E, F, R, cell=None, pbc=None): """Constructs curve parameters from the NEB images.""" E = np.array(E) - E[0] n = len(E) Efit = np.empty((n - 1) * 20 + 1) Sfit = np.empty((n - 1) * 20 + 1) s = [0] dR = np.zeros_like(R) for i in range(n): if i < n - 1: dR[i] = R[i + 1] - R[i] if cell is not None and pbc is not None: dR[i], _ = find_mic(dR[i], cell, pbc) s.append(s[i] + sqrt((dR[i]**2).sum())) else: dR[i] = R[i] - R[i - 1] if cell is not None and pbc is not None: dR[i], _ = find_mic(dR[i], cell, pbc) lines = [] dEds0 = None for i in range(n): d = dR[i] if i == 0: ds = 0.5 * s[1] elif i == n - 1: ds = 0.5 * (s[-1] - s[-2]) else: ds = 0.25 * (s[i + 1] - s[i - 1]) d = d / sqrt((d**2).sum()) dEds = -(F[i] * d).sum() x = np.linspace(s[i] - ds, s[i] + ds, 3) y = E[i] + dEds * (x - s[i]) lines.append((x, y)) if i > 0: s0 = s[i - 1] s1 = s[i] x = np.linspace(s0, s1, 20, endpoint=False) c = np.linalg.solve(np.array([(1, s0, s0**2, s0**3), (1, s1, s1**2, s1**3), (0, 1, 2 * s0, 3 * s0**2), (0, 1, 2 * s1, 3 * s1**2)]), np.array([E[i - 1], E[i], dEds0, dEds])) y = c[0] + x * (c[1] + x * (c[2] + x * c[3])) Sfit[(i - 1) * 20:i * 20] = x Efit[(i - 1) * 20:i * 20] = y dEds0 = dEds Sfit[-1] = s[-1] Efit[-1] = E[-1] return s, E, Sfit, Efit, lines class NEBTools: """Class to make many of the common tools for NEB analysis available to the user. Useful for scripting the output of many jobs. Initialize with list of images which make up a single band.""" def __init__(self, images): self._images = images def get_barrier(self, fit=True, raw=False): """Returns the barrier estimate from the NEB, along with the Delta E of the elementary reaction. If fit=True, the barrier is estimated based on the interpolated fit to the images; if fit=False, the barrier is taken as the maximum-energy image without interpolation. Set raw=True to get the raw energy of the transition state instead of the forward barrier.""" s, E, Sfit, Efit, lines = self.get_fit() dE = E[-1] - E[0] if fit: barrier = max(Efit) else: barrier = max(E) if raw: barrier += self._images[0].get_potential_energy() return barrier, dE def plot_band(self, ax=None): """Plots the NEB band on matplotlib axes object 'ax'. If ax=None returns a new figure object.""" if not ax: import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) else: fig = None s, E, Sfit, Efit, lines = self.get_fit() ax.plot(s, E, 'o') for x, y in lines: ax.plot(x, y, '-g') ax.plot(Sfit, Efit, 'k-') ax.set_xlabel('path [$\AA$]') ax.set_ylabel('energy [eV]') Ef = max(Efit) - E[0] Er = max(Efit) - E[-1] dE = E[-1] - E[0] ax.set_title('$E_\mathrm{f} \\approx$ %.3f eV; ' '$E_\mathrm{r} \\approx$ %.3f eV; ' '$\\Delta E$ = %.3f eV' % (Ef, Er, dE)) return fig def get_fmax(self, **kwargs): """Returns fmax, as used by optimizers with NEB.""" neb = NEB(self._images, **kwargs) forces = neb.get_forces() return np.sqrt((forces**2).sum(axis=1).max()) def get_fit(self): """Returns the parameters for fitting images to band.""" images = self._images R = [atoms.positions for atoms in images] E = [atoms.get_potential_energy() for atoms in images] F = [atoms.get_forces() for atoms in images] A = images[0].cell pbc = images[0].pbc s, E, Sfit, Efit, lines = fit0(E, F, R, A, pbc) return s, E, Sfit, Efit, lines NEBtools = NEBTools # backwards compatibility def interpolate(images, mic=False): """Given a list of images, linearly interpolate the positions of the interior images.""" pos1 = images[0].get_positions() pos2 = images[-1].get_positions() d = pos2 - pos1 if mic: d = find_mic(d, images[0].get_cell(), images[0].pbc)[0] d /= (len(images) - 1.0) for i in range(1, len(images) - 1): images[i].set_positions(pos1 + i * d) # Parallel NEB with Jacapo needs this: try: images[i].get_calculator().set_atoms(images[i]) except AttributeError: pass if __name__ == '__main__': # This stuff is used by ASE's GUI import matplotlib.pyplot as plt if sys.version_info[0] == 2: E, F, R, A, pbc = pickle.load(sys.stdin) else: E, F, R, A, pbc = pickle.load(sys.stdin.buffer) symbols = 'X' * len(R[0]) images = [] for e, r, f in zip(E, R, F): atoms = Atoms(symbols, r, cell=A, pbc=pbc) atoms.calc = SinglePointCalculator(atoms, energy=e, forces=f) images.append(atoms) nebtools = NEBtools(images) fig = nebtools.plot_band() plt.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/neighborlist.py000066400000000000000000000143671316323560300236150ustar00rootroot00000000000000from math import sqrt import numpy as np class NeighborList: """Neighbor list object. cutoffs: list of float List of cutoff radii - one for each atom. If the spheres (defined by their cutoff radii) of two atoms overlap, they will be counted as neighbors. skin: float If no atom has moved more than the skin-distance since the last call to the ``update()`` method, then the neighbor list can be reused. This will save some expensive rebuilds of the list, but extra neighbors outside the cutoff will be returned. self_interaction: bool Should an atom return itself as a neighbor? bothways: bool Return all neighbors. Default is to return only "half" of the neighbors. Example:: nl = NeighborList([2.3, 1.7]) nl.update(atoms) indices, offsets = nl.get_neighbors(0) """ def __init__(self, cutoffs, skin=0.3, sorted=False, self_interaction=True, bothways=False): self.cutoffs = np.asarray(cutoffs) + skin self.skin = skin self.sorted = sorted self.self_interaction = self_interaction self.bothways = bothways self.nupdates = 0 def update(self, atoms): """Make sure the list is up to date.""" if self.nupdates == 0: self.build(atoms) return True if ((self.pbc != atoms.get_pbc()).any() or (self.cell != atoms.get_cell()).any() or ((self.positions - atoms.get_positions())**2).sum(1).max() > self.skin**2): self.build(atoms) return True return False def build(self, atoms): """Build the list.""" self.positions = atoms.get_positions() self.pbc = atoms.get_pbc() self.cell = atoms.get_cell() if len(self.cutoffs) != len(atoms): raise ValueError('Wrong number of cutoff radii: {0} != {1}' .format(len(self.cutoffs), len(atoms))) if len(self.cutoffs) > 0: rcmax = self.cutoffs.max() else: rcmax = 0.0 icell = np.linalg.pinv(self.cell) scaled = np.dot(self.positions, icell) scaled0 = scaled.copy() N = [] for i in range(3): if self.pbc[i]: scaled0[:, i] %= 1.0 v = icell[:, i] h = 1 / sqrt(np.dot(v, v)) n = int(2 * rcmax / h) + 1 else: n = 0 N.append(n) offsets = (scaled0 - scaled).round().astype(int) positions0 = atoms.positions + np.dot(offsets, self.cell) natoms = len(atoms) indices = np.arange(natoms) self.nneighbors = 0 self.npbcneighbors = 0 self.neighbors = [np.empty(0, int) for a in range(natoms)] self.displacements = [np.empty((0, 3), int) for a in range(natoms)] for n1 in range(0, N[0] + 1): for n2 in range(-N[1], N[1] + 1): for n3 in range(-N[2], N[2] + 1): if n1 == 0 and (n2 < 0 or n2 == 0 and n3 < 0): continue displacement = np.dot((n1, n2, n3), self.cell) for a in range(natoms): d = positions0 + displacement - positions0[a] i = indices[(d**2).sum(1) < (self.cutoffs + self.cutoffs[a])**2] if n1 == 0 and n2 == 0 and n3 == 0: if self.self_interaction: i = i[i >= a] else: i = i[i > a] self.nneighbors += len(i) self.neighbors[a] = np.concatenate( (self.neighbors[a], i)) disp = np.empty((len(i), 3), int) disp[:] = (n1, n2, n3) disp += offsets[i] - offsets[a] self.npbcneighbors += disp.any(1).sum() self.displacements[a] = np.concatenate( (self.displacements[a], disp)) if self.bothways: neighbors2 = [[] for a in range(natoms)] displacements2 = [[] for a in range(natoms)] for a in range(natoms): for b, disp in zip(self.neighbors[a], self.displacements[a]): neighbors2[b].append(a) displacements2[b].append(-disp) for a in range(natoms): nbs = np.concatenate((self.neighbors[a], neighbors2[a])) disp = np.array(list(self.displacements[a]) + displacements2[a]) # Force correct type and shape for case of no neighbors: self.neighbors[a] = nbs.astype(int) self.displacements[a] = disp.astype(int).reshape((-1, 3)) if self.sorted: for a, i in enumerate(self.neighbors): mask = (i < a) if mask.any(): j = i[mask] offsets = self.displacements[a][mask] for b, offset in zip(j, offsets): self.neighbors[b] = np.concatenate( (self.neighbors[b], [a])) self.displacements[b] = np.concatenate( (self.displacements[b], [-offset])) mask = np.logical_not(mask) self.neighbors[a] = self.neighbors[a][mask] self.displacements[a] = self.displacements[a][mask] self.nupdates += 1 def get_neighbors(self, a): """Return neighbors of atom number a. A list of indices and offsets to neighboring atoms is returned. The positions of the neighbor atoms can be calculated like this:: indices, offsets = nl.get_neighbors(42) for i, offset in zip(indices, offsets): print(atoms.positions[i] + dot(offset, atoms.get_cell())) Notice that if get_neighbors(a) gives atom b as a neighbor, then get_neighbors(b) will not return a as a neighbor - unless bothways=True was used.""" return self.neighbors[a], self.displacements[a] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/000077500000000000000000000000001316323560300223775ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/__init__.py000066400000000000000000000010431316323560300245060ustar00rootroot00000000000000"""Structure optimization. """ from ase.optimize.mdmin import MDMin from ase.optimize.lbfgs import HessLBFGS, LineLBFGS from ase.optimize.fire import FIRE from ase.optimize.lbfgs import LBFGS, LBFGSLineSearch from ase.optimize.bfgslinesearch import BFGSLineSearch from ase.optimize.bfgs import BFGS from ase.optimize.oldqn import GoodOldQuasiNewton QuasiNewton = BFGSLineSearch __all__ = ['MDMin', 'HessLBFGS', 'LineLBFGS', 'FIRE', 'LBFGS', 'LBFGSLineSearch', 'BFGSLineSearch', 'BFGS', 'GoodOldQuasiNewton', 'QuasiNewton'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/basin.py000066400000000000000000000110511316323560300240430ustar00rootroot00000000000000import numpy as np from ase.optimize.optimize import Dynamics from ase.optimize.fire import FIRE from ase.units import kB from ase.parallel import world from ase.io.trajectory import Trajectory from ase.utils import basestring class BasinHopping(Dynamics): """Basin hopping algorithm. After Wales and Doye, J. Phys. Chem. A, vol 101 (1997) 5111-5116 and David J. Wales and Harold A. Scheraga, Science, Vol. 285, 1368 (1999) """ def __init__(self, atoms, temperature=100 * kB, optimizer=FIRE, fmax=0.1, dr=0.1, logfile='-', trajectory='lowest.traj', optimizer_logfile='-', local_minima_trajectory='local_minima.traj', adjust_cm=True): """Parameters: atoms: Atoms object The Atoms object to operate on. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. """ self.kT = temperature self.optimizer = optimizer self.fmax = fmax self.dr = dr if adjust_cm: self.cm = atoms.get_center_of_mass() else: self.cm = None self.optimizer_logfile = optimizer_logfile self.lm_trajectory = local_minima_trajectory if isinstance(local_minima_trajectory, basestring): self.lm_trajectory = Trajectory(local_minima_trajectory, 'w', atoms) Dynamics.__init__(self, atoms, logfile, trajectory) self.initialize() def todict(self): d = {'type': 'optimization', 'optimizer': self.__class__.__name__, 'local-minima-optimizer': self.optimizer.__name__, 'temperature': self.kT, 'max-force': self.fmax, 'maximal-step-width': self.dr} return d def initialize(self): self.positions = 0.0 * self.atoms.get_positions() self.Emin = self.get_energy(self.atoms.get_positions()) or 1.e32 self.rmin = self.atoms.get_positions() self.positions = self.atoms.get_positions() self.call_observers() self.log(-1, self.Emin, self.Emin) def run(self, steps): """Hop the basins for defined number of steps.""" ro = self.positions Eo = self.get_energy(ro) for step in range(steps): En = None while En is None: rn = self.move(ro) En = self.get_energy(rn) if En < self.Emin: # new minimum found self.Emin = En self.rmin = self.atoms.get_positions() self.call_observers() self.log(step, En, self.Emin) accept = np.exp((Eo - En) / self.kT) > np.random.uniform() if accept: ro = rn.copy() Eo = En def log(self, step, En, Emin): if self.logfile is None: return name = self.__class__.__name__ self.logfile.write('%s: step %d, energy %15.6f, emin %15.6f\n' % (name, step, En, Emin)) self.logfile.flush() def move(self, ro): """Move atoms by a random step.""" atoms = self.atoms # displace coordinates disp = np.random.uniform(-1., 1., (len(atoms), 3)) rn = ro + self.dr * disp atoms.set_positions(rn) if self.cm is not None: cm = atoms.get_center_of_mass() atoms.translate(self.cm - cm) rn = atoms.get_positions() world.broadcast(rn, 0) atoms.set_positions(rn) return atoms.get_positions() def get_minimum(self): """Return minimal energy and configuration.""" atoms = self.atoms.copy() atoms.set_positions(self.rmin) return self.Emin, atoms def get_energy(self, positions): """Return the energy of the nearest local minimum.""" if np.sometrue(self.positions != positions): self.positions = positions self.atoms.set_positions(positions) opt = self.optimizer(self.atoms, logfile=self.optimizer_logfile) opt.run(fmax=self.fmax) if self.lm_trajectory is not None: self.lm_trajectory.write(self.atoms) self.energy = self.atoms.get_potential_energy() return self.energy ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/bfgs.py000066400000000000000000000100271316323560300236720ustar00rootroot00000000000000# -*- coding: utf-8 -*- import warnings import numpy as np from numpy.linalg import eigh from ase.optimize.optimize import Optimizer from ase.utils import basestring class BFGS(Optimizer): def __init__(self, atoms, restart=None, logfile='-', trajectory=None, maxstep=0.04, master=None): """BFGS optimizer. Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. maxstep: float Used to set the maximum distance an atom can move per iteration (default value is 0.04 Ã…). master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. """ if maxstep > 1.0: warnings.warn('You are using a much too large value for ' 'the maximum step size: %.1f Ã…' % maxstep) self.maxstep = maxstep Optimizer.__init__(self, atoms, restart, logfile, trajectory, master) def todict(self): d = Optimizer.todict(self) if hasattr(self, 'maxstep'): d.update(maxstep=self.maxstep) return d def initialize(self): self.H = None self.r0 = None self.f0 = None def read(self): self.H, self.r0, self.f0, self.maxstep = self.load() def step(self, f): atoms = self.atoms r = atoms.get_positions() f = f.reshape(-1) self.update(r.flat, f, self.r0, self.f0) omega, V = eigh(self.H) dr = np.dot(V, np.dot(f, V) / np.fabs(omega)).reshape((-1, 3)) steplengths = (dr**2).sum(1)**0.5 dr = self.determine_step(dr, steplengths) atoms.set_positions(r + dr) self.r0 = r.flat.copy() self.f0 = f.copy() self.dump((self.H, self.r0, self.f0, self.maxstep)) def determine_step(self, dr, steplengths): """Determine step to take according to maxstep Normalize all steps as the largest step. This way we still move along the eigendirection. """ maxsteplength = np.max(steplengths) if maxsteplength >= self.maxstep: dr *= self.maxstep / maxsteplength return dr def update(self, r, f, r0, f0): if self.H is None: self.H = np.eye(3 * len(self.atoms)) * 70.0 return dr = r - r0 if np.abs(dr).max() < 1e-7: # Same configuration again (maybe a restart): return df = f - f0 a = np.dot(dr, df) dg = np.dot(self.H, dr) b = np.dot(dr, dg) self.H -= np.outer(df, df) / a + np.outer(dg, dg) / b def replay_trajectory(self, traj): """Initialize hessian from old trajectory.""" if isinstance(traj, basestring): from ase.io.trajectory import Trajectory traj = Trajectory(traj, 'r') self.H = None atoms = traj[0] r0 = atoms.get_positions().ravel() f0 = atoms.get_forces().ravel() for atoms in traj: r = atoms.get_positions().ravel() f = atoms.get_forces().ravel() self.update(r, f, r0, f0) r0 = r f0 = f self.r0 = r0 self.f0 = f0 class oldBFGS(BFGS): def determine_step(self, dr, steplengths): """Old BFGS behaviour for scaling step lengths This keeps the behaviour of truncating individual steps. Some might depend of this as some absurd kind of stimulated annealing to find the global minimum. """ dr /= np.maximum(steplengths / self.maxstep, 1.0).reshape(-1, 1) return dr ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/bfgslinesearch.py000066400000000000000000000175341316323560300257420ustar00rootroot00000000000000from __future__ import print_function # ******NOTICE*************** # optimize.py module by Travis E. Oliphant # # You may copy and use this module as you see fit with no # guarantee implied provided you keep this notice in all copies. # *****END NOTICE************ import time import numpy as np from numpy import eye, absolute, sqrt, isinf from ase.utils.linesearch import LineSearch from ase.optimize.optimize import Optimizer from ase.utils import basestring # These have been copied from Numeric's MLab.py # I don't think they made the transition to scipy_core # Modified from scipy_optimize abs = absolute pymin = min pymax = max __version__ = '0.1' class BFGSLineSearch(Optimizer): def __init__(self, atoms, restart=None, logfile='-', maxstep=.2, trajectory=None, c1=0.23, c2=0.46, alpha=10.0, stpmax=50.0, master=None, force_consistent=None): """Optimize atomic positions in the BFGSLineSearch algorithm, which uses both forces and potential energy information. Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. maxstep: float Used to set the maximum distance an atom can move per iteration (default value is 0.2 Angstroms). logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). By default (force_consistent=None) uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. """ self.maxstep = maxstep self.stpmax = stpmax self.alpha = alpha self.H = None self.c1 = c1 self.c2 = c2 self.force_calls = 0 self.function_calls = 0 self.r0 = None self.g0 = None self.e0 = None self.load_restart = False self.task = 'START' self.rep_count = 0 self.p = None self.alpha_k = None self.no_update = False self.replay = False Optimizer.__init__(self, atoms, restart, logfile, trajectory, master, force_consistent) def read(self): self.r0, self.g0, self.e0, self.task, self.H = self.load() self.load_restart = True def reset(self): print('reset') self.H = None self.r0 = None self.g0 = None self.e0 = None self.rep_count = 0 def step(self, f): atoms = self.atoms from ase.neb import NEB if isinstance(atoms, NEB): raise TypeError('NEB calculations cannot use the BFGSLineSearch' ' optimizer. Use BFGS or another optimizer.') r = atoms.get_positions() r = r.reshape(-1) g = -f.reshape(-1) / self.alpha p0 = self.p self.update(r, g, self.r0, self.g0, p0) # o,v = np.linalg.eigh(self.B) e = self.func(r) self.p = -np.dot(self.H, g) p_size = np.sqrt((self.p**2).sum()) if p_size <= np.sqrt(len(atoms) * 1e-10): self.p /= (p_size / np.sqrt(len(atoms)*1e-10)) ls = LineSearch() self.alpha_k, e, self.e0, self.no_update = \ ls._line_search(self.func, self.fprime, r, self.p, g, e, self.e0, maxstep=self.maxstep, c1=self.c1, c2=self.c2, stpmax=self.stpmax) if self.alpha_k is None: raise RuntimeError("LineSearch failed!") dr = self.alpha_k * self.p atoms.set_positions((r + dr).reshape(len(atoms), -1)) self.r0 = r self.g0 = g self.dump((self.r0, self.g0, self.e0, self.task, self.H)) def update(self, r, g, r0, g0, p0): self.I = eye(len(self.atoms) * 3, dtype=int) if self.H is None: self.H = eye(3 * len(self.atoms)) # self.B = np.linalg.inv(self.H) return else: dr = r - r0 dg = g - g0 # self.alpha_k can be None!!! if not (((self.alpha_k or 0) > 0 and abs(np.dot(g, p0)) - abs(np.dot(g0, p0)) < 0) or self.replay): return if self.no_update is True: print('skip update') return try: # this was handled in numeric, let it remain for more safety rhok = 1.0 / (np.dot(dg, dr)) except ZeroDivisionError: rhok = 1000.0 print("Divide-by-zero encountered: rhok assumed large") if isinf(rhok): # this is patch for np rhok = 1000.0 print("Divide-by-zero encountered: rhok assumed large") A1 = self.I - dr[:, np.newaxis] * dg[np.newaxis, :] * rhok A2 = self.I - dg[:, np.newaxis] * dr[np.newaxis, :] * rhok self.H = (np.dot(A1, np.dot(self.H, A2)) + rhok * dr[:, np.newaxis] * dr[np.newaxis, :]) # self.B = np.linalg.inv(self.H) def func(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.function_calls += 1 # Scale the problem as SciPy uses I as initial Hessian. return (self.atoms.get_potential_energy( force_consistent=self.force_consistent) / self.alpha) def fprime(self, x): """Gradient of the objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.force_calls += 1 # Remember that forces are minus the gradient! # Scale the problem as SciPy uses I as initial Hessian. f = self.atoms.get_forces().reshape(-1) return - f / self.alpha def replay_trajectory(self, traj): """Initialize hessian from old trajectory.""" self.replay = True if isinstance(traj, basestring): from ase.io.trajectory import Trajectory traj = Trajectory(traj, 'r') r0 = None g0 = None for i in range(0, len(traj) - 1): r = traj[i].get_positions().ravel() g = - traj[i].get_forces().ravel() / self.alpha self.update(r, g, r0, g0, self.p) self.p = -np.dot(self.H, g) r0 = r.copy() g0 = g.copy() self.r0 = r0 self.g0 = g0 def log(self, forces): if self.logfile is None: return fmax = sqrt((forces**2).sum(axis=1).max()) e = self.atoms.get_potential_energy( force_consistent=self.force_consistent) T = time.localtime() name = self.__class__.__name__ w = self.logfile.write if self.nsteps == 0: w('%s %4s[%3s] %8s %15s %12s\n' % (' '*len(name), 'Step', 'FC', 'Time', 'Energy', 'fmax')) if self.force_consistent: w('*Force-consistent energies used in optimization.\n') w('%s: %3d[%3d] %02d:%02d:%02d %15.6f%1s %12.4f\n' % (name, self.nsteps, self.force_calls, T[3], T[4], T[5], e, {1: '*', 0: ''}[self.force_consistent], fmax)) self.logfile.flush() def wrap_function(function, args): ncalls = [0] def function_wrapper(x): ncalls[0] += 1 return function(x, *args) return ncalls, function_wrapper ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/fire.py000066400000000000000000000115361316323560300237040ustar00rootroot00000000000000import numpy as np from ase.optimize.optimize import Optimizer class FIRE(Optimizer): def __init__(self, atoms, restart=None, logfile='-', trajectory=None, dt=0.1, maxmove=0.2, dtmax=1.0, Nmin=5, finc=1.1, fdec=0.5, astart=0.1, fa=0.99, a=0.1, master=None, downhill_check=False, position_reset_callback=None, force_consistent=None): """Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. downhill_check: boolean Downhill check directly compares potential energies of subsequent steps of the FIRE algorithm rather than relying on the current product v*f that is positive if the FIRE dynamics moves downhill. This can detect numerical issues where at large time steps the step is uphill in energy even though locally v*f is positive, i.e. the algorithm jumps over a valley because of a too large time step. position_reset_callback: function(atoms, r, e, e_last) Function that takes current *atoms* object, an array of position *r* that the optimizer will revert to, current energy *e* and energy of last step *e_last*. This is only called if e > e_last. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). By default (force_consistent=None) uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. Only meaningful when downhill_check is True. """ Optimizer.__init__(self, atoms, restart, logfile, trajectory, master, force_consistent=force_consistent) self.dt = dt self.Nsteps = 0 self.maxmove = maxmove self.dtmax = dtmax self.Nmin = Nmin self.finc = finc self.fdec = fdec self.astart = astart self.fa = fa self.a = a self.downhill_check = downhill_check self.position_reset_callback = position_reset_callback def initialize(self): self.v = None def read(self): self.v, self.dt = self.load() def step(self, f): atoms = self.atoms if self.v is None: self.v = np.zeros((len(atoms), 3)) if self.downhill_check: self.e_last = atoms.get_potential_energy( force_consistent=self.force_consistent) self.r_last = atoms.get_positions().copy() self.v_last = self.v.copy() else: is_uphill = False if self.downhill_check: e = atoms.get_potential_energy( force_consistent=self.force_consistent) # Check if the energy actually decreased if e > self.e_last: # If not, reset to old positions... if self.position_reset_callback is not None: self.position_reset_callback(atoms, self.r_last, e, self.e_last) atoms.set_positions(self.r_last) is_uphill = True self.e_last = atoms.get_potential_energy( force_consistent=self.force_consistent) self.r_last = atoms.get_positions().copy() self.v_last = self.v.copy() vf = np.vdot(f, self.v) if vf > 0.0 and not is_uphill: self.v = (1.0 - self.a) * self.v + self.a * f / np.sqrt( np.vdot(f, f)) * np.sqrt(np.vdot(self.v, self.v)) if self.Nsteps > self.Nmin: self.dt = min(self.dt * self.finc, self.dtmax) self.a *= self.fa self.Nsteps += 1 else: self.v[:] *= 0.0 self.a = self.astart self.dt *= self.fdec self.Nsteps = 0 self.v += self.dt * f dr = self.dt * self.v normdr = np.sqrt(np.vdot(dr, dr)) if normdr > self.maxmove: dr = self.maxmove * dr / normdr r = atoms.get_positions() atoms.set_positions(r + dr) self.dump((self.v, self.dt)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/fmin_bfgs.py000066400000000000000000000366641316323560300247220ustar00rootroot00000000000000from __future__ import print_function #__docformat__ = "restructuredtext en" # ******NOTICE*************** # optimize.py module by Travis E. Oliphant # # You may copy and use this module as you see fit with no # guarantee implied provided you keep this notice in all copies. # *****END NOTICE************ import numpy from numpy import empty, asarray, absolute, sqrt, Inf, isinf from ase.utils.linesearch import LineSearch # These have been copied from Numeric's MLab.py # I don't think they made the transition to scipy_core # Copied and modified from scipy_optimize abs = absolute import builtins pymin = builtins.min pymax = builtins.max __version__="0.7" _epsilon = sqrt(numpy.finfo(float).eps) def fmin_bfgs(f, x0, fprime=None, args=(), gtol=1e-5, norm=Inf, epsilon=_epsilon, maxiter=None, full_output=0, disp=1, retall=0, callback=None, maxstep=0.2): """Minimize a function using the BFGS algorithm. Parameters: f : callable f(x,*args) Objective function to be minimized. x0 : ndarray Initial guess. fprime : callable f'(x,*args) Gradient of f. args : tuple Extra arguments passed to f and fprime. gtol : float Gradient norm must be less than gtol before successful termination. norm : float Order of norm (Inf is max, -Inf is min) epsilon : int or ndarray If fprime is approximated, use this value for the step size. callback : callable An optional user-supplied function to call after each iteration. Called as callback(xk), where xk is the current parameter vector. Returns: (xopt, {fopt, gopt, Hopt, func_calls, grad_calls, warnflag}, ) xopt : ndarray Parameters which minimize f, i.e. f(xopt) == fopt. fopt : float Minimum value. gopt : ndarray Value of gradient at minimum, f'(xopt), which should be near 0. Bopt : ndarray Value of 1/f''(xopt), i.e. the inverse hessian matrix. func_calls : int Number of function_calls made. grad_calls : int Number of gradient calls made. warnflag : integer 1 : Maximum number of iterations exceeded. 2 : Gradient and/or function calls not changing. allvecs : list Results at each iteration. Only returned if retall is True. *Other Parameters*: maxiter : int Maximum number of iterations to perform. full_output : bool If True,return fopt, func_calls, grad_calls, and warnflag in addition to xopt. disp : bool Print convergence message if True. retall : bool Return a list of results at each iteration if True. Notes: Optimize the function, f, whose gradient is given by fprime using the quasi-Newton method of Broyden, Fletcher, Goldfarb, and Shanno (BFGS) See Wright, and Nocedal 'Numerical Optimization', 1999, pg. 198. *See Also*: scikits.openopt : SciKit which offers a unified syntax to call this and other solvers. """ x0 = asarray(x0).squeeze() if x0.ndim == 0: x0.shape = (1,) if maxiter is None: maxiter = len(x0)*200 func_calls, f = wrap_function(f, args) if fprime is None: grad_calls, myfprime = wrap_function(approx_fprime, (f, epsilon)) else: grad_calls, myfprime = wrap_function(fprime, args) gfk = myfprime(x0) k = 0 N = len(x0) I = numpy.eye(N,dtype=int) Hk = I old_fval = f(x0) old_old_fval = old_fval + 5000 xk = x0 if retall: allvecs = [x0] sk = [2*gtol] warnflag = 0 gnorm = vecnorm(gfk,ord=norm) while (gnorm > gtol) and (k < maxiter): pk = -numpy.dot(Hk,gfk) ls = LineSearch() alpha_k, fc, gc, old_fval, old_old_fval, gfkp1 = \ ls._line_search(f,myfprime,xk,pk,gfk, old_fval,old_old_fval,maxstep=maxstep) if alpha_k is None: # line search failed try different one. alpha_k, fc, gc, old_fval, old_old_fval, gfkp1 = \ line_search(f,myfprime,xk,pk,gfk, old_fval,old_old_fval) if alpha_k is None: # This line search also failed to find a better solution. warnflag = 2 break xkp1 = xk + alpha_k * pk if retall: allvecs.append(xkp1) sk = xkp1 - xk xk = xkp1 if gfkp1 is None: gfkp1 = myfprime(xkp1) yk = gfkp1 - gfk gfk = gfkp1 if callback is not None: callback(xk) k += 1 gnorm = vecnorm(gfk,ord=norm) if (gnorm <= gtol): break try: # this was handled in numeric, let it remaines for more safety rhok = 1.0 / (numpy.dot(yk,sk)) except ZeroDivisionError: rhok = 1000.0 print("Divide-by-zero encountered: rhok assumed large") if isinf(rhok): # this is patch for numpy rhok = 1000.0 print("Divide-by-zero encountered: rhok assumed large") A1 = I - sk[:,numpy.newaxis] * yk[numpy.newaxis,:] * rhok A2 = I - yk[:,numpy.newaxis] * sk[numpy.newaxis,:] * rhok Hk = numpy.dot(A1,numpy.dot(Hk,A2)) + rhok * sk[:,numpy.newaxis] \ * sk[numpy.newaxis,:] if disp or full_output: fval = old_fval if warnflag == 2: if disp: print("Warning: Desired error not necessarily achieved" \ "due to precision loss") print(" Current function value: %f" % fval) print(" Iterations: %d" % k) print(" Function evaluations: %d" % func_calls[0]) print(" Gradient evaluations: %d" % grad_calls[0]) elif k >= maxiter: warnflag = 1 if disp: print("Warning: Maximum number of iterations has been exceeded") print(" Current function value: %f" % fval) print(" Iterations: %d" % k) print(" Function evaluations: %d" % func_calls[0]) print(" Gradient evaluations: %d" % grad_calls[0]) else: if disp: print("Optimization terminated successfully.") print(" Current function value: %f" % fval) print(" Iterations: %d" % k) print(" Function evaluations: %d" % func_calls[0]) print(" Gradient evaluations: %d" % grad_calls[0]) if full_output: retlist = xk, fval, gfk, Hk, func_calls[0], grad_calls[0], warnflag if retall: retlist += (allvecs,) else: retlist = xk if retall: retlist = (xk, allvecs) return retlist def vecnorm(x, ord=2): if ord == Inf: return numpy.amax(abs(x)) elif ord == -Inf: return numpy.amin(abs(x)) else: return numpy.sum(abs(x)**ord,axis=0)**(1.0/ord) def wrap_function(function, args): ncalls = [0] def function_wrapper(x): ncalls[0] += 1 return function(x, *args) return ncalls, function_wrapper def _cubicmin(a,fa,fpa,b,fb,c,fc): # finds the minimizer for a cubic polynomial that goes through the # points (a,fa), (b,fb), and (c,fc) with derivative at a of fpa. # # if no minimizer can be found return None # # f(x) = A *(x-a)^3 + B*(x-a)^2 + C*(x-a) + D C = fpa db = b-a dc = c-a if (db == 0) or (dc == 0) or (b==c): return None denom = (db*dc)**2 * (db-dc) d1 = empty((2,2)) d1[0,0] = dc**2 d1[0,1] = -db**2 d1[1,0] = -dc**3 d1[1,1] = db**3 [A,B] = numpy.dot(d1,asarray([fb-fa-C*db,fc-fa-C*dc]).flatten()) A /= denom B /= denom radical = B*B-3*A*C if radical < 0: return None if (A == 0): return None xmin = a + (-B + sqrt(radical))/(3*A) return xmin def _quadmin(a,fa,fpa,b,fb): # finds the minimizer for a quadratic polynomial that goes through # the points (a,fa), (b,fb) with derivative at a of fpa # f(x) = B*(x-a)^2 + C*(x-a) + D D = fa C = fpa db = b-a*1.0 if (db==0): return None B = (fb-D-C*db)/(db*db) if (B <= 0): return None xmin = a - C / (2.0*B) return xmin def zoom(a_lo, a_hi, phi_lo, phi_hi, derphi_lo, phi, derphi, phi0, derphi0, c1, c2): maxiter = 10 i = 0 delta1 = 0.2 # cubic interpolant check delta2 = 0.1 # quadratic interpolant check phi_rec = phi0 a_rec = 0 while True: # interpolate to find a trial step length between a_lo and a_hi # Need to choose interpolation here. Use cubic interpolation and then if the # result is within delta * dalpha or outside of the interval bounded by a_lo or a_hi # then use quadratic interpolation, if the result is still too close, then use bisection dalpha = a_hi-a_lo; if dalpha < 0: a,b = a_hi,a_lo else: a,b = a_lo, a_hi # minimizer of cubic interpolant # (uses phi_lo, derphi_lo, phi_hi, and the most recent value of phi) # if the result is too close to the end points (or out of the interval) # then use quadratic interpolation with phi_lo, derphi_lo and phi_hi # if the result is stil too close to the end points (or out of the interval) # then use bisection if (i > 0): cchk = delta1*dalpha a_j = _cubicmin(a_lo, phi_lo, derphi_lo, a_hi, phi_hi, a_rec, phi_rec) if (i==0) or (a_j is None) or (a_j > b-cchk) or (a_j < a+cchk): qchk = delta2*dalpha a_j = _quadmin(a_lo, phi_lo, derphi_lo, a_hi, phi_hi) if (a_j is None) or (a_j > b-qchk) or (a_j < a+qchk): a_j = a_lo + 0.5*dalpha # print "Using bisection." # else: print "Using quadratic." # else: print "Using cubic." # Check new value of a_j phi_aj = phi(a_j) if (phi_aj > phi0 + c1*a_j*derphi0) or (phi_aj >= phi_lo): phi_rec = phi_hi a_rec = a_hi a_hi = a_j phi_hi = phi_aj else: derphi_aj = derphi(a_j) if abs(derphi_aj) <= -c2*derphi0: a_star = a_j val_star = phi_aj valprime_star = derphi_aj break if derphi_aj*(a_hi - a_lo) >= 0: phi_rec = phi_hi a_rec = a_hi a_hi = a_lo phi_hi = phi_lo else: phi_rec = phi_lo a_rec = a_lo a_lo = a_j phi_lo = phi_aj derphi_lo = derphi_aj i += 1 if (i > maxiter): a_star = a_j val_star = phi_aj valprime_star = None break return a_star, val_star, valprime_star def line_search(f, myfprime, xk, pk, gfk, old_fval, old_old_fval, args=(), c1=1e-4, c2=0.9, amax=50): """Find alpha that satisfies strong Wolfe conditions. Parameters: f : callable f(x,*args) Objective function. myfprime : callable f'(x,*args) Objective function gradient (can be None). xk : ndarray Starting point. pk : ndarray Search direction. gfk : ndarray Gradient value for x=xk (xk being the current parameter estimate). args : tuple Additional arguments passed to objective function. c1 : float Parameter for Armijo condition rule. c2 : float Parameter for curvature condition rule. Returns: alpha0 : float Alpha for which ``x_new = x0 + alpha * pk``. fc : int Number of function evaluations made. gc : int Number of gradient evaluations made. Notes: Uses the line search algorithm to enforce strong Wolfe conditions. See Wright and Nocedal, 'Numerical Optimization', 1999, pg. 59-60. For the zoom phase it uses an algorithm by [...]. """ global _ls_fc, _ls_gc, _ls_ingfk _ls_fc = 0 _ls_gc = 0 _ls_ingfk = None def phi(alpha): global _ls_fc _ls_fc += 1 return f(xk+alpha*pk,*args) if isinstance(myfprime,type(())): def phiprime(alpha): global _ls_fc, _ls_ingfk _ls_fc += len(xk)+1 eps = myfprime[1] fprime = myfprime[0] newargs = (f,eps) + args _ls_ingfk = fprime(xk+alpha*pk,*newargs) # store for later use return numpy.dot(_ls_ingfk,pk) else: fprime = myfprime def phiprime(alpha): global _ls_gc, _ls_ingfk _ls_gc += 1 _ls_ingfk = fprime(xk+alpha*pk,*args) # store for later use return numpy.dot(_ls_ingfk,pk) alpha0 = 0 phi0 = old_fval derphi0 = numpy.dot(gfk,pk) alpha1 = pymin(1.0,1.01*2*(phi0-old_old_fval)/derphi0) if alpha1 == 0: # This shouldn't happen. Perhaps the increment has slipped below # machine precision? For now, set the return variables skip the # useless while loop, and raise warnflag=2 due to possible imprecision. alpha_star = None fval_star = old_fval old_fval = old_old_fval fprime_star = None phi_a1 = phi(alpha1) #derphi_a1 = phiprime(alpha1) evaluated below phi_a0 = phi0 derphi_a0 = derphi0 i = 1 maxiter = 10 while True: # bracketing phase if alpha1 == 0: break if (phi_a1 > phi0 + c1*alpha1*derphi0) or \ ((phi_a1 >= phi_a0) and (i > 1)): alpha_star, fval_star, fprime_star = \ zoom(alpha0, alpha1, phi_a0, phi_a1, derphi_a0, phi, phiprime, phi0, derphi0, c1, c2) break derphi_a1 = phiprime(alpha1) if (abs(derphi_a1) <= -c2*derphi0): alpha_star = alpha1 fval_star = phi_a1 fprime_star = derphi_a1 break if (derphi_a1 >= 0): alpha_star, fval_star, fprime_star = \ zoom(alpha1, alpha0, phi_a1, phi_a0, derphi_a1, phi, phiprime, phi0, derphi0, c1, c2) break alpha2 = 2 * alpha1 # increase by factor of two on each iteration i = i + 1 alpha0 = alpha1 alpha1 = alpha2 phi_a0 = phi_a1 phi_a1 = phi(alpha1) derphi_a0 = derphi_a1 # stopping test if lower function not found if (i > maxiter): alpha_star = alpha1 fval_star = phi_a1 fprime_star = None break if fprime_star is not None: # fprime_star is a number (derphi) -- so use the most recently # calculated gradient used in computing it derphi = gfk*pk # this is the gradient at the next step no need to compute it # again in the outer loop. fprime_star = _ls_ingfk return alpha_star, _ls_fc, _ls_gc, fval_star, old_fval, fprime_star def approx_fprime(xk,f,epsilon,*args): f0 = f(*((xk,)+args)) grad = numpy.zeros((len(xk),), float) ei = numpy.zeros((len(xk),), float) for k in range(len(xk)): ei[k] = epsilon grad[k] = (f(*((xk+ei,)+args)) - f0)/epsilon ei[k] = 0.0 return grad ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/lbfgs.py000066400000000000000000000270771316323560300240630ustar00rootroot00000000000000# -*- coding: utf-8 -*- import sys import numpy as np from ase.optimize.optimize import Optimizer from ase.utils import basestring from ase.utils.linesearch import LineSearch class LBFGS(Optimizer): """Limited memory BFGS optimizer. A limited memory version of the bfgs algorithm. Unlike the bfgs algorithm used in bfgs.py, the inverse of Hessian matrix is updated. The inverse Hessian is represented only as a diagonal matrix to save memory """ def __init__(self, atoms, restart=None, logfile='-', trajectory=None, maxstep=None, memory=100, damping=1.0, alpha=70.0, use_line_search=False, master=None, force_consistent=None): """Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store vectors for updating the inverse of Hessian matrix. If set, file with such a name will be searched and information stored will be used, if the file exists. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. trajectory: string Pickle file used to store trajectory of atomic movement. maxstep: float How far is a single atom allowed to move. This is useful for DFT calculations where wavefunctions can be reused if steps are small. Default is 0.04 Angstrom. memory: int Number of steps to be stored. Default value is 100. Three numpy arrays of this length containing floats are stored. damping: float The calculated step is multiplied with this number before added to the positions. alpha: float Initial guess for the Hessian (curvature of energy surface). A conservative value of 70.0 is the default, but number of needed steps to converge might be less if a lower value is used. However, a lower value also means risk of instability. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). By default (force_consistent=None) uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. """ Optimizer.__init__(self, atoms, restart, logfile, trajectory, master, force_consistent=force_consistent) if maxstep is not None: if maxstep > 1.0: raise ValueError('You are using a much too large value for ' + 'the maximum step size: %.1f Angstrom' % maxstep) self.maxstep = maxstep else: self.maxstep = 0.04 self.memory = memory # Initial approximation of inverse Hessian 1./70. is to emulate the # behaviour of BFGS. Note that this is never changed! self.H0 = 1. / alpha self.damping = damping self.use_line_search = use_line_search self.p = None self.function_calls = 0 self.force_calls = 0 def initialize(self): """Initialize everything so no checks have to be done in step""" self.iteration = 0 self.s = [] self.y = [] # Store also rho, to avoid calculationg the dot product again and # again. self.rho = [] self.r0 = None self.f0 = None self.e0 = None self.task = 'START' self.load_restart = False def read(self): """Load saved arrays to reconstruct the Hessian""" self.iteration, self.s, self.y, self.rho, \ self.r0, self.f0, self.e0, self.task = self.load() self.load_restart = True def step(self, f): """Take a single step Use the given forces, update the history and calculate the next step -- then take it""" r = self.atoms.get_positions() self.update(r, f, self.r0, self.f0) s = self.s y = self.y rho = self.rho H0 = self.H0 loopmax = np.min([self.memory, self.iteration]) a = np.empty((loopmax,), dtype=np.float64) # ## The algorithm itself: q = -f.reshape(-1) for i in range(loopmax - 1, -1, -1): a[i] = rho[i] * np.dot(s[i], q) q -= a[i] * y[i] z = H0 * q for i in range(loopmax): b = rho[i] * np.dot(y[i], z) z += s[i] * (a[i] - b) self.p = - z.reshape((-1, 3)) # ## g = -f if self.use_line_search is True: e = self.func(r) self.line_search(r, g, e) dr = (self.alpha_k * self.p).reshape(len(self.atoms), -1) else: self.force_calls += 1 self.function_calls += 1 dr = self.determine_step(self.p) * self.damping self.atoms.set_positions(r + dr) self.iteration += 1 self.r0 = r self.f0 = -g self.dump((self.iteration, self.s, self.y, self.rho, self.r0, self.f0, self.e0, self.task)) def determine_step(self, dr): """Determine step to take according to maxstep Normalize all steps as the largest step. This way we still move along the eigendirection. """ steplengths = (dr**2).sum(1)**0.5 longest_step = np.max(steplengths) if longest_step >= self.maxstep: dr *= self.maxstep / longest_step return dr def update(self, r, f, r0, f0): """Update everything that is kept in memory This function is mostly here to allow for replay_trajectory. """ if self.iteration > 0: s0 = r.reshape(-1) - r0.reshape(-1) self.s.append(s0) # We use the gradient which is minus the force! y0 = f0.reshape(-1) - f.reshape(-1) self.y.append(y0) rho0 = 1.0 / np.dot(y0, s0) self.rho.append(rho0) if self.iteration > self.memory: self.s.pop(0) self.y.pop(0) self.rho.pop(0) def replay_trajectory(self, traj): """Initialize history from old trajectory.""" if isinstance(traj, basestring): from ase.io.trajectory import Trajectory traj = Trajectory(traj, 'r') r0 = None f0 = None # The last element is not added, as we get that for free when taking # the first qn-step after the replay for i in range(0, len(traj) - 1): r = traj[i].get_positions() f = traj[i].get_forces() self.update(r, f, r0, f0) r0 = r.copy() f0 = f.copy() self.iteration += 1 self.r0 = r0 self.f0 = f0 def func(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.function_calls += 1 return self.atoms.get_potential_energy( force_consistent=self.force_consistent) def fprime(self, x): """Gradient of the objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.force_calls += 1 # Remember that forces are minus the gradient! return - self.atoms.get_forces().reshape(-1) def line_search(self, r, g, e): self.p = self.p.ravel() p_size = np.sqrt((self.p**2).sum()) if p_size <= np.sqrt(len(self.atoms) * 1e-10): self.p /= (p_size / np.sqrt(len(self.atoms) * 1e-10)) g = g.ravel() r = r.ravel() ls = LineSearch() self.alpha_k, e, self.e0, self.no_update = \ ls._line_search(self.func, self.fprime, r, self.p, g, e, self.e0, maxstep=self.maxstep, c1=.23, c2=.46, stpmax=50.) if self.alpha_k is None: raise RuntimeError('LineSearch failed!') class LBFGSLineSearch(LBFGS): """This optimizer uses the LBFGS algorithm, but does a line search that fulfills the Wolff conditions. """ def __init__(self, *args, **kwargs): kwargs['use_line_search'] = True LBFGS.__init__(self, *args, **kwargs) # """Modified version of LBFGS. # # This optimizer uses the LBFGS algorithm, but does a line search for the # minimum along the search direction. This is done by issuing an additional # force call for each step, thus doubling the number of calculations. # # Additionally the Hessian is reset if the new guess is not sufficiently # better than the old one. # """ # def __init__(self, *args, **kwargs): # self.dR = kwargs.pop('dR', 0.1) # LBFGS.__init__(self, *args, **kwargs) # # def update(self, r, f, r0, f0): # """Update everything that is kept in memory # # This function is mostly here to allow for replay_trajectory. # """ # if self.iteration > 0: # a1 = abs(np.dot(f.reshape(-1), f0.reshape(-1))) # a2 = np.dot(f0.reshape(-1), f0.reshape(-1)) # if not (a1 <= 0.5 * a2 and a2 != 0): # # Reset optimization # self.initialize() # # # Note that the reset above will set self.iteration to 0 again # # which is why we should check again # if self.iteration > 0: # s0 = r.reshape(-1) - r0.reshape(-1) # self.s.append(s0) # # # We use the gradient which is minus the force! # y0 = f0.reshape(-1) - f.reshape(-1) # self.y.append(y0) # # rho0 = 1.0 / np.dot(y0, s0) # self.rho.append(rho0) # # if self.iteration > self.memory: # self.s.pop(0) # self.y.pop(0) # self.rho.pop(0) # # def determine_step(self, dr): # f = self.atoms.get_forces() # # # Unit-vector along the search direction # du = dr / np.sqrt(np.dot(dr.reshape(-1), dr.reshape(-1))) # # # We keep the old step determination before we figure # # out what is the best to do. # maxstep = self.maxstep * np.sqrt(3 * len(self.atoms)) # # # Finite difference step using temporary point # self.atoms.positions += (du * self.dR) # # Decide how much to move along the line du # Fp1 = np.dot(f.reshape(-1), du.reshape(-1)) # Fp2 = np.dot(self.atoms.get_forces().reshape(-1), du.reshape(-1)) # CR = (Fp1 - Fp2) / self.dR # #RdR = Fp1*0.1 # if CR < 0.0: # #print "negcurve" # RdR = maxstep # #if(abs(RdR) > maxstep): # # RdR = self.sign(RdR) * maxstep # else: # Fp = (Fp1 + Fp2) * 0.5 # RdR = Fp / CR # if abs(RdR) > maxstep: # RdR = np.sign(RdR) * maxstep # else: # RdR += self.dR * 0.5 # return du * RdR class HessLBFGS(LBFGS): """Backwards compatibiliyt class""" def __init__(self, *args, **kwargs): if 'method' in kwargs: del kwargs['method'] sys.stderr.write('Please use LBFGS instead of HessLBFGS!') LBFGS.__init__(self, *args, **kwargs) class LineLBFGS(LBFGSLineSearch): """Backwards compatibiliyt class""" def __init__(self, *args, **kwargs): if 'method' in kwargs: del kwargs['method'] sys.stderr.write('Please use LBFGSLineSearch instead of LineLBFGS!') LBFGSLineSearch.__init__(self, *args, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/mdmin.py000066400000000000000000000034051316323560300240570ustar00rootroot00000000000000import numpy as np from ase.optimize.optimize import Optimizer class MDMin(Optimizer): def __init__(self, atoms, restart=None, logfile='-', trajectory=None, dt=None, master=None): """Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. maxstep: float Used to set the maximum distance an atom can move per iteration (default value is 0.2 Angstroms). logfile: string Text file used to write summary information. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. """ Optimizer.__init__(self, atoms, restart, logfile, trajectory, master) if dt is not None: self.dt = dt def initialize(self): self.v = None self.dt = 0.2 def read(self): self.v, self.dt = self.load() def step(self, f): atoms = self.atoms if self.v is None: self.v = np.zeros((len(atoms), 3)) else: self.v += 0.5 * self.dt * f # Correct velocities: vf = np.vdot(self.v, f) if vf < 0.0: self.v[:] = 0.0 else: self.v[:] = f * vf / np.vdot(f, f) self.v += 0.5 * self.dt * f r = atoms.get_positions() atoms.set_positions(r + self.dt * self.v) self.dump((self.v, self.dt)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/minimahopping.py000066400000000000000000000712441316323560300256200ustar00rootroot00000000000000import os import numpy as np from ase import io, units from ase.optimize import QuasiNewton from ase.parallel import paropen, rank, world from ase.md import VelocityVerlet from ase.md import MDLogger from ase.md.velocitydistribution import MaxwellBoltzmannDistribution class MinimaHopping: """Implements the minima hopping method of global optimization outlined by S. Goedecker, J. Chem. Phys. 120: 9911 (2004). Initialize with an ASE atoms object. Optional parameters are fed through keywords. To run multiple searches in parallel, specify the minima_traj keyword, and have each run point to the same path. """ _default_settings = { 'T0': 1000., # K, initial MD 'temperature' 'beta1': 1.1, # temperature adjustment parameter 'beta2': 1.1, # temperature adjustment parameter 'beta3': 1. / 1.1, # temperature adjustment parameter 'Ediff0': 0.5, # eV, initial energy acceptance threshold 'alpha1': 0.98, # energy threshold adjustment parameter 'alpha2': 1. / 0.98, # energy threshold adjustment parameter 'mdmin': 2, # criteria to stop MD simulation (no. of minima) 'logfile': 'hop.log', # text log 'minima_threshold': 0.5, # A, threshold for identical configs 'timestep': 1.0, # fs, timestep for MD simulations 'optimizer': QuasiNewton, # local optimizer to use 'minima_traj': 'minima.traj', # storage file for minima list 'fmax': 0.05} # eV/A, max force for optimizations def __init__(self, atoms, **kwargs): """Initialize with an ASE atoms object and keyword arguments.""" self._atoms = atoms for key in kwargs: if key not in self._default_settings: raise RuntimeError('Unknown keyword: %s' % key) for k, v in self._default_settings.items(): setattr(self, '_%s' % k, kwargs.pop(k, v)) # when a MD sim. has passed a local minimum: self._passedminimum = PassedMinimum() # Misc storage. self._previous_optimum = None self._previous_energy = None self._temperature = self._T0 self._Ediff = self._Ediff0 def __call__(self, totalsteps=None, maxtemp=None): """Run the minima hopping algorithm. Can specify stopping criteria with total steps allowed or maximum searching temperature allowed. If neither is specified, runs indefinitely (or until stopped by batching software).""" self._startup() while True: if (totalsteps and self._counter >= totalsteps): self._log('msg', 'Run terminated. Step #%i reached of ' '%i allowed. Increase totalsteps if resuming.' % (self._counter, totalsteps)) return if (maxtemp and self._temperature >= maxtemp): self._log('msg', 'Run terminated. Temperature is %.2f K;' ' max temperature allowed %.2f K.' % (self._temperature, maxtemp)) return self._previous_optimum = self._atoms.copy() self._previous_energy = self._atoms.get_potential_energy() self._molecular_dynamics() self._optimize() self._counter += 1 self._check_results() def _startup(self): """Initiates a run, and determines if running from previous data or a fresh run.""" status = np.array(-1.) exists = self._read_minima() if rank == 0: if not exists: # Fresh run with new minima file. status = np.array(0.) elif not os.path.exists(self._logfile): # Fresh run with existing or shared minima file. status = np.array(1.) else: # Must be resuming from within a working directory. status = np.array(2.) world.barrier() world.broadcast(status, 0) if status == 2.: self._resume() else: self._counter = 0 self._log('init') self._log('msg', 'Performing initial optimization.') if status == 1.: self._log('msg', 'Using existing minima file with %i prior ' 'minima: %s' % (len(self._minima), self._minima_traj)) self._optimize() self._check_results() self._counter += 1 def _resume(self): """Attempt to resume a run, based on information in the log file. Note it will almost always be interrupted in the middle of either a qn or md run or when exceeding totalsteps, so it only has been tested in those cases currently.""" f = paropen(self._logfile, 'r') lines = f.read().splitlines() f.close() self._log('msg', 'Attempting to resume stopped run.') self._log('msg', 'Using existing minima file with %i prior ' 'minima: %s' % (len(self._minima), self._minima_traj)) mdcount, qncount = 0, 0 for line in lines: if (line[:4] == 'par:') and ('Ediff' not in line): self._temperature = float(line.split()[1]) self._Ediff = float(line.split()[2]) elif line[:18] == 'msg: Optimization:': qncount = int(line[19:].split('qn')[1]) elif line[:24] == 'msg: Molecular dynamics:': mdcount = int(line[25:].split('md')[1]) self._counter = max((mdcount, qncount)) if qncount == mdcount: # Either stopped during local optimization or terminated due to # max steps. self._log('msg', 'Attempting to resume at qn%05i' % qncount) if qncount > 0: atoms = io.read('qn%05i.traj' % (qncount - 1), index=-1) self._previous_optimum = atoms.copy() self._previous_energy = atoms.get_potential_energy() if os.path.getsize('qn%05i.traj' % qncount) > 0: atoms = io.read('qn%05i.traj' % qncount, index=-1) else: atoms = io.read('md%05i.traj' % qncount, index=-3) self._atoms.positions = atoms.get_positions() fmax = np.sqrt((atoms.get_forces() ** 2).sum(axis=1).max()) if fmax < self._fmax: # Stopped after a qn finished. self._log('msg', 'qn%05i fmax already less than fmax=%.3f' % (qncount, self._fmax)) self._counter += 1 return self._optimize() self._counter += 1 if qncount > 0: self._check_results() else: self._record_minimum() self._log('msg', 'Found a new minimum.') self._log('msg', 'Accepted new minimum.') self._log('par') elif qncount < mdcount: # Probably stopped during molecular dynamics. self._log('msg', 'Attempting to resume at md%05i.' % mdcount) atoms = io.read('qn%05i.traj' % qncount, index=-1) self._previous_optimum = atoms.copy() self._previous_energy = atoms.get_potential_energy() self._molecular_dynamics(resume=mdcount) self._optimize() self._counter += 1 self._check_results() def _check_results(self): """Adjusts parameters and positions based on outputs.""" # No prior minima found? self._read_minima() if len(self._minima) == 0: self._log('msg', 'Found a new minimum.') self._log('msg', 'Accepted new minimum.') self._record_minimum() self._log('par') return # Returned to starting position? if self._previous_optimum: compare = ComparePositions(translate=False) dmax = compare(self._atoms, self._previous_optimum) self._log('msg', 'Max distance to last minimum: %.3f A' % dmax) if dmax < self._minima_threshold: self._log('msg', 'Re-found last minimum.') self._temperature *= self._beta1 self._log('par') return # In a previously found position? unique, dmax_closest = self._unique_minimum_position() self._log('msg', 'Max distance to closest minimum: %.3f A' % dmax_closest) if not unique: self._temperature *= self._beta2 self._log('msg', 'Found previously found minimum.') self._log('par') if self._previous_optimum: self._log('msg', 'Restoring last minimum.') self._atoms.positions = self._previous_optimum.positions return # Must have found a unique minimum. self._temperature *= self._beta3 self._log('msg', 'Found a new minimum.') self._log('par') if (self._atoms.get_potential_energy() < self._previous_energy + self._Ediff): self._log('msg', 'Accepted new minimum.') self._Ediff *= self._alpha1 self._log('par') self._record_minimum() else: self._log('msg', 'Rejected new minimum due to energy. ' 'Restoring last minimum.') self._atoms.positions = self._previous_optimum.positions self._Ediff *= self._alpha2 self._log('par') def _log(self, cat='msg', message=None): """Records the message as a line in the log file.""" if cat == 'init': if rank == 0: if os.path.exists(self._logfile): raise RuntimeError('File exists: %s' % self._logfile) f = paropen(self._logfile, 'w') f.write('par: %12s %12s %12s\n' % ('T (K)', 'Ediff (eV)', 'mdmin')) f.write('ene: %12s %12s %12s\n' % ('E_current', 'E_previous', 'Difference')) f.close() return f = paropen(self._logfile, 'a') if cat == 'msg': line = 'msg: %s' % message elif cat == 'par': line = ('par: %12.4f %12.4f %12i' % (self._temperature, self._Ediff, self._mdmin)) elif cat == 'ene': current = self._atoms.get_potential_energy() if self._previous_optimum: previous = self._previous_energy line = ('ene: %12.5f %12.5f %12.5f' % (current, previous, current - previous)) else: line = ('ene: %12.5f' % current) f.write(line + '\n') f.close() def _optimize(self): """Perform an optimization.""" self._atoms.set_momenta(np.zeros(self._atoms.get_momenta().shape)) opt = self._optimizer(self._atoms, trajectory='qn%05i.traj' % self._counter, logfile='qn%05i.log' % self._counter) self._log('msg', 'Optimization: qn%05i' % self._counter) opt.run(fmax=self._fmax) self._log('ene') def _record_minimum(self): """Adds the current atoms configuration to the minima list.""" traj = io.Trajectory(self._minima_traj, 'a') traj.write(self._atoms) self._read_minima() self._log('msg', 'Recorded minima #%i.' % (len(self._minima) - 1)) def _read_minima(self): """Reads in the list of minima from the minima file.""" exists = os.path.exists(self._minima_traj) if exists: empty = os.path.getsize(self._minima_traj) == 0 if os.path.exists(self._minima_traj): if not empty: traj = io.Trajectory(self._minima_traj, 'r') self._minima = [atoms for atoms in traj] else: self._minima = [] return True else: self._minima = [] return False def _molecular_dynamics(self, resume=None): """Performs a molecular dynamics simulation, until mdmin is exceeded. If resuming, the file number (md%05i) is expected.""" self._log('msg', 'Molecular dynamics: md%05i' % self._counter) mincount = 0 energies, oldpositions = [], [] thermalized = False if resume: self._log('msg', 'Resuming MD from md%05i.traj' % resume) if os.path.getsize('md%05i.traj' % resume) == 0: self._log('msg', 'md%05i.traj is empty. Resuming from ' 'qn%05i.traj.' % (resume, resume - 1)) atoms = io.read('qn%05i.traj' % (resume - 1), index=-1) else: images = io.Trajectory('md%05i.traj' % resume, 'r') for atoms in images: energies.append(atoms.get_potential_energy()) oldpositions.append(atoms.positions.copy()) passedmin = self._passedminimum(energies) if passedmin: mincount += 1 self._atoms.set_momenta(atoms.get_momenta()) thermalized = True self._atoms.positions = atoms.get_positions() self._log('msg', 'Starting MD with %i existing energies.' % len(energies)) if not thermalized: MaxwellBoltzmannDistribution(self._atoms, temp=self._temperature * units.kB, force_temp=True) traj = io.Trajectory('md%05i.traj' % self._counter, 'a', self._atoms) dyn = VelocityVerlet(self._atoms, dt=self._timestep * units.fs) log = MDLogger(dyn, self._atoms, 'md%05i.log' % self._counter, header=True, stress=False, peratom=False) dyn.attach(log, interval=1) dyn.attach(traj, interval=1) while mincount < self._mdmin: dyn.run(1) energies.append(self._atoms.get_potential_energy()) passedmin = self._passedminimum(energies) if passedmin: mincount += 1 oldpositions.append(self._atoms.positions.copy()) # Reset atoms to minimum point. self._atoms.positions = oldpositions[passedmin[0]] def _unique_minimum_position(self): """Identifies if the current position of the atoms, which should be a local minima, has been found before.""" unique = True dmax_closest = 99999. compare = ComparePositions(translate=True) self._read_minima() for minimum in self._minima: dmax = compare(minimum, self._atoms) if dmax < self._minima_threshold: unique = False if dmax < dmax_closest: dmax_closest = dmax return unique, dmax_closest class ComparePositions: """Class that compares the atomic positions between two ASE atoms objects. Returns the maximum distance that any atom has moved, assuming all atoms of the same element are indistinguishable. If translate is set to True, allows for arbitrary translations within the unit cell, as well as translations across any periodic boundary conditions. When called, returns the maximum displacement of any one atom.""" def __init__(self, translate=True): self._translate = translate def __call__(self, atoms1, atoms2): atoms1 = atoms1.copy() atoms2 = atoms2.copy() if not self._translate: dmax = self. _indistinguishable_compare(atoms1, atoms2) else: dmax = self._translated_compare(atoms1, atoms2) return dmax def _translated_compare(self, atoms1, atoms2): """Moves the atoms around and tries to pair up atoms, assuming any atoms with the same symbol are indistinguishable, and honors periodic boundary conditions (for example, so that an atom at (0.1, 0., 0.) correctly is found to be close to an atom at (7.9, 0., 0.) if the atoms are in an orthorhombic cell with x-dimension of 8. Returns dmax, the maximum distance between any two atoms in the optimal configuration.""" atoms1.set_constraint() atoms2.set_constraint() for index in range(3): assert atoms1.pbc[index] == atoms2.pbc[index] least = self._get_least_common(atoms1) indices1 = [atom.index for atom in atoms1 if atom.symbol == least[0]] indices2 = [atom.index for atom in atoms2 if atom.symbol == least[0]] # Make comparison sets from atoms2, which contain repeated atoms in # all pbc's and bring the atom listed in indices2 to (0,0,0) comparisons = [] repeat = [] for bc in atoms2.pbc: if bc: repeat.append(3) else: repeat.append(1) repeated = atoms2.repeat(repeat) moved_cell = atoms2.cell * atoms2.pbc for moved in moved_cell: repeated.translate(-moved) repeated.set_cell(atoms2.cell) for index in indices2: comparison = repeated.copy() comparison.translate(-atoms2[index].position) comparisons.append(comparison) # Bring the atom listed in indices1 to (0,0,0) [not whole list] standard = atoms1.copy() standard.translate(-atoms1[indices1[0]].position) # Compare the standard to the comparison sets. dmaxes = [] for comparison in comparisons: dmax = self._indistinguishable_compare(standard, comparison) dmaxes.append(dmax) return min(dmaxes) def _get_least_common(self, atoms): """Returns the least common element in atoms. If more than one, returns the first encountered.""" symbols = [atom.symbol for atom in atoms] least = ['', np.inf] for element in set(symbols): count = symbols.count(element) if count < least[1]: least = [element, count] return least def _indistinguishable_compare(self, atoms1, atoms2): """Finds each atom in atoms1's nearest neighbor with the same chemical symbol in atoms2. Return dmax, the farthest distance an individual atom differs by.""" atoms2 = atoms2.copy() # allow deletion atoms2.set_constraint() dmax = 0. for atom1 in atoms1: closest = [np.nan, np.inf] for index, atom2 in enumerate(atoms2): if atom2.symbol == atom1.symbol: d = np.linalg.norm(atom1.position - atom2.position) if d < closest[1]: closest = [index, d] if closest[1] > dmax: dmax = closest[1] del atoms2[closest[0]] return dmax class PassedMinimum: """Simple routine to find if a minimum in the potential energy surface has been passed. In its default settings, a minimum is found if the sequence ends with two downward points followed by two upward points. Initialize with n_down and n_up, integer values of the number of up and down points. If it has successfully determined it passed a minimum, it returns the value (energy) of that minimum and the number of positions back it occurred, otherwise returns None.""" def __init__(self, n_down=2, n_up=2): self._ndown = n_down self._nup = n_up def __call__(self, energies): if len(energies) < (self._nup + self._ndown + 1): return None status = True index = -1 for i_up in range(self._nup): if energies[index] < energies[index - 1]: status = False index -= 1 for i_down in range(self._ndown): if energies[index] > energies[index - 1]: status = False index -= 1 if status: return (-self._nup - 1), energies[-self._nup - 1] class MHPlot: """Makes a plot summarizing the output of the MH algorithm from the specified rundirectory. If no rundirectory is supplied, uses the current directory.""" def __init__(self, rundirectory=None, logname='hop.log'): if not rundirectory: rundirectory = os.getcwd() self._rundirectory = rundirectory self._logname = logname self._read_log() self._fig, self._ax = self._makecanvas() self._plot_data() def get_figure(self): """Returns the matplotlib figure object.""" return self._fig def save_figure(self, filename): """Saves the file to the specified path, with any allowed matplotlib extension (e.g., .pdf, .png, etc.).""" self._fig.savefig(filename) def _read_log(self): """Reads relevant parts of the log file.""" data = [] # format: [energy, status, temperature, ediff] f = open(os.path.join(self._rundirectory, self._logname), 'r') lines = f.read().splitlines() f.close() step_almost_over = False step_over = False for line in lines: if line.startswith('msg: Molecular dynamics:'): status = 'performing MD' elif line.startswith('msg: Optimization:'): status = 'performing QN' elif line.startswith('ene:'): status = 'local optimum reached' energy = floatornan(line.split()[1]) elif line.startswith('msg: Accepted new minimum.'): status = 'accepted' step_almost_over = True elif line.startswith('msg: Found previously found minimum.'): status = 'previously found minimum' step_almost_over = True elif line.startswith('msg: Re-found last minimum.'): status = 'previous minimum' step_almost_over = True elif line.startswith('msg: Rejected new minimum'): status = 'rejected' step_almost_over = True elif line.startswith('par: '): temperature = floatornan(line.split()[1]) ediff = floatornan(line.split()[2]) if step_almost_over: step_over = True step_almost_over = False if step_over: data.append([energy, status, temperature, ediff]) step_over = False if data[-1][1] != status: data.append([np.nan, status, temperature, ediff]) self._data = data def _makecanvas(self): from matplotlib import pyplot from matplotlib.ticker import ScalarFormatter fig = pyplot.figure(figsize=(6., 8.)) lm, rm, bm, tm = 0.22, 0.02, 0.05, 0.04 vg1 = 0.01 # between adjacent energy plots vg2 = 0.03 # between different types of plots ratio = 2. # size of an energy plot to a parameter plot figwidth = 1. - lm - rm totalfigheight = 1. - bm - tm - vg1 - 2. * vg2 parfigheight = totalfigheight / (2. * ratio + 2) epotheight = ratio * parfigheight ax1 = fig.add_axes((lm, bm, figwidth, epotheight)) ax2 = fig.add_axes((lm, bm + epotheight + vg1, figwidth, epotheight)) for ax in [ax1, ax2]: ax.yaxis.set_major_formatter(ScalarFormatter(useOffset=False)) ediffax = fig.add_axes((lm, bm + 2. * epotheight + vg1 + vg2, figwidth, parfigheight)) tempax = fig.add_axes((lm, (bm + 2 * epotheight + vg1 + 2 * vg2 + parfigheight), figwidth, parfigheight)) for ax in [ax2, tempax, ediffax]: ax.set_xticklabels([]) ax1.set_xlabel('step') tempax.set_ylabel('$T$, K') ediffax.set_ylabel(r'$E_\mathrm{diff}$, eV') for ax in [ax1, ax2]: ax.set_ylabel('r$E_\mathrm{pot}$, eV') ax = CombinedAxis(ax1, ax2, tempax, ediffax) self._set_zoomed_range(ax) ax1.spines['top'].set_visible(False) ax2.spines['bottom'].set_visible(False) return fig, ax def _set_zoomed_range(self, ax): """Try to intelligently set the range for the zoomed-in part of the graph.""" energies = [line[0] for line in self._data if not np.isnan(line[0])] dr = max(energies) - min(energies) if dr == 0.: dr = 1. ax.set_ax1_range((min(energies) - 0.2 * dr, max(energies) + 0.2 * dr)) def _plot_data(self): for step, line in enumerate(self._data): self._plot_energy(step, line) self._plot_qn(step, line) self._plot_md(step, line) self._plot_parameters() self._ax.set_xlim(self._ax.ax1.get_xlim()) def _plot_energy(self, step, line): """Plots energy and annotation for acceptance.""" energy, status = line[0], line[1] if np.isnan(energy): return self._ax.plot([step, step + 0.5], [energy] * 2, '-', color='k', linewidth=2.) if status == 'accepted': self._ax.text(step + 0.51, energy, r'$\checkmark$') elif status == 'rejected': self._ax.text(step + 0.51, energy, r'$\Uparrow$', color='red') elif status == 'previously found minimum': self._ax.text(step + 0.51, energy, r'$\hookleftarrow$', color='red', va='center') elif status == 'previous minimum': self._ax.text(step + 0.51, energy, r'$\leftarrow$', color='red', va='center') def _plot_md(self, step, line): """Adds a curved plot of molecular dynamics trajectory.""" if step == 0: return energies = [self._data[step - 1][0]] file = os.path.join(self._rundirectory, 'md%05i.traj' % step) traj = io.Trajectory(file, 'r') for atoms in traj: energies.append(atoms.get_potential_energy()) xi = step - 1 + .5 if len(energies) > 2: xf = xi + (step + 0.25 - xi) * len(energies) / (len(energies) - 2.) else: xf = step if xf > (step + .75): xf = step self._ax.plot(np.linspace(xi, xf, num=len(energies)), energies, '-k') def _plot_qn(self, index, line): """Plots a dashed vertical line for the optimization.""" if line[1] == 'performing MD': return file = os.path.join(self._rundirectory, 'qn%05i.traj' % index) if os.path.getsize(file) == 0: return traj = io.Trajectory(file, 'r') energies = [traj[0].get_potential_energy(), traj[-1].get_potential_energy()] if index > 0: file = os.path.join(self._rundirectory, 'md%05i.traj' % index) atoms = io.read(file, index=-3) energies[0] = atoms.get_potential_energy() self._ax.plot([index + 0.25] * 2, energies, ':k') def _plot_parameters(self): """Adds a plot of temperature and Ediff to the plot.""" steps, Ts, ediffs = [], [], [] for step, line in enumerate(self._data): steps.extend([step + 0.5, step + 1.5]) Ts.extend([line[2]] * 2) ediffs.extend([line[3]] * 2) self._ax.tempax.plot(steps, Ts) self._ax.ediffax.plot(steps, ediffs) for ax in [self._ax.tempax, self._ax.ediffax]: ylim = ax.get_ylim() yrange = ylim[1] - ylim[0] ax.set_ylim((ylim[0] - 0.1 * yrange, ylim[1] + 0.1 * yrange)) def floatornan(value): """Converts the argument into a float if possible, np.nan if not.""" try: output = float(value) except ValueError: output = np.nan return output class CombinedAxis: """Helper class for MHPlot to plot on split y axis and adjust limits simultaneously.""" def __init__(self, ax1, ax2, tempax, ediffax): self.ax1 = ax1 self.ax2 = ax2 self.tempax = tempax self.ediffax = ediffax self._ymax = -np.inf def set_ax1_range(self, ylim): self._ax1_ylim = ylim self.ax1.set_ylim(ylim) def plot(self, *args, **kwargs): self.ax1.plot(*args, **kwargs) self.ax2.plot(*args, **kwargs) # Re-adjust yrange for yvalue in args[1]: if yvalue > self._ymax: self._ymax = yvalue self.ax1.set_ylim(self._ax1_ylim) self.ax2.set_ylim((self._ax1_ylim[1], self._ymax)) def set_xlim(self, *args): self.ax1.set_xlim(*args) self.ax2.set_xlim(*args) self.tempax.set_xlim(*args) self.ediffax.set_xlim(*args) def text(self, *args, **kwargs): y = args[1] if y < self._ax1_ylim[1]: ax = self.ax1 else: ax = self.ax2 ax.text(*args, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/oldqn.py000066400000000000000000000337461316323560300241030ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2003 CAMP # Please see the accompanying LICENSE file for further information. """ Quasi-Newton algorithm """ __docformat__ = 'reStructuredText' import time import numpy as np from ase.parallel import paropen def f(lamda,Gbar,b,radius): b1 = b - lamda g = radius**2 - np.dot(Gbar/b1, Gbar/b1) return g def scale_radius_energy(f,r): scale = 1.0 # if(r<=0.01): # return scale if f<0.01: scale*=1.4 if f<0.05: scale*=1.4 if f<0.10: scale*=1.4 if f<0.40: scale*=1.4 if f>0.5: scale *= 1./1.4 if f>0.7: scale *= 1./1.4 if f>1.0: scale *= 1./1.4 return scale def scale_radius_force(f,r): scale = 1.0 # if(r<=0.01): # return scale g = abs(f -1) if g<0.01: scale*=1.4 if g<0.05: scale*=1.4 if g<0.10: scale*=1.4 if g<0.40: scale*=1.4 if g>0.5: scale *= 1./1.4 if g>0.7: scale *= 1./1.4 if g>1.0: scale *= 1./1.4 return scale def find_lamda(upperlimit,Gbar,b,radius): lowerlimit = upperlimit step = 0.1 while f(lowerlimit,Gbar,b,radius) < 0: lowerlimit -= step converged = False while not converged: midt = (upperlimit+lowerlimit)/2. lamda = midt fmidt = f(midt,Gbar,b,radius) fupper = f(upperlimit,Gbar,b,radius) if fupper*fmidt<0: lowerlimit = midt else: upperlimit = midt if abs(upperlimit-lowerlimit)<1e-6: converged = True return lamda def get_hessian_inertia(eigenvalues): # return number of negative modes n = 0 print('eigenvalues ',eigenvalues[0],eigenvalues[1],eigenvalues[2]) while eigenvalues[n]<0: n+=1 return n from numpy.linalg import eigh from ase.optimize.optimize import Optimizer class GoodOldQuasiNewton(Optimizer): def __init__(self, atoms, restart=None, logfile='-', trajectory=None, fmax=None, converged=None, hessianupdate='BFGS', hessian=None, forcemin=True, verbosity=None, maxradius=None, diagonal=20., radius=None, transitionstate=False, master=None): """Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. maxstep: float Used to set the maximum distance an atom can move per iteration (default value is 0.2 Angstroms). logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. """ Optimizer.__init__(self, atoms, restart, logfile, trajectory, master) self.eps = 1e-12 self.hessianupdate = hessianupdate self.forcemin = forcemin self.verbosity = verbosity self.diagonal = diagonal self.atoms = atoms n = len(self.atoms) * 3 if radius is None: self.radius = 0.05*np.sqrt(n)/10.0 else: self.radius = radius if maxradius is None: self.maxradius = 0.5*np.sqrt(n) else: self.maxradius = maxradius # 0.01 < radius < maxradius self.radius = max(min( self.radius, self.maxradius ), 0.0001) self.transitionstate = transitionstate # check if this is a nudged elastic band calculation if hasattr(atoms,'springconstant'): self.forcemin=False self.t0 = time.time() def initialize(self):pass def write_log(self,text): if self.logfile is not None: self.logfile.write(text + '\n') self.logfile.flush() def set_max_radius(self, maxradius): self.maxradius = maxradius self.radius = min(self.maxradius, self.radius) def set_hessian(self,hessian): self.hessian = hessian def get_hessian(self): if not hasattr(self,'hessian'): self.set_default_hessian() return self.hessian def set_default_hessian(self): # set unit matrix n = len(self.atoms) * 3 hessian = np.zeros((n,n)) for i in range(n): hessian[i][i] = self.diagonal self.set_hessian(hessian) def read_hessian(self,filename): import pickle f = open(filename,'rb') self.set_hessian(pickle.load(f)) f.close() def write_hessian(self,filename): import pickle f = paropen(filename,'wb') pickle.dump(self.get_hessian(),f) f.close() def write_to_restartfile(self): import pickle f = paropen(self.restartfile,'wb') pickle.dump((self.oldpos, self.oldG, self.oldenergy, self.radius, self.hessian, self.energy_estimate),f) f.close() def update_hessian(self,pos,G): import copy if hasattr(self,'oldG'): if self.hessianupdate=='BFGS': self.update_hessian_bfgs(pos,G) elif self.hessianupdate== 'Powell': self.update_hessian_powell(pos,G) else: self.update_hessian_bofill(pos,G) else: if not hasattr(self,'hessian'): self.set_default_hessian() self.oldpos = copy.copy(pos) self.oldG = copy.copy(G) if self.verbosity: print('hessian ',self.hessian) def update_hessian_bfgs(self,pos,G): n = len(self.hessian) dgrad = G - self.oldG dpos = pos - self.oldpos dotg = np.dot(dgrad,dpos) tvec = np.dot(dpos,self.hessian) dott = np.dot(dpos,tvec) if (abs(dott)>self.eps) and (abs(dotg)>self.eps): for i in range(n): for j in range(n): h = dgrad[i]*dgrad[j]/dotg - tvec[i]*tvec[j]/dott self.hessian[i][j] += h def update_hessian_powell(self,pos,G): n = len(self.hessian) dgrad = G - self.oldG dpos = pos - self.oldpos absdpos = np.dot(dpos, dpos) if absdposself.eps) and (abs(dotg)>self.eps): for i in range(n): for j in range(n): h = tvec[i]*dpos[j] + dpos[i]*tvec[j]-ddot*dpos[i]*dpos[j] h *= 1./absdpos self.hessian[i][j] += h def update_hessian_bofill(self,pos,G): print('update Bofill') n = len(self.hessian) dgrad = G - self.oldG dpos = pos - self.oldpos absdpos = np.dot(dpos, dpos) if absdposself.eps) and (abs(dotg)>self.eps): for i in range(n): for j in range(n): h = coef1*(tvec[i]*dpos[j] + dpos[i]*tvec[j])-dpos[i]*dpos[j]*coef3 + coef2*tvec[i]*tvec[j] h *= 1./absdpos self.hessian[i][j] += h def step(self, f): """ Do one QN step """ pos = self.atoms.get_positions().ravel() G = -self.atoms.get_forces().ravel() energy = self.atoms.get_potential_energy() self.write_iteration(energy,G) if hasattr(self,'oldenergy'): self.write_log('energies ' + str(energy) + ' ' + str(self.oldenergy)) if self.forcemin: de = 1e-4 else: de = 1e-2 if self.transitionstate: de = 0.2 if (energy-self.oldenergy)>de: self.write_log('reject step') self.atoms.set_positions(self.oldpos.reshape((-1, 3))) G = self.oldG energy = self.oldenergy self.radius *= 0.5 else: self.update_hessian(pos,G) de = energy - self.oldenergy f = 1.0 if self.forcemin: self.write_log("energy change; actual: %f estimated: %f "%(de,self.energy_estimate)) if abs(self.energy_estimate)>self.eps: f = abs((de/self.energy_estimate)-1) self.write_log('Energy prediction factor ' + str(f)) # fg = self.get_force_prediction(G) self.radius *= scale_radius_energy(f,self.radius) else: self.write_log("energy change; actual: %f "%(de)) self.radius*=1.5 fg = self.get_force_prediction(G) self.write_log("Scale factors %f %f "%(scale_radius_energy(f,self.radius), scale_radius_force(fg,self.radius))) self.radius = max(min(self.radius,self.maxradius), 0.0001) else: self.update_hessian(pos,G) self.write_log("new radius %f "%(self.radius)) self.oldenergy = energy b,V = eigh(self.hessian) V=V.T.copy() self.V = V # calculate projection of G onto eigenvectors V Gbar = np.dot(G,np.transpose(V)) lamdas = self.get_lambdas(b,Gbar) D = -Gbar/(b-lamdas) n = len(D) step = np.zeros((n)) for i in range(n): step += D[i]*V[i] pos = self.atoms.get_positions().ravel() pos += step energy_estimate = self.get_energy_estimate(D,Gbar,b) self.energy_estimate = energy_estimate self.gbar_estimate = self.get_gbar_estimate(D,Gbar,b) self.old_gbar = Gbar self.atoms.set_positions(pos.reshape((-1, 3))) def get_energy_estimate(self,D,Gbar,b): de = 0.0 for n in range(len(D)): de += D[n]*Gbar[n] + 0.5*D[n]*b[n]*D[n] return de def get_gbar_estimate(self,D,Gbar,b): gbar_est = (D*b) + Gbar self.write_log('Abs Gbar estimate ' + str(np.dot(gbar_est,gbar_est))) return gbar_est def get_lambdas(self,b,Gbar): lamdas = np.zeros((len(b))) D = -Gbar/b #absD = np.sqrt(np.sum(D**2)) absD = np.sqrt(np.dot(D, D)) eps = 1e-12 nminus = self.get_hessian_inertia(b) if absD < self.radius: if not self.transitionstate: self.write_log('Newton step') return lamdas else: if nminus==1: self.write_log('Newton step') return lamdas else: self.write_log("Wrong inertia of Hessian matrix: %2.2f %2.2f "%(b[0],b[1])) else: self.write_log("Corrected Newton step: abs(D) = %2.2f "%(absD)) if not self.transitionstate: # upper limit upperlimit = min(0,b[0])-eps lamda = find_lamda(upperlimit,Gbar,b,self.radius) lamdas += lamda else: # upperlimit upperlimit = min(-b[0],b[1],0)-eps lamda = find_lamda(upperlimit,Gbar,b,self.radius) lamdas += lamda lamdas[0] -= 2*lamda return lamdas def print_hessian(self): hessian = self.get_hessian() n = len(hessian) for i in range(n): for j in range(n): print("%2.4f " %(hessian[i][j]), end=' ') print(" ") def get_hessian_inertia(self,eigenvalues): # return number of negative modes self.write_log("eigenvalues %2.2f %2.2f %2.2f "%(eigenvalues[0], eigenvalues[1], eigenvalues[2])) n = 0 while eigenvalues[n]<0: n+=1 return n def get_force_prediction(self,G): # return measure of how well the forces are predicted Gbar = np.dot(G,np.transpose(self.V)) dGbar_actual = Gbar-self.old_gbar dGbar_predicted = Gbar-self.gbar_estimate f = np.dot(dGbar_actual,dGbar_predicted)/np.dot(dGbar_actual,dGbar_actual) self.write_log('Force prediction factor ' + str(f)) return f def write_iteration(self,energy,G):pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/optimize.py000066400000000000000000000175201316323560300246160ustar00rootroot00000000000000"""Structure optimization. """ import sys import pickle import time from math import sqrt from os.path import isfile from ase.calculators.calculator import PropertyNotImplementedError from ase.parallel import rank, barrier from ase.io.trajectory import Trajectory from ase.utils import basestring import collections class Dynamics: """Base-class for all MD and structure optimization classes.""" def __init__(self, atoms, logfile, trajectory, append_trajectory=False, master=None): """Dynamics object. Parameters: atoms: Atoms object The Atoms object to operate on. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. trajectory: Trajectory object or str Attach trajectory object. If *trajectory* is a string a Trajectory will be constructed. Use *None* for no trajectory. append_trajectory: boolean Defaults to False, which causes the trajectory file to be overwriten each time the dynamics is restarted from scratch. If True, the new structures are appended to the trajectory file instead. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. """ self.atoms = atoms if master is None: master = rank == 0 if not master: logfile = None elif isinstance(logfile, basestring): if logfile == '-': logfile = sys.stdout else: logfile = open(logfile, 'a') self.logfile = logfile self.observers = [] self.nsteps = 0 if trajectory is not None: if isinstance(trajectory, basestring): mode = "a" if append_trajectory else "w" trajectory = Trajectory(trajectory, mode=mode, atoms=atoms, master=master) self.attach(trajectory) def get_number_of_steps(self): return self.nsteps def insert_observer(self, function, position=0, interval=1, *args, **kwargs): """Insert an observer.""" if not isinstance(function, collections.Callable): function = function.write self.observers.insert(position, (function, interval, args, kwargs)) def attach(self, function, interval=1, *args, **kwargs): """Attach callback function. If *interval > 0*, at every *interval* steps, call *function* with arguments *args* and keyword arguments *kwargs*. If *interval <= 0*, after step *interval*, call *function* with arguments *args* and keyword arguments *kwargs*. This is currently zero indexed.""" if hasattr(function, 'set_description'): d = self.todict() d.update(interval=interval) function.set_description(d) if not hasattr(function, '__call__'): function = function.write self.observers.append((function, interval, args, kwargs)) def call_observers(self): for function, interval, args, kwargs in self.observers: call = False # Call every interval iterations if interval > 0: if (self.nsteps % interval) == 0: call = True # Call only on iteration interval elif interval <= 0: if self.nsteps == abs(interval): call = True if call: function(*args, **kwargs) class Optimizer(Dynamics): """Base-class for all structure optimization classes.""" def __init__(self, atoms, restart, logfile, trajectory, master=None, force_consistent=False): """Structure optimizer object. Parameters: atoms: Atoms object The Atoms object to relax. restart: str Filename for restart file. Default value is *None*. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. trajectory: Trajectory object or str Attach trajectory object. If *trajectory* is a string a Trajectory will be constructed. Use *None* for no trajectory. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). If force_consistent=None, uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. """ Dynamics.__init__(self, atoms, logfile, trajectory, master) self.force_consistent = force_consistent self.restart = restart if restart is None or not isfile(restart): self.initialize() else: self.read() barrier() def todict(self): description = {'type': 'optimization', 'optimizer': self.__class__.__name__} return description def initialize(self): pass def run(self, fmax=0.05, steps=100000000): """Run structure optimization algorithm. This method will return when the forces on all individual atoms are less than *fmax* or when the number of steps exceeds *steps*.""" if self.force_consistent is None: self.set_force_consistent() self.fmax = fmax step = 0 while step < steps: f = self.atoms.get_forces() self.log(f) self.call_observers() if self.converged(f): return True self.step(f) self.nsteps += 1 step += 1 return False def converged(self, forces=None): """Did the optimization converge?""" if forces is None: forces = self.atoms.get_forces() if hasattr(self.atoms, 'get_curvature'): return ((forces**2).sum(axis=1).max() < self.fmax**2 and self.atoms.get_curvature() < 0.0) return (forces**2).sum(axis=1).max() < self.fmax**2 def log(self, forces): fmax = sqrt((forces**2).sum(axis=1).max()) e = self.atoms.get_potential_energy( force_consistent=self.force_consistent) T = time.localtime() if self.logfile is not None: name = self.__class__.__name__ if self.nsteps == 0: self.logfile.write( '%s %4s %8s %15s %12s\n' % (' ' * len(name), 'Step', 'Time', 'Energy', 'fmax')) if self.force_consistent: self.logfile.write( '*Force-consistent energies used in optimization.\n') self.logfile.write('%s: %3d %02d:%02d:%02d %15.6f%1s %12.4f\n' % (name, self.nsteps, T[3], T[4], T[5], e, {1: '*', 0: ''}[self.force_consistent], fmax)) self.logfile.flush() def dump(self, data): if rank == 0 and self.restart is not None: pickle.dump(data, open(self.restart, 'wb'), protocol=2) def load(self): return pickle.load(open(self.restart, 'rb')) def set_force_consistent(self): """Automatically sets force_consistent to True if force_consistent energies are supported by calculator; else False.""" try: self.atoms.get_potential_energy(force_consistent=True) except PropertyNotImplementedError: self.force_consistent = False else: self.force_consistent = True ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/000077500000000000000000000000001316323560300236655ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/__init__.py000066400000000000000000000027501316323560300260020ustar00rootroot00000000000000""" This module contains tools for preconditioned geometry optimisation. Code maintained by James Kermode Parts written by John Woolley, Letif Mones and Christoph Ortner. The preconditioned LBFGS optimizer implemented here is described in the following publication: D. Packwood, J. R. Kermode, L. Mones, N. Bernstein, J. Woolley, N. Gould, C. Ortner, and G. Csanyi, A universal preconditioner for simulating condensed phase materials, J. Chem. Phys. 144, 164109 (2016). DOI: http://dx.doi.org/10.1063/1.4947024 A preconditioned version of FIRE is also included, this is less well tested. Optional dependencies --------------------- - matscipy, https://github.com/libAtoms/matscipy, for faster neighbour list asssembly with large systems. The module falls back on `ase.neighbour_list` if matscipy is not available. - scipy, `pip install scipy` for efficient sparse linear algebra, important for large systems (>1000 atoms). - PyAMG, `pip install pyamg`, for iterative adaptive multi grid invesion of the preconditioner, again important for large systems. """ from __future__ import print_function import logging logger = logging.getLogger(__name__) from ase.optimize.precon.precon import Precon, Exp, C1, Pfrommer, FF, Exp_FF from ase.optimize.precon.lbfgs import PreconLBFGS from ase.optimize.precon.fire import PreconFIRE __all__ = ['Precon', 'Exp', 'C1', 'Pfrommer', 'FF', 'Exp_FF', 'PreconLBFGS', 'PreconFIRE'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/fire.py000066400000000000000000000111541316323560300251660ustar00rootroot00000000000000import numpy as np from ase.optimize.optimize import Optimizer from ase.constraints import UnitCellFilter class PreconFIRE(Optimizer): def __init__(self, atoms, restart=None, logfile='-', trajectory=None, dt=0.1, maxmove=0.2, dtmax=1.0, Nmin=5, finc=1.1, fdec=0.5, astart=0.1, fa=0.99, a=0.1, theta=0.1, master=None, precon=None, use_armijo=True, variable_cell=False): """ Preconditioned version of the FIRE optimizer Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store hessian matrix. If set, file with such a name will be searched and hessian matrix stored will be used, if the file exists. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. master: bool Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. variable_cell: bool If True, wrap atoms in UnitCellFilter to relax cell and positions. In time this implementation is expected to replace ase.optimize.fire.FIRE. """ if variable_cell: atoms = UnitCellFilter(atoms) Optimizer.__init__(self, atoms, restart, logfile, trajectory, master) self.dt = dt self.Nsteps = 0 self.maxmove = maxmove self.dtmax = dtmax self.Nmin = Nmin self.finc = finc self.fdec = fdec self.astart = astart self.fa = fa self.a = a self.theta = theta self.precon = precon self.use_armijo = use_armijo def initialize(self): self.v = None self.skip_flag = False def read(self): self.v, self.dt = self.load() def step(self, f): atoms = self.atoms r = atoms.get_positions() if self.precon is not None: # Can this be moved out of the step method? self.precon.make_precon(atoms) invP_f = self.precon.solve(f.reshape(-1)).reshape(len(atoms), -1) if self.v is None: self.v = np.zeros((len(self.atoms), 3)) else: if self.use_armijo: if self.precon is None: v_test = self.v + self.dt * f else: v_test = self.v + self.dt * invP_f r_test = r + self.dt * v_test self.skip_flag = False if (self.func(r_test) > self.func(r) - self.theta * self.dt * np.vdot(v_test, f)): self.v[:] *= 0.0 self.a = self.astart self.dt *= self.fdec self.Nsteps = 0 self.skip_flag = True if not self.skip_flag: v_f = np.vdot(self.v, f) if v_f > 0.0: if self.precon is None: self.v = (1.0 - self.a) * self.v + self.a * f / \ np.sqrt(np.vdot(f, f)) * \ np.sqrt(np.vdot(self.v, self.v)) else: self.v = ( (1.0 - self.a) * self.v + self.a * (np.sqrt(self.precon.dot(self.v.reshape(-1), self.v.reshape(-1))) / np.sqrt(np.dot(f.reshape(-1), invP_f.reshape(-1))) * invP_f)) if self.Nsteps > self.Nmin: self.dt = min(self.dt * self.finc, self.dtmax) self.a *= self.fa self.Nsteps += 1 else: self.v[:] *= 0.0 self.a = self.astart self.dt *= self.fdec self.Nsteps = 0 if self.precon is None: self.v += self.dt * f else: self.v += self.dt * invP_f dr = self.dt * self.v normdr = np.sqrt(np.vdot(dr, dr)) if normdr > self.maxmove: dr = self.maxmove * dr / normdr atoms.set_positions(r + dr) self.dump((self.v, self.dt)) def func(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) potl = self.atoms.get_potential_energy() return potl ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/lbfgs.py000066400000000000000000000342141316323560300253400ustar00rootroot00000000000000# @Author: James Kermode # @Date: 2016-09-15T09:37:09+01:00 # @Email: james.kermode@gmail.com # @Project: f90wrap # @Last modified by: jameskermode # @Last modified time: 2016-09-15T11:07:36+01:00 # @License: f90wrap - F90 to Python interface generator with derived type # support import time from math import sqrt import numpy as np from ase.utils import basestring from ase.optimize.optimize import Optimizer from ase.constraints import UnitCellFilter from ase.optimize.precon import C1, Exp, Pfrommer, logger from ase.utils.linesearch import LineSearch from ase.utils.linesearcharmijo import LineSearchArmijo class PreconLBFGS(Optimizer): """Preconditioned version of the Limited memory BFGS optimizer. See this article for full details: D. Packwood, J. R. Kermode, L. Mones, N. Bernstein, J. Woolley, N. Gould, C. Ortner, and G. Csanyi, A universal preconditioner for simulating condensed phase materials J. Chem. Phys. 144, 164109 (2016), DOI: http://dx.doi.org/10.1063/1.4947024 A limited memory version of the bfgs algorithm. Unlike the bfgs algorithm used in bfgs.py, the inverse of Hessian matrix is updated. The inverse Hessian is represented only as a diagonal matrix to save memory. By default, the ase.optimize.precon.Exp preconditioner is applied. In time this implementation is expected to replace ase.optimize.lbfgs.LBFGS. """ # CO : added parameters rigid_units and rotation_factors def __init__(self, atoms, restart=None, logfile='-', trajectory=None, maxstep=None, memory=100, damping=1.0, alpha=70.0, master=None, precon='Exp', use_armijo=True, c1=0.23, c2=0.46, variable_cell=False, rigid_units=None, rotation_factors=None, Hinv=None): """Parameters: atoms: Atoms object The Atoms object to relax. restart: string Pickle file used to store vectors for updating the inverse of Hessian matrix. If set, file with such a name will be searched and information stored will be used, if the file exists. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. trajectory: string Pickle file used to store trajectory of atomic movement. maxstep: float How far is a single atom allowed to move. This is useful for DFT calculations where wavefunctions can be reused if steps are small. Default is 0.04 Angstrom. memory: int Number of steps to be stored. Default value is 100. Three numpy arrays of this length containing floats are stored. damping: float The calculated step is multiplied with this number before added to the positions. alpha: float Initial guess for the Hessian (curvature of energy surface). A conservative value of 70.0 is the default, but number of needed steps to converge might be less if a lower value is used. However, a lower value also means risk of instability. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. precon: ase.optimize.precon.Precon instance or compatible Apply the given preconditione during optimization. Defaults to 'Exp', which constructs an ase.optimize.precon.Exp instance. Other options include 'C1' and 'Pfrommer'- see the corresponding classes in this module for more details. Pass precon=None or precon='ID' to disable preconditioner. use_armijo: boolean Enforce only the Armijo condition of sufficient decrease of of the energy, and not the second Wolff condition for the forces. Often significantly faster than full Wolff linesearch. Defaults to True. c1: float c1 parameter for the line search. Default is c1=0.23. c2: float c2 parameter for the line search. Default is c2=0.46. variable_cell: bool If True, wrap atoms an ase.constraints.UnitCellFilter to relax both postions and cell. Default is False. rigid_units: each I = rigid_units[i] is a list of indices, which describes a subsystem of atoms that forms a (near-)rigid unit If rigid_units is not None, then special search-paths are are created to take the rigidness into account rotation_factors: list of scalars; acceleration factors deteriming the rate of rotation as opposed to the rate of stretch in the rigid units """ if variable_cell: atoms = UnitCellFilter(atoms) Optimizer.__init__(self, atoms, restart, logfile, trajectory, master) if maxstep is not None: if maxstep > 1.0: raise ValueError('You are using a much too large value for ' + 'the maximum step size: %.1f Angstrom' % maxstep) self.maxstep = maxstep else: self.maxstep = 0.04 self.memory = memory self.H0 = 1. / alpha # Initial approximation of inverse Hessian # 1./70. is to emulate the behaviour of BFGS # Note that this is never changed! self.Hinv = Hinv self.damping = damping self.p = None # construct preconditioner if passed as a string if isinstance(precon, basestring): if precon == 'C1': precon = C1() if precon == 'Exp': precon = Exp() elif precon == 'Pfrommer': precon = Pfrommer() elif precon == 'ID': precon = None else: raise ValueError('Unknown preconditioner "{0}"'.format(precon)) self.precon = precon self.use_armijo = use_armijo self.c1 = c1 self.c2 = c2 # CO self.rigid_units = rigid_units self.rotation_factors = rotation_factors def reset_hessian(self): """ Throw away history of the Hessian """ self._just_reset_hessian = True self.s = [] self.y = [] self.rho = [] # Store also rho, to avoid calculationg the dot product # again and again def initialize(self): """Initalize everything so no checks have to be done in step""" self.iteration = 0 self.reset_hessian() self.r0 = None self.f0 = None self.e0 = None self.e1 = None self.task = 'START' self.load_restart = False def read(self): """Load saved arrays to reconstruct the Hessian""" self.iteration, self.s, self.y, self.rho, \ self.r0, self.f0, self.e0, self.task = self.load() self.load_restart = True def step(self, f): """Take a single step Use the given forces, update the history and calculate the next step -- then take it""" r = self.atoms.get_positions() previously_reset_hessian = self._just_reset_hessian self.update(r, f, self.r0, self.f0) s = self.s y = self.y rho = self.rho H0 = self.H0 loopmax = np.min([self.memory, len(self.y)]) a = np.empty((loopmax,), dtype=np.float64) # The algorithm itself: q = -f.reshape(-1) for i in range(loopmax - 1, -1, -1): a[i] = rho[i] * np.dot(s[i], q) q -= a[i] * y[i] if self.precon is None: if self.Hinv is not None: z = np.dot(self.Hinv, q) else: z = H0 * q else: self.precon.make_precon(self.atoms) z = self.precon.solve(q) for i in range(loopmax): b = rho[i] * np.dot(y[i], z) z += s[i] * (a[i] - b) self.p = - z.reshape((-1, 3)) ### g = -f if self.e1 is not None: e = self.e1 else: e = self.func(r) self.line_search(r, g, e, previously_reset_hessian) dr = (self.alpha_k * self.p).reshape(len(self.atoms), -1) if self.alpha_k != 0.0: self.atoms.set_positions(r + dr) self.iteration += 1 self.r0 = r self.f0 = -g self.dump((self.iteration, self.s, self.y, self.rho, self.r0, self.f0, self.e0, self.task)) def update(self, r, f, r0, f0): """Update everything that is kept in memory This function is mostly here to allow for replay_trajectory. """ if not self._just_reset_hessian: s0 = r.reshape(-1) - r0.reshape(-1) self.s.append(s0) # We use the gradient which is minus the force! y0 = f0.reshape(-1) - f.reshape(-1) self.y.append(y0) rho0 = 1.0 / np.dot(y0, s0) self.rho.append(rho0) self._just_reset_hessian = False if len(self.y) > self.memory: self.s.pop(0) self.y.pop(0) self.rho.pop(0) def replay_trajectory(self, traj): """Initialize history from old trajectory.""" if isinstance(traj, basestring): from ase.io.trajectory import Trajectory traj = Trajectory(traj, 'r') r0 = None f0 = None # The last element is not added, as we get that for free when taking # the first qn-step after the replay for i in range(0, len(traj) - 1): r = traj[i].get_positions() f = traj[i].get_forces() self.update(r, f, r0, f0) r0 = r.copy() f0 = f.copy() self.iteration += 1 self.r0 = r0 self.f0 = f0 def func(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) potl = self.atoms.get_potential_energy() return potl def fprime(self, x): """Gradient of the objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) # Remember that forces are minus the gradient! return -self.atoms.get_forces().reshape(-1) def line_search(self, r, g, e, previously_reset_hessian): self.p = self.p.ravel() p_size = np.sqrt((self.p ** 2).sum()) if p_size <= np.sqrt(len(self.atoms) * 1e-10): self.p /= (p_size / np.sqrt(len(self.atoms) * 1e-10)) g = g.ravel() r = r.ravel() if self.use_armijo: try: # CO: modified call to ls.run # TODO: pass also the old slope to the linesearch # so that the RumPath can extract a better starting guess? # alternatively: we can adjust the rotation_factors # out using some extrapolation tricks? ls = LineSearchArmijo(self.func, c1=self.c1, tol=1e-14) step, func_val, no_update = ls.run( r, self.p, func_start=e, func_prime_start=g, func_old=self.e0, rigid_units=self.rigid_units, rotation_factors=self.rotation_factors) self.e0 = e self.e1 = func_val self.alpha_k = step except (ValueError, RuntimeError): if not previously_reset_hessian: logger.warning( 'Armijo linesearch failed, resetting Hessian and ' 'trying again') self.reset_hessian() self.alpha_k = 0.0 else: logger.error( 'Armijo linesearch failed after reset of Hessian, ' 'aborting') raise else: ls = LineSearch() self.alpha_k, e, self.e0, self.no_update = \ ls._line_search(self.func, self.fprime, r, self.p, g, e, self.e0, maxstep=self.maxstep, c1=self.c1, c2=self.c2, stpmax=50.) self.e1 = e if self.alpha_k is None: raise RuntimeError('Wolff lineSearch failed!') def run(self, fmax=0.05, steps=100000000, smax=None): if smax is None: smax = fmax self.smax = smax return Optimizer.run(self, fmax, steps) def log(self, forces): if isinstance(self.atoms, UnitCellFilter): natoms = len(self.atoms.atoms) forces, stress = forces[:natoms], self.atoms.stress fmax = sqrt((forces**2).sum(axis=1).max()) smax = sqrt((stress**2).max()) else: fmax = sqrt((forces**2).sum(axis=1).max()) if self.e1 is not None: # reuse energy at end of line search to avoid extra call e = self.e1 else: e = self.atoms.get_potential_energy() T = time.localtime() if self.logfile is not None: name = self.__class__.__name__ if isinstance(self.atoms, UnitCellFilter): self.logfile.write( '%s: %3d %02d:%02d:%02d %15.6f %12.4f %12.4f\n' % (name, self.nsteps, T[3], T[4], T[5], e, fmax, smax)) else: self.logfile.write( '%s: %3d %02d:%02d:%02d %15.6f %12.4f\n' % (name, self.nsteps, T[3], T[4], T[5], e, fmax)) self.logfile.flush() def converged(self, forces=None): """Did the optimization converge?""" if forces is None: forces = self.atoms.get_forces() if isinstance(self.atoms, UnitCellFilter): natoms = len(self.atoms.atoms) forces, stress = forces[:natoms], self.atoms.stress fmax_sq = (forces**2).sum(axis=1).max() smax_sq = (stress**2).max() return (fmax_sq < self.fmax**2 and smax_sq < self.smax**2) else: fmax_sq = (forces**2).sum(axis=1).max() return fmax_sq < self.fmax**2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/neighbors.py000066400000000000000000000114611316323560300262220ustar00rootroot00000000000000import time import numpy as np from ase.constraints import Filter, FixAtoms from ase.geometry.cell import cell_to_cellpar from ase.optimize.precon import logger try: from matscipy.neighbours import neighbour_list have_matscipy = True except ImportError: from ase.neighborlist import NeighborList have_matscipy = False def get_neighbours(atoms, r_cut, self_interaction=False): """Return a list of pairs of atoms within a given distance of each other. If matscipy can be imported, then this will directly call matscipy's neighbourlist function. Otherwise it will use ASE's NeighborList object. Args: atoms: ase.atoms object to calculate neighbours for r_cut: cutoff radius (float). Pairs of atoms are considered neighbours if they are within a distance r_cut of each other (note that this is double the parameter used in the ASE's neighborlist module) Returns: a tuple (i_list, j_list, d_list, fixed_atoms): i_list, j_list: i and j indices of each neighbour pair d_list: absolute distance between the corresponding pair fixed_atoms: indices of any fixed atoms """ if isinstance(atoms, Filter): atoms = atoms.atoms if have_matscipy: i_list, j_list, d_list = neighbour_list('ijd', atoms, r_cut) else: radii = [r_cut / 2 for i in range(len(atoms))] nl = NeighborList(radii, sorted=False, self_interaction=False, bothways=True) nl.update(atoms) i_list = [] j_list = [] d_list = [] for i, atom in enumerate(atoms): posn_i = atom.position indices, offsets = nl.get_neighbors(i) assert len(indices) == len(offsets) for j, offset in zip(indices, offsets): # Offsets represent how far away an atom is from its pair in terms # of the repeating cell - for instance, an atom i might be in cell # (0, 0, 0) while the neighbouring atom j is in cell (0, 1, 1). To # get the true position we have to correct for the offset: posn_j = atoms.positions[j] + np.dot(offset, atoms.get_cell()) distance = np.sqrt(((posn_j - posn_i)**2).sum()) i_list.append(i) j_list.append(j) d_list.append(distance) i_list = np.array(i_list) j_list = np.array(j_list) d_list = np.array(d_list) # filter out self-interactions (across PBC) if not self_interaction: mask = i_list != j_list i_list = i_list[mask] j_list = j_list[mask] d_list = d_list[mask] # filter out bonds where 1st atom (i) in pair is fixed fixed_atoms = [] for constraint in atoms.constraints: if isinstance(constraint, FixAtoms): fixed_atoms.extend(list(constraint.index)) else: raise TypeError( 'only FixAtoms constraints are supported by Precon class') return i_list, j_list, d_list, fixed_atoms def estimate_nearest_neighbour_distance(atoms): """ Estimate nearest neighbour distance r_NN Args: atoms: Atoms object Returns: rNN: float Nearest neighbour distance """ if isinstance(atoms, Filter): atoms = atoms.atoms start_time = time.time() # compute number of neighbours of each atom. If any atom doesn't # have a neighbour we increase the cutoff and try again, until our # cutoff exceeds the size of the sytem r_cut = 1.0 phi = (1.0 + np.sqrt(5.0)) / 2.0 # Golden ratio # cell lengths and angles a, b, c, alpha, beta, gamma = cell_to_cellpar(atoms.cell) extent = [a, b, c] logger.debug('estimate_nearest_neighbour_distance(): extent=%r', extent) while r_cut < 2.0 * max(extent): logger.info('estimate_nearest_neighbour_distance(): ' 'calling neighbour_list with r_cut=%.2f A', r_cut) i, j, rij, fixed_atoms = get_neighbours( atoms, r_cut, self_interaction=True) if len(i) != 0: nn_i = np.bincount(i, minlength=len(atoms)) if (nn_i != 0).all(): break r_cut *= phi else: raise RuntimeError('increased r_cut to twice system extent without ' 'finding neighbours for all atoms. This can ' 'happen if your system is too small; try ' 'setting r_cut manually') # maximum of nearest neigbour distances nn_distances = [np.min(rij[i == I]) for I in range(len(atoms))] r_NN = np.max(nn_distances) logger.info('estimate_nearest_neighbour_distance(): got r_NN=%.3f in %s s', r_NN, time.time() - start_time) return r_NN ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/precon/precon.py000066400000000000000000001270041316323560300255310ustar00rootroot00000000000000""" Implementation of the Precon abstract base class and subclasses """ import time import numpy as np from scipy import sparse, rand from scipy.sparse.linalg import spsolve from ase.constraints import Filter, FixAtoms from ase.utils import longsum from ase.geometry import wrap_positions import ase.utils.ff as ff import ase.units as units from ase.optimize.precon import logger from ase.optimize.precon.neighbors import (get_neighbours, have_matscipy, estimate_nearest_neighbour_distance) try: from pyamg import smoothed_aggregation_solver have_pyamg = True except ImportError: have_pyamg = False THz = 1e12 * 1. / units.s class Precon(object): def __init__(self, r_cut=None, r_NN=None, mu=None, mu_c=None, dim=3, c_stab=0.1, force_stab=False, recalc_mu=False, array_convention='C', use_pyamg=True, solve_tol=1e-8, apply_positions=True, apply_cell=True, estimate_mu_eigmode=False): """Initialise a preconditioner object based on passed parameters. Args: r_cut: float. This is a cut-off radius. The preconditioner matrix will be created by considering pairs of atoms that are within a distance r_cut of each other. For a regular lattice, this is usually taken somewhere between the first- and second-nearest neighbour distance. If r_cut is not provided, default is 2 * r_NN (see below) r_NN: nearest neighbour distance. If not provided, this is calculated from input structure. mu: float energy scale for position degreees of freedom. If `None`, mu is precomputed using finite difference derivatives. mu_c: float energy scale for cell degreees of freedom. Also precomputed if None. estimate_mu_eigmode: If True, estimates mu based on the lowest eigenmodes of unstabilised preconditioner. If False it uses the sine based approach. dim: int; dimensions of the problem c_stab: float. The diagonal of the preconditioner matrix will have a stabilisation constant added, which will be the value of c_stab times mu. force_stab: If True, always add the stabilisation to diagnonal, regardless of the presence of fixed atoms. recalc_mu: if True, the value of mu will be recalculated every time self.make_precon is called. This can be overridden in specific cases with recalc_mu argument in self.make_precon. If recalc_mu is set to True here, the value passed for mu will be irrelevant unless recalc_mu is set False the first time make_precon is called. array_convention: Either 'C' or 'F' for Fortran; this will change the preconditioner to reflect the ordering of the indices in the vector it will operate on. The C convention assumes the vector will be arranged atom-by-atom (ie [x1, y1, z1, x2, ...]) while the F convention assumes it will be arranged component by component (ie [x1, x2, ..., y1, y2, ...]). use_pyamg: use PyAMG to solve P x = y, if available. solve_tol: tolerance used for PyAMG sparse linear solver, if available. apply_positions: if True, apply preconditioner to position DoF apply_cell: if True, apply preconditioner to cell DoF Raises: ValueError for problem with arguments """ self.r_NN = r_NN self.r_cut = r_cut self.mu = mu self.mu_c = mu_c self.estimate_mu_eigmode = estimate_mu_eigmode self.c_stab = c_stab self.force_stab = force_stab self.array_convention = array_convention self.recalc_mu = recalc_mu self.P = None self.old_positions = None if use_pyamg and not have_pyamg: use_pyamg = False logger.warning('use_pyamg=True but PyAMG cannot be imported! ' 'falling back on direct inversion of ' 'preconditioner, may be slow for large systems') self.use_pyamg = use_pyamg self.solve_tol = solve_tol self.apply_positions = apply_positions self.apply_cell = apply_cell if dim < 1: raise ValueError('Dimension must be at least 1') self.dim = dim if not have_matscipy: logger.info('Unable to import Matscipy. Neighbour list ' 'calculations may be very slow.') def make_precon(self, atoms, recalc_mu=None): """Create a preconditioner matrix based on the passed set of atoms. Creates a general-purpose preconditioner for use with optimization algorithms, based on examining distances between pairs of atoms in the lattice. The matrix will be stored in the attribute self.P and returned. Args: atoms: the Atoms object used to create the preconditioner. Can also recalc_mu: if True, self.mu (and self.mu_c for variable cell) will be recalculated by calling self.estimate_mu(atoms) before the preconditioner matrix is created. If False, self.mu will be calculated only if it does not currently have a value (ie, the first time this function is called). Returns: A two-element tuple: P: A sparse scipy csr_matrix. BE AWARE that using numpy.dot() with sparse matrices will result in errors/incorrect results - use the .dot method directly on the matrix instead. """ if self.r_NN is None: self.r_NN = estimate_nearest_neighbour_distance(atoms) if self.r_cut is None: # This is the first time this function has been called, and no # cutoff radius has been specified, so calculate it automatically. self.r_cut = 2.0 * self.r_NN elif self.r_cut < self.r_NN: warning = ('WARNING: r_cut (%.2f) < r_NN (%.2f), ' 'increasing to 1.1*r_NN = %.2f' % (self.r_cut, self.r_NN, 1.1 * self.r_NN)) logger.info(warning) print(warning) self.r_cut = 1.1 * self.r_NN if recalc_mu is None: # The caller has not specified whether or not to recalculate mu, # so the Precon's setting is used. recalc_mu = self.recalc_mu if self.mu is None: # Regardless of what the caller has specified, if we don't # currently have a value of mu, then we need one. recalc_mu = True if recalc_mu: self.estimate_mu(atoms) if self.P is not None: real_atoms = atoms if isinstance(atoms, Filter): real_atoms = atoms.atoms if self.old_positions is None: self.old_positions = wrap_positions(real_atoms.positions, real_atoms.cell) displacement = wrap_positions(real_atoms.positions, real_atoms.cell) - self.old_positions self.old_positions = real_atoms.get_positions() max_abs_displacement = abs(displacement).max() logger.info('max(abs(displacements)) = %.2f A (%.2f r_NN)', max_abs_displacement, max_abs_displacement / self.r_NN) if max_abs_displacement < 0.5 * self.r_NN: return self.P start_time = time.time() # Create the preconditioner: self._make_sparse_precon(atoms, force_stab=self.force_stab) logger.info('--- Precon created in %s seconds ---', time.time() - start_time) return self.P def _make_sparse_precon(self, atoms, initial_assembly=False, force_stab=False): """Create a sparse preconditioner matrix based on the passed atoms. Creates a general-purpose preconditioner for use with optimization algorithms, based on examining distances between pairs of atoms in the lattice. The matrix will be stored in the attribute self.P and returned. Note that this function will use self.mu, whatever it is. Args: atoms: the Atoms object used to create the preconditioner. Returns: A scipy.sparse.csr_matrix object, representing a d*N by d*N matrix (where N is the number of atoms, and d is the value of self.dim). BE AWARE that using numpy.dot() with this object will result in errors/incorrect results - use the .dot method directly on the sparse matrix instead. """ logger.info('creating sparse precon: initial_assembly=%r, ' 'force_stab=%r, apply_positions=%r, apply_cell=%r', initial_assembly, force_stab, self.apply_positions, self.apply_cell) N = len(atoms) diag_i = np.arange(N, dtype=int) start_time = time.time() if self.apply_positions: # compute neighbour list i, j, rij, fixed_atoms = get_neighbours(atoms, self.r_cut) logger.info('--- neighbour list created in %s s ---' % (time.time() - start_time)) # compute entries in triplet format: without the constraints start_time = time.time() coeff = self.get_coeff(rij) diag_coeff = np.bincount(i, -coeff, minlength=N).astype(np.float64) if force_stab or len(fixed_atoms) == 0: logger.info('adding stabilisation to preconditioner') diag_coeff += self.mu * self.c_stab else: diag_coeff = np.ones(N) # precon is mu_c*identity for cell DoF if isinstance(atoms, Filter): if self.apply_cell: diag_coeff[-3] = self.mu_c diag_coeff[-2] = self.mu_c diag_coeff[-1] = self.mu_c else: diag_coeff[-3] = 1.0 diag_coeff[-2] = 1.0 diag_coeff[-1] = 1.0 logger.info('--- computed triplet format in %s s ---' % (time.time() - start_time)) if self.apply_positions and not initial_assembly: # apply the constraints start_time = time.time() mask = np.ones(N) mask[fixed_atoms] = 0.0 coeff *= mask[i] * mask[j] diag_coeff[fixed_atoms] = 1.0 logger.info('--- applied fixed_atoms in %s s ---' % (time.time() - start_time)) if self.apply_positions: # remove zeros start_time = time.time() inz = np.nonzero(coeff) i = np.hstack((i[inz], diag_i)) j = np.hstack((j[inz], diag_i)) coeff = np.hstack((coeff[inz], diag_coeff)) logger.info('--- remove zeros in %s s ---' % (time.time() - start_time)) else: i = diag_i j = diag_i coeff = diag_coeff # create the matrix start_time = time.time() csc_P = sparse.csc_matrix((coeff, (i, j)), shape=(N, N)) logger.info('--- created CSC matrix in %s s ---' % (time.time() - start_time)) self.csc_P = csc_P start_time = time.time() if self.dim == 1: self.P = csc_P elif self.array_convention == 'F': csc_P = csc_P.tocsr() self.P = csc_P for i in range(self.dim - 1): self.P = sparse.block_diag((self.P, csc_P)).tocsr() else: # convert back to triplet and read the arrays csc_P = csc_P.tocoo() i = csc_P.row * self.dim j = csc_P.col * self.dim z = csc_P.data # N-dimensionalise, interlaced coordinates I = np.hstack([i + d for d in range(self.dim)]) J = np.hstack([j + d for d in range(self.dim)]) Z = np.hstack([z for d in range(self.dim)]) self.P = sparse.csc_matrix((Z, (I, J)), shape=(self.dim * N, self.dim * N)) self.P = self.P.tocsr() logger.info('--- N-dim precon created in %s s ---' % (time.time() - start_time)) # Create solver if self.use_pyamg and have_pyamg: start_time = time.time() self.ml = smoothed_aggregation_solver( self.P, B=None, strength=('symmetric', {'theta': 0.0}), smooth=( 'jacobi', {'filter': True, 'weighting': 'local'}), improve_candidates=[('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 4}), None, None, None, None, None, None, None, None, None, None, None, None, None, None], aggregate='standard', presmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), postsmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), max_levels=15, max_coarse=300, coarse_solver='pinv') logger.info('--- multi grid solver created in %s s ---' % (time.time() - start_time)) return self.P def dot(self, x, y): """ Return the preconditioned dot product

Uses 128-bit floating point math for vector dot products """ return longsum(self.P.dot(x) * y) def solve(self, x): """ Solve the (sparse) linear system P x = y and return y """ start_time = time.time() if self.use_pyamg and have_pyamg: y = self.ml.solve(x, x0=rand(self.P.shape[0]), tol=self.solve_tol, accel='cg', maxiter=300, cycle='W') else: y = spsolve(self.P, x) logger.info('--- Precon applied in %s seconds ---', time.time() - start_time) return y def get_coeff(self, r): raise NotImplementedError('Must be overridden by subclasses') def estimate_mu(self, atoms, H=None): """ Estimate optimal preconditioner coefficient \mu \mu is estimated from a numerical solution of [dE(p+v) - dE(p)] \cdot v = \mu < P1 v, v > with perturbation v(x,y,z) = H P_lowest_nonzero_eigvec(x, y, z) or v(x,y,z) = H (sin(x / Lx), sin(y / Ly), sin(z / Lz)) After the optimal \mu is found, self.mu will be set to its value. If `atoms` is an instance of Filter an additional \mu_c will be computed for the cell degrees of freedom . Args: atoms: Atoms object for initial system H: 3x3 array or None Magnitude of deformation to apply. Default is 1e-2*rNN*np.eye(3) Returns: mu : float mu_c : float or None """ if self.dim != 3: raise ValueError('Automatic calculation of mu only possible for ' 'three-dimensional preconditioners. Try setting ' 'mu manually instead.') if self.r_NN is None: self.r_NN = estimate_nearest_neighbour_distance(atoms) # deformation matrix, default is diagonal if H is None: H = 1e-2 * self.r_NN * np.eye(3) # compute perturbation p = atoms.get_positions() if self.estimate_mu_eigmode: self.mu = 1.0 self.mu_c = 1.0 c_stab = self.c_stab self.c_stab = 0.0 if isinstance(atoms, Filter): n = len(atoms.atoms) else: n = len(atoms) P0 = self._make_sparse_precon(atoms, initial_assembly=True)[:3 * n, :3 * n] eigvals, eigvecs = sparse.linalg.eigsh(P0, k=4, which='SM') logger.debug('estimate_mu(): lowest 4 eigvals = %f %f %f %f' % (eigvals[0], eigvals[1], eigvals[2], eigvals[3])) # check eigenvalues if any(eigvals[0:3] > 1e-6): raise ValueError('First 3 eigenvalues of preconditioner matrix' 'do not correspond to translational modes.') elif eigvals[3] < 1e-6: raise ValueError('Fourth smallest eigenvalue of ' 'preconditioner matrix ' 'is too small, increase r_cut.') x = np.zeros(n) for i in range(n): x[i] = eigvecs[:, 3][3 * i] x = x / np.linalg.norm(x) if x[0] < 0: x = -x v = np.zeros(3 * len(atoms)) for i in range(n): v[3 * i] = x[i] v[3 * i + 1] = x[i] v[3 * i + 2] = x[i] v = v / np.linalg.norm(v) v = v.reshape((-1, 3)) self.c_stab = c_stab else: Lx, Ly, Lz = [p[:, i].max() - p[:, i].min() for i in range(3)] logger.debug('estimate_mu(): Lx=%.1f Ly=%.1f Lz=%.1f', Lx, Ly, Lz) x, y, z = p.T # sine_vr = [np.sin(x/Lx), np.sin(y/Ly), np.sin(z/Lz)], but we need # to take into account the possibility that one of Lx/Ly/Lz is # zero. sine_vr = [x, y, z] for i, L in enumerate([Lx, Ly, Lz]): if L == 0: logger.warning( 'Cell length L[%d] == 0. Setting H[%d,%d] = 0.' % (i, i, i)) H[i, i] = 0.0 else: sine_vr[i] = np.sin(sine_vr[i] / L) v = np.dot(H, sine_vr).T natoms = len(atoms) if isinstance(atoms, Filter): natoms = len(atoms.atoms) eps = H / self.r_NN v[natoms:, :] = eps v1 = v.reshape(-1) # compute LHS dE_p = -atoms.get_forces().reshape(-1) atoms_v = atoms.copy() atoms_v.set_calculator(atoms.get_calculator()) if isinstance(atoms, Filter): atoms_v = atoms.__class__(atoms_v) if hasattr(atoms, 'constant_volume'): atoms_v.constant_volume = atoms.constant_volume atoms_v.set_positions(p + v) dE_p_plus_v = -atoms_v.get_forces().reshape(-1) # compute left hand side LHS = (dE_p_plus_v - dE_p) * v1 # assemble P with \mu = 1 self.mu = 1.0 self.mu_c = 1.0 P1 = self._make_sparse_precon(atoms, initial_assembly=True) # compute right hand side RHS = P1.dot(v1) * v1 # use partial sums to compute separate mu for positions and cell DoFs self.mu = longsum(LHS[:3 * natoms]) / longsum(RHS[:3 * natoms]) if self.mu < 1.0: logger.info('mu (%.3f) < 1.0, capping at mu=1.0', self.mu) self.mu = 1.0 if isinstance(atoms, Filter): self.mu_c = longsum(LHS[3 * natoms:]) / longsum(RHS[3 * natoms:]) if self.mu_c < 1.0: logger.info( 'mu_c (%.3f) < 1.0, capping at mu_c=1.0', self.mu_c) self.mu_c = 1.0 logger.info('estimate_mu(): mu=%r, mu_c=%r', self.mu, self.mu_c) self.P = None # force a rebuild with new mu (there may be fixed atoms) return (self.mu, self.mu_c) class Pfrommer(object): """Use initial guess for inverse Hessian from Pfrommer et al. as a simple preconditioner J. Comput. Phys. vol 131 p233-240 (1997) """ def __init__(self, bulk_modulus=500 * units.GPa, phonon_frequency=50 * THz, apply_positions=True, apply_cell=True): """ Default bulk modulus is 500 GPa and default phonon frequency is 50 THz """ self.bulk_modulus = bulk_modulus self.phonon_frequency = phonon_frequency self.apply_positions = apply_positions self.apply_cell = apply_cell self.H0 = None def make_precon(self, atoms): if self.H0 is not None: # only build H0 on first call return NotImplemented variable_cell = False if isinstance(atoms, Filter): variable_cell = True atoms = atoms.atoms # position DoF omega = self.phonon_frequency mass = atoms.get_masses().mean() block = np.eye(3) / (mass * omega**2) blocks = [block] * len(atoms) # cell DoF if variable_cell: coeff = 1.0 if self.apply_cell: coeff = 1.0 / (3 * self.bulk_modulus) blocks.append(np.diag([coeff] * 9)) self.H0 = sparse.block_diag(blocks, format='csr') return NotImplemented def dot(self, x, y): """ Return the preconditioned dot product

Uses 128-bit floating point math for vector dot products """ raise NotImplementedError def solve(self, x): """ Solve the (sparse) linear system P x = y and return y """ y = self.H0.dot(x) return y class C1(Precon): """Creates matrix by inserting a constant whenever r_ij is less than r_cut. """ def __init__(self, r_cut=None, mu=None, mu_c=None, dim=3, c_stab=0.1, force_stab=False, recalc_mu=False, array_convention='C', use_pyamg=True, solve_tol=1e-9, apply_positions=True, apply_cell=True): Precon.__init__(self, r_cut=r_cut, mu=mu, mu_c=mu_c, dim=dim, c_stab=c_stab, force_stab=force_stab, recalc_mu=recalc_mu, array_convention=array_convention, use_pyamg=use_pyamg, solve_tol=solve_tol, apply_positions=apply_positions, apply_cell=apply_cell) def get_coeff(self, r): return -self.mu * np.ones_like(r) class Exp(Precon): """Creates matrix with values decreasing exponentially with distance. """ def __init__(self, A=3.0, r_cut=None, r_NN=None, mu=None, mu_c=None, dim=3, c_stab=0.1, force_stab=False, recalc_mu=False, array_convention='C', use_pyamg=True, solve_tol=1e-9, apply_positions=True, apply_cell=True, estimate_mu_eigmode=False): """Initialise an Exp preconditioner with given parameters. Args: r_cut, mu, c_stab, dim, sparse, recalc_mu, array_convention: see precon.__init__() A: coefficient in exp(-A*r/r_NN). Default is A=3.0. """ Precon.__init__(self, r_cut=r_cut, r_NN=r_NN, mu=mu, mu_c=mu_c, dim=dim, c_stab=c_stab, force_stab=force_stab, recalc_mu=recalc_mu, array_convention=array_convention, use_pyamg=use_pyamg, solve_tol=solve_tol, apply_positions=apply_positions, apply_cell=apply_cell, estimate_mu_eigmode=estimate_mu_eigmode) self.A = A def get_coeff(self, r): return -self.mu * np.exp(-self.A * (r / self.r_NN - 1)) class FF(Precon): """Creates matrix using morse/bond/angle/dihedral force field parameters. """ def __init__(self, dim=3, c_stab=0.1, force_stab=False, array_convention='C', use_pyamg=True, solve_tol=1e-9, apply_positions=True, apply_cell=True, hessian='reduced', morses=None, bonds=None, angles=None, dihedrals=None): """Initialise an FF preconditioner with given parameters. Args: dim, c_stab, force_stab, array_convention: see precon.__init__(), use_pyamg, solve_tol morses: class Morse bonds: class Bond angles: class Angle dihedrals: class Dihedral """ if (morses is None and bonds is None and angles is None and dihedrals is None): raise ImportError( 'At least one of morses, bonds, angles or dihedrals must be ' 'defined!') Precon.__init__(self, dim=dim, c_stab=c_stab, force_stab=force_stab, array_convention=array_convention, use_pyamg=use_pyamg, solve_tol=solve_tol, apply_positions=apply_positions, apply_cell=apply_cell) self.hessian = hessian self.morses = morses self.bonds = bonds self.angles = angles self.dihedrals = dihedrals def make_precon(self, atoms): start_time = time.time() # Create the preconditioner: self._make_sparse_precon(atoms, force_stab=self.force_stab) logger.info('--- Precon created in %s seconds ---', time.time() - start_time) return self.P def _make_sparse_precon(self, atoms, initial_assembly=False, force_stab=False): """ """ start_time = time.time() N = len(atoms) row = [] col = [] data = [] if self.morses is not None: for n in range(len(self.morses)): if self.hessian == 'reduced': i, j, Hx = ff.get_morse_potential_reduced_hessian( atoms, self.morses[n]) elif self.hessian == 'spectral': i, j, Hx = ff.get_morse_potential_hessian( atoms, self.morses[n], spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2] row.extend(np.repeat(x, 6)) col.extend(np.tile(x, 6)) data.extend(Hx.flatten()) if self.bonds is not None: for n in range(len(self.bonds)): if self.hessian == 'reduced': i, j, Hx = ff.get_bond_potential_reduced_hessian( atoms, self.bonds[n], self.morses) elif self.hessian == 'spectral': i, j, Hx = ff.get_bond_potential_hessian( atoms, self.bonds[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2] row.extend(np.repeat(x, 6)) col.extend(np.tile(x, 6)) data.extend(Hx.flatten()) if self.angles is not None: for n in range(len(self.angles)): if self.hessian == 'reduced': i, j, k, Hx = ff.get_angle_potential_reduced_hessian( atoms, self.angles[n], self.morses) elif self.hessian == 'spectral': i, j, k, Hx = ff.get_angle_potential_hessian( atoms, self.angles[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2, 3 * k, 3 * k + 1, 3 * k + 2] row.extend(np.repeat(x, 9)) col.extend(np.tile(x, 9)) data.extend(Hx.flatten()) if self.dihedrals is not None: for n in range(len(self.dihedrals)): if self.hessian == 'reduced': i, j, k, l, Hx = \ ff.get_dihedral_potential_reduced_hessian( atoms, self.dihedrals[n], self.morses) elif self.hessian == 'spectral': i, j, k, l, Hx = ff.get_dihedral_potential_hessian( atoms, self.dihedrals[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2, 3 * k, 3 * k + 1, 3 * k + 2, 3 * l, 3 * l + 1, 3 * l + 2] row.extend(np.repeat(x, 12)) col.extend(np.tile(x, 12)) data.extend(Hx.flatten()) row.extend(range(self.dim * N)) col.extend(range(self.dim * N)) data.extend([self.c_stab] * self.dim * N) # create the matrix start_time = time.time() self.P = sparse.csc_matrix( (data, (row, col)), shape=(self.dim * N, self.dim * N)) logger.info('--- created CSC matrix in %s s ---' % (time.time() - start_time)) fixed_atoms = [] for constraint in atoms.constraints: if isinstance(constraint, FixAtoms): fixed_atoms.extend(list(constraint.index)) else: raise TypeError( 'only FixAtoms constraints are supported by Precon class') if len(fixed_atoms) != 0: self.P.tolil() for i in fixed_atoms: self.P[i, :] = 0.0 self.P[:, i] = 0.0 self.P[i, i] = 1.0 self.P = self.P.tocsr() logger.info('--- N-dim precon created in %s s ---' % (time.time() - start_time)) # Create solver if self.use_pyamg and have_pyamg: start_time = time.time() self.ml = smoothed_aggregation_solver( self.P, B=None, strength=('symmetric', {'theta': 0.0}), smooth=( 'jacobi', {'filter': True, 'weighting': 'local'}), improve_candidates=[('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 4}), None, None, None, None, None, None, None, None, None, None, None, None, None, None], aggregate='standard', presmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), postsmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), max_levels=15, max_coarse=300, coarse_solver='pinv') logger.info('--- multi grid solver created in %s s ---' % (time.time() - start_time)) return self.P class Exp_FF(Exp, FF): """Creates matrix with values decreasing exponentially with distance. """ def __init__(self, A=3.0, r_cut=None, r_NN=None, mu=None, mu_c=None, dim=3, c_stab=0.1, force_stab=False, recalc_mu=False, array_convention='C', use_pyamg=True, solve_tol=1e-9, apply_positions=True, apply_cell=True, estimate_mu_eigmode=False, hessian='reduced', morses=None, bonds=None, angles=None, dihedrals=None): """Initialise an Exp+FF preconditioner with given parameters. Args: r_cut, mu, c_stab, dim, recalc_mu, array_convention: see precon.__init__() A: coefficient in exp(-A*r/r_NN). Default is A=3.0. """ if (morses is None and bonds is None and angles is None and dihedrals is None): raise ImportError( 'At least one of morses, bonds, angles or dihedrals must ' 'be defined!') Precon.__init__(self, r_cut=r_cut, r_NN=r_NN, mu=mu, mu_c=mu_c, dim=dim, c_stab=c_stab, force_stab=force_stab, recalc_mu=recalc_mu, array_convention=array_convention, use_pyamg=use_pyamg, solve_tol=solve_tol, apply_positions=apply_positions, apply_cell=apply_cell, estimate_mu_eigmode=estimate_mu_eigmode) self.A = A self.hessian = hessian self.morses = morses self.bonds = bonds self.angles = angles self.dihedrals = dihedrals def make_precon(self, atoms, recalc_mu=None): if self.r_NN is None: self.r_NN = estimate_nearest_neighbour_distance(atoms) if self.r_cut is None: # This is the first time this function has been called, and no # cutoff radius has been specified, so calculate it automatically. self.r_cut = 2.0 * self.r_NN elif self.r_cut < self.r_NN: warning = ('WARNING: r_cut (%.2f) < r_NN (%.2f), ' 'increasing to 1.1*r_NN = %.2f' % (self.r_cut, self.r_NN, 1.1 * self.r_NN)) logger.info(warning) print(warning) self.r_cut = 1.1 * self.r_NN if recalc_mu is None: # The caller has not specified whether or not to recalculate mu, # so the Precon's setting is used. recalc_mu = self.recalc_mu if self.mu is None: # Regardless of what the caller has specified, if we don't # currently have a value of mu, then we need one. recalc_mu = True if recalc_mu: self.estimate_mu(atoms) if self.P is not None: real_atoms = atoms if isinstance(atoms, Filter): real_atoms = atoms.atoms if self.old_positions is None: self.old_positions = wrap_positions(real_atoms.positions, real_atoms.cell) displacement = wrap_positions(real_atoms.positions, real_atoms.cell) - self.old_positions self.old_positions = real_atoms.get_positions() max_abs_displacement = abs(displacement).max() logger.info('max(abs(displacements)) = %.2f A (%.2f r_NN)', max_abs_displacement, max_abs_displacement / self.r_NN) if max_abs_displacement < 0.5 * self.r_NN: return self.P start_time = time.time() # Create the preconditioner: self._make_sparse_precon(atoms, force_stab=self.force_stab) logger.info('--- Precon created in %s seconds ---', time.time() - start_time) return self.P def _make_sparse_precon(self, atoms, initial_assembly=False, force_stab=False): """Create a sparse preconditioner matrix based on the passed atoms. Args: atoms: the Atoms object used to create the preconditioner. Returns: A scipy.sparse.csr_matrix object, representing a d*N by d*N matrix (where N is the number of atoms, and d is the value of self.dim). BE AWARE that using numpy.dot() with this object will result in errors/incorrect results - use the .dot method directly on the sparse matrix instead. """ logger.info('creating sparse precon: initial_assembly=%r, ' 'force_stab=%r, apply_positions=%r, apply_cell=%r', initial_assembly, force_stab, self.apply_positions, self.apply_cell) N = len(atoms) start_time = time.time() if self.apply_positions: # compute neighbour list i_list, j_list, rij_list, fixed_atoms = get_neighbours( atoms, self.r_cut) logger.info('--- neighbour list created in %s s ---' % (time.time() - start_time)) row = [] col = [] data = [] # precon is mu_c*identity for cell DoF if isinstance(atoms, Filter): i = N - 3 j = N - 2 k = N - 1 x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2, 3 * k, 3 * k + 1, 3 * k + 2] row.extend(x) col.extend(x) if self.apply_cell: data.extend(np.repeat(self.mu_c, 9)) else: data.extend(np.repeat(self.mu_c, 9)) logger.info('--- computed triplet format in %s s ---' % (time.time() - start_time)) conn = sparse.lil_matrix((N, N), dtype=bool) if self.apply_positions and not initial_assembly: if self.morses is not None: for n in range(len(self.morses)): if self.hessian == 'reduced': i, j, Hx = ff.get_morse_potential_reduced_hessian( atoms, self.morses[n]) elif self.hessian == 'spectral': i, j, Hx = ff.get_morse_potential_hessian( atoms, self.morses[n], spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2] row.extend(np.repeat(x, 6)) col.extend(np.tile(x, 6)) data.extend(Hx.flatten()) conn[i, j] = True conn[j, i] = True if self.bonds is not None: for n in range(len(self.bonds)): if self.hessian == 'reduced': i, j, Hx = ff.get_bond_potential_reduced_hessian( atoms, self.bonds[n], self.morses) elif self.hessian == 'spectral': i, j, Hx = ff.get_bond_potential_hessian( atoms, self.bonds[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2] row.extend(np.repeat(x, 6)) col.extend(np.tile(x, 6)) data.extend(Hx.flatten()) conn[i, j] = True conn[j, i] = True if self.angles is not None: for n in range(len(self.angles)): if self.hessian == 'reduced': i, j, k, Hx = ff.get_angle_potential_reduced_hessian( atoms, self.angles[n], self.morses) elif self.hessian == 'spectral': i, j, k, Hx = ff.get_angle_potential_hessian( atoms, self.angles[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2, 3 * k, 3 * k + 1, 3 * k + 2] row.extend(np.repeat(x, 9)) col.extend(np.tile(x, 9)) data.extend(Hx.flatten()) conn[i, j] = conn[i, k] = conn[j, k] = True conn[j, i] = conn[k, i] = conn[k, j] = True if self.dihedrals is not None: for n in range(len(self.dihedrals)): if self.hessian == 'reduced': i, j, k, l, Hx = \ ff.get_dihedral_potential_reduced_hessian( atoms, self.dihedrals[n], self.morses) elif self.hessian == 'spectral': i, j, k, l, Hx = ff.get_dihedral_potential_hessian( atoms, self.dihedrals[n], self.morses, spectral=True) else: raise NotImplementedError('Not implemented hessian') x = [3 * i, 3 * i + 1, 3 * i + 2, 3 * j, 3 * j + 1, 3 * j + 2, 3 * k, 3 * k + 1, 3 * k + 2, 3 * l, 3 * l + 1, 3 * l + 2] row.extend(np.repeat(x, 12)) col.extend(np.tile(x, 12)) data.extend(Hx.flatten()) conn[i, j] = conn[i, k] = conn[i, l] = conn[ j, k] = conn[j, l] = conn[k, l] = True conn[j, i] = conn[k, i] = conn[l, i] = conn[ k, j] = conn[l, j] = conn[l, k] = True if self.apply_positions: for i, j, rij in zip(i_list, j_list, rij_list): if not conn[i, j]: coeff = self.get_coeff(rij) x = [3 * i, 3 * i + 1, 3 * i + 2] y = [3 * j, 3 * j + 1, 3 * j + 2] row.extend(x + x) col.extend(x + y) data.extend(3 * [-coeff] + 3 * [coeff]) row.extend(range(self.dim * N)) col.extend(range(self.dim * N)) if initial_assembly: data.extend([self.mu * self.c_stab] * self.dim * N) else: data.extend([self.c_stab] * self.dim * N) # create the matrix start_time = time.time() self.P = sparse.csc_matrix( (data, (row, col)), shape=(self.dim * N, self.dim * N)) logger.info('--- created CSC matrix in %s s ---' % (time.time() - start_time)) if not initial_assembly: if len(fixed_atoms) != 0: self.P.tolil() for i in fixed_atoms: self.P[i, :] = 0.0 self.P[:, i] = 0.0 self.P[i, i] = 1.0 self.P = self.P.tocsr() # Create solver if self.use_pyamg and have_pyamg: start_time = time.time() self.ml = smoothed_aggregation_solver( self.P, B=None, strength=('symmetric', {'theta': 0.0}), smooth=( 'jacobi', {'filter': True, 'weighting': 'local'}), improve_candidates=[('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 4}), None, None, None, None, None, None, None, None, None, None, None, None, None, None], aggregate='standard', presmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), postsmoother=('block_gauss_seidel', {'sweep': 'symmetric', 'iterations': 1}), max_levels=15, max_coarse=300, coarse_solver='pinv') logger.info('--- multi grid solver created in %s s ---' % (time.time() - start_time)) return self.P ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/sciopt.py000066400000000000000000000261261316323560300242610ustar00rootroot00000000000000import numpy as np try: import scipy.optimize as opt except ImportError: pass from ase.optimize.optimize import Optimizer class Converged(Exception): pass class OptimizerConvergenceError(Exception): pass class SciPyOptimizer(Optimizer): """General interface for SciPy optimizers Only the call to the optimizer is still needed """ def __init__(self, atoms, logfile='-', trajectory=None, callback_always=False, alpha=70.0, master=None, force_consistent=None): """Initialize object Parameters: atoms: Atoms object The Atoms object to relax. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. callback_always: book Should the callback be run after each force call (also in the linesearch) alpha: float Initial guess for the Hessian (curvature of energy surface). A conservative value of 70.0 is the default, but number of needed steps to converge might be less if a lower value is used. However, a lower value also means risk of instability. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). By default (force_consistent=None) uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. """ restart = None Optimizer.__init__(self, atoms, restart, logfile, trajectory, master, force_consistent) self.force_calls = 0 self.callback_always = callback_always self.H0 = alpha def x0(self): """Return x0 in a way SciPy can use This class is mostly usable for subclasses wanting to redefine the parameters (and the objective function)""" return self.atoms.get_positions().reshape(-1) def f(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) # Scale the problem as SciPy uses I as initial Hessian. return (self.atoms.get_potential_energy( force_consistent=self.force_consistent) / self.H0) def fprime(self, x): """Gradient of the objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.force_calls += 1 if self.callback_always: self.callback(x) # Remember that forces are minus the gradient! # Scale the problem as SciPy uses I as initial Hessian. return - self.atoms.get_forces().reshape(-1) / self.H0 def callback(self, x): """Callback function to be run after each iteration by SciPy This should also be called once before optimization starts, as SciPy optimizers only calls it after each iteration, while ase optimizers call something similar before as well. """ f = self.atoms.get_forces() self.log(f) self.call_observers() if self.converged(f): raise Converged self.nsteps += 1 def run(self, fmax=0.05, steps=100000000): if self.force_consistent is None: self.set_force_consistent() self.fmax = fmax # As SciPy does not log the zeroth iteration, we do that manually self.callback(None) try: # Scale the problem as SciPy uses I as initial Hessian. self.call_fmin(fmax / self.H0, steps) except Converged: pass def dump(self, data): pass def load(self): pass def call_fmin(self, fmax, steps): raise NotImplementedError class SciPyFminCG(SciPyOptimizer): """Non-linear (Polak-Ribiere) conjugate gradient algorithm""" def call_fmin(self, fmax, steps): output = opt.fmin_cg(self.f, self.x0(), fprime=self.fprime, # args=(), gtol=fmax * 0.1, # Should never be reached norm=np.inf, # epsilon= maxiter=steps, full_output=1, disp=0, # retall=0, callback=self.callback) warnflag = output[-1] if warnflag == 2: raise OptimizerConvergenceError( 'Warning: Desired error not necessarily achieved ' 'due to precision loss') class SciPyFminBFGS(SciPyOptimizer): """Quasi-Newton method (Broydon-Fletcher-Goldfarb-Shanno)""" def call_fmin(self, fmax, steps): output = opt.fmin_bfgs(self.f, self.x0(), fprime=self.fprime, # args=(), gtol=fmax * 0.1, # Should never be reached norm=np.inf, # epsilon=1.4901161193847656e-08, maxiter=steps, full_output=1, disp=0, # retall=0, callback=self.callback) warnflag = output[-1] if warnflag == 2: raise OptimizerConvergenceError( 'Warning: Desired error not necessarily achieved ' 'due to precision loss') class SciPyGradientlessOptimizer(Optimizer): """General interface for gradient less SciPy optimizers Only the call to the optimizer is still needed Note: If you redefine x0() and f(), you don't even need an atoms object. Redefining these also allows you to specify an arbitrary objective function. XXX: This is still a work in progress """ def __init__(self, atoms, logfile='-', trajectory=None, callback_always=False, master=None, force_consistent=None): """Initialize object Parameters: atoms: Atoms object The Atoms object to relax. trajectory: string Pickle file used to store trajectory of atomic movement. logfile: file object or str If *logfile* is a string, a file with that name will be opened. Use '-' for stdout. callback_always: book Should the callback be run after each force call (also in the linesearch) alpha: float Initial guess for the Hessian (curvature of energy surface). A conservative value of 70.0 is the default, but number of needed steps to converge might be less if a lower value is used. However, a lower value also means risk of instability. master: boolean Defaults to None, which causes only rank 0 to save files. If set to true, this rank will save files. force_consistent: boolean or None Use force-consistent energy calls (as opposed to the energy extrapolated to 0 K). By default (force_consistent=None) uses force-consistent energies if available in the calculator, but falls back to force_consistent=False if not. """ restart = None Optimizer.__init__(self, atoms, restart, logfile, trajectory, master, force_consistent) self.function_calls = 0 self.callback_always = callback_always def x0(self): """Return x0 in a way SciPy can use This class is mostly usable for subclasses wanting to redefine the parameters (and the objective function)""" return self.atoms.get_positions().reshape(-1) def f(self, x): """Objective function for use of the optimizers""" self.atoms.set_positions(x.reshape(-1, 3)) self.function_calls += 1 # Scale the problem as SciPy uses I as initial Hessian. return self.atoms.get_potential_energy( force_consistent=self.force_consistent) def callback(self, x): """Callback function to be run after each iteration by SciPy This should also be called once before optimization starts, as SciPy optimizers only calls it after each iteration, while ase optimizers call something similar before as well. """ # We can't assume that forces are available! # f = self.atoms.get_forces() # self.log(f) self.call_observers() # if self.converged(f): # raise Converged self.nsteps += 1 def run(self, ftol=0.01, xtol=0.01, steps=100000000): if self.force_consistent is None: self.set_force_consistent() self.xtol = xtol self.ftol = ftol # As SciPy does not log the zeroth iteration, we do that manually self.callback(None) try: # Scale the problem as SciPy uses I as initial Hessian. self.call_fmin(xtol, ftol, steps) except Converged: pass def dump(self, data): pass def load(self): pass def call_fmin(self, fmax, steps): raise NotImplementedError class SciPyFmin(SciPyGradientlessOptimizer): """Nelder-Mead Simplex algorithm Uses only function calls. XXX: This is still a work in progress """ def call_fmin(self, xtol, ftol, steps): opt.fmin(self.f, self.x0(), # args=(), xtol=xtol, ftol=ftol, maxiter=steps, # maxfun=None, # full_output=1, disp=0, # retall=0, callback=self.callback) class SciPyFminPowell(SciPyGradientlessOptimizer): """Powell's (modified) level set method Uses only function calls. XXX: This is still a work in progress """ def __init__(self, *args, **kwargs): """Parameters: direc: float How much to change x to initially. Defaults to 0.04. """ direc = kwargs.pop('direc', None) SciPyGradientlessOptimizer.__init__(self, *args, **kwargs) if direc is None: self.direc = np.eye(len(self.x0()), dtype=float) * 0.04 else: self.direc = np.eye(len(self.x0()), dtype=float) * direc def call_fmin(self, xtol, ftol, steps): opt.fmin_powell(self.f, self.x0(), # args=(), xtol=xtol, ftol=ftol, maxiter=steps, # maxfun=None, # full_output=1, disp=0, # retall=0, callback=self.callback, direc=self.direc) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/000077500000000000000000000000001316323560300233565ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/C2_Cu100.py000077500000000000000000000113401316323560300250460ustar00rootroot00000000000000#PBS -l nodes=4:ppn=8 #PBS -l walltime=13:00:00 import numpy as np from ase import Atoms from ase.constraints import FixedPlane, FixAtoms from ase.optimize.test import run_test from gpaw import GPAW, Mixer from gpaw.poisson import PoissonSolver def get_calculator(): basis = 'szp(dzp)' calc = GPAW(gpts=(64, 64, 128), # ca h=0.25 width=0.1, nbands=-5, xc='LDA', mode='lcao', txt='C2_Cu100.txt', mixer=Mixer(beta=0.1, nmaxold=5, weight=50.0), poissonsolver=PoissonSolver(nn='M', relax='GS'), stencils=(3, 3), maxiter=400, basis=basis) return calc def get_atoms(): srf = Atoms('Cu64',[(1.2763, 1.2763, 4.0000), (3.8290, 1.2763, 4.0000), (6.3816, 1.2763, 4.0000), (8.9343, 1.2763, 4.0000), (1.2763, 3.8290, 4.0000), (3.8290, 3.8290, 4.0000), (6.3816, 3.8290, 4.0000), (8.9343, 3.8290, 4.0000), (1.2763, 6.3816, 4.0000), (3.8290, 6.3816, 4.0000), (6.3816, 6.3816, 4.0000), (8.9343, 6.3816, 4.0000), (1.2763, 8.9343, 4.0000), (3.8290, 8.9343, 4.0000), (6.3816, 8.9343, 4.0000), (8.9343, 8.9343, 4.0000), (0.0000, 0.0000, 5.8050), (2.5527, 0.0000, 5.8050), (5.1053, 0.0000, 5.8050), (7.6580, 0.0000, 5.8050), (0.0000, 2.5527, 5.8050), (2.5527, 2.5527, 5.8050), (5.1053, 2.5527, 5.8050), (7.6580, 2.5527, 5.8050), (0.0000, 5.1053, 5.8050), (2.5527, 5.1053, 5.8050), (5.1053, 5.1053, 5.8050), (7.6580, 5.1053, 5.8050), (0.0000, 7.6580, 5.8050), (2.5527, 7.6580, 5.8050), (5.1053, 7.6580, 5.8050), (7.6580, 7.6580, 5.8050), (1.2409, 1.2409, 7.6081), (3.7731, 1.2803, 7.6603), (6.3219, 1.3241, 7.6442), (8.8935, 1.2669, 7.6189), (1.2803, 3.7731, 7.6603), (3.8188, 3.8188, 7.5870), (6.3457, 3.8718, 7.6649), (8.9174, 3.8340, 7.5976), (1.3241, 6.3219, 7.6442), (3.8718, 6.3457, 7.6649), (6.3945, 6.3945, 7.6495), (8.9576, 6.3976, 7.6213), (1.2669, 8.8935, 7.6189), (3.8340, 8.9174, 7.5976), (6.3976, 8.9576, 7.6213), (8.9367, 8.9367, 7.6539), (0.0582, 0.0582, 9.4227), (2.5965, -0.2051, 9.4199), (5.1282, 0.0663, 9.4037), (7.6808, -0.0157, 9.4235), (-0.2051, 2.5965, 9.4199), (2.1913, 2.1913, 9.6123), (5.0046, 2.5955, 9.4873), (7.5409, 2.5336, 9.4126), (0.0663, 5.1282, 9.4037), (2.5955, 5.0046, 9.4873), (5.3381, 5.3381, 9.6106), (7.8015, 5.0682, 9.4237), (-0.0157, 7.6808, 9.4235), (2.5336, 7.5409, 9.4126), (5.0682, 7.8015, 9.4237), (7.6155, 7.6155, 9.4317)]) c2=Atoms('C2', [(3.2897, 3.2897, 10.6627), (4.2113, 4.2113, 10.6493)]) srf.extend(c2) srf.pbc=(1, 1, 0) srf.set_cell([ 10.2106, 10.2106, 20.6572],scale_atoms=False) mask=[a.index < 32 for a in srf] c1 = FixedPlane(-1, (1/np.sqrt(2), 1/np.sqrt(2), 1)) c2 = FixedPlane(-2, (1/np.sqrt(2), 1/np.sqrt(2), 1)) constraint = FixAtoms(mask=mask) srf.set_constraint([constraint, c1, c2]) return srf run_test(get_atoms, get_calculator, 'C2_Cu100') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/C5H12.py000066400000000000000000000040671316323560300244610ustar00rootroot00000000000000#/usr/bin/env python #PBS -l nodes=4:ppn=8 #PBS -l walltime=13:00:00 from ase import Atoms from ase.optimize.test import run_test from gpaw import GPAW from gpaw import Mixer from gpaw.poisson import PoissonSolver name = 'C5H12' def get_atoms(): atoms = Atoms(symbols='C5H12', pbc=[False, False, False], cell=[ [ 16.83752497, 0. , 0. ], [ 0. , 12.18645905, 0. ], [ 0. , 0. , 11.83462179] ], positions=[ [ 5.90380523, 5.65545388, 5.91569796], [ 7.15617518, 6.52907738, 5.91569796], [ 8.41815022, 5.66384716, 5.92196554], [ 9.68108996, 6.52891016, 5.91022362], [ 10.93006206, 5.65545388, 5.91569796], [ 5.00000011, 6.30002353, 5.9163716 ], [ 5.88571848, 5.0122839 , 6.82246859], [ 5.88625613, 5.01308931, 5.01214155], [ 7.14329342, 7.18115393, 6.81640316], [ 7.14551332, 7.17200869, 5.00879027], [ 8.41609966, 5.00661165, 5.02355167], [ 8.41971183, 5.0251482 , 6.83462168], [ 9.69568096, 7.18645894, 6.8078633 ], [ 9.68914668, 7.16663649, 5.00000011], [ 10.95518898, 5.02163182, 6.8289018 ], [ 11.83752486, 6.29836826, 5.90274952], [ 10.94464142, 5.00000011, 5.01802495] ]) return atoms def get_calculator(): calc = GPAW(h=0.2, mode = 'lcao', basis = 'szp(dzp)', mixer=Mixer(beta=0.1, nmaxold=5, weight=50.0), poissonsolver=PoissonSolver(nn='M', relax='GS'), txt='C5H12.txt') return calc run_test(get_atoms, get_calculator, name + '-gpaw') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/CO_Au111.py000066400000000000000000000015341316323560300251040ustar00rootroot00000000000000from math import sin, cos, pi from ase import Atoms from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize.test import run_test from ase.build import fcc111, add_adsorbate name = 'CO_Au111' def get_atoms(): zpos = cos(134.3/2.0*pi/180.0)*1.197 xpos = sin(134.3/2.0*pi/180.0)*1.19 no2 =Atoms('CO', positions=[(-xpos+1.2,0,-zpos), (-xpos+1.2,-1.1,-zpos)]) # Surface slab slab =fcc111('Au', size=(2, 2, 4),vacuum=2*5, orthogonal = True ) slab.center() add_adsorbate(slab,no2,1.5,'bridge') slab.set_pbc((True,True,False)) #constraints constraint = FixAtoms(mask=[(a.tag == 4) or (a.tag == 3) or (a.tag==2) for a in slab]) slab.set_constraint(constraint) return slab def get_calculator(): calc = EMT() return calc run_test(get_atoms, get_calculator, name, steps=200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/Cu_bulk.py000066400000000000000000000006771316323560300253260ustar00rootroot00000000000000from ase.calculators.emt import EMT from ase.lattice.cubic import FaceCenteredCubic from ase.optimize.test import run_test name = 'Cu_bulk' def get_atoms(): atoms = FaceCenteredCubic(directions=[[1,-1,0], [1,1,0], [0,0,1]], size=(3,3,3), symbol='Cu', pbc=(1,1,1)) atoms.rattle(stdev=0.1,seed=42) return atoms def get_calculator(): return EMT() run_test(get_atoms, get_calculator, name, fmax=0.02) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/H2.py000066400000000000000000000010221316323560300241740ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.optimize.test import run_test from gpaw import GPAW name = 'H2' def get_atoms(): cell = (5, 5, 5) atoms = Atoms('H2', [(0, 0, 0), (0, 0, 1.4)], cell=cell) atoms.center() return atoms def get_calculator_emt(): calc = EMT() return calc def get_calculator_gpaw(): calc = GPAW(xc='PBE',txt=None) return calc run_test(get_atoms, get_calculator_emt, name + '-emt') run_test(get_atoms, get_calculator_gpaw, name + '-gpaw', steps=25) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/N2Cu_relax.py000066400000000000000000000101471316323560300256750ustar00rootroot00000000000000from ase import Atoms, Atom from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize.test import run_test name = 'N2Cu' def get_atoms_surf(): a = 2.70 c = 1.59 * a slab = Atoms('2Cu', [(0., 0., 0.), (1/3., 1/3., -0.5*c)], tags=(0, 1), pbc=(1, 1, 0)) slab.set_cell([(a, 0, 0), (a / 2, 3**0.5 * a / 2, 0), (0, 0, 1)]) slab = slab.repeat((4, 4, 1)) mask = [a.tag == 1 for a in slab] slab.set_constraint(FixAtoms(mask=mask)) return slab def get_atoms_adsorbate(): # We need the relaxed slab here! slab = Atoms([ Atom('Cu', [ -1.028468159509163, -0.432387156877267, -0.202086055768265]), Atom('Cu', [ 0.333333333333333, 0.333333333333333, -2.146500000000000]), Atom('Cu', [ 1.671531840490805, -0.432387156877287, -0.202086055768242]), Atom('Cu', [ 3.033333333333334, 0.333333333333333, -2.146500000000000]), Atom('Cu', [ 4.371531840490810, -0.432387156877236, -0.202086055768261]), Atom('Cu', [ 5.733333333333333, 0.333333333333333, -2.146500000000000]), Atom('Cu', [ 7.071531840490944, -0.432387156877258, -0.202086055768294]), Atom('Cu', [ 8.433333333333335, 0.333333333333333, -2.146500000000000]), Atom('Cu', [ 0.321531840490810, 1.905881433340708, -0.202086055768213]), Atom('Cu', [ 1.683333333333333, 2.671601923551318, -2.146500000000000]), Atom('Cu', [ 3.021531840490771, 1.905881433340728, -0.202086055768250]), Atom('Cu', [ 4.383333333333334, 2.671601923551318, -2.146500000000000]), Atom('Cu', [ 5.721531840490857, 1.905881433340735, -0.202086055768267]), Atom('Cu', [ 7.083333333333333, 2.671601923551318, -2.146500000000000]), Atom('Cu', [ 8.421531840490820, 1.905881433340739, -0.202086055768265]), Atom('Cu', [ 9.783333333333335, 2.671601923551318, -2.146500000000000]), Atom('Cu', [ 1.671531840490742, 4.244150023558601, -0.202086055768165]), Atom('Cu', [ 3.033333333333334, 5.009870513769302, -2.146500000000000]), Atom('Cu', [ 4.371531840490840, 4.244150023558694, -0.202086055768265]), Atom('Cu', [ 5.733333333333333, 5.009870513769302, -2.146500000000000]), Atom('Cu', [ 7.071531840490880, 4.244150023558786, -0.202086055768352]), Atom('Cu', [ 8.433333333333335, 5.009870513769302, -2.146500000000000]), Atom('Cu', [ 9.771531840491031, 4.244150023558828, -0.202086055768371]), Atom('Cu', [ 11.133333333333335, 5.009870513769302, -2.146500000000000]), Atom('Cu', [ 3.021531840490714, 6.582418613776583, -0.202086055768197]), Atom('Cu', [ 4.383333333333334, 7.348139103987287, -2.146500000000000]), Atom('Cu', [ 5.721531840490814, 6.582418613776629, -0.202086055768203]), Atom('Cu', [ 7.083333333333333, 7.348139103987287, -2.146500000000000]), Atom('Cu', [ 8.421531840490985, 6.582418613776876, -0.202086055768357]), Atom('Cu', [ 9.783333333333335, 7.348139103987287, -2.146500000000000]), Atom('Cu', [ 11.121531840490929, 6.582418613776676, -0.202086055768221]), Atom('Cu', [ 12.483333333333334, 7.348139103987287, -2.146500000000000]), ]) mask = [a.position[2] < -1 for a in slab] slab.set_constraint(FixAtoms(mask=mask)) h = 1.85 d = 1.10 molecule = Atoms('2N', positions=[(0., 0., h), (0., 0., h + d)]) molecule.set_calculator(EMT()) slab.extend(molecule) return slab def get_calculator(): return EMT() run_test(get_atoms_surf, get_calculator, name + '-surf', steps=200) run_test(get_atoms_adsorbate, get_calculator, name + '-N2', steps=200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/__init__.py000066400000000000000000000110551316323560300254710ustar00rootroot00000000000000"""Define a helper function for running tests The skeleton for making a new setup is as follows: from ase.optimize.test import run_test def get_atoms(): return Atoms('H') def get_calculator(): return EMT() run_test(get_atoms, get_calculator, 'Hydrogen') """ import time from ase.optimize.bfgs import BFGS from ase.optimize.lbfgs import LBFGS, LBFGSLineSearch from ase.optimize.fire import FIRE from ase.optimize.mdmin import MDMin from ase.optimize.sciopt import SciPyFminCG from ase.optimize.sciopt import SciPyFminBFGS from ase.optimize.bfgslinesearch import BFGSLineSearch from ase.optimize.oldqn import GoodOldQuasiNewton from ase.parallel import rank, paropen import matplotlib.pyplot as pl import numpy as np import traceback optimizers = [ 'BFGS', 'LBFGS', 'LBFGSLineSearch', 'FIRE', 'MDMin', 'SciPyFminCG', 'SciPyFminBFGS', 'BFGSLineSearch', 'GoodOldQuasiNewton'] def get_optimizer(optimizer): if optimizer == 'BFGS': return BFGS elif optimizer == 'LBFGS': return LBFGS elif optimizer == 'LBFGSLineSearch': return LBFGSLineSearch elif optimizer == 'FIRE': return FIRE elif optimizer == 'MDMin': return MDMin elif optimizer == 'SciPyFminCG': return SciPyFminCG elif optimizer == 'SciPyFminBFGS': return SciPyFminBFGS elif optimizer == 'BFGSLineSearch': return BFGSLineSearch elif optimizer == 'GoodOldQuasiNewton': return GoodOldQuasiNewton def run_test(get_atoms, get_calculator, name, fmax=0.05, steps=100, plot=True): plotter = Plotter(name, fmax) csvwriter = CSVWriter(name) # write header row = ['Optimizer', 'Optimizer Steps', 'Force evaluations', 'Energy'] row.extend(['Time [sec]', 'Note']) format = '%s,%s,%s,%s,%s,%s\n' csvwriter.write(row, format) for optimizer in optimizers: note = '' atoms = get_atoms() atoms.set_calculator(get_calculator()) opt = get_optimizer(optimizer) relax = opt(atoms, logfile=None) obs = DataObserver(atoms) relax.attach(obs) t = time.time() try: relax.run(fmax = fmax, steps = steps) E = atoms.get_potential_energy() if relax.get_number_of_steps() == steps: note = 'Not converged in %i steps' % steps except Exception: traceback.print_exc() note = 'An exception occurred' E = np.nan t = time.time() - t nsteps = relax.get_number_of_steps() if hasattr(relax, 'force_calls'): fc = relax.force_calls if rank == 0: print('%-15s %-15s %3i %8.3f (%3i) %s' % (name, optimizer, nsteps, E, fc, note)) else: fc = nsteps if rank == 0: print('%-15s %-15s %3i %8.3f %s' % (name, optimizer, nsteps, E, note)) plotter.plot(optimizer, obs.get_E(), obs.get_fmax()) format = '%s,%i,%i,%.5f,%i,%s\n' row = [optimizer, nsteps, fc, E] row.extend([int(t), note]) csvwriter.write(row, format) plotter.save() csvwriter.finalize() class Plotter: def __init__(self, name, fmax): self.name = name self.fmax = fmax if rank == 0: self.fig = pl.figure(figsize=[12.0, 9.0]) self.axes0 = self.fig.add_subplot(2, 1, 1) self.axes1 = self.fig.add_subplot(2, 1, 2) def plot(self, optimizer, E, fmax): if rank == 0: self.axes0.plot(E, label = optimizer) self.axes1.plot(fmax) def save(self, format='png'): if rank == 0: self.axes0.legend() self.axes0.set_title(self.name) self.axes0.set_ylabel('E [eV]') self.axes1.set_xlabel('steps') self.axes1.set_ylabel('fmax [eV/A]') self.axes1.set_yscale('log') self.axes1.axhline(self.fmax, color='k', linestyle='--') self.fig.savefig(self.name + '.' + format) class CSVWriter: def __init__(self, name): self.f = paropen(name + '.csv', 'w') def write(self, row, format): self.f.write(format % tuple(row)) def finalize(self): self.f.close() class DataObserver: def __init__(self, atoms): self.atoms = atoms self.E = [] self.fmax = [] def __call__(self): self.E.append(self.atoms.get_potential_energy()) self.fmax.append(np.sqrt((self.atoms.get_forces()**2).sum(axis=1)).max()) def get_E(self): return np.array(self.E) def get_fmax(self): return np.array(self.fmax) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/generate_rst.py000066400000000000000000000031311316323560300264100ustar00rootroot00000000000000import os import re dirlist = os.listdir('.') name = '.*\.csv' filterre = re.compile(name) dirlist = list(filter(filterre.search, dirlist)) namelist = [d.strip('.csv') for d in dirlist] f = open('testoptimize.rst', 'w') f.write( """.. _optimizer_tests: =============== Optimizer tests =============== This page shows benchmarks of optimizations done with our different optimizers. Note that the iteration number (steps) is not the same as the number of force evaluations. This is because some of the optimizers uses internal line searches or similar. The most important performance characteristics of an optimizer is the total optimization time. Different optimizers may perform the same number of steps, but along a different path, so the time spent on calculation of energy/forces will be different. """ ) for name in namelist: lines = open(name + '.csv', 'r').read().split('\n') firstline = lines.pop(0) f.write( '\n' + name + '\n' + \ '=' * len(name) + '\n' 'Calculator used: %s\n' % firstline.split(',')[-1] + \ '\n' + \ '=============== ===== ================= ========== ===============\n' + \ 'Optimizer Steps Force evaluations Energy Note \n' + \ '=============== ===== ================= ========== ===============\n' ) for line in lines: if len(line): print(line.split(',')) f.write( '%-15s %5s %17s %10s %s\n' % tuple(line.split(',')) ) f.write( '=============== ===== ================= ========== ===============\n' ) f.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/nanoparticle.py000066400000000000000000000026021316323560300264070ustar00rootroot00000000000000from ase import Atoms from ase.constraints import FixAtoms from ase.optimize.test import run_test from gpaw import GPAW from gpaw import Mixer from gpaw.poisson import PoissonSolver name = 'nanoparticle' def get_atoms(): atoms = Atoms('Pd4NH', [[5.078689759346383, 5.410678028467162, 4.000000000000000], [7.522055777772603, 4.000000000000000, 4.000000000000000], [7.522055777772603, 6.821356056934325, 4.000000000000000], [6.707600438297196, 5.410678028467162, 6.303627574066606], [4.807604264052752, 5.728625577716107, 5.919407072553396], [4.000000000000000, 5.965167390141987, 6.490469524180266]]) constraint = FixAtoms(mask=[a.symbol == 'Pd' for a in atoms]) atoms.set_constraint(constraint) atoms.center(vacuum=4.0) return atoms def get_calculator(): calc = GPAW(gpts=(64, 64, 64), # h=0.18, gives 64x60x60 mode='lcao', basis='szp(dzp)', nbands=-5, xc='LDA', width=0.1, mixer=Mixer(beta=0.1, nmaxold=5, weight=50.0), poissonsolver=PoissonSolver(nn='M', relax='GS'), convergence={'energy': 1e-4, 'bands': -3}, txt='nanoparticle.txt') return calc run_test(get_atoms, get_calculator, name, fmax=0.05, steps=200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/neb.py000066400000000000000000000041161316323560300244760ustar00rootroot00000000000000#PBS -l nodes=4:ppn=8 #PBS -l walltime=13:00:00 from ase.optimize import QuasiNewton from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.build import fcc100, add_adsorbate from ase.optimize.test import run_test from gpaw import GPAW import gpaw.mpi as mpi name = 'neb' def get_atoms(): # 2x2-Al(001) surface with 3 layers and an # Au atom adsorbed in a hollow site: slab = fcc100('Al', size=(2, 2, 3)) add_adsorbate(slab, 'Au', 1.7, 'hollow') slab.center(axis=2, vacuum=4.0) # Fix second and third layers: mask = [atom.tag > 1 for atom in slab] slab.set_constraint(FixAtoms(mask=mask)) # Use EMT potential: slab.set_calculator(EMT()) # Initial state: qn = QuasiNewton(slab, logfile=None) qn.run(fmax=0.05) initial = slab.copy() # Final state: slab[-1].x += slab.get_cell()[0, 0] / 2 qn = QuasiNewton(slab, logfile=None) qn.run(fmax=0.05) final = slab.copy() # Setup a NEB calculation constraint = FixAtoms(mask=[atom.tag > 1 for atom in initial]) images = [initial] for i in range(3): image = initial.copy() image.set_constraint(constraint) images.append(image) images.append(final) neb = NEB(images, parallel=mpi.parallel) neb.interpolate() def set_calculator(calc): i = 0 for image in neb.images[1:-1]: if not mpi.parallel or mpi.rank // (mpi.size // 3) == i: image.set_calculator(calc) i += 1 neb.set_calculator = set_calculator return neb def get_calculator_emt(): return EMT() def get_calculator_gpaw(): if mpi.parallel: assert mpi.size % 3 == 0 s = mpi.size // 3 r0 = mpi.rank // s * s comm = range(r0, r0 + s) else: comm = mpi.world calc = GPAW(h=0.25, kpts=(2, 2, 1), communicator=comm, txt='neb-%d.txt' % r0) return calc run_test(get_atoms, get_calculator_emt, name + '-emt') run_test(get_atoms, get_calculator_gpaw, name + '-gpaw') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/optimize/test/test.py000066400000000000000000000005021316323560300247040ustar00rootroot00000000000000import ase tests = [ 'N2Cu_relax.py', 'Cu_bulk.py', 'CO_Au111.py', 'H2.py', 'C5H12.py', 'nanoparticle.py', # SLOW # 'C2_Cu100.py', # Extremely slow ] for test in tests: filename = ase.__path__[0] + '/optimize/test/' + test exec(compile(open(filename).read(), filename, 'exec'), {}) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/parallel.py000066400000000000000000000155321316323560300227130ustar00rootroot00000000000000from __future__ import print_function, division import atexit import functools import pickle import sys import time import numpy as np from ase.utils import devnull def get_txt(txt, rank): if hasattr(txt, 'write'): # Note: User-supplied object might write to files from many ranks. return txt elif rank == 0: if txt is None: return devnull elif txt == '-': return sys.stdout else: return open(txt, 'w', 1) else: return devnull def paropen(name, mode='r', buffering=-1): """MPI-safe version of open function. In read mode, the file is opened on all nodes. In write and append mode, the file is opened on the master only, and /dev/null is opened on all other nodes. """ if world.rank > 0 and mode[0] != 'r': name = '/dev/null' return open(name, mode, buffering) def parprint(*args, **kwargs): """MPI-safe print - prints only from master. """ if world.rank == 0: print(*args, **kwargs) class DummyMPI: rank = 0 size = 1 def sum(self, a): if isinstance(a, np.ndarray) and a.ndim > 0: pass else: return a def barrier(self): pass def broadcast(self, a, rank): pass class MPI4PY: def __init__(self): from mpi4py import MPI self.comm_world = MPI.COMM_WORLD self.comm = self.comm_world self.rank = self.comm.rank self.size = self.comm.size def sum(self, a): return self.comm.allreduce(a) def split(self, split_size=None): """Divide the communicator.""" # color - subgroup id # key - new subgroup rank if not split_size: split_size = self.size color = int(self.rank // (self.size / split_size)) key = int(self.rank % (self.size / split_size)) self.comm = self.comm.Split(color, key) self.rank = self.comm.rank self.size = self.comm.size def barrier(self): self.comm.barrier() def abort(self, code): self.comm.Abort(code) def broadcast(self, a, rank): a[:] = self.comm.bcast(a, root=rank) # Check for special MPI-enabled Python interpreters: if '_gpaw' in sys.builtin_module_names: # http://wiki.fysik.dtu.dk/gpaw import _gpaw world = _gpaw.Communicator() elif '_asap' in sys.builtin_module_names: # Modern version of Asap # http://wiki.fysik.dtu.dk/asap # We cannot import asap3.mpi here, as that creates an import deadlock import _asap world = _asap.Communicator() elif 'asapparallel3' in sys.modules: # Older version of Asap import asapparallel3 world = asapparallel3.Communicator() elif 'Scientific_mpi' in sys.modules: from Scientific.MPI import world elif 'mpi4py' in sys.modules: world = MPI4PY() else: # This is a standard Python interpreter: world = DummyMPI() rank = world.rank size = world.size barrier = world.barrier def broadcast(obj, root=0, comm=world): """Broadcast a Python object across an MPI communicator and return it.""" if comm.rank == root: string = pickle.dumps(obj, pickle.HIGHEST_PROTOCOL) n = np.array([len(string)], int) else: string = None n = np.empty(1, int) comm.broadcast(n, root) if comm.rank == root: string = np.fromstring(string, np.int8) else: string = np.zeros(n, np.int8) comm.broadcast(string, root) if comm.rank == root: return obj else: return pickle.loads(string.tostring()) def parallel_function(func): """Decorator for broadcasting from master to slaves using MPI. Disable by passing parallel=False to the function. For a method, you can also disable the parallel behavior by giving the instance a self.serial = True. """ if world.size == 1: return func @functools.wraps(func) def new_func(*args, **kwargs): if (args and getattr(args[0], 'serial', False) or not kwargs.pop('parallel', True)): # Disable: return func(*args, **kwargs) ex = None result = None if world.rank == 0: try: result = func(*args, **kwargs) except Exception as ex: pass ex, result = broadcast((ex, result)) if ex is not None: raise ex return result return new_func def parallel_generator(generator): """Decorator for broadcasting yields from master to slaves using MPI. Disable by passing parallel=False to the function. For a method, you can also disable the parallel behavior by giving the instance a self.serial = True. """ if world.size == 1: return generator @functools.wraps(generator) def new_generator(*args, **kwargs): if (args and getattr(args[0], 'serial', False) or not kwargs.pop('parallel', True)): # Disable: for result in generator(*args, **kwargs): yield result return if world.rank == 0: try: for result in generator(*args, **kwargs): broadcast((None, result)) yield result except Exception as ex: broadcast((ex, None)) raise ex broadcast((None, None)) else: ex, result = broadcast((None, None)) if ex is not None: raise ex while result is not None: yield result ex, result = broadcast((None, None)) if ex is not None: raise ex return new_generator def register_parallel_cleanup_function(): """Call MPI_Abort if python crashes. This will terminate the processes on the other nodes.""" if size == 1: return def cleanup(sys=sys, time=time, world=world): error = getattr(sys, 'last_type', None) if error: sys.stdout.flush() sys.stderr.write(('ASE CLEANUP (node %d): %s occurred. ' + 'Calling MPI_Abort!\n') % (world.rank, error)) sys.stderr.flush() # Give other nodes a moment to crash by themselves (perhaps # producing helpful error messages): time.sleep(3) world.abort(42) atexit.register(cleanup) def distribute_cpus(size, comm): """Distribute cpus to tasks and calculators. Input: size: number of nodes per calculator comm: total communicator object Output: communicator for this rank, number of calculators, index for this rank """ assert size <= comm.size assert comm.size % size == 0 tasks_rank = comm.rank // size r0 = tasks_rank * size ranks = np.arange(r0, r0 + size) mycomm = comm.new_communicator(ranks) return mycomm, comm.size // size, tasks_rank ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/phasediagram.py000066400000000000000000000604371316323560300235500ustar00rootroot00000000000000from __future__ import division, print_function import fractions import functools import re import numpy as np from scipy.spatial import ConvexHull import ase.units as units from ase.atoms import string2symbols from ase.utils import formula_hill, basestring _solvated = [] def parse_formula(formula): aq = formula.endswith('(aq)') if aq: formula = formula[:-4] charge = formula.count('+') - formula.count('-') if charge: formula = formula.rstrip('+-') count = {} for symbol in string2symbols(formula): count[symbol] = count.get(symbol, 0) + 1 return count, charge, aq def float2str(x): f = fractions.Fraction(x).limit_denominator(100) n = f.numerator d = f.denominator if abs(n / d - f) > 1e-6: return '{0:.3f}'.format(f) if d == 0: return '0' if f.denominator == 1: return str(n) return '{0}/{1}'.format(f.numerator, f.denominator) def solvated(symbols): """Extract solvation energies from database. symbols: str Extract only those molecules that contain the chemical elements given by the symbols string (plus water and H+). Data from: Johnson JW, Oelkers EH, Helgeson HC (1992) Comput Geosci 18(7):899. doi:10.1016/0098-3004(92)90029-Q and: Pourbaix M (1966) Atlas of electrochemical equilibria in aqueous solutions. No. v. 1 in Atlas of Electrochemical Equilibria in Aqueous Solutions. Pergamon Press, New York. Returns list of (name, energy) tuples. """ if isinstance(symbols, basestring): symbols = set(string2symbols(symbols)) if len(_solvated) == 0: for line in _aqueous.splitlines(): energy, formula = line.split(',') name = formula + '(aq)' count, charge, aq = parse_formula(name) energy = float(energy) * 0.001 * units.kcal / units.mol _solvated.append((name, count, charge, aq, energy)) references = [] for name, count, charge, aq, energy in _solvated: for symbol in count: if symbol not in 'HO' and symbol not in symbols: break else: references.append((name, energy)) return references def bisect(A, X, Y, f): a = [] for i in [0, -1]: for j in [0, -1]: if A[i, j] == -1: A[i, j] = f(X[i], Y[j]) a.append(A[i, j]) if np.ptp(a) == 0: A[:] = a[0] return if a[0] == a[1]: A[0] = a[0] if a[1] == a[3]: A[:, -1] = a[1] if a[3] == a[2]: A[-1] = a[3] if a[2] == a[0]: A[:, 0] = a[2] if not (A == -1).any(): return i = len(X) // 2 j = len(Y) // 2 bisect(A[:i + 1, :j + 1], X[:i + 1], Y[:j + 1], f) bisect(A[:i + 1, j:], X[:i + 1], Y[j:], f) bisect(A[i:, :j + 1], X[i:], Y[:j + 1], f) bisect(A[i:, j:], X[i:], Y[j:], f) def print_results(results): total_energy = 0.0 print('reference coefficient energy') print('------------------------------------') for name, coef, energy in results: total_energy += coef * energy if abs(coef) < 1e-7: continue print('{0:14}{1:>10}{2:12.3f}'.format(name, float2str(coef), energy)) print('------------------------------------') print('Total energy: {0:22.3f}'.format(total_energy)) print('------------------------------------') class Pourbaix: def __init__(self, references, formula=None, T=300.0, **kwargs): """Pourbaix object. references: list of (name, energy) tuples Examples of names: ZnO2, H+(aq), H2O(aq), Zn++(aq), ... formula: str Stoichiometry. Example: ``'ZnO'``. Can also be given as keyword arguments: ``Pourbaix(refs, Zn=1, O=1)``. T: float Temperature in Kelvin. """ if formula: assert not kwargs kwargs = parse_formula(formula)[0] self.kT = units.kB * T self.references = [] for name, energy in references: if name == 'O': continue count, charge, aq = parse_formula(name) for symbol in count: if aq: if not (symbol in 'HO' or symbol in kwargs): break else: if symbol not in kwargs: break else: self.references.append((count, charge, aq, energy, name)) self.references.append(({}, -1, False, 0.0, 'e-')) # an electron self.count = kwargs if 'O' not in self.count: self.count['O'] = 0 self.N = {'e-': 0, 'H': 1} for symbol in kwargs: if symbol not in self.N: self.N[symbol] = len(self.N) def decompose(self, U, pH, verbose=True, concentration=1e-6): """Decompose material. U: float Potential in V. pH: float pH value. verbose: bool Default is True. concentration: float Concentration of solvated references. Returns optimal coefficients and energy. """ alpha = np.log(10) * self.kT entropy = -np.log(concentration) * self.kT # We want to minimize np.dot(energies, x) under the constraints: # # np.dot(x, eq2) == eq1 # # with bounds[i,0] <= x[i] <= bounds[i, 1]. # # First two equations are charge and number of hydrogens, and # the rest are the remaining species. eq1 = [0, 0] + list(self.count.values()) eq2 = [] energies = [] bounds = [] names = [] for count, charge, aq, energy, name in self.references: eq = np.zeros(len(self.N)) eq[0] = charge for symbol, n in count.items(): eq[self.N[symbol]] = n eq2.append(eq) if name in ['H2O(aq)', 'H+(aq)', 'e-']: bounds.append((-np.inf, np.inf)) if name == 'e-': energy = -U elif name == 'H+(aq)': energy = -pH * alpha else: bounds.append((0, 1)) if aq: energy -= entropy if verbose: print('{0:<5}{1:10}{2:10.3f}'.format(len(energies), name, energy)) energies.append(energy) names.append(name) try: from scipy.optimize import linprog except ImportError: from ase.utils._linprog import linprog result = linprog(energies, None, None, np.transpose(eq2), eq1, bounds) if verbose: print_results(zip(names, result.x, energies)) return result.x, result.fun def diagram(self, U, pH, plot=True, show=True, ax=None): """Calculate Pourbaix diagram. U: list of float Potentials in V. pH: list of float pH values. plot: bool Create plot. show: bool Open graphical window and show plot. ax: matplotlib axes object When creating plot, plot onto the given axes object. If none given, plot onto the current one. """ a = np.empty((len(U), len(pH)), int) a[:] = -1 colors = {} f = functools.partial(self.colorfunction, colors=colors) bisect(a, U, pH, f) compositions = [None] * len(colors) names = [ref[-1] for ref in self.references] for indices, color in colors.items(): compositions[color] = ' + '.join(names[i] for i in indices if names[i] not in ['H2O(aq)', 'H+(aq)', 'e-']) text = [] for i, name in enumerate(compositions): b = (a == i) x = np.dot(b.sum(1), U) / b.sum() y = np.dot(b.sum(0), pH) / b.sum() name = re.sub('(\S)([+-]+)', r'\1$^{\2}$', name) name = re.sub('(\d+)', r'$_{\1}$', name) text.append((x, y, name)) if plot: import matplotlib.pyplot as plt import matplotlib.cm as cm if ax is None: ax = plt.gca() # rasterized pcolormesh has a bug which leaves a tiny # white border. Unrasterized pcolormesh produces # unreasonably large files. Avoid this by using the more # general imshow. ax.imshow(a, cmap=cm.Accent, extent=[min(pH), max(pH), min(U), max(U)], origin='lower', aspect='auto') for x, y, name in text: ax.text(y, x, name, horizontalalignment='center') ax.set_xlabel('pH') ax.set_ylabel('potential [V]') ax.set_xlim(min(pH), max(pH)) ax.set_ylim(min(U), max(U)) if show: plt.show() return a, compositions, text def colorfunction(self, U, pH, colors): coefs, energy = self.decompose(U, pH, verbose=False) indices = tuple(sorted(np.where(abs(coefs) > 1e-7)[0])) color = colors.get(indices) if color is None: color = len(colors) colors[indices] = color return color class PhaseDiagram: def __init__(self, references, filter='', verbose=True): """Phase-diagram. references: list of (name, energy) tuples List of references. The energy must be the total energy and not energy per atom. The names can also be dicts like ``{'Zn': 1, 'O': 2}`` which would be equivalent to ``'ZnO2'``. filter: str or list of str Use only those references that match the given filter. Example: ``filter='ZnO'`` will select those that contain zinc or oxygen. verbose: bool Write information. """ filter = parse_formula(filter)[0] self.verbose = verbose self.species = {} self.references = [] for name, energy in references: if isinstance(name, basestring): count = parse_formula(name)[0] else: count = name name = formula_hill(count) if filter and any(symbol not in filter for symbol in count): continue natoms = 0 for symbol, n in count.items(): natoms += n if symbol not in self.species: self.species[symbol] = len(self.species) self.references.append((count, energy, name, natoms)) self.symbols = [None] * len(self.species) for symbol, id in self.species.items(): self.symbols[id] = symbol if verbose: print('Species:', ', '.join(self.symbols)) print('References:', len(self.references)) for i, (count, energy, name, natoms) in enumerate(self.references): print('{0:<5}{1:10}{2:10.3f}'.format(i, name, energy)) self.points = np.zeros((len(self.references), len(self.species) + 1)) for s, (count, energy, name, natoms) in enumerate(self.references): for symbol, n in count.items(): self.points[s, self.species[symbol]] = n / natoms self.points[s, -1] = energy / natoms hull = ConvexHull(self.points[:, 1:]) # Find relevant simplices: ok = hull.equations[:, -2] < 0 self.simplices = hull.simplices[ok] # Create a mask for those points that are on the convex hull: self.hull = np.zeros(len(self.points), bool) for simplex in self.simplices: self.hull[simplex] = True if verbose: print('Simplices:', len(self.simplices)) def decompose(self, formula=None, **kwargs): """Find the combination of the references with the lowest energy. formula: str Stoichiometry. Example: ``'ZnO'``. Can also be given as keyword arguments: ``decompose(Zn=1, O=1)``. Example:: pd = PhaseDiagram(...) pd.decompose(Zn=1, O=3) Returns energy, indices of references and coefficients.""" if formula: assert not kwargs kwargs = parse_formula(formula)[0] point = np.zeros(len(self.species)) N = 0 for symbol, n in kwargs.items(): point[self.species[symbol]] = n N += n # Find coordinates within each simplex: X = self.points[self.simplices, 1:-1] - point[1:] / N # Find the simplex with positive coordinates that sum to # less than one: for i, Y in enumerate(X): try: x = np.linalg.solve((Y[1:] - Y[:1]).T, -Y[0]) except np.linalg.linalg.LinAlgError: continue if (x >= 0).all() and x.sum() <= 1: break else: assert False, X indices = self.simplices[i] points = self.points[indices] scaledcoefs = [1 - x.sum()] scaledcoefs.extend(x) energy = N * np.dot(scaledcoefs, points[:, -1]) coefs = [] results = [] for coef, s in zip(scaledcoefs, indices): count, e, name, natoms = self.references[s] coef *= N / natoms coefs.append(coef) results.append((name, coef, e)) if self.verbose: print_results(results) return energy, indices, np.array(coefs) def plot(self, ax=None, dims=None, show=True, only_label_simplices=False, only_plot_simplices=False): """Make 2-d or 3-d plot of datapoints and convex hull. Default is 2-d for 2- and 3-component diagrams and 3-d for a 4-component diagram. """ import matplotlib.pyplot as plt N = len(self.species) if dims is None: if N <= 3: dims = 2 else: dims = 3 if ax is None: projection = None if dims == 3: projection = '3d' from mpl_toolkits.mplot3d import Axes3D Axes3D # silence pyflakes ax = plt.gca(projection=projection) else: if dims == 3 and not hasattr(ax, 'set_zlim'): raise ValueError('Cannot make 3d plot unless axes projection ' 'is 3d') if dims == 2: if N == 2: self.plot2d2(ax, only_label_simplices, only_plot_simplices) elif N == 3: self.plot2d3(ax) else: raise ValueError('Can only make 2-d plots for 2 and 3 ' 'component systems!') else: if N == 3: self.plot3d3(ax) elif N == 4: self.plot3d4(ax) else: raise ValueError('Can only make 3-d plots for 3 and 4 ' 'component systems!') if show: plt.show() return ax def plot2d2(self, ax, only_label_simplices, only_plot_simplices): x, e = self.points[:, 1:].T for i, j in self.simplices: ax.plot(x[[i, j]], e[[i, j]], '-b') ax.plot(x[self.hull], e[self.hull], 'og') if not only_plot_simplices: ax.plot(x[~self.hull], e[~self.hull], 'sr') refs = self.references if only_plot_simplices or only_label_simplices: x = x[self.hull] e = e[self.hull] refs = np.array(refs)[self.hull] for a, b, ref in zip(x, e, refs): name = re.sub('(\d+)', r'$_{\1}$', ref[2]) ax.text(a, b, name, horizontalalignment='center', verticalalignment='bottom') ax.set_xlabel(self.symbols[1]) ax.set_ylabel('energy [eV/atom]') def plot2d3(self, ax): x, y = self.points[:, 1:-1].T.copy() x += y / 2 y *= 3**0.5 / 2 for i, j, k in self.simplices: ax.plot(x[[i, j, k, i]], y[[i, j, k, i]], '-b') ax.plot(x[self.hull], y[self.hull], 'og') ax.plot(x[~self.hull], y[~self.hull], 'sr') for a, b, ref in zip(x, y, self.references): name = re.sub('(\d+)', r'$_{\1}$', ref[2]) ax.text(a, b, name, horizontalalignment='center', verticalalignment='bottom') def plot3d3(self, ax): x, y, e = self.points[:, 1:].T ax.scatter(x[self.hull], y[self.hull], e[self.hull], c='g', marker='o') ax.scatter(x[~self.hull], y[~self.hull], e[~self.hull], c='r', marker='s') for a, b, c, ref in zip(x, y, e, self.references): name = re.sub('(\d+)', r'$_{\1}$', ref[2]) ax.text(a, b, c, name, ha='center', va='bottom') for i, j, k in self.simplices: ax.plot(x[[i, j, k, i]], y[[i, j, k, i]], zs=e[[i, j, k, i]], c='b') ax.set_xlim3d(0, 1) ax.set_ylim3d(0, 1) ax.view_init(azim=115, elev=30) ax.set_xlabel(self.symbols[1]) ax.set_ylabel(self.symbols[2]) ax.set_zlabel('energy [eV/atom]') def plot3d4(self, ax): x, y, z = self.points[:, 1:-1].T a = x / 2 + y + z / 2 b = 3**0.5 * (x / 2 + y / 6) c = (2 / 3)**0.5 * z ax.scatter(a[self.hull], b[self.hull], c[self.hull], c='g', marker='o') ax.scatter(a[~self.hull], b[~self.hull], c[~self.hull], c='r', marker='s') for x, y, z, ref in zip(a, b, c, self.references): name = re.sub('(\d+)', r'$_{\1}$', ref[2]) ax.text(x, y, z, name, ha='center', va='bottom') for i, j, k, w in self.simplices: ax.plot(a[[i, j, k, i, w, k, j, w]], b[[i, j, k, i, w, k, j, w]], zs=c[[i, j, k, i, w, k, j, w]], c='b') ax.set_xlim3d(0, 1) ax.set_ylim3d(0, 1) ax.set_zlim3d(0, 1) ax.view_init(azim=115, elev=30) _aqueous = """\ -525700,SiF6-- -514100,Rh(SO4)3---- -504800,Ru(SO4)3---- -499900,Pd(SO4)3---- -495200,Ru(SO4)3--- -485700,H4P2O7 -483700,Rh(SO4)3--- -483600,H3P2O7- -480400,H2P2O7-- -480380,Pt(SO4)3---- -471400,HP2O7--- -458700,P2O7---- -447500,LaF4- -437600,LaH2PO4++ -377900,LaF3 -376299,Ca(HSiO3)+ -370691,BeF4-- -355400,BF4- -353025,Mg(HSiO3)+ -346900,LaSO4+ -334100,Rh(SO4)2-- -325400,Ru(SO4)2-- -319640,Pd(SO4)2-- -317900,Ru(SO4)2- -312970,Cr2O7-- -312930,CaSO4 -307890,NaHSiO3 -307800,LaF2+ -307000,LaHCO3++ -306100,Rh(SO4)2- -302532,BeF3- -300670,Pt(SO4)2-- -299900,LaCO3+ -289477,MgSO4 -288400,LaCl4- -281500,HZrO3- -279200,HHfO3- -276720,Sr(HCO3)+ -275700,Ba(HCO3)+ -273830,Ca(HCO3)+ -273100,H3PO4 -270140,H2PO4- -266500,S2O8-- -264860,Sr(CO3) -264860,SrCO3 -263830,Ba(CO3) -263830,BaCO3 -262850,Ca(CO3) -262850,CaCO3 -260310,HPO4-- -257600,LaCl3 -250200,Mg(HCO3)+ -249200,H3VO4 -248700,S4O6-- -246640,KSO4- -243990,H2VO4- -243500,PO4--- -243400,KHSO4 -242801,HSiO3- -241700,HYO2 -241476,NaSO4- -239700,HZrO2+ -239300,LaO2H -238760,Mg(CO3) -238760,MgCO3 -237800,HHfO2+ -236890,Ag(CO3)2--- -236800,HNbO3 -236600,LaF++ -235640,MnSO4 -233400,ZrO2 -233000,HVO4-- -231600,HScO2 -231540,B(OH)3 -231400,HfO2 -231386,BeF2 -231000,S2O6-- -229000,S3O6-- -229000,S5O6-- -228460,HTiO3- -227400,YO2- -227100,NbO3- -226700,LaCl2+ -223400,HWO4- -221700,LaO2- -218500,WO4-- -218100,ScO2- -214900,VO4--- -210000,YOH++ -208900,LaOH++ -207700,HAlO2 -206400,HMoO4- -204800,H3PO3 -202350,H2PO3- -202290,SrF+ -201807,BaF+ -201120,BaF+ -200400,MoO4-- -200390,CaF+ -199190,SiO2 -198693,AlO2- -198100,YO+ -195900,LaO+ -195800,LaCl++ -194000,CaCl2 -194000,HPO3-- -191300,LaNO3++ -190400,ZrOH+++ -189000,HfOH+++ -189000,S2O5-- -187600,ZrO++ -186000,HfO++ -183700,HCrO4- -183600,ScO+ -183100,H3AsO4 -180630,HSO4- -180010,H2AsO4- -177930,SO4-- -177690,MgF+ -174800,CrO4-- -173300,SrOH+ -172300,BaOH+ -172200,HBeO2- -171300,CaOH+ -170790,HAsO4-- -166000,ReO4- -165800,SrCl+ -165475,Al(OH)++ -165475,AlOH++ -164730,BaCl+ -164000,La+++ -163800,Y+++ -163100,CaCl+ -162240,BO2- -158493,BeF+ -158188,AlO+ -155700,VOOH+ -155164,CdF2 -154970,AsO4--- -153500,Rh(SO4) -152900,BeO2-- -152370,HSO5- -151540,RuCl6--- -149255,MgOH+ -147400,H2S2O4 -146900,HS2O4- -146081,CdCl4-- -145521,BeCl2 -145200,Ru(SO4) -145056,PbF2 -143500,S2O4-- -140330,H2AsO3- -140300,VO2+ -140282,HCO3- -140200,Sc+++ -139900,BeOH+ -139700,MgCl+ -139200,Ru(SO4)+ -139000,Pd(SO4) -138160,HF2- -138100,HCrO2 -138000,TiO++ -137300,HGaO2 -136450,RbF -134760,Sr++ -134030,Ba++ -133270,Zr++++ -133177,PbCl4-- -132600,Hf++++ -132120,Ca++ -129310,ZnCl3- -128700,GaO2- -128600,BeO -128570,NaF -128000,H2S2O3 -127500,Rh(SO4)+ -127200,HS2O3- -126191,CO3-- -126130,HSO3- -125300,CrO2- -125100,H3PO2 -124900,S2O3-- -123641,MnF+ -122400,H2PO2- -121000,HMnO2- -120700,RuCl5-- -120400,MnO4-- -120300,Pt(SO4) -119800,HInO2 -116300,SO3-- -115971,CdCl3- -115609,Al+++ -115316,BeCl+ -112280,AgCl4--- -111670,TiO2++ -111500,VOH++ -111430,Ag(CO3)- -110720,HZnO2- -108505,Mg++ -108100,HSeO4- -108000,LiOH -107600,MnO4- -106988,HgCl4-- -106700,InO2- -106700,VO++ -106100,VO+ -105500,SeO4-- -105100,RbOH -105000,CsOH -104500,KOH -104109,ZnF+ -103900,PdCl4-- -103579,CuCl4-- -102600,MnO2-- -102150,PbCl3- -101850,H2SeO3 -101100,HFeO2 -100900,CsCl -100500,CrOH++ -99900,NaOH -99800,VOH+ -99250,LiCl -98340,HSeO3- -98300,ZnCl2 -97870,RbCl -97400,HSbO2 -97300,HSnO2- -97300,MnOH+ -97016,InF++ -96240,HAsO2 -95430,KCl -95400,HFeO2- -94610,CsBr -93290,ZnO2-- -93250,RhCl4-- -92910,NaCl -92800,CrO+ -92250,CO2 -91210,PtCl4-- -91157,FeF+ -91100,GaOH++ -91010,RbBr -90550,Be++ -90010,KBr -89963,CuCl3-- -89730,RuCl4- -88400,SeO3-- -88000,FeO2- -87373,CdF+ -86600,GaO+ -86500,HCdO2- -86290,MnCl+ -85610,NaBr -84851,CdCl2 -83900,RuCl4-- -83650,AsO2- -83600,Ti+++ -83460,CsI -83400,HCoO2- -82710,AgCl3-- -82400,SbO2- -81980,HNiO2- -81732,CoF+ -81500,MnO -81190,ZnOH+ -81000,HPbO2- -79768,NiF+ -79645,FeF++ -79300,HBiO2 -78900,RbI -77740,KI -77700,La++ -77500,RhCl4- -75860,PbF+ -75338,CuCl3- -75216,TlF -75100,Ti++ -74600,InOH++ -74504,HgCl3- -73480,FeCl2 -72900,NaI -71980,SO2 -71662,HF -71600,RuO4-- -71200,PbCl2 -69933,Li+ -69810,PdCl3- -69710,Cs+ -69400,InO+ -67811,AuCl3-- -67800,Rb+ -67510,K+ -67420,ZnO -67340,F- -67300,CdO2-- -66850,ZnCl+ -65850,FeOH+ -65550,TlOH -64200,NiO2-- -63530,RhCl3- -63200,CoO2-- -62591,Na+ -61700,BiO2- -61500,CdOH+ -60100,HCuO2- -59226,InCl++ -58600,SnOH+ -58560,RuCl3 -58038,CuCl2- -57900,V+++ -57800,FeOH++ -57760,PtCl3- -57600,HTlO2 -56690,H2O -56025,CoOH+ -55100,Mn++ -54380,RuCl3- -53950,PbOH+ -53739,CuF+ -53600,SnO -53100,FeO+ -53030,FeCl+ -52850,NiOH+ -52627,CdCl+ -52000,V++ -51560,AgCl2- -50720,FeO -49459,AgF -49300,Cr+++ -47500,CdO -46190,RhCl3 -46142,CuCl2 -45200,HHgO2- -45157,CoCl+ -44000,CoO -42838,HgCl2 -41600,TlO2- -41200,CuO2-- -40920,NiCl+ -39815,TlCl -39400,Cr++ -39350,PbO -39340,NiO -39050,PbCl+ -38000,Ga+++ -37518,FeCl++ -36781,AuCl2- -35332,AuCl4- -35200,Zn++ -35160,PdCl2 -33970,RhCl2 -32300,BiOH++ -31700,HIO3 -31379,Cl- -30600,IO3- -30410,HCl -30204,HgF+ -30200,CuOH+ -29300,BiO+ -28682,CO -26507,NO3- -26440,RuCl2+ -25590,Br3- -25060,RuCl2 -24870,Br- -24730,HNO3 -23700,HIO -23400,In+++ -23280,OCN- -23000,CoOH++ -22608,CuCl -22290,PtCl2 -21900,AgOH -21870,Fe++ -20800,CuO -20300,Mn+++ -20058,Pb(HS)2 -19700,HBrO -19100,HClO -19100,ScOH++ -18990,NH4+ -18971,Pb(HS)3- -18560,Cd++ -18290,Rh(OH)+ -17450,AgCl -16250,CuCl+ -14780,RhCl2+ -14000,IO4- -13130,Pd(OH)+ -13000,Co++ -12700,HgOH+ -12410,I- -12300,I3- -12190,Ru(OH)2++ -12100,HNO2 -11500,PdO -10900,Ni++ -10470,Ru(OH)+ -10450,RuO+ -9200,IO- -8900,HgO -8800,ClO- -8000,BrO- -7740,Tl+ -7738,AgNO3 -7700,NO2- -7220,RhO -6673,H2S -6570,Sn++ -6383,NH3 -5710,Pb++ -5500,AgO- -4500,TlOH++ -4120,Fe+++ -3380,RhCl+ -3200,TlO+ -3184,AuCl -2155,HgCl+ -2040,ClO4- -1900,ClO3- -1130,PtO -820,Rh(OH)++ 0,Ag(HS)2- 0,H+ 230,RuO 1400,HClO2 1560,Pt(OH)+ 2429,Au(HS)2- 2500,PdCl+ 2860,HS- 3140,RhO+ 3215,Xe 3554,Kr 3890,Ar 4100,ClO2- 4347,N2 4450,BrO3- 4565,Ne 4658,He 5210,RuCl+ 7100,RuCl++ 8600,H2N2O2 9375,TlCl++ 10500,HSe- 11950,Cu+ 15675,Cu++ 15700,S5-- 16500,S4-- 17600,S3-- 18200,HN2O2- 18330,RhCl++ 18380,PtCl+ 18427,Ag+ 19000,S2-- 19500,SeCN- 19700,N2H5+ 21100,N2H6++ 22160,SCN- 22880,Bi+++ 27700,Rh++ 28200,BrO4- 28600,HCN 32000,Co+++ 33200,N2O2-- 35900,Ru++ 36710,Hg2++ 39360,Hg++ 41200,CN- 41440,Ru+++ 42200,Pd++ 51300,Tl+++ 52450,Rh+++ 61600,Pt++ 64300,Ag++ 103600,Au+++""" ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/phonons.py000066400000000000000000000642031316323560300226020ustar00rootroot00000000000000from __future__ import print_function """Module for calculating phonons of periodic systems.""" import sys import pickle from math import pi, sqrt from os import remove from os.path import isfile import numpy as np import numpy.linalg as la import numpy.fft as fft import ase.units as units from ase.parallel import rank from ase.dft import monkhorst_pack from ase.io.trajectory import Trajectory from ase.utils import opencew, pickleload, basestring class Displacement: """Abstract base class for phonon and el-ph supercell calculations. Both phonons and the electron-phonon interaction in periodic systems can be calculated with the so-called finite-displacement method where the derivatives of the total energy and effective potential are obtained from finite-difference approximations, i.e. by displacing the atoms. This class provides the required functionality for carrying out the calculations for the different displacements in its ``run`` member function. Derived classes must overwrite the ``__call__`` member function which is called for each atomic displacement. """ def __init__(self, atoms, calc=None, supercell=(1, 1, 1), name=None, delta=0.01, refcell=None): """Init with an instance of class ``Atoms`` and a calculator. Parameters: atoms: Atoms object The atoms to work on. calc: Calculator Calculator for the supercell calculation. supercell: tuple Size of supercell given by the number of repetitions (l, m, n) of the small unit cell in each direction. name: str Base name to use for files. delta: float Magnitude of displacement in Ang. refcell: str Reference cell in which the atoms will be displaced. If ``None``, corner cell in supercell is used. If ``str``, cell in the center of the supercell is used. """ # Store atoms and calculator self.atoms = atoms self.calc = calc # Displace all atoms in the unit cell by default self.indices = np.arange(len(atoms)) self.name = name self.delta = delta self.N_c = supercell # Reference cell offset if refcell is None: # Corner cell self.offset = 0 else: # Center cell N_c = self.N_c self.offset = (N_c[0] // 2 * (N_c[1] * N_c[2]) + N_c[1] // 2 * N_c[2] + N_c[2] // 2) def __call__(self, *args, **kwargs): """Member function called in the ``run`` function.""" raise NotImplementedError("Implement in derived classes!.") def set_atoms(self, atoms): """Set the atoms to vibrate. Parameters: atoms: list Can be either a list of strings, ints or ... """ assert isinstance(atoms, list) assert len(atoms) <= len(self.atoms) if isinstance(atoms[0], basestring): assert np.all([isinstance(atom, basestring) for atom in atoms]) sym_a = self.atoms.get_chemical_symbols() # List for atomic indices indices = [] for type in atoms: indices.extend([a for a, atom in enumerate(sym_a) if atom == type]) else: assert np.all([isinstance(atom, int) for atom in atoms]) indices = atoms self.indices = indices def lattice_vectors(self): """Return lattice vectors for cells in the supercell.""" # Lattice vectors relevative to the reference cell R_cN = np.indices(self.N_c).reshape(3, -1) N_c = np.array(self.N_c)[:, np.newaxis] if self.offset == 0: R_cN += N_c // 2 R_cN %= N_c R_cN -= N_c // 2 return R_cN def run(self): """Run the calculations for the required displacements. This will do a calculation for 6 displacements per atom, +-x, +-y, and +-z. Only those calculations that are not already done will be started. Be aware that an interrupted calculation may produce an empty file (ending with .pckl), which must be deleted before restarting the job. Otherwise the calculation for that displacement will not be done. """ # Atoms in the supercell -- repeated in the lattice vector directions # beginning with the last atoms_N = self.atoms * self.N_c # Set calculator if provided assert self.calc is not None, "Provide calculator in __init__ method" atoms_N.set_calculator(self.calc) # Do calculation on equilibrium structure filename = self.name + '.eq.pckl' fd = opencew(filename) if fd is not None: # Call derived class implementation of __call__ output = self.__call__(atoms_N) # Write output to file if rank == 0: pickle.dump(output, fd, protocol=2) sys.stdout.write('Writing %s\n' % filename) fd.close() sys.stdout.flush() # Positions of atoms to be displaced in the reference cell natoms = len(self.atoms) offset = natoms * self.offset pos = atoms_N.positions[offset: offset + natoms].copy() # Loop over all displacements for a in self.indices: for i in range(3): for sign in [-1, 1]: # Filename for atomic displacement filename = '%s.%d%s%s.pckl' % \ (self.name, a, 'xyz'[i], ' +-'[sign]) # Wait for ranks before checking for file # barrier() fd = opencew(filename) if fd is None: # Skip if already done continue # Update atomic positions atoms_N.positions[offset + a, i] = \ pos[a, i] + sign * self.delta # Call derived class implementation of __call__ output = self.__call__(atoms_N) # Write output to file if rank == 0: pickle.dump(output, fd, protocol=2) sys.stdout.write('Writing %s\n' % filename) fd.close() sys.stdout.flush() # Return to initial positions atoms_N.positions[offset + a, i] = pos[a, i] def clean(self): """Delete generated pickle files.""" if isfile(self.name + '.eq.pckl'): remove(self.name + '.eq.pckl') for a in self.indices: for i in 'xyz': for sign in '-+': name = '%s.%d%s%s.pckl' % (self.name, a, i, sign) if isfile(name): remove(name) class Phonons(Displacement): """Class for calculating phonon modes using the finite displacement method. The matrix of force constants is calculated from the finite difference approximation to the first-order derivative of the atomic forces as:: 2 nbj nbj nbj d E F- - F+ C = ------------ ~ ------------- , mai dR dR 2 * delta mai nbj where F+/F- denotes the force in direction j on atom nb when atom ma is displaced in direction +i/-i. The force constants are related by various symmetry relations. From the definition of the force constants it must be symmetric in the three indices mai:: nbj mai bj ai C = C -> C (R ) = C (-R ) . mai nbj ai n bj n As the force constants can only depend on the difference between the m and n indices, this symmetry is more conveniently expressed as shown on the right hand-side. The acoustic sum-rule:: _ _ aj \ bj C (R ) = - ) C (R ) ai 0 /__ ai m (m, b) != (0, a) Ordering of the unit cells illustrated here for a 1-dimensional system (in case ``refcell=None`` in constructor!): :: m = 0 m = 1 m = -2 m = -1 ----------------------------------------------------- | | | | | | * b | * | * | * | | | | | | | * a | * | * | * | | | | | | ----------------------------------------------------- Example: >>> from ase.build import bulk >>> from ase.phonons import Phonons >>> from gpaw import GPAW, FermiDirac >>> atoms = bulk('Si', 'diamond', a=5.4) >>> calc = GPAW(kpts=(5, 5, 5), h=0.2, occupations=FermiDirac(0.)) >>> ph = Phonons(atoms, calc, supercell=(5, 5, 5)) >>> ph.run() >>> ph.read(method='frederiksen', acoustic=True) """ def __init__(self, *args, **kwargs): """Initialize with base class args and kwargs.""" if 'name' not in kwargs.keys(): kwargs['name'] = "phonon" Displacement.__init__(self, *args, **kwargs) # Attributes for force constants and dynamical matrix in real space self.C_N = None # in units of eV / Ang**2 self.D_N = None # in units of eV / Ang**2 / amu # Attributes for born charges and static dielectric tensor self.Z_avv = None self.eps_vv = None def __call__(self, atoms_N): """Calculate forces on atoms in supercell.""" # Calculate forces forces = atoms_N.get_forces() return forces def check_eq_forces(self): """Check maximum size of forces in the equilibrium structure.""" fname = '%s.eq.pckl' % self.name feq_av = pickleload(open(fname, 'rb')) fmin = feq_av.max() fmax = feq_av.min() i_min = np.where(feq_av == fmin) i_max = np.where(feq_av == fmax) return fmin, fmax, i_min, i_max def read_born_charges(self, name=None, neutrality=True): """Read Born charges and dieletric tensor from pickle file. The charge neutrality sum-rule:: _ _ \ a ) Z = 0 /__ ij a Parameters: neutrality: bool Restore charge neutrality condition on calculated Born effective charges. """ # Load file with Born charges and dielectric tensor for atoms in the # unit cell if name is None: filename = '%s.born.pckl' % self.name else: filename = name with open(filename, 'rb') as fd: Z_avv, eps_vv = pickleload(fd) # Neutrality sum-rule if neutrality: Z_mean = Z_avv.sum(0) / len(Z_avv) Z_avv -= Z_mean self.Z_avv = Z_avv[self.indices] self.eps_vv = eps_vv def read(self, method='Frederiksen', symmetrize=3, acoustic=True, cutoff=None, born=False, **kwargs): """Read forces from pickle files and calculate force constants. Extra keyword arguments will be passed to ``read_born_charges``. Parameters: method: str Specify method for evaluating the atomic forces. symmetrize: int Symmetrize force constants (see doc string at top) when ``symmetrize != 0`` (default: 3). Since restoring the acoustic sum rule breaks the symmetry, the symmetrization must be repeated a few times until the changes a insignificant. The integer gives the number of iterations that will be carried out. acoustic: bool Restore the acoustic sum rule on the force constants. cutoff: None or float Zero elements in the dynamical matrix between atoms with an interatomic distance larger than the cutoff. born: bool Read in Born effective charge tensor and high-frequency static dielelctric tensor from file. """ method = method.lower() assert method in ['standard', 'frederiksen'] if cutoff is not None: cutoff = float(cutoff) # Read Born effective charges and optical dielectric tensor if born: self.read_born_charges(**kwargs) # Number of atoms natoms = len(self.indices) # Number of unit cells N = np.prod(self.N_c) # Matrix of force constants as a function of unit cell index in units # of eV / Ang**2 C_xNav = np.empty((natoms * 3, N, natoms, 3), dtype=float) # Loop over all atomic displacements and calculate force constants for i, a in enumerate(self.indices): for j, v in enumerate('xyz'): # Atomic forces for a displacement of atom a in direction v basename = '%s.%d%s' % (self.name, a, v) fminus_av = pickleload(open(basename + '-.pckl', 'rb')) fplus_av = pickleload(open(basename + '+.pckl', 'rb')) if method == 'frederiksen': fminus_av[a] -= fminus_av.sum(0) fplus_av[a] -= fplus_av.sum(0) # Finite difference derivative C_av = fminus_av - fplus_av C_av /= 2 * self.delta # Slice out included atoms C_Nav = C_av.reshape((N, len(self.atoms), 3))[:, self.indices] index = 3 * i + j C_xNav[index] = C_Nav # Make unitcell index the first and reshape C_N = C_xNav.swapaxes(0, 1).reshape((N,) + (3 * natoms, 3 * natoms)) # Cut off before symmetry and acoustic sum rule are imposed if cutoff is not None: self.apply_cutoff(C_N, cutoff) # Symmetrize force constants if symmetrize: for i in range(symmetrize): # Symmetrize C_N = self.symmetrize(C_N) # Restore acoustic sum-rule if acoustic: self.acoustic(C_N) else: break # Store force constants and dynamical matrix self.C_N = C_N self.D_N = C_N.copy() # Add mass prefactor m_a = self.atoms.get_masses() print(m_a.shape, self.indices) self.m_inv_x = np.repeat(m_a[self.indices]**-0.5, 3) M_inv = np.outer(self.m_inv_x, self.m_inv_x) for D in self.D_N: D *= M_inv def symmetrize(self, C_N): """Symmetrize force constant matrix.""" # Number of atoms natoms = len(self.indices) # Number of unit cells N = np.prod(self.N_c) # Reshape force constants to (l, m, n) cell indices C_lmn = C_N.reshape(self.N_c + (3 * natoms, 3 * natoms)) # Shift reference cell to center index if self.offset == 0: C_lmn = fft.fftshift(C_lmn, axes=(0, 1, 2)).copy() # Make force constants symmetric in indices -- in case of an even # number of unit cells don't include the first i, j, k = np.asarray(self.N_c) % 2 - 1 C_lmn[i:, j:, k:] *= 0.5 C_lmn[i:, j:, k:] += \ C_lmn[i:, j:, k:][::-1, ::-1, ::-1].transpose(0, 1, 2, 4, 3).copy() if self.offset == 0: C_lmn = fft.ifftshift(C_lmn, axes=(0, 1, 2)).copy() # Change to single unit cell index shape C_N = C_lmn.reshape((N, 3 * natoms, 3 * natoms)) return C_N def acoustic(self, C_N): """Restore acoustic sumrule on force constants.""" # Number of atoms natoms = len(self.indices) # Copy force constants C_N_temp = C_N.copy() # Correct atomic diagonals of R_m = (0, 0, 0) matrix for C in C_N_temp: for a in range(natoms): for a_ in range(natoms): C_N[self.offset, 3 * a: 3 * a + 3, 3 * a: 3 * a + 3] -= C[3 * a: 3 * a + 3, 3 * a_: 3 * a_ + 3] def apply_cutoff(self, D_N, r_c): """Zero elements for interatomic distances larger than the cutoff. Parameters: D_N: ndarray Dynamical/force constant matrix. r_c: float Cutoff in Angstrom. """ # Number of atoms and primitive cells natoms = len(self.indices) N = np.prod(self.N_c) # Lattice vectors R_cN = self.lattice_vectors() # Reshape matrix to individual atomic and cartesian dimensions D_Navav = D_N.reshape((N, natoms, 3, natoms, 3)) # Cell vectors cell_vc = self.atoms.cell.transpose() # Atomic positions in reference cell pos_av = self.atoms.get_positions() # Zero elements with a distance to atoms in the reference cell # larger than the cutoff for n in range(N): # Lattice vector to cell R_v = np.dot(cell_vc, R_cN[:, n]) # Atomic positions in cell posn_av = pos_av + R_v # Loop over atoms and zero elements for i, a in enumerate(self.indices): dist_a = np.sqrt(np.sum((pos_av[a] - posn_av)**2, axis=-1)) # Atoms where the distance is larger than the cufoff i_a = dist_a > r_c # np.where(dist_a > r_c) # Zero elements D_Navav[n, i, :, i_a, :] = 0.0 # print "" def get_force_constant(self): """Return matrix of force constants.""" assert self.C_N is not None return self.C_N def band_structure(self, path_kc, modes=False, born=False, verbose=True): """Calculate phonon dispersion along a path in the Brillouin zone. The dynamical matrix at arbitrary q-vectors is obtained by Fourier transforming the real-space force constants. In case of negative eigenvalues (squared frequency), the corresponding negative frequency is returned. Frequencies and modes are in units of eV and Ang/sqrt(amu), respectively. Parameters: path_kc: ndarray List of k-point coordinates (in units of the reciprocal lattice vectors) specifying the path in the Brillouin zone for which the dynamical matrix will be calculated. modes: bool Returns both frequencies and modes when True. born: bool Include non-analytic part given by the Born effective charges and the static part of the high-frequency dielectric tensor. This contribution to the force constant accounts for the splitting between the LO and TO branches for q -> 0. verbose: bool Print warnings when imaginary frequncies are detected. """ assert self.D_N is not None if born: assert self.Z_avv is not None assert self.eps_vv is not None # Lattice vectors -- ordered as illustrated in class docstring R_cN = self.lattice_vectors() # Dynamical matrix in real-space D_N = self.D_N # Lists for frequencies and modes along path omega_kl = [] u_kl = [] # Reciprocal basis vectors for use in non-analytic contribution reci_vc = 2 * pi * la.inv(self.atoms.cell) # Unit cell volume in Bohr^3 vol = abs(la.det(self.atoms.cell)) / units.Bohr**3 for q_c in path_kc: # Add non-analytic part if born: # q-vector in cartesian coordinates q_v = np.dot(reci_vc, q_c) # Non-analytic contribution to force constants in atomic units qdotZ_av = np.dot(q_v, self.Z_avv).ravel() C_na = (4 * pi * np.outer(qdotZ_av, qdotZ_av) / np.dot(q_v, np.dot(self.eps_vv, q_v)) / vol) self.C_na = C_na / units.Bohr**2 * units.Hartree # Add mass prefactor and convert to eV / (Ang^2 * amu) M_inv = np.outer(self.m_inv_x, self.m_inv_x) D_na = C_na * M_inv / units.Bohr**2 * units.Hartree self.D_na = D_na D_N = self.D_N + D_na / np.prod(self.N_c) # if np.prod(self.N_c) == 1: # # q_av = np.tile(q_v, len(self.indices)) # q_xx = np.vstack([q_av]*len(self.indices)*3) # D_m += q_xx # Evaluate fourier sum phase_N = np.exp(-2.j * pi * np.dot(q_c, R_cN)) D_q = np.sum(phase_N[:, np.newaxis, np.newaxis] * D_N, axis=0) if modes: omega2_l, u_xl = la.eigh(D_q, UPLO='U') # Sort eigenmodes according to eigenvalues (see below) and # multiply with mass prefactor u_lx = (self.m_inv_x[:, np.newaxis] * u_xl[:, omega2_l.argsort()]).T.copy() u_kl.append(u_lx.reshape((-1, len(self.indices), 3))) else: omega2_l = la.eigvalsh(D_q, UPLO='U') # Sort eigenvalues in increasing order omega2_l.sort() # Use dtype=complex to handle negative eigenvalues omega_l = np.sqrt(omega2_l.astype(complex)) # Take care of imaginary frequencies if not np.all(omega2_l >= 0.): indices = np.where(omega2_l < 0)[0] if verbose: print('WARNING, %i imaginary frequencies at ' 'q = (% 5.2f, % 5.2f, % 5.2f) ; (omega_q =% 5.3e*i)' % (len(indices), q_c[0], q_c[1], q_c[2], omega_l[indices][0].imag)) omega_l[indices] = -1 * np.sqrt(np.abs(omega2_l[indices].real)) omega_kl.append(omega_l.real) # Conversion factor: sqrt(eV / Ang^2 / amu) -> eV s = units._hbar * 1e10 / sqrt(units._e * units._amu) omega_kl = s * np.asarray(omega_kl) if modes: return omega_kl, np.asarray(u_kl) return omega_kl def dos(self, kpts=(10, 10, 10), npts=1000, delta=1e-3, indices=None, verbose=True): """Calculate phonon dos as a function of energy. Parameters: qpts: tuple Shape of Monkhorst-Pack grid for sampling the Brillouin zone. npts: int Number of energy points. delta: float Broadening of Lorentzian line-shape in eV. indices: list If indices is not None, the atomic-partial dos for the specified atoms will be calculated. verbose: bool Print warnings when imaginary frequncies are detected. """ # Monkhorst-Pack grid kpts_kc = monkhorst_pack(kpts) N = np.prod(kpts) # Get frequencies omega_kl = self.band_structure(kpts_kc, verbose=verbose) # Energy axis and dos omega_e = np.linspace(0., np.amax(omega_kl) + 5e-3, num=npts) dos_e = np.zeros_like(omega_e) # Sum up contribution from all q-points and branches for omega_l in omega_kl: diff_el = (omega_e[:, np.newaxis] - omega_l[np.newaxis, :])**2 dos_el = 1. / (diff_el + (0.5 * delta)**2) dos_e += dos_el.sum(axis=1) dos_e *= 1. / (N * pi) * 0.5 * delta return omega_e, dos_e def write_modes(self, q_c, branches=0, kT=units.kB * 300, born=False, repeat=(1, 1, 1), nimages=30, center=False): """Write modes to trajectory file. Parameters: q_c: ndarray q-vector of the modes. branches: int or list Branch index of modes. kT: float Temperature in units of eV. Determines the amplitude of the atomic displacements in the modes. born: bool Include non-analytic contribution to the force constants at q -> 0. repeat: tuple Repeat atoms (l, m, n) times in the directions of the lattice vectors. Displacements of atoms in repeated cells carry a Bloch phase factor given by the q-vector and the cell lattice vector R_m. nimages: int Number of images in an oscillation. center: bool Center atoms in unit cell if True (default: False). """ if isinstance(branches, int): branch_l = [branches] else: branch_l = list(branches) # Calculate modes omega_l, u_l = self.band_structure([q_c], modes=True, born=born) # Repeat atoms atoms = self.atoms * repeat # Center if center: atoms.center() # Here ``Na`` refers to a composite unit cell/atom dimension pos_Nav = atoms.get_positions() # Total number of unit cells N = np.prod(repeat) # Corresponding lattice vectors R_m R_cN = np.indices(repeat).reshape(3, -1) # Bloch phase phase_N = np.exp(2.j * pi * np.dot(q_c, R_cN)) phase_Na = phase_N.repeat(len(self.atoms)) for l in branch_l: omega = omega_l[0, l] u_av = u_l[0, l] # Mean displacement of a classical oscillator at temperature T u_av *= sqrt(kT) / abs(omega) mode_av = np.zeros((len(self.atoms), 3), dtype=complex) # Insert slice with atomic displacements for the included atoms mode_av[self.indices] = u_av # Repeat and multiply by Bloch phase factor mode_Nav = np.vstack(N * [mode_av]) * phase_Na[:, np.newaxis] traj = Trajectory('%s.mode.%d.traj' % (self.name, l), 'w') for x in np.linspace(0, 2 * pi, nimages, endpoint=False): atoms.set_positions((pos_Nav + np.exp(1.j * x) * mode_Nav).real) traj.write(atoms) traj.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/quaternions.py000066400000000000000000000174231316323560300234700ustar00rootroot00000000000000import numpy as np from ase.atoms import Atoms class Quaternions(Atoms): def __init__(self, *args, **kwargs): quaternions = None if 'quaternions' in kwargs: quaternions = np.array(kwargs['quaternions']) del kwargs['quaternions'] Atoms.__init__(self, *args, **kwargs) if quaternions is not None: self.set_array('quaternions', quaternions, shape=(4,)) # set default shapes self.set_shapes(np.array([[3, 2, 1]] * len(self))) def set_shapes(self, shapes): self.set_array('shapes', shapes, shape=(3,)) def set_quaternions(self, quaternions): self.set_array('quaternions', quaternions, quaternion=(4,)) def get_shapes(self): return self.get_array('shapes') def get_quaternions(self): return self.get_array('quaternions').copy() class Quaternion: def __init__(self, qin=[1, 0, 0, 0]): assert(len(qin) == 4) self.q = np.array(qin) def __str__(self): return self.q.__str__() def __mul__(self, other): sw, sx, sy, sz = self.q ow, ox, oy, oz = other.q return Quaternion([sw * ow - sx * ox - sy * oy - sz * oz, sw * ox + sx * ow + sy * oz - sz * oy, sw * oy + sy * ow + sz * ox - sx * oz, sw * oz + sz * ow + sx * oy - sy * ox]) def conjugate(self): return Quaternion(-self.q * np.array([-1., 1., 1., 1.])) def rotate(self, vector): """Apply the rotation matrix to a vector.""" qw, qx, qy, qz = self.q[0], self.q[1], self.q[2], self.q[3] x, y, z = vector[0], vector[1], vector[2] ww = qw * qw xx = qx * qx yy = qy * qy zz = qz * qz wx = qw * qx wy = qw * qy wz = qw * qz xy = qx * qy xz = qx * qz yz = qy * qz return np.array( [(ww + xx - yy - zz) * x + 2 * ((xy - wz) * y + (xz + wy) * z), (ww - xx + yy - zz) * y + 2 * ((xy + wz) * x + (yz - wx) * z), (ww - xx - yy + zz) * z + 2 * ((xz - wy) * x + (yz + wx) * y)]) def rotation_matrix(self): qw, qx, qy, qz = self.q[0], self.q[1], self.q[2], self.q[3] ww = qw * qw xx = qx * qx yy = qy * qy zz = qz * qz wx = qw * qx wy = qw * qy wz = qw * qz xy = qx * qy xz = qx * qz yz = qy * qz return np.array([[ww + xx - yy - zz, 2 * (xy + wz), 2 * (xz - wy)], [2 * (xy - wz), ww - xx + yy - zz, 2 * (yz + wx)], [2 * (xz + wy), 2 * (yz - wx), ww - xx - yy + zz]]) def axis_angle(self): """Returns axis and angle (in radians) for the rotation described by this Quaternion""" sinth_2 = np.linalg.norm(self.q[1:]) theta = np.arctan2(sinth_2, self.q[0])*2 n = self.q[1:]/sinth_2 return n, theta def euler_angles(self, mode='zyz'): """Return three Euler angles describing the rotation, in radians. Mode can be zyz or zxz. Default is zyz.""" if mode == 'zyz': # These are (a+c)/2 and (a-c)/2 respectively apc = np.arctan2(self.q[3], self.q[0]) amc = np.arctan2(-self.q[1], self.q[2]) a, c = (apc+amc), (apc-amc) cos_amc = np.cos(amc) if cos_amc != 0: sinb2 = self.q[2]/cos_amc else: sinb2 = -self.q[1]/np.sin(amc) cos_apc = np.cos(apc) if cos_apc != 0: cosb2 = self.q[0]/cos_apc else: cosb2 = self.q[3]/np.sin(apc) b = np.arctan2(sinb2, cosb2)*2 elif mode == 'zxz': # These are (a+c)/2 and (a-c)/2 respectively apc = np.arctan2(self.q[3], self.q[0]) amc = np.arctan2(self.q[2], self.q[1]) a, c = (apc+amc), (apc-amc) cos_amc = np.cos(amc) if cos_amc != 0: sinb2 = self.q[1]/cos_amc else: sinb2 = self.q[2]/np.sin(amc) cos_apc = np.cos(apc) if cos_apc != 0: cosb2 = self.q[0]/cos_apc else: cosb2 = self.q[3]/np.sin(apc) b = np.arctan2(sinb2, cosb2)*2 else: raise ValueError('Invalid Euler angles mode {0}'.format(mode)) return np.array([a, b, c]) def arc_distance(self, other): """Gives a metric of the distance between two quaternions, expressed as 1-|q1.q2|""" return 1.0 - np.abs(np.dot(self.q, other.q)) @staticmethod def rotate_byq(q, vector): """Apply the rotation matrix to a vector.""" qw, qx, qy, qz = q[0], q[1], q[2], q[3] x, y, z = vector[0], vector[1], vector[2] ww = qw * qw xx = qx * qx yy = qy * qy zz = qz * qz wx = qw * qx wy = qw * qy wz = qw * qz xy = qx * qy xz = qx * qz yz = qy * qz return np.array( [(ww + xx - yy - zz) * x + 2 * ((xy - wz) * y + (xz + wy) * z), (ww - xx + yy - zz) * y + 2 * ((xy + wz) * x + (yz - wx) * z), (ww - xx - yy + zz) * z + 2 * ((xz - wy) * x + (yz + wx) * y)]) @staticmethod def from_matrix(matrix): """Build quaternion from rotation matrix.""" m = np.array(matrix) assert m.shape == (3, 3) # Now we need to find out the whole quaternion # This method takes into account the possibility of qw being nearly # zero, so it picks the stablest solution if m[2, 2] < 0: if (m[0, 0] > m[1, 1]): # Use x-form qx = np.sqrt(1 + m[0, 0] - m[1, 1] - m[2, 2]) / 2.0 fac = 1.0 / (4 * qx) qw = (m[2, 1] - m[1, 2]) * fac qy = (m[0, 1] + m[1, 0]) * fac qz = (m[0, 2] + m[2, 0]) * fac else: # Use y-form qy = np.sqrt(1 - m[0, 0] + m[1, 1] - m[2, 2]) / 2.0 fac = 1.0 / (4 * qy) qw = (m[0, 2] - m[2, 0]) * fac qx = (m[0, 1] + m[1, 0]) * fac qz = (m[1, 2] + m[2, 1]) * fac else: if (m[0, 0] < -m[1, 1]): # Use z-form qz = np.sqrt(1 - m[0, 0] - m[1, 1] + m[2, 2]) / 2.0 fac = 1.0 / (4 * qz) qw = (m[1, 0] - m[0, 1]) * fac qx = (m[2, 0] + m[0, 2]) * fac qy = (m[1, 2] + m[2, 1]) * fac else: # Use w-form qw = np.sqrt(1 + m[0, 0] + m[1, 1] + m[2, 2]) / 2.0 fac = 1.0 / (4 * qw) qx = (m[2, 1] - m[1, 2]) * fac qy = (m[0, 2] - m[2, 0]) * fac qz = (m[1, 0] - m[0, 1]) * fac return Quaternion(np.array([qw, qx, qy, qz])) @staticmethod def from_axis_angle(n, theta): """Build quaternion from axis (n, vector of 3 components) and angle (theta, in radianses).""" n = np.array(n, float)/np.linalg.norm(n) return Quaternion(np.concatenate([[np.cos(theta/2.0)], np.sin(theta/2.0)*n])) @staticmethod def from_euler_angles(a, b, c, mode='zyz'): """Build quaternion from Euler angles, given in radians. Default mode is ZYZ, but it can be set to ZXZ as well.""" q_a = Quaternion.from_axis_angle([0, 0, 1], a) q_c = Quaternion.from_axis_angle([0, 0, 1], c) if mode == 'zyz': q_b = Quaternion.from_axis_angle([0, 1, 0], b) elif mode == 'zxz': q_b = Quaternion.from_axis_angle([1, 0, 0], b) else: raise ValueError('Invalid Euler angles mode {0}'.format(mode)) return q_c*q_b*q_a ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/run.py000077500000000000000000000000441316323560300217160ustar00rootroot00000000000000from ase.cli.run import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/000077500000000000000000000000001316323560300227075ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/__init__.py000066400000000000000000000002401316323560300250140ustar00rootroot00000000000000from ase.spacegroup.spacegroup import Spacegroup, get_spacegroup from ase.spacegroup.xtal import crystal __all__ = ['Spacegroup', 'crystal', 'get_spacegroup'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/findsym.py000066400000000000000000000200411316323560300247270ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2012, Jesper Friis # (see accompanying license files for ASE). """ Determines space group of an atoms object using the FINDSYM program from the ISOTROPY (http://stokes.byu.edu/iso/isotropy.html) software package by H. T. Stokes and D. M. Hatch, Brigham Young University, USA. In order to use this module, you have to download the ISOTROPY package from http://stokes.byu.edu/iso/isotropy.html and set the environment variable ISODATA to the path of the directory containing findsym and data_space.txt (NB: the path should end with a slash (/)). Example ------- >>> from ase.spacegroup import crystal >>> from ase.build import cut # Start with simple fcc Al >>> al = crystal('Al', [(0,0,0)], spacegroup=225, cellpar=4.05) >>> d = findsym(al) >>> d['spacegroup'] 225 # No problem with a more complex structure... >>> skutterudite = crystal(('Co', 'Sb'), ... basis=[(0.25,0.25,0.25), (0.0, 0.335, 0.158)], ... spacegroup=204, ... cellpar=9.04) >>> d = findsym(skutterudite) >>> d['spacegroup'] 204 # ... or a non-conventional cut slab = cut(skutterudite, a=(1, 1, 0), b=(0, 2, 0), c=(0, 0, 1)) d = findsym(slab) >>> d['spacegroup'] 204 """ import os import subprocess import numpy as np import ase __all__ = ['findsym', 'unique'] def make_input(atoms, tol=1e-3, centering='P', types=None): """Returns input to findsym. See findsym() for a description of the arguments.""" if types is None: types = atoms.numbers s = [] s.append(atoms.get_chemical_formula()) s.append('%g tolerance' % tol) s.append('2 form of lattice parameters: to be entered as lengths ' 'and angles') s.append('%g %g %g %g %g %g a,b,c,alpha,beta,gamma' % tuple(ase.geometry.cell_to_cellpar(atoms.cell))) s.append('2 form of vectors defining unit cell') # ?? s.append('%s centering (P=unknown)' % centering) s.append('%d number of atoms in primitive unit cell' % len(atoms)) s.append(' '.join(str(n) for n in types) + ' type of each atom') for p in atoms.get_scaled_positions(): s.append('%10.5f %10.5f %10.5f' % tuple(p)) return '\n'.join(s) def run(atoms, tol=1e-3, centering='P', types=None, isodata_dir=None): """Runs FINDSYM and returns its standard output.""" if isodata_dir is None: isodata_dir = os.getenv('ISODATA') if isodata_dir is None: isodata_dir = '.' isodata_dir = os.path.normpath(isodata_dir) findsym = os.path.join(isodata_dir, 'findsym') data_space = os.path.join(isodata_dir, 'data_space.txt') for path in findsym, data_space: if not os.path.exists(path): raise IOError('no such file: %s. Have you set the ISODATA ' 'environment variable to the directory containing ' 'findsym and data_space.txt?' % path) env = os.environ.copy() env['ISODATA'] = isodata_dir + os.sep p = subprocess.Popen([findsym], stdin=subprocess.PIPE, stdout=subprocess.PIPE, env=env) stdout = p.communicate(make_input(atoms, tol, centering, types))[0] # if os.path.exists('findsym.log'): # os.remove('findsym.log') return stdout def parse(output): """Parse output from FINDSYM (Version 3.2.3, August 2007) and return a dict. See docstring for findsym() for a description of the tokens.""" d = {} lines = output.splitlines() def search_for_line(line_str): check_line = [i for i, line in enumerate(lines) if line.startswith(line_str)] return check_line i_cellpar = search_for_line('Lattice parameters')[0] d['cellpar'] = np.array([float(v) for v in lines[i_cellpar + 1].split()]) i_natoms = search_for_line('Number of atoms in unit cell')[0] natoms = int(lines[i_natoms + 1].split()[0]) # Determine number of atoms from atom types, since the number of # atoms is written with only 3 digits, which crashes the parser # for more than 999 atoms i_spg = search_for_line('Space Group')[0] tokens = lines[i_spg].split() d['spacegroup'] = int(tokens[2]) # d['symbol_nonconventional'] = tokens[3] d['symbol'] = tokens[4] i_origin = search_for_line('Origin at')[0] d['origin'] = np.array([float(v) for v in lines[i_origin].split()[2:]]) i_abc = search_for_line('Vectors a,b,c')[0] d['abc'] = np.array([[float(v) for v in line.split()] for line in lines[i_abc + 1:i_abc + 4]]).T i_wyck_start = search_for_line('Wyckoff position') d['wyckoff'] = [] d['tags'] = -np.ones(natoms, dtype=int) i_wyck_stop = i_wyck_start[1:] i_wyck_stop += [i_wyck_start[0] + natoms + 3] # sort the tags to the indivual atoms for tag, (i_start, i_stop) in enumerate(zip(i_wyck_start, i_wyck_stop)): tokens = lines[i_start].split() d['wyckoff'].append(tokens[2].rstrip(',')) i_tag = [int(line.split()[0]) - 1 for line in lines[i_start + 1:i_stop]] d['tags'][i_tag] = tag return d def findsym(atoms, tol=1e-3, centering='P', types=None, isodata_dir=None): """Returns a dict describing the symmetry of *atoms*. Arguments --------- atoms: Atoms instance Atoms instance to find space group of. tol: float Accuracy to which dimensions of the unit cell and positions of atoms are known. Units in Angstrom. centering: 'P' | 'I' | 'F' | 'A' | 'B' | 'C' | 'R' Known centering: P (no known centering), I (body-centered), F (face-centered), A,B,C (base centered), R (rhombohedral centered with coordinates of centered points at (2/3,1/3,1/3) and (1/3,2/3,2/3)). types: None | sequence of integers Sequence of arbitrary positive integers identifying different atomic sites, so that a symmetry operation that takes one atom into another with different type would be forbidden. Returned dict items ------------------- abc: 3x3 float array The vectors a, b, c defining the cell in scaled coordinates. cellpar: 6 floats Cell parameters a, b, c, alpha, beta, gamma with lengths in Angstrom and angles in degree. origin: 3 floats Origin of the space group with respect to the origin in the input data. Coordinates are dimensionless, given in terms of the lattice parameters of the unit cell in the input. spacegroup: int Space group number from the International Tables of Crystallography. symbol: str Hermann-Mauguin symbol (no spaces). tags: int array Array of site numbers for each atom. Only atoms within the first conventional unit cell are tagged, the rest have -1 as tag. wyckoff: list List of wyckoff symbols for each site. """ output = run(atoms, tol, centering, types, isodata_dir) d = parse(output) return d def unique(atoms, tol=1e-3, centering='P', types=None, isodata_dir=None): """Returns an Atoms object containing only one atom from each unique site. """ d = findsym(atoms, tol=tol, centering=centering, types=types, isodata_dir=isodata_dir) mask = np.concatenate(([True], np.diff(d['tags']) != 0)) * (d['tags'] >= 0) at = atoms[mask] a, b, c, alpha, beta, gamma = d['cellpar'] A, B, C = d['abc'] A *= a B *= b C *= c from numpy.linalg import norm from numpy import cos, pi assert abs(np.dot(A, B) - (norm(A) * norm(B) * cos(gamma * pi / 180.))) < 1e-5 assert abs(np.dot(A, C) - (norm(A) * norm(C) * cos(beta * pi / 180.))) < 1e-5 assert abs(np.dot(B, C) - (norm(B) * norm(C) * cos(alpha * pi / 180.))) < 1e-5 at.cell = np.array([A, B, C]) for k in 'origin', 'spacegroup', 'wyckoff': at.info[k] = d[k] at.info['unit_cell'] = 'unique' scaled = at.get_scaled_positions() at.set_scaled_positions(scaled) return at ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/spacegroup.dat000066400000000000000000006172371316323560300255710ustar00rootroot000000000000001 P 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 1 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 2 P -1 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 1 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 3 P 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 3 P 2 setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 4 P 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 4 P 21 setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 5 C 2 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 5 A 2 setting 2 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 6 P m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 6 P m setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 7 P c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 7 P n setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 8 C m setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 8 A m setting 2 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 9 C c setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 9 A n setting 2 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 10 P 2/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 10 P 2/m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 11 P 21/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 11 P 21/m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 12 C 2/m setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 12 A 2/m setting 2 centrosymmetric 1 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 13 P 2/c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 13 P 2/n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 14 P 21/c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 14 P 21/n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 15 C 2/c setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 15 A 2/n setting 2 centrosymmetric 1 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 2 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 16 P 2 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 17 P 2 2 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 18 P 21 21 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 19 P 21 21 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 20 C 2 2 21 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 21 C 2 2 2 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 22 F 2 2 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 23 I 2 2 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 24 I 21 21 21 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 25 P m m 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 26 P m c 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 27 P c c 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 28 P m a 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 1 1/2 0.0 0.0 29 P c a 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 1 1/2 0.0 1/2 30 P n c 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 1 0.0 1/2 1/2 31 P m n 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 32 P b a 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 33 P n a 21 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 34 P n n 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 35 C m m 2 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 36 C m c 21 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 37 C c c 2 setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 38 A m m 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 39 A e m 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 1 0.0 1/2 0.0 40 A m a 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 1 1/2 0.0 0.0 41 A e a 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 -1/2 0.0 1/2 1/2 1.0 0.0 0.0 reciprocal primitive cell 0 1 -1 0 1 1 1 0 0 2 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 42 F m m 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 43 F d d 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/4 1/4 1/4 -1 0 0 0 1 0 0 0 1 1/4 1/4 1/4 44 I m m 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 45 I b a 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 46 I m a 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 1 1/2 0.0 0.0 47 P m m m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 48 P n n n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 48 P n n n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 49 P c c m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 50 P b a n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 50 P b a n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 1/2 0.0 51 P m m a setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 0.0 52 P n n a setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 53 P m n a setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 54 P c c A setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 55 P b a m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 56 P c c n setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 57 P b c m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 0.0 58 P n n m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 59 P m m n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 59 P m m n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 0.0 60 P b c n setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 61 P b c a setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 62 P n m a setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 63 C m c m setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 64 C m c e setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 65 C m m m setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 66 C c c m setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 67 C m m e setting 1 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 68 C c c e setting 1 centrosymmetric 0 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 -1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 0.0 1/2 68 C c c a setting 2 centrosymmetric 1 primitive cell 1/2 -1/2 0.0 1/2 1/2 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 -1 0 1 1 0 0 0 1 2 subtranslations 0.0 0.0 0.0 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 69 F m m m setting 1 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 70 F d d d setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/4 1/4 1/4 1 0 0 0 1 0 0 0 -1 1/4 1/4 1/4 1 0 0 0 -1 0 0 0 1 1/4 1/4 1/4 -1 0 0 0 1 0 0 0 1 1/4 1/4 1/4 70 F d d d setting 2 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 3/4 3/4 0.0 -1 0 0 0 1 0 0 0 -1 3/4 0.0 3/4 1 0 0 0 -1 0 0 0 -1 0.0 3/4 3/4 71 I m m m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 72 I b a m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 73 I b c a setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 74 I m m a setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 75 P 4 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 76 P 41 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/4 0 1 0 -1 0 0 0 0 1 0.0 0.0 3/4 77 P 42 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 78 P 43 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 0.0 0.0 3/4 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/4 79 I 4 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 80 I 41 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 81 P -4 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 82 I -4 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 83 P 4/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 84 P 42/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 85 P 4/n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 85 P 4/n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 86 P 42/n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 86 P 42/n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 0.0 1/2 87 I 4/m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 88 I 41/a setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 -1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/4 1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 88 I 41/a setting 2 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 4 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 0 -1 0 1 0 0 0 0 1 3/4 1/4 1/4 0 1 0 -1 0 0 0 0 1 3/4 3/4 3/4 89 P 4 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 90 P 4 21 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 91 P 41 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/4 0 1 0 -1 0 0 0 0 1 0.0 0.0 3/4 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 3/4 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/4 92 P 41 21 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 1/2 3/4 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/4 1 0 0 0 -1 0 0 0 -1 1/2 1/2 3/4 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 93 P 42 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 94 P 42 21 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 95 P 43 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 0.0 0.0 3/4 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/4 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/4 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 3/4 96 P 43 21 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 3/4 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/4 -1 0 0 0 1 0 0 0 -1 1/2 1/2 3/4 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/4 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 97 I 4 2 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 98 I 41 2 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 -1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/4 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 99 P 4 m m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 100 P 4 b m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 0.0 101 P 42 c m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 102 P 42 n m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 103 P 4 c c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 104 P 4 n c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 105 P 42 m c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 106 P 42 b c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 107 I 4 m m setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 108 I 4 c m setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 109 I 41 m d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 1 0 0 0 0 1 1/2 0.0 3/4 110 I 41 c d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 0.0 1/2 3/4 0 1 0 1 0 0 0 0 1 1/2 0.0 1/4 111 P -4 2 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 112 P -4 2 c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 113 P -4 21 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 0.0 114 P -4 21 c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 115 P -4 m 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 116 P -4 c 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 117 P -4 b 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 118 P -4 n 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 119 I -4 m 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 120 I -4 c 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 121 I -4 2 m setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 122 I -4 2 d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 1 0 0 0 -1 0 0 0 -1 1/2 0.0 3/4 0 -1 0 -1 0 0 0 0 1 1/2 0.0 3/4 0 1 0 1 0 0 0 0 1 1/2 0.0 3/4 123 P 4/m m m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 124 P 4/m c c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 125 P 4/n b m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 0.0 125 P 4/n b m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 126 P 4/n n c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 126 P 4/n n c setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 127 P 4/m b m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 128 P 4/m n c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 129 P 4/n m m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 0.0 129 P 4/n m m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 130 P 4/n c c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 130 P 4/n c c setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 131 P 42/m m c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 132 P 42/m c m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 133 P 42/n b c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 133 P 42/n b c setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 134 P 42/n n m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 134 P 42/n n m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 135 P 42/m b c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 136 P 42/m n m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 137 P 42/n m c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 137 P 42/n m c setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 138 P 42/n c m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 0.0 138 P 42/n c m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 1/2 0 1 0 -1 0 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 139 I 4/m m m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 140 I 4/m c m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 141 I 41/a m d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 -1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/4 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/4 1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 1/2 0.0 3/4 0 1 0 1 0 0 0 0 1 0.0 1/2 1/4 141 I 41/a m d setting 2 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 0 -1 0 1 0 0 0 0 1 1/4 3/4 1/4 0 1 0 -1 0 0 0 0 1 1/4 1/4 3/4 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/4 3/4 1/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 3/4 142 I 41/a c d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 16 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/4 0 1 0 -1 0 0 0 0 1 1/2 0.0 3/4 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/4 1 0 0 0 -1 0 0 0 -1 0.0 1/2 3/4 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/4 1 0 0 0 1 0 0 0 -1 1/2 0.0 3/4 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 1/2 0.0 1/4 0 1 0 1 0 0 0 0 1 0.0 1/2 3/4 142 I 41/a c d setting 2 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 8 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 0 -1 0 1 0 0 0 0 1 1/4 3/4 1/4 0 1 0 -1 0 0 0 0 1 1/4 1/4 3/4 -1 0 0 0 1 0 0 0 -1 1/2 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 1/4 3/4 3/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 1/4 143 P 3 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 144 P 31 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 145 P 32 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 146 R 3 setting 1 centrosymmetric 0 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 146 R 3 setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 147 P -3 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 148 R -3 setting 1 centrosymmetric 1 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 148 R -3 setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 3 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 149 P 3 1 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 150 P 3 2 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 151 P 31 1 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 2/3 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/3 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 152 P 31 2 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 2/3 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/3 153 P 32 1 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/3 -1 1 0 0 1 0 0 0 -1 0.0 0.0 2/3 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 154 P 32 2 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 1/3 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 2/3 155 R 3 2 setting 1 centrosymmetric 0 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 155 R 3 2 setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 156 P 3 m 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 1 0.0 0.0 0.0 157 P 3 1 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 1 0.0 0.0 0.0 158 P 3 c 1 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 1 0.0 0.0 1/2 159 P 3 1 c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 1 0.0 0.0 1/2 160 R 3 m setting 1 centrosymmetric 0 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 1 0.0 0.0 0.0 160 R 3 m setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 161 R 3 c setting 1 centrosymmetric 0 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 1 0.0 0.0 1/2 161 R 3 c setting 2 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 0 0 1 0 1 0 1 0 0 1/2 1/2 1/2 162 P -3 1 m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 163 P -3 1 c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/2 164 P -3 m 1 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 165 P -3 c 1 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/2 166 R -3 m setting 1 centrosymmetric 1 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 166 R -3 m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 167 R -3 c setting 1 centrosymmetric 1 primitive cell 2/3 1/3 1/3 -1/3 1/3 1/3 -1/3 -2/3 1/3 reciprocal primitive cell 1 1 0 -1 1 1 0 -1 1 3 subtranslations 0.0 0.0 0.0 2/3 1/3 1/3 1/3 2/3 2/3 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/2 167 R -3 c setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 168 P 6 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 169 P 61 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 5/6 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/6 170 P 65 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/6 1 -1 0 1 0 0 0 0 1 0.0 0.0 5/6 171 P 62 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 2/3 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/3 172 P 64 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/3 1 -1 0 1 0 0 0 0 1 0.0 0.0 2/3 173 P 63 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 174 P -6 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 -1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 175 P 6/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 176 P 63/m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 6 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 177 P 6 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 178 P 61 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 5/6 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/6 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/3 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 2/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 5/6 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/6 179 P 65 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/6 1 -1 0 1 0 0 0 0 1 0.0 0.0 5/6 0 1 0 1 0 0 0 0 -1 0.0 0.0 2/3 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/6 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 5/6 180 P 62 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 2/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 1/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 2/3 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/3 0 1 0 1 0 0 0 0 -1 0.0 0.0 2/3 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 2/3 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/3 181 P 64 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 1/3 -1 1 0 -1 0 0 0 0 1 0.0 0.0 2/3 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/3 1 -1 0 1 0 0 0 0 1 0.0 0.0 2/3 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/3 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 2/3 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/3 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 2/3 182 P 63 2 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/2 183 P 6 m m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 1 0.0 0.0 0.0 184 P 6 c c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 1 0.0 0.0 1/2 185 P 63 c m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 1 0.0 0.0 0.0 186 P 63 m c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 1 0.0 0.0 1/2 187 P -6 m 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 -1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 188 P -6 c 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 0 -1 0 1 -1 0 0 0 -1 0.0 0.0 1/2 -1 1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 189 P -6 2 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 -1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 1 0.0 0.0 0.0 190 P -6 2 c setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 1 0 0 0 -1 0.0 0.0 1/2 0 -1 0 1 -1 0 0 0 -1 0.0 0.0 1/2 -1 1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 1 0.0 0.0 1/2 191 P 6/m m m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 192 P 6/m c c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 1 0 0 0 1 0.0 0.0 0.0 1 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/2 193 P 63/m c m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 1/2 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 1 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 1 -1 0 0 0 -1 0.0 0.0 0.0 194 P 63/m m c setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 -1 0 0 0 1 0.0 0.0 0.0 -1 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 1/2 0 1 0 -1 1 0 0 0 1 0.0 0.0 1/2 1 -1 0 1 0 0 0 0 1 0.0 0.0 1/2 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 -1 0 0 -1 0 0 0 -1 0.0 0.0 0.0 -1 0 0 -1 1 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 1 0 0 1 0 0 0 -1 0.0 0.0 1/2 1 0 0 1 -1 0 0 0 -1 0.0 0.0 1/2 195 P 2 3 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 196 F 2 3 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 197 I 2 3 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 198 P 21 3 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 199 I 21 3 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 200 P m -3 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 201 P n -3 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 0 -1 -1 0 0 0 -1 0 1/2 1/2 1/2 0 0 -1 1 0 0 0 1 0 1/2 1/2 1/2 0 0 1 1 0 0 0 -1 0 1/2 1/2 1/2 0 0 1 -1 0 0 0 1 0 1/2 1/2 1/2 0 -1 0 0 0 -1 -1 0 0 1/2 1/2 1/2 0 1 0 0 0 -1 1 0 0 1/2 1/2 1/2 0 -1 0 0 0 1 1 0 0 1/2 1/2 1/2 0 1 0 0 0 1 -1 0 0 1/2 1/2 1/2 201 P n -3 setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 1/2 1/2 0 0 -1 -1 0 0 0 1 0 1/2 1/2 0.0 0 0 -1 1 0 0 0 -1 0 1/2 0.0 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 0.0 1/2 0 1 0 0 0 -1 -1 0 0 0.0 1/2 1/2 0 -1 0 0 0 -1 1 0 0 1/2 1/2 0.0 202 F m -3 setting 1 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 203 F d -3 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/4 1/4 1/4 1 0 0 0 1 0 0 0 -1 1/4 1/4 1/4 1 0 0 0 -1 0 0 0 1 1/4 1/4 1/4 -1 0 0 0 1 0 0 0 1 1/4 1/4 1/4 0 0 -1 -1 0 0 0 -1 0 1/4 1/4 1/4 0 0 -1 1 0 0 0 1 0 1/4 1/4 1/4 0 0 1 1 0 0 0 -1 0 1/4 1/4 1/4 0 0 1 -1 0 0 0 1 0 1/4 1/4 1/4 0 -1 0 0 0 -1 -1 0 0 1/4 1/4 1/4 0 1 0 0 0 -1 1 0 0 1/4 1/4 1/4 0 -1 0 0 0 1 1 0 0 1/4 1/4 1/4 0 1 0 0 0 1 -1 0 0 1/4 1/4 1/4 203 F d -3 setting 2 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/4 1/4 0.0 -1 0 0 0 1 0 0 0 -1 1/4 0.0 1/4 1 0 0 0 -1 0 0 0 -1 0.0 1/4 1/4 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 1/4 1/4 0 0 -1 -1 0 0 0 1 0 1/4 1/4 0.0 0 0 -1 1 0 0 0 -1 0 1/4 0.0 1/4 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/4 0.0 1/4 0 1 0 0 0 -1 -1 0 0 0.0 1/4 1/4 0 -1 0 0 0 -1 1 0 0 1/4 1/4 0.0 204 I m -3 setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 205 P a -3 setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 206 I a -3 setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 12 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 207 P 4 3 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 208 P 42 3 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 0 0 1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 209 F 4 3 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 210 F 41 3 2 setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 0.0 1/2 0 0 -1 -1 0 0 0 1 0 0.0 1/2 1/2 0 0 -1 1 0 0 0 -1 0 1/2 1/2 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 1/2 0.0 0 1 0 0 0 -1 -1 0 0 1/2 0.0 1/2 0 -1 0 0 0 -1 1 0 0 0.0 1/2 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 3/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 1/4 0 1 0 -1 0 0 0 0 1 1/4 3/4 3/4 0 -1 0 1 0 0 0 0 1 3/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 3/4 -1 0 0 0 0 1 0 1 0 3/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 1/4 1/4 1/4 1 0 0 0 0 -1 0 1 0 1/4 3/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 3/4 0 0 1 0 -1 0 1 0 0 1/4 3/4 3/4 0 0 -1 0 1 0 1 0 0 3/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 1/4 1/4 1/4 211 I 4 3 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 212 P 43 3 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 1/4 3/4 3/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 1/4 0 1 0 -1 0 0 0 0 1 3/4 3/4 1/4 0 -1 0 1 0 0 0 0 1 3/4 1/4 3/4 1 0 0 0 0 1 0 -1 0 1/4 3/4 3/4 -1 0 0 0 0 1 0 1 0 3/4 1/4 3/4 -1 0 0 0 0 -1 0 -1 0 1/4 1/4 1/4 1 0 0 0 0 -1 0 1 0 3/4 3/4 1/4 0 0 1 0 1 0 -1 0 0 1/4 3/4 3/4 0 0 1 0 -1 0 1 0 0 3/4 3/4 1/4 0 0 -1 0 1 0 1 0 0 3/4 1/4 3/4 0 0 -1 0 -1 0 -1 0 0 1/4 1/4 1/4 213 P 41 3 2 setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 1/4 0 -1 0 -1 0 0 0 0 -1 3/4 3/4 3/4 0 1 0 -1 0 0 0 0 1 1/4 1/4 3/4 0 -1 0 1 0 0 0 0 1 1/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 1/4 -1 0 0 0 0 1 0 1 0 1/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 3/4 3/4 3/4 1 0 0 0 0 -1 0 1 0 1/4 1/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 1/4 0 0 1 0 -1 0 1 0 0 1/4 1/4 3/4 0 0 -1 0 1 0 1 0 0 1/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 3/4 3/4 3/4 214 I 41 3 2 setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 1/4 0 -1 0 -1 0 0 0 0 -1 3/4 3/4 3/4 0 1 0 -1 0 0 0 0 1 1/4 1/4 3/4 0 -1 0 1 0 0 0 0 1 1/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 1/4 -1 0 0 0 0 1 0 1 0 1/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 3/4 3/4 3/4 1 0 0 0 0 -1 0 1 0 1/4 1/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 1/4 0 0 1 0 -1 0 1 0 0 1/4 1/4 3/4 0 0 -1 0 1 0 1 0 0 1/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 3/4 3/4 3/4 215 P -4 3 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 1 0 0 0.0 0.0 0.0 216 F -4 3 m setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 1 0 0 0.0 0.0 0.0 217 I -4 3 m setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 1 0 0 0.0 0.0 0.0 218 P -4 3 n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 0 0 1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 -1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 1 0 0 1/2 1/2 1/2 219 F -4 3 c setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 0 0 1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 -1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 1 0 0 1/2 1/2 1/2 220 I -4 3 d setting 1 centrosymmetric 0 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 0 1 0 1 0 0 0 0 1 1/4 1/4 1/4 0 -1 0 -1 0 0 0 0 1 1/4 3/4 3/4 0 1 0 -1 0 0 0 0 -1 3/4 1/4 3/4 0 -1 0 1 0 0 0 0 -1 3/4 3/4 1/4 1 0 0 0 0 1 0 1 0 1/4 1/4 1/4 -1 0 0 0 0 1 0 -1 0 3/4 3/4 1/4 -1 0 0 0 0 -1 0 1 0 1/4 3/4 3/4 1 0 0 0 0 -1 0 -1 0 3/4 1/4 3/4 0 0 1 0 1 0 1 0 0 1/4 1/4 1/4 0 0 1 0 -1 0 -1 0 0 3/4 1/4 3/4 0 0 -1 0 1 0 -1 0 0 3/4 3/4 1/4 0 0 -1 0 -1 0 1 0 0 1/4 3/4 3/4 221 P m -3 m setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 222 P n -3 n setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 48 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 0 -1 -1 0 0 0 -1 0 1/2 1/2 1/2 0 0 -1 1 0 0 0 1 0 1/2 1/2 1/2 0 0 1 1 0 0 0 -1 0 1/2 1/2 1/2 0 0 1 -1 0 0 0 1 0 1/2 1/2 1/2 0 -1 0 0 0 -1 -1 0 0 1/2 1/2 1/2 0 1 0 0 0 -1 1 0 0 1/2 1/2 1/2 0 -1 0 0 0 1 1 0 0 1/2 1/2 1/2 0 1 0 0 0 1 -1 0 0 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 -1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 0 0 -1 0 -1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 1 0 1 0 0 1/2 1/2 1/2 222 P n -3 n setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 1/2 1/2 0 0 -1 -1 0 0 0 1 0 1/2 1/2 0.0 0 0 -1 1 0 0 0 -1 0 1/2 0.0 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 0.0 1/2 0 1 0 0 0 -1 -1 0 0 0.0 1/2 1/2 0 -1 0 0 0 -1 1 0 0 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 0.0 1/2 0.0 0 -1 0 1 0 0 0 0 1 1/2 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 1/2 -1 0 0 0 0 1 0 1 0 1/2 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 0.0 1/2 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 1/2 0 0 1 0 -1 0 1 0 0 0.0 1/2 0.0 0 0 -1 0 1 0 1 0 0 1/2 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 223 P m -3 n setting 1 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 0 0 1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 224 P n -3 m setting 1 centrosymmetric 0 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 48 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 0 0 1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 -1 0 0 0 -1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 1 0 0 0 -1 1/2 1/2 1/2 1 0 0 0 -1 0 0 0 1 1/2 1/2 1/2 -1 0 0 0 1 0 0 0 1 1/2 1/2 1/2 0 0 -1 -1 0 0 0 -1 0 1/2 1/2 1/2 0 0 -1 1 0 0 0 1 0 1/2 1/2 1/2 0 0 1 1 0 0 0 -1 0 1/2 1/2 1/2 0 0 1 -1 0 0 0 1 0 1/2 1/2 1/2 0 -1 0 0 0 -1 -1 0 0 1/2 1/2 1/2 0 1 0 0 0 -1 1 0 0 1/2 1/2 1/2 0 -1 0 0 0 1 1 0 0 1/2 1/2 1/2 0 1 0 0 0 1 -1 0 0 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 -1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 0 0 -1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 224 P n -3 m setting 2 centrosymmetric 1 primitive cell 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 reciprocal primitive cell 1 0 0 0 1 0 0 0 1 1 subtranslations 0.0 0.0 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 1/2 0.0 -1 0 0 0 1 0 0 0 -1 1/2 0.0 1/2 1 0 0 0 -1 0 0 0 -1 0.0 1/2 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 1/2 1/2 0 0 -1 -1 0 0 0 1 0 1/2 1/2 0.0 0 0 -1 1 0 0 0 -1 0 1/2 0.0 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 0.0 1/2 0 1 0 0 0 -1 -1 0 0 0.0 1/2 1/2 0 -1 0 0 0 -1 1 0 0 1/2 1/2 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 1/2 0.0 1/2 0 -1 0 1 0 0 0 0 1 0.0 1/2 1/2 1 0 0 0 0 1 0 -1 0 1/2 1/2 0.0 -1 0 0 0 0 1 0 1 0 0.0 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 1/2 0.0 1/2 0 0 1 0 1 0 -1 0 0 1/2 1/2 0.0 0 0 1 0 -1 0 1 0 0 1/2 0.0 1/2 0 0 -1 0 1 0 1 0 0 0.0 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 225 F m -3 m setting 1 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 226 F m -3 c setting 1 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 1/2 1/2 1/2 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 1 1/2 1/2 1/2 1 0 0 0 0 1 0 -1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 1/2 1/2 1/2 0 0 1 0 1 0 -1 0 0 1/2 1/2 1/2 0 0 1 0 -1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 1 0 1 0 0 1/2 1/2 1/2 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 227 F d -3 m setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 48 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 0.0 1/2 0 0 -1 -1 0 0 0 1 0 0.0 1/2 1/2 0 0 -1 1 0 0 0 -1 0 1/2 1/2 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 1/2 0.0 0 1 0 0 0 -1 -1 0 0 1/2 0.0 1/2 0 -1 0 0 0 -1 1 0 0 0.0 1/2 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 3/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 1/4 0 1 0 -1 0 0 0 0 1 1/4 3/4 3/4 0 -1 0 1 0 0 0 0 1 3/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 3/4 -1 0 0 0 0 1 0 1 0 3/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 1/4 1/4 1/4 1 0 0 0 0 -1 0 1 0 1/4 3/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 3/4 0 0 1 0 -1 0 1 0 0 1/4 3/4 3/4 0 0 -1 0 1 0 1 0 0 3/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 1/4 1/4 1/4 -1 0 0 0 -1 0 0 0 -1 1/4 1/4 1/4 1 0 0 0 1 0 0 0 -1 1/4 3/4 3/4 1 0 0 0 -1 0 0 0 1 3/4 3/4 1/4 -1 0 0 0 1 0 0 0 1 3/4 1/4 3/4 0 0 -1 -1 0 0 0 -1 0 1/4 1/4 1/4 0 0 -1 1 0 0 0 1 0 3/4 1/4 3/4 0 0 1 1 0 0 0 -1 0 1/4 3/4 3/4 0 0 1 -1 0 0 0 1 0 3/4 3/4 1/4 0 -1 0 0 0 -1 -1 0 0 1/4 1/4 1/4 0 1 0 0 0 -1 1 0 0 3/4 3/4 1/4 0 -1 0 0 0 1 1 0 0 3/4 1/4 3/4 0 1 0 0 0 1 -1 0 0 1/4 3/4 3/4 0 -1 0 -1 0 0 0 0 1 1/2 0.0 1/2 0 1 0 1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 -1 0.0 1/2 1/2 0 1 0 -1 0 0 0 0 -1 1/2 1/2 0.0 -1 0 0 0 0 -1 0 1 0 1/2 0.0 1/2 1 0 0 0 0 -1 0 -1 0 1/2 1/2 0.0 1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 -1 0 0.0 1/2 1/2 0 0 -1 0 -1 0 1 0 0 1/2 0.0 1/2 0 0 -1 0 1 0 -1 0 0 0.0 1/2 1/2 0 0 1 0 -1 0 -1 0 0 1/2 1/2 0.0 0 0 1 0 1 0 1 0 0 0.0 0.0 0.0 227 F d -3 m setting 2 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 3/4 1/4 1/2 -1 0 0 0 1 0 0 0 -1 1/4 1/2 3/4 1 0 0 0 -1 0 0 0 -1 1/2 3/4 1/4 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 3/4 1/4 0 0 -1 -1 0 0 0 1 0 3/4 1/4 1/2 0 0 -1 1 0 0 0 -1 0 1/4 1/2 3/4 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/4 1/2 3/4 0 1 0 0 0 -1 -1 0 0 1/2 3/4 1/4 0 -1 0 0 0 -1 1 0 0 3/4 1/4 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 1/2 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 1/4 1/2 3/4 0 -1 0 1 0 0 0 0 1 1/2 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 1/2 -1 0 0 0 0 1 0 1 0 1/2 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 1/4 1/2 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 1/2 0 0 1 0 -1 0 1 0 0 1/4 1/2 3/4 0 0 -1 0 1 0 1 0 0 1/2 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 228 F d -3 c setting 1 centrosymmetric 0 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 48 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 1/2 1/2 -1 0 0 0 1 0 0 0 -1 1/2 1/2 0.0 1 0 0 0 -1 0 0 0 -1 1/2 0.0 1/2 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 0.0 1/2 0 0 -1 -1 0 0 0 1 0 0.0 1/2 1/2 0 0 -1 1 0 0 0 -1 0 1/2 1/2 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 1/2 1/2 0.0 0 1 0 0 0 -1 -1 0 0 1/2 0.0 1/2 0 -1 0 0 0 -1 1 0 0 0.0 1/2 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 3/4 0 -1 0 -1 0 0 0 0 -1 1/4 1/4 1/4 0 1 0 -1 0 0 0 0 1 1/4 3/4 3/4 0 -1 0 1 0 0 0 0 1 3/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 3/4 -1 0 0 0 0 1 0 1 0 3/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 1/4 1/4 1/4 1 0 0 0 0 -1 0 1 0 1/4 3/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 3/4 0 0 1 0 -1 0 1 0 0 1/4 3/4 3/4 0 0 -1 0 1 0 1 0 0 3/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 1/4 1/4 1/4 -1 0 0 0 -1 0 0 0 -1 3/4 3/4 3/4 1 0 0 0 1 0 0 0 -1 3/4 1/4 1/4 1 0 0 0 -1 0 0 0 1 1/4 1/4 3/4 -1 0 0 0 1 0 0 0 1 1/4 3/4 1/4 0 0 -1 -1 0 0 0 -1 0 3/4 3/4 3/4 0 0 -1 1 0 0 0 1 0 1/4 3/4 1/4 0 0 1 1 0 0 0 -1 0 3/4 1/4 1/4 0 0 1 -1 0 0 0 1 0 1/4 1/4 3/4 0 -1 0 0 0 -1 -1 0 0 3/4 3/4 3/4 0 1 0 0 0 -1 1 0 0 1/4 1/4 3/4 0 -1 0 0 0 1 1 0 0 1/4 3/4 1/4 0 1 0 0 0 1 -1 0 0 3/4 1/4 1/4 0 -1 0 -1 0 0 0 0 1 0.0 1/2 0.0 0 1 0 1 0 0 0 0 1 1/2 1/2 1/2 0 -1 0 1 0 0 0 0 -1 1/2 0.0 0.0 0 1 0 -1 0 0 0 0 -1 0.0 0.0 1/2 -1 0 0 0 0 -1 0 1 0 0.0 1/2 0.0 1 0 0 0 0 -1 0 -1 0 0.0 0.0 1/2 1 0 0 0 0 1 0 1 0 1/2 1/2 1/2 -1 0 0 0 0 1 0 -1 0 1/2 0.0 0.0 0 0 -1 0 -1 0 1 0 0 0.0 1/2 0.0 0 0 -1 0 1 0 -1 0 0 1/2 0.0 0.0 0 0 1 0 -1 0 -1 0 0 0.0 0.0 1/2 0 0 1 0 1 0 1 0 0 1/2 1/2 1/2 228 F d -3 c setting 2 centrosymmetric 1 primitive cell 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 reciprocal primitive cell -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0 0.0 0.0 0.0 1/2 1/2 1/2 0.0 1/2 1/2 1/2 0.0 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/4 3/4 1/2 -1 0 0 0 1 0 0 0 -1 3/4 1/2 1/4 1 0 0 0 -1 0 0 0 -1 1/2 1/4 3/4 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/4 3/4 0 0 -1 -1 0 0 0 1 0 1/4 3/4 1/2 0 0 -1 1 0 0 0 -1 0 3/4 1/2 1/4 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 3/4 1/2 1/4 0 1 0 0 0 -1 -1 0 0 1/2 1/4 3/4 0 -1 0 0 0 -1 1 0 0 1/4 3/4 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 0.0 0 -1 0 -1 0 0 0 0 -1 1/2 1/2 1/2 0 1 0 -1 0 0 0 0 1 1/4 0.0 3/4 0 -1 0 1 0 0 0 0 1 0.0 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 0.0 -1 0 0 0 0 1 0 1 0 0.0 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 1/2 1/2 1/2 1 0 0 0 0 -1 0 1 0 1/4 0.0 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 0.0 0 0 1 0 -1 0 1 0 0 1/4 0.0 3/4 0 0 -1 0 1 0 1 0 0 0.0 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 1/2 1/2 1/2 229 I m -3 m setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 1 0 0 0 -1 0.0 0.0 0.0 1 0 0 0 -1 0 0 0 -1 0.0 0.0 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 0.0 0.0 0.0 0 0 -1 -1 0 0 0 1 0 0.0 0.0 0.0 0 0 -1 1 0 0 0 -1 0 0.0 0.0 0.0 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 0.0 0.0 0 1 0 0 0 -1 -1 0 0 0.0 0.0 0.0 0 -1 0 0 0 -1 1 0 0 0.0 0.0 0.0 0 1 0 1 0 0 0 0 -1 0.0 0.0 0.0 0 -1 0 -1 0 0 0 0 -1 0.0 0.0 0.0 0 1 0 -1 0 0 0 0 1 0.0 0.0 0.0 0 -1 0 1 0 0 0 0 1 0.0 0.0 0.0 1 0 0 0 0 1 0 -1 0 0.0 0.0 0.0 -1 0 0 0 0 1 0 1 0 0.0 0.0 0.0 -1 0 0 0 0 -1 0 -1 0 0.0 0.0 0.0 1 0 0 0 0 -1 0 1 0 0.0 0.0 0.0 0 0 1 0 1 0 -1 0 0 0.0 0.0 0.0 0 0 1 0 -1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 1 0 1 0 0 0.0 0.0 0.0 0 0 -1 0 -1 0 -1 0 0 0.0 0.0 0.0 230 I a -3 d setting 1 centrosymmetric 1 primitive cell -1/2 1/2 1/2 1/2 -1/2 1/2 1/2 1/2 -1/2 reciprocal primitive cell 0 1 1 1 0 1 1 1 0 2 subtranslations 0.0 0.0 0.0 1/2 1/2 1/2 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0 0.0 0.0 -1 0 0 0 -1 0 0 0 1 1/2 0.0 1/2 -1 0 0 0 1 0 0 0 -1 0.0 1/2 1/2 1 0 0 0 -1 0 0 0 -1 1/2 1/2 0.0 0 0 1 1 0 0 0 1 0 0.0 0.0 0.0 0 0 1 -1 0 0 0 -1 0 1/2 1/2 0.0 0 0 -1 -1 0 0 0 1 0 1/2 0.0 1/2 0 0 -1 1 0 0 0 -1 0 0.0 1/2 1/2 0 1 0 0 0 1 1 0 0 0.0 0.0 0.0 0 -1 0 0 0 1 -1 0 0 0.0 1/2 1/2 0 1 0 0 0 -1 -1 0 0 1/2 1/2 0.0 0 -1 0 0 0 -1 1 0 0 1/2 0.0 1/2 0 1 0 1 0 0 0 0 -1 3/4 1/4 1/4 0 -1 0 -1 0 0 0 0 -1 3/4 3/4 3/4 0 1 0 -1 0 0 0 0 1 1/4 1/4 3/4 0 -1 0 1 0 0 0 0 1 1/4 3/4 1/4 1 0 0 0 0 1 0 -1 0 3/4 1/4 1/4 -1 0 0 0 0 1 0 1 0 1/4 3/4 1/4 -1 0 0 0 0 -1 0 -1 0 3/4 3/4 3/4 1 0 0 0 0 -1 0 1 0 1/4 1/4 3/4 0 0 1 0 1 0 -1 0 0 3/4 1/4 1/4 0 0 1 0 -1 0 1 0 0 1/4 1/4 3/4 0 0 -1 0 1 0 1 0 0 1/4 3/4 1/4 0 0 -1 0 -1 0 -1 0 0 3/4 3/4 3/4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/spacegroup.py000066400000000000000000000750171316323560300254430ustar00rootroot00000000000000from __future__ import print_function, division # Copyright (C) 2010, Jesper Friis # (see accompanying license files for details). """Definition of the Spacegroup class. This module only depends on NumPy and the space group database. """ import os import warnings from functools import total_ordering import numpy as np from ase.utils import basestring # check if we have access to get_spacegroup from spglib # https://atztogo.github.io/spglib/ has_spglib = False try: import spglib # For version 1.9 or later has_spglib = True except ImportError: try: from pyspglib import spglib # For versions 1.8.x or before has_spglib = True except ImportError: pass __all__ = ['Spacegroup'] class SpacegroupError(Exception): """Base exception for the spacegroup module.""" pass class SpacegroupNotFoundError(SpacegroupError): """Raised when given space group cannot be found in data base.""" pass class SpacegroupValueError(SpacegroupError): """Raised when arguments have invalid value.""" pass @total_ordering class Spacegroup(object): """A space group class. The instances of Spacegroup describes the symmetry operations for the given space group. Example: >>> from ase.spacegroup import Spacegroup >>> >>> sg = Spacegroup(225) >>> print('Space group', sg.no, sg.symbol) Space group 225 F m -3 m >>> sg.scaled_primitive_cell array([[ 0. , 0.5, 0.5], [ 0.5, 0. , 0.5], [ 0.5, 0.5, 0. ]]) >>> sites, kinds = sg.equivalent_sites([[0,0,0]]) >>> sites array([[ 0. , 0. , 0. ], [ 0. , 0.5, 0.5], [ 0.5, 0. , 0.5], [ 0.5, 0.5, 0. ]]) """ no = property( lambda self: self._no, doc='Space group number in International Tables of Crystallography.') symbol = property( lambda self: self._symbol, doc='Hermann-Mauguin (or international) symbol for the space group.') setting = property( lambda self: self._setting, doc='Space group setting. Either one or two.') lattice = property( lambda self: self._symbol[0], doc="""Lattice type: P primitive I body centering, h+k+l=2n F face centering, h,k,l all odd or even A,B,C single face centering, k+l=2n, h+l=2n, h+k=2n R rhombohedral centering, -h+k+l=3n (obverse); h-k+l=3n (reverse) """) centrosymmetric = property( lambda self: self._centrosymmetric, doc='Whether a center of symmetry exists.') scaled_primitive_cell = property( lambda self: self._scaled_primitive_cell, doc='Primitive cell in scaled coordinates as a matrix with the ' 'primitive vectors along the rows.') reciprocal_cell = property( lambda self: self._reciprocal_cell, doc='Tree Miller indices that span all kinematically non-forbidden ' 'reflections as a matrix with the Miller indices along the rows.') nsubtrans = property( lambda self: len(self._subtrans), doc='Number of cell-subtranslation vectors.') def _get_nsymop(self): """Returns total number of symmetry operations.""" if self.centrosymmetric: return 2 * len(self._rotations) * len(self._subtrans) else: return len(self._rotations) * len(self._subtrans) nsymop = property(_get_nsymop, doc='Total number of symmetry operations.') subtrans = property( lambda self: self._subtrans, doc='Translations vectors belonging to cell-sub-translations.') rotations = property( lambda self: self._rotations, doc='Symmetry rotation matrices. The invertions are not included ' 'for centrosymmetrical crystals.') translations = property( lambda self: self._translations, doc='Symmetry translations. The invertions are not included ' 'for centrosymmetrical crystals.') def __init__(self, spacegroup, setting=1, datafile=None): """Returns a new Spacegroup instance. Parameters: spacegroup : int | string | Spacegroup instance The space group number in International Tables of Crystallography or its Hermann-Mauguin symbol. E.g. spacegroup=225 and spacegroup='F m -3 m' are equivalent. setting : 1 | 2 Some space groups have more than one setting. `setting` determines Which of these should be used. datafile : None | string Path to database file. If `None`, the the default database will be used. """ if isinstance(spacegroup, Spacegroup): for k, v in spacegroup.__dict__.items(): setattr(self, k, v) return if not datafile: datafile = get_datafile() f = open(datafile, 'r') try: _read_datafile(self, spacegroup, setting, f) finally: f.close() def __repr__(self): return 'Spacegroup(%d, setting=%d)' % (self.no, self.setting) def todict(self): return {'number': self.no, 'setting': self.setting} def __str__(self): """Return a string representation of the space group data in the same format as found the database.""" retval = [] # no, symbol retval.append('%-3d %s\n' % (self.no, self.symbol)) # setting retval.append(' setting %d\n' % (self.setting)) # centrosymmetric retval.append(' centrosymmetric %d\n' % (self.centrosymmetric)) # primitive vectors retval.append(' primitive vectors\n') for i in range(3): retval.append(' ') for j in range(3): retval.append(' %13.10f' % (self.scaled_primitive_cell[i, j])) retval.append('\n') # primitive reciprocal vectors retval.append(' reciprocal vectors\n') for i in range(3): retval.append(' ') for j in range(3): retval.append(' %3d' % (self.reciprocal_cell[i, j])) retval.append('\n') # sublattice retval.append(' %d subtranslations\n' % self.nsubtrans) for i in range(self.nsubtrans): retval.append(' ') for j in range(3): retval.append(' %13.10f' % (self.subtrans[i, j])) retval.append('\n') # symmetry operations nrot = len(self.rotations) retval.append(' %d symmetry operations (rot+trans)\n' % nrot) for i in range(nrot): retval.append(' ') for j in range(3): retval.append(' ') for k in range(3): retval.append(' %2d' % (self.rotations[i, j, k])) retval.append(' ') for j in range(3): retval.append(' %13.10f' % self.translations[i, j]) retval.append('\n') retval.append('\n') return ''.join(retval) def __eq__(self, other): return self.no == other.no and self.setting == other.setting def __ne__(self, other): return not self.__eq__(other) def __lt__(self, other): return self.no < other.no or ( self.no == other.no and self.setting < other.setting) def __index__(self): return self.no def get_symop(self): """Returns all symmetry operations (including inversions and subtranslations) as a sequence of (rotation, translation) tuples.""" symop = [] parities = [1] if self.centrosymmetric: parities.append(-1) for parity in parities: for subtrans in self.subtrans: for rot, trans in zip(self.rotations, self.translations): newtrans = np.mod(trans + subtrans, 1) symop.append((parity * rot, newtrans)) return symop def get_op(self): """Returns all symmetry operations (including inversions and subtranslations), but unlike get_symop(), they are returned as two ndarrays.""" if self.centrosymmetric: rot = np.tile(np.vstack((self.rotations, -self.rotations)), (self.nsubtrans, 1, 1)) trans = np.tile(np.vstack((self.translations, -self.translations)), (self.nsubtrans, 1)) trans += np.repeat(self.subtrans, 2 * len(self.rotations), axis=0) trans = np.mod(trans, 1) else: rot = np.tile(self.rotations, (self.nsubtrans, 1, 1)) trans = np.tile(self.translations, (self.nsubtrans, 1)) trans += np.repeat(self.subtrans, len(self.rotations), axis=0) trans = np.mod(trans, 1) return rot, trans def get_rotations(self): """Return all rotations, including inversions for centrosymmetric crystals.""" if self.centrosymmetric: return np.vstack((self.rotations, -self.rotations)) else: return self.rotations def equivalent_reflections(self, hkl): """Return all equivalent reflections to the list of Miller indices in hkl. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.equivalent_reflections([[0, 0, 2]]) array([[ 0, 0, -2], [ 0, -2, 0], [-2, 0, 0], [ 2, 0, 0], [ 0, 2, 0], [ 0, 0, 2]]) """ hkl = np.array(hkl, dtype='int', ndmin=2) rot = self.get_rotations() n, nrot = len(hkl), len(rot) R = rot.transpose(0, 2, 1).reshape((3 * nrot, 3)).T refl = np.dot(hkl, R).reshape((n * nrot, 3)) ind = np.lexsort(refl.T) refl = refl[ind] diff = np.diff(refl, axis=0) mask = np.any(diff, axis=1) return np.vstack((refl[:-1][mask], refl[-1, :])) def equivalent_lattice_points(self, uvw): """Return all lattice points equivalent to any of the lattice points in `uvw` with respect to rotations only. Only equivalent lattice points that conserves the distance to origo are included in the output (making this a kind of real space version of the equivalent_reflections() method). Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.equivalent_lattice_points([[0, 0, 2]]) array([[ 0, 0, -2], [ 0, -2, 0], [-2, 0, 0], [ 2, 0, 0], [ 0, 2, 0], [ 0, 0, 2]]) """ uvw = np.array(uvw, ndmin=2) rot = self.get_rotations() n, nrot = len(uvw), len(rot) directions = np.dot(uvw, rot).reshape((n * nrot, 3)) ind = np.lexsort(directions.T) directions = directions[ind] diff = np.diff(directions, axis=0) mask = np.any(diff, axis=1) return np.vstack((directions[:-1][mask], directions[-1:])) def symmetry_normalised_reflections(self, hkl): """Returns an array of same size as *hkl*, containing the corresponding symmetry-equivalent reflections of lowest indices. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.symmetry_normalised_reflections([[2, 0, 0], [0, 2, 0]]) array([[ 0, 0, -2], [ 0, 0, -2]]) """ hkl = np.array(hkl, dtype=int, ndmin=2) normalised = np.empty(hkl.shape, int) R = self.get_rotations().transpose(0, 2, 1) for i, g in enumerate(hkl): gsym = np.dot(R, g) j = np.lexsort(gsym.T)[0] normalised[i, :] = gsym[j] return normalised def unique_reflections(self, hkl): """Returns a subset *hkl* containing only the symmetry-unique reflections. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.unique_reflections([[ 2, 0, 0], ... [ 0, -2, 0], ... [ 2, 2, 0], ... [ 0, -2, -2]]) array([[2, 0, 0], [2, 2, 0]]) """ hkl = np.array(hkl, dtype=int, ndmin=2) hklnorm = self.symmetry_normalised_reflections(hkl) perm = np.lexsort(hklnorm.T) iperm = perm.argsort() xmask = np.abs(np.diff(hklnorm[perm], axis=0)).any(axis=1) mask = np.concatenate(([True], xmask)) imask = mask[iperm] return hkl[imask] def equivalent_sites(self, scaled_positions, onduplicates='error', symprec=1e-3): """Returns the scaled positions and all their equivalent sites. Parameters: scaled_positions: list | array List of non-equivalent sites given in unit cell coordinates. onduplicates : 'keep' | 'replace' | 'warn' | 'error' Action if `scaled_positions` contain symmetry-equivalent positions: 'keep' ignore additional symmetry-equivalent positions 'replace' replace 'warn' like 'keep', but issue an UserWarning 'error' raises a SpacegroupValueError symprec: float Minimum "distance" betweed two sites in scaled coordinates before they are counted as the same site. Returns: sites: array A NumPy array of equivalent sites. kinds: list A list of integer indices specifying which input site is equivalent to the corresponding returned site. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sites, kinds = sg.equivalent_sites([[0, 0, 0], [0.5, 0.0, 0.0]]) >>> sites array([[ 0. , 0. , 0. ], [ 0. , 0.5, 0.5], [ 0.5, 0. , 0.5], [ 0.5, 0.5, 0. ], [ 0.5, 0. , 0. ], [ 0. , 0.5, 0. ], [ 0. , 0. , 0.5], [ 0.5, 0.5, 0.5]]) >>> kinds [0, 0, 0, 0, 1, 1, 1, 1] """ kinds = [] sites = [] scaled = np.array(scaled_positions, ndmin=2) for kind, pos in enumerate(scaled): for rot, trans in self.get_symop(): site = np.mod(np.dot(rot, pos) + trans, 1.) if not sites: sites.append(site) kinds.append(kind) continue t = site - sites mask = np.all((abs(t) < symprec) | (abs(abs(t) - 1.0) < symprec), axis=1) if np.any(mask): ind = np.argwhere(mask)[0][0] if kinds[ind] == kind: pass elif onduplicates == 'keep': pass elif onduplicates == 'replace': kinds[ind] = kind elif onduplicates == 'warn': warnings.warn('scaled_positions %d and %d ' 'are equivalent' % (kinds[ind], kind)) elif onduplicates == 'error': raise SpacegroupValueError( 'scaled_positions %d and %d are equivalent' % ( kinds[ind], kind)) else: raise SpacegroupValueError( 'Argument "onduplicates" must be one of: ' '"keep", "replace", "warn" or "error".') else: sites.append(site) kinds.append(kind) return np.array(sites), kinds def symmetry_normalised_sites(self, scaled_positions, map_to_unitcell=True): """Returns an array of same size as *scaled_positions*, containing the corresponding symmetry-equivalent sites of lowest indices. If *map_to_unitcell* is true, the returned positions are all mapped into the unit cell, i.e. lattice translations are included as symmetry operator. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.symmetry_normalised_sites([[0.0, 0.5, 0.5], [1.0, 1.0, 0.0]]) array([[ 0., 0., 0.], [ 0., 0., 0.]]) """ scaled = np.array(scaled_positions, ndmin=2) normalised = np.empty(scaled.shape, np.float) rot, trans = self.get_op() for i, pos in enumerate(scaled): sympos = np.dot(rot, pos) + trans if map_to_unitcell: # Must be done twice, see the scaled_positions.py test sympos %= 1.0 sympos %= 1.0 j = np.lexsort(sympos.T)[0] normalised[i, :] = sympos[j] return normalised def unique_sites(self, scaled_positions, symprec=1e-3, output_mask=False, map_to_unitcell=True): """Returns a subset of *scaled_positions* containing only the symmetry-unique positions. If *output_mask* is True, a boolean array masking the subset is also returned. If *map_to_unitcell* is true, all sites are first mapped into the unit cell making e.g. [0, 0, 0] and [1, 0, 0] equivalent. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.unique_sites([[0.0, 0.0, 0.0], ... [0.5, 0.5, 0.0], ... [1.0, 0.0, 0.0], ... [0.5, 0.0, 0.0]]) array([[ 0. , 0. , 0. ], [ 0.5, 0. , 0. ]]) """ scaled = np.array(scaled_positions, ndmin=2) symnorm = self.symmetry_normalised_sites(scaled, map_to_unitcell) perm = np.lexsort(symnorm.T) iperm = perm.argsort() xmask = np.abs(np.diff(symnorm[perm], axis=0)).max(axis=1) > symprec mask = np.concatenate(([True], xmask)) imask = mask[iperm] if output_mask: return scaled[imask], imask else: return scaled[imask] def tag_sites(self, scaled_positions, symprec=1e-3): """Returns an integer array of the same length as *scaled_positions*, tagging all equivalent atoms with the same index. Example: >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) # fcc >>> sg.tag_sites([[0.0, 0.0, 0.0], ... [0.5, 0.5, 0.0], ... [1.0, 0.0, 0.0], ... [0.5, 0.0, 0.0]]) array([0, 0, 0, 1]) """ scaled = np.array(scaled_positions, ndmin=2) scaled %= 1.0 scaled %= 1.0 tags = -np.ones((len(scaled), ), dtype=int) mask = np.ones((len(scaled), ), dtype=np.bool) rot, trans = self.get_op() i = 0 while mask.any(): pos = scaled[mask][0] sympos = np.dot(rot, pos) + trans # Must be done twice, see the scaled_positions.py test sympos %= 1.0 sympos %= 1.0 m = ~np.all(np.any(np.abs(scaled[np.newaxis, :, :] - sympos[:, np.newaxis, :]) > symprec, axis=2), axis=0) assert not np.any((~mask) & m) tags[m] = i mask &= ~m i += 1 return tags def get_datafile(): """Return default path to datafile.""" return os.path.join(os.path.dirname(__file__), 'spacegroup.dat') def format_symbol(symbol): """Returns well formatted Hermann-Mauguin symbol as extected by the database, by correcting the case and adding missing or removing dublicated spaces.""" fixed = [] s = symbol.strip() s = s[0].upper() + s[1:].lower() for c in s: if c.isalpha(): if len(fixed) and fixed[-1] == '/': fixed.append(c) else: fixed.append(' ' + c + ' ') elif c.isspace(): fixed.append(' ') elif c.isdigit(): fixed.append(c) elif c == '-': fixed.append(' ' + c) elif c == '/': fixed.append(c) s = ''.join(fixed).strip() return ' '.join(s.split()) # Functions for parsing the database. They are moved outside the # Spacegroup class in order to make it easier to later implement # caching to avoid reading the database each time a new Spacegroup # instance is created. def _skip_to_blank(f, spacegroup, setting): """Read lines from f until a blank line is encountered.""" while True: line = f.readline() if not line: raise SpacegroupNotFoundError( 'invalid spacegroup %s, setting %i not found in data base' % (spacegroup, setting)) if not line.strip(): break def _skip_to_nonblank(f, spacegroup, setting): """Read lines from f until a nonblank line not starting with a hash (#) is encountered and returns this and the next line.""" while True: line1 = f.readline() if not line1: raise SpacegroupNotFoundError( 'invalid spacegroup %s, setting %i not found in data base' % (spacegroup, setting)) line1.strip() if line1 and not line1.startswith('#'): line2 = f.readline() break return line1, line2 def _read_datafile_entry(spg, no, symbol, setting, f): """Read space group data from f to spg.""" floats = {'0.0': 0.0, '1.0': 1.0, '0': 0.0, '1': 1.0, '-1': -1.0} for n, d in [(1, 2), (1, 3), (2, 3), (1, 4), (3, 4), (1, 6), (5, 6)]: floats['{0}/{1}'.format(n, d)] = n / d floats['-{0}/{1}'.format(n, d)] = -n / d spg._no = no spg._symbol = symbol.strip() spg._setting = setting spg._centrosymmetric = bool(int(f.readline().split()[1])) # primitive vectors f.readline() spg._scaled_primitive_cell = np.array([[float(floats.get(s, s)) for s in f.readline().split()] for i in range(3)], dtype=np.float) # primitive reciprocal vectors f.readline() spg._reciprocal_cell = np.array([[int(i) for i in f.readline().split()] for i in range(3)], dtype=np.int) # subtranslations spg._nsubtrans = int(f.readline().split()[0]) spg._subtrans = np.array([[float(floats.get(t, t)) for t in f.readline().split()] for i in range(spg._nsubtrans)], dtype=np.float) # symmetry operations nsym = int(f.readline().split()[0]) symop = np.array([[float(floats.get(s, s)) for s in f.readline().split()] for i in range(nsym)], dtype=np.float) spg._nsymop = nsym spg._rotations = np.array(symop[:, :9].reshape((nsym, 3, 3)), dtype=np.int) spg._translations = symop[:, 9:] def _read_datafile(spg, spacegroup, setting, f): if isinstance(spacegroup, int): pass elif isinstance(spacegroup, basestring): spacegroup = ' '.join(spacegroup.strip().split()) compact_spacegroup = ''.join(spacegroup.split()) else: raise SpacegroupValueError('`spacegroup` must be of type int or str') while True: line1, line2 = _skip_to_nonblank(f, spacegroup, setting) _no, _symbol = line1.strip().split(None, 1) _symbol = format_symbol(_symbol) compact_symbol = ''.join(_symbol.split()) _setting = int(line2.strip().split()[1]) _no = int(_no) if ((isinstance(spacegroup, int) and _no == spacegroup) or (isinstance(spacegroup, basestring) and compact_symbol == compact_spacegroup)) and _setting == setting: _read_datafile_entry(spg, _no, _symbol, _setting, f) break else: _skip_to_blank(f, spacegroup, setting) def parse_sitesym(symlist, sep=','): """Parses a sequence of site symmetries in the form used by International Tables and returns corresponding rotation and translation arrays. Example: >>> symlist = [ ... 'x,y,z', ... '-y+1/2,x+1/2,z', ... '-y,-x,-z', ... ] >>> rot, trans = parse_sitesym(symlist) >>> rot array([[[ 1, 0, 0], [ 0, 1, 0], [ 0, 0, 1]], [[ 0, -1, 0], [ 1, 0, 0], [ 0, 0, 1]], [[ 0, -1, 0], [-1, 0, 0], [ 0, 0, -1]]]) >>> trans array([[ 0. , 0. , 0. ], [ 0.5, 0.5, 0. ], [ 0. , 0. , 0. ]]) """ nsym = len(symlist) rot = np.zeros((nsym, 3, 3), dtype='int') trans = np.zeros((nsym, 3)) for i, sym in enumerate(symlist): for j, s in enumerate(sym.split(sep)): s = s.lower().strip() while s: sign = 1 if s[0] in '+-': if s[0] == '-': sign = -1 s = s[1:] if s[0] in 'xyz': k = ord(s[0]) - ord('x') rot[i, j, k] = sign s = s[1:] elif s[0].isdigit() or s[0] == '.': n = 0 while n < len(s) and (s[n].isdigit() or s[n] in '/.'): n += 1 t = s[:n] s = s[n:] if '/' in t: q, r = t.split('/') trans[i, j] = float(q) / float(r) else: trans[i, j] = float(t) else: raise SpacegroupValueError( 'Error parsing %r. Invalid site symmetry: %s' % (s, sym)) return rot, trans def spacegroup_from_data(no=None, symbol=None, setting=1, centrosymmetric=None, scaled_primitive_cell=None, reciprocal_cell=None, subtrans=None, sitesym=None, rotations=None, translations=None, datafile=None): """Manually create a new space group instance. This might be useful when reading crystal data with its own spacegroup definitions.""" if no is not None: spg = Spacegroup(no, setting, datafile) elif symbol is not None: spg = Spacegroup(symbol, setting, datafile) else: raise SpacegroupValueError('either *no* or *symbol* must be given') have_sym = False if centrosymmetric is not None: spg._centrosymmetric = bool(centrosymmetric) if scaled_primitive_cell is not None: spg._scaled_primitive_cell = np.array(scaled_primitive_cell) if reciprocal_cell is not None: spg._reciprocal_cell = np.array(reciprocal_cell) if subtrans is not None: spg._subtrans = np.atleast_2d(subtrans) spg._nsubtrans = spg._subtrans.shape[0] if sitesym is not None: spg._rotations, spg._translations = parse_sitesym(sitesym) have_sym = True if rotations is not None: spg._rotations = np.atleast_3d(rotations) have_sym = True if translations is not None: spg._translations = np.atleast_2d(translations) have_sym = True if have_sym: if spg._rotations.shape[0] != spg._translations.shape[0]: raise SpacegroupValueError('inconsistent number of rotations and ' 'translations') spg._nsymop = spg._rotations.shape[0] return spg def get_spacegroup(atoms, symprec=1e-5, method='phonopy'): """Determine the spacegroup to which belongs the Atoms object. When PhonoPy/SPGlib is NOT available, a pure ASE python implementation is used. The pure ASE method is NOT recommended for large systems (SLOW). Parameters: atoms: Atoms object Types, positions and unit-cell. symprec: float Symmetry tolerance, i.e. distance tolerance in Cartesian coordinates to find crystal symmetry. method: str 'phonopy' or 'spglib' when available, or 'ase' (fallback). The Spacegroup object is returned. Example: >>> from ase.build import bulk >>> atoms = bulk("Cu", "fcc", a=3.6, cubic=True) >>> sg = get_spacegroup(atoms) >>> sg Spacegroup(225, setting=1) >>> sg.no 225 """ # use spglib when it is available (and return) if has_spglib and method in ['phonopy', 'spglib']: sg = spglib.get_spacegroup(atoms) sg_no = int(sg[sg.find('(') + 1:sg.find(')')]) return Spacegroup(sg_no) # no spglib, we use our own spacegroup finder. Not as fast as spglib. # we center the Atoms positions on each atom in the cell, and find the # spacegroup of highest symmetry found = None for kind, pos in enumerate(atoms.get_scaled_positions()): sg = _get_spacegroup(atoms, symprec=1e-5, center=kind) if found is None or sg.no > found.no: found = sg return found def _get_spacegroup(atoms, symprec=1e-5, center=None): """ASE implementation of get_spacegroup, pure python.""" # we try all available spacegroups from 230 to 1, backwards # a Space group is the collection of all symmetry operations which lets the # unit cell invariant. found = None positions = atoms.get_scaled_positions(wrap=True) # in the lattice frame # make sure we are insensitive to translation. this choice is arbitrary and # could lead to a 'slightly' wrong guess for the Space group, e.g. do not # guess centro-symmetry. if center is not None: try: positions -= positions[center] except IndexError: pass # search space groups from the highest symmetry to the lowest # retain the first match for nb in range(230, 0, -1): sg = Spacegroup(nb) # # now we scan all atoms in the cell and look for equivalent sites sites, kinds = sg.equivalent_sites(positions, onduplicates='keep', symprec=symprec) # the equivalent sites should match all other atom locations in the # cell as the spacegroup transforms the unit cell in itself # we test on the number of equivalent sites if len(sites) == len(positions): # store the space group into the list found = sg break return found ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/spacegroup/xtal.py000066400000000000000000000134651316323560300242420ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2010, Jesper Friis # (see accompanying license files for details). """ A module for ASE for simple creation of crystalline structures from knowledge of the space group. """ import numpy as np import ase from ase.atoms import string2symbols from ase.spacegroup import Spacegroup from ase.geometry import cellpar_to_cell from ase.utils import basestring __all__ = ['crystal'] def crystal(symbols=None, basis=None, spacegroup=1, setting=1, cell=None, cellpar=None, ab_normal=(0, 0, 1), a_direction=None, size=(1, 1, 1), onduplicates='warn', symprec=0.001, pbc=True, primitive_cell=False, **kwargs): """Create an Atoms instance for a conventional unit cell of a space group. Parameters: symbols : str | sequence of str | sequence of Atom | Atoms Element symbols of the unique sites. Can either be a string formula or a sequence of element symbols. E.g. ('Na', 'Cl') and 'NaCl' are equivalent. Can also be given as a sequence of Atom objects or an Atoms object. basis : list of scaled coordinates Positions of the unique sites corresponding to symbols given either as scaled positions or through an atoms instance. Not needed if *symbols* is a sequence of Atom objects or an Atoms object. spacegroup : int | string | Spacegroup instance Space group given either as its number in International Tables or as its Hermann-Mauguin symbol. setting : 1 | 2 Space group setting. cell : 3x3 matrix Unit cell vectors. cellpar : [a, b, c, alpha, beta, gamma] Cell parameters with angles in degree. Is not used when `cell` is given. ab_normal : vector Is used to define the orientation of the unit cell relative to the Cartesian system when `cell` is not given. It is the normal vector of the plane spanned by a and b. a_direction : vector Defines the orientation of the unit cell a vector. a will be parallel to the projection of `a_direction` onto the a-b plane. size : 3 positive integers How many times the conventional unit cell should be repeated in each direction. onduplicates : 'keep' | 'replace' | 'warn' | 'error' Action if `basis` contain symmetry-equivalent positions: 'keep' - ignore additional symmetry-equivalent positions 'replace' - replace 'warn' - like 'keep', but issue an UserWarning 'error' - raises a SpacegroupValueError symprec : float Minimum "distance" betweed two sites in scaled coordinates before they are counted as the same site. pbc : one or three bools Periodic boundary conditions flags. Examples: True, False, 0, 1, (1, 1, 0), (True, False, False). Default is True. primitive_cell : bool Wheter to return the primitive instead of the conventional unit cell. Keyword arguments: All additional keyword arguments are passed on to the Atoms constructor. Currently, probably the most useful additional keyword arguments are `info`, `constraint` and `calculator`. Examples: Two diamond unit cells (space group number 227) >>> diamond = crystal('C', [(0,0,0)], spacegroup=227, ... cellpar=[3.57, 3.57, 3.57, 90, 90, 90], size=(2,1,1)) >>> ase.view(diamond) # doctest: +SKIP A CoSb3 skutterudite unit cell containing 32 atoms >>> skutterudite = crystal(('Co', 'Sb'), ... basis=[(0.25,0.25,0.25), (0.0, 0.335, 0.158)], ... spacegroup=204, cellpar=[9.04, 9.04, 9.04, 90, 90, 90]) >>> len(skutterudite) 32 """ sg = Spacegroup(spacegroup, setting) if (not isinstance(symbols, basestring) and hasattr(symbols, '__getitem__') and len(symbols) > 0 and isinstance(symbols[0], ase.Atom)): symbols = ase.Atoms(symbols) if isinstance(symbols, ase.Atoms): basis = symbols symbols = basis.get_chemical_symbols() if isinstance(basis, ase.Atoms): basis_coords = basis.get_scaled_positions() if cell is None and cellpar is None: cell = basis.cell if symbols is None: symbols = basis.get_chemical_symbols() else: basis_coords = np.array(basis, dtype=float, copy=False, ndmin=2) sites, kinds = sg.equivalent_sites(basis_coords, onduplicates=onduplicates, symprec=symprec) symbols = parse_symbols(symbols) symbols = [symbols[i] for i in kinds] if cell is None: cell = cellpar_to_cell(cellpar, ab_normal, a_direction) info = dict(spacegroup=sg) if primitive_cell: info['unit_cell'] = 'primitive' else: info['unit_cell'] = 'conventional' if 'info' in kwargs: info.update(kwargs['info']) kwargs['info'] = info atoms = ase.Atoms(symbols, scaled_positions=sites, cell=cell, pbc=pbc, **kwargs) if isinstance(basis, ase.Atoms): for name in basis.arrays: if not atoms.has(name): array = basis.get_array(name) atoms.new_array(name, [array[i] for i in kinds], dtype=array.dtype, shape=array.shape[1:]) if primitive_cell: from ase.build import cut prim_cell = sg.scaled_primitive_cell atoms = cut(atoms, a=prim_cell[0], b=prim_cell[1], c=prim_cell[2]) if size != (1, 1, 1): atoms = atoms.repeat(size) return atoms def parse_symbols(symbols): """Return `sumbols` as a sequence of element symbols.""" if isinstance(symbols, basestring): symbols = string2symbols(symbols) return symbols ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/structure.py000066400000000000000000000002551316323560300231530ustar00rootroot00000000000000import warnings from ase.build import nanotube, graphene_nanoribbon, molecule __all__ = ['nanotube', 'graphene_nanoribbon', 'molecule'] warnings.warn('Moved to ase.build') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/000077500000000000000000000000001316323560300215165ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/Ag-Cu100.py000066400000000000000000000031721316323560300232100ustar00rootroot00000000000000from math import sqrt from ase import Atom, Atoms from ase.neb import NEB from ase.constraints import FixAtoms from ase.vibrations import Vibrations from ase.visualize import view from ase.calculators.emt import EMT from ase.optimize import QuasiNewton, BFGS # Distance between Cu atoms on a (100) surface: d = 3.6 / sqrt(2) initial = Atoms('Cu', positions=[(0, 0, 0)], cell=(d, d, 1.0), pbc=(True, True, False)) initial *= (2, 2, 1) # 2x2 (100) surface-cell # Approximate height of Ag atom on Cu(100) surfece: h0 = 2.0 initial += Atom('Ag', (d / 2, d / 2, h0)) if 0: view(initial) # Make band: images = [initial.copy() for i in range(6)] neb = NEB(images, climb=True) # Set constraints and calculator: constraint = FixAtoms(range(len(initial) - 1)) for image in images: image.set_calculator(EMT()) image.set_constraint(constraint) # Displace last image: images[-1].positions[-1] += (d, 0, 0) #images[-1].positions[-1] += (d, d, 0) # Relax height of Ag atom for initial and final states: dyn1 = QuasiNewton(images[0]) dyn1.run(fmax=0.01) dyn2 = QuasiNewton(images[-1]) dyn2.run(fmax=0.01) # Interpolate positions between initial and final states: neb.interpolate() for image in images: print(image.positions[-1], image.get_potential_energy()) #dyn = MDMin(neb, dt=0.4) #dyn = FIRE(neb, dt=0.4) dyn = BFGS(neb, trajectory='mep.traj') dyn.run(fmax=0.05) for image in images: print(image.positions[-1], image.get_potential_energy()) a = images[0] vib = Vibrations(a, [4]) vib.run() print(vib.get_frequencies()) vib.summary() print(vib.get_mode(-1)) vib.write_mode(-1, nimages=20) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/CO2_Au111.py000066400000000000000000000023221316323560300233220ustar00rootroot00000000000000from math import pi, cos, sin from ase import Atoms from ase.calculators.emt import EMT from ase.constraints import FixBondLengths from ase.optimize import BFGS from ase.build import fcc111, add_adsorbate for wrap in [False, True]: zpos = cos(134.3 / 2.0 * pi / 180.0) * 1.197 xpos = sin(134.3 / 2.0 * pi / 180.0) * 1.19 co2 = Atoms('COO', positions=[(-xpos + 1.2, 0, -zpos), (-xpos + 1.2, -1.1, -zpos), (-xpos + 1.2, 1.1, -zpos)]) slab = fcc111('Au', size=(2, 2, 4), vacuum=2 * 5, orthogonal=True) slab.center() add_adsorbate(slab, co2, 1.5, 'bridge') slab.set_pbc((True, True, False)) d0 = co2.get_distance(-3, -2) d1 = co2.get_distance(-3, -1) calc = EMT() slab.set_calculator(calc) if wrap: # Remap into the cell so bond is actually wrapped: slab.set_scaled_positions(slab.get_scaled_positions() % 1.0) constraint = FixBondLengths([[-3, -2], [-3, -1]]) slab.set_constraint(constraint) dyn = BFGS(slab, trajectory='relax_%d.traj' % wrap) dyn.run(fmax=0.05) assert abs(slab.get_distance(-3, -2, mic=1) - d0) < 1e-9 assert abs(slab.get_distance(-3, -1, mic=1) - d1) < 1e-9 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/COCu111.py000066400000000000000000000036771316323560300231210ustar00rootroot00000000000000from math import sqrt from ase import Atoms, Atom from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize import BFGS, QuasiNewton from ase.neb import NEB from ase.io import Trajectory # Distance between Cu atoms on a (111) surface: a = 3.6 d = a / sqrt(2) fcc111 = Atoms(symbols='Cu', cell=[(d, 0, 0), (d / 2, d * sqrt(3) / 2, 0), (d / 2, d * sqrt(3) / 6, -a / sqrt(3))], pbc=True) slab = fcc111 * (2, 2, 4) slab.set_cell([2 * d, d * sqrt(3), 1]) slab.set_pbc((1, 1, 0)) slab.calc = EMT() Z = slab.get_positions()[:, 2] indices = [i for i, z in enumerate(Z) if z < Z.mean()] constraint = FixAtoms(indices=indices) slab.set_constraint(constraint) dyn = QuasiNewton(slab) dyn.run(fmax=0.05) Z = slab.get_positions()[:, 2] print(Z[0] - Z[1]) print(Z[1] - Z[2]) print(Z[2] - Z[3]) b = 1.2 h = 1.5 slab += Atom('C', (d / 2, -b / 2, h)) slab += Atom('O', (d / 2, +b / 2, h)) s = slab.copy() dyn = QuasiNewton(slab) dyn.run(fmax=0.05) # Make band: images = [slab] for i in range(6): image = slab.copy() # Set constraints and calculator: image.set_constraint(constraint) image.calc = EMT() images.append(image) # Displace last image: image[-2].position = image[-1].position image[-1].x = d image[-1].y = d / sqrt(3) dyn = QuasiNewton(images[-1]) dyn.run(fmax=0.05) neb = NEB(images, climb=not True) # Interpolate positions between initial and final states: neb.interpolate(method='idpp') for image in images: print(image.positions[-1], image.get_potential_energy()) dyn = BFGS(neb, maxstep=0.04, trajectory='mep.traj') dyn.run(fmax=0.05) for image in images: print(image.positions[-1], image.get_potential_energy()) # Trying to read description of optimization from trajectory traj = Trajectory('mep.traj') assert traj.description['optimizer'] == 'BFGS' for key, value in traj.description.items(): print(key, value) print(traj.ase_version) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/COCu111_2.py000066400000000000000000000044411316323560300233300ustar00rootroot00000000000000from math import sqrt from ase import Atoms, Atom from ase.constraints import FixAtoms from ase.optimize import BFGS from ase.neb import SingleCalculatorNEB from ase.calculators.emt import EMT Optimizer = BFGS # Distance between Cu atoms on a (111) surface: a = 3.6 d = a / sqrt(2) fcc111 = Atoms(symbols='Cu', cell=[(d, 0, 0), (d / 2, d * sqrt(3) / 2, 0), (d / 2, d * sqrt(3) / 6, -a / sqrt(3))], pbc=True) initial = fcc111 * (2, 2, 4) initial.set_cell([2 * d, d * sqrt(3), 1]) initial.set_pbc((1, 1, 0)) initial.set_calculator(EMT()) Z = initial.get_positions()[:, 2] indices = [i for i, z in enumerate(Z) if z < Z.mean()] constraint = FixAtoms(indices=indices) initial.set_constraint(constraint) print('Relax initial image') dyn = Optimizer(initial) dyn.run(fmax=0.05) Z = initial.get_positions()[:, 2] print(Z[0] - Z[1]) print(Z[1] - Z[2]) print(Z[2] - Z[3]) b = 1.2 h = 1.5 initial += Atom('C', (d / 2, -b / 2, h)) initial += Atom('O', (d / 2, +b / 2, h)) s = initial.copy() dyn = Optimizer(initial) dyn.run(fmax=0.05) # view(initial) print('Relax final image') final = initial.copy() final.set_calculator(EMT()) final.set_constraint(constraint) final[-2].position = final[-1].position final[-1].x = d final[-1].y = d / sqrt(3) dyn = Optimizer(final) dyn.run(fmax=0.1) # view(final) print('Create neb with 2 intermediate steps') neb = SingleCalculatorNEB([initial, final]) neb.refine(2) assert neb.n() == 4 print('Optimize neb using a single calculator') neb.set_calculators(EMT()) # print('0001', id(neb.images[0]), id(neb.images[0].get_calculator().atoms)) dyn = Optimizer(neb, maxstep=0.04, trajectory='mep_2coarse.traj') dyn.run(fmax=0.1) # dyn.run(fmax=39.1) print('Optimize neb using a many calculators') neb = SingleCalculatorNEB([initial, final]) neb.refine(2) neb.set_calculators([EMT() for i in range(neb.n())]) dyn = Optimizer(neb, maxstep=0.04, trajectory='mep_2coarse.traj') dyn.run(fmax=0.1) # dyn.run(fmax=39.1) # read from the trajectory neb = SingleCalculatorNEB('mep_2coarse.traj@-4:') # refine in the important region neb.refine(2, 1, 3) neb.set_calculators(EMT()) print('Optimize refined neb using a single calculator') dyn = Optimizer(neb, maxstep=0.04, trajectory='mep_2fine.traj') dyn.run(fmax=0.1) assert len(neb.images) == 8 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/__init__.py000066400000000000000000000166631316323560300236430ustar00rootroot00000000000000from __future__ import print_function import os import sys import shutil import subprocess import tempfile import unittest from glob import glob from ase.calculators.calculator import names as calc_names, get_calculator from ase.parallel import paropen from ase.utils import devnull from ase.cli.info import print_info NotAvailable = unittest.SkipTest test_calculator_names = [] def require(calcname): if calcname not in test_calculator_names: raise NotAvailable('use --calculators={0} to enable'.format(calcname)) class CustomTextTestRunner(unittest.TextTestRunner): def __init__(self, logname, descriptions=1, verbosity=1): self.f = paropen(logname, 'w') unittest.TextTestRunner.__init__(self, self.f, descriptions, verbosity) def run(self, test): stderr_old = sys.stderr try: sys.stderr = self.f testresult = unittest.TextTestRunner.run(self, test) finally: sys.stderr = stderr_old return testresult class ScriptTestCase(unittest.TestCase): def __init__(self, methodname='testfile', filename=None): unittest.TestCase.__init__(self, methodname) self.filename = filename def testfile(self): try: with open(self.filename) as fd: exec(compile(fd.read(), self.filename, 'exec'), {}) except ImportError as ex: module = ex.args[0].split()[-1].replace("'", '').split('.')[0] if module in ['scipy', 'matplotlib', 'Scientific', 'lxml', 'flask', 'gpaw', 'GPAW']: raise unittest.SkipTest('no {} module'.format(module)) else: raise def id(self): return self.filename def __str__(self): return self.filename.split('test/')[-1] def __repr__(self): return "ScriptTestCase(filename='%s')" % self.filename def get_tests(files=None): if files: files = [os.path.join(__path__[0], f) for f in files] else: files = glob(__path__[0] + '/*') sdirtests = [] # tests from subdirectories: only one level assumed tests = [] for f in files: if os.path.isdir(f): # add test subdirectories (like calculators) sdirtests.extend(glob(f + '/*.py')) else: # add py files in testdir if f.endswith('.py'): tests.append(f) tests.sort() sdirtests.sort() tests.extend(sdirtests) # run test subdirectories at the end tests = [test for test in tests if not test.endswith('__.py')] return tests def test(verbosity=1, calculators=[], testdir=None, stream=sys.stdout, files=None): test_calculator_names.extend(calculators) disable_calculators([name for name in calc_names if name not in calculators]) tests = get_tests(files) ts = unittest.TestSuite() for test in tests: ts.addTest(ScriptTestCase(filename=os.path.abspath(test))) if verbosity > 0: print_info() sys.stdout = devnull if verbosity == 0: stream = devnull ttr = unittest.TextTestRunner(verbosity=verbosity, stream=stream) origcwd = os.getcwd() if testdir is None: testdir = tempfile.mkdtemp(prefix='ase-test-') else: if os.path.isdir(testdir): shutil.rmtree(testdir) # clean before running tests! os.mkdir(testdir) os.chdir(testdir) if verbosity: print('test-dir ', testdir, '\n', file=sys.__stdout__) try: results = ttr.run(ts) finally: os.chdir(origcwd) sys.stdout = sys.__stdout__ return results def disable_calculators(names): for name in names: if name in ['emt', 'lj', 'eam', 'morse', 'tip3p']: continue try: cls = get_calculator(name) except ImportError: pass else: def get_mock_init(name): def mock_init(obj, *args, **kwargs): raise NotAvailable('use --calculators={0} to enable' .format(name)) return mock_init def mock_del(obj): pass cls.__init__ = get_mock_init(name) cls.__del__ = mock_del def cli(command, calculator_name=None): if (calculator_name is not None and calculator_name not in test_calculator_names): return proc = subprocess.Popen(' '.join(command.split('\n')), shell=True, stdout=subprocess.PIPE) print(proc.stdout.read().decode()) proc.wait() if proc.returncode != 0: raise RuntimeError('Failed running a shell command. ' 'Please set you $PATH environment variable!') class must_raise: """Context manager for checking raising of exceptions.""" def __init__(self, exception): self.exception = exception def __enter__(self): pass def __exit__(self, exc_type, exc_value, tb): if exc_type is None: raise RuntimeError('Failed to fail: ' + str(self.exception)) return issubclass(exc_type, self.exception) class CLICommand: short_description = 'Test ASE' @staticmethod def add_arguments(parser): parser.add_argument( '-c', '--calculators', help='Comma-separated list of calculators to test.') parser.add_argument('-v', '--verbose', help='verbose mode', action='store_true') parser.add_argument('-q', '--quiet', action='store_true', help='quiet mode') parser.add_argument('--list', action='store_true', help='print all tests and exit') parser.add_argument('--list-calculators', action='store_true', help='print all calculator names and exit') parser.add_argument('tests', nargs='*') @staticmethod def run(args): if args.calculators: calculators = args.calculators.split(',') else: calculators = [] if args.list: for testfile in get_tests(): print(testfile) sys.exit(0) if args.list_calculators: for name in calc_names: print(name) sys.exit(0) for calculator in calculators: if calculator not in calc_names: sys.stderr.write('No calculator named "{}".\n' 'Possible CALCULATORS are: ' '{}.\n'.format(calculator, ', '.join(calc_names))) sys.exit(1) results = test(verbosity=1 + args.verbose - args.quiet, calculators=calculators, files=args.tests) sys.exit(len(results.errors + results.failures)) if __name__ == '__main__': # Run pyflakes3 on all code in ASE: try: output = subprocess.check_output(['pyflakes3', 'ase', 'doc'], stderr=subprocess.STDOUT) except subprocess.CalledProcessError as ex: output = ex.output.decode() lines = [] for line in output.splitlines(): # Ignore these: for txt in ['jacapo', 'list comprehension redefines']: if txt in line: break else: lines.append(line) if lines: print('\n'.join(lines)) sys.exit(1) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/__main__.py000066400000000000000000000001051316323560300236040ustar00rootroot00000000000000print('Use "ase test [options]" or "python3 -m ase test [options]"') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/abinit/000077500000000000000000000000001316323560300227645ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/abinit/__init__.py000066400000000000000000000000001316323560300250630ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/abinit/abinit_Si.py000066400000000000000000000013501316323560300252360ustar00rootroot00000000000000from ase import Atoms from ase.units import Ry from ase.calculators.abinit import Abinit a0 = 5.43 bulk = Atoms('Si2', [(0, 0, 0), (0.25, 0.25, 0.25)], pbc=True) b = a0 / 2 bulk.set_cell([(0, b, b), (b, 0, b), (b, b, 0)], scale_atoms=True) calc = Abinit(label='Si', nbands=8, # one can specify any abinit keywords ecut=10 * Ry, # warning - used to speedup the test kpts=[4, 4, 4], # warning - used to speedup the test chksymbreak=0, ) # one can specify abinit keywords also using set calc.set(toldfe=1.0e-2) # warning - used to speedup the test bulk.set_calculator(calc) e = bulk.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/abinit/abinit_cmdline.py000066400000000000000000000002271316323560300263000ustar00rootroot00000000000000from ase.test import cli cli(""" ase build -x fcc -a 4.04 Al | ase run abinit -p xc=PBE,kpts=3.0,ecut=340,toldfe=1e-5,chksymbreak=0""", 'abinit') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ag.py000066400000000000000000000004771316323560300224670ustar00rootroot00000000000000import sys from ase import Atoms from ase.io import write from ase.test import cli write('x.json', Atoms('X')) # Make sure ASE's gui can run in terminal mode without $DISPLAY and tkinter: cli('ase gui --terminal x.json@id=1') assert 'tkinter' not in sys.modules assert 'Tkinter' not in sys.modules # legacy Python ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/aims/000077500000000000000000000000001316323560300224475ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/aims/H2O_aims.py000066400000000000000000000013311316323560300244200ustar00rootroot00000000000000from ase import Atoms from ase.calculators.aims import Aims, AimsCube from ase.optimize import QuasiNewton water = Atoms('HOH', [(1, 0, 0), (0, 0, 0), (0, 1, 0)]) water_cube = AimsCube(points=(29, 29, 29), plots=('total_density', 'delta_density', 'eigenstate 5', 'eigenstate 6')) calc = Aims(xc='PBE', output=['dipole'], sc_accuracy_etot=1e-6, sc_accuracy_eev=1e-3, sc_accuracy_rho=1e-6, sc_accuracy_forces=1e-4, cubes=water_cube) water.set_calculator(calc) dynamics = QuasiNewton(water, trajectory='square_water.traj') dynamics.run(fmax=0.01) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/aims/__init__.py000066400000000000000000000000001316323560300245460ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/aims/aims_cmdline.py000066400000000000000000000004461316323560300254510ustar00rootroot00000000000000from ase.test import cli, require require('aims') # warning! parameters are not converged - only an illustration! cli("""ase build -x bcc -a 3.6 Li | \ ase run aims -s 0.3 -p \ kpts=1.5,xc=LDA,sc_accuracy_rho=5.e-2,relativistic=none,compute_analytical_stress=True,sc_accuracy_forces=5.e-1""") ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/amber/000077500000000000000000000000001316323560300226045ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/amber/__init__.py000066400000000000000000000000001316323560300247030ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/amber/amber.py000077500000000000000000000024221316323560300242470ustar00rootroot00000000000000"""Test that amber calculator works. This is conditional on the existence of the $AMBERHOME/bin/sander executable. """ import subprocess from ase import Atoms from ase.calculators.amber import Amber from ase.test import require require('amber') with open('mm.in', 'w') as outfile: outfile.write("""\ zero step md to get energy and force &cntrl imin=0, nstlim=0, ntx=1 !0 step md cut=100, ntb=0, !non-periodic ntpr=1,ntwf=1,ntwe=1,ntwx=1 ! (output frequencies) &end END """) with open('tleap.in', 'w') as outfile: outfile.write("""\ source leaprc.protein.ff14SB source leaprc.gaff source leaprc.water.tip3p mol = loadpdb 2h2o.pdb saveamberparm mol 2h2o.top h2o.inpcrd quit """) subprocess.call('tleap -f tleap.in'.split()) atoms = Atoms('OH2OH2', [[-0.956, -0.121, 0], [-1.308, 0.770, 0], [0.000, 0.000, 0], [3.903, 0.000, 0], [4.215, -0.497, -0.759], [4.215, -0.497, 0.759]]) calc = Amber(amber_exe='sander -O ', infile='mm.in', outfile='mm.out', topologyfile='2h2o.top', incoordfile='mm.crd') calc.write_coordinates(atoms, 'mm.crd') atoms.set_calculator(calc) e = atoms.get_potential_energy() assert abs(e + 0.046799672) < 5e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atom.py000066400000000000000000000010621316323560300230270ustar00rootroot00000000000000from ase import Atom, Atoms m = Atoms('H2') a = m[0] b = Atom('H') for c in [a, b]: assert c.x == 0 c.z = 24.0 assert c.position[2] == 24.0 assert c.symbol == 'H' c.number = 92 assert c.symbol == 'U' c.symbol = 'Fe' assert c.number == 26 c.tag = 42 assert c.tag == 42 c.momentum = (1,2,3) assert m[0].tag == 42 momenta = m.get_momenta() m = Atoms('LiH') for a in m: print(a.symbol) for a in m: if a.symbol == 'H': a.z = 0.75 assert m.get_distance(0, 1) == 0.75 a = m.pop() m += a del m[:1] print(m) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atoms.py000066400000000000000000000000761316323560300232160ustar00rootroot00000000000000from ase import Atoms print(Atoms()) print(Atoms('H2O')) #... ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atoms_angle.py000066400000000000000000000020261316323560300243610ustar00rootroot00000000000000from ase import Atoms import numpy as np atoms = Atoms(['O', 'H', 'H'], positions=[[0., 0., 0.119262], [0., 0.763239, -0.477047], [0., -0.763239, -0.477047]]) # Angle no pbc assert abs(atoms.get_angle(1, 0, 2) - 104) < 1e-3 atoms.set_cell([2, 2, 2]) # Across different pbcs atoms.set_pbc([True, False, True]) atoms.wrap() assert abs(atoms.get_angle(1, 0, 2, mic=True) - 104) < 1e-3 # Across all True pbc atoms.set_pbc(True) atoms.wrap() assert abs(atoms.get_angle(1, 0, 2, mic=True) - 104) < 1e-3 # Simple tetrahedron tetra_pos = np.array([[0, 0, 0], [1, 0, 0], [.5, np.sqrt(3) * .5, 0], [.5, np.sqrt(1/3.) * .5, np.sqrt(2/3.)]]) atoms = Atoms(['H', 'H', 'H', 'H'], positions=tetra_pos - np.array([.2, 0, 0])) angle = 70.5287793655 assert abs(atoms.get_dihedral(0, 1, 2, 3) - angle) < 1e-3 atoms.set_cell([3, 3, 3]) atoms.set_pbc(True) atoms.wrap() assert abs(atoms.get_dihedral(0, 1, 2, 3, mic=True) - angle) < 1e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atoms_distance.py000066400000000000000000000022501316323560300250640ustar00rootroot00000000000000from ase import Atoms # Setup a chain of H,O,C # H-O Dist = 2 # O-C Dist = 3 # C-H Dist = 5 with mic=False # C-H Dist = 4 with mic=True a = Atoms('HOC', positions=[(1, 1, 1), (3, 1, 1), (6, 1, 1)]) a.set_cell((9, 2, 2)) a.set_pbc((True, False, False)) # Calculate indiviually with mic=True assert a.get_distance(0, 1, mic=True) == 2 assert a.get_distance(1, 2, mic=True) == 3 assert a.get_distance(0, 2, mic=True) == 4 # Calculate indiviually with mic=False assert a.get_distance(0, 1, mic=False) == 2 assert a.get_distance(1, 2, mic=False) == 3 assert a.get_distance(0, 2, mic=False) == 5 # Calculate in groups with mic=True assert (a.get_distances(0, [1, 2], mic=True) == [2, 4]).all() # Calculate in groups with mic=False assert (a.get_distances(0, [1, 2], mic=False) == [2, 5]).all() # Calculate all with mic=True assert (a.get_all_distances(mic=True) == [[0, 2, 4], [2, 0, 3], [4, 3, 0]]).all() # Calculate all with mic=False assert (a.get_all_distances(mic=False) == [[0, 2, 5], [2, 0, 3], [5, 3, 0]]).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atoms_get_duplicates.py000066400000000000000000000014321316323560300262670ustar00rootroot00000000000000from ase import Atoms from ase.geometry import get_duplicate_atoms at = Atoms('H5', positions=[[0., 0., 0.], [1., 0., 0.], [1.01, 0, 0], [3, 2.2, 5.2], [0.1, -0.01, 0.1]]) dups = get_duplicate_atoms(at) assert all((dups == [[1, 2]]).tolist()) is True dups = get_duplicate_atoms(at, cutoff=0.2) assert all((dups == [[0, 4], [1, 2]]).tolist()) is True get_duplicate_atoms(at, delete=True) assert len(at) == 4 at = Atoms('H3', positions=[[0., 0., 0.], [1., 0., 0.], [3, 2.2, 5.2]]) # test if it works if no duplicates are detected. get_duplicate_atoms(at, delete=True) dups = get_duplicate_atoms(at) assert dups.size == 0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/atoms_info_copy.py000066400000000000000000000003131316323560300252550ustar00rootroot00000000000000from ase import Atoms at1 = Atoms('H2', positions=[[0., 0., 0.], [1., 0., 0.]]) at1.info['str'] = "str" at1.info['int'] = 42 at2 = Atoms(at1) assert at2.info == at1.info ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/autoneb.py000066400000000000000000000024101316323560300235220ustar00rootroot00000000000000from ase.build import fcc211, add_adsorbate from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton from ase.neb import NEBTools from ase.autoneb import AutoNEB # Pt atom adsorbed in a hollow site: slab = fcc211('Pt', size=(3, 2, 2), vacuum=4.0) add_adsorbate(slab, 'Pt', 0.5, (-0.1, 2.7)) # Fix second and third layers: slab.set_constraint(FixAtoms(range(6, 12))) # Use EMT potential: slab.set_calculator(EMT()) # Initial state: qn = QuasiNewton(slab, trajectory='neb000.traj') qn.run(fmax=0.05) # Final state: slab[-1].x += slab.get_cell()[0, 0] slab[-1].y += 2.8 qn = QuasiNewton(slab, trajectory='neb001.traj') qn.run(fmax=0.05) # Stops PermissionError on Win32 for access to # the traj file that remains open. del qn def attach_calculators(images): for i in range(len(images)): images[i].set_calculator(EMT()) autoneb = AutoNEB(attach_calculators, prefix='neb', optimizer='BFGS', n_simul=3, n_max=7, fmax=0.05, k=0.5, parallel=False, maxsteps=[50, 1000]) autoneb.run() nebtools = NEBTools(autoneb.all_images) assert abs(nebtools.get_barrier()[0] - 0.938) < 1e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/bader.py000066400000000000000000000015101316323560300231420ustar00rootroot00000000000000from __future__ import print_function import os from ase.build import molecule from ase.io.bader import attach_charges fname = 'ACF.dat' f = open(fname, 'w') print(""" # X Y Z CHARGE MIN DIST ---------------------------------------------------------------- 1 7.0865 8.5038 9.0672 9.0852 1.3250 2 7.0865 9.9461 7.9403 0.4574 0.3159 3 7.0865 7.0615 7.9403 0.4574 0.3159 ---------------------------------------------------------------- NUMBER OF ELECTRONS: 9.99999 """, file=f) f.close() atoms = molecule('H2O') atoms.set_cell([7.5, 9, 9]) atoms.center() attach_charges(atoms) attach_charges(atoms, fname) os.remove(fname) for atom in atoms: print('Atom', atom.symbol, 'Bader charge', atom.charge) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/bandgap.py000066400000000000000000000032321316323560300234640ustar00rootroot00000000000000import numpy as np from ase.dft.bandgap import bandgap class Calculator: def __init__(self, e_skn): self.e_skn = np.array(e_skn, dtype=float) self.ns, self.nk, self.nb = self.e_skn.shape def get_ibz_k_points(self): k = np.zeros((self.nk, 3)) k[:, 0] += np.arange(self.nk) return k def get_fermi_level(self): return 0.0 def get_eigenvalues(self, kpt, spin): return self.e_skn[spin, kpt] def get_number_of_spins(self): return self.ns def test(e_skn): c = Calculator(e_skn) if c.ns == 1: result = [bandgap(c), bandgap(c, direct=True)] return [(gap, k1, k2) for gap, (s1, k1, n1), (s2, k2, n2) in result] result = [bandgap(c), bandgap(c, direct=True), bandgap(c, spin=0), bandgap(c, direct=True, spin=0), bandgap(c, spin=1), bandgap(c, direct=True, spin=1)] return [(gap, (s1, k1), (s2, k2)) for gap, (s1, k1, n1), (s2, k2, n2) in result] r = test([[[-1, 1]]]) assert r == [(2, 0, 0), (2, 0, 0)] r = test([[[-1, 2], [-3, 1]]]) assert r == [(2, 0, 1), (3, 0, 0)] r = test([[[-1, 2, 3], [-1, -1, 1]]]) assert r == [(0, None, None), (0, None, None)] r = test([[[-1, 2, 3], [-1, -1, 1]], [[-1, 2, 2], [-3, 1, 1]]]) assert r == [(0, (None, None), (None, None)), (0, (None, None), (None, None)), (0, (0, None), (0, None)), (0, (0, None), (0, None)), (2, (1, 0), (1, 1)), (3, (1, 0), (1, 0))] r = test([[[-1, 5], [-2, 2]], [[-2, 4], [-4, 1]]]) assert r == [(2, (0, 0), (1, 1)), (4, (0, 1), (0, 1)), (3, (0, 0), (0, 1)), (4, (0, 1), (0, 1)), (3, (1, 0), (1, 1)), (5, (1, 1), (1, 1))] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/bandstructure.py000066400000000000000000000012301316323560300247510ustar00rootroot00000000000000import matplotlib from ase.build import bulk from ase.calculators.test import FreeElectrons from ase.dft.kpoints import special_paths from ase.dft.band_structure import BandStructure a = bulk('Cu') path = special_paths['fcc'] a.calc = FreeElectrons(nvalence=1, kpts={'path': path, 'npoints': 200}) a.get_potential_energy() bs = a.calc.band_structure() coords, labelcoords, labels = bs.get_labels() print(labels) bs.write('hmm.json') bs = BandStructure.read('hmm.json') coords, labelcoords, labels = bs.get_labels() print(labels) assert ''.join(labels) == 'GXWKGLUWLKUX' matplotlib.use('Agg', warn=False) bs.plot(emax=10, filename='bs.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/basin.py000066400000000000000000000032621316323560300231670ustar00rootroot00000000000000import numpy as np from ase import Atoms, io from ase.calculators.lj import LennardJones from ase.optimize.basin import BasinHopping from ase.io import read from ase.units import kB # Global minima from # Wales and Doye, J. Phys. Chem. A, vol 101 (1997) 5111-5116 E_global = { 4: -6.000000, 5: -9.103852, 6: -12.712062, 7: -16.505384} N = 7 R = N**(1. / 3.) np.random.seed(42) pos = np.random.uniform(-R, R, (N, 3)) s = Atoms('He' + str(N), positions=pos) s.set_calculator(LennardJones()) original_positions = 1. * s.get_positions() ftraj = 'lowest.traj' for GlobalOptimizer in [BasinHopping(s, temperature=100 * kB, dr=0.5, trajectory=ftraj, optimizer_logfile=None)]: if isinstance(GlobalOptimizer, BasinHopping): GlobalOptimizer.run(10) Emin, smin = GlobalOptimizer.get_minimum() else: GlobalOptimizer(totalsteps=10) Emin = s.get_potential_energy() smin = s print("N=", N, 'minimal energy found', Emin, ' global minimum:', E_global[N]) # recalc energy smin.set_calculator(LennardJones()) E = smin.get_potential_energy() assert abs(E - Emin) < 1e-15 smim = read(ftraj) E = smin.get_potential_energy() assert abs(E - Emin) < 1e-15 # check that only minima were written last_energy = None for im in io.read(ftraj + '@:'): energy = im.get_potential_energy() if last_energy is not None: assert energy < last_energy last_energy = energy # reset positions s.set_positions(original_positions) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/build.py000066400000000000000000000010131316323560300231620ustar00rootroot00000000000000import numpy as np from ase import Atoms, Atom a = Atoms([Atom('Cu')]) a.positions[:] += 1.0 print(a.get_positions(), a.positions) a = a + a a += a a.append(Atom('C')) a += Atoms([]) a += Atom('H', magmom=1) print(a.get_initial_magnetic_moments()) print(a[0].number) print(a[[0, 1]].get_atomic_numbers()) print(a[np.array([1, 1, 0, 0, 1, 0], bool)].get_atomic_numbers()) print(a[::2].get_atomic_numbers()) print(a.get_chemical_symbols()) del a[2] print(a.get_chemical_symbols()) del a[-2:] print(a.get_chemical_symbols()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/bulk.py000066400000000000000000000003441316323560300230260ustar00rootroot00000000000000from ase.build import bulk a1 = bulk('ZnS', 'wurtzite', a=3.0, u=0.23) * (1, 2, 1) a2 = bulk('ZnS', 'wurtzite', a=3.0, u=0.23, orthorhombic=True) a1.cell = a2.cell a1.wrap() assert abs(a1.positions - a2.positions).max() < 1e-14 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/c60.py000066400000000000000000000053401316323560300224620ustar00rootroot00000000000000import numpy as np from ase.build import molecule from ase.utils.ff import Morse, Angle, Dihedral, VdW from ase.calculators.ff import ForceField from ase.optimize.precon.neighbors import get_neighbours from ase.optimize.precon.lbfgs import PreconLBFGS from ase.optimize.precon import FF a = molecule('C60') a.set_cell(50.0 * np.identity(3)) # force field parameters for fulleren, Z. Berkai at al. # Energy Procedia, 74, 2015, 59-64 cutoff = 1.5 morse_D = 6.1322 morse_alpha = 1.8502 morse_r0 = 1.4322 angle_k = 10.0 angle_a0 = np.deg2rad(120.0) dihedral_k = 0.346 vdw_epsilonij = 0.0115 vdw_rminij = 3.4681 neighbor_list = [[] for _ in range(len(a))] vdw_list = np.ones((len(a), len(a)), dtype=bool) morses = [] angles = [] dihedrals = [] vdws = [] # create neighbor list i_list, j_list, d_list, fixed_atoms = get_neighbours(atoms=a, r_cut=cutoff) for i, j in zip(i_list, j_list): neighbor_list[i].append(j) for i in range(len(neighbor_list)): neighbor_list[i].sort() # create lists of morse, bending and torsion interactions for i in range(len(a)): for jj in range(len(neighbor_list[i])): j = neighbor_list[i][jj] if j > i: morses.append(Morse(atomi=i, atomj=j, D=morse_D, alpha=morse_alpha, r0=morse_r0)) vdw_list[i, j] = vdw_list[j, i] = False for kk in range(jj + 1, len(neighbor_list[i])): k = neighbor_list[i][kk] angles.append(Angle(atomi=j, atomj=i, atomk=k, k=angle_k, a0=angle_a0, cos=True)) vdw_list[j, k] = vdw_list[k, j] = False for ll in range(kk + 1, len(neighbor_list[i])): l = neighbor_list[i][ll] dihedrals.append(Dihedral(atomi=j, atomj=i, atomk=k, atoml=l, k=dihedral_k)) # create list of van der Waals interactions for i in range(len(a)): for j in range(i + 1, len(a)): if vdw_list[i, j]: vdws.append(VdW(atomi=i, atomj=j, epsilonij=vdw_epsilonij, rminij=vdw_rminij)) # set up ForceField calculator calc = ForceField(morses=morses, angles=angles, dihedrals=dihedrals, vdws=vdws) a1 = a.copy() a1.set_calculator(calc) a1.rattle(0.05) # geometry optimisation without preconditioner opt = PreconLBFGS(a1, use_armijo=True, precon='ID') opt.run(fmax=0.1) e1 = a1.get_potential_energy() a2 = a.copy() a2.set_calculator(calc) a2.rattle(0.05) # geometry optimisation with FF based preconditioner precon = FF(morses=morses, angles=angles, dihedrals=dihedrals, use_pyamg=False) opt = PreconLBFGS(a2, use_armijo=True, precon=precon) opt.run(fmax=0.1) e2 = a2.get_potential_energy() print(e1, e2) assert abs(e1 - 17.238525) < 0.01 assert abs(e2 - 17.238525) < 0.01 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/000077500000000000000000000000001316323560300236475ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/__init__.py000066400000000000000000000000001316323560300257460ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/al.py000066400000000000000000000024001316323560300246110ustar00rootroot00000000000000from ase.test import NotAvailable from ase.build import bulk from ase.calculators.calculator import get_calculator required = {'abinit': dict(ecut=200, toldfe=0.0001, chksymbreak=0), 'aims': dict(sc_accuracy_rho=5.e-3), 'elk': dict(tasks=0, rgkmax=5.0), 'gpaw': dict(mode='pw'), 'cp2k': dict(auto_write=True, uks=True, max_scf=1, cutoff=400)} def run(name): Calculator = get_calculator(name) par = required.get(name, {}) calc = Calculator(label=name, xc='LDA', kpts=1.0, **par) al = bulk('AlO', crystalstructure='rocksalt', a=4.5) al.calc = calc e = al.get_potential_energy() calc.set(xc='PBE', kpts=(2, 2, 2)) epbe = al.get_potential_energy() print(e, epbe) calc = Calculator(name) print(calc.parameters, calc.results, calc.atoms) assert not calc.calculation_required(al, ['energy']) al = calc.get_atoms() print(al.get_potential_energy()) label = 'dir/' + name + '-2' calc = Calculator(label=label, atoms=al, xc='LDA', kpts=1.0, **par) print(al.get_potential_energy()) print(Calculator.read_atoms(label).get_potential_energy()) names = ['abinit', 'aims', 'elk', 'cp2k'] for name in names: try: run(name) except NotAvailable: pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/bandgap.py000066400000000000000000000040711316323560300256170ustar00rootroot00000000000000from ase.test import NotAvailable from ase.build import bulk from ase.dft.bandgap import bandgap from ase.calculators.calculator import get_calculator kpts = (4, 4, 4) required = {'abinit': dict(ecut=200, toldfe=0.0001, chksymbreak=0), 'aims': dict(sc_accuracy_rho=5.e-4, output=['k_point_list', 'k_eigenvalue,' + str(kpts[0] * kpts[1] * kpts[2])]), 'elk': dict(tasks=0, rgkmax=5.0), 'gpaw': dict(mode='pw')} def run(name): Calculator = get_calculator(name) par = required.get(name, {}) calc = Calculator(label=name + '_bandgap', xc='PBE', # abinit, aims, elk - do not recognize the syntax below: # https://trac.fysik.dtu.dk/projects/ase/ticket/98 # kpts={'size': kpts, 'gamma': True}, **par) kpts=kpts, **par) si = bulk('Si', crystalstructure='diamond', a=5.43) si.calc = calc si.get_potential_energy() print(name, bandgap(si.calc)) del si.calc # test spin-polarization calc = Calculator(label=name + '_bandgap_spinpol', xc='PBE', # abinit, aims, elk - do not recognize the syntax below: # https://trac.fysik.dtu.dk/projects/ase/ticket/98 # kpts={'size': kpts, 'gamma': True}, **par) kpts=kpts, **par) si.set_initial_magnetic_moments([-0.1, 0.1]) # this should not be necessary in the new ase interface standard ... if si.get_initial_magnetic_moments().any(): # spin-polarization if name == 'aims': calc.set(spin='collinear') if name == 'elk': calc.set(spinpol=True) si.set_calculator(calc) si.get_potential_energy() print(name, bandgap(si.calc)) # gpaw does not conform to the new ase interface standard: # https://trac.fysik.dtu.dk/projects/gpaw/ticket/268 names = ['abinit', 'aims', 'elk'] # , 'gpaw'] for name in names: try: run(name) except NotAvailable: pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/h2.py000066400000000000000000000030631316323560300245340ustar00rootroot00000000000000from ase.test import NotAvailable from ase.build import molecule from ase.calculators.calculator import get_calculator required = {'abinit': dict(ecut=200, toldfe=0.0001), 'aims': dict(sc_accuracy_rho=5.e-3), 'gpaw': dict(mode='lcao', basis='sz(dzp)', realspace=False), 'cp2k': dict(auto_write=True, uks=True)} def h2dft(name): Calculator = get_calculator(name) par = required.get(name, {}) calc = Calculator(label=name, xc='LDA', **par) h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) e2 = h2.get_potential_energy() calc.set(xc='PBE') e2pbe = h2.get_potential_energy() h1 = h2.copy() del h1[1] h1.set_initial_magnetic_moments([1]) h1.calc = calc e1pbe = h1.get_potential_energy() calc.set(xc='LDA') e1 = h1.get_potential_energy() try: m1 = h1.get_magnetic_moment() except NotImplementedError: pass else: print(m1) print(2 * e1 - e2) print(2 * e1pbe - e2pbe) print(e1, e2, e1pbe, e2pbe) calc = Calculator(name) print(calc.parameters, calc.results, calc.atoms) assert not calc.calculation_required(h1, ['energy']) h1 = calc.get_atoms() print(h1.get_potential_energy()) label = 'dir/' + name + '-h1' calc = Calculator(label=label, atoms=h1, xc='LDA', **par) print(h1.get_potential_energy()) print(Calculator.read_atoms(label).get_potential_energy()) names = ['abinit', 'aims', 'gaussian', 'nwchem', 'cp2k'] for name in names: try: h2dft(name) except NotAvailable: pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/kd2mp.py000066400000000000000000000004001316323560300252300ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.calculators.calculator import kptdensity2monkhorstpack as kd2mp kd = 25 / (2 * np.pi) a = 6.0 N = kd2mp(Atoms(cell=(a, a, a), pbc=True), kd)[0] assert N * a / (2 * np.pi) >= kd, 'Too small k-point density' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/calculator/traj.py000066400000000000000000000025451316323560300251670ustar00rootroot00000000000000import os from ase.calculators.calculator import get_calculator from ase.io import read, write from ase.build import molecule from ase.test import test_calculator_names def h2(name, par): h2 = molecule('H2', pbc=par.pop('pbc', False)) h2.center(vacuum=2.0) h2.calc = get_calculator(name)(**par) e = h2.get_potential_energy() f = h2.get_forces() assert not h2.calc.calculation_required(h2, ['energy', 'forces']) write('h2.traj', h2) h2 = read('h2.traj') assert abs(e - h2.get_potential_energy()) < 1e-12 assert abs(f - h2.get_forces()).max() < 1e-12 parameters = { 'abinit': dict(ecut=200, toldfe=0.0001), 'aims': dict(sc_accuracy_rho=5.e-3, sc_accuracy_forces=1e-4, xc='LDA'), 'gpaw': dict(mode={'name': 'lcao', 'interpolation': 'fft'}, basis='sz(dzp)'), 'elk': dict(tasks=0, rgkmax=5.0, epsengy=1.0, epspot=1.0, tforce=True, pbc=True), 'jacapo': dict(pbc=True), 'vasp': dict(xc='LDA'), 'espresso': dict(pbc=True, tprnfor=True, pseudopotentials={'H': 'H.pbe-rrkjus_psl.0.1.UPF'})} for name in test_calculator_names + ['emt']: if name in ['cp2k', 'gromacs', 'lammpslib', 'mopac', 'turbomole', 'amber']: continue par = parameters.get(name, {}) os.mkdir(name + '-test') os.chdir(name + '-test') h2(name, par) os.chdir('..') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/castep/000077500000000000000000000000001316323560300227755ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/castep/__init__.py000066400000000000000000000000001316323560300250740ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/castep/castep_interface.py000066400000000000000000000027221316323560300266510ustar00rootroot00000000000000"""Simple shallow test of the CASTEP interface""" import os import shutil import tempfile import ase.lattice.cubic from ase.calculators.castep import (Castep, CastepParam, create_castep_keywords, import_castep_keywords) tmp_dir = tempfile.mkdtemp() cwd = os.getcwd() c = Castep(directory=tmp_dir, label='test_label') c.xc_functional = 'PBE' lattice = ase.lattice.cubic.BodyCenteredCubic('Li') print('For the sake of evaluating this test, warnings') print('about auto-generating pseudo-potentials are') print('normal behavior and can be safely ignored') lattice.set_calculator(c) create_castep_keywords( castep_command=os.environ['CASTEP_COMMAND'], path=tmp_dir, fetch_only=20) param_fn = os.path.join(tmp_dir, 'myParam.param') param = open(param_fn, 'w') param.write('XC_FUNCTIONAL : PBE #comment\n') param.write('XC_FUNCTIONAL : PBE #comment\n') param.write('#comment\n') param.write('CUT_OFF_ENERGY : 450.\n') param.close() c.merge_param(param_fn) # check if the CastepOpt, CastepCell comparison mechanism works castep_keywords = import_castep_keywords() p1 = CastepParam(castep_keywords) p2 = CastepParam(castep_keywords) assert p1._options == p2._options p1._options['xc_functional'].value = 'PBE' p1.xc_functional = 'PBE' assert p1._options != p2._options assert c.calculation_required(lattice) assert c.dryrun_ok() c.prepare_input_files(lattice) os.chdir(cwd) shutil.rmtree(tmp_dir) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cell_conv.py000066400000000000000000000044631316323560300240430ustar00rootroot00000000000000from __future__ import division import numpy as np from ase.geometry import cell_to_cellpar as c2p, cellpar_to_cell as p2c # Make sure we get exactly zeros off-diagonal: assert (p2c([1, 1, 1, 90, 90, 90]) == np.eye(3)).all() eps = 2 * np.spacing(90., dtype=np.float64) def nearly_equal(a, b): return np.all(np.abs(b - a) < eps) def assert_equal(a, b): if not nearly_equal(a, b): msg = 'this:\n' msg += repr(a) msg += '\nand that:\n' msg += repr(b) msg += '\nwere supposed to be equal but are not.' raise AssertionError(msg) # Constants a = 5.43 d = a / 2.0 h = a / np.sqrt(2.0) # Systems # Primitive cell, non-orthorhombic, non-cubic # Parameters si_prim_p = np.array([h] * 3 + [60.] * 3) # Tensor format si_prim_m = np.array([[0., d, d], [d, 0., d], [d, d, 0.]]) # Tensor format in the default basis si_prim_m2 = np.array([[2.0, 0., 0.], [1.0, np.sqrt(3.0), 0.], [1.0, np.sqrt(3.0) / 3.0, 2 * np.sqrt(2 / 3)]]) si_prim_m2 *= h / 2.0 # Orthorhombic cell, non-cubic # Parameters si_ortho_p = np.array([h] * 2 + [a] + [90.] * 3) # Tensor format in the default basis si_ortho_m = np.array([[h, 0.0, 0.0], [0.0, h, 0.0], [0.0, 0.0, a]]) # Cubic cell # Parameters si_cubic_p = np.array([a] * 3 + [90.] * 3) # Tensor format in the default basis si_cubic_m = np.array([[a, 0.0, 0.0], [0.0, a, 0.0], [0.0, 0.0, a]]) # Cell matrix -> cell parameters assert_equal(c2p(si_prim_m), si_prim_p) assert_equal(c2p(si_prim_m2), si_prim_p) assert_equal(c2p(si_ortho_m), si_ortho_p) assert_equal(c2p(si_cubic_m), si_cubic_p) assert not nearly_equal(c2p(si_prim_m), si_ortho_p) # Cell parameters -> cell matrix assert_equal(p2c(si_prim_p), si_prim_m2) assert_equal(p2c(si_ortho_p), si_ortho_m) assert_equal(p2c(si_cubic_p), si_cubic_m) assert not nearly_equal(p2c(si_prim_p), si_ortho_m) # Idempotency (provided everything is provided in the default basis) ref1 = si_prim_m2[:] ref2 = si_ortho_m[:] ref3 = si_cubic_m[:] for i in range(20): ref1[:] = p2c(c2p(ref1)) ref2[:] = p2c(c2p(ref2)) ref3[:] = p2c(c2p(ref3)) assert_equal(ref1, si_prim_m2) assert_equal(ref2, si_ortho_m) assert_equal(ref3, si_cubic_m) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/center.py000066400000000000000000000046471316323560300233630ustar00rootroot00000000000000"Test that atoms.center() works when adding vacuum ()" import numpy as np from math import pi, sqrt, cos from ase import data from ase.lattice.cubic import FaceCenteredCubic def checkang(a, b, phi): "Check the angle between two vectors." cosphi = np.dot(a,b) / sqrt(np.dot(a,a) * np.dot(b,b)) assert np.abs(cosphi - cos(phi)) < 1e-10 symb = "Cu" Z = data.atomic_numbers[symb] a0 = data.reference_states[Z]['a'] # (100) oriented block atoms = FaceCenteredCubic(size=(5,5,5), symbol="Cu", pbc=(1,1,0)) assert len(atoms) == 5*5*5*4 c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/2) checkang(c[1], c[2], pi/2) assert np.abs(5 * a0 - c[2,2]) < 1e-10 # Add vacuum in one direction vac = 10.0 atoms.center(axis=2, vacuum=vac) c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/2) checkang(c[1], c[2], pi/2) assert np.abs(4.5 * a0 + 2* vac - c[2,2]) < 1e-10 # Add vacuum in all directions vac = 4.0 atoms.center(vacuum=vac) c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/2) checkang(c[1], c[2], pi/2) assert np.abs(4.5 * a0 + 2* vac - c[0,0]) < 1e-10 assert np.abs(4.5 * a0 + 2* vac - c[1,1]) < 1e-10 assert np.abs(4.5 * a0 + 2* vac - c[2,2]) < 1e-10 # Now a general unit cell atoms = FaceCenteredCubic(size=(5,5,5), directions=[[1,0,0], [0,1,0], [1,0,1]], symbol="Cu", pbc=(1,1,0)) assert len(atoms) == 5*5*5*2 c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/4) checkang(c[1], c[2], pi/2) assert np.abs(2.5 * a0 - c[2,2]) < 1e-10 # Add vacuum in one direction vac = 10.0 atoms.center(axis=2, vacuum=vac) c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/4) checkang(c[1], c[2], pi/2) assert np.abs(2 * a0 + 2* vac - c[2,2]) < 1e-10 # Recenter without specifying vacuum atoms.center() c = atoms.get_cell() checkang(c[0], c[1], pi/2) checkang(c[0], c[2], pi/4) checkang(c[1], c[2], pi/2) assert np.abs(2 * a0 + 2* vac - c[2,2]) < 1e-10 a2 = atoms.copy() # Add vacuum in all directions vac = 4.0 atoms.center(vacuum=vac) c = atoms.get_cell() checkang(c[0], c[1], pi / 2) checkang(c[0], c[2], pi / 4) checkang(c[1], c[2], pi / 2) assert np.abs(4.5 * a0 + 2 * vac - c[1, 1]) < 1e-10 assert np.abs(2 * a0 + 2 * vac - c[2, 2]) < 1e-10 # One axis at the time: for i in range(3): a2.center(vacuum=vac, axis=i) assert abs(atoms.positions - a2.positions).max() < 1e-12 assert abs(atoms.cell - a2.cell).max() < 1e-12 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/center_nonperiodic.py000066400000000000000000000012031316323560300257350ustar00rootroot00000000000000import numpy as np from ase import Atoms a = Atoms('H') a.center(about=[0., 0., 0.]) print(a.cell) print(a.positions) assert not a.cell.any() assert not a.positions.any() a.cell = [0., 2., 0.] a.center() print(a) print(a.positions) assert np.abs(a.positions - [[0., 1., 0.]]).max() < 1e-15 a.center(about=[0., -1., 1.]) print(a.positions) assert np.abs(a.positions - [[0., -1., 1.]]).max() < 1e-15 assert np.abs(a.cell - np.diag([0., 2., 0.])).max() < 1e-15 a.center(axis=2, vacuum=2.) print(a.positions) print(a.cell) assert np.abs(a.positions - [[0., -1., 2.]]).max() < 1e-15 assert np.abs(a.cell - np.diag([0., 2., 4.])).max() < 1e-15 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/checkpoint.py000066400000000000000000000037611316323560300242260ustar00rootroot00000000000000import os import numpy as np from ase import Atom from ase.build import bulk from ase.calculators.checkpoint import Checkpoint, CheckpointCalculator from ase.calculators.lj import LennardJones from ase.lattice.cubic import Diamond def op1(a, m): a[1].position += m * np.array([0.1, 0.2, 0.3]) return a def op2(a, m): a += Atom('C', m * np.array([0.2, 0.3, 0.1])) return a, a.positions[0] def test_sqlite(): print('test_single_file') try: os.remove('checkpoints.db') except OSError: pass CP = Checkpoint('checkpoints.db') a = Diamond('Si', size=[2, 2, 2]) a = CP(op1)(a, 1.0) op1a = a.copy() a, ra = CP(op2)(a, 2.0) op2a = a.copy() op2ra = ra.copy() CP = Checkpoint('checkpoints.db') a = Diamond('Si', size=[2, 2, 2]) a = CP(op1)(a, 1.0) assert a == op1a a, ra = CP(op2)(a, 2.0) assert a == op2a assert(np.abs(ra - op2ra).max() < 1e-5) def rattle_calc(atoms, calc): try: os.remove('checkpoints.db') except OSError: pass orig_atoms = atoms.copy() # first do a couple of calculations np.random.seed(0) atoms.rattle() cp_calc_1 = CheckpointCalculator(calc) atoms.set_calculator(cp_calc_1) e11 = atoms.get_potential_energy() f11 = atoms.get_forces() atoms.rattle() e12 = atoms.get_potential_energy() f12 = atoms.get_forces() # then re-read them from checkpoint file atoms = orig_atoms np.random.seed(0) atoms.rattle() cp_calc_2 = CheckpointCalculator(calc) atoms.set_calculator(cp_calc_2) e21 = atoms.get_potential_energy() f21 = atoms.get_forces() atoms.rattle() e22 = atoms.get_potential_energy() f22 = atoms.get_forces() assert e11 == e21 assert e12 == e22 assert(np.abs(f11 - f21).max() < 1e-5) assert(np.abs(f12 - f22).max() < 1e-5) def test_new_style_interface(): calc = LennardJones() atoms = bulk('Cu') rattle_calc(atoms, calc) test_sqlite() test_new_style_interface() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/com.py000066400000000000000000000007221316323560300226470ustar00rootroot00000000000000"""Test that atoms.get_center_of_mass(scaled=True) works""" import numpy as np from ase import Atoms d = 1.142 a = Atoms('CO', positions=[(2, 0, 0), (2, -d, 0)], pbc=True) a.set_cell(np.array(((4, -4, 0), (0, 5.657, 0), (0, 0, 10)))) def array_almost_equal(a1, a2, tol=np.finfo(type(1.0)).eps): return (np.abs(a1 - a2) < tol).all() scaledref = np.array((0.5, 0.23823622, 0.)) assert array_almost_equal(a.get_center_of_mass(scaled=True), scaledref, tol=1e-8) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/000077500000000000000000000000001316323560300240655ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/__init__.py000066400000000000000000000000001316323560300261640ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/fixatoms.py000066400000000000000000000010431316323560300262670ustar00rootroot00000000000000"""Test Atoms.__delitem__ with FixAtoms constraint.""" from ase import Atoms from ase.constraints import FixAtoms for i, j in [(slice(0, -1), None), (slice(0, 1), [0]), (slice(0, None), None), (0, [0]), (1, [0]), (2, [0, 1]), (-1, [0, 1])]: a = Atoms('H3') a.constraints = FixAtoms(indices=[0, 1]) del a[i] print(i, j, a.constraints) if j is None: assert len(a.constraints) == 0 else: assert (a.constraints[0].index == j).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/fixbonds.py000066400000000000000000000007161316323560300262570ustar00rootroot00000000000000"""Test Atoms.__delitem__ with FixAtoms constraint.""" from ase import Atoms from ase.constraints import FixBondLengths a = Atoms('H3') a.constraints = FixBondLengths([(1, 2)]) assert (a[:].constraints[0].pairs == [(1, 2)]).all() assert (a[1:].constraints[0].pairs == [(0, 1)]).all() assert len(a[2:].constraints) == 0 assert len(a[1:2].constraints) == 0 assert len(a[:2].constraints) == 0 assert len(a[:1].constraints) == 0 # Execise Atoms.__init__: Atoms(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/getindices.py000066400000000000000000000010461316323560300265560ustar00rootroot00000000000000from ase.build import fcc111 from ase.constraints import (FixAtoms, FixBondLengths, FixInternals, Hookean, constrained_indices) slab = fcc111('Pt', (4, 4, 4)) C1 = FixAtoms([0, 2, 4]) C2 = FixBondLengths([[0, 1], [0, 2]]) C3 = FixInternals(bonds=[[1, [7, 8]], [1, [8, 9]]]) C4 = Hookean(a1=30, a2=40, rt=1.79, k=5.) slab.set_constraint([C1, C2, C3, C4]) assert all(constrained_indices(slab, (FixAtoms, FixBondLengths)) == [0, 1, 2, 4]) assert all(constrained_indices(slab) == [0, 1, 2, 4, 7, 8, 9, 30, 40]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/negativeindex.py000066400000000000000000000010011316323560300272610ustar00rootroot00000000000000from __future__ import print_function from ase.atoms import Atoms from ase.constraints import FixScaled a1 = Atoms(symbols = 'X2', positions = [[0.,0.,0.], [2.,0.,0.], ], cell = [[4.,0.,0.], [0.,4.,0.], [0.,0.,4.], ], ) fs1 = FixScaled(a1.get_cell(), -1, mask=(True, False, False)) fs2 = FixScaled(a1.get_cell(), 1, mask=(False, True, False)) a1.set_constraint([fs1,fs2]) # reassigning using atoms.__getitem__ a2 = a1[0:2] assert len(a1._constraints) == len(a2._constraints) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/constraints/setpos.py000066400000000000000000000014201316323560300257510ustar00rootroot00000000000000import numpy as np from ase.build import molecule from ase.constraints import FixAtoms def array_almost_equal(a1, a2, tol=np.finfo(type(1.0)).eps): """Replacement for old numpy.testing.utils.array_almost_equal.""" return (np.abs(a1 - a2) < tol).all() m = molecule('H2') c = FixAtoms(indices=[atom.index for atom in m]) m.set_constraint(c) pos1 = m.get_positions() # shift z-coordinates by 1. pos = m.get_positions() pos[:, 2] += 1. m.set_positions(pos) # note that set_positions fails silently to set the new positions # due to the presence of constraints! assert array_almost_equal(pos1, m.get_positions()) m.positions = pos # atoms.positions allows one to set the new positions # even in the presence of constraints! assert array_almost_equal(pos, m.get_positions()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/000077500000000000000000000000001316323560300223555ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/__init__.py000066400000000000000000000000001316323560300244540ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_GeoOpt.py000066400000000000000000000017311316323560300250450ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.optimize import BFGS from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(label='test_H2_GOPT', print_level='LOW') atoms = molecule('H2', calculator=calc) atoms.center(vacuum=2.0) # Run Geo-Opt gopt = BFGS(atoms, logfile=None) gopt.run(fmax=1e-6) # check distance dist = atoms.get_distance(0, 1) dist_ref = 0.7245595 assert (dist - dist_ref) / dist_ref < 1e-7 # check energy energy_ref = -30.7025616943 energy = atoms.get_potential_energy() assert (energy - energy_ref) / energy_ref < 1e-10 print('passed test "H2_GEO_OPT"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_H2_LDA.py000066400000000000000000000013111316323560300245730ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(label='test_H2_LDA') h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) energy = h2.get_potential_energy() energy_ref = -30.6989595886 diff = abs((energy - energy_ref) / energy_ref) assert diff < 1e-10 print('passed test "H2_LDA"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_H2_LS.py000066400000000000000000000015771316323560300245270ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') inp = """&FORCE_EVAL &DFT &QS LS_SCF ON &END QS &END DFT &END FORCE_EVAL""" calc = CP2K(label='test_H2_LS', inp=inp) h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) energy = h2.get_potential_energy() energy_ref = -30.6989581747 diff = abs((energy - energy_ref) / energy_ref) assert diff < 5e-7 print('passed test "H2_LS"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_H2_None.py000066400000000000000000000032551316323560300251030ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K inp = """ &FORCE_EVAL METHOD Quickstep &DFT BASIS_SET_FILE_NAME BASIS_MOLOPT &MGRID CUTOFF 400 &END MGRID &XC &XC_FUNCTIONAL LDA &END XC_FUNCTIONAL &END XC &POISSON PERIODIC NONE PSOLVER MT &END POISSON &END DFT &SUBSYS &KIND H BASIS_SET DZVP-MOLOPT-SR-GTH POTENTIAL GTH-LDA &END KIND &END SUBSYS &END FORCE_EVAL """ def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') # Basically, the entire CP2K input is passed in explicitly. # Disable ASE's input generation by setting everything to None. # ASE should only add the CELL and the COORD section. calc = CP2K(basis_set=None, basis_set_file=None, max_scf=None, cutoff=None, force_eval_method=None, potential_file=None, poisson_solver=None, pseudo_potential=None, stress_tensor=False, xc=None, label='test_H2_inp', inp=inp) h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) energy = h2.get_potential_energy() energy_ref = -30.6989595886 diff = abs((energy - energy_ref) / energy_ref) assert diff < 1e-10 print('passed test "H2_None"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_H2_PBE.py000066400000000000000000000013241316323560300246050ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(xc='PBE', label='test_H2_PBE') h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) energy = h2.get_potential_energy() energy_ref = -31.5917284949 diff = abs((energy - energy_ref) / energy_ref) assert diff < 1e-10 print('passed test "H2_PBE"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_H2_libxc.py000066400000000000000000000014541316323560300253040ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(xc='XC_GGA_X_PBE XC_GGA_C_PBE', pseudo_potential="GTH-PBE", label='test_H2_libxc') h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) energy = h2.get_potential_energy() energy_ref = -31.591716529642 diff = abs((energy - energy_ref) / energy_ref) assert diff < 1e-10 print('passed test "H2_libxc"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_MD.py000066400000000000000000000024341316323560300241510ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase import units from ase.atoms import Atoms from ase.md.velocitydistribution import MaxwellBoltzmannDistribution from ase.md.verlet import VelocityVerlet from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(label='test_H2_MD') positions = [(0, 0, 0), (0, 0, 0.7245595)] atoms = Atoms('HH', positions=positions, calculator=calc) atoms.center(vacuum=2.0) # Run MD MaxwellBoltzmannDistribution(atoms, 0.5 * 300 * units.kB, force_temp=True) energy_start = atoms.get_potential_energy() + atoms.get_kinetic_energy() dyn = VelocityVerlet(atoms, 0.5 * units.fs) #def print_md(): # energy = atoms.get_potential_energy() + atoms.get_kinetic_energy() # print("MD total-energy: %.10feV" % energy) #dyn.attach(print_md, interval=1) dyn.run(20) energy_end = atoms.get_potential_energy() + atoms.get_kinetic_energy() assert energy_start - energy_end < 1e-4 print('passed test "H2_MD"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_O2.py000066400000000000000000000014541316323560300241320ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase import units from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K(label='test_O2', uks=True, cutoff=150 * units.Rydberg, basis_set="SZV-MOLOPT-SR-GTH") o2 = molecule('O2', calculator=calc) o2.center(vacuum=2.0) energy = o2.get_potential_energy() energy_ref = -861.057011375 diff = abs((energy - energy_ref) / energy_ref) assert diff < 1e-10 print('passed test "O2"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_restart.py000066400000000000000000000013521316323560300253330ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import os from ase.test import NotAvailable from ase.build import molecule from ase.calculators.cp2k import CP2K def main(): if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') calc = CP2K() h2 = molecule('H2', calculator=calc) h2.center(vacuum=2.0) h2.get_potential_energy() calc.write('test_restart') # write a restart calc2 = CP2K(restart='test_restart') # load a restart assert not calc2.calculation_required(h2, ['energy']) print('passed test "restart"') main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cp2k/cp2k_stress.py000066400000000000000000000060121316323560300251700ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Test suit for the CP2K ASE calulator. http://www.cp2k.org Author: Ole Schuett """ from __future__ import division, print_function import numpy as np import os from ase.test import NotAvailable from ase.build import bulk from ase.constraints import UnitCellFilter from ase.optimize import MDMin from ase.calculators.cp2k import CP2K def main(): """Adopted from ase/test/stress.py""" if "ASE_CP2K_COMMAND" not in os.environ: raise NotAvailable('$ASE_CP2K_COMMAND not defined') # setup a Fist Lennard-Jones Potential inp = """&FORCE_EVAL &MM &FORCEFIELD &SPLINE EMAX_ACCURACY 500.0 EMAX_SPLINE 1000.0 EPS_SPLINE 1.0E-9 &END &NONBONDED &LENNARD-JONES atoms Ar Ar EPSILON [eV] 1.0 SIGMA [angstrom] 1.0 RCUT [angstrom] 10.0 &END LENNARD-JONES &END NONBONDED &CHARGE ATOM Ar CHARGE 0.0 &END CHARGE &END FORCEFIELD &POISSON &EWALD EWALD_TYPE none &END EWALD &END POISSON &END MM &END FORCE_EVAL""" calc = CP2K(label="test_stress", inp=inp, force_eval_method="Fist") # Theoretical infinite-cutoff LJ FCC unit cell parameters vol0 = 4 * 0.91615977036 # theoretical minimum a0 = vol0 ** (1 / 3) a = bulk('Ar', 'fcc', a=a0) cell0 = a.get_cell() a.calc = calc a.set_cell(np.dot(a.cell, [[1.02, 0, 0.03], [0, 0.99, -0.02], [0.1, -0.01, 1.03]]), scale_atoms=True) a *= (1, 2, 3) cell0 *= np.array([1, 2, 3])[:, np.newaxis] a.rattle() # Verify analytical stress tensor against numerical value s_analytical = a.get_stress() s_numerical = a.calc.calculate_numerical_stress(a, 1e-5) s_p_err = 100 * (s_numerical - s_analytical) / s_numerical print("Analytical stress:\n", s_analytical) print("Numerical stress:\n", s_numerical) print("Percent error in stress:\n", s_p_err) assert np.all(abs(s_p_err) < 1e-5) # Minimize unit cell opt = MDMin(UnitCellFilter(a), dt=0.01) opt.run(fmax=1e-3) # Verify minimized unit cell using Niggli tensors g_minimized = np.dot(a.cell, a.cell.T) g_theory = np.dot(cell0, cell0.T) g_p_err = 100 * (g_minimized - g_theory) / g_theory print("Minimized Niggli tensor:\n", g_minimized) print("Theoretical Niggli tensor:\n", g_theory) print("Percent error in Niggli tensor:\n", g_p_err) assert np.all(abs(g_p_err) < 1) print('passed test "stress"') main() # EOF ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/crystal.py000066400000000000000000000052061316323560300235540ustar00rootroot00000000000000import numpy as np from ase.spacegroup import crystal from ase.io import write # A diamond unit cell diamond = crystal('C', [(0, 0, 0)], spacegroup=227, cellpar=[3.57, 3.57, 3.57, 90, 90, 90]) # Check that we can write to trajectory: write('c.traj', diamond) assert len(diamond) == 8 correct_pos = np.array([[ 0. , 0. , 0. ], [ 0. , 0.5 , 0.5 ], [ 0.5 , 0.5 , 0. ], [ 0.5 , 0. , 0.5 ], [ 0.75, 0.25, 0.75], [ 0.25, 0.25, 0.25], [ 0.25, 0.75, 0.75], [ 0.75, 0.75, 0.25]]) assert np.allclose(diamond.get_scaled_positions(), correct_pos) # A CoSb3 skutterudite unit cell containing 32 atoms skutterudite = crystal(('Co', 'Sb'), basis=[(0.25, 0.25, 0.25), (0.0, 0.335, 0.158)], spacegroup=204, cellpar=[9.04, 9.04, 9.04, 90, 90, 90]) assert len(skutterudite) == 32 correct_pos = np.array([[ 0.25 , 0.25 , 0.25 ], [ 0.75 , 0.75 , 0.25 ], [ 0.75 , 0.25 , 0.75 ], [ 0.25 , 0.75 , 0.75 ], [ 0.75 , 0.75 , 0.75 ], [ 0.25 , 0.25 , 0.75 ], [ 0.25 , 0.75 , 0.25 ], [ 0.75 , 0.25 , 0.25 ], [ 0. , 0.335, 0.158], [ 0. , 0.665, 0.158], [ 0. , 0.335, 0.842], [ 0. , 0.665, 0.842], [ 0.158, 0. , 0.335], [ 0.158, 0. , 0.665], [ 0.842, 0. , 0.335], [ 0.842, 0. , 0.665], [ 0.335, 0.158, 0. ], [ 0.665, 0.158, 0. ], [ 0.335, 0.842, 0. ], [ 0.665, 0.842, 0. ], [ 0.5 , 0.835, 0.658], [ 0.5 , 0.165, 0.658], [ 0.5 , 0.835, 0.342], [ 0.5 , 0.165, 0.342], [ 0.658, 0.5 , 0.835], [ 0.658, 0.5 , 0.165], [ 0.342, 0.5 , 0.835], [ 0.342, 0.5 , 0.165], [ 0.835, 0.658, 0.5 ], [ 0.165, 0.658, 0.5 ], [ 0.835, 0.342, 0.5 ], [ 0.165, 0.342, 0.5 ]]) assert np.allclose(skutterudite.get_scaled_positions(), correct_pos) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/cutoffs_test.py000066400000000000000000000007351316323560300246050ustar00rootroot00000000000000from ase.utils import natural_cutoffs from ase import Atoms import numpy as np atoms = Atoms("HCOPtAu") assert np.allclose(natural_cutoffs(atoms), [0.31, 0.76, 0.66, 1.36, 1.36]) assert np.allclose(natural_cutoffs(atoms, mult=1.2), [0.372, 0.912, 0.792, 1.632, 1.632]) assert np.allclose(natural_cutoffs(atoms, mult=1.2, Au=1), [0.372, 0.912, 0.792, 1.632, 1]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/db/000077500000000000000000000000001316323560300221035ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/db/__init__.py000066400000000000000000000000001316323560300242020ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/db/config.py000066400000000000000000000020001316323560300237120ustar00rootroot00000000000000from ase.db.web import creates title = 'TEST' default_columns = ['formula', 'answer', 'kind'] special_keys = [('SELECT', 'kind'), ('BOOL', 'foo'), ('RANGE', 'ans', 'Answer', [('A1', 'answer'), ('B2', 'answer')])] key_descriptions = { 'kind': ('Type', 'Type of system', ''), 'answer': ('Answer', 'Answer to question', 'eV')} @creates('xy.png', 'abc.png') def xy(row): import matplotlib.pyplot as plt ax = plt.figure().add_subplot(111) ax.plot([0, 1, 2, 3, 0, 1]) plt.savefig('xy.png') if row.natoms > 1: ax.plot([2, 2, 2, 3, 3, 3]) plt.savefig('abc.png') stuff = ('Stuff', ['energy', 'fmax', 'charge', 'mass', 'magmom', 'volume']) things = ('Things', ['answer', 'kind']) calc = ('Calculator Setting', ['calculator']) layout = [ ('Basic properties', [stuff, 'ATOMS', things, 'CELL']), ('Calculation details', [calc, None, 'FORCES', None, 'xy.png', 'abc.png'])] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/db/db.py000066400000000000000000000020731316323560300230440ustar00rootroot00000000000000from ase.test import cli from ase.db import connect cmd = """ ase build H | ase run emt -d y.json && ase build H2O | ase run emt -d y.json && ase build O2 | ase run emt -d y.json && ase build H2 | ase run emt -f 0.02 -d y.json && ase build O2 | ase run emt -f 0.02 -d y.json && ase build -x fcc Cu | ase run emt -E 5,1 -d y.json && ase db -v y.json natoms=1,Cu=1 --delete --yes && ase db -v y.json "H>0" -k hydro=1,abc=42,foo=bar && ase db -v y.json "H>0" --delete-keys foo""" def count(n, *args, **kwargs): m = len(list(con.select(*args, **kwargs))) assert m == n, (m, n) for name in ['y.json', 'y.db']: cli(cmd.replace('y.json', name)) con = connect(name) assert con.get_atoms(H=1)[0].magmom == 1 count(5) count(3, 'hydro') count(0, 'foo') count(3, abc=42) count(3, 'abc') count(0, 'abc,foo') count(3, 'abc,hydro') count(0, foo='bar') count(1, formula='H2') count(1, formula='H2O') count(3, 'fmax<0.1') count(1, '0.5 0 for atom in atoms] atoms.set_constraint(FixAtoms(mask = mask)) # Calculate using EMT atoms.set_calculator(EMT()) relaxed_energy = atoms.get_potential_energy() # Set up the dimer d_control = DimerControl(initial_eigenmode_method = 'displacement', \ displacement_method = 'vector', logfile = None, \ mask = [0, 0, 0, 0, 1]) d_atoms = MinModeAtoms(atoms, d_control) # Displace the atoms displacement_vector = [[0.0]*3]*5 displacement_vector[-1][1] = -0.1 d_atoms.displace(displacement_vector = displacement_vector) # Converge to a saddle point dim_rlx = MinModeTranslate(d_atoms, trajectory = 'dimer_method.traj', \ logfile = None) dim_rlx.run(fmax = 0.001) # Test the results tolerance = 1e-3 assert(d_atoms.get_barrier_energy() - 1.03733136918 < tolerance) assert(abs(d_atoms.get_curvature() + 0.900467048707) < tolerance) assert(d_atoms.get_eigenmode()[-1][1] < -0.99) assert(abs(d_atoms.get_positions()[-1][1]) < tolerance) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/distance.py000066400000000000000000000031371316323560300236660ustar00rootroot00000000000000import itertools import numpy as np from ase import Atoms, Atom from ase.geometry import distance # artificial structure org = Atoms('COPNS', [[-1.75072, 0.62689, 0.00000], [0.58357, 2.71652, 0.00000], [-5.18268, 1.36522, 0.00000], [-1.86663, -0.77867, 2.18917], [-1.80586, 0.20783, -2.79331]]) maxdist = 3.0e-13 # translate for dx in range(3, 10, 2): new = org.copy() new.translate([dx / np.sqrt(2), -dx / np.sqrt(2), 0]) dist = distance(org, new, True) dist2 = distance(org, new, False) print('translation', dx, '-> distance', dist) assert dist < maxdist assert dist == dist2 # rotate for axis in ['x', '-y', 'z', np.array([1, 1, 1] / np.sqrt(3))]: for rot in [20, 200]: new = org.copy() new.translate(-new.get_center_of_mass()) new.rotate(rot, axis) dist = distance(org, new, True) dist2 = distance(org, new, False) print('rotation', axis, ', angle', rot, '-> distance', dist) assert dist < maxdist assert dist == dist2 if 0: # reflect new = Atoms() cm = org.get_center_of_mass() for a in org: new.append(Atom(a.symbol, -(a.position - cm))) dist = distance(org, new) print('reflected -> distance', dist) # permute for i, a in enumerate(org): if i < 3: a.symbol = 'H' for indxs in itertools.permutations(range(3)): new = org.copy() for c in range(3): new[c].position = org[indxs[c]].position dist = distance(org, new) print('permutation', indxs, '-> distance', dist) assert dist < maxdist ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/distmom.py000066400000000000000000000012251316323560300235440ustar00rootroot00000000000000from ase.dft import get_distribution_moment import numpy as np precision = 1E-8 x = np.linspace(-50., 50., 1000) y = np.exp(-x**2 / 2.) area, center, mom2 = get_distribution_moment(x, y, (0, 1, 2)) assert sum((abs(area - np.sqrt(2. * np.pi)), abs(center), abs(mom2 - 1.))) < precision x = np.linspace(-1., 1., 100000) for order in range(0, 9): y = x**order area = get_distribution_moment(x, y) assert abs(area - (1. - (-1.)**(order + 1)) / (order + 1.)) < precision x = np.linspace(-50., 50., 100) y = np.exp(-2. * (x - 7.)**2 / 10.) + np.exp(-2. * (x + 5.)**2 / 10.) center=get_distribution_moment(x, y, 1) assert abs(center - 1.) < precision ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/dmol/000077500000000000000000000000001316323560300224515ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/dmol/Al_dmol.py000066400000000000000000000002601316323560300243700ustar00rootroot00000000000000from ase.build import bulk from ase.calculators.dmol import DMol3 atoms = bulk('Al') calc = DMol3() atoms.set_calculator(calc) atoms.get_potential_energy() atoms.get_forces() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/dmol/__init__.py000066400000000000000000000000001316323560300245500ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/dmol/water_dmol.py000066400000000000000000000002711316323560300251600ustar00rootroot00000000000000from ase.build import molecule from ase.calculators.dmol import DMol3 atoms = molecule('H2O') calc = DMol3() atoms.set_calculator(calc) atoms.get_potential_energy() atoms.get_forces() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/doctests.py000066400000000000000000000010671316323560300237240ustar00rootroot00000000000000import doctest import sys try: import scipy except ImportError: scipy = None from ase import atoms from ase.collections import collection from ase.spacegroup import spacegroup, findsym, xtal from ase.geometry import geometry, cell from ase.build import tools from ase.io import ulm import ase.eos as eos modules = [xtal, spacegroup, cell, findsym, ulm, atoms, eos] if scipy: modules.extend([geometry, tools]) if sys.version_info >= (2, 7): modules.append(collection) for mod in modules: print(mod, doctest.testmod(mod, raise_on_error=True)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/dos.py000066400000000000000000000024421316323560300226570ustar00rootroot00000000000000"""Check density of states tetrahedron code.""" import numpy as np from ase.dft.dos import ltidos from ase.dft.kpoints import monkhorst_pack cell = np.eye(3) shape = (11, 13, 9) kpts = np.dot(monkhorst_pack(shape), np.linalg.inv(cell).T).reshape(shape + (3,)) # Free electron eigenvalues: eigs = 0.5 * (kpts**2).sum(3)[..., np.newaxis] # new axis for 1 band energies = np.linspace(0.0001, eigs.max() + 0.0001, 500) # Do 3-d, 2-d and 1-d: dos3 = ltidos(cell, eigs, energies) eigs = eigs[:, :, 4:5] dos2 = ltidos(cell, eigs, energies) eigs = eigs[5:6] dos1 = ltidos(cell, eigs, energies) # With weights: dos1w = ltidos(cell, eigs, energies, np.ones_like(eigs)) assert abs(dos1 - dos1w).max() < 2e-14 # Analytic results: ref3 = 4 * np.pi * (2 * energies)**0.5 ref2 = 2 * np.pi * np.ones_like(energies) ref1 = 2 * (2 * energies)**-0.5 mask = np.bitwise_and(energies > 0.02, energies < 0.1) dims = 1 for dos, ref in [(dos1, ref1), (dos2, ref2), (dos3, ref3)]: error = abs(1 - dos / ref)[mask].max() norm = dos.sum() * (energies[1] - energies[0]) print(dims, norm) assert error < 0.2, error assert abs(norm - 1) < 0.11**dims, norm if 0: import matplotlib.pyplot as plt plt.plot(energies, dos) plt.plot(energies, ref) plt.show() dims += 1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eam_pot.py000066400000000000000000001074241316323560300235240ustar00rootroot00000000000000# EAM potential for Pt from LAMMPS Pt_u3 = \ """DATE: 2007-06-11 CONTRIBUTOR: Stephen Foiles, foiles@sandia.gov CITATION: Foiles et al, Phys Rev B, 33, 7983 (1986) COMMENT: Pt functions (universal 3), SM Foiles et al, PRB, 33, 7983 (1986) 78 195.09 3.9200 FCC 500 5.0100200400801306e-04 500 1.0707070707070721e-02 5.3000000000000114e+00 0. -4.8256532387839535e-01 -8.2163069483085494e-01 -1.1184672638766031e+00 -1.3913023282712871e+00 -1.6478367404515737e+00 -1.8922209123812408e+00 -2.1270046425573668e+00 -2.3518118673440256e+00 -2.5692311780562278e+00 -2.7807647208236403e+00 -2.9870891892343252e+00 -3.1887362585777481e+00 -3.3861326223263433e+00 -3.5796268226704626e+00 -3.7695078528599879e+00 -3.9560184285805349e+00 -4.1393646896262055e+00 -4.3197234427424007e+00 -4.4972476688606662e+00 -4.6720707786854518e+00 -4.8443099484124730e+00 -5.0140687680251403e+00 -5.1814393677891530e+00 -5.3465041437574428e+00 -5.5093371707724543e+00 -5.6700053695279280e+00 -5.8285694779638106e+00 -5.9850848655324853e+00 -6.1396022201937228e+00 -6.2921681314840612e+00 -6.4428255881094003e+00 -6.5916144047229466e+00 -6.7385715896828060e+00 -6.8837316632833563e+00 -7.0267946191073918e+00 -7.1664929523390981e+00 -7.3044721581305794e+00 -7.4407606561703972e+00 -7.5753855110402242e+00 -7.7083725687124343e+00 -7.8397465769618009e+00 -7.9695312918024115e+00 -8.0977495716777526e+00 -8.2244234611367801e+00 -8.3495742649348017e+00 -8.4732226141273941e+00 -8.5953885248173947e+00 -8.7160914505300866e+00 -8.8353503289578725e+00 -8.9531836236402000e+00 -9.0696093612581876e+00 -9.1846451649266783e+00 -9.2983082839703002e+00 -9.4106156205833713e+00 -9.5215837536494519e+00 -9.6312289600847976e+00 -9.7395672339368957e+00 -9.8466143034397078e+00 -9.9523856463964648e+00 -1.0056896503782298e+01 -1.0160161892048848e+01 -1.0262196614080892e+01 -1.0363015269007064e+01 -1.0462632260978864e+01 -1.0561061807021588e+01 -1.0658317944056876e+01 -1.0754414535178739e+01 -1.0849365275313289e+01 -1.0943183696090216e+01 -1.1035883170564546e+01 -1.1127476917048284e+01 -1.1217978002785060e+01 -1.1307399347159560e+01 -1.1395753724585290e+01 -1.1483053767097715e+01 -1.1569311966688872e+01 -1.1654540677403645e+01 -1.1738752117243337e+01 -1.1821958369879894e+01 -1.1904171386222060e+01 -1.1985402985841404e+01 -1.2065664858281309e+01 -1.2144968564260978e+01 -1.2223311768936753e+01 -1.2300484082444200e+01 -1.2376735655437130e+01 -1.2452077613822269e+01 -1.2526520957875107e+01 -1.2600076562804816e+01 -1.2672755179662204e+01 -1.2744567436120121e+01 -1.2815523837253011e+01 -1.2885634766309352e+01 -1.2954910485479104e+01 -1.3023361136660640e+01 -1.3090996742227674e+01 -1.3157827205799549e+01 -1.3223862313023801e+01 -1.3289111732358606e+01 -1.3353585015871943e+01 -1.3417291600044109e+01 -1.3480240806593770e+01 -1.3542441843298207e+01 -1.3603903804847164e+01 -1.3664635673689077e+01 -1.3724646320909244e+01 -1.3783944507107776e+01 -1.3842538883293571e+01 -1.3900437991796025e+01 -1.3957650267183055e+01 -1.4014184037194070e+01 -1.4070047523682831e+01 -1.4125248843591976e+01 -1.4179796009850634e+01 -1.4233696932440012e+01 -1.4286959419319373e+01 -1.4339591177435011e+01 -1.4391599813717164e+01 -1.4442992836085295e+01 -1.4493777654465759e+01 -1.4543961581804581e+01 -1.4593551835095070e+01 -1.4642555536403506e+01 -1.4690979713899083e+01 -1.4738831302890674e+01 -1.4786117146859510e+01 -1.4832843998496060e+01 -1.4879018520742534e+01 -1.4924647287827327e+01 -1.4969736786301610e+01 -1.5014293416078772e+01 -1.5058323491470446e+01 -1.5101833242216628e+01 -1.5144828814517894e+01 -1.5187316272062105e+01 -1.5229301597048220e+01 -1.5270790691206514e+01 -1.5311789376810736e+01 -1.5352303397695209e+01 -1.5392338420255896e+01 -1.5431900034440332e+01 -1.5470993754752044e+01 -1.5509625021238833e+01 -1.5547799200463771e+01 -1.5585521586444088e+01 -1.5622797401777063e+01 -1.5659631798356088e+01 -1.5696029858477971e+01 -1.5731996595753969e+01 -1.5767536956062543e+01 -1.5802655818371193e+01 -1.5837357995818650e+01 -1.5871648236510850e+01 -1.5905531224447714e+01 -1.5939011580416889e+01 -1.5972093862871759e+01 -1.6004782568806604e+01 -1.6037082134620618e+01 -1.6068996936965505e+01 -1.6100531293611539e+01 -1.6131593588097985e+01 -1.6162278534625557e+01 -1.6192598416643477e+01 -1.6222557318775557e+01 -1.6252159270704283e+01 -1.6281408247962872e+01 -1.6310308172719147e+01 -1.6338862914542347e+01 -1.6367076291169610e+01 -1.6394952069254714e+01 -1.6422493965111471e+01 -1.6449705645445420e+01 -1.6476590728077781e+01 -1.6503152782656343e+01 -1.6529395331364526e+01 -1.6555321849607594e+01 -1.6580935766706148e+01 -1.6606240466562895e+01 -1.6631239288333518e+01 -1.6655935527083443e+01 -1.6680332434432216e+01 -1.6704433219196062e+01 -1.6728241048009636e+01 -1.6751759045957442e+01 -1.6774990297173076e+01 -1.6797937845450861e+01 -1.6820604694834287e+01 -1.6842993810205030e+01 -1.6865108117854788e+01 -1.6886950506056110e+01 -1.6908523825624798e+01 -1.6929830890463563e+01 -1.6950874478114656e+01 -1.6971657330285552e+01 -1.6992182153382714e+01 -1.7012451619031253e+01 -1.7032468364576062e+01 -1.7052234993601473e+01 -1.7071754076412162e+01 -1.7091028150529155e+01 -1.7110059721172433e+01 -1.7128851261726936e+01 -1.7147405214217201e+01 -1.7165723989760636e+01 -1.7183809969023741e+01 -1.7201665502664468e+01 -1.7219292911770367e+01 -1.7236694488294233e+01 -1.7253872495473615e+01 -1.7270829168252362e+01 -1.7287566713692627e+01 -1.7304087311378225e+01 -1.7320393113812997e+01 -1.7336486246821323e+01 -1.7352368809925224e+01 -1.7368042876730328e+01 -1.7383510495269206e+01 -1.7398773688479196e+01 -1.7413834454415337e+01 -1.7428694766699664e+01 -1.7443356574854988e+01 -1.7457821804649825e+01 -1.7472092358438658e+01 -1.7486170115497430e+01 -1.7500056932352777e+01 -1.7513754643111383e+01 -1.7527265059776710e+01 -1.7540589972562998e+01 -1.7553731150209160e+01 -1.7566690340282662e+01 -1.7579469269479091e+01 -1.7592069643916034e+01 -1.7604493149431619e+01 -1.7616741451859866e+01 -1.7628816197326728e+01 -1.7640719012513387e+01 -1.7652451504941723e+01 -1.7664015263234546e+01 -1.7675411857384574e+01 -1.7686642839018532e+01 -1.7697709741645212e+01 -1.7708614080906386e+01 -1.7719357354865451e+01 -1.7729941044171710e+01 -1.7740366612375851e+01 -1.7750635506130834e+01 -1.7760749155460871e+01 -1.7770708973917863e+01 -1.7780516358892783e+01 -1.7790172691791781e+01 -1.7799679338239912e+01 -1.7809037648367507e+01 -1.7818248956946832e+01 -1.7827314583636962e+01 -1.7836235833183991e+01 -1.7845013995631462e+01 -1.7853650346504992e+01 -1.7862146147026351e+01 -1.7870502644288649e+01 -1.7878721071467453e+01 -1.7886802647989271e+01 -1.7894748579730390e+01 -1.7902560059192638e+01 -1.7910238265685734e+01 -1.7917784365493731e+01 -1.7925199512068616e+01 -1.7932484846183684e+01 -1.7939641496112472e+01 -1.7946670577782129e+01 -1.7953573194960541e+01 -1.7960350439387867e+01 -1.7967003390960258e+01 -1.7973533117868556e+01 -1.7979940676768706e+01 -1.7986227112911934e+01 -1.7992393460314474e+01 -1.7998440741896161e+01 -1.8004369969619688e+01 -1.8010182144639430e+01 -1.8015878257452187e+01 -1.8021459288021106e+01 -1.8026926205888003e+01 -1.8032279970369245e+01 -1.8037521530645449e+01 -1.8042651825894609e+01 -1.8047671785429884e+01 -1.8052582328819653e+01 -1.8057384366016095e+01 -1.8062078797478875e+01 -1.8066666514291228e+01 -1.8071148398281139e+01 -1.8075525322143676e+01 -1.8079798149545240e+01 -1.8083967735250440e+01 -1.8088034925228726e+01 -1.8092000556763992e+01 -1.8095865458561434e+01 -1.8099630450861810e+01 -1.8103296345542503e+01 -1.8106863946225417e+01 -1.8110334048375421e+01 -1.8113707439406085e+01 -1.8116984898770738e+01 -1.8120167198077979e+01 -1.8123255101170798e+01 -1.8126249364231739e+01 -1.8129150735877374e+01 -1.8131959957245840e+01 -1.8134677762093588e+01 -1.8137304876882126e+01 -1.8139842020870333e+01 -1.8142289906199380e+01 -1.8144649237984936e+01 -1.8146920714387306e+01 -1.8149105026717962e+01 -1.8151202859502860e+01 -1.8153214890571803e+01 -1.8155141791145525e+01 -1.8156984225901851e+01 -1.8158742853058584e+01 -1.8160418324462398e+01 -1.8162011285649669e+01 -1.8163522375925368e+01 -1.8164952228439006e+01 -1.8166301470260123e+01 -1.8167570722449000e+01 -1.8168760600121459e+01 -1.8169871712527765e+01 -1.8170904663114243e+01 -1.8171860049595580e+01 -1.8172738464022132e+01 -1.8173540492843586e+01 -1.8174266716978536e+01 -1.8174917711871331e+01 -1.8175494047560733e+01 -1.8175996288747456e+01 -1.8176424994848048e+01 -1.8176780720052875e+01 -1.8177064013398422e+01 -1.8177275418819590e+01 -1.8177415475203588e+01 -1.8177484716460413e+01 -1.8177483671561731e+01 -1.8177412864615462e+01 -1.8177272814913977e+01 -1.8177064036978436e+01 -1.8176787040637691e+01 -1.8176442331048293e+01 -1.8176030408777024e+01 -1.8175551769837966e+01 -1.8175006905744112e+01 -1.8174396303561252e+01 -1.8173720445954359e+01 -1.8172979811246933e+01 -1.8172174873446693e+01 -1.8171306102319022e+01 -1.8170373963424481e+01 -1.8169378918157918e+01 -1.8168321423801217e+01 -1.8167201933572414e+01 -1.8166020896665486e+01 -1.8164778758290595e+01 -1.8163475959725019e+01 -1.8162112938359314e+01 -1.8160690127726411e+01 -1.8159207957556191e+01 -1.8157666853806177e+01 -1.8156067238718151e+01 -1.8154409530839985e+01 -1.8152694145077476e+01 -1.8150921492733232e+01 -1.8149091981536003e+01 -1.8147206015695701e+01 -1.8145263995923187e+01 -1.8143266319476879e+01 -1.8141213380202998e+01 -1.8139105568559671e+01 -1.8136943271674454e+01 -1.8134726873350019e+01 -1.8132456754123496e+01 -1.8130133291300126e+01 -1.8127756858968041e+01 -1.8125327828048285e+01 -1.8122846566330281e+01 -1.8120313438487756e+01 -1.8117728806134437e+01 -1.8115093027839293e+01 -1.8112406459155181e+01 -1.8109669452669777e+01 -1.8106882358022176e+01 -1.8104045521926992e+01 -1.8101159288226427e+01 -1.8098223997901641e+01 -1.8095239989096626e+01 -1.8092207597182096e+01 -1.8089127154743665e+01 -1.8085998991628230e+01 -1.8082823434979900e+01 -1.8079600809244994e+01 -1.8076331436222745e+01 -1.8073015635088723e+01 -1.8069653722397106e+01 -1.8066246012142301e+01 -1.8062792815761213e+01 -1.8059294442165992e+01 -1.8055751197769723e+01 -1.8052163386513030e+01 -1.8048531309885220e+01 -1.8044855266951799e+01 -1.8041135554378116e+01 -1.8037372466449369e+01 -1.8033566295099263e+01 -1.8029717329942741e+01 -1.8025825858270764e+01 -1.8021892165099644e+01 -1.8017916533186963e+01 -1.8013899243045216e+01 -1.8009840572975918e+01 -1.8005740799081423e+01 -1.8001600195293577e+01 -1.7997419033393953e+01 -1.7993197583024084e+01 -1.7988936111725479e+01 -1.7984634884947582e+01 -1.7980294166064368e+01 -1.7975914216407318e+01 -1.7971495295278373e+01 -1.7967037659964490e+01 -1.7962541565765378e+01 -1.7958007266012146e+01 -1.7953435012073896e+01 -1.7948825053399105e+01 -1.7944177637509256e+01 -1.7939493010037040e+01 -1.7934771414738179e+01 -1.7930013093495745e+01 -1.7925218286361996e+01 -1.7920387231556106e+01 -1.7915520165490307e+01 -1.7910617322795588e+01 -1.7905678936306458e+01 -1.7900705237120064e+01 -1.7895696454587323e+01 -1.7890652816327702e+01 -1.7885574548254453e+01 -1.7880461874598950e+01 -1.7875315017897265e+01 -1.7870134199038830e+01 -1.7864919637259618e+01 -1.7859671550174653e+01 -1.7854390153766872e+01 -1.7849075662431687e+01 -1.7843728288976763e+01 -1.7838348244637245e+01 -1.7832935739089407e+01 -1.7827490980469065e+01 -1.7822014175385902e+01 -1.7816505528932339e+01 -1.7810965244702629e+01 -1.7805393524798319e+01 -1.7799790569855304e+01 -1.7794156579049741e+01 -1.7788491750098729e+01 -1.7782796279305103e+01 -1.7777070361533561e+01 -1.7771314190256362e+01 -1.7765527957533777e+01 -1.7759711854052057e+01 -1.7753866069139121e+01 -1.7747990790742278e+01 -1.7742086205475744e+01 -1.7736152498627007e+01 -1.7730189854141827e+01 -1.7724198454672205e+01 -1.7718178481562518e+01 -1.7712130114881120e+01 -1.7706053533408976e+01 -1.7699948914666948e+01 -1.7693816434924429e+01 -1.7687656269211629e+01 -1.7681468591315024e+01 -1.7675253573812597e+01 -1.7669011388068157e+01 -1.7662742204248389e+01 -1.7656446191326722e+01 -1.7650123517101065e+01 -1.7643774348205852e+01 -1.7637398850107729e+01 -1.7630997187131015e+01 -1.7624569522463162e+01 -1.7618116018159071e+01 -1.7611636835157469e+01 -1.7605132133291818e+01 -1.7598602071291680e+01 -1.7592046806792723e+01 -1.7585466496359004e+01 -1.7578861295480237e+01 -1.7572231358576573e+01 -1.7565576839027017e+01 1.0000000000000000e+01 9.8585282692716305e+00 9.7390839480922864e+00 9.6210650654732035e+00 9.5044548910571507e+00 9.3892368865845128e+00 9.2753947037543867e+00 9.1629121821075046e+00 9.0517733469309860e+00 8.9419624071875319e+00 8.8334637534648550e+00 8.7262619559474501e+00 8.6203417624104191e+00 8.5156880962351238e+00 8.4122860544447349e+00 8.3101209057620053e+00 8.2091780886877359e+00 8.1094432095991920e+00 8.0109020408699507e+00 7.9135405190087056e+00 7.8173447428192731e+00 7.7223009715797275e+00 7.6283956232411754e+00 7.5356152726464813e+00 7.4439466497672697e+00 7.3533766379608494e+00 7.2638922722452151e+00 7.1754807375936309e+00 7.0881293672462675e+00 7.0018256410417052e+00 6.9165571837650361e+00 6.8323117635150936e+00 6.7490772900883371e+00 6.6668418133810690e+00 6.5855935218084198e+00 6.5053207407408706e+00 6.4260119309575998e+00 6.3476556871170828e+00 6.2702407362431245e+00 6.1937559362289676e+00 6.1181902743563796e+00 6.0435328658318497e+00 5.9697729523381895e+00 5.8968999006018521e+00 5.8249032009764790e+00 5.7537724660413687e+00 5.6834974292154357e+00 5.6140679433865728e+00 5.5454739795557657e+00 5.4777056254960712e+00 5.4107530844262044e+00 5.3446066736989337e+00 5.2792568235036867e+00 5.2146940755838216e+00 5.1509090819669154e+00 5.0878926037102303e+00 5.0256355096592813e+00 4.9641287752204164e+00 4.9033634811463287e+00 4.8433308123358074e+00 4.7840220566460516e+00 4.7254286037181998e+00 4.6675419438161327e+00 4.6103536666776961e+00 4.5538554603788270e+00 4.4980391102104988e+00 4.4428964975671192e+00 4.3884195988484862e+00 4.3346004843731407e+00 4.2814313173039125e+00 4.2289043525851753e+00 4.1770119358924944e+00 4.1257465025930173e+00 4.0751005767184836e+00 4.0250667699485518e+00 3.9756377806061352e+00 3.9268063926636927e+00 3.8785654747605633e+00 3.8309079792314833e+00 3.7838269411450227e+00 3.7373154773540449e+00 3.6913667855560561e+00 3.6459741433634463e+00 3.6011309073855244e+00 3.5568305123193085e+00 3.5130664700516547e+00 3.4698323687706676e+00 3.4271218720872838e+00 3.3849287181667336e+00 3.3432467188696364e+00 3.3020697589028885e+00 3.2613917949794597e+00 3.2212068549886226e+00 3.1815090371745924e+00 3.1422925093246192e+00 3.1035515079663867e+00 3.0652803375743218e+00 3.0274733697846301e+00 2.9901250426195389e+00 2.9532298597196842e+00 2.9167823895857481e+00 2.8807772648282395e+00 2.8452091814257443e+00 2.8100728979917591e+00 2.7753632350494115e+00 2.7410750743147503e+00 2.7072033579878507e+00 2.6737430880519923e+00 2.6406893255806807e+00 2.6080371900526558e+00 2.5757818586744463e+00 2.5439185657106975e+00 2.5124426018220873e+00 2.4813493134105329e+00 2.4506341019720281e+00 2.4202924234566439e+00 2.3903197876360167e+00 2.3607117574776737e+00 2.3314639485266042e+00 2.3025720282938664e+00 2.2740317156522138e+00 2.2458387802381878e+00 2.2179890418615287e+00 2.1904783699209247e+00 2.1633026828265542e+00 2.1364579474289513e+00 2.1099401784548633e+00 2.0837454379488491e+00 2.0578698347219415e+00 2.0323095238059636e+00 2.0070607059144692e+00 1.9821196269094656e+00 1.9574825772748028e+00 1.9331458915948119e+00 1.9091059480394605e+00 1.8853591678550714e+00 1.8619020148610232e+00 1.8387309949521082e+00 1.8158426556066445e+00 1.7932335854000101e+00 1.7709004135240960e+00 1.7488398093118533e+00 1.7270484817675253e+00 1.7055231791022365e+00 1.6842606882747617e+00 1.6632578345377880e+00 1.6425114809889934e+00 1.6220185281277253e+00 1.6017759134163896e+00 1.5817806108470975e+00 1.5620296305131234e+00 1.5425200181854493e+00 1.5232488548939429e+00 1.5042132565135802e+00 1.4854103733552293e+00 1.4668373897613378e+00 1.4484915237060108e+00 1.4303700263999062e+00 1.4124701818995149e+00 1.3947893067211226e+00 1.3773247494590422e+00 1.3600738904082732e+00 1.3430341411915023e+00 1.3262029443906087e+00 1.3095777731819922e+00 1.2931561309766195e+00 1.2769355510636231e+00 1.2609135962587104e+00 1.2450878585559551e+00 1.2294559587841078e+00 1.2140155462665732e+00 1.1987642984854503e+00 1.1836999207494472e+00 1.1688201458656025e+00 1.1541227338147664e+00 1.1396054714309045e+00 1.1252661720841743e+00 1.1111026753673983e+00 1.0971128467865228e+00 1.0832945774543603e+00 1.0696457837881184e+00 1.0561644072101899e+00 1.0428484138526386e+00 1.0296957942649811e+00 1.0167045631254084e+00 1.0038727589553318e+00 9.9119844383715616e-01 9.7867970313559383e-01 9.6631464522190313e-01 9.5410140120151610e-01 9.4203812464478531e-01 9.3012299132083243e-01 9.1835419893454784e-01 9.0672996686658891e-01 8.9524853591645837e-01 8.8390816804849592e-01 8.7270714614088618e-01 8.6164377373764367e-01 8.5071637480329088e-01 8.3992329348066619e-01 8.2926289385125074e-01 8.1873355969859674e-01 8.0833369427423207e-01 7.9806172006654919e-01 7.8791607857216661e-01 7.7789523007009365e-01 7.6799765339850623e-01 7.5822184573410212e-01 7.4856632237407794e-01 7.3902961652057897e-01 7.2961027906773879e-01 7.2030687839120233e-01 7.1111800014000437e-01 7.0204224703107343e-01 6.9307823864600593e-01 6.8422461123017442e-01 6.7548001749432984e-01 6.6684312641843491e-01 6.5831262305778537e-01 6.4988720835149039e-01 6.4156559893307374e-01 6.3334652694340576e-01 6.2522873984571348e-01 6.1721100024293207e-01 6.0929208569699966e-01 6.0147078855038671e-01 5.9374591574974644e-01 5.8611628867150145e-01 5.7858074294964013e-01 5.7113812830543509e-01 5.6378730837917601e-01 5.5652716056388485e-01 5.4935657584100994e-01 5.4227445861801371e-01 5.3527972656789657e-01 5.2837131047058605e-01 5.2154815405625499e-01 5.1480921385035572e-01 5.0815345902059406e-01 5.0157987122570802e-01 4.9508744446591635e-01 4.8867518493523221e-01 4.8234211087549284e-01 4.7608725243208916e-01 4.6990965151138830e-01 4.6380836163990580e-01 4.5778244782503386e-01 4.5183098641748920e-01 4.4595306497538445e-01 4.4014778212983252e-01 4.3441424745224566e-01 4.2875158132308577e-01 4.2315891480226497e-01 4.1763538950099743e-01 4.1218015745523218e-01 4.0679238100053006e-01 4.0147123264845597e-01 3.9621589496439391e-01 3.9102556044685599e-01 3.8589943140818761e-01 3.8083671985667955e-01 3.7583664738007094e-01 3.7089844503050351e-01 3.6602135321072637e-01 3.6120462156172017e-01 3.5644750885162857e-01 3.5174928286603446e-01 3.4710922029949565e-01 3.4252660664837542e-01 3.3800073610498238e-01 3.3353091145289682e-01 3.2911644396363116e-01 3.2475665329440773e-01 3.2045086738724038e-01 3.1619842236917250e-01 3.1199866245370167e-01 3.0785093984338019e-01 3.0375461463356856e-01 2.9970905471733467e-01 2.9571363569149867e-01 2.9176774076376510e-01 2.8787076066095274e-01 2.8402209353838614e-01 2.8022114489027139e-01 2.7646732746120151e-01 2.7276006115868867e-01 2.6909877296673734e-01 2.6548289686045123e-01 2.6191187372168301e-01 2.5838515125562722e-01 2.5490218390845421e-01 2.5146243278591562e-01 2.4806536557292702e-01 2.4471045645407763e-01 2.4139718603512783e-01 2.3812504126539480e-01 2.3489351536114356e-01 2.3170210772977384e-01 2.2855032389502927e-01 2.2543767542303872e-01 2.2236367984922101e-01 2.1932786060613019e-01 2.1632974695208329e-01 2.1336887390071446e-01 2.1044478215129825e-01 2.0755701801999038e-01 2.0470513337177820e-01 2.0188868555338146e-01 1.9910723732680591e-01 1.9636035680383923e-01 1.9364761738119540e-01 1.9096859767654717e-01 1.8832288146523624e-01 1.8571005761779968e-01 1.8312972003822381e-01 1.8058146760290850e-01 1.7806490410043718e-01 1.7557963817196587e-01 1.7312528325242749e-01 1.7070145751236865e-01 1.6830778380049871e-01 1.6594388958697337e-01 1.6360940690727244e-01 1.6130397230684856e-01 1.5902722678634262e-01 1.5677881574755137e-01 1.5455838893995200e-01 1.5236560040793634e-01 1.5020010843864373e-01 1.4806157551044308e-01 1.4594966824199407e-01 1.4386405734196117e-01 1.4180441755932893e-01 1.3977042763426883e-01 1.3776177024965452e-01 1.3577813198311262e-01 1.3381920325970409e-01 1.3188467830508266e-01 1.2997425509933525e-01 1.2808763533126566e-01 1.2622452435332576e-01 1.2438463113698628e-01 1.2256766822875420e-01 1.2077335170661474e-01 1.1900140113708968e-01 1.1725153953273537e-01 1.1552349331020029e-01 1.1381699224878616e-01 1.1213176944947190e-01 1.1046756129447299e-01 1.0882410740725135e-01 1.0720115061304991e-01 1.0559843689985637e-01 1.0401571537986953e-01 1.0245273825141155e-01 1.0090926076132156e-01 9.9385041167768140e-02 9.7879840703551491e-02 9.6393423539806733e-02 9.4925556750188100e-02 9.3476010275438615e-02 9.2044556888424722e-02 9.0630972159587486e-02 8.9235034422777471e-02 8.7856524741557696e-02 8.6495226875854758e-02 8.5150927249066477e-02 8.3823414915518146e-02 8.2512481528355774e-02 8.1217921307793262e-02 7.9939531009756593e-02 7.8677109894921493e-02 7.7430459698090370e-02 7.6199384597978259e-02 7.4983691187329615e-02 7.3783188443430792e-02 7.2597687698950253e-02 7.1427002613137169e-02 7.0270949143383721e-02 6.9129345517125795e-02 6.8002012204063433e-02 6.6888771888750753e-02 6.5789449443483417e-02 6.4703871901554688e-02 6.3631868430787719e-02 6.2573270307431539e-02 6.1527910890343041e-02 6.0495625595505587e-02 5.9476251870829167e-02 5.8469629171288062e-02 5.7475598934329408e-02 5.6494004555598387e-02 5.5524691364960077e-02 5.4567506602792193e-02 5.3622299396587358e-02 5.2688920737826273e-02 5.1767223459139533e-02 5.0857062211734139e-02 4.9958293443112645e-02 4.9070775375038789e-02 4.8194367981803321e-02 4.7328932968710991e-02 4.6474333750875729e-02 4.5630435432230332e-02 4.4797104784824349e-02 4.3974210228351573e-02 4.3161621809939543e-02 4.2359211184176626e-02 4.1566851593383136e-02 4.0784417848134691e-02 4.0011786307996289e-02 3.9248834862517734e-02 3.8495442912441780e-02 3.7751491351154076e-02 3.7016862546342733e-02 3.6291440321904345e-02 3.5575109940037652e-02 3.4867758083595213e-02 3.4169272838608267e-02 3.3479543677062740e-02 3.2798461439850213e-02 3.2125918319956703e-02 3.1461807845833745e-02 3.0806024864983739e-02 3.0158465527744482e-02 2.9519027271263543e-02 2.8887608803682241e-02 2.8264110088490835e-02 2.7648432329102635e-02 2.7040477953584219e-02 2.6440150599604584e-02 2.5847355099535729e-02 2.5261997465764630e-02 2.4683984876160858e-02 2.4113225659734727e-02 2.3549629282465290e-02 2.2993106333307090e-02 2.2443568510356116e-02 2.1900928607195835e-02 2.1365100499407763e-02 2.0835999131238570e-02 2.0313540502443939e-02 1.9797641655275866e-02 1.9288220661649591e-02 1.8785196610443311e-02 1.8288489594979307e-02 1.7798020700630746e-02 1.7313711992604564e-02 1.6835486503854691e-02 1.6363268223159144e-02 1.5896982083323241e-02 1.5436553949552678e-02 1.4981910607941629e-02 1.4532979754120490e-02 1.4089689982039300e-02 1.3651970772878608e-02 1.3219752484108893e-02 1.2792966338673439e-02 1.2371544414313762e-02 1.1955419633011832e-02 1.1544525750577739e-02 1.1138797346350149e-02 1.0738169813035103e-02 1.0342579346658276e-02 9.9519629366497941e-03 9.5662583560424119e-03 9.1854041517979157e-03 8.8093396352418862e-03 8.4380048726288015e-03 8.0713406758079476e-03 7.7092885930126753e-03 7.3517908997683401e-03 6.9987905898953873e-03 6.6502313666337853e-03 6.3060576338778151e-03 5.9662144875094469e-03 5.6306477068467364e-03 5.2993037461942505e-03 4.9721297264926356e-03 4.6490734270783207e-03 4.3300832775373665e-03 4.0151083496663409e-03 3.7040983495217894e-03 3.3970036095808398e-03 3.0937750809827413e-03 2.7943643258805384e-03 2.4987235098741234e-03 2.2068053945462074e-03 1.9185633300798921e-03 1.6339512479797147e-03 1.3529236538666334e-03 1.0754356203770410e-03 8.0144278013627446e-04 5.3090131882682634e-04 2.6376796833782468e-04 0. 0. 0. 0. 0. 0. -3.9648238684865801e-06 -3.9647379584246923e-06 -3.9628213744895963e-06 -3.9467037431234605e-06 -3.8669955682309838e-06 -3.5838112852706622e-06 -2.7802960750788119e-06 -8.4219761569586434e-07 3.2926772002249687e-06 1.1307382478067452e-05 2.5690720406621164e-05 4.9922293853264408e-05 8.8645703309235546e-05 1.4781862131741774e-04 2.3482997173037562e-04 3.5857643823965571e-04 5.2949280763813292e-04 7.5953302911151849e-04 1.0621011875219313e-03 1.4519337282253714e-03 1.9449361497403880e-03 2.5579789454755197e-03 3.3086587999045514e-03 4.2150319227431399e-03 5.2953269484396770e-03 6.5676450618533944e-03 8.0496549673465534e-03 9.7582900360645985e-03 1.1709454486124704e-02 1.3917744814340938e-02 1.6396191946403960e-02 1.9156028742952969e-02 2.2206486626139221e-02 2.5554624205531451e-02 2.9205189909676799e-02 3.3160519792081455e-02 3.7420470895219271e-02 4.1982389836949574e-02 4.6841115639814745e-02 5.1989015261616922e-02 5.7416049808337366e-02 6.3109869018822096e-02 6.9055931302814066e-02 7.5237646386900447e-02 8.1636537471760473e-02 8.8232419723046629e-02 9.5003591900837847e-02 1.0192703797172165e-01 1.0897863563601806e-01 1.1613336883305392e-01 1.2336554145279433e-01 1.3064898967530336e-01 1.3795729057407335e-01 1.4526396484941184e-01 1.5254267179758951e-01 1.5976739486619884e-01 1.6691261639058208e-01 1.7395348034786196e-01 1.8086594219887786e-01 1.8762690511328639e-01 1.9421434208549382e-01 2.0060740364800100e-01 2.0678651107248047e-01 2.1273343511662279e-01 2.1843136052589074e-01 2.2386493663365137e-01 2.2902031452042859e-01 2.3388517129408726e-01 2.3844872213752044e-01 2.4270172083993913e-01 2.4663644958254860e-01 2.5024669879062600e-01 2.5352773789253646e-01 2.5647627784258198e-01 2.5909042627096035e-01 2.6136963612034414e-01 2.6331464861675080e-01 2.6492743140259734e-01 2.6621111263431629e-01 2.6716991181501903e-01 2.6780906809717919e-01 2.6813476675048165e-01 2.6815406444749179e-01 2.6787481397543011e-01 2.6730558893605583e-01 2.6645560894936793e-01 2.6533466582915999e-01 2.6395305115245549e-01 2.6232148559814661e-01 2.6045105038573091e-01 2.5835312110106301e-01 2.5603930415458720e-01 2.5352137607692704e-01 2.5081122581937443e-01 2.4792080019090168e-01 2.4486205252950111e-01 2.4164689467539890e-01 2.3828715228427200e-01 2.3479452349277974e-01 2.3118054092475315e-01 2.2745653700480872e-01 2.2363361252690162e-01 2.1972260840846225e-01 2.1573408054555276e-01 2.1167827767206404e-01 2.0756512211437439e-01 2.0340419332460602e-01 1.9920471406724971e-01 1.9497553912901999e-01 1.9072514641659932e-01 1.8646163030462937e-01 1.8219269709400621e-01 1.7792566244018726e-01 1.7366745061154099e-01 1.6942459543887090e-01 1.6520324281963816e-01 1.6100915464284249e-01 1.5684771400427255e-01 1.5272393158544428e-01 1.4864245307413970e-01 1.4460756750921444e-01 1.4062321643707509e-01 1.3669300377304516e-01 1.3282020626560875e-01 1.2900778446772065e-01 1.2525839412448647e-01 1.2157439789251967e-01 1.1795787731163010e-01 1.1441064495527309e-01 1.1093425669153945e-01 1.0753002399184552e-01 1.0419902622979293e-01 1.0094212291761373e-01 9.7759965832612039e-02 9.4653010990620956e-02 9.1621530428073861e-02 8.8665623758583667e-02 8.5785229473909652e-02 8.2980135963188761e-02 8.0249992227829470e-02 7.7594318273021212e-02 7.5012515159829540e-02 7.2503874705091231e-02 7.0067588818818471e-02 6.7702758471654079e-02 6.5408402287066458e-02 6.3183464755318219e-02 6.1026824068104446e-02 5.8937299574615798e-02 5.6913658861432515e-02 5.4954624460036072e-02 5.3058880187135005e-02 5.1225077124064100e-02 4.9451839242618867e-02 4.7737768685490067e-02 4.6081450710315774e-02 4.4481458306923960e-02 4.2936356497934813e-02 4.1444706333338299e-02 4.0005068589950232e-02 3.8616007186985657e-02 3.7276092329113775e-02 3.5983903388508764e-02 3.4738031537461467e-02 3.3537082143044072e-02 3.2379676935394341e-02 3.1264455960905213e-02 3.0190079331599784e-02 2.9155228781700626e-02 2.8158609042236105e-02 2.7198949044218823e-02 2.6275002960732485e-02 2.5385551097897086e-02 2.4529400644468402e-02 2.3705386289384900e-02 2.2912370716361652e-02 2.2149244984220884e-02 2.1414928801316790e-02 2.0708370702084089e-02 2.0028548133355972e-02 1.9374467457788813e-02 1.8745163881344395e-02 1.8139701311457701e-02 1.7557172152180667e-02 1.6996697042253484e-02 1.6457424541724941e-02 1.5938530772423354e-02 1.5439219017299555e-02 1.4958719283310606e-02 1.4496287832256260e-02 1.4051206683705519e-02 1.3622783093843127e-02 1.3210349013833056e-02 1.2813260531043369e-02 1.2430897296217491e-02 1.2062661939473140e-02 1.1707979477758812e-02 1.1366296716230184e-02 1.1037081645763447e-02 1.0719822838679227e-02 1.0414028844531742e-02 1.0119227587681079e-02 9.8349657681883751e-03 9.5608082674313311e-03 9.2963375596950559e-03 9.0411531308550175e-03 8.7948709051597906e-03 8.5571226809857404e-03 8.3275555763442921e-03 8.1058314848086455e-03 7.8916265424464060e-03 7.6846306062413605e-03 7.4845467444241143e-03 7.2910907390426050e-03 7.1039906010419707e-03 6.9229860980661584e-03 6.7478282951155544e-03 6.5782791081698544e-03 6.4141108708119787e-03 6.2551059138641618e-03 6.1010561579909195e-03 5.9517627192071654e-03 5.8070355271753749e-03 5.6666929561701718e-03 5.5305614685408344e-03 5.3984752704999139e-03 5.2702759800296040e-03 5.1458123066918660e-03 5.0249397431101073e-03 4.9075202678708352e-03 4.7934220595943211e-03 4.6825192219082379e-03 4.5746915190486293e-03 4.4698241218146806e-03 4.3678073635918802e-03 4.2685365061615743e-03 4.1719115150071207e-03 4.0778368438337265e-03 3.9862212280138976e-03 3.8969774866705609e-03 3.8100223331219985e-03 3.7252761933992129e-03 3.6426630325680220e-03 3.5621101885756068e-03 3.4835482133581258e-03 3.4069107209438593e-03 3.3321342422940048e-03 3.2591580866271896e-03 3.1879242089835474e-03 3.1183770837836661e-03 3.0504635841505645e-03 2.9841328667638833e-03 2.9193362620252433e-03 2.8560271693185979e-03 2.7941609571553727e-03 2.7336948680027617e-03 2.6745879275973244e-03 2.6168008585546049e-03 2.5602959980906281e-03 2.5050372196779025e-03 2.4509898584648832e-03 2.3981206402930583e-03 2.3463976141530341e-03 2.2957900879271853e-03 2.2462685672689497e-03 2.1978046974800575e-03 2.1503712082465293e-03 2.1039418611046024e-03 2.0584913995096016e-03 2.0139955013874500e-03 1.9704307340533550e-03 1.9277745113862321e-03 1.8860050531527214e-03 1.8451013463796004e-03 1.8050431086757621e-03 1.7658107534117631e-03 1.7273853566669717e-03 1.6897486258593344e-03 1.6528828699756068e-03 1.6167709713248088e-03 1.5813963587400434e-03 1.5467429821572412e-03 1.5127952885036697e-03 1.4795381988309333e-03 1.4469570866303127e-03 1.4150377572722111e-03 1.3837664285128795e-03 1.3531297120151151e-03 1.3231145958318286e-03 1.2937084278030683e-03 1.2648988998213845e-03 1.2366740329201806e-03 1.2090221631435791e-03 1.1819319281576313e-03 1.1553922545643608e-03 1.1293923458830929e-03 1.1039216711636532e-03 1.0789699541992048e-03 1.0545271633073811e-03 1.0305835016493139e-03 1.0071293980598306e-03 9.8415549835969424e-04 9.6165265712688103e-04 9.3961192990005618e-04 9.1802456579386654e-04 8.9688200050116323e-04 8.7617584966451570e-04 8.5589790259397308e-04 8.3604011631561656e-04 8.1659460992970084e-04 7.9755365926454519e-04 7.7890969180804612e-04 7.6065528190175785e-04 7.4278314618478683e-04 7.2528613927106897e-04 7.0815724964966645e-04 6.9138959579336315e-04 6.7497642246599002e-04 6.5891109721573707e-04 6.4318710704439411e-04 6.2779805524357593e-04 6.1273765838630243e-04 5.9799974346742141e-04 5.8357824518249710e-04 5.6946720333813164e-04 5.5566076038550405e-04 5.4215315907093706e-04 5.2893874019495010e-04 5.1601194047556226e-04 5.0336729050731374e-04 4.9099941281269613e-04 4.7890301997820760e-04 4.6707291287201823e-04 4.5550397893638281e-04 4.4419119055210364e-04 4.3312960346890764e-04 4.2231435529930562e-04 4.1174066407052325e-04 4.0140382683225874e-04 3.9129921831561852e-04 3.8142228964106219e-04 3.7176856707126643e-04 3.6233365080714369e-04 3.5311321382303952e-04 3.4410300074003836e-04 3.3529882673348846e-04 3.2669657647382659e-04 3.1829220309746720e-04 3.1008172720682972e-04 3.0206123589660537e-04 2.9422688180553644e-04 2.8657488219117726e-04 2.7910151802692032e-04 2.7180313311903591e-04 2.6467613324337308e-04 2.5771698529936972e-04 2.5092221648138381e-04 2.4428841346509078e-04 2.3781222160909783e-04 2.3149034416975432e-04 2.2531954152932993e-04 2.1929663043573910e-04 2.1341848325407385e-04 2.0768202722833053e-04 2.0208424375349737e-04 1.9662216765670235e-04 1.9129288648763332e-04 1.8609353981691688e-04 1.8102131854280147e-04 1.7607346420509158e-04 1.7124726830643981e-04 1.6654007164013281e-04 1.6194926362479885e-04 1.5747228164487721e-04 1.5310661039735773e-04 1.4884978124416175e-04 1.4469937156988671e-04 1.4065300414520775e-04 1.3670834649513481e-04 1.3286311027261265e-04 1.2911505063676991e-04 1.2546196563624316e-04 1.2190169559701987e-04 1.1843212251511082e-04 1.1505116945364222e-04 1.1175679994469313e-04 1.0854701739540810e-04 1.0541986449882348e-04 1.0237342264892693e-04 9.9405811360358132e-05 9.6515187692370902e-05 9.3699745677400074e-05 9.0957715753944412e-05 8.8287364204016165e-05 8.5686992595021983e-05 8.3154937226130685e-05 8.0689568579240655e-05 7.8289290774479197e-05 7.5952541030245135e-05 7.3677789127971592e-05 7.1463536881511379e-05 6.9308317611135005e-05 6.7210695622487836e-05 6.5169265690054930e-05 6.3182652545669578e-05 6.1249510371733790e-05 5.9368522299412668e-05 5.7538399911702919e-05 5.5757882751529672e-05 5.4025737834792475e-05 5.2340759168498360e-05 5.0701767273936662e-05 4.9107608714990146e-05 4.7557155631555758e-05 4.6049305278167809e-05 4.4582979567776111e-05 4.3157124620795718e-05 4.1770710319351517e-05 4.0422729866826726e-05 3.9112199352681499e-05 3.7838157322578683e-05 3.6599664353829334e-05 3.5395802636168814e-05 3.4225675557885814e-05 3.3088407297285436e-05 3.1983142419520589e-05 3.0909045478793879e-05 2.9865300625895935e-05 2.8851111221144367e-05 2.7865699452646157e-05 2.6908305959935305e-05 2.5978189462957544e-05 2.5074626396383586e-05 2.4196910549263251e-05 2.3344352709974737e-05 2.2516280316490600e-05 2.1712037111907092e-05 2.0930982805247291e-05 2.0172492737486822e-05 1.9435957552817900e-05 1.8720782875073102e-05 1.8026388989343211e-05 1.7352210528701778e-05 1.6697696166057181e-05 1.6062308311053184e-05 1.5445522812031513e-05 1.4846828662973418e-05 1.4265727715439625e-05 1.3701734395386378e-05 1.3154375424950706e-05 1.2623189548993381e-05 1.2107727266537382e-05 1.1607550566894442e-05 1.1122232670585292e-05 1.0651357774867272e-05 1.0194520803960007e-05 9.7513271637940575e-06 9.3213925013519642e-06 8.9043424684557833e-06 8.4998124900184896e-06 8.1074475366826621e-06 7.7269019017899053e-06 7.3578389826527103e-06 6.9999310660550837e-06 6.6528591179447027e-06 6.3163125772558795e-06 5.9899891538183966e-06 5.6735946302881356e-06 5.3668426680612271e-06 5.0694546171018459e-06 4.7811593296462449e-06 4.5016929777116346e-06 4.2307988743741287e-06 3.9682272987463124e-06 3.7137353246110118e-06 3.4670866526486516e-06 3.2280514462130431e-06 2.9964061705913111e-06 2.7719334357045357e-06 2.5544218421855755e-06 2.3436658307887529e-06 2.1394655350692488e-06 1.9416266372896795e-06 1.7499602274870685e-06 1.5642826656651399e-06 1.3844154470325960e-06 1.2101850702750470e-06 1.0414229087590029e-06 8.7796508466752112e-07 7.1965234596822335e-07 5.6632994620788219e-07 4.1784752704301887e-07 2.7405900348531609e-07 1.3482245179844733e-07 0. 0. 0. 0. 0. """ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eam_pot_test.py000066400000000000000000000010731316323560300245540ustar00rootroot00000000000000 import numpy as np from ase.calculators.eam import EAM from ase.test.eam_pot import Pt_u3 from ase.build import fcc111 import os # test to read EAM potential from *.eam file (aka funcfl format) - for one element pot_fn = 'Pt_u3.eam' f = open(pot_fn,'w') f.write(Pt_u3) f.close() eam = EAM(potential='Pt_u3.eam', elements=['Pt']) slab = fcc111('Pt', size=(4, 4, 2), vacuum=10.0) slab.set_calculator(eam) assert( abs(-164.277599313 - slab.get_potential_energy()) < 1E-8 ) assert( abs(6.36379627645 - np.linalg.norm(slab.get_forces())) < 1E-8 ) os.remove(pot_fn) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eam_test.py000066400000000000000000000060571316323560300237010ustar00rootroot00000000000000import numpy as np from ase.calculators.eam import EAM from ase.build import bulk # test to generate an EAM potential file using a simplified # approximation to the Mishin potential Al99.eam.alloy data from scipy.interpolate import InterpolatedUnivariateSpline as spline cutoff = 6.28721 n = 21 rs = np.arange(0, n) * (cutoff / n) rhos = np.arange(0, 2, 2. / n) # generated from # mishin = EAM(potential='../potentials/Al99.eam.alloy') # m_density = mishin.electron_density[0](rs) # m_embedded = mishin.embedded_energy[0](rhos) # m_phi = mishin.phi[0,0](rs) m_density = np.array([2.78589606e-01, 2.02694937e-01, 1.45334053e-01, 1.06069912e-01, 8.42517168e-02, 7.65140344e-02, 7.76263116e-02, 8.23214224e-02, 8.53322309e-02, 8.13915861e-02, 6.59095390e-02, 4.28915711e-02, 2.27910928e-02, 1.13713167e-02, 6.05020311e-03, 3.65836583e-03, 2.60587564e-03, 2.06750708e-03, 1.48749693e-03, 7.40019174e-04, 6.21225205e-05]) m_embedded = np.array([1.04222211e-10, -1.04142633e+00, -1.60359806e+00, -1.89287637e+00, -2.09490167e+00, -2.26456628e+00, -2.40590322e+00, -2.52245359e+00, -2.61385603e+00, -2.67744693e+00, -2.71053295e+00, -2.71110418e+00, -2.69287013e+00, -2.68464527e+00, -2.69204083e+00, -2.68976209e+00, -2.66001244e+00, -2.60122024e+00, -2.51338548e+00, -2.39650817e+00, -2.25058831e+00]) m_phi = np.array([6.27032242e+01, 3.49638589e+01, 1.79007014e+01, 8.69001383e+00, 4.51545250e+00, 2.83260884e+00, 1.93216616e+00, 1.06795515e+00, 3.37740836e-01, 1.61087890e-02, -6.20816372e-02, -6.51314297e-02, -5.35210341e-02, -5.20950200e-02, -5.51709524e-02, -4.89093894e-02, -3.28051688e-02, -1.13738785e-02, 2.33833655e-03, 4.19132033e-03, 1.68600692e-04]) m_densityf = spline(rs, m_density) m_embeddedf = spline(rhos, m_embedded) m_phif = spline(rs, m_phi) a = 4.05 # Angstrom lattice spacing al = bulk('Al', 'fcc', a=a) mishin_approx = EAM(elements=['Al'], embedded_energy=np.array([m_embeddedf]), electron_density=np.array([m_densityf]), phi=np.array([[m_phif]]), cutoff=cutoff, form='alloy', # the following terms are only required to write out a file Z=[13], nr=n, nrho=n, dr=cutoff / n, drho=2. / n, lattice=['fcc'], mass=[26.982], a=[a]) al.set_calculator(mishin_approx) mishin_approx_energy = al.get_potential_energy() mishin_approx.write_potential('Al99-test.eam.alloy') mishin_check = EAM(potential='Al99-test.eam.alloy') al.set_calculator(mishin_check) mishin_check_energy = al.get_potential_energy() print('Cohesive Energy for Al = ', mishin_approx_energy, ' eV') error = (mishin_approx_energy - mishin_check_energy) / mishin_approx_energy print('read/write check error = ', error) assert abs(error) < 1e-4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/elk/000077500000000000000000000000001316323560300222715ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/elk/Al_rmt.py000066400000000000000000000043731316323560300240700ustar00rootroot00000000000000import os from ase.test import NotAvailable from ase.build import bulk from ase.calculators.calculator import kpts2mp from ase.calculators.elk import ELK atoms = bulk('Al', 'bcc', a=4.0) # save ELK_SPECIES_PATH ELK_SPECIES_PATH = os.environ.get('ELK_SPECIES_PATH', None) if ELK_SPECIES_PATH is None: raise NotAvailable('ELK_SPECIES_PATH not set.') # find rmt of the default species sfile = os.path.join(os.environ['ELK_SPECIES_PATH'], 'elk.in') assert os.path.exists(sfile) slines = open(sfile, 'r').readlines() rmt_orig = {} for name in ['Al']: found = False for n, line in enumerate(slines): if line.find("'" + name + "'") > -1: begline = n - 1 for n, line in enumerate(slines[begline:]): if not line.strip(): # first empty line endline = n found = True break assert found # split needed because H is defined with comments rmt_orig[name] = float(slines[begline + 3].split()[0].strip()) assert rmt_orig['Al'] == 2.2 # 2.2 Bohr default # test1 # generate species with custom rmt 2.1 rmt = {'Al': 2.1} label = 'rmt2.1' atomsrmt = atoms.copy() os.environ['ELK_SPECIES_PATH'] = ELK_SPECIES_PATH atomsrmt.calc = ELK(tasks=0, label=label, rmt=rmt) # minimal calc atomsrmt.get_potential_energy() del atomsrmt.calc del atomsrmt # hack ELK_SPECIES_PATH to use custom species os.environ['ELK_SPECIES_PATH'] = os.path.abspath(label) + '/' # run calculation calc = ELK(tasks=0, label=label, rgkmax=4.0, kpts=tuple(kpts2mp(atoms, 2.0, even=True))) atoms.set_calculator(calc) e1 = atoms.get_potential_energy() # test2 # generate species with custom rmt 2.1 rmt = {'Al': -0.1} label = 'rmt0.1m' atomsrmt = atoms.copy() os.environ['ELK_SPECIES_PATH'] = ELK_SPECIES_PATH atomsrmt.calc = ELK(tasks=0, label=label, rmt=rmt) # minimal calc atomsrmt.get_potential_energy() del atomsrmt.calc del atomsrmt # hack ELK_SPECIES_PATH to use custom species os.environ['ELK_SPECIES_PATH'] = os.path.abspath(label) + '/' # run calculation calc = ELK(tasks=0, label=label, rgkmax=4.0, kpts=tuple(kpts2mp(atoms, 2.0, even=True))) atoms.set_calculator(calc) e2 = atoms.get_potential_energy() # restore ELK_SPECIES_PATH os.environ['ELK_SPECIES_PATH'] = ELK_SPECIES_PATH assert abs(e1 - e2) < 1.0e-4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/elk/__init__.py000066400000000000000000000000001316323560300243700ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/elk/elk_cmdline.py000066400000000000000000000003651316323560300251150ustar00rootroot00000000000000from ase.test import cli, require # warning! parameters are not converged - only an illustration! require('elk') cli("""ase build -x fcc -a 4.04 Al | \ ase run elk -p \ "tasks=0,kpts=1.5,rgkmax=5.0,tforce=True,smearing=(fermi-dirac,0.05)" """) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/emt.py000066400000000000000000000030621316323560300226560ustar00rootroot00000000000000import numpy as np from ase.calculators.emt import EMT from ase import Atoms a = 3.60 b = a / 2 cu = Atoms('Cu', positions=[(0, 0, 0)], cell=[(0, b, b), (b, 0, b), (b, b, 0)], pbc=1, calculator=EMT()) e0 = cu.get_potential_energy() print(e0) cu.set_cell(cu.get_cell() * 1.001, scale_atoms=True) e1 = cu.get_potential_energy() V = a**3 / 4 B = 2 * (e1 - e0) / 0.003**2 / V * 160.2 print(B) for i in range(4): x = 0.001 * i A = np.array([(x, b, b+x), (b, 0, b), (b, b, 0)]) cu.set_cell(A, scale_atoms=True) e = cu.get_potential_energy() - e0 if i == 0: print(i, e) else: print(i, e, e / x**2) A = np.array([(0, b, b), (b, 0, b), (6*b, 6*b, 0)]) R = np.zeros((2, 3)) for i in range(1, 2): R[i] = i * A[2] / 6 print((Atoms('Cu2', positions=R, pbc=1, cell=A, calculator=EMT()).get_potential_energy() - 2 * e0) / 2) A = np.array([(0, b, b), (b, 0, b), (10*b, 10*b, 0)]) R = np.zeros((3, 3)) for i in range(1, 3): R[i] = i * A[2] / 10 print((Atoms('Cu3', positions=R, pbc=1, cell=A, calculator=EMT()).get_potential_energy() - 3 * e0) / 2) A = np.array([(0, b, b), (b, 0, b), (b, b, 0)]) R = np.zeros((3, 3)) for i in range(1, 3): R[i] = i * A[2] print((Atoms('Cu3', positions=R, pbc=(1, 1, 0), cell=A, calculator=EMT()).get_potential_energy() - 3 * e0) / 2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/emt1.py000066400000000000000000000011561316323560300227410ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.constraints import FixBondLength from ase.io import Trajectory from ase.optimize import BFGS a = 3.6 b = a / 2 cu = Atoms('Cu2Ag', positions=[(0, 0, 0), (b, b, 0), (a, a, b)], calculator=EMT()) e0 = cu.get_potential_energy() print(e0) d0 = cu.get_distance(0, 1) cu.set_constraint(FixBondLength(0, 1)) t = Trajectory('cu2ag.traj', 'w', cu) qn = BFGS(cu) qn.attach(t.write) def f(): print(cu.get_distance(0,1)) qn.attach(f) qn.run(fmax=0.01) assert abs(cu.get_distance(0, 1) - d0) < 1e-14 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/emt2.py000066400000000000000000000005701316323560300227410ustar00rootroot00000000000000from ase.calculators.emt import EMT from ase import Atoms from ase.build import molecule a1 = Atoms('Au', calculator=EMT()) e1 = a1.get_potential_energy() a2 = molecule('C6H6', calculator=EMT()) e2 = a2.get_potential_energy() a1.translate((0, 0, 50)) a3 = a1 + a2 a3.calc = EMT() e3 = a3.get_potential_energy() print(e1, e2, e3, e3 - e1 - e2) assert abs(e3 - e1 - e2) < 1e-13 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/emt_h3o2m.py000066400000000000000000000040701316323560300236660ustar00rootroot00000000000000from math import radians, sin, cos from ase import Atoms from ase.neb import NEB from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton, BFGS from ase.visualize import view # http://jcp.aip.org/resource/1/jcpsa6/v97/i10/p7507_s1 doo = 2.74 doht = 0.957 doh = 0.977 angle = radians(104.5) initial = Atoms('HOHOH', positions=[(-sin(angle) * doht, 0., cos(angle) * doht), (0., 0., 0.), (0., 0., doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(initial) final = Atoms('HOHOH', positions=[(-sin(angle) * doht, 0., cos(angle) * doht), (0., 0., 0.), (0., 0., doo - doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(final) # Make band: images = [initial.copy()] for i in range(3): images.append(initial.copy()) images.append(final.copy()) neb = NEB(images, climb=True) # Set constraints and calculator: constraint = FixAtoms(indices=[1, 3]) # fix OO for image in images: image.set_calculator(EMT()) image.set_constraint(constraint) for image in images: # O-H(shared) distance print(image.get_distance(1, 2), image.get_potential_energy()) # Relax initial and final states: if 1: # XXX: Warning: # One would have to optimize more tightly in order to get # symmetric anion from both images[0] and [1], but # if one optimizes tightly one gets rotated(H2O) ... OH- instead dyn1 = QuasiNewton(images[0]) dyn1.run(fmax=0.01) dyn2 = QuasiNewton(images[-1]) dyn2.run(fmax=0.01) # Interpolate positions between initial and final states: neb.interpolate() for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) dyn = BFGS(neb, trajectory='emt_h3o2m.traj') dyn.run(fmax=0.05) for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eon/000077500000000000000000000000001316323560300222775ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eon/__init__.py000066400000000000000000000000001316323560300243760ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eon/eon_masses.py000066400000000000000000000016771316323560300250200ustar00rootroot00000000000000"""Check that reading and writing masses in .con files is consistent.""" import tempfile import os import shutil from numpy import asarray import ase.lattice.compounds import ase.data import ase.io # Error tolerance. TOL = 1e-8 data = ase.lattice.compounds.B2(['Cs', 'Cl'], latticeconstant=4.123, size=(3, 3, 3)) m_Cs = ase.data.atomic_masses[ase.data.atomic_numbers['Cs']] m_Cl = ase.data.atomic_masses[ase.data.atomic_numbers['Cl']] tempdir = tempfile.mkdtemp() try: con_file = os.path.join(tempdir, 'pos.con') # Write and read the .con file. ase.io.write(con_file, data, format='eon') data2 = ase.io.read(con_file, format='eon') # Check masses. symbols = asarray(data2.get_chemical_symbols()) masses = asarray(data2.get_masses()) assert (abs(masses[symbols == 'Cs'] - m_Cs)).sum() < TOL assert (abs(masses[symbols == 'Cl'] - m_Cl)).sum() < TOL finally: shutil.rmtree(tempdir) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eon/eon_readwrite.py000066400000000000000000000317111316323560300255030ustar00rootroot00000000000000"""Check that reading and writing .con files is consistent.""" import tempfile import os import shutil from numpy import array import ase import ase.io # Error tolerance. TOL = 1e-6 # A correct .con file. CON_FILE = """\ 10000 RANDOM NUMBER SEED 0.0000 TIME 7.2200000000 10.8760700623 14.5090868079 84.7244899634 86.0479084995 85.7006486298 0 0 0 0 0 1 96 1.0 Cu Coordinates of Component 1 1.04833333333334 0.96500000000003 0.90250000000000 0 1 3.02000000000000 2.77000000000000 0.90250000000000 0 2 2.97833333333334 1.09000000000003 2.70750000000000 0 3 1.34000000000000 2.89500000000000 2.70750000000000 0 4 4.65833333333334 0.96500000000003 0.90250000000000 0 5 6.63000000000000 2.77000000000000 0.90250000000000 0 6 6.58833333333334 1.09000000000003 2.70750000000000 0 7 4.95000000000000 2.89500000000000 2.70750000000000 0 8 1.38166666666666 4.57499999999997 0.90250000000000 0 9 3.35333333333334 6.38000000000003 0.90250000000000 0 10 3.31166666666666 4.69999999999997 2.70750000000000 0 11 1.67333333333334 6.50500000000003 2.70750000000000 0 12 4.99166666666666 4.57499999999997 0.90250000000000 0 13 6.96333333333334 6.38000000000003 0.90250000000000 0 14 6.92166666666666 4.69999999999997 2.70750000000000 0 15 5.28333333333334 6.50500000000003 2.70750000000000 0 16 1.71500000000000 8.18500000000000 0.90250000000000 0 17 3.68666666666666 9.98999999999997 0.90250000000000 0 18 3.64500000000000 8.31000000000000 2.70750000000000 0 19 2.00666666666666 10.11499999999997 2.70750000000000 0 20 5.32500000000000 8.18500000000000 0.90250000000000 0 21 7.29666666666666 9.98999999999997 0.90250000000000 0 22 7.25500000000000 8.31000000000000 2.70750000000000 0 23 5.61666666666666 10.11499999999997 2.70750000000000 0 24 1.29833333333334 1.21500000000003 4.51250000000000 0 25 3.27000000000000 3.02000000000000 4.51250000000000 0 26 3.22833333333334 1.34000000000003 6.31750000000000 0 27 1.59000000000000 3.14500000000000 6.31750000000000 0 28 4.90833333333334 1.21500000000003 4.51250000000000 0 29 6.88000000000000 3.02000000000000 4.51250000000000 0 30 6.83833333333334 1.34000000000003 6.31750000000000 0 31 5.20000000000000 3.14500000000000 6.31750000000000 0 32 1.63166666666666 4.82499999999997 4.51250000000000 0 33 3.60333333333334 6.63000000000003 4.51250000000000 0 34 3.56166666666666 4.94999999999997 6.31750000000000 0 35 1.92333333333334 6.75500000000003 6.31750000000000 0 36 5.24166666666666 4.82499999999997 4.51250000000000 0 37 7.21333333333334 6.63000000000003 4.51250000000000 0 38 7.17166666666666 4.94999999999997 6.31750000000000 0 39 5.53333333333334 6.75500000000003 6.31750000000000 0 40 1.96500000000000 8.43500000000000 4.51250000000000 0 41 3.93666666666666 10.23999999999997 4.51250000000000 0 42 3.89500000000000 8.56000000000000 6.31750000000000 0 43 2.25666666666666 10.36499999999997 6.31750000000000 0 44 5.57500000000000 8.43500000000000 4.51250000000000 0 45 7.54666666666666 10.23999999999997 4.51250000000000 0 46 7.50500000000000 8.56000000000000 6.31750000000000 0 47 5.86666666666666 10.36499999999997 6.31750000000000 0 48 1.54833333333334 1.46500000000003 8.12250000000000 0 49 3.52000000000000 3.27000000000000 8.12250000000000 0 50 3.47833333333334 1.59000000000003 9.92750000000000 0 51 1.84000000000000 3.39500000000000 9.92750000000000 0 52 5.15833333333334 1.46500000000003 8.12250000000000 0 53 7.13000000000000 3.27000000000000 8.12250000000000 0 54 7.08833333333334 1.59000000000003 9.92750000000000 0 55 5.45000000000000 3.39500000000000 9.92750000000000 0 56 1.88166666666666 5.07499999999997 8.12250000000000 0 57 3.85333333333334 6.88000000000003 8.12250000000000 0 58 3.81166666666666 5.19999999999997 9.92750000000000 0 59 2.17333333333334 7.00500000000003 9.92750000000000 0 60 5.49166666666666 5.07499999999997 8.12250000000000 0 61 7.46333333333334 6.88000000000003 8.12250000000000 0 62 7.42166666666666 5.19999999999997 9.92750000000000 0 63 5.78333333333334 7.00500000000003 9.92750000000000 0 64 2.21500000000000 8.68500000000000 8.12250000000000 0 65 4.18666666666666 10.48999999999997 8.12250000000000 0 66 4.14500000000000 8.81000000000000 9.92750000000000 0 67 2.50666666666666 10.61499999999997 9.92750000000000 0 68 5.82500000000000 8.68500000000000 8.12250000000000 0 69 7.79666666666666 10.48999999999997 8.12250000000000 0 70 7.75500000000000 8.81000000000000 9.92750000000000 0 71 6.11666666666666 10.61499999999997 9.92750000000000 0 72 1.79833333333334 1.71500000000003 11.73250000000000 0 73 3.77000000000000 3.52000000000000 11.73250000000000 0 74 3.72833333333334 1.84000000000003 13.53750000000000 0 75 2.09000000000000 3.64500000000000 13.53750000000000 0 76 5.40833333333334 1.71500000000003 11.73250000000000 0 77 7.38000000000000 3.52000000000000 11.73250000000000 0 78 7.33833333333334 1.84000000000003 13.53750000000000 0 79 5.70000000000000 3.64500000000000 13.53750000000000 0 80 2.13166666666666 5.32499999999997 11.73250000000000 0 81 4.10333333333334 7.13000000000003 11.73250000000000 0 82 4.06166666666666 5.44999999999997 13.53750000000000 0 83 2.42333333333334 7.25500000000003 13.53750000000000 0 84 5.74166666666666 5.32499999999997 11.73250000000000 0 85 7.71333333333334 7.13000000000003 11.73250000000000 0 86 7.67166666666666 5.44999999999997 13.53750000000000 0 87 6.03333333333334 7.25500000000003 13.53750000000000 0 88 2.46500000000000 8.93500000000000 11.73250000000000 0 89 4.43666666666666 10.73999999999997 11.73250000000000 0 90 4.39500000000000 9.06000000000000 13.53750000000000 0 91 2.75666666666666 10.86499999999997 13.53750000000000 0 92 6.07500000000000 8.93500000000000 11.73250000000000 0 93 8.04666666666666 10.73999999999997 11.73250000000000 0 94 8.00500000000000 9.06000000000000 13.53750000000000 0 95 6.36666666666666 10.86499999999997 13.53750000000000 0 96 """ # The corresponding data as an ASE Atoms object. data = ase.Atoms('Cu96', cell=array([[7.22, 0, 0], [1, 10.83, 0], [1, 1, 14.44]]), positions=array([[1.04833333, 0.965, 0.9025], [3.02, 2.77, 0.9025], [2.97833333, 1.09, 2.7075], [1.34, 2.895, 2.7075], [4.65833333, 0.965, 0.9025], [6.63, 2.77, 0.9025], [6.58833333, 1.09, 2.7075], [4.95, 2.895, 2.7075], [1.38166667, 4.575, 0.9025], [3.35333333, 6.38, 0.9025], [3.31166667, 4.7, 2.7075], [1.67333333, 6.505, 2.7075], [4.99166667, 4.575, 0.9025], [6.96333333, 6.38, 0.9025], [6.92166667, 4.7, 2.7075], [5.28333333, 6.505, 2.7075], [1.715, 8.185, 0.9025], [3.68666667, 9.99, 0.9025], [3.645, 8.31, 2.7075], [2.00666667, 10.115, 2.7075], [5.325, 8.185, 0.9025], [7.29666667, 9.99, 0.9025], [7.255, 8.31, 2.7075], [5.61666667, 10.115, 2.7075], [1.29833333, 1.215, 4.5125], [3.27, 3.02, 4.5125], [3.22833333, 1.34, 6.3175], [1.59, 3.145, 6.3175], [4.90833333, 1.215, 4.5125], [6.88, 3.02, 4.5125], [6.83833333, 1.34, 6.3175], [5.2, 3.145, 6.3175], [1.63166667, 4.825, 4.5125], [3.60333333, 6.63, 4.5125], [3.56166667, 4.95, 6.3175], [1.92333333, 6.755, 6.3175], [5.24166667, 4.825, 4.5125], [7.21333333, 6.63, 4.5125], [7.17166667, 4.95, 6.3175], [5.53333333, 6.755, 6.3175], [1.965, 8.435, 4.5125], [3.93666667, 10.24, 4.5125], [3.895, 8.56, 6.3175], [2.25666667, 10.365, 6.3175], [5.575, 8.435, 4.5125], [7.54666667, 10.24, 4.5125], [7.505, 8.56, 6.3175], [5.86666667, 10.365, 6.3175], [1.54833333, 1.465, 8.1225], [3.52, 3.27, 8.1225], [3.47833333, 1.59, 9.9275], [1.84, 3.395, 9.9275], [5.15833333, 1.465, 8.1225], [7.13, 3.27, 8.1225], [7.08833333, 1.59, 9.9275], [5.45, 3.395, 9.9275], [1.88166667, 5.075, 8.1225], [3.85333333, 6.88, 8.1225], [3.81166667, 5.2, 9.9275], [2.17333333, 7.005, 9.9275], [5.49166667, 5.075, 8.1225], [7.46333333, 6.88, 8.1225], [7.42166667, 5.2, 9.9275], [5.78333333, 7.005, 9.9275], [2.215, 8.685, 8.1225], [4.18666667, 10.49, 8.1225], [4.145, 8.81, 9.9275], [2.50666667, 10.615, 9.9275], [5.825, 8.685, 8.1225], [7.79666667, 10.49, 8.1225], [7.755, 8.81, 9.9275], [6.11666667, 10.615, 9.9275], [1.79833333, 1.715, 11.7325], [3.77, 3.52, 11.7325], [3.72833333, 1.84, 13.5375], [2.09, 3.645, 13.5375], [5.40833333, 1.715, 11.7325], [7.38, 3.52, 11.7325], [7.33833333, 1.84, 13.5375], [5.7, 3.645, 13.5375], [2.13166667, 5.325, 11.7325], [4.10333333, 7.13, 11.7325], [4.06166667, 5.45, 13.5375], [2.42333333, 7.255, 13.5375], [5.74166667, 5.325, 11.7325], [7.71333333, 7.13, 11.7325], [7.67166667, 5.45, 13.5375], [6.03333333, 7.255, 13.5375], [2.465, 8.935, 11.7325], [4.43666667, 10.74, 11.7325], [4.395, 9.06, 13.5375], [2.75666667, 10.865, 13.5375], [6.075, 8.935, 11.7325], [8.04666667, 10.74, 11.7325], [8.005, 9.06, 13.5375], [6.36666667, 10.865, 13.5375]]), pbc=(True, True, True)) tempdir = tempfile.mkdtemp() try: # First, write a correct .con file and try to read it. con_file = os.path.join(tempdir, 'pos.con') with open(con_file, 'w') as f: f.write(CON_FILE) box = ase.io.read(con_file, format='eon') # Check cell vectors. assert (abs(box.cell - data.cell)).sum() < TOL # read: cell vector check # Check atom positions. # read: position check assert (abs(box.positions - data.positions)).sum() < TOL # Now that we know that reading a .con file works, we will write # one and read it back in. out_file = os.path.join(tempdir, 'out.con') ase.io.write(out_file, data, format='eon') data2 = ase.io.read(out_file, format='eon') # Check cell vectors. # write: cell vector check assert (abs(data2.cell - data.cell)).sum() < TOL # Check atom positions. # write: position check assert (abs(data2.positions - data.positions)).sum() < TOL finally: shutil.rmtree(tempdir) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/eos.py000066400000000000000000000016651316323560300226660ustar00rootroot00000000000000import numpy as np import scipy # skip test early if no scipy from ase.build import bulk from ase.calculators.emt import EMT from ase.eos import EquationOfState as EOS, eos_names scipy # silence pyflakes b = bulk('Al', 'fcc', a=4.0, orthorhombic=True) b.set_calculator(EMT()) cell = b.get_cell() volumes = [] energies = [] for x in np.linspace(0.98, 1.01, 5): b.set_cell(cell * x, scale_atoms=True) volumes.append(b.get_volume()) energies.append(b.get_potential_energy()) results = [] for name in eos_names: if name == 'antonschmidt': # Someone should fix this! continue eos = EOS(volumes, energies, name) v, e, b = eos.fit() print('{0:20} {1:.8f} {2:.8f} {3:.8f} '.format(name, v, e, b)) assert abs(v - 3.18658700e+01) < 4e-4 assert abs(e - -9.76187802e-03) < 5e-7 assert abs(b - 2.46812688e-01) < 2e-4 results.append((v, e, b)) print(np.ptp(results, 0)) print(np.mean(results, 0)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/espresso/000077500000000000000000000000001316323560300233615ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/espresso/__init__.py000066400000000000000000000000001316323560300254600ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/espresso/espresso.py000066400000000000000000000011121316323560300255710ustar00rootroot00000000000000"""Check that QE calculation can run.""" from ase.build import bulk from ase.calculators.espresso import Espresso # Default pseudos can go in ~/espresso/pseudo # Get these from SSSP http://materialscloud.org/sssp/ PSEUDO = {'Si': 'Si.pbe-n-rrkjus_psl.1.0.0.UPF'} # Don't forget to # export ASE_ESPRESSO_COMMAND="mpirun -n 4 $HOME/Compile/q-e/bin/pw.x -in PREFIX.pwi > PREFIX.pwo" # export ESPRESSO_PSEUDO="/path/to/pseudos" def main(): silicon = bulk('Si') calc = Espresso(pseudopotentials=PSEUDO) silicon.set_calculator(calc) silicon.get_potential_energy() main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/example.py000066400000000000000000000014221316323560300235220ustar00rootroot00000000000000from ase import Atoms from ase.constraints import FixAtoms from ase.io import Trajectory from ase.optimize import QuasiNewton from ase.calculators.morse import MorsePotential atoms = Atoms('H7', positions=[(0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 2, 0), (1, 2, 0), (0.5, 0.5, 1)], constraint=[FixAtoms(range(6))], calculator=MorsePotential()) traj = Trajectory('H.traj', 'w', atoms) dyn = QuasiNewton(atoms, maxstep=0.2) dyn.attach(traj.write) dyn.run(fmax=0.01, steps=100) print(atoms) del atoms[-1] print(atoms) del atoms[5] print(atoms) assert len(atoms.constraints[0].index) == 5 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/exciting/000077500000000000000000000000001316323560300233305ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/exciting/__init__.py000066400000000000000000000000001316323560300254270ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/exciting/exciting.py000066400000000000000000000007641316323560300255230ustar00rootroot00000000000000from ase import Atoms from ase.io import read, write from ase.calculators.exciting import Exciting a = Atoms('N3O', [(0, 0, 0), (1, 0, 0), (0, 0, 1), (0.5, 0.5, 0.5)], pbc=True) write('geo.exi', a) b = read('geo.exi') print(a) print(a.get_positions()) print(b) print(b.get_positions()) calculator = Exciting(dir='excitingtestfiles', kpts=(4, 4, 3), # bin='/fshome/chm/git/exciting/bin/excitingser', maxscl=3) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/external_force.py000066400000000000000000000035241316323560300250740ustar00rootroot00000000000000"""Tests for class ExternalForce in ase/constraints.py""" from ase import Atoms from ase.constraints import ExternalForce, FixBondLength from ase.optimize import FIRE from ase.calculators.emt import EMT from numpy.linalg import norm f_ext = 0.2 atom1 = 0 atom2 = 1 atom3 = 2 fmax = 0.001 atoms = Atoms('H3', positions=[(0, 0, 0), (0.751, 0, 0), (0, 1., 0)]) atoms.set_calculator(EMT()) # Without external force opt = FIRE(atoms) opt.run(fmax=fmax) dist1 = atoms.get_distance(atom1, atom2) # With external force con1 = ExternalForce(atom1, atom2, f_ext) atoms.set_constraint(con1) opt = FIRE(atoms) opt.run(fmax=fmax) dist2 = atoms.get_distance(atom1, atom2) # Distance should increase due to the external force assert dist2 > dist1 # Combine ExternalForce with FixBondLength # Fix the bond on which the force acts con2 = FixBondLength(atom1, atom2) # ExternalForce constraint at the beginning of the list!!! atoms.set_constraint([con1, con2]) opt = FIRE(atoms) opt.run(fmax=fmax) f_con = con2.constraint_forces # It was already optimized with this external force, therefore # the constraint force should be almost zero assert norm(f_con[0]) <= fmax # To get the complete constraint force (with external force), # use only the FixBondLength constraint, after the optimization with # ExternalForce atoms.set_constraint(con2) opt = FIRE(atoms) opt.run(fmax=fmax) f_con = con2.constraint_forces[0] assert round(norm(f_con), 2) == round(abs(f_ext), 2) # Fix another bond and incrase the external force f_ext *= 2 con1 = ExternalForce(atom1, atom2, f_ext) d1 = atoms.get_distance(atom1, atom3) con2 = FixBondLength(atom1, atom3) # ExternalForce constraint at the beginning of the list!!! atoms.set_constraint([con1, con2]) opt = FIRE(atoms) opt.run(fmax=fmax) d2 = atoms.get_distance(atom1, atom3) # Fixed distance should not change assert round(d1, 5) == round(d2, 5) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/filter.py000066400000000000000000000006161316323560300233600ustar00rootroot00000000000000"""Test that the filter and trajectories are playing well together.""" from ase.build import molecule from ase.constraints import Filter from ase.optimize import QuasiNewton from ase.calculators.emt import EMT atoms = molecule('CO2') atoms.set_calculator(EMT()) filter = Filter(atoms, indices=[1, 2]) opt = QuasiNewton(filter, trajectory='filter-test.traj', logfile='filter-test.log') opt.run() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/000077500000000000000000000000001316323560300222735ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/__init__.py000066400000000000000000000000001316323560300243720ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/abinit.py000066400000000000000000000014631316323560300241170ustar00rootroot00000000000000import numpy as np def array_almost_equal(a1, a2, tol=np.finfo(type(1.0)).eps): """Replacement for old numpy.testing.utils.array_almost_equal.""" return (np.abs(a1 - a2) < tol).all() # this test should be run with abinit! from ase.calculators.emt import EMT from ase.io import read, write from ase.build import molecule m1 = molecule('O2', pbc=True) m1.center(2.0) write('abinit_save.in', images=m1, format='abinit') m1.set_calculator(EMT()) e1 = m1.get_potential_energy() f1 = m1.get_forces() m2 = read('abinit_save.in', format='abinit') m2.set_calculator(EMT()) e2 = m2.get_potential_energy() f2 = m1.get_forces() # assume atoms definitions are the same if energy/forces are the same: can we do better? assert abs(e1-e2) < 1.e-6, str(e1) + ' ' + str(e2) assert array_almost_equal(f1, f2, tol=1.e-6) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/cfg.py000066400000000000000000000006031316323560300234030ustar00rootroot00000000000000import numpy as np from ase.build import molecule from ase.io import read, write a = molecule('CO2') f = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) a.set_array('test', f) write('test.cfg', a) b = read('test.cfg') assert np.all(b.get_array('test') == f) a.set_momenta(2 * f) write('test.cfg', a) b = read('test.cfg') assert np.all(np.abs(a.get_momenta() - b.get_momenta()) < 1e-3) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/compression.py000066400000000000000000000076321316323560300252160ustar00rootroot00000000000000""" Read and write on compressed files. """ import os import os.path import numpy as np from ase import io from ase.io import formats from ase.build import bulk from ase.test import NotAvailable single = bulk('Au') multiple = [bulk('Fe'), bulk('Zn'), bulk('Li')] def test_get_compression(): """Identification of supported compression from filename.""" assert formats.get_compression('H2O.pdb.gz') == ('H2O.pdb', 'gz') assert formats.get_compression('CH4.pdb.bz2') == ('CH4.pdb', 'bz2') assert formats.get_compression('Alanine.pdb.xz') == ('Alanine.pdb', 'xz') # zip not implemented ;) assert formats.get_compression('DNA.pdb.zip') == ('DNA.pdb.zip', None) assert formats.get_compression('crystal.cif') == ('crystal.cif', None) def test_compression_write_single(ext='gz'): """Writing compressed file.""" filename = 'single.xsf.{ext}'.format(ext=ext) io.write(filename, single) assert os.path.exists(filename) os.unlink(filename) def test_compression_read_write_single(ext='gz'): """Re-reading a compressed file.""" # Use xsf filetype as it needs to check the 'magic' # filetype guessing when reading filename = 'single.xsf.{ext}'.format(ext=ext) io.write(filename, single) assert os.path.exists(filename) reread = io.read(filename) assert reread.get_chemical_symbols() == single.get_chemical_symbols() assert np.allclose(reread.positions, single.positions) os.unlink(filename) def test_compression_write_multiple(ext='gz'): """Writing compressed file, with multiple configurations.""" filename = 'multiple.xyz.{ext}'.format(ext=ext) io.write(filename, multiple) assert os.path.exists(filename) os.unlink(filename) def test_compression_read_write_multiple(ext='gz'): """Re-reading a compressed file with multiple configurations.""" filename = 'multiple.xyz.{ext}'.format(ext=ext) io.write(filename, multiple) assert os.path.exists(filename) reread = io.read(filename, ':') assert len(reread) == len(multiple) assert np.allclose(reread[-1].positions, multiple[-1].positions) os.unlink(filename) def test_modes(ext='gz'): """Test the different read/write modes for a compression format.""" filename = 'testrw.{ext}'.format(ext=ext) for mode in ['w', 'wb', 'wt']: with formats.open_with_compression(filename, mode) as tmp: if 'b' in mode: tmp.write(b'some text') else: tmp.write('some text') for mode in ['r', 'rb', 'rt']: with formats.open_with_compression(filename, mode) as tmp: if 'b' in mode: assert tmp.read() == b'some text' else: assert tmp.read() == 'some text' os.unlink(filename) if __name__ in ('__main__', '__builtin__'): test_get_compression() # gzip test_compression_write_single() test_compression_read_write_single() test_compression_write_multiple() test_compression_read_write_multiple() test_modes() # bz2 test_compression_write_single('bz2') test_compression_read_write_single('bz2') test_compression_write_multiple('bz2') test_compression_read_write_multiple('bz2') test_modes('bz2') # xz # These will fail in Python 2 if backports.lzma is not installed, # but raise different errors depending on whether any other # backports modules are installed. Catch here so the skip message # always has both parts of the module name. # Do xz last so the other formats are always tested anyway. try: test_compression_write_single('xz') test_compression_read_write_single('xz') test_compression_write_multiple('xz') test_compression_read_write_multiple('xz') test_modes('xz') except ImportError as ex: if 'lzma' in ex.args[0] or 'backports' in ex.args[0]: raise NotAvailable('no backports.lzma module') else: raise ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/dmol.py000066400000000000000000000037421316323560300236060ustar00rootroot00000000000000from ase.build import bulk, molecule from ase.io import read, write from ase.calculators.dmol import find_transformation import numpy as np def check(atoms, ref_atoms, dist_tol=1e-6): # check pbc conditions assert all(atoms.pbc == ref_atoms.pbc), (atoms.pbc, ref_atoms.pbc) # check cell if all(atoms.pbc): assert abs(atoms.cell - ref_atoms.cell).max() < dist_tol, \ (atoms.cell - ref_atoms.cell) # check positions assert abs(atoms.positions - ref_atoms.positions).max() < dist_tol, \ (atoms.positions - ref_atoms.positions) # check symbols assert atoms.get_chemical_symbols() == ref_atoms.get_chemical_symbols() ref_molecule = molecule('H2O') ref_bulk = bulk('Si', 'diamond') ref_molecule_images = [ref_molecule, ref_molecule] ref_bulk_images = [ref_bulk, ref_bulk] # .car format fname = 'dmol_tmp.car' write(fname, ref_molecule, format='dmol-car') for atoms in [read(fname, format='dmol-car'), read(fname)]: check(atoms, ref_molecule) fname = 'dmol_tmp.car' write(fname, ref_bulk, format='dmol-car') for atoms in [read(fname, format='dmol-car'), read(fname)]: R, _ = find_transformation(atoms, ref_bulk) atoms.cell = np.dot(atoms.cell, R) atoms.positions = np.dot(atoms.positions, R) check(atoms, ref_bulk) # .incoor format fname = 'dmol_tmp.incoor' write(fname, ref_bulk, format='dmol-incoor') atoms = read(fname, format='dmol-incoor') check(atoms, ref_bulk) # .arc format fname = 'dmol_tmp.arc' write(fname, ref_molecule_images, format='dmol-arc') images = read(fname + '@:', format='dmol-arc') for image, ref_image in zip(images, ref_molecule_images): check(image, ref_image) fname = 'dmol_tmp.arc' write(fname, ref_bulk_images, format='dmol-arc') images = read(fname + '@:', format='dmol-arc') for image, ref_image in zip(images, ref_bulk_images): R, _ = find_transformation(image, ref_image) image.cell = np.dot(image.cell, R) image.positions = np.dot(image.positions, R) check(image, ref_image) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/espresso.py000066400000000000000000000262551316323560300245220ustar00rootroot00000000000000"""Quantum ESPRESSO file parsers. Implemented: * Input file (pwi) * Output file (pwo) with vc-relax """ import os import numpy as np from ase import io from ase import build # This file is parsed correctly by pw.x, even though things are # scattered all over the place with some namelist edge cases pw_input_text = """ &CONTrol prefix = 'surf_110_H2_md' calculation = 'md' restart_mode = 'from_scratch' pseudo_dir = '.' outdir = './surf_110_!H2_m=d_sc,ratch/' verbosity = 'default' tprnfor = .true. tstress = .True. ! disk_io = 'low' wf_collect = .false. max_seconds = 82800 forc_con!v_thr = 1e-05 etot_conv_thr = 1e-06 dt = 41.3 , / &SYSTEM ecutwfc = 63, ecutrho = 577, ibrav = 0, nat = 8, ntyp = 2, occupations = 'smearing', smearing = 'marzari-vanderbilt', degauss = 0.01, nspin = 2, ! nosym = .true. , starting_magnetization(2) = 0.32 / &ELECTRONS electron_maxstep = 300 mixing_beta = 0.1 conv_thr = 1d-07 mixing_mode = 'local-TF' scf_must_converge = False / &IONS ion_dynamics = 'verlet' ion_temperature = 'rescaling' tolp = 50.0 tempw = 500.0 / ATOMIC_SPECIES H 1.008 H.pbe-rrkjus_psl.0.1.UPF Fe 55.845 Fe.pbe-spn-rrkjus_psl.0.2.1.UPF K_POINTS automatic 2 2 2 1 1 1 CELL_PARAMETERS angstrom 5.6672000000000002 0.0000000000000000 0.0000000000000000 0.0000000000000000 8.0146311006808038 0.0000000000000000 0.0000000000000000 0.0000000000000000 27.0219466510212101 ATOMIC_POSITIONS angstrom Fe 0.0000000000 0.0000000000 0.0000000000 0 0 0 Fe 1.4168000000 2.0036577752 -0.0000000000 0 0 0 Fe 0.0000000000 2.0036577752 2.0036577752 0 0 0 Fe 1.4168000000 0.0000000000 2.0036577752 0 0 0 Fe 0.0000000000 0.0000000000 4.0073155503 Fe 1.4168000000 2.0036577752 4.0073155503 H 0.0000000000 2.0036577752 6.0109733255 H 1.4168000000 0.0000000000 6.0109733255 """ # Trimmed to only include lines of relevance pw_output_text = """ Program PWSCF v.5.3.0 (svn rev. 11974) starts on 19May2016 at 7:48:12 This program is part of the open-source Quantum ESPRESSO suite for quantum simulation of materials; please cite "P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009); URL http://www.quantum-espresso.org", in publications or presentations arising from this work. More details at http://www.quantum-espresso.org/quote ... bravais-lattice index = 0 lattice parameter (alat) = 5.3555 a.u. unit-cell volume = 155.1378 (a.u.)^3 number of atoms/cell = 3 number of atomic types = 2 number of electrons = 33.00 number of Kohn-Sham states= 21 kinetic-energy cutoff = 144.0000 Ry charge density cutoff = 1728.0000 Ry convergence threshold = 1.0E-10 mixing beta = 0.1000 number of iterations used = 8 plain mixing Exchange-correlation = PBE ( 1 4 3 4 0 0) nstep = 50 celldm(1)= 5.355484 celldm(2)= 0.000000 celldm(3)= 0.000000 celldm(4)= 0.000000 celldm(5)= 0.000000 celldm(6)= 0.000000 crystal axes: (cart. coord. in units of alat) a(1) = ( 1.000000 0.000000 0.000000 ) a(2) = ( 0.000000 1.010000 0.000000 ) a(3) = ( 0.000000 0.000000 1.000000 ) ... Cartesian axes site n. atom positions (alat units) 1 Fe tau( 1) = ( 0.0000000 0.0000000 0.0000000 ) 2 Fe tau( 2) = ( 0.5000000 0.5050000 0.5000000 ) 3 H tau( 3) = ( 0.5000000 0.5050000 0.0000000 ) ... Magnetic moment per site: atom: 1 charge: 10.9188 magn: 1.9476 constr: 0.0000 atom: 2 charge: 10.9402 magn: 1.5782 constr: 0.0000 atom: 3 charge: 0.8835 magn: -0.0005 constr: 0.0000 total cpu time spent up to now is 125.3 secs End of self-consistent calculation Number of k-points >= 100: set verbosity='high' to print the bands. the Fermi energy is 19.3154 ev ! total energy = -509.83425823 Ry Harris-Foulkes estimate = -509.83425698 Ry estimated scf accuracy < 8.1E-11 Ry The total energy is the sum of the following terms: one-electron contribution = -218.72329117 Ry hartree contribution = 130.90381466 Ry xc contribution = -70.71031046 Ry ewald contribution = -351.30448923 Ry smearing contrib. (-TS) = 0.00001797 Ry total magnetization = 4.60 Bohr mag/cell absolute magnetization = 4.80 Bohr mag/cell convergence has been achieved in 23 iterations negative rho (up, down): 0.000E+00 3.221E-05 Forces acting on atoms (Ry/au): atom 1 type 2 force = 0.00000000 0.00000000 0.00000000 atom 2 type 2 force = 0.00000000 0.00000000 0.00000000 atom 3 type 1 force = 0.00000000 0.00000000 0.00000000 Total force = 0.000000 Total SCF correction = 0.000000 entering subroutine stress ... negative rho (up, down): 0.000E+00 3.221E-05 total stress (Ry/bohr**3) (kbar) P= 384.59 0.00125485 0.00000000 0.00000000 184.59 0.00 0.00 0.00000000 0.00115848 0.00000000 0.00 170.42 0.00 0.00000000 0.00000000 0.00542982 0.00 0.00 798.75 BFGS Geometry Optimization number of scf cycles = 1 number of bfgs steps = 0 enthalpy new = -509.8342582307 Ry new trust radius = 0.0721468508 bohr new conv_thr = 1.0E-10 Ry new unit-cell volume = 159.63086 a.u.^3 ( 23.65485 Ang^3 ) CELL_PARAMETERS (angstrom) 2.834000000 0.000000000 0.000000000 0.000000000 2.945239106 0.000000000 0.000000000 0.000000000 2.834000000 ATOMIC_POSITIONS (angstrom) Fe 0.000000000 0.000000000 0.000000000 0 0 0 Fe 1.417000000 1.472619553 1.417000000 H 1.417000000 1.472619553 0.000000000 ... Magnetic moment per site: atom: 1 charge: 10.9991 magn: 2.0016 constr: 0.0000 atom: 2 charge: 11.0222 magn: 1.5951 constr: 0.0000 atom: 3 charge: 0.8937 magn: -0.0008 constr: 0.0000 total cpu time spent up to now is 261.2 secs End of self-consistent calculation Number of k-points >= 100: set verbosity='high' to print the bands. the Fermi energy is 18.6627 ev ! total energy = -509.83806077 Ry Harris-Foulkes estimate = -509.83805972 Ry estimated scf accuracy < 1.3E-11 Ry The total energy is the sum of the following terms: one-electron contribution = -224.15358901 Ry hartree contribution = 132.85863781 Ry xc contribution = -70.66684834 Ry ewald contribution = -347.87622740 Ry smearing contrib. (-TS) = -0.00003383 Ry total magnetization = 4.66 Bohr mag/cell absolute magnetization = 4.86 Bohr mag/cell convergence has been achieved in 23 iterations negative rho (up, down): 0.000E+00 3.540E-05 Forces acting on atoms (Ry/au): atom 1 type 2 force = 0.00000000 0.00000000 0.00000000 atom 2 type 2 force = 0.00000000 0.00000000 0.00000000 atom 3 type 1 force = 0.00000000 0.00000000 0.00000000 Total force = 0.000000 Total SCF correction = 0.000000 entering subroutine stress ... negative rho (up, down): 0.000E+00 3.540E-05 total stress (Ry/bohr**3) (kbar) P= 311.25 0.00088081 0.00000000 0.00000000 129.57 0.00 0.00 0.00000000 0.00055559 0.00000000 0.00 81.73 0.00 0.00000000 0.00000000 0.00491106 0.00 0.00 722.44 number of scf cycles = 2 number of bfgs steps = 1 ... Begin final coordinates CELL_PARAMETERS (angstrom) 2.834000000 0.000000000 0.000000000 0.000000000 2.945239106 0.000000000 0.000000000 0.000000000 2.834000000 ATOMIC_POSITIONS (angstrom) Fe 0.000000000 0.000000000 0.000000000 0 0 0 Fe 1.417000000 1.472619553 1.417000000 H 1.417000000 1.472619553 0.000000000 End final coordinates """ def test_pw_input(): """Read pw input file.""" with open('pw_input.pwi', 'w') as pw_input_f: pw_input_f.write(pw_input_text) try: pw_input_atoms = io.read('pw_input.pwi', format='espresso-in') assert len(pw_input_atoms) == 8 finally: os.unlink('pw_input.pwi') def test_pw_output(): """Read pw output file.""" with open('pw_output.pwo', 'w') as pw_output_f: pw_output_f.write(pw_output_text) try: pw_output_traj = io.read('pw_output.pwo', index=':') assert len(pw_output_traj) == 2 assert pw_output_traj[1].get_volume() > pw_output_traj[0].get_volume() finally: os.unlink('pw_output.pwo') def test_pw_results_required(): """Check only configurations with results are read unless requested.""" with open('pw_output.pwo', 'w') as pw_output_f: pw_output_f.write(pw_output_text) try: # ignore 'final coordinates' with no results pw_output_traj = io.read('pw_output.pwo', index=':') assert 'energy' in pw_output_traj[-1].get_calculator().results assert len(pw_output_traj) == 2 # include un-calculated final config pw_output_traj = io.read('pw_output.pwo', index=':', results_required=False) assert len(pw_output_traj) == 3 assert 'energy' not in pw_output_traj[-1].get_calculator().results # get default index=-1 with results pw_output_config = io.read('pw_output.pwo') assert 'energy' in pw_output_config.get_calculator().results # get default index=-1 with no results "final coordinates' pw_output_config = io.read('pw_output.pwo', results_required=False) assert 'energy' not in pw_output_config.get_calculator().results finally: os.unlink('pw_output.pwo') def test_pw_input_write(): """Write a structure and read it back.""" bulk = build.bulk('NiO', 'rocksalt', 4.813, cubic=True) bulk.set_initial_magnetic_moments([2.2 if atom.symbol == 'Ni' else 0.0 for atom in bulk]) try: bulk.write('espresso_test.pwi') readback = io.read('espresso_test.pwi') assert np.allclose(bulk.positions, readback.positions) finally: os.unlink('espresso_test.pwi') if __name__ in ('__main__', '__builtin__'): test_pw_input() test_pw_output() test_pw_results_required() test_pw_input_write() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/extxyz.py000066400000000000000000000045541316323560300242300ustar00rootroot00000000000000# additional tests of the extended XYZ file I/O # (which is also included in oi.py test case) # maintainted by James Kermode import os import numpy as np import ase.io from ase.atoms import Atoms from ase.build import bulk # array data of shape (N, 1) squeezed down to shape (N, ) -- bug fixed # in commit r4541 at = bulk('Si') ase.io.write('to.xyz', at, format='extxyz') at.arrays['ns_extra_data'] = np.zeros((len(at), 1)) assert at.arrays['ns_extra_data'].shape == (2, 1) ase.io.write('to_new.xyz', at, format='extxyz') at_new = ase.io.read('to_new.xyz') assert at_new.arrays['ns_extra_data'].shape == (2,) os.unlink('to.xyz') os.unlink('to_new.xyz') # write sequence of images with different numbers of atoms -- bug fixed # in commit r4542 images = [at, at * (2, 1, 1), at * (3, 1, 1)] ase.io.write('multi.xyz', images, format='extxyz') read_images = ase.io.read('multi.xyz@:') assert read_images == images os.unlink('multi.xyz') # read xyz containing trailing blank line f = open('structure.xyz', 'w') f.write("""4 Coordinates Mg -4.25650 3.79180 -2.54123 C -1.15405 2.86652 -1.26699 C -5.53758 3.70936 0.63504 C -7.28250 4.71303 -3.82016 """) f.close() a = ase.io.read('structure.xyz') os.unlink('structure.xyz') # read xyz with / and @ signs in key value f = open('slash.xyz', 'w') f.write("""4 key1=a key2=a/b key3=a@b key4="a@b" Mg -4.25650 3.79180 -2.54123 C -1.15405 2.86652 -1.26699 C -5.53758 3.70936 0.63504 C -7.28250 4.71303 -3.82016 """) f.close() a = ase.io.read('slash.xyz') assert a.info['key1'] == r'a' assert a.info['key2'] == r'a/b' assert a.info['key3'] == r'a@b' assert a.info['key4'] == r'a@b' os.unlink('slash.xyz') struct = Atoms('H4', pbc=[True, True, True], cell=[[4.00759, 0.0, 0.0], [-2.003795, 3.47067475, 0.0], [3.06349683e-16, 5.30613216e-16, 5.00307]], positions=[[-2.003795e-05, 2.31379473, 0.875437189], [2.00381504, 1.15688001, 4.12763281], [2.00381504, 1.15688001, 3.37697219], [-2.003795e-05, 2.31379473, 1.62609781]]) struct.info = {'key_value_pairs': {'dataset': 'deltatest', 'kpoints': np.array([28, 28, 20]), 'identifier': 'deltatest_H_1.00'}, 'unique_id': '4cf83e2f89c795fb7eaf9662e77542c1'} ase.io.write('tmp.xyz', struct) os.unlink('tmp.xyz') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/info.py000066400000000000000000000012761316323560300236060ustar00rootroot00000000000000from ase import Atoms from ase.io import Trajectory # Create a molecule with an info attribute info = dict(creation_date='2011-06-27', chemical_name='Hydrogen', # custom classes also works provided that it is # imported and pickleable... foo={'seven': 7}) molecule = Atoms('H2', positions=[(0., 0., 0.), (0., 0., 1.1)], info=info) assert molecule.info == info # Copy molecule atoms = molecule.copy() assert atoms.info == info # Save molecule to trajectory traj = Trajectory('info.traj', 'w', atoms=molecule) traj.write() del traj # Load molecule from trajectory t = Trajectory('info.traj') atoms = t[-1] print(atoms.info) assert atoms.info == info ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/jsonio.py000066400000000000000000000003341316323560300241460ustar00rootroot00000000000000"""Test serialization of ndarrays and other stuff.""" import numpy as np from ase.io.jsonio import encode, decode assert decode(encode(np.int64(42))) == 42 c = np.array([0.1j]) assert (decode(encode(c)) == c).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/magmom.py000066400000000000000000000005061316323560300241230ustar00rootroot00000000000000from ase import Atoms from ase.io import read, write atoms = Atoms('HH', [[.0,.0,.0], [.0,.0,.74]], pbc=True, cell=[5, 5, 5]) atoms.set_initial_magnetic_moments([1, -1]) moms = atoms.get_initial_magnetic_moments() write('test.traj',atoms) atoms = read('test.traj') assert (atoms.get_initial_magnetic_moments() == moms).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/netcdftrajectory.py000066400000000000000000000055501316323560300262240ustar00rootroot00000000000000from ase.test import NotAvailable import numpy as np import ase.io.netcdftrajectory as netcdftrajectory if not netcdftrajectory.have_nc: raise NotAvailable('No NetCDF module available (netCDF4-python, ' 'scipy.io.netcdf)') import os from ase import Atom, Atoms from ase.io import NetCDFTrajectory co = Atoms([Atom('C', (0, 0, 0)), Atom('O', (0, 0, 1.2))], cell=[3, 3, 3], pbc=True) traj = NetCDFTrajectory('1.nc', 'w', co) for i in range(5): co.positions[:, 2] += 0.1 traj.write() del traj if netcdftrajectory.have_nc == netcdftrajectory.NC_IS_NETCDF4: traj = NetCDFTrajectory('1.nc', 'a') co = traj[-1] print(co.positions) co.positions[:] += 1 traj.write(co) del traj t = NetCDFTrajectory('1.nc', 'a') else: t = NetCDFTrajectory('1.nc', 'r') print(t[-1].positions) print('.--------') for i, a in enumerate(t): if i < 4: print(1, a.positions[-1, 2], 1.3 + i * 0.1) assert abs(a.positions[-1, 2] - 1.3 - i * 0.1) < 1e-6 assert a.pbc.all() else: print(1, a.positions[-1, 2], 1.7 + i - 4) assert abs(a.positions[-1, 2] - 1.7 - i + 4) < 1e-6 assert a.pbc.all() if netcdftrajectory.have_nc == netcdftrajectory.NC_IS_NETCDF4: co.positions[:] += 1 t.write(co) for i, a in enumerate(t): if i < 4: print(2, a.positions[-1, 2], 1.3 + i * 0.1) assert abs(a.positions[-1, 2] - 1.3 - i * 0.1) < 1e-6 else: print(2, a.positions[-1, 2], 1.7 + i - 4) assert abs(a.positions[-1, 2] - 1.7 - i + 4) < 1e-6 assert len(t) == 7 else: assert len(t) == 5 # Change atom type and append co[0].number = 1 t.write(co) t2 = NetCDFTrajectory('1.nc', 'r') co2 = t2[-1] assert (co2.numbers == co.numbers).all() del t2 if netcdftrajectory.have_nc == netcdftrajectory.NC_IS_NETCDF4: co[0].number = 6 co.pbc = True t.write(co) co.pbc = False o = co.pop(1) try: t.write(co) except ValueError: pass else: assert False co.append(o) co.pbc = True t.write(co) del t # append to a nonexisting file if netcdftrajectory.have_nc == netcdftrajectory.NC_IS_NETCDF4: fname = '2.nc' if os.path.isfile(fname): os.remove(fname) t = NetCDFTrajectory(fname, 'a', co) del t fname = '3.nc' t = NetCDFTrajectory(fname, 'w', co) # File is not created before first write co.set_pbc([True, False, False]) d = co.get_distance(0, 1) t.write(co) del t # Check pbc t = NetCDFTrajectory(fname) a = t[-1] assert a.pbc[0] and not a.pbc[1] and not a.pbc[2] assert abs(a.get_distance(0, 1) - d) < 1e-6 del t # Append something in Voigt notation t = NetCDFTrajectory(fname, 'a') for frame, a in enumerate(t): test = np.random.random([len(a), 6]) a.set_array('test', test) t.write_arrays(a, frame, ['test']) del t os.remove(fname) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/nwchem.py000066400000000000000000000005611316323560300241300ustar00rootroot00000000000000"""Checks that writing and reading of NWChem input files is consistent.""" from ase.build import molecule from ase.calculators.nwchem import NWChem from ase import io atoms = molecule('CH3COOH') calc = NWChem() calc.write_input(atoms) atoms2 = io.read('nwchem.nw') tol = 1e-8 check = sum(abs((atoms.positions - atoms2.positions).ravel()) > tol) assert check == 0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/oi.py000066400000000000000000000074661316323560300232710ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np from ase import Atoms from ase.io import write, read, iread from ase.io.formats import all_formats, get_ioformat from ase.calculators.singlepoint import SinglePointCalculator try: import matplotlib except ImportError: matplotlib = 0 try: from lxml import etree except ImportError: etree = 0 try: import Scientific except ImportError: Scientific = 0 def get_atoms(): a = 5.0 d = 1.9 c = a / 2 atoms = Atoms('AuH', positions=[(0, c, c), (d, c, c)], cell=(2 * d, a, a), pbc=(1, 0, 0)) extra = np.array([2.3, 4.2]) atoms.set_array('extra', extra) atoms *= (2, 1, 1) # attach some results to the Atoms. # These are serialised by the extxyz writer. spc = SinglePointCalculator(atoms, energy=-1.0, stress=[1.0, 2.0, 3.0, 4.0, 5.0, 6.0], forces=-1.0 * atoms.positions) atoms.set_calculator(spc) return atoms def check(a, ref_atoms, format): assert abs(a.positions - ref_atoms.positions).max() < 1e-6, \ (a.positions - ref_atoms.positions) if format in ['traj', 'cube', 'cfg', 'struct', 'gen', 'extxyz', 'db', 'json', 'trj']: assert abs(a.cell - ref_atoms.cell).max() < 1e-6 if format in ['cfg', 'extxyz']: assert abs(a.get_array('extra') - ref_atoms.get_array('extra')).max() < 1e-6 if format in ['extxyz', 'traj', 'trj', 'db', 'json']: assert (a.pbc == ref_atoms.pbc).all() assert a.get_potential_energy() == ref_atoms.get_potential_energy() assert (a.get_stress() == ref_atoms.get_stress()).all() assert abs(a.get_forces() - ref_atoms.get_forces()).max() < 1e-12 testdir = 'tmp_io_testdir' if os.path.isdir(testdir): import shutil shutil.rmtree(testdir) os.mkdir(testdir) for format in sorted(all_formats): if format in ['abinit', 'castep-cell', 'dftb', 'eon', 'gaussian']: # Someone should do something ... continue if format in ['v-sim']: # Standalone test used as not compatible with 1D periodicity continue if format in ['dmol-arc', 'dmol-car', 'dmol-incoor']: # We have a standalone dmol test continue if format in ['postgresql', 'trj', 'vti', 'vtu']: # Let's not worry about these. continue if not matplotlib and format in ['eps', 'png']: continue if not etree and format == 'exciting': continue if not Scientific and format == 'etsf': continue atoms = get_atoms() images = [atoms, atoms] io = get_ioformat(format) print('{0:20}{1}{2}{3}{4}'.format(format, ' R'[bool(io.read)], ' W'[bool(io.write)], '+1'[io.single], 'SF'[io.acceptsfd])) fname1 = '{}/io-test.1.{}'.format(testdir, format) fname2 = '{}/io-test.2.{}'.format(testdir, format) if io.write: write(fname1, atoms, format=format) if not io.single: write(fname2, images, format=format) if io.read: for a in [read(fname1, format=format), read(fname1)]: check(a, atoms, format) if not io.single: if format in ['json', 'db']: aa = read(fname2 + '@id=1') + read(fname2 + '@id=2') else: aa = [read(fname2), read(fname2, 0)] aa += read(fname2, ':') for a in iread(fname2, format=format): aa.append(a) assert len(aa) == 6, aa for a in aa: check(a, atoms, format) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/oldtraj.py000066400000000000000000000006621316323560300243100ustar00rootroot00000000000000"""Make sure we can't read old traj file, but we can convert them.""" import ase.io as aio from ase import Atoms from ase.io.pickletrajectory import PickleTrajectory from ase.io.trajectory import convert from ase.test import must_raise t = PickleTrajectory('hmm.traj', 'w', _warn=False) a = Atoms('H') t.write(a) t.close() with must_raise(DeprecationWarning): aio.read('hmm.traj') convert('hmm.traj') aio.read('hmm.traj') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/parallel.py000066400000000000000000000003471316323560300244450ustar00rootroot00000000000000from ase import Atoms from ase.io import read, write from ase.parallel import world n = world.rank + 1 a = Atoms('H' * n) name = 'H{}.xyz'.format(n) write(name, a, parallel=False) b = read(name, parallel=False) assert n == len(b) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/pdb_cell_io.py000066400000000000000000000135401316323560300251030ustar00rootroot00000000000000from ase.io import read, write import numpy as np from ase import Atoms # Check that saving/loading pdb files correctly reproduces the atoms object. # # Loading will restore the cell from lengths/angles, so the best we can do # is to recreate the scaled positions, not the absolute positions. images = [ Atoms(symbols='C8O8Ru64', pbc=np.array([ True, True, True], dtype=bool), cell=np.array( [[ 9.46101634e+00, 5.46231901e+00, -7.62683750e-07], [ 0.00000000e+00, 1.09246400e+01, -7.62683750e-07], [ 0.00000000e+00, 0.00000000e+00, 2.14654300e+01]]), positions=np.array( [[ 7.80131882e-01, 6.83747136e+00, 8.38204657e+00], [ 5.51092271e+00, 9.56854231e+00, 8.38223568e+00], [ 3.07270715e+00, 2.87955302e+00, 8.37140640e+00], [ 7.80350536e+00, 5.61092571e+00, 8.37131213e+00], [ 4.27438360e+00, 6.25264571e+00, 7.97264597e+00], [ 9.00498640e+00, 8.98355980e+00, 7.97286435e+00], [ 6.37288973e+00, 1.35474697e+01, 7.83982205e+00], [ 1.64255024e+00, 1.08160090e+01, 7.83994023e+00], [ 7.71235875e-01, 6.84831577e+00, 9.54503003e+00], [ 5.50223518e+00, 9.57934418e+00, 9.54476437e+00], [ 3.03497100e+00, 2.94960249e+00, 9.52997683e+00], [ 7.76620880e+00, 5.68120179e+00, 9.52999700e+00], [ 4.23008702e+00, 6.32508468e+00, 9.15933250e+00], [ 8.96060688e+00, 9.05590199e+00, 9.15923442e+00], [ 6.34874076e+00, 1.35969943e+01, 9.03839912e+00], [ 1.61820848e+00, 1.08649253e+01, 9.01849841e+00], [ 1.57683637e+00, 2.73116147e+00, -2.54228044e-07], [ 1.56720630e+00, 2.72722886e+00, 4.28570884e+00], [ 7.88417713e-01, 1.36558046e+00, 2.15514407e+00], [ 8.02210750e-01, 1.34385101e+00, 6.43536380e+00], [ 3.94209046e+00, 4.09674123e+00, -4.44898981e-07], [ 3.95116212e+00, 4.10376637e+00, 4.28640956e+00], [ 3.15367180e+00, 2.73116022e+00, 2.15514388e+00], [ 3.15302826e+00, 2.73391087e+00, 6.47587998e+00], [ 6.30734454e+00, 5.46232098e+00, -6.35569919e-07], [ 6.29772257e+00, 5.45840160e+00, 4.28564811e+00], [ 5.51892683e+00, 4.09674051e+00, 2.15514369e+00], [ 5.53267073e+00, 4.07509705e+00, 6.43527963e+00], [ 8.67259863e+00, 6.82790073e+00, -8.26240856e-07], [ 8.68166544e+00, 6.83494012e+00, 4.28642358e+00], [ 7.88417997e+00, 5.46231972e+00, 2.15514350e+00], [ 7.88362942e+00, 5.46507502e+00, 6.47590212e+00], [ 1.57683637e+00, 5.46232147e+00, -4.44898981e-07], [ 1.58727500e+00, 5.44486645e+00, 4.24854361e+00], [ 7.88417713e-01, 4.09674046e+00, 2.15514388e+00], [ 8.01608482e-01, 4.07705367e+00, 6.44578990e+00], [ 3.94209046e+00, 6.82790123e+00, -6.35569919e-07], [ 3.95243122e+00, 6.81073405e+00, 4.32065689e+00], [ 3.15367180e+00, 5.46232022e+00, 2.15514369e+00], [ 3.16456215e+00, 5.44150374e+00, 6.44566316e+00], [ 6.30734454e+00, 8.19348098e+00, -8.26240856e-07], [ 6.31780039e+00, 8.17600912e+00, 4.24852811e+00], [ 5.51892588e+00, 6.82789997e+00, 2.15514350e+00], [ 5.53216899e+00, 6.80824683e+00, 6.44574538e+00], [ 8.67259863e+00, 9.55906073e+00, -1.01691179e-06], [ 8.68296348e+00, 9.54187626e+00, 4.32068356e+00], [ 7.88417997e+00, 8.19347972e+00, 2.15514331e+00], [ 7.89512792e+00, 8.17267187e+00, 6.44565547e+00], [ 1.57683637e+00, 8.19348147e+00, -6.35569919e-07], [ 1.58115689e+00, 8.20071292e+00, 4.29055653e+00], [ 7.88417713e-01, 6.82790046e+00, 2.15514369e+00], [ 7.91948666e-01, 6.82222698e+00, 6.48549188e+00], [ 3.94209046e+00, 9.55906123e+00, -8.26240856e-07], [ 3.93358820e+00, 9.55894698e+00, 4.29187459e+00], [ 3.15367180e+00, 8.19348022e+00, 2.15514350e+00], [ 3.15825664e+00, 8.18574447e+00, 6.38108109e+00], [ 6.30734454e+00, 1.09246410e+01, -1.01691179e-06], [ 6.31166355e+00, 1.09318806e+01, 4.29057142e+00], [ 5.51892588e+00, 9.55905997e+00, 2.15514331e+00], [ 5.52249944e+00, 9.55339051e+00, 6.48545486e+00], [ 8.67259863e+00, 1.22902207e+01, -1.20758273e-06], [ 8.66410508e+00, 1.22901152e+01, 4.29183559e+00], [ 7.88418091e+00, 1.09246403e+01, 2.15514312e+00], [ 7.88880125e+00, 1.09169018e+01, 6.38105940e+00], [ 1.57683637e+00, 1.09246415e+01, -8.26240856e-07], [ 1.58687157e+00, 1.09077863e+01, 4.32193338e+00], [ 7.88417713e-01, 9.55906046e+00, 2.15514350e+00], [ 7.78394031e-01, 9.52397919e+00, 6.44162756e+00], [ 3.94209046e+00, 1.22902212e+01, -1.01691179e-06], [ 3.95166143e+00, 1.22749617e+01, 4.26568019e+00], [ 3.15367180e+00, 1.09246402e+01, 2.15514331e+00], [ 3.19235336e+00, 1.09175437e+01, 6.44091634e+00], [ 6.30734454e+00, 1.36558010e+01, -1.20758273e-06], [ 6.31737307e+00, 1.36389093e+01, 4.32189961e+00], [ 5.51892588e+00, 1.22902200e+01, 2.15514312e+00], [ 5.50895045e+00, 1.22551312e+01, 6.44172685e+00], [ 8.67259863e+00, 1.50213807e+01, -1.39825367e-06], [ 8.68213569e+00, 1.50061426e+01, 4.26566744e+00], [ 7.88418091e+00, 1.36558003e+01, 2.15514293e+00], [ 7.92283529e+00, 1.36487476e+01, 6.44087611e+00]])), ] atoms1 = images[0] write('grumbles.pdb', atoms1) atoms2 = read('grumbles.pdb') spos1 = (atoms1.get_scaled_positions() + 0.5) % 1.0 spos2 = (atoms2.get_scaled_positions() + 0.5) % 1.0 for a, b in zip(spos1, spos2): print(a, b) err = np.abs(spos1 - spos2).max() print(err) assert err < 2e-4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/res.py000066400000000000000000000305251316323560300234430ustar00rootroot00000000000000from ase.atoms import Atoms from ase.calculators.singlepoint import SinglePointCalculator from ase.io.res import Res, read_res, write_res test_res = """ TITL 23221-ZDsSsJoEW14-3 -2.7839600000000004 1 -31005.480500000001 0 0 254 (P1) n - 1 CELL 1.0 33.998511000000001 19.938282999999998 6.7999999999999998 90 90 89.981431000000001 LATT -1 SFAC C H H 2 0.419886000 0.142864000 0.243969000 1.0 H 2 0.449139000 0.135683000 0.670836000 1.0 H 2 0.284474000 0.165357000 0.236375000 1.0 H 2 0.326693000 0.119478000 0.609186000 1.0 H 2 0.09748500 0.08739500 0.484880000 1.0 H 2 0.02442900 0.08613700 0.524346000 1.0 H 2 0.198055000 0.153611000 0.757328000 1.0 H 2 0.175429000 0.133959000 0.325265000 1.0 H 2 0.398735000 0.09679800 0.440684000 1.0 H 2 0.471401000 0.09914900 0.463208000 1.0 H 2 0.266722000 0.108997000 0.413839000 1.0 H 2 0.339879000 0.104829000 0.360835000 1.0 H 2 0.07338100 0.131550000 0.294675000 1.0 H 2 0.04794100 0.124129000 0.727225000 1.0 H 2 0.225211000 0.105804000 0.585777000 1.0 H 2 0.152409000 0.09545300 0.529334000 1.0 H 2 0.483562000 0.846988000 0.185931000 1.0 H 2 0.412203000 0.881051000 0.503357000 1.0 H 2 0.334140000 0.872886000 0.548314000 1.0 H 2 0.04479200 0.837706000 0.669058000 1.0 H 2 0.123455000 0.859052000 0.614144000 1.0 H 2 0.179423000 0.845556000 0.356632000 1.0 H 2 0.482063000 0.887844000 0.415000000 1.0 H 2 0.406955000 0.863603000 0.254068000 1.0 H 2 0.336814000 0.868085000 0.292107000 1.0 H 2 0.06542800 0.847667000 0.435941000 1.0 H 2 0.129674000 0.805885000 0.820551000 1.0 H 2 0.198388000 0.859228000 0.590843000 1.0 H 2 0.261362000 0.875683000 0.445400000 1.0 H 2 0.261638000 0.837239000 0.213067000 1.0 H 2 0.922430000 0.133381000 0.326458000 1.0 H 2 0.945221000 0.143541000 0.761125000 1.0 H 2 0.796117000 0.143497000 0.270665000 1.0 H 2 0.823422000 0.134958000 0.699562000 1.0 H 2 0.597937000 0.105913000 0.422276000 1.0 H 2 0.525383000 0.103158000 0.471170000 1.0 H 2 0.718676000 0.09931000 0.508464000 1.0 H 2 0.645826000 0.104835000 0.550140000 1.0 H 2 0.897235000 0.09693900 0.527122000 1.0 H 2 0.969022000 0.09324000 0.583187000 1.0 H 2 0.773836000 0.09751500 0.463093000 1.0 H 2 0.845975000 0.09728100 0.493986000 1.0 H 2 0.573655000 0.154922000 0.243396000 1.0 H 2 0.548290000 0.142797000 0.673915000 1.0 H 2 0.696822000 0.135939000 0.298545000 1.0 H 2 0.670484000 0.154425000 0.726137000 1.0 H 2 0.993967000 0.805476000 0.209721000 1.0 H 2 0.925002000 0.847111000 0.584177000 1.0 H 2 0.848353000 0.844978000 0.660109000 1.0 H 2 0.548459000 0.874976000 0.574384000 1.0 H 2 0.629129000 0.889040000 0.458485000 1.0 H 2 0.701418000 0.868349000 0.357223000 1.0 H 2 0.990692000 0.856777000 0.420401000 1.0 H 2 0.916085000 0.849572000 0.331757000 1.0 H 2 0.847830000 0.863225000 0.409754000 1.0 H 2 0.559835000 0.876727000 0.325807000 1.0 H 2 0.626500000 0.856782000 0.697646000 1.0 H 2 0.704670000 0.873144000 0.612507000 1.0 H 2 0.776989000 0.865351000 0.609983000 1.0 H 2 0.777771000 0.862294000 0.354035000 1.0 C 1 0.01794100 0.194517000 0.539562000 1.0 C 1 0.03913900 0.253871000 0.514899000 1.0 C 1 0.02459800 0.319523000 0.514860000 1.0 C 1 0.08047700 0.254851000 0.513051000 1.0 C 1 0.09390100 0.321005000 0.525070000 1.0 C 1 0.135544000 0.326265000 0.537909000 1.0 C 1 0.160118000 0.266948000 0.537269000 1.0 C 1 0.143168000 0.202253000 0.508563000 1.0 C 1 0.102721000 0.196410000 0.495795000 1.0 C 1 0.08016000 0.132766000 0.454453000 1.0 C 1 0.04134100 0.130791000 0.568495000 1.0 C 1 0.168324000 0.140886000 0.483336000 1.0 C 1 0.205677000 0.149395000 0.599179000 1.0 C 1 0.225390000 0.213268000 0.541040000 1.0 C 1 0.202924000 0.273399000 0.543543000 1.0 C 1 0.222717000 0.336658000 0.541106000 1.0 C 1 0.265722000 0.338220000 0.544351000 1.0 C 1 0.286146000 0.275315000 0.510965000 1.0 C 1 0.264627000 0.214628000 0.489721000 1.0 C 1 0.284365000 0.154659000 0.396444000 1.0 C 1 0.326395000 0.141923000 0.459913000 1.0 C 1 0.349834000 0.206050000 0.468495000 1.0 C 1 0.329052000 0.267406000 0.508318000 1.0 C 1 0.351096000 0.323391000 0.565284000 1.0 C 1 0.393102000 0.321771000 0.553431000 1.0 C 1 0.413186000 0.264423000 0.490903000 1.0 C 1 0.391056000 0.204937000 0.456991000 1.0 C 1 0.414597000 0.143259000 0.405011000 1.0 C 1 0.454381000 0.143030000 0.511205000 1.0 C 1 0.477501000 0.207590000 0.483482000 1.0 C 1 0.455793000 0.267949000 0.481510000 1.0 C 1 0.476229000 0.330977000 0.490515000 1.0 C 1 0.517927000 0.334708000 0.476110000 1.0 C 1 0.538971000 0.273269000 0.465467000 1.0 C 1 0.581176000 0.275318000 0.464382000 1.0 C 1 0.602425000 0.213636000 0.460758000 1.0 C 1 0.580370000 0.151600000 0.402822000 1.0 C 1 0.541989000 0.148064000 0.514347000 1.0 C 1 0.518444000 0.210779000 0.482198000 1.0 C 1 0.641824000 0.212664000 0.508219000 1.0 C 1 0.663763000 0.150242000 0.566920000 1.0 C 1 0.702588000 0.143874000 0.457599000 1.0 C 1 0.726468000 0.206767000 0.487713000 1.0 C 1 0.705521000 0.268832000 0.510616000 1.0 C 1 0.726720000 0.329679000 0.513874000 1.0 C 1 0.768508000 0.326543000 0.516794000 1.0 C 1 0.789560000 0.265699000 0.509986000 1.0 C 1 0.767597000 0.205421000 0.483013000 1.0 C 1 0.790573000 0.143396000 0.431567000 1.0 C 1 0.829573000 0.141851000 0.540459000 1.0 C 1 0.852990000 0.205809000 0.515729000 1.0 C 1 0.832248000 0.267723000 0.513436000 1.0 C 1 0.853934000 0.330250000 0.513810000 1.0 C 1 0.896612000 0.329331000 0.515192000 1.0 C 1 0.916234000 0.266229000 0.514897000 1.0 C 1 0.893705000 0.205356000 0.508679000 1.0 C 1 0.915210000 0.140161000 0.484505000 1.0 C 1 0.952772000 0.140428000 0.602463000 1.0 C 1 0.977331000 0.199804000 0.549262000 1.0 C 1 0.959053000 0.263208000 0.521439000 1.0 C 1 0.982836000 0.323414000 0.515000000 1.0 C 1 0.663404000 0.273466000 0.508025000 1.0 C 1 0.643457000 0.336491000 0.492667000 1.0 C 1 0.601415000 0.337627000 0.481582000 1.0 C 1 0.09613400 0.479995000 0.539265000 1.0 C 1 0.135896000 0.453141000 0.542245000 1.0 C 1 0.154500000 0.388296000 0.543473000 1.0 C 1 0.196896000 0.393408000 0.543828000 1.0 C 1 0.205657000 0.462762000 0.539655000 1.0 C 1 0.241364000 0.498860000 0.542657000 1.0 C 1 0.279121000 0.468631000 0.589891000 1.0 C 1 0.289883000 0.397780000 0.590070000 1.0 C 1 0.330855000 0.382727000 0.627307000 1.0 C 1 0.355317000 0.431754000 0.706274000 1.0 C 1 0.397022000 0.430985000 0.689661000 1.0 C 1 0.415866000 0.379639000 0.597475000 1.0 C 1 0.455416000 0.390709000 0.539969000 1.0 C 1 0.473164000 0.456528000 0.542346000 1.0 C 1 0.447730000 0.515284000 0.594838000 1.0 C 1 0.412433000 0.496298000 0.686780000 1.0 C 1 0.379001000 0.538334000 0.705783000 1.0 C 1 0.344264000 0.498496000 0.714088000 1.0 C 1 0.308706000 0.518284000 0.633411000 1.0 C 1 0.307240000 0.586831000 0.574246000 1.0 C 1 0.271443000 0.613497000 0.508288000 1.0 C 1 0.238141000 0.569912000 0.515445000 1.0 C 1 0.201204000 0.603510000 0.513332000 1.0 C 1 0.166253000 0.565735000 0.538533000 1.0 C 1 0.168848000 0.497096000 0.539230000 1.0 C 1 0.128660000 0.594729000 0.557453000 1.0 C 1 0.09402600 0.552572000 0.548038000 1.0 C 1 0.05757600 0.588352000 0.532770000 1.0 C 1 0.02152400 0.551578000 0.509056000 1.0 C 1 0.02048700 0.478858000 0.515228000 1.0 C 1 0.05851300 0.440042000 0.525788000 1.0 C 1 0.05888400 0.367680000 0.521406000 1.0 C 1 0.378536000 0.600675000 0.625366000 1.0 C 1 0.449475000 0.586932000 0.546085000 1.0 C 1 0.484310000 0.621585000 0.485403000 1.0 C 1 0.521296000 0.588152000 0.483997000 1.0 C 1 0.535536000 0.520951000 0.491653000 1.0 C 1 0.578664000 0.522255000 0.487048000 1.0 C 1 0.589538000 0.590300000 0.484659000 1.0 C 1 0.625482000 0.624676000 0.487672000 1.0 C 1 0.660699000 0.588479000 0.485887000 1.0 C 1 0.669402000 0.519599000 0.487599000 1.0 C 1 0.644748000 0.461151000 0.488946000 1.0 C 1 0.665196000 0.397748000 0.495207000 1.0 C 1 0.707365000 0.393348000 0.507693000 1.0 C 1 0.730917000 0.453181000 0.505280000 1.0 C 1 0.771816000 0.449346000 0.512143000 1.0 C 1 0.789813000 0.386183000 0.517783000 1.0 C 1 0.831256000 0.390806000 0.515080000 1.0 C 1 0.839385000 0.461422000 0.510979000 1.0 C 1 0.803229000 0.498721000 0.506717000 1.0 C 1 0.803046000 0.569184000 0.494652000 1.0 C 1 0.840663000 0.603268000 0.491666000 1.0 C 1 0.876373000 0.565370000 0.494733000 1.0 C 1 0.875832000 0.494281000 0.506735000 1.0 C 1 0.911563000 0.458087000 0.511290000 1.0 C 1 0.920912000 0.388659000 0.515311000 1.0 C 1 0.963362000 0.385116000 0.514150000 1.0 C 1 0.981113000 0.450779000 0.511755000 1.0 C 1 0.947657000 0.493847000 0.507161000 1.0 C 1 0.948852000 0.562366000 0.489902000 1.0 C 1 0.986523000 0.592473000 0.483853000 1.0 C 1 0.913107000 0.599703000 0.485384000 1.0 C 1 0.767622000 0.609578000 0.487796000 1.0 C 1 0.729166000 0.580335000 0.486762000 1.0 C 1 0.712088000 0.515526000 0.490898000 1.0 C 1 0.602087000 0.462219000 0.487277000 1.0 C 1 0.580271000 0.400158000 0.484177000 1.0 C 1 0.537581000 0.398662000 0.485171000 1.0 C 1 0.514602000 0.459384000 0.502213000 1.0 C 1 0.990939000 0.803735000 0.373410000 1.0 C 1 0.953580000 0.770110000 0.426145000 1.0 C 1 0.919118000 0.813418000 0.455956000 1.0 C 1 0.881770000 0.777151000 0.483940000 1.0 C 1 0.847096000 0.819629000 0.512592000 1.0 C 1 0.809644000 0.783435000 0.492531000 1.0 C 1 0.775342000 0.828788000 0.485485000 1.0 C 1 0.737479000 0.793289000 0.486370000 1.0 C 1 0.701834000 0.835982000 0.490995000 1.0 C 1 0.663877000 0.800103000 0.505701000 1.0 C 1 0.627655000 0.840784000 0.539693000 1.0 C 1 0.591383000 0.803037000 0.486762000 1.0 C 1 0.554733000 0.840652000 0.448253000 1.0 C 1 0.518891000 0.800524000 0.409871000 1.0 C 1 0.482917000 0.836989000 0.348107000 1.0 C 1 0.447079000 0.798463000 0.402285000 1.0 C 1 0.447920000 0.730820000 0.446717000 1.0 C 1 0.412942000 0.696106000 0.498425000 1.0 C 1 0.375825000 0.731701000 0.486834000 1.0 C 1 0.374259000 0.798522000 0.439397000 1.0 C 1 0.410117000 0.837760000 0.399457000 1.0 C 1 0.336384000 0.835680000 0.425650000 1.0 C 1 0.300964000 0.792387000 0.422190000 1.0 C 1 0.263011000 0.825530000 0.374205000 1.0 C 1 0.228873000 0.783388000 0.434272000 1.0 C 1 0.191879000 0.817881000 0.485715000 1.0 C 1 0.160643000 0.773960000 0.564103000 1.0 C 1 0.126050000 0.805850000 0.657127000 1.0 C 1 0.09056700 0.767672000 0.597612000 1.0 C 1 0.05630600 0.807865000 0.541752000 1.0 C 1 0.02436500 0.766728000 0.461523000 1.0 C 1 0.02330200 0.697908000 0.482438000 1.0 C 1 0.05729800 0.659846000 0.535401000 1.0 C 1 0.09144300 0.699123000 0.576601000 1.0 C 1 0.127749000 0.664359000 0.575836000 1.0 C 1 0.162179000 0.704817000 0.546855000 1.0 C 1 0.198453000 0.673358000 0.499095000 1.0 C 1 0.231773000 0.714679000 0.455751000 1.0 C 1 0.269070000 0.682171000 0.461557000 1.0 C 1 0.303211000 0.724424000 0.460036000 1.0 C 1 0.339999000 0.694453000 0.509757000 1.0 C 1 0.341334000 0.628677000 0.575314000 1.0 C 1 0.414614000 0.628788000 0.560270000 1.0 C 1 0.483592000 0.692141000 0.449201000 1.0 C 1 0.518732000 0.732106000 0.436492000 1.0 C 1 0.555089000 0.698529000 0.464888000 1.0 C 1 0.555016000 0.629689000 0.477655000 1.0 C 1 0.591384000 0.734166000 0.481431000 1.0 C 1 0.626381000 0.695017000 0.492822000 1.0 C 1 0.662628000 0.731573000 0.493304000 1.0 C 1 0.698206000 0.693358000 0.485021000 1.0 C 1 0.735934000 0.724332000 0.485093000 1.0 C 1 0.770097000 0.680802000 0.484874000 1.0 C 1 0.807458000 0.714133000 0.488127000 1.0 C 1 0.842410000 0.673725000 0.489316000 1.0 C 1 0.879581000 0.708390000 0.482618000 1.0 C 1 0.914733000 0.669363000 0.474005000 1.0 C 1 0.952018000 0.701703000 0.451744000 1.0 C 1 0.987402000 0.662138000 0.459246000 1.0 C 1 0.696482000 0.624775000 0.484183000 1.0 END """ filepath = 'test.res' f = open(filepath, 'w') f.write(test_res) f.close() res = Res.from_file(filepath) assert res.atoms.get_chemical_formula() == 'C194H60' atoms = read_res(filepath) assert res.atoms == atoms assert res.energy == atoms.get_potential_energy() spc = SinglePointCalculator(atoms, energy=res.energy) atoms.set_calculator(spc) write_res('test2.res', atoms) atoms2 = read_res(filepath) assert atoms2 == atoms write_res('test3.res', atoms, write_info=False, significant_figures=9) atoms3 = read_res('test3.res') assert atoms3 == atoms res_string = """TITL CELL 1.0 1.0 1.0 1.0 90.0 90.0 90.0 LATT -1 SFAC Si F Si 1 0.000000 0.000000 0.000000 1.0 F 2 0.750000 0.500000 0.750000 1.0""" res = Res.from_string(res_string) assert res.atoms.get_chemical_formula() == 'FSi' assert len(res.atoms) == 2 struct = Atoms(cell=[2.5, 3.5, 7.0], symbols=['Na', 'Cl'], positions=[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) res = Res(struct) res_string = str(res) lines = res_string.splitlines() assert lines[1] == ('CELL 1.0 2.500000 3.500000 7.000000 ' '90.000000 90.000000 90.000000') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/trajectory.py000066400000000000000000000037411316323560300250400ustar00rootroot00000000000000from ase.test import must_raise import os from ase import Atom, Atoms from ase.io import Trajectory, read from ase.constraints import FixBondLength from ase.calculators.calculator import PropertyNotImplementedError co = Atoms([Atom('C', (0, 0, 0)), Atom('O', (0, 0, 1.2))]) traj = Trajectory('1.traj', 'w', co) written = [] for i in range(5): co.positions[:, 2] += 0.1 traj.write() written.append(co.copy()) traj = Trajectory('1.traj', 'a') co = read('1.traj') print(co.positions) co.positions[:] += 1 traj.write(co) written.append(co.copy()) for a in Trajectory('1.traj'): print(1, a.positions[-1, 2]) co.positions[:] += 1 t = Trajectory('1.traj', 'a') t.write(co) written.append(co.copy()) assert len(t) == 7 co[0].number = 1 t.write(co) written.append(co.copy()) co[0].number = 6 co.pbc = True t.write(co) written.append(co.copy()) co.pbc = False o = co.pop(1) t.write(co) written.append(co.copy()) co.append(o) t.write(co) written.append(co.copy()) imgs = read('1.traj@:') assert len(imgs) == len(written) for img1, img2 in zip(imgs, written): assert img1 == img2 # append to a nonexisting file: fname = '2.traj' if os.path.isfile(fname): os.remove(fname) t = Trajectory(fname, 'a', co) t.close() os.remove(fname) t = Trajectory('empty.traj', 'w') t.close() t = Trajectory('empty.traj', 'r') assert len(t) == 0 t = Trajectory('fake.traj', 'w') t.write(Atoms('H'), energy=-42.0, forces=[[1, 2, 3]]) t = Trajectory('only-energy.traj', 'w', properties=['energy']) a = read('fake.traj') t.write(a) b = read('only-energy.traj') e = b.get_potential_energy() assert e + 42 == 0 with must_raise(PropertyNotImplementedError): f = b.get_forces() # Make sure constraints play well with momenta: a = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1)], momenta=[(1, 0, 0), (0, 0, 0)]) a.constraints = [FixBondLength(0, 1)] t = Trajectory('constraint.traj', 'w', a) t.write() b = read('constraint.traj') assert not (b.get_momenta() - a.get_momenta()).any() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/trajectory_heterogeneous.py000066400000000000000000000023001316323560300277620ustar00rootroot00000000000000from __future__ import print_function #import numpy as np from ase.constraints import FixAtoms, FixBondLength from ase.build import molecule, bulk from ase.io.trajectory import Trajectory, get_header_data#, headers_equal a0 = molecule('H2O') a1 = a0.copy() a1.rattle(stdev=0.5) a2 = a0.copy() a2.set_masses() a2.center(vacuum=2.0) a2.rattle(stdev=0.2) a3 = molecule('CH3CH2OH') a4 = bulk('Au').repeat((2, 2, 2)) a5 = bulk('Cu').repeat((2, 2, 3)) # Add constraints to some of the images: images = [a0, a1, a2, a3, a4, a5] for i, img in enumerate(images[3:]): img.set_constraint(FixAtoms(indices=range(i + 3))) if i == 2: img.constraints.append(FixBondLength(5, 6)) traj = Trajectory('out.traj', 'w') for i, img in enumerate(images): traj.write(img) print(i, traj.multiple_headers) assert traj.multiple_headers == (i >= 2) traj.close() #view(images) rtraj = Trajectory('out.traj') newimages = list(rtraj) assert len(images) == len(newimages) for i in range(len(images)): assert images[i] == newimages[i], i h1 = get_header_data(images[i]) h2 = get_header_data(newimages[i]) print(i, images[i]) print(h1) print(h2) print() #assert headers_equal(h1, h2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/turbomole.py000066400000000000000000000006431316323560300246600ustar00rootroot00000000000000"""Test that FixAtoms constraints are written properly.""" from ase.build import molecule from ase.constraints import FixAtoms from ase.io import write, read mol1 = molecule('H2O') mol1.set_constraint(FixAtoms(mask=[True, False, True])) write('coord', mol1) mol2 = read('coord') fix_indices1 = mol1.constraints[0].get_indices() fix_indices2 = mol2.constraints[0].get_indices() assert all(fix_indices1 == fix_indices2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/ulm.py000066400000000000000000000015011316323560300234370ustar00rootroot00000000000000import numpy as np from ase.io.ulm import open class A: def write(self, writer): writer.write(x=np.ones((2, 3))) @staticmethod def read(reader): a = A() a.x = reader.x return a w = open('a.ulm', 'w') w.write(a=A(), y=9) w.write(s='abc') w.sync() w.write(s='abc2') w.sync() w.write(s='abc3', z=np.ones(7, int)) w.close() print(w.data) r = open('a.ulm') print(r.y, r.s) print(A.read(r.a).x) print(r.a.x) print(r[1].s) print(r[2].s) print(r[2].z) w = open('a.ulm', 'a') print(w.nitems, w.offsets) w.write(d={'h': [1, 'asdf']}) w.add_array('psi', (4, 3)) w.fill(np.ones((1, 3))) w.fill(np.ones((1, 3)) * 2) w.fill(np.ones((2, 3)) * 3) w.close() print(open('a.ulm', 'r', 3).d) print(open('a.ulm')[2].z) print(open('a.ulm', index=3).proxy('psi')[0:3]) for d in open('a.ulm'): print(d) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/v_sim.py000066400000000000000000000014321316323560300237620ustar00rootroot00000000000000"""Check reading of a sample v_sim .ascii file, and I/O consistency""" try: from urllib.request import urlretrieve from urllib.error import URLError except ImportError: from urllib import urlretrieve from urllib2 import URLError from socket import error as SocketError from ase.test import NotAvailable from ase.io import read dest = 'demo.ascii' src = 'http://inac.cea.fr/L_Sim/V_Sim/files/' + dest copy = 'demo2.ascii' try: urlretrieve(src, filename=dest) except (IOError, URLError, SocketError): raise NotAvailable('Retrieval of ' + src + ' failed') atoms = read(dest, format='v-sim') atoms.write(copy) atoms2 = read(copy) tol = 1e-6 assert sum(abs((atoms.positions - atoms2.positions).ravel())) < tol assert sum(abs((atoms.cell - atoms2.cell).ravel())) < tol ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/vasp_out.py000066400000000000000000004744061316323560300245240ustar00rootroot00000000000000import os from ase.io import read outcar = """ vasp.5.3.3 18Dez12gamma-only executed on BlueGene date 2015.03.18 12:12:14 running on 512 total cores distrk: each k-point on 512 cores, 1 groups distr: one band on NCORES_PER_BAND= 16 cores, 32 groups -------------------------------------------------------------------------------------------------------- INCAR: POTCAR: PAW_PBE Ni 02Aug2007 POTCAR: PAW_PBE Ni 02Aug2007 local pseudopotential read in partial core-charges read in partial kinetic energy density read in atomic valenz-charges read in non local Contribution for L= 2 read in real space projection operators read in non local Contribution for L= 2 read in real space projection operators read in non local Contribution for L= 0 read in real space projection operators read in non local Contribution for L= 0 read in real space projection operators read in non local Contribution for L= 1 read in real space projection operators read in non local Contribution for L= 1 read in real space projection operators read in PAW grid and wavefunctions read in number of l-projection operators is LMAX = 6 number of lm-projection operators is LMMAX = 18 Optimization of the real space projectors (new method) maximal supplied QI-value = 16.25 optimisation between [QCUT,QGAM] = [ 8.78, 17.71] = [ 21.57, 87.87] Ry Optimized for a Real-space Cutoff 1.55 Angstroem l n(q) QCUT max X(q) W(low)/X(q) W(high)/X(q) e(spline) 2 7 8.776 60.317 0.15E-03 0.44E-03 0.24E-06 2 7 8.776 55.921 0.15E-03 0.44E-03 0.24E-06 0 8 8.776 51.690 0.21E-03 0.23E-03 0.53E-07 0 8 8.776 30.015 0.19E-03 0.21E-03 0.49E-07 1 8 8.776 18.849 0.14E-03 0.18E-03 0.10E-06 1 8 8.776 14.624 0.13E-03 0.14E-03 0.89E-07 PAW_PBE Ni 02Aug2007 : energy of atom 1 EATOM=-1077.6739 kinetic energy error for atom= 0.0306 (will be added to EATOM!!) POSCAR: Ni positions in cartesian coordinates No initial velocities read in exchange correlation table for LEXCH = 8 RHO(1)= 0.500 N(1) = 2000 RHO(2)= 100.500 N(2) = 4000 -------------------------------------------------------------------------------------------------------- ion position nearest neighbor table 1 0.000 0.000 0.000- 14 2.30 3 2.43 5 2.49 2 2.49 9 2.51 8 2.53 12 2.56 11 2.60 18 2.64 6 2.65 7 2.65 16 2.71 2 0.938 0.877 0.985- 6 2.21 1 2.49 4 2.55 15 2.58 5 2.75 16 2.76 11 2.84 3 0.022 0.001 0.866- 7 2.14 1 2.43 9 2.47 10 2.51 4 2.68 6 2.71 5 2.72 4 0.937 0.880 0.843- 2 2.55 3 2.68 6 2.76 5 2.90 5 0.883 0.007 0.927- 10 2.23 8 2.37 1 2.49 11 2.63 3 2.72 2 2.75 4 2.90 6 0.054 0.875 0.943- 2 2.21 16 2.33 1 2.65 7 2.67 3 2.71 4 2.76 7 0.127 0.004 0.924- 3 2.14 9 2.50 12 2.61 1 2.65 13 2.66 6 2.67 8 0.914 0.111 0.002- 5 2.37 1 2.53 11 2.56 18 2.64 9 2.65 10 2.66 17 2.67 9 0.046 0.116 0.938- 13 2.40 18 2.42 3 2.47 7 2.50 1 2.51 8 2.65 10 2.67 10 0.924 0.100 0.855- 5 2.23 3 2.51 8 2.66 9 2.67 11 0.875 0.993 0.073- 15 2.17 14 2.52 8 2.56 1 2.60 5 2.63 17 2.71 2 2.84 12 0.125 0.998 0.069- 16 2.32 14 2.43 1 2.56 7 2.61 18 2.64 13 2.69 13 0.165 0.125 0.999- 9 2.40 18 2.55 7 2.66 12 2.69 14 0.003 0.009 0.128- 1 2.30 18 2.33 15 2.37 12 2.43 11 2.52 17 2.62 16 2.69 15 0.930 0.899 0.127- 11 2.17 14 2.37 2 2.58 16 2.63 16 0.065 0.884 0.072- 12 2.32 6 2.33 15 2.63 14 2.69 1 2.71 2 2.76 17 0.908 0.118 0.151- 14 2.62 8 2.67 11 2.71 18 2.80 18 0.043 0.120 0.073- 14 2.33 9 2.42 13 2.55 1 2.64 12 2.64 8 2.64 17 2.80 IMPORTANT INFORMATION: All symmetrisations will be switched off! NOSYMM: (Re-)initialisation of all symmetry stuff for point group C_1. KPOINTS: Gamma Automatic generation of k-mesh. Space group operators: irot det(A) alpha n_x n_y n_z tau_x tau_y tau_z 1 1.000000 0.000001 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 Subroutine IBZKPT returns following result: =========================================== Found 1 irreducible k-points: Following reciprocal coordinates: Coordinates Weight 0.000000 0.000000 0.000000 1.000000 Following cartesian coordinates: Coordinates Weight 0.000000 0.000000 0.000000 1.000000 -------------------------------------------------------------------------------------------------------- Dimension of arrays: k-points NKPTS = 1 k-points in BZ NKDIM = 1 number of bands NBANDS= 128 number of dos NEDOS = 301 number of ions NIONS = 18 non local maximal LDIM = 6 non local SUM 2l+1 LMDIM = 18 total plane-waves NPLWV = ****** max r-space proj IRMAX = 3441 max aug-charges IRDMAX= 7277 dimension x,y,z NGX = 108 NGY = 108 NGZ = 108 dimension x,y,z NGXF= 216 NGYF= 216 NGZF= 216 support grid NGXF= 216 NGYF= 216 NGZF= 216 ions per type = 18 NGX,Y,Z is equivalent to a cutoff of 10.01, 10.01, 10.01 a.u. NGXF,Y,Z is equivalent to a cutoff of 20.02, 20.02, 20.02 a.u. I would recommend the setting: dimension x,y,z NGX = 101 NGY = 101 NGZ = 101 SYSTEM = unknown system POSCAR = Ni Startparameter for this run: NWRITE = 0 write-flag & timer PREC = accura normal or accurate (medium, high low for compatibility) ISTART = 0 job : 0-new 1-cont 2-samecut ICHARG = 2 charge: 1-file 2-atom 10-const ISPIN = 2 spin polarized calculation? LNONCOLLINEAR = F non collinear calculations LSORBIT = F spin-orbit coupling INIWAV = 1 electr: 0-lowe 1-rand 2-diag LASPH = F aspherical Exc in radial PAW METAGGA= F non-selfconsistent MetaGGA calc. Electronic Relaxation 1 ENCUT = 300.0 eV 22.05 Ry 4.70 a.u. 25.33 25.33 25.33*2*pi/ulx,y,z ENINI = 300.0 initial cutoff ENAUG = 544.6 eV augmentation charge cutoff NELM = 120; NELMIN= 6; NELMDL=-17 # of ELM steps EDIFF = 0.1E-03 stopping-criterion for ELM LREAL = T real-space projection NLSPLINE = F spline interpolate recip. space projectors LCOMPAT= F compatible to vasp.4.4 GGA_COMPAT = T GGA compatible to vasp.4.4-vasp.4.6 LMAXPAW = -100 max onsite density LMAXMIX = 2 max onsite mixed and CHGCAR VOSKOWN= 1 Vosko Wilk Nusair interpolation ROPT = -0.00025 Ionic relaxation EDIFFG = 0.1E-02 stopping-criterion for IOM NSW = 0 number of steps for IOM NBLOCK = 1; KBLOCK = 1 inner block; outer block IBRION = -1 ionic relax: 0-MD 1-quasi-New 2-CG NFREE = 0 steps in history (QN), initial steepest desc. (CG) ISIF = 2 stress and relaxation IWAVPR = 10 prediction: 0-non 1-charg 2-wave 3-comb ISYM = 0 0-nonsym 1-usesym 2-fastsym LCORR = T Harris-Foulkes like correction to forces POTIM = 0.5000 time-step for ionic-motion TEIN = 0.0 initial temperature TEBEG = 0.0; TEEND = 0.0 temperature during run SMASS = -3.00 Nose mass-parameter (am) estimated Nose-frequenzy (Omega) = 0.10E-29 period in steps =****** mass= -0.735E-26a.u. SCALEE = 1.0000 scale energy and forces NPACO = 256; APACO = 16.0 distance and # of slots for P.C. PSTRESS= 0.0 pullay stress Mass of Ions in am POMASS = 58.69 Ionic Valenz ZVAL = 10.00 Atomic Wigner-Seitz radii RWIGS = -1.00 virtual crystal weights VCA = 1.00 NELECT = 180.0000 total number of electrons NUPDOWN= -1.0000 fix difference up-down DOS related values: EMIN = 10.00; EMAX =-10.00 energy-range for DOS EFERMI = 0.00 ISMEAR = 1; SIGMA = 0.10 broadening in eV -4-tet -1-fermi 0-gaus Electronic relaxation 2 (details) IALGO = 48 algorithm LDIAG = T sub-space diagonalisation (order eigenvalues) LSUBROT= T optimize rotation matrix (better conditioning) TURBO = 0 0=normal 1=particle mesh IRESTART = 0 0=no restart 2=restart with 2 vectors NREBOOT = 0 no. of reboots NMIN = 0 reboot dimension EREF = 0.00 reference energy to select bands IMIX = 4 mixing-type and parameters AMIX = 0.01; BMIX = 0.00 AMIX_MAG = 0.01; BMIX_MAG = 0.00 AMIN = 0.01 WC = 100.; INIMIX= 1; MIXPRE= 1; MAXMIX= -45 Intra band minimization: WEIMIN = 0.0000 energy-eigenvalue tresh-hold EBREAK = 0.20E-06 absolut break condition DEPER = 0.30 relativ break condition TIME = 0.40 timestep for ELM volume/ion in A,a.u. = 320.47 2162.62 Fermi-wavevector in a.u.,A,eV,Ry = 0.515403 0.973970 3.614251 0.265640 Thomas-Fermi vector in A = 1.530831 Write flags LWAVE = F write WAVECAR LCHARG = F write CHGCAR LVTOT = F write LOCPOT, total local potential LVHAR = F write LOCPOT, Hartree potential only LELF = F write electronic localiz. function (ELF) LORBIT = 0 0 simple, 1 ext, 2 COOP (PROOUT) Dipole corrections LMONO = F monopole corrections only (constant potential shift) LDIPOL = F correct potential (dipole corrections) IDIPOL = 0 1-x, 2-y, 3-z, 4-all directions EPSILON= 1.0000000 bulk dielectric constant Exchange correlation treatment: GGA = -- GGA type LEXCH = 8 internal setting for exchange type VOSKOWN= 1 Vosko Wilk Nusair interpolation LHFCALC = F Hartree Fock is set to LHFONE = F Hartree Fock one center treatment AEXX = 0.0000 exact exchange contribution Linear response parameters LEPSILON= F determine dielectric tensor LRPA = F only Hartree local field effects (RPA) LNABLA = F use nabla operator in PAW spheres LVEL = F velocity operator in full k-point grid LINTERFAST= F fast interpolation KINTER = 0 interpolate to denser k-point grid CSHIFT =0.1000 complex shift for real part using Kramers Kronig OMEGAMAX= -1.0 maximum frequency DEG_THRESHOLD= 0.2000000E-02 threshold for treating states as degnerate RTIME = 0.100 relaxation time in fs Orbital magnetization related: ORBITALMAG= F switch on orbital magnetization LCHIMAG = F perturbation theory with respect to B field DQ = 0.001000 dq finite difference perturbation B field -------------------------------------------------------------------------------------------------------- Static calculation charge density and potential will be updated during run spin polarized calculation RMM-DIIS sequential band-by-band perform sub-space diagonalisation before iterative eigenvector-optimisation modified Broyden-mixing scheme, WC = 100.0 initial mixing is a Kerker type mixing with AMIX = 0.0100 and BMIX = 0.0010 Hartree-type preconditioning will be used using additional bands 38 real space projection scheme for non local part use partial core corrections calculate Harris-corrections to forces (improved forces if not selfconsistent) use gradient corrections use of overlap-Matrix (Vanderbilt PP) Methfessel and Paxton Order N= 1 SIGMA = 0.10 -------------------------------------------------------------------------------------------------------- energy-cutoff : 300.00 volume of cell : 5768.42 direct lattice vectors reciprocal lattice vectors 17.934350000 0.000000000 0.000000000 0.055758921 0.000000000 0.000000000 0.000000000 17.934350000 0.000000000 0.000000000 0.055758921 0.000000000 0.000000000 0.000000000 17.934350000 0.000000000 0.000000000 0.055758921 length of vectors 17.934350000 17.934350000 17.934350000 0.055758921 0.055758921 0.055758921 k-points in units of 2pi/SCALE and weight: Gamma 0.00000000 0.00000000 0.00000000 1.000 k-points in reciprocal lattice and weights: Gamma 0.00000000 0.00000000 0.00000000 1.000 position of ions in fractional coordinates (direct lattice) 0.00000000 0.00000000 0.00000000 0.93794980 0.87650987 0.98520165 0.02170289 0.00108725 0.86619892 0.93663738 0.88018551 0.84317765 0.88259991 0.00731980 0.92675055 0.05378893 0.87499679 0.94311126 0.12659950 0.00353259 0.92353066 0.91353189 0.11112069 0.00236308 0.04610786 0.11638026 0.93780358 0.92362053 0.10004367 0.85477359 0.87491489 0.99271545 0.07265432 0.12497308 0.99842031 0.06897541 0.16454287 0.12521181 0.99927579 0.00306471 0.00937339 0.12767288 0.92987777 0.89943333 0.12683689 0.06483827 0.88420572 0.07210990 0.90771288 0.11793650 0.15072029 0.04266392 0.12039245 0.07279483 position of ions in cartesian coordinates (Angst): 0.00000000 0.00000000 0.00000000 16.82152001 15.71963487 17.66895116 0.38922716 0.01949909 15.53471463 16.79798256 15.78555505 15.12184307 15.82885567 0.13127593 16.62066873 0.96466952 15.69249868 16.91408735 2.27047979 0.06335463 16.56292203 16.38360070 1.99287731 0.04238037 0.82691443 2.08720427 16.81889767 16.56453390 1.79421821 15.32980868 15.69102981 17.80370632 1.30300800 2.24131098 17.90601935 1.23702917 2.95096945 2.24559249 17.92136171 0.05496356 0.16810560 2.28973015 16.67675347 16.13075214 2.27473721 1.16283228 15.85765493 1.29324412 16.27924042 2.11511442 2.70307051 0.76514962 2.15916035 1.30552794 -------------------------------------------------------------------------------------------------------- use parallel FFT for wavefunctions z direction half grid k-point 1 : 0.0000 0.0000 0.0000 plane waves: 34026 maximum and minimum number of plane-waves per node : 2130 2119 maximum number of plane-waves: 34026 maximum index in each direction: IXMAX= 25 IYMAX= 25 IZMAX= 25 IXMIN= -25 IYMIN= -25 IZMIN= 0 NGX is ok and might be reduce to 102 NGY is ok and might be reduce to 102 NGZ is ok and might be reduce to 102 redistribution in real space done redistribution in real space done real space projection operators: total allocation : 8338.50 KBytes max/ min on nodes : 522.00 520.31 total amount of memory used by VASP on root node 41380. kBytes ======================================================================== base : 30000. kBytes nonlr-proj: 854. kBytes fftplans : 2455. kBytes grid : 7762. kBytes one-center: 31. kBytes wavefun : 278. kBytes Broyden mixing: mesh for mixing (old mesh) NGX = 51 NGY = 51 NGZ = 51 (NGX =216 NGY =216 NGZ =216) gives a total of 132651 points initial charge density was supplied: charge density of overlapping atoms calculated number of electron 180.0000000 magnetization 18.0000000 keeping initial charge density in first step -------------------------------------------------------------------------------------------------------- Maximum index for non-local projection operator 275 Maximum index for augmentation-charges 36 (set IRDMAX) -------------------------------------------------------------------------------------------------------- First call to EWALD: gamma= 0.099 Maximum number of real-space cells 3x 3x 3 Maximum number of reciprocal cells 3x 3x 3 FEWALD executed in parallel FEWALD: cpu time********: real time 0.01 ----------------------------------------- Iteration 1( 1) --------------------------------------- POTLOK: cpu time********: real time 0.55 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.53 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time********: real time 1.67 eigenvalue-minimisations : 256 total energy-change (2. order) : 0.1641330E+04 (-0.2594491E+04) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.02334415 eigenvalues EBANDS = 690.09229602 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = 1641.32956354 eV energy without entropy = 1641.35290769 energy(sigma->0) = 1641.33734492 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 2) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.89: real time 0.89 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.7943085E+03 (-0.8109329E+03) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.01399822 eigenvalues EBANDS = -104.22550436 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = 847.02110910 eV energy without entropy = 847.03510732 energy(sigma->0) = 847.02577517 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 3) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.88: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.4304167E+03 (-0.4908210E+03) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = 0.03046763 eigenvalues EBANDS = -534.68662832 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = 416.60445099 eV energy without entropy = 416.57398335 energy(sigma->0) = 416.59429511 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 4) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.88: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.2927255E+03 (-0.2483848E+03) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = 0.03763116 eigenvalues EBANDS = -827.41931535 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = 123.87892749 eV energy without entropy = 123.84129633 energy(sigma->0) = 123.86638377 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 5) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.88: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.1180575E+03 (-0.8899778E+02) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = 0.00227882 eigenvalues EBANDS = -945.44145063 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = 5.82143986 eV energy without entropy = 5.81916105 energy(sigma->0) = 5.82068026 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 6) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.88: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.4676073E+02 (-0.3181193E+02) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = 0.02801949 eigenvalues EBANDS = -992.22792606 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -40.93929490 eV energy without entropy = -40.96731438 energy(sigma->0) = -40.94863473 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 7) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 15.84: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.2011458E+02 (-0.1246233E+02) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.00662144 eigenvalues EBANDS = -1012.30786209 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -61.05387186 eV energy without entropy = -61.04725042 energy(sigma->0) = -61.05166471 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 8) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.23: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.1078469E+02 (-0.5429074E+01) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.00768684 eigenvalues EBANDS = -1023.09148375 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -71.83855891 eV energy without entropy = -71.83087207 energy(sigma->0) = -71.83599663 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 9) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 0.96: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.4846076E+01 (-0.2990712E+01) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.05035632 eigenvalues EBANDS = -1027.89489024 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -76.68463488 eV energy without entropy = -76.63427856 energy(sigma->0) = -76.66784944 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 10) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time -14.50: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.1705400E+01 (-0.1048492E+01) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.04681194 eigenvalues EBANDS = -1029.60383448 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -78.39003474 eV energy without entropy = -78.34322281 energy(sigma->0) = -78.37443076 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 11) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 15.98: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.4516308E+00 (-0.3531961E+00) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03481691 eigenvalues EBANDS = -1030.06746035 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -78.84166559 eV energy without entropy = -78.80684868 energy(sigma->0) = -78.83005995 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 12) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.34 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.09: real time 0.88 eigenvalue-minimisations : 256 total energy-change (2. order) :-0.1433120E+00 (-0.1138781E+00) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03221744 eigenvalues EBANDS = -1030.21337181 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -78.98497757 eV energy without entropy = -78.95276013 energy(sigma->0) = -78.97423843 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 13) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.72 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.06: real time 1.26 eigenvalue-minimisations : 596 total energy-change (2. order) :-0.6846793E-01 (-0.6648730E-01) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03163100 eigenvalues EBANDS = -1030.28242618 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -79.05344550 eV energy without entropy = -79.02181450 energy(sigma->0) = -79.04290183 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 14) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.77 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.29: real time 1.31 eigenvalue-minimisations : 618 total energy-change (2. order) :-0.5400249E-02 (-0.4673752E-02) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03162224 eigenvalues EBANDS = -1030.28783518 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -79.05884575 eV energy without entropy = -79.02722350 energy(sigma->0) = -79.04830500 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 15) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.65 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.22: real time 1.20 eigenvalue-minimisations : 485 total energy-change (2. order) :-0.3989321E-03 (-0.3887558E-03) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03162366 eigenvalues EBANDS = -1030.28823270 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -79.05924468 eV energy without entropy = -79.02762102 energy(sigma->0) = -79.04870346 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 16) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.60 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 -------------------------------------------- LOOP: cpu time 1.11: real time 1.14 eigenvalue-minimisations : 383 total energy-change (2. order) :-0.6217352E-04 (-0.6095759E-04) number of electron 180.0000000 magnetization 18.0000000 augmentation part 180.0000000 magnetization 18.0000000 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03162382 eigenvalues EBANDS = -1030.28829471 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -79.05930685 eV energy without entropy = -79.02768303 energy(sigma->0) = -79.04876558 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 17) --------------------------------------- EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.20: real time 1.20 eigenvalue-minimisations : 334 total energy-change (2. order) :-0.3961817E-05 (-0.3832074E-05) number of electron 179.9999989 magnetization 18.0051779 augmentation part 105.6274765 magnetization 13.7616532 Broyden mixing: rms(total) = 0.29888E+01 rms(broyden)= 0.29847E+01 rms(prec ) = 0.32709E+01 weight for this iteration 100.00 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.21777876 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.21928679 PAW double counting = 17330.99712485 -18534.07282094 entropy T*S EENTRO = -0.03162383 eigenvalues EBANDS = -1030.28829866 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -79.05931082 eV energy without entropy = -79.02768699 energy(sigma->0) = -79.04876954 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 18) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.00: real time 2.00 eigenvalue-minimisations : 525 total energy-change (2. order) : 0.1637842E+01 (-0.2347337E-01) number of electron 179.9999993 magnetization 18.0096951 augmentation part 106.0730644 magnetization 13.7845193 Broyden mixing: rms(total) = 0.26898E+01 rms(broyden)= 0.26892E+01 rms(prec ) = 0.29134E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 1.2936 1.2936 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44668.34936133 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 550.13494882 PAW double counting = 17340.87529127 -18542.64015366 entropy T*S EENTRO = -0.02165793 eigenvalues EBANDS = -1030.75533603 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -77.42146910 eV energy without entropy = -77.39981117 energy(sigma->0) = -77.41424979 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 19) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.01: real time 2.01 eigenvalue-minimisations : 541 total energy-change (2. order) : 0.1252044E+01 (-0.1991785E-01) number of electron 179.9999995 magnetization 18.0158741 augmentation part 106.5497014 magnetization 13.8499225 Broyden mixing: rms(total) = 0.25529E+01 rms(broyden)= 0.25527E+01 rms(prec ) = 0.27523E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 2.5461 1.1659 3.9264 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44665.11492937 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 549.73402131 PAW double counting = 17354.53992036 -18554.60283285 entropy T*S EENTRO = -0.01567578 eigenvalues EBANDS = -1034.04472811 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -76.16942470 eV energy without entropy = -76.15374892 energy(sigma->0) = -76.16419944 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 20) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.00: real time 2.00 eigenvalue-minimisations : 544 total energy-change (2. order) : 0.2363952E+01 (-0.1029660E+00) number of electron 179.9999999 magnetization 18.0213408 augmentation part 107.6772141 magnetization 13.8853641 Broyden mixing: rms(total) = 0.23046E+01 rms(broyden)= 0.23044E+01 rms(prec ) = 0.24672E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 4.6333 11.2509 0.9470 1.7018 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44655.34370439 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 548.38659338 PAW double counting = 17394.32662810 -18590.06263115 entropy T*S EENTRO = -0.00407612 eigenvalues EBANDS = -1044.44308262 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -73.80547305 eV energy without entropy = -73.80139693 energy(sigma->0) = -73.80411434 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 21) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.99: real time 1.99 eigenvalue-minimisations : 539 total energy-change (2. order) : 0.3508528E+01 (-0.4422154E+00) number of electron 180.0000002 magnetization 18.0089900 augmentation part 109.9907187 magnetization 13.9773004 Broyden mixing: rms(total) = 0.17956E+01 rms(broyden)= 0.17954E+01 rms(prec ) = 0.19011E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 6.3565 20.9756 2.3889 0.9216 1.1401 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44634.80716982 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 545.49639452 PAW double counting = 17490.49866544 -18677.55539646 entropy T*S EENTRO = -0.02581595 eigenvalues EBANDS = -1067.23842253 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -70.29694506 eV energy without entropy = -70.27112910 energy(sigma->0) = -70.28833974 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 22) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.00: real time 2.00 eigenvalue-minimisations : 541 total energy-change (2. order) : 0.1839234E+01 (-0.6238985E+00) number of electron 180.0000001 magnetization 17.9673403 augmentation part 113.2059761 magnetization 15.2427283 Broyden mixing: rms(total) = 0.13155E+01 rms(broyden)= 0.13150E+01 rms(prec ) = 0.13747E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 5.1753 20.1550 2.6145 0.8957 1.1290 1.0820 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44616.50225294 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 542.23365487 PAW double counting = 17626.81238242 -18804.74459062 entropy T*S EENTRO = -0.01811963 eigenvalues EBANDS = -1089.57358494 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.45771108 eV energy without entropy = -68.43959145 energy(sigma->0) = -68.45167120 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 23) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.95: real time 2.00 eigenvalue-minimisations : 559 total energy-change (2. order) : 0.1183178E+00 (-0.1490409E-01) number of electron 180.0000000 magnetization 17.8167226 augmentation part 112.9898788 magnetization 14.9155578 Broyden mixing: rms(total) = 0.12568E+01 rms(broyden)= 0.12568E+01 rms(prec ) = 0.13071E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 5.5042 23.2447 4.5895 1.9822 1.3399 0.9345 0.9345 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44623.98307233 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 542.50415800 PAW double counting = 17637.86902256 -18817.09894067 entropy T*S EENTRO = -0.02111123 eigenvalues EBANDS = -1080.94424941 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.33939333 eV energy without entropy = -68.31828209 energy(sigma->0) = -68.33235625 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 24) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.08: real time 2.00 eigenvalue-minimisations : 546 total energy-change (2. order) : 0.3567386E+00 (-0.3840826E-01) number of electron 179.9999999 magnetization 17.6111592 augmentation part 113.2781862 magnetization 14.6862524 Broyden mixing: rms(total) = 0.11629E+01 rms(broyden)= 0.11628E+01 rms(prec ) = 0.11986E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 6.0841 28.3571 7.3620 2.4356 1.5761 0.9269 0.9269 1.0042 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44642.46634129 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 541.90886247 PAW double counting = 17732.54971101 -18912.29710463 entropy T*S EENTRO = -0.01766483 eigenvalues EBANDS = -1060.99491725 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -67.98265476 eV energy without entropy = -67.96498993 energy(sigma->0) = -67.97676648 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 25) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.98: real time 2.01 eigenvalue-minimisations : 548 total energy-change (2. order) : 0.2159125E+00 (-0.5001844E-01) number of electron 180.0000000 magnetization 17.1212510 augmentation part 113.4451226 magnetization 14.1433714 Broyden mixing: rms(total) = 0.10740E+01 rms(broyden)= 0.10739E+01 rms(prec ) = 0.10962E+01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 8.0246 41.1245 14.1125 2.8344 2.0214 1.2433 0.9843 0.9383 0.9383 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44669.11162591 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 541.37396682 PAW double counting = 17851.20402120 -19032.52406339 entropy T*S EENTRO = -0.01782546 eigenvalues EBANDS = -1032.02601529 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -67.76674229 eV energy without entropy = -67.74891682 energy(sigma->0) = -67.76080046 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 26) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.00: real time 2.00 eigenvalue-minimisations : 554 total energy-change (2. order) : 0.7096634E-02 (-0.1070289E+00) number of electron 179.9999999 magnetization 16.7963576 augmentation part 112.4325541 magnetization 13.0727343 Broyden mixing: rms(total) = 0.87299E+00 rms(broyden)= 0.87267E+00 rms(prec ) = 0.88475E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 9.3551 57.7461 15.2289 3.4431 2.2816 1.6147 1.0252 0.9960 0.9301 0.9301 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44738.16960617 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 541.40776224 PAW double counting = 18090.49218466 -19279.97694025 entropy T*S EENTRO = -0.02570331 eigenvalues EBANDS = -954.82214257 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -67.75964565 eV energy without entropy = -67.73394234 energy(sigma->0) = -67.75107788 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 27) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.01: real time 2.01 eigenvalue-minimisations : 558 total energy-change (2. order) :-0.4743579E+00 (-0.7700879E-01) number of electron 179.9999998 magnetization 16.6264286 augmentation part 112.2571288 magnetization 12.7443734 Broyden mixing: rms(total) = 0.77153E+00 rms(broyden)= 0.77132E+00 rms(prec ) = 0.80403E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 9.7800 68.7554 15.8282 3.8006 2.1488 2.1488 1.1446 1.1446 0.9286 0.9286 0.9713 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44777.45875289 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.92710828 PAW double counting = 18288.22920186 -19482.53348023 entropy T*S EENTRO = -0.01860898 eigenvalues EBANDS = -910.71427130 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.23400352 eV energy without entropy = -68.21539454 energy(sigma->0) = -68.22780053 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 28) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.45: real time 2.01 eigenvalue-minimisations : 567 total energy-change (2. order) :-0.3212041E+00 (-0.1991231E-01) number of electron 180.0000000 magnetization 16.6688819 augmentation part 112.1616897 magnetization 12.7430210 Broyden mixing: rms(total) = 0.72210E+00 rms(broyden)= 0.72202E+00 rms(prec ) = 0.78111E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 9.4386 70.1121 15.9974 6.3648 2.3523 2.3523 1.3997 1.3997 0.9344 0.9344 0.9888 0.9888 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44795.14331626 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.71480596 PAW double counting = 18400.00587111 -19597.49600537 entropy T*S EENTRO = -0.00840864 eigenvalues EBANDS = -889.96295420 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.55520765 eV energy without entropy = -68.54679901 energy(sigma->0) = -68.55240477 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 29) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.59: real time 2.01 eigenvalue-minimisations : 543 total energy-change (2. order) : 0.2045745E+00 (-0.7807207E-02) number of electron 179.9999999 magnetization 16.4517649 augmentation part 112.5179164 magnetization 12.7364263 Broyden mixing: rms(total) = 0.66318E+00 rms(broyden)= 0.66309E+00 rms(prec ) = 0.70241E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 10.4870 82.2673 20.3820 9.8849 2.7153 2.7153 1.6762 1.3031 0.9236 1.0062 1.0062 0.9819 0.9819 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44772.47678648 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.46911215 PAW double counting = 18431.89351434 -19630.95408932 entropy T*S EENTRO = -0.01930010 eigenvalues EBANDS = -910.59788346 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.35063312 eV energy without entropy = -68.33133302 energy(sigma->0) = -68.34419975 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 30) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.98: real time 2.00 eigenvalue-minimisations : 539 total energy-change (2. order) :-0.1128110E-01 (-0.1898470E-01) number of electron 180.0000001 magnetization 16.4753425 augmentation part 112.1507718 magnetization 12.7338797 Broyden mixing: rms(total) = 0.48633E+00 rms(broyden)= 0.48614E+00 rms(prec ) = 0.53993E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 10.9489 86.2679 29.0804 11.7200 3.0130 2.6671 2.0644 1.6515 1.1198 0.9909 0.9909 0.9453 0.9453 0.8794 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44769.50814263 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48453257 PAW double counting = 18636.78513188 -19846.20054188 entropy T*S EENTRO = -0.00661094 eigenvalues EBANDS = -903.25108297 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.36191422 eV energy without entropy = -68.35530328 energy(sigma->0) = -68.35971057 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 31) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 4.30: real time 2.01 eigenvalue-minimisations : 545 total energy-change (2. order) : 0.2554422E+00 (-0.1168892E+00) number of electron 180.0000000 magnetization 16.4831301 augmentation part 111.8611244 magnetization 12.8546919 Broyden mixing: rms(total) = 0.34219E+00 rms(broyden)= 0.34190E+00 rms(prec ) = 0.36055E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.1314 94.8992 31.4548 12.8146 3.2132 2.4944 2.2467 1.8121 1.2338 1.0174 1.0174 0.9226 0.9226 0.8957 0.8957 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44729.04030524 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.89014382 PAW double counting = 18719.85833349 -19938.13200795 entropy T*S EENTRO = -0.00743944 eigenvalues EBANDS = -935.00999647 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.10647203 eV energy without entropy = -68.09903259 energy(sigma->0) = -68.10399222 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 32) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 0.16: real time 2.00 eigenvalue-minimisations : 562 total energy-change (2. order) :-0.1550037E-01 (-0.1769870E-01) number of electron 180.0000001 magnetization 16.4127721 augmentation part 112.4162051 magnetization 13.1670130 Broyden mixing: rms(total) = 0.18708E+00 rms(broyden)= 0.18660E+00 rms(prec ) = 0.19495E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 10.7166 99.2313 30.3710 12.5815 3.0327 3.0327 2.1097 2.1097 1.3503 1.1639 0.9845 0.9845 1.0025 1.0025 0.8964 0.8964 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44705.15642449 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.38570584 PAW double counting = 18797.92403054 -20018.54533360 entropy T*S EENTRO = -0.00935456 eigenvalues EBANDS = -956.05539587 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.12197240 eV energy without entropy = -68.11261784 energy(sigma->0) = -68.11885421 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 33) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 2.47: real time 2.01 eigenvalue-minimisations : 532 total energy-change (2. order) :-0.1193233E-01 (-0.1850923E-02) number of electron 180.0000001 magnetization 16.4217591 augmentation part 112.3268127 magnetization 13.1054268 Broyden mixing: rms(total) = 0.19450E+00 rms(broyden)= 0.19444E+00 rms(prec ) = 0.20186E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 10.1854 98.2863 30.6470 12.3807 4.2247 2.9659 2.4132 2.4132 1.6738 1.2927 1.0620 1.0620 0.9491 0.9491 0.9417 0.8522 0.8522 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44714.85256624 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.36420604 PAW double counting = 18839.18670155 -20060.97348010 entropy T*S EENTRO = -0.00896952 eigenvalues EBANDS = -945.18459621 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.13390473 eV energy without entropy = -68.12493520 energy(sigma->0) = -68.13091489 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 34) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 3.02: real time 2.01 eigenvalue-minimisations : 548 total energy-change (2. order) : 0.1150850E-01 (-0.4663049E-03) number of electron 180.0000000 magnetization 16.4447926 augmentation part 112.2278396 magnetization 13.0838299 Broyden mixing: rms(total) = 0.20644E+00 rms(broyden)= 0.20643E+00 rms(prec ) = 0.21362E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 9.8368 98.1165 30.8404 12.3796 6.8957 3.0128 2.6962 2.4612 1.7581 1.3598 1.0694 1.0694 0.9508 0.9508 0.9339 0.8813 0.9252 0.9252 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44715.34317922 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.46542944 PAW double counting = 18831.53626492 -20053.49931891 entropy T*S EENTRO = -0.00887262 eigenvalues EBANDS = -944.60751958 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.12239622 eV energy without entropy = -68.11352360 energy(sigma->0) = -68.11943868 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 35) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 1.00: real time 2.01 eigenvalue-minimisations : 554 total energy-change (2. order) : 0.2034874E-02 (-0.2241723E-03) number of electron 180.0000000 magnetization 16.4655852 augmentation part 112.2767411 magnetization 13.1398545 Broyden mixing: rms(total) = 0.18786E+00 rms(broyden)= 0.18785E+00 rms(prec ) = 0.19334E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 10.7374 102.4058 28.1399 28.1399 12.9425 3.0475 3.0475 2.5541 1.9252 1.8600 1.3254 1.1041 1.1041 0.9589 0.9589 0.9502 0.9502 0.9292 0.9292 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44712.03642190 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.43708928 PAW double counting = 18828.32225789 -20050.21158746 entropy T*S EENTRO = -0.00912653 eigenvalues EBANDS = -947.95737237 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.12036135 eV energy without entropy = -68.11123482 energy(sigma->0) = -68.11731917 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 36) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 3.02: real time 2.01 eigenvalue-minimisations : 527 total energy-change (2. order) :-0.3720967E-01 (-0.1749012E-02) number of electron 180.0000000 magnetization 16.5557044 augmentation part 112.2562191 magnetization 13.2144304 Broyden mixing: rms(total) = 0.16493E+00 rms(broyden)= 0.16486E+00 rms(prec ) = 0.17010E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.0784 106.6495 55.6164 31.1253 12.7705 3.1895 2.8512 2.8512 2.0059 2.0059 1.5170 1.1467 1.0678 1.0678 0.9418 0.9418 0.9519 0.9519 0.9501 0.8870 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44711.58142168 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.38207934 PAW double counting = 18851.63086569 -20074.50936259 entropy T*S EENTRO = -0.00676728 eigenvalues EBANDS = -947.40776425 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.15757102 eV energy without entropy = -68.15080374 energy(sigma->0) = -68.15531526 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 37) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 0.55: real time 2.01 eigenvalue-minimisations : 530 total energy-change (2. order) :-0.3376064E-01 (-0.4147047E-02) number of electron 179.9999999 magnetization 16.5679601 augmentation part 112.2543191 magnetization 13.2541318 Broyden mixing: rms(total) = 0.13275E+00 rms(broyden)= 0.13257E+00 rms(prec ) = 0.13746E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.9608 110.8270 58.2433 31.4737 12.7662 3.7157 3.0002 3.0002 2.3512 1.8569 1.6270 1.3590 1.1494 1.1494 0.9598 0.9598 0.9513 0.9513 0.9780 0.9780 0.9181 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44704.33985528 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.38451441 PAW double counting = 18849.29632834 -20072.72795872 entropy T*S EENTRO = -0.00393737 eigenvalues EBANDS = -954.13522279 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.19133166 eV energy without entropy = -68.18739428 energy(sigma->0) = -68.19001920 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 38) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 1.25: real time 2.02 eigenvalue-minimisations : 560 total energy-change (2. order) :-0.4659594E-03 (-0.4881807E-03) number of electron 179.9999999 magnetization 16.5632639 augmentation part 112.2997323 magnetization 13.2773450 Broyden mixing: rms(total) = 0.11087E+00 rms(broyden)= 0.11080E+00 rms(prec ) = 0.11420E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.3721 110.5042 57.7614 31.4956 12.7725 3.5859 2.9704 2.9704 2.3542 1.8527 1.5965 1.3227 1.1368 1.1368 0.9579 0.9579 0.9512 0.9512 0.9786 0.9786 0.9166 0.6615 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44703.31365655 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.33718924 PAW double counting = 18858.71542926 -20082.34651688 entropy T*S EENTRO = -0.00378340 eigenvalues EBANDS = -954.91525904 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.19179762 eV energy without entropy = -68.18801422 energy(sigma->0) = -68.19053648 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 39) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.57 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 2.66: real time 1.90 eigenvalue-minimisations : 371 total energy-change (2. order) : 0.8138797E-02 (-0.2612777E-04) number of electron 179.9999999 magnetization 16.6210987 augmentation part 112.2876673 magnetization 13.3277969 Broyden mixing: rms(total) = 0.11502E+00 rms(broyden)= 0.11501E+00 rms(prec ) = 0.11855E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.8592 114.2517 63.5070 31.2734 13.6600 11.7284 3.1841 3.1841 2.5192 2.5192 1.8741 1.8741 1.3902 1.1085 1.1085 1.0392 1.0392 0.9498 0.9498 0.9455 0.9455 0.9256 0.9256 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44703.68725165 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.35138577 PAW double counting = 18858.62904130 -20082.28328136 entropy T*S EENTRO = -0.00366210 eigenvalues EBANDS = -954.52469052 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.18365882 eV energy without entropy = -68.17999672 energy(sigma->0) = -68.18243812 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 40) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 1.75: real time 2.02 eigenvalue-minimisations : 529 total energy-change (2. order) :-0.1892202E-01 (-0.4336792E-03) number of electron 179.9999998 magnetization 16.6456941 augmentation part 112.2529816 magnetization 13.3534213 Broyden mixing: rms(total) = 0.10643E+00 rms(broyden)= 0.10636E+00 rms(prec ) = 0.11070E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.8004 114.9266 65.9931 31.2772 19.5403 12.5675 3.2006 3.2006 2.5603 2.5603 1.8640 1.8640 1.4095 1.1062 1.1062 1.0464 1.0464 0.9494 0.9494 0.9439 0.9439 0.9270 0.9270 0.4983 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44701.71932235 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.40261409 PAW double counting = 18855.74373189 -20079.69356987 entropy T*S EENTRO = -0.00117867 eigenvalues EBANDS = -956.26965568 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.20258084 eV energy without entropy = -68.20140217 energy(sigma->0) = -68.20218795 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 41) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 3.75: real time 2.02 eigenvalue-minimisations : 550 total energy-change (2. order) : 0.1044865E-02 (-0.1111374E-03) number of electron 179.9999998 magnetization 16.7076649 augmentation part 112.2483236 magnetization 13.4205689 Broyden mixing: rms(total) = 0.10127E+00 rms(broyden)= 0.10125E+00 rms(prec ) = 0.10543E+00 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.6438 120.8308 74.7973 36.0276 29.6048 12.6722 3.2411 3.2411 2.5761 2.5761 2.1502 1.8799 1.5355 1.3014 1.1450 1.1450 1.0773 0.9244 0.9244 0.9500 0.9500 0.9505 0.9505 1.0005 1.0005 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44701.07570590 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.42605164 PAW double counting = 18851.65525248 -20075.55273272 entropy T*S EENTRO = -0.00040149 eigenvalues EBANDS = -956.98879973 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.20153598 eV energy without entropy = -68.20113448 energy(sigma->0) = -68.20140214 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 42) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 0.55: real time 2.02 eigenvalue-minimisations : 527 total energy-change (2. order) :-0.1021932E-01 (-0.3832490E-03) number of electron 179.9999998 magnetization 16.7387825 augmentation part 112.2826126 magnetization 13.4794814 Broyden mixing: rms(total) = 0.70906E-01 rms(broyden)= 0.70825E-01 rms(prec ) = 0.72848E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.4655 119.4871 78.3120 37.3295 30.2394 12.6848 3.6942 3.6942 3.1459 2.9407 2.1966 2.1966 1.7850 1.7850 1.2963 1.1247 1.1247 0.9522 0.9522 1.0040 1.0040 0.9457 0.9457 0.9756 0.9106 0.9106 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44700.13543247 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.42837978 PAW double counting = 18845.30939058 -20068.92301199 entropy T*S EENTRO = 0.00073960 eigenvalues EBANDS = -958.22662054 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.21175529 eV energy without entropy = -68.21249489 energy(sigma->0) = -68.21200183 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 43) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.69 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 4.61: real time 2.02 eigenvalue-minimisations : 547 total energy-change (2. order) : 0.9025731E-03 (-0.1542541E-03) number of electron 179.9999999 magnetization 16.7400393 augmentation part 112.3151511 magnetization 13.5015071 Broyden mixing: rms(total) = 0.60476E-01 rms(broyden)= 0.60438E-01 rms(prec ) = 0.62561E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.0191 119.9392 78.2446 37.2892 30.1791 12.6833 4.2366 3.5822 3.1273 2.9334 2.2007 2.2007 1.7827 1.7827 1.2986 1.1234 1.1234 0.9522 0.9522 1.0048 1.0048 0.9457 0.9457 0.9728 0.9098 0.9098 0.1711 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44698.24623165 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.42928844 PAW double counting = 18837.73743426 -20061.09496565 entropy T*S EENTRO = 0.00135112 eigenvalues EBANDS = -960.37252898 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.21085272 eV energy without entropy = -68.21220384 energy(sigma->0) = -68.21130309 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 44) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.52 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time -0.73: real time 1.86 eigenvalue-minimisations : 339 total energy-change (2. order) : 0.1644296E-02 (-0.5662872E-05) number of electron 179.9999998 magnetization 16.7533079 augmentation part 112.3156252 magnetization 13.5142441 Broyden mixing: rms(total) = 0.60376E-01 rms(broyden)= 0.60372E-01 rms(prec ) = 0.62535E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 11.8920 122.4768 79.1033 35.1164 30.5496 12.6553 7.8919 3.7459 3.0446 3.0446 2.3814 2.3814 1.8684 1.8684 1.3759 1.3759 1.3160 1.1323 1.1323 0.9519 0.9519 1.0099 1.0099 0.9453 0.9453 0.9824 0.9131 0.9131 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44698.35117531 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.43046097 PAW double counting = 18838.43606447 -20061.81567895 entropy T*S EENTRO = 0.00148056 eigenvalues EBANDS = -960.24515991 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.20920842 eV energy without entropy = -68.21068898 energy(sigma->0) = -68.20970194 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 45) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.60 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 1.67: real time 1.93 eigenvalue-minimisations : 401 total energy-change (2. order) :-0.2819471E-02 (-0.3624946E-04) number of electron 179.9999998 magnetization 16.8445862 augmentation part 112.2962919 magnetization 13.5999571 Broyden mixing: rms(total) = 0.58330E-01 rms(broyden)= 0.58318E-01 rms(prec ) = 0.60078E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.1928 127.1889 92.3048 41.9203 34.3830 26.4883 12.6852 3.4617 3.1991 2.8128 2.4813 2.4813 1.8946 1.8946 1.5451 1.5451 1.2655 1.1340 1.1340 0.9527 0.9527 1.0071 1.0071 0.9465 0.9465 0.9187 0.9187 0.9639 0.9639 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44698.11519648 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.45108591 PAW double counting = 18838.63179294 -20062.14953819 entropy T*S EENTRO = 0.00189394 eigenvalues EBANDS = -960.36686575 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.21202789 eV energy without entropy = -68.21392183 energy(sigma->0) = -68.21265921 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 46) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.68 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 3.25: real time 2.02 eigenvalue-minimisations : 522 total energy-change (2. order) :-0.1042094E-01 (-0.4807816E-03) number of electron 179.9999998 magnetization 16.8536358 augmentation part 112.3396806 magnetization 13.6313467 Broyden mixing: rms(total) = 0.34849E-01 rms(broyden)= 0.34640E-01 rms(prec ) = 0.36364E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.0696 133.2178 91.2946 45.7399 33.2404 27.6218 12.6882 3.4632 3.2145 2.8104 2.5016 2.5016 1.9096 1.9096 1.6131 1.6131 1.2617 1.1302 1.1302 0.9532 0.9532 1.0052 1.0052 0.9469 0.9469 0.9197 0.9197 0.9526 0.9526 0.6028 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44695.68511875 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.46852129 PAW double counting = 18822.32436775 -20045.28750786 entropy T*S EENTRO = 0.00347246 eigenvalues EBANDS = -963.38098347 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22244884 eV energy without entropy = -68.22592130 energy(sigma->0) = -68.22360632 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 47) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.57 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.02 -------------------------------------------- LOOP: cpu time 0.96: real time 1.91 eigenvalue-minimisations : 395 total energy-change (2. order) : 0.1589835E-02 (-0.3794766E-04) number of electron 179.9999998 magnetization 16.8537458 augmentation part 112.3388133 magnetization 13.6273466 Broyden mixing: rms(total) = 0.31159E-01 rms(broyden)= 0.31105E-01 rms(prec ) = 0.32407E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.7786 133.4445 91.4295 46.2749 33.3610 27.9535 12.6883 2.6294 3.4411 3.2240 2.7863 2.5505 2.5505 1.9266 1.9266 1.5376 1.5376 1.2399 1.1316 1.1316 0.9516 0.9516 0.9848 0.9848 1.0180 1.0180 0.9440 0.9440 0.9149 0.9149 0.9649 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.29290478 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.47139559 PAW double counting = 18824.02071635 -20047.01503968 entropy T*S EENTRO = 0.00382508 eigenvalues EBANDS = -962.74365130 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22085900 eV energy without entropy = -68.22468409 energy(sigma->0) = -68.22213403 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 48) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.85: real time 0.15 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 1.86: real time 1.86 eigenvalue-minimisations : 331 total energy-change (2. order) : 0.2073169E-02 (-0.8026063E-05) number of electron 179.9999998 magnetization 16.8833330 augmentation part 112.3450965 magnetization 13.6607979 Broyden mixing: rms(total) = 0.31059E-01 rms(broyden)= 0.31053E-01 rms(prec ) = 0.32412E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.0412 138.9551 93.0369 53.0929 34.3312 28.5686 12.6856 6.0078 3.4097 3.0991 3.0991 2.6833 2.3892 1.9110 1.9110 1.8570 1.5190 1.5190 1.1631 1.1631 1.1159 1.1159 0.9521 0.9521 1.0597 0.9450 0.9450 0.9925 0.9925 0.9165 0.9165 0.9711 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.06147360 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.46964265 PAW double counting = 18823.76097761 -20046.73275685 entropy T*S EENTRO = 0.00388653 eigenvalues EBANDS = -962.99386192 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.21878583 eV energy without entropy = -68.22267237 energy(sigma->0) = -68.22008135 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 49) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.57 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 1.92: real time 1.92 eigenvalue-minimisations : 393 total energy-change (2. order) :-0.3698198E-02 (-0.3591972E-04) number of electron 179.9999998 magnetization 16.9025128 augmentation part 112.3378676 magnetization 13.6733454 Broyden mixing: rms(total) = 0.25046E-01 rms(broyden)= 0.24989E-01 rms(prec ) = 0.26059E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.0344 142.5818 95.8128 53.7448 35.1567 28.9678 12.6787 9.3957 3.4380 3.1395 3.1395 2.6096 2.4713 2.1208 2.1208 1.8533 1.5027 1.5027 1.1653 1.1653 1.1052 1.1052 1.0671 0.9520 0.9520 0.9928 0.9928 0.9448 0.9448 0.9165 0.9165 0.9636 0.6818 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.13646329 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48480143 PAW double counting = 18821.49094422 -20044.44359868 entropy T*S EENTRO = 0.00441011 eigenvalues EBANDS = -962.95737756 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22248403 eV energy without entropy = -68.22689414 energy(sigma->0) = -68.22395407 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 50) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 3.69: real time 1.86 eigenvalue-minimisations : 328 total energy-change (2. order) :-0.6705293E-03 (-0.8424712E-05) number of electron 179.9999998 magnetization 16.9187124 augmentation part 112.3393735 magnetization 13.6871963 Broyden mixing: rms(total) = 0.22661E-01 rms(broyden)= 0.22625E-01 rms(prec ) = 0.23743E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.2650 142.9537 94.1648 58.8949 38.3640 29.0190 20.9460 12.6975 3.4835 3.2154 3.2154 2.6122 2.6122 2.4095 2.0147 1.8999 1.5144 1.5144 1.1412 1.1412 1.1145 1.1145 1.0737 0.9522 0.9522 0.9895 0.9895 0.9447 0.9447 0.9165 0.9165 0.9631 1.0294 1.0294 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.00364341 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49052176 PAW double counting = 18818.87321670 -20041.74809516 entropy T*S EENTRO = 0.00475366 eigenvalues EBANDS = -963.17470786 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22315456 eV energy without entropy = -68.22790823 energy(sigma->0) = -68.22473912 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 51) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 0.99: real time 1.86 eigenvalue-minimisations : 330 total energy-change (2. order) :-0.8487109E-03 (-0.1642156E-04) number of electron 179.9999998 magnetization 16.9299775 augmentation part 112.3349655 magnetization 13.6929890 Broyden mixing: rms(total) = 0.20242E-01 rms(broyden)= 0.20204E-01 rms(prec ) = 0.21110E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.2630 146.1603 93.8912 61.9194 41.4051 29.7894 23.0641 12.6953 3.4449 3.3016 3.3016 2.7071 2.6165 2.4865 1.9455 1.9455 1.5358 1.5358 1.1658 1.1658 1.1361 1.1361 1.1148 1.1148 1.0926 0.9521 0.9521 0.9912 0.9912 0.9451 0.9451 0.9167 0.9167 0.9645 0.6950 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.04626304 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49228505 PAW double counting = 18819.23275610 -20042.17105364 entropy T*S EENTRO = 0.00511350 eigenvalues EBANDS = -963.07164099 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22400327 eV energy without entropy = -68.22911677 energy(sigma->0) = -68.22570777 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 52) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 0.90: real time 1.86 eigenvalue-minimisations : 335 total energy-change (2. order) :-0.2678128E-03 (-0.1249901E-04) number of electron 179.9999998 magnetization 16.9306635 augmentation part 112.3351352 magnetization 13.6901378 Broyden mixing: rms(total) = 0.18379E-01 rms(broyden)= 0.18355E-01 rms(prec ) = 0.19015E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.9120 146.4553 93.8397 62.2847 41.3329 29.7453 23.1766 12.6953 3.4350 3.3043 3.3043 2.7030 2.5767 2.5221 1.9492 1.9492 1.5400 1.5400 1.1847 1.1847 1.1386 1.1386 1.1169 1.1169 1.0866 0.9521 0.9521 0.9917 0.9917 0.9451 0.9451 0.9167 0.9167 0.9648 0.5114 0.5114 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.21374319 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49218125 PAW double counting = 18819.00806681 -20041.94186479 entropy T*S EENTRO = 0.00535750 eigenvalues EBANDS = -962.90906842 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22427109 eV energy without entropy = -68.22962859 energy(sigma->0) = -68.22605692 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 53) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 1.86: real time 1.86 eigenvalue-minimisations : 300 total energy-change (2. order) : 0.7721094E-03 (-0.1986099E-05) number of electron 179.9999998 magnetization 16.9309731 augmentation part 112.3337142 magnetization 13.6900045 Broyden mixing: rms(total) = 0.18391E-01 rms(broyden)= 0.18388E-01 rms(prec ) = 0.19043E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.5797 145.6899 94.6121 62.2051 41.2998 29.8983 22.8083 12.6958 3.4229 3.3185 3.3185 2.7187 2.5281 2.5281 1.9529 1.9529 0.8357 0.8357 1.5476 1.5476 1.1544 1.1544 1.1357 1.1357 1.1378 1.0930 1.0930 0.9521 0.9521 0.9919 0.9919 0.9451 0.9451 0.9635 0.9167 0.9167 0.6731 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.20073303 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49333415 PAW double counting = 18819.01400822 -20041.95221065 entropy T*S EENTRO = 0.00539479 eigenvalues EBANDS = -962.91809220 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22349898 eV energy without entropy = -68.22889377 energy(sigma->0) = -68.22529724 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 54) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 5.30: real time 1.87 eigenvalue-minimisations : 298 total energy-change (2. order) : 0.3367491E-03 (-0.1112766E-05) number of electron 179.9999998 magnetization 16.9288647 augmentation part 112.3366877 magnetization 13.6884385 Broyden mixing: rms(total) = 0.18456E-01 rms(broyden)= 0.18456E-01 rms(prec ) = 0.19134E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.7149 141.8771 97.8754 65.4638 41.4263 30.3272 24.5017 12.6952 11.8570 3.4269 3.2609 3.2609 2.7506 2.7506 2.4258 1.9452 1.9452 1.6071 1.6071 1.3527 1.3527 1.1543 1.1543 1.1167 1.1167 1.0404 0.9163 0.9163 0.9611 0.9921 0.9921 0.9443 0.9443 0.9524 0.9524 0.9778 0.9778 0.6311 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.20903702 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49154157 PAW double counting = 18818.66389849 -20041.57438656 entropy T*S EENTRO = 0.00539663 eigenvalues EBANDS = -962.93537509 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22316223 eV energy without entropy = -68.22855885 energy(sigma->0) = -68.22496110 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 55) --------------------------------------- POTLOK: cpu time********: real time 0.53 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.03 -------------------------------------------- LOOP: cpu time 1.87: real time 1.87 eigenvalue-minimisations : 306 total energy-change (2. order) : 0.7522695E-03 (-0.7980996E-05) number of electron 179.9999998 magnetization 16.9560924 augmentation part 112.3476632 magnetization 13.7191434 Broyden mixing: rms(total) = 0.19280E-01 rms(broyden)= 0.19277E-01 rms(prec ) = 0.19999E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 12.6997 141.2626102.4629 69.4647 43.4183 30.9143 25.9380 12.6990 6.0852 6.0852 3.6329 3.2986 3.2986 2.7639 2.6577 2.4556 1.9284 1.9284 1.5191 1.5191 1.2052 1.2052 1.2103 1.2103 1.1190 1.1190 1.0530 0.9521 0.9521 0.9950 0.9950 0.9172 0.9172 0.9451 0.9445 0.9445 0.9675 0.9675 0.6354 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.23885556 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48325074 PAW double counting = 18817.37427387 -20040.17463501 entropy T*S EENTRO = 0.00532516 eigenvalues EBANDS = -963.00656890 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22240996 eV energy without entropy = -68.22773512 energy(sigma->0) = -68.22418501 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 56) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.54 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.04 -------------------------------------------- LOOP: cpu time 1.28: real time 1.90 eigenvalue-minimisations : 344 total energy-change (2. order) :-0.3372247E-02 (-0.1971179E-04) number of electron 179.9999998 magnetization 16.9775650 augmentation part 112.3482758 magnetization 13.7343233 Broyden mixing: rms(total) = 0.15875E-01 rms(broyden)= 0.15826E-01 rms(prec ) = 0.16336E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.2249 142.0979102.7055 79.3544 45.5993 30.4471 28.4632 25.7332 12.6923 3.9137 3.4438 3.1741 3.1741 2.7040 2.7040 2.4185 1.9237 1.9237 1.5855 1.4210 1.3352 1.3352 1.1450 1.1450 1.0994 1.0994 1.0431 1.0431 0.9522 0.9522 1.0542 0.9452 0.9452 0.9887 0.9887 0.9157 0.9157 0.9619 0.6315 0.7961 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.28980115 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48178419 PAW double counting = 18815.30026506 -20038.04455800 entropy T*S EENTRO = 0.00570279 eigenvalues EBANDS = -963.01397485 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22578220 eV energy without entropy = -68.23148499 energy(sigma->0) = -68.22768313 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 57) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.04 -------------------------------------------- LOOP: cpu time -0.94: real time 1.88 eigenvalue-minimisations : 330 total energy-change (2. order) :-0.1375769E-02 (-0.1072616E-04) number of electron 179.9999998 magnetization 16.9898019 augmentation part 112.3422297 magnetization 13.7398810 Broyden mixing: rms(total) = 0.13156E-01 rms(broyden)= 0.13062E-01 rms(prec ) = 0.13518E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.5595 133.6933110.5829 91.2425 48.8069 39.1696 30.2284 25.2699 12.6932 4.1328 3.5944 3.2657 3.1575 2.8335 2.6450 2.4466 1.9305 1.9305 1.5646 1.5646 1.3897 1.3897 1.1312 1.1312 1.2186 1.1175 1.1175 1.1082 0.9521 0.9521 0.9912 0.9912 1.0078 0.9454 0.9454 0.9552 0.9173 0.9173 0.9060 0.9060 0.6359 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.03441599 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48594088 PAW double counting = 18815.25389973 -20038.06625558 entropy T*S EENTRO = 0.00599555 eigenvalues EBANDS = -963.20712230 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22715797 eV energy without entropy = -68.23315352 energy(sigma->0) = -68.22915649 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 58) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.04 -------------------------------------------- LOOP: cpu time 1.88: real time 1.88 eigenvalue-minimisations : 338 total energy-change (2. order) :-0.2576689E-03 (-0.7888143E-05) number of electron 179.9999998 magnetization 16.9938209 augmentation part 112.3417788 magnetization 13.7383240 Broyden mixing: rms(total) = 0.12046E-01 rms(broyden)= 0.11991E-01 rms(prec ) = 0.12399E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.3830 134.0640113.3009 93.6979 48.4792 39.2428 30.2925 25.2926 12.6933 4.3477 3.5620 3.3138 3.1376 2.8574 2.6367 2.4556 1.9317 1.9317 1.5735 1.5735 1.4301 1.4301 1.1516 1.1516 1.2256 1.1178 1.1178 1.1034 0.9520 0.9520 1.0247 0.9893 0.9893 0.9498 0.9174 0.9174 0.9453 0.9453 0.9172 0.9172 0.5372 0.6380 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.18249997 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48540416 PAW double counting = 18815.05171715 -20037.86270032 entropy T*S EENTRO = 0.00619922 eigenvalues EBANDS = -963.06033562 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22741564 eV energy without entropy = -68.23361486 energy(sigma->0) = -68.22948205 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 59) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.04 -------------------------------------------- LOOP: cpu time 1.87: real time 1.87 eigenvalue-minimisations : 297 total energy-change (2. order) : 0.3062334E-03 (-0.1974433E-05) number of electron 179.9999998 magnetization 16.9952281 augmentation part 112.3386221 magnetization 13.7378445 Broyden mixing: rms(total) = 0.11469E-01 rms(broyden)= 0.11455E-01 rms(prec ) = 0.11849E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.1646 131.1766116.0088 94.5321 46.8992 41.3410 30.2014 25.2711 12.6931 5.4181 3.5033 3.3159 3.1818 2.8229 2.6446 2.4648 1.9392 1.9392 1.7045 1.7045 1.5838 1.5838 1.2220 1.2220 1.2355 1.1235 1.1235 1.0128 1.0128 1.0616 1.0616 0.9522 0.9522 0.9893 0.9893 0.9453 0.9453 0.9171 0.9171 0.9586 0.8525 0.8525 0.6357 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.20106514 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48763314 PAW double counting = 18815.11606988 -20037.94488312 entropy T*S EENTRO = 0.00629643 eigenvalues EBANDS = -963.02596035 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22710941 eV energy without entropy = -68.23340584 energy(sigma->0) = -68.22920822 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 60) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.04 -------------------------------------------- LOOP: cpu time 5.38: real time 1.87 eigenvalue-minimisations : 292 total energy-change (2. order) : 0.2315639E-03 (-0.1027265E-05) number of electron 179.9999998 magnetization 17.0037906 augmentation part 112.3413652 magnetization 13.7465323 Broyden mixing: rms(total) = 0.11342E-01 rms(broyden)= 0.11340E-01 rms(prec ) = 0.11733E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 13.2524 131.7941117.2282 99.4881 48.7696 39.8014 30.5981 25.2699 12.6823 12.3199 3.4418 3.2966 3.2966 2.8126 2.8126 2.6726 2.4257 2.0185 2.0185 1.9350 1.5644 1.5644 1.2783 1.2783 1.2417 1.1104 1.1104 1.1231 1.1231 0.9522 0.9522 1.0494 1.0494 0.9905 0.9905 0.9457 0.9457 0.9529 0.9183 0.9183 0.8968 0.8968 0.6347 0.6826 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44696.18618491 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48592048 PAW double counting = 18815.07458660 -20037.89232648 entropy T*S EENTRO = 0.00631420 eigenvalues EBANDS = -963.04998750 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22687785 eV energy without entropy = -68.23319205 energy(sigma->0) = -68.22898258 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 61) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.05 -------------------------------------------- LOOP: cpu time 2.26: real time 1.87 eigenvalue-minimisations : 312 total energy-change (2. order) :-0.6044365E-03 (-0.3272409E-05) number of electron 179.9999998 magnetization 17.0305070 augmentation part 112.3383040 magnetization 13.7707762 Broyden mixing: rms(total) = 0.99778E-02 rms(broyden)= 0.99619E-02 rms(prec ) = 0.10294E-01 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 14.5272 142.0695142.0695 99.4270 56.3810 44.4794 31.9677 31.9677 23.8721 12.6936 3.4447 3.4169 3.4169 3.0424 3.0424 2.7476 2.4023 2.3233 1.9281 1.9281 1.5805 1.5805 1.3810 1.3810 1.2643 1.1463 1.1463 1.1135 1.1135 1.0970 0.9522 0.9522 0.9997 0.9997 0.9453 0.9453 0.9846 0.9846 0.9949 0.9162 0.9162 0.9595 0.8662 0.6354 0.7196 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44695.93829595 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48859168 PAW double counting = 18815.15524489 -20038.01828641 entropy T*S EENTRO = 0.00641746 eigenvalues EBANDS = -963.25595370 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22748228 eV energy without entropy = -68.23389974 energy(sigma->0) = -68.22962143 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 62) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.48 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.00 CHARGE: cpu time -0.86: real time 0.14 MIXING: cpu time********: real time 0.05 -------------------------------------------- LOOP: cpu time -2.04: real time 1.85 eigenvalue-minimisations : 325 total energy-change (2. order) :-0.1209010E-02 (-0.1442126E-04) number of electron 179.9999998 magnetization 17.0482806 augmentation part 112.3359225 magnetization 13.7762245 Broyden mixing: rms(total) = 0.82784E-02 rms(broyden)= 0.80818E-02 rms(prec ) = 0.84162E-02 weight for this iteration 100.00 eigenvalues of (default mixing * dielectric matrix) average eigenvalue GAMMA= 16.6346 154.6738154.6738 99.0839 54.6374 46.7814 36.4441 32.2563 24.9531 10.9930 3.6039 3.6039 3.3878 3.0214 3.0214 2.8172 2.5204 2.4203 1.9242 1.9242 1.5230 1.5230 1.5433 1.3282 1.3282 0.6245 0.7339 1.1139 1.1139 1.1368 1.1368 0.9689 0.9689 1.0228 1.0228 0.8828 0.8828 0.9351 0.9351 0.9776 0.9399 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44695.88235476 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.48852319 PAW double counting = 18814.64375936 -20037.51855760 entropy T*S EENTRO = 0.00674923 eigenvalues EBANDS = -963.30161046 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22869129 eV energy without entropy = -68.23544053 energy(sigma->0) = -68.23094104 -------------------------------------------------------------------------------------------------------- ----------------------------------------- Iteration 1( 63) --------------------------------------- POTLOK: cpu time********: real time 0.54 SETDIJ: cpu time********: real time 0.10 EDDIAG: cpu time********: real time 0.51 RMM-DIIS: cpu time********: real time 0.51 ORTHCH: cpu time********: real time 0.02 DOS: cpu time********: real time 0.01 -------------------------------------------- LOOP: cpu time 5.21: real time 1.70 eigenvalue-minimisations : 318 total energy-change (2. order) : 0.5969621E-05 (-0.9826561E-05) number of electron 179.9999998 magnetization 17.0482806 augmentation part 112.3359225 magnetization 13.7762245 Free energy of the ion-electron system (eV) --------------------------------------------------- alpha Z PSCENC = 28.64528598 Ewald energy TEWEN = 26847.11065641 -1/2 Hartree DENC = -44695.49129845 -exchange EXHF = 0.00000000 -V(xc)+E(xc) XCENC = 540.49311759 PAW double counting = 18813.73137136 -20036.62587600 entropy T*S EENTRO = 0.00701681 eigenvalues EBANDS = -963.67781639 atomic energy EATOM = 19397.57885736 --------------------------------------------------- free energy TOTEN = -68.22868532 eV energy without entropy = -68.23570214 energy(sigma->0) = -68.23102426 -------------------------------------------------------------------------------------------------------- average (electrostatic) potential at core the test charge radii are 0.9791 (the norm of the test charge is 1.0000) 1 -95.3378 2 -94.7871 3 -94.9297 4 -94.3007 5 -94.7988 6 -94.7847 7 -94.8058 8 -94.6892 9 -94.8208 10 -94.5214 11 -94.8288 12 -94.6463 13 -94.3990 14 -94.8998 15 -94.7465 16 -94.6538 17 -94.3399 18 -94.7422 E-fermi : -3.7404 XC(G=0): -1.0024 alpha+bet : -0.5589 spin component 1 k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -9.9948 1.00000 2 -8.2511 1.00000 3 -8.0810 1.00000 4 -8.0070 1.00000 5 -7.6086 1.00000 6 -7.4780 1.00000 7 -7.4378 1.00000 8 -7.3618 1.00000 9 -7.3482 1.00000 10 -7.2156 1.00000 11 -6.9784 1.00000 12 -6.9588 1.00000 13 -6.9092 1.00000 14 -6.8143 1.00000 15 -6.7339 1.00000 16 -6.6675 1.00000 17 -6.6051 1.00000 18 -6.5489 1.00000 19 -6.5218 1.00000 20 -6.4925 1.00000 21 -6.4727 1.00000 22 -6.4446 1.00000 23 -6.4031 1.00000 24 -6.3627 1.00000 25 -6.3080 1.00000 26 -6.2712 1.00000 27 -6.1581 1.00000 28 -6.1391 1.00000 29 -6.1275 1.00000 30 -6.0583 1.00000 31 -6.0327 1.00000 32 -5.9886 1.00000 33 -5.9271 1.00000 34 -5.8400 1.00000 35 -5.8070 1.00000 36 -5.7698 1.00000 37 -5.7333 1.00000 38 -5.6959 1.00000 39 -5.6184 1.00000 40 -5.5918 1.00000 41 -5.5463 1.00000 42 -5.5297 1.00000 43 -5.4517 1.00000 44 -5.4494 1.00000 45 -5.4349 1.00000 46 -5.4081 1.00000 47 -5.3552 1.00000 48 -5.3372 1.00000 49 -5.2884 1.00000 50 -5.2829 1.00000 51 -5.2488 1.00000 52 -5.2253 1.00000 53 -5.1791 1.00000 54 -5.1705 1.00000 55 -5.1459 1.00000 56 -5.1122 1.00000 57 -5.0959 1.00000 58 -5.0495 1.00000 59 -5.0330 1.00000 60 -5.0250 1.00000 61 -5.0074 1.00000 62 -4.9682 1.00000 63 -4.9522 1.00000 64 -4.9367 1.00000 65 -4.9174 1.00000 66 -4.8974 1.00000 67 -4.8896 1.00000 68 -4.8697 1.00000 69 -4.8495 1.00000 70 -4.8250 1.00000 71 -4.8052 1.00000 72 -4.7964 1.00000 73 -4.7776 1.00000 74 -4.7593 1.00000 75 -4.7400 1.00000 76 -4.7293 1.00000 77 -4.7112 1.00000 78 -4.6915 1.00000 79 -4.6772 1.00000 80 -4.6652 1.00000 81 -4.6559 1.00000 82 -4.6352 1.00000 83 -4.6331 1.00000 84 -4.6205 1.00000 85 -4.6176 1.00000 86 -4.6038 1.00000 87 -4.5891 1.00000 88 -4.5757 1.00000 89 -4.5576 1.00000 90 -4.5530 1.00000 91 -4.5393 1.00000 92 -4.5342 1.00000 93 -4.4643 1.00000 94 -4.4038 1.00000 95 -4.3481 1.00000 96 -4.2109 1.00000 97 -4.0350 1.00013 98 -3.8509 1.03289 99 -3.7404 0.50014 100 -3.5155 -0.00330 101 -2.5663 -0.00000 102 -2.3729 -0.00000 103 -2.2758 -0.00000 104 -2.1399 -0.00000 105 -1.9947 -0.00000 106 -1.8584 -0.00000 107 -1.7763 -0.00000 108 -1.6401 -0.00000 109 -1.6168 -0.00000 110 -1.5558 -0.00000 111 -0.7974 0.00000 112 -0.4849 0.00000 113 -0.2772 0.00000 114 -0.2562 0.00000 115 -0.0600 0.00000 116 0.1421 0.00000 117 0.2162 0.00000 118 0.3088 0.00000 119 0.4043 0.00000 120 0.4349 0.00000 121 0.5286 0.00000 122 0.6163 0.00000 123 0.6790 0.00000 124 0.7261 0.00000 125 0.7660 0.00000 126 0.7905 0.00000 127 0.8712 0.00000 128 0.8907 0.00000 spin component 2 k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -9.9837 1.00000 2 -8.1267 1.00000 3 -7.9704 1.00000 4 -7.8725 1.00000 5 -7.0193 1.00000 6 -6.9917 1.00000 7 -6.8239 1.00000 8 -6.7660 1.00000 9 -6.7387 1.00000 10 -6.6652 1.00000 11 -6.1255 1.00000 12 -6.1152 1.00000 13 -6.0892 1.00000 14 -6.0162 1.00000 15 -5.9460 1.00000 16 -5.8787 1.00000 17 -5.8379 1.00000 18 -5.8123 1.00000 19 -5.7293 1.00000 20 -5.7007 1.00000 21 -5.6811 1.00000 22 -5.6530 1.00000 23 -5.6393 1.00000 24 -5.5554 1.00000 25 -5.5017 1.00000 26 -5.4392 1.00000 27 -5.3940 1.00000 28 -5.3386 1.00000 29 -5.2692 1.00000 30 -5.2445 1.00000 31 -5.1964 1.00000 32 -5.1578 1.00000 33 -5.1203 1.00000 34 -5.0094 1.00000 35 -4.9737 1.00000 36 -4.9566 1.00000 37 -4.9193 1.00000 38 -4.8900 1.00000 39 -4.8497 1.00000 40 -4.7586 1.00000 41 -4.7141 1.00000 42 -4.6799 1.00000 43 -4.6611 1.00000 44 -4.6218 1.00000 45 -4.6134 1.00000 46 -4.5878 1.00000 47 -4.5770 1.00000 48 -4.5258 1.00000 49 -4.4740 1.00000 50 -4.4626 1.00000 51 -4.4366 1.00000 52 -4.4191 1.00000 53 -4.3858 1.00000 54 -4.3468 1.00000 55 -4.3331 1.00000 56 -4.3074 1.00000 57 -4.2764 1.00000 58 -4.2550 1.00000 59 -4.2124 1.00000 60 -4.1799 1.00000 61 -4.1698 1.00000 62 -4.1451 1.00000 63 -4.1015 1.00000 64 -4.0897 1.00000 65 -4.0796 1.00001 66 -4.0672 1.00002 67 -4.0288 1.00018 68 -4.0120 1.00042 69 -3.9772 1.00205 70 -3.9744 1.00229 71 -3.9507 1.00565 72 -3.9294 1.01122 73 -3.9023 1.02218 74 -3.8872 1.02905 75 -3.8810 1.03156 76 -3.8490 1.03190 77 -3.8357 1.01961 78 -3.8163 0.97884 79 -3.8129 0.96826 80 -3.7948 0.89331 81 -3.7575 0.64221 82 -3.7478 0.56231 83 -3.7208 0.33798 84 -3.6762 0.06211 85 -3.6487 -0.01429 86 -3.6343 -0.03035 87 -3.6249 -0.03464 88 -3.5813 -0.02348 89 -3.5709 -0.01875 90 -3.5307 -0.00577 91 -3.5139 -0.00310 92 -3.4729 -0.00051 93 -3.4413 -0.00010 94 -3.4154 -0.00002 95 -3.3996 -0.00001 96 -3.3508 -0.00000 97 -3.3128 -0.00000 98 -3.2034 -0.00000 99 -3.1624 -0.00000 100 -3.0319 -0.00000 101 -2.1460 -0.00000 102 -1.9886 -0.00000 103 -1.9055 -0.00000 104 -1.8029 -0.00000 105 -1.7019 -0.00000 106 -1.5737 -0.00000 107 -1.4524 -0.00000 108 -1.4098 -0.00000 109 -1.3362 -0.00000 110 -1.2488 -0.00000 111 -0.5450 0.00000 112 -0.2502 0.00000 113 -0.0342 0.00000 114 -0.0026 0.00000 115 0.1900 0.00000 116 0.3717 0.00000 117 0.4003 0.00000 118 0.4428 0.00000 119 0.5926 0.00000 120 0.6227 0.00000 121 0.6748 0.00000 122 0.7709 0.00000 123 0.8323 0.00000 124 0.8430 0.00000 125 0.8492 0.00000 126 0.8919 0.00000 127 0.9462 0.00000 128 1.0519 0.00000 -------------------------------------------------------------------------------------------------------- soft charge-density along one line, spin component 1 0 1 2 3 4 5 6 7 8 9 total charge-density along one line soft charge-density along one line, spin component 2 0 1 2 3 4 5 6 7 8 9 total charge-density along one line pseudopotential strength for first ion, spin component: 1 -10.312 0.009 0.004 -0.014 0.024 -10.579 0.009 0.004 0.009 -10.112 -0.016 -0.004 -0.012 0.009 -10.387 -0.015 0.004 -0.016 -10.383 0.008 0.003 0.004 -0.015 -10.647 -0.014 -0.004 0.008 -10.313 -0.046 -0.013 -0.004 0.008 0.024 -0.012 0.003 -0.046 -10.274 0.023 -0.012 0.003 -10.579 0.009 0.004 -0.013 0.023 -10.791 0.008 0.003 0.009 -10.387 -0.015 -0.004 -0.012 0.008 -10.608 -0.014 0.004 -0.015 -10.647 0.008 0.003 0.003 -0.014 -10.856 -0.013 -0.004 0.008 -10.579 -0.044 -0.013 -0.004 0.008 0.023 -0.012 0.003 -0.044 -10.542 0.022 -0.011 0.002 0.000 0.001 -0.000 0.004 0.013 0.000 0.001 0.000 0.000 0.002 -0.000 0.006 0.023 0.000 0.002 0.000 -0.004 0.001 -0.000 -0.000 -0.001 -0.004 0.001 -0.000 -0.000 0.001 0.004 -0.002 0.000 -0.000 0.001 0.004 0.001 -0.000 0.003 0.001 -0.003 0.001 -0.000 0.003 -0.005 0.001 -0.001 -0.000 -0.001 -0.005 0.001 -0.001 -0.000 0.002 0.005 -0.002 0.000 -0.000 0.002 0.005 0.002 -0.000 0.004 0.002 -0.004 0.002 -0.000 0.004 pseudopotential strength for first ion, spin component: 2 -9.358 -0.022 0.002 0.001 -0.008 -9.670 -0.021 0.002 -0.022 -9.413 0.001 -0.003 0.014 -0.021 -9.723 0.001 0.002 0.001 -9.333 -0.012 0.032 0.002 0.001 -9.646 0.001 -0.003 -0.012 -9.393 0.000 0.001 -0.003 -0.012 -0.008 0.014 0.032 0.000 -9.396 -0.008 0.013 0.031 -9.670 -0.021 0.002 0.001 -0.008 -9.925 -0.020 0.002 -0.021 -9.723 0.001 -0.003 0.013 -0.020 -9.976 0.001 0.002 0.001 -9.646 -0.012 0.031 0.002 0.001 -9.902 0.001 -0.003 -0.012 -9.703 0.000 0.001 -0.003 -0.011 -0.008 0.013 0.031 0.000 -9.706 -0.008 0.013 0.029 0.001 0.002 -0.003 0.003 0.001 0.000 0.002 -0.002 0.001 0.003 -0.005 0.005 0.002 0.001 0.003 -0.005 -0.002 0.001 -0.000 -0.000 -0.001 -0.002 0.001 -0.000 -0.000 0.001 0.002 -0.003 0.000 -0.000 0.001 0.002 0.001 -0.000 0.000 0.001 -0.002 0.001 -0.000 0.001 -0.002 0.001 -0.001 -0.000 -0.001 -0.002 0.001 -0.001 -0.000 0.001 0.001 -0.004 0.000 -0.000 0.001 0.002 0.001 -0.000 0.000 0.001 -0.002 0.001 -0.000 0.000 total augmentation occupancy for first ion, spin component: 1 3.200 0.101 0.014 -0.065 0.153 -1.398 -0.058 -0.020 0.050 -0.068 0.045 0.007 -0.012 -0.005 -0.002 0.002 0.101 4.251 -0.134 0.003 -0.077 -0.061 -2.034 0.082 -0.016 0.058 -0.014 -0.003 -0.003 -0.037 0.006 0.002 0.014 -0.134 2.874 0.080 -0.201 -0.021 0.082 -1.398 -0.026 0.081 -0.098 0.018 -0.010 -0.038 -0.052 0.001 -0.065 0.003 0.080 3.580 -0.273 0.050 -0.015 -0.029 -1.757 0.152 -0.019 -0.005 -0.008 -0.072 -0.014 0.001 0.153 -0.077 -0.201 -0.273 3.187 -0.068 0.057 0.084 0.153 -1.411 -0.038 -0.006 0.008 0.008 0.028 0.001 -1.398 -0.061 -0.021 0.050 -0.068 1.305 0.037 0.025 -0.046 0.011 -0.025 -0.004 -0.001 -0.002 0.010 -0.001 -0.058 -2.034 0.082 -0.015 0.057 0.037 1.714 -0.046 0.027 -0.052 0.020 0.002 -0.006 0.047 -0.008 -0.001 -0.020 0.082 -1.398 -0.029 0.084 0.025 -0.046 1.569 -0.012 -0.001 0.149 -0.021 0.012 0.057 0.064 -0.001 0.050 -0.016 -0.026 -1.757 0.153 -0.046 0.027 -0.012 1.674 -0.072 0.025 0.004 0.001 0.075 0.007 -0.000 -0.068 0.058 0.081 0.152 -1.411 0.011 -0.052 -0.001 -0.072 1.362 0.033 0.004 -0.010 -0.001 -0.035 -0.000 0.045 -0.014 -0.098 -0.019 -0.038 -0.025 0.020 0.149 0.025 0.033 2.052 -0.269 0.024 0.014 -0.011 -0.003 0.007 -0.003 0.018 -0.005 -0.006 -0.004 0.002 -0.021 0.004 0.004 -0.269 0.042 -0.003 -0.001 -0.001 0.000 -0.012 -0.003 -0.010 -0.008 0.008 -0.001 -0.006 0.012 0.001 -0.010 0.024 -0.003 0.251 0.003 0.000 -0.027 -0.005 -0.037 -0.038 -0.072 0.008 -0.002 0.047 0.057 0.075 -0.001 0.014 -0.001 0.003 0.288 0.002 0.000 -0.002 0.006 -0.052 -0.014 0.028 0.010 -0.008 0.064 0.007 -0.035 -0.011 -0.001 0.000 0.002 0.258 0.000 0.002 0.002 0.001 0.001 0.001 -0.001 -0.001 -0.001 -0.000 -0.000 -0.003 0.000 -0.027 0.000 0.000 0.003 0.001 0.002 0.003 0.004 -0.001 -0.000 -0.004 -0.003 -0.006 0.000 -0.001 0.000 0.000 -0.029 0.000 -0.000 0.002 0.000 0.002 0.002 -0.001 -0.003 -0.000 -0.004 -0.001 0.003 -0.000 0.000 0.000 0.000 -0.027 -0.000 total augmentation occupancy for first ion, spin component: 2 1.633 -0.118 -0.003 0.038 -0.105 -0.872 0.064 -0.001 -0.016 0.053 0.040 0.010 0.014 0.001 0.003 0.000 -0.118 0.681 0.049 0.023 0.104 0.068 -0.348 -0.022 -0.017 -0.063 0.016 0.003 -0.002 0.001 -0.005 0.000 -0.003 0.049 2.188 -0.088 0.028 -0.001 -0.024 -1.215 0.050 0.005 0.011 0.002 -0.003 -0.023 -0.029 0.000 0.038 0.023 -0.088 1.631 0.190 -0.016 -0.017 0.051 -0.894 -0.109 -0.011 -0.003 -0.001 -0.022 0.002 -0.000 -0.105 0.104 0.028 0.190 1.345 0.052 -0.060 0.004 -0.107 -0.708 -0.031 -0.005 0.003 -0.003 0.011 0.000 -0.872 0.068 -0.001 -0.016 0.052 0.370 -0.036 0.003 0.005 -0.022 -0.030 -0.005 -0.006 0.001 -0.004 0.000 0.064 -0.348 -0.024 -0.017 -0.060 -0.036 0.096 0.008 0.011 0.036 -0.012 -0.001 0.002 -0.002 0.004 -0.000 -0.001 -0.022 -1.215 0.051 0.004 0.003 0.008 0.561 -0.026 -0.019 -0.019 -0.001 0.002 0.012 0.018 -0.000 -0.016 -0.017 0.050 -0.894 -0.107 0.005 0.011 -0.026 0.393 0.057 0.005 0.002 0.003 0.015 -0.000 0.000 0.053 -0.063 0.005 -0.109 -0.708 -0.022 0.036 -0.019 0.057 0.275 0.021 0.003 -0.001 0.001 -0.006 -0.000 0.040 0.016 0.011 -0.011 -0.031 -0.030 -0.012 -0.019 0.005 0.021 -0.193 0.057 -0.005 -0.000 0.004 0.000 0.010 0.003 0.002 -0.003 -0.005 -0.005 -0.001 -0.001 0.002 0.003 0.057 -0.011 0.000 0.000 0.000 -0.000 0.014 -0.002 -0.003 -0.001 0.003 -0.006 0.002 0.002 0.003 -0.001 -0.005 0.000 -0.021 -0.001 -0.001 0.003 0.001 0.001 -0.023 -0.022 -0.003 0.001 -0.002 0.012 0.015 0.001 -0.000 0.000 -0.001 -0.023 -0.000 0.000 0.003 -0.005 -0.029 0.002 0.011 -0.004 0.004 0.018 -0.000 -0.006 0.004 0.000 -0.001 -0.000 -0.020 0.000 0.000 0.000 0.000 -0.000 0.000 0.000 -0.000 -0.000 0.000 -0.000 0.000 -0.000 0.003 0.000 0.000 -0.000 -0.000 -0.000 0.002 -0.001 0.000 0.000 0.000 -0.001 0.001 -0.000 -0.000 -0.000 0.000 0.003 -0.000 0.000 -0.000 0.000 -0.001 0.000 0.001 0.000 -0.000 0.000 0.000 -0.000 -0.000 -0.000 0.000 -0.000 0.003 -0.000 ------------------------ aborting loop because EDIFF is reached ---------------------------------------- CHARGE: cpu time********: real time 0.14 FORLOC: cpu time********: real time 0.02 FORNL : cpu time********: real time 0.33 STRESS: cpu time********: real time 1.01 FORCOR: cpu time********: real time 0.54 FORHAR: cpu time********: real time 0.06 MIXING: cpu time********: real time 0.04 FORCE on cell =-STRESS in cart. coord. units (eV): Direction XX YY ZZ XY YZ ZX -------------------------------------------------------------------------------------- Alpha Z 28.64529 28.64529 28.64529 Ewald 8053.68026 9091.10662 9702.30565 715.92628 444.10570 -168.09177 Hartree 14041.51126 15044.19250 15611.75339 626.54631 428.45428 -176.97205 E(xc) -982.13636 -982.16606 -982.00025 0.16425 0.12877 0.01503 Local -25509.33748-27562.06670-28738.56309 -1340.32608 -875.82819 349.35023 n-local -201.40426 -200.16809 -199.21997 2.75444 -2.61235 0.60890 augment 3176.94062 3183.79973 3181.35567 -2.28441 1.97255 -2.41013 Kinetic 1376.63966 1380.13486 1379.50936 -0.97892 0.39315 -1.18676 Fock 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 ------------------------------------------------------------------------------------- Total -15.46102 -16.52186 -16.21395 1.80188 -3.38609 1.31345 in kB -4.29429 -4.58894 -4.50342 0.50047 -0.94049 0.36481 external pressure = -4.46 kB Pullay stress = 0.00 kB VOLUME and BASIS-vectors are now : ----------------------------------------------------------------------------- energy-cutoff : 300.00 volume of cell : 5768.42 direct lattice vectors reciprocal lattice vectors 17.934350000 0.000000000 0.000000000 0.055758921 0.000000000 0.000000000 0.000000000 17.934350000 0.000000000 0.000000000 0.055758921 0.000000000 0.000000000 0.000000000 17.934350000 0.000000000 0.000000000 0.055758921 length of vectors 17.934350000 17.934350000 17.934350000 0.055758921 0.055758921 0.055758921 FORCES acting on ions electron-ion (+dipol) ewald-force non-local-force convergence-correction ----------------------------------------------------------------------------------------------- -.127E+02 0.711E+02 0.131E+02 0.127E+02 -.712E+02 -.136E+02 0.952E-01 -.131E+00 0.193E-01 -.274E-01 0.538E-01 0.208E-01 0.635E+03 0.105E+04 0.584E+02 -.633E+03 -.105E+04 -.590E+02 -.253E+01 -.278E+01 0.906E+00 -.326E-01 -.142E-01 0.655E-02 -.202E+03 0.645E+02 0.120E+04 0.199E+03 -.642E+02 -.120E+04 0.167E+00 -.864E+00 -.181E+01 0.260E-02 0.222E-01 -.376E-01 0.374E+03 0.671E+03 0.883E+03 -.370E+03 -.666E+03 -.874E+03 -.301E+01 -.412E+01 -.713E+01 -.135E-01 -.622E-02 -.395E-01 0.111E+04 0.994E+02 0.531E+03 -.110E+04 -.988E+02 -.528E+03 -.324E+01 -.183E+01 -.197E+01 -.746E-01 0.485E-01 0.378E-02 -.603E+03 0.103E+04 0.482E+03 0.600E+03 -.103E+04 -.480E+03 0.286E+01 -.353E+01 -.248E+01 0.454E-01 -.519E-01 -.120E-01 -.114E+04 0.133E+03 0.607E+03 0.114E+04 -.131E+03 -.603E+03 0.436E+01 -.136E+01 -.143E+01 0.477E-01 0.203E-01 -.176E-01 0.754E+03 -.986E+03 -.163E+02 -.751E+03 0.981E+03 0.164E+02 -.195E+01 0.415E+01 0.952E-01 -.723E-01 0.607E-02 0.315E-01 -.316E+03 -.103E+04 0.577E+03 0.315E+03 0.103E+04 -.575E+03 -.107E+00 0.274E+01 -.198E+01 0.494E-02 0.156E-01 -.150E-02 0.481E+03 -.707E+03 0.964E+03 -.476E+03 0.702E+03 -.957E+03 -.328E+01 0.470E+01 -.637E+01 -.590E-01 0.362E-02 -.101E-01 0.116E+04 0.766E+02 -.461E+03 -.116E+04 -.750E+02 0.459E+03 -.368E+01 -.482E+00 0.105E+01 -.553E-01 0.581E-01 0.426E-01 -.112E+04 0.107E+03 -.608E+03 0.112E+04 -.106E+03 0.606E+03 0.485E+01 -.221E+00 0.124E+01 0.308E-01 0.124E-01 0.329E-01 -.101E+04 -.701E+03 -.175E+02 0.101E+04 0.695E+03 0.176E+02 0.822E+01 0.482E+01 0.529E-01 0.268E-01 -.227E-02 -.760E-02 -.138E+03 -.308E+02 -.121E+04 0.137E+03 0.308E+02 0.121E+04 -.256E-01 -.905E-01 0.153E+01 -.348E-01 0.357E-01 0.533E-01 0.464E+03 0.837E+03 -.910E+03 -.461E+03 -.833E+03 0.905E+03 -.190E+01 -.444E+01 0.454E+01 -.361E-01 0.296E-01 0.590E-01 -.595E+03 0.990E+03 -.612E+03 0.592E+03 -.984E+03 0.609E+03 0.206E+01 -.467E+01 0.299E+01 0.382E-01 -.327E-01 0.331E-01 0.515E+03 -.661E+03 -.836E+03 -.509E+03 0.655E+03 0.828E+03 -.422E+01 0.518E+01 0.698E+01 -.436E-01 -.294E-01 0.794E-02 -.340E+03 -.101E+04 -.646E+03 0.339E+03 0.101E+04 0.643E+03 0.454E+00 0.333E+01 0.249E+01 -.176E-01 0.338E-03 0.376E-01 ----------------------------------------------------------------------------------------------- 0.115E+01 -.574E+00 0.105E+01 0.284E-12 0.227E-12 -.455E-12 -.877E+00 0.410E+00 -.128E+01 -.270E+00 0.169E+00 0.203E+00 POSITION TOTAL-FORCE (eV/Angst) ----------------------------------------------------------------------------------- 0.00000 0.00000 0.00000 0.030415 -0.114705 -0.460114 16.82152 15.71963 17.66895 -0.455659 1.097145 0.261504 0.38923 0.01950 15.53471 -2.152142 -0.601239 -0.175921 16.79798 15.78556 15.12184 0.725882 1.175265 1.620742 15.82886 0.13128 16.62067 0.912843 -1.189820 0.535745 0.96467 15.69250 16.91409 0.070716 1.203361 -0.679709 2.27048 0.06335 16.56292 0.341657 0.404370 1.804207 16.38360 1.99288 0.04238 0.793015 -0.582379 0.303547 0.82691 2.08720 16.81890 -0.312121 -0.634458 0.128901 16.56453 1.79422 15.32981 1.065288 -0.096638 0.840007 15.69103 17.80371 1.30301 0.721874 1.190386 -0.786790 2.24131 17.90602 1.23703 -0.677994 0.899838 -1.030798 2.95097 2.24559 17.92136 -1.336210 -1.101293 0.153278 0.05496 0.16811 2.28973 -0.565966 -0.124292 0.187316 16.67675 16.13075 2.27474 0.905891 -0.541252 -0.344585 1.16283 15.85765 1.29324 -1.083032 0.757215 -0.106508 16.27924 2.11511 2.70307 1.015715 -1.313610 -1.727182 0.76515 2.15916 1.30553 -0.000170 -0.427894 -0.523640 ----------------------------------------------------------------------------------- total drift: -0.001515 0.005134 -0.024883 -------------------------------------------------------------------------------------------------------- FREE ENERGIE OF THE ION-ELECTRON SYSTEM (eV) --------------------------------------------------- free energy TOTEN = -68.22868532 eV energy without entropy= -68.23570214 energy(sigma->0) = -68.23102426 -------------------------------------------------------------------------------------------------------- POTLOK: cpu time********: real time 0.75 -------------------------------------------------------------------------------------------------------- LOOP+: cpu time********: real time 110.13 4ORBIT: cpu time********: real time 0.00 total amount of memory used by VASP on root node 41380. kBytes ======================================================================== base : 30000. kBytes nonlr-proj: 854. kBytes fftplans : 2455. kBytes grid : 7762. kBytes one-center: 31. kBytes wavefun : 278. kBytes General timing and accounting informations for this job: ======================================================== Total CPU time used (sec): 124.972 User time (sec): 124.972 System time (sec): 0.000 Elapsed time (sec): 124.967 Maximum memory used (kb): 142870. Average memory used (kb): 0. Minor page faults: 0 Major page faults: 0 Voluntary context switches: 0 """ outcar_f = open('OUTCAR', 'w') outcar_f.write(outcar) outcar_f.close() try: a1 = read('OUTCAR', force_consistent=True) assert abs(a1.get_potential_energy() - -68.22868532) < 1e-6 a2 = read('OUTCAR', force_consistent=False) assert abs(a2.get_potential_energy() - -68.23102426) < 1e-6 finally: os.unlink('OUTCAR')ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fio/xsf_spec.py000066400000000000000000000207621316323560300244660ustar00rootroot00000000000000import numpy as np from ase.io import read, write # This reads and writes XSF examples taken from the # specification of the XSF format: # # http://www.xcrysden.org/doc/XSF.html # # See the data below def check(name, xsf_text, check_data): fname = '%s.xsf' % name fd = open(fname, 'w') fd.write(xsf_text) fd.close() print('Read: %s' % fname) images = read(fname + '@:', read_data=check_data) if check_data: array, images = images assert isinstance(images, list) print(' Images: %s' % len(images)) for image in images: print(' %s' % image) # Now write the same system back out: outfname = 'out.%s' % fname if check_data: write(outfname, images, data=array) else: write(outfname, images) # ...and read it back in: images2 = read(outfname + '@:', read_data=check_data) if check_data: array2, images2 = images2 # It should be the same as the original file. assert images == images2 if check_data: print(array) print(array2) assert np.abs(array - array2).max() < 1e-13 # In fact, if we write it back out again, it should be # byte-wise identical to the other file that we just wrote. # So do that: outfname2 = 'doubleout.%s' % fname if check_data: write(outfname2, images2, data=array2) else: write(outfname2, images2) assert open(outfname).read() == open(outfname2).read() def main(): files = {'01-comments': f1, '02-atoms': f2, '03-periodic': f3, '04-forces-atoms': f4, '05-forces-slab': f5, '06-anim-atoms': f6, '07-anim-crystal-fixcell': f7, '08-anim-crystal-varcell': f8} names = list(sorted(files.keys())) for name in names: check(name, files[name], check_data=False) check('%s-ignore-datagrid' % name, files[name] + datagrid, check_data=False) check('%s-read-datagrid' % name, files[name] + datagrid, check_data=True) f1 = """ # this is a specification # of ZnS crystal structure CRYSTAL # these are primitive lattice vectors (in Angstroms) PRIMVEC 2.7100000000 2.7100000000 0.0000000000 2.7100000000 0.0000000000 2.7100000000 0.0000000000 2.7100000000 2.7100000000 # these are convetional lattice vectors (in Angstroms) CONVVEC 5.4200000000 0.0000000000 0.0000000000 0.0000000000 5.4200000000 0.0000000000 0.0000000000 0.0000000000 5.4200000000 # these are atomic coordinates in a primitive unit cell # (in Angstroms) PRIMCOORD 2 1 16 0.0000000000 0.0000000000 0.0000000000 30 1.3550000000 -1.3550000000 -1.3550000000 """ f2 = """ ATOMS 6 2.325243 -0.115261 0.031711 1 2.344577 -0.363301 1.077589 9 3.131708 -0.909527 -0.638930 9 2.736189 1.130568 -0.134093 8 1.079338 -0.265162 -0.526351 6 0.007719 -0.041269 0.244204 9 0.064656 1.154700 0.824420 9 -0.042641 -0.911850 1.255074 8 -1.071578 -0.152842 -0.539134 6 -2.310374 0.036537 0.022189 1 -2.267004 0.230694 1.077874 9 -2.890949 1.048938 -0.593940 9 -3.029540 -1.046542 -0.203665 """ f3 = """ CRYSTAL PRIMVEC 0.0000000 2.7100000 2.7100000 2.7100000 0.0000000 2.7100000 2.7100000 2.7100000 0.0000000 CONVVEC 5.4200000 0.0000000 0.0000000 0.0000000 5.4200000 0.0000000 0.0000000 0.0000000 5.4200000 PRIMCOORD 2 1 16 0.0000000 0.0000000 0.0000000 30 1.3550000 -1.3550000 -1.3550000 """ f4 = """ ATOMS 8 0.00000 0.00000 0.00000 -.05164 .00000 -.03999 1 0.00000 0.00000 1.00000 .01769 .00000 .03049 1 0.96814 0.00000 -0.25038 .03395 .00000 .00949 """ f5 = """ SLAB PRIMVEC 5.8859828533 0.0000000000 0.0000000000 0.0000000000 5.8859828533 0.0000000000 0.0000000000 0.0000000000 1.0000000000 PRIMCOORD 11 1 6 3.674759 2.942992 -3.493103 -0.021668 0.000000 -0.057324 1 4.121990 3.816734 -4.007689 -0.000478 0.001204 0.006657 1 4.121990 2.069250 -4.007689 -0.000478 -0.001204 0.006657 6 2.211226 2.942992 -3.493103 0.021668 0.000000 -0.057324 1 1.763995 3.816734 -4.007689 0.000478 0.001204 0.006657 1 1.763995 2.069250 -4.007689 0.000478 -0.001204 0.006657 8 0.000000 0.000000 -2.719012 0.000000 0.000000 -0.050242 47 4.448147 4.449892 -1.919011 -0.022812 -0.029123 0.007553 47 4.448147 1.436093 -1.919011 -0.022812 0.029123 0.007553 47 1.437838 4.449892 -1.919011 0.022812 -0.029123 0.007553 47 1.437838 1.436093 -1.919011 0.022812 0.029123 0.007553 """ f6 = """ ANIMSTEPS 4 ATOMS 1 8 0.0000 0.0000 0.0000 -0.0516 0.0000 -0.0399 1 0.0000 0.0000 1.0000 0.0176 0.0000 0.0304 1 0.9681 0.0000 -0.2503 0.0339 0.0000 0.0094 ATOMS 2 8 -0.1480 0.0000 -0.1146 0.0020 0.0000 0.0015 1 -0.0468 0.0000 0.9134 -0.0069 0.0000 0.0069 1 0.8726 0.0000 -0.2740 0.0049 0.0000 -0.0084 ATOMS 3 8 -0.1032 0.0000 -0.0799 0.0013 0.0000 0.0010 1 -0.0319 0.0000 0.9591 0.0011 0.0000 -0.0028 1 0.9205 0.0000 -0.2710 -0.0025 0.0000 0.0018 ATOMS 4 8 -0.1102 0.0000 -0.0853 0.0001 0.0000 0.0000 1 -0.0345 0.0000 0.9503 -0.0000 0.0000 -0.0000 1 0.9114 0.0000 -0.2714 -0.0000 0.0000 -0.0000 """ f7 = """ ANIMSTEPS 2 CRYSTAL PRIMVEC 0.0000000 2.7100000 2.7100000 2.7100000 0.0000000 2.7100000 2.7100000 2.7100000 0.0000000 PRIMCOORD 1 2 1 16 0.0000000 0.0000000 0.0000000 30 1.3550000 -1.3550000 -1.3550000 PRIMCOORD 2 2 1 16 0.0000000 0.0000000 0.0000000 30 1.2550000 -1.2550000 -1.2550000 """ f8 = """ ANIMSTEPS 2 CRYSTAL PRIMVEC 1 2.7100000 2.7100000 0.00000000 2.7100000 0.0000000 2.71000000 0.0000000 2.7100000 2.71000000 CONVVEC 1 5.4200000 0.0000000 0.00000000 0.0000000 5.4200000 0.00000000 0.0000000 0.0000000 5.42000000 PRIMCOORD 1 2 1 16 0.0000000 0.0000000 0.00000000 30 1.3550000 -1.3550000 -1.35500000 PRIMVEC 2 2.9810000 2.9810000 0.00000000 2.9810000 0.0000000 2.98100000 0.0000000 2.9810000 2.98100000 CONVVEC 2 5.9620000 0.0000000 0.00000000 0.0000000 5.9620000 0.00000000 0.0000000 0.0000000 5.96200000 PRIMCOORD 2 2 1 16 0.0000000 0.0000000 0.00000000 30 1.5905000 -1.5905000 -1.59050000 """ datagrid = """BEGIN_BLOCK_DATAGRID_3D my_first_example_of_3D_datagrid BEGIN_DATAGRID_3D_this_is_3Dgrid#1 5 5 5 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.000 1.000 2.000 5.196 8.000 1.000 1.414 2.236 5.292 8.062 2.000 2.236 2.828 5.568 8.246 3.000 3.162 3.606 6.000 8.544 4.000 4.123 4.472 6.557 8.944 1.000 1.414 2.236 5.292 8.062 1.414 1.732 2.449 5.385 8.124 2.236 2.449 3.000 5.657 8.307 3.162 3.317 3.742 6.083 8.602 4.123 4.243 4.583 6.633 9.000 2.000 2.236 2.828 5.568 8.246 2.236 2.449 3.000 5.657 8.307 2.828 3.000 3.464 5.916 8.485 3.606 3.742 4.123 6.325 8.775 4.472 4.583 4.899 6.856 9.165 3.000 3.162 3.606 6.000 8.544 3.162 3.317 3.742 6.083 8.602 3.606 3.742 4.123 6.325 8.775 4.243 4.359 4.690 6.708 9.055 5.000 5.099 5.385 7.211 9.434 4.000 4.123 4.472 6.557 8.944 4.123 4.243 4.583 6.633 9.000 4.472 4.583 4.899 6.856 9.165 5.000 5.099 5.385 7.211 9.434 5.657 5.745 6.000 7.681 9.798 END_DATAGRID_3D END_BLOCK_DATAGRID_3D """ main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fire.py000077500000000000000000000013551316323560300230240ustar00rootroot00000000000000import numpy as np from ase.calculators.emt import EMT from ase.build import bulk from ase.optimize import FIRE a = bulk('Au') a *= (2, 2, 2) a[0].x += 0.5 a.set_calculator(EMT()) opt = FIRE(a, dtmax=1.0, dt=1.0, maxmove=100.0, downhill_check=False) opt.run(fmax=0.001) e1 = a.get_potential_energy() n1 = opt.nsteps a = bulk('Au') a *= (2, 2, 2) a[0].x += 0.5 a.set_calculator(EMT()) reset_history = [] def callback(a, r, e, e_last): reset_history.append([e - e_last]) opt = FIRE(a, dtmax=1.0, dt=1.0, maxmove=100.0, downhill_check=True, position_reset_callback=callback) opt.run(fmax=0.001) e2 = a.get_potential_energy() n2 = opt.nsteps assert abs(e1 - e2) < 1e-6 assert n2 < n1 assert (np.array(reset_history) > 0).all ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fix_bond_length_mic.py000066400000000000000000000013611316323560300260520ustar00rootroot00000000000000import ase from ase.calculators.lj import LennardJones from ase.constraints import FixBondLength from ase.optimize import FIRE for wrap in [False, True]: a = ase.Atoms('CCC', positions=[[1, 0, 5], [0, 1, 5], [-1, 0.5, 5]], cell=[10, 10, 10], pbc=True) if wrap: a.set_scaled_positions(a.get_scaled_positions() % 1.0) a.set_calculator(LennardJones()) a.set_constraint(FixBondLength(0, 2)) d1 = a.get_distance(0, 2, mic=True) FIRE(a, logfile=None).run(fmax=0.01) e = a.get_potential_energy() d2 = a.get_distance(0, 2, mic=True) assert abs(e - -2.034988) < 1e-6 assert abs(d1 - d2) < 1e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fleur/000077500000000000000000000000001316323560300226335ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fleur/__init__.py000066400000000000000000000000001316323560300247320ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/fleur/fleur_cmdline.py000066400000000000000000000001711316323560300260140ustar00rootroot00000000000000from ase.test import cli, require require('fleur') cli('ase build -x fcc -a 4.04 Al | ase run fleur -p kpts=3.0,xc=PBE') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/formula.py000066400000000000000000000002171316323560300235350ustar00rootroot00000000000000from ase import Atoms assert Atoms('MoS2').get_chemical_formula() == 'MoS2' assert Atoms('SnO2').get_chemical_formula(mode='metal') == 'SnO2' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/franck_condon.py000066400000000000000000000023151316323560300246750ustar00rootroot00000000000000from __future__ import print_function import sys import numpy as np from ase.vibrations.franck_condon import FranckCondonOverlap from math import factorial def equal(x, y, tolerance=0, fail=True, msg=''): """Compare x and y.""" if not np.isfinite(x - y).any() or (np.abs(x - y) > tolerance).any(): msg = (msg + '%s != %s (error: |%s| > %.9g)' % (x, y, x - y, tolerance)) if fail: raise AssertionError(msg) else: sys.stderr.write('WARNING: %s\n' % msg) # FCOverlap fco = FranckCondonOverlap() # check factorial assert(fco.factorial(8) == factorial(8)) # the second test is useful according to the implementation assert(fco.factorial(5) == factorial(5)) # check T=0 and n=0 equality S = np.array([1, 2.1, 34]) m = 5 assert(((fco.directT0(m, S) - fco.direct(0, m, S)) / fco.directT0(m, S) < 1e-15).all()) # check symmetry S = 2 n = 3 assert(fco.direct(n, m, S) == fco.direct(m, n, S)) # --------------------------- # specials S = 1.5 for m in [2, 7]: equal(fco.direct0mm1(m, S)**2, fco.direct(1, m, S) * fco.direct(m, 0, S), 1.e-17) equal(fco.direct0mm2(m, S)**2, fco.direct(2, m, S) * fco.direct(m, 0, S), 1.e-17) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/000077500000000000000000000000001316323560300221055ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/__init__.py000066400000000000000000000000001316323560300242040ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/add_candidates.py000066400000000000000000000033451316323560300253730ustar00rootroot00000000000000from ase.test import must_raise from ase.build import fcc111 from ase.ga.data import PrepareDB from ase.ga.data import DataConnection from ase.ga.offspring_creator import OffspringCreator from ase.ga import set_raw_score import os db_file = 'gadb.db' if os.path.isfile(db_file): os.remove(db_file) db = PrepareDB(db_file) slab1 = fcc111('Ag', size=(2, 2, 2)) db.add_unrelaxed_candidate(slab1) slab2 = fcc111('Cu', size=(2, 2, 2)) set_raw_score(slab2, 4) db.add_relaxed_candidate(slab2) assert slab2.info['confid'] == 3 db = DataConnection(db_file) assert db.get_number_of_unrelaxed_candidates() == 1 slab3 = db.get_an_unrelaxed_candidate() old_confid = slab3.info['confid'] slab3[0].symbol = 'Au' db.add_unrelaxed_candidate(slab3, 'mutated: Parent {0}'.format(old_confid)) new_confid = slab3.info['confid'] # confid should update when using add_unrelaxed_candidate assert old_confid != new_confid slab3[1].symbol = 'Au' db.add_unrelaxed_step(slab3, 'mutated: Parent {0}'.format(new_confid)) # confid should not change when using add_unrelaxed_step assert slab3.info['confid'] == new_confid with must_raise(AssertionError): db.add_relaxed_step(slab3) set_raw_score(slab3, 3) db.add_relaxed_step(slab3) slab4 = OffspringCreator.initialize_individual(slab1, fcc111('Au', size=(2, 2, 2))) set_raw_score(slab4, 67) db.add_relaxed_candidate(slab4) assert slab4.info['confid'] == 7 more_slabs = [] for m in ['Ni', 'Pd', 'Pt']: slab = fcc111(m, size=(2, 2, 2)) slab = OffspringCreator.initialize_individual(slab1, slab) set_raw_score(slab, sum(slab.get_masses())) more_slabs.append(slab) db.add_more_relaxed_candidates(more_slabs) assert more_slabs[1].info['confid'] == 9 os.remove(db_file) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/basic_example_create_database.py000066400000000000000000000034321316323560300304240ustar00rootroot00000000000000from ase.ga.data import PrepareDB from ase.ga.startgenerator import StartGenerator from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.constraints import FixAtoms import numpy as np from ase.build import fcc111 db_file = 'gadb.db' # create the surface slab = fcc111('Au', size=(4, 4, 1), vacuum=10.0, orthogonal=True) slab.set_constraint(FixAtoms(mask=len(slab) * [True])) # define the volume in which the adsorbed cluster is optimized # the volume is defined by a corner position (p0) # and three spanning vectors (v1, v2, v3) pos = slab.get_positions() cell = slab.get_cell() p0 = np.array([0., 0., max(pos[:, 2]) + 2.]) v1 = cell[0, :] * 0.8 v2 = cell[1, :] * 0.8 v3 = cell[2, :] v3[2] = 3. # Define the composition of the atoms to optimize atom_numbers = 2 * [47] + 2 * [79] # define the closest distance two atoms of a given species can be to each other unique_atom_types = get_all_atom_types(slab, atom_numbers) cd = closest_distances_generator(atom_numbers=unique_atom_types, ratio_of_covalent_radii=0.7) # create the starting population sg = StartGenerator(slab=slab, atom_numbers=atom_numbers, closest_allowed_distances=cd, box_to_place_in=[p0, [v1, v2, v3]]) # generate the starting population population_size = 5 starting_population = [sg.get_new_candidate() for i in range(population_size)] # from ase.visualize import view # uncomment these lines # view(starting_population) # to see the starting population # create the database to store information in d = PrepareDB(db_file_name=db_file, simulation_cell=slab, stoichiometry=atom_numbers) for a in starting_population: d.add_unrelaxed_candidate(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/basic_example_main_run.py000066400000000000000000000062231316323560300271460ustar00rootroot00000000000000from random import random from ase.io import write from ase.optimize import BFGS from ase.calculators.emt import EMT from ase.ga.data import DataConnection from ase.ga.population import Population from ase.ga.standard_comparators import InteratomicDistanceComparator from ase.ga.cutandsplicepairing import CutAndSplicePairing from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.ga.offspring_creator import OperationSelector from ase.ga.standardmutations import MirrorMutation from ase.ga.standardmutations import RattleMutation from ase.ga.standardmutations import PermutationMutation from ase.ga import set_raw_score # Change the following three parameters to suit your needs population_size = 5 mutation_probability = 0.3 n_to_test = 5 # Initialize the different components of the GA da = DataConnection('gadb.db') atom_numbers_to_optimize = da.get_atom_numbers_to_optimize() n_to_optimize = len(atom_numbers_to_optimize) slab = da.get_slab() all_atom_types = get_all_atom_types(slab, atom_numbers_to_optimize) blmin = closest_distances_generator(all_atom_types, ratio_of_covalent_radii=0.7) comp = InteratomicDistanceComparator(n_top=n_to_optimize, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False) pairing = CutAndSplicePairing(slab, n_to_optimize, blmin) mutations = OperationSelector([1., 1., 1.], [MirrorMutation(blmin, n_to_optimize), RattleMutation(blmin, n_to_optimize), PermutationMutation(n_to_optimize)]) # Relax all unrelaxed structures (e.g. the starting population) while da.get_number_of_unrelaxed_candidates() > 0: a = da.get_an_unrelaxed_candidate() a.set_calculator(EMT()) print('Relaxing starting candidate {0}'.format(a.info['confid'])) dyn = BFGS(a, trajectory=None, logfile=None) dyn.run(fmax=0.05, steps=100) set_raw_score(a, -a.get_potential_energy()) da.add_relaxed_step(a) # create the population population = Population(data_connection=da, population_size=population_size, comparator=comp) # test n_to_test new candidates for i in range(n_to_test): print('Now starting configuration number {0}'.format(i)) a1, a2 = population.get_two_candidates() a3, desc = pairing.get_new_individual([a1, a2]) if a3 is None: continue da.add_unrelaxed_candidate(a3, description=desc) # Check if we want to do a mutation if random() < mutation_probability: a3_mut, desc = mutations.get_new_individual([a3]) if a3_mut is not None: da.add_unrelaxed_step(a3_mut, desc) a3 = a3_mut # Relax the new candidate a3.set_calculator(EMT()) dyn = BFGS(a3, trajectory=None, logfile=None) dyn.run(fmax=0.05, steps=100) set_raw_score(a3, -a3.get_potential_energy()) da.add_relaxed_step(a3) population.update() write('all_candidates.traj', da.get_all_relaxed_candidates()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/create_database.py000066400000000000000000000013531316323560300255500ustar00rootroot00000000000000from ase.ga.data import PrepareDB from ase.ga.data import DataConnection import os import numpy as np db_file = 'gadb.db' if os.path.isfile(db_file): os.remove(db_file) from ase.build import fcc111 atom_numbers = np.array([78, 78, 79, 79]) slab = fcc111('Ag', size=(4, 4, 2), vacuum=10.) d = PrepareDB(db_file_name=db_file, simulation_cell=slab, stoichiometry=atom_numbers) assert os.path.isfile(db_file) dc = DataConnection(db_file) slab_get = dc.get_slab() an_get = dc.get_atom_numbers_to_optimize() assert len(slab) == len(slab_get) assert np.all(slab.numbers == slab_get.numbers) assert np.all(slab.get_positions() == slab_get.get_positions()) assert np.all(an_get == atom_numbers) os.remove(db_file) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/cutandsplicepairing.py000066400000000000000000000036411316323560300265130ustar00rootroot00000000000000from ase.ga.startgenerator import StartGenerator from ase.ga.utilities import closest_distances_generator, atoms_too_close from ase.ga.cutandsplicepairing import CutAndSplicePairing import numpy as np from ase.build import fcc111 from ase.constraints import FixAtoms # first create two random starting candidates slab = fcc111('Au', size=(4, 4, 2), vacuum=10.0, orthogonal=True) slab.set_constraint(FixAtoms(mask=slab.positions[:, 2] <= 10.)) pos = slab.get_positions() cell = slab.get_cell() p0 = np.array([0., 0., max(pos[:, 2]) + 2.]) v1 = cell[0, :] * 0.8 v2 = cell[1, :] * 0.8 v3 = cell[2, :] v3[2] = 3. cd = closest_distances_generator(atom_numbers=[47, 79], ratio_of_covalent_radii=0.7) atom_numbers = 2 * [47] + 2 * [79] sg = StartGenerator(slab=slab, atom_numbers=atom_numbers, closest_allowed_distances=cd, box_to_place_in=[p0, [v1, v2, v3]]) c1 = sg.get_new_candidate() c1.info['confid'] = 1 c2 = sg.get_new_candidate() c2.info['confid'] = 2 n_top = len(atom_numbers) pairing = CutAndSplicePairing(slab, n_top, cd) c3, desc = pairing.get_new_individual([c1, c2]) # verify that the stoichiometry is preserved assert np.all(c3.numbers == c1.numbers) top1 = c1[-n_top:] top2 = c2[-n_top:] top3 = c3[-n_top:] # verify that the positions in the new candidate come from c1 or c2 n1 = -1 * np.ones((n_top, )) n2 = -1 * np.ones((n_top, )) for i in range(n_top): for j in range(n_top): if np.all(top1.positions[j, :] == top3.positions[i, :]): n1[i] = j break elif np.all(top2.positions[j, :] == top3.positions[i, :]): n2[i] = j break assert (n1[i] > -1 and n2[i] == -1) or (n1[i] == -1 and n2[i] > -1) # verify that c3 includes atoms from both c1 and c2 assert len(n1[n1 > -1]) > 0 and len(n2[n2 > -1]) > 0 # verify no atoms too close assert not atoms_too_close(top3, cd) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/database_logic.py000066400000000000000000000044611316323560300254050ustar00rootroot00000000000000from ase.ga.data import PrepareDB from ase.ga.data import DataConnection from ase.ga.startgenerator import StartGenerator from ase.ga.utilities import closest_distances_generator from ase.ga import set_raw_score import os import numpy as np from ase.build import fcc111 from ase.constraints import FixAtoms db_file = 'gadb_logics_test.db' slab = fcc111('Au', size=(4, 4, 2), vacuum=10.0, orthogonal=True) slab.set_constraint(FixAtoms(mask=slab.positions[:, 2] <= 10.)) # define the volume in which the adsorbed cluster is optimized # the volume is defined by a corner position (p0) # and three spanning vectors (v1, v2, v3) pos = slab.get_positions() cell = slab.get_cell() p0 = np.array([0., 0., max(pos[:, 2]) + 2.]) v1 = cell[0, :] * 0.8 v2 = cell[1, :] * 0.8 v3 = cell[2, :] v3[2] = 3. # define the closest distance between two atoms of a given species cd = closest_distances_generator(atom_numbers=[47, 79], ratio_of_covalent_radii=0.7) # Define the composition of the atoms to optimize atom_numbers = 2 * [47] + 2 * [79] # create the starting population sg = StartGenerator(slab=slab, atom_numbers=atom_numbers, closest_allowed_distances=cd, box_to_place_in=[p0, [v1, v2, v3]]) # generate the starting population starting_population = [sg.get_new_candidate() for i in range(20)] d = PrepareDB(db_file_name=db_file, simulation_cell=slab, stoichiometry=atom_numbers) for a in starting_population: d.add_unrelaxed_candidate(a) # and now for the actual test dc = DataConnection(db_file) slab_get = dc.get_slab() an_get = dc.get_atom_numbers_to_optimize() assert dc.get_number_of_unrelaxed_candidates() == 20 a1 = dc.get_an_unrelaxed_candidate() dc.mark_as_queued(a1) assert dc.get_number_of_unrelaxed_candidates() == 19 assert len(dc.get_all_candidates_in_queue()) == 1 set_raw_score(a1, 0.0) dc.add_relaxed_step(a1) assert dc.get_number_of_unrelaxed_candidates() == 19 assert len(dc.get_all_candidates_in_queue()) == 0 assert len(dc.get_all_relaxed_candidates()) == 1 a2 = dc.get_an_unrelaxed_candidate() dc.mark_as_queued(a2) confid = a2.info['confid'] assert dc.get_all_candidates_in_queue()[0] == confid dc.remove_from_queue(confid) assert len(dc.get_all_candidates_in_queue()) == 0 os.remove(db_file) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/element_operators.py000066400000000000000000000041571316323560300262150ustar00rootroot00000000000000from ase import Atoms from ase.ga.element_crossovers import OnePointElementCrossover a1 = Atoms('SrSrSrBaClClClClBrBrBrBr') a1.info['confid'] = 1 a2 = Atoms('CaCaMgBaFFFFFFFF') a2.info['confid'] = 2 cations = ['Sr', 'Ba', 'Ca', 'Mg'] anions = ['Cl', 'F', 'Br'] op = OnePointElementCrossover([cations, anions], [3, 2], [.25, .5]) a3, desc = op.get_new_individual([a1, a2]) syms = a3.get_chemical_symbols() assert len(set([i for i in syms if i in cations])) < 4 assert len(set([i for i in syms if i in anions])) < 3 from ase.ga.element_mutations import RandomElementMutation op = RandomElementMutation([cations, anions], [3, 2], [.25, .5]) a4, desc = op.get_new_individual([a1]) syms = a4.get_chemical_symbols() assert len(set([i for i in syms if i in cations])) < 4 assert len(set([i for i in syms if i in anions])) < 3 op = RandomElementMutation(anions, 2, .5) a4, desc = op.get_new_individual([a2]) syms = a4.get_chemical_symbols() assert len(set([i for i in syms if i in anions])) == 2 from ase.ga.element_mutations import MoveDownMutation from ase.ga.element_mutations import MoveUpMutation from ase.ga.element_mutations import MoveRightMutation from ase.ga.element_mutations import MoveLeftMutation a1 = Atoms('SrSrClClClCl') a1.info['confid'] = 1 op = MoveDownMutation(cations, 2, .5) a2, desc = op.get_new_individual([a1]) a2.info['confid'] = 2 syms = a2.get_chemical_symbols() assert 'Ba' in syms assert len(set(syms)) == 3 op = MoveUpMutation(cations, 1, 1.) a3, desc = op.get_new_individual([a2]) syms = a3.get_chemical_symbols() assert 'Ba' not in syms assert len(set(syms)) == 2 cations = ['Co', 'Ni', 'Cu'] a1 = Atoms('NiNiBrBr') a1.info['confid'] = 1 op = MoveRightMutation(cations, 1, 1.) a2, desc = op.get_new_individual([a1]) a2.info['confid'] = 2 syms = a2.get_chemical_symbols() assert len(set(syms)) == 2 assert len([i for i in syms if i == 'Cu']) == 2 op = MoveLeftMutation(cations, 2, .5) a3, desc = op.get_new_individual([a2]) syms = a3.get_chemical_symbols() from ase.ga import set_raw_score, get_raw_score assert len(set(syms)) == 3 set_raw_score(a3, 5.0) assert get_raw_score(a3) == 5.0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/mutations.py000066400000000000000000000042611316323560300245050ustar00rootroot00000000000000from ase.ga.startgenerator import StartGenerator from ase.ga.utilities import closest_distances_generator from ase.ga.standardmutations import RattleMutation, PermutationMutation import numpy as np from ase.build import fcc111 from ase.constraints import FixAtoms # first create two random starting candidates slab = fcc111('Au', size=(4, 4, 2), vacuum=10.0, orthogonal=True) slab.set_constraint(FixAtoms(mask=slab.positions[:, 2] <= 10.)) pos = slab.get_positions() cell = slab.get_cell() p0 = np.array([0., 0., max(pos[:, 2]) + 2.]) v1 = cell[0, :] * 0.8 v2 = cell[1, :] * 0.8 v3 = cell[2, :] v3[2] = 3. cd = closest_distances_generator(atom_numbers=[47, 79], ratio_of_covalent_radii=0.7) atom_numbers = 2 * [47] + 2 * [79] n_top = len(atom_numbers) sg = StartGenerator(slab=slab, atom_numbers=atom_numbers, closest_allowed_distances=cd, box_to_place_in=[p0, [v1, v2, v3]]) c1 = sg.get_new_candidate() c1.info['confid'] = 1 # first verify that the rattle mutation works rmut = RattleMutation(cd, n_top, rattle_strength=0.8, rattle_prop=0.4) c2, desc = rmut.get_new_individual([c1]) assert np.all(c1.numbers == c2.numbers) top1 = c1[-n_top:] top2 = c2[-n_top:] slab2 = c2[0:(len(c1) - n_top)] assert len(slab) == len(slab2) assert np.all(slab.get_positions() == slab2.get_positions()) dp = np.sum((top2.get_positions() - top1.get_positions())**2, axis=1)**0.5 # check that all displacements are smaller than the rattle strength we # cannot check if 40 % of the structures have been rattled since it is # probabilistic and because the probability will be lower if two atoms # get too close for p in dp: assert p < 0.8 * 3**0.5 # now we check the permutation mutation mmut = PermutationMutation(n_top, probability=0.5) c3, desc = mmut.get_new_individual([c1]) assert np.all(c1.numbers == c3.numbers) top1 = c1[-n_top:] top2 = c3[-n_top:] slab2 = c3[0:(len(c1) - n_top)] assert len(slab) == len(slab2) assert np.all(slab.get_positions() == slab2.get_positions()) dp = np.sum((top2.get_positions() - top1.get_positions())**2, axis=1)**0.5 # verify that two positions have been changed assert len(dp[dp > 0]) == 2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/particle_comparators.py000066400000000000000000000014561316323560300267020ustar00rootroot00000000000000from ase.cluster import Icosahedron from ase.ga.particle_comparator import NNMatComparator from ase.ga.utilities import get_nnmat from ase.ga.particle_mutations import RandomPermutation ico1 = Icosahedron('Cu', 4) ico1.info['confid'] = 1 ico2 = Icosahedron('Ni', 4) ico1.numbers[:55] = [28] * 55 ico2.numbers[:92] = [29] * 92 ico1.info['data'] = {} ico1.info['data']['nnmat'] = get_nnmat(ico1) ico2.info['data'] = {} ico2.info['data']['nnmat'] = get_nnmat(ico2) comp = NNMatComparator() assert not comp.looks_like(ico1, ico2) op = RandomPermutation() a3, desc = op.get_new_individual([ico1]) assert a3.get_chemical_formula() == ico1.get_chemical_formula() hard_comp = NNMatComparator(d=100) assert hard_comp.looks_like(ico1, a3) soft_comp = NNMatComparator(d=.0001) assert not soft_comp.looks_like(ico1, a3) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/particle_operators.py000066400000000000000000000033251316323560300263630ustar00rootroot00000000000000from ase.cluster import Icosahedron from ase.ga.particle_crossovers import CutSpliceCrossover from random import shuffle ico1 = Icosahedron('Cu', 3) ico1.info['confid'] = 1 ico2 = Icosahedron('Ni', 3) ico2.info['confid'] = 2 # TODO: Change this crossover to one for fixed particles # op = CutSpliceCrossover({(28, 29): 2.0, (28, 28): 2.0, (29, 29): 2.0}, # keep_composition=False) # a3, desc = op.get_new_individual([ico1, ico2]) # assert len(set(a3.get_chemical_symbols())) == 2 # assert len(a3) == 55 ico1.numbers[:20] = [28] * 20 shuffle(ico1.numbers) ico2.numbers[:35] = [29] * 35 shuffle(ico2.numbers) op = CutSpliceCrossover({(28, 29): 2.0, (28, 28): 2.0, (29, 29): 2.0}) a3, desc = op.get_new_individual([ico1, ico2]) assert a3.get_chemical_formula() == 'Cu35Ni20' from ase.ga.particle_mutations import COM2surfPermutation # from ase.ga.particle_mutations import RandomPermutation # from ase.ga.particle_mutations import Poor2richPermutation # from ase.ga.particle_mutations import Rich2poorPermutation op = COM2surfPermutation(min_ratio=0.05) a3, desc = op.get_new_individual([ico1]) a3.info['confid'] = 3 assert a3.get_chemical_formula() == 'Cu35Ni20' aconf = op.get_atomic_configuration(a3) core = aconf[1] shell = aconf[-1] for i, sym in zip(core, 6 * ['Ni'] + 6 * ['Cu']): a3[i].symbol = sym for i, sym in zip(shell, 6 * ['Ni'] + 6 * ['Cu']): a3[i].symbol = sym atomic_conf = op.get_atomic_configuration(a3, elements=['Cu'])[-2:] cu3 = len([item for sublist in atomic_conf for item in sublist]) a4, desc = op.get_new_individual([a3]) atomic_conf = op.get_atomic_configuration(a4, elements=['Cu'])[-2:] cu4 = len([item for sublist in atomic_conf for item in sublist]) assert abs(cu4 - cu3) == 1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/standardcomparator.py000066400000000000000000000034431316323560300263530ustar00rootroot00000000000000from ase.ga.standard_comparators import (InteratomicDistanceComparator, EnergyComparator, RawScoreComparator, SequentialComparator) from ase import Atoms from ase.calculators.singlepoint import SinglePointCalculator from ase.ga import set_raw_score a1 = Atoms('AgAgAg', positions=[[0, 0, 0], [1.5, 0, 0], [1.5, 1.5, 0]]) a2 = Atoms('AgAgAg', positions=[[0, 0, 0], [1.4, 0, 0], [1.5, 1.5, 0]]) e1 = 1.0 e2 = 0.8 a1.set_calculator(SinglePointCalculator(a1, energy=e1)) a2.set_calculator(SinglePointCalculator(a2, energy=e2)) comp1 = InteratomicDistanceComparator(n_top=3, pair_cor_cum_diff=0.03, pair_cor_max=0.7, dE=0.3) assert comp1.looks_like(a1, a2) comp2 = InteratomicDistanceComparator(n_top=3, pair_cor_cum_diff=0.03, pair_cor_max=0.7, dE=0.15) assert not comp2.looks_like(a1, a2) comp3 = InteratomicDistanceComparator(n_top=3, pair_cor_cum_diff=0.02, pair_cor_max=0.7, dE=0.3) assert not comp3.looks_like(a1, a2) hard_E_comp = EnergyComparator(dE=1.0) assert hard_E_comp.looks_like(a1, a2) soft_E_comp = EnergyComparator(dE=.01) assert not soft_E_comp.looks_like(a1, a2) set_raw_score(a1, .1) set_raw_score(a2, .27) rs_comp = RawScoreComparator(0.15) assert not rs_comp.looks_like(a1, a2) comp1 = SequentialComparator([hard_E_comp, rs_comp], [0, 0]) assert not comp1.looks_like(a1, a2) comp2 = SequentialComparator([hard_E_comp, rs_comp], [0, 1]) assert comp2.looks_like(a1, a2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/ga/utilities.py000066400000000000000000000025741316323560300245020ustar00rootroot00000000000000from __future__ import division import numpy as np from ase.cluster import Icosahedron from ase.calculators.emt import EMT from ase.optimize.fire import FIRE from ase.lattice.compounds import L1_2 from ase.ga.utilities import get_rdf eps = 1e-5 atoms = Icosahedron('Cu', 3) atoms.numbers[[0, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30]] = 79 atoms.set_calculator(EMT()) opt = FIRE(atoms, logfile=None) opt.run(fmax=0.05) rmax = 8. nbins = 5 rdf, dists = get_rdf(atoms, rmax, nbins) calc_dists = np.arange(rmax / (2 * nbins), rmax, rmax / nbins) assert all(abs(dists - calc_dists) < eps) calc_rdf = [0., 0.84408157, 0.398689, 0.23748934, 0.15398546] assert all(abs(rdf - calc_rdf) < eps) dm = atoms.get_all_distances() s = np.zeros(5) for c in [(29, 29), (29, 79), (79, 29), (79, 79)]: inv_norm = len(np.where(atoms.numbers == c[0])[0]) / len(atoms) s += get_rdf(atoms, rmax, nbins, elements=c, distance_matrix=dm, no_dists=True) * inv_norm assert all(abs(s - calc_rdf) < eps) AuAu = get_rdf(atoms, rmax, nbins, elements=(79, 79), distance_matrix=dm, no_dists=True) assert all(abs(AuAu[-2:] - [0.12126445, 0.]) < eps) bulk = L1_2(['Au', 'Cu'], size=(2, 2, 2), latticeconstant=np.sqrt(2)) dm = bulk.get_all_distances(mic=True) rdf = get_rdf(bulk, 5., 3, distance_matrix=dm)[0] calc_rdf = [0.54694216, 0.08334357, 0.] assert all(abs(rdf - calc_rdf) < eps)ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gaussian/000077500000000000000000000000001316323560300233305ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gaussian/__init__.py000066400000000000000000000000001316323560300254270ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gaussian/gaussian_cmdline.py000066400000000000000000000013341316323560300272100ustar00rootroot00000000000000from ase.test import cli, require from ase.db import connect from ase.io.jsonio import read_json from ase.calculators.gaussian import Gaussian require('gaussian') cli("""\ ase build O | ase run gaussian -d gaussian_cmdline.json && ase build O2 | ase run gaussian -d gaussian_cmdline.json""") c = connect('gaussian_cmdline.json') dct = read_json('gaussian_cmdline.json') for name in ['O2', 'O']: d = c.get([('name', '=', name)]) id = d.id e1 = d.energy e2 = c.get_atoms(id).get_potential_energy() e3 = Gaussian.read_atoms(name).get_potential_energy() e4 = dct[id]['energy'] assert e1 == e2 == e3 == e4 print(e1) ae = 2 * c.get('name=O').energy - c.get('name=O2').energy assert abs(ae - 1.060) < 1e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gaussian/h2of.py000066400000000000000000000043321316323560300245420ustar00rootroot00000000000000from ase import Atoms from ase.calculators.gaussian import Gaussian basis = """H 0 S 3 1.00 13.0107010 0.19682158E-01 1.9622572 0.13796524 0.44453796 0.47831935 S 1 1.00 0.12194962 1.0000000 P 1 1.00 0.8000000 1.0000000 **** O 0 S 5 1.00 2266.1767785 -0.53431809926E-02 340.87010191 -0.39890039230E-01 77.363135167 -0.17853911985 21.479644940 -0.46427684959 6.6589433124 -0.44309745172 S 1 1.00 0.80975975668 1.0000000 S 1 1.00 0.25530772234 1.0000000 P 3 1.00 17.721504317 0.43394573193E-01 3.8635505440 0.23094120765 1.0480920883 0.51375311064 P 1 1.00 0.27641544411 1.0000000 D 1 1.00 1.2000000 1.0000000 **** F 0 S 5 1.00 2894.8325990 -0.53408255515E-02 435.41939120 -0.39904258866E-01 98.843328866 -0.17912768038 27.485198001 -0.46758090825 8.5405498171 -0.44653131020 S 1 1.00 1.0654578038 1.0000000 S 1 1.00 0.33247346748 1.0000000 P 3 1.00 22.696633924 -0.45212874436E-01 4.9872339257 -0.23754317067 1.3491613954 -0.51287353587 P 1 1.00 0.34829881977 1.0000000 D 1 1.00 1.4000000 1.0000000 **** """ with open('def2-svp.gbs', 'w') as bfile: bfile.write(basis) atoms = Atoms('OH2F', positions=[(-1.853788, -0.071113, 0.000000), (-1.892204, 0.888768, 0.000000), (-0.888854, -0.232973, 0.000000), (1.765870, 0.148285, 0.000000)]) label = 'h2of-anion' calc = Gaussian(charge=-1.0, basis='gen', method='B3LYP', basisfile='@def2-svp.gbs/N', label=label, ioplist=['6/80=1', '6/35=4000000'], density='current', addsec=['%s.wfx' % label] ) atoms.set_calculator(calc) atoms.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gaussian/water.py000066400000000000000000000015251316323560300250270ustar00rootroot00000000000000from ase.calculators.gaussian import Gaussian from ase.atoms import Atoms from ase.optimize.lbfgs import LBFGS # First test to make sure Gaussian works calc = Gaussian(method='pbepbe', basis='sto-3g', force='force', nproc=1, chk='water.chk', label='water') calc.clean() water = Atoms('OHH', positions=[(0, 0, 0), (1, 0, 0), (0, 1, 0)], calculator=calc) opt = LBFGS(water) opt.run(fmax=0.05) forces = water.get_forces() energy = water.get_potential_energy() positions = water.get_positions() # Then test the IO routines from ase.io import read water2 = read('water.log') forces2 = water2.get_forces() energy2 = water2.get_potential_energy() positions2 = water2.get_positions() assert abs(energy - energy2) < 1e-7 assert abs(forces - forces2).max() < 1e-9 assert abs(positions - positions2).max() < 1e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/geometry.py000066400000000000000000000146621316323560300237340ustar00rootroot00000000000000"""Test the ase.geometry module and ase.build.cut() function.""" from __future__ import division import numpy as np from ase.build import cut, bulk from ase.geometry import (get_layers, wrap_positions, crystal_structure_from_cell) from ase.spacegroup import crystal, get_spacegroup al = crystal('Al', [(0, 0, 0)], spacegroup=225, cellpar=4.05) # Cut out slab of 5 Al(001) layers al001 = cut(al, nlayers=5) correct_pos = np.array([[0., 0., 0.], [0., 0.5, 0.2], [0.5, 0., 0.2], [0.5, 0.5, 0.], [0., 0., 0.4], [0., 0.5, 0.6], [0.5, 0., 0.6], [0.5, 0.5, 0.4], [0., 0., 0.8], [0.5, 0.5, 0.8]]) assert np.allclose(correct_pos, al001.get_scaled_positions()) # Check layers along 001 tags, levels = get_layers(al001, (0, 0, 1)) assert np.allclose(tags, [0, 1, 1, 0, 2, 3, 3, 2, 4, 4]) assert np.allclose(levels, [0., 2.025, 4.05, 6.075, 8.1]) # Check layers along 101 tags, levels = get_layers(al001, (1, 0, 1)) assert np.allclose(tags, [0, 1, 5, 3, 2, 4, 8, 7, 6, 9]) assert np.allclose(levels, [0.000, 0.752, 1.504, 1.880, 2.256, 2.632, 3.008, 3.384, 4.136, 4.888], atol=0.001) # Check layers along 111 tags, levels = get_layers(al001, (1, 1, 1)) assert np.allclose(tags, [0, 2, 2, 4, 1, 5, 5, 6, 3, 7]) assert np.allclose(levels, [0.000, 1.102, 1.929, 2.205, 2.756, 3.031, 3.858, 4.960], atol=0.001) # Cut out slab of three Al(111) layers al111 = cut(al, (1, -1, 0), (0, 1, -1), nlayers=3) correct_pos = np.array([[0.5, 0., 0.], [0., 0.5, 0.], [0.5, 0.5, 0.], [0., 0., 0.], [1 / 6., 1 / 3., 1 / 3.], [1 / 6., 5 / 6., 1 / 3.], [2 / 3., 5 / 6., 1 / 3.], [2 / 3., 1 / 3., 1 / 3.], [1 / 3., 1 / 6., 2 / 3.], [5 / 6., 1 / 6., 2 / 3.], [5 / 6., 2 / 3., 2 / 3.], [1 / 3., 2 / 3., 2 / 3.]]) assert np.allclose(correct_pos, al111.get_scaled_positions()) # Cut out cell including all corner and edge atoms (non-periodic structure) al = cut(al, extend=1.1) correct_pos = np.array([[0., 0., 0.], [0., 2.025, 2.025], [2.025, 0., 2.025], [2.025, 2.025, 0.], [0., 0., 4.05], [2.025, 2.025, 4.05], [0., 4.05, 0.], [2.025, 4.05, 2.025], [0., 4.05, 4.05], [4.05, 0., 0.], [4.05, 2.025, 2.025], [4.05, 0., 4.05], [4.05, 4.05, 0.], [4.05, 4.05, 4.05]]) assert np.allclose(correct_pos, al.positions) # Create an Ag(111)/Si(111) interface ag = crystal(['Ag'], basis=[(0, 0, 0)], spacegroup=225, cellpar=4.09) si = crystal(['Si'], basis=[(0, 0, 0)], spacegroup=227, cellpar=5.43) assert get_spacegroup(ag).no == 225 assert get_spacegroup(si).no == 227 ag111 = cut(ag, a=(4, -4, 0), b=(4, 4, -8), nlayers=5) si111 = cut(si, a=(3, -3, 0), b=(3, 3, -6), nlayers=5) # # interface = stack(ag111, si111) # assert len(interface) == 1000 # assert np.allclose(interface.positions[::100], # [[ 4.08125 , -2.040625 , -2.040625 ], # [ 8.1625 , 6.121875 , -14.284375 ], # [ 10.211875 , 0.00875 , 2.049375 ], # [ 24.49041667, -4.07833333, -16.32208333], # [ 18.37145833, 14.29020833, -24.48166667], # [ 24.49916667, 12.25541667, -20.39458333], # [ 18.36854167, 16.32791667, -30.60645833], # [ 19.0575 , 0.01166667, 5.45333333], # [ 23.13388889, 6.80888889, 1.36722222], # [ 35.3825 , 5.45333333, -16.31333333]]) # # Test the wrap_positions function. positions = np.array([ [4.0725, -4.0725, -1.3575], [1.3575, -1.3575, -1.3575], [2.715, -2.715, 0.], [4.0725, 1.3575, -1.3575], [0., 0., 0.], [2.715, 2.715, 0.], [6.7875, -1.3575, -1.3575], [5.43, 0., 0.]]) cell = np.array([[5.43, 5.43, 0.0], [5.43, -5.43, 0.0], [0.00, 0.00, 40.0]]) positions += np.array([6.1, -0.1, 10.1]) result_positions = wrap_positions(positions=positions, cell=cell) correct_pos = np.array([ [4.7425, 1.2575, 8.7425], [7.4575, -1.4575, 8.7425], [3.385, 2.615, 10.1], [4.7425, -4.1725, 8.7425], [6.1, -0.1, 10.1], [3.385, -2.815, 10.1], [2.0275, -1.4575, 8.7425], [0.67, -0.1, 10.1]]) assert np.allclose(correct_pos, result_positions) positions = wrap_positions(positions, cell, pbc=[False, True, False]) correct_pos = np.array([ [4.7425, 1.2575, 8.7425], [7.4575, -1.4575, 8.7425], [3.385, 2.615, 10.1], [10.1725, 1.2575, 8.7425], [6.1, -0.1, 10.1], [8.815, 2.615, 10.1], [7.4575, 3.9725, 8.7425], [6.1, 5.33, 10.1]]) assert np.allclose(correct_pos, positions) # Test center away from values 0, 0.5 result_positions = wrap_positions(positions, cell, pbc=[True, True, False], center=0.2) correct_pos = [[4.7425, 1.2575, 8.7425], [2.0275, 3.9725, 8.7425], [3.385, 2.615, 10.1], [-0.6875, 1.2575, 8.7425], [6.1, -0.1, 10.1], [3.385, -2.815, 10.1], [2.0275, -1.4575, 8.7425], [0.67, -0.1, 10.1]] assert np.allclose(correct_pos, result_positions) # Get the correct crystal structure from a range of different cells assert crystal_structure_from_cell(bulk('Al').get_cell()) == 'fcc' assert crystal_structure_from_cell(bulk('Fe').get_cell()) == 'bcc' assert crystal_structure_from_cell(bulk('Zn').get_cell()) == 'hexagonal' cell = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] assert crystal_structure_from_cell(cell) == 'cubic' cell = [[1, 0, 0], [0, 1, 0], [0, 0, 2]] assert crystal_structure_from_cell(cell) == 'tetragonal' cell = [[1, 0, 0], [0, 2, 0], [0, 0, 3]] assert crystal_structure_from_cell(cell) == 'orthorhombic' cell = [[1, 0, 0], [0, 2, 0], [0.5, 0, 3]] assert crystal_structure_from_cell(cell) == 'monoclinic' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gpaw/000077500000000000000000000000001316323560300224545ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gpaw/__init__.py000066400000000000000000000000001316323560300245530ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gpaw/no_spin_and_spin.py000066400000000000000000000007521316323560300263520ustar00rootroot00000000000000from ase.build import molecule from ase import io from gpaw import GPAW txt = 'out.txt' if 1: calculator = GPAW(h=0.3, txt=txt) atoms = molecule('H2', calculator=calculator) atoms.center(vacuum=3) atoms.get_potential_energy() atoms.set_initial_magnetic_moments([0.5, 0.5]) calculator.set(charge=1) atoms.get_potential_energy() # read again t = io.read(txt, index=':') assert isinstance(t, list) M = t[1].get_magnetic_moments() assert abs(M - 0.2).max() < 0.1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gromacs/000077500000000000000000000000001316323560300231515ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gromacs/__init__.py000077500000000000000000000000001316323560300252530ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gromacs/test_gromacs.py000077500000000000000000000047041316323560300262250ustar00rootroot00000000000000""" test run for gromacs calculator """ from ase.test import NotAvailable from ase.calculators.gromacs import Gromacs if Gromacs().get_command() is None: raise NotAvailable( 'Gromacs required, setup your GMXCMD environmental variable') GRO_INIT_FILE = 'hise_box.gro' # write structure file outfile = open('hise_box.gro', 'w') outfile.write('HISE for testing \n') outfile.write(' 20 \n') outfile.write(' 3HISE N 1 1.966 1.938 1.722 \n') outfile.write(' 3HISE H1 2 2.053 1.892 1.711 \n') outfile.write(' 3HISE H2 3 1.893 1.882 1.683 \n') outfile.write(' 3HISE H3 4 1.969 2.026 1.675 \n') outfile.write(' 3HISE CA 5 1.939 1.960 1.866 \n') outfile.write(' 3HISE HA 6 1.934 1.869 1.907 \n') outfile.write(' 3HISE CB 7 2.055 2.041 1.927 \n') outfile.write(' 3HISE HB1 8 2.141 2.007 1.890 \n') outfile.write(' 3HISE HB2 9 2.043 2.137 1.903 \n') outfile.write(' 3HISE ND1 10 1.962 2.069 2.161 \n') outfile.write(' 3HISE CG 11 2.065 2.032 2.077 \n') outfile.write(' 3HISE CE1 12 2.000 2.050 2.287 \n') outfile.write(' 3HISE HE1 13 1.944 2.069 2.368 \n') outfile.write(' 3HISE NE2 14 2.123 2.004 2.287 \n') outfile.write(' 3HISE HE2 15 2.177 1.981 2.369 \n') outfile.write(' 3HISE CD2 16 2.166 1.991 2.157 \n') outfile.write(' 3HISE HD2 17 2.256 1.958 2.128 \n') outfile.write(' 3HISE C 18 1.806 2.032 1.888 \n') outfile.write(' 3HISE OT1 19 1.736 2.000 1.987 \n') outfile.write(' 3HISE OT2 20 1.770 2.057 2.016 \n') outfile.write(' 4.00000 4.00000 4.00000 \n') outfile.close() CALC_MM_RELAX = Gromacs( force_field='charmm27', define='-DFLEXIBLE', integrator='cg', nsteps='10000', nstfout='10', nstlog='10', nstenergy='10', nstlist='10', ns_type='grid', pbc='xyz', rlist='0.7', coulombtype='PME-Switch', rcoulomb='0.6', vdwtype='shift', rvdw='0.6', rvdw_switch='0.55', DispCorr='Ener') CALC_MM_RELAX.set_own_params_runs( 'init_structure', 'hise_box.gro') CALC_MM_RELAX.generate_topology_and_g96file() CALC_MM_RELAX.write_input() CALC_MM_RELAX.generate_gromacs_run_file() CALC_MM_RELAX.run() atoms = CALC_MM_RELAX.get_atoms() final_energy = CALC_MM_RELAX.get_potential_energy(atoms) assert abs(final_energy + 4.06503308131) < 5e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gui/000077500000000000000000000000001316323560300223025ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gui/__init__.py000066400000000000000000000000001316323560300244010ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gui/run.py000066400000000000000000000057311316323560300234660ustar00rootroot00000000000000from __future__ import unicode_literals import argparse import os import numpy as np from ase import Atoms from ase.calculators.singlepoint import SinglePointCalculator from ase.build import molecule from ase.gui.i18n import _ from ase.test import NotAvailable try: import ase.gui.ui as ui except ImportError: raise NotAvailable from ase.gui.gui import GUI from ase.gui.save import save_dialog if not os.environ.get('DISPLAY'): raise NotAvailable class Error: """Fake window for testing puposes.""" has_been_called = False def __call__(self, title, text=None): self.text = text or title self.has_been_called = True def called(self, text=None): """Check that an oops-window was opened with correct title.""" if not self.has_been_called: return False self.has_been_called = False # ready for next call return text is None or text == self.text ui.error = Error() alltests = [] def test(f): """Decorator for marking tests.""" alltests.append(f.__name__) return f @test def nanotube(gui): nt = gui.nanotube_window() nt.apply() nt.element[1].value = '?' nt.apply() assert ui.error.called( _('You have not (yet) specified a consistent set of parameters.')) nt.element[1].value = 'C' nt.ok() assert len(gui.images[0]) == 20 @test def nanopartickle(gui): n = gui.nanoparticle_window() n.element.symbol = 'Cu' n.apply() n.set_structure_data() assert len(gui.images[0]) == 675 n.method.value = 'wulff' n.update_gui_method() n.apply() @test def color(gui): a = Atoms('C10', magmoms=np.linspace(1, -1, 10)) a.positions[:] = np.linspace(0, 9, 10)[:, None] a.calc = SinglePointCalculator(a, forces=a.positions) gui.new_atoms(a) c = gui.colors_window() c.toggle('force') text = c.toggle('magmom') assert [button.active for button in c.radio.buttons] == [1, 0, 1, 0, 0, 1] assert text.rsplit('[', 1)[1].startswith('-1.000000,1.000000]') @test def settings(gui): gui.new_atoms(molecule('H2O')) s = gui.settings() s.scale.value = 1.9 s.scale_radii() @test def rotate(gui): gui.new_atoms(molecule('H2O')) gui.rotate_window() @test def open_and_save(gui): mol = molecule('H2O') for i in range(3): mol.write('h2o.json') gui.open(filename='h2o.json') save_dialog(gui, 'h2o.cif@-1') p = argparse.ArgumentParser() p.add_argument('tests', nargs='*') p.add_argument('-p', '--pause', action='store_true') if __name__ == '__main__': args = p.parse_args() else: # We are running inside the test framework: ignore sys.args args = p.parse_args([]) for name in args.tests or alltests: for n in alltests: if n.startswith(name): name = n break else: 1 / 0 print(name) test = globals()[name] gui = GUI() def f(): test(gui) if not args.pause: gui.exit() gui.run(test=f) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gui/ui.py000066400000000000000000000022301316323560300232660ustar00rootroot00000000000000import os from functools import partial from ase.test import NotAvailable try: import ase.gui.ui as ui except ImportError: raise NotAvailable if not os.environ.get('DISPLAY'): raise NotAvailable def window(): def hello(event=None): print('hello', event) menu = [('Hi', [ui.MenuItem('_Hello', hello, 'Ctrl+H')]), ('Hell_o', [ui.MenuItem('ABC', hello, choices='ABC')])] win = ui.MainWindow('Test', menu=menu) win.add(ui.Label('Hello')) win.add(ui.Button('Hello', hello)) r = ui.Rows([ui.Label(x * 7) for x in 'abcd']) win.add(r) r.add('11111\n2222\n333\n44\n5') def abc(x): print(x, r.rows) cb = ui.ComboBox(['Aa', 'Bb', 'Cc'], callback=abc) win.add(cb) rb = ui.RadioButtons(['A', 'B', 'C'], 'ABC', abc) win.add(rb) b = ui.CheckButton('Hello') def hi(): print(b.value, rb.value, cb.value) del r[2] r.add('-------------') win.add([b, ui.Button('Hi', hi)]) return win def run(): win = window() win.test(partial(test, win)) def test(win): win.things[1].callback() win.things[1].callback() win.close() run() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gulp.py000066400000000000000000000040621316323560300230410ustar00rootroot00000000000000from ase.calculators.gulp import GULP, Conditions from ase import Atoms import numpy as np cluster = Atoms(symbols='O4SiOSiO2SiO2SiO2SiOSiO2SiO3SiO3H8', pbc=np.array([False, False, False], dtype=bool), cell=np.array( [[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]), positions=np.array( [[-1.444348, -0.43209 , -2.054785], [-0.236947, 2.98731 , 1.200025], [ 3.060238, -1.05911 , 0.579909], [ 2.958277, -3.289076, 2.027579], [-0.522747, 0.847624, -2.47521 ], [-2.830486, -2.7236 , -2.020633], [-0.764328, -1.251141, 1.402431], [ 3.334801, 0.041643, -4.168601], [-1.35204 , -2.009562, 0.075892], [-1.454655, -1.985635, -1.554533], [ 0.85504 , 0.298129, -3.159972], [ 1.75833 , 1.256026, 0.690171], [ 2.376446, -0.239522, -2.881245], [ 1.806515, -4.484208, -2.686456], [-0.144193, -2.74503 , -2.177778], [ 0.167583, 1.582976, 0.47998 ], [-1.30716 , 1.796853, -3.542121], [ 1.441364, -3.072993, -1.958788], [-1.694171, -1.558913, 2.704219], [ 4.417516, 1.263796, 0.563573], [ 3.066366, 0.49743 , 0.071898], [-0.704497, 0.351869, 1.102318], [ 2.958884, 0.51505 , -1.556651], [ 1.73983 , -3.161794, -0.356577], [ 2.131519, -2.336982, 0.996026], [ 0.752313, -1.788039, 1.687183], [-0.142347, 1.685301, -1.12086 ], [ 2.32407 , -1.845905, -2.588202], [-2.571557, -1.937877, 2.604727], [ 2.556369, -4.551103, -3.2836 ], [ 3.032586, 0.591698, -4.896276], [-1.67818 , 2.640745, -3.27092 ], [ 5.145483, 0.775188, 0.95687 ], [-2.81059 , -3.4492 , -2.650319], [ 2.558023, -3.594544, 2.845928], [ 0.400993, 3.469148, 1.733289]])) c = Conditions(cluster) c.min_distance_rule('O', 'H', 'O2', 'H', 'O1') cluster.set_calculator(GULP(keywords='opti conp phon noden distance molq compare angle nono',shel = ['O1','O2'], conditions = c)) print(cluster.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/gulp_opt.py000066400000000000000000000010201316323560300237120ustar00rootroot00000000000000import numpy as np from ase.calculators.gulp import GULP from ase.optimize import BFGS from ase.build import molecule atoms = molecule('H2O') atoms1 = atoms.copy() atoms1.calc = GULP(library='reaxff.lib') opt1 = BFGS(atoms1,trajectory='bfgs.traj') opt1.run(fmax=0.005) atoms2 = atoms.copy() calc2 = GULP(keywords='opti conp', library='reaxff.lib') opt2 = calc2.get_optimizer(atoms2) opt2.run() print(np.abs(opt1.atoms.positions - opt2.atoms.positions)) assert np.abs(opt1.atoms.positions - opt2.atoms.positions).max() < 1e-5 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/h2.py000066400000000000000000000003671316323560300224070ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT h2 = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1.1)], calculator=EMT()) f1 = h2.calc.calculate_numerical_forces(h2, 0.0001) f2 = h2.get_forces() assert abs(f1 - f2).max() < 1e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/hcp.py000066400000000000000000000040231316323560300226410ustar00rootroot00000000000000import numpy as np from ase.io import read, Trajectory from ase.build import bulk from ase.calculators.emt import EMT class NDPoly: def __init__(self, ndims=1, order=3): """Multivariate polynomium. ndims: int Number of dimensions. order: int Order of polynomium.""" if ndims == 0: exponents = [()] else: exponents = [] for i in range(order + 1): E = NDPoly(ndims - 1, order - i).exponents exponents += [(i,) + tuple(e) for e in E] self.exponents = np.array(exponents) self.c = None def __call__(self, *x): """Evaluate polynomial at x.""" return np.dot(self.c, (x**self.exponents).prod(1)) def fit(self, x, y): """Fit polynomium at points in x to values in y.""" A = (x**self.exponents[:, np.newaxis]).prod(2) self.c = np.linalg.solve(np.inner(A, A), np.dot(A, y)) def polyfit(x, y, order=3): """Fit polynomium at points in x to values in y. With D dimensions and N points, x must have shape (N, D) and y must have length N.""" p = NDPoly(len(x[0]), order) p.fit(x, y) return p a0 = 3.52 / np.sqrt(2) c0 = np.sqrt(8 / 3.0) * a0 print('%.4f %.3f' % (a0, c0 / a0)) for i in range(3): traj = Trajectory('Ni.traj', 'w') eps = 0.01 for a in a0 * np.linspace(1 - eps, 1 + eps, 4): for c in c0 * np.linspace(1 - eps, 1 + eps, 4): ni = bulk('Ni', 'hcp', a=a, covera=c / a) ni.set_calculator(EMT()) ni.get_potential_energy() traj.write(ni) traj.close() configs = read('Ni.traj@:') energies = [config.get_potential_energy() for config in configs] ac = [(config.cell[0, 0], config.cell[2, 2]) for config in configs] p = polyfit(ac, energies, 2) from scipy.optimize import fmin_bfgs a0, c0 = fmin_bfgs(p, (a0, c0)) print('%.4f %.3f' % (a0, c0 / a0)) assert abs(a0 - 2.466) < 0.001 assert abs(c0 / a0 - 1.632) < 0.005 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/hookean.py000066400000000000000000000037621316323560300235240ustar00rootroot00000000000000""" Test of Hookean constraint. Checks for activity in keeping a bond, preventing vaporization, and that energy is conserved in NVE dynamics. """ import numpy as np from ase import Atoms, Atom from ase.build import fcc110 from ase.calculators.emt import EMT from ase.constraints import FixAtoms, Hookean from ase.md import VelocityVerlet from ase import units class SaveEnergy: """Class to save energy.""" def __init__(self, atoms): self.atoms = atoms self.energies = [] def __call__(self): self.energies.append(atoms.get_total_energy()) # Make Pt 110 slab with Cu2 adsorbate. atoms = fcc110('Pt', (2, 2, 2), vacuum=7.) adsorbate = Atoms([Atom('Cu', atoms[7].position + (0., 0., 2.5)), Atom('Cu', atoms[7].position + (0., 0., 5.0))]) atoms.extend(adsorbate) calc = EMT() atoms.set_calculator(calc) # Constrain the surface to be fixed and a Hookean constraint between # the adsorbate atoms. constraints = [FixAtoms(indices=[atom.index for atom in atoms if atom.symbol == 'Pt']), Hookean(a1=8, a2=9, rt=2.6, k=15.), Hookean(a1=8, a2=(0., 0., 1., -15.), k=15.)] atoms.set_constraint(constraints) # Give it some kinetic energy. momenta = atoms.get_momenta() momenta[9, 2] += 20. momenta[9, 1] += 2. atoms.set_momenta(momenta) # Propagate in Velocity Verlet (NVE). dyn = VelocityVerlet(atoms, dt=1.0*units.fs) energies = SaveEnergy(atoms) dyn.attach(energies) dyn.run(steps=100) # Test the max bond length and position. bondlength = np.linalg.norm(atoms[8].position - atoms[9].position) assert bondlength < 3.0 assert atoms[9].z < 15.0 # Test that energy was conserved. assert max(energies.energies) - min(energies.energies) < 0.01 # Make sure that index shuffle works. neworder = list(range(len(atoms))) neworder[8] = 9 # Swap two atoms. neworder[9] = 8 atoms = atoms[neworder] assert atoms.constraints[1].indices[0] == 9 assert atoms.constraints[1].indices[1] == 8 assert atoms.constraints[2].index == 9 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/idpp.py000066400000000000000000000007271316323560300230320ustar00rootroot00000000000000from ase.build import molecule from ase.neb import NEB initial = molecule('C2H6') final = initial.copy() final.positions[2:5] = initial.positions[[3, 4, 2]] images = [initial] for i in range(5): images.append(initial.copy()) images.append(final) neb = NEB(images) d0 = images[3].get_distance(2, 3) neb.interpolate() d1 = images[3].get_distance(2, 3) neb.idpp_interpolate(fmax=0.005) d2 = images[3].get_distance(2, 3) print(d0, d1, d2) assert abs(d2 - 1.74) < 0.01 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/jacapo/000077500000000000000000000000001316323560300227535ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/jacapo/__init__.py000066400000000000000000000000001316323560300250520ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/jacapo/jacapo.py000066400000000000000000000011001316323560300245520ustar00rootroot00000000000000import os from ase import Atoms, Atom from ase.io import write from ase.calculators.jacapo import Jacapo atoms = Atoms([Atom('H',[0,0,0])], cell=(2,2,2), pbc=True) calc = Jacapo('Jacapo-test.nc', pw=200, nbands=2, kpts=(1,1,1), spinpol=False, dipole=False, symmetry=False, ft=0.01) atoms.set_calculator(calc) print(atoms.get_potential_energy()) write('Jacapo-test.traj', atoms) os.system('rm -f Jacapo-test.nc Jacapo-test.txt Jacapo-test.traj') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/kpts.py000066400000000000000000000001371316323560300230520ustar00rootroot00000000000000from ase.dft.kpoints import bandpath import numpy as np print(bandpath('GX,GX', np.eye(3), 6)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/lammpsdata/000077500000000000000000000000001316323560300236415ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/lammpsdata/__init__.py000066400000000000000000000000001316323560300257400ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/lammpsdata/lammpsdata.py000066400000000000000000000101551316323560300263400ustar00rootroot00000000000000#!/usr/bin/env python import ase.io from ase.utils import StringIO input = StringIO("""LAMMPS data file via write_data, version 7 Sep 2016, timestep = 1000000 8 atoms 1 atom types 6 bonds 1 bond types 4 angles 1 angle types -5.1188800000000001e+01 5.1188800000000001e+01 xlo xhi -5.1188800000000001e+01 5.1188800000000001e+01 ylo yhi -5.1188800000000001e+01 5.1188800000000001e+01 zlo zhi Masses 1 56 Atoms 1 1 1 0.0 -7.0654012878945753e+00 -4.7737244253442213e-01 -5.1102452666801824e+01 2 -1 6 2 1 1 0.0 -8.1237844371679362e+00 -1.3340695922796841e+00 4.7658302278206179e+01 2 -1 5 3 1 1 0.0 -1.2090525219882498e+01 -3.2315354021627760e+00 4.7363437099502839e+01 2 -1 5 4 1 1 0.0 -8.3272244953257601e+00 -4.8413162043515321e+00 4.5609055410298623e+01 2 -1 5 5 2 1 0.0 -5.3879618209198750e+00 4.9524635221072280e+01 3.0054862714858366e+01 6 -7 -2 6 2 1 0.0 -8.4950075933508273e+00 -4.9363297129348325e+01 3.2588925816534982e+01 6 -6 -2 7 2 1 0.0 -9.7544282093133940e+00 4.9869755980935565e+01 3.6362287886934432e+01 6 -7 -2 8 2 1 0.0 -5.5712437770663756e+00 4.7660225526197003e+01 3.8847235874270240e+01 6 -7 -2 Velocities 1 -1.2812627962466232e-02 -1.8102422526771818e-03 8.8697845357364469e-03 2 7.7087896348612683e-03 -5.6149199730983867e-04 1.3646724560472424e-02 3 -3.5128553734623657e-03 1.2368758037550581e-03 9.7460093657088121e-03 4 1.1626059392751346e-02 -1.1942908859710665e-05 8.7505240354339674e-03 5 1.0953500823880464e-02 -1.6710422557096375e-02 2.2322216388444985e-03 6 3.7515599452757294e-03 1.4091708517087744e-02 7.2963916249300454e-03 7 5.3953961772651359e-03 -8.2013715102925017e-03 2.0159609509813853e-02 8 7.5074008407567160e-03 5.9398495239242483e-03 7.3144909044607909e-03 Bonds 1 1 1 2 2 1 2 3 3 1 3 4 4 1 5 6 5 1 6 7 6 1 7 8 Angles 1 1 1 2 3 2 1 2 3 4 3 1 5 6 7 4 1 6 7 8 """) at = ase.io.read(input, format="lammps-data") expected_output = ['8', 'Lattice="102.3776 0.0 0.0 0.0 102.3776 0.0 0.0 0.0 102.3776" Properties=species:S:1:pos:R:3:bonds:S:1:masses:R:1:mol-id:I:1:Z:I:1:angles:S:1:momenta:R:3:type:I:1:id:I:1:travel:I:3 pbc="T T T"', 'H -7.06540129 -0.47737244 -51.10245267 1(1) 56.00000000 1 1 _ -0.71750717 -0.10137357 0.49670793 1 1 2 -1 6', 'H -8.12378444 -1.33406959 47.65830228 2(1) 56.00000000 1 1 0-2(1) 0.43169222 -0.03144355 0.76421658 1 2 2 -1 5', 'H -12.09052522 -3.23153540 47.36343710 3(1) 56.00000000 1 1 1-3(1) -0.19671990 0.06926505 0.54577652 1 3 2 -1 5', 'H -8.32722450 -4.84131620 45.60905541 _ 56.00000000 1 1 _ 0.65105933 -0.00066880 0.49002935 1 4 2 -1 5', 'H -5.38796182 49.52463522 30.05486271 5(1) 56.00000000 2 1 _ 0.61339605 -0.93578366 0.12500441 1 5 6 -7 -2', 'H -8.49500759 -49.36329713 32.58892582 6(1) 56.00000000 2 1 4-6(1) 0.21008736 0.78913568 0.40859793 1 6 6 -6 -2', 'H -9.75442821 49.86975598 36.36228789 7(1) 56.00000000 2 1 5-7(1) 0.30214219 -0.45927680 1.12893813 1 7 6 -7 -2', 'H -5.57124378 47.66022553 38.84723587 _ 56.00000000 2 1 _ 0.42041445 0.33263157 0.40961149 1 8 6 -7 -2', ''] buf = StringIO() ase.io.write(buf, at, format="extxyz", columns=["symbols", "positions", "bonds", "masses", "mol-id", "numbers", "angles", "momenta", "type", "id", "travel"], write_info=False) lines = [line.strip() for line in buf.getvalue().split("\n")] assert lines == expected_output ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/langevin.py000066400000000000000000000025671316323560300237050ustar00rootroot00000000000000from ase import Atoms from ase.units import fs, kB from ase.calculators.test import TestPotential from ase.md import Langevin from ase.io import Trajectory, read from ase.optimize import QuasiNewton from ase.utils import seterr with seterr(all='raise'): a = Atoms('4X', masses=[1, 2, 3, 4], positions=[(0, 0, 0), (1, 0, 0), (0, 1, 0), (0.1, 0.2, 0.7)], calculator=TestPotential()) print(a.get_forces()) # Langevin should reproduce Verlet if friction is 0. md = Langevin(a, 0.5 * fs, 300 * kB, 0.0, logfile='-', loginterval=500) traj = Trajectory('4N.traj', 'w', a) md.attach(traj, 100) e0 = a.get_total_energy() md.run(steps=10000) del traj assert abs(read('4N.traj').get_total_energy() - e0) < 0.0001 # Try again with nonzero friction. md = Langevin(a, 0.5 * fs, 300 * kB, 0.001, logfile='-', loginterval=500) traj = Trajectory('4NA.traj', 'w', a) md.attach(traj, 100) md.run(steps=10000) # We cannot test the temperature without a lot of statistics. # Asap does that. But if temperature is quite unreasonable, # something is very wrong. T = a.get_temperature() assert T > 50 assert T < 1000 qn = QuasiNewton(a) qn.run(0.001) assert abs(a.get_potential_energy() - 1.0) < 0.000002 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/lattice_lindep.py000066400000000000000000000045431316323560300250560ustar00rootroot00000000000000from __future__ import print_function, division from ase.lattice.cubic import FaceCenteredCubic from ase.lattice.hexagonal import HexagonalClosedPacked from ase.test import must_raise with must_raise(ValueError): # The Miller indices of the surfaces are linearly dependent atoms = FaceCenteredCubic(symbol='Cu', miller=[[1, 1, 0], [1, 1, 0], [0, 0, 1]]) # This one should be OK: atoms = FaceCenteredCubic(symbol='Cu', miller=[[1, 1, 0], [0, 1, 0], [0, 0, 1]]) print(atoms.get_cell()) with must_raise(ValueError): # The directions spanning the unit cell are linearly dependent atoms = FaceCenteredCubic(symbol='Cu', directions=[[1, 1, 0], [1, 1, 0], [0, 0, 1]]) with must_raise(ValueError): # The directions spanning the unit cell are linearly dependent atoms = FaceCenteredCubic(symbol='Cu', directions=[[1, 1, 0], [1, 0, 0], [0, 1, 0]]) # This one should be OK: atoms = FaceCenteredCubic(symbol='Cu', directions=[[1, 1, 0], [0, 1, 0], [0, 0, 1]]) print(atoms.get_cell()) with must_raise((ValueError, NotImplementedError)): # The Miller indices of the surfaces are linearly dependent atoms = HexagonalClosedPacked(symbol='Mg', miller=[[1, -1, 0, 0], [1, 0, -1, 0], [0, 1, -1, 0]]) # This one should be OK # # It is not! The miller argument is broken in hexagonal crystals! # # atoms = HexagonalClosedPacked(symbol='Mg', # miller=[[1, -1, 0, 0], # [1, 0, -1, 0], # [0, 0, 0, 1]]) # print(atoms.get_cell()) with must_raise(ValueError): # The directions spanning the unit cell are linearly dependent atoms = HexagonalClosedPacked(symbol='Mg', directions=[[1, -1, 0, 0], [1, 0, -1, 0], [0, 1, -1, 0]]) # This one should be OK atoms = HexagonalClosedPacked(symbol='Mg', directions=[[1, -1, 0, 0], [1, 0, -1, 0], [0, 0, 0, 1]]) print(atoms.get_cell()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/matplotlib_plot.py000066400000000000000000000004551316323560300253010ustar00rootroot00000000000000import matplotlib.pyplot as plt from ase.visualize.plot import plot_atoms from ase.lattice.cubic import FaceCenteredCubic slab = FaceCenteredCubic('Au', size=(2, 2, 2)) fig, ax = plt.subplots() plot_atoms(slab, ax, radii=0.5, rotation=('10x,10y,10z')) assert len(ax.patches) == len(slab) print(ax) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/maxwellboltzmann.py000066400000000000000000000006151316323560300254700ustar00rootroot00000000000000from ase.md.velocitydistribution import MaxwellBoltzmannDistribution from ase.lattice.cubic import FaceCenteredCubic atoms = FaceCenteredCubic(size=(50,50,50), symbol="Cu", pbc=False) print("Number of atoms:", len(atoms)) MaxwellBoltzmannDistribution(atoms, 0.1) temp = atoms.get_kinetic_energy() / (1.5 * len(atoms)) print("Temperature", temp, " (should be 0.1)") assert abs(temp - 0.1) < 1e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/md.py000066400000000000000000000011051316323560300224650ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.md import VelocityVerlet from ase.io import Trajectory a = 3.6 b = a / 2 fcc = Atoms('Cu', positions=[(0, 0, 0)], cell=[(0, b, b), (b, 0, b), (b, b, 0)], pbc=1) fcc *= (2, 1, 1) fcc.set_calculator(EMT()) fcc.set_momenta([(0.9, 0.0, 0.0), (-0.9, 0, 0)]) md = VelocityVerlet(fcc, dt=0.1) def f(): print(fcc.get_potential_energy(), fcc.get_total_energy()) md.attach(f) md.attach(Trajectory('Cu2.traj', 'w', fcc).write, interval=3) md.run(steps=20) fcc2 = Trajectory('Cu2.traj', 'r')[-1] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/mic.py000066400000000000000000000114511316323560300226420ustar00rootroot00000000000000import ase import numpy as np tol = 1e-9 cell = np.array([[1., 0., 0.], [0.5, np.sqrt(3) / 2, 0.], [0., 0., 1.]]) * 10 pos = np.dot(np.array([[0.0, 0.0, 0.0], [0.5, 0.5, 0.5], [0.2, 0.2, 0.2], [0.25, 0.5, 0.0]]), cell) a = ase.Atoms('C4', pos, cell=cell, pbc=True) rpos = a.get_scaled_positions() # non-mic distance between atom 0 and 1 d01F = np.linalg.norm(np.dot(rpos[1], cell)) # mic distance between atom 0 (image [0,1,0]) and 1 d01T = np.linalg.norm(np.dot(rpos[1] - np.array([0, 1, 0]), cell)) d02F = np.linalg.norm(np.dot(rpos[2], cell)) d02T = d02F # non-mic distance between atom 0 and 3 d03F = np.linalg.norm(np.dot(rpos[3], cell)) # mic distance between atom 0 (image [0,1,0]) and 3 d03T = np.linalg.norm(np.dot(rpos[3] - np.array([0, 1, 0]), cell)) # get_distance(mic=False) assert abs(a.get_distance(0, 1, mic=False) - d01F) < tol assert abs(a.get_distance(0, 2, mic=False) - d02F) < tol assert abs(a.get_distance(0, 3, mic=False) - d03F) < tol # get_distance(mic=True) assert abs(a.get_distance(0, 1, mic=True) - d01T) < tol assert abs(a.get_distance(0, 2, mic=True) - d02T) < tol assert abs(a.get_distance(0, 3, mic=True) - d03T) < tol # get_distance(mic=False, vector=True) assert all(abs(a.get_distance(0, 1, mic=False, vector=True) - np.array([7.5, np.sqrt(18.75), 5.0])) < tol) assert all(abs(a.get_distance(0, 2, mic=False, vector=True) - np.array([3., np.sqrt(3.), 2.0])) < tol) # get_distance(mic=True, vector=True) assert np.all(abs(a.get_distance(0, 1, mic=True, vector=True) - np.array([-2.5, np.sqrt(18.75), -5.0])) < tol) assert np.all(abs(a.get_distance(0, 2, mic=True, vector=True) - np.array([3., np.sqrt(3.), 2.0])) < tol) # get_all_distances(mic=False) all_dist = a.get_all_distances(mic=False) assert abs(all_dist[0, 1] - d01F) < tol assert abs(all_dist[0, 2] - d02F) < tol assert abs(all_dist[0, 3] - d03F) < tol assert all(abs(np.diagonal(all_dist)) < tol) # get_all_distances(mic=True) all_dist_mic = a.get_all_distances(mic=True) assert abs(all_dist_mic[0, 1] - d01T) < tol assert abs(all_dist_mic[0, 2] - d02T) < tol assert abs(all_dist_mic[0, 3] - d03T) < tol assert all(abs(np.diagonal(all_dist)) < tol) # get_distances(mic=False) for i in range(4): assert all(abs(a.get_distances(i, [0, 1, 2, 3], mic=False) - all_dist[i]) < tol) # get_distances(mic=True) assert all(abs(a.get_distances(0, [0, 1, 2, 3], mic=True) - all_dist_mic[0]) < tol) assert all(abs(a.get_distances(1, [0, 1, 2, 3], mic=True) - all_dist_mic[1]) < tol) assert all(abs(a.get_distances(2, [0, 1, 2, 3], mic=True) - all_dist_mic[2]) < tol) assert all(abs(a.get_distances(3, [0, 1, 2, 3], mic=True) - all_dist_mic[3]) < tol) # get_distances(mic=False, vec=True) assert np.all(abs(a.get_distances(0, [0, 1, 2, 3], mic=False, vector=True) - np.array([a.get_distance(0, i, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(1, [0, 1, 2, 3], mic=False, vector=True) - np.array([a.get_distance(1, i, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(2, [0, 1, 2, 3], mic=False, vector=True) - np.array([a.get_distance(2, i, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(3, [0, 1, 2, 3], mic=False, vector=True) - np.array([a.get_distance(3, i, vector=True) for i in [0, 1, 2, 3]])) < tol) # get_distances(mic=True, vec=True) assert np.all(abs(a.get_distances(0, [0, 1, 2, 3], mic=True, vector=True) - np.array([a.get_distance(0, i, mic=True, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(1, [0, 1, 2, 3], mic=True, vector=True) - np.array([a.get_distance(1, i, mic=True, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(2, [0, 1, 2, 3], mic=True, vector=True) - np.array([a.get_distance(2, i, mic=True, vector=True) for i in [0, 1, 2, 3]])) < tol) assert np.all(abs(a.get_distances(3, [0, 1, 2, 3], mic=True, vector=True) - np.array([a.get_distance(3, i, mic=True, vector=True) for i in [0, 1, 2, 3]])) < tol) # set_distance a.set_distance(0, 1, 11., mic=False) assert abs(a.get_distance(0, 1, mic=False) - 11.) < tol assert abs(a.get_distance(0, 1, mic=True) - np.sqrt(46)) < tol # set_distance(mic=True) a.set_distance(0, 1, 3., mic=True) assert abs(a.get_distance(0, 1, mic=True) - 3.) < tol ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/minimahop.py000066400000000000000000000022501316323560300240500ustar00rootroot00000000000000from ase import Atoms, Atom from ase.build import fcc111 from ase.optimize.minimahopping import MinimaHopping from ase.calculators.emt import EMT from ase.constraints import FixAtoms, Hookean # Make Pt 111 slab with Cu2 adsorbate. atoms = fcc111('Pt', (2, 2, 1), vacuum=7., orthogonal=True) adsorbate = Atoms([Atom('Cu', atoms[2].position + (0., 0., 2.5)), Atom('Cu', atoms[2].position + (0., 0., 5.0))]) atoms.extend(adsorbate) # Constrain the surface to be fixed and a Hookean constraint between # the adsorbate atoms. constraints = [FixAtoms(indices=[atom.index for atom in atoms if atom.symbol == 'Pt']), Hookean(a1=4, a2=5, rt=2.6, k=15.), Hookean(a1=4, a2=(0., 0., 1., -15.), k=15.)] atoms.set_constraint(constraints) # Set the calculator. calc = EMT() atoms.set_calculator(calc) # Instantiate and run the minima hopping algorithm. hop = MinimaHopping(atoms, Ediff0=2.5, T0=2000., beta1=1.2, beta2=1.2, mdmin=1) hop(totalsteps=3) # Test ability to restart and temperature stopping. hop(maxtemp=3000) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/mopac.py000066400000000000000000000017301316323560300231700ustar00rootroot00000000000000"""Test H2 molecule atomization with MOPAC.""" from ase.build import molecule from ase.calculators.mopac import MOPAC from ase.optimize import BFGS h2 = molecule('H2', calculator=MOPAC(label='h2')) BFGS(h2, trajectory='h2.traj').run(fmax=0.01) e2 = h2.get_potential_energy() h1 = h2.copy() del h1[1] h1.set_initial_magnetic_moments([1]) h1.calc = MOPAC(label='h1') e1 = h1.get_potential_energy() d = h2.get_distance(0, 1) ea = 2 * e1 - e2 print(d, ea) assert abs(d - 0.759) < 0.001 assert abs(ea - 5.907) < 0.001 h2o = molecule('H2O', calculator=MOPAC(label='h2o', tasks='GRADIENTS')) h2o.get_potential_energy() print('dipole:', h2o.get_dipole_moment()) atoms = MOPAC.read_atoms('h2') print('magmom:', atoms.calc.get_magnetic_moment()) print('PM7 homo lumo:', atoms.calc.get_homo_lumo_levels()) atoms.calc.set(method='AM1') atoms.get_potential_energy() print('AM1 homo lumo:', atoms.calc.get_homo_lumo_levels()) calc = MOPAC(restart='h1') print('magmom:', calc.get_magnetic_moment()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/n2.py000066400000000000000000000004041316323560300224050ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton n2 = Atoms('N2', positions=[(0, 0, 0), (0, 0, 1.1)], calculator=EMT()) QuasiNewton(n2).run(0.01) print(n2.get_distance(0, 1), n2.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/neb.py000066400000000000000000000032641316323560300226410ustar00rootroot00000000000000from ase import Atoms from ase.constraints import FixAtoms from ase.io import Trajectory, read from ase.neb import NEB, NEBTools from ase.calculators.morse import MorsePotential from ase.optimize import BFGS, QuasiNewton atoms = Atoms('H7', positions=[(0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 2, 0), (1, 2, 0), (0.5, 0.5, 1)], constraint=[FixAtoms(range(6))], calculator=MorsePotential()) traj = Trajectory('H.traj', 'w', atoms) dyn = QuasiNewton(atoms, maxstep=0.2) dyn.attach(traj.write) dyn.run(fmax=0.01, steps=100) print(atoms) del atoms[-1] print(atoms) del atoms[5] print(atoms) assert len(atoms.constraints[0].index) == 5 fmax = 0.05 nimages = 3 print([a.get_potential_energy() for a in Trajectory('H.traj')]) images = [Trajectory('H.traj')[-1]] for i in range(nimages): images.append(images[0].copy()) images[-1].positions[6, 1] = 2 - images[0].positions[6, 1] neb = NEB(images) neb.interpolate() if 0: # verify that initial images make sense from ase.visualize import view view(neb.images) for image in images: image.set_calculator(MorsePotential()) dyn = BFGS(neb, trajectory='mep.traj') # , logfile='mep.log') dyn.run(fmax=fmax) for a in neb.images: print(a.positions[-1], a.get_potential_energy()) neb.climb = True dyn.run(fmax=fmax) # Check NEB tools. nt_images = read('mep.traj@-4:') nebtools = NEBTools(nt_images) nt_fmax = nebtools.get_fmax(climb=True) Ef, dE = nebtools.get_barrier() print(Ef, dE, fmax, nt_fmax) assert nt_fmax < fmax assert abs(Ef - 1.389) < 0.001 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/neb_tr.py000066400000000000000000000043131316323560300233420ustar00rootroot00000000000000from ase.calculators.lj import LennardJones from ase.optimize import FIRE, BFGS from ase.neb import NEB, NEBTools from ase import Atoms nimages = 3 fmax = 0.01 for remove_rotation_and_translation in [True, False]: # Define coordinates for initial and final states initial = Atoms('O4', [(1.94366484, 2.24788196, 2.32204726), (3.05353823, 2.08091038, 2.30712548), (2.63770601, 3.05694348, 2.67368242), (2.50579418, 2.12540646, 3.28585811)]) final = Atoms('O4', [(1.95501370, 2.22270649, 2.33191017), (3.07439495, 2.13662682, 2.31948449), (2.44730550, 1.26930465, 2.65964947), (2.52788189, 2.18990240, 3.29728667)]) final.set_cell((5, 5, 5)) initial.set_cell((5, 5, 5)) final.set_calculator(LennardJones()) initial.set_calculator(LennardJones()) images = [initial] # Set calculator for i in range(nimages): image = initial.copy() image.set_calculator(LennardJones()) images.append(image) images.append(final) # Define the NEB and make a linear interpolation # with removing translational # and rotational degrees of freedom neb = NEB(images, remove_rotation_and_translation=remove_rotation_and_translation) neb.interpolate() # Test used these old defaults which are not optimial, but work # in this particular system neb.idpp_interpolate(fmax=0.1, optimizer=BFGS) qn = FIRE(neb, dt=0.005, maxmove=0.05, dtmax=0.1) qn.run(steps=20) # Switch to CI-NEB, still removing the external degrees of freedom # Also spesify the linearly varying spring constants neb = NEB(images, climb=True, remove_rotation_and_translation=remove_rotation_and_translation) qn = FIRE(neb, dt=0.005, maxmove=0.05, dtmax=0.1) qn.run(fmax=fmax) images = neb.images nebtools = NEBTools(images) Ef_neb, dE_neb = nebtools.get_barrier(fit=False) nsteps_neb = qn.nsteps if remove_rotation_and_translation: Ef_neb_0 = Ef_neb nsteps_neb_0 = nsteps_neb assert abs(Ef_neb - Ef_neb_0) < 1e-2 assert nsteps_neb_0 < nsteps_neb * 0.7 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/neighbor.py000066400000000000000000000051131316323560300236650ustar00rootroot00000000000000import numpy.random as random import numpy as np from ase import Atoms from ase.neighborlist import NeighborList from ase.build import bulk atoms = Atoms(numbers=range(10), cell=[(0.2, 1.2, 1.4), (1.4, 0.1, 1.6), (1.3, 2.0, -0.1)]) atoms.set_scaled_positions(3 * random.random((10, 3)) - 1) def count(nl, atoms): c = np.zeros(len(atoms), int) R = atoms.get_positions() cell = atoms.get_cell() d = 0.0 for a in range(len(atoms)): i, offsets = nl.get_neighbors(a) for j in i: c[j] += 1 c[a] += len(i) d += (((R[i] + np.dot(offsets, cell) - R[a])**2).sum(1)**0.5).sum() return d, c for sorted in [False, True]: for p1 in range(2): for p2 in range(2): for p3 in range(2): # print(p1, p2, p3) atoms.set_pbc((p1, p2, p3)) nl = NeighborList(atoms.numbers * 0.2 + 0.5, skin=0.0, sorted=sorted) nl.update(atoms) d, c = count(nl, atoms) atoms2 = atoms.repeat((p1 + 1, p2 + 1, p3 + 1)) nl2 = NeighborList(atoms2.numbers * 0.2 + 0.5, skin=0.0, sorted=sorted) nl2.update(atoms2) d2, c2 = count(nl2, atoms2) c2.shape = (-1, 10) dd = d * (p1 + 1) * (p2 + 1) * (p3 + 1) - d2 # print(dd) # print(c2 - c) assert abs(dd) < 1e-10 assert not (c2 - c).any() h2 = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1)]) nl = NeighborList([0.5, 0.5], skin=0.1, sorted=True, self_interaction=False) assert nl.update(h2) assert not nl.update(h2) assert (nl.get_neighbors(0)[0] == [1]).all() h2[1].z += 0.09 assert not nl.update(h2) assert (nl.get_neighbors(0)[0] == [1]).all() h2[1].z += 0.09 assert nl.update(h2) assert (nl.get_neighbors(0)[0] == []).all() assert nl.nupdates == 2 h2 = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1)]) nl = NeighborList([0.1, 0.1], skin=0.1, bothways=True, self_interaction=False) assert nl.update(h2) assert nl.get_neighbors(0)[1].shape == (0, 3) assert nl.get_neighbors(0)[1].dtype == int x = bulk('X', 'fcc', a=2**0.5) print(x) nl = NeighborList([0.5], skin=0.01, bothways=True, self_interaction=False) nl.update(x) assert len(nl.get_neighbors(0)[0]) == 12 nl = NeighborList([0.5] * 27, skin=0.01, bothways=True, self_interaction=False) nl.update(x * (3, 3, 3)) for a in range(27): assert len(nl.get_neighbors(a)[0]) == 12 assert not np.any(nl.get_neighbors(13)[1]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/niggli.py000066400000000000000000000222421316323560300233430ustar00rootroot00000000000000# Convert a selection of unit cells, both reasonable and unreasonable, # into their Niggli unit cell, and compare against the pre-computed values. # The tests and pre-computed values come from the program cctbx, in which # this algorithm was originally implemented. import numpy as np from ase import Atoms from ase.build import niggli_reduce cells_in = np.array([ [[+1.38924439894498e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+3.59907875374346e-01, +1.38877811878372e+01, +0.00000000000000e+00], [+6.94622199472490e+00, +6.76853982134488e+00, +1.11326936851271e+01]], [[+1.00000000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-5.00000000000000e+00, +8.66025403784439e+00, +0.00000000000000e+00], [+1.41421356237310e+01, +8.16496580927726e+00, +1.15470053837925e+01]], [[+1.00000000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-1.00000000000000e+01, +1.73205080756888e+01, +0.00000000000000e+00], [+1.50000000000000e+01, -8.66025403784438e+00, +2.44948974278318e+01]], [[+1.08166538263920e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+5.40832691319598e+00, +1.27180973419769e+01, +0.00000000000000e+00], [+5.40832691319598e+00, +5.20911251255623e+00, +1.16023767751065e+01]], [[+1.01488915650922e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.51609252491968e+00, +1.25938440639213e+01, +0.00000000000000e+00], [-4.12196081365396e+00, -5.71298877345999e+00, +1.13741460481665e+01]], [[+1.97989898732233e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-1.62230498655085e+02, +1.64752132933454e+02, +0.00000000000000e+00], [-5.05076272276107e-01, -1.43302471019530e+01, +6.23631266175214e-01]], [[+1.03923048454133e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-3.84900179459751e+00, +1.26168611463068e+01, +0.00000000000000e+00], [-3.27165152540788e+00, -6.30843057315338e+00, +1.11130553854464e+01]], [[+1.60468065358812e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-5.92018105207268e-01, +1.33285225949130e+01, +0.00000000000000e+00], [-8.05612005796522e+01, -1.80304581562370e+02, +8.00942125147844e+00]], [[+1.04880884817015e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.79909503253615e+00, +1.29602734102598e+01, +0.00000000000000e+00], [-3.34506458393662e+00, -6.26040929795398e+00, +1.18582384168722e+01]], [[+1.00498756211209e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-3.83918515889354e+00, +1.26198517152830e+01, +0.00000000000000e+00], [-1.69985519994207e+00, -7.00161889241639e+00, +1.10493359612507e+01]], [[+1.00498756211209e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.47766735594495e+00, +1.26866266221366e+01, +0.00000000000000e+00], [-3.68163760377696e+00, -5.94997793843316e+00, +1.14910098375475e+01]], [[+1.13578166916005e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-3.36772471669551e+00, +1.32158401258701e+01, +0.00000000000000e+00], [-3.36772471669551e+00, -6.98718877407442e+00, +1.12177369940646e+01]], [[+1.18321595661992e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.71877792223422e+00, +1.29511827614560e+01, +0.00000000000000e+00], [-3.55669082198251e+00, -6.47559138072800e+00, +1.16368667031408e+01]], [[+6.90590144772860e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-8.02073428510396e+00, +4.80089958494375e+01, +0.00000000000000e+00], [+1.34099960000000e-08, +4.16233443900000e-07, +4.81947969343710e-03]], [[+8.08161863921814e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.03305037431393e+01, +7.02701915501634e+01, +0.00000000000000e+00], [+1.95267511987431e-01, +1.40678305273598e+02, +3.93001827573170e-03]], [[+1.27366000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.95315299468855e+00, +2.88072764316797e+01, +0.00000000000000e+00], [-9.46867174719139e-01, -5.76708582259125e-01, +4.90035053895005e+00]], [[+1.27806000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+1.17491405990366e+01, +4.91718158542779e+00, +0.00000000000000e+00], [-6.91158909142352e+00, -1.19373435268607e+00, +2.86097847514890e+01]], [[+1.00000000000000e+00, +0.00000000000000e+00, +0.00000000000000e+00], [+5.00000000000000e-01, +8.66025403484439e-01, +0.00000000000000e+00], [+0.00000000000000e+00, +0.00000000000000e+00, +1.00000000000000e+00]], [[+1.00000000000000e+00, +0.00000000000000e+00, +0.00000000000000e+00], [-5.00000000000000e-01, +8.66025403484439e-01, +0.00000000000000e+00], [+0.00000000000000e+00, +0.00000000000000e+00, +1.00000000000000e+00]]]) cells_out = np.array([ [[+1.38924439894498e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+3.59907875374344e-01, +1.38877811878372e+01, +0.00000000000000e+00], [+6.94622199472490e+00, +6.76853982134488e+00, +1.11326936851271e+01]], [[+1.00000000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+5.00000000000000e+00, +8.66025403784439e+00, +0.00000000000000e+00], [+8.57864376268997e-01, +4.95288228567129e-01, +1.15470053837925e+01]], [[+1.00000000000000e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+1.06057523872491e-15, +1.73205080756888e+01, +0.00000000000000e+00], [-5.00000000000000e+00, -8.66025403784442e+00, +2.44948974278318e+01]], [[+1.08166538263920e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+5.40832691319598e+00, +1.27180973419769e+01, +0.00000000000000e+00], [+5.40832691319598e+00, +5.20911251255623e+00, +1.16023767751065e+01]], [[+1.01488915650922e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.51609252491968e+00, +1.25938440639213e+01, +0.00000000000000e+00], [-4.12196081365396e+00, -5.71298877345999e+00, +1.13741460481665e+01]], [[+1.36381816969869e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+6.81909084849243e+00, +1.26293309403154e+01, +0.00000000000000e+00], [+6.81909084849065e+00, +4.47371284092803e+00, +1.18104146166409e+01]], [[+1.03923048454133e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-3.84900179459751e+00, +1.26168611463068e+01, +0.00000000000000e+00], [-3.27165152540788e+00, -6.30843057315338e+00, +1.11130553854464e+01]], [[+1.26095202129182e+01, +0.00000000000000e+00, +0.00000000000000e+00], [+6.30476010645935e+00, +1.17579760163048e+01, +0.00000000000000e+00], [+3.15238005323008e+00, +5.87898800815218e+00, +1.15542200082912e+01]], [[+1.04880884817015e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.79909503253615e+00, +1.29602734102598e+01, +0.00000000000000e+00], [-3.34506458393662e+00, -6.26040929795398e+00, +1.18582384168722e+01]], [[+1.00498756211209e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.51083526228529e+00, +1.23956591287645e+01, +0.00000000000000e+00], [-3.83918515889354e+00, -5.71984630990568e+00, +1.12491784369700e+01]], [[+1.00498756211209e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.47766735594495e+00, +1.26866266221366e+01, +0.00000000000000e+00], [-3.68163760377696e+00, -5.94997793843316e+00, +1.14910098375475e+01]], [[+1.13578166916005e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.62236725820948e+00, +1.28309672640153e+01, +0.00000000000000e+00], [-3.36772471669551e+00, -6.41548363200768e+00, +1.15542200082913e+01]], [[+1.18321595661992e+01, +0.00000000000000e+00, +0.00000000000000e+00], [-4.71877792223422e+00, +1.29511827614560e+01, +0.00000000000000e+00], [-3.55669082198251e+00, -6.47559138072800e+00, +1.16368667031408e+01]], [[+4.81947971142972e-03, +0.00000000000000e+00, +0.00000000000000e+00], [+4.12397039845618e-03, +4.86743859122682e+01, +0.00000000000000e+00], [+4.62732595971025e-03, +1.13797841621313e+01, +6.81149615940608e+01]], [[+1.43683914413843e-01, +0.00000000000000e+00, +0.00000000000000e+00], [+4.73841211849216e-02, +8.02075186538656e+00, +0.00000000000000e+00], [+9.29303317118020e-03, +8.28854375915883e-01, +1.93660401476964e+01]], [[+5.02420000000000e+00, +0.00000000000000e+00, +0.00000000000000e+00], [-2.40035596861745e+00, +1.25083680303996e+01, +0.00000000000000e+00], [-2.37319883118274e+00, -5.49894680458153e+00, +2.86098306766757e+01]], [[+5.02419976114664e+00, +0.00000000000000e+00, +0.00000000000000e+00], [-2.40036499209593e+00, +1.25083662987906e+01, +0.00000000000000e+00], [-2.37320481266200e+00, -5.49892622854049e+00, +2.86097847514890e+01]], [[+1.00000000000000e+00, +0.00000000000000e+00, +0.00000000000000e+00], [-5.00000000000000e-01, +8.66025403484439e-01, +0.00000000000000e+00], [+0.00000000000000e+00, +0.00000000000000e+00, +1.00000000000000e+00]], [[+1.00000000000000e+00, +0.00000000000000e+00, +0.00000000000000e+00], [-5.00000000000000e-01, +8.66025403484439e-01, +0.00000000000000e+00], [+0.00000000000000e+00, +0.00000000000000e+00, +1.00000000000000e+00]]]) conf = Atoms(pbc=True) for i, cell in enumerate(cells_in): conf.set_cell(cell) niggli_reduce(conf) cell = conf.get_cell() diff = np.linalg.norm(cell - cells_out[i]) assert diff < 1e-5, \ 'Difference between unit cells is too large! ({0})'.format(diff) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/noncollinear.py000066400000000000000000000011221316323560300245470ustar00rootroot00000000000000from ase import Atoms a = Atoms('H2') a[0].magmom = 1 m = a.get_initial_magnetic_moments() assert m.shape == (2,) and (m == [1, 0]).all() a[1].magmom = -1 m = a.get_initial_magnetic_moments() assert m.shape == (2,) and (m == [1, -1]).all() assert a[1].magmom == -1 a.set_initial_magnetic_moments() a[0].magmom = (0, 1, 0) m = a.get_initial_magnetic_moments() assert m.shape == (2, 3) and (m == [(0, 1, 0), (0, 0, 0)]).all() a[1].magmom = (1, 0, 0) m = a.get_initial_magnetic_moments() assert m.shape == (2, 3) and (m == [(0, 1, 0), (1, 0, 0)]).all() assert (a[1].magmom == (1, 0, 0)).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/000077500000000000000000000000001316323560300227775ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/__init__.py000066400000000000000000000000001316323560300250760ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/nwchem_broken_symmetry.py000066400000000000000000000041071316323560300301450ustar00rootroot00000000000000"""Check if we can deal with spin-broken symmetries.""" from numpy import array from ase import Atoms from ase.calculators.nwchem import NWChem def main(): """Perform C_{\inf v} calculation on Cr_2.""" # PBE from # J. Chem. Phys. 112 , 5576 (2000) # http://dx.doi.org/10.1063/1.481183 e_literature = -1.34 names = ['Cr2_sp_up.mos', 'Cr2_sp_down.mos'] fragment_energies = array([.0] * 2) cr_atom = Atoms('Cr', positions=[(0, 0, 0)], pbc=False) for orientation in range(2): # create two fragments imm = 6 * (-1)**orientation cr_atom.set_initial_magnetic_moments([imm]) calculator = NWChem(task='energy', xc='PBE', geometry='nocenter noautosym noautoz', convergence={'energy': 1e-3, 'density': 1e-2, 'gradient': 5e-2}, basis='"DZVP2 (DFT Orbital)"', vectors='input atomic output {0}' .format(names[orientation]), charge=0) cr_atom.set_calculator(calculator) fragment_energies[orientation] = cr_atom.get_potential_energy() cr_dimer = Atoms('Cr2', positions=[(0, 0, 0), (0, 0, 1.93)], pbc=False) cr_dimer.set_initial_magnetic_moments([0, 0]) calculator = NWChem(task='energy', xc='PBE', geometry='nocenter noautosym noautoz', convergence={'energy': 1e-3, 'density': 1e-2, 'gradient': 5e-2}, odft=True, basis='"DZVP2 (DFT Orbital)"', vectors='input fragment {0} output Cr2_AF.mos' .format(' '.join(names)), charge=0) cr_dimer.set_calculator(calculator) e_dimer = cr_dimer.get_potential_energy() e_tot = e_dimer - fragment_energies.sum() assert abs(e_tot - e_literature) < 0.01 main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/nwchem_cmdline.py000066400000000000000000000013071316323560300263260ustar00rootroot00000000000000from ase.test import cli, require from ase.db import connect from ase.io.jsonio import read_json from ase.calculators.nwchem import NWChem require('nwchem') cli("""ase build O | ase run nwchem -d nwchem_cmdline.json && ase build O2 | ase run nwchem -d nwchem_cmdline.json""") c = connect('nwchem_cmdline.json') dct = read_json('nwchem_cmdline.json') for name in ['O2', 'O']: d = c.get([('name', '=', name)]) id = d.id e1 = d.energy e2 = c.get_atoms(id).get_potential_energy() e3 = NWChem.read_atoms(name).get_potential_energy() e4 = dct[id]['energy'] assert e1 == e2 == e3 == e4 print(e1) ae = 2 * c.get('name=O').energy - c.get('name=O2').energy assert abs(ae - 6.6053) < 1e-4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/nwchem_h3o2m.py000066400000000000000000000037371316323560300256540ustar00rootroot00000000000000from math import radians, sin, cos from ase import Atoms from ase.neb import NEB from ase.constraints import FixAtoms from ase.calculators.nwchem import NWChem from ase.optimize import QuasiNewton, BFGS from ase.visualize import view # http://jcp.aip.org/resource/1/jcpsa6/v97/i10/p7507_s1 doo = 2.74 doht = 0.957 doh = 0.977 angle = radians(104.5) initial = Atoms('HOHOH', positions=[(-sin(angle) * doht, 0, cos(angle) * doht), (0., 0., 0.), (0., 0., doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(initial) final = Atoms('HOHOH', positions=[(- sin(angle) * doht, 0., cos(angle) * doht), (0., 0., 0.), (0., 0., doo - doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(final) # Make band: images = [initial.copy()] for i in range(3): images.append(initial.copy()) images.append(final.copy()) neb = NEB(images, climb=True) def calculator(): return NWChem(task='gradient', geometry='nocenter noautosym noautoz', charge=-1) # Set constraints and calculator: constraint = FixAtoms(indices=[1, 3]) # fix OO for image in images: image.set_calculator(calculator()) image.set_constraint(constraint) # Relax initial and final states: if 1: dyn1 = QuasiNewton(images[0]) dyn1.run(fmax=0.10) dyn2 = QuasiNewton(images[-1]) dyn2.run(fmax=0.10) # Interpolate positions between initial and final states: neb.interpolate() if 1: for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) dyn = BFGS(neb, trajectory='nwchem_h3o2m.traj') dyn.run(fmax=0.10) # use better basis (e.g. aug-cc-pvdz) for NEB to converge for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/nwchem_spin_symmetry.py000066400000000000000000000015141316323560300276350ustar00rootroot00000000000000"""Check if spin-symmetry is conserved""" from ase import Atoms from ase.calculators.nwchem import NWChem def main(): """Check is independence of alignment is conserved""" energies = [] cr_atom = Atoms('Cr', positions=[(0, 0, 0)], pbc=False) for orientation in range(2): imm = 6 * (-1) ** orientation cr_atom.set_initial_magnetic_moments([imm]) calculator = NWChem(task='energy', geometry='nocenter noautosym noautoz', convergence={'energy': 1e-3, 'density': 1e-2, 'gradient': 5e-2}, basis='m6-31g*', basispar='"ao basis" spherical', charge=0) cr_atom.set_calculator(calculator) energies.append(cr_atom.get_potential_energy()) assert abs(energies[0] - energies[1]) < 1e-9 if 1: main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/nwchem/nwchem_strong_levelshift.py000066400000000000000000000015711316323560300304570ustar00rootroot00000000000000"""Check if ase issues a warning if level shift breaks symmetry.""" from warnings import catch_warnings, simplefilter from ase import Atoms from ase.calculators.nwchem import NWChem def main(): """The main routine for the prove of the warning.""" cr_atom = Atoms('Cr', positions=[(0, 0, 0)], pbc=False, magmoms=[5.0]) calculator = NWChem(task='energy', geometry='nocenter noautosym noautoz', convergence={'energy': 1e-3, 'density': 1e-2, 'gradient': 5e-2}, basis='Wachters+f', charge=1) cr_atom.set_calculator(calculator) with catch_warnings(record=True) as thrown_warning: simplefilter('always', RuntimeWarning) cr_atom.get_potential_energy() assert len(thrown_warning) == 1 assert 'levelshift' in str(thrown_warning[-1].message) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/octopus/000077500000000000000000000000001316323560300232125ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/octopus/__init__.py000066400000000000000000000000001316323560300253110ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/octopus/big-test.py000066400000000000000000000106211316323560300253020ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.calculators.octopus import Octopus from ase.collections import g2 from ase.build import bulk, graphene_nanoribbon from ase.calculators.interfacechecker import check_interface def calculate(name, system, **kwargs): print('Calculate', name, system) label = 'ink-%s' % name kwargs0 = dict(stdout="'stdout.txt'", FromScratch=True, RestartWrite=False, command='mpirun -np 4 octopus') kwargs.update(**kwargs0) calc = Octopus(label=label, **kwargs) system.calc = calc E = system.get_potential_energy() eig = calc.get_eigenvalues() check_interface(calc) restartcalc = Octopus(label) check_interface(restartcalc) # Check reconstruction of Atoms object new_atoms = restartcalc.get_atoms() print('new') print(new_atoms.positions) calc2 = Octopus(label='ink-restart-%s' % name, **kwargs) new_atoms.calc = calc2 E2 = new_atoms.get_potential_energy() #print('energy', E, E2) eig2 = calc2.get_eigenvalues() eig_err = np.abs(eig - eig2).max() e_err = abs(E - E2) print('Restart E err', e_err) print('Restart eig err', eig_err) assert e_err < 5e-5 assert eig_err < 5e-5 return calc if 1: calc = calculate('H2O', g2['H2O'], OutputFormat='xcrysden', Output='density + wfs + potential', SCFCalculateDipole=True) dipole = calc.get_dipole_moment() E = calc.get_potential_energy() print('dipole', dipole) print('energy', E) dipole_err = np.abs(dipole - [0., 0., -0.37]).max() assert dipole_err < 0.02, dipole_err energy_err = abs(-463.5944954 - E) assert energy_err < 0.001, energy_err if 1: atoms = g2['O2'] atoms.center(vacuum=2.0) calc = calculate('O2', atoms, BoxShape='parallelepiped', SpinComponents='spin_polarized', ExtraStates=2) #magmom = calc.get_magnetic_moment() #magmoms = calc.get_magnetic_moments() #print('magmom', magmom) #print('magmoms', magmoms) if 1: calc = calculate('Si', bulk('Si', orthorhombic=True), KPointsGrid=[[4, 4, 4]], KPointsUseSymmetries=True, SmearingFunction='fermi_dirac', ExtraStates=2, Smearing='0.1 * eV', ExperimentalFeatures=True, Spacing='0.35 * Angstrom') eF = calc.get_fermi_level() print('eF', eF) if 0: # This calculation does not run will in Octopus # We will do the "toothless" spin-polarised Si instead. calc = calculate('Fe', bulk('Fe', orthorhombic=True), KPointsGrid=[[4, 4, 4]], KPointsUseSymmetries=True, ExtraStates=4, Spacing='0.15 * Angstrom', SmearingFunction='fermi_dirac', Smearing='0.1 * eV', PseudoPotentialSet='sg15', ExperimentalFeatures=True, SpinComponents='spin_polarized') eF = calc.get_fermi_level() assert abs(eF - 5.33) < 1e-1 # XXXX octopus does not get magnetic state? if 1: calc = calculate('Si', bulk('Si', orthorhombic=True), KPointsGrid=[[4, 4, 4]], SpinComponents='spin_polarized', ExtraStates=2, SmearingFunction='fermi_dirac', Smearing='0.1 * eV', KPointsUseSymmetries=True, ExperimentalFeatures=True, Spacing='0.35 * Angstrom') #eF = calc.get_fermi_level() print('eF', eF) if 0: # Experimental feature: mixed periodicity. Let us not do this for now... graphene = graphene_nanoribbon(2, 2, sheet=True) graphene.positions = graphene.positions[:, [0, 2, 1]] graphene.pbc = [1, 1, 0] # from 1, 0, 1 calc = calculate('graphene', graphene, KPointsGrid=[[2, 1, 2]], KPointsUseSymmetries=True, ExperimentalFeatures=True, ExtraStates=4, SmearingFunction='fermi_dirac', Smearing='0.1 * eV') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/octopus/restart-octopus.py000066400000000000000000000016751316323560300267530ustar00rootroot00000000000000from __future__ import print_function from ase.calculators.octopus import Octopus from ase.calculators.interfacechecker import check_interface from ase.build import molecule system = molecule('H2O') system.center(vacuum=2.0) label = 'ink' calc0 = Octopus(label=label, FromScratch=True, stdout="'stdout.txt'", stderr="'stderr.txt'", Spacing='0.15 * Angstrom', Output='density + wfs + potential', OutputFormat='cube + xcrysden') system.set_calculator(calc0) system.get_potential_energy() # Must make one test with well-defined cell and one without. calc1 = Octopus(label) system = calc1.get_atoms() E = system.get_potential_energy() print('energy', E) errs = check_interface(calc1) # view(system) atoms = Octopus.read_atoms(label) errs = check_interface(atoms.calc) changes = calc1.check_state(atoms) print('changes', changes) assert len(changes) == 0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/onetep/000077500000000000000000000000001316323560300230105ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/onetep/__init__.py000066400000000000000000000000001316323560300251070ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/onetep/onetep.py000066400000000000000000000016351316323560300246610ustar00rootroot00000000000000from ase.build import molecule from ase.calculators.onetep import Onetep from os.path import isfile, dirname, abspath, join mol = molecule('H2O') mol.center(8) calc = Onetep(label='water') # Tests conducted with the JTH PAW data set. # http://www.abinit.org/downloads/PAW2 prefix = dirname(abspath(__file__)) h_path = join(prefix, 'H.abinit') o_path = join(prefix, 'O.abinit') if not (isfile(h_path) and isfile(o_path)): raise Exception("""You must supply PAW data sets for hydrogen and oxygen to run this test. Please see http://www.abinit.org/downloads/PAW2 for suitable data. ONETEP takes PAW data sets in the abinit format. I need H.abinit and O.abinit""") calc.set_pseudos([('H', h_path), ('O', o_path)]) calc.set(paw=True, xc='PBE', cutoff_energy='400 eV') mol.set_calculator(calc) energy = mol.get_total_energy() ref_energy = -470.852068717 assert abs(energy - ref_energy) < 1e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/pourbaix.py000066400000000000000000000037701316323560300237300ustar00rootroot00000000000000from __future__ import print_function from unittest import SkipTest raise SkipTest('WIP') import numpy as np import ase.db from ase.phasediagram import bisect, Pourbaix, solvated if 0: N = 80 A = np.zeros((N, N), int) A[:] = -1 def f(x, y): dmin = 100 for i, (a, b) in enumerate([(0, 0), (0, 2), (1, 1)]): d = (x - a)**2 + (y - b)**2 if d < dmin: dmin = d imin = i return imin bisect(A, np.linspace(0, 2, N), np.linspace(0, 2, N), f) print(A) import matplotlib.pyplot as plt plt.imshow(A) plt.show() if 0: con = ase.db.connect('cubic_perovskites.db') references = [(row.count_atoms(), row.energy) for row in con.select('reference')] std = {} for count, energy in references: if len(count) == 1: symbol, n = list(count.items())[0] assert symbol not in std std[symbol] = energy / n std['O'] += 2.46 refs = [] for refcount, energy in references: for symbol, n in refcount.items(): energy -= n * std[symbol] if list(refcount) == ['O']: energy = 0.0 refs.append((refcount, energy)) if 1: refs = [#({'O': 1}, 0.0), ('O4Ti2', -17.511826939900217), ('Sr4O4', -20.474907588620653), ('Sr4', 0.0), ('Ti2', 0.0)] else: refs = [({'O': 1}, 0.0), ({'Zn': 1}, 0.0), ({'Zn': 2, 'O': 2}, -5.33991412178575), ({'Zn': 4, 'O': 8}, -7.594)] pb = Pourbaix(refs + solvated('SrTi'), Sr=1, Ti=1, O=3) #pb = Pourbaix(refs, Zn=1, O=1) print(pb.decompose(0, 9)) pH = np.linspace(-1, 15, 17) if 0: d, names = pb.diagram([0], pH) print(d) print('\n'.join(names)) U = np.linspace(-2, 2, 5) if 0: d, names = pb.diagram(U, [0]) for i, u in zip(d, U): print(u, names[i]) if 1: U = np.linspace(-3, 3, 200) pH = np.linspace(-1, 15, 300) d, names = pb.diagram(U, pH, plot=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/preconlbfgs.py000066400000000000000000000014011316323560300243700ustar00rootroot00000000000000import numpy as np from ase.build import bulk from ase.calculators.emt import EMT from ase.optimize.precon import Exp, PreconLBFGS, PreconFIRE N = 1 a0 = bulk('Cu', cubic=True) a0 *= (N, N, N) # perturb the atoms s = a0.get_scaled_positions() s[:, 0] *= 0.995 a0.set_scaled_positions(s) nsteps = [] energies = [] for OPT in [PreconLBFGS, PreconFIRE]: for precon in [None, Exp(A=3, use_pyamg=False)]: atoms = a0.copy() atoms.set_calculator(EMT()) opt = OPT(atoms, precon=precon, use_armijo=True) opt.run(1e-4) energies += [atoms.get_potential_energy()] nsteps += [opt.get_number_of_steps()] # check we get the expected energy for all methods assert np.abs(np.array(energies) - -0.022726045433998365).max() < 1e-4 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/properties.py000066400000000000000000000007331316323560300242670ustar00rootroot00000000000000import numpy as np from ase import Atoms charges = np.array([-1, 1]) a = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1.1)], charges=charges) a.pbc[0] = 1 assert a.pbc.any() assert not a.pbc.all() a.pbc = 1 assert a.pbc.all() a.cell = (1, 2, 3) a.cell *= 2 a.cell[0, 0] = 3 assert not (a.cell.diagonal() - (3, 4, 6)).any() assert (charges == a.get_initial_charges()).all() assert a.has('initial_charges') # XXX extend has to calculator properties assert not a.has('charges') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/pull.py000066400000000000000000000004441316323560300230460ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.calculators.emt import EMT from ase.io import Trajectory Cu = Atoms('Cu', pbc=(1, 0, 0), calculator=EMT()) traj = Trajectory('Cu.traj', 'w') for a in np.linspace(2.0, 4.0, 20): Cu.set_cell([a, 1, 1], scale_atoms=True) traj.write(Cu) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/qbox/000077500000000000000000000000001316323560300224675ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/qbox/qbox.py000066400000000000000000000037131316323560300240160ustar00rootroot00000000000000"""Tests related to QBOX""" import os import numpy as np from ase import Atoms from ase.io import qbox from ase.io import formats import ase test_file = os.path.join(os.path.dirname(ase.__file__), 'test', 'qbox', 'test.xml') def read_output(): """Test reading the output file""" # Read only one frame atoms = qbox.read_qbox(test_file) assert isinstance(atoms, Atoms) assert np.allclose(atoms.cell, np.diag([16, 16, 16])) assert len(atoms) == 4 assert np.allclose(atoms[0].position, [3.70001108, -0.00000000, -0.00000003], atol=1e-7) # Last frame assert np.allclose(atoms.get_velocities()[2], [-0.00000089, -0.00000000, -0.00000000], atol=1e-9) # Last frame assert np.allclose(atoms.get_forces()[3], [-0.00000026, -0.01699708, 0.00000746], atol=1e-7) # Last frame assert np.isclose(-15.37294664, atoms.get_potential_energy()) assert np.allclose(atoms.get_stress(), [-0.40353661, -1.11698386, -1.39096418, 0.00001786, -0.00002405, -0.00000014]) # Read all the frames atoms = qbox.read_qbox(test_file, slice(None)) assert isinstance(atoms, list) assert len(atoms) == 5 assert len(atoms[1]) == 4 assert np.allclose(atoms[1][0].position, [3.70001108, -0.00000000, -0.00000003], atol=1e-7) # 2nd frame assert np.allclose(atoms[1].get_forces()[3], [-0.00000029, -0.01705361, 0.00000763], atol=1e-7) # 2nd frame def test_format(): """Make sure the `formats.py` operations work""" atoms = formats.read(test_file) assert len(atoms) == 4 atoms = formats.read(test_file, index=slice(None), format='qbox') assert len(atoms) == 5 if __name__ == '__main__': read_output() test_format() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/qbox/test.xml000066400000000000000000000521221316323560300241720ustar00rootroot00000000000000 5bd1acfc-88da-11e7-bb1d-fa163ec3a82b ============================ I qbox 1.63.8 I I I I I I I I I I I I I I I I I I I I I I I I http://qboxcode.org I ============================ 1.63.8 centos7 wardlt Linux js-168-106.jetstream-cloud.org 2017-08-24T14:41:48Z js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org js-168-106.jetstream-cloud.org [qbox] # Si4 CP dynamics [qbox] load ../si4gs/test.xml LoadCmd: loading from ../si4gs/test.xml XMLGFPreprocessor: reading from ../si4gs/test.xml size: 358009 XMLGFPreprocessor: read time: 0.00014 XMLGFPreprocessor: local read rate: 101.6 MB/s aggregate read rate: 2440 MB/s XMLGFPreprocessor: tag fixing time: 8.607e-05 XMLGFPreprocessor: segment definition time: 0.001074 XMLGFPreprocessor: boundary adjustment time: 4.053e-06 XMLGFPreprocessor: transcoding time: 3.099e-06 XMLGFPreprocessor: data redistribution time: 0.001073 XMLGFPreprocessor: XML compacting time: 0.0005789 XMLGFPreprocessor: total time: 0.003368 xmlcontent.size(): 120537 Starting XML parsing species silicon: Translated from UPF format by upf2qso Generated using unknown code Author: Von Barth-Car ( 1984) Info: automatically converted from PWSCF format 0 The Pseudo was generated with a Non-Relativistic Calculation 0.00000000000E+00 Local Potential cutoff radius nl pn l occ Rcut Rcut US E pseu 3S 0 0 2.00 0.00000000000 0.00000000000 0.00000000000 3P 0 1 2.00 0.00000000000 0.00000000000 0.00000000000 SLA PZ NOGX NOGC Si 14 28.09 4 2 2 0 0 0.01 Kleinman-Bylander potential rcps_ = 1.5 WavefunctionHandler::startElement: wavefunction nspin=1 nel=16 nempty=0 WavefunctionHandler::startElement: slater_determinant kpoint=0 0 0 weight=1 size=8 WavefunctionHandler::endElement: slater_determinant XML parsing done SampleReader: read time: 0.03573 s [qbox] set wf_dyn MD [qbox] set atoms_dyn MD [qbox] set dt 4 [qbox] set stress ON [qbox] run 5 EnergyFunctional: np0v,np1v,np2v: 30 30 30 EnergyFunctional: vft->np012(): 27000 reciprocal lattice vectors 0.392699 0.000000 0.000000 0.000000 0.392699 0.000000 0.000000 0.000000 0.392699 kpoint: 0.000000 0.000000 0.000000 weight: 1.000000 sdcontext: 24x1 basis size: 511 c dimensions: 696x8 (29x8 blocks) total_electronic_charge: 16.00000000 5.34839594 0.00000000 -5.48138503 4.77521434 -15.60248424 -4.41268616 0.07326880 17.02153730 0.00000000 0.00000000 -15.37294515 0.00000000 0.00000000 -15.37294515 3.70000044 -0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 0.00284439 -0.00000004 -0.00000759 -0.00000000 2.20000267 0.00000000 0.00000000 0.00000000 0.00000000 -0.00000030 0.01705795 0.00000984 -3.70000044 -0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 -0.00284289 -0.00000006 -0.00000896 -0.00000000 -2.20000267 0.00000000 0.00000000 0.00000000 0.00000000 -0.00000029 -0.01705787 0.00000764 0.00000000 0.00000000 0.00000000 0.00000000 -15.37294515 -15.37294515 -0.40316092 -1.11691203 -1.39125067 -0.00000015 0.00001892 -0.00002269 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -0.40316092 -1.11691203 -1.39125067 -0.00000015 0.00001892 -0.00002269 total_electronic_charge: 16.00000000 5.34839594 0.00000000 -5.48138456 4.77521478 -15.60248525 -4.41268616 0.07326840 17.02153730 0.00000000 0.00000000 -15.37294524 0.00000000 0.00000000 -15.37294524 3.70000178 -0.00000000 -0.00000000 0.00000022 -0.00000000 -0.00000000 0.00284244 -0.00000004 -0.00000759 -0.00000000 2.20001066 0.00000001 -0.00000000 0.00000133 0.00000000 -0.00000030 0.01705370 0.00000982 -3.70000178 -0.00000000 -0.00000001 -0.00000022 -0.00000000 -0.00000000 -0.00284094 -0.00000006 -0.00000895 -0.00000000 -2.20001066 0.00000000 -0.00000000 -0.00000133 0.00000000 -0.00000029 -0.01705361 0.00000763 0.00000000 0.00000009 0.00491777 0.00000000 -15.37294515 -15.37294515 -0.40318581 -1.11691708 -1.39122938 -0.00000015 0.00001885 -0.00002278 0.00000004 0.00000131 0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -0.40318578 -1.11691578 -1.39122938 -0.00000015 0.00001885 -0.00002278 total_electronic_charge: 16.00000000 5.34839575 0.00000000 -5.48138300 4.77521599 -15.60248818 -4.41268608 0.07326719 17.02153730 0.00000000 0.00000000 -15.37294552 0.00000000 0.00000000 -15.37294552 3.70000400 -0.00000000 -0.00000001 0.00000044 -0.00000000 -0.00000000 0.00283676 -0.00000004 -0.00000758 -0.00000000 2.20002398 0.00000001 -0.00000000 0.00000266 0.00000000 -0.00000029 0.01704131 0.00000976 -3.70000399 -0.00000000 -0.00000001 -0.00000044 -0.00000000 -0.00000000 -0.00283528 -0.00000006 -0.00000889 -0.00000000 -2.20002398 0.00000001 -0.00000000 -0.00000266 0.00000000 -0.00000028 -0.01704123 0.00000759 0.00000000 0.00000037 0.01966104 0.00000000 -15.37294515 -15.37294515 -0.40325935 -1.11693283 -1.39116835 -0.00000015 0.00001865 -0.00002306 0.00000014 0.00000522 0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -0.40325920 -1.11692760 -1.39116835 -0.00000015 0.00001865 -0.00002306 total_electronic_charge: 16.00000000 5.34839478 0.00000000 -5.48137994 4.77521759 -15.60249275 -4.41268567 0.07326517 17.02153730 0.00000000 0.00000000 -15.37294599 0.00000000 0.00000000 -15.37294599 3.70000710 -0.00000000 -0.00000002 0.00000067 -0.00000000 -0.00000000 0.00282791 -0.00000003 -0.00000756 -0.00000000 2.20004262 0.00000002 -0.00000000 0.00000400 0.00000000 -0.00000028 0.01702190 0.00000967 -3.70000710 -0.00000000 -0.00000002 -0.00000066 -0.00000000 -0.00000000 -0.00282646 -0.00000005 -0.00000879 -0.00000000 -2.20004262 0.00000002 -0.00000000 -0.00000400 0.00000000 -0.00000027 -0.01702182 0.00000754 0.00000000 0.00000084 0.04420103 0.00000000 -15.37294515 -15.37294515 -0.40337818 -1.11696101 -1.39107579 -0.00000014 0.00001831 -0.00002349 0.00000033 0.00001174 0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -0.40337786 -1.11694927 -1.39107579 -0.00000014 0.00001831 -0.00002349 total_electronic_charge: 16.00000000 5.34839213 0.00000000 -5.48137474 4.77521902 -15.60249850 -4.41268455 0.07326235 17.02153730 0.00000000 0.00000000 -15.37294664 0.00000000 0.00000000 -15.37294664 3.70001108 -0.00000000 -0.00000003 0.00000089 -0.00000000 -0.00000000 0.00281674 -0.00000003 -0.00000752 -0.00000000 2.20006657 0.00000004 -0.00000000 0.00000532 0.00000000 -0.00000027 0.01699715 0.00000953 -3.70001108 -0.00000000 -0.00000003 -0.00000089 -0.00000000 -0.00000000 -0.00281533 -0.00000005 -0.00000865 -0.00000000 -2.20006657 0.00000003 -0.00000000 -0.00000532 0.00000000 -0.00000026 -0.01699708 0.00000746 0.00000000 0.00000149 0.07849411 0.00000000 -15.37294515 -15.37294515 -0.40353719 -1.11700470 -1.39096418 -0.00000014 0.00001786 -0.00002405 0.00000058 0.00002085 0.00000000 -0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -0.40353661 -1.11698386 -1.39096418 -0.00000014 0.00001786 -0.00002405 total_electronic_charge: 16.00000000 [qbox] End of command stream 15.469 2017-08-24T14:41:48Z ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/qmmm.py000066400000000000000000000055001316323560300230370ustar00rootroot00000000000000from math import cos, sin, pi import numpy as np # import matplotlib.pyplot as plt import ase.units as units from ase import Atoms from ase.calculators.tip3p import TIP3P, epsilon0, sigma0, rOH, angleHOH from ase.calculators.qmmm import (SimpleQMMM, EIQMMM, LJInteractions, LJInteractionsGeneral) from ase.constraints import FixInternals from ase.optimize import BFGS r = rOH a = angleHOH * pi / 180 # From http://dx.doi.org/10.1063/1.445869 eexp = 6.50 * units.kcal / units.mol dexp = 2.74 aexp = 27 D = np.linspace(2.5, 3.5, 30) i = LJInteractions({('O', 'O'): (epsilon0, sigma0)}) # General LJ interaction object sigma_mm = np.array([0, 0, sigma0]) epsilon_mm = np.array([0, 0, epsilon0]) sigma_qm = np.array([0, 0, sigma0]) epsilon_qm = np.array([0, 0, epsilon0]) ig = LJInteractionsGeneral(sigma_qm, epsilon_qm, sigma_mm, epsilon_mm) for calc in [TIP3P(), SimpleQMMM([0, 1, 2], TIP3P(), TIP3P(), TIP3P()), SimpleQMMM([0, 1, 2], TIP3P(), TIP3P(), TIP3P(), vacuum=3.0), EIQMMM([0, 1, 2], TIP3P(), TIP3P(), i), EIQMMM([3, 4, 5], TIP3P(), TIP3P(), i, vacuum=3.0), EIQMMM([0, 1, 2], TIP3P(), TIP3P(), i, vacuum=3.0), EIQMMM([0, 1, 2], TIP3P(), TIP3P(), ig), EIQMMM([3, 4, 5], TIP3P(), TIP3P(), ig, vacuum=3.0), EIQMMM([0, 1, 2], TIP3P(), TIP3P(), ig, vacuum=3.0)]: dimer = Atoms('H2OH2O', [(r * cos(a), 0, r * sin(a)), (r, 0, 0), (0, 0, 0), (r * cos(a / 2), r * sin(a / 2), 0), (r * cos(a / 2), -r * sin(a / 2), 0), (0, 0, 0)]) dimer.calc = calc E = [] F = [] for d in D: dimer.positions[3:, 0] += d - dimer.positions[5, 0] E.append(dimer.get_potential_energy()) F.append(dimer.get_forces()) F = np.array(F) # plt.plot(D, E) F1 = np.polyval(np.polyder(np.polyfit(D, E, 7)), D) F2 = F[:, :3, 0].sum(1) error = abs(F1 - F2).max() dimer.constraints = FixInternals( bonds=[(r, (0, 2)), (r, (1, 2)), (r, (3, 5)), (r, (4, 5))], angles=[(a, (0, 2, 1)), (a, (3, 5, 4))]) opt = BFGS(dimer, trajectory=calc.name + '.traj', logfile=calc.name + 'd.log') opt.run(0.01) e0 = dimer.get_potential_energy() d0 = dimer.get_distance(2, 5) R = dimer.positions v1 = R[1] - R[5] v2 = R[5] - (R[3] + R[4]) / 2 a0 = np.arccos(np.dot(v1, v2) / (np.dot(v1, v1) * np.dot(v2, v2))**0.5) / np.pi * 180 fmt = '{0:>20}: {1:.3f} {2:.3f} {3:.3f} {4:.1f}' print(fmt.format(calc.name, -min(E), -e0, d0, a0)) assert abs(e0 + eexp) < 0.002 assert abs(d0 - dexp) < 0.006 assert abs(a0 - aexp) < 2 print(fmt.format('reference', 9.999, eexp, dexp, aexp)) # plt.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/qmmm_tip4p.py000066400000000000000000000047561316323560300241730ustar00rootroot00000000000000from math import cos, sin import numpy as np # import matplotlib.pyplot as plt import ase.units as units from ase import Atoms from ase.calculators.tip4p import TIP4P, epsilon0, sigma0, rOH, angleHOH from ase.calculators.qmmm import SimpleQMMM, LJInteractions, EIQMMM from ase.constraints import FixBondLengths from ase.optimize import BFGS r = rOH a = angleHOH * np.pi / 180 # From http://dx.doi.org/10.1063/1.445869 eexp = 6.24 * units.kcal / units.mol dexp = 2.75 aexp = 46 D = np.linspace(2.5, 3.5, 30) inter = LJInteractions({('O', 'O'): (epsilon0, sigma0)}) for calc in [TIP4P(), SimpleQMMM([0, 1, 2], TIP4P(), TIP4P(), TIP4P()), SimpleQMMM([0, 1, 2], TIP4P(), TIP4P(), TIP4P(), vacuum=3.0), EIQMMM([0, 1, 2], TIP4P(), TIP4P(), inter), EIQMMM([0, 1, 2], TIP4P(), TIP4P(), inter, vacuum=3.0), EIQMMM([3, 4, 5], TIP4P(), TIP4P(), inter, vacuum=3.0)]: dimer = Atoms('OH2OH2', [(0, 0, 0), (r * cos(a), 0, r * sin(a)), (r, 0, 0), (0, 0, 0), (r * cos(a / 2), r * sin(a / 2), 0), (r * cos(a / 2), -r * sin(a / 2), 0) ]) dimer.calc = calc E = [] F = [] for d in D: dimer.positions[3:, 0] += d - dimer.positions[3, 0] E.append(dimer.get_potential_energy()) F.append(dimer.get_forces()) F = np.array(F) # plt.plot(D, E) F1 = np.polyval(np.polyder(np.polyfit(D, E, 7)), D) F2 = F[:, :3, 0].sum(1) error = abs(F1 - F2).max() dimer.constraints = FixBondLengths([(3 * i + j, 3 * i + (j + 1) % 3) for i in range(2) for j in [0, 1, 2]]) opt = BFGS(dimer, trajectory=calc.name + '.traj', logfile=calc.name + 'd.log') opt.run(0.001) if calc.name == 'tip4p': # save optimized geom for EIQMMM test tip4pdimer = dimer.copy() e0 = dimer.get_potential_energy() d0 = dimer.get_distance(0, 3) R = dimer.positions v1 = R[2] - R[3] v2 = R[3] - (R[4] + R[5]) / 2 a0 = np.arccos(np.dot(v1, v2) / (np.dot(v1, v1) * np.dot(v2, v2))**0.5) / np.pi * 180 fmt = '{0:>25}: {1:.3f} {2:.3f} {3:.3f} {4:.1f}' print(fmt.format(calc.name, -min(E), -e0, d0, a0)) assert abs(e0 + eexp) < 0.002 assert abs(d0 - dexp) < 0.006 assert abs(a0 - aexp) < 2.5 # plt.show() print(fmt.format('reference', 9.999, eexp, dexp, aexp)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/quaternions.py000066400000000000000000000044371316323560300244500ustar00rootroot00000000000000import numpy as np from ase.quaternions import Quaternion def axang_rotm(u, theta): u = np.array(u, float) u /= np.linalg.norm(u) # Cross product matrix for u ucpm = np.array([[0, -u[2], u[1]], [u[2], 0, -u[0]], [-u[1], u[0], 0]]) # Rotation matrix rotm = (np.cos(theta) * np.identity(3) + np.sin(theta) * ucpm + (1 - np.cos(theta)) * np.kron(u[:, None], u[None, :])) return rotm def rand_rotm(rndstate=np.random.RandomState(0)): """Axis & angle rotations.""" u = rndstate.rand(3) theta = rndstate.rand() * np.pi * 2 return axang_rotm(u, theta) def eulang_rotm(a, b, c, mode='zyz'): rota = axang_rotm([0, 0, 1], a) rotc = axang_rotm([0, 0, 1], c) if mode == 'zyz': rotb = axang_rotm([0, 1, 0], b) elif mode == 'zxz': rotb = axang_rotm([1, 0, 0], b) return np.dot(rotc, np.dot(rotb, rota)) # Random state for testing rndstate = np.random.RandomState(0) test_n = 200 # First: test that rotations DO work for i in range(test_n): # n random tests rotm = rand_rotm(rndstate) q = Quaternion.from_matrix(rotm) # Now test this with a vector v = rndstate.rand(3) vrotM = np.dot(rotm, v) vrotQ = q.rotate(v) assert np.allclose(vrotM, vrotQ) # Second: test the special case of a PI rotation rotm = np.identity(3) rotm[:2, :2] *= -1 # Rotate PI around z axis q = Quaternion.from_matrix(rotm) assert not np.isnan(q.q).any() # Third: test compound rotations and operator overload for i in range(test_n): rotm1 = rand_rotm(rndstate) rotm2 = rand_rotm(rndstate) q1 = Quaternion.from_matrix(rotm1) q2 = Quaternion.from_matrix(rotm2) # Now test this with a vector v = rndstate.rand(3) vrotM = np.dot(rotm2, np.dot(rotm1, v)) vrotQ = (q2 * q1).rotate(v) assert np.allclose(vrotM, vrotQ) # Fourth: test Euler angles for mode in ['zyz', 'zxz']: for i in range(test_n): abc = rndstate.rand(3)*2*np.pi v2 = rndstate.rand(2, 3) # Two random vectors to rotate rigidly q_eul = Quaternion.from_euler_angles(*abc, mode=mode) rot_eul = eulang_rotm(*abc, mode=mode) v2_q = np.array([q_eul.rotate(v) for v in v2]) v2_m = np.array([np.dot(rot_eul, v) for v in v2]) assert np.allclose(v2_q, v2_m) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/rattle.py000066400000000000000000000023651316323560300233710ustar00rootroot00000000000000import ase.units as units from ase.calculators.tip3p import TIP3P, epsilon0, sigma0, rOH, angleHOH from ase.calculators.qmmm import SimpleQMMM, EIQMMM, LJInteractions from ase.data.s22 import create_s22_system as s22 from ase.md.verlet import VelocityVerlet from ase.constraints import FixBondLengths i = LJInteractions({('O', 'O'): (epsilon0, sigma0)}) for calc in [TIP3P(), SimpleQMMM([0, 1, 2], TIP3P(), TIP3P(), TIP3P()), EIQMMM([0, 1, 2], TIP3P(), TIP3P(), i)]: dimer = s22('Water_dimer') for m in [0, 3]: dimer.set_angle(m + 1, m, m + 2, angleHOH) dimer.set_distance(m, m + 1, rOH, fix=0) dimer.set_distance(m, m + 2, rOH, fix=0) fixOH1 = [(3 * i, 3 * i + 1) for i in range(2)] fixOH2 = [(3 * i, 3 * i + 2) for i in range(2)] fixHH = [(3 * i + 1, 3 * i + 2) for i in range(2)] dimer.set_constraint(FixBondLengths(fixOH1+fixOH2+fixHH)) dimer.calc = calc e = dimer.get_potential_energy() md = VelocityVerlet(dimer, 2.0 * units.fs, trajectory=calc.name + '.traj', logfile=calc.name + '.log', loginterval=20) md.run(100) de = dimer.get_potential_energy() - e assert abs(de - -0.028) < 0.001 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/repeat_FixAtoms.py000066400000000000000000000015711316323560300251660ustar00rootroot00000000000000from ase.build import molecule from ase.constraints import FixAtoms N = 2 atoms = molecule('CO2') atoms.set_cell((15, 15, 15)) # Indices method: atomsi = atoms.copy() atomsi.set_constraint(FixAtoms(indices=[0])) atomsi = atomsi.repeat((N, 1, 1)) atomsiref = atoms.copy().repeat((N, 1, 1)) atomsiref.set_constraint(FixAtoms(indices=list(range(0, 3 * N, 3)))) lcatomsi = list(atomsi.constraints[0].index) lcatomsiref = list(atomsiref.constraints[0].index) assert lcatomsi == lcatomsiref # Mask method: atomsm = atoms.copy() atomsm.set_constraint(FixAtoms(mask=[True, False, False])) atomsm = atomsm.repeat((N, 1, 1)) atomsmref = atoms.copy().repeat((N, 1, 1)) atomsmref.set_constraint(FixAtoms(mask=[True, False, False] * N)) lcatomsm = list(atomsm.constraints[0].index) lcatomsmref = list(atomsmref.constraints[0].index) assert lcatomsm == lcatomsmref assert lcatomsm == lcatomsi ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/replay.py000066400000000000000000000016401316323560300233650ustar00rootroot00000000000000from math import sqrt from ase import Atoms, Atom from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton from ase.io import read from ase.visualize import view # Distance between Cu atoms on a (100) surface: d = 3.6 / sqrt(2) a = Atoms('Cu', positions=[(0, 0, 0)], cell=(d, d, 1.0), pbc=(True, True, False)) a *= (2, 2, 1) # 2x2 (100) surface-cell # Approximate height of Ag atom on Cu(100) surfece: h0 = 2.0 a += Atom('Ag', (d / 2, d / 2, h0)) if 0: view(a) constraint = FixAtoms(range(len(a) - 1)) a.set_calculator(EMT()) a.set_constraint(constraint) dyn1 = QuasiNewton(a, trajectory='AgCu1.traj', logfile='AgCu1.log') dyn1.run(fmax=0.1) a = read('AgCu1.traj') a.set_calculator(EMT()) print(a.constraints) dyn2 = QuasiNewton(a, trajectory='AgCu2.traj', logfile='AgCu2.log') dyn2.replay_trajectory('AgCu1.traj') dyn2.run(fmax=0.01) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/root_test.py000066400000000000000000000024011316323560300241070ustar00rootroot00000000000000from ase.build import fcc111 from ase.build import bcc111 from ase.build import hcp0001 from ase.build import fcc111_root from ase.build import root_surface from ase.build import root_surface_analysis # Make samples of primitive cell prim_fcc111 = fcc111("H", (1, 1, 2), a=1) prim_bcc111 = bcc111("H", (1, 1, 2), a=1) prim_hcp0001 = hcp0001("H", (1, 1, 2), a=1) # Check valid roots up to root 21 (the 10th root cell) valid_fcc111 = root_surface_analysis(prim_fcc111, 21) valid_bcc111 = root_surface_analysis(prim_bcc111, 21) valid_hcp0001 = root_surface_analysis(prim_hcp0001, 21) # These should have different positions, but the same # cell geometry. assert valid_fcc111 == valid_bcc111 == valid_hcp0001 # Make an easy sample to check code errors atoms1 = root_surface(prim_fcc111, 7) # Ensure the valid roots are the roots are valid against # a set of manually checked roots for this system assert valid_fcc111 == [1.0, 3.0, 4.0, 7.0, 9.0, 12.0, 13.0, 16.0, 19.0, 21.0] # Remake easy sample using surface function atoms2 = fcc111_root("H", 7, (1, 1, 2), a=1) # Right number of atoms assert len(atoms1) == len(atoms2) == 14 # Same positions assert (atoms1.positions == atoms2.positions).all() # Same cell assert (atoms1.cell == atoms2.cell).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/rotate.py000066400000000000000000000011631316323560300233670ustar00rootroot00000000000000import numpy as np from math import sqrt from ase import Atoms from ase.utils import rotate, irotate def test(xyz): a = rotate(xyz) ixyz = '%sx,%sy,%sz' % irotate(a) a2 = rotate(ixyz) print(xyz) print(ixyz) assert abs(a - a2).max() < 1e-10 test('10z') test('155x,43y,190z') test('55x,90y,190z') test('180x,-90y,45z') test('-180y') test('40z,50x') norm = np.linalg.norm for eps in [1.e-6, 1.e-8]: struct = Atoms('H2', [[0, 0, 0], [0, sqrt(1 - eps**2), eps]]) struct.rotate(struct[1].position, 'y') assert abs(norm(struct[1].position) - 1) < 1.e-12 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/rotate_euler.py000066400000000000000000000004761316323560300245710ustar00rootroot00000000000000from math import sqrt from ase import Atoms d = 1.14 a = Atoms('CO', [(0, 0, 0), (d, 0, 0)]) a.euler_rotate(phi=90, theta=45, psi=180) for p in a[0].position: assert p == 0.0 assert abs(a[1].position[0]) < 1e-15 d2 = d / sqrt(2) assert abs(a[1].position[1] - d2) < 1e-15 assert abs(a[1].position[2] - d2) < 1e-15 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/s22.py000066400000000000000000000001061316323560300224730ustar00rootroot00000000000000from ase.collections import s22 print(s22) for a in s22: print(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/scaled_positions.py000066400000000000000000000001451316323560300254320ustar00rootroot00000000000000from ase import Atoms assert Atoms('X', [(-1e-35, 0, 0)], pbc=True).get_scaled_positions()[0, 0] < 1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/scientificpython_bug.py000066400000000000000000000014561316323560300263150ustar00rootroot00000000000000from __future__ import print_function import sys import numpy as np msg = "\n'TypeError: array cannot be safely cast to required type'\n" msg += "means you are probably using a broken ScientficPython, \n" msg += "see: https://bugs.launchpad.net/ubuntu/+source/python-scientific/+bug/1041302\n" import Scientific.IO.NetCDF as netcdf import Scientific version = Scientific.__version__.split(".") print('Found ScientificPython version: ',Scientific.__version__) if list(map(int,version)) < [2,8]: print('ScientificPython 2.8 or greater required for numpy support in NetCDF') raise RuntimeError('ScientificPython version 2.8 or greater is requied') handle = netcdf.NetCDFFile("test.nc", "w") try: handle.test = np.array([1.0]) except TypeError: print(msg, file=sys.stderr) raise handle.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/set_get_angle.py000066400000000000000000000006321316323560300246710ustar00rootroot00000000000000"Test that set_angle() and get_angle() in Atoms are consistent" from ase import Atoms atoms = Atoms('HHCCHH', [[-1, 1, 0], [-1, -1, 0], [0, 0, 0], [1, 0, 0], [2, 1, 0], [2, -1, 0]]) list = [2, 3, 4] theta = 20 old_angle = atoms.get_angle(*list) atoms.set_angle(*list, angle=old_angle + theta) new_angle = atoms.get_angle(*list) assert abs(new_angle - (old_angle + theta)) < 1.0e-9 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/set_momenta.py000066400000000000000000000014731316323560300244100ustar00rootroot00000000000000"""Test that set_momenta behaves as expected when constraints are involved.""" import numpy as np from ase import Atoms, Atom from ase.constraints import Hookean, FixAtoms # FixAtoms check atoms = Atoms([Atom('H', (0., 0., 0.)), Atom('H', (2., 0., 0.))]) atoms.set_constraint(FixAtoms(indices=[0])) atoms.set_momenta(np.ones(atoms.get_momenta().shape)) desired = np.ones(atoms.get_momenta().shape) desired[0] = 0. actual = atoms.get_momenta() assert (actual == desired).all() # Hookean check atoms = Atoms([Atom('H', (0., 0., 0.)), Atom('H', (2., 0., 0.))]) atoms.set_constraint(Hookean(0, 1, rt=1., k=10.)) atoms.set_momenta(np.zeros(atoms.get_momenta().shape)) actual = atoms.get_momenta() desired = np.zeros(atoms.get_momenta().shape) # Disabled for now: # assert (actual == desired).all() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/000077500000000000000000000000001316323560300230065ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/__init__.py000066400000000000000000000000001316323560300251050ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/000077500000000000000000000000001316323560300247465ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/__init__.py000066400000000000000000000000001316323560300270450ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/raman_espresso/000077500000000000000000000000001316323560300277675ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/raman_espresso/README000066400000000000000000000005521316323560300306510ustar00rootroot00000000000000To Run the espresso calculation, you need: First to download the pseudo potential C.pw-mt_fhi.UPF and O.pw-mt_fhi.UPF from the Quantum espresso website, and to copy them into your pseudo directory of your espresso installation. then you run, pw.x co2.scf.out ph.x co2.ph.out dynmat.x co2.dm.out co2.dm.in000066400000000000000000000000541316323560300313210ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/raman_espresso &input fildyn='dmat.co2', asr='zero-dim' / co2.ph.in000066400000000000000000000003271316323560300313330ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/raman_espressoNormal modes for CO2 &inputph tr2_ph=1.0d-14, prefix='CO2', amass(1)=12.010, amass(2)=15.999, outdir='./' epsil=.true., trans=.true., lraman=.true., asr=.true. fildyn='dmat.co2' / 0.0 0.0 0.0 co2.scf.in000066400000000000000000000011031316323560300314700ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/raman_espresso&CONTROL calculation = "scf", prefix = "CO2", pseudo_dir = "/home/marc/programs/espresso-5.4.0/pseudo", outdir = "./", / &SYSTEM ibrav = 1, celldm(1) = 28.0, nat = 3, ntyp = 2, ecutwfc = 120.D0, !better 120 / &ELECTRONS conv_thr = 1.D-8, mixing_beta = 0.7, / &IONS / ATOMIC_SPECIES C 12.010 C.pw-mt_fhi.UPF O 15.999 O.pw-mt_fhi.UPF ATOMIC_POSITIONS (angstrom) C -0.009026 -0.020241 0.026760 O 1.167544 0.012723 0.071808 O -1.185592 -0.053316 -0.017945 K_POINTS (automatic) 1 1 1 0 0 0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/script_mbpt_lcao.py000066400000000000000000000047151316323560300306530ustar00rootroot00000000000000"""Example, in order to run you must place a pseudopotential 'Na.psf' in the folder""" from ase.units import Ry, eV from ase.calculators.siesta import Siesta from ase import Atoms import numpy as np import matplotlib.pyplot as plt # Define the systems Na8 = Atoms('Na8', positions=[[-1.90503810, 1.56107288, 0.00000000], [1.90503810, 1.56107288, 0.00000000], [1.90503810, -1.56107288, 0.00000000], [-1.90503810, -1.56107288, 0.00000000], [0.00000000, 0.00000000, 2.08495836], [0.00000000, 0.00000000, -2.08495836], [0.00000000, 3.22798122, 2.08495836], [0.00000000, 3.22798122, -2.08495836]], cell=[20, 20, 20]) # enter siesta input siesta = Siesta( mesh_cutoff=150 * Ry, basis_set='DZP', pseudo_qualifier='', energy_shift=(10 * 10**-3) * eV, fdf_arguments={ 'SCFMustConverge': False, 'COOP.Write': True, 'WriteDenchar': True, 'PAO.BasisType': 'split', 'DM.Tolerance': 1e-4, 'DM.MixingWeight': 0.01, 'MaxSCFIterations': 300, 'DM.NumberPulay': 4}) mbpt_inp = {'prod_basis_type': 'MIXED', 'solver_type': 1, 'gmres_eps': 0.001, 'gmres_itermax': 256, 'gmres_restart': 250, 'gmres_verbose': 20, 'xc_ord_lebedev': 14, 'xc_ord_gl': 48, 'nr': 512, 'akmx': 100, 'eigmin_local': 1e-06, 'eigmin_bilocal': 1e-08, 'freq_eps_win1': 0.15, 'd_omega_win1': 0.05, 'dt': 0.1, 'omega_max_win1': 5.0, 'ext_field_direction': 2, 'dr': np.array([0.3, 0.3, 0.3]), 'para_type': 'MATRIX', 'chi0_v_algorithm': 14, 'format_output': 'text', 'comp_dens_chng_and_polarizability': 1, 'store_dens_chng': 1, 'enh_given_volume_and_freq': 0, 'diag_hs': 0, 'do_tddft_tem': 0, 'do_tddft_iter': 1, 'plot_freq': 3.02, 'gwa_initialization': 'SIESTA_PB'} Na8.set_calculator(siesta) e = Na8.get_potential_energy() freq, pol = siesta.get_polarizability(mbpt_inp, format_output='txt', units='nm**2') # plot polarizability plt.plot(freq, pol[:, 0, 0].im) plt.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/mbpt_lcao/script_raman.py000066400000000000000000000043411316323560300300040ustar00rootroot00000000000000"""Example, in order to run you must place a pseudopotential 'Na.psf' in the folder""" from ase.units import Ry, eV from ase.calculators.siesta import Siesta from ase.calculators.siesta.siesta_raman import SiestaRaman from ase import Atoms import numpy as np # Define the systems # example of Raman calculation for CO2 molecule, # comparison with QE calculation can be done from # https://github.com/maxhutch/quantum-espresso/blob/master/PHonon/examples/example15/README CO2 = Atoms('CO2', positions=[[-0.009026, -0.020241, 0.026760], [1.167544, 0.012723, 0.071808], [-1.185592, -0.053316, -0.017945]], cell=[20, 20, 20]) # enter siesta input siesta = Siesta( mesh_cutoff=150 * Ry, basis_set='DZP', pseudo_qualifier='', energy_shift=(10 * 10**-3) * eV, fdf_arguments={ 'SCFMustConverge': False, 'COOP.Write': True, 'WriteDenchar': True, 'PAO.BasisType': 'split', 'DM.Tolerance': 1e-4, 'DM.MixingWeight': 0.01, 'MaxSCFIterations': 300, 'DM.NumberPulay': 4}) mbpt_inp = {'prod_basis_type': 'MIXED', 'solver_type': 1, 'gmres_eps': 0.001, 'gmres_itermax': 256, 'gmres_restart': 250, 'gmres_verbose': 20, 'xc_ord_lebedev': 14, 'xc_ord_gl': 48, 'nr': 512, 'akmx': 100, 'eigmin_local': 1e-06, 'eigmin_bilocal': 1e-08, 'freq_eps_win1': 0.15, 'd_omega_win1': 0.05, 'dt': 0.1, 'omega_max_win1': 5.0, 'ext_field_direction': 2, 'dr': np.array([0.3, 0.3, 0.3]), 'para_type': 'MATRIX', 'chi0_v_algorithm': 14, 'format_output': 'text', 'comp_dens_chng_and_polarizability': 1, 'store_dens_chng': 1, 'enh_given_volume_and_freq': 0, 'diag_hs': 0, 'do_tddft_tem': 0, 'do_tddft_iter': 1, 'plot_freq': 3.02, 'gwa_initialization': 'SIESTA_PB'} CO2.set_calculator(siesta) ram = SiestaRaman(CO2, siesta, mbpt_inp) ram.run() ram.summary(intensity_unit_ram='A^4 amu^-1') ram.write_spectra(start=200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/siesta.py000066400000000000000000000107251316323560300246550ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np from ase.units import Ry, eV from ase.calculators.siesta.siesta import Siesta from ase.calculators.siesta.parameters import Species, PAOBasisBlock from ase.calculators.calculator import FileIOCalculator from ase import Atoms from ase.utils import basestring # Create temporary directory for running tests. test_path = 'tmp_siesta' if not os.path.exists(test_path): os.makedirs(test_path) os.chdir(test_path) run_path = 'run_directory' pseudo_path = 'pseudos' if not os.path.exists(pseudo_path): os.makedirs(pseudo_path) if not os.path.exists(run_path): os.makedirs(run_path) # Make dummy pseudopotentials. for symbol in 'HCO': with open('{0}/{1}.lda.psf'.format(pseudo_path, symbol), 'w') as fd: fd.close() # Change to test directory. os.chdir(run_path) # Setup test structures. h = Atoms('H', [(0.0, 0.0, 0.0)]) co2 = Atoms('CO2', [(0.0, 0.0, 0.0), (-1.178, 0.0, 0.0), (1.178, 0.0, 0.0)]) ch4 = Atoms('CH4', np.array([ [0.000000, 0.000000, 0.000000], [0.682793, 0.682793, 0.682793], [-0.682793, -0.682793, 0.682790], [-0.682793, 0.682793, -0.682793], [0.682793, -0.682793, -0.682793]])) # Setup required environment variables. os.environ['SIESTA_PP_PATH'] = '../' + pseudo_path # Test the initialization. siesta = Siesta() assert isinstance(siesta, FileIOCalculator) assert isinstance(siesta.implemented_properties, tuple) assert isinstance(siesta.default_parameters, dict) assert isinstance(siesta.name, basestring) assert isinstance(siesta.default_parameters, dict) # Test simple fdf-argument case. atoms = h.copy() siesta = Siesta( label='test_label', fdf_arguments={'DM.Tolerance': 1e-3}) atoms.set_calculator(siesta) siesta.write_input(atoms, properties=['energy']) atoms = h.copy() atoms.set_calculator(siesta) siesta.write_input(atoms, properties=['energy']) with open('test_label.fdf', 'r') as f: lines = f.readlines() assert 'DM.Tolerance 0.001\n' == lines[0] # Test (slightly) more complex case of setting fdf-arguments. siesta = Siesta( label='test_label', mesh_cutoff=3000 * eV, fdf_arguments={ 'DM.Tolerance': 1e-3, 'ON.eta': 5 * Ry}) atoms.set_calculator(siesta) siesta.write_input(atoms, properties=['energy']) atoms = h.copy() atoms.set_calculator(siesta) siesta.write_input(atoms, properties=['energy']) with open('test_label.fdf', 'r') as f: lines = f.readlines() assert 'MeshCutoff 3000.0000 eV\n' in lines assert 'DM.Tolerance 0.001\n' in lines assert 'ON.eta 68.02846506 eV\n' in lines # Test setting fdf-arguments after initiation. siesta.set_fdf_arguments( {'DM.Tolerance': 1e-2, 'ON.eta': 2 * Ry}) siesta.write_input(atoms, properties=['energy']) with open('test_label.fdf', 'r') as f: lines = f.readlines() assert 'MeshCutoff 3000.0000 eV\n' in lines assert 'DM.Tolerance 0.01\n' in lines assert 'ON.eta 27.21138602 eV\n' in lines # Test initiation using Species. atoms = ch4.copy() species, numbers = siesta.species(atoms) assert all(numbers == np.array([1, 2, 2, 2, 2])) siesta = Siesta(species=[Species(symbol='C', tag=1)]) species, numbers = siesta.species(atoms) assert all(numbers == np.array([1, 2, 2, 2, 2])) atoms.set_tags([0, 0, 0, 1, 0]) species, numbers = siesta.species(atoms) assert all(numbers == np.array([1, 2, 2, 2, 2])) siesta = Siesta(species=[Species(symbol='H', tag=1, basis_set='SZ')]) species, numbers = siesta.species(atoms) assert all(numbers == np.array([1, 2, 2, 3, 2])) siesta = Siesta(label='test_label', species=species) siesta.write_input(atoms, properties=['energy']) with open('test_label.fdf', 'r') as f: lines = f.readlines() lines = [line.split() for line in lines] assert ['1', '6', 'C.lda.1'] in lines assert ['2', '1', 'H.lda.2'] in lines assert ['3', '1', 'H.lda.3'] in lines assert ['C.lda.1', 'DZP'] in lines assert ['H.lda.2', 'DZP'] in lines assert ['H.lda.3', 'SZ'] in lines # Test if PAO block can be given as species. c_basis = """2 nodes 1.00 0 1 S 0.20 P 1 0.20 6.00 5.00 1.00 1 2 S 0.20 P 1 E 0.20 6.00 6.00 5.00 1.00 0.95""" basis_set = PAOBasisBlock(c_basis) species = Species(symbol='C', basis_set=basis_set) siesta = Siesta(label='test_label', species=[species]) siesta.write_input(atoms, properties=['energy']) with open('test_label.fdf', 'r') as f: lines = f.readlines() lines = [line.split() for line in lines] assert ['%block', 'PAO.Basis'] in lines assert ['%endblock', 'PAO.Basis'] in lines # Remove the test directory. os.chdir('../..') os.system('rm -rf %s' % test_path) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/000077500000000000000000000000001316323560300255345ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/CH4/000077500000000000000000000000001316323560300261125ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/CH4/__init__.py000066400000000000000000000000001316323560300302110ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/CH4/script.py000066400000000000000000000024571316323560300300000ustar00rootroot00000000000000from ase.units import Ry, eV from ase.io import read from ase.calculators.siesta.parameters import Species, PAOBasisBlock from ase.calculators.siesta.siesta import Siesta from ase.optimize import QuasiNewton from ase import Atoms import numpy as np traj = 'bud.traj' try: bud = read(traj) except: bud = Atoms('CH4', np.array([ [0.000000, 0.000000, 0.100000], [0.682793, 0.682793, 0.682793], [-0.682793, -0.682793, 0.68279], [-0.682793, 0.682793, -0.682793], [0.682793, -0.682793, -0.682793]]), cell=[10, 10, 10]) c_basis = """2 nodes 1.00 0 1 S 0.20 P 1 0.20 6.00 5.00 1.00 1 2 S 0.20 P 1 E 0.20 6.00 6.00 5.00 1.00 0.95""" species = Species(symbol='C', basis_set=PAOBasisBlock(c_basis)) calc = Siesta( label='ch4', basis_set='SZ', xc='LYP', mesh_cutoff=300 * Ry, species=[species], restart='ch4.XV', ignore_bad_restart_file=True, fdf_arguments={'DM.Tolerance': 1E-5, 'DM.MixingWeight': 0.15, 'DM.NumberPulay': 3, 'MaxSCFIterations': 200, 'ElectronicTemperature': 0.02585 * eV, # 300 K 'SaveElectrostaticPotential': True}) bud.set_calculator(calc) dyn = QuasiNewton(bud, trajectory=traj) dyn.run(fmax=0.02) e = bud.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Charge/000077500000000000000000000000001316323560300267255ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Charge/script.py000066400000000000000000000014071316323560300306050ustar00rootroot00000000000000# In this script the Virtual Crystal approximation is used to model # a stronger affinity for positive charge on the H atoms. # This could model interaction with other molecules not explicitly # handled. import numpy as np from ase.calculators.siesta import Siesta from ase.calculators.siesta.parameters import Species from ase.optimize import QuasiNewton from ase import Atoms atoms = Atoms('CH4', np.array([ [0.000000, 0.000000, 0.000000], [0.682793, 0.682793, 0.682793], [-0.682793, -0.682793, 0.682790], [-0.682793, 0.682793, -0.682793], [0.682793, -0.682793, -0.682793]])) siesta = Siesta( species=[ Species(symbol='H', excess_charge=0.1)]) atoms.set_calculator(siesta) dyn = QuasiNewton(atoms, trajectory='h.traj') dyn.run(fmax=0.02) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/H2/000077500000000000000000000000001316323560300260055ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/H2/__init__.py000066400000000000000000000000001316323560300301040ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/H2/script.py000066400000000000000000000011571316323560300276670ustar00rootroot00000000000000from ase.calculators.siesta import Siesta from ase.calculators.siesta.parameters import Species, PAOBasisBlock from ase.optimize import QuasiNewton from ase import Atoms atoms = Atoms( '3H', [(0.0, 0.0, 0.0), (0.0, 0.0, 0.5), (0.0, 0.0, 1.0)], cell=[10, 10, 10]) basis_set = PAOBasisBlock( """1 0 2 S 0.2 0.0 0.0""") atoms.set_tags([0, 1, 0]) siesta = Siesta( species=[ Species(symbol='H', tag=None, basis_set='SZ'), Species(symbol='H', tag=1, basis_set=basis_set, ghost=True)]) atoms.set_calculator(siesta) dyn = QuasiNewton(atoms, trajectory='h.traj') dyn.run(fmax=0.02) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Na8/000077500000000000000000000000001316323560300261625ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Na8/__init__.py000066400000000000000000000000001316323560300302610ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Na8/script.py000066400000000000000000000026061316323560300300440ustar00rootroot00000000000000"""Example, in order to run you must place a pseudopotential 'Na.psf' in the folder""" from ase.units import Ry, eV from ase.calculators.siesta import Siesta from ase import Atoms Na8 = Atoms('Na8', positions=[[-1.90503810, 1.56107288, 0.00000000], [1.90503810, 1.56107288, 0.00000000], [1.90503810, -1.56107288, 0.00000000], [-1.90503810, -1.56107288, 0.00000000], [0.00000000, 0.00000000, 2.08495836], [0.00000000, 0.00000000, -2.08495836], [0.00000000, 3.22798122, 2.08495836], [0.00000000, 3.22798122, -2.08495836]], cell=[20, 20, 20]) siesta = Siesta( mesh_cutoff=150 * Ry, basis_set='DZP', energy_shift=(10 * 10**-3) * eV, fdf_arguments={ 'SCFMustConverge': False, 'COOP.Write': True, 'WriteDenchar': True, 'PAO.BasisType': 'split', 'DM.Tolerance': 1e-4, 'DM.MixingWeight': 0.01, 'MaxSCFIterations': 3, 'DM.NumberPulay': 4}) Na8.set_calculator(siesta) print(Na8.get_potential_energy()) print(siesta.results['fermi_energy']) print(siesta.results['dim'].natoms_interacting) print(siesta.results['pld'].cell) print(siesta.results['wfsx'].norbitals) for key in siesta.results['ion'].keys(): print(key, siesta.results['ion'][key].keys()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Si/000077500000000000000000000000001316323560300261075ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Si/__init__.py000066400000000000000000000000001316323560300302060ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/Si/script.py000066400000000000000000000014401316323560300277640ustar00rootroot00000000000000from __future__ import print_function from ase import Atoms from ase.calculators.siesta import Siesta from ase.units import Ry a0 = 5.43 bulk = Atoms('Si2', [(0, 0, 0), (0.25, 0.25, 0.25)], pbc=True) b = a0 / 2 bulk.set_cell([(0, b, b), (b, 0, b), (b, b, 0)], scale_atoms=True) calc = Siesta(label='Si', xc='PBE', mesh_cutoff=200 * Ry, energy_shift=0.01 * Ry, basis_set='DZ', kpts=[1, 2, 3], fdf_arguments={'DM.MixingWeight': 0.10, 'MaxSCFIterations': 10, 'DM.Tolerance': 0.1, }, ) bulk.set_calculator(calc) e = bulk.get_potential_energy() print(e) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/siesta/test_scripts/__init__.py000066400000000000000000000000001316323560300276330ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/singlepointcalc.py000066400000000000000000000025221316323560300252470ustar00rootroot00000000000000"""This test makes sure that the forces returned from a SinglePointCalculator are immutable. Previously, successive calls to atoms.get_forces(apply_constraint=x), with x alternating between True and False, would get locked into the constrained variation.""" from ase.build import fcc111 from ase.calculators.emt import EMT from ase.io import read from ase.constraints import FixAtoms def check_forces(): """Makes sure the unconstrained forces stay that way.""" forces = atoms.get_forces(apply_constraint=False) funconstrained = float(forces[0, 0]) forces = atoms.get_forces(apply_constraint=True) forces = atoms.get_forces(apply_constraint=False) funconstrained2 = float(forces[0, 0]) assert funconstrained2 == funconstrained atoms = fcc111('Cu', (2, 2, 1), vacuum=10.) atoms[0].x += 0.2 atoms.set_constraint(FixAtoms(indices=[atom.index for atom in atoms])) # First run the tes with EMT and save a force component. atoms.set_calculator(EMT()) check_forces() f = float(atoms.get_forces(apply_constraint=False)[0, 0]) # Save and reload with a SinglePointCalculator. atoms.write('singlepointtest.traj') atoms = read('singlepointtest.traj') check_forces() # Manually change a value. forces = atoms.get_forces(apply_constraint=False) forces[0, 0] = 42. forces = atoms.get_forces(apply_constraint=False) assert forces[0, 0] == f ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/stm.py000066400000000000000000000007641316323560300227020ustar00rootroot00000000000000from ase.calculators.test import make_test_dft_calculation from ase.dft.stm import STM atoms = make_test_dft_calculation() stm = STM(atoms, [0, 1, 2]) c = stm.get_averaged_current(-1.0, 4.5) x, y, h = stm.scan(-1.0, c) stm.write('stm.pckl') x, y, h2 = STM('stm.pckl').scan(-1, c) assert abs(h - h2).max() == 0 stm = STM(atoms, use_density=True) c = stm.get_averaged_current(42, 4.5) x, y = stm.linescan(42, c, [0, 0], [2, 2]) assert abs(x[-1] - 2 * 2**0.5) < 1e-13 assert abs(y[-1] - y[0]) < 1e-13 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/strain.py000066400000000000000000000014261316323560300233730ustar00rootroot00000000000000from math import sqrt from ase import Atoms from ase.constraints import StrainFilter from ase.optimize.mdmin import MDMin from ase.io import Trajectory try: from asap3 import EMT except ImportError: pass else: a = 3.6 b = a / 2 cu = Atoms('Cu', cell=[(0,b,b),(b,0,b),(b,b,0)], pbc=1) * (6, 6, 6) cu.set_calculator(EMT()) f = StrainFilter(cu, [1, 1, 1, 0, 0, 0]) opt = MDMin(f, dt=0.01) t = Trajectory('Cu.traj', 'w', cu) opt.attach(t) opt.run(0.001) # HCP: from ase.build import hcp0001 cu = hcp0001('Cu', (1, 1, 2), a=a / sqrt(2)) cu.cell[1,0] += 0.05 cu *= (6, 6, 3) cu.set_calculator(EMT()) f = StrainFilter(cu) opt = MDMin(f, dt=0.01) t = Trajectory('Cu.traj', 'w', cu) opt.attach(t) opt.run(0.01) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/strain_emt.py000066400000000000000000000007201316323560300242340ustar00rootroot00000000000000"""This test checks that the StrainFilter works using the default built-in EMT calculator.""" import numpy as np from ase.constraints import StrainFilter from ase.optimize.mdmin import MDMin from ase.calculators.emt import EMT from ase.build import bulk cu = bulk('Cu', 'fcc', a=3.6) class EMTPlus(EMT): def get_stress(self, atoms): return np.zeros(6) cu.set_calculator(EMTPlus()) f = StrainFilter(cu) opt = MDMin(f, dt=0.01) opt.run(0.1, steps=2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/stress.py000066400000000000000000000026701316323560300234200ustar00rootroot00000000000000from __future__ import division, print_function import numpy as np from ase.build import bulk from ase.calculators.lj import LennardJones from ase.constraints import UnitCellFilter from ase.optimize import MDMin # Theoretical infinite-cutoff LJ FCC unit cell parameters vol0 = 4 * 0.91615977036 # theoretical minimum a0 = vol0**(1 / 3) a = bulk('X', 'fcc', a=a0) cell0 = a.get_cell() a.calc = LennardJones() a.set_cell(np.dot(a.cell, [[1.02, 0, 0.03], [0, 0.99, -0.02], [0.1, -0.01, 1.03]]), scale_atoms=True) a *= (1, 2, 3) cell0 *= np.array([1, 2, 3])[:, np.newaxis] a.rattle() # Verify analytical stress tensor against numerical value s_analytical = a.get_stress() s_numerical = a.calc.calculate_numerical_stress(a, 1e-5) s_p_err = 100 * (s_numerical - s_analytical) / s_numerical print("Analytical stress:\n", s_analytical) print("Numerical stress:\n", s_numerical) print("Percent error in stress:\n", s_p_err) assert np.all(abs(s_p_err) < 1e-5) # Minimize unit cell opt = MDMin(UnitCellFilter(a), dt=0.01) opt.run(fmax=1e-3) # Verify minimized unit cell using Niggli tensors g_minimized = np.dot(a.cell, a.cell.T) g_theory = np.dot(cell0, cell0.T) g_p_err = 100 * (g_minimized - g_theory) / g_theory print("Minimized Niggli tensor:\n", g_minimized) print("Theoretical Niggli tensor:\n", g_theory) print("Percent error in Niggli tensor:\n", g_p_err) assert np.all(abs(g_p_err) < 1) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/surface.py000066400000000000000000000014241316323560300235210ustar00rootroot00000000000000import numpy as np from ase import Atoms, Atom from ase.build import fcc111, fcc211, add_adsorbate atoms = fcc211('Au', (3, 5, 8), vacuum=10.) assert len(atoms) == 120 atoms = atoms.repeat((2, 1, 1)) assert np.allclose(atoms.get_distance(0, 130), 2.88499566724) atoms = fcc111('Ni', (2, 2, 4), orthogonal=True) add_adsorbate(atoms, 'H', 1, 'bridge') add_adsorbate(atoms, Atom('O'), 1, 'fcc') add_adsorbate(atoms, Atoms('F'), 1, 'hcp') # The next test ensures that a simple string of multiple atoms cannot be used, # which should fail with a KeyError that reports the name of the molecule due # to the string failing to work with Atom(). failed = False try: add_adsorbate(atoms, 'CN', 1, 'ontop') except KeyError as e: failed = True assert e.args[0] == 'CN' assert failed ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/thermochemistry.py000066400000000000000000000044251316323560300253230ustar00rootroot00000000000000"""Tests of the major methods (HarmonicThermo, IdealGasThermo, CrystalThermo) from the thermochemistry module.""" from ase import Atoms from ase.build import fcc100, add_adsorbate from ase.build import bulk from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.vibrations import Vibrations from ase.phonons import Phonons from ase.thermochemistry import (IdealGasThermo, HarmonicThermo, CrystalThermo) from ase.calculators.emt import EMT # Ideal gas thermo. atoms = Atoms('N2', positions=[(0, 0, 0), (0, 0, 1.1)], calculator=EMT()) QuasiNewton(atoms).run(fmax=0.01) energy = atoms.get_potential_energy() vib = Vibrations(atoms, name='idealgasthermo-vib') vib.run() vib_energies = vib.get_energies() thermo = IdealGasThermo(vib_energies=vib_energies, geometry='linear', atoms=atoms, symmetrynumber=2, spin=0, potentialenergy=energy) thermo.get_gibbs_energy(temperature=298.15, pressure=2 * 101325.) # Harmonic thermo. atoms = fcc100('Cu', (2, 2, 2), vacuum=10.) atoms.set_calculator(EMT()) add_adsorbate(atoms, 'Pt', 1.5, 'hollow') atoms.set_constraint(FixAtoms(indices=[atom.index for atom in atoms if atom.symbol == 'Cu'])) QuasiNewton(atoms).run(fmax=0.01) vib = Vibrations(atoms, name='harmonicthermo-vib', indices=[atom.index for atom in atoms if atom.symbol != 'Cu']) vib.run() vib.summary() vib_energies = vib.get_energies() thermo = HarmonicThermo(vib_energies=vib_energies, potentialenergy=atoms.get_potential_energy()) thermo.get_helmholtz_energy(temperature=298.15) # Crystal thermo. atoms = bulk('Al', 'fcc', a=4.05) calc = EMT() atoms.set_calculator(calc) energy = atoms.get_potential_energy() # Phonon calculator N = 7 ph = Phonons(atoms, calc, supercell=(N, N, N), delta=0.05) ph.run() ph.read(acoustic=True) phonon_energies, phonon_DOS = ph.dos(kpts=(4, 4, 4), npts=30, delta=5e-4) thermo = CrystalThermo(phonon_energies=phonon_energies, phonon_DOS=phonon_DOS, potentialenergy=energy, formula_units=4) thermo.get_helmholtz_energy(temperature=298.15) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/things.py000066400000000000000000000010671316323560300233700ustar00rootroot00000000000000from ase.dft.kpoints import monkhorst_pack assert [0, 0, 0] in monkhorst_pack((1, 3, 5)).tolist() assert [0, 0, 0] not in monkhorst_pack((1, 3, 6)).tolist() assert len(monkhorst_pack((3, 4, 6))) == 3 * 4 * 6 from ase.units import Hartree, Bohr, kJ, mol, kcal, kB, fs print(Hartree, Bohr, kJ/mol, kcal/mol, kB*300, fs, 1/fs) from ase.build import bulk hcp = bulk('X', 'hcp', a=1) * (2, 2, 1) assert abs(hcp.get_distance(0, 3, mic=True) - 1) < 1e-12 assert abs(hcp.get_distance(0, 4, mic=True) - 1) < 1e-12 assert abs(hcp.get_distance(2, 5, mic=True) - 1) < 1e-12 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/tip4p.py000066400000000000000000000013201316323560300231240ustar00rootroot00000000000000"""Test TIP4P forces.""" from math import cos, sin from ase import Atoms from ase.calculators.tip4p import TIP4P, rOH, angleHOH r = rOH a = angleHOH dimer = Atoms('H2OH2O', [(r * cos(a), 0, r * sin(a)), (r, 0, 0), (0, 0, 0), (r * cos(a / 2), r * sin(a / 2), 0), (r * cos(a / 2), -r * sin(a / 2), 0), (0, 0, 0)]) # tip4p sequence OHH, OHH, .. dimer = dimer[[2]]+dimer[:2]+dimer[[-1]]+dimer[3:5] dimer.positions[3:, 0] += 2.8 dimer.calc = TIP4P(rc=4.0, width=2.0) # put O-O distance in the cutoff range F = dimer.get_forces() print(F) dF = dimer.calc.calculate_numerical_forces(dimer) - F print(dF) assert abs(dF).max() < 2e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/tipnp.py000066400000000000000000000014161316323560300232240ustar00rootroot00000000000000"""Test TIP3P forces.""" from math import cos, sin, pi from ase import Atoms from ase.calculators.tip3p import TIP3P, rOH, angleHOH from ase.calculators.tip4p import TIP4P r = rOH a = angleHOH * pi / 180 dimer = Atoms('H2OH2O', [(r * cos(a), 0, r * sin(a)), (r, 0, 0), (0, 0, 0), (r * cos(a / 2), r * sin(a / 2), 0), (r * cos(a / 2), -r * sin(a / 2), 0), (0, 0, 0)]) dimer = dimer[[2, 0, 1, 5, 3, 4]] dimer.positions[3:, 0] += 2.8 for TIPnP in [TIP3P, TIP4P]: # put O-O distance in the cutoff range dimer.calc = TIPnP(rc=4.0, width=2.0) F = dimer.get_forces() print(F) dF = dimer.calc.calculate_numerical_forces(dimer) - F print(dF) assert abs(dF).max() < 2e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/000077500000000000000000000000001316323560300235265ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/__init__.py000066400000000000000000000000001316323560300256250ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_2h2o.py000066400000000000000000000052431316323560300267460ustar00rootroot00000000000000"""Water dimer calculation in which each molecule is calculated quantum mechanically and the interaction between the molecules is electrostatic. The process is repeated until self consitence. """ from numpy.linalg import norm from ase.collections import s22 from ase.calculators.turbomole import Turbomole def polarization_cycle(partition_1, partition_2, charges_2=None): """Performs an iteration of a polarization calculation.""" properties = {} calc = Turbomole(atoms=partition_1, **params) if charges_2 is not None: calc.embed(charges=charges_2, positions=partition_2.positions) properties['e1'] = partition_1.get_potential_energy() properties['c1'] = partition_1.get_charges() calc = Turbomole(atoms=partition_2, **params) calc.embed(charges=properties['c1'], positions=partition_1.positions) properties['e2'] = partition_2.get_potential_energy() properties['c2'] = partition_2.get_charges() return properties params = {'esp fit': 'kollman', 'multiplicity': 1} dimer = s22['Water_dimer'] # system partitioning part1 = dimer[0:3] part2 = dimer[3:6] new = polarization_cycle(part1, part2) prop = {'e1': [], 'e2': [], 'c1': [], 'c2': []} for key in prop: prop[key].append(new[key]) # start values and convergence criteria conv = {'e': [1.0], 'c': [1.0]} thres = {'e': 1e-4, 'c': 1e-2} iteration = 0 while any([conv[key][-1] > thres[key] for key in conv]): iteration += 1 new = polarization_cycle(part1, part2, charges_2=prop['c2'][-1]) for key in prop: prop[key].append(new[key]) (new1, old1) = (prop['e1'][-1], prop['e1'][-2]) (new2, old2) = (prop['e2'][-1], prop['e2'][-2]) conv['e'].append((abs(new1 - old1) + abs(new2 - old2)) / (abs(old1) + abs(old2))) (new1, old1) = (prop['c1'][-1], prop['c1'][-2]) (new2, old2) = (prop['c2'][-1], prop['c2'][-2]) conv['c'].append((norm(new1 - old1) + norm(new2 - old2)) / (norm(old1) + norm(old2))) fmt = 'iteration {0:d}: convergence of energy {1:10e}; of charges {2:10e}' print(fmt.format(iteration, conv['e'][-1], norm(conv['c'][-1]))) # check the result ref = { 'e1': -2077.7082947500003, 'e2': -2077.3347674372353, 'c1': [-0.133033, 0.238218, -0.105186], 'c2': [-0.844336, 0.422151, 0.422184] } dev = {} for key in ref: val = prop[key][-1] measurement = val if isinstance(val, float) else norm(val) reference = ref[key] if isinstance(ref[key], float) else norm(ref[key]) dev[key] = (measurement - reference) / reference print('Deviation of {0} is {1:10f}'.format(key, dev[key])) # allow deviations of up to 5% assert all([dev[key] < 5e-2 for key in dev]), 'deviation too large' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_H2.py000066400000000000000000000005451316323560300264450ustar00rootroot00000000000000from ase import Atoms from ase.calculators.turbomole import Turbomole atoms = Atoms('H2', positions=[(0, 0, 0), (0, 0, 1.1)]) # Write all commands for the define command in a string define_str = '\n\na coord\n*\nno\nb all sto-3g hondo\n*\neht\n\n\n\n*' atoms.set_calculator(Turbomole(define_str=define_str)) # Run turbomole atoms.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_au13.py000066400000000000000000000024131316323560300267410ustar00rootroot00000000000000from __future__ import print_function from ase.cluster.cubic import FaceCenteredCubic from ase.calculators.turbomole import Turbomole surfaces = [(1, 0, 0), (1, 1, 0), (1, 1, 1)] layers = [1, 2, 1] atoms = FaceCenteredCubic('Au', surfaces, layers, latticeconstant=4.08) params = { 'title': 'Au13-', 'task': 'energy', 'basis set name': 'def2-SV(P)', 'total charge': -1, 'multiplicity': 1, 'use dft': True, 'density functional': 'pbe', 'use resolution of identity': True, 'ri memory': 1000, 'use fermi smearing': True, 'fermi initial temperature': 500, 'fermi final temperature': 100, 'fermi annealing factor': 0.9, 'fermi homo-lumo gap criterion': 0.09, 'fermi stopping criterion': 0.002, 'scf energy convergence': 1.e-4, 'maximum number of scf iterations': 250 } calc = Turbomole(**params) atoms.set_calculator(calc) calc.calculate(atoms) # use the get_property() method print(calc.get_property('energy')) print(calc.get_property('dipole')) # test restart params = { 'task': 'gradient', 'scf energy convergence': 1.e-6 } calc = Turbomole(restart=True, **params) assert calc.converged calc.calculate() print(calc.get_property('energy')) print(calc.get_property('forces')) print(calc.get_property('dipole')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_h2o.py000066400000000000000000000025371316323560300266670ustar00rootroot00000000000000from __future__ import print_function from ase.calculators.turbomole import Turbomole from ase.build import molecule mol = molecule('H2O') params = { 'title': 'water', 'task': 'geometry optimization', 'use redundant internals': True, 'basis set name': 'def2-SV(P)', 'total charge': 0, 'multiplicity': 1, 'use dft': True, 'density functional': 'b3-lyp', 'use resolution of identity': True, 'ri memory': 1000, 'force convergence': 0.001, 'geometry iterations': 50, 'maximum number of scf iterations': 100 } calc = Turbomole(**params) mol.set_calculator(calc) calc.calculate(mol) assert calc.converged # use the get_property() method print(calc.get_property('energy', mol, False)) print(calc.get_property('forces', mol, False)) print(calc.get_property('dipole', mol, False)) # use the get_results() method results = calc.get_results() print(results['molecular orbitals']) # use the __getitem__() method print(calc['results']['molecular orbitals']) print(calc['results']['geometry optimization history']) # perform a normal mode calculation with the optimized structure params.update({ 'task': 'normal mode analysis', 'density convergence': 1.0e-7 }) calc = Turbomole(**params) mol.set_calculator(calc) calc.calculate(mol) print(calc['results']['vibrational spectrum']) print(calc.todict(skip_default=False)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_h3o2m.py000066400000000000000000000041731316323560300271250ustar00rootroot00000000000000from math import radians, sin, cos from ase import Atoms from ase.neb import NEB from ase.constraints import FixAtoms from ase.optimize import QuasiNewton, BFGS from ase.visualize import view from ase.calculators.turbomole import Turbomole # http://jcp.aip.org/resource/1/jcpsa6/v97/i10/p7507_s1 doo = 2.74 doht = 0.957 doh = 0.977 angle = radians(104.5) initial = Atoms('HOHOH', positions=[(-sin(angle) * doht, 0., cos(angle) * doht), (0., 0., 0.), (0., 0., doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(initial) final = Atoms('HOHOH', positions=[(- sin(angle) * doht, 0., cos(angle) * doht), (0., 0., 0.), (0., 0., doo - doh), (0., 0., doo), (sin(angle) * doht, 0., doo - cos(angle) * doht)]) if 0: view(final) # Make band: images = [initial.copy()] for i in range(3): images.append(initial.copy()) images.append(final.copy()) neb = NEB(images, climb=True) # Write all commands for the define command in a string define_str = ('\n\na coord\n\n*\nno\nb all 3-21g ' 'hondo\n*\neht\n\n-1\nno\ns\n*\n\ndft\non\nfunc ' 'pwlda\n\n\nscf\niter\n300\n\n*') # Set constraints and calculator: constraint = FixAtoms(indices=[1, 3]) # fix OO BUG No.1: fixes atom 0 and 1 # constraint = FixAtoms(mask=[0,1,0,1,0]) # fix OO #Works without patch for image in images: image.set_calculator(Turbomole(define_str=define_str)) image.set_constraint(constraint) # Relax initial and final states: if 1: dyn1 = QuasiNewton(images[0]) dyn1.run(fmax=0.10) dyn2 = QuasiNewton(images[-1]) dyn2.run(fmax=0.10) # Interpolate positions between initial and final states: neb.interpolate() if 1: for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) dyn = BFGS(neb, trajectory='turbomole_h3o2m.traj') dyn.run(fmax=0.10) for image in images: print(image.get_distance(1, 2), image.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/turbomole/turbomole_qmmm.py000066400000000000000000000045041316323560300271420ustar00rootroot00000000000000"""Test the Turbomole calculator in simple QMMM and explicit interaction QMMM simulations.""" from math import cos, sin, pi import numpy as np from ase import Atoms from ase.calculators.tip3p import TIP3P, epsilon0, sigma0, rOH, angleHOH from ase.calculators.qmmm import SimpleQMMM, EIQMMM, LJInteractions from ase.calculators.turbomole import Turbomole from ase.constraints import FixInternals from ase.optimize import BFGS r = rOH a = angleHOH * pi / 180 D = np.linspace(2.5, 3.5, 30) interaction = LJInteractions({('O', 'O'): (epsilon0, sigma0)}) qm_par = {'esp fit': 'kollman', 'multiplicity': 1} for calc in [ TIP3P(), SimpleQMMM([0, 1, 2], Turbomole(**qm_par), TIP3P(), TIP3P()), SimpleQMMM([0, 1, 2], Turbomole(**qm_par), TIP3P(), TIP3P(), vacuum=3.0), EIQMMM([0, 1, 2], Turbomole(**qm_par), TIP3P(), interaction), EIQMMM([3, 4, 5], Turbomole(**qm_par), TIP3P(), interaction, vacuum=3.0), EIQMMM([0, 1, 2], Turbomole(**qm_par), TIP3P(), interaction, vacuum=3.0)]: dimer = Atoms('H2OH2O', [(r * cos(a), 0, r * sin(a)), (r, 0, 0), (0, 0, 0), (r * cos(a / 2), r * sin(a / 2), 0), (r * cos(a / 2), -r * sin(a / 2), 0), (0, 0, 0)]) dimer.calc = calc E = [] F = [] for d in D: dimer.positions[3:, 0] += d - dimer.positions[5, 0] E.append(dimer.get_potential_energy()) F.append(dimer.get_forces()) F = np.array(F) # plt.plot(D, E) F1 = np.polyval(np.polyder(np.polyfit(D, E, 7)), D) F2 = F[:, :3, 0].sum(1) error = abs(F1 - F2).max() dimer.constraints = FixInternals( bonds=[(r, (0, 2)), (r, (1, 2)), (r, (3, 5)), (r, (4, 5))], angles=[(a, (0, 2, 1)), (a, (3, 5, 4))]) opt = BFGS(dimer, trajectory=calc.name + '.traj', logfile=calc.name + 'd.log') opt.run(0.01) e0 = dimer.get_potential_energy() d0 = dimer.get_distance(2, 5) R = dimer.positions v1 = R[1] - R[5] v2 = R[5] - (R[3] + R[4]) / 2 a0 = np.arccos(np.dot(v1, v2) / (np.dot(v1, v1) * np.dot(v2, v2))**0.5) / np.pi * 180 fmt = '{0:>20}: {1:.3f} {2:.3f} {3:.3f} {4:.1f}' print(fmt.format(calc.name, -min(E), -e0, d0, a0)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/unitcellfilter.py000066400000000000000000000016251316323560300251210ustar00rootroot00000000000000from math import sqrt from ase import Atoms from ase.optimize import LBFGS from ase.constraints import UnitCellFilter from ase.io import Trajectory from ase.optimize.mdmin import MDMin try: from asap3 import EMT except ImportError: pass else: a = 3.6 b = a / 2 cu = Atoms('Cu', cell=[(0, b, b), (b, 0, b), (b, b, 0)], pbc=1) * (6, 6, 6) cu.set_calculator(EMT()) f = UnitCellFilter(cu, [1, 1, 1, 0, 0, 0]) opt = LBFGS(f) t = Trajectory('Cu-fcc.traj', 'w', cu) opt.attach(t) opt.run(5.0) # HCP: from ase.build import hcp0001 cu = hcp0001('Cu', (1, 1, 2), a=a / sqrt(2)) cu.cell[1, 0] += 0.05 cu *= (6, 6, 3) cu.set_calculator(EMT()) print(cu.get_forces()) print(cu.get_stress()) f = UnitCellFilter(cu) opt = MDMin(f, dt=0.01) t = Trajectory('Cu-hcp.traj', 'w', cu) opt.attach(t) opt.run(0.2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/unitcellfilter2.py000066400000000000000000000011241316323560300251750ustar00rootroot00000000000000import numpy as np from ase.build import bulk from ase.calculators.test import gradient_test from ase.calculators.lj import LennardJones from ase.constraints import UnitCellFilter a0 = bulk('Cu', cubic=True) # perturb the atoms s = a0.get_scaled_positions() s[:, 0] *= 0.995 a0.set_scaled_positions(s) # perturb the cell a0.cell[...] += np.random.uniform(-1e-2, 1e-2, size=9).reshape((3,3)) atoms = a0.copy() atoms.set_calculator(LennardJones()) ucf = UnitCellFilter(atoms) # test all deritatives f, fn = gradient_test(ucf) assert abs(f - fn).max() < 1e-6 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/units.py000066400000000000000000000043371316323560300232410ustar00rootroot00000000000000"""This test cross-checks our implementation of CODATA against the implementation that SciPy brings with it. """ def test_units(): import numpy as np from ase.units import CODATA import scipy.constants.codata name_map = {'_c': 'speed of light in vacuum', '_mu0': 'mag. const.', '_Grav': 'Newtonian constant of gravitation', '_hplanck': 'Planck constant', '_e': 'elementary charge', '_me': 'electron mass', '_mp': 'proton mass', '_Nav': 'Avogadro constant', '_k': 'Boltzmann constant', '_amu': 'atomic mass unit-kilogram relationship'} for version in sorted(CODATA.keys()): print('Checking CODATA version "{0}"'.format(version)) try: scipy_CODATA = getattr(scipy.constants.codata, '_physical_constants_{0}'.format(version)) except AttributeError: print('\tNot available through scipy, skipping') continue for unit, scipyname in name_map.items(): aseval = CODATA[version][unit] try: scipyval = scipy_CODATA[name_map[unit]][0] msg = 'Unit "{0}" : '.format(name_map[unit]) ok = True if np.isclose(aseval, scipyval): msg += '[OK]' else: msg += '[FALSE]' ok = False print('\t' + msg) if not ok: raise AssertionError except KeyError: # 2002 in scipy contains too little data continue def test_create_units(): """Check that units are created and allow attribute access.""" import ase.units print('Checking create_units and attribute access') # just use current CODATA version new_units = ase.units.create_units(ase.units.__codata_version__) assert new_units.eV == new_units['eV'] == ase.units.eV for unit_name in new_units.keys(): assert getattr(new_units, unit_name) == getattr(ase.units, unit_name) assert new_units[unit_name] == getattr(ase.units, unit_name) test_units() test_create_units() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vacancy.py000066400000000000000000000021441316323560300235150ustar00rootroot00000000000000from ase import Atoms from ase.optimize import QuasiNewton from ase.neb import NEB from ase.optimize.mdmin import MDMin try: from asap3 import EMT except ImportError: pass else: a = 3.6 b = a / 2 initial = Atoms('Cu4', positions=[(0, 0, 0), (0, b, b), (b, 0, b), (b, b, 0)], cell=(a, a, a), pbc=True) initial *= (4, 4, 4) del initial[0] images = [initial] + [initial.copy() for i in range(6)] images[-1].positions[0] = (0, 0, 0) for image in images: image.set_calculator(EMT()) #image.set_calculator(ASAP()) for image in [images[0], images[-1]]: QuasiNewton(image).run(fmax=0.01) neb = NEB(images) neb.interpolate() for a in images: print(a.positions[0], a.get_potential_energy()) dyn = MDMin(neb, dt=0.1, trajectory='mep1.traj') #dyn = QuasiNewton(neb) print(dyn.run(fmax=0.01, steps=25)) for a in images: print(a.positions[0], a.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/000077500000000000000000000000001316323560300224675ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/__init__.py000066400000000000000000000004171316323560300246020ustar00rootroot00000000000000def installed(): import os from ase.test import NotAvailable vcmd = os.getenv('VASP_COMMAND') vscr = os.getenv('VASP_SCRIPT') if vcmd == None and vscr == None: raise NotAvailable('Neither VASP_COMMAND nor VASP_SCRIPT defined') return True ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_Al_volrelax.py000066400000000000000000000042461316323560300263500ustar00rootroot00000000000000""" Run VASP tests to ensure that relaxation with the VASP calculator works. This is conditional on the existence of the VASP_COMMAND or VASP_SCRIPT environment variables. """ from ase.test.vasp import installed assert installed() import numpy as np from ase import io # QuasiNewton nowadays is an alias for BFGSLineSearch, which is # broken. Use BFGS instead. from ase.optimize import BFGS as QuasiNewton from ase.build import bulk from ase.calculators.vasp import Vasp # -- Perform Volume relaxation within Vasp def vasp_vol_relax(): Al = bulk('Al', 'fcc', a=4.5, cubic=True) calc = Vasp(xc='LDA', isif=7, nsw=5, ibrion=1, ediffg=-1e-3, lwave=False, lcharg=False) calc.calculate(Al) # Explicitly parse atomic position output file from Vasp CONTCAR_Al = io.read('CONTCAR', format='vasp') print('Stress after relaxation:\n', calc.read_stress()) print('Al cell post relaxation from calc:\n', calc.get_atoms().get_cell()) print('Al cell post relaxation from atoms:\n', Al.get_cell()) print('Al cell post relaxation from CONTCAR:\n', CONTCAR_Al.get_cell()) # All the cells should be the same. assert (calc.get_atoms().get_cell() == CONTCAR_Al.get_cell()).all() assert (Al.get_cell() == CONTCAR_Al.get_cell()).all() return Al # -- Perform Volume relaxation using ASE with Vasp as force/stress calculator def ase_vol_relax(): Al = bulk('Al', 'fcc', a=4.5, cubic=True) calc = Vasp(xc='LDA') Al.set_calculator(calc) from ase.constraints import StrainFilter sf = StrainFilter(Al) qn = QuasiNewton(sf, logfile='relaxation.log') qn.run(fmax=0.1, steps=5) print('Stress:\n', calc.read_stress()) print('Al post ASE volume relaxation\n', calc.get_atoms().get_cell()) return Al # Test function for comparing two cells def cells_almost_equal(cellA, cellB, tol=0.01): return (np.abs(cellA - cellB) < tol).all() # Correct LDA relaxed cell a_rel = 4.18 LDA_cell = np.diag([a_rel, a_rel, a_rel]) Al_vasp = vasp_vol_relax() Al_ase = ase_vol_relax() assert cells_almost_equal(LDA_cell, Al_vasp.get_cell()) assert cells_almost_equal(LDA_cell, Al_ase.get_cell()) # Cleanup Al_ase.get_calculator().clean() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_cell.py000066400000000000000000000004761316323560300250200ustar00rootroot00000000000000""" Check the unit cell is handled correctly """ from ase.calculators.vasp import Vasp from ase.build import molecule from ase.test import must_raise # Molecules come with no unit cell atoms = molecule('CH4') calc = Vasp() with must_raise(ValueError): atoms.set_calculator(calc) atoms.get_total_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_co.py000066400000000000000000000032421316323560300244740ustar00rootroot00000000000000""" Run some VASP tests to ensure that the VASP calculator works. This is conditional on the existence of the VASP_COMMAND or VASP_SCRIPT environment variables """ from ase.test.vasp import installed assert installed() from ase import Atoms from ase.io import write from ase.calculators.vasp import Vasp import numpy as np def array_almost_equal(a1, a2, tol=np.finfo(type(1.0)).eps): """Replacement for old numpy.testing.utils.array_almost_equal.""" return (np.abs(a1 - a2) < tol).all() d = 1.14 co = Atoms('CO', positions=[(0, 0, 0), (0, 0, d)], pbc=True) co.center(vacuum=5.) calc = Vasp( xc = 'PBE', prec = 'Low', algo = 'Fast', ismear= 0, sigma = 1., istart = 0, lwave = False, lcharg = False) co.set_calculator(calc) en = co.get_potential_energy() write('vasp_co.traj', co) assert abs(en + 14.918933) < 5e-3 # Secondly, check that restart from the previously created VASP output works calc2 = Vasp(restart=True) co2 = calc2.get_atoms() # Need tolerance of 1e-14 because VASP itself changes coordinates # slightly between reading POSCAR and writing CONTCAR even if no ionic # steps are made. assert array_almost_equal(co.positions, co2.positions, 1e-14) assert en - co2.get_potential_energy() == 0. assert array_almost_equal(calc.get_stress(co), calc2.get_stress(co2)) assert array_almost_equal(calc.get_forces(co), calc2.get_forces(co2)) assert array_almost_equal(calc.get_eigenvalues(), calc2.get_eigenvalues()) assert calc.get_number_of_bands() == calc2.get_number_of_bands() assert calc.get_xc_functional() == calc2.get_xc_functional() # Cleanup calc.clean() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_kpoints.py000066400000000000000000000046301316323560300255640ustar00rootroot00000000000000""" Check the many ways of specifying KPOINTS """ import os import filecmp from ase.calculators.vasp import Vasp from ase.build import bulk Al = bulk('Al', 'fcc', a=4.5, cubic=True) def check_kpoints_line(n, contents): """Assert the contents of a line""" with open('KPOINTS', 'r') as f: lines = f.readlines() assert lines[n] == contents # Default to (1 1 1) calc = Vasp(gamma=True) calc.write_kpoints() check_kpoints_line(2, 'Gamma\n') check_kpoints_line(3, '1 1 1 \n') calc.clean() # 3-tuple prints mesh calc = Vasp(gamma=False, kpts=(4, 4, 4)) calc.write_kpoints() check_kpoints_line(2, 'Monkhorst-Pack\n') check_kpoints_line(3, '4 4 4 \n') calc.clean() # Auto mode calc = Vasp(kpts=20) calc.write_kpoints() check_kpoints_line(1, '0\n') check_kpoints_line(2, 'Auto\n') check_kpoints_line(3, '20 \n') calc.clean() # 1-element list ok, Gamma ok calc = Vasp(kpts=[20], gamma=True) calc.write_kpoints() check_kpoints_line(1, '0\n') check_kpoints_line(2, 'Auto\n') check_kpoints_line(3, '20 \n') calc.clean() # KSPACING suppresses KPOINTS file calc = Vasp(kspacing=0.23) calc.initialize(Al) calc.write_kpoints() calc.write_incar(Al) assert not os.path.isfile('KPOINTS') with open('INCAR', 'r') as f: assert ' KSPACING = 0.230000\n' in f.readlines() calc.clean() # Negative KSPACING raises an error calc = Vasp(kspacing=-0.5) try: calc.write_kpoints() except ValueError: pass else: raise AssertionError("Negative KSPACING did not raise ValueError") calc.clean() # Explicit weighted points with nested lists, Cartesian if not specified calc = Vasp( kpts=[[0.1, 0.2, 0.3, 2], [0.0, 0.0, 0.0, 1], [0.0, 0.5, 0.5, 2]]) calc.write_kpoints() with open('KPOINTS.ref', 'w') as f: f.write("""KPOINTS created by Atomic Simulation Environment 3 Cartesian 0.100000 0.200000 0.300000 2.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.500000 0.500000 2.000000 """) assert filecmp.cmp('KPOINTS', 'KPOINTS.ref') os.remove('KPOINTS.ref') # Explicit points as list of tuples, automatic weighting = 1. calc = Vasp( kpts=[(0.1, 0.2, 0.3), (0.0, 0.0, 0.0), (0.0, 0.5, 0.5)], reciprocal=True) calc.write_kpoints() with open('KPOINTS.ref', 'w') as f: f.write("""KPOINTS created by Atomic Simulation Environment 3 Reciprocal 0.100000 0.200000 0.300000 1.0 0.000000 0.000000 0.000000 1.0 0.000000 0.500000 0.500000 1.0 """) assert filecmp.cmp('KPOINTS', 'KPOINTS.ref') os.remove('KPOINTS.ref') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_xc.py000066400000000000000000000014321316323560300245040ustar00rootroot00000000000000""" Run some tests to ensure that the xc setting in the VASP calculator works. """ from ase.calculators.vasp import Vasp def dict_is_subset(d1, d2): """True if all the key-value pairs in dict 1 are in dict 2""" for key, value in d1.items(): if key not in d2: return False elif d2[key] != value: return False else: return True calc_vdw = Vasp(xc='optb86b-vdw') assert dict_is_subset({'param1': 0.1234, 'param2': 1.0}, calc_vdw.float_params) calc_hse = Vasp(xc='hse06', hfscreen=0.1, gga='RE', encut=400, sigma=0.5) assert dict_is_subset({'hfscreen': 0.1, 'encut': 400, 'sigma': 0.5}, calc_hse.float_params) assert dict_is_subset({'gga': 'RE'}, calc_hse.string_params) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vasp/vasp_xml.py000066400000000000000000000040201316323560300246660ustar00rootroot00000000000000""" Run some VASP tests to ensure that the VASP calculator works. This is conditional on the existence of the VASP_COMMAND or VASP_SCRIPT environment variables """ from ase.test import NotAvailable from ase.test.vasp import installed from ase import Atoms from ase.calculators.vasp import Vasp from ase.io import read import numpy as np import sys def main(): if sys.version_info < (2, 7): raise NotAvailable('read_xml requires Python version 2.7 or greater') assert installed() # simple test calculation of CO molecule d = 1.14 co = Atoms('CO', positions=[(0, 0, 0), (0, 0, d)], pbc=True) co.center(vacuum=5.) calc = Vasp(xc='PBE', prec='Low', algo='Fast', ismear=0, sigma=1., istart=0, lwave=False, lcharg=False, ldipol=True) co.set_calculator(calc) energy = co.get_potential_energy() forces = co.get_forces() dipole_moment = co.get_dipole_moment() # check that parsing of vasprun.xml file works conf = read('vasprun.xml') assert conf.calc.parameters['kpoints_generation'] assert conf.calc.parameters['sigma'] == 1.0 assert conf.calc.parameters['ialgo'] == 68 assert energy - conf.get_potential_energy() == 0.0 # Check some arrays assert np.allclose(conf.get_forces(), forces) assert np.allclose(conf.get_dipole_moment(), dipole_moment, atol=1e-6) # Check k-point-dependent properties assert len(conf.calc.get_eigenvalues(spin=0)) >= 12 assert conf.calc.get_occupation_numbers()[2] == 2 assert conf.calc.get_eigenvalues(spin=1) is None kpt = conf.calc.get_kpt(0) assert kpt.weight == 1. # Perform a spin-polarised calculation co.calc.set(ispin=2, ibrion=-1) co.get_potential_energy() conf = read('vasprun.xml') assert len(conf.calc.get_eigenvalues(spin=1)) >= 12 assert conf.calc.get_occupation_numbers(spin=1)[0] == 1. # Cleanup calc.clean() if 1: main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/verlet.py000066400000000000000000000016161316323560300233750ustar00rootroot00000000000000from ase import Atoms from ase.units import fs from ase.calculators.test import TestPotential from ase.md import VelocityVerlet from ase.io import Trajectory, read from ase.optimize import QuasiNewton from ase.utils import seterr with seterr(all='raise'): a = Atoms('4X', masses=[1, 2, 3, 4], positions=[(0, 0, 0), (1, 0, 0), (0, 1, 0), (0.1, 0.2, 0.7)], calculator=TestPotential()) print(a.get_forces()) md = VelocityVerlet(a, dt=0.5 * fs, logfile='-', loginterval=500) traj = Trajectory('4N.traj', 'w', a) md.attach(traj.write, 100) e0 = a.get_total_energy() md.run(steps=10000) del traj assert abs(read('4N.traj').get_total_energy() - e0) < 0.0001 qn = QuasiNewton(a) qn.run(0.001) assert abs(a.get_potential_energy() - 1.0) < 0.000002 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/test/vib.py000066400000000000000000000014051316323560300226500ustar00rootroot00000000000000from __future__ import print_function from ase import Atoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton from ase.vibrations import Vibrations from ase.thermochemistry import IdealGasThermo n2 = Atoms('N2', positions=[(0, 0, 0), (0, 0, 1.1)], calculator=EMT()) QuasiNewton(n2).run(fmax=0.01) vib = Vibrations(n2) vib.run() print(vib.get_frequencies()) vib.summary() print(vib.get_mode(-1)) vib.write_mode(n=None, nimages=20) vib_energies = vib.get_energies() thermo = IdealGasThermo(vib_energies=vib_energies, geometry='linear', atoms=n2, symmetrynumber=2, spin=0) thermo.get_gibbs_energy(temperature=298.15, pressure=2 * 101325.) assert vib.clean(empty_files=True) == 0 assert vib.clean() == 13 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/thermochemistry.py000066400000000000000000000677001316323560300243510ustar00rootroot00000000000000from __future__ import print_function """Modules for calculating thermochemical information from computational outputs.""" import os import sys import numpy as np from ase import units class ThermoChem: """Base class containing common methods used in thermochemistry calculations.""" def get_ZPE_correction(self): """Returns the zero-point vibrational energy correction in eV.""" zpe = 0. for energy in self.vib_energies: zpe += 0.5 * energy return zpe def _vibrational_energy_contribution(self, temperature): """Calculates the change in internal energy due to vibrations from 0K to the specified temperature for a set of vibrations given in eV and a temperature given in Kelvin. Returns the energy change in eV.""" kT = units.kB * temperature dU = 0. for energy in self.vib_energies: dU += energy / (np.exp(energy / kT) - 1.) return dU def _vibrational_entropy_contribution(self, temperature): """Calculates the entropy due to vibrations for a set of vibrations given in eV and a temperature given in Kelvin. Returns the entropy in eV/K.""" kT = units.kB * temperature S_v = 0. for energy in self.vib_energies: x = energy / kT S_v += x / (np.exp(x) - 1.) - np.log(1. - np.exp(-x)) S_v *= units.kB return S_v def _vprint(self, text): """Print output if verbose flag True.""" if self.verbose: sys.stdout.write(text + os.linesep) class HarmonicThermo(ThermoChem): """Class for calculating thermodynamic properties in the approximation that all degrees of freedom are treated harmonically. Often used for adsorbates. Inputs: vib_energies : list a list of the harmonic energies of the adsorbate (e.g., from ase.vibrations.Vibrations.get_energies). The number of energies should match the number of degrees of freedom of the adsorbate; i.e., 3*n, where n is the number of atoms. Note that this class does not check that the user has supplied the correct number of energies. Units of energies are eV. potentialenergy : float the potential energy in eV (e.g., from atoms.get_potential_energy) (if potentialenergy is unspecified, then the methods of this class can be interpreted as the energy corrections) """ def __init__(self, vib_energies, potentialenergy=0.): self.vib_energies = vib_energies # Check for imaginary frequencies. if sum(np.iscomplex(self.vib_energies)): raise ValueError('Imaginary vibrational energies are present.') else: self.vib_energies = np.real(self.vib_energies) # clear +0.j self.potentialenergy = potentialenergy def get_internal_energy(self, temperature, verbose=True): """Returns the internal energy, in eV, in the harmonic approximation at a specified temperature (K).""" self.verbose = verbose write = self._vprint fmt = '%-15s%13.3f eV' write('Internal energy components at T = %.2f K:' % temperature) write('=' * 31) U = 0. write(fmt % ('E_pot', self.potentialenergy)) U += self.potentialenergy zpe = self.get_ZPE_correction() write(fmt % ('E_ZPE', zpe)) U += zpe dU_v = self._vibrational_energy_contribution(temperature) write(fmt % ('Cv_harm (0->T)', dU_v)) U += dU_v write('-' * 31) write(fmt % ('U', U)) write('=' * 31) return U def get_entropy(self, temperature, verbose=True): """Returns the entropy, in eV/K, in the harmonic approximation at a specified temperature (K).""" self.verbose = verbose write = self._vprint fmt = '%-15s%13.7f eV/K%13.3f eV' write('Entropy components at T = %.2f K:' % temperature) write('=' * 49) write('%15s%13s %13s' % ('', 'S', 'T*S')) S = 0. S_v = self._vibrational_entropy_contribution(temperature) write(fmt % ('S_harm', S_v, S_v * temperature)) S += S_v write('-' * 49) write(fmt % ('S', S, S * temperature)) write('=' * 49) return S def get_helmholtz_energy(self, temperature, verbose=True): """Returns the Helmholtz free energy, in eV, in the harmonic approximation at a specified temperature (K).""" self.verbose = True write = self._vprint U = self.get_internal_energy(temperature, verbose=verbose) write('') S = self.get_entropy(temperature, verbose=verbose) F = U - temperature * S write('') write('Free energy components at T = %.2f K:' % temperature) write('=' * 23) fmt = '%5s%15.3f eV' write(fmt % ('U', U)) write(fmt % ('-T*S', -temperature * S)) write('-' * 23) write(fmt % ('F', F)) write('=' * 23) return F class HinderedThermo(ThermoChem): """Class for calculating thermodynamic properties in the hindered translator and hindered rotor model where all but three degrees of freedom are treated as harmonic vibrations, two are treated as hindered translations, and one is treated as a hindered rotation. Inputs: vib_energies : list a list of all the vibrational energies of the adsorbate (e.g., from ase.vibrations.Vibrations.get_energies). The number of energies should match the number of degrees of freedom of the adsorbate; i.e., 3*n, where n is the number of atoms. Note that this class does not check that the user has supplied the correct number of energies. Units of energies are eV. trans_barrier_energy : float the translational energy barrier in eV. This is the barrier for an adsorbate to diffuse on the surface. rot_barrier_energy : float the rotational energy barrier in eV. This is the barrier for an adsorbate to rotate about an axis perpendicular to the surface. sitedensity : float density of surface sites in cm^-2 rotationalminima : integer the number of equivalent minima for an adsorbate's full rotation. For example, 6 for an adsorbate on an fcc(111) top site potentialenergy : float the potential energy in eV (e.g., from atoms.get_potential_energy) (if potentialenergy is unspecified, then the methods of this class can be interpreted as the energy corrections) mass : float the mass of the adsorbate in amu (if mass is unspecified, then it will be calculated from the atoms class) inertia : float the reduced moment of inertia of the adsorbate in amu*Ang^-2 (if inertia is unspecified, then it will be calculated from the atoms class) atoms : an ASE atoms object used to calculate rotational moments of inertia and molecular mass symmetrynumber : integer symmetry number of the adsorbate. This is the number of symmetric arms of the adsorbate and depends upon how it is bound to the surface. For example, propane bound through its end carbon has a symmetry number of 1 but propane bound through its middle carbon has a symmetry number of 2. (if symmetrynumber is unspecified, then the default is 1) """ def __init__(self, vib_energies, trans_barrier_energy, rot_barrier_energy, sitedensity, rotationalminima, potentialenergy=0., mass=None, inertia=None, atoms=None, symmetrynumber=1): self.vib_energies = sorted(vib_energies, reverse=True)[:-3] self.trans_barrier_energy = trans_barrier_energy * units._e self.rot_barrier_energy = rot_barrier_energy * units._e self.area = 1. / sitedensity / 100.0**2 self.rotationalminima = rotationalminima self.potentialenergy = potentialenergy self.atoms = atoms self.symmetry = symmetrynumber if (mass or atoms) and (inertia or atoms): if mass: self.mass = mass * units._amu elif atoms: self.mass = np.sum(atoms.get_masses()) * units._amu if inertia: self.inertia = inertia * units._amu / units.m**2 elif atoms: self.inertia = (atoms.get_moments_of_inertia()[2] * units._amu / units.m**2) else: raise RuntimeError('Either mass and inertia of the ' 'adsorbate must be specified or ' 'atoms must be specified.') # Make sure no imaginary frequencies remain. if sum(np.iscomplex(self.vib_energies)): raise ValueError('Imaginary frequencies are present.') else: self.vib_energies = np.real(self.vib_energies) # clear +0.j # Calculate hindered translational and rotational frequencies self.freq_t = np.sqrt(self.trans_barrier_energy / (2 * self.mass * self.area)) self.freq_r = 1. / (2 * np.pi) * np.sqrt(self.rotationalminima**2 * self.rot_barrier_energy / (2 * self.inertia)) def get_internal_energy(self, temperature, verbose=True): """Returns the internal energy (including the zero point energy), in eV, in the hindered translator and hindered rotor model at a specified temperature (K).""" from scipy.special import iv self.verbose = verbose write = self._vprint fmt = '%-15s%13.3f eV' write('Internal energy components at T = %.2f K:' % temperature) write('=' * 31) U = 0. write(fmt % ('E_pot', self.potentialenergy)) U += self.potentialenergy # Translational Energy T_t = units._k * temperature / (units._hplanck * self.freq_t) R_t = self.trans_barrier_energy / (units._hplanck * self.freq_t) dU_t = 2 * (-1. / 2 - 1. / T_t / (2 + 16 * R_t) + R_t / 2 / T_t - R_t / 2 / T_t * iv(1, R_t / 2 / T_t) / iv(0, R_t / 2 / T_t) + 1. / T_t / (np.exp(1. / T_t) - 1)) dU_t *= units.kB * temperature write(fmt % ('E_trans', dU_t)) U += dU_t # Rotational Energy T_r = units._k * temperature / (units._hplanck * self.freq_r) R_r = self.rot_barrier_energy / (units._hplanck * self.freq_r) dU_r = (-1. / 2 - 1. / T_r / (2 + 16 * R_r) + R_r / 2 / T_r - R_r / 2 / T_r * iv(1, R_r / 2 / T_r) / iv(0, R_r / 2 / T_r) + 1. / T_r / (np.exp(1. / T_r) - 1)) dU_r *= units.kB * temperature write(fmt % ('E_rot', dU_r)) U += dU_r # Vibrational Energy dU_v = self._vibrational_energy_contribution(temperature) write(fmt % ('E_vib', dU_v)) U += dU_v # Zero Point Energy dU_zpe = self.get_zero_point_energy() write(fmt % ('E_ZPE', dU_zpe)) U += dU_zpe write('-' * 31) write(fmt % ('U', U)) write('=' * 31) return U def get_zero_point_energy(self, verbose=True): """Returns the zero point energy, in eV, in the hindered translator and hindered rotor model""" zpe_t = 2 * (1. / 2 * self.freq_t * units._hplanck / units._e) zpe_r = 1. / 2 * self.freq_r * units._hplanck / units._e zpe_v = self.get_ZPE_correction() zpe = zpe_t + zpe_r + zpe_v return zpe def get_entropy(self, temperature, verbose=True): """Returns the entropy, in eV/K, in the hindered translator and hindered rotor model at a specified temperature (K).""" from scipy.special import iv self.verbose = verbose write = self._vprint fmt = '%-15s%13.7f eV/K%13.3f eV' write('Entropy components at T = %.2f K:' % temperature) write('=' * 49) write('%15s%13s %13s' % ('', 'S', 'T*S')) S = 0. # Translational Entropy T_t = units._k * temperature / (units._hplanck * self.freq_t) R_t = self.trans_barrier_energy / (units._hplanck * self.freq_t) S_t = 2 * (-1. / 2 + 1. / 2 * np.log(np.pi * R_t / T_t) - R_t / 2 / T_t * iv(1, R_t / 2 / T_t) / iv(0, R_t / 2 / T_t) + np.log(iv(0, R_t / 2 / T_t)) + 1. / T_t / (np.exp(1. / T_t) - 1) - np.log(1 - np.exp(-1. / T_t))) S_t *= units.kB write(fmt % ('S_trans', S_t, S_t * temperature)) S += S_t # Rotational Entropy T_r = units._k * temperature / (units._hplanck * self.freq_r) R_r = self.rot_barrier_energy / (units._hplanck * self.freq_r) S_r = (-1. / 2 + 1. / 2 * np.log(np.pi * R_r / T_r) - np.log(self.symmetry) - R_r / 2 / T_r * iv(1, R_r / 2 / T_r) / iv(0, R_r / 2 / T_r) + np.log(iv(0, R_r / 2 / T_r)) + 1. / T_r / (np.exp(1. / T_r) - 1) - np.log(1 - np.exp(-1. / T_r))) S_r *= units.kB write(fmt % ('S_rot', S_r, S_r * temperature)) S += S_r # Vibrational Entropy S_v = self._vibrational_entropy_contribution(temperature) write(fmt % ('S_vib', S_v, S_v * temperature)) S += S_v # Concentration Related Entropy N_over_A = np.exp(1. / 3) * (10.0**5 / (units._k * temperature))**(2. / 3) S_c = 1 - np.log(N_over_A) - np.log(self.area) S_c *= units.kB write(fmt % ('S_con', S_c, S_c * temperature)) S += S_c write('-' * 49) write(fmt % ('S', S, S * temperature)) write('=' * 49) return S def get_helmholtz_energy(self, temperature, verbose=True): """Returns the Helmholtz free energy, in eV, in the hindered translator and hindered rotor model at a specified temperature (K).""" self.verbose = True write = self._vprint U = self.get_internal_energy(temperature, verbose=verbose) write('') S = self.get_entropy(temperature, verbose=verbose) F = U - temperature * S write('') write('Free energy components at T = %.2f K:' % temperature) write('=' * 23) fmt = '%5s%15.3f eV' write(fmt % ('U', U)) write(fmt % ('-T*S', -temperature * S)) write('-' * 23) write(fmt % ('F', F)) write('=' * 23) return F class IdealGasThermo(ThermoChem): """Class for calculating thermodynamic properties of a molecule based on statistical mechanical treatments in the ideal gas approximation. Inputs for enthalpy calculations: vib_energies : list a list of the vibrational energies of the molecule (e.g., from ase.vibrations.Vibrations.get_energies). The number of vibrations used is automatically calculated by the geometry and the number of atoms. If more are specified than are needed, then the lowest numbered vibrations are neglected. If either atoms or natoms is unspecified, then uses the entire list. Units are eV. geometry : 'monatomic', 'linear', or 'nonlinear' geometry of the molecule potentialenergy : float the potential energy in eV (e.g., from atoms.get_potential_energy) (if potentialenergy is unspecified, then the methods of this class can be interpreted as the energy corrections) natoms : integer the number of atoms, used along with 'geometry' to determine how many vibrations to use. (Not needed if an atoms object is supplied in 'atoms' or if the user desires the entire list of vibrations to be used.) Extra inputs needed for entropy / free energy calculations: atoms : an ASE atoms object used to calculate rotational moments of inertia and molecular mass symmetrynumber : integer symmetry number of the molecule. See, for example, Table 10.1 and Appendix B of C. Cramer "Essentials of Computational Chemistry", 2nd Ed. spin : float the total electronic spin. (0 for molecules in which all electrons are paired, 0.5 for a free radical with a single unpaired electron, 1.0 for a triplet with two unpaired electrons, such as O_2.) """ def __init__(self, vib_energies, geometry, potentialenergy=0., atoms=None, symmetrynumber=None, spin=None, natoms=None): self.potentialenergy = potentialenergy self.geometry = geometry self.atoms = atoms self.sigma = symmetrynumber self.spin = spin if natoms is None: if atoms: natoms = len(atoms) # Cut the vibrations to those needed from the geometry. if natoms: if geometry == 'nonlinear': self.vib_energies = vib_energies[-(3 * natoms - 6):] elif geometry == 'linear': self.vib_energies = vib_energies[-(3 * natoms - 5):] elif geometry == 'monatomic': self.vib_energies = [] else: self.vib_energies = vib_energies # Make sure no imaginary frequencies remain. if sum(np.iscomplex(self.vib_energies)): raise ValueError('Imaginary frequencies are present.') else: self.vib_energies = np.real(self.vib_energies) # clear +0.j self.referencepressure = 101325. # Pa def get_enthalpy(self, temperature, verbose=True): """Returns the enthalpy, in eV, in the ideal gas approximation at a specified temperature (K).""" self.verbose = verbose write = self._vprint fmt = '%-15s%13.3f eV' write('Enthalpy components at T = %.2f K:' % temperature) write('=' * 31) H = 0. write(fmt % ('E_pot', self.potentialenergy)) H += self.potentialenergy zpe = self.get_ZPE_correction() write(fmt % ('E_ZPE', zpe)) H += zpe Cv_t = 3. / 2. * units.kB # translational heat capacity (3-d gas) write(fmt % ('Cv_trans (0->T)', Cv_t * temperature)) H += Cv_t * temperature if self.geometry == 'nonlinear': # rotational heat capacity Cv_r = 3. / 2. * units.kB elif self.geometry == 'linear': Cv_r = units.kB elif self.geometry == 'monatomic': Cv_r = 0. write(fmt % ('Cv_rot (0->T)', Cv_r * temperature)) H += Cv_r * temperature dH_v = self._vibrational_energy_contribution(temperature) write(fmt % ('Cv_vib (0->T)', dH_v)) H += dH_v Cp_corr = units.kB * temperature write(fmt % ('(C_v -> C_p)', Cp_corr)) H += Cp_corr write('-' * 31) write(fmt % ('H', H)) write('=' * 31) return H def get_entropy(self, temperature, pressure, verbose=True): """Returns the entropy, in eV/K, in the ideal gas approximation at a specified temperature (K) and pressure (Pa).""" if self.atoms is None or self.sigma is None or self.spin is None: raise RuntimeError('atoms, symmetrynumber, and spin must be ' 'specified for entropy and free energy ' 'calculations.') self.verbose = verbose write = self._vprint fmt = '%-15s%13.7f eV/K%13.3f eV' write('Entropy components at T = %.2f K and P = %.1f Pa:' % (temperature, pressure)) write('=' * 49) write('%15s%13s %13s' % ('', 'S', 'T*S')) S = 0.0 # Translational entropy (term inside the log is in SI units). mass = sum(self.atoms.get_masses()) * units._amu # kg/molecule S_t = (2 * np.pi * mass * units._k * temperature / units._hplanck**2)**(3.0 / 2) S_t *= units._k * temperature / self.referencepressure S_t = units.kB * (np.log(S_t) + 5.0 / 2.0) write(fmt % ('S_trans (1 atm)', S_t, S_t * temperature)) S += S_t # Rotational entropy (term inside the log is in SI units). if self.geometry == 'monatomic': S_r = 0.0 elif self.geometry == 'nonlinear': inertias = (self.atoms.get_moments_of_inertia() * units._amu / (10.0**10)**2) # kg m^2 S_r = np.sqrt(np.pi * np.product(inertias)) / self.sigma S_r *= (8.0 * np.pi**2 * units._k * temperature / units._hplanck**2)**(3.0 / 2.0) S_r = units.kB * (np.log(S_r) + 3.0 / 2.0) elif self.geometry == 'linear': inertias = (self.atoms.get_moments_of_inertia() * units._amu / (10.0**10)**2) # kg m^2 inertia = max(inertias) # should be two identical and one zero S_r = (8 * np.pi**2 * inertia * units._k * temperature / self.sigma / units._hplanck**2) S_r = units.kB * (np.log(S_r) + 1.) write(fmt % ('S_rot', S_r, S_r * temperature)) S += S_r # Electronic entropy. S_e = units.kB * np.log(2 * self.spin + 1) write(fmt % ('S_elec', S_e, S_e * temperature)) S += S_e # Vibrational entropy. S_v = self._vibrational_entropy_contribution(temperature) write(fmt % ('S_vib', S_v, S_v * temperature)) S += S_v # Pressure correction to translational entropy. S_p = - units.kB * np.log(pressure / self.referencepressure) write(fmt % ('S (1 atm -> P)', S_p, S_p * temperature)) S += S_p write('-' * 49) write(fmt % ('S', S, S * temperature)) write('=' * 49) return S def get_gibbs_energy(self, temperature, pressure, verbose=True): """Returns the Gibbs free energy, in eV, in the ideal gas approximation at a specified temperature (K) and pressure (Pa).""" self.verbose = verbose write = self._vprint H = self.get_enthalpy(temperature, verbose=verbose) write('') S = self.get_entropy(temperature, pressure, verbose=verbose) G = H - temperature * S write('') write('Free energy components at T = %.2f K and P = %.1f Pa:' % (temperature, pressure)) write('=' * 23) fmt = '%5s%15.3f eV' write(fmt % ('H', H)) write(fmt % ('-T*S', -temperature * S)) write('-' * 23) write(fmt % ('G', G)) write('=' * 23) return G class CrystalThermo(ThermoChem): """Class for calculating thermodynamic properties of a crystalline solid in the approximation that a lattice of N atoms behaves as a system of 3N independent harmonic oscillators. Inputs: phonon_DOS : list a list of the phonon density of states, where each value represents the phonon DOS at the vibrational energy value of the corresponding index in phonon_energies. phonon_energies : list a list of the range of vibrational energies (hbar*omega) over which the phonon density of states has been evaluated. This list should be the same length as phonon_DOS and integrating phonon_DOS over phonon_energies should yield approximately 3N, where N is the number of atoms per unit cell. If the first element of this list is zero-valued it will be deleted along with the first element of phonon_DOS. Units of vibrational energies are eV. potentialenergy : float the potential energy in eV (e.g., from atoms.get_potential_energy) (if potentialenergy is unspecified, then the methods of this class can be interpreted as the energy corrections) formula_units : int the number of formula units per unit cell. If unspecified, the thermodynamic quantities calculated will be listed on a per-unit-cell basis. """ def __init__(self, phonon_DOS, phonon_energies, formula_units=None, potentialenergy=0.): self.phonon_energies = phonon_energies self.phonon_DOS = phonon_DOS if formula_units: self.formula_units = formula_units self.potentialenergy = potentialenergy / formula_units else: self.formula_units = 0 self.potentialenergy = potentialenergy def get_internal_energy(self, temperature, verbose=True): """Returns the internal energy, in eV, of crystalline solid at a specified temperature (K).""" self.verbose = verbose write = self._vprint fmt = '%-15s%13.4f eV' if self.formula_units == 0: write('Internal energy components at ' 'T = %.2f K,\non a per-unit-cell basis:' % temperature) else: write('Internal energy components at ' 'T = %.2f K,\non a per-formula-unit basis:' % temperature) write('=' * 31) U = 0. omega_e = self.phonon_energies dos_e = self.phonon_DOS if omega_e[0] == 0.: omega_e = np.delete(omega_e, 0) dos_e = np.delete(dos_e, 0) write(fmt % ('E_pot', self.potentialenergy)) U += self.potentialenergy zpe_list = omega_e / 2. if self.formula_units == 0: zpe = np.trapz(zpe_list * dos_e, omega_e) else: zpe = np.trapz(zpe_list * dos_e, omega_e) / self.formula_units write(fmt % ('E_ZPE', zpe)) U += zpe B = 1. / (units.kB * temperature) E_vib = omega_e / (np.exp(omega_e * B) - 1.) if self.formula_units == 0: E_phonon = np.trapz(E_vib * dos_e, omega_e) else: E_phonon = np.trapz(E_vib * dos_e, omega_e) / self.formula_units write(fmt % ('E_phonon', E_phonon)) U += E_phonon write('-' * 31) write(fmt % ('U', U)) write('=' * 31) return U def get_entropy(self, temperature, verbose=True): """Returns the entropy, in eV/K, of crystalline solid at a specified temperature (K).""" self.verbose = verbose write = self._vprint fmt = '%-15s%13.7f eV/K%13.4f eV' if self.formula_units == 0: write('Entropy components at ' 'T = %.2f K,\non a per-unit-cell basis:' % temperature) else: write('Entropy components at ' 'T = %.2f K,\non a per-formula-unit basis:' % temperature) write('=' * 49) write('%15s%13s %13s' % ('', 'S', 'T*S')) omega_e = self.phonon_energies dos_e = self.phonon_DOS if omega_e[0] == 0.: omega_e = np.delete(omega_e, 0) dos_e = np.delete(dos_e, 0) B = 1. / (units.kB * temperature) S_vib = (omega_e / (temperature * (np.exp(omega_e * B) - 1.)) - units.kB * np.log(1. - np.exp(-omega_e * B))) if self.formula_units == 0: S = np.trapz(S_vib * dos_e, omega_e) else: S = np.trapz(S_vib * dos_e, omega_e) / self.formula_units write('-' * 49) write(fmt % ('S', S, S * temperature)) write('=' * 49) return S def get_helmholtz_energy(self, temperature, verbose=True): """Returns the Helmholtz free energy, in eV, of crystalline solid at a specified temperature (K).""" self.verbose = True write = self._vprint U = self.get_internal_energy(temperature, verbose=verbose) write('') S = self.get_entropy(temperature, verbose=verbose) F = U - temperature * S write('') if self.formula_units == 0: write('Helmholtz free energy components at ' 'T = %.2f K,\non a per-unit-cell basis:' % temperature) else: write('Helmholtz free energy components at ' 'T = %.2f K,\non a per-formula-unit basis:' % temperature) write('=' * 23) fmt = '%5s%15.4f eV' write(fmt % ('U', U)) write(fmt % ('-T*S', -temperature * S)) write('-' * 23) write(fmt % ('F', F)) write('=' * 23) return F ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/000077500000000000000000000000001316323560300225735ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/__init__.py000066400000000000000000000001171316323560300247030ustar00rootroot00000000000000from .calculators import TransportCalculator __all__ = ['TransportCalculator'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/calculators.py000066400000000000000000000356321316323560300254720ustar00rootroot00000000000000from __future__ import print_function import numpy as np from numpy import linalg from ase.transport.selfenergy import LeadSelfEnergy, BoxProbe from ase.transport.greenfunction import GreenFunction from ase.transport.tools import subdiagonalize, cutcoupling, dagger,\ rotate_matrix class TransportCalculator: """Determine transport properties of a device sandwiched between two semi-infinite leads using a Green function method. """ def __init__(self, **kwargs): """Create the transport calculator. Parameters: h : (N, N) ndarray Hamiltonian matrix for the central region. s : {None, (N, N) ndarray}, optional Overlap matrix for the central region. Use None for an orthonormal basis. h1 : (N1, N1) ndarray Hamiltonian matrix for lead1. h2 : {None, (N2, N2) ndarray}, optional Hamiltonian matrix for lead2. You may use None if lead1 and lead2 are identical. s1 : {None, (N1, N1) ndarray}, optional Overlap matrix for lead1. Use None for an orthonomormal basis. hc1 : {None, (N1, N) ndarray}, optional Hamiltonian coupling matrix between the first principal layer in lead1 and the central region. hc2 : {None, (N2, N} ndarray), optional Hamiltonian coupling matrix between the first principal layer in lead2 and the central region. sc1 : {None, (N1, N) ndarray}, optional Overlap coupling matrix between the first principal layer in lead1 and the central region. sc2 : {None, (N2, N) ndarray}, optional Overlap coupling matrix between the first principal layer in lead2 and the central region. energies : {None, array_like}, optional Energy points for which calculated transport properties are evaluated. eta : {1.0e-5, float}, optional Infinitesimal for the central region Green function. eta1/eta2 : {1.0e-5, float}, optional Infinitesimal for lead1/lead2 Green function. align_bf : {None, int}, optional Use align_bf=m to shift the central region by a constant potential such that the m'th onsite element in the central region is aligned to the m'th onsite element in lead1 principal layer. logfile : {None, str}, optional Write a logfile to file with name `logfile`. Use '-' to write to std out. eigenchannels: {0, int}, optional Number of eigenchannel transmission coefficients to calculate. pdos : {None, (N,) array_like}, optional Specify which basis functions to calculate the projected density of states for. dos : {False, bool}, optional The total density of states of the central region. box: XXX YYY If hc1/hc2 are None, they are assumed to be identical to the coupling matrix elements between neareste neighbor principal layers in lead1/lead2. Examples: >>> import numpy as np >>> h = np.array((0,)).reshape((1,1)) >>> h1 = np.array((0, -1, -1, 0)).reshape(2,2) >>> energies = np.arange(-3, 3, 0.1) >>> calc = TransportCalculator(h=h, h1=h1, energies=energies) >>> T = calc.get_transmission() """ # The default values for all extra keywords self.input_parameters = {'energies': None, 'h': None, 'h1': None, 'h2': None, 's': None, 's1': None, 's2': None, 'hc1': None, 'hc2': None, 'sc1': None, 'sc2': None, 'box': None, 'align_bf': None, 'eta1': 1e-5, 'eta2': 1e-5, 'eta': 1e-5, 'logfile': None, 'eigenchannels': 0, 'dos': False, 'pdos': []} self.initialized = False # Changed Hamiltonians? self.uptodate = False # Changed energy grid? self.set(**kwargs) def set(self, **kwargs): for key in kwargs: if key in ['h', 'h1', 'h2', 'hc1', 'hc2', 's', 's1', 's2', 'sc1', 'sc2', 'eta', 'eta1', 'eta2', 'align_bf', 'box']: self.initialized = False self.uptodate = False break elif key in ['energies', 'eigenchannels', 'dos', 'pdos']: self.uptodate = False elif key not in self.input_parameters: raise KeyError('%r not a vaild keyword' % key) self.input_parameters.update(kwargs) log = self.input_parameters['logfile'] if log is None: class Trash: def write(self, s): pass def flush(self): pass self.log = Trash() elif log == '-': from sys import stdout self.log = stdout elif 'logfile' in kwargs: self.log = open(log, 'w') def initialize(self): if self.initialized: return print('# Initializing calculator...', file=self.log) p = self.input_parameters if p['s'] is None: p['s'] = np.identity(len(p['h'])) identical_leads = False if p['h2'] is None: p['h2'] = p['h1'] # Lead2 is idendical to lead1 identical_leads = True if p['s1'] is None: p['s1'] = np.identity(len(p['h1'])) if identical_leads: p['s2'] = p['s1'] else: if p['s2'] is None: p['s2'] = np.identity(len(p['h2'])) h_mm = p['h'] s_mm = p['s'] pl1 = len(p['h1']) // 2 pl2 = len(p['h2']) // 2 h1_ii = p['h1'][:pl1, :pl1] h1_ij = p['h1'][:pl1, pl1:2 * pl1] s1_ii = p['s1'][:pl1, :pl1] s1_ij = p['s1'][:pl1, pl1:2 * pl1] h2_ii = p['h2'][:pl2, :pl2] h2_ij = p['h2'][pl2: 2 * pl2, :pl2] s2_ii = p['s2'][:pl2, :pl2] s2_ij = p['s2'][pl2: 2 * pl2, :pl2] if p['hc1'] is None: nbf = len(h_mm) h1_im = np.zeros((pl1, nbf), complex) s1_im = np.zeros((pl1, nbf), complex) h1_im[:pl1, :pl1] = h1_ij s1_im[:pl1, :pl1] = s1_ij p['hc1'] = h1_im p['sc1'] = s1_im else: h1_im = p['hc1'] if p['sc1'] is not None: s1_im = p['sc1'] else: s1_im = np.zeros(h1_im.shape, complex) p['sc1'] = s1_im if p['hc2'] is None: h2_im = np.zeros((pl2, nbf), complex) s2_im = np.zeros((pl2, nbf), complex) h2_im[-pl2:, -pl2:] = h2_ij s2_im[-pl2:, -pl2:] = s2_ij p['hc2'] = h2_im p['sc2'] = s2_im else: h2_im = p['hc2'] if p['sc2'] is not None: s2_im = p['sc2'] else: s2_im = np.zeros(h2_im.shape, complex) p['sc2'] = s2_im align_bf = p['align_bf'] if align_bf is not None: diff = ((h_mm[align_bf, align_bf] - h1_ii[align_bf, align_bf]) / s_mm[align_bf, align_bf]) print('# Aligning scat. H to left lead H. diff=', diff, file=self.log) h_mm -= diff * s_mm # Setup lead self-energies # All infinitesimals must be > 0 assert np.all(np.array((p['eta'], p['eta1'], p['eta2'])) > 0.0) self.selfenergies = [LeadSelfEnergy((h1_ii, s1_ii), (h1_ij, s1_ij), (h1_im, s1_im), p['eta1']), LeadSelfEnergy((h2_ii, s2_ii), (h2_ij, s2_ij), (h2_im, s2_im), p['eta2'])] box = p['box'] if box is not None: print('Using box probe!') self.selfenergies.append( BoxProbe(eta=box[0], a=box[1], b=box[2], energies=box[3], S=s_mm, T=0.3)) # setup scattering green function self.greenfunction = GreenFunction(selfenergies=self.selfenergies, H=h_mm, S=s_mm, eta=p['eta']) self.initialized = True def update(self): if self.uptodate: return p = self.input_parameters self.energies = p['energies'] nepts = len(self.energies) nchan = p['eigenchannels'] pdos = p['pdos'] self.T_e = np.empty(nepts) if p['dos']: self.dos_e = np.empty(nepts) if pdos != []: self.pdos_ne = np.empty((len(pdos), nepts)) if nchan > 0: self.eigenchannels_ne = np.empty((nchan, nepts)) for e, energy in enumerate(self.energies): Ginv_mm = self.greenfunction.retarded(energy, inverse=True) lambda1_mm = self.selfenergies[0].get_lambda(energy) lambda2_mm = self.selfenergies[1].get_lambda(energy) a_mm = linalg.solve(Ginv_mm, lambda1_mm) b_mm = linalg.solve(dagger(Ginv_mm), lambda2_mm) T_mm = np.dot(a_mm, b_mm) if nchan > 0: t_n = linalg.eigvals(T_mm).real self.eigenchannels_ne[:, e] = np.sort(t_n)[-nchan:] self.T_e[e] = np.sum(t_n) else: self.T_e[e] = np.trace(T_mm).real print(energy, self.T_e[e], file=self.log) self.log.flush() if p['dos']: self.dos_e[e] = self.greenfunction.dos(energy) if pdos != []: self.pdos_ne[:, e] = np.take(self.greenfunction.pdos(energy), pdos) self.uptodate = True def print_pl_convergence(self): self.initialize() pl1 = len(self.input_parameters['h1']) // 2 h_ii = self.selfenergies[0].h_ii s_ii = self.selfenergies[0].s_ii ha_ii = self.greenfunction.H[:pl1, :pl1] sa_ii = self.greenfunction.S[:pl1, :pl1] c1 = np.abs(h_ii - ha_ii).max() c2 = np.abs(s_ii - sa_ii).max() print('Conv (h,s)=%.2e, %2.e' % (c1, c2)) def plot_pl_convergence(self): self.initialize() pl1 = len(self.input_parameters['h1']) // 2 hlead = self.selfenergies[0].h_ii.real.diagonal() hprincipal = self.greenfunction.H.real.diagonal[:pl1] import pylab as pl pl.plot(hlead, label='lead') pl.plot(hprincipal, label='principal layer') pl.axis('tight') pl.show() def get_transmission(self): self.initialize() self.update() return self.T_e def get_dos(self): self.initialize() self.update() return self.dos_e def get_eigenchannels(self, n=None): """Get ``n`` first eigenchannels.""" self.initialize() self.update() if n is None: n = self.input_parameters['eigenchannels'] return self.eigenchannels_ne[:n] def get_pdos(self): self.initialize() self.update() return self.pdos_ne def subdiagonalize_bfs(self, bfs, apply=False): self.initialize() bfs = np.array(bfs) p = self.input_parameters h_mm = p['h'] s_mm = p['s'] ht_mm, st_mm, c_mm, e_m = subdiagonalize(h_mm, s_mm, bfs) if apply: self.uptodate = False h_mm[:] = ht_mm s_mm[:] = st_mm # Rotate coupling between lead and central region for alpha, sigma in enumerate(self.selfenergies): sigma.h_im[:] = np.dot(sigma.h_im, c_mm) sigma.s_im[:] = np.dot(sigma.s_im, c_mm) c_mm = np.take(c_mm, bfs, axis=0) c_mm = np.take(c_mm, bfs, axis=1) return ht_mm, st_mm, e_m.real, c_mm def cutcoupling_bfs(self, bfs, apply=False): self.initialize() bfs = np.array(bfs) p = self.input_parameters h_pp = p['h'].copy() s_pp = p['s'].copy() cutcoupling(h_pp, s_pp, bfs) if apply: self.uptodate = False p['h'][:] = h_pp p['s'][:] = s_pp for alpha, sigma in enumerate(self.selfenergies): for m in bfs: sigma.h_im[:, m] = 0.0 sigma.s_im[:, m] = 0.0 return h_pp, s_pp def lowdin_rotation(self, apply=False): p = self.input_parameters h_mm = p['h'] s_mm = p['s'] eig, rot_mm = linalg.eigh(s_mm) eig = np.abs(eig) rot_mm = np.dot(rot_mm / np.sqrt(eig), dagger(rot_mm)) if apply: self.uptodate = False h_mm[:] = rotate_matrix(h_mm, rot_mm) # rotate C region s_mm[:] = rotate_matrix(s_mm, rot_mm) for alpha, sigma in enumerate(self.selfenergies): sigma.h_im[:] = np.dot(sigma.h_im, rot_mm) # rotate L-C coupl. sigma.s_im[:] = np.dot(sigma.s_im, rot_mm) return rot_mm def get_left_channels(self, energy, nchan=1): self.initialize() g_s_ii = self.greenfunction.retarded(energy) lambda_l_ii = self.selfenergies[0].get_lambda(energy) lambda_r_ii = self.selfenergies[1].get_lambda(energy) if self.greenfunction.S is not None: s_mm = self.greenfunction.S s_s_i, s_s_ii = linalg.eig(s_mm) s_s_i = np.abs(s_s_i) s_s_sqrt_i = np.sqrt(s_s_i) # sqrt of eigenvalues s_s_sqrt_ii = np.dot(s_s_ii * s_s_sqrt_i, dagger(s_s_ii)) s_s_isqrt_ii = np.dot(s_s_ii / s_s_sqrt_i, dagger(s_s_ii)) lambdab_r_ii = np.dot(np.dot(s_s_isqrt_ii, lambda_r_ii), s_s_isqrt_ii) a_l_ii = np.dot(np.dot(g_s_ii, lambda_l_ii), dagger(g_s_ii)) ab_l_ii = np.dot(np.dot(s_s_sqrt_ii, a_l_ii), s_s_sqrt_ii) lambda_i, u_ii = linalg.eig(ab_l_ii) ut_ii = np.sqrt(lambda_i / (2.0 * np.pi)) * u_ii m_ii = 2 * np.pi * np.dot(np.dot(dagger(ut_ii), lambdab_r_ii), ut_ii) T_i, c_in = linalg.eig(m_ii) T_i = np.abs(T_i) channels = np.argsort(-T_i)[:nchan] c_in = np.take(c_in, channels, axis=1) T_n = np.take(T_i, channels) v_in = np.dot(np.dot(s_s_isqrt_ii, ut_ii), c_in) return T_n, v_in ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/greenfunction.py000066400000000000000000000041101316323560300260070ustar00rootroot00000000000000import numpy as np class GreenFunction: """Equilibrium retarded Green function.""" def __init__(self, H, S=None, selfenergies=[], eta=1e-4): self.H = H self.S = S self.selfenergies = selfenergies self.eta = eta self.energy = None self.Ginv = np.empty(H.shape, complex) def retarded(self, energy, inverse=False): """Get retarded Green function at specified energy. If 'inverse' is True, the inverse Green function is returned (faster). """ if energy != self.energy: self.energy = energy z = energy + self.eta * 1.j if self.S is None: self.Ginv[:] = 0.0 self.Ginv.flat[:: len(self.S) + 1] = z else: self.Ginv[:] = z self.Ginv *= self.S self.Ginv -= self.H for selfenergy in self.selfenergies: self.Ginv -= selfenergy.retarded(energy) if inverse: return self.Ginv else: return np.linalg.inv(self.Ginv) def calculate(self, energy, sigma): """XXX is this really needed""" ginv = energy * self.S - self.H - sigma return np.linalg.inv(ginv) def apply_retarded(self, energy, X): """Apply retarded Green function to X. Returns the matrix product G^r(e) . X """ return np.linalg.solve(self.retarded(energy, inverse=True), X) def dos(self, energy): """Total density of states -1/pi Im(Tr(GS))""" if self.S is None: return -self.retarded(energy).imag.trace() / np.pi else: GS = self.apply_retarded(energy, self.S) return -GS.imag.trace() / np.pi def pdos(self, energy): """Projected density of states -1/pi Im(SGS/S)""" if self.S is None: return -self.retarded(energy).imag.diagonal() / np.pi else: S = self.S SGS = np.dot(S, self.apply_retarded(energy, S)) return -(SGS.diagonal() / S.diagonal()).imag / np.pi ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/selfenergy.py000066400000000000000000000054551316323560300253210ustar00rootroot00000000000000import numpy as np class LeadSelfEnergy: conv = 1e-8 # Convergence criteria for surface Green function def __init__(self, hs_dii, hs_dij, hs_dim, eta=1e-4): self.h_ii, self.s_ii = hs_dii # onsite principal layer self.h_ij, self.s_ij = hs_dij # coupling between principal layers self.h_im, self.s_im = hs_dim # coupling to the central region self.nbf = self.h_im.shape[1] # nbf for the scattering region self.eta = eta self.energy = None self.bias = 0 self.sigma_mm = np.empty((self.nbf, self.nbf), complex) def retarded(self, energy): """Return self-energy (sigma) evaluated at specified energy.""" if energy != self.energy: self.energy = energy z = energy - self.bias + self.eta * 1.j tau_im = z * self.s_im - self.h_im a_im = np.linalg.solve(self.get_sgfinv(energy), tau_im) tau_mi = z * self.s_im.T.conj() - self.h_im.T.conj() self.sigma_mm[:] = np.dot(tau_mi, a_im) return self.sigma_mm def set_bias(self, bias): self.bias = bias def get_lambda(self, energy): """Return the lambda (aka Gamma) defined by i(S-S^d). Here S is the retarded selfenergy, and d denotes the hermitian conjugate. """ sigma_mm = self.retarded(energy) return 1.j * (sigma_mm - sigma_mm.T.conj()) def get_sgfinv(self, energy): """The inverse of the retarded surface Green function""" z = energy - self.bias + self.eta * 1.j v_00 = z * self.s_ii.T.conj() - self.h_ii.T.conj() v_11 = v_00.copy() v_10 = z * self.s_ij - self.h_ij v_01 = z * self.s_ij.T.conj() - self.h_ij.T.conj() delta = self.conv + 1 while delta > self.conv: a = np.linalg.solve(v_11, v_01) b = np.linalg.solve(v_11, v_10) v_01_dot_b = np.dot(v_01, b) v_00 -= v_01_dot_b v_11 -= np.dot(v_10, a) v_11 -= v_01_dot_b v_01 = -np.dot(v_01, a) v_10 = -np.dot(v_10, b) delta = abs(v_01).max() return v_00 class BoxProbe: """Box shaped Buttinger probe. Kramers-kroning: real = H(imag); imag = -H(real) """ def __init__(self, eta, a, b, energies, S, T=0.3): from Transport.Hilbert import hilbert se = np.empty(len(energies), complex) se.imag = .5 * (np.tanh(.5 * (energies - a) / T) - np.tanh(.5 * (energies - b) / T)) se.real = hilbert(se.imag) se.imag -= 1 self.selfenergy_e = eta * se self.energies = energies self.S = S def retarded(self, energy): return self.selfenergy_e[self.energies.searchsorted(energy)] * self.S ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/stm.py000066400000000000000000000165401316323560300237560ustar00rootroot00000000000000import time import numpy as np from ase.transport.tools import dagger from ase.transport.selfenergy import LeadSelfEnergy from ase.transport.greenfunction import GreenFunction from ase.parallel import world class STM: def __init__(self, h1, s1, h2, s2 ,h10, s10, h20, s20, eta1, eta2, w=0.5, pdos=[], logfile = None): """XXX 1. Tip 2. Surface h1: ndarray Hamiltonian and overlap matrix for the isolated tip calculation. Note, h1 should contain (at least) one principal layer. h2: ndarray Same as h1 but for the surface. h10: ndarray periodic part of the tip. must include two and only two principal layers. h20: ndarray same as h10, but for the surface The s* are the corresponding overlap matrices. eta1, and eta 2 are (finite) infinitesimals. """ self.pl1 = len(h10) // 2 #principal layer size for the tip self.pl2 = len(h20) // 2 #principal layer size for the surface self.h1 = h1 self.s1 = s1 self.h2 = h2 self.s2 = s2 self.h10 = h10 self.s10 = s10 self.h20 = h20 self.s20 = s20 self.eta1 = eta1 self.eta2 = eta2 self.w = w #asymmetry of the applied bias (0.5=>symmetric) self.pdos = [] self.log = logfile def initialize(self, energies, bias=0): """ energies: list of energies for which the transmission function should be evaluated. bias. Will precalculate the surface greenfunctions of the tip and surface. """ self.bias = bias self.energies = energies nenergies = len(energies) pl1, pl2 = self.pl1, self.pl2 nbf1, nbf2 = len(self.h1), len(self.h2) #periodic part of the tip hs1_dii = self.h10[:pl1, :pl1], self.s10[:pl1, :pl1] hs1_dij = self.h10[:pl1, pl1:2*pl1], self.s10[:pl1, pl1:2*pl1] #coupling between per. and non. per part of the tip h1_im = np.zeros((pl1, nbf1), complex) s1_im = np.zeros((pl1, nbf1), complex) h1_im[:pl1, :pl1], s1_im[:pl1, :pl1] = hs1_dij hs1_dim = [h1_im, s1_im] #periodic part the surface hs2_dii = self.h20[:pl2, :pl2], self.s20[:pl2, :pl2] hs2_dij = self.h20[pl2:2*pl2, :pl2], self.s20[pl2:2*pl2, :pl2] #coupling between per. and non. per part of the surface h2_im = np.zeros((pl2, nbf2), complex) s2_im = np.zeros((pl2, nbf2), complex) h2_im[-pl2:, -pl2:], s2_im[-pl2:, -pl2:] = hs2_dij hs2_dim = [h2_im, s2_im] #tip and surface greenfunction self.selfenergy1 = LeadSelfEnergy(hs1_dii, hs1_dij, hs1_dim, self.eta1) self.selfenergy2 = LeadSelfEnergy(hs2_dii, hs2_dij, hs2_dim, self.eta2) self.greenfunction1 = GreenFunction(self.h1-self.bias*self.w*self.s1, self.s1, [self.selfenergy1], self.eta1) self.greenfunction2 = GreenFunction(self.h2-self.bias*(self.w-1)*self.s2, self.s2, [self.selfenergy2], self.eta2) #Shift the bands due to the bias. bias_shift1 = -bias * self.w bias_shift2 = -bias * (self.w - 1) self.selfenergy1.set_bias(bias_shift1) self.selfenergy2.set_bias(bias_shift2) #tip and surface greenfunction matrices. nbf1_small = nbf1 #XXX Change this for efficiency in the future nbf2_small = nbf2 #XXX -||- coupling_list1 = list(range(nbf1_small))# XXX -||- coupling_list2 = list(range(nbf2_small))# XXX -||- self.gft1_emm = np.zeros((nenergies, nbf1_small, nbf1_small), complex) self.gft2_emm = np.zeros((nenergies, nbf2_small, nbf2_small), complex) for e, energy in enumerate(self.energies): if self.log != None: # and world.rank == 0: T = time.localtime() self.log.write(' %d:%02d:%02d, ' % (T[3], T[4], T[5]) + '%d, %d, %02f\n' % (world.rank, e, energy)) gft1_mm = self.greenfunction1.retarded(energy)[coupling_list1] gft1_mm = np.take(gft1_mm, coupling_list1, axis=1) gft2_mm = self.greenfunction2.retarded(energy)[coupling_list2] gft2_mm = np.take(gft2_mm, coupling_list2, axis=1) self.gft1_emm[e] = gft1_mm self.gft2_emm[e] = gft2_mm if self.log != None and world.rank == 0: self.log.flush() def get_transmission(self, v_12, v_11_2=None, v_22_1=None): """XXX v_12: coupling between tip and surface v_11_2: correction to "on-site" tip elements due to the surface (eq.16). Is only included to first order. v_22_1: corretion to "on-site" surface elements due to he tip (eq.17). Is only included to first order. """ dim0 = v_12.shape[0] dim1 = v_12.shape[1] nenergies = len(self.energies) T_e = np.empty(nenergies,float) v_21 = dagger(v_12) for e, energy in enumerate(self.energies): gft1 = self.gft1_emm[e] if v_11_2!=None: gf1 = np.dot(v_11_2, np.dot(gft1, v_11_2)) gf1 += gft1 #eq. 16 else: gf1 = gft1 gft2 = self.gft2_emm[e] if v_22_1!=None: gf2 = np.dot(v_22_1,np.dot(gft2, v_22_1)) gf2 += gft2 #eq. 17 else: gf2 = gft2 a1 = (gf1 - dagger(gf1)) a2 = (gf2 - dagger(gf2)) self.v_12 = v_12 self.a2 = a2 self.v_21 = v_21 self.a1 = a1 v12_a2 = np.dot(v_12, a2[:dim1]) v21_a1 = np.dot(v_21, a1[-dim0:]) self.v12_a2 = v12_a2 self.v21_a1 = v21_a1 T = -np.trace(np.dot(v12_a2[:,:dim1], v21_a1[:,-dim0:])) #eq. 11 assert abs(T.imag).max() < 1e-14 T_e[e] = T.real self.T_e = T_e return T_e def get_current(self, bias, v_12, v_11_2=None, v_22_1=None): """Very simple function to calculate the current. Asummes zero temperature. bias: type? XXX bias voltage (V) v_12: XXX coupling between tip and surface. v_11_2: correction to onsite elements of the tip due to the potential of the surface. v_22_1: correction to onsite elements of the surface due to the potential of the tip. """ energies = self.energies T_e = self.get_transmission(v_12, v_11_2, v_22_1) bias_window = sorted(-np.array([bias * self.w, bias * (self.w - 1)])) self.bias_window = bias_window #print 'bias window', np.around(bias_window,3) #print 'Shift of tip lead do to the bias:', self.selfenergy1.bias #print 'Shift of surface lead do to the bias:', self.selfenergy2.bias i1 = sum(energies < bias_window[0]) i2 = sum(energies < bias_window[1]) step = 1 if i2 < i1: step = -1 return np.sign(bias)*np.trapz(x=energies[i1:i2:step], y=T_e[i1:i2:step]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/stm_test.py000066400000000000000000000032041316323560300250060ustar00rootroot00000000000000import numpy as np import pylab import ase.transport.stm as stm # Parameters for a simple model. # # # * eps_a # v_ts / \ v_a2 # ... * * * * * * * * * ... # \/ \/ # t1 t2 # # Tip Surface # ----------------| |----------------------- t1 = -1.0 t2 = -2.0 eps_a = 0.4 v_ts = 0.05 v_a2 = 1.0 #Tip h1 = np.zeros([2, 2]) h1[0, 1] = t1 h1[1, 0] = t1 s1 = np.identity(2) h10 = np.zeros([2,2]) h10[0, 1] = t1 h10[1, 0] = t1 s10 = np.identity(2) #Surface with "molecule" a. h2 = np.zeros([2,2]) h2[0, 1] = v_a2 h2[1, 0] = v_a2 h1[0, 0] = eps_a s2 = np.identity(2) h20 = np.zeros([2,2]) h20[0, 1] = t2 h20[1, 0] = t2 s20 = np.identity(2) #Tip Surface coupling V_ts = np.zeros([2,2]) V_ts[1, 0] = v_ts eta1 = 0.0001 eta2 = 0.0001 stm_calc = stm.STM(h1, s1, h2, s2, h10, s10, h20, s20, eta1, eta2) energies = np.arange(-3.0, 3.0, 0.01) stm_calc.initialize(energies) T_stm = stm_calc.get_transmission(V_ts) #Perform the full calculation and compare from ase.transport.calculators import TransportCalculator as TC h = np.zeros([4,4]) h[:2, :2] = h1 h[-2:, -2:] = h2 h[:2, -2:] = V_ts h[-2:, :2] = V_ts.T tc = TC(energies=energies, h=h, h1=h10, h2=h20, eta=eta1, eta1=eta1, eta2=eta2) T_full = tc.get_transmission() pylab.plot(stm_calc.energies, T_stm, 'b') pylab.plot(tc.energies, T_full, 'r--') pylab.show() #bias stuff biass = np.arange(-2.0, 2.0, 0.2) Is = [stm_calc.get_current(bias, V_ts) for bias in biass] pylab.plot(biass, Is, '+') pylab.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/test_transport_calulator.py000066400000000000000000000042351316323560300303120ustar00rootroot00000000000000from __future__ import print_function from ase.transport.calculators import TransportCalculator import numpy as np #Aux. function to write data to a text file. def write(fname,xs,ys): fd = open(fname,'w') for x,y in zip(xs,ys): print(x, y, file=fd) fd.close() H_lead = np.zeros([4,4]) # On-site energies are zero for i in range(4): H_lead[i,i] = 0.0 # Nearest neighbor hopping is -1.0 for i in range(3): H_lead[i,i+1] = -1.0 H_lead[i+1,i] = -1.0 # Next-nearest neighbor hopping is 0.2 for i in range(2): H_lead[i,i+2] = 0.2 H_lead[i+2,i] = 0.2 H_scat = np.zeros([6,6]) # Principal layers on either side of S H_scat[:2,:2] = H_lead[:2,:2] H_scat[-2:,-2:] = H_lead[:2,:2] # Scattering region H_scat[2,2] = 0.0 H_scat[3,3] = 0.0 H_scat[2,3] = -0.8 H_scat[3,2] = -0.8 # External coupling H_scat[1,2] = 0.2 H_scat[2,1] = 0.2 H_scat[3,4] = 0.2 H_scat[4,3] = 0.2 energies = np.arange(-3,3,0.02) tcalc = TransportCalculator(h=H_scat, h1=H_lead, eta=0.02, energies=energies) T = tcalc.get_transmission() tcalc.set(pdos=[2, 3]) pdos = tcalc.get_pdos() tcalc.set(dos=True) dos = tcalc.get_dos() write('T.dat',tcalc.energies,T) write('pdos0.dat', tcalc.energies,pdos[0]) write('pdos1.dat', tcalc.energies,pdos[1]) #subdiagonalize h_rot, s_rot, eps, u = tcalc.subdiagonalize_bfs([2, 3], apply=True) T_rot = tcalc.get_transmission() dos_rot = tcalc.get_dos() pdos_rot = tcalc.get_pdos() write('T_rot.dat', tcalc.energies,T_rot) write('pdos0_rot.dat', tcalc.energies, pdos_rot[0]) write('pdos1_rot.dat', tcalc.energies, pdos_rot[1]) print('Subspace eigenvalues:', eps) assert sum(abs(eps-(-0.8, 0.8))) < 2.0e-15, 'Subdiagonalization. error' print('Max deviation of T after the rotation:', np.abs(T-T_rot).max()) assert max(abs(T-T_rot)) < 2.0e-15, 'Subdiagonalization. error' #remove coupling h_cut, s_cut = tcalc.cutcoupling_bfs([2], apply=True) T_cut = tcalc.get_transmission() dos_cut = tcalc.get_dos() pdos_cut = tcalc.get_pdos() write('T_cut.dat', tcalc.energies, T_cut) write('pdos0_cut.dat', tcalc.energies,pdos_cut[0]) write('pdos1_cut.dat', tcalc.energies,pdos_cut[1]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/transport/tools.py000066400000000000000000000341521316323560300243120ustar00rootroot00000000000000from __future__ import print_function import numpy as np from math import sqrt def tri2full(H_nn, UL='L'): """Fill in values of hermitian matrix. Fill values in lower or upper triangle of H_nn based on the opposite triangle, such that the resulting matrix is symmetric/hermitian. UL='U' will copy (conjugated) values from upper triangle into the lower triangle. UL='L' will copy (conjugated) values from lower triangle into the upper triangle. """ N, tmp = H_nn.shape assert N == tmp, 'Matrix must be square' # assert np.isreal(H_nn.diagonal()).all(), 'Diagonal should be real' if UL != 'L': H_nn = H_nn.T for n in range(N - 1): H_nn[n, n + 1:] = H_nn[n + 1:, n].conj() def dagger(matrix): return np.conj(matrix.T) def rotate_matrix(h, u): return np.dot(u.T.conj(), np.dot(h, u)) def get_subspace(matrix, index): """Get the subspace spanned by the basis function listed in index""" assert matrix.ndim == 2 and matrix.shape[0] == matrix.shape[1] return matrix.take(index, 0).take(index, 1) permute_matrix = get_subspace def normalize(matrix, S=None): """Normalize column vectors. :: = 1 """ for col in matrix.T: if S is None: col /= np.linalg.norm(col) else: col /= np.sqrt(np.dot(col.conj(), np.dot(S, col))) def subdiagonalize(h_ii, s_ii, index_j): nb = h_ii.shape[0] nb_sub = len(index_j) h_sub_jj = get_subspace(h_ii, index_j) s_sub_jj = get_subspace(s_ii, index_j) e_j, v_jj = np.linalg.eig(np.linalg.solve(s_sub_jj, h_sub_jj)) normalize(v_jj, s_sub_jj) # normalize: = 1 permute_list = np.argsort(e_j.real) e_j = np.take(e_j, permute_list) v_jj = np.take(v_jj, permute_list, axis=1) # Setup transformation matrix c_ii = np.identity(nb, complex) for i in range(nb_sub): for j in range(nb_sub): c_ii[index_j[i], index_j[j]] = v_jj[i, j] h1_ii = rotate_matrix(h_ii, c_ii) s1_ii = rotate_matrix(s_ii, c_ii) return h1_ii, s1_ii, c_ii, e_j def cutcoupling(h, s, index_n): for i in index_n: s[:, i] = 0.0 s[i, :] = 0.0 s[i, i] = 1.0 Ei = h[i, i] h[:, i] = 0.0 h[i, :] = 0.0 h[i, i] = Ei def fermidistribution(energy, kt): # fermi level is fixed to zero return 1.0 / (1.0 + np.exp(energy / kt)) def fliplr(a): length = len(a) b = [0] * length for i in range(length): b[i] = a[length - i - 1] return b def plot_path(energy): import pylab pylab.plot(np.real(energy), np.imag(energy), 'b--o') pylab.show() def function_integral(function, calcutype): # return the integral of the 'function' on 'intrange' # the function can be a value or a matrix, arg1,arg2 are the possible # parameters of the function intctrl = function.intctrl if calcutype == 'eqInt': intrange = intctrl.eqintpath tol = intctrl.eqinttol if hasattr(function.intctrl, 'eqpath_radius'): radius = function.intctrl.eqpath_radius else: radius = -1 if hasattr(function.intctrl, 'eqpath_origin'): origin = function.intctrl.eqpath_origin else: origin = 1000 elif calcutype == 'neInt': intrange = intctrl.neintpath tol = intctrl.neinttol radius = -1 origin = 1000 elif calcutype == 'locInt': intrange = intctrl.locintpath tol = intctrl.locinttol if hasattr(function.intctrl, 'locpath_radius'): radius = function.intctrl.locpath_radius else: radius = -1 if hasattr(function.intctrl, 'locpath_origin'): origin = function.intctrl.locpath_origin else: origin = 1000 trace = 0 a = 0. b = 1. # Initialize with 13 function evaluations. c = (a + b) / 2 h = (b - a) / 2 realmin = 2e-17 s = [.942882415695480, sqrt(2.0 / 3), .641853342345781, 1 / sqrt(5.0), .236383199662150] s1 = [0] * len(s) s2 = [0] * len(s) for i in range(len(s)): s1[i] = c - s[i] * h s2[i] = c + fliplr(s)[i] * h x0 = [a] + s1 + [c] + s2 + [b] s0 = [.0158271919734802, .094273840218850, .155071987336585, .188821573960182, .199773405226859, .224926465333340] w0 = s0 + [.242611071901408] + fliplr(s0) w1 = [1, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 1] w2 = [77, 0, 432, 0, 625, 0, 672, 0, 625, 0, 432, 0, 77] for i in range(len(w1)): w1[i] = w1[i] / 6.0 w2[i] = w2[i] / 1470.0 dZ = [intrange[:len(intrange) - 1], intrange[1:]] hmin = [0] * len(dZ[1]) path_type = [] for i in range(len(intrange) - 1): rs = np.abs(dZ[0][i] - origin) re = np.abs(dZ[1][i] - origin) if abs(rs - radius) < 1.0e-8 and abs(re - radius) < 1.0e-8: path_type.append('half_circle') else: path_type.append('line') for i in range(len(dZ[1])): if path_type[i] == 'half_circle': dZ[0][i] = 0 dZ[1][i] = np.pi for i in range(len(dZ[1])): dZ[1][i] = dZ[1][i] - dZ[0][i] hmin[i] = realmin / 1024 * abs(dZ[1][i]) temp = np.array([[1] * 13, x0]).transpose() Zx = np.dot(temp, np.array(dZ)) Zxx = [] for i in range(len(intrange) - 1): for j in range(13): Zxx.append(Zx[j][i]) ns = 0 ne = 12 if path_type[0] == 'line': yns = function.calgfunc(Zxx[ns], calcutype) elif path_type[0] == 'half_circle': energy = origin + radius * np.exp((np.pi - Zxx[ns + i]) * 1.j) yns = (-1.j * radius * np.exp(-1.j * Zxx[ns + i]) * function.calgfunc(energy, calcutype)) fcnt = 0 for n in range(len(intrange) - 1): # below evaluate the integral and adjust the tolerance Q1pQ0 = yns * (w1[0] - w0[0]) Q2pQ0 = yns * (w2[0] - w0[0]) fcnt = fcnt + 12 for i in range(1, 12): if path_type[n] == 'line': yne = function.calgfunc(Zxx[ns + i], calcutype) elif path_type[n] == 'half_circle': energy = origin + radius * np.exp((np.pi - Zxx[ns + i]) * 1.j) yne = (-1.j * radius * np.exp(-1.j * Zxx[ns + i]) * function.calgfunc(energy, calcutype)) Q1pQ0 += yne * (w1[i] - w0[i]) Q2pQ0 += yne * (w2[i] - w0[i]) # Increase the tolerance if refinement appears to be effective r = np.abs(Q2pQ0) / (np.abs(Q1pQ0) + np.abs(realmin)) dim = np.product(r.shape) r = np.sum(r) / dim if r > 0 and r < 1: thistol = tol / r else: thistol = tol if path_type[n] == 'line': yne = function.calgfunc(Zxx[ne], calcutype) elif path_type[n] == 'half_circle': energy = origin + radius * np.exp((np.pi - Zxx[ne]) * 1.j) yne = (-1.j * radius * np.exp(-1.j * Zxx[ne]) * function.calgfunc(energy, calcutype)) # Call the recursive core integrator Qk, xpk, wpk, fcnt, warn = quadlstep(function, Zxx[ns], Zxx[ne], yns, yne, thistol, trace, fcnt, hmin[n], calcutype, path_type[n], origin, radius) if n == 0: Q = np.copy(Qk) Xp = xpk[:] Wp = wpk[:] else: Q += Qk Xp = Xp[:-1] + xpk Wp = Wp[:-1] + [Wp[-1] + wpk[0]] + wpk[1:] if warn == 1: print('warning: Minimum step size reached,singularity possible') elif warn == 2: print('warning: Maximum function count excced; singularity likely') elif warn == 3: print('warning: Infinite or Not-a-Number function value ' 'encountered') else: pass ns += 13 ne += 13 yns = np.copy(yne) return Q, Xp, Wp, fcnt def quadlstep(f, Za, Zb, fa, fb, tol, trace, fcnt, hmin, calcutype, path_type, origin, radius): # Gaussian-Lobatto and Kronrod method # QUADLSTEP Recursive core routine for integral # input parameters: # f ---------- function, here we just use the module calgfunc # to return the value, if wanna use it for # another one, change it # Za, Zb ---------- the start and end point of the integral # fa, fb ---------- the function value on Za and Zb # fcnt ---------- the number of the function recalled till now # output parameters: # Q ---------- integral # Xp ---------- selected points # Wp ---------- weight # fcnt ---------- the number of the function recalled till now maxfcnt = 10000 # Evaluate integrand five times in interior of subintrval [a,b] Zh = (Zb - Za) / 2.0 if abs(Zh) < hmin: # Minimun step size reached; singularity possible Q = Zh * (fa + fb) if path_type == 'line': Xp = [Za, Zb] elif path_type == 'half_circle': Xp = [origin + radius * np.exp((np.pi - Za) * 1.j), origin + radius * np.exp((np.pi - Zb) * 1.j)] Wp = [Zh, Zh] warn = 1 return Q, Xp, Wp, fcnt, warn fcnt += 5 if fcnt > maxfcnt: # Maximum function count exceed; singularity likely Q = Zh * (fa + fb) if path_type == 'line': Xp = [Za, Zb] elif path_type == 'half_circle': Xp = [origin + radius * np.exp((np.pi - Za) * 1.j), origin + radius * np.exp((np.pi - Zb) * 1.j)] Wp = [Zh, Zh] warn = 2 return Q, Xp, Wp, fcnt, warn x = [0.18350341907227, 0.55278640450004, 1.0, 1.44721359549996, 1.81649658092773] Zx = [0] * len(x) y = [0] * len(x) for i in range(len(x)): x[i] *= 0.5 Zx[i] = Za + (Zb - Za) * x[i] if path_type == 'line': y[i] = f.calgfunc(Zx[i], calcutype) elif path_type == 'half_circle': energy = origin + radius * np.exp((np.pi - Zx[i]) * 1.j) y[i] = f.calgfunc(energy, calcutype) # Four point Lobatto quadrature s1 = [1.0, 0.0, 5.0, 0.0, 5.0, 0.0, 1.0] s2 = [77.0, 432.0, 625.0, 672.0, 625.0, 432.0, 77.0] Wk = [0] * 7 Wp = [0] * 7 for i in range(7): Wk[i] = (Zh / 6.0) * s1[i] Wp[i] = (Zh / 1470.0) * s2[i] if path_type == 'line': Xp = [Za] + Zx + [Zb] elif path_type == 'half_circle': Xp = [Za] + Zx + [Zb] for i in range(7): factor = -1.j * radius * np.exp(1.j * (np.pi - Xp[i])) Wk[i] *= factor Wp[i] *= factor Xp[i] = origin + radius * np.exp((np.pi - Xp[i]) * 1.j) Qk = fa * Wk[0] + fb * Wk[6] Q = fa * Wp[0] + fb * Wp[6] for i in range(1, 6): Qk += y[i - 1] * Wk[i] Q += y[i - 1] * Wp[i] if np.isinf(np.max(np.abs(Q))): Q = Zh * (fa + fb) if path_type == 'line': Xp = [Za, Zb] elif path_type == 'half_circle': Xp = [origin + radius * np.exp((np.pi - Za) * 1.j), origin + radius * np.exp((np.pi - Zb) * 1.j)] Wp = [Zh, Zh] warn = 3 return Qk, Xp, Wp, fcnt, warn else: pass if trace: print(fcnt, np.real(Za), np.imag(Za), np.abs(Zh)) # Check accurancy of integral over this subinterval XXk = [Xp[0], Xp[2], Xp[4], Xp[6]] WWk = [Wk[0], Wk[2], Wk[4], Wk[6]] YYk = [fa, y[1], y[3], fb] if np.max(np.abs(Qk - Q)) <= tol: warn = 0 return Q, XXk, WWk, fcnt, warn # Subdivide into six subintevals else: Q, Xk, Wk, fcnt, warn = quadlstep(f, Za, Zx[1], fa, YYk[1], tol, trace, fcnt, hmin, calcutype, path_type, origin, radius) Qk, xkk, wkk, fcnt, warnk = quadlstep( f, Zx[1], Zx[3], YYk[1], YYk[2], tol, trace, fcnt, hmin, calcutype, path_type, origin, radius) Q += Qk Xk = Xk[:-1] + xkk Wk = Wk[:-1] + [Wk[-1] + wkk[0]] + wkk[1:] warn = max(warn, warnk) Qk, xkk, wkk, fcnt, warnk = quadlstep(f, Zx[3], Zb, YYk[2], fb, tol, trace, fcnt, hmin, calcutype, path_type, origin, radius) Q += Qk Xk = Xk[:-1] + xkk Wk = Wk[:-1] + [Wk[-1] + wkk[0]] + wkk[1:] warn = max(warn, warnk) return Q, Xk, Wk, fcnt, warn def mytextread0(filename): num = 0 df = open(filename) df.seek(0) for line in df: if num == 0: dim = line.strip().split(' ') row = int(dim[0]) col = int(dim[1]) mat = np.empty([row, col]) else: data = line.strip().split(' ') if len(data) == 0 or len(data) == 1: break else: for i in range(len(data)): mat[num - 1, i] = float(data[i]) num += 1 return mat def mytextread1(filename): num = 0 df = open(filename) df.seek(0) data = [] for line in df: tmp = line.strip() if len(tmp) != 0: data.append(float(tmp)) else: break dim = int(sqrt(len(data))) mat = np.empty([dim, dim]) for i in range(dim): for j in range(dim): mat[i, j] = data[num] num += 1 return mat def mytextwrite1(filename, mat): df = open(filename, 'w') df.seek(0) dim = mat.shape[0] if dim != mat.shape[1]: print('matwirte, matrix is not square') for i in range(dim): for j in range(dim): df.write('%20.20e\n' % mat[i, j]) df.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/units.py000066400000000000000000000161641316323560300222630ustar00rootroot00000000000000"""ase.units Physical constants and units derived from CODATA for converting to and from ase internal units. """ from math import pi, sqrt # the version we actually use __codata_version__ = '2014' # Instead of a plain dict, if the units are in the __dict__ of a # dict subclass, they can be accessed as attributes in a similar way # to a module. class Units(dict): """Dictionary for units that supports .attribute access.""" def __init__(self, *args, **kwargs): super(Units, self).__init__(*args, **kwargs) self.__dict__ = self # this is the hard-coded CODATA values # all other units are dynamically derived from these values upon import of the # module CODATA = { # the "original" CODATA version ase used ever since # Constants from Konrad Hinsen's PhysicalQuantities module (1986 CODATA) # Add the constant pi used to define the mu0 and hbar here for reference # as well '1986': {'_c': 299792458., # speed of light, m/s '_mu0': 4.e-7 * pi, # permeability of vacuum '_Grav': 6.67259e-11, # gravitational constant '_hplanck': 6.6260755e-34, # Planck constant, J s '_e': 1.60217733e-19, # elementary charge '_me': 9.1093897e-31, # electron mass '_mp': 1.6726231e-27, # proton mass '_Nav': 6.0221367e23, # Avogadro number '_k': 1.380658e-23, # Boltzmann constant, J/K '_amu': 1.6605402e-27}, # atomic mass unit, kg # CODATA 1998 taken from # http://dx.doi.org/10.1103/RevModPhys.72.351 '1998': {'_c': 299792458., '_mu0': 4.0e-7 * pi, '_Grav': 6.673e-11, '_hplanck': 6.62606876e-34, '_e': 1.602176462e-19, '_me': 9.10938188e-31, '_mp': 1.67262158e-27, '_Nav': 6.02214199e23, '_k': 1.3806503e-23, '_amu': 1.66053873e-27}, # CODATA 2002 taken from # http://dx.doi.org/10.1103/RevModPhys.77.1 '2002': {'_c': 299792458., '_mu0': 4.0e-7 * pi, '_Grav': 6.6742e-11, '_hplanck': 6.6260693e-34, '_e': 1.60217653e-19, '_me': 9.1093826e-31, '_mp': 1.67262171e-27, '_Nav': 6.0221415e23, '_k': 1.3806505e-23, '_amu': 1.66053886e-27}, # CODATA 2006 taken from # http://dx.doi.org/10.1103/RevModPhys.80.633 '2006': {'_c': 299792458., '_mu0': 4.0e-7 * pi, '_Grav': 6.67428e-11, '_hplanck': 6.62606896e-34, '_e': 1.602176487e-19, '_me': 9.10938215e-31, '_mp': 1.672621637e-27, '_Nav': 6.02214179e23, '_k': 1.3806504e-23, '_amu': 1.660538782e-27}, # CODATA 2010 taken from # http://dx.doi.org/10.1103/RevModPhys.84.1527 '2010': {'_c': 299792458., '_mu0': 4.0e-7 * pi, '_Grav': 6.67384e-11, '_hplanck': 6.62606957e-34, '_e': 1.602176565e-19, '_me': 9.10938291e-31, '_mp': 1.672621777e-27, '_Nav': 6.02214129e23, '_k': 1.3806488e-23, '_amu': 1.660538921e-27}, # CODATA 2014 taken from # http://arxiv.org/pdf/1507.07956.pdf '2014': {'_c': 299792458., '_mu0': 4.0e-7 * pi, '_Grav': 6.67408e-11, '_hplanck': 6.626070040e-34, '_e': 1.6021766208e-19, '_me': 9.10938356e-31, '_mp': 1.672621898e-27, '_Nav': 6.022140857e23, '_k': 1.38064852e-23, '_amu': 1.660539040e-27}} def create_units(codata_version): """ Function that creates a dictionary containing all units previously hard coded in ase.units depending on a certain CODATA version. Note that returned dict has attribute access it can be used in place of the module or to update your local or global namespace. Parameters: codata_version: str The CODATA version to be used. Implemented are * '1986' * '1998' * '2002' * '2006' * '2010' * '2014' Returns: units: dict Dictionary that contains all formerly hard coded variables from ase.units as key-value pairs. The dict supports attribute access. Raises: NotImplementedError If the required CODATA version is not known. """ try: u = Units(CODATA[codata_version]) except KeyError: raise NotImplementedError('CODATA version "{0}" not implemented' .format(__codata_version__)) # derived from the CODATA values u['_eps0'] = (1 / u['_mu0'] / u['_c']**2) # permittivity of vacuum u['_hbar'] = u['_hplanck'] / (2 * pi) # Planck constant / 2pi, J s u['Ang'] = u['Angstrom'] = 1.0 u['nm'] = 10.0 u['Bohr'] = (4e10 * pi * u['_eps0'] * u['_hbar']**2 / u['_me'] / u['_e']**2) # Bohr radius u['eV'] = 1.0 u['Hartree'] = (u['_me'] * u['_e']**3 / 16 / pi**2 / u['_eps0']**2 / u['_hbar']**2) u['kJ'] = 1000.0 / u['_e'] u['kcal'] = 4.184 * u['kJ'] u['mol'] = u['_Nav'] u['Rydberg'] = 0.5 * u['Hartree'] u['Ry'] = u['Rydberg'] u['Ha'] = u['Hartree'] u['second'] = 1e10 * sqrt(u['_e'] / u['_amu']) u['fs'] = 1e-15 * u['second'] u['kB'] = u['_k'] / u['_e'] # Boltzmann constant, eV/K u['Pascal'] = (1 / u['_e']) / 1e30 # J/m^3 u['GPa'] = 1e9 * u['Pascal'] u['Debye'] = 1.0 / 1e11 / u['_e'] / u['_c'] u['alpha'] = (u['_e']**2 / (4 * pi * u['_eps0']) / u['_hbar'] / u['_c']) # fine structure constant u['invcm'] = (100 * u['_c'] * u['_hplanck'] / u['_e']) # cm^-1 energy unit # Derived atomic units that have no assigned name: # atomic unit of time, s: u['_aut'] = u['_hbar'] / (u['alpha']**2 * u['_me'] * u['_c']**2) # atomic unit of velocity, m/s: u['_auv'] = u['_e']**2 / u['_hbar'] / (4 * pi * u['_eps0']) # atomic unit of force, N: u['_auf'] = u['alpha']**3 * u['_me']**2 * u['_c']**3 / u['_hbar'] # atomic unit of pressure, Pa: u['_aup'] = u['alpha']**5 * u['_me']**4 * u['_c']**5 / u['_hbar']**3 u['AUT'] = u['second'] * u['_aut'] # SI units u['m'] = 1e10 * u['Ang'] # metre u['kg'] = 1. / u['_amu'] # kilogram u['s'] = u['second'] # second u['A'] = 1.0 / u['_e'] / u['s'] # ampere # derived u['J'] = u['kJ'] / 1000 # Joule = kg * m**2 / s**2 u['C'] = 1.0 / u['_e'] # Coulomb = A * s return u # Define all the expected symbols with dummy values so that introspection # will know that they exist when the module is imported, even though their # values are immediately overwritten. # pylint: disable=invalid-name (_Grav, _Nav, _amu, _auf, _aup, _aut, _auv, _c, _e, _eps0, _hbar, _hplanck, _k, _me, _mp, _mu0, alpha, eV, fs, invcm, kB, kJ, kcal, kg, m, mol, nm, s, second, A, AUT, Ang, Angstrom, Bohr, C, Debye, GPa, Ha, Hartree, J, Pascal, Ry, Rydberg) = [0.0] * 43 # Now update the module scope: globals().update(create_units(__codata_version__)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/000077500000000000000000000000001316323560300216775ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/__init__.py000066400000000000000000000176671316323560300240310ustar00rootroot00000000000000import errno import functools import os import pickle import sys import time from importlib import import_module from math import sin, cos, radians, atan2, degrees from contextlib import contextmanager try: from math import gcd except ImportError: from fractions import gcd import numpy as np from ase.utils.formula import formula_hill, formula_metal from ase.data import covalent_radii __all__ = ['exec_', 'basestring', 'import_module', 'seterr', 'plural', 'devnull', 'gcd', 'convert_string_to_fd', 'Lock', 'opencew', 'OpenLock', 'rotate', 'irotate', 'givens', 'hsv2rgb', 'hsv', 'pickleload', 'FileNotFoundError', 'formula_hill', 'formula_metal'] # Python 2+3 compatibility stuff: if sys.version_info[0] > 2: import builtins exec_ = getattr(builtins, 'exec') basestring = str from io import StringIO pickleload = functools.partial(pickle.load, encoding='bytes') FileNotFoundError = getattr(builtins, 'FileNotFoundError') else: class FileNotFoundError(OSError): pass # Legacy Python: def exec_(code, dct): exec('exec code in dct') basestring = basestring from StringIO import StringIO pickleload = pickle.load StringIO # appease pyflakes @contextmanager def seterr(**kwargs): """Set how floating-point errors are handled. See np.seterr() for more details. """ old = np.seterr(**kwargs) yield np.seterr(**old) def plural(n, word): """Use plural for n!=1. >>> plural(0, 'egg'), plural(1, 'egg'), plural(2, 'egg') ('0 eggs', '1 egg', '2 eggs') """ if n == 1: return '1 ' + word return '%d %ss' % (n, word) class DevNull: encoding = 'UTF-8' def write(self, string): pass def flush(self): pass def seek(self, offset, whence=0): return 0 def tell(self): return 0 def close(self): pass def isatty(self): return False devnull = DevNull() def convert_string_to_fd(name, world=None): """Create a file-descriptor for text output. Will open a file for writing with given name. Use None for no output and '-' for sys.stdout. """ if world is None: from ase.parallel import world if name is None or world.rank != 0: return devnull if name == '-': return sys.stdout if isinstance(name, basestring): return open(name, 'w') return name # we assume name is already a file-descriptor # Only Windows has O_BINARY: CEW_FLAGS = os.O_CREAT | os.O_EXCL | os.O_WRONLY | getattr(os, 'O_BINARY', 0) def opencew(filename, world=None): """Create and open filename exclusively for writing. If master cpu gets exclusive write access to filename, a file descriptor is returned (a dummy file descriptor is returned on the slaves). If the master cpu does not get write access, None is returned on all processors.""" if world is None: from ase.parallel import world if world.rank == 0: try: fd = os.open(filename, CEW_FLAGS) except OSError as ex: error = ex.errno else: error = 0 fd = os.fdopen(fd, 'wb') else: error = 0 fd = devnull # Syncronize: error = world.sum(error) if error == errno.EEXIST: return None if error: raise OSError(error, 'Error', filename) return fd class Lock: def __init__(self, name='lock', world=None): self.name = name if world is None: from ase.parallel import world self.world = world def acquire(self): while True: fd = opencew(self.name, self.world) if fd is not None: break time.sleep(1.0) def release(self): self.world.barrier() if self.world.rank == 0: os.remove(self.name) def __enter__(self): self.acquire() def __exit__(self, type, value, tb): self.release() class OpenLock: def acquire(self): pass def release(self): pass def __enter__(self): pass def __exit__(self, type, value, tb): pass def rotate(rotations, rotation=np.identity(3)): """Convert string of format '50x,-10y,120z' to a rotation matrix. Note that the order of rotation matters, i.e. '50x,40z' is different from '40z,50x'. """ if rotations == '': return rotation.copy() for i, a in [('xyz'.index(s[-1]), radians(float(s[:-1]))) for s in rotations.split(',')]: s = sin(a) c = cos(a) if i == 0: rotation = np.dot(rotation, [(1, 0, 0), (0, c, s), (0, -s, c)]) elif i == 1: rotation = np.dot(rotation, [(c, 0, -s), (0, 1, 0), (s, 0, c)]) else: rotation = np.dot(rotation, [(c, s, 0), (-s, c, 0), (0, 0, 1)]) return rotation def givens(a, b): """Solve the equation system:: [ c s] [a] [r] [ ] . [ ] = [ ] [-s c] [b] [0] """ sgn = np.sign if b == 0: c = sgn(a) s = 0 r = abs(a) elif abs(b) >= abs(a): cot = a / b u = sgn(b) * (1 + cot**2)**0.5 s = 1. / u c = s * cot r = b * u else: tan = b / a u = sgn(a) * (1 + tan**2)**0.5 c = 1. / u s = c * tan r = a * u return c, s, r def irotate(rotation, initial=np.identity(3)): """Determine x, y, z rotation angles from rotation matrix.""" a = np.dot(initial, rotation) cx, sx, rx = givens(a[2, 2], a[1, 2]) cy, sy, ry = givens(rx, a[0, 2]) cz, sz, rz = givens(cx * a[1, 1] - sx * a[2, 1], cy * a[0, 1] - sy * (sx * a[1, 1] + cx * a[2, 1])) x = degrees(atan2(sx, cx)) y = degrees(atan2(-sy, cy)) z = degrees(atan2(sz, cz)) return x, y, z def hsv2rgb(h, s, v): """http://en.wikipedia.org/wiki/HSL_and_HSV h (hue) in [0, 360[ s (saturation) in [0, 1] v (value) in [0, 1] return rgb in range [0, 1] """ if v == 0: return 0, 0, 0 if s == 0: return v, v, v i, f = divmod(h / 60., 1) p = v * (1 - s) q = v * (1 - s * f) t = v * (1 - s * (1 - f)) if i == 0: return v, t, p elif i == 1: return q, v, p elif i == 2: return p, v, t elif i == 3: return p, q, v elif i == 4: return t, p, v elif i == 5: return v, p, q else: raise RuntimeError('h must be in [0, 360]') def hsv(array, s=.9, v=.9): array = (array + array.min()) * 359. / (array.max() - array.min()) result = np.empty((len(array.flat), 3)) for rgb, h in zip(result, array.flat): rgb[:] = hsv2rgb(h, s, v) return np.reshape(result, array.shape + (3,)) def natural_cutoffs(atoms, mult=1, **kwargs): """Generate a radial cutoff for every atom based on covalent radii The covalent radii are a reasonable cutoff estimation for bonds in many applications such as neighborlists, so function generates an atoms length list of radii based on this idea. atoms: An atoms object mult: A multiplier for all cutoffs, useful for coarse grained adjustment kwargs: Symbol of the atom and its corresponding cutoff, used to override the covalent radii """ return [kwargs.get(atom.symbol, covalent_radii[atom.number] * mult) for atom in atoms] # This code does the same, but requires pylab # def cmap(array, name='hsv'): # import pylab # a = (array + array.min()) / array.ptp() # rgba = getattr(pylab.cm, name)(a) # return rgba[:-1] # return rgb only (not alpha) def longsum(x): """128-bit floating point sum.""" return float(np.asarray(x, dtype=np.longdouble).sum()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/_linprog.py000066400000000000000000000330361316323560300240670ustar00rootroot00000000000000"""Copy of SciPy-0.15's scipy.optimize._linprog module.""" from __future__ import division, print_function, absolute_import import collections import numpy as np OptimizeResult = collections.namedtuple('OptimizeResult', 'x, fun') def _pivot_col(T, tol=1.0E-12, bland=False): ma = np.ma.masked_where(T[-1, :-1] >= -tol, T[-1, :-1], copy=False) if ma.count() == 0: return False, np.nan if bland: return True, np.where(ma.mask is False)[0][0] return True, np.ma.where(ma == ma.min())[0][0] def _pivot_row(T, pivcol, phase, tol=1.0E-12): if phase == 1: k = 2 else: k = 1 ma = np.ma.masked_where(T[:-k, pivcol] <= tol, T[:-k, pivcol], copy=False) if ma.count() == 0: return False, np.nan mb = np.ma.masked_where(T[:-k, pivcol] <= tol, T[:-k, -1], copy=False) q = mb / ma return True, np.ma.where(q == q.min())[0][0] def _solve_simplex(T, n, basis, maxiter=1000, phase=2, callback=None, tol=1.0E-12, nit0=0, bland=False): nit = nit0 complete = False solution = np.zeros(T.shape[1] - 1, dtype=np.float64) if phase == 1: m = T.shape[0] - 2 elif phase == 2: m = T.shape[0] - 1 else: raise ValueError("Argument 'phase' to _solve_simplex must be 1 or 2") while not complete: # Find the pivot column pivcol_found, pivcol = _pivot_col(T, tol, bland) if not pivcol_found: pivcol = np.nan pivrow = np.nan status = 0 complete = True else: # Find the pivot row pivrow_found, pivrow = _pivot_row(T, pivcol, phase, tol) if not pivrow_found: status = 3 complete = True if callback is not None: solution[:] = 0 solution[basis[:m]] = T[:m, -1] callback(solution[:n], **{"tableau": T, "phase": phase, "nit": nit, "pivot": (pivrow, pivcol), "basis": basis, "complete": complete and phase == 2}) if not complete: if nit >= maxiter: # Iteration limit exceeded status = 1 complete = True else: # variable represented by pivcol enters # variable in basis[pivrow] leaves basis[pivrow] = pivcol pivval = T[pivrow][pivcol] T[pivrow, :] = T[pivrow, :] / pivval for irow in range(T.shape[0]): if irow != pivrow: T[irow] = T[irow] - T[pivrow] * T[irow, pivcol] nit += 1 return nit, status def linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, maxiter=1000, disp=False, callback=None, tol=1.0E-12, bland=False, **unknown_options): status = 0 messages = {0: "Optimization terminated successfully.", 1: "Iteration limit reached.", 2: "Optimzation failed. Unable to find a feasible" " starting point.", 3: "Optimization failed. The problem appears to be unbounded.", 4: "Optimization failed. Singular matrix encountered."} have_floor_variable = False cc = np.asarray(c) # The initial value of the objective function element in the tableau f0 = 0 # The number of variables as given by c n = len(c) # Convert the input arguments to arrays (sized to zero if not provided) Aeq = np.asarray(A_eq) if A_eq is not None else np.empty([0, len(cc)]) Aub = np.asarray(A_ub) if A_ub is not None else np.empty([0, len(cc)]) beq = np.ravel(np.asarray(b_eq)) if b_eq is not None else np.empty([0]) bub = np.ravel(np.asarray(b_ub)) if b_ub is not None else np.empty([0]) # Analyze the bounds and determine what modifications to me made to # the constraints in order to accommodate them. L = np.zeros(n, dtype=np.float64) U = np.ones(n, dtype=np.float64) * np.inf if bounds is None or len(bounds) == 0: pass elif len(bounds) == 2 and not hasattr(bounds[0], '__len__'): # All bounds are the same L = np.asarray(n * [bounds[0]], dtype=np.float64) U = np.asarray(n * [bounds[1]], dtype=np.float64) else: if len(bounds) != n: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Length of bounds is inconsistent with the length of c") else: try: for i in range(n): if len(bounds[i]) != 2: raise IndexError() L[i] = (bounds[i][0] if bounds[i][0] is not None else -np.inf) U[i] = bounds[i][1] if bounds[i][1] is not None else np.inf except IndexError: status = -1 message = ("Invalid input for linprog with " "method = 'simplex'. bounds must be a n x 2 " "sequence/array where n = len(c).") if np.any(L == -np.inf): # If any lower-bound constraint is a free variable # add the first column variable as the "floor" variable which # accommodates the most negative variable in the problem. n = n + 1 L = np.concatenate([np.array([0]), L]) U = np.concatenate([np.array([np.inf]), U]) cc = np.concatenate([np.array([0]), cc]) Aeq = np.hstack([np.zeros([Aeq.shape[0], 1]), Aeq]) Aub = np.hstack([np.zeros([Aub.shape[0], 1]), Aub]) have_floor_variable = True # Now before we deal with any variables with lower bounds < 0, # deal with finite bounds which can be simply added as new constraints. # Also validate bounds inputs here. for i in range(n): if(L[i] > U[i]): status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Lower bound %d is greater than upper bound %d" % (i, i)) if np.isinf(L[i]) and L[i] > 0: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Lower bound may not be +infinity") if np.isinf(U[i]) and U[i] < 0: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Upper bound may not be -infinity") if np.isfinite(L[i]) and L[i] > 0: # Add a new lower-bound (negative upper-bound) constraint Aub = np.vstack([Aub, np.zeros(n)]) Aub[-1, i] = -1 bub = np.concatenate([bub, np.array([-L[i]])]) L[i] = 0 if np.isfinite(U[i]): # Add a new upper-bound constraint Aub = np.vstack([Aub, np.zeros(n)]) Aub[-1, i] = 1 bub = np.concatenate([bub, np.array([U[i]])]) U[i] = np.inf # Now find negative lower bounds (finite or infinite) which require a # change of variables or free variables and handle them appropriately for i in range(0, n): if L[i] < 0: if np.isfinite(L[i]) and L[i] < 0: # Add a change of variables for x[i] # For each row in the constraint matrices, we take the # coefficient from column i in A, # and subtract the product of that and L[i] to the RHS b beq[:] = beq[:] - Aeq[:, i] * L[i] bub[:] = bub[:] - Aub[:, i] * L[i] # We now have a nonzero initial value for the objective # function as well. f0 = f0 - cc[i] * L[i] else: # This is an unrestricted variable, let x[i] = u[i] - v[0] # where v is the first column in all matrices. Aeq[:, 0] = Aeq[:, 0] - Aeq[:, i] Aub[:, 0] = Aub[:, 0] - Aub[:, i] cc[0] = cc[0] - cc[i] if np.isinf(U[i]): if U[i] < 0: status = -1 message = ("Invalid input for linprog with " "method = 'simplex'. Upper bound may not be -inf.") # The number of upper bound constraints (rows in A_ub and elements in b_ub) mub = len(bub) # The number of equality constraints (rows in A_eq and elements in b_eq) meq = len(beq) # The total number of constraints m = mub + meq # The number of slack variables (one for each of the upper-bound # constraints) n_slack = mub # The number of artificial variables (one for each lower-bound and equality # constraint) n_artificial = meq + (bub < 0).sum() try: Aub_rows, Aub_cols = Aub.shape except ValueError: raise ValueError("Invalid input. A_ub must be two-dimensional") try: Aeq_rows, Aeq_cols = Aeq.shape except ValueError: raise ValueError("Invalid input. A_eq must be two-dimensional") if Aeq_rows != meq: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "The number of rows in A_eq must be equal " "to the number of values in b_eq") if Aub_rows != mub: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "The number of rows in A_ub must be equal " "to the number of values in b_ub") if Aeq_cols > 0 and Aeq_cols != n: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Number of columns in A_eq must be equal " "to the size of c") if Aub_cols > 0 and Aub_cols != n: status = -1 message = ("Invalid input for linprog with method = 'simplex'. " "Number of columns in A_ub must be equal to the size of c") if status != 0: # Invalid inputs provided raise ValueError(message) # Create the tableau T = np.zeros([m + 2, n + n_slack + n_artificial + 1]) # Insert objective into tableau T[-2, :n] = cc T[-2, -1] = f0 b = T[:-2, -1] if meq > 0: # Add Aeq to the tableau T[:meq, :n] = Aeq # Add beq to the tableau b[:meq] = beq if mub > 0: # Add Aub to the tableau T[meq:meq + mub, :n] = Aub # At bub to the tableau b[meq:meq + mub] = bub # Add the slack variables to the tableau np.fill_diagonal(T[meq:m, n:n + n_slack], 1) # Further setup the tableau # If a row corresponds to an equality constraint or a negative b (a lower # bound constraint), then an artificial variable is added for that row. # Also, if b is negative, first flip the signs in that constraint. slcount = 0 avcount = 0 basis = np.zeros(m, dtype=int) r_artificial = np.zeros(n_artificial, dtype=int) for i in range(m): if i < meq or b[i] < 0: # basic variable i is in column n+n_slack+avcount basis[i] = n + n_slack + avcount r_artificial[avcount] = i avcount += 1 if b[i] < 0: b[i] *= -1 T[i, :-1] *= -1 T[i, basis[i]] = 1 T[-1, basis[i]] = 1 else: # basic variable i is in column n+slcount basis[i] = n + slcount slcount += 1 # Make the artificial variables basic feasible variables by subtracting # each row with an artificial variable from the Phase 1 objective for r in r_artificial: T[-1, :] = T[-1, :] - T[r, :] nit1, status = _solve_simplex(T, n, basis, phase=1, callback=callback, maxiter=maxiter, tol=tol, bland=bland) # if pseudo objective is zero, remove the last row from the tableau and # proceed to phase 2 if abs(T[-1, -1]) < tol: # Remove the pseudo-objective row from the tableau T = T[:-1, :] # Remove the artificial variable columns from the tableau T = np.delete(T, np.s_[n + n_slack:n + n_slack + n_artificial], 1) else: # Failure to find a feasible starting point status = 2 if status != 0: message = messages[status] if disp: print(message) 2 / 0 # Phase 2 nit2, status = _solve_simplex(T, n, basis, maxiter=maxiter - nit1, phase=2, callback=callback, tol=tol, nit0=nit1, bland=bland) solution = np.zeros(n + n_slack + n_artificial) solution[basis[:m]] = T[:m, -1] x = solution[:n] # slack = solution[n:n + n_slack] # For those variables with finite negative lower bounds, # reverse the change of variables masked_L = np.ma.array(L, mask=np.isinf(L), fill_value=0.0).filled() x = x + masked_L # For those variables with infinite negative lower bounds, # take x[i] as the difference between x[i] and the floor variable. if have_floor_variable: for i in range(1, n): if np.isinf(L[i]): x[i] -= x[0] x = x[1:] # Optimization complete at this point obj = -T[-1, -1] if status in (0, 1): if disp: print(messages[status]) print(" Current function value: {: <12.6f}".format(obj)) print(" Iterations: {:d}".format(nit2)) else: if disp: print(messages[status]) print(" Iterations: {:d}".format(nit2)) return OptimizeResult(x, obj) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/bee.py000066400000000000000000000025571316323560300230150ustar00rootroot00000000000000import numpy as np # NB! This module was ported from a 4 year old CamposASE2 module. """Bayesian Error Estimation For details, see: "Bayesian Error Estimation in Density Functional Theory", J. J. Mortensen, K. Kaasbjerg, S. L. Frederiksen, J. K. Norskov, J. P. Sethna, K. W. Jacobsen, Phys. Rev. Lett. 95, 216401 (2005).""" # T # cost(c) = cost0 + 0.5 * (c - c0) H (c - c0) # # Cost function minimum value: cost0 = 3.4660625596 # Best fit parameters: c0 = np.array([1.000787451, 0.1926284063, 1.896191546]) # Hessian: # H = np.array([[ 1.770035168e+03, -3.732470432e+02, -2.105836167e+02], # [-3.732470432e+02, 1.188857209e+02, 6.054102443e+01], # [-2.105836167e+02, 6.054102443e+01, 3.211200293e+01]]) # # 0.5 * np * T = cost0 (np=3: number of parameters) T = cost0 * 2 / 3 def make_ensemble(N=1000, seed=None): np.random.seed(seed) # None means /dev/urandom seed M = np.array([(0.066, -0.812, 1.996), (0.055, 0.206, 0.082), (-0.034, 0.007, 0.004)]) alpha = np.random.normal(0.0, 1.0, (N, 3)) return c0 + np.dot(alpha, M) c = make_ensemble() def get_ensemble_energies(atoms, c=c): if hasattr(atoms, 'get_calculator'): coefs = atoms.get_calculator().get_ensemble_coefficients() else: coefs = atoms return coefs[0] + np.dot(c, coefs[1:]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/build_web_page.py000066400000000000000000000032331316323560300252020ustar00rootroot00000000000000"""Build ASE's web-page. Initial setup:: cd ~ python3 -m venv ase-web-page cd ase-web-page . bin/activate pip install sphinx-rtd-theme pip install Sphinx pip install matplotlib scipy flask git clone http://gitlab.com/ase/ase.git cd ase pip install -U . Crontab:: WEB_PAGE_FOLDER=... CMD="python -m ase.utils.build_web_page" 10 19 * * * cd ~/ase-web-page; . bin/activate; cd ase; $CMD > ../ase.log """ from __future__ import print_function import os import subprocess import sys from ase import __version__ cmds = """\ touch ../ase-web-page.lock git clean -fdx git checkout web-page -q git pull -q &> /dev/null pip install . cd doc; sphinx-build -b html -d build/doctrees . build/html mv doc/build/html ase-web-page git clean -fdx doc git checkout master -q git pull -q &> /dev/null pip install . cd doc; sphinx-build -b html -d build/doctrees . build/html mv doc/build/html ase-web-page/dev python setup.py sdist cp dist/ase-*.tar.gz ase-web-page/ cp dist/ase-*.tar.gz ase-web-page/dev/ find ase-web-page -name install.html | xargs sed -i s/snapshot.tar.gz/{0}/g tar -czf ase-web-page.tar.gz ase-web-page cp ase-web-page.tar.gz {1}/tmp-ase-web-page.tar.gz mv {1}/tmp-ase-web-page.tar.gz {1}/ase-web-page.tar.gz""" cmds = cmds.format('ase-' + __version__ + '.tar.gz', os.environ['WEB_PAGE_FOLDER']) def build(): if os.path.isfile('../ase-web-page.lock'): print('Locked', file=sys.stderr) return try: for cmd in cmds.splitlines(): subprocess.check_call(cmd, shell=True) finally: os.remove('../ase-web-page.lock') if __name__ == '__main__': build() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/distance.py000066400000000000000000000001611316323560300240410ustar00rootroot00000000000000import warnings from ase.geometry import distance __all__ = ['distance'] warnings.warn('Moved to ase.geometry') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/eos.py000066400000000000000000000001651316323560300230410ustar00rootroot00000000000000import warnings from ase.eos import EquationOfState __all__ = ['EquationOfState'] warnings.warn('Moved to ase.eos') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/extrapolate.py000066400000000000000000000045651316323560300246130ustar00rootroot00000000000000from __future__ import print_function import numpy as np import sys from ase.parallel import paropen from ase.utils import basestring def extrapolate(x, y, n=-1.5, plot=0, reg=0, txt=None): '''Extrapolation tool. Mainly intended for RPA correlation energies, but could be useful for other purposes. Fits a straight line to an expression of the form: y=b + alpha*x**n and extrapolates the result to infinite x. reg=N gives linear regression using the last N points in x. reg should be larger than 2''' if txt is None: f = sys.stdout elif isinstance(txt, basestring): f = paropen(txt, 'a') else: f = txt assert len(x) == len(y) ext = [] print('Two-point extrapolation:', file=f) for i in range(len(x)-1): alpha = (y[i] - y[i+1]) / (x[i]**n - x[i+1]**n) ext.append(y[i+1] - alpha*x[i+1]**n) print(' ', x[i], '-', x[i+1], ':', ext[-1], file=f) print(file=f) if plot: import pylab as pl #pl.subplot(211) pl.plot(x**n, y, 'o-', label='Data') pl.xticks(x**n, [int(e) for e in x]) pl.axis([0, None, None, None]) if reg > 2: a = x[-reg:]**n b = y[-reg:] N = reg delta = N * np.sum(a**2) - (np.sum(a))**2 A = (np.sum(a**2) * np.sum(b) - np.sum(a) * np.sum(a*b)) / delta B = (N * np.sum(a*b) - np.sum(a) * np.sum(b)) / delta sigma_y = (1./(N-2.) * np.sum((b - A - B * a)**2))**0.5 sigma_A = sigma_y * (np.sum(a**2) / delta)**0.5 print('Linear regression using last %s points:' % N, file=f) print(' Extrapolated result:', A, file=f) print(' Uncertainty:', sigma_A, file=f) print(file=f) if plot: print([a[0], 0], [A + B * a[0], A]) pl.plot([a[0], 0], [A + B * a[0], A], '--', label='Regression') pl.legend(loc='upper left') else: A = 0 B = 0 sigma_A = 0 if plot: pl.show() #pl.subplot(212) pl.plot(x[1:], ext, 'o-', label='Two-point extrapolation') if reg > 2: pl.plot([x[-reg], x[-1]], [A, A], '--', label='Regression') pl.errorbar(x[-2], A, yerr=sigma_A, elinewidth=2.0, capsize=5, c='g') pl.legend(loc='lower right') pl.show() if not txt is None: f.close() return ext, A, B, sigma_A ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/ff.py000066400000000000000000001027631316323560300226550ustar00rootroot00000000000000import numpy as np from numpy import linalg from ase import units class Morse: def __init__(self, atomi, atomj, D, alpha, r0): self.atomi = atomi self.atomj = atomj self.D = D self.alpha = alpha self.r0 = r0 self.r = None class Bond: def __init__(self, atomi, atomj, k, b0, alpha=None, rref=None): self.atomi = atomi self.atomj = atomj self.k = k self.b0 = b0 self.alpha = alpha self.rref = rref self.b = None class Angle: def __init__(self, atomi, atomj, atomk, k, a0, cos=False, alpha=None, rref=None): self.atomi = atomi self.atomj = atomj self.atomk = atomk self.k = k self.a0 = a0 self.cos = cos self.alpha = alpha self.rref = rref self.a = None class Dihedral: def __init__(self, atomi, atomj, atomk, atoml, k, d0=None, n=None, alpha=None, rref=None): self.atomi = atomi self.atomj = atomj self.atomk = atomk self.atoml = atoml self.k = k self.d0 = d0 self.n = n self.alpha = alpha self.rref = rref self.d = None class VdW: def __init__(self, atomi, atomj, epsilonij=None, sigmaij=None, rminij=None, Aij=None, Bij=None, epsiloni=None, epsilonj=None, sigmai=None, sigmaj=None, rmini=None, rminj=None, scale=1.0): self.atomi = atomi self.atomj = atomj if epsilonij is not None: if sigmaij is not None: self.Aij = scale * 4.0 * epsilonij * sigmaij**12 self.Bij = scale * 4.0 * epsilonij * sigmaij**6 * scale elif rminij is not None: self.Aij = scale * epsilonij * rminij**12 self.Bij = scale * 2.0 * epsilonij * rminij**6 else: raise NotImplementedError("not implemented combination" "of vdW parameters.") elif Aij is not None and Bij is not None: self.Aij = scale * Aij self.Bij = scale * Bij elif epsiloni is not None and epsilonj is not None: if sigmai is not None and sigmaj is not None: self.Aij = ( scale * 4.0 * np.sqrt(epsiloni * epsilonj) * ((sigmai + sigmaj) / 2.0)**12 ) self.Bij = ( scale * 2.0 * np.sqrt(epsiloni * epsilonj) * ((sigmai + sigmaj) / 2.0)**6 ) elif rmini is not None and rminj is not None: self.Aij = ( scale * np.sqrt(epsiloni * epsilonj) * ((rmini + rminj) / 2.0)**12 ) self.Bij = ( scale * 2.0 * np.sqrt(epsiloni * epsilonj) * ((rmini + rminj) / 2.0)**6 ) else: raise NotImplementedError("not implemented combination" "of vdW parameters.") self.r = None class Coulomb: def __init__(self, atomi, atomj, chargeij=None, chargei=None, chargej=None, scale=1.0): self.atomi = atomi self.atomj = atomj if chargeij is not None: self.chargeij = ( scale * chargeij * 8.9875517873681764e9 * units.m * units.J / units.C / units.C ) elif chargei is not None and chargej is not None: self.chargeij = ( scale * chargei * chargej * 8.9875517873681764e9 * units.m * units.J / units.C / units.C ) else: raise NotImplementedError("not implemented combination" "of Coulomb parameters.") self.r = None def get_morse_potential_eta(atoms, morse): i = morse.atomi j = morse.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) if dij > morse.r0: exp = np.exp(-morse.alpha*(dij-morse.r0)) eta = 1.0 - (1.0 - exp)**2 else: eta = 1.0 return eta def get_morse_potential_value(atoms, morse): i = morse.atomi j = morse.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) exp = np.exp(-morse.alpha*(dij-morse.r0)) v = morse.D*(1.0-exp)**2 morse.r = dij return i, j, v def get_morse_potential_gradient(atoms, morse): Mx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = morse.atomi j = morse.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij exp = np.exp(-morse.alpha*(dij-morse.r0)) gr = 2.0*morse.D*morse.alpha*exp*(1.0-exp)*eij gx = np.dot(Mx.T, gr) morse.r = dij return i, j, gx def get_morse_potential_hessian(atoms, morse, spectral=False): Mx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = morse.atomi j = morse.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij exp = np.exp(-morse.alpha*(dij-morse.r0)) Hr = ( 2.0*morse.D*morse.alpha*exp*(morse.alpha*(2.0*exp-1.0)*Pij + (1.0-exp)/dij*Qij) ) Hx = np.dot(Mx.T, np.dot(Hr, Mx)) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) morse.r = dij return i, j, Hx def get_morse_potential_reduced_hessian(atoms, morse): Mx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = morse.atomi j = morse.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) exp = np.exp(-morse.alpha*(dij-morse.r0)) Hr = np.abs(2.0*morse.D*morse.alpha**2*exp*(2.0*exp-1.0))*Pij Hx = np.dot(Mx.T, np.dot(Hr, Mx)) morse.r = dij return i, j, Hx def get_bond_potential_value(atoms, bond): i = bond.atomi j = bond.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) v = 0.5*bond.k*(dij-bond.b0)**2 bond.b = dij return i, j, v def get_bond_potential_gradient(atoms, bond): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = bond.atomi j = bond.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij gr = bond.k*(dij-bond.b0)*eij gx = np.dot(Bx.T, gr) bond.b = dij return i, j, gx def get_bond_potential_hessian(atoms, bond, morses=None, spectral=False): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = bond.atomi j = bond.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Hr = bond.k*Pij+bond.k*(dij-bond.b0)/dij*Qij if bond.alpha is not None: Hr *= np.exp(bond.alpha[0]*(bond.rref[0]**2-dij**2)) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j ): Hr *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j ): Hr *= get_morse_potential_eta(atoms, morses[m]) Hx = np.dot(Bx.T, np.dot(Hr, Bx)) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) bond.b = dij return i, j, Hx def get_bond_potential_reduced_hessian(atoms, bond, morses=None): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = bond.atomi j = bond.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) Hr = bond.k*Pij if bond.alpha is not None: Hr *= np.exp(bond.alpha[0]*(bond.rref[0]**2-dij**2)) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j ): Hr *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j ): Hr *= get_morse_potential_eta(atoms, morses[m]) Hx = np.dot(Bx.T, np.dot(Hr, Bx)) bond.b = dij return i, j, Hx def get_bond_potential_reduced_hessian_test(atoms, bond): i, j, v = get_bond_potential_value(atoms, bond) i, j, gx = get_bond_potential_gradient(atoms, bond) Hx = np.tensordot(gx,gx,axes=0)/v/2.0 return i, j, Hx def get_angle_potential_value(atoms, angle): i = angle.atomi j = angle.atomj k = angle.atomk rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) ekj = rkj/dkj eijekj = np.dot(eij, ekj) if np.abs(eijekj) > 1.0: eijekj = np.sign(eijekj) a = np.arccos(eijekj) if angle.cos: da = np.cos(a)-np.cos(angle.a0) else: da = a-angle.a0 da = da - np.around(da / np.pi) * np.pi v = 0.5*angle.k*da**2 angle.a = a return i, j, k, v def get_angle_potential_gradient(atoms, angle): Ax=np.array([[1, 0, 0, -1, 0, 0, 0, 0, 0], [0, 1, 0, 0, -1, 0, 0, 0, 0], [0, 0, 1, 0, 0, -1, 0, 0, 0], [0, 0, 0, -1, 0, 0, 1, 0, 0], [0, 0, 0, 0, -1, 0, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 0, 1]]) i = angle.atomi j = angle.atomj k = angle.atomk rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) ekj = rkj/dkj eijekj = np.dot(eij, ekj) if np.abs(eijekj) > 1.0: eijekj = np.sign(eijekj) a = np.arccos(eijekj) if angle.cos: da = np.cos(a)-np.cos(angle.a0) else: da = a-angle.a0 da = da - np.around(da / np.pi) * np.pi sina = np.sin(a) Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Pkj = np.tensordot(ekj,ekj,axes=0) Qkj = np.eye(3)-Pkj gr = np.zeros(6) if angle.cos: gr[0:3] = angle.k*da/dij*np.dot(Qij,ekj) gr[3:6] = angle.k*da/dkj*np.dot(Qkj,eij) elif np.abs(sina) > 0.001: gr[0:3] = -angle.k*da/sina/dij*np.dot(Qij,ekj) gr[3:6] = -angle.k*da/sina/dkj*np.dot(Qkj,eij) gx = np.dot(Ax.T, gr) angle.a = a return i, j, k, gx def get_angle_potential_hessian(atoms, angle, morses=None, spectral=False): Ax=np.array([[1, 0, 0, -1, 0, 0, 0, 0, 0], [0, 1, 0, 0, -1, 0, 0, 0, 0], [0, 0, 1, 0, 0, -1, 0, 0, 0], [0, 0, 0, -1, 0, 0, 1, 0, 0], [0, 0, 0, 0, -1, 0, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 0, 1]]) i = angle.atomi j = angle.atomj k = angle.atomk rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) dij2 = dij*dij eij = rij/dij rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) dkj2 = dkj*dkj ekj = rkj/dkj dijdkj = dij*dkj eijekj = np.dot(eij, ekj) if np.abs(eijekj) > 1.0: eijekj = np.sign(eijekj) a = np.arccos(eijekj) if angle.cos: da = np.cos(a)-np.cos(angle.a0) cosa0 = np.cos(angle.a0) else: da = a-angle.a0 da = da - np.around(da / np.pi) * np.pi sina = np.sin(a) cosa = np.cos(a) ctga = cosa/sina Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Pkj = np.tensordot(ekj,ekj,axes=0) Qkj = np.eye(3)-Pkj Pik = np.tensordot(eij,ekj,axes=0) Pki = np.tensordot(ekj,eij,axes=0) P = np.eye(3)*eijekj QijPkjQij = np.dot(Qij, np.dot(Pkj, Qij)) QijPkiQkj = np.dot(Qij, np.dot(Pki, Qkj)) QkjPijQkj = np.dot(Qkj, np.dot(Pij, Qkj)) Hr = np.zeros((6,6)) if angle.cos and np.abs(sina) > 0.001: factor = 1.0-2.0*cosa*cosa+cosa*cosa0 Hr[0:3,0:3] = ( angle.k*(factor*QijPkjQij/sina - sina*da*(-ctga*QijPkjQij/sina+np.dot(Qij, Pki) -np.dot(Pij, Pki)*2.0+(Pik+P)))/sina/dij2 ) Hr[0:3,3:6] = ( angle.k*(factor*QijPkiQkj/sina - sina*da*(-ctga*QijPkiQkj/sina -np.dot(Qij, Qkj)))/sina/dijdkj ) Hr[3:6,0:3] = Hr[0:3,3:6].T Hr[3:6,3:6] = ( angle.k*(factor*QkjPijQkj/sina - sina*da*(-ctga*QkjPijQkj/sina +np.dot(Qkj, Pik)-np.dot(Pkj, Pik) *2.0+(Pki+P)))/sina/dkj2 ) elif np.abs(sina) > 0.001: Hr[0:3,0:3] = ( angle.k*(QijPkjQij/sina + da*(-ctga*QijPkjQij/sina+np.dot(Qij, Pki) -np.dot(Pij, Pki)*2.0+(Pik+P)))/sina/dij2 ) Hr[0:3,3:6] = ( angle.k*(QijPkiQkj/sina + da*(-ctga*QijPkiQkj/sina -np.dot(Qij, Qkj)))/sina/dijdkj ) Hr[3:6,0:3] = Hr[0:3,3:6].T Hr[3:6,3:6] = ( angle.k*(QkjPijQkj/sina + da*(-ctga*QkjPijQkj/sina +np.dot(Qkj, Pik)-np.dot(Pkj, Pik) *2.0+(Pki+P)))/sina/dkj2 ) if angle.alpha is not None: Hr *= ( np.exp(angle.alpha[0]*(angle.rref[0]**2-dij**2)) *np.exp(angle.alpha[1]*(angle.rref[1]**2-dkj**2)) ) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j or morses[m].atomi == k ): Hr *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j or morses[m].atomj == k ): Hr *= get_morse_potential_eta(atoms, morses[m]) Hx = np.dot(Ax.T, np.dot(Hr, Ax)) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) angle.a = a return i, j, k, Hx def get_angle_potential_reduced_hessian(atoms, angle, morses=None): Ax=np.array([[1, 0, 0, -1, 0, 0, 0, 0, 0], [0, 1, 0, 0, -1, 0, 0, 0, 0], [0, 0, 1, 0, 0, -1, 0, 0, 0], [0, 0, 0, -1, 0, 0, 1, 0, 0], [0, 0, 0, 0, -1, 0, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 0, 1]]) i = angle.atomi j = angle.atomj k = angle.atomk rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) dij2 = dij*dij eij = rij/dij rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) dkj2 = dkj*dkj ekj = rkj/dkj dijdkj = dij*dkj eijekj = np.dot(eij, ekj) if np.abs(eijekj) > 1.0: eijekj = np.sign(eijekj) a = np.arccos(eijekj) sina = np.sin(a) sina2 = sina*sina Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Pkj = np.tensordot(ekj,ekj,axes=0) Qkj = np.eye(3)-Pkj Pki = np.tensordot(ekj,eij,axes=0) Hr = np.zeros((6,6)) if np.abs(sina) > 0.001: Hr[0:3,0:3] = np.dot(Qij, np.dot(Pkj, Qij))/dij2 Hr[0:3,3:6] = np.dot(Qij, np.dot(Pki, Qkj))/dijdkj Hr[3:6,0:3] = Hr[0:3,3:6].T Hr[3:6,3:6] = np.dot(Qkj, np.dot(Pij, Qkj))/dkj2 if angle.cos and np.abs(sina) > 0.001: cosa = np.cos(a) cosa0 = np.cos(angle.a0) factor = np.abs(1.0-2.0*cosa*cosa+cosa*cosa0) Hr = Hr*factor*angle.k/sina2 elif np.abs(sina) > 0.001: Hr = Hr*angle.k/sina2 if angle.alpha is not None: Hr *= ( np.exp(angle.alpha[0]*(angle.rref[0]**2-dij**2)) *np.exp(angle.alpha[1]*(angle.rref[1]**2-dkj**2)) ) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j or morses[m].atomi == k ): Hr *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j or morses[m].atomj == k ): Hr *= get_morse_potential_eta(atoms, morses[m]) Hx=np.dot(Ax.T, np.dot(Hr, Ax)) angle.a = a return i, j, k, Hx def get_angle_potential_reduced_hessian_test(atoms, angle): i, j, k, v = get_angle_potential_value(atoms, angle) i, j, k, gx = get_angle_potential_gradient(atoms, angle) Hx = np.tensordot(gx,gx,axes=0)/v/2.0 return i, j, k, Hx def get_dihedral_potential_value(atoms, dihedral): i = dihedral.atomi j = dihedral.atomj k = dihedral.atomk l = dihedral.atoml rij = rel_pos_pbc(atoms, i, j) rkj = rel_pos_pbc(atoms, k, j) rkl = rel_pos_pbc(atoms, k, l) rmj = np.cross(rij, rkj) dmj = linalg.norm(rmj) emj = rmj/dmj rnk = np.cross(rkj, rkl) dnk = linalg.norm(rnk) enk = rnk/dnk emjenk = np.dot(emj, enk) if np.abs(emjenk) > 1.0: emjenk = np.sign(emjenk) d = np.sign(np.dot(rkj, np.cross(rmj, rnk)))*np.arccos(emjenk) if dihedral.d0 is None: v = 0.5*dihedral.k*(1.0 - np.cos(2.0 * d)) else: dd = d-dihedral.d0 dd = dd - np.around(dd / np.pi / 2.0) * np.pi * 2.0 if dihedral.n is None: v = 0.5*dihedral.k*dd**2 else: v = dihedral.k*(1.0 + np.cos(dihedral.n*d - dihedral.d0)) dihedral.d = d return i, j, k, l, v def get_dihedral_potential_gradient(atoms, dihedral): i = dihedral.atomi j = dihedral.atomj k = dihedral.atomk l = dihedral.atoml rij = rel_pos_pbc(atoms, i, j) rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) dkj2 = dkj*dkj rkl = rel_pos_pbc(atoms, k, l) rijrkj = np.dot(rij, rkj) rkjrkl = np.dot(rkj, rkl) rmj = np.cross(rij, rkj) dmj = linalg.norm(rmj) dmj2 = dmj*dmj emj = rmj/dmj rnk = np.cross(rkj, rkl) dnk = linalg.norm(rnk) dnk2 = dnk*dnk enk = rnk/dnk emjenk = np.dot(emj, enk) if np.abs(emjenk) > 1.0: emjenk = np.sign(emjenk) dddri = dkj/dmj2*rmj dddrl = -dkj/dnk2*rnk gx = np.zeros(12) gx[0:3] = dddri gx[3:6] = (rijrkj/dkj2-1.0)*dddri-rkjrkl/dkj2*dddrl gx[6:9] = (rkjrkl/dkj2-1.0)*dddrl-rijrkj/dkj2*dddri gx[9:12] = dddrl d = np.sign(np.dot(rkj, np.cross(rmj, rnk)))*np.arccos(emjenk) if dihedral.d0 is None: gx *= dihedral.k*np.sin(2.0 * d) else: dd = d-dihedral.d0 dd = dd - np.around(dd / np.pi / 2.0) * np.pi * 2.0 if dihedral.n is None: gx *= dihedral.k*dd else: gx *= -dihedral.k*dihedral.n*np.sin(dihedral.n*d - dihedral.d0) dihedral.d = d return i, j, k, l, gx def get_dihedral_potential_hessian(atoms, dihedral, morses=None, spectral=False): eps = 0.000001 i,j,k,l,g = get_dihedral_potential_gradient(atoms, dihedral) Hx = np.zeros((12,12)) dihedral_eps = Dihedral(dihedral.atomi, dihedral.atomj, dihedral.atomk, dihedral.atoml, dihedral.k, dihedral.d0, dihedral.n) indx = [3*i, 3*i+1, 3*i+2, 3*j, 3*j+1, 3*j+2, 3*k, 3*k+1, 3*k+2, 3*l, 3*l+1, 3*l+2] for x in range(12): a = atoms.copy() positions = np.reshape(a.get_positions(),-1) positions[indx[x]] += eps a.set_positions(np.reshape(positions, (len(a),3))) i,j,k,l,geps = get_dihedral_potential_gradient(a, dihedral_eps) for y in range(12): Hx[x,y] += 0.5*(geps[y]-g[y])/eps Hx[y,x] += 0.5*(geps[y]-g[y])/eps if dihedral.alpha is not None: rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) rkl = rel_pos_pbc(atoms, k, l) dkl = linalg.norm(rkl) Hx *= ( np.exp(dihedral.alpha[0]*(dihedral.rref[0]**2-dij**2)) *np.exp(dihedral.alpha[1]*(dihedral.rref[1]**2-dkj**2)) *np.exp(dihedral.alpha[2]*(dihedral.rref[2]**2-dkl**2)) ) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j or morses[m].atomi == k or morses[m].atomi == l ): Hx *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j or morses[m].atomj == k or morses[m].atomj == l ): Hx *= get_morse_potential_eta(atoms, morses[m]) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) return i, j, k, l, Hx def get_dihedral_potential_reduced_hessian(atoms, dihedral, morses=None): i = dihedral.atomi j = dihedral.atomj k = dihedral.atomk l = dihedral.atoml rij = rel_pos_pbc(atoms, i, j) rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) dkj2 = dkj*dkj rkl = rel_pos_pbc(atoms, k, l) rijrkj = np.dot(rij, rkj) rkjrkl = np.dot(rkj, rkl) rmj = np.cross(rij, rkj) dmj = linalg.norm(rmj) dmj2 = dmj*dmj emj = rmj/dmj rnk = np.cross(rkj, rkl) dnk = linalg.norm(rnk) dnk2 = dnk*dnk enk = rnk/dnk emjenk = np.dot(emj, enk) if np.abs(emjenk) > 1.0: emjenk = np.sign(emjenk) d = np.sign(np.dot(rkj, np.cross(rmj, rnk)))*np.arccos(emjenk) dddri = dkj/dmj2*rmj dddrl = -dkj/dnk2*rnk gx = np.zeros(12) gx[0:3] = dddri gx[3:6] = (rijrkj/dkj2-1.0)*dddri-rkjrkl/dkj2*dddrl gx[6:9] = (rkjrkl/dkj2-1.0)*dddrl-rijrkj/dkj2*dddri gx[9:12] = dddrl if dihedral.d0 is None: Hx = np.abs(2.0*dihedral.k*np.cos(2.0 * d))*np.tensordot(gx,gx,axes=0) if dihedral.n is None: Hx = dihedral.k*np.tensordot(gx,gx,axes=0) else: Hx = ( np.abs(-dihedral.k*dihedral.n**2 *np.cos(dihedral.n*d-dihedral.d0))*np.tensordot(gx,gx,axes=0) ) if dihedral.alpha is not None: rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) rkj = rel_pos_pbc(atoms, k, j) dkj = linalg.norm(rkj) rkl = rel_pos_pbc(atoms, k, l) dkl = linalg.norm(rkl) Hx *= ( np.exp(dihedral.alpha[0]*(dihedral.rref[0]**2-dij**2)) *np.exp(dihedral.alpha[1]*(dihedral.rref[1]**2-dkj**2)) *np.exp(dihedral.alpha[2]*(dihedral.rref[2]**2-dkl**2)) ) if morses is not None: for m in range(len(morses)): if ( morses[m].atomi == i or morses[m].atomi == j or morses[m].atomi == k or morses[m].atomi == l ): Hx *= get_morse_potential_eta(atoms, morses[m]) elif ( morses[m].atomj == i or morses[m].atomj == j or morses[m].atomj == k or morses[m].atomj == l ): Hx *= get_morse_potential_eta(atoms, morses[m]) dihedral.d = d return i, j, k, l, Hx def get_dihedral_potential_reduced_hessian_test(atoms, dihedral): i, j, k, l, gx = get_dihedral_potential_gradient(atoms, dihedral) if dihedral.n is None: i, j, k, l, v = get_dihedral_potential_value(atoms, dihedral) Hx = np.tensordot(gx,gx,axes=0)/v/2.0 else: arg = dihedral.n*dihedral.d - dihedral.d0 Hx = ( np.tensordot(gx,gx,axes=0)/dihedral.k/np.sin(arg)/np.sin(arg) *np.cos(arg) ) return i, j, k, l, Hx def get_vdw_potential_value(atoms, vdw): i = vdw.atomi j = vdw.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) v = vdw.Aij/dij**12 - vdw.Bij/dij**6 vdw.r = dij return i, j, v def get_vdw_potential_gradient(atoms, vdw): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = vdw.atomi j = vdw.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij gr = (-12.0*vdw.Aij/dij**13+6.0*vdw.Bij/dij**7)*eij gx = np.dot(Bx.T, gr) vdw.r = dij return i, j, gx def get_vdw_potential_hessian(atoms, vdw, spectral=False): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = vdw.atomi j = vdw.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Hr = ( (156.0*vdw.Aij/dij**14-42.0*vdw.Bij/dij**8)*Pij +(-12.0*vdw.Aij/dij**13+6.0*vdw.Bij/dij**7)/dij*Qij ) Hx = np.dot(Bx.T, np.dot(Hr, Bx)) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) vdw.r = dij return i, j, Hx def get_coulomb_potential_value(atoms, coulomb): i = coulomb.atomi j = coulomb.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) v = coulomb.chargeij/dij coulomb.r = dij return i, j, v def get_coulomb_potential_gradient(atoms, coulomb): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = coulomb.atomi j = coulomb.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij gr = -coulomb.chargeij/dij/dij*eij gx = np.dot(Bx.T, gr) coulomb.r = dij return i, j, gx def get_coulomb_potential_hessian(atoms, coulomb, spectral=False): Bx=np.array([[1, 0, 0, -1, 0, 0], [0, 1, 0, 0, -1, 0], [0, 0, 1, 0, 0, -1]]) i = coulomb.atomi j = coulomb.atomj rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) eij = rij/dij Pij = np.tensordot(eij,eij,axes=0) Qij = np.eye(3)-Pij Hr = (2.0*coulomb.chargeij/dij**3)*Pij+(-coulomb.chargeij/dij/dij)/dij*Qij Hx = np.dot(Bx.T, np.dot(Hr, Bx)) if spectral: eigvals, eigvecs = linalg.eigh(Hx) D = np.diag(np.abs(eigvals)) U = eigvecs Hx = np.dot(U,np.dot(D,np.transpose(U))) coulomb.r = dij return i, j, Hx def rel_pos_pbc(atoms, i, j): """ Return difference between two atomic positions, correcting for jumps across PBC """ d = atoms.get_positions()[i,:]-atoms.get_positions()[j,:] g = linalg.inv(atoms.get_cell().T) f = np.floor(np.dot(g, d.T) + 0.5) d -= np.dot(atoms.get_cell().T, f).T return d def translational_vectors(atoms, mass_weighted=False): """ Return normalised translational vectors """ Tr = np.zeros((3*len(atoms),3)) if mass_weighted: masses = atoms.get_masses() else: masses = np.ones(len(atoms)) masses_sqrt = np.sqrt(masses) k=0 for i in range(len(atoms)): for j in range(3): Tr[k,j] = masses_sqrt[i] k+=1 for i in range(3): norm = np.sqrt(np.dot(Tr[:,i], Tr[:,i])) Tr[:,i] /= norm return Tr def rotational_vectors(atoms, mass_weighted=False): """ Return normalised rotational vectors """ Rot = np.zeros((3*len(atoms),3)) threshold = np.finfo(float).eps*10000.0 if mass_weighted: masses = atoms.get_masses() else: masses = np.ones(len(atoms)) masses_sqrt = np.sqrt(masses) com = np.zeros(3) for i in range(len(atoms)): com += masses[i] * atoms.get_positions()[i,:] com /= np.sum(masses) it = np.zeros((3,3)) for i in range(len(atoms)): rpos = atoms.get_positions()[i,:] - com it[0,0] += masses[i] * (rpos[1]**2 + rpos[2]**2) it[1,1] += masses[i] * (rpos[0]**2 + rpos[2]**2) it[2,2] += masses[i] * (rpos[0]**2 + rpos[1]**2) it[0,1] -= masses[i] * (rpos[0]*rpos[1]) it[0,2] -= masses[i] * (rpos[0]*rpos[2]) it[1,2] -= masses[i] * (rpos[1]*rpos[2]) it[1,0] = it[0,1] it[2,0] = it[0,2] it[2,1] = it[1,2] d, dit = linalg.eigh(it) for i in range(len(atoms)): rpos = atoms.get_positions()[i,:] - com cp = np.dot(np.transpose(dit), rpos) Rot[i*3,0] = masses_sqrt[i] * (cp[1]*dit[0,2]-cp[2]*dit[0,1]) Rot[i*3+1,0] = masses_sqrt[i] * (cp[1]*dit[1,2]-cp[2]*dit[1,1]) Rot[i*3+2,0] = masses_sqrt[i] * (cp[1]*dit[2,2]-cp[2]*dit[2,1]) Rot[i*3,1] = masses_sqrt[i] * (cp[2]*dit[0,0]-cp[0]*dit[0,2]) Rot[i*3+1,1] = masses_sqrt[i] * (cp[2]*dit[1,0]-cp[0]*dit[1,2]) Rot[i*3+2,1] = masses_sqrt[i] * (cp[2]*dit[2,0]-cp[0]*dit[2,2]) Rot[i*3,2] = masses_sqrt[i] * (cp[0]*dit[0,1]-cp[1]*dit[0,0]) Rot[i*3+1,2] = masses_sqrt[i] * (cp[0]*dit[1,1]-cp[1]*dit[1,0]) Rot[i*3+2,2] = masses_sqrt[i] * (cp[0]*dit[2,1]-cp[1]*dit[2,0]) ndof = 3 for i in range(3): norm = np.sqrt(np.dot(Rot[:,i], Rot[:,i])) if norm <= threshold: ndof -= 1 continue Rot[:,i] /= norm if i < 2: for j in range(i+1): Rot[:,i+1] = Rot[:,i+1] - np.dot(Rot[:,i+1],Rot[:,j]) * Rot[:,j] return Rot[:,0:ndof] def remove_tr_rot_vector(atoms, vecin, mass_weighted=False): Tr = translational_vectors(atoms, mass_weighted) Rot = rotational_vectors(atoms, mass_weighted) vecout = vecin for i in range(np.shape(Tr)[1]): norm = np.dot(vecout, Tr[:,i]) vecout -= norm * Tr[:,i] for i in range(np.shape(Rot)[1]): norm = np.dot(vecout, Rot[:,i]) vecout -= norm * Rot[:,i] return vecout def model_bond_angle_dihedral(atoms, cutoff=10.0): alpha = np.array([[1.0000, 0.3949, 0.3949], [0.3949, 0.2800, 0.2800], [0.3949, 0.2800, 0.2800]]) / units.Bohr / units.Bohr rref = np.array([[1.35, 2.10, 2.53], [2.10, 2.87, 3.40], [2.53, 3.40, 3.40]]) * units.Bohr kbond = 0.45 * units.Hartree / units.Bohr / units.Bohr kangle = 0.15 * units.Hartree / units.Bohr / units.Bohr kdihedral = 0.005 * units.Hartree / units.Bohr / units.Bohr bonds = [] angles = [] dihedrals = [] for i in range(len(atoms)): rowi = row(atoms.get_atomic_numbers()[i])-1 for j in range(i+1, len(atoms)): rij = rel_pos_pbc(atoms, i, j) dij = linalg.norm(rij) if dij > cutoff: continue rowj = row(atoms.get_atomic_numbers()[j])-1 bonds.append(Bond(i, j, kbond, b0=None, alpha=[alpha[rowi, rowj]], rref=[rref[rowi, rowj]])) for k in range(j+1, len(atoms)): rjk = rel_pos_pbc(atoms, j, k) djk = linalg.norm(rjk) if djk > cutoff: continue rowk = row(atoms.get_atomic_numbers()[k])-1 angles.append(Angle(i, j, k, kangle, a0=None, alpha=[alpha[rowi, rowj], alpha[rowj, rowk]], rref=[rref[rowi, rowj], rref[rowj, rowk]])) angles.append(Angle(i, k, j, kangle, a0=None, alpha=[alpha[rowi, rowk], alpha[rowk, rowj]], rref=[rref[rowi, rowk], rref[rowk, rowj]])) angles.append(Angle(j, i, k, kangle, a0=None, alpha=[alpha[rowj, rowi], alpha[rowi, rowk]], rref=[rref[rowj, rowi], rref[rowi, rowk]])) for l in range(k+1, len(atoms)): rkl = rel_pos_pbc(atoms, k, l) dkl = linalg.norm(rkl) if dkl > cutoff: continue rowl = row(atoms.get_atomic_numbers()[l])-1 dihedrals.append(Dihedral(i, j, k, l, kdihedral, d0=None, alpha=[alpha[rowi, rowj], alpha[rowj, rowk], alpha[rowk, rowl]], rref=[rref[rowi, rowj], rref[rowj, rowk], rref[rowk, rowl]])) dihedrals.append(Dihedral(i, j, l, k, kdihedral, d0=None, alpha=[alpha[rowi, rowj], alpha[rowj, rowl], alpha[rowl, rowk]], rref=[rref[rowi, rowj], rref[rowj, rowl], rref[rowl, rowk]])) dihedrals.append(Dihedral(i, k, l, j, kdihedral, d0=None, alpha=[alpha[rowi, rowk], alpha[rowk, rowl], alpha[rowl, rowj]], rref=[rref[rowi, rowk], rref[rowk, rowl], rref[rowl, rowj]])) dihedrals.append(Dihedral(j, i, k, l, kdihedral, d0=None, alpha=[alpha[rowj, rowi], alpha[rowi, rowk], alpha[rowk, rowl]], rref=[rref[rowj, rowi], rref[rowi, rowk], rref[rowk, rowl]])) dihedrals.append(Dihedral(k, i, j, l, kdihedral, d0=None, alpha=[alpha[rowk, rowi], alpha[rowi, rowj], alpha[rowj, rowl]], rref=[rref[rowk, rowi], rref[rowi, rowj], rref[rowj, rowl]])) dihedrals.append(Dihedral(j, i, l, k, kdihedral, d0=None, alpha=[alpha[rowj, rowi], alpha[rowi, rowl], alpha[rowl, rowk]], rref=[rref[rowj, rowi], rref[rowi, rowl], rref[rowl, rowk]])) return bonds, angles, dihedrals def row(Z): if Z <= 2: return 1 elif Z <= 10: return 2 elif Z <= 18: return 3 else: return 3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/formula.py000066400000000000000000000030341316323560300237160ustar00rootroot00000000000000from ase.data import chemical_symbols def formula_hill(numbers): """Convert list of atomic numbers to a chemical formula as a string. Elements are alphabetically ordered with C and H first.""" if isinstance(numbers, dict): count = dict(numbers) else: count = {} for Z in numbers: symb = chemical_symbols[Z] count[symb] = count.get(symb, 0) + 1 result = [(s, count.pop(s)) for s in 'CH' if s in count] result += [(s, count[s]) for s in sorted(count)] return ''.join('{0}{1}'.format(symbol, n) if n > 1 else symbol for symbol, n in result) def formula_metal(numbers): """Convert list of atomic numbers to a chemical formula as a string. Elements are alphabetically ordered with metals first.""" # non metals, half-metals/metalloid, halogen, noble gas non_metals = ['H', 'He', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Si', 'P', 'S', 'Cl', 'Ar', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Sb', 'Te', 'I', 'Xe', 'Po', 'At', 'Rn'] if isinstance(numbers, dict): count = dict(numbers) else: count = {} for Z in numbers: symb = chemical_symbols[Z] count[symb] = count.get(symb, 0) + 1 result2 = [(s, count.pop(s)) for s in non_metals if s in count] result = [(s, count[s]) for s in sorted(count)] result += sorted(result2) return ''.join('{0}{1}'.format(symbol, n) if n > 1 else symbol for symbol, n in result) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/geometry.py000066400000000000000000000006371316323560300241120ustar00rootroot00000000000000import warnings from ase.geometry import (wrap_positions, get_layers, find_mic, get_duplicate_atoms) from ase.build import niggli_reduce, sort, stack, cut, rotate, minimize_tilt __all__ = ['wrap_positions', 'get_layers', 'find_mic', 'get_duplicate_atoms', 'niggli_reduce', 'sort', 'stack', 'cut', 'rotate', 'minimize_tilt'] warnings.warn('Moved to ase.geometry and ase.build') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/linesearch.py000066400000000000000000000336721316323560300244010ustar00rootroot00000000000000import numpy as np pymin = min pymax = max class LineSearch: def __init__(self, xtol=1e-14): self.xtol = xtol self.task = 'START' self.isave = np.zeros((2,), np.intc) self.dsave = np.zeros((13,), float) self.fc = 0 self.gc = 0 self.case = 0 self.old_stp = 0 def _line_search(self, func, myfprime, xk, pk, gfk, old_fval, old_old_fval, maxstep=.2, c1=.23, c2=0.46, xtrapl=1.1, xtrapu=4., stpmax=50., stpmin=1e-8, args=()): self.stpmin = stpmin self.pk = pk # ??? p_size = np.sqrt((pk **2).sum()) self.stpmax = stpmax self.xtrapl = xtrapl self.xtrapu = xtrapu self.maxstep = maxstep phi0 = old_fval derphi0 = np.dot(gfk,pk) self.dim = len(pk) self.gms = np.sqrt(self.dim) * maxstep #alpha1 = pymin(maxstep,1.01*2*(phi0-old_old_fval)/derphi0) alpha1 = 1. self.no_update = False if isinstance(myfprime,type(())): # eps = myfprime[1] fprime = myfprime[0] # ??? newargs = (f,eps) + args gradient = False else: fprime = myfprime newargs = args gradient = True fval = old_fval gval = gfk self.steps=[] while True: stp = self.step(alpha1, phi0, derphi0, c1, c2, self.xtol, self.isave, self.dsave) if self.task[:2] == 'FG': alpha1 = stp fval = func(xk + stp * pk, *args) self.fc += 1 gval = fprime(xk + stp * pk, *newargs) if gradient: self.gc += 1 else: self.fc += len(xk) + 1 phi0 = fval derphi0 = np.dot(gval,pk) self.old_stp = alpha1 if self.no_update == True: break else: break if self.task[:5] == 'ERROR' or self.task[1:4] == 'WARN': stp = None # failed return stp, fval, old_fval, self.no_update def step(self, stp, f, g, c1, c2, xtol, isave, dsave): if self.task[:5] == 'START': # Check the input arguments for errors. if stp < self.stpmin: self.task = 'ERROR: STP .LT. minstep' if stp > self.stpmax: self.task = 'ERROR: STP .GT. maxstep' if g >= 0: self.task = 'ERROR: INITIAL G >= 0' if c1 < 0: self.task = 'ERROR: c1 .LT. 0' if c2 < 0: self.task = 'ERROR: c2 .LT. 0' if xtol < 0: self.task = 'ERROR: XTOL .LT. 0' if self.stpmin < 0: self.task = 'ERROR: minstep .LT. 0' if self.stpmax < self.stpmin: self.task = 'ERROR: maxstep .LT. minstep' if self.task[:5] == 'ERROR': return stp # Initialize local variables. self.bracket = False stage = 1 finit = f ginit = g gtest = c1 * ginit width = self.stpmax - self.stpmin width1 = width / .5 # The variables stx, fx, gx contain the values of the step, # function, and derivative at the best step. # The variables sty, fy, gy contain the values of the step, # function, and derivative at sty. # The variables stp, f, g contain the values of the step, # function, and derivative at stp. stx = 0 fx = finit gx = ginit sty = 0 fy = finit gy = ginit stmin = 0 stmax = stp + self.xtrapu * stp self.task = 'FG' self.save((stage, ginit, gtest, gx, gy, finit, fx, fy, stx, sty, stmin, stmax, width, width1)) stp = self.determine_step(stp) #return stp, f, g return stp else: if self.isave[0] == 1: self.bracket = True else: self.bracket = False stage = self.isave[1] (ginit, gtest, gx, gy, finit, fx, fy, stx, sty, stmin, stmax, \ width, width1) =self.dsave # If psi(stp) <= 0 and f'(stp) >= 0 for some step, then the # algorithm enters the second stage. ftest = finit + stp * gtest if stage == 1 and f < ftest and g >= 0.: stage = 2 # Test for warnings. if self.bracket and (stp <= stmin or stp >= stmax): self.task = 'WARNING: ROUNDING ERRORS PREVENT PROGRESS' if self.bracket and stmax - stmin <= self.xtol * stmax: self.task = 'WARNING: XTOL TEST SATISFIED' if stp == self.stpmax and f <= ftest and g <= gtest: self.task = 'WARNING: STP = maxstep' if stp == self.stpmin and (f > ftest or g >= gtest): self.task = 'WARNING: STP = minstep' # Test for convergence. if f <= ftest and abs(g) <= c2 * (- ginit): self.task = 'CONVERGENCE' # Test for termination. if self.task[:4] == 'WARN' or self.task[:4] == 'CONV': self.save((stage, ginit, gtest, gx, gy, finit, fx, fy, stx, sty, stmin, stmax, width, width1)) #return stp, f, g return stp # A modified function is used to predict the step during the # first stage if a lower function value has been obtained but # the decrease is not sufficient. #if stage == 1 and f <= fx and f > ftest: # # Define the modified function and derivative values. # fm =f - stp * gtest # fxm = fx - stx * gtest # fym = fy - sty * gtest # gm = g - gtest # gxm = gx - gtest # gym = gy - gtest # Call step to update stx, sty, and to compute the new step. # stx, sty, stp, gxm, fxm, gym, fym = self.update (stx, fxm, gxm, sty, # fym, gym, stp, fm, gm, # stmin, stmax) # # Reset the function and derivative values for f. # fx = fxm + stx * gtest # fy = fym + sty * gtest # gx = gxm + gtest # gy = gym + gtest #else: # Call step to update stx, sty, and to compute the new step. stx, sty, stp, gx, fx, gy, fy= self.update(stx, fx, gx, sty, fy, gy, stp, f, g, stmin, stmax) # Decide if a bisection step is needed. if self.bracket: if abs(sty-stx) >= .66 * width1: stp = stx + .5 * (sty - stx) width1 = width width = abs(sty - stx) # Set the minimum and maximum steps allowed for stp. if self.bracket: stmin = min(stx, sty) stmax = max(stx, sty) else: stmin = stp + self.xtrapl * (stp - stx) stmax = stp + self.xtrapu * (stp - stx) # Force the step to be within the bounds maxstep and minstep. stp = max(stp, self.stpmin) stp = min(stp, self.stpmax) if (stx == stp and stp == self.stpmax and stmin > self.stpmax): self.no_update = True # If further progress is not possible, let stp be the best # point obtained during the search. if (self.bracket and stp < stmin or stp >= stmax) \ or (self.bracket and stmax - stmin < self.xtol * stmax): stp = stx # Obtain another function and derivative. self.task = 'FG' self.save((stage, ginit, gtest, gx, gy, finit, fx, fy, stx, sty, stmin, stmax, width, width1)) return stp def update(self, stx, fx, gx, sty, fy, gy, stp, fp, gp, stpmin, stpmax): sign = gp * (gx / abs(gx)) # First case: A higher function value. The minimum is bracketed. # If the cubic step is closer to stx than the quadratic step, the # cubic step is taken, otherwise the average of the cubic and # quadratic steps is taken. if fp > fx: #case1 self.case = 1 theta = 3. * (fx - fp) / (stp - stx) + gx + gp s = max(abs(theta), abs(gx), abs(gp)) gamma = s * np.sqrt((theta / s) ** 2. - (gx / s) * (gp / s)) if stp < stx: gamma = -gamma p = (gamma - gx) + theta q = ((gamma - gx) + gamma) + gp r = p / q stpc = stx + r * (stp - stx) stpq = stx + ((gx / ((fx - fp) / (stp-stx) + gx)) / 2.) \ * (stp - stx) if (abs(stpc - stx) < abs(stpq - stx)): stpf = stpc else: stpf = stpc + (stpq - stpc) / 2. self.bracket = True # Second case: A lower function value and derivatives of opposite # sign. The minimum is bracketed. If the cubic step is farther from # stp than the secant step, the cubic step is taken, otherwise the # secant step is taken. elif sign < 0: #case2 self.case = 2 theta = 3. * (fx - fp) / (stp - stx) + gx + gp s = max(abs(theta), abs(gx), abs(gp)) gamma = s * np.sqrt((theta / s) ** 2 - (gx / s) * (gp / s)) if stp > stx: gamma = -gamma p = (gamma - gp) + theta q = ((gamma - gp) + gamma) + gx r = p / q stpc = stp + r * (stx - stp) stpq = stp + (gp / (gp - gx)) * (stx - stp) if (abs(stpc - stp) > abs(stpq - stp)): stpf = stpc else: stpf = stpq self.bracket = True # Third case: A lower function value, derivatives of the same sign, # and the magnitude of the derivative decreases. elif abs(gp) < abs(gx): #case3 self.case = 3 # The cubic step is computed only if the cubic tends to infinity # in the direction of the step or if the minimum of the cubic # is beyond stp. Otherwise the cubic step is defined to be the # secant step. theta = 3. * (fx - fp) / (stp - stx) + gx + gp s = max(abs(theta), abs(gx), abs(gp)) # The case gamma = 0 only arises if the cubic does not tend # to infinity in the direction of the step. gamma = s * np.sqrt(max(0.,(theta / s) ** 2-(gx / s) * (gp / s))) if stp > stx: gamma = -gamma p = (gamma - gp) + theta q = (gamma + (gx - gp)) + gamma r = p / q if r < 0. and gamma != 0: stpc = stp + r * (stx - stp) elif stp > stx: stpc = stpmax else: stpc = stpmin stpq = stp + (gp / (gp - gx)) * (stx - stp) if self.bracket: # A minimizer has been bracketed. If the cubic step is # closer to stp than the secant step, the cubic step is # taken, otherwise the secant step is taken. if abs(stpc - stp) < abs(stpq - stp): stpf = stpc else: stpf = stpq if stp > stx: stpf = min(stp + .66 * (sty - stp), stpf) else: stpf = max(stp + .66 * (sty - stp), stpf) else: # A minimizer has not been bracketed. If the cubic step is # farther from stp than the secant step, the cubic step is # taken, otherwise the secant step is taken. if abs(stpc - stp) > abs(stpq - stp): stpf = stpc else: stpf = stpq stpf = min(stpmax, stpf) stpf = max(stpmin, stpf) # Fourth case: A lower function value, derivatives of the same sign, # and the magnitude of the derivative does not decrease. If the # minimum is not bracketed, the step is either minstep or maxstep, # otherwise the cubic step is taken. else: #case4 self.case = 4 if self.bracket: theta = 3. * (fp - fy) / (sty - stp) + gy + gp s = max(abs(theta), abs(gy), abs(gp)) gamma = s * np.sqrt((theta / s) ** 2 - (gy / s) * (gp / s)) if stp > sty: gamma = -gamma p = (gamma - gp) + theta q = ((gamma - gp) + gamma) + gy r = p / q stpc = stp + r * (sty - stp) stpf = stpc elif stp > stx: stpf = stpmax else: stpf = stpmin # Update the interval which contains a minimizer. if fp > fx: sty = stp fy = fp gy = gp else: if sign < 0: sty = stx fy = fx gy = gx stx = stp fx = fp gx = gp # Compute the new step. stp = self.determine_step(stpf) return stx, sty, stp, gx, fx, gy, fy def determine_step(self, stp): dr = stp - self.old_stp if abs(pymax(self.pk) * dr) > self.maxstep: dr /= abs((pymax(self.pk) * dr) / self.maxstep) stp = self.old_stp + dr return stp def save(self, data): if self.bracket: self.isave[0] = 1 else: self.isave[0] = 0 self.isave[1] = data[0] self.dsave = data[1:] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/linesearcharmijo.py000066400000000000000000000400641316323560300255740ustar00rootroot00000000000000from __future__ import print_function import logging import math import numpy as np ###CO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< try: import scipy import scipy.linalg have_scipy = True except ImportError: have_scipy = False #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> from ase.utils import longsum logger = logging.getLogger(__name__) ###CO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< class LinearPath: """Describes a linear search path of the form t -> t g """ def __init__(self, dirn): """Initialise LinearPath object Args: dirn : search direction """ self.dirn = dirn def step(self, alpha): return alpha * self.dirn def nullspace(A, myeps=1e-10): """The RumPath class needs the ability to compute the null-space of a small matrix. This is provided here. But we now also need scipy! This routine was copy-pasted from http://stackoverflow.com/questions/5889142/python-numpy-scipy-finding-the-null-space-of-a-matrix How the h*** does numpy/scipy not have a null-space implemented? """ u, s, vh = scipy.linalg.svd(A) padding = max(0, np.shape(A)[1] - np.shape(s)[0]) null_mask = np.concatenate(((s <= myeps), np.ones((padding,),dtype=bool)), axis=0) null_space = scipy.compress(null_mask, vh, axis=0) return scipy.transpose(null_space) class RumPath: """Describes a curved search path, taking into account information about (near-) rigid unit motions (RUMs). One can tag sub-molecules of the system, which are collections of particles that form a (near-)rigid unit. Let x1, ... xn be the positions of one such molecule, then we construct a path of the form xi(t) = xi(0) + (exp(K t) - I) yi + t wi + t c where yi = xi - , c = is a rigid translation, K is anti-symmetric so that exp(tK) yi denotes a rotation about the centre of mass, and wi is the remainind stretch of the molecule. The following variables are stored: * rotation_factors : array of acceleration factors * rigid_units : array of molecule indices * stretch : w * K : list of K matrices * y : list of y-vectors """ def __init__(self, x_start, dirn, rigid_units, rotation_factors): """Initialise a `RumPath` Args: x_start : vector containing the positions in d x nAt shape dirn : search direction, same shape as x_start vector rigid_units : array of arrays of molecule indices rotation_factors : factor by which the rotation of each molecular is accelerated; array of scalars, same length as rigid_units """ if not have_scipy: raise RuntimeError("RumPath depends on scipy, which could not be imported") # keep some stuff stored self.rotation_factors = rotation_factors self.rigid_units = rigid_units # create storage for more stuff self.K = [] self.y = [] # We need to reshape x_start and dirn since we want to apply # rotations to individual position vectors! # we will eventually store the stretch in w, X is just a reference # to x_start with different shape w = dirn.copy().reshape( [3, len(dirn)/3] ) X = x_start.reshape( [3, len(dirn)/3] ) for I in rigid_units: # I is a list of indices for one molecule # get the positions of the i-th molecule, subtract mean x = X[:, I] y = x - x.mean(0).T # PBC? # same for forces >>> translation component g = w[:, I] f = g - g.mean(0).T # compute the system to solve for K (see accompanying note!) # A = \sum_j Yj Yj' # b = \sum_j Yj' fj A = np.zeros((3,3)) b = np.zeros(3) for j in range(len(I)): Yj = np.array( [ [ y[1,j], 0.0, -y[2,j] ], [ -y[0,j], y[2,j], 0.0 ], [ 0.0, -y[1,j], y[0,j] ] ] ) A += np.dot(Yj.T, Yj) b += np.dot(Yj.T, f[:, j]) # If the directions y[:,j] span all of R^3 (canonically this is true # when there are at least three atoms in the molecule) but if # not, then A is singular so we cannot solve A k = b. In this case # we solve Ak = b in the space orthogonal to the null-space of A. # TODO: # this can get unstable if A is "near-singular"! We may # need to revisit this idea at some point to get something # more robust N = nullspace(A) b -= np.dot(np.dot(N, N.T), b) A += np.dot(N, N.T) k = scipy.linalg.solve(A, b, sym_pos=True) K = np.array( [ [ 0.0, k[0], -k[2] ], [ -k[0], 0.0, k[1] ], [ k[2], -k[1], 0.0 ] ] ) # now remove the rotational component from the search direction # ( we actually keep the translational component as part of w, # but this could be changed as well! ) w[:, I] -= np.dot(K, y) # store K and y self.K.append(K) self.y.append(y) # store the stretch (no need to copy here, since w is already a copy) self.stretch = w def step(self, alpha): """perform a step in the line-search, given a step-length alpha Args: alpha : step-length Returns: s : update for positions """ # translation and stretch s = alpha * self.stretch # loop through rigid_units for (I, K, y, rf) in zip(self.rigid_units, self.K, self.y, self.rotation_factors): # with matrix exponentials: # s[:, I] += expm(K * alpha * rf) * p.y - p.y # third-order taylor approximation: # I + t K + 1/2 t^2 K^2 + 1/6 t^3 K^3 - I # = t K (I + 1/2 t K (I + 1/3 t K)) aK = alpha * rf * K s[:, I] += np.dot(aK, y + 0.5 * np.dot(aK, y + 1/3. * np.dot( aK, y )) ) return s.ravel() #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> class LineSearchArmijo: def __init__(self, func, c1=0.1, tol=1e-14): """Initialise the linesearch with set parameters and functions. Args: func: the function we are trying to minimise (energy), which should take an array of positions for its argument c1: parameter for the sufficient decrease condition \in (0.0 0.5) tol: tolerance for evaluating equality """ self.tol = tol self.func = func if not (0 < c1 < 0.5): logger.error("c1 outside of allowed interval (0, 0.5). Replacing with " "default value.") print("Warning: C1 outside of allowed interval. Replacing with " "default value.") c1 = 0.1 self.c1 = c1 ###CO : added rigid_units and rotation_factors def run(self, x_start, dirn, a_max=None, a1=None, func_start=None, func_old=None, func_prime_start=None, rigid_units=None, rotation_factors=None): """Perform a backtracking / quadratic-interpolation linesearch to find an appropriate step length with Armijo condition. NOTE THIS LINESEARCH DOES NOT IMPOSE WOLFE CONDITIONS! The idea is to do backtracking via quadratic interpolation, stabilised by putting a lower bound on the decrease at each linesearch step. To ensure BFGS-behaviour, whenever "reasonable" we take 1.0 as the starting step. Since Armijo does not guarantee convergence of BFGS, the outer BFGS algorithm must restart when the current search direction ceases to be a descent direction. Args: x_start: vector containing the position to begin the linesearch from (ie the current location of the optimisation) dirn: vector pointing in the direction to search in (pk in [NW]). Note that this does not have to be a unit vector, but the function will return a value scaled with respect to dirn. a_max: an upper bound on the maximum step length allowed. Default is 2.0. a1: the initial guess for an acceptable step length. If no value is given, this will be set automatically, using quadratic interpolation using func_old, or "rounded" to 1.0 if the initial guess lies near 1.0. (specifically for LBFGS) func_start: the value of func at the start of the linesearch, ie phi(0). Passing this information avoids potentially expensive re-calculations func_prime_start: the value of func_prime at the start of the linesearch (this will be dotted with dirn to find phi_prime(0)) func_old: the value of func_start at the previous step taken in the optimisation (this will be used to calculate the initial guess for the step length if it is not provided) rigid_units, rotationfactors : see documentation of RumPath, if it is unclear what these parameters are, then leave them at None Returns: A tuple: (step, func_val, no_update) step: the final chosen step length, representing the number of multiples of the direction vector to move func_val: the value of func after taking this step, ie phi(step) no_update: true if the linesearch has not performed any updates of phi or alpha, due to errors or immediate convergence Raises: ValueError for problems with arguments RuntimeError for problems encountered during iteration """ a1 = self.handle_args(x_start, dirn, a_max, a1, func_start, func_old, func_prime_start) # DEBUG logger.debug("a1(auto) = ", a1) if abs(a1 - 1.0) <= 0.5: a1 = 1.0 logger.debug("-----------NEW LINESEARCH STARTED---------") a_final = None phi_a_final = None num_iter = 0 ###CO <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< # create a search-path if rigid_units is None: # standard linear search-path logger.debug("-----using LinearPath-----") path = LinearPath(dirn) else: logger.debug("-----using RumPath------") # if rigid_units != None, but rotation_factors == None, then # raise an error. if rotation_factors == None: raise RuntimeError('RumPath cannot be created since rotation_factors == None') path = RumPath(x_start, dirn, rigid_units, rotation_factors) #>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> while(True): logger.debug("-----------NEW ITERATION OF LINESEARCH----------") logger.debug("Number of linesearch iterations: %d", num_iter) logger.debug("a1 = %e", a1) ###CO replaced: func_a1 = self.func(x_start + a1 * self.dirn) func_a1 = self.func(x_start + path.step(a1)) phi_a1 = func_a1 # compute sufficient decrease (Armijo) condition suff_dec = (phi_a1 <= self.func_start+self.c1*a1*self.phi_prime_start) # DEBUG # print("c1*a1*phi_prime_start = ", self.c1*a1*self.phi_prime_start, # " | phi_a1 - phi_0 = ", phi_a1 - self.func_start) logger.info("a1 = %.3f, suff_dec = %r", a1, suff_dec) if a1 < 1e-10: raise RuntimeError('a1 too small, giving up') if self.phi_prime_start > 0.0: raise RuntimeError("self.phi_prime_start > 0.0") # check sufficient decrease (Armijo condition) if suff_dec: a_final = a1 phi_a_final = phi_a1 logger.debug("Linesearch returned a = %e, phi_a = %e", a_final, phi_a_final) logger.debug("-----------LINESEARCH COMPLETE-----------") return a_final, phi_a_final, num_iter==0 # we don't have sufficient decrease, so we need to compute a # new trial step-length at = - ((self.phi_prime_start * a1) / (2*((phi_a1 - self.func_start)/a1 - self.phi_prime_start))) logger.debug("quadratic_min: initial at = %e", at) # because a1 does not satisfy Armijo it follows that at must # lie between 0 and a1. In fact, more strongly, # at \leq (2 (1-c1))^{-1} a1, which is a back-tracking condition # therefore, we should now only check that at has not become too small, # in which case it is likely that nonlinearity has played a big role # here, so we take an ultra-conservative backtracking step a1 = max( at, a1 / 10.0 ) if a1 > at: logger.debug("at (%e) < a1/10: revert to backtracking a1/10", at) # (end of while(True) line-search loop) # (end of run()) def handle_args(self, x_start, dirn, a_max, a1, func_start, func_old, func_prime_start): """Verify passed parameters and set appropriate attributes accordingly. A suitable value for the initial step-length guess will be either verified or calculated, stored in the attribute self.a_start, and returned. Args: The args should be identical to those of self.run(). Returns: The suitable initial step-length guess a_start Raises: ValueError for problems with arguments """ self.a_max = a_max self.x_start = x_start self.dirn = dirn self.func_old = func_old self.func_start = func_start self.func_prime_start = func_prime_start if a_max is None: a_max = 2.0 if a_max < self.tol: logger.warning("a_max too small relative to tol. Reverting to " "default value a_max = 2.0 (twice the step).") a_max = 2.0 # THIS ASSUMES NEWTON/BFGS TYPE BEHAVIOUR! if func_start is None: logger.debug("Setting func_start") self.func_start = self.func(x_start) self.phi_prime_start = longsum(self.func_prime_start * self.dirn) if self.phi_prime_start >= 0: logger.error("Passed direction which is not downhill. Aborting...") raise ValueError("Direction is not downhill.") elif math.isinf(self.phi_prime_start): logger.error("Passed func_prime_start and dirn which are too big. " "Aborting...") raise ValueError("func_prime_start and dirn are too big.") if a1 is None: if func_old is not None: # Interpolating a quadratic to func and func_old - see NW # equation 3.60 a1 = 2*(self.func_start - self.func_old)/self.phi_prime_start logger.debug("Interpolated quadratic, obtained a1 = %e", a1) if a1 is None or a1 > a_max: logger.debug("a1 greater than a_max. Reverting to default value " "a1 = 1.0") a1 = 1.0 if a1 is None or a1 < self.tol: logger.debug("a1 is None or a1 < self.tol. Reverting to default value " "a1 = 1.0") a1 = 1.0 self.a_start = a1 logger.debug("phi_start = %e, phi_prime_start = %e", self.func_start, self.phi_prime_start) logger.debug("func_start = %s, self.func_old = %s", self.func_start, self.func_old) logger.debug("a1 = %e, a_max = %e", a1, a_max) return a1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/memory.py000066400000000000000000000406321316323560300235660ustar00rootroot00000000000000from __future__ import print_function import os import numpy as np from UserDict import DictMixin # ------------------------------------------------------------------- class MemoryBase(object, DictMixin): """Virtual memory (VM) statistics of the current process obtained from the relevant entries in /proc//status: VmPeak Peak virtual memory size in bytes. VmLck ??? VmHWM Peak resident set size ("high water mark") in bytes. VmRSS Resident memory usage in bytes. VmSize VM usage of the entire process in bytes. VmData VM usage of heap in bytes. VmStk VM usage of stack in bytes. VmExe VM usage of exe's and statically linked libraries in bytes. VmLib VM usage of dynamically linked libraries in bytes. VmPTE ??? Note that VmSize > VmData + VmStk + VmExe + VmLib due to overhead. """ _scale = {'KB':1024.0, 'MB':1024.0**2} _keys = ('VmPeak', 'VmLck', 'VmHWM', 'VmRSS', 'VmSize', 'VmData', \ 'VmStk', 'VmExe', 'VmLib', 'VmPTE') def __init__(self, verbose=0): self.verbose = verbose if self.verbose>=2: print('MemoryBase.__init__') object.__init__(self) self._values = np.empty(len(self._keys), dtype=np.float) def __repr__(self): """Return a representation of recorded VM statistics. x.__repr__() <==> repr(x)""" if self.verbose>=2: print('MemoryBase.__repr__') s = object.__repr__(self) w = max(map(len, self._keys)) unit = 'MB' for k,v in self.items(): res = '' if not np.isnan(v): res = '%8.3f %s' % (v/self._scale[unit], unit) s += '\n\t' + k.ljust(w) + ': ' + res.rjust(8) return s def __len__(self): """Number of VM keys which have not been outdated. x.__len__() <==> len(x)""" if self.verbose>=3: print('MemoryBase.__len__') return np.sum(~np.isnan(self._values)) def __getitem__(self, key): """Return floating point number associated with a VM key. x.__getitem__(y) <==> x[y]""" if self.verbose>=2: print('MemoryBase.__getitem__') if key not in self: raise KeyError(key) i = self.keys().index(key) return self._values[i] def __setitem__(self, key, value): """x.__setitem__(i, y) <==> x[i]=y""" if self.verbose>=2: print('MemoryBase.__setitem__') raise Exception('Virtual member function.') def __delitem__(self, key): """x.__delitem__(y) <==> del x[y]""" if self.verbose>=2: print('MemoryBase.__delitem__') raise Exception('Virtual member function.') def clear(self): """D.clear() -> None. Remove all items from D.""" if self.verbose>=1: print('MemoryBase.clear') raise Exception('Virtual member function.') def update(self, other=None): """D.update(E) -> None. Update D from E: for k in E.keys(): D[k] = E[k]""" if self.verbose>=1: print('MemoryBase.update') DictMixin.update(self, other) def copy(self): """Return a shallow copy of a VM statistics instance. D.copy() -> a shallow copy of D""" if self.verbose>=1: print('MemoryBase.copy') res = object.__new__(self.__class__) MemoryBase.__init__(res, self.verbose) DictMixin.update(res, self) return res def has_key(self, key): #necessary to avoid infinite recursion """Return boolean to indicate whether key is a supported VM key. D.has_key(k) -> True if D has a key k, else False""" if self.verbose>=3: print('MemoryBase.has_key') return key in self._keys def keys(self): """Return list of supported VM keys. D.keys() -> list of D's keys""" if self.verbose>=3: print('MemoryBase.keys') return list(self._keys) def values(self): """Return list of recorded VM statistics. D.values() -> list of D's values""" if self.verbose>=3: print('MemoryBase.values') return list(self._values) def get(self, key, default=None): """Return floating point number associated with a VM key. D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.""" if self.verbose>=1: print('MemoryBase.get') v = self[key] if type(default) in [int,float]: default = np.float_(default) if default is not None and not isinstance(default, np.floating): raise ValueError('Default value must be a floating point number.') if default is not None and np.isnan(v): return default else: return v def setdefault(self, key, default=None): """Return floating point number associated with a VM key. D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D""" if self.verbose>=1: print('MemoryBase.setdefault') v = self[key] if type(default) in [int,float]: default = np.float_(default) if default is not None and not isinstance(default, np.floating): raise ValueError('Default value must be a floating point number.') if default is not None and np.isnan(v): self[key] = default return default else: return v def pop(self, key, default=None): """Return floating point number for a VM key and mark it as outdated. D.pop(k[,d]) -> v, remove specified key and return the corresponding value If key is not found, d is returned if given, otherwise KeyError is raised""" if self.verbose>=1: print('MemoryBase.pop') v = self[key] if type(default) in [int,float]: default = np.float_(default) if default is not None and not isinstance(default, np.floating): raise ValueError('Default value must be a floating point number.') if default is not None and np.isnan(v): return default else: del self[key] return v def popitem(self): """Return floating point number for some not-yet outdated VM key. D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty""" if self.verbose>=1: print('MemoryBase.popitem') for k,v in self.items(): if not np.isnan(v): del self[k] return (k,v) raise KeyError def __add__(self, other): """x.__add__(y) <==> x+y""" if self.verbose>=1: print('MemoryBase.__add__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) res = self.copy() if isinstance(other, MemoryBase): res._values.__iadd__(other._values) elif type(other) in [int,float]: res._values.__iadd__(other) else: raise TypeError('Unsupported operand type') return res def __sub__(self, other): """x.__sub__(y) <==> x-y""" if self.verbose>=1: print('MemoryBase.__sub__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) res = self.copy() if isinstance(other, MemoryBase): res._values.__isub__(other._values) elif type(other) in [int,float]: res._values.__isub__(other) else: raise TypeError('Unsupported operand type') return res def __radd__(self, other): """x.__radd__(y) <==> y+x""" if self.verbose>=1: print('MemoryBase.__radd__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) res = self.copy() if isinstance(other, MemoryBase): res._values.__iadd__(other._values) elif type(other) in [int,float]: res._values.__iadd__(other) else: raise TypeError('Unsupported operand type') return res def __rsub__(self, other): """x.__rsub__(y) <==> y-x""" if self.verbose>=1: print('MemoryBase.__rsub__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) res = self.copy() res._values.__imul__(-1.0) if isinstance(other, MemoryBase): res._values.__iadd__(other._values) elif type(other) in [int,float]: res._values.__iadd__(other) else: raise TypeError('Unsupported operand type') return res # ------------------------------------------------------------------- class MemoryStatistics(MemoryBase): def __init__(self, verbose=0): MemoryBase.__init__(self, verbose) self.update() def __setitem__(self, key, value): """Set VM key to a floating point number. x.__setitem__(i, y) <==> x[i]=y""" if self.verbose>=2: print('MemoryStatistics.__setitem__') if key not in self: raise KeyError(key) if type(value) in [int,float]: value = np.float_(value) if not isinstance(value, np.floating): raise ValueError('Value must be a floating point number.') i = self.keys().index(key) self._values[i] = value def __delitem__(self, key): """Mark a VK key as outdated. x.__delitem__(y) <==> del x[y]""" if self.verbose>=2: print('MemoryStatistics.__delitem__') if key not in self: raise KeyError(key) self[key] = np.nan def clear(self): """Mark all supported VM keys as outdated. D.clear() -> None. Remove all items from D.""" if self.verbose>=1: print('MemoryStatistics.clear') self._values[:] = np.nan def refresh(self): """Refresh all outdated VM keys by reading /proc//status.""" if self.verbose>=1: print('MemoryBase.refresh') # NB: Linux /proc is for humans; Solaris /proc is for programs! # TODO: Use pipe from 'prstat -p ' or 'pmap -x 1 1' # Skip refresh if none are outdated (i.e. nan) if not np.isnan(self._values).any(): if self.verbose>=2: print('refresh: skipping...') return try: f = open('/proc/%d/status' % os.getpid(), 'r') for line in f: k, v = line.decode('ascii').split(':') # Only refresh supported keys that are outdated (i.e. nan) if k in self and np.isnan(self[k]): t, s = v.strip().split(None, 1) if self.verbose >= 2: print('refresh: k=%s, t=%s, s=%s' % (k, t, s)) self[k] = float(t) * self._scale[s.upper()] f.close() except (IOError, UnicodeError, ValueError): # Reset on error self.clear() def update(self, other=None): """Update VM statistics from a supplied dict, else clear and refresh. D.update(E) -> None. Update D from E: for k in E.keys(): D[k] = E[k]""" if self.verbose>=1: print('MemoryStatistics.update') # Call to update without arguments has special meaning if other is None: self.clear() self.refresh() else: MemoryBase.update(self, other) def __iadd__(self, other): """x.__iadd__(y) <==> x+=y""" if self.verbose>=1: print('MemoryStatistics.__iadd__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) if isinstance(other, MemoryBase): self._values.__iadd__(other._values) elif type(other) in [int,float]: self._values.__iadd__(other) else: raise TypeError('Unsupported operand type') return self def __isub__(self, other): """x.__isub__(y) <==> x-=y""" if self.verbose>=1: print('MemoryStatistics.__isub__(%s,%s)' \ % (object.__repr__(self), object.__repr__(other))) if isinstance(other, MemoryBase): self._values.__isub__(other._values) elif type(other) in [int,float]: self._values.__isub__(other) else: raise TypeError('Unsupported operand type') return self # ------------------------------------------------------------------- #http://www.eecho.info/Echo/python/singleton/ #http://mail.python.org/pipermail/python-list/2007-July/622333.html class Singleton(object): """A Pythonic Singleton object.""" def __new__(cls, *args, **kwargs): if '_inst' not in vars(cls): cls._inst = object.__new__(cls, *args, **kwargs) #cls._inst = super(type, cls).__new__(cls, *args, **kwargs) return cls._inst class MemorySingleton(MemoryBase, Singleton): __doc__ = MemoryBase.__doc__ + """ The singleton variant is immutable once it has been instantiated, which makes it suitable for recording the initial overhead of starting Python.""" def __init__(self, verbose=0): if verbose>=1: print('MemorySingleton.__init__') if '_values' not in vars(self): if verbose>=1: print('MemorySingleton.__init__ FIRST!') # Hack to circumvent singleton immutability self.__class__ = MemoryStatistics self.__init__(verbose) self.__class__ = MemorySingleton def __setitem__(self, key, value): """Disabled for the singleton. x.__setitem__(i, y) <==> x[i]=y""" if self.verbose>=2: print('MemorySingleton.__setitem__') raise ReferenceError('Singleton is immutable.') def __delitem__(self, key): """Disabled for the singleton. x.__delitem__(y) <==> del x[y]""" if self.verbose>=2: print('MemorySingleton.__delitem__') raise ReferenceError('Singleton is immutable.') def clear(self): """Disabled for the singleton. D.clear() -> None. Remove all items from D.""" if self.verbose>=1: print('MemorySingleton.clear') raise ReferenceError('Singleton is immutable.') def update(self): """Disabled for the singleton. D.update(E) -> None. Update D from E: for k in E.keys(): D[k] = E[k]""" if self.verbose>=1: print('MemorySingleton.update') raise ReferenceError('Singleton is immutable.') def copy(self): """Return a shallow non-singleton copy of a VM statistics instance. D.copy() -> a shallow copy of D""" if self.verbose>=1: print('MemorySingleton.copy') # Hack to circumvent singleton self-copy self.__class__ = MemoryStatistics res = self.copy() self.__class__ = MemorySingleton return res # Make sure singleton is instantiated MemorySingleton() # ------------------------------------------------------------------- # Helper functions for leak testing with NumPy arrays def shapegen(size, ndims, ecc=0.5): """Return a generator of an N-dimensional array shape which approximately contains a given number of elements. size: int or long in [1,inf[ The total number of elements ndims=3: int in [1,inf[ The number of dimensions ecc=0.5: float in ]0,1[ The eccentricity of the distribution """ assert type(size) in [int,float] and size>=1 assert isinstance(ndims, int) and ndims>=1 assert type(ecc) in [int,float] and ecc>0 and ecc<1 for i in range(ndims-1): scale = size**(1.0/(ndims-i)) c = round(np.random.uniform((1-ecc)*scale, 1.0/(1-ecc)*scale)) size/=c yield c yield round(size) def shapeopt(maxseed, size, ndims, ecc=0.5): """Return optimal estimate of an N-dimensional array shape which is closest to containing a given number of elements. maxseed: int in [1,inf[ The maximal number of seeds to try size: int or long in [1,inf[ The total number of elements ndims=3: int in [1,inf[ The number of dimensions ecc=0.5: float in ]0,1[ The eccentricity of the distribution """ assert isinstance(maxseed, int) and maxseed>=1 assert type(size) in [int,float] and size>=1 assert isinstance(ndims, int) and ndims>=1 assert type(ecc) in [int,float] and ecc>0 and ecc<1 digits_best = np.inf shape_best = None for seed in range(maxseed): np.random.seed(seed) shape = tuple(shapegen(size, ndims, ecc)) if np.prod(shape) == size: return -np.inf, shape digits = np.log10(abs(np.prod(shape)-size)) if digits < digits_best: (digits_best, shape_best) = (digits, shape) return digits_best, shape_best ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/sphinx.py000066400000000000000000000121501316323560300235610ustar00rootroot00000000000000from __future__ import print_function import os import traceback import warnings from os.path import join from stat import ST_MTIME from docutils import nodes from docutils.parsers.rst.roles import set_classes from ase.utils import exec_ import matplotlib matplotlib.use('Agg', warn=False) def mol_role(role, rawtext, text, lineno, inliner, options={}, content=[]): n = [] t = '' while text: if text[0] == '_': n.append(nodes.Text(t)) t = '' n.append(nodes.subscript(text=text[1])) text = text[2:] else: t += text[0] text = text[1:] n.append(nodes.Text(t)) return n, [] def git_role_tmpl(urlroot, role, rawtext, text, lineno, inliner, options={}, content=[]): if text[-1] == '>': i = text.index('<') name = text[:i - 1] text = text[i + 1:-1] else: name = text if name[0] == '~': name = name.split('/')[-1] text = text[1:] if '?' in name: name = name[:name.index('?')] ref = urlroot + text set_classes(options) node = nodes.reference(rawtext, name, refuri=ref, **options) return [node], [] def creates(): """Generator for Python scripts and their output filenames.""" for dirpath, dirnames, filenames in sorted(os.walk('.')): if dirpath.startswith('./build'): # Skip files in the build/ folder continue for filename in filenames: if filename.endswith('.py'): path = join(dirpath, filename) lines = open(path).readlines() if len(lines) == 0: continue if 'coding: utf-8' in lines[0]: lines.pop(0) outnames = [] for line in lines: if line.startswith('# creates:'): outnames.extend([file.rstrip(',') for file in line.split()[2:]]) else: break if outnames: yield dirpath, filename, outnames def create_png_files(): errcode = os.system('povray -h 2> /dev/null') if errcode: warnings.warn('No POVRAY!') # Replace write_pov with write_png: from ase.io import pov from ase.io.png import write_png def write_pov(filename, atoms, run_povray=False, **parameters): p = {} for key in ['rotation', 'show_unit_cell', 'radii', 'bbox', 'colors', 'scale']: if key in parameters: p[key] = parameters[key] write_png(filename[:-3] + 'png', atoms, **p) pov.write_pov = write_pov olddir = os.getcwd() for dir, pyname, outnames in creates(): path = join(dir, pyname) t0 = os.stat(path)[ST_MTIME] run = False for outname in outnames: try: t = os.stat(join(dir, outname))[ST_MTIME] except OSError: run = True break else: if t < t0: run = True break if run: print('running:', path) os.chdir(dir) import matplotlib.pyplot as plt plt.figure() try: exec_(compile(open(pyname).read(), pyname, 'exec'), {}) except KeyboardInterrupt: return except: traceback.print_exc() finally: os.chdir(olddir) plt.close() for outname in outnames: print(dir, outname) def clean(): """Remove all generated files.""" for dir, pyname, outnames in creates(): for outname in outnames: if os.path.isfile(os.path.join(dir, outname)): os.remove(os.path.join(dir, outname)) def visual_inspection(): """Manually inspect generated files.""" import subprocess images = [] text = [] pdf = [] for dir, pyname, outnames in creates(): for outname in outnames: path = os.path.join(dir, outname) ext = path.rsplit('.', 1)[1] if ext == 'pdf': pdf.append(path) elif ext in ['csv', 'txt', 'out', 'css', 'LDA', 'rst']: text.append(path) else: images.append(path) subprocess.call(['eog'] + images) subprocess.call(['evince'] + pdf) subprocess.call(['more'] + text) if __name__ == '__main__': import argparse parser = argparse.ArgumentParser(description='Process generated files.') parser.add_argument('command', nargs='?', default='list', choices=['list', 'inspect', 'clean']) args = parser.parse_args() if args.command == 'clean': clean() elif args.command == 'list': for dir, pyname, outnames in creates(): for outname in outnames: print(os.path.join(dir, outname)) else: visual_inspection() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/stylecheck.py000066400000000000000000000073531316323560300244170ustar00rootroot00000000000000# Check coding style compliance. # # For a description of error codes see: # # http://pep8.readthedocs.org/en/latest/intro.html#error-codes import argparse import os import smtplib import subprocess from email.mime.text import MIMEText def mail(to, subject, txt): msg = MIMEText(txt) msg['Subject'] = subject msg['From'] = 'pep8@fysik.dtu.dk' msg['To'] = to s = smtplib.SMTP('mail.fysik.dtu.dk') s.sendmail(msg['From'], [to], msg.as_string()) s.quit() p8 = 'pep8 --ignore W293,E129' def pep8(name): if not os.path.isfile(name): return [] try: output = subprocess.check_output(p8 + ' ' + name, shell=True) except subprocess.CalledProcessError as ex: output = ex.output lines = [] for line in output.decode().splitlines(): name, l, c, error = line.split(':', 3) # Allow 'a**b' while still disallowing 'a+b': if error.startswith(' E225') or error.startswith(' E226'): ln = open(name).readlines()[int(l) - 1] c = int(c) - 1 if ln[c:c + 2] == '**': continue lines.append(line) return lines def pyflakes(name): try: output = subprocess.check_output('pyflakes ' + name, shell=True) except subprocess.CalledProcessError as ex: output = ex.output return [line for line in output.decode().splitlines() if 'list comprehension redefines' not in line] def check_file(name): for line in pep8(name): print(line) for line in pyflakes(name): print(line) grrr = """Please always run this check on Python source-code before committing: $ alias check="python -m ase.utils.stylecheck" $ check foo.py bar.py ... This will run pep8 and pyflakes on you source. Install pep8 and pyflakes like this: $ pip install pep8 pyflakes """ def check_repository(to): output = subprocess.check_output('svn merge --dry-run -r BASE:HEAD .', shell=True) lines = output.decode().splitlines() names = [] for line in lines: st, name = line.split()[:2] if st in ['U', 'A'] and name.endswith('.py'): names.append(name) warnings = {} for name in names: w = pep8(name) warnings[name] = len(w) if names: subprocess.call('svn up > up.out', shell=True) n81 = 0 n82 = 0 nf = 0 txt = [] for name in names: w = pep8(name) n1 = warnings[name] n2 = len(w) if n2 > n1: n81 += n1 n82 += n2 txt.append('Number of PEP-8 errors increased from {} to {}:' .format(n1, n2)) for x in w: txt.append(x) txt.append('') q = pyflakes(name) if q: nf += len(q) txt.append('Warnings from PyFlakes:') txt += q txt.append('') if txt: subject = [] if n82 > n81: subject.append( 'PEP8 warnings increased from {} to {}'.format(n81, n82)) if nf: subject.append('PyFlakes warnings: {}'.format(nf)) txt = '\n'.join(txt) if to: mail(to, ' - '.join(subject), grrr + txt) else: print(txt) parser = argparse.ArgumentParser(description='Run both pep8 and pyflakes ' 'on file(s).') parser.add_argument('--check-repository', action='store_true') parser.add_argument('--mail') parser.add_argument('filenames', nargs='*', metavar='filename') args = parser.parse_args() if args.check_repository: check_repository(args.mail) else: for name in args.filenames: check_file(name) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/utils/timing.py000066400000000000000000000110231316323560300235350ustar00rootroot00000000000000from __future__ import print_function # Copyright (C) 2003 CAMP # Please see the accompanying LICENSE file for further information. import sys import time import functools def function_timer(func, *args, **kwargs): out = kwargs.pop('timeout', sys.stdout) t1 = time.time() r = func(*args, **kwargs) t2 = time.time() print(t2 - t1, file=out) return r class Timer: """Timer object. Use like this:: timer = Timer() timer.start('description') # do something timer.stop() or:: with timer('description'): # do something To get a summary call:: timer.write() """ def __init__(self, print_levels=1000): self.timers = {} self.t0 = time.time() self.running = [] self.print_levels = print_levels def print_info(self, calc): """Override to get to write info during calculator's initialize().""" pass def start(self, name): names = tuple(self.running + [name]) self.timers[names] = self.timers.get(names, 0.0) - time.time() self.running.append(name) def stop(self, name=None): if name is None: name = self.running[-1] names = tuple(self.running) running = self.running.pop() if name != running: raise RuntimeError('Must stop timers by stack order. ' 'Requested stopping of %s but topmost is %s' % (name, running)) self.timers[names] += time.time() return names def __call__(self, name): """Context manager for timing a block of code. Example (t is a timer object):: with t('Add two numbers'): x = 2 + 2 # same as this: t.start('Add two numbers') x = 2 + 2 t.stop() """ self.start(name) return self def __enter__(self): pass def __exit__(self, *args): self.stop() def get_time(self, *names): return self.timers[names] def write(self, out=sys.stdout): were_running = list(self.running) while self.running: self.stop() if len(self.timers) == 0: return t0 = time.time() tot = t0 - self.t0 n = max([len(names[-1]) + len(names) for names in self.timers]) + 1 line = '-' * (n + 26) + '\n' out.write('%-*s incl. excl.\n' % (n, 'Timing:')) out.write(line) tother = tot inclusive = self.timers.copy() exclusive = self.timers.copy() keys = sorted(exclusive.keys()) for names in keys: t = exclusive[names] if len(names) > 1: if len(names) < self.print_levels + 1: exclusive[names[:-1]] -= t else: tother -= t exclusive[('Other',)] = tother inclusive[('Other',)] = tother keys.append(('Other',)) for names in keys: t = exclusive[names] tinclusive = inclusive[names] r = t / tot p = 100 * r i = int(40 * r + 0.5) if i == 0: bar = '|' else: bar = '|%s|' % ('-' * (i - 1)) level = len(names) if level > self.print_levels: continue name = (level - 1) * ' ' + names[-1] + ':' out.write('%-*s%9.3f %9.3f %5.1f%% %s\n' % (n, name, tinclusive, t, p, bar)) out.write(line) out.write('%-*s%9.3f %5.1f%%\n\n' % (n + 10, 'Total:', tot, 100.0)) for name in were_running: self.start(name) def add(self, timer): for name, t in timer.timers.items(): self.timers[name] = self.timers.get(name, 0.0) + t class timer: """Decorator for timing a method call. Example:: from ase.utils.timing import timer, Timer class A: def __init__(self): self.timer = Timer() @timer('Add two numbers') def add(self, x, y): return x + y """ def __init__(self, name): self.name = name def __call__(self, method): @functools.wraps(method) def new_method(slf, *args, **kwargs): slf.timer.start(self.name) x = method(slf, *args, **kwargs) try: slf.timer.stop() except IndexError: pass return x return new_method ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/000077500000000000000000000000001316323560300227175ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/__init__.py000066400000000000000000000002031316323560300250230ustar00rootroot00000000000000from ase.vibrations.vibrations import Vibrations from ase.vibrations.infrared import Infrared __all__ = ['Vibrations', 'Infrared'] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/franck_condon.py000066400000000000000000000210761316323560300261030ustar00rootroot00000000000000from __future__ import division from functools import reduce from itertools import combinations, chain from math import factorial from operator import mul import numpy as np from ase.units import kg, C, _hbar, kB from ase.vibrations import Vibrations class FranckCondonOverlap: """Evaluate squared overlaps depending on the Huang-Rhys parameter.""" def factorial(self, n): try: return self._fac[n] except AttributeError: self._fac = [1] return self.factorial(n) except IndexError: for i in range(len(self._fac), n + 1): self._fac.append(i * self._fac[i - 1]) return self._fac[n] def directT0(self, n, S): """Direct squared Franck-Condon overlap corresponding to T=0.""" return np.exp(-S) * S**n / self.factorial(n) def direct(self, n, m, S_in): """Direct squared Franck-Condon overlap.""" if n > m: # use symmetry return self.direct(m, n, S_in) S = np.array([S_in]) mask = np.where(S == 0) S[mask] = 1 # hide zeros s = 0 for k in range(n + 1): s += (-1)**(n - k) * S**float(-k) / ( self.factorial(k) * self.factorial(n - k) * self.factorial(m - k)) res = np.exp(-S) * S**(n + m) * s**2 * ( self.factorial(n) * self.factorial(m)) # use othogonality res[mask] = int(n == m) return res[0] def direct0mm1(self, m, S): """<0|m>""" sum = S**m if m: sum -= m * S**(m - 1) return np.exp(-S) * np.sqrt(S) * sum / self.factorial(m) def direct0mm2(self, m, S): """<0|m>""" sum = S**(m + 1) if m >= 1: sum -= 2 * m * S**m if m >= 2: sum += m * (m - 1) * S**(m - 1) return np.exp(-S) / np.sqrt(2) * sum / self.factorial(m) class FranckCondon: def __init__(self, atoms, vibname, minfreq=-np.inf, maxfreq=np.inf): """Input is a atoms object and the corresponding vibrations. With minfreq and maxfreq frequencies can be excluded from the calculation""" self.atoms = atoms # V = a * v is the combined atom and xyz-index self.mm05_V = np.repeat(1. / np.sqrt(atoms.get_masses()), 3) self.minfreq = minfreq self.maxfreq = maxfreq self.shape = (len(self.atoms), 3) vib = Vibrations(atoms, name=vibname) self.energies = np.real(vib.get_energies(method='frederiksen')) # [eV] self.frequencies = np.real( vib.get_frequencies(method='frederiksen')) # [cm^-1] self.modes = vib.modes self.H = vib.H def get_Huang_Rhys_factors(self, forces): """Evaluate Huang-Rhys factors and corresponding frequencies from forces on atoms in the exited electronic state. The double harmonic approximation is used. HR factors are the first approximation of FC factors, no combinations or higher quanta (>1) exitations are considered""" assert(forces.shape == self.shape) # Hesse matrix H_VV = self.H # sqrt of inverse mass matrix mm05_V = self.mm05_V # mass weighted Hesse matrix Hm_VV = mm05_V[:, None] * H_VV * mm05_V # mass weighted displacements Fm_V = forces.flat * mm05_V X_V = np.linalg.solve(Hm_VV, Fm_V) # projection onto the modes modes_VV = self.modes d_V = np.dot(modes_VV, X_V) # Huang-Rhys factors S s = 1.e-20 / kg / C / _hbar**2 # SI units S_V = s * d_V**2 * self.energies / 2 # reshape for minfreq indices = np.where(self.frequencies <= self.minfreq) np.append(indices, np.where(self.frequencies >= self.maxfreq)) S_V = np.delete(S_V, indices) frequencies = np.delete(self.frequencies, indices) return S_V, frequencies def get_Franck_Condon_factors(self, order, temp, forces): """Return FC factors and corresponding frequencies up to given order. order= number of quanta taken into account T= temperature in K. Vibronic levels are occupied by a Boltzman distribution. forces= forces on atoms in the exited electronic state""" S, f = self.get_Huang_Rhys_factors(forces) n = order + 1 T = temp freq = np.array(f) # frequencies freq_n = [[] * i for i in range(n - 1)] freq_neg = [[] * i for i in range(n - 1)] for i in range(1, n): freq_n[i - 1] = freq * i freq_neg[i - 1] = freq * (-i) # combinations freq_nn = [x for x in combinations(chain(*freq_n), 2)] for i in range(len(freq_nn)): freq_nn[i] = freq_nn[i][0] + freq_nn[i][1] indices2 = [] for i, y in enumerate(freq): ind = [j for j, x in enumerate(freq_nn) if x % y == 0] indices2.append(ind) indices2 = [x for x in chain(*indices2)] freq_nn = np.delete(freq_nn, indices2) frequencies = [[] * x for x in range(3)] frequencies[0].append(freq_neg[0]) frequencies[0].append([0]) frequencies[0].append(freq_n[0]) frequencies[0] = [x for x in chain(*frequencies[0])] for i in range(1, n - 1): frequencies[1].append(freq_neg[i]) frequencies[1].append(freq_n[i]) frequencies[1] = [x for x in chain(*frequencies[1])] frequencies[2] = freq_nn # Franck-Condon factors E = freq / 8065.5 f_n = [[] * i for i in range(n)] for j in range(0, n): f_n[j] = np.exp(-E * j / (kB * T)) # partition function Z = np.empty(len(S)) Z = np.sum(f_n, 0) # occupation probability w_n = [[] * k for k in range(n)] for l in range(n): w_n[l] = f_n[l] / Z # overlap wavefunctions O_n = [[] * m for m in range(n)] O_neg = [[] * m for m in range(n)] for o in range(n): O_n[o] = [[] * p for p in range(n)] O_neg[o] = [[] * p for p in range(n - 1)] for q in range(o, n + o): a = np.minimum(o, q) summe = [] for k in range(a + 1): s = ((-1)**(q - k) * np.sqrt(S)**(o + q - 2 * k) * factorial(o) * factorial(q) / (factorial(k) * factorial(o - k) * factorial(q - k))) summe.append(s) summe = np.sum(summe, 0) O_n[o][q - o] = (np.exp(-S / 2) / (factorial(o) * factorial(q))**(0.5) * summe)**2 * w_n[o] for q in range(n - 1): O_neg[o][q] = [0 * b for b in range(len(S))] for q in range(o - 1, -1, -1): a = np.minimum(o, q) summe = [] for k in range(a + 1): s = ((-1)**(q - k) * np.sqrt(S)**(o + q - 2 * k) * factorial(o) * factorial(q) / (factorial(k) * factorial(o - k) * factorial(q - k))) summe.append(s) summe = np.sum(summe, 0) O_neg[o][q] = (np.exp(-S / 2) / (factorial(o) * factorial(q))**(0.5) * summe)**2 * w_n[o] O_neg = np.delete(O_neg, 0, 0) # Franck-Condon factors FC_n = [[] * i for i in range(n)] FC_n = np.sum(O_n, 0) zero = reduce(mul, FC_n[0]) FC_neg = [[] * i for i in range(n - 2)] FC_neg = np.sum(O_neg, 0) FC_n = np.delete(FC_n, 0, 0) # combination FC factors FC_nn = [x for x in combinations(chain(*FC_n), 2)] for i in range(len(FC_nn)): FC_nn[i] = FC_nn[i][0] * FC_nn[i][1] FC_nn = np.delete(FC_nn, indices2) FC = [[] * x for x in range(3)] FC[0].append(FC_neg[0]) FC[0].append([zero]) FC[0].append(FC_n[0]) FC[0] = [x for x in chain(*FC[0])] for i in range(1, n - 1): FC[1].append(FC_neg[i]) FC[1].append(FC_n[i]) FC[1] = [x for x in chain(*FC[1])] FC[2] = FC_nn """Returned are two 3-dimensional lists. First inner list contains frequencies and FC-factors of vibrations exited with |1| quanta and the 0-0 transition. Second list contains frequencies and FC-factors from higher quanta exitations. Third list are combinations of two normal modes (including combinations of higher quanta exitations). """ return FC, frequencies ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/infrared.py000066400000000000000000000320161316323560300250650ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Infrared intensities""" import pickle from math import sqrt from sys import stdout import numpy as np import ase.units as units from ase.parallel import parprint, paropen from ase.vibrations import Vibrations from ase.utils import basestring class Infrared(Vibrations): """Class for calculating vibrational modes and infrared intensities using finite difference. The vibrational modes are calculated from a finite difference approximation of the Dynamical matrix and the IR intensities from a finite difference approximation of the gradient of the dipole moment. The method is described in: D. Porezag, M. R. Pederson: "Infrared intensities and Raman-scattering activities within density-functional theory", Phys. Rev. B 54, 7830 (1996) The calculator object (calc) linked to the Atoms object (atoms) must have the attribute: >>> calc.get_dipole_moment(atoms) In addition to the methods included in the ``Vibrations`` class the ``Infrared`` class introduces two new methods; *get_spectrum()* and *write_spectra()*. The *summary()*, *get_energies()*, *get_frequencies()*, *get_spectrum()* and *write_spectra()* methods all take an optional *method* keyword. Use method='Frederiksen' to use the method described in: T. Frederiksen, M. Paulsson, M. Brandbyge, A. P. Jauho: "Inelastic transport theory from first-principles: methodology and applications for nanoscale devices", Phys. Rev. B 75, 205413 (2007) atoms: Atoms object The atoms to work on. indices: list of int List of indices of atoms to vibrate. Default behavior is to vibrate all atoms. name: str Name to use for files. delta: float Magnitude of displacements. nfree: int Number of displacements per degree of freedom, 2 or 4 are supported. Default is 2 which will displace each atom +delta and -delta in each cartesian direction. directions: list of int Cartesian coordinates to calculate the gradient of the dipole moment in. For example directions = 2 only dipole moment in the z-direction will be considered, whereas for directions = [0, 1] only the dipole moment in the xy-plane will be considered. Default behavior is to use the dipole moment in all directions. Example: >>> from ase.io import read >>> from ase.calculators.vasp import Vasp >>> from ase.vibrations import Infrared >>> water = read('water.traj') # read pre-relaxed structure of water >>> calc = Vasp(prec='Accurate', ... ediff=1E-8, ... isym=0, ... idipol=4, # calculate the total dipole moment ... dipol=water.get_center_of_mass(scaled=True), ... ldipol=True) >>> water.set_calculator(calc) >>> ir = Infrared(water) >>> ir.run() >>> ir.summary() ------------------------------------- Mode Frequency Intensity # meV cm^-1 (D/Ã…)^2 amu^-1 ------------------------------------- 0 16.9i 136.2i 1.6108 1 10.5i 84.9i 2.1682 2 5.1i 41.1i 1.7327 3 0.3i 2.2i 0.0080 4 2.4 19.0 0.1186 5 15.3 123.5 1.4956 6 195.5 1576.7 1.6437 7 458.9 3701.3 0.0284 8 473.0 3814.6 1.1812 ------------------------------------- Zero-point energy: 0.573 eV Static dipole moment: 1.833 D Maximum force on atom in `equilibrium`: 0.0026 eV/Ã… This interface now also works for calculator 'siesta', (added get_dipole_moment for siesta). Example: >>> #!/usr/bin/env python >>> from ase.io import read >>> from ase.calculators.siesta import Siesta >>> from ase.vibrations import Infrared >>> bud = read('bud1.xyz') >>> calc = Siesta(label='bud', ... meshcutoff=250 * Ry, ... basis='DZP', ... kpts=[1, 1, 1]) >>> calc.set_fdf('DM.MixingWeight', 0.08) >>> calc.set_fdf('DM.NumberPulay', 3) >>> calc.set_fdf('DM.NumberKick', 20) >>> calc.set_fdf('DM.KickMixingWeight', 0.15) >>> calc.set_fdf('SolutionMethod', 'Diagon') >>> calc.set_fdf('MaxSCFIterations', 500) >>> calc.set_fdf('PAO.BasisType', 'split') >>> #50 meV = 0.003674931 * Ry >>> calc.set_fdf('PAO.EnergyShift', 0.003674931 * Ry ) >>> calc.set_fdf('LatticeConstant', 1.000000 * Ang) >>> calc.set_fdf('WriteCoorXmol', 'T') >>> bud.set_calculator(calc) >>> ir = Infrared(bud) >>> ir.run() >>> ir.summary() """ def __init__(self, atoms, indices=None, name='ir', delta=0.01, nfree=2, directions=None): assert nfree in [2, 4] self.atoms = atoms if atoms.constraints: print('WARNING! \n Your Atoms object is constrained. ' 'Some forces may be unintended set to zero. \n') self.calc = atoms.get_calculator() if indices is None: indices = range(len(atoms)) self.indices = np.asarray(indices) self.nfree = nfree self.name = name + '-d%.3f' % delta self.delta = delta self.H = None if directions is None: self.directions = np.asarray([0, 1, 2]) else: self.directions = np.asarray(directions) self.ir = True self.ram = False def read(self, method='standard', direction='central'): self.method = method.lower() self.direction = direction.lower() assert self.method in ['standard', 'frederiksen'] if direction != 'central': raise NotImplementedError( 'Only central difference is implemented at the moment.') # Get "static" dipole moment and forces name = '%s.eq.pckl' % self.name [forces_zero, dipole_zero] = pickle.load(open(name, 'rb')) self.dipole_zero = (sum(dipole_zero**2)**0.5) / units.Debye self.force_zero = max([sum((forces_zero[j])**2)**0.5 for j in self.indices]) ndof = 3 * len(self.indices) H = np.empty((ndof, ndof)) dpdx = np.empty((ndof, 3)) r = 0 for a in self.indices: for i in 'xyz': name = '%s.%d%s' % (self.name, a, i) [fminus, dminus] = pickle.load(open(name + '-.pckl', 'rb')) [fplus, dplus] = pickle.load(open(name + '+.pckl', 'rb')) if self.nfree == 4: [fminusminus, dminusminus] = pickle.load( open(name + '--.pckl', 'rb')) [fplusplus, dplusplus] = pickle.load( open(name + '++.pckl', 'rb')) if self.method == 'frederiksen': fminus[a] += -fminus.sum(0) fplus[a] += -fplus.sum(0) if self.nfree == 4: fminusminus[a] += -fminus.sum(0) fplusplus[a] += -fplus.sum(0) if self.nfree == 2: H[r] = (fminus - fplus)[self.indices].ravel() / 2.0 dpdx[r] = (dminus - dplus) if self.nfree == 4: H[r] = (-fminusminus + 8 * fminus - 8 * fplus + fplusplus)[self.indices].ravel() / 12.0 dpdx[r] = (-dplusplus + 8 * dplus - 8 * dminus + dminusminus) / 6.0 H[r] /= 2 * self.delta dpdx[r] /= 2 * self.delta for n in range(3): if n not in self.directions: dpdx[r][n] = 0 dpdx[r][n] = 0 r += 1 # Calculate eigenfrequencies and eigenvectors m = self.atoms.get_masses() H += H.copy().T self.H = H m = self.atoms.get_masses() self.im = np.repeat(m[self.indices]**-0.5, 3) omega2, modes = np.linalg.eigh(self.im[:, None] * H * self.im) self.modes = modes.T.copy() # Calculate intensities dpdq = np.array([dpdx[j] / sqrt(m[self.indices[j // 3]] * units._amu / units._me) for j in range(ndof)]) dpdQ = np.dot(dpdq.T, modes) dpdQ = dpdQ.T intensities = np.array([sum(dpdQ[j]**2) for j in range(ndof)]) # Conversion factor: s = units._hbar * 1e10 / sqrt(units._e * units._amu) self.hnu = s * omega2.astype(complex)**0.5 # Conversion factor from atomic units to (D/Angstrom)^2/amu. conv = (1.0 / units.Debye)**2 * units._amu / units._me self.intensities = intensities * conv def intensity_prefactor(self, intensity_unit): if intensity_unit == '(D/A)2/amu': return 1.0, '(D/Ã…)^2 amu^-1' elif intensity_unit == 'km/mol': # conversion factor from Porezag PRB 54 (1996) 7830 return 42.255, 'km/mol' else: raise RuntimeError('Intensity unit >' + intensity_unit + '< unknown.') def summary(self, method='standard', direction='central', intensity_unit='(D/A)2/amu', log=stdout): hnu = self.get_energies(method, direction) s = 0.01 * units._e / units._c / units._hplanck iu, iu_string = self.intensity_prefactor(intensity_unit) if intensity_unit == '(D/A)2/amu': iu_format = '%9.4f' elif intensity_unit == 'km/mol': iu_string = ' ' + iu_string iu_format = ' %7.1f' if isinstance(log, basestring): log = paropen(log, 'a') parprint('-------------------------------------', file=log) parprint(' Mode Frequency Intensity', file=log) parprint(' # meV cm^-1 ' + iu_string, file=log) parprint('-------------------------------------', file=log) for n, e in enumerate(hnu): if e.imag != 0: c = 'i' e = e.imag else: c = ' ' e = e.real parprint(('%3d %6.1f%s %7.1f%s ' + iu_format) % (n, 1000 * e, c, s * e, c, iu * self.intensities[n]), file=log) parprint('-------------------------------------', file=log) parprint('Zero-point energy: %.3f eV' % self.get_zero_point_energy(), file=log) parprint('Static dipole moment: %.3f D' % self.dipole_zero, file=log) parprint('Maximum force on atom in `equilibrium`: %.4f eV/Ã…' % self.force_zero, file=log) parprint(file=log) def get_spectrum(self, start=800, end=4000, npts=None, width=4, type='Gaussian', method='standard', direction='central', intensity_unit='(D/A)2/amu', normalize=False): """Get infrared spectrum. The method returns wavenumbers in cm^-1 with corresponding absolute infrared intensity. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1. normalize=True ensures the integral over the peaks to give the intensity. """ frequencies = self.get_frequencies(method, direction).real intensities = self.intensities return self.fold(frequencies, intensities, start, end, npts, width, type, normalize) def write_spectra(self, out='ir-spectra.dat', start=800, end=4000, npts=None, width=10, type='Gaussian', method='standard', direction='central', intensity_unit='(D/A)2/amu', normalize=False): """Write out infrared spectrum to file. First column is the wavenumber in cm^-1, the second column the absolute infrared intensities, and the third column the absorbance scaled so that data runs from 1 to 0. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1.""" energies, spectrum = self.get_spectrum(start, end, npts, width, type, method, direction, normalize) # Write out spectrum in file. First column is absolute intensities. # Second column is absorbance scaled so that data runs from 1 to 0 spectrum2 = 1. - spectrum / spectrum.max() outdata = np.empty([len(energies), 3]) outdata.T[0] = energies outdata.T[1] = spectrum outdata.T[2] = spectrum2 fd = open(out, 'w') fd.write('# %s folded, width=%g cm^-1\n' % (type.title(), width)) iu, iu_string = self.intensity_prefactor(intensity_unit) if normalize: iu_string = 'cm ' + iu_string fd.write('# [cm^-1] %14s\n' % ('[' + iu_string + ']')) for row in outdata: fd.write('%.3f %15.5e %15.5e \n' % (row[0], iu * row[1], row[2])) fd.close() # np.savetxt(out, outdata, fmt='%.3f %15.5e %15.5e') InfraRed = Infrared # old name ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/resonant_raman.py000066400000000000000000000667721316323560300263220ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Resonant Raman intensities""" from __future__ import print_function, division import pickle import os import sys import numpy as np import ase.units as units from ase.parallel import rank, parprint, paropen from ase.vibrations import Vibrations from ase.vibrations.franck_condon import FranckCondonOverlap from ase.utils.timing import Timer from ase.utils import convert_string_to_fd, basestring class ResonantRaman(Vibrations): """Class for calculating vibrational modes and resonant Raman intensities using finite difference. atoms: Atoms object Excitations: Class to calculate the excitations. The class object is initialized as:: Excitations(atoms.get_calculator()) or by reading form a file as:: Excitations('filename', **exkwargs) The file is written by calling the method Excitations.write('filename'). Excitations should work like a list of ex obejects, where: ex.get_dipole_me(form='v'): gives the dipole matrix element in |e| * Angstrom ex.energy: is the transition energy in Hartrees """ def __init__(self, atoms, Excitations, indices=None, gsname='rraman', # name for ground state calculations exname=None, # name for excited state calculations delta=0.01, nfree=2, directions=None, approximation='Profeta', observation={'geometry': '-Z(XX)Z'}, exkwargs={}, # kwargs to be passed to Excitations exext='.ex.gz', # extension for Excitation names txt='-', verbose=False,): assert(nfree == 2) Vibrations.__init__(self, atoms, indices, gsname, delta, nfree) self.name = gsname + '-d%.3f' % delta if exname is None: exname = gsname self.exname = exname + '-d%.3f' % delta self.exext = exext if directions is None: self.directions = np.array([0, 1, 2]) else: self.directions = np.array(directions) self.approximation = approximation self.observation = observation self.exobj = Excitations self.exkwargs = exkwargs self.timer = Timer() self.txt = convert_string_to_fd(txt) self.verbose = verbose @staticmethod def m2(z): return (z * z.conj()).real def log(self, message, pre='# ', end='\n'): if self.verbose: self.txt.write(pre + message + end) self.txt.flush() def calculate(self, filename, fd): """Call ground and excited state calculation""" self.timer.start('Ground state') forces = self.atoms.get_forces() if rank == 0: pickle.dump(forces, fd, protocol=2) fd.close() self.timer.stop('Ground state') self.timer.start('Excitations') basename, _ = os.path.splitext(filename) excitations = self.exobj( self.atoms.get_calculator(), **self.exkwargs) excitations.write(basename + self.exext) self.timer.stop('Excitations') def read_excitations(self): self.timer.start('read excitations') self.timer.start('really read') self.log('reading ' + self.exname + '.eq' + self.exext) ex0_object = self.exobj(self.exname + '.eq' + self.exext, **self.exkwargs) self.timer.stop('really read') self.timer.start('index') matching = frozenset(ex0_object) self.timer.stop('index') def append(lst, exname, matching): self.timer.start('really read') self.log('reading ' + exname, end=' ') exo = self.exobj(exname, **self.exkwargs) lst.append(exo) self.timer.stop('really read') self.timer.start('index') matching = matching.intersection(exo) self.log('len={0}, matching={1}'.format(len(exo), len(matching)), pre='') self.timer.stop('index') return matching exm_object_list = [] exp_object_list = [] for a in self.indices: for i in 'xyz': name = '%s.%d%s' % (self.exname, a, i) matching = append(exm_object_list, name + '-' + self.exext, matching) matching = append(exp_object_list, name + '+' + self.exext, matching) self.ndof = 3 * len(self.indices) self.nex = len(matching) self.timer.stop('read excitations') self.timer.start('select') def select(exl, matching): mlst = [ex for ex in exl if ex in matching] assert(len(mlst) == len(matching)) return mlst ex0 = select(ex0_object, matching) exm = [] exp = [] r = 0 for a in self.indices: for i in 'xyz': exm.append(select(exm_object_list[r], matching)) exp.append(select(exp_object_list[r], matching)) r += 1 self.timer.stop('select') self.timer.start('me and energy') eu = units.Hartree self.ex0E_p = np.array([ex.energy * eu for ex in ex0]) self.ex0m_pc = np.array( [ex.get_dipole_me(form='v') for ex in ex0]) exmE_rp = [] expE_rp = [] exF_rp = [] exmm_rpc = [] expm_rpc = [] r = 0 for a in self.indices: for i in 'xyz': exmE_rp.append([em.energy for em in exm[r]]) expE_rp.append([ep.energy for ep in exp[r]]) exF_rp.append( [(ep.energy - em.energy) for ep, em in zip(exp[r], exm[r])]) exmm_rpc.append( [ex.get_dipole_me(form='v') for ex in exm[r]]) expm_rpc.append( [ex.get_dipole_me(form='v') for ex in exp[r]]) r += 1 self.exmE_rp = np.array(exmE_rp) * eu self.expE_rp = np.array(expE_rp) * eu self.exF_rp = np.array(exF_rp) * eu / 2 / self.delta self.exmm_rpc = np.array(exmm_rpc) self.expm_rpc = np.array(expm_rpc) self.timer.stop('me and energy') def read(self, method='standard', direction='central'): """Read data from a pre-performed calculation.""" if not hasattr(self, 'modes'): self.timer.start('read vibrations') Vibrations.read(self, method, direction) # we now have: # self.H : Hessian matrix # self.im : 1./sqrt(masses) # self.modes : Eigenmodes of the mass weighted H self.om_r = self.hnu.real # energies in eV self.timer.stop('read vibrations') if not hasattr(self, 'ex0E_p'): self.read_excitations() def get_Huang_Rhys_factors(self, forces_r): """Evaluate Huang-Rhys factors derived from forces.""" self.timer.start('Huang-Rhys') assert(len(forces_r.flat) == self.ndof) # solve the matrix equation for the equilibrium displacements # XXX why are the forces mass weighted ??? X_r = np.linalg.solve(self.im[:, None] * self.H * self.im, forces_r.flat * self.im) d_r = np.dot(self.modes, X_r) # Huang-Rhys factors S s = 1.e-20 / units.kg / units.C / units._hbar**2 # SI units self.timer.stop('Huang-Rhys') return s * d_r**2 * self.om_r / 2. def get_matrix_element_AlbrechtA(self, omega, gamma=0.1, ml=range(16)): """Evaluate Albrecht A term. Unit: |e|^2Angstrom^2/eV """ self.read() self.timer.start('AlbrechtA') if not hasattr(self, 'fco'): self.fco = FranckCondonOverlap() # excited state forces F_pr = self.exF_rp.T m_rcc = np.zeros((self.ndof, 3, 3), dtype=complex) for p, energy in enumerate(self.ex0E_p): S_r = self.get_Huang_Rhys_factors(F_pr[p]) me_cc = np.outer(self.ex0m_pc[p], self.ex0m_pc[p].conj()) for m in ml: self.timer.start('0mm1') fco_r = self.fco.direct0mm1(m, S_r) self.timer.stop('0mm1') self.timer.start('einsum') m_rcc += np.einsum('a,bc->abc', fco_r / (energy + m * self.om_r - omega - 1j * gamma), me_cc) m_rcc += np.einsum('a,bc->abc', fco_r / (energy + (m - 1) * self.om_r + omega + 1j * gamma), me_cc) self.timer.stop('einsum') self.timer.stop('AlbrechtA') return m_rcc def get_matrix_element_AlbrechtBC(self, omega, gamma=0.1, ml=[1], term='BC'): """Evaluate Albrecht B and/or C term(s).""" self.read() self.timer.start('AlbrechtBC') if not hasattr(self, 'fco'): self.fco = FranckCondonOverlap() # excited state forces F_pr = self.exF_rp.T m_rcc = np.zeros((self.ndof, 3, 3), dtype=complex) for p, energy in enumerate(self.ex0E_p): S_r = self.get_Huang_Rhys_factors(F_pr[p]) for m in ml: self.timer.start('Franck-Condon overlaps') fc1mm1_r = self.fco.direct(1, m, S_r) fc0mm02_r = self.fco.direct(0, m, S_r) fc0mm02_r += np.sqrt(2) * self.fco.direct0mm2(m, S_r) # XXXXX fc1mm1_r[-1] = 1 fc0mm02_r[-1] = 1 print(m, fc1mm1_r[-1], fc0mm02_r[-1]) self.timer.stop('Franck-Condon overlaps') self.timer.start('me dervivatives') dm_rc = [] r = 0 for a in self.indices: for i in 'xyz': dm_rc.append( (self.expm_rpc[r, p] - self.exmm_rpc[r, p]) * self.im[r]) print('pm=', self.expm_rpc[r, p], self.exmm_rpc[r, p]) r += 1 dm_rc = np.array(dm_rc) / (2 * self.delta) self.timer.stop('me dervivatives') self.timer.start('map to modes') # print('dm_rc[2], dm_rc[5]', dm_rc[2], dm_rc[5]) print('dm_rc=', dm_rc) dm_rc = np.dot(dm_rc.T, self.modes.T).T print('dm_rc[-1][2]', dm_rc[-1][2]) self.timer.stop('map to modes') self.timer.start('multiply') # me_cc = np.outer(self.ex0m_pc[p], self.ex0m_pc[p].conj()) for r in range(self.ndof): if 'B' in term: # XXXX denom = (1. / (energy + m * 0 * self.om_r[r] - omega - 1j * gamma)) # ok print('denom=', denom) m_rcc[r] += (np.outer(dm_rc[r], self.ex0m_pc[p].conj()) * fc1mm1_r[r] * denom) if r == 5: print('m_rcc[r]=', m_rcc[r][2, 2]) m_rcc[r] += (np.outer(self.ex0m_pc[p], dm_rc[r].conj()) * fc0mm02_r[r] * denom) if 'C' in term: denom = (1. / (energy + (m - 1) * self.om_r[r] + omega + 1j * gamma)) m_rcc[r] += (np.outer(self.ex0m_pc[p], dm_rc[r].conj()) * fc1mm1_r[r] * denom) m_rcc[r] += (np.outer(dm_rc[r], self.ex0m_pc[p].conj()) * fc0mm02_r[r] * denom) self.timer.stop('multiply') print('m_rcc[-1]=', m_rcc[-1][2, 2]) self.timer.start('pre_r') with np.errstate(divide='ignore'): pre_r = np.where(self.om_r > 0, np.sqrt(units._hbar**2 / 2. / self.om_r), 0) # print('BC: pre_r=', pre_r) for r, p in enumerate(pre_r): m_rcc[r] *= p self.timer.stop('pre_r') self.timer.stop('AlbrechtBC') return m_rcc def get_matrix_element_Profeta(self, omega, gamma=0.1, energy_derivative=False): """Evaluate Albrecht B+C term in Profeta and Mauri approximation""" self.read() self.timer.start('amplitudes') self.timer.start('init') V_rcc = np.zeros((self.ndof, 3, 3), dtype=complex) pre = 1. / (2 * self.delta) self.timer.stop('init') def kappa(me_pc, e_p, omega, gamma, form='v'): """Kappa tensor after Profeta and Mauri PRB 63 (2001) 245415""" me_ccp = np.empty((3, 3, len(e_p)), dtype=complex) for p, me_c in enumerate(me_pc): me_ccp[:, :, p] = np.outer(me_pc[p], me_pc[p].conj()) # print('kappa: me_ccp=', me_ccp[2,2,0]) # ok print('kappa: den=', 1./(e_p - omega - 1j * gamma)) kappa_ccp = (me_ccp / (e_p - omega - 1j * gamma) + me_ccp.conj() / (e_p + omega + 1j * gamma)) return kappa_ccp.sum(2) self.timer.start('kappa') r = 0 for a in self.indices: for i in 'xyz': if not energy_derivative < 0: V_rcc[r] = pre * self.im[r] * ( kappa(self.expm_rpc[r], self.ex0E_p, omega, gamma) - kappa(self.exmm_rpc[r], self.ex0E_p, omega, gamma)) if energy_derivative: V_rcc[r] += pre * self.im[r] * ( kappa(self.ex0m_pc, self.expE_rp[r], omega, gamma) - kappa(self.ex0m_pc, self.exmE_rp[r], omega, gamma)) r += 1 self.timer.stop('kappa') # print('V_rcc[2], V_rcc[5]=', V_rcc[2,2,2], V_rcc[5,2,2]) self.timer.stop('amplitudes') # map to modes self.timer.start('pre_r') with np.errstate(divide='ignore'): pre_r = np.where(self.om_r > 0, np.sqrt(units._hbar**2 / 2. / self.om_r), 0) V_rcc = np.dot(V_rcc.T, self.modes.T).T # looks ok print('self.modes.T[-1]',self.modes.T) # looks ok print('V_rcc[-1]=', V_rcc[-1][2,2]) # ok print('Profeta: pre_r=', pre_r) for r, p in enumerate(pre_r): V_rcc[r] *= p self.timer.stop('pre_r') return V_rcc def get_matrix_element(self, omega, gamma): self.read() V_rcc = np.zeros((self.ndof, 3, 3), dtype=complex) if self.approximation.lower() == 'profeta': V_rcc += self.get_matrix_element_Profeta(omega, gamma) elif self.approximation.lower() == 'placzek': V_rcc += self.get_matrix_element_Profeta(omega, gamma, True) elif self.approximation.lower() == 'p-p': V_rcc += self.get_matrix_element_Profeta(omega, gamma, -1) elif self.approximation.lower() == 'albrecht a': V_rcc += self.get_matrix_element_AlbrechtA(omega, gamma) elif self.approximation.lower() == 'albrecht b': raise NotImplementedError('not working') V_rcc += self.get_matrix_element_AlbrechtBC(omega, gamma, term='B') elif self.approximation.lower() == 'albrecht c': raise NotImplementedError('not working') V_rcc += self.get_matrix_element_AlbrechtBC(omega, gamma, term='C') elif self.approximation.lower() == 'albrecht bc': raise NotImplementedError('not working') V_rcc += self.get_matrix_element_AlbrechtBC(omega, gamma) elif self.approximation.lower() == 'albrecht': raise NotImplementedError('not working') V_rcc += self.get_matrix_element_AlbrechtA(omega, gamma) V_rcc += self.get_matrix_element_AlbrechtBC(omega, gamma) elif self.approximation.lower() == 'albrecht+profeta': V_rcc += self.get_matrix_element_AlbrechtA(omega, gamma) V_rcc += self.get_matrix_element_Profeta(omega, gamma) else: raise NotImplementedError( 'Approximation {0} not implemented. '.format( self.approximation) + 'Please use "Profeta", "Albrecht A/B/C/BC", ' + 'or "Albrecht".') return V_rcc def get_intensities(self, omega, gamma=0.1): m2 = ResonantRaman.m2 alpha_rcc = self.get_matrix_element(omega, gamma) if not self.observation: # XXXX remove """Simple sum, maybe too simple""" return m2(alpha_rcc).sum(axis=1).sum(axis=1) # XXX enable when appropraiate # if self.observation['orientation'].lower() != 'random': # raise NotImplementedError('not yet') # random orientation of the molecular frame # Woodward & Long, # Guthmuller, J. J. Chem. Phys. 2016, 144 (6), 64106 m2 = ResonantRaman.m2 alpha2_r = m2(alpha_rcc[:, 0, 0] + alpha_rcc[:, 1, 1] + alpha_rcc[:, 2, 2]) / 9. delta2_r = 3 / 4. * ( m2(alpha_rcc[:, 0, 1] - alpha_rcc[:, 1, 0]) + m2(alpha_rcc[:, 0, 2] - alpha_rcc[:, 2, 0]) + m2(alpha_rcc[:, 1, 2] - alpha_rcc[:, 2, 1])) gamma2_r = (3 / 4. * (m2(alpha_rcc[:, 0, 1] + alpha_rcc[:, 1, 0]) + m2(alpha_rcc[:, 0, 2] + alpha_rcc[:, 2, 0]) + m2(alpha_rcc[:, 1, 2] + alpha_rcc[:, 2, 1])) + (m2(alpha_rcc[:, 0, 0] - alpha_rcc[:, 1, 1]) + m2(alpha_rcc[:, 0, 0] - alpha_rcc[:, 2, 2]) + m2(alpha_rcc[:, 1, 1] - alpha_rcc[:, 2, 2])) / 2) if self.observation['geometry'] == '-Z(XX)Z': # Porto's notation return (45 * alpha2_r + 5 * delta2_r + 4 * gamma2_r) / 45. elif self.observation['geometry'] == '-Z(XY)Z': # Porto's notation return gamma2_r / 15. elif self.observation['scattered'] == 'Z': # scattered light in direction of incoming light return (45 * alpha2_r + 5 * delta2_r + 7 * gamma2_r) / 45. elif self.observation['scattered'] == 'parallel': # scattered light perendicular and # polarization in plane return 6 * gamma2_r / 45. elif self.observation['scattered'] == 'perpendicular': # scattered light perendicular and # polarization out of plane return (45 * alpha2_r + 5 * delta2_r + 7 * gamma2_r) / 45. else: raise NotImplementedError def get_cross_sections(self, omega, gamma=0.1): I_r = self.get_intensities(omega, gamma) pre = 1. / 16 / np.pi**2 / units.eps0**2 / units.c**4 # frequency of scattered light omS_r = omega - self.hnu return pre * omega * omS_r**3 * I_r def get_spectrum(self, omega, gamma=0.1, start=200.0, end=4000.0, npts=None, width=4.0, type='Gaussian', method='standard', direction='central', intensity_unit='????', normalize=False): """Get resonant Raman spectrum. The method returns wavenumbers in cm^-1 with corresponding Raman cross section. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1. """ self.type = type.lower() assert self.type in ['gaussian', 'lorentzian'] if not npts: npts = int((end - start) / width * 10 + 1) frequencies = self.get_frequencies(method, direction).real intensities = self.get_cross_sections(omega, gamma) prefactor = 1 if type == 'lorentzian': intensities = intensities * width * np.pi / 2. if normalize: prefactor = 2. / width / np.pi else: sigma = width / 2. / np.sqrt(2. * np.log(2.)) if normalize: prefactor = 1. / sigma / np.sqrt(2 * np.pi) # Make array with spectrum data spectrum = np.empty(npts) energies = np.linspace(start, end, npts) for i, energy in enumerate(energies): energies[i] = energy if type == 'lorentzian': spectrum[i] = (intensities * 0.5 * width / np.pi / ((frequencies - energy)**2 + 0.25 * width**2)).sum() else: spectrum[i] = (intensities * np.exp(-(frequencies - energy)**2 / 2. / sigma**2)).sum() return [energies, prefactor * spectrum] def write_spectrum(self, omega, gamma, out='resonant-raman-spectra.dat', start=200, end=4000, npts=None, width=10, type='Gaussian', method='standard', direction='central'): """Write out spectrum to file. First column is the wavenumber in cm^-1, the second column the absolute infrared intensities, and the third column the absorbance scaled so that data runs from 1 to 0. Start and end point, and width of the Gaussian/Lorentzian should be given in cm^-1.""" energies, spectrum = self.get_spectrum(omega, gamma, start, end, npts, width, type, method, direction) # Write out spectrum in file. First column is absolute intensities. outdata = np.empty([len(energies), 3]) outdata.T[0] = energies outdata.T[1] = spectrum fd = open(out, 'w') fd.write('# Resonant Raman spectrum\n') fd.write('# omega={0:g} eV, gamma={1:g} eV\n'.format(omega, gamma)) fd.write('# %s folded, width=%g cm^-1\n' % (type.title(), width)) fd.write('# [cm^-1] [a.u.]\n') for row in outdata: fd.write('%.3f %15.5g\n' % (row[0], row[1])) fd.close() def summary(self, omega, gamma=0.1, method='standard', direction='central', log=sys.stdout): """Print summary for given omega [eV]""" hnu = self.get_energies(method, direction) s = 0.01 * units._e / units._c / units._hplanck intensities = self.get_intensities(omega, gamma) if isinstance(log, basestring): log = paropen(log, 'a') parprint('-------------------------------------', file=log) parprint(' excitation at ' + str(omega) + ' eV', file=log) parprint(' gamma ' + str(gamma) + ' eV', file=log) parprint(' approximation:', self.approximation, file=log) parprint(' observation:', self.observation, '\n', file=log) parprint(' Mode Frequency Intensity', file=log) parprint(' # meV cm^-1 [e^4A^4/eV^2]', file=log) parprint('-------------------------------------', file=log) for n, e in enumerate(hnu): if e.imag != 0: c = 'i' e = e.imag else: c = ' ' e = e.real parprint('%3d %6.1f%s %7.1f%s %9.3g' % (n, 1000 * e, c, s * e, c, intensities[n]), file=log) parprint('-------------------------------------', file=log) parprint('Zero-point energy: %.3f eV' % self.get_zero_point_energy(), file=log) def __del__(self): self.timer.write(self.txt) class LrResonantRaman(ResonantRaman): """Resonant Raman for linear response Quick and dirty approach to enable loading of LrTDDFT calculations """ def read_excitations(self): self.timer.start('read excitations') self.timer.start('really read') self.log('reading ' + self.exname + '.eq' + self.exext) ex0_object = self.exobj(self.exname + '.eq' + self.exext, **self.exkwargs) self.timer.stop('really read') self.timer.start('index') matching = frozenset(ex0_object.kss) self.timer.stop('index') def append(lst, exname, matching): self.timer.start('really read') self.log('reading ' + exname, end=' ') exo = self.exobj(exname, **self.exkwargs) lst.append(exo) self.timer.stop('really read') self.timer.start('index') matching = matching.intersection(exo.kss) self.log('len={0}, matching={1}'.format(len(exo.kss), len(matching)), pre='') self.timer.stop('index') return matching exm_object_list = [] exp_object_list = [] for a in self.indices: for i in 'xyz': name = '%s.%d%s' % (self.exname, a, i) matching = append(exm_object_list, name + '-' + self.exext, matching) matching = append(exp_object_list, name + '+' + self.exext, matching) self.ndof = 3 * len(self.indices) self.timer.stop('read excitations') self.timer.start('select') def select(exl, matching): exl.diagonalize(**self.exkwargs) mlst = [ex for ex in exl] # mlst = [ex for ex in exl if ex in matching] # assert(len(mlst) == len(matching)) return mlst ex0 = select(ex0_object, matching) self.nex = len(ex0) exm = [] exp = [] r = 0 for a in self.indices: for i in 'xyz': exm.append(select(exm_object_list[r], matching)) exp.append(select(exp_object_list[r], matching)) r += 1 self.timer.stop('select') self.timer.start('me and energy') eu = units.Hartree self.ex0E_p = np.array([ex.energy * eu for ex in ex0]) # self.exmE_p = np.array([ex.energy * eu for ex in exm]) # self.expE_p = np.array([ex.energy * eu for ex in exp]) self.ex0m_pc = np.array( [ex.get_dipole_me(form='v') for ex in ex0]) self.exF_rp = [] exmE_rp = [] expE_rp = [] exmm_rpc = [] expm_rpc = [] r = 0 for a in self.indices: for i in 'xyz': exmE_rp.append([em.energy for em in exm[r]]) expE_rp.append([ep.energy for ep in exp[r]]) self.exF_rp.append( [(ep.energy - em.energy) for ep, em in zip(exp[r], exm[r])]) exmm_rpc.append( [ex.get_dipole_me(form='v') for ex in exm[r]]) expm_rpc.append( [ex.get_dipole_me(form='v') for ex in exp[r]]) r += 1 self.exmE_rp = np.array(exmE_rp) * eu self.expE_rp = np.array(expE_rp) * eu self.exF_rp = np.array(self.exF_rp) * eu / 2 / self.delta self.exmm_rpc = np.array(exmm_rpc) self.expm_rpc = np.array(expm_rpc) self.timer.stop('me and energy') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/vibrations/vibrations.py000066400000000000000000000372701316323560300254620ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Vibrational modes.""" from __future__ import division import os import os.path as op import pickle import sys from math import sin, pi, sqrt, log import numpy as np import ase.units as units from ase.io.trajectory import Trajectory from ase.parallel import rank, paropen from ase.utils import opencew, pickleload, basestring class Vibrations: """Class for calculating vibrational modes using finite difference. The vibrational modes are calculated from a finite difference approximation of the Hessian matrix. The *summary()*, *get_energies()* and *get_frequencies()* methods all take an optional *method* keyword. Use method='Frederiksen' to use the method described in: T. Frederiksen, M. Paulsson, M. Brandbyge, A. P. Jauho: "Inelastic transport theory from first-principles: methodology and applications for nanoscale devices", Phys. Rev. B 75, 205413 (2007) atoms: Atoms object The atoms to work on. indices: list of int List of indices of atoms to vibrate. Default behavior is to vibrate all atoms. name: str Name to use for files. delta: float Magnitude of displacements. nfree: int Number of displacements per atom and cartesian coordinate, 2 and 4 are supported. Default is 2 which will displace each atom +delta and -delta for each cartesian coordinate. Example: >>> from ase import Atoms >>> from ase.calculators.emt import EMT >>> from ase.optimize import BFGS >>> from ase.vibrations import Vibrations >>> n2 = Atoms('N2', [(0, 0, 0), (0, 0, 1.1)], ... calculator=EMT()) >>> BFGS(n2).run(fmax=0.01) BFGS: 0 16:01:21 0.440339 3.2518 BFGS: 1 16:01:21 0.271928 0.8211 BFGS: 2 16:01:21 0.263278 0.1994 BFGS: 3 16:01:21 0.262777 0.0088 >>> vib = Vibrations(n2) >>> vib.run() Writing vib.eq.pckl Writing vib.0x-.pckl Writing vib.0x+.pckl Writing vib.0y-.pckl Writing vib.0y+.pckl Writing vib.0z-.pckl Writing vib.0z+.pckl Writing vib.1x-.pckl Writing vib.1x+.pckl Writing vib.1y-.pckl Writing vib.1y+.pckl Writing vib.1z-.pckl Writing vib.1z+.pckl >>> vib.summary() --------------------- # meV cm^-1 --------------------- 0 0.0 0.0 1 0.0 0.0 2 0.0 0.0 3 2.5 20.4 4 2.5 20.4 5 152.6 1230.8 --------------------- Zero-point energy: 0.079 eV >>> vib.write_mode(-1) # write last mode to trajectory file """ def __init__(self, atoms, indices=None, name='vib', delta=0.01, nfree=2): assert nfree in [2, 4] self.atoms = atoms if indices is None: indices = range(len(atoms)) self.indices = np.asarray(indices) self.name = name self.delta = delta self.nfree = nfree self.H = None self.ir = None self.ram = None def run(self): """Run the vibration calculations. This will calculate the forces for 6 displacements per atom +/-x, +/-y, +/-z. Only those calculations that are not already done will be started. Be aware that an interrupted calculation may produce an empty file (ending with .pckl), which must be deleted before restarting the job. Otherwise the forces will not be calculated for that displacement. Note that the calculations for the different displacements can be done simultaneously by several independent processes. This feature relies on the existence of files and the subsequent creation of the file in case it is not found. """ filename = self.name + '.eq.pckl' fd = opencew(filename) if fd is not None: self.calculate(filename, fd) p = self.atoms.positions.copy() for filename, a, i, disp in self.displacements(): fd = opencew(filename) if fd is not None: self.atoms.positions[a, i] = p[a, i] + disp self.calculate(filename, fd) self.atoms.positions[a, i] = p[a, i] def displacements(self): for a in self.indices: for i in range(3): for sign in [-1, 1]: for ndis in range(1, self.nfree // 2 + 1): filename = ('%s.%d%s%s.pckl' % (self.name, a, 'xyz'[i], ndis * ' +-'[sign])) disp = ndis * sign * self.delta yield filename, a, i, disp def calculate(self, filename, fd): forces = self.atoms.get_forces() if self.ir: dipole = self.calc.get_dipole_moment(self.atoms) if self.ram: freq, pol = self.get_polarizability() if rank == 0: if self.ir and self.ram: pickle.dump([forces, dipole, freq, pol], fd, protocol=2) sys.stdout.write( 'Writing %s, dipole moment = (%.6f %.6f %.6f)\n' % (filename, dipole[0], dipole[1], dipole[2])) elif self.ir and not self.ram: pickle.dump([forces, dipole], fd, protocol=2) sys.stdout.write( 'Writing %s, dipole moment = (%.6f %.6f %.6f)\n' % (filename, dipole[0], dipole[1], dipole[2])) else: pickle.dump(forces, fd, protocol=2) sys.stdout.write('Writing %s\n' % filename) fd.close() sys.stdout.flush() def clean(self, empty_files=False): """Remove pickle-files. Use empty_files=True to remove only empty files.""" if rank != 0: return 0 n = 0 filenames = [self.name + '.eq.pckl'] for filename, a, i, disp in self.displacements(): filenames.append(filename) for name in filenames: if op.isfile(name): if not empty_files or op.getsize(name) == 0: os.remove(name) n += 1 return n def read(self, method='standard', direction='central'): self.method = method.lower() self.direction = direction.lower() assert self.method in ['standard', 'frederiksen'] assert self.direction in ['central', 'forward', 'backward'] def load(fname): with open(fname, 'rb') as fl: f = pickleload(fl) if not hasattr(f, 'shape'): # output from InfraRed return f[0] return f n = 3 * len(self.indices) H = np.empty((n, n)) r = 0 if direction != 'central': feq = load(self.name + '.eq.pckl') for a in self.indices: for i in 'xyz': name = '%s.%d%s' % (self.name, a, i) fminus = load(name + '-.pckl') fplus = load(name + '+.pckl') if self.method == 'frederiksen': fminus[a] -= fminus.sum(0) fplus[a] -= fplus.sum(0) if self.nfree == 4: fminusminus = load(name + '--.pckl') fplusplus = load(name + '++.pckl') if self.method == 'frederiksen': fminusminus[a] -= fminusminus.sum(0) fplusplus[a] -= fplusplus.sum(0) if self.direction == 'central': if self.nfree == 2: H[r] = .5 * (fminus - fplus)[self.indices].ravel() else: H[r] = H[r] = (-fminusminus + 8 * fminus - 8 * fplus + fplusplus)[self.indices].ravel() / 12.0 elif self.direction == 'forward': H[r] = (feq - fplus)[self.indices].ravel() else: assert self.direction == 'backward' H[r] = (fminus - feq)[self.indices].ravel() H[r] /= 2 * self.delta r += 1 H += H.copy().T self.H = H m = self.atoms.get_masses() if 0 in [m[index] for index in self.indices]: raise RuntimeError('Zero mass encountered in one or more of ' 'the vibrated atoms. Use Atoms.set_masses()' ' to set all masses to non-zero values.') self.im = np.repeat(m[self.indices]**-0.5, 3) omega2, modes = np.linalg.eigh(self.im[:, None] * H * self.im) self.modes = modes.T.copy() # Conversion factor: s = units._hbar * 1e10 / sqrt(units._e * units._amu) self.hnu = s * omega2.astype(complex)**0.5 def get_energies(self, method='standard', direction='central'): """Get vibration energies in eV.""" if (self.H is None or method.lower() != self.method or direction.lower() != self.direction): self.read(method, direction) return self.hnu def get_frequencies(self, method='standard', direction='central'): """Get vibration frequencies in cm^-1.""" s = 1. / units.invcm return s * self.get_energies(method, direction) def summary(self, method='standard', direction='central', freq=None, log=sys.stdout): """Print a summary of the vibrational frequencies. Parameters: method : string Can be 'standard'(default) or 'Frederiksen'. direction: string Direction for finite differences. Can be one of 'central' (default), 'forward', 'backward'. freq : numpy array Optional. Can be used to create a summary on a set of known frequencies. log : if specified, write output to a different location than stdout. Can be an object with a write() method or the name of a file to create. """ if isinstance(log, basestring): log = paropen(log, 'a') write = log.write s = 0.01 * units._e / units._c / units._hplanck if freq is not None: hnu = freq / s else: hnu = self.get_energies(method, direction) write('---------------------\n') write(' # meV cm^-1\n') write('---------------------\n') for n, e in enumerate(hnu): if e.imag != 0: c = 'i' e = e.imag else: c = ' ' e = e.real write('%3d %6.1f%s %7.1f%s\n' % (n, 1000 * e, c, s * e, c)) write('---------------------\n') write('Zero-point energy: %.3f eV\n' % self.get_zero_point_energy(freq=freq)) def get_zero_point_energy(self, freq=None): if freq is None: return 0.5 * self.hnu.real.sum() else: s = 0.01 * units._e / units._c / units._hplanck return 0.5 * freq.real.sum() / s def get_mode(self, n): """Get mode number .""" mode = np.zeros((len(self.atoms), 3)) mode[self.indices] = (self.modes[n] * self.im).reshape((-1, 3)) return mode def write_mode(self, n=None, kT=units.kB * 300, nimages=30): """Write mode number n to trajectory file. If n is not specified, writes all non-zero modes.""" if n is None: for index, energy in enumerate(self.get_energies()): if abs(energy) > 1e-5: self.write_mode(n=index, kT=kT, nimages=nimages) return mode = self.get_mode(n) * sqrt(kT / abs(self.hnu[n])) p = self.atoms.positions.copy() n %= 3 * len(self.indices) traj = Trajectory('%s.%d.traj' % (self.name, n), 'w') calc = self.atoms.get_calculator() self.atoms.set_calculator() for x in np.linspace(0, 2 * pi, nimages, endpoint=False): self.atoms.set_positions(p + sin(x) * mode) traj.write(self.atoms) self.atoms.set_positions(p) self.atoms.set_calculator(calc) traj.close() def write_jmol(self): """Writes file for viewing of the modes with jmol.""" fd = open(self.name + '.xyz', 'w') symbols = self.atoms.get_chemical_symbols() f = self.get_frequencies() for n in range(3 * len(self.indices)): fd.write('%6d\n' % len(self.atoms)) if f[n].imag != 0: c = 'i' f[n] = f[n].imag else: c = ' ' fd.write('Mode #%d, f = %.1f%s cm^-1' % (n, f[n], c)) if self.ir: fd.write(', I = %.4f (D/Ã…)^2 amu^-1.\n' % self.intensities[n]) else: fd.write('.\n') mode = self.get_mode(n) for i, pos in enumerate(self.atoms.positions): fd.write('%2s %12.5f %12.5f %12.5f %12.5f %12.5f %12.5f \n' % (symbols[i], pos[0], pos[1], pos[2], mode[i, 0], mode[i, 1], mode[i, 2])) fd.close() def fold(self, frequencies, intensities, start=800.0, end=4000.0, npts=None, width=4.0, type='Gaussian', normalize=False): """Fold frequencies and intensities within the given range and folding method (Gaussian/Lorentzian). The energy unit is cm^-1. normalize=True ensures the integral over the peaks to give the intensity. """ lctype = type.lower() assert lctype in ['gaussian', 'lorentzian'] if not npts: npts = int((end - start) / width * 10 + 1) prefactor = 1 if lctype == 'lorentzian': intensities = intensities * width * pi / 2. if normalize: prefactor = 2. / width / pi else: sigma = width / 2. / sqrt(2. * log(2.)) if normalize: prefactor = 1. / sigma / sqrt(2 * pi) # Make array with spectrum data spectrum = np.empty(npts) energies = np.linspace(start, end, npts) for i, energy in enumerate(energies): energies[i] = energy if lctype == 'lorentzian': spectrum[i] = (intensities * 0.5 * width / pi / ((frequencies - energy)**2 + 0.25 * width**2)).sum() else: spectrum[i] = (intensities * np.exp(-(frequencies - energy)**2 / 2. / sigma**2)).sum() return [energies, prefactor * spectrum] def write_dos(self, out='vib-dos.dat', start=800, end=4000, npts=None, width=10, type='Gaussian', method='standard', direction='central'): """Write out the vibrational density of states to file. First column is the wavenumber in cm^-1, the second column the folded vibrational density of states. Start and end points, and width of the Gaussian/Lorentzian should be given in cm^-1.""" frequencies = self.get_frequencies(method, direction).real intensities = np.ones(len(frequencies)) energies, spectrum = self.fold(frequencies, intensities, start, end, npts, width, type) # Write out spectrum in file. outdata = np.empty([len(energies), 2]) outdata.T[0] = energies outdata.T[1] = spectrum fd = open(out, 'w') fd.write('# %s folded, width=%g cm^-1\n' % (type.title(), width)) fd.write('# [cm^-1] arbitrary\n') for row in outdata: fd.write('%.3f %15.5e\n' % (row[0], row[1])) fd.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/000077500000000000000000000000001316323560300225525ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/__init__.py000066400000000000000000000056021316323560300246660ustar00rootroot00000000000000import os import subprocess import sys import tempfile from ase.io import write import ase.parallel as parallel def view(atoms, data=None, viewer='ase', repeat=None, block=False): # Ignore for parallel calculations: if parallel.size != 1: return vwr = viewer.lower() if vwr == 'ase': format = 'traj' command = sys.executable + ' -m ase gui' if repeat is not None: command += ' --repeat={},{},{}'.format(*repeat) repeat = None elif vwr == 'vmd': format = 'cube' command = 'vmd' elif vwr == 'rasmol': format = 'proteindatabank' command = 'rasmol -pdb' elif vwr == 'xmakemol': format = 'xyz' command = 'xmakemol -f' elif vwr == 'gopenmol': format = 'xyz' command = 'rungOpenMol' elif vwr == 'avogadro': format = 'cube' command = 'avogadro' elif vwr == 'sage': from ase.visualize.sage import view_sage_jmol view_sage_jmol(atoms) return elif vwr in ('ngl', 'nglview'): from ase.visualize.nglview import view_ngl return view_ngl(atoms) elif vwr == 'x3d': from ase.visualize.x3d import view_x3d return view_x3d(atoms) elif vwr == 'paraview': # macro for showing atoms in paraview macro = """\ from paraview.simple import * version_major = servermanager.vtkSMProxyManager.GetVersionMajor() source = GetActiveSource() renderView1 = GetRenderView() atoms = Glyph(Input=source, GlyphType='Sphere', # GlyphMode='All Points', Scalars='radii', ScaleMode='scalar', ) RenameSource('Atoms', atoms) atomsDisplay = Show(atoms, renderView1) if version_major <= 4: atoms.SetScaleFactor = 0.8 atomicnumbers_PVLookupTable = GetLookupTableForArray( "atomic numbers", 1) atomsDisplay.ColorArrayName = ('POINT_DATA', 'atomic numbers') atomsDisplay.LookupTable = atomicnumbers_PVLookupTable else: atoms.ScaleFactor = 0.8 ColorBy(atomsDisplay, 'atomic numbers') atomsDisplay.SetScalarBarVisibility(renderView1, True) Render() """ script_name = os.path.join(tempfile.gettempdir(), 'draw_atoms.py') with open(script_name, 'w') as f: f.write(macro) format = 'vtu' command = 'paraview --script=' + script_name else: raise RuntimeError('Unknown viewer: ' + viewer) fd, filename = tempfile.mkstemp('.' + format, 'ase-') if repeat is not None: atoms = atoms.repeat() if data is None: write(filename, atoms, format=format) else: write(filename, atoms, format=format, data=data) if block: subprocess.call(command.split() + [filename]) os.remove(filename) else: subprocess.Popen(command.split() + [filename]) subprocess.Popen(['sleep 60; rm {0}'.format(filename)], shell=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/colortable.py000066400000000000000000001152241316323560300252570ustar00rootroot00000000000000"""Defines a table with X11 colors. The key to the dictionary is a string with an X11 name for the color, the value is either a number (a grayscale value) between 0.0 and 1.0, or an array of three numbers (RGB values). The table was generated by the _MakeColorTable function (defined in this module). """ from numpy import array from ase.utils import basestring color_table = { 'snow': array([1.0000, 0.9804, 0.9804]), 'ghost white': array([0.9725, 0.9725, 1.0000]), 'GhostWhite': array([0.9725, 0.9725, 1.0000]), 'white smoke': 0.9608, 'WhiteSmoke': 0.9608, 'gainsboro': 0.8627, 'floral white': array([1.0000, 0.9804, 0.9412]), 'FloralWhite': array([1.0000, 0.9804, 0.9412]), 'old lace': array([0.9922, 0.9608, 0.9020]), 'OldLace': array([0.9922, 0.9608, 0.9020]), 'linen': array([0.9804, 0.9412, 0.9020]), 'antique white': array([0.9804, 0.9216, 0.8431]), 'AntiqueWhite': array([0.9804, 0.9216, 0.8431]), 'papaya whip': array([1.0000, 0.9373, 0.8353]), 'PapayaWhip': array([1.0000, 0.9373, 0.8353]), 'blanched almond': array([1.0000, 0.9216, 0.8039]), 'BlanchedAlmond': array([1.0000, 0.9216, 0.8039]), 'bisque': array([1.0000, 0.8941, 0.7686]), 'peach puff': array([1.0000, 0.8549, 0.7255]), 'PeachPuff': array([1.0000, 0.8549, 0.7255]), 'navajo white': array([1.0000, 0.8706, 0.6784]), 'NavajoWhite': array([1.0000, 0.8706, 0.6784]), 'moccasin': array([1.0000, 0.8941, 0.7098]), 'cornsilk': array([1.0000, 0.9725, 0.8627]), 'ivory': array([1.0000, 1.0000, 0.9412]), 'lemon chiffon': array([1.0000, 0.9804, 0.8039]), 'LemonChiffon': array([1.0000, 0.9804, 0.8039]), 'seashell': array([1.0000, 0.9608, 0.9333]), 'honeydew': array([0.9412, 1.0000, 0.9412]), 'mint cream': array([0.9608, 1.0000, 0.9804]), 'MintCream': array([0.9608, 1.0000, 0.9804]), 'azure': array([0.9412, 1.0000, 1.0000]), 'alice blue': array([0.9412, 0.9725, 1.0000]), 'AliceBlue': array([0.9412, 0.9725, 1.0000]), 'lavender': array([0.9020, 0.9020, 0.9804]), 'lavender blush': array([1.0000, 0.9412, 0.9608]), 'LavenderBlush': array([1.0000, 0.9412, 0.9608]), 'misty rose': array([1.0000, 0.8941, 0.8824]), 'MistyRose': array([1.0000, 0.8941, 0.8824]), 'white': 1.0000, 'black': 0.0000, 'dark slate gray': array([0.1843, 0.3098, 0.3098]), 'DarkSlateGray': array([0.1843, 0.3098, 0.3098]), 'dark slate grey': array([0.1843, 0.3098, 0.3098]), 'DarkSlateGrey': array([0.1843, 0.3098, 0.3098]), 'dim gray': 0.4118, 'DimGray': 0.4118, 'dim grey': 0.4118, 'DimGrey': 0.4118, 'slate gray': array([0.4392, 0.5020, 0.5647]), 'SlateGray': array([0.4392, 0.5020, 0.5647]), 'slate grey': array([0.4392, 0.5020, 0.5647]), 'SlateGrey': array([0.4392, 0.5020, 0.5647]), 'light slate gray': array([0.4667, 0.5333, 0.6000]), 'LightSlateGray': array([0.4667, 0.5333, 0.6000]), 'light slate grey': array([0.4667, 0.5333, 0.6000]), 'LightSlateGrey': array([0.4667, 0.5333, 0.6000]), 'gray': 0.7451, 'grey': 0.7451, 'light grey': 0.8275, 'LightGrey': 0.8275, 'light gray': 0.8275, 'LightGray': 0.8275, 'midnight blue': array([0.0980, 0.0980, 0.4392]), 'MidnightBlue': array([0.0980, 0.0980, 0.4392]), 'navy': array([0.0000, 0.0000, 0.5020]), 'navy blue': array([0.0000, 0.0000, 0.5020]), 'NavyBlue': array([0.0000, 0.0000, 0.5020]), 'cornflower blue': array([0.3922, 0.5843, 0.9294]), 'CornflowerBlue': array([0.3922, 0.5843, 0.9294]), 'dark slate blue': array([0.2824, 0.2392, 0.5451]), 'DarkSlateBlue': array([0.2824, 0.2392, 0.5451]), 'slate blue': array([0.4157, 0.3529, 0.8039]), 'SlateBlue': array([0.4157, 0.3529, 0.8039]), 'medium slate blue': array([0.4824, 0.4078, 0.9333]), 'MediumSlateBlue': array([0.4824, 0.4078, 0.9333]), 'light slate blue': array([0.5176, 0.4392, 1.0000]), 'LightSlateBlue': array([0.5176, 0.4392, 1.0000]), 'medium blue': array([0.0000, 0.0000, 0.8039]), 'MediumBlue': array([0.0000, 0.0000, 0.8039]), 'royal blue': array([0.2549, 0.4118, 0.8824]), 'RoyalBlue': array([0.2549, 0.4118, 0.8824]), 'blue': array([0.0000, 0.0000, 1.0000]), 'dodger blue': array([0.1176, 0.5647, 1.0000]), 'DodgerBlue': array([0.1176, 0.5647, 1.0000]), 'deep sky blue': array([0.0000, 0.7490, 1.0000]), 'DeepSkyBlue': array([0.0000, 0.7490, 1.0000]), 'sky blue': array([0.5294, 0.8078, 0.9216]), 'SkyBlue': array([0.5294, 0.8078, 0.9216]), 'light sky blue': array([0.5294, 0.8078, 0.9804]), 'LightSkyBlue': array([0.5294, 0.8078, 0.9804]), 'steel blue': array([0.2745, 0.5098, 0.7059]), 'SteelBlue': array([0.2745, 0.5098, 0.7059]), 'light steel blue': array([0.6902, 0.7686, 0.8706]), 'LightSteelBlue': array([0.6902, 0.7686, 0.8706]), 'light blue': array([0.6784, 0.8471, 0.9020]), 'LightBlue': array([0.6784, 0.8471, 0.9020]), 'powder blue': array([0.6902, 0.8784, 0.9020]), 'PowderBlue': array([0.6902, 0.8784, 0.9020]), 'pale turquoise': array([0.6863, 0.9333, 0.9333]), 'PaleTurquoise': array([0.6863, 0.9333, 0.9333]), 'dark turquoise': array([0.0000, 0.8078, 0.8196]), 'DarkTurquoise': array([0.0000, 0.8078, 0.8196]), 'medium turquoise': array([0.2824, 0.8196, 0.8000]), 'MediumTurquoise': array([0.2824, 0.8196, 0.8000]), 'turquoise': array([0.2510, 0.8784, 0.8157]), 'cyan': array([0.0000, 1.0000, 1.0000]), 'light cyan': array([0.8784, 1.0000, 1.0000]), 'LightCyan': array([0.8784, 1.0000, 1.0000]), 'cadet blue': array([0.3725, 0.6196, 0.6275]), 'CadetBlue': array([0.3725, 0.6196, 0.6275]), 'medium aquamarine': array([0.4000, 0.8039, 0.6667]), 'MediumAquamarine': array([0.4000, 0.8039, 0.6667]), 'aquamarine': array([0.4980, 1.0000, 0.8314]), 'dark green': array([0.0000, 0.3922, 0.0000]), 'DarkGreen': array([0.0000, 0.3922, 0.0000]), 'dark olive green': array([0.3333, 0.4196, 0.1843]), 'DarkOliveGreen': array([0.3333, 0.4196, 0.1843]), 'dark sea green': array([0.5608, 0.7373, 0.5608]), 'DarkSeaGreen': array([0.5608, 0.7373, 0.5608]), 'sea green': array([0.1804, 0.5451, 0.3412]), 'SeaGreen': array([0.1804, 0.5451, 0.3412]), 'medium sea green': array([0.2353, 0.7020, 0.4431]), 'MediumSeaGreen': array([0.2353, 0.7020, 0.4431]), 'light sea green': array([0.1255, 0.6980, 0.6667]), 'LightSeaGreen': array([0.1255, 0.6980, 0.6667]), 'pale green': array([0.5961, 0.9843, 0.5961]), 'PaleGreen': array([0.5961, 0.9843, 0.5961]), 'spring green': array([0.0000, 1.0000, 0.4980]), 'SpringGreen': array([0.0000, 1.0000, 0.4980]), 'lawn green': array([0.4863, 0.9882, 0.0000]), 'LawnGreen': array([0.4863, 0.9882, 0.0000]), 'green': array([0.0000, 1.0000, 0.0000]), 'chartreuse': array([0.4980, 1.0000, 0.0000]), 'medium spring green': array([0.0000, 0.9804, 0.6039]), 'MediumSpringGreen': array([0.0000, 0.9804, 0.6039]), 'green yellow': array([0.6784, 1.0000, 0.1843]), 'GreenYellow': array([0.6784, 1.0000, 0.1843]), 'lime green': array([0.1961, 0.8039, 0.1961]), 'LimeGreen': array([0.1961, 0.8039, 0.1961]), 'yellow green': array([0.6039, 0.8039, 0.1961]), 'YellowGreen': array([0.6039, 0.8039, 0.1961]), 'forest green': array([0.1333, 0.5451, 0.1333]), 'ForestGreen': array([0.1333, 0.5451, 0.1333]), 'olive drab': array([0.4196, 0.5569, 0.1373]), 'OliveDrab': array([0.4196, 0.5569, 0.1373]), 'dark khaki': array([0.7412, 0.7176, 0.4196]), 'DarkKhaki': array([0.7412, 0.7176, 0.4196]), 'khaki': array([0.9412, 0.9020, 0.5490]), 'pale goldenrod': array([0.9333, 0.9098, 0.6667]), 'PaleGoldenrod': array([0.9333, 0.9098, 0.6667]), 'light goldenrod yellow': array([0.9804, 0.9804, 0.8235]), 'LightGoldenrodYellow': array([0.9804, 0.9804, 0.8235]), 'light yellow': array([1.0000, 1.0000, 0.8784]), 'LightYellow': array([1.0000, 1.0000, 0.8784]), 'yellow': array([1.0000, 1.0000, 0.0000]), 'gold': array([1.0000, 0.8431, 0.0000]), 'light goldenrod': array([0.9333, 0.8667, 0.5098]), 'LightGoldenrod': array([0.9333, 0.8667, 0.5098]), 'goldenrod': array([0.8549, 0.6471, 0.1255]), 'dark goldenrod': array([0.7216, 0.5255, 0.0431]), 'DarkGoldenrod': array([0.7216, 0.5255, 0.0431]), 'rosy brown': array([0.7373, 0.5608, 0.5608]), 'RosyBrown': array([0.7373, 0.5608, 0.5608]), 'indian red': array([0.8039, 0.3608, 0.3608]), 'IndianRed': array([0.8039, 0.3608, 0.3608]), 'saddle brown': array([0.5451, 0.2706, 0.0745]), 'SaddleBrown': array([0.5451, 0.2706, 0.0745]), 'sienna': array([0.6275, 0.3216, 0.1765]), 'peru': array([0.8039, 0.5216, 0.2471]), 'burlywood': array([0.8706, 0.7216, 0.5294]), 'beige': array([0.9608, 0.9608, 0.8627]), 'wheat': array([0.9608, 0.8706, 0.7020]), 'sandy brown': array([0.9569, 0.6431, 0.3765]), 'SandyBrown': array([0.9569, 0.6431, 0.3765]), 'tan': array([0.8235, 0.7059, 0.5490]), 'chocolate': array([0.8235, 0.4118, 0.1176]), 'firebrick': array([0.6980, 0.1333, 0.1333]), 'brown': array([0.6471, 0.1647, 0.1647]), 'dark salmon': array([0.9137, 0.5882, 0.4784]), 'DarkSalmon': array([0.9137, 0.5882, 0.4784]), 'salmon': array([0.9804, 0.5020, 0.4471]), 'light salmon': array([1.0000, 0.6275, 0.4784]), 'LightSalmon': array([1.0000, 0.6275, 0.4784]), 'orange': array([1.0000, 0.6471, 0.0000]), 'dark orange': array([1.0000, 0.5490, 0.0000]), 'DarkOrange': array([1.0000, 0.5490, 0.0000]), 'coral': array([1.0000, 0.4980, 0.3137]), 'light coral': array([0.9412, 0.5020, 0.5020]), 'LightCoral': array([0.9412, 0.5020, 0.5020]), 'tomato': array([1.0000, 0.3882, 0.2784]), 'orange red': array([1.0000, 0.2706, 0.0000]), 'OrangeRed': array([1.0000, 0.2706, 0.0000]), 'red': array([1.0000, 0.0000, 0.0000]), 'hot pink': array([1.0000, 0.4118, 0.7059]), 'HotPink': array([1.0000, 0.4118, 0.7059]), 'deep pink': array([1.0000, 0.0784, 0.5765]), 'DeepPink': array([1.0000, 0.0784, 0.5765]), 'pink': array([1.0000, 0.7529, 0.7961]), 'light pink': array([1.0000, 0.7137, 0.7569]), 'LightPink': array([1.0000, 0.7137, 0.7569]), 'pale violet red': array([0.8588, 0.4392, 0.5765]), 'PaleVioletRed': array([0.8588, 0.4392, 0.5765]), 'maroon': array([0.6902, 0.1882, 0.3765]), 'medium violet red': array([0.7804, 0.0824, 0.5216]), 'MediumVioletRed': array([0.7804, 0.0824, 0.5216]), 'violet red': array([0.8157, 0.1255, 0.5647]), 'VioletRed': array([0.8157, 0.1255, 0.5647]), 'magenta': array([1.0000, 0.0000, 1.0000]), 'violet': array([0.9333, 0.5098, 0.9333]), 'plum': array([0.8667, 0.6275, 0.8667]), 'orchid': array([0.8549, 0.4392, 0.8392]), 'medium orchid': array([0.7294, 0.3333, 0.8275]), 'MediumOrchid': array([0.7294, 0.3333, 0.8275]), 'dark orchid': array([0.6000, 0.1961, 0.8000]), 'DarkOrchid': array([0.6000, 0.1961, 0.8000]), 'dark violet': array([0.5804, 0.0000, 0.8275]), 'DarkViolet': array([0.5804, 0.0000, 0.8275]), 'blue violet': array([0.5412, 0.1686, 0.8863]), 'BlueViolet': array([0.5412, 0.1686, 0.8863]), 'purple': array([0.6275, 0.1255, 0.9412]), 'medium purple': array([0.5765, 0.4392, 0.8588]), 'MediumPurple': array([0.5765, 0.4392, 0.8588]), 'thistle': array([0.8471, 0.7490, 0.8471]), 'snow1': array([1.0000, 0.9804, 0.9804]), 'snow2': array([0.9333, 0.9137, 0.9137]), 'snow3': array([0.8039, 0.7882, 0.7882]), 'snow4': array([0.5451, 0.5373, 0.5373]), 'seashell1': array([1.0000, 0.9608, 0.9333]), 'seashell2': array([0.9333, 0.8980, 0.8706]), 'seashell3': array([0.8039, 0.7725, 0.7490]), 'seashell4': array([0.5451, 0.5255, 0.5098]), 'AntiqueWhite1': array([1.0000, 0.9373, 0.8588]), 'AntiqueWhite2': array([0.9333, 0.8745, 0.8000]), 'AntiqueWhite3': array([0.8039, 0.7529, 0.6902]), 'AntiqueWhite4': array([0.5451, 0.5137, 0.4706]), 'bisque1': array([1.0000, 0.8941, 0.7686]), 'bisque2': array([0.9333, 0.8353, 0.7176]), 'bisque3': array([0.8039, 0.7176, 0.6196]), 'bisque4': array([0.5451, 0.4902, 0.4196]), 'PeachPuff1': array([1.0000, 0.8549, 0.7255]), 'PeachPuff2': array([0.9333, 0.7961, 0.6784]), 'PeachPuff3': array([0.8039, 0.6863, 0.5843]), 'PeachPuff4': array([0.5451, 0.4667, 0.3961]), 'NavajoWhite1': array([1.0000, 0.8706, 0.6784]), 'NavajoWhite2': array([0.9333, 0.8118, 0.6314]), 'NavajoWhite3': array([0.8039, 0.7020, 0.5451]), 'NavajoWhite4': array([0.5451, 0.4745, 0.3686]), 'LemonChiffon1': array([1.0000, 0.9804, 0.8039]), 'LemonChiffon2': array([0.9333, 0.9137, 0.7490]), 'LemonChiffon3': array([0.8039, 0.7882, 0.6471]), 'LemonChiffon4': array([0.5451, 0.5373, 0.4392]), 'cornsilk1': array([1.0000, 0.9725, 0.8627]), 'cornsilk2': array([0.9333, 0.9098, 0.8039]), 'cornsilk3': array([0.8039, 0.7843, 0.6941]), 'cornsilk4': array([0.5451, 0.5333, 0.4706]), 'ivory1': array([1.0000, 1.0000, 0.9412]), 'ivory2': array([0.9333, 0.9333, 0.8784]), 'ivory3': array([0.8039, 0.8039, 0.7569]), 'ivory4': array([0.5451, 0.5451, 0.5137]), 'honeydew1': array([0.9412, 1.0000, 0.9412]), 'honeydew2': array([0.8784, 0.9333, 0.8784]), 'honeydew3': array([0.7569, 0.8039, 0.7569]), 'honeydew4': array([0.5137, 0.5451, 0.5137]), 'LavenderBlush1': array([1.0000, 0.9412, 0.9608]), 'LavenderBlush2': array([0.9333, 0.8784, 0.8980]), 'LavenderBlush3': array([0.8039, 0.7569, 0.7725]), 'LavenderBlush4': array([0.5451, 0.5137, 0.5255]), 'MistyRose1': array([1.0000, 0.8941, 0.8824]), 'MistyRose2': array([0.9333, 0.8353, 0.8235]), 'MistyRose3': array([0.8039, 0.7176, 0.7098]), 'MistyRose4': array([0.5451, 0.4902, 0.4824]), 'azure1': array([0.9412, 1.0000, 1.0000]), 'azure2': array([0.8784, 0.9333, 0.9333]), 'azure3': array([0.7569, 0.8039, 0.8039]), 'azure4': array([0.5137, 0.5451, 0.5451]), 'SlateBlue1': array([0.5137, 0.4353, 1.0000]), 'SlateBlue2': array([0.4784, 0.4039, 0.9333]), 'SlateBlue3': array([0.4118, 0.3490, 0.8039]), 'SlateBlue4': array([0.2784, 0.2353, 0.5451]), 'RoyalBlue1': array([0.2824, 0.4627, 1.0000]), 'RoyalBlue2': array([0.2627, 0.4314, 0.9333]), 'RoyalBlue3': array([0.2275, 0.3725, 0.8039]), 'RoyalBlue4': array([0.1529, 0.2510, 0.5451]), 'blue1': array([0.0000, 0.0000, 1.0000]), 'blue2': array([0.0000, 0.0000, 0.9333]), 'blue3': array([0.0000, 0.0000, 0.8039]), 'blue4': array([0.0000, 0.0000, 0.5451]), 'DodgerBlue1': array([0.1176, 0.5647, 1.0000]), 'DodgerBlue2': array([0.1098, 0.5255, 0.9333]), 'DodgerBlue3': array([0.0941, 0.4549, 0.8039]), 'DodgerBlue4': array([0.0627, 0.3059, 0.5451]), 'SteelBlue1': array([0.3882, 0.7216, 1.0000]), 'SteelBlue2': array([0.3608, 0.6745, 0.9333]), 'SteelBlue3': array([0.3098, 0.5804, 0.8039]), 'SteelBlue4': array([0.2118, 0.3922, 0.5451]), 'DeepSkyBlue1': array([0.0000, 0.7490, 1.0000]), 'DeepSkyBlue2': array([0.0000, 0.6980, 0.9333]), 'DeepSkyBlue3': array([0.0000, 0.6039, 0.8039]), 'DeepSkyBlue4': array([0.0000, 0.4078, 0.5451]), 'SkyBlue1': array([0.5294, 0.8078, 1.0000]), 'SkyBlue2': array([0.4941, 0.7529, 0.9333]), 'SkyBlue3': array([0.4235, 0.6510, 0.8039]), 'SkyBlue4': array([0.2902, 0.4392, 0.5451]), 'LightSkyBlue1': array([0.6902, 0.8863, 1.0000]), 'LightSkyBlue2': array([0.6431, 0.8275, 0.9333]), 'LightSkyBlue3': array([0.5529, 0.7137, 0.8039]), 'LightSkyBlue4': array([0.3765, 0.4824, 0.5451]), 'SlateGray1': array([0.7765, 0.8863, 1.0000]), 'SlateGray2': array([0.7255, 0.8275, 0.9333]), 'SlateGray3': array([0.6235, 0.7137, 0.8039]), 'SlateGray4': array([0.4235, 0.4824, 0.5451]), 'LightSteelBlue1': array([0.7922, 0.8824, 1.0000]), 'LightSteelBlue2': array([0.7373, 0.8235, 0.9333]), 'LightSteelBlue3': array([0.6353, 0.7098, 0.8039]), 'LightSteelBlue4': array([0.4314, 0.4824, 0.5451]), 'LightBlue1': array([0.7490, 0.9373, 1.0000]), 'LightBlue2': array([0.6980, 0.8745, 0.9333]), 'LightBlue3': array([0.6039, 0.7529, 0.8039]), 'LightBlue4': array([0.4078, 0.5137, 0.5451]), 'LightCyan1': array([0.8784, 1.0000, 1.0000]), 'LightCyan2': array([0.8196, 0.9333, 0.9333]), 'LightCyan3': array([0.7059, 0.8039, 0.8039]), 'LightCyan4': array([0.4784, 0.5451, 0.5451]), 'PaleTurquoise1': array([0.7333, 1.0000, 1.0000]), 'PaleTurquoise2': array([0.6824, 0.9333, 0.9333]), 'PaleTurquoise3': array([0.5882, 0.8039, 0.8039]), 'PaleTurquoise4': array([0.4000, 0.5451, 0.5451]), 'CadetBlue1': array([0.5961, 0.9608, 1.0000]), 'CadetBlue2': array([0.5569, 0.8980, 0.9333]), 'CadetBlue3': array([0.4784, 0.7725, 0.8039]), 'CadetBlue4': array([0.3255, 0.5255, 0.5451]), 'turquoise1': array([0.0000, 0.9608, 1.0000]), 'turquoise2': array([0.0000, 0.8980, 0.9333]), 'turquoise3': array([0.0000, 0.7725, 0.8039]), 'turquoise4': array([0.0000, 0.5255, 0.5451]), 'cyan1': array([0.0000, 1.0000, 1.0000]), 'cyan2': array([0.0000, 0.9333, 0.9333]), 'cyan3': array([0.0000, 0.8039, 0.8039]), 'cyan4': array([0.0000, 0.5451, 0.5451]), 'DarkSlateGray1': array([0.5922, 1.0000, 1.0000]), 'DarkSlateGray2': array([0.5529, 0.9333, 0.9333]), 'DarkSlateGray3': array([0.4745, 0.8039, 0.8039]), 'DarkSlateGray4': array([0.3216, 0.5451, 0.5451]), 'aquamarine1': array([0.4980, 1.0000, 0.8314]), 'aquamarine2': array([0.4627, 0.9333, 0.7765]), 'aquamarine3': array([0.4000, 0.8039, 0.6667]), 'aquamarine4': array([0.2706, 0.5451, 0.4549]), 'DarkSeaGreen1': array([0.7569, 1.0000, 0.7569]), 'DarkSeaGreen2': array([0.7059, 0.9333, 0.7059]), 'DarkSeaGreen3': array([0.6078, 0.8039, 0.6078]), 'DarkSeaGreen4': array([0.4118, 0.5451, 0.4118]), 'SeaGreen1': array([0.3294, 1.0000, 0.6235]), 'SeaGreen2': array([0.3059, 0.9333, 0.5804]), 'SeaGreen3': array([0.2627, 0.8039, 0.5020]), 'SeaGreen4': array([0.1804, 0.5451, 0.3412]), 'PaleGreen1': array([0.6039, 1.0000, 0.6039]), 'PaleGreen2': array([0.5647, 0.9333, 0.5647]), 'PaleGreen3': array([0.4863, 0.8039, 0.4863]), 'PaleGreen4': array([0.3294, 0.5451, 0.3294]), 'SpringGreen1': array([0.0000, 1.0000, 0.4980]), 'SpringGreen2': array([0.0000, 0.9333, 0.4627]), 'SpringGreen3': array([0.0000, 0.8039, 0.4000]), 'SpringGreen4': array([0.0000, 0.5451, 0.2706]), 'green1': array([0.0000, 1.0000, 0.0000]), 'green2': array([0.0000, 0.9333, 0.0000]), 'green3': array([0.0000, 0.8039, 0.0000]), 'green4': array([0.0000, 0.5451, 0.0000]), 'chartreuse1': array([0.4980, 1.0000, 0.0000]), 'chartreuse2': array([0.4627, 0.9333, 0.0000]), 'chartreuse3': array([0.4000, 0.8039, 0.0000]), 'chartreuse4': array([0.2706, 0.5451, 0.0000]), 'OliveDrab1': array([0.7529, 1.0000, 0.2431]), 'OliveDrab2': array([0.7020, 0.9333, 0.2275]), 'OliveDrab3': array([0.6039, 0.8039, 0.1961]), 'OliveDrab4': array([0.4118, 0.5451, 0.1333]), 'DarkOliveGreen1': array([0.7922, 1.0000, 0.4392]), 'DarkOliveGreen2': array([0.7373, 0.9333, 0.4078]), 'DarkOliveGreen3': array([0.6353, 0.8039, 0.3529]), 'DarkOliveGreen4': array([0.4314, 0.5451, 0.2392]), 'khaki1': array([1.0000, 0.9647, 0.5608]), 'khaki2': array([0.9333, 0.9020, 0.5216]), 'khaki3': array([0.8039, 0.7765, 0.4510]), 'khaki4': array([0.5451, 0.5255, 0.3059]), 'LightGoldenrod1': array([1.0000, 0.9255, 0.5451]), 'LightGoldenrod2': array([0.9333, 0.8627, 0.5098]), 'LightGoldenrod3': array([0.8039, 0.7451, 0.4392]), 'LightGoldenrod4': array([0.5451, 0.5059, 0.2980]), 'LightYellow1': array([1.0000, 1.0000, 0.8784]), 'LightYellow2': array([0.9333, 0.9333, 0.8196]), 'LightYellow3': array([0.8039, 0.8039, 0.7059]), 'LightYellow4': array([0.5451, 0.5451, 0.4784]), 'yellow1': array([1.0000, 1.0000, 0.0000]), 'yellow2': array([0.9333, 0.9333, 0.0000]), 'yellow3': array([0.8039, 0.8039, 0.0000]), 'yellow4': array([0.5451, 0.5451, 0.0000]), 'gold1': array([1.0000, 0.8431, 0.0000]), 'gold2': array([0.9333, 0.7882, 0.0000]), 'gold3': array([0.8039, 0.6784, 0.0000]), 'gold4': array([0.5451, 0.4588, 0.0000]), 'goldenrod1': array([1.0000, 0.7569, 0.1451]), 'goldenrod2': array([0.9333, 0.7059, 0.1333]), 'goldenrod3': array([0.8039, 0.6078, 0.1137]), 'goldenrod4': array([0.5451, 0.4118, 0.0784]), 'DarkGoldenrod1': array([1.0000, 0.7255, 0.0588]), 'DarkGoldenrod2': array([0.9333, 0.6784, 0.0549]), 'DarkGoldenrod3': array([0.8039, 0.5843, 0.0471]), 'DarkGoldenrod4': array([0.5451, 0.3961, 0.0314]), 'RosyBrown1': array([1.0000, 0.7569, 0.7569]), 'RosyBrown2': array([0.9333, 0.7059, 0.7059]), 'RosyBrown3': array([0.8039, 0.6078, 0.6078]), 'RosyBrown4': array([0.5451, 0.4118, 0.4118]), 'IndianRed1': array([1.0000, 0.4157, 0.4157]), 'IndianRed2': array([0.9333, 0.3882, 0.3882]), 'IndianRed3': array([0.8039, 0.3333, 0.3333]), 'IndianRed4': array([0.5451, 0.2275, 0.2275]), 'sienna1': array([1.0000, 0.5098, 0.2784]), 'sienna2': array([0.9333, 0.4745, 0.2588]), 'sienna3': array([0.8039, 0.4078, 0.2235]), 'sienna4': array([0.5451, 0.2784, 0.1490]), 'burlywood1': array([1.0000, 0.8275, 0.6078]), 'burlywood2': array([0.9333, 0.7725, 0.5686]), 'burlywood3': array([0.8039, 0.6667, 0.4902]), 'burlywood4': array([0.5451, 0.4510, 0.3333]), 'wheat1': array([1.0000, 0.9059, 0.7294]), 'wheat2': array([0.9333, 0.8471, 0.6824]), 'wheat3': array([0.8039, 0.7294, 0.5882]), 'wheat4': array([0.5451, 0.4941, 0.4000]), 'tan1': array([1.0000, 0.6471, 0.3098]), 'tan2': array([0.9333, 0.6039, 0.2863]), 'tan3': array([0.8039, 0.5216, 0.2471]), 'tan4': array([0.5451, 0.3529, 0.1686]), 'chocolate1': array([1.0000, 0.4980, 0.1412]), 'chocolate2': array([0.9333, 0.4627, 0.1294]), 'chocolate3': array([0.8039, 0.4000, 0.1137]), 'chocolate4': array([0.5451, 0.2706, 0.0745]), 'firebrick1': array([1.0000, 0.1882, 0.1882]), 'firebrick2': array([0.9333, 0.1725, 0.1725]), 'firebrick3': array([0.8039, 0.1490, 0.1490]), 'firebrick4': array([0.5451, 0.1020, 0.1020]), 'brown1': array([1.0000, 0.2510, 0.2510]), 'brown2': array([0.9333, 0.2314, 0.2314]), 'brown3': array([0.8039, 0.2000, 0.2000]), 'brown4': array([0.5451, 0.1373, 0.1373]), 'salmon1': array([1.0000, 0.5490, 0.4118]), 'salmon2': array([0.9333, 0.5098, 0.3843]), 'salmon3': array([0.8039, 0.4392, 0.3294]), 'salmon4': array([0.5451, 0.2980, 0.2235]), 'LightSalmon1': array([1.0000, 0.6275, 0.4784]), 'LightSalmon2': array([0.9333, 0.5843, 0.4471]), 'LightSalmon3': array([0.8039, 0.5059, 0.3843]), 'LightSalmon4': array([0.5451, 0.3412, 0.2588]), 'orange1': array([1.0000, 0.6471, 0.0000]), 'orange2': array([0.9333, 0.6039, 0.0000]), 'orange3': array([0.8039, 0.5216, 0.0000]), 'orange4': array([0.5451, 0.3529, 0.0000]), 'DarkOrange1': array([1.0000, 0.4980, 0.0000]), 'DarkOrange2': array([0.9333, 0.4627, 0.0000]), 'DarkOrange3': array([0.8039, 0.4000, 0.0000]), 'DarkOrange4': array([0.5451, 0.2706, 0.0000]), 'coral1': array([1.0000, 0.4471, 0.3373]), 'coral2': array([0.9333, 0.4157, 0.3137]), 'coral3': array([0.8039, 0.3569, 0.2706]), 'coral4': array([0.5451, 0.2431, 0.1843]), 'tomato1': array([1.0000, 0.3882, 0.2784]), 'tomato2': array([0.9333, 0.3608, 0.2588]), 'tomato3': array([0.8039, 0.3098, 0.2235]), 'tomato4': array([0.5451, 0.2118, 0.1490]), 'OrangeRed1': array([1.0000, 0.2706, 0.0000]), 'OrangeRed2': array([0.9333, 0.2510, 0.0000]), 'OrangeRed3': array([0.8039, 0.2157, 0.0000]), 'OrangeRed4': array([0.5451, 0.1451, 0.0000]), 'red1': array([1.0000, 0.0000, 0.0000]), 'red2': array([0.9333, 0.0000, 0.0000]), 'red3': array([0.8039, 0.0000, 0.0000]), 'red4': array([0.5451, 0.0000, 0.0000]), 'DeepPink1': array([1.0000, 0.0784, 0.5765]), 'DeepPink2': array([0.9333, 0.0706, 0.5373]), 'DeepPink3': array([0.8039, 0.0627, 0.4627]), 'DeepPink4': array([0.5451, 0.0392, 0.3137]), 'HotPink1': array([1.0000, 0.4314, 0.7059]), 'HotPink2': array([0.9333, 0.4157, 0.6549]), 'HotPink3': array([0.8039, 0.3765, 0.5647]), 'HotPink4': array([0.5451, 0.2275, 0.3843]), 'pink1': array([1.0000, 0.7098, 0.7725]), 'pink2': array([0.9333, 0.6627, 0.7216]), 'pink3': array([0.8039, 0.5686, 0.6196]), 'pink4': array([0.5451, 0.3882, 0.4235]), 'LightPink1': array([1.0000, 0.6824, 0.7255]), 'LightPink2': array([0.9333, 0.6353, 0.6784]), 'LightPink3': array([0.8039, 0.5490, 0.5843]), 'LightPink4': array([0.5451, 0.3725, 0.3961]), 'PaleVioletRed1': array([1.0000, 0.5098, 0.6706]), 'PaleVioletRed2': array([0.9333, 0.4745, 0.6235]), 'PaleVioletRed3': array([0.8039, 0.4078, 0.5373]), 'PaleVioletRed4': array([0.5451, 0.2784, 0.3647]), 'maroon1': array([1.0000, 0.2039, 0.7020]), 'maroon2': array([0.9333, 0.1882, 0.6549]), 'maroon3': array([0.8039, 0.1608, 0.5647]), 'maroon4': array([0.5451, 0.1098, 0.3843]), 'VioletRed1': array([1.0000, 0.2431, 0.5882]), 'VioletRed2': array([0.9333, 0.2275, 0.5490]), 'VioletRed3': array([0.8039, 0.1961, 0.4706]), 'VioletRed4': array([0.5451, 0.1333, 0.3216]), 'magenta1': array([1.0000, 0.0000, 1.0000]), 'magenta2': array([0.9333, 0.0000, 0.9333]), 'magenta3': array([0.8039, 0.0000, 0.8039]), 'magenta4': array([0.5451, 0.0000, 0.5451]), 'orchid1': array([1.0000, 0.5137, 0.9804]), 'orchid2': array([0.9333, 0.4784, 0.9137]), 'orchid3': array([0.8039, 0.4118, 0.7882]), 'orchid4': array([0.5451, 0.2784, 0.5373]), 'plum1': array([1.0000, 0.7333, 1.0000]), 'plum2': array([0.9333, 0.6824, 0.9333]), 'plum3': array([0.8039, 0.5882, 0.8039]), 'plum4': array([0.5451, 0.4000, 0.5451]), 'MediumOrchid1': array([0.8784, 0.4000, 1.0000]), 'MediumOrchid2': array([0.8196, 0.3725, 0.9333]), 'MediumOrchid3': array([0.7059, 0.3216, 0.8039]), 'MediumOrchid4': array([0.4784, 0.2157, 0.5451]), 'DarkOrchid1': array([0.7490, 0.2431, 1.0000]), 'DarkOrchid2': array([0.6980, 0.2275, 0.9333]), 'DarkOrchid3': array([0.6039, 0.1961, 0.8039]), 'DarkOrchid4': array([0.4078, 0.1333, 0.5451]), 'purple1': array([0.6078, 0.1882, 1.0000]), 'purple2': array([0.5686, 0.1725, 0.9333]), 'purple3': array([0.4902, 0.1490, 0.8039]), 'purple4': array([0.3333, 0.1020, 0.5451]), 'MediumPurple1': array([0.6706, 0.5098, 1.0000]), 'MediumPurple2': array([0.6235, 0.4745, 0.9333]), 'MediumPurple3': array([0.5373, 0.4078, 0.8039]), 'MediumPurple4': array([0.3647, 0.2784, 0.5451]), 'thistle1': array([1.0000, 0.8824, 1.0000]), 'thistle2': array([0.9333, 0.8235, 0.9333]), 'thistle3': array([0.8039, 0.7098, 0.8039]), 'thistle4': array([0.5451, 0.4824, 0.5451]), 'gray0': 0.0000, 'grey0': 0.0000, 'gray1': 0.0118, 'grey1': 0.0118, 'gray2': 0.0196, 'grey2': 0.0196, 'gray3': 0.0314, 'grey3': 0.0314, 'gray4': 0.0392, 'grey4': 0.0392, 'gray5': 0.0510, 'grey5': 0.0510, 'gray6': 0.0588, 'grey6': 0.0588, 'gray7': 0.0706, 'grey7': 0.0706, 'gray8': 0.0784, 'grey8': 0.0784, 'gray9': 0.0902, 'grey9': 0.0902, 'gray10': 0.1020, 'grey10': 0.1020, 'gray11': 0.1098, 'grey11': 0.1098, 'gray12': 0.1216, 'grey12': 0.1216, 'gray13': 0.1294, 'grey13': 0.1294, 'gray14': 0.1412, 'grey14': 0.1412, 'gray15': 0.1490, 'grey15': 0.1490, 'gray16': 0.1608, 'grey16': 0.1608, 'gray17': 0.1686, 'grey17': 0.1686, 'gray18': 0.1804, 'grey18': 0.1804, 'gray19': 0.1882, 'grey19': 0.1882, 'gray20': 0.2000, 'grey20': 0.2000, 'gray21': 0.2118, 'grey21': 0.2118, 'gray22': 0.2196, 'grey22': 0.2196, 'gray23': 0.2314, 'grey23': 0.2314, 'gray24': 0.2392, 'grey24': 0.2392, 'gray25': 0.2510, 'grey25': 0.2510, 'gray26': 0.2588, 'grey26': 0.2588, 'gray27': 0.2706, 'grey27': 0.2706, 'gray28': 0.2784, 'grey28': 0.2784, 'gray29': 0.2902, 'grey29': 0.2902, 'gray30': 0.3020, 'grey30': 0.3020, 'gray31': 0.3098, 'grey31': 0.3098, 'gray32': 0.3216, 'grey32': 0.3216, 'gray33': 0.3294, 'grey33': 0.3294, 'gray34': 0.3412, 'grey34': 0.3412, 'gray35': 0.3490, 'grey35': 0.3490, 'gray36': 0.3608, 'grey36': 0.3608, 'gray37': 0.3686, 'grey37': 0.3686, 'gray38': 0.3804, 'grey38': 0.3804, 'gray39': 0.3882, 'grey39': 0.3882, 'gray40': 0.4000, 'grey40': 0.4000, 'gray41': 0.4118, 'grey41': 0.4118, 'gray42': 0.4196, 'grey42': 0.4196, 'gray43': 0.4314, 'grey43': 0.4314, 'gray44': 0.4392, 'grey44': 0.4392, 'gray45': 0.4510, 'grey45': 0.4510, 'gray46': 0.4588, 'grey46': 0.4588, 'gray47': 0.4706, 'grey47': 0.4706, 'gray48': 0.4784, 'grey48': 0.4784, 'gray49': 0.4902, 'grey49': 0.4902, 'gray50': 0.4980, 'grey50': 0.4980, 'gray51': 0.5098, 'grey51': 0.5098, 'gray52': 0.5216, 'grey52': 0.5216, 'gray53': 0.5294, 'grey53': 0.5294, 'gray54': 0.5412, 'grey54': 0.5412, 'gray55': 0.5490, 'grey55': 0.5490, 'gray56': 0.5608, 'grey56': 0.5608, 'gray57': 0.5686, 'grey57': 0.5686, 'gray58': 0.5804, 'grey58': 0.5804, 'gray59': 0.5882, 'grey59': 0.5882, 'gray60': 0.6000, 'grey60': 0.6000, 'gray61': 0.6118, 'grey61': 0.6118, 'gray62': 0.6196, 'grey62': 0.6196, 'gray63': 0.6314, 'grey63': 0.6314, 'gray64': 0.6392, 'grey64': 0.6392, 'gray65': 0.6510, 'grey65': 0.6510, 'gray66': 0.6588, 'grey66': 0.6588, 'gray67': 0.6706, 'grey67': 0.6706, 'gray68': 0.6784, 'grey68': 0.6784, 'gray69': 0.6902, 'grey69': 0.6902, 'gray70': 0.7020, 'grey70': 0.7020, 'gray71': 0.7098, 'grey71': 0.7098, 'gray72': 0.7216, 'grey72': 0.7216, 'gray73': 0.7294, 'grey73': 0.7294, 'gray74': 0.7412, 'grey74': 0.7412, 'gray75': 0.7490, 'grey75': 0.7490, 'gray76': 0.7608, 'grey76': 0.7608, 'gray77': 0.7686, 'grey77': 0.7686, 'gray78': 0.7804, 'grey78': 0.7804, 'gray79': 0.7882, 'grey79': 0.7882, 'gray80': 0.8000, 'grey80': 0.8000, 'gray81': 0.8118, 'grey81': 0.8118, 'gray82': 0.8196, 'grey82': 0.8196, 'gray83': 0.8314, 'grey83': 0.8314, 'gray84': 0.8392, 'grey84': 0.8392, 'gray85': 0.8510, 'grey85': 0.8510, 'gray86': 0.8588, 'grey86': 0.8588, 'gray87': 0.8706, 'grey87': 0.8706, 'gray88': 0.8784, 'grey88': 0.8784, 'gray89': 0.8902, 'grey89': 0.8902, 'gray90': 0.8980, 'grey90': 0.8980, 'gray91': 0.9098, 'grey91': 0.9098, 'gray92': 0.9216, 'grey92': 0.9216, 'gray93': 0.9294, 'grey93': 0.9294, 'gray94': 0.9412, 'grey94': 0.9412, 'gray95': 0.9490, 'grey95': 0.9490, 'gray96': 0.9608, 'grey96': 0.9608, 'gray97': 0.9686, 'grey97': 0.9686, 'gray98': 0.9804, 'grey98': 0.9804, 'gray99': 0.9882, 'grey99': 0.9882, 'gray100': 1.0000, 'grey100': 1.0000, 'dark grey': 0.6627, 'DarkGrey': 0.6627, 'dark gray': 0.6627, 'DarkGray': 0.6627, 'dark blue': array([0.0000, 0.0000, 0.5451]), 'DarkBlue': array([0.0000, 0.0000, 0.5451]), 'dark cyan': array([0.0000, 0.5451, 0.5451]), 'DarkCyan': array([0.0000, 0.5451, 0.5451]), 'dark magenta': array([0.5451, 0.0000, 0.5451]), 'DarkMagenta': array([0.5451, 0.0000, 0.5451]), 'dark red': array([0.5451, 0.0000, 0.0000]), 'DarkRed': array([0.5451, 0.0000, 0.0000]), 'light green': array([0.5647, 0.9333, 0.5647]), 'LightGreen': array([0.5647, 0.9333, 0.5647]), } del array # Prevent namespace pollution. def _MakeColorTable(outfile = None, infile = "/usr/lib/X11/rgb.txt"): import string, sys if isinstance(infile, basestring): infile = open(infile) if outfile is None: outfile = sys.stdout if isinstance(outfile, basestring): outfile = open(outfile, "w") outfile.write("ColorTable = {\n"); for line in infile.readlines(): line = string.strip(line) if not line or (line[0] in "%#!;"): continue # This is not a comment or an empty line words = string.split(line) name = "'" + string.join(words[3:], " ") + "':" if words[0] == words[1] and words[0] == words[2]: # Gray color clr = float(words[0])/255.0 outfile.write(" %-20s %6.4f,\n" % (name,clr)) else: clr = (name, float(words[0])/255.0, float(words[1])/255.0, float(words[2])/255.0) outfile.write(" %-20s array([%6.4f, %6.4f, %6.4f]),\n" % clr) outfile.write("}\n") outfile.flush() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/fieldplotter.py000066400000000000000000000254751316323560300256360ustar00rootroot00000000000000from __future__ import print_function """plotting fields defined on atoms during a simulation.""" from ase.visualize.primiplotter import PrimiPlotter as _PrimiPlotter import numpy import time class FieldPlotter(_PrimiPlotter): def __init__(self, atoms, datasource=None, verbose=0, timing=0, interval=1, initframe=0): _PrimiPlotter.__init__(self, atoms, verbose=verbose, timing=timing, interval=interval, initframe=initframe) self.datasource = datasource self.dims = (100,100) self.set_plot_plane("xy") self.set_data_range("plot") self.set_background(0.0) self.set_red_yellow_colors() def set_plot_plane(self, plane): """Set the plotting plane to xy, xz or yz (default: xy)""" if plane in ("xy", "xz", "yz"): self.plane = plane else: raise ValueError("The argument to plotPlane must be 'xy', 'xz' or 'yz'.") def set_data_range(self, range1, range2=None): """Set the range of the data used when coloring. This function sets the range of data values mapped unto colors in the final plot. Three possibilities: 'data': Autoscale using the data on visible atoms. The range goes from the lowest to the highest value present on the atoms. If only a few atoms have extreme values, the entire color range may not be used on the plot, as many values may be averaged on each point in the plot. 'plot': Autoscale using the data on the plot. Unlike 'data' this guarantees that the entire color range is used. min, max: Use the range [min, max] """ if (range1 == "data" or range1 == "plot") and range2 == None: self.autorange = range1 elif range2 != None: self.autorange = None self.range = (range1, range2) else: raise ValueError("Illegal argument(s) to set_data_range") def set_background(self, value): """Set the data value of the background. See also set_background_color Set the value of the background (parts of the plot without atoms) to a specific value, or to 'min' or 'max' representing the minimal or maximal data values on the atoms. Calling set_background cancels previous calls to set_background_color. """ self.background = value self.backgroundcolor = None def set_background_color(self, color): """Set the background color. See also set_background. Set the background color. Use a single value in the range [0, 1[ for gray values, or a tuple of three such values as an RGB color. Calling set_background_color cancels previous calls to set_background. """ self.background = None self.backgroundcolor = color def set_red_yellow_colors(self, reverse=False): """Set colors to Black-Red-Yellow-White (a.k.a. STM colors)""" self.set_colors([(0.0, 0, 0, 0), (0.33, 1, 0, 0), (0.66, 1, 1, 0), (1.0, 1, 1, 1)], reverse) def set_black_white_colors(self, reverse=False): """Set the color to Black-White (greyscale)""" self.set_colors([(0.0, 0), (1.0, 1)], reverse) def set_colors(self, colors, reverse=False): colors = numpy.array(colors, numpy.float) if len(colors.shape) != 2: raise ValueError("Colors must be a 2D array.") if reverse: colors[:,0] = 1 - colors[:,0] colors = numpy.array(colors[::-1,:]) #print colors if colors[0,0] != 0.0 or colors[-1,0] != 1.0: raise ValueError("First row must define the value 0 and last row must define the value 1") if colors.shape[1] == 2: self.colormode = 1 elif colors.shape[1] == 4: self.colormode = 3 else: raise ValueError("Color specification must be Nx2 (grey) or Nx4 (rgb) matrix.") self.colorfunction = InterpolatingFunction(colors[:,0], colors[:,1:]) def plot(self, data=None): """Create a plot now. Does not respect the interval timer. This method makes a plot unconditionally. It does not look at the interval variable, nor is this plot taken into account in the counting done by the update() method if an interval variable was specified. If data is specified, it must be an array of numbers with the same length as the atoms. That data will then be plotted. If no data is given, the data source specified when creating the plotter is used. """ if self.timing: self._starttimer() self.log("FieldPlotter: Starting plot at " + time.strftime("%a, %d %b %Y %H:%M:%S")) if data is None: data = self.datasource() if len(data) != len(self.atoms): raise ValueError("Data has wrong length: %d instead of %d." % (len(data), len(self.atoms))) invisible = self._getinvisible() coords = self._rotate(self._getpositions()) radii = self._getradii() if self.autoscale: self._autoscale(coords,radii) scale = self.scale * self.relativescale coords = scale * coords center = self._getcenter(coords) offset = numpy.array(self.dims + (0.0,))/2.0 - center coords = coords + offset radii = radii * scale self.log("Scale is %f and size is (%d, %d)" % (scale, self.dims[0], self.dims[1])) self.log("Physical size of plot is %f Angstrom times %f Angstrom" % (self.dims[0] / scale, self.dims[1] / scale)) # Remove invisible atoms selector = numpy.logical_not(invisible) coords = numpy.compress(selector, coords, 0) radii = numpy.compress(selector, radii) data = numpy.compress(selector, data) self.log("plotting data in the range [%f,%f]" % (data.min(), data.max())) # Now create the output array sumarray = numpy.zeros(self.dims, numpy.float) weight = numpy.zeros(self.dims) # Loop over all atoms, and plot them nmiss = 0 if self.plane == "xy": xy = coords[:,:2] elif self.plane == "xz": xy = coords[:,::2] elif self.plane == "yz": xy = coords[:,1:] else: raise RuntimeError("self.plane is bogus: "+str(self.plane)) assert xy.shape[1] == 2 self.log("plotting %d atoms on %d * %d (= %d) grid" % (len(xy), sumarray.shape[0], sumarray.shape[1], len(sumarray.flat))) xy = xy.astype(numpy.int) for i in range(len(xy)): (x, y) = xy[i] d = data[i] if (x >= 0 and x < self.dims[0] and y >= 0 and y < self.dims[1]): sumarray[x,y] += d weight[x,y] += 1 else: nmiss += 1 print("... %d atoms fell outside plot." % (nmiss,)) datamap = self._makedatamap(sumarray, weight, data.min(), data.max()) self.log("Range of data map: [%f, %f]" % (datamap.min(), datamap.max())) plot = self._makeplotmap(datamap, weight) #self.log("Range of plot: [%f, %f]" % # (min(plot.flat), max(plot.flat))) examinplot = plot[:] examinplot.shape = (plot.shape[0] * plot.shape[1],) + plot.shape[2:] self.log("Range of plot: %s -> %s" % (str(examinplot.min(0)), str(examinplot.max(0)))) del examinplot for device in self.outputdevice: device.inform_about_scale(scale) device.plotArray(self.n, numpy.swapaxes(plot,0,1)) self.n = self.n + 1 self.log("FieldPlotter: Finished plotting at " + time.strftime("%a, %d %b %Y %H:%M:%S")) self.log("\n\n") def _makedatamap(self, sumarray, weight, minimum, maximum): background = numpy.equal(weight, 0) print("Number of background points:", sum(background.flat)) datamap = sumarray / numpy.where(background, 1, weight) if self.background is not None: if self.background == "min": bg = minimum elif self.background == "max": bg = maximum else: bg = self.background datamap = numpy.where(background, bg, datamap) if self.autorange == "data": datamap = (datamap - minimum) / (maximum - minimum) self.log("Autorange using data. Data range is [%f, %f]" % (minimum, maximum)) elif self.autorange == "plot": ma = numpy.where(background, minimum, datamap).max() mi = numpy.where(background, maximum, datamap).min() datamap = (datamap - mi) / (ma - mi) self.log("Autorange using plot. Data range is [%f, %f]" % (mi, ma)) else: assert self.autorange == None datamap = (datamap - self.range[0]) / (self.range[1] - self.range[0]) datamap = numpy.clip(datamap, 0.0, 1.0) self.log("Data range specified by user: [%f, %f]" % self.range) datamap = numpy.where(background, bg, datamap) assert datamap.min() >= 0 and datamap.max() <= 1.0 return datamap def _makeplotmap(self, datamap, weight): plot = numpy.zeros(self.dims + (self.colormode,), numpy.float) for i in range(self.dims[0]): for j in range(self.dims[1]): if self.backgroundcolor is not None and weight[i,j] == 0: plot[i,j,:] = self.backgroundcolor else: x = datamap[i,j] plot[i,j,:] = self.colorfunction(x) return plot class InterpolatingFunction: def __init__(self, xpoints, ypoints): if len(xpoints) != len(ypoints): raise ValueError("Length of x and y arrays should be the same.") idx = xpoints.argsort() self.xpoints = xpoints[idx] self.ypoints = ypoints[idx] def __call__(self, x): n = self.xpoints.searchsorted(x) if n == 0: return self.ypoints[0] if n == len(self.xpoints): return self.xpoints[-1] x0 = self.xpoints[n-1] x1 = self.xpoints[n] y0 = self.ypoints[n-1] y1 = self.ypoints[n] return y0 + (y1 - y0) / (x1 - x0) * (x - x0) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/mlab.py000066400000000000000000000104511316323560300240400ustar00rootroot00000000000000from __future__ import print_function import optparse import numpy as np from ase.data import covalent_radii from ase.io.cube import read_cube_data from ase.data.colors import cpk_colors from ase.calculators.calculator import get_calculator def plot(atoms, data, contours): """Plot atoms, unit-cell and iso-surfaces using Mayavi. Parameters: atoms: Atoms object Positions, atomiz numbers and unit-cell. data: 3-d ndarray of float Data for iso-surfaces. countours: list of float Contour values. """ # Delay slow imports: from mayavi import mlab mlab.figure(1, bgcolor=(1, 1, 1)) # make a white figure # Plot the atoms as spheres: for pos, Z in zip(atoms.positions, atoms.numbers): mlab.points3d(*pos, scale_factor=covalent_radii[Z], resolution=20, color=tuple(cpk_colors[Z])) # Draw the unit cell: A = atoms.cell for i1, a in enumerate(A): i2 = (i1 + 1) % 3 i3 = (i1 + 2) % 3 for b in [np.zeros(3), A[i2]]: for c in [np.zeros(3), A[i3]]: p1 = b + c p2 = p1 + a mlab.plot3d([p1[0], p2[0]], [p1[1], p2[1]], [p1[2], p2[2]], tube_radius=0.1) cp = mlab.contour3d(data, contours=contours, transparent=True, opacity=0.5, colormap='hot') # Do some tvtk magic in order to allow for non-orthogonal unit cells: polydata = cp.actor.actors[0].mapper.input pts = np.array(polydata.points) - 1 # Transform the points to the unit cell: polydata.points = np.dot(pts, A / np.array(data.shape)[:, np.newaxis]) # Apparently we need this to redraw the figure, maybe it can be done in # another way? mlab.view(azimuth=155, elevation=70, distance='auto') # Show the 3d plot: mlab.show() description = """\ Plot iso-surfaces from a cube-file or a wave function or an electron density from a calculator-restart file.""" def main(args=None): parser = optparse.OptionParser(usage='%prog [options] filename', description=description) add = parser.add_option add('-n', '--band-index', type=int, metavar='INDEX', help='Band index counting from zero.') add('-s', '--spin-index', type=int, metavar='SPIN', help='Spin index: zero or one.') add('-e', '--electrostatic-potential', action='store_true', help='Plot the electrostatic potential.') add('-c', '--contours', default='4', help='Use "-c 3" for 3 contours or "-c -0.5,0.5" for specific ' + 'values. Default is four contours.') add('-r', '--repeat', help='Example: "-r 2,2,2".') add('-C', '--calculator-name', metavar='NAME', help='Name of calculator.') opts, args = parser.parse_args(args) if len(args) != 1: parser.error('Incorrect number of arguments') arg = args[0] if arg.endswith('.cube'): data, atoms = read_cube_data(arg) else: calc = get_calculator(opts.calculator_name)(arg, txt=None) atoms = calc.get_atoms() if opts.band_index is None: if opts.electrostatic_potential: data = calc.get_electrostatic_potential() else: data = calc.get_pseudo_density(opts.spin_index) else: data = calc.get_pseudo_wave_function(opts.band_index, opts.spin_index or 0) if data.dtype == complex: data = abs(data) mn = data.min() mx = data.max() print('Min: %16.6f' % mn) print('Max: %16.6f' % mx) if opts.contours.isdigit(): n = int(opts.contours) d = (mx - mn) / n contours = np.linspace(mn + d / 2, mx - d / 2, n).tolist() else: contours = [float(x) for x in opts.contours.rstrip(',').split(',')] if len(contours) == 1: print('1 contour:', contours[0]) else: print('%d contours: %.6f, ..., %.6f' % (len(contours), contours[0], contours[-1])) if opts.repeat: repeat = [int(r) for r in opts.repeat.split(',')] data = np.tile(data, repeat) atoms *= repeat plot(atoms, data, contours) if __name__ == '__main__': main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/nglview.py000066400000000000000000000071061316323560300246030ustar00rootroot00000000000000# coding: utf-8 from ase import Atoms class NGLDisplay: """Structure display class Provides basic structure/trajectory display in the notebook and optional gui which can be used to enhance its usability. It is also possible to extend the functionality of the particular instance of the viewer by adding further widgets manipulating the structure. """ def __init__(self, atoms, xsize=500, ysize=500): import nglview from ipywidgets import Dropdown, FloatSlider, IntSlider, HBox, VBox self.atoms = atoms if isinstance(atoms[0], Atoms): # Assume this is a trajectory or struct list self.view = nglview.show_asetraj(atoms) self.frm = IntSlider(value=0, min=0, max=len(atoms) - 1) self.frm.observe(self._update_frame) self.struct = atoms[0] else: # Assume this is just a single structure self.view = nglview.show_ase(atoms) self.struct = atoms self.frm = None self.colors = {} self.view._remote_call('setSize', target='Widget', args=['%dpx' % (xsize,), '%dpx' % (ysize,)]) self.view.add_unitcell() self.view.add_spacefill() self.view.camera = 'orthographic' self.view.update_spacefill(radiusType='covalent', scale=0.7) self.view.center() self.asel = Dropdown(options=['All'] + list(set(self.struct.get_chemical_symbols())), value='All', description='Show') self.rad = FloatSlider(value=0.8, min=0.0, max=1.5, step=0.01, description='Ball size') self.asel.observe(self._select_atom) self.rad.observe(self._update_repr) wdg = [self.asel, self.rad] if self.frm: wdg.append(self.frm) self.gui = HBox([self.view, VBox(wdg)]) # Make useful shortcuts for the user of the class self.gui.view = self.view self.gui.control_box = self.gui.children[1] self.gui.custom_colors = self.custom_colors def _update_repr(self, chg=None): self.view.update_spacefill(radiusType='covalent', scale=self.rad.value) def _update_frame(self, chg=None): self.view.frame = self.frm.value return def _select_atom(self, chg=None): sel = self.asel.value self.view.remove_spacefill() for e in set(self.struct.get_chemical_symbols()): if (sel == 'All' or e == sel): if e in self.colors: self.view.add_spacefill(selection='#' + e, color=self.colors[e]) else: self.view.add_spacefill(selection='#' + e) self._update_repr() def custom_colors(self, clr=None): """ Define custom colors for some atoms. Pass a dictionary of the form {'Fe':'red', 'Au':'yellow'} to the function. To reset the map to default call the method without parameters. """ if clr: self.colors = clr else: self.colors = {} self._select_atom() def view_ngl(atoms, w=500, h=500): """ Returns the nglviewer + some control widgets in the VBox ipywidget. The viewer supports any Atoms objectand any sequence of Atoms objects. The returned object has two shortcuts members: .view: nglviewer ipywidget for direct interaction .control_box: VBox ipywidget containing view control widgets """ return NGLDisplay(atoms, w, h).gui ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/plot.py000066400000000000000000000034031316323560300241020ustar00rootroot00000000000000from ase.io.utils import generate_writer_variables, make_patch_list class Matplotlib: def __init__(self, atoms, ax, rotation='', show_unit_cell=False, radii=None, colors=None, scale=1, offset=(0, 0)): generate_writer_variables( self, atoms, rotation=rotation, show_unit_cell=show_unit_cell, radii=radii, bbox=None, colors=colors, scale=scale, extra_offset=offset) self.ax = ax self.figure = ax.figure self.ax.set_aspect('equal') def write(self): self.write_body() self.ax.set_xlim(0, self.w) self.ax.set_ylim(0, self.h) def write_body(self): patch_list = make_patch_list(self) for patch in patch_list: self.ax.add_patch(patch) def plot_atoms(atoms, ax=None, **parameters): """Plot an atoms object in a matplotlib subplot. Parameters ---------- atoms : Atoms object ax : Matplotlib subplot object rotation : str, optional In degrees. In the form '10x,20y,30z' show_unit_cell : bool, optional, default False Draw the bounds of the atoms object as dashed lines. radii : float, optional The radii of the atoms colors : list of strings, optional Color of the atoms, must be the same length as the number of atoms in the atoms object. scale : float, optional Scaling of the plotted atoms and lines. offset : tuple (float, float), optional Offset of the plotted atoms and lines. """ if isinstance(atoms, list): assert len(atoms) == 1 atoms = atoms[0] import matplotlib.pyplot as plt if ax is None: ax = plt.gca() Matplotlib(atoms, ax, **parameters).write() return ax ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/primiplotter.py000066400000000000000000001062561316323560300256700ustar00rootroot00000000000000from __future__ import print_function """An experimental package for making plots during a simulation. A PrimiPlotter can plot a list of atoms on one or more output devices. """ import collections import os import sys import time import weakref from math import pi import numpy as np from ase.visualize.colortable import color_table import ase.data from ase.utils import basestring class PrimiPlotterBase: "Base class for PrimiPlotter and Povrayplotter." #def set_dimensions(self, dims): # "Set the size of the canvas (a 2-tuple)." # self.dims = dims def set_rotation(self, rotation): "Set the rotation angles (in degrees)." self.angles[:] = np.array(rotation) * (pi/180) def set_radii(self, radii): """Set the atomic radii. Give an array or a single number.""" self.radius = radii def set_colors(self, colors): """Explicitly set the colors of the atoms. The colors can either be a dictionary mapping tags to colors or an array of colors, one per atom. Each color is specified as a greyscale value from 0.0 to 1.0 or as three RGB values from 0.0 to 1.0. """ self.colors = colors def set_color_function(self, colors): """Set a color function, to be used to color the atoms.""" if isinstance(colors, collections.Callable): self.colorfunction = colors else: raise TypeError("The color function is not callable.") def set_invisible(self, inv): """Choose invisible atoms.""" self.invisible = inv def set_invisibility_function(self, invfunc): """Set an invisibility function.""" if isinstance(invfunc, collections.Callable): self.invisibilityfunction = invfunc else: raise TypeError("The invisibility function is not callable.") def set_cut(self, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None): self.cut = {"xmin":xmin, "xmax":xmax, "ymin":ymin, "ymax":ymax, "zmin":zmin, "zmax":zmax} def update(self, newatoms = None): """Cause a plot (respecting the interval setting). update causes a plot to be made. If the interval variable was specified when the plotter was create, it will only produce a plot with that interval. update takes an optional argument, newatoms, which can be used to replace the list of atoms with a new one. """ if newatoms is not None: self.atoms = newatoms if self.skipnext <= 0: self.plot() self.skipnext = self.interval self.skipnext -= 1 def set_log(self, log): """Sets a file for logging. log may be an open file or a filename. """ if hasattr(log, "write"): self.logfile = log self.ownlogfile = False else: self.logfile = open(log, "w") self.ownlogfile = True def log(self, message): """logs a message to the file set by set_log.""" if self.logfile is not None: self.logfile.write(message+"\n") self.logfile.flush() self._verb(message) def _verb(self, txt): if self.verbose: sys.stderr.write(txt+"\n") def _starttimer(self): self.starttime = time.time() def _stoptimer(self): elapsedtime = time.time() - self.starttime self.totaltime = self.totaltime + elapsedtime print("plotting time %s sec (total %s sec)" % (elapsedtime, self.totaltime)) def _getpositions(self): return self.atoms.get_positions() def _getradii(self): if self.radius is not None: if hasattr(self.radius, "shape"): return self.radius # User has specified an array else: return self.radius * np.ones(len(self.atoms), float) # No radii specified. Try getting them from the atoms. try: return self.atoms.get_atomic_radii() except AttributeError: try: z = self._getatomicnumbers() except AttributeError: pass else: return ase.data.covalent_radii[z] # No radius available. Defaulting to 1.0 return np.ones(len(self.atoms), float) def _getatomicnumbers(self): return self.atoms.get_atomic_numbers() def _getcolors(self): # Try any explicitly given colors if self.colors is not None: if isinstance(self.colors, type({})): self.log("Explicit colors dictionary") return _colorsfromdict(self.colors, np.asarray(self.atoms.get_tags(),int)) else: self.log("Explicit colors") return self.colors # Try the color function, if given if self.colorfunction is not None: self.log("Calling color function.") return self.colorfunction(self.atoms) # Maybe the atoms know their own colors try: c = self.atoms.get_colors() except AttributeError: c = None if c is not None: if isinstance(c, type({})): self.log("Color dictionary from atoms.get_colors()") return _colorsfromdict(c, np.asarray(self.atoms.get_tags(),int)) else: self.log("Colors from atoms.get_colors()") return c # Default to white atoms self.log("No colors: using white") return np.ones(len(self.atoms), float) def _getinvisible(self): if self.invisible is not None: inv = self.invisible else: inv = np.zeros(len(self.atoms)) if self.invisibilityfunction: inv = np.logical_or(inv, self.invisibilityfunction(self.atoms)) r = self._getpositions() if len(r) > len(inv): # This will happen in parallel simulations due to ghost atoms. # They are invisible. Hmm, this may cause trouble. i2 = np.ones(len(r)) i2[:len(inv)] = inv inv = i2 del i2 if self.cut["xmin"] is not None: inv = np.logical_or(inv, np.less(r[:,0], self.cut["xmin"])) if self.cut["xmax"] is not None: inv = np.logical_or(inv, np.greater(r[:,0], self.cut["xmax"])) if self.cut["ymin"] is not None: inv = np.logical_or(inv, np.less(r[:,1], self.cut["ymin"])) if self.cut["ymax"] is not None: inv = np.logical_or(inv, np.greater(r[:,1], self.cut["ymax"])) if self.cut["zmin"] is not None: inv = np.logical_or(inv, np.less(r[:,2], self.cut["zmin"])) if self.cut["zmax"] is not None: inv = np.logical_or(inv, np.greater(r[:,2], self.cut["zmax"])) return inv def __del__(self): if self.ownlogfile: self.logfile.close() class PrimiPlotter(PrimiPlotterBase): """Primitive PostScript-based plots during a simulation. The PrimiPlotter plots atoms during simulations, extracting the relevant information from the list of atoms. It is created using the list of atoms as an argument to the constructor. Then one or more output devices must be attached using set_output(device). The list of supported output devices is at the end. The atoms are plotted as circles. The system is first rotated using the angles specified by set_rotation([vx, vy, vz]). The rotation is vx degrees around the x axis (positive from the y toward the z axis), then vy degrees around the y axis (from x toward z), then vz degrees around the z axis (from x toward y). The rotation matrix is the same as the one used by RasMol. Per default, the system is scaled so it fits within the canvas (autoscale mode). Autoscale mode is enabled and disables using autoscale("on") or autoscale("off"). A manual scale factor can be set with set_scale(scale), this implies autoscale("off"). The scale factor (from the last autoscale event or from set_scale) can be obtained with get_scale(). Finally, an explicit autoscaling can be triggered with autoscale("now"), this is mainly useful before calling get_scale or before disabling further autoscaling. Finally, a relative scaling factor can be set with SetRelativeScaling(), it is multiplied to the usual scale factor (from autoscale or from set_scale). This is probably only useful in connection with autoscaling. The radii of the atoms are obtained from the first of the following methods which work: 1. If the radii are specified using PrimiPlotter.set_radii(r), they are used. Must be an array, or a single number. 2. If the atoms has a get_atomic_radii() method, it is used. This is unlikely. 3. If the atoms has a get_atomic_numbers() method, the corresponding covalent radii are extracted from the ASE.ChemicalElements module. 4. If all else fails, the radius is set to 1.0 Angstrom. The atoms are colored using the first of the following methods which work. 1. If colors are explicitly set using PrimiPlotter.set_colors(), they are used. 2. If these colors are specified as a dictionary, the tags (from atoms.get_tags()) are used as an index into the dictionary to get the actual colors of the atoms. 3. If a color function has been set using PrimiPlotter.set_color_function(), it is called with the atoms as an argument, and is expected to return an array of colors. 4. If the atoms have a get_colors() method, it is used to get the colors. 5. If these colors are specified as a dictionary, the tags (from atoms.get_tags()) are used as an index into the dictionary to get the actual colors of the atoms. 6. If all else fails, the atoms will be white. The colors are specified as an array of colors, one color per atom. Each color is either a real number from 0.0 to 1.0, specifying a grayscale (0.0 = black, 1.0 = white), or an array of three numbers from 0.0 to 1.0, specifying RGB values. The colors of all atoms are thus a Numerical Python N-vector or a 3xN matrix. In cases 1a and 3a above, the keys of the dictionary are integers, and the values are either numbers (grayscales) or 3-vectors (RGB values), or strings with X11 color names, which are then translated to RGB values. Only in case 1a and 3a are strings recognized as colors. Some atoms may be invisible, and thus left out of the plot. Invisible atoms are determined from the following algorithm. Unlike the radius or the coloring, all points below are tried and if an atom is invisible by any criterion, it is left out of the plot. 1. All atoms are visible. 2. If PrimiPlotter.set_invisible() has be used to specify invisible atoms, any atoms for which the value is non-zero becomes invisible. 3. If an invisiblility function has been set with PrimiPlotter.set_invisibility_function(), it is called with the atoms as argument. It is expected to return an integer per atom, any non-zero value makes that atom invisible. 4. If a cut has been specified using set_cut, any atom outside the cut is made invisible. Note that invisible atoms are still included in the algorithm for positioning and scaling the plot. The following output devices are implemented. PostScriptFile(prefix): Create PS files names prefix0000.ps etc. PnmFile(prefix): Similar, but makes PNM files. GifFile(prefix): Similar, but makes GIF files. JpegFile(prefix): Similar, but makes JPEG files. X11Window(): Show the plot in an X11 window using ghostscript. Output devices writing to files take an extra optional argument to the constructor, compress, specifying if the output file should be gzipped. This is not allowed for some (already compressed) file formats. Instead of a filename prefix, a filename containing a % can be used. In that case the filename is expected to expand to a real filename when used with the Python string formatting operator (%) with the frame number as argument. Avoid generating spaces in the file names: use e.g. %03d instead of %3d. """ def __init__(self, atoms, verbose=0, timing=0, interval=1, initframe=0): """ Parameters to the constructor: atoms: The atoms to be plottet. verbose = 0: Write progress information to stderr. timing = 0: Collect timing information. interval = 1: If specified, a plot is only made every interval'th time update() is called. Deprecated, normally you should use the interval argument when attaching the plotter to e.g. the dynamics. initframe = 0: Initial frame number, i.e. the number of the first plot. """ self.atoms = atoms self.outputdevice = [] self.angles = np.zeros(3, float) self.dims = (512, 512) self.verbose = verbose self.timing = timing self.totaltime = 0.0 self.radius = None self.colors = None self.colorfunction = None self.n = initframe self.interval = interval self.skipnext = 0 # Number of calls to update before anything happens. self.a_scale = 1 self.relativescale = 1.0 self.invisible = None self.invisibilityfunction = None self.set_cut() # No cut self.isparallel = 0 self.logfile = None self.ownlogfile = False def set_output(self, device): "Attach an output device to the plotter." self.outputdevice.append(device) device.set_dimensions(self.dims) device.set_owner(weakref.proxy(self)) def set_dimensions(self, dims): "Set the size of the canvas (a 2-tuple)." if self.outputdevice: raise RuntimeError("Cannot set dimensions after an output device has been specified.") self.dims = dims def autoscale(self, mode): if mode == "on": self.a_scale = 1 elif mode == "off": self.a_scale = 0 elif mode == "now": coords = self._rotate(self.atoms.get_positions()) radii = self._getradii() self._autoscale(coords, radii) else: raise ValueError("Unknown autoscale mode: ").with_traceback(+str(mode)) def set_scale(self, scale): self.autoscale("off") self.scale = scale def get_scale(self): return self.scale def set_relative_scale(self, rscale = 1.0): self.relativescale = rscale def plot(self): """Create a plot now. Does not respect the interval timer. This method makes a plot unconditionally. It does not look at the interval variable, nor is this plot taken into account in the counting done by the update() method if an interval variable was specified. """ if self.timing: self._starttimer() self.log("PrimiPlotter: Starting plot at " + time.strftime("%a, %d %b %Y %H:%M:%S")) colors = self._getcolors() invisible = self._getinvisible() coords = self._rotate(self._getpositions()) radii = self._getradii() if self.a_scale: self._autoscale(coords,radii) scale = self.scale * self.relativescale coords = scale * coords center = self._getcenter(coords) offset = np.array(self.dims + (0.0,))/2.0 - center coords = coords + offset self.log("Scale is %f and size is (%d, %d)" % (scale, self.dims[0], self.dims[1])) self.log("Physical size of plot is %f Angstrom times %f Angstrom" % (self.dims[0] / scale, self.dims[1] / scale)) self._verb("Sorting.") order = np.argsort(coords[:,2]) coords = coords[order] ### take(coords, order) radii = radii[order] ### take(radii, order) colors = colors[order] ### take(colors, order) invisible = invisible[order] ### take(invisible, order) if self.isparallel: id = np.arange(len(coords))[order] ### take(arange(len(coords)), order) else: id = None radii = radii * scale selector = self._computevisibility(coords, radii, invisible, id) coords = np.compress(selector, coords, 0) radii = np.compress(selector, radii) colors = np.compress(selector, colors, 0) self._makeoutput(scale, coords, radii, colors) self.log("PrimiPlotter: Finished plotting at " + time.strftime("%a, %d %b %Y %H:%M:%S")) self.log("\n\n") if self.timing: self._stoptimer() def _computevisibility(self, coords, rad, invisible, id, zoom = 1): xy = coords[:,:2] typradius = sum(rad) / len(rad) if typradius < 4.0: self.log("Refining visibility check.") if zoom >= 16: raise RuntimeError("Cannot check visibility - too deep recursion.") return self._computevisibility(xy*2, rad*2, invisible, id, zoom*2) else: self.log("Visibility(r_typ = %.1f pixels)" % (typradius,)) dims = np.array(self.dims) * zoom maxr = int(np.ceil(max(rad))) + 2 canvas = np.zeros((dims[0] + 4*maxr, dims[1] + 4*maxr), np.int8) # Atoms are only invisible if they are within the canvas, or closer # to its edge than their radius visible = (np.greater(xy[:,0], -rad) * np.less(xy[:,0], dims[0]+rad) * np.greater(xy[:,1], -rad) * np.less(xy[:,1], dims[1]+rad) * np.logical_not(invisible)) # Atoms are visible if not hidden behind other atoms xy = np.floor(xy + 2*maxr + 0.5).astype(int) masks = {} for i in range(len(rad)-1, -1, -1): if (i % 100000) == 0 and i: self._verb(str(i)) if not visible[i]: continue x, y = xy[i] r = rad[i] try: mask, invmask, rn = masks[r] except KeyError: rn = int(np.ceil(r)) nmask = 2*rn+1 mask = (np.arange(nmask) - rn)**2 mask = np.less(mask[:,np.newaxis]+mask[np.newaxis,:], r*r).astype(np.int8) invmask = np.equal(mask, 0).astype(np.int8) masks[r] = (mask, invmask, rn) window = np.logical_or(canvas[x-rn:x+rn+1, y-rn:y+rn+1], invmask) hidden = np.alltrue(window.flat) if hidden: visible[i] = 0 else: canvas[x-rn:x+rn+1, y-rn:y+rn+1] = np.logical_or(canvas[x-rn:x+rn+1, y-rn:y+rn+1], mask) self.log("%d visible, %d hidden out of %d" % (sum(visible), len(visible) - sum(visible), len(visible))) return visible def _rotate(self, positions): self.log("Rotation angles: %f %f %f" % tuple(self.angles)) mat = np.dot(np.dot(_rot(self.angles[2], 2), _rot(self.angles[1], 1)), _rot(self.angles[0]+pi, 0)) return np.dot(positions, mat) def _getcenter(self, coords): return np.array((max(coords[:,0]) + min(coords[:,0]), max(coords[:,1]) + min(coords[:,1]), 0.0)) / 2.0 def _autoscale(self, coords, radii): x = coords[:,0] y = coords[:,1] maxradius = max(radii) deltax = max(x) - min(x) + 2*maxradius deltay = max(y) - min(y) + 2*maxradius scalex = self.dims[0] / deltax scaley = self.dims[1] / deltay self.scale = 0.95 * min(scalex, scaley) self.log("Autoscale: %f" % self.scale) def _makeoutput(self, scale, coords, radii, colors): for device in self.outputdevice: device.inform_about_scale(scale) device.plot(self.n, coords, radii, colors) self.n = self.n + 1 class ParallelPrimiPlotter(PrimiPlotter): """A version of PrimiPlotter for parallel ASAP simulations. Used like PrimiPlotter, but only the output devices on the master node are used. Most of the processing is distributed on the nodes, but the actual output is only done on the master. See the PrimiPlotter docstring for details. """ def __init__(self, *args, **kwargs): PrimiPlotter.__init__(self, *args, **kwargs) self.isparallel = 1 import ase.parallel self.mpi = ase.parallel.world if self.mpi is None: raise RuntimeError("MPI is not available.") self.master = self.mpi.rank == 0 self.mpitag = 42 # Reduce chance of collision with other modules. def set_output(self, device): if self.master: PrimiPlotter.set_output(self, device) def set_log(self, log): if self.master: PrimiPlotter.set_log(self, log) def _getpositions(self): realpos = self.atoms.get_positions() ghostpos = self.atoms.get_ghost_positions() self.numberofrealatoms = len(realpos) self.numberofghostatoms = len(ghostpos) return np.concatenate((realpos, ghostpos)) def _getatomicnumbers(self): realz = self.atoms.get_atomic_numbers() ghostz = self.atoms.get_ghost_atomic_numbers() return np.concatenate((realz, ghostz)) def _getradius(self): r = PrimiPlotter._getradius(self) if len(r) == self.numberofrealatoms + self.numberofghostatoms: # Must have calculated radii from atomic numbers return r else: assert len(r) == self.numberofrealatoms # Heuristic: use minimum r for the ghosts ghostr = min(r) * np.ones(self.numberofghostatoms, float) return np.concatenate((r, ghostr)) def _getcenter(self, coords): # max(x) and min(x) only works for rank-1 arrays in Numeric version 17. maximal = np.maximum.reduce(coords[:,0:2]) minimal = np.minimum.reduce(coords[:,0:2]) self.mpi.max(maximal) self.mpi.min(minimal) maxx, maxy = maximal minx, miny = minimal return np.array([maxx + minx, maxy + miny, 0.0]) / 2.0 def _computevisibility(self, xy, rad, invisible, id, zoom = 1): # Find visible atoms, allowing ghost atoms to hide real atoms. v = PrimiPlotter._computevisibility(self, xy, rad, invisible, id, zoom) # Then remove ghost atoms return v * np.less(id, self.numberofrealatoms) def _autoscale(self, coords, radii): self._verb("Autoscale") n = len(self.atoms) x = coords[:n,0] y = coords[:n,1] assert len(x) == len(self.atoms) maximal = np.array([max(x), max(y), max(radii[:n])]) minimal = np.array([min(x), min(y)]) self.mpi.max(maximal) self.mpi.min(minimal) maxx, maxy, maxradius = maximal minx, miny = minimal deltax = maxx - minx + 2*maxradius deltay = maxy - miny + 2*maxradius scalex = self.dims[0] / deltax scaley = self.dims[1] / deltay self.scale = 0.95 * min(scalex, scaley) self.log("Autoscale: %f" % self.scale) def _getcolors(self): col = PrimiPlotter._getcolors(self) nghost = len(self.atoms.get_ghost_positions()) newcolshape = (nghost + col.shape[0],) + col.shape[1:] newcol = np.zeros(newcolshape, col.dtype) newcol[:len(col)] = col return newcol def _makeoutput(self, scale, coords, radii, colors): if len(colors.shape) == 1: # Greyscales ncol = 1 else: ncol = colors.shape[1] # 1 or 3. assert ncol == 3 # RGB values # If one processor says RGB, all must convert ncolmax = self.mpi.max(ncol) if ncolmax > ncol: assert ncol == 1 colors = colors[:,np.newaxis] + np.zeros(ncolmax)[np.newaxis,:] ncol = ncolmax assert colors.shape == (len(coords), ncol) # Now send data from slaves to master data = np.zeros((len(coords), 4+ncol), float) data[:,:3] = coords data[:,3] = radii if ncol == 1: data[:,4] = colors else: data[:,4:] = colors if not self.master: datashape = np.array(data.shape) assert datashape.shape == (2,) self.mpi.send(datashape, 0, self.mpitag) self.mpi.send(data, 0, self.mpitag) else: total = [data] n = len(coords) colsmin = colsmax = 4+ncol for proc in range(1, self.mpi.size): self._verb("Receiving from processor "+str(proc)) datashape = np.zeros(2, int) self.mpi.receive(datashape, proc, self.mpitag) fdat = np.zeros(tuple(datashape)) self.mpi.receive(fdat, proc, self.mpitag) total.append(fdat) n = n + len(fdat) if fdat.shape[1] < colsmin: colsmin = fdat.shape[1] if fdat.shape[1] > colsmax: colsmax = fdat.shape[1] self._verb("Merging data") # Some processors may have only greyscales whereas others # may have RGB. That will cause difficulties. trouble = colsmax != colsmin data = np.zeros((n, colsmax), float) if trouble: assert data.shape[1] == 7 else: assert data.shape[1] == 7 or data.shape[1] == 5 i = 0 for d in total: if not trouble or d.shape[1] == 7: data[i:i+len(d)] = d else: assert d.shape[1] == 5 data[i:i+len(d), :5] = d data[i:i+len(d), 5] = d[4] data[i:i+len(d), 6] = d[4] i = i + len(d) assert i == len(data) # Now all data is on the master self._verb("Sorting merged data") order = np.argsort(data[:,2]) data = data[order] ### take(data, order) coords = data[:,:3] radii = data[:,3] if data.shape[1] == 5: colors = data[:,4] else: colors = data[:,4:] PrimiPlotter._makeoutput(self, scale, coords, radii, colors) class _PostScriptDevice: """PostScript based output device.""" offset = (0,0) # Will be changed by some classes def __init__(self): self.scale = 1 self.linewidth = 1 self.outline = 1 def set_dimensions(self, dims): self.dims = dims def set_owner(self, owner): self.owner = owner def inform_about_scale(self, scale): self.linewidth = 0.1 * scale def set_outline(self, value): self.outline = value return self # Can chain these calls in set_output() def plot(self, *args, **kargs): self.Doplot(self.PSplot, *args, **kargs) def plotArray(self, *args, **kargs): self.Doplot(self.PSplotArray, *args, **kargs) def PSplot(self, file, n, coords, r, colors, noshowpage=0): xy = coords[:,:2] assert(len(xy) == len(r) and len(xy) == len(colors)) if len(colors.shape) == 1: gray = 1 else: gray = 0 assert(colors.shape[1] == 3) file.write("%!PS-Adobe-2.0\n") file.write("%%Creator: Primiplot\n") file.write("%%Pages: 1\n") file.write("%%%%BoundingBox: %d %d %d %d\n" % (self.offset + (self.offset[0] + self.dims[0], self.offset[1] + self.dims[1]))) file.write("%%EndComments\n") file.write("\n") file.write("% Enforce BoundingBox\n") file.write("%d %d moveto %d 0 rlineto 0 %d rlineto -%d 0 rlineto\n" % ((self.offset + self.dims + (self.dims[0],)))) file.write("closepath clip newpath\n\n") file.write("%f %f scale\n" % (2*(1.0/self.scale,))) file.write("%d %d translate\n" % (self.scale * self.offset[0], self.scale * self.offset[1])) file.write("\n") if gray: if self.outline: file.write("/circ { 0 360 arc gsave setgray fill grestore stroke } def\n") else: file.write("/circ { 0 360 arc setgray fill } def\n") else: if self.outline: file.write("/circ { 0 360 arc gsave setrgbcolor fill grestore stroke } def\n") else: file.write("/circ { 0 360 arc setrgbcolor fill } def\n") file.write("%f setlinewidth 0.0 setgray\n" % (self.linewidth * self.scale,)) if gray: data = np.zeros((len(xy), 4), float) data[:,0] = colors data[:,1:3] = (self.scale * xy) data[:,3] = (self.scale * r) for point in data: file.write("%.3f %.2f %.2f %.2f circ\n" % tuple(point)) else: data = np.zeros((len(xy), 6), float) data[:,0:3] = colors data[:,3:5] = (self.scale * xy) data[:,5] = (self.scale * r) for point in data: file.write("%.3f %.3f %.3f %.2f %.2f %.2f circ\n" % tuple(point)) if not noshowpage: file.write("showpage\n") def PSplotArray(self, file, n, data, noshowpage=0): assert(len(data.shape) == 3) assert(data.shape[0] == self.dims[1] and data.shape[1] == self.dims[0]) data = np.clip((256*data).astype(int), 0, 255) file.write("%!PS-Adobe-2.0\n") file.write("%%Creator: Fieldplotter\n") file.write("%%Pages: 1\n") file.write("%%%%BoundingBox: %d %d %d %d\n" % (self.offset + (self.offset[0] + self.dims[0], self.offset[1] + self.dims[1]))) file.write("%%EndComments\n") file.write("\n") file.write("%d %d translate\n" % self.offset) file.write("%f %f scale\n" % self.dims) file.write("\n") file.write("% String holding a single line\n") file.write("/pictline %d string def\n" %(data.shape[1]*data.shape[2],)) file.write("\n") file.write("%d %d 8\n" % self.dims) file.write("[%d 0 0 %d 0 0]\n" % self.dims) file.write("{currentfile pictline readhexstring pop}\n") file.write("false %d colorimage\n" % (data.shape[2],)) file.write("\n") s = "" for d in data.flat: s += ("%02X" % d) if len(s) >= 72: file.write(s+"\n") s = "" file.write(s+"\n") file.write("\n") if not noshowpage: file.write("showpage\n") class _PostScriptToFile(_PostScriptDevice): """Output device for PS files.""" compr_suffix = None def __init__(self, prefix, compress = 0): self.compress = compress if "'" in prefix: raise ValueError("Filename may not contain a quote ('): "+prefix) if "%" in prefix: # Assume the user knows what (s)he is doing self.filenames = prefix else: self.filenames = prefix + "%04d" + self.suffix if compress: if self.compr_suffix is None: raise RuntimeError("Compression not supported.") self.filenames = self.filenames + self.compr_suffix _PostScriptDevice.__init__(self) class PostScriptFile(_PostScriptToFile): suffix = ".ps" compr_suffix = ".gz" offset = (50,50) # Inherits __init__ def Doplot(self, plotmethod, n, *args, **kargs): filename = self.filenames % (n,) self.owner.log("Output to PostScript file "+filename) if self.compress: file = os.popen("gzip > '"+filename+"'", "w") else: file = open(filename, "w") plotmethod(*(file, n)+args, **kargs) file.close() class _PS_to_bitmap(_PostScriptToFile): gscmd = "gs -q -sDEVICE={0} -sOutputFile=- -dDEVICEWIDTH=%d -dDEVICEHEIGHT=%d - " # Inherits __init__ def Doplot(self, plotmethod, n, *args, **kargs): filename = self.filenames % (n,) self.owner.log("Output to bitmapped file " + filename) cmd = self.gscmd.format(self.devicename) if self.compress: cmd = cmd + "| gzip " cmd = (cmd+" > '%s'") % (self.dims[0], self.dims[1], filename) file = os.popen(cmd, "w") plotmethod(*(file, n)+args, **kargs) file.close() class PnmFile(_PS_to_bitmap): suffix = ".pnm" devicename = "pnmraw" compr_suffix = ".gz" #class GifFile(_PS_via_PnmFile): # suffix = ".gif" # converter = "| ppmquant -floyd 256 2>/dev/null | ppmtogif 2>/dev/null" class JpegFile(_PS_to_bitmap): suffix = ".jpeg" devicename = "jpeg" class PngFile(_PS_to_bitmap): suffix = ".png" devicename = "png16m" class Png256File(_PS_to_bitmap): suffix = ".png" devicename = "png256" class X11Window(_PostScriptDevice): """Shows the plot in an X11 window.""" #Inherits __init__ gscmd = "gs -q -sDEVICE=x11 -dDEVICEWIDTH=%d -dDEVICEHEIGHT=%d -r72x72 -" def Doplot(self, plotmethod, n, *args, **kargs): self.owner.log("Output to X11 window") try: file = self.pipe self.pipe.write("showpage\n") except AttributeError: filename = self.gscmd % tuple(self.dims) file = os.popen(filename, "w") self.pipe = file kargs["noshowpage"] = 1 plotmethod(*(file, n)+args, **kargs) file.write("flushpage\n") file.flush() # Helper functions def _rot(v, axis): ax1, ax2 = ((1, 2), (0, 2), (0, 1))[axis] c, s = np.cos(v), np.sin(v) m = np.zeros((3,3), float) m[axis,axis] = 1.0 m[ax1,ax1] = c m[ax2,ax2] = c m[ax1,ax2] = s m[ax2,ax1] = -s return m def _colorsfromdict(dict, cls): """Extract colors from dictionary using cls as key.""" assert(isinstance(dict, type({}))) # Allow local modifications, to replace strings with rgb values. dict = dict.copy() isgray, isrgb = 0, 0 for k in dict.keys(): v = dict[k] if isinstance(v, basestring): v = color_table[v] dict[k] = v try: if len(v) == 3: isrgb = 1 # Assume it is an RGB value if not hasattr(v, "shape"): dict[k] = np.array(v) # Convert to array else: raise RuntimeError("Unrecognized color object "+repr(v)) except TypeError: isgray = 1 # Assume it is a number if isgray and isrgb: # Convert all to RGB for k in dict.keys(): v = dict[k] if not hasattr(v, "shape"): dict[k] = v * np.ones(3, float) # Now the dictionary is ready if isrgb: colors = np.zeros((len(cls),3), float) else: colors = np.zeros((len(cls),), float) for i in range(len(cls)): colors[i] = dict[cls[i]] return colors ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/sage.py000066400000000000000000000014131316323560300240420ustar00rootroot00000000000000from ase.data.colors import jmol_colors from ase.data import covalent_radii def view_sage_jmol(atoms): try: from .sage.plot.plot3d.shapes import ColorCube, Sphere except: raise ImportError( 'view_sage_jmol requires sage (http://www.sagemath.org/) ' + 'and is intended to be used directly in the browser') cell = atoms.cell.diagonal() / 2 model = ColorCube(list(cell), ['blue', 'blue', 'blue'], opacity=0.1) for atom in atoms: atomic_number = atom.number color = tuple(jmol_colors[atomic_number]) radius = covalent_radii[atomic_number] model += Sphere(radius, color=color).translate( *(atom.position - atoms.cell.diagonal() / 2)) model.show(aspect_ratio=1, frame=False) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/visualize/x3d.py000066400000000000000000000007061316323560300236250ustar00rootroot00000000000000"""Inline viewer for jupyter notebook using X3D.""" from tempfile import NamedTemporaryFile from IPython.display import HTML def view_x3d(atoms): """View atoms inline in a jupyter notbook. This command should only be used within a jupyter/ipython notebook.""" with NamedTemporaryFile('r+', suffix='.html') as ntf: atoms.write(ntf.name, format='html') ntf.seek(0) html_atoms = ntf.read() return HTML(html_atoms) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/ase/xrdebye.py000066400000000000000000000071571316323560300225650ustar00rootroot00000000000000from __future__ import print_function from math import exp, pi, sin, sqrt, cos, acos import numpy as np from ase.data import atomic_numbers # Table (1) of # D. WAASMAIER AND A. KIRFEL, Acta Cryst. (1995). A51, 416-431 waasmaier = { # a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 c 'C' : [2.657506, 14.780758, 1.078079, 0.776775, 1.490909, 42.086843, -4.241070, -0.000294, 0.713791, 0.239535, 4.297983], 'S' : [6.372157, 1.514347, 5.154568, 22.092528, 1.473732, 0.061373, 1.635073, 55.445176, 1.209372, 0.646925, 0.154722], 'Pd': [6.121511, 0.062549, 4.784063, 0.784031, 16.631683, 8.751391, 4.318258, 34.489983, 13.246773, 0.784031, 0.883099], 'Ag': [6.073874, 0.055333, 17.155437, 7.896512, 4.173344, 28.443739, 0.852238, 110.376108, 17.988685, 0.716809, 0.756603], 'Au': [16.777389, 0.122737, 19.317156, 8.621570, 32.979682, 1.256902, 5.595453, 38.008821, 10.576854, 0.000601, -6.279078], 'P' : [1.950541, 0.908139, 4.146930, 27.044953, 1.494560, 0.071280, 1.522042, 67.520190, 5.729711, 1.981173, 0.155233], 'Cl': [1.446071, 0.052357, 6.870609, 1.193165, 6.151801, 18.343416, 1.750347, 46.398394, 0.634168, 0.401005, 0.146773], } class XrDebye: def __init__(self, wavelength, alpha=1.01, damping=0.04, warn=True, method='Iwasa'): """ Obtain powder x-ray spectra. wavelength in Angstrom damping in Angstrom**2 """ self.wavelength = wavelength self.damping = damping self.alpha = alpha self.warn = warn self.method = method def set_damping(self, damping): self.damping = damping def get(self, atoms, s): """Get the powder x-ray (XRD) pattern using the Debye-Formula. After: T. Iwasa and K. Nobusada, J. Phys. Chem. C 111 (2007) 45 s is assumed to be in 1/Angstrom """ sinth = self.wavelength * s / 2. costh = sqrt(1. - sinth**2) cos2th = cos(2. * acos(costh)) pre = exp(- self.damping * s**2 / 2) if self.method == 'Iwasa': pre *= costh / (1. + self.alpha * cos2th**2) f = {} def atomic(symbol): if symbol not in f: if self.method == 'Iwasa': f[symbol] = self.get_waasmaier(symbol, s) else: f[symbol] = atomic_numbers[symbol] return f[symbol] def sinc(x): if x < 1.e-6: x2 = x * x return 1 - x2 / 6. + x2 * x2 / 120. else: return sin(x) / x I = 0. for a in atoms: fa = atomic(a.symbol) # print a.symbol, fa for b in atoms: fb = atomic(b.symbol) if a == b: twopisr = 0. else: vrij = a.position - b.position rij = np.sqrt(np.dot(vrij, vrij)) twopisr = 2 * pi * s * rij I += fa * fb * sinc(twopisr) return pre * I def get_waasmaier(self, symbol, s): """Scattering factor for free atoms.""" if symbol == 'H': # XXXX implement analytical H return 0 elif symbol in waasmaier: abc = waasmaier[symbol] f = abc[10] s2 = s*s for i in range(5): f += abc[2 * i] * exp(-abc[2 * i + 1] * s2) return f if self.warn: print(' Element', symbol, 'not available') return 0 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/bin/000077500000000000000000000000001316323560300205375ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/bin/ase000077500000000000000000000000731316323560300212350ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/bin/ase3000077500000000000000000000000741316323560300213210ustar00rootroot00000000000000#!/usr/bin/env python3 from ase.cli.main import main main() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/000077500000000000000000000000001316323560300205345ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/.gitignore000066400000000000000000000004351316323560300225260ustar00rootroot00000000000000# If you build the documentation in the source tree, you will create a # lot of files that we don't want to see with "git status": *.png *.gif *.pov *.ini *.traj *.pdf *.csv *.txt *.log *.xyz *.svg *.db *.pckl # These are OK (images for the supported calculators): !/doc/static/*.png ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ASE.bib000066400000000000000000000062131316323560300216240ustar00rootroot00000000000000@article{ase-paper, author={Ask Hjorth Larsen and Jens Jørgen Mortensen and Jakob Blomqvist and Ivano E Castelli and Rune Christensen and Marcin DuÅ‚ak and Jesper Friis and Michael N Groves and Bjørk Hammer and Cory Hargus and Eric D Hermes and Paul C Jennings and Peter Bjerre Jensen and James Kermode and John R Kitchin and Esben Leonhard Kolsbjerg and Joseph Kubal and Kristen Kaasbjerg and Steen Lysgaard and Jón Bergmann Maronsson and Tristan Maxson and Thomas Olsen and Lars Pastewka and Andrew Peterson and Carsten Rostgaard and Jakob Schiøtz and Ole Schütt and Mikkel Strange and Kristian S Thygesen and Tejs Vegge and Lasse Vilhelmsen and Michael Walter and Zhenhua Zeng and Karsten W Jacobsen}, title={The atomic simulation environment—a Python library for working with atoms}, journal={Journal of Physics: Condensed Matter}, volume={29}, number={27}, pages={273002}, url={http://stacks.iop.org/0953-8984/29/i=27/a=273002}, year={2017}, abstract={The atomic simulation environment (ASE) is a software package written in the Python programming language with the aim of setting up, steering, and analyzing atomistic simulations. In ASE, tasks are fully scripted in Python. The powerful syntax of Python combined with the NumPy array library make it possible to perform very complex simulation tasks. For example, a sequence of calculations may be performed with the use of a simple ‘for-loop’ construction. Calculations of energy, forces, stresses and other quantities are performed through interfaces to many external electronic structure codes or force fields using a uniform interface. On top of this calculator interface, ASE provides modules for performing many standard simulation tasks such as structure optimization, molecular dynamics, handling of constraints and performing nudged elastic band calculations.} } @Article{ISI:000175131400009, Author = {S. R. Bahn and K. W. Jacobsen}, Title = {An object-oriented scripting interface to a legacy electronic structure code}, JournalFull = {COMPUTING IN SCIENCE \& ENGINEERING}, Year = {2002}, Volume = {4}, Number = {3}, Pages = {56-66}, Month = {MAY-JUN}, Abstract = {The authors have created an object-oriented scripting interface to a mature density functional theory code. The interface gives users a high-level, flexible handle on the code without rewriting the underlying number-crunching code. The authors also discuss the design issues and advantages of homogeneous interfaces}, Publisher = {IEEE COMPUTER SOC}, Address = {10662 LOS VAQUEROS CIRCLE, PO BOX 3014, LOS ALAMITOS, CA 90720-1314 USA}, Type = {Article}, Language = {English}, Affiliation = {Bahn, SR (Reprint Author), Tech Univ Denmark, Dept Phys, CAMP, Bldg 307, DK-2800 Lyngby, Denmark. Tech Univ Denmark, Dept Phys, CAMP, DK-2800 Lyngby, Denmark.}, ISSN = {1521-9615}, Keywords-Plus = {MULTISCALE SIMULATION; GOLD ATOMS}, Subject-Category = {Computer Science, Interdisciplinary Applications}, Author-Email = {bahn@fysik.dtu.dk kwj@fysik.dtu.dk}, Number-of-Cited-References = {19}, Journal-ISO = {Comput. Sci. Eng.}, Journal = {Comput. Sci. Eng.}, Doc-Delivery-Number = {543YL}, Unique-ID = {ISI:000175131400009}, DOI = {10.1109/5992.998641}, } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/Makefile000066400000000000000000000042731316323560300222020ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help doctest clean inspect html latex linkcheck browse html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/html help: @echo "Use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " doctest to test code examples" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " linkcheck to check all external links for integrity" @echo " clean to clean up" @echo " inspect to check generated images and other stuff" @echo " browse to open browser" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." clean: rm -rf $(BUILDDIR)/* python -m ase.utils.sphinx clean inspect: python -m ase.utils.sphinx inspect linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." browse: firefox build/html/index.html ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/about.rst000066400000000000000000000043501316323560300224020ustar00rootroot00000000000000.. _about: ===== About ===== ASE is an Atomic Simulation Environment written in the Python_ programming language with the aim of setting up, steering, and analyzing atomistic simulations. The ASE has been constructed with a number of "design goals" that make it: - **Easy to use**: Setting up an atomistic total energy calculation or molecular dynamics simulation with ASE is simple and straightforward. ASE can be used via a :mod:`graphical user interface `, :ref:`cli` and the Python language. Python scripts are easy to follow (see :ref:`what is python` for a short introduction). It is simple for new users to get access to all of the functionality of ASE. - **Flexible**: Since ASE is based on the Python scripting language it is possible to perform very complicated simulation tasks without any code modifications. For example, a sequence of calculations may be performed with the use of simple "for-loop" constructions. There exist ASE modules for performing many standard simulation tasks. - **Customizable**: The Python code in ASE is structured in modules intended for different purposes. There are :mod:`ase.calculators` for calculating energies, forces and stresses, :mod:`ase.md` and :mod:`ase.optimize` modules for controlling the motion of atoms, :mod:`constraints ` objects and filters for performing :mod:`nudged-elastic-band ` calculations etc. The modularity of the object-oriented code make it simple to contribute new functionality to ASE. - **Pythonic**: It fits nicely into the rest of the Python world with use of the popular NumPy package for numerical work (see :ref:`numpy` for a short introduction). The use of the Python language allows ASE to be used both interactively as well as in scripts. - **Open to participation**: The CAMPOS Atomic Simulation Environment is released under the GNU Lesser General Public License version 2.1 or any later version. See the files :git:`COPYING` and :git:`COPYING.LESSER` which accompany the downloaded files, or see the license at GNU's web server at http://www.gnu.org/licenses/. Everybody is invited to participate in using and :ref:`developing the code `. .. _Python: http://www.python.org ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase-gui.desktop000066400000000000000000000005571316323560300234700ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=ASE GUI GenericName=ASE GUI Comment=Atomic Simulation Environment GUI Categories=GTK;Science;Chemistry;Physics;Education; Keywords=Atom;Molecule;Cluster;Surface;Nanotube;Bulk;Crystal; Exec=ase gui Icon=ase Terminal=false Type=Application Name[en_US]=ASE GUI GenericName[en_US]=ASE GUI Comment[en_US]=Atomic Simulation Environment GUI ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/000077500000000000000000000000001316323560300213045ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/ase.rst000066400000000000000000000026501316323560300226110ustar00rootroot00000000000000.. _ase: ======= Modules ======= Quick links: .. list-table:: * - :mod:`ase (Atom) ` - :mod:`ase (Atoms) ` - :mod:`~ase.build` - :mod:`~ase.calculators` * - :mod:`~ase.collections` - :mod:`~ase.constraints` - :mod:`~ase.db` - :mod:`~ase.dft` * - :mod:`~ase.data` - :mod:`~ase.ga` - :mod:`~ase.geometry` - :mod:`~ase.gui` * - :mod:`~ase.io` - :mod:`~ase.lattice` - :mod:`~ase.md` - :mod:`~ase.neb` * - :mod:`~ase.neighborlist` - :mod:`~ase.optimize` - :mod:`~ase.parallel` - :mod:`~ase.phasediagram` * - :mod:`~ase.phonons` - :mod:`~ase.spacegroup` - :mod:`~ase.transport` - :mod:`~ase.thermochemistry` * - :mod:`~ase.units` - :mod:`~ase.utils` - :mod:`~ase.vibrations` - :mod:`~ase.visualize` .. seealso:: * :ref:`tutorials` * :ref:`cli` * :git:`Source code <>` * Presentation about ASE: :download:`ase-talk.pdf` List of all modules: .. toctree:: :maxdepth: 2 atoms units io/io build/build eos collections data optimize md constraints spacegroup/spacegroup neighborlist geometry db/db neb ga gui/gui lattice cluster/cluster visualize/visualize calculators/calculators dft/dft vibrations/vibrations phonons phasediagram/phasediagram thermochemistry/thermochemistry utils parallel dimer atom transport/transport ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/atom.rst000066400000000000000000000062321316323560300230010ustar00rootroot00000000000000.. module:: ase.atom The Atom object =============== ASE defines a python class called :class:`Atom` to setup and handle atoms in electronic structure and molecular simulations. From a python script, atoms can be created like this: >>> from ase import Atom >>> a1 = Atom('Si', (0, 0, 0)) >>> a2 = Atom('H', (1.3, 0, 0), mass=2) >>> a3 = Atom(14, position=(0, 0, 0)) # same as a1 .. autoclass:: Atom The first argument to the constructor of an :class:`Atom` object is the chemical symbol, and the second argument is the position in Ã… units (see :mod:`ase.units`). The position can be any numerical sequence of length three. The properties of an atom can also be set using keywords like it is done in the *a2* and *a3* examples above. More examples: >>> a = Atom('O', charge=-2) >>> b = Atom(8, charge=-2) >>> c = Atom('H', (1, 2, 3), magmom=1) >>> print(a.charge, a.position) -2 [ 0. 0. 0.] >>> c.x = 0.0 >>> c.position array([ 0., 2., 3.]) >>> b.symbol 'O' >>> c.tag = 42 >>> c.number 1 >>> c.symbol = 'Li' >>> c.number 3 If the atom object belongs to an Atoms object, then assigning values to the atom attributes will change the corresponding arrays of the atoms object: >>> from ase import Atoms >>> OH = Atoms('OH') >>> OH[0].charge = -1 >>> OH.get_charges() array([-1., 0.]) Another example: >>> for atom in bulk: ... if atom.symbol == 'Ni': ... atom.magmom = 0.7 # set initial magnetic moment The different properties of an atom can be obtained and changed via attributes (``position``, ``number``, ``tag``, ``momentum``, ``mass``, ``magmom``, ``charge``, ``x``, ``y``, ``z``): >>> a1.position = [1, 0, 0] >>> a1.position [1, 0, 0] >>> a1.z = 2.5 >>> a1.position [1, 0, 2.5] >>> a2.magmom = 1.0 That last line will set the initial magnetic moment that some calculators use (similar to the :meth:`~ase.Atoms.set_initial_magnetic_moments` method). .. note:: The ``position`` and ``momentum`` attributes refer to mutable objects, so in some cases, you may want to use ``a1.position.copy()`` in order to avoid changing the position of ``a1`` by accident. Getting an Atom from an Atoms object ------------------------------------ Indexing an :class:`~ase.Atoms` object returns an :class:`Atom` object still remembering that it belongs to the collective :class:`~ase.Atoms`: Modifying it will also change the atoms object: >>> from ase.build import molecule >>> atoms = molecule('CH4') >>> atoms.get_positions() array([[ 0. , 0. , 0. ], [ 0.629118, 0.629118, 0.629118], [-0.629118, -0.629118, 0.629118], [ 0.629118, -0.629118, -0.629118], [-0.629118, 0.629118, -0.629118]]) >>> a = atoms[2] >>> a Atom('H', [-0.62911799999999996, -0.62911799999999996, 0.62911799999999996], index=2) >>> a.x = 0 >>> atoms.get_positions() array([[ 0. , 0. , 0. ], [ 0.629118, 0.629118, 0.629118], [ 0. , -0.629118, 0.629118], [ 0.629118, -0.629118, -0.629118], [-0.629118, 0.629118, -0.629118]]) .. seealso:: :mod:`ase`: More information about how to use collections of atoms. :mod:`ase.calculators`: Information about how to calculate forces and energies of atoms. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/atoms.py000066400000000000000000000006571316323560300230110ustar00rootroot00000000000000# creates: Au-wire.png from ase import Atoms from ase.io import write d = 2.9 L = 10.0 wire = Atoms('Au', positions=[(0, L / 2, L / 2)], cell=(d, L, L), pbc=(1, 0, 0)) wire *= (6, 1, 1) wire.positions[:, 0] -= 2 * d wire.cell[0, 0] = d #view(wire, block=1) write('Au-wire.pov', wire, show_unit_cell=2, rotation='12x,6y', transparent=False, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/atoms.rst000066400000000000000000000233731316323560300231710ustar00rootroot00000000000000.. module:: ase.atoms .. module:: ase ================ The Atoms object ================ The :class:`Atoms` object is a collection of atoms. Here is how to define a CO molecule:: from ase import Atoms d = 1.1 co = Atoms('CO', positions=[(0, 0, 0), (0, 0, d)]) Here, the first argument specifies the type of the atoms and we used the ``positions`` keywords to specify their positions. Other possible keywords are: ``numbers``, ``tags``, ``momenta``, ``masses``, ``magmoms`` and ``charges``. Here is how you could make an infinite gold wire with a bond length of 2.9 Ã…:: from ase import Atoms d = 2.9 L = 10.0 wire = Atoms('Au', positions=[[0, L / 2, L / 2]], cell=[d, L, L], pbc=[1, 0, 0]) .. image:: Au-wire.png Here, two more optional keyword arguments were used: ``cell``: Unit cell size This can be a sequence of three numbers for an orthorhombic unit cell or three by three numbers for a general unit cell (a sequence of three sequences of three numbers) or six numbers (three legths and three angles in degrees). The default value is *[0,0,0]* which is the same as *[[0,0,0],[0,0,0],[0,0,0]]* or *[0,0,0,90,90,90]* meaning that none of the three lattice vectors are defined. ``pbc``: Periodic boundary conditions The default value is *False* - a value of *True* would give periodic boundary conditions along all three axes. It is possible to give a sequence of three booleans to specify periodicity along specific axes. You can also use the following methods to work with the unit cell and the boundary conditions: :meth:`~Atoms.set_pbc`, :meth:`~Atoms.set_cell`, :meth:`~Atoms.get_cell`, and :meth:`~Atoms.get_pbc`. Working with the array methods of Atoms objects =============================================== Like with a single :class:`~ase.atom.Atom` the properties of a collection of atoms can be accessed and changed with get- and set-methods. For example the positions of the atoms can be addressed as >>> from ase import Atoms >>> a = Atoms('N3', [(0, 0, 0), (1, 0, 0), (0, 0, 1)]) >>> a.get_positions() array([[ 0., 0., 0.], [ 1., 0., 0.], [ 0., 0., 1.]]) >>> a.set_positions([(2, 0, 0), (0, 2, 2), (2, 2, 0)]) >>> a.get_positions() array([[ 2., 0., 0.], [ 0., 2., 2.], [ 2., 2., 0.]]) Here is the full list of the get/set methods operating on all the atoms at once. The get methods return an array of quantities, one for each atom; the set methods take similar arrays. E.g. :meth:`~Atoms.get_positions` return N * 3 numbers, :meth:`~Atoms.get_atomic_numbers` return N integers. *These methods return copies of the internal arrays, it is thus safe to modify the returned arrays.* .. list-table:: * - :meth:`~Atoms.get_atomic_numbers` - :meth:`~Atoms.set_atomic_numbers` * - :meth:`~Atoms.get_initial_charges` - :meth:`~Atoms.set_initial_charges` * - :meth:`~Atoms.get_charges` - * - :meth:`~Atoms.get_chemical_symbols` - :meth:`~Atoms.set_chemical_symbols` * - :meth:`~Atoms.get_initial_magnetic_moments` - :meth:`~Atoms.set_initial_magnetic_moments` * - :meth:`~Atoms.get_magnetic_moments` - * - :meth:`~Atoms.get_masses` - :meth:`~Atoms.set_masses` * - :meth:`~Atoms.get_momenta` - :meth:`~Atoms.set_momenta` * - :meth:`~Atoms.get_forces` - * - :meth:`~Atoms.get_positions` - :meth:`~Atoms.set_positions` * - :meth:`~Atoms.get_potential_energies` - * - :meth:`~Atoms.get_scaled_positions` - :meth:`~Atoms.set_scaled_positions` * - :meth:`~Atoms.get_stresses` - * - :meth:`~Atoms.get_tags` - :meth:`~Atoms.set_tags` * - :meth:`~Atoms.get_velocities` - :meth:`~Atoms.set_velocities` There are also a number of get/set methods that operate on quantities common to all the atoms or defined for the collection of atoms: .. list-table:: * - :meth:`~Atoms.get_calculator` - :meth:`~Atoms.set_calculator` * - :meth:`~Atoms.get_cell` - :meth:`~Atoms.set_cell` * - :meth:`~Atoms.get_cell_lengths_and_angles` - * - :meth:`~Atoms.get_center_of_mass` - * - :meth:`~Atoms.get_kinetic_energy` - * - :meth:`~Atoms.get_magnetic_moment` - * - :meth:`~Atoms.get_number_of_atoms` - * - :meth:`~Atoms.get_pbc` - :meth:`~Atoms.set_pbc` * - :meth:`~Atoms.get_potential_energy` - * - :meth:`~Atoms.get_stress` - * - :meth:`~Atoms.get_total_energy` - * - :meth:`~Atoms.get_volume` - Unit cell and boundary conditions ================================= The :class:`Atoms` object holds a unit cell which is a 3x3 matrix as can be seen from >>> a.get_cell() array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) The cell can be defined or changed using the :meth:`~Atoms.set_cell` method. Changing the unit cell does per default not move the atoms: >>> import numpy as np >>> a.set_cell(2 * np.identity(3)) >>> a.get_cell() array([[ 2., 0., 0.], [ 0., 2., 0.], [ 0., 0., 2.]]) >>> a.set_positions([(2, 0, 0), (1, 1, 0), (2, 2, 0)]) >>> a.get_positions() array([[ 2., 0., 0.], [ 1., 1., 0.], [ 2., 2., 0.]]) However if we set ``scale_atoms=True`` the atomic positions are scaled with the unit cell: >>> a.set_cell(np.identity(3), scale_atoms=True) >>> a.get_positions() array([[ 1. , 0. , 0. ], [ 0.5, 0.5, 0. ], [ 1. , 1. , 0. ]]) The :meth:`~Atoms.set_pbc` method specifies whether periodic boundary conditions are to be used in the directions of the three vectors of the unit cell. A slab calculation with periodic boundary conditions in *x* and *y* directions and free boundary conditions in the *z* direction is obtained through >>> a.set_pbc((True, True, False)) or >>> a.pbc = (True, True, False) .. _atoms_special_attributes: Special attributes ================== It is also possible to work directly with the attributes :attr:`~Atoms.positions`, :attr:`~Atoms.numbers`, :attr:`~Atoms.pbc` and :attr:`~Atoms.cell`. Here we change the position of the 2nd atom (which has count number 1 because Python starts counting at zero) and the type of the first atom: >>> a.positions *= 2 >>> a.positions[1] = (1, 1, 0) >>> a.get_positions() array([[ 2., 0., 0.], [ 1., 1., 0.], [ 2., 2., 0.]]) >>> a.positions array([[ 2., 0., 0.], [ 1., 1., 0.], [ 2., 2., 0.]]) >>> a.numbers array([7, 7, 7]) >>> a.numbers[0] = 13 >>> a.get_chemical_symbols() ['Al', 'N', 'N'] Check for periodic boundary conditions: >>> a.pbc # equivalent to a.get_pbc() array([ True, True, False], dtype=bool) >>> a.pbc.any() True >>> a.pbc[2] = 1 >>> a.pbc array([ True, True, True], dtype=bool) Hexagonal unit cell: >>> a.cell = [2.5, 2.5, 15, 90, 90, 120] Adding a calculator =================== A calculator can be attached to the atoms with the purpose of calculating energies and forces on the atoms. ASE works with many different :mod:`ase.calculators`. A calculator object *calc* is attached to the atoms like this: >>> a.set_calculator(calc) After the calculator has been appropriately setup the energy of the atoms can be obtained through >>> a.get_potential_energy() The term "potential energy" here means for example the total energy of a DFT calculation, which includes both kinetic, electrostatic, and exchange-correlation energy for the electrons. The reason it is called potential energy is that the atoms might also have a kinetic energy (from the moving nuclei) and that is obtained with >>> a.get_kinetic_energy() In case of a DFT calculator, it is up to the user to check exactly what the :meth:`~Atoms.get_potential_energy` method returns. For example it may be the result of a calculation with a finite temperature smearing of the occupation numbers extrapolated to zero temperature. More about this can be found for the different :mod:`ase.calculators`. The following methods can only be called if a calculator is present: * :meth:`~Atoms.get_potential_energy` * :meth:`~Atoms.get_potential_energies` * :meth:`~Atoms.get_forces` * :meth:`~Atoms.get_stress` * :meth:`~Atoms.get_stresses` * :meth:`~Atoms.get_total_energy` * :meth:`~Atoms.get_magnetic_moments` * :meth:`~Atoms.get_magnetic_moment` Not all of these methods are supported by all calculators. List-methods ============ .. list-table:: * - method - example * - ``+`` - ``wire2 = wire + co`` * - ``+=``, :meth:`~Atoms.extend` - ``wire += co`` ``wire.extend(co)`` * - :meth:`~Atoms.append` - ``wire.append(Atom('H'))`` * - ``*`` - ``wire3 = wire * (3, 1, 1)`` * - ``*=``, :meth:`~Atoms.repeat` - ``wire *= (3, 1, 1)`` ``wire.repeat((3, 1, 1))`` * - ``len`` - ``len(co)`` * - ``del`` - ``del wire3[0]`` ``del wire3[[1,3]]`` * - :meth:`~Atoms.pop` - ``oxygen = wire2.pop()`` Note that the ``del`` method can be used with the more powerful numpy-style indexing, as in the second example above. This can be combined with python list comprehension in order to selectively delete atoms within an ASE Atoms object. For example, the below code creates an ethanol molecule and subsequently strips all the hydrogen atoms from it:: from ase.build import molecule atoms = molecule('CH3CH2OH') del atoms[[atom.index for atom in atoms if atom.symbol=='H']] Other methods ============= * :meth:`~Atoms.center` * :meth:`~Atoms.wrap` * :meth:`~Atoms.translate` * :meth:`~Atoms.rotate` * :meth:`~Atoms.euler_rotate` * :meth:`~Atoms.get_dihedral` * :meth:`~Atoms.set_dihedral` * :meth:`~Atoms.rotate_dihedral` * :meth:`~Atoms.rattle` * :meth:`~Atoms.set_constraint` * :meth:`~Atoms.set_distance` * :meth:`~Atoms.copy` * :meth:`~Atoms.get_center_of_mass` * :meth:`~Atoms.get_distance` * :meth:`~Atoms.get_distances` * :meth:`~Atoms.get_all_distances` * :meth:`~Atoms.get_volume` * :meth:`~Atoms.has` * :meth:`~Atoms.edit` List of all Methods =================== .. autoclass:: Atoms :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/000077500000000000000000000000001316323560300224035ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/build.rst000066400000000000000000000126371316323560300242450ustar00rootroot00000000000000.. module:: ase.build ================ Building things ================ Quick links: * Simple bulk crystals: :func:`~ase.build.bulk` * Simple molecules: :func:`~ase.build.molecule` * Special surfaces: * fcc: :func:`~ase.build.fcc100`, :func:`~ase.build.fcc110`, :func:`~ase.build.fcc111`, :func:`~ase.build.fcc211`, :func:`~ase.build.fcc111_root` * bcc: :func:`~ase.build.bcc100`, :func:`~ase.build.bcc110`, :func:`~ase.build.bcc111` * - :func:`~ase.build.bcc111_root` * hcp: :func:`~ase.build.hcp0001`, :func:`~ase.build.hcp10m10`, :func:`~ase.build.hcp0001_root` * diamond: :func:`~ase.build.diamond100`, :func:`~ase.build.diamond111` * `MX_2` (2H or 1T): :func:`~ase.build.mx2` * Other surface tools: :func:`~ase.build.surface`, :func:`~ase.build.add_adsorbate`, :func:`~ase.build.add_vacuum`, :func:`~ase.build.root_surface` * 1D: :func:`~ase.build.nanotube`, :func:`~ase.build.graphene_nanoribbon` * Other tools: :func:`~ase.build.cut`, :func:`~ase.build.stack`, :func:`~ase.build.sort`, :func:`~ase.build.minimize_tilt`, :func:`~ase.build.niggli_reduce`, :func:`~ase.build.rotate`, :func:`~ase.build.minimize_rotation_and_translation`, :func:`~ase.build.get_deviation_from_optimal_cell_shape`, :func:`~ase.build.find_optimal_cell_shape`, :func:`~ase.build.find_optimal_cell_shape_pure_python`, :func:`~ase.build.make_supercell` .. toctree:: :maxdepth: 2 surface tools .. seealso:: * The :mod:`ase.lattice` module. The module contains functions for creating most common crystal structures with arbitrary orientation. The user can specify the desired Miller index along the three axes of the simulation, and the smallest periodic structure fulfilling this specification is created. Both bulk crystals and surfaces can be created. * The :mod:`ase.cluster` module. Useful for creating nanoparticles and clusters. * The :mod:`ase.spacegroup` module * The :mod:`ase.geometry` module Molecules ========= The G2-database of common molecules is available: .. autofunction:: molecule Example:: >>> from ase.build import molecule >>> atoms = molecule('H2O') The list of available molecules is those from the :data:`ase.collections.g2` database: >>> from ase.collections import g2 >>> g2.names ['PH3', 'P2', 'CH3CHO', 'H2COH', 'CS', 'OCHCHO', 'C3H9C', 'CH3COF', 'CH3CH2OCH3', 'HCOOH', 'HCCl3', 'HOCl', 'H2', 'SH2', 'C2H2', 'C4H4NH', 'CH3SCH3', 'SiH2_s3B1d', 'CH3SH', 'CH3CO', 'CO', 'ClF3', 'SiH4', 'C2H6CHOH', 'CH2NHCH2', 'isobutene', 'HCO', 'bicyclobutane', 'LiF', 'Si', 'C2H6', 'CN', 'ClNO', 'S', 'SiF4', 'H3CNH2', 'methylenecyclopropane', 'CH3CH2OH', 'F', 'NaCl', 'CH3Cl', 'CH3SiH3', 'AlF3', 'C2H3', 'ClF', 'PF3', 'PH2', 'CH3CN', 'cyclobutene', 'CH3ONO', 'SiH3', 'C3H6_D3h', 'CO2', 'NO', 'trans-butane', 'H2CCHCl', 'LiH', 'NH2', 'CH', 'CH2OCH2', 'C6H6', 'CH3CONH2', 'cyclobutane', 'H2CCHCN', 'butadiene', 'C', 'H2CO', 'CH3COOH', 'HCF3', 'CH3S', 'CS2', 'SiH2_s1A1d', 'C4H4S', 'N2H4', 'OH', 'CH3OCH3', 'C5H5N', 'H2O', 'HCl', 'CH2_s1A1d', 'CH3CH2SH', 'CH3NO2', 'Cl', 'Be', 'BCl3', 'C4H4O', 'Al', 'CH3O', 'CH3OH', 'C3H7Cl', 'isobutane', 'Na', 'CCl4', 'CH3CH2O', 'H2CCHF', 'C3H7', 'CH3', 'O3', 'P', 'C2H4', 'NCCN', 'S2', 'AlCl3', 'SiCl4', 'SiO', 'C3H4_D2d', 'H', 'COF2', '2-butyne', 'C2H5', 'BF3', 'N2O', 'F2O', 'SO2', 'H2CCl2', 'CF3CN', 'HCN', 'C2H6NH', 'OCS', 'B', 'ClO', 'C3H8', 'HF', 'O2', 'SO', 'NH', 'C2F4', 'NF3', 'CH2_s3B1d', 'CH3CH2Cl', 'CH3COCl', 'NH3', 'C3H9N', 'CF4', 'C3H6_Cs', 'Si2H6', 'HCOOCH3', 'O', 'CCH', 'N', 'Si2', 'C2H6SO', 'C5H8', 'H2CF2', 'Li2', 'CH2SCH2', 'C2Cl4', 'C3H4_C3v', 'CH3COCH3', 'F2', 'CH4', 'SH', 'H2CCO', 'CH3CH2NH2', 'Li', 'N2', 'Cl2', 'H2O2', 'Na2', 'BeH', 'C3H4_C2v', 'NO2'] plus ``Be2``, ``C7NH5``, ``BDA``, ``biphenyl`` and ``C60`` (for historical reasons). .. _bulk-crystal-section: Common bulk crystals ==================== .. autofunction:: bulk examples: >>> from ase.build import bulk >>> a1 = bulk('Cu', 'fcc', a=3.6) >>> a2 = bulk('Cu', 'fcc', a=3.6, orthorhombic=True) >>> a3 = bulk('Cu', 'fcc', a=3.6, cubic=True) >>> a1.cell array([[ 0. , 1.8, 1.8], [ 1.8, 0. , 1.8], [ 1.8, 1.8, 0. ]]) >>> a2.cell array([[ 2.546, 0. , 0. ], [ 0. , 2.546, 0. ], [ 0. , 0. , 3.6 ]]) >>> a3.cell array([[ 3.6, 0. , 0. ], [ 0. , 3.6, 0. ], [ 0. , 0. , 3.6]]) |a1| |a2| |a3| .. |a1| image:: a1.png .. |a2| image:: a2.png .. |a3| image:: a3.png .. _nanotubes-section: Nanotubes ========= .. autofunction:: nanotube examples: >>> from ase.build import nanotube >>> cnt1 = nanotube(6, 0, length=4) >>> cnt2 = nanotube(3, 3, length=6, bond=1.4, symbol='Si') |cnt1| |cnt2| .. |cnt1| image:: cnt1.png .. |cnt2| image:: cnt2.png .. _nanoribbons-section: Graphene nanoribbons ==================== .. autofunction:: graphene_nanoribbon examples: >>> from ase.build import graphene_nanoribbon >>> gnr1 = graphene_nanoribbon(3, 4, type='armchair', saturated=True) >>> gnr2 = graphene_nanoribbon(2, 6, type='zigzag', saturated=True, ... C_H=1.1, C_C=1.4, vacuum=6.0, ... magnetic=True, initial_mag=1.12) |gnr1| |gnr2| .. |gnr1| image:: gnr1.png .. |gnr2| image:: gnr2.png ASE contains a number of modules for setting up atomic structures, mainly molecules, bulk crystals and surfaces. Some of these modules have overlapping functionality, but strike a different balance between flexibility and ease-of-use. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/general_surface.py000066400000000000000000000023771316323560300261130ustar00rootroot00000000000000# creates: s1.png s2.png s3.png s4.png general_surface.pdf from ase.build import surface s1 = surface('Au', (2, 1, 1), 9) s1.center(vacuum=10, axis=2) from ase.build import bulk Mobulk = bulk('Mo', 'bcc', a=3.16, cubic=True) s2 = surface(Mobulk, (3, 2, 1), 9) s2.center(vacuum=10, axis=2) a = 4.0 from ase import Atoms Pt3Rh = Atoms('Pt3Rh', scaled_positions=[(0, 0, 0), (0.5, 0.5, 0), (0.5, 0, 0.5), (0, 0.5, 0.5)], cell=[a, a, a], pbc=True) s3 = surface(Pt3Rh, (2, 1, 1), 9) s3.center(vacuum=10, axis=2) Pt3Rh.set_chemical_symbols('PtRhPt2') s4 = surface(Pt3Rh, (2, 1, 1), 9) s4.center(vacuum=10, axis=2) from ase.io import write for atoms, name in [(s1, 's1'), (s2, 's2'), (s3, 's3'), (s4, 's4')]: write(name + '.pov', atoms, rotation='-90x', show_unit_cell=2, transparent=False, display=False, run_povray=True) import os for i in range(2): error = os.system('pdflatex -interaction=nonstopmode general_surface ' + '> /dev/null') assert error == 0, 'pdflatex failed' os.remove('general_surface.aux') os.remove('general_surface.log') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/general_surface.tex000066400000000000000000000614061316323560300262610ustar00rootroot00000000000000\documentclass[11pt]{article} % use larger type; default would be 10pt \usepackage[utf8]{inputenc} % set input encoding (not needed with XeLaTeX) \usepackage{graphicx} % support the \includegraphics command and options \usepackage{color} \usepackage{array} % for better arrays (eg matrices) in maths \usepackage{verbatim} % adds environment for commenting out blocks of text & fo \title{Theory and implementation behind: \\Universal surface creation - smallest unitcell} \author{Bjarke Brink Buus, Jakob Howalt \& Thomas Bligaard} \begin{document} \maketitle \section{Construction of surface slabs} The aim for this part of the project is to create all possible surfaces with a given Miller Indice and the conventional bulk structure. In this section, the theory behind the construction of surface slabs will be outlined and from this fundament an implementation has been developed in Python. This implementation, will be able to create any surface for any type of structure including following common bulk structures - the simple cubic unit cell, the body centered cubic unit cell, the face centered cubic unit cell and the hexagonal close packed unit cell. %TODO skal dette med: The theory and implementation, however, should work for any unit cell. %In this implementation, we will consider all three cases of bulk structures - the body centered cubic unit cell (bcc), the face centered cubic unit cell (ffc) and the hexagonal close packed unit cell (hcp). \subsection{Theory} By introducing both the real and the reciprocal lattice spaces most pieces of the puzzle of creating any surface is derived. In addition some integer mathmatics will be used. \subsubsection{Real lattice space} First, we will start by defining the system in real space. We have three basis vectors that span the crystal lattice in the conventional unit cell ($\vec{a}_1,\vec{a}_2,\vec{a}_3$). These three vectors do not have to be orthogonal and the procedure will therefore also work for hcp structures. Additionally, the lengths of the vectors will not in all cases be the same, so the theoretical approach to this problem, will involve three independent lengths. For most bulk structures there will only be one or two different lattice constants determining the unit cell due to symmetry, for instance the L10 and L12 alloys as mentioned in section XXX method XXX. The unit cell can be seen in drawing 1 with the lengths and directions. \setlength{\unitlength}{2.5cm} \begin{picture}(1,1)(-0.65,0.05) \thicklines \put(0.1,0.1){\line(0,1){0.7}} \put(0.1,0.1){\line(1,0){0.7}} \put(0.1,0.8){\line(1,0){0.7}} \put(0.8,0.1){\line(0,1){0.7}} \put(0.8,0.1){\line(4,1){0.4}} \put(0.1,0.8){\line(4,1){0.4}} \put(0.8,0.8){\line(4,1){0.4}} \put(0.5,0.9){\line(1,0){0.7}} \put(1.2,0.2){\line(0,1){0.7}} \put(2.45,0.4){\vector(0,1){0.3}} \put(2.45,0.4){\vector(1,0){0.3}} \put(2.45,0.4){\vector(-4,-1){0.2}} \put(2.4,0.75){$\vec{a}_3$} \put(2.1,0.32){$\vec{a}_1$} \put(2.8,0.35){$\vec{a}_2$} \thinlines \put(1.235,0.5){$a_3$} \put(0.45,0.0){$a_2$} \put(1.02,0.06){$a_1$} \put(0.5,0.2){\line(1,0){0.7}} \put(0.5,0.2){\line(0,1){0.7}} \put(0.1,0.1){\line(4,1){0.4}} \end{picture}\\ Drawing 1: \textit{This drawing shows the basis vectors and sizes for the system.}\\ A surface is defined by its Miller Indice (h,k,l), where $h$, $k$ and $l$ all are integers, which in real space can be described by the crystal planes that are parallel to the plane that intersects the basis vectors ($\vec{a}_1,\vec{a}_2,\vec{a}_3$) at \begin{eqnarray} \frac{1}{h}\vec{a}_1, \ \frac{1}{k}\vec{a}_2, \ \frac{1}{l}\vec{a}_3. \nonumber \end{eqnarray} The Miller Indices are used for all four types of structures sc, bcc, fcc and hcp. In case of one or more of the Miller Indice (h,k,l) is zero, the plane does not intersect with the corresponding axis. For instance, if k is equal to zero, the normal vector to the plane, defined by (h,0,l), will be orthogonal to $\vec{a}_2$. A (0,0,0) Miller Indice is unphysical and hence will not be included in the theory section, however a part of the implementation code will notify the user that the chosen surface is not possible to create. \\ %Normally, a plane can be defined as $b_1 x + b_2 y + b_3 z = d$. Here the normal vector will be ($b_1,b_2,b_3$) and $d$ will be a constant. If a point ($x_0,y_0,z_0$) in the plane is known, $d$ will equal to %\begin{eqnarray} %d = b_1 x_0 + b_2 y_0 + b_3 z_0 \nonumber %\end{eqnarray} \subsubsection{Reciprocal lattice space} For the full understanding of the lattice construction, it is very useful to introduce the reciprocal vector space. The basis vectors in the reciprocal lattice space are given by, \begin{eqnarray} \vec{b}_1 = \frac{\vec{a}_2 \times \vec{a}_3}{\vec{a}_1 \cdot (\vec{a}_2 \times \vec{a}_3)}, \ \vec{b}_2 = \frac{\vec{a}_3 \times \vec{a}_1}{\vec{a}_2 \cdot (\vec{a}_3 \times \vec{a}_1)}, \ \vec{b}_3 = \frac{\vec{a}_1 \times \vec{a}_2}{\vec{a}_3 \cdot (\vec{a}_1 \times \vec{a}_2)} \end{eqnarray} % The geometry of the three reciprocal lattice vectors is as follows, $\vec{b}_1$ is orthogonal with both $\vec{a}_2$ and $\vec{a}_3$, because of the cross product in the construction of $\vec{b}_1$. The same follows for the other reciprocal lattice vectors, $\vec{b}_2 \ \perp \ (\vec{a}_1, \ \vec{a}_3)$ and $\vec{b}_3 \ \perp \ (\vec{a}_1, \ \vec{a}_2)$. In a more compact form, this can be written as \begin{eqnarray} \vec{a}_i \cdot \vec{b}_j = \delta_{ij} \label{orthogonality} \end{eqnarray} When introducing the reciprocal lattice vectors, the normal vector for a given surface plane with the Miller Indices (hkl) is given by \begin{eqnarray} \vec{n} = h \vec{b}_1 + k \vec{b}_2 + l \vec{b}_3 \label{hklnormalvector} \end{eqnarray} \setlength{\unitlength}{4.4cm} \begin{picture}(2,1.2) \thicklines \put(0.04,0.04){\line(0,1){0.64}} \put(0.04,0.04){\line(1,0){0.765}} \put(0.805,0.04){\line(0,1){0.64}} \put(0.04,0.68){\line(1,0){0.765}} \put(0.04,0.36){\line(1,0){0.765}} \put(0.4225,0.04){\line(0,1){0.64}} \put(1.002,0.2){\line(0,1){0.64}} \put(0.24,0.84){\line(1,0){0.765}} \put(0.805,0.04){\line(5,4){0.195}} \put(0.805,0.68){\line(5,4){0.195}} \put(0.805,0.36){\line(5,4){0.195}} \put(0.04,0.68){\line(5,4){0.195}} \put(0.4225,0.68){\line(5,4){0.195}} \thinlines \put(0.24,0.52){\line(1,0){0.765}} \put(0.04,0.36){\line(5,4){0.2}} \put(0.4225,0.36){\line(5,4){0.2}} \put(0.4225,0.04){\line(5,4){0.2}} \put(0.24,0.2){\line(1,0){0.765}} \put(0.24,0.2){\line(0,1){0.64}} \put(0.04,0.04){\line(5,4){0.2}} \put(0.6175,0.20){\line(0,1){0.64}} \thicklines \color{red} \put(0.04,0.04){\line(1,4){0.2}} \put(0.24,0.84){\line(6,-5){0.762}} \put(0.04,0.04){\line(6,1){0.962}} \color{black} \put(0.085,0.535){$\vec{t}_3$} \put(0.70,0.07){$\vec{t}_1$} \put(0.55,0.6){$\vec{t}_2$} \thinlines \put(1.2,0.68){\line(1,0){0.765}} \put(1.002,0.52){\line(5,4){0.2}} \put(1.3845,0.52){\line(5,4){0.2}} \put(1.3845,0.2){\line(5,4){0.2}} \put(1.202,0.36){\line(1,0){0.765}} \put(1.2,0.36){\line(0,1){0.64}} \put(1.002,0.2){\line(5,4){0.2}} \put(1.5852,0.360){\line(0,1){0.64}} \thicklines \color{red} \thinlines \put(0.24,0.84){\line(6,1){0.962}} \put(1.002,0.2){\line(1,4){0.2}} \put(1.202,1){\line(6,-5){0.762}} \put(1.002,0.2){\line(6,1){0.962}} \color{black} \thicklines \thinlines \put(0.44,0.68){\line(1,0){0.765}} \put(0.24,0.52){\line(5,4){0.195}} \put(0.6225,0.52){\line(5,4){0.195}} \put(0.6225,0.2){\line(5,4){0.195}} \put(0.44,0.36){\line(1,0){0.765}} \put(0.44,0.36){\line(0,1){0.64}} \put(0.24,0.2){\line(5,4){0.195}} \put(0.8175,0.36){\line(0,1){0.64}} \thicklines \put(0.04,0.04){\line(0,1){0.64}} \put(0.04,0.04){\line(1,0){0.765}} \put(0.805,0.04){\line(0,1){0.64}} \put(0.04,0.68){\line(1,0){0.765}} \put(1.002,0.2){\line(1,0){0.765}} \put(1.765,0.2){\line(0,1){0.64}} \put(1.002,0.84){\line(1,0){0.765}} \put(1.002,0.52){\line(1,0){0.765}} \put(1.3845,0.2){\line(0,1){0.64}} \put(1.964,0.36){\line(0,1){0.64}} \put(1.2,1.0){\line(1,0){0.765}} \put(1.765,0.2){\line(5,4){0.195}} \put(1.765,0.84){\line(5,4){0.195}} \put(1.765,0.52){\line(5,4){0.195}} \put(1.002,0.84){\line(5,4){0.195}} \put(1.3845,0.84){\line(5,4){0.195}} \put(0.04,0.36){\line(1,0){0.765}} \put(0.4225,0.04){\line(0,1){0.64}} \put(1.002,0.2){\line(0,1){0.64}} \put(0.44,1){\line(1,0){0.765}} \put(0.805,0.04){\line(5,4){0.195}} \put(0.805,0.68){\line(5,4){0.195}} \put(0.805,0.36){\line(5,4){0.195}} \put(0.24,0.84){\line(5,4){0.195}} \put(0.6225,0.84){\line(5,4){0.195}} \put(2.3,0.4){\vector(0,1){0.3}} \put(2.3,0.4){\vector(1,0){0.3}} \put(2.3,0.4){\line(-5,-4){0.15}} \put(2.155,0.2847){\vector(-1,-1){0.025}} \put(2.25,0.75){$\vec{a}_3$} \put(2.05,0.26){$\vec{a}_1$} \put(2.63,0.35){$\vec{a}_2$} \label{unik} \end{picture} \setlength{\unitlength}{4cm} \begin{picture}(2,1.2)(-0.65,0.05) \put(1.5,0.4){\vector(0,1){0.3}} \put(1.5,0.4){\vector(1,0){0.3}} \put(1.5,0.4){\line(-5,-4){0.15}} \put(1.355,0.2847){\vector(-1,-1){0.025}} \put(1.45,0.75){$\vec{a}_3$} \put(1.2,0.32){$\vec{a}_1$} \put(1.9,0.35){$\vec{a}_2$} \end{picture} Drawing 2: \textit{This drawing shows a surface with Miller Indices (2,1,1). The repetition of a lattice point is shown, and the vectors spanning this surface can be found. }\\ Furthermore, a desired surface with a normal vector $\vec{n}$, drawing 2 shows that for a set of non-zero Miller indices, three vectors, will be noted $\vec{t}_{1,2,3}$, in the plane can easily be found. Two vectors, linearly independent ofcourse, created by a linear combination of the vectors $\vec{t}_{1,2,3}$, can span the desired surface. These vectors are given by \begin{eqnarray} \vec{t}_1 = -\frac{1}{h}\vec{a}_1+\frac{1}{k}\vec{a}_2 ,\vec{t}_2 = \frac{1}{k}\vec{a}_2 - \frac{1}{l}\vec{a}_3, \vec{t}_3 = \frac{1}{h}\vec{a}_1 - \frac{1}{l}\vec{a}_3 \nonumber \end{eqnarray} but it should be noted that the anti-parallel versions of $\vec{t}_{1,2,3}$ also can be used. Since $h$, $k$ and $l$ all are integers, we can multiply with the product $hkl$ and divide with the indice, which will be common for each of the lattice vectors, $\vec{a}_i$, with respect to both of the lattice vectors $\vec{a}_i$, so a new set of vectors end up being, \begin{eqnarray} \vec{t}_1 = k\vec{a}_1-h\vec{a}_2 ,\ \vec{t}_2 = l\vec{a}_1 - h\vec{a}_3, \ \vec{t}_3 = l\vec{a}_2 - k\vec{a}_3 \end{eqnarray} For the special cases of two of the Miller Indices being zero, it is a very straightforward, to see that the appropriate vectors to span the normal vector, will be the corresponding basis vectors in real space. If for instance, h and k both are zero, it will result in a choice of $\vec{v}_1$ $=$ $\vec{a}_1$ and $\vec{v}_2$ $=$ $\vec{a}_2$. \subsubsection{Determination of the two surface vectors} Having introduced the real space and the reciprocal space, most of the theory is available and hence the determination of the two vectors that span the surface with respect to a given Miller Indice is possible. The simple lattice points $r_{i,j,m}$ are placed at $\vec{r}_{i,j,m} = i\vec{a}_1+j\vec{a}_2+k\vec{a}_3$ where $\ i,j,m$ all are integers. Because of the arrangement of the lattice points, not all surface planes will go through these points. The dot product between the normal vector $\vec{n}$ and the lattice points $\vec{r}_{i,j,m}$ gives, \begin{eqnarray} hi+kj+lm = d \nonumber \end{eqnarray} and since all constants are integers, $d$ must also be an integer and therefore the values of $d$ has been quantized. This equation is a 'Linear Diophantine Equation' and the smallest $d$ for which there exist an non-zero solution ($i,j,m$) when ($h,k,l$) are non-zero is, accordingly to 'Bezouts Identity', when $d$ is the smallest common divisor of $h$, $k$, and $l$. If one or two of the Miller Indices is zero, the identity is true, but only when choosing the largest common divisor for the non-zero parts of ($h,k,l$). If a Miller indice has a common divisor $e >$ 1, the non-zero components of the Miller Indice can then be reduced with $\frac{1}{e}(h,k,l)$, and still define the same surface. \\ A solution will therefore exist for \begin{eqnarray} hi+kj+lm = d \end{eqnarray} and because of the reduction of the normal vector, the value for $d$ will be $\pm$1. The two surface vectors, must obey the fact that they are orthogonal with respect to the normal vector $\vec{n}$, \begin{eqnarray} \vec{v}_{1,2} \cdot \vec{n} = 0. \label{skalarnul} \end{eqnarray} Because of this, the cross product between the two surface vectors $\vec{v}_1$ and $\vec{v}_2$ must give a constant times the normal vector $\vec{n}$. The constant must be as small as possible, still non zero, because the area spanned by $\vec{v}_1$ and $\vec{v}_2$ is equal to the length of the cross product. And since the new normal vector is the smallest possible, the constant must be $\pm 1$. \\ Consider a choice of the two surface vectors, $\vec{t}_1$ and $\vec{t}_3$. They will both fullfil equation \ref{skalarnul}, however the crossproduct between $\vec{t}_1$ and $\vec{t}_3$ will be, \begin{eqnarray} \vec{t}_1 \times \vec{t}_3 = \left( \begin{array}{c} k \\ - h \\ 0 \end{array} \right) \times \left( \begin{array}{c} 0 \\ l \\ -k \end{array} \right) = \left( \begin{array}{c} kh \\ k^2 \\ kl \end{array} \right) = k \left( \begin{array}{c} h \\ k \\ l \end{array} \right).\nonumber \end{eqnarray} Unless the size of $k$ is $\pm 1$, the size of the surface area spanned by $\vec{t}_1$ and $\vec{t}_3$ will be too big. It is therefore crucial to introduce a completely new linear combination of the three vectors $\vec{t}_1$, $\vec{t}_2$ and $\vec{t}_3$. A linear combination of $\vec{t}_1$ and $\vec{t}_2$ fulfill the same requirements when $p$ and $q$ are integers in %new way of combining these vectors is presented and it is also shown that this combination fullfil the previous requirements. \begin{eqnarray} \left( p \left( \begin{array}{c} k \\ -h \\ 0 \end{array} \right) + q \left( \begin{array}{c} l \\ 0 \\ -h \end{array} \right) \right) \times \left( \begin{array}{c} 0 \\ l \\ -k \end{array} \right) \Rightarrow (pk + ql) \left( \begin{array}{c} h \\ k \\ l \end{array} \right) = \left( \begin{array}{c} h \\ k \\ l \end{array} \right) \label{hkldependency} \end{eqnarray} This leaves a more simple equation to solve, \begin{eqnarray} (pk + ql) = 1 \label{EquationFromTheory} \end{eqnarray} The solution to this equation can be found using the Extended Euclidean Algorithm to determine the unknowns integers, $p$ and $q$. The two new vectors, which span the surface are described \begin{eqnarray} \vec{v}_1 = p \left( \begin{array}{c} k\vec{a}_1 \\ - h \vec{a}_2 \\ 0 \end{array} \right) + q \left( \begin{array}{c} l \vec{a}_1 \\ 0 \\ - h \vec{a}_3 \end{array} \right), \ \vec{v}_2 = \left( \begin{array}{c} 0 \\ l\vec{a}_2 \\ -k\vec{a}_3 \end{array} \right) \label{v2formalism} \end{eqnarray} However, there are infinite possible solutions for $p$ and $q$ but some of the solutions are better than others, in relation to visualizing the surface. Therefore another criteria is implemented. The closer to being orthogonal the surface vectors are, the easier it becomes to apply adsorbates onto the the surface. The procedure for this will be explained in section \ref{implementation}, but the theory will be explained here. The solution for $p$ and $q$ can be chosen to accommodate this with respect to an integer, $c$, by \begin{eqnarray} \vec{v}_1 = (p+cl)\left( \begin{array}{c} k\vec{a}_1 \\ - h \vec{a}_2 \\ 0 \end{array} \right) + (q-ck)\left( \begin{array}{c} l \vec{a}_1 \\ 0 \\ - h \vec{a}_3 \end{array} \right) \label{v1formalism} \end{eqnarray} This change of vector $\vec{v}_1$, does not change the crossproduct between $\vec{v}_1$ and $\vec{v}_2$, as shown in equation \ref{hkldependency}, because the cross product between the changes and $\vec{v}_2$ is zero. This is shown below \begin{eqnarray} \left(cl \left( \begin{array}{c} k\vec{a}_1 \\ - h \vec{a}_2 \\ 0 \end{array} \right) - ck\left( \begin{array}{c} l \vec{a}_1 \\ 0 \\ - h \vec{a}_3 \end{array} \right) \right) \times \left( \begin{array}{c} 0 \\ l\vec{a}_2 \\ -k\vec{a}_3 \end{array} \right) & = & \nonumber \\ \left( ckl \left( \begin{array}{c} h \\ k \\ l \end{array} \right) - ckl\left( \begin{array}{c} h \\ k \\ l \end{array} \right) \right) & = & 0 \end{eqnarray} This change of $\vec{v}_1$ results in an algorithm, which will be presented later, to determine the most appropriate choice of vectors. \subsubsection{Finding the 3$^{rd}$ vector for the new unit cell} After determining the two vectors spanning the surface ($\vec{v}_1,\vec{v}_2$), the third basis vector($\vec{v}_3$) of the surface slab can be found. This vector does not need to be orthogonal to the two surface vectors. The vector will go from one lattice point to its repeated lattice point another place in the structure. This means that the same contraints apply to this vector as for $\vec{v}_1$ and $\vec{v}_2$, but some additional constraints will be added. The vector will have to be an integer linear combination of the three original lattice vectors ($\vec{a}_1, \vec{a}_2, \vec{a}_3$) and have the coordinates ($i_3\vec{a}_1,j_3\vec{a}_2,m_3\vec{a}_3$). In addition $\vec{v}_3$ cannot be orthogonal to the surface normal, so $\vec{v}_3\cdot\vec{n}\neq 0$. \\ To find the integers $i_3, j_3$ and $m_3$ by calculating the dot product using normalvector of the surface from equation \ref{hklnormalvector}, and the definitions of the reciprocal vectors ($\vec{b}_1,\vec{b}_2,\vec{b}_3$): \begin{eqnarray} \vec{n} \cdot \vec{v}_3 & = (h \vec{b}_1 + k \vec{b}_2 + l \vec{b}_3 ) \cdot (i_3\vec{a}_1 + j_3\vec{a}_2 + m_3\vec{a}_3) \nonumber \\ & = hi_3+kj_3+lm_3 = d \label{vdotn}, \end{eqnarray} where d must be a non-zero integer because all of $h,k,l,i_3,j_3$ and $m_3$ are integers. It will now be shown that $d = 1$.\\ Defining the volume of the conventional unit cell to be V spanned by the conventional basis $\vec{a}_1, \vec{a}_2$ and $\vec{a}_3$. \begin{eqnarray} V = (\vec{a}_1 \times \vec{a}_2) \cdot \vec{a}_3 \end{eqnarray} and rewriting of the three reciprocal vectors to the following form \begin{eqnarray} V\vec{b}_1 = \vec{a}_2 \times \vec{a}_3, \ V\vec{b}_2 = \vec{a}_3 \times \vec{a}_1, \ V\vec{b}_3 = \vec{a}_1 \times \vec{a}_2. \end{eqnarray} will ease the calculations, and with all the pieces set, a determination of the value of $d$ is possible. The volume of the cell spanned by ($\vec{v}_1,\vec{v}_2,\vec{v}_3$) is presented below, where the constants ($i$,$j$,$m$)$_{1,2}$ refer to the constants defined by the formalism used for $\vec{v}_1$, equation \ref{v1formalism}, and for $\vec{v}_2$, equation \ref{v2formalism}. \begin{eqnarray} V = & \vec{v}_3 \cdot (\vec{v}_1 \times \vec{v}_2) = \vec{v}_3 \cdot \left\lbrace ( i_1\vec{a}_1+j_1\vec{a}_2+m_1\vec{a}_3) \times ( i_2\vec{a}_1+j_2\vec{a}_2+m_2\vec{a}_3) \right\rbrace \nonumber \\ = & \vec{v}_3 \cdot \left\lbrace i_1 j_2 \vec{a}_1 \times \vec{a}_2 + i_1 m_2 \vec{a}_1 \times \vec{a}_3 + j_1 i_2 \vec{a}_2 \times \vec{a}_1 + j_1 m_2 \vec{a}_2 \times \vec{a}_3 \right\rbrace \nonumber \\ & + \vec{v}_3 \cdot \left\lbrace m_1 i_2 \vec{a}_3 \times \vec{a}_1 + m_1 j_2 \vec{a}_3 \times \vec{a}_2 \right\rbrace \nonumber \\ = & V\vec{v}_3 \cdot \left\lbrace i_1 j_2 \vec{b}_3 - i_1 m_2 \vec{b}_2 - j_1 i_2 \vec{b}_3 + j_1 m_2 \vec{b}_1 + m_1 i_2 \vec{b}_2 - m_1 j_2 \vec{b}_1 \right\rbrace \nonumber \\ = & V \vec{v}_3 \cdot \left\lbrace \left(\begin{array}{c} i_1 \\ j_1 \\ m_1 \end{array}\right) \times \left(\begin{array}{c} i_2 \\ j_2 \\ m_2 \end{array}\right) \right\rbrace \cdot \left(\begin{array}{c} \vec{b}_1 \\ \vec{b}_2 \\ \vec{b}_3 \end{array} \right) \end{eqnarray} The cross product between ($i_1, j_1, m_1$) and ($i_2, j_2, m_2$) has been found previously in equation \ref{hkldependency} using the Extended Euclidian Algorithm as ($h,k,l$). Inserting this into the equation \begin{eqnarray} V = V \vec{v}_3 \cdot (h\vec{b}_1+k\vec{b}_2+l\vec{b}_3) = Vd. \end{eqnarray} $d$ is therefore equal to 1. The knowledge of $d$ in equation \ref{vdotn} leads to a new equation to solve, to determine the third vector $\vec{v}_3$. \begin{eqnarray} \vec{n} \cdot \vec{v}_3 & = (h \vec{b}_1 + k \vec{b}_2 + l \vec{b}_3 ) \cdot (i_3\vec{a}_1,j_3\vec{a}_2,m_3\vec{a}_3) \nonumber \\ & = hi_3+kj_3+lm_3 = 1 \label{eq:ext_gcd} \end{eqnarray} This equation can be solved using the Extended Euclidean Algorithm for three variables and therefore the third vector $\vec{v}_3$ is determined. With these three vectors, ($\vec{v}_1, \vec{v}_2, \vec{v}_3$), a basis for the new unit cell is created. The implementation of this will be described in the following section, along with some ways to get around the numerical issues in Python. \subsection{Implementation in Python}\label{implementation} Based on the theory derived above an arbitrary surface can be created using the procedure found on the DTU niflheim cluster. To create a surface using the procedure described in this section a conventional bulk cell of the surface material is needed along with the Miller indices and the depth of the slab. \\ The implementation in Python using ASE to setup the atoms consists of three parts. First, a new basis is derived from the Miller indices with two of the basis vectors lying in the surface plane. Secondly, the atoms in the conventional bulk cell are expressed in the terms of the new basis in a slab with the selected depth. Finally, the unit cell of the slab is modified so the third cell vector points perpendicular to the surface and all atoms are moved into the unit cell. \subsubsection{Surface basis}\begin{small} \end{small} For any surface type described by a Miller indice $(h,k,l)$ the surface basis $(\vec{v}_1,\vec{v}_2,\vec{v}_3)$ is found relative to the conventional bulk unit cell. $\vec{v}_1$ and $\vec{v}_2$ are chosen to be in the surface plane.\\ In the special case where only one of the Miller indices is non-zero $\vec{v}_1$ and $\vec{v}_2$ are simply the unit vectors in the directions where the Miller indices are zero, respectively and $\vec{v}_3$ is the direction where the Miller indice is non-zero.\\\\ For all other situations $\vec{v}_1$ and $\vec{v}_2$ are found by solving the linear equation \ref{EquationFromTheory} using the Extended Euclidean Algorithm - in the script defined as \verb#ext_gcd()#. This yields an infinite set of solutions all of which can be used. However, the optimal structure is found when the angle between the two base vectors are as close to $90^o$ as possible, as the structure will be as compact as possible and specific sites are easier to identify. This solution is found by minimizing the scalar product of the two base vectors by $c \in \textbf{Z}$. \begin{eqnarray} \left|\left(\left(p+cl\right)\left(\begin{array}{c} k\vec{a}_1 \\ -h\vec{a}_2\\0\end{array}\right) +\left(q-ck\right)\left(\begin{array}{c} l\vec{a}_1 \\ 0\\-h\vec{a}_3\end{array}\right)\right) \cdot\left(\begin{array}{c} 0 \\ l\vec{a}_2\\-k\vec{a}_3\end{array}\right)\right|_{min(c)} \nonumber \end{eqnarray} This can be expressed as $\left| k_1+ck_2 \right|_{min(c)}$ and the solution is found when $c$ is equal to the fraction $-\frac{k_1}{k_2}$ rounded to the nearest integer. Because of numerical errors a tolerance is used. In python this is expressed as follows. \begin{verbatim} p,q = ext_gcd(k,l) k1 = dot( p*(k*a1-h*a2)+q*(l*a1-h*a3) , l*a2-k*a3) k2 = dot( l*(k*a1-h*a2)-k*(l*a1-h*a3) , l*a2-k*a3) if abs(k2)>tol: c = -int(round(k1/k2)) p,q = p+c*l, q-c*k v1 = p*array((k,-h,0))+q*array((l,0,-h)) v2 = reduce(array((0,l,-k))) a,b = ext_gcd(p*k+q*l,h) v3 = array((b,a*p,a*q)) \end{verbatim} The last four lines define the base vectors for the surface using the Extended Euclidean Algorithm for two variables to find $\vec{v}_1$ and $\vec{v}_2$ and three variables to find $\vec{v}_3$. \subsubsection{Atom positions} When the basis have been found the atoms in the conventional cell are base-changed to the new basis using \begin{verbatim} for i in range(len(bulk)): newpos = linalg.solve(basis.T,bulk.get_scaled_positions()[i]) scaled += [newpos-floor(newpos+tol)] \end{verbatim} and then moved so the scaled positions in the new basis are within the box spanned by the basis. The tolerance is needed so atoms positioned exactly on the boundary are treated consistently despite numerical errors. The cell in the new basis is then repeated in the $\vec{v}_3$ direction to create the required slap depth. \\ For many applications it is useful to have the $z$-direction pointing perpendicular to the surface to enable electrostatic decoupling and to make vacuum height and adsorbate distance well defined. The next step in the procedure is therefore to align the $z$-direction with the cross product of $\vec{v}_1$ and $\vec{v}_2$ with a length so the cell volume is preserved. The final step before the slab is created is then to move the atoms so the scaled coordinates are between 0 and 1 in the $\vec{v}_1$ and $\vec{v}_2$ directions making it obvious how the atoms are located relative to each other when the structure is visualized. \end{document} ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/structure.py000066400000000000000000000024611316323560300250200ustar00rootroot00000000000000# creates: a1.png a2.png a3.png cnt1.png cnt2.png gnr1.png gnr2.png from ase.io import write from ase.build import bulk from ase.build import nanotube, graphene_nanoribbon import numpy as np for i, a in enumerate( [bulk('Cu', 'fcc', a=3.6), bulk('Cu', 'fcc', a=3.6, orthorhombic=True), bulk('Cu', 'fcc', a=3.6, cubic=True)]): write('a%d.pov' % (i + 1), a, show_unit_cell=2, display=False, run_povray=True) cnt1 = nanotube(6, 0, length=4, vacuum=2.5) cnt1.rotate('x', 'z', rotate_cell=True) cnt2 = nanotube(3, 3, length=6, bond=1.4, symbol='Si', vacuum=2.5) cnt2.rotate('x', 'z', rotate_cell=True) for i, a in enumerate([cnt1, cnt2]): write('cnt%d.pov' % (i + 1), a, show_unit_cell=2, display=False, run_povray=True) ind = [2, 0, 1] gnr1 = graphene_nanoribbon(3, 4, type='armchair', saturated=True, vacuum=2.5) gnr1.set_cell(np.diag(gnr1.cell)[ind]) gnr1.positions = gnr1.positions[:, ind] gnr2 = graphene_nanoribbon(2, 6, type='zigzag', saturated=True, C_H=1.1, C_C=1.4, vacuum=3.0, magnetic=True, initial_mag=1.12) gnr2.set_cell(np.diag(gnr2.cell)[ind]) gnr2.positions = gnr2.positions[:, ind] for i, a in enumerate([gnr1, gnr2]): write('gnr%d.pov' % (i + 1), a, show_unit_cell=2, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/surface.py000066400000000000000000000037241316323560300244130ustar00rootroot00000000000000# creates: fcc100.png, fcc110.png, bcc100.png, fcc111.png, bcc110.png # creates: bcc111.png, hcp0001.png, fcc111o.png, fcc211o.png, bcc110o.png # creates: bcc111o.png, hcp0001o.png, ontop-site.png, hollow-site.png # creates: fcc-site.png, hcp-site.png, bridge-site.png, diamond100.png # creates: diamond111.png, hcp10m10.png, mx2.png, fcc111_root.png from ase import Atoms from ase.io import write from ase.build import fcc111 from ase.build import root_surface import ase.build as surface surfaces = ['fcc100', 'fcc110', 'bcc100', 'hcp10m10', 'diamond100', 'fcc111', 'bcc110', 'bcc111', 'hcp0001', 'diamond111', 'fcc211', 'mx2'] symbols = {'fcc': 'Cu', 'bcc': 'Fe', 'hcp': 'Ru', 'dia': 'C', 'mx2': 'MoS2'} radii = {'fcc': 1.1, 'bcc': 1.06, 'hcp': 1.08, 'dia': 0.5, 'mx2': 1.0} adsorbates = {'ontop': 'H', 'hollow': 'O', 'fcc': 'N', 'hcp': 'C', 'bridge': 'F'} def save(name, slab): print('save %s' % name) write(name + '.png', slab, show_unit_cell=2, radii=radii[name[:3]], scale=10) for name in surfaces: f = getattr(surface, name) for kwargs in [{}, {'orthogonal': False}, {'orthogonal': True}]: print(name, kwargs) try: slab = f(symbols[name[:3]], size=(3, 4, 5), vacuum=4, **kwargs) except (TypeError, NotImplementedError): continue try: for site in slab.info['adsorbate_info']['sites']: if site.endswith('bridge'): h = 1.5 else: h = 1.2 surface.add_adsorbate(slab, adsorbates.get(site, 'F'), h, site) except KeyError: pass if kwargs.get('orthogonal', None): name += 'o' save(name, slab) for site, symbol in adsorbates.items(): write('%s-site.png' % site, Atoms(symbol), radii=1.08, scale=10) fcc111_primitive = fcc111('Ag', (1, 1, 3)) fcc111_root = root_surface(fcc111_primitive, 27) save('fcc111_root', fcc111_root) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/surface.rst000066400000000000000000000175731316323560300246020ustar00rootroot00000000000000======== Surfaces ======== .. currentmodule:: ase.build .. _surfaces: Common surfaces =============== A number of utility functions are provided to set up the most common surfaces, to add vacuum layers, and to add adsorbates to a surface. In general, all surfaces can be set up with the modules described in the section :ref:`general-crystal-section`, but these utility functions make common tasks easier. Example ------- To setup an Al(111) surface with a hydrogen atom adsorbed in an on-top position:: from ase.build import fcc111 slab = fcc111('Al', size=(2,2,3), vacuum=10.0) This will produce a slab 2x2x3 times the minimal possible size, with a (111) surface in the z direction. A 10 Ã… vacuum layer is added on each side. To set up the same surface with with a hydrogen atom adsorbed in an on-top position 1.5 Ã… above the top layer:: from ase.build import fcc111, add_adsorbate slab = fcc111('Al', size=(2,2,3)) add_adsorbate(slab, 'H', 1.5, 'ontop') slab.center(vacuum=10.0, axis=2) Note that in this case it is probably not meaningful to use the vacuum keyword to fcc111, as we want to leave 10 Ã… of vacuum *after* the adsorbate has been added. Instead, the :meth:`~ase.Atoms.center` method of the :class:`~ase.Atoms` is used to add the vacuum and center the system. The atoms in the slab will have tags set to the layer number: First layer atoms will have tag=1, second layer atoms will have tag=2, and so on. Adsorbates get tag=0: >>> print(atoms.get_tags()) [3 3 3 3 2 2 2 2 1 1 1 1 0] This can be useful for setting up :mod:`ase.constraints` (see :ref:`diffusion tutorial`). Utility functions for setting up surfaces ----------------------------------------- All the functions setting up surfaces take the same arguments. *symbol*: The chemical symbol of the element to use. *size*: A tuple giving the system size in units of the minimal unit cell. *a*: (optional) The lattice constant. If specified, it overrides the expermental lattice constant of the element. Must be specified if setting up a crystal structure different from the one found in nature. *c*: (optional) Extra HCP lattice constant. If specified, it overrides the expermental lattice constant of the element. Can be specified if setting up a crystal structure different from the one found in nature and an ideal `c/a` ratio is not wanted (`c/a=(8/3)^{1/2}`). *vacuum*: The thickness of the vacuum layer. The specified amount of vacuum appears on both sides of the slab. Default value is None, meaning not to add any vacuum. In that case the third axis perpendicular to the surface will be undefined (``[0, 0, 0]``). Some calculators can work with undefined axes as long as the :attr:`~ase.Atoms.pbc` flag is set to ``False`` along that direction. *orthogonal*: (optional, not supported by all functions). If specified and true, forces the creation of a unit cell with orthogonal basis vectors. If the default is such a unit cell, this argument is not supported. Each function defines a number of standard adsorption sites that can later be used when adding an adsorbate with :func:`ase.build.add_adsorbate`. The following functions are provided ```````````````````````````````````` .. autofunction:: fcc100 .. autofunction:: fcc110 .. autofunction:: bcc100 .. autofunction:: hcp10m10 .. autofunction:: diamond100 These always give orthorhombic cells: ========== ============ fcc100 |fcc100| fcc110 |fcc110| bcc100 |bcc100| hcp10m10 |hcp10m10| diamond100 |diamond100| ========== ============ .. autofunction:: fcc111 .. autofunction:: fcc211 .. autofunction:: bcc110 .. autofunction:: bcc111 .. autofunction:: hcp0001 .. autofunction:: diamond111 These can give both non-orthorhombic and orthorhombic cells: =========== =============== =============== fcc111 |fcc111| |fcc111o| fcc211 not implemented |fcc211o| bcc110 |bcc110| |bcc110o| bcc111 |bcc111| |bcc111o| hcp0001 |hcp0001| |hcp0001o| diamond111 |diamond111| not implemented =========== =============== =============== The adsorption sites are marked with: ======= ======== ===== ===== ======== =========== ========== ontop hollow fcc hcp bridge shortbridge longbridge |ontop| |hollow| |fcc| |hcp| |bridge| |bridge| |bridge| ======= ======== ===== ===== ======== =========== ========== .. |ontop| image:: ontop-site.png .. |hollow| image:: hollow-site.png .. |fcc| image:: fcc-site.png .. |hcp| image:: hcp-site.png .. |bridge| image:: bridge-site.png .. |fcc100| image:: fcc100.png .. |fcc110| image:: fcc110.png .. |bcc100| image:: bcc100.png .. |fcc111| image:: fcc111.png .. |bcc110| image:: bcc110.png .. |bcc111| image:: bcc111.png .. |hcp0001| image:: hcp0001.png .. |fcc111o| image:: fcc111o.png .. |fcc211o| image:: fcc211o.png .. |bcc110o| image:: bcc110o.png .. |bcc111o| image:: bcc111o.png .. |hcp0001o| image:: hcp0001o.png .. |hcp10m10| image:: hcp10m10.png .. |diamond100| image:: diamond100.png .. |diamond111| image:: diamond111.png This can be used for :mol:`MX_2` 2D structures such as :mol:`MoS_2`: .. autofunction:: mx2 .. image:: mx2.png Create root cuts of surfaces ```````````````````````````` To create some more complicated cuts of a standard surface, a root cell generator has been created. While it can be used for arbitrary cells, some more common functions have been provided. .. autofunction:: fcc111_root .. autofunction:: hcp0001_root .. autofunction:: bcc111_root If you need to make a root cell for a different cell type, you can simply supply a primitive cell of the correct height. This primitive cell can be any 2D surface whose normal points along the Z axis. The cell's contents can also vary, such as in the creation of an alloy or deformation. .. autofunction:: ase.build.root_surface The difficulty with using these functions is the requirement to know the valid roots in advance, but a function has also been supplied to help with this. It is helpful to note that any primitive cell with the same cell shape, such as the case with the fcc111 and bcc111 functions, will have the same valid roots. .. autofunction:: ase.build.root_surface_analysis An example of using your own primitive cell:: from ase.build import fcc111, root_surface atoms = fcc111('Ag', (1, 1, 3)) atoms = root_surface(atoms, 27) .. image:: fcc111_root.png Adding adsorbates ----------------- After a slab has been created, a vacuum layer can be added. It is also possible to add one or more adsorbates. .. autofunction:: ase.build.add_adsorbate .. autofunction:: ase.build.add_vacuum .. _general-surface-section: Create specific non-common surfaces =================================== In addition to the most normal surfaces, a function has been constructed to create more uncommon surfaces that one could be interested in. It is constructed upon the Miller Indices defining the surface and can be used for both fcc, bcc and hcp structures. The theory behind the implementation can be found here: :download:`general_surface.pdf`. .. autofunction:: ase.build.surface Example ------- To setup a Au(211) surface with 9 layers and 10 Ã… of vacuum: .. literalinclude:: general_surface.py :lines: 2-4 This is the easy way, where you use the experimental lattice constant for gold bulk structure. You can write:: from ase.visualize import view view(s1) or simply ``s1.edit()`` if you want to see and rotate the structure. .. image:: s1.png Next example is a molybdenum bcc(321) surface where we decide what lattice constant to use: .. literalinclude:: general_surface.py :lines: 6-9 .. image:: s2.png As the last example, creation of alloy surfaces is also very easily carried out with this module. In this example, two :mol:`Pt_3Rh` fcc(211) surfaces will be created: .. literalinclude:: general_surface.py :lines: 11-25 |s3| |s4| .. |s3| image:: s3.png .. |s4| image:: s4.png ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/build/tools.rst000066400000000000000000000011101316323560300242660ustar00rootroot00000000000000========================= Tools for building things ========================= .. autofunction:: ase.build.cut .. autofunction:: ase.build.stack .. autofunction:: ase.build.sort .. autofunction:: ase.build.rotate .. autofunction:: ase.build.niggli_reduce .. autofunction:: ase.build.minimize_tilt .. autofunction:: ase.build.minimize_rotation_and_translation .. autofunction:: ase.build.find_optimal_cell_shape .. autofunction:: ase.build.find_optimal_cell_shape_pure_python .. autofunction:: ase.build.get_deviation_from_optimal_cell_shape .. autofunction:: ase.build.make_supercell ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/000077500000000000000000000000001316323560300236205ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/FHI-aims.rst000066400000000000000000000071771316323560300257230ustar00rootroot00000000000000.. module:: ase.calculators.aims ======== FHI-aims ======== Introduction ============ FHI-aims_ is a all-electron full-potential density functional theory code using a numeric local orbital basis set. .. _FHI-aims: http://www.fhi-berlin.mpg.de/aims/ Running the Calculator ====================== The default initialization command for the FHI-aims calculator is .. autoclass:: Aims In order to run a calculation, you have to ensure that at least the following ``str`` variables are specified, either in the initialization or as shell environment variables: =============== ==================================================== keyword description =============== ==================================================== ``run_command`` The full command required to run FHI-aims from a shell, including anything to do with an MPI wrapper script and the number of tasks, e.g.: ``mpiexec aims.081213.scalapack.mpi.x > aims.out``. An alternative way to set this command is via the ``ASE_AIMS_COMMAND`` environment variable. ``species_dir`` Directory where the species are located, e.g.: ``/opt/fhi-aims-081213/species_defaults/light``. Can also be specified with the ``AIMS_SPECIES_DIR`` environment variable. ``xc`` which exchange-correlation functional is used. =============== ==================================================== List of keywords ================ This is a non-exclusive list of keywords for the ``control.in`` file that can be addresses from within ASE. The meaning for these keywords is exactly the same as in FHI-aims, please refer to its manual for help on their use. One thing that should be mentioned is that keywords with more than one option have been implemented as tuples/lists, eg. ``k_grid=(12,12,12)`` or ``relativistic=('atomic_zora','scalar')``. In those cases, specifying a single string containing all the options is also possible. None of the keywords have any default within ASE, but do check the defaults set by FHI-aims. Example keywords describing the computational method used: ============================ ====== keyword type ============================ ====== ``xc`` str ``charge`` float ``spin`` str ``relativistic`` list ``use_dipole_correction`` bool ``vdw_correction_hirshfeld`` str ``k_grid`` list ============================ ====== .. note:: Any argument can be changed after the initial construction of the calculator, simply by setting it with the method >>> calc.set(keyword=value) Volumetric Data Output ====================== The class .. autoclass:: AimsCube describes an object that takes care of the volumetric output requests within FHI-aims. An object of this type can be attached to the main Aims() object as an option. The possible arguments for AimsCube are: ============================ ======== keyword type ============================ ======== ``origin`` list ``edges`` 3x3-array ``points`` list ``plots`` list ============================ ======== The possible values for the entry of plots are discussed in detail in the FHI-aims manual, see below for an example. Example ======= Here is an example of how to obtain the geometry of a water molecule, assuming ``ASE_AIMS_COMMAND`` and ``AIMS_SPECIES_DIR`` are set: :git:`ase/test/aims/H2O_aims.py`. .. literalinclude:: ../../../ase/test/aims/H2O_aims.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/INCAR_NaCl000066400000000000000000000001711316323560300252730ustar00rootroot00000000000000INCAR created by Atomic Simulation Environment PREC = Accurate LREAL = .FALSE. ISPIN = 2 MAGMOM = 1*1.9280 1*0.7500 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/NaCl.py000066400000000000000000000005471316323560300250150ustar00rootroot00000000000000from ase import Atoms, Atom from ase.calculators.vasp import Vasp a = [6.5, 6.5, 7.7] d = 2.3608 NaCl = Atoms([Atom('Na', [0, 0, 0], magmom=1.928), Atom('Cl', [0, 0, d], magmom=0.75)], cell=a) calc = Vasp(prec='Accurate', xc='PBE', lreal=False) NaCl.set_calculator(calc) print(NaCl.get_magnetic_moment()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/abinit.rst000066400000000000000000000053451316323560300256270ustar00rootroot00000000000000.. module:: ase.calculators.abinit ====== ABINIT ====== Introduction ============ ABINIT_ is a density-functional theory code based on pseudopotentials and a planewave basis. .. _ABINIT: http://www.abinit.org Environment variables ===================== .. highlight:: bash .. envvar:: ASE_ABINIT_COMMAND Must be set to something like this:: abinit < PREFIX.files > PREFIX.log where ``abinit`` is the executable (``abinis`` for version prior to 6). .. envvar:: ABINIT_PP_PATH A directory containing the pseudopotential files (at least of :file:`.fhi` type). Abinit does not provide tarballs of pseudopotentials so the easiest way is to download and unpack http://wiki.fysik.dtu.dk/abinit-files/abinit-pseudopotentials-2.tar.gz Set the environment variables in your in your shell configuration file:: export ASE_ABINIT_COMMAND="abinit < PREFIX.files > PREFIX.log" PP=${HOME}/abinit-pseudopotentials-2 export ABINIT_PP_PATH=$PP/LDA_FHI export ABINIT_PP_PATH=$PP/GGA_FHI:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/LDA_HGH:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/LDA_PAW:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/LDA_TM:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/GGA_FHI:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/GGA_HGHK:$ABINIT_PP_PATH export ABINIT_PP_PATH=$PP/GGA_PAW:$ABINIT_PP_PATH ABINIT Calculator ================= Abinit does not specify a default value for the plane-wave cutoff energy. You need to set them as in the example at the bottom of the page, otherwise calculations will fail. Calculations wihout k-points are not parallelized by default and will fail! To enable band paralellization specify ``Number of BanDs in a BLOCK`` (``nbdblock``). In Abinit version 7 and above, the ``autoparal=1`` argument sets the best parallelization options, but the command line for execution should include the ``mpirun`` command, e.g.:: ASE_ABINIT_COMMAND="mpirun -np 4 abinit < PREFIX.files > PREFIX.log" Pseudopotentials ================ Pseudopotentials in the ABINIT format are available on the `pseudopotentials`_ website. A database of user contributed pseudopotentials is also available there. .. _pseudopotentials: http://www.abinit.org/downloads/atomic-data-files The best potentials are gathered into the so called JTH archive, in the PAW/XML format, specified by GPAW. You should then add the correct path to ABINIT_PP_PATH:: ABINIT_PP_PATH=$PP/GGA_PBE:$ABINIT_PP_PATH ABINIT_PP_PATH=$PP/LDA_PW:$ABINIT_PP_PATH At execution, you can select the potential database to use with the ``pps`` argument, as one of 'fhi', 'hgh', 'hgh.sc', 'hgh.k', 'tm', 'paw', 'pawxml'. Example 1 ========= Here is an example of how to calculate the total energy for bulk Silicon :git:`ase/test/abinit/abinit_Si.py`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/amber.rst000066400000000000000000000030561316323560300254440ustar00rootroot00000000000000.. module:: ase.calculators.amber Amber ===== Introduction ------------ Amber_ is a powerfull classical simulations package. It is not free, academic license costs $500. Ase-Amber has been tested only for amber16 (2016). It can bee usefull as MM part of QM/MM calculations since amber supports fast netCDF fileIO. .. _Amber: http://ambermd.org Water example ------------- Generate topology file:: $ tleap -f tleap.in where the ``tleap.in`` file contains:: source leaprc.protein.ff14SB source leaprc.gaff source leaprc.water.tip3p mol = loadpdb 2h2o.pdb saveamberparm mol 2h2o.top h2o.inpcrd quit You need a file ``mm.in`` with instructions for the simulation:: zero step md to get energy and force &cntrl imin=0, nstlim=0, ntx=1 !0 step md cut=100, ntb=0, !non-periodic ntpr=1,ntwf=1,ntwe=1,ntwx=1 ! (output frequencies) &end END Here is your example Python script:: from ase import Atoms from ase.calculator.amber import Amber atoms = Atoms('OH2OH2', [[-0.956, -0.121, 0], [-1.308, 0.770, 0], [0.000, 0.000, 0], [3.903, 0.000, 0], [4.215, -0.497, -0.759], [4.215, -0.497, 0.759]]) calc = Amber(amber_exe='sander -O ', infile='mm.in', outfile='mm.out', topologyfile='2h2o.top', incoordfile='mm.crd') calc.write_coordinates(atoms, 'mm.crd') atoms.set_calculator(calc) f = atoms.get_forces() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/ase_castep_demo.py000066400000000000000000000036551316323560300273160ustar00rootroot00000000000000"""This simple demo calculates the total energy of CO molecules using once LDA and once PBE as xc-functional. Obviously some parts in this scripts are longer than necessary, but are shown to demonstrate some more features.""" import ase import ase.calculators.castep import ase.io.castep calc = ase.calculators.castep.Castep() directory = 'CASTEP_ASE_DEMO' # include interface settings in .param file calc._export_settings = True # reuse the same directory calc._directory = directory calc._rename_existing_dir = False calc._label = 'CO_LDA' # necessary for tasks with changing positions # such as GeometryOptimization or MolecularDynamics calc._set_atoms = True # Param settings calc.param.xc_functional = 'LDA' calc.param.cut_off_energy = 400 # Prevent CASTEP from writing *wvfn* files calc.param.num_dump_cycles = 0 # Cell settings calc.cell.kpoint_mp_grid = '1 1 1' calc.cell.fix_com = False calc.cell.fix_all_cell = True # Set and clear and reset settings (just for shows) calc.param.task = 'SinglePoint' # Reset to CASTEP default calc.param.task.clear() # all of the following are identical calc.param.task = 'GeometryOptimization' calc.task = 'GeometryOptimization' calc.TASK = 'GeometryOptimization' calc.Task = 'GeometryOptimization' # Prepare atoms mol = ase.atoms.Atoms('CO', [[0, 0, 0], [0, 0, 1.2]], cell=[10, 10, 10]) mol.set_calculator(calc) # Check for correct input if calc.dryrun_ok(): print('%s : %s ' % (mol.calc._label, mol.get_potential_energy())) else: print("Found error in input") print(calc._error) # Read all settings from previous calculation mol = ase.io.castep.read_seed('%s/CO_LDA' % directory) # Use the OTF pseudo-potential we have just generated mol.calc.set_pspot('OTF') # Change some settings mol.calc.param.xc_functional = 'PBE' # don't forget to set an appropriate label mol.calc._label = 'CO_PBE' # Recalculate the potential energy print('%s : %s ' % (mol.calc._label, mol.get_potential_energy())) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/ase_qmmm_manyqm.rst000066400000000000000000000137001316323560300275340ustar00rootroot00000000000000.. module:: ase.calculators.ase_qmmm_manyqm =============== ase_qmmm_manyqm =============== Introduction ============ This an general interface to run QM/MM calculations with a ase-QM and ase-MM calculator. Currently QM can be FHI-aims and MM can be Gromacs. QM and MM region can be covalently bonded. In principle you can cut wherever you like, but other cutting schemes are probably better than others. The standard recommendation is to cut only the C-C bonds. There can be many QM regions embedded in the MM system. Ase_qmmm_manyqm Calculator ========================== QM/MM interface with QM=FHI-aims, MM=gromacs QM could be any QM calculator, but you need to read in QM-atom charges from the QM program (in method 'get_qm_charges'). One can have many QM regions, each with a different calculator. There can be only one MM calculator, which is calculating the whole system. Non-bonded interactions: """""""""""""""""""""""" Generally energies and forces are treated by: - Within the same QM-QM: by QM calculator - MM-MM: by MM calculator - QM-MM: by MM using MM vdw parameters and QM charges. - Different QM-different QM: by MM using QM and MM charges and MM-vdw parameters The Hirschfeld charges (or other atomic charges) on QM atoms are calculated by QM in a H terminated cluster in vacuum. The charge of QM atom next to MM atom (edge-QM-atom) and its H neighbors are set as in the classical force field. The extra(missing) charge results from: - linkH atoms - The edge-QM atoms, and their singly bonded neighbors (typically -H or =O). These have their original MM charges. - From the fact that the charge of the QM fraction is not usually an integer when using the original MM charges. - The extra/missing charge is added equally to all QM atoms (not being linkH and not being edge-QM-atom or its singly bonded neighbor) so that the total charge of the MM-fragment involving QM atoms will be the same as in the original MM-description. Vdw interactions are calculated by MM-gromacs for MM and MM-QM interactions. The QM-QM vdw interaction s could be done by the FHI-aims if desired (by modifying the input for QM-FHI-aims input accordingly. Bonded interactions: """""""""""""""""""" E = E_qm(QM-H) + E_mm(ALL ATOMS), where - E_qm(QM-H): qm energy of H terminated QM cluster(s) - E_mm(ALL ATOMS): MM energy of all atoms, except for terms in which all MM-interacting atoms are in the same QM region. Forces do not act on link atoms but they are positioned by scaling. Forces on link atoms are given to their QM and MM neighbors by chain rule. (see Top Curr Chem (2007) 268: 173–290, especially pages 192-194). At the beginning of a run, the optimal edge-qm-atom-linkH bond length(s) is (are) calculated by QM in 'get_eq_qm_atom_link_h_distances' or they are read from a file (this is determined by the argument 'link_info'). The covalent bonds between QM and MM are found automatically based on ase-covalent radii in neighbor search. Link atoms are positioned automatically (according to . Questions & Comments markus.kaukonen@iki.fi Interesting applications could be cases when we need two or more QM regions. For instance two redox centers in a protein, cathode and anode of a fuel cell ... you name it! Arguments ========== ================== ========= ============== ============================= keyword type default value description ================== ========= ============== ============================= ``nqm_regions`` ``int`` The number of QM regions ``qm_calculators`` ``list`` List of members of a Class defining a ase-QM calculator for each QM region ``mm_calculator`` ``Calc`` A member of a Class defining a ase-MM calculator ``link_info`` ``str`` ``'byQM'`` Can be either 'byQM': the edge_qm_atom-link_h_atom distances are calculated by QM or 'byFile':the edge_qm_atom-link_h_atom distances are read from a file ================== ========= ============== ============================= Example ======= 1. Prepare classical input with Gromacs - Get THE INDEPENDENT STRUCTURE OF THE ANTITRYPTIC REACTIVE SITE LOOP OF BOWMAN-BIRK INHIBITOR AND SUNFLOWER TRYPSIN INHIBITOR-1 (pdb code 1GM2) from pdb data bank http://www.rcsb.org/pdb/home/home.do, name it to 1GM2.pdb - In file 1GM2.pdb take only MODEL1 replace 'CYS ' by 'CYS2' in order to get deprotonated CYS-CYS bridge. - Generate gromacs coordinates and topology >>> pdb2gmx -ff oplsaa -f 1GM2.pdb -o 1GM2.gro -p 1GM2.top -water tip3p -ignh - Generate the simulation box (cubic is not the most efficient one...) >>> editconf -bt cubic -f 1GM2.gro -o 1GM2_box.gro -c -d 0.2 - Solvate the protein in water box >>> genbox -cp 1GM2_box.gro -cs spc216.gro -o 1GM2_sol.gro -p 1GM2.top - Generate index file (needed later also for defining QM atoms) >>> make_ndx -f 1GM2_sol.gro -o index.ndx >>> select 'q' - add to first lines to index.ndx (we define here 3 QM regions, indexing from 1):: [qm_ss] 18 19 20 21 139 140 141 142 [qm_thr] 28 29 30 31 32 33 34 35 [qm_ser] 64 65 66 67 68 2. Relax MM system by fixing QM atoms in their (crystallographic?) positions (see documentation for Gromacs MM calculator). .. literalinclude:: gromacs_example_mm_relax2.py 3. QM/MM relaxation (all atoms are free) .. literalinclude:: test_ase_qmmm_manyqm.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/calculators.rst000066400000000000000000000202401316323560300266640ustar00rootroot00000000000000.. module:: ase.calculators :synopsis: Energy, force and stress calculators. =========== Calculators =========== For ASE, a calculator is a black box that can take atomic numbers and atomic positions from an :class:`~ase.Atoms` object and calculate the energy and forces and sometimes also stresses. In order to calculate forces and energies, you need to attach a calculator object to your atoms object: >>> a = read('molecule.xyz') >>> e = a.get_potential_energy() # doctest: IGNORE_EXCEPTION_DETAIL Traceback (most recent call last): File "", line 1, in File "/home/jjmo/ase/atoms/ase.py", line 399, in get_potential_energy raise RuntimeError('Atoms object has no calculator.') RuntimeError: Atoms object has no calculator. >>> from ase.calculators.abinit import Abinit >>> calc = Abinit(...) >>> a.set_calculator(calc) >>> e = a.get_potential_energy() >>> print(e) -42.0 Here, we used the :meth:`~ase.Atoms.set_calculator` method to attach an instance of the :mod:`ase.calculators.abinit` class and then we asked for the energy. Alternatively, a calculator can be attached like this:: atoms = Atoms(..., calculator=Abinit(...)) or this:: atoms.calc = Abinit(...) .. _supported calculators: Supported calculators ===================== The calculators can be divided in four groups: 1) Asap_, GPAW_ and Hotbit_ have their own native ASE interfaces. 2) ABINIT, AMBER, CP2K, CASTEP, DFTB+, ELK, EXCITING, FHI-aims, FLEUR, GAUSSIAN, Gromacs, Jacapo, LAMMPS, MOPAC, NWChem, Octopus, Quantum ESPRESSO, SIESTA, TURBOMOLE and VASP, have Python wrappers in the ASE package, but the actual FORTRAN/C/C++ codes are not part of ASE. 3) Pure python implementations included in the ASE package: EMT, EAM, Lennard-Jones and Morse. 4) Calculators that wrap others, included in the ASE package: :class:`ase.calculators.checkpoint.CheckpointCalculator`, the :class:`ase.calculators.loggingcalc.LoggingCalculator` and the :ref:`Grimme-D3 ` potential. =================================== =========================================== name description =================================== =========================================== Asap_ Highly efficient EMT code GPAW_ Real-space/plane-wave/LCAO PAW code Hotbit_ DFT based tight binding :mod:`~ase.calculators.abinit` Plane-wave pseudopotential code :mod:`~ase.calculators.amber` Classical molecular dynamics code :mod:`~ase.calculators.castep` Plane-wave pseudopotential code :mod:`~ase.calculators.cp2k` DFT and classical potentials :mod:`~ase.calculators.dftb` DFT based tight binding :mod:`~ase.calculators.dmol` Atomic orbital DFT code :mod:`~ase.calculators.eam` Embedded Atom Method elk Full Potential LAPW code :mod:`~ase.calculators.espresso` Plane-wave pseudopotential code :mod:`~ase.calculators.exciting` Full Potential LAPW code :mod:`~ase.calculators.aims` Numeric atomic orbital, full potential code :mod:`~ase.calculators.fleur` Full Potential LAPW code gaussian Gaussian based electronic structure code :mod:`~ase.calculators.gromacs` Classical molecular dynamics code :mod:`~ase.calculators.gulp` Interatomic potential code :mod:`~ase.calculators.jacapo` Plane-wave ultra-soft pseudopotential code :mod:`~ase.calculators.lammps` Classical molecular dynamics code mopac ... :mod:`~ase.calculators.nwchem` Gaussian based electronic structure code :mod:`~ase.calculators.octopus` Real-space pseudopotential code :mod:`~ase.calculators.siesta` LCAO pseudopotential code :mod:`~ase.calculators.turbomole` Fast atom orbital code :mod:`~ase.calculators.vasp` Plane-wave PAW code :mod:`~ase.calculators.emt` Effective Medium Theory calculator lj Lennard-Jones potential morse Morse potential :mod:`~ase.calculators.checkpoint` Checkpoint calculator :mod:`~ase.calculators.loggingcalc` Logging calculator :mod:`~ase.calculators.dftd3` DFT-D3 dispersion correction calculator =================================== =========================================== .. index:: D3, Grimme .. _grimme: .. note:: A Fortran implemetation of the Grimme-D3 potential, that can be used as an add-on to any ASE calculator, can be found here: https://gitlab.com/ehermes/ased3/tree/master. The calculators included in ASE are used like this: >>> from ase.calculators.abc import ABC >>> calc = ABC(...) where ``abc`` is the module name and ``ABC`` is the class name. .. _Asap: http://wiki.fysik.dtu.dk/asap .. _GPAW: http://wiki.fysik.dtu.dk/gpaw .. _Hotbit: https://github.com/pekkosk/hotbit Calculator keywords =================== Example for a hypothetical ABC calculator: .. class:: ABC(restart=None, ignore_bad_restart_file=False, label=None, atoms=None, parameters=None, command='abc > PREFIX.abc', xc=None, kpts=[1, 1, 1], smearing=None, charge=0.0, nbands=None, **kwargs) Create ABC calculator restart: str Prefix for restart file. May contain a directory. Default is None: don't restart. ignore_bad_restart_file: bool Ignore broken or missing restart file. By default, it is an error if the restart file is missing or broken. label: str Name used for all files. May contain a directory. atoms: Atoms object Optional Atoms object to which the calculator will be attached. When restarting, atoms will get its positions and unit-cell updated from file. command: str Command used to start calculation. This will override any value in an :envvar:`ASE_ABC_COMMAND` environment variable. parameters: str Read parameters from file. xc: str XC-functional (``'LDA'``, ``'PBE'``, ...). kpts: Brillouin zone sampling: * ``(1,1,1)``: Gamma-point * ``(n1,n2,n3)``: Monkhorst-Pack grid * ``(n1,n2,n3,'gamma')``: Shifted Monkhorst-Pack grid that includes `\Gamma` * ``[(k11,k12,k13),(k21,k22,k23),...]``: Explicit list in units of the reciprocal lattice vectors * ``kpts=3.5``: `\vec k`-point density as in 3.5 `\vec k`-points per Ã…\ `^{-1}`. smearing: tuple The smearing of occupation numbers. Must be a tuple: * ``('Fermi-Dirac', width)`` * ``('Gaussian', width)`` * ``('Methfessel-Paxton', width, n)``, where `n` is the order (`n=0` is the same as ``'Gaussian'``) Lower-case names are also allowed. The ``width`` parameter is given in eV units. charge: float Charge of the system in units of `|e|` (``charge=1`` means one electron has been removed). Default is ``charge=0``. nbands: int Number of bands. Each band can be occupied by two electrons. Not all of the above arguments make sense for all of ASE's calculators. As an example, Gromacs will not accept DFT related keywords such as ``xc`` and ``smearing``. In addition to the keywords mentioned above, each calculator may have native keywords that are specific to only that calculator. Keyword arguments can also be set or changed at a later stage using the :meth:`set` method: .. method:: set(key1=value1, key2=value2, ...) .. toctree:: eam emt abinit amber castep cp2k dftb dmol espresso exciting FHI-aims fleur gromacs gulp jacapo lammps lammpsrun nwchem octopus siesta turbomole vasp qmmm checkpointing loggingcalc dftd3 others test ase_qmmm_manyqm .. _calculator interface: Calculator interface ==================== All calculators must have the following interface: .. autoclass:: ase.calculators.interface.Calculator :members: Electronic structure calculators ================================ These calculators have wave functions, electron densities, eigenvalues and many other quantities. Therefore, it makes sense to have a set of standard methods for accessing those quantities: .. autoclass:: ase.calculators.interface.DFTCalculator :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/castep.rst000066400000000000000000000004431316323560300256320ustar00rootroot00000000000000.. module:: ase.calculators.castep ======== CASTEP ======== .. include:: ../../../ase/calculators/castep.py :encoding: utf-8 :start-after: CASTEP Interface Documentation :end-before: End CASTEP Interface Documentation Example: ======== .. literalinclude:: ase_castep_demo.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/checkpointing.rst000066400000000000000000000104421316323560300272000ustar00rootroot00000000000000.. module:: ase.calculators.checkpoint ============= Checkpointing ============= Checkpointing adds restart and rollback capabilities to ASE scripts. It stores the current state of the simulation (and its history) into an :mod:`ase.db`. Something like what follows is found in many ASE scripts:: if os.path.exists('atoms_after_relax.traj'): a = ase.io.read('atoms_after_relax.traj') else: ase.optimize.FIRE(a).run(fmax=0.01) ase.io.write('atoms_after_relax.traj') The idea behind checkpointing is to replace this manual checkpointing capability with a unified infrastructure. Manual checkpointing ==================== The class :class:`Checkpoint` takes care of storing and retrieving information from the database. This information *always* includes an :class:`~ase.Atoms` object, and it can include attached information on the internal state of the script. .. autoclass:: ase.calculators.checkpoint.Checkpoint :members: :member-order: bysource In order to use checkpointing, first create a Checkpoint object:: from ase.calculators.checkpoint import Checkpoint CP = Checkpoint() You can optionally choose a database filename. Default is ``checkpoints.db``. Code blocks are wrapped into checkpointed regions:: try: a = CP.load() except NoCheckpoint: ase.optimize.FIRE(a).run(fmax=0.01) CP.save(a) The code block in the ``except`` statement is executed only if it has not yet been executed in a previous run of the script. The :meth:`~Checkpoint.save` statement stores all of its parameters to the database. This is not yet much shorter than the above example. The checkpointing object can, however, store arbitrary information along the :class:`~ase.Atoms` object. Imagine we have computed elastic constants and don't want to recompute them. We can then use:: try: a, C = CP.load() except NoCheckpoint: C = fit_elastic_constants(a) CP.save(a, C) Note that one parameter to :meth:`~Checkpoint.save` needs to be an :class:`~ase.Atoms` object, the others can be arbitrary. The :meth:`~Checkpoint.load` statement returns these parameters in the order they were stored upon save. In the above example, the elastic constants are stored attached to the atomic configuration. If the script is executed again after the elastic constants have already been computed, it will skip that computation and just use the stored value. If the checkpointed region contains a single statement, such as the above, there is a shorthand notation available:: C = CP(fit_elastic_constants)(a) Sometimes it is necessary to checkpoint an iterative loop. If the script terminates within that loop, it is useful to resume calculation from the same loop position:: try: a, converged, tip_x, tip_y = CP.load() except NoCheckpoint: converged = False tip_x = tip_x0 tip_y = tip_y0 while not converged: ... do something to find better crack tip position ... converged = ... CP.flush(a, converged, tip_x, tip_y) The above code block is an example of an iterative search for a crack tip position. Note that the convergence criteria needs to be stored to the database so the loop is not executed if convergence has been reached. The :meth:`~Checkpoint.flush` statement overrides the last value stored to the database. As a rule :meth:`~Checkpoint.save` has to be used inside an ``except NoCheckpoint`` statement and :meth:`~Checkpoint.flush` outside. Automatic checkpointing with the checkpoint calculator ====================================================== The :class:`CheckpointCalculator` is a shorthand for wrapping every single energy/force evaluation in a checkpointed region. It wraps the actual calculator. .. autoclass:: ase.calculators.checkpoint.CheckpointCalculator :members: :member-order: bysource Example usage:: calc = ... cp_calc = CheckpointCalculator(calc) atoms.set_calculator(cp_calc) e = atoms.get_potential_energy() The first call to :meth:`~ase.Atoms.get_potential_energy` does the actual calculation, a rerun of the script will load energies and force from the database. Note that this is useful for calculation where each energy evaluation is slow (e.g. DFT), but not recommended for molecular dynamics with classical potentials since every single time step will be dumped to the database. This will generate huge files. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/cp2k.rst000066400000000000000000000001011316323560300252010ustar00rootroot00000000000000.. module:: ase.calculators.cp2k CP2K ==== .. autoclass:: CP2K ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftb.rst000066400000000000000000000071071316323560300252760ustar00rootroot00000000000000.. module:: ase.calculators.dftb ========= DftbPlus ========= Introduction ============ DftbPlus_ is a density-functional based tight-binding code using atom centered orbitals. This interface makes it possible to use DftbPlus_ as a calculator in ASE. You need to register at DftbPlus_ site to download the code. Additionally you need Slater-Koster files for the combination of atom types of your system. These can be obtained at dftb.org_. .. _DftbPlus: http://www.dftb-plus.info/ .. _dftb.org: http://www.dftb.org/ Environment variables ===================== Set environment variables in your configuration file (what is the directory for the Slater-Koster files and what is the name of the executable): - bash:: $ DFTB_PREFIX=/my_disk/my_name/lib/Dftb+sk/mio-0-1/ (an example) $ DFTB_COMMAND=~/bin/DFTB+/dftb+_s081217.i686-linux (an example) - csh/tcsh:: $ setenv DFTB_PREFIX /my_disk/my_name/lib/Dftb+sk/mio-0-1/ (an example) $ setenv DFTB_COMMAND ~/bin/DFTB+/dftb+_s081217.i686-linux (an example) DftbPlus Calculator (a FileIOCalculator) ======================================== The file 'geom.out.gen' contains the input and output geometry and it will be updated during the dftb calculations. If restart == None it is assumed that a new input file 'dftb_hsd.in' will be written by ase using default keywords and the ones given by the user. If restart != None it is assumed that keywords are in file restart All Keywords to the dftb calculator can be set by ase. Parameters ========== restart: str (default None) If restart == None it is assumed that a new input file 'dftb_hsd.in' will be written by ase using default keywords and the ones given by the user. If restart != None it is assumed that keywords are in file 'restart' ignore_bad_restart_file: bool (default False) Ignore broken or missing restart file. By defauls, it is an error if the restart file is missing or broken. label: str (default 'dftb') Name used for all files. May contain a directory. atoms: Atoms object (default None) Optional Atoms object to which the calculator will be attached. When restarting, atoms will get its positions and unit-cell updated from file. kpts: (default None) Brillouin zone sampling: * ``(1,1,1)``: Gamma-point * ``(n1,n2,n3)``: Monkhorst-Pack grid * ``(n1,n2,n3,'gamma')``: Shifted Monkhorst-Pack grid that includes `\Gamma` * ``[(k11,k12,k13),(k21,k22,k23),...]``: Explicit list in units of the reciprocal lattice vectors * ``kpts=3.5``: `\vec k`-point density as in 3.5 `\vec k`-points per Ã…\ `^{-1}`. run_manyDftb_steps: bool (default False) If True the Dftb calculator is running many steps by its own. If False all the relaxations/ molecular dynamis is done by ASE Example: Geometry Optimization by ASE ===================================== .. literalinclude:: dftb_ex1_relax.py Example: Geometry Optimization by DFTB ====================================== .. literalinclude:: dftb_ex2_relaxbyDFTB.py Example: NVE md followed by NVT md (both by DFTB) ================================================= This is unphysical because of at least two reasons: - oxygen does not have spin here - the berendsen coupling is too strong (0.01 here should be 0.0001) .. literalinclude:: dftb_ex3_make_2h2o.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftb_ex1_relax.py000066400000000000000000000010431316323560300270570ustar00rootroot00000000000000from ase.calculators.dftb import Dftb from ase.optimize import QuasiNewton from ase.io import write from ase.build import molecule test = molecule('H2O') test.set_calculator(Dftb(label='h2o', atoms=test, Hamiltonian_MaxAngularMomentum_='', Hamiltonian_MaxAngularMomentum_O='"p"', Hamiltonian_MaxAngularMomentum_H='"s"', )) dyn = QuasiNewton(test, trajectory='test.traj') dyn.run(fmax=0.01) write('test.final.xyz', test) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftb_ex2_relaxbyDFTB.py000066400000000000000000000011101316323560300300460ustar00rootroot00000000000000from ase.calculators.dftb import Dftb from ase.io import write, read from ase.build import molecule system = molecule('H2O') calc = Dftb(label='h2o', atoms=system, run_manyDftb_steps=True, Driver_='ConjugateGradient', Driver_MaxForceComponent='1E-4', Driver_MaxSteps=1000, Hamiltonian_MaxAngularMomentum_='', Hamiltonian_MaxAngularMomentum_O='"p"', Hamiltonian_MaxAngularMomentum_H='"s"') system.set_calculator(calc) calc.calculate(system) final = read('geo_end.gen') write('test.final.xyz', final) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftb_ex3_make_2h2o.py000066400000000000000000000063401316323560300275220ustar00rootroot00000000000000# fun collision of: 2 H2 + O2 -> 2 H2O import os from ase.calculators.dftb import Dftb from ase.build import molecule from ase.md.verlet import VelocityVerlet from ase.md import MDLogger from ase.units import fs from ase.io.dftb import read_dftb_velocities, write_dftb_velocities from ase.io import read, write o2 = molecule('O2') h2_1 = molecule('H2') h2_2 = molecule('H2') o2.translate([0, 0.01, 0]) h2_1.translate([0, 0, 3]) h2_1.euler_rotate(center='COP', theta=90) h2_2.translate([0, 0, -3]) h2_2.euler_rotate(center='COP', theta=90) o2.set_velocities(([0, 0, 0], [0, 0, 0])) h2_1.set_velocities(([0, 0, -3.00], [0, 0, -3.000])) h2_2.set_velocities(([0, 0, 3.000], [0, 0, 3.000])) test = o2 + h2_1 + h2_2 # 1fs = 41.3 au # 1000K = 0.0031668 au calculator_NVE = Dftb(label='h2o', atoms=test, run_manyDftb_steps=True, Hamiltonian_MaxAngularMomentum_='', Hamiltonian_MaxAngularMomentum_O='"p"', Hamiltonian_MaxAngularMomentum_H='"s"', Driver_='VelocityVerlet', Driver_MDRestartFrequency=10, Driver_Velocities_='', Driver_Velocities_empty='<<+ "velocities.txt"', Driver_Steps=1000, Driver_KeepStationary='Yes', Driver_TimeStep=4.13, Driver_Thermostat_='None', Driver_Thermostat_empty='') # 1fs = 41.3 au # 1000K = 0.0031668 au calculator_NVT = Dftb( label='h2o', atoms=test, run_manyDftb_steps=True, Hamiltonian_MaxAngularMomentum_='', Hamiltonian_MaxAngularMomentum_O='"p"', Hamiltonian_MaxAngularMomentum_H='"s"', Driver_='VelocityVerlet', Driver_MDRestartFrequency=5, Driver_Velocities_='', Driver_Velocities_empty='<<+ "velocities.txt"', Driver_Steps=500, Driver_KeepStationary='Yes', Driver_TimeStep=8.26, Driver_Thermostat_='Berendsen', Driver_Thermostat_Temperature=0.00339845142, # 800 deg Celcius # Driver_Thermostat_Temperature=0.0, # 0 deg Kelvin Driver_Thermostat_CouplingStrength=0.01) write_dftb_velocities(test, 'velocities.txt') os.system('rm md.log.* md.out* geo_end*xyz') test.set_calculator(calculator_NVE) dyn = VelocityVerlet(test, 0.000 * fs) # fs time step. dyn.attach(MDLogger(dyn, test, 'md.log.NVE', header=True, stress=False, peratom=False, mode='w'), interval=1) dyn.run(1) # run NVE ensemble using DFTB's own driver test = read('geo_end.gen') write('test.afterNVE.xyz', test) read_dftb_velocities(test, filename='geo_end.xyz') write_dftb_velocities(test, 'velocities.txt') os.system('mv md.out md.out.NVE') os.system('mv geo_end.xyz geo_end_NVE.xyz') test.set_calculator(calculator_NVT) os.system('rm md.log.NVT') dyn.attach(MDLogger(dyn, test, 'md.log.NVT', header=True, stress=False, peratom=False, mode='w'), interval=1) dyn.run(1) # run NVT ensemble using DFTB's own driver test = read('geo_end.gen') read_dftb_velocities(test, filename='geo_end.xyz') os.system('mv md.out md.out.NVT') os.system('mv geo_end.xyz geo_end_NVT.xyz') write_dftb_velocities(test, 'velocities.txt') # to watch: # ase gui geo_end_NVE.xyz geo_end_NVT.xyz ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftd3.rst000066400000000000000000000115241316323560300253610ustar00rootroot00000000000000.. module:: ase.calculators.dftd3 ======= DFT-D3 ======= Introduction ============ The DFTD3_ calculator class wraps the 'dftd3' command line utility by the research group of Stefan Grimme. This can be used to calculate classical vdW dispersion corrections to a large number of common DFT functionals. This calculator can be used in conjunction with other DFT calculators such as GPAW to allow seamless calculation of dispersion-corrected DFT energies, forces, and stresses. .. _DFTD3: http://www.thch.uni-bonn.de/tc/index.php?section=downloads&subsection=DFT-D3 This is a list of all supported keywords and settings: =========== ============= ================================================== Keyword Default value Description =========== ============= ================================================== ``xc`` ``'pbe'`` Use parameters optimized for the selected XC functional. ``func`` ``None`` Alternative to ``xc``. Use one or the other. ``grad`` ``True`` Enable or disable calculation of gradients (forces, stress tensor). ``abc`` ``False`` Enable three-body ATM correction. ``cnthr`` 40 Bohr Cutoff radius for coordination number and three-body calculations. ``cutoff`` 95 Bohr Cutoff radius for two-body dispersion calculations. ``old`` ``False`` Enable older DFT-D2 dispersion correction method. ``damping`` ``'zero'`` Damping method. Valid options are ``'zero'``, ``'bj'``, ``'zerom'``, and ``'bjm'``. ``tz`` ``False`` Custom parameters optimized for triple-zeta basis sets. ``s6`` Custom damping parameter used in all damping methods. ``sr6`` Custom damping parameter used in ``'zero'`` and ``'zerom'`` damping methods. ``s8`` Custom damping parameter used in all damping methods. ``sr8`` Custom damping parameter used in ``'zero'`` and ``'zerom'`` damping methods. ``alpha6`` Custom damping parameter used in all damping methods. ``a1`` Custom damping parameter used in ``'bj'`` and ``'bjm'`` damping methods. ``a2`` Custom damping parameter used in ``'bj'`` method. ``beta`` Custom damping parameter used in ``'bjm'`` method. =========== ============= ================================================== Examples ======== DFTD3 can be used by itself to calculate only the vdW correction to a system's energy, forces, and stress. Note that you should not use these properties alone to perform dyanmics, as DFTD3 is not a full classical potential. .. literalinclude:: dftd3_alone.py If used in conjunction with a DFT calculator, DFTD3 returns dispersion-corrected energies, forces, and stresses which can be used to perform dynamics. .. literalinclude:: dftd3_gpaw.py Additional information ====================== This calculator works by writing either an ``xyz`` file (for non-periodic systems) or a ``POSCAR`` file (for periodic systems), calling the ``dftd3`` executable, and parsing the output files created. It has been written such that its interface should match that of the ``dftd3`` utility itself as closely as possible, while minimizing the possibility of setting redundant and contradictory options. For example, you can only select one damping method, and the interface will sanity-check any provided custom damping parameters. Without any arguments, the DFTD3 will default to calculating the PBE-D3 dispersion correction with ``'zero'`` damping. If a DFT calculator is attached, DFTD3 will attempt to glean the XC functional from the DFT calculator. This will occasionally fail, as ``dftd3`` is very particular about how the names of XC functionals are to be formatted, so in general you should supply the XC functional to both the DFT calculator and the DFTD3 calculator. Caveats ------- The ``dftd3`` does not handle systems with only 1D- or 2D-periodic boundary conditions. If your system has 1D or 2D PBC, DFTD3 will calculate the dispersion correction as though it was fully 3D periodic. If your system is very large, the dispersion calculation can take quite long, especially if you are including three-body corrections (``abc=True``). For highly parallel calculations, this may result in the dispersion correction taking longer than the DFT calculation! This is because the ``dftd3`` utility is not parallelized and will always run on a single core. Be sure to benchmark this calculator interface on your system before deploying large, heavily parallel calculations with it! ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftd3_alone.py000066400000000000000000000002371316323560300263560ustar00rootroot00000000000000from ase.calculators.dftd3 import DFTD3 from ase.build import bulk diamond = bulk('C') d3 = DFTD3() diamond.set_calculator(d3) diamond.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dftd3_gpaw.py000066400000000000000000000010341316323560300262120ustar00rootroot00000000000000import numpy as np from gpaw import GPAW, PW from ase.calculators.dftd3 import DFTD3 from ase.build import bulk from ase.constraints import UnitCellFilter from ase.optimize import LBFGS np.random.seed(0) diamond = bulk('C') diamond.rattle(stdev=0.1, seed=0) diamond.cell += np.random.normal(scale=0.1, size=(3,3)) dft = GPAW(xc='PBE', kpts=(8,8,8), mode=PW(400)) d3 = DFTD3(dft=dft) diamond.set_calculator(d3) ucf = UnitCellFilter(diamond) opt = LBFGS(ucf, logfile='diamond_opt.log', trajectory='diamond_opt.traj') opt.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/dmol.rst000066400000000000000000000036761316323560300253210ustar00rootroot00000000000000.. module:: ase.calculators.dmol ===== DMol3 ===== DMol3 is an atomic orbital DFT code. Environment variables ===================== DMOL_COMMAND should point to the RunDmol script .. highlight:: bash :: $ export DMOL_COMMAND="./RunDmol.sh -np 16" DMol3 Calculator ================ The DMol3 calculator is a FileIOCalculator. The default setting used by the dmol interface is .. class:: DMol3(functional='pbe', symmetry='on') The dmol calculator supports the calculate gradient function in DMol3, meaning the internal relaxation is not supported. Forces and potential energy are the supported properties .. code-block:: python implemented_properties = ['energy', 'forces'] .. note:: DMol3 often reorients the atomic system. Therefore it's recommended to use the calculator with care. Forces are reoriented to match the atoms object, however properties like k-points and density files (.grd) may be misoriented when reading. .. note:: Only 3D periodic systems (pbc = [True, True, True]) and fully non-periodic systems are supported by the DMol3 calculator. Example ======= .. code-block:: python from ase.build import molecule from ase.calculators.dmol import DMol3 atoms = molecule('H2O') calc = DMol3(symmetry='auto', spin_polarization='unrestricted', charge=0, basis='dnp', pseudopotential='none', functional='pbe', scf_density_convergence=1.0e-7) atoms.set_calculator(calc) atoms.get_potential_energy() File formats ============ The supported dmol file formats (for write/read) are * .car * .incoor * .arc For molecules and systems without periodic boundary conditions, the .car format is used, while for periodic systems the .incoor format, which allows specification of the unit cell, is used. The .arc files are trajectory files from internal relaxation runs in DMol3 (which is not supported by this calculator) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/eam.rst000066400000000000000000000004241316323560300251140ustar00rootroot00000000000000.. module:: ase.calculators.eam === EAM === .. include:: ../../../ase/calculators/eam.py :encoding: utf-8 :start-after: EAM Interface Documentation :end-before: End EAM Interface Documentation Example: ======== .. literalinclude:: ../../../ase/test/eam_test.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/emt.rst000066400000000000000000000020071316323560300251360ustar00rootroot00000000000000.. module:: ase.calculators.emt :synopsis: Effective Medium Theory ========================== Pure Python EMT calculator ========================== The EMT potential is included in the ASE package in order to have a simple calculator that can be used for quick demonstrations and tests. .. warning:: If you want to do a real application using EMT, you should used the *much* more efficient implementation in the ASAP_ calculator. .. class:: EMT() Right now, the only supported elements are: H, C, N, O, Al, Ni, Cu, Pd, Ag, Pt and Au. The EMT parameters for the metals are quite realistic for many purposes, whereas the H, C, N and O parameters are just for fun! The potential takes a single argument, ``fixed_cutoff`` (default: True). If set to False, the global cutoff is chosen from the largest atom present in the simulation, if True it is chosen from the largest atom in the parameter table. False gives the behaviour of the Asap code and older EMT implementations. .. _ASAP: http://wiki.fysik.dtu.dk/asap ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/espresso.rst000066400000000000000000000066421316323560300262250ustar00rootroot00000000000000.. module:: ase.calculators.espresso ======== Espresso ======== .. image:: ../../static/espresso.png `Quantum ESPRESSO `_ (QE) is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials. The ASE calculator is an interface to the ``pw.x`` executable. Setup ===== Set up the calculator like a standard ``FileIOCalculator``: * ``export ASE_ESPRESSO_COMMAND="/path/to/pw.x -in PREFIX.pwi > PREFIX.pwo"`` Any calculation will need pseudopotentials for the elements involved. The directory for the pseudopotential files can be set with the ``pseudo_dir`` parameter, otherwise QE will look in ``$ESPRESSO_PSEUDO`` if it is set as an environment variable if set; otherwise ``$HOME/espresso/pseudo/`` is used. The pseudopotentils are assigned for each element as a dictionary:: pseudopotentials = {'Na': 'Na_pbe_v1.uspp.F.UPF', 'Cl': 'Cl.pbe-n-rrkjus_psl.1.0.0.UPF'} A simple calculation can be set up:: from ase.build import bulk from ase.calculators.espresso import Espresso from ase.constraints import UnitCellFilter from ase.optimize import LBFGS rocksalt = bulk('NaCl', crystalstructure='rocksalt', a=6.0) calc = Espresso(pseudopotentials=pseudopotentials, tstress=True, tprnfor=True, kpts=(3, 3, 3)) ucf = UnitCellFilter(rocksalt) opt = LBFGS(ucf) opt.run(fmax=0.005) # cubic lattic constant print((8*rocksalt.get_volume()/len(rocksalt))**(1.0/3.0)) Parameters ========== The calculator will interpret any of the documented options for ``pw.x``: http://www.quantum-espresso.org/wp-content/uploads/Doc/INPUT_PW.html All parameters must be given in QE units, usually Ry or atomic units in line with the documentation. ASE does not add any defaults over the defaults of QE. Parameters can be given as keywords and the calculator will put them into the correct section of the input file. The calculator also accepts a keyword argument ``input_data`` which is a dict, parameters may be put into sections in ``input_data``, but it is not necessary:: input_data = { 'system': { 'ecutwfc': 64, 'ecutrho': 576} 'disk_io': 'low'} # automatically put into 'control' calc = Espresso(pseudopotentials=pseudopotentials, tstress=True, tprnfor=True, # kwargs added to parameters input_data=input_data) Some parameters are used by ASE, or have additional meaning: * ``kpts=(3, 3, 3)`` sets the number of kpoints on a grid (defaults to gamma) * ``koffset=(0, 0, 0)`` set to 0 or 1 to displace the kpoint grid by a half cell in that direction. Also accepts ``True`` and ``False``. * ``kspacing=0.1`` sets the minimum distance between kpoints in reciprocal space. * ``nspin=2`` if any atom has a magnetic moment spin is turned on automatically. Any ``FixAtoms`` or ``FixCartesian`` constraints are converted to Espresso constraints (for dynamic calculations). Alternative Calculators ======================= There are several other QE ``Calculator`` implementations based on ``ase`` that provide a number of extra features: - http://jochym.github.io/qe-util/ - https://github.com/vossjo/ase-espresso Espresso Calculator Class ========================= .. autoclass:: ase.calculators.espresso.Espresso ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/exciting.py000066400000000000000000000022571316323560300260120ustar00rootroot00000000000000import os from ase import Atoms from ase.calculators.exciting import Exciting # test structure, not real a = Atoms('N3O', [(0, 0, 0), (1, 0, 0), (0, 0, 1), (0.5, 0.5, 0.5)], pbc=True) calculator = Exciting( dir='excitingtestfiles', speciespath=os.environ['EXCITINGROOT']+'/species', paramdict={'title':{'text()':'N3O'}, 'groundstate':{'ngridk':'1 2 3','tforce':'true'}, 'relax':{}, 'properties':{'dos':{}, 'bandstructure': {'plot1d':{'path':{'steps':'100', 'point': [{'coord':'0.75000 0.50000 0.25000', 'label':'W'}, {'coord':'0.50000 0.50000 0.50000', 'label':'L'}, {'coord':'0.00000 0.00000 0.00000', 'label':'G'}, {'coord':'0.50000 0.50000 0.00000', 'label':'X'}, {'coord':'0.75000 0.50000 0.25000', 'label':'W'}, {'coord':'0.75000 0.37500 0.37500', 'label':'K'}] }}}}}) calculator.write(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/exciting.rst000066400000000000000000000101531316323560300261640ustar00rootroot00000000000000.. module:: ase.calculators.exciting ======== exciting ======== .. image:: ../../static/exciting.png Introduction ============ ``exciting`` is a full-potential *all-electron* density-functional-theory (DFT) package based on the linearized augmented planewave (LAPW) method. It can be applied to all kinds of materials, irrespective of the atomic species involved, and also allows for the investigation of the core region. The website is http://exciting-code.org/ The module depends on lxml http://lxml.de There are two ways to construct the exciting calculator. 1. Using keyword arguments to specify groundstate attributes 2. Use paramdict to specify an input file structure with a data structure of dictionaries. See also the tutorial on the web page of exciting: http://exciting-code.org/lithium-atomic-simulation-environment Constructor with Groundstate Keywords ------------------------------------- One is by giving parameters of the ground state in the constructor. The possible attributes can be found at http://exciting-code.org/ref:groundstate .. class:: Exciting(bin='excitingser', kpts=(4, 4, 4), xctype='LDA_PW') Parameter Dictionary -------------------- When the paramdict keyword is used, the calculator translates the dictionary given into the exciting XML file format. Note $EXCITINGROOT environmental variable should be set: details at http://exciting-code.org/tutorials-boron .. literalinclude:: exciting.py The calculator constructure above is used to create this exciting input file: .. highlight:: xml :: N3O 1.88972595820018 0.00000000000000 0.00000000000000 0.00000000000000 1.88972595820018 0.00000000000000 0.00000000000000 0.00000000000000 1.88972595820018 The translation follows the following rules: String values are translated to attributes. Nested dictionaries are translated to sub elements. A list of dictionaries is translated to a list of sub elements named after the key of which the list is the value. The special key "text()" results in text content of the enclosing tag. Muffin Tin Radius ================= Sometimes it is necessary to specify a fixed muffin tin radius different from the default. The muffin tin radii can be set by adding a custom array to the atoms object with the name "rmt": .. highlight:: python :: atoms.new_array('rmt', np.array([-1.0, -1.0, 2.3, 2.0] * Bohr)) Each entry corresponds to one atom. If the rmt value is negative, the default value is used. This array is correctly updated if the atoms are added or removed. Exciting Calculator Class ========================= .. autoclass:: ase.calculators.exciting.Exciting ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/fcc_Ni_fleur.py000066400000000000000000000007241316323560300265530ustar00rootroot00000000000000from numpy import linspace from ase.calculators.fleur import FLEUR from ase.build import bulk from ase.io.trajectory import Trajectory atoms = bulk('Ni', a=3.52) calc = FLEUR(xc='PBE', kmax=3.6, kpts=(10, 10, 10), workdir='lat_const') atoms.set_calculator(calc) traj = Trajectory('Ni.traj','w', atoms) cell0 = atoms.get_cell() for s in linspace(0.95, 1.05, 7): cell = cell0 * s atoms.set_cell((cell)) ene = atoms.get_potential_energy() traj.write() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/fleur.rst000066400000000000000000000063511316323560300254740ustar00rootroot00000000000000.. module:: ase.calculators.fleur ===== FLEUR ===== Introduction ============ FLEUR_ is a density-functional theory code which uses the full potential linearized augmented plane-wave (FLAPW) method. FLEUR_ can be applied to any element in the periodic table, and the code is well suited especially to surfaces and magnetic materials. .. _FLEUR: http://www.flapw.de Environment variables ===================== In order to use FLEUR through ASE, two environment variables have to be set. :envvar:`FLEUR_INPGEN` should point to the simple input generator of FLEUR, and :envvar:`FLEUR` to the actual executable. Note that FLEUR has different executables e.g. for cases with and without inversion symmetry, so the environment variable has to be set accordingly. As an example, the variables could be set like: .. highlight:: bash :: $ export FLEUR_INPGEN=$HOME/fleur/v25/inpgen.x $ export FLEUR=$HOME/fleur/v25/fleur.x .. highlight:: python or: .. highlight:: bash :: $ export FLEUR="mpirun -np 32 $HOME/fleur/v25/fleur.x" .. highlight:: python for parallel calculations. FLEUR Calculator ================ Currently, limited number of FLEUR parameters can be set via the ASE interface Below follows a list of supported parameters =============== ========= ============== ============================ keyword type default value description =============== ========= ============== ============================ ``xc`` ``str`` ``'LDA'`` XC-functional. Must be one of 'LDA', 'PBE', 'RPBE' ``kpts`` *seq* `\Gamma`-point **k**-point sampling ``convergence`` *dict* ``{'energy': Convergence criteria (meV) 0.0001}`` ``width`` ``float`` Width of Fermi smearing (eV) ``kmax`` ``float`` Plane-wave cut-off (a.u.) ``mixer`` *dict* Mixing parameters 'imix', 'alpha', and 'spinf' ``maxiter`` ``int`` 40 Maximum number of SCF steps ``maxrelax`` ``int`` 20 Maximum number of relaxation steps ``workdir`` ``str`` Current dir Working directory for the calculation =============== ========= ============== ============================ *seq*: A sequence of three ``int``'s. *dict*: A dictionary Spin-polarized calculation ========================== If the atoms object has non-zero magnetic moments, a spin-polarized calculation will be performed by default. Utility functions ================= As only a subset of FLEUR parameters can currently be specified through ASE interface, the interface defines some utility functions for cases where manual editing of the FLEUR input file ``inp`` is necessary. .. automethod:: ase.calculators.fleur.FLEUR.write_inp .. automethod:: ase.calculators.fleur.FLEUR.initialize_density .. automethod:: ase.calculators.fleur.FLEUR.calculate .. automethod:: ase.calculators.fleur.FLEUR.relax Examples ======== Lattice constant of fcc Ni .. literalinclude:: fcc_Ni_fleur.py See the :ref:`equation of states tutorial ` for analysis of the results. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/gromacs.rst000066400000000000000000000067711316323560300260200ustar00rootroot00000000000000.. module:: ase.calculators.gromacs ======= Gromacs ======= Introduction ============ Gromacs is a free classical molecular dynamics package. It is mainly used in modeling of biological systems. It is part of the ubuntu-linux distribution. http://www.gromacs.org/ .. warning:: 1) Ase-Gromacs calculator works properly only with gromacs version 4.5.6 or a newer one. (fixed bug related to .g96 format) .. warning:: 2) It only makes sense to use ase-gromacs for qm/mm or for testing. For pure MM production runs the native gromacs is much much faster (at the moment ase-gromacs has formatted io using .g96 format which is slow). Gromacs Calculator ================== This ASE-interface is a preliminary one and it is VERY SLOW so do not use it for production runs. It is here because of we'll have a QM/MM calculator which is using gromacs as the MM part. For example: (setting for the MM part of a QM/MM run, parameter '-nt 1' for serial run):: CALC_MM = Gromacs(doing_qmmm = True) CALC_MM.set_own_params_runs('extra_mdrun_parameters', ' -nt 1 ') Here default values for MM input are:: define = '-DFLEXIBLE', integrator = 'cg', nsteps = '10000', nstfout = '10', nstlog = '10', nstenergy = '10', nstlist = '10', ns_type = 'grid', pbc = 'xyz', rlist = '1.15', coulombtype = 'PME-Switch', rcoulomb = '0.8', vdwtype = 'shift', rvdw = '0.8', rvdw_switch = '0.75', DispCorr = 'Ener' The input values can be changed by:: CALC_MM.set_own_params( 'nsteps','99999' 'Number of steps') The arguments for gromacs programs can be changed by:: CALC_MM.set_own_params_runs( 'extra_pdb2gmx_parameters','-ignh') CALC_MM.set_own_params_runs( 'init_structure','1GM2.pdb') CALC_MM.set_own_params_runs( 'extra_mdrun_parameters', ' -nt 1 ') CALC_MM.set_own_params_runs( 'extra_grompp_parameters', ' ') CALC_MM.set_own_params_runs( 'extra_editconf_parameters', ' ') CALC_MM.set_own_params_runs( 'extra_genbox_parameters', ' ') Parameters ========== The description of the parameters can be found in the Gromacs manual: http://www.gromacs.org/Documentation/Manual and extra (ie. non-gromacs) parameter: do_qmmm: logical (default False) If true we run only single step of gromacs (to get MM forces and energies in QM/MM) freeze_qm: logical (default False) If true, the qm atoms will be kept fixed (The list of qm atoms is taken from file 'index_filename', below) clean: logical (default True) If true old gromacs files are cleaned force_field: str (default oplsaa) Name of the force field for gromacs water_model: str (default tip3p) Name of the water model for gromacs Environmental variables: ======================== - GMXCMD the name of the main gromacs executable (usually 'mdrun'). If GMXCMD is not set gromacs test is not run, but in the calculator works using 'mdrun'. - GMXCMD_PREF prefix for all gromacs commands (default '') - GMXCMD_POST postfix (ie suffix) for all gromacs commands (default '') Example: MM-only geometry optimization of a histidine molecule ============================================================== THIS IS NOT A PROPER WAY TO SETUP YOUR MD SIMULATION. THIS IS JUST A DEMO THAT DOES NOT CRASH. (the box size should be iterated by md-NTP, total charge should be 0). Initial pdb coordinates (file his.pdb): .. literalinclude:: his.pdb The sample file for relaxation: .. literalinclude:: gromacs_example_mm_relax.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/gromacs_example_mm_relax.py000066400000000000000000000014261316323560300312270ustar00rootroot00000000000000""" An example for using gromacs calculator in ase. Atom positions are relaxed. A sample call: python ./gromacs_example_mm_relax.py his.pdb """ from ase.calculators.gromacs import Gromacs import sys infile_name = sys.argv[1] CALC_MM_RELAX = Gromacs(clean=True) CALC_MM_RELAX.set_own_params_runs( 'extra_pdb2gmx_parameters', '-ignh') CALC_MM_RELAX.set_own_params_runs( 'init_structure', infile_name) CALC_MM_RELAX.generate_topology_and_g96file() CALC_MM_RELAX.write_input() CALC_MM_RELAX.set_own_params_runs( 'extra_editconf_parameters', '-bt cubic -c -d 0.8') CALC_MM_RELAX.run_editconf() CALC_MM_RELAX.set_own_params_runs( 'extra_genbox_parameters', '-cs spc216.gro') CALC_MM_RELAX.run_genbox() CALC_MM_RELAX.generate_gromacs_run_file() CALC_MM_RELAX.run() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/gromacs_example_mm_relax2.py000066400000000000000000000021721316323560300313100ustar00rootroot00000000000000"""An example for using gromacs calculator in ase. Atom positions are relaxed. If qm atoms are found in index file, they are kept fixed in the relaxation. QM atoms are defined in index file (numbering from 1) in sets containing QM or Qm or qm in their name. A sample call:: ./gromacs_example_mm_relax.py 1GM2_sol.gro """ from ase.calculators.gromacs import Gromacs import sys infile_name = sys.argv[1] CALC_MM_RELAX = Gromacs( init_structure_file=infile_name, structure_file='gromacs_mm-relax.g96', force_field='oplsaa', water_model='tip3p', base_filename='gromacs_mm-relax', doing_qmmm=False, freeze_qm=True, index_filename='index.ndx', extra_mdrun_parameters=' -nt 1 ', define='-DFLEXIBLE', integrator='cg', nsteps='10000', nstfout='10', nstlog='10', nstenergy='10', nstlist='10', ns_type='grid', pbc='xyz', rlist='1.15', coulombtype='PME-Switch', rcoulomb='0.8', vdwtype='shift', rvdw='0.8', rvdw_switch='0.75', DispCorr='Ener') CALC_MM_RELAX.generate_topology_and_g96file() CALC_MM_RELAX.generate_gromacs_run_file() CALC_MM_RELAX.run() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/gulp.rst000066400000000000000000000041131316323560300253200ustar00rootroot00000000000000.. module:: ase.calculators.gulp ==== GULP ==== GULP_, the General Utility Lattice Program, is a forcefield code. Instructions ============ Make sure that the following variables are set correctly: * ``$GULP_LIB`` : path to the folder containing the potential files * ``$ASE_GULP_COMMAND="/path/to/gulp < PREFIX.gin > PREFIX.got"`` The latter defaults to ``gulp < PREFIX.gin > PREFIX.got``, assuming that the gulp command is in ``$PATH``. GULP uses several variables to write the input file. The most important ones are: * ``keywords``: string of space-separated keywords, e.g.: ``'angle compare comp conp'`` * ``options``: list of strings with options, e.g.: ``['xtol opt 5.0']`` * ``library``: filename of the potential library file (e.g. ``'reaxff.lib'``). Recall that the search path for this library is given by ``$GULP_LIB``. If the potential uses different atom types, one must define an instance of conditions with the atom object to label them and add rules to rename atoms. The only rule suported right now is ``min_distance_rule`` which selects atoms of one type close to atoms of another type and renames them. For example:: c = Conditions(atoms) c.min_distance_rule('O', 'H', ifcloselabel1='O2', ifcloselabel2='H', elselabel1='O1') calc = GULP(conditions=c) This will assign, for each H in the system, a corresponding O atom as O2, selecting those O which are the closest to H. The rest of oxygens will be labeled O1. Finally, if the potential file requires the use of shells, the variable ``shel`` must be used:: GULP(..., shel=['O']) Example ======= Here is an example of how to use the GULP calculator. .. literalinclude:: gulp_example.py The script performs a single-point calculation and then an optimization of the H8Si8O20 double ring structure within ASE using the ffsioh potential. The method ``get_optimizer()`` returns an object which works like an ASE optimizer, but actually triggers an optimization using GULP's internal optimizer. This works on GULP calculators that have the ``'opti'`` keyword. _GULP: http://gulp.curtin.edu.au/gulp/ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/gulp_example.py000066400000000000000000000044071316323560300266610ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.calculators.gulp import GULP, Conditions cluster = Atoms(symbols='O4SiOSiO2SiO2SiO2SiOSiO2SiO3SiO3H8', pbc=np.array([False, False, False], dtype=bool), cell=np.array( [[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]), positions=np.array( [[-1.444348, -0.43209 , -2.054785], [-0.236947, 2.98731 , 1.200025], [ 3.060238, -1.05911 , 0.579909], [ 2.958277, -3.289076, 2.027579], [-0.522747, 0.847624, -2.47521 ], [-2.830486, -2.7236 , -2.020633], [-0.764328, -1.251141, 1.402431], [ 3.334801, 0.041643, -4.168601], [-1.35204 , -2.009562, 0.075892], [-1.454655, -1.985635, -1.554533], [ 0.85504 , 0.298129, -3.159972], [ 1.75833 , 1.256026, 0.690171], [ 2.376446, -0.239522, -2.881245], [ 1.806515, -4.484208, -2.686456], [-0.144193, -2.74503 , -2.177778], [ 0.167583, 1.582976, 0.47998 ], [-1.30716 , 1.796853, -3.542121], [ 1.441364, -3.072993, -1.958788], [-1.694171, -1.558913, 2.704219], [ 4.417516, 1.263796, 0.563573], [ 3.066366, 0.49743 , 0.071898], [-0.704497, 0.351869, 1.102318], [ 2.958884, 0.51505 , -1.556651], [ 1.73983 , -3.161794, -0.356577], [ 2.131519, -2.336982, 0.996026], [ 0.752313, -1.788039, 1.687183], [-0.142347, 1.685301, -1.12086 ], [ 2.32407 , -1.845905, -2.588202], [-2.571557, -1.937877, 2.604727], [ 2.556369, -4.551103, -3.2836 ], [ 3.032586, 0.591698, -4.896276], [-1.67818 , 2.640745, -3.27092 ], [ 5.145483, 0.775188, 0.95687 ], [-2.81059 , -3.4492 , -2.650319], [ 2.558023, -3.594544, 2.845928], [ 0.400993, 3.469148, 1.733289]])) c = Conditions(cluster) c.min_distance_rule('O', 'H', ifcloselabel1='O2', ifcloselabel2='H', elselabel1='O1') calc = GULP(keywords='conp', shel=['O1', 'O2'], conditions=c) # Single point calculation cluster.calc = calc print(cluster.get_potential_energy()) # Optimization using the internal optimizer of GULP calc.set(keywords='conp opti') opt = calc.get_optimizer(cluster) opt.run(fmax=0.05) print(cluster.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/his.pdb000066400000000000000000000016601316323560300250750ustar00rootroot00000000000000COMPND HIS HISTIDINE REMARK HIS Part of HIC-Up: http://xray.bmc.uu.se/hicup REMARK HIS Extracted from PDB file pdb1wpu.ent HETATM 1 N HIS 4234 0.999 -1.683 -0.097 1.00 20.00 HETATM 2 CA HIS 4234 1.191 -0.222 -0.309 1.00 20.00 HETATM 3 C HIS 4234 2.641 0.213 -0.105 1.00 20.00 HETATM 4 O HIS 4234 3.529 -0.651 -0.222 1.00 20.00 HETATM 5 CB HIS 4234 0.245 0.546 0.619 1.00 20.00 HETATM 6 CG HIS 4234 -1.200 0.349 0.280 1.00 20.00 HETATM 7 ND1 HIS 4234 -1.854 -0.849 0.470 1.00 20.00 HETATM 8 CD2 HIS 4234 -2.095 1.176 -0.310 1.00 20.00 HETATM 9 CE1 HIS 4234 -3.087 -0.752 0.006 1.00 20.00 HETATM 10 NE2 HIS 4234 -3.258 0.467 -0.474 1.00 20.00 HETATM 11 OXT HIS 4234 2.889 1.404 0.141 1.00 20.00 REMARK HIS ENDHET ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/jacapo.rst000066400000000000000000000106021316323560300256060ustar00rootroot00000000000000.. module:: ase.calculators.jacapo :synopsis: ASE python interface for Dacapo ========================================================== Jacapo - ASE python interface for Dacapo ========================================================== Introduction ============ Jacapo_ is an ASE interface for Dacapo_ that is fully compatible with ASE. It replaces the old Dacapo interface using Numeric python and ASE2. The code was originally developed by John Kitchin and detailed documentation as well as many examples are available online: http://gilgamesh.cheme.cmu.edu/doc/software/jacapo/index.html Jacapo is included as an optional calculator in ASE and small differences to the above documentation may occur, and the documentation is no longer maintained. .. _Jacapo: http://gilgamesh.cheme.cmu.edu/doc/software/jacapo/index.html .. _Dacapo: http://wiki.fysik.dtu.dk/dacapo Jacapo calculator ================= The Jacapo interface is automatically installed with ase and can be imported using:: from ase.calculators.jacapo import Jacapo (You will need to have a working installation of Dacapo, however.) .. class:: Jacapo() Here is a list of available keywords to initialize the calculator: ============== ============ ===================================== keyword type description ============== ============ ===================================== ``nc`` ``str`` Output NetCDF file, or input file if nc already exists. ``outnc`` ``str`` Output file. By default equal to nc. ``atoms`` ``object`` Atoms object ``pw`` ``float`` Planewave cutoff in eV ``dw`` ``float`` Density cutoff in eV ``xc`` ``str`` Exchange-correlation functional. One of ['PZ','VWN','PW91','PBE','RPBE','revPBE'] ``nbands`` ``int`` Number of bands ``ft`` ``float`` Fermi temperature ``kpts`` ``list`` K-point grid, e.g. kpts = (2,2,1) ``spinpol`` ``boolean`` Turn on/off spin-polarization ``fixmagmom`` ``str`` Magnetic moment of the unit cell ``symmetry`` ``boolean`` Turn on/off symmetry reduction ``stress`` ``boolean`` Turn on/off stress calculation ``dipole`` ``boolean`` Turn on/off dipole correction ``ados`` ``dict`` Atom-projected density of states ``stay_alive`` ``boolean`` Turn on/off stay alive ``debug`` ``int`` Set debug level (0=off, 10=extreme) ``deletenc`` ``boolean`` If the nc file exists, delete it (to ensure a fresh run). Default is False. ============== ============ ===================================== Example ======= Here is an example of how to calculate the total energy of a H atom. .. warning:: This is an example only - the parameters are not physically meaningful! .. literalinclude:: ../../../ase/test/jacapo/jacapo.py :start-after: os :end-before: os.system Note that all calculator parameters should be set in the calculator definition itself. Do not attempt to use the calc.set_* commands as they are intended to be internal to the calculator. Note also that Dacapo can only operate with periodic boundary conditions, so be sure that pbc is set to True. Restarting from an old calculation ================================== If the file you specify to Jacapo with the ``nc`` keyword exists, Jacapo will assume you are attempting to restart an existing calculation. If you do not want this behavior, turn the flag ``deletenc`` to True in your calculator definition. For example, it is possible to continue a geometry optimization with something like this:: calc = Jacapo('old.nc', stay_alive=True) atoms = calc.get_atoms() dyn = QuasiNewton(atoms, logfile='qn.log') dyn.run(fmax=0.05) Note, that the stay_alive flag is not stored in the .nc file and must be set when the calculator instance is created. Atom-projected density of states ================================ To find the atom-projected density of states with Jacapo, first specify the ados dictionary in your calculator definition, as in:: calc = Jacapo( ... , ados={'energywindow': (-10., 5.), 'energywidth': 0.2, 'npoints': 250, 'cutoff': 1.0}) After this is established, you can use the get_ados command to get the desired ADOS data. For example:: energies, dos = calc.get_ados(atoms=[0], orbitals=['d'], cutoff='short', spin=[0]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/lammps.rst000066400000000000000000000036771316323560300256600ustar00rootroot00000000000000.. module:: ase.calculators.lammps ================== LAMMPS Calculators ================== LAMMPS_ (Large-scale Atomic/Molecular Massively Parallel Simulator) is a classical molecular dynamics code. There are two calculators that interface to the LAMMPS molecular dynamics code that can be used to solve an atoms model for energy, atom forces and cell stresses. They are: 1. :mod:`ase.clculators.LAMMPSrun` which interfaces to LAMMPS via writing a controlling input file that is then run automatically through LAMMPS and the results read back in. These results are currently limited to total energy, atomic forces and cell stress. 2. LAMMPSlib which uses the python interface that comes with LAMMPS, loads the LAMMPS program as a python library. The LAMMPSlib calculator then creates a '.lmp' object which is a running LAMMPS subroutine, so further commands can be sent to this object and executed until it is explicitly closed. Any additional variables calculated by LAMMPS can also be extracted. Note however, any mistakes in the code sent to the LAMMPS routine will cause python to terminate. ASE is licensed as LGPL and LAMMPS is GPL which 'prohibits' them from being linked together in a distribution such as ASE. As a result, LAMMPSlib is not distributed with the ASE project but is available separately at lammpslib_. Further explanation of the licensing is constained in :ref:`license info`. It should not matter which code you use, but if you want access to more of LAMMPS internal variables or to perform a more complicated simulation then use LAMMPSlib. It is important to know which code you are using because *when* you make an error in the LAMMPS code, debugging the is difficult and different for both calculators. Both of these interfaces are still experimental code and any problems should be reported to the ASE developers mailing list. .. _LAMMPS: http://lammps.sandia.gov .. _lammpslib: https://svn.fysik.dtu.dk/projects/ase-extra/trunk/ase/calculators ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/lammpsrun.rst000066400000000000000000000057431316323560300264010ustar00rootroot00000000000000.. module:: ase.calculators.LAMMPSrun ========= LAMMPSrun ========= Introduction ============ LAMMPS_ (Large-scale Atomic/Molecular Massively Parallel Simulator) is a classical molecular dynamics code. "LAMMPS has potentials for soft materials (biomolecules, polymers) and solid-state materials (metals, semiconductors) and coarse-grained or mesoscopic systems. It can be used to model atoms or, more generically, as a parallel particle simulator at the atomic, meso, or continuum scale." .. _LAMMPS: http://lammps.sandia.gov This is LAMMPSrun ASE implementation of the interface to LAMMPS_. Environment variables ===================== The environment variable :envvar:`LAMMPS_COMMAND` should contain the path to the lammps binary, or more generally, a command line possibly also including an MPI-launcher command. For example (in a Bourne-shell compatible environment): .. highlight:: bash :: $ export LAMMPS_COMMAND=/path/to/lmp_binary .. highlight:: python or possibly something similar to .. highlight:: bash :: $ export LAMMPS_COMMAND="/path/to/mpirun --np 4 lmp_binary" .. highlight:: python LAMMPS Calculator ================= The LAMMPS calculator first appeared in ASE version 3.5.0. At the time of the release of ASE 3.5.0, the LAMMPS calculator is still in a fairly early stage of development (if you are missing some feature, consider checking out the source code development tree or some more recent version of ASE). .. class:: LAMMPS(..., parameters={}, files=[], ...) Below follows a list with a selection of parameters ============== ========= ============== ============================= keyword type default value description ============== ========= ============== ============================= ``files`` ``list`` ``[]`` List of files needed by LAMMPS. Typically a list of potential files. ``parameters`` ``dict`` ``{}`` Dictionary with key-value pairs corresponding to commands and arguments. Command-argument pairs provided here will be used for overriding the the calculator defaults. ============== ========= ============== ============================= Example ======= A simple example. :: from ase import Atoms, Atom from ase.calculators.lammpsrun import LAMMPS a = [6.5, 6.5, 7.7] d = 2.3608 NaCl = Atoms([Atom('Na', [0, 0, 0]), Atom('Cl', [0, 0, d])], cell=a, pbc=True) calc = LAMMPS() NaCl.set_calculator(calc) print(NaCl.get_stress()) Setting up an OPLS calculation ============================== There are some modules to facilitate the setup of an OPLS force field calculation, see :mod:`ase.io.opls`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/loggingcalc.rst000066400000000000000000000003321316323560300266210ustar00rootroot00000000000000.. module:: ase.calculators.loggingcalc Logging Calculator ================== .. autoclass:: ase.calculators.loggingcalc.LoggingCalculator See the :mod:`ase.optimize.precon` module for an example of using this tool.ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/nwchem.rst000066400000000000000000000073301316323560300256360ustar00rootroot00000000000000.. module:: ase.calculators.nwchem ====== NWChem ====== `NWChem `_ is a computational chemistry code based on gaussian basis functions or plane-waves. Setup ===== .. highlight:: bash You first need to install a working copy of NWChem for ASE to call; follow the instructions on the `NWChem website `_. The default command that ASE will use to start NWChem is ``nwchem PREFIX.nw > PREFIX.out``. You can change this command by setting the environment variable :envvar:`ASE_NWCHEM_COMMAND`. (For example, add a line to your ``.bashrc`` with ``export ASE_NWCHEM_COMMAND="my new command"``.) The default command will only allow you to run NWChem on a single core. To run on multiple processors you will need to specify your MPI (or similar) command, which typically requires telling the MPI command the number of tasks to dedicate to the process. An example command to allow multiprocessing is ``mpirun -n $SLURM_NTASKS nwchem PREFIX.nw > PREFIX.out``, for the SLURM queueing system. If you use a different queueing system replace ``$SLURM_NTASKS`` with the appropriate variable, such as ``$PBS_NP``. Examples ======== Here is a command line example of how to optimize the geometry of a water molecule using the PBE density functional:: $ ase build H2O | ase run nwchem -p xc=PBE -f 0.02 Running: H2O LBFGS: 0 09:58:54 -2064.914841 1.9673 LBFGS: 1 09:58:55 -2064.976691 0.1723 LBFGS: 2 09:58:55 -2064.977120 0.0642 LBFGS: 3 09:58:55 -2064.977363 0.0495 LBFGS: 4 09:58:56 -2064.977446 0.0233 LBFGS: 5 09:58:56 -2064.977460 0.0059 $ ase gui H2O.traj@-1 -tg "a(1,0,2),d(0,1)" 102.591620591 1.00793234388 .. highlight:: python An example of creating an NWChem calculator in the python interface is:: from ase.calculators.nwchem import NWChem calc = NWChem(label='calc/nwchem', maxiter=2000, xc='B3LYP', basis='6-31+G*') Parameters ========== The list of possible parameters and their defaults is shown below. =============== ======== ======================== ============================ keyword type default value description =============== ======== ======================== ============================ ``label`` ``str`` ``'nwchem'`` Label for saved files. ``xc`` ``str`` ``'LDA'`` Exchange-correlation functional. ``smearing`` ``None`` Smearing. ``charge`` ``None`` Charge ``task`` ``str`` ``'gradient'`` Task to perform. 'gradient' means force call. ``geometry`` ``str`` ``'nocenter noautosym'`` Geometry arguments. Note NWChem centers the coordinates by default. ``convergence`` ``dict`` Convergence criteria. ``basis`` ``str`` ``'3-21G'`` Basic set. ``print`` ``str`` ``None`` Flags within the DFT block steering the output details. ``basispar`` ``None`` ``ecp`` ``None`` ``so`` ``None`` ``spinorbit`` ``None`` ``odft`` ``None`` ``raw`` ``''`` Raw text outside DFT block control string. =============== ======== ======================== ============================ See the source code link below for further details. .. autoclass:: NWChem ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/octopus.rst000066400000000000000000000065611316323560300260560ustar00rootroot00000000000000.. module:: ase.calculators.octopus ======= Octopus ======= Introduction ============ Octopus_ is a density functional theory code focusing on time-dependent simulations. It supports several other calculation modes as well. This page documents the ASE interface to Octopus. The interface is written for Octopus tetricus (svn version 14450 or newer) but may be compatible with older versions as well. .. _Octopus: http://tddft.org/programs/octopus Examples ======== Structure optimization ---------------------- Structure optimization of ethanol molecule: .. literalinclude:: octopus_ethanol.py Numerical parameters can be specified as strings as well. The Octopus default ``BoxShape`` is used unless specified otherwise. This means that the cell of non-periodic Atoms is ignored unless ``BoxShape = parallelepiped``. In the calculation above, if ``BoxShape`` is removed, the calculation will default to ``BoxShape = minimum`` and the specified vacuum will have no effect. Periodic system --------------- Calculate density of states of silicon: .. literalinclude:: octopus_silicon.py Note how a *block* such as ``KPointsGrid`` is specified as a list of lists. In general, a block is a list of lists of strings. Numerical datatypes are converted to strings. Time-dependent density functional theory ---------------------------------------- *TODO* Write script Additional information ====================== The interface works by reading and writing files. When triggering a calculation, ASE writes an input file and proceeds to run Octopus. Almost any keywords can be given to the Octopus calculator, and they will be passed almost uncritically to Octopus. This results in mostly predictable but at times non-user-friendly behaviour. ASE always works with ``Units = ev_angstrom``. Keywords that attempt to interfere with this will result in an error, or unspecified behaviour if there are unhandled cases. By default, Octopus output is written under the directory ``ink-pool``. The ``label`` keyword can be used to specify a different directory. Hints ----- Octopus input files can be loaded by the ASE GUI. You can visualize an Octopus input file by running ``ase gui inp``. Bugs and misbehaviour --------------------- Please report misbehaviour to the :ref:`ASE-developers ` unless you are certain that the behaviour is linked to Octopus and not the ASE interface. Below are listed some known bugs, issues, and limitations. These may or may not be fixed, depending on user response. * When parsing input files, arithmetic, calls to GNU GSL, or assignments from keywords are presently unsupported. Only statements of the form ``keyword = value`` or blocks are supported. * Most Octopus keywords are passed directly to Octopus. The ASE interface itself is not logically aware of their meaning. Only those necessary to construct the Atoms are handled individually. There may exist keywords that affect the Atoms (the cell or geometry) which are not handled by the interface, and therefore result in confusing behaviour. In particular, avoid changing the units. * Subsequent calculations always overwrite files. This is probably fine for densities in a structure optimization (the density is reused on each step), but not useful for text output. Therefore, avoid keywords like ``stdout='"out.log"'`` and redirect stdout and stderr by other means. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/octopus_ethanol.py000066400000000000000000000007411316323560300274020ustar00rootroot00000000000000from ase.collections import g2 from ase.calculators.octopus import Octopus from ase.optimize import QuasiNewton # Ethanol molecule with somewhat randomized initial positions: system = g2['CH3CH2OH'] system.rattle(stdev=0.1, seed=42) system.center(vacuum=3.0) calc = Octopus(label='ethanol', Spacing=0.25, BoxShape='parallelepiped') system.set_calculator(calc) opt = QuasiNewton(system, logfile='opt.log', trajectory='opt.traj') opt.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/octopus_silicon.py000066400000000000000000000006621316323560300274120ustar00rootroot00000000000000from ase.calculators.octopus import Octopus from ase.build import bulk system = bulk('Si', orthorhombic=True) calc = Octopus(label='silicon', Spacing=0.25, KPointsGrid=[[4, 4, 4]], KPointsUseSymmetries=True, Output='dos + density + potential', OutputFormat='xcrysden', DosGamma=0.1) system.set_calculator(calc) system.get_potential_energy() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/others.rst000066400000000000000000000006161316323560300256610ustar00rootroot00000000000000========================== Other built-in calculators ========================== .. module:: ase.calculators.tip3p TIP3P ===== .. autoclass:: TIP3P .. module:: ase.calculators.tip4p TIP4P ===== .. autoclass:: TIP4P .. module:: ase.calculators.lj Lennard-Jones ============= .. autoclass:: LennardJones .. module:: ase.calculators.morse Morse ===== .. autoclass:: MorsePotential ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/qmmm.rst000066400000000000000000000024361316323560300253260ustar00rootroot00000000000000.. module:: ase.calculators.qmmm QMMM ==== .. seealso:: The :ref:`qmmm` tutorial. Simple QMMM calculations ------------------------ .. autoclass:: SimpleQMMM This type of QMMM can combine any pair of ASE calculators:: from ase.calculators.qmmm import SimpleQMMM atoms = ... atoms.calc = SimpleQMMM([0, 1, 2], QMCalculator(...), MMCalculator(...)) where ``[0, 1, 2]`` would select the first three atoms for the QM-part. Explicit Interaction QMMM ------------------------- .. autoclass:: EIQMMM Here, you need to specify the interaction:: from ase.calculators.qmmm import EIQMMM, LJInteraction from ase.calculators.tip3p import epsilon0, sigma0 lj = LJInteraction({'OO': (epsilon0, sigma0)}) atoms.calc = EIQMMM([0, 1, 2], QMCalculator(...), MMCalculator(...), interaction=lj) For Lennard-Jones type of interactions you can use: .. autoclass:: LJInteractions You can control how the QM part is embedded in the MM part by supplying your own embedding object when you construct the :class:`EIQMMM` instance. The Embedding object will be specific to the QM calculator you want to use. The default is this one: .. autoclass:: Embedding ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/siesta.rst000066400000000000000000000202531316323560300256440ustar00rootroot00000000000000.. module:: ase.calculators.siesta ====== SIESTA ====== Introduction ============ SIESTA_ is a density-functional theory code for very large systems based on atomic orbital (LCAO) basis sets. .. _SIESTA: http://www.uam.es/siesta/ Environment variables ===================== The environment variable :envvar:`SIESTA_COMMAND` must hold the command to invoke the siesta calculation. The variable must be a python format string with exactly two string fields for the input and output files. Examples: ``siesta < %s > %s``, ``mpirun -np 4 /bin/siesta3.2 < %s > %s``. A default directory holding pseudopotential files :file:`.vps/.psf` can be defined to avoid defining this every time the calculator is used. This directory can be set by the environment variable :envvar:`SIESTA_PP_PATH`. Set both environment variables in your shell configuration file: .. highlight:: bash :: $ export SIESTA_COMMAND="siesta < ./%s > ./%s" $ export SIESTA_PP_PATH=$HOME/mypps .. highlight:: python Alternatively, the path to the pseudopotentials can be given in the calculator initialization. ===================== ========= ============= ===================================== keyword type default value description ===================== ========= ============= ===================================== ``pseudo_path`` ``str`` ``None`` Directory for pseudopotentials to use None means using $SIESTA_PP_PATH ===================== ========= ============= ===================================== SIESTA Calculator ================= These parameters are set explicitly and overrides the native values if different. ==================== ========= ============= ===================================== keyword type default value description ==================== ========= ============= ===================================== ``label`` ``str`` ``'siesta'`` Name of the output file ``mesh_cutoff`` ``float`` ``200*Ry`` Mesh cut-off energy in eV ``xc`` ``str`` ``'LDA'`` Exchange-correlation functional. Corresponds to either XC.functional or XC.authors keyword in SIESTA ``energy_shift`` ``float`` ``100 meV`` Energy shift for determining cutoff radii ``kpts`` ``list`` ``[1,1,1]`` Monkhorst-Pack k-point sampling ``basis_set`` ``str`` ``DZP`` Type of basis set ('SZ', 'DZ', 'SZP', 'DZP') ``spin`` ``float`` ``COLLINEAR`` The spin approximation used, must be either ``UNPOLARIZED``, ``COLLINEAR`` or ``FULL`` ``species`` ``list`` ``[]`` A method for specifying a specific description for some atoms. ``pseudo_qualifier`` ``str`` ``None`` String for picking out specific type type of pseudopotentials. Giving ``example`` means that ``H.example.psf`` or ``H.example.vps`` will be used. None means that the XC.functional keyword is used, i.e. ``H.lda.psf`` ==================== ========= ============= ===================================== Most other parameters are set to the default values of the native interface. Extra FDF parameters ==================== The SIESTA code reads the input parameters for any calculation from a :file:`.fdf` file. This means that you can set parameters by manually setting entries in this input :file:`.fdf` file. This is done by the argument: >>> Siesta(fdf_arguments={'variable_name': value, 'other_name': other_value}) For example, the ``DM.MixingWeight`` can be set using >>> Siesta(fdf_arguments={'DM.MixingWeight': 0.01}) The explicit fdf arguments will always override those given by other keywords, even if it breaks calculator functionality. The complete list of the FDF entries can be found in the official `SIESTA manual`_. .. _SIESTA manual: http://departments.icmab.es/leem/siesta/Documentation/Manuals/manuals.html Example ======= Here is an example of how to calculate the total energy for bulk Silicon, using a double-zeta basis generated by specifying a given energy-shift: >>> from ase import Atoms >>> from ase.calculators.siesta import Siesta >>> from ase.units import Ry >>> >>> a0 = 5.43 >>> bulk = Atoms('Si2', [(0, 0, 0), ... (0.25, 0.25, 0.25)], ... pbc=True) >>> b = a0 / 2 >>> bulk.set_cell([(0, b, b), ... (b, 0, b), ... (b, b, 0)], scale_atoms=True) >>> >>> calc = Siesta(label='Si', ... xc='PBE', ... mesh_cutoff=200 * Ry, ... energy_shift=0.01 * Ry, ... basis_set='DZ', ... kpts=[10, 10, 10], ... fdf_arguments={'DM.MixingWeight': 0.1, ... 'MaxSCFIterations': 100}, ... ) >>> bulk.set_calculator(calc) >>> e = bulk.get_potential_energy() Here, the only input information on the basis set is, that it should be double-zeta (``basis='DZP'``) and that the confinement potential should result in an energy shift of 0.01 Rydberg (the ``energy_shift=0.01 * Ry`` keyword). Sometimes it can be necessary to specify more information on the basis set. Defining Custom Species ======================= Standard basis sets can be set by the keyword ``basis_set`` directly, but for anything more complex than one standard basis size for all elements, a list of ``species`` must be defined. Each specie is identified by atomic element and the tag set on the atom. For instance if we wish to investigate a H2 molecule and put a ghost atom (the basis set corresponding to an atom but without the actual atom) in the middle with a special type of basis you would write: >>> from ase.calculators.siesta.parameters import Specie, PAOBasisBlock >>> from ase import Atoms >>> from ase.calculators.siesta import Siesta >>> atoms = Atoms( ... '3H', ... [(0.0, 0.0, 0.0), ... (0.0, 0.0, 0.5), ... (0.0, 0.0, 1.0)], ... cell=[10, 10, 10]) >>> atoms.set_tags([0, 1, 0]) >>> >>> basis_set = PAOBasisBlock( ... """1 ... 0 2 S 0.2 ... 0.0 0.0""") >>> >>> siesta = Siesta( ... species=[ ... Specie(symbol='H', tag=None, basis_set='SZ'), ... Specie(symbol='H', tag=1, basis_set=basis_set, ghost=True)]) >>> >>> atoms.set_calculator(siesta) When more species are defined, species defined with a tag has the highest priority. General species with ``tag=None`` has a lower priority. Finally, if no species apply to an atom, the general calculator keywords are used. Pseudopotentials ================ Pseudopotential files in the ``.psf`` or ``.vps`` formats are needed. Pseudopotentials generated from the ABINIT code and converted to the SIESTA format are available in the `SIESTA`_ website. A database of user contributed pseudopotentials is also available there. You can also find an on-line pseudopotential generator_ from the OCTOPUS code. .. _generator: http://www.tddft.org/programs/octopus/wiki/index.php/Pseudopotentials Species can also be used to specify pseudopotentials: >>> specie = Specie(symbol='H', tag=1, pseudopotential='H.example.psf') When specifying the pseudopotential in this manner, both absolute and relative paths can be given. Relative paths are considered relative to the default pseudopotential path. Restarting from an old Calculation ================================== If you want to rerun an old SIESTA calculation, whether made using the ASE interface or not, you can set the keyword ``restart`` to the siesta ``.XV`` file. The keyword ``ignore_bad_restart`` (True/False) will decide whether a broken file will result in an error(False) or the whether the calculator will simply continue without the restart file. Further Examples ================ See also ``ase/test/calculators/siesta/test_scripts`` for further examples on how the calculator can be used. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/spc216.gro000066400000000000000000000711221316323560300253520ustar00rootroot00000000000000216H2O,WATJP01,SPC216,SPC-MODEL,300K,BOX(M)=1.86206NM,WFVG,MAR. 1984 648 1SOL OW 1 .230 .628 .113 1SOL HW1 2 .137 .626 .150 1SOL HW2 3 .231 .589 .021 2SOL OW 4 .225 .275 -.866 2SOL HW1 5 .260 .258 -.774 2SOL HW2 6 .137 .230 -.878 3SOL OW 7 .019 .368 .647 3SOL HW1 8 -.063 .411 .686 3SOL HW2 9 -.009 .295 .584 4SOL OW 10 .569 -.587 -.697 4SOL HW1 11 .476 -.594 -.734 4SOL HW2 12 .580 -.498 -.653 5SOL OW 13 -.307 -.351 .703 5SOL HW1 14 -.364 -.367 .784 5SOL HW2 15 -.366 -.341 .623 6SOL OW 16 -.119 .618 .856 6SOL HW1 17 -.086 .712 .856 6SOL HW2 18 -.068 .564 .922 7SOL OW 19 -.727 .703 .717 7SOL HW1 20 -.670 .781 .692 7SOL HW2 21 -.787 .729 .793 8SOL OW 22 -.107 .607 .231 8SOL HW1 23 -.119 .594 .132 8SOL HW2 24 -.137 .526 .280 9SOL OW 25 .768 -.718 -.839 9SOL HW1 26 .690 -.701 -.779 9SOL HW2 27 .802 -.631 -.875 10SOL OW 28 .850 .798 -.039 10SOL HW1 29 .846 .874 .026 10SOL HW2 30 .872 .834 -.130 11SOL OW 31 .685 -.850 .665 11SOL HW1 32 .754 -.866 .735 11SOL HW2 33 .612 -.793 .703 12SOL OW 34 .686 -.701 -.059 12SOL HW1 35 .746 -.622 -.045 12SOL HW2 36 .600 -.670 -.100 13SOL OW 37 .335 -.427 -.801 13SOL HW1 38 .257 -.458 -.854 13SOL HW2 39 .393 -.369 -.858 14SOL OW 40 -.402 -.357 -.523 14SOL HW1 41 -.378 -.263 -.497 14SOL HW2 42 -.418 -.411 -.441 15SOL OW 43 .438 .392 -.363 15SOL HW1 44 .520 .336 -.354 15SOL HW2 45 .357 .334 -.359 16SOL OW 46 -.259 .447 .737 16SOL HW1 47 -.333 .493 .687 16SOL HW2 48 -.208 .515 .790 17SOL OW 49 .231 -.149 .483 17SOL HW1 50 .265 -.072 .537 17SOL HW2 51 .275 -.149 .393 18SOL OW 52 -.735 -.521 -.172 18SOL HW1 53 -.688 -.521 -.084 18SOL HW2 54 -.783 -.608 -.183 19SOL OW 55 .230 -.428 .538 19SOL HW1 56 .204 -.332 .538 19SOL HW2 57 .159 -.482 .583 20SOL OW 58 .240 -.771 .886 20SOL HW1 59 .254 -.855 .938 20SOL HW2 60 .185 -.707 .941 21SOL OW 61 .620 -.076 -.423 21SOL HW1 62 .528 -.093 -.388 21SOL HW2 63 .648 .016 -.397 22SOL OW 64 .606 -.898 .123 22SOL HW1 65 .613 -.814 .069 22SOL HW2 66 .652 -.885 .211 23SOL OW 67 -.268 .114 -.382 23SOL HW1 68 -.286 .181 -.454 23SOL HW2 69 -.271 .160 -.293 24SOL OW 70 .122 .643 .563 24SOL HW1 71 .077 .555 .580 24SOL HW2 72 .121 .697 .647 25SOL OW 73 -.020 -.095 .359 25SOL HW1 74 .034 -.124 .439 25SOL HW2 75 .010 -.005 .330 26SOL OW 76 .027 -.266 .117 26SOL HW1 77 .008 -.362 .138 26SOL HW2 78 -.006 -.208 .192 27SOL OW 79 -.173 .922 .612 27SOL HW1 80 -.078 .893 .620 27SOL HW2 81 -.181 .987 .537 28SOL OW 82 -.221 -.754 .432 28SOL HW1 83 -.135 -.752 .380 28SOL HW2 84 -.207 -.707 .520 29SOL OW 85 .113 .737 -.265 29SOL HW1 86 .201 .724 -.220 29SOL HW2 87 .100 .834 -.287 30SOL OW 88 .613 -.497 .726 30SOL HW1 89 .564 -.584 .735 30SOL HW2 90 .590 -.454 .639 31SOL OW 91 -.569 -.634 -.439 31SOL HW1 92 -.532 -.707 -.497 31SOL HW2 93 -.517 -.629 -.354 32SOL OW 94 .809 .004 .502 32SOL HW1 95 .849 .095 .493 32SOL HW2 96 .709 .012 .508 33SOL OW 97 .197 -.886 -.598 33SOL HW1 98 .286 -.931 -.612 33SOL HW2 99 .124 -.951 -.617 34SOL OW 100 -.337 -.863 .190 34SOL HW1 101 -.400 -.939 .203 34SOL HW2 102 -.289 -.845 .276 35SOL OW 103 -.675 -.070 -.246 35SOL HW1 104 -.651 -.010 -.322 35SOL HW2 105 -.668 -.165 -.276 36SOL OW 106 .317 .251 -.061 36SOL HW1 107 .388 .322 -.055 36SOL HW2 108 .229 .290 -.033 37SOL OW 109 -.396 -.445 -.909 37SOL HW1 110 -.455 -.439 -.829 37SOL HW2 111 -.411 -.533 -.955 38SOL OW 112 -.195 -.148 .572 38SOL HW1 113 -.236 -.171 .484 38SOL HW2 114 -.213 -.222 .637 39SOL OW 115 .598 .729 .270 39SOL HW1 116 .622 .798 .202 39SOL HW2 117 .520 .762 .324 40SOL OW 118 -.581 .345 -.918 40SOL HW1 119 -.667 .295 -.931 40SOL HW2 120 -.519 .291 -.862 41SOL OW 121 -.286 -.200 .307 41SOL HW1 122 -.197 -.154 .310 41SOL HW2 123 -.307 -.224 .212 42SOL OW 124 .807 .605 -.397 42SOL HW1 125 .760 .602 -.308 42SOL HW2 126 .756 .550 -.463 43SOL OW 127 -.468 .469 -.188 43SOL HW1 128 -.488 .512 -.100 43SOL HW2 129 -.390 .407 -.179 44SOL OW 130 -.889 .890 -.290 44SOL HW1 131 -.843 .806 -.319 44SOL HW2 132 -.945 .924 -.365 45SOL OW 133 -.871 .410 -.620 45SOL HW1 134 -.948 .444 -.566 45SOL HW2 135 -.905 .359 -.699 46SOL OW 136 -.821 .701 .429 46SOL HW1 137 -.795 .697 .525 46SOL HW2 138 -.906 .650 .415 47SOL OW 139 .076 .811 .789 47SOL HW1 140 .175 .799 .798 47SOL HW2 141 .052 .906 .810 48SOL OW 142 .130 -.041 -.291 48SOL HW1 143 .120 -.056 -.192 48SOL HW2 144 .044 -.005 -.327 49SOL OW 145 .865 .348 .195 49SOL HW1 146 .924 .411 .146 49SOL HW2 147 .884 .254 .166 50SOL OW 148 -.143 .585 -.031 50SOL HW1 149 -.169 .674 -.067 50SOL HW2 150 -.145 .517 -.104 51SOL OW 151 -.500 -.718 .545 51SOL HW1 152 -.417 -.747 .497 51SOL HW2 153 -.549 -.651 .489 52SOL OW 154 .550 .196 .885 52SOL HW1 155 .545 .191 .985 52SOL HW2 156 .552 .292 .856 53SOL OW 157 -.854 -.406 .477 53SOL HW1 158 -.900 -.334 .425 53SOL HW2 159 -.858 -.386 .575 54SOL OW 160 .351 -.061 .853 54SOL HW1 161 .401 -.147 .859 54SOL HW2 162 .416 .016 .850 55SOL OW 163 -.067 -.796 .873 55SOL HW1 164 -.129 -.811 .797 55SOL HW2 165 -.119 -.785 .958 56SOL OW 166 -.635 -.312 -.356 56SOL HW1 167 -.629 -.389 -.292 56SOL HW2 168 -.687 -.338 -.436 57SOL OW 169 .321 -.919 .242 57SOL HW1 170 .403 -.880 .200 57SOL HW2 171 .294 -1.001 .193 58SOL OW 172 -.404 .735 .728 58SOL HW1 173 -.409 .670 .803 58SOL HW2 174 -.324 .794 .741 59SOL OW 175 .461 -.596 -.135 59SOL HW1 176 .411 -.595 -.221 59SOL HW2 177 .398 -.614 -.059 60SOL OW 178 -.751 -.086 .237 60SOL HW1 179 -.811 -.148 .287 60SOL HW2 180 -.720 -.130 .152 61SOL OW 181 .202 .285 -.364 61SOL HW1 182 .122 .345 -.377 61SOL HW2 183 .192 .236 -.278 62SOL OW 184 -.230 -.485 .081 62SOL HW1 185 -.262 -.391 .071 62SOL HW2 186 -.306 -.548 .069 63SOL OW 187 .464 -.119 .323 63SOL HW1 188 .497 -.080 .409 63SOL HW2 189 .540 -.126 .258 64SOL OW 190 -.462 .107 .426 64SOL HW1 191 -.486 .070 .336 64SOL HW2 192 -.363 .123 .430 65SOL OW 193 .249 -.077 -.621 65SOL HW1 194 .306 -.142 -.571 65SOL HW2 195 .233 -.110 -.714 66SOL OW 196 -.922 -.164 .904 66SOL HW1 197 -.842 -.221 .925 66SOL HW2 198 -.971 -.204 .827 67SOL OW 199 .382 .700 .480 67SOL HW1 200 .427 .610 .477 67SOL HW2 201 .288 .689 .513 68SOL OW 202 -.315 .222 -.133 68SOL HW1 203 -.320 .259 -.041 68SOL HW2 204 -.387 .153 -.145 69SOL OW 205 .614 .122 .117 69SOL HW1 206 .712 .100 .124 69SOL HW2 207 .583 .105 .024 70SOL OW 208 .781 .264 -.113 70SOL HW1 209 .848 .203 -.070 70SOL HW2 210 .708 .283 -.048 71SOL OW 211 .888 -.348 -.667 71SOL HW1 212 .865 -.373 -.761 71SOL HW2 213 .949 -.417 -.628 72SOL OW 214 -.511 .590 -.429 72SOL HW1 215 -.483 .547 -.344 72SOL HW2 216 -.486 .686 -.428 73SOL OW 217 .803 -.460 .924 73SOL HW1 218 .893 -.446 .882 73SOL HW2 219 .732 -.458 .853 74SOL OW 220 .922 .503 .899 74SOL HW1 221 .897 .494 .803 74SOL HW2 222 .970 .421 .930 75SOL OW 223 .539 .064 .512 75SOL HW1 224 .458 .065 .570 75SOL HW2 225 .542 .147 .457 76SOL OW 226 -.428 -.674 .041 76SOL HW1 227 -.396 -.750 .098 76SOL HW2 228 -.520 -.647 .071 77SOL OW 229 .297 .035 .171 77SOL HW1 230 .346 .119 .150 77SOL HW2 231 .359 -.030 .216 78SOL OW 232 -.927 .236 .480 78SOL HW1 233 -.975 .277 .402 78SOL HW2 234 -.828 .234 .461 79SOL OW 235 -.786 .683 -.398 79SOL HW1 236 -.866 .622 -.395 79SOL HW2 237 -.705 .630 -.422 80SOL OW 238 -.635 -.292 .793 80SOL HW1 239 -.614 -.218 .728 80SOL HW2 240 -.567 -.292 .866 81SOL OW 241 .459 -.710 .741 81SOL HW1 242 .388 -.737 .806 81SOL HW2 243 .433 -.738 .648 82SOL OW 244 -.591 -.065 .591 82SOL HW1 245 -.547 -.001 .527 82SOL HW2 246 -.641 -.013 .661 83SOL OW 247 -.830 .549 .016 83SOL HW1 248 -.871 .631 -.023 83SOL HW2 249 -.766 .575 .089 84SOL OW 250 .078 .556 -.476 84SOL HW1 251 .170 .555 -.517 84SOL HW2 252 .072 .630 -.409 85SOL OW 253 .561 .222 -.715 85SOL HW1 254 .599 .138 -.678 85SOL HW2 255 .473 .241 -.671 86SOL OW 256 .866 .454 .642 86SOL HW1 257 .834 .526 .580 86SOL HW2 258 .890 .373 .589 87SOL OW 259 -.845 .039 .753 87SOL HW1 260 -.917 .044 .684 87SOL HW2 261 -.869 -.030 .822 88SOL OW 262 -.433 -.689 .867 88SOL HW1 263 -.488 -.773 .860 88SOL HW2 264 -.407 -.660 .775 89SOL OW 265 -.396 .590 -.870 89SOL HW1 266 -.426 .495 -.863 89SOL HW2 267 -.323 .606 -.804 90SOL OW 268 -.005 .833 .377 90SOL HW1 269 .037 .769 .441 90SOL HW2 270 -.043 .782 .299 91SOL OW 271 .488 -.477 .174 91SOL HW1 272 .401 -.492 .221 91SOL HW2 273 .471 -.451 .079 92SOL OW 274 -.198 -.582 .657 92SOL HW1 275 -.099 -.574 .671 92SOL HW2 276 -.243 -.498 .688 93SOL OW 277 -.472 .575 .078 93SOL HW1 278 -.526 .554 .159 93SOL HW2 279 -.381 .534 .087 94SOL OW 280 .527 .256 .328 94SOL HW1 281 .554 .197 .253 94SOL HW2 282 .527 .351 .297 95SOL OW 283 -.108 -.639 -.274 95SOL HW1 284 -.017 -.678 -.287 95SOL HW2 285 -.100 -.543 -.250 96SOL OW 286 -.798 -.515 -.522 96SOL HW1 287 -.878 -.538 -.467 96SOL HW2 288 -.715 -.541 -.473 97SOL OW 289 -.270 -.233 -.237 97SOL HW1 290 -.243 -.199 -.327 97SOL HW2 291 -.191 -.271 -.191 98SOL OW 292 -.751 -.667 -.762 98SOL HW1 293 -.791 -.623 -.681 98SOL HW2 294 -.792 -.630 -.845 99SOL OW 295 -.224 -.763 -.783 99SOL HW1 296 -.219 -.682 -.724 99SOL HW2 297 -.310 -.761 -.834 100SOL OW 298 .915 .089 -.460 100SOL HW1 299 .940 .069 -.555 100SOL HW2 300 .987 .145 -.418 101SOL OW 301 -.882 -.746 -.143 101SOL HW1 302 -.981 -.740 -.133 101SOL HW2 303 -.859 -.826 -.199 102SOL OW 304 .705 -.812 .368 102SOL HW1 305 .691 -.805 .467 102SOL HW2 306 .789 -.863 .350 103SOL OW 307 .410 .813 -.611 103SOL HW1 308 .496 .825 -.561 103SOL HW2 309 .368 .726 -.584 104SOL OW 310 -.588 .386 -.600 104SOL HW1 311 -.567 .460 -.536 104SOL HW2 312 -.677 .403 -.643 105SOL OW 313 .064 -.298 -.531 105SOL HW1 314 .018 -.216 -.565 105SOL HW2 315 .162 -.279 -.522 106SOL OW 316 .367 -.762 .501 106SOL HW1 317 .360 -.679 .445 106SOL HW2 318 .371 -.842 .441 107SOL OW 319 .566 .537 .865 107SOL HW1 320 .578 .603 .791 107SOL HW2 321 .612 .571 .948 108SOL OW 322 -.610 -.514 .388 108SOL HW1 323 -.560 -.437 .428 108SOL HW2 324 -.705 -.512 .420 109SOL OW 325 -.590 -.417 -.720 109SOL HW1 326 -.543 -.404 -.633 109SOL HW2 327 -.656 -.491 -.711 110SOL OW 328 -.280 .639 .472 110SOL HW1 329 -.311 .700 .545 110SOL HW2 330 -.230 .691 .403 111SOL OW 331 .354 -.352 -.533 111SOL HW1 332 .333 -.396 -.620 111SOL HW2 333 .451 -.326 -.530 112SOL OW 334 .402 .751 -.264 112SOL HW1 335 .470 .806 -.311 112SOL HW2 336 .442 .663 -.237 113SOL OW 337 -.275 .779 -.192 113SOL HW1 338 -.367 .817 -.197 113SOL HW2 339 -.215 .826 -.257 114SOL OW 340 -.849 .105 -.092 114SOL HW1 341 -.843 .190 -.144 114SOL HW2 342 -.817 .029 -.149 115SOL OW 343 .504 .050 -.122 115SOL HW1 344 .462 -.007 -.192 115SOL HW2 345 .438 .119 -.090 116SOL OW 346 .573 .870 -.833 116SOL HW1 347 .617 .959 -.842 116SOL HW2 348 .510 .870 -.756 117SOL OW 349 -.502 .862 -.817 117SOL HW1 350 -.577 .862 -.883 117SOL HW2 351 -.465 .770 -.808 118SOL OW 352 -.653 .525 .275 118SOL HW1 353 -.640 .441 .329 118SOL HW2 354 -.682 .599 .335 119SOL OW 355 .307 .213 -.631 119SOL HW1 356 .284 .250 -.541 119SOL HW2 357 .277 .118 -.637 120SOL OW 358 .037 -.552 -.580 120SOL HW1 359 .090 -.601 -.512 120SOL HW2 360 .059 -.454 -.575 121SOL OW 361 .732 .634 -.798 121SOL HW1 362 .791 .608 -.874 121SOL HW2 363 .704 .730 -.809 122SOL OW 364 -.134 -.927 -.008 122SOL HW1 365 -.180 -.934 -.097 122SOL HW2 366 -.196 -.883 .058 123SOL OW 367 .307 .063 .618 123SOL HW1 368 .296 .157 .651 123SOL HW2 369 .302 -.000 .695 124SOL OW 370 -.240 .367 .374 124SOL HW1 371 -.238 .291 .438 124SOL HW2 372 -.288 .444 .414 125SOL OW 373 -.839 .766 -.896 125SOL HW1 374 -.824 .787 -.800 125SOL HW2 375 -.869 .671 -.905 126SOL OW 376 -.882 -.289 -.162 126SOL HW1 377 -.902 -.245 -.250 126SOL HW2 378 -.843 -.380 -.178 127SOL OW 379 -.003 -.344 -.257 127SOL HW1 380 .011 -.317 -.352 127SOL HW2 381 .080 -.322 -.204 128SOL OW 382 .350 .898 -.058 128SOL HW1 383 .426 .942 -.010 128SOL HW2 384 .385 .851 -.140 129SOL OW 385 -.322 .274 .125 129SOL HW1 386 -.383 .199 .148 129SOL HW2 387 -.300 .326 .208 130SOL OW 388 -.559 .838 .042 130SOL HW1 389 -.525 .745 .057 130SOL HW2 390 -.541 .865 -.053 131SOL OW 391 -.794 -.529 .849 131SOL HW1 392 -.787 -.613 .794 131SOL HW2 393 -.732 -.460 .813 132SOL OW 394 .319 .810 -.913 132SOL HW1 395 .412 .846 -.908 132SOL HW2 396 .313 .725 -.861 133SOL OW 397 .339 .509 -.856 133SOL HW1 398 .287 .426 -.873 133SOL HW2 399 .416 .514 -.920 134SOL OW 400 .511 .415 -.054 134SOL HW1 401 .493 .460 .034 134SOL HW2 402 .553 .480 -.117 135SOL OW 403 -.724 .380 -.184 135SOL HW1 404 -.769 .443 -.120 135SOL HW2 405 -.631 .411 -.201 136SOL OW 406 -.702 .207 -.385 136SOL HW1 407 -.702 .271 -.308 136SOL HW2 408 -.674 .255 -.468 137SOL OW 409 .008 -.536 .200 137SOL HW1 410 -.085 -.515 .169 137SOL HW2 411 .018 -.635 .213 138SOL OW 412 .088 -.061 .927 138SOL HW1 413 .046 -.147 .900 138SOL HW2 414 .182 -.058 .893 139SOL OW 415 .504 -.294 .910 139SOL HW1 416 .570 -.220 .919 139SOL HW2 417 .548 -.373 .868 140SOL OW 418 -.860 .796 -.624 140SOL HW1 419 -.819 .764 -.538 140SOL HW2 420 -.956 .769 -.627 141SOL OW 421 .040 .544 -.748 141SOL HW1 422 .125 .511 -.789 141SOL HW2 423 .053 .559 -.650 142SOL OW 424 .189 .520 -.140 142SOL HW1 425 .248 .480 -.210 142SOL HW2 426 .131 .591 -.181 143SOL OW 427 -.493 -.912 -.202 143SOL HW1 428 -.454 -.823 -.182 143SOL HW2 429 -.483 -.932 -.299 144SOL OW 430 .815 .572 .325 144SOL HW1 431 .822 .483 .279 144SOL HW2 432 .721 .606 .317 145SOL OW 433 -.205 .604 -.656 145SOL HW1 434 -.243 .535 -.594 145SOL HW2 435 -.123 .568 -.700 146SOL OW 436 .252 -.298 -.118 146SOL HW1 437 .222 -.241 -.042 146SOL HW2 438 .245 -.395 -.092 147SOL OW 439 .671 .464 -.593 147SOL HW1 440 .637 .375 -.623 147SOL HW2 441 .697 .518 -.673 148SOL OW 442 .930 -.184 -.397 148SOL HW1 443 .906 -.202 -.492 148SOL HW2 444 .960 -.090 -.387 149SOL OW 445 .473 .500 .191 149SOL HW1 446 .534 .580 .195 149SOL HW2 447 .378 .531 .198 150SOL OW 448 .159 -.725 -.396 150SOL HW1 449 .181 -.786 -.320 150SOL HW2 450 .169 -.774 -.482 151SOL OW 451 -.515 -.803 -.628 151SOL HW1 452 -.491 -.866 -.702 151SOL HW2 453 -.605 -.763 -.646 152SOL OW 454 -.560 .855 .309 152SOL HW1 455 -.646 .824 .351 152SOL HW2 456 -.564 .841 .210 153SOL OW 457 -.103 -.115 -.708 153SOL HW1 458 -.042 -.085 -.781 153SOL HW2 459 -.141 -.204 -.730 154SOL OW 460 -.610 -.131 -.734 154SOL HW1 461 -.526 -.126 -.788 154SOL HW2 462 -.633 -.227 -.716 155SOL OW 463 .083 -.604 -.840 155SOL HW1 464 .078 -.605 -.740 155SOL HW2 465 .000 -.645 -.878 156SOL OW 466 .688 -.200 -.146 156SOL HW1 467 .632 -.119 -.137 156SOL HW2 468 .740 -.196 -.232 157SOL OW 469 .903 .086 .133 157SOL HW1 470 .954 .087 .047 157SOL HW2 471 .959 .044 .204 158SOL OW 472 -.136 .135 .523 158SOL HW1 473 -.063 .118 .456 158SOL HW2 474 -.167 .048 .561 159SOL OW 475 -.474 -.289 .477 159SOL HW1 476 -.407 -.277 .403 159SOL HW2 477 -.514 -.200 .500 160SOL OW 478 .130 -.068 -.011 160SOL HW1 479 .089 -.142 .042 160SOL HW2 480 .194 -.017 .047 161SOL OW 481 -.582 .927 .672 161SOL HW1 482 -.522 .846 .674 161SOL HW2 483 -.542 .996 .612 162SOL OW 484 .830 -.589 -.440 162SOL HW1 485 .825 -.556 -.345 162SOL HW2 486 .744 -.570 -.486 163SOL OW 487 .672 -.246 .154 163SOL HW1 488 .681 -.236 .055 163SOL HW2 489 .632 -.335 .175 164SOL OW 490 -.212 -.142 -.468 164SOL HW1 491 -.159 -.132 -.552 164SOL HW2 492 -.239 -.052 -.434 165SOL OW 493 -.021 .175 -.899 165SOL HW1 494 .018 .090 -.935 165SOL HW2 495 -.119 .177 -.918 166SOL OW 496 .263 .326 .720 166SOL HW1 497 .184 .377 .686 166SOL HW2 498 .254 .311 .818 167SOL OW 499 -.668 -.250 .031 167SOL HW1 500 -.662 -.343 .068 167SOL HW2 501 -.727 -.250 -.049 168SOL OW 502 .822 -.860 -.490 168SOL HW1 503 .862 -.861 -.582 168SOL HW2 504 .832 -.768 -.450 169SOL OW 505 .916 .910 .291 169SOL HW1 506 .979 .948 .223 169SOL HW2 507 .956 .827 .330 170SOL OW 508 -.358 -.255 .044 170SOL HW1 509 -.450 -.218 .051 170SOL HW2 510 -.320 -.235 -.046 171SOL OW 511 .372 -.574 -.372 171SOL HW1 512 .359 -.481 -.406 171SOL HW2 513 .288 -.626 -.385 172SOL OW 514 -.248 -.570 -.573 172SOL HW1 515 -.188 -.567 -.493 172SOL HW2 516 -.323 -.506 -.560 173SOL OW 517 -.823 -.764 .696 173SOL HW1 518 -.893 -.811 .750 173SOL HW2 519 -.764 -.832 .653 174SOL OW 520 -.848 .236 -.891 174SOL HW1 521 -.856 .200 -.984 174SOL HW2 522 -.850 .160 -.826 175SOL OW 523 .590 -.375 .491 175SOL HW1 524 .632 -.433 .421 175SOL HW2 525 .546 -.296 .447 176SOL OW 526 -.153 .385 -.481 176SOL HW1 527 -.080 .454 -.477 176SOL HW2 528 -.125 .310 -.540 177SOL OW 529 .255 -.514 .290 177SOL HW1 530 .159 -.513 .263 177SOL HW2 531 .267 -.461 .374 178SOL OW 532 .105 -.849 -.136 178SOL HW1 533 .028 -.882 -.082 178SOL HW2 534 .190 -.879 -.094 179SOL OW 535 .672 .203 -.373 179SOL HW1 536 .762 .187 -.413 179SOL HW2 537 .680 .208 -.274 180SOL OW 538 .075 .345 .033 180SOL HW1 539 -.017 .317 .004 180SOL HW2 540 .106 .422 -.023 181SOL OW 541 -.422 .856 -.464 181SOL HW1 542 -.479 .908 -.527 181SOL HW2 543 -.326 .868 -.488 182SOL OW 544 .072 .166 .318 182SOL HW1 545 .055 .249 .264 182SOL HW2 546 .162 .129 .296 183SOL OW 547 -.679 -.527 .119 183SOL HW1 548 -.778 -.538 .121 183SOL HW2 549 -.645 -.512 .212 184SOL OW 550 .613 .842 -.431 184SOL HW1 551 .669 .923 -.448 184SOL HW2 552 .672 .762 -.428 185SOL OW 553 -.369 -.095 -.903 185SOL HW1 554 -.336 -.031 -.972 185SOL HW2 555 -.303 -.101 -.828 186SOL OW 556 .716 .565 -.154 186SOL HW1 557 .735 .630 -.080 186SOL HW2 558 .776 .485 -.145 187SOL OW 559 -.412 -.642 -.229 187SOL HW1 560 -.421 -.652 -.130 187SOL HW2 561 -.316 -.649 -.255 188SOL OW 562 .390 -.121 -.302 188SOL HW1 563 .299 -.080 -.304 188SOL HW2 564 .383 -.215 -.270 189SOL OW 565 -.188 .883 -.608 189SOL HW1 566 -.215 .794 -.645 189SOL HW2 567 -.187 .951 -.681 190SOL OW 568 -.637 .325 .449 190SOL HW1 569 -.572 .251 .438 190SOL HW2 570 -.617 .375 .533 191SOL OW 571 .594 .745 .652 191SOL HW1 572 .644 .830 .633 191SOL HW2 573 .506 .747 .604 192SOL OW 574 -.085 .342 -.220 192SOL HW1 575 -.102 .373 -.314 192SOL HW2 576 -.169 .305 -.182 193SOL OW 577 -.132 -.928 -.345 193SOL HW1 578 -.094 -.837 -.330 193SOL HW2 579 -.140 -.945 -.444 194SOL OW 580 .859 -.488 .016 194SOL HW1 581 .813 -.473 .104 194SOL HW2 582 .903 -.403 -.014 195SOL OW 583 .661 -.072 -.909 195SOL HW1 584 .615 .016 -.922 195SOL HW2 585 .760 -.060 -.916 196SOL OW 586 -.454 -.011 -.142 196SOL HW1 587 -.550 -.022 -.169 196SOL HW2 588 -.398 -.078 -.190 197SOL OW 589 .859 -.906 .861 197SOL HW1 590 .913 -.975 .909 197SOL HW2 591 .827 -.837 .927 198SOL OW 592 -.779 -.878 .087 198SOL HW1 593 -.802 -.825 .005 198SOL HW2 594 -.698 -.934 .068 199SOL OW 595 -.001 -.293 .851 199SOL HW1 596 -.072 -.305 .781 199SOL HW2 597 .000 -.372 .911 200SOL OW 598 .221 -.548 -.018 200SOL HW1 599 .156 -.621 -.039 200SOL HW2 600 .225 -.534 .080 201SOL OW 601 .079 -.622 .653 201SOL HW1 602 .078 -.669 .741 201SOL HW2 603 .161 -.650 .602 202SOL OW 604 .672 -.471 -.238 202SOL HW1 605 .594 -.521 -.200 202SOL HW2 606 .669 -.376 -.207 203SOL OW 607 -.038 .192 -.635 203SOL HW1 608 -.042 .102 -.591 203SOL HW2 609 -.035 .181 -.734 204SOL OW 610 .428 .424 .520 204SOL HW1 611 .458 .352 .458 204SOL HW2 612 .389 .384 .603 205SOL OW 613 -.157 -.375 -.758 205SOL HW1 614 -.250 -.400 -.785 205SOL HW2 615 -.131 -.425 -.676 206SOL OW 616 .317 .547 -.582 206SOL HW1 617 .355 .488 -.510 206SOL HW2 618 .357 .521 -.670 207SOL OW 619 .812 -.276 .687 207SOL HW1 620 .844 -.266 .593 207SOL HW2 621 .733 -.338 .689 208SOL OW 622 -.438 .214 -.750 208SOL HW1 623 -.386 .149 -.695 208SOL HW2 624 -.487 .277 -.689 209SOL OW 625 -.861 .034 -.708 209SOL HW1 626 -.924 -.038 -.739 209SOL HW2 627 -.768 -.002 -.708 210SOL OW 628 .770 -.532 .301 210SOL HW1 629 .724 -.619 .318 210SOL HW2 630 .861 -.535 .342 211SOL OW 631 .618 -.295 -.578 211SOL HW1 632 .613 -.213 -.521 211SOL HW2 633 .707 -.298 -.623 212SOL OW 634 -.510 .052 .168 212SOL HW1 635 -.475 .011 .084 212SOL HW2 636 -.600 .014 .188 213SOL OW 637 -.562 .453 .691 213SOL HW1 638 -.621 .533 .695 213SOL HW2 639 -.547 .418 .784 214SOL OW 640 -.269 .221 .882 214SOL HW1 641 -.353 .220 .936 214SOL HW2 642 -.267 .304 .826 215SOL OW 643 .039 -.785 .300 215SOL HW1 644 .138 -.796 .291 215SOL HW2 645 -.001 -.871 .332 216SOL OW 646 .875 -.216 .337 216SOL HW1 647 .798 -.251 .283 216SOL HW2 648 .843 -.145 .399 1.86206 1.86206 1.86206 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/test.rst000066400000000000000000000002541316323560300253320ustar00rootroot00000000000000.. module:: ase.calculators.test ======================== Stuff for testing things ======================== .. autoclass:: FreeElectrons :members: :undoc-members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/test_ase_qmmm_manyqm.py000066400000000000000000000051401316323560300304120ustar00rootroot00000000000000""" demo run for ase_qmmm_manyqm calculator """ # ./test_ase_qmmm_manyqm.py gromacs_mm-relax.g96 from ase.calculators.gromacs import Gromacs from ase.calculators.aims import Aims from ase.calculators.ase_qmmm_manyqm import AseQmmmManyqm from ase.optimize import BFGS import sys from ase.io import read RUN_COMMAND = '/home/mka/bin/aims.071711_6.serial.x' SPECIES_DIR = '/home/mka/Programs/fhi-aims.071711_6/species_defaults/light/' LOG_FILE = open("ase-qm-mm-output.log","w") sys.stdout = LOG_FILE infile_name = sys.argv[1] CALC_QM1 = Aims(charge = 0, xc = 'pbe', sc_accuracy_etot = 1e-5, sc_accuracy_eev = 1e-2, sc_accuracy_rho = 1e-5, sc_accuracy_forces = 1e-3, species_dir = SPECIES_DIR, run_command = RUN_COMMAND) CALC_QM1.set(output = 'hirshfeld') CALC_QM2 = Aims(charge = 0, xc = 'pbe', sc_accuracy_etot = 1e-5, sc_accuracy_eev = 1e-2, sc_accuracy_rho = 1e-5, sc_accuracy_forces = 1e-3, species_dir = SPECIES_DIR, run_command = RUN_COMMAND) CALC_QM2.set(output = 'hirshfeld') CALC_QM3 = Aims(charge = 0, xc = 'pbe', sc_accuracy_etot = 1e-5, sc_accuracy_eev = 1e-2, sc_accuracy_rho = 1e-5, sc_accuracy_forces = 1e-3, species_dir = SPECIES_DIR, run_command = RUN_COMMAND) CALC_QM3.set(output = 'hirshfeld') CALC_MM = Gromacs( init_structure_file = infile_name, structure_file = 'gromacs_qm.g96', \ force_field = 'oplsaa', water_model = 'tip3p', base_filename = 'gromacs_qm', doing_qmmm = True, freeze_qm = False, index_filename = 'index.ndx', define = '-DFLEXIBLE', integrator = 'md', nsteps = '0', nstfout = '1', nstlog = '1', nstenergy = '1', nstlist = '1', ns_type = 'grid', pbc = 'xyz', rlist = '1.15', coulombtype = 'PME-Switch', rcoulomb = '0.8', vdwtype = 'shift', rvdw = '0.8', rvdw_switch = '0.75', DispCorr = 'Ener') CALC_MM.generate_topology_and_g96file() CALC_MM.generate_gromacs_run_file() CALC_QMMM = AseQmmmManyqm(nqm_regions = 3, qm_calculators = [CALC_QM1, CALC_QM2, CALC_QM3], mm_calculator = CALC_MM, link_info = 'byQM') # link_info = 'byFILE') SYSTEM = read('gromacs_qm.g96') SYSTEM.set_calculator(CALC_QMMM) DYN = BFGS(SYSTEM) DYN.run(fmax = 0.05) print('exiting fine') LOG_FILE.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/turbomole.rst000066400000000000000000000445501316323560300263720ustar00rootroot00000000000000.. module:: ase.calculators.turbomole ========= TURBOMOLE ========= TURBOMOLE_ is a program package for *ab initio* electronic structure calculations. This interface integrates the TURBOMOLE code as a calculator in ASE. .. _Turbomole: http://www.turbomole.com/ Setting up the environment ========================== The TURBOMOLE package must be installed to use it with ASE. All modules and scripts from the TURBOMOLE packages must be available in $PATH and the variable $TURBODIR must be set. More information on how to install TURBOMOLE and to set up the environment can be found in the manual or the tutorial at the `web site`_. .. _web site: http://www.turbomole-gmbh.com/turbomole-manuals.html Using the calculator ==================== Python interface ---------------- The constructor method has only keyword arguments that can be specified in any order. The list of accepted parameters with their types and default values is provided in the section "Parameters" below. The following example demonstrates how to construct a Turbomole calculator object for a single-point energy calculation of a neutral singlet system: .. code:: python from ase.calculators.turbomole import Turbomole calc = Turbomole(multiplicity=1) The selection of the method will be according to the default parameter values (see below), i.e. in this case DFT with b-p functional and the def-SV(P) basis set. After this the calculator can be associated with an existing Atoms object .. code:: python atoms.set_calculator(calc) The recommended methods to access parameters and properties are the getter methods, i.e. these ones starting with *get*. The calculations then are triggered according to the principle of lazy evaluation, i.g.: .. code:: python energy = atoms.get_potential_energy() print(energy) Alternatively all calculations necessary to perform a task (see ``task`` parameter below) can be explicitly started with the ``calculate()`` method: .. code:: python calc.calculate(atoms) The getter methods (see below) check for convergence and eventually return ``None`` or an exception if the calculation has not converged. If the properties are read using the Turbomole object attributes then the convergence must be checked with: .. code:: python assert calc.converged If the user wishes to use the input files (such as the control file) generated by module ``define`` before (or without) an actual calculation starts, the ``initialize()`` method has to be called explicitly after constructing the calculator and associating it with an atoms object, e.g.: .. code:: python from ase.build import molecule from ase.calculators.turbomole import Turbomole mol = molecule('C60') params = { 'use resolution of identity': True, 'total charge': -1, 'multiplicity': 2 } calc = Turbomole(**params) mol.set_calculator(calc) calc.initialize() Optionally the calculator will be associated with the atoms object in one step with constructing the calculator: .. code:: python calc = Turbomole(atoms=mol, **params) Command-line interface ---------------------- The command-line interface has limited capability. For example the keyword ``task`` is not effective due to the specific way the methods are called by ``ase-run``. This example shows how to run a single-point DFT calculation of water with the PBE functional and with geometry taken from the database:: ase-build H2O | ase-run turbomole --parameters="multiplicity=1,density functional=pbe" Using the calculation output a second geometry optimization calculation with the BFGS optimizer from ASE can be started using the ``restart`` keyword:: ase-build H2O | ase-run turbomole --parameters="restart=True" -f 0.02 Reading output ============== Properties ---------- The implemented properties are described in the following table. ================== ======== ======================= =========== ================== **Property** **Type** **Getter method** **Storage** **Task** ================== ======== ======================= =========== ================== total energy float get_potential_energy(), e_total any task get_property('energy') forces np.array get_forces(), forces gradient get_property('forces') dipole moment np.array get_dipole_moment(), dipole any task get_property('magmom') charges np.array get_charges(), get_property('charges') charges any task float get_results results any task normal modes list get_results results frequencies mode frequencies list get_results results frequencies gradient list get_results results gradient, optimize hessian list get_results results frequencies molecular orbitals list get_results results any task occupancies list get_results results any task ================== ======== ======================= =========== ================== Metadata -------- Additionally, some useful information can be read with the calculator using the functions ``read_version()``, ``read_datetime()``, ``read_runtime()``, ``read_hostname()``. Then the respective data can be retrieved using the *version*, *datetime*, *runtime* and *hostname* attributes. Example: .. code:: python calc.read_runtime() print(calc.runtime) Restart mode ------------ The restart mode can be used either to start a calculation from the data left from previous calculations or to analyze or post-process these data. The previous run may have been performed without ASE but the working directory of the job should contain the control file and all files referenced in it. In addition, the standard output will be searched in files beginning with *job.* and ending with *.out* but this is optional input, mainly to extract job datetime, runtimes, hostname and TURBOMOLE version. After constructing the calculator object (where *params* dictionary is optional): .. code:: python calc = Turbomole(restart=True, **params) the data left from the previous calculations can be queried, for example: .. code:: python from ase.visualize import view view(calc.atoms) print(calc.converged) print(calc.get_potential_energy()) A previous calculation may have crashed or not converged. Also in these cases all data that is available will be retrieved but the ``calc.converged`` will be set to ``False``. The calculation can be continued without any parameter modifications (for example if it has exceeded the job maximum run time and was interrupted) or with better convergence parameters specified in ``params`` dictionary. Finally, another calculation task can be started beginning from the data left from a converged previous one, specifying a new ``task`` parameter: .. code:: python calc = Turbomole(restart=True, task='gradient', **params) Policies for files in the working directory ------------------------------------------- * When the calculator is constructed in restart mode (i.e. ``restart=True``) and with no other parameters, then no files will be created, deleted or modified in the working directory. * When the calculator is created in normal (i.e. ``restart=False``) mode then all TURBOMOLE related files found in the working directory will be deleted. * When the calculator is created with ``restart=True`` and other parameters, the *control* file might be modified. In particular, if ``define_str``, ``control_input`` or ``control_kdg`` are specified or ``initialize()`` is called then the *control* file will be modified. * When ``calculate()``, ``get_potential_energy()``, ``get_forces()`` etc. are called in restart mode, the *control* file will be modified if the previous calculation has not converged. * When an *atoms* object is associated with the calculator or any calculator method is called with an *atoms* object specified, then the calculator will be reset and all TURBOMOLE related files found in the working directory will be deleted if *atoms* is different (tol=1e-2) from the internal *atoms* object or if internal coordinates are used and the internal and the supplied *atoms* positions are different (tol=1e-13). The *coord* file will be changed only if the *atoms* positions are different (tol=1e-13). Parameters ========== The following table provides a summary of all parameters and their default values. ================================ ======== =========== ============= ============== **Name** **Type** **Default** **Units** **Updateable** ================================ ======== =========== ============= ============== restart bool False None True define_str str None None True control_kdg list None None True control_input list None None True automatic orbital shift float 0.1 eV True basis set name str def-SV(P) None False closed-shell orbital shift float None eV True damping adjustment step float None None True density convergence float None None True density functional str b-p None True energy convergence float None eV True esp fit str None None True fermi annealing factor float 0.95 None True fermi final temperature float 300 Kelvin True fermi homo-lumo gap criterion float 0.1 eV True fermi initial temperature float 300 Kelvin True fermi stopping criterion float 0.001 eV True force convergence float None eV/Angstrom True geometry optimization iterations int None None True grid size str m3 None True ground state bool True None False initial damping float None None True initial guess None eht None False minimal damping float None None True multiplicity int None None False non-automatic orbital shift bool False None True numerical hessian dict None None True point group str c1 None False ri memory int 1000 Megabyte True scf energy convergence float None eV True scf iterations int 60 None True task str energy None True title str '' None False total charge int 0 None False uhf bool None None False use basis set library bool True None False use dft bool True None False use fermi smearing bool False None True use redundant internals bool False None False use resolution of identity bool False None False ================================ ======== =========== ============= ============== The attribute ``Updateable`` specifies whether it is possible to change a parameter upon restart. The ``restart`` keyword tells the calculator whether to restart from a previous calculation. The optional ``define_str`` is a string of characters that would be entered in an interactive session with module ``define``, i.e. this is the stdin for running module ``define``. The ``control_kdg`` is an optional list of data groups in control file to be deleted after running module ``define`` and ``control_input`` is an optional list of data groups to be added to control file after running module ``define``. The parameter ``initial guess`` can be either the strings *eht* (extended Hückel theory) or *hcore* (one-electron core Hamiltonian) or a dictionary *{'use': ''}* specifying a path to a control file with the molecular orbitals that should be used as initial guess. If ``numerical hessian`` is defined then the force constant matrix will be computed numerically using the script NumForce. The keys can be *'central'* indicating use of central differences (type *bool*) and *'delta'* specifying the coordinate displacements in Angstrom (type *float*). Some parameter names contain spaces. This means that the preferred way to pass the parameters is to construct a dictionary, for example: .. code:: python params = {'task': 'optimize', 'use resolution of identity': True, 'ri memory': 2000, 'scf iterations': 80, 'force convergence': 0.05} calc = Turbomole(**params) Using the ``todict()`` method, the parameters of an existing Turbomole calculator object can be stored in a flat dictionary and then re-used to create a new Turbomole calculator object: .. code:: python params = calc.todict() new_calc = Turbomole(**params) This is especially useful if the *calc* object has been created in restart mode or retrieved from a database. Examples ======== Single-point energy calculation ------------------------------- This script calculates the total energy of H2: :git:`ase/test/turbomole/turbomole_H2.py`. Nudged elastic band calculation ------------------------------- The example demonstrates a proton transfer barrier calculation in H3O2-: :git:`ase/test/turbomole/turbomole_h3o2m.py`. Single-point gradient calculation of Au13- ------------------------------------------ This script demonstrates the use of the restart option. :git:`ase/test/turbomole/turbomole_au13.py`. Geometry optimization and normal mode analysis for H2O ------------------------------------------------------ :git:`ase/test/turbomole/turbomole_h2o.py`. .. _turbomole qmmm: QMMM simulation --------------- The following example demonstrates how to use the Turbomole calculator in simple and explicit QMMM simulations on the examples of a water dimer partitioned into an MM and a QM region. :git:`ase/test/turbomole/turbomole_qmmm.py`. The MM region is treated within a TIP3P model in the MM calculator and as an array of point charges in the QM calculation. The interaction between the QM and MM regions, used in the explicit QMMM calculator, is of Lennard-Jones type. The point charge embedding functionality of the Turbomole calculator can also be used without QMMM calculators if the ``embed()`` method is called with a specification of the point charges and their positions in which to embed the QM system: .. code:: python from ase.collections import s22 from ase.calculators.turbomole import Turbomole params = {'esp fit': 'kollman', 'multiplicity': 1} dimer = s22['Water_dimer'] qm_mol = dimer[0:3] calc = Turbomole(atoms=qm_mol, **params) calc.embed( charges=[-0.76, 0.38, 0.38], positions=dimer.positions[3:6] ) print(qm_mol.get_potential_energy()) print(qm_mol.get_forces()) print(qm_mol.get_charges()) A more elaborated version of the latter example is used in the test script: :git:`ase/test/turbomole/turbomole_2h2o.py`. Deprecated, non-implemented and unsupported features ==================================================== Deprecated but still accepted parameters ---------------------------------------- ==================== ======== ======================== ========================= Name Type Default value Description ==================== ======== ======================== ========================= ``calculate_energy`` ``str`` ``dscf`` module name for energy calculation ``calculate_forces`` ``str`` ``grad`` module name for forces calculation ``post_HF`` ``bool`` ``False`` post Hartree-Fock format for energy reader ==================== ======== ======================== ========================= Not implemented parameters -------------------------- The following table includes parameters that are planned but not implemented yet. ================================ ======= ========== =============== ========== Name Type Default Units Updateable ================================ ======= ========== =============== ========== basis set definition dict None None False excited state bool False None False label str None None False number of excited states int None None False optimized excited state int None None False rohf bool None None False ================================ ======= ========== =============== ========== Unsupported methods and features -------------------------------- The following methods and features are supported in TURBOMOLE but currently not in the ASE Turbomole calculator: * MP2 and coupled-cluster methods (modules mpgrad, rimp2, ricc2) * Excited state calculations (modules escf, egrad) * Molecular dynamics (modules mdprep, uff) * Solvent effects (COSMO model) * Global optimization (module haga) * Property modules (modules freeh, moloch) * Point groups other than C1 (see not implemented parameters) * Restricted open-shell Hartree-Fock (see not implemented parameters) * Per-element and per-atom basis set specifications (see not implemented parameters) * Explicit basis set specification (see not implemented parameters) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/calculators/vasp.rst000066400000000000000000000302521316323560300253250ustar00rootroot00000000000000.. module:: ase.calculators.vasp ==== VASP ==== Introduction ============ VASP_ is a density-functional theory code using pseudopotentials or the projector-augmented wave method and a plane wave basis set. This interface makes it possible to use VASP_ as a calculator in ASE, and also to use ASE as a post-processor for an already performed VASP_ calculation. .. _VASP: http://cms.mpi.univie.ac.at/vasp/ Environment variables ===================== You need to write a script called :file:`run_vasp.py` containing something like this:: import os exitcode = os.system('vasp') The environment variable :envvar:`VASP_SCRIPT` must point to that file. A directory containing the pseudopotential directories :file:`potpaw` (LDA XC) :file:`potpaw_GGA` (PW91 XC) and :file:`potpaw_PBE` (PBE XC) is also needed, and it is to be put in the environment variable :envvar:`VASP_PP_PATH`. Set both environment variables in your shell configuration file: .. highlight:: bash :: $ export VASP_SCRIPT=$HOME/vasp/run_vasp.py $ export VASP_PP_PATH=$HOME/vasp/mypps .. highlight:: python VASP Calculator =============== The default setting used by the VASP interface is .. autoclass:: Vasp Below follows a list with a selection of parameters ============== ========= ============== ============================ keyword type default value description ============== ========= ============== ============================ ``restart`` ``bool`` None Restart old calculation or use ASE for post-processing ``xc`` ``str`` 'PW91' XC-functional. Defaults to None if ``gga`` set explicitly. ``setups`` ``str`` None Additional setup option ``pp`` ``str`` Set by ``xc`` Pseudopotential (POTCAR) set or ``gga`` used (LDA, PW91 or PBE). ``kpts`` various `\Gamma`-point **k**-point sampling ``gamma`` ``bool`` None `\Gamma`-point centered **k**-point sampling ``reciprocal`` ``bool`` None Use reciprocal units if **k**-points are specified explicitly ``prec`` ``str`` Accuracy of calculation ``encut`` ``float`` Kinetic energy cutoff ``ediff`` ``float`` Convergence break condition for SC-loop. ``nbands`` ``int`` Number of bands ``algo`` ``str`` Electronic minimization algorithm ``ismear`` ``int`` Type of smearing ``sigma`` ``float`` Width of smearing ``nelm`` ``int`` Maximum number of SC-iterations ============== ========= ============== ============================ For parameters in the list without default value given, VASP will set the default value. Most of the parameters used in the VASP :file:`INCAR` file are allowed keywords. See the official `VASP manual`_ for more details. .. _VASP manual: http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html .. note:: Parameters can be changed after the calculator has been constructed by using the :meth:`~ase.calculators.vasp.Vasp.set` method: >>> calc.set(prec='Accurate', ediff=1E-5) This would set the precision to Accurate and the break condition for the electronic SC-loop to ``1E-5`` eV. Exchange-correlation functionals ================================ The ``xc`` parameter is used to define a "recipe" of other parameters including the pseudopotential set ``pp``. It is possible to override any parameters set with ``xc`` by setting them explicitly. For example, the screening parameter of a HSE calculation might be modified with >>> calc = ase.calculators.vasp.Vasp(xc='hse06', hfscreen=0.4) The default pseudopotential set is potpaw_PBE unless ``xc`` or ``pp`` is set to ``pw91`` or ``lda``. ========================== ===================================== ``xc`` value Parameters set ========================== ===================================== lda, pbe, pw91 ``pp`` (``gga`` set implicity in POTCAR) pbesol, revpbe, rpbe, am05 ``gga`` tpss, revtpss, m06l ``metagga`` vdw-df, optpbe-vdw ``gga``, ``luse_vdw``, ``aggac`` optb88-vdw, obptb86b-vdw ``gga``, ``luse_vdw``, ``aggac``, ``param1``, ``param2`` beef-vdw ``gga``, ``luse_vdw``, ``zab_vdw`` vdw-df2 ``gga``, ``luse_vdw``, ``aggac``, ``zab_vdw`` hf ``lhfcalc``, ``aexx``, ``aldac``, ``aggac`` pbe0 ``gga``, ``lhfcalc`` b3lyp ``gga``, ``lhfcalc``, ``aexx``, ``aggax``, ``aggac``, ``aldac`` hse03, hse06, hsesol ``gga``, ``lhfcalc``, ``hfscreen`` ========================== ===================================== It is possible for the user to temporarily add their own ``xc`` recipes without modifying ASE, by updating a dictionary. For example, to implement a hybrid PW91 calculation: .. code-block:: python from ase.calculators.vasp import Vasp Vasp.xc_defaults['pw91_0'] = {'gga': '91', 'lhfcalc': True} calc = Vasp(xc='PW91_0') Note that the dictionary keys must be *lower case*, while the ``xc`` parameter is case-insensitive when used. Setups ====== For many elements, VASP is distributed with a choice of pseudopotential setups. These may be hard/soft variants of the pseudopotential or include additional valence electrons. While the Vasp calculator will default to the pseudopotential folders with the same name as the element, alternative setups may be selected with the `setups` dictionary. To use an alternative setup for all instances of an element, simply provide the characters which need to be added, e.g. .. code-block:: python calc = Vasp(xc='PBE', setups={'Li': '_sv'}) will use the ``Li_sv`` all-electron pseudopotential for all Li atoms. To apply special setups to individual atoms, identify them by their zero-indexed number in the atom list and use the full setup name. For example, .. code-block:: python calc= Vasp(xc='PBE', setups={3: 'Ga_d'}) will treat the Ga atom in position 3 (i.e. the fourth atom) of the atoms object as special, with an additional 10 d-block valence electrons, while other Ga atoms use the default 3-electron setup and other elements use their own default setups. The positional index may be quoted as a string (e.g. ``{'3': 'Ga_d'}``). Spin-polarized calculation ========================== If the atoms object has non-zero magnetic moments, a spin-polarized calculation will be performed by default. Here follows an example how to calculate the total magnetic moment of a sodium chloride molecule. .. literalinclude:: NaCl.py In this example the initial magnetic moments are assigned to the atoms when defining the Atoms object. The calculator will detect that at least one of the atoms has a non-zero magnetic moment and a spin-polarized calculation will automatically be performed. The ASE generated :file:`INCAR` file will look like: .. literalinclude:: INCAR_NaCl .. note:: It is also possible to manually tell the calculator to perform a spin-polarized calculation: >>> calc.set(ispin=2) This can be useful for continuation jobs, where the initial magnetic moment is read from the WAVECAR file. Brillouin-zone sampling ======================= Brillouin-zone sampling is controlled by the parameters ``kpts``, ``gamma`` and ``reciprocal``, and may also be set with the VASP parameters ``kspacing`` and ``kgamma``. Single-parameter schemes ------------------------ A **k**-point mesh may be set using a single value in one of two ways: Scalar ``kpts`` If ``kpts`` is declared as a scalar (i.e. a float or an int), an appropriate KPOINTS file will be written. The value of ``kpts`` will be used to set a length cutoff for the Gamma-centered “Automatic†scheme provided by VASP. (See `first example `_ in VASP manual.) KSPACING and KGAMMA Alternatively, the **k**-point density can be set in the INCAR file with these flags as `described in the VASP manual `_. If ``kspacing`` is set, the ASE calculator will not write out a KPOINTS file. Three-parameter scheme ---------------------- Brillouin-zone sampling can also be specified by defining a number of subdivisions for each reciprocal lattice vector. This is the `second “Automatic†scheme `_ described in the VASP manual. In the ASE calculator, it is used by setting ``kpts`` to a sequence of three ``int`` values, e.g. ``[2, 2, 3]``. If ``gamma` is set to ``True``, the mesh will be centred at the `\Gamma`-point; otherwise, a regular Monkhorst-Pack grid is used, which may or may not include the `\Gamma`-point. In VASP it is possible to define an automatic grid and shift the origin point. This function is not currently included in the ASE calculator. The same result can be achieved by using :func:`ase.dft.kpoints.monkhorst_pack` to generate an explicit list of **k**-points (see below) and simply adding a constant vector to the matrix. For example, .. code-block:: python import ase.dft.kpoints kpts = ase.dft.kpoints.monkhorst_pack([2, 2, 1]) + [0.25, 0.25, 0.5] creates an acceptable ``kpts`` array with the values .. code-block:: python array([[ 0. , 0. , 0.5], [ 0. , 0.5, 0.5], [ 0.5, 0. , 0.5], [ 0.5, 0.5, 0.5]]) However, this method will prevent VASP from using symmetry to reduce the number of calculated points. Explicitly listing the **k**-points ----------------------------------- If an *n*-by-3 or *n*-by-4 array is used for ``kpts``, this is interpreted as a list of *n* explicit **k**-points and an appropriate KPOINTS file is generated. The fourth column, if provided, sets the sample weighting of each point. Otherwise, all points are weighted equally. Usually in these cases it is desirable to set the ``reciprocal`` parameter to ``True``, so that the **k**-point vectors are given relative to the reciprocal lattice. Otherwise, they are taken as being in Cartesian space. Band structure paths -------------------- VASP provides a “line-mode†for the generation of band-structure paths. While this is not directly supported by ASE, relevant functionality exists in the :mod:`ase.dft.kpoints` module. For example: .. code-block:: python import ase.build from ase.dft.kpoints import bandpath si = ase.build.bulk('Si') kpts, x_coords, x_special_points = bandpath('GXL', si.cell, npoints=20) returns an acceptable ``kpts`` array (for use with ``reciprocal=True``) as well as plotting information. Restart old calculation ======================= To continue an old calculation which has been performed without the interface use the ``restart`` parameter when constructing the calculator >>> calc = Vasp(restart=True) Then the calculator will read atomic positions from the :file:`CONTCAR` file, physical quantities from the :file:`OUTCAR` file, **k**-points from the :file:`KPOINTS` file and parameters from the :file:`INCAR` file. .. note:: Only Monkhorst-Pack and \Gamma-centered **k**-point sampling are supported for restart at the moment. Some :file:`INCAR` parameters may not be implemented for restart yet. Please report any problems to the ASE mailing list. The ``restart`` parameter can be used , as the name suggest to continue a job from where a previous calculation finished. Furthermore, it can be used to extract data from an already performed calculation. For example, to get the total potential energy of the sodium chloride molecule in the previous section, without performing any additional calculations, in the directory of the previous calculation do: >>> calc = Vasp(restart=True) >>> atoms = calc.get_atoms() >>> atoms.get_potential_energy() -4.7386889999999999 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/cluster/000077500000000000000000000000001316323560300227655ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/cluster/cluster.py000066400000000000000000000025011316323560300250160ustar00rootroot00000000000000# creates: culayer.png truncated.png from ase.io import write from ase.cluster.cubic import FaceCenteredCubic #from ase.cluster.hexagonal import HexagonalClosedPacked #import numpy as np surfaces = [(1, 0, 0), (1, 1, 0), (1, 1, 1)] layers = [6, 9, 5] lc = 3.61000 culayer = FaceCenteredCubic('Cu', surfaces, layers, latticeconstant=lc) culayer.rotate(6, 'x', rotate_cell=True) culayer.rotate(2, 'y', rotate_cell=True) write('culayer.pov', culayer, show_unit_cell=0, display=False, run_povray=True) surfaces = [(1, 0, 0), (1, 1, 1), (1, -1, 1)] layers = [6, 5, -1] trunc = FaceCenteredCubic('Cu', surfaces, layers) trunc.rotate(6, 'x', rotate_cell=True) trunc.rotate(2, 'y', rotate_cell=True) write('truncated.pov', trunc, show_unit_cell=0, display=False, run_povray=True) # This does not work! #surfaces = [(0, 0, 0, 1), (1, 1, -2, 0), (1, 0, -1, 1)] #layers = [6, 6, 6] #graphite = Graphite('C', surfaces, layers, latticeconstant=(2.461, 6.708)) #write('graphite.pov', graphite, show_unit_cell=2, display=False, run_povray=True) # surfaces = [(0, 0, 0, 1), (1, 1, -2, 0), (1, 0, -1, 1)] # layers = [6, 6, 6] # magn = HexagonalClosedPacked('Mg', surfaces, layers) # magn.rotate('x', np.pi/2 - 0.1, rotate_cell=True) # magn.rotate('y', 0.04, rotate_cell=True) # write('magnesium.pov', magn, show_unit_cell=2, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/cluster/cluster.rst000066400000000000000000000106371316323560300252070ustar00rootroot00000000000000.. module:: ase.cluster ========================== Nanoparticles and clusters ========================== There are modules for creating nanoparticles (clusters) with a given crystal structure by specifying either the number of layers in different directions, or by making a Wulff construction. Examples ======== Layer specification ------------------- This example sets up a nanoparticle of copper in the FCC crystal structure, by specifying 6 layers in the (100) directions, 9 in the (110) directions and 5 in the (111) directions:: import ase from ase.cluster.cubic import FaceCenteredCubic surfaces = [(1, 0, 0), (1, 1, 0), (1, 1, 1)] layers = [6, 9, 5] lc = 3.61000 atoms = FaceCenteredCubic('Cu', surfaces, layers, latticeconstant=lc) |culayer| .. |culayer| image:: culayer.png Wulff construction ------------------ To set up a Wulff construction, the surface energies should be specified, in units of energy per area (*not* energy per atom). The actual unit used does not matter, as only the ratio between surface energies is important. In addition, the approximate size of the nanoparticle should be given. As the Wulff construction is build from whole layers, it is not possible to hit the desired particles size exactly:: from ase.cluster import wulff_construction surfaces = [(1, 0, 0), (1, 1, 0), (1, 1, 1)] esurf = [1.0, 1.1, 0.9] # Surface energies. lc = 3.61000 size = 1000 # Number of atoms atoms = wulff_construction('Cu', surfaces, esurf, size, 'fcc', rounding='above', latticeconstant=lc) Note that the Wulff construction currently only work with cubic lattices. Creating a nanoparticle ======================= The :mod:`ase.cluster` module contains a number of sub-modules for defining clusters, one for each crystal structure. They are all called the same way, by specifying the element, the number of layers in different directions, and optionally the lattice constant. The layer specification is the only part that may not be intuitive. It is given as two arrays, one specifying the Miller indices of the surfaces, and one specifying the number of layers from the center of the cluster to the respective surfaces. The surface specification allows for one or more surfaces of a given family of surfaces to be different from the other surfaces. This can be used e.g. to create a cluster where one part has been truncated by a substrate. This is done by *first* specifying the number of layers for the family of surfaces, and *later* specifying the number of layers for a given surface. Consider the surface specification :: surfaces = [(1, 0, 0), (1, 1, 1), (1, -1, 1)] layers = [6, 5, -1] atoms = FaceCenteredCubic('Cu', surfaces, layers) Here we first ask for 6 layers for the {100} surface family, i.e. the directions (100), (010), (001), (-1,0,0), etc. Then we ask for 5 layers for the {111} family of surfaces. Finally, we change the number of layers for the (-1,1,1) surface. This is interpreted as a single surface, since it is part of a family that has already been specified. Asking for a negative number of layers is allowed, this cause the particle to be truncated *before* its center point. The result is seen below. |truncated| .. |truncated| image:: truncated.png The functions for creating nanoparticles take the following arguments: ``symbols``: A string specifying the element (or a tuple of strings for compounds). ``surfaces``: A list of surfaces, as explained above. ``layers``: A corresponding list of the number of layers to be included. ``vacuum=0.0``: The amount of vacuum to include around the particle. Defaults to 0. ``latticeconstant=None``: The lattice constant of the lattice. If not specified, the experimental value from :mod:`ase.data` is used. Possible crystal structures --------------------------- You select the crystal structure by selecting the right function for creating the nanoparticle. Currently, these modules only work for the three cubic crystal structures: FaceCenteredCubic, BodyCenteredCubic, and SimpleCubic. Other structures are implemented, but do currently not work correctly. Wulff constructions =================== As an alternative to specifying the number of layers, a Wulff construction can be used to create a nanoparticle (with cubic symmetry). The function can be imported as:: from ase.cluster import wulff_construction .. autofunction:: ase.cluster.wulff_construction ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/collections.rst000066400000000000000000000040041316323560300243520ustar00rootroot00000000000000.. module:: ase.collections =========== Collections =========== :data:`s22`, :data:`dcdft`, :data:`g2` .. autoclass:: ase.collections.collection.Collection .. _s22: S22 database of weakly interacting dimers and complexes ======================================================= .. data:: s22 S22 geometry data are from: P. Jurecka, J. Sponer, J. Cerny, P. Hobza; Phys Chem Chem Phys 2006, 8 (17), 1985-1993. See http://www.begdb.com/index.php?action=106a6c241b8797f52e1e77317b96a201 for the original files. All geometries are optimized at either the CCSD(T) or MP2 level except for the methyl amide dimers where only the hydrogen position is optimized at the DFT level. The S22 interaction energies are all calculated using both CCSD(T)/CBS counter poised corrected (CP) and MP2 /CBS CP. The original S22 interaction energies are listed in the above references. The S22 energies used here are from Takatani, T. et al., J. Chem. Phys., 132, 144104 (2010) where a large and more complete basis set has been used for all database members. DeltaCodesDFT ============= PROVISIONAL: This stuff may not have its final form. Use with care! .. data:: dcdft Structures and data from: https://github.com/molmod/DeltaCodesDFT See also [Lejaeghere2014]_. .. [Lejaeghere2014] K. Lejaeghere, V. Van Speybroeck, G. Van Oost, and S. Cottenier: "Error estimates for solid-state density-functional theory predictions: an overview by means of the ground-state elemental crystals", Crit. Rev. Solid State (2014). http://dx.doi.org/10.1080/10408436.2013.772503 This collection has WIEN2k and experimental data for: * volume per atom * bulk-modulus (in GPa) * pressure derivative of bulk-modulus >>> from ase.collections import dcdft >>> dct = dcdft.data['Cu'] >>> for key, val in sorted(dct.items()): ... print('{:15}: {:.3f}'.format(key, val)) exp_B : 144.279 exp_Bp : 4.880 exp_volume : 11.647 wien2k_B : 141.335 wien2k_Bp : 4.860 wien2k_volume : 11.951 G2 ... ====== .. data:: g2 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/constraints.rst000066400000000000000000000270641316323560300244160ustar00rootroot00000000000000.. module:: ase.constraints :synopsis: Constraining some degrees of freedom =========== Constraints =========== When performing minimizations or dynamics one may wish to keep some degrees of freedom in the system fixed. One way of doing this is by attaching constraint object(s) directly to the atoms object. Important: setting constraints will freeze the corresponding atom positions. Changing such atom positions can be achieved: - by directly setting the :attr:`~ase.Atoms.positions` attribute (see example of setting :ref:`atoms_special_attributes`), - alternatively, by removing the constraints first:: del atoms.constraints or:: atoms.set_constraint() and using the :meth:`~ase.Atoms.set_positions` method. The FixAtoms class ================== This class is used for fixing some of the atoms. .. class:: FixAtoms(indices=None, mask=None) You must supply either the indices of the atoms that should be fixed or a mask. The mask is a list of booleans, one for each atom, being true if the atoms should be kept fixed. For example, to fix the positions of all the Cu atoms in a simulation with the indices keyword: >>> from ase.constraints import FixAtoms >>> c = FixAtoms(indices=[atom.index for atom in atoms if atom.symbol == 'Cu']) >>> atoms.set_constraint(c) or with the mask keyword: >>> c = FixAtoms(mask=[atom.symbol == 'Cu' for atom in atoms]) >>> atoms.set_constraint(c) The FixBondLength class ======================= This class is used to fix the distance between two atoms specified by their indices (*a1* and *a2*) .. class:: FixBondLength(a1, a2) Example of use:: >>> c = FixBondLength(0, 1) >>> atoms.set_constraint(c) In this example the distance between the atoms with indices 0 and 1 will be fixed in all following dynamics and/or minimizations performed on the *atoms* object. This constraint is useful for finding minimum energy barriers for reactions where the path can be described well by a single bond length (see the :ref:`mep2` tutorial). Important: If fixing multiple bond lengths, use the FixBondLengths class below, particularly if the same atom is fixed to multiple partners. .. _FixBondLengths: The FixBondLengths class ======================== RATTLE-type holonomic constraints. More than one bond length can be fixed by using this class. Especially for cases in which more than one bond length constraint is applied on the same atom. It is done by specifying the indices of the two atoms forming the bond in pairs. .. class:: FixBondLengths(pairs) Example of use:: >>> c = FixBondLengths([[0, 1], [0, 2]]) >>> atoms.set_constraint(c) Here the distances between atoms with indices 0 and 1 and atoms with indices 0 and 2 will be fixed. The constraint is for the same purpose as the FixBondLength class. The FixedLine class =================== .. autoclass:: FixedLine The FixedPlane class ==================== .. autoclass:: FixedPlane Example of use: :ref:`constraints diffusion tutorial`. The FixedMode class =================== .. autoclass:: FixedMode A mode is a list of vectors specifying a direction for each atom. It often comes from :meth:`ase.vibrations.Vibrations.get_mode`. The Hookean class ================= This class of constraints, based on Hooke's Law, is generally used to conserve molecular identity in optimization schemes and can be used in three different ways. In the first, it applies a Hookean restorative force between two atoms if the distance between them exceeds a threshold. This is useful to maintain the identity of molecules in quenched molecular dynamics, without changing the degrees of freedom or violating conservation of energy. When the distance between the two atoms is less than the threshold length, this constraint is completely inactive. The below example tethers atoms at indices 3 and 4 together:: >>> c = Hookean(a1=3, a2=4, rt=1.79, k=5.) >>> atoms.set_constraint(c) Alternatively, this constraint can tether a single atom to a point in space, for example to prevent the top layer of a slab from subliming during a high-temperature MD simulation. An example of tethering atom at index 3 to its original position: >>> from ase.constraints import Hookean >>> c = Hookean(a1=3, a2=atoms[3].position, rt=0.94, k=2.) >>> atoms.set_constraint(c) Reasonable values of the threshold (rt) and spring constant (k) for some common bonds are below. .. list-table:: * - Bond - rt (Angstroms) - k (eV Angstrom^-2) * - O-H - 1.40 - 5 * - C-O - 1.79 - 5 * - C-H - 1.59 - 7 * - C=O - 1.58 - 10 * - Pt sublimation - 0.94 - 2 * - Cu sublimation - 0.97 - 2 A third way this constraint can be applied is to apply a restorative force if an atom crosses a plane in space. For example:: >>> c = Hookean(a1=3, a2=(0, 0, 1, -7), k=10.) >>> atoms.set_constraint(c) This will apply a restorative force on atom 3 in the downward direction of magnitude k * (atom.z - 7) if the atom's vertical position exceeds 7 Angstroms. In other words, if the atom crosses to the (positive) normal side of the plane, the force is applied and directed towards the plane. (The same plane with the normal direction pointing in the -z direction would be given by (0, 0, -1, 7).) For an example of use, see the :ref:`mhtutorial` tutorial. .. note:: In previous versions of ASE, this was known as the BondSpring constraint. The ExternalForce class ======================= This class can be used to simulate a constant external force (e.g. the force of atomic force microscope). One can set the absolute value of the force *f_ext* (in eV/Ang) and two atom indices *a1* and *a2* to define on which atoms the force should act. If the sign of the force is positive, the two atoms will be pulled apart. The external forces which acts on both atoms are parallel to the connecting line of the two atoms. .. class:: ExternalForce(a1, a2, f_ext) Example of use:: >>> form ase.constraints import ExternalForce >>> c = ExternalForce(0, 1, 0.5) >>> atoms.set_constraint(c) One can combine this constraint with :class:`FixBondLength` but one has to consider the correct ordering when setting both constraints. :class:`ExternalForce` must come first in the list as shown in the following example. >>> from ase.constraints import ExternalForce, FixBondLength >>> c1 = ExternalForce(0, 1, 0.5) >>> c2 = FixBondLength(1, 2) >>> atoms.set_constraint([c1, c2]) The FixInternals class ====================== This class allows to fix an arbitrary number of bond lengths, angles and dihedral angles. The defined constraints are satisfied self consistently. To define the constraints one needs to specify the atoms object on which the constraint works (needed for atomic masses), a list of bond, angle and dihedral constraints. Those constraint definitions are always list objects containing the value to be set and a list of atomic indices. The epsilon value specifies the accuracy to which the constraints are fulfilled. .. autoclass:: FixInternals .. note:: The :class:`FixInternals` class use radians for angles! Most other places in ASE degrees are used. Example of use:: >>> from math import pi >>> bond1 = [1.20, [1, 2]] >>> angle_indices1 = [2, 3, 4] >>> dihedral_indices1 = [2, 3, 4, 5] >>> angle1 = [atoms.get_angle(*angle_indices1) * pi / 180, angle_indices1] >>> dihedral1 = [atoms.get_dihedral(*dihedral_indices1) * pi / 180, ... dihedral_indices1] >>> c = FixInternals(bonds=[bond1], angles=[angle1], ... dihedrals=[dihedral1]) >>> atoms.set_constraint(c) This example defines a bond, an angle and a dihedral angle constraint to be fixed at the same time. Combining constraints ===================== It is possible to supply several constraints on an atoms object. For example one may wish to keep the distance between two nitrogen atoms fixed while relaxing it on a fixed ruthenium surface:: >>> pos = [[0.00000, 0.00000, 9.17625], ... [0.00000, 0.00000, 10.27625], ... [1.37715, 0.79510, 5.00000], ... [0.00000, 3.18039, 5.00000], ... [0.00000, 0.00000, 7.17625], ... [1.37715, 2.38529, 7.17625]] >>> unitcell = [5.5086, 4.7706, 15.27625] >>> atoms = Atoms(positions=pos, ... symbols='N2Ru4', ... cell=unitcell, ... pbc=[True,True,False]) >>> fa = FixAtoms(mask=[a.symbol == 'Ru' for a in atoms]) >>> fb = FixBondLength(0, 1) >>> atoms.set_constraint([fa, fb]) When applying more than one constraint they are passed as a list in the :meth:`~ase.Atoms.set_constraint` method, and they will be applied one after the other. Important: If wanting to fix the length of more than one bond in the simulation, do not supply a list of :class:`FixBondLength` instances; instead, use a single instance of :class:`FixBondLengths`. Making your own constraint class ================================ A constraint class must have these two methods: .. method:: adjust_positions(oldpositions, newpositions) Adjust the *newpositions* array inplace. .. method:: adjust_forces(positions, forces) Adjust the *forces* array inplace. A simple example:: import numpy as np class MyConstraint: """Constrain an atom to move along a given direction only.""" def __init__(self, a, direction): self.a = a self.dir = direction / sqrt(np.dot(direction, direction)) def adjust_positions(self, atoms, newpositions): step = newpositions[self.a] - atoms.positions[self.a] step = np.dot(step, self.dir) newpositions[self.a] = atoms.positions[self.a] + step * self.dir def adjust_forces(self, atoms, forces): forces[self.a] = self.dir * np.dot(forces[self.a], self.dir) A constraint can optionally have two additional methods, which will be ignored if missing: .. method:: adjust_momenta(atoms, momenta) Adjust the *momenta* array inplace. .. method:: adjust_potential_energy(atoms, energy) Provide the difference in the *potential energy* due to the constraint. (Note that inplace adjustment is not possible for energy, which is a float.) The Filter class ================ Constraints can also be applied via filters, which acts as a wrapper around an atoms object. A typical use case will look like this:: ------- -------- ---------- | | | | | | | Atoms |<----| Filter |<----| Dynamics | | | | | | | ------- -------- ---------- and in Python this would be:: >>> atoms = Atoms(...) >>> filter = Filter(atoms, ...) >>> dyn = Dynamics(filter, ...) This class hides some of the atoms in an Atoms object. .. class:: Filter(atoms, indices=None, mask=None) You must supply either the indices of the atoms that should be kept visible or a mask. The mask is a list of booleans, one for each atom, being true if the atom should be kept visible. Example of use:: >>> from ase import Atoms, Filter >>> atoms=Atoms(positions=[[ 0 , 0 , 0], ... [ 0.773, 0.600, 0], ... [-0.773, 0.600, 0]], ... symbols='OH2') >>> f1 = Filter(atoms, indices=[1, 2]) >>> f2 = Filter(atoms, mask=[0, 1, 1]) >>> f3 = Filter(atoms, mask=[a.Z == 1 for a in atoms]) >>> f1.get_positions() [[ 0.773 0.6 0. ] [-0.773 0.6 0. ]] In all three filters only the hydrogen atoms are made visible. When asking for the positions only the positions of the hydrogen atoms are returned. The UnitCellFilter class ======================== .. autoclass:: UnitCellFilter The StrainFilter class ====================== .. autoclass:: StrainFilter ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/data.rst000066400000000000000000000142701316323560300227530ustar00rootroot00000000000000.. module:: ase.data =============== The data module =============== Atomic data =========== This module defines the following variables: .. data:: atomic_masses .. data:: atomic_names .. data:: chemical_symbols .. data:: covalent_radii .. data:: cpk_colors .. data:: reference_states .. data:: vdw_radii .. data:: atomic_masses_iupac2016 .. data:: atomic_masses_legacy All of these are lists that should be indexed with an atomic number: >>> from ase.data import atomic_numbers, atomic_names, atomic_masses, covalent_radii >>> atomic_names[92] 'Uranium' >>> atomic_masses[2] 4.0026000000000002 .. data:: atomic_numbers If you don't know the atomic number of some element, then you can look it up in the :data:`atomic_numbers` dictionary: >>> atomic_numbers['Cu'] 29 >>> covalent_radii[29] 1.3200000000000001 Atomic masses are based on [Meija2016]_ (same array as :data:`atomic_masses_iupac2016`). Standard atomic weights are taken from Table 1: "Standard atomic weights 2013", with the uncertainties ignored. For hydrogen, helium, boron, carbon, nitrogen, oxygen, magnesium, silicon, sulfur, chlorine, bromine and thallium, where the weights are given as a range the "conventional" weights are taken from Table 3, and the ranges are given in the source code comments. The mass of the most stable isotope (in Table 4) is used for elements where there the element has no stable isotopes (to avoid NaNs): Tc, Pm, Po, At, Rn, Fr, Ra, Ac, everything after Np Atomic masses provided by ASE before 2017 can be accessed in the :data:`atomic_masses_legacy` member. To recover legacy behaviour an Atoms object can be modified as: >>> from ase.data import atomic_masses_legacy >>> atoms.set_masses(atomic_masses_legacy[atoms.numbers]) The covalent radii are taken from [Cordeo08]_. The source of the van der Waals radii is given in vdw.py_. .. [Meija2016] *Atomic weights of the elements 2013 (IUPAC Technical Report).* Meija, J., Coplen, T., Berglund, M., et al. (2016). Pure and Applied Chemistry, 88(3), pp. 265-291. Retrieved 30 Nov. 2016, from doi:10.1515/pac-2015-0305 .. [Cordeo08] *Covalent radii revisited*, Beatriz Cordero, Verónica Gómez, Ana E. Platero-Prats, Marc Revés, Jorge Echeverría, Eduard Cremades, Flavia Barragán and Santiago Alvarez, Dalton Trans., 2008, 2832-2838 DOI:10.1039/B801115J .. _vdw.py: https://gitlab.com/ase/ase/blob/master/ase/data/vdw.py How to extract isotope data from NIST ------------------------------------- .. autofunction:: ase.data.isotopes.download_isotope_data .. _molecular-data: Molecular data ============== The G1, G2, and G3-databases are available. Example: >>> from ase.build import molecule >>> atoms = molecule('H2O') All molecular members of each database is conveniently contained in a list of strings (g1, g2, g3), ??? and one can look up the experimental atomization energy for each molecule. This is extrapolated from experimental heats of formation at room temperature, using calculated zero-point energies and thermal corrections. Example: >>> from ase.data.g2 import get_atomization_energy >>> get_atomization_energy('H2O') 232.5799 >>> from ase.units import kcal,mol >>> get_atomization_energy('H2O')*kcal/mol 10.08561894878958 where the last line converts the experimental atomization energy of H2O from units of kcal/mol to eV. S22, s26, and s22x5 data ======================== The s22, s26, and s22x5 databases are available in the *s22* module. Each weakly bonded complex is identified as an entry in a list of strings (s22, s26, s22x5), and is fully created by a 'create'-function: >>> from ase.data.s22 import s22, create_s22_system >>> sys = s22[0] >>> sys 'Ammonia_dimer' >>> atoms = create_s22_system(sys) >>> atoms.get_chemical_symbols() ['N', 'H', 'H', 'H', 'N', 'H', 'H', 'H'] The coupled-cluster interaction energies for the s22 and s26 systems are retrieved like this: >>> from ase.data.s22 import s22, get_interaction_energy_s22 >>> get_interaction_energy_s22(s22[0]) -0.1375 in units of eV. For s22 these are not the original energies, but from more recent work where the same (large) basis set was used for all complexes, yielding more accurate coupled-cluster interaction energies. The s22x5 database expands on the original s22 data by introducing non-equilibrium geometries for each complex (0.9, 1.0, 1.2, 1.5, and 2.0 times original intermolecular distance). However, these calculations were done in accordance with the methods used in the original s22 work, and so is expected to inherit the same problems with mixed basis set sizes. Assuming the interaction energy error due to this is the same in all 5 geometries for each complex, the default s22x5 interaction energies are therefore corrected with the energy difference between original and newer energies at the original separation. Example: >>> from ase.data.s22 import * >>> sys1 = s22[0] >>> sys1 'Ammonia_dimer' >>> atoms1 = create_s22_system(sys1) >>> sys2 = s22x5[0] >>> sys2 'Ammonia_dimer_0.9' >>> atoms2 = create_s22_system(sys2) >>> sys3 = s22x5[1] >>> sys3 'Ammonia_dimer_1.0' >>> atoms3 = create_s22_system(sys3) >>> get_interaction_energy_s22(sys1) -0.1375 >>> get_interaction_energy_s22(sys2) -0.1375 >>> get_interaction_energy_s22(sys3) -0.1375 >>> get_interaction_energy_s22x5(sys2) -0.10549743024963291 >>> get_interaction_energy_s22x5(sys3) -0.1375 >>> get_interaction_energy_s22x5(sys3,correct_offset=False) -0.1362 >>> get_interaction_energy_s22x5(sys1,dist=1.0) -0.1375 >>> get_interaction_energy_s22x5(sys1,dist=0.9) -0.10549743024963291 >>> get_interaction_energy_s22x5(sys1,dist=0.9,correct_offset=False) -0.1045 >>> get_number_of_dimer_atoms(sys1) [4, 4] >>> get_s22x5_distance(sys2) -0.25040236345454536 >>> get_s22x5_distance(sys3) 0.0 where sys1 is an s22 complex in the original geometry, while sys2 and sys3 are two different s22x5 geometries of the exact same complex. It is seen that the interaction energies for an s22 system and its s22x5 equivalent (indexed '_1.0') does not necessarily match when the energy offset-correction is turned off. The last two functions are convenience functions, giving the number of atoms in the two molecules constituting a dimer and the relative intermolecular distance in a dimer (relative to the '1.0' separation, and in Angstrom), respectively. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/db/000077500000000000000000000000001316323560300216715ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/db/db.py000066400000000000000000000030361316323560300226320ustar00rootroot00000000000000# creates: ase-db.txt, ase-db-long.txt, known-keys.csv import subprocess import ase.db from ase import Atoms from ase.calculators.emt import EMT from ase.db.core import default_key_descriptions from ase.optimize import BFGS c = ase.db.connect('abc.db', append=False) h2 = Atoms('H2', [(0, 0, 0), (0, 0, 0.7)]) h2.calc = EMT() h2.get_forces() c.write(h2, relaxed=False) BFGS(h2).run(fmax=0.01) c.write(h2, relaxed=True, data={'abc': [1, 2, 3]}) for d in c.select('molecule'): print(d.forces[0, 2], d.relaxed) h = Atoms('H') h.calc = EMT() h.get_potential_energy() c.write(h) with open('ase-db.txt', 'w') as fd: fd.write('$ ase db abc.db\n') output = subprocess.check_output(['ase', 'db', 'abc.db']) fd.write(output.decode()) with open('ase-db-long.txt', 'w') as fd: fd.write('$ ase db abc.db relaxed=1 -l\n') output = subprocess.check_output( ['ase', 'db', 'abc.db', 'relaxed=1', '-l']) fd.write(output.decode()) row = c.get(relaxed=1, calculator='emt') for key in row: print('{0:22}: {1}'.format(key, row[key])) print(row.data.abc) e2 = row.energy e1 = c.get(H=1).energy ae = 2 * e1 - e2 print(ae) id = c.get(relaxed=1).id c.update(id, atomization_energy=ae) del c[c.get(relaxed=0).id] with open('known-keys.csv', 'w') as fd: print('key,short description,long description,unit', file=fd) for key, (short, long, unit) in default_key_descriptions.items(): if unit == '|e|': unit = '\|e|' long = long or short print('{},{},{},{}'.format(key, short, long, unit), file=fd) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/db/db.rst000066400000000000000000000360301316323560300230120ustar00rootroot00000000000000.. module:: ase.db ==================== A database for atoms ==================== ASE has its own database that can be used for storing and retrieving atoms and associated data in a compact and convenient way. There are currently three back-ends: JSON_: Simple human-readable text file with a ``.json`` extension. SQLite3_: Self-contained, server-less, zero-configuration database. Lives in a file with a ``.db`` extension. PostgreSQL_: Server based database. The JSON and SQLite3 back-ends work "out of the box", whereas PostgreSQL requires a :ref:`server`. There is a command-line tool called :ref:`ase-db` that can be used to query and manipulate databases and also a `Python interface`_. .. _JSON: http://www.json.org/ .. _SQLite3: http://www.sqlite.org/ .. _PostgreSQL: http://www.postgresql.org/ .. contents:: What's in the database? ======================= Every row in the database contains: * all the information stored in the :class:`~ase.Atoms` object (positions, atomic numbers, ...) * calculator name and parameters (if a calculator is present) * already calculated properties such as energy and forces (if a calculator is present) * key-value pairs (for finding the calculation again) * an integer ID (unique for each database) starting with 1 and always increasing for each new row * a unique ID which is a 128 bit random number which should be globally unique (at least in the lifetime of our universe) * constraints (if present) * user-name * creation and modification time .. _ase-db: ase db ====== The :ref:`ase-db` command-line tool can be used to query databases and for manipulating key-value pairs. Try:: $ ase db --help Example: Show all rows of SQLite database abc.db: .. literalinclude:: ase-db.txt Show all details for a single row: .. literalinclude:: ase-db-long.txt .. seealso:: * :ref:`cli` Querying -------- Here are some example query strings: .. list-table:: :widths: 25 75 * - Cu - contains copper * - H<3 - less than 3 hydrogen atoms * - Cu,H<3 - contains copper and has less than 3 hydrogen atoms * - H2O - At least two hydrogens and at least one oxygen * - formula=H2O - Exactly two hydrogens and one oxygen * - v3 - has 'v3' key * - abc=bla-bla - has key 'abc' with value 'bla-bla' * - v3,abc=bla-bla - both of the above * - calculator=nwchem - calculations done with NWChem * - 2.2=10 - 10 or more atoms * - id=2345 - specific id * - age<1h - not older than 1 hour * - age>1y - older than 1 year * - pbc=TTT - Periodic boundary conditions along all three axes * - pbc=TTF - Periodic boundary conditions along the first two axes (F=False, T=True) These names are special: .. list-table:: :widths: 25 75 * - id - integer identifier * - natoms - number of atoms * - pbc - Periodic boundary conditions * - formula - formula * - energy - potential energy * - charge - total charge * - magmom - total magnetic moment * - calculator - name of calculator * - user - who did it * - age - age of calculation (use s, m, h, d, w, M and y for second, minute, hour, day, week, month and year respectively) Integration with other parts of ASE =================================== ASE's :func:`ase.io.read` function can also read directly from databases: >>> from ase.io import read >>> a = read('abc.db@42') >>> a = read('abc.db@id=42') # same thing >>> b = read('abc.db@v3,abc=H') Also the :ref:`ase-gui` program can read from databases using the same syntax. .. _ase-db-web: Browse database with your web-browser ===================================== You can use your web-browser to look at and query databases like this:: $ ase db abc.db -w $ firefox http://0.0.0.0:5000/ Click individual rows to see details. See the CMR_ web-page for an example of how this works. .. _CMR: https://cmrdb.fysik.dtu.dk/ Python Interface ================ .. module:: ase.db.core First, we :func:`connect` to the database: >>> from ase.db import connect >>> db = connect('abc.db') or >>> import ase.db >>> db = ase.db.connect('abc.db') Let's do a calculation for a hydrogen molecule and write some results to a database: >>> from ase import Atoms >>> from ase.calculators.emt import EMT >>> h2 = Atoms('H2', [(0, 0, 0), (0, 0, 0.7)]) >>> h2.calc = EMT() >>> h2.get_forces() array([[ 0. , 0. , -9.803], [ 0. , 0. , 9.803]]) Write a row to the database with a key-value pair (``'relaxed'``, ``False``): >>> db.write(h2, relaxed=False) 1 The :meth:`~Database.write` method returns an integer id. Do one more calculation and write results: >>> from ase.optimize import BFGS >>> BFGS(h2).run(fmax=0.01) # doctest: +SKIP BFGS: 0 12:49:25 1.419427 9.8029 BFGS: 1 12:49:25 1.070582 0.0853 BFGS: 2 12:49:25 1.070544 0.0236 BFGS: 3 12:49:25 1.070541 0.0001 >>> db.write(h2, relaxed=True) 2 Loop over selected rows using the :meth:`~Database.select` method: >>> for row in db.select(relaxed=True): ... print(row.forces[0, 2], row.relaxed) # doctest: +SKIP -9.8029057329 False -9.2526347333e-05 True The :meth:`~Database.select` method will generate :ref:`row objects` that one can loop over. Write the energy of an isolated hydrogen atom to the database: >>> h = Atoms('H') >>> h.calc = EMT() >>> h.get_potential_energy() 3.21 >>> db.write(h) 3 Select a single row with the :meth:`~Database.get` method: >>> row = db.get(relaxed=1, calculator='emt') >>> for key in row: ... print('{0:22}: {1}'.format(key, row[key])) # doctest: +SKIP pbc : [False False False] relaxed : True calculator_parameters : {} user : jensj mtime : 15.3439399027 calculator : emt ctime : 15.3439399027 positions : [[ ... ]] id : 2 cell : [[ 0. 0. 0.] [ 0. 0. 0.] [ 0. 0. 0.]] forces : [[ ... ]] energy : 1.07054126233 unique_id : bce90ff3ea7661690b54f9794c1d7ef6 numbers : [1 1] Calculate the atomization energy and :meth:`~Database.update` a row in the database: >>> e2 = row.energy >>> e1 = db.get(H=1).energy >>> ae = 2 * e1 - e2 >>> print(ae) 5.34945873767 >>> id = db.get(relaxed=1).id >>> db.update(id, atomization_energy=ae) 1 Delete a single row: >>> del db[db.get(relaxed=0).id] or use the :meth:`~Database.delete` method to delete several rows. Description of a row -------------------- The first 9 keys (from "id" to "positions") are always present --- the rest may be there: ===================== ================================= ============ ====== key description datatype shape ===================== ================================= ============ ====== id Local database id int unique_id Globally unique hexadecimal id str ctime Creation time float mtime Modification time float user User name str numbers Atomic numbers int (N,) pbc Periodic boundary condition flags bool (3,) cell Unit cell float (3, 3) positions Atomic positions float (N, 3) initial_magmoms Initial atomic magnetic moments float (N,) initial_charges Initial atomic charges float (N,) masses Atomic masses float (N,) tags Tags int (N,) momenta Atomic momenta float (N, 3) constraints Constraints list of dict energy Total energy float forces Atomic forces float (N, 3) stress Stress tensor float (6,) dipole Electrical dipole float (3,) charges Atomic charges float (N,) magmom Magnetic moment float magmoms Atomic magnetic moments float (N,) calculator Calculator name str calculator_parameters Calculator parameters dict ===================== ================================= ============ ====== Extracting Atoms objects from the database ------------------------------------------ If you want an :class:`~ase.Atoms` object insted of an :class:`~ase.db.row.AtomsRow` object, you should use the :meth:`~Database.get_atoms` method: >>> h2 = db.get_atoms(H=2) or if you want the original EMT calculator attached: >>> h2 = db.get_atoms(H=2, attach_calculator=True) Add additional data ------------------- When you write a row to a database using the :meth:`~Database.write` method, you can add key-value pairs where the values can be strings, floating point numbers, integers and booleans: >>> db.write(atoms, functional='LDA', distance=7.2) More complicated data can be written like this: >>> db.write(atoms, ..., data={'parents': [7, 34, 14], 'stuff': ...}) and accessed like this: >>> row = db.get(...) >>> row.data.parents [7, 34, 14] .. _row objects: Row objects ----------- There are three ways to get at the columns of a row: 1) as attributes (``row.key``) 2) indexing (``row['key']``) 3) the :meth:`~ase.db.row.AtomsRow.get` method (``row.get('key')``) The first two will fail if there is no ``key`` column whereas the last will just return ``None`` in that case. Use ``row.get('key', ...)`` to use another default value. .. autoclass:: ase.db.row.AtomsRow :members: :member-order: bysource Writing and updating many rows efficiently ------------------------------------------ If you do this:: db = connect('mols.db') for mol in molecules: db.write(mol, ...) the database will make sure that each molecule is written to permanent starage (typically a harddisk) before it moves on to the next molecule. This can be quite slow. To speed this up, you can write all the molecules in a single transaction like this:: with connect('mols.db') as db: for mol in molecules: db.write(mol, ...) When the for-loop is done, the database will commit (or roll back if there was an error) the transaction. Similarly, the :meth:`~Database.update` method will do up to ``block_size=1000`` rows in one transaction:: # slow: for row in db.select(...): db.update(row.id, foo='bar') # a single id # faster: ids = [row.id for row in db.select(...)] db.update(ids, foo='bar') # list of id's Writing rows in parallel ------------------------ Say you want to run a series of jobs and store the calculations in one database:: for name in many_molecules: mol = read(name) calculate_something(mol) db.write(mol, name=name) With four extra lines (see the :meth:`~Database.reserve` method):: for name in many_molecules: id = db.reserve(name=name) if id is None: continue mol = read(name) calculate_something(mol) db.write(mol, name=name) del db[id] you will be able to run several jobs in parallel without worrying about two jobs trying to do the same calculation. The :meth:`~Database.reserve` method will write an empty row with the ``name`` key and return the ID of that row. Other jobs trying to make the same reservation will fail. While the jobs are running, you can keep an eye on the ongoing (reserved) calculations by identifying empty rows:: $ ase db many_results.db natoms=0 More details ------------ Use this function for getting a connection to a database: .. autofunction:: connect Here is a description of the database object: .. autoclass:: ase.db.core.Database :members: :member-order: bysource :exclude-members: write, reserve, update .. decorators hide these three from Sphinx, so we add them by hand: .. automethod:: write(atoms, key_value_pairs={}, data={}, **kwargs) .. automethod:: reserve(**key_value_pairs) .. automethod:: update(ids, delete_keys=[], block_size=1000, **add_key_value_pairs) .. attribute:: metadata Dictionary .. _metadata: Metadata -------- It's can be useful to add a discription of the data that's in a database. This description will be used when browsing the database with a :ref:`web-browser `. You can add the desciption using the :attr:`~Database.metadata` attribute: >>> db.metadata = { ... 'title': 'Project 1', ... 'key_descriptions': ... {'v0': ('Voltage', 'Longer description ...', 'V')}, ... 'default_columns': ['id', 'formula', 'v0']} ASE already knows all about the following keys: .. csv-table:: :file: known-keys.csv :header-rows: 1 :widths: 2 3 4 2 You can also write/read to/from JSON using:: $ ase db proj1.db --set-metadata metadata.json $ ase db proj1.db --show-metadata > metadata.json .. _server: Running a PostgreSQL server =========================== .. highlight:: bash With your PostgreSQL server up and running, you should run the following command as the ``postgres`` user:: $ sudo -u postgres psql Then you create an 'ase' user and one database for each project you have:: postgres=# create user ase login password 'pw'; postgres=# create database project1; postgres=# create database project2; Show databases and quit:: postgres=# \l postgres=# \q You should now be able to query the database using a URI like ``postgresql://user:pw@host:port/dbname``:: $ PROJ1=postgresql://ase:pw@localhost:5432/project1 $ ase db $PROJ1 If you have some data in a ``data.db`` SQLite3 file, then you can insert that into the PostgreSQL database like this:: $ ase db data.db --insert-into $PROJ1 Now you can start the Flask_\ -app ``ase.db.app``. You can use Flask's own web-server or use any WSGI_ compatible server. We will use Twisted_ in the example below. Set the $ASE_DB_APP_CONFIG environment variable to point to a Python configuration file containing something similar to this:: ASE_DB_NAMES = ['postgresql://ase:pw@localhost:5432/project1', 'postgresql://ase:pw@localhost:5432/project2', ...] ASE_DB_HOMEPAGE = 'HOME' and then start the server with:: $ ASE_DB_APP_CONFIG=... twistd web --wsgi=ase.db.app.app --port=tcp:8000 .. note:: Please review the code carefully before exposing the ``ase.db.app`` to the internet or `bad things `__ could happen. .. _Flask: http://flask.pocoo.org/ .. _WSGI: https://www.python.org/dev/peps/pep-3333/ .. _Twisted: https://twistedmatrix.com/ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/000077500000000000000000000000001316323560300220615ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/bader.rst000066400000000000000000000010251316323560300236660ustar00rootroot00000000000000============== Bader Analysis ============== An example of Bader analysis: `The water molecule`_. .. _The water molecule: https://wiki.fysik.dtu.dk/gpaw/tutorials/bader/bader.html You can attach the output charges from the bader program to the atoms for further processing:: from ase.io.bader import attach_charges # the next two lines are equivalent (only one needed) attach_charges(atoms) attach_charges(atoms, 'ACF.dat') for atom in atoms: print('Atom', atom.symbol, 'Bader charge', atom.charge) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/bandgap.rst000066400000000000000000000001521316323560300242050ustar00rootroot00000000000000.. module:: ase.dft.bandgap :synopsis: Band gap ======== Band gap ======== .. autofunction:: bandgap ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/bs.py000066400000000000000000000004511316323560300230370ustar00rootroot00000000000000# creates: cu.png from ase.build import bulk from ase.calculators.test import FreeElectrons a = bulk('Cu') a.calc = FreeElectrons(nvalence=1, kpts={'path': 'GXWLGK', 'npoints': 200}) a.get_potential_energy() bs = a.calc.band_structure() bs.plot(emax=10, filename='cu.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/bz.py000066400000000000000000000060141316323560300230470ustar00rootroot00000000000000# creates: cubic.svg, fcc.svg, bcc.svg, tetragonal.svg, orthorhombic.svg # creates: hexagonal.svg, monoclinic.svg from math import pi, sin, cos import numpy as np import matplotlib.pyplot as plt from ase.dft.kpoints import (get_special_points, special_paths, parse_path_string) def bz_vertices(cell): from scipy.spatial import Voronoi icell = np.linalg.inv(cell) I = np.indices((3, 3, 3)).reshape((3, 27)) - 1 G = np.dot(icell, I).T vor = Voronoi(G) bz1 = [] for vertices, points in zip(vor.ridge_vertices, vor.ridge_points): if -1 not in vertices and 13 in points: normal = G[points].sum(0) normal /= (normal**2).sum()**0.5 bz1.append((vor.vertices[vertices], normal)) return bz1 def plot(cell, paths, elev=None, scale=1): import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D Axes3D # silence pyflakes fig = plt.figure(figsize=(5, 5)) ax = fig.gca(projection='3d') azim = pi / 5 elev = elev or pi / 6 x = sin(azim) y = cos(azim) view = [x * cos(elev), y * cos(elev), sin(elev)] bz1 = bz_vertices(cell) for points, normal in bz1: if np.dot(normal, view) < 0: ls = ':' else: ls = '-' x, y, z = np.concatenate([points, points[:1]]).T ax.plot(x, y, z, c='k', ls=ls) txt = '' for names, points in paths: x, y, z = np.array(points).T ax.plot(x, y, z, c='b', ls='-') for name, point in zip(names, points): x, y, z = point if name == 'G': name = '\\Gamma' elif len(name) > 1: name = name[0] + '_' + name[1] ax.text(x, y, z, '$' + name + '$', ha='center', va='bottom', color='r') txt += '`' + name + '`-' txt = txt[:-1] + '|' print(txt[:-1]) ax.set_axis_off() ax.autoscale_view(tight=True) s = np.array(paths[0][1]).max() / 0.5 * 0.45 * scale ax.set_xlim(-s, s) ax.set_ylim(-s, s) ax.set_zlim(-s, s) ax.set_aspect('equal') ax.view_init(azim=azim / pi * 180, elev=elev / pi * 180) for X, cell in [ ('cubic', np.eye(3)), ('fcc', [[0, 1, 1], [1, 0, 1], [1, 1, 0]]), ('bcc', [[-1, 1, 1], [1, -1, 1], [1, 1, -1]]), ('tetragonal', [[1, 0, 0], [0, 1, 0], [0, 0, 1.3]]), ('orthorhombic', [[1, 0, 0], [0, 1.2, 0], [0, 0, 1.4]]), ('hexagonal', [[1, 0, 0], [-0.5, 3**0.5 / 2, 0], [0, 0, 1]]), ('monoclinic', [[1, 0, 0], [0, 1, 0], [0, 0.2, 1]])]: icell = np.linalg.inv(cell) print(cell, X) special_points = get_special_points(cell, X) paths = [] for names in parse_path_string(special_paths[X]): points = [] for name in names: points.append(np.dot(icell, special_points[name])) paths.append((names, points)) if X == 'bcc': scale = 0.6 elev = pi / 13 else: scale = 1 elev = None plot(cell, paths, elev, scale) plt.savefig(X + '.svg') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/dft.rst000066400000000000000000000003211316323560300233640ustar00rootroot00000000000000.. module:: ase.dft :synopsis: Tools specific to DFT calculators Density Functional Theory ========================= .. toctree:: :maxdepth: 2 kpoints wannier dos bandgap stm bader ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/dos.py000066400000000000000000000011041316323560300232140ustar00rootroot00000000000000# creates: dos.png import numpy as np import matplotlib.pyplot as plt from ase.dft import DOS class MyCalc: def get_eigenvalues(self, kpt=0, spin=0): return np.random.uniform(-5.0, 2.0, 90) def get_k_point_weights(self): return [1.0] def get_number_of_spins(self): return 1 def get_fermi_level(self): return 0.0 calc = MyCalc() dos = DOS(calc, width=0.2) d = dos.get_dos() e = dos.get_energies() plt.figure(figsize=(5, 4)) plt.plot(e, d) plt.xlabel('energy [eV]') plt.ylabel('DOS') plt.tight_layout() plt.savefig('dos.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/dos.rst000066400000000000000000000015161316323560300234030ustar00rootroot00000000000000.. module:: ase.dft.dos :synopsis: Density of states ================= Density of states ================= Example:: calc = ... dos = DOS(calc, width=0.2) d = dos.get_dos() e = dos.get_energies() You can plot the result like this:: import matplotlib.pyplot as plt plt.plot(e, d) plt.xlabel('energy [eV]') plt.ylabel('DOS') plt.show() .. image:: dos.png Calculations involving moments of a DOS distribution may be facilitated by the use of :func:`~ase.dft.get_distribution_moment` method, as in the following example:: from ase.dft import get_distribution_moment volume = get_distribution_moment(e,d) center, width = get_distribution_moment(e,d,(1,2)) More details ------------ .. autoclass:: DOS :members: get_energies, get_dos .. autofunction:: ltidos .. autofunction:: ase.dft.get_distribution_moment ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/kpoints.py000066400000000000000000000004071316323560300241230ustar00rootroot00000000000000# creates: cc.png import matplotlib.pyplot as plt import numpy as np from ase.dft.kpoints import cc162_1x1 B = [(1, 0, 0), (-0.5, 3**0.5 / 2, 0), (0, 0, 1)] k = np.dot(cc162_1x1, B) plt.figure(figsize=(5, 4)) plt.plot(k[:, 0], k[:, 1], 'o') plt.savefig('cc.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/kpoints.rst000066400000000000000000000103111316323560300242760ustar00rootroot00000000000000.. module:: ase.dft.kpoints :synopsis: Brillouin zone sampling ======================= Brillouin zone sampling ======================= The **k**-points are always given relative to the basis vectors of the reciprocal unit cell. Monkhorst-Pack -------------- .. autofunction:: monkhorst_pack The k-points are given as [MonkhorstPack]_: .. math:: \sum_{i=1,2,3} \frac{2n_i -N_i - 1}{2N_i} \mathbf{b}_i, where `n_i=1,2,...,N_i`, ``size`` = `(N_1, N_2, N_3)` and the `\mathbf{b}_i`'s are reciprocal lattice vectors. .. autofunction:: get_monkhorst_pack_size_and_offset Example: >>> from ase.dft.kpoints import * >>> monkhorst_pack((4, 1, 1)) array([[-0.375, 0. , 0. ], [-0.125, 0. , 0. ], [ 0.125, 0. , 0. ], [ 0.375, 0. , 0. ]]) >>> get_monkhorst_pack_size_and_offset([[0, 0, 0]]) (array([1, 1, 1]), array([ 0., 0., 0.])) .. [MonkhorstPack] Hendrik J. Monkhorst and James D. Pack: *Special points for Brillouin-zone integrations*, Phys. Rev. B 13, 5188–5192 (1976) Special points in the Brillouin zone ------------------------------------ .. data:: special_points Special points from [Setyawana-Curtarolo]_: .. list-table:: :widths: 10 30 35 * - Cubic - GXMGRX,MR - .. image:: cubic.svg :width: 25 % * - FCC - GXWKGLUWLK,UX - .. image:: fcc.svg :width: 25 % * - BCC - GHNGPH,PN - .. image:: bcc.svg :width: 25 % * - Tetragonal - GXMGZRAZ,XR,MA - .. image:: tetragonal.svg :width: 25 % * - Orthorhombic - GXSYGZURTZ,YT,UX,SR - .. image:: orthorhombic.svg :width: 25 % * - Hexagonal - GMKGALHA,LM,KH - .. image:: hexagonal.svg :width: 25 % * - Monoclinic - GYHCEM1AXH1,MDZ,YD - .. image:: monoclinic.svg :width: 25 % .. [Setyawana-Curtarolo] High-throughput electronic band structure calculations: Challenges and tools Wahyu Setyawana, Stefano Curtarolo Computational Materials Science, Volume 49, Issue 2, August 2010, Pages 299–312 http://dx.doi.org/10.1016/j.commatsci.2010.05.010 You can find the special points in the Brillouin zone: >>> from ase.build import bulk >>> from ase.dft.kpoints import get_special_points >>> from ase.dft.kpoints import bandpath >>> si = bulk('Si', 'diamond', a=5.459) >>> points = get_special_points('fcc', si.cell) >>> GXW = [points[k] for k in 'GXW'] >>> kpts, x, X = bandpath(GXW, si.cell, 100) >>> print(kpts.shape, len(x), len(X)) (100, 3) 100 3 .. autofunction:: get_special_points .. autofunction:: bandpath .. autofunction:: parse_path_string .. autofunction:: labels_from_kpts Band structure -------------- .. autoclass:: ase.dft.band_structure.BandStructure :members: Free electron example: .. literalinclude:: bs.py .. image:: cu.png Interpolation ------------- .. autofunction:: monkhorst_pack_interpolate High symmetry paths ------------------- .. data:: special_paths The ``special_paths`` dictionary contains suggestions for high symmetry paths in the BZ from the [Setyawana-Curtarolo]_ paper. >>> from ase.dft.kpoints(import special_paths, special_points, ... parse_path_string) >>> paths = special_paths['bcc'] >>> paths [['G', 'H', 'N', 'G', 'P', 'H'], ['P', 'N']] >>> points = special_points['bcc'] >>> points {'H': [0.5, -0.5, 0.5], 'N': [0, 0, 0.5], 'P': [0.25, 0.25, 0.25], 'G': [0, 0, 0]} >>> kpts = [points[k] for k in paths[0]] # G-H-N-G-P-H >>> kpts [[0, 0, 0], [0.5, -0.5, 0.5], [0, 0, 0.5], [0, 0, 0], [0.25, 0.25, 0.25], [0.5, -0.5, 0.5]] Chadi-Cohen ----------- Predefined sets of **k**-points: .. data:: cc6_1x1 .. data:: cc12_2x3 .. data:: cc18_sq3xsq3 .. data:: cc18_1x1 .. data:: cc54_sq3xsq3 .. data:: cc54_1x1 .. data:: cc162_sq3xsq3 .. data:: cc162_1x1 Naming convention: ``cc18_sq3xsq3`` is 18 **k**-points for a sq(3)xsq(3) cell. Try this: >>> import numpy as np >>> import matplotlib.pyplot as plt >>> from ase.dft.kpoints import cc162_1x1 >>> B = [(1, 0, 0), (-0.5, 3**0.5 / 2, 0), (0, 0, 1)] >>> k = np.dot(cc162_1x1, B) >>> plt.plot(k[:, 0], k[:, 1], 'o') # doctest: +SKIP [] >>> plt.show() .. image:: cc.png ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/stm.rst000066400000000000000000000020431316323560300234150ustar00rootroot00000000000000.. _stm: STM images ========== The STM is a revolutionary experimental surface probe that has provided direct local insight into the surface electronic structure. Sometimes the interpretation of STM topographs are not straightforward and therefore theoretically modeled STM images may resolve conflicting possibilities and point to an underlying atomistic model. ASE includes python modules for generating Tersoff-Hamann STM topographs. The calculated tunneling current will be proportional to: .. math:: \int_{\epsilon_F}^{\epsilon_F+eV} \sum_{kn} w_{\mathbf k} |\Psi_{\mathbf k n}(\mathbf r)|^2 \delta(\epsilon - \epsilon_{\mathbf k n}) d\epsilon, where `V` is the bias voltage, `w_{\mathbf k}` is the `\mathbf k`-point weight and `\Psi_{\mathbf k n}(\mathbf r)` is the wave function. .. seealso:: * `Tutorial using GPAW `__ * `Execise using GPAW `__ More details: .. autoclass:: ase.dft.stm.STM :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dft/wannier.rst000066400000000000000000000115431316323560300242620ustar00rootroot00000000000000.. module:: ase.dft.wannier :synopsis: Maximally localized Wannier functions ===================================== Maximally localized Wannier functions ===================================== This page describes how to construct the Wannier orbitals using the class :class:`Wannier`. The page is organized as follows: * `Introduction`_: A short summary of the basic theory. * `The Wannier class`_ : A description of how the Wannier class is used, and the methods defined within. Introduction ============ The point of Wannier functions is the transform the extended Bloch eigenstates of a DFT calculation, into a smaller set of states designed to facilitate the analysis of e.g. chemical bonding. This is achieved by designing the Wannier functions to be localized in real space instead of energy (which would be the eigen states). The standard Wannier transformation is a unitary rotation of the Bloch states. This implies that the Wannier functions (WF) span the same Hilbert space as the Bloch states, i.e. they have the same eigenvalue spectrum, and the original Bloch states can all be exactly reproduced from a linear combination of the WF. For maximally localized Wannier functions (MLWF), the unitary transformation is chosen such that the spread of the resulting WF is minimized. The standard choice is to make a unitary transformation of the occupied bands only, thus resulting in as many WF as there are occupied bands. If you make a rotation using more bands, the localization will be improved, but the number of wannier functions increase, thus making orbital based analysis harder. The class defined here allows for construction of *partly* occupied MLWF. In this scheme the transformation is still a unitary rotation for the lowest states (the *fixed space*), but it uses a dynamically optimized linear combination of the remaining orbitals (the *active space*) to improve localization. This implies that e.g. the eigenvalues of the Bloch states contained in the fixed space can be exactly reproduced by the resulting WF, whereas the largest eigenvalues of the WF will not necessarily correspond to any "real" eigenvalues (this is irrelevant, as the fixed space is usually chosen large enough, i.e. high enough above the fermilevel, that the remaining DFT eigenvalues are meaningless anyway). For the theory behind this method see the paper "Partly Occupied Wannier Functions" Thygesen, Hansen and Jacobsen, *Phys. Rev. Lett*, Vol. **94**, 26405 (2005). The Wannier class ================= Usual invocation:: from ase.dft import Wannier wan = Wannier(nwannier=18, calc=GPAW('save.gpw'), fixedstates=15) wan.localize() # Optimize rotation to give maximal localization wan.save('file.pickle') # Save localization and rotation matrix # Re-load using saved wannier data wan = Wannier(nwannier=18, calc=calc, fixedstates=15, file='file.pickle') # Write a cube file wan.write_cube(index=5, fname='wannierfunction5.cube') For examples of how to use the **Wannier** class, see the :ref:`wannier tutorial` tutorial. .. autoclass:: Wannier :members: In Dacapo, the inialwannier keyword can be a list as described below: Setup an initial set of Wannier orbitals. *initialwannier* can set up a starting guess for the Wannier functions. This is important to speed up convergence in particular for large systems For transition elements with **d** electrons you will always find 5 highly localized **d**-orbitals centered at the atom. Placing 5 **d**-like orbitals with a radius of 0.4 Angstroms and center at atom no. 7, and 3 **p**-like orbitals with a radius of 0.4 Angstroms and center at atom no. 27 looks like this:: initialwannier = [[[7],2,0.4],[[27],1,0.4]] Placing only the l=2, m=-2 and m=-1 orbitals at atom no. 7 looks like this:: initialwannier = [[[7],2,-2,0.4],[[7],2,-1,0.4]] I.e. if you do not specify the m quantum number all allowed values are used. Instead of placing an orbital at an atom, you can place it at a specified position. For example the following:: initialwannier = [[[0.5,0.5,0.5],0,0.5]] places an **s** orbital with radius 0.5 Angstroms at the position (0.5, 0.5, 0.5) in scaled coordinates of the unit cell. .. note:: For calculations using **k**-points, make sure that the `\Gamma`-point is included in the **k**-point grid. The Wannier module does not support **k**-point reduction by symmetry, so you must use the ``usesymm=False`` keyword in the calc, and shift all **k**-points by a small amount (but not less than 2e-5 in) in e.g. the x direction, before performing the calculation. If this is not done the symmetry program will still use time-reversal symmetry to reduce the number of **k**-points by a factor 2. The shift can be performed like this:: from ase.dft.kpoints import monkhorst_pack kpts = monkhorst_pack((15, 9, 9)) + [2e-5, 0, 0] ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/dimer.rst000066400000000000000000000013441316323560300231400ustar00rootroot00000000000000============ Dimer method ============ .. module:: ase.dimer The dimer method is a means of finding a saddle point on a potential energy surface starting from a single point (as opposed to a NEB calculation, which requires an initial and final state). You can read about this method here: 1. 'A dimer method for finding saddle points on high dimensional potential surfaces using only first derivatives', G. Henkelman and H. Jonsson, J. Chem. Phys. 111, 7010, 1999. An example is shown below. .. literalinclude:: ../../ase/test/dimer_method.py :end-before: Test The module contains several classes. .. autoclass:: DimerControl .. autoclass:: MinModeAtoms .. autoclass:: MinModeTranslate .. autoclass:: DimerEigenmodeSearch ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/eos.rst000066400000000000000000000005671316323560300226340ustar00rootroot00000000000000.. module:: ase.eos .. index:: Bulk modulus Equation of state ================= The :class:`~ase.eos.EquationOfState` class can be used to find equilibrium volume, energy, and bulk modulus for solids: .. autoclass:: ase.eos.EquationOfState :members: fit, plot Convenient helper function: .. autofunction:: ase.eos.calculate_eos .. seealso:: The :ref:`eos` tutorial. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/ga.rst000066400000000000000000000041761316323560300224350ustar00rootroot00000000000000.. module:: ase.ga :synopsis: Genetic Algorithm Optimization =================== Genetic Algorithm =================== Genetic algorithms (GA) have proven a good alternative to Monte Carlo type optimization methods for global structure and materials properties optimization. A GA has recently been implemented into ase. The use of the GA is best learned through tutorials: .. toctree:: :maxdepth: 1 ../tutorials/ga/ga_optimize ../tutorials/ga/ga_convex_hull ../tutorials/ga/ga_fcc_alloys The GA implementation is diverse. It (or previous versions of it) has been used in publications with differing subjects such as structure of gold clusters on surfaces, composition of alloy nanoparticles, ammonia storage in mixed metal ammines and more. The implementation is structured such that it can be tailored to the specific problem investigated and to the computational resources available (single computer or a large computer cluster). The method is described in detail in the following publications: For **small clusters on/in support material** in: | L. B. Vilhelmsen and B. Hammer | `A genetic algorithm for first principles global structure optimization of supported nano structures`__ | The Journal of chemical physics, Vol. 141 (2014), 044711 __ http://dx.doi.org/10.1063/1.4886337 For **medium sized alloy clusters** in: | S. Lysgaard, D. D. Landis, T. Bligaard and T. Vegge | `Genetic Algorithm Procreation Operators for Alloy Nanoparticle Catalysts`__ | Topics in Catalysis, Vol **57**, No. 1-4, pp. 33-39, (2014) __ http://dx.doi.org/10.1007/s11244-013-0160-9 A search for **mixed metal ammines for ammonia storage** have been performed using the GA in: | P. B. Jensen, S. Lysgaard, U. J. Quaade and T. Vegge | `Designing Mixed Metal Halide Ammines for Ammonia Storage Using Density Functional Theory and Genetic Algorithms`__ | Physical Chemistry Chemical Physics, Vol **16**, No. 36, pp. 19732-19740, (2014) __ http://dx.doi.org/10.1039/C4CP03133D A simple tutorial explaining how to set up a database and perform a similar search can be found here: :ref:`fcc_alloys_tutorial` ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/geometry.rst000066400000000000000000000001121316323560300236630ustar00rootroot00000000000000Geometry tools ============== .. automodule:: ase.geometry :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/000077500000000000000000000000001316323560300220705ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/basics.rst000066400000000000000000000117171316323560300240750ustar00rootroot00000000000000======================================= ase-gui basics and command line options ======================================= General use ----------- Visualizing a system with ASE's GUI is straight-forward using a regular mouse. The scroll function allows to change the magnification, the left mouse button selects atoms, the right mouse button allows to rotate, and the middle button allows to translate the system on the screen. Depending on the number of selected atoms, :ref:`ase-gui` automatically measures different quantities: ================================= ====================================== Selection measurement ================================= ====================================== single atom xyz position and atomic symbol two atoms interatomic distance and symbols three atoms all three internal angles and symbols four atoms, selected sequentially Measures the dihedral angle, e.g. the angle between bonds 12 and 34 more than four atoms chemical composition of selection. ================================= ====================================== Files ----- The :ref:`ase-gui` program can read all the file formats the ASE's :func:`~ase.io.read` function can understand. :: $ ase gui N2Fe110-path.traj Selecting part of a trajectory ------------------------------ A Python-like syntax for selecting a subset of configurations can be used. Instead of the Python syntax ``list[start:stop:step]``, you use :file:`filaname@start:stop:step`:: $ ase gui x.traj@0:10:1 # first 10 images $ ase gui x.traj@0:10 # first 10 images $ ase gui x.traj@:10 # first 10 images $ ase gui x.traj@-10: # last 10 images $ ase gui x.traj@0 # first image $ ase gui x.traj@-1 # last image $ ase gui x.traj@::2 # every second image If you want to select the same range from many files, the you can use the ``-n`` or ``--image-number`` option:: $ ase gui -n -1 *.traj # last image from all files $ ase gui -n 0 *.traj # first image from all files .. tip:: Type :command:`ase gui -h` for a description of all command line options. Writing files ------------- :: $ ase gui -n -1 a*.traj -o new.traj Possible formats are: ``traj``, ``xyz``, ``cube``, ``pdb``, ``eps``, ``png``, and ``pov``. For details, see the :mod:`~ase.io` module documentation. Interactive use --------------- The :ref:`ase-gui` program can also be launched directly from a Python script or interactive session: >>> from ase import * >>> atoms = ... >>> view(atoms) or >>> view(atoms, repeat=(3, 3, 2)) or, to keep changes to your atoms: >>> atoms.edit() NEB calculations ---------------- Use :menuselection:`Tools --> NEB` to plot energy barrier. :: $ ase gui --interpolate 3 initial.xyz final.xyz -o interpolated_path.traj Plotting data from the command line ----------------------------------- Plot the energy relative to the energy of the first image as a function of the distance between atom 0 and 5:: $ ase gui -g "d(0,5),e-E[0]" x.traj $ ase gui -t -g "d(0,5),e-E[0]" x.traj > x.dat # No GUI, write data to stdout The symbols are the same as used in the plotting data function. Defaults -------- Using a file ``~/.ase/gui.py``, certain defaults can be set. If it exists, this file is executed after initializing the variables and colours normally used in ASE. One can change the default graphs that are plotted, and the default radii for displaying specific atoms. This example will display the energy evolution and the maximal force in a graph and also display Cu atoms (Z=29) with a radius of 1.6 Angstrom. :: gui_default_settings['gui_graphs_string'] = "i, e - min(E), fmax" gui_default_settings['covalent_radii'] = [[29,1.6]] .. _high contrast: High contrast settings ---------------------- In revision 2600 or later, it is possible to change the foreground and background colors used to draw the atoms, for instance to draw white graphics on a black background. This can be done in ``~/.ase/gui.py``. :: gui_default_settings['gui_foreground_color'] = '#ffffff' #white gui_default_settings['gui_background_color'] = '#000000' #black To change the color scheme of graphs it is necessary to change the default behaviour of Matplotlib in a similar way by using a file ``~/.matplotlib/matplotlibrc``. :: patch.edgecolor : white text.color : white axes.facecolor : black axes.edgecolor : white axes.labelcolor : white axes.color_cycle : b, g, r, c, m, y, w xtick.color : white ytick.color : white grid.color : white figure.facecolor : 0.1 figure.edgecolor : black Finally, the color scheme of the windows themselves (i.e. menus, buttons and text etc.) can be changed by choosing a different desktop theme. In Ubuntu it is possible to get white on a dark background by selecting the theme HighContrastInverse under Appearances in the system settings dialog. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/calculate.rst000066400000000000000000000013601316323560300245570ustar00rootroot00000000000000========= Calculate ========= (currently disabled) Set calculator -------------- Allows :mod:`ase.gui` to choose a calculator for internal computations (see below). Different density functional codes and force fields, as well as the EMT calculator are available. For the FHI-aims and VASP calculators, it is also possible to export an entire set of input files. Energy and forces ----------------- Invokes the currently set calculator and provides energies and optional forces for all atoms. Energy minimization ------------------- Runs an ASE relaxation using the currently selected calculator with a choice of relaxation algorithm and convergence criteria. Great for quickly (pre-)relaxing a molecule before placing it into a bigger system. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/edit.rst000066400000000000000000000003101316323560300235410ustar00rootroot00000000000000==== Edit ==== Add atoms --------- Allows to add single atoms to an existing atoms object. Modify ------ Menu to allow modification of the atomic symbol, an attached tag, or its magnetic moment. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/gui.rst000066400000000000000000000007561316323560300234160ustar00rootroot00000000000000.. module:: ase.gui :synopsis: Simple graphical user-interface for ASE. .. index:: gui, ag, ase-gui .. _ase-gui: ========= ASE's GUI ========= The graphical user-interface allows users to visualize, manipulate, and render molecular systems and atoms objects. It also allows to setup and run a number of calculations and can be used to transfer between different file formats. .. image:: ag.png :height: 200 pt .. toctree:: basics edit view tools setup calculate ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/setup.rst000066400000000000000000000005121316323560300237600ustar00rootroot00000000000000===== Setup ===== The setup menus allow for the intuitive creation of numerous standard surfaces, nanoparticles, graphene and graphene nanoribbons, as well as nanotubes. Along with creating the geometry within the GUI, a button provides the necessary python code allowing one to recreate the exact same geometry in ASE scripts. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/tools.rst000066400000000000000000000054441316323560300237710ustar00rootroot00000000000000===== Tools ===== Graphs ------ Allows to graph different quantities for a given trajectory. A 'save' button also gives the opportunity to save the data to file. This example plots the maximal force for each image i and could help in investigating the convergence properties for relaxations: :: i, e-min(E), fmax These are the symbols that can be used: ================ ================================================== Symbol Interpretation ================ ================================================== e total energy epot potential energy ekin kinetic energy fmax maximum force fave average force d(n1,n2) distance between two atoms R[n,0-2] position of atom number n i current image number E[i] energy of image number i F[n,0-2] force on atom number n M[n] magnetic moment of atom number n A[0-2,0-2] unit-cell basis vectors s path length a(n1,n2,n3) tangle between atoms n1, n2 and n3, centered on n2 dih(n1,n2,n3,n4) dihedral angle between n1, n2, n3, and n4 T temperature (requires velocity) ================ ================================================== Movie ----- Allows to play the current trajectory as a movie using a number of different settings. Default duration is 5 s. Constraints ----------- Allows to set (or remove) constraints based on the currently selected atoms. Render scene ------------ (Currently disabled) Graphical interface to the ASE povray interface, ideally it requires that povray is installed on your computer to function, but it also can be used just to export the complete set of povray files. The texture of each atom is adjustable: The default texture is applied to all atoms, but then additional textures can be defined based on selections (``Create new texture from current selection``). These can be obtained either from selecting atoms by hand or by defining a selection with a boolean expression, for example ``Z==6 and x>5 and y<0`` will select all carbons with coordinates x>5 and y<0. The available commands are listed in the ``Help on textures`` window. A movie-making mode (``render all N frames``) is also available. After rendering, the frames can be stitched together using the ``convert`` unix program e.g. :: localhost:doc hanke$ convert -delay 4.17 temp.*.png temp.gif For this particular application it might be a good idea to use a white background instead of the default transparent option. Move atoms ---------- Allows selected atoms to be moved using the arrow keys. The direction is always parallel to the plane of the screen. Two possible movements are available: Just pressing the arrow keys will move by 0.1 Angstrom, ``shift`` + arrow keys will move by 0.01 Angstrom. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/gui/view.rst000066400000000000000000000012321316323560300235720ustar00rootroot00000000000000==== View ==== Repeat ------ Menu to allow repetition of periodic unit cells. Use the 'Set unit cell' button to set the overall unit cell to the current one. Rotate ------ Menu to manually fine tune the viewing angle. Use 'Update' button to set the menu to the current angle. Colors ------ The colors menu allows numerous ways to change the color scheme and to encode additional information into the display colors. This includes automatic coloring by atomic numbers (default), tags, forces, velocity, charge or magnetic moment. Settings -------- Basic viewing settings. Also allows to constrain/unconstrain atoms and to mark selected atoms as invisible. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/000077500000000000000000000000001316323560300217135ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/172_defs.par000066400000000000000000000012641316323560300237340ustar00rootroot00000000000000# the blocks are separated by empty lines # comments are allowed # # one body - LJ-parameters and charge CT 0.0028619844 3.50 0.000 C 0.0028619844 3.50 0.000 O 0.0073717780 3.12 -0.683 HC 0.0013009018 2.50 0.000 H1 0 0 0 # bonds C -CT 317.0 1.522 JCC,7,(1986),230; AA C -O 570.0 1.229 JCC,7,(1986),230; AA,CYT,GUA,THY,URA CT-HC 340.0 1.090 changed from 331 bsd on NMA nmodes; AA, SUGARS C -H1 340.0 1.090 # angles CT-C -O 80.0 120.40 HC-CT-HC 35.0 109.50 CT-C -H1 70.0 117.00 # dihedrals O -C -CT-HC 0.00000 6.02496E-01 -3 # cutoffs C -CT 2.0 C -O 1.8 CT-HC 1.4 C -H1 1.4 C3-O1 1.8 # extra stuff, should not bother ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/172_ext.xyz000066400000000000000000000012111316323560300236530ustar00rootroot000000000000007 Lattice="6.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 6.0" Properties=species:S:1:pos:R:3:molid:I:1:type:S:1 pbc="T T T" O 1.613900000000000 -0.762100000000000 -0.000000000000000 1 O C -0.327900000000000 0.522700000000000 0.000000000000000 1 CT C 0.392400000000000 -0.722900000000000 -0.000000000000000 1 C H -0.960000000000000 0.580900000000000 0.887500000000000 1 HC H -0.960000000000000 0.580900000000000 -0.887500000000000 1 HC H 0.346400000000000 1.382000000000000 0.000000000000000 1 HC H -0.104900000000000 -1.581400000000000 -0.000000000000000 1 H1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/io.rst000066400000000000000000000073631316323560300230650ustar00rootroot00000000000000.. module:: ase.io :synopsis: File input-output module ===================== File input and output ===================== .. seealso:: * :mod:`ase.io.trajectory` .. toctree:: :hidden: trajectory ulm opls The :mod:`ase.io` module has three basic functions: :func:`read`, :func:`iread` and :func:`write`. The methods are described here: .. autofunction:: read .. autofunction:: iread .. autofunction:: write These are the file-formats that are recognized (formats with a ``+`` support multiple configurations): .. csv-table:: :file: io.csv :header-rows: 1 .. note:: Even though that ASE does a good job reading the above listed formats, it may not read some unusual features or strangely formatted files. For the CIF format, STAR extensions as save frames, global blocks, nested loops and multi-data values are not supported. Furthermore, ASE currently assumes the ``loop_`` identifier, and the following loop variable names to be on separate lines. .. note:: ASE read and write functions are automatically parallelized if a suitable MPI library is found. This requires to call read and write with same input on all cores. For more information, see :mod:`ase.parallel`. .. note:: ASE can read and write directly to compressed files. Simply add ``.gz``, ``.bz2`` or ``.xz`` to your filename (``.xz`` requires the ``backports.lzma`` module on Python 2). The :func:`read` function is only designed to retrieve the atomic configuration from a file, but for the CUBE format you can import the function: .. function:: read_cube_data which will return a ``(data, atoms)`` tuple:: from ase.io.cube import read_cube_data data, atoms = read_cube_data('abc.cube') Examples ======== >>> from ase import Atoms >>> from ase.build import fcc111, add_adsorbate >>> from ase.io import read, write >>> adsorbate = Atoms('CO') >>> adsorbate[1].z = 1.1 >>> a = 3.61 >>> slab = fcc111('Cu', (2, 2, 3), a=a, vacuum=7.0) >>> add_adsorbate(slab, adsorbate, 1.8, 'ontop') Write PNG image >>> write('slab.png', slab * (3, 3, 1), rotation='10z,-80x') .. image:: io1.png Write POVRAY file >>> write('slab.pov', slab * (3, 3, 1), rotation='10z,-80x') This will write both a ``slab.pov`` and a ``slab.ini`` file. Convert to PNG with the command ``povray slab.ini`` or use the ``run_povray=True`` option: .. image:: io2.png Here is an example using ``bbox`` >>> d = a / 2**0.5 >>> write('slab.pov', slab * (2, 2, 1), ... bbox=(d, 0, 3 * d, d * 3**0.5)) .. image:: io3.png Note that in general the XYZ-format does not contain information about the unic cell, however, ASE uses the extended XYZ-format which stores the unitcell: >>> from ase.io import read, write >>> write('slab.xyz', slab) >>> a = read('slab.xyz') >>> cell = a.get_cell() >>> cell.round(3) array([[ 5.105, 0. , 0. ], [ 2.553, 4.421, 0. ], [ 0. , 0. , 18.168]]) >>> a.get_pbc() array([ True, True, False], dtype=bool) Use ASE's native format for writing all information: >>> write('slab.traj', slab) >>> b = read('slab.traj') >>> b.cell.round(3) array([[ 5.105, 0. , 0. ], [ 2.553, 4.421, 0. ], [ 0. , 0. , 18.168]]) >>> b.pbc array([ True, True, False], dtype=bool) A script showing all of the povray parameters, and generating the image below, can be found here: :download:`save_pov.py` .. image:: NaCl_C6H6.png An other example showing how to change colors and textures in pov can be found here: :download:`../../tutorials/saving_graphics.py`. Adding a new file-format to ASE =============================== Try to model the read/write functions after the *xyz* format as implemented in :git:`ase/io/xyz.py` and also read, understand and update :git:`ase/io/formats.py`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/io_csv.py000066400000000000000000000007761316323560300235610ustar00rootroot00000000000000# creates: io.csv from __future__ import print_function from ase.io.formats import all_formats, get_ioformat with open('io.csv', 'w') as fd: print('format, description, capabilities', file=fd) for format in sorted(all_formats): io = get_ioformat(format) c = '' if io.read: c = 'R' if io.write: c += 'W' if not io.single: c += '+' print('{0}, {1}, {2}'.format(format, all_formats[format][0], c), file=fd) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/iopng.py000066400000000000000000000013431316323560300234020ustar00rootroot00000000000000# creates: io1.png io2.png io3.png from ase import Atoms from ase.build import fcc111, add_adsorbate from ase.io import write, read adsorbate = Atoms('CO') adsorbate[1].z = 1.1 a = 3.61 slab = fcc111('Cu', (2, 2, 3), a=a, vacuum=7.0) add_adsorbate(slab, adsorbate, 1.8, 'ontop') write('io1.png', slab * (3, 3, 1), rotation='10z,-80x') write('io2.pov', slab * (3, 3, 1), rotation='10z,-80x', transparent=False, display=False, run_povray=True) d = a / 2**0.5 write('io3.pov', slab * (2, 2, 1), bbox=(d, 0, 3 * d, d * 3**0.5), transparent=False, display=False, run_povray=True) write('slab.xyz', slab) a = read('slab.xyz') a.get_cell() a.get_pbc() write('slab.traj', slab) b = read('slab.traj') b.get_cell() b.get_pbc() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/opls.py000066400000000000000000000001561316323560300232440ustar00rootroot00000000000000# creates lmp_atoms lmp_opls lmp_in exec(compile(open('write_lammps.py').read(), 'write_lammps.py', 'exec')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/opls.rst000066400000000000000000000017351316323560300234300ustar00rootroot00000000000000========================================== Setting up an OPLS force field calculation ========================================== .. module:: ase.io.opls :synopsis: OPLS force field In order to facilitate the definition of structures for the use of OPLS force fields, there are some helper classes. Modified xyz ============ Suppose, we define the ethanal molecule as extended xyz file (``172_ext.xyz``): .. literalinclude:: 172_ext.xyz Then we can read and view the structure using: .. literalinclude:: view_172_mod.py Defining the force field ======================== The definitions of the force field can be stored in an Amber like style (``172_defs.par``): .. literalinclude:: 172_defs.par We can write LAMMPS input using the information above: .. literalinclude:: write_lammps.py which writes the LAMMPS input files ``lmp_atoms`` defining atoms, bonds, etc., and ``lmp_opls`` defining the corresponding OPLS force field. A rudimentary ``lmp_in`` is also written. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/save_pov.py000066400000000000000000000045551316323560300241200ustar00rootroot00000000000000# creates: NaCl_C6H6.png import numpy as np from ase import Atoms from ase.io import write from ase.build import molecule a = 5.64 # Lattice constant for NaCl cell = [a / np.sqrt(2), a / np.sqrt(2), a] atoms = Atoms(symbols='Na2Cl2', pbc=True, cell=cell, scaled_positions=[(.0, .0, .0), (.5, .5, .5), (.5, .5, .0), (.0, .0, .5)]) * (3, 4, 2) + molecule('C6H6') # Move molecule to 3.5Ang from surface, and translate one unit cell in xy atoms.positions[-12:, 2] += atoms.positions[:-12, 2].max() + 3.5 atoms.positions[-12:, :2] += cell[:2] # Mark a single unit cell atoms.cell = cell # View used to start ag, and find desired viewing angle #view(atoms) rot = '35x,63y,36z' # found using ag: 'view -> rotate' # Common kwargs for eps, png, pov kwargs = { 'rotation' : rot, # text string with rotation (default='' ) 'radii' : .85, # float, or a list with one float per atom 'colors' : None,# List: one (r, g, b) tuple per atom 'show_unit_cell': 2, # 0, 1, or 2 to not show, show, and show all of cell } # Extra kwargs only available for povray (All units in angstrom) kwargs.update({ 'run_povray' : True, # Run povray or just write .pov + .ini files 'display' : False,# Display while rendering 'pause' : True, # Pause when done rendering (only if display) 'transparent' : False,# Transparent background 'canvas_width' : None, # Width of canvas in pixels 'canvas_height': None, # Height of canvas in pixels 'camera_dist' : 50., # Distance from camera to front atom 'image_plane' : None, # Distance from front atom to image plane 'camera_type' : 'perspective', # perspective, ultra_wide_angle 'point_lights' : [], # [[loc1, color1], [loc2, color2],...] 'area_light' : [(2., 3., 40.), # location 'White', # color .7, .7, 3, 3], # width, height, Nlamps_x, Nlamps_y 'background' : 'White', # color 'textures' : None, # Length of atoms list of texture names 'celllinewidth': 0.1, # Radius of the cylinders representing the cell }) # Write the .pov (and .ini) file. If run_povray=False, you must run command # `povray filename.ini` to convert .pov file to .png write('NaCl_C6H6.pov', atoms, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/trajectory.rst000066400000000000000000000117501316323560300246370ustar00rootroot00000000000000.. module:: ase.io.trajectory :synopsis: Trajectory input-output module ================ Trajectory files ================ .. contents:: The :mod:`ase.io.trajectory` module defines Trajectory objects, that is objects storing the temporal evolution of a simulation or the path taken during an optimization. A Trajectory file contains one or more :class:`~ase.Atoms` objects, usually to be interpreted as a time series, although that is not a requirement. The main Trajectory object writes in a file format, which is compatible across Python version. The :mod:`ase.io.trajectory` additionally defines two specialized kinds of Trajectory files, the PickleTrajectory and the BundleTrajectory. PickleTrajectory is the old (pre 2015) Trajectory format, its use is no longer recommended as compatibility between Python versions (and to a lesser degree between ASE vesions) cannot be guaranteed. You *must* :ref:`convert your old PickleTrajectory files ` as soon as possible. BundleTrajectory is only intended for large molecular dynamics simulations (large meaning millions of atoms). Typically, trajectories are used to store different configurations of the same system (i.e. the same atoms). If you need to store configurations of different systems, the :mod:`ASE Database module ` may be more appropriate. Trajectory ========== The Trajectory function returns a Trajectory reading or writing object, depending on the mode. .. autofunction:: ase.io.Trajectory The function returns a TrajectoryReader or a TrajectoryWriter object. Reading a trajectory file is done by indexing the TrajectoryReader object, i.e. traj[0] reads the first configuration, traj[-1] reads the last, etc. Writing a trajectory file is done by calling the ``write`` method. If no atoms object was given when creating the object, it must be given as an argument to the ``write`` method. Examples -------- Reading a configuration:: from ase.io.trajectory import Trajectory traj = Trajectory('example.traj') atoms = traj[-1] Reading all configurations:: traj = Trajectory('example.traj') for atoms in traj: # Analyze atoms Writing every 100th time step in a molecular dynamics simulation:: # dyn is the dynamics (e.g. VelocityVerlet, Langevin or similar) traj = Trajectory('example.traj', 'w', atoms) dyn.attach(traj.write, interval=100) dyn.run(10000) traj.close() .. _new trajectory: The TrajectoryReader and TrajectoryWriter objects ------------------------------------------------- Usually, you only need the interface given above, but the reader and writer have a few additional methods, that can be useful. .. autoclass:: ase.io.trajectory.TrajectoryReader :members: Note that there is apparently no methods for reading the trajectory. Reading is instead done by indexing the trajectory, or by iterating over the trajectory: ``traj[0]`` and ``traj[-1]`` return the first and last :class:`~ase.Atoms` object in the trajectory. .. autoclass:: ase.io.trajectory.TrajectoryWriter :members: .. _old trajectory: PickleTrajectory ================ The *obsolete* PickleTrajectory uses the same object for reading and writing. **WARNING 1:** If your Atoms objects contains constraints, the constraint object is pickled and stored in the file. Unfortunately, this means that if the object definition in ASE changes, you cannot read the trajectory file. In the new Trajectory format the contraint is stored in an implementation-independent format. **WARNING 2:** It is possible to write a malicious pickle file (and thus a malicious PickleTrajectory) that executes arbitrary code when reading the file. The new Trajectory format cannot contain code. For the reasons above, version 3.10 of ASE will not be able to read and write PickleTrajectory files, and you need to :ref:`convert existing files ` to the new format. .. _convert: Converting old PickleTrajectory files to new Trajectory files ------------------------------------------------------------- Please convert your old PickleTrajectory files before it is too late:: $ python -m ase.io.trajectory file1.traj [file2.traj ...] this will convert one or more files. The original files are kept with extension ``.traj.old`` You can identify old trajectory files like this:: $ python -m ase.io.formats hmmm.traj hmmm.traj: Old ASE pickle trajectory (trj+) $ python -m ase.io.trajectory hmmm.traj # convert $ python -m ase.io.formats hmmm.traj hmmm.traj.old hmmm.traj: ASE trajectory (traj+) hmmm.traj.old: Old ASE pickle trajectory (trj+) BundleTrajectory ================ The BundleTrajectory has the interface .. autoclass:: ase.io.bundletrajectory.BundleTrajectory :members: See also ======== * The function :func:`ase.io.write` can write a single :class:`~ase.Atoms` object to a Trajectory file. * The function :func:`ase.io.read` can read an :class:`~ase.Atoms` object from a Trajectory file, per default it reads the last one. * The database modue :mod:`ase.db`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/ulm.rst000066400000000000000000000002651316323560300232450ustar00rootroot00000000000000ULM files ========= .. automodule:: ase.io.ulm :members: open .. autoclass:: Writer :members: .. autoclass:: Reader :members: .. autoexception:: InvalidULMFileError ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/view_172_mod.py000066400000000000000000000004501316323560300244660ustar00rootroot00000000000000from ase.visualize import view from ase.io.opls import OPLSStructure s = OPLSStructure('172_mod.xyz') # 172_mod.xyz if the file name for the structure above view(s) # view with real elements elements = { 'CT' : 'Si', 'HC' : 'H', 'H1' : 'He' } view(s.colored(elements)) # view with fake elements ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/io/write_lammps.py000066400000000000000000000002211316323560300247630ustar00rootroot00000000000000from ase.io.opls import OPLSff, OPLSStructure s = OPLSStructure('172_ext.xyz') opls = OPLSff('172_defs.par') opls.write_lammps(s, prefix='lmp') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/lattice.rst000066400000000000000000000225631316323560300234730ustar00rootroot00000000000000.. _general-crystal-section: General crystal structures and surfaces ======================================= .. module:: ase.lattice Modules for creating crystal structures are found in the module :mod:`ase.lattice`. Most Bravais lattices are implemented, as are a few important lattices with a basis. The modules can create lattices with any orientation (see below). These modules can be used to create surfaces with any crystal structure and any orientation by later adding a vacuum layer with :func:`ase.build.add_vacuum`. Example ------- To set up a slab of FCC copper with the [1,-1,0] direction along the x-axis, [1,1,-2] along the y-axis and [1,1,1] along the z-axis, use: >>> from ase.lattice.cubic import FaceCenteredCubic >>> atoms = FaceCenteredCubic(directions=[[1,-1,0], [1,1,-2], [1,1,1]], ... size=(2,2,3), symbol='Cu', pbc=(1,1,0)) The minimal unit cell is repeated 2*2*3 times. The lattice constant is taken from the database of lattice constants in :mod:`ase.data` module. There are periodic boundary conditions along the *x* and *y* axis, but free boundary conditions along the *z* axis. Since the three directions are perpendicular, a (111) surface is created. To set up a slab of BCC copper with [100] along the first axis, [010] along the second axis, and [111] along the third axis use: >>> from ase.lattice.cubic import BodyCenteredCubic >>> atoms = BodyCenteredCubic(directions=[[1,0,0], [0,1,0], [1,1,1]], ... size=(2,2,3), symbol='Cu', pbc=(1,1,0), ... latticeconstant=4.0) Since BCC is not the natural crystal structure for Cu, a lattice constant has to be specified. Note that since the repeat directions of the unit cell are not orthogonal, the Miller indices of the surfaces will *not* be the same as the Miller indices of the axes. The indices of the surfaces in this example will be (1,0,-1), (0,1,-1) and (0,0,1). Available crystal lattices -------------------------- The following modules are currently available (the * mark lattices with a basis): * ``lattice.cubic`` - ``SimpleCubic`` - ``FaceCenteredCubic`` - ``BodyCenteredCubic`` - ``Diamond`` (*) * ``lattice.tetragonal`` - ``SimpleTetragonal`` - ``CenteredTetragonal`` * ``lattice.orthorhombic`` - ``SimpleOrthorhombic`` - ``BaseCenteredOrthorhombic`` - ``FaceCenteredOrthorhombic`` - ``BodyCenteredOrthorhombic`` * ``lattice.monoclinic`` - ``SimpleMonoclinic`` - ``BaseCenteredMonoclinic`` * ``lattice.triclinic`` - ``Triclinic`` * ``lattice.hexagonal`` - ``Hexagonal`` - ``HexagonalClosedPacked`` (*) - ``Graphite`` (*) * The rhombohedral (or trigonal) lattices are not implemented. They will be implemented when the need arises (and if somebody can tell us the precise definition of the 4-number Miller indices - we only know that they are "almost the same as in hexagonal lattices"). * ``lattice.compounds`` Lattices with more than one element. These are mainly intended as examples allowing you to define new such lattices. Currently, the following are defined - ``B1`` = ``NaCl`` = ``Rocksalt`` - ``B2`` = ``CsCl`` - ``B3`` = ``ZnS`` = ``Zincblende`` - ``L1_2`` = ``AuCu3`` - ``L1_0`` = ``AuCu`` Usage ----- The lattice objects are called with a number of arguments specifying e.g. the size and orientation of the lattice. All arguments should be given as named arguments. At a minimum the ``symbol`` argument must be specified. ``symbol`` The element, specified by the atomic number (an integer) or by the atomic symbol (i.e. 'Au'). For compounds, a tuple or list of elements should be given. This argument is mandatory. ``directions`` and/or ``miller``: Specifies the orientation of the lattice as the Miller indices of the three basis vectors of the supercell (``directions=...``) and/or as the Miller indices of the three surfaces (``miller=...``). Normally, one will specify either three directions or three surfaces, but any combination that is both complete and consistent is allowed, e.g. two directions and two surface miller indices (this example is slightly redundant, and consistency will be checked). If only some directions/miller indices are specified, the remaining should be given as ``None``. If you intend to generate a specific surface, and prefer to specify the miller indices of the unit cell basis (``directions=...``), it is a good idea to give the desired Miller index of the surface as well to allow the module to test for consistency. Example: >>> atoms = BodyCenteredCubic(directions=[[1,-1,0],[1,1,-1],[0,0,1]], ... miller=[None, None, [1,1,2]], ...) If neither ``directions`` nor ``miller`` are specified, the default is ``directions=[[1,0,0], [0,1,0], [0,0,1]]``. ``size``: A tuple of three numbers, defining how many times the fundamental repeat unit is repeated. Default: (1,1,1). Be aware that if high-index directions are specified, the fundamental repeat unit may be large. ``latticeconstant``: The lattice constant. If no lattice constant is specified, one is extracted from ASE.ChemicalElements provided that the element actually has the crystal structure you are creating. Depending on the crystal structure, there will be more than one lattice constant, and they are specified by giving a dictionary or a tuple (a scalar for cubic lattices). Distances are given in Angstrom, angles in degrees. ============= =================== ======================================== Structure Lattice constants Dictionary-keys ============= =================== ======================================== Cubic a 'a' Tetragonal (a, c) 'a', 'c' or 'c/a' Orthorhombic (a, b, c) 'a', 'b' or 'b/a', 'c' or 'c/a' Triclinic (a, b, c, `\alpha`, 'a', 'b' or 'b/a', 'c' or `\beta`, `\gamma`) 'c/a', 'alpha', 'beta', 'gamma' Monoclinic (a, b, c, alpha) 'a', 'b' or 'b/a', 'c' or 'c/a', 'alpha' Hexagonal (a, c) 'a', 'c' or 'c/a' ============= =================== ======================================== Example: >>> atoms = Monoclinic( ... , latticeconstant={'a': 3.06, ... 'b/a': 0.95, 'c/a': 1.07, 'alpha': 74}) ``debug``: Controls the amount of information printed. 0: no info is printed. 1 (the default): The indices of surfaces and unit cell vectors are printed. 2: Debugging info is printed. Defining new lattices --------------------- Often, there is a need for new lattices - either because an element crystallizes in a lattice that is not a simple Bravais lattice, or because you need to work with a compound or an ordered alloy. All the lattice generating objects are instances of a class, you generate new lattices by deriving a new class and instantiating it. This is best explained by an example. The diamond lattice is two interlacing FCC lattices, so it can be seen as a face-centered cubic lattice with a two-atom basis. The Diamond object could be defined like this:: from ase.lattice.cubic import FaceCenteredCubicFactory class DiamondFactory(FaceCenteredCubicFactory): """A factory for creating diamond lattices.""" xtal_name = 'diamond' bravais_basis = [[0, 0, 0], [0.25, 0.25, 0.25]] Diamond = DiamondFactory() Lattices with more than one element ``````````````````````````````````` Lattices with more than one element is made in the same way. A new attribute, ``element_basis``, is added, giving which atoms in the basis are which element. If there are four atoms in the basis, and element_basis is (0,0,1,0), then the first, second and fourth atoms are one element, and the third is the other element. As an example, the AuCu3 structure (also known as `\mathrm{L}1_2`) is defined as:: # The L1_2 structure is "based on FCC", but is really simple cubic # with a basis. class AuCu3Factory(SimpleCubicFactory): "A factory for creating AuCu3 (L1_2) lattices." bravais_basis = [[0, 0, 0], [0, 0.5, 0.5], [0.5, 0, 0.5], [0.5, 0.5, 0]] element_basis = (0, 1, 1, 1) AuCu3 = L1_2 = AuCu3Factory() Sometimes, more than one crystal structure can be used to define the crystal structure, for example the Rocksalt structure is two interpenetrating FCC lattices, one with one kind of atoms and one with another. It would be tempting to define it as :: class NaClFactory(FaceCenteredCubicFactory): "A factory for creating NaCl (B1, Rocksalt) lattices." bravais_basis = [[0, 0, 0], [0.5, 0.5, 0.5]] element_basis = (0, 1) B1 = NaCl = Rocksalt = NaClFactory() but if this is used to define a finite system, one surface would be covered with one type of atoms, and the opposite surface with the other. To maintain the stochiometry of the surfaces, it is better to use the simple cubic lattice with a larger basis:: # To prevent a layer of element one on one side, and a layer of # element two on the other side, NaCl is based on SimpleCubic instead # of on FaceCenteredCubic class NaClFactory(SimpleCubicFactory): "A factory for creating NaCl (B1, Rocksalt) lattices." bravais_basis = [[0, 0, 0], [0, 0, 0.5], [0, 0.5, 0], [0, 0.5, 0.5], [0.5, 0, 0], [0.5, 0, 0.5], [0.5, 0.5, 0], [0.5, 0.5, 0.5]] element_basis = (0, 1, 1, 0, 1, 0, 0, 1) B1 = NaCl = Rocksalt = NaClFactory() More examples can be found in the file :git:`ase/lattice/compounds.py`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/md.rst000066400000000000000000000352501316323560300224430ustar00rootroot00000000000000================== Molecular dynamics ================== .. module:: ase.md :synopsis: Molecular Dynamics Typical computer simulations involve moving the atoms around, either to optimize a structure (energy minimization) or to do molecular dynamics. This chapter discusses molecular dynamics, energy minimization algorithms will be discussed in the :mod:`ase.optimize` section. A molecular dynamics object will operate on the atoms by moving them according to their forces - it integrates Newton's second law numerically. A typical molecular dynamics simulation will use the `Velocity Verlet dynamics`_. You create the :class:`ase.md.verlet.VelocityVerlet` object, giving it the atoms and a time step, and then you perform dynamics by calling its :meth:`~verlet.VelocityVerlet.run` method:: dyn = VelocityVerlet(atoms, dt=5.0 * units.fs, trajectory='md.traj', logfile='md.log') dyn.run(1000) # take 1000 steps A number of different algorithms can be used to perform molecular dynamics, with slightly different results. Choosing the time step ====================== All the dynamics objects need a time step. Choosing it too small will waste computer time, choosing it too large will make the dynamics unstable, typically the energy increases dramatically (the system "blows up"). If the time step is only a little to large, the lack of energy conservation is most obvious in `Velocity Verlet dynamics`_, where energy should otherwise be conserved. Experience has shown that 5 femtoseconds is a good choice for most metallic systems. Systems with light atoms (e.g. hydrogen) and/or with strong bonds (carbon) will need a smaller time step. All the dynamics objects documented here are sufficiently related to have the same optimal time step. File output =========== The time evolution of the system can be saved in a trajectory file, by creating a trajectory object, and attaching it to the dynamics object. This is documented in the module :mod:`ase.io.trajectory`. You can attach the trajectory explicitly to the dynamics object, and you may want to use the optional ``interval`` argument, so every time step is not written to the file. Alternatively, you can just use the ``trajectory`` keyword when instantiating the dynamics object as in the example above. In this case, a ``loginterval`` keyword may also be supplied to specify the frequency of writing to the trajectory. The loginterval keyword will apply to both the trajectory and the logfile. Logging ======= A logging mechanism is provided, printing time; total, potential and kinetic energy; and temperature (calculated from the kinetic energy). It is enabled by giving the ``logfile`` argument when the dynamics object is created, ``logfile`` may be an open file, a filename or the string '-' meaning standard output. Per default, a line is printed for each timestep, specifying the ``loginterval`` argument will chance this to a more reasonable frequency. The logging can be customized by explicitly attaching a :class:`MDLogger` object to the dynamics:: from ase.md import MDLogger dyn = VelocityVerlet(atoms, dt=2*ase.units.fs) dyn.attach(MDLogger(dyn, atoms, 'md.log', header=False, stress=False, peratom=True, mode="a"), interval=1000) This example will skip the header line and write energies per atom instead of total energies. The parameters are ``header``: Print a header line defining the columns. ``stress``: Print the six components of the stress tensor. ``peratom``: Print energy per atom instead of total energy. ``mode``: If 'a', append to existing file, if 'w' overwrite existing file. Despite appearances, attaching a logger like this does *not* create a cyclic reference to the dynamics. .. note:: If building your own logging class, be sure not to attach the dynamics object directly to the logging object. Instead, create a weak reference using the ``proxy`` method of the ``weakref`` package. See the *ase.md.MDLogger* source code for an example. (If this is not done, a cyclic reference may be created which can cause certain calculators, such as Jacapo, to not terminate correctly.) .. autoclass:: MDLogger Constant NVE simulations (the microcanonical ensemble) ====================================================== Newton's second law preserves the total energy of the system, and a straightforward integration of Newton's second law therefore leads to simulations preserving the total energy of the system (E), the number of atoms (N) and the volume of the system (V). The most appropriate algorithm for doing this is velocity Verlet dynamics, since it gives very good long-term stability of the total energy even with quite large time steps. Fancier algorithms such as Runge-Kutta may give very good short-term energy preservation, but at the price of a slow drift in energy over longer timescales, causing trouble for long simulations. In a typical NVE simulation, the temperature will remain approximately constant, but if significant structural changes occurs they may result in temperature changes. If external work is done on the system, the temperature is likely to rise significantly. Velocity Verlet dynamics ------------------------ .. module:: ase.md.verlet .. autoclass:: VelocityVerlet ``VelocityVerlet`` is the only dynamics implementing the NVE ensemble. It requires two arguments, the atoms and the time step. Choosing a too large time step will immediately be obvious, as the energy will increase with time, often very rapidly. Example: See the tutorial :ref:`md_tutorial`. Constant NVT simulations (the canonical ensemble) ================================================= Since Newton's second law conserves energy and not temperature, simulations at constant temperature will somehow involve coupling the system to a heat bath. This cannot help being somewhat artificial. Two different approaches are possible within ASE. In Langevin dynamics, each atom is coupled to a heat bath through a fluctuating force and a friction term. In Nosé-Hoover dynamics, a term representing the heat bath through a single degree of freedom is introduced into the Hamiltonian. Langevin dynamics ----------------- .. module:: ase.md.langevin .. class:: Langevin(atoms, timestep, temperature, friction) The Langevin class implements Langevin dynamics, where a (small) friction term and a fluctuating force are added to Newton's second law which is then integrated numerically. The temperature of the heat bath and magnitude of the friction is specified by the user, the amplitude of the fluctuating force is then calculated to give that temperature. This procedure has some physical justification: in a real metal the atoms are (weakly) coupled to the electron gas, and the electron gas therefore acts like a heat bath for the atoms. If heat is produced locally, the atoms locally get a temperature that is higher than the temperature of the electrons, heat is transferred to the electrons and then rapidly transported away by them. A Langevin equation is probably a reasonable model for this process. A disadvantage of using Langevin dynamics is that if significant heat is produced in the simulation, then the temperature will stabilize at a value higher than the specified temperature of the heat bath, since a temperature difference between the system and the heat bath is necessary to get a finite heat flow. Another disadvantage is that the fluctuating force is stochastic in nature, so repeating the simulation will not give exactly the same trajectory. When the ``Langevin`` object is created, you must specify a time step, a temperature (in energy units) and a friction. Typical values for the friction are 0.01-0.02 atomic units. :: # Room temperature simulation dyn = Langevin(atoms, 5 * units.fs, units.kB * 300, 0.002) Both the friction and the temperature can be replaced with arrays giving per-atom values. This is mostly useful for the friction, where one can choose a rather high friction near the boundaries, and set it to zero in the part of the system where the phenomenon being studied is located. Nosé-Hoover dynamics -------------------- In Nosé-Hoover dynamics, an extra term is added to the Hamiltonian representing the coupling to the heat bath. From a pragmatic point of view one can regard Nosé-Hoover dynamics as adding a friction term to Newton's second law, but dynamically changing the friction coefficient to move the system towards the desired temperature. Typically the "friction coefficient" will fluctuate around zero. Nosé-Hoover dynamics is not implemented as a separate class, but is a special case of NPT dynamics. Berendsen NVT dynamics ----------------------- .. module:: ase.md.nvtberendsen .. class:: NVTBerendsen(atoms, timestep, temperature, taut, fixcm) In Berendsen NVT simulations the velocities are scaled to achieve the desired temperature. The speed of the scaling is determined by the parameter taut. This method does not result proper NVT sampling but it usually is sufficiently good in practise (with large taut). For discussion see the gromacs manual at www.gromacs.org. *atoms*: The list of atoms. *timestep*: The time step. *temperature*: The desired temperature, in Kelvin. *taut*: Time constant for Berendsen temperature coupling. *fixcm*: If True, the position and momentum of the center of mass is kept unperturbed. Default: True. :: # Room temperature simulation (300K, 0.1 fs time step) dyn = NVTBerendsen(atoms, 0.1 * units.fs, 300, taut=0.5*1000*units.fs) Constant NPT simulations (the isothermal-isobaric ensemble) =========================================================== .. module:: ase.md.npt .. class:: NPT(atoms, timestep, temperature, externalstress, ttime, pfactor, mask=None) Dynamics with constant pressure (or optionally, constant stress) and constant temperature (NPT or N,stress,T ensemble). It uses the combination of Nosé-Hoover and Parrinello-Rahman dynamics proposed by Melchionna et al. [1] and later modified by Melchionna [2]. The differential equations are integrated using a centered difference method [3]. Details of the implementation are available in the document XXX NPTdynamics.tex, distributed with the module. The dynamics object is called with the following parameters: *atoms*: The atoms object. *timestep*: The timestep in units matching eV, Ã…, u. Use the *units.fs* constant. *temperature*: The desired temperature in eV. *externalstress*: The external stress in eV/Ã…^3. Either a symmetric 3x3 tensor, a 6-vector representing the same, or a scalar representing the pressure. Note that the stress is positive in tension whereas the pressure is positive in compression: giving a scalar p is equivalent to giving the tensor (-p. -p, -p, 0, 0, 0). *ttime*: Characteristic timescale of the thermostat. Set to None to disable the thermostat. *pfactor*: A constant in the barostat differential equation. If a characteristic barostat timescale of ptime is desired, set pfactor to ptime^2 * B (where B is the Bulk Modulus). Set to None to disable the barostat. Typical metallic bulk moduli are of the order of 100 GPa or 0.6 eV/Ã…^3. *mask=None*: Optional argument. A tuple of three integers (0 or 1), indicating if the system can change size along the three Cartesian axes. Set to (1,1,1) or None to allow a fully flexible computational box. Set to (1,1,0) to disallow elongations along the z-axis etc. Useful parameter values: * The same *timestep* can be used as in Verlet dynamics, i.e. 5 fs is fine for bulk copper. * The *ttime* and *pfactor* are quite critical[4], too small values may cause instabilites and/or wrong fluctuations in T / p. Too large values cause an oscillation which is slow to die. Good values for the characteristic times seem to be 25 fs for *ttime*, and 75 fs for *ptime* (used to calculate pfactor), at least for bulk copper with 15000-200000 atoms. But this is not well tested, it is IMPORTANT to monitor the temperature and stress/pressure fluctuations. It has the following methods: .. method:: NPT.run(n): Perform n timesteps. .. method:: NPT.initialize(): Estimates the dynamic variables for time=-1 to start the algorithm. This is automatically called before the first timestep. .. method:: NPT.set_stress(): Set the external stress. Use with care. It is preferable to set the right value when creating the object. .. method:: NPT.set_mask(): Change the mask. Use with care, as you may "freeze" a fluctuation in the strain rate. .. method:: NPT.set_strain_rate(eps): Set the strain rate. ``eps`` must be an upper-triangular matrix. If you set a strain rate along a direction that is "masked out" (see ``set_mask``), the strain rate along that direction will be maintained constantly. .. method:: NPT.get_strain_rate(): Set the instantaneous strain rate (due to the fluctuations in the shape of the computational box). .. method:: NPT.get_gibbs_free_energy(): Gibbs free energy is supposed to be preserved by this dynamics. This is mainly intended as a diagnostic tool. References: [1] S. Melchionna, G. Ciccotti and B. L. Holian, Molecular Physics 78, p. 533 (1993). [2] S. Melchionna, Physical Review E 61, p. 6165 (2000). [3] B. L. Holian, A. J. De Groot, W. G. Hoover, and C. G. Hoover, Physical Review A 41, p. 4552 (1990). [4] F. D. Di Tolla and M. Ronchetti, Physical Review E 48, p. 1726 (1993). Berendsen NPT dynamics ----------------------- .. module:: ase.md.nptberendsen .. class:: NPTBerendsen(atoms, timestep, temperature, taut, pressure, taup, compressibility, fixcm) In Berendsen NPT simulations the velocities are scaled to achieve the desired temperature. The speed of the scaling is determined by the parameter taut. The atom positions and the simulation cell are scaled in order to achieve the desired pressure. This method does not result proper NPT sampling but it usually is sufficiently good in practise (with large taut and taup). For discussion see the gromacs manual at www.gromacs.org. or amber at ambermd.org *atoms*: The list of atoms. *timestep*: The time step. *temperature*: The desired temperature, in Kelvin. *taut*: Time constant for Berendsen temperature coupling. *pressure*: The desired pressure, in bar (1 bar = 1e5 Pa). *taup*: Time constant for Berendsen pressure coupling. *compressibility*: The compressibility of the material, water 4.57E-5 bar-1, in bar-1 *fixcm*: If True, the position and momentum of the center of mass is kept unperturbed. Default: True. :: # Room temperature simulation (300K, 0.1 fs time step, atmospheric pressure) dyn = NPTBerendsen(atoms, timestep=0.1*units.fs, temperature=300, taut=0.1*1000*units.fs, pressure = 1.01325, taup=1.0*1000*units.fs, compressibility=4.57e-5) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/neb.rst000066400000000000000000000150141316323560300226030ustar00rootroot00000000000000=================== Nudged elastic band =================== .. module:: ase.neb :synopsis: Nudged Elastic Band method. The Nudged Elastic Band method is a technique for finding transition paths (and corresponding energy barriers) between given initial and final states. The method involves constructing a "chain" of "replicas" or "images" of the system and relaxing them in a certain way. Relevant literature References: 1. H. Jonsson, G. Mills, and K. W. Jacobsen, in 'Classical and Quantum Dynamics in Condensed Phase Systems', edited by B. J. Berne, G. Cicotti, and D. F. Coker, World Scientific, 1998 [standard formulation] 2. 'Improved Tangent Estimate in the NEB method for Finding Minimum Energy Paths and Saddle Points', G. Henkelman and H. Jonsson, J. Chem. Phys. 113, 9978 (2000) [improved tangent estimates] 3. 'A Climbing-Image NEB Method for Finding Saddle Points and Minimum Energy Paths', G. Henkelman, B. P. Uberuaga and H. Jonsson, J. Chem. Phys. 113, 9901 (2000) 4. 'Improved initial guess for minimum energy path calculations.', S. Smidstrup, A. Pedersen, K. Stokbro and H. Jonsson, J. Chem. Phys. 140, 214106 (2014) The NEB class ============= This module defines one class: .. autoclass:: NEB Example of use, between initial and final state which have been previously saved in A.traj and B.traj:: from ase import io from ase.neb import NEB from ase.optimize import MDMin # Read initial and final states: initial = io.read('A.traj') final = io.read('B.traj') # Make a band consisting of 5 images: images = [initial] images += [initial.copy() for i in range(3)] images += [final] neb = NEB(images) # Interpolate linearly the potisions of the three middle images: neb.interpolate() # Set calculators: for image in images[1:4]: image.set_calculator(MyCalculator(...)) # Optimize: optimizer = MDMin(neb, trajectory='A2B.traj') optimizer.run(fmax=0.04) Be sure to use the copy method (or similar) to create new instances of atoms within the list of images fed to the NEB. Do *not* use something like [initial for i in range(3)], as it will only create references to the original atoms object. Notice the use of the :meth:`~NEB.interpolate` method to obtain an initial guess for the path from A to B. Interpolation ============= .. method:: NEB.interpolate() Interpolate path linearly from initial to final state. .. method:: NEB.interpolate('idpp') From a linear interpolation, create an improved path from initial to final state using the IDPP approach [4]. .. method:: NEB.idpp_interpolate() Generate an idpp pathway from a set of images. This differs from above in that an initial guess for the IDPP, other than linear interpolation can be provided. Only the internal images (not the endpoints) need have calculators attached. .. seealso:: :mod:`ase.optimize`: Information about energy minimization (optimization). Note that you cannot use the default optimizer, BFGSLineSearch, with NEBs. (This is the optimizer imported when you import QuasiNewton.) If you would like a quasi-newton optimizer, use BFGS instead. :mod:`ase.calculators`: How to use calculators. :ref:`tutorials`: * :ref:`diffusion tutorial` * :ref:`neb2` * :ref:`idpp_tutorial` .. note:: If there are `M` images and each image has `N` atoms, then the NEB object behaves like one big Atoms object with `MN` atoms, so its :meth:`~ase.Atoms.get_positions` method will return a `MN \times 3` array. Trajectories ============ The code:: from ase.optimize import BFGS opt = BFGS(neb, trajectory='A2B.traj') will write all images to one file. The Trajectory object knows about NEB calculations, so it will write `M` images with `N` atoms at every iteration and not one big configuration containing `MN` atoms. The result of the latest iteration can now be analysed with this command: :command:`ase gui A2B.traj@-5:`. For the example above, you can write the images to individual trajectory files like this:: for i in range(1, 4): opt.attach(io.Trajectory('A2B-%d.traj' % i, 'w', images[i])) The result of the latest iteration can be analysed like this: .. highlight:: bash :: $ ase gui A.traj A2B-?.traj B.traj -n -1 .. highlight:: python Restarting ========== Restart the calculation like this:: images = io.read('A2B.traj@-5:') Climbing image ============== The "climbing image" variation involves designating a specific image to behave differently to the rest of the chain: it feels no spring forces, and the component of the potential force parallel to the chain is reversed, such that it moves towards the saddle point. This depends on the adjacent images providing a reasonably good approximation of the correct tangent at the location of the climbing image; thus in general the climbing image is not turned on until some iterations have been run without it (generally 20% to 50% of the total number of iterations). To use the climbing image NEB method, instantiate the NEB object like this:: neb = NEB(images, climb=True) .. note:: Quasi-Newton methods, such as BFGS, are not well suited for climbing image NEB calculations. FIRE have been known to give good results, although convergence is slow. Parallelization over images =========================== Some calculators can parallelize over the images of a NEB calculation. The script will have to be run with an MPI-enabled Python interpreter like GPAW_'s gpaw-python_. All images exist on all processors, but only some of them have a calculator attached:: from ase.parallel import rank, size from ase.calculators.emt import EMT # Number of internal images: n = len(images) - 2 j = rank * n // size for i, image in enumerate(images[1:-1]): if i == j: image.set_calculator(EMT()) Create the NEB object with ``NEB(images, parallel=True)`` and let the master processes write the images:: if rank % (size // n) == 0: traj = io.Trajectory('neb%d.traj' % j, 'w', images[1 + j], master=True) optimizer.attach(traj) For a complete example using GPAW_, see here_. .. _GPAW: http://wiki.fysik.dtu.dk/gpaw .. _gpaw-python: https://wiki.fysik.dtu.dk/gpaw/documentation/manual.html#parallel-calculations .. _here: https://wiki.fysik.dtu.dk/gpaw/tutorials/neb/neb.html .. _nebtools: Analysis of output ================== A class exists to help in automating the analysis of NEB jobs. See the :ref:`Diffusion Tutorial ` for some examples of its use. .. autoclass:: NEBTools :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/neighborlist.rst000066400000000000000000000004651316323560300245340ustar00rootroot00000000000000.. module:: ase.neighborlist Building neighbor-lists ======================= The :class:`ase.calculators.emt.EMT` potential and the GPAW_ DFT calculator both make use of ASE's built-in neighbor-list class: .. autoclass:: ase.neighborlist.NeighborList :members: .. _GPAW: http://wiki.fysik.dtu.dk/gpaw ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/optimize.rst000066400000000000000000000507031316323560300237030ustar00rootroot00000000000000.. _structure_optimizations: ====================== Structure optimization ====================== .. module:: ase.optimize :synopsis: Structure Optimization The optimization algorithms can be roughly divided into local optimization algorithms which find a nearby local minimum and global optimization algorithms that try to find the global minimum (a much harder task). Local optimization ================== The local optimization algorithms available in ASE are: ``BFGS``, ``LBFGS``, ``BFGSLineSearch``, ``LBFGSLineSearch``, ``MDMin``, and ``FIRE``. .. seealso:: `Performance test `_ for all ASE local optimizers. ``MDMin`` and ``FIRE`` both use Newtonian dynamics with added friction, to converge to an energy minimum, whereas the others are of the quasi-Newton type, where the forces of consecutive steps are used to dynamically update a Hessian describing the curvature of the potential energy landscape. You can use the ``QuasiNewton`` synonym for ``BFGSLineSearch`` because this algorithm is in many cases the optimal of the quasi-Newton algorithms. All of the local optimizer classes have the following structure:: class Optimizer: def __init__(self, atoms, restart=None, logfile=None): def run(self, fmax=0.05, steps=100000000): def get_number_of_steps(): The convergence criterion is that the force on all individual atoms should be less than *fmax*: .. math:: \max_a |\vec{F_a}| < f_\text{max} BFGS ---- .. module:: ase.optimize.qn :synopsis: Quasi-Newton The ``BFGS`` object is one of the minimizers in the ASE package. The below script uses ``BFGS`` to optimize the structure of a water molecule, starting with the experimental geometry:: from ase import Atoms from ase.optimize import BFGS from ase.calculators.emt import EMT import numpy as np d = 0.9575 t = np.pi / 180 * 104.51 water = Atoms('H2O', positions=[(d, 0, 0), (d * np.cos(t), d * np.sin(t), 0), (0, 0, 0)], calculator=EMT()) dyn = BFGS(water) dyn.run(fmax=0.05) which produces the following output. The columns are the solver name, step number, clock time, potential energy (eV), and maximum force.:: BFGS: 0 19:45:25 2.769633 8.6091 BFGS: 1 19:45:25 2.154560 4.4644 BFGS: 2 19:45:25 1.906812 1.3097 BFGS: 3 19:45:25 1.880255 0.2056 BFGS: 4 19:45:25 1.879488 0.0205 When doing structure optimization, it is useful to write the trajectory to a file, so that the progress of the optimization run can be followed during or after the run:: dyn = BFGS(water, trajectory='H2O.traj') dyn.run(fmax=0.05) Use the command ``ase gui H2O.traj`` to see what is going on (more here: :mod:`ase.gui`). The trajectory file can also be accessed using the module :mod:`ase.io.trajectory`. The ``attach`` method takes an optional argument ``interval=n`` that can be used to tell the structure optimizer object to write the configuration to the trajectory file only every ``n`` steps. During a structure optimization, the BFGS and LBFGS optimizers use two quantities to decide where to move the atoms on each step: * the forces on each atom, as returned by the associated :class:`~ase.calculators.calculator.Calculator` object * the Hessian matrix, i.e. the matrix of second derivatives :math:`\frac{\partial^2 E}{\partial x_i \partial x_j}` of the total energy with respect to nuclear coordinates. If the atoms are close to the minimum, such that the potential energy surface is locally quadratic, the Hessian and forces accurately determine the required step to reach the optimal structure. The Hessian is very expensive to calculate *a priori*, so instead the algorithm estimates it by means of an initial guess which is adjusted along the way depending on the information obtained on each step of the structure optimization. It is frequently practical to restart or continue a structure optimization with a geometry obtained from a previous relaxation. Aside from the geometry, the Hessian of the previous run can and should be retained for the second run. Use the ``restart`` keyword to specify a file in which to save the Hessian:: dyn = BFGS(atoms=system, trajectory='qn.traj', restart='qn.pckl') This will create an optimizer which saves the Hessian to :file:`qn.pckl` (using the Python :mod:`pickle` module) on each step. If the file already exists, the Hessian will also be *initialized* from that file. The trajectory file can also be used to restart a structure optimization, since it contains the history of all forces and positions, and thus whichever information about the Hessian was assembled so far:: dyn = BFGS(atoms=system, trajectory='qn.traj') dyn.replay_trajectory('history.traj') This will read through each iteration stored in :file:`history.traj`, performing adjustments to the Hessian as appropriate. Note that these steps will not be written to :file:`qn.traj`. If restarting with more than one previous trajectory file, use :ref:`ase-gui` to concatenate them into a single trajectory file first:: $ ase gui part1.traj part2.traj -o history.traj The file :file:`history.traj` will then contain all necessary information. When switching between different types of optimizers, e.g. between ``BFGS`` and ``LBFGS``, the pickle-files specified by the ``restart`` keyword are not compatible, but the Hessian can still be retained by replaying the trajectory as above. LBFGS ----- .. module:: ase.optimize.lbfgs LBFGS is the limited memory version of the BFGS algorithm, where the inverse of Hessian matrix is updated instead of the Hessian itself. Two ways exist for determining the atomic step: Standard ``LBFGS`` and ``LBFGSLineSearch``. For the first one, both the directions and lengths of the atomic steps are determined by the approximated Hessian matrix. While for the latter one, the approximated Hessian matrix is only used to find out the directions of the line searches and atomic steps, the step lengths are determined by the forces. To start a structure optimization with LBFGS algorithm is similar to BFGS. A typical optimization should look like:: dyn = LBFGS(atoms=system, trajectory='lbfgs.traj', restart='lbfgs.pckl') where the trajectory and the restart save the trajectory of the optimization and the vectors needed to generate the Hessian Matrix. FIRE ---- .. module:: ase.optimize.fire Read about this algorithm here: | Erik Bitzek, Pekka Koskinen, Franz Gähler, Michael Moseler, and Peter Gumbsch | `Structural Relaxation Made Simple`__ | Physical Review Letters, Vol. **97**, 170201 (2006) __ http://dx.doi.org/10.1103/PhysRevLett.97.170201 MDMin ----- .. module:: ase.optimize.mdmin The MDmin algorithm is a modification of the usual velocity-Verlet molecular dynamics algorithm. Newtons second law is solved numerically, but after each time step the dot product between the forces and the momenta is checked. If it is zero, the system has just passed through a (local) minimum in the potential energy, the kinetic energy is large and about to decrease again. At this point, the momentum is set to zero. Unlike a "real" molecular dynamics, the masses of the atoms are not used, instead all masses are set to one. The MDmin algorithm exists in two flavors, one where each atom is tested and stopped individually, and one where all coordinates are treated as one long vector, and all momenta are set to zero if the dot product between the momentum vector and force vector (both of length 3N) is zero. This module implements the latter version. Although the algorithm is primitive, it performs very well because it takes advantage of the physics of the problem. Once the system is so near the minimum that the potential energy surface is approximately quadratic it becomes advantageous to switch to a minimization method with quadratic convergence, such as *Conjugate Gradient* or *Quasi Newton*. SciPy optimizers ---------------- .. module:: ase.optimize.sciopt SciPy provides a number of optimizers. An interface module for a couple of these have been written for ASE. Most notable are the optimizers SciPyFminBFGS and SciPyFminCG. These are called with the regular syntax and can be imported as:: from ase.optimize.sciopt import SciPyFminBFGS, SciPyFminCG .. autoclass:: ase.optimize.sciopt.SciPyFminBFGS .. autoclass:: ase.optimize.sciopt.SciPyFminCG BFGSLineSearch -------------- .. module:: ase.optimize.bfgslinesearch BFGSLineSearch is the BFGS algorithm with a line search mechanism that enforces the step taken fulfills the Wolfe conditions, so that the energy and absolute value of the force decrease monotonically. Like the LBFGS algorithm the inverse of the Hessian Matrix is updated. The usage of BFGSLineSearch algorithm is similar to other BFGS type algorithms. A typical optimization should look like:: from ase.optimize.bfgslinesearch import BFGSLineSearch dyn = BFGSLineSearch(atoms=system, trajectory='bfgs_ls.traj', restart='bfgs_ls.pckl') where the trajectory and the restart save the trajectory of the optimization and the information needed to generate the Hessian Matrix. .. note:: In many of the examples, tests, exercises and tutorials, ``QuasiNewton`` is used -- it is a synonym for ``BFGSLineSearch``. The BFGSLineSearch algorithm is not compatible with nudged elastic band calculations. .. module:: ase.optimize.precon Preconditioned optimizers ========================= Preconditioners can speed up optimization approaches by incorporating information about the local bonding topology into a redefined metric through a coordinate transformation. Preconditioners are problem dependent, but the general purpose-implementation in ASE provides a basis that can be adapted to achieve optimized performance for specific applications. While the approach is general, the implementation is specific to a given optimizer: currently LBFGS and FIRE can be preconditioned using the :class:`ase.optimize.precon.lbfgs.PreconLBFGS` and :class:`ase.optimize.precon.fire.PreconFIRE` classes, respectively. You can read more about the theory and implementation here: | D. Packwood, J.R. Kermode; L. Mones, N. Bernstein, J. Woolley, N. Gould, C. Ortner and G. Csányi | `A universal preconditioner for simulating condensed phase materials`__ | J. Chem. Phys. *144*, 164109 (2016). __ http://dx.doi.org/10.1063/1.4947024 Tests with a variety of solid-state systems using both DFT and classical interatomic potentials driven though ASE calculators show speedup factors of up to an order of magnitude for preconditioned L-BFGS over standard L-BFGS, and the gain grows with system size. Precomputations are performed to automatically estimate all parameters required. A linesearch based on enforcing only the first Wolff condition (i.e. the Armijo sufficient descent condition) is also provided in :mod:`ase.utils.linesearcharmijo`; this typically leads to a further speed up when used in conjunction with the preconditioner. The preconditioned L-BFGS method implemented in ASE does not require external dependencies, but the :mod:`scipy.sparse` module can be used for efficient sparse linear algebra, and the :mod:`matscipy` package is used for fast computation of neighbour lists if available. The PyAMG package can be used to efficiently invert the preconditioner using an adaptive multigrid method. Usage is very similar to the standard optimizers. The example below compares unpreconditioned LBGFS with the default `Exp` preconditioner for a 3x3x3 bulk cube of copper containing a vacancy:: import numpy as np from ase.build import bulk from ase.calculators.emt import EMT from ase.optimize.precon import Exp, PreconLBFGS from ase.calculators.loggingcalc import LoggingCalculator import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt a0 = bulk('Cu', cubic=True) a0 *= [3, 3, 3] del a0[0] a0.rattle(0.1) nsteps = [] energies = [] log_calc = LoggingCalculator(EMT()) for precon, label in zip([None, Exp(A=3)], ['None', 'Exp(A=3)']): log_calc.label = label atoms = a0.copy() atoms.set_calculator(log_calc) opt = PreconLBFGS(atoms, precon=precon, use_armijo=True) opt.run(fmax=1e-3) log_calc.plot(markers=['r-', 'b-'], energy=False, lw=2) plt.savefig("precon_exp.png") For molecular systems in gas phase the force field based `FF` preconditioner can be applied. An example below compares the effect of FF preconditioner to the unpreconditioned LBFGS for Buckminsterfullerene. Parameters are taken from Z. Berkai at al. Energy Procedia, 74, 2015, 59-64. and the underlying potential is computed using a standalone force field calculator:: import numpy as np from ase.build import molecule from ase.utils.ff import Morse, Angle, Dihedral, VdW from ase.calculators.ff import ForceField from ase.optimize.precon import get_neighbours, FF, PreconLBFGS from ase.calculators.loggingcalc import LoggingCalculator import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt a0 = molecule('C60') a0.set_cell(50.0*np.identity(3)) neighbor_list = [[] for _ in range(len(a0))] vdw_list = np.ones((len(a0), len(a0)), dtype=bool) morses = []; angles = []; dihedrals = []; vdws = [] i_list, j_list, d_list, fixed_atoms = get_neighbours(atoms=a0, r_cut=1.5) for i, j in zip(i_list, j_list): neighbor_list[i].append(j) for i in range(len(neighbor_list)): neighbor_list[i].sort() for i in range(len(a0)): for jj in range(len(neighbor_list[i])): j = neighbor_list[i][jj] if j > i: morses.append(Morse(atomi=i, atomj=j, D=6.1322, alpha=1.8502, r0=1.4322)) vdw_list[i, j] = vdw_list[j, i] = False for kk in range(jj+1, len(neighbor_list[i])): k = neighbor_list[i][kk] angles.append(Angle(atomi=j, atomj=i, atomk=k, k=10.0, a0=np.deg2rad(120.0), cos=True)) vdw_list[j, k] = vdw_list[k, j] = False for ll in range(kk+1, len(neighbor_list[i])): l = neighbor_list[i][ll] dihedrals.append(Dihedral(atomi=j, atomj=i, atomk=k, atoml=l, k=0.346)) for i in range(len(a0)): for j in range(i+1, len(a0)): if vdw_list[i, j]: vdws.append(VdW(atomi=i, atomj=j, epsilonij=0.0115, rminij=3.4681)) log_calc = LoggingCalculator(ForceField(morses=morses, angles=angles, dihedrals=dihedrals, vdws=vdws)) for precon, label in zip([None, FF(morses=morses, angles=angles, dihedrals=dihedrals)], ['None', 'FF']): log_calc.label = label atoms = a0.copy() atoms.set_calculator(log_calc) opt = PreconLBFGS(atoms, precon=precon, use_armijo=True) opt.run(fmax=1e-4) log_calc.plot(markers=['r-', 'b-'], energy=False, lw=2) plt.savefig("precon_ff.png") For molecular crystals the `Exp_FF` preconditioner is recommended, which is a synthesis of `Exp` and `FF` preconditioners. The :class:`ase.calculators.loggingcalc.LoggingCalculator` provides a convenient tool for plotting convergence and walltime. .. image:: precon.png Global optimization =================== There are currently two global optimisation algorithms available. Basin hopping ------------- .. module:: ase.optimize.basin The global optimization algorithm can be used quite similar as a local optimization algorithm:: from ase import * from ase.optimize.basin import BasinHopping bh = BasinHopping(atoms=system, # the system to optimize temperature=100 * kB, # 'temperature' to overcome barriers dr=0.5, # maximal stepwidth optimizer=LBFGS, # optimizer to find local minima fmax=0.1, # maximal force for the optimizer ) Read more about this algorithm here: | David J. Wales and Jonathan P. K. Doye | `Global Optimization by Basin-Hopping and the Lowest Energy Structures of Lennard-Jones Clusters Containing up to 110 Atoms`__ | J. Phys. Chem. A, Vol. **101**, 5111-5116 (1997) __ http://pubs.acs.org/doi/abs/10.1021/jp970984n and here: | David J. Wales and Harold A. Scheraga | `Global Optimization of Clusters, Crystals, and Biomolecules`__ | Science, Vol. **285**, 1368 (1999) __ http://www.sciencemag.org/cgi/content/abstract/sci;285/5432/1368 Minima hopping -------------- The minima hopping algorithm was developed and described by Goedecker: | Stefan Goedecker | `Minima hopping: An efficient search method for the global minimum of the potential energy surface of complex molecular systems`__ | J. Chem. Phys., Vol. **120**, 9911 (2004) __ http://dx.doi.org/10.1063/1.1724816 This algorithm utilizes a series of alternating steps of NVE molecular dynamics and local optimizations, and has two parameters that the code dynamically adjusts in response to the progress of the search. The first parameter is the initial temperature of the NVE simulation. Whenever a step finds a new minimum this temperature is decreased; if the step finds a previously found minimum the temperature is increased. The second dynamically adjusted parameter is :math:`E_\mathrm{diff}`, which is an energy threshold for accepting a newly found minimum. If the new minimum is no more than :math:`E_\mathrm{diff}` eV higher than the previous minimum, it is acccepted and :math:`E_\mathrm{diff}` is decreased; if it is more than :math:`E_\mathrm{diff}` eV higher it is rejected and :math:`E_\mathrm{diff}` is increased. The method is used as:: from ase.optimize.minimahopping import MinimaHopping opt = MinimaHopping(atoms=system) opt(totalsteps=10) This will run the algorithm until 10 steps are taken; alternatively, if totalsteps is not specified the algorithm will run indefinitely (or until stopped by a batch system). A number of optional arguments can be fed when initializing the algorithm as keyword pairs. The keywords and default values are: | ``T0``: 1000., # K, initial MD 'temperature' | ``beta1``: 1.1, # temperature adjustment parameter | ``beta2``: 1.1, # temperature adjustment parameter | ``beta3``: 1. / 1.1, # temperature adjustment parameter | ``Ediff0``: 0.5, # eV, initial energy acceptance threshold | ``alpha1`` : 0.98, # energy threshold adjustment parameter | ``alpha2`` : 1. / 0.98, # energy threshold adjustment parameter | ``mdmin`` : 2, # criteria to stop MD simulation (no. of minima) | ``logfile``: 'hop.log', # text log | ``minima_threshold`` : 0.5, # A, threshold for identical configs | ``timestep`` : 1.0, # fs, timestep for MD simulations | ``optimizer`` : QuasiNewton, # local optimizer to use | ``minima_traj`` : 'minima.traj', # storage file for minima list Specific definitions of the ``alpha``, ``beta``, and ``mdmin`` parameters can be found in the publication by Goedecker. ``minima_threshold`` is used to determine if two atomic configurations are identical; if any atom has moved by more than this amount it is considered a new configuration. Note that the code tries to do this in an intelligent manner: atoms are considered to be indistinguishable, and translations are allowed in the directions of the periodic boundary conditions. Therefore, if a CO is adsorbed in an ontop site on a (211) surface it will be considered identical no matter which ontop site it occupies. The trajectory file ``minima_traj`` will be populated with the accepted minima as they are found. A log of the progress is kept in ``logfile``. The code is written such that a stopped simulation (e.g., killed by the batching system when the maximum wall time was exceeded) can usually be restarted without too much effort by the user. In most cases, the script can be resubmitted without any modification -- if the ``logfile`` and ``minima_traj`` are found, the script will attempt to use these to resume. (Note that you may need to clean up files left in the directory by the calculator, however, such as the .nc file produced by Jacapo.) Note that these searches can be quite slow, so it can pay to have multiple searches running at a time. Multiple searches can run in parallel and share one list of minima. (Run each script from a separate directory but specify the location to the same absolute location for ``minima_traj``). Each search will use the global information of the list of minima, but will keep its own local information of the initial temperature and :math:`E_\mathrm{diff}`. For an example of use, see the :ref:`mhtutorial` tutorial. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/parallel.rst000066400000000000000000000020031316323560300236250ustar00rootroot00000000000000.. module:: ase.parallel ===================== Parallel calculations ===================== ASE will automatically run in parallel, if it can import an MPI communicator from any of the supported libraries. ASE will attempt to import communicators from these external libraries: GPAW, Asap, Scientific MPI and MPI4PY. If a parallel library is found, the :func:`ase.io.read` function will always read only on master (of the MPI world object) and broadcast the atoms to all other cores. Therefore, always when using :func:`ase.io.read`, all cores must read the same atoms in same order, for example in the case of NEB calculation. If one requires an individual core/cores to read a particular file, please use :func:`~ase.io.Trajectory`: >>> from ase.io import Trajectory >>> from ase.parallel import world >>> atoms = Trajectory('myfile_{}.traj'.format(world.rank))[-1] .. autofunction:: paropen .. autofunction:: parprint .. autofunction:: broadcast .. autofunction:: parallel_function .. autofunction:: parallel_generator ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phasediagram/000077500000000000000000000000001316323560300237315ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phasediagram/cuau.py000066400000000000000000000004511316323560300252400ustar00rootroot00000000000000# creates: cuau.png import matplotlib.pyplot as plt from ase.phasediagram import PhaseDiagram refs = [('Cu', 0.0), ('Au', 0.0), ('CuAu2', -0.2), ('CuAu', -0.5), ('Cu2Au', -0.7)] pd = PhaseDiagram(refs) pd.plot() plt.savefig('cuau.png') print(pd.decompose('Cu3Au')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phasediagram/ktao.py000066400000000000000000000010001316323560300252300ustar00rootroot00000000000000# creates: ktao-2d.png, ktao-3d.png import matplotlib.pyplot as plt from ase.phasediagram import PhaseDiagram references = [('K', 0), ('Ta', 0), ('O2', 0), ('K3TaO8', -16.167), ('KO2', -2.288), ('KO3', -2.239), ('Ta2O5', -19.801), ('TaO3', -8.556), ('TaO', -1.967), ('K2O', -3.076), ('K2O2', -4.257), ('KTaO3', -13.439)] pd = PhaseDiagram(references) for d in [2, 3]: pd.plot(dims=d, show=False) plt.savefig('ktao-{}d.png'.format(d)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phasediagram/phasediagram.rst000066400000000000000000000071641316323560300271200ustar00rootroot00000000000000.. module:: ase.phasediagram .. _phase diagrams: ==================================== Phase diagrams and Pourbaix diagrams ==================================== .. autoclass:: ase.phasediagram.PhaseDiagram Here is a simple example using some made up numbers for Cu-Au alloys: >>> from ase.phasediagram import PhaseDiagram >>> refs = [('Cu', 0.0), ... ('Au', 0.0), ... ('CuAu', -0.5), ... ('Cu2Au', -0.7), ... ('Cu2Au', -0.2)] >>> pd = PhaseDiagram(refs) Species: Au, Cu References: 5 0 Cu 0.000 1 Au 0.000 2 CuAu -0.500 3 Cu2Au -0.700 4 CuAu2 -0.200 Simplices: 3 The convex hull looks like this: >>> pd.plot() .. image:: cuau.png .. automethod:: PhaseDiagram.plot If you want to see what :mol:`Cu_3Au` will decompose into, you can use the :meth:`~PhaseDiagram.decompose` method: >>> energy, indices, coefs = pd.decompose('Cu3Au') reference coefficient energy ------------------------------------ Cu 1 0.000 Cu2Au 1 -0.700 ------------------------------------ Total energy: -0.700 ------------------------------------ >>> print(energy, indices, coefs) (-0.69999999999999996, array([0, 3], dtype=int32), array([ 1., 1.])) Alternatively, one could have used ``pd.decompose(Cu=3, Au=1)``. .. automethod:: PhaseDiagram.decompose Here is an example (see :download:`ktao.py`) with three components using ``plot(dims=2)`` and ``plot(dims=3)``: .. image:: ktao-2d.png .. image:: ktao-3d.png Pourbaix diagrams ================= Let's create a Pourbaix diagram for ZnO from experimental numbers. >>> from ase.phasediagram import Pourbaix, solvated >>> refs = solvated('Zn') >>> print(refs) [('HZnO2-(aq)', -4.801274772854441), ('ZnO2--(aq)', -4.0454382546928365), ('ZnOH+(aq)', -3.5207324675582736), ('ZnO(aq)', -2.9236086089762137), ('H2O(aq)', -2.458311658897383), ('Zn++(aq)', -1.5264168353005447), ('H+(aq)', 0.0)] We use the :func:`solvated` function to get solvation energies for zinc containing molecules (plus water and a proton): .. autofunction:: solvated We add two solids and one more dissolved molecule to the references and create a :class:`Pourbaix` object: >>> refs += [('Zn', 0.0), ('ZnO', -3.323), ('ZnO2(aq)', -2.921)] >>> pb = Pourbaix(refs, Zn=1, O=1) To see what ZnO will :meth:`~Pourbaix.decompose` to at a potential of 1 eV and a pH of 9.0, we do this: >>> coefs, energy = pb.decompose(1.0, 9.0) 0 HZnO2-(aq) -5.158 1 ZnO2--(aq) -4.403 2 ZnOH+(aq) -3.878 3 ZnO(aq) -3.281 4 H2O(aq) -2.458 5 Zn++(aq) -1.884 6 H+(aq) -0.536 7 Zn 0.000 8 ZnO -3.323 9 ZnO2(aq) -3.278 10 e- -1.000 reference coefficient energy ------------------------------------ H2O(aq) -1 -2.458 H+(aq) 2 -0.536 ZnO2(aq) 1 -3.278 e- 2 -1.000 ------------------------------------ Total energy: -3.891 ------------------------------------ >>> print(coefs, energy) (array([ 0.00000000e+00, 0.00000000e+00, 6.66133815e-16, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 2.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 2.00000000e+00]), -3.8913313372636829) The full :meth:`~Pourbaix.diagram` is calculated like this: >>> import numpy as np >>> U = np.linspace(-2, 2, 200) >>> pH = np.linspace(-2, 16, 300) >>> d, names, text = pb.diagram(U, pH, plot=True) .. image:: zno.png .. autoclass:: ase.phasediagram.Pourbaix :members: :member-order: bysource ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phasediagram/zno.py000066400000000000000000000006211316323560300251100ustar00rootroot00000000000000# creates: zno.png from ase.phasediagram import Pourbaix, solvated refs = solvated('Zn') print(refs) refs += [('Zn', 0.0), ('ZnO', -3.323), ('ZnO2(aq)', -2.921)] pb = Pourbaix(refs, Zn=1, O=1) print(pb.decompose(1.0, 9.0)) import numpy as np U = np.linspace(-2, 2, 200) pH = np.linspace(-2, 16, 300) d, names, text = pb.diagram(U, pH, plot=True) import matplotlib.pyplot as plt plt.savefig('zno.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phonons.py000066400000000000000000000043501316323560300233440ustar00rootroot00000000000000# creates: Al_phonon.png Al_mode.gif Al_mode.pdf import matplotlib.pyplot as plt from ase.build import bulk from ase.calculators.emt import EMT from ase.dft.kpoints import ibz_points, bandpath from ase.phonons import Phonons # Setup crystal and EMT calculator atoms = bulk('Al', a=4.05) calc = EMT() # Phonon calculator N = 6 ph = Phonons(atoms, calc, supercell=(N, N, N)) ph.run() # Read forces and assemble the dynamical matrix ph.read(acoustic=True) # High-symmetry points in the Brillouin zone points = ibz_points['fcc'] G = points['Gamma'] X = points['X'] W = points['W'] K = points['K'] L = points['L'] U = points['U'] point_names = ['$\Gamma$', 'X', 'U', 'L', '$\Gamma$', 'K'] path = [G, X, U, L, G, K] path_kc, q, Q = bandpath(path, atoms.cell, 100) omega_kn = 1000 * ph.band_structure(path_kc) # DOS omega_e, dos_e = ph.dos(kpts=(50, 50, 50), npts=5000, delta=1e-4) omega_e *= 1000 # Plot phonon dispersion plt.figure(1, (8, 6)) plt.axes([.1, .07, .67, .85]) for n in range(len(omega_kn[0])): omega_n = omega_kn[:, n] plt.plot(q, omega_n, 'k-', lw=2) plt.xticks(Q, point_names, fontsize=18) plt.yticks(fontsize=18) plt.xlim(q[0], q[-1]) plt.ylim(0, 35) plt.ylabel("Frequency ($\mathrm{meV}$)", fontsize=22) plt.grid('on') plt.axes([.8, .07, .17, .85]) plt.fill_between(dos_e, omega_e, y2=0, color='lightgrey', edgecolor='k', lw=2) plt.ylim(0, 35) plt.xticks([], []) plt.yticks([], []) plt.xlabel("DOS", fontsize=18) plt.savefig('Al_phonon.png') # Write modes for specific q-vector to trajectory files ph.write_modes([l / 2 for l in L], branches=[2], repeat=(8, 8, 8), kT=3e-4, center=True) # Generate png animation from subprocess import call from ase.io import Trajectory, write trajfile = 'phonon.mode.2.traj' trajectory = Trajectory(trajfile, 'r') for i, atoms in enumerate(trajectory): write('picture%02i.png' % i, atoms, show_unit_cell=2, rotation='-36x,26.5y,-25z') # Flatten images for better quality call(['convert', '-flatten', 'picture%02i.png' % i, 'picture%02i.png' % i]) # Make static pdf image for pdflatex call(['convert', 'picture00.png', 'Al_mode.pdf']) # Concatenate to gif animation call(['convert', '-delay', '5', '-loop', '0', '-dispose', 'Previous', 'picture*.png', 'Al_mode.gif']) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/phonons.rst000066400000000000000000000057731316323560300235360ustar00rootroot00000000000000.. module:: ase.phonons =================== Phonon calculations =================== Module for calculating vibrational normal modes for periodic systems using the so-called small displacement method (see e.g. [Alfe]_). So far, space-group symmetries are not exploited to reduce the number of atomic displacements that must be calculated and subsequent symmetrization of the force constants. For polar materials the dynamical matrix at the zone center acquires a non-analytical contribution that accounts for the LO-TO splitting. This contribution requires additional functionality to evaluate and is not included in the present implementation. Its implementation in conjunction with the small displacement method is described in [Wang]_. Example ======= Simple example showing how to calculate the phonon dispersion for bulk aluminum using a 7x7x7 supercell within effective medium theory:: from ase.build import bulk from ase.calculators.emt import EMT from ase.dft.kpoints import ibz_points, bandpath from ase.phonons import Phonons # Setup crystal and EMT calculator atoms = bulk('Al', 'fcc', a=4.05) calc = EMT() # Phonon calculator N = 7 ph = Phonons(atoms, calc, supercell=(N, N, N), delta=0.05) ph.run() # Read forces and assemble the dynamical matrix ph.read(acoustic=True) # High-symmetry points in the Brillouin zone points = ibz_points['fcc'] G = points['Gamma'] X = points['X'] W = points['W'] K = points['K'] L = points['L'] U = points['U'] point_names = ['$\Gamma$', 'X', 'U', 'L', '$\Gamma$', 'K'] path = [G, X, U, L, G, K] # Band structure in meV path_kc, q, Q = bandpath(path, atoms.cell, 100) omega_kn = 1000 * ph.band_structure(path_kc) # Calculate phonon DOS omega_e, dos_e = ph.dos(kpts=(50, 50, 50), npts=5000, delta=5e-4) omega_e *= 1000 # Plot the band structure and DOS import matplotlib.pyplot as plt plt.figure(1, (8, 6)) plt.axes([.1, .07, .67, .85]) for n in range(len(omega_kn[0])): omega_n = omega_kn[:, n] plt.plot(q, omega_n, 'k-', lw=2) plt.xticks(Q, point_names, fontsize=18) plt.yticks(fontsize=18) plt.xlim(q[0], q[-1]) plt.ylabel("Frequency ($\mathrm{meV}$)", fontsize=22) plt.grid('on') plt.axes([.8, .07, .17, .85]) plt.fill_between(dos_e, omega_e, y2=0, color='lightgrey', edgecolor='k', lw=1) plt.ylim(0, 35) plt.xticks([], []) plt.yticks([], []) plt.xlabel("DOS", fontsize=18) plt.show() .. image:: Al_phonon.png Mode inspection:: # Write modes for specific q-vector to trajectory files ph.write_modes([l/2 for l in L], branches=[2], repeat=(8, 8, 8), kT=3e-4) .. image:: Al_mode.* .. [Alfe] D. Alfe, PHON: A program to calculate phonons using the small displacement method, Comput. Phys. Commun. 180, 2622 (2009) .. [Wang] Y. Wang *et al.*, A mixed-space approach to first-principles calculations of phonon frequencies for polar materials, J. Phys.: Cond. Matter 22, 202201 (2010) List of all Methods =================== .. autoclass:: Phonons :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/precon.py000066400000000000000000000012631316323560300231460ustar00rootroot00000000000000# creates: precon.png from ase.build import bulk from ase.calculators.emt import EMT from ase.optimize.precon import Exp, PreconLBFGS from ase.calculators.loggingcalc import LoggingCalculator import matplotlib.pyplot as plt a0 = bulk('Cu', cubic=True) a0 *= [3, 3, 3] del a0[0] a0.rattle(0.1) nsteps = [] energies = [] log_calc = LoggingCalculator(EMT()) for precon, label in [(None, 'None'), (Exp(A=3, use_pyamg=False), 'Exp(A=3)')]: log_calc.label = label atoms = a0.copy() atoms.set_calculator(log_calc) opt = PreconLBFGS(atoms, precon=precon, use_armijo=True) opt.run(fmax=1e-3) log_calc.plot(markers=['r-', 'b-'], energy=False, lw=2) plt.savefig('precon.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/000077500000000000000000000000001316323560300234545ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-al.py000066400000000000000000000001721316323560300265700ustar00rootroot00000000000000from ase.spacegroup import crystal a = 4.05 al = crystal('Al', [(0,0,0)], spacegroup=225, cellpar=[a, a, a, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-cosb3.py000066400000000000000000000022531316323560300272070ustar00rootroot00000000000000import ase.io as io from ase.build import cut from ase.spacegroup import crystal a = 9.04 skutterudite = crystal(('Co', 'Sb'), basis=[(0.25, 0.25, 0.25), (0.0, 0.335, 0.158)], spacegroup=204, cellpar=[a, a, a, 90, 90, 90]) # Create a new atoms instance with Co at origo including all atoms on the # surface of the unit cell cosb3 = cut(skutterudite, origo=(0.25, 0.25, 0.25), extend=1.01) # Define the atomic bonds to show bondatoms = [] symbols = cosb3.get_chemical_symbols() for i in range(len(cosb3)): for j in range(i): if (symbols[i] == symbols[j] == 'Co' and cosb3.get_distance(i, j) < 4.53): bondatoms.append((i, j)) elif (symbols[i] == symbols[j] == 'Sb' and cosb3.get_distance(i, j) < 2.99): bondatoms.append((i, j)) # Create nice-looking image using povray io.write('spacegroup-cosb3.pov', cosb3, transparent=False, display=False, run_povray=True, camera_type='perspective', canvas_width=320, radii=0.4, rotation='90y', bondlinewidth=0.07, bondatoms=bondatoms) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-diamond.py000066400000000000000000000001761316323560300276130ustar00rootroot00000000000000from ase.spacegroup import crystal a = 3.57 diamond = crystal('C', [(0,0,0)], spacegroup=227, cellpar=[a, a, a, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-fe.py000066400000000000000000000001721316323560300265660ustar00rootroot00000000000000from ase.spacegroup import crystal a = 2.87 fe = crystal('Fe', [(0,0,0)], spacegroup=229, cellpar=[a, a, a, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-mg.py000066400000000000000000000002371316323560300266010ustar00rootroot00000000000000from ase.spacegroup import crystal a = 3.21 c = 5.21 mg = crystal('Mg', [(1./3., 2./3., 3./4.)], spacegroup=194, cellpar=[a, a, c, 90, 90, 120]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-nacl.py000066400000000000000000000002461316323560300271130ustar00rootroot00000000000000from ase.spacegroup import crystal a = 5.64 nacl = crystal(['Na', 'Cl'], [(0, 0, 0), (0.5, 0.5, 0.5)], spacegroup=225, cellpar=[a, a, a, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-rutile.py000066400000000000000000000002651316323560300275030ustar00rootroot00000000000000from ase.spacegroup import crystal a = 4.6 c = 2.95 rutile =crystal(['Ti', 'O'], basis=[(0, 0, 0), (0.3, 0.3, 0.0)], spacegroup=136, cellpar=[a, a, c, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup-skutterudite.py000066400000000000000000000003671316323560300307360ustar00rootroot00000000000000from ase.spacegroup import crystal a = 9.04 skutterudite = crystal(('Co', 'Sb'), basis=[(0.25, 0.25, 0.25), (0.0, 0.335, 0.158)], spacegroup=204, cellpar=[a, a, a, 90, 90, 90]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup.py000066400000000000000000000015151316323560300262000ustar00rootroot00000000000000# creates: spacegroup-al.png spacegroup-fe.png spacegroup-rutile.png spacegroup-cosb3.png spacegroup-mg.png spacegroup-skutterudite.png spacegroup-diamond.png spacegroup-nacl.png import ase.io for name in ['al', 'mg', 'fe', 'diamond', 'nacl', 'rutile', 'skutterudite']: py = 'spacegroup-{0}.py'.format(name) exec(compile(open(py).read(), py, 'exec')) atoms = globals()[name] ase.io.write('spacegroup-%s.pov' % name, atoms, transparent=False, display=False, run_povray=True, # canvas_width=128, show_unit_cell=2, rotation='10x,-10y', # celllinewidth=0.02, celllinewidth=0.05) exec(compile(open('spacegroup-cosb3.py').read(), 'spacegroup-cosb3.py', 'exec')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/spacegroup/spacegroup.rst000066400000000000000000000127651316323560300263710ustar00rootroot00000000000000.. module:: ase.spacegroup =============================== Using the spacegroup subpackage =============================== The most evident usage of the spacegroup subpackage is to set up an initial unit of a bulk structure. For this you only need to supply the unique atoms and their scaled positions, space group and lattice parameters. Examples of setting up bulk structures ====================================== We start by showing some examples of how to set up some common or interesting bulk structures using :func:`ase.spacegroup.crystal`. This function takes a lot of arguments: .. autofunction:: crystal There is also a :func:`get_spacegroup` function that will return a spacegroup object from an Atoms object. Aluminium (fcc) --------------- .. image:: spacegroup-al.png .. literalinclude:: spacegroup-al.py The *spacegroup* argument can also be entered with its Hermann-Mauguin symbol, e.g. *spacegroup=225* is equivalent to *spacegroup='F m -3 m'*. Iron (bcc) ---------- .. image:: spacegroup-fe.png .. literalinclude:: spacegroup-fe.py Magnesium (hcp) --------------- .. image:: spacegroup-mg.png .. literalinclude:: spacegroup-mg.py Diamond ------- .. image:: spacegroup-diamond.png .. literalinclude:: spacegroup-diamond.py Sodium chloride --------------- .. image:: spacegroup-nacl.png .. literalinclude:: spacegroup-nacl.py Rutile ------ .. image:: spacegroup-rutile.png .. literalinclude:: spacegroup-rutile.py CoSb3 skutterudite ------------------ .. image:: spacegroup-skutterudite.png Skutterudites_ are quite interesting structures with 32 atoms in the unit cell. .. _Skutterudites: http://en.wikipedia.org/wiki/Skutterudite .. literalinclude:: spacegroup-skutterudite.py Often this structure is visualised with the Cobalt atoms on the corners. This can easily be accomplished with ASE using :func:`ase.build.cut`. Below is the *origo* argument used to put the Cobalt atom on the corners and *extend* to include all corner and edge atoms, even those belonging to neighbouring unit cells. .. image:: spacegroup-cosb3.png .. literalinclude:: spacegroup-cosb3.py The Spacegroup class ==================== The :class:`ase.spacegroup.Spacegroup` class is used internally by the :func:`ase.spacegroup.crystal` function, but might sometimes also be useful if you want to know e.g. the symmetry operations of a given space group. Instances of the :class:`ase.spacegroup.Spacegroup` class are immutable objects holding space group information, such as symmetry operations. Let us e.g. consider the fcc structure. To print information about the space group, do >>> from ase.spacegroup import Spacegroup >>> sg = Spacegroup(225) >>> print(sg) 225 F m -3 m setting 1 centrosymmetric 1 primitive vectors 0.0000000000 0.5000000000 0.5000000000 0.5000000000 0.0000000000 0.5000000000 0.5000000000 0.5000000000 0.0000000000 reciprocal vectors -1 1 1 1 -1 1 1 1 -1 4 subtranslations 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.5000000000 0.5000000000 0.5000000000 0.0000000000 0.5000000000 0.5000000000 0.5000000000 0.0000000000 24 symmetry operations (rot+trans) 1 0 0 0 1 0 0 0 1 0.0000000000 0.0000000000 0.0000000000 -1 0 0 0 -1 0 0 0 1 0.0000000000 0.0000000000 0.0000000000 -1 0 0 0 1 0 0 0 -1 0.0000000000 0.0000000000 0.0000000000 1 0 0 0 -1 0 0 0 -1 0.0000000000 0.0000000000 0.0000000000 0 0 1 1 0 0 0 1 0 0.0000000000 0.0000000000 0.0000000000 0 0 1 -1 0 0 0 -1 0 0.0000000000 0.0000000000 0.0000000000 0 0 -1 -1 0 0 0 1 0 0.0000000000 0.0000000000 0.0000000000 0 0 -1 1 0 0 0 -1 0 0.0000000000 0.0000000000 0.0000000000 0 1 0 0 0 1 1 0 0 0.0000000000 0.0000000000 0.0000000000 0 -1 0 0 0 1 -1 0 0 0.0000000000 0.0000000000 0.0000000000 0 1 0 0 0 -1 -1 0 0 0.0000000000 0.0000000000 0.0000000000 0 -1 0 0 0 -1 1 0 0 0.0000000000 0.0000000000 0.0000000000 0 1 0 1 0 0 0 0 -1 0.0000000000 0.0000000000 0.0000000000 0 -1 0 -1 0 0 0 0 -1 0.0000000000 0.0000000000 0.0000000000 0 1 0 -1 0 0 0 0 1 0.0000000000 0.0000000000 0.0000000000 0 -1 0 1 0 0 0 0 1 0.0000000000 0.0000000000 0.0000000000 1 0 0 0 0 1 0 -1 0 0.0000000000 0.0000000000 0.0000000000 -1 0 0 0 0 1 0 1 0 0.0000000000 0.0000000000 0.0000000000 -1 0 0 0 0 -1 0 -1 0 0.0000000000 0.0000000000 0.0000000000 1 0 0 0 0 -1 0 1 0 0.0000000000 0.0000000000 0.0000000000 0 0 1 0 1 0 -1 0 0 0.0000000000 0.0000000000 0.0000000000 0 0 1 0 -1 0 1 0 0 0.0000000000 0.0000000000 0.0000000000 0 0 -1 0 1 0 1 0 0 0.0000000000 0.0000000000 0.0000000000 0 0 -1 0 -1 0 -1 0 0 0.0000000000 0.0000000000 0.0000000000 Or, if you want to figure out what sites in the unit cell are equivalent to (0, 0, 0.5), simply do >>> sites,kinds = sg.equivalent_sites([(0, 0, 0.5)]) >>> sites array([[ 0. , 0. , 0.5], [ 0.5, 0. , 0. ], [ 0. , 0.5, 0. ], [ 0.5, 0.5, 0.5]]) >>> kinds [0, 0, 0, 0] where *sites* will be an array containing the scaled positions of the four symmetry-equivalent sites. .. autoclass:: Spacegroup .. autofunction:: get_spacegroup ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/000077500000000000000000000000001316323560300245325ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/ethane.py000066400000000000000000000027231316323560300263540ustar00rootroot00000000000000from ase.thermochemistry import HinderedThermo from numpy import array vibs = array([3049.060670, 3040.796863, 3001.661338, 2997.961647, 2866.153162, 2750.855460, 1436.792655, 1431.413595, 1415.952186, 1395.726300, 1358.412432, 1335.922737, 1167.009954, 1142.126116, 1013.918680, 803.400098, 783.026031, 310.448278, 136.112935, 112.939853, 103.926392, 77.262869, 60.278004, 25.825447]) vib_energies = vibs / 8065.54429 # convert to eV from cm^-1 trans_barrier_energy = 0.049313 # eV rot_barrier_energy = 0.017675 # eV sitedensity = 1.5e15 # cm^-2 rotationalminima = 6 symmetrynumber = 1 mass = 30.07 # amu inertia = 73.149 # amu Ang^-2 thermo = HinderedThermo(vib_energies=vib_energies, trans_barrier_energy=trans_barrier_energy, rot_barrier_energy=rot_barrier_energy, sitedensity=sitedensity, rotationalminima=rotationalminima, symmetrynumber=symmetrynumber, mass=mass, inertia=inertia) F = thermo.get_helmholtz_energy(temperature=298.15) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/gold.py000066400000000000000000000020161316323560300260300ustar00rootroot00000000000000from ase.spacegroup import crystal from ase.calculators.emt import EMT from ase.optimize import QuasiNewton from ase.phonons import Phonons from ase.thermochemistry import CrystalThermo # Set up gold bulk and attach EMT calculator a = 4.078 atoms = crystal('Au', (0., 0., 0.), spacegroup=225, cellpar=[a, a, a, 90, 90, 90], pbc=(1, 1, 1)) calc = EMT() atoms.set_calculator(calc) qn = QuasiNewton(atoms) qn.run(fmax=0.05) potentialenergy = atoms.get_potential_energy() # Phonon analysis N = 5 ph = Phonons(atoms, calc, supercell=(N, N, N), delta=0.05) ph.run() ph.read(acoustic=True) phonon_energies, phonon_DOS = ph.dos(kpts=(40, 40, 40), npts=3000, delta=5e-4) # Calculate the Helmholtz free energy thermo = CrystalThermo(phonon_energies=phonon_energies, phonon_DOS=phonon_DOS, potentialenergy=potentialenergy, formula_units=4) F = thermo.get_helmholtz_energy(temperature=298.15) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/nitrogen.py000066400000000000000000000013021316323560300267250ustar00rootroot00000000000000from ase.build import molecule from ase.calculators.emt import EMT from ase.optimize import QuasiNewton from ase.vibrations import Vibrations from ase.thermochemistry import IdealGasThermo atoms = molecule('N2') atoms.set_calculator(EMT()) dyn = QuasiNewton(atoms) dyn.run(fmax=0.01) potentialenergy = atoms.get_potential_energy() vib = Vibrations(atoms) vib.run() vib_energies = vib.get_energies() thermo = IdealGasThermo(vib_energies=vib_energies, potentialenergy=potentialenergy, atoms=atoms, geometry='linear', symmetrynumber=2, spin=0) G = thermo.get_gibbs_energy(temperature=298.15, pressure=101325.) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/thermochemistry.py000066400000000000000000000020431316323560300303310ustar00rootroot00000000000000# creates: nitrogen.txt, ethane.txt, gold.txt import io import os import sys def output_to_string(pythonfile): """Returns the stdout of executing the code in pythonfile as a string.""" if sys.version_info.major == 2: buffer = io.BytesIO() else: buffer = io.StringIO() sys.stdout = buffer exec(open(pythonfile).read()) sys.stdout = sys.__stdout__ return buffer.getvalue() # Only save the parts relevant to thermochemistry nitrogen = output_to_string('nitrogen.py') nitrogen = nitrogen[nitrogen.find('Enthalpy'):] with open('nitrogen.txt', 'w') as f: f.write(nitrogen) ethane = output_to_string('ethane.py') ethane = ethane[ethane.find('Internal'):] with open('ethane.txt', 'w') as f: f.write(ethane) gold = output_to_string('gold.py') gold = gold[gold.find('Internal'):] with open('gold.txt', 'w') as f: f.write(gold) # Clean up. vibfiles = [file for file in os.listdir(os.getcwd()) if file.startswith('vib.') or file.startswith('phonon.')] for file in vibfiles: os.remove(file) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/thermochemistry/thermochemistry.rst000066400000000000000000000427731316323560300305270ustar00rootroot00000000000000.. module:: ase.thermochemistry :synopsis: Thermochemistry module =============== Thermochemistry =============== ASE contains a :mod:`ase.thermochemistry` module that lets the user derive commonly desired thermodynamic quantities of molecules and crystalline solids from ASE output and some user-specified parameters. Four cases are currently handled by this module: the ideal-gas limit (in which translational and rotational degrees of freedom are taken into account), the hindered translator / hindered rotor model (used for adsorbates, in which two degrees of freedom are translational, one is rotational, and the remaining 3N-3 are vibrational), the harmonic limit (generally used for adsorbates, in which all degrees of freedom are treated harmonically), and a crystalline solid model (in which a lattice of N atoms is treated as a system of 3N independent harmonic oscillators). The first three cases rely on good vibrational energies being fed to the calculators, which can be calculated with the :mod:`ase.vibrations` module. Likewise, the crystalline solid model depends on an accurate phonon density of states; this is readily calculated using the :mod:`ase.phonons` module. Ideal-gas limit =============== The thermodynamic quantities of ideal gases are calculated by assuming that all spatial degrees of freedom are independent and separable into translational, rotational, and vibrational degrees of freedom. The :class:`~ase.thermochemistry.IdealGasThermo` class supports calculation of enthalpy (:math:`H`), entropy (:math:`S`), and Gibbs free energy (:math:`G`), and has the interface listed below. .. autoclass:: IdealGasThermo :members: Example ------- The :class:`IdealGasThermo` class would generally be called after an energy optimization and a vibrational analysis. The user needs to supply certain parameters if the entropy or free energy are desired, such as the geometry and symmetry number. An example on the nitrogen molecule is: .. literalinclude:: nitrogen.py This will give the thermodynamic summary output: .. literalinclude:: nitrogen.txt Hindered translator / hindered rotor model ========================================== The hindered translator / hindered rotor model bridges the gap between the 2D gas (i.e. free translator / free rotor) and the 2D lattice gas (i.e. harmonic oscillator). For an adsorbate containing N atoms, two degrees of freedom are treated as hindered translations in the two directions parallel to the surface, one degree of freedom is treated as a hindered rotation about the axis perpendicular to the surface, and the remaining 3N-3 degrees of freedom are treated as vibrations. The :class:`HinderedThermo` class supports the calculation of internal energy, entropy, free energy, and zero point energy (included in the internal energy). All of the thermodynamic properties calculated here are at the standard state surface concentration (defined here such that a 2D ideal gas at that concentration has 2/3 the translational entropy of a 3D ideal gas at 1 bar pressure, so that :math:`\theta^0` = 0.012 at 298 K for a surface with `10^{15}` sites/cm\ :sup:`2`). This class returns the Helmholtz free energy; if the user assumes that the pV term (in G = U + pV - TS) is zero then this free energy can also be interpreted as the Gibbs free energy. This class depends on the user defined translation barrier (trans_barrier_energy) and rotational barrier (rot_barrier_energy) for the adsorbate to move on the surface in order to calculate the translational and rotational degrees of freedom. To calculate the vibrational degrees of freedom, all 3N vibrational energies must be supplied in the vib_energies list and the 3N-3 largest vibrational energies are used to calculate the vibrational contribution; this is a list as can be generated with the .get_energies() method of :class:`ase.vibrations.Vibrations`. The class :class:`HinderedThermo` has the interface described below. .. autoclass:: HinderedThermo :members: Example ------- The :class:`HinderedThermo` class would generally be called after an energy optimization and a vibrational analysis. The user needs to supply certain parameters, such as the vibrational energies, translational energy barrier, rotational energy barrier, surface site density, number of equivalent minima in a full rotation, and the number of symmetric arms of the adsorbate as it rotates on the surface. The user also needs to supply either the mass of the adsorbate and the reduced moment of inertia of the adsorbate as it rotates on the surface or the user can supply the atoms object from which the mass and an approximate reduced moment of inertia may be determined. An example for ethane on a platinum (111) surface is: .. literalinclude:: ethane.py This will give the thermodynamic summary output: .. literalinclude:: ethane.txt Harmonic limit ============== In the harmonic limit, all degrees of freedom are treated harmonically. The :class:`HarmonicThermo` class supports the calculation of internal energy, entropy, and free energy. This class returns the Helmholtz free energy; if the user assumes the pV term (in H = U + pV) is zero this can also be interpreted as the Gibbs free energy. This class uses all of the energies given to it in the vib_energies list; this is a list as can be generated with the .get_energies() method of :class:`ase.vibrations.Vibrations`, but the user should take care that all of these energies are real (non-imaginary). The class :class:`HarmonicThermo` has the interface described below. .. autoclass:: HarmonicThermo :members: Crystals ======== In this model a crystalline solid is treated as a periodic system of independent harmonic oscillators. The :class:`CrystalThermo` class supports the calculation of internal energy (:math:`U`), entropy (:math:`S`) and Helmholtz free energy (:math:`F`), and has the interface listed below. .. autoclass:: CrystalThermo :members: Example ------- The :class:`CrystalThermo` class will generally be called after an energy optimization and a phonon vibrational analysis of the crystal. An example for bulk gold is: .. literalinclude:: gold.py This will give the thermodynamic summary output: .. literalinclude:: gold.txt Background ========== **Ideal gas.** The conversion of electronic structure calculations to thermodynamic properties in the ideal-gas limit is well documented; see, for example, Chapter 10 of Cramer, 2004. The key equations used in the :class:`IdealGasThermo` class are summarized here. C.J. Cramer. *Essentials of Computational Chemistry*, Second Edition. Wiley, 2004. The ideal-gas enthalpy is calculated from extrapolation of the energy at 0 K to the relevant temperature (for an ideal gas, the enthalpy is not a function of pressure): .. math :: H(T) = E_\text{elec} + E_\text{ZPE} + \int_0^\text{T} C_P \, \text{d}T where the first two terms are the electronic energy and the zero-point energy, and the integral is over the constant-pressure heat capacity. The heat capacity is separable into translational, rotational, vibrational, and electronic parts (plus a term of :math:`k_\text{B}` to switch from constant-volume to constant-pressure): .. math :: C_P = k_\text{B} + C_{V\text{,trans}} + C_{V\text{,rot}} + C_{V\text{,vib}} + C_{V\text{,elec}} The translational heat capacity is 3/2 :math:`k_\text{B}` for a 3-dimensional gas. The rotational heat capacity is 0 for a monatomic species, :math:`k_\text{B}` for a linear molecule, and 3/2 :math:`k_\text{B}` for a nonlinear molecule. In this module, the electronic component of the heat capacity is assumed to be 0. The vibrational heat capacity contains :math:`3N-6` degrees of freedom for nonlinear molecules and :math:`3N-5` degrees of freedom for linear molecules (where :math:`N` is the number of atoms). The integrated form of the vibrational heat capacity is: .. math :: \int_0^T C_{V,\text{vib}} \text{d}T = \sum_i^\text{vib DOF} \frac{\epsilon_i}{e^{\epsilon_i / k_\text{B} T} - 1 } where :math:`\epsilon_i` are the energies associated with the vibrational frequencies, :math:`\epsilon_i = h \omega_i`. The ideal gas entropy can be calculated as a function of temperature and pressure as: .. math :: S(T,P) &= S(T,P^\circ) - k_\text{B} \ln \frac{P}{P^\circ} \\ &= S_\text{trans} + S_\text{rot} + S_\text{elec} + S_\text{vib} - k_\text{B} \ln \frac{P}{P^\circ} where the translational, rotational, electronic, and vibrational components are calculated as below. (Note that the translational component also includes components from the Stirling approximation, and that the vibrational degrees of freedom are enumerated the same as in the above.) .. math :: S_\text{trans} = k_\text{B} \left\{ \ln \left[ \left( \frac{2 \pi M k_\text{B} T}{h^2} \right)^{3/2} \frac{k_\text{B} T}{P^\circ} \right] + \frac{5}{2} \right\} .. math :: S_\text{rot} = \left\{ \begin{array}{ll} 0 & \text{, if monatomic} \\ k_\text{B} \left[ \ln \left( \frac{8\pi^2 I k_\text{B}T}{\sigma h^2}\right) + 1 \right] & \text{, if linear} \\ k_\text{B} \left\{ \ln \left[ \frac{\sqrt{\pi I_\text{A} I_\text{B} I_\text{C}}}{\sigma} \left(\frac{8\pi^2 k_\text{B} T}{h^2}\right)^{3/2}\right] + \frac{3}{2} \right\} & \text{, if nonlinear} \\ \end{array} \right. .. math :: S_\text{vib} = k_\text{B} \sum_i^\text{vib DOF} \left[ \frac{\epsilon_i}{k_\text{B}T\left(e^{\epsilon_i/k_\text{B}T}-1\right)} - \ln \left( 1 - e^{-\epsilon_i/k_\text{B}T} \right)\right] .. math :: S_\text{elec} = k_\text{B} \ln \left[ 2 \times \left(\text{spin multiplicity}\right) + 1\right] :math:`I_\text{A}` through :math:`I_\text{C}` are the three principle moments of inertia for a non-linear molecule. :math:`I` is the degenerate moment of inertia for a linear molecule. :math:`\sigma` is the symmetry number of the molecule. The ideal-gas Gibbs free energy is then just calculated from the combination of the enthalpy and entropy: .. math :: G(T,P) = H(T) - T\, S(T,P) **Hindered translator / hindered rotor.** The conversion of electronic structure calculations to thermodynamic properties in the hindered translator / hindered rotor model was developed for adsorbates on close packed surfaces and is documented by Sprowl, Campbell, and Arnadottir, 2016. The key equations used in the :class:`HinderedThermo` class are summarized here. L.H. Sprowl, C.T. Campbell, and L. Arnadottir. Hindered Translator and Hindered Rotor Models for Adsorbates: Partition Functions and Entropies. *J. Phys. Chem. C*, **2016**, 120 (18), pp 9719-9731. L.H. Sprowl, C.T. Campbell, and L. Arnadottir. Correction to "Hindered Translator and Hindered Rotor Models for Adsorbates: Partition Functions and Entropies". *J. Phys. Chem. C*, **2017**, 121 (17), pp 9655-9655. C.T. Campbell, L.H. Sprowl, and L. Arnadottir. Equilibrium Constants and Rate Constants for Adsorbates: Two-Dimensional (2D) Ideal Gas, 2D Ideal Lattice Gas, and Ideal Hindered Translator Models. *J. Phys. Chem. C*, **2016**, 120 (19), pp 10283-10297. The :math:`3N-3` largest vibrational frequencies are used to calculate the vibrational contributions to the internal energy and the entropy. The remaining three degrees of freedom are calculated from two translational contributions and one rotational contribution of the adsorbate. The energy barriers for the adsorbate to translate and rotate on a close packed surface are used to calculate the translational and rotational frequencies, respectively. From the translational and rotational frequencies, the translational and rotational contributions to the internal energy and the entropy of the adsorbate are determined. The calculation of the translational frequency is: .. math :: \nu_{trans} = \sqrt{\frac{W_{trans}}{2mA}} where :math:`W_{trans}` is the translational energy barrier, :math:`m` is the mass of the adsorbate, and :math:`A` is the area per surface atom, or the inverse of the surface site density. The rotational frequency is calculated as: .. math :: \nu_{rot} = \frac{1}{2\pi}\sqrt{\frac{n^2W_{rot}}{2I}} where :math:`W_{rot}` is the rotational energy barrier, :math:`n` is the number of equivalent energy minima in a full rotation of the adsorbate, and :math:`I` is the reduced moment of inertia of the adsorbate about its surface bond. Two variables are now introduced, a unitless temperature .. math :: T_i = \frac{kT}{h\nu_i} and a unitless energy barrier .. math :: r_i = \frac{W_i}{h\nu_i} to ease the internal energy and entropy calculations. The internal energy of the adsorbate is calculated as: .. math :: U(T) = E_\text{elec} + E_\text{ZPE} + E_\text{trans} + E_\text{rot} + E_\text{vib} where :math:`E_{trans}` and :math:`E_{rot}` are: .. math :: E_i = k_\text{B}T \left( \frac{1/T_i}{\exp\left[1/T_i\right]-1} -\frac{1}{2} - \frac{1}{\left(2+16r_i\right)T_i} + \frac{r_i}{2T_i} \left( 1 - \frac{\text{I}_1\left[r_i/2T_i\right]}{\text{I}_0\left[r_i/2T_i\right]}\right) \right) where :math:`I_{n}` is the nth-order modified Bessel function of the first kind. Similarly for the harmonic limit, :math:`E_{vib}` is: .. math :: E_\text{vib} = k_\text{B}T \sum_i^\text{3N-3} \left( \frac{1/T_i}{\exp\left[1/T_i\right]-1} \right) The entropy of the adsorbate is calculated as: .. math :: S = S_\text{trans} + S_\text{rot} + S_\text{vib} + S_\text{con} where :math:`S_{trans}` and :math:`S_{rot}` are: .. math :: S_i = k_\text{B} \left( \frac{1/T_i}{\exp\left[1/T_i\right]-1} - \ln \left[ 1 - \exp\left[-\frac{1}{T_i}\right]\right] - \frac{1}{2} - \frac{r_i}{2T_i}\frac{\text{I}_1\left[r_i/2T_i\right]}{\text{I}_0\left[r_i/2T_i\right]} + \ln\left[\left(\frac{\pi r_i}{T_i}\right)^{1/2}\text{I}_0\left[\frac{r_i}{2T_i}\right]\right] \right) and :math:`S_{vib}` is: .. math :: S_\text{vib} = k_\text{B} \sum_i^\text{3N-3} \left( \frac{1/T_i}{\exp\left[1/T_i\right]-1} - \ln \left[ 1 - \exp\left[-\frac{1}{T_i}\right]\right] \right) :math:`S_{con}` is a concentration related entropy and is calculated as: .. math :: S_\text{con} = k_\text{B} \left( 1 - \ln\left[A\left(\frac{N}{A}\right)^0\right] \right) where .. math :: \left(\frac{N}{A}\right)^0 = e^{1/3}\left(\frac{N_A \text{ 1 bar}}{RT}\right) The Helmholtz free energy is calculated as: .. math :: F(T) = U(T) - T\, S(T) If the user assumes that the :math:`pV` term in :math:`H = U + pV` is negligible, then the Helmholtz free energy can be used to approximate the Gibbs free energy, as :math:`G = F + pV`. **Harmonic limit.** The conversion of electronic structure calculation information into thermodynamic properties is less established for adsorbates. However, the simplest approach often taken is to treat all :math:`3N` degrees of freedom of the adsorbate harmonically since the adsorbate often has no real translational or rotational degrees of freedom. This is the approach implemented in the :class:`HarmonicThermo` class. Thus, the internal energy and entropy of the adsorbate are calculated as .. math :: U(T) = E_\text{elec} + E_\text{ZPE} + \sum_i^\text{harm DOF} \frac{\epsilon_i}{e^{\epsilon_i / k_\text{B} T} - 1 } .. math :: S = k_\text{B} \sum_i^\text{harm DOF} \left[ \frac{\epsilon_i}{k_\text{B}T\left(e^{\epsilon_i/k_\text{B}T}-1\right)} - \ln \left( 1 - e^{-\epsilon_i/k_\text{B}T} \right)\right] and the Helmholtz free energy is calculated as .. math :: F(T) = U(T) - T\, S(T) In this case, the number of harmonic energies (:math:`\epsilon_i`) used in the summation is generally :math:`3N`, where :math:`N` is the number of atoms in the adsorbate. If the user assumes that the :math:`pV` term in :math:`H = U + pV` is negligible, then the Helmholtz free energy can be used to approximate the Gibbs free energy, as :math:`G = F + pV`. **Crystalline solid** The derivation of the partition function for a crystalline solid is fairly straight-forward and can be found, for example, in Chapter 11 of McQuarrie, 2000. D.A. McQuarrie. *Statistical Mechanics*. University Science Books, 2000. The treatment implemented in the :class:`CrystalThermo` class depends on introducing normal coordinates to the entire crystal and treating each atom in the lattice as an independent harmonic oscillator. This yields the partition function .. math :: Z = \prod_{j=1}^\text{3N} \left( \frac{e^{-\frac{1}{2}\epsilon_j/k_\text{B}T}}{1 - e^{-\epsilon_j/k_\text{B}T}} \right) e^{-E_\text{elec} / k_\mathrm{B}T} where :math:`\epsilon_j` are the :math:`3N` vibrational energy levels and :math:`E_\text{elec}` is the electronic energy of the crystalline solid. Now, taking the logarithm of the partition function and replacing the resulting sum with an integral (assuming that the energy level spacing is essentially continuous) gives .. math :: -\ln Z = E_\text{elec}/k_\text{B}T + \int_0^\infty \left[ \ln \left( 1 - e^{-\epsilon/k_\text{B}T} \right) + \frac{\epsilon}{2 k_\text{B} T} \right]\sigma (\epsilon) \text{d}\epsilon Here :math:`\sigma (\epsilon)` represents the degeneracy or phonon density of states as a function of vibrational energy. Once this function has been determined (i.e. using the :mod:`ase.phonons` module), it is a simple matter to calculate the canonical ensemble thermodynamic quantities; namely the internal energy, the entropy and the Helmholtz free energy. .. math :: U(T) &= -\left( \frac{\partial \ln Z}{\partial \frac{1}{k_\text{B}T} } \right)_\text{N,V} \\ &= E_\text{elec} + \int_0^\infty \left[ \frac{\epsilon}{e^{\epsilon/k_\text{B}T} - 1} + \frac{\epsilon}{2} \right]\sigma (\epsilon) \text{d}\epsilon .. math :: S(T) &= \frac{U}{T} + k_\text{B} \ln Z \\ &= \int_0^\infty \left[ \frac{\epsilon}{T} \frac{1}{e^{\epsilon/k_\text{B}T} - 1} - k_\text{B} \ln \left(1 - e^{-\epsilon/k_\text{B}T} \right) \right]\sigma (\epsilon) \text{d}\epsilon .. math :: F(T) = U(T) - T\, S(T,P) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/transport/000077500000000000000000000000001316323560300233405ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/transport/transport.rst000066400000000000000000000071631316323560300261350ustar00rootroot00000000000000.. module:: ase.transport :synopsis: Electron transport ================== Electron transport ================== The :mod:`ase.transport` module of ASE assumes the generic setup of the system in question sketched below: . . . |setup| . . . .. |setup| image:: transport_setup.png :align: middle There is a central region (blue atoms plus the molecule) connected to two semi-infinite leads constructed by infinitely repeated *principal layers* (red atoms). The entire structure may be periodic in the transverse direction, which can be effectively sampled using **k**-points (yellowish atoms). The system is described by a Hamiltonian matrix which must be represented in terms of a localized basis set such that each element of the Hamiltonian can be ascribed to either the left, central, or right region, *or* the coupling between these. The Hamiltonian can thus be decomposed as: .. math:: H = \begin{pmatrix} \ddots & V_L & & & \\ V_L^\dagger & H_L & V_L & & \\ & V_L^\dagger & H_C & V_R & \\ & & V_R^\dagger & H_R & V_R \\ & & & V_R^\dagger & \ddots \end{pmatrix} where `H_{L/R}` describes the left/right principal layer, and `H_C` the central region. `V_{L/R}` is the coupling between principal layers, *and* from the principal layers into the central region. The central region must contain at least one principal layer on each side, and more if the potential has not converged to its bulk value at this size. The central region is assumed to be big enough that there is no direct coupling between the two leads. The principal layer must be so big that there is only coupling between nearest neighbor layers. Having defined `H_{L/R}`, `V_{L/R}`, and `H_C`, the elastic transmission function can be determined using the Non-equilibrium Green Function (NEGF) method. This is achieved by the class: :class:`~ase.transport.calculators.TransportCalculator` (in ase.transport.calculators) which makes no requirement on the origin of these five matrices. .. autoclass:: TransportCalculator .. .. class:: ase.transport.calculators.TransportCalculator(energies, h, h1, h2, s=None, s1=None, s2=None, align_bf=False) Determine transport properties of device sandwiched between semi-infinite leads using non-equillibrium Green function methods. energies is the energy grid on which the transport properties should be determined. h1 (h2) is a matrix representation of the Hamiltonian of two principal layers of the left (right) lead, and the coupling between such layers. h is a matrix representation of the Hamiltonian of the scattering region. This must include at least on lead principal layer on each side. The coupling in (out) of the scattering region is assumed to be identical to the coupling between left (right) principal layers. s, s1, and s2 are the overlap matrices corresponding to h, h1, and h2. Default is the identity operator. If align_bf is True, the onsite elements of the Hamiltonians will be shifted to a common fermi level. This module is stand-alone in the sense that it makes no requirement on the origin of these five matrices. They can be model Hamiltonians or derived from different kinds of electronic structure codes. For an example of how to use the :mod:`ase.transport` module, see the GPAW exercise on `electron transport`_ .. _electron transport: http://wiki.fysik.dtu.dk/gpaw/exercises/transport/ transport.html ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/transport/transport_setup.py000066400000000000000000000047421316323560300271750ustar00rootroot00000000000000# creates: transport_setup.png import numpy as np from ase import Atoms from ase.build import molecule from ase.io import write a = 3.92 # Experimental lattice constant sqrt = np.sqrt cell = np.array([[a / sqrt(3), 0., 0.], [0., a / sqrt(2), 0.], [0., a / sqrt(8), a * sqrt(3 / 8.)]]) repeat = (1, 3, 3) A = Atoms('Pt', pbc=True, positions=[(0., 0., 0.)], cell=[1, 1, 1]) B = Atoms('Pt', pbc=True, positions=[(0., 1 / 3., 1 / 3.)], cell=[1, 1, 1]) C = Atoms('Pt', pbc=True, positions=[(0., 2 / 3., 2 / 3.)], cell=[1, 1, 1]) A *= repeat B *= repeat C *= repeat pyramid_BC = Atoms('Pt4', pbc=True, tags=[1, 1, 1, 2], positions=[(0., 1 / 3., 1 / 3.), # B (0., 4 / 3., 1 / 3.), # B (0., 1 / 3., 4 / 3.), # B (1., 2 / 3., 2 / 3.)], # C cell=[1, 1, 1]) inv_pyramid_BC = pyramid_BC.copy() inv_pyramid_BC.positions[:, 0] *= -1 def pos(atoms, x): atoms2 = atoms.copy() atoms2.translate([x, 0, 0]) return atoms2 princ = pos(A, 0) + pos(B, 1) + pos(C, 2) large = (pos(princ, -8) + pos(princ, -4) + pos(princ, 0) + pos(A, 3) + pos(pyramid_BC, 4) + pos(inv_pyramid_BC, 3) + pos(princ, 4) + pos(princ, 8)) large.set_cell(cell * repeat, scale_atoms=True) large.cell[0, 0] = 7 * large.cell[0, 0] dist = 18. large.cell[0, 0] += dist - cell[0, 0] large.positions[-(9 * 6 + 4):, 0] += dist - cell[0, 0] tipL, tipR = large.positions[large.get_tags() == 2] tipdist = np.linalg.norm(tipL - tipR) mol = molecule('C6H6', pbc=True, tags=[3] * 6 + [4] * 6) mol.rotate('y', 'x') mol.rotate('z', 'y') large += mol large.positions[-len(mol):] += tipL large.positions[-len(mol):, 0] += tipdist / 2 old = large.cell.copy() large *= (1, 1, 3) large.set_cell(old) # view(large) colors = np.zeros((len(large), 3)) colors[:] = [1., 1., .75] pr = [.7, .1, .1] H = [1, 1, 1] C = [.3, .3, .3] Pt = [.7, .7, .9] colors[164:218] = pr # principal layer colors[289:316] = pr # principal layer colors[218:289] = Pt # Central region Pt colors[316:322] = C # Molecule C colors[322:328] = H # Molecule H # write('test.png', large, rotation='-90x,-13y', radii=.9, # show_unit_cell=0, colors=colors) write('transport_setup.pov', large, rotation='-90x,-13y', radii=1.06, show_unit_cell=0, colors=colors, display=False, transparent=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/units.rst000066400000000000000000000041111316323560300231750ustar00rootroot00000000000000.. module:: ase.units ===== Units ===== Physical units are defined in the :git:`ase/units.py` module. Electron volts (``eV``) and angstroms (``Ang``) are defined as 1.0. Other units are (amongst others) ``nm``, ``Bohr``, ``Hartree`` or ``Ha``, ``kJ``, ``kcal``, ``mol``, ``Rydberg`` or ``Ry``, ``second``, ``fs`` and ``kB``. .. note:: As of version 3.12.0, all constants are taken from the 2014_ version of the CODATA suggestions. Before that, all constants were taken from the 1986_ version. There is, however, a way to create all units depending on other versions of CODATA via the :func:`create_units` function (see Changing the CODATA version). .. _1986: http://physics.nist.gov/cuu/Constants/archive1986.html .. _2014: http://arxiv.org/pdf/1507.07956.pdf Examples: >>> from ase.units import Bohr,Rydberg,kJ,kB,fs,Hartree,mol,kcal >>> 2 * Bohr 1.0583544211276823 >>> 25 * Rydberg 340.14232530459054 >>> 100 * kJ/mol 1.036426957471157 >>> 300 * kB 0.02585199101165164 >>> 0.1 * fs 0.009822694788464065 >>> print('1 Hartree =', Hartree * mol / kcal, 'kcal/mol') 1 Hartree = 627.5094738898777 kcal/mol Changing the CODATA version --------------------------- If you just require an additional set of units that are based on a different version of CODATA, you can use the ``create_units(codata_version)`` function. It supports CODATA versions ``'1986'``, ``'1998'``, ``'2002'``, ``'2006'``, ``'2010'``, ``'2014'``. This function will return a dictionary with key-value pairs of all the constants defined in the :mod:`ase.units` module, but based on the CODATA version just selected: >>> from ase.units import create_units >>> units = create_units('1986') >>> print(units['Bohr']) 0.5291772575069165 >>> units = create_units('2014') >>> print(units['Bohr']) 0.5291772105638411 The dictionary also supports attribute access so it can be used as a drop-in replacement for the module: >>> from ase.units import create_units >>> units = create_units('1986') >>> units.Bohr 0.5291772575069165 >>> units = create_units('2014') >>> units.Bohr 0.5291772105638411 .. autofunction:: create_units ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/utils.rst000066400000000000000000000012141316323560300231740ustar00rootroot00000000000000.. module:: ase.utils ============================== Utillity functions and classes ============================== This module contains utility functions and classes. .. autofunction:: ase.utils.opencew .. autofunction:: ase.utils.gcd .. autofunction:: ase.utils.seterr .. autofunction:: ase.utils.plural .. autofunction:: ase.utils.formula_hill .. autofunction:: ase.utils.formula_metal .. autofunction:: ase.utils.convert_string_to_fd .. autoclass:: ase.utils.timing.Timer .. autoclass:: ase.utils.timing.timer Symmetry analysis ================= http://spglib.sourceforge.net/pyspglibForASE/ Phonons ======= http://phonopy.sourceforge.net/ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/vibrations/000077500000000000000000000000001316323560300234645ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/vibrations/vibrations.rst000066400000000000000000000022301316323560300263730ustar00rootroot00000000000000.. module:: ase.vibrations ================== Vibration analysis ================== Vibrational modes ================= You can calculate the vibrational modes of a an :class:`~ase.Atoms` object in the harmonic approximation using the :class:`Vibrations`. .. autoclass:: Vibrations :members: name is a string that is prefixed to the names of all the files created. atoms is an Atoms object that is either at a fully relaxed ground state or at a saddle point. freeatoms is a list of atom indices for which the vibrational modes will be calculated, the rest of the atoms are considered frozen. displacements is a list of displacements, one for each free atom that are used in the finite difference method to calculate the Hessian matrix. method is -1 for backward differences, 0 for centered differences, and 1 for forward differences. .. _infrared: Infrared intensities ==================== :class:`~ase.vibrations.Infrared` is an extension of :class:`~ase.vibrations.Vibrations`, in addition to the vibrational modes, also the infrared intensities of the modes are calculated for an :class:`~ase.Atoms` object. .. autoclass:: ase.vibrations.Infrared :members: ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/visualize/000077500000000000000000000000001316323560300233175ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/visualize/matplotlib_plot_atoms.py000066400000000000000000000031111316323560300302750ustar00rootroot00000000000000# creates: matplotlib_plot_atoms1.png, matplotlib_plot_atoms2.png, matplotlib_plot_atoms3.png import matplotlib.pyplot as plt import matplotlib.image as mpimg from ase.visualize.plot import plot_atoms from ase.lattice.cubic import FaceCenteredCubic from ase.spacegroup import crystal slab = FaceCenteredCubic('Au', size=(2, 2, 2)) fig, ax = plt.subplots() plot_atoms(slab, ax, radii=0.3, rotation=('90x,45y,0z')) fig.savefig('matplotlib_plot_atoms1.png') slab = FaceCenteredCubic('Au', size=(2, 2, 2)) fig, axarr = plt.subplots(1, 4, figsize=(15, 5)) plot_atoms(slab, axarr[0], radii=0.3, rotation=('0x,0y,0z')) plot_atoms(slab, axarr[1], scale=0.7, offset=(3, 4), radii=0.3, rotation=('0x,0y,0z')) plot_atoms(slab, axarr[2], radii=0.3, rotation=('45x,45y,0z')) plot_atoms(slab, axarr[3], radii=0.3, rotation=('0x,0y,0z')) axarr[0].set_title('No rotation') axarr[1].set_xlabel(r'X-axis, [$\mathrm{\AA}$]') axarr[1].set_ylabel(r'Y-axis, [$\mathrm{\AA}$]') axarr[2].set_axis_off() axarr[3].set_xlim(2, 6) axarr[3].set_ylim(2, 6) fig.savefig('matplotlib_plot_atoms2.png') stem_image = mpimg.imread('stem_image.jpg') atom_pos = [(0.0, 0.0, 0.0), (0.5, 0.5, 0.5), (0.5, 0.5, 0.0)] srtio3 = crystal(['Sr','Ti','O'], atom_pos, spacegroup=221, cellpar=3.905, size=(3, 3, 3)) fig, ax = plt.subplots() ax.imshow(stem_image, cmap='gray') plot_atoms(srtio3, ax, radii=0.3, scale=6.3, offset=(47, 54), rotation=('90x,45y,56z')) ax.set_xlim(0, stem_image.shape[0]) ax.set_ylim(0, stem_image.shape[1]) ax.set_axis_off() fig.tight_layout() fig.savefig('matplotlib_plot_atoms3.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/visualize/mlab_options.py000066400000000000000000000002341316323560300263560ustar00rootroot00000000000000# creates: mlab_options.txt import subprocess subprocess.check_call('python -m ase.visualize.mlab -h > mlab_options.txt', shell=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/visualize/stem_image.jpg000066400000000000000000000576021316323560300261450ustar00rootroot00000000000000ÿØÿàJFIFHHÿÛC     ÿ ÿÄÿÚ…RþÇÏ©FRè-‘ïÇxA¶Gx;CE­ðlÅ’ € zÛ±MÒÓS§ïMKÊ—` Uî* •ÙÏ >©NöÆ(ñÖR’V})ïÝG¤Sx K®áWOé8ù3:ÔÇj:n4ôÇ’\öí ½ËÔ´z2´rÉ&Rz|˜«Õ5&¨Z…'‚´­¥ä±›n§`•Ùeü޳£Žnؼ½M, 8@Šêº×? ™w^RÇs:ä4Tõ@3rWZÎÛÌ81«„<;}"@½S12h–¹{KSÅxAÈ×)êÈã""m’\A¯¢f—UÑ9ªƒøÕCþÕRʼH·ÂZØ!íO&fë3嶘˜âÖèFš„G3³œˆuc¬ÄuÎ QÓ?ÁE#+ØàfHi„Ì©˜Æ”Í×w>#ÓL™óíMšµ‘na†·0‹¼œû“½;¤&¶ÔãCج^}øfªÀt7¿CuN°åN\±‹IXÁ6!Cø“62m<‘øº ’îЈ0Ëäf¼;/ØËnù‘²ÊVÞS #2RmÊ^Ùþ)ô×G€Þ¥ C•« Äåë‚Ûr‚úŠüÝ­Àl¹üðyå²ò]TE} p‹ @>¥5Nx¦ŽÇ¾%´®Ü&_¡H4ò)K”f½Þ!ª¥El‰³åžô2Ž äÙ?µÂtZº‹>v{MžÔ§å+t¦¢á\šñçRž‹Ó@OYm> ‘û ¶,zMrHÝUŽb³Ax±W<÷Ñõº'ý_Å0ø¼!$ñô4g÷бÅ3–©¹3ƒÛc dÆgYøÂ”yGMô™ñZ³3:ç¯ÅõÚL–ŒÈ°ŠóD‘ƒpªÀ~š«>p.Øñ%Ké !`[šm¿IÔõz#Ε¡óÏ™%.Œ|eïåÅ#9²¦/5;Kø› Çû¡Çt™o—¾ð–Qös˜Õ;‡žÓÌ ~z†ý¸Ñ<þUÿÏÇÛØáÌ´ÕÛ&îJœË]bYm:h!…µ=mû°TÚðÉö%à+õáÈi¿RÒnEW)’1ÞöåY·÷¡% ÿ^…‚'r‰¯¸S$ªµs3¥h¤õÆõ¶j«1:|sð¥B1ÜÓ”Û+®¥5EЀ-(£ÁØRÀç­GÜ*žxÖäÿ!D1+\.)x•'nô<!oCyä+]Š’á$y >¤’VQ¢œ›cluŽì4÷,m®M¥¬œó£ø…Œõ¤1˜&S%_ ûœžüú}Áž Ñ@þ²×gȆo0Ð&ý ç,Lص:qG>·<«õZP¬ý ‹a’tvj‰œ`gšf%.:Ý)ÔB”ZêÍ‹ Úi v{K=Ù—DuÙífnÛ\”*4/n¾Æ™ë2ÔêKéFÇòžŸr”ËŽeùQù’vÓmlê°Èš±Rʼ«cZ­hZYUÂ÷Cû‘³5’‹¾Ó¤0 ™S§»=W!èHZãʆ÷)U±v@R»IzOCü´+ÎHÓ¿ÿÄ#$%#ÿÚÊ¥ð²y­º,f] ÏÚа_´\ǦR/P8¾ôuI¤@Bï|ßñ†wb$R°ÁbbÚsf‰äm“°²[d¿d¹Å©îÌ6­uza'Ý>1k|þa?Ö^ÀñÂkkC3¡æ]su•ÆÁ„æŽLóÇÞ9šIÎ_£¯¯Xt߸„@jM4A.­me–9À‚Y:åøçþ±¸IÿS9àÆ zœs½o•ú»« <Ñ)ôÞÑ_ÿwæàóº·ñ™rÍïØÈ¿ßûÈûQQ2x÷)þ–ÔÿÒz3l …pEò»¿ÔÂ>m²ŽÒ€ 𤳌ïGAMT1ù ÊÛ–Ò³¿ 2VìkÞsQX³d )—ÉæçsŵóÞ ¬*T b@‰ýÒ á6÷BJ Ôæ<Ü8h>ÔÌ6­ZÕ¯‘ý"\Ö4‚OãjÛú®dÕ!Ng*#3°üÐÓ&›bZ%d¯ÁÌo1Ùÿ¤]ôÇ$™„x‡CÈ Òì0üæH]TMÔø3Ï»Ñtã°·…/Ù7Ÿ-Æ¢.}®·¡ýR…!1Ì«swV‹ð3Kæã"Ž¦Ð³ü;ÒÒSÊ2þrbŽÇC°ì¿úæã¡ïôZšœôÓoÑèz99¹¾2ßJ‚Ñ|c£ÛYú·é9XØ£«8Ó÷ÿ["ó¾o›5Úd|ùëRýM/’¹\xšŸ›™ˆJ®ûDˆcfßü>7fÒýæ–·¯ÞG3^›PÚ÷ýÖÚC7ÍŸÀZ^ÅèZè²ÙÇ@bØçsç?'óžÁoÐûþû0½¯æSnÙ-A AþÙqüÝÔ¶_x–4´ÃýþÆYiIõšCT‰º§™,ÚbŒe檿e¬*ðöÉâÊ#Ç«+}'e¦’`&!¡CÛúhyç­Õþ¢vH¼öècÊZ.‡ ‡ùËmduÕQÀã¾·è$—ç>D€Ê¾ŸêÕ/‹K&vRwoßÿ¡©ˆýlÖ C”[Åù éÍshùý"èÎóÕHMr3ÆsôùZ1™è¶ïŸFÿ×'…hãç\z×µ<5÷@æÖikf#oÐÝ/S6E95µ7}’þo2Ã^ŠÈ Ë»ÁUë“þ_svõ5q;Úg,¶¶œ?Îjû+z ìÿ´|4h›¢h8וÌlãš;€ˆVöÓùUÓÖ%Î1#Î[ 7Kh6Ëe±ðq G; '°ñ5TˆI×ô¹%e§¨82Î H’$l¥²ŠÒqÿX}„ëŸku`vq›'»Ÿ µ=‘ÿ›êï…ðúñte`ÜsŽ/ýeœ‚slkñ î9‡ÕD}/òè˜Û›Ì]-òcèâMZšŽÐõIž§CÉ Ý0Éꎡ+üíôdItKpÚùâ[kÞr~?§¦Ò3†kækßà!5ʪ=éZƒ±kt·” óUieµîôŸý‰«LQ~ZwLOtö¿â6+yy‹¼ß¿ÐŠþÕ)ù?Ëøk ~~Ý Í:^íz>sñÙ³XSÊÁPçIg3¥ùÞ–šþùŠG'ÁòætQYßw"cÊgwÌræ÷1Bªa«OéonŽGËâk¨¢E²EÏ¢–ÆÎFaDÓœ>…wBä‰nÏܤù6BH›º$jV`žËú¦ÅÓ"¶B<óô7ê%ö—DJè Bg­»ãþŒÅ)çte¹Ëƒ’>–¯¬0±ö}b…‰6ÖY ”wýI}ë2ô†ÿm?È¡L¾@éò©;ø¡moËr±¶Ug’‡±UñzZ«eBW)w™dgÊ·Sóïœæ3\,\ë5«jŸÀy¯5/Žñı[0IeýS$áìúÿŽó ‹ ÄÑQcG4…ýoò˜™z<…K¿¶$ŸléžwX¥t £éÈ2Jç‰_ ™ˆmtv0æÑ|Ú\ÆêhE½-l·°¶]üW‘#—ôÅòóßk"1Î9=ÿ‰Å^jê$o»|ðšŸVYß)œ”:y W`ŠbJö%Ô7¶Ov¨”ñÀÑ;=´ƒnÉ&ª|/žsnÙëµU_|/Ý'œýΩÿ<çIõðîÇ;£+  ò7Î’§÷2§»15ÌmpDéñ=k´tÁÐÎÛÞùïQÂ=>B»û3ƒª?#É ³ÒÙNR7¦è'+$é_ -|¤qºNKsçnùhgé÷ÂrÜè©æ¡EÏ5B±j|\Zð’¹Q»?V<‚zê©ƈ_ùXú/%|¤}4XëéãUå%lôŸåw6OOW¶KW› ¹ÑBº)3¨1?oNG8z—½x1?Ü^[Úþ ó¦¿[ô>»÷S¹/Ò\µMGI/þÄŽæbÑ&²õÓôIáƒaÏHyÅ ]Õ$ù†!\ˆ¢3ÔëXLnçt &_§f´°ÄóÎÄÅYh¦ç£ûCTsˆ%£Ôž¢š<$(>Òßón×HKÆ öKæ¨3myŽ’Ù+‘|“fW™óøäô¾Åó¢¥§Ž—„cÒó™Qi=Oç®”ÿFCå GrÙ±î±ëÞÅŸçŒôCž´ÃÝ9}þ}\º#=P”•éoÌémç!('ùÒl1ØfÉj|À}ûy¸)¶ƒôó·jn¯ÄÖ×¥0¯æîîæéÖ4áf+£™îQe&ùÓiO×¥ÜTÿµš|ÚÓ'G­ Ÿõþ¹É?ªÅx«ó~Ñé4úßë^¥ óš¬kæ9Ò9Ž} )ïCS8?”ŒÞ3ϾÄAU–¥[Õ™Û…¦1ÅÞt„äÃ<–Ήš`Ö=NG¾0ìå– zеKR¤ëV•RrÞu,{‚¬VuÏFûËl`ŒRõM8*M›‰ãß+lPÜw¦=¿”š$.xM/ª_„õ›g¯æ/Ú0=¢¹4Æÿ kŠ%…TFÕmH5뾎V–(餼g«—ívþfÌþF®¸ˆå’¹þÁ©·~sJ` õ¬( Éϯ&èþqë/ŸzÆ‚ƒ^S#~-ï1=M+z§ð:WËCÕÓ'ß:?–íRe†?GâKkÒŽ28ˆÏ@EôνsØŠ¶¬ÆM)¬t§ø~sOJ莖™.w3ŸöÇÅ¥+lº:Oö‡3íITQ‹ÑÕðÅE7¾szÐ"ÿ<ÐÚ£ÿÒ»æˆSÒÈMv™ØþËæa*¼ßlœ:ð;«©±~£ÙÚɤ‡ÏÏP#þ“Ÿèéöº¹Åãïë_9¨£ÿ}D‘Étï.I¤Þº~ƒU|û ö#ÏmµbZÄBôÕôñ•Þ¶Oùÿr8%/ÐÓÑšKÂ;¿Äþ?UèWªŒ"?êrÿ‰šuÕö;Oﬞ©yžçQTSôK¢ [ó•”?aDbß”ˆos7Dσޮ¦sǶM|æ@’»WK³ëwâÈkžº"‰8>²Vxð"—½.TYÃkÒÈGTŠ÷08ú{¢ÎÕ!Éá"DýbêH¢³vß •Ìû_*¨(Œtu¼wàY)>+ÊzÊÑȼ/Ñû]·óÎSßñ4Š µÉã8Ñ_ùÿ3è~eµœÍ-àÃÎêíxÌzf\3]€“ø WÙ‘™®Œ‹‰aØcåU…‡º³:‘3¯¶ Ôù¶qÛ½6ìߥ™Ìøòólþ}5ÓÒÚ.ŒoÿÑ~O8ÂYÓd??âcC§Âó*ºBž`vö½‘™„ßH Gqò}詺>$§å3w¡ ç•¢hÊJÝ"Üëí`âñâïa‘¦³ÌlSOØÖÎÌvos'¤Jý"|Âû–KžÌÓŒíÿ“јs—Sé½W.oÒÿï=^mxÃc£Þ€o}ô¼ÜÕ5 A‚Å+Þ¶¿žïí繼׫ƒŸjíŸÒÈŽ_u/•ñôÑ8bný?\*º!¶>?ìZ}ÇÅw´ÁÕ÷mï|ŸÐÒ ºÎ¿¥5‰G^òÿŸ¶ª€räJ÷lÝMiAÏPÏÔÀ´ÆùÙ:hö‚…/LÓ‹}ìœç=ýú LCr§DZkýdÿQ9ñ¶¾+y‹– Sà…½~{?Ÿ3¤üÍô6ùÓHRóž(¤Î¯Ä•´ÎØfZdpÌÆüœ‹¬óÉtÙO%R÷S¿Š}VYšv ÷Ëí?ŠÿøŽôÝ&_S-ìêÚæ X®|ʤ÷ÞFRÅZå,Me—öÿÅS'Ù {•B稦}¡òzš)ÏÎ(¼rôDWÖýÑÉ_½Ë°T˜¡ºRìe¿÷——ú,ô ®_+bÖ}ÉyˆY«í%Î7^ïµp?}É9þ[5×Ñϳf¦©í]û²ÍãðÜðSÄOk7ý¦G;>µÆø$vsPô0÷“}I©#öŒ±‚RÜè›ñŠÁU$Ð1ç†Wmê_°×Ä´¿?èA™ŸÞj/ŒÎöºQ[SÉ­ó‘pµKñÝ­pÕð$‰é'Àæ¯R]òTõD÷é½çD Èõ›åfHùæ&FôLLX~×RtÑaÏõÃÒˆd7_¢ÍŒ¦§¤¿ñ𩉰¥¦~rªˆ õï‡ò™ ¼ÏѼã[êªe74öÝø9ûó|Ê)šÞªÑMª?LŸng$8Œ] vǾ»äT}ÓV¦¨ŒÓtFóÂãg×5;ïk¨š”pŸ¢;Øõîù)Y|݆Ã}ÇøÖIÊsâ¦:¦èVÝO=}%½±¶|Ï0]âF–š Ïúñ­9óî„\iee1HÂ60JšF„z›YYx¬lÅ L’#ÿ†zM®šøº}ü$âÞnV~î”ÃPÞØ1ìíïÎ^@}͇¿‰Æ«3@>Nß»‰?žzäžÝIOÅ'“F 0j÷ʆêtw==ÏÄ hOÜùù> }ôAÌw/¦Im»òr_ÀíëëíP) Úsç4¢ßakó4 MQ ç%âé°¢?êÛcÜËßÎ_Õ@¥ú~ßXÓ^«7C$á¢8ôlìgÿ[käôõ†`ˆÍ²øM‹ÖõÏ'ÿÙÓ‰D-¢ïÝ/é‰ÉÏË u‚ZVÉp¬ç Š=Aå?½}“9=T #t5}wa÷Fй-i®-Ë44Ã*û§uï)µð½ç"ã„ÉÀ R'üÙ#Žª ¾Qiú¯êp?‰ž‰å¿ˆuMçÌÊ-/‘% fz¦Cæ±Päó1ŠÈù¹ÂÎÌ,ϵ Øÿ ÛùΠ²ëR§ô6Ãû§‘F(ÉÑV%%’h¿óßB²úŸ&«eÂ4tFHHžÏó^1öIë2TÝ"fo㞟M†%¢h¨Í%/’…™õWòê™>þåd‘Üó& ¶;;`ØgDØb“yäZhººžiÁ³¦~bIqóžu%¦\¦Oì4תMØ » %„Éò?^Ì”=6H $óòµHö"®ô›ib¬“›…åbº€`³fï´Ÿ}óqyÓ~˜,]¯ªZ_ÒkhqÚiDÜ ]ZúL§›k^r›ðTZZÕÖØœ½²òž¡ï¶@´Ò³¯ ŒíV'üïç1^²úCû‰’'(•ô„œÌc¦¤"€/ý/´q1Í/GG0Þ)òËÞEnµ’ÒÀÂO²D,0Úü“Ú¡º;D{ٳψS§ô¾ÏùiͼÄÐærg.§_ £Hä#Ó„jn$ÝWÙ1¢“ì(”þ XŠÿAÓ~š:Ù>Ù±÷KÈìæ3]uïÐø"“ý«Ïí€òî†^û ߨÂäÙ¶{úùªËÍKOïm?±ŸžG =`ûoäÔ½`¯FU8ÌßÖŒDGëg˜ñþîUòúCJKô Ï9ä­µÐót_~è²õWä–:bu~jGúc¥ô)kVÊÈ}žck˜‹ûeœNiª¦ .· &4¶©þkuªî¯£Hßz0Çùêô˜[ íâ ‰vSLjÏêt–+l¯12²zR±+ê½þ7¿ÑØ…/N‘¤óÔz¯Xœo·ÝŇº9_ÜÂw§èÿTÿOºl"8/ +]e¯ÓÐ?Þ÷ÓPú]þ5ð(zŠÅ*µD_³Öüœ¿ÐtÒZ#77“·òšÓ]Mtß‹D÷–›ýLtÂ^6{mçèߺä# ß—} Fß³ªxÿ;ðœ¿:* 8æ"1NŸµ4 õþÑåFi¿·ˆþÒ6ßÜÐì¥/%OÅÿ¥Û&”¯ön/ä¼ÿÄ0!1A"Qa2q#B‘$bRr3¡±ÿÚ?op¹!-æb¢åM® ¦Bà͈¼ú‹€¾0Ó+vµ£Ô±Öc½âüª‡·ÀZ÷ŒË­õÖ ~tJ§¶ŒÆÖÞ6–Æ)¨@1Q4 nüvˆ kbš"Ö˜½ÃPa?\da©ñÆž%ˆ¸âuñì0¥oþœG4ö&b×cï‰Ô}¸MûžÞ# m¥ø‰òLŽö1©-?[ÁP[]â)]/°¨ȇã(Òd6‚“ {—Ï)Ò¶+êmqêmamÌÖÌÊ`ÐKk L±´eÑÙa©öÅO3®,91ÓBv†¢í6‹òhh2àÀ›E©U»Lúd[û™m1KÞ+W>à§KC ÂSYÐaÛ.«¤µ^Ý-s?Læ'M¿‰Sù×a{sG[E$wMˆjŒjj2Q¥áª»™ƒàAò¥›Äjã:_X©×ÌJÙƒê€Ò÷Ö i…·óƒø tí3!r&†{ŠŸ0b¸c<ƒæ5E°·˜z‰¦tþÓû` ¨0üƒ¢LZžFÆÀù„üƒj–àGZy™qo 3¨ì°©¯Û¶â%Q¦Q++]½NÔLÅàZ½«äÁR‘¼±™ÐKVÒvwØË'«ïhŚё5 Úe±õïs v|M£S¦/c E:ïkcÊÈFøà_‰šß_1Qî"|–nßQ¾8]5þ&cx‚‘=QÌ4ï¤,œÁ×=°}5‹ Ó†­5>íÕYRñOÆÔ 'IçSöù…¾SFñ/Ýc¥f¤e¤Nó-Üó}uK÷ˆÔÐXm OºüL[A ©v掶Ûƨ¼¢¡þâ>yáøÚ…Úd5Š*v0[¾ z­¦Å…áfÒYŒê!ÓñÔÛh~œŒx˜¶³©le«|­S²ÌNð3iO•[s;F——Ý öŽbµ3ßhi§!¹ˆ+µ‡ˆµ(}ÄF¥ûa+Í ZöUòfT.f tþ¡ëŸQÓã÷.æÇÄ×hÕ*½›ÉEAÇÌ5îñ0>gÔUlZ×´j4€<^HÀùK·˜H"Ð&ñjT=±hRöÖ–óMà5Ž‹øâõa~Ù’^‘oêó?Û:m:Ãc-ò%þ6Àó7½ö¼ÁÖÞѺ6Ä'¹s´%¯˜ÒŸl,w0hjˆi~Ó*T·tE} zm“x#km A‚’¦%Fðëqx-½ÀÕ¿iÚ)¢¸Û™´êãÛngë÷ž&×äE4GxG¨p=ƒ‹@qˆ_AîaêÚX5…öiv‹ÔÕo¨€Ò@*ÛxFfÆ»Ì}‡+|DŽLî'Qo¯ü‘§ƒÓvþ!Vl¿1[kÂß \´„|nÁøÍ™÷.tª×^ûGOŽp[é 7¿˜'\ /ncS¤p÷î<ÄWûbWUïÇ ¬"š‹hiRÅl7›·÷Ôómp¾`BŒ|BŒæè'êüËÓ/úÌ s«oz˜Ù¥Ìf¥u´’1Y£+ .Fæ¯àËr`.t€ *[‰Š9þa<ÁÔ9D–Ïmíz‡À™ä|Å6@>8À©³1_;Ÿâe_¸z'EÚãܾ·1x–ßó>¥‘±Œ,/ Eí;γi m´cO´ V7‰Tíâ+O#kCcˆõ1Þ!¨mi‚Ò^¥¾á>ïâ_Ì÷[Ü^‚(6š¹…ÂÁÖÖ[â¨Aɇ&¸™]ƒüeéþ%ª9cZÂ7Ô&O*/Ç8S¾“¿ºAµíüF¨Èí6î¼_o}õ‡ã¥­âuÚñi•Ê#¸Æúë>žž"Þ¡ï"ð\ Ì[˜QW¡³i2<øƒ+82ôÀ˜iõ.<^u¿h„2ƒÿ¨ÏLØ!0T: 㫨'hÌŽT_ˆ’äÀö B¥7žeé³¾÷mx¬Êf4ÀêyíPØñ/ÉßX:ƒo´^ŠØùYŽd§ý`éýâtj>Kµ¥ÇÛ;Á+Hìeœê9i:ÌwüÅ¨çø —kncY·–°›_Ì ”¶ןqmfŸ“¨·˜½a-È–;LÕ0õ¬ßúŸã.#Ô±kÞ-[ ê›Ì±¹ÖõÇãöq ±Š¤^'Èqf´jÞËkL÷‹M®V-cpLj Ã(. üKã·Èi7${0³ ¡û‚Öñ0țγS:B-¨ó2RD ‘±n!SkíµüECÞ ®Pë "7´gÈêxŠ“xŠî¸ˆh…Vm¯^ú˜ 03óskm2çÔ}¾'èýÞL4Y®&W;ø—«{OÑÓÕbúq4¿æu*ëa¢q#Ä Mϸ3®âÆ×´+Lã ùñù‰\‚ jï½ñk£‘æ5µí¼'S¬ çÌV?ÿ øé¿‘ \ïÿÛˆª¨y­È‡é@QêaQ²ÑÏÉÄé}c¯Æíâ]Û/ÌÇXÕ+¢d1’ƒØm&Ln|ÅBº^ 祣Q¦l·àÌõÖ%:€ìÄ®¸ÿÎŽ]ž&J€VÀE¯Ž?™mO©E‡ )¶Ë9ñž °Þ6?pÐk3fÚ9k:ͦ›ÌRÙ #TÚñT’ÄÄù'ó,ÝÐd¦ÒÌV¯e'hqüÁž×‰Ó·R`Ëâ3oª,"t7á¤Ïuñ.·ó-\vá?ãø&b|@q—­kq¢lG‰Þ×›L5«ÚàB”_êÈ·æÌúŠ›Æ§M€#¸Þ-;E¬ÚÔö‘Ä,4¾ð&÷ós>Ÿˆ½aÚ<Ê}KÌl|̆ð}HÐyŸãM?l³9oPºƒ/òUM¹hããYS‚°fÅÿ2ø›y…«¨&ÒªÑl'uËEéyÔjcª+MŠ-ö™^ñNbÕ@ ˆÔшCÄ-¼Tª9Ú+SQŸ6 ý†d±V²iî^yÓwÒyõ ùÖŽ‡È„¾¤K}ºÂÔt_P#6¾ BvóTÄ·ˆÆ‹¾ Ru;)Äó6\üFÁŠFrLEÓÜT¤«LV±Q ±ókÅë© þÚ@>:Óþ!LÉ!¨°ßIúú/7Ÿâ‹[ÄéTr‰Ô ajÊ,p±ÓJÅÏ Å ê3Õ±{iQ~›K±,Ó@laªàf˜R“€!o»"Œ[_PV 2äΞ7üÄjšÑLXÍàÒäËÖÛ‰… ¹Í¿2ꤑX€«æ§UQµÄ ±Öf©§¡?[æBʾbúÌñÓÈÕ*{v2§G±/ûa rõ™{}ÃF`#ªVöšjbS¹p)õ­¼À;/þLÈwk=ö1ˆRüÚ½ÖûKjܬSATÒ-uðgên°*l6–Èþ!{ÙgãþÓ:vü cÈÆë@eàëâ·‚™1*2<ǧeg"ÚÆ!¬=@°5E*ž`¤YçkÛ¾ðu†0S¢J7˜f@—Aq~£q£`ƒ0j„ƒ¤Ì)"‘ cBÁ=AMÞãÌZN'˜M{m±‡£Ø·ÒÒÅC2*q0Ô¹ÈËØïz‰øHq oº z›ÅªëŒoptŒÓ \žeÝl}ÁI³cðYr> 5{G†Š)Øȇ»C2À‘ê~©Á™QÄ/úË3oî ʺy1–®7ŒÔNž  ©‹P©c‡¶væ9C§©±fˆ\1(ZЊdư2oQ3×X˜â_ÔEquüíô˘h_´A{Îå¼·Ù˜Èz€#T íy¶¾áaν­mv….·Ü5¯æ$ÁòZ›üFE"çMc2˜)›˜µHÌjø…æ*…'ñXb=Å¥Oˤµå‚–i’ÄÁÑÄ[À–¹´5ä¾ jÊm·tý[ýf¦ž!ZZ[™w|ÌçXÕ]r·&2ÑsO^ Ë,ÌÜN» üÆJ,Œßwâµï« C@>¶Œû_‘•-}â,4:œBuÔÂ>è2Ýx1P0p!mwŸüïÍåï†1q`O©osªVóRª}ÆÁ†¥®O©Õ ÛÌeºÞÜÊ…—âÔ˜¯R—ÜËî1Tè/ÌZ«NŸSÌjB§mÿl÷¡…‡¸•)…¿6†ŸZè6•îÿÌU¨·óx½5±˜bŸråAçX˜ DÕË[iΰÕÇXʧ&dÀ·0V4ïìF¦*bÛCS+ëI½ÌJíOCÌè+2%®L΢»ßÌúzl/760-‹™z©†³§I‡hñV[%÷h: ºÖ53Pþ/2T6—®,ýÐôjmÿYfr2æö¼j•tӘ؛xƒRçÜ[‹^ÕqÊÚq‘^Úñ3È–0 M¢»cyR’1^.sê*XßÜW"Ç™ÑZ–´¸ÈÞcm?Ú €Søb4Úen¶¼»Z(V&ÚNa¨RçûÝŒ<@è×üA|¿™PRnÛñ,ÇX’ÀóªÈZÛ_XËOEƒ“;Ô¯æd,jZ2²Î »R˜q§û• €ý³¥™À@¼Q[Aî)Eò³úx©¤ýk[ÜnŸíÚÆ[=`í—¨» ÷B Ø©â[8ó w¶ƒiQÛÜÎ÷æû ùD.Ò¦Àj^æ*‘¹´§Y­k_YÿÄ&!1AQaq‘¡Áá±ðÑñÿÚ?!¸‚j+lÇŸûx ø…d!èny(k‘ SÙ`v¥<,{cÒýÇžÕê\P²t· “4͔㠿7nû uöúÛœ†ùÒ×ݸÜ×*PÎF¦3ümEy¨…ávyÚ~0â ª's`cðo•.˜¥½–õ¯!ÒGÔ{ëÄñdÿO³0Z©PSTN¤=E Á)Ü~A/æVeÀNˆî_˜‰ô”ø wÄ»ÐÞ'q9_ îMÕAU†Û‹ʰ­ŠG‹¨¶•±Ms"„£F5˜nĵ¢ŽÊ×+v.ùe’ou²º¶Ã³åúÒ< 7qH[nr×ãXà ×[Qd¨ð©b ½Ö4OéüË–-oÄbËÒx@{‰ƒ?˜ ÛâšÕXK|©úXþÆ_Q¯ît² L!ÿW"~IvðÂ@|Í\îåuk›…+3%.AOôDxÛsB‡o‰K©ÅÁÄy§±ƒØëß®Ï[D€!B—ìr[ˆ%z‘ÙGK᪃G–EìõÞJ‚é亽ü^ÆV ì ¥g±™eÄY`}mF2q# ¤8«oà„}Ò!…þ P”Šã•±mNd£L,n —WþJ] ¿±ü ÿ˜±+ö~\ÛîUTªéH¾˜y:3‹%úÿTz‡³óÑ%',’ÙME¢ <‹QH,´aö7oúŒ¹“ÔÐi«9-#ÐE©ê/È¿UMãäÙ^â3÷ õ8PüKNÜVÏê6€êñ9.û%”+?p—­Õp†[Äç ÁöWƒ¶*¬.­¹¿?©ŒWÎÅ:ªžOæÀ†K†)•ÐeÀþº}›J˳ Žß‘ß/?STú1fFÖÅBz¾@—‰±ð"æ ˜–Ê|ŠøÐú’ú¢¥8мðù/{tâ?¼`¢ž.#^êìXjýFСÛ<ÏfÏǰW ̹íþì±Óf¸“—ލdCpëÿäe†Œv°µÿ‹âÈ÷xß±ö»ãȽÃZ›$¹q x¬rXRüZ¦àÄb7¿ÏÉeÜ%o3èÈ~jW ¾J‚_ع[§Å°Rkäe¯SóòG?ˆrï_‰ie’P°é5+Wìøÿ%¡‘yÕ_±Ø®Â‚ª&ÛüÔµ Д^>KÃÉgæbÑ$úfÕÙ¤ûÐ÷HÊ·ð•ðO[Ž™D«hÛäeºóc ²Bž?k5>MÁÑû6L[ìϳýTs:…Œjè5ŒV}¯ìMe>WûTÞ°'ðÔ´o%ÕŒ®½O°D0B„øÌ(ô—nU^ä°82X«©‹kÇ_©b°7ŸbƒCeñà/#´ë©?¢Sø/ñ›’iò:[}›L½ò~½ %6¬ö!i_¸XusužzpZ*ü;+Wþ§g{Ñʸ1Ãá?„¬€Å‰šSaZd%I•òrï £òúFBþB¡°·{5´ä:×eº§jádnÁYß²éì*hXĶlçá{,EdüOÏ$©ñ¾å.ø¡²¼jò(¹uúTA£Û‚ëÛÖÅýFE˜A8züÎòŒ³³À†4wÇÙÐŽƒäv@îüÄÁ®Èkùéþá ‹ìF5•sk<"õƨ Þl;ÀÿÍ–dÚÔªd¹y&X¯Ä ÙßÚ[Ó#¡K•/àUK/²ì©ô—ªu·äÎéÙrd覘vY g>Ì€¥Š”6FÜXj›R™i÷±{S£ s3RoßÒãÅDJÙpô‡†ü…´+IF+zÒ è6â\ÜWŸÊ.[´”ÿÿÞDíÂùØ „•Þ¶´ÔicÕ¦£kkäµ™c_™B ‘þP½" ’ëÆúAä ?ŸŸøƒüáÈìëØ «¤_£¦ÈQ ‚N…˦¨—ä(h•É% ’…Dm‰›Iü#ˆßæeûRêÁñˆÆ½7‡°MyÙ¤¡n÷î8äääeªj?ªìdN”yØü_e£À þê"·fC ¿æ]Aa.õ#¿y±‰Øl… š…CÕÝö “UFTq]V ࿈À;ê3]”õø"ÑéGà„QFªU¾  îF˜@ƒw™P¿b@ì/ØŒ¢c\90}5Ó]–œ¹wY/V±½+&ŒTDŒ¥¬+ëðá ·Œ7ÉÀ‹~t7ùŸ ‘ŒCáù>/.QAÛ'OP£i·“·åK_Ö\ÿ’rSo²Tr³…>CöŠ"$v²jéÙÂÄq}ˆmbÃÍ«(ý—°’ÀÓYlBµÜ/ÙA+jíÞK…EeòW‡X”IID¬=«ÞËZµ@ÞÏG´ÅüªXe_ñ ;ºŽKÚeDK‹ä9òZî-¸û—·¹¤Õ\%º‹º—àŒÀ_´ô&üá"Jµû#&—8ªÄ»«ä]üŠág³JSÓ ›Áñ4UÝQ4Qÿ¤ ¸Þ¢+Øàmv(½éÈË|Ûœ8ür*Còr= .ȃBÏm´~”*±ðŒÇ¯bC*Ú°îà°y-¸ýœŒUOm×–·Ü:çû¸e1諼^RËö;,­J°_æ»*rþGÇÒ>ç÷àp° XVÜ¥Í-ù‹Ê1ayéXé]‰tÀácÊ¡2‹®A ®Ÿ&ÞwoÉHóíåÆj¤÷·+@¶?ÁƒßÜ÷ëEÍ£}YU,„4nô–¥CÄ-¢]#¤èÍߌæ‘~H7½V‚vs6}²¼drc"mC †PÞ„ 3‹mËÆâ¿ðYUmô€pMq¯Ð^@BÅt|ßzœú®¢K°Õ¥>´¬ðú0Ziܬ`-—B™Cõª:Áõ•ä(#«TñÈ!­?ei»‚Ù¤Ö¨|ŸÝ!:½;>ëòi –ÂW<#l&¨Â”ÌÕÂ'C|mDÂUѨ–Z—=4å\}Ý€–üÿ2£¼ˆáCåÅV}½‰v7Ž2àÉ™×bGÿ2€·ôAù{,éø„Ý—â'Côæ­y½‹Eû¦RDß9nذ±´‚mô¥^Àóþäæ,Èš@~9£Ç®x“w£,µ: á(Êÿ3†íæ ±‰{>À`ã-víC2Ó¿‰ÜÇ#Õmc`.ÙYm¡Œò™¥¦Õ²Y=´·1ÊÅÜ^ˆMj:1ý©‹y8[u•\>ÜUaEËzäíç÷8âD›À«c!z‹| ý‚Zºˆ l+C±ZÖàSU¯©s«€mUdƒÿà–n=µÆõžcÕU¬råuk9z`±cæNI[{1[ãïãÿÔJþ8rêÒ‹²kÁþ úÌûèUà'„0còî{qŠÔa­ÇW_©áÇÄ´ ãb‹|¬äÎ!>›cXø-ûŸÜ£0à5‚YLAšðC#V]Ô¡W-ÁåÏ(úÁá T+ø² Gk+ö€£oH«5U%J#MÑ^òêPUtÕ9Ù̸˜å{/&9ó·ô{ÿ *ÑA[—X>5ko… ~¥ø€wvöÌ"ÁÆL.¾bhû} Œ–\Á¥ÿÑ)å>îê[Ãi4ÿ©²¼cùŽ1E•V]Ù/†‘wo òU•è—M¿YY~Â%¥¾Ôå …Ê-þ²®X\%½¢1aöe‚þJ@ÖÍcú1ÅÛ[Š_9~KÐK‘¸|©Ûí¶®б‡]ÙÀ´ ÍxÆy“ô]TÝöÍ–s½eÇ.õQͪüE ¶Z°œ Ö;jó"jiax_Ò&8ÝÐÕœŠÃz•ìaàÒÞB¡ô·ÈT[çF2q:a•S(5‘L ü"i­»w=±Êû^x–œ#m´qÁ³cÄï ÷5Xå<Ÿ”U  Ý*bó -ÿptý L­F€YOàýÊȃ¦W¡u¾¢æÁòªdÜ®o0¯æ„bnR.O!6îÉ{c´vaÖªíS¶|R*äBtèLÊ.qÈÀ]¢.³5ùJÞì׉S(¥jãºt鲡xª‡ÞÞÿ3Ç }q2ñÄà çjÁϨ½RìGO½™ˆ2ôgÊ^SýŸ×ÔŒ~­œÛ ì®ðäw½èÿŠƒÁip3ë© ¸9þ.V9Û˜|䬲ðVj ¨sÖ6ùD£ЙŽB†OØæf¤^§°äÓ’®8cª/è?‰å TѯbxŽZÑ„ÙK©É Öéü›þmò¥0¨”Rp¨+þ¢ ùw +­÷ !ŠÓsbòKmp.3e*( Gv7¬<>JÛMTêúË à9u{4/ºJ‚S·õ¥ÄAü$éרËÄ ¿ø&[ȱ·+c¼ãÖ_]0=óëÈfÙíÜù•SÂ}Ž$º¥ØCÈ´¸B¯'wN2ªG•PSy³ÈíÜz»Ž{ë? ò'’ØPí\Ý¡”;(©B}õ%LšS=‚5ø§Ìñ, ¬m^µÅ5ØÍך­;pÈl•'y͹ ·÷³L¨âAб_ÄÊÁÓBAEVš=kx%tù’|î°cª>~¢Ê´¼uœShÃbþ$„r•fîða ±©í0³²±(h}^Æ´ü®Ÿ÷ªuð:B_«£4¥ÿ•eJhìÚ»³{uUËKKPl†ÚC¿,î^ŒEøBâæ<Lü|*,jy|Š- »Ž"4ßpr©Â@RGvá\}ÇóSé2|—?¸9òsqÑ(ÎÙÆþát­(CRË)BŸ%6ÝŠ~ ×öÆUô0¢ÀU?ÿÚZUD(¹–Üåd2o} Uó‘þ–¦`çüjB5ïRO¸ù\K³¨L¢>Ññ›p2<`Z†¶¿ ûǧh >*ñŠŸ]æ—€:£ÌqáB-Ïö¹$ÊjÆ<§`¡FÂ?GM;þñ˜ Âó~ñJ¡G’œÄ5ƒ0’ÒYF‘ Å×?XÞ‘´=·“[$À>üq€£];pJr\1… ǧœy¹Ê%ÖØ­™’q»ß+þãâñˆèã,?ù<=¦Eß8¤„½¢ø1V Z.ñ_æÄQ9ßXU[mauãÎo@j"×NK¨Tü9|>>r¨ W¾ GxD-@Ÿ?ó„…/¨<ýÜË@˜çËõlÓÁ¥ßœp‹Ø… %ÇõMi4y?¼š§¤Ð~fJM tæãåQpñ‚¢£_'Þ5:_"´{Þ Ç"'Äñ„jTzsó·Cz`ÕIt“'d\ âObR”w9ð»Âe>Üy¹05¨ìÞ½à¹ís¬ù{ox˜ð>Ó&ÑŠ›šïê6{]tø (úP}ã!Xӂ㎠½¢aCzOH¾8p™4Òn÷=L8¤Dêg‹È7¦÷׌$Q±ço›’ˆ¶† õ—ÀÕ¢ãrT(%Ù®œ'¯#¹ß'µÂ…NP©Ó"" èɰ66/3¬#(ÂæjüâfOMÀ•õ‰`Á(/]+5‚Zs blÒºÙʰ€ÕçµÐT­Õ¹ºŠ*OXôÀ C]8ø—i¡—íëe6Ÿ ͎«'91UwÇ,æ3(­µÕøM§ÎXQiÏÈøÀÚyt 9–9¾/<3|ŒZ‘<á ºp0vOxÆ <Â.%€Å 3‚ÝfÒNÝ#®8Ætó§ŽðøºdìòÏŒiºì×/ @+R¸>éå^µßœÙß6 ´8$‹Á«ý˜ˆ©U¾á ½C€i¦4ôágf87OϬ€K6}©Œ"VÜ"ÇGçÆh©’ð8þ³»º*§Ð8(CXÀ‡"!ÌèduÉ?ÚÇÂ’¢ÃëkÝèxBãÑ€<Áݧ“^³¥.ò½u‰†¨_@F÷ßÞ(,lßTÎM ‘SZ÷Æ,1rD7Gï€ØMý㥻K:ês{ÁëÄhåy=O;Ã:-&GÓgï.µWvÏŽ`¶I^¯¬ï,–åfkñìÚx߯TE9ú¹!© ëŽrA%Õ¡»òÁ@À¸ ßY³hZ¡9ýbd#{éôx[‘£JAÂ3¿x~á§Æ&iT$¸Ñ¥àÐó0¸LGJ×ÃβhlaÑù¹/ ›0w¯9ÿ.“þç9úèqj»s…‹a_Êyýclr°)#ãAùÃbÄuÏû“7@Ðjv ëö`xxÌ£ñÞ/‹Fh¯¾uÎtÇx Û½ŽÁ½>¦[ú…BðɃ.BœQ¨ß™é±¯Å󄙈"ïŠ6|ÌãƒQ·M>°b åˆçmœ{ÇM.ÂÞ×Twˆe‚ØTßë8) üÀûý`8«ƒæw…‹Bzr,{—õH=Î^§ó’m£õ…Ä©fW̺Ë&Ôdlx|f¼p ,à#ë÷“òup¿w.E夻UÓf4{¢S½wÆE±ÝHñ¸îniy˜¹¦°w>snQÓ¯¬7°ÜˆRþ˜%w««ÒýÜèI ñû¸úI/)xÂåP;¡YïYl pY½"(xŸ ¹<À¯–ðmPß\eýýsnÊ=s÷€³ZŠïúúÃ@”Dçl† ÖáìßOç)YmôdL V³ŸÞE„î9I–ðxLF ûp•2¬`)¼3µ0$ÝÙ>2þ»4³[v¦œ¾àb…s ð øÇfœàþ³c!µ>xÄ·˜(K2/…T+ÔãXäDâ”?XlLº‘ñúýâµõ_ÇÃÂXK8vž±cSU)üL¤$Iƒ<››È¸R©ÎýccfÀ…˜È¯ ­¥ãz+@_'Y`á§Æ½báL'¾¸ÎoèÛþyÇŠ´b¯ÆiJV¶¾yýdëhÃßÄÉË¥z~rôŸë“‰ ûÒž0Æz5½`ßž½·¤árd‚¤»û·#xàŒG-« á_Î[¤‡©¾²û6zjaÌ^ð8·T©§ó‘± Þêj»¸îÜPéÐ~nqF¡WQñ‚í¨Ã{q[8Pªéñ13}®¡y“ûÈ¢§=ŒY‚袷šÿµŒd«S4ÇÆYlŽFë7©4|94˜¡zÿyÇɧ,œó}àY ÆŽTQ²}†,aFÅÇϬ¦#€0fʆ²xǘk¬ iÎý¸^Îô|¦‡Ÿã.F€zƪ! ÏqŽsRú3þcšBÐpSò…ñ!Ý\9çÔh¢ÌÁ„*;ï€YÆkÍÀR† z¾r¼À§Ñ“ÔF¦î°Ýa5jág@Pû÷úÄ]€ óˆbtSRuææÄL*Õ›ž°•AaÍÄÑ‹áãlí×û¼gÆ–üñS¤±>u‘øŠ7cƒñûÎê@¡÷·ŒÝš„ ¿_¼0|`YÑÏ:ÃÑjŦùŸr´GþpûU Eÿà·Þ}oÚ¶>™wœJÀžl½øÊµl$uóÆ) E$¥;ÂŒ;8nˆ~î;ÒQ¨j¼ip1‰ÉÕë<0‰§.½c&’Çs|ïñ†‹Ð€ßÇwÐtIÁÎsY´¿`¾Ø^›UI¼Lƒ­;iÒ?íá»Áà¾0Y¬¾ñÇ~ƒ'@Ôtv0ãaÔ4§óŽÒ)Ù!¦½d àYêjk7@ÿÔÁî½™ ÙÀï4E©oxøÆ B &›Óyªèu1uâÖ¦Ö:Ò!õ’Ƴd/¾¹~óe»xwxÅ ¾ò^8ïs7ZÖ³ÒŸ8LôÇç 9f%ÛÄÈ×µÑ6G]kˆVµ^5sFj*CX€Ê…GëÎC¹O¼Ê ¦µ8¸D-8g_ƒâh8õ¯ZÅv•-ÆÏ5[5EóŒz õëZ„Z¥¡ˆâ¹ƒWRf©¡¨ÐC€!¯7ƒP”ëAÈoŸÍÉŽ6¡ºd]„Ôï9¼@ÖÀÁÃçŒZò‰Ñ¬M+ ÝÓ£þ¸Ý1‡E ãñ-Õ]ïlMaãŽëד ôs·x"N]éÍ¥QQQ¯¬¸Ðüæ¼t9Ë}þ°¨4¤ìêåä±§0u¸ìçXbb T¬]üâ­ÍS'_ÌÆ¦Ðw·ßë4¼8û[éÀ„V§\®w–àrCËÔÈʃw­¾½d'zä{“ç¼æÜ@/ŒäEÍo„ùÂÔ5ä=x…VcùÄå#w>-BÀ§çÎñˆv–‡c€0 0qã\gÖB4T*UnþrÿJ,îå2ÃNÇx Q ­›þ°óöë^ss®Š]¿]ó›Zv")ߌ,`%hL¦;[`yup¾y¼ã¤šÊ¼šŒƒÂà%; ºêÎîTázA›P8ª  ªq¿Æ c„p|˜ h·Ô3Âz–Cõ–­u·z9ëœ.G §g®úÖÎÿµ•ª6.¿¼[ +Üñ0÷“ÉËßœ~V{8ó–7 BWNo Ž·kÆ2€hÐ/Vuýä“òÞ·0\6 )Ãoä‘GÊä#3ÈÀãínÓÙŽ CÂŒb…:À†›  „çÆ*Üh6O¬$…“]_ÎGA²tpŒQT :`~p l»çž1ãzÎNêh«ëF'àR‚Ô~ñù¤‚ ãàr÷"#yñšÚ¦¯Š'¨eúkªðÁ¬% ŠÕnÏ9^¡}?x\ȓӯõŽ\°²• ÍâRÑ8;~1¦u7Þ³uf”6Pn{Á]ëó†T4JýøÁŸX«ŒªÝœ¿WØ:Ž8ë9 ©ðžOnä0;Ž ?°‡lèÑúÆNTbŸŸ¼aœœóçõ—föutoŒŽÀ€Wÿ×YX¹j‘é0ãTD1žO¼aŸáìãÑûË*´¥¹]Kr_,§°Á‹â68þ#P4—Ö+ {û—¯Þƒ;Y‹èšâ›u2’ï¤=Ç65RmõŽÑJz¸ó#T~ØlœÒ>6Ó¿@W¿,¥'Zñ‚ŠÍ¥ÉËÆ9 H¦ø‹*[oƒ œd ÷·Œ‘›tœIõ‚ ©±Ù§Ïë³5U{Ç 'x~ñ°cæâ!1™éU\<7¬!Û¼¤¥Hìš§›v`‰±-°]Uñ3“.dF /Ψ7Ëyã ƒ ‚ÊsSQõÌÀÙ¬è{Åp@5Ú3XR$ßÍy0ýÓ~¾09lUîsûÍ-17'9T:ÇÆÉ£Ìõ‚£ƒ¥*u…±ls¾w‘²G+ïk†h~T·ëöb PóðÅ߯kmœ+vÿ¹1aà`õã€Eàou$6?“X‹žJ<8½ IX5Þ0´×¾±Ç9_¡äß8ÔöÊ 2q¹õ‚!7Ï®ušÜ­,œrkDÀ_®q197½;ó"ˆÆy9%Å” Y4Å`.W§µˆz@è_XÙÇÆ´îw‡ GÁs¼* ˆ©mzçŒ €(+Z‘ò~Øj†rnø×Ö DPaößýËX²+?æ –PH͵¢ï»‡™àx®=\aÃêo!q´ëë%RM/‰œöF‚šœc6Šœ)ãFru”uוÈ ]iÀ¡°§ŒŸ‚{y™|«¥ìÀ_AV§Ãqí™G¯±ï:añÉÞ 3’ooûŠÀ’{j*~?@U.·Û‚Tמ†{ÇÖ ^ƒȶˆ:ã<’3‰ö÷2,š©ag©BgÚ|ÜCŒƒã³Ö!¸°•âuŒÅ`h>L-ÿ€!Âç¾ñä’1ƒg6à† øêg6uu>9%©GßTËzì®ÚňŸÐχfò\ ×\áŽÈሡ…¢0jÂo¼^r>ÙF'ãß»´>Î0+Ysãx T3O5õÏÞ1èáÌ‹ã À¤{)€×0­O ãAU©óÇÆ_0G…úºÖ*‹CgqÁ±&Ð j}æíé“@çsYWؾ–ºgïzìÆãwÖ*RP0±óˆ)®¤ìRoç¬+h‰ãFs§Zù®ø5¿ÖENEÀ°Öúi˜b†²Qß6kâåzTEØûÄlà¯yï8Ý(‚^°bRlãÍëH>0'{_žp4èZ¡ùÏAéów•ö»ý¿Œ´ƒÓW²ó†t¨‰Z:OŒUL%áYœLü•{ ³ZÙxõ–ç¥cø´"i>ppÒ°!»5‚±)óÖ6¨î7ÌûÖ ˆ0·—WHI7 Fþ±¿¥¡íÆ,Œ¹øMeÖÀHœ_¼át³nŸÆ_|áÛÚÎÇwqQç±p–¦Š£qòé= Ñ/8\íGçx ¡G­¸—(.]§xå⪥{üf„ÕÎ4-°¹ÈKž-C‚æ‡øUW[×Zã2RSÄ.@æ‡Àxm*˜VóÆI"ò¾ŸX KCœ}iœïZÍãºÁƒ·„>úß§#¤wJLQW@Sšõ§X%  ¯ˆyÍÅAï2ƒqC"­ãñ†¨(jc³ÚÇ(—dŠïŒjîéZúÍ1ô‹§‹•¯µ»/DåÉ#µ3Zì9ƉˆQr8ðsº¯G¾1afÍÓbõ‰Œ!¡6~sF抱ù|&K¡ÞœSãÞUñÅo€C6";i3d/ÃõÈëF¹Zs›sH“D›ó”À…b[ié,çFR‘v)ñÙȉk‹ïœ]ª×-yáÜ™¿k™X~]åÉa¨æ>}ã÷üŒKÚPè<¿×í0é_ü˜š"ýàü €IÏÎE;)МýâêëOûnjF@.óß8°:t½ÿyÇ‚cŽûðñ’\Sã~¿úÈÀ![z¬ Þ¸)§8d ý˜z’oËë :ôÀçzøÈ“…U¯èþñP­Svšþ³sA¸3žñix•ÖwÕ%MŒÖ²|‚ÛêáB (|¹×b!ßXÇ¿¥}ÝyMzÀn;š§¬Ú‚D(Žf?u!–:~1í%ÖqL& ÀÀÖ÷…8b-¼ÊnÛ–8…§wcÕ%ñ–¥±ÎnÛ¾ðæ ŠSç4äÜÿ\Ô,jtÞÌ0°?XiiES ÔöÒ_àŨ]«åþ1Á…3)Yû¹%Hmï)€9œEã\ûňÅÐùmwÉøÆµ’`¢?ë„ü'"ŽŽyÄBR‚,ÝÇç( Ý¦U“ôÅXi&=IHZ5לfAÚñßõ‹ZdàºÑݹ6•løÞšË>24ÍW“"f"|ÜÐa@º-,u€iŠ<Ç÷š›Õ˜ŠÓ{]öuˆX²`–ƒoã*ðro¬Úª–t»Ë%ÎGžÌŠVÚ¯‰Ç¬Hd†[ó‚~Â`@›ÓßÑS‚ŸãàA }`‡w1+Aœ 7Tß8' P||aB¬Ð(åñ£+Kêˆsšª•_;øÅ0*i£ƒjÓ[¼þ± ¢4ò½žœù3KƸ8Ëâ^¦"ƒ7±Çn ã—\oSþàJäU,y^»ÀHi©à¶ýål „Ó›/I‹‹¨uûÎæ$len¸Å´naÀoã%ãóÓåíãn ^Á*ú—{IKª xÄPpZ6¯œ8Ñv–òh~q¸$] ?¼MB6¥ë×Î[®ÀÝûçœmúŠ6!1‚¥0¢§‰†=8Úïõ–…`_ÎU‚hÏyà«H?ù†Ûk+\ð;ÄÅ8•Â/a¿ù‹Iàm‡(Óï&¸×ˆübpRƒoÏX+›ló¬‹" •—”ÍEŠ)F±Ø&i¡ç¯ç4`ñ„­ýLÚkzžd·i:+ã& ¹¶uÎÀH‚á‘„C¾a9¸Šs!Ѿ°Áo §{Î,Ò—EO&%!T}™­ P×ýѱÌ&5 )]Ïë´—°ä¦ƒˆ'½øÊÌ3@,ê{ÄN°¥G„ƘpS•Å€ëÃnþ10 9Ë«@ËèÆª½KñzË3Ñ 5¾ýæÈØ5Ù‡cÏëñï8ZؓȯÇÖo|Âd*ï|™o-E×ÏÞ+²,òäò£BϹšËDP‰jœr`zÐ÷Óˆ–”b/ˆGaCJ( ·¼‘Ä6Îõšà0AziøÅ£°A×ØÏ¬Šñï®1q¼€Úìóïõéå$¢K×ÎD/(·‰'ÿrÒÙÚ©ÏêbZt 'éúbw²˜\+€>xh©3¥*ž]w2êÿÂzççà°t—5ÍËQ,ü±ÍHLÞüñï•äœât­²+Æy„²èGÓptÿ‡Æl•ÂÏ7}‘G'zÅŒôvèg}摹A âP|´ï‡á Aœ’ jÔKÞœíðã°Ø˜%óœ j{³ÛÀ¯Ë›ÄJq}5s“ÜqN0SäH øÇõZÊMs‰.Â_ËÆ=4Mù16*3ï@ápª#C…6xç,¡¨ýýbæÊ—´.1å.€}ÆLjáZþ íÉbÀÔ)vûü™¶Ê’Œ­|¼oN Žß'Z^ü¼ïx­/ýcZ"$[Æ‹›˜G¿ï¸\!Rvq®qÝZ¯C­˜”ƒ@OÓ1 Úl¶ ãŒçñZ!Èžyp)»ƒ®Œrܲ¼­€w¶R(SÐ2T˱Y]zÇþpC_lÆDxgq}åµÁh*rÆ8ô¾)ìݵ1æ-_ïEkì3_Œ€#½óf±v˸ÊÏ%Ûº8"•½µp"eÓ­üÜ1¤W`ò«Máå¬ô(t\“`O ¬¨¢-`ñÞ3Ü’4Y¼¡½w«uëqø0­á·ŽòÏJÀö3òæ‹Ø½^ýå({orï¼ÿÙase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ase/visualize/visualize.rst000066400000000000000000000163701316323560300260730ustar00rootroot00000000000000.. module:: ase.visualize Visualization ============= .. function:: view(atoms, data=None, viewer=None, repeat=None) This provides an interface to various visualization tools, such as :mod:`ase.gui`, RasMol_, VMD_, gOpenMol_, Avogadro_, ParaView_ or NGLView_. The default viewer is the ase.gui, described in the :mod:`ase.gui` module. The simplest invocation is: .. testsetup:: from ase import Atoms atoms = Atoms('Cu') >>> from ase.visualize import view >>> view(atoms) where ``atoms`` is any :class:`~ase.Atoms` object. Alternative viewers can be used by specifying the optional keyword ``viewer=...`` - use one of 'ase.gui', 'gopenmol', 'vmd', 'rasmol', 'paraview', 'ngl'. The VMD and Avogadro viewers can take an optional ``data`` argument to show 3D data, such as charge density: >>> view(atoms, viewer='VMD', data=...) The nglview viewer additionally supports any indexible sequence of :class:`~ase.Atoms` objects, e.g. lists of structures and :class:`~ase.io.Trajectory` objects. If you do not wish to open an interactive gui, but rather visualize your structure by dumping directly to a graphics file; you can use the ``write`` command of the :mod:`ase.io` module, which can write 'eps', 'png', and 'pov' files directly, like this: >>> from ase.io import write >>> write('image.png', atoms) It is also possible to plot directly to a Matplotlib subplot object, which allows for a large degree of customisability. :ref:`More information `. .. _RasMol: http://openrasmol.org/ .. _VMD: http://www.ks.uiuc.edu/Research/vmd/ .. _gOpenMol: http://www.csc.fi/gopenmol/ .. _Avogadro: http://avogadro.openmolecules.net/ .. _ParaView: http://www.paraview.org/ .. _NGLView: https://github.com/arose/nglview .. module:: ase.visualize.nglview Viewer for Jupyter notebooks ---------------------------- A simple viewer based on X3D is built into ASE, which should work on modern browsers without additional packages, by typing the following command into a Jupyter_ notebook: >>> view(atoms, viewer='x3d') For a more feature-rich viewer, nglview is a dedicated viewer for the Jupyter_ notebook interface. It uses an embeddable NGL_ WebGL molecular viewer. The viewer works only in the web browser environment and embeds the live javascript output into the notebook. To utilize this functionality you need to have NGLView_ and ipywidgets_ packages installed in addition to the Jupyter_ notebook. The basic usage provided by the :func:`ase.visualize.view` function exposes only small fraction of the NGL_ widget capabilities. The simplest form: >>> view(atoms, viewer='ngl') creates interactive ngl viewer widget with the few additional control widgets added on the side. The object returned by the above call is a reference to the `.gui` member of the :class:`ase.visualize.nglview.NGLDisplay` containing actual viewer (`.view` member), a reference to control widgets box (`.control_box` member) and :func:`ase.visualize.view.nglview.NGLDisplay.custom_colors` method. The notebook interface is not blocked by the above call and the returned object may be further manipulated by the following code in the separate cell (the `_` variable contains output from the previous cell): >>> v=_ >>> v.custom_colors({'Mn':'green','As':'blue'}) >>> v.view._remote_call("setSize", target="Widget", args=["400px", "400px"]) >>> v.view.center_view() >>> v.view.background='#ffc' >>> v.view.parameters=dict(clipDist=-200) The `.view` member exposes full API of the NGLView_ widget. The `.control_box` member is a :class:`ipywidgets.HBox` containing :class:`nglview.widget.NGLWidget` and :class:`ipywidgets.VBox` with control widgets. For the full documentation of these objects consult the NGLView_, NGL_ and ipywidgets_ websites. .. _Jupyter: https://www.jupyter.org/ .. _NGL: https://github.com/arose/ngl .. _ipywidgets: https://github.com/jupyter-widgets/ipywidgets .. autoclass:: ase.visualize.nglview.NGLDisplay :inherited-members: .. autofunction:: ase.visualize.nglview.view_ngl .. automethod:: ase.visualize.nglview.NGLDisplay.custom_colors .. module:: ase.visualize.mlab .. _iso surface: Plotting iso-surfaces with Mayavi --------------------------------- The :func:`ase.visualize.mlab.plot` function can be used from the command-line:: $ python -m ase.visualize.mlab abc.cube to plot data from a cube-file or alternatively a wave function or an electron density from a calculator restart file:: $ python -m ase.visualize.mlab -C gpaw abc.gpw Options: .. include:: mlab_options.txt :start-after: Options: .. autofunction:: ase.visualize.mlab.plot PrimiPlotter ------------ The PrimiPlotter is intended to do on-the-fly plotting of the positions of the atoms during long molecular dynamics simulations. The module :mod:`ase.visualize.primiplotter` contains the PrimiPlotter and the various output modules, see below. .. autoclass:: ase.visualize.primiplotter.PrimiPlotter :inherited-members: FieldPlotter ------------ The FieldPlotter is intended to plot fields defined on the atoms in large-scale simulations. The fields could be e.g. pressure, stress or temperature (kinetic energy), i.e. any quantity that in a given simulation is best defined on a per-atom basis, but is best interpreted as a continuum field. The current version of FieldPlotter only works if the number of atoms is at least 5-10 times larger than the number of pixels in the plot. .. autoclass:: ase.visualize.fieldplotter.FieldPlotter :inherited-members: .. _matplotlib_plotting: Matplotlib ---------- >>> import matplotlib.pyplot as plt >>> from ase.visualize.plot import plot_atoms >>> from ase.lattice.cubic import FaceCenteredCubic >>> slab = FaceCenteredCubic('Au', size=(2, 2, 2)) >>> fig, ax = plt.subplots() >>> plot_atoms(slab, ax, radii=0.3, rotation=('90x,45y,0z')) >>> fig.savefig("ase_slab.png") .. image:: matplotlib_plot_atoms1.png The data is plotted directly to a Matplotlib subplot object, giving a large degree of customizability. >>> import matplotlib.pyplot as plt >>> from ase.visualize.plot import plot_atoms >>> from ase.lattice.cubic import FaceCenteredCubic >>> slab = FaceCenteredCubic('Au', size=(2, 2, 2)) >>> fig, axarr = plt.subplots(1, 4, figsize=(15, 5)) >>> plot_atoms(slab, axarr[0], radii=0.3, rotation=('0x,0y,0z')) >>> plot_atoms(slab, axarr[1], scale=0.7, offset=(3, 4), radii=0.3, rotation=('0x,0y,0z')) >>> plot_atoms(slab, axarr[2], radii=0.3, rotation=('45x,45y,0z')) >>> plot_atoms(slab, axarr[3], radii=0.3, rotation=('0x,0y,0z')) >>> axarr[0].set_title("No rotation") >>> axarr[1].set_xlabel("X-axis, [$\mathrm{\AA}$]") >>> axarr[1].set_ylabel("Y-axis, [$\mathrm{\AA}$]") >>> axarr[2].set_axis_off() >>> axarr[3].set_xlim(2, 6) >>> axarr[3].set_ylim(2, 6) >>> fig.savefig("ase_slab_multiple.png") .. image:: matplotlib_plot_atoms2.png >>> stem_image = mpimg.imread("stem_image.jpg") >>> atom_pos = [(0.0, 0.0, 0.0), (0.5, 0.5, 0.5), (0.5, 0.5, 0.0)] >>> srtio3 = crystal(['Sr','Ti','O'], atom_pos, spacegroup=221, cellpar=3.905, size=(3, 3, 3)) >>> fig, ax = plt.subplots() >>> ax.imshow(stem_image, cmap='gray') >>> plot_atoms(srtio3, ax, radii=0.3, scale=6.3, offset=(47, 54), rotation=('90x,45y,56z')) >>> ax.set_xlim(0, stem_image.shape[0]) >>> ax.set_ylim(0, stem_image.shape[1]) >>> ax.set_axis_off() >>> fig.tight_layout() >>> fig.savefig("iomatplotlib3.png") .. image:: matplotlib_plot_atoms3.png ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/cmdline.rst000066400000000000000000000035231316323560300227040ustar00rootroot00000000000000.. highlight:: bash .. index:: command line tools .. _cli: ================= Command line tool ================= ASE has a command line tool called :program:`ase` with the following sub-commands: ============== ================================================= sub-command description ============== ================================================= help Help for sub-command info Print information about files or system test Test ASE gui ASE's :ref:`graphical user interface ` find Find files with atoms in db Manipulate and query :ref:`ASE database ` run Run calculation with one of ASE's calculators build Build an atom, molecule or bulk structure eos Calculate equation of state ulm Show content of ulm-file nomad-upload Upload files to NOMAD band-structure Plot band-structure completion Add tab-completion for Bash ============== ================================================= Python -m tricks ================ Some ASE modules can be invoked directly form the command line using ``python3 -m``. :ref:`stylecheck`:: $ python -m ase.utils.stylecheck source.py :ref:`iso surface`:: $ python -m ase.visulaize.mlab [options] filename Convert old db-files to new:: $ python -m ase.db.convert db-file :ref:`convert`:: $ python -m ase.io.pickletrajectory a1.traj [a2.traj ...] Help ==== For all command-line tools, you can do:: $ ase --help $ ase sub-command --help $ python -m module --help to get help (or ``-h`` for short). .. _bash completion: Bash completion =============== You can enable bash completion like this:: $ ase completions This will append a line like this:: complete -o default -C /path/to/ase/ase/cli/complete.py ase to your ``~/.bashrc``. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/conf.py000066400000000000000000000043271316323560300220410ustar00rootroot00000000000000import sys import sphinx_rtd_theme from ase import __version__ sys.path.append('.') assert sys.version_info >= (2, 7) extensions = ['ext', 'images', 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.mathjax', 'sphinx.ext.viewcode', 'sphinx.ext.intersphinx'] source_suffix = '.rst' master_doc = 'index' project = 'ASE' copyright = '2017, ASE-developers' templates_path = ['templates'] exclude_patterns = ['build'] default_role = 'math' pygments_style = 'sphinx' autoclass_content = 'both' modindex_common_prefix = ['ase.'] nitpick_ignore = [('envvar', 'VASP_PP_PATH'), ('envvar', 'ASE_ABC_COMMAND'), ('envvar', 'FLEUR_INPGEN'), ('envvar', 'FLEUR'), ('envvar', 'LAMMPS_COMMAND'), ('envvar', 'ASE_NWCHEM_COMMAND'), ('envvar', 'SIESTA_COMMAND'), ('envvar', 'SIESTA_PP_PATH'), ('envvar', 'VASP_SCRIPT')] html_theme = 'sphinx_rtd_theme' html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] html_style = 'ase.css' html_favicon = 'static/ase.ico' html_static_path = ['static'] html_last_updated_fmt = '%a, %d %b %Y %H:%M:%S' ase_dev_version = '3.15.1b1' # This line auto-edited by newrelease script ase_stable_version = '3.15.0' # This line auto-edited by newrelease script html_context = { 'current_version': __version__, 'versions': [('{} (development)'.format(ase_dev_version), 'https://wiki.fysik.dtu.dk/ase/dev'), ('{} (latest stable)'.format(ase_stable_version), 'https://wiki.fysik.dtu.dk/ase')]} latex_elements = { 'papersize': 'a4paper', 'preample': r'\setcounter{tocdepth}{4}'} latex_show_urls = 'inline' latex_show_pagerefs = True latex_documents = [ ('index', 'ASE.tex', 'ASE', 'ASE-developers', 'howto', not True)] intersphinx_mapping = {'gpaw': ('https://wiki.fysik.dtu.dk/gpaw', None), 'python': ('https://docs.python.org/2.7', None)} # Avoid GUI windows during doctest: doctest_global_setup = """ import ase.visualize as visualize from ase import Atoms visualize.view = lambda atoms: None Atoms.edit = lambda self: None """ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/contact.rst000066400000000000000000000011251316323560300227200ustar00rootroot00000000000000.. _contact: ======= Contact ======= .. _mail list: Mail List ========= There is a mailing list for getting help and for discussing ASE: * ase-users_ .. _ase-users: https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users .. _irc: Internet Relay Chat =================== We have the IRC channel ``#ase`` on FreeNode. Please join us if you have any questions. For easy access, you can use this webclient_. .. _webclient: http://webchat.freenode.net/?randomnick=0&channels=ase GitLab ====== Feel free to create Merge Requests and Issues on our GitLab page: https://gitlab.com/ase/ase ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/000077500000000000000000000000001316323560300230565ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/Vagrantfile000066400000000000000000000042461316323560300252510ustar00rootroot00000000000000# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| # centos7 configure to run python-sphinx config.vm.define "centos7_python_sphinx" do |centos7_python_sphinx| centos7_python_sphinx.vm.box = "puppetlabs/centos-7.0-64-nocm" centos7_python_sphinx.vm.box_url = 'puppetlabs/centos-7.0-64-nocm' # old vagrant may need the full url of the box #centos7_python_sphinx.vm.box_url = 'https://atlas.hashicorp.com/puppetlabs/boxes/centos-7.0-64-nocm/versions/1.0.1/providers/virtualbox.box' centos7_python_sphinx.vm.network "forwarded_port", guest: 80, host: 8080 end config.vm.define "centos7_python_sphinx" do |centos7_python_sphinx| centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y update" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install httpd" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install subversion" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install numpy" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install scipy" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install python-matplotlib" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install epydoc" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install python-pep8" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install pylint" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install pyflakes" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install ImageMagick" centos7_python_sphinx.vm.provision :shell, :inline => "yum -y install python-sphinx" centos7_python_sphinx.vm.provision :shell, :inline => "systemctl start httpd.service" centos7_python_sphinx.vm.provision :shell, :inline => "systemctl enable httpd.service" centos7_python_sphinx.vm.provision :shell, :inline => "systemctl stop firewalld.service" centos7_python_sphinx.vm.provision :shell, :inline => "systemctl disable firewalld.service" end end ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/bugs.rst000066400000000000000000000023071316323560300245520ustar00rootroot00000000000000.. _bugs: Bugs! ===== If you find a bug in the ASE software, please report it to the developers so it can be fixed. We need that feedback from the community to maintain the quality of the code. Bug report ---------- * If you are unsure if it is a real bug, or a usage problem, it is probably best to report the problem on the ``ase-users`` mailing list (see :ref:`contact`). Please provide the failing script as well as the information about your environment (processor architecture, versions of python and numpy). Then we (or other users) can help you to find out if it is a bug. Another advantage of reporting bugs on the mailing list: often other users will tell you how to work around the bug (until it is solved). * If you think it is a bug, you can also report it directly on our `issue tracker`_. The advantage of reporting bugs here is that it is not forgotten (which may be a risk on the mailing list). We do not guarantee to fix all bugs, but we will do our best. Known bugs ---------- * `A list of known bugs`_. * `Very old bugs`_. .. _issue tracker: .. _A list of known bugs: https://gitlab.com/ase/ase/issues .. _Very old bugs: http://trac.fysik.dtu.dk/projects/ase/report/1 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/calculators.rst000066400000000000000000000026171316323560300261320ustar00rootroot00000000000000.. _Adding new calculators: ====================== Adding new calculators ====================== Adding an ASE interface to your favorite force-calculator is very simple. Take a look at the :class:`~ase.calculators.calculator.Calculator` and :class:`~ase.calculators.calculator.FileIOCalculator` classes below (the code is here: :git:`ase/calculators/calculator.py`). You should inherit from the :class:`~ase.calculators.calculator.FileIOCalculator` and implement the :meth:`~ase.calculators.calculator.Calculator.read`, :meth:`~ase.calculators.calculator.FileIOCalculator.read_results` and :meth:`~ase.calculators.calculator.FileIOCalculator.write_input` methods. The methods :meth:`~ase.calculators.calculator.Calculator.set`, :meth:`~ase.calculators.calculator.Calculator.check_state` and :meth:`~ase.calculators.calculator.Calculator.set_label` may also need to be implemented. .. seealso:: * The code for our Abinit interface: :git:`ase/calculators/abinit.py` * :ref:`aep1` * :mod:`ase.calculators` Description of base-classes =========================== The Calculator base-class ------------------------- .. autoclass:: ase.calculators.calculator.Calculator :members: :private-members: :member-order: bysource The FileIOCalculator class -------------------------- .. autoclass:: ase.calculators.calculator.FileIOCalculator :members: :private-members: :member-order: bysource ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/contribute.rst000066400000000000000000000305311316323560300257700ustar00rootroot00000000000000.. _contribute: ================= How to contribute ================= Discussion of ASE development takes place on the :ref:`ase-user ` mailing list and on the ``#ase`` :ref:`IRC channel on freenode `. We welcome new developers who would like to help work on improving ASE. If you would like to contribute, you should first tell us what you want to work on. Use the :ref:`mailing list ` for that. GitLab repository ================= All work on the source code takes place on https://gitlab.com using Git_. .. _Git: https://git-scm.com/ Proposed git workflow --------------------- The workflow described here have two elements to them: 1. The guidelines of project git-branches as a whole. 2. The workflow of the individual developer, i.e. the standard operating procedure when cloning, pulling, pushing etc. Only the latter will covered at the moment. When the developer team agree on the former it will be added here too. One comment though: In general: * Never work in master branch locally or on GitLab. * Make a new branch for whatever you are doing. When you are done, push it to your own repository and make a merge request from that branch in your repository to official master. The above policy ensures that the master branch means the same thing in all repositories (official and forks). You can learn the basics of git in several places: * `Git Reference `__ * `Pro Git `__ * `Introduction to Git with Scott Chacon of GitHub `__ * `Tech Talk: Linus Torvalds on git `__ Aliases ------- These aliases are quite common:: $ git config --global alias.st status $ git config --global alias.ci commit $ git config --global alias.co checkout $ git config --global alias.lol "log --pretty=oneline --abbrev-commit --graph --decorate" The first steps as a developer ------------------------------ * Register as a user on https://gitlab.com * Find and/or change your user-name in your account setting. You will need it. 1. Go to gitlab.com/profile 2. Click 'Account' on the left 3. Change your user name to be whatever you want it to be * Follow directions on https://gitlab.com/help/ssh/README for how to generate and add your own public ssh-key * Go to https://gitlab.com/ase/ase and fork the project. The 'fork' button is to the right of the button with the star and to the left of the 'SSH' button. Forking the project give you your own personal copy of the project. You will now have a fork situated at https://gitlab.com/your-user-name/ase * From here on: - ``upstream`` refers to git@gitlab.com:ase/ase and refers to the official repository of the ase project. - ``origin`` refers to your copy of the ase project located at git@gitlab.com:your-user-name/ase or https://gitlab.com/your-user-name/ase For example, ``upstream/master`` refers to the master (i.e., trunk or development) branch of the official ase project. * Clone your fork to ``origin`` to your local machine:: $ git clone git@gitlab.com:your-user-name/ase.git $ cd ase * Add and track ``upstream`` in your local git (done only once for each local git repository):: $ git remote add upstream git@gitlab.com:ase/ase You can always check the list of remote repositories that you can obtain code from:: $ git remote -v And you can check all available branches from the remotes that you are tracking:: $ git branch -a Making changes -------------- Changes and/or additions can be made both directly in GitLab for small changes (see the :ref:`small changes section`) and on a local branch in your fork. The preferred way using command line on a local machine is: 1) Ensure that your master branch is in sync with upstream master (since you should not work in master it's ok). * Fetch information about heads and references from "upstream" and store it in local git used in later merges and checkouts:: $ git fetch upstream * Switch to the local branch called 'master' that is (ideally) identical to the upstream master branch:: $ git checkout master $ git merge upstream/master --ff-only If the previous command fails, then it is safe to simply reset your master branch to the upstream master branch with the ``--hard`` flag. That will delete all local changes *and* extraneous commits in the current branch; so make sure (e.g., ``git status``, ``git log``) that you *did* remember to check out the master branch *and* that you have not accidentally committed something here that you want to save. And use this flag sparingly, as it is very powerful:: $ git reset --hard upstream/master If this is first time there would be no need for hard reset, unless some time has passed since the cloning. Still better safe than sorry. * It's a good idea to keep also your own origin/master identical to upstream/master:: $ git push origin master If this command fails, then you can try again with the ``--force`` flag. Same as the ``reset --hard`` git command, ``git push --force`` is powerful and should be used sparingly. 2) Next you can do changes and additions. * checkout a (new) local branch with a relevant name. Let us change the file contribute.rst as an example:: $ git checkout -b add-contribute-rst You should typically issue this command after checking out the master branch (the new branch will be based on current *HEAD*, i.e., whatever you have checked out at the moment). * If you already have this branch from some previous work, but want to do new work with the same branch name then you should start by resettting it to current upstream/master both locally and in your GitLab account:: $ git reset --hard upstream/master $ git push origin add-contribute-rst * Make your changes. During this stage, you should keep in mind the rule "Commit early and often." The next three bulleted points should be done many times during code editing. Each commit should be one "unit" of work. * Stage the files to be committed using ``git add``:: $ git add contribute.rst * Check your status:: $ git status * Commit the staged changes and add commit message. If you can summarize your changes succinctly, then you can use the command-line syntax:: $ git commit -m "ENH: Add developer workflow guidelines" But if your changes require explanation via prose, then perhaps you should just execute :: $ git commit And a text editor will appear. Please observe the following guidelines for writing your commit message. (stolen from `here `_) The seven rules of a great git commit message 1. Separate subject from body with a blank line 2. Limit the subject line to 50 characters 3. Capitalize the subject line 4. Do not end the subject line with a period 5. Use the imperative mood in the subject line 6. Wrap the body at 72 characters 7. Use the body to explain what and why vs. how Read the :ref:`commit message section` guidelines for commit messages for some additional ase-specific information. * Push commits to your GitLab repository:: $ git push --set-upstream origin add-contribute-rst * Go to gitlab.com/your-user-name/ase and click on '## branches' button (where ## is the number of branches on your repo) * Find the branch 'add-contributing-rst' and click '+ Merge Request' * Provide informative title and more verbose description in the body of the Merge Request form * Click the green 'Submit new merge request' button * For last minutes corrections that you would like to include in the merge request too, see :ref:`the correction section` * Wait for feedback from the developer community and address concerns as needed by adding more commits to the 'add-contribute-rst' branch on your personal repository and then pushing to your gitlab repository. * Once the developer community is satisfied with your merge request, anyone with push access to gitlab.com/ase/ase can merge your merge request and it will now be part of the master branch * After the merge-request is approved, delete the branch locally:: $ git branch -D add-contribute-rst and on gitlab:: $ git push origin :add-contribute-rst (output) To git@gitlab.com:your-user-name/add-contribute-rst - [deleted] add-contribute-rst .. _Last-minute-corrections: Adding corrections to be included in a merge request ---------------------------------------------------- If at this point you would like to make last minute corrections to your commit (it has happened many times so don't feel too bad) then instead of closing your own merge request and resubmit a new one you can simply go into your branch, the one that you requested to merge the first time, and make the changes, either directly in GitLab, see the :ref:`small changes section`, or locally *before the merge request has been accepted!* Since it's the branch that is merged (not just your commit) any changes you do to that branch will be included should the merge request be accepted:: $ vi contribute.rst $ git add contribute.rst $ git commit $ git push -u origin add-contribute-rst .. _making-small-changes: Making small changes -------------------- Say you want to fix a typo somewhere. GitLab has an editing feature that can come in handy. Here are the steps to do that there: * go to https://gitlab.com/your-user-name/ase * click "Files" and find the file you want to change * click "Edit" and fix the typo * click "Merge Requests" and add your change from the master branch * Unless you actually want to cancel a merge request *Do NOT* click any buttons that reads 'Close'! At this point someone will take a look at your change and merge it to the official repository if the change looks good. .. _writing-the-commit-message: Writing the commit message -------------------------- Commit messages should be clear and follow a few basic rules. Example:: ENH: add functionality X to ase.. The first line of the commit message starts with a capitalized acronym (options listed below) indicating what type of commit this is. Then a blank line, then more text if needed. Lines shouldn't be longer than 72 characters. If the commit is related to a ticket, indicate that with "See #3456", "See ticket 3456", "Closes #3456" or similar. Describing the motivation for a change, the nature of a bug for bug fixes or some details on what an enhancement does are also good to include in a commit message. Messages should be understandable without looking at the code changes. A commit message like ``MAINT: fixed another one`` is an example of what not to do; the reader has to go look for context elsewhere. Standard acronyms to start the commit message with are: :API: an (incompatible) API change :BLD: change related to building ase :BUG: bug fix :DEP: deprecate something, or remove a deprecated object :DEV: development tool or utility :DOC: documentation :ENH: enhancement :MAINT: maintenance commit (refactoring, typos, etc.) :REV: revert an earlier commit :STY: style fix (whitespace, PEP8) :TST: addition or modification of tests :REL: related to releasing ase Code review =========== Before you start working on a Merge Request, *please* read our :ref:`coding conventions`. Please also install a linter! Hopefully someone will look at your changes and give you some feedback. Maybe everything is fine and things can be merged to the official repository right away, but there could also be some more work to do like: * make it compatible with all supported Pythons (see :ref:`download_and_install`). * write more comments * fix docstrings * write a test * add some documentation This code review loop is not something we have invented to prevent you from contributing. Such code review is practiced by virtually all software projects that involve more than one person. Code review should be viewed as an opportunity for you to learn how to write code that fits into the ASE codebase. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/development.rst000066400000000000000000000005531316323560300261350ustar00rootroot00000000000000.. _devel: =========== Development =========== As a developer, you should subscribe to the ASE :ref:`mail list`. Development topics: .. toctree:: contribute python_codingstandard writing_documentation_ase calculators making_movies newrelease tests bugs licenseinfo translate todo py3k proposals/proposals ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/licenseinfo.rst000066400000000000000000000100521316323560300261040ustar00rootroot00000000000000.. _license info: ======= License ======= .. contents:: Human-readable version ====================== ASE is released under the `GNU Lesser General Public License`_ (LGPL). In short, this means * **NO WARRANTY:** We provide the code free of charge. You cannot sue us if it does not work, gives wrong results, or even if it damages your computer and/or scientific reputation. * You may use the code for whatever you like. You may study and modify it. * You may distribute distribute modified or unmodified versions of ASE as long as you do it under the LGPL_ (or GPL_) licence. You may distribute unmodified versions of ASE together with software under other licences (even commercial) as long as ASE itself is clearly identified as being under the LGPL_, but if you modify ASE for such purposes you are *required* to make the modifications available under the LGPL_. Note that we appreciate that you send modifications, bug fixes and improvements back to us instead of just distributing them, but the license has no such requirements. You can read more about the `LGPL on Wikipedia`_. Legal version of the license ============================ Please read the full text of the `GNU Lesser General Public License`_ (as published by the Free Software Foundation). What happens when ASE Calculators are under another license? ============================================================ We are sometimes asked if it is problematic to use ASE together with calculators under other licenses, for example GPL_. It is clear that a program under the GPL_ can use a library under the LGPL_, whereas a program under the LGPL_ cannot be derived from (and link) a library under the GPL_. Does this cause a problem if someone uses ASE with a calculator such as GPAW_ licensed under the GPL_? We do not think so, for the following reasons: 1. The LGPL_ and GPL_ do not limit how you *use* the codes, only how you *distribute* them. 2. ASE does not require any specific calculator to function, but many calculators require ASE to function, supporting the interpretation that ASE is a library for the calculator. 3. Although ASE includes a few cases where it imports calculators such as GPAW_ and Asap_, these can be regarded as "hooks" helping ASE to support these calculators, ASE does not depend on these calculators for its functionality. 4. The LGPL_ / GPL_ concept of "derived work" relies on the concept of "linking" which only makes sense in compiled languages. It is generally agreed that it is unproblematic when an interpreted language uses different modules under different licenses. See e.g. this `statement by Fedora`_: *Mere use of independent modules in a true interpreted language environment (like Perl or Python) is not a situation where Fedora is generally concerned about license compatibility, as long as those multiply licensed modules are not compiled together into a single binary and there is no code copying between the two.* 5. The actual executable doing the linkage is not ASE, but Python. However, nobody doubts that it is OK for Python (which has a very permissible license) to load modules licensed under the GPL_. Probably because of point 1 above. 6. Point 5 is not valid when running parallel GPAW_ or Asap_ calculations. In these cases GPAW_ and Asap_ provide specially built Python executables with the GPAW_ or Asap_ code built-in, i.e. derived work based on Python but licensed under the GPL_ (or LGPL_ for Asap). In these cases it is absolutely clear that it is GPAW_ or Asap_ loading ASE, not the other way around; so there are no problems. .. _`GNU Lesser General Public License`: http://www.gnu.org/licenses/lgpl.html .. _LGPL: http://www.gnu.org/licenses/lgpl.html .. _GPL: http://www.gnu.org/licenses/gpl.html .. _`LGPL on Wikipedia`: http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License .. _GPAW: https://wiki.fysik.dtu.dk/gpaw .. _Asap: https://wiki.fysik.dtu.dk/asap .. _`statement by Fedora`: https://fedoraproject.org/wiki/Licensing:FAQ?rd=Licensing/FAQ#Linking_and_multiple_licenses ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/making_movies.rst000066400000000000000000000071671316323560300264530ustar00rootroot00000000000000.. _making_movies_ase: ============= Making movies ============= using recordmydesktop --------------------- A video tutorial can be produced in the following way: - change the screen resolution to 1280x1024, - record the movie of the screen (without sound) using recordmydesktop_ (gtk-recordMyDesktop), - convert the resulting ogv into avi using mencoder:: mencoder video.ogv -o video.avi -oac copy -ovc lavc - record and edit the sound track using audacity_: - use 44100 Hz for recording and save the final file as *sound.wav*, - make sure not to keep the microphone to close to avoid signal peaks, - cut microphone signal peaks, insert silences, ... - edit the movie using avidemux_ (to match the sound track): - load the *video.avi*: :menuselection:`File --> Open`, make sure to use the following options when editing and saving: :menuselection:`Video --> Copy`, :menuselection:`Audio --> Copy`, :menuselection:`Format --> AVI`, - add the *sound.avi*: :menuselection:`Audio --> Main` :menuselection:`Track --> Audio` :menuselection:`Source --> External WAV`, - cut video frames (or copy and insert still frames to extend the video) to match the sound track. Set beginning mark and end mark - the cut or copy/paste operation applies to the selected region, - make sure to save intermediate stages when working on the video :menuselection:`File --> Save --> Save Video` (as AVI): - avidemux caches the audio track so to match the audio to a freshly cut video you can copy the audio file into another name, and add the sound track from that name, - sometimes when cutting frames avidemux does not allow to set the markers correctly, and there is **no** undo the last step in avidemux! - save the *video_final.avi* (that matches the sound track), and encode it into mpeg4 format using mencoder, using two passes:: opt="vbitrate=550:mbd=2:dc=10 -vf unsharp=l:0.4:c:0.0:hqdn3d" mencoder -ovc lavc -lavcopts vcodec=msmpeg4v2:vpass=1 -nosound -o /dev/null video_final.avi mencoder video_final.avi -oac mp3lame -af resample=32000:0:2 -lameopts vbr=3:br=80:mode=3 \ -ovc lavc -lavcopts acodec=mp3lame:vcodec=msmpeg4v2:vpass=2:$opt \ -info name="Overview and installation of ASE":artist=CAMd:copyright="CAMd 2009" -o video_final_mpeg4.avi - convert *video_final.avi* into a 800x600 *swf* file for streaming:: ffmpeg -i video_final.avi -pass 1 -s 800x600 -b:a 256k -ar 44100 -ac 1 \ -vcodec flv -b:v 1200k -g 160 -mbd 2 oi_en_800x600.swf ffmpeg -i video_final.avi -pass 2 -s 800x600 -b:a 256k -ar 44100 -ac 1 \ -vcodec flv -b:v 1200k -g 160 -mbd 2 -y oi_en_800x600.swf .. _recordmydesktop: http://recordmydesktop.sourceforge.net/ .. _audacity: http://audacity.sourceforge.net/ .. _avidemux: http://www.avidemux.org/ using avconf to collect png files --------------------------------- Load the trajectory and write the images out as single png files, e. g.: .. literalinclude:: writepngs.py In case you do not have avconv, install it (ubuntu):: sudo apt-get install libav-tools libavcodec-extra-53 libavdevice-extra-53 libavformat-extra-53 libavutil-extra-51 libpostproc-extra-52 libswscale-extra-2 Convert the png files to a movie (img.mov):: avconv -i "%d.png" -r 25 -c:v libx264 -crf 20 -pix_fmt yuv420p img.mov the options are: -i "img%d.png" uses these files as the input, %d is a placeholder for the number -r 25 the desired frame rate, 25 FPS in this case -c:v libx264 use the h264 codec x264 -crf 20 the video quality, 20 is pretty high, the default is 23 -pix_fmt yuv420p a compatible pixel format ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/master.cfg000066400000000000000000000254221316323560300250370ustar00rootroot00000000000000# -*- python -*- # ex: set syntax=python: import sys ####### global settings baseURL = "https://svn.fysik.dtu.dk/projects/ase/" # we want latest, more imporant builders first # in order to easily select a slice of them to run! builders_Linux = [ '2.7 gcc fedora 18 x86_64', '2.7 gcc fedora 17 x86_64', '2.7 gcc ubuntu 12.04 x86_64', #'2.6 gcc redhat 6 x86_64', #'2.4 gcc redhat 5 x86_64', # custom builders '2.6 gcc niflheim 6 x86_64', '2.4 gcc niflheim 5 x86_64', ] # limit builders here builders_Linux = builders_Linux[:] builders_Darwin = [ '2.7 gcc darwin 10.8 x86_64', ] builders_Darwin = builders_Darwin[:] builders_Windows = [ '2.7 msc windows 7 AMD64', #'2.7 msc windows 7 x86', ] builders_Windows = builders_Windows[:] builders_all = builders_Linux + builders_Darwin + builders_Windows builders_active = [] slavesep = '+' def get_slave_name(label=''): import platform from distutils import sysconfig name = '' if ''.join(platform.win32_ver()): name += platform.system().lower() # windows name += slavesep + platform.win32_ver()[0] # 7, 8, ... # flatten ('', ('', '', ''), '') elif ''.join([item for sublist in platform.mac_ver() for item in sublist]): name += platform.system().lower() # darwin name += slavesep + platform.mac_ver()[0] # 10.8, ... elif 'redhat' in platform.dist() or 'centos' in platform.dist(): name += platform.dist()[0] # major RHEL ver only name += slavesep + platform.dist()[1].split('.')[0] else: name += platform.dist()[0] # fedora, ubuntu, ... name += slavesep + platform.dist()[1].lower() name += slavesep + platform.machine() name += slavesep + platform.python_compiler().split()[0].lower() name += slavesep + sysconfig.get_python_version() if label: name += ' ' + label return name try: from buildbot_ase import slaves from buildbot_ase import ASE_BB_PORT, ASE_BW_PORT print get_slave_name() except ImportError: print get_slave_name() sys.exit() slaves = ( # examples buildslave, password ('darwin+10.8+x86_64+gcc+2.7 homebrew', 'password'), ('fedora+18+x86_64+gcc+2.7 stock', 'password'), ('ubuntu+12.04+x86_64+gcc+2.7 stock', 'password'), ('windows+7+AMD64+msc+2.7 pythonxy', 'password'), ('windows+7+x86+msc+2.7 pythonxy', 'password'), ) slavenames_all = [s[0] for s in slaves] print slaves ####### CONFIG from buildbot.config import BuilderConfig # This is a sample buildmaster config file. It must be installed as # 'master.cfg' in your buildmaster's base directory. # This is the dictionary that the buildmaster pays attention to. We also use # a shorter alias to save typing. c = BuildmasterConfig = {} ####### BUILDSLAVES from buildbot.buildslave import BuildSlave # The 'slaves' list defines the set of recognized buildslaves. Each element is # a BuildSlave object, specifying a unique slave name and password. The same # slave name and password must be configured on the slave. c['slaves'] = [BuildSlave(s[0], s[1]) for s in slaves] # 'slavePortnum' defines the TCP port to listen on for connections from slaves. # This must match the value configured into the buildslaves (with their # --master option) c['slavePortnum'] = ASE_BB_PORT ####### CHANGESOURCES from buildbot.changes.svnpoller import SVNPoller, split_file_branches # http://buildbot.net/buildbot/docs/latest/manual/cfg-changesources.html # the 'change_source' setting tells the buildmaster how it should find out # about source code changes. c['change_source'] = [] svnpoller = SVNPoller(svnurl = baseURL, #svnuser = "foo", #svnpasswd = "bar", pollinterval = 1 * 15 * 60, # 15 min split_file = split_file_branches) c['change_source'] = svnpoller ####### SCHEDULERS from buildbot.schedulers.basic import SingleBranchScheduler from buildbot.changes import filter # http://buildbot.net/buildbot/docs/latest/manual/cfg-schedulers.html # Configure the Schedulers, which decide how to react to incoming changes. c['schedulers'] = [] # define the dynamic scheduler for trunk builders = ['trunk' + ' ' + b for b in builders_all] trunkscheduler = SingleBranchScheduler( name = "trunkscheduler", change_filter = filter.ChangeFilter(branch = None), # The Scheduler will wait for this many seconds before starting the build treeStableTimer = None, builderNames = builders, ) for b in builders: if b not in builders_active: builders_active.append(b) # define the available schedulers c['schedulers'] = [ trunkscheduler, ] # This is how to enable a branch to be run by niflheim and windows builders # define the dynamic scheduler for a branch if 0: branch = 'branches/aep1' branchname = branch.replace('/', '>') # replace with a special char builders = [branchname + ' ' + b for b in builders_all if 'niflheim' in b or 'windows' in b] c['schedulers'].append( SingleBranchScheduler( name = branch + "scheduler", change_filter = filter.ChangeFilter(branch = branch), builderNames=builders, )) for b in builders: if b not in builders_active: builders_active.append(b) try: from buildbot.schedulers.forcesched import ForceScheduler builders = builders_active # all builders trunkforcescheduler = ForceScheduler( name="trunkforcescheduler", builderNames=builders, ) c['schedulers'].append(trunkforcescheduler) except ImportError: pass ####### BUILDERS from buildbot.process.factory import BuildFactory from buildbot.steps.source import SVN from buildbot.steps.shell import ShellCommand # http://buildbot.net/buildbot/docs/latest/manual/cfg-buildsteps.html # The 'builders' list defines the Builders, which tell Buildbot how to perform a build: # what steps, and which slaves can execute them. Note that any particular build will # only take place on one slave. cleanall = ShellCommand(name = "clean", command = ["python", "setup.py", "clean", "--all"], haltOnFailure = True, description = "clean", ) test = ShellCommand(name = "test", command = ["python", "setup.py", "test"], haltOnFailure = True, description = "test", #env = {'PYTHONPATH': '.:${PYTHONPATH}', # 'PATH': './tools:${PATH}'}) ) c['builders'] = [] # automatically configured builders for b in builders_active: branch, python, compiler, system, systemver, bitness = b.split() branch = branch.replace('>', '/') # restore path f = BuildFactory() # BuildFactory steps may be dependent on system (fedora, windows, ..) f.addStep( SVN(baseURL = baseURL, mode = "clobber", #username = "foo", #password = "bar", haltOnFailure = True, defaultBranch = branch, )) # python version assert assertstr = "from distutils.sysconfig import get_python_version as v; assert v() == " assertstr += "'" + python + "'" f.addStep( ShellCommand(name = "assert python", command = ["python", "-c", assertstr], haltOnFailure = True, description = "assert python", )) f.addStep(cleanall) f.addStep(test) if system == 'windows': # build msi on windows f.addStep( ShellCommand(name = "bdist_msi", command = ["python", "setup.py", "bdist_msi"], haltOnFailure = True, description = "bdist_msi", )) slavenames = [] for s in slavenames_all: ssystem = s.split()[0].split(slavesep)[0] ssystemver = s.split()[0].split(slavesep)[1] spython = s.split()[0].split(slavesep)[-1] if system == ssystem and systemver == ssystemver and python == spython: slavenames.append(s) if len(slavenames) > 0: c['builders'].append( BuilderConfig(name=b, slavenames=slavenames, factory=f, # http://trac.buildbot.net/ticket/928 # http://localhost:8010/waterfall?category=2.7 #tags=[branch, python, compiler, system, systemver, bitness], category=python, )) ####### STATUS TARGETS # http://buildbot.net/buildbot/docs/latest/manual/cfg-statustargets.html # 'status' is a list of Status Targets. The results of each build will be # pushed to these targets. buildbot/status/*.py has a variety to choose from, # including web pages, email senders, and IRC bots. c['status'] = [] from buildbot.status import html from buildbot.status.web import authz, auth authz_cfg=authz.Authz( # change any of these to True to enable; see the manual for more # options #auth=auth.BasicAuth([("ase","ase")]), # we don't want that! gracefulShutdown = False, forceBuild = 'auth', # use this to test your slave once it is set up forceAllBuilds = False, pingBuilder = False, stopBuild = False, stopAllBuilds = False, cancelPendingBuild = False, ) c['status'].append(html.WebStatus(http_port=ASE_BW_PORT, authz=authz_cfg)) if 1: # one notification per builder! from buildbot.status import mail m = mail.MailNotifier( mode=("change", "failing", "warnings", "exception"), fromaddr="ase-developers@listserv.fysik.dtu.dk", extraRecipients=["ase-svncheckins@listserv.fysik.dtu.dk"], relayhost="mail.fysik.dtu.dk", sendToInterestedUsers=False) c['status'].append(m) ####### PROJECT IDENTITY # the 'title' string will appear at the top of this buildbot # installation's html.WebStatus home page (linked to the # 'titleURL') and is embedded in the title of the waterfall HTML page. c['title'] = "ASE" c['titleURL'] = "https://wiki.fysik.dtu.dk/ase/" # the 'buildbotURL' string should point to the location where the buildbot's # internal web server (usually the html.WebStatus page) is visible. This # typically uses the port number set in the Waterfall 'status' entry, but # with an externally-visible host name which the buildbot cannot figure out # without some help. c['buildbotURL'] = "https://ase-buildbot.fysik.dtu.dk/" ####### DB URL c['db'] = { # This specifies what database buildbot uses to store its state. You can leave # this at its default for all but the largest installations. 'db_url' : "sqlite:///state.sqlite", } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/newrelease.rst000066400000000000000000000041061316323560300257430ustar00rootroot00000000000000.. _newrelease: =========== New release =========== * Make sure all tests pass. * Go through the git-logs and make sure all important changes since last stable release are mentioned in the :ref:`releasenotes`. * Build the web-page:: $ cd doc $ make clean $ make and check the generated images with ``make inspect``. * Update ``__version__`` to ``"x.y.z"`` in :git:`ase/__init__.py`. * Upload to PyPI:: $ python3 setup.py sdist $ python3 setup.py bdist_wheel $ twine upload dist/* * Push and make a tag "x.y.z". * Create pull-request for Easy-Build. The EasyBuild (``.eb``) files are in docs/development/easybuild. * Rename the old ``.eb`` files, updating the ASE version number. There are two ``.eb`` files, one for Python 2.7.12 and one for Python 3.5.2. Use ``git mv`` to rename the files. * Edit file file. * Update the **version number**. * Remove the checksum (delete the entire line in the file). * Check the syntax and style, and insert new checksums by running these commands:: eb --check-style ASE-X.Y.X-Python*.eb eb --inject-checksums sha256 ASE-X.Y.X-Python*.eb * Submit the new files:: eb --new-pr --pr-commit-message "ASE updated to version X.Y.Z" ASE-X.Y.X-Python*.eb * Commit the updated ``*.eb`` files, so they will be part of the *next* release. If the commands above fails, your need to `integrate EasyBuild with github`_. * Export issues, MR's, ... from GitLab (https://gitlab.com/ase/ase/export) and store the tar-file in a safe place. * Merge *master* into the *web-page* branch (which is used for creating the web-page for the stable version). * Update version numbers in :ref:`news`, :ref:`releasenotes` and :ref:`download_and_install` pages. * Increase the version number and push ("x.y+1.0b1"). * Send announcement email to the ``ase-users`` mailing list. Number of commits since last release:: $ git shortlog -s -n 3.13.0.. .. _`integrate EasyBuild with github`: https://wiki.fysik.dtu.dk/niflheim/EasyBuild_modules#setting-up-github-integration ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/proposals/000077500000000000000000000000001316323560300251005ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/proposals/calculators.rst000066400000000000000000000134011316323560300301450ustar00rootroot00000000000000.. _aep1: ============================= Calculator interface proposal ============================= All ASE calculators should behave similarly if there is no good reason for them not to. This should make it simpler for both users and developers. This proposal tries to define how a good ASE calculator should behave. The goal is to have ASE calculators: * that share more code * are more uniform to use * are better tested * are portable Setting some standards is a good thing, but we should also be careful not to set too strict rules that could limit each calculator to the lowest common denominator. Behavior ======== When a calculator calculates the energy, forces, stress tensor, total magnetic moment, atomic magnetic moments or dipole moment, it should store a copy of the system (atomic numbers, atomic positions, unit cell and boundary conditions). When asked again, it should return the value already calculated if the system hasn't been changed. If calculational parameters such as plane wave cutoff or XC-functional has been changed the calculator should throw away old calculated values. Standards parameters ==================== The standard keywords that all calculators must use (if they make sense) are: ``xc``, ``kpts``, ``smearing``, ``charge`` and ``nbands``. Each calculator will have its own default values for these parameters --- see recommendations below. In addition, calculators will typically have many other parameters. The units are eV and Ã…. Initial magnetic moments are taken from the :class:`~ase.Atoms` object. :xc: It is recommended that ``'LDA'`` and ``'PBE'`` are valid options. :kpts: * ``(1,1,1)``: Gamma-point * ``(n1,n2,n3)``: Monkhorst-Pack grid * ``(n1,n2,n3,'gamma')``: Shifted Monkhorst-Pack grid that includes `\Gamma` * ``[(k11,k12,k13),(k21,k22,k23),...]``: Explicit list in units of the reciprocal lattice vectors * ``kpts=3.5``: `\vec k`-point density as in 3.5 `\vec k`-points per Ã…\ `^{-1}` :smearing: The smearing parameter must be given as a tuple: * ``('Fermi-Dirac', width)`` * ``('Gaussian', width)`` * ``('Methfessel-Paxton', width, n)``, where `n` is the order (`n=0` is the same as ``'Gaussian'``) Lower-case strings are also allowed. The ``width`` parameter used for the chosen smearing method is in eV units. :charge: Charge of the system in units of `|e|` (``charge=1`` means one electron has been removed). :nbands: Each band can be occupied by two electrons. ABC calculator example ====================== The constructor will look like this:: ABC(restart=None, ignore_bad_restart=False, label=None, atoms=None, **kwargs) A calculator should be able to prefix all output files with a given label or run the calculation in a directory with a specified name. This is handled by the ``label`` argument. There are three possibilities: * Name of a file containing all results of a calculation (possibly containing a directory). * A prefix used for several files containing results. The label may have both a directory part and a prefix part like ``'LDA/mol1'``. * Name of a directory containing result files with fixed names. Each calculator can decide what the default value is: ``None`` for no output, ``'-'`` for standard output or something else. If the ``restart`` argument is given, atomic configuration, input parameters and results will be read from a previous calculation from the file(s) pointed to by the ``restart`` argument. It is an error if those files don't exist and are corrupted. This error can be ignored bu using ``ignore_bad_restart=True``. The ``atoms`` argument is discussed below. All additional parameters are given as keyword arguments. Example: Do a calculation with ABC calculator and write results to :file:`si.abc`: >>> atoms = ... >>> atoms.calc = ABC(label='si.abc', xc='LDA', kpts=3.0) >>> atoms.get_potential_energy() -1.2 Read atoms with ABC calculator attaced from a previous calculation: >>> atoms = ABC.read_atoms('si.abc') >>> atoms.calc >>> atoms.get_potential_energy() -1.2 The ``ABC.read_atoms('si.abc')`` statement is equivalent to:: ABC(restart='si.abc', label='si.abc').get_atoms() If we do: >>> atoms = ABC.read_atoms('si.abc') >>> atoms.rattle() # change positions and/or >>> atoms.calc.set(xc='PBE') # change a calculator-parameter >>> atoms.get_potential_energy() -0.7 then the :file:`si.abc` will be overwritten or maybe appended to. An alternative way to connect atoms and calculator: >>> atoms = ... >>> calc = ABC(restart='si.abc', label='si.abc', atoms=atoms) >>> atoms.get_potential_energy() -0.7 This will automatically attach the calculator to the atoms and the atoms will be updated form the file. If you add ``ignore_bad_restart=True``, you will be able to use the same script to do the initial calculation where :file:`si.abc` does not exist and following calculations where atoms may have been moved around by an optimization algorithm. The command used to start the ABC code can be given in an environment variable called ``ASE_ABC_COMMAND`` or as a ``command`` keyword. The command can look like this:: mpiexec abc PREFIX.input > PREFIX.output or like this:: ~/bin/start_abc.py PREFIX The ``PREFIX`` strings will be substituted by the ``label`` keyword. Implementation ============== * Portability (Linux/Windows): ``os.system('Linux commands')`` not allowed. * Common base class for all calculators: ``Calculator``. Takes care of restart from file logic, handles setting of parameters and checks for state changes. * A ``FileIOCalculator`` for the case where we need to: * write input file(s) * run Fortran/C/C++ code * read output file(s) * Helper function to deal with ``kpts`` keyword. Testing ======= An interface must pass the tests located under :git:`ase/test/calculator/`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/proposals/cli.rst000066400000000000000000000054321316323560300264050ustar00rootroot00000000000000================== Command line tools ================== This proposal tries to clean up the command line tools that we distribute with ASE. Current status ============== ASE currently has 7 command line tools that we install in :file:`/usr/bin`: ========================= =============================================== command description ========================= =============================================== :command:`ag` ASE's GUI :command:`ASE2ase` Translate old ASE-2 code to ASE-3 style :command:`testase` Run tests :command:`ase` First attempt to create a command that can do *everything* :command:`asec` Second attempt :command:`foldtrajectory` Wrap atoms outside simulation box to inside box :command:`trajectoryinfo` Write information about trajectory file ========================= =============================================== Proposed set of command line tools ================================== In the future things will look like this: ==================== ======================================= command description ==================== ======================================= :command:`ase-gui` ASE's GUI :command:`ase-info` Write information about files :command:`ase-test` Run tests :command:`ase-build` Build simple molecule or bulk structure :command:`ase-run` Run calculations with ASE's calculators :command:`ase-db` Put stuff into or query database ==================== ======================================= Comments ======== :command:`ag`: Renamed to :command:`ase-gui`. :command:`ASE2ase`: Removed --- no longer needed. :command:`testase`: Renamed to :command:`ase-test`. Alternative:: python setup.py test :command:`ase` and :command:`asec`: Replaced by new commands :command:`ase-build` and :command:`ase-run`. The old :command:`ase` command is hopefully not used a lot since we propose to get rid of it. :command:`foldtrajectory`: Too specialized to deserve its own command. Use:: python -m ase.md.foldtrajectory instead. :command:`trajectoryinfo`: Replaced by new more general command :command:`ase-info` that can pull out information from anything that ASE can read. Naming convention ================= Any suggestions for better names or are the proposed ones OK? The good thing about using :command:`ase-something` for all is that it is consistent and if you know one command, you will maybe discover the other ones when you do tab-completion. Implementation details ====================== * Should we use the very nice :mod:`argparse` module, which is the future but only available in Python 2.7, or should we stick with the old and deprecated :mod:`optparse` module? ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/proposals/labels.rst000066400000000000000000000057311316323560300271020ustar00rootroot00000000000000================ Labels for atoms ================ **WORK IN PROGRESS** This proposal describes how to introduce labels for the atoms in an :class:`~ase.Atoms` object in a backwards compatible way. Why? ==== Some atoms are special: * ghost atoms * atoms with a core hole * atoms that need a special basis set * ... and some atoms are not atoms at all (methyl group, ...). Proposal ======== Introduce *labels* and *kinds*. A label is a string and a kind is the combination of these three: * A chemical symbol or an atomic number. Default: ``None`` (same as ``'X'`` or ``0``) * A label. Default ``''`` * A mass. Default ``None`` (use standard value) * An integer tag. Default ``0`` A *kind* can be represented as a ``Kind`` object: * ``Kind(Z=None, symbol=None, label='', mass=None, tag=0)`` or as a string: * ``'symbol'`` (``Kind(symbol='symbol')``) * ``'symbol:label'`` (``Kind(symbol='symbol', label='label')``) * ``'label'`` (``Kind(label='label')``) Examples: * ``Kind(Z=1, label='ghost')`` (same as ``'H:ghost'``) * ``Kind(symbol='H')`` (same as ``'H'``) * ``Kind(symbol='H', label='', mass=2.0)`` * ``'methyl'`` (same as ``Kind(label='methyl')``) We add ``symbols``, ``labels`` and ``kinds`` list-of-string like attributes to the :class:`~ase.Atoms` object as well as new ``labels`` and ``kinds`` keyword arguments to the Atoms constructor. Currently, the first argument to the Atoms constructor (``symbols``) will accept a chemical formula as a string or a list of chemical symbols or atomic numbers. We extend this to also accept kinds. .. note:: Not really related to this label issue, but since we are anyway adding new attributes, we should also add ``masses``, ``tags``, ``initial_magmoms``, ``momenta``, ``initial_charges`` and ``mass``. Examples ======== >>> a = Atoms(['N', 'C', Kind(label='methyl', mass=9.0)]) >>> a.positions[:, 0] = [0, 1.2, 2.6] >>> a.masses[a.labels == 'methyl'] = 10 >>> a.numbers array([7, 6, 0]) >>> a.symbols # special list-like object tied to a Symbols(['N', 'C', 'X']) >>> a.get_chemical_symbols() # simple list ['N', 'C', 'X'] >>> a.labels Labels(['', '', 'methyl']) >>> a.kinds Kinds(['N', 'C', Kind(label='methyl', mass=10.0)]) Here are 50 H-D molecules: >>> h = Atoms('H100', positions=...) >>> h.labels[::2] = 'deuterium' >>> h.masses[h.labels == 'deuterium'] = 2.0 or equivalently: >>> h.kinds[::2] = Kind(symbol='H', label='deuterium', mass=2.0) A DFT code could use the kinds to select pseudo-potentials: >>> n2 = molecule('N2') >>> n2.labels[0] = 'core-hole' >>> n2.calc = DFT(xc='LDA', ... pp={'N:core-hole': '~/mypps/N-LDA.core-hole.upf'}) List-like objects ================= New ``Labels``, ``Kinds`` and ``Symbols`` list-like objects will be introduced that can handle all the indexing operations in a storage efficient way. A statement like ``a.symbols[0] = 'He'`` must somehow lead to ``a.numbers[0] == 2`` and other magic. Atom objects ============ Add ``Atom.label`` and ``Atom.kind``. I/O === ??? ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/proposals/proposals.rst000066400000000000000000000001721316323560300276540ustar00rootroot00000000000000========================= ASE enhancement proposals ========================= .. toctree:: labels calculators cli ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/py3k.rst000066400000000000000000000005001316323560300244710ustar00rootroot00000000000000Python 3 strategy ================= * One codebase for both 2 and 3. * Use ``print(...)`` and add this line as the fist line:: from __future__ import print_function * Don't do this: ``print >> f, ...``. Use ``f.write(... + '\n')`` or ``print(..., file=f)``. * More help here: http://packages.python.org/six/ ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/pylintrc000066400000000000000000000245051316323560300246530ustar00rootroot00000000000000# lint Python modules using external checkers. # # This is the main checker controlling the other ones and the reports # generation. It is itself both a raw checker and an astng checker in order # to: # * handle message activation / deactivation at the module level # * handle some basic but necessary stats'data (number of classes, methods...) # [MASTER] # Specify a configuration file. #rcfile= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Profiled execution. profile=no # Add to the black list. It should be a base name, not a # path. You may set this option multiple times. ignore=.svn # Pickle collected data for later comparisons. persistent=no # Set the cache size for astng objects. cache-size=500 # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins= [MESSAGES CONTROL] # Enable only checker(s) with the given id(s). This option conflicts with the # disable-checker option #enable-checker= # Enable all checker(s) except those with the given id(s). This option # conflicts with the enable-checker option #disable-checker= # Enable all messages in the listed categories (IRCWEF). #enable-msg-cat= # Disable all messages in the listed categories (IRCWEF). disable-msg-cat=IR # Enable the message(s) with the given id(s). #enable-msg= # Disable the message(s) with the given id(s). disable-msg=W0142,W0201,W0614,W0703,W0704 #C0112: *Empty docstring* # Used when a module, function, class or method has an empty docstring (it would # be too easy ;). #W0142: *Used * or ** magic* # Used when a function or method is called using `*args` or `**kwargs` to # dispatch arguments. This doesn't improve readability and should be used with # care. #W0201: *Attribute %r defined outside __init__* # Used when an instance attribute is defined outside the __init__ method. #W0614: *Unused import %s from wildcard import* # Used when an imported module or variable is not used from a 'from X import *' # style import. Already covered by the W0401 wildcard import warning. #W0703: *Catch "Exception"* # Used when an except catches Exception instances. #W0704: *Except doesn't do anything* # Used when an except clause does nothing but "pass" and there is no "else" # clause. [REPORTS] # Set the output format. Available formats are text, parseable, colorized, msvs # (visual studio) and html output-format=parseable # Include message's id in output include-ids=yes # Put messages in a separate file for each module / package specified on the # command line instead of printing them on stdout. Reports (if any) will be # written in a file name "pylint_global.[txt|html]". files-output=no # Tells wether to display a full report or only the messages reports=yes # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (R0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Add a comment according to your evaluation note. This is used by the global # evaluation report (R0004). comment=no # Enable the report(s) with the given id(s). #enable-report= # Disable the report(s) with the given id(s). disable-report=R0001,R0101,R0401,R0402,R0801 #R0001: Messages by category #R0101: Statistics by type #R0401: External dependencies #R0402: Modules dependencies graph #R0801: Duplication # checks for : # * doc strings # * modules / classes / functions / methods / arguments / variables name # * number of arguments, local variables, branchs, returns and statements in # functions, methods # * required module attributes # * dangerous default values as arguments # * redefinition of function / method / class # * uses of the global statement # [BASIC] # Required attributes for module, separated by a comma required-attributes= # Regular expression which should only match functions or classes name which do # not require a docstring no-docstring-rgx=__.*__ # Regular expression which should only match correct module names module-rgx=[a-z_][a-z0-9_]*(module)?$ # Regular expression which should only match correct module level names const-rgx=[a-z_][a-z0-9_]*(const)?$ # Regular expression which should only match correct class names class-rgx=([A-Z][a-z]*)*(class)?$ # Regular expression which should only match correct function names function-rgx=[a-z_][a-z0-9_]*(function)?$ # Regular expression which should only match correct method names method-rgx=[a-z_][a-z0-9_]*(method)?$ # Regular expression which should only match correct instance attribute names #attr-rgx=[a-z_][a-z0-9_]*$ attr-rgx=([a-z_]+[a-z0-9_]*_[A-Za-z0-9]+)|([A-Z_]+[A-Z0-9_]*_[A-Za-z0-9]+)|([a-z_]+[a-z0-9_]*)|([A-Z_]+[A-Z0-9_]*)$ # Regular expression which should only match correct argument names #argument-rgx=[a-z_][a-z0-9_]*$ argument-rgx=([a-z_]+[a-z0-9_]*_[A-Za-z0-9]+)|([A-Z_]+[A-Z0-9_]*_[A-Za-z0-9]+)|([a-z_]+[a-z0-9_]*)|([A-Z_]+[A-Z0-9_]*)$ # Regular expression which should only match correct variable names #variable-rgx=[a-z_][a-z0-9_]*$ variable-rgx=([a-z_]+[a-z0-9_]*_[A-Za-z0-9]+)|([A-Z_]+[A-Z0-9_]*_[A-Za-z0-9]+)|([a-z_]+[a-z0-9_]*)|([A-Z_]+[A-Z0-9_]*)$ # Regular expression which should only match correct list comprehension / # generator expression variable names #inlinevar-rgx=[a-z_][a-z0-9_]*(inline)?$ inlinevar-rgx=([a-z_]+[a-z0-9_]*_[A-Za-z0-9]+)|([A-Z_]+[A-Z0-9_]*_[A-Za-z0-9]+)|([a-z_]+[a-z0-9_]*)|([A-Z_]+[A-Z0-9_]*)$ # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_ # Bad variable names which should always be refused, separated by a comma bad-names=foo,bar,baz,toto,tutu,tata # List of builtins function names that should not be used, separated by a comma bad-functions=map,filter,apply,input # checks for # * unused variables / imports # * undefined variables # * redefinition of variable from builtins or from an outer scope # * use of variable before assigment # [VARIABLES] # Tells wether we should check for unused import in __init__ files. init-import=no # A regular expression matching names used for dummy variables (i.e. not used). dummy-variables-rgx=_|dummy # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= # try to find bugs in the code using type inference # [TYPECHECK] # Tells wether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # List of classes names for which member attributes should not be checked # (useful for classes with attributes dynamically set). ignored-classes=SQLObject # When zope mode is activated, add a predefined set of Zope acquired attributes # to generated-members. zope=no # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. generated-members=REQUEST,acl_users,aq_parent # checks for sign of poor/misdesign: # * number of methods, attributes, local variables... # * size, complexity of functions, methods # [DESIGN] # Maximum number of arguments for function / method max-args=5 # Maximum number of locals for function / method body max-locals=15 # Maximum number of return / yield for function / method body max-returns=6 # Maximum number of branch for function / method body max-branchs=12 # Maximum number of statements in function / method body max-statements=50 # Maximum number of parents for a class (see R0901). max-parents=7 # Maximum number of attributes for a class (see R0902). max-attributes=7 # Minimum number of public methods for a class (see R0903). min-public-methods=2 # Maximum number of public methods for a class (see R0904). max-public-methods=20 # checks for : # * methods without self as first argument # * overridden methods signature # * access only to existent members via self # * attributes not defined in the __init__ method # * supported interfaces implementation # * unreachable code # [CLASSES] # List of interface methods to ignore, separated by a comma. This is used for # instance to not check methods defines in Zope's Interface base class. ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # checks for # * external modules dependencies # * relative / wildcard imports # * cyclic imports # * uses of deprecated modules # [IMPORTS] # Deprecated modules which should not be used, separated by a comma deprecated-modules=regsub,string,TERMIOS,Bastion,rexec # Create a graph of every (i.e. internal and external) dependencies in the # given file (report R0402 must not be disabled) import-graph= # Create a graph of external dependencies in the given file (report R0402 must # not be disabled) ext-import-graph= # Create a graph of internal dependencies in the given file (report R0402 must # not be disabled) int-import-graph= # checks for similarities and duplicated code. This computation may be # memory / CPU intensive, so you should disable it if you experiments some # problems. # [SIMILARITIES] # Minimum lines number of a similarity. min-similarity-lines=4 # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # checks for: # * warning notes in the code like FIXME, XXX # * PEP 263: source code with non ascii character but no encoding declaration # [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO # checks for : # * unauthorized constructions # * strict indentation # * line length # * use of <> instead of != # [FORMAT] # Maximum number of characters on a single line. max-line-length=78 # Maximum number of lines in a module #max-module-lines=1000 XXX max-module-lines=2000 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/python_codingstandard.rst000066400000000000000000000121311316323560300301730ustar00rootroot00000000000000.. _coding conventions: ================== Coding Conventions ================== The code *must* be compatible with the oldest supported version of python as given on the :ref:`download_and_install` page. Importing modules ================= In code, like the implementation of ASE, we must *not* use the ``import *`` syntax. Import everything explicitly from exactly the place where it's defined:: from ase.io import read, write Python Coding Conventions ========================= Please run :ref:`pep8 and pyflakes ` on your code before committing. The rules for the Python part are almost identical to those used by the `Docutils project`_: Contributed code will not be refused merely because it does not strictly adhere to these conditions; as long as it's internally consistent, clean, and correct, it probably will be accepted. But don't be surprised if the "offending" code gets fiddled over time to conform to these conventions. The project shall follow the generic coding conventions as specified in the `Style Guide for Python Code`_ and `Docstring Conventions`_ PEPs, summarized, clarified, and extended as follows: * 4 spaces per indentation level. No hard tabs. * Very important: Read the *Whitespace in Expressions and Statements* section of PEP8_. * Avoid introducing `trailing whitespaces`_. * Try to use only 7-bit ASCII, no 8-bit strings. * No one-liner compound statements (i.e., no ``if x: return``: use two lines & indentation), except for degenerate class or method definitions (i.e., ``class X: pass`` is OK.). * Lines should be no more than 78 characters long. * Use "StudlyCaps" for class names. * Use "lowercase" or "lowercase_with_underscores" for function, method, and variable names. For short names, maximum two words, joined lowercase may be used (e.g. "tagname"). For long names with three or more words, or where it's hard to parse the split between two words, use lowercase_with_underscores (e.g., "note_explicit_target", "explicit_target"). If in doubt, use underscores. * Avoid lambda expressions, which are inherently difficult to understand. Named functions are preferable and superior: they're faster (no run-time compilation), and well-chosen names serve to document and aid understanding. * Avoid functional constructs (filter, map, etc.). Use list comprehensions instead. * Use 'single quotes' for string literals, and """triple double quotes""" for :term:`docstring`\ s. Double quotes are OK for something like ``"don't"``. * Parentheses, ] and } must never be left alone, sad and lonesome on their own line. .. _Style Guide for Python Code: .. _PEP8: http://www.python.org/peps/pep-0008.html .. _Docstring Conventions: http://www.python.org/peps/pep-0257.html .. _Docutils project: http://docutils.sourceforge.net/docs/dev/policies.html #python-coding-conventions .. _trailing whitespaces: http://www.gnu.org/software/emacs/manual/html_node/ emacs/Useless-Whitespace.html .. attention:: Thus spake the Lord: Thou shalt indent with four spaces. No more, no less. Four shall be the number of spaces thou shalt indent, and the number of thy indenting shall be four. Eight shalt thou not indent, nor either indent thou two, excepting that thou then proceed to four. Tabs are right out. Georg Brandl General advice ============== * Get rid of as many ``break`` and ``continue`` statements as possible. Writing documentation in the code ================================= Here is an example of how to write good docstrings: https://github.com/numpy/numpy/blob/master/doc/example.py .. _stylecheck: Run pep8 and pyflakes on your code ================================== It's a good ide to run both the `pep8 `__ and pyflakes_ tools on your code (or use a text editor that does it automatically):: $ pep8 --ignore W293,E129 filename.py $ pyflakes filename.py or equivalently:: $ alias check="python -m ase.utils.stylecheck" $ check filename.py Install ``pep8`` and ``pyflakes`` like this: ``pip install pep8 pyflakes``. .. _pyflakes: https://github.com/pyflakes/pyflakes .. _autopep8py: Run autopep8.py on your code ============================ Another method of enforcing PEP8_ is using a tool such as `autopep8.py `_. These tools tend to be very effective at cleaning up code, but should be used carefully and code should be retested after cleaning it. Try:: $ autopep8.py --help .. attention:: There is a common issue with pep8 where spaces are added around the power operator. Code such as "x**2" should not be changed to "x ** 2". This issue is not fixed in pep8 as of the time of this writing, but a small `change `_ to autopep8 has been effective to prevent this change. .. _pylint: Using pylint to check your code =============================== A pylintrc trying to follow ASE :ref:`coding conventions` can be found here: :download:`pylintrc`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/tests.rst000066400000000000000000000052541316323560300247600ustar00rootroot00000000000000.. module:: ase.test ================ Testing the code ================ All additions and modifications to ASE should be tested. .. index:: testase Test scripts should be put in the :git:`ase/test` directory. Run all tests with:: python -c "from ase.test import test; test(2)" It is using the function: .. function:: test.test(verbosity=1, dir=None) Runs the test scripts in :git:`ase/test`. .. important:: When you fix a bug, add a test to the test suite checking that it is truly fixed. Bugs sometimes come back, do not give it a second chance! How to fail successfully ======================== The test suite provided by :func:`test.test` automatically runs all test scripts in the :git:`ase/test` directory and summarizes the results. .. note:: Test scripts are run from within Python using the :func:`execfile` function. Among other things, this provides the test scripts with an specialized global :term:`namespace`, which means they may fail or behave differently if you try to run them directly e.g. using :command:`python testscript.py`. If a test script causes an exception to be thrown, or otherwise terminates in an unexpected way, it will show up in this summary. This is the most effective way of raising awareness about emerging conflicts and bugs during the development cycle of the latest revision. Remember, great tests should serve a dual purpose: **Working interface** To ensure that the :term:`class`'es and :term:`method`'s in ASE are functional and provide the expected interface. Empirically speaking, code which is not covered by a test script tends to stop working over time. **Replicable results** Even if a calculation makes it to the end without crashing, you can never be too sure that the numerical results are consistent. Don't just assume they are, :func:`assert` it! .. function:: assert(expression) Raises an ``AssertionError`` if the ``expression`` does not evaluate to ``True``. Example:: from ase import molecule atoms = molecule('C60') atoms.center(vacuum=4.0) result = atoms.get_positions().mean(axis=0) expected = 0.5*atoms.get_cell().diagonal() tolerance = 1e-4 assert (abs(result - expected) < tolerance).all() Using functions to repeat calculations with different parameters:: def test(parameter): # setup atoms here... atoms.set_something(parameter) # calculations here... assert everything_is_going_to_be_alright if __name__ in ['__main__', '__builtin__']: test(0.1) test(0.3) test(0.7) .. important:: Unlike normally, the module *__name__* will be set to ``'__builtin__'`` when a test script is run by the test suite. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/todo.rst000066400000000000000000000006471316323560300245640ustar00rootroot00000000000000To do ===== Check our `issue tracker`_. .. _issue tracker: http://trac.fysik.dtu.dk/projects/ase/report/1 Documentation ------------- * Put example of Verlet dynamics in ase/md * talk about writing files - pos, py and pckl * Write more about the parameters of the supported elements of the EMT calculator. Code ---- * Could the *directions* argument of ase.lattice.FaceCenteredCubic etc. have default values? ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/translate.rst000066400000000000000000000121571316323560300256130ustar00rootroot00000000000000.. _translate: Translate ASE ============= You can contribute by translating the ASE GUI, :ref:`ase-gui`, into your language. How to translate ---------------- If any of the below steps prove difficult, be sure to ask on the :ref:`developer mailing list `. These steps should work on GNU/Linux. * :ref:`Download ` ASE. * Go to :file:`ase/gui/po`. There is a directory of the form :file:`{ll}` or :file:`{ll}_{LL}` for each language, where :file:`{ll}` is the `language code`_ and :file:`{LL}` the `country code`_. The latter is necessary only if variants of the same language are spoken in multiple countries. * If your language is not there already, run :file:`LANG={ll} make init`, substituting the desired language code. If necessary append the country code as well: :file:`LANG={ll_LL} ...`. * There should now be a template file for your language, :file:`{ll}/LC_MESSAGES/ag.po`, which can be filled out. You can edit the po-file with any text editor. It is easiest with a dedicated po-editor such as gtranslator, poedit or the gettext mode in EMACS (the package ":file:`gettext-el`"). Fill out the missing :file:`msgstr` entries like this:: #: ../energyforces.py:61 msgid "Calculate potential energy and the force on all atoms" msgstr "Beregn potentiel energi og kræfter pÃ¥ alle atomer" Your editor may wholly or partially hide some of the difficult formatting syntax. This next example shows a more syntactically complex case in case you need it:: #: ../calculator.py:107 msgid "" "GPAW implements Density Functional Theory using a\n" "Grid-based real-space representation of the wave\n" "functions, and the Projector Augmented Wave\n" "method for handling the core regions. \n" msgstr "" "GPAW implementerer tæthedsfunktionalteori med en Gitterbaseret\n" "repræsentation af bølgefunktioner i det reelle rum, samt\n" "Projector Augmented Wave-metoden til behandling\n" "af regionen omkring atomkerner. \n" If you are maintaining an existing translation, there may be some "fuzzy" messages. These are translations that were written previously but now need to be reviewed, maybe because the original string has been slightly modified. Edit them as appropriate and remove the "fuzzy" flag. There will be a few special constructs such as string substitution codes :file:`%(number)d` or :file:`%s`. These should remain unchanged in the translation as they are replaced by numbers or text at runtime. An underscore like in :file:`msgid "_File"` indicates that `F` is a shortcut key. Conflicting shortcut keys are not a big problem, but avoid them if you see them. Finally, some messages may have a lot of whitespace in them. This is due to bad programming style; just try to get approximately the same spacing in your translation. Already after writing a few translations, you can check that the translation works as expected by following the instructions in the next section. Check and commit your translation --------------------------------- * You can check the syntax by running :file:`msgfmt -cv ag.po`. This will report any syntax errors. * You can test your translation in :ref:`ase-gui` directly. First issue the command :file:`make` in :file:`ase/gui/po`, then reinstall ASE using the usual procedure. The translations will then be in the newly installed ASE. If you translate into the same language as your computer's locale, you should see the translations when you start :ref:`ase-gui` normally. If you translate ASE into another language, then run :file:`LANG={ll}_{LL}.UTF-8 ase gui`. On some operating systems you may need to run :file:`LANGUAGE={ll}_{LL}.UTF-8 ase gui` instead. Depending on your operating system, you may need to install :file:`gettext` or :file:`locales`. Send the partially or completely translated po-file to the developers mailing list and ask to have it committed. In fact, we will be quite thrilled if you send an e-mail even before you start, and be sure to send one whenever you have questions. .. note:: Certain uncommon languages such as Lojban, Anglo-Saxon or Klingon may not be compatible with our current build system. Please let us know if you want to translate ASE into such languages. Maintaining translations ------------------------ Messages will once in a while be added or changed in the ASE. Running :file:`make` in :file:`ase/gui/po` automatically synchronizes all templates with the messages in the current source tree while maximally reusing the existing translations. Some strings may be marked "fuzzy", indicating that they need review by translators (this happens e.g. if an English message is changed only slightly). One can then update the few fuzzy or untranslated messages. The obvious time to do this is shortly before a new stable release. If you are a committer, please run :file:`make` before committing and briefly check by running the translated GUI that nothing is obviously horrible. .. _language code: http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes .. _country code: http://www.gnu.org/software/gettext/manual/gettext.html#Country-Codes ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/writepngs.py000066400000000000000000000007101316323560300254500ustar00rootroot00000000000000from ase import io t = io.read('mytrajectory.traj') for i, s in enumerate(t): # rotate to the desired direction s.rotate('z', 'x', rotate_cell=True) # repeat with keeping old cell cell = s.get_cell() s = s.repeat((1, 3, 3)) s.set_cell(cell) ofname = str(i) + '.png' print('writing', ofname) io.write(ofname, s, show_unit_cell=True, bbox=[-3, -5, 50, 22]) # set bbox by hand, try and error ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/development/writing_documentation_ase.rst000066400000000000000000000076011316323560300310600ustar00rootroot00000000000000.. _writing_documentation_ase: ===================== Writing documentation ===================== We use the Sphinx_ tool to generate the documentation. The documentation is stored on GitLab as text files in the :git:`doc` directory using the reStructuredText_ markup language. .. _reStructuredText: http://docutils.sourceforge.net/rst.html .. _Sphinx: http://sphinx.pocoo.org Installing Docutils and Sphinx ============================== .. highlight:: bash If you do:: $ pip install sphinx_rtd_theme --user and add ``~/.local/bin`` to you :envvar:`PATH` environment variable, then you should be ready to go. You may need the following installed, but they are not required: scipy, matplotlib, povray, dvipng, pdflatex, bibtex, AUCTex, fontconfig, convert (ImageMagick). .. _using_sphinx: Using Sphinx ============ First, you should take a look at the documentation for Sphinx_ and reStructuredText_. If you don't already have your own copy of the ASE package, then read :ref:`here ` how to get everthing set up. Then :command:`cd` to the :file:`doc` directory and build the html-pages:: $ cd ~/ase/doc $ make This might take a long time the first time you do it. .. Note:: Make sure that you build the Sphinx documentation using the corresponding ASE version by setting the environment variables :envvar:`PYTHONPATH` and :envvar:`PATH`. Create a branch for your work, make your changes to the ``.rst`` files, run :command:`make` again, check the results and if things look ok, create a *merge request*:: $ git checkout -b fixdoc $ idle index.rst $ make $ make browse $ git commit -am "..." $ git push -u origin fixdoc Extensions to Sphinx ==================== .. highlight:: rest We have a couple of extensions to Sphinx: **:mol:** Use ``:mol:`CH_3OH``` to get :mol:`CH_3OH`. **:git:** A role for creating a link to a file on GitLab. If you write ``:git:`ase/atoms.py```, you will get: :git:`ase/atoms.py`. **:math:** This role is for inline LaTeX-style math. Example: ``:math:`\sin(x_n^2)``` gives you :math:`\sin(x_n^2)`. This role is actually the default for ASE's documentation, so you should leave out the ``:math:`` part like here: ```\sin(x_n^2)```. **.. math::** Write displayed LaTeX-style math. Example:: .. math:: \frac{1}{1+x^2} gives you: .. math:: \frac{1}{1+x^2} .. _generated: Running Python code to create figures ===================================== If you want to include a picture in your page, *you should not* check in the png-file to our Git repositoy! Instead, you should check in the Python script you used to generate the picture (you can also generate csv-files or pdf-files like this). The first line of the script should look like this:: # creates: fig1.png, fig2.png, table1.csv Sphinx will run the script and generate the files that you can then use in your rst-file. Examples: * :ref:`eos`. Source: :git:`doc/tutorials/eos/eos.py`, :git:`doc/tutorials/eos/eos.rst` * :ref:`lattice_constant`. Source: :git:`doc/tutorials/lattice_constant.py`, :git:`doc/tutorials/lattice_constant.rst` reStructedText in emacs ======================= .. highlight:: common-lisp For people using emacs, the `reStructuredText extension`_ is highly recommended. The intallation procedure is described in the top of the file, but for most people, it is enough to place it in your emacs load-path (typically ``.emacs.d/``) and add the lines:: (add-to-list 'load-path "~/.emacs.d") (require 'rst) somewhere in your ``.emacs`` file. To make the mode auto load for relevant file extension, you can write something like:: (setq auto-mode-alist (append '(("\\.rst$" . rst-mode) ("\\.rest$" . rst-mode)) auto-mode-alist)) In your ``.emacs`` file. .. _reStructuredText extension: http://docutils.sourceforge.net/ tools/editors/emacs/rst.el ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/easybuild/000077500000000000000000000000001316323560300225155ustar00rootroot00000000000000ASE-3.14.1-foss-2016b-Python-2.7.12.eb000066400000000000000000000012211316323560300276000ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/easybuildeasyblock = 'PythonPackage' name = 'ASE' version = '3.14.1' versionsuffix = '-Python-%(pyver)s' homepage = 'http://wiki.fysik.dtu.dk/ase' description = """ASE is a python package providing an open source Atomic Simulation Environment in the Python scripting language.""" toolchain = {'name': 'foss', 'version': '2016b'} source_urls = [PYPI_LOWER_SOURCE] sources = [SOURCELOWER_TAR_GZ] checksums = ['e65862336cf2633b7dfe03e9bddd9bd24e0fb88fa767b059ab6b6aeb35e94af2'] dependencies = [ ('Python', '2.7.12'), ('matplotlib', '1.5.3', '-Python-%(pyver)s'), ] sanity_check_paths = { 'files': ['bin/ase'], 'dirs': [], } moduleclass = 'chem' ASE-3.14.1-foss-2016b-Python-3.5.2.eb000066400000000000000000000012201316323560300275150ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/easybuildeasyblock = 'PythonPackage' name = 'ASE' version = '3.14.1' versionsuffix = '-Python-%(pyver)s' homepage = 'http://wiki.fysik.dtu.dk/ase' description = """ASE is a python package providing an open source Atomic Simulation Environment in the Python scripting language.""" toolchain = {'name': 'foss', 'version': '2016b'} source_urls = [PYPI_LOWER_SOURCE] sources = [SOURCELOWER_TAR_GZ] checksums = ['e65862336cf2633b7dfe03e9bddd9bd24e0fb88fa767b059ab6b6aeb35e94af2'] dependencies = [ ('Python', '3.5.2'), ('matplotlib', '1.5.3', '-Python-%(pyver)s'), ] sanity_check_paths = { 'files': ['bin/ase'], 'dirs': [], } moduleclass = 'chem' ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/ext.py000066400000000000000000000010021316323560300216770ustar00rootroot00000000000000import matplotlib as mpl from ase.utils.sphinx import mol_role, git_role_tmpl, create_png_files mpl.rcParams.update({'figure.max_open_warning': 100}) def git_role(role, rawtext, text, lineno, inliner, options={}, content=[]): return git_role_tmpl('https://gitlab.com/ase/ase/blob/master/', role, rawtext, text, lineno, inliner, options, content) def setup(app): app.add_role('mol', mol_role) app.add_role('git', git_role) create_png_files() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/faq.rst000066400000000000000000000045771316323560300220520ustar00rootroot00000000000000.. _faq: ========================== Frequently Asked Questions ========================== ASE-GUI ======= See also the :mod:`ase.gui`. How do I export images from a trajectory to png or pov files? ------------------------------------------------------------- With ase-gui, you can choose :menuselection:`File --> Save`, but this is not fun if you need to do it for many images. Here is how to do it on the command line for a number of images:: ase gui images.traj@0 -o image0.pov ase gui images.traj@1 -o image1.pov ase gui images.traj@2 -o image2.pov If you have many images, it will be easier to do it using the Python interpreter: >>> from ase.io import read, write >>> for n, image in enumerate(read('images.traj@:3')): ... write('image%d.pov' % n, image, run_povray=True, pause=False, ... rotation='-90x,10z') Here, we also: * run povray to generate png files * disable pausing between the images * set a rotation (choose :menuselection:`View --> Rotate ...` in ase-gui to select the best rotation angles) Try: >>> help(write) to see all possibilities or read more :func:`here `. General ======= .. _cite: How should I cite ASE? ---------------------- If you find ASE useful in your research please cite: | Ask Hjorth Larsen, Jens Jørgen Mortensen, Jakob Blomqvist, | Ivano E. Castelli, Rune Christensen, Marcin DuÅ‚ak, Jesper Friis, | Michael N. Groves, Bjørk Hammer, Cory Hargus, Eric D. Hermes, | Paul C. Jennings, Peter Bjerre Jensen, James Kermode, John R. Kitchin, | Esben Leonhard Kolsbjerg, Joseph Kubal, Kristen Kaasbjerg, | Steen Lysgaard, Jón Bergmann Maronsson, Tristan Maxson, Thomas Olsen, | Lars Pastewka, Andrew Peterson, Carsten Rostgaard, Jakob Schiøtz, | Ole Schütt, Mikkel Strange, Kristian S. Thygesen, Tejs Vegge, | Lasse Vilhelmsen, Michael Walter, Zhenhua Zeng, Karsten Wedel Jacobsen | `The Atomic Simulation Environment—A Python library for working with atoms`__ | J. Phys.: Condens. Matter Vol. **29** 273002, 2017 __ https://doi.org/10.1088/1361-648X/aa680e An older paper corresponding to an early version of ASE is: | S. R. Bahn and K. W. Jacobsen | `An object-oriented scripting interface to a legacy electronic structure code`__ | Comput. Sci. Eng., Vol. **4**, 56-66, 2002 __ http://dx.doi.org/10.1109/5992.998641 BibTex (:git:`doc/ASE.bib`): .. literalinclude:: ASE.bib ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/gallery/000077500000000000000000000000001316323560300221735ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/gallery/gallery.rst000066400000000000000000000021561316323560300243700ustar00rootroot00000000000000======= Gallery ======= Dissociation of oxygen on Pt(100) ================================= .. image:: o2pt100.png :width: 10cm :mod:`ase.io` :download:`o2pt100.py` Phase diagrams ============== .. |p2| image:: ../ase/phasediagram/ktao-2d.png :width: 5cm .. |p3| image:: ../ase/phasediagram/ktao-3d.png :width: 5cm |p2| |p3| :mod:`ase.phasediagram` :download:`ktao.py <../ase/phasediagram/ktao.py>` Brillouin zones =============== .. |bzcubic| image:: ../ase/dft/cubic.svg :width: 25% .. |bzbcc| image:: ../ase/dft/bcc.svg :width: 25% |bzcubic| |bzbcc| :mod:`ase.dft` :download:`bz.py <../ase/dft/bz.py>` Band-structure ============== .. image:: ../ase/dft/cu.png :width: 10cm :mod:`ase.dft.kpoints` :download:`bs.py <../ase/dft/bs.py>` Nudged elastic band calculations ================================ .. image:: ../tutorials/neb/diffusion-barrier.png :width: 10cm :mod:`ase.neb` :download:`barrier.py <../tutorials/neb/diffusion5.py>` Nanoparticle ============ .. image:: ../ase/cluster/culayer.png :width: 10cm :mod:`ase.cluster` :download:`cluster.py <../ase/cluster/cluster.py>` ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/gallery/o2pt100.py000066400000000000000000000035431316323560300236570ustar00rootroot00000000000000# creates: o2pt100.png import numpy as np from ase.io import write from ase.build import fcc100, add_adsorbate # the metal slab atoms = fcc100('Pt', size=[4, 10, 3], vacuum=10) transmittances = [0 for a in atoms] bonded_atoms = [] upper_layer_idx = [a.index for a in atoms if a.tag == 1] middle = atoms.positions[upper_layer_idx, :2].max(axis=0) / 2 # the dissociating oxygen... fake some dissociation curve gas_dist = 1.1 max_height = 8. min_height = 1. max_dist = 6 # running index for the bonds index = len(atoms) for i, x in enumerate(np.linspace(0, 1.5, 6)): height = (max_height - min_height) * np.exp(-2 * x) + min_height d = np.exp(1.5 * x) / np.exp(1.5**2) * max_dist + gas_dist pos = middle + [0, d / 2] add_adsorbate(atoms, 'O', height=height, position=pos) pos = middle - [0, d / 2] add_adsorbate(atoms, 'O', height=height, position=pos) transmittances += [x / 2] * 2 # we want bonds for the first two molecules if i < 2: bonded_atoms.append([len(atoms) - 1, len(atoms) - 2]) textures = ['ase3' for a in atoms] # add some semi-transparent bath (only in x/y direction for this example) cell = atoms.cell idx = [a.index for a in atoms if a.symbol == 'Pt'] Nbulk = len(idx) multiples = [0, 1, -1] for i in multiples: for j in multiples: if i == j == 0: continue chunk = atoms[idx] chunk.translate(i * cell[0] + j * cell[1]) atoms += chunk transmittances += [0.8] * Nbulk textures += ['pale'] * Nbulk bbox = [-30, 10, 5, 25] write('o2pt100.pov', atoms, rotation='90z,-75x', show_unit_cell=0, run_povray=True, display=False, pause=False, canvas_width=1024, bondatoms=bonded_atoms, camera_type='perspective', transmittances=transmittances, textures=textures, bbox=bbox) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/images.py000066400000000000000000000006641316323560300223610ustar00rootroot00000000000000import os.path try: from urllib.request import urlretrieve except ImportError: from urllib import urlretrieve url = 'http://wiki.fysik.dtu.dk/ase-files/' def setup(app): pass for file in ['ase/gui/ag.png', 'ase/ase-talk.pdf']: if os.path.isfile(file): continue try: urlretrieve(url + os.path.basename(file), file) print('Downloaded:', file) except IOError: pass ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/index.rst000066400000000000000000000161311316323560300223770ustar00rootroot00000000000000============================= Atomic Simulation Environment ============================= The Atomic Simulation Environment (ASE) is a set of tools and Python_ modules for setting up, manipulating, running, visualizing and analyzing atomistic simulations. The code is freely available under the :ref:`GNU LGPL license `. .. _Python: http://www.python.org >>> # Example: structure optimization of hydrogen molecule >>> from ase import Atoms >>> from ase.optimize import BFGS >>> from ase.calculators.nwchem import NWChem >>> from ase.io import write >>> h2 = Atoms('H2', ... positions=[[0, 0, 0], ... [0, 0, 0.7]]) >>> h2.calc = NWChem(xc='PBE') >>> opt = BFGS(h2) >>> opt.run(fmax=0.02) BFGS: 0 19:10:49 -31.435229 2.2691 BFGS: 1 19:10:50 -31.490773 0.3740 BFGS: 2 19:10:50 -31.492791 0.0630 BFGS: 3 19:10:51 -31.492848 0.0023 >>> write('H2.xyz', h2) >>> h2.get_potential_energy() -31.492847800329216 Supported :mod:`Calculators `: |abinit| |Asap| |Atomistica| |CASTEP| |CP2K| |deMon| |dftb| |elk| |exciting| |EMT| |fhi-aims| |fleur| |gpaw| |gromacs| |hotbit| |jacapo| |jdftx| |lammps| |nwchem| |octopus| |onetep| |q_espresso| |siesta| |turbomole| |vasp| :mod:`~ase.calculators.amber` :mod:`DMol³ ` Gaussian_ :mod:`Grimme DFT-D3 ` :mod:`~ase.calculators.gulp` Mopac_ :mod:`~ase.calculators.tip3p` Please go through this check-list to figure out if you need to convert your old ASE trajectory files to the modern file-format: .. image:: static/oldtraj.png :align: center See how to identify and convert old trajectory files here: :ref:`convert`. .. _news: News ==== * :ref:`ASE version 3.15.0 ` released (28 September 2017). * Bugfix release: :ref:`ASE version 3.14.1 ` (28 June 2017). * :ref:`ASE version 3.14.0 ` released (20 June 2017). * :ref:`Reference paper ` in J. Phys. Condens. Matter: `The Atomic Simulation Environment | A Python library for working with atoms `__ (7 June 2017). * :ref:`ASE version 3.13.0 ` released (7 February 2017). * Psi-k *Scientific Highlight Of The Month*: `The Atomic Simulation Environment | A Python library for working with atoms `__ (20 January 2017). * :ref:`ASE version 3.12.0 ` released (24 October 2016). * :ref:`ASE version 3.11.0 ` released (10 May 2016). * :ref:`ASE version 3.10.0 ` released (17 March 2016). * Web-page now uses the `Read the Docs Sphinx Theme `_ (20 February 2016). * The source code is now on https://gitlab.com/ase/ase (18 September 2015). * :ref:`ASE version 3.9.1 ` released (21 Juli 2015). * :ref:`ASE version 3.9.0 ` released (28 May 2015). * :ref:`ASE version 3.8.0 ` released (22 October 2013). * :ref:`ASE version 3.7.0 ` released (13 May 2013). * :ref:`ASE version 3.6.0 ` released (24 February 2012). * Bugfix release: :ref:`ASE version 3.5.1 ` (24 May 2011). * :ref:`ASE version 3.5.0 ` released (13 April 2011). * :ref:`ASE version 3.4.1 ` released (11 August 2010). * :ref:`ASE version 3.4 ` released (23 April 2010). * :ref:`ASE version 3.3 ` released (11 January 2010). * :ref:`ASE version 3.2 ` released (4 September 2009). * ASE has reached revision 1000 (16 July 2009). * :ref:`ASE version 3.1.0 ` released (27 March 2009). * Improved :mod:`ase.vibrations` module: More accurate and possibility to calculate :ref:`infrared` (13 March 2009). * :ref:`ASE version 3.0.0 ` released (13 November 2008). * Asap_ version 3.0.2 released (15 October 2008). * An experimental abinit interface released (9 June 2008). * Thursday April 24 will be ASE documentation-day. Ten people from CAMd/Cinf will do a "doc-sprint" from 9 to 16. (17 Apr 2008) * The new ASE-3.0 Sphinx_ page is now up and running! (2 Apr 2008) * A beta version of the new ASE-3.0 will be used for the electronic structure course at CAMd_. (10 Jan 2008) Contents ======== .. toctree:: about install tutorials/tutorials ase/ase cmdline tips gallery/gallery releasenotes contact development/development faq .. |abinit| image:: static/abinit.png :target: ase/calculators/abinit.html :align: middle .. |Asap| image:: static/asap.png :target: http://wiki.fysik.dtu.dk/asap :align: middle .. |Atomistica| image:: static/atomistica.png :target: https://github.com/Atomistica/atomistica :align: middle .. |CASTEP| image:: static/castep.png :target: ase/calculators/castep.html :align: middle .. |CP2K| image:: static/cp2k.png :target: ase/calculators/cp2k.html :align: middle .. |deMon| image:: static/demon.png :target: http://www.demon-software.com/public_html/index.html :align: middle .. |elk| image:: static/elk.png :target: http://elk.sourceforge.net/ :align: middle .. |EMT| image:: static/emt.png :target: ase/calculators/emt.html :align: middle .. |exciting| image:: static/exciting.png :target: ase/calculators/exciting.html :align: middle .. |dftb| image:: static/dftb.png :target: ase/calculators/dftb.html :align: middle .. |fhi-aims| image:: static/fhi-aims.png :target: ase/calculators/FHI-aims.html :align: middle .. |fleur| image:: static/fleur.png :target: ase/calculators/fleur.html :align: middle .. |gpaw| image:: static/gpaw.png :target: http://wiki.fysik.dtu.dk/gpaw :align: middle .. |gromacs| image:: static/gromacs.png :target: http://www.gromacs.org/ :align: middle .. |hotbit| image:: static/hotbit.png :target: https://trac.cc.jyu.fi/projects/hotbit :align: middle .. |jacapo| image:: static/jacapo.png :target: ase/calculators/jacapo.html :align: middle .. |jdftx| image:: static/jdftx.png :target: http://sourceforge.net/p/jdftx/wiki/ASE%20Interface :align: middle .. |lammps| image:: static/lammps.png :target: ase/calculators/lammps.html :align: middle .. |nwchem| image:: static/nwchem.png :target: ase/calculators/nwchem.html :align: middle .. |octopus| image:: static/octopus.png :target: ase/calculators/octopus.html :align: middle .. |onetep| image:: static/onetep.png :target: http://www.onetep.org/ :align: middle .. |q_espresso| image:: static/espresso.png :target: ase/calculators/espresso.html :align: middle :scale: 50 .. |siesta| image:: static/siesta.png :target: ase/calculators/siesta.html :align: middle .. |turbomole| image:: static/tm_logo_l.png :target: ase/calculators/turbomole.html :align: middle .. |vasp| image:: static/vasp.png :target: ase/calculators/vasp.html :align: middle .. _Gaussian: http://www.gaussian.com/ .. _Mopac: http://openmopac.net/ .. _Sphinx: http://sphinx.pocoo.org .. _Asap: http://wiki.fysik.dtu.dk/asap .. _CAMd: http://www.camd.dtu.dk ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/install.rst000066400000000000000000000124621316323560300227410ustar00rootroot00000000000000.. _download_and_install: ============ Installation ============ Requirements ============ * Python_ 2.7, 3.4-3.6 * NumPy_ (base N-dimensional array package) Optional: * For extra functionality: SciPy_ (library for scientific computing) * For :mod:`ase.gui`: Matplotlib_ (2D Plotting) .. _Python: http://www.python.org/ .. _NumPy: http://docs.scipy.org/doc/numpy/reference/ .. _SciPy: http://docs.scipy.org/doc/scipy/reference/ .. _Matplotlib: http://matplotlib.org/ .. _PyPI: https://pypi.org/project/ase .. _PIP: https://pip.pypa.io/en/stable/ Installation using system package managers ========================================== Linux ----- Major GNU/Linux distributions (including Debian and Ubuntu derivatives, Arch, Fedora, Red Hat and CentOS) have a ``python-ase`` package available that you can install on your system. This will manage dependencies and make ASE available for all users. .. note:: Depending on the distribution, this may not be the latest release of ASE. Max OSX (Homebrew) ------------------ Mac users may be familiar with Homebrew_. Before installing ASE with pip_ as described in the next section. Homebrew's ``python`` package provides an up- to-date version of Python 2.7.x and sets up ``pip`` for you:: $ brew install python .. _Homebrew: http://brew.sh .. index:: pip .. _pip installation: Installation using pip ====================== .. highlight:: bash The simplest way to install ASE is to use pip_ which will automatically get the source code from PyPI_:: $ pip install --upgrade --user ase This will install ASE in a local folder where Python can automatically find it (``~/.local`` on Unix, see here_ for details). Some :ref:`cli` will be installed in the following location: ================= ============================ Unix and Mac OS X ``~/.local/bin`` Homebrew ``~/Library/Python/X.Y/bin`` Windows ``%APPDATA%/Python/Scripts`` ================= ============================ Make sure you have that path in your :envvar:`PATH` environment variable. Now you should be ready to use ASE, but before you start, please `run the tests`_ as described below. .. note:: If your OS doesn't have ``numpy``, ``scipy`` and ``matplotlib`` packages installed, you can install them with:: $ pip install --upgrade --user numpy scipy matplotlib .. _here: https://docs.python.org/3/library/site.html#site.USER_BASE .. _download: Installation from source ======================== As an alternative to ``pip``, you can also get the source from a tar-file or from Git. :Tar-file: You can get the source as a `tar-file `__ for the latest stable release (ase-3.15.0.tar.gz_) or the latest development snapshot (``_). Unpack and make a soft link:: $ tar -xf ase-3.15.0.tar.gz $ ln -s ase-3.15.0 ase Here is a `list of tarballs `__. :Git clone: Alternatively, you can get the source for the latest stable release from https://gitlab.com/ase/ase like this:: $ git clone -b 3.15.0 https://gitlab.com/ase/ase.git or if you want the development version:: $ git clone https://gitlab.com/ase/ase.git :Pip: install git master directly with pip:: $ pip install --upgrade git+https://gitlab.com/ase/ase.git@master The ``--upgrade`` ensures that you always reinstall even if the version number hasn't changed. Add ``~/ase`` to your :envvar:`PYTHONPATH` environment variable and add ``~/ase/bin`` to :envvar:`PATH` (assuming ``~/ase`` is where your ASE folder is). Alternatively, you can install the code with ``python setup.py install --user`` and add ``~/.local/bin`` to the front of your :envvar:`PATH` environment variable (if you don't already have that). Finally, please `run the tests`_. .. note:: We also have Git-tags for older stable versions of ASE. See the :ref:`releasenotes` for which tags are available. Also the dates of older releases can be found there. .. _ase-3.15.0.tar.gz: https://pypi.org/packages/source/a/ase/ase-3.15.0.tar.gz Environment variables ===================== .. envvar:: PATH Colon-separated paths where programs can be found. .. envvar:: PYTHONPATH Colon-separated paths where Python modules can be found. Set these permanently in your :file:`~/.bashrc` file:: $ export PYTHONPATH=:$PYTHONPATH $ export PATH=:$PATH or your :file:`~/.cshrc` file:: $ setenv PYTHONPATH :${PYTHONPATH} $ setenv PATH :${PATH} .. note:: If running on Mac OSX: be aware that terminal sessions will source :file:`~/.bash_profile` by default and not :file:`~/.bashrc`. Either put any ``export`` commands into :file:`~/.bash_profile` or source :file:`~/.bashrc` in all Bash sessions by adding :: if [ -f ${HOME}/.bashrc ]; then source ${HOME}/.bashrc fi to your :file:`~/.bash_profile`. .. index:: test .. _running tests: .. _run the tests: Test your installation ====================== Before running the tests, make sure you have set your :envvar:`PATH` environment variable correctly as described in the relevant section above. Run the tests like this:: $ ase test # takes 1 min. and send us the output if there are failing tests. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/logo.py000066400000000000000000000016721316323560300220540ustar00rootroot00000000000000import numpy as np from ase import Atoms, Atom ase = """\ H HH HHH H H H H HHH H HH H H H H H H HH HHH""" d = 1.2 logo = Atoms() for i, line in enumerate(ase.split('\n')): for j, c in enumerate(line): if c == 'H': logo.append(Atom('H', [d * j, d * i, 0])) logo.set_cell((15, 15, 2)) logo.center() if 1: from gpaw import GPAW calc = GPAW() logo.set_calculator(calc) e = logo.get_potential_energy() calc.write('logo2.gpw') if 0: from gpaw import GPAW calc = GPAW('logo2.gpw', idiotproof=0) if 1: print(calc.density.nt_sg.shape) n = calc.density.nt_sg[0, :, :, 10] # 1c4e63 c0 = np.array([19, 63, 82.0]).reshape((3, 1, 1)) / 255 c1 = np.array([1.0, 1, 0]).reshape((3, 1, 1)) a = c0 + n / n.max() * (c1 - c0) import pylab as p print(a.shape) i = p.imshow(a.T, aspect=True) i.write_png('ase.png') p.axis('off') p.savefig('ase2.png', dpi=200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/numpy.rst000066400000000000000000000052071316323560300224420ustar00rootroot00000000000000.. _numpy: Numeric arrays in Python ======================== Links to NumPy's webpage: * `Numpy and Scipy Documentation`_ * `Numpy user guide `_ .. _Numpy and Scipy Documentation: http://docs.scipy.org/doc ASE makes heavy use of an extension to Python called NumPy. The NumPy module defines an ``ndarray`` type that can hold large arrays of uniform multidimensional numeric data. An array is similar to a ``list`` or a ``tuple``, but it is a lot more powerful and efficient. XXX More examples from everyday ASE-life here ... >>> import numpy as np >>> a = np.zeros((3, 2)) >>> a[:, 1] = 1.0 >>> a[1] = 2.0 >>> a array([[ 0., 1.], [ 2., 2.], [ 0., 1.]]) >>> a.shape (3, 2) >>> a.ndim 2 The conventions of numpy's linear algebra package: >>> import numpy as np >>> >>> # Make a random hermitian matrix, H >>> H = np.random.rand(6, 6) + 1.j * np.random.rand(6, 6) >>> H = H + H.T.conj() >>> >>> # Determine eigenvalues and rotation matrix >>> eps, U = np.linalg.eigh(H) >>> >>> # Sort eigenvalues >>> sorted_indices = eps.real.argsort() >>> eps = eps[sorted_indices] >>> U = U[:, sorted_indices] >>> >>> # Make print of numpy arrays less messy: >>> np.set_printoptions(precision=3, suppress=True) >>> >>> # Check that U diagonalizes H: >>> print(np.dot(np.dot(U.T.conj(), H), U) - np.diag(eps)) >>> print(np.allclose(np.dot(np.dot(U.T.conj(), H), U), np.diag(eps))) >>> >>> # The eigenvectors of H are the *coloumns* of U: >>> np.allclose(np.dot(H, U[:, 3]), eps[3] * U[:, 3]) >>> np.allclose(np.dot(H, U), eps * U) The rules for multiplying 1D arrays with 2D arrays: * 1D arrays and treated like shape (1, N) arrays (row vectors). * left and right multiplications are treated identically. * A length `m` *row* vector can be multiplied with an `n \times m` matrix, producing the same result as if replaced by a matrix with `n` copies of the vector as rows. * A length `n` *column* vector can be multiplied with an `n \times m` matrix, producing the same result as if replaced by a matrix with `m` copies of the vector as columns. Thus, for the arrays below: >>> M = np.arange(5 * 6).reshape(5, 6) # A matrix af shape (5, 6) >>> v5 = np.arange(5) + 10 # A vector of length 5 >>> v51 = v5[:, None] # A length 5 column vector >>> v6 = np.arange(6) - 12 # A vector of length 6 >>> v16 = v6[None, :] # A length 6 row vector The following identities hold:: v6 * M == v16 * M == M * v6 == M * v16 == M * v16.repeat(5, 0) v51 * M == M * v51 == M * v51.repeat(6, 1) The exact same rules apply for adding and subtracting 1D arrays to / from 2D arrays. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/python.rst000066400000000000000000000145141316323560300226140ustar00rootroot00000000000000.. _what is python: --------------- What is Python? --------------- This section will give a very brief introduction to the Python language. .. seealso:: * The Python_ home page. * Python Recipes_. * Try a `Python quick reference card`_ or a `different reference card`_. .. _Recipes: http://code.activestate.com/recipes/langs/python .. _Python quick reference card: http://www.limsi.fr/Individu/pointal/python/pqrc .. _different reference card: http://rgruet.free.fr/ .. _Python: http://www.python.org Executing Python code --------------------- You can execute Python code interactively by starting the interpreter like this:: $ python3 >>> print('hello') hello .. note:: ASE works with both Python 2 and the latest Python 3 --- `the differences are minor `__. We use Python 3 for this web-page. You can also put the ``print('hello')`` line in a file (``hello.py``) and execute it as a Python script:: $ python3 hello.py hello Or like this:: $ python3 -i hello.py hello >>> print('hi!') hi! Finally, you can put ``#!/usr/bin/env python3`` in the first line of the ``hello.py`` file, make it executable (``chmod +x hello.py``) and execute it like any other executable. .. tip:: For interactive Python sessions, it is very convenient to have a personal ``.pythonrc`` file:: import rlcompleter import readline readline.parse_and_bind("tab: complete") import numpy as np from ase import * and point the :envvar:`PYTHONSTARTUP` environment variable at it (see rlcompleter_ for details). .. _rlcompleter: https://docs.python.org/2/library/rlcompleter.html .. tip:: For an even better interactive experience, use ipython_. .. _ipython: http://ipython.scipy.org Types ----- Python has the following predefined types: =========== ===================== ========================== type description example =========== ===================== ========================== ``bool`` boolean ``False`` ``int`` integer ``117`` ``float`` floating point number ``1.78`` ``complex`` complex number ``0.5 + 2.0j`` ``str`` string ``'abc'`` ``tuple`` tuple ``(1, 'hmm', 2.0)`` ``list`` list ``[1, 'hmm', 2.0]`` ``dict`` dictionary ``{'a': 7.0, 23: True}`` =========== ===================== ========================== A ``dict`` object is mapping from keys to values: >>> d = {'s': 0, 'p': 1} >>> d['d'] = 2 >>> d {'p': 1, 'd': 2, 's': 0} >>> d['p'] 1 In this example all keys are strings and all values are integers. Types can be freely mixed in the same dictionary; any type can be used as a value and most types can be used as keys (mutable objects cannot be keys). A ``list`` object is an ordered collection of arbitrary objects: >>> l = [1, ('gg', 7), 'hmm', 1.2] >>> l[1] ('gg', 7) >>> >>> l [1, ('gg', 7), 'hmm', 1.2] >>> l[-2] 'hmm' Indexing a list with negative numbers counts from the end of the list, so element -2 is the second last. A ``tuple`` behaves like a ``list`` - except that it can't be modified in place. Objects of types ``list`` and ``dict`` are *mutable* - all the other types listed in the table are *immutable*, which means that once an object has been created, it can not change. Tuples can therefore be used as dictionary keys, lists cannot. .. note:: List and dictionary objects *can* change. Variables in Python are references to objects - think of the = operator as a "naming operator", *not* as an assignment operator. This is demonstrated here: >>> a = ['q', 'w'] >>> b = a >>> a.append('e') >>> a ['q', 'w', 'e'] >>> b ['q', 'w', 'e'] The line b = a gives a new name to the array, and both names now refer to the same list. However, often a new object is created and named at the same time, in this example the number 42 is *not* modified, a new number 47 is created and given the name ``d``. And later, ``e`` is a name for the number 47, but then a *new* number 48 is created, and ``e`` now refers to that number: >>> c = 42 >>> d = c + 5 >>> c 42 >>> d 47 >>> e = d >>> e += 1 >>> (d, e) (47, 48) .. note:: Another very important type is the ``ndarray`` type described here: :ref:`numpy`. It is an array type for efficient numerics, and is heavily used in ASE. Loops ----- A loop in Python can be done like this: >>> things = ['a', 7] >>> for x in things: ... print(x) ... a 7 The ``things`` object could be any sequence. Strings, tuples, lists, dictionaries, ndarrays and files are sequences. Try looping over some of these types. Often you need to loop over a range of numbers: >>> for i in range(5): ... print(i, i*i) ... 0 0 1 1 2 4 3 9 4 16 Functions and classes --------------------- A function is defined like this: >>> def f(x, m=2, n=1): ... y = x + n ... return y**m ... >>> f(5) 36 >>> f(5, n=8) 169 Here ``f`` is a function, ``x`` is an argument, ``m`` and ``n`` are keywords with default values ``2`` and ``1`` and ``y`` is a variable. A *class* is defined like this: >>> class A: ... def __init__(self, b): ... self.c = b ... def m(self, x): ... return self.c * x ... def get_c(self): ... return self.c You can think of a class as a template for creating user defined objects. The ``__init__()`` function is called a *constructor*, it is being called when objects of this type are being created. In the class ``A`` ``__init__`` is a constructor, ``c`` is an attribute and ``m`` and ``get_c`` are methods. >>> a = A(7) >>> a.c 7 >>> a.get_c() 7 >>> a.m(3) 21 Here we make an instance (or object) ``a`` of type ``A``. Importing modules ----------------- If you put the definitions of the function ``f`` and the class ``C`` in a file ``stuff.py``, then you can use that code from another piece of code:: from stuff import f, C print(f(1, 2)) print(C(1).m(2)) or:: import stuff print(stuff.f(1, 2)( print(stuff.C(1).m(2)) or:: import stuff as st print(st.f(1, 2)) print(st.C(1).m(2)) Python will look for ``stuff.py`` in these directories: 1) current working directory 2) directories listed in your :envvar:`PYTHONPATH` 3) Python's own system directory (typically :file:`/usr/lib/pythonX.Y`) and import the first one found. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/releasenotes.rst000066400000000000000000000451541316323560300237700ustar00rootroot00000000000000.. _releasenotes: ============= Release notes ============= Git master branch ================= :git:`master <>`. * No changes yet Version 3.15.0 ============== 28 September 2017: :git:`3.15.0 <../3.15.0>` * If you are running your Python script in :mod:`parallel ` then by default, :func:`ase.io.read` and :func:`ase.io.iread` will read on the master and broadcast to slaves, and :func:`ase.io.write` will only write from master. Use the new keyword ``parallel=False`` to read/write from the individual slaves. * New ``ase find`` :ref:`command ` for finding atoms in files. * Added :class:`Espresso ` calculator for Quantum ESPRESSO in module :mod:`ase.calculators.espresso`. * The :func:`ase.dft.kpoints.get_special_points` function has a new call signature: Before it was ``get_special_points(lattice, cell)``, now it is ``get_special_points(cell, lattice=None)``. The old way still works, but you will get a warning. * The :class:`ase.dft.dos.DOS` object will now use linear tetrahedron interpolation of the band-structure if you set ``width=0.0``. It's slow, but sometimes worth waiting for. It uses the :func:`ase.dft.dos.ltidos` helper function. * :func:`ase.io.read` can now read QBox output files. * The :mod:`ase.calculators.qmmm` module can now also use :ref:`Turbomole ` and :mod:`DFTB+ ` as the QM part. * New :ref:`db tutorial` tutorial. * :mod:`ase.gui`: Improved atom colouring options; support the Render Scene (povray) and Ctrl+R rotation features again; updated German and Chinese translations. * Get the :class:`~ase.spacegroup.Spacegroup` object from an :class:`~ase.Atoms` object with the new :func:`ase.spacegroup.get_spacegroup` function. Version 3.14.1 ============== 28 June 2017: :git:`3.14.1 <../3.14.1>`. * Calling the :func:`ase.dft.bandgap.bandgap` function with ``direct=True`` would return band indices that were off by one. Fixed now. Version 3.14.0 ============== 20 June 2017: :git:`3.14.0 <../3.14.0>`. * Python 2.6 no longer supported. * The command-line tools :program:`ase-???` have been replaced by a single :program:`ase` command with sub-commands (see :ref:`cli`). For help, type:: $ ase --help $ ase sub-command --help * The old :program:`ase-build` command which is now called :program:`ase build` will no longer add vacuum by default. Use ``ase build -V 3.0`` to get the old behavior. * All methods of the :class:`~ase.Atoms` object that deal with angles now have new API's that use degrees instead of radians as the unit of angle (:meth:`~ase.Atoms.get_angle`, :meth:`~ase.Atoms.set_angle`, :meth:`~ase.Atoms.get_dihedral`, :meth:`~ase.Atoms.set_dihedral`, :meth:`~ase.Atoms.rotate_dihedral`, :meth:`~ase.Atoms.rotate`, :meth:`~ase.Atoms.euler_rotate`). The old way of calling these methods works as always, but will give you a warning. Example: >>> water.get_angle(0, 1, 2) # new API 104.52 >>> water.get_angle([0, 1, 2]) # old API /home/jensj/ase/ase/atoms.py:1484: UserWarning: Please use new API (which will return the angle in degrees): atoms_obj.get_angle(a1,a2,a3)*pi/180 instead of atoms_obj.get_angle([a1,a2,a3]) 1.8242181341844732 Here are the changes you need to make in order to get rid of warnings: Old API: >>> a1 = atoms.get_angle([0, 1, 2]) >>> atoms.set_angle([0, 1, 2], pi / 2) >>> a2 = atoms.get_dihedral([0, 1, 2, 3]) >>> atoms.set_dihedral([0, 1, 2, 3], pi / 6) >>> atoms.rotate_dihedral([0, 1, 2, 3], 10.5 * pi / 180) >>> atoms.rotate('z', pi / 4) >>> atoms.rotate_euler(phi=phi, theta=theta, psi=psi) New API: >>> a1 = atoms.get_angle(0, 1, 2) * pi / 180 >>> atoms.set_angle(0, 1, 2, angle=90) >>> a2 = atoms.get_dihedral(0, 1, 2, 3) * pi / 180 >>> atoms.set_dihedral(0, 1, 2, 3, angle=30) >>> atoms.rotate_dihedral(0, 1, 2, 3, angle=10.5) >>> atoms.rotate(45, 'z') >>> atoms.euler_rotate(phi=phi * 180 / pi, ... theta=theta * 180 / pi, ... psi=psi * 180 / pi) * The web-interface to the :mod:`ase.db` module now uses Bootstrap and looks much nicer. Querying the database is also much easier. See https://cmrdb.fysik.dtu.dk for an example. * The PostgreSQL backend for :mod:`ase.db` can now contain more than one ASE database. * An ASE database can now have :ref:`metadata` describing the data. Metadata is a dict with any of the following keys: ``title``, ``key_descriptions``, ``default_columns``, ``special_keys`` and ``layout``. * :data:`ase.data.atomic_masses` has been updated to IUPAC values from 2016. Several elements will now have different weights which will affect dynamic calculations. The old values can be recovered like this: >>> from ase.data import atomic_masses_legacy >>> atoms.set_masses(atomic_masses_legacy[atoms.numbers]) * New :func:`ase.data.isotopes.download_isotope_data` function for getting individual isotope masses from NIST. * New :func:`ase.eos.calculate_eos` helper function added. * Added DeltaCodesDFT data: :data:`ase.collections.dcdft`. * :mod:`ase.gui` can now load and display any sequence of :class:`~ase.Atoms` objects; it is no longer restricted to sequences with a constant number of atoms or same chemical composition. * Trajectory files can now store any sequence of :class:`~ase.Atoms` objects. Previously, atomic numbers, masses, and constraints were only saved for the first image, and had to apply for all subsequent ones. * Added calculator interface for DMol\ :sup:`3`. * Added calculator interface for GULP. * Added file formats .car, .incoor, and .arc, related to DMol\ :sup:`3`. * New function for interpolating from Monkhors-Pack sampled values in the BZ to arbitrary points in the BZ: :func:`ase.dft.kpoints.monkhorst_pack_interpolate`. * New *band-structure* command for the :program:`ase` :ref:`cli`. * Two new functions for producing chemical formulas: :func:`ase.utils.formula_hill` and :func:`ase.utils.formula_metal`. * The :func:`ase.dft.bandgap.get_band_gap` function is now deprecated. Use the new one called :func:`ase.dft.bandgap.bandgap` (it's more flexible and returns also band indices). * New :mod:`Viewer for Jupyter notebooks `. Version 3.13.0 ============== 7 February 2017: :git:`3.13.0 <../3.13.0>`. * The default unit-cell when you create an :class:`~ase.Atoms` object has been changed from ``[[1,0,0],[0,1,0],[0,0,1]]`` to ``[[0,0,0],[0,0,0],[0,0,0]]``. * New :attr:`ase.Atoms.number_of_lattice_vectors` attribute equal to, big surprise, the number of non-zero lattice vectors. * The :meth:`ase.Atoms.get_cell` method has a new keyword argument ``complete``. Use ``atoms.get_cell(complete=True)`` to get a complete unit cell with missing lattice vectors added at right angles to the existing ones. There is also a function :func:`ase.geometry.complete_cell` that will complete a unit cell. * :func:`~ase.build.graphene_nanoribbon` no longer adds 2.5 Ã… of vacuum by default. * All functions that create molecules, chains or surfaces (see the :mod:`ase.build` module) will no longer add "dummy" lattice vectors along the non-periodic directions. As an example, the surface functions will generate unit cells of the type ``[[a1,a2,0],[b1,b2,0],[0,0,0]]``. In order to define all three lattice vectors, use the ``vacuum`` keyword that all of the 0-d, 1-d and 2-d functions have or, equivalently, call the :meth:`~ase.Atoms.center` method. * Many of the :ref:`surface generating functions ` have changed their behavior when called with ``vacuum=None`` (the default). Before, a vacuum layer equal to the interlayer spacing would be added on the upper surface of the slab. Now, the third axis perpendicular to the surface will be undefined (``[0, 0, 0]``). Use ``vacuum=`` to get something similar to the old behavior. * New :func:`ase.geometry.is_orthorhombic` and :func:`ase.geometry.orthorhombic` functions added. * :mod:`ase.gui` now works on Python 3. * NEB-tools class has been renamed to :class:`~ase.neb.NEBTools`. * :mod:`Optimizers ` now try force-consistent energies if possible (instead of energies extrapolated to 0.0 K). Version 3.12.0 ============== 24 October 2016: :git:`3.12.0 <../3.12.0>`. * New :class:`ase.constraints.ExternalForce` constraint. * Updated :mod:`ase.units` definition to CODATA 2014. Additionally, support for older versions of CODATA was added such that the respective units can be created by the user when needed (e.g. interfacing codes with different CODATA versions in use). * New :mod:`ase.calculators.checkpoint` module. Adds restart and rollback capabilities to ASE scripts. * Two new flawors of :class:`~ase.neb.NEB` calculations have been added: ``method='eb'`` and ``method='improvedtangent'``. * :func:`ase.io.write` can now write XSD files. * Interfaces for deMon, Amber and ONETEP added. * New :ref:`defects` tutorial and new super-cell functions: :func:`~ase.build.get_deviation_from_optimal_cell_shape`, :func:`~ase.build.find_optimal_cell_shape`, :func:`~ase.build.find_optimal_cell_shape_pure_python`, :func:`~ase.build.make_supercell`. * New :class:`~ase.dft.band_structure.BandStructure` object. Can identify special points and create nice plots. * Calculators that inherit from :class:`ase.calculators.calculator.Calculator` will now have a :meth:`~ase.calculators.calculator.Calculator.band_structure` method that creates a :class:`~ase.dft.band_structure.BandStructure` object. * Addition to :mod:`~ase.geometry` module: :func:`~ase.geometry.crystal_structure_from_cell`. * New functions in :mod:`ase.dft.kpoints` module: :func:`~ase.dft.kpoints.parse_path_string`, :func:`~ase.dft.kpoints.labels_from_kpts` and :func:`~ase.dft.kpoints.bandpath`. * Helper function for generation of Monkhorst-Pack samplings and BZ-paths: :func:`ase.calculators.calculator.kpts2ndarray`. * Useful class for testing band-structure stuff: :class:`ase.calculators.test.FreeElectrons`. * The ``cell`` attribute of an :class:`~ase.Atoms` object and the ``cell`` keyword for the :class:`~ase.Atoms` constructor and the :meth:`~ase.Atoms.set_cell` method now accepts unit cells given ase ``[a, b, c, alpha, beta, gamma]``, where the three angles are in degrees. There is also a corresponding :meth:`~ase.Atoms.get_cell_lengths_and_angles` method. * Galician translation of ASE's GUI. * Two new preconditioned structure optimizers available. See :mod:`ase.optimize.precon`. * Trajectory files now contain information about the calculator and also information from an optimizer that wrote the trajectory. Version 3.11.0 ============== 10 May 2016: :git:`3.11.0 <../3.11.0>`. * Special `\mathbf{k}`-points from the [Setyawana-Curtarolo]_ paper was added: :data:`ase.dft.kpoints.special_points`. * New :mod:`ase.collections` module added. Currently contains the G2 database of molecules and the S22 set of weakly interacting dimers and complexes. * Moved modules: * ``ase.utils.eos`` moved to :mod:`ase.eos` * ``ase.calculators.neighborlist`` moved to :mod:`ase.neighborlist` * ``ase.lattice.spacegroup`` moved to :mod:`ase.spacegroup` * The ``InfraRed`` that used to be in the ``ase.infrared`` or ``ase.vibrations.infrared`` modules is now called :class:`~ase.vibrations.Infrared` and should be imported from the :mod:`ase.vibrations` module. * Deprecated modules: ``ase.structure``, ``ase.utils.geometry``, ``ase.utils.distance``, ``ase.lattice.surface``. The functions from these modules that will create and manipulate :class:`~ase.Atoms` objects are now in the new :mod:`ase.build` module. The remaining functions have been moved to the new :mod:`ase.geometry` module. * The ``ase.lattice.bulk()`` function has been moved to :func:`ase.build.bulk`. * Two new functions: :func:`~ase.geometry.cell_to_cellpar` and :func:`~ase.geometry.cellpar_to_cell`. * We can now :func:`~ase.io.read` and :func:`~ase.io.write` magres files. * :class:`~ase.neb.NEB` improvement: calculations for molecules can now be told to minimize ratation and translation along the path. Version 3.10.0 ============== 17 Mar 2016: :git:`3.10.0 <../3.10.0>`. * :ref:`old trajectory` files can no longer be used. See :ref:`convert`. * New iterator function :func:`ase.io.iread` for iteratively reading Atoms objects from a file. * The :func:`ase.io.read` function and command-line tools can now read ``.gz`` and ``.bz2`` compressed files. * Two new decorators :func:`~ase.parallel.parallel_function` and :func:`~ase.parallel.parallel_generator` added. * Source code moved to https://gitlab.com/ase/ase. * Preliminary :mod:`ase.calculators.qmmm` module. * Improved :mod:`~ase.calculators.tip3p.TIP3P` potential. * Velocity Verlet will now work correctly with constraints. * ASE's GUI no longer needs a special GTK-backend for matplotlib to work. This will make installation of ASE much simpler. * We can now :func:`~ase.io.read` and :func:`~ase.io.write` JSV files. * New :func:`ase.dft.kpoints.get_special_points` function. * New :func:`ase.geometry.get_duplicate_atoms` function for finding and removing atoms on top of each other. * New: A replacement :mod:`Siesta ` calculator was implemented. It closely follows the :class:`ase.calculators.calculator.FileIOCalculator` class which should ease further development. Handling pseudopotentials, basis sets and ghost atoms have been made much more flexible in the new version. Version 3.9.1 ============= 21 July 2015: :git:`3.9.1 <../3.9.1>`. * Added function for finding maximally-reduced Niggli unit cell: :func:`ase.build.niggli_reduce`. * Octopus interface added (experimental). Version 3.9.0 ============= 28 May 2015: :git:`3.9.0 <../3.9.0>`. * Genetic algorithm implemented; :mod:`ase.ga`. This can be used for the optimization of: atomic cluster structure, materials properties by use of template structures. Extension to other projects related to atomic simulations should be straightforward. * The ``ase.lattice.bulk`` function can now build the Wurtzite structure. * The :class:`ase.utils.timing.Timer` was moved from GPAW to ASE. * New :mod:`ase.db` module. * New functions: :func:`ase.build.fcc211` and :func:`ase.visualize.mlab.plot`. * New :class:`~ase.Atoms` methods: :meth:`ase.Atoms.get_distances()` and :meth:`ase.Atoms.get_all_distances()`. * :ref:`bash completion` can now be enabled. * Preliminary support for Python 3. * Wrapping: new :meth:`ase.Atoms.wrap` method and :func:`ase.geometry.wrap_positions` function. Also added ``wrap=True`` keyword argument to :meth:`ase.Atoms.get_scaled_positions` that can be used to turn off wrapping. * New improved method for initializing NEB calculations: :meth:`ase.neb.NEB.interpolate`. * New pickle-free future-proof trajectory file format added: :ref:`new trajectory`. * We can now do :ref:`phase diagrams`. * New :func:`ase.build.mx2` function for 1T and 2H metal dichalcogenides and friends. * New :func:`ase.dft.bandgap.get_band_gap` function * :class:`~ase.calculators.cp2k.CP2K` interface. Version 3.8.0 ============= 22 October 2013: :git:`3.8.0 <../3.8.0>`. * ASE's :mod:`gui ` renamed from ``ag`` to ``ase-gui``. * New :ref:`STM ` module. * Python 2.6 is now a requirement. * The old ``ase.build.bulk`` function is now deprecated. Use the new one instead (:func:`ase.lattice.bulk`). * We're now using BuildBot for continuous integration: https://ase-buildbot.fysik.dtu.dk/waterfall * New interface to the JDFTx code. Version 3.7.0 ============= 13 May 2013: :git:`3.7.0 <../3.7.0>`. * ASE's GUI can now be configured to be more friendly to visually impaired users: :ref:`high contrast`. * The :class:`ase.neb.NEB` object now accepts a list of spring constants. * *Important backwards incompatible change*: The :func:`ase.build.surface` function now returns a right-handed unit cell. * Mopac, NWChem and Gaussian interfaces and EAM potential added. * New :meth:`~ase.Atoms.set_initial_charges` and :meth:`~ase.Atoms.get_initial_charges` methods. The :meth:`~ase.Atoms.get_charges` method will now ask the calculator to calculate the atomic charges. * The :ref:`aep1` has been implemented and 6 ASE calculators are now based on the new base classes. * ASE now runs on Windows and Mac. * :ref:`mhtutorial` added to ASE. Version 3.6.0 ============= 24 Feb 2012: :git:`3.6.0 <../3.6.0>`. * ASE GUI translations added, available: da_DK, en_GB, es_ES. * New function for making surfaces with arbitrary Miller indices with the smallest possible surface unit cell: ase.build.surface() * New ase.lattice.bulk() function. Will replace old ase.build.bulk() function. The new one will produce a more natural hcp lattice and it will use experimental data for crystal structure and lattice constants if not provided explicitely. * New values for ase.data.covalent_radii from Cordeo *et al.*. * New command line tool: :ref:`cli` and tests based on it: abinit, elk, fleur, nwchem. * New crystal builder for ase-gui * Van der Waals radii in ase.data * ASE's GUI (ase-gui) now supports velocities for both graphs and coloring * Cleaned up some name-spaces: * ``ase`` now contains only :class:`~ase.Atoms` and :class:`~ase.atom.Atom` * ``ase.calculators`` is now empty Version 3.5.1 ============= 24 May 2011: :git:`3.5.1 <../3.5.1>`. * Problem with parallel vibration calculations fixed: `Ticket #80 `_. Version 3.5.0 ============= 13 April 2011: :git:`3.5.0 <../3.5.0>`. * Improved EMT potential: uses a :class:`~ase.neighborlist.NeighborList` object and is now ASAP_ compatible. * :mod:`BFGSLineSearch ` is now the default (``QuasiNewton==BFGSLineSearch``). * There is a new interface to the LAMMPS molecular dynamics code. * New :mod:`ase.phonons` module. * Van der Waals corrections for DFT, see GPAW_ usage. * New :class:`~ase.io.bundletrajectory.BundleTrajectory` added. * Updated GUI interface: * Stability and usability improvements. * Povray render facility. * Updated expert user mode. * Enabled customization of colours and atomic radii. * Enabled user default settings via :file:`~/.ase/gui.py`. * :mod:`Database library ` expanded to include: * The s22, s26 and s22x5 sets of van der Waals bonded dimers and complexes by the Hobza group. * The DBH24 set of gas-phase reaction barrier heights by the Truhlar group. * Implementation of the Dimer method. .. _ASAP: http://wiki.fysik.dtu.dk/asap .. _GPAW: https://wiki.fysik.dtu.dk/gpaw/documentation/xc/vdwcorrection.html Version 3.4.1 ============= 11 August 2010: :git:`3.4.1 <../3.4.1>`. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/000077500000000000000000000000001316323560300220235ustar00rootroot00000000000000044482-glossy-black-icon-sports-hobbies-film-clapper.png000066400000000000000000000061301316323560300340470ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static‰PNG  IHDRôxÔúbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  -p® Í åIDATxÚíÝ1rÛF€a¬F]ZûVb%ž€>—xº¢o•´©79–=¢C“ ì{»ß7“&…­¼ ]j­ 0—'‡ @€ @€@€ @€ € @€ @ @€ @€ @€ @Àjž€œ¾|ýV?úÿÇý®ôþÙj­NPpÅI zbJq‘ëü'‡Óù.ø·×—ÒòïvØÈŸ}°`Hx·ø¿Û°`«|kº¼¼w8 À C¢ð@Ôã0ð¹ö€wì`•ÀÀgtD=1€¡ßÐG<°€U>ÀÐw> Ç;QOŒwÀÐoì×÷¼`ÀÀ`èÃè<ˆzb<ïx`ÀÐ`àƒ0ða8Þˆzb¼€¡ÏJ.ïxÀ€ÀЇÑyõÄx€ÏŠÞ^_ŠGv }>C`à; ÜÇâHC`à#ó1À¨'ÆÇ1ôÙÀq¿[å1€{“ÀÀŸÆå+v[`èO0ðc`àO6ð!+ïD=1ÞÀÐO7ô³û5Þpo²ø†?ÀÐ"ð ê‰ñßêC­¸7Ù |@†¾Õ?0ðI<üA†¾ó™Úát®k}-0 †Yý;·À`Òñ1À¨'ÆÇ |¬þ;hõÀ½Éú 5üA€Ïƒ7ãqõ»€CŸVÙ¶þ`໹o8Xï˜|P€¡ÏðÃ?ãêÿ¸ß•Ãéì÷~®AÊcÃßQ Œzb| ÐÐtø[ý· €µw ÷&;`àcø[ý#ÀПuõïÑbõOgO™†þå?G#× %_ø¤°ÊçááïÙ¿Õ? |RD‹áCŸVÿ#þÌo¯/Å5„Àç»A´ØúÿÁ× 0ô¹kõÏzƒùûµå` 0ðñ{0òêß[ùÜì'[ig¤´[åGø9<`àO:`}ìoÎáC¿ÓprÌçþ 0ð­ò­þ€¡ï\ø™­þûð€Àa²¡äÅ?ú«øJŽ3 }š­¤­þ€°óèg¶úÀϧsõ]à㬤½ø'²@puà; ¦÷G‹áÀÐÇê²Õ¿áÀðÇ mð3g‰ƒ€á•é`?óµáoè·å[„_ÁF¸ñÛúP>6X[ ‚ÿù{ùëÓçi}¤køú&ø½ÁÕ?™®©RœzÉ>Vܸ®L~ƒòMtÎ/7+Ã¥ãmõï:B@†’ã<»__Þ;:$€üõLß`ëß*‘û‡>ÀêßÀ€Õ¿Õ¿Õ¿¡€A†¿Ÿ}»ŸÙêßÀGÐé†àßc(ù™1ô0Ùêßã ®oì#À`r|….lªÔêzybÞ}G÷ˆ¼øçg6ôûý~Œü]üf‹°"²Ê÷; r­¬«CßÀ€çDÃߊßï-€Äfÿ8 †¡€Én¨¶þ1ðAúЈF=1|<(óc« üÛ®óQ˜-vÀ‹øý†)>ÜŒ«C€Cñ`Ôsåå L/ZýcèßwÀl±`àƒZ¬ 2ìXýcèÛÀnâà ßÀ“0ô }0ÁêßÀ7ðAÒìÿ: •¾¡¬þ1ð€€sB³ú7ð~|@ÔsÃ烣¼`ëßÐg½ë<+³Å`àÃêßÀñq@ }@`õ ç@БÁoà€nü‘¬áo耉Áoà€Iú†> ØxHô¾†¾Ä†> ‘áoà0ô¤ük€QOÌÿJØûógunà3æuž‘Ùb }>@D=1w<X }F¼Î32[ì€ ÀÐ`àtဨ'æÎw–Å{†>£]ç™-vÀÀ`àDà@ÔóÀ#€e™ó1€¡Ï¨×yFf‹0ðú |€.¼õÄ<øÀ²ä}ÀÐÇužŸÙb |;ØFvÜïŠ@ç@/vöâ{r@¤ã9 @€ @ÀmžîõöúR¸_)ý/¡Ãé\ ;€ €¼¼È&¾|ýöЋF^8°ÀdÃÿòg´øs°@Ðaßóχ-NçÕÿŽã~g÷ ;äþnà‹~€@€ @€ € @€ @ @€ @€ @€ @€ @€ @€ @L©”ò¿ÿmõw @€ @€ @€ €ÕZ›ý @€ @€ @€ @€ @Œï¸ßG€ ¸&aY–eyvpð@ÈÉK€Üíp:WGÀ @€ @€ @€žŽû]q"Àýfr¥Öê(€@€ @€ À!@€ @€ € @€ @ @€ @€@€ @@#ÿuãõˆE©IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/China.png000066400000000000000000000056341316323560300235630ustar00rootroot00000000000000‰PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&' MiCCPPhotoshop ICC profilexÚSwX“÷>ß÷eVBØð±—l"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:ØOHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©™(G$@»`UR,À ¬@".À®€Y¶2G€½vŽX@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù@+Í—¤ã¼è\¨”LÆD *°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN !%2I IkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã§›§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/ >B Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÉIDATxÚܽN„PDÏwù ‚l¢‹f;¡´0VnCaµolgo²…OaüKÈꕨ,Âw-v + vŠÉs2ɈÍI ê ƒ1 â1,ƒ@ j¸:¢†Ò€ãÔCG`Ÿ.RÊLV§îìõ†;Ëå!†/ÌèòÓ·”s–'r>ã¥!‚jKÕ“€ºçöÕÝß÷eVBØð±—l"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:ØOHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©™(G$@»`UR,À ¬@".À®€Y¶2G€½vŽX@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù@+Í—¤ã¼è\¨”LÆD *°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN !%2I IkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã§›§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/ >B Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFûIDATxÚœ1JCQDgÞ»‰Á¨(VÆÎÎZkw`ãtB¶âRdBZÁJ°ÊÔ æÿ»w,b#&_Ìi/s3<>»~PN6ýv0ë¤X&º]ë÷7"D`ñ¥)‘w{ÛW–VÓ”bÂ!‚H:Ï/%ª%a$H€<ÒÎVïüÔrn1[)€„D0§¨ªÏÇ'åÔfv·×Ù¼ª›@ Qíïulph­a¹Ûpx¹(ü=#QÄÔi6U¬ìLîv=ü¾98gv´áîV Ž–ï?Pq«îð4îü¸›`-šRìm4^Óñ5µ*.\؇s¢Á©Û‰U8!‘Ó€‹t´å·iÿL§ò£¢äõâÔí@» ¬‚‰„λ˵ÇÌÞ©òNY,v ‚Öš»îº‹'žxℌÙîÈLFJ ¶r‡=´÷§Á÷×­cÑâũӀ»¥xZŒêõšqœÞùÇâ¸qægPRRBcc#oüéO}Þ£”¢³³“p8L"‘ …)fXãÏÓ ç;‡wOtj·æ'nÀ­ß…Žw ²ŠL¸ûÔóÛ¬¢ÉïË¡¿^ÕÍöKÎè#ú<‘ðF¬)®Ð‘Îk’UU§KZèT•™Té™ûu<º Qý"ÔGf¸£Züîk°˜å»faÑ E/O›¼¼¼×–-_~Äo´Ö©€_€aÀiÀLÑs¦ƒ§» {Ç&+7†œÚ­¸h7†Ê,Àsö˜Ù «xÊ.•;æOˆú=ð>ÚiC,Rd~§çh­u¸É©«½7úÎêé±>²CgŸå¦]|É&IÏxSµ:‘xKDZ%üÜÆn^°ÀvÌž~<°|Å ÿd~ø%=cárŒ÷Û‘•ÅSO?ý…nÁüùþ= ãI·‰HËõ×_Ïü Ì7® nì`cóÇÓt"r¶ÛzhªÛx°Ä©Ùž™¬Ù. ˆTÞHìᓱFŸ· K÷©œQïb‡þ¬ªñbÊ®É@"S°ïÄ6¬ õñdzcnÄ>e4Ùÿ㻕*'ï;:Y D)´v»‚¾V6ožŸÌÀýÀGÀ ŸÑ÷FŒsTì»6ìhimíÑv_è]™é­ªçÍKff&¥ÀƒÀ™@¥ˆüÓü ^ÇØí"”š€ ž®#­“ÜÖÃÓœ†Níî§n7ÉÚèŽpã¨Ì<¬ü1§}«xR›U0¾Be®EÙåÀ:  ´£5$“Ijª«=fÌ ‘ `'+~¿ågÿ’Û´±,œªjÚ—-™yë­‹ÔÐüÇ€×±ì:ñM–Ö×u»<ß––îùÞ÷èìì#q©jʼ`yÙòå,_±‚¼¼<vy„ûãÑb`&°ÃOŽmY$'%á6 ƒ}ñ©ÏÆó\ü¿ÌwÿîGiA%i­oJ-š`08v϶ÍÇ+NÖå4Tå:‡*‚Nõœ–tÛ!°’–U8{âØ#J#Ö°±õ*gøFIËþXqnê=7€x;wvHDúTëF¨ŽD2Ýæf³‚DÐñmÏ=¯âÛ¶ÎJ¿öÚÁ3ÎÜb—#ê-ŒwZ%"1ÿdfggóËgŸåöo|ƒh4:øKà7À›–eñÂ’%] ŒjÖZGµÖoõ"ÔÎw]wizzºNÝï8/¿ü2®ë^ ÜÔÚÚúðO~ò“ý¦QDÙ€2 E$ä¸ñ¥?~àï'ýó¢Ås:::º¤$‹¬\ùo#ó¥ždk=¸I$`¡†Ç.> kæUØÅã£ÖБUNñ§2$ç}Lص¨Ô±¶¨„2}Ã6íÎ/+K](Å$Øw „ƒ÷¹„Æ–<ŸyçÕòØÏ•[”×%öî:bn N=efh挙ÁiÓî Œ;­Ò*(Ø¥µÞŠ‘°]À!ŒÜÊα"‘šû¶X,¶ø¶[nIÜxÓMÆFùTÎ’%Kxã7X¼xñ233ÿ£¢S~Q<é ?+àTy3¶,+ã†nòÚk¯Íknjºcî‚›÷LŸ1ãP€¨"ˆt[ tgGžŽEF¸MuÙN}µí6 ¤W /ÑF; ÁÈR(`‘¡cX…£±§^„=¼$¡r ë¬üQµ’‘»EáO€O¼ç«%‰Lë¦ÏG¦_•z¦! ãÆ€¿z¥¢µ†v﾿~aç‹/fG×oÀ=|¸›„”Ý …P¹9Ø£Fb-Á1\[Ç·YÆE¬¼¡í*=}s$ýxûŽË‡deí<çÜs_Ú¼£Ã{°„wêL:i/®üí½ñXlJ8& ŦO™üJqþÐf7‘á$òt"^¨ã±ü_þæwùo­ÿ ýž¯^9=/=˜hn°ÜŽVtkÎáj/'èdp‘ô ¬ì<6¤âÅí477t^tÁõ·—ÝXÎ̪ ”þ °×#ð0Є“p±GLÖÑ,¡…À›˜˜ûR :˜»0ÄS 6p©ŽEoO|ºûÂØÇ·nU‰;p›pÛÚÀqŒÊô¼F±mP •™ÊÍEÒÓP;7•Ÿäæ Ò† ,[cY%ZDÐhÐZ@ƒë ®#8It<‚îlÇimÆmkBG"à&ÑN1Vvx;æ[Ôª:F‚TF&vÑ(Tî0dHÖ°â¨U<¦]¥e´¨ô¬:7=kךõZ±|y}{{û'?øá+&MœX´UWÔEÅØ¶¯¾ú*¿zþy‚¡ñXŒh4J8îrÀ>ÏAóú'ÐË€hïû©È9 ¼.¡ðÛÁÉSÇ'O¥#‘‹Ã‡Æ;Õ5%N]]z¢âÓ°SS‡ÛÞŽÛØˆÓpÝA;N]hC\»€‹ÆEÄPJP"X ” –2Òo)D ˆ2êKBTf*+ ÉÈ„PØh‡!C°4ÁC¤]{[$¯tB'iémÑ@¸)¡ìV•–Þ1$'w›e6aâÜØœq«‚ο\¸09}út»°°0ÙÒÔÀý÷ÝGÅž=vzFF2íšwBñXÌâáp¸‹ÈWW­"™L¦‚I]F{Äxgš“Phè£äã8`Y “[‰)w!™¡cñ nGÛ0·¹%¬£‘°îŒdº‘ÎŒd4šI".’L8$“‚ã®t÷ضË‚€­%€@P«@ æÚD«ãdÇ4âŠÂ ÐÁPbø¨ÑÒ³²wcYÕXvÛC=4gÛÖ­ç}åÊ«î›8eê®7V½zUMUÕôÎÎŽ'é´¹®³)‰¬øý+¯üyíš5úÜóÎë"nÿþý§?^Ä8l`6©Ý‡Éd}€)"|cÓãÀà%ïooÌîcB–|à` p³÷û_cœ£ÍÀoñ’+)¥=ŒÖºËNÐó Á=\‹Ê/ cv0Ù ¬ç^xáæ{÷þ° ¨èµ… >iÉrd=YµqïA] RÛÜâ<ºhÑß756\‘L&qÇq¥Ô#S§Ïx`êø’öËæ\ż¹s)¥¾í8Îb¹TàLDšD¤Í믳Ååiàa Á×÷¥Uø*6^ü+€0coñÚËÿäµóµ÷ß¼kw?Çî_ÄìJM ãµ÷Æ›ozéå—ñiƒŽÉÊÞDvI®—DVùE`TL`é’%<óÌ3ñÜÜÜKÆÎη'žvÚÚ /¼°´×þö>dëæM …Fb\~DľµnÍ;‘wW—ÿäégŸëPJ ´,ë^o ?ÅHW“÷,³0÷=Lfèà\zfoÞ¤—yç¯Ïb¤là `!°Èûþ_}¿×¾L¢äëÀpà¼~äõyÀ[$Jæ„öÆg‘2÷k_ëJ*ççç8øiffæ{ÿþì³\tÑEýë]„²yóÂáðFLBâI`‚wG¸O)µOkí/{¸Þd=JÏ U{0ñâÓÀ˜TâÒ~Œ$ˆQ Ôû®¿‡I <‡É|­6|F˜1Ôk§#±ƒjG+Õ﫜| p?¸‘H„ùee]îýÑŽ¿ù¿érŒýù5Æîì¶b$ÐW_Ð÷î¸ÀõX†YG›ƒ]©ªïãû?cNp]?¦Çƨ\a6áõîü˜àóæÒ1ê­Ð›Œ 0›¼–,íPt£WÒþ#L 5¤·b’Ðm›þˆ‘ˆÆ-_ÿzj—ÄFàSÌ‚+ÆÄ™ŸÁHõ^€ÂÂByôÑÞÏú&Fe^ˆ±«ýª<ùŸo°pL3¹ÚnÂ8ÄmŽ™LÿCû$?IÜïöþ¦ìT£Âªûjã×/tÕâ@#F:&¡`j³.ÐE&Àœ+®H6bP'AêŽÇ4¸Ûn¿=uz*ð7˜•úS¼­¾ Éñ`é²e}^÷IJ5¦n:,žÁØ÷‡€ÿÉ‘öÓdà»áxsÐRU¯ùßáGæìþ“\…Ù0ǪU«t®>׆j­{m¿‹Ù±÷0%±AsÉ—.[æ_Ýå/ûàbŒD16öÿz“Ø•7õ~·cw_÷5»“xXw”î€%˜x¸Ó››ÍZë%®ë® …BlZûgÜ™W3-Ø&!q+&Ë4hÐБa9ì»w‚)H(SðÿMþ²…gÞ­çëgç#@Åá3~üÉgôsWæ·ï¾›úúz0¶êß0;~„Q{ IKãÙçžB½Id~YYï|s“æKâ-²ú(y…16Õï­v]³-‹|a—ÖšeeØhâHÐñX4¹gϧ³Ïžuñˆ#¯‰Å¢wïÞý»;Nµ÷ÎNT •as,+~^Τ¯Þ‘îhqÖÎØU Di°ÄT¢zêéc±C‚ŠÀÝï÷PßD\‹YÉ0»ùêý6ظõ–[Ž|ćÞãJ-?RŽ”rt‚ǃ%ÔÄÞì¡H%¥ŒEh @L3~õ.÷ÿûwϹêʇKK'çtvvP^¾z]óê•ß_˜UÕkŠQ ‹ [­$ˆh …%JÞu?¡IqŽ˜8<†‰§[0¹àjLÖ†Ù§Õã­.ŽþlB¯œ3‡ììl0ŽÐK˜=³_ÞÈÍÍå‰'Ÿ<)„+Þ9£Ó‚Œ>}8ÕÛkÌnñ&S¤›DC …F°E‘…0‘aYJéü½I{\õÕwíº·KÙõªš>xäç¶oŽˆ¥lQXXH×°DíØCåŠ(Rÿlv¤tzG+&ÑrS@Ø|Œq“ð96Ô#Lª«c?ßN]ü2“YuÙtCŽÛE¢ fkm·Ô™gŠI]ÃÔFÇ`¶‘ŽÁT[2½{,L¶¨]‹"'7/Û¿ã=';›æ¼S··5~üHvšjÑÆž§$,•œï”HñÀÊÓ¼þ ¼#ãàaÒ—ÅtïžÑ” Œóµã¬îOb¡ã~wåý¾ ÿSIål/” )pRe>C ör:ž™ ` õ…Q%h¦"aÞ¥)ö&&ަ ¨A¨Æ$L`Ô[#P™†ÛðûFÉžx¸iE4=+µ›¡¦ªŠÍñ¯?ó²[Þ!xüoÔ÷Fªö\ˆ ƒ&aÈœ‰YxÌë#ã0…ƒ§ûkC{àdzð¬®x´Û‘@u©ME"Å¥"LA1aš™( £t;BÂ.»D¤a+B5B;B "] ³¡´‰…>ÿ:~öqÕu—\|É?Ož2¥¤­­5¶vÍšWÞzë­ï¥I«]>z‡uš§féÒZCþ?~@ÓÃgzAO§H¼>??˜ a´Éµt¿–Blp¶sìš2…@R°ÃÒõ÷&jB>J¦"LD8¡%Ř]L(¶#ìác”lGt-ŠZ ‹dêÚ›dñ&ý£–®^µ‹ó˨®®âíòw¸ñ†¿—››[’H$#••7´¸®ËŠß®<ás Ÿ<‡ÖÎ$Ž«±Tʦav\”`Bª§¿”„êË/‡öv*;|Qˆ6Š(Jf‹p&ŠI(ŠGøaJÞGØ.Â^„C(:íRŽ >I(¶mj´CM$ÁØò¹c›_6X,FVV–e¡5$q,ÛÆRŠ_>ûï3'¯^JÛ®Ö”!Vu{&Rü (ÿÒúàðáÜ™Ÿß—¶É& ˜âBÓQ Gh¡Åï#² ¡¡%n—úòˆs\M0¨(Zµñ õÜÙ³9õÔSº^„Zºlà_uhû—3q ›AŒs”‡q¢ê0Ž‘'>yLЗ]ƾC‡°Üê’ƒQ'_Ád‚&#(,ö£X°Åzª°h¡µ‰%h #s3•kNæcž4->ü-Þ¾¨Kí0Àp0ù¼2ú÷p UsêÊÔç)oÕ©©õ—Gv,_}Þ±†9AÀ·$¾cÆ CõÀf‰?íìætù8qËÐbÆz`0K¢dFØlè~ØÙÍ`® ¬£+4 ¹,ów"3£ßŒ[òÛéI_ h‘X 1Û Ì8“/°Õ×ðŒÂ1úÍ8fƶ|B$átN‚È_ƒsÄþ㢛ocF°¸ÛA=ôk&`e.Ã`g7#u+§Vbð4Ð 4š1 ¼nF—Äï™ÑüpÖ®\B“‰G'Uó\S.It#Nçïá—ƒùn¨Ö˜Ñ IÉg)I¬þÀŒùÀ‡À! !—åÄñ';¶Žšˆ‰¼®€Jcþ®î–cÀV‰³À `1°è¸²Hbðà)‰ß2£Ú $ÒÀà§<ü÷lìÛV È8%ªÂHÚÙZ Qñ#àï¤à)3†ó@¯Ä#@ƒt ˜mЦfUÞ^ä%ཛ¶qñ8UF•Œ%2îH]À[W$î0c­ åRë Ï‘xÒŒufÔ&af$s½kP“ËÄS4"6 -â’áüÑÑÌÂxc 6ò,ÜÔ3f‰e.…w»D†ö’ˆVŸ7±ê«ùú «kbR†ÐH™1¨†%öHüpÅyÞ2‰™×ñŽMÀ}.1×H´4òw$Òé˜Ý†(Æ9P¬?n¿LЀЦÀÕ8ê—ê$’.*®MI ‰üê–Ë´<»†I¹‰ÔG¹çHr¤P:,œé€«UÑíµåc%X>K£ÄWÌ8)ñÏ‚fÔ#ž°ÐváRh¥Ò‡Õ–bô"^vú¼k€‡%ZÛ‚€fà}3®?wi¾K¢ÞF¥q?ð¢Ä~WÛgm0Z °pŽ‹7«F'Ÿj0.™ñ®oÈ€“+̨(—^b°Ðm^ ØmÆæŽ;Ýé\•±Xaa(7X,2æ ðS`ŸÁ9ÁæÎn¶¹÷|×tPoFs.ÉW$^•¨2ã6·…\4ã à…Ž.Žoºd±H½DÆr`©…šñ«É—˜u©."v".b@bp¨1aH¤]½SÀaàÀIFuêUீË@лi'1Eâ(ð7À;ºBÐJ%vÿéàÖ fÌlßN)_`«KÝ1×ò~à‡›½?·Rþø[Ÿ¿XîÉŒWÕŽ®‘'“¤ŠE»±Ý(ÔŸâÔ{IhžÃ¯ÌÈŸ‘˜÷í%XPBq(´?ƒÀ€D½é/ç³Î ÊØ’Í~ˆ6®U½³›!àtÇj%ZóY:H’H¸cªwiªŒ% 0£¸êÒvUâ—CCl}þ½Q‰Îhoc—ær‰…î¤n:­D±È*Œûjg.Ï!õ© LâˆÄq÷´K«êi•Øë4@fœ7ã40èNâKÀïúB·#6wØòì= ÂwõÀj_ðÝ‚{1Ãf(_àx>Ë‘È$H$ÌHH´¸„,Èeøm`‹Äv‰!@ÏïYË\àqà‹@¨wXYƃˆŠú€^3â{Œè–ýÀ®®©‰’»×n  Á¹Ë‰hÂŒ_/¬–[¸¹-@_,\;lî3£ÎM@“…Ò<Ç9ÞERç;o<#ñP%€ÀŒt,á`ãH’yÿ·q6Þ-”ÞKƒ1ÖÃÇ yå Ûµã,4XfŒÍßI–øàÝÞ‰J¼ýð´98±ÖàÑIµs¶A,GT¨,Õ5^ú+rPvÆj #M¼ÔD‰L º|£q*ÿßÂgR–øf(™d_2ÉxH´ÀcÈÛ€³‘Dè2‰¥|'ïÔ6"ŠÌD,6˜íïwo›qòðlðèxÀDjìr†óΑ4T¤ ©Ô\ qåãª9¤c ú¤OÖ ^Pé‹­ŒeYj<Ñ$±§£‹Ÿå³Ì–«%> < Ty(”­Á Žwc¬ˆý?~ÐÑÅ€ïÞObhˆ¬Us‰“=Û½qÛ%ƨN½ ÅDJa”25‰+O90rÛ2 ¼l7ã¸?7?Å¥Àzà1AÚ±-IàA3Ö‹}ãÇòÎt¬¡_âpP¢ ø:¡d-4£ž€b™³ù´àà_:»CÐþüm‚ö6®J”|¾’äxYìz3¾â’¶í;ÛÆÀ;Xähö½Þ¸Äu®ÅJ%ú†.oJü{GרŠV.C‹ŸRQ£Ðîwà—›ÑjÆ™|–Ÿä ÛÃüY.C¯ ÷šÍ@iDc¾Äí¾¡ÃÝìŽæüëGàüy–x¶e–ó´ôulö ÕÀç$‚\†Ëfœuþw»Äýfpú®{`JÎA› Z€Ç|CE'ÉqÆðèá’ƒ¼>—áŽ|’ÛÂje—ä³£60‘àÓf<ê6fÈç Ü8XÌ$Œ9à ˜ª•ÄÂÎÎn¶ß Kû©4“;ktÕ¨ð\ 1¯œ4ZدÚ#ŽªX–%âU•æ×*œÛv·oç²ò®ƒW;ä 3ÒnÍã{XhƧ ª\Ò è—8äÑÉÇòtŒ§€ïI¼w”åÕºÉH\ÉíÕi‰>OT–¼ï ÂëEv8*…Ù3äö¨ãC­Ç Y!_K)ÓÎåÜ~íž6Ê^joc7°X·¿î=/y"µZ¢ÊcÒ3Ž»´EöxÈŒcÀË@£gœgº*§Ìø ð‚4ê±ÇIÿO œ}À›Î{fI¤Í(JTo¯0zWäÇ >ì¥ÂÀ¥ñ-àu ÊÂï3¸ßãÍÆh%7Êß7ãUϦÄÛn`“øëcÒ?¼"ñ6á¸-n^^É8—Ïr§I߉£~HM@ÉÉô!àXg÷(•)w”“­r•€Ó¹ ¿ö`=ņÀ~‰}] =w/”JìõÏNxlø˜»”¤'Y"q㘻úíˆy„^6 LNîÁx£³‹óåx±È¹D‚×]õŽúؽfüØ-ÑóÊ;ÍBÚybWg€Ë]ôæ2¼Ì4C³gsô[¯]¿¤9¥ºê®„ïo€o†EÚÁ”3* PXøÝ{–Ì„¾a¨ôe¥á¤Õ©pÐSÐX¢#ÂâG{6”ßTÑŒáŽBH`Çkß[®ðÛïŒ\9«ucßßÑVùÓg`v%øîŽÖ™Ñéš½f|3_`À¦50àûz~T'ájé ÒQ!:^„þM¶«a`jkGÍúÍÜðÌgyxX!ñ>ðÍŽ®¸‰j,S¢#ÿ××PÛ³aÙm¼çQIî£î“”«ÏDÏœgâÞ÷šœ]{&”š|÷í?ÁÿƒvƒWe‹ñè#ž‰TM7³&n±–ËPéþIà f,ð²ä‹ˆ½:‘®|7‡ofž·^›aÆŸI<¹%> ä€AÁƒvO†NSëᥞ¸)ŠÒ•ÀbÁ¬›'q XX8qf¯†õŠ›vŸ–¸˜8(ñ'$Rî*WŒâ> \Y~ð§CÏòÈG„\ùbá•´iàâ­˜« U¼\‘àåþaè+B:^IªN‚©G ·|›Êèö äÛ¦1û·ÿ5Pw¢„_tòIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/ase.css000066400000000000000000000005041316323560300233040ustar00rootroot00000000000000@import url("css/theme.css"); div.asetop {text-align: right} dl.function {background-color: #E0E0FF} dl.method {background-color: #E0E0FF} dl.class {background-color: #E0E0FF} img {border: none;} img.center{display:block; margin-left:auto; margin-right:auto; text-align: center;} .wy-nav-content { max-width: none; } ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/ase.ico000066400000000000000000000041431316323560300232710ustar00rootroot00000000000000‰PNG  IHDR szzôsBIT|dˆIDATX…Å—én#É„¿ªê»y‹”4÷x½° ØïàwðÓ6ÖëÙ™ÑH<›Ýì»ÿhŠ’föO@ ª«£23"2ÅÕ_ÿæø?.ï·þB ¿À€Îᾃ)†H!ÎöqÏãægçðx–s¾¹aœ$l³)ÚZ„gq²œMùáíkþôñqðe½A É¡(Hãˆé(%ð}¦£„å|ÀOŸï(ë–¢ª]Å „()Ÿé(åõêŠ?¼Ëb:æëzKÝ´TM‹sgaœÆ¬æS~÷æ†?ÿþI†>YQâ{ŠÕbÆÍÕ ßó˜ŒRÞ\/‡6†_î¸÷¼ Ó¼çùO¢å|ʇW7üñÃ;–ó q’å%EUápà`1s»\ðözÉûÛkâ($/+æãJJ~xsˇW7Xg‰£ˆ¯o¸ßHãO©—|O1Šc®3^­,f&£”«Ù”ÛÕ‚í1Ç‹T’›ÅœëÅŒ0hºmÌ! Ž–ó)«ÅŒ¬8¡µ¦ë5ž’ß3þe|ï1ÿ Vó)ÆZŽÅ )·WsvYN¯ QàóþÕ57‹9]ßóÓ—ot]Ïç‡5Y~º°Ç9GVœ8%ÖžÇÃþ@Ý´ceéY (E‡,gFILQVÔMCt»šNÈËŠqóözÉl<"/+Öûù‰Í!ãxªRÐveÓpÈOÜo÷”õÀŒ»õŽSUc¬Å¹g8+[LF)a°yذ9y½ºb13Nc’(d”Ä,gSÆ£„S]³?|Yo9‹!B¡O^VÄQDY7äeEY7ôFs·ÙRT5½6سn¿HŒ’’à\¡eÝp<•´]?ˆŠ|Ú*¥ Ò8Âó½ÖÔ]GÓuTuK^Ö4m7ˆZÐiÍþX°ÏOçØ—5àké{MÛ÷cñ¼A”|Ï»YQÖhcyØÀqózµ +Jê¦åTÕ˜¦E)É«å‚Àóøü°a½Ï¨Û–®ï1Ö¼ôçÆZÚóÃ½ÖøgZzÞ Ç—p6 _×[’8b9›²šÏxs]Q·ƒNH)±Öâ)õ¤€ÇcÌ9ÿ\óBC{Ž@ݶÔm‡±ÀKÓv”u3ÜÐ E!q2JÞÞ¬hºž¾×4]á¸) sð}óñÒŽC{ÎeCY×TqDøg·ë)놵ÌHãˆÙhD‡¬æSê¦åx*9æ'I2¹O 8ÖX÷¬-wÎÑiMQVëð•D‹quT´ö•¢í:Ö‡ k-yYq<•4]‡±m,ÚNU§aàÁÅaOe5ÌŽ—)0ÆPµÚX¤”8ç°Î]¦çÀ:‹’Цëð½wN]sŽ–³k,ÆXÕ¡Ä0<Ү׃Wc.SÖ…Æ:œ6XkŽžãyå:Bhº~èƒÃic†çÃ2Œ`Ò<Íý·çûdIîgÅó©ô×K€æ)*ƒ³ÚË<êŒÁqb/W°ÿc8µ¿å™Ï—»|ý×õbþ~´~¶þSIÕëº3Ñ‚IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/ase.xpm000066400000000000000000004400451316323560300233300ustar00rootroot00000000000000/* XPM */ static char * ase_xpm[] = { "256 256 959 2", " c None", ". c #133F51", "+ c #143F51", "@ c #144051", "# c #154051", "$ c #154151", "% c #154150", "& c #144151", "* c #154050", "= c #164051", "- c #164151", "; c #154251", "> c #154250", ", c #164250", "' c #164251", ") c #164050", "! c #164150", "~ c #174250", "{ c #17424F", "] c #184250", "^ c #184350", "/ c #18434F", "( c #174350", "_ c #19434F", ": c #19444F", "< c #18444F", "[ c #1A444F", "} c #1A454F", "| c #19454F", "1 c #194350", "2 c #194450", "3 c #1B454F", "4 c #1B464F", "5 c #1C464F", "6 c #1C464E", "7 c #1B444F", "8 c #1B464E", "9 c #1D474E", "0 c #1E474E", "a c #1E484E", "b c #1C474E", "c c #1D484E", "d c #1E484D", "e c #1D464E", "f c #1F494D", "g c #20494D", "h c #1B454E", "i c #1F484D", "j c #204A4D", "k c #1F484E", "l c #184450", "m c #214A4D", "n c #214A4C", "o c #224B4C", "p c #224B4B", "q c #224C4C", "r c #234C4C", "s c #224C4B", "t c #214B4C", "u c #214B4D", "v c #244D4C", "w c #234C4B", "x c #1D474D", "y c #244D4B", "z c #254D4B", "A c #254E4B", "B c #264E4B", "C c #244C4C", "D c #234B4C", "E c #1D484D", "F c #1E494D", "G c #224B4D", "H c #254D4C", "I c #264F4B", "J c #274F4B", "K c #244C4B", "L c #264E4A", "M c #274F4A", "N c #28504A", "O c #29504A", "P c #295149", "Q c #29514A", "R c #2A5149", "S c #2A5249", "T c #2A524A", "U c #234B4B", "V c #27504A", "W c #28504B", "X c #2B5249", "Y c #2B5349", "Z c #2B534A", "` c #2A514A", " . c #264F4A", ".. c #284F4A", "+. c #2C5349", "@. c #2D5449", "#. c #2D5448", "$. c #2E5548", "%. c #2F5548", "&. c #2F5547", "*. c #2F5648", "=. c #2F5647", "-. c #305647", ";. c #305648", ">. c #1A454E", ",. c #20494C", "'. c #234D4C", "). c #2C5348", "!. c #2E5448", "~. c #2E5547", "{. c #305747", "]. c #305748", "^. c #2E5549", "/. c #2C5449", "(. c #28514A", "_. c #315747", ":. c #325846", "<. c #335946", "[. c #345A46", "}. c #345A45", "|. c #345B45", "1. c #355B45", "2. c #365B45", "3. c #355A45", "4. c #325946", "5. c #315847", "6. c #2B5348", "7. c #335A46", "8. c #365C45", "9. c #355B46", "0. c #325947", "a. c #2D5548", "b. c #174150", "c. c #2D5348", "d. c #355A46", "e. c #365B46", "f. c #204A4C", "g. c #2C5448", "h. c #325847", "i. c #375D45", "j. c #395D44", "k. c #3A5E44", "l. c #3B5F44", "m. c #3A5F44", "n. c #3B6044", "o. c #3C6043", "p. c #3C6143", "q. c #3D6143", "r. c #3B6043", "s. c #395E44", "t. c #385D44", "u. c #1F494E", "v. c #325747", "w. c #385D45", "x. c #3B5F43", "y. c #3D6043", "z. c #3E6243", "A. c #395E45", "B. c #3E6242", "C. c #3E6142", "D. c #295249", "E. c #406442", "F. c #426541", "G. c #426641", "H. c #436641", "I. c #446741", "J. c #456740", "K. c #456840", "L. c #466840", "M. c #446740", "N. c #416442", "O. c #3E6143", "P. c #375C45", "Q. c #1E494E", "R. c #3F6442", "S. c #416541", "T. c #416441", "U. c #436541", "V. c #446640", "W. c #47693F", "X. c #486A3F", "Y. c #476A3F", "Z. c #466940", "`. c #3F6243", " + c #436741", ".+ c #406441", "++ c #385E44", "@+ c #4B6C3E", "#+ c #4C6D3D", "$+ c #4D6E3E", "%+ c #4C6D3E", "&+ c #4B6D3E", "*+ c #4A6C3E", "=+ c #4A6B3E", "-+ c #4E6F3D", ";+ c #4F6F3D", ">+ c #50703D", ",+ c #50713C", "'+ c #4F703D", ")+ c #436640", "!+ c #3F6242", "~+ c #406342", "{+ c #4C6E3E", "]+ c #496A3F", "^+ c #496B3F", "/+ c #496B3E", "(+ c #4C6E3D", "_+ c #50703C", ":+ c #52713C", "<+ c #52723C", "[+ c #53733B", "}+ c #51713C", "|+ c #54733B", "1+ c #54743A", "2+ c #54743B", "3+ c #51723B", "4+ c #56763A", "5+ c #587739", "6+ c #597839", "7+ c #57763A", "8+ c #55753A", "9+ c #55743B", "0+ c #56753A", "a+ c #5A7838", "b+ c #5C7A38", "c+ c #5D7B37", "d+ c #5A7939", "e+ c #53723B", "f+ c #4E6E3D", "g+ c #48693F", "h+ c #3F6342", "i+ c #4F703C", "j+ c #4F6F3C", "k+ c #4A6C3F", "l+ c #476940", "m+ c #436740", "n+ c #4D6E3D", "o+ c #58773A", "p+ c #587839", "q+ c #577639", "r+ c #52723B", "s+ c #5B7A38", "t+ c #5E7B37", "u+ c #5F7C37", "v+ c #617E36", "w+ c #617E37", "x+ c #5F7D37", "y+ c #5D7B38", "z+ c #4D6F3D", "A+ c #3A5F43", "B+ c #55753B", "C+ c #5B7939", "D+ c #607D37", "E+ c #637F36", "F+ c #648135", "G+ c #638035", "H+ c #607D36", "I+ c #486B3E", "J+ c #51723C", "K+ c #5E7C37", "L+ c #638036", "M+ c #668334", "N+ c #688434", "O+ c #678334", "P+ c #658235", "Q+ c #607E36", "R+ c #5E7B38", "S+ c #6A8633", "T+ c #6C8732", "U+ c #6D8832", "V+ c #6D8833", "W+ c #6B8633", "X+ c #5A7938", "Y+ c #52733B", "Z+ c #385C45", "`+ c #597739", " @ c #627F36", ".@ c #668235", "+@ c #5D7C37", "@@ c #5B7A39", "#@ c #5C7B38", "$@ c #6B8732", "%@ c #6F8932", "&@ c #718B31", "*@ c #728C31", "=@ c #6E8832", "-@ c #688534", ";@ c #708B31", ">@ c #748E2F", ",@ c #768F2F", "'@ c #758F2F", ")@ c #718B30", "!@ c #3C6044", "~@ c #4B6D3D", "{@ c #55743A", "]@ c #6E8932", "^@ c #748F2F", "/@ c #78922E", "(@ c #7A932D", "_@ c #79922E", ":@ c #77902E", "<@ c #6A8533", "[@ c #7A922E", "}@ c #7D952D", "|@ c #7F972C", "1@ c #7D952C", "2@ c #78912E", "3@ c #688533", "4@ c #6B8733", "5@ c #6F8A32", "6@ c #708A31", "7@ c #6D8732", "8@ c #607E37", "9@ c #668335", "0@ c #738D30", "a@ c #77902F", "b@ c #76902F", "c@ c #6F8A31", "d@ c #6C8832", "e@ c #718C30", "f@ c #768F2E", "g@ c #7B932D", "h@ c #7F982C", "i@ c #839B2B", "j@ c #859C29", "k@ c #849B2A", "l@ c #81982B", "m@ c #728D30", "n@ c #5D7C38", "o@ c #7C942D", "p@ c #8A9F28", "q@ c #8CA127", "r@ c #8BA028", "s@ c #859C2A", "t@ c #7C942C", "u@ c #728C30", "v@ c #52733C", "w@ c #335846", "x@ c #82992B", "y@ c #8AA028", "z@ c #8EA326", "A@ c #8FA426", "B@ c #8DA327", "C@ c #859B2A", "D@ c #7A922D", "E@ c #738C30", "F@ c #8CA128", "G@ c #91A526", "H@ c #95A824", "I@ c #96A924", "J@ c #93A725", "K@ c #79922D", "L@ c #648035", "M@ c #79912E", "N@ c #879D29", "O@ c #648136", "P@ c #5B7938", "Q@ c #5F7D36", "R@ c #668234", "S@ c #869D2A", "T@ c #8DA227", "U@ c #90A526", "V@ c #899F28", "W@ c #7E962C", "X@ c #738E30", "Y@ c #78912D", "Z@ c #7F972B", "`@ c #8CA227", " # c #94A825", ".# c #99AD23", "+# c #9DAF22", "@# c #9CAF22", "## c #98AB23", "$# c #5E7C38", "%# c #3D6243", "&# c #5A7839", "*# c #8EA327", "=# c #99AC23", "-# c #A0B120", ";# c #A3B41F", "># c #A1B220", ",# c #9AAC22", "'# c #748E30", ")# c #224A4C", "!# c #47683F", "~# c #7B942D", "{# c #9FB120", "]# c #A4B51F", "^# c #A5B61E", "/# c #A2B320", "(# c #9DAF21", "_# c #95A924", ":# c #869C29", "<# c #80972B", "[# c #9EB022", "}# c #A5B61F", "|# c #AABA1C", "1# c #ACBC1C", "2# c #ABBA1D", "3# c #6C8733", "4# c #46683F", "5# c #8DA127", "6# c #97AA24", "7# c #9FB021", "8# c #9CAE22", "9# c #95A925", "0# c #839A2B", "a# c #78912F", "b# c #5E7D37", "c# c #698533", "d# c #9BAD23", "e# c #A3B420", "f# c #A6B61F", "g# c #A6B61E", "h# c #80972C", "i# c #7A932E", "j# c #8BA127", "k# c #94A824", "l# c #9EB021", "m# c #A8B81E", "n# c #B0BF1B", "o# c #B5C319", "p# c #B0BF1A", "q# c #A6B71E", "r# c #597939", "s# c #617F36", "t# c #80982B", "u# c #91A626", "v# c #ADBD1C", "w# c #B6C419", "x# c #BAC718", "y# c #B7C518", "z# c #AEBD1B", "A# c #A1B320", "B# c #628036", "C# c #9AAD22", "D# c #A9BA1D", "E# c #BAC717", "F# c #B6C319", "G# c #9BAE22", "H# c #92A625", "I# c #839A2A", "J# c #90A426", "K# c #99AC22", "L# c #AFBE1C", "M# c #B8C518", "N# c #C0CC15", "O# c #C3CE14", "P# c #C1CD15", "Q# c #B8C618", "R# c #ABBB1C", "S# c #9BAD22", "T# c #AEBD1C", "U# c #B7C418", "V# c #B3C01A", "W# c #9FB121", "X# c #92A725", "Y# c #869C2A", "Z# c #718C31", "`# c #879E29", " $ c #BCC817", ".$ c #AFBE1B", "+$ c #A5B71F", "@$ c #81992B", "#$ c #C6D113", "$$ c #CDD611", "%$ c #C8D212", "&$ c #BCC916", "*$ c #ADBC1C", "=$ c #869D29", "-$ c #8BA128", ";$ c #BFCB15", ">$ c #CAD412", ",$ c #CDD711", "'$ c #CBD511", ")$ c #C1CC15", "!$ c #B1C01A", "~$ c #96AA24", "{$ c #A9B91D", "]$ c #C7D213", "^$ c #CCD611", "/$ c #BDC916", "($ c #B2C01A", "_$ c #91A525", ":$ c #D2DA0F", "<$ c #D6DE0D", "[$ c #D5DC0E", "}$ c #CAD511", "|$ c #BBC816", "1$ c #94A924", "2$ c #80982C", "3$ c #4D6D3D", "4$ c #A2B31F", "5$ c #B5C219", "6$ c #CDD610", "7$ c #C8D112", "8$ c #BECA16", "9$ c #B1BF1A", "0$ c #BFCB16", "a$ c #CED711", "b$ c #B3C21A", "c$ c #889E29", "d$ c #89A028", "e$ c #97AB24", "f$ c #CCD511", "g$ c #D8E00D", "h$ c #E1E70A", "i$ c #E1E709", "j$ c #DCE20C", "k$ c #CFD810", "l$ c #345946", "m$ c #CED710", "n$ c #D9E00C", "o$ c #DEE40B", "p$ c #D0D810", "q$ c #D5DD0D", "r$ c #DCE20B", "s$ c #DAE10C", "t$ c #D3DB0F", "u$ c #C9D313", "v$ c #B9C618", "w$ c #D5DD0E", "x$ c #DFE50A", "y$ c #E4EA08", "z$ c #E3E909", "A$ c #D9E00D", "B$ c #C8D312", "C$ c #B3C219", "D$ c #9DB021", "E$ c #B1BE1B", "F$ c #C5D013", "G$ c #E0E50A", "H$ c #DAE00C", "I$ c #ADBC1B", "J$ c #738D31", "K$ c #BCC816", "L$ c #D7DF0D", "M$ c #DCE30C", "N$ c #DBE20C", "O$ c #BEC916", "P$ c #8EA427", "Q$ c #C7D212", "R$ c #E7EB08", "S$ c #F0F304", "T$ c #F1F404", "U$ c #EBEF06", "V$ c #DDE40B", "W$ c #CBD411", "X$ c #B2C11A", "Y$ c #9AAD23", "Z$ c #295049", "`$ c #2D5349", " % c #849A2A", ".% c #C4CF13", "+% c #D6DD0E", "@% c #E2E70A", "#% c #E6EB08", "$% c #E4E909", "%% c #D7DE0D", "&% c #BBC817", "*% c #DCE30B", "=% c #E3E809", "-% c #E1E60A", ";% c #C0CB16", ">% c #A5B51F", ",% c #AEBE1B", "'% c #E6EA08", ")% c #EAEE07", "!% c #DFE50B", "~% c #BAC617", "{% c #D0D80F", "]% c #EBEE06", "^% c #ECEF06", "/% c #758E2F", "(% c #9EAF21", "_% c #E2E709", ":% c #D0D910", "<% c #C2CD15", "[% c #B3C11A", "}% c #94A725", "|% c #A0B220", "1% c #DFE40B", "2% c #EEF005", "3% c #F8F902", "4% c #F9FA02", "5% c #F2F504", "6% c #567639", "7% c #859B29", "8% c #E8EC07", "9% c #C7D113", "0% c #B1BF1B", "a% c #2B524A", "b% c #E2E809", "c% c #E0E60A", "d% c #D8DF0D", "e% c #B1C01B", "f% c #98AB24", "g% c #D9E10C", "h% c #E5EA08", "i% c #EAEE06", "j% c #E9ED07", "k% c #DEE50B", "l% c #8FA326", "m% c #A6B71F", "n% c #F1F305", "o% c #F2F404", "p% c #EBEF07", "q% c #889D29", "r% c #758F30", "s% c #AFBD1B", "t% c #D1DA10", "u% c #DBE10C", "v% c #ACBB1C", "w% c #DEE40A", "x% c #EDF005", "y% c #3D6242", "z% c #96AA23", "A% c #DDE30B", "B% c #D1D90F", "C% c #C0CB15", "D% c #97AA23", "E% c #658135", "F% c #C5CF13", "G% c #CFD710", "H% c #C4CF14", "I% c #B8C418", "J% c #A7B71E", "K% c #C2CE14", "L% c #A4B61F", "M% c #ECF006", "N% c #C9D412", "O% c #879D2A", "P% c #A7B81E", "Q% c #D2DB0F", "R% c #ABBB1D", "S% c #B4C219", "T% c #C4CE14", "U% c #D4DC0E", "V% c #C6D013", "W% c #6F8931", "X% c #B3C119", "Y% c #C3CE15", "Z% c #627E36", "`% c #C5D014", " & c #B6C418", ".& c #C8D313", "+& c #CBD412", "@& c #698534", "#& c #416542", "$& c #9FB220", "%& c #C9D312", "&& c #D1DA0F", "*& c #9EB121", "=& c #C5CF14", "-& c #AAB91D", ";& c #B7C419", ">& c #D9DF0D", ",& c #A2B420", "'& c #77912F", ")& c #345945", "!& c #879E28", "~& c #9CAF21", "{& c #93A724", "]& c #849C2A", "^& c #91A625", "/& c #ADBB1C", "(& c #274E4B", "_& c #BDC917", ":& c #A7B81D", "<& c #97AB23", "[& c #B0BE1B", "}& c #7C952D", "|& c #899F29", "1& c #95A825", "2& c #889E28", "3& c #224A4D", "4& c #1E474D", "5& c #748D2F", "6& c #839B2A", "7& c #678434", "8& c #889F29", "9& c #748D30", "0& c #AABA1D", "a& c #446641", "b& c #7C942E", "c& c #7B932E", "d& c #77912E", "e& c #6E8931", "f& c #658234", "g& c #7D962C", "h& c #82992A", "i& c #92A626", "j& c #21494D", "k& c #264D4B", "l& c #678234", "m& c #7E952C", "n& c #7F962C", "o& c #57773A", "p& c #9EAF22", "q& c #9AAC23", "r& c #6D8932", "s& c #6A8733", "t& c #648036", "u& c #617F37", "v& c #3D6142", "w& c #627F35", "x& c #4A6B3F", "y& c #58763A", "z& c #92A726", "A& c #678335", "B& c #52713B", "C& c #17434F", "D& c #46693F", "E& c #406341", "F& c #365C46", "G& c #53733A", "H& c #758E30", "I& c #51713B", "J& c #53743B", "K& c #315746", "L& c #486B3F", "M& c #3F6441", "N& c #3E6343", "O& c #325746", "P& c #829A2B", "Q& c #45683F", "R& c #4B6E3E", "S& c #446840", "T& c #3E6342", "U& c #4E703D", "V& c #395D45", "W& c #385C44", "X& c #889F28", "Y& c #3C5F43", "Z& c #56753B", "`& c #426441", " * c #315846", ".* c #7E972C", "+* c #6A8534", "@* c #335947", "#* c #577739", "$* c #385E45", "%* c #27504B", "&* c #688334", "** c #2D5549", "=* c #81982C", "-* c #375B45", ";* c #728D31", ">* c #53733C", ",* c #29524A", "'* c #698433", ")* c #486A3E", "!* c #395F44", "~* c #375C44", "{* c #7E962D", "]* c #638135", "^* c #829A2A", "/* c #8FA327", "(* c #54753A", "_* c #698434", ":* c #A8B91D", "<* c #78902F", "[* c #A5B51E", "}* c #375D44", "|* c #BBC718", "1* c #ABBA1C", "2* c #CBD512", "3* c #C2CE15", "4* c #18424F", "5* c #8EA227", "6* c #D2DB0E", "7* c #D6DE0E", "8* c #BDCA16", "9* c #899E29", "0* c #98AC23", "a* c #D4DC0F", "b* c #5B7839", "c* c #2E5648", "d* c #637F35", "e* c #A1B31F", "f* c #D3DC0F", "g* c #C3CF14", "h* c #D3DB0E", "i* c #3F6341", "j* c #3A5E43", "k* c #D6DD0D", "l* c #D0D90F", "m* c #99AB23", "n* c #D3DC0E", "o* c #ACBB1D", "p* c #849B2B", "q* c #C8D213", "r* c #CAD312", "s* c #BBC717", "t* c #B4C21A", "u* c #234D4B", "v* c #A4B41F", "w* c #A8B81D", "x* c #81972B", "y* c #93A625", "z* c #BFCA16", "A* c #ACBC1D", "B* c #B7C519", "C* c #BCC917", "D* c #5C7A39", "E* c #8CA228", "F* c #496C3F", "G* c #94A724", "H* c #879C29", "I* c #78902E", "J* c #2C5249", "K* c #4A6D3E", "L* c #587639", "M* c #688433", "N* c #244E4B", "O* c #6A8732", "P* c #6B8632", "Q* c #5C7B37", "R* c #436540", "S* c #93A825", "T* c #648235", "U* c #5D7A38", "V* c #4C6C3E", "W* c #638136", "X* c #82982B", "Y* c #849B29", "Z* c #A0B121", "`* c #CAD411", " = c #A9B91E", ".= c #A7B71D", "+= c #8DA228", "@= c #A8B71E", "#= c #335847", "$= c #A2B41F", "%= c #CED810", "&= c #D1D910", "*= c #79932D", "== c #A9B81D", "-= c #C6D014", ";= c #7F982B", ">= c #79932E", ",= c #B9C617", "'= c #DAE20C", ")= c #B4C319", "!= c #C2CD14", "~= c #3F6343", "{= c #EEF106", "]= c #D2D90F", "^= c #B4C119", "/= c #EFF205", "(= c #E0E70A", "_= c #E5E909", ":= c #A0B221", "<= c #EEF205", "[= c #BECB16", "}= c #7D942D", "|= c #EDF105", "1= c #EAEF06", "2= c #416341", "3= c #E5EA09", "4= c #899E28", "5= c #D9E10D", "6= c #8BA027", "7= c #C9D212", "8= c #AEBC1C", "9= c #C3CD14", "0= c #6F8B31", "a= c #5F7E37", "b= c #284F4B", "c= c #96A923", "d= c #7D962D", "e= c #6E8A32", "f= c #83992A", "g= c #3C6142", "h= c #6E8A31", "i= c #4E6F3C", "j= c #1F4A4D", "k= c #7E952D", "l= c #76902E", "m= c #859D2A", "n= c #50713D", "o= c #8EA426", "p= c #B0BD1B", "q= c #8FA427", "r= c #98AA23", "s= c #E4E809", "t= c #708B30", "u= c #D4DB0E", "v= c #D8DE0D", "w= c #496A3E", "x= c #ECEF07", "y= c #EBEE07", "z= c #A3B51F", "A= c #A4B520", "B= c #55763A", "C= c #DFE40A", "D= c #B9C517", "E= c #D4DB0F", "F= c #C1CC14", "G= c #254E4C", "H= c #BAC618", "I= c #C4D013", "J= c #738E2F", "K= c #99AD22", "L= c #849A2B", "M= c #2E5449", "N= c #8A9F29", "O= c #597838", "P= c #416342", "Q= c #658134", "R= c #A4B51E", "S= c #A3B31F", "T= c #628035", "U= c #7C952C", "V= c #A8B91E", "W= c #79912F", "X= c #6A8634", "Y= c #B6C318", "Z= c #7E962B", "`= c #BAC817", " - c #1C474F", ".- c #D7DE0E", "+- c #E0E50B", "@- c #C4D014", "#- c #F1F304", "$- c #F0F305", "%- c #E8EC08", "&- c #D6DF0D", "*- c #EDF106", "=- c #EAED07", "-- c #E4E908", ";- c #F5F703", ">- c #E8ED08", ",- c #DDE30C", "'- c #F6F802", ")- c #E7EB07", "!- c #426640", "~- c #456741", "{- c #CFD80F", "]- c #E2E80A", "^- c #CFD910", "/- c #F7F902", "(- c #4F713C", "_- c #E5E908", ":- c #DFE60A", "<- c #D4DD0E", "[- c #DAE10D", "}- c #9CAE21", "|- c #C7D112", "1- c #8AA027", "2- c #93A824", "3- c #CDD710", "4- c #AEBE1C", "5- c #9DB022", "6- c #5D7A37", "7- c #83992B", "8- c #4E703C", "9- c #476A40", "0- c #134051", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # @ @ @ @ @ @ @ @ @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # @ @ @ @ @ @ @ @ @ @ + . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # @ @ @ @ @ @ @ @ @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # @ @ @ @ @ @ @ @ @ @ @ + . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ @ @ @ @ @ # # # # # # # # # @ @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + @ @ @ @ @ # # # # # $ $ $ $ $ % % % % % % $ $ $ $ $ $ $ # # # @ @ @ @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # $ $ $ $ $ $ $ % % % % % % $ $ $ $ $ # # # @ @ @ @ @ @ + . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ @ @ @ @ @ @ # @ & # # * # = = # * # # $ # @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ # # $ # * = = - $ $ $ ; > , , , , , , , ' ; ; $ $ $ - ) # $ # @ @ @ @ @ @ + + . . + . . . . . . . . . . . . . + . . @ + + @ @ @ @ @ @ # @ @ @ @ @ @ @ @ @ @ @ @ & @ @ # # * # = = = - $ $ $ ; ; ' , , , , , , , > ; $ $ $ - * # $ # # @ @ @ + + . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ @ @ # $ $ $ $ % ! ! ! ! ! % % $ $ $ $ # # # @ @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ # # $ $ % ! ! ! ! ! , , , , ~ ~ ~ ~ ~ ~ ~ ~ , , , ! ! ! ! ! $ $ # # # # @ @ @ @ @ + + + . . . . . . . . . . + + + + @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # $ $ $ $ $ % % ! ! ! ! ! ! , , , , ~ ~ ~ ~ ~ ~ ~ ~ , , , , ! ! ! % $ $ # # @ @ @ @ + . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ @ # $ $ % % % ! ! ! ! ! ! ! ! ! ! $ % % % * # # @ @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ @ @ # $ % ! ! ! ! ! ! ~ ~ ~ ~ ~ ~ ~ { { { { ~ ~ ] ~ ~ ~ ~ ~ ~ ! ! ! ! $ % # # # # @ @ @ @ + + + . + + + + + + . + @ @ @ @ @ @ @ @ @ @ @ # # * * * * * * * * * * * * % % % % $ ! ! ! ! ! , , ~ ~ ~ ~ ~ ~ ] ~ { { { { { ~ ~ ~ ~ ~ ~ ~ ! ! ! ! % $ $ @ @ @ + + . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ # # $ $ ! ! ! , ~ ~ ~ ~ ~ ~ ~ ~ ~ , , , , ! ! % $ $ # # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ @ # # $ $ ! ! ! ~ ~ ~ ~ ~ ^ ^ ^ ^ ^ / / / / / / / / ^ ^ ^ ^ ^ ^ ] ~ ~ ~ , , ! % % $ $ # @ @ @ @ @ + + + + + + + + + @ @ @ @ @ @ # # # $ $ $ $ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! , , , , ~ ~ ~ ~ ~ ( ^ ^ ^ ^ ^ ^ ^ / / / / / / / ^ ^ ^ ^ ^ ^ ~ ~ ~ ! ! ! $ $ # # @ + + . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ # # $ $ ! ! ! ~ ~ ~ ( ^ ^ ^ / / _ _ / / ^ ^ ^ ~ ~ , ! ! ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ # $ $ ! ! , , ~ ~ ^ / / : < : [ [ } | [ [ [ [ [ [ [ [ [ : | } [ : : / / ^ ( ~ ~ , ! ! $ $ # # # @ @ @ @ @ @ @ @ @ @ @ @ @ # # # $ $ ! ! ! , , , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ] ] ^ ^ ( ^ / / : < / < : : [ } } : : [ [ [ [ [ [ [ : : [ [ : : / / ^ ~ ~ ~ ! $ $ # # @ + + . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ # # $ $ ! ! , ~ ~ ~ ^ ^ 1 2 : : : [ [ : : 2 1 1 ^ ^ ~ ~ ~ ! ! ! $ # # @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ # $ $ ! ! , ~ ( ^ ^ _ : [ } } } 3 3 4 4 5 5 5 5 5 5 5 5 5 4 4 4 3 3 } [ : _ 1 ^ ^ ~ ~ ! ! $ $ # # # @ @ @ @ @ @ @ @ @ @ @ # # # $ $ ! ! , , ~ ~ ] ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 2 2 2 2 : : } } } } } 3 3 4 4 4 4 5 5 5 5 6 5 5 4 4 4 3 3 } [ : _ 1 ^ ~ ~ ! $ $ # # @ + + . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . + + @ @ @ # # $ $ ! ~ ~ ~ ( / / : [ [ } } 3 4 4 3 7 3 } } [ : : ^ ^ ~ ~ ~ ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ # $ % , , ~ ~ ^ : : [ [ 3 8 6 6 6 9 9 9 9 0 a 0 0 0 0 0 0 a 0 9 9 b b 6 8 3 [ [ : _ ^ ( ~ , , ! ! $ # # # # @ @ @ @ @ # # # $ $ ! ! , , ~ ~ ( ^ ^ _ _ : : : : : : : : : : [ [ [ [ : } 3 3 3 3 8 6 6 b 6 9 9 9 9 9 c 0 0 a a d a a a 9 9 9 9 6 6 3 [ [ _ / ~ ~ , % % # # @ @ + . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . + + @ @ @ # # $ $ ! ~ ~ ^ ^ < : } 3 3 5 5 6 9 9 9 9 e 6 6 4 4 3 } : 2 ^ ^ ~ ~ ! ! $ # # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ # ! ! , ~ ( ^ 2 : } } 3 6 9 9 a a d f f f g g g g g g g g g g g g f f a a 9 9 6 h 3 } : 2 ^ ( ~ ~ ! - $ # # # @ @ @ @ # # # # $ ! ! ~ ~ ^ ^ ^ 2 : [ } } } } } } 3 3 3 } } 3 3 3 3 3 4 5 5 e 9 9 9 0 a a a i f f f g g g g g j j j j j g f f k a 9 9 6 3 [ [ / ^ ( , % % # # @ + . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . + + @ @ @ # # ! ! , ~ ~ ^ l : } } 8 b 9 a a f f f g f f d a c 9 b 8 3 } : : ^ ^ ~ ! ! % % # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ $ $ ! ~ ~ ^ 2 : } } 8 b 9 d i f j m n o p q r r r r r r r r r r r s o t m j f i d 9 b 8 3 } : ^ ^ ~ ~ ! ! % $ $ # # # $ $ $ ! ! , , ~ ] ^ : : } 3 3 6 6 b b 9 9 9 c c c c c c c c a a a a a f f g g j j m u o o o s q r r r r r r v r r w o o u m g i d 9 6 3 [ : ^ ( , % % # # @ . . . . . . . ", ". . . . . . . . . . . . . . . . . . . + + @ @ @ # # ! ! , ~ ] _ : } } 8 6 9 d f g m n t o o o o t m g f d x b 6 3 [ : ^ ~ ~ , , % $ # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ $ ! ! ~ ~ ^ : [ } 4 b c d f j t o r v y z A B B B B B B B B B B B B B A z v C D o m g d x b 4 } : : ^ ~ ~ , , ! ! ! ! ! ! ! ! ! ~ ~ ( / _ : } h 6 6 9 E d F f f f f g g f f f f f f g g g m u G o D r r r v v H A A A B B B B B I J J J J B B A H C D o j f a 9 6 } : ^ ( , % $ # @ + . . . . . . ", ". . . . . . . . . . . . . . . . . . + + @ @ @ # # ! , , ~ ( / : } 8 6 9 a f j o r K y A B B B z z y r o j f d 9 5 3 [ : ^ ^ ~ , , % $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ $ % ! ~ ~ ^ 1 [ 3 6 9 a j n o K z L M N O P P Q R S S S T S S S T T S R P Q N M B A r o m f a 9 5 } : 2 ^ ~ ~ , , ! ! ! ! ! ! ! ~ ~ ^ 1 : [ 3 8 b x d f j n t o o D w U U D o o o o o o D w K y z B B M M V W O Q Q P P R S S S S S X Y Z X X S ` Q N B z r u j i 9 6 3 : ^ ~ , $ $ @ @ + . . . . . ", ". . . . . . . . . . . . . . . . . + + @ @ @ # # ! ! , ( ^ : : } 8 6 x f j G r z B M N P ` ` ` R O N .A r o m f a 9 6 } : / ~ ~ , , % # # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ $ ! ! ~ ~ ^ : [ h b d f m q y L ..P S +.@.#.$.$.$.%.&.&.*.*.=.=.-.;.*.=.=.%.$.@.+.S Q J A C o g i 9 6 >.: / ^ ~ ~ ~ ~ , , , , ~ ~ ~ ^ ^ : [ 3 9 0 i ,.n o '.y A B B M M .L L B A A z z B L M M N Q ` X X +.).@.@.#.!.!.$.$.~.~.%.*.=.-.{.].].{.-.*.^./.S (.J z r n f d 6 } : ^ ~ ! $ # @ @ . . . . . ", ". . . . . . . . . . . . . . . . + + @ @ @ # # % ! , ~ ( < : } 8 9 d g n r v B N S +.#.~.=.=.=.&.!.).S (.J A r t g d 9 6 } : / ^ ~ , ! % % # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ # ! ! ~ ~ ^ 1 [ h e d g o r B N S ).$.-._.:.<.[.[.[.}.}.}.}.|.1.1.1.2.2.1.1.3.[.4.5.*.#.Y Q J A r m k 9 6 h : : ^ ~ ~ ~ ~ ~ ~ ~ ( ( / : [ } 8 9 a g n r y L V Q S X Y ).).6.6.X S R P P P R R X ).#.$.%.-.{.5.:.<.<.<.<.<.<.7.7.}.}.1.1.2.2.8.8.8.2.9.[.0.].a.Y O L y o g 9 6 } : ( b.- # @ @ . . . . . ", ". . . . . . . . . . . . . . . . + @ @ @ # # % % , ~ ~ < : } 8 9 d j o y B N T c.*._.<.d.e.e.e.d.<.:.=.#.X N B y o ,.d 9 6 } : / ~ ~ ! ! % $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . + + + @ @ @ # # ! ~ ~ ^ : [ h 9 i f.o z M S g.*.h.[.8.i.j.k.l.l.l.l.l.m.m.l.l.n.o.p.q.q.o.o.r.s.t.2.<.{.a.Y N A r m u.c b >.: ^ ^ ~ ~ ~ ~ ~ ( ( / _ [ h 6 9 a j o v .N S ).$.-._.h.h.v._.{.;.*.$.$.#.#.$.$.=._.h.<.[.8.i.w.s.k.m.m.m.k.s.s.k.m.l.x.o.y.q.z.z.z.z.q.l.A.8.<._.#.S V y o g a 6 } / ~ , $ @ @ . . . . . ", ". . . . . . . . . . . . . . . + @ @ @ # # $ % ! ~ ~ / : } 8 b d j o y I Q +.*.h.1.t.l.q.z.B.C.o.m.t.1.:.=.g.D.M y o f.F 9 6 } : ^ ~ ~ ! ! % $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ # $ % , ~ ^ ^ : h 6 d g o A N Y %.h.9.s.o.B.E.F.G.H.H.H.H.F.F.F.F.H.H.I.J.K.L.K.K.M.G.N.O.m.P.<.-.g.P B C m Q.9 8 } : : / ^ ^ ^ ^ ^ / _ [ h b 9 i m D A N X !.{.<.1.P.s.s.k.k.j.i.8.1.[.<.<.<.<.}.2.P.s.m.o.z.R.N.S.G.G.G.F.F.T.T.T.S.F.U.V.M.L.W.W.X.Y.Z.M.F.`.m.P.<.*.Y V y n i 9 3 : ^ ~ ! # @ . . . . . ", ". . . . . . . . . . . . . . . @ @ @ # # $ $ ! ~ ~ / _ } 8 6 d j o y J T #._.d.j.q.E.H.L.X.X.X.L. +.+p.++}._.a.S V y o j d 9 8 } : ^ ~ ~ ! ! $ $ # @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ # # % , , ^ 1 : } b d f.o A N ).-.d.s.q.F.L.X.@+#+$+$+$+%+&+@+*+=+*+@+%+$+-+;+>+,+,+'+-+@+W.)+!+m.9.5.#.P B r j a 9 3 } : / / ^ ^ ^ _ : [ h 6 9 u.m r B P c.].[.P.l.z.N.G.H.H.U.S.~+z.p.x.k.s.s.k.x.o.z.E.)+L.X.*+&+{+$+$+%+@+*+=+]+^+/+*+@+(+-+_+:+<+[+[+<+_+$+X.)+B.k.d.;.X M C m a 6 } ^ ~ ! # @ . . . . . ", ". . . . . . . . . . . . . . + @ @ # # $ $ ! ~ ~ ^ _ [ 3 6 d f o C I ` $.:.2.x.~+J.=+-+}+|+1+2+3+-+*+K..+r.2.5.$.S M y o g a 9 8 } : ^ ^ ~ ! ! $ # # @ @ @ @ + + . . . . . . . . . . . . . . . . . + + @ @ @ @ @ # % % , , ~ / : 3 5 c f o z N )._.2.l.N.Z.&+_+2+4+5+6+6+5+7+8+2+[+[+[+|+9+0+5+a+b+c+c+b+d+7+e+f+g+F.o.8.5.@.N A o j d b 4 } : : : : : [ [ h 6 9 u.u '.I R #._.e.m.h+M.X.%+-+i+j+-+#+k+l+M.U.T.~+~+N.F.m+Z.^+n+,+[+4+o+p+p+5+q+0+1+[+<+<+r+[+2+0+p+s+t+u+v+w+x+y+6+2+z+W.N.A+}.*.S I r g 9 3 : ^ , $ # + . . . . ", ". . . . . . . . . . . . . + + @ @ # $ $ ! ! ~ ^ ^ : 3 6 0 f n K B Q #.h.8.o.F.X.'+B+C+D+E+F+G+H+s+0+i+I+F.o.8.h.a.S J C m f a 6 3 [ : ^ ^ ~ ! ! $ # # @ @ @ + + . . . . . . . . . . . . . . . . + + @ @ @ @ @ # % % ! , ~ ^ : } 4 9 f t y V Y {.2.o.H.*+J+o+K+L+M+N+N+O+P+G+Q+u+y+y+y+R+x+v+F+O+S+T+U+V+W+M+v+X+Y+@+H.p.2.{.Y V y t f 9 6 3 } : : : [ [ 3 6 9 a m r B Q #.h.Z+q.H.=+,+8+d+y+K+K+b+6+B+J+-+@+]+W.W.X.=+#+_+2+`+t+ @.@N+N+N+O+F+ @D++@b+@@s+#@K+v+F+N+$@%@&@*@&@=@-@ @d+<+/+F.A+<.$.Q H m a 6 } ^ , $ # + . . . . ", ". . . . . . . . . . . . + + @ @ @ $ $ ! ~ ~ ^ ^ : } 3 e k j D z N +.{.9.n.F./+J+d+L+S+;@>@,@'@)@S+ @d+r+*+F.!@e._.g.Q B r m i 9 6 3 : : ^ ~ ~ ! ! $ # # @ @ @ @ + + + . . . . . . . . . . + + + + @ @ @ @ @ # % % ! ! ~ ^ / } 4 b a j r B T *.[.n.H.~@{@K+M+]@^@/@(@_@:@>@;@U+S+N+O+O+N+<@U+)@'@[@}@|@|@1@2@&@3@x+{@&+H.x.d.$.R B w n d 9 6 3 } [ [ } 3 3 9 a g r A O g.5.P.B.K.f+0+K+P+4@5@&@6@7@N+L+c+5+2+J+i+'+,+r+0+d+8@9@V+0@a@_@(@_@b@0@c@T+-@9@P+P+.@-@d@e@f@g@h@i@j@k@l@(@m@N+n@[+^+E.t.5.Y J o f 9 } : ~ - $ @ . . . . ", ". . . . . . . . . . . . @ @ @ @ # - ! , ~ ( ^ : [ 3 6 a g o y M X *.[.k.N.X.3+b+O+*@o@k@p@q@r@s@t@u@O+#@v@^+N.k.[.=.Y N z o g d e 3 } : : ^ ( ~ ! ! $ $ # @ @ @ @ @ + + + + + + + + + + + + @ @ @ @ @ # # $ ! ! ! ! ~ ~ ^ : } 6 9 g o A O #.w@s.T.*+8+v+U+2@x@y@z@A@B@y@C@|@D@,@E@&@&@u@'@_@|@j@F@G@H@I@J@B@k@K@U+v+9+*+T.t.h.g.N y o f 0 6 8 3 3 3 3 3 6 9 f n y M X -.2.q.J.-+`+L@%@M@l@s@N@C@l@[@u@S+O@K+d+o+7+5+P@Q@R@U+,@|@S@T@A@U@z@V@k@W@/@>@&@c@5@&@X@Y@Z@j@`@ #.#+#@###U@j@_@4@$#<+l+%#1.$.Q v j c 3 2 ~ ! $ @ . . . . ", ". . . . . . . . . . . . @ @ @ # # ! , , ( ^ : } 3 6 0 f m r B Q #.h.Z+O.L.j+&#R@0@x@*#=#-#;#>#,#A@x@'#O+d+'+L.z.Z+h.!.R M K )#g 0 6 4 } : < ( ~ ~ ! ! $ $ # @ @ @ @ @ + + + + + + + + + + @ @ @ @ @ # # $ $ ! ! ! ~ ~ ^ : [ 6 9 d m r J X -.2.C.!#r+x+U+~#V@I@{#]#^#/#(#_#T@:#l@o@(@(@t@<#C@T@_#[#}#|#1#2#;###y@~#3#+@}+4#o.d.%.D.B r g k 9 6 8 3 3 3 6 9 d g q B P !.<.m.F.#+5+F+u@<#5#6#(#7#8#9#`@0#a#c@N+L+8@b#8@G+c#&@(@s@G@d#e#f#g#;#(#_#T@s@h#g@M@M@i#W@k@j#k#l#m#n#o#o#p#q#,#p@_@N+r#n+F.s._.X A t a 5 [ ^ , % @ . . . . ", ". . . . . . . . . . + + @ @ # $ % , , ~ ( / : } 6 9 d j q z N Y =.d.l.F.@+8+s#6@t#u#>#v#w#x#y#z#A#G@l@)@B#0+&+F.n.9.=.).N z D j k 9 6 4 } : / ] ~ ~ ! ! $ $ # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # $ ! ! , , ~ ~ ^ : [ 3 6 9 f o A O #.<.s.F.%+6+N+M@y@C#D#o#E#E#F#z#^#G#H#r@j@I#I#j@V@J#K#]#L#M#N#O#P#Q#R#S#V@a@R@4+*+~+P._.Y M C m u.c 6 8 8 8 6 9 0 i n y M Y {.P.z.X.[+v+;@l@H#/#T#o#U#V#2#W#X#Y#(@Z#3#O+.@O+4@u@o@`# #/#T#M# $ $U#.$+$d#u#p@k@@$l@0#`#A@##;#.$ $#$$$$$%$&$*$C#=$m@s#Y+Z.o.<.).M D f 6 [ ^ , % @ . . . . ", ". . . . . . . . . . + @ @ # # % ! , ~ ~ / : } 8 b d f t C B Q #.h.P.q.K.'+C+N+/@-$W#p#;$>$,$'$)$!$7#q@D@<@s+i+K.B.i.h.$.R M y G g a 9 6 3 [ _ / ( ~ ~ ! ! $ $ # # # @ @ @ @ @ @ @ @ @ @ @ # # # $ $ - - ! ~ ~ ( ^ / : [ 3 5 9 i j r I S *.3.p.K.}+x+6@0#~${$E#]$$$^$#$/$($q#G#J@T@p@V@j#_$=#]#n#/$%$:$<$[$}$|${$1$2$U+s+z+F.s.h.).N H t f a 9 6 6 6 6 9 d g o z Q #.4.k.F.3$&#<@g@z@4$5$O#'$6$7$8$n#>#H#k@D@E@=@3#U+*@(@k@H#>#9$0$>$a$,$%$;$b$q#S#H#F@c$`#d$A@e$/#.$/$f$g$h$i$j$k$8$m#u#~#N+7+*+!+1.$.N r g e } ^ ~ % @ . . . . ", ". . . . . . . . . + @ @ # # $ ! ! ~ ~ / _ [ h b a f j r A N X %.l$k.E.^+[+x+]@h# #{$/$m$n$o$j$p$8${$H@l@c@D+[+I+.+k.[.*.Y N A r m f 0 b 8 h [ _ / ( ~ ~ ! ! $ $ # # # @ @ @ @ @ @ @ @ @ # # # $ $ ! ! ! ~ ~ ^ / / : [ 3 5 9 d g o y ..Y {.P.!+X.9+F+a@r@>#o#%$q$r$s$t$u$ $z#/###H#*#*#U@~${#R#v$%$w$x$y$z$A$B$C$D$N@*@x+,+I.m.<.#.O z t f d 9 b 6 b 9 d f n r B R *.d.o.K.}+D+&@C@,#E$F$w$o$G$H$k$0$I$G#`@t#2@J$&@u@:@<#j#C#|#K$f$L$M$N$w$'$O$.$/###G@T@`@P$k#(#{$y#Q$A$R$S$T$U$V$W$X$Y$@$U+C+#+.+8.&.Z$y g 9 } / ~ % @ . . . . ", ". . . . . . . . + @ @ @ # $ ! ! ~ ~ ^ : } h 6 9 f m o v J Q `${.1.x.F.@+8+ @*@ %=#.$.%+%@%#%$%%%F$.$K#j@m@B#8+@+F.r.2.5.@.Q J y o m i c b 8 } [ _ / ^ ~ ~ ! ! % $ $ # # # # # # # # # # $ $ % % ! , ~ ~ ~ ^ / : : } h 6 9 d f n r A (.g.:.t.~+=+7+O+i#A@}#&%m$*%=%-%A$,$;%($>%S# #U@U@X#=#A#,%/$^$s$'%U$)%!%m$Q#A#y@'#v+J+J.n.7.#.O A o g d 9 9 b 9 9 d f n y M Y {.8.B.X.9+F+,@-$/#~%{%-%]%^%'%H$%$o#/#H#C@o@b@'#/%D@I#z@(%.$P#:$o$=%_%N$:%<%[%}#S#}%A@z@U@~$|%1#&%f$1%2%3%4%5%$%:%y#l#k@%@#@n+T.P.=.P y j 9 } / ~ % @ . . . . ", ". . . . . . . . @ @ @ @ $ ! ! ~ ~ ^ : [ h 6 9 a g o C B N X $.:.P.p.)+#+6%F+0@7%C#9$#$L$=%8%'%A$9%0%S#=$>@F+7+3$V.q.P.0.$.a%N A r o j f a b 8 3 [ _ _ ^ ~ ~ ! ! % $ $ # # # # # # # # $ $ % % ! ~ ~ ~ ~ ^ : : } } 8 6 9 d i f.o y M T $.<.s.T.@+5+O+g@J#g#&%m$*%b%c%d%$$0$e%]#d#J@U@A@H#f%>#v#K$'$g%h%i%j%k%,$y#|%V@0@H+J+J.l.l$!.O z o g d 9 9 b 9 9 d j o y N /.5.w.E.*+7+M+_@l%m%8$w$R$n%o%p%!%^$v$}#H@q%W@a#r%,@g@I#z@(%s%P#t%V$_%i$u%p$P#($>%C#J@A@z@U@~${#v%&%f$w%x%3%4%o%$%p$y#D$k@%@b+n+T.P.=.P y g 9 } / ~ % @ . . . . ", ". . . . . . . + @ @ @ # ! ! ~ ~ ^ : [ h 6 9 k g n r A J Q +.=.<.t.y%M.(+6%G+u@I#z%R#;$k$s$w%A%B%C%R#D%k@E@G+7+n+J.B.t.<.;./.` V A w o j f 9 b 6 3 } : : ^ ^ ~ ! ! ! % $ $ $ $ $ $ $ $ % ! ! , , ~ ^ ^ : : [ } 3 6 9 c d f f.o C A N X %.l$s.T.@+7+E%a@r@7#[%F%:$L$w$G%H%I%2#7#I@l%F@-$*#J@G#J%5$K%k$s$o$A%t$O#.$,# %c@c+'+H.m.w@).N y o f d 9 9 9 9 0 i j o z (.#.4.s.S.&+o+O+_@z@L%K$:$_%^%M%#%u%N%w#;#J@O%}@a@X@'#2@|@y@##P%M#9%Q%%%+%:%#$v$R%7#_#A@-$y@q@H#S#q#S%T%U%_%U$^%#%g$V%.$D%h#W+6+&+h+2.$.(.K g e } ^ ~ % @ . . . . ", ". . . . . . . + @ @ # % ! ~ ~ ^ : [ h 6 9 a g o r y I Q Y $._.}.s.B.J.(+8+v+W%W@A@4$X%P#'$k$$$Y%S%/#U@W@c@v+0+n+K.!+s.[._.$.X Q M A w o j f a 9 6 3 } : : ^ ~ ~ ! ! ! ! $ $ $ $ $ $ % ! ! , ~ ~ ^ ^ : [ [ 3 5 6 9 a f j n o r A J Q +.-.l$s.T./+2+Z%&@x@k#g#F#P##$`%0$ &R#|%I@z@c$Y#C@N@q@J@(%{$5$;$.&f$+&P#X%4$l%g@@&`+&+#&t.5.Y M K n f d 9 9 9 9 a i j o A Q #.<.k.F.&+o+9@2@-$$&o#%&d%c%h$j$&&P#n#*&U@ %i#'#;@;@0@[@I#l%@#R%y#P#F$=&C%U#1#|%_#B@c$C@k@S@-$J@D$-&;&F$B%>&A$t$9%;&,&T@2@.@8+X.O.[.#.N r f 6 } ^ ~ % @ . . . . ", ". . . . . . . @ # # # ! ~ ~ ^ 2 [ h 9 a i g o r A J N X @.=.:.2.m.h+J.%+2+K+S+'&=$~$]#n#Q#&%x#e%}#I@N@2@S+K+2+%+J.h+m.2.w@;.#.X O M A K o m g a 9 6 3 } : : ^ ^ ~ , , ! ! ! ! ! ! ! ! ! ~ ( ( / / : [ 3 6 9 a a f j n o r y A J (.S #.{.)&s.~+W.}+b+<@2@!&z%;#*$($0%v%g#~&{&-$]&<#W@1@|@I#V@^&S#]#/&[%w#S%1#|%H#l@;@v+[+Y.z.e.*.S (&r m f a 9 9 9 9 a f m o A Q !.<.k.F.@+7+E%/%:###R%_&>$t%Q%,$H% &:&<&y@Z@b@;@d@d@]@0@[@0#*#Y$]#*$n#[&v%>%+#J@r@k@h#1@}&W@I#p@H#+#J%[% $<%<%/$($]#J@l@W%u+,+M.m.:.). .q f 6 [ ^ ~ % @ . . . . ", ". . . . . . . @ # $ % , ~ ^ : } h 9 a f m o v B M Q X #.*.5.[.P.m.h+I.*+J+X+F+5@o@|&k#l#]#q#}#l#1&2&o@6@F+d+J+*+M.h+l.P.l$v.%.`$X Q N B y r 3&g i 4&6 4 } [ : ^ ~ ~ , , ! ! ! ! ! ! ! ~ ~ ^ < : [ } 4 6 9 d f m o q y z B J V (.T /.$._.}.j.B.M.{+4+v+U+i#:#U@##8#8###{&`@j@W@K@,@>@5&'@2@1@k@r@H###+#W#(#~$`@2$m@P+o+%+F.k.w@#.Q A o j a 9 9 9 9 9 a f m D B Q $.<.s.T.*+{@ @6@<#U@|%.$E#N#<%/$F#-&(#A@6&_@&@W+7&M+O+S+6@a@|@8&G@D%Y$Y$6#H#F@k@W@_@,@9&0@'@_@W@s@B@~$W#g#0&-&>%8#G@x@0@F+4+*+~+P.-.R A n d 8 : ~ ! $ @ . . . . ", ". . . . . . + @ $ $ , ~ ^ 2 : h 9 d g m r z I N R ).!.=._.<.2.w.r.h+a&]+;+4+K+O+&@b&k@q@U@H#u#q@k@c&&@7&K+0+;+]+)+h+r.t.2.<._.%.#.+.X Q J A C o n f a b 6 3 [ : ^ ( ~ ~ ~ , , , ~ ~ ~ ^ ^ : : } 3 6 9 a f j o r v A .V Q ` S Y /.$.*.h.}.t.p.F.]+,+6+ @T+'@W@k@N@N@7%l@t@d&u@e&$@S+<@W+U+)@,@~#t#]&c$|&N@@$_@5@F+r#'+K.q.2.-.X M v u f a 9 6 6 b 9 0 i m D B Q $.<.s.E.^+[+x+T+K@c$I@/#R#p#!$T#J%(#X#N@}&0@4@f& @8@8@ @.@4@&@a#g&h&C@C@I#|@~#'@&@U+W+<@S+4@%@0@/@W@s@-$U@J@i&*#`#W@u@.@6+-+M.r.[.#.N K j&9 } : ~ - $ @ . . . . ", ". . . . . . + # $ ! , ( : | 8 b d f.o C k&J Q X #.=._.h.[.2.w.m.o.h+H.W.#+r+5+u+l&]@>@(@m&n&W@(@/%]@9@x+5+J+%+W.U.h+p.k.P.9.[.h._.*.!.+.T N B z r n g d 9 5 3 [ : ^ ( ( ~ ~ ~ ~ ~ ~ ~ ^ : : } h 6 x i g o r z I W Q S Y /.@.!.$.*.{._.<.1.t.x.h+I.*+}+o&x+R@T+;@0@0@u@6@d@@&P+B#v+D+x+Q+ @F+N+T+c@e@0@X@u@U+O+x+7+'+Z.!+t.:.#.O A r m k 9 6 6 6 6 9 0 i m D B Q a.4.++~+X.}+b+O+9&2$F@I@p&/#4$W#q&H#8&W@r%T+P+Q@s+6+`+&#s+x+L+O+$@e&;@;@6@r&s&O+t&s#8@x+x+u&F+O+W+c@5&2@~#}@o@M@0@$@ @`+'+L.v&2.;.S B o f b } / ~ - # @ . . . . ", ". . . . . + @ # ! ! ~ ^ : h 6 d g o y I O X #.*.5.<.}.2.Z+s.m.r.v&~+F.K./+n+r+q+c+w&O+W+U+]@U+W+O+ @y+o+r+n+/+K.F.~+O.r.s.++i.8.[.<._.;.$.Y Q V A r o j d 9 5 3 [ : ^ ^ ( ~ ~ ~ ~ ^ ^ : : } 8 6 4&f n D z (&N ` Y @.%.-._.5.h.:.:.:.<.[.1.t.m.p.N.J.x&;+|+6+y+D+ @ @ @v+K+#@d+o+7+0+0+4+o&6+P@K+Q+s# @ @H+b+y&r+&+K.z.t.<.$.R (&C m f a b 6 6 6 6 9 0 i j o B Q #.:.w.!+W._+6+L@W%_@0#F@z&~$~$ #A@c$t#'&]@A&H+X+4+[+<+B&r+2+4+6+b+K+x+x+x+K+#@d+5+7+4+0+4+o&6+b+K+ @E%N+<@S+@&R@ @b+9+n+Z.h+t.h.@.N y n d 8 : ^ ~ - # @ . . . . ", ". . . . . @ @ $ ! , C&_ } 6 a j o z M R g.=.h.[.8.w.s.m.n.o.q.B.!+E.F.M.W./+n+,+1+5+s+K+D+H+D+K+P@5+2+}+n+^+D&M.F.E&!+q.o.r.r.m.s.w.2.d.:.{.$.Y Q I v t j d 9 5 3 [ : / / ^ ^ ^ ^ / : [ 3 4 b 4&g t r A W ` +.$.{.h.[.9.e.F&8.8.2.2.1.8.P.w.s.l.v&.+H.W.@+-+}+[+1+{@{@|+r+}+>+-+n+(+#+3$n+-+_+}+Y+G&G&[+}+-+@+4#T.p.P.w@%.X M y o g d 9 b 8 3 6 6 9 0 i j o B Q #.:.P.B.L.-+7+v+W+H&}@s@y@B@*#-$`#t#K@e@<@ @P@8+}+n+&+*+=+@+%+z+i+,+I&I&I&I&,+;+f+n+n+n+z+-+i+3+J&0+y&&#P@P@+[+i+/+)+y%t.<.$.P A o f 9 h : ~ ! # # + . . . . ", ". . . . . @ @ $ , ~ / : 4 9 f o z N X $.K&[.i.m.o.%#h+~+.+.+.+.+T.S.F.H.M.D&L&*+n+_+<+|+{@8+8+|+r+i+n+@+X.L.M.G.S.T.E&E&E&.+M&h+h+z.p.m.t.1.h.*.+.Q J y o g d 9 4 3 [ : : : : : : : [ 3 6 9 d g )#C B N Y $._.[.8.t.m.o.p.p.p.r.x.k.++++t.t.t.s.r.p.N&N.H.K.W.]+=+=+=+/+X.W.L.K.M.M.M.M.J.K.L.W.X.X.X.W.K.)+~+q.s.9._.!.X M y o g d 9 6 4 3 } 3 3 6 9 i j o A Q #.O&P.B.K.n+4+D+@&u@i#l@Y#8&|&=$P&o@'@U+P+$#7+I&#+X.L.I.H.H.)+M.J.Q&4#D&D&D&D&K.K.K.K.K.K.D&W.X.*+%+n+f+;+-+n+@+X.M.E.r.P.<.$.S I r j a 6 [ / ~ ! # @ + . . . . ", ". . . . . @ # ! , ~ _ 3 9 f t y ..X &.:.P.x.B.S.)+K.Z.Z.Z.L.K.M.H.G.F.F.F.)+M.L.W.X./+*+&+R&&+@+=+X.W.J.M.H.F.S.S.F.F.)+M.K.Z.Z.Z.K.M.F.h+o.t.[._.@.` M K t g d b 4 3 [ [ : : : : [ 3 3 6 4&g o C B Q +.-.l$P.l.z..+U.M.S&M.H.F.~+!+p.r.m.s.t.t.s.s.m.n.q.z.!+~+E.E.E.~+h+!+q.q.p.p.o.o.p.q.z.z.T&B.z.q.o.k.Z+9.h.*.+.Q J y o f.i 9 6 3 } } } } 3 6 9 d j o A (.#.O&P.B.K.n+0+x+N+&@_@t#k@N@N@k@t#(@m@S+ @d+|+n+X.a&E.B.q.o.o.o.o.p.q.q.%#%#%#q.q.q.q.q.B.B.h+E.S.G.H.V.V.H.F.T.B.r.w.d._.#.R J '.u u.9 3 : ~ ~ ! # @ . . . . . ", ". . . . + @ # ! ~ / [ 6 a m K M X *.[.j.B.H.W.*+n+-+'+'+-+{+*+X.D&M.H.F.N.N.S.S.F.F.)+m+M.M.M.V.)+F.S.T.N.E.~+T.F.H.J.W.^+&+n+-+;+;+n+@+W.)+h+m.2.5.#.R B v o g E 6 h 3 } } } } } 3 5 6 0 i n y B Q @.].d.s.B.U.D&*+n+U&U&-+#+=+W.M.T.T&p.m.t.w.P.P.P.Z+w.V&j.j.s.s.s.j.t.W&P.8.8.1.1.1.2.8.8.P.P.8.2.1.[.w@_.%./.S N B r o g d 9 6 3 } [ [ [ } 3 6 9 d j o A (.c.O&P.B.K.z+0+D+@&0@g@x@O%V@X&:#l@(@u@@&w+6+}+*+J.E.p.m.w.P.2.1.1.1.2.2.2.8.8.8.8.8.8.P.P.t.t.s.A+x.x.Y&x.x.m.t.P.[.h.%.+.Q B C m a 9 3 : ^ ~ , $ @ @ . . . . . ", ". . . . + # # ! { : >.9 f D B S $.[.k.~+4#%+<+Z&5+d+d+6+7+J&,+(+/+D&I.F.E.h+B.y%v&C.C.B.y%y%y%C.C.v&v&v&y%B.!+N.H.K.X.%+'+e+0+`+&#&#p+8+<+n+W.`&o.2._.@.Q B r n d 9 6 5 3 } } } 3 3 6 9 k j o A N +._.9.l.E.!##+3+0+6+s+@@+[+;+*+D&G.h+o.s.w.8.1.d.[.l$l$l$l$l$l$<.<.:. *_._._.{.{.{.{.{.{.{.{.=.=.~.a.g.X P V L y q m f d 9 6 3 } [ : : [ [ 3 h 9 d g o A (.c.O&P.B.K.-+7+Z%T+,@.*S@-$*#T@p@k@o@9&+*D+7+i+X.F.q.s.2.<.:._.-.-.-.-.-.-.-.{.{._._._.h.:.:.:.<.[.}.}.}.}.7.4.5.-.%.).S N A r m k 9 4 } 2 ( , % $ @ @ . . . . . ", ". . . . @ $ - ~ / : 8 d m z Q @.@*s.~+Y.i+7+$#L+O+N+N+P+ @#@#*Y+n+^+K.G.h+y%r.m.m.s.A.A.$*$*$*$*A.A.s.m.r.p.B.N.I.Y.#+,+8+P@H+F+l&O+9@L+$#o+}+=+F.o.2.{.+.N A o j a 9 6 3 3 3 3 6 6 9 a g o H %*Y *.[.m.N.X._+7+K+L@&*S+<@N+L+$#o+<+%+W.F.z.l.w.8.[.0.h._.{.;.;.*.*.$.$.**@./.+.+.Y Z Z Z Z Z a%T T T Q N V I A v q t g a 9 b 8 } [ : _ _ _ : : } 8 6 4&g o A (.c.O&Z+!+l+i+6+F+c@(@k@T@J@_#H@G@y@=*b@3#u&7+-+W.E.l.-*<.{.$.@.+.Y Y Z Z Z Z Y Y +.+./.@.@.**^.$.%.*.*.*.%.$.#.+.X Q N B v q j k 9 5 } : ^ ~ ! % @ @ + . . . . . ", ". . . . @ $ - ~ / } b f D J Y _.w.h+Y.}+s+P+]@H&_@i#_@'@5@7&Q+6+r+#+W.G.h+p.A+t.P.1.1.d.[.[.[.[.d.1.2.P.s.x.%##&K.*+,+4+K+R@U+0@:@_@2@'#]@.@y+[+*+F.l.l$$.S .r u f a 9 6 5 3 6 6 9 9 f m r B ` $.<.s.E.X.}+P@F+U+/%D@1@o@2@;*4@B#d+>*%+L..+p.A.e.<.5.-.~.a.#.+.+.Y S T ,*Q (.N N V J J J J J I B B B A z K r t f.f d 9 b 8 >.} : : _ _ _ _ _ : [ h 6 4&g o A (.c.O&w.h+X.J+b+N+>@@$T@D%l#A#>#8#J@c$}&5@L+5+-+Z.h+A.d._.#.Y R (.N V J J J %*%*N N N N O Q Q ` S X X X X S ` Q N .A H r t j a 9 5 } : ^ ~ ! ! # @ + . . . . . . ", ". . . . @ $ - ~ : 3 9 g K N $.[.o.K._+s+7&'#|@N@`@B@q@:#1@0@'*x+7+i+)*)+!+x.t.2.[.w@:._._._._._.5.:.<.9.i.!*q.S.Z.n+2+y+O+&@g@ %V@q@q@N@|@H&@&t+r+X.h+~*5.g.N z o j f 0 9 6 6 6 9 9 d f t y N +._.2.O.L.'+d+M+0@{*N@*#_$J#r@P&_@]@]*6+}+^+H.B.s.2.<.{.~.#.6.S R Q N V J I B B z y v v v v '.'.r r r D o m m g i d 9 9 6 } } : : / ^ ^ ^ ^ ^ / _ [ 3 6 x f o z N #.:.w.~+^+[+b#d@(@V@D%;#v%.$s%m#l#_$^*'#.@6+U&K.z.w.@*%.+.Q V I A z z H H H H z z z A A B I I J J J J J I B A y r o 3&g i a 9 5 } : ^ ~ ! ! # @ @ + . . . . . . ", ". . . . @ $ ! ( : 8 d o B X {.t.N.&+5+P+r%k@^&8#4$;#|%<&`@|@E@M+s+r+*+V.B.m.P.[.h.-.%.$.$.$.$.$.$.-._.<.2.s.q.F.]+_+6+t&c@}@V@H@~&>#>#G#G@k@,@N+P@;+M.r.[.*.R L w t f a 9 9 6 b 9 9 d j q A Q #.<.s.T.@+0+L+*@l@/*C#;#J%]#l#}%N@[@U+8@0+n+Z.h+A+8.<.{.!.).S Q N M L A y y r r D o t t n n f.f.j j g f f i d 9 9 6 8 h } : : / / ^ ^ ^ ^ ^ ^ ^ / : } 5 9 f n z N #.:.t.E.^+(*s#;@t#^&/#n#E#;$/$F#0&C#p@2@_*s+'+K.q.P.h.!.` V A y w o o o o o o q q q q r r w w y K K C C r q o t f.g f d 9 6 3 [ _ ^ ~ ! ! $ # @ @ . . . . . . . ", ". . . . @ % ~ ^ } 6 f r M #.<.n.K.}+x+c@@$J@;#s% &y#[%:*Y$r@c&U+D+{@%+M.B.s.2.<.-.$./.Y X X Y Y /.!.-.:.d.w.q.H.k+[+y+<@<*`#6#[*.$S%5$T#4$J@x@Z# @2+]+B.}*K&).N y o g k a 9 9 b 9 a f u r I S &.3.o.J.i+b+3#}@*#l#v%F#|*M#.$e# #k@H&.@C+}+X.S.r.~*<.-.!.X P N I A y w r o n m g g i i i d d d 4&0 9 9 e e 6 h 3 [ [ : : / ^ ^ ~ ~ ~ ~ ~ ~ ~ ^ ^ : } 4 9 k n y N c.:.j.T.*+4+F+>@:#=#1*&%Q$^$2*3*5$;#U@}@4@b+,+K.q.2.{.+.O I y q t n j g g g g g g g g j&j&n n n n n n m j j f i d 4&9 6 8 } : _ 4*~ ! ! $ $ @ @ @ . . . . . . . ", ". . . . @ % ~ / } b g y Z$$.d.z.^+7+9@2@`@>#X%N#B$%&H%M#J%1&0#*@O@7+n+K.B.s.3.h.*.@.X T Q Q Q Q T +.$.{.[.w.q.H.&+8+Q+5@|@^&;#S%C%9%9%C%($|%T@i#@&&#n+F.s.<.#.Q A o m i d 9 9 9 9 a g G v J X -.8.B.W.[+Z%E@Y#=#v%&$Q$^$%&0$n#W#5*o@4@K+[+*+H.v&t.l$-.#.X P M A y r o u j g f d a a 9 9 9 9 b 6 5 5 4 3 3 } [ [ : l ^ ^ ~ ~ ~ ~ , , , , ~ ~ ( ^ : } 3 9 a m y N ).:.t.T.@+7+.@:@y@l#[%F$6*n$7*^$8*0&_#<#U+y+,+K.p.e.].+.N A r o f.g f f u.u.u.u.u.u.f f f f f f f f i a a a 9 9 b 6 4 } } : ^ ] ~ ! ! $ $ # @ @ . . . . . . . . ", ". . . . @ % ~ / >.9 j z R -.P.N.{+C+4@|@_#1*;$6$<$%%&&O#0%8#9*a@9@6+-+K.B.j.[._.!.X Q N N M M N Q X @.*.<.P.q.I.(+4+G+0@k@0*1#;$f$a*[$$$8$1*I@@$5@K+_+M.o.[.$.Q B r n g d 9 9 9 a d j o y N Y _.i.h+^+0+E%:@F@>#o#9%t$g$U%>$v$J%J@l@5@v+8+%+M.z.t.[.{.#.X P M A w o m j f f d 9 9 b 6 6 h h 3 } } } : : : : / / ^ ^ ( ~ ~ ~ ~ , , ! ! , , ~ ~ ^ : [ 3 6 a j K M ). *t.T.@+7+M+/@`@/#y#'$n$x$A%t$O#T###h&]@$#,+K.p.9.*.Y V H D n j f d a a a a a a a c E x x x x x 9 9 9 6 6 6 8 h >.} : : ^ ^ ~ ! ! $ $ # @ @ + . . . . . . . . ", ". . . . @ % ~ : h 0 m A S {.w.F.-+y+W%I#C#9$V%w$k%x$g$%&F#|%q@_@N+b*;+K.B.t.l$-.#.R O M J B B M N P +.c*h.P.y.V.(+#*F+/%N@+#!$=&t$j$r$U%=&9$S#:#*@8@r+4#q.9.*.S I r n g i 0 9 9 d d j o y N )._.~*~+k+7+M+_@*#]#v$+&%%V$n$m$/$0&~$I#)@d*q+n+K.B.s.3._.$.X P M A w o m j f d 9 9 6 6 8 } } [ [ : : : / / ^ ^ ( ~ ~ ~ , , ! ! ! ! ! ! ! ! , , ~ ~ / : } 6 a j C J Y _.w.E.=+7+R@2@`@e*y#'$s$c%o$f*g*T###x@]@n@,+K.o.d.*.X V z D m j f a a 9 9 9 9 9 9 9 b b 6 6 6 6 6 6 5 3 3 3 } } : / / ^ ~ ~ ! ! $ $ # @ @ + + . . . . . . . . ", ". . . . @ % ~ : 8 a u A X _.s.H.i+K+c@6&C#9$V%U%A%o$L$B$F#|%F@_@N+d+'+K.B.t.<.=.+.R N B B A A I V Q Y $.h.8.o.)+(+o&F+H&N@8#n#H%:$s$s$h*H%p#S#S@0@u&Y+D&y%2.=.X M y n g f a 0 9 d d j o y V +._.i.h+x&0+E%2@q@>#o#9%t$>&[$>$E#m#H@x@&@L+7+z+K.i*j*1. *$.+.P M A y r G j f d 9 6 6 6 3 } [ : : 1 ^ ^ ^ ~ ~ ~ , , ! ! ! % % $ $ $ $ $ $ ! ! ! ~ ~ ^ : } 6 a g r J X -.P.h+)*{@G+'@V@(#X$F$h*n$%%$$8$0&H@|@d@b+'+M.r.d.*.Y V A r t j f d a a 9 9 9 9 9 6 6 6 8 8 3 3 3 3 3 [ [ [ : : ^ ^ ~ ~ ~ ! ! $ # # @ @ @ + . . . . . . . . . ", ". . . . @ % ( : 8 a u A Y h.s.)+i+n@]@x@<&*$N#m$k*<$l*O#9$~&V@<*O+6+-+K.B.t.<.=.+.Q J B z z A I J (.Y $.5.8.o.H.%+4+t&0@C@m*v%8$+&t$n*^$8$o*##p*Z#8@Y+W.v&2.-.X V y n g f a 0 9 d d j o y V Y {.P.B.X.J& @0@=$q&o* $q*$$r*)$($/#J#W@W% @4+n+K.i*A+2.:.*.`$S N I z r o m g i 9 9 6 6 3 [ [ : ^ ^ ^ ^ ~ ~ ~ , , ! ! ! % % $ $ $ $ $ $ $ $ ! ! , ~ ^ _ } 8 9 f q B S =.9.q.D&r+D+&@0#~${$s*]$$$W$<%t*/#z@g@c#d+-+I.r.9.].Y N B u*o n g i d a a 9 9 9 6 6 6 6 8 3 3 3 } } [ [ : : / ^ ^ ~ , , ! ! $ # # # @ @ @ . . . . . . . . . . ", ". . . . @ % ( : 8 a u A Y h.s.H.-+b+$@}@G@v*o#<%%&%&H%M#w*_#k@9&E%5+n+M.q.}*<.=.+.Q %*I A A A I M Q Y $.5.8.o.G.@+8+ @6@x*y*v*[%z*F$#$N#S%;#G@|@]@K+J+L.v&2.-.X V y n g i a 9 9 a d g t v I S =.1.p.K._+c+T+1@*#7#*$U#&%v$0%>%6#N@2@S+u+9+#+K.~+x.P.<.-.!.Y P M B z r o g i a 9 6 6 3 [ [ _ ^ ^ ^ ~ ~ ~ ! ! ! $ $ $ $ # # # # # # # $ $ ! ! , ~ ^ : [ h 9 f o A Q $.[.r.M.i+b+S+g@q@+#A*B*C*E#[%P%<&S@/%f&y&$+H.r.1.{./.Q .z r o n j f f d d 9 9 9 6 6 8 8 3 } [ [ : : _ / ^ ~ ~ ~ ~ ! ! ! $ # # @ @ @ @ . . . . . . . . . . . ", ". . . . @ % ( : 8 a u A X _.A.F.{+6+&*:@|&=#{$S%E#E#w#v%l#*#W@;@E+7+(+M.q.t.<.-./.T N J B A A .N P +.$.h.8.o.G.*+2+x+d@g@r@q&P%9$w#B*($J%=#V@_@S+s+'+J.q.2.-.X M y n g i 0 9 9 9 a f m r B Q a.<.s.F.&+7+L@u@l@z@S#;#m#}#W#I@y@{*&@.@D*[+&+K.E&r.t.}. **.#.X Q M B y r n g f a 9 6 3 } [ _ ^ ^ ~ ~ ~ ! ! ! ! $ $ $ # # # # # # # # # $ $ ! ! ~ ( / : h b d n y N g.4.m.F.~@7+F+u@l@J#@#q#0&{$;#=#E*W@e&v+{@@+H.r.2.5.$.X (.I z C r o m j f i d 0 9 9 6 6 8 3 } [ [ : _ _ ^ ~ ~ ~ ~ ! ! ! $ $ # @ @ @ @ . . . . . . . . . . . . ", ". . . . @ % ( : 8 a u A S {.i.E.*+0+G+&@t#/*8#}#2#R%P%W#}%=$_@T+8@8+#+M.B.t.[.{.#.X Q N M M M M (.S g.=.:.P.o.G.F*Y+#@-@'@P&A@G#;#m#m#;#C#*#t#0@P+5+n+)+o.9.=.X J v n g d 9 9 9 9 a i j&o z N 6._.P.B.D&,+P@O+0@W@9*J#J@H#*#=$}@9&@&D+o+,+*+M.~+o.j.2.<._.*.#.Y R N I y r n g k a 6 8 } [ : ^ ^ ~ ~ , ! ! ! % $ $ # # # @ @ @ @ @ # # # $ $ ! ! ~ / : >.b d m C M ).5.t.h+X.r+t+<@a@I#z@I@q&m*G*F@l@'@3@c+[+*+G.o.P.4.=.).R N M B z y r o n n g f d d 9 6 6 3 } [ [ : ^ ^ ~ ~ ~ ! ! ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . ", ". . . . @ % ( : 8 a u A S {.P.h+X.[+K+W+2@C@A@D%@#+#Y$J@y@n&0@-@+@2+~@M.B.s.1.h.%.+.X ` O O O Q S +.$._.l$W&q.G.^+J+X+E%6@~#S@A@~$q&q&I@P$k@2@T+v+8+@+F.x.[.%.T J C n f d 9 9 9 9 9 d g t y .S ~.[.j*T.^+r+b+P+e&a@}&|@|@o@a@;@c#Z%&#[+z+L&I.E.q.m.w.9.<.5.-.$.).S Q M A r o j u.a 9 8 } : : ^ ( ~ , ! ! % % $ # # # @ @ @ @ @ @ @ # # $ $ ! ! ~ / : } 6 0 g r I X -.2.p.M.n+o+B#U+d&t#N@y@y@H*h#I*]@F+X+I&=+H.O.j.1.:.=.#.X R Q N M B z K r o m g f d 9 6 8 3 } [ : ^ ^ ~ ~ ~ ! ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . ", ". . . . @ % ( : 8 a u A S =.8.z.L._+C+P+Z#o@C@F@U@G@A@V@x@M@c@P+s+[+~@Q&h+m.8.<._.%.#.+.J*X X +.@.$.-.:.1.s.z.H.^+}+6+ @4@'@W@=$-$*#*#y@k@~#*@O+b+r+/+T.s.7.$.` B r f.f d 9 6 6 b 9 a u.j q A N +.{.1.r.F.=+I&6+8@M+W+]@]@T+c#F+x++i+K*D&H.E.z.x.k.t.2.3.<.5.=.!.).R N B v o j u.a 9 8 } [ _ ^ ( ~ , ! % % $ # # # @ @ @ @ @ @ @ @ # $ $ ! ! ~ ^ _ [ 4 9 g o B R %.l$m.S./+Y+b+f&r&'@g@W@W@o@a@6@N+D+5+,+*+I.h+l.w.3.:.{.*.$.g.Y S Q N .A y r G j i a 9 6 8 } [ : ^ ^ ~ ~ , ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . ", ". . . . @ % ( : 8 a u A S =.1.p.M.-+5+s#3#'@1@I#N@c$=$x@o@'#T+L@s+[+{+D&T.q.s.2.[.h._.;.*.*.*.*.]._.<.3.W&x.h+M.*+}+5+v+'*&@_@|@I#s@C@x@}&>@T+d*6+_+W.~+s.4.a.Q B r j f 9 6 6 8 6 b 9 a f t u*I Q #.5.8.o.F.X.-+J&p+#@x+x+u+y+X+7+[+;+%+X.K.H.T.h+B.y.r.k.j.P.e.[.h.-.$.Y Q J z r m u.a b 8 } _ ^ ( ~ , , ! % $ # # # @ @ @ @ @ @ @ @ # $ $ ! ! ~ ^ ^ [ 4 9 f o z O #.4.$*h+l+;+7+x+9@U+u@/%,@'#6@W+F+K+7+}+@+L.F.B.r.t.2.d.<.4._.-.%.#.+.S Q V B r o n f d b 8 3 } : ^ ^ ~ ~ ! ! % $ # @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % ( : 8 a m A P =.1.o. +(+8+x+N+e@/@W@x@I#@$W@_@*@W+G+s+2+z+X.H.~+o.k.Z+2.d.[.[.[.[.[.d.9.P.j.x.B.F.Z.%+r+6+Q+N+c@,@g@|@t#h#}@d&;@-@8@4+-+L.!+w.h.@.Q A o j a 9 6 6 8 6 6 9 9 d j t y J T $.h.8.n.E.K.^+z+,+[+2+|+[+<+i+n+@+X.W.M.H.F.T..+E&h+B.q.p.n.s.P.[.:.*.g.S N A r m u.c 6 3 [ : ^ ~ ~ , ! ! $ $ # # # @ @ @ @ @ @ @ # # $ ! ! ~ ^ ^ : 3 b i n y N /.5.P.%#J.#+|+s+ @N+U+6@&@c@U+-@G+t+L*r+n+X.J.F.h+q.r.k.s.t.P.2.[.<._.*.#.Y Q I y o f.i 9 b 3 } : ^ ^ ~ ~ ! % $ # # @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % ( : 8 a m z P ~.}.r.H.%+2+$#O+c@'&}&t#@$l@1@2@*@W+F+y+4+,+&+W.H.~+B.y.o.x.m.m.m.m.m.l.l.o.%#~+F.K.^+;+9+P@s#M*6@,@g@W@|@{*g@'@c@O+K+8+n+K.z.i.5./.N z o g a 9 6 8 3 3 3 6 b 9 f f.q N*V S $.h.9.s.q.N.M.W.^+*+@+@+*+/+X.D&K.J.H.H.H.H.H.I.I.I.M.H.F.E.%#r.w.d.5.$.Y N A r m f 9 5 } : ^ ^ ~ ~ ! ! ! $ $ # # @ @ @ @ @ @ @ # # # ! ! ~ ^ ^ : 3 6 k m C ..+._.2.y.)+@+r+d+w+9@4@e&c@c@U+c#F+x+d+B+,+%+^+l+I.H.F.T.E.~+h+%#o.m.w.1.0.;./.Q M y o ,.i 9 6 3 [ 1 ^ ~ ~ ! $ $ # @ @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % ~ : 8 a m y Q $.}.r.H.&+9+K+7&;@d&g&@$I#x@n&(@'#U+9@x+6+[+U&*+Y.K.V.U.F.F.`&`&`&`&`&S.S.F.H.M.Z.^+n+<+L*t+F+O*u@I*}@h#l@h#o@a@c@O+u+0+n+K.z.P._.+.N z o f a 6 6 3 } } } 3 8 b a f j o z M S #.{.[.P.k.q.h+#&F.)+M.M.V.a&H.H.H.H.H.M.K.W.X.x&*+@+*+x&X.L.F.h+m.8.<.*.Y N A q j d 9 4 } [ : ^ ~ ~ ! ! % $ $ # # # @ @ @ @ @ # # $ ! ! ~ ( ^ : 3 6 a m C M Y {.2.o.)+@+<+d+v+N+U+;@e@&@c@3#7&E+t+6+{@}+-+%+*+x&]+]+]+]+X.l+J.F.h+o.A.d._.#.S J y o f a 6 h [ _ ^ ~ ~ ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . . . ", ". . . . @ % ~ : 8 a m y Q $.[.r.H.%+0+x+c#0@~#@$Y#q%N@k@|@2@Z#S+G+y+#*[+i+n+&+*+=+=+@+@+&+&+&+@+*+x&^+/+*+%+-+:+0+s+v+N+c@,@o@l@k@s@p*h#(@u@c#H+7+f+K.B.P._.+.N y o f c 6 3 } } [ [ } 4 8 b a f m o z M Q +.%.h.[.8.++m.o.q.B.B.h+~+~+T.S.H.M.D&I+&+f+_+r+|+2+2+r+>+%+Y.G.%#t.[.*.Y N A q g a 9 4 } : ^ ^ ~ ~ ! ! % $ $ # # # @ @ @ @ # $ $ ! ! , ( ^ : 3 6 a m C M Y {.2.p.M.%+2+b+F+P*&@H&b@b@'#&@V+N+L+K+d+4+2+r+}+}+}+r+[+[+[+<+>+n+^+K.E.r.8.h.a.Q .y n i 9 6 } : / ~ ~ ! $ $ # @ @ @ @ . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ : 8 a m y Q $.[.o.M.-+o+L+]@2@@$V@5*J#A@-$=$n&d&6@N+ @#@5+8+[+<+<+[+|+8+4+7+o+o&4+8+J&<+J+J+r+2+7+C+8@M+=@/%}&I#|&5#*#q@c$t#2@]@L+6+'+D&B.i._.Y V y t i 9 6 3 } : : : : } } 3 6 a f j o y L N X #.*._.@*9.8.w.s.m.r.y.O.h+T.H.K.I+#+_+9+`+b+u+8@8@K+s+7+J+&+K.B.s.l$*.X V z o g a b 4 } : : ^ ~ ~ ! ! ! $ $ # # # # # # # $ $ ! ! , ( ^ : } 8 a m C M Y _.8.v&K.-+7+8@c#u@_@1@|@|@}@_@'#]@c#F+8@y+P@6+6+d+P@Q*K+D+8@D+c+d+B+'+^+R*v&P.5.@.N A o g a 6 } : / ~ ~ ! $ $ # @ @ @ + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ : 8 a m y P &.1.q.L._+@@7&'#h#-$S*=#8#G#~$U@2&|@b@]@7&B#K+s+d+&#P@c+x+ @E%O+7&M+T* @x+#@d+6+6+d+y+w+9@U+'#o@s@T@ ###q&##H#y@|@9&&*U*<+X.h+t.5.+.N y t d 9 8 } [ : : : : : [ 3 3 6 9 f f.o C z M Q X @.%._.h.<.9.8.}*s.o.B..+)+W.&+_+8+b+ @O+T+W%c@]@S+F+y+0+-+L.T&t.4.$.R J v t f c 6 3 } : ^ ^ ~ ~ ! ! ! $ $ # # # # # # $ $ ! ! , ( ^ : [ h a m C M +._.P.h+X.<+b+M+Z#~#I#V@-$-$|&k@W@:@&@T+7&F+ @s# @G+.@c#d@c@;@6@r&c#L+b+|+V*V.o.2.-.Y V y n f 9 3 [ : ~ ~ ! $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ : 8 a m y P =.2.C.g+e+x+U+o@y@6#A#m#R%0&]#@#H#c$W@r%r&N+F+ @Z%E+E%N+U+Z#'@2@_@2@'@&@d@N+F+ @v+v+L+O+U+0@o@:#U@q&/#J%{$J%>#6#p@~#=@8@2+=+T.s.h.+.N v n d 9 8 [ : : ^ ^ ^ _ _ [ [ 3 6 9 d g m r v B N ` X @.$.-.h.<.9.P.s.o..+m+L&-+9+b+F+d@'#g@<#@$h#g@0@S+v+7+z+K.%#P.5.@.Q I r n f 9 6 3 } : / ^ ~ ~ , , ! $ $ $ # # # $ $ $ ! ! , ( ^ : [ h a m C ..+.h.s.#&@+Z& @%@~#`#^&##G#C#6#G@V@@$(@9&c@3#S+S+$@]@u@a@~#t#I#I#l@~#'#S+D+8+@+F.m.l$$.Q A o f 9 6 } : ^ ~ , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ : h a m y P =.-*!+x&B+W*0@k@_#>%0%v$C*s*t*D#D$u#S@}&>@e&S+M*'*W+W%>@g@X*N@r@q@q@`#x@(@'#5@W+N+N+<@U+0@g@Y*A@G#J%!$M#E#M#n#]#H@k@'#P+q+~@T.s.h.+.M v m d b h [ : < ^ ^ ^ ^ _ _ [ } 3 8 b d f m o r z J N Q Y @.%.{.4.1.t.r.h+M.*+}+6+ @d@a@x@r@H#1$J@T@k@_@=@u&Z&&+F.n.d.*.Y N z o g d 9 6 3 } : 2 ^ ~ ~ , ! ! $ $ $ # $ $ $ $ ! ! , ( ^ : } 8 a m v N #.<.m.I.-+C+@&a#N@_#e*{$1#R#J%W#I@q@I#o@a@0@u@m@>@M@W@C@q@J@D%##_#A@Y#i#U+D+[+L&h+P._.X .r j d 6 } : ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ _ h a m y P -.P.~+@+5+7&_@T@Z*($N#`*6$f$O#;& =d#*#0#i#0@c@e&6@0@2@h#9*G@m*(#W#7#=#H#c$2$2@0@c@=@5@0@_@@$`@=#.=S%)$%$'$%&N#($Z*+=i#@&d+n+F.s.h.+.M v m d 6 >.: : ^ ( ( ~ ~ ^ ^ 1 : : } 8 9 a k g n r y A I N T +.$.{.<.8.m.B.M.@+[+#@O+/%X*l%Y$;#@=g#W#H@c$(@4@y+J+X.h+w.#=!.R .y o g a 9 6 3 } : ^ ^ ~ ~ , ! ! ! ! $ $ $ % % ! ! ~ ( ^ : 3 6 a m v N #.[.o.L.J+x+c@t#X#;#!$E#8$_&U#I$$=6#`@I#W@(@_@i#1@^*p@X#8#>%|#v#0&/#6#|&_@_*C+-+H.k.<.#.N v m i 9 3 : ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ _ h c j y P -.P.T.n+X+4@W@ #-&z*%=H$A%N$&=Y%X$e# #c$|@2@>@0@'@*=t#y@_#Z*==z#!$0%0&|%_#y@@$i#'@0@9&<*W@N@J@>#9$)$G%L$N$A$k$8$0&H@t#U+#@-+F.k.h.+.M '.j 4&6 } : : ^ ( ~ ~ ~ ^ ^ ^ ^ : } } 8 b 9 a g n o r y B N S +.$.K&3.s.z.M.&+9+x+T+~#r@Y$m#[%v$M#9$]#_#s@'#F+o&{+H.x.d.-.).N A r m f a 9 6 3 } : 2 ^ ~ ~ , ! ! ! ! $ $ % ! ! ! ~ ^ ^ : 7 6 a m z O $.3.q.X.1+F+,@V@(#0%)$'$k$^$-=E#*$Z* #y@6&;=W@t#k@j#k#*&0&o#C*N#/$S%J%6#k@*@v+[+W.q.d.$.Q A o f 9 3 [ ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ _ >.9 j y P -.P.F.-+#@e&P&Y$($%$n$h%j%R$j$f$v$===#q@x@~#2@'&>=.*N@H#W#R%F#&$C%0$U#v%{#X#c$|@_@a@I*g@x@-$##J%,=>$A$=%8%h%'=B$X$S#k@6@K+'+H.k.h.+.M r j 9 5 } : / ^ ~ ~ ~ ~ ~ ~ ~ ^ ^ : : } >.6 9 4&i g m r v B W ` ).=.<.w.q.H.@+9+v+c@t#^&e#X$0$#$#$8$p#Z*B@~#S+#@,+Z.z.Z+h.$.S M z r m f a 9 6 } } : 1 ^ ~ ~ ~ ~ ! ! ! ! ! ! ! ! ~ ^ ^ : 3 6 k 3&z Z$$.1.B./+7+O+g@J#g#s*$$d%*%A$t%H%F#J%K#A@2&k@0#k@V@^&G#P%)=<%+&k$'$!=t*/#T@/@9@7+x&~=8.*.D.A o f 9 4 } ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ / >.9 j y P -.P.F.-+y+c@k@(#w#a$c%M%S${=@%]=8$v%8#*#k@}@>=_@o@@$y@6#}#X$8$V%%&q*;$^=^###q@I#o@_@[@1@ %T@Y$0&8*k$!%)%/=M%(=,$w#D$=$e@x+>+H.m.h.+.M r j 9 5 [ _ / ~ , , ! ! ! , ~ ~ ( ^ < : : } 4 6 9 a g m o v B N X a._.2.r.F.@+9+v+6@x@H@m#v$9%k$k$#$M#J% #=*]@D+[+^+E&k.[.-.).Q B v q u f d x 6 3 } [ _ / ^ ^ ~ ~ , , , ! ! ! , ~ ^ ^ : 3 6 i )#z Z$%.2.!+*+o+c#1@G*R#<%[$-%_=h$A$2*&%2#+#H#-$=$s@`#`@_#:=v#&%>$a*g$U%2* $m#y*}@c#5+@+~+P.*.S B q f 9 4 } ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ / } 9 g y Q =.P.T.n+b+]@I#8#o#^$o$)%<=^%c%p$_&2#G#*#I#}&_@_@o@x@r@D%}#[%[=#$r*.&N#S%g###q@I#}=[@[@1@I#T@Y$0&C*m$o$j%|=1=x$^$o#@#s@;@$#'+H.s.h.+.M r g 9 4 [ _ ^ ~ , ! ! ! ! ! , ~ ~ ( ( / : : } 3 6 9 a f m o v B Q ).-.[.k.2=]+[+D+%@l@}%J%M##$k$k$9%v$m#_#x@6@w+9+@+F.r.2.5.a.S N B v q m f d 9 6 5 3 [ : : ^ ^ ~ ~ , , , ! , , ~ ^ ^ : 3 6 i )#z Z$%.2.!+*+o+c#g&{&R#<%[$-%3=h$A$2*&%2#(#H#-$=$s@`#`@_#:=v#&%>$a*A$U%2* $m#y*}@c#5+@+~+P.*.S B q f 9 4 } ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ ^ } b g K N $.2.~+&+6+W+n&I@*$T%U%c%$%h$<$Q$w#g#6#y@t#(@:@a@_@|@N@y*-#v%y#[=<%N#v$T#|%}%4=<#[@a@:@g@l@|&I@]#F#9%+%x$=%c%+%T%T#6#l@U+b+n+T.t._.X B o f b 3 [ ^ ^ ~ ! ! ! ! ! ! ! ! , , ~ ~ ^ ^ : } 3 6 9 a f m r z M S !.h.Z+z.D&_+b+W+o@B@|%p#8$#$#$0$X$e#^&<#c@w+9+V*a&q.w.<.=.).` W B v r m g i 0 9 6 h } : : ^ ^ ~ ~ ~ ~ ~ ~ ~ ~ ^ / : 3 6 i )#z Z$$.1.B./+7+&*g@A@^#s*$$d%*%5=:$=&F#J%K#A@2&k@0#k@V@H#8#m#o#<%W$p$f$!=t*/#T@/@9@7+x&~=8.*.D.A o f 9 4 } ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ ^ } b f r N a.[.B.^+4+9@/@z@;#U##$&&w$t$%&K$1#l#U@C@o@,@0@E@H&>=l@6=D%/#R%($S%[%*$e#e$q@h&g@,@0@9&b@o@k@A@+#1#&%7=B%U%&&Q$U#;#*#(@_*5+@+h+P.-.S B o f 6 3 : ^ ^ ~ ! ! ! $ $ $ $ $ ! ! , ~ ~ ^ 2 : } 3 6 9 a f m r A N +.{.d.r.H.#+o&E%'#s@_#]#p#M#v$[%m#Y$r@g@T+x+2+&+V.z.s.}.K&$.+.S N B H r o n g a 9 b 8 3 } : / / ^ ^ ~ ~ ~ ~ ~ / : } } 6 i )#z Z$$.3.q.X.1+F+'@4=(#0%)$'$k$$$V%E#8=-#k#y@k@t#W@t#k@q@k#W#0&o#/$)$/$5$P%6#C@*@s#[+W.q.d.$.Q A t f 9 3 [ ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % ~ ^ } 6 f r M #.<.o.W.Y+Q+Z#6&~$m#o#0$9=)$,=z#|%k#c${*,@&@=@U+5@m@M@l@r@ #G#>#;#,&+#_#-$x@[@'#0=]@%@Z#a@W@`#S*|%*$M#;$!=;$ &w*z%k@0@L+2+X.B.2.%.Q A o f 6 3 : ^ ( ~ ! ! $ $ $ $ $ $ $ ! ! , ~ ~ ^ ^ : } 3 6 9 a g o y I ` !.#=w.h+X.<+n@4@(@2&_#|%q#m#;#q&l%X*'#O+b+[+@+V.B.m.2.<.{.$.+.T N J A y r n g k a 9 6 3 [ : _ / ^ ~ ~ ~ ~ ^ / : } 3 6 i n y Z$$.[.o.L.3+a=c@<#y*;#9$s*z*_&U#I$;#6#`@6&W@(@_@i#1@I#y@J@8#}#R#z#0&e#e$|&_@c#@@-+H.k.<.#.N v m d 9 3 : ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 i D M ).:.m.H.-+@@c#_@V@##]#R#.$z#m#W# #V@|@a@6@W+&*M+7&S+c@,@1@k@y@l%U@J#-$s@W@a@;@T+-@7&N+4@;@b@|@|&k#l#P%*$,%1#}#=#y@i#4@y+,+K.!@[.$.Q v u d 6 3 : ^ ~ , ! % $ $ # # # # $ $ ! ! ! ~ ~ ^ 2 : } 3 6 9 d g o z b=Y ;.9.r.G.&+Z& @]@[@C@*#S*_#^&y@x@a@T+ @p+}+*+M.h+r.t.1.4.{.%.@.X Q N J z r o n f d 9 6 3 } [ _ _ ^ ^ ^ ^ ^ : : } 3 6 i n y N #.<.l.I.-+C+_*<*N@_#A#-&*$v%J%{#c=q@I#o@a@0@u@m@>@_@|@Y#q@J@##=#~$A@Y#(@U+H+[+L&h+P._.X .r j d 6 } : ^ ( , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a o L X _.w.E.=+0+ @c@1@V@J@=#8#G#6#J#q%n&a@5@@&O@v+D+8@ @P+S+c@'#_@o@}@}&_@r%6@W+M+G+v+Q+ @F+@&]@b@W@`#J#6#S#@#=#J@|&d=;@L@o&%+F.k.@*@.W v m a 6 } _ ^ ~ , % $ $ # # # # # # $ $ ! ! ! ~ ~ ^ : : } 3 6 9 f n r B Q @.5.P.%#K.-+y&v+W+9&g@t#x@Z@g@'#d@F+b+2+-+L&m+M&o.s.P.9.<.h.-.$.@.Y ` N B v r o g i 9 6 3 } [ : _ ^ ^ ^ ^ : : } 3 6 i n y N /.h.s.#&&+Z& @%@~#c$^&##G#C#6#G@V@x@(@'#c@T+S+S+$@e=m@a#o@t#k@k@@$}&'#S+H+0+~@G.m.[.$.Q A o f 9 6 } : ^ ~ , $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a t A S =.-*O.W.}+s+M+Z#~#I#4=r@6=c$x@o@H&=@O+s#n@d+6+6+d+b+K+ @P+N+S+4@W+@&.@L+x+b+d+6+&#s+K+ @O+r&>@o@f=c$r@j#V@k@o@u@O+U*<+]+h+P._.+.%*C m a 8 } _ ~ ~ ! $ $ # # # @ @ @ # # $ $ % ! ! ~ ~ ^ ^ : } 3 6 c f t v M S $.<.t.!+4#-+0+y+F+S+]@6@W%T+7&s#s+8+_+&+W.)+.+B.r.s.}*8.9.<.h._.%.@.X Q M A y o f.f 9 6 8 h [ : : _ _ : : : } 3 b i n y V +.v.P.h+X.<+b+O+&@g@0#8&-$r@9*k@W@:@)@T+7&F+ @ @ @F+M+<@U+c@;@&@]@S+t&b+2+#+V.g=2.{.Y V y n f 9 3 [ : ~ ~ ! $ $ # @ @ + + . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a n A P &.3.o.M.n+4+8@@&)@2@}=n&W@~#d&u@3#9@Q+s+7+2+e+r+<+Y+2+0+5+d+@@s+s+d+`+4+2+[+<+<+[+{@5+b+w+9@3#u@I*o@W@n&1@2@u@c#Q+7+-+K.v&8.{.X J r j 0 h [ / ~ ~ ! $ $ # # @ @ @ @ @ # # $ $ % ! ! ~ ~ ^ : : } 4 b a g o z N X *.l$s.!+K.&+J+7+s+x+Q+Q+u+b+5+2+_+#+I+K.H.T.h+O.o.r.m.s.w.8.9.@*_.*.#.X N I y o j f a b 8 >.} : : : : : } } 6 9 i n y V +._.P.v&K.-+7+8@c#)@2@}&n&n&}@_@'#%@c#F+w+n@s+r#6+d+s+c+u+8@Q+Q++@d+B+>+x&)+v&P.h.@.(.A o g a 6 3 : / ~ ~ ! $ $ # @ @ @ + . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a n A P $.l$m.F.*+>*C+L+S+6@9&,@'@0@6@W+R@Q+s+4+r+j+n+@+*+*+&+%+n+-+-+'+'+-+n+%+&+*+@+V*n+i+Y+4+d+8@P+W+c@0@'@,@'#6@W+G+s+[+@+)+o.1.*.X I r g 0 h [ / ~ ~ ! $ $ # # @ @ @ @ @ @ # # # # $ ! ! ~ ~ ^ ^ : } 4 9 a g r A N Y *.[.t.%#G.Y.&+i+r+2+2+|+r+_+f+&+I+D&M.H.S.T.~+~+h+B.B.q.r.m.$*8.[._.%.+.Q M y o m f a b 8 4 } : : : : } 8 6 c f n y V +.{.2.p.M.%+|+s+]*P*6@'#,@,@'#&@V+N+L+K+d+7+2+Y+J+J+<+r+[+[+[+r+,+n+^+K.E.r.8.h.a.Q .y n i 9 6 } : / ~ ~ ! $ $ # @ @ @ @ . . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a n A P !.l$m.T.^+}+`+D+O+T+c@&@;@]@W+9@v+b+0+r+n+*+W.K.I.H.H.)+V.M.M.M.M.M.V.)+ +m+M.K.Y.*+z+J+4+P@Q+R@S+]@6@;@c@$@O+H+6+}+=+F.r.9.*.S I r g 0 h [ / ~ ~ ! $ $ # # @ @ @ @ @ @ @ # # # # $ ! ! ~ ~ ^ : [ } 5 9 d j r A N Y *.<.8.n.h+G.K.X.k+@+@+*+^+X.W.K.M.H.H.H.H.H.a&V.M.M.)+F.N.h+q.k.8.l${.#.S J z o j f c b 8 3 } : | } 3 8 6 x f o z N +.{.2.p.)+@+<+&#v+O+T+6@)@&@h=4@7&d*t+6+{@}+i=(+@+k+^+^+^+^+X.W.J.U.~+p.A.d._.#.S J y o f a 6 h [ _ ^ ~ ~ ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a n A P $.l$m.S.]+,+5+D+.@S+]@c@c@V+_*O@K+`+|+-+=+4#)+E.N&q.p.p.p.p.p.p.p.p.p.p.q.z.h+.+H.Z.=+-+[+5+R+L+N+T+]@]@U+S+P+x+5+}+/+F.n.9.;.X J r g 0 8 } _ ~ ~ ! $ $ # # @ @ @ @ @ @ @ @ # # # # % ! ! ~ ~ ^ ^ : 3 5 9 f m r A N Y $.5.9.w.r.%#E.F.H.m+I.a&a&H.H.H.H.H.M.K.D&X./+*+@+@+=+]+l+M.N.q.s.9.h.$.S V y o f.f 9 b 8 } } } } 3 6 9 d g o A N )._.8.q.)+@+r+6+D+.@W+e&c@e&d@3@F+x+d+B+,+#+/+W.M.H.F.S.N.E.h+z.p.m.w.1.0.;.@.Q M y o ,.i 9 8 } [ 1 ^ ~ ~ ! $ $ # @ @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % , ^ [ 5 a )#A R &.}.x.F.=+r+&#v+N+7@6@&@;@V+@&W*$#y&J+%+W.H.h+p.m.t.~*8.2.2.2.2.2.2.2.8.Z+j.m.p.h+H.W.%+J+7+y+E+N+d@%@6@c@T+O+v+d+r+*+)+o.2.-.Y J r j a 6 } : ^ ~ ! $ $ # # @ @ @ @ @ @ @ @ @ # # # $ ! ! , ~ ~ ^ : [ 3 6 c u.m r A N S #.*.:.[.P.s.n.p.q.B.h+~+E.T.F.H.M.D&X.*+n+i+:+e+|+|+e+,+n+^+J.E.n.8.h.$.` J y t j=d 9 b 8 8 3 3 8 b 9 i j r B Q #.h.i.z.J.#+[+P@ @N+U+c@6@c@T+N+G+c+L*r+n+X.J.F.h+q.o.m.s.s.w.8.9.<._.*.#.Y Q I y o f.i 9 6 } } : ^ ^ ~ ~ ! $ $ # # @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % ~ ^ [ 6 i o B R -.2.o.M.#+{@R+.@U+u@'@b@r%Z#3#.@x+5+}+@+L.T.p.s.8.[.<.h._._.{.{.{._._.h.<.d.P.s.o.E.K.*+,+7++@E%W+;@0@'@'#Z#T+P+n@8+n+K.v&P._.+...K m a 6 3 : ^ ~ ! $ $ # # @ @ @ @ @ @ @ @ @ # # # $ - ! , , ~ ~ ^ _ } 8 b a f m r z J Q Y $.-.h.[.e.i.s.m.n.p.B.h+T.H.K.X.&+;+[+7+a+y+u+x+u+b+5+[+-+X.F.o.8.5.#.` I u*t f a 9 6 8 3 8 8 b 0 i m C I ` $.<.A.h+l+;+7+u+.@d@Z#'#H&0@c@S+F+K+7+}+@+L.F.B.r.s.P.1.[.<.h.{.*.a.+.S Q V B C o n f 4&6 8 } [ : ^ ^ ~ ~ ! ! $ $ # @ @ @ + + . . . . . . . . . . . . . . . ", ". . . . @ % ~ ^ [ 6 f q .6._.~*h+W.}+&#F+U+'@~#|@h#W@_@u@S+ @&#r+@+J.h+m.P.<._.=.$.#.+.+.Y +.+.@.$.*._.l$-*k.!+I.*+}+5+Q+_*;@d&~#W@k=i#>@d@F+X+J+X.~+s.h.#.O z n i b 3 : ^ ~ , % % # # @ @ @ @ @ @ @ @ @ # # # # $ $ ! , ~ ~ ~ / : } 8 9 a u.j o v I N S ).$.=.5.<.3.2.t.s.r.O.~+H.D&*+j+2+6+x+F+c#T+r&U+S+R@D+`+}+^+F.r.1.{.+.N A q j u.a 9 6 6 6 6 9 a f 3&C J X *.d.l.F./+r+s+E%U+'#i#}@}@c&b@5@7&D+o+,+*+I.h+l.w.1.<._.-.$.#.Y S Q N M A y r G j i a 9 6 h [ [ : ^ ^ ~ ~ , ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . ", ". . . . @ % ~ / } 9 g r ..#.<.!*F.%+0+v+3#'&l@c$`@T@y@k@~#Z#O+c+2+%+K.!+s.d.5.%.@.X S Q N N N O Q X /.%.5.3.s.%#I.*+r+s+E%5@M@@$N@y@r@N@<#l=T+v+0+%+H.r.[.$.` z o f 9 4 : ^ ( , ! % # # # @ @ @ @ @ @ @ @ # # # # $ $ ! ! , ~ ~ ^ : [ } 8 9 a f j o r A M Q S ).$.-.h.<.d.P.k.p.~+a&X.n+[+6+v+c#;@a@o@.*|@~#,@]@E%s+<+^+T.j*l$~.S M y t g d 9 b b b 9 9 d g o z N +._.2.q.J.z+7+ @7@b@|@m=|&|&s@|@a@U+L+d+}+x&H.z.s.1.:.-.$.).S Q N M B z K r o m g f d 9 6 8 } [ [ : ^ ^ ~ ~ ~ ! ! % $ $ # @ @ @ @ + . . . . . . . . . . . . . ", ". . . . @ % ~ _ h 9 j y Q $.d.p.K.n=b+'*a@k@J###+#+#.#_$:#>=r& @7+z+K.B.t.<.-.#.X Q M B B A A B M N T ).=.<.w.q.I.%+{@x+W+a@I#*#_#,#C#I@z@h&,@_*b+,+D&q.8.].X B D g 0 4 : ^ ( ~ ! ! # # # @ @ @ @ @ @ @ @ # # # # $ ! ! ! , ~ ~ ^ 1 : [ 3 8 6 a k g n r z I N R Y #.*._.w@2.t.r.h+M.^+,+o&x+@&0@}@S@B@H#X#o=`#W@m@M+d+i+Z.B.P._.).N A o m i a 9 b 9 9 d f m D k&O #.h.t.~+X.r+c+c#,@x@`@ #f%6#X#r@<#'#N+y+[+*+G.p.P.<.-.#.X (.V I A y r o n n g f d d 9 6 6 3 } [ [ : ^ ^ ~ ~ ~ ! ! % % $ $ # @ @ @ @ + . . . . . . . . . . . . ", ". . . . @ % ~ : h 0 m z P =.P.h+^+{@L+u@x@u#W#{$p=.$0&|%J@0#'#O+d+'+Z.T&t.<.&.).O J A v r r r y A I (.X $.h.P.%#J.n+5+F+e@l@q=8#g#R#1#J%(#A@t#e@L+0+*+N.++5.+.M C j&0 5 } : ^ ~ ! ! $ # # @ @ @ @ @ @ # # # $ $ $ ! ! ! ! , ~ ~ ^ 1 _ [ } 3 6 9 a f g n r y B M P X #.*.:.[.i.r.~+J.&+Y+@@P+&@}@p@_#W#}#q#/#.#B@t#e@G+0+@+S.s.<.$.Q B r m f a 9 9 9 9 d f n r B R $.<.m.F.&+4+]*e@t#z@S#]#{$P%A###r@}@]@Q+1+@+H.r.8.5.$.Y (.I A v r o m j f i d 0 9 9 6 6 3 } } [ [ : / / ^ ~ ~ ~ ~ ! ! ! $ $ # @ @ @ @ . . . . . . . . . . . . ", ". . . . @ % ( : 8 a o B X _.t.F.$+d+<@(@T@-#n#K$9=<%_&n#|%*#o@T+K+:+W.h+t.:.$.S ..B v q o o o q y A J R #.5.P.%#K.i+P@3@2@y@G#R%w#8$0$v$*$(#q@(@S+C+-+H.m.<.#.N v n i 6 } : / ~ , ! $ $ # # @ @ @ @ # # # $ $ $ $ ! ! ! , ~ ~ ^ ^ 1 _ [ [ 3 6 6 9 a i g t r z B V P +.!.-.<.P.x.E&K.{+2+K+S+2@N@I@]#E$M#E#o#R%D$T@o@W+b+'+S&o.1.=.X J v t g d a 9 9 a i j o y M X =.1.o.M.i+b+S+D@r@G#0&o#E#v$9$g#I@s@'#F+7+%+H.r.1.{./.Q .A v o n j g f d d 9 9 9 6 6 8 3 3 } [ [ : : / ^ ^ ~ ~ ~ ~ ! ! ! $ # # @ @ @ + . . . . . . . . . . . ", ". . . . @ % ( : 6 u.o M ).4.m.M.,+x+;@I###v#N#m$[$[$a$0$*$r= %e@s#[+]+~+t.:.#.R M y q t j j j t D y B Q /.5.P.z.l+J+K+U+|@J@J%v$9%k$&=>$&$0&~$P&;@D+J+K.p.[.$.Q z o i 9 h : / ( , ! % % $ # # # # # $ $ $ $ ! ! ! , , ~ ~ ~ ^ ^ ^ 1 : [ [ 3 6 6 9 0 i f j o r z I N S @.*.h.2.x.E&L.n+0+v+e&W@l%>#0%C%7=f$V%s*R%##C@u@v+[+Y.B.P._.+.N y o j d d a a d f j o z M Y {.P.B.W.r+D+6@x@H@m#,=F$'$%&N#X$>#T@[@N+6+f+H.r.9.].+.O B y o n g i i a a 9 9 9 6 6 6 6 8 3 } } } } : : : : ^ ^ ^ ~ , , ! ! $ # # @ @ + + . . . . . . . . . . ", ". . . + # ! ( : 6 f r V #.l$o.D&J&G+'@V@>#M#$$N$s==%N$+&w#W#V@'@F+8+=+E&t.:.#.P B y o j j j j j t r A N +._.P.B.Y.[+Q+&@k@C#[&H%t$*%o$d%%&S%7#|&'@G+2+X.z.2.*.S B o f 9 8 [ < ( ~ , ! % $ $ # # # # $ $ $ ! ! ! , , ~ ~ ~ ^ ^ ^ 2 : : [ } 3 6 6 6 9 d f j u r y A M R +.$.5.1.j*i*K.n+4+ @t=h&G*J%v$%&u=v=&&F$S%W#r@,@F+8+^+h+i._.).N y o j i d a d d f m o z N )._.w.h+w=1+G+>@`#8#0%H%&&L$w$'$&$==J@{*4@s+'+M.r.d.;.+.N A r o j f i a a 9 9 9 9 b 6 6 6 8 8 3 3 3 } } [ [ : : 1 ^ ^ ~ ~ ~ ! ! $ # # @ @ + + . . . . . . . . . ", ". . . + # ! ^ } 9 g r N !.d.q.L&8+P+2@5*q#8$a*=%x=y==%&&&%z=T@2@M+7+*+T.j.:.#.Z$B r u j f f f g m q A N +._.P.B.X.|+ @0@`#l#o#`*s$$%#%!%p$s*A=*#_@M+7+=+~+P.{.X I r f 9 8 } _ ^ ~ ~ ! ! % $ $ $ % % ! ! ! ! , ~ ~ ~ ^ ^ ^ ^ : : : [ [ } } 8 6 6 9 9 d f j m o w A M P Y $.{.}.s.B.J.n+4+B#e@I#I@-&&$$$d%M$+%%&U#$=T@2@f&B=^+h+w.5.g.N y o m i i a d d f m q A N #.:.V&N.*+4+P+a@-$:=w#>$g$o$j$&&!=*$6#l@r&n@i+M.o.d.;.X N A r 3&j f a a 9 9 9 9 9 b b b b 6 6 6 6 6 8 4 3 3 } [ [ : / / ^ ~ ~ ! ! $ $ # @ @ + + . . . . . . . . ", ". . . + # ! ^ } 9 g v O $.2.z.^+7+M+_@A@J%0$U%=%U$y==%&& $z=T@M@O+7+*+T.s.:.#.Z$A r m f f d d f m o H N +._.P.B.X.2+ @9&c$7#o#+&H$$%'%C=l* $>%l%(@7&o+*+T.t.5.Y M w g a 6 } : / ~ ~ , ! ! ! ! ! ! , , ~ ~ ~ ( ( / / _ : : : } } } 3 h h 6 6 b 9 9 d f f j m o w A M P X #.{.[.t.y%M.%+B+w+c@t#J@g#D=%&E=%%&&`%[%W#r@,@F+8+^+h+i._.).N y o m i i d d i f u r B Q #.w@s.T.@+7+9@a#q@>#F#%&L$A%u%B%F=*$6#l@r&n@,+K.o.9.;.Y N G=r o j f d a a a a a a c c c 9 9 9 9 9 9 9 b 6 6 6 h 3 } } : : ^ ^ ~ ! ! $ $ # @ @ + . . . . . . . . ", ". . . + # ! ^ } 9 j v (.~.2.~=x&7+9@/@B@]#s*k$A%3=$%A%f$M#>#-$:@.@7+*+.+s.:.#.Z$A o j f d d d f j o H N +.{.P.B.X.|+s#u@Y#8#!$F$U%V$G$A$'$y#/#T@_@7&o+&+S.s.h.+.N K m a 6 3 : / ^ ~ , , ! ! ! ! , , ~ ~ ^ ^ ^ : : [ } 3 3 4 5 5 6 b 9 9 9 9 a a d f g j u o r y A M P X #.-.<.P.p.H.*+[+$#4@o@T@7#.$8$q*2*V%s*0&##]&Z#w+[+W.B.8.-.X M y o m i i d i i g u r I ,*a.<.s.F.@+7+P+a@p@l#($g*B%%%U%`*&%:* #n&d@y+,+K.p.e.].+.N A r o n g f i k k k k u.u.u.u.u.u.f f f f i a a a 9 9 b 6 4 } } : ^ ] ~ ! ! $ $ # @ @ . . . . . . . . ", ". . . + # ! ^ 3 9 m v Q =.P.~=k+4+P+b@|&W#[%V%:$A$A$:$O#n#G#c$'@F+4+*+.+t.:.#.O A o j f a a a f j o H N +.{.8.B.g+[+8@;@h&D%|#&$N%Q%U%m$P#[&@#V@:@P+o&&+S.s.:.#.N y m k 9 3 [ : ^ ^ ~ ~ ~ ~ ~ ~ ~ ( ( ^ / : [ [ 3 h 6 6 6 9 9 0 0 4&d d i f f g g m n o r w y A I N P X #.-.<.P.n.T.X._+d+.@>@k@}%4$.$U#H=o#R#D$T@~#s&s+i+M.o.3.&.S M r o j i i d i i g u r I ,*$.<.k.S.*+4+F+'#j@##0&E#V%W$%&N#[%A#A@o@W+b+i+K.p.2.{.+.Q I y r o n j g f f f f f g g g g g g j&j&j&j&j&g g f i d 9 9 6 8 } : _ 4*~ ! ! $ $ @ @ + . . . . . . . ", ". . . + # ! ^ 3 0 m z P =.8.~=^+8+G+0@C@##0&E#F$2*W$I=y#J% #P&Z#B#8+/+E&t.:.#.O A o j f a a a f j o H V Y {.8.B.W.<+K+U+m&J#A#!$/$`%9%P#F#J%I@k@X@F+4+@+S.s.<.#.N z o f 9 5 } : ^ ^ ^ ( ( ( ^ ^ ^ ^ < : } } 8 6 9 9 a d f f f j j n m m t t o o q r r v v A L M N Q S +.#.-.<.2.l.~+L.#+8+8@d@[@N@{&(#]#g#/#K#*#2$Z#L+8+*+T.s.w@#.Q B r m g i d d i i g G r I ,*$.<.s.T./+1+s#;@<#U@|%.$v$8* $S%m#=#9*:@N+a+-+K.q.P.h.!.` V A v r o o G G G o o o q q r r r r w w C r r r o o m j f f a b 8 3 [ _ ^ ~ ! ! $ # @ + . . . . . . . ", ". . . @ # , ^ 3 0 m z R =.8.z.]+|+v+c@|@J#W#*$w# $&%w#R%~&`@}@=@D+[+]+~+t.:.#.O A o j f a a a f j o H V Y ].e.q.L.,+b+c#2@2&D%}#.$F#y#[%-&8#*#W@c@s#8+*+T.s.<.#.(.A o f x 6 } : ^ ^ ^ ^ ( ^ ^ ^ 2 : } } 8 b 9 d i g m m o o o r r C C C C C H z z A B I J V N Q R S Y @.$.{.<.2.s.B.H.^+,+`+L+=@2@x@y@A@U@T@=$}@u@P+&#;+K.q.2._.).N z o m g d d a d i g u r I ,*!.w@j.E&^+[+K+T+_@c$I@/#R%,%*$q#+#J#x@0@P+5+-+K.z.w.@*%.+.Q V I A y y C C C C z z z z A B B B B B I I I B B z C r o m g d c b 4 } : ^ ~ ! ! # @ @ + . . . . . . ", ". . . @ $ , ^ 3 0 m z P =.8.z.Y.r+K+4@_@c$_#>#{$v#*$m#W#J@s@a@<@c+r+W.h+t.:.#.Z$A o j f d d d f j o H V Y ].e.q.J.-+6+P+E@l@*#=#/#m#{$^#D$X#:#/@4@x+[+^+T.s.<.!.Q A o g d 6 h : : / / / / / : : [ >.8 b 9 d f f.t r C H A A B B J J J J J J N N N N Q Q T S Y +./.#.a.$.-._.<.2.A.o..+K.&+<+d+ @S+u@2@~#o@_@'#U+L@X+}+X.h+s.<.$.` I C 3&g i d 9 9 d i g u r I ,*#.:.t.h+X.J+b+O+J=t#F@I@D$|%{#C#X#c$~#]@L+5+-+L.h+A.d._.#.Y R (.N V J J J J J N N N N N Q Q Q ` ` S S R Q Q O N .A v r n f a b 4 [ : ^ ~ ! ! # @ + . . . . . . ", ". . . @ $ ~ l 3 a u A P =.8.z.W.,+b+N+'#t#`@c=(#|%:=@#1&y@W@m@9@P@,+W.h+w.h.#.Z$A q j f d d d f m o H V Y ].e.p.M.n+7+ @=@i#Y#A@6#G#@#K=J@y@Z@X@N+#@<+X.E.s.w@!.Q B D g d b h } : : _ / / : : [ h 6 9 a g n o C A I %*N Q T T T a%Z Z Z Z Z Y +././.@.@.$.$.*.*.;.;.{._.v.h.[.8.w.l.z.S.D&&+J+7+y+B#O+'*<@O+L+R+4+i+X.N.m.9.;.Y N A r m g i 9 9 9 d d f u r I Q #.:.w.h+W.i+6+G+]@_@L=F@H#k#G*J#V@t#,@W+w+7+-+W.E.l.-*<.{.$.@.+.Y X a%a%a%a%X Y +.+.+.+.+.@.M=^.$.$.$.%.$.^.@.+.X Q N B v o j k 9 3 [ _ ^ ~ ! % @ @ + . . . . . ", ". . + @ $ ~ 2 4 a u A P =.2.q.L.i+d+P+;@~#=$A@H@##e$ #B@k@i#c@F+6+i+D&h+w.h.#.Z$A r m g d d d f m o H V Y ].e.p.m+#+0+H+W+,@<#V@A@S* #^&q@k@(@;@P+s+J+X.E.s.<.!.Q B D j d 9 8 3 [ [ : : [ } } 8 b a u.m o K B V P X g.#.$.*.=.{.{.{.{.{.{.{.{._._.5.:.:.4.<.l$l$l$l$l$l$l$[.1.8.i.s.o.B.F.D&*+-+Y+4+6+C+P@p+8+}+%+L.E.l.9._.@.Q B r t g d 9 9 9 9 a d f u r I Q #.:.P.B.K.-+7+v+W+H&{*s@y@T@q@4= %o@0@@&D+7+i+X.F.q.s.2.7.:._.-.-.-.-.-.-.-.-.-.{._._._.K&:.:.<.<.[.[.[.[.7.4.5.-.$.).R ..z r m k 9 3 [ 1 ( , % # @ @ . . . . . ", ". . + @ $ ~ 2 4 a u A P =.2.q.L.;+6+]*e&_@x@y@J#X#H#A@V@t#a@U+w&5+'+D&h+w.h.#.P B r m g i d i f m q G=V Y {.2.p. +&+{@u+'*0@o@k@y@*#l%T@c$t#2@]@F+X+}+X.E.s.<.$.R B r j d 9 6 3 } [ [ [ } } 8 b a f u r z ..S /.%._.:.[.9.2.8.8.P.8.8.1.1.1.2.8.P.w.t.t.s.s.s.s.s.j.w.w.P.P.P.P.w.w.m.o.B.T.M.D&/+%+$+-+-+#+=+4#F.z.s.d.].@.Q I y o g d 9 9 9 9 9 9 d f m r I Q #.:.P.B.J.n+0+x+N+*@[@l@Y#c$2&C@2$_@e@-@8@p+}+*+J.E.p.m.w.P.2.1.3.3.2.2.2.2.2.2.1.2.2.8.P.i.t.s.k.m.x.x.l.l.k.t.8.[.h.%.+.O A r m a b 3 : ^ , ! # @ @ . . . . . ", ". . + @ $ ~ : 8 d u A R -.2.q.L.;+6+G+r&2@l@9*5*U@U@T@c$|@,@T+w&5+;+D&h+w.h.#.Q B r m g i i i f m q A N Y {.2.p. +&+2+K+N+u@g@I#8&F@q@y@Y#|@a@=@t&&#,+X.T.k.l$%.S M r m i 9 6 8 } } } } 3 6 b d f.t '.B O +.*.h.d.P.k.o.q.q.B.B.z.z.q.o.o.o.p.q.z.z.h+h+E.E.E.E.~+!+z.q.n.m.s.A.w.w.j.k.x.o.B.E.F.H.I.I.a&F..+%#m.P.l$-./.,*I v o g d 9 6 6 6 6 6 9 a f m r B Q #.O&P.B.J.(+8+K+O+6@2@|@6&:#:# %h#_@u@<@ @d+[+$+X.I.N.z.q.o.o.o.o.p.q.q.q.q.q.p.o.o.y.q.z.z.h+~+T.F.F.H.H.H.F.E.B.x.w.[.{.g.P I r j u.9 } / ~ , % @ @ . . . . . ", ". . + @ $ ~ : 8 d u B S -.2.O.L.>+6+F+e&M@x@N=q=u#u#*#c$l@a@U+G+p+'+W.h+t.:.#.` I r u g f i f g u r A N +.{.8.p.M.(+0+x+c#0@}&k@d$T@5*F@N@t#d&]@F+d+J+X.T.m.l$&.S M r m f 0 b 8 3 } 3 3 6 9 d f o y M ` #._.d.s.p.~+H.K.W.W.X.Y.W.L.K.M.M.V.M.J.K.l+Y.X./+=+=+/+]+W.K.H.N.N&p.l.s.w.t.t.t.t.k.x.r.o.o.o.r.m.t.8.[._.$.Y Q I v t j i 9 9 6 6 6 6 6 9 a i j&D B Q #.O&P.B.J.n+8+u+N+&@_@t#s@c$9*Y#x@o@>@U+P+n@7+}+#+X.L.I.H.H.)+M.J.K.L.D&D&L.L.J.M.V.M.M.J.L.W.X.=+@+#+n+f+n+#+*+W.V.~+r.8.:.#.S I r j a 4 : ^ , % # @ + . . . . ", ". . + @ $ ~ : 8 d G B S {.P.B.l+}+C+P+t=~#C@5*J@I@_#X#q@k@[@5@F+d+,+W.~+j.<.$.` I r G j f f f j u r A (./.5.P.q.J.n+7+v+$@,@|@c$z@H#H#U@r@I#(@;@M+b+r+/+S.m.[.=.S M r m f a e 6 6 3 8 6 9 d f t y M S $.h.P.o.N.L.*+-+}+Y+G&G&Y+}+i+-+z+(+#+(+n+-+>+}+Y+2+1+{@1+[+}+-+*+l+H.~+q.m.s.i.8.2.1.2.2.2.2.e.9.[.<.h.{.$.+.T W B C o j d 9 6 6 4 4 3 3 6 6 0 i j o B Q c.O&P.B.K.z+4+Q+<@0@}&k@y@T@5*r@N@2$_@&@c#v+P@8+,+n+&+*+/+*+%+z+i+_+}+I&I&,+_+;+f+n+#+#+n+-+i+J+[+8+7+6+O=X+5+0+r+i=/+)+v&W&:.a.P A o f 9 3 1 ~ ! # # + . . . . ", ". . + @ $ ~ : 8 d G B S {.i.h+X.<+y+N+'#t#r@k#C#l#+#q&J@p@n&0@7&#@<+I+.+s.l$$.R J C G j f f f j o w B Q @.h.P.C.L.'+6+]*c@(@C@z@_#K#C###^&V@Z@>@c#K+2+*+G.n.d.=.X M C G g a 9 6 6 6 6 b a f j r B P #.:.Z+O.I.@+}+7+s+Q@s# @s#8@$#C+6+o&4+8+0+4+5+d+#@b#v+ @L+ @8@y+p+|+-+^+J.P=p.m.i.9.[.<.:.:.:.v._.-.=.$.#.Y ` N J z r n g d 9 b 8 3 } } } } 3 6 9 d j o A Q c.O&Z+B.D&i+p+L+]@2@x@r@_$H@I@J@A@`#h#a@]@9@H+X+4+[+<+B&r+2+4+6+s++@x+x+x++@b+&#o+7+0+8+0+7+`+s+$#s#F+O+-@c#N+Q=Q+P@2+n+L.!+t.h./.N y m a 3 : ^ ~ - # + . . . . ", ". . + @ $ ~ : 8 d G B S {.w.~+/+2+D+T+_@=$J@l#}#{$ =]#@#u#C@2@$@x+2+=+S.k.l$&.X J v o m f f f f.o w B Q @.h.w.h+W.,+s+7&X@l@T@<&-#R=g#S=8#H#=$[@U+v+0+{+I.o.1.-.Y N v G g k 9 6 6 6 6 9 k j q A N ).K&~*C.L.-+7+x+O+U+e@0@0@e@c@4@7&F+ @8@x+D+v+T=f&c#d@;@m@'#0@;@$@P+x+o&,+=+I.h+l.w.9.<._.;.%.$.!.`$+.X S (.%*I A C o m f d 9 6 h } } } } } } 3 6 9 d j o A (.c.:.w.h+W.,+s+9@J$|@r@H@8#>#/#W#=#^&c$W@r%3#P+Q@s+6+6+6+P@u+L+O+W+]@6@;@c@U+<@O+t&s#8@u+x+w+G+R@S+h=0@:@i#o@g@:@u@P* @5+;+L.v&2.;.S B o f b } / ~ - # + . . . . ", ". . + @ $ ~ : 8 d G B S {.w.E.*+0+B#;@|@l%D$0&[%y#U#($m#G#T@W@6@ @0+@+F.l.[.=.X M y o m f f g n o w L P !.#=$*~+X.[+K+$@*=V@D%z=I$[%S%0%m#8#z@t#u@F+5+z+M.p.1.-.Y N y G g i c 9 b b 9 a f u v M X =.1.p.J.;+6+F+5@_@t#=$c$`#k@t#~#,@)@r&4@S+S+$@e&u@'&U=@$j@N@N@I#1@'@3# @p+,+X.F.p.t.[.h.*.!.+.Y S ` N M I A v r o m g k 9 6 5 3 [ [ : : : : : } 8 b d g o A (.#.:.w.h+X.r++@W+2@N@H@>#0&[&0%*$J%(#H#N@}&0@4@f& @H+Q+ @P+S+&@'&}@X*k@k@P&|@(@/%;@U+W+c#c#W+]@u@:@1@I#y@A@H#G@T@=$1@e@E%`+n+V.x.l$#.N w g 9 } : ~ - $ @ . . . . ", ". . + @ $ ~ : 8 d G B S {.t.#&%+5+f&'@s@<&:*y#P#9%9%P#o#q#_#k@'#E%5+(+H.x.}.=.X V y o m f f g n o K B P $.@*A.E.=+9+s#6@Z@G@A#p#&%!=T%0$o#J%D%N@a@&*&#;+K.q.2.{.Y N y o g i d 9 9 9 9 a j q A O #.:.s.F.%+q+E%u@2$q@_#~&l#+###H#y@I#1@2@'@'#>@b@D@|@=$B@ #=#8#@#f%J#Y#_@U+v+4+{+M.B.j.)&_.$.+.T (.V J A y r q t j f f a 9 5 4 } [ : _ ^ ^ : : : [ h 6 d f o z N #.:.t.E./+1+v+W%n&A@W#z#v$;%)$/$o#{$(#A@I#M@&@W+O+M+O+S+;@a@|@c$G@6#=#=#6#^&r@ %g&2@'@0@E@'#2@1@k@q@H@D$]#==V=]#G#U@@$u@L+8+=+~+P.-.R z n a 4 2 ~ ! $ @ . . . . ", ". . + @ $ ~ : 8 d G B S _.s.#&{+6+N+_@q@|%t*F$B%L$%%:%O#!$l#r@W=N+d+z+m+r.3.=.X V y o n f f g f.o K B R $.@*A.N.@+4+O@'#s@=#v%/$>$:$U%m$Y%($Z*T@g@W+b+_+L.q.8.{.Y N y o g i d 9 9 9 a f m r B R *.9.q.W.r+Q+6@l@u#|%R#C$o#[%v%]#C#^&V@I#|@g&W@t#s@F@k#D$q#*$!$X$v#;#I@c$/@X=b+,+l+~+s.l$-.#.S (.J A y r o m g f a a 9 6 3 } } : : / / ^ ^ ^ : : [ 3 6 x f n y N c.:.j.T.*+0+L@9&C@D%0&&%%&&=&&^$H%Y=.=<&y@Z=,@;@d@d@]@0@i#L=/*Y$]#v%.$.$R#>%8#X#y@6&|@}&o@m&x@9*G@S#g#!$E#)$)$ $e%;#H#2$r&t+_+M.m.:.). .o k 5 [ ^ ~ % @ . . . . ", ". . . @ $ ~ 1 3 a u A S _.A.#&$+X+<@1@u#P%8*B%x$#%h%o$%=`=]#A@~#S+P@-+M.r.}.=.X J v o m f f f f.o K L P $.@*A.N.@+o+.@a@y@:=o#7=%%c%b%*%k$ $J%H#|@V+R+,+L.q.2.{.X ..y o g i d 9 9 9 d f n K M Y _.W&E.@+o+N+g@*#A#X$N#N%'$q*0$S%:*(#J@q@`#:#=$V@/*6#A#1#y#N#V%9%<%F#q#H@P&Z#s#2+^+.+s.<.=.+.Q I A r o n j u.a 9 b -4 } } : : / ^ ^ ~ ~ ( ( ^ : : } 5 9 i n y N +.h.V&N.*+7+P+a@y@l#t*q*.-+-h$N$B%)$n#*&U@I#i#'#&@&@'#c&I#l%8#2#U#)$@-H%0$ &R#|%_#T@N@k@I#Y#y@H#8#m#F#H%k$%%L$:$#$F#A#q@a@E%{@X.q.[.#.N D f 6 } ^ ~ % @ . . . . ", ". . . @ $ , ^ 3 a m A S {.w.#&$+X+P*W@ #1#H%H$j%#-$-%-&-P#{$H#}@W+P@-+)+r.}.~.S J v G m f f f j o r B P !.#=A.N.@+o+A&M@T@>%&%B%-%U$*-#%d%O#v%I@t#r&$#,+L.q.1.=.X M K G g i a 9 9 9 d g o y N g.:.s.U.-+y+c@I#=#s%K%:$M$o$n$m$!=S%J%G#{&z@q@T@A@~$Z*o*v$`%p$%%d%:$=&[%W#r@a@P+4+@+T.s.<.$.X N A r o f.f d c 9 6 4 } } : : / / ^ ~ ~ ~ ~ ~ ( ( ^ : [ 4 9 k m K M +.5.w.E.*+7+M+/@T@z=s*{%-%y=M%'%H$%&w#v*S*N@}@a@'#>@2@h#y@##P%M#9%:$<$w$k$F$M#0&l#k#z@y@|&F@G@q&}#[%O#t$-%=-i%--%%F%z#~$n&W+6+@+h+2.$.N K g e } ^ ~ % @ . . . . ", ". . . @ # ! ^ 3 0 m z ` -.Z+N.%+d+S+W@ #T#9%A%x%;-;-M%s$T%0&J@}@S+d+n+G.m.7.~.P B r u j f f f j G r A Q @.h.w.E.*+7+9@M@5*g#8*U%_=/=o%)%N$F$T#z%t#U+y+i+M.r.}.=.S M C m f a 9 9 9 9 i g o A N #.<.m.I.,+Q+0@V@-#I%$$V$>-)%--A$'$&%*$>###H#J#G@ #S#}#X$N#m$n$h$=%,-m$s*}#A@(@O+y&@+S.s.4.$.` .y o g i d 9 6 8 } } : : / ^ ^ ~ ~ ~ , , ~ ~ ~ ( ^ _ : 3 6 a j r I X {.P.h+^+4+f&/@z@^#/$U%'%$-T$y=C=^$,=^#H@q%W@a#r%,@g@I#o=(%s%)$t%V$h$(=s$k$N#!$z=K#H#*#T@A@_#l#2#x#2*A%U$;-'-S$_%G% &~&I#]@s+#+.+8.&.P y g 9 } / ~ % @ . . . . ", ". . . + # ! ^ } 9 g v Q %.2.!+=+7+7&(@U@-&<%L$)-/=<=#%w$z*g#A@[@N+5+@+T.s.4.#.P B r u j f f f g m r G=N +._.P.h+^+{@G+'@y@/#v$G%!%)%^%3=w$N#{$J@g&S+d+z+!-A+<.$.P B r m f a 9 9 9 9 d g o N*(.#.7.n.~-}+Q+X@p@>#M#m$!%=-]%h%s$f$&$z#A#=#J@G@_$H@G#f#[%)$k$s$_%$%V$G%&%}#A@(@O+7+*+E.t. *g.(.A r m f d 9 6 h } : : / / ( ( ~ ~ ~ , , , , ~ ~ ~ ^ ^ : } 6 9 g o A R *.1.%#W.|+G+'@y@>#,={--%)%^%h%H$%$o#;#H#s@}@a@'#/%D@I#o=l#.$P#:$o$]-h$N$^-P#($]#C#J@/*B@A@I@W#R%E#'$A%^%'-/-T$=%k$ &(#I#]@b+(+.+8.%.Q y j 9 } / ~ % @ . . . . ", ". . . + # ! ^ } 6 g r N #.[.p.W.|+L+'@p@A#M#^$s$_%_%s$N%o#l#c$/%G+{@]+h+w.5.g.N z o m g d d d f j o y V Y *.2.q.D&<+x+;@k@S#n#H%f*V$G$A$+&U#A#q@2@R@7+*+T.++:.#.N z o j i 0 9 9 9 9 d f t N*N #.<.m.I.(-x+Z#=$(#[%%$>&s=_-:-<-Q$v$R#{#D%G@l%l%J@=#;#[&/$>$U%r$A%<$B$o#|%j#a@F+9+X.B.P.{.Y M y o g d 9 5 3 [ : / / ^ ~ ~ , , ! ! ! ! ! ! , , ~ ~ ^ _ [ h 9 i t y O $.[.r.M.,+x+;@ %K#[&.%w$o$G$[-k$;$z#}-T@@$_@0@&@u@:@<#j#C#1*K$f$v=j$N$w$W$/$z#A#<&G@T@q@*#{&~&:*U##$L$h%/=S$)%M$r*($=#t#T+d+~@h+e.$.N u*g 9 } ^ ~ % @ . . . . ", ". . . + # ! ( : 6 i o I Y h.m.)+i+y+U+<#k#{$&%Q$m$m$|-v$J%X#|@U+c+_+K.p.9.{.Y M y o g i d d d i g t r B Q $.l$l.H.n+d+c#g@l%/#t*<%>$^$#$v$m#_#x@6@H+<+W.B.8.{.Y J y o g d 9 9 9 9 9 a f t v V ). *s.F.n+s+U+2$1${$ $+&[$<$:$%$&$n#]#=#_$q@p@1-T@2-8#P%[%8$Q$3-k$.&&%0&6#I#&@D+}+K.p.3.*.S I r j i 9 5 3 [ : / ^ ^ ~ ~ , , ! ! ! ! ! ! ! ! ! , ~ ~ / [ 3 6 d f.C N +.5.s.T.%+6+_*i#T@A#S%Y%2*$$q*z*0%>#H#s@(@0@]@U+]@0@(@C@H#A#9$0$r*a$$$%$z*[%q#S#H#F@c$`#V@z@~$>#z# $2*L$c%-%u%m$/$@=G@(@O+4+/+B.d.#.N r g e } ^ ~ % @ . . . . ", ". . . . @ % ~ : h 9 m A D.=.P.h+=+4+E%'#=$##P%($M#M#($f#~$C@'#F+7+@+N.s.<.$.Q B r n f d 9 9 0 a f f.o z N +._.w.h+]+|+v+;@x@y*/#*$5$F#0%m%e$`#,@O+`+n+U.l.l$$.P I r m i a 9 6 6 6 6 a u.m r I Y {.P.h+=+7+R@:@V@G#o*v$<%g*N#M#4-z=.#U@p@j@I# %:#-$X#@#g#.$U#&%C*w#2#G#y@_@_*6+n+F.s.:.#.O A o f 9 6 3 [ : ^ ~ ~ ~ ~ ! ! ! $ $ $ $ $ $ $ $ ! , , ~ ^ : } 5 9 g r B S =.2.q.Y.v@8@6@h#u#A#T#5$;&[%2#Z*J@Y#g@*@3#N+A&N+d@0@o@`#1&e#s%M#&%&%B*.$}#S#G@p@k@@$t#x@N@*#D%4$z#s*`%f$^$9% $*$,#:#u@v+r+K.r.<.g.M D f 6 [ ^ , % @ . . . . ", ". . . . @ % ~ / >.9 g w N #.<.x.M.i=X+N+a@s@u#C#W#W#d#G@k@,@_*s+_+L.q.2.{.+.V v o g i 9 b b 9 a a g m C J T %.d.r.V.n+5+E%0@l@B@D%@#(%q&G@s@2@<@c+I&W.B.P._.).N y o g a 9 6 6 8 6 6 9 k m r B D.$.[.o.K.,+c+T+~#y@##e#2#*$|#L%5-_#T@s@t#U=g@~#}@@$=$*#I@+#;#g#g#|%6#p@~#U+x+r+W.B.8.-.X J r m d 9 6 [ : ^ ~ ~ , , ! - $ # # # # # # # # $ $ ! ! ~ ^ ^ : 3 9 i u v N ).:.s.#&&+7+F+e@|@`@~$~&l#G#I@T@0#M@6@N+L+8@x+w+F+c#)@g@Y#G@d#,&}#g#,&@#H@5#C@|@c&2@2@i#{*i@r@ #l#P%[&5$t*.$f#=#V@M@&*6+#+S.w._.X A t a 5 [ ^ , % @ . . . . ", ". . . . @ % , / [ 6 i o B S {.8.B.W.I&b+N+0@}@L=q%N@p*o@m@&*6-r+]+E.s.w@!.P B r m f 0 b b b b 9 a i j&D z N `$_.P.B.D&i+&#P+6@*=l@C@:#I#o@0@M*t+[+/+T.s.<.$.R I r n i 9 6 6 8 8 8 6 6 0 f o z N g.h.t.E.^+2+Q+U+_@C@*# #I@_#G@-$j@|@_@'@m@)@Z#0@,@(@h#j@y@z@G@A@r@7-2@U+v+8+*+S.s.<.#.O A o g 9 6 } : ^ ~ ~ , , ! ! $ # # # # # # # # # # $ $ ! ~ ~ ^ : } 5 9 g r B R %.d.o.M.-+5+G+]@/@l@s@N@C@l@i#m@W+F+K+C+5+o&5+s+H+R@=@,@|@S@`@A@U@*#|&L=m&2@9&&@W%5@;@0@a#W@C@q@}%=#+#8#<&J#s@2@W+c+}+L.q.d.$.Q v j 9 3 2 ~ ! $ @ . . . . ", ". . . . @ % , ^ [ 3 0 j K N @.h.t.~+X._+6+s#@&]@&@&@]@_* @&#}+^+T.m.[.*.X M K 3&g a 9 6 8 8 8 6 b E f n r B ` $.<.++h+l+;+o&x+M+T+W%c@U+3@ @a+B&=+F.l.9.{.Y V y o g d e 6 3 } } 3 3 6 9 d n r .R $.[.A+G.&+1+K+N+)@2@1@h#h#}@_@,@)@U+S+N+O+O+N+S+U+t=>@d&[@g@_@'@5@O+K+{@~@G.n.d.*.S B r j a b 3 : / ^ ~ ! ! % % $ # # @ @ @ @ @ @ @ @ @ # $ $ ! , ~ / : 3 6 d t y ..+._.2.q.J.n+8+K+P+4@5@&@6@U+N+L+K+6+2+J+_+i+,+r+0+d+8@A&U+0@'&[@(@_@a@0@e&P*N+.@E%P+.@N+T+;@'@c&|@0#s@ %t#(@u@N+y+r+]+~+w.5.Y I o f 9 } _ ~ - $ @ . . . . ", ". . . . @ # ! ~ _ } b f o A Q $.<.s.h+4#n+J&6+#@K+b##@6+|+n+W.E.A+3.-.+.N z D m i 9 6 3 3 } } 4 6 9 d g t v M X %.l$A.`.J.&+<+7+P@c+K+b+5+|+-+W.T.x.1.{.g.Q A r j d 9 6 3 3 [ [ [ 3 3 6 9 f t y N +.{.2.o.H.*+r+&#v+M+S+U+U+T+S+O+F+ @D+$#y+y+$#D+s#]*M+N+c#c#O+F+x+p+J+*+H.o.e.-.+.N y t f 9 4 } : ~ ~ , ! % % # @ @ @ @ @ @ @ @ @ @ @ @ @ # $ ! , ~ ^ : [ h 9 f o z N #._.-*y.H./+,+8+d+y+K+K+b+6+B+<+-+&+^+X.W.X.=+(+,+2+6+t+ @.@N+@&N+M+F+s#x+c+s+C+s+#@K+v+F+7&4@e&&@Z#;@U+N+s#&#<+^+N.m.<.$.Q v m a 6 [ ^ , $ # + . . . . ", ". . . . @ # - ~ ^ : 4 9 g r I S $.<.t.q.F.l+@+-+i+i+-+@+W.H.z.s.[.-.+.N A r n i 9 6 3 3 } } } } 3 6 9 d g o z ..X %.<.w.y.N.L.*+n+i=8-z+&+Y.)+B.s.3.{.g.Q B r u f 9 6 3 [ [ : : [ [ } 4 9 d g D A O @._.2.o.S.Y.n+[+7+d+#@c+c+b+X+5+7+B+2+J&J&2+9+0+#*p+X+X+6+5+{@}+{+Z.N.l.2._.).N z o g a 5 3 : / ~ , , % % # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # ! ! , ( ^ : } 6 a j q A P g._.e.l.h+M.L&%+f+j+j+-+#+k+9-K.H.S.E.~+N.F.m+Z.^+n+}+|+4+o+6+6+5+6%8+J&Y+<+J+<+[+2+0+5+X+c+x+Q+Q+x+#@5+[+z+9-N.m.d.%.S I q f 9 3 : ^ , $ # + . . . . ", ". . . . + # # ! ~ ^ } 6 a m r M S $.:.2.k.O.E.F.H.H.U..+y%m.P.<.*.Y (.A r t f c 6 3 3 [ : : : [ [ 3 6 9 d j o z N X $.h.e.s.y.~+F.H.H.F.E.z.l.P.<.-.g.(.B r m f a 6 3 [ : _ _ / _ _ : } 3 9 a j r B P #._.1.k.B.)+W.@+z+i+,+}+_+'+-+$+%+@+@+*+@+&+%+$+z+-+z+n+&+^+L.F.z.s.d.{.).N A o f.d 9 3 : 1 ^ , , ! # # @ @ @ @ @ + + + + + + + @ @ @ @ # $ ! ! ~ ~ / : } 6 a j q A (.+.;.l$P.l.z.E.F.H.a&U.F.E.z.q.x.m.s.s.k.x.o.z.T.)+L.X.*+&+%+$+%+&+*+k+^+L&X.^+x&@+(+-+i+}+r+[+Y+J+i+%+X.H.B.s.[.*.X M r j a 6 } ^ ~ ! # @ . . . . . ", ". . . . + @ # ! ~ ^ : 3 6 i n w .P /.*.w@3.P.j.k.k.s.Z+1.<.{.#.S N A r n f c b 4 } [ : : < : : : [ 3 6 9 i j q y M ` @.*.h.[.P.t.s.s.j.P.9.<.].#.X N A r n f 9 6 3 [ : _ / / / / _ : : } 6 9 k m C B P ).-.<.P.m.C.N.!-M.K.L.L.K.J.I.H.H.F.F.F.U.H.H. +H.H.F.N.!+o.s.e.@**.Y N A o g d 6 h [ ^ ^ ~ , ! $ # @ @ @ @ @ + + + + + + + + @ @ @ @ @ $ $ ! ! ~ ] _ [ 3 9 i j D A V X @.{.<.1.P.j.s.k.k.j.w.8.1.}.7.<.<.l$}.2.P.s.A+o.z.R.T.F.F.F.F.S.S.T.T.T.T.F.U.V.M.L.D&W.W.W.K.M.S.z.m.P.<.*.X V y n i b } : ^ ~ ! # @ . . . . . ", ". . . . . @ @ $ , ~ / [ 3 9 f n r A V T +.$.-._.h.h._.{.*.@.X N M z r n i 9 6 3 } : / / ^ ^ ^ / / : [ 3 5 9 d j t K A N T +.$.*.{._.h._.;.%.#.X Q J y o j f 9 6 3 [ : ^ ^ ^ ^ ( ^ ^ / / : >.6 0 i m r A N X #.{.<.2.t.m.r.o.q.q.q.p.o.n.l.l.m.m.l.n.n.n.n.m.s.w.8.[.h.;.#.S M z o f.i 9 h [ : ^ ~ ~ ! # # @ @ @ @ @ @ + . . . . . . . + @ @ @ @ # $ $ ! ! ~ ] _ [ 3 b a g o v I N S ).$.-._.h.h.v._.{.].*.$.$.#.#.$.$.-._.h.<.[.8.i.w.s.k.k.m.!*s.s.s.k.k.l.l.o.q.q.O.O.O.q.o.l.++8.<._.!.X V y o f 9 8 } / ~ , $ @ @ . . . . . ", ". . . . . @ @ # ! b.~ _ [ 3 6 d j o '.A V Q S X Y 6.Y S ` N B y r o j i 9 6 3 } : _ / ^ ^ ^ ^ ^ ^ / : [ 3 4 9 d f n q y B ..Q S Y 6.6.Y S P N I A r t g d 9 6 3 } : ^ ^ ^ ( ( ( ( ^ ^ / : : h 6 9 k m D z J Q Y @.*._.<.[.3.1.2.2.2.1.1.1.|.|.|.}.}.}.[.[.<.<.5.-.$.).S N L K t g d e h [ 1 ^ ~ ~ ! ! # @ @ @ @ @ + + . . . . . . . . . + @ @ @ @ # $ $ ! ! ~ ^ _ [ 3 6 0 f n r v B V Q S X Y ).).6.6.X S R P P P R S X ).#.$.%.-.{.5.:.<.<.<.<.<.<.<.7.[.[.3.1.2.2.-*-*2.1.d.l$5.=.a.Y O L y o g 9 8 } : ~ b.- # @ @ . . . . . ", ". . . . . @ @ # # ! ~ ~ : [ 3 6 c f m q v A B I . .L B A y r t j f a 9 6 3 } : / ^ ~ ~ ~ ~ ~ ~ ~ ^ ^ : : } 3 6 9 d j=u r C y A B L L L A A K r o j f d 6 h } : : ^ ^ ~ ~ ~ ~ ~ ~ ~ ~ ~ ^ / : } 5 9 i g o C A J Q S +.@.$.&.=.=.-.-.-.=.=.=.=.=.=.&.&.$.$.a.@.+.X P ..L y q n f d b h [ : ^ ~ ~ ! ! $ @ @ @ @ + . . . . . . . . . . . . . + @ @ @ @ # # $ ! ! ~ ] _ : } 6 9 d g m o '.y A B B M M M L L B A A A A B L M M N Q ` X X +.g.#.#.#.!.!.!.$.$.$.&.=.=.-.-.-.-.-.=.$.@.+.S (.J A r n f 4&6 } : ^ ~ ! $ # @ @ . . . . . ", ". . . . . . @ @ # # ! ~ ~ / [ 3 8 9 a f j n t o s U o o t n g f a 9 5 3 } : < ^ ^ ~ ~ , , ! ! , , ~ ^ ^ _ : [ 3 6 b c F g j n t o U U o o t f.g f a 9 6 3 [ [ : ^ ^ ~ , , ! ! ! ! , , ~ ~ ^ 2 : } 5 9 a f m o C A B M N Q P S S X X X S S S S S S S S R P O N M L z K o t j d 9 6 3 [ 1 ^ ~ ~ ! % $ @ @ @ @ + . . . . . . . . . . . . . . . + @ @ @ @ # # $ ! ! ~ ^ ^ : } h 6 9 a f j n t o o D w U U D o o o o o o D w y y z B B .M V N N (.Q P P P P S S S S X X X X X S Q (.M B z r u j f 9 6 3 : ^ ~ , $ $ @ @ + . . . . . ", ". . . . . . . @ @ # $ ! ~ ^ < : } 3 6 9 c d d f f f f f d d c 9 6 4 3 [ : / / ( ~ ~ , , ! ! ! ! , ~ ~ ~ ^ / _ [ [ 3 8 b 9 a d f f f g g f d d 9 9 6 4 } [ _ / ^ ( ~ , , ! ! ! ! ! ! , , ~ ~ ^ : : [ 4 b x d g m t D r v N*A B B B B B B B B B B B B B B z z v r o t j f d c b 4 } [ : ^ ~ ~ ! ! $ @ @ @ @ + . . . . . . . . . . . . . . . . + + @ @ @ @ # $ $ ! ! ~ ~ ^ : : } 8 6 9 c d f f f f f g g g g f f f g g g g m u G o o q r r v v v z z A A A B B B B (&(&(&B B B A v r D G j f a 9 6 3 : ^ ( , $ $ @ @ + . . . . . . ", ". . . . . . . + @ @ $ $ ! ~ ~ ^ ^ : } 3 8 b b 9 9 c 9 9 b 6 6 3 } [ : : ^ ~ ~ , , ! ! ! % % % ! ! ! ! , ~ ~ ^ ^ : [ } 3 5 6 b 9 9 9 c 9 9 9 6 6 3 } } : _ ^ ~ ~ , , ! % % $ $ $ $ $ ! ! ! ~ ~ ^ ^ _ [ } 8 b 9 d i f j j t o s r r r r r r r r r r r D p o n m j f i d 9 b 8 } } : 2 ^ ~ ~ ! $ $ @ @ @ @ + . . . . . . . . . . . . . . . . . . . + @ @ @ @ # $ $ ! ! ~ ( ^ / _ : } } 8 6 b 9 9 9 9 c c c c c c c c a a a a a f f g g j m m u u o o o q q q r r r r r r r w o o u j f u.a 9 6 3 [ : ^ ( , $ $ @ @ @ . . . . . . . ", ". . . . . . . . @ @ @ $ $ ! ~ ~ ^ ^ ^ 2 } } } } } } } } } } [ 2 2 1 ^ ^ ( ~ ! ! % % $ # # # # # $ $ % % ! ! ~ ( ^ ^ 1 : [ } } } } 3 3 3 3 } } [ : : 1 ^ ( ~ ~ ! % % $ $ # # # # # # # $ ! ! ~ ~ ~ ^ 2 : } 3 h 6 9 9 a a F f g g g g g g g g g g g g g f f d a a 9 9 6 4 } } : 2 ^ ( ~ ~ ! ! # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . @ @ @ @ @ @ # ! ! , ~ ~ ^ ^ ^ : : } } } } } } 3 3 3 3 3 3 3 3 3 3 4 5 5 e e 9 9 0 a a a i i f f f f g g g g g g g g g g f k a 9 9 5 3 } : / ^ ( , % $ # @ @ . . . . . . . . ", ". . . . . . . . @ @ @ @ $ $ ! , ~ ~ ~ ^ / : : : : : : : : : / ^ ^ ~ ~ ~ , ! ! % $ $ # # # # # # # $ $ % % ! , , ~ ~ ^ / / : : : : : : : : : : / / ^ ~ ~ , , ! ! % $ $ # # # # # # # # # $ ! ! , , ~ ( ^ _ : [ [ 3 8 6 b 9 9 9 0 a 0 0 0 0 0 0 0 0 c 9 9 9 6 6 6 6 3 } } : : ^ ~ ~ , , ! $ # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . @ @ @ @ @ # # % % ! ! ~ ~ ~ ^ ^ / : : : : : : : : : : : [ [ [ [ : } 3 3 3 3 8 6 6 6 6 e e 9 9 9 9 0 a 0 0 0 0 0 0 c 9 9 9 6 6 3 [ [ _ / ~ ~ , % % # # @ @ . . . . . . . . ", ". . . . . . . . . . @ @ @ # # - ! ! , ~ ~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ~ ~ ~ ! ! ! % % $ # # @ @ @ @ @ @ @ @ # # # $ $ % % ! , ~ ~ ~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ~ ~ ~ , ! ! % $ $ # # @ @ @ @ @ @ @ @ @ # # # $ $ ! ! ~ ~ ^ ^ 1 _ : [ } 3 3 4 4 4 5 5 5 5 5 5 5 5 5 4 4 3 3 } } } [ : : ^ ^ ( ~ , ! ! $ $ # @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ # $ $ ! ! ! , ~ ~ ~ ~ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 2 2 2 2 : : } } } } } 3 3 4 4 4 4 5 5 5 5 5 5 5 4 4 4 3 3 } [ : _ 1 ^ ~ ~ ! $ $ # # @ + + . . . . . . . . ", ". . . . . . . . . . . @ @ @ # # $ ! ! , , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , ! ! ! % % $ $ # @ @ @ @ @ @ @ @ @ @ # # # $ $ % ! ! , , , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , , , ! ! % % $ # # @ @ @ @ @ @ @ @ @ @ @ # # # $ $ ! ! , ~ ~ ( ^ / / : : [ } | : [ [ [ [ [ [ [ [ [ : | [ [ : < : / / ^ ( ~ , , ! ! $ $ # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ # # $ $ % % ! , , , , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ] ] ^ ^ ( ^ / / : < < < : : [ } } } | [ [ [ [ [ [ [ : : [ [ : : / / ^ ~ ~ ~ ! $ $ # # @ + + . . . . . . . . . ", ". . . . . . . . . . . . @ @ @ @ # # # $ % % ! ! ! ! ! ! ! ! ! % $ $ # # # # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # $ $ % % ! ! ! ! ! ! ! ! ! ! ! % $ $ # # # @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # $ $ % % ! , , ~ ~ ~ ] ^ ^ ^ ^ ^ ^ / / / / / / / / ^ ^ ^ ^ ^ ( ( ~ ~ ~ , ! ! $ $ # # @ @ @ @ @ + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ @ # # # $ $ $ $ % % ! ! ! ! ! ! ! ! ! ! ! ! ! , , , , ~ ~ ~ ~ ~ ~ ^ ^ ^ ^ ^ ^ ^ ^ ^ / / / / ^ ^ ^ ^ ^ ^ ^ ~ ~ ~ ! ! ! $ $ # # @ + + . . . . . . . . . . ", ". . . . . . . . . . . . . @ @ @ @ @ @ # # * * * * * * * * * * # $ @ @ # @ @ @ @ @ @ + @ @ @ @ @ @ + @ @ @ @ @ # @ @ # # # * * * * * * * * * * * # # @ @ # @ @ @ @ + @ @ @ @ 0-@ 0-@ @ + @ @ @ @ # # # * % $ ! ! ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ { { { { ~ ~ ] ~ ~ ~ ~ , , ! ! ! ! % $ # # @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ @ @ @ @ @ @ @ @ @ # # * * * * * * * * * * * * % % % % $ ! ! ! ! ! ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ { ~ ~ ~ ~ ~ ~ ~ ~ ~ ! ! ! ! % $ $ @ @ @ + + . . . . . . . . . . . ", ". . . . . . . . . . . . . + + @ @ @ @ @ @ # # # # # # # # # # # @ @ @ @ @ @ @ @ @ + + + + + + + + + + @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # @ @ @ @ @ @ @ + + + + . . . . . . + + + @ @ @ @ @ # # # # $ $ ! ! ! ! ! , , , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , , , ! ! ! ! % $ $ # # # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # $ $ $ $ $ % % ! ! ! ! ! ! , , , , , ~ ~ ~ ~ ~ ~ ~ , , , , ! ! ! % $ $ # # @ @ @ @ + . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . + + + @ @ @ @ # @ @ @ @ @ @ @ # @ @ @ @ + + + + + . . . . . . . . . . . . @ + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + @ + . . . + . . . . . . . . + + + + + @ @ @ @ @ @ # $ # ) - $ $ $ ; > , , , , , , , , , ' ' ; $ - = = * # $ # @ # @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0-+ + + + @ @ @ @ # @ @ @ @ @ @ @ @ @ @ @ @ & @ @ # # * # = = - - $ $ $ ; ; ; ' , , , , , ' ; ; $ $ $ - * # $ # # @ @ @ + + . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + . . . . . . . . . . . . . . + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + . . . . . . . . . . . . . . . + + + + @ @ @ @ @ @ @ # # # $ $ $ $ $ % % % % % % % % $ $ $ $ $ # # # # # @ @ @ @ @ @ @ + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # $ $ $ $ $ $ $ $ $ % % $ $ $ $ $ $ $ # # # @ @ @ @ @ @ + . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . + + @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # @ @ @ @ @ @ @ @ @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # @ @ @ @ @ @ @ @ @ @ @ + . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . + @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # @ @ @ @ @ @ @ @ @ @ @ @ + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # @ @ @ @ @ @ @ @ @ @ + . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/ase256.png000066400000000000000000000742521316323560300235500ustar00rootroot00000000000000‰PNG  IHDR\r¨fgAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsHHFÉk>wŸIDATxÚí½išã¶¶-¸Rt™>ï{ª1Ôü'Q×ÎIl€ú±[€¤¤ˆÌ´}®éˆPKnì¾Yÿ÷ÿù öµ¯}=äŠÿôìk_ûúçÖ®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xí `_ûzàµ+€}íë×®öµ¯^»Ø×¾xuÿôìëß½ÂÆã埾°ÿâõo¢éîìks…/>·¯íõo£é…p/av«tß Ÿ~â“//Wÿü_³Â—ŸüÄÛ~3-ÿU lþñ…÷—Õ_rý ]o½¼Üñ¦v_þMûñi6û 3ýËhù iø¯ ~Vøïþì[¿SøÉ5ýƒëïþ_}á¿êRþQ èÿîxÝU®½©,þü_½ÂÍ6hºúàµÂ]oÙÚ—àžüûñ; Ê]{õɲñ–põ¥¥~±½ú'<‚L„+ r³zg¥"Qqéç•+nTÙüóÕ ‹_6ž+PŒ¢aÉ`ôüÖ"ÚWÛ#o J¡O¿c_ü~|uoªÏh?ðÆë¿ò%ö±5_nÓR~lk~nhY ‡ûþöS¾J·¿U\cÎê©Ð¾¶,ˆg7lJ@ß·¦57<‚ÿMŠànူNÓ«ñûb]ѪÔCáM eã+Ág˜9´¿‡•'®½þ³Ä]I4…•«ý<-Ýg6Ì‚S+JSiøOàoS·„¿&XÁ—7Ï1£-8(¬3ÓÚKÿ‹×-w×h»mÑÃUî\³7×C¢ôe5­®@ýÞ…¥löåZÍüÞryyŸÜñ•]úÚÒ¯?mFkí3×?¯¨NZÚëKÙúŽûÖߢ>c™BcUîÿCköÖ\7þ7+-!¸F×5a_W[T1ÿzóm¡ý³°ü×¾ùÂj5ûòÙû^<¼°Â?±ÓÚÊ£\¿îk4½Íí^ø `ÅðI~þí `MøïfÎ1k¯±aqaT(îUÁE¼å׸OÿäÚRª^0‚7§î¥ÁiÄŒõügý®­b¹þHù{A`ÏßEÞ» VC¶{i±vïÍ ¾’lim·RÓÐ{éí^”Ò|Ö65¯„§Í»‹ÑPÿ“Jà·*€O #ìÁ3mØ_5Vžz âK¨°N ÿ:OàNáoó*9dù8ª÷„;¤e‹†–g$µ[š}!KV3°ÿ—HpKñmÐíîïØpñC¨i¿úžÍð U'öð*-Ý])u²õ«Jà·)€{…iñM«®Þ»ˆÞÕ_Ü-µñ•éŠûù_â ܶüeÁl!!”Åc–t­}æµJ £Wñ4 @(š€þ`6æ..d w•l?#ô Å·B»›´v×Rñ¥¾°ÔûR°®<½·³’ï\LïWЧ¥{L¼¹¢D ¦p›Ÿ‹ø¬ð+±˜žÈÁªUŽ•;¹¨ÀAey€U½ñoWkÂ/ÞZva¯BX¡}CßkqôÚµ¨(A-<1&Ñœ½ñìkG`ÖëÎ[çÇÌhÔ÷äîÿÊ}¬)œÕïYñ¢ªÏp®Æêóí¯)Ï{…hF¼+´4¾Í+<.Ú÷ ® ÿ‚I!–¨UE‰íóŸg 'Û!I&° Sµdž?SÂ…Xcâ%³‹Å°IScêb¹®Ê|» ^â`qQe?Èz•å¾8e!õn³^æ¥Õ_—ßîiéEzÞ[ñÆÍ®+ƒ&Øx©ub¥W ÙÃâ4¢¹ÒSþ÷{ ˆŽöµÇà”À MðKÀg„_­V¨…\=€…pq«[‘„@”t¿Y£`çk×i--—üoP[¿fý®´,ªjZÓ]®2ïK°ß°ð—‚ìö¥NЗªÛ¼#kfž#ß›¿çÖÃô4Y£-¶÷y&y¥Ù¼ Î]y£µ^6\ð³&HQ ?€Ì´,ú“ê°º¦~™¸)ü‹8¾Ô Ồ跶VžXD."Љ¬IájZÛ|V‰é sßjIê_ ýÛ–Eø¥ @ŒE…Béꞯ6,\Ø%1œØ(ÝŒ1%fÍ™-| ¤ ï2Ör4k•„š4÷\…<« ÏñQE×:tU 4Jdá¢\M;ç)„­Ïåÿ—1a¯© gVÅ) dD¥e1Å%pÅ£ý% à.Ëï6«rÑTø bdfåÇ—ŒêZW™TÊh¬C6)—â\&Ó–6(}D `%vú‡Ã¯Xþ B4A‘èIÿèo£5ѲÊðOû’‚Š™Ñ&øB£ˆé÷@‚Ÿ™3[3Ð$š(úšàêÜôEkUOúÅ ):á§¢S o–êËöæe8µÎËôSŒK¹úÉE”ZÈkÔs%¥™sA.1ÛïY^Ê4 ^ÚÕ‹pü¼¡PZ\~¬Äüh„?¶?U ÄÈÿB½¡ºTÐI¸s!†ÎL0ãe¾ˆˆ‚\9|¡N$ʵý ráÊã«ÂcHOÓÈ‚ž¢§'ÑyͨˆÛÒ`åú¼°ˆ•È9³FþiY4dSE÷…°,¿§} 抇侄—ØD3,m¨S%Ý*¦¾†5¯É‡±‹ªÖÆuW{·v£.tÍLË9¢ãL¿‡@Æ.gJFGÂpwøúkB€;…¿ñ½Ð«À3ÓÆ¤Sýœ'°Y`ÎÂhs&Í ÿ†h­¾×–[9¿C „?֬ߚE OôÁO‰ÆZfž¥`/öuéJÇlâ®ÓÚ¿œæ¹ùVÚ(@ÈMŽfÐ^øaèÝüJÁÅlü´PzvƒêÛø&¼g"?5LëÉUOÀІ>P)°†4LÃ\æ Ì3Ñp !Óc~åB–/# ”b­×kn”[?¥Ú›mµYÀ¶ð‡5ágæL̰ô3ócFl¡*Yý€œIÌ3 ?3]P†#ŽÊ@n=¶DÈ)˜œÀßæ „•?åÞðëó5ކÐ4tLS¡y µ@{ºT×Pyö_‘É% ð^Lòs¦Ÿ!Ӧô]VûoÜäU"ðóEz•ð(÷Íÿäoo`ü§—Bñ´Ï°/ïÝyÑr)1rxhîÍ­”æ–¼ò‚ y…¶’<Íláç9bdÆ0Ía®÷‰¼« ^–}Ö4ëç<€[Âï4gµi톉eJ)ft©ð¿Œ®sÊ€7QVÎs ˜g`š#¦9`šâ0û ˈկ³$K%€Mß§~ÉZùõ·&”éBãE ͺDô컂®“ßégdš’Ò¨¢·ˆšHÒ=¬÷T¼=zÚˆqŽ'bZÞßÁ!Z ’VƒUáÁÑ¡¸ë0 ٽьF RUv]2> ÑÅçì%¶¶’¯(. ôߣ|OV£¤^@ãUtÔ,½óD!±rSE [Ä8etSÀ8E¤)’Â@4×EʆYö%¬{P+ëË `-lã3Ϩ>N­4(Õ˜Õ˜´ïä'+Þ`Éæ“kD‚?Nã0ƈq0Ç6÷B;‚K@5©R·y›ÍBr_wÆXŸ¢eØx®J4™ iÖùÀÁ¼¨.yúŒ¾'zö¬\Å=ö™øR,–oãqóÜÌ­®˜¶°Õg†Æ‚4ÉwD¦¤«è¯Gª 5ó‹¡÷ŽsÐ=9 é’ôZ5s]¢1m6÷Õ»kÉÀ°Px|=Á®§gê…‡ú‡CVE(^`¹ ñ gþ—Y Èw }…Gûd†I”Ь*'•æBJEFÖåó4/àÓ `•a7,?ýlÛPÍR‰ÆK.>Ku<Ìx:f<g<g3=y‘ã¤i ¸Œ çKB7$ üVeÀb.Y¦ap‰k·¬Q›J ñ€ûD¸ùÀuá÷V¤²†ê@­]ßOÇ /ÇÏO3žŽ3ž‡ÃLÌË÷-‚?ÍQó)’Ôó‚\xÖ'K0’@,Öp"ú3 §Ü„¸×9S-»„@՗רšºÊ µJÀ+=5"¢ôXÙ=ø~³»ggD¦ˆa$k;Í‘ï¾X¬(U,¤H½WQJÐ|”(”)ÇšŽb-³2)èzV&!ÓçÌA•èÇ©CJ"ü’ûÊœ$äïÏBÉ« ª¼ÀO(€µøÔ»¤•p„&[[•eJ%ü]"­*Öÿé8ãõiÆëó„×ç/OžŽ3]FŒDèaŠ8#>ÎÞObì€Ôå×.{ ¼8À±ž ¼s%¬7 5·ÿ5-P+×6m³Úò —O Žž1£‹Ä\‡Ž”çËÓŒ·ç o/^Ÿ'¼°"èR¦Ò3Ü8F SÄ8š"Ȫm¯ÌüÇ^r ô9s–}Ix?%ô,l¢dEÉtlac¡º¶z4B_aÞ–ß4*úO­sdbá|>Îx}š<Ôuôq±/C™­ì0& cÆ4›Ð¶Ö]GŸ{<°azjVË-  Ñrš(‘—9±$®ŸL)OòZºXÔÀ¢ã±§ƒx2¸*K¦=Š1Í£°¯á¤~;¾ °"üm’Æ—ü*káb·¢±ÿ±Ÿñ|Èxy"†ýãmTÆ=ö3R¢Í» ïç‡w %h¹É,Õ¢K¦Þÿ]—Ømrò½Ô"líèêj%à31 á_<çó).‰ºê8¥* õIÀË„ïo#¾¿Žøö2áùiBß‘ÍsÄÈ w¾$\†¨Œ,®°XÁ¾+jUŸä­õÝŒÉÕ=劉¾§Ç U&—˜ç‚æX¹–m¡+·&ôΰÄå=‹@JoÂëË„ï¯vÏ/Ï3ýŒÈÊê2&œ.§s‡÷SÁé’Ñ¥„q*Ä?E¼*6L‡Œç'R(oN‘¦HÑøœ¶ÚçKÂyHGJäeND‡HÉIñtŸ´?òY}G5¾q ø8wøñÞ¡O´ ä±ÊwMS ˜bÁìŸÀ Õ;¦ÿškËN…ö5>P4SLÙê&^­6­Ö!ãÈDùö:âo#þó6àíuÂó‘\®9§sÂñƒC‚Ì30Τq% =w©Ðë#Ǹ¾¬™Ûª'Uþ×x÷(O¬µPàˆG•yoŽ®Éç8x>Ãþñ6â?ßüñmÄÛó¤Ì6Mç!âtIøè;œÎ —!apŒ+1ð±7!x}žñ|œTr 8]žÞéïR資‘,m7Ft©`”ýÏ™cV)U,ä eÓ5üD­µ¨ÏÇY Èÿù>à?ßÈ3b(|Ï ?Nþê¥4š#ДT¦¼ÑòØO¾¾LøÆŠåíeÂËÓ„ŽT”èÇ¥Ãǽïr!O`Îtƒ1+æç#y¹oü™/Ï޽)€§Çþ`ÊAs]—!¢ ÒháG +]÷1äç<€Ao¼~Íc"Ôš;*ÓJ"Äeq5 HLöôD öýuÄßüñ6âõY<h\”Y#^†ˆË0ãÒGtcFJiΈ1 Erçb.äóA”€¿;™(ÛJ å×O ~X>V¹0ƒG¿*)æêú–SË5ãåÙ Ä·ß^':ª… #¹í]ªó81RPXºŒ§c& ø2áÛ˨!E×e”ð~IH‘ÇeŠ8]:|œ%qSÝ„¸}Vˉ…,ئGÕtâÕ¥dŽ«S|{%¥÷ÿðýmÄÓ‘À8F|\:ô}¦0¥@“"bˆl0j¯çõ‰îû·ßßÈ3í¹íãH °ë +ó‚R*Ó Õ3{ÉÓe#ŒcÂñ@nd:¾Ÿf|ô½ösDíçðƒJ>rÍ9½K˜µoãÔFø}̯ÙÎ&ñçÛQW²¡”\b¦åM|y"íH €ÜÖœúD.×ù’ðq&bõJÎpÇ€ æXr u8ršӆœ–þr¯MÌê_ÃJØ ÷‹Úˆ° ¹?^'ü‡½€gVÃqYÍü»¶VŸ`uÊ¡ ±ª,6—33è0Y­Ü¯(Q' @«*œ0MR¶µßo Õ¢PÓEòô_É2MJ•XöIå® 'ŸŽ²„Ò_ ëSÛ+Š×7TUïdj&ã!®u_8;-ñ¾d§N^.ÔxB™krcç,M;!Pne".}â¬9}w—È þ8wø8Ñ÷ÈgM®¯ šÜH˻ި…öq¥I©yÍy 6:»ì9Bp÷´îO×`cÍ”“°f! Î#ÑðÐe RÖÒôÇ…+)cÂ0Fî- ÷K*†€)ÅŠ·?κÄeQPHòãDù¡å49Zrç¥á/„B^çÉÏUÂ}Âï3ÓÕ€J5’êÞã.SkœÒ9¡|tšHé¸ øqîðãÔátî”ØSÓ¼b‚„Jx »þä“å\T HŸAJVÐUëSk¦¶^ ¿åMLøýc› ?þ±¸ônüÊņ¤†‘üýœp|ïbÁ”#»®ò<•ïÞÏ § ÕÆ‡1)=c,ÜC9iþ¡†•„.Òg}\þüÑá¯wêÏ8]¨¾>¹ø:3 …x h=„U¬ÿn•ƒ‰|.õÒK¹/áÐwZ ¢$ ×H3 D/Ø$#”•B]¦—qJI½†Â‚Ú¥ R*Dçï§DŸÏ¥@K¦Òõ…ÀÕ n1±`žNç pˆòã£Ãÿü8à¯ççÁÊ<[·¦yaÓãø¼K­»p¿`‰'Ï Úïï„ÝÜñ‚иæDå TãuÓ~œ¨ž‹Eg(íK½ÊÞOjrmåtñ^)æ¦H ¼t f‹ð O@ ë=¡õ<€o‰VaìÆÅ÷a$âîî5¦|íT@Ùe=]'ãèÞ†1áý4kýz’R꘸œš0ú¶B¹š#†1S§ÛpºHfº¨‡p‰ù|ôøS½€Ž>s”Î8 3h°Ë-ÜbÇ6”òq¸tJ7žtÓu©ÃœA<À¥cRVÌ?—‘¼žqäÐEº™FÒ`&¡ééœpèg$jÏ×0cŃb£$!*È(R“U¦6äÙæ&Ž=u*¢Héxûœ2= Ìçîs%‘+J¥ÍËl)Õî‘ý/m)Šžò¨+pß ©*0X'ç*·•….s¬4ŒœŒ ¤qÇ)à|±6ÎÒîç!át¦8ÉCŸSçlœ³€b~ùÞP¬(ðœ€$t$AMD:ΡJ@3NÓ”5:zZË¿fÝÛÇœRp÷Ó¾V„A‘dز§˜4d¡fÜäò wÊ€•X{ñ¤d»”q O²;ìZa‡ÉbÚ÷¹Ã'®qjò:z[ ~ÂÕ¥™õe0Z&¤6$]‡HˆûNJæ‘—ÂÍOÜÂ;¨¤/SáñæŒa$%ùÞÏè¤xe°H„TóSÎí¸µx˜²æÞ{x“rì…û3ÈÓí+C7Î.ÁÂ/^´M^'Ú]IÀê”o‘\¬oÙxþ¶ã¯Q’±m“5s¦è!DÝø9œ‡€CŸ”Ñ Øj*œ‡ä\8ó|K¯ÆþÑ š¸NŒYGJ€£ƒbH+–[©ÜHÛ°¶¸–v©…¿4žS=*]ÁX5 ® (µÉÃì³Fz^C›~x2N.gñpÂïfã=̘”i­ÄÇÊ{áÛvØ“$9a[%Õ\¬U ® ½K"»É!cÂy(æéL]Gxqs&Ew¨!èÄ @øhàyˆœM†X´›±;gt]ÒÒ¨\Ð,A¬@æR{64KMeª§Óµ ÎCÔðgœÆæZ‹žÐQϰ +Ú8š­óQQß«}28ÀÓ€`o8Öרž”þµ’kÀ­µî„•ŸM ª±|0"xø%ßâÛU±®—%jV3^!H6ª?È9ƒÙJ4†Dà —“†ŸÅšs¦?Ê(¬Œr‚¦ªÄµ Àë.óÄÕ†вàJÑØ‡PÊB9¨ªTåKj«*ÎoŠÃEö†¯KfÄ'®L¶œÄ®Æ¸Î k, ÆæÙ´aG´®ÀM©iÉ-ZH1գƳx_MŸ}_XT5®*—C0 M.ÝM÷Ìç¤De6 Iʰ’_¹O¥®ÂX.¬Ùq A«gªÄ¹3šºÇ–Ä•ë“pbÐIM_ZDãMY ºè¿X!ç]@‹d•Ëê×ø} •”àÖ,œÄ® ]£ €Y ŒÊ"“ëq÷g rK¾à4¢z,0I¾;“yÆÏ9 )¾ ƒCmᇯÓé¤MJ/³ü5”o^ñ¸ˆ- ehùLš—Pm~æ{,³G˜©[±½ù$œX­6^ÃÄë–âkc`IüSû=óèC’_ñû#Úǫխl·OZ>€…} ˆšË™·"?G®õË5“…¹„…Qñ ÝÖàÖq¸£¡3¦•äÇäL‰ÍψB²\J¬„ ÓpK•^MV=ê°1Éç ’¨ý3k›£ÁFÕWcJw¤”»øœ96å1q³]’NPðL¬_–Ø|¯½69ë5Å‚iŽˆ! ÌQ P"Á’‚+Fy!üöwíî{ÁH4CŠ)ˆ1#±Å‘{/þžKÁÜl¾¿'€3ã!\oÇuÖ^_ŽßõfªûѱÈP}§á5M8£q[k¥ã¿2Üø{sµ<&‚B9ªHóO]÷W ÙÃäÝù• n“æ[X‡¾šfòæ»(íº¼‡+ô¬KÞµâ^*Ÿ5z-@Xù{qÖñtÜs®ÆL«2ÔÎJdθçÜM³ f@DK-hîH^ïÐ~¯;×òβ»œÂ4¤9"NÀTùÝæbe ×8ò2ì±NCº(+íføbXA­Ùd ßÁçs)Îò;,»c7“2åéFƒÝ šá7ÔÝ€):O¥Ðõyzb!`í.ÛÕî÷‰9sŠ"÷a˜(„àæºðWÙÖ¦ªáVU@Þ+JŸ²í‰ç:-³Qx—KAœ¬¼êÉ{„dfËÍ^"©Áß–ž¨ãûU¨r9× )«÷d€_ÃtYæåàEë²BQg=x<ñÔÞñ+¨(Àµ¥N$dqŠ”¡–,{f… 1º‘rͽV²U^ŠiÙëÉ5í:ë+°ÒÑÀežK,ÕQccFnR¢ë¤Í­7}éò‚)Q?»O“³ydü“»Ír ®êQ8AÍŠ©`òxkY xkåëî5+R×(»jÈ · ¼‹£½{Þ~Ÿ»<¥%X·åMÂTõ®%ë¤4’Q×*0ÏÃÄIQ5VõÉ<Ù×ܳs¹W8q•jaí÷•ÜÁJèâC\.× ÊJØçK%×€À½x.nö5üj\÷8ã…çš_žÈ“Çte)›ÉåŒz«­v1 Y\@H¸bUC”‘dYI½Ás+ Œ!Â¥ £Q®/jâ©Kˆ1U J‚+Ú; ³ìuk0[éR ?Ðæ Š›Ù¯Çžá™éøt˜LCD†‰JV§ ]'}!Äæ’‘K$ïÄ»¬YÚEE8W± Ÿ `+¦,Ë¿Åزô¾LµÉ BÒÊ%¸Æ¤,Xâ6XBÓ#·,£P¿BŒ4ë0ΗÁJÖ"žª\kµz5« KeÊ…ó½ŸÂ†Úh‡¥¨=*áÅÛöQÈ5•Mù¿À»ÔÊÄă÷ù@Â/ÐF¯Ï1nÏ €[yOjÉŒHÖ¯ž ¦™£!®/mHe`-«ê¼•q"«ÂŒŽ 0Âv¤ë“f˜qjXa§³’Ë $&8áØqéOæ t^ žåá§_läÙ'Quüñì`§rëxÈHQúö#N<$%×p31âì¤Ç3“1•s7ãUe¤é+‹_ŒÉ¼×VVË•WW{w­(˜^%ú–ö»åù6ædý;†Ä@(Ï®oÿ2&m_¦€¾K†¥Ëßæ/¶Âª¥ô·J`[©¶^¼ ã¶ð—r=ö—uE8÷·bZ¸;pâ‰ëûë„?Þ|{ñúDŒ!@‡O§Nufk–&r¥-¹o-‹fŠ•UpÛ[¬¬€V<1NÜÛ aâ³.SÄÇ©ãVQ;sP:ã&>˜1GQvar¾lö·ž–4W51z‘¢g¼1Ú÷× ¯/£ÃBä¡S‡¿R§q«ÏK~ Hk£nih­Gœ5.åh~áö–ú5 E 7øW…F!Wa)î½ëü\ÎG¦ŸgC.b@™Ë@ဠð|¸#ÓôÛJýÏ犾õ[k—§»áé ô^Éß,¼©…BOßPØ+kC4tXaÚX,¾RßQ'EÀB Ì÷3ÃNåÀb™O;±VÒ–èÙ'<7z [8³[%g¤QŲìA~žðýuÂ÷×/Ïä^Eˆç,ƒ4cÄeÌèLj!’ Î3aåEÖÀUyÞ%­ôR½ÐU. cV±Xjëo¾¿Žxy"X­9ƒ§øèK¥Qê2dŒ]ä’¤ÉÇæ-ƒÐ¶+FZÖ†™|Øàž¬BŠFiTùœ+œœå—÷“Ž§Ð®ýN)£Íö³wÚ1’ïqbðÍ‘á»Nâ™Ëñqà¦dmÕpל+zÕ±¹(·[&7,~Y¾¢¢ÓŠòôùŸÓi…ÿëÜ ŒºBæ¼×²g½>®ÙtòéH‘ý8Eô]‡’÷_Ï žè{ó=ÑmHD€eÌØöÄæÖÍÊ´Òñ8›¢bdÜã²x—!¢K=r©¡—ŒK—Ñ¥ˆqrÓwM’´”Z;UÉ@4 U~w“ƒ…ªhù}P,Äy8ž;Rª3yœ/3ú>! ™SÕ>ìmgK߯ª TŒwMX-TÍßËßK¥€V9¬¢“<ÚêÇÔŠÁÿôÉ@Éýô À)ÐòsŽ ‘à€ãY†pruLš}®Y'o‰EëÜÔ–t{¥µ•Pu>BCËÖ{òÉÓ…å÷ û†&¸# hnucy¬¹•d‹ Æ>?‘¦ÈÚ–ÆP%ïb[bhâ*;mënÊO¿™e+Õó¢X|²MãlÎY< šâÜ'ÈŒø8vÞ ow®'"MøCX–†´Ì£åëf¬’«zDZ»>?Ñ)oÏ”¯˜&Jvcĉs,½ë¨[¯c-k»ë•€g&çÚ¶yùÐV¡`õïåg¸m® ÞÒc¡ *Ϫ`á]Ô„·¡4ï]1s—é¡¡];SaüåÝs'ü e¹-EeëbWéèCÿÜ2y[ ÿjŽfc]Ÿl€þº'€±×|6»'­+Â" Ñ´ËŒØ+Xæ‹JÈÒ½YqMåerÏbÏZ5úÒ $ܨX-W4ô±Oz½Æ„Mó»ÿ–[–Öv}‚“¨*ÄrßgHɦ¼‚¢š’oÎn̺¨â‘0@ª$÷¬Jø+·¾¶0ë `]àïbJgåƒÿÌPýh¾'°EmFŠ]¸Xå¼ç¶PŒ+î³;«›hß|;¬Y³Ðõ K û±|ÍÏ ?p/(h›i…/i¹þüVs²‡kJi èþ5Äj’IÍïö… .¥b̲x]½IÞâe§Xª÷I³OU1Ð¥ÀßlñªûQ¶÷ rcCÓ ­]]Í1ÛsDá†dšNèâ¸ÚU‚d%9¥^'žš<Õ¦—MBÃdÛ^À#Þr“ƒÿð*`^ºþó«œQ±jˆvò¹£º.CÔd^…W莊kù-õÚOqSü¼ÓwM ¬Ó&ÜõºVûß«ðªý,Ü^Û `;9ë˜Fâ0‰Ómk`‚ËË0: Iw s„Z_òù”îðX»i²¾Œ’•)‚ŽYJ§£â Ni9¯îö¼"ÏVuyOµ§“‹Í‘“€EØÉ;—R‡ŽÎ;y;œ0©"B›sŸÁñ°R¹ÎS/˜¹bÀ&Óü“ÂoW`±}ÅfÁ¹âþw~Z+FÅzçéD"ç<>T:Œ9ƒ,él—«ó{—¾ ù@ütö[ ÓºXåíµNËFÛÌòuÛ‰Ç;€Ÿ;.A7 ×§ßOžhÐOˆ$¸©)¥EW¾ê ÛlÁ[/øg†Z¢ü„ÅÕgÁ‡H,?r‡´/´±…$%Í,W!ÙeùõÓ9áÇÁJ’ãäÜ`,DÜd”) 4/Õic¦'#Š""¯žÞâ®-f_ìÌ5® 7ž[(~Ÿû¡NRß¾kh@§„cß#%(jΔúÁ ¨ç¡c89F“*m¨Éá‹XhT\ŸwÉ ÍU¬Ðr¡OÛÇUÐWZ[ÚnYþ{¥_QM,nÌKóÔçà•èà0˜fÚˆs§°K“o«\áM> ¯i$ÖÝà#a’™giö9wH5ôìŒ#0 úê0ÖðU«‰žUí^o ‘Å(¬Ê«¹uvA©ì˜p¾d¼Ÿ:F±¡:5­e}§31¯`í2L´N?ǘÍNÂ3shcX¹Ðº½½ðÝ)ü×h²ù|p^€³úò»{ÖÜ~¡©‰‘ƳӲƠðå¤ð;¼Ÿz‚˜wàí•äJJ¤ñë˜ k¡p¸¼)€¢EÁ”@¸FŠ•8•ÎXñîÙƒ•õi`.—Ÿý¦VÊadÈŽa§çˆCGÇÓÌGx´ñÄÓb.ð>V«X·–yV’ؼ&–2@æÐ³»Ôwô¹ éì-«/¢îĪÙcAŸ­Í]ô8dÏ´dµ:ð”*:#næV`R¦&ê, µV¡kóe±Ât²lzN Ó²<oG¬W¨ÛÌè¯ý]¶_Wíg£Úþÿ*,€dâBuX㔩DÚ%,-À0DU„Ø1*pªŽ+îûÚQò(×Ý~÷»ÒÃÓF°·”@i.–½šð»FÜëë!€2±‹[É·ì¶ö½€/í]¿zoäžÆÐ k×@õýÅh£¾®9!H=ÔÌ11†àÑ%ºõqŠè¸xšΣƒs¢Q €°À´YÝMÙ[3˜…AO¬bŒ—hh;4ôC]j¾eYÏLà{¹\}Ö"Ådj¯^Ÿ ~(mf²„hQÅ ³™÷€ n)ƒÂ/ß—JQmÄ×çŸJåþS%á<¤3ÝàÌÝIŽÚfȲ3‡|†¯¥‘_i7 ¸‘¾Jµø'×蔉ܩ(ÔPÂ*„ܶÈ]þ/Èÿ×€ïH2–WcBwF¥Sz…± Îãû˜u¥Ì&£ÄYÏ…ƒM9RΈÓq[OI°qw SÂ4G,^’ƒ,dânž­çÚ[Í@¯ì¡w›9Ô÷H÷`Î@ÓœBD˜äº¤ ™æf jØë‘!¢sßáÄ+À–‘l«` J3fA<N — NYúæÜœ÷)f^áß+JÀ‚è¬E¸ê†Ó¶qÛÐ )F tÔÝ9fGG颌Šà+ئ<É+JnS¥oƒø¡ m«^âó9/×&ïUmÐÄ~ÿõÂü„àc/77Ž—D]V¹Ýd›Ó›„•ÛbN°H­^6×»]eåF•Á¹NŸªZ¸ÇXãkžé:Fq±çl³ ÙÑ0pÑw]? íµÈsuûëš`UD·0RNiM 6ZQEQÁÑ\çÄzÍvâ ¥B=qVZ”P„~Ÿ³Y8õdòÍîr;-ÊૌµÅo¨§ëÔ›R#eeó#óT0¦‚4& ! yOÒÌ•‹`ŠëOŸeaYþ’²–XCp‚pÒµè5ø))ÎY@iÅò$^ÀÅÙz–-]oxž÷¬û€‹aýc>Æöˆ:#cêQ‡w6Ï;-<ã\þT,þ#+)®ÔòV%F¬NvÇP{@Rqµ"€ˆÀ1ïœ nÊsY‡\Ò¸æm6´¹M÷ºœ%¿0‡ˆ0g>­À@<Ÿ4›ujP!^ÍmÇ[ÿˆ¢±DPÔ‚¢×a Ô=8K qP°AV¾êkábÜüSõƒw9W\V¡zE\…š°^Š4DîŒÌª ¨EjpÐLkzZ|…ž3…¿˜Ù—ë`m"t–‰WáÛ[I»"”ûÕ•×ç<€6‘%©€xœ:/àú²s‰d Q¥Å6§‚R2äØŽb¯p†fÿ¹õ35J@ŠÃ²b ÷"åL§%-È¥b4‡¶"ï-5m*R•Æf¡» ’9ÊþNx¦Ÿ™·Ki ªÐ*_ÞÅô'÷ }ë±d¹š\1®„ 4Q˜±‰Ð«ÅÊ WqÒ&¸‚x Ÿ n% ìÆŒ9”Ç  Ûå˜þ…Ró@_b’ºöEC¤˜¡¥[åÅ"ùœ-Ó1vy&—7eâ!s÷k®b§U6ªñ;tÀ¶XÙÕFÍöÒâš&üi6ÄýÖãó¥J1†êPŠ- øÄ´Ïx R……b”˜i—Z ÆŽîÖ–w T`A§àÚ~1[®>¬É&÷yæžGîW/H)(½‚£«}ñzïD{ÊP”j LAy,Ä9Ñ‘Ua †ºØçlp݊ר¾™¡xEÏÜa·¿µ•5᯳b×[RV?¬8/‘«M…bËTñ^.(1£$¨•Žì]%5t+ìà+ŠÝGx’aìå 7ÑÝÌb—KùL:t_Y?ÑTdýöÒÃÞ'9Ê‹’)9gÌŸs·IÒM hÑŒÿ m}÷µ¥-•WщèÜÐ’ôÖ;àRϰ¹d¤ 3?\×Áeå÷5¥E sήƒO&f 9»\ˆ4µ”L qŽ…Ž“®&ü`Bè®ÏNmBíÆ¶¶8ÍF^CMω•À8Êì@\Ü3 ×ÁQø„ßzŸ¼»Dã l:wÿ=¬é1哳òeˆÄ\9ÄÀIXdn–à¿cfp•:¼[N®šå—cÁh$; L‘†²fhå‚Þc¨R•ûïøWx?Õ (‚/Ö©cXðÞM³õlq ˆ8‚ÇF q¹3(BÍz(‡¹±ÜàÆÐx^“-Á@D!IA EçØ¼ô øp4Ä86ÑÍl#†ʼn3D#~eqÖ¼‚5íÀ®c\sç<õ¨8÷œ)©ŽRsxþêñÀ—ûÌ 3%X–HÍR]QÌ|ißæçÝÜ@tÊRàœ€gX·ÐÄa£>»®1½ÄÕ’üTÀÕΦUƒ£û*°”ˆ¥ŸÄ?ÒÿáB*wZô~Äí—r8Ê=£€Ê…K¾û³Í;7 ñ‰õP*7Të¤ÕkÆËÓŒ§#ý&Vc5Ði\&É¢ÚÃ(k"=Ê*˜à/Á¡›¥ @Æ@6²,¸€]ʜܡ2eŒU6MCÊèbÔ‰„„gDz‹XQ®“ Æ`|D’X3–ÀÖ_~Jµ„­KƒÍ5œ4àÑêþeÊ‘÷D®CÊŸ—!á’ø Q½Nðé½4Dƒ(y•‚`VËyR­'@÷ÅœÀŒïÄðÐÏx:ÒøÓA€Aéõr<•†éÞS,çRè+Æ.E 5÷(ŒnŧËaŸ)Ȭ.¯”be¼èsC}¸ì-ÚüÂdÀ×<h#è+Œ ø<á…Á’k½< 1$ˆ•Ѓ'A ÀÄ(ÉJÓë ! ÷‰šµ.cÂÇ)©rwvtsòs è2)ò¨iHUbvg:% ç$ø„ V\´…ƒjy­ù{k­ª IIñ¿¾øþf«¥ # Z¥ÔîƒÐŽ›ªH©zê3žžÈƒ$Té)QÉö|Ixo” ukfŒÉd±PuÁ…’Ùð7È|µî Vò[Lp»! öòDÂõýmÄÛÓDVdèF‡¨—}³Î³¶<‘-×±'}}žðúÄLÛ ®; ÎÐæ œSB€8nº€Å‚ | ôâoÌOOÄ 9†Šâ‰ÆS¡Oœ0r0ß[´i¼Å‹Ö*VR£>‹1·e'ü†@T8ge¸H1ÀYVÉ ôœø$¸qB~}žpà‰ÍËÑw= –l¦nHfàn*˜bÆ©Q+r~¢Nf5É@¨‡Ô(£˜ó°.ôáBý^ *ù— šŒÁþçmÄËódËìõl”8—Daáo=³á™<ŠWÆ“ì’á4ô©Bì8urf¤DÇÍùöà³ÚøÛ ¿®› `+¡ØPÌ•«0àùiÂëi^°À„ù8'º}—8®ÚŸ]@¨±+ ìë }Þá0£‹Ä0ç %%`-»‘µ«ƒÕòÕ‰#aí½<Ï =g::ü2F<:=ÚLO8Þò¤Ìר&ëh^^jú•JÈ’^=|ÄÑ™’…Ì*2ý<>|Ñ$*`a)a`Ї:òô|IT¥á¹ÂBLz²SJ‘N|ž )Bç.hœÊÊ(7J@¬g‘f0_5=îC±‡×oËò¬ R4ågçAÐ}¿>O躌yŽ8w¥jS¿Œ}'š‘Ã/jSV~ãsºŽŒ ?uo~œ‡}ß1A‚—éÕ…ª[Ë‹üæuUÜš© *á@WpèKUvÉ™\!­Úu9Ëž#%‰üÁ£rîÀñ`a€œP¦ö2ÒØñ2ºdç Šì@R£ ä3’ƒM­aÈ—«MºF4Q Þ¥k’]Zþ“èNÙÍ€óDÆ$YX e‹mæ'™–YdJ°?é)k#ŵ=a%v‰JˆZ}áæ,r_y¦ Úxkˆ ’‘íË#$YÈP†rA›C½;)Xû¥½\Tϯà½~b%Ø¥‚‰¯u£æ—º$9é¬ñ•!é:kÈ{:pɹçÞÍO8?GØŸ¿jÝHrÇþöÍ ’û)f9:HCÎüómÃþsšÍ7 o1­&|u?}Byù^ ùXþ¾åô–aÁùûY¿ÖÅ*kß®\@í!ç×]tæHÍ=‚…,@w¨ß_û!ªã·ÃboÚ¡*/4¬±)óŠõŠ¡ DNþžÖd$ƒæ9rs³ËC²¼wи½ŸM ÞZaàn~þçÍï?,Ã?µn(INñZöì2œ“Ã8Ÿ>‰50ÅVç„Ó@±ÿ8YéNzѳ뉯N¿ K ë(íÔ1¸3ë\©Àî17öØ0P†ÿ|!í,×w:w8Ÿ²ÌcÄÉ´\ÞPz¨X¹&üž–Fb_°,f2Ø<¼äNì 1•\ŠŽSÄ…1ÎCÄá’ô›.Câ=qø‚ (ÞB$$ál$# •XøØtpɰ-~Jip©ª/\#Ø•Uü?ÙžŽ”3/CÔJO7ÓÙ—!Và Âól3-”˜6,Éq4>(˜:zßéœeàòôœ£3"Î4<óO­»û8Ú„(J©ÌÙ_&b®sÂ_"'Z$ðqNxÿèpC˜Žç°eœEjÛdyÎ)¢ë•¿0Ž3ŸÒét!”!ÏÄsÌ^‰-  ‘ðqIèO"ƒ–$¾N¹nAˆˆ(=Þ[Ó þ,Wi¸äì sîÊp)ÛJ€èáéÏ\ +?Ί ‡œÔ¹¾Š…((HŒ×¨òõ(UâJBµ ÚÍHåˆÚÃò%¿úÓß/°Õc9˜«Îóxæ …€¸1çãL¹\ ÍTõ àVò~ÞOèzM TìQIÅA-»(#”Š?¤Û1ò}š•.¨¦¸ŠDÛÕ&^ÛЮTÛ4ª91ÝŸ=M_ÉñïÙ• ¶« “+Îsvc¿v”ü¡ŸþN@Fÿ|ï¯Ñõ§Ì5°Œ-¯ À>/Ã?µ6€nGµ&ùäcbøåqJ8_f|œ:::¤‚À,¥æ Æ $+¤Vvˆ5ö]ŠæÎ Âë¡Oèu°¡ÀÎîc—^ §Õ­L¹è¥‹å œP&J†(Ö€Ðv|ôÜ[`Ðh­Ë€¹uyÕB@ûÚÐ(Gîkž€¶ƒï2ô™&Ø'"Ý%ᔲö`Ì̬}oûtáÜQ?Åä@[ù:ý´¥>IjÚ‘?¢uª'°è‹?n+%©­}ZÃÒ9b ¥ú|éð㔓%ÃW'ÁW%P£V[#óúœ1qÿ‰”ý¤èÂ8?NÄGd”Z´&º°ã‘ò÷ ?ð©À[×)&xvìPóŒáíz›Â/Dèó`€–¤,kLî9U.cD)Úz)®àÌñÝ82<–o,ǬsQ¢ ¡¥ìs¨ "}–„?NìÈæ9`PŸ4Æuî\[öƒ= EQ)¸ì¸T·ä÷J =ž\gÜsÀÀã¼±ž¡·¾Ê}άheb8·ó`q¬¢ 鼆0¹ü@ È s .¡*ÈB2Ù¸ ¶À`È!ýrW¥î ø§ÑCSÙH§xêÓj+°ÔíÉjÛ´Ã\ÆŒKWÐ¥„Ž|Û…‰ `Ÿ½“™•*1 ,º·xå7¬OÍH  è&Ë0Ž»»P¼.l¤ss–I)¶Ø·ÎEªÐlBÁ%2Vs~˜ñ½—àuÒTŠ…ÊcœØ’DÙ4œ†Ù EñádO.è‹[pT®heú—¿¨t9% ÿ¯”€+;% µÀdÈEÀÂ)e€ßÕ›êdT›…F<*ù'mÕŃdFŸ¶ó}'¢öº»*…?`…QÁJÙF”3‡kº yL÷Â…¥’Ꮁ#¯qŠ°Ê¯×Æ4'¬['†²"ÈZó]Žâ¦Dϗȸd$Õ pa€‘ÒÊ[=$¿c}®|V!±Ž‰T©F?¸q`}Ý5{?°õkS²³šŠøkSÙF%)þ€ÓØÒ“s1w=äɶjŒ4×1’|Ùf×”X`l7ƒ´”ò`ä¶Û¢B¢uàÙkiS0ukÒ¯] £W@Óv¨Î;Ð;.UR°^|&»æ3£þ$Á9ˆÖÚEd±in”ž! £D¥Œ-×3#ÕâC&x,Æ (¬dß$GS· K£WM›bIÉ-¶ð÷ ý1"Fžb†š‹CVIYŒêEõ\J^Oøê÷xHò,g†ª·@Â-)ß3!ŒuþãW耯+€Ðüî]b˜%ˆE°äEIxÁštfG¨Y²íùþ´n6é(‰ÔÈB8wiŽ˜#sF–¶ZçIøAE`³«L'ÞÉOdsו@Ý ž§kÅÄB¾øÜU’Èš T°Ô`à­õ}»[ô(D®'@u’ÏÂs/Bb%æHï™qW ÿ*0°Y¦ùÆ×J€I§æC3õÛŠSl¢ ,Ô°k¥êÑ”)5Î5,üœ]âœ×é•^ j^— ‹Pž³+Çg„ßßþÏ(O)™„ŒcýÍUl$ȼ®¥Ôy·Ê´¥ßEð[m).ÝÕ»ä2tà6UŠ-å[|!µû:Á$×.½-p¤*_ÉöœÉÚÀµò7µüÏ­eøk[¬…€6'ÀK“‚?í­TŠqNn4ÕâêJ 9©i)Š3íqž•§ÏzØ¢Æ †^èzu'8§šÈiV×:PyaùÏ+(Ë!Õ‰;HÈ$íë™Î˜g«0Õ àœî×…>κKîÀ ×ëöì¼RÞb™_úëÚT­õPX€'² ]T|nèG¦ÞhÞŸ05“×ÖWÏv« Þ&JÚk¬Î(ÖŒ"ˆ92Ô!Œä¯U™ÆIzr ˜r}¾@uj`ŠÏQêwlPûÉ^ TBü$;°p@éW˜6‘t"ÐÚãïÆŽåï蔀à4t<®Ý âr‚†Rh’Â#÷"6žœ{!ðïÚ*œ n|á…8Ä£ÚÁ)ñÚ3! Ú1>@× æ¡Ò‘‹Ã[Ü–wéWkø¡²þú3¯ü]eþWæ1®0Í/Q»²î÷Ô÷urÁ„„„¾àp˜urOFj}–=p qšƒn`ñš~^'¶¸ À˜Dø‚yvÉ›à‹{ž0Ôw Ån)Zü9ÏT6K“Œs–êûªscm•¤¢U©w¯"FjýUïŒjý2õ®2 à¾z!€+±P™ŽzûkeB@‰”í/l¥ÅèbFßÛ4¥Ç”-é |¼S…ƒB×Á9ÎuèpWsï á˳e‹O bÌH)+"’ øúÆkœéç\tV_èes.RÃG•ÒÃ@V†­êÇD¨)uĸ!s¥VÍY£ôã'ÂÎ `™l‰0Øí˜à„ŸGv™1÷,¡ËZ'UÐMXv6ÆhH,>¡"Ê ¸\Ó6) ¡%uÇùà§6EYõ©8ÆaÆÓƒ–²’¢Ž8C.¦áFsIQªÁâSHAõò^–Šû§¹÷’ý'ŸU·E.ƒÊi¶ì ¶` ô˜ èhe$1â0 \DF©eœøx`¸¶Ž:턎Ԧq:'zÜ' ¹'>ÇŒÈ`£ÜkIÝ&˜޹ÞÀÉqp5°aJ“·Ò'>Â|’¦âH=fzÊz´T7;G.lЯ2Ò?±®Nê ì dÐY=-I²YF¿À¼=8$¸–^ØcÕ^3¼ÚË WEGn->º®#pLI¶e9¹0æ>TêsŽhµ·×†aŽD"8°# ¿`@>²>\x¢šÙ2)ºyòÜX»ËÌ+V¿:=V=ªþ.¶gŸ_¿^ \÷\ÒŘ¼Ñ´© O³‚/¾>OøöJp[/OŽ]F äþôÔ%8gn–`ë«x{{[yM.@B¢p—Ù•æKdÕ¨8„ 3ãÛ ]cßS?÷Èc$Ü!6lÕÎ .ÚBSJ'I`µÃBwh°ñÇ]h9Ìä57T 5®7?0è åá$£Èϱ‚Ö½æðÐo‡ ZmÄëË„—' ùc*ž†„}Çùñ¦Ä£ .)ì ÒІ5[S1oÏW&ä¤)QTí ¤‘|žY:UO á%]ªçA ±NÂù×6ž­õ£¨'³‚%±=H&ÞjÝëž¶Â;y¬]Û  É¶ÔqVOûYÿxðŸï#ÞžG{êQ£¹› ™nHiÐRÄ…Ê qõˆe%%©r)K´Áæ2<ÔÓŒ·—|#l¼§Ã¬c±rÒ3fœ/Ü6[ÎC¯y‘*wyGX°`ôkÆ¡IÄ®òs·kÎ`×_ ˆLSP+qÉÔTbzÁæõe ÷bëûÛˆoÏŽGÕ&H¬]¢Ømšh(ç2d\ÆÂ9 §(A(^_ ÊBêŒi„߇ˆúc/`¨3¾½Nøãö»ïèlÄó%¢O†xŸS¬i[O]úfže¥ªµøþ3d{¶duuþcí9ؼÄφ˜7“€fÕÑý¹~)è$+€ooþómÀ÷WR´sžƒ‚…ô<”!'­x~öZT{JMTj’¡Œ–ÄTLXì*P`}*Šé&0Ñß_G<gÄ\ƈ”ì2&|\2g«fTe$uEYsúa–j7üήÈxhÿ,‹çüKÂMi8ï@`ȳ(O¶F’ ·8µN¾-΀¨B¾ ¼ xfx™È«:_>5¤)Shú®àr)FÛ–hÁý¢†ÉA˜u©Ð9G©ýãmÀÛˤ௧CBˆdN—„W6D™4Rày+.«TÁø×ó²û¤âõ¬"ÎX¥&ÜgT¤ Ð÷góL•ØŽg‹ºèãâîD 8Öo/ <fçÁSGÃø÷– ½lIüÉíÔT)|Òj±É¸:³J±œYKVвz{™ðü4!à8RBê|Ix>tšÜJÉ.ª€å*ª7 AÚð•ìí•úŒð× ³Ü<Ï8Æ?A}sUÛUý»|€ÄÚ~Ïïõ‰`/=ùe—1âxp«Î‹ªC¾²¸ðel*pð|I èÞy¾>Ï•ˆ‘F¡O§Dר¹!œ#‚ÑÆ‚$uñW„s¿ÙÓ©(êˆö9©R­*+^æÚºÚÐv]…æñ /.E;8áàŸŽY r8Ì|ÊO-üÑ)—Š ª˜iI\q‚JؾUaƒ‹õ:g­\ˆe·CHøD"?‰èO’ι€UķU~ºÐÀÝäšGpÍ⇰"ºQeó}ò•¥yÞ zÉ ¢×hÐ,lràjGíײ¿‰aÕUÉ·V|ÅâÜLžº÷Ø^X5(FÔ}]Í—‡.뙀=uŠz$É»¶/ Á®xCø›ä¶'”íÉ%¸2¹áCXH J¨šÑîUw÷TYZ×1Vµ„FÓÆòÕ-ÒKÅÔXgü–ò‹ÅVöZýªråvW“™än:õÍ-βø8Óß»óˆ”Q8“]mBc~•ÿËæõ-sŒ¸°üþ¥¥~¼Ê”uEЮ‚*o ¸ƒbñŠôÕg뎛æ€YzÞ'jðu(†&àüô[ÃA­y¶.Êßzpûèé&éî9¿•‡#÷Y¶¶‚oêæ8Wžùü&—ÎŽ~¢ÇN4n¶ð²”å¨hƒwº÷)±N°kk-q¤‘ƒ@¹ö<8˜¥<×™ýz«Whæ,Öbc…ž‹Ïñ¹ǸÃd¨9) S2`Ü wÙx*ÊhòœË\{ [õm(ýà¿C¯…¿½¹°¤}NÓÞ«y l3«ÏjW>Òå GHø¸tèO”I©`>âÓEçëc“D[ÆÐWØo© ¾š¸«ö›ðQÁgŒ´çMçiP/èï¸N¦2 u¯üÓKFög&ª•ç’n [¤R~N Üìh¶šQ gÎAB:s ˜°Ò8 ÈJgÆÙ›½ð·VÖ®`ë±í»«<H!`šåÔÎú2va E.—¤XÒÃ]V¾Á×Ö=}´a/ØF®äu·¤QehBiCûQ¥þŒU¥â…¾Id^±Z¾Ç]¶‹QàÝR²=N‘êë°Ú1Î ÍÚû¶Z…awßu}W·¹AHìó³ûPž ÃHeÀÓEÀ@(í¬ùP>58š5Y9ݽ²yWõ»}S”ÏÙ˜I¨’ %°fŒÖÖ]Uúi_ßÆŠŠÀâëÇ©ãD½è2EJlÀ6}©ï³5Ìv­}„ ¿^#Y­Ó¥Ãû‰z§‰”†)âýCÐq/®^ßbH{ᥧ|ùú6S[Ú‡O×Ö[ŠÀ‡ë.3šÏ +J Uæ&™GöšÎCÂÇ©0Ü•þŽÁŒ8]"ÞO=þb|EBÆ1ìGí­o Ö*dœ+ü¸¶÷ðü˜½²"”§¾£#é».£d©õ¾†úôû|›±”ICC,š•Ù0NaëÚ-|\3‚ÖWPôo-Ûbi”¼¸3hÀª¯µN|eŽlÌ10¤Öû©S¤ÔCGÃÀãDÄ~?dÒ8Ḟ9°Ê»'P½gÑçµóézCäÃ0{%`Ði"pÈ÷“ËP–Bm²ÜÔµ{ñÉ-}¬lŸ_ñJÀ?_¿w=¯PUZ7Ö®„^ ¸ ô¨Osާ‚Ë¥ ÅN 2Úl™ â*HÃ9 -BnÀ".o¨èìš>¾ wÏjï4Q9÷|Éøè:ÄÀ³‰€\£x(‚þœ›°¯š2Œ4½ØBŸ¯lAµWÕ>,cyãUEFÂ$1ÀbuÐÃy ¥¡˜ VÖÒ¸æ6gxH0ßïφ6ÛuôíRk=;>Ð#*ä”¶ÿ®~ãÍÿêªã@R<äP¶wž.ÒÁ6ÓÁ æÚ$±R…öï&& ¡TŒ½°ÆÌU‹kUf„öHH£ÌÚç,¶1¬)„&qy„¸€Ü’¤Ñ'NQ³í¥0öþqàCZ ó"h»;gÁ£,WHËE”vm¯Ý£pƒý³áÁx&²ô T;>­®žÝÁ(OÁï…T»äˆv9‹ÁʨK›VªSËä­í©æô÷Ò Ãñ÷òëô,Æ"Ÿá”€+!^[«!€#©ó†ú:ó̽ýçò †‘“W'î»–ÄÐÈ ¹Ñ¸«_vÅŸ¹æ3øxÐ_ãeLè/ÃçpÚ #m !îª uØm^1_¯*Ï(¨…¿êo¾ËPÊZ^9,“wÕ^5w¿ž(‹k& îóİŽ7‚Ä<Ó_·ç×.%R¯l϶½òÄÚ:K篾íùXÛï•|Ñ2H¸ |¨)1ö€TõHçZÑW¸´Â"£ç‹ëp·añ+<‚EæŸäÅ{D#920È*2)ìcÎ`tÐ*Å/ ó_¾ ç•€Ëgo5û?[ö?ŤYa™þ3 `0Ûêb{yûlšÀ\(Ç‘5ƇˆÌ èX ÿÊ÷n%ó,P{v•€Õ V {Ÿ*À)€Û¥½:P‡áÆuL<ÄǶñ¡å(%2¼ƒlJ?Š‚pRXÊþ£Ÿ¯wŠ ­ U„½¶Ïúþfž_ެ›¨ã4¨ ¬‚?2µ`"‰„üØ­ÊEEˆ#kol%÷'_n.¾'ÐÙŒŠûTAU™TÊmðë`zµA7N!·§ˆQÜA–¼sÏâ¶ûˆ·G¯Çáf3üh¦/e“€•P­X:Y`®Ï+,ÜÞ #mºþbMU2Ïž¸Á*¸žùXÇíí¾®J["±¶ü-Çm5²¸äS&¥Dä\0Íi Ú;/JCùÀõ(dÿ¦@Âï¼(¹nŸWÚ¯0ÖC@DŽ´¡„üë<¡Yƒ|”S‘d;bU×ÖKW—Û„]‹0Ì1ˆÊT¥ÌXu&‡úT2m>s!K )°K¯9ÿªå(p‚fÉAyC ƒ\1ÚæU†OTè-&àâKc˜Š¦•ð/]ÿjßÜÞUU¸÷lcÖ’¥U…%Å'Ý­rPi®!¶Z¨¬5«*p£\áú‰ç'Â41uÍ_s÷i(ˆ„ŸY€œµ ¹¡W«ÏG¨÷Ç€íÞxÞœùQÂV䙿õ{B¡p€Ê˜\%ÅeôøþN@ã5ø_¥%ùEíÍÅ&橱–] õwzÓïŒnKü…¥…¹Õ>±œÕòXóò·bÐ…Rm\ý%+æHâ-TôZ&ølˆÖVËVÁ•š!öµsç-}tÎß1ž1hXZ™rcÀÎzÌ•Þ3O †PQ À<-ŸòBo?}‚ëF<£ Ü2kUú*øËËkbqJ6Ù?:<4ëuÅ*ÕZp¸džSÊ ›Ø5y Ç0å¥ß0¾â¨IØ€‚pLJ`æS¢½2.Nùlyw)€ÖÝÖ±MGT)‘Ädc‚=Oî$š‚ÃÙ3X‰ã6­½†²¦• •ÍFóÏY\?1Ö';Þ‰¬¬i ™‚g×ô²_s‡tÀ¼€²Ü|gÝ…éd`‰þ•Åìå$>•ëlBjLéi\œnŒÖ`ßq4#`yr€;Ù‡™:/6 TV·EÊõ£´8¦SveÆ©REAkº‰—íyÀ'G[ÁŒœTË% ÏóÌ|r’l; š÷Œ|‚6º}…ÛUÌ•r®”Qt9æQ,B7¼{©_% æÓL­×Å¡*E¾˜ìXõZ8ðµ@X22 tBìp0L@©Ë0[ÇÊ!ÙXhˆfu½7 €eóRı¯^žÓ¡%VNbY ѵÑ ƒ²ÅÕèjDmM¿)߉õ—×t3&Šý2Œ¸s8d{¢!MªÑuŠõª„w6+®LÊß' EU6ÎóVfœ¦9Ä)ÒÑbeû©O£.GÕ!œ~ÔÉáÒ»Gwª—ûœj.¥6ô^“{¡µ)z(„™àú™OD²JÔf ïéÝP”ã§ÚHصÔ` 5heŒ’y}b”‚œ·X(æ¥t=VÏ áª;³S !í@L¯ ú’0«Z*æõã¡/O&\ãÿ¥DH;SF?fw: cÏ…Vxß$qMÍÛרn¾´äɰ£a}>Ìè:>$sèRâŠ@À8\ü$`´Ó…•À>”i\®mº™@®Ó¯ïH +O¢Lù:…ÉäL…*±Z‚*±úŠ€Ì PVÛeÀs#ÒZ Èô¨ua$Ë“¬‡!T9hðòZ´ÜV¡\¯K¬.˵ öü‚ÁÕõa@¼<N¥?ÑW Àê¤[)™?Ë®-ã£.¹1g6^¾ä¬€¢.£UúY± ».£ç±zAX.l„´ŸâÒá#¥Åþç#y3Ù‡·œ À ºþÔÁ ^“ VÜóA ˜&<I¸¤H°Ø¨C+¢wÂU ÕTîu«ûkaªÙÁ! µÌ @3+(ºÆ—ã„COJbž#Nú>Œì‡è‚d[µJSOl‹ýÕûÐÉ#Ø&YuÌú<á•q ‰qI 0ÌŸõåkyÍú*|)Ë£6õa4vɉ IMZr¬ Â1Óé.®³ÒÊS>70¯Âe5 •7±ªÎÛ¼SËÓm¨èB½>eôÝÌðe‚ý@@°!ؽ‹Ò÷‰7 JS¤$¢®@ËÙK;t™z \)€·ãX2*0ä ¯î”¾Œ*KˆR7“º~œèxwUT¡xÎTÙ|Ò’ÏÏ•V|"Q´ ,g½p$œ8F†&¤\ p F{”ØVw¸ÉšÜXAÿ_Ì@6­ØÆ J #{ ´'D q¦C3©KŒ€-ûŽ’p1 òRÂêµw5Ö“Ý2¨z%•ûO×v{an-;jÁj%àóêEíVZce‹‹¼IXlÍg¤¬ÞÞËóŒo¯²ßuçgdPZ?ÞLaOĴ߉ñÕƒä‡>ëg¼X`4ž„íPP²Ð"ü‚›ñ|$”êcO ¥*]ÊÀU׉—"GÙþ¤¹`t.FV¼JŸXÝö>­,áõxáØÏ ·5ãû+!¤N/cÒöàó%á£'·'%wêï"°-`k·6®5¸xðÐÂ.t¨EO²#kÐSÓÒðq–\…yaëËnÑM¦@ô‹MPúYÁUÿxñŸï#þx»¡Ëh~Á†\dªMš¬$£ƒÆ>N }äp"k=%Þ³;Å™Ñ%RÅœ¾Fí]ûFÀ]>ª Løå1ÿS÷•ãþz'ë3+E 45Ã$põtƒÕ>2x€é’@ÇÇܸ4N3)R]¥ ûÂhR†Jü“’óÚ“‹u•J³ ‡.}yšôódžŸ9wøóǬÍG”à¶§Œ4E %C,tcE¡ÿºè<«§«©¬vÈÑl®$]º”Í…}" öýmÄñ@õ2d䜆dñ,£ÅøÚºÛS»Ž•´ÿòvʺ ‰ÚÝ–M¨èo/d]E„@c­ï'A/²ØQï’Ÿ7ÊRíh„³À)dÏ}ÁÓ!+ÃþçÛ€ÿó🟈(TIx?ì¶tá¥H¨Åk¦XpèŠ"ã¾ò¿ç£¹ÁãñãÐQÇf!!¸ 3ú>¢ŠBdû[ÕP@ÈÈu,¿<ý¦íñ÷?Cõ˜1A›ü ö¦à©ºLÿJœô˜Ìƾ¿ÒýÞï>TÝ0%œ†ŒËÑwdYé AZ)™"•½ùãmÄÛ yº©šy‰8œ:Ý›†X´«”Œ‘!+¿½0>å›Ô"PWêS‡> Åøœp>$ôªå*€•#ÛÔ•µê¬xWõs͇J5@¬—¤ Å_…c©ó+tÔý¾¦t°x¬™ÛÈà•@ª“•/Ϲˉ&]–šž€–F>v-í5.¯×ç8ªir˜…‚°üýeľ øÏÛˆ—gRãp8uH‘¶¯èE” œ‡‡sÆ!™"–¼‘|ƒáI2üý …h‚4Ü1Ò0!K' Õ„>ǤK *'O”>}Ö÷×ÏÇ`|оË|4Mûô>~¡/Swß+¡çÖZ*€­¤ÇyžÚšÈq_W’èBž lÊP¶y¡¶Î*Tc‘«· J@®…=÷¯Lªê…«½§X0§àÐjJ«u}‰+Ì’±+Õüµ˜ÅR0K5gÞ×Jp iA/¾ ‡‘,Y)…ÑsY–ÀP õéHÃ;}—0ÍOgóÌöÄæâÍu÷n¿óP+ïþÛÏÆâ¯°\›Oõ ªÆ‚6+_×MQ¾,(%Ážs%E|N‘F£6³ÕšŠ}È%Å'Þ›—gÚ›ŽÛ…û¨FCgô¯—œèÐÚ(g+Jyò`èÅ/Ϭ XäL!3µ7ks˜†¤6Ëï¾rÖó–h^[ P`Á . -wHÂÂyH0@“T2 ÒÎT1Å'0®,f i]2ƒÕŸç™FW'i5òJ?EÌÚuú3á "¬Žwë¤ÖK­uj“G©"ŒÐz ’„”ð!4­¤eÑc "â>»R8(šwYOh¶.¿S€ð÷V_·jù[MRÿZ³Ÿz††#™z¬í±Ëà Æ„&ÊÝiœì4*€ Ž£õ¬´¬·mÖ–lv@µ‡· 9*4pÃ^0ó¶P>Ž1þeµg/¼±n&=ü€Â,ƒ~êk a>Î 2N3à<JР Ú¦e¨ÚëðTk3È$=´1ÛYí4"8vCŸ;t=Oˆ…Bg0j‘d×Ga…UÚæŽ6Þ½’¨žrž•ÖÎanãÔLWCDŸ"Y†™§ëfSR¢õüyP}Xi0ן'nãe¤Lõ ¥Äê3ýЖۛ¦_«ÛPÑwú­H¾§‘7`ÅKuB¨?ßaÜ —{Ý΃€“t8ôîDÆ€|?;ìBAšÍ i8•›™†)`ƒîMÎE Ý4ºÁ7?÷ ´‰Â—væ M:›"±pó ,ñS´nV¥âÁVH>«tƒ~ßÒÉ %uä þ_ïž=CNÁ"þ|?àÏ=Aƒ > Œˆ:KÛf’½Z\$3ŽN ðxdÎv¾Ÿ¨øñÑq“½îtNšüë½Çÿü8àÇG‡s§Ùõ5(«ì”• ó&o‡ê‚%LÑ1X¶\Â\ØT™þøè‘"e˜¹H”ì‰1í¤‘gw3Pû.BA’bÞ îÁeŒ| ía÷ÙýŠÕTÏÇ÷íÃõ\þ&¸!ü힪Åwñ)Ò”§‡œøùÿ#.,ýñÑãé˜9N\M!ïtNøó½Ç_ï]Ö–UI ‘¦‚~`„¡C‡Ã‰wr&à)ŸÎ~Ö0¸1è™x%æ "ÀåRpÒ¶oºy:E›”É_þúèðqªyQ”Ó¢3³„Û4ÞR•quŸK cœK©NJU„V?N=¾šˆùNW‚oæÇGÿïG¿~ôʼØl&Ûp.¦U)¹ª¿¸O•Eð-W= Wvîpü°þÿËõh0)»üϾ÷eå@#飺˜õ©Åa•镞ⳉ·R‚ R®½)RT„Oxì3R$Ëvº$9]‰™ûý”ðqv8†bµ@9RÊ*—l' w]Ñ$àûÝó_Né]Fë04Ň 4³lóoUnÿu«d³uWýægXÑÇb˜sÄ8g\FÊêO ‡®ç\0Œ‰ú>X¡ „Ý_¤(>N çK§ÈER’ôM<ѵäJIÖÊ€ÖWñÁ{sȺ‹q“÷ñÝhɳÚcoU€÷“ð#íµ)èà ÌœÒõFh‘§º¡ʸ8…ÂVÊcNy¡n*a-…’SÏÇÉNf«õ×G‡?ô ¾éݮڶnÎ2ÖÌlb[«0Å£Ørça§g¿qÉkŽx?%ô=%¦ÙMÿzïØ Ãad#/ jë¸×[¼àhYÅmþ:­ˆjN—Äe$¶Ø|¢’ô+Ì&RLç )¶³()S¤smœ³*¯aˆ8]¨×@2ÜÃDîñ_ïþ‡•ÞÇŬ GñõC=­¯ mñÊ{º*ý÷ûQ6ˆâ/U cÈ^Ç€4“÷Ô¥‚SJèŸN ²ÎP?µ{½E`OJËZ`-gÅ÷Ê2p¾$3LY¼Û—AAGX‰DRSÎ6ê;S¿ÿ3—Ÿ ‚z}tøÿþb/ÅãUr¸–³…¦Yiu_"àj@¶68‹ —S?&‡cšõØ÷èRÖæ’ó%âã’ðñAÚ¬Ff N °~a&Ãà3%Í® †Ý âXcÒzþ<œÇˆ§Þ:à¤&5ö“såœëµD´­ãaÏç>yEù Îh3eW¬ï;i¹ (Ñ©ÅÒ LÌήå¦m%\M{vñ–¢³,ÜM³ki€ -¦ÐqÓsop˜"ga)a2s½öƒ„”¶Øœ9§ÑXV‰±'_¨¬mݼ² zî,>µ^…âþÄÈÙécؽÙò>q(=EiŽÞ¬fÖ@Êæ¥qe!s¿ù0ÒýhkÒD­0™¿ï*ÿᄾõjy¸ÇÕW;%`Ú½QþN™ªÀ!N£eÝ‹”ž.I'TeàFž“Êü.ŠTø+†‚1Ñ´ä0qˆqq5y¾B],¼îK°.M*“GžVìt웇 põÌÊû©ÚÜ™!l‰ÂósoP)lî–(ÌC0K@˜%9µáH¼ r5%¥ œ¬qFʦªvõñ?–™æŠ‰ØUä¤èøëPh¤3Ì%ÑXh'VFtì· h¡ gdY9 |¨…¸Ø>GáO8ò9ŠeæZUsNm›9ݦ9 †ˆ!xoÆrþ0UÙ[Œh\ôJ€;ÜÔ »‚!øŽÜI?-yªa–… B_ïMq¼tg>ªðêÜ ¯Hà€x?€ô?-•ô(¹qŠè/”lK±,h0µPe.×Q ½M”,¾t}Šz® ðP‚zÔ#ÎÖÛ0yg€$EVðü9bKÞÉyHÕá:ÕÞ493ˆ Ê`]û^ñ\—+³Hýr x"n±’Œa,ÚCo WB™k+ *ë,™ñ1¦ Š]'@H1ÓÏ´ E£„eN^rÓ‹;´ÒkïÉYƒi¢pGKdÍèmÛï¯Óg²%é#îÓ@£»7[§Lù wº®¹ÆºQeåÝwk]9ãÉ{…É(qõø6©&ˆÂó=¥LÛ {¾*ü«JÀå¢ mÕ•ÿ„¹3ñdÑ=Nð! Ú9'‰FP_Nuø„Åum jSt£À‚ßè«ïŒ4 Ãé[ŽFßÒëä%·}5¤˜/rÌ^U©ñÊù~º¯wÛTa%©³gv±…UÀ8< LvAL±jQDffêÙi[/øm0£þ&0ϰVº(ˆhå)g‰d@¡äa¬<óKm9/âᕲåw7—@øòò‚,ÖKØÃ@8æ9`êddU­TîíÚè­ÛƦ©È€°z¯¼3T™æyÅÈÌØµÐ¯<Öò×ÖZmFâ\À M3_„c$ßµÞo¨WçaÕjzNv»Þ…Jh#øajo·“Îm)Ôó…½Îš U«¨7m lQ=¢T‰óÙ{M2V½uÒoδ{!Ì–³q&˜›žKœ æ9cŒ5`¤òE˜Kùnqâ5Æ×œa7ᯯN4™(¹ óà|™}ª`Îi£¹‚5 ¥Õ½ Ô².+Ú5ú!˜¦~ƒ–¾¯L¬Ï Ü6 ¨»âšv‘êÍ!fÍ·ø´‡º{Å}—©àþp¯i“ºÒäŸì“*æª Ø”<ù:¾$üWø°8Ï)hý×,x)…ñ ƒuo‰ÿRÎ4Ö,cÝÍÔ©ò¶o\Þ‚hè¡ï‚熵‡åõ¯Ý·WR­ÑŽL^Âÿ²/jˆ´»ÑV¿±  ïY P —ø_þ>j—K¼ƒ\Hèæj-ë»õ`n¶0ž„ÚÆÙºÖn3Ýv¸J±¿`zN2Ä@P^ëc Ùi=p£Ôš»JxZÙkn®mMø×³0‹k»"PŽ’7‘™x)¢¨HYL‘icu½5LëÀV›/Zh]a…0;Å\jÚ¬ôJ™v…ß×…be­Æý¢4@£r(‘ »á,h)1Ì9:D§%бYÇõößu@[ƒÃ«¬ºcSï úm¨wBýœ¼Eè¬Óµ7K·£E½àW=¸\¯ÿ«5c(óG»X&r¶^uëu¶XÈ„Ë œC™i„¿ÊúÕ,Ã7\jë>¾"ó<´s÷b@GÈ£‰K-^A¡àô׈Zø×=gµ¤ƒ Fe÷bþÜÈJuf&óâ¾Çë;×ÿ¨-¶§¹GñÕÓ€K°{®î½¸©›|¶ùè–aªâþ•ÇJÀ»S™À0ü•cfw;£âKßpD¿¬W›ìõÖ§*+^ÍWl-·gãïœ9€œ·1·{Ãerß‘»ŽªA¼Aô;f‚º'rŒ¶|¸vÂP§`dÁqxyN…ËmWÖgC¯ZþënMRb1Ù\ "YÛJC@ EcÇ `®.¬‹}·›M¾ÕH76¯Ñ¶mΜAaÇŸ ·Bp •id¨§¨Ï6äã?±þžõ ¨ÜófÀ§hŒÊ8¯*<¹wûì²ò½Ÿôú¯+ÞCUJâ€!m¦ž éºóYnßÝçµ×,T“nN?ÜS·Ð¸ñëˆð/^ãî×gôÕµÏÞc3ÞzgúwÐ{=À×§Þ»[97Ê­dÖºœœÍÁkLþÙÆ†•¯¹ÒƤ5“¡þÅ©M)µ™Ÿâ™#ðynv~z• ÓqÄcÍV_£ýn´ZIP®sz!¥…ÂË” åWkyŒïTî*ürÍ­Ë ,•óÒò{×yõ»¾°6•€|nXóèIÊ u×a•VæÔG¶®Y^ÛŽr ƒÓ¯n?Às¼}N“]UÂnVÑš µß¾qcÛ€­`wKn £0Qƒ<ÔîöÚÍÊçB?O˜ÈÿÞü–ðW\á4x…„ÈJ!ð¶°ƒUÛëˆoï•Ïö]Uã S^#´s‚‚û|_7‘- ~ –¿ˆÂ\jeî|XÛW¡+®tÕ5åuËÿ«…nkVá€.§ðyw‚(Üà…¶~ÏZÚÁbõZ¶•xU^…uA%X üµ0®­é¯¢)·}(XñH¯ìÇíÀŠ ç‚†`ŠBª[,œzXU|î~_‰¹®µ“®nN­À-öq×VÅCœ3°Œq{žx‹„Wëþ» [ºúîãù ¢€¬‡åÀ—§„®9ÔJK²ÒŸRÅe «ª{jC/ÏDËä˜mY~ÏÏ/e­p É (ú•hÍbô„£e›;ÙØ®í§Uæ-è…æ Û!Àõ;77ÞÓ½m9oJ~«ûVÓrm]rkD6O@ã‹ñÌ{Ï{€§¬ª¨„ª,>ÂQs…ó8[,LSBaæ©?kÓT–½éª‚·Ÿ²qïzÔà–ôVïÆÖP1°} ¡ÏûµÐ6áU«Ø<Ó5÷¼Eî_fùÛ½ð÷ßì8öÉë\6¸ðÓÁyÄå>•&JÃaœ.’ך·„ÿY[®œx¨"œíÞÿ‚k¾åE†+¯¹¦°[…ÓzemÂõ–ðßs›_ ª‹õÁϬÝüö ¯»ÏŸÝ£V0ƒL¾â3jñŽkü*UŒÒ2ì†ÕÒ7†åm”»®fé¶·ù  ež;<œ¿ÉòoÑÐ'½Ò’½–.õgø³ý¾ö1í"Ù0ÿk,W6?uÛèm{Ë?'üÀNj]¨C×ÁeÙz{çÖc{×VžksS|Šm«‚Ïú5Þøþ°ñºÚ"0Ý8qÚ«¼Jœ-×+l¾u=—áÞ#ý%ø«–îí í×þðÔøÔµ/È»²?Ÿ^[~ÂÊ}níQûÜ'…øêÙ€‹à¨}ø~ýzW¹âždž®?ýÉ\ÀÆïk×V6žº¦슜à…ʇ©7z³¤´~_jí7nân/ç öw¬RÜ_ÙZ#ý'+(«¼åÂŒ•ëÙúškûu[ÙÞöÊ>»7_R• ¶r/M8»º6-éÏÜXƒ êË«qÖâ¾ko íç¸k\ØnqùÙ÷úÃî½£:¹çߪqS%ùoþIåv®¹å¸½_«_àÞT{a¡€*÷?¬}X»šýõ×Yê=Z|ÂOìÍ×oïoòÝzïµå†*kðÙ`ïÞ ^‰}ïMV*½n\£Vò[$2ïqD—¾ìž»á‰ýË…yƒ+dý$n}îòãêqu“·,ù¶†°×{þZMÿ«{óS `ñå‹xë“ïÿEëz ø“Ÿ÷«¯Ørao)Ê{­O_ÿ¿(Îÿ™uËÃü4?|Æ£,÷|D¸ç-›Ÿÿ+ö&þüG|êþ¯ù;ìKÅ¿øÚ~Ëçþ/þOÞêozÃoùˆ_Z}ù%Ào½Ù¸¦êÚ®y,Ÿèbû þÍ´ù]ëg•À¦îþˆO½èWïÑoUûú¹õ«\ØGì¿kݬ\ýË×o öõû×gûÚ×ÚÚ=€ÿòµ ø¾~fíÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼v°¯}=ðÚÀ¾öõÀkWûÚׯ]ìk_¼þáû* Od%tEXtdate:create2014-10-31T10:09:30+01:00éd—¦%tEXtdate:modify2014-10-31T10:09:30+01:00˜9/IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/ase_trac.png000066400000000000000000000022671316323560300243210ustar00rootroot00000000000000‰PNG  IHDR szzôbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ 7;ìwùˆDIDATXÃÅ—koE†ß½8ëø§¤!)I ¥j+@ñÿˆj ¥i§Æiâfãlv½Ë—çD‡ñ>ÖÒj=3gÎyç=·(Š"}Ì_$I- l"–Tó¿ù€LâÖë؉y¯èº³ì@$<±PKZòؾDR*©ÃØÖëd„“©x7’”§7¥k(N.%âLÒº¤.r·È”ñ}ëöTÂXh<“4àé |…Ì-ïTR_Ò=I›Œ’Þñn˜3}=öåÈ[Mœ*ExKÒ6ÿç’&µ†IÚ‡‰¿%!Ÿ°·#i(i̾S ßÀÔ2d Cx_ÒSŒLX«\Lô%íHúJÒw8Dn*i;ï]lü›—€¸`¾êJú„“} ‡P÷ÞEïJŸIú@ÆÂš¤<ÆÔc€—’$½¶Hÿ%}Êé¿å”}IçøÎlÃÒ’ž`ôBÒ}hŽŽ%ûŸ±ï 쬅ÄäHÒg’ä öqŰ{Èõºj˜Ø¡™Ë N[H]¡è@×>›—(ˆ08! Ö9õ~|Áû\0ä0 ãsd0O`0ýÊs—n;Ì¡~‹ñ1@qC"隘™áï÷Ì¿Bf€ý_ÇXJúßnp: À1)7%P§0ÔØ€õ Þ%.‘«}ö 2¹‚¾æ“ ¶÷‚b•9F®Z’Þ2w%ý_ T.øŸºbR:žìÁÂC¨Î9©IXË`ó„ù¢Í ¨ls‰áU üïW¸c—l°x©]ÿ° l‡¬|7ô ÔÀãeTæ?«ï}bâ1̸, :kÔÒÎWxW,08'#2—Ïs"~DÕÀDNÌÌœÛfø>w€bÿe'‹8í„(¶îpN†¼Æh[ÄÅÐEýº,¦2o7úû¦Sdý;% wX_wÁy‹»®qY0cän`Òtci[/°NøVцÌÍPRpqÍÚ%@Râb ÐO‚¬OÇ;$è{œr¤]ÞæïM\ð% ÆN9á™:à#FdJ‡Øú­ÿ å›S×5‘ˆñ¶¤¯%ýÀüÏ(} »®ùܧ²>ÁÖ[€µ°à:"õìóʾtN¡ØêCŸ}%§?‚Ö˜,£³ïªkkZZ`äG¢8ƒæSIg(’@à ˆ18Õ@€:Ø÷Þm\%Ùê]:t½ìîíî|ŒtȲdçK€ß/ó×ÝÞìÎì<ó¾ïó–9„1†/l …BÇñ<êÔ)Çc0t:Ý>Á`°§§ÇãñH’tæÌ™™3g®}ç UŠç•Lœ<5ÝmãÆ¥¥¥<Ï×××ççç»\.rÝ×Ýõò ON¨˜sùÒ«OŸ>­Õj-K$ñù|åååCÆRUõÃ?t:ÅÅŠÄÃጌŒs§1E‘ã8Ahš¦(ŠeÙÿüêQ_\àS©”¢( ÃÐ4­(Š¢(²,éÖÚÚj±Xôz½Ñhäy>#E”D±»© «J?À>ÏóV«Õl6{<žªªªôí=µ1 d,555&“Éh4šÍfA$I2VSSBˆ¢(£ÑH6e"‘~Ý)*•JÁC}&ˆ¾(r1VUUUU†aR©”(Š@°ïé驯¯×h4&‹cŒÝnw[[[04ªª:NY–÷ìÙ«4nÍh~ÍžW&™Š|¢fÆWuìèÑX,f±X²³³9Ž;}útKK‹Ëå*?¡gÿ«Ñõ÷9 ''—Õw†,Ó¾’éqgdd„B¡C‡éõúÜÜÜ‚‚‚h4*IRmmmcccff¦ËåR¥¬¬¬··c̲¬ÑhÔëõd¯P%Š¢$I4M³,Ë0 Ù.E!„þ‹=œ«KUU%ò‘L&‰ §R)žçUUÝ»w/BH¯×›ÍfŒ1BÈår544x½Þ¾¾>­Vk4ûúú ѾßϘœÅ™³J¤œ…Í‚ùЙΠó®ëííÍÍÍD"ä9õõõmmmf³Ù¾îöòÑSî$1gAcLßH”/Á`0@uu5ÏófÔ¨Qz½~Íš5YYY™™™X–õz½ápXEFƒ2™L ÃH’D4Çq ð,KQÙÿáUe¾B¯ªjZ½sGŒ¥Ñh€@ @Ó´$I‚ jmm-..ŽÅbáp¸´´”ã8ÈÊÊ€šš*Öàä”.V àX‹FõhÔBÔ’%KWRRâ÷û?øç‹³†‰“úp´…—=œÖ5¾¬ €4nÜ¸ÆÆÆ††—ËÕÑÑ¡ÑhEE1‘HD†ñx<ªª†ÃaŒ1ÇqEõöö²,KDœìfŒñx zè¡/„ЧR)„Ñ–ƒa˜P(ä÷û‰¤¶µµ¥R©D"!Š¢^¯O$Š¢¨ªÚÖÖF¬oWgǽ;„XÔ8º{!%Oâîc£Ìª$‰œ-—Óö½Ó×xœ3:hšîص&[8é|Eèäf%žˆŸòá^pÕTWɪâñf ‚°{÷nQS©”$IõõõcFiïh§(JQBâ"‘ˆ¢(,Ë †h4*˲¢(uFC°'ªþ3Áþ  óeY–eY’$QUU%†Ÿ¢(žçS©T,3 ÇokkcÆd2Åãq»Ý~øðáT*e·Û)ŠÒðlqQÁ`hjj´¹3ñ¶_ˆõ;EÞ¡fÏ. oö8,~ó亚“ZóŒï'ŠŸ45‹Öú’‘ê ÆÈiÕi¼âWOÔ©²`s¸dÌnÞ¹7###//OUÕ¬¬,¯× …"‘H8v8S§ND"’$ét:FÃ0L$I»!:Žì¢ˆºú/öÃ7Aâñ¸ªª@¸Ñ:Îf³ Y¸µk×ÖÕÕùý~«Õêñx222­ÛëR>Mo0n«V­š9sæÔ‰¥ ¯ßÛ²åÙ6Ö›OçÎ Ú§V8šå4º*nŠQÖíÛ·_V^>•ðͽ;·ؽe÷¡SV»cÔ¨QcÇŽu8UUUn·{ÅŠCf‰DzzzAÁh4ÆGÓ´,Ë&“é3‘õ/ž½§( 4²0ÆÙÙÙÃvÖëõi'0™L&“IN—SPTQQ1ÄqH&“ŒÖ8æŽ:« ‰}:”¤äÞ”`@οæA½ÁkldYÖjµõ B3çΟ1gÞ»sçº=^„am:Îår+»&“Éd2%“Éššš´i'>sà¿0س,KèƘè§Ó9Rgžç³³³[[[ À‰D¢­­mÁ‚CºÆtDEë-‰WíNÄBŒ¿)±'¤7˜ ™L2 CüÉOT%BEEEŠ¢$‰ÞÞ^I’úúúÆŒsžù¤Ma-„~~öõ…À!ÄóŸOEŸÏ' ¢ ¢(vuuÅãq¯×ëóùjkk322ÚÚÚÈ9xà ÝaF£“椃  ñx¼ºv p»Ý555‡£©©©·¯wû¶í9¹9ãÆkoo§išÄ”hšnjjÊÊÊ’$Éçó ‚ ív»Åb‰F£„¢†ÃažçÉæH¿MÓŸù c;i±À§R)Š¢·×h4²,“‹‘H$-máp8r'˲Ýnw:‰DÂårEcÑŽŽ³Ù\[[›——WSS‹ÅX–¥izæÌ™Ñh”¦éò©åµµµ=~íñý–¶µ–ìqÔ[³F+ŠRTTär¹A(..6›Í BR¨o¨·ÙlÑhtëÖ­6›¢¨3f‚ ×ë ‰D8VU5ó<J$E‘¯$ȃÚíýù$žÀŒ"ÑŒqss3qñ‰Ó¯Õj½^¯(ŠíííN§Ób± ¶>ø Á`p»ÝÇegg—––~üñdzfÍ"ÁàÁíàÞ=/,çár¦ù(o‡d^þÍ) 1Û{÷î%£<ôÐCùùù<Ïçåå•––ŽDµ´´8ƒÁ‰D"‘H<7 ƒã8çùœ¬ó…çQ}ü°¯î0ÁÄ”3~JÅÌÿð$r—vðÒ\„?†á8.‘HƒA·Û $­>ø96là8N§Ó™Íf¯×{øðá‰'z½Þsºyk‘UÎ4Ѭ…Ó8Ç„NVžÐõÒÒRŸÏ·mÛ6›ÍFà$ÙÂÁØ3 “••EÜÂîînY–µZ-Çq,ËÍÄ0Œªª;Þ^ €påußBˆúœb¿çé[n)è°å`T¾øXì{üåuß}øÓºsé`ÉߤÅ.‘e™ts»ÝÉd2§K- ro2™ ƒãúúúâââam÷KA¥åí éZUd Ì9ZÙb±455uww“Db"‘ˆD" Ã$‰Á5#Ç…B!„PNNζ͛6¼úԃϼ‘ÞX­8}Áão~VêÿØWWW/÷´hŒƒšÚ¦öÑùY”Ým½—\ÿã9–^€‡?­ÜsH&`K’D(‘H¤R)â%›ÍfQIJwp´¤³³³µµµ¬¬, ù|¾`0ÇËÊÊ’Éä¹®¯·wûæõÖq‹C\˜où+×vt$¢Ù_YûÖ«ãJ'{Ö^Q¥¯¯¯¨¨(·¶¶A2½™µµµ‹%777³X,­­­‡ÿ¹rJðÍÃñþè=Æøó@ñ.ûÚ-+4hÀS{åïOc2-ì‹üñ蕯Ÿÿ®`o÷ÔC_¡ÝTL¼–GDœ|–e™è·Ùl@@ER£Óéb±˜ßïïééá8Îãñtttèt:·Ûí÷û+**vìØ‘L&Fc}}}nn.)¸8zôh*•ÊÉÉñº=]m…£»º:å±+>®Ù§cŽózû‚To jKs#ÃkwíÚm±XŠ‹‹ƒÁ ×ëÕëõŠ¢Œ­×ëÕéu~¿DQ´Ûí±X,‹q÷ÂO®{´¼,4BNé~N<û cŸ”d8ø¬‹ÅBòiN§ÓlµÑ,?ÿò%:~ÿþý•••ÇÅbs,¾ûgï9xÌjµZçõzišÎÏϯ¬¬Lç H3›ÍS¦L!£_ŽcYjdGQÔüÛîŸÛ}óo»}vIó \ûþ¯E•¡ø u,Ô;®BE´®ù7Nˆ¢Òf2Ü#9¢$HB¢%’$I’äv»‡ì’¾¾>û@³Z­„ˆ¢‰DDAp¸Üä+˲n·Ûívççç×××€Ñd6[m¤¨2‹™ÎÊʲZ­‡#™LÙµdhbÑUø¼ËGÔù-íÓa?RåÞüë üº{ø­[…Ã4Z³ra×ã’‚N÷(%¿ð ÄÂÎoé+ǘ(„_ \öÕ'7ž{×oøÞ÷4¯ž{]QñöI¿êª+ÓWb±Øö羓յ¶È1ÔâèVcï\øÍ_sG|ýtÎû×·N¼g\+`ç¸ßçŸ}äÙ›çê«<L6ЦÞó–73³¹¥uËsw/dvdÏzçwë5Gm7º<™7ÜpƒÕj­ªªr:{?xñ6éYAF[ñÆÍËåòz½Ï>ûluÍé¼øÁk3š CYº?®£*rox"??_«Õööö¶´´æ¾?ߢ燧UºªTEV:ˆ½×ÜßGQC»sÛ¦ðºûgèë´ìYk#)°+”“sÛŸ&L¾l(Oøèo+™CÏTd$˜s‚²‚w<ŽkŸª¨\raØú”¤ A‹i:Ïtš`ñ£iÔá”zéÚ¦©¡~÷ÿÎO­=| ‰Ã‚Jöáø º2ô·µ÷Œôõ"„ÈnRÄÞãt<=ãJ[Í`àI·¥öú-ͯ>]`ÕÕ·[w – —'_+¿lº¢(UUUv»]Q”̬L¢¤1Æ'Mìîîîêê:qâDå¼ùå±u?)k#Àc „ê‹öÏÄ©§.×R_Ztªª&²,«Ñjà_ •¾õçUE[¿´ÀRO€O)ÐRãކöVêÅyvm>Zõå{æÌi|¦7I€—茨1±& æ9»k¯Û¿cãtþ=;VÆUà’¢ÄN»;}½|ù]ðæßâòÌÊ ¿úé÷x|Ès®øò®‰ÉXxQÇ£’Š’Z5å÷ª,aŒ'LìבH¸þ‰is²P1Þ*MÓNýª;g´¢(§šŽÇ÷<·ÐÖH!´Äã{çÞ)7¼PGÊ[Ó.¨øÝÿ;µˆj Éuö«ôeWúcˆK´ëþ~¦;†n+ò?ó««¾=®§#¤ÔºVðc—Rz‡Üsxz¦£OÅ0?G|÷äúÓ~!Š¢ÙlÎÈÈè<µs@s€ÛnYºtéJJJ6½ôø7&$S* &Õã_Ó–\é°ÛYŽ;ÐÑ;úÏéÑ7uUl“Ö¿òÕÏÕúút:ݾ‚‡ÍfÓá×WÞ=)«?¦'Þ²R**½ð[>Z» ã1Ž8í—{Æ~ÇXr…'+»Ñß<þÁè¦?dèq“;ü÷å’ÖtŠò¯ývûq( áÍɩکwhlÙN—«5 µVE÷­^h:MSÈcá¾ôis[Χó_èÆkØ*†#½úÙO·V,ºÉ}k‰'¶i¿iÞ¿÷wÿT,©TLT]¿ qáûꜞ"®sýôKßüéöêÊo]•z¦økêËß{øùôO+opOq«Ššübðš·gÍ_Z­¶úL½ý­Å¹þT[@è¹âÙ ?14pìÄE—¹x³É¶dåþ@ ¯°°a˜­oþ±²î'‚‚ö7%çÿE€'Nx²r6}7cy©–Fê’·Üóè†.Ôs_~JVQ ¡´_»Ãë¶“\¢ÃáxäËe÷–uÀªšÿý ë,Š:²Îßu—sJ† G;Ç]{ÇŒ;k·lÙøaÉ®›M<ÐÞà¿~ëÿ¬€¤¤6ßg͵R4‚ÄçßöØ[ç¨|xõgË®3îQ0ŠÄ]·œT2zxßÓÎîxKÅÀP¸ÙµìlÇ V<ÌR xߦ­Û?­BK&âwçŸ$›`µoæ¹ÀÀÍ÷­þg{.Æó#/Æc±a8*…«Fÿ„  W/;º“7g)\]ðÃÁÀ€Ílhs,b)S²¥úLÉâ;ÕÜÜÜ—_~ef€pBIÙÇÛgÁMwjJìiQO$²vïÚ‘J¥HÂ&‘H^‚¶_·~ýDW h„Õëß<,X´ôÝž1°‚>ð””Rà¥Õ¿Í³`D“³îü 5̼ú¡hB§  ƒý‰­¯WŒÒ@kŸPþ¥û‡üZ>ºÄÕ a(us¬T·{×¹Ï2Œ_¡‹T%d”iÄÏ?öý{Vþù"ßMUÕB}€ÀURÞù;onÕÜ4Z¥iç0þR/æ¹þÉët:AH/¢ú/vG°þlG+ ƒÁü‚ѸFNCvwwŸ{R:VWWÏž5s{ò®®Ö=fަÐ"oøž—:Ÿßô‹òæQ£Ž©Xd¶XIy Óé$Õd‰/!Vë1¨Ä°Ž›¾ø’Ý„®®®ÚÓÕrw•nÁþ3J_]Õ½ÐFaÛ@º «Ãcß¶ýÏez¬BJ¥p½‡¶¾wîÓÇcHÐT æ+]ü´TŒG[û¦Üà¼í‘~ÉKaÂþ¼>íÔzÕŸõˆ¤¦‰•”Hûý~š¦ÍfsZC`Œ†I&“,˶´´¨ç±‚ÞP¬¹þŒ×ë¡òò+¶~$Ô>=Ý›"âh˜™‚ÔF8³±~ï½' S…+_{ EQ$ Á0 M_R¤«d9ùEŸöÖÎÎîï®R«Þð°áÉ6Ô?>p…T C¨ÀYØ'D™;ñ7¹p /ôcû¾ 02ö=[ž’ |ìc®îÀù‡üÝM¹ß(‰`€Éº–¶N_¶×}á< B5}Ì"äˆ?çyÙýUØ(wö¥­$Çr*„±“qb†^¯ßºJ:ùveê-KQZª~À0«ÿ•úGA¦8NU1Ý¿sñU×Ômãk¿g,y§·¸¤D«ÕÖüéö+í b'RûG?vÍÏï>·à¬³³Ó¦EjEêãnh.‡#€¡°/ãÂ\cê«8“¸æ[O|ç"S´¸ìVòùúbå<=c‰¤[#…`Ììå—TƒïD"¢Óüc³ÙäõzY–eY–Ès I’X–u:]G·½óñ[O{ë7¤Z< %“IFòì¤)—U~çwoÒ·ÐÀ±ÁièKhïÔöÏ®úÇH{{`Ú‘¯ä}° ¥îŒ£Î¨ÀûÉY×Þñj8¿¡êˆÛÄö¿žšŠ}ݦ?ç»tŠI®Êï_p¢c+m‰€ h©vÏ9º+=Õ³Ú­ßþÌ<üõ™ÇGzÃg~z›–Æ€°²øê/y5‰ßŲ¬F£!EÓÇâ³geµZ ¨ì1€N¯·Ûí¡Îãæœùñôîç²Û^#ù_r*(''‡pLEQ*.¿Ž¡†!(”ÆD>°ìÅÖi‰ewùÎ$¡¯×?lŸgŸø¥K ,ù€V`((š~Õˆ,ûè߀bû'©ÊC±OX-©ŽÇ\sgO¿àDmóaÓ òº^ð§?<={†PVšB­g…3³rò_«&Ž&ªìøõ‰ãdžñîÖ¿÷-û@ž=å4YìÿJ1)êM— K!µZ­ÃþÉ(îþƒžî²…‘„cmò_ýžÁ`H—X­Vš¦†ÝñÊ’Âæ³†6ôŸ,°^ìløó•‰Ц߾oa*5ô£Â‘èLÿó¤ÜãÍPE†ËR˜Y…3»ßö±o¯y¶’Þ«‹ÉâYØoÛôáÒü$°”Ú—ýEÎuñ¿` 4Mªî“צYQ@Ë¢=-ÚööŸ·ýóÙšê*@ùÏ6EE €+×¾ôT$éwÊ»»Ö>ÿÀØ=_Õ0í!ùæUÛ†Ub—¶F*•$6LÊHDiÙø7{Æ!@Ô2áåwŸþACc£$Iñx\–å@_`Óê{ïtïǪªnÕßtVXÐÞD|qnüÃÕìxÿåͯ£î>½†ÐuHIžÛ îZxchô “ïþáE®fNá¸OÐ7•”ê|'kêÊŠ‹@o0¼~R^1@×xÛ¡ú^ÀøÉ“ßzð—@Ùø‰o~xVÓ/Ì<*²SE­þÙCIÞ‹°bÃþy@Z€¶Ò6oͬœÿÇJ•óãOxÀÙŠaéÏß:òĤÉؤ¡—$þÞø——·Š¤µ‚ô°¡«ì€×úrøÜYYÍe×ßʬ]#«ˆ¥`®ÿ9ðCJ¥~|þ ì“;¯IDAT~íG¼úóWñÛi -2ŸŽ~tõÆW´ÈèUBmÓ<ïAPLTj/{æÊìþ+»ô·Í+¬:JË3KýOlûÁ3`ƒXj+¤Û›­c¶‡óD1µÐÙ!«ìªùDî»üÁ¬žu„/4°ã/X‚=(¡‚²Wá»û€B€M—U~ªU»lÑ—v½z (ò¬Ÿü9äÜË—µnÞ½g ÖƒœDzר£Gm\±\Y|ÕÖ7WãÆÍÐsJõP€Á˜‰3&¡âk®\vý°ÿLá­¸aÓöI^ÙŒÝJMН«ò vú¿†ÝM%Óº]–eG^馨-P_¡Œ•П¼KáØ’œÇn[÷ª}üÕj¤ƒReÌ™°9›Ê¯4¿zù´éÃÒÌ›žÚ½åŸÏS @Œ`Vƒ žÑ¹¹9€Ð>ûç©Ó½öîU ßÙ½ýeܰ‚(Ur•âQ fÜ}—Édj|oüÖé‰swoY m{Ô¾¤¤°ÆLÙ‹¨üʱw|mJV”^y׎ÍQŒÆ*Ÿ:ujBYéçè< À}&C§R)’ÐKŸüöè)éA–eBˆùïþ•O»2ÙÿÿáOÕ=ƒ@ GIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/castep.png000066400000000000000000000210131316323560300240050ustar00rootroot00000000000000‰PNG  IHDR–2¾Œ"sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÞ  -:ŸQ IDATxÚí›w˜UÕõ÷?kïSî 0C³¡‚JŒ_£€ bMÑÄ“¼ú¦ø3]£IL,ÑD!jbMLÞ5å—jï¨DH `Q©ÃÔ{ï9gï½Þ?îÌ0ÀP4yÍ÷yîóÜ{î9{¯µöÚk¯v ýèG?úÑ~ô£ýèG?úÑ~ô£ýèG?úÑ~ü£³Ò¾Åÿß\ò™«ö\«æ•ÍÞ‚Û¦y׬jþñðü‚ç·øÿã³fðàÃô\{túŒ>ï½õ7·ü‘ów.ú]xñtÌÿñÍþwìqÇüÛãú¬Oõy]6÷@5¯PJêz+×Qq{c !(A=årEV­^µfÏÝß¿°û¾¬¨­„•¥¸~akû:74n¨Tê0áµ8ªpÎ Š÷ï6xªŽ¸±±ñI)ÿ»Œ?;0€/<hµR\žSäàÄa îˆÃŽ|¢û™¾ÿÐÄ àèc§Çûo2L%÷ : AA5RÕyWM»¦àŠK~PßZY{HVT ç ç ªxïá$Ãy9>rg XÎ9(¬½÷{úÜ“™Äì'góá7nusǰ¤¨h(¼!‡s9 ï !BÀ{O]}Û†²ã;Æ&4ûk_:·ó ƒ'òôSs·®X¾Pl,”³Ž I”œ`Œé,r?ÍZ‹¨‚ªRYž­*Õ%?]¼üõŽlÜþìAoðÞ5·—Û>4¬qÄ3}Z,-¾N0×ùÐ%(œs„P…<ÿ|}ñ]‹ß^úÉÓ>þÑìßU®ù æM,WtJµÓ²¼Š÷çF<¨’¹êEÆÊƒÁë¨Pè"‚J8õøœpG_cÞvÛmsCÐ Î{ððÞá]@5 ªxÐZ›SU¡(Š.~Á€c~pÕûú7ÎM öÞsR‘ç„j2ó"8P%tmDUÅ9OU%øÚ<Ý×U÷ÝwßfÇÁ“šPWðpgggS­ð!¼Gƒ#¨A½Ã«â'Š#Ò4¥aà@Ö4¯ù}cSãâ9³Ÿ¾àØÃ#? @´ñdYQÁÆBÈtWµþD‡(JG *"kS-•J#¼÷—ï±ÓÞ ãÕ5ÕÕ•NúT¬ÜÛ댺`Æð g ¶ Ú4´á¤ |4ûÕ­¿äóŸ=û]+Ó+ °ç¸ýX¸hÁ3yGu;ÑbTÕÓ%8GÀãƒbr#ÆO Uý¼šbxpð`ݹ@ŸŠe¼ïÈÔƒ$Íð>k w+.T œFˆäjb\^ÅŠb­b| 0@Íj9ñq]PR¹ZAÄŠ¢ÀZ©m:(4#&%S‡•€/1b\ÄCˆÂe¤è'ÚË•&Ũ¨ €©=¥PÔ¬¥ ¾¼ÈÉ«ÍÍëTT>•+ÙaÔ'N?ïî;ï½èÈɇñ×YÇl`Iœ’ÆudE¥Jâ‰a ‚ bDIJþcº®)ÆŠ«ã£(B%ˆ±PŸ6tD‰Ù„¡µV’HƒÉ%¥µ)êŒɰ>Âx‘†4rëm·dŸÿìÙ Ñôî,ÔÂÙsÜ~¼¼`AV-çã3ŠQ±%%"¡”  TÄàº!Pß‘Ãk¡Þc|Aƒ'WÅAU¢tS*bILJI±­cЀ!Pj ­°¤Ä©‰H¥ Q}BbuiŠ”`H)¢ Nb6ÌÔx‰S‹KR˜ŠDÉò@ ÂDRTO°ŽÈ€Š%Žë ÀI 4ˆ·=ôöµsfÏ=øà†gbõùPÛÝZ ^¼ŒhLŒÁà‰HŒ`‰(B$®T 9êåE¯~ç#Ç}Þ_gýcŽ>n½Å .`"Á¡*6$êM*6à—öŽŽæ_ÿú7MøÃï™ÿìsÔ (±×û÷â„ãçØã>ĸqûJš$‚¨ Æê·/úÖ4àU—‡»¢Ôà²õ»gû¼Z˜´®ÇD× H}õ¥×ÜX÷Ur“`œç„7 kÊÖ®jNߥڛç½Xm­´ÅbR•J.YûügŸøà™ÙOͦ\®0rä&t(GLžÂŽ;o/“zr)ÐH0¹Î[ðôÑÀu. çoîí¢|ùœÿj.ÛèRå©ÙOñü‚…:2Úk@ C52eÊѸj'bP‰PkÍl—…C6^‡w,Ld"À>ãNJq‘yI^\¸°æ_5#†‚‰ Šb¶¶#;î¸=ëZ›iko§Žå«WišÆ×1yÊ’G›~—é>þLdÐ\w Æ#ÆB˺V®œ:•¡Ã޹àë0Þs Pé¬2Þs\öÝïqЄƒ8þ£cÑ ‹PUÕ§R__€;£ÔœØ›“Ö‚‚;ï©2wýù> JÑ^Éh[ñ6jêD~t͵I÷‘Ú—åØ{ŽÛÅ/,òÎÂ’‚«JGGó;?üáN8ïkçw<öØ ÊEaÕªUÜuÏ|õÜ/ó /â•·^ljj@SRàëQj.‰c7pNƒ%‰kBl’.Æj‹méòEƒÆÁƒ¯Å 6L$ˆ­ IC¬.²xEjº¤QbŠ Ž«¤žv‚`âLMQj´{N›Qj0±µ¤1Ç ‘Iºt`”šá¯ÃÓéùž–ªõj–„È;Ô1¦F³ƒ äYÁ’å‹™óô–/{‡áè&òÆÛKÃâ%oÞyä‘G×Gi\G%똌Ä3ëZ[¹à‚orÛ¯o 6‘g5€±"ÀÓÀý±Ë&‚¿Î˜Qùâ9_þæôGÖ0°¡ø`€Üµ¹ áäŸÂõ?¾nâ~ØwÏR”PøÀßg>Μ9søÎ¥—bŽ8b2&LÜî™gæNtY˜»-V«CåO;0PÙøŸ?ÿÙ/¯¸ïîÿ¥fP¯½þ4p¿ªÆ"ðê?_qóæµÊÈÛÿ4sù—!"®¹.Ò­T"·+½Ï/1!ÔüËšã*½çP—aE)Œ(˜šÓ."%f ðC ®vê Æd™;ËiÀÔèR`?ààÛ›“YŒT)BÆÅ‚óQ±ð_è«QÉHð mmm¼ðú›ùÞïÛcÚŠ¥o‡X¬i<”9ÏtYx«÷ý“§6©½µý,ŸçÔ €®§z‹æ>˜Å£¡Àw;½æ¹GUÏœ«nH§/w`Lô² w«q¬k[£®(¾m|—fDšvJÍK’•k—ó…/~kcLMø\ŸuYXºñ‘´óN»,¾ù†ŸÅ•¬Ì¼ùóxàÞ‡T" 0º/FÊ­µ9pä¨ÎD ^þùúbf>>“u-­ÈÑG1 8tkJÛz$ò¤¡ÐíFŒqð¤ƒÇú¢+ÎW—…>ù¸çÞ»/ªÏøL¥sí;Üþç»»~=7Zqˆ”XRìúÕ«ñë˜ÿÆòe$8ŒzŒÆÝ#pµÏõ €\#b…T-¢}¯{ìrœfˆ*hÏi,. qo¥:ùŸ ©~`]C©$ÆåZ›Sù»Ë·¶$³¼(ã}AŒ`±Ýìv?{¢ÏÕõ劌?h+¿>Ó¨"jéXWU%²&Æw”ˆ›VË'DòØÃ3»wF·8 çìßø¬^²t1]x1S¯º²4õª+Æ›˜¹¶–}\×#õƒ©´®;Ò¦ykÕbåºk¦ÕV'A¯¿ñGròg0jÇá:p»äàÃŽ`Á¢EM«V®Ùªb‰H[á …72pHçž÷5ZZ›å­%oñ‚—=z×>ù¸é'7òµ¯œ;±{MMBEFQ&¸ïË_äºß<£÷&ˆR“¡›Ž¹i¦\ (jv½v›[w€yOÏfÿý?и|Ùr†4¢µ"]æQèrkýî·Õfª j¼ËBÑ× ½1íê©ôr°ç…ã² . ­}Ýߺ¦ÕV%=Ðk QÃü_áž»ïÕ(5jĈ+‚Ù>ô¹‘8ïàÌÓ?vÜi§{€º¾Bçn,|þÙwÿ}N”¼³\gTC.ì¼Ã®Üú‹ßñËŸýJ|óù¢—|àÑG;âž{ï>¶÷³_ûʹÜsßÝÝ?‹#. Æåa^ïÝzÛ-¿‘ÿó¹3OŒ¥îSéøë‹ _^€í’U^ã7>x4€ñqŸ´FRÌ®Óðx^´·wtt-Þ˜(5=Š‘IŒgÑ ¨_ó}ò¼âˆ‚„Ôè]Ÿ>óS7Üü³ ÇO . ©ËÃÇzÙgN«Ë‘Š‚Çm©(À©§ŸÒó½T—¾YÍË!xð¡#1b6NÖ›ùø,lÜ㨯x79¤­) @Ks¶qM mèU€æêå¥Eÿ¸ÀÄ\Ûå/l1hòß¹¸e¿¬»í¶{¨›Oþ)^yõå+*Ù767ö¸ý÷Qoí%y×EF‚÷ÎÍÙqÔhÙe—]Y¹|õü‘yàáû¯!TŒH\îþŸpâ\€]÷C¾qþ7ûäë3Ÿ;Kùó[äìs>{b×¥áQj.Fé1§A@° ϦµÑ+®ü>—^òÝCz¥ >EfoP\zÌE¤OU¶Û~{ößžý÷ÛÿûyV€¨É3OPÕMÖ¢—ÛÐ{Ì>-–¯­ÀÔŽ]ú¾ý´OœÊ_þt;·ÿùÎùÒÙŸ|è¡é»þóÕ׈lb’$fé²%øà7tèºýÓàµû¼ßåaé–,Ä{Á¦Aø–aOçª$Vtî3s9ÿ›çcŒA"rx󪶀U«›O Á›ÎJÆ)§Ÿ¢»ì²ë]–q³[jöÓO2é I׊“ó"3Ø8à ²¢“rµ¡V6Š¢T.´!¾ÜåzqPû÷?øè¯½fö7Îÿ&¿ºõ—›ãìs>§½,ôj—…ó\w[¶ªàsL°¨øMž¿ô’ïÒë¸Ï\.ÞXÖ9‚¢¨zFÊûȸ½öWü¥«^jÇ×wÜÞ²5¹l ÆÄ„Zp*5«è}Àu;á]øËŸnçÒË/3eÊ”Ùü©ŸûJ>5ŠF4ÐÖÖJaCÅ’¾¢Ð4ÿßE{smS"ê%èÚŽ²9æèc¬”Ë»ôzËBK”~ýû?Rmi›¹èù…”J©Zùþ%SÞØÒœtÐ!<1ûïvÈáw½ôÊ‹'¿óö›&©KÕD%ê¢:|Q`Œ%øªF(4ÃXQ«¥Q6«=j»]þå-?ýóŸ=[¯¾zÚ»²ÐÝ¿RÄXœdˆºwîVÇØXÖu¬S ‰@rW%/>ST3±ê¦ë¢Ô¼á² ïŨPgñÁãò‚=v߃±»eÝwŸ²ûØÝÖî¾ÛÍcvÝj…*=ÚÕ•+ù·†44 £­yM5×L3S’Ëþ¥ÇäØg ŒDq¯\¶J–.Y6Ø›gÙ1mí-FQÄþöåàC>ØøÔ“s¶8Ï¡“㦟ÜÈ—Îùò]Àùûîõþ+=âðú±{í§Û*qTO¬k >X¼qRtÕâ8¦NêÇ\uÕ´Ù^xѤï]q9—]zù»âÓi€`°6¢+áº5·¥OT$"Æá(¼£pŽL=N-11¹5 Ê`H”˜Ù.“ÞµbY‡*˜`ðbÔ@Q¸ØãšèîBñ9Á\5X52jÌ(^{ퟴ¶µ©µF€– «+2‰»Ù¼Ê¿ƒ5Í«Ö4œ\Ⲫ¤&¯°ûèÝdÞSóÉ„\‹¼8lɲ%AÔ@¼+PI)YDÄEà[ç}sÈÇgŸô Ê„Ëóæ?Ãø&pÐþè.{\¿è¥—¯_ôÒËw'ì¸Ãv¼o¯½t̘Ñ2jäv4 ßí·ß£†BÊÄ’²ã;¸ð’ †\véå-ϳ5„È ÞásOÅïYf6d¸¨VâZ°ðYüc}Iç3Ÿ9ßÑA” X¯´Bµ÷óÇ|èíê8Øâœ™œ(þÏZ¬aMÃYÓ¼úÔHóº"@çdùJ4D¨/Äw7òà±FªxÅxïA cÆîÎ駾ݟÿüçq. »“¦ Ÿ[ĸìËüççá+Õ}&|èųž˜%“¬]ùœS¦¢t.[¾âøeËWôxmMC‡0yÊ‘úáã>"5 â5hØoéâÛ\t»YÅr9Ò%S•÷¾I5Ðk ÖÚšEM , i: ;ùÚ]ñ¨»ù柌›5cÆ©m•NóÈÃ^ü±ãO’{ï¿k‹Î»×ZÁ‡jX±f E@Ä4`m„-qª”%ËþE^qÝ~¦¨ê9¼÷Q˜¨(¬b‚œö‰S™9ëñ÷Ôi: ®a½?ÕZ¦ap=«×®døÐ‘“~Ñ9W2"4 nðêPb¼Ë1^!d-6(Uï°Z Á’å´wt ‘èq>vÔƒÓ˜ÕÑÚ9Ùåa!À¸ìËK ^>£5/ÿÚ’Ìzbæû&:ù”ßþ÷oäÌOŸ¥]Ö«»Eó·6‘=}¡ÞÆ¢Ík[&ÞuûWåœxÆÿ¦ÞD’¤‘¶w´Cx>ŠÍ¾.Ûli µÆ5P}ï45B§³¯µÄ½íöZ<<ò Ö´«¿¬–óâä9óæÿWµÐK8ñ„SÞ÷}wœ´u 6µtŠÚÀê•«QAð]5…õEoÅ 6ªÕ(UAÆ ²Âe¡5JLÍy·="ÈÕ˜ Ài'ŸÆÐMïÊioo-3 ®ÎJGu]{¥ÜÙVùzÃàz–¾óv-:’UÍ+¿•†ì5ŽæÖÕì2jFl7ŒíGlÇΣ†3jÇíÙyÌNŒ³+cv݉1cwa¯÷a÷±c³Ç.œzÊ'(·eÞÊ>cÇé¡“k†õ¦£¹¼ö}ZíHˆT)ÌÉ·üúWwŸùé³tç¹¶ÎK}®3Pfú\g!ühzàáG¤>5-Áz"IãTFw2ÛìŠ+<9‚‘d‹Îû7k¤@E1ëc-uEÈ׬X-+ßYÙ¸jÕêÆ ¡±ËÏz§eÅr|¨b4ÑrÑvĶíG¦,qÉÖ:ŒÁF¢6l,ØD°‰ˆäZ©SÕFA†¸<<ÛApy¯¨põÚµÍEQ Àà!C¸é†CÝÖèYÕ¼ªæ”®§½­³Z261d¥rÑ~ÝÒwÞ>j§íGõ:BSî šæþíÉæ•ﬢ½­rÖA[[›¶µµ±n] åvʕ֭m¡½½ÎÎv*• sŸyš§ç?E$…Ö)É‘GMaâ'4lxu6Å/"°¡ÃšúèpÛwßs·ï®3TÔSuÅ{27iZ"‰µ’Ì{uÞAoȃÁ¯Ïº JÚeAZPZ|®-ÝÉÙ NA]Ez×8·Ô">o±À¸îûµ»à-"|®Òëó  Ú{ÞÞQ­X»n #‡¼¦½­c¦ÁDÊ'Oû´^sÕ.<âÈÉ—v?ôðô‡6!hDÓÞY½l§–æ¶ 6òy[D%–’M9tÇžòÅÚåoa‚½Ð´³c-ŸþÌgA@ƒÒÕm#QbWÕÇ£ÄÔ¾£3‚Ó‡®½ú†û}¹*®ª{䇃µö ¾§ÔBI´(×úÂÉ”BûÞ•—ÿå I'wßÓW áÄȬ'§þÓoÓ“ É h¹öuk·ª7þä†M³ê•μÈ+ )–œ ¸lý›$—|wÓ'Îýú×6TPïXIC†„õÔúä·`ë¤p6\œ €ñQbvÝ8ø˜|Øzc–‡JUÅ#!F¼­µ:‡ ж;ŽsY˜×“$íʺo)˜Ù@d?2ó”}ößûöáÇ«† bŒÎš5K¶ÛqäÕ/¾ðbó)'zÍÆ¬Xµ|j)©›‚IŠ5ŒbŒå_¯¿ÎC?ø›ÓN?å†AƒÀ…1¨œ…XV®\©¿øùO$ª+…eK—É#L—ŽŽŽë}®ç÷¹gU‡<÷gϳÛnÕ,Ïòçž[ôÓ†” ²óèQWï²93ÿöÒ‘þèè"ϯ XªykcuEUžzr6{ŒÙãê7ßþWóeßýÞ&|N<€W^{éÀ4.ÍÛu—Ñ¡Rä¦.N´ZÉdmË*†mš®ªI÷3UEâŠÃ"+ ªN|iÕu-|æìÏëÉ'~\N8þŒ58Ÿã‚Q«* 4Å…ÀÚukøýŸ~ûÅï÷Êÿ»¹–˜'þöä‘iZš‘¦)‰õ´…¬äÎQ%še™TÕÓÙ²zÆ€ÁCð¹»! Y|%'‹1A]¦ÒÒ¹–AN÷y‘xÞ{ G%ÂaJQdP±˜zåÕ¼ôêKµ¶^¥OŸñº+3ƒ+š”œ¥¢«^ó<“R<ªï$ ©æEUºs„S0u[ø™/|i€QÙàG œ´°äZÅh„QG«RÍÄ£µ¶qExK†G}b5¸Š8˜5kQlVG»,ôä+˜°ÿ1¥_Wój’‡@Œh¼ˆz‚Eµð™à-Akð†A • ÔoM±zÒ N<€½ñ»ÙãÙGgL³øÍ7Þ8ìð)Ú^é”ÈÀ†áD’W­V{zÒJTuX©z#u¶DËŠU|õÜ/òðƒÈWÿës¨xrWˆˆ)Ä‹"¹¡£(ãL•Ã‡óøŒ™?þØû¬Þ 4´Ajî“ÓÖ\%¨K Tò² JêõM;TÚÚÛs,.II\•Î$! žª3¢Rap]…óÇI¡ÕQ‹‘*. RR×˺Ö6¦N½’·–¿EUU„Íg‹«¡<Òš (>GFâ•XJqL9kÇhLY;k~!Çû¾‘úàF;D "Áy©)áÕÕÞ(*¢4€ Wx¬rQðy-©A >ëì>4GlèŸì“i5‰L¬–L²"‚‰QSB«ŒpV®YQݦÑ}Úcö¨%ÕŽ:îÍÓNñÔǼìQ»ï´3C‡ ×úR$®È©T*,_¾œE‹ñ›?ü_; U bcƒ«†ÐSñÖÕ"K¯NÎžŽ ™F—õ}Ô¼²àì¹ßÿê+¶Û`L×÷À`%Ðóªïû÷zœxˆ:LÒõD^©ªÇhnYÅ믽Æì'Ÿ¤\ɱ‰¨ ‚P œêòpï–2ï×ÿä§|ý+_Ú\ì©}ÈYéS6vÞo¼þ¦­ñºy3Ñ}W/R»¢Áï¸,\ÕÛÝ8äÐIòä³{‡€¹€bkÍT›¡{‘˸÷œœ4d`ïŸWÿÝ‹Ií"?@ím‰F©Ñ(5+m"—ÙD†÷D7íð(5—™HVÂ÷j”š;m"Ûü&ŽM$Rs§‰Em²îuÄnIDATÁ8+År0¼K SË€oaX¹í›|LÂú±sQ”š3ºûšÞ%J®ŒR3'JÍÆ¼v®²‰\ȶmÿkM,j»ø…õtŠEm\¿·,L$=óÚD¾¥æð­úE©Ù)JÍó]/j¨‰D1lL÷E6‘3ß“ÅêcB\ˆJf0É塈bSÕ O!à ý‹ä&1’tù#kº³áQb@Ö‡¦QÉŒsY%=9’xÒeá]½No©‘C€¢+ó+Š®ñ¹.ìúŸkojó¦F{YžVË|Së49@UwÞ­ËŒ޼¿§:_";{Šˆß ¨¯$.lÓø]Ùî(5Çyw®¨[Ù½ ˆL¯n™Þs©ªó¹>±µ¹zÖ81;!ìéòà£ÄàŠÐý’ÈL.›t#öAL£‰enÓý[ØùÛòj×6óîçlüïÐóniüŸÆ¶Ò²-÷ý»réG?úÑ~ô£ýèG?úÑ~ô£ýèG?úÑ~ô£ïÿ¥äTmÙ"bIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/cp2k.png000066400000000000000000000142641316323560300233770ustar00rootroot00000000000000‰PNG  IHDRd2ª5~¾bKGDÿÿÿ ½§“ pHYs  šœtIMEß.‹»ØZtEXtCommentRender Date: 2015-06-01 20:44:54Z Platform: x86_64-pc-linux-gnu Compiler: g++ 4.8 u3‰ÛIDATxÚíœy”]Uï?{ŸñÎUu«*U•‰0’Ç 6£L2É,Ð2iûxÏöõkןÝöz>ûµ".@Z(ó$ˆÐ aT@h‚aÌœ"IÍU÷ÖÎ=ÃÞï}ª‚,Ô”& ¯ÙkÝu“¬{öÙç÷ýßßïDðáú“ÖSç0W δ%oDšG?ö*Ûb_ñ¡hg¾žþ…¼ÃH{7Q0Öd͆ G'ëþܽå‡â5ëßÏ5Êyû ̺n E€GÎ|g…u%Wtfq .<(yìXòùü¶8LJ€¤ëÀëÐÏÇ­‹z8p.•GÎäü#oF¿# g¹xù…XÒÃ’àÛÌùm¸^¸€3{òœÖ™C—³èÎ,Ko=žÞþ»'ÎfQ¬JCØ%V ‰­ÉÜzö‡€l£•±¹$ë€c!‰È9wùÊ;XÇ×Z14"h47ÓŒbê!ÚµxùôŸÿ¹ç°?„"ÕLA‡Þê¤l¹E>/\ˆeÁ·r§h Ú+¥A kb´ž|ï?œËºù¸ísÞ»O¢ÜJ°ÂZ L}1S¿i„sùF[«äAÖJ  «Ç“ÇŽ¹ÉÿP€üö|N˜ßÆ×žÒ¨&J›¬gÃLP  ÀNÆJæùx9Ã%Š>”|³§%Í'ë€F1h‚æa«JC3fô¿>Ìý‰b¨#c2'ÇTÞÌ/A9kÈXfÿfdö/÷öèÁ7ÑØÖòû“,ä·àTä!7¾p>gÆŠïO†<çZø]9>^ty…ž®mP¯ùì6Öä8àY[ $ÄÂêöDsŠÆJ„€Þh8 ¸?ë°¿›`+ãÒTZOèô&¥4¡2lm±6×22(xôj EÏ€†Ø™ªQJj¤0±¬¿êêÉeWn¯2c@^ÿ+køg³çãg±bVž…JÓé|ʵ g§îF@ÞYØ•`ô |”æâ+ŽæûAL,qÐ"JLÕkKȻЈ ¥B®Ã¼6H3,bm>Ô"> \ˆ›ZƒL]‰ÂÆJ”VÔCnB}ìåiMM|8hÙé’uÛ3ÆE´gÏ~º&aÏnm@CMŽÄI…H™{'š8ÏL¤B«¶L}°|õ ÖOÀKƒ0Ö„Yyãwí4gÔÂúÓõ„c}?"ÖÔ`°fº% ž~glèÊB9«ÝÑúø%ï @š‹¤†âާM7 b5¥9)hF1A õ&š&O´ÌC¶RêÍ·ùNÎÁs$Ø–-ŒßN›=4#Óg¨G“jh#uE#‚M“€&÷òçé^| Ëm «ækÇ¡ÝÌoƒýúŒE Ö`¤i,¥K Â&alî5Ÿ»'E×¢¯äåÈ{æ È8ÆJ=Ë$ 9—£Þ€X’U‘†¯ÞFµ#umw+ÆRM¼Y5nˆ”Š(zi!É)ˆ´diz­ ¨kÇFKÉ?]^ Vh“ÑæÃìÔ#üJ‹}j!q{Ƹ²¾TãÈXX{ÛŽtgëÈÀ‚v†Šžq‰õ”Ì8Еcßë^¡šsñ‚²®qkŽeO¹4tÍA)?p{<~6ß~ìLÎ{ÏiDl®Gܯ҃µbX‘º ÕaÅѤîÌ-¦f›ÚÀ¶ =³æ-YßYÝJ`hr”ñÖC9;wðjwŽ«€C?r_¬sXG–{³Žq‘Ž5 ®²%Õô\ßómp-´#aN{qs¬@A0+_Z 8¬pÑÆ*‘IÚ|£í²6K~v"³_53-w­V¥q%ýŒ6éœßÆc}¾1«ÀÒ'ÎæÆ÷ÏÂómö,xéCeÌ=·Ñ‘waq¯ „“-cöƒu®ÁÜ,h‡}{ÐNõþåc÷6bjSmÐ9Eãr.ìÙÍ7?öSžøä­Œ8‚M¼Ï:رb.Àa7rñHƒ‡j-„´¸ýÀ^Ý7Ö¹UŠ»]¶áo»™þ„+O¿‡õ9zÎ (ô…Q”VÂ'ÅÞR‹E”ÀP ¡‰+à ع§=ìv:2ˆŽ §ßw*_}÷±É¸’ù™üÓJуœÍÐøöõãÆW[ÒúÝ;¡œeù@ey—ÍßÍý!ßn÷ù‹¢K&ã˜€ÙæÃ›ˆZ»ì±e‚ãGŸÄi2DÓ”8M#0Ïì6õ»Cnà˜—'pöþ1§½ôyÄ‘7ëÆ’ÛˆÞþ õŸ£A ¨ÞƒÓÚ?ÙW`Di£P›kæ>èÌ™Úhí˜I: nšÔX×߯Ê:,|×ëP—n.'Rz#ëáÏΡ^!.y¸‹{™H_™Ø+ãPéÊò½¾RûÅÉ8ÇÝI˜6v“K )¤4U ©Üý+öžyòl>Wò8½’ÛP5.0V&«k" ®±©uö]¦c·÷ß¹¾ì4vk0"0ID+žæË‚•£ æìÚiþ½3›²i*¶bÈÄÄŽ¦1µŠ ,BhШe§sfÞaŸfÂÓGÝÌ/~צ· õˆÐ³X3ÜÿòÞ*M+²&0ÊÉOx6—µžÚÿZFï?[ ’)Mk*‰-[iñe€×ÆÇ€î:‰`n‰’máe¨w–¤€te¡¿Jö÷Γإèòõjȳ6wçù‘€òTšÜ惶Œ«ìÌpõþ}ùƨq¡®¶”-p¬„’£©%·bˆÐ:!J¦³Çcçµq¢#)6#’'ÎæK‡ÜÀ•ÛZ‹šry ï²·gCœ˜€—±!ãH:²*³[¿î¹”1€%·ÿþóx“»,ÁcMÝ&0în¿^È:¸AŒ%‹þtVCÁ3ÙŽ0Ö…kƒK?‰À_¼€Þ‘“h69’få¹Å–̪¶8W (g¦[³d£HIZÝ<ö_ºœò>=¼Ù•cŽ6J?]« ˆò. )(5·œ!L ¿Ö•£Üá§ü™&|ÿÑÏò³#nbp»RðÉø6õ¤éM䨋.lªe)xaCèp«ý‹–òôêÿÂ@ož¶©ê¸ä§´ Æla„aË4õL…3Uù1ÿð5òÀäo/`Ïæ‘Ú˜›Æ:2ƽ8i¥ïÛæúLb,@¿ƒ%4ž!;²K'¾•÷Lç°•R;–à©ÞwT.ߡ͸¯Xëh%ÐWL³@»Œ`”œ‹W X,ÛnAÝ•ø¶`¡åt#…RÖŽ,ÄIËéÝ8ë&ýcëµ/°SɧdzR*Ã1’R ¥Àš¢Ûõó›¶LS_4 I¸Óœ6:SaI›ÏÜRÊø¶¥ž+M,˜@JKÂàdº·ÒÄiý3ÖdXü6ßð žÎ.q-vip”g›:&ïšçß8 Ú¦c,èAÚ¿±hn×,Ki¥©¨”¡% êcMð¬DoY¿Õó­ŽÅ|)p¤%Û}(#t¥tú1BŸÊ¬„0Õød &BS}{6½Ý9Jióé8ÏÇòp,C ÀòvC “5µH’¥¡š,*ˆM†X XóÍ'ÙPÎb+mꥌ Ç$%ŸÙ1û ¦øoš,Ò¶Ì>‰‚(ž$J-Ë’3|˜ µzó@Ÿ¿nܤƒ5Èy9‘÷8ü¥ éÛš½ª-ÞŒâ(j0¶éqBeÅ)¡SÊd¬nè—0Wƒ5ØT1´LWNÔ‹ž¦â¡ 7çÓ czØ|X5"C6 ]b(•†Ñò“< àH^[;Nì§Œ°eYXBàÚÐç•u\10É*Ïf½cñ‹0¡©ÔZ¦NiÄP"’Ì|ÖwF€ìv¡Ò,O”É®úŠFPÚs$Ìɺ´oÍ^‹¯á±&«&CÃ/5"# ×GŒ°„€¡L†æÏ­ØdVBÀììо-Ö–sùA€fÌD¨abÝÓ m50ûÖS6xݸ¹ÇæI£ÍSã>­feùÀæ·÷äyE驜՞¦u4X§ýœï Ö9¤Öâ âÛ]9‰tçM<0 c5¦Û<õ£?e|»fYýÿ¬os’k*[<+õÕ¬ œ•þíÕØJ×)`³o—æüQbÜR=2ù¾gú|NÉ'R(ßFJaŠ5[¨ÜóªÊh ÈC# Ž-¸&ˆ=Cé÷Œ0+ѵ ¹èÙì¬ ów?{ÁVÏLÍÂÆòæ"Â5XÂ0º“!£+ÇX9¯È‹‡ÿ±nœöœCýM}\öö|‡7§ÈGmw&CÓàÆIÈØò!‰Jò.Qÿ³›F¹Tú̱ýGÞB0µÏÁ×3üÊ6MškG&9¨…úήÓOyå­÷üåg‡ßÄŸÅËyOåú-.âš?ýµ›2ÿrZk/âÑ†à ­±š‘yء̞wÙÁ_wHAÛÖî+‹“èdÕXC¬Œ•¹N™‰•Ý9N-z í~- öG­W RjÇ:™jPò¹c¬Ém³‹ê±ç¨_ð¯´ÞrÙÊwØJ‡1÷x‹ÑŒDCEõö~“ 3‡ÞÈ?<|?<êª\ûç½5㞺Œ¹±ËO Í×¼6 ½•CXJ¹. k¶ŽŠ ¹0Vœ &ÀF µz;vÙ­6¾²±ßµ¿#¼?¶×„kñ¦«X “Ñ´›¡ÝoÞôŸoçž™<ã¢kø»§ÿ’ƒ„àhK‚Ô´äv’?tÍQ·l]ýµMYsžgs’oãi«V\'©¶ U%i7³€lÏê¥=“Îê:¦͹æÌ¹îÃM<4Åeî½rY3D<¡ c÷/ Ò X ˜ø9Bº"L  )ÃíT[F3“t~k`t-Ýåù” =Ùý¯£’(¾.ª™fZE/yU õÈLÏÆÜc[Lz© ;²¦'â;†*ñ3âc±]l¹eì5{ÊDT ¶dí(!TÆ^½-ÍTz-„V¦“Æ**-ã6ºóðT¿¡¿ë‘ñ^&Ç_&jüÀ~×r“kñ¿m‹ VkÍÅ{_ÍèL϶¡ÂpÖ1L­gI<ÛX‚%~÷c#dêåÍÍUã0†X‰ª”òÑLPTš•B°K+6]²uc†7J”Àh’Œ±Ï6à J“X’†Ò, eodí-lè¾K¹¸äž“ñ¿s •1“5«@§%°…á"E0 iŧ}G…©…©UXfÔ'ˆõK–Лß+@þ¤:ÕÙ«ò`¬é G,¹%÷Ϥo¨æ\^q${6"È8üHkþ©³WÎa#š7ö^úÇ)‘™®51ØáÓM:_5\ßBÛ±!e¨™D¶À· ¢ãD|çàôÿü@2µ^¼¿M߉5öxf©ÅŠ1­™#÷ øï# ª®MßA×óÒ»ñ@/œÏòÎÿÉ2/m2Þ4Á½-câ˜H_‹ó,ã®Z1ƒÝyfÕCT¢Üÿº­k°½/xõó,‰­A Á7ö¹šç>ƒ…GݲõoÉnS@.àR¥ùrÞ1ýŽ4!cOw"×$ c9—ž fз9n°Îb×bèx–÷xmóÿžé™Ï!>ò“™ˆm«µ{qÛé¬Òš B°v²Åå¶à\Çæ^[ríº16¶gÙ9ç²úÀë¶ýkiï+@Þë™ÏÑhΗÐtm~úäz&õP´$“]z?Ÿýÿ¦Öš‡÷»ÉIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/demon.png000066400000000000000000000204761316323560300236440ustar00rootroot00000000000000‰PNG  IHDRd2ª5~¾gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“tIMEà\E T BIDATxÚí›wdÇ}ß?ýâ¼É³3³9]8Ò@!šDI¤Ê”-JU¢Xe—TVÉ–dY*[U’h–MIe+‘&)J$H0€ ‚HDÀåŒÛ½ÝÛ¼3³“_êöovv÷È*  ¯n·væ½î_÷/}¡…TâÝñŽÚ?7ïŽã]†¼ÃÆ» y‡wòï2ä6Œ·û‚@@ŠuMIP¡ýcy,ëäCvæ(@D«)‰@DþÀÙ4V\£sÞh.@¼…É~ˆãm0D¶šLßÿ­³g ]/:8%QR’~Ï­änûÛÆ²,xŒ œøò½´Ke¢”"ì©’ŠäÈ›?üSÄÓib¶fo2ŸÆ¹_àèÃ" C Bë0FKgØû“?Ia|Ë´Ðtý-1ùÆBÃìï§<=ÍÔÿïÌ™ÎÁþ¹{ìïg` Ÿb¾ÐaÊ[Û¥4ÃÄîëeijš“÷ÞK}vï­\ˆÁ¦Û„þ>RÉš¡_–^³Î3Ÿú4Ïßw9ôXŒÁÛocäúëè™›…T‚ž\Žm#.;×èÿý÷ÿÛï¿Õ‡…®c¢¶m¥vö Ü×_8ç8Lg2¤S)r¹–e!Þ"CtË"±e Öî]TÎOQ=t„† Þ°Ýf¾^¥Ý[$•ÎL%1uã“#ИؿŸgÿúohWWPRv…_ŽŒ n¾‰Ä؉TŠt*I,Ƕ¬ÿSûO;ÞJ¡k'ÃŒ;]ɘ™›ã؉ã,/-ãºJ½½€B¡ ˆÅb$z HÛÆ+äQ(TLJÔâÈK/q~r’j½Ž ÃKæ‘Ïñ"µi±L®ëæZMNMLÐj4pb1'NÌ´Þ1æêí3DÓšF2™"¶Ê A«Õf¥Z£Õn#eˆz››B`&¹ž©d eÙ47oFê:«nÙ¨T¨¼úç&&¨”ËxArñÁòÄ$gŸÂ7ŠÈÎF=ÏCÈõôÐ?8@:›Á´ÌwŒv¼ †DH ¡i:¦a`è‘û‘ãRR†!(…†@¨KgˆÏúÙ𽦡é:¶iaXJ€ÃÏåºÏèJa¿qŽó§N1?7O«ÝºH'y‘ˆc à‡AäãD‡)B`Û1²é4éTšxÌAÓuij·¶Wñ&ª#.znõß•¾«ã:u†×¨T*¨P¢eR¨xœPIdç)@)¢J¢º¶] !eH«R&¬×R¡ÇãØ™L÷0„®­1E4ýv Ü-›1–—U¤‰±R™ò±ãL]w=ãcc$ãqLÝFÒÇy„ü¾p¡ë?äºýhº†nè†~3¢#ôÛ-꥾ç¡ñLËq":5ÑÝWµT¢Q­"H%‘R¢é:=½½X¶ßnS[YÁó}LÓ$•Ëašf4Ç›hä›0D =Ùï>ÂäÿŽ•ƒ‡¾GòÚkéù…Ÿ§^«­B"K/h‘L Aåô)Î|ù^¦Ÿ~šV½Ž” #îÐ÷Þ÷2ö‘!™ˆcf•I"a91«÷À‰“°²‚´À‡“§˜<÷;vl'דÃ4-Ðt&^|‰ÊÂÃ{ö0;7Û=ìU%’«/44¡u¿¼V‹£?Áó_ÿS§OÓCtÅÑ1®¿û.®¾ã}dòylÛF×4^~ðøÒŸ~Š¥¥%BR*2½E~ýÓŸ¢±¸Ì“_ÿG_j£Ao_×ß~wþì¿atËâq犡Á"}Ÿ3ÿç/9þ‡ˆW*¡ ƒz_3_'õ;§¶Ñ…¼B­ ¹¤Š‚:!˜}ò)^üíÿÂÂþý˜{÷âüü=(¥Xþû/3ûGgò©gØò›¿Áȵ×RÌç‰Ù6šPH)±t{Ó&äîÝÔ_|±»Flažù“'™Þ{5CCC$âq¤ëräþèÙ¹wЉüÒ¥!aÄ¡PI‘V4Je¾õ‰Oððß|w¸å—~‘ÔøKgÎòâÿžú7øCüØ¿ÿãÛ¶‘N§¹éC?IÓóøÓßøOÔêu$Po6¸÷SÎôÑ£ØÉ$mÏeöÂ4秦8pàUŽ<Ä/üÖfÛî]{òرØ%¡ÁtGcöÑÇ8þñÿ[*j‚“;vð­·ðÚïãÜ®¸ç'#‡©Dm)¥@èºNùÔ)^üÍßfnÿ~¤a2¿u § –c6Æ-7ƒa°øÜ³þôÿæèk¯1·0빑úwR˜:ñL†üm?‚î8(0[-ܣǘœ˜ T.á…!ó'OrþÐAŠ·ÜŒçûÄœ8h‚fM]"?§Úmúã?áþ?û4µ• ù]»¨¥’”šMò{®bë{n¡ÕlðÔW¿ÊŸüÇfyq¥iŒì½;žèÎÝ®59ôòKôß´[ïù·ÜqÏ= ŽŒ¢R)^zöY¾{ß×8}â$¥J™0.sò—1UÞJ…7þê¯h--Pv¾wXò=Rù<‰÷ÝFpýõ]£X³­(EàzœúÂß2ààZ&ÇWV˜_˜'áÄ)lÙ±Xd‹_~™Ã?ÁÙ3gY©ÕP¡ìJ´P`š&ƒûn ½kתS`žŸbúÔiæfçhTkyàAìB£¯¥ét MhkÂÒ¡SѺÆÉçžçáÏ|†ÀóÐL“ervrÓ0bÇû°bAràÑGyú[ðÆÙ7hÔꆱ!Ö €j"Ahù±QwìˆL0Ðö<ö8Àë2??ëyPâR=q‚¥—^ޤKÀ¬a°‚b°¯ë®½–qó-ÇÇ ‰rN«šNsi‘ó<ŠìHt3˜©×°l›Á‘aú·lF7­è½z¹W_åä©S,/-á~w2 ¡ëäþ±;@×;.°VªÔŽcâü$S'Npì±Ç(ܸ_J,Û"‘Juáì}¬–&Ð… ô|¾ÿÍoRZŒ/P0»REII__›6mbÛž«±€v«É‘gžåࡃ,..¢ ºfQ xJaš&Ãìݳ‡‘á ñÚÒò2Q¼æ{(%7œþFÒËҡø• ef"Á¦ñqvìØÎÈø8~6Ë „ˆPÇ(¥hœ›¤15ÕÒ BvžŸ&ÏK”–iúA»ÕYNáÍÍ155Ey¹Äàðp'Œ´A;cËûßÏÙ¯}ÒÄDôž ‘gÎ2yö ´§q]—øŽíøA@±P$ÞñcrÝÖX 2”z©Ä¹¯²ŠC¥hùÉD‚|>O&“ÆíëCïäÍ4Õé œ>vœ-Û¶Ñ—ÉvBÖÕ5–eQèéa`xÑñ1²™ìað\—ÊÊ FÀ÷Qâ ÑkÍ™|ßGДÀ× œD‚|Ož\6G"™Ä´,ÂtÖòER@cqÀó;“jJ!Ûmj:óós8É$Ú¾—Êâ"‹ËËÔÓibžGÛuñ}ŸPªJ1Ä4t²;¶1xûí,OLt¶'°—K,¼~oúÃW_M[L]#•Íóü®]“ÐèPVÍL£Ù`an¶kR$Ѻ±˜MÌq0M ;Géz—±íf“©©)ææIš᪠væ0M“x@½^gdt„l.‹Z©m0¥«L! å†"fi˜†‰išºŽ®éÝ= ”’z­F¹RÁ+×´CD)„@3 t݈b¡m(U(Ñê¢xíŠ ŒT :æJ½£†¦¡ëZ½¬OZ¬¢”£'‡°,ÂFô­¦¹Pb:éd’þbò¦í¹˜¦I.—c`h'T·IžÂ0 †÷ÝÀàM7rê±Çº¨Î\\¤>:ÊT³IÊ÷I§Ò$â Zf÷}µ*«4 `Çbäzû˜šê˜Ðu4ù„Ðë¤Xha(#)—kźçÔS¶Aà»±BâÍ5DI…ؼ‘H6 I))II(e'¡E›êâ¥;µ#g`«¯—F¹€ŽbÀõpM‹ž|žñ±q2Ù,†®ã6›„í6‰BÇq0L£s`‘´ ±D‚lo‘ÍwÝÉÙ§ŸÁ÷\‚@¦ Þj˶ééé!ã®…‘¤tO­ >Ä2†÷\ű¯Dµº”)£ÀVW¯#ƒ°Ë̶e³,lËDÓ´uY€hóJ)‘Ð=úõfSt|[ä³.ÖKQ–’¤ö\…5:JHåzZmôV ×u Âv­JýüTäC:‹I" ‘J+)Ü~Û:“&¨VIÌ/âz†m“ééÁÑuN~ösœÿ‡‡@DÅ.¡VÕ:²·ˆ—5˜e³õŽ÷Qر½;÷Ša²dYÄm›|¾‡d*…a™ ­A^©Ö¹¥’¶Íž;?@2“‰ÒüJb~âJ@ù¼v+ÒMà§“$2i2™ ±X,J¬Ó(Më´kJä74!йTC.ÃHÓÿÓÝ@¢Èx.}SXž™aiòüaœÍ[;R÷=Šß‰…û¿ÅÉäµÏ}žøèÇ8û̳X»w³¸°H­ÑÀ¼F+Õ¾ ‘²cý… wlŒ-ï?¢ãÃ’ ì\–¡¡AúûH¥’ºA躑­îðAÒ‘þN¾MI…ìxÏ­\÷?Ùz¥°Zm¼U€áyœ|ý Íz=Z/—ÅìëexhˆÁAâñx7OºzðBEB­:IV¹.®’áŒÌ­üÁ>Dhå–m3ü‘0wà5*?††l9yŠðó_äðW¿† CÄв\Ð_«“>t÷Æi]=Ù;Øô«ÿãü'ø.Dðw¥BûosðáGJanÞÌðÇ~™Yߣ93ƒhµ¨>ÂßûA«Iã•Wp y*#ó¸CC¦‰í8l»ó¼úå{)•KøƒŒŒŒ0>6N¾P? 49É+÷}z¹Ü‘ÜH “ÆÂ"µÅ%šÍ&Ùžé\–÷þÊG)-/qè‰ï!çæ¨:Í…7ÎQ=}†Çîý ºi£QÈ384ÈÎíÛéÉd˜>|„f½Þõ BJôF“ Õ&ð–Mšž”xºNÓ‰ÑØ¹ñ£ï%Ȥ0M§Õæøg>á{ïeéüyBÃÀ]X¤}ö ªçèÙ¹‹d6ƒi˜©$Kç&X’ {÷.¶lÝÂu×\ÃÈÐïûßþø'8üäSøRêžÕ„”Ê´ffèß¶lo/–mK&Im'4Mš+5j“œþþ÷9ùòˤ ÆoæøÉl–«÷ìá†n`bÿ+Üÿ™ÏPoµPºN( D¶Zd2YFF¸ï/þ’W_y% P5Ph„aˆJv\w ƒ##$“) ]ïjÊ¥ÉÅ;“q‡MW]EëcåðÞ«9wêÍv»§7"yÍ^ؾ U*a×ëäb1úûéÀ6-b¶M<gÏw EŽx… ““Tk5tË&Ñ[ÄŒÙôÙ1úz{b|û6*¥““œ:ušéÙ°mĦM,×k¤J%ŠÅ"Étš›ý×pd®´ÌÐÐ0CÃÃ$Ò)®þð‡(ì»Ù 3œ8y‚ãÇ3y~ŠF«‰¦é y[·R NÜ!•N‘íé¡·XÄI&° “Ñ‘âŽCÿàÓ.P©”ñ<ŸD·Þ/ELè„´âPd"7¦/ÔÆ÷ÕÚAvéZ]›nvÓsÏ»”jcH­œu4°žîµ>•UZºÌX¿G¹®o3z¡6n7µ¾~ë¾9wÞ}{÷î]Oc¨Ê•eõÁ;? ´œ~÷ÿïÿÝw~@•+ËJ©PI( èPï^¤úçB­³¬ó!‡â±G¥Ñl\j²ÞÿäC)EÌq¸«c²ºmÍ©¯wXïŽÞX툆±þc/ÿŠRø•ÂZ #FO&#ߦ½½®ñ°í4Xét7zå2ùœ·¸Üj·VÇLı;4µ«5Úµf,†“ËFhG4«UZ+Uìxgµ'¬ƒˆ~Ы æ t +‹‹L9Êö÷aÅbÚê ·Ùdy¹D2‘ •NGâ g÷š­„’¥^àÀ/þP¢ïÞ Jav‹üâ"èyù¾óßþ6¯ýᑾõB!˜~ü{XÙ,šmGÍBë¾s)µ¢û¹@cáèQ¾û»¿Ç©§žâèCß¡çºkAÓ9÷ü |ñ—…Ãßý.Åë®CÄbÈv›oþîïñµ?ø#RƒCÄûûÐt ÓУ˜¢;¿Ö]aÉ äÕGÃI§±lkô^¥§¹²ÂWÿìÓLŸ›`äª](MÃÔ¢â–'Nð+ÿúgY^Ya×5{£ô‰®wßCa«M{až@JÎîó4z‹4‡‡Pµ:Z»5+¸.îÜÒ÷pËe‚zaÛ¨Pâ./ã./>õÅjÕ*j|œ©‡¾ÃÑO~’ØÕ{ðMwq‘ ÙD ·\ŽˆÓ.¤tW*´ËåŽf ^ùÜØÿ•¯0üÁ»iÛ6Z¡€³1œS¯¾ÆÔÁCø¶Þ[¤6}3O>Åù“'»û.|-*+Ò÷1m¯Ñ <7Gà{ÔËeÚºnðÂýßâ³ðŒ\½#î°²´„Ûhz.ÍZ ˲˜:y×ó¸æŽ÷ár…V³‰ßncZ~rßgÿ/V:ÅØæÍ(NÜÁ4Ì\1\Ï e…ÿÕ¹Œ±QÂf‹¥¥%æz˜úù)¶l&¦™[náÌoþ6Éë®…AêÏ=ÇØïüÂ(?ÿZ&°mÚËË\xøašWï¡ôøãÔÎãØ“O‘[Zfþó_@ Cöü×ß¡ôÒKlúà“ß¾˜msþ©§9ûØã8#ìLM±ëçîaúø1Üj©Ù9ì];Y¨”É6‹˜®GnçN*‹Kyè;Èá!r^€U,à>§Ïœ¦Ü¬óúë‡cenžM7ÝHÏð0ñ«¿Æ¦k®!?8È‘çžçCÿñ×xáᇙHz×NJÍ:_ÿÄ'˜º0M½\¢Òl`mÙÄ©cGyé‰'PŽƒnYx©$3KK¸R2;=Mzó&vìàŸÿO=ù$ÇOŸáéÇçø¡C …3³sÔ Zõµ¹9jÍ&“ÓÓx®ËÔÉÌÏÍ#•Äu] Ë$Ó“#›Ëâ81 Ëd঱3Vö ¦i¬ÔªQÆA@³\Æw=.ÌÎQm4Yš™åÔ‰ø~@¥Zcjj Jfææ˜››# C–––¨V«A€¦é´Ä¨U«¸­No‘[úC¤0LƒƒÏ>GµT¢ÕlqòÌiZ®‡çù´]/Jé\ü@†HBâ×]‹Õ“§ú̳¸‡Ž \ Amx±\B9Š71_YAùn£As¹„ BÚõ:Í3§i]íñqªç'iUªÈÀ§U«ák" 1ߘ@¸©‘Š·ßŽ´mêºN«Ñ¥ˆe³ŒÞñ>KË,9Šrâ¨þj¥R´±0$sˆÇ㘖…[^Á+UH ŒÜx#f/ž&¨--†!a³Ejó&bÙ,3GR™›§¸s'Íf Ïu©Õª”––Àf­FÛóPAÀÊ™³ø&Ò÷q=—j¥B¨ ƯºŠF¥Ì̉4gg9â8/>ó Õz·íâ¶ZÌNžÇõ\<·MFM—«§¿¹SC´\ŽV±@}j /'ܼwhˆêèa6‹åh›ÆHŠØÉ$nobz&MÐ×pbÄ}}loëVL¥P…²¿{x«P@+ˆ RÌfH‹ø=9ô¾>òù<ý¤2i2Û·ÓhµhUWˆßpÆÈ´Û˜ù‚Ú4†«kô÷õ3¶iœt*Ûnqaf–ÙÙYÜV+Êžêžïã5›är9¶nßNÿàBÓX)—Y˜_Àó<Üv×s1M‹¶ë²´¸ˆcÙdò9”T´Ü6"ìÜu‚f£Žïz˜1›Àp}/º×¡ S(ñƒ€¥¥%ñ8Cƒ‘y›™¡Ýn“N§±-‹êJ•J½† \×Eº¦s¶mÙ¦m[Éf³Q¼òÖP¦A.“EQ,ð|”Da– ˜mc…ž<ÏEÓ è´ Ù¶ÐD÷~¹ %a ›–aâM;Æ|"ò9ì\–lÌ¡··H"Ç0t4'N_±HÜqh»m@ ëAÐn·IÄãä²YLÝ@)…‹‘Ïç£K4šµähµÛ‹E ]'™L¢ ëyQ=§sy§ÙjE—ut-ò9RF7tUt‰x‚ èÉ÷³cd2Št*õ˜&º¡S(DÍ¡’Ý+b­U)æ\rËìM5Öºì|Ï'‚¨–ÑIwëºÞ­-J+©ºÏtªSMë䯢s«6!º®#„aH¬ÔkQ›(Éårz{IÄ£+gŠ5FJ);j Ã4Ù)Š©Pv?W¨®*©@Jü0@hº¦£ åZg™¦Eôt[V­¶šŽhº¡$TQMÅ0 „пSë!꺗Ñý}%ÖúÝ„ŠILÓŠª…ëÚ…Þ’†D×Ít,[t*€‹J©¢Rˆ°Úᡈj&Bt®*t6©4­ÖÊ JJ¤Š$Yï¤(’‰$N,Ö¹r¦uÒ4Zt/=ìE§™©"ÄÒa¼êü6VÓ"«%3zÞ £V Õ(YÉλÝVψún_•êÜ ë´EÙ„u-Ò_«ÕáÈZme}wbÔ¬Åø«u•·£!©Kgòo|fõ‡¸ü3ëï(¯þݹ«†!ç£P¦‰©—M- ÖMòVR`—+–­§M½:/7Ï×ZwNÿˆÝÿV¹7Š^&­ƒ%tEXtdate:create2016-06-30T10:18:08+02:00~­v%tEXtdate:modify2016-06-30T10:15:43+02:00ÄzIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/dftb.png000066400000000000000000000104531316323560300234530ustar00rootroot00000000000000‰PNG  IHDR22?ˆ±bKGDÿÿÿ ½§“ pHYs  šœtIMEÞ  9Òb†>¸IDAThÞµšÛÇuƧºº{fïËÝáE\ФHƤd›ÉZ˜v$Q4Ä$Žr€€P¶?0 ~ð g?øA, ¶•(’lX¶ìÈ ‹ñj’»\r¸WîìLߪòÐÕ½5C¸ÆìÎTWÕ9ç;ß¹T õ²–+ßúÖ¬äùÃ6Ï[6ϧlšNØ¢h¡TK`ÒŠŒY6Ð4Ù]»TüÜs’¦)«ßûží^½j0&º:X»fE–¶XÛ¶°"°h¡ÖgO¾òÊÛ"ò‘¶'—^xýßùNýå¥o|ããJ©§”Öû$£Ô‰r´€1` 6Ë0Y†MSÈsP ë5"káÁ‰ž{Ž,MY}ùeºW®PƒÖZ”RXc°NQÆÚú÷rIÁÂëïk/«(zóä+¯¼WíõçŸç©3g¨Å½øå/ÿ¥(õu‰¢S*Ž‘(BEA„!aÒéõH“„{ëëiJC)¶Dy·K–eå¢î6€ÌÌ Ÿ{Ž<ÏY}ùezW®å9XËF–ñÎåËlœ$!Bw6ÄJ‡!…1Æ`=p¯ŠÈ·Oþà?еi”úºŠ¢SÒh@£Á­µ5–X]_giu•åÕUæ–– Ù¤©5Ý¥%¶ŒcŒá¡­[ydÛ6v·ZdÆÔ–!PJ!"J¡‚qÓš?Û³‡kóót’¤FÃF¯G¦5;FFhw:´â˜©ñq†£ˆÖÈR(xÆ­Ó/ˆÒú”Šct³É›çÏóû‹ œùÚëëœþÊW8¶s'6Ëh¯¬ðï?þ1KKKÜ\Zâò;ìÛ²…/<ö½¢@¸gÅi

5†VoÜ:ŸÁå`øôë¬â?¯”¢0 ³kûöÒ¢^­n6ãÒ”’ ˜ (³Ú¢ –j6QY†ôzà!Iû,=…öíÛ¬ýâyNrí» rkÁÚ’.+jö,"î{Q k-;¦¦X¯XÏÑ5›p©hiq‚TŽÞÙØ ϲšID„Ñf“¬Û-ýÂZlQ yλ—.‘e*ØèõxüÑG90=Mj Y–ñƒþÀm"OS|ò“™™Ù žJ•ÐrìÖGé%*Š8ôÀ›¿{ P‘ˆ´´™¬¸kYY[+Ôsàá(Âll”8Ë%yνõZkV;v8ÀßÍΖÁÌ‹Êsâ¢"€Zi¶f8g‘*FTÁÓ:‹™Š­ªaí¤– «XEYËòÆFóW×h—ÎíRù•þõµ×Ⱥ]æ{=>ÿÄœzäzNk-…Çó^ÍÓí+(yôk¬eimf£A·Û- ›G*¶òá©Ô˜¶0,JQ×ïÞå×çΆaßà 7oòóßü†¼(¸zëç¯]CFG9|àÿøøãŒ„!IQ`¿WŸ÷]Žj`qy™kss\¹r¥Ìj+ëå9ÿöê«lçè‘#%<½¼O Ì k+2¤‚€ÿüíoùC»M3Ž™nµÐÇJ±”$„aÈþC‡xò³ŸåÐÖ­äÆP¸"©ª»1u>Ä€0Uæ .W¦†¿qŸ~Zb}XnúI(7¾û]ˆHZ;©"pŸ Z³Ö²0?Ï¿œ9ƒö£»Ó|‘¦,8¥l¡Ñh”?pmß·ãÇßG•BíiOy{±ºwò¤.ÐTá¿*ˆþXO©bc-Ëo¾‰®„¸€¯|ÿû4šM~ùâ‹´Ïž½ßmDXݾ쩧J8þÿ.Ñ…3iå bm)Ç}ØõLlŒé+s?Lkfó¾4äOqi~úS+A âe¦â V(ñ¡åœ[œUŠ HÓ½ÙÙ¨¯m"üòÅQJ±qíZÙÐŒ!"Ø«W‰ÞxãÃ-òQ¡•ÍÏ#TíãråÁËwº¾âÉZLN²pü8YžS8ƪûÖÅ‹5œL–ÁŽ<ÔjmÎãÆînµ;wúhU¼¤Óºµ¨>=pÎntš¦i TSswî”´ÊÙýºÁƒšõ&4Ö2†ŒÓl4ê1yQð£>èó«½ÓÓ<¶{wý¬~÷þûܺqƒ¹ŠÊ‹¢T†µ$q³I 5Q2:<Ìž;ËDÔc0 ©Æ˜nnL3Í2Þxûmt DX\[cCk¶ zf\Ïs¬ÖôÖÖØê ¨@)ƶnåsÇŽaåZœ÷¡¡ò-§Í¬(œäƒË—éÜ»×7öv§Ã±cÇÒ”¹7ȳ üîý÷ùóGejlÌgÓ®²Öv¬ÃwE˜¢`Q„O?Í??û,8Pk®åAÀ?}ñ‹|ùK_bÏÞ½äEQ&xEQ¦êN£J¥ŽlQÔŸNOó…'žH;·nevf†£{öð™Ã‡1 ýÇ[o±–$e .•ÖQ¶(Ö¬1„•%€¯>ý4{FGéözu«®,Ïét»è¢àèþý|úða WÅY¿öø6üݸÎ~š$LŽ÷µ®}nÛÔT_:<4Äÿœ;‡¸ßmQ¬)cír%HÚëññýûÉò¼\ÈÚþ20EQvÇC?43ÃØÈƘ²½S;äy\«»Ú¸¸»r^ë´Ý—ÊA© cȳŒ‘¡¡>»—$% •XÖ”,EAÇöMO×ÚtôÕÖr¯âKÓ”]Û·s~~~3qÌôîݬ»ú£¸x‘ÝÓÓõïUh=ßa  b¼zß§æªA^)T¬mkkLÛY–qäàA¦zãf@SÎÓ<¯¿˜™žf-ËÊÖ©£ÄÌ>=;‹=uª\üg?Ã.,`Š¢®)¨Î<¼ŽŠßæ©Zn·scy™S<‚)ŠŠÊÛÚ³R ~xÇŽ:R+¬k“HòœØãùHkŽìÚUv;ªºÛ53ªXQ8˜TÐðãÀ`ŒªF7ÇÂÆ&Ï µæÆò2Ÿ8xGG7O¿`EcíbmV/c­úR¡R¥e¼Ü¨—eDaXj̓“xP÷¿oIë4X­a¼ã3ˉ1´WWYév9éëyŽCþê3ŸaftãY_Dµ)"ËTÁ5!¬«!r>²™Ó@7M ‚¾^•¿qÅ•rÐÁU{È·HåÞØsssœ½y“¦1L3 ÌLL Ó´wëú‡¡Á“ 61Fã˜,ËÀ˜wkA¬1—ëE<,Wnz‚y¾i=6 Ã@ÇŒ©}L¤Ü”×=Ñ. Vc:îFD¸²¸Èì¾}U~w¹>zSAðfáN¨*ê}|‹ R;h_ËÇ1%–´è b<ò!ÖÒsoMÔcЋCQ3·¼Œ®¶Ûøa¦Âc A½Y[ä‰3gÞó1l=ê,Š‚xxxãÆ°‘e„Ã},UÝÿƒ©|®W=—æyŸ ÃqL·Ûk £ˆß/,°º´Äååe>wä·l©÷ùÄ™3ïõ½ù`­}kŸ©û«"˜<ç××®q÷Þ=6Òm-#îe€÷çæ˜bëØØfpòJÔª¦ïë“UqÄ{©&QŠ+ívÝN† ®ÎÏs«ÝæZ§ƒÍsöîØÁçwî$/ — Y‘Wý@]ÍümwZúŒq”&Àg÷î%toþ¬$ ·76¸×éÐ^_çúâ"íÛÇh•ø¯˜¦‚Zõï죉°Øéðúùó4Âòå—ß…#ccüõîÝLDIž×M<ÿW¾Ý'ˆ{Uè'Õ *¯>ý “¦O*‘}…1‡1'¬µ4EØ;2‚©¾¬«QülÙ~H§ß/DÇ£ˆ¿=ztó7çWÖ«ÉE„^žôלþï÷Î,¯>=Kž?,в0%0aEZ@K¬DdL`hZ¥¢`fF >-¯¼b‹›7ü‰^<û_,ú¼»_ÈžIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/elk.png000066400000000000000000000040331316323560300233040ustar00rootroot00000000000000‰PNG  IHDR@2ìƒÝsBIT|dˆÒIDAThíZmPT×~ØVaÔ•­Â:nkñįH0GÇ™Xj£‰Vc5u¦áGBÁb´q蟴D(¦ËèŒQ±è? ¢•T£¬5XªëvDeý¾O0^Ø…»,²aê3sfvÏyÏsÞóœsÞsî¹7Œ$ñ Y¨5^jB„ÚPã…¡v@ \NH‚$<Ï òg;yss3Ž?.æ5ÜmÀ†åž”üµf³&“ ¥¥¥p80¢(%%%p:0›ÍÈÉÉAkk+N?û!®üë ¼^/.|}‚ €$ª««a·ÛLvrssát:Q^^—Ë…w~ùNž8 APQQÇöövlß¾û~¿555XùÚJäçåã\Õ9}bUü£*•ªœT«ÕÌû] sss9sæLªT*>|˜Z­–qqqܺu+ø¤¨¨(Êår~uê+nyw cccùðáC‘{B ‹‹‹©T*u0 aƒò†J*•Š3fÌ`}}½÷„€ì¡ôP)U*•¤L2™Œk×®õùg#\C¨©©Á·×¿ÅÓö§˜8'DèííEYY a±X†´Q«ÕHLJ„þ=ŒõFI¼Z­Wê® »»‰I‰HYœ¥RÙo0îsyA Õjeii)õz}ÀS;Ð$“ɨ×ëyôÈQz½Þç³HÂÖmƒ¥É"NS·Û [·  ž¦466âÒåK¨úgÚÚÚÆÒ…!—ËQ^^Ž-[¶ŒÝ ðz½¼~ý:?øÍŒ‹}î£lÊÌÌ$9F»€ÅbaVVÃÃÃCÞ1)iΜ9>>ä*­zm[·Œèм¿óýwv`ÒÍÒ±¨¨ˆÝÝÝ’üzliiALLL0£†R©ÄüŸÎÇ|Ã|,X°©KRaH2øtFB°3Àb±„d¤—-[F£ÑHA‚ò? Úž´±ªªŠ t8$ɦ¦¦qï|xx8ooÕñg¼ :¬Î\›Æ›GTTÒ_OGÄä©c†ˆÉˆŽ‰2©JFÊd²9Ôh4lkk“ ùJ¬½£‚ !õØaùò刊Š.É<}ò4¸†d2„……TG§ÓazÔôAù¯gÌå×/©†ÿm( 9ruuuHIMÒ622ƒÁ'Ï`0 ººxkã[X·nvþz'о(Bõ×ÕÈ~;ÛÇþ³?~†;wîàûÛß#--ͧÌüƒYªÛ#CêZyïÝ÷ú¶Ÿ¥ËÄ<·ËÍ‚‚ªÕjq}ÆÆÆòÔéS¼pá‚OÌX¼xñ°[V~~¾hýR4­V±ìܹs>1`îܹìííåª÷…$œN'€›7oö)?æÅš‹¬½XË®®.’¤Ýngllÿcqbb"].—ß6 žžîSÖÓÓÔ”±<,,Œ…* ú @J þF=år9ðó?.™<ëgY>£ÚÙÙé×6//O´ÍÉÉT~ÿÞ}ê_é¿5ŠŒŒä7ÿþF²/þ0b ‰¢/Šàõzk2×H^^s房[Z[ÐÐÐà·–Ç-âÿÔÔÔA6³õ³q¶ò,4  §§Ûµ6›M²?þ÷ ÇÃââbqôèv»%«[ö÷2Ÿµ»mÛ¶!§­Õje\\P©TòöíÛ~9/_¾Ì)S¦ˆœ;vìñ‘w8øÀëõroþ^Ÿ:t( r›ÍÆE‹õaUá¼uë– üôŸöÇŠ¤ÄaE_þíKqPär9+++òk ü púÌi* ŸÀd·ÛnÀd2qÞ¼y"OjJ*m6›X~þüyŸ7>'Ož‘Óãñp×®]bYºY|ôèQÀ¾‘Þž.6ðjâ«C¾U‘Šöövf¿-òmذV«•—j/qÚ´iú®¬÷îÝ+y:÷ôô0##CäÌÎΦÇã Ø7¿lÚ´‰ñññüø£iµZý™I†ÛíæþýûÅY•œœ,ž¦OŸÎcÇŽ¼­µ¶´r¶~¶¸Ξ=0‡_œ.'{ícsØx†g/9ÆFëW¯Žš³®®Ž“T“€:ŽM–¦€ê뛡{÷îqÅŠ>(•J¾¹æMž9}Æ'6H… üdß'"ßÊ•+ÙÝ#í:ŒGîþç.u:]ÿÁ(:zÐ{ÍO4ïr¹x±ö" YRRÂæææQ·óÝÍïøFæ>Û÷îÝ»‡­3.ßttv ³½q/Çvc; x<4ýЄŽÎ@LL ´Z­_ûÝã ñ•ØóÄ Bí@¨ñ?WÛãrwr IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/emt.png000066400000000000000000000016361316323560300233240ustar00rootroot00000000000000‰PNG  IHDRG2_ÆmsRGB®ÎébKGDÿÿÿ ½§“tIMEÙ ¼*¥É3IDAThÞíÙOˆ›EÆñOk+»kiê‚«E]z° ® .èIðª‰íÛ±#°ŽWR@Ò¾3*¿š*?úYÂP~oЖÕåhæËʰyÎå¨ä-›pëhÁ©ËÙ¬Þ²ã,8u9e·õ,ÿêK8{í´Ç·ª˜¬hÜSrm~3pjfq¯1›pTÎ7¿“žIù͉¶íË™½·¿ܲ¹LÁ˜9E‡;ÚK©¥Õ„s<5ÊÓaifåO§°¨è•ô5ÿ˜Ï±\”÷’ÅŒ˜_ð`ØÎ›p~ÅaN|ƒ¦üñÙQ©ÁÀÁ¹½‹¤±¾ÚLÈq*aF4d«xä¹?b×ðnåu'pwa*,©úÕV¿ä9µäÆU~á´|GÊoFÎ4vwWJyÐÍœ•ü¤f¯»%Í4å!8Íüd³Šš§ðlFLi—y‡qÄó*¸ 7¯Š¹®gA1$}#g·ßRèyl\óœsøÇ{‘Ðõkø_~ª95ÿôËpú ÎË~ê§áôê«Çñ6®×8C¾˜j½ ZßáN³áw$ŠáóŸ`6<°î—x2\÷ϪⴜñìÀÀù ¯1oƒÇÔ|ݶC%¦% ´ò²‚1P¶<+­C’5ïÕwËj²‹í½Ðqe[°ëÉŽS›¼²-6Êe€éî^}¶[êbΖ;®œi¡èÄÈYdh48Ÿ®1ÿ à xÁÉàEM}%Qõ´%|™ù¨¨¨¨¨¨¨¨¨¨¨¨¨¨AÔ¿ºÕÂZQÓNIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/espresso.png000066400000000000000000000562761316323560300244140ustar00rootroot00000000000000‰PNG  IHDR^”Û/A|bKGDÿÿÿ ½§“ pHYs.#.#x¥?vtIMEá §E IDATxÚì}y˜U¹þûÚzŸîÙ—ì YKdeq "p•{ñ‡€¢ˆ¢^½ŠÊ"Š(zÙÜ…èD e²MfééžÞk=ßïê™L2=É$™ë}žzfººªºêT·¾óžo!L¼J¿B,g2˹`n(MB¬dR6(áz‰ý^%£2–“Àh$p=37œ#° @€ÈHœÐPšˆ¢ ‚ºQRÂõ6ðo W’*§5Hç}îEÞ`/ÊD €Ô„² B» Bû³ixC°gfTHÙ –‹¹,§‚e˜'ƒe À`©‚%%˜%ˆ€ïИ&$@þZ¡8e ”؈µ$ÄzXÁ$^)%”âàq  Þ=‚,õÖ³g}žù~vÊ I,=Ÿœ€PaZĆú©úçD¤9ýz]¸43!–îlHyØ; ,ËÙ`™‚tÁìÒIÌÀÀrû_éUâõÿÒ°%€„¿@Bñ‰X¨`¡¤‚„ (šR·‰§™”I(Ï@ˆ• u›ˆ8@€€xwIb•Œ`§ü-¶óWÀÎnðl@zª¤$T@1-Ò〻Zø"%Üèý ­Zž7ìÈ3 ½cá9!HÛ'ZÏ©ªçÿ_]ÇÒ¤ã_týõÒÅ å –>×>Ñ‚À$!@¤V_:þBB„HÑE$t@1BÛR–‚Ä¡¨Ë”pC9xLˆw$¡å·œÊNá·¨¤ ØÀ)û„5h’HT¤†= Õ{Ðãç)‰É¿œpë¶Ü7•Ù;¤wKç(H7ÏK§ú‚°«°kù¤ë™þ:Ï{N•x«¤ñf^ý+—{När°‹`·òì*A1˜|‹—PÀ…R hÛ?`Ô½E‰¶”ÆÝº-§cÄÞ; Ý3Xºï„´›}õÉtˆT]pLÀ-ƒÝŠÿk Y¸<(% ÀD Ú¶ïp x ¥ôå ÿ¾ô@B«!i@ZPüuР%ì·—jä!´åêCꯔHSwðèðoL¼^nó›¹Üó6k¨ôƒí"àUªCu\•ˆßÊSà -„R Ä$P¤å$¥nê£ã#%d‰Ø Ï}K÷ýöB¸–ÊžY%TpMŸ` à”ÀN p+U‹×­¶Š2$ Z¡Pt@hþzRª–ì0â´|¥7$Q@ºU¢·} Ú5·®¾”ò©†@j¤*ÅD- Ò¢€æ¯ƒ®nÚBBûínõ%ª¬àö3¨ûzvKÇr%­q¥03€S;&H:àa/“¨H ƒ= ÄPC`-2À>¯,÷Mf×¼€=çÿÁ3ÛàVÀžé[¯nìTüs³‹€]¬Z¸–o’ðÉ5”ª’Ox¤†|]zˆl«“dD9óU%ß!‹×·z©ªsU¾ תyè<àš€Y# ¬„@z ¬Ç}=܈ƒÔ¨oëÑI¬F¯„¾¸Ç+õÞNª¶FÁd\€ÿ6Ä »ÐŽJ?`öƒÍ*™˜>ѰfU­HP}픫ÄKá†ÉûD¸•t <çvÊÀ3§³Sö-ØêÂv°ó`»àÿuLßÚŠoaê ‘ðÉMùzëà¤× 6[Õ¨}·8ªÊ;[»>ù2¶“/±ôuné'ä<$_æp|f§XyÀ*øDlçÁVPt° °‘ðIXz Т èñ+H|Rÿ•Wê¹E‰¶¼<Òü[X¼f=›YÀð»äïÐDƒ}_VŸÌ¼ª~ÊìŸ]ï¬ Ã³?ÀNå*¸ævK¾é–ÁƒÖ¤][yÿ¯[ö R1@F Jú®‘ð-\¥jÝ Õ'åHW¸ 1@ ^¥ØÀ¨B‡}âÕDˆ9 p3À­`n –*Ø IÒËAòµ}k׳§²Š`;ï¿À¬üö—‡•óå#„R€QçOPºe°OB‹^ -z¦,n»Bû¡ˆ4v€²ÅëÙVlæÀfηà\³ê+·Oô (ZUãt|[Qø¤³g„Kî1p*WÂ5ßÅnÉ€S®ZŽ%À)fle} Ò3}’×€‘…|òÒcÕI-ŸpIh¾†+“H¬‰™Ä €¶‚h+Hl( î®ül=3«2AR6¨cöf‚y X.ËùÄÞdH'Jž–6ȳ7>Ñ’]ôÉ·’ñ¯Ã)flù¤L¡” N¤—Áz ÐcMÐã_‡y‡,õ\ÇŠö„ªä‡Hâ•ì±U¨Zi9°]ìH°ÜÞïY!jš Òl03 F!xìn¼^¹/׺ žu5œRŒ«®kì”| ×ʃÍ,Øð ŒÖ£ p=(Ò „üáºï)àëºÂ`µBù+@@(ËAÊz®7÷¶I”PÊÐ_]àé¡k¨ô‡ˆe;KïH¨ò(bïdHgÖ×k `§¸]R0³àJÖ·x’,ÜŠ4CDý¡¹õIן0ë!¡>¤ü$V@ˆ-J¨aƒ9”pƒ `}u¹OVÒa–úᤄN€ýHg{¦ ·\Õs】¬ ’J}¾^]ê¬84 ÕƒC)S¹°[‰@¯û4éÑ%^±ûZ¨úýõ ÀF¼àXà‚ ®x€í/K \ƒ @%!Àû:*»³r{[Ù­|®u;…lÊ÷N¨ê¡fÖ×A=ÇwW‹4âí>ñ @‹ù~²jÈ¢/‡P~ ¡þ¤t½Þ9D¸±à)OÉJúÛ,å$Cg@‹¾‹5si12͈¡:Ÿ„K=> ÛEp± ˜9 <8”](d‚ÝÄÒ?‡ïôÊ}_Q"M½Á# ÀA¼ƒþ« ¶l÷Ñ,ÝrïÁìZ·À)½}È+aÐÚ5³àr?`fýI(R}¢·ƒ¢m pÊwÉR£ 5lBÑÿ¡~Ÿ„ú˜7¼!3„‰pcÀžðÊ}דbœ 5r1´èbh1µêÍP•àb7PIƒ­È)úp´r«žFpÍ0BÉËHê•z.…ª¯R׳‹—á³+p\–€Íà‰× :<™Ì.H·Ô}6;•ÛÙÎ7¨z(|ÙÌ€Ëi¢‰% GAÑvP¢Ã×rCIˆ®F\Rô Ôo‘Ðþ&ÂõÞþrc”HSÀ]²’ù1 í R×°;…Ôˆ€®VÄ-.õúÞå4È)û£h4èV'-°gO¡Ô£_"Íìoƒ$<R caö=ÉàòNßÓHÆÞi•ge¹ö‡Ù©|‹­:X¾Œ`U]Ã*ip¹° ~4\( ŠOò£à Չ¦ Fž†¢}„úgn°ö×$Âõ.€ßzåôƒ¤èïЯ…:Ø÷ÆÐAªÖÂඪõ› ‡öÝÑ|÷=’.˜½ ¥îªæ¾#xüØo‰—F±^yħ‘´K¾¯Ù éšiŽõqvËײ9à‡‚•›àJ(÷ù¡¾ªжBÄ'±VP¸d$=Ñ Õø„v³i:`üY•H£à>¯ÔóWõ*Rô@èuƒaÍPB`EŠ=¾§GÁ©†H[ÛüøÕ`¾Ñ+v%HÑ¿'ÂfÐ Øßˆ—ªa[ÌØ­†ÀUÓõÊ}up­ëà”/ãJF™©º¨ù„Ë¥>ß—Õ³}ÜÄ$ˆº© hK5¨ ÅТBhWb­«Ô¦D[z\í·ýŠ„~ÔÐ[ †0d ²°Õw­+vƒ ¨šióGH¯ŽÂõ7°îUÒŸQ|m9@€û ñ²4à9`Ïóõ]—}™A#Yö—†s6–ðJ½uäY?b»øn63~øqe ê"–Š=> ³…’ ä4PÝ4ŸtÃõ =‘†þ&©Æmâß„D”XÛ³²Ü{: õrRCŸ†N åù*8¿ÙŸx¬dÀ®½=ý%æv # áUÒSÂÅ ;ð%^if–î› ½SÀrŽì[ý66s@Ñ\pÁJØ6±¦U'Õ¸† ,ÔxÖÏØÊÊf?üðãŒï“[N¥nŸt‰@áFPr†O¼ÑP¤ ÐâOb\-b­ÿw»y"Ò\p½,výB»žý ©h ¡@ È+þ$¤•­ævÏy^5lÙ%fùA2’I¯’þ nÌ]"@€7ñÊroK÷\¶‹ïtgÏŽBºU) YpÀÏ_Êp|^%@G5)ù¥  é‚ÔðÙlå ”{ýè,3ëK å>¨læ@Š 7’Óý%ÖŠ4;Ðc߆b\'"MÿÖÖšˆµ¿,K=ç1)Ÿ#¡] RÂX(„?b° @¾š+‚]vÀž bI ¼‹€oÊJß§E¸©t‹^gâ••ŒÂÒ>]ëkpÍùìU¶'—nU( \ô€ ƒl€5_ö-]’ð¥[‚\?¹8Klç "WÒUk7ë“n~`fAB©ZºÓ@uSA±V ÒâB]5ô-%Üä£ üdòŸ÷ò[Ö1‰[‰ùmÏÒñ'ݬÂP‘NfÞžà”K˜DÆ53_Pƒ¿¼~Äë•zZØ-ß×:“ÝRƒ)={¨[9 l%×—ähî¡ÕõÀ–›È©T'ÌL?A5(‚ ]þg~ž…ºi º)UK·%=öIVC÷¨鎄½›À9Žá»js5š.õfÌݨ¦­ª©.)Ÿ$i¯ÒKðB àu ^¯¸í8¸•À.Îg§8Š:”\|ÐE©’,Ø`“w…Æþwð_—ÁE\ð}rµHÕ?7íË %¿ø0ÅZ@© ÔtP¼iÙ=~‰ïøCpëj£ý/¿e+Ç•{H¨sRzUòMå<¤t!¤Uk„øndákÐâ®4³·Aü ‰×+tÇnå—°Úaåªé}k×Ï eƒ¥_E˜+9 ì s'z ð·s°ã”ýDâÕbƒ9uÁ.PɃݑ£RÚÁŸ—@`@ú»#ÁEœÛ Er²y‹ùòBj&(1m}ŽôØE¬-¨°°'äkÛâ»ÏG¿ –'CÚ€kù%Š%p¡ k{U ~< ‰:ê^©çAU‹&˜x½bwÜòÙÌLB%]-å“*ÉŽé× ól¿Â„tÁæX Ì’¾µË6@Š*œëJip¹xˆ…€Ä$Ÿtë¦bm+ Gϱ¶×‚Ûµ7äÛÚï·½ñŽŸ€Ý·ÃµANp7€ &8W¨ D x¨žœ„>™¨ùk^9}® ¢Û˜â••>•íÊ7ÙÊŽJ¿ŸˆÆ¬&§qür>pü25,m°çúŽøNyxóáT»ÝòeøÖ®Ç¾µ+ 0`zÙbU~(©U%2MÄÚ·B‹¯ÄÚÒÝ7Ë·Ï-tOñŽ¥p*G=˜V³ \t€¤Ò R4) ¡  w)êÕ¾´b€@¼ìZ§³S8o;éfjr_ß,On •.‡ôüaën¦`xÐÌõÝ—  & fÅTP(JNõ‰7>¹ÀZü5ÞñJp›ÆáFÇÛûÜÜæPbʯ…]œ»i•üȶŠ €ÔÁšsª_ƒN‹ÔÐå^©ûJ´õ¹ Gâ•¥ž0[¹«QI ®ôûÉhÌŒ¯ïÚ%¿xä ñº຀çRöh™+ðú¤ËW•^ö¿‘~Y ¨A%ÛA©YÉ™’ÂõŸSê¦<Ü¢q¼Ùu“Ÿss/¦úÙ¿'ÏŒ § ¯R¬ w •4„_ÜÓ¯?ç'ßi$¡Ç«ô-Q‚àŠÆxÙµ–°•?†Ëiø¥Ú«!»–Ÿxœí`VÀlº€S-íÃK–úæÙ0$? ¦ˆ”þ¶ÄÕà ¾õ(¦R †Y úÙ Hó0bßnÏDïÔGÜõ—‰†ƒï”NEˆr^y8ïY,úª¡«YÏÔ0H‹¡^àú /©Á-½—+}Õ Ÿtý Yp1.Xಠ”=°í'9‡ô½€Á€lUxPãõ#¤ªdÌä—r}B&ˆ¥4ˆ–sA±¶?C‹I 5zÁ홈Pü^ÉÜF_GfF£b\Jƒ+dBéTcˆxY‹jø²Ô½\D[Z0@€}$^¯´µ‰ ÛÞŽJUï«æJ(ô‚39Ȭí—ó©H°)Á6ƒÏ>Æ ¶¸ZubÇœçþvìÏ–KÆ3q*1© ¢y(5s=É)±æJpk&’x›<×»éÕSDã‚r) ™ÏƒÍ Pp!•„Ö RB`5Ö" =ÞÌŠþUYî;UDš‚d:ì“Åë˜Çq%“âê¤*ýàì6ÈÞ¸ßç\p¹jÑZìTÓ>zC¡þC`o˜LÛ¿£AÍU5BÐÒˆI1(“æƒç÷S¸ñ"%1i]p[þ5 #þ$g**é£9×Êm[.0à€õ°5ÐÏ>7h¹öÉâ-´s¥\êƒìéƒÜê[ºœvÁÙªu[@¡J²eWª$;´0Pÿ]õ{˜¾Õ “‡ÈVubM!P³ eÖ,ˆÖÃL 7^©&&^/É!”ü†HÍzA´Ñ’ô“Ö› Î8àlÞŸx+÷ùÙÍʽ€S¹R–{Û‚– `o-^+‡™gz!»Ê=dº*+äåv ·Â¾Îk°à{6 -þg¶·Ù‰˜ÉÚ†oîFÊœ”)‡ƒê&ý@©ŸÌ”¿žVo¬=‹HÃçDóBGLšÔé.xý–/9”Ó@•|ÙÌLb׺ h¹ö*[ÅÓÛÀÝ6¸ßHp©J |1À´‹ 5ª©ÆˆØO¸"PÍ8H¾óšA“5(³ç‚šnF¤ékÁm‰ç¾þÍEýO?³È-AˆƒÁ<ÛÙ´e æ+AÔ^"¢WE$²V‹F^HvØ3‡]õÉõ»|’3t{ÿù3Ѻèâc+¼t'P”à¬-C„û}·2=„Pê¿d©÷nmîîV€{H¼¨¤KœËÀÛfn·t Tª¤+i¬Öªó {¾w+ 2T' Îo‚2åˆXë J|rop€U߸1Òû ou{‰›î?zó½?[$symoŽå­~ ~.¾´ºüÐÉo_AÀÒØ¬YKßüƒï­¬¹£‘ú5Î[¢Lêl–›º ‹ $}É!žëý€‘•{hË,V#çønp÷ØS‹×5™Éû|K_§õ'Áh½½¸%³ïÅ@ &ëPfÎ5Ì~ ¡ú»öÇF{þ†›¦ô=µü ¯\>‰4ÍPb±çÂÍÍß=þÖ[žÞÓc½|çÝ©®¿<|þæGù¨õÊÚyì܈—ÎD¼tæ'8}éëþ´äô¥ÑéÓÚ8sæïþÔ'졇¡nê«^fÍ Ü<ÿÑö"dÏF èù.…Y …2àJTI¡Ôx•Ì”p½t¥ö€­e×?cÿå7oòž)Àëñ€"û¹rdzö1`¢U@?s2ô“σè8êbµyáû[ƒ=ý•ÿYÔÿäS¿°^zeÎo°–¦-ûð;ä1I ×£©ÿù^è‹—˜/¼4í_~ãÃ!3¦­Ðêêno;ÏÿøeeðŠ]I™]ÿ¸÷òïq—= ¹Õ­:ÄäDs ¨a6DóPÓ!Ešß¡ÄÚ7ÀöÈâ5óEî³|‰¡`¼I·jüÒ ¶{Ð|PÃAOp¨áÞý­±¶þñ!må·n¹Ñze휿s{ú’ ºã©O^uÌq7ß8jÈŠk¯kÊ­_÷‘mýéb{ÃÆ©{zJ* cîAÐZ[  †t8›¶Àzu-d©<¦ãpÅ„ùҚŦw8—?~ée_?ä’üF‰µ¸ýknm‡ÜKí/}ÛÀ% 9à1 "¾ bý‰sÄ Àž/<Ï“××u-Œ?é  (AWeÊb“b-ŸSíÖþÖXë|èHg[÷)£}ïv÷6•6tþ€¯ïü]¥»[{ú¿¿tv÷£~ÅÙ°iÖî?å­h8öÔÍœHSBuI‰8´PŠa cQ†kšpLV>r?Š]]È­]‡Ì“ËQyzÅè¿#%Ì—_Ydoëþù³éôÒ'>vùçIKý’’Ó/W&t¤\×.ÙþD[¿ŽU@‘~p¤T§yå¾%ÒÔt§ÆJ¼ ?ò¬Â{0‘¶‡2ƒP³eÎ\Pjêjýœ'÷ÇÆRÊü®Ý­uëGDuýýs_hâŠ+oª¼öÚ¹²/3zSéêß{ZŽ?Móæ!ÑÑE×ÇÐÆ5†#œJ!9u*pøáþËà’ »q#¶>»]¿öÓÿ¨Í¿ÙJËŸYb65œðè%Ÿ¼õø>ý3ѱðHjyÈdÀe ä<Ȭ ªËbý¾o¯ë #ñAL€{D¼—&æ€A™…˜~¸G±–ì¯eumÛ¸»mô©SJxa{Îðe—^þÖþ§Ÿù_û•µ£Z¹úœ™˜|Á‡1é¸c‘œ2¤(ãr¾®ë¢ì8pëê|óñˆ->…µëY¶ …_߸#'ò¼¾þh¡ïoŸ}ê¿oYyä'δ•I“uÙ9àçë({à¬NUÀñ~ œö£ÚÂÍz•¾)á¦þ K0â†rëŽ?Ø—eÎPjÚc"ÚüØþÚX‡,ü›¹uëFsÕêšÚ¬HÄÈÔ©K`õM·h½ë×]5°ìÉ«½l.Y³ñ'w`úô“OB´©iÜÎÓqär9”J%H¹½© !¹`>Z8òÃB÷²'°åÛ·ùõîvBþ/Ë=Ëy,<¥¡¤ðü ™¼9`ƒR J\NƒÅyЇx$èRŒÅ¥ <:ÐÑ¢B™>"Öòkjûkc-üøåzCýçIUíZßGÌûÉ›¿ûíeùW^Õ»W¿|söÿùÚh¤›zïY8ö'÷`þ¹ïWÒ-‹Ø¶m …¤ †a ¥¥mííèX°‡ôyß½ˆ¼ù˜šÇÊ=üOüãο£à ùn\fß½¬PñÓ‡šý~‰(ÏysÐ+ñrU˜(â5bz¢un…¿¿7ØÉ?½÷§ñã¾Ô˜;{=i* Œ9³2ñO¸µþ๟ÜúП´ç¿sëù§Ÿ½Œ+#‹ój³g`Þ÷¿c®û"êgÌ·ó’R¢¿¿étÞN¾ÀBÔ××£µµ‘Hdûím‡†ã¿s &]}åŽ9>«¨¼VÄ‹äP´àïHpÁçp9.W³—yöif” K0©èÕ”ã=¹¦#(³g€â-¿Qê¦n;íäŸüøÎu?ýù/úV­ZHš¦ÅêëWÍÿÄ™â†Ní¹oç¦ì#^ÎÅ‘n]ɳÎÀ¢+?Ô´©ãz>®ë"N£R)„B!444@ßÅ$]¤±‡ÿ¿¢aá¼üå¯ÂymÇèârŸÄ‹–…ù3TÄJrÀ ~þæJ?Ø- />@P:@€Ý/ °é›ãkí’ P£ eÆP¬õ¡©áf~àýE¾î™¯üϧ +ž«IºíW^†C.¼¡ºÄ¸ž‡eYèëëƒãìi7´tQ´aåþÐ[þð æ‹gïË1’gŸo;eÂÎѲ¬šÖn,ƒ±-™™kÊc…âË.…>ÇTÄ•ÆÆµ¸X›€´ò*麠k° â¥pƒGázP8QŸ‚hA´h¾ìP/ ê(1hû$LBR1n‚dmÛF©TB6›EOO¶lÙR“´÷u“&aöå—|i½`#ß[*€k6Bº“‚® ÀèP¡E·ÁH¡:S†h´Oú%ÓkPaÅ`Û¯ÅÆ@À`ý‚–ÃÉW¨) Äâ«÷—†È¯[ß!r{½ãß–ó'ôk§aÐu¶mò¬¡Å¶GæñQÆ!ÝääãúÃÂ|þÅ¡užÍèÙXAòð<à” ÒmðRнÍâÕ"k(\ %A¡(Rуh1@ͨAƒ¨W|Ý·®ºÄ…/?¨¨ÜLDK(V¿ß„FçÌÞ'mwú»ß1ÎÃá8NM¿]Çq°uëVlݺét…Baét]â ÕÕaê±¾û%N1vÊ€”íA× `—oä 7‚Cõ€SIB(T†ŒØ¾¯fY‚L X ¶$˜TbHÚ‘|™Ò¢m(ֺ߯ÕߟÝÛ}Sç¼- NÈy¹®;$ÔÒh=Ï‘LÓ4èº]ׇþׯ1ˆcòqÇbÝ´Ép;7­+oñпe »KY€»$^%¼FÝ ×O‡SK4˜ÇU£Ž;à’”=°)²»úåHï2H(ÑF¤y¿!^Å“›  ÷<]ðŒÿ8j(´ÏçàyÇmÛ;,»šSeˆd‡“-ÑÄ%Z޵´ ýüó°é¾±Ãú¾u9´[%@:© k° âUc­e7óêR 7^ § HÌÒ·bIBéuÀ¦¶6Þh?úhlÚi]ï³XçæñÜú k0:ü«FîE¸ÑC¸¾Þ›©ªî;¨ýFA "©ƒªï×[­DÀ®¼d i¯îO 1ïã— (uuK÷t¿¶Ó–ì³'ƒ”¦iî@ºƒºl<50"¿.¤ ³g!|ôâ_ ÝrÝY°tƒ® Ànˆ—´ð3ÐbP¸¥@¡(Tç{:„ê€P0â #„à°ê[»ÃÙh0ÎÚý­1R‡úK¥m ^4Ì;.¿MD0 ‰DMMMèèè@GGGÕgu]ÝÚJ‹DÐtòI#Ö纲{Ô À®¤P ÒËo¹ ¡†ÓàÙ:K`“ è`×¹:8äøÄ+‡›¼Û ˜Â (Ëìo±ðâ‹.¬[wwa[ÏŽe{¥¡u“öÝeU×uLš4iÔ< µ\ÃTU}]‰êž;BnÈoJÒ‹ _÷›_ý:é8ÎÇÌ×u=É`Y.•7†ñ§÷žû¾F;þ_þüK …ÂåBˆ®3ÏzÏEÕu‹ …ÂõB2Y—¼è­'Ø]kßÿøà¼Lÿ1[UÔˆeYýBˆç§MŸ~×QG5PkŸ?<ð‡ÓÛ¾”™]×?þ®wŸÑù§‡–^S.—ß à³Î9ûö÷ùãþpºeY—Žr מ}Î9+v^ùûûïÿ’çzGêºþÈég¼ë&øýïîÿ¨çyg!ão§~úWF¹¦ -Ó<Báð5§žvêPpÒý¿ýÝ÷¥”Su]ßxúïúµöú¿¿xFaãÆî¼>>}úíG]÷Åš÷á±|ô ;Ÿ?[ ‡›˜Ùu¶u¿™6õ§oùÁ÷Ÿ¯¹ýE—´{ž{†ÍK¸…BF‹ÅžÖ-çöãïû‰Sk¿'®øÄ—í|~ñ0Kn¡°%:mÚO¿ñ›×ÚçůßÐÞ¿nÝ®µ£›e¸£ãïÇ]ÿÕ/×Úgù§?³0·ê¥ ŒŽŽƒÙóà d»Ãííÿ÷–Ûn½o´çðÅÞѾõþß_¨46.„0<ËÊ+B<3ëƒçß5õï¨ù,•»¶iÏ~õkï7{{ߦF£ àÙvYQÔ•Ñúú[·÷t5ôÀß‚t>CÒÀÛIW5Àn䘾çƒQøm[kr-lºö7âLêpÖüøÞ«:ó…©•çVž´»í“§¾ᆆ}v1ªdày^M7²P(4¡hcAÝäÉ#-ÞU›àÚN£¬ôÇD¸¡¦iÞX©T.Üy[Çq.úí¯óž³Î9ûÁZǯ˜æ¬L&³D14z²l«=“É,QU†nÄjí÷äO$:7tþÒ²¬ù;µÝùÖ¯oðéZûòùéåry $‰?ø~©T:2›Í.PsW,§‹Å%£4Ñ­µVærGÚ¶½$ e³Ùy®ë.‰'⣶w©TZ”ÏåÏïA+`ÙãËfmX¿þBÇq´h4:êH³Ü¹qjáÑe#ÎU9YԔ؞üäUoË<þįwÎ3í•Êï}á¶ïwÈÇþßæmøäòˆW®,áç*ñØQ‹£¾^³_XµØ\»~Ĺٛ6ŸùÄG/=òÍ·¯sçïÌM›#…ÿXâöí8•Do¯ÝuŸûŸ¯%»_ö[kõ«³Ì_Þ~œÐËçÿõƒ”Oº÷žš/ŸîGùvå…—ÎÙ‰çÞ·–D€kjí³âß|ÿÀSû‘L°?Ïv_Ô>ÔÛ•H£Åø2u¿£p#ü¥ªB¾îKá$J‚ô T«*<G€ä4oÌýÐ3“Î|÷…]°ÛRåu<áägÛöw1» ®˲ËåÐßßl6[Ó’ÞD[Z ÏÝ1/EeM/Ê%¶lÙ’dæÓ@Ó´ÂáðápøZUU‹RJ­T*{Œu¦?ó&Ó4çB¡Ð¡Pè MÓþZ%û%c9†ãº'e;#d, ‡ÃW†qýÐ 9•º½z/OÔs!¥J¿ÙŸN/rgÌþ‚"ê3:Ú¯\ôXlYm¢î|»×Ó§)-M}¡9³® /Zp8›&¬YsÜî~'~Ì›n4ëj}öŒMð$<Ë>m·VSÃ2crDZcüÒÜ·«§É5­ÝÞ‹ÐŒi·]O$z{­m^\µØZýê,Ò5„çϽ=zÄ¡_QZšŠlZšÙÝýöZûl~àMv_ú0æÌzИ9íSÚŒikÀ€300ê³döô,‘é ŒysºŒéS?e´·^a̽ œ¾ô);Œm•hsÙ+õ\ŠPª„#‰`ÐâuB€[)!p©¤_ãÝ™t #*¥×b?Å‚ÿº`ãê»î9gK,ö³sÓî–®š³g±ŽŽ ?—ZÖîžê»•J¹\nDÈq¡P@KKË^‘8àçoHõ&¤× ódF%WT’~*|‹Å¡(ƒÂùíøàùKàÞýø8×ußaYÖ¸W&Îårúà¨àE‹nYxÈ—~ÿýèëí;Éqœ1]¬çº'üߟÿœ,ä »Üî=gµÀÊ»ïº{>ˆ®3š››8á-',ÈçÂqœ¡ðvÓ4÷̉\ˆÜ©O?¹ÝúÉÚ/ýÎÍh‰øŠ%üß×ÿrîyóHˆsYJPšv;"<ôÐþš¥8òØ€kD$ܺ»}HÓWžú·'n-ýr‹þØyç¿Ó¦:Ûºw;{jn~àÄ_ß·tW×S|n¥æèlÌ½à‚›¦½ïœµ^vùÙ÷?8/4{ÖTü¥Æ>¯®­ƒë&€*ÖmK–?¾ô¡cÞœðEo ÝÅ ªY*?púSß »îËè^óÚ úŒi“GŒo•hK7ÔðùdÔÿƒ"@d˜õ®÷-^#¨b;ëÒ0WÐB #æa?ÆÁÿuÁÀÛîûÙ5-KÞ~lü-Çߪ¶4È91Q©wG¼ƒ¾»cèœèëëCwwwÍ<žç!ŸÏï›táZ=ÛR³ ²7=¤i‹jŸ¡Qs6G‰µ¾&K=`÷)sYÑAª8!@h`=h4"^˜W)  8pä¯] àŠ>þd;$ÑÑw¡ÇÏsÏ5åÃ0vK$Åb™L¦¦L±3±3ó^K&¡·],ÕРö?T*æ±!ãù;ŽïïOÏÐ-¥<ø_ñ›§üæøÚÒ@ôïã¾öÕ3÷ôzÞzïÝ·bý~̃ŽQ¿ˆ¶¼BjøhÉ{nrnÚnýI®Â'ÛÁ…ùG$8P[ýJ³ÒÞÖ6BšàNiÛvÍb–»²v=ÏCOOúúúvKºƒÛË}°(´ªå°ƒ…c9ûõýÖu¡pÈö\÷-oÈó«>wŽãúè_ÿºˆ™çéÆx¸T_îÒuêWßt‹¾ßwäj®7“Avýú1ÍŠ“ªµ"¡¦qkÚ]~mÊA _DZä½d$Ÿ¢Pƒ‡pªtÍw)#H7d1žY)0Ä[Þ²%!Te„® L°;×h“_£¯išèîîF¹\Þ#«zŸžemä¹xöþM¼BQ ëÆß=Ï[$±èv~áP¨OQHÏ[88Øu]„ŒÐ¶1K0±Hã“_¸ö;O~áÚï<óÍnL?ól²ÖvÆÌé%°7m9jÃÒ?ÝÿÄŸ8á_u?»O‡”ˆ±¼Tš>:xMO~áÚšé]ã‹/‘¦ÂÙ¸ùë{ýÏ /ܼôϱ]¶nÁ¼¬ˆE³`u÷Üøð>ø¥ç¾z}ë>?c»íXá[‰µýŽôèIЗP(õ<…êA!Ã÷´p«V/€W4ã€q¢¯lí‚,–F>ÀŠ:¡¿[KߌhÛ™<óù<¡Ä»çH¨› MƒAÕD9Õ$èTÕxm ¨â8@:¥Añ‡ÔöDv.8޳K™aÐka8A†T*…ð°E<•x}Ô©kµ©Šå§Êýá¹.ˆhLz÷Ž# Ñ%„xÀÙo´çÑó<†±Ê²¬³¥”‹UMû[©T»Ô iéw¿ºê Àú5ÀîuÛ—]Zpëß?uõ/ŠÓ¦ÝPxtهܮî$ q ª£¾” ¥v¯P‚ˆÇ OŸº2ÜÖv3žÜ !%ë–imË­›?+Ke$æÏ»fþG.Þ­Å›=ûö!w²Ý฿¹ôÅë¾úpzÊä ‹«^ºÁݲ-fe3‹wµÏQ_¹n%€÷/»ô²·•:7~Ï|á¥Y^>ì„I 5HBuI7@!Ú.7T'ÖˆØ.àzSp€ ¹`þ6gÃÆQ:®5qÜ2Z:ÈAâµm===;n"‘@kkë¤ ø®T£YµûvìÔpSSH”Q~½ï[(ÂüùóO>}ú즦¦¯ìéþº®ÿåø<23B¡Ð‹€Ÿ`I×´—ebu¯£oúf/©Ê7¨*K±eï6`£áÌÓ/0;1ÿàÙ .¿üØò£ÝÖ_‘Èʃ?rñWôéS7Vÿ„äv^øÅÏ;'ÞñÃÛcG.ÞFGǘ¤¨¾÷Ý¿` ÿS¥½Ä÷˜xE(ÅšMF0 `»ïàâx`×;`¤ЦMÑÊvaâ&w5±æº.z{{‡,b"B}}=jêµRÊQ'Ñö•x­ÌÈ”JØÈ‰PÊ}½ï!n:þ„7¯•,ûötÿ¦ææ'E±ßhÏb$illl\3(9)в*•JMžpéæ™çlì,ikëzÏ–õkOüõ/ÖN9ó]cf©©g¿§¬Äcσ˜Ðgdoª²¨ûó³woI¡V`„AáWv±CBtvp¬ªà!›Ö; GÌÜÄÅÔ"ÞÁœ}}}C¤«ª*ÙEjÊZ.i€_©b_+STºGæ¨1âÑÂ¥åÄ“N|é'?¾w…çyǾ‘ÎKUÕÔì9½ÚÙÙ¹À\!ÄJ)åŒñþÇ?zéG]Ó<ÃH¥Vÿ­›®ý—¾4…ø;€3Ýtÿ¸ù(?záÅ‹¥ç}Y¯¯—³N=õ¢¶SNêÞÝ>kïùq{׊Üá Õ%¯=îÛ7¯sÙ»élE3Ɉ‚â `øWßâe°mÏpKýÔD|ÝÎëJÛ&&”²æÄš¦i*z©ë:ZZZvIºjjÅ€¯ïîËÄškš(üŸ\TÃÂIQö<¯iÆ ÝñÃÿݘÏçË}¬nëhß´Ÿ>N«,©T*'?òð#Ëï¾ë®²ã8ÇTIuÕXˆþóÂÿ²¾~þÓŸý…fYí¿›4ã¡ÁÏÉ“ßzû‰?ºkDf.}RûFsízX[¶óäǯ|–m» Ì ]‡›˜Ð âíGýtöŸ+»¬5¯µgÖ¬Y à]mŸáÅ/ÿnÒŒË ñö“Vœ|×#,ôú·œÐÕý‡gÃFmï~õ{¶~góÖYÀÅâ†ZÇMΟ¿QÚöËæU¶v}ç¡wžv™ÕÝs¨O¼Zç¨÷¨PxÀ·»÷ì?¾ù­Ë¥i• ÏÿÓ—M,{Ó^Y¤$´~2â@ÂEP ¤T'Ö@ —!3›T.÷t X¼É9sV¨m-;$þÌ<üWXùü„oÍSÕiÃá0š››ÇDºÌ\³,ü Å»/ÈoÞ ì¤'ß´¡dÝžÚØØè…B¡[U)»®Ûà–H)ªç7@ͱ£9fE,»S×uçXâºn›ªªåh,vÓ´iÓìýñYªK&ï4 c­”¶m/ö\ï)¥‡_njjúñXFDc•“j>žïz6¸Ôô{­›;÷çÆœYÏȬ_^d¿²¶]D#ˆºðW3Î|÷SÙFSÏ9«(Âá•PéÜ¸Û Y®,v=5=ŽúúWW†ç̾Mi¬‡õÒ+“ì×Ö/bÓ‚1wöÚºƒ¾·Ö>©C8‘©SnVšËκΤµjõ‘Þ¶]›Ò1 „B7v>‰¹sîÑ:ÚÖÊRYs6l:ÆÛÖs²Ó¹9©v´•cóçݶw/)›a$ âP, d% ýúk _óåÌVp%;ÀƒñrÅe¯é¯ø!Fñ êD 8µj}ìR<íôÓ^~ü±ÇI§ûg3Y€X<î´´4¯8ñ¤“v±ëí–J)K5ÈøvKwy}DÐ°ÜÆÃνfúÊÅ_ø\תïÿàmÝ}ôÈÂߟՔXM§¾³Ø4wîß'ŸúÎÑ»†µýžè¡×Â÷£jgwK×Unµ6tnEî"!N¥ú:‘zô7®¿zÕ÷oÿeßýL²ôzÇÛиøðó/¾hÔ}N¼ûÎ;Ÿþüÿ­÷Mu3YDæÌFë§½¶èãWŒ:ä=öÆo®|þ›7›yþŸ‹óO,÷Gí­h{Ï»7þÙ«_Þ+ÏËm¼Tv?w›óôà.[ o­ .1àùõ1‘P®C轟¸S;伋«÷Ïï~Ïí嬼døº9ß¾ŸuÖ¸þNWWרÉÏ›››¡ìÁLl¡P@:±>¢¹¹y¯Ïѳ,2SËÈèƒW&s +±…’yP:ÊÙ ”]V(py hμh1 XaÅʛիö]V Ûø£ýwê:ÕqœÃjÝx4òÝn½Žmÿþ xÙ*¸½E@:Í´22:*Ž él€›ùEˆ”‘{šæÀƒ+u¨úÔs¢ÊÖ“Ë€­»ä¢¦»|Ù‚š¿±½žØ¡²×çPÄÌG¼þîw¨ÿrßCi…/0tê2 Ñ£?FFFG¼ ûAJd¯Ȥ@Y $E|!Àõ\Þ‘àîì+Ó õ¬Zu­=4°Ï>oŽ"lþÎwžP…ööxT!¥<ìþ Í©)lùòW<>øò"2%P"ÃöýfZ-Ç+¬ °ý2%{A©PÖ‚H ÷äU·Ôä£àVåÌÅ4hÏþÀ{ÇË—]ûØÇ§®»#wßý„ïþt8  ‚à€ùîáÄ*ðз®Gû±[„ 'œ¾”ì,÷Q|ØL+#££^á—ʰÜûÈ+ê¸!çêš^/ÎyëʆÉp£|V4»sÅb¸ÔÀÀçœÕ+ì¨yøÊÏ¡66vÈÏw hàp;ˆâ‡3ìøío1òéYðø /ïAª¿òzA2ñ[éfÍ´22:ZQ’Îí”ìùP6 ÊÙ@JÌýÎ5]—·æ¸3óªÅ4pÏÿÜg&ü5k® ßÎ`íßß‹¾üÕý6<‡z …§áH6ƙ޶ ìã O¯²°t}/È/Î9އ̔22:Êàe™¸nŽÉ+ü<¨Çe-Àú¨÷.Õjl¸5ýZÕZNN‚ÒiWÐ1ƒt~*’½-3¥ŒŒŽ¶ãéü‰¦däå@™DÖùB×ôv\  &·ÊçDõÝùÅ6ˆÏÿØå7{'®þí§+ÿ¦÷}Û~þ ð~z¨Î)î˺àqÛ¶h†ƒoÔé`÷®ÇÎO}nákJN:ÕE¢ùyÀ+nίÌt22z²À+ìÿ„“ÚB~ äAéŒÞÉo#fÅàz5ú(¸²}):³o\Œ¹ê•¯ügïÔõ_[ÕÙ:xû;±ñ?@Ô èP÷wâÄáV È=Ìóµ«UÜóå¯`Û?^¾ðR ओ-ô 9 žô5/œÌN’ö]f:=Ià•^¡AÒý6%‹úk§—õ¸¾©Ïck*ðd jìApkú¨>ê/¶\þºsƒçž{©ÿÜÓQÂÝ›.¹ ¼új´gfޏC=X÷üx±ÅÔ¦M¸ã²÷ì·lÌÀÉ'Hô 9½(Õ òû@^°Üï¯oÔL'#£'Ëñ éüÉ|D^IÃ7•ž¯p WèÃ/gðèfpõÑuÜ­]°sÍëÎɯ]ûæä3Öí÷|¨]W~·_ö^ŒÞsÏ>GzaíPÝsØnã‘ýw¾ù­˜½ågû…îÚ‰¾¢`Côøº„Ð/ÜÜ,dâ:3•ŒŒždðBÚ÷åÿ ~)þú™‡èq!òÖ×[WPcPã‚›åKÃÙ‘5‹q@O¿âò™eçœýæôK쑬…µ[†»ÿê\üá _Dm÷î‚WJyØàÝŸö ^fL=òî¼ü£xè#Úµpã‡#uEbA€ ¨à€2y Õx%Àöï`a›þ FFO6xE²7„•¸I/°éÈ~”K€rஂ*w¡F7‚+[Э^¼XuÝÛ/˜ñm÷ ™—¼èC2ßS[˜0v}æÿá¶¿y¼áÔÆÇ÷ëvgkïÁ€—•BeûÜûµ¯ãŽ¿>åÿö~ÿïžÑ'‘Ï PÞ‚(Ù¹8Ûõûõu–îõV2¯ÌT22:„”àH=‘jL qgæ~U~8Ç“@MoWF FgílƒgB/!W§`=ëÅk^U£ÜŠÉôÒûóÿúü ΩÝÿÀ×ÃÑñVsXk× ðú×!ús`§Ó€l6‹|þÐ @öw^›mÛ˜ƶ[nÅÈUWCÕ›|žlžprQÂÊ ÈU ÈU>Ä’APq=Dÿi½ë¶ÀÍ!½âŒ™JFFOx šÝù%ž¾PM>ž~<3 555Ò„ë ýäúåëÿ7äàs¯‘…õ·ØùöK/{~õÞû>ßÙ¸ùl o¯? ™W¼éµk±üôç ××whãEYpü·ìt ªUì¾ýŒ]÷M¨råÀ‹0tº‹åBÁš‰"È òDbi¢¸T<¢ôLPfé?Ë̲÷™iddôT‚·>öL´§«ÊÓjz0³\yÑDj¤ ž‰@ž€XêAžú<È“ÎîPnÕÙVvùOû@ßóÉO÷”ÜðžÖæÍ‡#£Þãý~âÔõ(þ¯³;y-2CCðòy¸™,¤{àE²V«…]Û·#˜­¡]žB{t ­-[Pÿ寡F'÷5æ_¹«Ÿí"3ºцÐR ¬€XáB®Ê@”†@½'BŸQ8y‚ÜÞ¿´ÕL##£§¼U‡¯ãÚÎÿ«Ê›€™mP3ÛÁ•ÝP»ëˆÆº@À œ¹¦ò¹ô…ÿÉYVª¿z< øí—^vzí¡‡/é ?újU­y}¡l î³Oƒ·z}%XÉ$„”`f¨(BX¯£9² ûîG¸mø vËÍGƒýÓë.{“·¤4ë⡟#ü¯ÝP“!`bÀ\íA.åW‚ò'B׃Ò˾ ³Ë.2SÈÈèXo}ìhOÿTÍlõ¹²\Ù®> Už‚ÚÕWBÀ&ˆ¾äúÓ Oz¨¸î +wâ§ÿÝÅï~Ns÷îKÛ›·œ•+ÞSñ¬RaR¸î×^pÍ'j)kê#ᆛ¬ð®{¡F:à¶‚ÈJˆ•IÈåyˆÂ Pn•v¼ùµUrs/~ß}f ÆÜ;âÏ(wÂöo ¿ï-èÔ€Î,4@A¢Au•îßP  Æ¶‚rBzÅwGÕG"³Ë~w¼ ü™Ÿÿܼþî}ø™Õ ½)˜˜xMwÇÎå‡âTëòôa/é»ÓJzßË=ã”O»äÍÏîüÚ~Ÿ¥†·‚«!ÀùÔï@ôy L HõƒRý ¿°ý¯èCŽTcì Õ©ýÕ힪lÏlÏîWÆ5ÀÓzë¬èu N\¹úKÎøù…—J¯¯v<^ˆ W)?~×Ýçt+•¿ gª/ ¶gŽÜU&8«NsúûnÍ®]ûÝSÞvþ/¼¡Á.„“þ›ýýßF‚ð›ÀS0³ Wxý Ü P~5(· "{BNöE2Õ¯™>FFÇx[Ó’ƒÖ•ÜšxOoÏè¸gwAMOAM´ÁäJˆäšçA, D~õUHdÿAz¥ðx¾(¾rÍÒ‰;ï|awfæ Õê«£re œ˜<(ÈÚ', ȶ7 ÇÙLÌ÷'Ÿîë»íôO|lŸ²¯¨²õõª²åjûÏíð;¡¶×ÀHÄ ¹¬"¿ Ô³”[ Ê­%‹Ÿ—™¥ï2SÇÈèXŠˆd>Š“¥Dö,ø¥“ÔÀaµAQ"TP¬Ú¸Ú‚ßò‹PŽÿN9 àÊãù¢¬¿àm;|;¾aìW·y;~pÓÀè÷ozü±·m¬8ïÜ`ýE?ü?ý^4û蟪ڮÏòä¶Ýžn‚#¹T°!ûÓ LŸŽR}º/C¢g¤óI3mŒŒŽAÇ;?¹k£¯æÎô <³Ýâêvpu'¸¶ \Ÿ€šª+H(ï@,[ 1ô'}§Õá/9ÏÊ.¿Õ\ž£t]fwžÌ­òOÕø½Cjø6D›wÀJKˆ!¢o”]®o=+@ÙJdß(SKn4#hdôÍéQ}véÜLNúz½½´OŸTàA~/DÎe´áæf5µ<¹\Þ”B{úš¨6rš¹)¼^Ó“ÁÈè˜w¼„ßÿÙÉÀ+Fä—€9×ë@™^P 8º‰תºÇÃÔ&puødÕ©]5FûÌe:ñBc¡Îì•<;ò\ÞžÞž™Ú Qp@¥"(;»Ü8×Mê°Ü¿^iÜŒ¢‘ÑÓ¼ÚW»7“þ< ]$ ¯W·ÌdAiD:P›„ªlW¶€ë»^ÌÝÆUQsÒ1—ꉉƒæû¹1þ·\Ù5³<; ´@1(kƒŠyˆÌ v¸^s'ŠÀN}Âëcdô´‰æéîæƒ¨1öOäæ^Œ°Ý‡(sDH… (shGàvª‚Ý `û ™x-H”UsâRá•æ’FÄPÝ~1ãïÑ œÃàÙ]àV[G ž*d!zA~ H¿¨ïÌ]$O ÓöÑÈèé^~ÿFUýxÅk ¢$XJYA0ƒ(1 t#p³®ì€°\°° $Þô¢úèÅ2µÄ1s°ñB«,Э]ÆÍÉó̶„Šë©Ñ¨­d Po"¿”лÒü’^uóãd%ß)¼â„I#£§)x€­ÄõàÔZø¥$Ž€øÆÌ 0¸Q¨UW¶ƒe`õZòJCQ}ì\™ê1—îq ÛOq§öQ´§.âêv©ª;À3Ãàú$¸Õ,ʦõ‰ÌоÐM[°½ „ß÷3’FFOsðJ7ÏQsòd§}øêp$À@$4dU ÀÍ2Te„/ ÂçQ ?Žj»Þ Ӄ渙HÕwªní*´¦^ͳ#àê0Pêã@« H‘΀z†@™A ]/>1Ø+vaûï!éþÐŒ¤‘Ñ"/H¯ØR­©÷3ƒ¯ÞB¼W|H@nV  nLB ¬á u*ù·D³#ï’™¡›Ì%|ŒÓ­ï~w_CsâY\ß…9ðrmܪ‚ 29]½ˆ+LJ±Û-và¤>MÒ½Z$slFÓÈh‘€D²Ð‰“ï¦Dv9Tøgó‘ˆæ6Ó¸= „- 9 EAË(µäÑìÈ%äxß®Yü€¨¶ûLtëßâæÄR®í×wk#àú˜K”îe—‚ÒK€d!¾õ‚Ü`§¾™¸\$ó‘M#£E^~±6Æ/¢DÏ àh=X Àq…àÎ,4昘$ôNgÎÀïÿ ž5Æ?.ý¾±ãõ"†Í² ¨õVtg¯àÖd‰ëcàÆ¨v»µQpk¤àÏ9ÝA}P¥›×õÔÉ^ÀIÒ¹B&{3-ŒŒŽ®è©~ª1öLÚßäöÔz4'Á­2¸5´ÊàfÜ*í* BÀöôWãžâ¡%€W%z„•|/ìä-Ò=¾¾"GõÑuˆ:åní´¦$7ÆÁõݺ\mÜžTró:ÏM/Ñõ¹n”Ì’E†“¹™,÷BáÍ& #£ã¼¾ãÏæ°y·««Ðš7'4x[ep»njø² @2¡7`d‡4|½’vmno¶5¬Äg¥WZô%gQcÂ‡ê¾ aëCÜ©ö£5 nN‚룺÷q}èTÁ P²w~’P2¸9 _'s YÉ¿^Áœldt éÜ-“ùE?¨ÆÄ «àƒ[oän5…öÌü7nŒµÝ:š‰ºzן_œßFnÏžx!‘kÁò®€°¯’~qÖL#£'WÖ±ôb¤WšT͉w0ˆ‰èµˆÓHH°´AÒâwj@Ð×#Ýñ,êJoC†êJR™sa§þ’8úÕœø¸ðJ;ž¾w2Ïç°u!õÕèÎY ÝÆ¸>4'Áíi]r—ÌÅMnJ Dp{@nVKHôtÈö.ƒL\m¶Ç»7h|RÝOqP¿ÛÓ’[eWvfö ¸Sïg5p…$²©>Pj@gÀnH¤Av °ýÎu$¬ë„WÚú´ns²ž‡¨{!¢Î)4°º3˜_HkU€ Юv.zIô€ ‘ÕŽ×ÉNÀrßé\+“¦Å£‘‘ïc¿V7Ë’Uçb„­p{&ÎÞÀ­Æ ®8h¬@–«óËÔ½)Àí9i ‘¬ÈrËÎ7IX߃°îÉÞî1Ûv… ‚•ˆÂ·@ç!ê¬á „M [wfÁ­)ã6&õ8°YIýÞý"ÈÍkØ&2€“~Vâï¤ß‡ùØðB !è¼Qç‹Ô×èœwèTµëë΂»5 Sº5 lëMvJ»^¿J4„œ4àø€å¤A:÷AX?€°®‡;¤Ûû”m["—CE¯‡¯A>Q;ËaK7h€»u]ÙÑœÐÕ *¶逜 ÈËëÅÅ9àÎA×N1ÙÞÏ ìwH¿o›ùÈðœûmL¬düÂÖk¹Sõ´Û‰Ýn è6€nMç¾Ý B°°@¶¯K§æ*ÜL=$éj‡,Uë¿AòW ëGò™Ì·ú•Ö´ Ž–CE/Gž uÀQGïØ š{€Û.ƒ[Ó@{ˆÚ` ;J怹HÁÉ€i \' ²ý2dâÓö—d²P5w##ÞCƒo»"8ì¼ Qç³§p§ t«{Ùºu]B˜ƒÀ!HX€åëŒÓëÕ œ4`{ó†Lèú`a7 ä8HÞE$îd¢‡AbBŒ¢q¸›3TkÚTš•ZCP'C©3˜ÕsÁÑJ¨ ƒ¨ ¨n \ ]šº’c¾ª#γ‰´kOdu”’ȶ¯+<œTüÞR!,÷Îeöðñ¶©ÄÈÈ€÷H;ÅÆDTð~Díó¹[óÑ­éì³;à†¾êÚ ‡-½ë`%ã…¦,(ÑgŸ>`¹€å‚DBWO;nÖ#!k ±$v4 `¦™ 4 Py¯—'j9 æ~€{^VCPQIwd Á*Ü« C—ƒ–^$ëÆ‹gý¢@¿~Û9ÀÍêxÁImd{º|ÌN¶·¹œ¤ý-‘\œuÌFF¼O|ÛÓQðRDÝ+¶žËsNwÞõ6Áa3þº>ã º`ÂÑÛç\£“_GV$ ^aéÈ‚,Ì—¶‘Ю´ç ›¹Çæ’U|cXéF@¤ÝHºÞ6ì€Ã¦~jü>âÅ4é6™–rR:>pRúE Û¹{²¼dâö'¥WÜa>ÚFF¼GÀÍÉ©ðmuߊ°¹š»uBPoÚzÁ-0‚&8jé#‡˜ÁBêˆÁöu僭¿®Ãrã Øb÷K$uƒûÀ— (k3ƒæáÅW»\޽0ÆnЈmKÿ7 KW*ÄlO;vÛ‹®²<Àöº‰ÛIØW³°¿/Mm®‘‘ï“!Õœ*Aïà¨s>ÂÖR ]írue@Kç£ónQKÿ…8vÂ6ÈJhÀYIÀNjøÉ„Þ¸!l@Ȥ Úk(5t±p£¹Mà8¿EØ¢øBÔÕ'qðÒ‰ÿÿsBR;^+¡ãË[I• Èrï`a]AÒúp½Ò8##£E Þyܘ‡o@\€¨³zºA3†\;†^Woîç0®$Pþz?!ˆ¸1»ˆs_ikøÆ Ûµós¿˜Á1p¡"€C}¯‚ØíÆ·9WŒöÒÑ.{ô®­ÔÑbø“LV2€´oÙ_„´)“y“ãð¸5ÙÇQx6TtTðgµ“˜ƒpØÚ ¼Ýy7Š(ØóØ\þ:çX¡bXR<`{e¼ôØ!dý«qÁÀ¼3ÖÛŸ5È!m S+1ï¨iÎYK'~,¡3gé2¤³$o%i}ºÝ8\##ÞcRakZ‡Ï…ŠÎƒ ^†(X‡¨-8êÄлïêÚßygíãPY…ósî‰Ô<\÷Q@Bhg<çŽç€;^+®ž˜ƒ° ˆ m½¸§!\°~!oa²n¶¼BÙ|dŒ xŸF.¸œfþ%Tôpô¨ Qg„ç¡«ã†yتhÏ"梄½+öÉùj]ýÀqAº,Mßö1Ùà8¾ÐQ†» amÉï‘ßea=lêpŒ xŸÞnOK¨h¬žŽÎbV/„ W# \ Û4çrU`.¯e9¨ø~îç9$î]b¶wöWBì9È3ŽHÎ9à‰;Aâv"y ¹Y&{ëæãiddÀ»HA\NA©u`u8:ÌëXEKµ¬zÁ‘¥kpU Z ]Z5è¡ä¼„=ŽWÃV$Û 1›ÚH$7Cˆû@â!&1-Í¡FF¼Ç£¢v…ˆY2TÌË <ÈJ ¸ŸYÁŠ^ ÀŽ×ÝPÀn-"1P“‰F@TÄ6 “»@¢.&>02:^õÿm6êC ›e‹IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/exciting.png000066400000000000000000000156031316323560300243500ustar00rootroot00000000000000‰PNG  IHDRG2_Æm CiCCPICC profilexÚSwX“÷>ß÷eVBØð±—l"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:ØOHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©™(G$@»`UR,À ¬@".À®€Y¶2G€½vŽX@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù@+Í—¤ã¼è\¨”LÆD *°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN !%2I IkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã§›§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/ >B Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû€9%bKGDÿÿÿ ½§“ pHYsÂÂnÐu>tIMEÞ   9· ÈÁIDAThÞíš}ÕÕyÇ?ç÷zßïÝ»wwÙWÞXdy³¨´hÀ`£ÐhtÆtt¢Ö[˜&Ó¤™©vÚX’±& aÔNeL’fÆhµÐV#M‚²†w×v—]vïîÝû~/çô…*hZ1ºŸ~÷ž{çüæ|Ï÷ù>ÏyÎ#”RŠO첦}Á'àŒp.öäóŸ?ŽÞý‘€#„cäóÈóJÂGœøpYâ¢çùQ ²™>œJŽp$‰i‡@z l3>L×aù¬îüž d‘b¾)=ð2(ÍFzÑH+D7LÐL„°Pš PJŒNqaþ1ÎÅ®ã:L;Ìh@úRq´Xa ¡!1n¡ Ðå¥ñ}ݬ£–ó<ÿ°ùPÁ‘ÒGú.Rú˜Vès”BÊ/á{LÃ+„ð]N©Œã”q<ŸBÑa\]5ý”ògÑìzìPjl3šnb˜K¢„@(ÊE(×É¢ ÍÐñß)âTJ8n×uÊc8ã’ö5r¹“¦OÛÌQ 4M{— (¥Hœr†Jþ,ÂD!qË]è¦S*QÊ Sv=<×ÃqJ€ÀqJ(¥ã¸ºfŽmA¾ »#b¬P#z£|pOàdNÑßw‚·~ùÔ5´ÑÜÜÂøÖ$…Lš\.O¡”§\]×°-Ó4Axôþ¿„rÎ3‚Vqð- CÎæ0ýÓìíØŽ®U°^ÞÜ—c\ãu´^³˜bY¡ëѰA0db&RÄkçÑ4qþXaŽ ¯•R†B~à aÙQÁ(¾_!w¶¯°”A(Bx%lQÆ-÷1©9ΞS <õô«¨è ¡p+yΞzÇ)£|ŸŠã!Œ¦¦ÕÕtÙCUÃTb¶†WñÁаªš9òúYví9ÍÒk™rG6?@®`P)HbÞ§¾L(Ú„¦Ñ ›|ïK()ÕÝŒ¦Y!p*E¤”çtîê¤}P怠”?W)¡¤DJü<…ÌqrCg0L;–äð‰ÓìÛ³›@È9L"%‘j (†±-Šã2”ÎP.¤ ši*¥Aº»zùÙ¿~›þ®øn–Òà.‚F ;`3püù‘”@)bUã(äF¹ZJa|Ш$äãù’J9’Ò/Ñ×7LUÜâ‡v¢¯ë8Úx3$`k¤ÓY|ÒÜyk’S>ͱãœìì'Ò©«¶™:¾Ï7IU×᥷sòÌv<ß§vâ<ª’Õ¸Nž®_RÓ´]·P¾ÕûöÁ¢’ 0xÏ+ãû®[&Ÿ¦DSƒ äÈáWyã×ÿI±œåŽÏÍÂ×À´,„ÌbxG‰Æ'P5©¯©Ãõ2䆳äóY<§L}*H2 Pr¸ <ÞÞó N¼½‡J9Cº÷¾WFA¬ªžgžy×u?n¥Ê/¡É ;Œô=<·D¡Xb(SÀ©äH§{(ªIÌ™{#öÅI¸CÇÐU]/ÔN0®qÁÚIhš’ ÊTÊ2™,™L†r)á·÷sÓÏòFÇAª£"I÷©c*`…šÐô yϦM›Ø¶mÛG/ÈJÀÁ´mÁ¦¡ƒrQ~…\¾Dn¸@©X¡T>Ìç–¬ä쾿Á,çØþòÛ<³yN%‡¯õPñ¶140Ì—ïÖ1 ‰:¹¼Îðp†áá‘ Ž¦Ûï±ùBÝ‚á3dV˜ö{Ë1­šva×­[÷áE«+)ý%é¿RH)q]ßËb[6ápð9ÕÕOÇoŽ2œ+P“;ÑGOïn›ßM÷™3èb€}ûuºÏ–˜V@’Ï9u¦@¡\G2:„eHåS*§ÉdÃìÝÕ‰oîéaog²ƒœ<ÑCKω„O2Y…ïKr¹íííKjEï]1xïñÑ$ðb¥ïëëcåÊ•$ ž}öY Ãà¾û¯-[¶°cÇüqâ1“ç6=†¥û,¾í! ùa&µÄÌrøXšôÃ/ ñÕûc¸N˜p8ŠfÖ­øt<Ša§x§»ÄW¿}˜¿¸G0¹EG¦YøJ`™/ïðyó@…á¬ÏôiM8å,¹¢"®çöÏ/ãk«îb =ÀŸüé7É WxðÁ/±jÕ*^xá¶nÝÊÃ?ÌO<Á´iÓX½z5†apäÈÖ®]˲eËhhh@Ó4ÚÛÛ/ÏœóÀ!X´h?ýéOyóÍ7ùú׿ΓO>ÉÝwßͺuëH$&Nje󆿕妅±àºI|ñö6z{{èêîwˆgž;Ê„¦Zl«†ƒGOsæìi,ÓEú-B¡ØCW¯?ò~ 1Èaš ÅÃù2÷.3˜Ø`Û9lxü&tQ¤~îwI$[¨œzé ®—ÙøÔí dJüúŸóð—Â0m-ZDGG÷Ýw¯½ö[¶laçÎÌœ9“‡zˆGy„矞 6ðôÓO_œóÀ|ë[ßâ?øãǧ¹¹™wÞy‡b±È’%Kèèè`Íš5ìÙ³‡Íÿü}úoæàá^<Á÷V/¥»»‡ôPSs¸ëöY¼¶Ë¥TÎñ//ìÃõ]¦Â4uI‹Ù3ÚPÂæ¥WCTÅëh›:“h4E¡0LwO'½é~~s°LOo…¡á Û^Ý z’Ï7ÄÊýËNbA”°PÂĶ‹Øö…Ì9‹1oÞú(Û¶mcÁ‚èV’ϽÀŸ›Iÿ`Šã²O*•Çu]fÍšÅÎ;imm%—ËÑÙÙÉÿ$Ée™óÈ#°|ùòÑ?ìß¿ŸJ¥ÀŠ+Ø»w/S§NeýúõXÁýæ³¼´ýv¼`tv]SuJû-œGSS#ón|ªÔ„‘Ðl'‰Æª¨­MÑÜ8ŽÆú8¡P˜Š+ð•ÂÕSÌ^ô C!ŒO‹%…ã(asͼû™zí( 6áa<­ßHå3˜ñPÂW3JI„›¼þÒßÑßwÏ+ ;$c.¶% Zºf0œ÷(8qZ®¹ŸX¬ŠÎ·þ–’Ÿ$“DÃõ­wÑzÍ­—T„H_’ÜEwWšésn»êeÒ«λº+P”»ÿ‰Šk“É ‘Nwá{PŽç‘ÍI‚A“hØb8[bÚä–•"_’”*P(K®]øWhšq 0WÖÑÕÌ{ ÞÈS*ð}Ë‘H¸DB HáL_?Ù¡,R“˜–ް© UQUUKEÕR1 $’¨R^ámìXû%ó_IXÇH#Á¹Ýt3#Šš%«Å—vNóLì OÀT ™&‡:ѨK}]ͬF NA3.­FJ„6–»,ÎSÝE·€‰iW# übP¤€¯4lO"„BP‘Ý©Ç×} ¡Y ÌQu+¤ŸÇ°’hzpìöçœ×îE£)³ø®ƒiDñ-ˆFkظN%Á—jÄ}IÃøëÑŒð%7«Ò/¡é&¦Ýti“ØXgT¬tiã˳x•"BXèFpH£bظ~Ý“x>èº$–¨{wUNŒêØH”ûn5Ú’¢Wc…’àgñÊýèf %4„kà Wú´Îø¸Lwéû}“-(&/j˜ ½2®“EÓŠ¢éÆ…0:×Úó»ëýˆÀ¹Âm©|´Kÿþ/~öqæ£gŒØ'à|Î'à\uûo»éw$-¹IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/fhi-aims.png000066400000000000000000000120561316323560300242320ustar00rootroot00000000000000‰PNG  IHDR=2ï4Ó<bKGDÿÿÿ ½§“ pHYs  ÒÝ~üÎIDATh½šyœյǿ·ªzf`eXeAÚ TpA;Á…V FÄ5>1îKTŒ÷Í¢‰q‰B|šD5qÁÄDyOEìHˆ4 ì"ƒÍ°Ë° ìÝu·÷Ç­›±Ôè;ŸOº«êÖíó»÷ìçÂÿmèÑ£cÛ{è‘è]g ‘>Ñõ¯3pÑ7Í‹÷MOXˆ6•—¿$|ÿÙõ]»öZÛ©Ó+kŠŠV®ö¼±À“@%pV4ô9à)àÓ Ä ÀǸ:Geà ÷u(ø&&)D5ÇWlÂðt“Ë•ªÆÆàx¡Ô=1¦XÀH†eÀ;À3Ñk¥@à àl`ŸˆÇ)ÀB KfÄáÓ¯ËÛ·²Ó;GŒ‹›€ áû“„ï¯ApˆÅ>ð‚ \AÎ ‚ÎÂ÷»‹âÐ@l*€ó×€;·€žÀû¸é›û2pzæk`øÆ@oêÛ÷Måå37öêµ°±ªj[Cee÷ƪªæÆµk‡e««ksÛ¶ËÚÚïËúú}US“§ÃÐÇÚíñI4E3N—»s€aÀJà `N öÒ@wÜbœ|˜Nx,~^Å v롇ƬÖJ56N³Rv×Ùì«&—{_çr3€ÀøˆÁ£ï^ÀÜ8Ôµ7g´{€b`p.°ø!p%ð00'÷G£ïÄ¡jo<ÿG ·ö†·˜\n‰nn~Á„á3:›½Í„áe& §DŒLRqÈý'ÿ•~ÀXà0àû@-°XÜœ¼‡ö4×W]7jÔ÷­”çëlö“Ë5˜\îË5š0œfš›¯Ó¹\w† ÃÉ'H¤:àİ?NOK£'ÍÀv`-PI:™-ôzÆIÊDàrœµÿyt=8Hã°µ= _ô)§Œ6aø¦ Ãɺ¹Ù7ax‰ÉfÿlÂpnjgµŽí__ߘ²ŒÁ‰ø`öî5°g©ÿÌ'´ù2à/»ŸœHœ®W¿®nŠ;ûz ÇÃ(5ÞHÙÅd³¥& Ÿ0ax«ÎfG›\NX)¯/ÿì³OZ_H¤†F|ÐåËþO;ô ð8ð,éd«šdÜלËÛ4á? ”ÇGÅá¥üɾ èëR™löH†/êl¶É„á%VÊA½W­ªn˜H î˜ù¦ip+ð*édëÍ  ÜÌʼnûï¢ß?Ãé÷µqhU—/í²¬1½­RC¬ÖO¥ÎÞÇÚD+àDª'‰ÔT`ß`€ýW€×H¤ºµÜŒÃ|\ôvp7Ð97¸.0|‰nª¨¸ÙJy¦ ûL.w• à &—[f´>£ç’%›H¤*p"Õc/ÓmÂùÙõÀN@ãD±7ÎÀ}ö¦÷`é䪼GG`ÎÄmÀÍq·û{ÝTQ1Êjý3†5: Ç™\nŠ•ò«Ôœî Öv:e®¯”yH*=IkÝÞ\UÀTàµM[/o$Ì%L–馦]VÊóu‚µgÅx2Ð;žH…¸0ôjöh+$l5Vç&~ ügà:Å᤽‚nª¨„1O›0<„á6†3Œ”‡[­'t_° ¡ç¸:J¥_QJSÊ •Fk?ÅRà¾_Ø7߸{ÞÃ`óÀ5aXar¹Uº¹y¹ ÃñFʪ8 Šˆ‹©ç·Ä©q>ùaÚ¶6Ç‘N~–ü-œu?"Z˜KÆKÞ¾Ns¥‘òD#å›FÊJ«ÔDŒ9¿û‚ ýÏ^V üE±`\qQŒ’â;ѱC1Åű]¾ï_ólðêq;½»]cf?Ð2¥ÕºÒjÕºÖîgg™[hBÄìp`é$¤“oC?´Ãi?àe)?ïÞ­8Ÿÿ[`Îz§"7×>h#åmFÊ LޱRbµ>¦lþüÚ/\¾7½¸86²CI%Å1Š‹Šb±ÀO¾?tgÉ}•Þò°¶ÌJ¹eÛa‡ «ÔJk Ö˜V©( àé8li½›N6ãÂÏ[Ûa÷x`RËE–~ŠKPæõÀ%A×-êO=uÎf½Î3gN·R¶Zß\6þzßó÷|o €ç |ßÃó<<Ï{Ñ÷½‘ÕÁ½Òó–Õz°Qê*œ˜[kÌ¿1欽ÜZ{uÑÕ=ˆá Ý.à¡/Àr»þÛ–ñè^©^y× ×\¬°—Æ~Q§ëN=uªUêVÊ-FÊ?Y)ïï¾p¡ziÕ…Jë¥Ò(e°ÖbEió¥õÕÕÿ8ÒÔü¯Œ”w˜\Î¥÷Z¾¼’Dª8 øp$PŽK(€Õ8=~5“Nfö§'R¥Yàé¯I'oo¹ÈÀ?p†ôOÀõ¸PõìÝ@ï9²£µv«•r†UJ)O¶Zé¹té’c®Z×Wkó±Tº«R©4ÆX€¿jmÎ]ÿÚá­V¬&‘èhÃp¹‘ræÃþ¨û,9ãJàG@Y»`Yœo½‰t2³à}p—ÎmžìÊ[¢¶È0Îþ à†VñÞqôÑ#d]]'†W˜0Ü_75] +M6» @ º „»rB²˜˜ ,n2ZÙ³ôñé–œ1§[e¸˜z6ÎÀLn~ü 0S§‹H¤Îht:Y }D:yLþŒ³ƒpÅÆ’ÀJ9ÊóºÕ:´J­²J}fy®M=êʵq­ÍX­ ZŒ1c±ü¢½ï„¦ì¼ÇzÑ@»KŸ«¼pØÇé/ ü=‰T\ݸ¸sC­Rß3Ri¥ìe‘Omú“?eß hðv+’B"%H'mÆEaÏárwgÉûô)ÒMMµÀÍÖ˜ÍÓË(UŽ1ÐÊ\l¬õŒ6hÓÜN«zyð¶¶üú#fÇDÓì?>›ˆ @/b^Á0²~Ì1ÇZcÄÚO;Ïš5oçˆ#­”?n o;ô]æ§±3Y/º_²qÐ =™{Êj]æ;?ÕšëêßdtÓ‡ŒŽ?­¡z).•­Å‰.¨Çåå Ã!X{¿5&i•Âj­¬1ÿ> k¤Òã±cÐÆb´ÁX;µ!¸øƒ¢ƒº3v!c½Ê)§­[éÅb+N;ÍGˆç„ï÷ž×!¶ !¬5ædk hMÃi§Í2a8ÒÆb~©Rœ!W‘3o3ÉŸ°¯-*ù³ócX‹Õzš ëõ$ëyÄåú¨lˆõÎg¥P‡ª¨d<gÙßÞú×Ô,ª ‚sb„5¦Æì‹«B?ÿ“>¡TC¬±ë€ïîªgÅ¥ /Ÿ„çõž'€ B<ÚOˆ+Ž`3ù3EE×y±"¼X쯤äáyyn÷¾Ÿ³Ö¾+„Àj‘«Ô1† ˜)¤Äxýdû›JbF9ï*‚ J3!â[D—ð/]O¿ËïÔvýó«,;plÎHn ŒÖ/cí1Ñà§GH¥µÖb­¨žÃýŸ>°öÂÇl ÷!‚`B]×xÂó¾ð<<ßx"ËűØl!Ä­óx€ÕÂ÷çX@h‚@XvÒÑÍçøÄ*u¯ÉåR:›~oïËÖ¾Ñå„ñ„.¿Ò:¨Æ—ç8E°¶—çZœ«HäByŒµ*Ç=ÝA²è¢"lÜí•”ôð¬ <¯tˆ\žÅ:æ°B8ç†Ïc°R‚çI!„vqc• mZk Æ©RÃÑ™90ý»úã3­R1†Â(u2ÆœüØú‡ønç¹§ÿ (ÑšoìÂéo ÂEb9œ¿©Eû_Š¢]î†ËPÈåT?‹Ûé¾õkéÖa=ϱv“ð}k¬mÙ):é|+0*Û \8ѵäí<"/Ì3LFÊÆ´ˆ;ÖH("WÑᆋ7×_ÖÃ*u±UêB+å`£ž 9·ú Þë<œ™ÝŽo™qeK))ãÜÞý@_\й$¸ ×)è}JpM4r¡ÜÜN×™Ó{c@óÆ×‡7._,Œùp¶‹aµÆS ÑIa}ÝÔ„L81Å„¢Uìwí6Ñ-€U -²t ç­ØxåƒZ©ÞF©ÞV뻬”åFÊÉV)¬µt—µù¢=/ï÷™ÀO¢ïƒkíàÊ6/F+±%ú®C…¬µ¬ñzðDùÅü&óÀVë1VëkÌF#%^`b1¬R`ª¡áû­à„ïÛÇ÷y £T"ƒÖºÖ¢cÍ (®þ£Îf§Y¥œhý†‘r=ös[µ®¤<ô¬¼ß€ý"ðqñ÷® ÏÓ)­[u£ƒÉò·¥WR¦vÝúCTø­•r9Œ’xB k£•„P^,&Z›Ûé!ÀZ"7„5&t"ív _ìÓ%#½/¨††»­ÖYcÀÚ‡ÈËßí6‚y‡¶\ÖïBky¸ð«hß~‡\«Gã#qU‹'£ÒJk f`óFÊÔ®ü5ù1a­­) w.® º SMMŸÂÏ+B„ùâí¢Ak 7pÇ~d~IË.v§iÛïv=e¯wŽŸà †¥À®×zŽþvÙ‰~ª[ûù¼B:Ùòçý€àÚ@àÊPé ÜD€_Ã5ÃVâ"™8Э7Ý)€ï¶€n¡«7½8yr¿‰·‘_ÏŠvvwžÑå*œJmy¾OEé;ÝŽŸýÓ“¨‰uÉÙ1û‡§ïxo@Ü5ï®i}3‘ã¹í|Oä]ßë|Zœ­Â…¢[DÆ¥c-†A¸¶ËÃq¸5ªDT¢«ªcîGˆY™ÿGÇDŸ_tέ-é÷ü†’};oucié!ÏírÔMÿ^xN±ou5‘íˆC.ªk%ãšsàýÒÉwÛ®rxœ¿Ý¿Í“×I'+"¦öÃýÿ‹ÂÎÃUD 2p3.Áÿ'Îòu.‹»?Y€+ŽlXÁèšÙôÉm«=}Ç{×3q+°­%u#‘†«n Ècj.¡ßŒíþ8Uêž7æ}àRÒÉÂíÖD \1±Í“J:¹2ý$NÚÊq9ô qx£e°È@•Ûq¹gÎÁ_‡Å$R7`!I:ùÏ‚Ì9;wë_wÝ-ãE'e‹¹s*|V[ô…¡‡ L]£º|ÝVžkÛ¨k3ç äíóè礓?À©ÍÎËz`~<¯¨(¢£þ ‚sægÅá¨}²gþóip4édC»L“'Ož/„.„àÃ5û|öÌ¿ú­ÄE}Æ «9欆í×ËgKuõ´‰'¶ÝÁ|ÀávÙoóäC`D& qÅ·»=q ai-^xq÷àw¸”l4Ð/UI'wRxu¦¶©7¢å6JVú—®þß'.Xzã܇‹^šÿhÉÉøšaݪV¯¦¾¾¾W»3¸ÂB!ÀÛsq€ÇEŸQ¸ùÀ-qHän¿/#ã®290ϸV+¸¾Ðú쌞!‘ÚSßéZàrkí9Ë–-ë±båÊ%‹/~vî¼yË-ZÔ×Zû¾1&ë:¶ÛDê)\}«-àf଼ŠL=NBûÏâbíÛ)@»UC3N4žÇYÆå¸# =ã H¤’8ÃUhggµ[ÿjÁHL‚àì®]»bŒ¡®®î‘9sæÜ\xpêD\8|H§ÙðÛßGà6`î|Êu8uRèlKÛbÿàœÕ›ˆ O/΀G:™Â•p Ñ)À2©+ö²ëUJ)¶oߎ1†“N:©|ÉÒ¥»ùz©¡$RÓqÞ¤àZ`làCqž¢碞ÁYîŠöó´Ýi§e¸þÏ͸¬ëö¸ë ƒ‹n ŠMD«ß!ÜÜrsá¢EÕ”O?7uê°U••ucÇŽíÜ­[7„ŸœÙõøùU]OÆ-ô‰mùÊ£J ‚t²µµggàé`SÜ5éÛ¥‚“gÜ•¿áº%¸S;‡ÆaGü6\L»§¦¾ÁI+|–¾²WWqX6›cëöÚÊÁ}jnøÀŒAlÚY²'>Áé餓õmd\€óî¤Â‹q¸oOµú\”ÔÍ]r®Ý¹!î¬($R£#FöÝ·mÉ÷,7ŒZË ^MTV—2eÖLûÞùSàÒÉ·ö4gÆy“Ò¸ëYí‘Úý_81ÿ9.t{·ânE%Re¸ƒ-WðÏ™  S‰¢>Ûîk¢ÿ~:rIßµº'N¤ûášn£€qñÝôÏ)‘Šãôÿ¸£Œ_— N7ÿL'”{þõ¨Ý“QÐþÎï /të ”H•âzQ§áŒÊÀ/ÁÃ:œÞÏÞÌ7~ßíñÌItØü¿«vk’Yr!츅ë‚3|¬&¬m‚o‡þ¢½O €IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/fleur.png000066400000000000000000000040041316323560300236440ustar00rootroot00000000000000‰PNG  IHDRF2nÿ:sRGB®ÎébKGDÿÿÿ ½§“ pHYsÍÐœŠˆ†tIMEÞ  !esfü„IDAThÞÝZ}l•Õÿ=çœûÑÛëí-­vP´€”"~F!̱¥’,i”LCì@ &²‰F³·–ˆº‰ Œl Û$llΙN"Û .dCW±)iŃ•ÚJÛû}ÎyöÇ{ÛÞ–Û{—ìÞžôŸûæíyÏïüžç÷üžó¾Ä̘^CLíßÈØ½øÂ˜ÙX&€ˆ²’uh!ÚVßxËÖýîÍ;º2m¨ÉÐâÓfÃÞCûŽ·Â2¹“™,© ñ`çßO|ëõCð(R’Ö2b:û 9`™Ÿzó苇ÈçƒcªÊKkn¸Ü,‚äÄÛÞ:º­¾ .E ‰>´â†_~󫌵YxÏüà…¿|!”î¸iØòà‚™{Rˆ¡4˨Ac•m¹¥³·êé=Èñ¢kÏ>·±À癪Ý@bfË<û©_tÄâÖ2Gcý?ÔçVcáaFæ )ñ0ðõ]uÿcalÝãkÆÁ3h'FëJfåRT›C'ÚHI0ß:«xõÂÙã×T"ZÿÚ»Q†Ñæõõ_Ëq© ‚Ĉîøé«$ŽêÃO®aæ Sè­ã§ƒ`Ó»øŠ×¥(CÌ|)ù¨õ<¬íúåU~·KMI” òÿ®bdü@íû Eø}ð¹Äεw9Ö.ýeå×èL›Dâ]yKÒ$<^à9uæñï1?\½4ý¬pÄFP‚<ËLIk!€‰Ø:†Cáí14Ê‚¾Ì2;„ Q¢=jTš¿Ùô™‰ix\¸|`ÙõƲ”3Dô~ÛÅ—ë›Nu\* ø6Þ^yïÍŽèÀ@G_èHËy!…‡¨æ¦ gíDÔÑ®ÿôˆòܪza¹sýOMmLІ«+g¼îÚ½ï~ÚÕ»µæÎ•óÊR³DÀÿhV9f{]ÅÕs é°c¨6×~wG,®„ ¢íÝ?9ë·¶áÙus‹ò‘1öø…®µ¯Ô‘×]ì57mªq:ïßýŽR²²(P½°Ü¹¾áպ˂l(zzëÃeOì *ÅÆîkhM†$FÅëÆÓÆZfzúî%éÄ›‚1]òä®Nc!D®’ën›¿¤¬ڄܪê™×.…£–9‚ ®HlL”¬7L𸟩;r)Öáå×Ë)X2lß9y‘8û%ë«Ê-3MUÀÑ–?¿æ/ùsÎüä!IàÑßÕï¨ÿ˜•ÜôÆáßn\m³œR*ÐÏNü–â7Çšaù;Õ·im–W”RJyPBì=ú r=Äœ7#PìÏ™ºÍaÑËõÙ¸>üÄ9¸˜íßX¹çHSÌ¥þÖ|vÊM1}ü£ÚªÒ Jmk{Ú>öåí$ÊëXÃ0.^FûBÈõBÉ›ŸßïLÅ€ÂRÀØîˆ¶–§Š6öîEs*K 8·*ÙtžêêcA̸”V)âÎÐPì ô‡GT@ˆÅ»C‘<¯g ±Ö/Ý»œ)ÅX9OÕ–ÿuîóx4N^—›meIAÒ¡ÃTBÃïqADïÙP—ã5“±ðºG¬‰RÞ¤Þ1bŒ™jh¶ý¶B€â\ï$CnTKÒÌ+Î‡× @x\¡¨~pY¥³C<¸Uä´0Ã1im’+~W02µýt¥ ·OC)fþS(À*qÍw_]4§äLO°?LÜtmë@$Î 8·‘Øø:3ñ”J )e¢rÍ*ðŸ|þaî ôº‚1ý϶ös=}Êç”;.EµqÒeÓÊÅ6‚Èã:ÙÞцµ^¿t”$)†)¥TR@ŠqÔK1@ ¨6aË$ÁƾýØ=v¢Ó"º®ðªä+ Kò# £MrV–vïØ¼í¯ýêXó™î~Ön5w†í’ùï\äqZ2ðöûV^_œÿlÝ±î¾ K±¬¬äÅÍ÷äzTóù.¡Äì¼aº•ä‰"±¸[ pꘙÁ-½ ~üká’ùBtÿì‘)Øí¶%égr}‹ë’bÔuNR;m¬’bü '<óØâh[»cË>¤=’?Ü/J¾âž!+Ä`9xMb1†Ž+§÷øCãgDd-Ïž™Ÿ&†ñ\ U„†}jJw—bþ±Ÿ˜ƒ¸¶ØÚÒ|?²|§\6ü»Óˆ›òl/˜ÈŸ1Dæ\·â¬g ˆÛ×t$鯲"›å˜€˜6 §LpK‘õ¹ä˜b8µ•QQ”—ñçø6Ô@0‡’©Ų”¥i6DF¾›üŸ²dmÖ‡žJ6ìuÏ*ðó4aÉñiñ=‘Hœ ;m¾RåzÔº‹Ou_eê×_¬-p^–Œu&–­¹D A|s3-Xšfué¿‹¶ÂQ}h kIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/gpaw.png000066400000000000000000000062651316323560300235000ustar00rootroot00000000000000‰PNG  IHDRd2%WéésBITÛáOà mIDAThÍ›{pTåÝÇ?»Ù͹@B$DD„BÚ×&”¢PŠc[¥ÕÄÞ°SÛiµê;ÓwÞ÷í}jËTíe,:Žc‹—vðVª´# 7¥ÄH€D —4 I€Ë†\öÛ?v7gÏåÙ,›Òéwös~·çy¾ç¹žó[Ÿ$R‡à[ðÈKÎþiXFQâè!ð¥æé]Á¯Ã¯áf8—„ñãðeøæèJ=þStÕ¨p«„„ôq©Ãl6$ýXòKH~iÛè  þ!eHϦæ<²ÅÚŸ˜¯°tOœR‰Ô—t)OH«¥Ð(ê9Œ‹Ò\ é®ÔüMdÕK?—j¤³ïWí -pñ5$U¹ÌH¢n}Ò—%Ÿ„tŸN¶MF<+}Zjþ&²º¤ ©@Z%m”Ø»C»”áÅB<_Ò2/¤ti_Š“æÙ]~›Z cx3.”O:™BˆÃðk®æK«¤_JoKß3°á«]:/-2Û }Bºh(ú%i¢Ë>SÚa®íq©Ò<º;¥{´ÇÍ¡ú¤~OE²vņ@ ¿ùÒ'’0{ÔUè€ôC)h°Ÿ ðªjHº^BZcàkƒ+Ô:C«÷H³¥úK%KRiªd%ù/5ÄwVZ1’ËB©ËUÏøiñ~—ö/RÀg¢Ë¬CªŠ-YR ë/3YH+c3÷;Òôä\n•†â*ù+—Áq«A‹4ɧ:f3(=køÏ¥@Ö‰ËOÒ¤§¤ÌKqù¿X ·Ké^›$Iaé æ I’ê¼V¡gR KÒ§F¬z(ÄÁƒ?N[mmœ;w©d¥Û÷kÉüüÒf©ÑkˆüÒ¤§¥- ƒ¬”~`xHzrᓟ Ÿ†{Lº¾>¶m£¶–¡!Kèó0y2Ë–1mZŠçŠ$ S Álà‡lèN)ø÷àçnéˆdõÀd¸àVtv²y3gÎ=¾øÅËÊ×åÃMð7·tăt ÌpKG`*bó·X‰‡³{7ûöÑÐ@wjû?ƒül7à ºÕ/¿<S47ÓÕÅØ±¼õ}úýde R\ÌÂ…”–âå»ä00ÀûÉË3]ë’x²B° ¶Á+ÐÆá¹w/GŽxÈsr(/§©‰£G‰ n‰ž‚A³á0==çÏSWGq1·Ü¤IÆF:‰ìKâ•ÔÁƒÔÖRZÊ‚dfüþ÷ô÷[ßý.cÇzºBì°ö@.ÀGð¼ Û¡kÄ„BìÝ‹c¢óùX²„Š ÒÓ©¨àõ×yçKÛÚÊ`\ïÌÍ%7àÔ)††hn橧ذ‚mkEw7¹¹¤¥Eo{zxáZZ  €Ù³©¨ˆ²à‰÷ÞãøqhmeíZ‚Af̰sv6cƘ\Û!+îv<¼ùØ÷AoBŠ,ìÛG(d“ŒÃʕ̙cIÊËmd ÚÇñ¼y,[P[Ë–-Qƒ“')(à¹ç8~ÜfzÛkØ{ŒO8l“,\ÈM7‘‘akv<õ]]lÚDn.~¿E½Äž=Üy'Ó¦qò¤- { ,ž˜0!ñ„õÜí©H°ÓðA™CT^ÎäÉÑëÁA^yÅz€<ÎÚø|«adcáè ñã(2[9¡C6›>àôiÊœ•ò€ãÉåäØnƒÁV6Ì„!O]âmÙO÷Üv›Uö‰lݽ..ö˜}33³çúÔ{¯ônìÜɬY‰¶#žpïõÌ=«*a)pëõ2œtKó󩪲F_M /¾Èà ‹ñõ¯;©¹òJ¸NÉ™3¶#pã<ø ••,Yb“74ÐÞî±Â^Æqß°ÊᎃM²~d:Kççs÷ÝVyuu<ù$--RUeëó‘V9ˆpFWîA{;YYL›ÆâÅÎÓß¾}”•%u†ã”ž—g=l3àwP ›‡y0‘µÞM)/¯|Åê8­­lÚÄk¯QWgMçéé\s @G‡Í7tFsÁaúæÏ·©"3“é^dz™3TÙBÒ ÖÃ2¨ÃLÖ#6¨¢HOgýú(@8Lu5¯¾jM®S§F_´´$Š{ô¬ÎN+Î'?iS ±¿Ç4¿x1wÜÁܹNyNŽóñ¸§Q3&Àí°ò1Õ[½äN¤§óùϳ|¹Ggñù¸á€pØö"Á=|Μ‰¾ÞŠG8̇F¯ss¹ê*›¶ºšéÓ­iÞçcñb>ýi€›ovžƒAçÊ“p“ø`<;á4¼_…" dý.zɽû¸á©SmDÌ™}¯ÒÖF¿UÝ@€ìl[„óç½#Çïžý¨»›Žn½•òrJJXº4Ê0v,K—ÚŒ³â^LItvZ]®ƒß@ÔÁ#°l‹‘ûƒE\•Ì[@7ŽåÝwij¢¨ˆÛo·Õ²¿Ÿ–:;IKcöl›×ŽìßÏÀ@tË6ìURÂç>g5rÏNž$+‹ñã™>¢‡yâ ëÝìµ×Fã¼ý6;vD™š:•uëÜ'ž«¡.Á«7Y?ƒÿ¶K"û´…P ¡î5Ö4UôõE›1nÜ¥­tžhl䥗¢×3f°z5À3ÏX[Ÿ5kX°Àíº n6…uÕ 3 æÅ¨)ƒˆßo…Õ©¶b2¸Î&ÿ.ôöR_O{;99\q…éÝmðgSY=Ð3ÍgFà˜çDZäð'xv¥êþo€ZM)ÂŽ ~ ÌNÈë˜ö’Ægà6XgÐàc—-Ój4Ã&£r¤\Oäzå”Is̉ÙÒaIR‡”íeð¼Ô*&îðé‚9×a4¿«LÉ¡©‘Uf^,ýV”^0×àá8÷5.í÷cª7¼r©Ü¿[bYGOŽŽ—*é:/ù_ÿ…d çèdHKçbò>Cט.]ˆsÍ®½ÃüÛ#µ°X:3’®6˜ù¥[Æ™)]”ÂÒ[R¥”§Zû/$ë;R@ú¬tÊ¥rçšú¤—í6½R^L»ÂÕ燰=iÒ›vûW –wye•ÇÿIš¤G¤k$¤L©ÉÝìÔÈúƒ9ö¨+u¥—Ù}R™Ôî¥}Ï ôË8,-v™åÄä W :R¡ÔmhÂvéénEjd%Ƨâê”)õ²Ù%T<êÕ ÿj\3]|fé WÿúöH­èu‹.Y›ãêô?›°=õÖÓàF{ó&Hï›í?g9Yj³k{¤ ûÌÐrim’tyȈ­è3¼2‹“Gc\î¬Oz>¡qSÜ ýK/ƒ.iIÌàK©Uèr%éa ×¼žž¥›Þ“„ñÒ,©Ç`Ð%-•þ‘Zm.YG¥uöì”q¯4Ͼó0¡K*6dcšFƈ9¥)£ Ì 4—€nSª¦þ +Fý'J#þ `Â÷TqþIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/gromacs.png000066400000000000000000000120461316323560300241670ustar00rootroot00000000000000‰PNG  IHDRØ$ëpôsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÞ  VdzE¦IDATxÚí{”å}Ç?ﲻ܆ë *x àD%‰Os±ImtlM«ÆšÄh§i̽I4½'樭­ÑÚÄê£FmlMQE¼! "÷eÙY`a/ýãù;Ì>Ï33ï.hÎñwΜ÷°ï¼ÏÌóüîßßïy€èú€Uz=BÕµ@}j¼.`ϾÏ8ìªrìŠÆ¬j4^šÚΪÇ/þýäªIͱmßÕÛw¢šœ;ºªzÆ÷`_ìêÅ›zÉJ"Ûí’ý’ÃŽ*çרK]soj쮾Q° ªÆGGè³8¨»öoiro«u½Anñ(ê$àP`¸®±èÑÀ‹‚mš€w€uzÆ;Äag0m08888 ¢;öoê™+€ÅÀrâ°¥Šgü~?ÚˆÃå%Æ=8'ç®6ànâpMï}:ðQ _Ò´øqøz+U£äåDàXñg¼d%¡D6Ö‹WKÅ£· Œ?8˜L–,6jü6¹Yr·x XFnNS[bBÀÓOH莒¡v½Ð*‚hðâpwæžQÀßgAÊS¡NMv °XÏXJî©Ò€œü 0Wó¬sÜ=8S¶x‚ ºxœ8ÜYâ©3€ï¸o$ð—%¬úŸ—äÜÙ<£µ+³Nƒ€/aÎ{eŒ®ï¥ª&ç¦c<²Ò—úw+ðAt qøœã#€ó€óé@ƒ‡÷iÚ¼@ÝHÞ[\Á‚hˆ¬ÔÅÀ<`hKS«…™¬n·ÜS'/XÍø5ZÌF ëùÀO ¢›ˆÃµ%xˆ„òsò¤eBíqbÌ|àn‚è&`EÁðhpÁçÌ$ˆF‡Û Ü;Z¢È»÷¯bÍGk­ó¨˜KÝB¶öB¹†‹¯_>ä1zyë|¬”Þ–ŽL¾ |LS)ýx8+˜¾IMWùà“U šöKªò,å”m,ðWÀõÑø‚ œü+ðí’ʕ֡RÐÛ€9­ò¨‚ãL-xï©Rú"Ư¡Š¹ž\p|ôÎ{¡\“›j¬º^ÈǺ²4K<ûÃ*”+n?¯`AT!ˆÎî> ë#áo–DçÓÀ×Îø8¸Iáo¥”|pA4·À{ö+8î!²²EÀ¡y©|1ú•øŠ¢š¢ž÷èBïíÎO,ï5¨x³Hyaú‡ßNêåØ/)'Ïõ`s€V.R)¨¹1°]W3°S+Mï¯VñâíÀóÀÀ­ºîTî°Ã“dWĘÙŽ¾§\Ê„™9½ üxX¥9úh:ð·Ñ19ÊxH‰µ˜£°ÝG †oÉÕ”äÇåá69hsÃvŽÕïî-øŒÏâ/1´ P¸Xè(lT¤ñ8At›Œþ†Ì=“R.0Åç.Ïûž­µ f˜ë —Ú€;ˆÃU¼éhÜõœ5ûÅǦ+ÅɾY:¤5aÄCÀ—šKõ³€0õϲxÝ¡¬'Z¬ƒò¯ì3ÞÀ´óôëÕ Ph¶# AyòNcWxi[ƒld1Éóýò”}Eo(¼µÑ L‡ÍUjªÚƒ9ÞëMà—ï[Õ2“¿Ð“_ü*ê5b ¥.ZfKX Ð[®X<^µ(^œȿhgfDY ãH zØ©ýøº(çÖ »)ŽïžNµ‡=+ôÍFs-ùY6ÿrz·÷UÕ´ë¦×r¼û!˜f‹Ñåѱœ{€þBàbeN[·¢®´³d7G—B¦ì3û)\ºÚ“O½üʆŒó<ë¹*™¸Y ûˆÇ‚7bêéÑWzSËÉ ÝtývGêoS,9ÎNå“ö5ìæÿPòëz'8r£í¯²Ržaœ#ìš"¥Ïò³FßW<ááZú–Ö 47šÜS¸Ÿ‹©ã>B݇iîm)¢`‡á¯Ê¿â¨á$ 3Ób@¤j€Ñ÷, ¿x@ŠéÑ.ý¾ŸPÁ©˜.ôè]³À•™¿î —:«fbvD>Ïг-ªÞñî ^•7m´XÖå5TtŽE8_—…n—bá1,ytž#<\)áOÖaA´{ k˜ÂÌE–ïÆX<|šÞÉ5ôåyÖEý§r˼µ2ÇcÊ;‹ÑÿÚÕg™V°úœ‰‘#8a¯¸âÞ¿s„>®ñ¿Fw—@?YoŸ«nÖ3î²À¬£=V²³À|}´Q Šm=Z‚eOºGvÉ‹Mµ(æT!jؘc ÝŒ‡©óx¨ä׆ã®3¾`1JO—[Æ­Î ˆn%·[žá ·Tµ(_ÉÖDß–ñ;¹@$V#ùû8¦È|AôâðUW6(GXÛÞã,«"Á£«Áó¾í˜ª/?"w9 ‹o{ãwxB1j6À9oª.q0ùdy®$|g S8î›ï@òûüfÈógi7¦;»fK=yØTì ýs ýÞ&aq¸³cä% â_ŠÙ½1/‹8MÖúñ»C¯_%£!h_RG˜myP­ƒ©°m¹¼P–ަ»æ5žÝk”ƒöÍqx—fà)‡'Ê1ÖaßP¼V«d+0Íí×HŽÚK8€À Y,£&塺r”ßš\£FQùjªÛ¾‘Ð(hÑBÏbø(G^³99¼M¶‡®›/G ì9Ù’¤/g˜¿RUˆhPÚYŽß¯];nße”hÇ`Ï×®ñ¬‡ò uA4ø+ÙL£û'¯cš{wüõ À7ÒÍØ C6å¸ßà ¢:âp¯',JÑ%¡ÞGÞ¯K<ƒ –PT,aÆ| B]æØ¾wók þ.PÉIÒwÓ³à=Ä£Œí)!~ ÓË— O& ÄȆ\{€GRhm‡¼+¿áyïé²Ñ‘˜ö¹N Ï|9ùL­ÕšŒ7ô5ƒQªÐz€•¬ƒ¤ DwjÝ?&¹:4'Üþ¦¡à—i¶ wö)9(ã»Ba¦ËEN>CÙmè~ÀâKwºÂ•K0ð»+_: ¸ÌQ…_åaR 0©L­#E#%p¾yd»Éë 0<É+ÛûxznhÜ–AêÚq×öòß™Ã1RÈÚÔÌ5 w§L¢,gdþ¶ ýqf«ÌÁ£8\¯#®W»‘ž ÃÙõ8'É!ŠñïÓJÿp½D'q¸‰8Ü@nTË–1luÛˆÃÍqø3ÅËz嚣•ó Þëá§Å¸{ÓbZŠê3‹dàk7#€ÐÒŠäË¿Æ+,v­ÏV‹«Ç wdB·]Tn¨5Mëéy4CWŽàºBâÓ=ùY¦à»|;IWGšžÃ¾ƒ ý›/p°#?d_êIOö!É5™‰=évæÄ Joý>°“m•²tzÂÛFËߣg‡GšÎÎ/dP öEüÛôÿ‡t·C7 òØÆ>M±šä Lñ7« [=¿©·Ì«Ÿò¤޼í>̾­Ë×ç0>-ž0ñ´Lóï:àþCp))Ú'2TÓî1J[cV›bàv‚è¡ Ã<9Æõhøv`ƒgó\å6òõ†–ÊRpX¼#ÉvÄáj‚è^ÜmVƒePvD÷ÈjÙ˜3PÌçq÷²m"K;/ŒÞf±þ¯(w<Þ³]À3Äasf¾]Q§7¿ ¢J&„=wsïN`q¸ Gx€?ð„™óä…›ö’ ºG¡ ë$ªÁÊ…ÆD7`ZùÚ (Qì§0B'¨= ™nËëÌ1.Þ­ ÕC Æ,s…çDzJŸ ˆžÄ´%Ç$úTŠŸ:Ô[Z#Ëg‹Íy–ßZ¾ûw”3ãNÀ§ˆé¯ïS³Au2fk{ˆOÕÏå1m‚2Ò#ÀÙä-y'Ÿ‚µ¿)œÇîïM+£8sŽ Ž<¶È¶‘ mgyÁ“€ÿKƒç¢Át±×{ÂÿKÄ¿û ¢EŠšä=’sS† &ä‡ì¿³}  Àge(D 5Öá’ëa ǯôäèÉÁ:­=,wD7ÊjÍË 'NÖµM1ÿv ^Cw×xãAR°&̶ŽcB5ƒ ªíaåâp-Aô1ÙC¾Š9Wc%A´CcŽÄþ’/Æ;°Û!ÔƒK€:; ¢g1g÷¹ê‹+=NsNèUI ^­"×û-ÃÝ µ?(DOKè:´Ùû)˜¡Û1å¡ =†¡FˆÝÕ˜¾Çu’ÇÝ)*Å*£pg&ši3è'cr,¦‘79*–Ñ©QXx þ¶²×€GÒ(VvAVDWaá,‚¤¤x“ïÊöKð>å¸cªÅv¢ÑC˜ƒm¾ã™G­Â•²‡g.®&_s|_‡»±ÉQØ_*cæê6y;œOˆÕ¨÷éH ¾ÏÈ>]â¤ÞeRüi%™ÝãÄâ8l&ˆ¾¥äÜÏ„£f"«ãÙÇõxzÑk…ž–=€¶ÓÿºÒÅá‹ÀUŠIßëFߢô,î39F;s Ü\ëù}Yê¯&çG žDÙF/âÞNÓ ,òtÜørâìÆÏpÃáÍ”ÛU¼YľÏÌœýòeànÊ5àú¼ôä ¨qÕž¥ÝrJwf!ŸÅœù÷ML›N_@ÁžÇ~j˜bîLÏ\Û0ýgWHpzÓMߌ9CñbâpQνeNõMh;öîz€¼Ð £¦9ž¼ÒU“s‡‰¡v)þx\[aÌ1—cŠ»}!‡“öEnFÑfÑûv¾w1g8^GÆÅÌL®I¨ág4Á'~´•T¦]ŠŸþ ³·« ¢–— ›M~þ2Ãl‚h”Wâð¿0§¼^‡é(ØSbŽÍÀc¶Éü…:³óh´GØwy„u¡ž—¾Z”ïùjHImÊF‡îºÿ'—à­ð3-Äߎw–óØS0¿Iyðw1MÌ­% u§~3xŸ,4ññms ~'`ÆfXcŽ2ÜaË-ò¬Oð2Aô*æpüIBR&+Á¢²žîí±&³Uh̪ThÓê€A[1½…+3 WcŠl‚ü©ÑZ‹rn¢È¡þqø:At­Æš/K~„¼à°”еț¬ÃÙBÞ\‚IÛ0]•Ì»îÌñDbïó\“sÔÁjy×OPѺw¤×åRÜN‹`ý¼Š#Vcºn޵x¡Š…:_º€—$‡?VD2S@ÓX)Î}v ½Ü©Ïm2 ‹Ä£´"Ý/€e¢¼èLyÔ¤zPjÞM’íµJÇü:qu^!Lu˜®Níðµ”¶÷'™súÆ $‘R°„qëzõßò|@½åÏ@4‰¡R¡t«>·:6ÞÚÆKþÃÇ"ƒS ¶U²½¾èxÿµHãÄSÙ°IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/hotbit.png000066400000000000000000000162431316323560300240300ustar00rootroot00000000000000‰PNG  IHDR/3ˆQÆ pHYsÞÛúR”\´D—I“‰l%j·;É8CA¥zFݘÁ4(nÓYd€^$Àl’Å@4…,’E/b Ý‹‘ L²P¡g1˜A ´{Ä*-t&ÆÇêP]’-QRI|E«Þßy÷΢øSEñG”e»1ÐjQõî;÷œsÏýÎÏ=ÙÌÌ žg£sðg*x6žųñÌ(žgFñl<…!ž¡++cEÒ(€à¨¾Þs½º×;sõ±R3ùÞî<è+Œ©¼z¢ïúì“ȱ>öóþV™>7ÙÖÇȸ×`O#û˜«_úgß:VbÆA³áƪÍ0xs7Fµúò¥W_ûJIXI¬…„jµŠåfãÂDïü›ûZù¥·ò9÷±Ñbñ¹BJ摒Ľ»Ë¸ïî?¸_m†­Y‹™™Ý6f®>~ép¬$IbG7oÝÄCߟ=Ñ7j/cÈçs—FGÖí0ÚÀ€Bcµ… ÕÄj«Y)zG0váqŒäÊÊXQÊüôàÁþ©ÃGzqèà RbH÷ï×Ñ\]ÁíÅÛˆ¢¨ÚŒšïœèýè­H‘“².‡8ýÇÇð›ÿs wïd‹Í°YÜY£SûzJó"'¡S ßs–1ø¿¿»VÚÏé±muþ寎”Nú>Çè¸ó‰AJçPŽSl6›S·k‹¥¹úØŽÆÚïö”z-àÕo£:ù¾Ã`)!Ž¢Ò••±â®›ÈLièÀNú é´nš `éaŠ÷–°ôð~qeeyúîÃûoÌÕGgNôݸ°›±¼0:ýo|_µNÂö³ëÿHÕƒ»wî±3h®6ŠAК¾|—½aqœú,¨ôTŒÂ`y9Âû/¿FE0z¯7¬7r*‡ß|x¿ã·[€¾\oq®>VÚ ¯¬Œ¹•¹ôÊÑãÅ¡çãA HµÁÀ ƒ°0Kd r=xP»Î8žë?Xü´¶ø€Ùí6 à9¸qk7þó¯»xÊË­F ÀŽÈÀ_H"àoÿûo ²^ýæ8TÖ1@½nP÷Wð vqs ½ýŌȜŸ«m ý——ÇÏúêø+°3 Ÿ~bð܃@³ 4W j÷kx¸FS§)³pøàPñîÒýK^ür€ÖA0ÐÆì:?¯²%­·Ÿ“±3Øôv×9H³óÇ Å ÕÂÍ ².¢hKKª7«ð&`àH‚àÀ,hï"?™±lÇWÆv Dfz7£ÀšV!V!þ×{¿ÆèÔ %‚%ñZ„Ï‘“YDq|~ë^^?°ÿДr²¸sû6VV\xî×"ܼy wï,ƒ(EGÈ:Ùv¶°¦sÎ,ì,Î=H/íåò>ß@Ó˜5ešµ¯fWÿ?Ø›ÝP~”DÇv6„R§¸W 1ÐÛ_b`Xm¬€1†8Npë“ܹk†Í Ž*iÁLIXö½¹¾¢#lè›ÛÑìɺ]†ºÜ\Ao®gã»#2Ž\Hçû­f€Oj·g7›ñ— Þs²qf!ŸÍçê£Sn$ëd§ÛA³¹ pA€æq·öé ›=Ñw}öÊÊX3Õ›íîÉnòÊ™…ž¬[zÄýÜŒB£ Ýßw ÃOÚVfc~Gˆ“=6¦dU~wbøI'“EB€1†ÚíÑ VÞÜ⣫f¯¬Œ]x¸R›‚á'¶­ëèÙ䩵ЌšÈ+w3nR=hEÁ4€ƒàt‹àŒugWVÆNݯ×>nËÊÖæX`Ì:¹ŽBm^ˆ ) ø5¬4ý.Ù:è¾5W­2fÏ:Ùµ¥“ÅJ«±'â~®)©6¦-§Ù)”£Jî%J"h­gµ1¥NKßÉ…ÌÕG§ò*_ÒiÚõ{3hÎî´­)ð­½ u¯(‰ Ó´š¤T´¸µÆ‡Å¬Òž:Øe¼Þs½zeåhUS\GUÎ8ŒÙL3B½a[™.äm…­ÙÝRÁùl£µ™QhÁ!¸UüÒŠWÆ©1HµAjÌŽH1·üÒ[Ž­ÚsA˜Dˆ)œ¡4™ ãhãw0ŽŒ½ƒ a¬(¬ÌÆÜÔ4Z æ‰rë¹úX)+ó¥NzIJ,ŽSÖJ×:BØÅêuÍßÿjçœÔ0† 4–]ì|Ö [ ÿϽŒM}aëúBØÅu7óÅÚÁÔú‡1¾ã‰´¸½1/Š#¬ûÿfØè¢!3Ùâ\}tj/:5 ”ðÄÅ›v̱A+[ 4ºùzÏõjBqµ›§ü:‚íˆó·¶e;çtΛ«Nuò². ›Ýû`šwâ$êzWXl-Ä}qenh˜ÍϧD:¹Rç¼$q¢ïú욥Ïv>ã¬7If-«{-¤&ý ¼ó“–eoЊ)ÞØmôl¢iããçÅ]¢S†mÒLGºÅÎ9AÀóÎN4ÌZ5ôq]xû=tð ÷mO-%M5v 4ç–_z+'íyiƒÒhòÓ”fâ$.YVf}û‘±Uq›#QL·ÔAŒÖ³Oæ:F§œL¶ÔI/MÓ ë¨c13DÍ)åtd!NÏŽA°6kQ÷ºrm§ô«àë—˜%Ðãö–^þÚ0‰ôð.†”Äq°‰rŒéÖ%QŒÇ)D ŽjªÓµw :²Ô/©N¡·ffÛ foÌK:NäºPa¼ éx›0feI×ÚJ3[¡³ød®ƒYOD!RÝìôÕ¿\þj5µ7éðƒàTÖ¦õü £xq|¸è8¬è`p{€ùSÀ¬ áîíO±øéï@iøfw&ÇÛÖµ´ƒ=˜“F‘mÑÖÀ«_ŽQƒfu|§µ„k³ú–)uÎa:zä‰3]mFÑæ˜¬íBº"ïN:mh=aÆ$ÞÉ­…á6—ZºÚŠ‚¢éð´ÛGõaÀömÄša¹¡á9–VCàÅ—-<¸oá¡ïãþ½*Âp¹;…6¦ÚŠB0&:B=Kìm>‹ i$ºCdž¾<¤H4¡µ6ý>ÓÈÚVlÌT+&¤¦=§oàòÙ¸´•V§¨Ý»³‡ˆî[ÁTëêjÔêúMŠ´øxŠëvIjŠqÜæÉQY8pŒ™i]Ád’îÝ]ìÏ<‚`ÐÀ`÷nÃÊ*,58n~0!hø¨/5±´øñ,`fNôÝØ‚6¼Å!ͱŽ¥‘±P\«¹ì:ZqŒÔÐÖw¿£ÐÆ´ IZ{Ôu„I;üyé•c(ŽÛ•žÿà®^¾´~,»6€sTSMmh\‡XØ\—ö*Cw{ëdLIJÅÓ‹A¿žûZM¤ ÈÚ"¥édwïÜBR¿Yc³UTcª'ún\@ßÎq1 éŽÈ(öE(ë8ÕÐzó]% ¾´Šæ#é®Éfaª§çRJ÷ˆQ6 7íÀisŒ1ïØS‘Þ\'Õ@jøžwh&f*I©rxxï޼xtwEÙ2›EÐZ…6@’¢¸§›Ýo€mIwðššÝÓÊ++cňLIë­´Ø…/Ì}l…jmL±3åàÛ p˜)m¦$\ý{ðÜ]é?\Z^’ DÄ6®®GÕ±€(Ö]eöVÈŠ——ÇÏo· WVÆŠdÌ”Ffz®>úfûT@„ÍÂfþÃßÁâlgôª/¯]ø­ÇìQbÌ–ÔkØýzÏõꥥñ ÐiW}f/Ù¢”'ÍÁÖRsc T0ï|!Fqee¬$æãKKãUÛ¬1(2áÀ`µ«Äº^Ûs2îʱZWÃÁ¶·bÒ( èKaGn% Ž`%^ï¹^[~iFXf:é(üÄ)à7õÔ¥t¼d[è€l~2?P(<2Š÷!&'A1¦¤«’4—fMçåÕ#Š2›žÚow¹cÒ-Õ‰ý;tÁÍ;9ɦVôK¶F`¦.›±’aæv·U;{²„3-dØjK IbX2³OZÐÛ·QF1& Ã3ÅG^šzáEÜ»séÇ¿Ckue­TËp¢ïúì\}tJkSêl°pl{tUg—ƪ0Ô†L¤š!Õö†{Œ]È9ÖÉz3^sKl#‹´]”½ýS!ïõcàP?¼ Ëwñ¿çq ÇA”¤¥Nß›u,»we]Zz錞ê„õ N‹øÍ'-¬}×gg—ÆfmŽR’ê Ù’Ô Iv1ßÓ7Ïçs{Ð{`*wÕëÿïÀsXªÝE…°ÒUXÌw…Ã#(ýñ¿ÅóÅâúµw[/vãÇ^Ãï}óÛxþ…ÂEÛèÙ)7k_P BØ™ ¼ƒ*‹l>‡82ÐP¢±º¼Šúý*–ï~T5žÚíFõ±2³'iÜ[~é-cø´eK¨|/„°Ñj,U“hµ«!õ½Ú‹SNÆ9o Œs¤Q«:Ñwý±ÚÄ.-ž·,{JܲÆQUkÚö´£oœ·,^bVvFBfs0ÂÕz•¢Ö¬¾y¢÷£·æêc%ÃøyËE˲AIX5úñNÖ\}tŠóÌ4,«hY)%UMá̉¾æêc%p>͹(Y–@šÄ;ò»ß.5lZ”˜•)raCª<ìL»ÔjøU ›ò=dò3usw^Ë~–Fѧ9Öy"âÓl{ÿ§"%Ĵݾ”Ë€üyèý‰RÒéé³ìâÅ û Rùdý·£å2Ÿœ,€affÆ´çM³‹/våy“““fýùã¬Q©T”Ëe³Ó»ÓÓÓ 0ØÂÓ'| «ýÞ&_[yÚÊóÎül®±•§õ óqùÝŸ®7ù½²¸ø©ÿ[™Á"–Ï4 ‹ûÁQ«\†™œ,›™™sæKAŠ>8j-x~6ªG…èºË T ¡l]­”Ù™sæÊ•oŠÆx­? ƒv¦D28:üàõú¯hï5d˜__#ŠÔ⥔G¢k×®m¤ÓGò×*pàùyr›8I#@à‡^0^pia~Þ¸ÃrP6 4k2lüÙ@=Ùõ”^ù¦h ßê Üú ‰æÇk#]ûm#øîzÈÔb°tµ<Ít𻟃wæÌÛÖ¼[puj ¿{cÄÖ‡â~&/ ÆA¤¬)ë‡eõÁ޳P!sk­¯¹þÍòÇcîÍQqÚ‘­ÚCÿ+=«Én'ƒNOØ<Ä!GëÈqÆòl­”³úîzüõl¨§§§™”?™OoöØ®}P=¤9"ÆÀOk| Æ]'gc4²¶;4 èC ÞîXvC%òÏ Ñƒv=äö¹v£²CcÀâÜCÊz¸æ9ΘÔà.Ó̃1}°tÎñ8ZPæO¾5˜ì&ËS7Šßd›"ç+W[8À8Ï€s œ[0LpcY†1æh4~þ—¿2ñ¡­9¡í¼6L0N) ýŸÿňNÚ¾ÃlpðÏ-m»®ÑfPkÖË,ÛÖ†q±ÈÕú× á_ždã… A¹æA0÷°ÅÑOHóÌœY[ —srn œõѰ¬•'+)Ž!ýÜâÝïŸIËåJãýÂb0²X ßóœ†ôû ABhhZ~Tþ^òÃÊ{Ky·fÛBØDYrý>©TŒ7…Õ0*„M© AèV¨ 1á2õÛÐ2Š`„  °LB.Cx+C‹~T.¯_Cü;üÇÿôöŠ;\>¶|4 x €„¬D€¹ /oä·“Ù¥† R9qA$ Dlûa²lpæ]ƒa™DBPq„ jÀì%~aÕ~[sÇA@$Â@ˆUBx×CÐô|/iË&Q©€]šž {¡Ÿ„ÈÀ²<¨Þ€*gφ3çö—•ìÛ(ÖÒžôb Žwn?§=rIH$DBBC€|Ï7““0ãg(±= dL‚ ÈÆ i;Ž ÁAHI ’„Øî ¹MN~ÏŒož¹¨ÁR@€zã×ÿ³úßÇx¸vmà9Ì¿;ãâÅð0síšþÙÃ> é†B¤lŒDè¹á›(lF€ˆ”$ˆd¸Òhx),pe¨E(ÚC$Gº²{LÝ.Ü€5(òJÙJI ªî ï[+Wß§™™sf]¶cÇ€Êôtëµò5yC\‚D{O¥nèa“•x¿hñ™û)„6’D@"$4ZR!‡ ´Ó5Ĥ †pmY!º7ˆ„€†¨}+`ØoÌÿà{T^¬ð… ÒË 4$R¨û¡h.Îê¿ÚÆg ®]ÛXkþíï“÷Ý¿ò¹BpXåî<ɵ+RBJ@à‡Ò_øÅ™dæÜ9ó³‡}I!$D[6AH¤xm™+7Ýäæñ£‰Brm§´±}pHaÐBˆCµÆüÆifàÑ?33c®ôOj¿­…"1@¸5À÷¾˜»îÀJ‚$’@P‚0Ú>uï(´„P ;®h®6?jEHA"Hˆ±Pà hL¸ ¶¤ÀJ¤ˆ„ÍñWÜpæÚ9ýxh7ce˜x‘@{-!DLR¬ … ~ÂH¬ó@†±xÅ;aY"Ð2YŸ!Œ´ENÊk¨FÿúÇÅHßO®Žä~ö°ïÑ`{&Ò.]Ѻü;ºômt "‚ïi”Ëæs)¶ž°‰„HÖ|® ª­oÀµkúÿhä …@9PJ Árè†ð|,¾Ç\WdÕ ²m@‚@”±z¼à§ó`~Oy@ „ †T2v}7y·pZ¿¾ Jì0ŽòE"ƒ0 IÚ¤È(4š¾Ð x¾ }ùîˆ5‚ðHZmd$RäE tкÓ6R¡Ù) ÈÜ6âa” #áÛ#x93ü“÷šÓgÏFÆå)/ ] ªa÷Üít,H‚•öÅ#Åy£”$W‰ÄùÄ•‚”’„󦛟‘T*$®È'’¼tð•ÓñÕ—ë?þA8â{‘‡!.!µ——‰'çó"¨ ÑjerR·ËÅó𴔊\‘O\‘O”T¨ì/`.4´ø”lʼŠ<Ô“ClÄI®žö«?ùaxõ´Š÷)ò Wy.b×-xhÎO:üô£|I)ã|A"ÌCDù¼LòR+¥V<ÈB Ô™·ßÝDŒóÆ“ª[—Rm£ËM=õúeâŠ|"„ÐRªŒ¿ðž}ôèQþ…ÅÈè¸i»•AIÀH€FFÇ7¬¿r±¬ÅP-†DS;ò”¢‚òl÷ÎUûb¥-mcÂež’–§ H$Š!ôúý[(_z©bA"%BP"çyû.ëÎ\»¦G+‰Ðc2B$†·Ù0sfÑåÇÛP ¼íÆb?ðB¡¨«t½_*D†ÞŠ‚¿¾R^]«BØ‘d*‘L0Øn0ž)OVøº.Ávë2èÒåN£\.Ï󵄗A‰§@Š­ïqù‹E ÷rÃÀ¨¦eT£R÷rcã2hæÜ9ã^nP¨d° Y«!<"¨o C(BÛ°b/ð’ïÎlnxð|_K´×SIPãNí‰|g¹ ßKŸÚ´<‚\D@…#ÜS 6è ?u/7º×Ú†/H$ðý¤üZ9úîk§ƒ†ª5}…¦dCƒ$´ïû¬K—AХˠN]î<*€ïéMYTâI¾¬†“ÉòþRã§ò·¤‹* ° ñ¤Œ=$‹*xÄ V*eýo‘*x±'eJŸ C5]©TXy²ÂqÈCCz‘R^ 7œœÜ¨\†ñ<¤aÁ‹=Äž”1†¼£#OÔç49Y6…À¥PŽ„‚ØcHáùÖåÅyëâÅ2€øO{ž{âÅÀ‹CÃÉÅ‹e½õ”¾%Ú:XãK¼BzræÚµsúõú¯è½žŽþÀlzªzâPz |òåHâùmU\.4ŒïûäÃ'Œ`bÂe. ðÈ— ø>ÝR.ýô§í¼¼so)"~쉟°à§ã7X¥²ÿ€jfæœùéOÇiBD _úäÁÓ¸Ñ~>Žãû >ù1äFß)ŒÓ¹-J.—aCÇS¬Ï…O¾ú£®¿,m¯W(¼O¾ßÖ|^¾Céz¡íâŲö€´S—¾muÙU ={–UPfÀt¬¿ðD·¥ŸÙ(€ÂK¡ùdâøpÜPóIaè—ĶـJ¹¬½‘ÓÑ„Ž'Ôp@ÿbÍXn)ÒÇ©Mcˆ·ð~ºw¿w&õ=?i¨ö܉Òp‚Ñr[9ûåÿܹsæûh1Ô¦wKÕhqâ}Ý\ß…P.uòtm›´—p ãicÆÄñáX¨ gôÖ‡ÉrÙ†\j¨ù¤14ŸÌbCNà–¢.] U£Çªzâøp²ÛúŸ{çUgOÃÅòf03Y©`§;ýéé³ì¢Ù<Õ“• P.›‹[ÂëIÀì{ÓgϲýÌœqôìYÞI >/ž:õµuÎFSM‡>¯Û»þò4užýk‡gãs 4Ÿÿ¿Æÿ†áE"ÅÉIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/jdftx.png000066400000000000000000000146711316323560300236610ustar00rootroot00000000000000‰PNG  IHDR22?ˆ±sBIT|dˆ pHYsÍÍžòÓNtEXtSoftwarewww.inkscape.org›î<6IDATh½šw”dÕu¯¿*§®êT'õäÈrÐ00€-!ì'$/KX l¼ü°%iV~Kò“0FH!d2 LbrOÏtOçXU]ݺâ½uóûc`#Þ?ÚkÕªªµÎ½÷|gŸ½ÏoïuÇq>ª½5ÔqœÓ¿„Óß»ÿÿ™MþH£lÛ²p Û4O}lû ˆ"‚,#J¢,#H¢$!ü¡Î â8؆U­b èssèå2†ªbè:–mc‹"ŽË…èó!ûý¸Ãa<¡Þ`·Ï‡ìrýY€ÎâF6Kmb‚êØJ*…V( ) 5]Gw AÀ”elŸ!À‹ˆÇ‰ÄãÄÚÚˆ44àñùEñÿkb–e£¨8~¿I:óõbYX• ÚÈÕC‡¨ SËfÑTÍ0¨Ù6ªã ª(¢Iº,cȱ¡xœÖåËY°jÍííx}>„SU zfy}÷Iº»û…;?q9—oÞxFÏ~(ˆcYØ…æè(æÀB"¤ªH–…ä8Žƒ8€õ¨…Úì,B2I¦PÀ‘$¼.·ù ºáÐs²È£Oö³çÍA ùiÌZ¯«Ìùg'¹ìÒgÌ# òvV2M$]ÇcÛ§‚ÙåAÀ2ÍS0Àé{ ‚ `º®£ XÉ$3©óÊe¢ È.×>.W°xâùæÇ- ˜ŠB9‘ }詃©ºiëèÀQ·ÁåËÓÄòx0$ Pd!;kgS¶ýÌï‰EzúôŽ(ÌE–,"J"Û·oÇq@’$‡FyõP”9cÈ‚]ãTt9€€iÁ‰³ÔÎö£Ï¦ÉwwSêëÃÌå°% ³ZÅÒuÞ-JÞ1Žóùá8Žmc›&F¥B5¦0>Nqf†¢ªs‚e¼&\EIìàÜUõ|ã«kùö?^Ću”«ðÆ›ã”+Ur¹==Ç# òÔSÏ"¸Z±­~·Fg\£.P»†ã˜8¶Mz0ÁÜ /‘{î9 »wc$“¸‡H]Íóæþ£äqÚ#oKǶO» €ã`iF¹Luzš|?™žr‰$ÃZ»¤+™;XWù›[c¬]Ó€ÛçãêÍçä@š^:Lfò%^yåyÊå2¥R‰sÎ9‡™™Í ]‹æqöV6¬Šr¬;Ï7®0§×p5=CeÇt¥ˆ¡(ºŽÏï'4o«Wnl<½­NƒØ–…^*¡f2Õ*‚("JŽe¡‹(33'&ÈŽRH¥˜*ʼ.\AA^H½ßá¶ÍË–Åp{=ˆ’ȼV‰–f?“ƒ# Ün7.—‹| .¸€½{÷rý–WnÛD(èBÂA(ØÔ¹KÌYØ‚®@±zÇ0·ßO]k+‘–ÜtÀÊ8V­FijŠ™cǨ&“€(ËØ¦‰V*¡ärTóy*ÅYMf§s)I÷2ün‘­kf¸àÜVüá‚$ÐÜ 1&32"ž)PSUÇ!‘H°lÙ2–-[À¾ï~ßêÕ¬»â lYÆ´UKÁ±ÂQ¾EK0&Çqòy,ÓIJmÔJ…R&ƒ'ʼn ½¥ådÇq04âô4Ó}}†‡±uAqlÃ00tÝ0(š.ÞäF\+E¸pa‚m—„ˆµ6!y<§%„Z«199Žaè”rsJŽ®®E466ðÐCñùÏajÏÄÿvÏ=hW\Á}Û¡¬Vp¬*85š—µá;w¥f¥‚aTJ%J}}‡–l–öeËhîìÄíõžÚZoO¸Z­R,—1å´Ë,ÇÁttÇaЙǰËÅÑY¶]覣«o ðQèöÆ×µâ™åÒ+¯Dr¦ikmáÙgŸe``7Ÿ{Ž[q(ï݇xí¥—IÝ[FUŠ8–Š$´Îa…j@Ͷ©Ù6ЦQ™!­(¤ææ(”ËÈ>ñ¶6dÑåB…"4·¥ZÅz«Þ° ЙIZÑ‘€TåÚ ]¬Ú°Hcã{NØüœÊ£¿=ÆàP I4¸ãŽ¿äþ¯–©©IŠÅ¢(òÊþýÔ*êY & ¦¨)9ËÄé ™äúȧÓTtM’0eS¨Ôj&'q‚AÚ—.¥1GÙã!ØÔDÝ‚dfg)ê:šªbZÖ©ì.Iàñãnµ†a»(Ç®Çåñºa‘H•ùÙ£Gyúùc¨j‰öf‰Öx„ææfzzzEEQP-‹[~˜û>÷9p»ùÏßÿ7¿yK/à86ócøg†H;D!ŸÇðxðÄbš›!@TA ÚÚŠÇç{'kI.¡ÆFâK—R®TÐD‘b6‹S«! .Ÿ¬ŽJˆÉA­&òäK)4ÇÍY«ðy%Gr¼±oœ#Ýc¨Ê‚]eõХě£Ü}÷Ý\}õÕH’„alß¾ÛﺋÛïº €l®Ìñcl³„Û-qÞÒ0ÆÌùlÓí&ÐÑAãêÕĺºp‡ÃX²ŒaÛxü~[Zdùˆ(Iø#âK– y½„âqré4ª¢€(⇉57³È3ü‹“¤f‹Į̀üâWysKH‚EMS1tǬ€]aÁ¼0w~âR~7l Ñw‚»·^ÅÙwÜÁwÝ…ã8ï$U¥ŸApJœsÖ ®Ü¼œâ‘"RK ‘xœÖ³Î¢míZÂÍ͈n7ÂéëEIBÅwDI– E£x¼^¢ñ8J¥‚¦iˆ¢ˆÛëÅ "¹½4?þ=Ì«˜¦ˆ© à˜`ë8v K×󹿺‚åKZ0M‹Ç…¼o/CCüìÞ{ Åãl»öZ¼~.·Ë¡k~”UË[øâço¢£>H6ä!ºt)Á¦&, ØÐ€x†²Yzà@N‘¹\xü~á0¡º:±¡º:|Á >Ÿ—… plƒáÑ)T¥Œc©`)`+Èby*çlèdÍ"‰Ã;~€F=?½õ云Ñ4’€î󱤱±׾CÙi£ÝÛKbtÿã37Aò•YµéÂñ8u­­øêêÎq:FÞm‚(žªä\®Ó¢ìÝ7¨‹øùܧ/aÍÊVžyþ0CC“TJ94µDsS=çlXÁDÿN^{m>ëÖmæÐórÀ'0טn ›ìö§${®“Üý8‡sõµ³ŒŒNñȳGؼåz<’Û(вñŽG>À„·ª¾w›cÛØ¶E$䣵µ‰¶x˜ùÍ&ziÓ‘Yµ¬Á69ÖŸ&ìÕY¼t5í-³d\k¶ÞÈæ ø¬ ‘–V6nþ8Éã¿äÐñ :×ÝAmnˆ]o$英¡+NßÎ'_ñ«o8U½­?ŠGÎd–i¢) s™ “#'9™AKÑÜæ‚MóÉç³,ét–‚8®ådæ 4æs,^¾_ƒC]@F¬x8Ô§ÑÒ²’±þýj’¾T?¿“ý¯íc<-qã–%”&ú™<ü*ÎtÖæüõõXq¾m­Gã8˜ºN5ŸgvtˆÔÑg˜<ò4»_ü5½ý46·sѺ¾ÚA2cϳé­\¸Æ…_˜f:™DnÚÆüö:úz^ãää,ó×]F¹˜àġݼ~@ç‚õëÉOö Tª¤Šêš‘žD´,æ’3‡2¾ëQò“¨Å"¶i¾oŠgÜZpj+™šF5›%71An¸µ¬£«%N LQ¬yY¹fMõ´Óìxã0g/Öh]q±XÝG±wÿ1:›eš—]ÛåpøÍÑË3,\v=+;º(ŽíaçîýÔÕù¹ìú¯ ÖTR“Ý>1M[cóšãÙ~ž|äßýíÔ7· ¿;oÛ™t¶©*”Nü’ÞƒÝXò*üÆ0‚Z!$Gظ¤=#&ùL†d¹‡X(Îg)×ör¡¯¿v’®­Dâ OŽâÝEÌ3KØgÓ¾ä2æ‡+$û†ñê³8f²{#feŒÑÑ~Äj•Ä|qCr-Mvä0.Cå矦kÕZ\^/‚ßæÃ·–ã`ë5ôìfM ,fxãÅÿ`ׯP×´„p ž ~ÚƒE^|î2Z'bómøB­´øÓ|ã›ÿŠR™£eÕíÔÅâ`VسwC\yÓWزår,jF’gØ9¨°rã¹ÜpÃõ¸\Ê 1ŸÁÀ¸‚ª{™K :½—ŽÅ~ûf=åÙãê¢]$äƒlA£ˆ:×C1 ÍãP\\²±ž¹Äaôâ¶V!ˆCg}'ÊÈ3ÌMìŨ&ñz%FƇñ‡Ã8Ù—H½ø'bä­Ú}.¹Ÿ`ËÙ¸êP,NñÊÞ>Ú— ¹´‹ö×#†W(’š™E-M•†iY{áE7Ò_ÈÁ}»(eÇ{K„›–1oÅÇX´p!ýÇß`z:Kµþ– ¸íó?  ×sàÀQ÷Í”MbÞ·\{.Á"33ʾ¾¤pîH˜Í—ŸËë¡0±ƒŸ>ü}6]|ã‡xä­S¾¾m9¢“Á© âwg×9$犴¬» ]“D!FŠ ŒÖ®žG2ïcr¤Ÿrfy-~^98Kªà#>#~©ˆ^™Â2^ïØ?Ú‚Ðr;'L&rØx™+[ì/pùu7ƒ«„nM#s«{zrl»æŒê,fá8aiš˜¯Âw¾õo»­á¨S8¦Bzh¯í9ÎY—™O7ÉÀÓ|! š/æ¯Ã¿ááŸüeÖEMÄÈ%ñ7_Ìù[;èL10tˆnNK8ƒ×åâ+ncË-”ÒGycÇOˆÄâ] ¸8ûÂk¨k^C:] ÷Ð+ ¸ˆ×9xÅ›>vñy-ˆÙ{ö06‘¥& ´-^Éâ…\‘ùˆ†Åñ¾_Ñ7˜b0£òˆS›«†S"âÎã6'xð/òâþ9¶Iö`— y5ºøùOŸ`ìèkxêÎÅã #«“„œ,^•/í`°ï$rýEDbíxQ|Ö­Q“ÞþIŠª‹®Õ[X¼l5!wŸ“¢! ‰™Gú \¼y+×\}9n1`OÐwS²l†çDÎÚ´œ@Ûzd+Õ“´6úp‰:©tQOý»–Â.õb•ú ÒOÈ'P9Ô›Á¬U¨Í¢–>‚–ì¦Å/’ev˜Å'8•bÕcÔW·' jÓïÁ¢‘Ù‘ƒT¦»q+½] ^Ie÷á›6,cQý$]Ñ>âînÂîYd4†&áh㣤ÒS””)$ ),38]dó¦ Fñ$j®›Êl7¦šÆëð{eäät€}€”ÇÖf©V«¨º8È®:ÒÝ¿ÃUIbÏ¥pJe„¢EÀ–™áבAË"V+¨E“ìe®f0uä—,ZDÒx5 †‘áhoŠñ}ÿ‚ù ñZŠìPÓ¡ªê”á¯â_ÖH$8 L‘QLІC¬¥™Lº—H €V¦TL‘-9ÂMÄbnäš<=Ïý_–´Kø½Ù‚I"­MÏRýìzy'‹#>K§\¨”ü˜J†hû z{û‰F,\^EÃK±Z \­²¸«“‰±“øåó;£Ì–a<‘ÅqnßbçžÊ¥±º(#I(•¼¸±q;*‰d4 ÜNžTÞ`¦h³hQÃY³³{ˆúKTUŒ¢bøÑ-Áqç¡o}‰òÌ1Bžš)15]ÅãvsþÊ O=7ÂÒ˜CK´[ÑÉgªÌeËøÜŠ!‹…ð<ÔL™B…Á¤ÂEç6©28kÑs$‰dŽCý ۿЊwágyúé'ˆ,TE£Òd*+qÓ ×2ñz~÷øÿ¡>XÅÔ ¤f+Lç4~üðÓüèûõ–(V,lWsZwÿNûÝ÷ÿ®Mwò怋cÃ:›Ö.à›³€HH"ÐÔApùÇ9žór8Q£¥ÓÇ5—q%\^‡¥ë/fº,ÒŸP¨‰œ³ÖÏŽC–¯^ËæÍ—’È ì:’CÀ¡¥ÁÅþ‹7rë [Pjo™¢Tš%ŸOò™OmãÜå7_Õ–Ê›½ ½cW^û –wXtÔå¸eëª5‡‡«¨î•ÜûO?bý†ïh­O~ê¯Yê}…®Ž.;O¹\¦¬Ø8¬[â纵 ðA”â©´LE¨ xÄBS|úÖVD|¤³yvžPѽ~£ÀêùE6ÝéG©6Ó=jòô>‹Ñ”ÁèÿM§¿À—ÿ"ÀÕç-çé×gINsà™ûYÑÕÌy‹LÚ=^ZëdžÞ]£˜ÚKi¼†×N0/’æ‚u ¸Â]¬¾p+k×­þH4îí­‘H¦i¬))c36ù’ŽR+ózÿ tÓf¢b3'›UhH£àÂçÑÈèfUå«⊴p ûšcùŠÌdÆFÕLî¼v ÏïØK[sˆÖæzFEJU“• ý<ñb?W)5£Òé"…²Êt¶BG“—»zéˆV)Wªô éd+tó"Kx÷›'Oð½o ¿«Šc¨LÏÁ=_¸‰°3À×·¿JÀe·P¬:|nVµL³ãŠ, 4ÅÛÑt‹DºÈâV_ Šã”(‚£’Jg‘œ·\ãDºžDÆ& +är9†&+|ù“+ðuÞÌ“OüŠú€B©ãØp¯×Ç Ïý‡úéÉ#(•9§Lνü¾ûÐ?Xk546qÍ ·SÖC„B>þé+7ÐäÀ,PÔdË"k6^ÌU—,áãç‰hjž¾± ë/¾¦¦F:â>¾xƒŸlnŽ—føÚ—n§©u1Ž–ç–KDTUãÇ¿ËñóŸýœå c³c,lRñ¸EvÎpß½_åê‹;™ïE¯•°m‡K¯ü$m\ÀÙË$Î$ãER…¿yêå÷¨ª¬GnºéfN<»}f¢‘%_6Ñ hk©gój“ï8j)‰‡£o>Ë7¾|1~AE-稂 “žbM«Áú˜Æd²†%Õ!¹<ûÏÌoõsóE"#‰NŒÏ 5zw?ÌâV›ëÎsq(âøHÄÐn2ƒ:sœöh…õËbTÄØûæü¡…ÕÁ!7Ý=ƒD"Óy±T뷞ſ?ò"ë—GñyF¦ÝTíF×ë<öô›,n“0…95ŠD’£'gè'ÞÜH±ftr’5‹#œN3š Pñ2ž(2–Rذª_>¹Ÿ ×· ZeºOVȾpýgøÕÿóT¦g ²h_réûæ+œéí ¾ÿoêÛCM³ùÔÍsÅZƒ‡?Èïw&ioi¤!â/.‰1“Nòƒ_ÑÖC”<4EÎZO½žaÓúµôÍ`UÚ£*EÅá¦odÏÑiFS*åúDV/meÛ­Ï£¿øÉÉ!ÒYKn`çŽgè9ð,ßúö÷(ËäkQ~ÿÜn:::>šGþç·¾ÏäÑGˆzr¸´QÔâ8Mõ‚Ñyl¿ÿjDu[™¤\‰Œvpß]ëhoâ6 LTyf¿Ákü|éŽk‘µQú|ï±q^ÞÕË7¾º¡btd€þf’tN£+–äÏ.&5¡òøŽ%3sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÞ µØˆ±xIDATxÚí{÷WT÷ÚýžrΜéà 3ô&  QDE,¨X°E¼(¢b¯FåÆ +bâk4Æ5‰]ìݨ‰½ÇÑ•ˆb€ém`$ÉwÝ?à¾ëe¯uÖb­Ùëœç9ç<ÏÙŸý|Ѐ4  h@Ѐ4  ø? 6܆ÿ7Ü‚ÿ¥«I“y2d&@}0yò~¨Õ:@lì4kÖàë;Æ¥ WLž|F£ Ð«× DF¸»OÁĉëJX愉ÏÂÅ%u}úLX­c‘šzÂ…ãÇ_Bpp{@DÄ>Ì™³ `4GzúuOÀ?ÿy;4k¶ î¯;ƒv(–-» ™¬.½¡C¯!:z°#Ç=X´( I±X´è DQèßÿ$úö ðòZ¥K:rlƒ¹s/A«5ºvÝ„¸¸ Ž˜ÆaÙ²cŽ˜ü0sæO0™œíÚ­ÄСÓ1uÄòå§<=¦L9›ÍТÅ$&¦8î{[,]úcý½xï½=ðôô(ß>3­VDv¶'ÁQT£ªJ…3gÞL&ƒ(W¯†@©” V‹ÈÍuÃ;r‚ÕÕNŸn@QnÞ Å¢‚$ È˳á短P(DÔÖ*ðãÍA¢üòK|}AØíÎ8uŠËE( œ9»=j5ðë¯A¨ªZI’PZjÁŽ…ËH’§N½ƒòòûÐéTÈÊ*ÇÞ½?C¥Ò¢²òìÙc\.‡$)pî\)Á­VÂóççqâD"A‰ššû8x0¤Z­€«We0œ¡Õªðúõï8~¼? @¡(ÀÑ£MQS#‡N'âÞ=WX­6h4ÊËE> ™¬.¯~h†ÊJ%t:~û͆²²j¨Õ"**Ô8r¤©ã%‘ãôéf(+SA§S#+Ë…BIQ]-áèÑfõ¼3gÞÁ›7ªú‚¢$µæüùù4­ÀaÃÈîÝGösÆŒ½@…"˜}TD³Ùƒ8`Ù³çX Ï®Xñ˜(“ysÑ"2(¨7ðÝwÉÔÔK@›m-7n$뾕&~ô1˜UË•+³€Ã2~ÿý[žÈ9sÈÞ½§#"Êøí·e@­6•;w¾å“&‘C†Ì&6kVÅ-[ÞUªÙüî;PÉáÃ9rÌæöíU@¹<‘_M ‚ž8x09~ü* »ûõ¿\«W­"u:`¯^ä´i_Æ5ܽû-/Œii¤»{°C‡LNÞET«Gsûö·ÿ<¹¹M0w®7´ÚÍðö‘™9>>ñÉ'ž®ÃåËv|þù3¼yóæÌñA|ü§ˆŒAƒôpuÝիñfgΔ`Õª;¨­m‡Ù³ß œBëÖµøñÇÛÐéâ°aÃmlß^ŽŒŒ^HOß IjI“Šý ãÆùaêÔ«°Û{aÆóØ¿_ÄÖ­]±dÉf89uÁäÉvˆb.BCE\½zJe"¾þúŽ3bÓ¦Ž˜?ÿ¸¹õÀ„ /^‰™30{ö}äæö…N÷-ôz GlìZôꃉ_Ãb)CZš„åË_àñã¾xÿý¯QYŠõëà “m@xxΞt: ñðáY””ÕUÖÛÃÛûGŽÜçxÃB9zt9ÝÙµ+HöåÍ›©@W×}5ꨣŠ˜˜HúøÔ½mÚǯ§Nffz“\Cœ;W 9‰ ưsg%ÉŽ¬®þ„®® Áð/& pÑ"-ÉD><;ªI¶"¹’aan¼uËFr1ÇŽíÀäd5Éž:5•íÚiH¶ ù)½½Õ„dΛGj4'NÔìÇ7f²eK ÉÆ$?ed¤7œÅ¹sßeR’ŠdOÞ½;‡-ZXSãM2-[zR.猤³³ ›5Ivæ/¿¤ÐjÕóùs’ËÞ„ƒI$ßgZZ`‹Ù>|;ðÖ-W’KÙ”}ûªHŽazú`J’­øâÅ *•#¹dÉÛjsbBB)}}Ãß>#P¥ àôé¨RùÐqðàKlÖ¬3Š`ž8Ñ•÷îmbL èëÛˆS¦¡F@ÀÀØØs ëF ^^39aÂJ2ĉùùÿfjj&$€ÙÙãxíÚ*ÆÅ-YTtœ]»‚ááV&&^ ‡GZ,þþû(þöÛÆÆ‚;wÑn?ÈaÃÌüè#srÒøùç#9jøë¯1|út'‡ ·mkD»}‡µ²}{‘C†\ctôXÍøøq/>x°›#GJ\·Î‹/^lcjj+Ž!² `·oOal¬ŒOžtâƒ{8~¼W¯veNÎf&'·c—.`ïÞ;8pàXMxëVŸ<Éà!ΚåÄW¯ÖsÆŒ®0@`vö(>¼œ‰‰ ·÷~úéOtìÚÕ‡yy«˜’Ò‹}û*˜™9ÇÂ!C$~ÿ½?_¼ØÅ¤$7FF:óý÷Ðã 6o>“ãÇ/"И€Š¨€ÊJ?üàA°C¡(Æ… žÉd0ò`±¼„ÙlÃË—¾(.pê”7ŠBhµE¸|Ù’¤€Ñ˜‹Ü\'\¿n† ü®÷xñ¢EEa±Å•+/‘aÅĉ÷!_B« “'¥¸tÉä˜L•P«C¡(‡\Þîî¿C©Ü€Ë—õ¨©y ½~'ŒF'¨Tí ×_„R©Ã¶m.ˆ Aø:är7œ?ïQ”A’^ÃdÊAE… *U(ŒÆ0¾ÁýûÕÈÌ4B©<w÷ÈdÐjïÁ`ØŽƒõðỗ$m†‹‹2YnÜÐÂÙÙ¥ò/a6oCq±'€B˜Íß!/ÏŽŒ '|õÕhµyøã`¨qà€;d²bÔÔÈ`0ì@ii%^¾l‹å<ŠŠª‘‘ᄘ˜—°X¶âòe OŸV¡ À%%€Å’‹¬,Dѽþ5JKkPSƒ¿·Áãœ1c7PB9o^!]]mìÙ$'ñÊ•ÏäÝœ=ûCt0%¥„V«w½èHN¾L''ðÞ½P’§) RéÎ Èöí02$øæM==etqYÍo¿­+ýÔT‰d÷ïŸIƒìСŠkÖ¼¢ €çÏû’ÜÃqãÚR&SqÚ426v:ßy¬­fmí!¨Ó%;>Ür&&‚äý ;wÖ3!|ýúC®[—LÀƒ3)i>?*¾œ1ã,u:_jþãW8hÐÆÅÇŽµãëׇ¸sð`‹ŠþÍ””N>|ö,‘×®m$àJg牜>}/ûô““uÌÍMçÌ™ãHìÐá4GŽœÃÁÝ»ƒøêUZPsÒ¤‡ŒÈÁƒÁ'OÞevö^Êd>ÔéÆ2=ýW¶h!gÿþJ––~Ä—ðfPÐ.[v’ݺ›7»ÑnßÁ˜˜<»‡Ã†MàÀ`ff;ææ ›[ .Xp‡aaFNš¤dNÎ{Ü¿)?þøc_½:ȸ8g&'YX¸ž#Fô$àÉŽ¿ç¸q©ìØܹ³1óòÐÛû††ÚXTôÇ‹#àÇÇûñÇ?§(6¦$Eqõê[Ô|8uêIúø4þS`Èd„ÕZާOE(•"L¦r””8rD½Þ†Š wˆâ.ˆbcètUÈÉqíš CÊÊD9¢RY ½¾—.©Ñ¤‰“) E&a#ºváçg†Lö Èr”•5‡$†Z] ½ž°Û\¼(‡Fã‰òr¢¸*•’Tƒ{÷4E9 †@Èå9„o I°XŒ8rDB@€‚ æ** 0™€ÊJvïÖ ªÊTTì€JÕ®®øýw’¸‚” T®‡J•›­ׯ prRÂÇ'’ô‚°CŠ‹«±¿%%”•AO@­B÷îî°X~…(n‚\îÜÜB·Å"Øl•ÈÌPZª„JÕ …Jå×hÝZ€Ùl‚L¶f³]ºØ P\… È`±T!/سG ¥² z}%NžÔ °PþW#œ Úi2Ù€#F=zŒ¦^>}Úäñº'«lÊyóJèì\ç`ÄÇ“ï¾[×ýü¶Õ;iiz’kÉ@2‘ÏŸo¦FÞ¹ÓœäŽÕ˜€•Lvè0Ìѱ¬l/ƒ‚´XVÖ;³f©H~ÌS§Ri0€áá•üöÛà… ¾$wrúôH N™B&$¤°Q#°¶6Šä!†…Yèä4“ßO*G–“œÌK—>¥Í>aFF­£ ZH®gjê@ GNž¼†..`II(ÉýŒˆðgb¢†ä.Z4”Há½{_ÒÓ´Z¯qÿþºØûõ“H¦sÅŠÑ^>zôošLjÞ¼éGr7{ôhJ¹ÜƹsßÐß¿…ãÓ±‡‹ŸøO†ZíP˜Í¿Áf+­[áP©Ž¢mÛÞèÜùK ÎððèˆmÛŠ±¿œïÃÓ³7o6‡ CÇŽ½qúôÈåÕ j‹%|P‰W¯¡´4®®_àÆœ9Ó;®F«Vn¨©iŽ\±` FãM™1cÆq{C£é†eËŠqûöðõõ†«ë $' -- eeܸá­¶aažˆŽÞ‡ÈÈœ?ï QŒÀ¬Y: ψQ£–£¶ÖJe22Œ8vÌ&­Z ˆÿ—.ÙðêÕ <˜®<=³ú}úd£²ÒC †½…"‘‘m±AA6­PV¦†»ûq|ô‘6[4ú÷_‡_õÄ;±øé§}ÅÞpvþÁÁĘ1w–櫵:tXâb?œ?ßîîß`À=~ÿ½1 °l™™ìÞ}·víº Î€6mpãÆØíù—îžž'˜”´ÇQE-˜”TD›Í“ÑÑ ’1¼v-Åá`ìaRÒa‡täˆe´Ùê¤{ûöä̙ר׃™™~$×9ĉ;ÇŽ%ÛµÄví@²KKÓé奢ɴ†éé¤L¦¦ªIŽæ)“!!µLK{âð—Ö @b|<5!! Ùœäÿ°qc3Õê.^L"•$ûóÂ…YT©@?¿®XQåÈq SSIIÒ{ô \ÉÀ@ËÊüH¦3<܇ Å0ΜIêõ6Ž©%Å_~I¥(‚fó-~òÉŸ~á¿þEZ,>ÀÖ­³9fÌ6‡79¾^t7®„M ˆ$ÛðÙ³ù4›5T©F× +ÀÆaÃìôóû‹ƒ!IAœ7ï%É€’II¿2,,Š …/^Œæ³gìØtqñç‡^uð|mÚDpa@À|N™²ž€+GŽ4°´tÇŽmÁöíÁ˜˜[ì×o*7:Ô’ùù?pÌ57væ¿þõ^^­è⢧Ý>†YYÛ9`èâ2…ÉÉ{ X h8uêcúùµ$àÂvíÎsÈé|¸qc0óósêT7vë&1)é9££Çðæóç}øðá~ð†!!ùvm6•JWV¶ýûO$àFOÏ\¿þ2““}h·oã´iQìÕ ìÛ÷‡ «‹ý—_Ú17÷8, æÒ¥h4:°±gÏÝLLü€•NN“ùÕWw<9þuº¸øpeÇŽi|ÿý%\ùõ×,,≮8w¾óމ³f]¦—WîlÕêcN›ö7Çy£¢¢ûö•B­!INž,ƒ\¸¹iPYy; I¡Ri°gO1Ú¶Õ‚TáÌ™R¸ºÊ0t¨û÷—.UB¯— —硪ê[X­r¾¸|¹þþ€ÕªAUU&**>‡Fó4š2=ú2™NN**Ž‚,BqqS”—Ëqîœ t:åå2œ¬„BQ ›M‚Ý.Ceåÿç`4oþçÌÙëÐý¡\¸°„V«‹ÃÈÂë×?'feµ%Y·HO7’\Ͼ}ÛÖ;sç^£Z ޿ߺ^œÈdî\²„ŒŒŒgx8Heyù~Çy-·l©3r—,‘H.å¡CsÔ­sV¯þÕ1zXú·±Éýú½ÇV­@²ÉC ÐS§Ká¶m¤V«äÔ©r’3xùr:lÒä32j­i4¿ûŽ”$m½°š4é3úûƒUUá$°uk* ܰÔéllÑ$“˜™¹Ž èæv‹ûö½)†«V‘..um°{÷l¦¤ìp8Iîfdd3vï® ™Î•+ÿé±ÌÎþšNN*ªÕ£êÀÊÔÔ7 jó§ÀEgôíûöí;Q´£]»Xܽ»……­±hÑ#í¡Tþ?öADÄ`Ü¿¿ UUÕhÙ²®_·ÃÃãG¬]Û‚PŽ‹-hÓæ.Œ7¾‡RY…M›’›»Q3æZ·ŽEuu:ŠŠü±wïP\¾¼kÖ¨!ŠMQV¶Û¶uCa¡—.É!Š/Ù?ý´*U<<´(-=ˆW¯zaذŸ×YYs!—ûbãÆ ÈÏ¿†ß~3á‹/n¡¶¶;üüVã»ï´¨­‹]»îB£!‚ƒå(-ðø±TªcèÙ3[¶d¡S§—?> ÃvüñG5V¯n¹ü5®^õÆŠ7a4€·÷gسG‡¼¼±8th#Tª¶ðò²C«­Æ­[nP*/`À€xlÚtAA"V®lóç¡Q#;jk›¢ººa+^½rAË–ãpóæ<äç[™9 çÏoÙË øùéqö¬µµ‡P]m¯«,¥²5ÇŽ-¨—îݺÕ9F#˜•Õ´ÞÁX¹ÒHòCvëÖŒíÛƒd>|¸À1TÜÊ3ž/V;Œ6õc“ÔÔT*Á;w¼H®¡··‰€…cÆíÛ'°eKŒdYÙ§tqÑP£Iÿ‹˜ÐrØ0²GÀ  r®XQA,@mm!l6 ‰={žâÙ3+ärâäÉlˆb-**QXhÇÕ«DVV”—W"#ãT*,Ξýfs ^¿ö‡ÝþƒF£%%v<øyyfi!I9 ¬…‹‹ùù…¸rEÂ¥K¾¨¨ÈGaáKÈå¾0›ãöí¾°ZÈËËÕ+®ÐëQ^þ §O¿€LÖׯ?…Lö^^]a4n@qq¶m{‚³g•Ðj ÈÉq…R™=òòºbïÞ˜L„LÖ›7ç@©¬››3.^TA§ËGa¡ }°sç  :(zdd<Å5pqñGUU^¼(€·· üQ‹-[r Ó©!IlÝú ••@£FVܼ™‚‚|¼xˆ¢¢jlÙ’gÏ Ðj‘‘…‚23ƒk( 6äåß}— IÒÁd2aïÞç°Û«þî`,_^J“ɉøÏ’Ý»tŒMŽ29ù`½ƒ±`A]ê÷'ôé3Þa<î`zz¶cÊìÍeËÈÐÐ^ŽU<¹té5Ç>† ܺõÏ}uc“øúö»råm Ùüé_Ä„šsæ]»Ž¬o«ŸþÀÑræsÓ¦¿ïÁè×o‚cÆoܸ1Ÿu9Žáöí¤(*ês3f)00ðn½HP*¸y3©Ó€C†“'áˆý C0õãúõ¬7µcbÈ™3¿#:;ɃY_•ééîÁèÜù(?þ¸n¯Ó©?àÌ… Ëéï_×ÃÃ÷qÉ’Sÿ© ¨Õö§L&s(Á8ªTfGP-©Õ†9Èjµq”ËåÞªTV/”ZmkOEf år¥c6öJ’‹ƒB®-ß¶_&ž …ààõ¥Vêà5¡N÷®ƒ'§F3‚’äãXˆ÷¦“SOÏŸNNÃëR«‡S£iäàõ¢ÙÜÛñ›/Æádއ7Œju ƒM³ùÝúQºÁ0”2™Â‘cjµÁŽk¹ÒlîW»^O¹\tÄÞ†z}³úŬ“S¬ãouº8*jǵZR¯oQßæœœü%ÇT*µ^(õúÖÿÉnjÀ3r9jjkväþ·#B©Ä‹5kàa±ü}QÜpü÷.ººR«R5´Á†Lh@Ѐ4  h@Ѐ4  hÀÿQü?4‰1#ÍLçIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/nwchem.png000066400000000000000000000240531316323560300240160ustar00rootroot00000000000000‰PNG  IHDR²2ø:° OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-ÛbKGDÿÿÿ ½§“ pHYs.#.#x¥?vtIMEÞ  -5'w˜½]IDATxÚíyœ\Uµý¿«zît’ ©*ÂHL•@˜Ž(ÑŸ8 N€Vëà õ'>D‡‡?¥‹ç€F' ’Ä„ A‚(yŠ0U•$dêôT]wýþ¸§:•¢»Óäöþ¤RU·Î½÷Ü{×ÙgíµÏ9-ž…rî¾,>í`Ûk‘ZÀÍ IØ/3*iànà&›ðôUç?âíûíÇâóaÔFí¹šve§S>·ß^˜YˆƒÁSAûIÃ$ÁD@,#(4Ü!û¿Ÿ¿ö£·Ôž7 ¿íÿNåº/=\ Rl×"j  °?0|$h60?Ëf`ŒvØã `±ázð¡žÅŸ¤Ô[Ú.{äw_°w:‘ÐôÞ^Ͱ5]òtО†ýT Úg Þápm# ,Ükû6ÐmÈ«¯úüÚ®ík_~íèÓµá<÷”™×oíË„IýH&Šb„IÈ}!¼t##z—`.GúåUŸ$*÷‹??ê¥Gm Ï{çŒo–JúPm7®Ÿ–ñuu6ØBzAëd°âóP'p[E«ú‹þm±§ôÇŸý‰õ£nÔ*­6v„ÚZSc¢’Ø´±ŽMM˸»M짶ΔJ1’_@KÄÇ–E-†7Ô××¼a\kmqÌøú<±Ï裵JK€n‚ížW‚-›jY÷p#ëÿ^G©¿ü›ƒ—~¾˜ÄެÂ6Dñ‰„hhJhÂîMLÙwSöËÄTs]CCM'À'0kôéڎ󴀃'¤¦&Ú–MµlÝTCcsÄÄIý44E”JÏå ŠŒ£¸õMµ4©¥iL-µu‰8 A¦ Qð4À—ß}ÿèÓµ*j!oªTÆ*=³C˜×ÝUÃckkh_bÂnEjëÊ1àР¶wc[ÙÔ$3¦–¦æ:ÇÔRW— ŠÊü<£Ž-ÚøOrïë þQ8>G u¥K”=´Ô@ç–¶u&hjŠßZ¢¹¥„m¢Håci­ÜE¨­MÐÐ\KcS µÔÖ'P"nB6”JHk¡±FvʉØ|yˆ²ã€…ûðs`}Ø·ø pÅ û¼x1 º øÍ eÞÊÕ_6Uüöjà-á½%lÛÜ|ÈÂrW=2tóŒ|ÏôÐÛ½"Ý]5l묡©9bâä" ÞîEQà¼1x›Æ×Ò2®ž†Æ$9¦±û…SŠŠÔ$j@\íÍ+ìá\S=¦…ï%àÏÀ/);8'܇Àÿ>~ûðc «jŸ €7„ϳ†ò—}€ÍÀ'öààƒCÔ{Q¨Ë1ÀªQhî’G¦{¤„·’vÔÔ˜žîO¬k ©©Äø %ZÆG44ÖÑØ\CCcຉ¸µDQ¥ÇÁ^r?»µLáu‡´ó§GWrÿÚ[({h¬ohåÄI€uaÕ¬ä05À×_ Ò};l« ¶ø%p°*…ë±hå}§­Uw0%|¾®¢7ó+öý5ð×ðý`àðö«¹ßÒu¡—¨Ôß 4†Fú(ûx˜ÞêGá˜Ç{†ë~"\÷`ûͪð(—*ô¢ özÌ™¶ª"‘0¶èé©¡ó±ó^VOC“ˆ¢í墒øUÕ(D©Tä#'\Í%ßü '¾í­¼íˆ øù]pÇš«i¨CB5;ÀÎ1U`„`.Ÿpà2àôìwcò`ï* Ï­àµööî­(sDY ~Þ¯¨ñ–Úÿ *ÛG0}š\¨ÔMƒ¹6üÞ<€| ðݪãVƒÿæPö“À¼P¶3€zkUùà¢pMåý¿œ(S í‚ò^:QæÄU]Ì—#GÜó·™sèQ\|ý›øö’÷ñŠ}ññ7ÝÀ8MüÎ'oiõBý@øþþÐ}ïÌîzÂçãª~;&ܳƒn^_uι¡Ì“ÒL­(³)Б?ÊãŠ×%Àlà© JÄ0ÞÕeªß‹ÁÃÞPõú°­¢LyŸqÀ›9ǞĢ·{q ðÀç^I=»– àÀ}æ²tùÍŒ;G×ßÏõw|–GÖßIªø:¬þŠCº_èÙdõž®ïÅ|ÃÙÁC‚²JxL¸ÂËCppR9´¢Al^oBØv.°îxG©ðú'‡úW¾Þl¨:îâðþùAŽsvÀÈ-¡—xÑZœÁ[žÃMÛu³Ù{òËéÌçÞ'®¡±©„œÞö}úŸ8€|‡šš:\n_V7öÖO_1{¤gh$tYýäNöÙ ,Ÿ§ú0)t÷+Ÿ„Ï>[Ë™š»ƒcx]øÞܱ+wii®´ÇUy|Qþà®@‘æW5 w‡ã\îå‹;ØmÅ."ê^H,÷õw1o橜{áY̘3Žb±Ÿ}&Ïæ®[äêûÞïšB©XÁ­E¨ÿ¢SW?| 8œ€xÛ0û]$4€ ßOß7÷«ï…~f8î+8tY%Ù#¼÷TІgcc ªÕ“š¼ Ô tW9­¡ÞÕ¸8,œgEØž ½×Ï€¿½ØU‹ÀíW>RO ÿ9c“HÔ3.:-Í¿¥µu<]=›h›õa~qÛ÷˜9{/JýÏûصÄÁVàíà¾,ICÙ­ç)óäTneŽùßUä´ Jó»A(Bbê>!¨.ß®z]6Œ—l |xeÅkE¨îµV…ë9<ì[¼+Ü«*ôî»G_,/½ ÖÝ·…·Ì;‡•+oeêÁÍtnéæ ýæÓÔ;•Þñ«éë7铼«ó/ïï^¼è•;Q/ÞèÄì ]:[Qæjà„í ¶¯¢L™7š²öYÖ»'€°8ˆ:¶òVX1()¥*>Ô¬œÛ‚:28Qó 0#ô·qŽa°äç…`åÁAc›&qÔŒ÷±â—S[W‹‰xë‘çðõoމ{Ö•“Ýz.ÒÏ*4ßK/*ˆ¹¦B;>»”W)[ƒÇúHÅöWqв”uÌ.ÔùïÀ)¡ÁT¾Þ4Ý ‚þ‡òë° Ü e×VPŠ£ß_ýR ;Y¨û…8aœ‰xíÁ§ðýï.F»= ˆ=&Mã±?EÜ›»Š–±-ƒf%õ=G ó‘ P–ylýeï €h© %+«¼ÜÚîzà£a[žuåßT(çs†©ß›¡5CP’Ä0T%1u¦Ú¾ÞÛ€¯…Ïò±Ä¼wÎ,s‹žÂƒˆ(1­õ8~xÓ9pÐtõlfîŒwñƒë/áÕmiJEsè3~®ƒk¾ \>O†gæØžE¬ ¾¥*òï|ºÒVV5¶ÇÃ9ËÇYhM5X”eÀnÏQ †ñÖÃI•? Áe2|¿é%äÛ¯|°ì’ÿáY}Å.¦¦^ÅÝ«`¿#zÙÖ¹Æúöh8œ¿ûvÆ¿ø€,©óÌ+ˆ\bö¾Ç²û¸©sÔÔ:Âÿî8¿Gƒù°ÐHÒÓ=Á¶)Ê.TÒ4h²âÖü$€ßs¬E!â/†p0ëŠÇ·ƒL÷zâ„ ! ºžíƒŒ N¨œ(–!”‰÷ðÞS|~p/žÇ…8˸_ 2• ü´ä*¶?|(Ы®5®Ü\iƒ„£ˆ#fžòÌ(㢋˜pÀF¤äçÂxëNÖ_¡8ìÌFÒ}^6‚2˪±³ú]^ÃÙ£;©Ÿ«d¾²Gÿ¯ÖãClÿÉ Û6/ ÕÂfÛ?N~‹•Š -{°òU;xÙë·²òOßeêŒ=FÉ E$=ɨڰò›ø‡R‹m=yíA®y‡àoÅo~Åô#jèÝij¯}d£6,ÁƒZð¼Ó‹¢~v»'GÌ8©JŠƒ_­º‚±ãˆ¢hã¡G>_¯M“ϦwØ–ïHQ¨ÚVY~‡r©guƒ·0ÈùGzÎB6=P¾Ð±c¹ÊãäwRÏò9«Kõ5îpÜlå9Òƒ3?Ľê~TÛ3ŽÛ‘¢\jØß¨dÄsß9³U1|G˜GL6ìxýáÇÔÓЬ/ã²ØßÃ[ç]ÀaÓN°$~÷Û{¹ø'o`úìÉ#:•á‹O]}ïð7'•ô¶d&wM¸Y§ ®·86•É]SèHnq¼ ÑðcÅJÄÁÉLî—…lzbøüëð0ë@ŸUɯ±}ŸÄi ~â¬×½˜÷8–.ª8æ8͸Kp;æn¤Û¤$þjû{’ö´ýn`+Ò ÀÁ‘ÉLî›ùŽ4ïÆÜ—lÏÝWèH7N’ø!qÒåã6ßHµç: Ùôq†Õ2ëÿN¬‰ß Ük8U¸ôd2“»"ß‘Fñ,Þ“ƒÁ@_^~;¨ÖæÆT{îŽB6}æîd{îŽ|6]+8;™É})ß‘:)ÏÐñµFǧ2¹²©Æ°à«1»!úmÿ1Õž¿1ŸMs90K°‘žÀ¾ ©)™ÉÝUȦßcór‰ñœÅvøª¡QèÍÉöÜÕ¡qœI<†døpÐCÉLî©<÷”™¬ºòÁM·_ùàI¶ÿ½BJzÎrÀئ‰Ìœrô€Ëž÷¼¯~ˆf·ŽäT2dÃ÷2ö Û¸O6nœ˜ïHME>Gp¾ñyÂk SmæVÔ÷µænà’™Ü—±Ï$Ïûãÿ~m{òm27Èœ L±½F¨ÃæN¤ë±ÿ q.°éT`?ÄI—Êœ/˜nûã…lzŠðXìÏYÌ8ü^Û­˜&Ì<ÉWÇÑžˆøæ༸±1{+è쟤Ús b{‚íÏ9NìŒÇœúší _Íw¤f‡#Î-dSž >'ÜCd.Çn®xœFMă~4РŒB6u¸Ìû%^%¸×øW6{ß±tp`¡#õ ðxÄçl¯Âü¦é,¤7"Õ x@V>›ÞÃö™†ÉL¬×ØLÜZ¬Z'Eæ½s&«¯ùfÔÿö(Šþ^ŠJáùîÛD•˜2ñ@Æ6MÚá·ßÞþ;š÷ˆÆ†fFpü€tçGP°d4¾M_PȦÏÚKRŸí>I¯±9èzÍÑÀfÉÇ:ÒçIºܓϦó©V›¢`Z!›>IBë€7 e 3…ºŒÞ‚8Ãñàš:I ŒO’t4ДlÏ/w·6|y¥ÍI׿ iN,ùyl>›n"^cú\I' GÆ«A×å;RÇKôÈJ»%ÛsËÎd&·Z¢SÒptHÅ­™\ƒèJeò÷ö6ÜœÌä6¥Úó‚#}È/&¹/èS _²i!·"Þêø¨·ÏEÆàd&·Y¸h»7™É÷‚ÎB~“íÓ’í¹^ QŒAhµH‡%3ù¯cwIú=òØ@n;€Ï€ÓYRÁYÄCæä³)Q%àÈË–® œå»óª¿^÷há¡CÇ7OØTìïSy¢è®‚¹§ØIäÒÀ€!Ûüô–Ë™qhŠÞžþáѸt#ð}ì’›)±ksb)îO¶'$3ù°L4mšl¯þ ôc‰Fàn¡·§!-U\‡ŒÏ0þ´ÑVÄ„d&w¤cm·ZÞ@œÅ#™É•¯¿Xnóý ÍÃzPK*“/7ø Ó+nÝñ˜? ß·}cÀþ%ôN[€¥ÀGm?ªp^ KXéÒÞMf>-éÿä;RS€HÞžM´é3v!›žœjσ]Õ¡8a€½HèpM!›®"Ý&kžq§+zèÊŒQó²¥+^¶lÉŠÓ—-½õ¶Åÿñ›‡Î~ÇÅ­SÓ3\ìï¸~V± ‘<úÔý<øøJŠý½ôöõ²råí¬ë½…R±rM9¶WpÖqºúUŸºb6;›" ™R2“ÛœÌä¶ õ…ã:™ÉÝ:¢MMÒA,Út§Ús›€NA]2“¿2ÕžÿÐëØÓå“™|—¤nðIÀ'$}ÀÐé>†9Ø*QHfò'3¹¼ÐÙ…lúÖB6ý~Ä †JŒ“´x½áÇ œ^L·á©xiº G¦2ùצ2ù“A?œ.Ç» ÿ)éí‚M†Ó ÙÔ/ Ùô…lúgнÿñ’>¸s9pËJ|§M Mß8ws¡#uQ>›>ßxFª=÷-pMª=Ÿ“t€à«1ïw9ó°1Õžï)dÓŸ1¾Îbe¡#MÜÕ%é8ì“’™Ü™À‘’.õ xR¬%jCöñ†B6}¦áÛ×Z0J¶ç·× %_nû+©Lî I¯±üAâ‚B6ýÅB6½û€+\ºdùÁ’–ÊÞ7‘¨!!ùÖÕ7ë¦;¯¡¡¾q{–­Ja*Ø+{Ôˆ»™ÎÖ %êϤöm&*…e*ÖÔèzw'T÷#Qó#I«.:uõˆ[O¾#…¤‰ÉLnCö& o0jMµ‡mÙÔ+±ê…0ê7§Úó› éZÇŸ· ŽÐšlÏ?¾×KÚÛ¸^¦éq›¸iwìM’j’™\w!›&™É‘ϦöšjûÏ©öüÓ…lªS›lÏwæ;R“%u—ˆ—÷@(H`,žNer²éãqXÅÐàÈw¤Ò’Ö'3¹b!›Ú ´·áØ=’öÁ®5Síù‡*îÍX‰WOeò†j6v]²=O(31ÕžßPȦÆ%3ù-…lºÕf“äVæT&7 #I¯ ÉLnm¬¨E° Ñj{sª=…cN‘”Æ%3¹…lºÉ8‘Êä·å;R­ˆ…Ö%3¹Ç ÙtaŒì-ˆš@½ºŒ‹©L¾«©´ÅV¡)†„ðß°lÉ .šÏ²¥+fa¯µ °R›úºFîýë*ÿºƒúÚ¤Ä3À<œjQYV p),`@ÿ‹0©¦CzöhšsÒ;^ß~¬)¨ßˆd°Ž4Èqw>ˆ$TlÙ²H¶çžS [}®|GŠTûó³ˆÐ`×Q¹m$×9’2/%S%G^Ø6Ÿ¥KWL¾4?SÙ¦±¾™'6¬åG·|ƒ§6穯k±üVYf;•€È%Jv{6ÉžÍsS›$¢„]ú½)]nûʶE ¶Æ n9 -Ø©GNµçÉw¤æHšN<åh½±R™üSùljw¡1˜qñ´žò<¶ÍÉL®Ä!ˆ56{"?¬øOP,¬0'iß@}zmÿAÒ| |'hz2“û}Ì<ì;’íù¨Mí‰y­Ñá{šO¥êüwX›ìPÃ^2]Ã~…¤îà 7^“ÊäûòÙÔ<¡;’™\TȦ_‘ÌäþXȦ?™Ìä» ÙÔ^F‡¶&3¹å…l:E<¸¾¸/™Éý"àÈ Ûæ³lé ÚÚæÿ´¸ÒÛÿà=}]L—â£oý"û¥gÐÝ»m‰m䜹< nµ‰&žp:¯M^Ìcÿ†šqôGÝ.E½Dî?Ôö¥’ Ë–.¿xÙÒwâXjÊSȦ.””±½Æð)ãŠ&BGÛ~¿å¯èS åǰ¿[Ým;‰ü `f‰ÍÈW=6³€†ˆûXþ¶4zŸí²é½ò©N n±õŸˆ%¦'cï|£ðVL«ñ•6þhÌÿ‹ÖÞ˜O„™îoÂz[!›#´ÒxV¡#5ÃöiÁQÜfëÕ¡þïUžbßN\ãÁºE"÷3®~/fïv: S_c¯1GÑOT/¯ tůDìAt8øräI6'3¹SSíùߥ2¹÷„1̳óÙô1À+ã‘~*‚×coÇpxQo¾#5#ŸMZâ’ú„zdŒ\”L2“».Õžÿ‰1«“íù;„LIÒ„#Im¶¿˜ŸÌäÎ.÷F%Ð-dÓ§7$3ù_¥Ús?Õ¯‚ºñ÷T{î!àg†?$Ûó·Ûþò ÄC<ÏÍBz—ÄOóÙÔ»$Γxc¸}ØŽG´5 Š‚õ¶7#6ýS¹ÐK—,§mÑ‚ Ç¥Ï"Š"zûº9þð“9mÑYôGýDކá.¢ä"Åh+“g1g÷O1gÒ§˜Ò<‡ˆŨ‹rc¡B ÿZìY¶Yض`éÒ%ËG¢÷ÕJz:îÖÒ¬ Ã&™Ç0OÛåE‘Ôh!ÛŠe+VÒ9˜#‰GÐÕ;Þ· ³td¾#õӲʮ`M" îHfòßHfrO+0+óÑT{¾ü~`‰ËÀõl_A§P‹ìæØsj|GJ¶¤xœqª=_Õ'#¾(˜ž“Ìäïú,xöÉ…lzñËIŠ—3øŠÐDㆠCê_Èm‹Äœ´mþÍØɬ—úú{™µÿk8ëÍçÑÜ0†RT=•.¢ä"XLn8ˆ£&_Àa“Φµn_"÷…©oÛ½ý€Ä¸t£íW´-šÿŽ…‹¬)O8m µÈäò@O!›~/hŸB6ý C³ì‡’í¹¿ ?$Ñ€©äAëã&‰5Àd‰Kíx®œ !©ÅÒ1À’Òe–„¦«_ ,)dÓoÈÜLXž*+õ Ã⌠¬8Î6Î.dÓs¤íH©LîêT{î©ö¼cà¹bn%7a7$3¹’a‚­?å³é9ÀÍ µHçµÒO»1ƒ{…òØ Õÿ³yØiÞ -`i¬¬Y¶tÅ«±¯µ´@€Ý½]ì1i_>vâ¹jùñÀÃ@ÔÓuR§1Ðr{6AcMœIì-moUúY’lø’à{ Ûæÿ-–W í@yFj™ØÌ/zr»„¢;,îGB3±§JZ \ÿ¿WRy¢ÑVÁ×1OJž:ÐŽ»nÄÞ¾àʲ 1-ß‘ó‹&ØýH%Ûó_HfrÅ|GêýÄœ½ô®VøV7{Ìâ›[®B, Çü b›¬zà3Éö\WTï³x ¼ t)øeŠWÿ<Ôh™uÄsÿùT‹álÙÒØŽ½ôÒ×g¾!h¨mäªeߢiïûxyòXöm^D]M ÅÒ¶ÁÀ[i[°/7º°mÑü Kã€ó¹ÉSéù¬RfÊgÓ¤žÉéÙJ]ƒíS¶Áê¶3ym¸óîj¹ WƒšxJýEejRÖ‰‰½Åm4ÕN ß½8pçùïÀ9¾¾vaÛ‚uψGí_ÓžýN†…mó¿B¼Co%o.•JÔ&)º;Hmƒ.'»øˆÍ´…mó¿L<'æå£ µÊ#ïÀ‘BPÈ(D¨J¤ È(À V9 ¤éC»VU'‰håß ~V1e[Õ•G½¡ðrïQAáe‚*ÊPäU Zýæƒ@|€ˆ ó‚¼Ì)_XTïí¿x>0ƒŸíúàÿzo±´Œ¢(P„€ @‚T‚Ta‚ U@I¡¢P…T‰VB@é}B§üϲ¼?’'ïêæ%2ï¡ „ ˆ !EYˆ*D©bŠ ª#ö^eY ?úðŒªÞta…IÎÓåêr£, E¨Ò|¼(TJÑJgè&0Z%ÕªÒ eø"G±ºŠ°ïo½ ¨`ø3y§ƒR?¿è™9 0PøQÒTˆ@î“/¹ ½,‡.E÷Ðý0R‚\![)Sò`_@D±4(fdĆ@â¡qÓ{‚Z¯~Ë~ƒÎ_0|æ‘犑’TH«ÒTQ°tÿßbë¯|œ4Ñtgö}ûÿò÷p•ë"[= t”0(ÝB€A‰,šS[±Ò¾ ׿ù·B‰…}Ÿ~éyÍ ²ÞÕd …T@He¢XZYÂSÿóLíýIŒ÷ëpèìâ›Þ€úîç!õòng?óà‘»áÆf]v-¶ÜüÄjÝ–NÅÉ¿x§N·§Ïëj"ýÅË~ôw¯/E( ¨õ"EPä>`-DÐaÂéÌNÄãÛ éÒÉô–Ï Y=Y:,þa~ˆÖø8"k€î¼¦¦gpÛû?}kÙ]»7½êªß˜1^K±µnZ!ŠÕ\pº[bûDSo½ùFºôçÿ˜ðï´þÕ:#Ì?‰hö9¿vÅs¯¹k˜eÔ ]Oè–Šžd¡’Þ‰cL5"li&¨'š‰Ãd=ƶf Ó5‹Ø˜ª Ç@;¶¸rK[ÛMš¼ùÕ½`l¿Ów¼Ûü]8ú¡ÿýÆGî»ûÿÌy¢n Á“3€ÙT&0Ñ9­ÁLpD0¤–+Ó‡/ %ŒÑñ‰é">s$½þ½w©»äž;~ècïû¿wþÁ»~HËr¾€3 k "V8kÀ¨ºTg‚!‚a…!ªº]bxU8(^ú–ÛoŸ¸õõo½`˜ñuz÷ÀûßõOÞw×CG|E ˆ Î8Cp ĶjИ Ž†^*ö”!`Ï ®ùÈ5ï¼óµ§>ò»Øñƒ?u~´ð¡X„‰¶@U)Ý¥n¦¶®[¢ù¯‹&Q àËè#ÿå…ëGçæÚ"h€jux g¹b,ŽaCì,f/»²à@¨ê‹PE•oÖ2†èžg>ˆDÑ¿3ä‰?y‘î»û¬®†CˆT—â9E‘ÄY˜¼ì‰ÆW`#ï>±Y­×k‹eÖý›½g}e!”0D Ì(_X®f'–Ì g "&4›uLÍîDãõož8]›ÖÖ ½ h6…ª2 $1hzhú9Äôҵó•Ó­¿¾hˆÿMÀðúßv¸,d™–AÈ«@EáÊ`@0¸Ù;Ö­æ™Gï¿ÿê¼ß%³™0TÍO,æ%DˆL•X10ÆÀZƒvk õ+®¦RàÐS,.¢ð%$â!¢0£âGM,Sb.‰”Z@7½ê馷¼‰Î|Ë` ‡êÊÒG¾i[xÏΜõÔ±ó‡>ûÆÛ.=}ƒ9~úRív5Ë ÊŠ€2TeØ”j\¹X HõР Dl`D³ ± c+ÙNl Aàaˆ¡Ê/ÆÂQ&p¬ˆku˜z h¤ÀÌ =|œÆòüD På$ª "ÂxÌØ>–êå[Ǩö¦·ÿ€yÎ÷~\Šup4ö/ƒqòäÊöa–%ݸ>ó¼/¼åÿ¹Ó§.+WÖÑäÚ/yò‘óíG-»ªÂËÈÒ#å5‰c¤qŒñzÊ»ˆ‚-–b;×ÐéôÑæAPˆ‚+K‰5°†Àª¨ÇD€%†M(q(B_-º œè ޝdøÒO 5„†e4RƒFDØÞŒô;gÇiÛK÷î¥WÜþIïÖ~c%AÇŸZÝÑ”}Ï¿ç÷ïÒùeä},oôÐõŠ\e”£mPB©Õ@9ŒÜï ªÜ D 4c,el«£=9 ê.n4} !‰` Ʊc«X ¡Ñ1KTiCpU>@l†€Ä0"K°8[åÀ`¼ÕÒâÄF޹³ë˜_bcµ‹I-ñöìÄÎw?ÐС‘“Ïüµ»úJGwìúØëOêò²JgHs§—°–+º…T`P†Ê· ¢ð¨ªPVfW51‰–FDØ–\:æ03Õ†kÝE¨!PÄ FrŒøÒ,(aàƒ‡!ÀªMìLµµ•HK,#6 Ç„È1œQ8f8kÛªŒ3È8Ž€Výzs§–û³WßøGnbæwíŽ=Kd|ÐË^–Y"ÿ I1\õ>ýÞN÷Ýù!"¨”ž–N-à±åë¹ ï¥(¼R•Ùj«•WD°9p@Õ…ok:<§Å¸bÂb좋¢)ú`CИÁ3mÜÿ…S¸çh~ôº1!bBb–©³°¤ˆMõ{lÎPF DÆÀÀq¥r10¤°l` ° XÃ`C "¸Ø)`ú&²¢Ì&6÷³WÝo¯~åg±ûwQF½?ÛÏÓϼ;q(ŽP Ä_}áV ÂÀ+Ê‘›] àC56ôAGãÊ!Õ{Téf´)vOÅØÝð˜OQoÉðPñ C莵ñŽ?{½¡1Á0!…@lª›#†0Üè{4ºñ €*œ,›‘®¬xTz 1 ´b ªrOL`‚’Cd\›6à.ºü ¶[ ÎIÈÐN ¤©ÁõWnÇö/`±Wb Œ’Í\3ˆK‹$©ûÌÄ!˜D…˜C\úÂæYiÞ·áÃ>cëT ·¾€q84b‹ØÌêÁïþÉëðæ;陜 1 ¢" fBd±©¤{lñèÆ!ÄF`¸ª †X5‚D0–ÀB`Så³Mç}Ó·ˆ˜À°^©?$*WöØõ`X‚P6Š€ö àâ”ñ¶[fpÇü˜ÿb¹ëøT»y Ýn­×+µZ­c­ñÄ,*Ê*BEQÄY–5ºÝîÖ]ƒ~÷±õ•Ùýy^ÜT V0Õl •8Ԝ“B–Öðû·]Eo~pfe˜ ¡pÃ|å«ïÏækÌ&‘2“„ FD8„`ò"‹Ë¢<žeÃýËKKÕNŸ~ÑÃkk7}OjëÅ0§ùNÃRP‹㉠ò&ªþÎ nòOé~–]²ÂlEELá}<fn¿7¶±¾Þ(ú™¢»:ÓÏú[Š^wk1èŒÅ~iQ@‹>œˆÕñÂA P2P›À¤-Dim9mMÏ'íÉcΙƒc—<ïðô®kæ®yÙ-G·ô éοþÔ+?÷ÇßvÅÒoløVuL™J°ÅfÇœÜûΟƒHß–QgIÞ{[–¥ !ïKÛëuý~¿¾°¸°ýäÜ©§ý3{÷F'ˆË!œ Ôa,6hÕ"˜„ i¢˜˜è}ræ§~غ¨4ÆÃFØpPQ&fQf®ìBk-‚Âæ<öãîX–çiá} ȲãÚp|bje˶mk“““ƒ4ry-B–òÁ “(r™µ¦Œ"Æ ‘Ò“Ož½dmmeb~yeúÀ=ý1yìÓ¯§&³’% µ‘QÄ­‰^ëçî¼É•=1ÆeU!oʲe8¦ý~¿Þé®·V—W¦>þø›v‡×íôóäŠj Ô0¦ šM8¥u»ôõ¿¼8ó]ŸŠ­ ÎÙÒ¹¸f–ÍÏæß_µX3‹1FˆH‰H¬µ€Zk=3+‰s\& D¤çl‹ •Ô@ý¾ËR’"Ï#5Ö­g>yòáÏíèœ<2–ç¦4Þívní³xë•×~øÚ—½æž$ŽιRDXDø« )\– “<Ïãn·Ûìv7š§OºøÐ¡¯üh{åÀõ×D+êÔSÃÚ˜®.ÞÒ¬€’rÛ~é?þÉuãÃÓ&Šâ"Š¢ÂF7$OÿcÂ&0ªJưXË%ªâ¦Þ“7¦z.Šª—ˈøŸðϺVÕs@qY˜ª÷b¢s†ñ擈ºÝ !&"„Ø{oÀ{o«P ¶(Šh0èÕúý~½ÓÙhuºÍ}ûý¾åãÿ•ù±ÖÎ8שš¥K¦›øŽñÊ`Št˜¾ø†¿Þ3/JšÖ†qçιrŒÍ-©1FoJ!Ž)£²y³P– çèÙ;]DçvïUŒ¡§;N›·Îr™‡È9§Þ—.ak­ßL¦ÖE®H’4«×kýv»½Ñj¶>¸tÕ•ÿå‡þ±3s¿poÄ“ÁØ+C!/¨tS@çl=X¨*m>y"Ò§³ÃZø8¦òétÿ§ëÙñ5‡HOofdäSnú>£OVV­+‰ˆÙ`ŒZUˆU-£(*¼÷6Žã¼^¯÷¬W¯7úccã«Ó[¶Ü~úìó/:ðØ#?xfé‰Wì™yÀJ_á¦SÌ/­5ëiˆã4¯`BEE‡(BfLõŒD*Aõ­®,Ë$É7ž¨}½™Ê¤ÑqÌ…ªçÌ!H¬jÉ9WFQ\x_Zç¢2Šâ"MÓaš¦Y­VLŽOüÑÙ'ëTÜõ£ó]Áj8–O?ùž3¦!›@cB•#(ƒÜZÖ*æ¿y:NrðàÁ7Þxã±n·Ÿ9s&°j¿™ƒm‚t. Ø“ç"õº@Q‚1ưµÖúª:¸ÒZç‰HûˆðªdnçüBS¹Óž5t0ºì/¯k6úF«[¯×ûqçÖ:¿Yò\žqÞoÚÞ#bfŽ9º³J¨ž{߯Ç_½È(2AUCTÌÃ!×6c¼, ‡v;ssûo>>`íxо±þî…×ßxïÖ­ÛÎŽ­ÇqœÇq”Ç1e#ÑøŒã+Ë9¦¦¦;Y6,CS[·n=Y–%[ÁøOài‰YúÆÄ…1ƇÌd¶Öþh¾ë!J]|ÏËîxí-{j×ëkµZ2p.Ê­¥Ç$›¹ëÛµ²,ÃÒÒR>;»ã¤s.ѹ×þéã@ËNbÄõIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/oldtraj.png000066400000000000000000000213061316323560300241720ustar00rootroot00000000000000‰PNG  IHDRâ¾(\Ó[sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœí{œŵ¨¿yïö0O@y? hD9jŒAÑ«1ähb£<'jP¼#1æ&p=‰Š×$ áà˜˜cÔ@𥒒’— ê¦NZ¿bÅ ³víZsË-·4Õ•””¼™™™y3Pvb¥;‘ L())yÈÎÎþÐ7ì—U”(‘ L)--]ž——×0eÊ”ÚeË–™#GŽ´[ý466šÕ«W›iÓ¦Õæçç*))y¸(9%4ÆÆãñyÕãÆ«®¨¨hª©©épáKF]]Y²d‰¹à‚ jòóóÆãñ%Àd #ìŒQ”Îf@NNÎEEE[ P3{öì£[·ní2áKÆöíÛͼyóGŒQÓ»wïrss¿ ;³¥# 49455…-lذÁÜyçj Qº&‡ƒ†-g)£¦%ifrصkWØ2ÕnÔ¢¤brˆ*j Q¢D—™¢ŠšB”0 ÕäUÔ¢tÇL}úô©ýÆ7¾q$ &‡¨â5…ïˆÅb÷¢¦å8I+“CTQSˆr|¸),,4•••¦²²Ò466&\wøða³mÛ6óÊ+¯˜ 6$í'×××›ÊÊJsèÐ!cŒ1ï¾û®Yµj•©««3•••榛n2€yá…Lee¥ihhè ·ïzÔr|39”——×Κ5ëpw29466š¼¼<˜½{÷&çå]´hÑ1•Õûó¶¨>ø éÛ·oBxvv¶¹öÚkMUUUÂýxà˜ŠŠ 3{öl“‘‘aóâ‹/>gÁ‚›!‘Ä2¼ËKyD‰ÑƒLãÇ7€™>}ú±©5Þzë-óãÿØ&‹™ŠŠ SQQa¬†ðÐCÀ <ØTTT˜+V˜'žxœuÖY0W\qEÂýæÍ›gsã7šX,f®½öZsûí·›-[¶˜ŠŠ 3jÔ(˜o~󛦢¢Âlذ¡Ãó!lÔ"xMu=Éä°|ùr“msÒI'™»îºË¼ð æÀ-^W__o€À>âˆ# `V­Z•p~ïÞ½&›ŒŒ ãÄþ£ýÈ&›'žx¢ÙýÎ?ÿü´î#¶…£Gš+Vt;SH«Äb±ïöêÕkïÈ‘#«æÍ›×¦½º +W®4ãÆk¦Fžyæ™æ;ßùN`ÿ±%A4Ƙ={ö4ë3cÌgœaóÇ?þñع À 6,PóèI‚èeïÞ½fÁ‚M§œrÊx<¾¿W¯^v¥ltµägc2srrLvv6ÙÙÝ»â bâĉ¬_¿ž7ÞxƒåË—óꫯ²fÍÖ®]ËÚµk¹ÿþû™6m .$???¥{–——óÞ{ï±uëVvìØA}}=µµµ>|¸Ù5gu:faÉÌÌ$'''#;;§Œæ!ƒ:&ì´uÇ|~Æb±ƒ“'O®]²dIÊ}¦îÈÑ£GÍ믿nn¿ýöcæ‹o¼ñXxK-âúõëõ=“ýV®\y,¾mo»í¶À´ô¤Ѫ¦W]uUm~~~}QQÑ€/9aF˜ä_*--ýSAAAý 7ÜP¿zõê°¿O¨¬\¹Ò&++ëØˆÉñã?6åååÇkíÚµ £¤'NL*ˆ_ÿúןßÑ3XS_\\üvffæ¿åá‰A´‹Å¾Ç?8p`Íœ9s·mÛö7ëP¶mÛfRYýoMvvK2A\¸p¡’θ9r¤ ¢ÃŽ;Ìüùó›F]Ç÷åççÿbyO 3ìxØÞÐÐp_mmí€íÛ·Oz衇~2f̘§Ÿ~zÍ#Ý|å+_1'N49990cÇŽ5Û·oO¸v̘10ŸùÌgÌÍ7ßl^}õU³{÷nSRRbóÅ/~Ñ<øàƒæ¶Ûn3}úô13gÎ4³gÏ6€9ûì³ÍÂ… MSSS«‚xÇwÀ :Ô̘1Ã<üðÃ]‘5íæý÷ß7÷ßÿ‘þýûטý]`pxŵg0¦°°pn<ß3zôèêùóç7}üñÇa—…”Ø´i“™9s¦9õÔSMii鱑͢¢"3iÒ$³hÑ¢Àù/¿ü²9r¤ÉÈÈ0'žx¢Y±bűógŸ}¶‰Åb&++ËŒ=ÚÌŸ?ß455™Ý»w›‹.ºÈ”——›áÇ›ÆÆFóØc™aÆ™{ï½70};wî4“&M2¹¹¹¦wïÞfΜ9ší¡ªªÊ,^¼ØœsÎ9Õ±X¬¶°°p1 kÈB ˜\TTô¯)äðáÃa—‘”©¯¯ïÕ$i»*¥-xM=ÚäUz×—––þ©W¯^j éfX“CqqqšÒ‡“SÈŽ“N:©zΜ9ï½÷^ØeIi#ûöí3M£G®îÕ«WäLJÛ_XXX‹ÅjwЦ¶¶6ì2¦$¡¡¡Á,[¶Ì\vÙeÕuÅÅÅO£k»ÇL!uW_}u]w^r•nxM%%%o7ñËŒÒÉ”fffÞ\TTôvYYYí¬Y³¿ýöÛa—ÅÇ|à59lwLCÂ.J8XOàUÖ²gÏž°Ëh·EMJkd“‹‹‹ŸNWSHTillT“ƒr\¡¦v³qãÆ “CŸ°?®’ž rL!; T=wîÜ£;wî »ŒGkrpö?¬tL£ÂþˆJ÷b|iiéOóóóX_;j I49äåå5ôîÝû9Ä÷KVØLéÞ$xŸë©¦É¡NMJØœèøcÝbM!~/ÞÝ kr0`€š”È26ÏËÏÏ?f iÉ™pºP]]í59T“ƒ’.xM!u]tÑÁt3…x·Óö™rCÎ[E9.ŠqL!v«7Þx#l9KÊÆÍìÙ³ôíÛ÷ š”îÊ`DzkðàÁ5sçÎmŒ‚)$ÀäðŸÀ'ÃÎ,EélBßvÀorð¸›W“ƒÒ#éÒxÖ­[gn¹å–59(Jrú;¦w:rkº?üÐÜÿýGX[TT´=77÷{Àа_VQÒvmÖj7éT“ƒ¢t YÀäòòògòóóë[Ú¾Üor(--]…š¥Ã)ËÌÌœYTTôVIIÉÁ;ï¼óІ ̆ ̬Y³Ž”••Õ•••mÎÉɹ ( ;±ŠÒ89??ÿû±X¬:‹Uççç89ìD)JOå秤1QÚ„FQz,*ˆŠT%¨ *JPAT” ‚¨(@QQ"€ ¢¢DDE‰*ˆŠT%¨ *JPAT” ‚¨(@QQ"€ ¢¢DDE‰*ˆŠT%¨ *JPAT” ‚¨(@QQ"€ ¢¢DDE‰*ˆŠT%¨ *JPAT” ‚¨(@QQ"€ ¢¢D€Œ° ´‰ÑÀß¹<çxÈwþ`s§§HQz(o¦•ß?BKr\¨jš~,M!ÎSž EéáœBë-âØÐR§(=ˆ–ÔSUKÓUMÓ“–ÔSUK¥‹hI=UµTQº õTÕÒ4EUÓô%H=UµTQº˜ õTÕRE ¸B¸)ä´(í@UÓôæ7ž¿Z*¥‡ãUOU-U”Ùˆª¥iOvØ PÚÍoQIc2€»€Ò°¢7}œãžPS¡´‡Ê ¤6½;ì”(JæPµFQÂÆ¨ùBQ"€ ¢¢DDE‰*ˆŠT%¨ *JPAT” ‚¨(@QQ"€ ¢¢DDE‰*ˆŠT%¨ *JPAT”UA,Fœ! rÂMŽ’&ŒÖ·áš¹Î5“:%Em * ƒ3k‘q’è8·øð©ÐR.yH头̩Hyy£ ×<å\sE§¤(5̱B¦7°IKðGà!à`1ð¡Ö|#œ$†Ê=@U؉HTÛAðŒ“Ž÷€³âäßD„ÔSº*qa9*ˆ©¶‚wŠS€jÉÀ;qÿQÏf—¿õÅé|8éSî^^ñÅËnöO#}Ð/C€ýÀ_Š¡Ñ‰ÿe < ìH[6ð/Îß¿pÒ \œ‡´ø5Àjà÷ˆêíåóÀ ˆú= ¸É¥ÀD%Ïnrâ?åÜÏO!p“öŸ\ÉöCò»šDïà}€/"}ó\Ä+Ü*àEß}²€uÞág÷?8øð7çÜ8¤‚]|—[€“€ï{îág„“æáHæC$×§p­e(ò-€À m¸¾Ó »E|ÞIÃ)Ä-ÊÎßÔ9÷©>Àm=ôòÄÍÃÝÂl2Rà;GÛ']â‰ÿ ç\2•ø'|­çÜàMç|ð®ó ƒ œà»‡-ì{Òñ60Ó&ïoD’´d8ïe€Ï$‰s—¾Ðsî‹Há4Îñ}D˜ "Œ%ž¸1ç|m’ûßë„ßå9w‡sîßµï1*É=¼ÌŽ8ñ÷y®ÿ)‰¾y“µˆ—â–ž{üœˆ´ˆÇþ ‰Ü‚wÆqÞãSHí\…–¥WÈöœÏÂý¨ï"­O®6 ƒÔê8÷ô š—ÅNøLçÿÙHK`€ÿÀ­ò9ç_A„ÆbûÇ/#•À§qó#ß KU5½·ñ†>ÞùÿXäëVǦ«i‘ ‰-çñâLçÜJÄ+ù%H YÐÊ»\í\÷‰åc¢¹¤Ëb Ä8¢ÉàkÈ÷i‘_CÊAÄÁ¸ƒ0Ç«&ÿ—s;ÂN@Z¢C@™sÎúrMæÏÕ¾ëÿgÛsÃ|qcH Ü๿-<¯ÐÜ<”‰¨SQY-¿uÎýæùÐVA,wÒS‹¨ª^F9÷ú«çܣιïÜ«7Ò‚4!ß ŽOmËÞˆ¨—©bó*HHþÉ Û‰+\A‚xs.H…«9…*ˆaÛí|-ÍûM©\àü½, |RèrsƒvPz×9öwŽMÀÎßWùâ^†ÖçšD x̹ÖKÒטðì%_>xÙ ü7ÒûÓ;Õ9z[Ë cPþÕ ­FÉUݶð:°5ŸeHß²é^øY‡¼ë ȸ@2¬ÉË?¦¢þIt9aÖÔ9Ç|Ü–ª-”#*ÀŽ$qìù!¾óˆÊã§Þ9z'üé#^Eb_öç¸ØsÎöß.&¸/7Æ9 ë¨BñDèn@Z<ËÕˆv` ÞÙ¸-ÝGIîeóoh¤+U!·å܃;ægR†"›ñ1È9îJþ0² éêÂÄ]H+‘ƒdæ»-Go†íÄ ?•¾¸–FÜ‘ÑÖø;¢6žŽ|´-HKxÒÿXî‰wŽ—¼uÛï\ï§£L+4ž Œ6ŸD*%¸­·7OöL²ü;ö·!®}^²tyÃZJ[¾s¬N ³Pتé¤|6Åkúxþ>è{‘¼ão7ØIÖ§I•_:G«î]Žô—~E¢ÀÙ4]ç<;ÙïšÓQýu;¢n_ת¥^“ÃAÏßA£Ñàö}SÍ¿–¦#¶åýlÚÊZˆ“JÚ9Ç Š’¿w—¶ <é¿NëµîXD\Œ¨²ûpkºI®±çÛ¢ñ$Ò‚^éü?H-i‰ÀUùÂâˆJw5ò¯Aìo/zâÅUσTepûÊ6ÿ¬Y#Ä‘_ËãM°«õÅÕö3À7ˆÎÑo2²${ï.% ‚ø¢ëE8ò’ÄŒ BÄpmeMÀœðK®98 é‹®ig:w Æ9÷¼‰{Óo…süJ’û|˜N¢m.²Z’ÀÇÈÄ„áȈòD8ýê¸Ì üë rEì‰ 6½}H·¦¿/~îàY{Ù‹ ´e"j¾Ÿ3‘q;¢z'ÃŽ ½ßit\ÅÑnÂ6èœkPÞLC¯éÛ| ù01/xÕkGÜ‹kùÖÚç~è9o…Ì=Nøì€°ëpí}¸= NnEñ=_Z?‹ô¹ê;–Åš/.¸_®1Úô¤Ú··6Ð:¤Òò›_Àµ#Ö82Ú éOÙ$W;çÿÓ“–rdôxÉÍóSL·å*çºw|iïk½Ís>È|Ñ·lý+n+>̉gmŒ=ÚŽèå àÏÏ$±‚sÁ­øMˆÖ„¨)p ó¿Áí°Cû±îG=LbÕËÉHá1¸Óæv:ÿ¯Ay¼´$ˆàÎÅmt®÷›%’‘áIÇK-ěРvd¾ï›¸Âÿ<Íí‘ÿ w¶KîLœ€[óßöÄ?^A©Ì‘Êv3RÉÙo½€ÄòlfÍ ¸+zvá~‹§€EÎß©æig`l¡ Òõà é»i >àzÄpŸl¤†»øRK€ØŸVÄý&òq6ÁIÃjĆæçjDÙ‰¨ÒÉÈC>îD m@ ÈbšÔ]‰¨KÅOð¿‘w܇ÌJÕÔñp#2ÏòÉâ D–¡‚ôɶ#‚õ?IâŸî¤{2°ò2¢­Œ>‡äÝjOÜ‹Û_KB2> | פ±é¦üů2ïw7¢†ûÓûe¤\U#]ˆß ZÀÙHYÙpië"Õ"*OoDp·“|ÀC Än޾Ô—U¢ƒ b7ä\Dµ+:ÖÐöW¥kQAì†ÌÅØù-É””è ‚Ø ‰!ƒ:mµS*á¡‚¨( ôePŠ¢)nŠÒãIGA<¨@fK(É)D\T,¾ïœ»É;¯3Ý+œs“QB%ÝúˆS‘4ûW=(.™¸>]šp— ý€æó3í(ë×»2iÎ}È,¡i-bŠtxñ%ÄE^g²™÷`'?ÇχðÌãå dJ×dŠ]¬\äÝ3!¥«»0Y`Ðak;r…~1¢òø—u4» ö/Ú™ä"Ëh"±š;ìÚ»?“˜W[p×K*ÇÏaß±Ýt” žŒ,eÊ@ØŽGÔ¡ÍH­1ñ ² Ö‘È$n¯sÙr¤&€¬Œxiþýî&J‘µ‹û•~†"kèâˆà¬Æ]D qät²¢`5‰‹ˆG"ýÒ<'ã‘• oäÁ?!Õ B´ùNœ¿"“¹/AV:ü©Ì>DÖ1¹æ=’»8×_hÜI¯ATÕÈ÷ié~NCZ×\$WìÜ$Î@ò2æÄ_Cê«ûû#-ø6d¹ØdÒ|/ä×Ü%J™·òÿ|ïúKë’Ñ?Yä=³‡R|aCœû¿ƒLïpA„Žé#zÆÚŸ]õp½óÿ{?Ÿ6ü\'< é»ÔÜc+®QK²>b12›ÞºÇ³¿FàÇ»pø®_Kû;Ьn°ñ_H×ß<÷è—$ŽAÔYÿæ1kœ°SqÝþé£\q~²U³‰– H‡­ÌÚÒGAðw=HðÜÕ/ Žžüñk_«©0ǹf:ðp2Ûßû4wǘ|wÙ›÷÷6‰Þûl¿yˆïýpËÍÍé²Ëóìu9ÿÿjŠïÕfÐ?ñnf ÒxÄi¸‚ó4RÓ܃8zµnnw· ý—‘Và íû$®ÚÄL¤ïhi]g -ç§‘ m "Œ^&!Bú!¸‹^mü‘ÈÚ:{ïñ¸ tsp¨þÊóÜñ¸kW¸Ìl•s~)òoE–o•!…©žàY1“H¬à’q®P¯pÒb[‚T±Éwƒ8E¸¬˜‚h*†ÄQëÁNÚ«EÝ£B{î"éTö+ùîÚÉ÷‘ï2©´_s–ø®±Âk÷E¾å7 ¨ד›}×é¾{Xß§û5Š^Šûx5 [Ö¯§cèЙ5vAè<ßù+qÒ^鿨È6/Èú0Câp{ ^Ž«~ù—û#5õQkÂ× ^Œ[‚Ôú‡q;ã_vâþÜ×~Àµ47å!ê”AT&Ëp Žß¡ÑNØ šSá„M óóÏÚTñ»Î¹ õ–ã¼ô:öæÄ_ÿ¤pO óc·8Dó–onÅl)B¾ÕQ‚µ„Î5vAòùÎÿá‹÷(RF~†tŸ¼§ÍK¯—›?©¼S*téÌš=H¿ÐÏ4¤oðœï¼ÁõðÖšƒŸ/8Ç4×Û«Ö8 ×÷É@ÄåûÇ$:SYQÒŠ¤elåñ+š;>„ëLØë/ÅV|AÉ<âý6Òäkõ»³±ùùÀ°¿"Þ ¸-­í·Ms`ëoiZâhÞ¿Þˆä]Ü àB¤¿½†àA([Ùïþ¢•ï‹w!¢9½Ž¨©c5ƒ¶#3ˆ°}i­ºxµs Ú­£)ÄU³ÿ£•¸6?í–z÷ ÎÎïâÀë{¤^¹Aê•MkùoÏg"#È5ÈÀÚ到-ÆÝràH%²é -DZý1ÈØ€×ÇQ‡ bWª¦A^µ ‘=#ñd°f82ÈàWW“Ñà¯v®Mö³žÅ¬/Ôöz¯¶ÏMæ¼¶ÐÏK2í`1ò¯E*ÊRpÞBT§ÎÆ[àN¡åüôöÓ?Fö=,G¼ÕÍGú[—#ªãEV›¯~çVœ·q히ãd¤‘°öïUˆ&‰d‰žÜ!Í[Ä .B>ÜjàßÂSÝoáDÊ 5·ýÛc2§Ä©òRc&»Ï‰¾ç¥ÂÄìq5R["5ÐnMA½“†>HAkë6õHÁ]Ž´èsJv®Ï׎Âîב,ÿ­ßÕq…fbßö Û˸ã*¤O{ nÿÐ/ˆÏ#ŽÁ:ÌÙTg´ˆmñgU‹ÂÆ"æh=vWàË“„Ãí÷€®DÐÇÄÿ3òñ>é;ï7ë¥,h§)ïùW“„'ÃÚLE|©Áuùß´–Ÿç‘XøOE*ûóÇš? c6±ñcóõL‚íÄŸòų¼à¤g ÒýYé {Ù9^€´šoѼú.b~Je·ã”èHA´òA-ÆJĺ<—Ľ+!Cù¶ÃÜÚGü9"XW">7½ŒDÔß7q‡Äáö·DÔ?ËW2µžç'{·Ÿ!ý™ë‘QX/—#ó#Ú>·s%’7—##®Ï‘úL˜ŽÀn¨z'Í·<»Õü3®}wbê2ô[®áªð-dð¥ð}aýqí’ }aÏ;G» ´W7#*õòâo A*ÇHÜã²Ýt”q,î¾Â5<[;⯮ÉÄiò."P¿Ckæ#™aUi’áÉfÖ\Žô‘Ž÷O‘ ·ÎhoñÅ/ĵ%îD:ävæÅAÜÚdÊ–åñ†sUë§ân†ú~üø¯¥”aÆØ{ÅbñkŠåÎ-+)çºîº®?NÙFùc<€1–¡3’/ÆXBNB>!„lãœoH&“—U™èºþ¥ѶíŸPJÑÙ¦%$“É+t]!Ô‡ò«(‰Qo„‡êBü5N/ Þ;sæÌVBÈNeQò—\rI¢FÃLXsssÈ4ͧ&h„»„²mûÁr YAÉÿBü¹VÆMØçºººÐÚúúú^ÌårmUšä0ÆCœóeÚ}œÍfPJ¥4’Ïç›<Ï[T(ø¾o€V9Ã0v”J%?ŸÏ/PòÇÿ©ÖyO(Θ1c ¥t ‚Zc|L×õ^×u¯{öÙgùXƒ¿ñƬ¾¾þZÆØfŒqßhVÕ4íè8ç<~*º®{%cl°XQÓ´ÍÑhôÛ#*†ê¹ ”`t c¬c\œã8w×HÆNÓ4H$0ÆöWD¾“Bˆ{ÚÚÚBå6Y–µÆqœûÇùe4½¦««KiÕË“€¹sçFLÓ\C)ÍV‚K§Ó]S.® . 3Æ^S$„œr]÷¦eË–ÅWÞ"„HJ©¤”JÎù6×u[Æ¢!ÜrË-Ô¶í•4 £÷lÑ„w#„ŠÊ€^4½Y¥VCCÃÅ¡lÅMÓì©ubõõõ̲¬»ª¤ ‡W—sß”ƒH$2RºK, =R!@±¾” ÃXßÚÚjÖ2ža6çü_ÕüŽ2ÐÝÝŸÊ<BˆU*Mt]ÿw¥’¸þúë-BÈ«MŠ1¶Ï²¬–Z&•J¥.­è¯.–oYÖcSB¡PZÓ´­*=êëë/œ;ðIÇqnBTÚùªÜ²mûꎎ<–o›¦ù;¥ßa[B§•gŸÍŸ??9»°,ërBÈðJrÎß©PäPöƒç 膱c<ì¦i>oš¦1Š’‡L&¢””ܶ¹¥¥¥“²OY´ÁºººŸÔ9G7cÆ nYÖ}*M"‘È †a`Õ×;!(í ÝœóÍÁ3Ji¾©©)5šÕ"‘Èmªµ ø€sþ´JOÆØ‹c ‘1wâ'Ož4<Ïûº²µ)!„¶zž'¤üb—Óßßÿ )e‹bÅ÷<¸…òR?xž§8q⪠$W­”púôéÛ• ÞQÆØ?lÛþ}y³ ¾ïÏL§Ó3'Uf( z©Tš§ ¸}hhh X,—–.]*ŠÅbW©TÒƒ‡–e=QV%ïRJσ:cìK¥„t:}q¡PhUžíM¥RïìØ±ãUBˆ¯ÌÃhš°¶dŒ¡p8<‹Rª†ô'Ãá°¥òÚqœNÆØG ý¼Õ«Wë³gÏéºþŒŒ2™ÌQ3 ¶išO@©Ü®dÆzuCjÆû e !¾7aZ:Ž®ëÆ<ÏS«¾‡,ËòÔvÅb1ãû~{ð›sþÌÚµkó€öîÝ{‚ò7Œ±Ðxÿþý+Î0™”òàÙl¶g8 tTñjùï éÇJ7.¥¬›0-‡†† ¯¯Ï¨r*—Ë•‚y%‰p©Tê|!Žã<®ö©««Û†1Þ=¼Êån ú¥ðûï¿ÿZ)¥­ÐîÀ±cÇzU¿æœçN9ç|Âà0ÆÀ+UÔë¥+ ÷}ÿ[J Ùãûþ»jŠ8räÈã …B"•J]U$²ì‹ß³ ¬hF/BÈ{àÿJ*ær¹ì„Á1ÆÀ¶í“ -@JÙ˜Ïç)À¬Y³¨”r¡çyQÜcù|^*‹øËf„Љà5ýýý+=zA±XœXŠñxüé2 Ð4-ˆ³Ëæc(„ä8N#cLMàÿB¸€8çBñšHr¶mw„B¡/%Óžž›ò‘g2™eà«0Æ…J‘P¹ç#„œP4æ>×u/ÃèI\Óu}òR‹ÅÒ€Òét“ª79ç/¸®EŸ>ì*BYÛ¶Wnܸ‘2Æ^VEB8¾µR566.€œ2wÚÛÛ“‡ë ÃømÅnàvB²m{â-˺¡L­ª¥R©Å¡SŠÊx=™L.¡”~ªLÚ_¹r¥¨´\y,O9ùäµå²eˈã87©àt]ßÑÕÕ%cŸ+ÝcÛöc­¤š !-Ëz]­iš¦ù\…f„òï”…<å8έcUœkΦiÎÑ4í3`,[Wø±ÎÎN1¸ °”7›#Õ.eCCÃe•Vsg9Bh@õ·ŽŽŽÄ¤-ÐÚÚjrÎ7¨+¬ú!dÐ4Ík¬³³3A)ŽPÝúϪU«°*¤›ššbŒ±­j]Ó¶íG¦t³êºî7 !ŸU›¥t{:>¯Ö ÃØTí=ápø§_¤×/€­Y³†!~ò”±úæÍ›—¬’µƒ“Rç|B¨TA¥çü¡qn ™L^]e§žs]·™1¦‘ë0ƧÕvÑhôÇã«æÑœ9s"Œ±íe½AÇqîTÏ¡ÆzW2™äŒ±!õ=Bˆ'b±˜©0¥c|JmcYÖæžž|¶Š²àºîr5œ—}.gÛöÏ-Z¤×²ª¶mãT*õ×u …B¿ ‡Ã§R©ÙA‰F£?RwþeJ9=ÒaG¹½'„XW__ß<Æyùäh”B¡ÐE”Ò= ýú{{{I9ÑrÇq–†ñJåñðxnŒ±B¼è8Î¥ÍÍÍæ$«â|›ºÚ¶mŸQߘ;w.ÒuÝhllœgYÖ:Îù¡Z2ÆŽ[–õh<Ï„B!kýúõ5§•I˯D"Q¯ëú jdlkkk­¤ue‘6“Éœ‰Dn¶,kƒa¯!Þ2MómÃ06™¦ù”ã8w644Ì¿÷Þ{ÉYú&¦&á|¥´_I¸Û1Œj ÷£ùý8?º©íK‹±Fmoog¡Ežç…”(ö¤išÈ÷ý©:’.ÊNõ5ÖqRˆsþwµ”L&Óœó¯þ×~£¡6MÇI‹Å.Åj/ õår¹éý°” ^Ðc „?vwwN—/lG4«išÄqœÝš¦IMÓ¤iš»]×mŸ._ØÖÕä 2m¬vN^ÿÃ~k­F%/IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/siesta.png000066400000000000000000000073721316323560300240320ustar00rootroot00000000000000‰PNG  IHDR]2>Ó×LsBIT|dˆ±IDATxœÝœ{tUõ•Ç?çÞ›“!$!@H2„@0¡„Ç%Xµ´¥ê`ŸU«Œ¿©.ëØÎŒít¬íÒ鬶ÓYËN[km{jÇv´ƒVÓ©)‚ˆ<&<„„ò"ïœÜ{Ïü±Ï}æÞà !~×Êʽç±÷ïì³Ïþ}÷Þ¿s5â³B%³ÅÀR`.PL&Ð 4'€Ã@%ðpLwýñÇxv±'š  ¸¸˜‡x$è€u·qúbÇ3ž0b£›Ê ”_n’.FN, xøOà€î6¬(ó²Å°e{öTà‡Àß0r¯.οžÔÝFë(éS Ëè¶wß ü0mTG$°€:àï7u·á»:/.ht{’üwà! aÔGŽ^$Ü<©» óë5Ä4ºNÒUC;ʰ€ßén£sŒÆW8†Ø—\ìç;ƒcë¾xÞ¬P£5\RD5¦RþÀØzx$,à%àñÎëyº=iþ±÷ðHø=þ ³B õ„^ö¼Çï¾<&£¹0œÀcÈ8nðä~È« G÷xåñ¡žî+—»ÁŠ€o›êr ÃF¨Ñ·ŒÕ@F ¸˜9Æã¸(8 Z¾¤Æ[AkWõ­Ó©oNw_JhX–ƒªº+ùÅ;Ò5dò½ x\¼¼ãv^o5½f  ¡»ú˜9å8E9G˜”Òh˜žDþ\uƦèéOŽ“…$vÿTGöö#À`Ða"øà§¶áF ¥L )¼ý ˜…|Ø¢ÏÿHkH‹óØ7ÕDµÔÑ3El¯^@‚³Ÿ/]ó;J öãtxðúœì­ý/n»›¯Îé–ì¬YÎÊ’M1†:8üø,×*ofGM9»¸±ìM–ÌÚMRBh`Y‡O_Á+·q®c ‡ëçñòŽÛ¹ïÚЂ÷1xXn?Ü ì Qœ‚xå?!7åÄãwÚûo°÷À÷ímÏ_õ7dèKmY öö_O"ëzüúÀg§95L)ó1\°úL1^Ÿ °XQ¼ƒ²Â÷Ãö;œ–ÌÚMCÛtÞÞ÷Y@cÿÉÒ!Œ>XM]ó ¶}x5âÝý¬¹î7Ì›q8â4‹ùUä¤7òãÿý*-]Yì©-£|îvæL; €×çpׇ(ù–aè•꺔2¿,>mûרF7 Ý ”é 9Çkz´Þìßd|[¯†ÙXño)e¶ï"7ºÈp +¯¡£'ÍÕ8Ñ›ñšËŠv17÷îÙ;Y0êq‚pO·,ØQ½"pcË‹·sEîáè§Yi-|~Ñ[x}.vT—cÙ"½>çÂÕýðD“aæ9àÿìÿ{‡ðPHj€àGQ ŠCMéZ€‰‘Gf§ |Þ^½‚¼Éu”îÁåô†7-£‘GW=3Œq†{ºÇë¢úŒädN‡—eE•¡á"*æçU¡»ú1=‰Ô6ÒïI$)¡—ÓÓ€LV~æñ=¥Ìfà/†¡‡yŒa误cÀ1aú•2“‘¡åÇ¢”yaFš 8‰¼ÂPZ°ûWÒÝŸJÿ@/l½?TÜÊ•ù˜3­†ÙÓŽ>¡gŒ§`0Â=½­;ƒÎ^¹×N‡MóQß:=Ú‰x¼.ÒSÚiê˜JKçdúÌ$’úqhV-ÒÓ½‰³ÅÀf V)óÀF$¾Ÿ1 =.E ÃÐ{‘%"(e‚Lè“‘É}p-ìÐ|\)tjz·—¯å…-÷㳜€Fw*G–Sqd9Éz¹™õ”|@IÁ~²Ó†¼áDzzgïDú’0=‰ü`ýãþ`Ÿå¤½;ô 籯aðd¢‰¡EÈ‚¥GG|—Ræ:„7·HaØ,f°Òþ_ŒxC”\ÀnàÁh;îaJÚ96üÕõsé웈ßx½f Ggs´±ˆõ»¿ÀÒ¢JV/Þ@ZJ¬¥)áæõ9±¬Râ°ðúœ~Á» C÷*e~™´¾,&Ùkˆ!V#“g›RæÓÀÓ¶ÇŽJ™ó!‰‘“脤¡­s$ ½á¯aÐ4(È>Åškÿ‹öîtŽÅÁºÔ4Ì¡½Ç/CÃës±³¦œÖ®LùÜ31BNì€1¡•Õ‹7 ïjC0eRHæ÷€¿_WÊ|Yº½áÆ+N´ <…0‘=b€Ræ"`²Ü.¤¿|Y‰¼™lO"ü=ÌèG쥱”hd¤¶³8ue…{ðú4´æ²ïT ï/ãìù©€FuC1{Ž—±´hw)áž>!©;0)ö˜),*|Ð$=LìÎ…n°ãv P£”ù,”·"Þ>ñÎG”2_4 ½j¸Êì„ê‚?Š$[›‘l×gzä9a\ºÛè5+Ô[D½×L¢¹#‹ŽÞ4fM=F’ÍŠ4 \NùÙuäg×qÝü-<·ñAŽŸ-4Ž5ΊaôpOŸ”ržd½Ó“È€'ºæŸÆ™¶~½ùÕÏ“+Õ{ùÜÂ?v8¾§íÃz ü3øSJ™+e’>¥L”2g ñØw÷Û#†Õòùz¥L·RfžR¦"ÞK0‹Ï¾«”fx¥L])sð¾ü˜¤‡®ðr¿CÖ â³4Öíº…Í¯œ‘>¡ÜÌzRôúilÏ¡©c*>V/ÙÀgJ7†]Á…V´u¥óÜÆ‡¨kÉÈÉLmeZÆ’õ^Z»2hh˵+ i>îX¾ÖºzÞ¶Ÿø_“QÊL^G(È ¨AÌ={YHð¥†n`µaèaÅ"¥ÌO›†~„!mn7 ÝgÏ †œV…T[–²(Až„öökícWbî6»ö2 XƒÌ9mƒè‚Y¡£?0È0–†Â0šï‚Eª‹A¨ÍîNÙz|HøÏºÛ’ÔÛuÁIÌBJµÃ‡R¦ÿ| á߃×=–=Fk(=±^ ˆŒ— Ö÷ènã¢R÷ËQ‹ºÛèBV7m¹¤£‰ kÆ»ÁaˆE5ºÛ8ÜüùÒ '&Ö÷ên£ã‚GŽ YæÓÝF3R«xžݘQF?R®ý¢î6ÚÇ@ÿ¨`¸/ﺀ¿E¶™£:"4!K¡_¹Ð¤9Þ0Ò×Ôó—iW¥'t¯ %×F;[þXáb~Á…¬fúÂcãñµ…páõÈ’…Ý·WÓCñQ~zDC–‘­A2ÀB¢ˆbÁBš'GzúòÛ/Û_¿ð#.©Y¡R°X‚”Zó‘øŸBð§EZ€SHEp7²¶°ZwƒÖÉ}œñÿWEÌkNIEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/static/tm_logo_l.png000066400000000000000000000041101316323560300245000ustar00rootroot00000000000000‰PNG  IHDRz29[nbKGDÿ‡Ì¿ pHYs  šœtIMEÙ ;x×.NÙIDAThÞí™kpSÇÇ’l][2Ù€…<ü®Œy™§Á…âÌ`Àƒ CÆmè”i¦M_éLKCÚIR¨é„ CK™Z2ã2 Ðò%…3†&álZC ÄTØØøldÙÚ~ÐÕÕ½’Ì+íŒÎ~ÐÝ3ûßÝÿžÝ³gà)‘båËÄ3#±Xy‘MÑ9OÜ—þi!-OûHBÄ w;O 4f|ÉÞžK7N Ò³AzÇnÍV1Ü··NSK—Ú0·´ÐÔº;ü½·Z<Ì~HÇR.yè}Hëià›ø€dÙÞÃX~@¯R-k~ˆm¸“. ¹›ÓX<üIC™êÛÂ7¾T_†§…t2µ”‡D:ˆÊÿNì3æ‚#%,øÏZUV¨uÅ?A×Ûò©aÚ’öÕèº""“Ãpv½ÝhO´[íù0—ꄟ<7kòöÜÆ´6É@8œE…À¬ÒSŸS…GŒd1»ÉbÜÝñç2÷OÚðhŒW×!ø”™!Ò?#K­«¬+æ5ëË# gÕgˆeok4Ù›ÓjÕ¼µôÐ\gÑûsê«~Z–1ÄTrc;d:šR» 8ˆP#@tYúrIªRšªêÔã”:šq"ë_ökS¶\.³>ØråGæ>â¤\_¢AVl Ž•ra³jÁç.->-y4s;7éó™¡òvÌ>‡ ÐaSl«µ4N"~ ˆÊöwï Y:çF™xqU@gºŒÀèuB e`ÙøÚë :28Ú¶Î2Y´qÊÄn¹ÍeÚ$WÑGCn»99sjVT“Ê-¡¼¦dvŠ¿föû}ßn»T³ýX¾í¬_¿q ÌkF ÊÞ…eu)ÂèEà”CI'a½¸á÷›lÆ.}?"gšvo4ÿmÝ´¤Èê¤î¾Æ À‚ïä´"¸©ßoX¤Ë”LR¾”þ(OM7óþ‰@¤ËšùEƒf V>@¬ø«Ã°î 1å Lq"+ù_iQúÛspœÜœÖOb܈gè0{µõ¡?.46†’®Øi½‡@̪yâØ{—åf.€î/¹y¦½z’%¡»`d‹$Íwä?¾BòÀÔ3pÓ x`¥óSÅÛN^5 Ç[¶¿ù¤5˜àb \³h†\?óÓŒï6÷= Ù—=–pH¹§°Ü}bÒ§×tŒÐäÀ­TÝ ‰$´d¸¥S=­¿¼5·{¤G‚cÐ7 à^T;ú/”=@bó LÞÕÒ¤Nú¬¬½0Z3äÌëö¶¸Äû:oo ÷'#­!Hh³Ç †ÎØ=Æ 0º™ôÚ¹HRÞmƒËzü Oü«àê©— Ƶ'œZ‚¸²°sLÿÝáÏÁ;àèÄ‘€Š=lÒ0î†í¬|Š:¤Ö®„м©®ØÖ6‰A£Û|W&2Ò¡AŽh­Mm¶ÂH·ŽñÇ™}·9nXµÛÐÈüD¹õ\þ“5QNIÅzˆäÏ´'Qj˾ªJî „]}å²>À¤°Ü)-Pzrèÿÿ²qIß*9«`#"'µÔŽp0õ…žéŒ+~œ¡AWz' aé»Y†S§>&4:¿Þ#[Þ`P%]àíû‰Êú{½F ×è ÎFh"ýî,€T׿›ŠêLÎÇòxWÊÿlzÒâ{/§kloXú»{Œ%¸”ú5Çm»ÏkÊ n©À¾),WI:YSä›. l:O@ú翘^ÙïÀèóõ.E™ÕêëˆDʶ}÷<ô(ƒÛÜmÑë•?Œb.Ê ºæì.ÙÜà†ÌïÞêï”;C〠¥J\ý@lgùoå¤O2@Ì1é¶´|¯’¾xCpn‘œ6º\“RšXÜ0ý<:¥<Ø‘ubÑcV–áý$…ô hûé”I»¤½U?h(‰è$‚Ú.^ßžPîô™ ¹ÛüÞi—ºù‘_£c+ÄÞ‰ñFF®•‘ºß¸ … ¡#ˆeŒ ÇëPofò›ç;ìv÷1ZÝeˆW\Øò°ò<Az:•í54‚ñ‹êeýpÇã­¬¼åa…ÏíÉIQr‹ÑG©© ++p¹XIžuhœNíöšhÞ¾]bz"¼9:Λ'WPä²±bØ=54 b6EŒïÍÓýÙû»¤K”ç7’<])©ËÆÊðÌá§ê\Ê ^ºÉ?ß?´9zÜÎXŸ¬ Ô¨ÊoÕWDêõ`eìÐÐ<‘ÚíG Ò-Ùçû‡Ë¦€n;dÏgÅø´6<¼µ·÷ú¥$  Wÿ^:?(Ä_í´»®SÖÈ!ý>ØG?0(ˆt‘½±£Ò! „ã/ö—† ¸W’±ëä9I#“j +zŠ(¨`3ÐuQ:h£¥¹Õ ƒVäÜÖ€—릥 ù]‰«Wéîê•RTè£ôe¾ ×uK›ÀÑTUQõ(ª ¨ª(ªª*¨¢"ß9˜eC­ñ»Ã¡ËL®Ï²,˜ÿI˜ÝàGã!0óFÆki=R.†0céuñÌ£MZÌ€Úv]@ÐÂ{µ‡þL«ñP8áÆyŽƒ9˜´÷¤[äÞ…dØTŠÀ@„ºƒåóÌ€ïÓBê­d(ëß«ú¿öó~ÿˆ-tªäŦ§§¼?’¿Ÿ ˜±&¨  ~k\ž£Ê¾³ÐdÚ+^°Š¿ÌšópK4_óó¡@KEs( ’wûèÓ‘þJC`|Kosw®¥ö‡BnI>ÔæÝæ†x¶·ùËlv1ì¬'ÁÿP€èlb¿ËÜ3cB‚€˜¡ÅuE¼Ån*Ž=\­Dsj ñ`Tû«dÛ“"³¨ýÁê ê3s"e†B™@éOÍDÕ¤*ç’rSÕç®åi» ÒȲr´ž)h#DÐB¥l²Üçæ§{¨ßk¤Gü”‚D„¬¡Âé3@þYõ½–ðá«4~(‰@E#´Ø{P J«°É `å³±æžÞÙµf€_\f°{€éˆ-¶ì·•Õ ,IA<¦Ea=¦¼nPŸSà¾h›YAâPEm[…&" XÀ´ý¹Æ—C2˜€&èÅÌHj ÄovºÉÆkÍpû,´]¦)ÈDÆ.´¤:´N碚ƒ !ÚWê¿AžáGìT‘aŠA´°ï”\ºµ„ˆÞá,ªˆû*që¢ 9D ö«$‡ÑË!~³Q>–¸ó3ªXЀÕ5šÜU>4Rñ;{K" h@AôV;?¿«Còu°ÿ’da3²Ò1›+xN¾~Ne ú®ž%…za]:ƒýjÜÆˆ ™ o°Á%Ê~_56ØŽ™QhŽô% T«{í4Jb)M>½ùç'L«()†Žê & 2-ñG)¥Ù(º»×\ò¼\§ÈiKRºzyPÿ>螦ÖÉÑÑ·\"èÊ὜°}2Rã q‘nl‰¯Å}ó&Êßžƒ‰‹õ·¨o‡­j‡Ž€!áÞrãã]ÕÕôÏ ªPßOîÛÑ÷ú!!4w$÷÷Ñ-CK;¦WPí”Y f~ðæ©zþ_U9ÖäÛ¼¸°:GDêœ=‰½Á‚"úW¹¬J€3/ÉÏæá¬ÏÏ*gµµ&ôÏ;} §g³p6õg›9¸fžoµ[´½™zmhd5Õ…â! †dç i·™xã™guŠ4»/®}:2ñéPíÓ‘ô…-A;ÜѰF¹˜1='IŸòE˜‘Á(L|‘Ë=u.äÚö®è_âøÑh¸3¼+‡ð¶ÐÎSDì¾Ø-´JÙìô^gN¥íh«åµ¡öv'Ÿx ßY–r´Dtžƒ»”‚&Œ¸ÏêåÇëüDºÂøè³Ùîêðj hÞÝÛÜ×ïþí½Ò±ðýe°¢˜V(¸ÊѤQquЋÁ¿ÜÃ3´oÞ:Ñ·â¡ûÍðœíîj¿ %4‡p»Ö›ù<24vV8•êì]¾”ù²+}’z«[Ú¦7Æ"|6Xxî­Ùã7y`—>Z}bÎÈ^Èœ9rdokcݾTt__ôЦ;nøõ‰ÐB§¢âQ邇cÞèŒØvµèUh ´Â¨FåE:²3:Ñ3ö¯ë oúl‘ï®ðtÀoˆ¥•’ç2£­þÊмÁö¯&¼XÍ&Ÿ‘[{iœSIhËUfÐÃLP-|uic™äÝÞ‘y$U \ 2#2hKóƈ@ÖšüÎX—jÞc™ ¡Î-ÓñÅI0YRòžXÈÀDçšàlš.¸Cž€]e­E¿IAÌŸ0 ¡GxÈ'ý[£g‹p>OÚûƒ"R(jÇö ÕõV@¿ÍtCd.zÓm€r.Ò0±È‡ èù[­=I«¥¸ôÎAÈÊïÔŽ_“‹|è <%Ìr›]ö¾X?êßég5^ËÓ¶-›(-YbQ1èž•.@ÏËõæB_‡¾—ŽlÀÚsÙ`µ¤8s¡5ôЫcßdG`±mš_.¡ ^,¿]}|½Ùöseá6ÏQT{òнÔ¥NF§Õž×üÁâ.K‘òšÃMý:›ŸX&P>1n§R°`+¯½×80œ öö|C¹;ÕxÖþþH=ËGá$\£Þp˼CöÛ¾ø÷½CË+|wêÈPHœY(>ž…‚nv ‚ïŒóî¶ð}h=ݧÐ0×q{¯þªñå¼þôþâŸϺ8ë¨lÙ¡¸ÂUøiç^^Ï»]ëéjsç@m=}P)¾é)nGÖðBÿÈ"Žzž®]D‹ ªíÄx)žÒ%Š1‡¨òþŽÒŸ®ÔƒJÒÓ\ A:²mö(CéýÃñ—ïÑvîÅÁtÑðxÍ>U×;ã‰çªÉíŽÕÐŽl)±Bd–Iè²@É䞸õ,˜\vÅC˜±K€½ ™Á ÿ÷]*qüü|Ü:@QvFåLÊ™Q¿ÉeïÛ-1klá?…À¥ ßÖ/—é*Ü&€‚GuZÃ’-vÕ Ä ùmÑÆyiD°ä_êMô놸 ho¶Çr.•¿Ùññ®+Ž{ÑŸñ×s°*w§8‚©ã%Ô³Ä÷àÈQ¡Ä¢¾ög0»™Û`o„üyÇøÅýÍÏ÷fÒ;:©;öÊßoO¨Åü®*m§bôôoQž%è¸#“£`9—/ÍSÇ2À`¯›£ùÿÏ"‡Q˜í>D° ž…á-ξ8|±?™Øëïk«WQÆR‰DöÔò'ènÛW‹¹ÖÓ,ÁÓA>hOÈÐìoYc‘Ñ)øor{Öƒ”5ÎÝî–o fñDïN$ó~ï:„‡*Οؕ}¼K‹*Ä ltæ\Æg)ûÊ€ ­3“ógX”§€Û€-!ÐB"Äöá2 ^ÒI`,UBaϳ}åž%Ђ¨Ch¤¥gjKØ^Øæþ8¼ZÍQ9›I·°F¢ciënFQ{Ú_ǹ5`Wã·Ád¨xñï,¬ÒÖp8a64y0þÍ颣“Ñ%åët±X¯ÀЇû‹Ãëϵ²‰]“Êòë8NLJÓZUÂR¦d.VC(ÌI°£¼œN„kU: Ù©LÏ3JN6Å•ëe 9”ƦrÔ½>¹Ø)`@º =íGìcã½c™¬åÙ~WüÙkðÕ bÐ v‹‰ï2ã$oáfµ9ãÔ.ÃÔ…vüëŸì/¯]n8r t:€È±¦žÎFYøŽP˜ƒK9S93¢gÒü’ºNÛ/¾žw;¾-CxØñà@žJY;‡(˜úÔçU äØ×ûË^EÀ­Dg²Òö#át6zu… Èàʃ©›Î5QŒn²‹åÆK£2T¡¹'Ò—|k*‚,Á–ÕÇµŽ¿'«iAöbª –’Òbw¹²v¹gæ”`*¶À©ª»gTwWÆïê«m±²>Ðѯ29Ú7ÇñšS„1Fº­¿ä¦0·Ÿ}ÇòæC^%Ô ¯ëpû\z!³GóÙm±þÿªÏ¬¿Žðr.Œf!ú§QQ…B†ŠvmåäÌc‹r.ŠðÊ•?Wwý"¡Wú‚ÛÀíŒì¢DŠÔƒ\">•£yÑ¢*VÃÓ}Õ_J0ÐçLö»²%÷h›$’ÏÏ´I*Ì%É=ñV‡—žz9<¨¼åèVÅ¢€É‹gò@Ù=çªógºT¡ò¶ìÉŠvM šw¼•½R?0ÜÑÃÇÛ†~©Ùãžô9zÞ·‰‘¤CU=N@JF_é»A’ª«©¼²-Ø›ÿ:Ða%ŠäíæŸ£KþÕ~jÛv­½¡7s ¼79 Ç?Ì›ùr+/*€E‡KÖY©÷õÝŠð,M‘oÉØUáX› º¸ß ¬ÄsÏ…ßÕÔ¡ÖÈ'îñf:/¨Ý Rë¸å¦¼0M‹G+æ·‚%ˆ—]1X‹¾: ‹äÿNËË[rÃæÚÎÒ?–z'U´%3ˆ¡²H]ôÿô¢oU’ƒ«IEND®B`‚ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/templates/000077500000000000000000000000001316323560300225325ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/templates/breadcrumbs.html000066400000000000000000000004441316323560300257130ustar00rootroot00000000000000

index | modules | gitlab {% if sourcename %} | page source {% endif %}
ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/templates/versions.html000066400000000000000000000010151316323560300252650ustar00rootroot00000000000000
Documentation v: {{ current_version }}
Versions
{% for slug, url in versions %}
{{ slug }}
{% endfor %}
ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tips.rst000066400000000000000000000034571316323560300222560ustar00rootroot00000000000000=============== Tips and tricks =============== In order to get the most out out the tips below (and ASE in general), it is a good idea to get to know the Python language and the NumPy library well. See: * https://www.python.org/ * https://docs.scipy.org/doc/numpy/ .. contents:: Atoms objects ============= Species ------- >>> from ase import Atoms >>> atoms = Atoms('CH4') >>> len(set(atoms.numbers)) # number of species 2 >>> set(atoms.get_chemical_symbols()) # set of species {'C', 'H'} Indexing -------- >>> atoms Atoms(symbols='CH4', pbc=False) >>> [atom.index for atom in atoms if atom.symbol == 'H'] [1, 2, 3, 4] >>> atoms[[atom.index for atom in atoms if atom.symbol == 'H']] Atoms(symbols='H4', pbc=False) Indexing with lists of booleans: >>> atoms.numbers == 1 array([False, True, True, True, True], dtype=bool) >>> atoms[atoms.numbers == 1] Atoms(symbols='H4', pbc=False) Three equivalent ways to delete carbon atoms: >>> del atoms[atoms.numbers == 6] >>> del atoms[[atom.index for atom in atoms if atom.symbol == 'C']] >>> del atoms[[atom.symbol == 'C' for atom in atoms]] Swap the positions of two atoms with index 3 and 4: >>> atoms.positions[[3, 4]] = atoms.positions[[4, 3]] Trajectories ============ Append one trajectory to the end of another ------------------------------------------- .. testsetup:: from ase.io import write from ase import Atoms write('t1.traj', Atoms('H')) write('t2.traj', Atoms('H')) write('abc.traj', Atoms('H')) >>> from ase.io import Trajectory >>> t1 = Trajectory('t1.traj', 'a') >>> t2 = Trajectory('t2.traj') >>> for atoms in t2: ... t1.write(atoms) >>> t1.close() Input/output ============ Convert from one format to another ---------------------------------- >>> from ase.io import read, write >>> write('abc.xyz', read('abc.traj')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/000077500000000000000000000000001316323560300225625ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2.py000066400000000000000000000007301316323560300234130ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT atom = Atoms('N', calculator=EMT()) e_atom = atom.get_potential_energy() d = 1.1 molecule = Atoms('2N', [(0., 0., 0.), (0., 0., d)]) molecule.set_calculator(EMT()) e_molecule = molecule.get_potential_energy() e_atomization = e_molecule - 2 * e_atom print('Nitrogen atom energy: %5.2f eV' % e_atom) print('Nitrogen molecule energy: %5.2f eV' % e_molecule) print('Atomization energy: %5.2f eV' % -e_atomization) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2Cu-Dissociation1.py000066400000000000000000000023521316323560300264140ustar00rootroot00000000000000from ase import Atoms from ase.build import fcc111, add_adsorbate from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.io import write # Find the initial and final states for the reaction. # Set up a (4 x 4) two layer slab of Cu: slab = fcc111('Cu',size=(4,4,2)) slab.set_pbc((1,1,0)) # Initial state. # Add the N2 molecule oriented at 60 degrees: d = 1.10 # N2 bond length N2mol = Atoms('N2',positions=[[0.0,0.0,0.0],[0.5*3**0.5*d,0.5*d,0.0]]) add_adsorbate(slab,N2mol,height=1.0,position='fcc') # Use the EMT calculator for the forces and energies: slab.set_calculator(EMT()) # We don't want to worry about the Cu degrees of freedom, # so fix these atoms: mask = [atom.symbol == 'Cu' for atom in slab] slab.set_constraint(FixAtoms(mask=mask)) # Relax the structure relax = QuasiNewton(slab) relax.run(fmax=0.05) print('initial state:', slab.get_potential_energy()) write('N2.traj', slab) # Now the final state. # Move the second N atom to a neighboring hollow site: slab[-1].position[0] = slab[-2].position[0] + 0.25 * slab.cell[0,0] slab[-1].position[1] = slab[-2].position[1] # and relax. relax.run() print('final state: ', slab.get_potential_energy()) write('2N.traj', slab) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2Cu-Dissociation2.py000066400000000000000000000016751316323560300264240ustar00rootroot00000000000000import numpy as np from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.optimize.fire import FIRE as QuasiNewton from ase.io import read # Read the previous configurations initial = read('N2.traj') final = read('2N.traj') # Make 9 images (note the use of copy) configs = [initial.copy() for i in range(8)] + [final] # As before, fix the Cu atoms constraint = FixAtoms(mask=[atom.symbol != 'N' for atom in initial]) for config in configs: config.set_calculator(EMT()) config.set_constraint(constraint) # Make the NEB object, interpolate to guess the intermediate steps band = NEB(configs) band.interpolate() relax = QuasiNewton(band) # Do the calculation relax.run() # Compare intermediate steps to initial energy e0 = initial.get_potential_energy() for config in configs: d = config[-2].position - config[-1].position print(np.linalg.norm(d), config.get_potential_energy() - e0) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2Cu.py000066400000000000000000000013171316323560300237050ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.build import fcc111, add_adsorbate h = 1.85 d = 1.10 slab = fcc111('Cu', size=(4, 4, 2), vacuum=10.0) slab.set_calculator(EMT()) e_slab = slab.get_potential_energy() molecule = Atoms('2N', positions=[(0., 0., 0.), (0., 0., d)]) molecule.set_calculator(EMT()) e_N2 = molecule.get_potential_energy() add_adsorbate(slab, molecule, h, 'ontop') constraint = FixAtoms(mask=[a.symbol != 'N' for a in slab]) slab.set_constraint(constraint) dyn = QuasiNewton(slab, trajectory='N2Cu.traj') dyn.run(fmax=0.05) print('Adsorption energy:', e_slab + e_N2 - slab.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2Ru-Dissociation1.py000066400000000000000000000024651316323560300264400ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.io import write # Find the initial and final states for the reaction. # Set up a (3 x 3) two layer slab of Ru: a = 2.70 c = 1.59 * a sqrt3 = 3. ** .5 bulk = Atoms('2Cu', [(0., 0., 0.), (1./3, 1./3, -0.5*c)], tags=(1, 1), pbc=(1, 1, 0)) bulk.set_cell([(a, 0, 0), (a / 2, sqrt3 * a / 2, 0), (0, 0, 1)]) slab = bulk.repeat((4, 4, 1)) # Initial state. # Add the molecule: x = a / 2. y = a * 3. ** .5 / 6. z = 1.8 d = 1.10 # N2 bond length # Molecular state parallel to the surface: slab += Atoms('2N', [(x, y, z), (x + sqrt3 * d / 2, y + d / 2, z)]) # Use the EMT calculator for the forces and energies: slab.set_calculator(EMT()) # We don't want to worry about the Cu degrees of freedom: mask = [atom.symbol == 'Cu' for atom in slab] slab.set_constraint(FixAtoms(mask=mask)) relax = QuasiNewton(slab) relax.run(fmax=0.05) print('initial state:', slab.get_potential_energy()) write('N2.traj', slab) # Now the final state. # Move the second N atom to a neighboring hollow site: slab[-1].position = (x + a, y, z) relax.run() print('final state: ', slab.get_potential_energy()) write('2N.traj', slab) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/N2Ru-Dissociation2.py000066400000000000000000000013651316323560300264370ustar00rootroot00000000000000import numpy as np from ase.io import read from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.optimize.fire import FIRE as QuasiNewton initial = read('N2.traj') final = read('2N.traj') configs = [initial.copy() for i in range(8)] + [final] constraint = FixAtoms(mask=[atom.symbol != 'N' for atom in initial]) for config in configs: config.set_calculator(EMT()) config.set_constraint(constraint) band = NEB(configs) band.interpolate() # Create a quickmin object: relax = QuasiNewton(band) relax.run(steps=20) e0 = initial.get_potential_energy() for config in configs: d = config[-2].position - config[-1].position print(np.linalg.norm(d), config.get_potential_energy() - e0) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/WL.py000066400000000000000000000013711316323560300234600ustar00rootroot00000000000000import numpy as np from ase import Atoms p = np.array( [[0.27802511, -0.07732213, 13.46649107], [0.91833251, -1.02565868, 13.41456626], [0.91865997, 0.87076761, 13.41228287], [1.85572027, 2.37336781, 13.56440907], [3.13987926, 2.3633134, 13.4327577], [1.77566079, 2.37150862, 14.66528237], [4.52240322, 2.35264513, 13.37435864], [5.16892729, 1.40357034, 13.42661052], [5.15567324, 3.30068395, 13.4305779], [6.10183518, -0.0738656, 13.27945071], [7.3856151, -0.07438536, 13.40814585], [6.01881192, -0.08627583, 12.1789428]]) c = np.array([[8.490373, 0., 0.], [0., 4.901919, 0.], [0., 0., 26.93236]]) W = Atoms('4(OH2)', positions=p, cell=c, pbc=[1, 1, 0]) W.write('WL.traj') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/atomization.rst000066400000000000000000000013751316323560300256600ustar00rootroot00000000000000================== Atomization energy ================== The following script will calculate the atomization energy of a nitrogen molecule: .. literalinclude:: N2.py First, an ``Atoms`` object containing one nitrogen is created and a fast EMT calculator is attached to it simply as an argument. The total energy for the isolated atom is then calculated and stored in the ``e_atom`` variable. The ``molecule`` object is defined, holding the nitrogen molecule at the experimental bond length. The EMT calculator is then attached to the molecule and the total energy is extracted into the ``e_molecule`` variable. Running the script will produce the output:: Nitrogen atom energy: 5.10 eV Nitrogen molecule energy: 0.44 eV Atomization energy: 9.76 eV ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/constraints/000077500000000000000000000000001316323560300251315ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/constraints/diffusion.py000066400000000000000000000006741316323560300275000ustar00rootroot00000000000000# creates: diffusion-path.png from ase.io import read, write if 1: exec(compile(open('diffusion4.py').read(), 'diffusion4.py', 'exec')) images = [read('mep%d.traj' % i) for i in range(5)] a = images[0] + images[1] + images[2] + images[3] + images[4] del a.constraints a *= (2, 1, 1) a.set_cell(images[0].get_cell()) write('diffusion-path.pov', a, show_unit_cell=2, rotation='-90x', transparent=False, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/constraints/diffusion.rst000066400000000000000000000016721316323560300276570ustar00rootroot00000000000000.. _constraints diffusion tutorial: ====================================================== Diffusion of gold atom on Al(100) surface (constraint) ====================================================== In this tutorial, we will calculate the energy barrier that was found using the :mod:`NEB ` method in the :ref:`diffusion tutorial` tutorial. Here, we use a simple :class:`~ase.constraints.FixedPlane` constraint that forces the Au atom to relax in the *yz*-plane only: .. literalinclude:: diffusion4.py The result can be analysed with the command :command:`ase gui mep?.traj -n -1` (choose :menuselection:`Tools --> NEB`). The barrier is found to be 0.35 eV - exactly as in the :ref:`NEB ` tutorial. Here is a side-view of the path (unit cell repeated twice): .. image:: diffusion-path.png .. seealso:: * :mod:`ase.neb` * :mod:`ase.constraints` * :ref:`diffusion tutorial` * :func:`~ase.build.fcc100` ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/constraints/diffusion4.py000066400000000000000000000016331316323560300275600ustar00rootroot00000000000000from ase.build import fcc100, add_adsorbate from ase.constraints import FixAtoms, FixedPlane from ase.calculators.emt import EMT from ase.optimize import QuasiNewton # 2x2-Al(001) surface with 3 layers and an # Au atom adsorbed in a hollow site: slab = fcc100('Al', size=(2, 2, 3)) add_adsorbate(slab, 'Au', 1.7, 'hollow') slab.center(axis=2, vacuum=4.0) # Make sure the structure is correct: #from ase.visualize import view #view(slab) # Fix second and third layers: mask = [atom.tag > 1 for atom in slab] #print(mask) fixlayers = FixAtoms(mask=mask) # Constrain the last atom (Au atom) to move only in the yz-plane: plane = FixedPlane(-1, (1, 0, 0)) slab.set_constraint([fixlayers, plane]) # Use EMT potential: slab.set_calculator(EMT()) for i in range(5): qn = QuasiNewton(slab, trajectory='mep%d.traj' % i) qn.run(fmax=0.05) # Move gold atom along x-axis: slab[-1].x += slab.get_cell()[0, 0] / 8 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/000077500000000000000000000000001316323560300231475ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/ads.py000066400000000000000000000014641316323560300242750ustar00rootroot00000000000000from ase.calculators.emt import EMT from ase.db import connect from ase.build import fcc111, add_adsorbate from ase.constraints import FixAtoms from ase.optimize import BFGS db1 = connect('bulk.db') db2 = connect('ads.db') def run(symb, a, n, ads): atoms = fcc111(symb, (1, 1, n), a=a) add_adsorbate(atoms, ads, height=1.0, position='fcc') # Constrain all atoms except the adsorbate: fixed = list(range(len(atoms) - 1)) atoms.constraints = [FixAtoms(indices=fixed)] atoms.calc = EMT() opt = BFGS(atoms, logfile=None) opt.run(fmax=0.01) return atoms for row in db1.select(): a = row.cell[0, 1] * 2 symb = row.symbols[0] for n in [1, 2, 3]: for ads in 'CNO': atoms = run(symb, a, n, ads) db2.write(atoms, layers=n, surf=symb, ads=ads) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/bulk.py000066400000000000000000000007731316323560300244650ustar00rootroot00000000000000from ase.build import bulk from ase.calculators.emt import EMT from ase.eos import calculate_eos from ase.db import connect db = connect('bulk.db') for symb in ['Al', 'Ni', 'Cu', 'Pd', 'Ag', 'Pt', 'Au']: atoms = bulk(symb, 'fcc') atoms.calc = EMT() eos = calculate_eos(atoms) v, e, B = eos.fit() # find minimum # Do one more calculation at the minimu and write to database: atoms.cell *= (v / atoms.get_volume())**(1 / 3) atoms.get_potential_energy() db.write(atoms, bm=B) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/db.rst000066400000000000000000000132701316323560300242710ustar00rootroot00000000000000.. _db tutorial: ====================== Using the ASE database ====================== In this tutorial we will adsorb C, N and O on 7 different FCC(111) surfaces with 1, 2 and 3 layers and we will use database files to store the results. .. seealso:: The :mod:`ase.db` module documentation. |cu1o| |cu2o| |cu3o| .. |cu1o| image:: cu1o.png .. |cu2o| image:: cu2o.png .. |cu3o| image:: cu3o.png Bulk ---- First, we calculate the equilibrium bulk FCC lattice constants for the seven elements where the :mod:`EMT ` potential works well: .. literalinclude:: bulk.py .. highlight:: bash Run the :download:`bulk.py` script and look at the results:: $ python3 bulk.py $ ase db bulk.db -c +bm # show also the bulk-modulus column id|age|formula|calculator|energy| fmax|pbc|volume|charge| mass| bm 1|10s|Al |emt |-0.005|0.000|TTT|15.932| 0.000| 26.982|0.249 2| 9s|Ni |emt |-0.013|0.000|TTT|10.601| 0.000| 58.693|1.105 3| 9s|Cu |emt |-0.007|0.000|TTT|11.565| 0.000| 63.546|0.839 4| 9s|Pd |emt |-0.000|0.000|TTT|14.588| 0.000|106.420|1.118 5| 9s|Ag |emt |-0.000|0.000|TTT|16.775| 0.000|107.868|0.625 6| 9s|Pt |emt |-0.000|0.000|TTT|15.080| 0.000|195.084|1.736 7| 9s|Au |emt |-0.000|0.000|TTT|16.684| 0.000|196.967|1.085 Rows: 7 Keys: bm $ ase gui bulk.db The :file:`bulk.db` is an SQLite3_ database in a single file:: $ file bulk.db bulk.db: SQLite 3.x database .. _SQLite3: http://www.sqlite.org/ If you want to see what's inside you can convert the database file to a json file and open that in your text editor:: $ ase db bulk.db --insert-into bulk.json Added 0 key-value pairs (0 pairs updated) Inserted 7 rows or, you can look at a single row like this:: $ ase db bulk.db Cu -j {"1": { "calculator": "emt", "energy": -0.007036492048371201, "forces": [[0.0, 0.0, 0.0]], "key_value_pairs": {"bm": 0.8392875566787444}, ... ... } The json file format is human readable, but much less efficient to work with compared to a SQLite3 file. Adsorbates ---------- Now we do the adsorption calculations (run the :download:`ads.py` script). .. literalinclude:: ads.py We now have a new database file with 63 rows:: $ ase db ads.db -n 63 rows These 63 calculations only take a few seconds with EMT. Suppose you want to use DFT and send the calculations to a supercomputer. In that case you may want to run several calculations in different jobs on the computer. In addition, some of the jobs could time out and not finish. It's a good idea to modify the script a bit for this scenario. We add a couple of lines to the inner loop: .. highlight:: python :: for row in db1.select(): a = row.cell[0, 1] * 2 symb = row.symbols[0] for n in [1, 2, 3]: for ads in 'CNO': id = db2.reserve(layers=n, surf=symb, ads=ads) if id is not None: atoms = run(symb, a, n, ads) db2.write(atoms, layers=n, surf=symb, ads=ads) del db2[id] The :meth:`~ase.db.core.Database.reserve` method will check if there is a row with the keys ``layers=n``, ``surf=symb`` and ``ads=ads``. If there is, then the calculation will be skipped. If there is not, then an empty row with those keys-values will be written and the calculation will start. When done, the real row will be written and the empty one will be removed. This modified script can run in several jobs all running in parallel and no calculation will be done twice. .. highlight:: bash In case a calculation crashes, you will see empty rows left in the database:: $ ase db ads.db natoms=0 -c ++ id|age|user |formula|pbc|charge| mass|ads|layers|surf 17|31s|jensj| |FFF| 0.000|0.000| N| 1| Cu Rows: 1 Keys: ads, layers, surf Delete them, fix the problem and run the script again:: $ ase db ads.db natoms=0 --delete Delete 1 row? (yes/No): yes Deleted 1 row $ python ads.py # or sbatch ... $ ase db ads.db natoms=0 Rows: 0 Reference energies ------------------ Let's also calculate the energy of the clean surfaces and the isolated adsorbates (:download:`refs.py`): .. literalinclude:: refs.py :: $ python refs.py $ ase db ads.db -n 87 rows Say we want those 24 reference energies (clean surfaces and isolated adsorbates) in a :file:`refs.db` file instead of the big :file:`ads.db` file. We could change the :file:`refs.py` script and run the calculations again, but we can also manipulate the files using the ``ase db`` tool. First, we move over the clean surfaces:: $ ase db ads.db ads=clean --insert-into refs.db Added 0 key-value pairs (0 pairs updated) Inserted 21 rows $ ase db ads.db ads=clean --delete --yes Deleted 21 rows and then the three atoms (``pbc=FFF``, no periodicity):: $ ase db ads.db pbc=FFF --insert-into refs.db Added 0 key-value pairs (0 pairs updated) Inserted 3 rows $ ase db ads.db pbc=FFF --delete --yes Deleted 3 rows $ ase db ads.db -n 63 rows $ ase db refs.db -n 24 rows Analysis -------- Now we have what we need to calculate the adsorption energies and heights (:download:`ea.py`): .. literalinclude:: ea.py Here are the results for three layers of Pt:: $ python3 ea.py $ ase db ads.db Pt,layers=3 -c formula,ea,height formula| ea|height Pt3C |-3.715| 1.504 Pt3N |-5.419| 1.534 Pt3O |-4.724| 1.706 Rows: 3 Keys: ads, ea, height, layers, surf .. note:: While the EMT description of Ni, Cu, Pd, Ag, Pt, Au and Al is OK, the parameters for C, N and O are not intended for real work! ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/ea.py000066400000000000000000000005021316323560300241030ustar00rootroot00000000000000from ase.db import connect refs = connect('refs.db') db = connect('ads.db') for row in db.select(): ea = (row.energy - refs.get(formula=row.ads).energy - refs.get(layers=row.layers, surf=row.surf).energy) h = row.positions[-1, 2] - row.positions[-2, 2] db.update(row.id, height=h, ea=ea) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/refs.py000066400000000000000000000013331316323560300244600ustar00rootroot00000000000000from ase import Atoms from ase.calculators.emt import EMT from ase.db import connect from ase.build import fcc111 db1 = connect('bulk.db') db2 = connect('ads.db') def run(symb, a, n): atoms = fcc111(symb, (1, 1, n), a=a) atoms.calc = EMT() atoms.get_forces() return atoms # Clean slabs: for row in db1.select(): a = row.cell[0, 1] * 2 symb = row.symbols[0] for n in [1, 2, 3]: id = db2.reserve(layers=n, surf=symb, ads='clean') if id is not None: atoms = run(symb, a, n) db2.write(atoms, layers=n, surf=symb, ads='clean') del db2[id] # Atoms: for ads in 'CNO': a = Atoms(ads) a.calc = EMT() a.get_potential_energy() db2.write(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/db/run.py000066400000000000000000000020571316323560300243310ustar00rootroot00000000000000# creates: cu1o.png, cu2o.png, cu3o.png import os from ase.io import read, write from ase.cli.main import main from ase.db import connect for name in ['bulk.db', 'ads.db', 'refs.db']: if os.path.isfile(name): os.remove(name) # Run the tutorial: with open('bulk.py') as fd: exec(fd.read()) with open('ads.py') as fd: exec(fd.read()) with open('refs.py') as fd: exec(fd.read()) for cmd in ['ase db ads.db ads=clean --insert-into refs.db', 'ase db ads.db ads=clean --delete --yes', 'ase db ads.db pbc=FFF --insert-into refs.db', 'ase db ads.db pbc=FFF --delete --yes']: main(args=cmd.split()[1:]) with open('ea.py') as fd: exec(fd.read()) # Create the figures: for n in [1, 2, 3]: a = read('ads.db@Cu{}O'.format(n))[0] a *= (2, 2, 1) write('cu{}o.pov'.format(n), a, rotation='-80x', display=False, run_povray=True) # A bit of testing: row = connect('ads.db').get(surf='Pt', layers=3, ads='O') assert abs(row.ea - -4.724) < 0.001 assert abs(row.height - 1.706) < 0.001 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/000077500000000000000000000000001316323560300241775ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-bcc2fcc.json000066400000000000000000006054651316323560300273170ustar00rootroot00000000000000{"1": {"P": [[1.0, 1.0, 1.0], [1.0, 2.0, 1.0], [1.0, 1.0, 2.0]], "dev": [0.72374709918577573]}, "2": {"P": [[2.0, 1.0, 1.0], [1.0, 2.0, 1.0], [0.0, 1.0, 1.0]], "dev": [0.57831538992410225]}, "3": {"P": [[1.0, 0.0, 0.0], [1.0, 2.0, 1.0], [1.0, 1.0, 2.0]], "dev": [0.43237456205615865]}, "4": {"P": [[2.0, 1.0, 1.0], [1.0, 2.0, 1.0], [1.0, 1.0, 2.0]], "dev": [0.0]}, "5": {"P": [[2.0, 1.0, 1.0], [2.0, 3.0, 2.0], [1.0, 1.0, 2.0]], "dev": [0.36880641297156569]}, "6": {"P": [[2.0, 1.0, 1.0], [1.0, 2.0, 1.0], [1.0, 2.0, 3.0]], "dev": [0.39942425721649882]}, "7": {"P": [[2.0, 1.0, 1.0], [1.0, 2.0, 1.0], [1.0, 1.0, 3.0]], "dev": [0.31928991266193602]}, "8": {"P": [[3.0, 2.0, 2.0], [1.0, 2.0, 1.0], [1.0, 2.0, 3.0]], "dev": [0.41917411429702572]}, "9": {"P": [[3.0, 1.0, 1.0], [2.0, 3.0, 2.0], [1.0, 1.0, 2.0]], "dev": [0.34898602255059991]}, "10": {"P": [[3.0, 1.0, 1.0], [1.0, 3.0, 2.0], [1.0, 1.0, 2.0]], "dev": [0.38405097426929979]}, "11": {"P": [[3.0, 1.0, 1.0], [2.0, 3.0, 2.0], [2.0, 2.0, 3.0]], "dev": [0.32095318031409176]}, "12": {"P": [[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [1.0, 1.0, 2.0]], "dev": [0.32971311895150235]}, "13": {"P": [[3.0, 1.0, 1.0], [1.0, 3.0, 2.0], [1.0, 2.0, 3.0]], "dev": [0.37771430040780857]}, "14": {"P": [[3.0, 1.0, 2.0], [2.0, 4.0, 2.0], [2.0, 2.0, 3.0]], "dev": [0.36305885048452646]}, "15": {"P": [[3.0, 1.0, 2.0], [2.0, 3.0, 2.0], [1.0, 1.0, 3.0]], "dev": [0.32459342372801681]}, "16": {"P": [[3.0, 1.0, 1.0], [1.0, 3.0, 1.0], [2.0, 2.0, 3.0]], "dev": [0.28099234801985806]}, "17": {"P": [[3.0, 1.0, 1.0], [1.0, 3.0, 2.0], [2.0, 1.0, 3.0]], "dev": [0.35680413402939315]}, "18": {"P": [[3.0, 1.0, 1.0], [2.0, 3.0, 2.0], [2.0, 2.0, 4.0]], "dev": [0.27671140630867008]}, "19": {"P": [[3.0, 1.0, 1.0], [1.0, 4.0, 2.0], [2.0, 2.0, 3.0]], "dev": [0.37442112565759189]}, "20": {"P": [[4.0, 2.0, 2.0], [2.0, 4.0, 2.0], [2.0, 2.0, 3.0]], "dev": [0.24016771773683587]}, "21": {"P": [[3.0, 1.0, 2.0], [3.0, 4.0, 2.0], [1.0, 1.0, 3.0]], "dev": [0.39275827325388962]}, "22": {"P": [[3.0, 1.0, 1.0], [2.0, 4.0, 2.0], [2.0, 1.0, 3.0]], "dev": [0.30264325175490997]}, "23": {"P": [[3.0, 1.0, 2.0], [1.0, 4.0, 2.0], [1.0, 1.0, 3.0]], "dev": [0.38741240675841376]}, "24": {"P": [[3.0, 1.0, 2.0], [2.0, 4.0, 2.0], [2.0, 2.0, 4.0]], "dev": [0.25142369400684522]}, "25": {"P": [[3.0, 2.0, 1.0], [1.0, 4.0, 2.0], [1.0, 1.0, 3.0]], "dev": [0.3855827251084214]}, "26": {"P": [[3.0, 1.0, 1.0], [2.0, 4.0, 2.0], [3.0, 2.0, 4.0]], "dev": [0.31011644767463115]}, "27": {"P": [[4.0, 2.0, 3.0], [3.0, 4.0, 2.0], [2.0, 3.0, 4.0]], "dev": [0.40321552610685085]}, "28": {"P": [[3.0, 1.0, 1.0], [2.0, 4.0, 2.0], [2.0, 2.0, 4.0]], "dev": [0.20603366767366138]}, "29": {"P": [[3.0, 1.0, 1.0], [3.0, 4.0, 2.0], [2.0, 1.0, 4.0]], "dev": [0.37843734090360659]}, "30": {"P": [[3.0, 1.0, 1.0], [1.0, 4.0, 2.0], [2.0, 2.0, 4.0]], "dev": [0.30500216279421377]}, "31": {"P": [[3.0, 1.0, 1.0], [2.0, 4.0, 1.0], [2.0, 3.0, 4.0]], "dev": [0.37565260164543413]}, "32": {"P": [[4.0, 2.0, 2.0], [2.0, 4.0, 2.0], [2.0, 2.0, 4.0]], "dev": [2.7194799110210365e-16]}, "33": {"P": [[3.0, 1.0, 1.0], [2.0, 4.0, 1.0], [2.0, 1.0, 4.0]], "dev": [0.37476781724844638]}, "34": {"P": [[4.0, 2.0, 2.0], [3.0, 5.0, 2.0], [3.0, 2.0, 4.0]], "dev": [0.31739821107900057]}, "35": {"P": [[4.0, 2.0, 3.0], [3.0, 5.0, 3.0], [2.0, 1.0, 4.0]], "dev": [0.35584863410832951]}, "36": {"P": [[4.0, 2.0, 2.0], [2.0, 4.0, 2.0], [3.0, 3.0, 5.0]], "dev": [0.19053604418152525]}, "37": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 3.0], [3.0, 2.0, 4.0]], "dev": [0.35025477107922526]}, "38": {"P": [[4.0, 2.0, 2.0], [3.0, 4.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.27405764509424269]}, "39": {"P": [[3.0, 2.0, 2.0], [2.0, 5.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.33826416599309728]}, "40": {"P": [[4.0, 2.0, 2.0], [2.0, 4.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.2119726596163039]}, "41": {"P": [[5.0, 3.0, 3.0], [2.0, 5.0, 2.0], [3.0, 2.0, 4.0]], "dev": [0.303540481588566]}, "42": {"P": [[4.0, 1.0, 2.0], [3.0, 5.0, 3.0], [2.0, 2.0, 4.0]], "dev": [0.26397537697031537]}, "43": {"P": [[4.0, 2.0, 3.0], [2.0, 5.0, 2.0], [3.0, 2.0, 5.0]], "dev": [0.31466138843102615]}, "44": {"P": [[5.0, 2.0, 2.0], [2.0, 4.0, 2.0], [2.0, 2.0, 4.0]], "dev": [0.17458744093391865]}, "45": {"P": [[4.0, 1.0, 2.0], [2.0, 5.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.30635173542317118]}, "46": {"P": [[5.0, 3.0, 3.0], [2.0, 4.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.23423419797696515]}, "47": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 3.0], [3.0, 4.0, 5.0]], "dev": [0.3341273690910726]}, "48": {"P": [[4.0, 2.0, 2.0], [3.0, 6.0, 3.0], [2.0, 2.0, 4.0]], "dev": [0.25327235085346533]}, "49": {"P": [[4.0, 1.0, 2.0], [2.0, 4.0, 1.0], [3.0, 3.0, 5.0]], "dev": [0.32160473575814857]}, "50": {"P": [[5.0, 3.0, 3.0], [2.0, 4.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.19678336620670897]}, "51": {"P": [[5.0, 3.0, 2.0], [3.0, 5.0, 3.0], [2.0, 3.0, 5.0]], "dev": [0.25423668987001119]}, "52": {"P": [[4.0, 2.0, 2.0], [3.0, 5.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.24572047124798821]}, "53": {"P": [[4.0, 2.0, 1.0], [2.0, 5.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.28660930802896561]}, "54": {"P": [[4.0, 2.0, 2.0], [2.0, 5.0, 2.0], [3.0, 2.0, 5.0]], "dev": [0.21993795291433818]}, "55": {"P": [[4.0, 1.0, 2.0], [3.0, 5.0, 2.0], [3.0, 3.0, 5.0]], "dev": [0.2843833139122483]}, "56": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.18537460132851002]}, "57": {"P": [[6.0, 3.0, 3.0], [3.0, 4.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.29415168800192987]}, "58": {"P": [[4.0, 1.0, 2.0], [2.0, 5.0, 2.0], [3.0, 2.0, 5.0]], "dev": [0.28261097955412423]}, "59": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 2.0], [3.0, 3.0, 5.0]], "dev": [0.22917814257370894]}, "60": {"P": [[4.0, 2.0, 2.0], [2.0, 5.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.1964878543326764]}, "61": {"P": [[4.0, 1.0, 1.0], [3.0, 5.0, 2.0], [3.0, 3.0, 5.0]], "dev": [0.2998821032189698]}, "62": {"P": [[4.0, 1.0, 2.0], [2.0, 5.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.28267062073754118]}, "63": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 3.0], [3.0, 4.0, 6.0]], "dev": [0.28117185546347323]}, "64": {"P": [[5.0, 3.0, 2.0], [3.0, 5.0, 2.0], [2.0, 2.0, 5.0]], "dev": [0.22205556493071493]}, "65": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.19804221877811704]}, "66": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.2125259727771559]}, "67": {"P": [[6.0, 3.0, 2.0], [3.0, 5.0, 3.0], [2.0, 3.0, 5.0]], "dev": [0.26960523053423974]}, "68": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 4.0], [3.0, 2.0, 5.0]], "dev": [0.28432589501831795]}, "69": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.17223176942489729]}, "70": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.24019850430448306]}, "71": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 2.0], [2.0, 3.0, 5.0]], "dev": [0.22027884067222273]}, "72": {"P": [[4.0, 2.0, 2.0], [3.0, 6.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.22134333483150029]}, "73": {"P": [[5.0, 1.0, 2.0], [2.0, 5.0, 2.0], [3.0, 3.0, 5.0]], "dev": [0.27558922601528996]}, "74": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 2.0], [4.0, 4.0, 6.0]], "dev": [0.27305995098241448]}, "75": {"P": [[5.0, 2.0, 2.0], [3.0, 6.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.17187097746709556]}, "76": {"P": [[5.0, 3.0, 2.0], [3.0, 5.0, 2.0], [2.0, 3.0, 6.0]], "dev": [0.27045814676317093]}, "77": {"P": [[5.0, 3.0, 2.0], [3.0, 6.0, 4.0], [2.0, 2.0, 5.0]], "dev": [0.25268209906752898]}, "78": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 3.0], [2.0, 3.0, 5.0]], "dev": [0.2148002426356915]}, "79": {"P": [[6.0, 3.0, 2.0], [3.0, 5.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.23333916346303243]}, "80": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 2.0], [3.0, 4.0, 6.0]], "dev": [0.25033897083476131]}, "81": {"P": [[6.0, 3.0, 3.0], [3.0, 5.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.14822025695895508]}, "82": {"P": [[5.0, 3.0, 3.0], [3.0, 7.0, 3.0], [3.0, 2.0, 5.0]], "dev": [0.28238631368615358]}, "83": {"P": [[5.0, 2.0, 3.0], [4.0, 6.0, 3.0], [2.0, 1.0, 5.0]], "dev": [0.32154890956313886]}, "84": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.19302507744881561]}, "85": {"P": [[5.0, 2.0, 2.0], [2.0, 5.0, 3.0], [2.0, 3.0, 6.0]], "dev": [0.24864071408983007]}, "86": {"P": [[5.0, 2.0, 2.0], [3.0, 6.0, 4.0], [4.0, 3.0, 6.0]], "dev": [0.26057465958147946]}, "87": {"P": [[5.0, 3.0, 3.0], [3.0, 6.0, 2.0], [3.0, 3.0, 6.0]], "dev": [0.20765018210880221]}, "88": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 2.0], [3.0, 2.0, 6.0]], "dev": [0.24875072126196604]}, "89": {"P": [[5.0, 2.0, 3.0], [3.0, 5.0, 2.0], [2.0, 3.0, 6.0]], "dev": [0.26434292368878515]}, "90": {"P": [[6.0, 3.0, 3.0], [2.0, 5.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.16173919692398372]}, "91": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 4.0], [2.0, 3.0, 6.0]], "dev": [0.26954500234441703]}, "92": {"P": [[5.0, 3.0, 2.0], [2.0, 6.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.24998999615881595]}, "93": {"P": [[5.0, 2.0, 2.0], [3.0, 6.0, 3.0], [4.0, 3.0, 6.0]], "dev": [0.20248246468069714]}, "94": {"P": [[5.0, 2.0, 2.0], [3.0, 5.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.25230548388919993]}, "95": {"P": [[6.0, 3.0, 2.0], [4.0, 6.0, 3.0], [3.0, 4.0, 6.0]], "dev": [0.26634705745896547]}, "96": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 3.0], [3.0, 2.0, 6.0]], "dev": [0.21919436557844077]}, "97": {"P": [[5.0, 2.0, 3.0], [3.0, 7.0, 4.0], [2.0, 2.0, 5.0]], "dev": [0.27884779190646819]}, "98": {"P": [[6.0, 4.0, 3.0], [2.0, 6.0, 3.0], [3.0, 2.0, 5.0]], "dev": [0.26466980459739659]}, "99": {"P": [[6.0, 3.0, 3.0], [2.0, 5.0, 2.0], [3.0, 3.0, 6.0]], "dev": [0.13537920378781831]}, "100": {"P": [[5.0, 2.0, 2.0], [3.0, 6.0, 2.0], [4.0, 3.0, 6.0]], "dev": [0.24971945078743932]}, "101": {"P": [[7.0, 4.0, 4.0], [3.0, 5.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.27790685518028796]}, "102": {"P": [[5.0, 3.0, 3.0], [3.0, 6.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.2093801421134435]}, "103": {"P": [[5.0, 2.0, 3.0], [3.0, 7.0, 3.0], [2.0, 2.0, 5.0]], "dev": [0.26335879821367564]}, "104": {"P": [[6.0, 3.0, 4.0], [2.0, 5.0, 2.0], [2.0, 3.0, 6.0]], "dev": [0.24939170141258069]}, "105": {"P": [[5.0, 2.0, 2.0], [2.0, 6.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.20249159409483466]}, "106": {"P": [[6.0, 2.0, 2.0], [2.0, 5.0, 2.0], [3.0, 4.0, 6.0]], "dev": [0.26329760287223197]}, "107": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 3.0], [3.0, 3.0, 5.0]], "dev": [0.26436890166118771]}, "108": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.0]}, "109": {"P": [[6.0, 4.0, 3.0], [2.0, 5.0, 2.0], [3.0, 4.0, 7.0]], "dev": [0.26274164124662325]}, "110": {"P": [[5.0, 3.0, 3.0], [4.0, 7.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.24654775306635809]}, "111": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.21529923968099027]}, "112": {"P": [[5.0, 2.0, 2.0], [3.0, 6.0, 2.0], [3.0, 2.0, 6.0]], "dev": [0.25140547742317015]}, "113": {"P": [[5.0, 2.0, 3.0], [3.0, 6.0, 2.0], [2.0, 3.0, 6.0]], "dev": [0.2649052717622149]}, "114": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 4.0], [3.0, 2.0, 6.0]], "dev": [0.20166820770688498]}, "115": {"P": [[6.0, 2.0, 3.0], [3.0, 6.0, 4.0], [2.0, 3.0, 6.0]], "dev": [0.24613217636483722]}, "116": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 4.0], [4.0, 3.0, 6.0]], "dev": [0.23789226513411568]}, "117": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.12852250199871629]}, "118": {"P": [[6.0, 2.0, 2.0], [2.0, 6.0, 3.0], [3.0, 4.0, 6.0]], "dev": [0.25832623903507718]}, "119": {"P": [[6.0, 3.0, 4.0], [3.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.23737550491257506]}, "120": {"P": [[6.0, 2.0, 3.0], [2.0, 6.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.20156110782283979]}, "121": {"P": [[5.0, 2.0, 2.0], [4.0, 6.0, 3.0], [2.0, 3.0, 7.0]], "dev": [0.30364596784416165]}, "122": {"P": [[6.0, 4.0, 4.0], [3.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.23164427416576203]}, "123": {"P": [[6.0, 3.0, 3.0], [3.0, 7.0, 3.0], [4.0, 3.0, 6.0]], "dev": [0.18475722387152713]}, "124": {"P": [[6.0, 3.0, 2.0], [4.0, 7.0, 4.0], [4.0, 3.0, 6.0]], "dev": [0.22994729916985265]}, "125": {"P": [[6.0, 2.0, 3.0], [3.0, 6.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.24256816285121269]}, "126": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.14456232090797777]}, "127": {"P": [[6.0, 2.0, 3.0], [3.0, 7.0, 4.0], [5.0, 4.0, 7.0]], "dev": [0.28467610545740518]}, "128": {"P": [[6.0, 2.0, 3.0], [2.0, 6.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.22733908804497363]}, "129": {"P": [[7.0, 4.0, 4.0], [2.0, 6.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.18149230095380076]}, "130": {"P": [[6.0, 4.0, 3.0], [3.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.21903917784970722]}, "131": {"P": [[6.0, 4.0, 3.0], [4.0, 7.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.20321868372252477]}, "132": {"P": [[7.0, 4.0, 3.0], [3.0, 6.0, 3.0], [2.0, 3.0, 6.0]], "dev": [0.19676818212115432]}, "133": {"P": [[7.0, 4.0, 3.0], [5.0, 7.0, 4.0], [3.0, 2.0, 6.0]], "dev": [0.27669068705288008]}, "134": {"P": [[7.0, 3.0, 3.0], [2.0, 5.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.25023244947084905]}, "135": {"P": [[6.0, 3.0, 3.0], [3.0, 7.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.12070827567636591]}, "136": {"P": [[6.0, 2.0, 3.0], [4.0, 6.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.2373648517445022]}, "137": {"P": [[6.0, 3.0, 4.0], [3.0, 7.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.21096329547976592]}, "138": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 4.0], [3.0, 3.0, 6.0]], "dev": [0.16252728801046368]}, "139": {"P": [[6.0, 3.0, 2.0], [5.0, 7.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.27032965610500509]}, "140": {"P": [[6.0, 2.0, 3.0], [3.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.20827608774835715]}, "141": {"P": [[6.0, 3.0, 2.0], [3.0, 6.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.19640412791200337]}, "142": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 4.0], [2.0, 3.0, 6.0]], "dev": [0.22408684549118971]}, "143": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 4.0], [4.0, 5.0, 7.0]], "dev": [0.22786849465147102]}, "144": {"P": [[6.0, 3.0, 3.0], [3.0, 6.0, 3.0], [4.0, 4.0, 8.0]], "dev": [0.17524012583375376]}, "145": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [3.0, 4.0, 6.0]], "dev": [0.21823953071922744]}, "146": {"P": [[6.0, 3.0, 4.0], [4.0, 7.0, 4.0], [3.0, 2.0, 7.0]], "dev": [0.25379031471861974]}, "147": {"P": [[7.0, 4.0, 4.0], [3.0, 6.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.13732304885783575]}, "148": {"P": [[8.0, 4.0, 4.0], [3.0, 6.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.23336987203266066]}, "149": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 5.0], [3.0, 4.0, 7.0]], "dev": [0.23213609940148597]}, "150": {"P": [[6.0, 3.0, 3.0], [3.0, 7.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.17256358001658728]}, "151": {"P": [[7.0, 3.0, 4.0], [3.0, 6.0, 2.0], [4.0, 4.0, 7.0]], "dev": [0.20196332026759828]}, "152": {"P": [[7.0, 3.0, 4.0], [3.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.1737125376034962]}, "153": {"P": [[6.0, 2.0, 3.0], [3.0, 7.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.21459248246793408]}, "154": {"P": [[6.0, 3.0, 2.0], [4.0, 7.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.20110996347213708]}, "155": {"P": [[6.0, 2.0, 3.0], [3.0, 7.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.21405326029835486]}, "156": {"P": [[7.0, 3.0, 4.0], [3.0, 7.0, 3.0], [3.0, 3.0, 6.0]], "dev": [0.15487739598942801]}, "157": {"P": [[7.0, 4.0, 2.0], [4.0, 7.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.25744501032254724]}, "158": {"P": [[7.0, 3.0, 4.0], [5.0, 7.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.23460222218416416]}, "159": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.13067961529211367]}, "160": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.21329050837395561]}, "161": {"P": [[7.0, 4.0, 3.0], [5.0, 8.0, 4.0], [2.0, 3.0, 6.0]], "dev": [0.25404280009219643]}, "162": {"P": [[6.0, 3.0, 3.0], [4.0, 8.0, 5.0], [4.0, 3.0, 7.0]], "dev": [0.21965444403082068]}, "163": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.16379122139720595]}, "164": {"P": [[7.0, 3.0, 3.0], [3.0, 6.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.20588760698205982]}, "165": {"P": [[6.0, 3.0, 2.0], [4.0, 7.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.20064295816504002]}, "166": {"P": [[6.0, 2.0, 2.0], [4.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.21337395544797136]}, "167": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 3.0], [5.0, 5.0, 8.0]], "dev": [0.26006080100179418]}, "168": {"P": [[6.0, 3.0, 3.0], [3.0, 7.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.14060560112576218]}, "169": {"P": [[6.0, 2.0, 3.0], [4.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.21377979234189462]}, "170": {"P": [[6.0, 3.0, 2.0], [4.0, 7.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.23762364649124826]}, "171": {"P": [[6.0, 3.0, 2.0], [3.0, 7.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.201886198208441]}, "172": {"P": [[7.0, 4.0, 4.0], [5.0, 8.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.20149483984044908]}, "173": {"P": [[7.0, 2.0, 3.0], [3.0, 7.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.21369408215401292]}, "174": {"P": [[6.0, 3.0, 3.0], [4.0, 8.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.21333592038936688]}, "175": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.14213622983002056]}, "176": {"P": [[7.0, 3.0, 4.0], [3.0, 7.0, 4.0], [4.0, 5.0, 8.0]], "dev": [0.20982287611022743]}, "177": {"P": [[7.0, 3.0, 3.0], [3.0, 7.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.15856640760890975]}, "178": {"P": [[6.0, 2.0, 2.0], [4.0, 7.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.24485217646663926]}, "179": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 2.0], [4.0, 4.0, 7.0]], "dev": [0.24454684698532528]}, "180": {"P": [[7.0, 4.0, 4.0], [4.0, 7.0, 3.0], [4.0, 4.0, 8.0]], "dev": [0.15111563899705963]}, "181": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [5.0, 4.0, 8.0]], "dev": [0.20560645448055986]}, "182": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.17320574277937922]}, "183": {"P": [[8.0, 4.0, 5.0], [3.0, 7.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.20412984318555455]}, "184": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.12413961484681239]}, "185": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.19043274663543455]}, "186": {"P": [[7.0, 3.0, 4.0], [3.0, 7.0, 2.0], [4.0, 3.0, 7.0]], "dev": [0.2222651197642041]}, "187": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.15903680117643207]}, "188": {"P": [[6.0, 3.0, 2.0], [4.0, 8.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.21108001343595398]}, "189": {"P": [[7.0, 3.0, 3.0], [3.0, 7.0, 4.0], [4.0, 5.0, 8.0]], "dev": [0.18807458794048748]}, "190": {"P": [[8.0, 3.0, 4.0], [2.0, 6.0, 2.0], [4.0, 4.0, 7.0]], "dev": [0.24263817211560873]}, "191": {"P": [[7.0, 4.0, 3.0], [3.0, 7.0, 3.0], [5.0, 5.0, 8.0]], "dev": [0.1993555932756331]}, "192": {"P": [[6.0, 3.0, 3.0], [4.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.15923942630740512]}, "193": {"P": [[7.0, 2.0, 3.0], [3.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.1999030098408488]}, "194": {"P": [[6.0, 3.0, 2.0], [4.0, 8.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.24253912717459486]}, "195": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [4.0, 5.0, 8.0]], "dev": [0.19760900534651157]}, "196": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.12475713289853586]}, "197": {"P": [[7.0, 3.0, 4.0], [4.0, 9.0, 5.0], [4.0, 4.0, 7.0]], "dev": [0.22629909549084976]}, "198": {"P": [[8.0, 3.0, 4.0], [5.0, 8.0, 4.0], [3.0, 3.0, 6.0]], "dev": [0.22922508218117091]}, "199": {"P": [[7.0, 3.0, 3.0], [3.0, 7.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.18411212271373975]}, "200": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [4.0, 4.0, 8.0]], "dev": [0.1568232641802908]}, "201": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.19572620168303334]}, "202": {"P": [[7.0, 4.0, 3.0], [5.0, 8.0, 4.0], [3.0, 2.0, 7.0]], "dev": [0.23773135644842983]}, "203": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 5.0], [4.0, 3.0, 7.0]], "dev": [0.18323801088013575]}, "204": {"P": [[7.0, 3.0, 4.0], [4.0, 8.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.17459771025517037]}, "205": {"P": [[7.0, 4.0, 4.0], [4.0, 8.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.17011055526407978]}, "206": {"P": [[7.0, 2.0, 3.0], [4.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.22454613345977698]}, "207": {"P": [[7.0, 3.0, 4.0], [5.0, 9.0, 5.0], [4.0, 3.0, 7.0]], "dev": [0.21849220457965685]}, "208": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.1075278703212227]}, "209": {"P": [[9.0, 4.0, 5.0], [4.0, 7.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.21719777933643467]}, "210": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.20555265942246434]}, "211": {"P": [[8.0, 4.0, 5.0], [3.0, 8.0, 4.0], [5.0, 5.0, 8.0]], "dev": [0.22601169211385108]}, "212": {"P": [[7.0, 3.0, 3.0], [4.0, 7.0, 3.0], [4.0, 4.0, 8.0]], "dev": [0.14159340945696383]}, "213": {"P": [[7.0, 3.0, 4.0], [4.0, 9.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.20432760115491064]}, "214": {"P": [[7.0, 4.0, 3.0], [3.0, 7.0, 4.0], [5.0, 3.0, 8.0]], "dev": [0.24449677329572317]}, "215": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 5.0], [5.0, 4.0, 8.0]], "dev": [0.19219978724550416]}, "216": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 5.0], [4.0, 3.0, 7.0]], "dev": [0.16735562004860172]}, "217": {"P": [[7.0, 3.0, 3.0], [3.0, 8.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.18292880331998901]}, "218": {"P": [[7.0, 3.0, 4.0], [4.0, 7.0, 3.0], [5.0, 4.0, 9.0]], "dev": [0.22239619352422363]}, "219": {"P": [[7.0, 3.0, 4.0], [4.0, 8.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.19466498556671516]}, "220": {"P": [[7.0, 4.0, 4.0], [4.0, 8.0, 3.0], [4.0, 4.0, 8.0]], "dev": [0.15213128261222364]}, "221": {"P": [[8.0, 4.0, 3.0], [3.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.18352597048590519]}, "222": {"P": [[8.0, 3.0, 3.0], [5.0, 8.0, 5.0], [5.0, 5.0, 8.0]], "dev": [0.23472578363817917]}, "223": {"P": [[7.0, 3.0, 2.0], [4.0, 8.0, 5.0], [4.0, 3.0, 7.0]], "dev": [0.23503511384564948]}, "224": {"P": [[7.0, 4.0, 3.0], [4.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.11932660554684606]}, "225": {"P": [[8.0, 3.0, 4.0], [3.0, 8.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.18835502253825381]}, "226": {"P": [[8.0, 5.0, 5.0], [3.0, 7.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.23159448796408577]}, "227": {"P": [[8.0, 3.0, 4.0], [4.0, 7.0, 3.0], [3.0, 3.0, 7.0]], "dev": [0.18490498866134217]}, "228": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 5.0], [3.0, 3.0, 7.0]], "dev": [0.15009714992979842]}, "229": {"P": [[7.0, 3.0, 3.0], [3.0, 7.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.20861852061644948]}, "230": {"P": [[7.0, 2.0, 3.0], [3.0, 8.0, 3.0], [4.0, 4.0, 7.0]], "dev": [0.23557441837619719]}, "231": {"P": [[8.0, 4.0, 5.0], [5.0, 9.0, 5.0], [5.0, 4.0, 8.0]], "dev": [0.20970966507886871]}, "232": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.16296847611762813]}, "233": {"P": [[7.0, 3.0, 3.0], [4.0, 9.0, 4.0], [4.0, 4.0, 7.0]], "dev": [0.18667057625986017]}, "234": {"P": [[6.0, 3.0, 3.0], [4.0, 8.0, 3.0], [4.0, 5.0, 9.0]], "dev": [0.24429803842171102]}, "235": {"P": [[9.0, 5.0, 5.0], [4.0, 7.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.19615572529568068]}, "236": {"P": [[8.0, 3.0, 4.0], [4.0, 8.0, 4.0], [4.0, 3.0, 7.0]], "dev": [0.16269783264693941]}, "237": {"P": [[9.0, 5.0, 4.0], [3.0, 7.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.20715459587915963]}, "238": {"P": [[8.0, 5.0, 4.0], [3.0, 8.0, 5.0], [3.0, 3.0, 7.0]], "dev": [0.23487935774018193]}, "239": {"P": [[9.0, 5.0, 4.0], [3.0, 7.0, 3.0], [4.0, 3.0, 7.0]], "dev": [0.2069417285743437]}, "240": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.1008262811239333]}, "241": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 3.0], [5.0, 4.0, 8.0]], "dev": [0.18608408108913652]}, "242": {"P": [[9.0, 4.0, 3.0], [4.0, 7.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.23431556851005342]}, "243": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.20224777839944758]}, "244": {"P": [[7.0, 4.0, 3.0], [3.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.16301662950897988]}, "245": {"P": [[7.0, 3.0, 4.0], [4.0, 8.0, 3.0], [4.0, 3.0, 8.0]], "dev": [0.19666914854823678]}, "246": {"P": [[7.0, 2.0, 3.0], [4.0, 8.0, 3.0], [3.0, 4.0, 7.0]], "dev": [0.23885541987538544]}, "247": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 3.0], [4.0, 5.0, 8.0]], "dev": [0.18628751603047036]}, "248": {"P": [[7.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.15526959167937085]}, "249": {"P": [[7.0, 3.0, 4.0], [4.0, 9.0, 4.0], [3.0, 3.0, 7.0]], "dev": [0.19684813200168541]}, "250": {"P": [[7.0, 2.0, 3.0], [4.0, 8.0, 5.0], [3.0, 4.0, 8.0]], "dev": [0.23378098253000446]}, "251": {"P": [[9.0, 5.0, 5.0], [4.0, 7.0, 4.0], [3.0, 3.0, 8.0]], "dev": [0.19911007438959843]}, "252": {"P": [[7.0, 3.0, 3.0], [3.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.15187181280168036]}, "253": {"P": [[7.0, 3.0, 3.0], [5.0, 8.0, 4.0], [3.0, 3.0, 8.0]], "dev": [0.19723049793909567]}, "254": {"P": [[8.0, 4.0, 5.0], [6.0, 9.0, 5.0], [4.0, 3.0, 8.0]], "dev": [0.2351862256290482]}, "255": {"P": [[8.0, 4.0, 5.0], [4.0, 9.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.18818622912141791]}, "256": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [2.7194799110210365e-16]}, "257": {"P": [[7.0, 4.0, 3.0], [4.0, 9.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.19739208361559965]}, "258": {"P": [[8.0, 3.0, 4.0], [4.0, 8.0, 5.0], [2.0, 3.0, 7.0]], "dev": [0.2339606270671748]}, "259": {"P": [[8.0, 4.0, 5.0], [5.0, 8.0, 4.0], [3.0, 3.0, 8.0]], "dev": [0.19693351388856242]}, "260": {"P": [[9.0, 4.0, 4.0], [4.0, 7.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.18664029311712738]}, "261": {"P": [[8.0, 3.0, 4.0], [5.0, 8.0, 5.0], [3.0, 4.0, 8.0]], "dev": [0.19652981640637818]}, "262": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 3.0], [3.0, 5.0, 8.0]], "dev": [0.23429105971391528]}, "263": {"P": [[8.0, 4.0, 3.0], [5.0, 9.0, 5.0], [4.0, 5.0, 8.0]], "dev": [0.18314167552699251]}, "264": {"P": [[8.0, 4.0, 3.0], [4.0, 8.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.15204538055246003]}, "265": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 3.0], [4.0, 3.0, 8.0]], "dev": [0.1896507781573008]}, "266": {"P": [[8.0, 3.0, 5.0], [5.0, 8.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.22799877297236712]}, "267": {"P": [[7.0, 4.0, 4.0], [4.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.20088487204854433]}, "268": {"P": [[8.0, 4.0, 4.0], [4.0, 9.0, 4.0], [5.0, 5.0, 8.0]], "dev": [0.15811462650104191]}, "269": {"P": [[8.0, 3.0, 4.0], [4.0, 8.0, 5.0], [3.0, 4.0, 8.0]], "dev": [0.18551686068890838]}, "270": {"P": [[9.0, 5.0, 4.0], [5.0, 8.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.20343047024739797]}, "271": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 5.0], [5.0, 4.0, 8.0]], "dev": [0.17908362866842273]}, "272": {"P": [[9.0, 5.0, 5.0], [4.0, 8.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.096975462622798311]}, "273": {"P": [[8.0, 5.0, 5.0], [5.0, 9.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.19810614871206775]}, "274": {"P": [[8.0, 5.0, 4.0], [5.0, 9.0, 6.0], [3.0, 3.0, 8.0]], "dev": [0.23240963567142095]}, "275": {"P": [[7.0, 4.0, 4.0], [5.0, 9.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.18761077718145405]}, "276": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.15462019012083808]}, "277": {"P": [[8.0, 4.0, 3.0], [5.0, 8.0, 4.0], [3.0, 3.0, 8.0]], "dev": [0.19511930574539679]}, "278": {"P": [[7.0, 3.0, 4.0], [4.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.20536263899761537]}, "279": {"P": [[9.0, 5.0, 4.0], [5.0, 9.0, 5.0], [4.0, 5.0, 8.0]], "dev": [0.17668059061390737]}, "280": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 3.0], [4.0, 3.0, 8.0]], "dev": [0.15289673984267477]}, "281": {"P": [[8.0, 3.0, 4.0], [5.0, 8.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.17531659122267557]}, "282": {"P": [[9.0, 5.0, 6.0], [5.0, 9.0, 4.0], [4.0, 5.0, 8.0]], "dev": [0.22082580890916292]}, "283": {"P": [[8.0, 5.0, 4.0], [5.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.17380977693628744]}, "284": {"P": [[8.0, 4.0, 4.0], [4.0, 9.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.13963850294503966]}, "285": {"P": [[7.0, 3.0, 3.0], [4.0, 8.0, 3.0], [5.0, 4.0, 9.0]], "dev": [0.19549323041738176]}, "286": {"P": [[7.0, 3.0, 4.0], [3.0, 8.0, 3.0], [4.0, 5.0, 9.0]], "dev": [0.21332959264940271]}, "287": {"P": [[8.0, 4.0, 3.0], [5.0, 9.0, 4.0], [4.0, 5.0, 8.0]], "dev": [0.18383264270261276]}, "288": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.10973232356472094]}, "289": {"P": [[7.0, 3.0, 3.0], [4.0, 9.0, 4.0], [6.0, 5.0, 9.0]], "dev": [0.21917846225454612]}, "290": {"P": [[8.0, 3.0, 3.0], [3.0, 8.0, 3.0], [5.0, 5.0, 8.0]], "dev": [0.21359368989549046]}, "291": {"P": [[7.0, 3.0, 4.0], [4.0, 9.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.19252213621884542]}, "292": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.13819381983923867]}, "293": {"P": [[8.0, 5.0, 4.0], [4.0, 9.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.16759611628586726]}, "294": {"P": [[9.0, 5.0, 4.0], [5.0, 9.0, 6.0], [3.0, 4.0, 8.0]], "dev": [0.21381096006521677]}, "295": {"P": [[7.0, 4.0, 4.0], [4.0, 9.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.17227225436432114]}, "296": {"P": [[8.0, 4.0, 3.0], [5.0, 8.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.17214661460506508]}, "297": {"P": [[8.0, 3.0, 3.0], [5.0, 9.0, 6.0], [3.0, 4.0, 8.0]], "dev": [0.22543904512948743]}, "298": {"P": [[8.0, 5.0, 5.0], [4.0, 9.0, 3.0], [5.0, 5.0, 9.0]], "dev": [0.21183123357742548]}, "299": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 5.0], [4.0, 5.0, 8.0]], "dev": [0.15343281319322791]}, "300": {"P": [[8.0, 3.0, 4.0], [4.0, 9.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.14990770111176427]}, "301": {"P": [[8.0, 3.0, 4.0], [5.0, 8.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.18161411793184007]}, "302": {"P": [[9.0, 3.0, 4.0], [4.0, 9.0, 5.0], [5.0, 5.0, 8.0]], "dev": [0.21819348927475982]}, "303": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 4.0], [3.0, 4.0, 7.0]], "dev": [0.19084814121602611]}, "304": {"P": [[8.0, 4.0, 4.0], [4.0, 9.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.092346041935696024]}, "305": {"P": [[7.0, 3.0, 3.0], [5.0, 9.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.19071125279989634]}, "306": {"P": [[9.0, 5.0, 5.0], [4.0, 8.0, 3.0], [3.0, 5.0, 8.0]], "dev": [0.21622856833936877]}, "307": {"P": [[7.0, 3.0, 3.0], [4.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.19061250201160371]}, "308": {"P": [[8.0, 4.0, 4.0], [5.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.12442341294899134]}, "309": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 4.0], [6.0, 5.0, 9.0]], "dev": [0.20725645467100778]}, "310": {"P": [[8.0, 5.0, 5.0], [5.0, 10.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.19747980669862519]}, "311": {"P": [[9.0, 4.0, 5.0], [4.0, 9.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.15972082603581747]}, "312": {"P": [[9.0, 4.0, 5.0], [4.0, 8.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.15035263117859257]}, "313": {"P": [[8.0, 3.0, 4.0], [4.0, 8.0, 3.0], [5.0, 5.0, 9.0]], "dev": [0.17167212137989304]}, "314": {"P": [[8.0, 4.0, 5.0], [6.0, 10.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.21167227485749032]}, "315": {"P": [[9.0, 5.0, 5.0], [5.0, 9.0, 4.0], [4.0, 3.0, 8.0]], "dev": [0.15851595978224961]}, "316": {"P": [[8.0, 4.0, 4.0], [5.0, 8.0, 4.0], [4.0, 5.0, 10.0]], "dev": [0.19651929778497151]}, "317": {"P": [[9.0, 4.0, 5.0], [5.0, 8.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.16836408744697051]}, "318": {"P": [[8.0, 5.0, 3.0], [4.0, 9.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.20440762328388448]}, "319": {"P": [[9.0, 5.0, 5.0], [6.0, 9.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.17345003912726104]}, "320": {"P": [[9.0, 4.0, 5.0], [4.0, 9.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.13417143809101423]}, "321": {"P": [[8.0, 3.0, 4.0], [4.0, 8.0, 3.0], [5.0, 4.0, 9.0]], "dev": [0.1819019533812431]}, "322": {"P": [[8.0, 3.0, 4.0], [6.0, 9.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.20338387667764099]}, "323": {"P": [[8.0, 4.0, 5.0], [5.0, 9.0, 5.0], [4.0, 3.0, 9.0]], "dev": [0.19474248515868348]}, "324": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.10550802294374696]}, "325": {"P": [[8.0, 3.0, 3.0], [4.0, 9.0, 4.0], [5.0, 4.0, 8.0]], "dev": [0.18237399499820037]}, "326": {"P": [[10.0, 6.0, 5.0], [5.0, 8.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.19679792120572095]}, "327": {"P": [[8.0, 5.0, 3.0], [5.0, 9.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.20230352613058594]}, "328": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [4.0, 4.0, 8.0]], "dev": [0.13292994679870093]}, "329": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.15573422027734285]}, "330": {"P": [[10.0, 5.0, 5.0], [4.0, 9.0, 5.0], [4.0, 5.0, 8.0]], "dev": [0.17715836834016488]}, "331": {"P": [[9.0, 5.0, 4.0], [6.0, 9.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.17669622087333739]}, "332": {"P": [[8.0, 3.0, 3.0], [3.0, 8.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.19222866215175541]}, "333": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.15532467247299908]}, "334": {"P": [[8.0, 5.0, 4.0], [4.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.20141799611353542]}, "335": {"P": [[9.0, 5.0, 4.0], [5.0, 9.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.13246254844185776]}, "336": {"P": [[8.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 5.0, 10.0]], "dev": [0.16529240573821991]}, "337": {"P": [[8.0, 4.0, 5.0], [4.0, 9.0, 3.0], [3.0, 3.0, 8.0]], "dev": [0.22426684383179127]}, "338": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [5.0, 6.0, 9.0]], "dev": [0.18284101817501111]}, "339": {"P": [[8.0, 3.0, 4.0], [4.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.16512603472161216]}, "340": {"P": [[9.0, 4.0, 4.0], [4.0, 8.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.11967596664623405]}, "341": {"P": [[8.0, 3.0, 3.0], [6.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.22322889974470972]}, "342": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 5.0], [5.0, 4.0, 8.0]], "dev": [0.19833135400405016]}, "343": {"P": [[8.0, 4.0, 5.0], [4.0, 9.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.18969340535502716]}, "344": {"P": [[9.0, 5.0, 5.0], [5.0, 9.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.10095988441071284]}, "345": {"P": [[9.0, 5.0, 4.0], [4.0, 8.0, 3.0], [4.0, 5.0, 9.0]], "dev": [0.16502989312826508]}, "346": {"P": [[8.0, 4.0, 5.0], [4.0, 10.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.19699204742910684]}, "347": {"P": [[8.0, 3.0, 4.0], [3.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.19187103725271759]}, "348": {"P": [[9.0, 5.0, 4.0], [4.0, 8.0, 4.0], [6.0, 5.0, 10.0]], "dev": [0.17032980007255602]}, "349": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.12729892528271106]}, "350": {"P": [[10.0, 5.0, 5.0], [5.0, 8.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.18309434199025454]}, "351": {"P": [[8.0, 3.0, 4.0], [4.0, 9.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.19550221472348484]}, "352": {"P": [[9.0, 3.0, 4.0], [4.0, 9.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.17458744093391856]}, "353": {"P": [[8.0, 3.0, 3.0], [5.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.16536152257203415]}, "354": {"P": [[8.0, 3.0, 4.0], [4.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.19470394157597096]}, "355": {"P": [[8.0, 5.0, 4.0], [5.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.15889362815307917]}, "356": {"P": [[9.0, 4.0, 4.0], [4.0, 9.0, 5.0], [3.0, 4.0, 8.0]], "dev": [0.15585914016544747]}, "357": {"P": [[9.0, 5.0, 4.0], [3.0, 8.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.16571041027924846]}, "358": {"P": [[8.0, 4.0, 5.0], [4.0, 10.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.20164808635334736]}, "359": {"P": [[8.0, 3.0, 4.0], [6.0, 9.0, 5.0], [3.0, 4.0, 9.0]], "dev": [0.22907418410368993]}, "360": {"P": [[8.0, 4.0, 4.0], [4.0, 9.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.109595678722264]}, "361": {"P": [[9.0, 5.0, 4.0], [6.0, 9.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.20188369938234238]}, "362": {"P": [[8.0, 4.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.21627042101182231]}, "363": {"P": [[8.0, 4.0, 3.0], [5.0, 9.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.19272217146651943]}, "364": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.15704586312575139]}, "365": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.15690245716463683]}, "366": {"P": [[10.0, 5.0, 6.0], [4.0, 9.0, 5.0], [4.0, 3.0, 8.0]], "dev": [0.19219412269113356]}, "367": {"P": [[8.0, 4.0, 3.0], [5.0, 9.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.18385872305627415]}, "368": {"P": [[9.0, 4.0, 5.0], [6.0, 10.0, 6.0], [5.0, 4.0, 9.0]], "dev": [0.17415828496560851]}, "369": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.11077045030900402]}, "370": {"P": [[9.0, 5.0, 4.0], [6.0, 10.0, 6.0], [5.0, 4.0, 9.0]], "dev": [0.17333269630739331]}, "371": {"P": [[9.0, 5.0, 5.0], [4.0, 9.0, 3.0], [5.0, 4.0, 9.0]], "dev": [0.16584371969269279]}, "372": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.16574626668661424]}, "373": {"P": [[8.0, 3.0, 3.0], [5.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.19120693931070343]}, "374": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 5.0], [3.0, 5.0, 9.0]], "dev": [0.1910930540737778]}, "375": {"P": [[8.0, 4.0, 5.0], [5.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.16233594494583978]}, "376": {"P": [[9.0, 4.0, 4.0], [4.0, 9.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.12359194956799124]}, "377": {"P": [[9.0, 3.0, 4.0], [4.0, 9.0, 4.0], [6.0, 5.0, 9.0]], "dev": [0.19854207359373172]}, "378": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.13525056446260386]}, "379": {"P": [[8.0, 5.0, 4.0], [5.0, 10.0, 4.0], [4.0, 3.0, 9.0]], "dev": [0.2199212492041204]}, "380": {"P": [[9.0, 5.0, 5.0], [5.0, 9.0, 4.0], [5.0, 5.0, 10.0]], "dev": [0.11740524119743505]}, "381": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [6.0, 5.0, 10.0]], "dev": [0.16027458548976151]}, "382": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 4.0], [6.0, 5.0, 9.0]], "dev": [0.20135581252358989]}, "383": {"P": [[8.0, 5.0, 4.0], [4.0, 9.0, 3.0], [5.0, 4.0, 10.0]], "dev": [0.21950227841902242]}, "384": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 6.0], [5.0, 4.0, 9.0]], "dev": [0.1593534968355988]}, "385": {"P": [[9.0, 4.0, 4.0], [4.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.097044166502234783]}, "386": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.18224984542342307]}, "387": {"P": [[11.0, 5.0, 5.0], [5.0, 8.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.21420258514855259]}, "388": {"P": [[9.0, 3.0, 4.0], [6.0, 10.0, 6.0], [5.0, 5.0, 9.0]], "dev": [0.1920438910125567]}, "389": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.12436778068369879]}, "390": {"P": [[10.0, 5.0, 5.0], [4.0, 9.0, 5.0], [4.0, 3.0, 8.0]], "dev": [0.16522253442665188]}, "391": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.14783419848931623]}, "392": {"P": [[9.0, 4.0, 3.0], [4.0, 9.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.17396537338903123]}, "393": {"P": [[8.0, 3.0, 3.0], [5.0, 9.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.19768824033017132]}, "394": {"P": [[10.0, 6.0, 6.0], [4.0, 9.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.15679452365770175]}, "395": {"P": [[10.0, 5.0, 6.0], [3.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.18246593275955222]}, "396": {"P": [[9.0, 5.0, 4.0], [6.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.14673961204571709]}, "397": {"P": [[8.0, 3.0, 3.0], [4.0, 10.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.19018104198736277]}, "398": {"P": [[9.0, 3.0, 5.0], [6.0, 10.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.20443913640461059]}, "399": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.15580039497327189]}, "400": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [4.0, 4.0, 8.0]], "dev": [0.12456222961869236]}, "401": {"P": [[9.0, 3.0, 4.0], [4.0, 9.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.15697104464489373]}, "402": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 4.0], [5.0, 4.0, 10.0]], "dev": [0.19037700308423128]}, "403": {"P": [[9.0, 3.0, 4.0], [4.0, 10.0, 5.0], [5.0, 6.0, 9.0]], "dev": [0.21716370214456729]}, "404": {"P": [[9.0, 5.0, 5.0], [6.0, 10.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.17043244812521763]}, "405": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.097941620256820711]}, "406": {"P": [[9.0, 5.0, 6.0], [4.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.180425799148904]}, "407": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 3.0], [4.0, 5.0, 9.0]], "dev": [0.19807443822836346]}, "408": {"P": [[8.0, 4.0, 4.0], [5.0, 10.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.18013586559361724]}, "409": {"P": [[10.0, 5.0, 6.0], [5.0, 9.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.14479939812982856]}, "410": {"P": [[10.0, 5.0, 5.0], [4.0, 9.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.12341571231539636]}, "411": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 6.0], [5.0, 5.0, 9.0]], "dev": [0.17598157977228773]}, "412": {"P": [[8.0, 4.0, 4.0], [5.0, 11.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.18737803217952978]}, "413": {"P": [[10.0, 4.0, 5.0], [5.0, 9.0, 4.0], [3.0, 4.0, 8.0]], "dev": [0.19123983245551029]}, "414": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 6.0], [5.0, 4.0, 9.0]], "dev": [0.1443838317235655]}, "415": {"P": [[9.0, 5.0, 5.0], [6.0, 10.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.15753297566351041]}, "416": {"P": [[9.0, 5.0, 5.0], [4.0, 10.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.15374961949447721]}, "417": {"P": [[9.0, 5.0, 4.0], [6.0, 10.0, 5.0], [4.0, 3.0, 9.0]], "dev": [0.18683380652024492]}, "418": {"P": [[9.0, 3.0, 4.0], [5.0, 9.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.17651667531383625]}, "419": {"P": [[9.0, 5.0, 4.0], [5.0, 10.0, 6.0], [3.0, 4.0, 9.0]], "dev": [0.18665434577610593]}, "420": {"P": [[9.0, 5.0, 4.0], [6.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.13669748646805222]}, "421": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.1340097851806491]}, "422": {"P": [[9.0, 4.0, 4.0], [4.0, 10.0, 4.0], [6.0, 5.0, 9.0]], "dev": [0.18642504113051947]}, "423": {"P": [[8.0, 3.0, 4.0], [5.0, 9.0, 4.0], [6.0, 5.0, 11.0]], "dev": [0.21426417280710783]}, "424": {"P": [[10.0, 4.0, 4.0], [6.0, 10.0, 6.0], [5.0, 5.0, 9.0]], "dev": [0.17179646686183281]}, "425": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.084438739460286599]}, "426": {"P": [[9.0, 5.0, 5.0], [6.0, 11.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.17124648143510282]}, "427": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 5.0], [3.0, 3.0, 8.0]], "dev": [0.20016632216403529]}, "428": {"P": [[9.0, 5.0, 4.0], [4.0, 10.0, 6.0], [5.0, 4.0, 9.0]], "dev": [0.19341252899281883]}, "429": {"P": [[9.0, 4.0, 5.0], [6.0, 10.0, 5.0], [4.0, 3.0, 9.0]], "dev": [0.18607011998148523]}, "430": {"P": [[10.0, 5.0, 5.0], [4.0, 9.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.11178148753178661]}, "431": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [6.0, 6.0, 11.0]], "dev": [0.16997772056452612]}, "432": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.16225124436890453]}, "433": {"P": [[9.0, 3.0, 5.0], [6.0, 10.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.20698333119392071]}, "434": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.1521959131748]}, "435": {"P": [[9.0, 4.0, 5.0], [6.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.13270937940659594]}, "436": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.16054249550694152]}, "437": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 3.0], [4.0, 4.0, 9.0]], "dev": [0.20684500292076968]}, "438": {"P": [[9.0, 4.0, 4.0], [6.0, 10.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.18596481033035941]}, "439": {"P": [[9.0, 5.0, 4.0], [4.0, 9.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.15388650180189065]}, "440": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.1384808285523409]}, "441": {"P": [[9.0, 5.0, 4.0], [5.0, 10.0, 4.0], [4.0, 4.0, 9.0]], "dev": [0.14494581792683159]}, "442": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 9.0]], "dev": [0.17561028332079262]}, "443": {"P": [[9.0, 4.0, 3.0], [4.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.18606653374354507]}, "444": {"P": [[10.0, 6.0, 5.0], [5.0, 9.0, 4.0], [6.0, 6.0, 11.0]], "dev": [0.17177633187036057]}, "445": {"P": [[10.0, 5.0, 4.0], [5.0, 9.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.12019701253555466]}, "446": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 5.0], [4.0, 4.0, 10.0]], "dev": [0.14551024044946853]}, "447": {"P": [[9.0, 4.0, 5.0], [4.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.19654638484074549]}, "448": {"P": [[10.0, 4.0, 4.0], [6.0, 10.0, 6.0], [6.0, 6.0, 10.0]], "dev": [0.18537460132851002]}, "449": {"P": [[9.0, 4.0, 3.0], [5.0, 9.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.18925568760821387]}, "450": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.094561867544074349]}, "451": {"P": [[10.0, 5.0, 4.0], [6.0, 10.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.15809660158695293]}, "452": {"P": [[10.0, 6.0, 6.0], [4.0, 9.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.18396711133271731]}, "453": {"P": [[9.0, 3.0, 3.0], [4.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.20694291479641558]}, "454": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 4.0], [4.0, 5.0, 9.0]], "dev": [0.14667048113721548]}, "455": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.1191958685407334]}, "456": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 4.0], [5.0, 4.0, 10.0]], "dev": [0.14888952121660437]}, "457": {"P": [[9.0, 3.0, 4.0], [4.0, 10.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.18690856771891842]}, "458": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 4.0], [6.0, 7.0, 11.0]], "dev": [0.19603441436440069]}, "459": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.17426865460543961]}, "460": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 4.0], [6.0, 6.0, 10.0]], "dev": [0.15723461144421058]}, "461": {"P": [[9.0, 4.0, 4.0], [4.0, 9.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.16534821618536485]}, "462": {"P": [[9.0, 3.0, 4.0], [4.0, 10.0, 4.0], [5.0, 5.0, 9.0]], "dev": [0.18739290960959698]}, "463": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 6.0], [5.0, 3.0, 10.0]], "dev": [0.21380855996240761]}, "464": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.1569884804344929]}, "465": {"P": [[10.0, 5.0, 4.0], [5.0, 10.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.12945380899039746]}, "466": {"P": [[10.0, 4.0, 5.0], [4.0, 9.0, 4.0], [6.0, 5.0, 10.0]], "dev": [0.14831099775097933]}, "467": {"P": [[9.0, 4.0, 4.0], [5.0, 11.0, 5.0], [6.0, 4.0, 9.0]], "dev": [0.20716935221536409]}, "468": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 6.0], [6.0, 4.0, 10.0]], "dev": [0.18720128105542358]}, "469": {"P": [[10.0, 5.0, 6.0], [6.0, 10.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.15549401395938164]}, "470": {"P": [[9.0, 5.0, 5.0], [4.0, 10.0, 4.0], [5.0, 5.0, 10.0]], "dev": [0.12946440559733266]}, "471": {"P": [[9.0, 4.0, 5.0], [5.0, 9.0, 4.0], [5.0, 5.0, 11.0]], "dev": [0.16484061055944704]}, "472": {"P": [[10.0, 4.0, 4.0], [4.0, 10.0, 6.0], [4.0, 5.0, 9.0]], "dev": [0.20038411448942867]}, "473": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 4.0], [3.0, 5.0, 9.0]], "dev": [0.20836203257006178]}, "474": {"P": [[10.0, 6.0, 5.0], [4.0, 10.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.16477941117692385]}, "475": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.080329072638316165]}, "476": {"P": [[10.0, 5.0, 6.0], [4.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.14825491539535682]}, "477": {"P": [[9.0, 4.0, 5.0], [6.0, 11.0, 7.0], [4.0, 5.0, 10.0]], "dev": [0.19766492794804133]}, "478": {"P": [[11.0, 6.0, 6.0], [5.0, 11.0, 5.0], [6.0, 5.0, 9.0]], "dev": [0.19478826232465446]}, "479": {"P": [[11.0, 5.0, 6.0], [5.0, 9.0, 5.0], [3.0, 4.0, 9.0]], "dev": [0.19348944796962811]}, "480": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.12990589622603926]}, "481": {"P": [[9.0, 3.0, 4.0], [4.0, 10.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.18668823112295663]}, "482": {"P": [[9.0, 4.0, 4.0], [4.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.18667640886977818]}, "483": {"P": [[9.0, 4.0, 5.0], [4.0, 9.0, 3.0], [4.0, 5.0, 10.0]], "dev": [0.19034241730807072]}, "484": {"P": [[10.0, 4.0, 5.0], [6.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.14855809044749388]}, "485": {"P": [[9.0, 4.0, 5.0], [6.0, 11.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.16798908756314368]}, "486": {"P": [[9.0, 5.0, 5.0], [5.0, 10.0, 4.0], [4.0, 4.0, 10.0]], "dev": [0.15701383430740024]}, "487": {"P": [[8.0, 3.0, 4.0], [5.0, 10.0, 4.0], [6.0, 5.0, 11.0]], "dev": [0.21218909002560848]}, "488": {"P": [[10.0, 5.0, 4.0], [7.0, 11.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.19102422506779623]}, "489": {"P": [[9.0, 5.0, 5.0], [6.0, 11.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.16188400473892728]}, "490": {"P": [[10.0, 5.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.12357944204957018]}, "491": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.15731784746223601]}, "492": {"P": [[9.0, 3.0, 4.0], [5.0, 10.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.18676181651937088]}, "493": {"P": [[9.0, 6.0, 5.0], [6.0, 11.0, 5.0], [5.0, 5.0, 11.0]], "dev": [0.19585890370664516]}, "494": {"P": [[11.0, 6.0, 6.0], [5.0, 9.0, 5.0], [4.0, 4.0, 10.0]], "dev": [0.15882824294178105]}, "495": {"P": [[9.0, 4.0, 4.0], [4.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.12157727220340531]}, "496": {"P": [[10.0, 4.0, 4.0], [4.0, 9.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.15772188653547717]}, "497": {"P": [[9.0, 5.0, 5.0], [4.0, 10.0, 3.0], [5.0, 4.0, 10.0]], "dev": [0.20609632676704701]}, "498": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 7.0], [6.0, 5.0, 10.0]], "dev": [0.18769708371728455]}, "499": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 5.0], [5.0, 5.0, 9.0]], "dev": [0.15822154542362146]}, "500": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [5.4389598220420729e-16]}, "501": {"P": [[9.0, 4.0, 5.0], [6.0, 10.0, 5.0], [5.0, 5.0, 11.0]], "dev": [0.15801071804301359]}, "502": {"P": [[9.0, 4.0, 3.0], [6.0, 10.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.18719623722042564]}, "503": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 7.0], [5.0, 6.0, 10.0]], "dev": [0.1922474565572897]}, "504": {"P": [[11.0, 5.0, 5.0], [5.0, 10.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.14875079361768687]}, "505": {"P": [[11.0, 6.0, 6.0], [6.0, 11.0, 7.0], [4.0, 4.0, 9.0]], "dev": [0.18562060521121443]}, "506": {"P": [[10.0, 4.0, 5.0], [6.0, 10.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.157561416454049]}, "507": {"P": [[9.0, 4.0, 4.0], [5.0, 9.0, 4.0], [5.0, 4.0, 11.0]], "dev": [0.19402659519135912]}, "508": {"P": [[9.0, 4.0, 4.0], [4.0, 10.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.1876120372356348]}, "509": {"P": [[9.0, 4.0, 5.0], [5.0, 10.0, 4.0], [4.0, 5.0, 10.0]], "dev": [0.15920597546149023]}, "510": {"P": [[10.0, 5.0, 6.0], [5.0, 10.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.12193523987218342]}, "511": {"P": [[10.0, 5.0, 6.0], [6.0, 10.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.15492175111169273]}, "512": {"P": [[10.0, 4.0, 6.0], [6.0, 10.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.18374640238183698]}, "513": {"P": [[10.0, 5.0, 4.0], [6.0, 10.0, 5.0], [5.0, 7.0, 11.0]], "dev": [0.20259101936873808]}, "514": {"P": [[10.0, 5.0, 6.0], [4.0, 10.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.14597127081644257]}, "515": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.12779622227194537]}, "516": {"P": [[10.0, 4.0, 5.0], [4.0, 10.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.15241271405631152]}, "517": {"P": [[10.0, 3.0, 4.0], [5.0, 10.0, 6.0], [4.0, 4.0, 9.0]], "dev": [0.20698655470026409]}, "518": {"P": [[9.0, 5.0, 5.0], [4.0, 10.0, 3.0], [6.0, 6.0, 11.0]], "dev": [0.2042441765757127]}, "519": {"P": [[9.0, 5.0, 4.0], [6.0, 11.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.16072775033197212]}, "520": {"P": [[10.0, 5.0, 5.0], [6.0, 10.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.12656787961573451]}, "521": {"P": [[9.0, 4.0, 4.0], [5.0, 11.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.14889435561514133]}, "522": {"P": [[9.0, 5.0, 4.0], [6.0, 12.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.18798585516275773]}, "523": {"P": [[9.0, 3.0, 4.0], [5.0, 10.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.19163623010775388]}, "524": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.1436722013250768]}, "525": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.077866342907670472]}, "526": {"P": [[10.0, 5.0, 4.0], [5.0, 11.0, 6.0], [6.0, 6.0, 10.0]], "dev": [0.15924757091811878]}, "527": {"P": [[9.0, 5.0, 5.0], [5.0, 12.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.20952937843377611]}, "528": {"P": [[10.0, 6.0, 6.0], [6.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.16087498621445037]}, "529": {"P": [[11.0, 5.0, 4.0], [4.0, 9.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.19140688184273474]}, "530": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.12450576466066447]}, "531": {"P": [[11.0, 5.0, 5.0], [5.0, 9.0, 4.0], [6.0, 7.0, 11.0]], "dev": [0.18620226633038417]}, "532": {"P": [[9.0, 4.0, 3.0], [5.0, 11.0, 5.0], [6.0, 6.0, 10.0]], "dev": [0.19133489306705426]}, "533": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [5.0, 7.0, 10.0]], "dev": [0.19915424423988601]}, "534": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 5.0, 9.0]], "dev": [0.15003648729517877]}, "535": {"P": [[10.0, 6.0, 5.0], [6.0, 11.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.14987681606220879]}, "536": {"P": [[10.0, 5.0, 6.0], [6.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.14152642317584044]}, "537": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 6.0], [7.0, 6.0, 11.0]], "dev": [0.17886863424967103]}, "538": {"P": [[11.0, 6.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 9.0]], "dev": [0.16458736099153398]}, "539": {"P": [[10.0, 6.0, 5.0], [6.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.14097262945412023]}, "540": {"P": [[10.0, 4.0, 5.0], [4.0, 10.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.12333700542289497]}, "541": {"P": [[9.0, 4.0, 4.0], [6.0, 10.0, 5.0], [4.0, 5.0, 11.0]], "dev": [0.18497828000087338]}, "542": {"P": [[10.0, 5.0, 6.0], [4.0, 11.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.1849953245871003]}, "543": {"P": [[9.0, 5.0, 5.0], [6.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.19600388167517938]}, "544": {"P": [[10.0, 6.0, 6.0], [6.0, 11.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.13926646098091763]}, "545": {"P": [[11.0, 5.0, 5.0], [5.0, 10.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.11231105380843479]}, "546": {"P": [[10.0, 5.0, 4.0], [4.0, 9.0, 4.0], [5.0, 6.0, 11.0]], "dev": [0.15757254741842072]}, "547": {"P": [[10.0, 5.0, 6.0], [4.0, 11.0, 5.0], [7.0, 6.0, 11.0]], "dev": [0.20079267549600108]}, "548": {"P": [[9.0, 4.0, 5.0], [4.0, 10.0, 4.0], [5.0, 6.0, 11.0]], "dev": [0.17198834432946805]}, "549": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.14807905643340721]}, "550": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.088441310320141506]}, "551": {"P": [[9.0, 4.0, 4.0], [5.0, 11.0, 5.0], [7.0, 6.0, 11.0]], "dev": [0.17675863165936703]}, "552": {"P": [[10.0, 4.0, 4.0], [6.0, 10.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.17223176942489726]}, "553": {"P": [[11.0, 6.0, 6.0], [5.0, 11.0, 4.0], [5.0, 4.0, 9.0]], "dev": [0.18304786936759845]}, "554": {"P": [[9.0, 4.0, 4.0], [5.0, 10.0, 4.0], [5.0, 6.0, 11.0]], "dev": [0.15824687599538256]}, "555": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.11154905677504844]}, "556": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.1356215742023395]}, "557": {"P": [[10.0, 4.0, 5.0], [7.0, 11.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.19217120032567994]}, "558": {"P": [[10.0, 4.0, 6.0], [5.0, 11.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.17281036903365984]}, "559": {"P": [[11.0, 5.0, 6.0], [5.0, 11.0, 5.0], [5.0, 4.0, 9.0]], "dev": [0.1549542456159245]}, "560": {"P": [[11.0, 6.0, 6.0], [4.0, 10.0, 4.0], [5.0, 6.0, 10.0]], "dev": [0.14721583820180245]}, "561": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 6.0], [3.0, 4.0, 9.0]], "dev": [0.18584974582132766]}, "562": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [3.0, 4.0, 9.0]], "dev": [0.1859210953022776]}, "563": {"P": [[10.0, 5.0, 4.0], [7.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.17160362473202043]}, "564": {"P": [[9.0, 5.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 11.0]], "dev": [0.13894785367270018]}, "565": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.1389144278927554]}, "566": {"P": [[10.0, 6.0, 5.0], [4.0, 10.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.1469376015256392]}, "567": {"P": [[10.0, 4.0, 5.0], [5.0, 11.0, 7.0], [4.0, 5.0, 10.0]], "dev": [0.19409661505099685]}, "568": {"P": [[11.0, 4.0, 5.0], [6.0, 11.0, 6.0], [6.0, 6.0, 10.0]], "dev": [0.17048474883824613]}, "569": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.12341366328811396]}, "570": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 4.0], [6.0, 5.0, 11.0]], "dev": [0.12118080123461213]}, "571": {"P": [[11.0, 7.0, 6.0], [6.0, 11.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.16985500459267799]}, "572": {"P": [[10.0, 4.0, 5.0], [6.0, 10.0, 4.0], [6.0, 6.0, 11.0]], "dev": [0.1751834309784448]}, "573": {"P": [[9.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 4.0, 11.0]], "dev": [0.1815428850935476]}, "574": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 5.0], [4.0, 5.0, 9.0]], "dev": [0.15434049838513098]}, "575": {"P": [[10.0, 5.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.074806517188210589]}, "576": {"P": [[9.0, 4.0, 4.0], [6.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.15431598003387725]}, "577": {"P": [[11.0, 7.0, 5.0], [5.0, 11.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.18780963886582824]}, "578": {"P": [[10.0, 6.0, 6.0], [6.0, 11.0, 5.0], [5.0, 4.0, 11.0]], "dev": [0.17511015961383811]}, "579": {"P": [[9.0, 4.0, 4.0], [5.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.15430340571065124]}, "580": {"P": [[11.0, 6.0, 6.0], [5.0, 11.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.10078863958602087]}, "581": {"P": [[10.0, 5.0, 4.0], [7.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.16797644462527583]}, "582": {"P": [[12.0, 7.0, 7.0], [6.0, 11.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.18028831218683519]}, "583": {"P": [[9.0, 4.0, 5.0], [5.0, 11.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.18674452594672677]}, "584": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.15434552994949011]}, "585": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.12174472946929957]}, "586": {"P": [[10.0, 5.0, 4.0], [5.0, 11.0, 5.0], [6.0, 5.0, 10.0]], "dev": [0.13905543810265544]}, "587": {"P": [[9.0, 4.0, 4.0], [6.0, 10.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.19891406639622483]}, "588": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.15843556022959979]}, "589": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.12878676870669362]}, "590": {"P": [[10.0, 5.0, 6.0], [5.0, 12.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.15970634135728312]}, "591": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.13694165097450481]}, "592": {"P": [[10.0, 6.0, 4.0], [5.0, 11.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.16629047323855561]}, "593": {"P": [[11.0, 5.0, 5.0], [7.0, 12.0, 7.0], [5.0, 6.0, 10.0]], "dev": [0.17052771788125659]}, "594": {"P": [[10.0, 4.0, 5.0], [5.0, 11.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.12814319291632933]}, "595": {"P": [[10.0, 6.0, 5.0], [5.0, 10.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.15904645452318295]}, "596": {"P": [[11.0, 6.0, 7.0], [5.0, 10.0, 4.0], [5.0, 6.0, 11.0]], "dev": [0.16577296217728507]}, "597": {"P": [[10.0, 4.0, 5.0], [7.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.16565136925342838]}, "598": {"P": [[10.0, 5.0, 6.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.16911938753058262]}, "599": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.14015727464090807]}, "600": {"P": [[10.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.10875962827470197]}, "601": {"P": [[10.0, 4.0, 5.0], [5.0, 10.0, 4.0], [6.0, 5.0, 11.0]], "dev": [0.14774067651878348]}, "602": {"P": [[10.0, 6.0, 6.0], [6.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.17449854961070532]}, "603": {"P": [[10.0, 4.0, 5.0], [5.0, 11.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.18395650597325061]}, "604": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 4.0], [6.0, 6.0, 11.0]], "dev": [0.15806093880343919]}, "605": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.085675872223516414]}, "606": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [4.0, 4.0, 10.0]], "dev": [0.14815745265268757]}, "607": {"P": [[9.0, 5.0, 4.0], [6.0, 11.0, 5.0], [5.0, 6.0, 12.0]], "dev": [0.18942383080839001]}, "608": {"P": [[11.0, 6.0, 4.0], [6.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.17735228611238285]}, "609": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 4.0], [6.0, 5.0, 11.0]], "dev": [0.16442900130248908]}, "610": {"P": [[10.0, 5.0, 5.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.10808552464299651]}, "611": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.1266786153702808]}, "612": {"P": [[10.0, 5.0, 4.0], [6.0, 12.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.15739605829514006]}, "613": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.15863104485608287]}, "614": {"P": [[11.0, 5.0, 5.0], [4.0, 10.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.16404505642789094]}, "615": {"P": [[10.0, 4.0, 5.0], [4.0, 11.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.15620718936732306]}, "616": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.12645209518620801]}, "617": {"P": [[11.0, 5.0, 6.0], [6.0, 10.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.16448390406140265]}, "618": {"P": [[10.0, 6.0, 5.0], [6.0, 11.0, 5.0], [6.0, 6.0, 12.0]], "dev": [0.14308335504705447]}, "619": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.14286656070718423]}, "620": {"P": [[10.0, 5.0, 4.0], [4.0, 10.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.14966979742382119]}, "621": {"P": [[11.0, 4.0, 5.0], [5.0, 11.0, 6.0], [4.0, 4.0, 9.0]], "dev": [0.18236575104349173]}, "622": {"P": [[11.0, 7.0, 6.0], [5.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.14964139896157452]}, "623": {"P": [[11.0, 6.0, 6.0], [7.0, 11.0, 6.0], [5.0, 4.0, 11.0]], "dev": [0.16973379199084979]}, "624": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.1071898857378331]}, "625": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.13452701327188216]}, "626": {"P": [[11.0, 4.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 10.0]], "dev": [0.18209692067875541]}, "627": {"P": [[11.0, 6.0, 4.0], [6.0, 11.0, 6.0], [7.0, 6.0, 11.0]], "dev": [0.18708654826276624]}, "628": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 4.0], [7.0, 7.0, 12.0]], "dev": [0.19256233889752525]}, "629": {"P": [[10.0, 4.0, 5.0], [5.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.13449819651271108]}, "630": {"P": [[10.0, 5.0, 5.0], [5.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.097559424460265887]}, "631": {"P": [[11.0, 7.0, 5.0], [5.0, 11.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.18186863081059398]}, "632": {"P": [[10.0, 4.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.16966202387704182]}, "633": {"P": [[11.0, 4.0, 5.0], [6.0, 11.0, 5.0], [4.0, 4.0, 9.0]], "dev": [0.18338374591175377]}, "634": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.15450643318419272]}, "635": {"P": [[11.0, 6.0, 6.0], [6.0, 11.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.082267079121440878]}, "636": {"P": [[10.0, 5.0, 4.0], [6.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.13456625035018896]}, "637": {"P": [[10.0, 4.0, 5.0], [7.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.18167268005029211]}, "638": {"P": [[10.0, 5.0, 6.0], [6.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.16062951434302633]}, "639": {"P": [[11.0, 4.0, 6.0], [4.0, 10.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.18162581079131418]}, "640": {"P": [[10.0, 5.0, 5.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.13908092752346587]}, "641": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.10406539432690816]}, "642": {"P": [[10.0, 4.0, 4.0], [5.0, 11.0, 5.0], [7.0, 6.0, 11.0]], "dev": [0.16315591614312955]}, "643": {"P": [[10.0, 5.0, 6.0], [5.0, 12.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.15989960274798845]}, "644": {"P": [[11.0, 6.0, 6.0], [5.0, 11.0, 4.0], [5.0, 4.0, 10.0]], "dev": [0.15656397044924625]}, "645": {"P": [[10.0, 5.0, 5.0], [6.0, 12.0, 5.0], [5.0, 4.0, 10.0]], "dev": [0.1565815104952227]}, "646": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.13491319261701293]}, "647": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 5.0], [7.0, 7.0, 12.0]], "dev": [0.16583973996948737]}, "648": {"P": [[12.0, 6.0, 6.0], [6.0, 10.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.14822025695895513]}, "649": {"P": [[10.0, 4.0, 5.0], [5.0, 11.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15911564728813454]}, "650": {"P": [[11.0, 4.0, 5.0], [5.0, 11.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.14268504063449727]}, "651": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.13519126786513769]}, "652": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 4.0], [6.0, 6.0, 11.0]], "dev": [0.17567334376300911]}, "653": {"P": [[10.0, 5.0, 4.0], [7.0, 12.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.15864770523670213]}, "654": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.12951086127685565]}, "655": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.12752140986031363]}, "656": {"P": [[10.0, 4.0, 5.0], [6.0, 12.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.15832498470646431]}, "657": {"P": [[10.0, 5.0, 4.0], [5.0, 12.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.18267464113138834]}, "658": {"P": [[9.0, 4.0, 4.0], [5.0, 11.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.18161681682551087]}, "659": {"P": [[11.0, 6.0, 4.0], [6.0, 12.0, 7.0], [6.0, 5.0, 10.0]], "dev": [0.19882157415815094]}, "660": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 5.0], [5.0, 5.0, 10.0]], "dev": [0.089829274226300784]}, "661": {"P": [[11.0, 5.0, 5.0], [7.0, 11.0, 6.0], [3.0, 4.0, 10.0]], "dev": [0.20325116829630202]}, "662": {"P": [[10.0, 5.0, 6.0], [5.0, 12.0, 5.0], [4.0, 5.0, 10.0]], "dev": [0.18171047594837755]}, "663": {"P": [[12.0, 5.0, 5.0], [5.0, 10.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.16410163221397109]}, "664": {"P": [[10.0, 4.0, 5.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.15758033851848086]}, "665": {"P": [[10.0, 5.0, 4.0], [5.0, 11.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.12850883120690718]}, "666": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.12844452425605743]}, "667": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 7.0], [4.0, 5.0, 10.0]], "dev": [0.15734372297373028]}, "668": {"P": [[11.0, 6.0, 6.0], [6.0, 13.0, 6.0], [6.0, 5.0, 10.0]], "dev": [0.1755086701378599]}, "669": {"P": [[10.0, 6.0, 5.0], [5.0, 11.0, 4.0], [6.0, 7.0, 12.0]], "dev": [0.18151316555569164]}, "670": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 5.0], [7.0, 7.0, 12.0]], "dev": [0.14273249540934774]}, "671": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.090722098469243395]}, "672": {"P": [[11.0, 6.0, 7.0], [6.0, 12.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.14230353306406515]}, "673": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.16230445271671964]}, "674": {"P": [[10.0, 5.0, 6.0], [5.0, 11.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.15020825937632584]}, "675": {"P": [[10.0, 5.0, 5.0], [5.0, 10.0, 5.0], [6.0, 6.0, 13.0]], "dev": [0.1632183211348304]}, "676": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.15676930181993368]}, "677": {"P": [[10.0, 4.0, 5.0], [7.0, 12.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.15671776610131438]}, "678": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 7.0], [7.0, 7.0, 12.0]], "dev": [0.15958807176247264]}, "679": {"P": [[11.0, 5.0, 4.0], [6.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.13570008658317981]}, "680": {"P": [[10.0, 5.0, 5.0], [6.0, 11.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.13567102822198251]}, "681": {"P": [[11.0, 4.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.16500835938211239]}, "682": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.11088322060295014]}, "683": {"P": [[12.0, 7.0, 7.0], [5.0, 12.0, 6.0], [7.0, 6.0, 11.0]], "dev": [0.18187880809335724]}, "684": {"P": [[11.0, 5.0, 6.0], [5.0, 11.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.13252474377443069]}, "685": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.10134723400830135]}, "686": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 7.0], [4.0, 5.0, 11.0]], "dev": [0.16270700002021682]}, "687": {"P": [[11.0, 6.0, 5.0], [4.0, 10.0, 5.0], [5.0, 7.0, 12.0]], "dev": [0.18588704951825263]}, "688": {"P": [[10.0, 6.0, 5.0], [6.0, 12.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.17176601945211029]}, "689": {"P": [[11.0, 5.0, 7.0], [6.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.17738863641359839]}, "690": {"P": [[12.0, 6.0, 6.0], [5.0, 11.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.096041008352425114]}, "691": {"P": [[12.0, 7.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.13133620575988972]}, "692": {"P": [[10.0, 6.0, 5.0], [6.0, 11.0, 5.0], [6.0, 6.0, 13.0]], "dev": [0.17691483401420918]}, "693": {"P": [[11.0, 4.0, 5.0], [7.0, 11.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.18013055126103572]}, "694": {"P": [[10.0, 6.0, 5.0], [6.0, 12.0, 5.0], [5.0, 4.0, 11.0]], "dev": [0.18009859227448224]}, "695": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.13072087148435368]}, "696": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.079659473481213425]}, "697": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.14962710459402936]}, "698": {"P": [[11.0, 6.0, 7.0], [5.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.16426417896408219]}, "699": {"P": [[10.0, 5.0, 6.0], [6.0, 12.0, 5.0], [5.0, 4.0, 11.0]], "dev": [0.17996805047302061]}, "700": {"P": [[11.0, 4.0, 5.0], [7.0, 12.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.1577809898577143]}, "701": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.10208431365888175]}, "702": {"P": [[10.0, 4.0, 5.0], [6.0, 11.0, 5.0], [6.0, 6.0, 12.0]], "dev": [0.13568921113328403]}, "703": {"P": [[11.0, 6.0, 7.0], [6.0, 13.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.17067744902403997]}, "704": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 6.0], [6.0, 6.0, 10.0]], "dev": [0.17521908883453588]}, "705": {"P": [[11.0, 4.0, 5.0], [7.0, 12.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.16245059857937008]}, "706": {"P": [[11.0, 5.0, 6.0], [7.0, 12.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.16245790014842593]}, "707": {"P": [[11.0, 5.0, 6.0], [7.0, 12.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.12914828045997631]}, "708": {"P": [[12.0, 6.0, 5.0], [6.0, 12.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.1503259679467859]}, "709": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.12100018167033517]}, "710": {"P": [[11.0, 4.0, 5.0], [5.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.14308020148419398]}, "711": {"P": [[12.0, 6.0, 7.0], [7.0, 11.0, 6.0], [4.0, 5.0, 11.0]], "dev": [0.17995330978890775]}, "712": {"P": [[11.0, 4.0, 6.0], [7.0, 12.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.16849891754520899]}, "713": {"P": [[11.0, 5.0, 6.0], [7.0, 12.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.12851269692086068]}, "714": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.14968345618005524]}, "715": {"P": [[11.0, 6.0, 5.0], [7.0, 12.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.12040389373692605]}, "716": {"P": [[10.0, 4.0, 4.0], [5.0, 12.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.15647242861466298]}, "717": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 7.0], [7.0, 5.0, 12.0]], "dev": [0.17929980613813132]}, "718": {"P": [[12.0, 5.0, 5.0], [7.0, 12.0, 6.0], [5.0, 6.0, 10.0]], "dev": [0.17363111799050693]}, "719": {"P": [[12.0, 7.0, 6.0], [6.0, 12.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.14145756665636186]}, "720": {"P": [[11.0, 5.0, 6.0], [5.0, 11.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10235054473197183]}, "721": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [4.0, 5.0, 11.0]], "dev": [0.12926973602655326]}, "722": {"P": [[10.0, 5.0, 4.0], [6.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.15671477567603564]}, "723": {"P": [[11.0, 6.0, 5.0], [4.0, 11.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.16287822659906057]}, "724": {"P": [[11.0, 4.0, 6.0], [4.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.18535341683492654]}, "725": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 5.0], [7.0, 7.0, 12.0]], "dev": [0.14011759926336401]}, "726": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.080622576512110578]}, "727": {"P": [[11.0, 7.0, 6.0], [5.0, 11.0, 5.0], [5.0, 6.0, 12.0]], "dev": [0.14858088780926818]}, "728": {"P": [[10.0, 5.0, 6.0], [6.0, 12.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.16701540595981051]}, "729": {"P": [[11.0, 5.0, 4.0], [6.0, 11.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.17820685484708276]}, "730": {"P": [[10.0, 5.0, 5.0], [6.0, 12.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.14838117735076056]}, "731": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.1193123922700339]}, "732": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [6.0, 6.0, 12.0]], "dev": [0.10171893213529287]}, "733": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.16988328400482614]}, "734": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 7.0], [6.0, 7.0, 11.0]], "dev": [0.1696986788065073]}, "735": {"P": [[12.0, 5.0, 5.0], [5.0, 11.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.16349160781214991]}, "736": {"P": [[11.0, 6.0, 5.0], [5.0, 12.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.15753689270057866]}, "737": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.11908354402919372]}, "738": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [7.0, 7.0, 12.0]], "dev": [0.14436302278211427]}, "739": {"P": [[11.0, 6.0, 6.0], [7.0, 13.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.14418320895972564]}, "740": {"P": [[11.0, 5.0, 6.0], [6.0, 13.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.15423086807163172]}, "741": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.17738822142580793]}, "742": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [4.0, 5.0, 11.0]], "dev": [0.14532263662886824]}, "743": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.1681306631526365]}, "744": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.12924479797759422]}, "745": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.12672626073580409]}, "746": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.15399525409501491]}, "747": {"P": [[11.0, 5.0, 4.0], [5.0, 12.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.17707755328807961]}, "748": {"P": [[11.0, 4.0, 5.0], [7.0, 11.0, 5.0], [5.0, 5.0, 11.0]], "dev": [0.18102382890057481]}, "749": {"P": [[11.0, 4.0, 5.0], [5.0, 11.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.15390451696896237]}, "750": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.11240437176525152]}, "751": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.11060758586257211]}, "752": {"P": [[11.0, 7.0, 6.0], [5.0, 11.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.15383149049519468]}, "753": {"P": [[13.0, 6.0, 7.0], [5.0, 11.0, 6.0], [5.0, 4.0, 10.0]], "dev": [0.17683037488262671]}, "754": {"P": [[11.0, 6.0, 5.0], [5.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.15985381698051235]}, "755": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 5.0], [7.0, 7.0, 13.0]], "dev": [0.14162251773207601]}, "756": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.069535321840221681]}, "757": {"P": [[11.0, 6.0, 5.0], [6.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.14134373439942668]}, "758": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.1653204321672623]}, "759": {"P": [[12.0, 7.0, 7.0], [4.0, 10.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.18719997937214319]}, "760": {"P": [[11.0, 6.0, 5.0], [5.0, 12.0, 6.0], [4.0, 4.0, 10.0]], "dev": [0.16551662395134439]}, "761": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.15371612717858477]}, "762": {"P": [[11.0, 6.0, 5.0], [5.0, 11.0, 5.0], [6.0, 6.0, 12.0]], "dev": [0.092333109317989936]}, "763": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.14056143297472073]}, "764": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 6.0], [4.0, 5.0, 12.0]], "dev": [0.17111582483773541]}, "765": {"P": [[12.0, 7.0, 5.0], [5.0, 12.0, 6.0], [5.0, 5.0, 10.0]], "dev": [0.17651961331183297]}, "766": {"P": [[10.0, 6.0, 5.0], [7.0, 13.0, 7.0], [5.0, 5.0, 12.0]], "dev": [0.18117540686532246]}, "767": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.12595451315091874]}, "768": {"P": [[12.0, 6.0, 6.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.10990949487476337]}, "769": {"P": [[11.0, 5.0, 6.0], [7.0, 12.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.13985923473249634]}, "770": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.13422116937444442]}, "771": {"P": [[10.0, 5.0, 4.0], [6.0, 12.0, 5.0], [5.0, 4.0, 11.0]], "dev": [0.18277215429129445]}, "772": {"P": [[11.0, 6.0, 5.0], [5.0, 12.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.15377835989255989]}, "773": {"P": [[12.0, 5.0, 6.0], [6.0, 11.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.12717515546714547]}, "774": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.1324607122683851]}, "775": {"P": [[13.0, 6.0, 6.0], [6.0, 11.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.132363182882583]}, "776": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 6.0], [4.0, 6.0, 12.0]], "dev": [0.17107334080624861]}, "777": {"P": [[11.0, 4.0, 4.0], [6.0, 11.0, 6.0], [4.0, 5.0, 11.0]], "dev": [0.18333870106296929]}, "778": {"P": [[11.0, 6.0, 5.0], [6.0, 12.0, 7.0], [5.0, 4.0, 11.0]], "dev": [0.1539022833187251]}, "779": {"P": [[11.0, 6.0, 5.0], [4.0, 11.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.15392890957428196]}, "780": {"P": [[12.0, 6.0, 6.0], [6.0, 12.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.11382374893374141]}, "781": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.12011202026579205]}, "782": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.14514524880991359]}, "783": {"P": [[11.0, 5.0, 5.0], [5.0, 12.0, 4.0], [7.0, 6.0, 11.0]], "dev": [0.19159627840093513]}, "784": {"P": [[11.0, 4.0, 6.0], [7.0, 12.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.16567258063976451]}, "785": {"P": [[11.0, 6.0, 5.0], [7.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.1417375709541584]}, "786": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.09939412683190503]}, "787": {"P": [[11.0, 5.0, 5.0], [6.0, 11.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.12058288172519195]}, "788": {"P": [[11.0, 5.0, 6.0], [6.0, 13.0, 6.0], [4.0, 5.0, 10.0]], "dev": [0.17125700385885673]}, "789": {"P": [[10.0, 4.0, 5.0], [7.0, 12.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.1916125719340854]}, "790": {"P": [[12.0, 5.0, 5.0], [7.0, 12.0, 7.0], [7.0, 7.0, 12.0]], "dev": [0.15326977675139467]}, "791": {"P": [[11.0, 5.0, 4.0], [6.0, 11.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.15669606933388178]}, "792": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.078317928547617627]}, "793": {"P": [[11.0, 6.0, 5.0], [5.0, 12.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.13098570249314156]}, "794": {"P": [[13.0, 7.0, 6.0], [7.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.15252631934406918]}, "795": {"P": [[11.0, 4.0, 6.0], [5.0, 12.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.17673339633545254]}, "796": {"P": [[11.0, 5.0, 6.0], [4.0, 11.0, 4.0], [6.0, 7.0, 12.0]], "dev": [0.17149804170764196]}, "797": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 5.0], [5.0, 6.0, 11.0]], "dev": [0.12152102781257142]}, "798": {"P": [[11.0, 5.0, 5.0], [7.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.098829372849693467]}, "799": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.13905703515576934]}, "800": {"P": [[11.0, 7.0, 6.0], [6.0, 12.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.16187589721786125]}, "801": {"P": [[11.0, 5.0, 5.0], [5.0, 13.0, 6.0], [6.0, 7.0, 11.0]], "dev": [0.18300095599527175]}, "802": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 5.0], [7.0, 8.0, 13.0]], "dev": [0.16275757503063659]}, "803": {"P": [[13.0, 7.0, 6.0], [7.0, 12.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.15191394327593882]}, "804": {"P": [[11.0, 5.0, 5.0], [7.0, 12.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.13048465732360098]}, "805": {"P": [[12.0, 5.0, 6.0], [5.0, 12.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.12327873021595379]}, "806": {"P": [[11.0, 4.0, 5.0], [5.0, 12.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.15525159468688449]}, "807": {"P": [[11.0, 6.0, 7.0], [6.0, 13.0, 5.0], [5.0, 5.0, 11.0]], "dev": [0.18263128802934112]}, "808": {"P": [[12.0, 5.0, 5.0], [7.0, 13.0, 7.0], [6.0, 7.0, 11.0]], "dev": [0.16732234630580659]}, "809": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.13033875560348221]}, "810": {"P": [[12.0, 6.0, 5.0], [6.0, 12.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.13031557050674258]}, "811": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13706775602676199]}, "812": {"P": [[11.0, 4.0, 5.0], [5.0, 12.0, 5.0], [6.0, 6.0, 11.0]], "dev": [0.1556929573207318]}, "813": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 5.0], [7.0, 6.0, 11.0]], "dev": [0.1823153955227815]}, "814": {"P": [[12.0, 7.0, 5.0], [5.0, 11.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.15552845585701344]}, "815": {"P": [[12.0, 7.0, 6.0], [7.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.1359938967372939]}, "816": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10745240182277772]}, "817": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.12309385642688636]}, "818": {"P": [[11.0, 6.0, 4.0], [7.0, 12.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.17191976214086607]}, "819": {"P": [[11.0, 7.0, 7.0], [5.0, 12.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.18205200246961273]}, "820": {"P": [[13.0, 6.0, 7.0], [5.0, 10.0, 5.0], [5.0, 6.0, 12.0]], "dev": [0.16105304018826636]}, "821": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.12887097903097722]}, "822": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.10754041585184819]}, "823": {"P": [[11.0, 5.0, 6.0], [6.0, 11.0, 5.0], [6.0, 6.0, 13.0]], "dev": [0.13690504392393379]}, "824": {"P": [[11.0, 5.0, 5.0], [8.0, 12.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.17561871478403443]}, "825": {"P": [[11.0, 5.0, 4.0], [4.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.17819286152057595]}, "826": {"P": [[13.0, 7.0, 6.0], [7.0, 11.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.17390630605552776]}, "827": {"P": [[11.0, 5.0, 5.0], [5.0, 11.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.13690853011922538]}, "828": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.066759141018924884]}, "829": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.12319912744513496]}, "830": {"P": [[12.0, 6.0, 5.0], [8.0, 13.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.16437861765930581]}, "831": {"P": [[11.0, 6.0, 5.0], [5.0, 13.0, 7.0], [7.0, 7.0, 12.0]], "dev": [0.18468831788465359]}, "832": {"P": [[12.0, 5.0, 5.0], [8.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.16415111958313694]}, "833": {"P": [[11.0, 4.0, 5.0], [7.0, 13.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.16085822250864004]}, "834": {"P": [[12.0, 6.0, 5.0], [6.0, 12.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.10795346686186474]}, "835": {"P": [[12.0, 5.0, 6.0], [7.0, 11.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.16382211114160525]}, "836": {"P": [[12.0, 5.0, 6.0], [5.0, 11.0, 4.0], [7.0, 7.0, 12.0]], "dev": [0.16084933143341207]}, "837": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 7.0], [7.0, 5.0, 12.0]], "dev": [0.18156401436872333]}, "838": {"P": [[12.0, 6.0, 5.0], [4.0, 11.0, 5.0], [6.0, 5.0, 11.0]], "dev": [0.15814910773756996]}, "839": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.12349612255476311]}, "840": {"P": [[12.0, 5.0, 5.0], [6.0, 12.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.13350565210035689]}, "841": {"P": [[11.0, 5.0, 6.0], [7.0, 12.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13987947215854626]}, "842": {"P": [[11.0, 5.0, 5.0], [5.0, 13.0, 6.0], [6.0, 6.0, 11.0]], "dev": [0.15528417866408686]}, "843": {"P": [[11.0, 6.0, 4.0], [6.0, 13.0, 7.0], [7.0, 7.0, 12.0]], "dev": [0.18339414608570198]}, "844": {"P": [[12.0, 6.0, 5.0], [6.0, 11.0, 6.0], [8.0, 6.0, 13.0]], "dev": [0.17340835011508474]}, "845": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.13305416952707064]}, "846": {"P": [[12.0, 6.0, 5.0], [6.0, 12.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.12617546324263115]}, "847": {"P": [[11.0, 6.0, 6.0], [6.0, 12.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.13077224986770061]}, "848": {"P": [[11.0, 4.0, 6.0], [7.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.17303922045740788]}, "849": {"P": [[11.0, 5.0, 5.0], [5.0, 12.0, 7.0], [7.0, 5.0, 12.0]], "dev": [0.18147770500532123]}, "850": {"P": [[12.0, 5.0, 7.0], [7.0, 13.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.15834755237515866]}, "851": {"P": [[11.0, 6.0, 6.0], [7.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.13416522149285062]}, "852": {"P": [[13.0, 6.0, 6.0], [6.0, 11.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10269860015528966]}, "853": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.13106989394695298]}, "854": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.15553885871599124]}, "855": {"P": [[11.0, 6.0, 5.0], [6.0, 11.0, 5.0], [5.0, 5.0, 13.0]], "dev": [0.18150242561229069]}, "856": {"P": [[12.0, 7.0, 5.0], [5.0, 12.0, 6.0], [6.0, 5.0, 11.0]], "dev": [0.16111651376237981]}, "857": {"P": [[11.0, 6.0, 6.0], [5.0, 12.0, 5.0], [7.0, 7.0, 13.0]], "dev": [0.13216118754207573]}, "858": {"P": [[11.0, 5.0, 5.0], [5.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10138557835077461]}, "859": {"P": [[11.0, 5.0, 5.0], [5.0, 12.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.13142432748040025]}, "860": {"P": [[12.0, 6.0, 7.0], [4.0, 12.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.17669527387732112]}, "861": {"P": [[11.0, 6.0, 6.0], [6.0, 13.0, 5.0], [5.0, 4.0, 11.0]], "dev": [0.18157070678207129]}, "862": {"P": [[12.0, 6.0, 7.0], [8.0, 13.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.15623214152334691]}, "863": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 7.0], [6.0, 5.0, 11.0]], "dev": [0.1318132905826965]}, "864": {"P": [[12.0, 6.0, 6.0], [6.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.0]}, "865": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.1317116206734511]}, "866": {"P": [[12.0, 6.0, 5.0], [4.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.15599090165491211]}, "867": {"P": [[13.0, 5.0, 6.0], [6.0, 11.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.18115147782411661]}, "868": {"P": [[12.0, 7.0, 6.0], [7.0, 12.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.16073936104133374]}, "869": {"P": [[12.0, 5.0, 5.0], [6.0, 12.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.13152943288167157]}, "870": {"P": [[11.0, 5.0, 5.0], [8.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.1549518318380389]}, "871": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 5.0], [7.0, 7.0, 12.0]], "dev": [0.13144881562870228]}, "872": {"P": [[11.0, 6.0, 6.0], [7.0, 14.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.17131028291435788]}, "873": {"P": [[13.0, 5.0, 6.0], [7.0, 13.0, 7.0], [6.0, 7.0, 11.0]], "dev": [0.18025115700898345]}, "874": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 5.0], [5.0, 7.0, 12.0]], "dev": [0.15639568883617991]}, "875": {"P": [[13.0, 6.0, 6.0], [6.0, 12.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.12317114245821262]}, "876": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10174911623559228]}, "877": {"P": [[13.0, 6.0, 7.0], [7.0, 12.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.1296701676984717]}, "878": {"P": [[12.0, 7.0, 5.0], [7.0, 13.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.15377386090736384]}, "879": {"P": [[11.0, 6.0, 5.0], [8.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.1794013449781334]}, "880": {"P": [[12.0, 7.0, 7.0], [8.0, 13.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.15738719924857633]}, "881": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.13556409199565428]}, "882": {"P": [[12.0, 5.0, 6.0], [5.0, 12.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.12442692370402673]}, "883": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 7.0], [5.0, 6.0, 11.0]], "dev": [0.1374793507990191]}, "884": {"P": [[11.0, 5.0, 5.0], [5.0, 13.0, 6.0], [7.0, 7.0, 12.0]], "dev": [0.16041821636006973]}, "885": {"P": [[12.0, 7.0, 7.0], [5.0, 13.0, 5.0], [7.0, 7.0, 12.0]], "dev": [0.1786013570752234]}, "886": {"P": [[11.0, 6.0, 6.0], [7.0, 13.0, 7.0], [7.0, 5.0, 13.0]], "dev": [0.16863583428490098]}, "887": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.12143923383988618]}, "888": {"P": [[12.0, 6.0, 6.0], [6.0, 12.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.10632996385327623]}, "889": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 5.0], [6.0, 5.0, 12.0]], "dev": [0.12746031369415156]}, "890": {"P": [[12.0, 5.0, 4.0], [5.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.17289528059608847]}, "891": {"P": [[12.0, 6.0, 5.0], [8.0, 13.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.17546816626659367]}, "892": {"P": [[12.0, 4.0, 5.0], [7.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.17047205543908484]}, "893": {"P": [[13.0, 7.0, 6.0], [6.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.13401165392106365]}, "894": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.105542608603785]}, "895": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.12436547611199703]}, "896": {"P": [[14.0, 7.0, 7.0], [6.0, 11.0, 5.0], [6.0, 7.0, 12.0]], "dev": [0.15698293656480727]}, "897": {"P": [[12.0, 6.0, 5.0], [8.0, 13.0, 7.0], [5.0, 4.0, 11.0]], "dev": [0.18000917459097801]}, "898": {"P": [[12.0, 7.0, 6.0], [6.0, 13.0, 7.0], [4.0, 5.0, 11.0]], "dev": [0.16007886723279607]}, "899": {"P": [[12.0, 6.0, 5.0], [7.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.11997815964669342]}, "900": {"P": [[13.0, 7.0, 7.0], [6.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.06504958775677297]}, "901": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.13311315328359205]}, "902": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 5.0], [7.0, 5.0, 13.0]], "dev": [0.1751297010880839]}, "903": {"P": [[11.0, 6.0, 6.0], [6.0, 13.0, 5.0], [7.0, 8.0, 13.0]], "dev": [0.17649329347036383]}, "904": {"P": [[12.0, 5.0, 5.0], [8.0, 13.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.15612475688276867]}, "905": {"P": [[12.0, 6.0, 7.0], [5.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.15053312655625506]}, "906": {"P": [[12.0, 6.0, 6.0], [6.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.1041933438595348]}, "907": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 8.0], [5.0, 5.0, 11.0]], "dev": [0.15582685632479673]}, "908": {"P": [[11.0, 4.0, 5.0], [7.0, 12.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.15999344502473381]}, "909": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 5.0], [8.0, 7.0, 13.0]], "dev": [0.17975180938391797]}, "910": {"P": [[12.0, 7.0, 7.0], [7.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.13325897454320401]}, "911": {"P": [[11.0, 5.0, 6.0], [6.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.13745569859378756]}, "912": {"P": [[11.0, 5.0, 6.0], [7.0, 13.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.13747598383880436]}, "913": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.11860907740108227]}, "914": {"P": [[13.0, 7.0, 8.0], [7.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15020644166292774]}, "915": {"P": [[12.0, 7.0, 5.0], [5.0, 12.0, 6.0], [7.0, 8.0, 13.0]], "dev": [0.17532390002511142]}, "916": {"P": [[12.0, 6.0, 5.0], [8.0, 14.0, 8.0], [6.0, 7.0, 12.0]], "dev": [0.16571282506116486]}, "917": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.125137615826101]}, "918": {"P": [[12.0, 7.0, 6.0], [5.0, 12.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.12492561135947855]}, "919": {"P": [[12.0, 5.0, 5.0], [5.0, 12.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.13146552465562453]}, "920": {"P": [[13.0, 7.0, 7.0], [7.0, 13.0, 8.0], [7.0, 5.0, 12.0]], "dev": [0.16998872580707711]}, "921": {"P": [[13.0, 7.0, 5.0], [7.0, 12.0, 6.0], [7.0, 8.0, 13.0]], "dev": [0.18392940265596017]}, "922": {"P": [[11.0, 5.0, 6.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.13744668022323903]}, "923": {"P": [[13.0, 6.0, 7.0], [6.0, 12.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.11736244743521589]}, "924": {"P": [[12.0, 5.0, 6.0], [5.0, 12.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10341850378255239]}, "925": {"P": [[12.0, 5.0, 7.0], [7.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15430672161472284]}, "926": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 5.0], [7.0, 6.0, 12.0]], "dev": [0.15488823555005596]}, "927": {"P": [[12.0, 5.0, 7.0], [7.0, 12.0, 5.0], [7.0, 7.0, 13.0]], "dev": [0.17433628550438213]}, "928": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.16369652928349754]}, "929": {"P": [[13.0, 6.0, 6.0], [7.0, 12.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.11623776117679289]}, "930": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.093958256469922646]}, "931": {"P": [[11.0, 5.0, 5.0], [6.0, 12.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.13200272093018023]}, "932": {"P": [[12.0, 7.0, 6.0], [5.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.15383617650997877]}, "933": {"P": [[13.0, 5.0, 7.0], [6.0, 13.0, 7.0], [7.0, 7.0, 12.0]], "dev": [0.16789992447167845]}, "934": {"P": [[11.0, 5.0, 6.0], [5.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.14409919812767985]}, "935": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12399352496403179]}, "936": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.074074954699853063]}, "937": {"P": [[11.0, 5.0, 5.0], [8.0, 13.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.14808740596156278]}, "938": {"P": [[12.0, 5.0, 5.0], [7.0, 12.0, 7.0], [5.0, 5.0, 12.0]], "dev": [0.14428394192020616]}, "939": {"P": [[12.0, 6.0, 7.0], [5.0, 13.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.16701066401543116]}, "940": {"P": [[12.0, 6.0, 7.0], [6.0, 14.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.15672314424305564]}, "941": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.13259451007327616]}, "942": {"P": [[12.0, 6.0, 6.0], [7.0, 13.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.09350824349691142]}, "943": {"P": [[12.0, 7.0, 6.0], [6.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.11385882826334695]}, "944": {"P": [[12.0, 5.0, 6.0], [8.0, 13.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.16130974969859754]}, "945": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 7.0], [8.0, 7.0, 13.0]], "dev": [0.15884441625715751]}, "946": {"P": [[11.0, 5.0, 6.0], [5.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.15309011004577258]}, "947": {"P": [[12.0, 5.0, 6.0], [5.0, 12.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.15304654255487471]}, "948": {"P": [[12.0, 5.0, 5.0], [7.0, 13.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.12349253959750758]}, "949": {"P": [[13.0, 7.0, 7.0], [5.0, 11.0, 4.0], [5.0, 6.0, 12.0]], "dev": [0.15573729231916905]}, "950": {"P": [[11.0, 4.0, 5.0], [7.0, 12.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.15578729387774662]}, "951": {"P": [[13.0, 6.0, 7.0], [5.0, 11.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.165371321118126]}, "952": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.14420689639619186]}, "953": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.12979355465473086]}, "954": {"P": [[12.0, 6.0, 5.0], [6.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12334978189762859]}, "955": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.12333129532545803]}, "956": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 6.0], [8.0, 6.0, 12.0]], "dev": [0.16789672375084044]}, "957": {"P": [[12.0, 7.0, 6.0], [7.0, 13.0, 8.0], [5.0, 6.0, 13.0]], "dev": [0.16462020382278286]}, "958": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 8.0], [5.0, 6.0, 12.0]], "dev": [0.14344910982298698]}, "959": {"P": [[12.0, 5.0, 6.0], [5.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.11651860895017534]}, "960": {"P": [[12.0, 6.0, 5.0], [7.0, 12.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.11651175977435323]}, "961": {"P": [[13.0, 7.0, 8.0], [6.0, 12.0, 5.0], [5.0, 6.0, 12.0]], "dev": [0.14717300154652727]}, "962": {"P": [[12.0, 5.0, 6.0], [7.0, 12.0, 5.0], [7.0, 7.0, 13.0]], "dev": [0.14715098667781001]}, "963": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.16391407376776868]}, "964": {"P": [[12.0, 7.0, 7.0], [7.0, 13.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.14274170521454912]}, "965": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.10327828733196186]}, "966": {"P": [[12.0, 6.0, 6.0], [7.0, 13.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.10173330868614242]}, "967": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.14240673024522316]}, "968": {"P": [[13.0, 6.0, 7.0], [8.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15835699057073413]}, "969": {"P": [[12.0, 5.0, 5.0], [5.0, 11.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.17222034728841421]}, "970": {"P": [[11.0, 6.0, 6.0], [6.0, 13.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.15238736775026279]}, "971": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 6.0], [5.0, 6.0, 11.0]], "dev": [0.12958845103870806]}, "972": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.062877519054391998]}, "973": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.12959318254889723]}, "974": {"P": [[11.0, 4.0, 5.0], [6.0, 12.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.16230280064819161]}, "975": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 8.0], [7.0, 8.0, 13.0]], "dev": [0.16761395133500337]}, "976": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 7.0], [6.0, 6.0, 11.0]], "dev": [0.15753497242868719]}, "977": {"P": [[11.0, 5.0, 5.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12961862659981033]}, "978": {"P": [[12.0, 6.0, 6.0], [7.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.084697731148766178]}, "979": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 8.0], [5.0, 6.0, 12.0]], "dev": [0.14119003798727281]}, "980": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 8.0], [7.0, 6.0, 12.0]], "dev": [0.15168212118720534]}, "981": {"P": [[12.0, 7.0, 6.0], [8.0, 13.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.16654723492643242]}, "982": {"P": [[12.0, 7.0, 7.0], [7.0, 13.0, 6.0], [6.0, 5.0, 13.0]], "dev": [0.14646327574729368]}, "983": {"P": [[12.0, 5.0, 5.0], [6.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12969606634643893]}, "984": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.10226376400499292]}, "985": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.1168278059487628]}, "986": {"P": [[12.0, 7.0, 5.0], [5.0, 12.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.17647543866185164]}, "987": {"P": [[12.0, 7.0, 5.0], [7.0, 14.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.1615280859403091]}, "988": {"P": [[11.0, 6.0, 5.0], [8.0, 14.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.15644932085521498]}, "989": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 5.0], [5.0, 6.0, 12.0]], "dev": [0.13110478929820021]}, "990": {"P": [[12.0, 5.0, 5.0], [7.0, 13.0, 7.0], [8.0, 7.0, 13.0]], "dev": [0.14024486633860087]}, "991": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.11536491244404073]}, "992": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 7.0], [7.0, 5.0, 12.0]], "dev": [0.14009018359094394]}, "993": {"P": [[11.0, 5.0, 5.0], [7.0, 12.0, 5.0], [7.0, 6.0, 14.0]], "dev": [0.18516535671951978]}, "994": {"P": [[12.0, 7.0, 7.0], [7.0, 13.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.1324174140803831]}, "995": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.10799155517849308]}, "996": {"P": [[12.0, 6.0, 6.0], [6.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.13402960023261468]}, "997": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 6.0], [7.0, 8.0, 13.0]], "dev": [0.13972626209850436]}, "998": {"P": [[13.0, 7.0, 8.0], [7.0, 13.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.13965735844918417]}, "999": {"P": [[13.0, 7.0, 8.0], [8.0, 14.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.1636035926819773]}, "1000": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.14288700134087037]}, "1001": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.10760748256282729]}, "1002": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.1336339837981598]}, "1003": {"P": [[12.0, 4.0, 5.0], [6.0, 13.0, 6.0], [7.0, 7.0, 12.0]], "dev": [0.16725756774847172]}, "1004": {"P": [[12.0, 5.0, 6.0], [8.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.15012592955191026]}, "1005": {"P": [[13.0, 5.0, 7.0], [6.0, 12.0, 5.0], [8.0, 7.0, 13.0]], "dev": [0.1742623794930685]}, "1006": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.14195654743927047]}, "1007": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.11763739458924449]}, "1008": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.091464775225994388]}, "1009": {"P": [[12.0, 5.0, 6.0], [6.0, 12.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.12440706027565031]}, "1010": {"P": [[14.0, 7.0, 6.0], [7.0, 12.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.15490312298591916]}, "1011": {"P": [[13.0, 5.0, 5.0], [8.0, 13.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.17387104424840122]}, "1012": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.1547901902854617]}, "1013": {"P": [[12.0, 7.0, 6.0], [6.0, 13.0, 5.0], [7.0, 7.0, 13.0]], "dev": [0.13303177914709988]}, "1014": {"P": [[12.0, 6.0, 6.0], [7.0, 13.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.072124792294479947]}, "1015": {"P": [[12.0, 5.0, 5.0], [6.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.12475540438216887]}, "1016": {"P": [[13.0, 6.0, 7.0], [5.0, 13.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.16593437714565851]}, "1017": {"P": [[13.0, 7.0, 6.0], [7.0, 12.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.14581219236778678]}, "1018": {"P": [[12.0, 5.0, 5.0], [8.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.15447826854308627]}, "1019": {"P": [[11.0, 5.0, 5.0], [7.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.15443016722091177]}, "1020": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.091058758061801151]}, "1021": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.10674333616322984]}, "1022": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.13265477957492275]}, "1023": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 6.0], [6.0, 7.0, 14.0]], "dev": [0.15919761799919444]}, "1024": {"P": [[13.0, 5.0, 7.0], [5.0, 12.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.14909503847103386]}, "1025": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.13827202518438261]}, "1026": {"P": [[12.0, 5.0, 6.0], [8.0, 14.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.13251988130689457]}, "1027": {"P": [[13.0, 7.0, 7.0], [6.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.10660533758139368]}, "1028": {"P": [[12.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.13893805026329248]}, "1029": {"P": [[11.0, 6.0, 6.0], [7.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.14427361172036759]}, "1030": {"P": [[12.0, 6.0, 7.0], [6.0, 14.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13301065166355533]}, "1031": {"P": [[12.0, 5.0, 7.0], [6.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.13808465268927103]}, "1032": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.12595908809929662]}, "1033": {"P": [[12.0, 5.0, 5.0], [5.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15359631918006661]}, "1034": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 6.0], [7.0, 8.0, 13.0]], "dev": [0.12658818606322561]}, "1035": {"P": [[13.0, 8.0, 7.0], [7.0, 13.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.14894708075132526]}, "1036": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12011254685808556]}, "1037": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.11999536723859139]}, "1038": {"P": [[12.0, 5.0, 5.0], [6.0, 13.0, 7.0], [5.0, 6.0, 12.0]], "dev": [0.132391048673099]}, "1039": {"P": [[12.0, 7.0, 6.0], [6.0, 13.0, 7.0], [7.0, 5.0, 13.0]], "dev": [0.1536950654796817]}, "1040": {"P": [[13.0, 7.0, 7.0], [7.0, 13.0, 5.0], [7.0, 8.0, 13.0]], "dev": [0.15829223585465582]}, "1041": {"P": [[12.0, 5.0, 7.0], [7.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.1629605044724543]}, "1042": {"P": [[13.0, 5.0, 6.0], [7.0, 13.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.14280323695630071]}, "1043": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.090068622010678279]}, "1044": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.11346170037874569]}, "1045": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.15355646655504446]}, "1046": {"P": [[12.0, 7.0, 5.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.14323695236443462]}, "1047": {"P": [[12.0, 5.0, 5.0], [7.0, 12.0, 7.0], [5.0, 5.0, 13.0]], "dev": [0.17304284333539571]}, "1048": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 5.0], [8.0, 8.0, 14.0]], "dev": [0.16224804612373064]}, "1049": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.11348649731702773]}, "1050": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.082360241555327091]}, "1051": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 5.0], [8.0, 7.0, 13.0]], "dev": [0.16195845055553523]}, "1052": {"P": [[12.0, 7.0, 6.0], [5.0, 12.0, 6.0], [6.0, 7.0, 14.0]], "dev": [0.14839652632592276]}, "1053": {"P": [[12.0, 6.0, 5.0], [8.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.17091790045570643]}, "1054": {"P": [[13.0, 5.0, 6.0], [7.0, 13.0, 6.0], [5.0, 5.0, 11.0]], "dev": [0.1548381391068287]}, "1055": {"P": [[13.0, 6.0, 6.0], [8.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.13035431889776039]}, "1056": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.069419574371991491]}, "1057": {"P": [[12.0, 6.0, 5.0], [7.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.11359384764547668]}, "1058": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 7.0], [8.0, 8.0, 13.0]], "dev": [0.15965121153249842]}, "1059": {"P": [[12.0, 7.0, 5.0], [7.0, 13.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.15646037204165769]}, "1060": {"P": [[12.0, 7.0, 6.0], [8.0, 14.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.15637458688984704]}, "1061": {"P": [[13.0, 5.0, 5.0], [6.0, 12.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.15336329635167234]}, "1062": {"P": [[13.0, 7.0, 6.0], [6.0, 12.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.11751344788264385]}, "1063": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.08798899231575924]}, "1064": {"P": [[12.0, 5.0, 5.0], [8.0, 13.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.13778392476059195]}, "1065": {"P": [[12.0, 6.0, 7.0], [5.0, 13.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.15596132833653897]}, "1066": {"P": [[12.0, 7.0, 6.0], [7.0, 13.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.13513811267187076]}, "1067": {"P": [[12.0, 5.0, 6.0], [5.0, 13.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.15335486665220346]}, "1068": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 7.0], [7.0, 5.0, 13.0]], "dev": [0.13782718299654226]}, "1069": {"P": [[12.0, 5.0, 5.0], [7.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.113905644101083]}, "1070": {"P": [[12.0, 6.0, 5.0], [8.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.1403101338409771]}, "1071": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.13718770836812696]}, "1072": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 7.0], [5.0, 7.0, 13.0]], "dev": [0.13469607184435281]}, "1073": {"P": [[12.0, 6.0, 5.0], [7.0, 13.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.13234400307640573]}, "1074": {"P": [[12.0, 5.0, 6.0], [6.0, 14.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.13236672428519766]}, "1075": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.11412679800056603]}, "1076": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 8.0], [6.0, 5.0, 12.0]], "dev": [0.14843625776697966]}, "1077": {"P": [[12.0, 7.0, 6.0], [7.0, 13.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.15671631924593959]}, "1078": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.1246072681582676]}, "1079": {"P": [[12.0, 6.0, 5.0], [7.0, 14.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.13423300886280276]}, "1080": {"P": [[13.0, 6.0, 7.0], [5.0, 12.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.12070827567636588]}, "1081": {"P": [[11.0, 5.0, 5.0], [7.0, 13.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.15346504428425578]}, "1082": {"P": [[14.0, 8.0, 6.0], [6.0, 13.0, 7.0], [7.0, 6.0, 12.0]], "dev": [0.1595033377766697]}, "1083": {"P": [[14.0, 7.0, 8.0], [7.0, 12.0, 6.0], [6.0, 5.0, 13.0]], "dev": [0.15468598060450628]}, "1084": {"P": [[12.0, 6.0, 5.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.13393650264120924]}, "1085": {"P": [[13.0, 6.0, 6.0], [6.0, 12.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.10935205540312212]}, "1086": {"P": [[12.0, 6.0, 5.0], [7.0, 13.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.10794321793247652]}, "1087": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.13377214078327385]}, "1088": {"P": [[13.0, 8.0, 7.0], [7.0, 14.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.15438943814741943]}, "1089": {"P": [[13.0, 7.0, 6.0], [6.0, 13.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.13912245864330947]}, "1090": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [5.0, 5.0, 11.0]], "dev": [0.15362831112664041]}, "1091": {"P": [[11.0, 5.0, 4.0], [7.0, 14.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.17190930031329049]}, "1092": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.076117502432027459]}, "1093": {"P": [[13.0, 7.0, 8.0], [5.0, 12.0, 4.0], [6.0, 6.0, 13.0]], "dev": [0.17193064504972994]}, "1094": {"P": [[12.0, 7.0, 6.0], [5.0, 12.0, 5.0], [6.0, 7.0, 14.0]], "dev": [0.15372326236371325]}, "1095": {"P": [[11.0, 6.0, 5.0], [7.0, 13.0, 6.0], [7.0, 7.0, 15.0]], "dev": [0.176445315130101]}, "1096": {"P": [[12.0, 7.0, 7.0], [6.0, 13.0, 5.0], [7.0, 6.0, 14.0]], "dev": [0.15870419753459702]}, "1097": {"P": [[12.0, 6.0, 5.0], [7.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.13329654450188763]}, "1098": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.10874865632663304]}, "1099": {"P": [[13.0, 7.0, 6.0], [7.0, 14.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.1087156783799329]}, "1100": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 8.0], [5.0, 6.0, 12.0]], "dev": [0.13317525337308739]}, "1101": {"P": [[12.0, 7.0, 7.0], [7.0, 15.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.15827976737760929]}, "1102": {"P": [[12.0, 7.0, 6.0], [7.0, 13.0, 6.0], [6.0, 6.0, 14.0]], "dev": [0.13853416154825812]}, "1103": {"P": [[12.0, 7.0, 6.0], [6.0, 13.0, 5.0], [7.0, 8.0, 14.0]], "dev": [0.15364570155888457]}, "1104": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.12091375990515459]}, "1105": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.076809648683772602]}, "1106": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.12066387354649735]}, "1107": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 7.0], [8.0, 7.0, 13.0]], "dev": [0.1376415514981795]}, "1108": {"P": [[13.0, 6.0, 8.0], [6.0, 13.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.14783372330891412]}, "1109": {"P": [[12.0, 6.0, 7.0], [6.0, 13.0, 5.0], [7.0, 8.0, 14.0]], "dev": [0.15340808796561414]}, "1110": {"P": [[12.0, 6.0, 6.0], [6.0, 13.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.15337174571296416]}, "1111": {"P": [[12.0, 5.0, 5.0], [8.0, 14.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13281316373220101]}, "1112": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.13278659558071823]}, "1113": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 8.0], [7.0, 8.0, 13.0]], "dev": [0.13573439306025561]}, "1114": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.13684946688484648]}, "1115": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.12707525234535771]}, "1116": {"P": [[12.0, 6.0, 6.0], [7.0, 15.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.1380964056958551]}, "1117": {"P": [[13.0, 8.0, 7.0], [7.0, 14.0, 6.0], [5.0, 5.0, 12.0]], "dev": [0.15784712613951624]}, "1118": {"P": [[13.0, 7.0, 6.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.093933653093150812]}, "1119": {"P": [[13.0, 7.0, 6.0], [8.0, 13.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.15478049616212267]}, "1120": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.1343936852729255]}, "1121": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.11490393762020081]}, "1122": {"P": [[12.0, 6.0, 6.0], [7.0, 13.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.11489649531122832]}, "1123": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.13996403463602358]}, "1124": {"P": [[12.0, 5.0, 5.0], [6.0, 14.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.15948331676749997]}, "1125": {"P": [[13.0, 7.0, 8.0], [8.0, 14.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.15569658112324697]}, "1126": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 8.0, 13.0]], "dev": [0.15085269010711044]}, "1127": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.1120187907998435]}, "1128": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.085924046577651736]}, "1129": {"P": [[13.0, 5.0, 6.0], [6.0, 13.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.13786483870497246]}, "1130": {"P": [[12.0, 6.0, 5.0], [8.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.15751301124977679]}, "1131": {"P": [[13.0, 7.0, 5.0], [6.0, 13.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.15281797094438129]}, "1132": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.1453943120515753]}, "1133": {"P": [[13.0, 6.0, 8.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.15020881935467126]}, "1134": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.081273772327440597]}, "1135": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.11125747272382432]}, "1136": {"P": [[12.0, 7.0, 7.0], [7.0, 14.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.14994724121671091]}, "1137": {"P": [[12.0, 7.0, 6.0], [7.0, 14.0, 8.0], [5.0, 5.0, 13.0]], "dev": [0.16632472235698559]}, "1138": {"P": [[13.0, 6.0, 5.0], [8.0, 14.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.15452569546598008]}, "1139": {"P": [[13.0, 5.0, 7.0], [5.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.16023652469367672]}, "1140": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.1108219624675135]}, "1141": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.06755819615017937]}, "1142": {"P": [[12.0, 6.0, 5.0], [6.0, 14.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.12690327162113835]}, "1143": {"P": [[15.0, 7.0, 7.0], [6.0, 13.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.14937007149175127]}, "1144": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 7.0], [5.0, 7.0, 13.0]], "dev": [0.15266849328827126]}, "1145": {"P": [[14.0, 6.0, 7.0], [5.0, 13.0, 6.0], [7.0, 6.0, 12.0]], "dev": [0.15266289343110365]}, "1146": {"P": [[13.0, 7.0, 7.0], [6.0, 13.0, 5.0], [8.0, 8.0, 14.0]], "dev": [0.13389328733476188]}, "1147": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.086562739629442942]}, "1148": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.11509629918066644]}, "1149": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [8.0, 6.0, 13.0]], "dev": [0.16367768927508225]}, "1150": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.13886478023167936]}, "1151": {"P": [[14.0, 6.0, 7.0], [5.0, 13.0, 6.0], [6.0, 7.0, 12.0]], "dev": [0.15264659819093399]}, "1152": {"P": [[13.0, 5.0, 6.0], [8.0, 14.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.13784644651706884]}, "1153": {"P": [[12.0, 5.0, 5.0], [7.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.13785651739258958]}, "1154": {"P": [[13.0, 6.0, 6.0], [8.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.10976562856215412]}, "1155": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [8.0, 7.0, 13.0]], "dev": [0.13325357362519219]}, "1156": {"P": [[13.0, 7.0, 7.0], [7.0, 15.0, 7.0], [8.0, 7.0, 13.0]], "dev": [0.14405941006788375]}, "1157": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.14835297232897682]}, "1158": {"P": [[12.0, 6.0, 6.0], [7.0, 15.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.1526644815612975]}, "1159": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.15296152018087522]}, "1160": {"P": [[14.0, 8.0, 7.0], [5.0, 13.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.14326337681537693]}, "1161": {"P": [[13.0, 7.0, 6.0], [7.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.1093264357857659]}, "1162": {"P": [[12.0, 7.0, 6.0], [7.0, 14.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.12733531496694395]}, "1163": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.1024847300690873]}, "1164": {"P": [[14.0, 6.0, 6.0], [6.0, 13.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.12157713737171509]}, "1165": {"P": [[14.0, 6.0, 7.0], [8.0, 13.0, 6.0], [5.0, 6.0, 12.0]], "dev": [0.16610568336115178]}, "1166": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 8.0], [8.0, 6.0, 14.0]], "dev": [0.15252752531798339]}, "1167": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 6.0], [5.0, 7.0, 12.0]], "dev": [0.15732661112239885]}, "1168": {"P": [[14.0, 8.0, 9.0], [6.0, 14.0, 6.0], [7.0, 7.0, 13.0]], "dev": [0.16113268962228003]}, "1169": {"P": [[13.0, 7.0, 7.0], [6.0, 13.0, 5.0], [8.0, 7.0, 14.0]], "dev": [0.1269485173510429]}, "1170": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.10212429411329227]}, "1171": {"P": [[12.0, 5.0, 6.0], [7.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.13295668942935321]}, "1172": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 5.0], [8.0, 7.0, 14.0]], "dev": [0.15281570769321468]}, "1173": {"P": [[13.0, 5.0, 7.0], [7.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13823812392568341]}, "1174": {"P": [[14.0, 6.0, 6.0], [8.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.14735763707322902]}, "1175": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.1198866316352683]}, "1176": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.086885653317776423]}, "1177": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.10990043097095126]}, "1178": {"P": [[12.0, 6.0, 5.0], [7.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.1331861352696766]}, "1179": {"P": [[13.0, 6.0, 5.0], [6.0, 13.0, 7.0], [8.0, 6.0, 13.0]], "dev": [0.15749279705970756]}, "1180": {"P": [[13.0, 6.0, 5.0], [5.0, 13.0, 6.0], [7.0, 8.0, 13.0]], "dev": [0.16192651415961007]}, "1181": {"P": [[14.0, 7.0, 8.0], [7.0, 13.0, 5.0], [5.0, 5.0, 12.0]], "dev": [0.17042480450807695]}, "1182": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.11898037028030484]}, "1183": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.068511594278695798]}, "1184": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.1262865818334645]}, "1185": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 8.0], [5.0, 7.0, 13.0]], "dev": [0.14684941421779327]}, "1186": {"P": [[14.0, 6.0, 6.0], [6.0, 13.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.15151999005986852]}, "1187": {"P": [[13.0, 5.0, 6.0], [5.0, 13.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.15766113566570739]}, "1188": {"P": [[14.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.12614774115232558]}, "1189": {"P": [[13.0, 6.0, 7.0], [6.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.10145023224098899]}, "1190": {"P": [[13.0, 6.0, 7.0], [7.0, 13.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.086501397893472567]}, "1191": {"P": [[13.0, 7.0, 8.0], [7.0, 15.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.14459241059607139]}, "1192": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.14172092704387501]}, "1193": {"P": [[13.0, 5.0, 6.0], [6.0, 14.0, 7.0], [7.0, 8.0, 13.0]], "dev": [0.1512465463270054]}, "1194": {"P": [[12.0, 6.0, 6.0], [6.0, 14.0, 5.0], [7.0, 6.0, 13.0]], "dev": [0.15784491763618369]}, "1195": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [6.0, 5.0, 12.0]], "dev": [0.13390843505609037]}, "1196": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.10131115084734989]}, "1197": {"P": [[14.0, 8.0, 7.0], [5.0, 12.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.12589201375386189]}, "1198": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.14385702558538843]}, "1199": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.14375555598890868]}, "1200": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.13926412861113285]}, "1201": {"P": [[14.0, 8.0, 7.0], [5.0, 13.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.15358922385369242]}, "1202": {"P": [[13.0, 5.0, 6.0], [7.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.12346022624683242]}, "1203": {"P": [[13.0, 6.0, 5.0], [7.0, 14.0, 8.0], [6.0, 5.0, 12.0]], "dev": [0.15366413816889735]}, "1204": {"P": [[14.0, 7.0, 8.0], [7.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.1164734856549158]}, "1205": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.12220139052697727]}, "1206": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.13112526866369492]}, "1207": {"P": [[12.0, 6.0, 5.0], [6.0, 13.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.15081864906372533]}, "1208": {"P": [[12.0, 6.0, 7.0], [7.0, 14.0, 6.0], [6.0, 8.0, 14.0]], "dev": [0.16402531860138272]}, "1209": {"P": [[12.0, 7.0, 6.0], [7.0, 14.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.15219843132589139]}, "1210": {"P": [[13.0, 6.0, 5.0], [8.0, 14.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.14269805576037076]}, "1211": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.10963419763252145]}, "1212": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 6.0], [6.0, 7.0, 14.0]], "dev": [0.10783350025047148]}, "1213": {"P": [[13.0, 6.0, 5.0], [6.0, 13.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.13102132983514084]}, "1214": {"P": [[13.0, 5.0, 6.0], [7.0, 13.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.15066271891865582]}, "1215": {"P": [[12.0, 5.0, 6.0], [7.0, 13.0, 5.0], [7.0, 6.0, 14.0]], "dev": [0.16708510809059371]}, "1216": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13616443527877736]}, "1217": {"P": [[13.0, 6.0, 5.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.13098119945691777]}, "1218": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.095476765628793439]}, "1219": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.094188341223165828]}, "1220": {"P": [[13.0, 6.0, 6.0], [6.0, 14.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.13096016629207854]}, "1221": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 8.0], [5.0, 6.0, 12.0]], "dev": [0.15054446558260745]}, "1222": {"P": [[12.0, 6.0, 5.0], [7.0, 14.0, 8.0], [8.0, 6.0, 14.0]], "dev": [0.16368582722157166]}, "1223": {"P": [[13.0, 5.0, 7.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.1458711906706672]}, "1224": {"P": [[14.0, 6.0, 6.0], [8.0, 14.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.12049251358900223]}, "1225": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.059112523808638059]}, "1226": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.12033361196036557]}, "1227": {"P": [[14.0, 7.0, 6.0], [5.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.14081761626284386]}, "1228": {"P": [[12.0, 6.0, 5.0], [7.0, 15.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.15946748119538343]}, "1229": {"P": [[12.0, 5.0, 6.0], [6.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.16356780126117296]}, "1230": {"P": [[12.0, 5.0, 5.0], [7.0, 14.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.14101999833484966]}, "1231": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.13094827914498386]}, "1232": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.078646726717647691]}, "1233": {"P": [[13.0, 6.0, 7.0], [8.0, 15.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.11980855048034006]}, "1234": {"P": [[12.0, 7.0, 6.0], [7.0, 14.0, 6.0], [6.0, 6.0, 14.0]], "dev": [0.14580097245179494]}, "1235": {"P": [[13.0, 6.0, 6.0], [6.0, 12.0, 7.0], [6.0, 7.0, 15.0]], "dev": [0.16349336970098466]}, "1236": {"P": [[14.0, 8.0, 6.0], [6.0, 14.0, 7.0], [6.0, 6.0, 12.0]], "dev": [0.15041437703950106]}, "1237": {"P": [[15.0, 7.0, 7.0], [7.0, 12.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.16264000807856055]}, "1238": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.10742187749307522]}, "1239": {"P": [[13.0, 7.0, 6.0], [7.0, 14.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.093779831302287467]}, "1240": {"P": [[14.0, 6.0, 7.0], [7.0, 13.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.11933148662839532]}, "1241": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 6.0], [7.0, 5.0, 13.0]], "dev": [0.14580333607886281]}, "1242": {"P": [[12.0, 6.0, 7.0], [6.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.16343710510381007]}, "1243": {"P": [[14.0, 6.0, 7.0], [5.0, 13.0, 5.0], [8.0, 7.0, 13.0]], "dev": [0.16343171690174213]}, "1244": {"P": [[13.0, 6.0, 6.0], [8.0, 14.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.131062558170641]}, "1245": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.10834115142196971]}, "1246": {"P": [[13.0, 6.0, 5.0], [6.0, 13.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.13109211838515772]}, "1247": {"P": [[14.0, 8.0, 7.0], [7.0, 14.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.11749368820410898]}, "1248": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 6.0], [6.0, 6.0, 14.0]], "dev": [0.11453270425039233]}, "1249": {"P": [[12.0, 6.0, 5.0], [7.0, 14.0, 6.0], [6.0, 5.0, 13.0]], "dev": [0.15607649903566692]}, "1250": {"P": [[13.0, 6.0, 5.0], [8.0, 13.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.15488430934775177]}, "1251": {"P": [[14.0, 8.0, 7.0], [5.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.13117966666681521]}, "1252": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.1224630638666568]}, "1253": {"P": [[14.0, 7.0, 8.0], [7.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.11271225884143442]}, "1254": {"P": [[13.0, 7.0, 6.0], [7.0, 13.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.11266094633716357]}, "1255": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [5.0, 5.0, 12.0]], "dev": [0.14591410490353687]}, "1256": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 7.0], [5.0, 5.0, 13.0]], "dev": [0.15655022923933545]}, "1257": {"P": [[13.0, 5.0, 7.0], [6.0, 13.0, 5.0], [8.0, 7.0, 14.0]], "dev": [0.16342425965724594]}, "1258": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 5.0], [7.0, 8.0, 14.0]], "dev": [0.1412502425668393]}, "1259": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [9.0, 8.0, 15.0]], "dev": [0.14204724966194843]}, "1260": {"P": [[14.0, 8.0, 7.0], [8.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.096662480961937039]}, "1261": {"P": [[13.0, 6.0, 6.0], [6.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.10257974650761421]}, "1262": {"P": [[13.0, 7.0, 6.0], [8.0, 15.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.1237146748671492]}, "1263": {"P": [[13.0, 6.0, 5.0], [6.0, 13.0, 7.0], [7.0, 5.0, 13.0]], "dev": [0.16128372860664603]}, "1264": {"P": [[12.0, 6.0, 5.0], [7.0, 14.0, 6.0], [6.0, 8.0, 14.0]], "dev": [0.1634670118082972]}, "1265": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 8.0], [5.0, 6.0, 12.0]], "dev": [0.15281318745647199]}, "1266": {"P": [[13.0, 7.0, 6.0], [8.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.12068299512445584]}, "1267": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.084749735727805864]}, "1268": {"P": [[13.0, 6.0, 6.0], [7.0, 13.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.10296538421312595]}, "1269": {"P": [[15.0, 7.0, 7.0], [6.0, 12.0, 5.0], [6.0, 7.0, 13.0]], "dev": [0.14616076044222195]}, "1270": {"P": [[12.0, 5.0, 6.0], [8.0, 14.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.16352760106257266]}, "1271": {"P": [[13.0, 5.0, 6.0], [5.0, 14.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.16759322405979823]}, "1272": {"P": [[14.0, 6.0, 6.0], [8.0, 14.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.13067961529211358]}, "1273": {"P": [[13.0, 6.0, 5.0], [7.0, 13.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.13371093994608252]}, "1274": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.066839975532403353]}, "1275": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.1118093378919791]}, "1276": {"P": [[13.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.13024212126045803]}, "1277": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 6.0], [6.0, 5.0, 12.0]], "dev": [0.16766439184658097]}, "1278": {"P": [[12.0, 5.0, 6.0], [6.0, 13.0, 5.0], [6.0, 7.0, 14.0]], "dev": [0.15820168087002517]}, "1279": {"P": [[13.0, 5.0, 5.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.1464164633955253]}, "1280": {"P": [[13.0, 6.0, 6.0], [6.0, 13.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.10372538043097257]}, "1281": {"P": [[13.0, 6.0, 6.0], [8.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.08440039241341199]}, "1282": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.11887010243372664]}, "1283": {"P": [[13.0, 6.0, 7.0], [6.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13828538704910276]}, "1284": {"P": [[13.0, 5.0, 7.0], [6.0, 14.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.15104769331113035]}, "1285": {"P": [[12.0, 6.0, 7.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.16139289878945895]}, "1286": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [8.0, 9.0, 15.0]], "dev": [0.13913409137216612]}, "1287": {"P": [[13.0, 6.0, 6.0], [8.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.13903747379655615]}, "1288": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.1114930165656783]}, "1289": {"P": [[13.0, 5.0, 7.0], [8.0, 15.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.15186922273222517]}, "1290": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.13808683470275021]}, "1291": {"P": [[15.0, 6.0, 8.0], [6.0, 13.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.15612255626193292]}, "1292": {"P": [[13.0, 5.0, 7.0], [6.0, 13.0, 6.0], [6.0, 8.0, 14.0]], "dev": [0.16393152422819798]}, "1293": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 8.0], [8.0, 7.0, 13.0]], "dev": [0.1481778019132402]}, "1294": {"P": [[14.0, 6.0, 7.0], [8.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.11139971520465512]}, "1295": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.11138734485324343]}, "1296": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.10526008320859495]}, "1297": {"P": [[13.0, 6.0, 5.0], [6.0, 13.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.13284083519172224]}, "1298": {"P": [[15.0, 7.0, 6.0], [7.0, 13.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.15592284131176204]}, "1299": {"P": [[13.0, 5.0, 6.0], [7.0, 14.0, 6.0], [6.0, 8.0, 13.0]], "dev": [0.16411753815787825]}, "1300": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 8.0], [8.0, 6.0, 14.0]], "dev": [0.13298531215786846]}, "1301": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.12253792847748249]}, "1302": {"P": [[14.0, 8.0, 7.0], [8.0, 14.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.11114213141544338]}, "1303": {"P": [[13.0, 7.0, 6.0], [8.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.11710011424629907]}, "1304": {"P": [[13.0, 7.0, 7.0], [6.0, 14.0, 6.0], [6.0, 5.0, 13.0]], "dev": [0.13321868531601189]}, "1305": {"P": [[13.0, 6.0, 6.0], [7.0, 15.0, 6.0], [8.0, 7.0, 13.0]], "dev": [0.15575547224605427]}, "1306": {"P": [[14.0, 6.0, 6.0], [8.0, 15.0, 7.0], [6.0, 7.0, 12.0]], "dev": [0.15573416914895852]}, "1307": {"P": [[13.0, 5.0, 7.0], [7.0, 13.0, 6.0], [6.0, 7.0, 14.0]], "dev": [0.14746268868397278]}, "1308": {"P": [[14.0, 8.0, 7.0], [8.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.11576875227258671]}, "1309": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.091875268606773614]}, "1310": {"P": [[13.0, 7.0, 7.0], [7.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.10523384348777425]}, "1311": {"P": [[14.0, 7.0, 8.0], [6.0, 14.0, 7.0], [7.0, 5.0, 13.0]], "dev": [0.14694701181826772]}, "1312": {"P": [[14.0, 8.0, 6.0], [6.0, 13.0, 6.0], [6.0, 8.0, 14.0]], "dev": [0.1556198696473437]}, "1313": {"P": [[13.0, 6.0, 5.0], [9.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.15900352824836142]}, "1314": {"P": [[12.0, 6.0, 6.0], [7.0, 15.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.13768145592334602]}, "1315": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.1100606247825094]}, "1316": {"P": [[13.0, 7.0, 7.0], [6.0, 14.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.091980888350950363]}, "1317": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.11707742508373874]}, "1318": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 6.0], [9.0, 8.0, 14.0]], "dev": [0.15014766601385585]}, "1319": {"P": [[13.0, 5.0, 6.0], [7.0, 14.0, 8.0], [5.0, 6.0, 13.0]], "dev": [0.15240864951694857]}, "1320": {"P": [[14.0, 5.0, 6.0], [8.0, 14.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.15849004763723926]}, "1321": {"P": [[15.0, 8.0, 7.0], [7.0, 12.0, 6.0], [7.0, 7.0, 15.0]], "dev": [0.15423543034355627]}, "1322": {"P": [[13.0, 6.0, 7.0], [6.0, 14.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.11710800440170453]}, "1323": {"P": [[14.0, 7.0, 7.0], [6.0, 13.0, 6.0], [7.0, 7.0, 14.0]], "dev": [0.057111938167523857]}, "1324": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.10538570166730669]}, "1325": {"P": [[13.0, 6.0, 7.0], [8.0, 15.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.14066746651721365]}, "1326": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 8.0], [6.0, 8.0, 15.0]], "dev": [0.15807603420248109]}, "1327": {"P": [[14.0, 7.0, 8.0], [9.0, 15.0, 8.0], [6.0, 5.0, 13.0]], "dev": [0.158009356801634]}, "1328": {"P": [[13.0, 7.0, 7.0], [6.0, 14.0, 6.0], [8.0, 9.0, 15.0]], "dev": [0.14047055085005802]}, "1329": {"P": [[15.0, 8.0, 8.0], [5.0, 13.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13763581934430047]}, "1330": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.092339031491463011]}, "1331": {"P": [[13.0, 7.0, 8.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.14028021833662649]}, "1332": {"P": [[13.0, 6.0, 5.0], [6.0, 14.0, 7.0], [8.0, 8.0, 14.0]], "dev": [0.13764510487922313]}, "1333": {"P": [[13.0, 5.0, 6.0], [8.0, 13.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.15539778549432437]}, "1334": {"P": [[14.0, 6.0, 8.0], [8.0, 14.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.1553939375530759]}, "1335": {"P": [[13.0, 5.0, 6.0], [7.0, 14.0, 6.0], [6.0, 7.0, 13.0]], "dev": [0.13524242734424397]}, "1336": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.10565142028339214]}, "1337": {"P": [[13.0, 7.0, 6.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.11994447410332675]}, "1338": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.1198880114392052]}, "1339": {"P": [[13.0, 5.0, 5.0], [6.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.14920091688862655]}, "1340": {"P": [[14.0, 8.0, 8.0], [8.0, 15.0, 7.0], [5.0, 7.0, 13.0]], "dev": [0.15720228971143649]}, "1341": {"P": [[13.0, 6.0, 6.0], [8.0, 13.0, 6.0], [7.0, 6.0, 15.0]], "dev": [0.16741970602906409]}, "1342": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 8.0, 13.0]], "dev": [0.13688170267262761]}, "1343": {"P": [[14.0, 8.0, 7.0], [9.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.13676265426620501]}, "1344": {"P": [[14.0, 6.0, 7.0], [8.0, 14.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.10821196892034114]}, "1345": {"P": [[13.0, 6.0, 5.0], [7.0, 14.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.13297990161533516]}, "1346": {"P": [[13.0, 6.0, 6.0], [6.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13299569461653676]}, "1347": {"P": [[13.0, 5.0, 5.0], [5.0, 13.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.16607314163426953]}, "1348": {"P": [[14.0, 6.0, 8.0], [8.0, 14.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.15540208427426577]}, "1349": {"P": [[14.0, 5.0, 7.0], [7.0, 14.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.15253627924881377]}, "1350": {"P": [[15.0, 8.0, 8.0], [7.0, 13.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.11374132311724534]}, "1351": {"P": [[12.0, 5.0, 6.0], [7.0, 15.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.1330844797661741]}, "1352": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 7.0], [6.0, 7.0, 13.0]], "dev": [0.1120914384628284]}, "1353": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.14917478314652827]}, "1354": {"P": [[14.0, 8.0, 6.0], [8.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.15746339439666915]}, "1355": {"P": [[13.0, 5.0, 6.0], [7.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.16828980840787391]}, "1356": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 8.0], [9.0, 8.0, 15.0]], "dev": [0.13528228811991252]}, "1357": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.11459635471107921]}, "1358": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.087881524300224764]}, "1359": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.11235529285317199]}, "1360": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.13328483598481905]}, "1361": {"P": [[15.0, 7.0, 6.0], [6.0, 12.0, 5.0], [7.0, 8.0, 14.0]], "dev": [0.16742345934967073]}, "1362": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 6.0], [6.0, 6.0, 12.0]], "dev": [0.16742920341021342]}, "1363": {"P": [[12.0, 5.0, 5.0], [6.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.15084078806538864]}, "1364": {"P": [[13.0, 7.0, 7.0], [6.0, 14.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.11318408745288705]}, "1365": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.086956721260869743]}, "1366": {"P": [[13.0, 6.0, 6.0], [6.0, 14.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.11265456290558797]}, "1367": {"P": [[14.0, 5.0, 7.0], [7.0, 14.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.15142744641841507]}, "1368": {"P": [[13.0, 6.0, 7.0], [6.0, 15.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.15560756955710517]}, "1369": {"P": [[15.0, 6.0, 8.0], [5.0, 13.0, 6.0], [7.0, 6.0, 13.0]], "dev": [0.17125478434648944]}, "1370": {"P": [[15.0, 8.0, 9.0], [6.0, 14.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.13382686995630808]}, "1371": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.11296633236696907]}, "1372": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [5.4389598220420729e-16]}, "1373": {"P": [[13.0, 6.0, 6.0], [8.0, 15.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.11291145399237106]}, "1374": {"P": [[13.0, 6.0, 5.0], [8.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.13369674917995561]}, "1375": {"P": [[13.0, 7.0, 7.0], [6.0, 13.0, 5.0], [7.0, 6.0, 15.0]], "dev": [0.15573109249592013]}, "1376": {"P": [[15.0, 8.0, 7.0], [9.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.1550828435568419]}, "1377": {"P": [[13.0, 8.0, 7.0], [8.0, 15.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.13784795488260984]}, "1378": {"P": [[13.0, 6.0, 6.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.11278838194612685]}, "1379": {"P": [[15.0, 8.0, 8.0], [8.0, 15.0, 9.0], [6.0, 6.0, 13.0]], "dev": [0.13296657499019809]}, "1380": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.11274476489443613]}, "1381": {"P": [[13.0, 7.0, 7.0], [7.0, 14.0, 6.0], [6.0, 5.0, 14.0]], "dev": [0.14748436721506716]}, "1382": {"P": [[14.0, 8.0, 8.0], [9.0, 15.0, 8.0], [8.0, 6.0, 15.0]], "dev": [0.16988009997133174]}, "1383": {"P": [[13.0, 8.0, 7.0], [8.0, 15.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.15468433924070318]}, "1384": {"P": [[13.0, 6.0, 6.0], [6.0, 14.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.13406272991334198]}, "1385": {"P": [[13.0, 7.0, 6.0], [6.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.11363722858060947]}, "1386": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.087284355574133929]}, "1387": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.11146800613595356]}, "1388": {"P": [[14.0, 6.0, 8.0], [8.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.13216469090486294]}, "1389": {"P": [[13.0, 7.0, 6.0], [8.0, 16.0, 7.0], [7.0, 6.0, 13.0]], "dev": [0.1551184068865081]}, "1390": {"P": [[13.0, 7.0, 8.0], [7.0, 15.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.15409376666502775]}, "1391": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 9.0], [7.0, 8.0, 14.0]], "dev": [0.13542147343495578]}, "1392": {"P": [[14.0, 8.0, 7.0], [8.0, 14.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.10517613586050072]}, "1393": {"P": [[14.0, 8.0, 7.0], [8.0, 15.0, 9.0], [7.0, 6.0, 14.0]], "dev": [0.1317442535335985]}, "1394": {"P": [[13.0, 7.0, 6.0], [7.0, 14.0, 6.0], [6.0, 6.0, 14.0]], "dev": [0.11958390790389542]}, "1395": {"P": [[13.0, 6.0, 7.0], [6.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.13914070644834683]}, "1396": {"P": [[13.0, 7.0, 5.0], [6.0, 14.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.166698858996364]}, "1397": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 8.0], [9.0, 7.0, 15.0]], "dev": [0.15353383570784068]}, "1398": {"P": [[14.0, 8.0, 8.0], [9.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.13441524091011051]}, "1399": {"P": [[13.0, 7.0, 6.0], [8.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11598658133113941]}, "1400": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.1067407345637611]}, "1401": {"P": [[14.0, 7.0, 6.0], [6.0, 13.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.11793528845418691]}, "1402": {"P": [[14.0, 8.0, 8.0], [7.0, 15.0, 6.0], [6.0, 6.0, 13.0]], "dev": [0.13760870158960337]}, "1403": {"P": [[14.0, 7.0, 8.0], [9.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.16333026277680546]}, "1404": {"P": [[15.0, 8.0, 8.0], [6.0, 14.0, 8.0], [6.0, 8.0, 14.0]], "dev": [0.15300425707388199]}, "1405": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.14448872823957404]}, "1406": {"P": [[14.0, 7.0, 6.0], [8.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.10400519832203071]}, "1407": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.091063127012819531]}, "1408": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.10955670732562248]}, "1409": {"P": [[13.0, 6.0, 6.0], [8.0, 14.0, 7.0], [6.0, 5.0, 14.0]], "dev": [0.14847418324858216]}, "1410": {"P": [[13.0, 6.0, 7.0], [8.0, 14.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.15257426487451062]}, "1411": {"P": [[15.0, 8.0, 9.0], [9.0, 15.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.15033169363821225]}, "1412": {"P": [[13.0, 7.0, 7.0], [6.0, 14.0, 5.0], [8.0, 8.0, 15.0]], "dev": [0.14631655246597813]}, "1413": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.11493531592987495]}, "1414": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 7.0], [8.0, 8.0, 14.0]], "dev": [0.090519121461896293]}, "1415": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.10678450974841863]}, "1416": {"P": [[13.0, 7.0, 6.0], [8.0, 16.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.13475439426295774]}, "1417": {"P": [[13.0, 6.0, 5.0], [6.0, 14.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.15456579140861931]}, "1418": {"P": [[13.0, 8.0, 6.0], [7.0, 15.0, 8.0], [6.0, 6.0, 14.0]], "dev": [0.15455413012444522]}, "1419": {"P": [[13.0, 5.0, 6.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.13745833013859046]}, "1420": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.10300223713239443]}, "1421": {"P": [[14.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.055856238925800633]}, "1422": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.11433997514340903]}, "1423": {"P": [[13.0, 7.0, 7.0], [8.0, 16.0, 7.0], [6.0, 5.0, 13.0]], "dev": [0.16615058004168523]}, "1424": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 8.0], [8.0, 7.0, 13.0]], "dev": [0.15288663176071526]}, "1425": {"P": [[15.0, 7.0, 6.0], [7.0, 13.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.1515946127358111]}, "1426": {"P": [[14.0, 6.0, 6.0], [9.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.13412743917018011]}, "1427": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 6.0], [7.0, 8.0, 14.0]], "dev": [0.13744801852399727]}, "1428": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.089572030813329873]}, "1429": {"P": [[14.0, 6.0, 7.0], [6.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13285897851007444]}, "1430": {"P": [[14.0, 8.0, 8.0], [7.0, 15.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.13745387370084353]}, "1431": {"P": [[15.0, 9.0, 8.0], [6.0, 13.0, 5.0], [6.0, 7.0, 14.0]], "dev": [0.15445143421630625]}, "1432": {"P": [[13.0, 7.0, 6.0], [7.0, 15.0, 9.0], [6.0, 6.0, 14.0]], "dev": [0.15444724679337843]}, "1433": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 9.0], [7.0, 8.0, 14.0]], "dev": [0.14348122417719231]}, "1434": {"P": [[13.0, 6.0, 7.0], [7.0, 14.0, 6.0], [7.0, 8.0, 15.0]], "dev": [0.11808492538233378]}, "1435": {"P": [[13.0, 6.0, 7.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.11810098733658923]}, "1436": {"P": [[14.0, 6.0, 7.0], [8.0, 14.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.10205917490376254]}, "1437": {"P": [[15.0, 8.0, 9.0], [8.0, 15.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.12941835390214762]}, "1438": {"P": [[14.0, 6.0, 8.0], [8.0, 15.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.150853810139745]}, "1439": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.15566235997908101]}, "1440": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.11382300808865749]}, "1441": {"P": [[13.0, 6.0, 5.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.137519772769466]}, "1442": {"P": [[14.0, 7.0, 8.0], [7.0, 14.0, 6.0], [6.0, 7.0, 14.0]], "dev": [0.10728901651334259]}, "1443": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [5.0, 6.0, 13.0]], "dev": [0.13753913939566609]}, "1444": {"P": [[13.0, 5.0, 7.0], [8.0, 14.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.14623751558404438]}, "1445": {"P": [[14.0, 7.0, 6.0], [9.0, 15.0, 8.0], [7.0, 9.0, 15.0]], "dev": [0.15856482002399183]}, "1446": {"P": [[15.0, 8.0, 9.0], [7.0, 15.0, 7.0], [9.0, 9.0, 15.0]], "dev": [0.15457174798943002]}, "1447": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 8.0], [9.0, 9.0, 16.0]], "dev": [0.14196743229545297]}, "1448": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.10738291093838752]}, "1449": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.10734065291562249]}, "1450": {"P": [[14.0, 7.0, 6.0], [8.0, 14.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.11310948270801138]}, "1451": {"P": [[13.0, 7.0, 6.0], [8.0, 16.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.14606381738944341]}, "1452": {"P": [[14.0, 6.0, 8.0], [8.0, 15.0, 8.0], [6.0, 8.0, 14.0]], "dev": [0.15016583458228758]}, "1453": {"P": [[14.0, 9.0, 8.0], [7.0, 15.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.15777240503675219]}, "1454": {"P": [[15.0, 8.0, 7.0], [7.0, 15.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.11803969914169347]}, "1455": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.1005638748023968]}, "1456": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.089066308674646891]}, "1457": {"P": [[13.0, 5.0, 6.0], [7.0, 15.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.13321400769318242]}, "1458": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [6.0, 8.0, 14.0]], "dev": [0.13256008808091385]}, "1459": {"P": [[13.0, 8.0, 7.0], [8.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.16104880346842312]}, "1460": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 9.0], [8.0, 6.0, 14.0]], "dev": [0.1571087616020676]}, "1461": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14057529153531881]}, "1462": {"P": [[14.0, 8.0, 8.0], [7.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.099769096377344949]}, "1463": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.080773779987916475]}, "1464": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.11358715427715356]}, "1465": {"P": [[13.0, 6.0, 7.0], [8.0, 16.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.14548942512257368]}, "1466": {"P": [[14.0, 8.0, 7.0], [6.0, 14.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.15656184185010408]}, "1467": {"P": [[14.0, 9.0, 8.0], [8.0, 15.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.16032317552027051]}, "1468": {"P": [[13.0, 7.0, 6.0], [7.0, 15.0, 8.0], [6.0, 6.0, 14.0]], "dev": [0.12400284298787098]}, "1469": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.10665658348279471]}, "1470": {"P": [[15.0, 7.0, 8.0], [7.0, 14.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.063725960298245884]}, "1471": {"P": [[13.0, 6.0, 6.0], [9.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.12741689904078668]}, "1472": {"P": [[14.0, 6.0, 6.0], [6.0, 14.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.12413961484681235]}, "1473": {"P": [[15.0, 9.0, 8.0], [9.0, 15.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.15461047991691659]}, "1474": {"P": [[15.0, 8.0, 7.0], [8.0, 14.0, 8.0], [6.0, 8.0, 15.0]], "dev": [0.14368590529518574]}, "1475": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.13930347642101878]}, "1476": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [6.0, 6.0, 13.0]], "dev": [0.11409247288767102]}, "1477": {"P": [[14.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.080486181665289452]}, "1478": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.098100679182411069]}, "1479": {"P": [[15.0, 9.0, 9.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.13896199745003934]}, "1480": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.14966886001864294]}, "1481": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 9.0], [7.0, 8.0, 14.0]], "dev": [0.14309490622564808]}, "1482": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.13427396160475286]}, "1483": {"P": [[13.0, 7.0, 7.0], [7.0, 15.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.13178354971683548]}, "1484": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 8.0], [6.0, 6.0, 14.0]], "dev": [0.10634050787935032]}, "1485": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 8.0], [5.0, 6.0, 13.0]], "dev": [0.13400087591142576]}, "1486": {"P": [[13.0, 5.0, 6.0], [8.0, 14.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.13403646894881727]}, "1487": {"P": [[16.0, 8.0, 9.0], [7.0, 15.0, 9.0], [7.0, 8.0, 14.0]], "dev": [0.16046891879617112]}, "1488": {"P": [[15.0, 9.0, 8.0], [9.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.1358672298507754]}, "1489": {"P": [[13.0, 7.0, 6.0], [8.0, 15.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.13165333126187057]}, "1490": {"P": [[14.0, 6.0, 7.0], [6.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.13163369424374777]}, "1491": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.10624915528293789]}, "1492": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.10623897191551385]}, "1493": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 7.0], [9.0, 7.0, 14.0]], "dev": [0.14467112357531206]}, "1494": {"P": [[15.0, 7.0, 9.0], [8.0, 14.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.15427302759538045]}, "1495": {"P": [[13.0, 6.0, 7.0], [7.0, 15.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.14199906610164079]}, "1496": {"P": [[14.0, 8.0, 6.0], [8.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12380098808054373]}, "1497": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [6.0, 7.0, 13.0]], "dev": [0.11172127327927966]}, "1498": {"P": [[14.0, 6.0, 6.0], [7.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.11171323046573152]}, "1499": {"P": [[15.0, 9.0, 8.0], [6.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.12682833178220124]}, "1500": {"P": [[15.0, 8.0, 8.0], [6.0, 14.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.12681610358361359]}, "1501": {"P": [[15.0, 8.0, 6.0], [8.0, 15.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.15376753969932699]}, "1502": {"P": [[15.0, 7.0, 6.0], [9.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.14149378329267784]}, "1503": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.12328674081392003]}, "1504": {"P": [[14.0, 7.0, 6.0], [8.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.10036287202163918]}, "1505": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.10036439111404194]}, "1506": {"P": [[14.0, 6.0, 6.0], [8.0, 15.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.13139841449678052]}, "1507": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [7.0, 9.0, 15.0]], "dev": [0.13684004951192347]}, "1508": {"P": [[15.0, 7.0, 9.0], [8.0, 15.0, 8.0], [6.0, 8.0, 14.0]], "dev": [0.15328826860790412]}, "1509": {"P": [[13.0, 7.0, 6.0], [8.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14101661537439178]}, "1510": {"P": [[15.0, 8.0, 8.0], [6.0, 15.0, 7.0], [8.0, 8.0, 14.0]], "dev": [0.12280414584744716]}, "1511": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.088816408283599407]}, "1512": {"P": [[14.0, 7.0, 7.0], [8.0, 15.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.087682316510539496]}, "1513": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.12260695317899573]}, "1514": {"P": [[16.0, 7.0, 9.0], [7.0, 14.0, 6.0], [8.0, 8.0, 14.0]], "dev": [0.15675553169264159]}, "1515": {"P": [[13.0, 6.0, 5.0], [8.0, 15.0, 7.0], [7.0, 9.0, 15.0]], "dev": [0.16370401788282968]}, "1516": {"P": [[14.0, 6.0, 8.0], [9.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.14475004048883988]}, "1517": {"P": [[15.0, 6.0, 7.0], [8.0, 15.0, 7.0], [7.0, 7.0, 13.0]], "dev": [0.13132096252092001]}, "1518": {"P": [[13.0, 7.0, 6.0], [7.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.11169064992225473]}, "1519": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.054234793218335006]}, "1520": {"P": [[13.0, 6.0, 6.0], [8.0, 15.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.11170258937995141]}, "1521": {"P": [[13.0, 6.0, 5.0], [8.0, 15.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.13990592213464445]}, "1522": {"P": [[14.0, 8.0, 6.0], [8.0, 15.0, 8.0], [6.0, 8.0, 15.0]], "dev": [0.15240738629491007]}, "1523": {"P": [[13.0, 7.0, 8.0], [7.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.15234838760693242]}, "1524": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.13577674053432109]}, "1525": {"P": [[13.0, 6.0, 6.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.11174345535643301]}, "1526": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.073036434083300128]}, "1527": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.12176247621345437]}, "1528": {"P": [[15.0, 8.0, 7.0], [9.0, 16.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.13088691582279902]}, "1529": {"P": [[16.0, 8.0, 7.0], [8.0, 15.0, 9.0], [7.0, 8.0, 14.0]], "dev": [0.14374235780460529]}, "1530": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 9.0], [8.0, 9.0, 15.0]], "dev": [0.14363525537553107]}, "1531": {"P": [[13.0, 7.0, 7.0], [8.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.13538726806433865]}, "1532": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 8.0], [6.0, 6.0, 14.0]], "dev": [0.11182675648819164]}, "1533": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.088148609421236299]}, "1534": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.10071584808620168]}, "1535": {"P": [[13.0, 5.0, 6.0], [8.0, 14.0, 7.0], [6.0, 7.0, 15.0]], "dev": [0.1565588422526259]}, "1536": {"P": [[14.0, 6.0, 8.0], [8.0, 14.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.1394348908783333]}, "1537": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.14290089397144809]}, "1538": {"P": [[15.0, 7.0, 6.0], [8.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12596794743448864]}, "1539": {"P": [[14.0, 7.0, 6.0], [6.0, 14.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.11291562487713898]}, "1540": {"P": [[14.0, 6.0, 6.0], [9.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.12108869806161102]}, "1541": {"P": [[14.0, 7.0, 8.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.099645035723940761]}, "1542": {"P": [[14.0, 6.0, 8.0], [8.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12099435546839719]}, "1543": {"P": [[13.0, 5.0, 6.0], [7.0, 14.0, 5.0], [6.0, 7.0, 14.0]], "dev": [0.17881795177665177]}, "1544": {"P": [[16.0, 8.0, 8.0], [7.0, 13.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14219332372182891]}, "1545": {"P": [[16.0, 7.0, 7.0], [7.0, 13.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.13469147405051601]}, "1546": {"P": [[13.0, 7.0, 7.0], [7.0, 15.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.12687077071166727]}, "1547": {"P": [[14.0, 6.0, 7.0], [6.0, 15.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.12688481739684498]}, "1548": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.12072608599609407]}, "1549": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 8.0], [9.0, 8.0, 15.0]], "dev": [0.12068351714699228]}, "1550": {"P": [[15.0, 7.0, 9.0], [8.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.14570083014699084]}, "1551": {"P": [[14.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 9.0, 15.0]], "dev": [0.15346631794521468]}, "1552": {"P": [[14.0, 8.0, 8.0], [8.0, 15.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.11379631309766396]}, "1553": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.093021764121983097]}, "1554": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.11550547213258072]}, "1555": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.12701588341725265]}, "1556": {"P": [[14.0, 7.0, 6.0], [8.0, 15.0, 8.0], [9.0, 7.0, 15.0]], "dev": [0.1297786558504424]}, "1557": {"P": [[13.0, 6.0, 6.0], [7.0, 15.0, 6.0], [9.0, 7.0, 15.0]], "dev": [0.15975463425211442]}, "1558": {"P": [[15.0, 8.0, 9.0], [9.0, 16.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.1408580726104898]}, "1559": {"P": [[15.0, 7.0, 7.0], [7.0, 14.0, 8.0], [9.0, 9.0, 16.0]], "dev": [0.12300345856960888]}, "1560": {"P": [[14.0, 7.0, 6.0], [8.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.092774210328675333]}, "1561": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.11524967329043931]}, "1562": {"P": [[14.0, 6.0, 8.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.13167710005238106]}, "1563": {"P": [[13.0, 6.0, 6.0], [8.0, 15.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.14440251182540265]}, "1564": {"P": [[15.0, 7.0, 6.0], [9.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.14841469836606011]}, "1565": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.14433589611949108]}, "1566": {"P": [[16.0, 9.0, 8.0], [7.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.12234576377382117]}, "1567": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.1013736788713077]}, "1568": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.078926412962239539]}, "1569": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.10745111821149934]}, "1570": {"P": [[14.0, 8.0, 8.0], [8.0, 16.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.13371831579105914]}, "1571": {"P": [[15.0, 6.0, 7.0], [9.0, 16.0, 8.0], [7.0, 7.0, 13.0]], "dev": [0.15011194255127117]}, "1572": {"P": [[14.0, 7.0, 8.0], [6.0, 15.0, 6.0], [8.0, 9.0, 15.0]], "dev": [0.15007741966300889]}, "1573": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.13362420718625845]}, "1574": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 6.0], [8.0, 8.0, 15.0]], "dev": [0.11485520034133452]}, "1575": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.06227718870581863]}, "1576": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.10774027054192439]}, "1577": {"P": [[16.0, 9.0, 9.0], [9.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.15501754133335938]}, "1578": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.14324830458279667]}, "1579": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 9.0], [7.0, 7.0, 13.0]], "dev": [0.15856524166404379]}, "1580": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 9.0], [6.0, 6.0, 14.0]], "dev": [0.133423123369836]}, "1581": {"P": [[13.0, 6.0, 6.0], [8.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.1333964972928614]}, "1582": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.078663213911843111]}, "1583": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.092222223449891588]}, "1584": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.11462180109462701]}, "1585": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 9.0], [6.0, 8.0, 15.0]], "dev": [0.14269897683318106]}, "1586": {"P": [[14.0, 8.0, 8.0], [8.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.12533593135916038]}, "1587": {"P": [[15.0, 8.0, 7.0], [7.0, 13.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.1375226513720185]}, "1588": {"P": [[14.0, 6.0, 6.0], [9.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.14486140572163614]}, "1589": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.11452754323738716]}, "1590": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.092132077880781565]}, "1591": {"P": [[14.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12023542901136614]}, "1592": {"P": [[16.0, 9.0, 8.0], [8.0, 14.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.14217484185768597]}, "1593": {"P": [[15.0, 8.0, 7.0], [7.0, 13.0, 6.0], [8.0, 7.0, 16.0]], "dev": [0.13738586705373729]}, "1594": {"P": [[13.0, 7.0, 7.0], [8.0, 16.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.12868875981938901]}, "1595": {"P": [[14.0, 8.0, 7.0], [8.0, 15.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.11936826992616204]}, "1596": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.10871129130681657]}, "1597": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 9.0], [7.0, 6.0, 14.0]], "dev": [0.13769174288509872]}, "1598": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.10966423955710471]}, "1599": {"P": [[14.0, 7.0, 6.0], [8.0, 16.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.13755097481651568]}, "1600": {"P": [[13.0, 7.0, 7.0], [8.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.12428735970672879]}, "1601": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 14.0]], "dev": [0.11457850735265028]}, "1602": {"P": [[15.0, 7.0, 7.0], [6.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11927486879939324]}, "1603": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 6.0], [7.0, 6.0, 14.0]], "dev": [0.11424771640476684]}, "1604": {"P": [[15.0, 6.0, 7.0], [6.0, 14.0, 6.0], [8.0, 7.0, 14.0]], "dev": [0.13289838107240148]}, "1605": {"P": [[15.0, 6.0, 8.0], [9.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.13714112902947187]}, "1606": {"P": [[16.0, 9.0, 9.0], [8.0, 14.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.14513944574454607]}, "1607": {"P": [[15.0, 9.0, 8.0], [8.0, 15.0, 7.0], [9.0, 8.0, 16.0]], "dev": [0.12822135160067674]}, "1608": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.10354404296849334]}, "1609": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.10347421122510975]}, "1610": {"P": [[14.0, 7.0, 6.0], [8.0, 15.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.1146268790154992]}, "1611": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [7.0, 9.0, 15.0]], "dev": [0.13283586939757056]}, "1612": {"P": [[14.0, 6.0, 8.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.1239007185144934]}, "1613": {"P": [[16.0, 8.0, 7.0], [7.0, 13.0, 7.0], [9.0, 8.0, 16.0]], "dev": [0.14866471672773721]}, "1614": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 8.0], [8.0, 6.0, 14.0]], "dev": [0.14068955516834478]}, "1615": {"P": [[15.0, 6.0, 7.0], [8.0, 15.0, 9.0], [8.0, 8.0, 15.0]], "dev": [0.12328707321257681]}, "1616": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.077686453855283555]}, "1617": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 8.0, 16.0]], "dev": [0.09812069254559927]}, "1618": {"P": [[14.0, 6.0, 6.0], [8.0, 14.0, 7.0], [6.0, 7.0, 15.0]], "dev": [0.13347663022727271]}, "1619": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 8.0], [9.0, 7.0, 15.0]], "dev": [0.13276213950305973]}, "1620": {"P": [[14.0, 6.0, 7.0], [8.0, 14.0, 6.0], [8.0, 9.0, 16.0]], "dev": [0.1489663615511862]}, "1621": {"P": [[14.0, 7.0, 8.0], [9.0, 15.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.16632537398458139]}, "1622": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 6.0], [9.0, 9.0, 16.0]], "dev": [0.14020956172437729]}, "1623": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.098166063615980459]}, "1624": {"P": [[14.0, 7.0, 7.0], [8.0, 15.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.071266662196927011]}, "1625": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 6.0], [9.0, 8.0, 15.0]], "dev": [0.14003772255066554]}, "1626": {"P": [[14.0, 6.0, 7.0], [7.0, 14.0, 6.0], [9.0, 8.0, 16.0]], "dev": [0.12836052996027969]}, "1627": {"P": [[14.0, 8.0, 7.0], [8.0, 17.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.15798551438286715]}, "1628": {"P": [[15.0, 7.0, 9.0], [9.0, 16.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.14778276504190169]}, "1629": {"P": [[13.0, 6.0, 6.0], [7.0, 15.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.13398646051188925]}, "1630": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 9.0], [7.0, 7.0, 15.0]], "dev": [0.11274145925378341]}, "1631": {"P": [[15.0, 8.0, 8.0], [8.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.060044762522225549]}, "1632": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.098276379355264495]}, "1633": {"P": [[15.0, 7.0, 9.0], [8.0, 15.0, 7.0], [9.0, 9.0, 16.0]], "dev": [0.14223247352464718]}, "1634": {"P": [[14.0, 7.0, 6.0], [6.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.13691701306333967]}, "1635": {"P": [[14.0, 6.0, 7.0], [9.0, 15.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.1474072383876705]}, "1636": {"P": [[15.0, 6.0, 7.0], [9.0, 16.0, 9.0], [8.0, 7.0, 14.0]], "dev": [0.13944536730164833]}, "1637": {"P": [[15.0, 8.0, 7.0], [5.0, 13.0, 5.0], [8.0, 7.0, 15.0]], "dev": [0.15031689795265699]}, "1638": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.1017333216314826]}, "1639": {"P": [[15.0, 8.0, 8.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.076208531285019546]}, "1640": {"P": [[14.0, 6.0, 6.0], [9.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.11922910264664188]}, "1641": {"P": [[15.0, 8.0, 7.0], [9.0, 15.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.13737931683869742]}, "1642": {"P": [[16.0, 7.0, 8.0], [6.0, 14.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.13501982356261033]}, "1643": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 7.0], [9.0, 7.0, 16.0]], "dev": [0.13497201887648816]}, "1644": {"P": [[14.0, 7.0, 8.0], [6.0, 15.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.13272789726066223]}, "1645": {"P": [[14.0, 8.0, 7.0], [7.0, 15.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.11927877498377092]}, "1646": {"P": [[14.0, 6.0, 6.0], [8.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.098546004403985213]}, "1647": {"P": [[14.0, 7.0, 6.0], [9.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.12157069811712554]}, "1648": {"P": [[15.0, 8.0, 9.0], [8.0, 16.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.12152605964861395]}, "1649": {"P": [[14.0, 7.0, 8.0], [6.0, 15.0, 7.0], [9.0, 8.0, 16.0]], "dev": [0.13469552006470542]}, "1650": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.1167021883543605]}, "1651": {"P": [[15.0, 8.0, 6.0], [8.0, 15.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.13276988243655558]}, "1652": {"P": [[14.0, 6.0, 6.0], [7.0, 14.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.13277767167181359]}, "1653": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.098724217460539901]}, "1654": {"P": [[14.0, 6.0, 7.0], [9.0, 15.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.12848477416021742]}, "1655": {"P": [[14.0, 7.0, 6.0], [6.0, 15.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.1369760312565351]}, "1656": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.11825452933358696]}, "1657": {"P": [[16.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.11641406864344017]}, "1658": {"P": [[14.0, 6.0, 7.0], [6.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.11466378386889813]}, "1659": {"P": [[14.0, 6.0, 7.0], [7.0, 16.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.11468426193855139]}, "1660": {"P": [[15.0, 9.0, 7.0], [7.0, 15.0, 7.0], [9.0, 7.0, 15.0]], "dev": [0.14624933466972267]}, "1661": {"P": [[16.0, 7.0, 9.0], [8.0, 14.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.13831572806856773]}, "1662": {"P": [[14.0, 8.0, 6.0], [6.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.13703828499187662]}, "1663": {"P": [[17.0, 9.0, 9.0], [7.0, 15.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.13533353226233696]}, "1664": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [9.0, 9.0, 16.0]], "dev": [0.1075278703212227]}, "1665": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.11611782299833102]}, "1666": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.1046290658981148]}, "1667": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [6.0, 6.0, 13.0]], "dev": [0.1329471783549129]}, "1668": {"P": [[14.0, 8.0, 8.0], [7.0, 16.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.1411325078838303]}, "1669": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.12071170271572723]}, "1670": {"P": [[14.0, 7.0, 8.0], [6.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.13386535305458469]}, "1671": {"P": [[14.0, 7.0, 6.0], [9.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11591852949337668]}, "1672": {"P": [[16.0, 8.0, 8.0], [8.0, 14.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.094646579069805073]}, "1673": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.093594990423839411]}, "1674": {"P": [[14.0, 6.0, 7.0], [8.0, 16.0, 9.0], [7.0, 8.0, 15.0]], "dev": [0.11582617743406752]}, "1675": {"P": [[14.0, 7.0, 6.0], [7.0, 16.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.13369873150291725]}, "1676": {"P": [[14.0, 6.0, 8.0], [7.0, 16.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.14892646258481065]}, "1677": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 6.0], [8.0, 9.0, 15.0]], "dev": [0.1377467165437827]}, "1678": {"P": [[13.0, 6.0, 6.0], [7.0, 15.0, 8.0], [8.0, 7.0, 16.0]], "dev": [0.13313273421863886]}, "1679": {"P": [[15.0, 7.0, 7.0], [5.0, 13.0, 6.0], [9.0, 8.0, 16.0]], "dev": [0.14895944446607895]}, "1680": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.066043679834107791]}, "1681": {"P": [[14.0, 5.0, 6.0], [7.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.14898331584568186]}, "1682": {"P": [[16.0, 7.0, 7.0], [7.0, 14.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.1332127045446099]}, "1683": {"P": [[15.0, 6.0, 8.0], [6.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.14543010344184212]}, "1684": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 7.0], [8.0, 6.0, 15.0]], "dev": [0.14539969491248381]}, "1685": {"P": [[13.0, 6.0, 7.0], [8.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14914611543565184]}, "1686": {"P": [[14.0, 6.0, 7.0], [8.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.11550485820417523]}, "1687": {"P": [[15.0, 7.0, 7.0], [6.0, 14.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.094255363118099372]}, "1688": {"P": [[15.0, 8.0, 8.0], [7.0, 15.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.094236753481706931]}, "1689": {"P": [[15.0, 8.0, 7.0], [6.0, 14.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.11543643046384522]}, "1690": {"P": [[14.0, 7.0, 8.0], [9.0, 17.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.14899888081945351]}, "1691": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 8.0], [7.0, 6.0, 13.0]], "dev": [0.15264940421047957]}, "1692": {"P": [[15.0, 6.0, 7.0], [7.0, 16.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.13731920503679881]}, "1693": {"P": [[16.0, 8.0, 9.0], [7.0, 14.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.1331954088128614]}, "1694": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 7.0], [9.0, 9.0, 16.0]], "dev": [0.10488022728512379]}, "1695": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.066592770396332629]}, "1696": {"P": [[16.0, 8.0, 8.0], [8.0, 15.0, 7.0], [8.0, 9.0, 15.0]], "dev": [0.10472240908230686]}, "1697": {"P": [[16.0, 8.0, 9.0], [9.0, 16.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.13216582624465345]}, "1698": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 8.0], [8.0, 8.0, 14.0]], "dev": [0.13667451174682391]}, "1699": {"P": [[16.0, 7.0, 7.0], [7.0, 14.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11994524258742115]}, "1700": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 9.0], [7.0, 6.0, 15.0]], "dev": [0.13303976858752917]}, "1701": {"P": [[15.0, 8.0, 8.0], [6.0, 15.0, 6.0], [8.0, 9.0, 15.0]], "dev": [0.13301933878704605]}, "1702": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.11519402454458269]}, "1703": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 9.0], [7.0, 7.0, 15.0]], "dev": [0.11517898216702728]}, "1704": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.12790407240862453]}, "1705": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [9.0, 8.0, 15.0]], "dev": [0.11889082978582656]}, "1706": {"P": [[14.0, 8.0, 7.0], [8.0, 15.0, 8.0], [8.0, 8.0, 17.0]], "dev": [0.12776823313875421]}, "1707": {"P": [[14.0, 8.0, 7.0], [9.0, 17.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.13606183397781185]}, "1708": {"P": [[14.0, 7.0, 7.0], [8.0, 16.0, 9.0], [8.0, 6.0, 15.0]], "dev": [0.13288884406600027]}, "1709": {"P": [[15.0, 7.0, 6.0], [7.0, 15.0, 9.0], [10.0, 9.0, 16.0]], "dev": [0.17491903884137885]}, "1710": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.081468820481870333]}, "1711": {"P": [[16.0, 9.0, 9.0], [8.0, 16.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.13467309147013876]}, "1712": {"P": [[15.0, 8.0, 9.0], [8.0, 16.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.11706724596867503]}, "1713": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.11835218950943849]}, "1714": {"P": [[14.0, 6.0, 7.0], [7.0, 16.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.11016429912605921]}, "1715": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [8.0, 8.0, 17.0]], "dev": [0.11972023544999447]}, "1716": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [6.0, 8.0, 15.0]], "dev": [0.13414897879264429]}, "1717": {"P": [[14.0, 7.0, 6.0], [6.0, 15.0, 7.0], [9.0, 7.0, 15.0]], "dev": [0.14966135193300384]}, "1718": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 9.0], [8.0, 6.0, 15.0]], "dev": [0.14702746568857086]}, "1719": {"P": [[15.0, 9.0, 7.0], [8.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.13118451979622453]}, "1720": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 9.0], [9.0, 9.0, 16.0]], "dev": [0.11611371605180376]}, "1721": {"P": [[15.0, 8.0, 8.0], [8.0, 15.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.09966838751985678]}, "1722": {"P": [[14.0, 7.0, 7.0], [8.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.099668401198344844]}, "1723": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.12155221135085477]}, "1724": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.13844704536204927]}, "1725": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 8.0], [9.0, 7.0, 15.0]], "dev": [0.13266164062132801]}, "1726": {"P": [[15.0, 6.0, 7.0], [8.0, 16.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.13489049762223676]}, "1727": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.13071319999768302]}, "1728": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.097032564761358298]}, "1729": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.074591425211568599]}, "1730": {"P": [[15.0, 8.0, 9.0], [7.0, 15.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.11962090739463192]}, "1731": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [9.0, 7.0, 16.0]], "dev": [0.13666801185914051]}, "1732": {"P": [[15.0, 6.0, 8.0], [7.0, 14.0, 6.0], [9.0, 8.0, 16.0]], "dev": [0.14442950630200899]}, "1733": {"P": [[13.0, 7.0, 6.0], [7.0, 16.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.15369932058903521]}, "1734": {"P": [[14.0, 6.0, 7.0], [8.0, 16.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.12606937914894289]}, "1735": {"P": [[15.0, 6.0, 7.0], [7.0, 15.0, 8.0], [9.0, 7.0, 15.0]], "dev": [0.13663743961100588]}, "1736": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.070450923541900787]}, "1737": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [9.0, 8.0, 16.0]], "dev": [0.096508150324550721]}, "1738": {"P": [[15.0, 9.0, 8.0], [6.0, 14.0, 6.0], [8.0, 7.0, 16.0]], "dev": [0.13661879424988815]}, "1739": {"P": [[14.0, 7.0, 8.0], [8.0, 16.0, 7.0], [9.0, 7.0, 16.0]], "dev": [0.14585036586230407]}, "1740": {"P": [[14.0, 7.0, 8.0], [6.0, 15.0, 6.0], [8.0, 9.0, 16.0]], "dev": [0.14435770478493967]}, "1741": {"P": [[15.0, 7.0, 6.0], [9.0, 16.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.13408111081366]}, "1742": {"P": [[14.0, 6.0, 6.0], [6.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.13912105013471468]}, "1743": {"P": [[15.0, 8.0, 7.0], [8.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.096185592325464808]}, "1744": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.058649296966884021]}, "1745": {"P": [[15.0, 8.0, 8.0], [6.0, 14.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.11016928193264915]}, "1746": {"P": [[14.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.12971231152263579]}, "1747": {"P": [[14.0, 6.0, 7.0], [9.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.14431506293070884]}, "1748": {"P": [[14.0, 6.0, 8.0], [7.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.14049980373806981]}, "1749": {"P": [[15.0, 6.0, 6.0], [7.0, 15.0, 8.0], [7.0, 9.0, 15.0]], "dev": [0.14801762395341084]}, "1750": {"P": [[16.0, 9.0, 9.0], [6.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.1162867907857953]}, "1751": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.075133543039837575]}, "1752": {"P": [[14.0, 7.0, 6.0], [8.0, 16.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.099923082834039251]}, "1753": {"P": [[14.0, 8.0, 7.0], [9.0, 16.0, 8.0], [7.0, 7.0, 16.0]], "dev": [0.12938507692768236]}, "1754": {"P": [[14.0, 7.0, 8.0], [8.0, 17.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.12934013462373478]}, "1755": {"P": [[15.0, 6.0, 7.0], [6.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.13255947800412737]}, "1756": {"P": [[14.0, 8.0, 7.0], [8.0, 16.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.13256241567109336]}, "1757": {"P": [[15.0, 7.0, 6.0], [7.0, 14.0, 7.0], [9.0, 8.0, 16.0]], "dev": [0.11970312336150984]}, "1758": {"P": [[14.0, 6.0, 6.0], [8.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.11971240009589193]}, "1759": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 7.0], [9.0, 9.0, 16.0]], "dev": [0.095430477091570085]}, "1760": {"P": [[15.0, 7.0, 9.0], [8.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11584674856453815]}, "1761": {"P": [[15.0, 6.0, 8.0], [8.0, 15.0, 7.0], [9.0, 9.0, 16.0]], "dev": [0.13315707280453246]}, "1762": {"P": [[16.0, 7.0, 7.0], [7.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.12033713199150362]}, "1763": {"P": [[15.0, 6.0, 7.0], [7.0, 16.0, 8.0], [8.0, 7.0, 14.0]], "dev": [0.13259410729185614]}, "1764": {"P": [[14.0, 7.0, 7.0], [7.0, 15.0, 6.0], [7.0, 6.0, 15.0]], "dev": [0.12801939080441077]}, "1765": {"P": [[16.0, 8.0, 9.0], [9.0, 15.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.13299320326552361]}, "1766": {"P": [[15.0, 7.0, 7.0], [8.0, 16.0, 9.0], [9.0, 7.0, 15.0]], "dev": [0.12458215095549881]}, "1767": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.095109731019917251]}, "1768": {"P": [[15.0, 8.0, 9.0], [7.0, 16.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.1247672372243987]}, "1769": {"P": [[17.0, 8.0, 8.0], [8.0, 15.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.12467969375269755]}, "1770": {"P": [[15.0, 8.0, 8.0], [9.0, 17.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.12868182763352393]}, "1771": {"P": [[14.0, 7.0, 6.0], [7.0, 14.0, 7.0], [8.0, 8.0, 17.0]], "dev": [0.13265386907002855]}, "1772": {"P": [[14.0, 6.0, 7.0], [8.0, 16.0, 7.0], [7.0, 9.0, 15.0]], "dev": [0.14431215032207859]}, "1773": {"P": [[16.0, 9.0, 7.0], [7.0, 15.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.1326861088761018]}, "1774": {"P": [[15.0, 9.0, 8.0], [9.0, 16.0, 9.0], [7.0, 7.0, 16.0]], "dev": [0.13261662384560496]}, "1775": {"P": [[16.0, 8.0, 9.0], [7.0, 16.0, 8.0], [8.0, 9.0, 15.0]], "dev": [0.12416409401130028]}, "1776": {"P": [[16.0, 8.0, 8.0], [7.0, 16.0, 8.0], [7.0, 8.0, 14.0]], "dev": [0.11048754139817146]}, "1777": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.088917104027403396]}, "1778": {"P": [[14.0, 7.0, 7.0], [7.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.10572518416513456]}, "1779": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 6.0], [8.0, 6.0, 15.0]], "dev": [0.15183217088585763]}, "1780": {"P": [[15.0, 8.0, 7.0], [7.0, 16.0, 9.0], [7.0, 6.0, 14.0]], "dev": [0.13672959002425386]}, "1781": {"P": [[15.0, 8.0, 6.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.12004347163998136]}, "1782": {"P": [[17.0, 9.0, 9.0], [7.0, 15.0, 8.0], [7.0, 9.0, 15.0]], "dev": [0.13985265954840526]}, "1783": {"P": [[16.0, 7.0, 7.0], [9.0, 16.0, 10.0], [8.0, 8.0, 15.0]], "dev": [0.1397752539764385]}, "1784": {"P": [[15.0, 6.0, 7.0], [8.0, 16.0, 9.0], [8.0, 8.0, 15.0]], "dev": [0.11023668707632021]}, "1785": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.088682676324909407]}, "1786": {"P": [[14.0, 6.0, 6.0], [7.0, 16.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.11560638710412154]}, "1787": {"P": [[16.0, 8.0, 9.0], [6.0, 15.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.1328468363641877]}, "1788": {"P": [[15.0, 6.0, 7.0], [9.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.13682619538604812]}, "1789": {"P": [[16.0, 7.0, 9.0], [9.0, 16.0, 7.0], [7.0, 8.0, 14.0]], "dev": [0.16128838146992469]}, "1790": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.12801714972187048]}, "1791": {"P": [[16.0, 8.0, 9.0], [7.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.10404560526157411]}, "1792": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.075491505745150914]}, "1793": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.095589544302344384]}, "1794": {"P": [[14.0, 7.0, 6.0], [8.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.11580990020125732]}, "1795": {"P": [[14.0, 8.0, 7.0], [9.0, 16.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.14725566579644178]}, "1796": {"P": [[15.0, 7.0, 6.0], [9.0, 15.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.14078372789654955]}, "1797": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 9.0], [8.0, 6.0, 15.0]], "dev": [0.15172575340753122]}, "1798": {"P": [[15.0, 8.0, 7.0], [7.0, 16.0, 9.0], [9.0, 7.0, 15.0]], "dev": [0.14716739509426674]}, "1799": {"P": [[15.0, 8.0, 8.0], [9.0, 16.0, 9.0], [8.0, 7.0, 16.0]], "dev": [0.10339383354811756]}, "1800": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.059565550717855166]}, "1801": {"P": [[15.0, 9.0, 8.0], [7.0, 15.0, 7.0], [7.0, 8.0, 16.0]], "dev": [0.10980861112538245]}, "1802": {"P": [[15.0, 8.0, 7.0], [6.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.12770077974852631]}, "1803": {"P": [[15.0, 6.0, 7.0], [9.0, 15.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.14336669001127084]}, "1804": {"P": [[14.0, 6.0, 7.0], [8.0, 16.0, 9.0], [9.0, 7.0, 16.0]], "dev": [0.14334054543500038]}, "1805": {"P": [[15.0, 7.0, 6.0], [9.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14331477731916537]}, "1806": {"P": [[16.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.10970946829345402]}, "1807": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.088237522943567862]}, "1808": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.075240576916067364]}, "1809": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 7.0], [9.0, 9.0, 17.0]], "dev": [0.12754420621159526]}, "1810": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.12752350286207395]}, "1811": {"P": [[15.0, 8.0, 7.0], [9.0, 15.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.13159435380105616]}, "1812": {"P": [[15.0, 6.0, 7.0], [6.0, 15.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.13725227596449127]}, "1813": {"P": [[14.0, 7.0, 7.0], [7.0, 14.0, 7.0], [7.0, 7.0, 17.0]], "dev": [0.15192479377384999]}, "1814": {"P": [[15.0, 8.0, 7.0], [7.0, 16.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.11643116501977764]}, "1815": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.08814680601687605]}, "1816": {"P": [[16.0, 8.0, 8.0], [8.0, 16.0, 9.0], [7.0, 6.0, 14.0]], "dev": [0.10954704127109752]}, "1817": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 8.0], [9.0, 8.0, 15.0]], "dev": [0.1253093309330427]}, "1818": {"P": [[16.0, 7.0, 8.0], [6.0, 15.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.12315245711244152]}, "1819": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.13143961548488525]}, "1820": {"P": [[15.0, 7.0, 8.0], [6.0, 16.0, 7.0], [7.0, 7.0, 14.0]], "dev": [0.13743814158086334]}, "1821": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 6.0], [8.0, 9.0, 16.0]], "dev": [0.13356616470815935]}, "1822": {"P": [[15.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.10729768672628097]}, "1823": {"P": [[14.0, 8.0, 7.0], [9.0, 17.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.13310848387280211]}, "1824": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.10157212209239176]}, "1825": {"P": [[16.0, 9.0, 7.0], [9.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12480526534655023]}, "1826": {"P": [[15.0, 9.0, 8.0], [9.0, 17.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.12474421296219754]}, "1827": {"P": [[15.0, 6.0, 7.0], [6.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.12134051320526121]}, "1828": {"P": [[15.0, 6.0, 8.0], [7.0, 16.0, 8.0], [7.0, 6.0, 14.0]], "dev": [0.14509661514983346]}, "1829": {"P": [[15.0, 6.0, 7.0], [9.0, 16.0, 8.0], [7.0, 9.0, 15.0]], "dev": [0.14280763921296563]}, "1830": {"P": [[15.0, 6.0, 7.0], [9.0, 15.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.13382328038396055]}, "1831": {"P": [[15.0, 7.0, 9.0], [8.0, 16.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.12718324879150769]}, "1832": {"P": [[16.0, 8.0, 7.0], [9.0, 16.0, 9.0], [7.0, 8.0, 15.0]], "dev": [0.10613467606412051]}, "1833": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 9.0], [8.0, 8.0, 15.0]], "dev": [0.10607388059060033]}, "1834": {"P": [[14.0, 7.0, 7.0], [8.0, 17.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.11407688552151898]}, "1835": {"P": [[14.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 9.0, 17.0]], "dev": [0.13120579236872373]}, "1836": {"P": [[15.0, 7.0, 9.0], [7.0, 15.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.14269923330611878]}, "1837": {"P": [[15.0, 8.0, 9.0], [10.0, 17.0, 9.0], [8.0, 7.0, 16.0]], "dev": [0.14830006917216501]}, "1838": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.11856458576606152]}, "1839": {"P": [[15.0, 6.0, 7.0], [8.0, 16.0, 9.0], [9.0, 9.0, 16.0]], "dev": [0.12398985465110329]}, "1840": {"P": [[16.0, 8.0, 7.0], [8.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.095219853635761215]}, "1841": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.093866899962522968]}, "1842": {"P": [[15.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.11403497696049286]}, "1843": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 7.0], [6.0, 7.0, 15.0]], "dev": [0.13112597256821459]}, "1844": {"P": [[16.0, 8.0, 7.0], [7.0, 14.0, 6.0], [6.0, 8.0, 15.0]], "dev": [0.14550580826787368]}, "1845": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.14258544442828772]}, "1846": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 6.0], [8.0, 9.0, 16.0]], "dev": [0.12704822454824763]}, "1847": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 9.0], [6.0, 7.0, 15.0]], "dev": [0.11402281121101206]}, "1848": {"P": [[15.0, 8.0, 7.0], [9.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.082995673477177012]}, "1849": {"P": [[15.0, 7.0, 7.0], [7.0, 16.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.082025527308763446]}, "1850": {"P": [[15.0, 9.0, 8.0], [7.0, 15.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.11402063360050109]}, "1851": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 9.0], [6.0, 7.0, 14.0]], "dev": [0.13107037918952438]}, "1852": {"P": [[14.0, 6.0, 6.0], [9.0, 15.0, 8.0], [8.0, 8.0, 17.0]], "dev": [0.14613442912864966]}, "1853": {"P": [[15.0, 8.0, 7.0], [9.0, 15.0, 7.0], [7.0, 6.0, 16.0]], "dev": [0.15647448329718103]}, "1854": {"P": [[15.0, 7.0, 8.0], [9.0, 17.0, 10.0], [9.0, 8.0, 16.0]], "dev": [0.13175635639529656]}, "1855": {"P": [[15.0, 8.0, 8.0], [9.0, 16.0, 9.0], [7.0, 7.0, 16.0]], "dev": [0.10486125382785419]}, "1856": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.051411116001307294]}, "1857": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 8.0], [8.0, 9.0, 17.0]], "dev": [0.10476279600291516]}, "1858": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [6.0, 6.0, 14.0]], "dev": [0.12264642201164069]}, "1859": {"P": [[14.0, 6.0, 7.0], [9.0, 16.0, 9.0], [8.0, 9.0, 17.0]], "dev": [0.13888290425819599]}, "1860": {"P": [[15.0, 6.0, 6.0], [7.0, 15.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.15303054475827421]}, "1861": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 6.0], [6.0, 7.0, 15.0]], "dev": [0.1459865328171002]}, "1862": {"P": [[16.0, 7.0, 9.0], [9.0, 16.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.12283220730911815]}, "1863": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.11405491994216724]}, "1864": {"P": [[16.0, 8.0, 8.0], [7.0, 15.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.068492841996308909]}, "1865": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [9.0, 9.0, 17.0]], "dev": [0.1043884439938251]}, "1866": {"P": [[15.0, 9.0, 7.0], [9.0, 17.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.13839577684576615]}, "1867": {"P": [[15.0, 6.0, 7.0], [7.0, 15.0, 9.0], [9.0, 7.0, 16.0]], "dev": [0.15962002980536324]}, "1868": {"P": [[17.0, 8.0, 7.0], [8.0, 15.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.14242223460060149]}, "1869": {"P": [[14.0, 7.0, 7.0], [8.0, 16.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.13103187443091729]}, "1870": {"P": [[15.0, 7.0, 9.0], [8.0, 17.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.14176397181670616]}, "1871": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.093638716333550198]}, "1872": {"P": [[16.0, 8.0, 8.0], [8.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.081771402350033009]}, "1873": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.10404509956007647]}, "1874": {"P": [[16.0, 7.0, 7.0], [7.0, 14.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.12702713404713642]}, "1875": {"P": [[14.0, 7.0, 8.0], [7.0, 15.0, 7.0], [8.0, 7.0, 17.0]], "dev": [0.14240803481805889]}, "1876": {"P": [[16.0, 7.0, 9.0], [6.0, 15.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.13494108066598362]}, "1877": {"P": [[14.0, 6.0, 7.0], [7.0, 16.0, 6.0], [8.0, 7.0, 15.0]], "dev": [0.15007442133173635]}, "1878": {"P": [[15.0, 7.0, 7.0], [9.0, 16.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.11418073423805529]}, "1879": {"P": [[15.0, 8.0, 7.0], [7.0, 16.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.094354619539894838]}, "1880": {"P": [[15.0, 6.0, 8.0], [8.0, 15.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.11420432960939306]}, "1881": {"P": [[16.0, 8.0, 9.0], [9.0, 16.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.10267667116867243]}, "1882": {"P": [[15.0, 7.0, 8.0], [6.0, 16.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.12707439858393091]}, "1883": {"P": [[14.0, 7.0, 7.0], [7.0, 17.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.14241155162799932]}, "1884": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 7.0], [6.0, 6.0, 15.0]], "dev": [0.14241345537454725]}, "1885": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 8.0], [10.0, 9.0, 17.0]], "dev": [0.13779345894018638]}, "1886": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 9.0], [7.0, 6.0, 15.0]], "dev": [0.11428456534940978]}, "1887": {"P": [[16.0, 8.0, 9.0], [7.0, 15.0, 6.0], [7.0, 8.0, 15.0]], "dev": [0.11429930573318055]}, "1888": {"P": [[15.0, 8.0, 9.0], [8.0, 16.0, 8.0], [9.0, 8.0, 17.0]], "dev": [0.11621121047106496]}, "1889": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 7.0], [8.0, 9.0, 17.0]], "dev": [0.13764798584296317]}, "1890": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.099920986508421822]}, "1891": {"P": [[16.0, 7.0, 8.0], [6.0, 15.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.13623023324450928]}, "1892": {"P": [[15.0, 6.0, 7.0], [7.0, 16.0, 7.0], [9.0, 8.0, 15.0]], "dev": [0.13501912902847751]}, "1893": {"P": [[15.0, 7.0, 6.0], [8.0, 15.0, 7.0], [10.0, 10.0, 17.0]], "dev": [0.15174060962907063]}, "1894": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 6.0], [8.0, 9.0, 16.0]], "dev": [0.12307727222739369]}, "1895": {"P": [[16.0, 7.0, 8.0], [8.0, 16.0, 9.0], [9.0, 9.0, 16.0]], "dev": [0.10637493815276648]}, "1896": {"P": [[15.0, 7.0, 8.0], [7.0, 16.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.098122631801540711]}, "1897": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.098093094063356104]}, "1898": {"P": [[15.0, 6.0, 8.0], [7.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.12723725110630324]}, "1899": {"P": [[15.0, 6.0, 6.0], [6.0, 15.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.13662493288387526]}, "1900": {"P": [[15.0, 6.0, 7.0], [8.0, 15.0, 6.0], [7.0, 8.0, 15.0]], "dev": [0.14038098240740213]}, "1901": {"P": [[15.0, 8.0, 8.0], [8.0, 17.0, 10.0], [8.0, 6.0, 15.0]], "dev": [0.15809563470687951]}, "1902": {"P": [[16.0, 7.0, 8.0], [9.0, 17.0, 9.0], [9.0, 8.0, 15.0]], "dev": [0.12368220910728821]}, "1903": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.12131500463320334]}, "1904": {"P": [[16.0, 9.0, 8.0], [9.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.084017492111160885]}, "1905": {"P": [[15.0, 7.0, 8.0], [7.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.08953122190284539]}, "1906": {"P": [[15.0, 7.0, 8.0], [8.0, 15.0, 7.0], [9.0, 8.0, 17.0]], "dev": [0.10781210069905586]}, "1907": {"P": [[14.0, 6.0, 7.0], [8.0, 15.0, 8.0], [7.0, 8.0, 17.0]], "dev": [0.14254497349632897]}, "1908": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 8.0], [9.0, 9.0, 18.0]], "dev": [0.14605125175421099]}, "1909": {"P": [[14.0, 7.0, 6.0], [8.0, 16.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.142564203495782]}, "1910": {"P": [[14.0, 7.0, 6.0], [9.0, 17.0, 8.0], [8.0, 9.0, 16.0]], "dev": [0.1331922678633119]}, "1911": {"P": [[16.0, 9.0, 8.0], [8.0, 15.0, 7.0], [9.0, 9.0, 17.0]], "dev": [0.10509330781602343]}, "1912": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.073875723492201811]}, "1913": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.089848627056621763]}, "1914": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 8.0], [6.0, 7.0, 14.0]], "dev": [0.12748834274271378]}, "1915": {"P": [[16.0, 7.0, 8.0], [7.0, 16.0, 9.0], [7.0, 6.0, 14.0]], "dev": [0.14262919944586214]}, "1916": {"P": [[15.0, 8.0, 9.0], [7.0, 16.0, 7.0], [9.0, 10.0, 17.0]], "dev": [0.14551543550974483]}, "1917": {"P": [[15.0, 6.0, 8.0], [8.0, 15.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.14618658881866692]}, "1918": {"P": [[16.0, 9.0, 9.0], [9.0, 16.0, 9.0], [7.0, 7.0, 16.0]], "dev": [0.11390847721569473]}, "1919": {"P": [[15.0, 8.0, 8.0], [7.0, 15.0, 6.0], [9.0, 9.0, 17.0]], "dev": [0.11661309507602147]}, "1920": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.058297850442352889]}, "1921": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.097530115433932502]}, "1922": {"P": [[15.0, 8.0, 7.0], [8.0, 17.0, 9.0], [9.0, 9.0, 16.0]], "dev": [0.11363036499689201]}, "1923": {"P": [[15.0, 7.0, 6.0], [8.0, 17.0, 8.0], [9.0, 9.0, 15.0]], "dev": [0.14739960728546508]}, "1924": {"P": [[15.0, 6.0, 8.0], [9.0, 16.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.14626954713834178]}, "1925": {"P": [[14.0, 6.0, 7.0], [7.0, 15.0, 6.0], [7.0, 8.0, 16.0]], "dev": [0.13802129125247245]}, "1926": {"P": [[16.0, 8.0, 9.0], [8.0, 15.0, 7.0], [6.0, 6.0, 15.0]], "dev": [0.12773248190624084]}, "1927": {"P": [[15.0, 8.0, 7.0], [7.0, 16.0, 8.0], [7.0, 7.0, 15.0]], "dev": [0.090471609714900508]}, "1928": {"P": [[15.0, 7.0, 7.0], [9.0, 16.0, 8.0], [8.0, 8.0, 16.0]], "dev": [0.073644764739186241]}, "1929": {"P": [[16.0, 8.0, 9.0], [9.0, 17.0, 9.0], [7.0, 8.0, 15.0]], "dev": [0.10379081077032115]}, "1930": {"P": [[14.0, 6.0, 6.0], [9.0, 16.0, 8.0], [8.0, 7.0, 16.0]], "dev": [0.12782420297791233]}, "1931": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 7.0], [7.0, 6.0, 14.0]], "dev": [0.14636666216867361]}, "1932": {"P": [[16.0, 7.0, 9.0], [10.0, 17.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.14451018390813819]}, "1933": {"P": [[14.0, 6.0, 7.0], [9.0, 17.0, 10.0], [8.0, 7.0, 16.0]], "dev": [0.14716126727105827]}, "1934": {"P": [[17.0, 9.0, 10.0], [8.0, 15.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.12149588941118421]}, "1935": {"P": [[15.0, 7.0, 7.0], [9.0, 16.0, 8.0], [9.0, 10.0, 17.0]], "dev": [0.12143413254881313]}, "1936": {"P": [[16.0, 7.0, 8.0], [9.0, 16.0, 9.0], [7.0, 7.0, 15.0]], "dev": [0.097317874796802831]}, "1937": {"P": [[15.0, 6.0, 8.0], [9.0, 17.0, 9.0], [7.0, 8.0, 15.0]], "dev": [0.13257800219957547]}, "1938": {"P": [[15.0, 7.0, 8.0], [7.0, 17.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.12055156071180038]}, "1939": {"P": [[15.0, 7.0, 8.0], [6.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.1319446419824192]}, "1940": {"P": [[14.0, 6.0, 7.0], [8.0, 17.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.14651194679901758]}, "1941": {"P": [[17.0, 8.0, 9.0], [7.0, 14.0, 8.0], [8.0, 9.0, 17.0]], "dev": [0.14042454118098596]}, "1942": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 9.0], [8.0, 6.0, 16.0]], "dev": [0.13249235913246182]}, "1943": {"P": [[15.0, 7.0, 8.0], [8.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.097254706603420032]}, "1944": {"P": [[16.0, 8.0, 7.0], [8.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.097247521741239115]}, "1945": {"P": [[16.0, 9.0, 8.0], [8.0, 17.0, 9.0], [9.0, 7.0, 15.0]], "dev": [0.13654616347602272]}, "1946": {"P": [[15.0, 9.0, 8.0], [8.0, 16.0, 7.0], [7.0, 7.0, 16.0]], "dev": [0.12044305945139644]}, "1947": {"P": [[15.0, 9.0, 8.0], [8.0, 17.0, 7.0], [7.0, 7.0, 15.0]], "dev": [0.13617587223111441]}, "1948": {"P": [[16.0, 7.0, 8.0], [9.0, 16.0, 7.0], [6.0, 7.0, 14.0]], "dev": [0.14317629877433713]}, "1949": {"P": [[16.0, 8.0, 7.0], [6.0, 15.0, 7.0], [9.0, 7.0, 15.0]], "dev": [0.14319772522049815]}, "1950": {"P": [[15.0, 7.0, 7.0], [8.0, 16.0, 9.0], [9.0, 7.0, 16.0]], "dev": [0.11613187655408751]}, "1951": {"P": [[16.0, 9.0, 9.0], [9.0, 17.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.11193684066930289]}, "1952": {"P": [[16.0, 8.0, 8.0], [8.0, 16.0, 9.0], [8.0, 6.0, 15.0]], "dev": [0.11611368210143121]}, "1953": {"P": [[15.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 16.0]], "dev": [0.091872239484211624]}, "1954": {"P": [[15.0, 6.0, 7.0], [7.0, 16.0, 8.0], [7.0, 8.0, 15.0]], "dev": [0.11612069949000342]}, "1955": {"P": [[16.0, 9.0, 7.0], [9.0, 16.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.13606313057003214]}, "1956": {"P": [[14.0, 7.0, 6.0], [8.0, 17.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.14682549471496872]}, "1957": {"P": [[15.0, 7.0, 7.0], [8.0, 15.0, 6.0], [7.0, 9.0, 16.0]], "dev": [0.14337904301878654]}, "1958": {"P": [[15.0, 8.0, 9.0], [7.0, 16.0, 7.0], [9.0, 9.0, 17.0]], "dev": [0.12424023675512165]}, "1959": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.10676628497170512]}, "1960": {"P": [[16.0, 8.0, 7.0], [8.0, 16.0, 9.0], [8.0, 9.0, 16.0]], "dev": [0.096832000105598656]}, "1961": {"P": [[15.0, 7.0, 7.0], [7.0, 15.0, 8.0], [8.0, 9.0, 17.0]], "dev": [0.10223519772757954]}, "1962": {"P": [[15.0, 8.0, 8.0], [7.0, 16.0, 7.0], [7.0, 6.0, 15.0]], "dev": [0.11644024253892055]}, "1963": {"P": [[17.0, 8.0, 9.0], [6.0, 15.0, 8.0], [8.0, 7.0, 15.0]], "dev": [0.13597140630634008]}, "1964": {"P": [[15.0, 6.0, 7.0], [9.0, 16.0, 7.0], [7.0, 8.0, 15.0]], "dev": [0.13637717981561451]}, "1965": {"P": [[14.0, 7.0, 8.0], [7.0, 16.0, 7.0], [8.0, 9.0, 17.0]], "dev": [0.13595172458306493]}, "1966": {"P": [[16.0, 8.0, 7.0], [10.0, 16.0, 9.0], [9.0, 9.0, 17.0]], "dev": [0.13494826491191378]}, "1967": {"P": [[16.0, 8.0, 9.0], [9.0, 17.0, 9.0], [9.0, 8.0, 16.0]], "dev": [0.10080508499413376]}, "1968": {"P": [[16.0, 8.0, 8.0], [8.0, 16.0, 7.0], [8.0, 7.0, 15.0]], "dev": [0.08025761459217759]}, "1969": {"P": [[15.0, 7.0, 7.0], [8.0, 17.0, 8.0], [8.0, 8.0, 15.0]], "dev": [0.091913557265084711]}, "1970": {"P": [[16.0, 7.0, 8.0], [8.0, 16.0, 9.0], [6.0, 8.0, 15.0]], "dev": [0.1283225683497265]}, "1971": {"P": [[16.0, 9.0, 7.0], [7.0, 15.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.13590040317311475]}, "1972": {"P": [[15.0, 7.0, 8.0], [9.0, 15.0, 8.0], [8.0, 9.0, 18.0]], "dev": [0.15256390023185223]}, "1973": {"P": [[17.0, 9.0, 10.0], [9.0, 16.0, 8.0], [7.0, 6.0, 15.0]], "dev": [0.13876911023970451]}, "1974": {"P": [[16.0, 7.0, 8.0], [9.0, 17.0, 8.0], [7.0, 7.0, 14.0]], "dev": [0.12024909613777758]}, "1975": {"P": [[16.0, 9.0, 8.0], [8.0, 16.0, 9.0], [7.0, 8.0, 16.0]], "dev": [0.096054971490228166]}, "1976": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.080361484271497044]}, "1977": {"P": [[15.0, 7.0, 8.0], [8.0, 17.0, 9.0], [7.0, 7.0, 15.0]], "dev": [0.10227242671990908]}, "1978": {"P": [[15.0, 7.0, 7.0], [8.0, 17.0, 8.0], [10.0, 9.0, 16.0]], "dev": [0.13112931639285605]}, "1979": {"P": [[15.0, 7.0, 6.0], [6.0, 15.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.13314964680875455]}, "1980": {"P": [[14.0, 6.0, 6.0], [8.0, 16.0, 7.0], [9.0, 7.0, 16.0]], "dev": [0.1474230840098972]}, "1981": {"P": [[16.0, 9.0, 9.0], [6.0, 16.0, 7.0], [9.0, 9.0, 16.0]], "dev": [0.13840945395359219]}, "1982": {"P": [[15.0, 7.0, 8.0], [9.0, 16.0, 7.0], [7.0, 9.0, 16.0]], "dev": [0.13946166960553427]}, "1983": {"P": [[16.0, 7.0, 7.0], [7.0, 15.0, 8.0], [9.0, 8.0, 16.0]], "dev": [0.10231351182809734]}, "1984": {"P": [[16.0, 8.0, 8.0], [7.0, 15.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.049901154328415721]}, "1985": {"P": [[16.0, 9.0, 8.0], [7.0, 15.0, 7.0], [7.0, 8.0, 16.0]], "dev": [0.092072164175422744]}, "1986": {"P": [[15.0, 7.0, 8.0], [9.0, 17.0, 10.0], [7.0, 8.0, 16.0]], "dev": [0.1229262702081466]}, "1987": {"P": [[17.0, 9.0, 7.0], [9.0, 16.0, 9.0], [8.0, 7.0, 15.0]], "dev": [0.13815371659124562]}, "1988": {"P": [[16.0, 7.0, 8.0], [9.0, 16.0, 7.0], [6.0, 6.0, 14.0]], "dev": [0.14765482438929889]}, "1989": {"P": [[16.0, 9.0, 8.0], [7.0, 15.0, 6.0], [10.0, 9.0, 17.0]], "dev": [0.13807112291227722]}, "1990": {"P": [[15.0, 8.0, 8.0], [9.0, 17.0, 10.0], [7.0, 7.0, 16.0]], "dev": [0.12276230434484722]}, "1991": {"P": [[15.0, 8.0, 8.0], [7.0, 15.0, 6.0], [8.0, 9.0, 17.0]], "dev": [0.12026774084862241]}, "1992": {"P": [[16.0, 7.0, 8.0], [8.0, 15.0, 7.0], [8.0, 8.0, 16.0]], "dev": [0.080666601640726948]}, "1993": {"P": [[15.0, 8.0, 9.0], [9.0, 17.0, 8.0], [7.0, 8.0, 16.0]], "dev": [0.12264318100112841]}, "1994": {"P": [[15.0, 7.0, 6.0], [7.0, 16.0, 8.0], [9.0, 9.0, 16.0]], "dev": [0.12028139239482878]}, "1995": {"P": [[15.0, 8.0, 9.0], [8.0, 17.0, 8.0], [6.0, 7.0, 15.0]], "dev": [0.13580869788713898]}, "1996": {"P": [[15.0, 6.0, 7.0], [6.0, 16.0, 7.0], [8.0, 8.0, 15.0]], "dev": [0.14450476785690791]}, "1997": {"P": [[15.0, 7.0, 6.0], [9.0, 16.0, 7.0], [8.0, 9.0, 16.0]], "dev": [0.13580909239838954]}, "1998": {"P": [[15.0, 7.0, 6.0], [7.0, 15.0, 8.0], [8.0, 7.0, 16.0]], "dev": [0.11811771023927294]}, "1999": {"P": [[16.0, 8.0, 9.0], [7.0, 15.0, 7.0], [7.0, 8.0, 16.0]], "dev": [0.092303745185500399]}, "2000": {"P": [[15.0, 8.0, 7.0], [8.0, 16.0, 9.0], [9.0, 8.0, 17.0]], "dev": [0.10491840817538785]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-bcc2sc.json000066400000000000000000006051341316323560300271620ustar00rootroot00000000000000{"1": {"P": [[0.0, 1.0, 1.0], [0.0, -1.0, 0.0], [1.0, 1.0, 0.0]], "dev": [1.032350542905937]}, "2": {"P": [[0.0, 1.0, 1.0], [1.0, 0.0, 1.0], [1.0, 1.0, 0.0]], "dev": [0.0]}, "3": {"P": [[-1.0, 1.0, 1.0], [1.0, 0.0, 1.0], [1.0, 1.0, 0.0]], "dev": [0.7140484448537967]}, "4": {"P": [[0.0, 1.0, 1.0], [2.0, 0.0, 2.0], [1.0, 1.0, 0.0]], "dev": [0.6558650332285002]}, "5": {"P": [[1.0, 2.0, 2.0], [1.0, -1.0, 1.0], [1.0, 1.0, 0.0]], "dev": [0.7964248261755531]}, "6": {"P": [[0.0, 1.0, 1.0], [2.0, 1.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.69682129761158473]}, "7": {"P": [[-1.0, 1.0, 1.0], [1.0, 0.0, 2.0], [2.0, 1.0, 0.0]], "dev": [0.80692824866440227]}, "8": {"P": [[0.0, 1.0, 1.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.52158136225720619]}, "9": {"P": [[-1.0, 1.0, 1.0], [1.0, 0.0, 2.0], [2.0, 2.0, 1.0]], "dev": [0.75855445837702085]}, "10": {"P": [[-1.0, 1.0, 1.0], [2.0, 0.0, 2.0], [1.0, 2.0, 0.0]], "dev": [0.63318150814753915]}, "11": {"P": [[-1.0, 1.0, 1.0], [2.0, -1.0, 2.0], [1.0, 2.0, 0.0]], "dev": [0.83656715101207157]}, "12": {"P": [[-1.0, 1.0, 1.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.44960105187907196]}, "13": {"P": [[-1.0, 1.0, 1.0], [1.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.78931539100970827]}, "14": {"P": [[-1.0, 1.0, 1.0], [2.0, -1.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.64508055390133745]}, "15": {"P": [[-1.0, 1.0, 1.0], [2.0, -1.0, 2.0], [2.0, 2.0, -1.0]], "dev": [0.77444057046929593]}, "16": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [3.8459253727671276e-16]}, "17": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.72912078377298517]}, "18": {"P": [[-1.0, 2.0, 1.0], [2.0, -1.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.62481881561142394]}, "19": {"P": [[0.0, 2.0, 3.0], [1.0, 0.0, 2.0], [3.0, 3.0, 1.0]], "dev": [0.69614819596258259]}, "20": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.37911170398764515]}, "21": {"P": [[-1.0, 1.0, 1.0], [2.0, 0.0, 3.0], [2.0, 3.0, 0.0]], "dev": [0.67244984571305988]}, "22": {"P": [[-1.0, 2.0, 1.0], [2.0, 0.0, 3.0], [2.0, 2.0, 0.0]], "dev": [0.58220190688872997]}, "23": {"P": [[-1.0, 2.0, 2.0], [3.0, 1.0, 3.0], [3.0, 2.0, 1.0]], "dev": [0.65473695912219154]}, "24": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 2.0], [3.0, 3.0, 0.0]], "dev": [0.35818119355108746]}, "25": {"P": [[-1.0, 1.0, 2.0], [2.0, -1.0, 2.0], [2.0, 3.0, 1.0]], "dev": [0.71297568292169977]}, "26": {"P": [[0.0, 2.0, 2.0], [2.0, -1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.4595574496277785]}, "27": {"P": [[-1.0, 2.0, 2.0], [2.0, -1.0, 2.0], [2.0, 2.0, -1.0]], "dev": [0.5215813622572063]}, "28": {"P": [[1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.512249579661882]}, "29": {"P": [[-1.0, 1.0, 2.0], [3.0, 1.0, 3.0], [2.0, 3.0, 0.0]], "dev": [0.60823795013887438]}, "30": {"P": [[-1.0, 2.0, 2.0], [3.0, 0.0, 3.0], [2.0, 2.0, 0.0]], "dev": [0.40617389826081318]}, "31": {"P": [[-1.0, 1.0, 2.0], [3.0, 0.0, 2.0], [2.0, 3.0, -1.0]], "dev": [0.69469327897645361]}, "32": {"P": [[1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.4862316450681195]}, "33": {"P": [[-1.0, 2.0, 2.0], [3.0, 1.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.48208941416108547]}, "34": {"P": [[1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [3.0, 4.0, 1.0]], "dev": [0.57605622096649622]}, "35": {"P": [[0.0, 3.0, 2.0], [3.0, 1.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.47608651912669581]}, "36": {"P": [[0.0, 2.0, 2.0], [3.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.31302674605959679]}, "37": {"P": [[-1.0, 2.0, 2.0], [2.0, -1.0, 3.0], [2.0, 3.0, 0.0]], "dev": [0.55673608569462896]}, "38": {"P": [[-1.0, 2.0, 2.0], [2.0, -1.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.55162730565471874]}, "39": {"P": [[-1.0, 2.0, 2.0], [2.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.40161403708226534]}, "40": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.54755782716728441]}, "41": {"P": [[-1.0, 2.0, 2.0], [3.0, 1.0, 3.0], [3.0, 4.0, 1.0]], "dev": [0.53966071097447577]}, "42": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.47025996632408351]}, "43": {"P": [[-1.0, 2.0, 2.0], [3.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.53037475044061733]}, "44": {"P": [[-1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.52567348362618616]}, "45": {"P": [[0.0, 3.0, 3.0], [2.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.28928706032693197]}, "46": {"P": [[-1.0, 3.0, 3.0], [2.0, -1.0, 2.0], [3.0, 3.0, 1.0]], "dev": [0.51763082515952052]}, "47": {"P": [[-1.0, 2.0, 3.0], [3.0, -1.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.55807381257519406]}, "48": {"P": [[0.0, 3.0, 3.0], [2.0, -1.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.44861606187353437]}, "49": {"P": [[1.0, 3.0, 3.0], [4.0, 1.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.5473732050373521]}, "50": {"P": [[0.0, 2.0, 3.0], [4.0, 0.0, 3.0], [3.0, 2.0, -1.0]], "dev": [0.54261176088901075]}, "51": {"P": [[0.0, 3.0, 3.0], [3.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.4174328281440649]}, "52": {"P": [[0.0, 2.0, 3.0], [2.0, -1.0, 2.0], [4.0, 4.0, 0.0]], "dev": [0.5341686863389884]}, "53": {"P": [[-1.0, 2.0, 2.0], [2.0, -1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.53045087895853327]}, "54": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.0]}, "55": {"P": [[-1.0, 3.0, 2.0], [3.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.52393896050258937]}, "56": {"P": [[1.0, 4.0, 4.0], [2.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.49038670035453913]}, "57": {"P": [[-1.0, 2.0, 2.0], [4.0, 0.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.48606479955381465]}, "58": {"P": [[-1.0, 2.0, 2.0], [3.0, 0.0, 4.0], [3.0, 4.0, 1.0]], "dev": [0.51625288392515012]}, "59": {"P": [[0.0, 2.0, 3.0], [4.0, 1.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.47832300568778352]}, "60": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 3.0], [3.0, 3.0, -1.0]], "dev": [0.41679927179100512]}, "61": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 4.0], [2.0, 3.0, -1.0]], "dev": [0.52318313465271893]}, "62": {"P": [[-1.0, 2.0, 2.0], [3.0, 0.0, 4.0], [4.0, 3.0, 0.0]], "dev": [0.46877845301901488]}, "63": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.25857580762886767]}, "64": {"P": [[0.0, 2.0, 3.0], [4.0, 0.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.46365963634195567]}, "65": {"P": [[-1.0, 3.0, 3.0], [4.0, 1.0, 3.0], [3.0, 4.0, 1.0]], "dev": [0.51188317628285485]}, "66": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.4030926614817204]}, "67": {"P": [[-1.0, 2.0, 3.0], [3.0, -1.0, 3.0], [4.0, 3.0, 1.0]], "dev": [0.50749055913471885]}, "68": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.4571177762325157]}, "69": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.45405396691728767]}, "70": {"P": [[-1.0, 3.0, 2.0], [3.0, 1.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.50227483516244675]}, "71": {"P": [[-1.0, 2.0, 3.0], [4.0, 0.0, 3.0], [3.0, 3.0, -1.0]], "dev": [0.448548896762966]}, "72": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.24782696262606232]}, "73": {"P": [[-1.0, 2.0, 2.0], [4.0, -1.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.57201262662863128]}, "74": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [4.0, 2.0, 0.0]], "dev": [0.53403229513998063]}, "75": {"P": [[0.0, 3.0, 3.0], [4.0, 0.0, 3.0], [3.0, 3.0, -1.0]], "dev": [0.32277738711857357]}, "76": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 4.0], [2.0, 3.0, -1.0]], "dev": [0.43807456175447013]}, "77": {"P": [[1.0, 5.0, 4.0], [4.0, 1.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.51683560425487118]}, "78": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [2.0, 3.0, -1.0]], "dev": [0.43505688406137094]}, "79": {"P": [[1.0, 4.0, 4.0], [3.0, -1.0, 3.0], [3.0, 2.0, -1.0]], "dev": [0.43377389407853678]}, "80": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 4.0], [4.0, 3.0, 0.0]], "dev": [0.36040497745198286]}, "81": {"P": [[0.0, 3.0, 4.0], [3.0, 0.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.35818119355108735]}, "82": {"P": [[-1.0, 3.0, 2.0], [3.0, -1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.50297627425223368]}, "83": {"P": [[-1.0, 3.0, 2.0], [3.0, -1.0, 3.0], [5.0, 4.0, 1.0]], "dev": [0.50063553587882026]}, "84": {"P": [[0.0, 3.0, 3.0], [4.0, 0.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.28793269258514609]}, "85": {"P": [[-1.0, 4.0, 3.0], [3.0, -1.0, 3.0], [4.0, 3.0, 1.0]], "dev": [0.49634889448063418]}, "86": {"P": [[-1.0, 4.0, 3.0], [3.0, 0.0, 4.0], [3.0, 2.0, -1.0]], "dev": [0.49439452141028267]}, "87": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [4.0, 3.0, 0.0]], "dev": [0.34834285888977989]}, "88": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.34723836071508318]}, "89": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 4.0], [2.0, 3.0, -1.0]], "dev": [0.48923894478379409]}, "90": {"P": [[-1.0, 3.0, 4.0], [3.0, 0.0, 3.0], [4.0, 3.0, -1.0]], "dev": [0.46220804703547019]}, "91": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.34474181252891789]}, "92": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 4.0], [3.0, 3.0, -1.0]], "dev": [0.41279612576006203]}, "93": {"P": [[0.0, 3.0, 3.0], [3.0, -1.0, 3.0], [4.0, 4.0, -1.0]], "dev": [0.41074794503358258]}, "94": {"P": [[-2.0, 2.0, 3.0], [3.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.52102824922616153]}, "95": {"P": [[-1.0, 3.0, 3.0], [2.0, -1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.51984042667694208]}, "96": {"P": [[0.0, 3.0, 3.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.22519855634844332]}, "97": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.40373888242852762]}, "98": {"P": [[-1.0, 2.0, 3.0], [4.0, 0.0, 5.0], [3.0, 4.0, 0.0]], "dev": [0.48631047945691985]}, "99": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.40089930132051532]}, "100": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.29330425732117565]}, "101": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [3.0, 5.0, 0.0]], "dev": [0.48163451464031998]}, "102": {"P": [[-1.0, 3.0, 4.0], [3.0, 0.0, 3.0], [4.0, 5.0, 1.0]], "dev": [0.44077806206069592]}, "103": {"P": [[-1.0, 3.0, 3.0], [4.0, 1.0, 5.0], [4.0, 4.0, 1.0]], "dev": [0.39642728537872213]}, "104": {"P": [[0.0, 3.0, 4.0], [5.0, 1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.39554379262308298]}, "105": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.39525082018952878]}, "106": {"P": [[-1.0, 2.0, 3.0], [4.0, 0.0, 5.0], [3.0, 4.0, -1.0]], "dev": [0.51100979229771837]}, "107": {"P": [[0.0, 4.0, 3.0], [5.0, 1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.43441493386872343]}, "108": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.34243535049899759]}, "109": {"P": [[-1.0, 3.0, 3.0], [5.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.38870975089511578]}, "110": {"P": [[-1.0, 3.0, 2.0], [3.0, -1.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.5037078765370514]}, "111": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.38598669470596492]}, "112": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.21344184286589657]}, "113": {"P": [[-1.0, 3.0, 3.0], [4.0, 1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.38360515277175539]}, "114": {"P": [[-2.0, 3.0, 3.0], [4.0, 1.0, 5.0], [4.0, 3.0, 0.0]], "dev": [0.49760526519916215]}, "115": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.42325145245484203]}, "116": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.33393756046264683]}, "117": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.42122047393057693]}, "118": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 3.0], [5.0, 5.0, 1.0]], "dev": [0.48291503904867566]}, "119": {"P": [[-1.0, 4.0, 4.0], [3.0, -1.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.40724380804790838]}, "120": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.36320000251325468]}, "121": {"P": [[-1.0, 3.0, 3.0], [5.0, 0.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.4040962719680144]}, "122": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 5.0], [3.0, 4.0, 0.0]], "dev": [0.47607278662484837]}, "123": {"P": [[1.0, 5.0, 4.0], [5.0, 1.0, 5.0], [3.0, 4.0, 0.0]], "dev": [0.40123877103726246]}, "124": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.30999195680759317]}, "125": {"P": [[-1.0, 3.0, 3.0], [5.0, 0.0, 5.0], [3.0, 4.0, 0.0]], "dev": [0.39865910936584875]}, "126": {"P": [[-1.0, 4.0, 3.0], [3.0, -1.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.43538720722619961]}, "127": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.39634542531353778]}, "128": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [3.8459253727671276e-16]}, "129": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.39428618353303096]}, "130": {"P": [[-1.0, 4.0, 3.0], [5.0, 1.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.43087315051549457]}, "131": {"P": [[-1.0, 3.0, 3.0], [5.0, 1.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.39247016930529566]}, "132": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.39164995461582292]}, "133": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.39088648467811771]}, "134": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 3.0], [4.0, 5.0, -1.0]], "dev": [0.47358559714256432]}, "135": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.36377017476681889]}, "136": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.34820873962064336]}, "137": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [6.0, 5.0, 1.0]], "dev": [0.46906905540789834]}, "138": {"P": [[-1.0, 4.0, 4.0], [3.0, 0.0, 3.0], [5.0, 6.0, 1.0]], "dev": [0.46766803054118716]}, "139": {"P": [[0.0, 3.0, 4.0], [5.0, 1.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.35876982100882771]}, "140": {"P": [[0.0, 3.0, 4.0], [5.0, 0.0, 5.0], [4.0, 4.0, 0.0]], "dev": [0.31383052305930254]}, "141": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 5.0], [3.0, 4.0, -1.0]], "dev": [0.39557658129779094]}, "142": {"P": [[1.0, 6.0, 4.0], [3.0, 0.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.49307468160815621]}, "143": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.35470920336912404]}, "144": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.19628395812902488]}, "145": {"P": [[-1.0, 3.0, 3.0], [4.0, 0.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.35300941452900159]}, "146": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.45820162514795609]}, "147": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.38994995102145852]}, "148": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 5.0], [4.0, 4.0, 0.0]], "dev": [0.30777887612981142]}, "149": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.3884584989444595]}, "150": {"P": [[-1.0, 3.0, 4.0], [5.0, 0.0, 5.0], [4.0, 3.0, -1.0]], "dev": [0.39015392996966153]}, "151": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [6.0, 5.0, 1.0]], "dev": [0.42330517995332195]}, "152": {"P": [[-1.0, 3.0, 4.0], [3.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.38655539050742016]}, "153": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.38600646512585046]}, "154": {"P": [[-2.0, 4.0, 3.0], [3.0, -1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.48088143815509526]}, "155": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 5.0], [3.0, 3.0, -1.0]], "dev": [0.34640946204196871]}, "156": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.34538375928413911]}, "157": {"P": [[-1.0, 3.0, 3.0], [4.0, -1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.4161254256610662]}, "158": {"P": [[-1.0, 3.0, 3.0], [5.0, 0.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.41507822326375415]}, "159": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.34259158226187425]}, "160": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.18974706743141442]}, "161": {"P": [[-1.0, 3.0, 4.0], [5.0, 2.0, 6.0], [4.0, 4.0, -1.0]], "dev": [0.47278824771766254]}, "162": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 5.0], [4.0, 5.0, -1.0]], "dev": [0.44256976936456793]}, "163": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 6.0], [4.0, 4.0, 1.0]], "dev": [0.41044004559991587]}, "164": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.24865936997968266]}, "165": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.33821886423394365]}, "166": {"P": [[-1.0, 4.0, 4.0], [3.0, -1.0, 3.0], [5.0, 5.0, -1.0]], "dev": [0.43236817736570493]}, "167": {"P": [[-1.0, 3.0, 3.0], [5.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.4310783383008116]}, "168": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.33659684042543198]}, "169": {"P": [[0.0, 4.0, 5.0], [5.0, 1.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.33613476239671419]}, "170": {"P": [[-1.0, 4.0, 3.0], [4.0, 1.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.37224375856335795]}, "171": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.39491640730617766]}, "172": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 4.0], [5.0, 5.0, -1.0]], "dev": [0.39384717740911829]}, "173": {"P": [[-2.0, 3.0, 3.0], [5.0, 1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.4038872749887521]}, "174": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [4.0, 3.0, -1.0]], "dev": [0.39181781170627045]}, "175": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.27688052158246534]}, "176": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.27609446269306764]}, "177": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 5.0], [4.0, 5.0, -1.0]], "dev": [0.38903845345112742]}, "178": {"P": [[-2.0, 3.0, 3.0], [4.0, -1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.44816264338441042]}, "179": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.38735586291654983]}, "180": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.22326002611174678]}, "181": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 5.0], [4.0, 5.0, -1.0]], "dev": [0.38580470747897666]}, "182": {"P": [[-1.0, 4.0, 5.0], [5.0, 2.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.4446485581385059]}, "183": {"P": [[-1.0, 3.0, 4.0], [5.0, 0.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.38438094254511013]}, "184": {"P": [[1.0, 5.0, 5.0], [5.0, 1.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.27135585226407838]}, "185": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.27094753826541879]}, "186": {"P": [[-1.0, 3.0, 4.0], [5.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.38247548751843075]}, "187": {"P": [[-1.0, 3.0, 4.0], [5.0, -1.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.44089718262537841]}, "188": {"P": [[-2.0, 4.0, 3.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.41184390373342267]}, "189": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.26969482584527171]}, "190": {"P": [[0.0, 5.0, 5.0], [6.0, 1.0, 5.0], [5.0, 4.0, 1.0]], "dev": [0.36004570361518518]}, "191": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 3.0], [6.0, 5.0, 0.0]], "dev": [0.39100187818695847]}, "192": {"P": [[1.0, 5.0, 6.0], [5.0, 1.0, 6.0], [4.0, 4.0, 0.0]], "dev": [0.35818119355108746]}, "193": {"P": [[-2.0, 4.0, 3.0], [5.0, 1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.4091876255073495]}, "194": {"P": [[0.0, 5.0, 6.0], [4.0, -1.0, 4.0], [3.0, 4.0, -1.0]], "dev": [0.38824579084332933]}, "195": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.32071981993437904]}, "196": {"P": [[1.0, 6.0, 5.0], [5.0, 1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.31996510055730426]}, "197": {"P": [[0.0, 5.0, 4.0], [5.0, -1.0, 4.0], [3.0, 5.0, -1.0]], "dev": [0.44236587705885982]}, "198": {"P": [[-1.0, 4.0, 3.0], [4.0, -1.0, 5.0], [5.0, 4.0, -1.0]], "dev": [0.41420626902219487]}, "199": {"P": [[-1.0, 4.0, 4.0], [3.0, -1.0, 5.0], [5.0, 4.0, -1.0]], "dev": [0.44067840067083747]}, "200": {"P": [[0.0, 4.0, 4.0], [5.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.17615759448618637]}, "201": {"P": [[0.0, 4.0, 5.0], [6.0, 1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.31666342228945821]}, "202": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.38213184862194444]}, "203": {"P": [[-1.0, 4.0, 5.0], [4.0, -2.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.43759563480348401]}, "204": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.31504478799537905]}, "205": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.23085039406888205]}, "206": {"P": [[-1.0, 3.0, 4.0], [6.0, 1.0, 6.0], [4.0, 5.0, 0.0]], "dev": [0.37970395072610807]}, "207": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 5.0], [5.0, 5.0, 2.0]], "dev": [0.43488471516166721]}, "208": {"P": [[0.0, 4.0, 4.0], [6.0, 1.0, 5.0], [4.0, 5.0, -1.0]], "dev": [0.34750122299161301]}, "209": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.31291485582207995]}, "210": {"P": [[0.0, 4.0, 5.0], [6.0, 1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.31257032576685922]}, "211": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.40718042518320968]}, "212": {"P": [[-1.0, 5.0, 6.0], [4.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.40628266845797489]}, "213": {"P": [[-1.0, 5.0, 4.0], [3.0, -1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.43147094845964551]}, "214": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [4.0, 6.0, 0.0]], "dev": [0.37599199709697884]}, "215": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [5.0, 5.0, -1.0]], "dev": [0.31088829663096701]}, "216": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.3101730396530693]}, "217": {"P": [[-1.0, 3.0, 4.0], [5.0, 0.0, 6.0], [4.0, 5.0, -1.0]], "dev": [0.40214339615763639]}, "218": {"P": [[1.0, 5.0, 5.0], [5.0, -1.0, 5.0], [5.0, 6.0, 2.0]], "dev": [0.42780941040051829]}, "219": {"P": [[0.0, 5.0, 4.0], [6.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.3417982365834088]}, "220": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 5.0], [5.0, 4.0, -1.0]], "dev": [0.26986447088802035]}, "221": {"P": [[0.0, 5.0, 4.0], [5.0, -1.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.30699852144232509]}, "222": {"P": [[0.0, 4.0, 5.0], [6.0, 0.0, 4.0], [6.0, 5.0, 1.0]], "dev": [0.39856127593582941]}, "223": {"P": [[-1.0, 4.0, 3.0], [4.0, -1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.39790873762050455]}, "224": {"P": [[0.0, 5.0, 4.0], [6.0, 1.0, 6.0], [4.0, 5.0, 0.0]], "dev": [0.30540389065621909]}, "225": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 5.0], [4.0, 4.0, -1.0]], "dev": [0.1691495001937563]}, "226": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.30446476725355359]}, "227": {"P": [[-2.0, 4.0, 3.0], [5.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.4216059433514725]}, "228": {"P": [[-1.0, 5.0, 4.0], [6.0, 2.0, 6.0], [5.0, 5.0, 1.0]], "dev": [0.39495107764147708]}, "229": {"P": [[1.0, 5.0, 5.0], [5.0, -1.0, 4.0], [6.0, 5.0, 1.0]], "dev": [0.33638768527497781]}, "230": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.26568530524778294]}, "231": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 6.0], [4.0, 5.0, -1.0]], "dev": [0.33557136742930804]}, "232": {"P": [[0.0, 4.0, 4.0], [6.0, 1.0, 5.0], [7.0, 6.0, 1.0]], "dev": [0.41240831724578958]}, "233": {"P": [[-2.0, 3.0, 4.0], [5.0, -1.0, 4.0], [5.0, 5.0, -1.0]], "dev": [0.43628506707917958]}, "234": {"P": [[-1.0, 5.0, 4.0], [5.0, 1.0, 6.0], [4.0, 4.0, -1.0]], "dev": [0.33450236082677171]}, "235": {"P": [[1.0, 5.0, 6.0], [4.0, -1.0, 4.0], [6.0, 5.0, 1.0]], "dev": [0.33418637128743567]}, "236": {"P": [[0.0, 4.0, 5.0], [4.0, 0.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.38289936164452215]}, "237": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 5.0], [7.0, 5.0, 0.0]], "dev": [0.43300250500605736]}, "238": {"P": [[0.0, 5.0, 6.0], [3.0, -1.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.3814277263951108]}, "239": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.32207205062005279]}, "240": {"P": [[-1.0, 5.0, 4.0], [5.0, -1.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.28769804741088612]}, "241": {"P": [[1.0, 5.0, 5.0], [6.0, 1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.32082390913044734]}, "242": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.37871503501317744]}, "243": {"P": [[-1.0, 5.0, 5.0], [5.0, 2.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.42861615137016462]}, "244": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 6.0], [5.0, 4.0, 0.0]], "dev": [0.31910971483548989]}, "245": {"P": [[-1.0, 5.0, 5.0], [4.0, -1.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.24688164045536379]}, "246": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.31806961638315473]}, "247": {"P": [[-2.0, 5.0, 5.0], [4.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.42603208057536052]}, "248": {"P": [[-1.0, 5.0, 4.0], [6.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.34736991832960495]}, "249": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.31665899739690334]}, "250": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [3.8459253727671276e-16]}, "251": {"P": [[-1.0, 5.0, 4.0], [4.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.31581564889671582]}, "252": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 6.0], [4.0, 5.0, -1.0]], "dev": [0.34552184349244408]}, "253": {"P": [[1.0, 4.0, 6.0], [4.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.42263635691150853]}, "254": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.31469175541213329]}, "255": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.31435387082309019]}, "256": {"P": [[-1.0, 4.0, 5.0], [6.0, 1.0, 6.0], [4.0, 5.0, 0.0]], "dev": [0.31403399152543643]}, "257": {"P": [[1.0, 5.0, 6.0], [4.0, -1.0, 4.0], [6.0, 4.0, -1.0]], "dev": [0.42067608592225764]}, "258": {"P": [[-1.0, 5.0, 4.0], [6.0, 0.0, 4.0], [6.0, 6.0, 1.0]], "dev": [0.38097655893057558]}, "259": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 4.0], [6.0, 5.0, -1.0]], "dev": [0.38026335945820167]}, "260": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.2800739917184728]}, "261": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.37888652314262838]}, "262": {"P": [[-2.0, 4.0, 4.0], [4.0, -1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.39471226657312886]}, "263": {"P": [[0.0, 4.0, 5.0], [7.0, 1.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.37757470641329677]}, "264": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.29021764086019708]}, "265": {"P": [[1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [5.0, 5.0, 1.0]], "dev": [0.28966844800001862]}, "266": {"P": [[-1.0, 4.0, 4.0], [6.0, 1.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.37572612923234811]}, "267": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [7.0, 7.0, 1.0]], "dev": [0.39984074440815909]}, "268": {"P": [[-1.0, 5.0, 5.0], [4.0, 0.0, 4.0], [6.0, 7.0, 1.0]], "dev": [0.37457135538760833]}, "269": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.28765984286136276]}, "270": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.25196489998161054]}, "271": {"P": [[-1.0, 5.0, 4.0], [6.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.31810008079021634]}, "272": {"P": [[0.0, 4.0, 5.0], [6.0, 0.0, 5.0], [7.0, 6.0, 2.0]], "dev": [0.39701375862519173]}, "273": {"P": [[-1.0, 4.0, 4.0], [6.0, 0.0, 5.0], [4.0, 5.0, -2.0]], "dev": [0.39649076535909961]}, "274": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.28555898425395215]}, "275": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.1582027036060196]}, "276": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.28484153168496995]}, "277": {"P": [[-1.0, 4.0, 4.0], [5.0, 1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.37010791728348152]}, "278": {"P": [[1.0, 5.0, 5.0], [4.0, -2.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.39407994152823228]}, "279": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.31493468398825036]}, "280": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.24877626057814264]}, "281": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.3142984890278846]}, "282": {"P": [[0.0, 5.0, 6.0], [6.0, 2.0, 6.0], [4.0, 5.0, -1.0]], "dev": [0.36811873513083848]}, "283": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 4.0], [6.0, 6.0, -1.0]], "dev": [0.39382552789433528]}, "284": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [6.0, 6.0, 2.0]], "dev": [0.36741573894695023]}, "285": {"P": [[-1.0, 5.0, 4.0], [5.0, 0.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.31320304485871847]}, "286": {"P": [[-1.0, 4.0, 5.0], [5.0, -1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.31296509552825652]}, "287": {"P": [[-1.0, 4.0, 4.0], [7.0, 0.0, 7.0], [4.0, 5.0, 0.0]], "dev": [0.43537178951959282]}, "288": {"P": [[-1.0, 4.0, 5.0], [6.0, 0.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.31302674605959674]}, "289": {"P": [[-1.0, 5.0, 5.0], [7.0, 1.0, 6.0], [5.0, 4.0, 0.0]], "dev": [0.34029383414729758]}, "290": {"P": [[-1.0, 5.0, 4.0], [6.0, -1.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.31194380231316926]}, "291": {"P": [[-2.0, 4.0, 5.0], [5.0, -1.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.38885521815915464]}, "292": {"P": [[-2.0, 4.0, 4.0], [5.0, 0.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.36510527038515722]}, "293": {"P": [[-1.0, 5.0, 5.0], [7.0, 2.0, 7.0], [5.0, 4.0, 0.0]], "dev": [0.38774189048816704]}, "294": {"P": [[-1.0, 5.0, 5.0], [4.0, -1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.27950385005580858]}, "295": {"P": [[1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.27906637122328215]}, "296": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.33672409939861175]}, "297": {"P": [[-1.0, 4.0, 5.0], [6.0, 0.0, 7.0], [4.0, 5.0, 0.0]], "dev": [0.38566388139936653]}, "298": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 6.0], [5.0, 5.0, 1.0]], "dev": [0.33582626075360406]}, "299": {"P": [[-1.0, 5.0, 4.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.27747128095661233]}, "300": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.15380934134473986]}, "301": {"P": [[-1.0, 5.0, 5.0], [7.0, 2.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.38377806745951615]}, "302": {"P": [[-1.0, 5.0, 4.0], [7.0, 1.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.35960207203518674]}, "303": {"P": [[-2.0, 4.0, 5.0], [5.0, -1.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.3829050198375723]}, "304": {"P": [[-1.0, 4.0, 4.0], [7.0, 1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.33344365384820046]}, "305": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.20219258665148016]}, "306": {"P": [[1.0, 5.0, 6.0], [5.0, -1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.27525457967831746]}, "307": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [4.0, 5.0, -2.0]], "dev": [0.38129429940538317]}, "308": {"P": [[-2.0, 4.0, 4.0], [6.0, 1.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.40311584581959492]}, "309": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 7.0], [6.0, 6.0, 1.0]], "dev": [0.38055491768134303]}, "310": {"P": [[-1.0, 5.0, 4.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.27430092818809237]}, "311": {"P": [[-1.0, 4.0, 5.0], [5.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.27409668419345673]}, "312": {"P": [[-1.0, 4.0, 5.0], [6.0, 0.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.30377341633642641]}, "313": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.34898937463872071]}, "314": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.34843507833383014]}, "315": {"P": [[0.0, 5.0, 5.0], [7.0, 1.0, 6.0], [7.0, 6.0, 2.0]], "dev": [0.37171697476977122]}, "316": {"P": [[-1.0, 5.0, 5.0], [6.0, 2.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.32999140960221307]}, "317": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.37063777064972553]}, "318": {"P": [[-1.0, 4.0, 4.0], [6.0, -1.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.32080009147108479]}, "319": {"P": [[1.0, 6.0, 5.0], [5.0, -1.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.32032065325156872]}, "320": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.31985335966739242]}, "321": {"P": [[1.0, 7.0, 7.0], [5.0, 1.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.3686120874008123]}, "322": {"P": [[-1.0, 4.0, 5.0], [5.0, -1.0, 5.0], [6.0, 7.0, 2.0]], "dev": [0.37675706922755448]}, "323": {"P": [[-1.0, 5.0, 4.0], [5.0, -1.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.3185233789369043]}, "324": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.22519855634844338]}, "325": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.22485231426431723]}, "326": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 7.0], [4.0, 5.0, -1.0]], "dev": [0.31729922031361651]}, "327": {"P": [[-1.0, 4.0, 5.0], [6.0, 1.0, 7.0], [4.0, 5.0, -2.0]], "dev": [0.40905150885760611]}, "328": {"P": [[-2.0, 5.0, 5.0], [6.0, 1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.36547805182166671]}, "329": {"P": [[-1.0, 4.0, 5.0], [7.0, 1.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.31617828435921402]}, "330": {"P": [[0.0, 5.0, 5.0], [6.0, 1.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.18238495592923235]}, "331": {"P": [[1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [5.0, 4.0, -1.0]], "dev": [0.31548706077227995]}, "332": {"P": [[-2.0, 4.0, 4.0], [5.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.36391231397270185]}, "333": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.36354559928594815]}, "334": {"P": [[-1.0, 4.0, 5.0], [6.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.31453241581931995]}, "335": {"P": [[0.0, 5.0, 6.0], [5.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.22221521469660946]}, "336": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.22203128650791457]}, "337": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.31367411828508257]}, "338": {"P": [[-1.0, 4.0, 5.0], [7.0, 1.0, 7.0], [5.0, 6.0, 1.0]], "dev": [0.36185610075833291]}, "339": {"P": [[-1.0, 5.0, 4.0], [7.0, 1.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.40418572087027638]}, "340": {"P": [[-2.0, 4.0, 5.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.33794310211481443]}, "341": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.22131887002734235]}, "342": {"P": [[2.0, 6.0, 7.0], [5.0, -1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.33742411607372436]}, "343": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.36901954618393945]}, "344": {"P": [[-1.0, 4.0, 4.0], [7.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.3685082175908807]}, "345": {"P": [[-1.0, 5.0, 4.0], [7.0, 2.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.35987905275916099]}, "346": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 7.0], [6.0, 6.0, 1.0]], "dev": [0.33649828436810181]}, "347": {"P": [[1.0, 7.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.3362896879758222]}, "348": {"P": [[0.0, 6.0, 6.0], [7.0, 1.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.29366170376751111]}, "349": {"P": [[1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.31937562887167975]}, "350": {"P": [[1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [5.0, 5.0, 0.0]], "dev": [0.29282680951985363]}, "351": {"P": [[-2.0, 5.0, 4.0], [6.0, 1.0, 7.0], [5.0, 6.0, 1.0]], "dev": [0.40055288973810027]}, "352": {"P": [[1.0, 7.0, 6.0], [4.0, 0.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.3647554101749601]}, "353": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 7.0], [5.0, 4.0, -1.0]], "dev": [0.31773154247957236]}, "354": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.26265334198891044]}, "355": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.2623121100521863]}, "356": {"P": [[-2.0, 4.0, 4.0], [5.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.36309703771518725]}, "357": {"P": [[-2.0, 5.0, 5.0], [5.0, -2.0, 4.0], [6.0, 6.0, 1.0]], "dev": [0.40385374457918544]}, "358": {"P": [[-1.0, 5.0, 4.0], [5.0, -1.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.33990265729894359]}, "359": {"P": [[-2.0, 4.0, 5.0], [6.0, 1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.36194507204512544]}, "360": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.14474552847622871]}, "361": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.26049937577933413]}, "362": {"P": [[0.0, 6.0, 5.0], [7.0, 0.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.31460257877147424]}, "363": {"P": [[0.0, 5.0, 7.0], [4.0, -2.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.40146645420329252]}, "364": {"P": [[0.0, 6.0, 5.0], [4.0, -2.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.36019466244263282]}, "365": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.25950820096020905]}, "366": {"P": [[1.0, 6.0, 6.0], [5.0, -1.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.19027752162380043]}, "367": {"P": [[0.0, 5.0, 7.0], [5.0, -1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.31319000263509933]}, "368": {"P": [[-1.0, 5.0, 5.0], [6.0, 2.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.35894217072316259]}, "369": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 8.0], [6.0, 5.0, 1.0]], "dev": [0.39935555272781503]}, "370": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.28674803954357952]}, "371": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [6.0, 6.0, 1.0]], "dev": [0.2583337780962055]}, "372": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.25817337579688332]}, "373": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [4.0, 6.0, -1.0]], "dev": [0.35755454477115001]}, "374": {"P": [[-1.0, 4.0, 5.0], [6.0, 1.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.37809181629260336]}, "375": {"P": [[2.0, 7.0, 7.0], [7.0, 2.0, 7.0], [6.0, 6.0, 1.0]], "dev": [0.37888866963932744]}, "376": {"P": [[-2.0, 5.0, 4.0], [6.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.35681383717721304]}, "377": {"P": [[-2.0, 5.0, 5.0], [5.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.31101924645285756]}, "378": {"P": [[0.0, 7.0, 5.0], [6.0, 0.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.33488621677637886]}, "379": {"P": [[1.0, 6.0, 5.0], [7.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.33446496325227459]}, "380": {"P": [[0.0, 5.0, 5.0], [6.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.33405207006583798]}, "381": {"P": [[1.0, 6.0, 5.0], [7.0, 1.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.37619812315444873]}, "382": {"P": [[1.0, 5.0, 5.0], [6.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.35515088083297286]}, "383": {"P": [[-2.0, 5.0, 5.0], [5.0, -1.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.33286299347585763]}, "384": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.25588011830415613]}, "385": {"P": [[1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.25554946846371129]}, "386": {"P": [[1.0, 6.0, 5.0], [6.0, -1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.33174715123026693]}, "387": {"P": [[-1.0, 5.0, 6.0], [6.0, 2.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.37378004733698628]}, "388": {"P": [[-1.0, 6.0, 6.0], [7.0, 2.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.35285918240470432]}, "389": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.2820915878130375]}, "390": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.2228654312487274]}, "391": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.25377089143964304]}, "392": {"P": [[0.0, 5.0, 7.0], [6.0, 1.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.32972918602209134]}, "393": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 2.0]], "dev": [0.3716232638023842]}, "394": {"P": [[-1.0, 6.0, 5.0], [7.0, 1.0, 7.0], [5.0, 6.0, 1.0]], "dev": [0.32911824036957354]}, "395": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.25277591841078634]}, "396": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.14009490924140533]}, "397": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [7.0, 7.0, 1.0]], "dev": [0.25233406334591185]}, "398": {"P": [[0.0, 7.0, 6.0], [4.0, -2.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.34963414135218002]}, "399": {"P": [[0.0, 7.0, 5.0], [7.0, 0.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.36971683886218298]}, "400": {"P": [[0.0, 5.0, 6.0], [7.0, 1.0, 6.0], [5.0, 5.0, -2.0]], "dev": [0.32746441759627315]}, "401": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.27906569994428465]}, "402": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.22050861392299209]}, "403": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.27867762455084988]}, "404": {"P": [[-1.0, 6.0, 4.0], [5.0, 0.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.34803744956362975]}, "405": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.3680500839664948]}, "406": {"P": [[-1.0, 4.0, 5.0], [7.0, 0.0, 7.0], [6.0, 5.0, -1.0]], "dev": [0.34222325524902586]}, "407": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.27799665801487028]}, "408": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.27784588566934082]}, "409": {"P": [[2.0, 7.0, 7.0], [6.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.32546654198534419]}, "410": {"P": [[0.0, 5.0, 5.0], [7.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.34055511317302006]}, "411": {"P": [[0.0, 6.0, 5.0], [7.0, 2.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.39847231542001216]}, "412": {"P": [[-2.0, 5.0, 5.0], [6.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.32492359454897274]}, "413": {"P": [[-1.0, 6.0, 6.0], [5.0, -2.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.31759431543949596]}, "414": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 5.0], [6.0, 7.0, -1.0]], "dev": [0.31722646853980663]}, "415": {"P": [[1.0, 6.0, 6.0], [7.0, 2.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.31686588798047588]}, "416": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [5.0, 5.0, -1.0]], "dev": [0.35870004224834079]}, "417": {"P": [[-1.0, 4.0, 6.0], [7.0, -1.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.39603171656668334]}, "418": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 5.0], [7.0, 7.0, 1.0]], "dev": [0.31582729963729728]}, "419": {"P": [[-1.0, 5.0, 5.0], [6.0, -1.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.26681061128215111]}, "420": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.23848650061150789]}, "421": {"P": [[1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.26621898985192027]}, "422": {"P": [[0.0, 6.0, 5.0], [6.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.31454154841619786]}, "423": {"P": [[-1.0, 5.0, 5.0], [7.0, 2.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.39380961825452954]}, "424": {"P": [[-2.0, 4.0, 4.0], [6.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.35592782585269767]}, "425": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.26513079629492137]}, "426": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.20523766732241411]}, "427": {"P": [[1.0, 7.0, 6.0], [5.0, 0.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.26463343373696729]}, "428": {"P": [[-1.0, 4.0, 6.0], [6.0, -1.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.35469217998430419]}, "429": {"P": [[-1.0, 6.0, 4.0], [6.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.3917976850798196]}, "430": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.28913443273079514]}, "431": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.2637301852270173]}, "432": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.0]}, "433": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.26332349689792561]}, "434": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 7.0], [5.0, 6.0, -1.0]], "dev": [0.28824333561323062]}, "435": {"P": [[2.0, 7.0, 7.0], [6.0, 1.0, 6.0], [7.0, 5.0, -1.0]], "dev": [0.38998778024597147]}, "436": {"P": [[-2.0, 4.0, 5.0], [6.0, 0.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.35250890620672454]}, "437": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.2625979740522249]}, "438": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.2624346005335807]}, "439": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.26227832822311858]}, "440": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [5.0, 7.0, -1.0]], "dev": [0.35155620590823278]}, "441": {"P": [[1.0, 6.0, 7.0], [6.0, 2.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.3593745943696221]}, "442": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 7.0], [6.0, 5.0, -1.0]], "dev": [0.33106205055680149]}, "443": {"P": [[1.0, 7.0, 6.0], [7.0, 2.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.35090041509466724]}, "444": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.2340896235255002]}, "445": {"P": [[0.0, 5.0, 6.0], [5.0, 0.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.33824875618794653]}, "446": {"P": [[-1.0, 5.0, 6.0], [7.0, 2.0, 7.0], [5.0, 6.0, -1.0]], "dev": [0.33031660302712734]}, "447": {"P": [[1.0, 5.0, 6.0], [7.0, 1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.35706536083860307]}, "448": {"P": [[-2.0, 5.0, 5.0], [6.0, -1.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.3164222457767521]}, "449": {"P": [[-1.0, 5.0, 6.0], [8.0, 1.0, 7.0], [6.0, 5.0, 0.0]], "dev": [0.31608133233879249]}, "450": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.31574661940906557]}, "451": {"P": [[-1.0, 5.0, 6.0], [5.0, -1.0, 5.0], [7.0, 6.0, -1.0]], "dev": [0.31541807214433404]}, "452": {"P": [[0.0, 7.0, 8.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.33579960840668344]}, "453": {"P": [[-1.0, 4.0, 5.0], [6.0, -1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.35496275871676553]}, "454": {"P": [[-1.0, 5.0, 6.0], [7.0, -1.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.31446907615021358]}, "455": {"P": [[1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.24176256394504597]}, "456": {"P": [[1.0, 6.0, 6.0], [7.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.24149679036487523]}, "457": {"P": [[-1.0, 6.0, 5.0], [6.0, -1.0, 6.0], [5.0, 7.0, 0.0]], "dev": [0.31357431840590172]}, "458": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [8.0, 8.0, 1.0]], "dev": [0.33392737953192353]}, "459": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [5.0, 6.0, -2.0]], "dev": [0.35305972352765308]}, "460": {"P": [[0.0, 5.0, 5.0], [7.0, 0.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.31273286111269244]}, "461": {"P": [[0.0, 6.0, 7.0], [5.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.24027771931689601]}, "462": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.21058429304447079]}, "463": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.26605507395919781]}, "464": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 7.0], [5.0, 7.0, -1.0]], "dev": [0.33225709964025013]}, "465": {"P": [[2.0, 7.0, 7.0], [7.0, 2.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.35134929175661245]}, "466": {"P": [[-2.0, 5.0, 6.0], [5.0, -1.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.33174397928918242]}, "467": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.23905094821759312]}, "468": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.1325058026239298]}, "469": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.23869781071700075]}, "470": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.31030095071581498]}, "471": {"P": [[-2.0, 6.0, 5.0], [7.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.34982460278318012]}, "472": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 8.0, 2.0]], "dev": [0.33033185659361769]}, "473": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.26410803634055918]}, "474": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.20870228385090964]}, "475": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.26379309173441212]}, "476": {"P": [[0.0, 5.0, 7.0], [6.0, -1.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.3091067398355411]}, "477": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 8.0, 1.0]], "dev": [0.34847890171615842]}, "478": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 6.0], [8.0, 8.0, 2.0]], "dev": [0.34827155154280931]}, "479": {"P": [[-2.0, 5.0, 5.0], [6.0, 0.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.30858122005404415]}, "480": {"P": [[-1.0, 6.0, 5.0], [7.0, 1.0, 7.0], [5.0, 6.0, -1.0]], "dev": [0.26311040873156599]}, "481": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.26299149978383179]}, "482": {"P": [[-2.0, 5.0, 4.0], [6.0, -1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.36654450190505372]}, "483": {"P": [[-2.0, 5.0, 5.0], [6.0, -1.0, 6.0], [7.0, 7.0, 2.0]], "dev": [0.3473055429332233]}, "484": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 6.0], [8.0, 6.0, 1.0]], "dev": [0.32877506527165246]}, "485": {"P": [[1.0, 7.0, 7.0], [8.0, 2.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.32844872103984757]}, "486": {"P": [[0.0, 6.0, 6.0], [5.0, -1.0, 6.0], [8.0, 7.0, 2.0]], "dev": [0.30753426491807417]}, "487": {"P": [[1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.32781153143483288]}, "488": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 6.0], [7.0, 7.0, 2.0]], "dev": [0.30728001697708957]}, "489": {"P": [[-1.0, 5.0, 5.0], [7.0, -1.0, 6.0], [5.0, 6.0, -2.0]], "dev": [0.36418589181464833]}, "490": {"P": [[-1.0, 6.0, 5.0], [6.0, -1.0, 5.0], [7.0, 7.0, 0.0]], "dev": [0.26181977560432318]}, "491": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [8.0, 7.0, 1.0]], "dev": [0.28488787200888815]}, "492": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.26128617174551583]}, "493": {"P": [[1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [7.0, 8.0, 2.0]], "dev": [0.32602201732869468]}, "494": {"P": [[-1.0, 6.0, 5.0], [6.0, -1.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.34468595335613234]}, "495": {"P": [[-2.0, 5.0, 4.0], [7.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.36234735163169685]}, "496": {"P": [[1.0, 6.0, 6.0], [8.0, 2.0, 8.0], [6.0, 7.0, 0.0]], "dev": [0.32519458911706928]}, "497": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.23447630359179575]}, "498": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.23425893506207063]}, "499": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.28286123346047753]}, "500": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 8.0], [5.0, 6.0, 0.0]], "dev": [0.32415955447753853]}, "501": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.36067212188201414]}, "502": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.28219023902164381]}, "503": {"P": [[1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.23326588312338598]}, "504": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.12935072560400773]}, "505": {"P": [[-1.0, 5.0, 6.0], [7.0, 2.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.32297298340656794]}, "506": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [5.0, 6.0, -1.0]], "dev": [0.30276716372190793]}, "507": {"P": [[-1.0, 5.0, 5.0], [6.0, -1.0, 7.0], [6.0, 8.0, 1.0]], "dev": [0.35915486091192977]}, "508": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.32231695764234969]}, "509": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.28080723145783226]}, "510": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.17034484673995387]}, "511": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 7.0], [5.0, 6.0, -1.0]], "dev": [0.23199396215376511]}, "512": {"P": [[-1.0, 5.0, 6.0], [7.0, -1.0, 5.0], [7.0, 7.0, 1.0]], "dev": [0.32150602157073288]}, "513": {"P": [[-1.0, 7.0, 6.0], [7.0, 2.0, 8.0], [6.0, 6.0, 1.0]], "dev": [0.3577903100406048]}, "514": {"P": [[2.0, 7.0, 7.0], [7.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.33984142443863274]}, "515": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 7.0], [7.0, 5.0, -1.0]], "dev": [0.32094472881009939]}, "516": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.231390392601976]}, "517": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.23128685264707555]}, "518": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.25642533499626802]}, "519": {"P": [[-2.0, 6.0, 5.0], [6.0, -1.0, 5.0], [7.0, 6.0, -1.0]], "dev": [0.3521196362336606]}, "520": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.33872677103899451]}, "521": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 6.0], [5.0, 7.0, -1.0]], "dev": [0.31993973051539604]}, "522": {"P": [[1.0, 7.0, 6.0], [8.0, 2.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.31978717265031065]}, "523": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.27877382055057465]}, "524": {"P": [[-1.0, 6.0, 5.0], [8.0, 2.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.31949463337156042]}, "525": {"P": [[-1.0, 6.0, 5.0], [6.0, -1.0, 5.0], [7.0, 7.0, -1.0]], "dev": [0.31346120747615908]}, "526": {"P": [[-1.0, 5.0, 5.0], [7.0, -1.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.29308081975794309]}, "527": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 8.0], [5.0, 5.0, -1.0]], "dev": [0.29280328165718916]}, "528": {"P": [[-1.0, 6.0, 5.0], [8.0, 0.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.31260814316706836]}, "529": {"P": [[-1.0, 5.0, 7.0], [6.0, -1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.31883545915601541]}, "530": {"P": [[-1.0, 6.0, 5.0], [7.0, 2.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.31871579419141255]}, "531": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 5.0], [7.0, 8.0, 1.0]], "dev": [0.31179562529837862]}, "532": {"P": [[-1.0, 5.0, 5.0], [7.0, -1.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.26995498809378282]}, "533": {"P": [[-1.0, 6.0, 7.0], [5.0, -1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.26971385679811927]}, "534": {"P": [[-1.0, 6.0, 5.0], [8.0, 0.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.26947765468648821]}, "535": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 8.0], [5.0, 6.0, -1.0]], "dev": [0.31077432431604624]}, "536": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 6.0], [7.0, 8.0, 2.0]], "dev": [0.34711086380266204]}, "537": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.34685305801782895]}, "538": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.26858166428245694]}, "539": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.18992282817137604]}, "540": {"P": [[1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.18974706743141451]}, "541": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.26796026395175759]}, "542": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [8.0, 8.0, 2.0]], "dev": [0.34562307235637074]}, "543": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.34538874326013003]}, "544": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 5.0], [7.0, 8.0, 1.0]], "dev": [0.30872892193919604]}, "545": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 8.0], [6.0, 5.0, -1.0]], "dev": [0.26719795774092481]}, "546": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.15418895195842164]}, "547": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 8.0], [6.0, 7.0, 1.0]], "dev": [0.26684475439189248]}, "548": {"P": [[-2.0, 5.0, 5.0], [6.0, -1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.30792889289554193]}, "549": {"P": [[-1.0, 5.0, 6.0], [7.0, -1.0, 5.0], [6.0, 7.0, -1.0]], "dev": [0.34406276830943661]}, "550": {"P": [[-1.0, 6.0, 7.0], [5.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.30755339253643654]}, "551": {"P": [[1.0, 7.0, 6.0], [6.0, -1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.26619327895273887]}, "552": {"P": [[1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.18813092960313951]}, "553": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.18803636042802621]}, "554": {"P": [[1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.26575197131853101]}, "555": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.30668475919676563]}, "556": {"P": [[1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [8.0, 6.0, 1.0]], "dev": [0.34268493268458705]}, "557": {"P": [[-2.0, 6.0, 5.0], [7.0, 1.0, 8.0], [6.0, 5.0, -1.0]], "dev": [0.34250260195023813]}, "558": {"P": [[-2.0, 5.0, 6.0], [7.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.28645204959461679]}, "559": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.18759404140615901]}, "560": {"P": [[-2.0, 5.0, 6.0], [6.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.28618365808018403]}, "561": {"P": [[-2.0, 6.0, 5.0], [6.0, 1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.3418087594870739]}, "562": {"P": [[-2.0, 6.0, 6.0], [6.0, -1.0, 5.0], [7.0, 6.0, -1.0]], "dev": [0.33125510442038325]}, "563": {"P": [[-2.0, 5.0, 6.0], [7.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.34148285678682]}, "564": {"P": [[0.0, 6.0, 6.0], [8.0, 1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.30536643951881254]}, "565": {"P": [[1.0, 7.0, 7.0], [8.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.28558260407788144]}, "566": {"P": [[-2.0, 5.0, 6.0], [7.0, 1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.28547419884557867]}, "567": {"P": [[-1.0, 6.0, 6.0], [7.0, 2.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.30499488751588721]}, "568": {"P": [[0.0, 5.0, 6.0], [8.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.31151929495152392]}, "569": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [7.0, 5.0, -1.0]], "dev": [0.31125801754842325]}, "570": {"P": [[-1.0, 5.0, 5.0], [7.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.34613881306699396]}, "571": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 7.0], [8.0, 7.0, 2.0]], "dev": [0.34031580436408398]}, "572": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 7.0], [7.0, 7.0, 2.0]], "dev": [0.32852261252564197]}, "573": {"P": [[1.0, 7.0, 7.0], [6.0, -1.0, 7.0], [6.0, 8.0, 1.0]], "dev": [0.31025169799866298]}, "574": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [6.0, 5.0, -1.0]], "dev": [0.24825613196968699]}, "575": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.27018844661699482]}, "576": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.24782696262606241]}, "577": {"P": [[1.0, 8.0, 8.0], [8.0, 2.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.34434594109881211]}, "578": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.32706095481529635]}, "579": {"P": [[-1.0, 6.0, 7.0], [5.0, -1.0, 5.0], [7.0, 8.0, 0.0]], "dev": [0.30885667707163411]}, "580": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.26913283387212589]}, "581": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.22254728544427141]}, "582": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.22237091940238793]}, "583": {"P": [[-1.0, 6.0, 6.0], [5.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.30800134819607855]}, "584": {"P": [[-1.0, 5.0, 6.0], [9.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.34272287122752576]}, "585": {"P": [[-2.0, 5.0, 6.0], [6.0, -1.0, 5.0], [7.0, 8.0, 0.0]], "dev": [0.34250454198859248]}, "586": {"P": [[-1.0, 6.0, 5.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.28837385297424506]}, "587": {"P": [[-1.0, 7.0, 7.0], [5.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.30720447298631831]}, "588": {"P": [[0.0, 6.0, 6.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.12287486929764632]}, "589": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.22126993258749364]}, "590": {"P": [[0.0, 7.0, 6.0], [8.0, 0.0, 7.0], [6.0, 5.0, -1.0]], "dev": [0.26732936747763131]}, "591": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [6.0, 7.0, -2.0]], "dev": [0.34126406935872444]}, "592": {"P": [[-1.0, 5.0, 6.0], [8.0, 0.0, 8.0], [6.0, 7.0, 1.0]], "dev": [0.32414563418856179]}, "593": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 7.0], [7.0, 8.0, 2.0]], "dev": [0.30611633942056948]}, "594": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.22062375034237092]}, "595": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.16181661751304052]}, "596": {"P": [[-2.0, 6.0, 6.0], [6.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.2664378237916829]}, "597": {"P": [[-2.0, 5.0, 6.0], [7.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.30546075990991578]}, "598": {"P": [[1.0, 8.0, 7.0], [6.0, -1.0, 5.0], [8.0, 6.0, 0.0]], "dev": [0.32309981275526722]}, "599": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [7.0, 9.0, 1.0]], "dev": [0.33979100157175574]}, "600": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [6.0, 6.0, 0.0]], "dev": [0.24404175523111257]}, "601": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.21990937999001092]}, "602": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.21982504620160648]}, "603": {"P": [[-1.0, 7.0, 5.0], [8.0, 1.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.30457940502774272]}, "604": {"P": [[-2.0, 5.0, 5.0], [6.0, -1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.32217102540884834]}, "605": {"P": [[-2.0, 5.0, 6.0], [7.0, -1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.33881747080842894]}, "606": {"P": [[-2.0, 5.0, 6.0], [7.0, 1.0, 7.0], [8.0, 8.0, 2.0]], "dev": [0.33866588254406171]}, "607": {"P": [[-2.0, 5.0, 6.0], [7.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.30405824757043326]}, "608": {"P": [[-2.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.26506394653453191]}, "609": {"P": [[1.0, 8.0, 6.0], [8.0, 1.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.30381718355361553]}, "610": {"P": [[-2.0, 6.0, 5.0], [6.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.30370147079118953]}, "611": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 6.0], [8.0, 7.0, -1.0]], "dev": [0.32174526732867853]}, "612": {"P": [[0.0, 6.0, 6.0], [8.0, 1.0, 7.0], [9.0, 7.0, 1.0]], "dev": [0.32149711161037714]}, "613": {"P": [[-2.0, 6.0, 7.0], [7.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.35383728883429344]}, "614": {"P": [[-1.0, 7.0, 5.0], [7.0, 1.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.30327035318363899]}, "615": {"P": [[-1.0, 6.0, 5.0], [7.0, -1.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.28450796293890934]}, "616": {"P": [[0.0, 7.0, 7.0], [8.0, 2.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.28428468778153237]}, "617": {"P": [[-1.0, 5.0, 6.0], [8.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.28406496598540409]}, "618": {"P": [[-1.0, 6.0, 6.0], [8.0, 0.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.28384878295062554]}, "619": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.31985135826552569]}, "620": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [8.0, 8.0, 2.0]], "dev": [0.31962913461539494]}, "621": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 8.0], [6.0, 6.0, 1.0]], "dev": [0.3018585119111194]}, "622": {"P": [[-1.0, 6.0, 5.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.28301914586202431]}, "623": {"P": [[0.0, 7.0, 6.0], [7.0, 0.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.21758840342506916]}, "624": {"P": [[1.0, 7.0, 7.0], [8.0, 1.0, 8.0], [7.0, 7.0, 1.0]], "dev": [0.21741478684241916]}, "625": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.28243335729674107]}, "626": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.31836209640238089]}, "627": {"P": [[-1.0, 6.0, 7.0], [7.0, 2.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.31816184696129401]}, "628": {"P": [[1.0, 7.0, 7.0], [7.0, 2.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.30046376635400962]}, "629": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.24027439907195361]}, "630": {"P": [[0.0, 7.0, 7.0], [8.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.18988389952275786]}, "631": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.21631860861593016]}, "632": {"P": [[0.0, 7.0, 6.0], [8.0, 0.0, 8.0], [6.0, 5.0, -1.0]], "dev": [0.28118557811093747]}, "633": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.31702465670976565]}, "634": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.34914259503797762]}, "635": {"P": [[-1.0, 6.0, 5.0], [8.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.28070088186746434]}, "636": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.21566096574599219]}, "637": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.11956422533072146]}, "638": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.2154265624717219]}, "639": {"P": [[-2.0, 5.0, 6.0], [8.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.2985878771967419]}, "640": {"P": [[-2.0, 6.0, 6.0], [6.0, -2.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.31583439518483925]}, "641": {"P": [[1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [6.0, 5.0, -2.0]], "dev": [0.31567610289471987]}, "642": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.27968380708431861]}, "643": {"P": [[-1.0, 7.0, 6.0], [6.0, -1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.23841302532558215]}, "644": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.18842620618723904]}, "645": {"P": [[1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.23820585388656526]}, "646": {"P": [[1.0, 7.0, 7.0], [6.0, -2.0, 5.0], [7.0, 7.0, -1.0]], "dev": [0.2975877295451429]}, "647": {"P": [[1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [6.0, 8.0, 1.0]], "dev": [0.31478669725784125]}, "648": {"P": [[-2.0, 6.0, 6.0], [6.0, 0.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.31464839641817322]}, "649": {"P": [[0.0, 6.0, 5.0], [7.0, -1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.34280508531533455]}, "650": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [7.0, 7.0, 1.0]], "dev": [0.23775006234856369]}, "651": {"P": [[-1.0, 6.0, 7.0], [6.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.23766941654328946]}, "652": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 7.0], [6.0, 6.0, -2.0]], "dev": [0.27849899747747947]}, "653": {"P": [[0.0, 5.0, 7.0], [7.0, -1.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.31399866626080142]}, "654": {"P": [[-1.0, 6.0, 6.0], [9.0, 1.0, 7.0], [8.0, 6.0, 0.0]], "dev": [0.34154057784708419]}, "655": {"P": [[1.0, 9.0, 7.0], [8.0, 1.0, 8.0], [6.0, 7.0, 1.0]], "dev": [0.34129602373670354]}, "656": {"P": [[-2.0, 6.0, 6.0], [7.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.27811049174498681]}, "657": {"P": [[0.0, 8.0, 7.0], [6.0, -1.0, 7.0], [5.0, 7.0, -1.0]], "dev": [0.3084649256642254]}, "658": {"P": [[1.0, 7.0, 8.0], [6.0, -2.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.27793406692126871]}, "659": {"P": [[0.0, 7.0, 6.0], [8.0, 1.0, 7.0], [9.0, 8.0, 2.0]], "dev": [0.30801469085933153]}, "660": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 6.0], [8.0, 7.0, -1.0]], "dev": [0.29028742590542944]}, "661": {"P": [[0.0, 7.0, 6.0], [8.0, 2.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.33988622805284585]}, "662": {"P": [[-1.0, 7.0, 8.0], [5.0, 0.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.33966075034763848]}, "663": {"P": [[-1.0, 6.0, 7.0], [8.0, 1.0, 8.0], [8.0, 6.0, 1.0]], "dev": [0.30714925704229668]}, "664": {"P": [[0.0, 6.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.2708426700711512]}, "665": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.27064754399989172]}, "666": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.27045557864551584]}, "667": {"P": [[-2.0, 6.0, 7.0], [7.0, -1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.3063299366645012]}, "668": {"P": [[-1.0, 5.0, 6.0], [9.0, 1.0, 9.0], [7.0, 7.0, 1.0]], "dev": [0.33836384339019626]}, "669": {"P": [[-1.0, 6.0, 5.0], [8.0, 0.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.33815691969250206]}, "670": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.26971908205054917]}, "671": {"P": [[0.0, 7.0, 6.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.22790809790238825]}, "672": {"P": [[1.0, 8.0, 7.0], [7.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.20377430131729241]}, "673": {"P": [[-1.0, 6.0, 6.0], [8.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.22759202635202258]}, "674": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.2690321850926744]}, "675": {"P": [[-1.0, 7.0, 7.0], [7.0, -2.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.33696978041798109]}, "676": {"P": [[1.0, 7.0, 6.0], [9.0, 2.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.33678089281157714]}, "677": {"P": [[-1.0, 7.0, 7.0], [7.0, 2.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.30447865172573474]}, "678": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.22686341749976216]}, "679": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.17566292684104856]}, "680": {"P": [[0.0, 7.0, 6.0], [8.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.22659631163666502]}, "681": {"P": [[-2.0, 7.0, 7.0], [6.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.30381505387162272]}, "682": {"P": [[0.0, 6.0, 7.0], [6.0, -2.0, 5.0], [8.0, 7.0, -1.0]], "dev": [0.33570042764057928]}, "683": {"P": [[1.0, 9.0, 8.0], [6.0, 0.0, 7.0], [8.0, 7.0, 2.0]], "dev": [0.33552906289057083]}, "684": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.24768250247178983]}, "685": {"P": [[-1.0, 6.0, 6.0], [8.0, 0.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.22598840830597283]}, "686": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [7.6918507455342553e-16]}, "687": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.22576889234057218]}, "688": {"P": [[-1.0, 7.0, 6.0], [6.0, -1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.24720154212995857]}, "689": {"P": [[-1.0, 7.0, 7.0], [5.0, -2.0, 6.0], [6.0, 7.0, -2.0]], "dev": [0.35634182988200958]}, "690": {"P": [[-1.0, 6.0, 6.0], [8.0, 0.0, 6.0], [7.0, 9.0, 1.0]], "dev": [0.33439785681882772]}, "691": {"P": [[2.0, 8.0, 7.0], [7.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.30234206184735851]}, "692": {"P": [[-1.0, 6.0, 6.0], [8.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.22527820522957903]}, "693": {"P": [[-1.0, 6.0, 6.0], [8.0, 1.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.22518991144980732]}, "694": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.22510486455219555]}, "695": {"P": [[-2.0, 7.0, 6.0], [6.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.30182538553395227]}, "696": {"P": [[-1.0, 5.0, 7.0], [8.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.33352157578172098]}, "697": {"P": [[1.0, 9.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, 2.0]], "dev": [0.33976671647622292]}, "698": {"P": [[-2.0, 6.0, 6.0], [7.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.2842428512163539]}, "699": {"P": [[-2.0, 5.0, 6.0], [7.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.30134907834884894]}, "700": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.20101098393019437]}, "701": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 7.0], [5.0, 6.0, -2.0]], "dev": [0.30112584080209087]}, "702": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 7.0], [6.0, 6.0, -2.0]], "dev": [0.28383682748194033]}, "703": {"P": [[2.0, 8.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.33836970414346768]}, "704": {"P": [[0.0, 8.0, 8.0], [6.0, 1.0, 6.0], [8.0, 8.0, 0.0]], "dev": [0.30705615159985539]}, "705": {"P": [[1.0, 7.0, 7.0], [8.0, 1.0, 7.0], [6.0, 7.0, -2.0]], "dev": [0.30070875432182093]}, "706": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 7.0], [9.0, 8.0, 2.0]], "dev": [0.3006105408152861]}, "707": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 6.0], [8.0, 8.0, -1.0]], "dev": [0.28964498799193567]}, "708": {"P": [[-1.0, 6.0, 6.0], [9.0, 0.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.28944349052207607]}, "709": {"P": [[0.0, 8.0, 7.0], [8.0, 1.0, 7.0], [5.0, 6.0, -2.0]], "dev": [0.30033026324468715]}, "710": {"P": [[1.0, 8.0, 8.0], [5.0, -1.0, 7.0], [8.0, 6.0, 0.0]], "dev": [0.33179909833799204]}, "711": {"P": [[1.0, 8.0, 8.0], [6.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.30561516348886758]}, "712": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 8.0], [6.0, 5.0, -1.0]], "dev": [0.27087410320521932]}, "713": {"P": [[1.0, 8.0, 7.0], [9.0, 1.0, 8.0], [7.0, 7.0, 1.0]], "dev": [0.27069063443868729]}, "714": {"P": [[0.0, 6.0, 6.0], [7.0, 0.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.27050991708331956]}, "715": {"P": [[-1.0, 6.0, 6.0], [9.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.2703319413566303]}, "716": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.28792649091328565]}, "717": {"P": [[-2.0, 5.0, 5.0], [8.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.33544396706032303]}, "718": {"P": [[-1.0, 5.0, 6.0], [9.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.30429753345167204]}, "719": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 6.0], [7.0, 8.0, -1.0]], "dev": [0.26964725852763799]}, "720": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.20731672746087737]}, "721": {"P": [[-1.0, 6.0, 6.0], [8.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.20717262593223637]}, "722": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.2691620518222525]}, "723": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.28673498464859837]}, "724": {"P": [[0.0, 6.0, 7.0], [9.0, 1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.30326394211164859]}, "725": {"P": [[-1.0, 5.0, 6.0], [8.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.30310012557170712]}, "726": {"P": [[-2.0, 6.0, 6.0], [7.0, -1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.26855234245287163]}, "727": {"P": [[0.0, 6.0, 7.0], [8.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.20637791408571765]}, "728": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.18092597217531509]}, "729": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.22867488881393627]}, "730": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [7.0, 6.0, -2.0]], "dev": [0.28566688296114778]}, "731": {"P": [[-1.0, 7.0, 6.0], [6.0, -1.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.30216708741582476]}, "732": {"P": [[-2.0, 6.0, 6.0], [8.0, 0.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.30201980607456552]}, "733": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.28524609374061261]}, "734": {"P": [[0.0, 8.0, 7.0], [6.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20559965516335715]}, "735": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.11399422029596668]}, "736": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20540619739679]}, "737": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.26709011843626579]}, "738": {"P": [[-1.0, 8.0, 7.0], [7.0, 1.0, 9.0], [6.0, 6.0, 0.0]], "dev": [0.33188864880751273]}, "739": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 9.0], [8.0, 7.0, 1.0]], "dev": [0.30105344595666683]}, "740": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.28434862237351777]}, "741": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.22739516378144453]}, "742": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.17972365248515917]}, "743": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.227222037299015]}, "744": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 7.0], [6.0, 6.0, -2.0]], "dev": [0.26631875883331058]}, "745": {"P": [[-2.0, 6.0, 7.0], [7.0, 1.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.30031347334708358]}, "746": {"P": [[-2.0, 6.0, 6.0], [8.0, 1.0, 7.0], [8.0, 9.0, 2.0]], "dev": [0.33078311083702866]}, "747": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 7.0], [9.0, 9.0, 2.0]], "dev": [0.30008457291068513]}, "748": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.26593192824988798]}, "749": {"P": [[-1.0, 6.0, 7.0], [6.0, -1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.22676962608914031]}, "750": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.22670386526705949]}, "751": {"P": [[-2.0, 5.0, 7.0], [7.0, -1.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.33015878637690477]}, "752": {"P": [[-1.0, 5.0, 7.0], [8.0, 0.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.29955047905814425]}, "753": {"P": [[-1.0, 5.0, 6.0], [8.0, -1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.3159412692695196]}, "754": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 8.0], [6.0, 6.0, -2.0]], "dev": [0.30018146886203789]}, "755": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.29925582663017924]}, "756": {"P": [[-2.0, 6.0, 6.0], [8.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.26527288351725875]}, "757": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 9.0], [7.0, 8.0, 1.0]], "dev": [0.29906999319107264]}, "758": {"P": [[0.0, 8.0, 7.0], [8.0, 1.0, 7.0], [6.0, 6.0, -2.0]], "dev": [0.26513152614227503]}, "759": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [7.0, 6.0, 1.0]], "dev": [0.31474877458123851]}, "760": {"P": [[-2.0, 6.0, 7.0], [6.0, -2.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.31455765185540668]}, "761": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 6.0], [8.0, 8.0, -1.0]], "dev": [0.28245961860869989]}, "762": {"P": [[1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [7.0, 7.0, -1.0]], "dev": [0.28228120931441847]}, "763": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.28210513361458789]}, "764": {"P": [[-1.0, 6.0, 6.0], [9.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.28193138374533511]}, "765": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [9.0, 9.0, 0.0]], "dev": [0.31363428318760028]}, "766": {"P": [[-2.0, 6.0, 6.0], [7.0, -1.0, 6.0], [7.0, 8.0, -1.0]], "dev": [0.29794971406693843]}, "767": {"P": [[-1.0, 6.0, 6.0], [6.0, -2.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.31327984675438919]}, "768": {"P": [[0.0, 8.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.22519855634844343]}, "769": {"P": [[0.0, 6.0, 7.0], [8.0, 1.0, 9.0], [7.0, 7.0, -1.0]], "dev": [0.24516063562758456]}, "770": {"P": [[0.0, 7.0, 7.0], [9.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.22490539827702977]}, "771": {"P": [[-1.0, 7.0, 6.0], [9.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.28077960417118891]}, "772": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.29695349928447251]}, "773": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 8.0], [8.0, 6.0, -1.0]], "dev": [0.31226690073987534]}, "774": {"P": [[-2.0, 6.0, 6.0], [8.0, -1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.31210534439068544]}, "775": {"P": [[-2.0, 6.0, 7.0], [7.0, -1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.28017141212587426]}, "776": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.20203448693908299]}, "777": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.20191445342848138]}, "778": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.24390154787906052]}, "779": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.27959893368507338]}, "780": {"P": [[-1.0, 7.0, 8.0], [6.0, 0.0, 6.0], [8.0, 9.0, 1.0]], "dev": [0.29574564869842673]}, "781": {"P": [[1.0, 9.0, 8.0], [7.0, -1.0, 5.0], [8.0, 7.0, 0.0]], "dev": [0.31103164144116729]}, "782": {"P": [[1.0, 8.0, 8.0], [8.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.24340670212606788]}, "783": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [7.0, 6.0, -1.0]], "dev": [0.20125549381154675]}, "784": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 7.0], [8.0, 8.0, 0.0]], "dev": [0.11161880364065881]}, "785": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.27880607833109466]}, "786": {"P": [[-1.0, 6.0, 7.0], [8.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.26142736536654876]}, "787": {"P": [[-2.0, 7.0, 6.0], [7.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.31018966078857557]}, "788": {"P": [[0.0, 7.0, 9.0], [8.0, 2.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.32471251863332884]}, "789": {"P": [[-2.0, 7.0, 7.0], [8.0, 1.0, 8.0], [7.0, 7.0, 1.0]], "dev": [0.27832068046350988]}, "790": {"P": [[-1.0, 7.0, 8.0], [6.0, 0.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.24253361496296158]}, "791": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.14715845510901016]}, "792": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.20046024012678804]}, "793": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.27786923048143009]}, "794": {"P": [[-1.0, 6.0, 8.0], [6.0, -2.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.30929654285892588]}, "795": {"P": [[-1.0, 7.0, 8.0], [6.0, -1.0, 6.0], [7.0, 9.0, 1.0]], "dev": [0.30917666080225692]}, "796": {"P": [[-2.0, 7.0, 7.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.29372838210888136]}, "797": {"P": [[1.0, 9.0, 7.0], [8.0, 1.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.27745122177175358]}, "798": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.20005555379290046]}, "799": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.19999766407513078]}, "800": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.22178158709938606]}, "801": {"P": [[-2.0, 5.0, 6.0], [8.0, 1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.30849712031026655]}, "802": {"P": [[-2.0, 6.0, 6.0], [7.0, 1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.2931038924357775]}, "803": {"P": [[-1.0, 7.0, 8.0], [6.0, 0.0, 7.0], [8.0, 9.0, 2.0]], "dev": [0.30828557805696793]}, "804": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.27679864893191747]}, "805": {"P": [[-1.0, 6.0, 7.0], [9.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.27671349916574151]}, "806": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.24123788857329626]}, "807": {"P": [[0.0, 7.0, 8.0], [9.0, 2.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.27654917651264405]}, "808": {"P": [[-1.0, 7.0, 6.0], [8.0, 0.0, 6.0], [9.0, 9.0, 1.0]], "dev": [0.30352222711167448]}, "809": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.3033387269295108]}, "810": {"P": [[-2.0, 6.0, 6.0], [9.0, 0.0, 8.0], [7.0, 6.0, -1.0]], "dev": [0.30315719565574056]}, "811": {"P": [[1.0, 7.0, 9.0], [8.0, 1.0, 9.0], [7.0, 6.0, -1.0]], "dev": [0.30297762718550458]}, "812": {"P": [[-1.0, 6.0, 7.0], [6.0, -1.0, 7.0], [9.0, 9.0, 2.0]], "dev": [0.29221664123833357]}, "813": {"P": [[0.0, 7.0, 8.0], [9.0, 1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.27610345267502573]}, "814": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.27603597191276036]}, "815": {"P": [[-1.0, 6.0, 6.0], [8.0, -1.0, 7.0], [7.0, 7.0, -2.0]], "dev": [0.30227885920551251]}, "816": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 6.0], [9.0, 8.0, 1.0]], "dev": [0.27035398743566985]}, "817": {"P": [[-1.0, 6.0, 6.0], [8.0, -1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.2528296121420241]}, "818": {"P": [[-1.0, 6.0, 6.0], [9.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.25267529669222027]}, "819": {"P": [[1.0, 9.0, 8.0], [7.0, 0.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.26987968019260683]}, "820": {"P": [[-2.0, 7.0, 6.0], [8.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.30144882931667516]}, "821": {"P": [[-2.0, 5.0, 6.0], [8.0, -1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.32996891921078808]}, "822": {"P": [[1.0, 8.0, 7.0], [8.0, -1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.30113017208427356]}, "823": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.26927644545781171]}, "824": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.23317517826491929]}, "825": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.23304075481615025]}, "826": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.23290864172932779]}, "827": {"P": [[1.0, 8.0, 7.0], [9.0, 1.0, 9.0], [8.0, 7.0, 1.0]], "dev": [0.26870616999204811]}, "828": {"P": [[-1.0, 8.0, 7.0], [7.0, -2.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.30021935221822338]}, "829": {"P": [[1.0, 8.0, 9.0], [6.0, -1.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.30007406935197029]}, "830": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.29993063316624702]}, "831": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.23228247934087948]}, "832": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.16426506237670549]}, "833": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.16416650789190662]}, "834": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.23193404248813185]}, "835": {"P": [[1.0, 8.0, 7.0], [8.0, 1.0, 9.0], [9.0, 8.0, 2.0]], "dev": [0.29924093849549049]}, "836": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 9.0, 2.0]], "dev": [0.29910845403076558]}, "837": {"P": [[-2.0, 7.0, 6.0], [8.0, 0.0, 9.0], [7.0, 6.0, 0.0]], "dev": [0.31356709590763765]}, "838": {"P": [[-1.0, 7.0, 8.0], [6.0, -2.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.26730441828369195]}, "839": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.23139811094507204]}, "840": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 7.0], [8.0, 8.0, 0.0]], "dev": [0.13355625075287816]}, "841": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.23119924337600006]}, "842": {"P": [[-2.0, 7.0, 7.0], [7.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.2668539783270712]}, "843": {"P": [[-1.0, 8.0, 6.0], [6.0, 0.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.31278751062946447]}, "844": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 8.0], [8.0, 6.0, -1.0]], "dev": [0.29811300571488764]}, "845": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.26653647904482886]}, "846": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.23074031006128445]}, "847": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.16310526861705427]}, "848": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.1630518147961354]}, "849": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.2304908644990605]}, "850": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.26604550245045799]}, "851": {"P": [[1.0, 7.0, 8.0], [9.0, 1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.29733423656149582]}, "852": {"P": [[-2.0, 6.0, 6.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.29722988223742713]}, "853": {"P": [[-2.0, 6.0, 7.0], [7.0, -1.0, 6.0], [8.0, 9.0, 1.0]], "dev": [0.29712723425939808]}, "854": {"P": [[-2.0, 6.0, 7.0], [8.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.24853923699772473]}, "855": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.162758882060835]}, "856": {"P": [[1.0, 7.0, 9.0], [7.0, -1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.24838697665550452]}, "857": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.29673358425822394]}, "858": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.29663937687296649]}, "859": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.3248180565925804]}, "860": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.29645596577489314]}, "861": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [8.0, 9.0, 2.0]], "dev": [0.26512963378223448]}, "862": {"P": [[1.0, 9.0, 7.0], [8.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.24797664353484469]}, "863": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.24791495225470403]}, "864": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 8.0], [8.0, 9.0, 2.0]], "dev": [0.26491815659446505]}, "865": {"P": [[-1.0, 7.0, 8.0], [9.0, 2.0, 8.0], [6.0, 7.0, -1.0]], "dev": [0.29602634347632828]}, "866": {"P": [[-1.0, 7.0, 8.0], [6.0, -1.0, 7.0], [7.0, 7.0, -2.0]], "dev": [0.28648520515181369]}, "867": {"P": [[-1.0, 7.0, 6.0], [9.0, -1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.30118011239932768]}, "868": {"P": [[0.0, 7.0, 7.0], [8.0, 1.0, 7.0], [10.0, 9.0, 1.0]], "dev": [0.28616028917841413]}, "869": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 8.0], [9.0, 8.0, 2.0]], "dev": [0.29571197793867249]}, "870": {"P": [[-2.0, 6.0, 6.0], [7.0, 0.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.29563741020262491]}, "871": {"P": [[0.0, 9.0, 8.0], [9.0, 1.0, 8.0], [7.0, 7.0, 1.0]], "dev": [0.27002618513273291]}, "872": {"P": [[1.0, 8.0, 9.0], [7.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.2698750923329537]}, "873": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 9.0, 0.0]], "dev": [0.26972584532405935]}, "874": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [9.0, 8.0, 2.0]], "dev": [0.26957843877209359]}, "875": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 8.0], [6.0, 8.0, -1.0]], "dev": [0.29990999813744157]}, "876": {"P": [[-2.0, 7.0, 8.0], [7.0, -1.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.29975884013417997]}, "877": {"P": [[0.0, 7.0, 9.0], [7.0, -1.0, 6.0], [8.0, 9.0, 2.0]], "dev": [0.32317931521813709]}, "878": {"P": [[1.0, 8.0, 7.0], [8.0, 1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.28464191456468813]}, "879": {"P": [[-1.0, 6.0, 8.0], [8.0, 1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.26886882565429443]}, "880": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.21514612313142084]}, "881": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.23424697912385875]}, "882": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.2149030946959341]}, "883": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.29874731059473297]}, "884": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.28381436215305889]}, "885": {"P": [[-2.0, 7.0, 7.0], [7.0, 0.0, 6.0], [8.0, 9.0, 0.0]], "dev": [0.29847312213107041]}, "886": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.2679511642113041]}, "887": {"P": [[0.0, 8.0, 9.0], [7.0, -1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.23353013586787472]}, "888": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.19313627664112909]}, "889": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.19303606774262605]}, "890": {"P": [[-2.0, 7.0, 6.0], [9.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.26746585544556506]}, "891": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.29768947242132332]}, "892": {"P": [[-2.0, 7.0, 6.0], [8.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.29756448646700562]}, "893": {"P": [[-2.0, 6.0, 7.0], [7.0, -1.0, 6.0], [8.0, 9.0, 0.0]], "dev": [0.29744109346624709]}, "894": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.2504814358551532]}, "895": {"P": [[1.0, 7.0, 9.0], [7.0, -1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.26689852428865324]}, "896": {"P": [[0.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.10676111126875885]}, "897": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.19231768594721058]}, "898": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.23240029435852813]}, "899": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [7.0, 8.0, -2.0]], "dev": [0.29673390561177726]}, "900": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.28190384580489403]}, "901": {"P": [[1.0, 9.0, 7.0], [9.0, 2.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.29651069181059403]}, "902": {"P": [[-1.0, 7.0, 7.0], [9.0, 1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.26617640463541165]}, "903": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.19187458277321801]}, "904": {"P": [[0.0, 8.0, 8.0], [8.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.14075405093480464]}, "905": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.23180247079545657]}, "906": {"P": [[-1.0, 7.0, 7.0], [8.0, 2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.26580090993581124]}, "907": {"P": [[-2.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.32324167221217975]}, "908": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 6.0], [7.0, 9.0, 0.0]], "dev": [0.28110517808839253]}, "909": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [10.0, 9.0, 2.0]], "dev": [0.29567934140024382]}, "910": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 9.0], [7.0, 7.0, 0.0]], "dev": [0.2123878242286619]}, "911": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.19140834537398685]}, "912": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.19135990533748284]}, "913": {"P": [[0.0, 7.0, 8.0], [8.0, -1.0, 7.0], [9.0, 8.0, 2.0]], "dev": [0.26520752339452408]}, "914": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.28057248227315879]}, "915": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.29511928393099124]}, "916": {"P": [[0.0, 6.0, 8.0], [7.0, -2.0, 6.0], [9.0, 8.0, 0.0]], "dev": [0.32229425989494492]}, "917": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.29494447092544734]}, "918": {"P": [[-2.0, 6.0, 7.0], [8.0, 0.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.26483244877769169]}, "919": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.23087978411615906]}, "920": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 8.0], [9.0, 8.0, 2.0]], "dev": [0.26469361792995566]}, "921": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [6.0, 8.0, -1.0]], "dev": [0.26462658005141848]}, "922": {"P": [[-2.0, 6.0, 7.0], [8.0, 0.0, 9.0], [7.0, 8.0, 1.0]], "dev": [0.29453303079817134]}, "923": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.30894601640206548]}, "924": {"P": [[-2.0, 7.0, 6.0], [7.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.29437858682343404]}, "925": {"P": [[0.0, 9.0, 7.0], [9.0, 1.0, 8.0], [8.0, 9.0, 2.0]], "dev": [0.30863008470330161]}, "926": {"P": [[1.0, 9.0, 8.0], [8.0, 1.0, 8.0], [7.0, 6.0, -2.0]], "dev": [0.26431494348782003]}, "927": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.26425728776118523]}, "928": {"P": [[1.0, 7.0, 7.0], [9.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.26446144611899053]}, "929": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.27964440966058624]}, "930": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.27950072443246665]}, "931": {"P": [[-1.0, 9.0, 9.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.27935861643519605]}, "932": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.30757076706835323]}, "933": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.29375392200050027]}, "934": {"P": [[-1.0, 6.0, 6.0], [9.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.26363201347379084]}, "935": {"P": [[-1.0, 6.0, 7.0], [8.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.24724740623689809]}, "936": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 6.0, -2.0]], "dev": [0.24711989926676037]}, "937": {"P": [[1.0, 8.0, 7.0], [9.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.24699410630525123]}, "938": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.2468700227011521]}, "939": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.27827801431375715]}, "940": {"P": [[2.0, 9.0, 8.0], [9.0, 2.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.30644719203994664]}, "941": {"P": [[-1.0, 6.0, 7.0], [9.0, 0.0, 8.0], [7.0, 7.0, -2.0]], "dev": [0.27802333325029926]}, "942": {"P": [[-1.0, 6.0, 6.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.26261743137711574]}, "943": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.24627508148209515]}, "944": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.18934543381328203]}, "945": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.18924561287648298]}, "946": {"P": [[1.0, 8.0, 7.0], [9.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.24593832899451779]}, "947": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.27729586042549403]}, "948": {"P": [[1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [10.0, 10.0, 2.0]], "dev": [0.30541449140185156]}, "949": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.27706544330805133]}, "950": {"P": [[1.0, 7.0, 9.0], [7.0, 0.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.26170511338281643]}, "951": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20931206185579018]}, "952": {"P": [[0.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16544014688357378]}, "953": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.18852239618478947]}, "954": {"P": [[0.0, 9.0, 9.0], [7.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.24511332073290096]}, "955": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.27640992366908906]}, "956": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 7.0], [9.0, 8.0, 2.0]], "dev": [0.30447057654414783]}, "957": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 7.0], [8.0, 10.0, 1.0]], "dev": [0.30435872606534292]}, "958": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 9.0], [7.0, 8.0, 1.0]], "dev": [0.2447400587768726]}, "959": {"P": [[1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.18806667536091098]}, "960": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.10428454275977558]}, "961": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.18793102680714846]}, "962": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.26052328585715279]}, "963": {"P": [[-1.0, 7.0, 6.0], [9.0, 2.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.27561796123588261]}, "964": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 9.0], [7.0, 6.0, -2.0]], "dev": [0.30361336297552571]}, "965": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 6.0], [7.0, 8.0, -1.0]], "dev": [0.27543439036757772]}, "966": {"P": [[1.0, 8.0, 8.0], [7.0, -1.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.24407046887268091]}, "967": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.20808624183007521]}, "968": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.16447648202905849]}, "969": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.20796585709414403]}, "970": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.25985640073671812]}, "971": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.27491772105143747]}, "972": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.30284077174479634]}, "973": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [9.0, 10.0, 2.0]], "dev": [0.27475672801902845]}, "974": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.30266060319954669]}, "975": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.20764739351482583]}, "976": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.20760048053642055]}, "977": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.24331334246438208]}, "978": {"P": [[-2.0, 6.0, 6.0], [8.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.27437847624458089]}, "979": {"P": [[-1.0, 8.0, 6.0], [7.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.30223254218974427]}, "980": {"P": [[-2.0, 7.0, 6.0], [9.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.30215073095469441]}, "981": {"P": [[0.0, 9.0, 8.0], [9.0, 0.0, 7.0], [9.0, 8.0, 2.0]], "dev": [0.29841758540814628]}, "982": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.24303021426444751]}, "983": {"P": [[-2.0, 6.0, 7.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.27403439786299288]}, "984": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.24292743160591224]}, "985": {"P": [[-2.0, 6.0, 7.0], [7.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.27390621125309872]}, "986": {"P": [[0.0, 8.0, 7.0], [8.0, 1.0, 7.0], [10.0, 10.0, 1.0]], "dev": [0.29768149539367156]}, "987": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 10.0], [6.0, 7.0, -1.0]], "dev": [0.29753831130208896]}, "988": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.31055724077072533]}, "989": {"P": [[-2.0, 7.0, 8.0], [8.0, 0.0, 9.0], [7.0, 6.0, -1.0]], "dev": [0.29725594945828138]}, "990": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 7.0], [9.0, 9.0, 0.0]], "dev": [0.2535888036647857]}, "991": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 6.0, -1.0]], "dev": [0.26874987660574257]}, "992": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.25333087565903151]}, "993": {"P": [[0.0, 7.0, 8.0], [9.0, 1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.26848949977900705]}, "994": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.25307895305462269]}, "995": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.29644066625743809]}, "996": {"P": [[-1.0, 8.0, 8.0], [7.0, 0.0, 6.0], [9.0, 10.0, 1.0]], "dev": [0.29630938731877526]}, "997": {"P": [[-2.0, 6.0, 7.0], [9.0, 0.0, 8.0], [7.0, 7.0, -2.0]], "dev": [0.29617941391115982]}, "998": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 8.0], [6.0, 7.0, -2.0]], "dev": [0.26786345584307325]}, "999": {"P": [[-1.0, 6.0, 7.0], [8.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.23622327741552843]}, "1000": {"P": [[1.0, 10.0, 9.0], [7.0, 0.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.23611018000594314]}, "1001": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.2359986393377701]}, "1002": {"P": [[-1.0, 9.0, 7.0], [7.0, -1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.26738798825225113]}, "1003": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.29542679606674849]}, "1004": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 9.0], [7.0, 8.0, 1.0]], "dev": [0.295305864588853]}, "1005": {"P": [[1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.29518621098180958]}, "1006": {"P": [[1.0, 9.0, 9.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.23546414760453135]}, "1007": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.19898453593927209]}, "1008": {"P": [[0.0, 8.0, 8.0], [9.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.17794078977228794]}, "1009": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.19880048653832591]}, "1010": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.23506416718121484]}, "1011": {"P": [[0.0, 8.0, 7.0], [10.0, 1.0, 10.0], [7.0, 6.0, -1.0]], "dev": [0.29449493085815698]}, "1012": {"P": [[-2.0, 7.0, 7.0], [8.0, 1.0, 8.0], [8.0, 7.0, -2.0]], "dev": [0.29438412545614079]}, "1013": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.29427457023870485]}, "1014": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [10.0, 9.0, 2.0]], "dev": [0.26609439902933291]}, "1015": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.19829050746050669]}, "1016": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.1535608330090425]}, "1017": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.19813444742174138]}, "1018": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.26570668116311674]}, "1019": {"P": [[-1.0, 6.0, 8.0], [10.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.29364329895340668]}, "1020": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.29354239809977201]}, "1021": {"P": [[-2.0, 6.0, 7.0], [8.0, 1.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.31900505018796443]}, "1022": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.21665043169683829]}, "1023": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.19770753737516539]}, "1024": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [7.6918507455342553e-16]}, "1025": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.197578862333424]}, "1026": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.21636851035726801]}, "1027": {"P": [[-1.0, 7.0, 6.0], [8.0, 1.0, 10.0], [7.0, 9.0, -1.0]], "dev": [0.34199711313059294]}, "1028": {"P": [[1.0, 7.0, 8.0], [7.0, -2.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.30579684635480425]}, "1029": {"P": [[-1.0, 8.0, 6.0], [9.0, 1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.29268888725684805]}, "1030": {"P": [[-2.0, 7.0, 6.0], [9.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.26467060890307104]}, "1031": {"P": [[0.0, 8.0, 7.0], [7.0, -1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.19723317305556615]}, "1032": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.19718138817624939]}, "1033": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.19713125558995057]}, "1034": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 8.0], [8.0, 7.0, -2.0]], "dev": [0.26436680812116053]}, "1035": {"P": [[-2.0, 6.0, 7.0], [7.0, 0.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.29217364667121704]}, "1036": {"P": [[2.0, 9.0, 9.0], [8.0, 1.0, 8.0], [8.0, 7.0, -2.0]], "dev": [0.29209189056245394]}, "1037": {"P": [[-1.0, 9.0, 9.0], [8.0, -1.0, 8.0], [6.0, 6.0, -1.0]], "dev": [0.31043335633623126]}, "1038": {"P": [[-2.0, 7.0, 7.0], [8.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.24899385305325838]}, "1039": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.26401568075478971]}, "1040": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 9.0], [8.0, 8.0, 0.0]], "dev": [0.17609194594834979]}, "1041": {"P": [[-1.0, 7.0, 7.0], [9.0, 2.0, 10.0], [7.0, 8.0, -1.0]], "dev": [0.26388403751157613]}, "1042": {"P": [[-2.0, 7.0, 7.0], [7.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.24875443938159347]}, "1043": {"P": [[-2.0, 8.0, 7.0], [9.0, -1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.30954740510785156]}, "1044": {"P": [[0.0, 8.0, 9.0], [9.0, 2.0, 9.0], [6.0, 8.0, -1.0]], "dev": [0.29147956988184665]}, "1045": {"P": [[-2.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.29140819409540636]}, "1046": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.26357668250079541]}, "1047": {"P": [[1.0, 10.0, 8.0], [8.0, 1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.26351891014582607]}, "1048": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 10.0], [8.0, 7.0, -1.0]], "dev": [0.29612522636340649]}, "1049": {"P": [[-2.0, 6.0, 7.0], [9.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.26340703360427081]}, "1050": {"P": [[1.0, 9.0, 7.0], [9.0, 1.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.26335292179345365]}, "1051": {"P": [[-2.0, 7.0, 7.0], [7.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.29100367785969417]}, "1052": {"P": [[-1.0, 8.0, 9.0], [9.0, 2.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.29559067567648722]}, "1053": {"P": [[-2.0, 7.0, 6.0], [8.0, -1.0, 7.0], [9.0, 9.0, 0.0]], "dev": [0.26825327863052323]}, "1054": {"P": [[-1.0, 7.0, 6.0], [9.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.26812872933466148]}, "1055": {"P": [[-2.0, 7.0, 7.0], [7.0, -1.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.26800545014756394]}, "1056": {"P": [[-1.0, 8.0, 7.0], [9.0, 2.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.24807926726255544]}, "1057": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.25307671295709494]}, "1058": {"P": [[-1.0, 7.0, 7.0], [9.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.26764320291409971]}, "1059": {"P": [[1.0, 8.0, 9.0], [10.0, 2.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.2947005522948164]}, "1060": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 9.0], [7.0, 6.0, -1.0]], "dev": [0.29457805647451729]}, "1061": {"P": [[1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.26729227733354077]}, "1062": {"P": [[0.0, 8.0, 9.0], [7.0, 1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.23692606898711188]}, "1063": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.23681857349157961]}, "1064": {"P": [[1.0, 8.0, 9.0], [9.0, 2.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.2367124531433952]}, "1065": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.2366077046530439]}, "1066": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.25207185001746329]}, "1067": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.30641784738297634]}, "1068": {"P": [[1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.29363951894093415]}, "1069": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.26641119910788924]}, "1070": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.23610442433718701]}, "1071": {"P": [[1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.18152962799349343]}, "1072": {"P": [[1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.1814447824831473]}, "1073": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.23581870606255534]}, "1074": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.25126664135952465]}, "1075": {"P": [[0.0, 8.0, 7.0], [9.0, 2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.26580189552234057]}, "1076": {"P": [[-2.0, 7.0, 8.0], [9.0, 2.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.29277358730007769]}, "1077": {"P": [[-1.0, 6.0, 7.0], [9.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.26560847314734332]}, "1078": {"P": [[-1.0, 8.0, 7.0], [9.0, 0.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.23536930125703709]}, "1079": {"P": [[0.0, 9.0, 8.0], [9.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.18089820828903477]}, "1080": {"P": [[0.0, 8.0, 8.0], [9.0, 0.0, 9.0], [7.0, 7.0, -1.0]], "dev": [0.15861367370908794]}, "1081": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.20052067679800037]}, "1082": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 8.0], [10.0, 9.0, 2.0]], "dev": [0.25054255033884937]}, "1083": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [10.0, 8.0, 1.0]], "dev": [0.26505689498628843]}, "1084": {"P": [[0.0, 8.0, 10.0], [9.0, 2.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.29197878391727217]}, "1085": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.26488251555270409]}, "1086": {"P": [[-2.0, 7.0, 8.0], [7.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.25021040548398327]}, "1087": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.18037368854148905]}, "1088": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.10002281635169827]}, "1089": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.18025900798011008]}, "1090": {"P": [[-1.0, 7.0, 8.0], [9.0, 1.0, 10.0], [7.0, 8.0, 0.0]], "dev": [0.23442505528652785]}, "1091": {"P": [[-1.0, 8.0, 7.0], [10.0, 1.0, 9.0], [7.0, 6.0, -2.0]], "dev": [0.29134051601003358]}, "1092": {"P": [[-2.0, 8.0, 8.0], [8.0, 1.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.29125363022460643]}, "1093": {"P": [[-1.0, 8.0, 7.0], [9.0, 1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.26423173086414764]}, "1094": {"P": [[0.0, 8.0, 7.0], [10.0, 2.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.24960486982776423]}, "1095": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.19963574803163145]}, "1096": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.15779936037287648]}, "1097": {"P": [[1.0, 8.0, 9.0], [7.0, -1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.19953289567281962]}, "1098": {"P": [[1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.23389860776384391]}, "1099": {"P": [[1.0, 8.0, 9.0], [7.0, -2.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.26379200915719364]}, "1100": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.29059664771078714]}, "1101": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.29051924458127398]}, "1102": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, -2.0]], "dev": [0.26358745399112088]}, "1103": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.23361049270221512]}, "1104": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.19921831689468483]}, "1105": {"P": [[1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.19917908681764995]}, "1106": {"P": [[-1.0, 8.0, 7.0], [7.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.29014775933479448]}, "1107": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 9.0], [8.0, 9.0, 2.0]], "dev": [0.26326890912868334]}, "1108": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.29000635896505889]}, "1109": {"P": [[-2.0, 8.0, 7.0], [8.0, 1.0, 10.0], [7.0, 7.0, -1.0]], "dev": [0.3024427154453353]}, "1110": {"P": [[-2.0, 7.0, 7.0], [8.0, 1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.28986903473829206]}, "1111": {"P": [[-2.0, 7.0, 8.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.26303398781037474]}, "1112": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.23316955435450867]}, "1113": {"P": [[-2.0, 7.0, 8.0], [7.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.26292309563979682]}, "1114": {"P": [[0.0, 9.0, 8.0], [9.0, 1.0, 8.0], [7.0, 7.0, -2.0]], "dev": [0.23308491883111881]}, "1115": {"P": [[-2.0, 7.0, 6.0], [8.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.28954340624858882]}, "1116": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [7.0, 6.0, -1.0]], "dev": [0.2632488409725281]}, "1117": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.27678436669329121]}, "1118": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.26301071197221138]}, "1119": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.27654429448630014]}, "1120": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.26256902452244835]}, "1121": {"P": [[-2.0, 7.0, 7.0], [7.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.26252272459142589]}, "1122": {"P": [[-2.0, 8.0, 6.0], [8.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.28912940018282035]}, "1123": {"P": [[-1.0, 7.0, 8.0], [9.0, 2.0, 9.0], [7.0, 9.0, -1.0]], "dev": [0.2890741947080262]}, "1124": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.27596331171731908]}, "1125": {"P": [[-2.0, 7.0, 7.0], [7.0, -2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.27585038629983683]}, "1126": {"P": [[-1.0, 7.0, 7.0], [8.0, -2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.2477200097357789]}, "1127": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.24761423969376894]}, "1128": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.24750964984325388]}, "1129": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.24740623752222596]}, "1130": {"P": [[0.0, 7.0, 8.0], [10.0, 1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.27530197766562714]}, "1131": {"P": [[-1.0, 9.0, 7.0], [10.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.3005925145783867]}, "1132": {"P": [[-1.0, 8.0, 7.0], [9.0, 0.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.26147131285902653]}, "1133": {"P": [[0.0, 7.0, 8.0], [9.0, 1.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.27498581717300352]}, "1134": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.19765302240684129]}, "1135": {"P": [[0.0, 8.0, 7.0], [10.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.21523577282971015]}, "1136": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.19747866469435049]}, "1137": {"P": [[0.0, 9.0, 10.0], [8.0, 1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.24662100888222765]}, "1138": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 7.0], [10.0, 9.0, 1.0]], "dev": [0.26087874426151314]}, "1139": {"P": [[-1.0, 9.0, 9.0], [7.0, -2.0, 6.0], [9.0, 8.0, 1.0]], "dev": [0.29973372592673864]}, "1140": {"P": [[1.0, 10.0, 9.0], [7.0, 0.0, 8.0], [7.0, 8.0, -2.0]], "dev": [0.27428525050929886]}, "1141": {"P": [[-2.0, 7.0, 7.0], [9.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.274189377346929]}, "1142": {"P": [[-1.0, 8.0, 8.0], [10.0, 2.0, 10.0], [8.0, 7.0, 0.0]], "dev": [0.24616781206418079]}, "1143": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 9.0], [7.0, 7.0, -1.0]], "dev": [0.17752226477559768]}, "1144": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.17745063229700317]}, "1145": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.21440076383751641]}, "1146": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.24582578612655956]}, "1147": {"P": [[0.0, 8.0, 7.0], [9.0, 2.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.27363598192250588]}, "1148": {"P": [[-1.0, 8.0, 9.0], [7.0, 0.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.25997861651692233]}, "1149": {"P": [[-2.0, 6.0, 7.0], [9.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.27345977740942079]}, "1150": {"P": [[0.0, 8.0, 9.0], [9.0, -1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.21403124600663809]}, "1151": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.17699145257624715]}, "1152": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.098169950192783934]}, "1153": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.24527059194181525]}, "1154": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.23001474762742347]}, "1155": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.27295566178026975]}, "1156": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.28577388122515085]}, "1157": {"P": [[1.0, 8.0, 10.0], [10.0, 2.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.29802833059163281]}, "1158": {"P": [[-2.0, 7.0, 8.0], [8.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.24490736219206097]}, "1159": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.2134451861160811]}, "1160": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.12952461653414057]}, "1161": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.17646189872962881]}, "1162": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.24463651339429457]}, "1163": {"P": [[-1.0, 8.0, 8.0], [8.0, -2.0, 7.0], [9.0, 9.0, 2.0]], "dev": [0.27233991004025448]}, "1164": {"P": [[-2.0, 7.0, 8.0], [8.0, -2.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.29744768030114349]}, "1165": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.27219590810101446]}, "1166": {"P": [[-2.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.25862644977843374]}, "1167": {"P": [[0.0, 8.0, 9.0], [8.0, -1.0, 7.0], [7.0, 9.0, -1.0]], "dev": [0.24432232648953603]}, "1168": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.17617792412782712]}, "1169": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.17614309287092769]}, "1170": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.19535318197542498]}, "1171": {"P": [[-2.0, 6.0, 7.0], [9.0, 1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.2717874219223631]}, "1172": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.2582501485097452]}, "1173": {"P": [[-2.0, 6.0, 7.0], [9.0, 0.0, 10.0], [8.0, 9.0, 1.0]], "dev": [0.29676713601643667]}, "1174": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.27159628208660891]}, "1175": {"P": [[1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.2438751262122866]}, "1176": {"P": [[-1.0, 7.0, 8.0], [10.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.24382396933048364]}, "1177": {"P": [[2.0, 9.0, 9.0], [9.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.21256985594901104]}, "1178": {"P": [[0.0, 9.0, 8.0], [10.0, 1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.24372478630815078]}, "1179": {"P": [[2.0, 9.0, 9.0], [9.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.27129688909436961]}, "1180": {"P": [[-1.0, 7.0, 9.0], [9.0, 1.0, 9.0], [9.0, 7.0, -1.0]], "dev": [0.28058580146695411]}, "1181": {"P": [[-2.0, 7.0, 8.0], [10.0, 1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.29285695835931769]}, "1182": {"P": [[-2.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.28391992534729521]}, "1183": {"P": [[-1.0, 8.0, 8.0], [10.0, 1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.28023057600976364]}, "1184": {"P": [[-1.0, 8.0, 7.0], [8.0, 0.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.25760570333422672]}, "1185": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.24341021791593753]}, "1186": {"P": [[-2.0, 7.0, 8.0], [8.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.24336937746557619]}, "1187": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [7.0, 6.0, -1.0]], "dev": [0.29214965648685842]}, "1188": {"P": [[-2.0, 6.0, 7.0], [9.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.26670725789796618]}, "1189": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 9.0], [8.0, 7.0, -2.0]], "dev": [0.26659767798458278]}, "1190": {"P": [[-2.0, 8.0, 8.0], [7.0, -1.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.26648910038786155]}, "1191": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.2663815229862167]}, "1192": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.26627494365560833]}, "1193": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.27058359343755178]}, "1194": {"P": [[-2.0, 7.0, 8.0], [8.0, -1.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.29136699671830152]}, "1195": {"P": [[-1.0, 9.0, 7.0], [9.0, 2.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.27049644521077054]}, "1196": {"P": [[-1.0, 8.0, 9.0], [10.0, 2.0, 10.0], [8.0, 7.0, 0.0]], "dev": [0.26585856447805739]}, "1197": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.23779416384158941]}, "1198": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.22240502698577291]}, "1199": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.22231238857549815]}, "1200": {"P": [[-1.0, 9.0, 7.0], [9.0, -1.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.23750943165043431]}, "1201": {"P": [[-2.0, 7.0, 8.0], [9.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.2653602912234298]}, "1202": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 10.0], [7.0, 8.0, 0.0]], "dev": [0.29052775768255856]}, "1203": {"P": [[-1.0, 6.0, 8.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.29042694642315209]}, "1204": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.26507306482442095]}, "1205": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.23705635000114145]}, "1206": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.2052893749246561]}, "1207": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.20520854654327381]}, "1208": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.20512891906607916]}, "1209": {"P": [[1.0, 9.0, 8.0], [10.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.23671304322896378]}, "1210": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [8.0, 8.0, -2.0]], "dev": [0.26452475034208528]}, "1211": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 9.0], [8.0, 9.0, -2.0]], "dev": [0.289652791770178]}, "1212": {"P": [[-2.0, 8.0, 7.0], [8.0, -1.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.26434966015407635]}, "1213": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.26426354555451675]}, "1214": {"P": [[0.0, 9.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.20467622919632658]}, "1215": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.14474552847622876]}, "1216": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.14468603368898345]}, "1217": {"P": [[1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.20446588690146064]}, "1218": {"P": [[1.0, 9.0, 10.0], [9.0, 1.0, 8.0], [9.0, 10.0, 2.0]], "dev": [0.26384719055912709]}, "1219": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.2637667479164193]}, "1220": {"P": [[-1.0, 9.0, 8.0], [10.0, 2.0, 10.0], [8.0, 8.0, 1.0]], "dev": [0.26368724296938717]}, "1221": {"P": [[-1.0, 9.0, 7.0], [10.0, 1.0, 10.0], [7.0, 8.0, 0.0]], "dev": [0.27647299224137983]}, "1222": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 9.0], [7.0, 7.0, -2.0]], "dev": [0.23571301224648672]}, "1223": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.20407685110448831]}, "1224": {"P": [[0.0, 8.0, 8.0], [9.0, 1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.11780008655751112]}, "1225": {"P": [[-1.0, 7.0, 8.0], [10.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.20395647123255642]}, "1226": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.23544035115257242]}, "1227": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.27600109677713458]}, "1228": {"P": [[0.0, 9.0, 10.0], [9.0, 2.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.26308469790688505]}, "1229": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.2630135337051433]}, "1230": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 10.0], [7.0, 7.0, -1.0]], "dev": [0.23518391122000951]}, "1231": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.20362292279466199]}, "1232": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.143952039602426]}, "1233": {"P": [[1.0, 9.0, 9.0], [8.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.14391959833735363]}, "1234": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.20347153187634362]}, "1235": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.2348859358523907]}, "1236": {"P": [[1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.2625409026442459]}, "1237": {"P": [[-2.0, 7.0, 7.0], [7.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.28752332251590507]}, "1238": {"P": [[-2.0, 8.0, 8.0], [9.0, 2.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.26241400137713683]}, "1239": {"P": [[-2.0, 7.0, 8.0], [8.0, -1.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.26235189573101436]}, "1240": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.21946871797185721]}, "1241": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14371579030090242]}, "1242": {"P": [[1.0, 10.0, 8.0], [9.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.21937608335779901]}, "1243": {"P": [[-1.0, 7.0, 9.0], [9.0, 1.0, 10.0], [8.0, 9.0, 1.0]], "dev": [0.2621123881010648]}, "1244": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.26205472885803333]}, "1245": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.30996087683267881]}, "1246": {"P": [[0.0, 9.0, 7.0], [9.0, 2.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.28691934395584523]}, "1247": {"P": [[1.0, 8.0, 9.0], [10.0, 1.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.26188703804931168]}, "1248": {"P": [[0.0, 10.0, 8.0], [8.0, 0.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.23422648566666449]}, "1249": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.21908425547458893]}, "1250": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.21904664364032911]}, "1251": {"P": [[1.0, 10.0, 8.0], [9.0, 0.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.23409753801319416]}, "1252": {"P": [[-2.0, 7.0, 8.0], [8.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.26162504322471469]}, "1253": {"P": [[-1.0, 8.0, 9.0], [9.0, 2.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.2864953294426712]}, "1254": {"P": [[1.0, 10.0, 8.0], [8.0, 1.0, 9.0], [8.0, 8.0, -2.0]], "dev": [0.28643797751729183]}, "1255": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 11.0], [8.0, 8.0, -1.0]], "dev": [0.29084244018552285]}, "1256": {"P": [[1.0, 8.0, 10.0], [8.0, -1.0, 8.0], [9.0, 10.0, 2.0]], "dev": [0.27416105809077917]}, "1257": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.26138466988970366]}, "1258": {"P": [[-2.0, 7.0, 7.0], [9.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.26133916532005175]}, "1259": {"P": [[-1.0, 7.0, 9.0], [9.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.26129451225213435]}, "1260": {"P": [[-2.0, 7.0, 7.0], [9.0, -1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.25270922138023211]}, "1261": {"P": [[0.0, 8.0, 7.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.2657274196549676]}, "1262": {"P": [[-1.0, 7.0, 8.0], [10.0, 1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.25250846845234509]}, "1263": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.26552483318416842]}, "1264": {"P": [[-1.0, 8.0, 7.0], [10.0, -1.0, 9.0], [8.0, 8.0, 0.0]], "dev": [0.25231143425836094]}, "1265": {"P": [[-2.0, 7.0, 8.0], [9.0, 1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.27373322584367832]}, "1266": {"P": [[-2.0, 8.0, 7.0], [10.0, 2.0, 10.0], [7.0, 8.0, -1.0]], "dev": [0.28581152058605613]}, "1267": {"P": [[-2.0, 7.0, 8.0], [9.0, 0.0, 10.0], [8.0, 7.0, -1.0]], "dev": [0.26513032010588256]}, "1268": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.23810277588407547]}, "1269": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.23801138449479181]}, "1270": {"P": [[-1.0, 9.0, 7.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.23792095491414686]}, "1271": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 10.0], [7.0, 7.0, -1.0]], "dev": [0.23783148522646114]}, "1272": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.26465701801333019]}, "1273": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 8.0], [11.0, 9.0, 1.0]], "dev": [0.26456498483381707]}, "1274": {"P": [[-1.0, 7.0, 9.0], [10.0, 0.0, 9.0], [7.0, 7.0, -2.0]], "dev": [0.2888838240990062]}, "1275": {"P": [[-2.0, 8.0, 7.0], [8.0, 1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.27333420029025002]}, "1276": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, -2.0]], "dev": [0.25120649640765419]}, "1277": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.23731471705519891]}, "1278": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.18989494021328016]}, "1279": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.20680404480739303]}, "1280": {"P": [[0.0, 8.0, 8.0], [10.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.18974706743141448]}, "1281": {"P": [[2.0, 10.0, 9.0], [10.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.26385994256456102]}, "1282": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [8.0, 8.0, -2.0]], "dev": [0.250703029834005]}, "1283": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 7.0], [10.0, 9.0, 1.0]], "dev": [0.28805874654869557]}, "1284": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.26360974252858227]}, "1285": {"P": [[-1.0, 7.0, 7.0], [8.0, -1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.23667861587810626]}, "1286": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.20629548111082374]}, "1287": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.17062603219767714]}, "1288": {"P": [[1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.17056492375425589]}, "1289": {"P": [[-2.0, 7.0, 8.0], [9.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.23638296441245191]}, "1290": {"P": [[-1.0, 10.0, 8.0], [9.0, 0.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.26313228491794388]}, "1291": {"P": [[-1.0, 8.0, 7.0], [10.0, 2.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.26305566132401254]}, "1292": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.27540746368165137]}, "1293": {"P": [[1.0, 8.0, 9.0], [10.0, 2.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.26290492849063402]}, "1294": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.22142303125304905]}, "1295": {"P": [[-1.0, 9.0, 9.0], [7.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.23596712933219288]}, "1296": {"P": [[0.0, 8.0, 8.0], [9.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.094391329702282104]}, "1297": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.17007039994508927]}, "1298": {"P": [[1.0, 9.0, 8.0], [9.0, -1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.20554263454856517]}, "1299": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.26247271236460196]}, "1300": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 10.0], [8.0, 9.0, 1.0]], "dev": [0.24938375325120196]}, "1301": {"P": [[-2.0, 9.0, 8.0], [9.0, 1.0, 10.0], [7.0, 7.0, -1.0]], "dev": [0.28660026173942688]}, "1302": {"P": [[1.0, 9.0, 9.0], [8.0, -2.0, 8.0], [9.0, 10.0, 2.0]], "dev": [0.26226775311840095]}, "1303": {"P": [[1.0, 10.0, 8.0], [8.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.23546360743478068]}, "1304": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.16975394679895359]}, "1305": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.12453913000739175]}, "1306": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.20512262135275755]}, "1307": {"P": [[-1.0, 9.0, 9.0], [9.0, 2.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.23523338003925581]}, "1308": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.28610039036977447]}, "1309": {"P": [[-2.0, 7.0, 8.0], [10.0, 0.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.28603199804847557]}, "1310": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.2487716623423733]}, "1311": {"P": [[-1.0, 10.0, 8.0], [8.0, 0.0, 9.0], [8.0, 7.0, -1.0]], "dev": [0.26169687120924029]}, "1312": {"P": [[0.0, 8.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.18799133360825679]}, "1313": {"P": [[-1.0, 8.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.1694330994978992]}, "1314": {"P": [[0.0, 8.0, 9.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.16940334340410396]}, "1315": {"P": [[1.0, 10.0, 9.0], [8.0, 1.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.23481533831032328]}, "1316": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.24844478630662009]}, "1317": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.26135244507798944]}, "1318": {"P": [[-2.0, 8.0, 7.0], [10.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.28544998057468357]}, "1319": {"P": [[-2.0, 7.0, 9.0], [9.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.30764484392569741]}, "1320": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.26119092970739727]}, "1321": {"P": [[-1.0, 8.0, 8.0], [10.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.23453839865252707]}, "1322": {"P": [[2.0, 10.0, 10.0], [8.0, -1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.20447379623333262]}, "1323": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.23445296669214044]}, "1324": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.23441153155790356]}, "1325": {"P": [[-2.0, 8.0, 7.0], [8.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.26093741156485456]}, "1326": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.28567952175353339]}, "1327": {"P": [[-1.0, 7.0, 9.0], [10.0, 1.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.28492740700291685]}, "1328": {"P": [[-2.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.26079462285316002]}, "1329": {"P": [[-1.0, 7.0, 9.0], [7.0, -2.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.28481922639972479]}, "1330": {"P": [[1.0, 9.0, 10.0], [8.0, -2.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.23418072058565911]}, "1331": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.2341451991208833]}, "1332": {"P": [[-1.0, 8.0, 9.0], [8.0, -1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.24771749599028087]}, "1333": {"P": [[-2.0, 8.0, 9.0], [9.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.27321476126024841]}, "1334": {"P": [[0.0, 10.0, 8.0], [10.0, 1.0, 9.0], [7.0, 7.0, -2.0]], "dev": [0.27281026177770257]}, "1335": {"P": [[-2.0, 8.0, 9.0], [8.0, -1.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.27301791051387336]}, "1336": {"P": [[0.0, 8.0, 8.0], [11.0, 1.0, 11.0], [9.0, 8.0, 1.0]], "dev": [0.27292065497402918]}, "1337": {"P": [[2.0, 9.0, 10.0], [9.0, 2.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.28455737727014258]}, "1338": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.26036842471461125]}, "1339": {"P": [[-1.0, 9.0, 9.0], [7.0, -2.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.24751230621805634]}, "1340": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.23385339266855651]}, "1341": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.2337653918829613]}, "1342": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.24724309428863245]}, "1343": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.24715502617186796]}, "1344": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.24706779002703763]}, "1345": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.27208018288913211]}, "1346": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.29495809252182009]}, "1347": {"P": [[-2.0, 9.0, 8.0], [8.0, 0.0, 7.0], [9.0, 10.0, 0.0]], "dev": [0.28361608298383595]}, "1348": {"P": [[0.0, 9.0, 10.0], [8.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.23317383151920984]}, "1349": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.21870350551877832]}, "1350": {"P": [[1.0, 8.0, 10.0], [9.0, 1.0, 10.0], [9.0, 9.0, 0.0]], "dev": [0.21862539907476239]}, "1351": {"P": [[1.0, 9.0, 8.0], [10.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.21854820334595221]}, "1352": {"P": [[-1.0, 8.0, 8.0], [10.0, -1.0, 9.0], [8.0, 8.0, 0.0]], "dev": [0.21847191661475585]}, "1353": {"P": [[1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [10.0, 11.0, 1.0]], "dev": [0.24631984212855199]}, "1354": {"P": [[-2.0, 7.0, 7.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.27130163608464986]}, "1355": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 7.0], [10.0, 11.0, 2.0]], "dev": [0.28291609632437464]}, "1356": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.24608527289421969]}, "1357": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 7.0], [9.0, 10.0, 0.0]], "dev": [0.23247544406895665]}, "1358": {"P": [[0.0, 10.0, 9.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.21803318835887284]}, "1359": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.16763254773814532]}, "1360": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.16757111268745517]}, "1361": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.21782595504431895]}, "1362": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 11.0], [8.0, 7.0, -1.0]], "dev": [0.24563799461576211]}, "1363": {"P": [[-1.0, 8.0, 8.0], [10.0, -1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.27058392231961259]}, "1364": {"P": [[0.0, 7.0, 9.0], [10.0, 0.0, 9.0], [8.0, 8.0, -2.0]], "dev": [0.27050788380133634]}, "1365": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.24542519826340439]}, "1366": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 10.0], [9.0, 7.0, -1.0]], "dev": [0.23184589848899506]}, "1367": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.18544685092962115]}, "1368": {"P": [[0.0, 8.0, 8.0], [9.0, -1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.1465894950376998]}, "1369": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.16706891904336058]}, "1370": {"P": [[0.0, 9.0, 8.0], [10.0, 0.0, 10.0], [8.0, 7.0, -1.0]], "dev": [0.21725220634111192]}, "1371": {"P": [[1.0, 9.0, 10.0], [10.0, 2.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.245021071487739]}, "1372": {"P": [[-2.0, 7.0, 8.0], [8.0, 0.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.26992594283099652]}, "1373": {"P": [[-1.0, 7.0, 8.0], [10.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.26985647337255858]}, "1374": {"P": [[-2.0, 9.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.26978772622438563]}, "1375": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.21696418108892945]}, "1376": {"P": [[1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.16674075302813604]}, "1377": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.092469030339893288]}, "1378": {"P": [[1.0, 10.0, 10.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.16665690315281692]}, "1379": {"P": [[-1.0, 9.0, 7.0], [8.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.23105558676569102]}, "1380": {"P": [[-1.0, 8.0, 7.0], [10.0, 2.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.24446788199657726]}, "1381": {"P": [[1.0, 9.0, 11.0], [10.0, 2.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.28095733419546132]}, "1382": {"P": [[2.0, 10.0, 9.0], [10.0, 2.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.26926356967902815]}, "1383": {"P": [[-1.0, 9.0, 8.0], [8.0, -1.0, 9.0], [9.0, 7.0, -1.0]], "dev": [0.24429744075607673]}, "1384": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.21650015921422255]}, "1385": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.18459708765162106]}, "1386": {"P": [[0.0, 9.0, 8.0], [9.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.14591954558323833]}, "1387": {"P": [[0.0, 9.0, 8.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.18452245967556719]}, "1388": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.23058908919508531]}, "1389": {"P": [[-1.0, 9.0, 7.0], [10.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.24397722192592203]}, "1390": {"P": [[-1.0, 9.0, 7.0], [8.0, 1.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.26878476377712618]}, "1391": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.26872806282485234]}, "1392": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.24382735408818859]}, "1393": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.26861674395512958]}, "1394": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.1842918135217714]}, "1395": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.1842627138254222]}, "1396": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.21598828188691102]}, "1397": {"P": [[-2.0, 7.0, 7.0], [9.0, 0.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.24359259042711284]}, "1398": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [10.0, 10.0, 2.0]], "dev": [0.26835052636417789]}, "1399": {"P": [[-2.0, 7.0, 7.0], [8.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.29098955861906506]}, "1400": {"P": [[-2.0, 8.0, 8.0], [10.0, 2.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.26824883898592183]}, "1401": {"P": [[-2.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.2681990176626432]}, "1402": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.21577720475694578]}, "1403": {"P": [[-1.0, 9.0, 7.0], [9.0, 1.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.24333539091063722]}, "1404": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.21571338976427537]}, "1405": {"P": [[-1.0, 7.0, 9.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.24325554257999321]}, "1406": {"P": [[-2.0, 7.0, 8.0], [10.0, 2.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.26796007333963073]}, "1407": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 8.0], [7.0, 8.0, -2.0]], "dev": [0.27946233024696926]}, "1408": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [11.0, 11.0, 0.0]], "dev": [0.27609446269306781]}, "1409": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.27936579780286191]}, "1410": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.26421843861720318]}, "1411": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.26412621479269754]}, "1412": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.24299897752276378]}, "1413": {"P": [[1.0, 8.0, 10.0], [9.0, -1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.24296521112258887]}, "1414": {"P": [[0.0, 11.0, 10.0], [8.0, -1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.26385384267929546]}, "1415": {"P": [[-1.0, 8.0, 7.0], [11.0, 0.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.26376448084396414]}, "1416": {"P": [[-1.0, 8.0, 7.0], [10.0, -1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.26367583131439604]}, "1417": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.27900534458062703]}, "1418": {"P": [[2.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.2751744642837079]}, "1419": {"P": [[-1.0, 8.0, 7.0], [9.0, -2.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.26341414376095934]}, "1420": {"P": [[0.0, 10.0, 10.0], [10.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.22470952390875193]}, "1421": {"P": [[1.0, 9.0, 10.0], [9.0, 2.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.23819725132964664]}, "1422": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.22455022104938005]}, "1423": {"P": [[-2.0, 9.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.23803618607124757]}, "1424": {"P": [[-1.0, 9.0, 10.0], [8.0, 0.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.22439413813966133]}, "1425": {"P": [[-2.0, 8.0, 7.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.26290982779801519]}, "1426": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.27448774780853563]}, "1427": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [8.0, 8.0, 1.0]], "dev": [0.26274733186971155]}, "1428": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.26266712985700191]}, "1429": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.23757127937998937]}, "1430": {"P": [[0.0, 9.0, 8.0], [10.0, 0.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.20951909057239981]}, "1431": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.20944902859860481]}, "1432": {"P": [[-1.0, 8.0, 8.0], [10.0, -1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.20937980661596522]}, "1433": {"P": [[1.0, 10.0, 9.0], [9.0, 0.0, 8.0], [9.0, 11.0, 1.0]], "dev": [0.23727647241734881]}, "1434": {"P": [[0.0, 8.0, 10.0], [8.0, -1.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.26220047948051944]}, "1435": {"P": [[0.0, 9.0, 8.0], [8.0, 1.0, 9.0], [11.0, 11.0, 1.0]], "dev": [0.26212511924850723]}, "1436": {"P": [[-2.0, 8.0, 7.0], [10.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.26205044549862161]}, "1437": {"P": [[-2.0, 7.0, 8.0], [10.0, 1.0, 11.0], [9.0, 8.0, 0.0]], "dev": [0.26197645692726762]}, "1438": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.20898203009778368]}, "1439": {"P": [[1.0, 10.0, 9.0], [10.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.17661508303706366]}, "1440": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.15795045496290658]}, "1441": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.17650070146595864]}, "1442": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.20873345352569589]}, "1443": {"P": [[2.0, 9.0, 10.0], [9.0, -1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.26154684110990561]}, "1444": {"P": [[0.0, 8.0, 9.0], [11.0, 1.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.26147761219671323]}, "1445": {"P": [[-2.0, 9.0, 8.0], [9.0, 0.0, 10.0], [8.0, 7.0, -1.0]], "dev": [0.26140905799468928]}, "1446": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.26134117719076727]}, "1447": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.23633856906383091]}, "1448": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.17613051968549814]}, "1449": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.13641087628156268]}, "1450": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.1760333103695394]}, "1451": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.23609705933136441]}, "1452": {"P": [[-1.0, 9.0, 10.0], [10.0, 2.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.26094796007227217]}, "1453": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.26088475620747642]}, "1454": {"P": [[-2.0, 7.0, 9.0], [9.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.27241949890240297]}, "1455": {"P": [[-2.0, 8.0, 7.0], [10.0, 1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.30450162409223963]}, "1456": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.19253979939731639]}, "1457": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.17572272227861263]}, "1458": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.0]}, "1459": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.17564239147206565]}, "1460": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.19236380015981042]}, "1461": {"P": [[-1.0, 7.0, 8.0], [10.0, -1.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.30408420580073003]}, "1462": {"P": [[-2.0, 8.0, 8.0], [9.0, -1.0, 10.0], [8.0, 9.0, 1.0]], "dev": [0.27192168378304904]}, "1463": {"P": [[1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.28296267446314677]}, "1464": {"P": [[-2.0, 8.0, 8.0], [9.0, 0.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.26023297122170319]}, "1465": {"P": [[1.0, 10.0, 9.0], [9.0, 2.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.2353424741401883]}, "1466": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.17539034553747535]}, "1467": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.1753580099625521]}, "1468": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.1753265862685382]}, "1469": {"P": [[1.0, 9.0, 10.0], [8.0, -1.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.23515241017793309]}, "1470": {"P": [[-1.0, 10.0, 8.0], [8.0, 0.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.25991062697614309]}, "1471": {"P": [[-2.0, 9.0, 8.0], [10.0, 2.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.28248825345757966]}, "1472": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.25980831537506038]}, "1473": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.28237564010240923]}, "1474": {"P": [[-2.0, 8.0, 8.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.22150455598570004]}, "1475": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.2348882401267528]}, "1476": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 10.0], [9.0, 9.0, 0.0]], "dev": [0.1566530731371685]}, "1477": {"P": [[-1.0, 9.0, 8.0], [11.0, 2.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.23480571656319429]}, "1478": {"P": [[-1.0, 8.0, 9.0], [10.0, 2.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.22135448151839782]}, "1479": {"P": [[-1.0, 7.0, 9.0], [11.0, 2.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.28205202254180667]}, "1480": {"P": [[1.0, 10.0, 8.0], [10.0, 1.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.25942446652597434]}, "1481": {"P": [[-2.0, 8.0, 7.0], [9.0, -2.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.27543709832629043]}, "1482": {"P": [[0.0, 8.0, 10.0], [8.0, -1.0, 8.0], [9.0, 11.0, 1.0]], "dev": [0.25933480018366528]}, "1483": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.2345745794967975]}, "1484": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.23453843762380802]}, "1485": {"P": [[-2.0, 8.0, 9.0], [8.0, -1.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.27506455934557317]}, "1486": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.23446818130362029]}, "1487": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.23443406387003454]}, "1488": {"P": [[-2.0, 8.0, 7.0], [10.0, 2.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.25908073967256218]}, "1489": {"P": [[-2.0, 9.0, 8.0], [8.0, -1.0, 7.0], [9.0, 10.0, -1.0]], "dev": [0.28556627219513953]}, "1490": {"P": [[-1.0, 8.0, 7.0], [10.0, -1.0, 8.0], [10.0, 10.0, 0.0]], "dev": [0.26330243730996034]}, "1491": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.26321537293427061]}, "1492": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.24690642997335024]}, "1493": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.26304317590534737]}, "1494": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [8.0, 8.0, -2.0]], "dev": [0.22086853199620191]}, "1495": {"P": [[-1.0, 7.0, 8.0], [10.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.26287354728739748]}, "1496": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.24677396363643528]}, "1497": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [7.0, 10.0, 0.0]], "dev": [0.28120686152492941]}, "1498": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.28477399958153243]}, "1499": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.26254196055374934]}, "1500": {"P": [[0.0, 10.0, 10.0], [10.0, 0.0, 10.0], [7.0, 7.0, -1.0]], "dev": [0.23826761933631851]}, "1501": {"P": [[1.0, 10.0, 10.0], [11.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.23819005086271081]}, "1502": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.23811316964845183]}, "1503": {"P": [[0.0, 9.0, 8.0], [11.0, 0.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.22497243222253424]}, "1504": {"P": [[-1.0, 10.0, 10.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.22489849740559906]}, "1505": {"P": [[2.0, 11.0, 11.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.23788663800492649]}, "1506": {"P": [[1.0, 9.0, 10.0], [11.0, 2.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.26198611155115031]}, "1507": {"P": [[-2.0, 9.0, 8.0], [9.0, -2.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.27319359354911127]}, "1508": {"P": [[-2.0, 8.0, 8.0], [8.0, -2.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.26183296530014299]}, "1509": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.23759414715645555]}, "1510": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.21060970910275909]}, "1511": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.21054255589903551]}, "1512": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.21047615309926579]}, "1513": {"P": [[1.0, 11.0, 10.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.21041049943795104]}, "1514": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.22419843822552812]}, "1515": {"P": [[-2.0, 10.0, 9.0], [8.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.27258648223830328]}, "1516": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.28333349383805412]}, "1517": {"P": [[-2.0, 7.0, 7.0], [9.0, -1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.26117465340669427]}, "1518": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 10.0], [7.0, 8.0, -1.0]], "dev": [0.23697558893890372]}, "1519": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.21003223802610371]}, "1520": {"P": [[-1.0, 9.0, 9.0], [8.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.16148280375118335]}, "1521": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.16142961783603321]}, "1522": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.20985311701540213]}, "1523": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.22362876814604443]}, "1524": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.23659330059599876]}, "1525": {"P": [[0.0, 9.0, 8.0], [11.0, 0.0, 10.0], [9.0, 7.0, -1.0]], "dev": [0.27188123932945546]}, "1526": {"P": [[-2.0, 8.0, 9.0], [10.0, 2.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.26056622022147652]}, "1527": {"P": [[1.0, 10.0, 9.0], [9.0, 1.0, 10.0], [8.0, 10.0, -1.0]], "dev": [0.23641108511026859]}, "1528": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 8.0], [10.0, 11.0, 1.0]], "dev": [0.20951471896022292]}, "1529": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.16103772794505239]}, "1530": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.14121292177854847]}, "1531": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.17854864112689103]}, "1532": {"P": [[2.0, 11.0, 10.0], [9.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.22311536866132453]}, "1533": {"P": [[1.0, 9.0, 11.0], [8.0, -1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.23606434924647896]}, "1534": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.26006660899242467]}, "1535": {"P": [[-2.0, 9.0, 8.0], [9.0, 0.0, 10.0], [9.0, 7.0, -1.0]], "dev": [0.2712345979859101]}, "1536": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.23589976352986206]}, "1537": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [10.0, 11.0, 2.0]], "dev": [0.22285412369824423]}, "1538": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.16066750888715217]}, "1539": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.089103259525875667]}, "1540": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.1605952821482364]}, "1541": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.20887109130065021]}, "1542": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [7.0, 9.0, -1.0]], "dev": [0.25960519468104493]}, "1543": {"P": [[-2.0, 8.0, 7.0], [9.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.25955017495343763]}, "1544": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.2594957419268365]}, "1545": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 10.0], [11.0, 10.0, 2.0]], "dev": [0.23544074031442114]}, "1546": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 11.0], [9.0, 9.0, 1.0]], "dev": [0.22242642433416202]}, "1547": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.17791175055448327]}, "1548": {"P": [[0.0, 9.0, 9.0], [10.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.14063606588477315]}, "1549": {"P": [[0.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.17784687872372279]}, "1550": {"P": [[1.0, 9.0, 10.0], [8.0, -2.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.20849605402709689]}, "1551": {"P": [[1.0, 9.0, 10.0], [8.0, -1.0, 9.0], [10.0, 8.0, -1.0]], "dev": [0.23516333805375775]}, "1552": {"P": [[-2.0, 8.0, 8.0], [8.0, -2.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.25908126333846848]}, "1553": {"P": [[1.0, 9.0, 10.0], [9.0, -2.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.28095290804140777]}, "1554": {"P": [[-2.0, 9.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.25898343152635078]}, "1555": {"P": [[-1.0, 8.0, 8.0], [10.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.23499096350568749]}, "1556": {"P": [[-2.0, 8.0, 8.0], [10.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.20827751881304687]}, "1557": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.17761958371419967]}, "1558": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.17759476601804589]}, "1559": {"P": [[-2.0, 8.0, 7.0], [9.0, 1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.25874888145648023]}, "1560": {"P": [[0.0, 10.0, 10.0], [10.0, 1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.23478948550727857]}, "1561": {"P": [[-2.0, 8.0, 7.0], [9.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.25865904934384476]}, "1562": {"P": [[0.0, 11.0, 11.0], [9.0, 1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.28134576477962264]}, "1563": {"P": [[-1.0, 8.0, 10.0], [8.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.26972653698246912]}, "1564": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 10.0], [10.0, 8.0, -1.0]], "dev": [0.25852854548835513]}, "1565": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.2346034060420894]}, "1566": {"P": [[0.0, 9.0, 9.0], [11.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.20796833681244833]}, "1567": {"P": [[-1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.23453325063428215]}, "1568": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.20791465422879774]}, "1569": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 2.0]], "dev": [0.25832228124115947]}, "1570": {"P": [[-2.0, 8.0, 8.0], [8.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.25828270444916485]}, "1571": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 8.0], [9.0, 11.0, 1.0]], "dev": [0.26937514695023029]}, "1572": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.25820521778551336]}, "1573": {"P": [[-1.0, 10.0, 8.0], [10.0, -1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.26971372051629794]}, "1574": {"P": [[-2.0, 8.0, 8.0], [8.0, -1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.25812994606187972]}, "1575": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.23427681275276349]}, "1576": {"P": [[-2.0, 8.0, 8.0], [10.0, 1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.23424745776815345]}, "1577": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 9.0], [9.0, 11.0, 2.0]], "dev": [0.25802117147338349]}, "1578": {"P": [[1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.25798601083218298]}, "1579": {"P": [[0.0, 10.0, 9.0], [7.0, -1.0, 9.0], [11.0, 10.0, 2.0]], "dev": [0.26905805784339876]}, "1580": {"P": [[1.0, 8.0, 9.0], [10.0, 1.0, 11.0], [10.0, 10.0, 0.0]], "dev": [0.23427749096557485]}, "1581": {"P": [[-1.0, 10.0, 10.0], [7.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.24637193196256962]}, "1582": {"P": [[1.0, 9.0, 10.0], [10.0, 2.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.23412788271262699]}, "1583": {"P": [[1.0, 10.0, 10.0], [11.0, 1.0, 11.0], [9.0, 8.0, 1.0]], "dev": [0.24622090915618117]}, "1584": {"P": [[-1.0, 9.0, 8.0], [11.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.23398078945305797]}, "1585": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.24607229107336837]}, "1586": {"P": [[1.0, 10.0, 9.0], [10.0, 2.0, 10.0], [11.0, 11.0, 2.0]], "dev": [0.25758790602417098]}, "1587": {"P": [[-1.0, 10.0, 11.0], [8.0, -1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.26860172657691278]}, "1588": {"P": [[-2.0, 7.0, 9.0], [9.0, -1.0, 9.0], [10.0, 10.0, 2.0]], "dev": [0.27938010841245747]}, "1589": {"P": [[2.0, 9.0, 10.0], [9.0, 0.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.24578223824234047]}, "1590": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.24571121592336004]}, "1591": {"P": [[1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.22066196944417196]}, "1592": {"P": [[-2.0, 8.0, 9.0], [10.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.22059528407736631]}, "1593": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.22052924864991499]}, "1594": {"P": [[1.0, 11.0, 11.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.22046386212212754]}, "1595": {"P": [[-1.0, 9.0, 10.0], [8.0, -1.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.24536500112110027]}, "1596": {"P": [[-2.0, 9.0, 9.0], [8.0, -1.0, 7.0], [10.0, 11.0, 1.0]], "dev": [0.27857836813848069]}, "1597": {"P": [[-2.0, 8.0, 9.0], [9.0, -2.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.2678741698665687]}, "1598": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 11.0], [10.0, 8.0, 0.0]], "dev": [0.23302088893252404]}, "1599": {"P": [[-2.0, 8.0, 9.0], [8.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.24509864690308633]}, "1600": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 8.0], [10.0, 10.0, 0.0]], "dev": [0.17615759448618637]}, "1601": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.19186329922686141]}, "1602": {"P": [[-1.0, 9.0, 8.0], [10.0, -1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.1760474229073451]}, "1603": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 9.0], [11.0, 11.0, 1.0]], "dev": [0.21990441107931802]}, "1604": {"P": [[2.0, 10.0, 10.0], [10.0, 1.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.23264642832312624]}, "1605": {"P": [[-2.0, 7.0, 8.0], [9.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.26733145310062573]}, "1606": {"P": [[1.0, 9.0, 10.0], [11.0, 2.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.26726604519060526]}, "1607": {"P": [[-1.0, 10.0, 9.0], [8.0, -1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.24459398522379466]}, "1608": {"P": [[0.0, 11.0, 10.0], [8.0, 0.0, 9.0], [8.0, 8.0, -2.0]], "dev": [0.24453351265192902]}, "1609": {"P": [[0.0, 10.0, 9.0], [11.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.21956021762690825]}, "1610": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.1583373946143766]}, "1611": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.15829202525557753]}, "1612": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.19128142833144782]}, "1613": {"P": [[0.0, 9.0, 8.0], [9.0, 1.0, 10.0], [11.0, 11.0, 1.0]], "dev": [0.2193434082731352]}, "1614": {"P": [[1.0, 9.0, 9.0], [8.0, -2.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.24418275362922034]}, "1615": {"P": [[2.0, 11.0, 10.0], [9.0, -2.0, 9.0], [7.0, 8.0, -2.0]], "dev": [0.30690988339393971]}, "1616": {"P": [[0.0, 8.0, 8.0], [11.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.23196279804249464]}, "1617": {"P": [[0.0, 9.0, 10.0], [7.0, -1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.24401509261286622]}, "1618": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.19100038855162357]}, "1619": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.15795946852866147]}, "1620": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.087617654707785361]}, "1621": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.21893984417961176]}, "1622": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.20533969361826904]}, "1623": {"P": [[0.0, 8.0, 9.0], [10.0, -1.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.24369507222907771]}, "1624": {"P": [[-2.0, 8.0, 8.0], [9.0, -1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.25516061215838415]}, "1625": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.26612431705433254]}, "1626": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 9.0], [8.0, 10.0, -2.0]], "dev": [0.26606947770606781]}, "1627": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.21866319215815413]}, "1628": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.19058812228102923]}, "1629": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.11566283746497075]}, "1630": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.15758944174985864]}, "1631": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.21849101527310452]}, "1632": {"P": [[-2.0, 8.0, 8.0], [8.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.24325288712956442]}, "1633": {"P": [[-1.0, 9.0, 8.0], [9.0, 2.0, 10.0], [11.0, 11.0, 1.0]], "dev": [0.26570007070234669]}, "1634": {"P": [[-2.0, 7.0, 8.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.26564935391623107]}, "1635": {"P": [[0.0, 8.0, 9.0], [11.0, 1.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.24311547467029807]}, "1636": {"P": [[1.0, 9.0, 10.0], [9.0, -1.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.23101264805992217]}, "1637": {"P": [[-2.0, 9.0, 8.0], [10.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.21825095711660777]}, "1638": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.15738275276086997]}, "1639": {"P": [[1.0, 10.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.15736056587258349]}, "1640": {"P": [[1.0, 10.0, 9.0], [10.0, 0.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.17453617416636977]}, "1641": {"P": [[-2.0, 7.0, 8.0], [10.0, 1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.24285545834241851]}, "1642": {"P": [[-1.0, 9.0, 10.0], [10.0, 2.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.23077268338689055]}, "1643": {"P": [[-2.0, 8.0, 7.0], [9.0, 1.0, 10.0], [10.0, 11.0, 0.0]], "dev": [0.26521578878690349]}, "1644": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 10.0], [9.0, 11.0, 0.0]], "dev": [0.27570491330105579]}, "1645": {"P": [[1.0, 10.0, 11.0], [9.0, -2.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.24269299460144383]}, "1646": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.21793135121814836]}, "1647": {"P": [[-2.0, 9.0, 8.0], [9.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.21789880758378863]}, "1648": {"P": [[-2.0, 8.0, 8.0], [10.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.18996952846137474]}, "1649": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.21783548738103775]}, "1650": {"P": [[-2.0, 8.0, 8.0], [9.0, -1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.24250203970043568]}, "1651": {"P": [[-2.0, 7.0, 9.0], [9.0, -2.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.28551184109777722]}, "1652": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 10.0], [8.0, 10.0, -1.0]], "dev": [0.26482293437223364]}, "1653": {"P": [[-1.0, 7.0, 8.0], [10.0, -1.0, 11.0], [9.0, 9.0, -1.0]], "dev": [0.28272956847299907]}, "1654": {"P": [[-2.0, 8.0, 8.0], [9.0, 0.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.25379684806527913]}, "1655": {"P": [[-2.0, 8.0, 7.0], [8.0, -1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.28532790223917892]}, "1656": {"P": [[-1.0, 9.0, 8.0], [11.0, 2.0, 11.0], [8.0, 9.0, -1.0]], "dev": [0.23029167061284864]}, "1657": {"P": [[0.0, 9.0, 10.0], [8.0, -1.0, 9.0], [11.0, 10.0, 2.0]], "dev": [0.21760559739923774]}, "1658": {"P": [[-2.0, 9.0, 8.0], [9.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.21757947341046893]}, "1659": {"P": [[-1.0, 10.0, 10.0], [9.0, 1.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.26140268499427188]}, "1660": {"P": [[-1.0, 9.0, 9.0], [10.0, 2.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.24216005470973764]}, "1661": {"P": [[-2.0, 8.0, 9.0], [9.0, -1.0, 9.0], [9.0, 8.0, -2.0]], "dev": [0.25018244427744452]}, "1662": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.2611708338524053]}, "1663": {"P": [[-2.0, 9.0, 8.0], [9.0, -2.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.26109459358552434]}, "1664": {"P": [[2.0, 11.0, 10.0], [10.0, 1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.24995720753065157]}, "1665": {"P": [[0.0, 9.0, 9.0], [8.0, -2.0, 9.0], [11.0, 9.0, 1.0]], "dev": [0.24200876506694863]}, "1666": {"P": [[-1.0, 9.0, 9.0], [11.0, 2.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.24198006669977185]}, "1667": {"P": [[-2.0, 9.0, 8.0], [9.0, 1.0, 10.0], [9.0, 11.0, 1.0]], "dev": [0.26425677277545168]}, "1668": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.24192422117156262]}, "1669": {"P": [[1.0, 10.0, 8.0], [11.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.26064805289777632]}, "1670": {"P": [[-2.0, 8.0, 8.0], [9.0, -1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.23795411012814899]}, "1671": {"P": [[1.0, 10.0, 11.0], [11.0, 2.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.23788461257109694]}, "1672": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 11.0], [8.0, 8.0, -1.0]], "dev": [0.23781567008793972]}, "1673": {"P": [[1.0, 9.0, 10.0], [11.0, 2.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.23774728184068092]}, "1674": {"P": [[-1.0, 8.0, 8.0], [11.0, -1.0, 10.0], [9.0, 9.0, 0.0]], "dev": [0.23767944698993451]}, "1675": {"P": [[-2.0, 10.0, 9.0], [9.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.2602200758240677]}, "1676": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.26015053904539193]}, "1677": {"P": [[-2.0, 7.0, 7.0], [9.0, -1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.28087077074660455]}, "1678": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.26001299493471808]}, "1679": {"P": [[1.0, 11.0, 9.0], [11.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.23734854420903381]}, "1680": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.21229954698869435]}, "1681": {"P": [[0.0, 10.0, 11.0], [9.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.19857269967998781]}, "1682": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 11.0], [8.0, 8.0, -1.0]], "dev": [0.19851372663492189]}, "1683": {"P": [[-2.0, 9.0, 8.0], [10.0, -1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.21211828945803252]}, "1684": {"P": [[1.0, 10.0, 11.0], [10.0, 2.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.23703134964659811]}, "1685": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 8.0], [11.0, 9.0, 1.0]], "dev": [0.25954756565207898]}, "1686": {"P": [[-1.0, 10.0, 9.0], [11.0, 2.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.25948309363674621]}, "1687": {"P": [[-1.0, 10.0, 10.0], [9.0, 1.0, 8.0], [10.0, 11.0, 1.0]], "dev": [0.25941912367835968]}, "1688": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.23678739241140018]}, "1689": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.21177196310007923]}, "1690": {"P": [[0.0, 9.0, 8.0], [10.0, 0.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.18339998226497878]}, "1691": {"P": [[1.0, 10.0, 9.0], [11.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.18334847273489369]}, "1692": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 11.0], [8.0, 9.0, -1.0]], "dev": [0.18329763811160013]}, "1693": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [11.0, 10.0, 0.0]], "dev": [0.21155299054234167]}, "1694": {"P": [[0.0, 8.0, 9.0], [11.0, 0.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.2364376585887849]}, "1695": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.25892534118570665]}, "1696": {"P": [[0.0, 10.0, 8.0], [11.0, 1.0, 11.0], [8.0, 10.0, 0.0]], "dev": [0.25886585338545859]}, "1697": {"P": [[-2.0, 8.0, 9.0], [9.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.23627003207930591]}, "1698": {"P": [[-1.0, 10.0, 9.0], [11.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.23621522344304999]}, "1699": {"P": [[-1.0, 9.0, 8.0], [10.0, 0.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.18296060626272997]}, "1700": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.12938874669326161]}, "1701": {"P": [[1.0, 10.0, 10.0], [10.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.12935072560400779]}, "1702": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.18282618349708968]}, "1703": {"P": [[1.0, 9.0, 10.0], [11.0, 2.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.23594914250960197]}, "1704": {"P": [[-2.0, 8.0, 9.0], [10.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.23589751264565181]}, "1705": {"P": [[-2.0, 9.0, 9.0], [9.0, -2.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.25835259407760708]}, "1706": {"P": [[-1.0, 8.0, 8.0], [11.0, 0.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.23579583221752459]}, "1707": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, -2.0]], "dev": [0.24725087460176526]}, "1708": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [9.0, 8.0, -1.0]], "dev": [0.21081559931307453]}, "1709": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.18253569753535942]}, "1710": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.105372716199105]}, "1711": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.18245861969135524]}, "1712": {"P": [[0.0, 10.0, 8.0], [11.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.21064101827768278]}, "1713": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.24694872802202825]}, "1714": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.23541003841781571]}, "1715": {"P": [[-2.0, 9.0, 9.0], [11.0, 2.0, 11.0], [9.0, 9.0, 1.0]], "dev": [0.25782850996647999]}, "1716": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.23531878650761695]}, "1717": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.21043567717148784]}, "1718": {"P": [[1.0, 9.0, 10.0], [11.0, 1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.18220937489165479]}, "1719": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.12882210042186484]}, "1720": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.12880129075989302]}, "1721": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.18211226324909813]}, "1722": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.21024453798357567]}, "1723": {"P": [[1.0, 10.0, 9.0], [10.0, -1.0, 9.0], [8.0, 9.0, -2.0]], "dev": [0.23501561487737724]}, "1724": {"P": [[-2.0, 8.0, 8.0], [10.0, -1.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.25739776366999928]}, "1725": {"P": [[1.0, 9.0, 11.0], [11.0, 2.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.29715817645061859]}, "1726": {"P": [[1.0, 10.0, 10.0], [10.0, 2.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.23489334948591584]}, "1727": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 10.0], [11.0, 9.0, 1.0]], "dev": [0.23485360980149048]}, "1728": {"P": [[-1.0, 9.0, 9.0], [8.0, -1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.19647484243439733]}, "1729": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.12865387144056017]}, "1730": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.19641531848822225]}, "1731": {"P": [[2.0, 11.0, 10.0], [10.0, 1.0, 11.0], [9.0, 8.0, -1.0]], "dev": [0.23469970421772002]}, "1732": {"P": [[-1.0, 8.0, 9.0], [11.0, 1.0, 11.0], [8.0, 10.0, 0.0]], "dev": [0.23466248658560965]}, "1733": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 9.0], [11.0, 12.0, 2.0]], "dev": [0.28732431921183965]}, "1734": {"P": [[1.0, 10.0, 11.0], [11.0, 2.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.25696387671273369]}, "1735": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.25692304672420585]}, "1736": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.23451862389764519]}, "1737": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.20975508259676601]}, "1738": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.19620070071778564]}, "1739": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.19617649666932488]}, "1740": {"P": [[0.0, 9.0, 10.0], [8.0, -2.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.20967209513987012]}, "1741": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.23434999491513306]}, "1742": {"P": [[-1.0, 10.0, 8.0], [11.0, 1.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.2566501234637803]}, "1743": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 11.0], [10.0, 11.0, 1.0]], "dev": [0.27714706615405771]}, "1744": {"P": [[0.0, 11.0, 9.0], [10.0, 2.0, 11.0], [8.0, 9.0, -1.0]], "dev": [0.25657626256923199]}, "1745": {"P": [[1.0, 9.0, 10.0], [12.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.27706440571114943]}, "1746": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 11.0], [11.0, 10.0, 2.0]], "dev": [0.24560242783352665]}, "1747": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.23416391516673005]}, "1748": {"P": [[-2.0, 8.0, 8.0], [9.0, 0.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.23413461518218415]}, "1749": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.23410580226301825]}, "1750": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.24547460601077728]}, "1751": {"P": [[0.0, 10.0, 9.0], [8.0, 1.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.27682661967821459]}, "1752": {"P": [[-1.0, 10.0, 9.0], [11.0, 2.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.25629892865930548]}, "1753": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 8.0], [12.0, 10.0, 1.0]], "dev": [0.28027668244352894]}, "1754": {"P": [[-2.0, 9.0, 10.0], [8.0, -1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.25999875609911816]}, "1755": {"P": [[1.0, 10.0, 9.0], [11.0, 2.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.25620233899048689]}, "1756": {"P": [[-2.0, 8.0, 9.0], [10.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.24529683654886644]}, "1757": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.2561401733897184]}, "1758": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.24900711503794976]}, "1759": {"P": [[-1.0, 9.0, 8.0], [9.0, -2.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.23774757490281992]}, "1760": {"P": [[-1.0, 9.0, 10.0], [9.0, -1.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.22593727332869162]}, "1761": {"P": [[-1.0, 10.0, 11.0], [10.0, 1.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.237615721177764]}, "1762": {"P": [[-1.0, 10.0, 9.0], [11.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.22580873991859454]}, "1763": {"P": [[-2.0, 10.0, 9.0], [9.0, -1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.23748586800356838]}, "1764": {"P": [[-1.0, 10.0, 11.0], [9.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.22568229351427566]}, "1765": {"P": [[1.0, 10.0, 12.0], [10.0, 1.0, 11.0], [8.0, 9.0, 0.0]], "dev": [0.25924474884010201]}, "1766": {"P": [[-2.0, 10.0, 10.0], [10.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.26945538071963121]}, "1767": {"P": [[-2.0, 9.0, 8.0], [9.0, 1.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.24501387077299791]}, "1768": {"P": [[-1.0, 10.0, 10.0], [8.0, 0.0, 8.0], [10.0, 11.0, 0.0]], "dev": [0.23716994973518929]}, "1769": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.21299694780067377]}, "1770": {"P": [[-1.0, 10.0, 10.0], [9.0, 0.0, 8.0], [11.0, 10.0, 1.0]], "dev": [0.2129384158390242]}, "1771": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.21288042588035591]}, "1772": {"P": [[-1.0, 9.0, 9.0], [11.0, 1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.21282297714900958]}, "1773": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 12.0], [9.0, 9.0, 1.0]], "dev": [0.23686640870913311]}, "1774": {"P": [[-1.0, 10.0, 11.0], [9.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.23680717778263072]}, "1775": {"P": [[-1.0, 10.0, 11.0], [9.0, 2.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.27875819411113262]}, "1776": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.25854657962665611]}, "1777": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 12.0], [11.0, 10.0, 1.0]], "dev": [0.25848584696461319]}, "1778": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.22485510501891931]}, "1779": {"P": [[0.0, 9.0, 10.0], [10.0, 2.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.21243592483131099]}, "1780": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.16998424528451031]}, "1781": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.18514933919907214]}, "1782": {"P": [[1.0, 10.0, 11.0], [10.0, 1.0, 11.0], [9.0, 9.0, 0.0]], "dev": [0.1698891319911911]}, "1783": {"P": [[1.0, 11.0, 11.0], [11.0, 2.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.23629609397558149]}, "1784": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.22453130185163164]}, "1785": {"P": [[-2.0, 9.0, 8.0], [11.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.25801624354082209]}, "1786": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 10.0], [11.0, 10.0, -1.0]], "dev": [0.26820693696172582]}, "1787": {"P": [[1.0, 9.0, 9.0], [11.0, 2.0, 11.0], [10.0, 10.0, -1.0]], "dev": [0.23608156417632695]}, "1788": {"P": [[1.0, 10.0, 11.0], [10.0, -1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.21197676395605214]}, "1789": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.18477569088896756]}, "1790": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.15283394806863548]}, "1791": {"P": [[1.0, 10.0, 11.0], [10.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.15279458214305125]}, "1792": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.21178644874227487]}, "1793": {"P": [[0.0, 11.0, 9.0], [9.0, 0.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.2357741884058431]}, "1794": {"P": [[-2.0, 9.0, 8.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.23572463173537761]}, "1795": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.25746948806667169]}, "1796": {"P": [[-2.0, 9.0, 9.0], [10.0, 1.0, 9.0], [11.0, 11.0, 2.0]], "dev": [0.24676273713096999]}, "1797": {"P": [[1.0, 10.0, 9.0], [10.0, -1.0, 10.0], [11.0, 10.0, 2.0]], "dev": [0.23557881407760289]}, "1798": {"P": [[1.0, 10.0, 11.0], [11.0, 1.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.19842254220143679]}, "1799": {"P": [[-2.0, 8.0, 9.0], [9.0, -1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.21147355879308985]}, "1800": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.0845945255787552]}, "1801": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.15243971243282933]}, "1802": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.18424967811384291]}, "1803": {"P": [[-2.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.23529994650431177]}, "1804": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.22358235812936467]}, "1805": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [12.0, 10.0, 1.0]], "dev": [0.25696680190345517]}, "1806": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 12.0], [10.0, 8.0, 0.0]], "dev": [0.25691893009010824]}, "1807": {"P": [[-2.0, 9.0, 9.0], [11.0, 2.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.23512342676454911]}, "1808": {"P": [[1.0, 10.0, 10.0], [11.0, 2.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.21110858120000101]}, "1809": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 11.0], [10.0, 9.0, 0.0]], "dev": [0.15220610262640252]}, "1810": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.11167204397904397]}, "1811": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.18394347292084159]}, "1812": {"P": [[-2.0, 9.0, 8.0], [10.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.21095969725049371]}, "1813": {"P": [[1.0, 11.0, 11.0], [11.0, 2.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.2565959109311477]}, "1814": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 11.0], [10.0, 10.0, -1.0]], "dev": [0.25655148307779996]}, "1815": {"P": [[0.0, 8.0, 9.0], [12.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.25650748253712485]}, "1816": {"P": [[-2.0, 9.0, 9.0], [10.0, 1.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.22310737960791369]}, "1817": {"P": [[0.0, 10.0, 9.0], [11.0, 2.0, 12.0], [8.0, 9.0, -1.0]], "dev": [0.2347146436973144]}, "1818": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.16861534128919914]}, "1819": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.15197599882543442]}, "1820": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.15195673075124028]}, "1821": {"P": [[-1.0, 9.0, 10.0], [10.0, 2.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.21065433428926736]}, "1822": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.22289589111027111]}, "1823": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.23449142514410576]}, "1824": {"P": [[2.0, 10.0, 10.0], [10.0, 0.0, 11.0], [10.0, 8.0, -1.0]], "dev": [0.25613058972741531]}, "1825": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.25609082328951421]}, "1826": {"P": [[-2.0, 9.0, 9.0], [10.0, 2.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.26622387311417228]}, "1827": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 10.0], [11.0, 11.0, 2.0]], "dev": [0.23435169785159932]}, "1828": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 10.0], [11.0, 10.0, 2.0]], "dev": [0.21044486977692703]}, "1829": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.18347022177289737]}, "1830": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 11.0], [10.0, 11.0, 1.0]], "dev": [0.21038948250753439]}, "1831": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [8.0, 10.0, -1.0]], "dev": [0.21036252780477804]}, "1832": {"P": [[0.0, 10.0, 11.0], [8.0, -2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.23418717205119988]}, "1833": {"P": [[-2.0, 8.0, 9.0], [9.0, -2.0, 8.0], [11.0, 11.0, 2.0]], "dev": [0.27572790912568618]}, "1834": {"P": [[-2.0, 8.0, 8.0], [9.0, 1.0, 11.0], [10.0, 11.0, 0.0]], "dev": [0.25575171733177521]}, "1835": {"P": [[-2.0, 9.0, 8.0], [11.0, -1.0, 9.0], [10.0, 8.0, -1.0]], "dev": [0.29482385477960182]}, "1836": {"P": [[-2.0, 9.0, 9.0], [10.0, 1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.23406359720957709]}, "1837": {"P": [[-2.0, 8.0, 9.0], [11.0, 2.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.25564614314809547]}, "1838": {"P": [[-1.0, 10.0, 9.0], [9.0, 1.0, 11.0], [10.0, 9.0, 0.0]], "dev": [0.21018755641779452]}, "1839": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.21016450872756579]}, "1840": {"P": [[-1.0, 9.0, 10.0], [11.0, 1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.22236331997886641]}, "1841": {"P": [[0.0, 9.0, 10.0], [12.0, 2.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.25597290391647365]}, "1842": {"P": [[-1.0, 10.0, 9.0], [10.0, 2.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.24492290310254625]}, "1843": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 10.0], [11.0, 11.0, -1.0]], "dev": [0.25583496598808741]}, "1844": {"P": [[1.0, 10.0, 12.0], [9.0, 1.0, 11.0], [9.0, 9.0, -1.0]], "dev": [0.2557666441711175]}, "1845": {"P": [[1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [12.0, 12.0, 1.0]], "dev": [0.26581592694645584]}, "1846": {"P": [[1.0, 10.0, 9.0], [10.0, 2.0, 10.0], [12.0, 12.0, 1.0]], "dev": [0.28490420259412641]}, "1847": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 10.0], [11.0, 11.0, 2.0]], "dev": [0.23376021172317754]}, "1848": {"P": [[-2.0, 8.0, 8.0], [9.0, -2.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.24496634477442764]}, "1849": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.23371073561675418]}, "1850": {"P": [[-2.0, 9.0, 8.0], [9.0, 1.0, 11.0], [10.0, 10.0, 0.0]], "dev": [0.23368664798223476]}, "1851": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 10.0], [10.0, 9.0, -2.0]], "dev": [0.24477225386307563]}, "1852": {"P": [[0.0, 12.0, 10.0], [9.0, -1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.24470844163126451]}, "1853": {"P": [[1.0, 10.0, 9.0], [11.0, 1.0, 10.0], [12.0, 11.0, 2.0]], "dev": [0.24464507076394618]}, "1854": {"P": [[-1.0, 9.0, 8.0], [10.0, -2.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.24458214065705838]}, "1855": {"P": [[-2.0, 8.0, 9.0], [10.0, 1.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.26514978846264992]}, "1856": {"P": [[0.0, 10.0, 11.0], [8.0, -2.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.25498020542410921]}, "1857": {"P": [[0.0, 9.0, 11.0], [10.0, 2.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.24439598884679661]}, "1858": {"P": [[-2.0, 8.0, 8.0], [10.0, -1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.22180232780948947]}, "1859": {"P": [[-1.0, 10.0, 10.0], [10.0, -1.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.20957249922993651]}, "1860": {"P": [[1.0, 9.0, 9.0], [11.0, 1.0, 11.0], [11.0, 11.0, 1.0]], "dev": [0.20951568637572313]}, "1861": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [12.0, 11.0, 1.0]], "dev": [0.22162851351881765]}, "1862": {"P": [[-1.0, 9.0, 8.0], [11.0, -1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.22157152405138636]}, "1863": {"P": [[-1.0, 9.0, 9.0], [11.0, 0.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.22151500782115938]}, "1864": {"P": [[1.0, 11.0, 10.0], [9.0, -1.0, 8.0], [10.0, 12.0, 1.0]], "dev": [0.24397694797078753]}, "1865": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 11.0], [10.0, 11.0, -1.0]], "dev": [0.26452471584511383]}, "1866": {"P": [[-2.0, 8.0, 8.0], [11.0, -1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.26446444491935711]}, "1867": {"P": [[-1.0, 9.0, 11.0], [11.0, 0.0, 10.0], [8.0, 8.0, -1.0]], "dev": [0.25431291159055019]}, "1868": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 11.0], [8.0, 8.0, -1.0]], "dev": [0.20907908031389719]}, "1869": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.19611523547912907]}, "1870": {"P": [[-1.0, 10.0, 8.0], [10.0, -1.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.19606472068753408]}, "1871": {"P": [[-1.0, 8.0, 9.0], [11.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.19601472671179432]}, "1872": {"P": [[-1.0, 10.0, 9.0], [9.0, -2.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.19596525284159461]}, "1873": {"P": [[1.0, 10.0, 10.0], [11.0, 1.0, 12.0], [10.0, 9.0, 1.0]], "dev": [0.22097573025576864]}, "1874": {"P": [[-2.0, 9.0, 9.0], [10.0, -1.0, 9.0], [11.0, 9.0, 1.0]], "dev": [0.24341516124132684]}, "1875": {"P": [[-2.0, 9.0, 9.0], [11.0, 1.0, 12.0], [9.0, 8.0, 0.0]], "dev": [0.26394012935198569]}, "1876": {"P": [[-1.0, 10.0, 10.0], [11.0, 2.0, 12.0], [9.0, 8.0, 0.0]], "dev": [0.25380451351272271]}, "1877": {"P": [[-2.0, 9.0, 9.0], [10.0, 0.0, 11.0], [9.0, 8.0, -1.0]], "dev": [0.2207731049986785]}, "1878": {"P": [[-1.0, 10.0, 10.0], [11.0, 1.0, 11.0], [9.0, 9.0, 1.0]], "dev": [0.20857767942149633]}, "1879": {"P": [[-1.0, 10.0, 10.0], [9.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.19563343856693755]}, "1880": {"P": [[0.0, 10.0, 9.0], [10.0, 0.0, 9.0], [11.0, 11.0, 1.0]], "dev": [0.15040947948956612]}, "1881": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.15036961014378614]}, "1882": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.19549896207206985]}, "1883": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.22048305495289588]}, "1884": {"P": [[-2.0, 10.0, 9.0], [10.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.24289616419900661]}, "1885": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 11.0], [9.0, 11.0, 0.0]], "dev": [0.26339544549235944]}, "1886": {"P": [[0.0, 9.0, 11.0], [11.0, 0.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.24279744483128929]}, "1887": {"P": [[-1.0, 9.0, 10.0], [9.0, -2.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.22029888423628474]}, "1888": {"P": [[2.0, 11.0, 10.0], [10.0, -1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.20812492153728795]}, "1889": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.16648194534049565]}, "1890": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.13160493305428658]}, "1891": {"P": [[-1.0, 9.0, 9.0], [11.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.1500067102346955]}, "1892": {"P": [[-2.0, 9.0, 9.0], [10.0, -1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.1950838840274563]}, "1893": {"P": [[1.0, 11.0, 10.0], [10.0, -1.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.22003631390281853]}, "1894": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 11.0], [9.0, 10.0, -1.0]], "dev": [0.24241933368288496]}, "1895": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.26289007731956965]}, "1896": {"P": [[-1.0, 9.0, 8.0], [11.0, 1.0, 10.0], [10.0, 12.0, 1.0]], "dev": [0.24232897226512934]}, "1897": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [9.0, 11.0, -1.0]], "dev": [0.24228441303416715]}, "1898": {"P": [[-1.0, 10.0, 9.0], [11.0, 1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.19485910973068196]}, "1899": {"P": [[0.0, 10.0, 9.0], [11.0, 1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.14976283125109077]}, "1900": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.083059213552014177]}, "1901": {"P": [[-1.0, 10.0, 10.0], [9.0, -1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.14970824872043065]}, "1902": {"P": [[-1.0, 10.0, 10.0], [11.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.20757143831799435]}, "1903": {"P": [[0.0, 9.0, 10.0], [11.0, 0.0, 9.0], [11.0, 11.0, 2.0]], "dev": [0.21963482724531214]}, "1904": {"P": [[-1.0, 11.0, 9.0], [11.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.25243407317103045]}, "1905": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.26242343474101482]}, "1906": {"P": [[-1.0, 10.0, 8.0], [11.0, 1.0, 10.0], [9.0, 11.0, 0.0]], "dev": [0.24190190995241645]}, "1907": {"P": [[-1.0, 10.0, 9.0], [11.0, 2.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.21948674937924115]}, "1908": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [11.0, 11.0, 2.0]], "dev": [0.19452441124488651]}, "1909": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.16586881694307085]}, "1910": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.13112046715719927]}, "1911": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.1658201364622888]}, "1912": {"P": [[-1.0, 9.0, 9.0], [10.0, -1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.20723252405286599]}, "1913": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 11.0], [8.0, 10.0, -1.0]], "dev": [0.21927790394250474]}, "1914": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.24158964777496117]}, "1915": {"P": [[-1.0, 8.0, 10.0], [12.0, 1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.26199492484285797]}, "1916": {"P": [[-1.0, 8.0, 9.0], [12.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.24151562114378297]}, "1917": {"P": [[-2.0, 10.0, 9.0], [10.0, 1.0, 11.0], [9.0, 9.0, 0.0]], "dev": [0.21914745555893816]}, "1918": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 12.0], [9.0, 10.0, 1.0]], "dev": [0.24144319978209369]}, "1919": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.16564801426061765]}, "1920": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.16562902579915703]}, "1921": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 11.0, 1.0]], "dev": [0.1941627836860674]}, "1922": {"P": [[0.0, 11.0, 10.0], [11.0, 1.0, 10.0], [8.0, 8.0, -2.0]], "dev": [0.21899419505117751]}, "1923": {"P": [[0.0, 9.0, 11.0], [11.0, 1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.24126913553869786]}, "1924": {"P": [[0.0, 11.0, 9.0], [8.0, -1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.26164137732619713]}, "1925": {"P": [[-2.0, 9.0, 8.0], [9.0, 0.0, 11.0], [9.0, 11.0, 0.0]], "dev": [0.26160395222791633]}, "1926": {"P": [[-2.0, 9.0, 9.0], [11.0, 2.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.24116946367995376]}, "1927": {"P": [[-2.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.24113703028532282]}, "1928": {"P": [[-2.0, 9.0, 9.0], [10.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.19400190770194381]}, "1929": {"P": [[-2.0, 8.0, 9.0], [11.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.21879776382699548]}, "1930": {"P": [[0.0, 10.0, 9.0], [9.0, 0.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.19396024119649966]}, "1931": {"P": [[-1.0, 9.0, 10.0], [11.0, 2.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.21874549623610384]}, "1932": {"P": [[1.0, 10.0, 11.0], [11.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.24098076325762385]}, "1933": {"P": [[0.0, 10.0, 11.0], [11.0, 2.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.25134063049538158]}, "1934": {"P": [[-2.0, 9.0, 9.0], [9.0, -2.0, 10.0], [9.0, 8.0, -2.0]], "dev": [0.27762623468444081]}, "1935": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.26124991936504449]}, "1936": {"P": [[0.0, 8.0, 8.0], [11.0, 0.0, 11.0], [11.0, 11.0, 0.0]], "dev": [0.24833760546154893]}, "1937": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.2408342697705203]}, "1938": {"P": [[1.0, 10.0, 10.0], [12.0, 2.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.24080613672034962]}, "1939": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 10.0], [11.0, 11.0, 2.0]], "dev": [0.21855339826335449]}, "1940": {"P": [[1.0, 11.0, 10.0], [11.0, 1.0, 10.0], [9.0, 8.0, -2.0]], "dev": [0.21853128343493355]}, "1941": {"P": [[2.0, 10.0, 11.0], [10.0, -1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.24072405709457423]}, "1942": {"P": [[1.0, 10.0, 9.0], [11.0, 1.0, 10.0], [12.0, 12.0, 2.0]], "dev": [0.24795223096301097]}, "1943": {"P": [[-2.0, 9.0, 9.0], [9.0, -1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.24067126373233627]}, "1944": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [12.0, 12.0, 0.0]], "dev": [0.2478269626260623]}, "1945": {"P": [[-1.0, 10.0, 12.0], [9.0, 1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.27689152714885601]}, "1946": {"P": [[2.0, 10.0, 10.0], [10.0, 0.0, 11.0], [11.0, 12.0, 2.0]], "dev": [0.25777701785306173]}, "1947": {"P": [[-1.0, 11.0, 10.0], [8.0, -1.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.23714182911985712]}, "1948": {"P": [[-2.0, 9.0, 10.0], [10.0, -1.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.23708195799657253]}, "1949": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [12.0, 10.0, 1.0]], "dev": [0.23702249668613276]}, "1950": {"P": [[-1.0, 8.0, 9.0], [11.0, -1.0, 11.0], [9.0, 9.0, -1.0]], "dev": [0.23696344466016522]}, "1951": {"P": [[-1.0, 11.0, 11.0], [10.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.23690480138952694]}, "1952": {"P": [[-1.0, 10.0, 11.0], [9.0, 0.0, 10.0], [9.0, 8.0, -2.0]], "dev": [0.23684656634430609]}, "1953": {"P": [[-2.0, 10.0, 9.0], [11.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.23678873899382727]}, "1954": {"P": [[0.0, 10.0, 9.0], [10.0, -2.0, 10.0], [8.0, 9.0, -2.0]], "dev": [0.25728981889044411]}, "1955": {"P": [[-2.0, 8.0, 9.0], [9.0, -2.0, 8.0], [10.0, 11.0, -1.0]], "dev": [0.2762615909531157]}, "1956": {"P": [[-1.0, 9.0, 8.0], [9.0, -2.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.24710855816659574]}, "1957": {"P": [[-1.0, 9.0, 11.0], [11.0, 0.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.23656149589924125]}, "1958": {"P": [[-1.0, 9.0, 10.0], [11.0, 0.0, 11.0], [9.0, 8.0, -1.0]], "dev": [0.20179494723470751]}, "1959": {"P": [[-2.0, 8.0, 9.0], [11.0, 0.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.21393854906309304]}, "1960": {"P": [[-1.0, 11.0, 10.0], [9.0, -1.0, 8.0], [10.0, 10.0, 0.0]], "dev": [0.20169123132737973]}, "1961": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 10.0], [12.0, 10.0, 1.0]], "dev": [0.21383356242468324]}, "1962": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.20158937030721083]}, "1963": {"P": [[-1.0, 10.0, 8.0], [11.0, -1.0, 10.0], [9.0, 9.0, -1.0]], "dev": [0.23623277141108151]}, "1964": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 10.0], [10.0, 12.0, 0.0]], "dev": [0.24666094246578923]}, "1965": {"P": [[-2.0, 8.0, 9.0], [10.0, -1.0, 9.0], [9.0, 10.0, -2.0]], "dev": [0.25665946243193555]}, "1966": {"P": [[1.0, 12.0, 11.0], [8.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.23607384083048702]}, "1967": {"P": [[-2.0, 8.0, 9.0], [11.0, 0.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.23602166506513791]}, "1968": {"P": [[-1.0, 10.0, 9.0], [8.0, -2.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.2134799266241631]}, "1969": {"P": [[-1.0, 10.0, 10.0], [9.0, -1.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.18827684629195446]}, "1970": {"P": [[-1.0, 9.0, 8.0], [10.0, -1.0, 10.0], [10.0, 11.0, 0.0]], "dev": [0.18823113330876634]}, "1971": {"P": [[-1.0, 11.0, 10.0], [10.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.18818590641928126]}, "1972": {"P": [[-2.0, 10.0, 9.0], [10.0, -1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.21328744434066235]}, "1973": {"P": [[2.0, 11.0, 11.0], [11.0, 2.0, 12.0], [10.0, 9.0, 0.0]], "dev": [0.23571698401001975]}, "1974": {"P": [[1.0, 9.0, 10.0], [10.0, 0.0, 9.0], [12.0, 12.0, 1.0]], "dev": [0.23566759434440426]}, "1975": {"P": [[1.0, 11.0, 10.0], [9.0, -2.0, 8.0], [9.0, 11.0, -1.0]], "dev": [0.25612562552978618]}, "1976": {"P": [[2.0, 11.0, 11.0], [10.0, -1.0, 10.0], [10.0, 11.0, 2.0]], "dev": [0.23557000196561223]}, "1977": {"P": [[-1.0, 9.0, 11.0], [10.0, -1.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.23552179815712168]}, "1978": {"P": [[-1.0, 9.0, 8.0], [10.0, -1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.18788287544964774]}, "1979": {"P": [[-1.0, 10.0, 9.0], [10.0, 0.0, 9.0], [11.0, 11.0, 1.0]], "dev": [0.15878858979782765]}, "1980": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.14201491886704606]}, "1981": {"P": [[0.0, 10.0, 11.0], [10.0, 1.0, 11.0], [9.0, 9.0, -1.0]], "dev": [0.15871378621623183]}, "1982": {"P": [[-1.0, 11.0, 10.0], [10.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.1877203105040412]}, "1983": {"P": [[1.0, 10.0, 12.0], [11.0, 1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.23524083403034701]}, "1984": {"P": [[0.0, 10.0, 9.0], [11.0, 2.0, 11.0], [12.0, 10.0, 1.0]], "dev": [0.23519537798720405]}, "1985": {"P": [[-1.0, 9.0, 10.0], [10.0, 2.0, 11.0], [12.0, 11.0, 2.0]], "dev": [0.25562860552043448]}, "1986": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [11.0, 12.0, 2.0]], "dev": [0.23510563633682602]}, "1987": {"P": [[-1.0, 9.0, 11.0], [8.0, -1.0, 9.0], [10.0, 11.0, 0.0]], "dev": [0.23506134962106867]}, "1988": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.21258645646090818]}, "1989": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.1584368852327698]}, "1990": {"P": [[0.0, 10.0, 10.0], [10.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.12271348117742631]}, "1991": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.15837320822387044]}, "1992": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 10.0], [10.0, 10.0, -2.0]], "dev": [0.21242825455241893]}, "1993": {"P": [[-1.0, 8.0, 10.0], [12.0, 1.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.23480377184025511]}, "1994": {"P": [[-1.0, 8.0, 10.0], [11.0, 1.0, 12.0], [9.0, 10.0, 0.0]], "dev": [0.23476219409326121]}, "1995": {"P": [[1.0, 10.0, 12.0], [9.0, -1.0, 10.0], [10.0, 8.0, -1.0]], "dev": [0.25516788557260045]}, "1996": {"P": [[-1.0, 9.0, 8.0], [11.0, 1.0, 10.0], [10.0, 12.0, 0.0]], "dev": [0.24511521875969375]}, "1997": {"P": [[-2.0, 8.0, 9.0], [11.0, -1.0, 11.0], [9.0, 10.0, 1.0]], "dev": [0.27399971784232946]}, "1998": {"P": [[-1.0, 10.0, 9.0], [11.0, 1.0, 10.0], [10.0, 11.0, 1.0]], "dev": [0.17326381751469982]}, "1999": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 11.0], [10.0, 9.0, 0.0]], "dev": [0.15814050776451696]}, "2000": {"P": [[0.0, 10.0, 10.0], [10.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [1.9229626863835638e-16]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-fcc2fcc.json000066400000000000000000006135351316323560300273200ustar00rootroot00000000000000{"1": {"P": [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], "dev": [0.0]}, "2": {"P": [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.4637666125390128]}, "3": {"P": [[1.0, 0.0, 0.0], [0.0, 1.0, 1.0], [0.0, -1.0, 2.0]], "dev": [0.63967132285998063]}, "4": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.36881371819258768]}, "5": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, -1.0], [-1.0, 1.0, 2.0]], "dev": [0.6382494713021295]}, "6": {"P": [[1.0, 0.0, 1.0], [0.0, 2.0, 0.0], [-1.0, 0.0, 2.0]], "dev": [0.51250475114668692]}, "7": {"P": [[2.0, -1.0, 0.0], [0.0, 2.0, -1.0], [-1.0, 0.0, 2.0]], "dev": [0.6142724648339668]}, "8": {"P": [[2.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.0]}, "9": {"P": [[2.0, 0.0, 1.0], [0.0, 3.0, 0.0], [1.0, 0.0, 2.0]], "dev": [0.55846757368505962]}, "10": {"P": [[2.0, 0.0, 1.0], [0.0, 2.0, 0.0], [-1.0, 1.0, 2.0]], "dev": [0.45443922605470655]}, "11": {"P": [[2.0, 0.0, 1.0], [-1.0, 3.0, 0.0], [0.0, 1.0, 2.0]], "dev": [0.50055742805692105]}, "12": {"P": [[3.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.25327235085346522]}, "13": {"P": [[2.0, 1.0, 0.0], [1.0, 3.0, -1.0], [0.0, -1.0, 3.0]], "dev": [0.51782219574038479]}, "14": {"P": [[2.0, 1.0, 0.0], [-1.0, 3.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.38076804362378097]}, "15": {"P": [[2.0, -1.0, 1.0], [1.0, 2.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.43040382694003659]}, "16": {"P": [[2.0, 0.0, 0.0], [0.0, 3.0, -1.0], [0.0, -1.0, 3.0]], "dev": [0.37344255272716748]}, "17": {"P": [[2.0, 0.0, 1.0], [0.0, 3.0, -1.0], [-1.0, 1.0, 2.0]], "dev": [0.46315744890197924]}, "18": {"P": [[2.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.2213433348315002]}, "19": {"P": [[2.0, 0.0, 1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 3.0]], "dev": [0.40493418047456009]}, "20": {"P": [[3.0, 1.0, -1.0], [-1.0, 3.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.40254890973897323]}, "21": {"P": [[2.0, 0.0, 1.0], [0.0, 3.0, 0.0], [-1.0, 0.0, 3.0]], "dev": [0.33340431198263704]}, "22": {"P": [[3.0, -1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.41631918936551587]}, "23": {"P": [[2.0, 0.0, 1.0], [0.0, 3.0, -1.0], [-1.0, 1.0, 3.0]], "dev": [0.41314112577214174]}, "24": {"P": [[3.0, 0.0, -1.0], [0.0, 3.0, 0.0], [-1.0, 0.0, 3.0]], "dev": [0.32971311895150235]}, "25": {"P": [[3.0, -1.0, 0.0], [0.0, 3.0, -1.0], [1.0, -1.0, 3.0]], "dev": [0.40934948352167311]}, "26": {"P": [[3.0, 0.0, -1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 3.0]], "dev": [0.40588633087208675]}, "27": {"P": [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.0]}, "28": {"P": [[3.0, 0.0, 1.0], [1.0, 3.0, 0.0], [0.0, 1.0, 3.0]], "dev": [0.39615666175805647]}, "29": {"P": [[3.0, -1.0, 1.0], [-1.0, 4.0, 0.0], [1.0, 0.0, 3.0]], "dev": [0.38997772210560605]}, "30": {"P": [[3.0, -1.0, 1.0], [1.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.31592343786255744]}, "31": {"P": [[3.0, 0.0, 1.0], [1.0, 3.0, -1.0], [0.0, 1.0, 3.0]], "dev": [0.37511837748151672]}, "32": {"P": [[3.0, 0.0, 1.0], [0.0, 4.0, 0.0], [1.0, 0.0, 3.0]], "dev": [0.34450107909462452]}, "33": {"P": [[3.0, -1.0, 1.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.30560038959430763]}, "34": {"P": [[3.0, -1.0, 1.0], [1.0, 3.0, 0.0], [-1.0, 1.0, 3.0]], "dev": [0.37378394210635363]}, "35": {"P": [[3.0, 0.0, 1.0], [1.0, 3.0, 0.0], [0.0, -1.0, 4.0]], "dev": [0.33539348274374048]}, "36": {"P": [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.17524012583375376]}, "37": {"P": [[3.0, -1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.3674781516058736]}, "38": {"P": [[3.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, 1.0, 3.0]], "dev": [0.38742481031790832]}, "39": {"P": [[3.0, 1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.26999761349589391]}, "40": {"P": [[3.0, -1.0, 1.0], [1.0, 3.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.31146094921558015]}, "41": {"P": [[3.0, 0.0, 1.0], [0.0, 4.0, -1.0], [1.0, -1.0, 4.0]], "dev": [0.34374008766654213]}, "42": {"P": [[3.0, -1.0, 1.0], [0.0, 4.0, -1.0], [-1.0, 1.0, 3.0]], "dev": [0.36411039335296075]}, "43": {"P": [[4.0, -1.0, 0.0], [1.0, 3.0, -1.0], [0.0, 1.0, 3.0]], "dev": [0.33491357412568062]}, "44": {"P": [[3.0, 0.0, 1.0], [0.0, 4.0, 0.0], [1.0, -1.0, 4.0]], "dev": [0.29654751926412731]}, "45": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, -1.0], [0.0, -1.0, 4.0]], "dev": [0.26794414979053266]}, "46": {"P": [[3.0, 0.0, 1.0], [-1.0, 4.0, -1.0], [0.0, -1.0, 4.0]], "dev": [0.38741240675841371]}, "47": {"P": [[3.0, 1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.34319269450307904]}, "48": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.15923942630740509]}, "49": {"P": [[3.0, 0.0, 1.0], [-1.0, 4.0, 0.0], [0.0, -1.0, 4.0]], "dev": [0.29471603114493689]}, "50": {"P": [[3.0, -1.0, 1.0], [1.0, 3.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.38308596980735671]}, "51": {"P": [[3.0, 0.0, 0.0], [-1.0, 4.0, 1.0], [0.0, -1.0, 4.0]], "dev": [0.29418019314912291]}, "52": {"P": [[3.0, 1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.24552531593365329]}, "53": {"P": [[3.0, 1.0, 0.0], [-1.0, 4.0, 1.0], [1.0, 0.0, 4.0]], "dev": [0.33559563280793869]}, "54": {"P": [[3.0, -1.0, 1.0], [0.0, 4.0, -1.0], [-1.0, 1.0, 4.0]], "dev": [0.34922834466380465]}, "55": {"P": [[3.0, 0.0, 1.0], [0.0, 4.0, -1.0], [-1.0, 1.0, 4.0]], "dev": [0.30678853538634893]}, "56": {"P": [[3.0, -1.0, 1.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.31565416567496318]}, "57": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.30556831695504105]}, "58": {"P": [[3.0, 0.0, 1.0], [-1.0, 5.0, -1.0], [0.0, -1.0, 4.0]], "dev": [0.35571056757431074]}, "59": {"P": [[4.0, -1.0, 0.0], [-1.0, 4.0, 1.0], [1.0, 0.0, 4.0]], "dev": [0.3163980403618285]}, "60": {"P": [[4.0, -1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.24576904259773549]}, "61": {"P": [[4.0, -1.0, 0.0], [-1.0, 4.0, 1.0], [-1.0, 0.0, 4.0]], "dev": [0.30510892004122098]}, "62": {"P": [[3.0, 0.0, 1.0], [-1.0, 5.0, -1.0], [0.0, 1.0, 4.0]], "dev": [0.3575523856035267]}, "63": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, 0.0, 4.0]], "dev": [0.30462583828235229]}, "64": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [2.7194799110210365e-16]}, "65": {"P": [[4.0, 0.0, 1.0], [1.0, 4.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.30150087249533974]}, "66": {"P": [[3.0, 1.0, 1.0], [-1.0, 4.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.35016856730410995]}, "67": {"P": [[4.0, 1.0, -1.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.3021169313647985]}, "68": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 1.0], [1.0, -1.0, 4.0]], "dev": [0.24119290284924361]}, "69": {"P": [[4.0, -1.0, 1.0], [1.0, 4.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.28990840487996566]}, "70": {"P": [[3.0, 0.0, 1.0], [0.0, 5.0, 0.0], [1.0, -1.0, 5.0]], "dev": [0.32914891421945841]}, "71": {"P": [[4.0, -1.0, 1.0], [-1.0, 5.0, 0.0], [1.0, 0.0, 4.0]], "dev": [0.28461222363500255]}, "72": {"P": [[5.0, -1.0, 0.0], [-1.0, 4.0, 1.0], [-1.0, 1.0, 4.0]], "dev": [0.29028660937041234]}, "73": {"P": [[4.0, -1.0, 1.0], [1.0, 4.0, 0.0], [-1.0, 1.0, 4.0]], "dev": [0.28897258770258044]}, "74": {"P": [[4.0, 1.0, 0.0], [1.0, 4.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.3502547710792252]}, "75": {"P": [[5.0, 0.0, 0.0], [0.0, 4.0, 1.0], [0.0, 1.0, 4.0]], "dev": [0.252782914078163]}, "76": {"P": [[4.0, -1.0, 1.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.23197432971802051]}, "77": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, -1.0, 4.0]], "dev": [0.29704671415819633]}, "78": {"P": [[3.0, 0.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.32893165175276184]}, "79": {"P": [[4.0, 0.0, 1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.25429891843830738]}, "80": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.13417143809101423]}, "81": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, 1.0], [-1.0, 0.0, 5.0]], "dev": [0.28275888295358687]}, "82": {"P": [[4.0, -1.0, 0.0], [1.0, 4.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.32598797952537661]}, "83": {"P": [[4.0, -1.0, 1.0], [0.0, 4.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.2986087339828723]}, "84": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 1.0], [0.0, -1.0, 5.0]], "dev": [0.20884068889410323]}, "85": {"P": [[4.0, -1.0, 1.0], [1.0, 4.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.24293872217881748]}, "86": {"P": [[4.0, -1.0, 1.0], [-1.0, 6.0, 0.0], [1.0, 0.0, 4.0]], "dev": [0.31466138843102615]}, "87": {"P": [[4.0, -1.0, 1.0], [0.0, 4.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.32416197146902531]}, "88": {"P": [[4.0, -1.0, 1.0], [1.0, 4.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.28233065758878345]}, "89": {"P": [[4.0, -1.0, 1.0], [1.0, 4.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.26112647778516956]}, "90": {"P": [[5.0, 1.0, -1.0], [0.0, 4.0, 1.0], [1.0, -1.0, 4.0]], "dev": [0.28449969940524283]}, "91": {"P": [[4.0, 0.0, 1.0], [0.0, 5.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.26079607012637956]}, "92": {"P": [[5.0, -1.0, 0.0], [-1.0, 5.0, 1.0], [-1.0, 1.0, 4.0]], "dev": [0.28240478752766329]}, "93": {"P": [[4.0, -1.0, 1.0], [1.0, 5.0, -1.0], [-1.0, 1.0, 4.0]], "dev": [0.30357737399637169]}, "94": {"P": [[4.0, 0.0, 1.0], [1.0, 5.0, 0.0], [1.0, -1.0, 5.0]], "dev": [0.29572927011448064]}, "95": {"P": [[5.0, 0.0, 0.0], [-1.0, 5.0, 1.0], [0.0, 1.0, 4.0]], "dev": [0.22649104092009731]}, "96": {"P": [[5.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.20990442116743993]}, "97": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.30281216339651296]}, "98": {"P": [[4.0, -1.0, 1.0], [0.0, 5.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.309251270942281]}, "99": {"P": [[4.0, 0.0, 1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.26675092479441181]}, "100": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.12456222961869234]}, "101": {"P": [[4.0, 0.0, 1.0], [-1.0, 5.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.23146846101380331]}, "102": {"P": [[4.0, 0.0, 1.0], [0.0, 6.0, 0.0], [-1.0, 1.0, 4.0]], "dev": [0.30246786630239464]}, "103": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.30331574042602177]}, "104": {"P": [[4.0, 0.0, 0.0], [-1.0, 5.0, 1.0], [0.0, -1.0, 5.0]], "dev": [0.23163809196984231]}, "105": {"P": [[4.0, 0.0, 1.0], [0.0, 5.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.19395231259245366]}, "106": {"P": [[4.0, 0.0, 1.0], [1.0, 5.0, 0.0], [-1.0, 1.0, 5.0]], "dev": [0.26787844889795226]}, "107": {"P": [[4.0, -1.0, 1.0], [-1.0, 6.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.32243072978482762]}, "108": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, -1.0], [-1.0, 1.0, 4.0]], "dev": [0.27604491489900984]}, "109": {"P": [[4.0, 0.0, 1.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.24337347211125787]}, "110": {"P": [[4.0, 0.0, 1.0], [1.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.25226452938219351]}, "111": {"P": [[5.0, -1.0, 1.0], [-1.0, 6.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.29126893047102803]}, "112": {"P": [[4.0, -1.0, 1.0], [-1.0, 6.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.31317523561883059]}, "113": {"P": [[5.0, 0.0, 1.0], [-1.0, 6.0, 0.0], [1.0, 1.0, 4.0]], "dev": [0.30724718242948279]}, "114": {"P": [[4.0, 1.0, 0.0], [1.0, 5.0, -1.0], [0.0, 0.0, 6.0]], "dev": [0.26167514081647042]}, "115": {"P": [[4.0, -1.0, 1.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.24844191454550008]}, "116": {"P": [[4.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.24258486869245563]}, "117": {"P": [[4.0, 0.0, 1.0], [-1.0, 6.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.28247845136257521]}, "118": {"P": [[5.0, 1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 4.0]], "dev": [0.31705938566321545]}, "119": {"P": [[5.0, 1.0, -1.0], [0.0, 5.0, 1.0], [-1.0, 0.0, 5.0]], "dev": [0.24982030329937571]}, "120": {"P": [[5.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.19648785433267638]}, "121": {"P": [[5.0, -1.0, 0.0], [-1.0, 5.0, 1.0], [-1.0, 0.0, 5.0]], "dev": [0.24349451642104317]}, "122": {"P": [[5.0, 1.0, -1.0], [-1.0, 4.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.31637405967302124]}, "123": {"P": [[4.0, 1.0, 0.0], [0.0, 5.0, 1.0], [-1.0, -1.0, 6.0]], "dev": [0.28444413983188571]}, "124": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.24398049183130638]}, "125": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.0]}, "126": {"P": [[5.0, 0.0, 1.0], [1.0, 5.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.24269120964274815]}, "127": {"P": [[4.0, 1.0, 1.0], [-1.0, 5.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.28142433676615891]}, "128": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.31138701398463359]}, "129": {"P": [[5.0, 0.0, 1.0], [-1.0, 5.0, 0.0], [-1.0, 1.0, 5.0]], "dev": [0.24272788355969202]}, "130": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.19477870051773846]}, "131": {"P": [[5.0, 1.0, 0.0], [-1.0, 5.0, 1.0], [1.0, 0.0, 5.0]], "dev": [0.23550190319583469]}, "132": {"P": [[5.0, -1.0, 2.0], [1.0, 5.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.30268155954091691]}, "133": {"P": [[6.0, -1.0, 1.0], [-1.0, 6.0, 1.0], [1.0, 0.0, 4.0]], "dev": [0.30093649426070601]}, "134": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.24557698254169719]}, "135": {"P": [[5.0, 1.0, 0.0], [-1.0, 5.0, 1.0], [0.0, -1.0, 5.0]], "dev": [0.24075177169359449]}, "136": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [-1.0, 1.0, 5.0]], "dev": [0.23489755088875738]}, "137": {"P": [[5.0, -1.0, 2.0], [1.0, 5.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.29932036048087485]}, "138": {"P": [[5.0, 0.0, 1.0], [1.0, 6.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.25895042802551038]}, "139": {"P": [[5.0, 0.0, 1.0], [0.0, 6.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.22583570087941021]}, "140": {"P": [[6.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.23264907297049062]}, "141": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, 1.0], [-1.0, 1.0, 5.0]], "dev": [0.2690165620847868]}, "142": {"P": [[5.0, -1.0, 1.0], [2.0, 5.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.29406046585359785]}, "143": {"P": [[5.0, 0.0, 1.0], [-1.0, 6.0, 0.0], [1.0, 1.0, 5.0]], "dev": [0.2784499300325578]}, "144": {"P": [[5.0, 1.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.2005070944767374]}, "145": {"P": [[5.0, -1.0, 1.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.18743692263393144]}, "146": {"P": [[5.0, -1.0, 1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.24065829843308642]}, "147": {"P": [[5.0, -1.0, 0.0], [1.0, 4.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.29819932017384126]}, "148": {"P": [[5.0, 0.0, -1.0], [1.0, 6.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.26608524877288092]}, "149": {"P": [[5.0, 0.0, 1.0], [1.0, 5.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.20525977264691189]}, "150": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.10875962827470201]}, "151": {"P": [[5.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.229686875740474]}, "152": {"P": [[6.0, 1.0, -1.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.26510874433055726]}, "153": {"P": [[6.0, 1.0, -1.0], [-1.0, 6.0, 0.0], [1.0, -1.0, 4.0]], "dev": [0.29609167830812]}, "154": {"P": [[5.0, 1.0, -1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.24285631699033172]}, "155": {"P": [[5.0, 0.0, 1.0], [0.0, 5.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.17016606878404605]}, "156": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.19881458018074108]}, "157": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.25847225894359138]}, "158": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 1.0], [-1.0, 1.0, 6.0]], "dev": [0.28865431831647642]}, "159": {"P": [[5.0, -1.0, 1.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.26446293417632294]}, "160": {"P": [[5.0, 1.0, -1.0], [-1.0, 6.0, 0.0], [1.0, -1.0, 5.0]], "dev": [0.23017325466332558]}, "161": {"P": [[5.0, 0.0, 1.0], [0.0, 6.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.21361358147350934]}, "162": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [-1.0, 1.0, 6.0]], "dev": [0.23409672909048074]}, "163": {"P": [[5.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.25205962978080343]}, "164": {"P": [[6.0, -1.0, 0.0], [-2.0, 6.0, 1.0], [0.0, 1.0, 5.0]], "dev": [0.26638155608378417]}, "165": {"P": [[4.0, 1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.28054760496748044]}, "166": {"P": [[5.0, 1.0, -1.0], [-1.0, 5.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.24901642154355905]}, "167": {"P": [[5.0, -1.0, 1.0], [-1.0, 6.0, 1.0], [1.0, 0.0, 6.0]], "dev": [0.26428786645149771]}, "168": {"P": [[5.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.22978581834634251]}, "169": {"P": [[6.0, -1.0, 1.0], [-1.0, 6.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.21107483867014051]}, "170": {"P": [[5.0, 0.0, 0.0], [1.0, 5.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.23028133229492437]}, "171": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.27934567414297662]}, "172": {"P": [[7.0, -1.0, -1.0], [1.0, 5.0, 1.0], [0.0, 1.0, 5.0]], "dev": [0.2882268937308024]}, "173": {"P": [[5.0, 0.0, 1.0], [1.0, 6.0, 0.0], [1.0, -1.0, 6.0]], "dev": [0.23908251730795765]}, "174": {"P": [[5.0, 0.0, 1.0], [0.0, 6.0, 0.0], [1.0, -1.0, 6.0]], "dev": [0.18376490648669347]}, "175": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.17285609619607897]}, "176": {"P": [[6.0, -1.0, 0.0], [-1.0, 6.0, 1.0], [-1.0, 0.0, 5.0]], "dev": [0.24875072126196604]}, "177": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.27889530236207338]}, "178": {"P": [[5.0, -1.0, 1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.25286558375150747]}, "179": {"P": [[5.0, 0.0, 1.0], [-1.0, 6.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.21853807571287925]}, "180": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.10235054473197183]}, "181": {"P": [[5.0, 0.0, 1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.19054960831682802]}, "182": {"P": [[5.0, -1.0, 1.0], [1.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.24953819047405104]}, "183": {"P": [[5.0, -1.0, 1.0], [-1.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.27910389106273997]}, "184": {"P": [[5.0, 0.0, -1.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 6.0]], "dev": [0.24998999615881604]}, "185": {"P": [[5.0, 0.0, 0.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 6.0]], "dev": [0.19094946798536896]}, "186": {"P": [[5.0, 0.0, 1.0], [0.0, 6.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.16016973330560605]}, "187": {"P": [[5.0, 0.0, 1.0], [1.0, 6.0, 0.0], [-1.0, 1.0, 6.0]], "dev": [0.22249842183746843]}, "188": {"P": [[7.0, 0.0, -1.0], [1.0, 5.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.27460901746204902]}, "189": {"P": [[5.0, -1.0, 1.0], [0.0, 6.0, 1.0], [-2.0, 1.0, 6.0]], "dev": [0.29371455504412208]}, "190": {"P": [[5.0, 1.0, -1.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 6.0]], "dev": [0.22799090366723335]}, "191": {"P": [[5.0, 0.0, 1.0], [0.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.20146338227653146]}, "192": {"P": [[5.0, 0.0, 1.0], [1.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.20977343072872948]}, "193": {"P": [[6.0, 1.0, -1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.24242722536407663]}, "194": {"P": [[5.0, 1.0, -1.0], [1.0, 6.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.26513409922462094]}, "195": {"P": [[5.0, 1.0, -1.0], [-2.0, 6.0, 1.0], [0.0, -1.0, 6.0]], "dev": [0.28117014300467419]}, "196": {"P": [[5.0, -1.0, 2.0], [0.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.26466980459739653]}, "197": {"P": [[5.0, -1.0, 1.0], [1.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.23488978162778434]}, "198": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.2131998620201303]}, "199": {"P": [[5.0, -1.0, 1.0], [0.0, 7.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.23969722532535717]}, "200": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -2.0, 7.0]], "dev": [0.2597077465817324]}, "201": {"P": [[5.0, 1.0, -1.0], [-1.0, 6.0, 1.0], [1.0, -2.0, 6.0]], "dev": [0.28652399713145649]}, "202": {"P": [[6.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 1.0, 5.0]], "dev": [0.25041723912333091]}, "203": {"P": [[5.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.21415252877955043]}, "204": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.20544160893771674]}, "205": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.20156085352294908]}, "206": {"P": [[7.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.23456992423314743]}, "207": {"P": [[5.0, 0.0, -1.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.29125620262676266]}, "208": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.26328236840564767]}, "209": {"P": [[6.0, 0.0, -1.0], [1.0, 6.0, 0.0], [-1.0, 1.0, 6.0]], "dev": [0.2068206728362707]}, "210": {"P": [[6.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.16386168116262204]}, "211": {"P": [[6.0, -1.0, 0.0], [-1.0, 6.0, 1.0], [-1.0, 0.0, 6.0]], "dev": [0.20272645288076216]}, "212": {"P": [[5.0, 0.0, -1.0], [0.0, 7.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.26329760287223197]}, "213": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.28805040365873458]}, "214": {"P": [[5.0, 1.0, 0.0], [0.0, 6.0, 1.0], [-1.0, -1.0, 7.0]], "dev": [0.23646485230679684]}, "215": {"P": [[6.0, -1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.2034988046775012]}, "216": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.0]}, "217": {"P": [[6.0, 1.0, 0.0], [0.0, 6.0, 1.0], [1.0, 0.0, 6.0]], "dev": [0.20287455727269835]}, "218": {"P": [[5.0, 1.0, 1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.23500927409379421]}, "219": {"P": [[6.0, 0.0, -1.0], [1.0, 7.0, -1.0], [2.0, -1.0, 5.0]], "dev": [0.28740583505973211]}, "220": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.26008807497264547]}, "221": {"P": [[6.0, 1.0, -1.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.20278667421355442]}, "222": {"P": [[6.0, 0.0, 0.0], [1.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.16324290503334563]}, "223": {"P": [[6.0, 1.0, -1.0], [0.0, 6.0, 1.0], [1.0, 0.0, 6.0]], "dev": [0.19802525383097383]}, "224": {"P": [[6.0, 0.0, 1.0], [1.0, 6.0, 0.0], [-1.0, 2.0, 6.0]], "dev": [0.25499556854162514]}, "225": {"P": [[5.0, 0.0, 1.0], [-1.0, 7.0, -1.0], [-1.0, 2.0, 6.0]], "dev": [0.28525430119228223]}, "226": {"P": [[6.0, -2.0, 1.0], [0.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.2649052717622149]}, "227": {"P": [[6.0, 0.0, -1.0], [-1.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.20508510353176415]}, "228": {"P": [[6.0, 0.0, -1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.20166820770688498]}, "229": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.19762605751919857]}, "230": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, 0.0], [-1.0, 2.0, 6.0]], "dev": [0.25270457348698894]}, "231": {"P": [[7.0, 1.0, -1.0], [2.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.27056699392376748]}, "232": {"P": [[5.0, 0.0, 1.0], [-1.0, 8.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.24758585526071644]}, "233": {"P": [[5.0, 0.0, 1.0], [0.0, 7.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.22293396563459997]}, "234": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.20134868665489111]}, "235": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.23167015707670977]}, "236": {"P": [[6.0, -1.0, 1.0], [2.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.24904962344296716]}, "237": {"P": [[7.0, 1.0, 0.0], [1.0, 5.0, 1.0], [-1.0, 0.0, 7.0]], "dev": [0.26435578427014667]}, "238": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 1.0], [1.0, 0.0, 6.0]], "dev": [0.21423047788211694]}, "239": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.18776132735558532]}, "240": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [1.0, -1.0, 6.0]], "dev": [0.19455139197261254]}, "241": {"P": [[6.0, -1.0, 1.0], [0.0, 6.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.22514711578523819]}, "242": {"P": [[6.0, 0.0, -1.0], [1.0, 6.0, -1.0], [0.0, -2.0, 7.0]], "dev": [0.26350160006661]}, "243": {"P": [[5.0, 0.0, 1.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.2586971425166309]}, "244": {"P": [[6.0, 1.0, 0.0], [1.0, 6.0, 1.0], [-1.0, 0.0, 7.0]], "dev": [0.23164427416576203]}, "245": {"P": [[7.0, 0.0, 0.0], [0.0, 6.0, 1.0], [0.0, 1.0, 6.0]], "dev": [0.16644127328783387]}, "246": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.1574332389825254]}, "247": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.2024106581704628]}, "248": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [2.0, -1.0, 6.0]], "dev": [0.25058109720346494]}, "249": {"P": [[5.0, 1.0, 0.0], [0.0, 7.0, 1.0], [-1.0, -1.0, 7.0]], "dev": [0.2676823622880472]}, "250": {"P": [[5.0, 0.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.22364009643796282]}, "251": {"P": [[6.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.17222845703088843]}, "252": {"P": [[7.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.091464775225994249]}, "253": {"P": [[6.0, -1.0, 0.0], [0.0, 6.0, 1.0], [-1.0, 0.0, 7.0]], "dev": [0.19337313063413922]}, "254": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.22329914704343731]}, "255": {"P": [[7.0, -1.0, 1.0], [2.0, 6.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.2654459592393022]}, "256": {"P": [[5.0, 1.0, 0.0], [-1.0, 7.0, 1.0], [-1.0, -1.0, 7.0]], "dev": [0.24943834432538889]}, "257": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.20459809156360206]}, "258": {"P": [[6.0, 1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.14353417183023567]}, "259": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.16813936557573636]}, "260": {"P": [[6.0, 0.0, 1.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 6.0]], "dev": [0.21903917784970722]}, "261": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, 1.0], [-1.0, 1.0, 7.0]], "dev": [0.24480620724729055]}, "262": {"P": [[6.0, -1.0, 1.0], [0.0, 6.0, -1.0], [-2.0, 0.0, 7.0]], "dev": [0.26787128932291709]}, "263": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.2231972066444638]}, "264": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.19412836691435517]}, "265": {"P": [[7.0, -1.0, 0.0], [1.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.18058551675104431]}, "266": {"P": [[6.0, 0.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.1986455164743442]}, "267": {"P": [[5.0, 1.0, 0.0], [1.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.24113033399849221]}, "268": {"P": [[5.0, 0.0, 1.0], [-1.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.25149575493483939]}, "269": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, -2.0], [-1.0, 1.0, 6.0]], "dev": [0.2597230385602452]}, "270": {"P": [[6.0, -1.0, 2.0], [1.0, 6.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.23761791484707212]}, "271": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.21085575180423854]}, "272": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, 0.0], [-2.0, 1.0, 7.0]], "dev": [0.23736485174450223]}, "273": {"P": [[6.0, -1.0, 2.0], [1.0, 6.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.23789571523894421]}, "274": {"P": [[6.0, 1.0, 0.0], [1.0, 6.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.21096329547976586]}, "275": {"P": [[5.0, 0.0, 1.0], [0.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.22416608637853916]}, "276": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.23697690895917392]}, "277": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.24945249226009913]}, "278": {"P": [[6.0, -1.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 2.0, 6.0]], "dev": [0.24829632975854279]}, "279": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.22137287594803373]}, "280": {"P": [[6.0, 1.0, 0.0], [1.0, 6.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.1924721528429793]}, "281": {"P": [[6.0, 0.0, 1.0], [0.0, 7.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.17763917946360352]}, "282": {"P": [[6.0, 0.0, 0.0], [1.0, 6.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.19468955399300159]}, "283": {"P": [[6.0, 0.0, -1.0], [1.0, 6.0, 0.0], [-1.0, -1.0, 8.0]], "dev": [0.23665615390193004]}, "284": {"P": [[6.0, -1.0, 1.0], [1.0, 6.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.25667250698164751]}, "285": {"P": [[5.0, 0.0, 1.0], [0.0, 7.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.24284287758085105]}, "286": {"P": [[7.0, 1.0, -1.0], [1.0, 6.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.20101153645343608]}, "287": {"P": [[6.0, 0.0, 1.0], [0.0, 7.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.15480378081415735]}, "288": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.14705599407964526]}, "289": {"P": [[6.0, 1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.21117864460442942]}, "290": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.23675547023437768]}, "291": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -2.0], [1.0, -1.0, 7.0]], "dev": [0.25973273241141126]}, "292": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [1.0, -1.0, 6.0]], "dev": [0.21411185350899548]}, "293": {"P": [[6.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.18521567521086035]}, "294": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.086885653317776423]}, "295": {"P": [[6.0, 0.0, 1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.16192651415961007]}, "296": {"P": [[6.0, 1.0, 0.0], [-1.0, 6.0, 1.0], [0.0, 0.0, 8.0]], "dev": [0.21226214202131269]}, "297": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.25228991059159883]}, "298": {"P": [[6.0, -1.0, 1.0], [-1.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.23733252488124673]}, "299": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.212589153851618]}, "300": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.16238151808166901]}, "301": {"P": [[6.0, 1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.13636451196616664]}, "302": {"P": [[6.0, 0.0, 1.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.1901111243957776]}, "303": {"P": [[8.0, -1.0, 1.0], [1.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.23440765329499094]}, "304": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, 1.0], [-2.0, 1.0, 7.0]], "dev": [0.25055393021323974]}, "305": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -1.0], [-2.0, 1.0, 7.0]], "dev": [0.26033596312256002]}, "306": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.19407974756061661]}, "307": {"P": [[6.0, 0.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.17177312236580802]}, "308": {"P": [[6.0, 0.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.1794060018652506]}, "309": {"P": [[6.0, 1.0, -1.0], [-1.0, 7.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.207412492697365]}, "310": {"P": [[6.0, 0.0, 2.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.24264704271680207]}, "311": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, -2.0], [-1.0, 1.0, 7.0]], "dev": [0.26096698543275132]}, "312": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-2.0, 1.0, 7.0]], "dev": [0.23937342409786924]}, "313": {"P": [[6.0, 2.0, -1.0], [-1.0, 7.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.22606942121252457]}, "314": {"P": [[6.0, 1.0, -1.0], [-1.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.20058698366220074]}, "315": {"P": [[7.0, 1.0, -2.0], [-1.0, 7.0, 1.0], [1.0, 0.0, 6.0]], "dev": [0.22585966673534191]}, "316": {"P": [[6.0, 0.0, 1.0], [0.0, 8.0, -2.0], [1.0, -1.0, 7.0]], "dev": [0.23022673823274747]}, "317": {"P": [[6.0, 1.0, -1.0], [1.0, 7.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.22568094672647535]}, "318": {"P": [[6.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [0.0, 0.0, 6.0]], "dev": [0.24825154751460646]}, "319": {"P": [[6.0, -1.0, 1.0], [1.0, 7.0, -2.0], [-1.0, 1.0, 7.0]], "dev": [0.24450695276959697]}, "320": {"P": [[7.0, -2.0, 1.0], [-1.0, 7.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.23293459214842441]}, "321": {"P": [[6.0, -1.0, 1.0], [-1.0, 8.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.20834908529088461]}, "322": {"P": [[6.0, 0.0, 1.0], [0.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.18057850149401405]}, "323": {"P": [[6.0, 1.0, 0.0], [1.0, 7.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.20401951027337722]}, "324": {"P": [[6.0, -1.0, 1.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.2221699102048294]}, "325": {"P": [[6.0, -1.0, 2.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.24763022500981122]}, "326": {"P": [[5.0, 0.0, 1.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.25253297327528546]}, "327": {"P": [[6.0, 1.0, 1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.2117860973188723]}, "328": {"P": [[6.0, 0.0, 1.0], [0.0, 8.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.1815643654686678]}, "329": {"P": [[6.0, -1.0, 1.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.17537107740220678]}, "330": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.17258985611538216]}, "331": {"P": [[6.0, 0.0, 1.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.20071015044975121]}, "332": {"P": [[6.0, 2.0, 0.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.24891696025624629]}, "333": {"P": [[6.0, -1.0, 0.0], [-1.0, 7.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.24874993217230051]}, "334": {"P": [[7.0, 1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.22531898141417342]}, "335": {"P": [[7.0, 0.0, -1.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.17661043055190107]}, "336": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.14060560112576218]}, "337": {"P": [[7.0, 1.0, -1.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.1737208402644731]}, "338": {"P": [[7.0, 1.0, -1.0], [0.0, 7.0, -1.0], [-2.0, 1.0, 7.0]], "dev": [0.22550838824724409]}, "339": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.24674960756687209]}, "340": {"P": [[6.0, -1.0, 2.0], [-1.0, 7.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.24818744172463475]}, "341": {"P": [[6.0, 0.0, 1.0], [-1.0, 8.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.20243882155947748]}, "342": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.17454069900533975]}, "343": {"P": [[7.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.0]}, "344": {"P": [[7.0, 0.0, 1.0], [1.0, 7.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.17420292788836522]}, "345": {"P": [[6.0, 1.0, 1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.20165329719949135]}, "346": {"P": [[6.0, -1.0, 1.0], [0.0, 7.0, 1.0], [-2.0, 1.0, 8.0]], "dev": [0.2467441593059152]}, "347": {"P": [[6.0, -1.0, 1.0], [1.0, 7.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.26523948989789481]}, "348": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.22334075183604624]}, "349": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.17409826971946604]}, "350": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.14045114649735738]}, "351": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.1707276205828604]}, "352": {"P": [[7.0, 1.0, 0.0], [0.0, 7.0, 1.0], [2.0, -1.0, 7.0]], "dev": [0.2200717782238481]}, "353": {"P": [[6.0, -1.0, 2.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.2611246051098306]}, "354": {"P": [[7.0, -1.0, 2.0], [1.0, 6.0, 0.0], [-1.0, -1.0, 8.0]], "dev": [0.24518128374170725]}, "355": {"P": [[7.0, -2.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.22730706260771588]}, "356": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.17595340448374638]}, "357": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.17340648471481548]}, "358": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.17045396255553857]}, "359": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [-1.0, 2.0, 7.0]], "dev": [0.21843094339263475]}, "360": {"P": [[6.0, 1.0, 1.0], [1.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.23487946078956845]}, "361": {"P": [[6.0, -1.0, 2.0], [0.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.2567128615464373]}, "362": {"P": [[7.0, -2.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.22846023219276893]}, "363": {"P": [[6.0, 1.0, 0.0], [1.0, 7.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.21686562866424763]}, "364": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.17320574277937922]}, "365": {"P": [[7.0, -2.0, 1.0], [1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.2226657565167186]}, "366": {"P": [[7.0, 0.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 2.0, 7.0]], "dev": [0.21576603852561227]}, "367": {"P": [[8.0, -1.0, 1.0], [0.0, 8.0, 1.0], [1.0, 1.0, 6.0]], "dev": [0.24746941919816109]}, "368": {"P": [[6.0, 1.0, 1.0], [1.0, 7.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.22968738456152615]}, "369": {"P": [[7.0, 0.0, 1.0], [0.0, 8.0, -1.0], [2.0, -1.0, 7.0]], "dev": [0.21078714633083925]}, "370": {"P": [[6.0, 0.0, 1.0], [0.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.19043274663543441]}, "371": {"P": [[7.0, -1.0, 1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.21407173631797935]}, "372": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.19933680550293129]}, "373": {"P": [[6.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.22223007769177139]}, "374": {"P": [[6.0, -1.0, 1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.2346470005632468]}, "375": {"P": [[6.0, 1.0, 0.0], [1.0, 8.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.22550525379989081]}, "376": {"P": [[7.0, 1.0, -1.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.18299935241300674]}, "377": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.16091157111440535]}, "378": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.16736728746047744]}, "379": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 1.0], [-1.0, 1.0, 7.0]], "dev": [0.19373737261274798]}, "380": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -2.0], [1.0, -1.0, 7.0]], "dev": [0.22728882178969576]}, "381": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, 1.0], [2.0, -1.0, 7.0]], "dev": [0.24264859199366934]}, "382": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.2216503365522052]}, "383": {"P": [[7.0, 0.0, 1.0], [-1.0, 8.0, 0.0], [1.0, 1.0, 7.0]], "dev": [0.19853460085690205]}, "384": {"P": [[7.0, 0.0, 1.0], [0.0, 8.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.14239125469674138]}, "385": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.13579235641743787]}, "386": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.17472768331865857]}, "387": {"P": [[6.0, 0.0, 1.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.21610840126780725]}, "388": {"P": [[9.0, 0.0, -1.0], [1.0, 6.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.23087985551671394]}, "389": {"P": [[6.0, 0.0, 1.0], [-1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.23065390604440908]}, "390": {"P": [[6.0, 0.0, 0.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.19295982687614993]}, "391": {"P": [[7.0, 0.0, 1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.14841469836606003]}, "392": {"P": [[8.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.078926412962239526]}, "393": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.16697346282949288]}, "394": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.19285271162529943]}, "395": {"P": [[9.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.23614080210892044]}, "396": {"P": [[7.0, -1.0, 2.0], [-1.0, 7.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.22922508218117091]}, "397": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.21549937078295431]}, "398": {"P": [[7.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.17672436308412498]}, "399": {"P": [[7.0, 0.0, 0.0], [0.0, 7.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.12409021652586079]}, "400": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.14561472109472784]}, "401": {"P": [[8.0, 0.0, 1.0], [1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.1899305793805704]}, "402": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.21235737810556454]}, "403": {"P": [[7.0, -2.0, 1.0], [1.0, 7.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.24733167884284221]}, "404": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -2.0], [-1.0, 1.0, 7.0]], "dev": [0.23144488033288618]}, "405": {"P": [[7.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.19300211393244193]}, "406": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.16777290649373902]}, "407": {"P": [[7.0, 1.0, -1.0], [-1.0, 8.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.15633832751529145]}, "408": {"P": [[7.0, 1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.17242004748161249]}, "409": {"P": [[7.0, 0.0, 1.0], [2.0, 8.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.23030298983094416]}, "410": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 1.0], [-2.0, 1.0, 8.0]], "dev": [0.23824426693721493]}, "411": {"P": [[7.0, 1.0, -1.0], [-2.0, 8.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.22440921989679191]}, "412": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, -2.0], [-1.0, 1.0, 7.0]], "dev": [0.22454613345977698]}, "413": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, -1.0], [-1.0, 2.0, 7.0]], "dev": [0.20596918448133542]}, "414": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.18273357668968668]}, "415": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [-2.0, 1.0, 8.0]], "dev": [0.20582604122172746]}, "416": {"P": [[8.0, -1.0, 1.0], [2.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.2072814076456887]}, "417": {"P": [[6.0, 0.0, 1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.20696146451905162]}, "418": {"P": [[6.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.21672302267065985]}, "419": {"P": [[6.0, 1.0, -1.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.23561037967419285]}, "420": {"P": [[7.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.20555265942246434]}, "421": {"P": [[8.0, -1.0, 1.0], [1.0, 7.0, -2.0], [-1.0, 1.0, 7.0]], "dev": [0.23567106831008136]}, "422": {"P": [[7.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-1.0, 2.0, 7.0]], "dev": [0.21600339224485471]}, "423": {"P": [[8.0, 1.0, -1.0], [1.0, 7.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.20486874571033062]}, "424": {"P": [[6.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.20487522731007574]}, "425": {"P": [[7.0, 1.0, 0.0], [1.0, 7.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.18170137792876101]}, "426": {"P": [[7.0, -1.0, 1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.19377626410048063]}, "427": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.20536460139181223]}, "428": {"P": [[7.0, 1.0, -1.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.21654298645279468]}, "429": {"P": [[7.0, -1.0, 0.0], [0.0, 9.0, -2.0], [1.0, -1.0, 7.0]], "dev": [0.23605792919084151]}, "430": {"P": [[7.0, 0.0, 2.0], [1.0, 8.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.23072539291003691]}, "431": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.19072885130056208]}, "432": {"P": [[7.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.16579228292817175]}, "433": {"P": [[7.0, 0.0, 1.0], [0.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.15350874701567527]}, "434": {"P": [[7.0, -1.0, 1.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.16876270413207231]}, "435": {"P": [[7.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.20541158544214377]}, "436": {"P": [[9.0, -1.0, 1.0], [-1.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.22239619352422363]}, "437": {"P": [[6.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.22217143134841871]}, "438": {"P": [[6.0, 0.0, 1.0], [0.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.21002288236490976]}, "439": {"P": [[7.0, 0.0, 1.0], [1.0, 8.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.17355310120437017]}, "440": {"P": [[7.0, 0.0, 1.0], [0.0, 8.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.13381721194305257]}, "441": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.12801939080441077]}, "442": {"P": [[8.0, 1.0, -1.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.18352597048590519]}, "443": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.20571854146252164]}, "444": {"P": [[8.0, -1.0, 1.0], [-2.0, 8.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.22568586389987644]}, "445": {"P": [[6.0, 1.0, 1.0], [-1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.22753181495364275]}, "446": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.18575528000879099]}, "447": {"P": [[7.0, 0.0, 1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.16076461118174368]}, "448": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.075491505745150844]}, "449": {"P": [[7.0, 0.0, 1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.14078372789654961]}, "450": {"P": [[7.0, 0.0, 1.0], [0.0, 9.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.18463190369498569]}, "451": {"P": [[7.0, 0.0, -1.0], [-1.0, 9.0, 0.0], [1.0, 1.0, 7.0]], "dev": [0.21949459404553623]}, "452": {"P": [[9.0, -1.0, 1.0], [1.0, 7.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.23159448796408577]}, "453": {"P": [[7.0, -1.0, 1.0], [-1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.20643803605030817]}, "454": {"P": [[8.0, -1.0, 1.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.18490498866134217]}, "455": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, 0.0, 7.0]], "dev": [0.14122942278518782]}, "456": {"P": [[8.0, 0.0, -1.0], [0.0, 8.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.11869902675979292]}, "457": {"P": [[8.0, 1.0, 0.0], [0.0, 7.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.16588517315299603]}, "458": {"P": [[7.0, -1.0, 1.0], [1.0, 7.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.2043754764404366]}, "459": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, 1.0], [-2.0, 1.0, 8.0]], "dev": [0.21834018064852109]}, "460": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, -1.0], [-1.0, 2.0, 7.0]], "dev": [0.2316333949369776]}, "461": {"P": [[8.0, 1.0, -1.0], [-1.0, 8.0, 0.0], [1.0, -2.0, 7.0]], "dev": [0.22657234555219793]}, "462": {"P": [[8.0, -1.0, 1.0], [1.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.16889603262755196]}, "463": {"P": [[7.0, 1.0, 0.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.1496648695217625]}, "464": {"P": [[7.0, 1.0, 0.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.15665860988253208]}, "465": {"P": [[7.0, -1.0, 1.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.18114219859603323]}, "466": {"P": [[8.0, 1.0, -1.0], [0.0, 8.0, 1.0], [2.0, 0.0, 7.0]], "dev": [0.21253862560975012]}, "467": {"P": [[8.0, 1.0, -2.0], [1.0, 7.0, 0.0], [-2.0, 0.0, 9.0]], "dev": [0.23576962315669323]}, "468": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, -2.0], [-1.0, 1.0, 8.0]], "dev": [0.22719577925407006]}, "469": {"P": [[7.0, 1.0, -1.0], [-2.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.20827992916461063]}, "470": {"P": [[7.0, 2.0, -1.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.197206242541872]}, "471": {"P": [[7.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.17494576918837204]}, "472": {"P": [[7.0, 0.0, 1.0], [1.0, 8.0, -1.0], [-2.0, 1.0, 8.0]], "dev": [0.19708474165108905]}, "473": {"P": [[7.0, 2.0, 0.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.20556141774420342]}, "474": {"P": [[7.0, -1.0, 2.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.20528109586196752]}, "475": {"P": [[6.0, 1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.23496460292457508]}, "476": {"P": [[8.0, -2.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.23150160384641053]}, "477": {"P": [[7.0, -1.0, 1.0], [1.0, 8.0, -2.0], [-1.0, 1.0, 8.0]], "dev": [0.21309936615875416]}, "478": {"P": [[7.0, -1.0, 2.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.20779883073238747]}, "479": {"P": [[7.0, 0.0, 1.0], [0.0, 9.0, -1.0], [2.0, -1.0, 8.0]], "dev": [0.20743213859592041]}, "480": {"P": [[7.0, -1.0, 2.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.20025115106325114]}, "481": {"P": [[7.0, 0.0, 1.0], [0.0, 9.0, -1.0], [1.0, -2.0, 8.0]], "dev": [0.2001116959153543]}, "482": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.19670786411911637]}, "483": {"P": [[7.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [0.0, 0.0, 7.0]], "dev": [0.21635472624190277]}, "484": {"P": [[7.0, 1.0, 0.0], [1.0, 9.0, -2.0], [-1.0, -1.0, 8.0]], "dev": [0.23431556851005339]}, "485": {"P": [[8.0, 0.0, 1.0], [-2.0, 9.0, 1.0], [1.0, 1.0, 7.0]], "dev": [0.22675177498307322]}, "486": {"P": [[6.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.20224777839944755]}, "487": {"P": [[7.0, -1.0, 1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.18092882346923583]}, "488": {"P": [[7.0, 0.0, 1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.15681240579370262]}, "489": {"P": [[7.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.17776411486951338]}, "490": {"P": [[9.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 1.0, 7.0]], "dev": [0.19427672701906307]}, "491": {"P": [[7.0, 2.0, -1.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.21614043921901263]}, "492": {"P": [[7.0, -1.0, 0.0], [0.0, 9.0, -2.0], [1.0, -1.0, 8.0]], "dev": [0.23213646717939823]}, "493": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.21980244746371655]}, "494": {"P": [[7.0, 1.0, 1.0], [0.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.18368113751616294]}, "495": {"P": [[7.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.15772994371688651]}, "496": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.15309026153850366]}, "497": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.15099026880719818]}, "498": {"P": [[7.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.17547348991349873]}, "499": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [2.0, 0.0, 7.0]], "dev": [0.2173800474220374]}, "500": {"P": [[6.0, 1.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.23378098253000443]}, "501": {"P": [[7.0, 0.0, -1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.21721053822155884]}, "502": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.19701477204299697]}, "503": {"P": [[8.0, -1.0, 0.0], [-1.0, 8.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.15417190027726385]}, "504": {"P": [[8.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.12316693040786736]}, "505": {"P": [[8.0, 0.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.15201237833855141]}, "506": {"P": [[9.0, -2.0, 0.0], [0.0, 7.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.19723049793909564]}, "507": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.21582960003803234]}, "508": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.23378707030460907]}, "509": {"P": [[7.0, -1.0, 1.0], [0.0, 8.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.21694416623270807]}, "510": {"P": [[8.0, 1.0, 0.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.17701469564900249]}, "511": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.15279527347688396]}, "512": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [2.7194799110210365e-16]}, "513": {"P": [[8.0, 0.0, 1.0], [1.0, 8.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.15259696522413768]}, "514": {"P": [[7.0, 1.0, 1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.176554279834684]}, "515": {"P": [[7.0, -1.0, 2.0], [-1.0, 9.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.21609826838930737]}, "516": {"P": [[7.0, -1.0, 1.0], [1.0, 8.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.23257596959833429]}, "517": {"P": [[7.0, 1.0, 0.0], [0.0, 8.0, 1.0], [-1.0, -2.0, 9.0]], "dev": [0.23356263860455506]}, "518": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.19570433269644574]}, "519": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.15250205101364353]}, "520": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.12322206274412784]}, "521": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.1499911871720839]}, "522": {"P": [[8.0, -1.0, 2.0], [1.0, 8.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.19345973048834286]}, "523": {"P": [[8.0, -1.0, 0.0], [2.0, 7.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.23141863388248715]}, "524": {"P": [[7.0, 2.0, 0.0], [-1.0, 8.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.22914373632599222]}, "525": {"P": [[7.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.214946204984692]}, "526": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [-2.0, 1.0, 8.0]], "dev": [0.1989860231626534]}, "527": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.15401697718875018]}, "528": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.15204538055246003]}, "529": {"P": [[8.0, 1.0, -1.0], [0.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.14979674863076484]}, "530": {"P": [[8.0, 0.0, 1.0], [2.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.19223592896905337]}, "531": {"P": [[9.0, -1.0, 1.0], [2.0, 7.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.21089769483558798]}, "532": {"P": [[9.0, -2.0, 1.0], [-1.0, 9.0, 1.0], [1.0, 1.0, 7.0]], "dev": [0.22627477775517951]}, "533": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [2.0, 0.0, 7.0]], "dev": [0.22593105448061077]}, "534": {"P": [[8.0, -1.0, 1.0], [0.0, 8.0, -1.0], [-2.0, 1.0, 8.0]], "dev": [0.19997375708910853]}, "535": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.19558097396440979]}, "536": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.15191117207873892]}, "537": {"P": [[8.0, -2.0, 1.0], [1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.19548236262417021]}, "538": {"P": [[8.0, -1.0, 2.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.19021677065725717]}, "539": {"P": [[7.0, 0.0, 0.0], [1.0, 9.0, -2.0], [1.0, -2.0, 9.0]], "dev": [0.23082094848063392]}, "540": {"P": [[7.0, 1.0, 1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.20343047024739797]}, "541": {"P": [[8.0, -1.0, 2.0], [0.0, 10.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.22329821482898604]}, "542": {"P": [[7.0, 1.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.20542682685788333]}, "543": {"P": [[7.0, 0.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.18907031585838513]}, "544": {"P": [[9.0, -1.0, 0.0], [-2.0, 9.0, 1.0], [0.0, 1.0, 7.0]], "dev": [0.19206824927403307]}, "545": {"P": [[8.0, -1.0, 2.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.19195020266519827]}, "546": {"P": [[8.0, -2.0, 2.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 8.0]], "dev": [0.21044124064251385]}, "547": {"P": [[7.0, 2.0, -1.0], [-2.0, 9.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.22739646270342415]}, "548": {"P": [[7.0, 1.0, 1.0], [1.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.21488568592467661]}, "549": {"P": [[7.0, 0.0, 2.0], [0.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.19980496365703679]}, "550": {"P": [[7.0, 0.0, 1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.18373536129265849]}, "551": {"P": [[7.0, 1.0, 0.0], [1.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.16638916789425326]}, "552": {"P": [[7.0, 0.0, 1.0], [1.0, 8.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.18722436482623339]}, "553": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.17507042768360223]}, "554": {"P": [[10.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.19511930574539679]}, "555": {"P": [[9.0, -1.0, -1.0], [-2.0, 9.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.21700316274136849]}, "556": {"P": [[7.0, 1.0, -1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.20536263899761537]}, "557": {"P": [[7.0, 0.0, 1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.19681052851002032]}, "558": {"P": [[7.0, 1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 0.0, 9.0]], "dev": [0.15986241207671786]}, "559": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.14089319588696897]}, "560": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.14694294728714707]}, "561": {"P": [[8.0, 1.0, -1.0], [1.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.17010055216297448]}, "562": {"P": [[8.0, 0.0, -1.0], [1.0, 8.0, -1.0], [0.0, -2.0, 9.0]], "dev": [0.1999139854440046]}, "563": {"P": [[8.0, 1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.22929432589333248]}, "564": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, 1.0], [2.0, -1.0, 8.0]], "dev": [0.2123716970118775]}, "565": {"P": [[7.0, 1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.19402684520205571]}, "566": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.17380977693628746]}, "567": {"P": [[8.0, 0.0, 1.0], [0.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.12447158915283939]}, "568": {"P": [[8.0, 0.0, 0.0], [1.0, 8.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.11942324172897656]}, "569": {"P": [[9.0, -1.0, 0.0], [-1.0, 8.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.15374612497565704]}, "570": {"P": [[7.0, 1.0, 1.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.18999637881628026]}, "571": {"P": [[10.0, 0.0, -1.0], [1.0, 7.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.20296851539375774]}, "572": {"P": [[7.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.21332959264940271]}, "573": {"P": [[7.0, 1.0, 0.0], [0.0, 9.0, 1.0], [-1.0, -1.0, 9.0]], "dev": [0.20269856871616823]}, "574": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.16971847795141989]}, "575": {"P": [[8.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.13041385700491229]}, "576": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.069416637490063146]}, "577": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.14691798478916587]}, "578": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.16970347114623233]}, "579": {"P": [[10.0, -1.0, -1.0], [1.0, 7.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.20783536539567843]}, "580": {"P": [[7.0, 1.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.21359368989549046]}, "581": {"P": [[8.0, -1.0, 0.0], [-1.0, 8.0, 2.0], [1.0, -1.0, 9.0]], "dev": [0.2017301077702662]}, "582": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.18969075587669251]}, "583": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.15551788597018792]}, "584": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.10927547349808396]}, "585": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.12838780110785716]}, "586": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.16759611628586726]}, "587": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.18742537880716734]}, "588": {"P": [[8.0, -2.0, 1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.21802486146774552]}, "589": {"P": [[7.0, -1.0, 1.0], [0.0, 9.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.23368000115460377]}, "590": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -2.0], [-1.0, 1.0, 8.0]], "dev": [0.20368650625225265]}, "591": {"P": [[8.0, -1.0, 1.0], [0.0, 8.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.16996588899320389]}, "592": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.14768174867679784]}, "593": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.13779917505809655]}, "594": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.15226171922198931]}, "595": {"P": [[8.0, 1.0, -1.0], [-1.0, 8.0, 2.0], [1.0, 0.0, 9.0]], "dev": [0.20356668184430887]}, "596": {"P": [[8.0, 1.0, -1.0], [-2.0, 9.0, 1.0], [1.0, 1.0, 8.0]], "dev": [0.21041909555433327]}, "597": {"P": [[8.0, -1.0, 0.0], [-1.0, 8.0, 2.0], [1.0, -2.0, 9.0]], "dev": [0.22391439545854697]}, "598": {"P": [[8.0, 1.0, -1.0], [-2.0, 9.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.19757900013904153]}, "599": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-2.0, 0.0, 9.0]], "dev": [0.19768326176913215]}, "600": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.18170092781514879]}, "601": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.16117745864623978]}, "602": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [-2.0, 1.0, 9.0]], "dev": [0.18161411793184007]}, "603": {"P": [[8.0, -1.0, 2.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.18355610084465365]}, "604": {"P": [[8.0, 1.0, -1.0], [0.0, 9.0, 1.0], [2.0, -1.0, 8.0]], "dev": [0.201521361004074]}, "605": {"P": [[8.0, 0.0, 1.0], [1.0, 9.0, -2.0], [1.0, -2.0, 9.0]], "dev": [0.20910273887777633]}, "606": {"P": [[9.0, 1.0, -1.0], [1.0, 7.0, 0.0], [-2.0, 0.0, 10.0]], "dev": [0.20896899393812288]}, "607": {"P": [[7.0, 0.0, 1.0], [0.0, 9.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.20883771088645103]}, "608": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.19025646624807269]}, "609": {"P": [[9.0, -1.0, 1.0], [1.0, 8.0, -2.0], [-1.0, 1.0, 8.0]], "dev": [0.2077898864556092]}, "610": {"P": [[8.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.19105856626349485]}, "611": {"P": [[8.0, -1.0, 1.0], [2.0, 8.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.19094580850316165]}, "612": {"P": [[7.0, 1.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.19119206016124116]}, "613": {"P": [[7.0, 1.0, 0.0], [1.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.18151783460174384]}, "614": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -2.0], [1.0, -1.0, 8.0]], "dev": [0.19062297277049384]}, "615": {"P": [[7.0, 0.0, 1.0], [1.0, 9.0, -2.0], [0.0, -1.0, 10.0]], "dev": [0.20787471616625097]}, "616": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.18129110341908028]}, "617": {"P": [[9.0, -2.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.20809731002276308]}, "618": {"P": [[8.0, -1.0, 1.0], [2.0, 8.0, -2.0], [-1.0, 1.0, 9.0]], "dev": [0.21597883494313896]}, "619": {"P": [[7.0, 1.0, 1.0], [0.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.19781382280677426]}, "620": {"P": [[8.0, 1.0, 1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.17922512614419472]}, "621": {"P": [[9.0, 1.0, -1.0], [1.0, 7.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.18009001444802247]}, "622": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.15972082603581733]}, "623": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.1707803250119321]}, "624": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, -2.0], [1.0, -1.0, 8.0]], "dev": [0.18131940834070356]}, "625": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.19142333406949838]}, "626": {"P": [[8.0, -1.0, 1.0], [-2.0, 10.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.20858691547237704]}, "627": {"P": [[7.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.22260962686599867]}, "628": {"P": [[8.0, 0.0, 2.0], [1.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.20239291891819422]}, "629": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.16767094301129887]}, "630": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.14570999283278899]}, "631": {"P": [[9.0, 0.0, -1.0], [0.0, 8.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.13523058838019347]}, "632": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.14900043425047343]}, "633": {"P": [[8.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.1815243113668758]}, "634": {"P": [[8.0, 1.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.19623708622744113]}, "635": {"P": [[8.0, -1.0, 1.0], [-2.0, 10.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.21566658073053047]}, "636": {"P": [[9.0, 1.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.19596446750421428]}, "637": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.18511917418024626]}, "638": {"P": [[8.0, 0.0, 1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.15276859877243262]}, "639": {"P": [[9.0, -1.0, 1.0], [0.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.11788544872749593]}, "640": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.11337876487877643]}, "641": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.16230980222964853]}, "642": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.1819019533812431]}, "643": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.19954685857713239]}, "644": {"P": [[8.0, 1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.20711904293995964]}, "645": {"P": [[7.0, 1.0, 1.0], [0.0, 9.0, 1.0], [-1.0, -1.0, 10.0]], "dev": [0.20094417205698728]}, "646": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.16407605421247545]}, "647": {"P": [[8.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.14204188544581117]}, "648": {"P": [[9.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.06674474931769879]}, "649": {"P": [[8.0, 0.0, 1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.12452792751759419]}, "650": {"P": [[9.0, -1.0, 1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.16334737952212375]}, "651": {"P": [[8.0, 0.0, -1.0], [-1.0, 10.0, 0.0], [1.0, 1.0, 8.0]], "dev": [0.19421756688758382]}, "652": {"P": [[10.0, 1.0, -1.0], [1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.20507143608971687]}, "653": {"P": [[8.0, 0.0, -1.0], [1.0, 9.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.21044710114429127]}, "654": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.18265572394583382]}, "655": {"P": [[8.0, 0.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.16358822698905578]}, "656": {"P": [[8.0, 0.0, 0.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.1249418682164961]}, "657": {"P": [[8.0, 0.0, 1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.10507504317797575]}, "658": {"P": [[9.0, 1.0, -1.0], [0.0, 9.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.14710109701395441]}, "659": {"P": [[8.0, -1.0, 1.0], [1.0, 8.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.18111684926950733]}, "660": {"P": [[9.0, -2.0, 1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.19341225598117498]}, "661": {"P": [[8.0, 1.0, -1.0], [-2.0, 10.0, 1.0], [1.0, 1.0, 8.0]], "dev": [0.21417640427790466]}, "662": {"P": [[8.0, -1.0, 2.0], [-1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.20507880935600667]}, "663": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.20052384439360524]}, "664": {"P": [[8.0, 1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.14946779258727297]}, "665": {"P": [[8.0, 1.0, 0.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.13257492555068393]}, "666": {"P": [[8.0, 0.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.1389991032328787]}, "667": {"P": [[8.0, -1.0, 1.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.16073032244204014]}, "668": {"P": [[8.0, 0.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.18898852106058434]}, "669": {"P": [[8.0, 0.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 8.0]], "dev": [0.22413697595325582]}, "670": {"P": [[8.0, -1.0, 1.0], [2.0, 8.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.21663747898612798]}, "671": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -2.0], [-1.0, 1.0, 9.0]], "dev": [0.20110149250376663]}, "672": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.18427297270562726]}, "673": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.17483102863099503]}, "674": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.1550746479541272]}, "675": {"P": [[8.0, 0.0, 1.0], [1.0, 9.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.17475596560242093]}, "676": {"P": [[8.0, 0.0, 2.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.18284101817501111]}, "677": {"P": [[8.0, -1.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.18264894604527659]}, "678": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -2.0], [1.0, -2.0, 9.0]], "dev": [0.20847828644467689]}, "679": {"P": [[8.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.20842436603305423]}, "680": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, -1.0], [-2.0, 2.0, 9.0]], "dev": [0.20514585185363549]}, "681": {"P": [[8.0, 1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.18876814849543275]}, "682": {"P": [[8.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.18880834543941574]}, "683": {"P": [[9.0, -1.0, 1.0], [2.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.19534193655840193]}, "684": {"P": [[8.0, -1.0, 2.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.17797891024973267]}, "685": {"P": [[8.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.19815663700433331]}, "686": {"P": [[8.0, -1.0, 2.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.19503089360939557]}, "687": {"P": [[9.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.20805799968548808]}, "688": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, -2.0, 9.0]], "dev": [0.20535082771628893]}, "689": {"P": [[8.0, -1.0, 2.0], [-1.0, 10.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.2180762981831266]}, "690": {"P": [[7.0, 1.0, 0.0], [1.0, 10.0, -1.0], [0.0, 0.0, 10.0]], "dev": [0.19994890043401078]}, "691": {"P": [[8.0, -1.0, 2.0], [-1.0, 10.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.18300313188099218]}, "692": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -1.0], [2.0, -1.0, 9.0]], "dev": [0.18277024262128586]}, "693": {"P": [[7.0, 0.0, 1.0], [0.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.17719165662282629]}, "694": {"P": [[9.0, 1.0, -1.0], [1.0, 8.0, 0.0], [-2.0, 0.0, 10.0]], "dev": [0.17711484687192616]}, "695": {"P": [[8.0, 1.0, -1.0], [1.0, 9.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.17446301717993745]}, "696": {"P": [[8.0, -1.0, 1.0], [0.0, 10.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.19184886119341041]}, "697": {"P": [[8.0, 0.0, 1.0], [-1.0, 9.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.20775733905679139]}, "698": {"P": [[9.0, 1.0, 0.0], [0.0, 10.0, -2.0], [2.0, -1.0, 8.0]], "dev": [0.2116584018976358]}, "699": {"P": [[10.0, 1.0, -2.0], [1.0, 8.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.19994314158654322]}, "700": {"P": [[7.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.17885536104593133]}, "701": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.16001117988505098]}, "702": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.13867500333124125]}, "703": {"P": [[10.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, 1.0, 8.0]], "dev": [0.15758838302426781]}, "704": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.17269390940038373]}, "705": {"P": [[8.0, -1.0, 2.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.19183582383763156]}, "706": {"P": [[9.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.2061713608135233]}, "707": {"P": [[10.0, -1.0, 1.0], [0.0, 7.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.20900611568452387]}, "708": {"P": [[7.0, 0.0, 1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.19470394157597096]}, "709": {"P": [[9.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [1.0, 1.0, 8.0]], "dev": [0.16226046839002592]}, "710": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.13950003008395648]}, "711": {"P": [[8.0, 1.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.1358896638861519]}, "712": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.13424366714747382]}, "713": {"P": [[8.0, 1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.15591972844889965]}, "714": {"P": [[8.0, 2.0, 0.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.19297012524300186]}, "715": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.20762943522798505]}, "716": {"P": [[7.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.20844517547888611]}, "717": {"P": [[8.0, 0.0, -1.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.19283510302953311]}, "718": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.17507124246166073]}, "719": {"P": [[9.0, 1.0, -1.0], [0.0, 9.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.13682752983732588]}, "720": {"P": [[9.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.109595678722264]}, "721": {"P": [[9.0, -1.0, 0.0], [-1.0, 9.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.13514684198123295]}, "722": {"P": [[8.0, 0.0, 1.0], [-2.0, 10.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.1752707916843752]}, "723": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.19181250352675205]}, "724": {"P": [[10.0, -1.0, 1.0], [-1.0, 8.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.20805915320187374]}, "725": {"P": [[8.0, -1.0, 1.0], [-1.0, 9.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.20777241474563551]}, "726": {"P": [[8.0, -1.0, 2.0], [-1.0, 9.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.19272217146651952]}, "727": {"P": [[9.0, 1.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.15728280520129836]}, "728": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.13586564909863155]}, "729": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.0]}, "730": {"P": [[9.0, 0.0, 1.0], [1.0, 9.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.13574171175617786]}, "731": {"P": [[8.0, 1.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.15699538420767864]}, "732": {"P": [[8.0, -1.0, 1.0], [0.0, 9.0, 1.0], [-2.0, 1.0, 10.0]], "dev": [0.19219412269113356]}, "733": {"P": [[8.0, -1.0, 1.0], [1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.20701546902236417]}, "734": {"P": [[9.0, -1.0, 0.0], [-1.0, 9.0, 2.0], [2.0, -1.0, 9.0]], "dev": [0.2071111884342749]}, "735": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.20769385675879398]}, "736": {"P": [[9.0, 1.0, 1.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.17415828496560851]}, "737": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.13566151218989903]}, "738": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.10974633629078834]}, "739": {"P": [[9.0, 1.0, 0.0], [-1.0, 9.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.13371874283441795]}, "740": {"P": [[9.0, 0.0, 1.0], [1.0, 9.0, 0.0], [-1.0, 2.0, 9.0]], "dev": [0.17253680946588196]}, "741": {"P": [[8.0, 2.0, -1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.20612229305105392]}, "742": {"P": [[8.0, 0.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.20440676229004928]}, "743": {"P": [[8.0, -1.0, 0.0], [1.0, 10.0, -2.0], [-1.0, 1.0, 9.0]], "dev": [0.20838223964320735]}, "744": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.19132749355930612]}, "745": {"P": [[9.0, -2.0, 1.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.1769013872715659]}, "746": {"P": [[9.0, 0.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.13691598128047144]}, "747": {"P": [[9.0, 0.0, -1.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.13534466873323617]}, "748": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.1335761745950613]}, "749": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 0.0], [-1.0, 2.0, 9.0]], "dev": [0.17159353031348831]}, "750": {"P": [[8.0, -1.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.18825132665035693]}, "751": {"P": [[8.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.20352586010818904]}, "752": {"P": [[8.0, 0.0, 0.0], [-1.0, 9.0, 2.0], [1.0, -2.0, 10.0]], "dev": [0.20611508864698658]}, "753": {"P": [[11.0, -2.0, 1.0], [-1.0, 9.0, 1.0], [1.0, 1.0, 8.0]], "dev": [0.21617152127091407]}, "754": {"P": [[9.0, -2.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.1777455491748213]}, "755": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.17422339355748453]}, "756": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.13525056446260386]}, "757": {"P": [[9.0, -2.0, 1.0], [1.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.1741612816797504]}, "758": {"P": [[9.0, -1.0, 1.0], [2.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.17001566153114303]}, "759": {"P": [[10.0, -1.0, -1.0], [-2.0, 10.0, 1.0], [-1.0, 2.0, 8.0]], "dev": [0.21986399334397133]}, "760": {"P": [[9.0, -1.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 2.0, 9.0]], "dev": [0.20011463017532896]}, "761": {"P": [[8.0, -1.0, 2.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.19989292637375936]}, "762": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [2.0, 0.0, 8.0]], "dev": [0.19967296036257667]}, "763": {"P": [[9.0, -2.0, 2.0], [1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.19259977609747581]}, "764": {"P": [[9.0, 1.0, -2.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.17641811112954009]}, "765": {"P": [[8.0, 0.0, 1.0], [0.0, 11.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.18808368663142894]}, "766": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.17137547622919541]}, "767": {"P": [[9.0, -2.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.18790723548334173]}, "768": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, -2.0], [-1.0, 2.0, 8.0]], "dev": [0.20307380246266205]}, "769": {"P": [[9.0, 1.0, 1.0], [2.0, 9.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.20810214822139547]}, "770": {"P": [[10.0, 1.0, -1.0], [1.0, 8.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.17960113027405844]}, "771": {"P": [[9.0, -1.0, 2.0], [-2.0, 10.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.19777083486764621]}, "772": {"P": [[8.0, 0.0, 2.0], [0.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.18191120773949579]}, "773": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.16773501116538878]}, "774": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.17077955737905759]}, "775": {"P": [[9.0, -1.0, 2.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.18726725289385032]}, "776": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.19016637779114542]}, "777": {"P": [[9.0, -1.0, 2.0], [2.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.19946750676958835]}, "778": {"P": [[10.0, 1.0, 0.0], [0.0, 8.0, 2.0], [-1.0, 1.0, 10.0]], "dev": [0.20529562027150597]}, "779": {"P": [[10.0, -1.0, 1.0], [0.0, 10.0, 1.0], [1.0, 1.0, 8.0]], "dev": [0.19004189117899675]}, "780": {"P": [[9.0, -1.0, 2.0], [-1.0, 10.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.17693818261137742]}, "781": {"P": [[10.0, -1.0, 1.0], [-1.0, 10.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.16295254789836258]}, "782": {"P": [[10.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.14783419848931623]}, "783": {"P": [[8.0, 1.0, 0.0], [0.0, 11.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.16644998460940952]}, "784": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.15615150528443913]}, "785": {"P": [[8.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.17397996600439086]}, "786": {"P": [[10.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.19361809109191436]}, "787": {"P": [[8.0, -1.0, 2.0], [0.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.20596103505988189]}, "788": {"P": [[8.0, -1.0, 1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.18268999447786782]}, "789": {"P": [[8.0, 1.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17469561943006773]}, "790": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.1419949194967485]}, "791": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.12536389715034979]}, "792": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.13101225813598982]}, "793": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.1516501641322357]}, "794": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.17847476109850499]}, "795": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.20493986892462449]}, "796": {"P": [[8.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.2039350811847403]}, "797": {"P": [[9.0, -1.0, 1.0], [0.0, 10.0, 1.0], [2.0, -1.0, 9.0]], "dev": [0.18890323169350701]}, "798": {"P": [[10.0, 0.0, 1.0], [0.0, 8.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.17259720924330496]}, "799": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.1546142963824082]}, "800": {"P": [[9.0, 0.0, 1.0], [0.0, 10.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.11058826023712102]}, "801": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.10659845504236683]}, "802": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.13728646215308754]}, "803": {"P": [[8.0, 1.0, 1.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.16952950415128515]}, "804": {"P": [[8.0, 1.0, 1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.18107921626329704]}, "805": {"P": [[8.0, 1.0, 1.0], [-1.0, 9.0, 0.0], [0.0, -2.0, 11.0]], "dev": [0.20070818178998265]}, "806": {"P": [[8.0, 1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, -1.0, 10.0]], "dev": [0.19043145704172326]}, "807": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.1808225693533248]}, "808": {"P": [[9.0, 0.0, -1.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.15149136033307242]}, "809": {"P": [[9.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.11632119982110627]}, "810": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.061955037795536461]}, "811": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, 1.0], [-1.0, 0.0, 10.0]], "dev": [0.13116556928240089]}, "812": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.15151301305258486]}, "813": {"P": [[8.0, 1.0, 1.0], [-1.0, 9.0, 0.0], [-1.0, -1.0, 11.0]], "dev": [0.18557749938171991]}, "814": {"P": [[8.0, 1.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.1906983192425144]}, "815": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -1.0], [-1.0, 2.0, 8.0]], "dev": [0.20039463326948098]}, "816": {"P": [[9.0, -1.0, 0.0], [-1.0, 9.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.18013586559361727]}, "817": {"P": [[8.0, -1.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.16940086026451445]}, "818": {"P": [[9.0, 1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.13884535329527886]}, "819": {"P": [[9.0, 1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.09761513461621571]}, "820": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.11479280010924163]}, "821": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 9.0]], "dev": [0.14993289356816084]}, "822": {"P": [[10.0, 1.0, -1.0], [1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.16769173656246217]}, "823": {"P": [[10.0, 0.0, 1.0], [-1.0, 9.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.19488582566911597]}, "824": {"P": [[8.0, 1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -2.0, 10.0]], "dev": [0.20548135579021862]}, "825": {"P": [[8.0, 1.0, -1.0], [-1.0, 10.0, 2.0], [0.0, -1.0, 10.0]], "dev": [0.20883978284169646]}, "826": {"P": [[9.0, 1.0, -1.0], [-2.0, 10.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.1818420318068843]}, "827": {"P": [[9.0, 1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.1518208518888288]}, "828": {"P": [[9.0, -1.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.13186772342472045]}, "829": {"P": [[9.0, 0.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.12317305395984052]}, "830": {"P": [[9.0, 1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.13629639598607698]}, "831": {"P": [[9.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 2.0, 9.0]], "dev": [0.1823395438369845]}, "832": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 1.0], [-2.0, 1.0, 10.0]], "dev": [0.18835734106313071]}, "833": {"P": [[9.0, -2.0, 1.0], [1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.20269674005796301]}, "834": {"P": [[10.0, 1.0, -2.0], [0.0, 9.0, -1.0], [2.0, -1.0, 9.0]], "dev": [0.20014589714529629]}, "835": {"P": [[9.0, 0.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.1764364017881096]}, "836": {"P": [[10.0, -2.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.17651667531383625]}, "837": {"P": [[10.0, 0.0, -1.0], [-1.0, 9.0, 1.0], [2.0, -1.0, 9.0]], "dev": [0.16251545167961376]}, "838": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.14414145023319944]}, "839": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 0.0], [-2.0, 1.0, 10.0]], "dev": [0.1624598439374482]}, "840": {"P": [[9.0, -1.0, 2.0], [1.0, 9.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.16465313948711333]}, "841": {"P": [[9.0, -1.0, 1.0], [2.0, 9.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.18075425426356012]}, "842": {"P": [[9.0, 1.0, 0.0], [-1.0, 9.0, 2.0], [2.0, -1.0, 10.0]], "dev": [0.20334524698507514]}, "843": {"P": [[8.0, -1.0, 2.0], [-1.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.20166668116752115]}, "844": {"P": [[9.0, -1.0, 0.0], [2.0, 10.0, -2.0], [-1.0, 1.0, 9.0]], "dev": [0.20018696635519895]}, "845": {"P": [[9.0, -1.0, 2.0], [0.0, 9.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.21491145888359245]}, "846": {"P": [[10.0, -2.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.17001205950578691]}, "847": {"P": [[9.0, -2.0, 1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.18575046910025689]}, "848": {"P": [[9.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.17123104881503481]}, "849": {"P": [[9.0, -1.0, 2.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.17115183630994638]}, "850": {"P": [[10.0, -1.0, 1.0], [2.0, 9.0, -2.0], [0.0, 1.0, 9.0]], "dev": [0.18665077783288514]}, "851": {"P": [[8.0, 2.0, -1.0], [1.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.19422507807002182]}, "852": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, -2.0], [1.0, -2.0, 10.0]], "dev": [0.18648893110622791]}, "853": {"P": [[8.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.18641004318306437]}, "854": {"P": [[11.0, -1.0, -1.0], [-1.0, 9.0, 2.0], [-1.0, 1.0, 9.0]], "dev": [0.18633250615904334]}, "855": {"P": [[10.0, -2.0, 1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.19343705084990626]}, "856": {"P": [[9.0, -1.0, 1.0], [2.0, 10.0, -2.0], [-1.0, 1.0, 9.0]], "dev": [0.19341252899281883]}, "857": {"P": [[10.0, -1.0, 1.0], [1.0, 9.0, -1.0], [-2.0, 2.0, 9.0]], "dev": [0.19338920676447294]}, "858": {"P": [[9.0, -1.0, 2.0], [1.0, 9.0, 0.0], [-2.0, 1.0, 10.0]], "dev": [0.18603577594681311]}, "859": {"P": [[9.0, 1.0, 1.0], [1.0, 10.0, -2.0], [1.0, -1.0, 10.0]], "dev": [0.18578637384103353]}, "860": {"P": [[11.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, 1.0, 8.0]], "dev": [0.17006208542700932]}, "861": {"P": [[8.0, 1.0, 0.0], [1.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.16177445162195495]}, "862": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.17025438533222081]}, "863": {"P": [[10.0, 0.0, -1.0], [1.0, 8.0, 0.0], [-2.0, 1.0, 11.0]], "dev": [0.18569471083852448]}, "864": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.16225124436890453]}, "865": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.18639897542298481]}, "866": {"P": [[8.0, 0.0, 1.0], [-1.0, 10.0, -1.0], [0.0, -2.0, 11.0]], "dev": [0.20066182606755736]}, "867": {"P": [[9.0, 0.0, 2.0], [-1.0, 11.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.19776255198102455]}, "868": {"P": [[8.0, 1.0, 1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17600111206807578]}, "869": {"P": [[10.0, 1.0, -1.0], [1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.15939446135852281]}, "870": {"P": [[8.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.16075271969877461]}, "871": {"P": [[9.0, 1.0, -1.0], [1.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.14256637751449772]}, "872": {"P": [[8.0, 0.0, 1.0], [0.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.15273869391366643]}, "873": {"P": [[8.0, 1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.1623849652320799]}, "874": {"P": [[9.0, 1.0, -1.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.17159356281309673]}, "875": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.18690849479249941]}, "876": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -2.0], [1.0, -2.0, 10.0]], "dev": [0.20104046610998155]}, "877": {"P": [[8.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.19912172306648063]}, "878": {"P": [[9.0, 0.0, 2.0], [1.0, 10.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.18035136704063495]}, "879": {"P": [[9.0, 1.0, -1.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.14965722380214358]}, "880": {"P": [[9.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.13002148866997182]}, "881": {"P": [[9.0, 0.0, 1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.12088608196600342]}, "882": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.13342116876084939]}, "883": {"P": [[9.0, 1.0, -1.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.16265428338710691]}, "884": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.17561028332079262]}, "885": {"P": [[9.0, 0.0, -1.0], [1.0, 11.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.1932026565681195]}, "886": {"P": [[10.0, 0.0, 1.0], [2.0, 8.0, 0.0], [-1.0, -1.0, 11.0]], "dev": [0.19580751056521498]}, "887": {"P": [[10.0, 1.0, 0.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.17534786979399836]}, "888": {"P": [[9.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.16554789084921928]}, "889": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.13646899027876219]}, "890": {"P": [[10.0, 1.0, -1.0], [1.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.10536734637672354]}, "891": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.10176126140581437]}, "892": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.1455102404494685]}, "893": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.16304454255641851]}, "894": {"P": [[10.0, -1.0, 1.0], [-2.0, 10.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.1788467023959554]}, "895": {"P": [[8.0, 1.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.19334195390889219]}, "896": {"P": [[9.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.18537460132851002]}, "897": {"P": [[10.0, -1.0, 2.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.17995524957127032]}, "898": {"P": [[9.0, -1.0, 1.0], [0.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.14695110258895691]}, "899": {"P": [[9.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.12723840130186251]}, "900": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.059817362687996645]}, "901": {"P": [[9.0, 0.0, 1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.11163995748754804]}, "902": {"P": [[9.0, -1.0, 1.0], [0.0, 10.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.14645379763003219]}, "903": {"P": [[9.0, 0.0, -1.0], [-1.0, 11.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.17414849028048765]}, "904": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.18396711133271731]}, "905": {"P": [[9.0, 0.0, -1.0], [1.0, 11.0, -1.0], [2.0, -1.0, 9.0]], "dev": [0.20241463087421607]}, "906": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.18868572484024618]}, "907": {"P": [[9.0, -1.0, 1.0], [-1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.16378210600667101]}, "908": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.14667048113721537]}, "909": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.11201619914819168]}, "910": {"P": [[9.0, 0.0, 1.0], [0.0, 10.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.094250692005019926]}, "911": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.13211966604391734]}, "912": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.16258569701164069]}, "913": {"P": [[10.0, -2.0, 1.0], [1.0, 9.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17356492512612889]}, "914": {"P": [[9.0, -1.0, 1.0], [1.0, 9.0, 1.0], [-2.0, 1.0, 11.0]], "dev": [0.19231105285071193]}, "915": {"P": [[10.0, -1.0, -1.0], [2.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.19786792605321785]}, "916": {"P": [[9.0, -1.0, 2.0], [-1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.18397186142227512]}, "917": {"P": [[9.0, -2.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.17982460917395934]}, "918": {"P": [[10.0, 1.0, -1.0], [-1.0, 10.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.134031036188971]}, "919": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.1189745372993459]}, "920": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.12489999041666576]}, "921": {"P": [[10.0, -1.0, 1.0], [1.0, 9.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.14442609595119771]}, "922": {"P": [[10.0, 0.0, 1.0], [1.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.17008778159647706]}, "923": {"P": [[9.0, 0.0, 1.0], [1.0, 11.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.20128021887472905]}, "924": {"P": [[9.0, -1.0, 1.0], [2.0, 9.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.19484087849886497]}, "925": {"P": [[9.0, -2.0, 1.0], [0.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.20416950309924151]}, "926": {"P": [[10.0, 0.0, -2.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.18034687127520571]}, "927": {"P": [[9.0, -1.0, 1.0], [0.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.16519203488146886]}, "928": {"P": [[9.0, 2.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.1569884804344929]}, "929": {"P": [[10.0, 1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.13923329338626828]}, "930": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.15693967923222449]}, "931": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.16459948356610371]}, "932": {"P": [[9.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.16446252084177876]}, "933": {"P": [[9.0, -1.0, 2.0], [0.0, 10.0, 1.0], [-2.0, 1.0, 10.0]], "dev": [0.19047275350421369]}, "934": {"P": [[9.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 2.0, 10.0]], "dev": [0.19647503057025203]}, "935": {"P": [[9.0, -1.0, 2.0], [-1.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.20784184689775828]}, "936": {"P": [[9.0, 1.0, -1.0], [-2.0, 10.0, 2.0], [0.0, -1.0, 10.0]], "dev": [0.18413284091146329]}, "937": {"P": [[9.0, -1.0, 1.0], [1.0, 10.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.16938136429221207]}, "938": {"P": [[9.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.16941351283717609]}, "939": {"P": [[9.0, 1.0, -1.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.17571933485445745]}, "940": {"P": [[9.0, 2.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.16012669322236758]}, "941": {"P": [[8.0, 1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.18982164492726125]}, "942": {"P": [[9.0, 0.0, 1.0], [1.0, 10.0, -2.0], [1.0, -2.0, 11.0]], "dev": [0.18974524120924502]}, "943": {"P": [[10.0, -2.0, 1.0], [-2.0, 11.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.1869956934622016]}, "944": {"P": [[9.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.18697047482055407]}, "945": {"P": [[9.0, 1.0, -1.0], [-2.0, 10.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.19545146672048283]}, "946": {"P": [[8.0, 0.0, 2.0], [0.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.19683828963445271]}, "947": {"P": [[9.0, -1.0, 2.0], [0.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.18438899380865387]}, "948": {"P": [[9.0, 1.0, 1.0], [1.0, 10.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.18023647036160687]}, "949": {"P": [[8.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.1775673237608815]}, "950": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -1.0], [2.0, -2.0, 10.0]], "dev": [0.17745331948800575]}, "951": {"P": [[9.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.17734050032671175]}, "952": {"P": [[9.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.17484224099884624]}, "953": {"P": [[8.0, 1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.18678921327912185]}, "954": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.18461037148586559]}, "955": {"P": [[12.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.19811575959685795]}, "956": {"P": [[8.0, 1.0, 1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.19478826232465446]}, "957": {"P": [[8.0, 0.0, 1.0], [0.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.17879478806361851]}, "958": {"P": [[9.0, 2.0, -1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.16360732917217036]}, "959": {"P": [[9.0, 0.0, 2.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.16345114787897719]}, "960": {"P": [[11.0, 0.0, -1.0], [0.0, 8.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.15898696862325856]}, "961": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.15894282921302602]}, "962": {"P": [[11.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.15681472929959311]}, "963": {"P": [[10.0, -1.0, 0.0], [-2.0, 11.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.17240314737257853]}, "964": {"P": [[9.0, 0.0, -1.0], [1.0, 9.0, 0.0], [-1.0, -1.0, 12.0]], "dev": [0.18667640886977818]}, "965": {"P": [[8.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -2.0, 11.0]], "dev": [0.19991644625376412]}, "966": {"P": [[9.0, -1.0, 2.0], [-2.0, 11.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.18978476060801019]}, "967": {"P": [[9.0, 1.0, 1.0], [1.0, 10.0, 0.0], [1.0, -2.0, 11.0]], "dev": [0.17890215112585559]}, "968": {"P": [[10.0, 1.0, -2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.16039385486053373]}, "969": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.14349681717050611]}, "970": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.12435397926170734]}, "971": {"P": [[9.0, -1.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.14157779655230376]}, "972": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.15547748636318173]}, "973": {"P": [[9.0, 2.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.17249205607374943]}, "974": {"P": [[9.0, 0.0, -1.0], [1.0, 10.0, -1.0], [0.0, -2.0, 11.0]], "dev": [0.18547814643352964]}, "975": {"P": [[9.0, 1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.1998347537676553]}, "976": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, 0.0, 8.0]], "dev": [0.18777852177169985]}, "977": {"P": [[8.0, 0.0, 1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.17481402132596163]}, "978": {"P": [[9.0, 1.0, 1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.14536755614596478]}, "979": {"P": [[10.0, -1.0, 1.0], [-1.0, 10.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.12508738443866615]}, "980": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.12219553013313784]}, "981": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.1208684939667309]}, "982": {"P": [[9.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.1403138998406453]}, "983": {"P": [[9.0, 0.0, 2.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.17351063334827582]}, "984": {"P": [[9.0, 0.0, -1.0], [1.0, 10.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.18676181651937088]}, "985": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.19983923633142794]}, "986": {"P": [[8.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.18742242996111108]}, "987": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.17341278097595111]}, "988": {"P": [[9.0, 0.0, -1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.15754857867277874]}, "989": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.12301009875117666]}, "990": {"P": [[10.0, 0.0, -1.0], [0.0, 10.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.098729020623760808]}, "991": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [-1.0, 0.0, 10.0]], "dev": [0.12166191053943615]}, "992": {"P": [[9.0, 0.0, 1.0], [-2.0, 11.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.15772188653547717]}, "993": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.17261691296150045]}, "994": {"P": [[9.0, 0.0, 2.0], [-2.0, 11.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.18720616600215842]}, "995": {"P": [[11.0, 0.0, -2.0], [0.0, 8.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.20013578878628829]}, "996": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.18698250660993479]}, "997": {"P": [[9.0, 2.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 0.0, 10.0]], "dev": [0.17338297615730991]}, "998": {"P": [[9.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.14151812477089984]}, "999": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.12231159054516919]}, "1000": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [5.4389598220420729e-16]}, "1001": {"P": [[10.0, 0.0, 1.0], [1.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.12223021198755231]}, "1002": {"P": [[9.0, 1.0, 1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.14132955314349954]}, "1003": {"P": [[11.0, 1.0, -2.0], [1.0, 10.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.1730365383987848]}, "1004": {"P": [[9.0, -1.0, 1.0], [1.0, 10.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.18648546092547183]}, "1005": {"P": [[12.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.19947039916617662]}, "1006": {"P": [[10.0, 0.0, -1.0], [2.0, 10.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.18645976820295646]}, "1007": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.18698010604054888]}, "1008": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.1568870725392934]}, "1009": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.12216386228754324]}, "1010": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.098920751042679347]}, "1011": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.12061590867497271]}, "1012": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.15566861502571228]}, "1013": {"P": [[9.0, 2.0, 1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.18577867430998829]}, "1014": {"P": [[9.0, 0.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.18444195154911966]}, "1015": {"P": [[9.0, -1.0, 2.0], [1.0, 10.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.19723789279390669]}, "1016": {"P": [[11.0, -2.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.18761203723563483]}, "1017": {"P": [[10.0, 2.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.17237122772538338]}, "1018": {"P": [[10.0, -2.0, 1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.15920597546149023]}, "1019": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.12321684339392468]}, "1020": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.12193523987218344]}, "1021": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.12050851001892746]}, "1022": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 2.0, 10.0]], "dev": [0.15492175111169273]}, "1023": {"P": [[9.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.16995515602975825]}, "1024": {"P": [[10.0, -1.0, 1.0], [2.0, 9.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.18374640238183698]}, "1025": {"P": [[9.0, 1.0, 1.0], [-2.0, 10.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.19861447308429314]}, "1026": {"P": [[10.0, 2.0, -1.0], [-2.0, 11.0, 1.0], [0.0, 0.0, 9.0]], "dev": [0.1857822698370509]}, "1027": {"P": [[9.0, 1.0, 1.0], [1.0, 11.0, -2.0], [1.0, -2.0, 11.0]], "dev": [0.19630781536323391]}, "1028": {"P": [[10.0, -2.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.15993054749696473]}, "1029": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.15704448503139148]}, "1030": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.12186672736313606]}, "1031": {"P": [[10.0, -2.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.15700347194746311]}, "1032": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.15365733790084374]}, "1033": {"P": [[9.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.21026232863227395]}, "1034": {"P": [[10.0, 2.0, -1.0], [-1.0, 10.0, 2.0], [1.0, 0.0, 10.0]], "dev": [0.18102128092333022]}, "1035": {"P": [[8.0, 1.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.19390027697138587]}, "1036": {"P": [[10.0, -2.0, 2.0], [-2.0, 11.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.19523240490953855]}, "1037": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.18541789344355064]}, "1038": {"P": [[10.0, -2.0, 2.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.17350033241530588]}, "1039": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 10.0]], "dev": [0.15886111003755737]}, "1040": {"P": [[10.0, -2.0, 1.0], [2.0, 10.0, -1.0], [0.0, 0.0, 10.0]], "dev": [0.17169392264764297]}, "1041": {"P": [[10.0, -1.0, 1.0], [2.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.1547524886333288]}, "1042": {"P": [[10.0, -2.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.1696905182509782]}, "1043": {"P": [[10.0, 1.0, 0.0], [-1.0, 9.0, 2.0], [1.0, -2.0, 11.0]], "dev": [0.18339991285645232]}, "1044": {"P": [[10.0, 2.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.19252417478137324]}, "1045": {"P": [[12.0, 0.0, -1.0], [1.0, 9.0, 1.0], [-1.0, 2.0, 10.0]], "dev": [0.19050165517809239]}, "1046": {"P": [[9.0, -1.0, 2.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.17916361157914187]}, "1047": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.17901529531648952]}, "1048": {"P": [[10.0, -1.0, 2.0], [-1.0, 11.0, 0.0], [2.0, -1.0, 10.0]], "dev": [0.17886797052452122]}, "1049": {"P": [[9.0, 0.0, 2.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.18088636298191432]}, "1050": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -2.0], [1.0, -1.0, 10.0]], "dev": [0.16922372799013324]}, "1051": {"P": [[12.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.17154323045508119]}, "1052": {"P": [[10.0, -2.0, 1.0], [2.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.182850506262065]}, "1053": {"P": [[10.0, -1.0, 1.0], [2.0, 10.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.1804850316054849]}, "1054": {"P": [[10.0, -2.0, 2.0], [2.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.19330604221022962]}, "1055": {"P": [[10.0, 1.0, 1.0], [1.0, 11.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.18634061959006304]}, "1056": {"P": [[11.0, -1.0, 1.0], [-1.0, 11.0, 1.0], [1.0, 1.0, 9.0]], "dev": [0.16087498621445037]}, "1057": {"P": [[9.0, -1.0, 2.0], [0.0, 12.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17758641422612717]}, "1058": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.16331737758107143]}, "1059": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.15080809159915975]}, "1060": {"P": [[9.0, 1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.15381548916412396]}, "1061": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.16868218601977061]}, "1062": {"P": [[11.0, -2.0, 1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.17149885022132222]}, "1063": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [2.0, -1.0, 9.0]], "dev": [0.18496667501988154]}, "1064": {"P": [[10.0, -1.0, 2.0], [0.0, 11.0, 1.0], [2.0, -1.0, 10.0]], "dev": [0.19696033576658148]}, "1065": {"P": [[9.0, 0.0, 2.0], [1.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.18416670445068475]}, "1066": {"P": [[9.0, 1.0, 1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.17043418960260079]}, "1067": {"P": [[9.0, 0.0, 2.0], [0.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.15884286938012832]}, "1068": {"P": [[10.0, -1.0, 2.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.1464579942153561]}, "1069": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.13305779056490291]}, "1070": {"P": [[12.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.14987681606220879]}, "1071": {"P": [[10.0, 1.0, -1.0], [1.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.1409698359976688]}, "1072": {"P": [[9.0, 1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.15701879301962487]}, "1073": {"P": [[9.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -2.0, 11.0]], "dev": [0.17482942804688836]}, "1074": {"P": [[10.0, -2.0, 2.0], [-2.0, 11.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.19740908112675698]}, "1075": {"P": [[9.0, -1.0, 2.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.18525099571834117]}, "1076": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.16458736099153398]}, "1077": {"P": [[9.0, 1.0, 1.0], [1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.15710470358100195]}, "1078": {"P": [[11.0, -1.0, 1.0], [0.0, 11.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.12776212620634503]}, "1079": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.11295165089095055]}, "1080": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.11822740709583061]}, "1081": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.13683803057668026]}, "1082": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -2.0], [1.0, -1.0, 10.0]], "dev": [0.16121913776731434]}, "1083": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.18498643504169443]}, "1084": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -2.0], [2.0, -1.0, 10.0]], "dev": [0.1849953245871003]}, "1085": {"P": [[9.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.1836864504250498]}, "1086": {"P": [[11.0, 0.0, 1.0], [-1.0, 10.0, 1.0], [-1.0, 2.0, 10.0]], "dev": [0.17015486434368518]}, "1087": {"P": [[9.0, 0.0, 1.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.15546970047023692]}, "1088": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.13926646098091763]}, "1089": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.09950826536015886]}, "1090": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.096274109449653436]}, "1091": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.12402424901000718]}, "1092": {"P": [[9.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.15305345157856678]}, "1093": {"P": [[10.0, -1.0, 0.0], [1.0, 9.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.16345441635485272]}, "1094": {"P": [[9.0, 1.0, 1.0], [-1.0, 10.0, 0.0], [0.0, -2.0, 12.0]], "dev": [0.18121608237441639]}, "1095": {"P": [[11.0, 1.0, 0.0], [-2.0, 11.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.18998029475101835]}, "1096": {"P": [[9.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.17198834432946805]}, "1097": {"P": [[11.0, -1.0, -1.0], [0.0, 9.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.16322709889734069]}, "1098": {"P": [[9.0, 0.0, 0.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.13680862611313935]}, "1099": {"P": [[10.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.1049849253523876]}, "1100": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.055943570034098368]}, "1101": {"P": [[10.0, 0.0, -1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.11846547625108067]}, "1102": {"P": [[11.0, -1.0, 1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.13684375903401166]}, "1103": {"P": [[10.0, 0.0, -1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.16762048077613567]}, "1104": {"P": [[9.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.17223176942489726]}, "1105": {"P": [[9.0, 1.0, 2.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.19738301143254516]}, "1106": {"P": [[11.0, -1.0, -1.0], [-1.0, 9.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.18101290398876643]}, "1107": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.16272253016855723]}, "1108": {"P": [[9.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.15302992414617034]}, "1109": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.12539511204050532]}, "1110": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.088199963062929057]}, "1111": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.1037938896933186]}, "1112": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.1356215742023395]}, "1113": {"P": [[10.0, 1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, 1.0, 10.0]], "dev": [0.15169483678278409]}, "1114": {"P": [[11.0, 1.0, 0.0], [1.0, 10.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.1761642826876551]}, "1115": {"P": [[10.0, 1.0, -2.0], [-1.0, 12.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.1888605232769994]}, "1116": {"P": [[9.0, -1.0, 1.0], [0.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.18565082817856099]}, "1117": {"P": [[9.0, -1.0, 1.0], [0.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.18876570150959471]}, "1118": {"P": [[11.0, -2.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.16420970352723027]}, "1119": {"P": [[11.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.13716329707708194]}, "1120": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.11910103811192251]}, "1121": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.11134355102139465]}, "1122": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.12334561955703911]}, "1123": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 10.0]], "dev": [0.16509100963760781]}, "1124": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 1.0], [-2.0, 1.0, 11.0]], "dev": [0.17045066713452714]}, "1125": {"P": [[10.0, 1.0, 1.0], [-2.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.18343929211378332]}, "1126": {"P": [[10.0, -2.0, 1.0], [0.0, 10.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.19094017601992899]}, "1127": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -2.0, 11.0]], "dev": [0.18091723112051758]}, "1128": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.15935521627306146]}, "1129": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 0.0, 11.0]], "dev": [0.15941792696212168]}, "1130": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.14697482701210215]}, "1131": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.13034550255989519]}, "1132": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-2.0, 1.0, 11.0]], "dev": [0.1469376015256392]}, "1133": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.14924997182474434]}, "1134": {"P": [[11.0, 1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.16382937500737721]}, "1135": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 2.0, 11.0]], "dev": [0.18442749724593363]}, "1136": {"P": [[10.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 10.0]], "dev": [0.1842816497366094]}, "1137": {"P": [[9.0, -1.0, 1.0], [1.0, 11.0, -2.0], [-2.0, 1.0, 11.0]], "dev": [0.19837183874406228]}, "1138": {"P": [[10.0, -1.0, 1.0], [0.0, 10.0, -1.0], [-2.0, 2.0, 11.0]], "dev": [0.18099252957614545]}, "1139": {"P": [[10.0, 2.0, -1.0], [-1.0, 11.0, 2.0], [0.0, -1.0, 10.0]], "dev": [0.19459142279296923]}, "1140": {"P": [[10.0, -1.0, 1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.15363244047204655]}, "1141": {"P": [[11.0, -1.0, 1.0], [1.0, 10.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.16790422356260393]}, "1142": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.15510359978142102]}, "1143": {"P": [[10.0, -1.0, 2.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.15504595651472156]}, "1144": {"P": [[10.0, -2.0, 2.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.16909387317238181]}, "1145": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 1.0], [-2.0, 1.0, 11.0]], "dev": [0.18868072144194092]}, "1146": {"P": [[10.0, -1.0, 2.0], [2.0, 10.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.18286843338158967]}, "1147": {"P": [[9.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.18192517807787348]}, "1148": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.18113207912356999]}, "1149": {"P": [[10.0, 2.0, -1.0], [-2.0, 11.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.18114965694630886]}, "1150": {"P": [[10.0, -2.0, 2.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.18762897649578239]}, "1151": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.17505352571660376]}, "1152": {"P": [[10.0, 2.0, -2.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.17503790753596304]}, "1153": {"P": [[10.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-2.0, 1.0, 11.0]], "dev": [0.16859150047802077]}, "1154": {"P": [[11.0, 1.0, -1.0], [1.0, 9.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.17557774002736787]}, "1155": {"P": [[12.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [0.0, 2.0, 9.0]], "dev": [0.16870272985293353]}, "1156": {"P": [[10.0, 2.0, -1.0], [1.0, 10.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.17511015961383808]}, "1157": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -2.0], [1.0, -2.0, 11.0]], "dev": [0.16838921157389927]}, "1158": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.16834063394639687]}, "1159": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.16829285011024478]}, "1160": {"P": [[12.0, -1.0, -1.0], [-2.0, 11.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.17493897479974124]}, "1161": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.17492982504202631]}, "1162": {"P": [[9.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.18740663504909996]}, "1163": {"P": [[11.0, 1.0, 0.0], [1.0, 9.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.18660789737985517]}, "1164": {"P": [[11.0, 1.0, 0.0], [2.0, 9.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.17390971439863978]}, "1165": {"P": [[10.0, 1.0, 1.0], [1.0, 11.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.16742359927840142]}, "1166": {"P": [[9.0, 1.0, 1.0], [1.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.15321878150412815]}, "1167": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.14597850656590716]}, "1168": {"P": [[12.0, -2.0, 0.0], [-1.0, 10.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.15388810124905652]}, "1169": {"P": [[10.0, 2.0, -1.0], [1.0, 11.0, -2.0], [0.0, -1.0, 11.0]], "dev": [0.16785822216692559]}, "1170": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.14688923506541196]}, "1171": {"P": [[10.0, 1.0, -1.0], [1.0, 11.0, -2.0], [-1.0, -1.0, 11.0]], "dev": [0.1688577292638852]}, "1172": {"P": [[9.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 11.0]], "dev": [0.18172799753159957]}, "1173": {"P": [[10.0, -1.0, 1.0], [2.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.19265563023725385]}, "1174": {"P": [[10.0, 0.0, 2.0], [-1.0, 12.0, 0.0], [1.0, 1.0, 10.0]], "dev": [0.17810252617473563]}, "1175": {"P": [[11.0, 0.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 1.0, 9.0]], "dev": [0.1585939667686328]}, "1176": {"P": [[10.0, 1.0, 1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.14357591844593437]}, "1177": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.14522143847401356]}, "1178": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.12878676870669362]}, "1179": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.13818885297716177]}, "1180": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.14707289512446953]}, "1181": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.15552749343425104]}, "1182": {"P": [[12.0, 0.0, -2.0], [-1.0, 10.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.16935216744919132]}, "1183": {"P": [[11.0, 1.0, -2.0], [-1.0, 10.0, 0.0], [-2.0, 1.0, 11.0]], "dev": [0.18211719623434705]}, "1184": {"P": [[10.0, 0.0, 2.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.18343028884285281]}, "1185": {"P": [[9.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.18017161133480064]}, "1186": {"P": [[10.0, 0.0, 2.0], [1.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.16269200777065479]}, "1187": {"P": [[10.0, 1.0, -1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.13517852979615833]}, "1188": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.11741417527815294]}, "1189": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.10931866958466575]}, "1190": {"P": [[10.0, 1.0, -1.0], [0.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.12081521072941549]}, "1191": {"P": [[10.0, 0.0, -1.0], [1.0, 10.0, 0.0], [-1.0, -1.0, 12.0]], "dev": [0.14736271472287085]}, "1192": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.15892422266374154]}, "1193": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.17499778116917541]}, "1194": {"P": [[13.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.19185686733008878]}, "1195": {"P": [[9.0, 0.0, 2.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.1770996310710774]}, "1196": {"P": [[9.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.15868939230625054]}, "1197": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.14974859273928881]}, "1198": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.1233344681661669]}, "1199": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.095266320459418907]}, "1200": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.092314087705045553]}, "1201": {"P": [[10.0, 0.0, -1.0], [1.0, 11.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.13187427604280014]}, "1202": {"P": [[10.0, 0.0, -1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.14774067651878345]}, "1203": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.16204657596725827]}, "1204": {"P": [[9.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.17517474137022873]}, "1205": {"P": [[9.0, 0.0, 2.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.18737291331433875]}, "1206": {"P": [[10.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.1677904469379134]}, "1207": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.16295546100238931]}, "1208": {"P": [[10.0, 1.0, -1.0], [1.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.13307562101247569]}, "1209": {"P": [[10.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.11523670800157775]}, "1210": {"P": [[11.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.054194465153732364]}, "1211": {"P": [[10.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.10117114501998525]}, "1212": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.13272222249719767]}, "1213": {"P": [[10.0, 1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.15783220595386421]}, "1214": {"P": [[10.0, 1.0, 1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.16678384793043413]}, "1215": {"P": [[10.0, -1.0, 0.0], [2.0, 10.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.18348373358788722]}, "1216": {"P": [[9.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.18343457318586978]}, "1217": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.17100889048559961]}, "1218": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.14843970025985334]}, "1219": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.13291868658796369]}, "1220": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.10151023702709568]}, "1221": {"P": [[10.0, 0.0, 1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.085444790061186909]}, "1222": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.11989691820807417]}, "1223": {"P": [[10.0, 1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.14748016153544288]}, "1224": {"P": [[11.0, 1.0, 0.0], [1.0, 11.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.15739605829514003]}, "1225": {"P": [[12.0, -2.0, 1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.17447203103099104]}, "1226": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.19117813222075289]}, "1227": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.17939403839190918]}, "1228": {"P": [[10.0, 2.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, -1.0, 11.0]], "dev": [0.16679425658611594]}, "1229": {"P": [[11.0, 0.0, -1.0], [-2.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.16298465598170883]}, "1230": {"P": [[10.0, 1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.12147393589210514]}, "1231": {"P": [[11.0, -1.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.10789694024334677]}, "1232": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.11338720453466089]}, "1233": {"P": [[11.0, 1.0, 0.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.13110927645963527]}, "1234": {"P": [[10.0, 0.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.15459517925562566]}, "1235": {"P": [[10.0, -2.0, 1.0], [1.0, 10.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.18262557664108583]}, "1236": {"P": [[10.0, 0.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.17699211966099213]}, "1237": {"P": [[10.0, 0.0, -1.0], [-2.0, 11.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.18496363293982271]}, "1238": {"P": [[11.0, 1.0, -2.0], [-1.0, 11.0, 0.0], [1.0, -2.0, 10.0]], "dev": [0.18502965065325205]}, "1239": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.163452559016659]}, "1240": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.14966979742382119]}, "1241": {"P": [[10.0, -1.0, 2.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.14243398874103994]}, "1242": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.12631416755529748]}, "1243": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.14240092154257616]}, "1244": {"P": [[11.0, -1.0, 1.0], [2.0, 10.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.14964139896157452]}, "1245": {"P": [[11.0, 0.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.14954049446442744]}, "1246": {"P": [[11.0, 1.0, 0.0], [1.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.17301780071411604]}, "1247": {"P": [[10.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 11.0]], "dev": [0.17875901928708832]}, "1248": {"P": [[11.0, 0.0, -2.0], [-1.0, 10.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.18571388324707935]}, "1249": {"P": [[10.0, -1.0, 2.0], [-1.0, 11.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.18844237495431196]}, "1250": {"P": [[11.0, -1.0, 0.0], [2.0, 11.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.16699705358310643]}, "1251": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.15358021626899307]}, "1252": {"P": [[10.0, 1.0, -1.0], [-2.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.15360604236337189]}, "1253": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.15965297727487246]}, "1254": {"P": [[10.0, -1.0, 2.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.14550614418725091]}, "1255": {"P": [[10.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.18699438695772996]}, "1256": {"P": [[10.0, -2.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.17243234927377968]}, "1257": {"P": [[10.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.1844095066837354]}, "1258": {"P": [[10.0, -1.0, 2.0], [2.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.18906125130684556]}, "1259": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.19110401966991758]}, "1260": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -2.0], [-2.0, 1.0, 11.0]], "dev": [0.17715446478087241]}, "1261": {"P": [[9.0, 1.0, 1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.17934246305037815]}, "1262": {"P": [[10.0, -1.0, 2.0], [0.0, 11.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.16723146699832719]}, "1263": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.16967568681364378]}, "1264": {"P": [[10.0, -2.0, 2.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.16966202387704182]}, "1265": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.17424595838240595]}, "1266": {"P": [[10.0, 1.0, 0.0], [1.0, 11.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.17191397136989223]}, "1267": {"P": [[10.0, -1.0, 1.0], [-2.0, 13.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.17186576575949039]}, "1268": {"P": [[10.0, 1.0, 0.0], [1.0, 11.0, -2.0], [0.0, -2.0, 12.0]], "dev": [0.16961358529419363]}, "1269": {"P": [[13.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.16960301988624643]}, "1270": {"P": [[10.0, -1.0, 1.0], [0.0, 12.0, -2.0], [1.0, -2.0, 11.0]], "dev": [0.17971541562287791]}, "1271": {"P": [[10.0, 2.0, -1.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.18942206121749947]}, "1272": {"P": [[10.0, 2.0, -1.0], [2.0, 11.0, -1.0], [0.0, 0.0, 12.0]], "dev": [0.17766991039708963]}, "1273": {"P": [[10.0, -1.0, 2.0], [-2.0, 12.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.17556696619194082]}, "1274": {"P": [[10.0, 1.0, 1.0], [1.0, 12.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.16287827349811618]}, "1275": {"P": [[12.0, 0.0, -1.0], [0.0, 9.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.16070638904529272]}, "1276": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -1.0], [2.0, -2.0, 11.0]], "dev": [0.16062951434302644]}, "1277": {"P": [[10.0, 1.0, -1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.16055334943133739]}, "1278": {"P": [[10.0, 2.0, -1.0], [1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.15850818077871562]}, "1279": {"P": [[9.0, 1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.16953084067078461]}, "1280": {"P": [[11.0, 1.0, -2.0], [0.0, 10.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.167737059289088]}, "1281": {"P": [[10.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.17996100630963979]}, "1282": {"P": [[10.0, 0.0, 2.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.18785774696394028]}, "1283": {"P": [[11.0, 1.0, 1.0], [2.0, 10.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.17607926811752431]}, "1284": {"P": [[12.0, 0.0, 0.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.16176333237293267]}, "1285": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.14799431004585312]}, "1286": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.14788498858914739]}, "1287": {"P": [[9.0, 1.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.1442286897513067]}, "1288": {"P": [[11.0, 1.0, -2.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.14420261549100516]}, "1289": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.14245495530817176]}, "1290": {"P": [[10.0, -1.0, 1.0], [0.0, 11.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.15658151049522273]}, "1291": {"P": [[10.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.16952272997116696]}, "1292": {"P": [[12.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.18153231606498685]}, "1293": {"P": [[9.0, 1.0, 0.0], [1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.18637100224071171]}, "1294": {"P": [[10.0, -1.0, 2.0], [-2.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.17207014472944915]}, "1295": {"P": [[10.0, 1.0, 1.0], [1.0, 11.0, 0.0], [1.0, -2.0, 12.0]], "dev": [0.16192471573471076]}, "1296": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.1454334804029615]}, "1297": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.13011190878077847]}, "1298": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.11274689323325514]}, "1299": {"P": [[10.0, -1.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.12855172600060955]}, "1300": {"P": [[11.0, 0.0, -1.0], [1.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.14141330521284981]}, "1301": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [2.0, -1.0, 10.0]], "dev": [0.1567214509790717]}, "1302": {"P": [[10.0, 0.0, 1.0], [-1.0, 11.0, -1.0], [0.0, -2.0, 12.0]], "dev": [0.16859009965710525]}, "1303": {"P": [[13.0, -1.0, 0.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.18153364494294288]}, "1304": {"P": [[12.0, 1.0, -2.0], [1.0, 9.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.18325690211404311]}, "1305": {"P": [[9.0, 0.0, 0.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.17050506771326246]}, "1306": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.15864770523670213]}, "1307": {"P": [[12.0, 0.0, -1.0], [1.0, 10.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.13169134814862873]}, "1308": {"P": [[11.0, -1.0, 1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.11339732949577835]}, "1309": {"P": [[12.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.11102755674758386]}, "1310": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.10993377311533782]}, "1311": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.12756457013968617]}, "1312": {"P": [[10.0, 2.0, 0.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.15763052576966727]}, "1313": {"P": [[9.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.16972035191839185]}, "1314": {"P": [[11.0, -2.0, 1.0], [-1.0, 12.0, 1.0], [-1.0, 0.0, 10.0]], "dev": [0.18159839915200379]}, "1315": {"P": [[10.0, -1.0, 0.0], [-2.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.19225650090166688]}, "1316": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.1702756441288559]}, "1317": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.15756402691923727]}, "1318": {"P": [[12.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.14322713606575596]}, "1319": {"P": [[11.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.11173844898242148]}, "1320": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.089829274226300784]}, "1321": {"P": [[11.0, 0.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.11063130890018853]}, "1322": {"P": [[12.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.14337438472626504]}, "1323": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.15692179169035209]}, "1324": {"P": [[10.0, 0.0, 2.0], [-2.0, 12.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.1701529306845575]}, "1325": {"P": [[13.0, 0.0, -1.0], [-1.0, 10.0, 2.0], [0.0, -1.0, 10.0]], "dev": [0.19296908236479127]}, "1326": {"P": [[9.0, 0.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.18189593786846636]}, "1327": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.16998201784952199]}, "1328": {"P": [[10.0, 1.0, -1.0], [1.0, 12.0, -2.0], [0.0, 1.0, 11.0]], "dev": [0.15758033851848077]}, "1329": {"P": [[10.0, 1.0, 0.0], [0.0, 11.0, 1.0], [-1.0, -1.0, 12.0]], "dev": [0.1286307947357137]}, "1330": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.11121521992212391]}, "1331": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.0]}, "1332": {"P": [[11.0, 0.0, 1.0], [1.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.11115960524409663]}, "1333": {"P": [[10.0, 1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.12850199993444236]}, "1334": {"P": [[10.0, 1.0, -1.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.15734372297373028]}, "1335": {"P": [[10.0, 1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16964231669317215]}, "1336": {"P": [[10.0, 0.0, 2.0], [0.0, 13.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.18144132808899355]}, "1337": {"P": [[10.0, -1.0, 1.0], [-1.0, 11.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.18155506639301811]}, "1338": {"P": [[10.0, 0.0, 1.0], [1.0, 11.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.16955811656231817]}, "1339": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.17001996748469866]}, "1340": {"P": [[11.0, 1.0, -1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.14273249540934774]}, "1341": {"P": [[11.0, 0.0, 1.0], [-1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.11110491751370849]}, "1342": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.090035030488748641]}, "1343": {"P": [[11.0, 0.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.10984244046879986]}, "1344": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.14178766237318613]}, "1345": {"P": [[11.0, -2.0, 1.0], [1.0, 10.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.16907105177990475]}, "1346": {"P": [[10.0, 0.0, 2.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.1680018532592599]}, "1347": {"P": [[10.0, 2.0, -1.0], [-1.0, 12.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.17966451082891946]}, "1348": {"P": [[10.0, 2.0, -1.0], [-1.0, 11.0, 2.0], [-1.0, -1.0, 12.0]], "dev": [0.18112443675842452]}, "1349": {"P": [[12.0, 1.0, -2.0], [-1.0, 10.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.17059312499633308]}, "1350": {"P": [[11.0, -1.0, 2.0], [1.0, 10.0, 0.0], [-1.0, -1.0, 12.0]], "dev": [0.15682326418029083]}, "1351": {"P": [[11.0, -2.0, 1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.14471430004317473]}, "1352": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.11199983030391658]}, "1353": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.11093464160363745]}, "1354": {"P": [[11.0, 1.0, -1.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.10975964167736638]}, "1355": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 11.0]], "dev": [0.14118302909481892]}, "1356": {"P": [[10.0, 0.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.15487539308207424]}, "1357": {"P": [[12.0, 1.0, 0.0], [-1.0, 10.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.16744054409141279]}, "1358": {"P": [[10.0, 1.0, 1.0], [-2.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.18078988090969603]}, "1359": {"P": [[10.0, 2.0, -1.0], [-1.0, 11.0, 2.0], [1.0, 0.0, 12.0]], "dev": [0.1892424858999846]}, "1360": {"P": [[10.0, 0.0, 0.0], [1.0, 12.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.1690852543060048]}, "1361": {"P": [[10.0, 2.0, -1.0], [2.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.18988361388787328]}, "1362": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.14534037379434336]}, "1363": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.14293293597616202]}, "1364": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.11088322060295014]}, "1365": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.14290478997028716]}, "1366": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.14014855409951102]}, "1367": {"P": [[12.0, -2.0, 1.0], [1.0, 10.0, -2.0], [0.0, 1.0, 11.0]], "dev": [0.1924861317132581]}, "1368": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 11.0]], "dev": [0.16521644995024379]}, "1369": {"P": [[9.0, 0.0, 2.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.18806336114016017]}, "1370": {"P": [[10.0, -1.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.18164924581149838]}, "1371": {"P": [[10.0, -1.0, 1.0], [1.0, 11.0, -2.0], [-2.0, 1.0, 12.0]], "dev": [0.1828673476693907]}, "1372": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.16881443686881223]}, "1373": {"P": [[11.0, -2.0, 2.0], [1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.15782215749422779]}, "1374": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.14445997672303812]}, "1375": {"P": [[11.0, -2.0, 1.0], [2.0, 11.0, -1.0], [0.0, 0.0, 11.0]], "dev": [0.1563201676513834]}, "1376": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.14104946119083422]}, "1377": {"P": [[11.0, -2.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.15466806911282288]}, "1378": {"P": [[10.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-2.0, 1.0, 12.0]], "dev": [0.16716983837053942]}, "1379": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, -1.0], [0.0, 2.0, 11.0]], "dev": [0.17581482609269597]}, "1380": {"P": [[10.0, 0.0, 2.0], [1.0, 12.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.17873971834117641]}, "1381": {"P": [[9.0, 1.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.17559412924460688]}, "1382": {"P": [[12.0, 1.0, -2.0], [0.0, 11.0, 1.0], [-2.0, 2.0, 11.0]], "dev": [0.17707052072529872]}, "1383": {"P": [[11.0, 1.0, -2.0], [-1.0, 11.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.17197949288705056]}, "1384": {"P": [[11.0, 1.0, -2.0], [-1.0, 11.0, 0.0], [2.0, -1.0, 11.0]], "dev": [0.17033314936600821]}, "1385": {"P": [[10.0, -1.0, 2.0], [0.0, 13.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.18943717036456614]}, "1386": {"P": [[11.0, -2.0, 2.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.15621351218230389]}, "1387": {"P": [[9.0, 0.0, 1.0], [-1.0, 13.0, -2.0], [0.0, -1.0, 12.0]], "dev": [0.19254380393170953]}, "1388": {"P": [[11.0, -2.0, 1.0], [2.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.16671836940209378]}, "1389": {"P": [[11.0, -1.0, 2.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.16476759795330884]}, "1390": {"P": [[11.0, -2.0, 2.0], [2.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.17646117289419341]}, "1391": {"P": [[12.0, 1.0, -1.0], [1.0, 10.0, 2.0], [-1.0, 1.0, 12.0]], "dev": [0.18211142313875447]}, "1392": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.17250776823251024]}, "1393": {"P": [[10.0, 1.0, 1.0], [1.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.16241360011816178]}, "1394": {"P": [[10.0, 0.0, 2.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.16230938138648701]}, "1395": {"P": [[11.0, 2.0, -1.0], [2.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.16220576435449441]}, "1396": {"P": [[10.0, 0.0, 2.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.16426417896408219]}, "1397": {"P": [[11.0, -1.0, 1.0], [-2.0, 13.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.15386548480259229]}, "1398": {"P": [[10.0, 1.0, -1.0], [1.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.15617376441138875]}, "1399": {"P": [[10.0, 1.0, 0.0], [1.0, 13.0, -2.0], [0.0, -1.0, 11.0]], "dev": [0.16628633288986672]}, "1400": {"P": [[10.0, 0.0, 0.0], [1.0, 12.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.16848105172062169]}, "1401": {"P": [[11.0, -2.0, 2.0], [2.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.18670103078841127]}, "1402": {"P": [[13.0, -1.0, 0.0], [0.0, 11.0, 2.0], [1.0, 1.0, 10.0]], "dev": [0.18036058725155646]}, "1403": {"P": [[11.0, 2.0, -1.0], [1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.16877238544444659]}, "1404": {"P": [[12.0, 1.0, -1.0], [1.0, 10.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.1457474298450461]}, "1405": {"P": [[11.0, -1.0, 2.0], [0.0, 13.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.16120254441395596]}, "1406": {"P": [[10.0, 2.0, 0.0], [1.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.14822631348710258]}, "1407": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.13703332007467764]}, "1408": {"P": [[13.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.13996328807288888]}, "1409": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.15349739212623101]}, "1410": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.15621137778315791]}, "1411": {"P": [[10.0, -1.0, 2.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.16845938586667092]}, "1412": {"P": [[10.0, -1.0, 2.0], [-2.0, 13.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.17986534679676136]}, "1413": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [2.0, -1.0, 11.0]], "dev": [0.17867599688647159]}, "1414": {"P": [[12.0, -1.0, 1.0], [0.0, 12.0, 1.0], [2.0, 0.0, 10.0]], "dev": [0.16704093415758023]}, "1415": {"P": [[12.0, 1.0, 0.0], [1.0, 10.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.15454518598613112]}, "1416": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.14414963393477814]}, "1417": {"P": [[11.0, 2.0, -1.0], [1.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.13303411885728927]}, "1418": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.12100018167033517]}, "1419": {"P": [[12.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [-1.0, 1.0, 11.0]], "dev": [0.13633645661872393]}, "1420": {"P": [[11.0, 1.0, -1.0], [1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.12850770305602549]}, "1421": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.14309941191659875]}, "1422": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 12.0]], "dev": [0.15939432703332795]}, "1423": {"P": [[11.0, -2.0, 2.0], [-2.0, 12.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.17984813326187901]}, "1424": {"P": [[10.0, 0.0, 2.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 12.0]], "dev": [0.1798492726163462]}, "1425": {"P": [[12.0, 1.0, -1.0], [2.0, 10.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.16837204879005332]}, "1426": {"P": [[10.0, -1.0, 1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.14978458086181037]}, "1427": {"P": [[10.0, 0.0, 1.0], [1.0, 12.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.14276535884427952]}, "1428": {"P": [[10.0, 1.0, 0.0], [1.0, 12.0, -1.0], [0.0, 0.0, 12.0]], "dev": [0.11614769863696231]}, "1429": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.10279606141431308]}, "1430": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.10773396343906001]}, "1431": {"P": [[11.0, -1.0, 1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.12467903848142863]}, "1432": {"P": [[11.0, -1.0, 1.0], [-2.0, 12.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.14702545152813573]}, "1433": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.16859080741285529]}, "1434": {"P": [[12.0, -1.0, -1.0], [-2.0, 12.0, 0.0], [1.0, 1.0, 10.0]], "dev": [0.16860213704542537]}, "1435": {"P": [[10.0, 1.0, 1.0], [1.0, 11.0, 1.0], [0.0, -2.0, 13.0]], "dev": [0.17860400841147087]}, "1436": {"P": [[13.0, -1.0, -1.0], [1.0, 10.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16713015102386442]}, "1437": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, 1.0], [2.0, -1.0, 11.0]], "dev": [0.15482067085664847]}, "1438": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.14145756665636186]}, "1439": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.12670789096202228]}, "1440": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.090456559864250524]}, "1441": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.087781083835917678]}, "1442": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.11310750435804687]}, "1443": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.13950308982097506]}, "1444": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.14895887006528277]}, "1445": {"P": [[10.0, 1.0, 1.0], [-1.0, 11.0, 0.0], [0.0, -2.0, 13.0]], "dev": [0.16517778536893865]}, "1446": {"P": [[10.0, 1.0, 1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.17998475204137215]}, "1447": {"P": [[10.0, -1.0, 1.0], [0.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.17311803068955273]}, "1448": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.15681061394500473]}, "1449": {"P": [[10.0, 1.0, 0.0], [0.0, 12.0, 1.0], [-1.0, -1.0, 12.0]], "dev": [0.14876277534795365]}, "1450": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.12472556226875965]}, "1451": {"P": [[11.0, 0.0, 1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.095666523502877743]}, "1452": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.050996563322670795]}, "1453": {"P": [[12.0, 0.0, -1.0], [1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.10800877393410187]}, "1454": {"P": [[11.0, 0.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.12476414737674665]}, "1455": {"P": [[12.0, 1.0, -1.0], [1.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.15282950673306842]}, "1456": {"P": [[10.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.15702428666247653]}, "1457": {"P": [[10.0, 1.0, 2.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.18002013969113029]}, "1458": {"P": [[11.0, -1.0, 2.0], [-1.0, 11.0, 0.0], [-1.0, 2.0, 12.0]], "dev": [0.17995174194639646]}, "1459": {"P": [[10.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.16505197329702379]}, "1460": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.14838117735076056]}, "1461": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.13954249069779717]}, "1462": {"P": [[11.0, -1.0, 1.0], [0.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.1143165027458284]}, "1463": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.080439166586668817]}, "1464": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.094713958145814708]}, "1465": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.12379457954713245]}, "1466": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.13847063510451871]}, "1467": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.16071122001543514]}, "1468": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.17230543049577809]}, "1469": {"P": [[11.0, -2.0, 1.0], [2.0, 11.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.18700192656417372]}, "1470": {"P": [[10.0, 1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.16930219324174578]}, "1471": {"P": [[10.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.17220681186839037]}, "1472": {"P": [[12.0, -2.0, 0.0], [1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.14968203638296146]}, "1473": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.12507854785185951]}, "1474": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.10858081355482431]}, "1475": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.10158083026349414]}, "1476": {"P": [[11.0, 0.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.11263277008812531]}, "1477": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 2.0, 12.0]], "dev": [0.15080536925852692]}, "1478": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.1556337962144356]}, "1479": {"P": [[11.0, 1.0, -2.0], [-1.0, 12.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16750017276771137]}, "1480": {"P": [[12.0, 0.0, 1.0], [2.0, 11.0, -1.0], [0.0, 2.0, 11.0]], "dev": [0.17653099928558533]}, "1481": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [-2.0, 1.0, 11.0]], "dev": [0.17408678325188368]}, "1482": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.16504507348387173]}, "1483": {"P": [[11.0, 0.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.14527290859908215]}, "1484": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.14532263662886824]}, "1485": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.13413466119091466]}, "1486": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.11894924252801989]}, "1487": {"P": [[11.0, 1.0, -1.0], [-2.0, 12.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.13410882226840246]}, "1488": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.13646361578738395]}, "1489": {"P": [[11.0, 1.0, -1.0], [-1.0, 12.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.14977925145010679]}, "1490": {"P": [[11.0, 1.0, 0.0], [-1.0, 11.0, 2.0], [2.0, -1.0, 12.0]], "dev": [0.16869726681312611]}, "1491": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-1.0, 2.0, 11.0]], "dev": [0.16858808414530799]}, "1492": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.18244969871131894]}, "1493": {"P": [[10.0, -1.0, 1.0], [1.0, 12.0, -2.0], [-2.0, 1.0, 12.0]], "dev": [0.18093482754506779]}, "1494": {"P": [[11.0, -1.0, 0.0], [2.0, 12.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.1651358073685206]}, "1495": {"P": [[11.0, -1.0, 0.0], [2.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.17776149301229935]}, "1496": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.14011356243647408]}, "1497": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.15316572183061339]}, "1498": {"P": [[11.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.14173495818701415]}, "1499": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.14169177370475086]}, "1500": {"P": [[11.0, -2.0, 2.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.15453218377761338]}, "1501": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.17256742055161722]}, "1502": {"P": [[11.0, 2.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.16742076480161994]}, "1503": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.1724185865125247]}, "1504": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -2.0], [-2.0, 2.0, 12.0]], "dev": [0.18689129308825583]}, "1505": {"P": [[11.0, -1.0, 2.0], [0.0, 11.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.16527339191977305]}, "1506": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.16528842087081175]}, "1507": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.17134977979683283]}, "1508": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.15985381698051229]}, "1509": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.15984297405718095]}, "1510": {"P": [[11.0, 1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.15411492523692064]}, "1511": {"P": [[11.0, 1.0, -2.0], [-1.0, 12.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.17129057486778235]}, "1512": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.16034463528682449]}, "1513": {"P": [[11.0, -2.0, 1.0], [2.0, 11.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.17692812775521122]}, "1514": {"P": [[10.0, 2.0, 0.0], [1.0, 12.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.17163460872457192]}, "1515": {"P": [[10.0, -1.0, 2.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.1657815567750773]}, "1516": {"P": [[11.0, -2.0, 1.0], [-2.0, 13.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.17122635159185887]}, "1517": {"P": [[10.0, 2.0, -1.0], [1.0, 13.0, -2.0], [0.0, -1.0, 12.0]], "dev": [0.17676284973820455]}, "1518": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [2.0, -2.0, 11.0]], "dev": [0.17120367926071334]}, "1519": {"P": [[11.0, -1.0, 2.0], [1.0, 11.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.1597598490809983]}, "1520": {"P": [[11.0, -2.0, 2.0], [2.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.17118271847814481]}, "1521": {"P": [[11.0, 2.0, -1.0], [2.0, 11.0, -1.0], [0.0, 0.0, 13.0]], "dev": [0.1711589603637047]}, "1522": {"P": [[12.0, 1.0, 0.0], [2.0, 10.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.16545502555010497]}, "1523": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, 1.0], [1.0, 1.0, 10.0]], "dev": [0.15948594264656396]}, "1524": {"P": [[10.0, 0.0, 2.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.15342243280336754]}, "1525": {"P": [[12.0, 1.0, -1.0], [2.0, 10.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.15948613900267861]}, "1526": {"P": [[12.0, -2.0, 1.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.15355272168994655]}, "1527": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.15352181818466235]}, "1528": {"P": [[10.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.15349140698181044]}, "1529": {"P": [[10.0, 1.0, 0.0], [1.0, 12.0, -2.0], [-1.0, -1.0, 13.0]], "dev": [0.15972193909338639]}, "1530": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.16577073994818245]}, "1531": {"P": [[11.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.17109765717002759]}, "1532": {"P": [[11.0, -1.0, 1.0], [2.0, 12.0, -2.0], [-1.0, 2.0, 11.0]], "dev": [0.17620605573189732]}, "1533": {"P": [[10.0, 1.0, 1.0], [1.0, 13.0, -2.0], [1.0, 0.0, 12.0]], "dev": [0.16974234210127134]}, "1534": {"P": [[10.0, 0.0, 2.0], [0.0, 13.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.15815923455742087]}, "1535": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.15241976706807647]}, "1536": {"P": [[10.0, 1.0, 1.0], [1.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.13946004400125081]}, "1537": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.13303764609719609]}, "1538": {"P": [[11.0, -1.0, 1.0], [-2.0, 13.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.1404349517238187]}, "1539": {"P": [[10.0, 1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.1531890934675767]}, "1540": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.13422116937444442]}, "1541": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.15437138746274481]}, "1542": {"P": [[10.0, 0.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.16609621056099827]}, "1543": {"P": [[11.0, 0.0, 2.0], [-2.0, 13.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.17937519811516184]}, "1544": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [2.0, -2.0, 12.0]], "dev": [0.17926718535268824]}, "1545": {"P": [[11.0, 0.0, 2.0], [-1.0, 13.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.16204932812227507]}, "1546": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.14436368617913711]}, "1547": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.13065028702672923]}, "1548": {"P": [[12.0, -1.0, 1.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.1324607122683851]}, "1549": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.11746503545597013]}, "1550": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.12619717902172403]}, "1551": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.1344258339154791]}, "1552": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.14223829206493274]}, "1553": {"P": [[11.0, 1.0, -1.0], [0.0, 11.0, -1.0], [-2.0, 0.0, 13.0]], "dev": [0.15483664294809193]}, "1554": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.16647509983672995]}, "1555": {"P": [[10.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.17108422472762499]}, "1556": {"P": [[11.0, 0.0, 2.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.16722055291985002]}, "1557": {"P": [[13.0, -1.0, -1.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 10.0]], "dev": [0.16454697587519881]}, "1558": {"P": [[11.0, 2.0, 0.0], [1.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.14821415026198476]}, "1559": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.12327822949877436]}, "1560": {"P": [[12.0, -1.0, 1.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.10705465270657673]}, "1561": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.099787566384105728]}, "1562": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.11040065386208299]}, "1563": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.13471505429563904]}, "1564": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.14514524880991361]}, "1565": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.15994224933800458]}, "1566": {"P": [[13.0, -2.0, 1.0], [-1.0, 11.0, 2.0], [-1.0, 0.0, 11.0]], "dev": [0.17529953646442001]}, "1567": {"P": [[12.0, -1.0, 2.0], [-1.0, 11.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.17690799550359745]}, "1568": {"P": [[10.0, 2.0, 0.0], [0.0, 12.0, 1.0], [-1.0, -1.0, 13.0]], "dev": [0.16168099546003931]}, "1569": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.14494090403411661]}, "1570": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.13671971172814995]}, "1571": {"P": [[12.0, 0.0, 1.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.1125196701252897]}, "1572": {"P": [[11.0, 1.0, 0.0], [1.0, 12.0, -1.0], [0.0, 0.0, 12.0]], "dev": [0.086940936659848922]}, "1573": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.084478761459528401]}, "1574": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.12058288172519195]}, "1575": {"P": [[13.0, -1.0, 0.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.1350705871769273]}, "1576": {"P": [[11.0, 0.0, -1.0], [1.0, 12.0, -1.0], [1.0, -2.0, 12.0]], "dev": [0.1481380790778444]}, "1577": {"P": [[10.0, 1.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.16013343456052018]}, "1578": {"P": [[12.0, -1.0, -1.0], [2.0, 10.0, 0.0], [-1.0, -1.0, 13.0]], "dev": [0.17128206947957572]}, "1579": {"P": [[12.0, 1.0, 0.0], [-2.0, 13.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17507780781425369]}, "1580": {"P": [[11.0, 1.0, 1.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.15326977675139467]}, "1581": {"P": [[10.0, 1.0, 1.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.14890138572698403]}, "1582": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.12160175225603997]}, "1583": {"P": [[11.0, 1.0, 0.0], [0.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.10530837009470813]}, "1584": {"P": [[12.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.049538914666156085]}, "1585": {"P": [[11.0, 1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.092498560634605334]}, "1586": {"P": [[12.0, 0.0, 1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.12134222489311307]}, "1587": {"P": [[11.0, 1.0, 1.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.14430803049742502]}, "1588": {"P": [[13.0, -1.0, 1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.15252631934406918]}, "1589": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.1677828401153349]}, "1590": {"P": [[11.0, 0.0, 2.0], [-2.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.17835305102254825]}, "1591": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.16771410696069247]}, "1592": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.15636320120446318]}, "1593": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.13572258670034834]}, "1594": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.12152102781257142]}, "1595": {"P": [[12.0, -1.0, 1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.092803449876520214]}, "1596": {"P": [[12.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.07814165561440356]}, "1597": {"P": [[11.0, 0.0, 1.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.10973759092150304]}, "1598": {"P": [[11.0, -1.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.13493417058047968]}, "1599": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.14397362296722305]}, "1600": {"P": [[13.0, -2.0, 1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.15964699314418712]}, "1601": {"P": [[11.0, 1.0, -2.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.17485215098556831]}, "1602": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -2.0, 13.0]], "dev": [0.17484623963450038]}, "1603": {"P": [[12.0, -1.0, 2.0], [1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.16406952653847862]}, "1604": {"P": [[11.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.15254368474893179]}, "1605": {"P": [[11.0, -2.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.14901933167287945]}, "1606": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.11106154832110145]}, "1607": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.098701451947367236]}, "1608": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.10381113910431534]}, "1609": {"P": [[12.0, -1.0, 1.0], [1.0, 11.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.12003117013883635]}, "1610": {"P": [[11.0, 2.0, 0.0], [-1.0, 12.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.14167161213966306]}, "1611": {"P": [[11.0, -2.0, 1.0], [1.0, 11.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.16711835258281188]}, "1612": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.16211633734567685]}, "1613": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.17761476599563411]}, "1614": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [-2.0, 1.0, 12.0]], "dev": [0.1690998773447247]}, "1615": {"P": [[11.0, -2.0, 1.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.16915309202532866]}, "1616": {"P": [[11.0, 0.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.1494375940267412]}, "1617": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.13680005416370566]}, "1618": {"P": [[11.0, -1.0, 2.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.13033875560348221]}, "1619": {"P": [[11.0, 1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.11557999351335922]}, "1620": {"P": [[11.0, 0.0, 1.0], [1.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.13031557050674258]}, "1621": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [0.0, 2.0, 11.0]], "dev": [0.13715908989327513]}, "1622": {"P": [[12.0, 1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.13708270847568232]}, "1623": {"P": [[12.0, -2.0, 1.0], [2.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.15847170148934819]}, "1624": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-1.0, 2.0, 12.0]], "dev": [0.16394322847153753]}, "1625": {"P": [[11.0, -1.0, 2.0], [2.0, 11.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.17453442180663231]}, "1626": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -2.0], [-2.0, 1.0, 12.0]], "dev": [0.16975720393296689]}, "1627": {"P": [[11.0, -1.0, 2.0], [-1.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.17233339095700564]}, "1628": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-2.0, 2.0, 12.0]], "dev": [0.15276153639669254]}, "1629": {"P": [[11.0, -1.0, 1.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.14045944613352249]}, "1630": {"P": [[11.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.14048037022323431]}, "1631": {"P": [[11.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.14626190568343034]}, "1632": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.13331745256563013]}, "1633": {"P": [[11.0, -2.0, 1.0], [1.0, 12.0, 0.0], [-2.0, 1.0, 12.0]], "dev": [0.17484252690559618]}, "1634": {"P": [[12.0, 1.0, 0.0], [-2.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.1579916298497489]}, "1635": {"P": [[11.0, -1.0, 2.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.1712920789161366]}, "1636": {"P": [[12.0, 2.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.17348964184234106]}, "1637": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.17706026141995937]}, "1638": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.17487352673441436]}, "1639": {"P": [[12.0, 1.0, -2.0], [-1.0, 11.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.1619640664916967]}, "1640": {"P": [[11.0, 0.0, 1.0], [0.0, 12.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.16654055088548295]}, "1641": {"P": [[11.0, -1.0, 2.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.15297355954873063]}, "1642": {"P": [[11.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-2.0, 2.0, 12.0]], "dev": [0.15535144283514024]}, "1643": {"P": [[11.0, -2.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.15534184933228942]}, "1644": {"P": [[11.0, 2.0, -1.0], [-2.0, 12.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.16648647692778162]}, "1645": {"P": [[12.0, 1.0, -1.0], [0.0, 11.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.15756337645916726]}, "1646": {"P": [[12.0, 1.0, 0.0], [-1.0, 11.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.15752698122132452]}, "1647": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.16848907719736991]}, "1648": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-2.0, 2.0, 12.0]], "dev": [0.17044084626981335]}, "1649": {"P": [[11.0, -2.0, 2.0], [-1.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.19198587885917723]}, "1650": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.17498230488954572]}, "1651": {"P": [[13.0, -2.0, 1.0], [-1.0, 12.0, 2.0], [1.0, 1.0, 11.0]], "dev": [0.17401696375011169]}, "1652": {"P": [[10.0, 1.0, 1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.16329570919596584]}, "1653": {"P": [[11.0, 0.0, 2.0], [0.0, 13.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.16318271227827078]}, "1654": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.16115373329261973]}, "1655": {"P": [[11.0, 2.0, -1.0], [-2.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.15525781957786117]}, "1656": {"P": [[11.0, -1.0, 2.0], [-1.0, 14.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.1590951309035398]}, "1657": {"P": [[10.0, 0.0, 1.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.15715417479973948]}, "1658": {"P": [[11.0, 0.0, 1.0], [1.0, 12.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.15712276811596923]}, "1659": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.15524240160176997]}, "1660": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.15523951801395749]}, "1661": {"P": [[12.0, 1.0, -2.0], [1.0, 11.0, -1.0], [-2.0, 0.0, 13.0]], "dev": [0.16463081574250421]}, "1662": {"P": [[11.0, 1.0, -1.0], [1.0, 13.0, -2.0], [0.0, -2.0, 12.0]], "dev": [0.17513840395711816]}, "1663": {"P": [[11.0, 2.0, -1.0], [2.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.1727159122706354]}, "1664": {"P": [[11.0, -1.0, 2.0], [0.0, 13.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.16196778561167788]}, "1665": {"P": [[11.0, -1.0, 2.0], [-2.0, 13.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.16022834380930739]}, "1666": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.14862418422099952]}, "1667": {"P": [[10.0, 1.0, 0.0], [1.0, 13.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.14682091533452385]}, "1668": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -1.0], [2.0, -2.0, 12.0]], "dev": [0.14676716024827233]}, "1669": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.14671385211953078]}, "1670": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.14500723540880558]}, "1671": {"P": [[10.0, 0.0, 1.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.15523311022289468]}, "1672": {"P": [[12.0, 1.0, -2.0], [1.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.15372925974771279]}, "1673": {"P": [[14.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.16489335309012407]}, "1674": {"P": [[11.0, -1.0, 0.0], [0.0, 13.0, -2.0], [1.0, -2.0, 12.0]], "dev": [0.17405808940738599]}, "1675": {"P": [[11.0, 0.0, 2.0], [-1.0, 14.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.17147309457784335]}, "1676": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, 0.0], [1.0, 1.0, 12.0]], "dev": [0.16070075921701479]}, "1677": {"P": [[10.0, 0.0, 1.0], [0.0, 13.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.14773981850173751]}, "1678": {"P": [[13.0, -1.0, 0.0], [-1.0, 11.0, 2.0], [0.0, 1.0, 12.0]], "dev": [0.13514155476899126]}, "1679": {"P": [[13.0, 0.0, -1.0], [0.0, 11.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.13506233835500056]}, "1680": {"P": [[13.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.13201115638218375]}, "1681": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.13199553087720245]}, "1682": {"P": [[13.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.13053347381660643]}, "1683": {"P": [[11.0, -1.0, 1.0], [0.0, 12.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.14344833802392218]}, "1684": {"P": [[11.0, -1.0, 0.0], [-1.0, 14.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.15528417866408689]}, "1685": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, -2.0], [-1.0, -1.0, 13.0]], "dev": [0.16627159425691634]}, "1686": {"P": [[11.0, 0.0, -1.0], [1.0, 12.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.17558659260200077]}, "1687": {"P": [[13.0, -1.0, 1.0], [1.0, 13.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.17028798392204342]}, "1688": {"P": [[11.0, -1.0, 2.0], [-2.0, 13.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.15741716550006193]}, "1689": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, 0.0], [1.0, -2.0, 13.0]], "dev": [0.14792472417913721]}, "1690": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.13305416952707064]}, "1691": {"P": [[12.0, 0.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.11903529715833397]}, "1692": {"P": [[11.0, 1.0, 0.0], [1.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.10314211870535722]}, "1693": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.11774036600240123]}, "1694": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.12970205769438597]}, "1695": {"P": [[12.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.14361209198006916]}, "1696": {"P": [[11.0, 1.0, 0.0], [0.0, 12.0, -2.0], [-1.0, -1.0, 13.0]], "dev": [0.15454053130653714]}, "1697": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.16632067538611434]}, "1698": {"P": [[11.0, 0.0, 2.0], [-1.0, 13.0, -1.0], [0.0, -2.0, 12.0]], "dev": [0.1765719602751209]}, "1699": {"P": [[10.0, 0.0, 1.0], [-1.0, 13.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.16775275631357486]}, "1700": {"P": [[10.0, 0.0, 0.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.15616555195290652]}, "1701": {"P": [[10.0, 1.0, 0.0], [0.0, 13.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.14524037151371144]}, "1702": {"P": [[11.0, 1.0, 1.0], [0.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.12038609725728291]}, "1703": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.10371990757509379]}, "1704": {"P": [[12.0, 0.0, 0.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.10174176004835475]}, "1705": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.10082401665443708]}, "1706": {"P": [[13.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.11695002180415859]}, "1707": {"P": [[11.0, 2.0, 0.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.1444230077021397]}, "1708": {"P": [[11.0, 0.0, 1.0], [-1.0, 14.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.15553885871599124]}, "1709": {"P": [[11.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.16641787000208427]}, "1710": {"P": [[13.0, 1.0, -1.0], [-2.0, 13.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.17662065969438151]}, "1711": {"P": [[11.0, -1.0, 0.0], [-2.0, 12.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.17623566926461662]}, "1712": {"P": [[10.0, 1.0, 0.0], [-1.0, 13.0, 1.0], [-1.0, -1.0, 13.0]], "dev": [0.15601737745261435]}, "1713": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.1443809624321522]}, "1714": {"P": [[12.0, -1.0, 1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.13130000145403942]}, "1715": {"P": [[12.0, 1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.10236585791907152]}, "1716": {"P": [[12.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.08240536734510108]}, "1717": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.10143944915372345]}, "1718": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.13142432748040025]}, "1719": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.14384849515652712]}, "1720": {"P": [[12.0, -2.0, 1.0], [-1.0, 12.0, 2.0], [-1.0, 0.0, 12.0]], "dev": [0.15594825518329364]}, "1721": {"P": [[11.0, -1.0, 2.0], [0.0, 14.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.1768641806178807]}, "1722": {"P": [[13.0, 0.0, -2.0], [-1.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.17657685774390425]}, "1723": {"P": [[10.0, 1.0, 0.0], [-1.0, 13.0, 1.0], [0.0, -2.0, 13.0]], "dev": [0.16671108971719853]}, "1724": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.15581907094379224]}, "1725": {"P": [[11.0, -1.0, 2.0], [-1.0, 12.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.1444229359860604]}, "1726": {"P": [[11.0, 1.0, 0.0], [0.0, 12.0, 1.0], [-1.0, -1.0, 13.0]], "dev": [0.11789758089737057]}, "1727": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.10196380056026115]}, "1728": {"P": [[12.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.0]}, "1729": {"P": [[12.0, 0.0, 1.0], [1.0, 12.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.1019245156637774]}, "1730": {"P": [[12.0, 0.0, -1.0], [-1.0, 13.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.11780664412750531]}, "1731": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.14425587231316608]}, "1732": {"P": [[11.0, 1.0, -1.0], [-1.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.15557910399877825]}, "1733": {"P": [[11.0, -1.0, 1.0], [2.0, 11.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.1663900274061508]}, "1734": {"P": [[12.0, 2.0, 0.0], [-1.0, 13.0, -1.0], [2.0, 0.0, 11.0]], "dev": [0.17630585353256059]}, "1735": {"P": [[11.0, -1.0, 1.0], [-1.0, 12.0, 2.0], [1.0, -2.0, 13.0]], "dev": [0.16645039278183868]}, "1736": {"P": [[11.0, 0.0, 1.0], [1.0, 12.0, 1.0], [0.0, -2.0, 13.0]], "dev": [0.1554682375991272]}, "1737": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.15587808974319164]}, "1738": {"P": [[12.0, 1.0, -1.0], [1.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.13092045601082347]}, "1739": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.10187929218206995]}, "1740": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.082611485768852327]}, "1741": {"P": [[12.0, 1.0, -1.0], [0.0, 12.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.10082991410672912]}, "1742": {"P": [[12.0, -1.0, 2.0], [1.0, 12.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.1301688434184532]}, "1743": {"P": [[11.0, 2.0, 1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.15510898561554951]}, "1744": {"P": [[11.0, 0.0, 2.0], [1.0, 13.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.15423528150958216]}, "1745": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.16494567382026412]}, "1746": {"P": [[11.0, 2.0, 0.0], [-1.0, 12.0, 2.0], [1.0, 0.0, 13.0]], "dev": [0.17458508933835909]}, "1747": {"P": [[11.0, -1.0, 2.0], [-1.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.16612003288513719]}, "1748": {"P": [[11.0, -1.0, 0.0], [1.0, 13.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.15639568883617991]}, "1749": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.14384177880951499]}, "1750": {"P": [[12.0, -2.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.13263132767764044]}, "1751": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.10264839405508834]}, "1752": {"P": [[12.0, 1.0, 0.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.10174911623559228]}, "1753": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.1007647978354177]}, "1754": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [-1.0, 2.0, 12.0]], "dev": [0.1296701676984717]}, "1755": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.14223788772623144]}, "1756": {"P": [[11.0, -1.0, 2.0], [1.0, 13.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.15377386090736384]}, "1757": {"P": [[12.0, 1.0, -2.0], [-2.0, 13.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16588304744053473]}, "1758": {"P": [[12.0, -1.0, 2.0], [2.0, 11.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.17387216539233094]}, "1759": {"P": [[11.0, 2.0, -1.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 13.0]], "dev": [0.17518380390173421]}, "1760": {"P": [[12.0, -1.0, 2.0], [0.0, 11.0, 0.0], [-2.0, 1.0, 13.0]], "dev": [0.15513160816323121]}, "1761": {"P": [[12.0, -1.0, 0.0], [2.0, 13.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.17509246224895322]}, "1762": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.1331762631081046]}, "1763": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.13113786112150347]}, "1764": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.10170954196041682]}, "1765": {"P": [[12.0, -2.0, 1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.13111791589962474]}, "1766": {"P": [[12.0, 0.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.12880899109693633]}, "1767": {"P": [[11.0, 1.0, -2.0], [-2.0, 13.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.17657128181025278]}, "1768": {"P": [[12.0, -1.0, 2.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.15192600824195993]}, "1769": {"P": [[12.0, -2.0, 1.0], [1.0, 12.0, -2.0], [1.0, 1.0, 12.0]], "dev": [0.1756593231584542]}, "1770": {"P": [[11.0, -1.0, 2.0], [2.0, 12.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.17280146846263128]}, "1771": {"P": [[11.0, -1.0, 1.0], [0.0, 13.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.16662351430771308]}, "1772": {"P": [[12.0, -2.0, 2.0], [1.0, 12.0, -2.0], [-1.0, 0.0, 12.0]], "dev": [0.16766109869905005]}, "1773": {"P": [[12.0, 2.0, -1.0], [-2.0, 13.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.15492497684768392]}, "1774": {"P": [[12.0, -2.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.14472658841097746]}, "1775": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.13243860660156714]}, "1776": {"P": [[12.0, -1.0, 0.0], [2.0, 12.0, -2.0], [0.0, 1.0, 12.0]], "dev": [0.14345810227211497]}, "1777": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.12956315140747507]}, "1778": {"P": [[12.0, -2.0, 2.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.14207274251730403]}, "1779": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-2.0, 1.0, 13.0]], "dev": [0.15355871381872704]}, "1780": {"P": [[12.0, -1.0, 1.0], [2.0, 12.0, -1.0], [0.0, 2.0, 12.0]], "dev": [0.16174670811262054]}, "1781": {"P": [[11.0, 0.0, 2.0], [1.0, 13.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.16419869594182404]}, "1782": {"P": [[10.0, 2.0, 0.0], [1.0, 13.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.17178206961003847]}, "1783": {"P": [[11.0, -1.0, 2.0], [0.0, 14.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.17169941864802268]}, "1784": {"P": [[12.0, -2.0, 1.0], [2.0, 12.0, -2.0], [-1.0, 0.0, 12.0]], "dev": [0.16802693193762966]}, "1785": {"P": [[12.0, 1.0, -2.0], [-2.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.15762605574956348]}, "1786": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.15622784614456237]}, "1787": {"P": [[11.0, 0.0, 1.0], [1.0, 13.0, -2.0], [2.0, -2.0, 13.0]], "dev": [0.1727049982773356]}, "1788": {"P": [[12.0, -2.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.14337572756973482]}, "1789": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -2.0], [2.0, -2.0, 13.0]], "dev": [0.1739548095119349]}, "1790": {"P": [[12.0, -2.0, 1.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.15318179236978241]}, "1791": {"P": [[12.0, 2.0, -1.0], [-1.0, 12.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.15154638181345995]}, "1792": {"P": [[12.0, -2.0, 2.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.16229038008589128]}, "1793": {"P": [[11.0, 1.0, 1.0], [1.0, 13.0, -2.0], [2.0, -1.0, 13.0]], "dev": [0.17913254384336774]}, "1794": {"P": [[11.0, 0.0, 2.0], [-1.0, 14.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.16931123399637255]}, "1795": {"P": [[10.0, 1.0, 1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.16051530766845623]}, "1796": {"P": [[11.0, -1.0, 2.0], [-2.0, 14.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.16206662226656943]}, "1797": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, -1.0], [1.0, -2.0, 14.0]], "dev": [0.16035736356722413]}, "1798": {"P": [[12.0, -2.0, 2.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.16195688057384258]}, "1799": {"P": [[10.0, 1.0, 0.0], [0.0, 13.0, -1.0], [1.0, -2.0, 14.0]], "dev": [0.17361105252569312]}, "1800": {"P": [[11.0, 2.0, -1.0], [1.0, 12.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.15287732413037358]}, "1801": {"P": [[11.0, -1.0, 2.0], [1.0, 12.0, -1.0], [-2.0, 2.0, 13.0]], "dev": [0.17354616869885561]}, "1802": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.15467545325473581]}, "1803": {"P": [[13.0, -1.0, -1.0], [-1.0, 11.0, 2.0], [-2.0, 1.0, 13.0]], "dev": [0.16522303237206337]}, "1804": {"P": [[11.0, -1.0, 1.0], [0.0, 13.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.16697750480852544]}, "1805": {"P": [[12.0, -1.0, 2.0], [-2.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.16821781440781194]}, "1806": {"P": [[12.0, -1.0, 2.0], [-1.0, 13.0, 1.0], [2.0, 0.0, 12.0]], "dev": [0.16632708441179345]}, "1807": {"P": [[11.0, 1.0, 1.0], [0.0, 14.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.15767577628191273]}, "1808": {"P": [[11.0, 2.0, -1.0], [1.0, 12.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.14857967770742264]}, "1809": {"P": [[14.0, -1.0, 0.0], [-1.0, 12.0, 1.0], [0.0, 2.0, 11.0]], "dev": [0.148503951734691]}, "1810": {"P": [[12.0, -1.0, 2.0], [-1.0, 13.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.14842860876194669]}, "1811": {"P": [[11.0, 0.0, 1.0], [1.0, 14.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.15048353814960558]}, "1812": {"P": [[14.0, -2.0, 0.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.14110358118435221]}, "1813": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.14337075392506843]}, "1814": {"P": [[14.0, -2.0, 1.0], [-1.0, 12.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.15251102895893237]}, "1815": {"P": [[11.0, 0.0, 0.0], [1.0, 13.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.15465486753407209]}, "1816": {"P": [[12.0, -1.0, -1.0], [-2.0, 13.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.17503310912628572]}, "1817": {"P": [[11.0, -1.0, 2.0], [-2.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.17695952972271356]}, "1818": {"P": [[12.0, 0.0, 2.0], [-1.0, 14.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.16490866304068125]}, "1819": {"P": [[13.0, 1.0, -1.0], [1.0, 12.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.1542764035292275]}, "1820": {"P": [[11.0, 1.0, 1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.13325897454320401]}, "1821": {"P": [[12.0, -1.0, 2.0], [-2.0, 13.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.14762502812718553]}, "1822": {"P": [[11.0, 1.0, 1.0], [1.0, 12.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.135722190568522]}, "1823": {"P": [[11.0, 0.0, 1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.12559518402553776]}, "1824": {"P": [[11.0, 0.0, 1.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.12842929352730056]}, "1825": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.14084918135268981]}, "1826": {"P": [[11.0, 0.0, 0.0], [0.0, 14.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.14345393300762971]}, "1827": {"P": [[11.0, -1.0, 2.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.15468410167286589]}, "1828": {"P": [[11.0, -1.0, 2.0], [-2.0, 14.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.16514529030269934]}, "1829": {"P": [[11.0, 0.0, 2.0], [-1.0, 14.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.16597870364722339]}, "1830": {"P": [[12.0, -1.0, 2.0], [0.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.16354009659322111]}, "1831": {"P": [[13.0, -1.0, 1.0], [0.0, 13.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.15286612844908548]}, "1832": {"P": [[11.0, 1.0, 1.0], [1.0, 13.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.14139771002510201]}, "1833": {"P": [[11.0, 1.0, 1.0], [0.0, 14.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.13197209475741578]}, "1834": {"P": [[12.0, 0.0, 1.0], [0.0, 13.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.12188843203635479]}, "1835": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.11096735347638124]}, "1836": {"P": [[12.0, -1.0, 1.0], [0.0, 13.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.12505993210361724]}, "1837": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.11808872159283135]}, "1838": {"P": [[11.0, 1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.1314655246556245]}, "1839": {"P": [[11.0, 0.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.14648308694533299]}, "1840": {"P": [[12.0, -2.0, 2.0], [-2.0, 13.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.16517426899365734]}, "1841": {"P": [[11.0, 0.0, 2.0], [-1.0, 13.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.16517857134599537]}, "1842": {"P": [[10.0, 1.0, 1.0], [0.0, 13.0, 1.0], [-1.0, -1.0, 14.0]], "dev": [0.16743532436620073]}, "1843": {"P": [[13.0, 1.0, 0.0], [-1.0, 13.0, 1.0], [-1.0, 2.0, 11.0]], "dev": [0.15434069593848371]}, "1844": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.13744668022323903]}, "1845": {"P": [[11.0, 1.0, 1.0], [1.0, 13.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.13084515102516164]}, "1846": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.10648462027398131]}, "1847": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.094328779272158395]}, "1848": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.098962930298564955]}, "1849": {"P": [[12.0, 0.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.11451567397836483]}, "1850": {"P": [[12.0, -1.0, 0.0], [0.0, 13.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.13514154422530147]}, "1851": {"P": [[12.0, -1.0, 1.0], [-1.0, 14.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.15487645691468518]}, "1852": {"P": [[11.0, 1.0, 1.0], [-1.0, 13.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.15488823555005599]}, "1853": {"P": [[11.0, -1.0, 2.0], [-2.0, 14.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.17229588817289232]}, "1854": {"P": [[14.0, -2.0, 0.0], [1.0, 12.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16385708170941199]}, "1855": {"P": [[12.0, 1.0, 1.0], [-1.0, 14.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.15333268003497028]}, "1856": {"P": [[13.0, 1.0, 0.0], [-1.0, 12.0, 2.0], [-1.0, 1.0, 12.0]], "dev": [0.14203936507289938]}, "1857": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.12977654319835083]}, "1858": {"P": [[12.0, 0.0, 1.0], [1.0, 13.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.11623776117679289]}, "1859": {"P": [[12.0, 0.0, 1.0], [0.0, 13.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.08292075846519574]}, "1860": {"P": [[12.0, -1.0, 1.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.080670200369652167]}, "1861": {"P": [[12.0, -1.0, 0.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.10396291806834956]}, "1862": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, 1.0], [-2.0, 1.0, 13.0]], "dev": [0.12816162523019159]}, "1863": {"P": [[12.0, 0.0, -1.0], [-1.0, 14.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.13682710247888294]}, "1864": {"P": [[11.0, -1.0, 2.0], [-1.0, 14.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.1517501328670747]}, "1865": {"P": [[11.0, 1.0, 1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.16536653519484781]}, "1866": {"P": [[12.0, -1.0, 2.0], [2.0, 12.0, -1.0], [0.0, -2.0, 13.0]], "dev": [0.16910002040445962]}, "1867": {"P": [[11.0, -1.0, 1.0], [0.0, 13.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.15901580139261851]}, "1868": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.14409919812767985]}, "1869": {"P": [[11.0, 1.0, 0.0], [0.0, 13.0, 1.0], [-1.0, -1.0, 13.0]], "dev": [0.13665949335299088]}, "1870": {"P": [[12.0, 0.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.11460660242746044]}, "1871": {"P": [[12.0, 0.0, 1.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.087870232817485378]}, "1872": {"P": [[12.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.04685407093374748]}, "1873": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, 1.0], [-1.0, 0.0, 13.0]], "dev": [0.099249157901153545]}, "1874": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.11464430825473136]}, "1875": {"P": [[12.0, -2.0, 1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.14043601183182075]}, "1876": {"P": [[11.0, 1.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.14428394192020616]}, "1877": {"P": [[12.0, -1.0, 0.0], [2.0, 11.0, 1.0], [-1.0, 0.0, 14.0]], "dev": [0.1654569387170885]}, "1878": {"P": [[11.0, -1.0, 1.0], [-1.0, 13.0, -1.0], [-1.0, 2.0, 13.0]], "dev": [0.17198059920602851]}, "1879": {"P": [[12.0, 2.0, -1.0], [-1.0, 13.0, 2.0], [-1.0, 0.0, 12.0]], "dev": [0.16535585544675049]}, "1880": {"P": [[13.0, -1.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.15167853104731768]}, "1881": {"P": [[12.0, -1.0, 0.0], [-1.0, 12.0, 2.0], [1.0, -1.0, 13.0]], "dev": [0.13636391992538049]}, "1882": {"P": [[11.0, 1.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.12823850045270629]}, "1883": {"P": [[12.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.10503380577947083]}, "1884": {"P": [[12.0, 0.0, 1.0], [0.0, 12.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.073932330071033392]}, "1885": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.087092048180053047]}, "1886": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [0.0, 1.0, 13.0]], "dev": [0.11385882826334695]}, "1887": {"P": [[12.0, 1.0, -1.0], [-1.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.12735879876618969]}, "1888": {"P": [[12.0, 1.0, -2.0], [1.0, 13.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.14774254303613588]}, "1889": {"P": [[11.0, 1.0, 1.0], [-2.0, 12.0, 1.0], [0.0, -1.0, 14.0]], "dev": [0.15840876758566377]}, "1890": {"P": [[13.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 2.0, 11.0]], "dev": [0.17189161960908431]}, "1891": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -2.0], [2.0, -1.0, 12.0]], "dev": [0.17533289262048488]}, "1892": {"P": [[11.0, -1.0, 1.0], [0.0, 13.0, -2.0], [-1.0, 1.0, 13.0]], "dev": [0.15559360462860716]}, "1893": {"P": [[11.0, -1.0, 1.0], [0.0, 13.0, -1.0], [-1.0, 2.0, 13.0]], "dev": [0.15831476883221704]}, "1894": {"P": [[13.0, 0.0, -2.0], [-1.0, 12.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.13750764831053278]}, "1895": {"P": [[12.0, -1.0, 1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.11494542176075374]}, "1896": {"P": [[12.0, -1.0, 1.0], [0.0, 13.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.099763529364682732]}, "1897": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.093388063322539072]}, "1898": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.10362591798998501]}, "1899": {"P": [[13.0, 1.0, 0.0], [-1.0, 12.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.13878352803642666]}, "1900": {"P": [[13.0, 1.0, -2.0], [1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.14317474867543584]}, "1901": {"P": [[12.0, 1.0, -2.0], [-1.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.15409490240820331]}, "1902": {"P": [[12.0, 0.0, 2.0], [1.0, 13.0, 0.0], [-1.0, 2.0, 12.0]], "dev": [0.16259120479737674]}, "1903": {"P": [[12.0, 2.0, -1.0], [-2.0, 13.0, 2.0], [-1.0, 0.0, 12.0]], "dev": [0.16808329783736967]}, "1904": {"P": [[12.0, -2.0, 1.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 13.0]], "dev": [0.15995381609905227]}, "1905": {"P": [[12.0, -1.0, 2.0], [-1.0, 12.0, 0.0], [-2.0, 1.0, 13.0]], "dev": [0.15172361401878842]}, "1906": {"P": [[12.0, -1.0, 0.0], [1.0, 13.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.13346657002424825]}, "1907": {"P": [[12.0, 1.0, -1.0], [-2.0, 13.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.13350656726566396]}, "1908": {"P": [[12.0, -1.0, 2.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.12334978189762859]}, "1909": {"P": [[12.0, -1.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.10937879061849776]}, "1910": {"P": [[12.0, 0.0, 1.0], [1.0, 13.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.12333129532545803]}, "1911": {"P": [[12.0, 0.0, 1.0], [1.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.12568326056455739]}, "1912": {"P": [[12.0, 1.0, -1.0], [0.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.13793368903192338]}, "1913": {"P": [[13.0, -1.0, 2.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.15541854676908778]}, "1914": {"P": [[13.0, 1.0, 0.0], [-1.0, 12.0, 2.0], [2.0, -1.0, 12.0]], "dev": [0.15533479722325116]}, "1915": {"P": [[11.0, 0.0, 2.0], [0.0, 14.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.16783967136490902]}, "1916": {"P": [[11.0, 0.0, 1.0], [0.0, 13.0, -2.0], [-1.0, 2.0, 13.0]], "dev": [0.16782122066136329]}, "1917": {"P": [[11.0, -1.0, 1.0], [1.0, 13.0, -2.0], [-2.0, 1.0, 13.0]], "dev": [0.16629897660929799]}, "1918": {"P": [[12.0, -1.0, 0.0], [2.0, 13.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.15181983339784585]}, "1919": {"P": [[12.0, -1.0, 0.0], [2.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.16359750102299386]}, "1920": {"P": [[12.0, 1.0, -1.0], [-2.0, 13.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.12876978862830712]}, "1921": {"P": [[12.0, -2.0, 1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.14079243653371887]}, "1922": {"P": [[12.0, -1.0, 1.0], [1.0, 13.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.13047654610960527]}, "1923": {"P": [[12.0, 1.0, -1.0], [-1.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.13044339637739588]}, "1924": {"P": [[12.0, 1.0, 0.0], [-2.0, 12.0, 2.0], [1.0, -1.0, 13.0]], "dev": [0.14226433563897012]}, "1925": {"P": [[12.0, 2.0, -1.0], [-2.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.15896858817709045]}, "1926": {"P": [[12.0, -1.0, 2.0], [2.0, 12.0, 0.0], [-1.0, 1.0, 13.0]], "dev": [0.15435552644953818]}, "1927": {"P": [[13.0, -2.0, 1.0], [-2.0, 14.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.16871166158658671]}, "1928": {"P": [[12.0, -2.0, 2.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 13.0]], "dev": [0.16658190166986397]}, "1929": {"P": [[11.0, 1.0, 0.0], [-2.0, 13.0, 2.0], [0.0, -2.0, 13.0]], "dev": [0.17186806566903756]}, "1930": {"P": [[12.0, -1.0, 2.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 13.0]], "dev": [0.15195122470637626]}, "1931": {"P": [[12.0, 1.0, -1.0], [-1.0, 12.0, 2.0], [0.0, -2.0, 13.0]], "dev": [0.15196398220574495]}, "1932": {"P": [[12.0, 0.0, -1.0], [0.0, 12.0, 2.0], [1.0, -2.0, 13.0]], "dev": [0.15765292471445744]}, "1933": {"P": [[12.0, -1.0, 1.0], [2.0, 13.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.14706729171180419]}, "1934": {"P": [[12.0, -1.0, 1.0], [1.0, 13.0, -1.0], [-2.0, 2.0, 12.0]], "dev": [0.14705953342546385]}, "1935": {"P": [[12.0, -1.0, 2.0], [1.0, 12.0, 0.0], [-2.0, 1.0, 13.0]], "dev": [0.1419127572717227]}, "1936": {"P": [[12.0, 0.0, 2.0], [0.0, 13.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.15761045522898148]}, "1937": {"P": [[12.0, 2.0, -1.0], [-1.0, 12.0, 2.0], [1.0, -1.0, 13.0]], "dev": [0.14779104491578499]}, "1938": {"P": [[13.0, 1.0, -1.0], [0.0, 12.0, 2.0], [1.0, -2.0, 12.0]], "dev": [0.16293335775641182]}, "1939": {"P": [[12.0, -2.0, 1.0], [1.0, 12.0, -2.0], [-2.0, 1.0, 13.0]], "dev": [0.18049760387088248]}, "1940": {"P": [[12.0, -1.0, 2.0], [-1.0, 14.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.15814401758923086]}, "1941": {"P": [[11.0, -2.0, 2.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.17678513678364652]}, "1942": {"P": [[11.0, 0.0, 1.0], [1.0, 14.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.16280717614691465]}, "1943": {"P": [[13.0, 1.0, -2.0], [0.0, 11.0, 1.0], [-2.0, 1.0, 14.0]], "dev": [0.16277636342166937]}, "1944": {"P": [[11.0, 1.0, 0.0], [1.0, 13.0, -2.0], [0.0, -2.0, 14.0]], "dev": [0.15753926733024345]}, "1945": {"P": [[12.0, -1.0, 1.0], [1.0, 13.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.14699426669433538]}, "1946": {"P": [[12.0, 2.0, -2.0], [-1.0, 13.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.15752431019314728]}, "1947": {"P": [[12.0, 1.0, 1.0], [1.0, 14.0, -2.0], [2.0, -1.0, 12.0]], "dev": [0.16788738072573361]}, "1948": {"P": [[12.0, -2.0, 1.0], [2.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.15751048040924584]}, "1949": {"P": [[10.0, 0.0, 1.0], [1.0, 14.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.17684165849441172]}, "1950": {"P": [[14.0, 0.0, -1.0], [-1.0, 12.0, 2.0], [-1.0, 2.0, 12.0]], "dev": [0.15253833067922523]}, "1951": {"P": [[14.0, -1.0, -1.0], [-1.0, 14.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.16734994136747527]}, "1952": {"P": [[11.0, 0.0, 1.0], [0.0, 14.0, -1.0], [2.0, -2.0, 13.0]], "dev": [0.15753497242868719]}, "1953": {"P": [[11.0, -1.0, 2.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.15231871389355772]}, "1954": {"P": [[13.0, 0.0, -1.0], [0.0, 11.0, 2.0], [-2.0, 1.0, 14.0]], "dev": [0.15743779280427711]}, "1955": {"P": [[12.0, -1.0, 1.0], [-1.0, 15.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.15226725607258507]}, "1956": {"P": [[11.0, 1.0, 0.0], [0.0, 14.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.15746634874774018]}, "1957": {"P": [[14.0, -2.0, -1.0], [-1.0, 12.0, 2.0], [-1.0, 1.0, 12.0]], "dev": [0.16730236614353994]}, "1958": {"P": [[14.0, -2.0, 0.0], [-2.0, 13.0, 1.0], [0.0, 0.0, 11.0]], "dev": [0.16255334732288712]}, "1959": {"P": [[12.0, -1.0, 1.0], [2.0, 13.0, -2.0], [-1.0, 2.0, 12.0]], "dev": [0.16232280657313652]}, "1960": {"P": [[12.0, 2.0, -1.0], [2.0, 12.0, -1.0], [0.0, 0.0, 14.0]], "dev": [0.15685573690663182]}, "1961": {"P": [[11.0, -1.0, 2.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 13.0]], "dev": [0.1517677634854665]}, "1962": {"P": [[11.0, 1.0, 1.0], [1.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.14614135648539392]}, "1963": {"P": [[11.0, 0.0, 2.0], [0.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.14072296581056865]}, "1964": {"P": [[11.0, 1.0, 1.0], [0.0, 14.0, -2.0], [1.0, -1.0, 13.0]], "dev": [0.14646327574729365]}, "1965": {"P": [[13.0, 1.0, -2.0], [1.0, 12.0, 0.0], [-2.0, 1.0, 13.0]], "dev": [0.14115754786700846]}, "1966": {"P": [[11.0, 0.0, 1.0], [0.0, 14.0, -2.0], [1.0, -1.0, 13.0]], "dev": [0.14113740078245002]}, "1967": {"P": [[11.0, 1.0, 0.0], [1.0, 14.0, -2.0], [0.0, -1.0, 13.0]], "dev": [0.14111757266312411]}, "1968": {"P": [[11.0, 0.0, 1.0], [-1.0, 14.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.14697404457652469]}, "1969": {"P": [[12.0, 1.0, -1.0], [1.0, 12.0, -1.0], [-2.0, -1.0, 14.0]], "dev": [0.15264672753560576]}, "1970": {"P": [[12.0, -1.0, 2.0], [-1.0, 13.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.15743152540064176]}, "1971": {"P": [[11.0, 2.0, 0.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 15.0]], "dev": [0.17156502560957371]}, "1972": {"P": [[13.0, 0.0, 1.0], [-2.0, 14.0, 1.0], [0.0, 2.0, 11.0]], "dev": [0.16569114056242945]}, "1973": {"P": [[11.0, 1.0, 1.0], [1.0, 13.0, 0.0], [1.0, -2.0, 14.0]], "dev": [0.15571531560170607]}, "1974": {"P": [[11.0, 2.0, 0.0], [1.0, 13.0, -1.0], [0.0, 0.0, 14.0]], "dev": [0.14506282861980416]}, "1975": {"P": [[12.0, 1.0, 1.0], [1.0, 13.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.13991886119216032]}, "1976": {"P": [[11.0, 1.0, 1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.12799960615261821]}, "1977": {"P": [[11.0, 0.0, 1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.12223283027054674]}, "1978": {"P": [[14.0, -2.0, 0.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.12917211538820178]}, "1979": {"P": [[12.0, -1.0, 2.0], [0.0, 13.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.14090432854278145]}, "1980": {"P": [[14.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.12358845452108849]}, "1981": {"P": [[12.0, 1.0, -1.0], [1.0, 13.0, -2.0], [-1.0, -1.0, 13.0]], "dev": [0.14219874307118341]}, "1982": {"P": [[13.0, -2.0, 0.0], [-1.0, 14.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.15296514652666801]}, "1983": {"P": [[11.0, 1.0, -1.0], [0.0, 15.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.17128971783311778]}, "1984": {"P": [[12.0, 1.0, 1.0], [0.0, 14.0, -2.0], [2.0, 0.0, 12.0]], "dev": [0.16470295285354472]}, "1985": {"P": [[13.0, -2.0, 2.0], [0.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.16462252101765901]}, "1986": {"P": [[12.0, 0.0, 2.0], [-1.0, 14.0, 0.0], [1.0, 1.0, 12.0]], "dev": [0.14868289924363073]}, "1987": {"P": [[11.0, 1.0, 1.0], [0.0, 14.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.13250414493899121]}, "1988": {"P": [[12.0, 1.0, 1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.11988288611227947]}, "1989": {"P": [[11.0, 0.0, 1.0], [-1.0, 14.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.12178287570673141]}, "1990": {"P": [[12.0, -1.0, 1.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.10799155517849297]}, "1991": {"P": [[13.0, -1.0, 0.0], [-1.0, 14.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.11613811167677894]}, "1992": {"P": [[14.0, -2.0, 0.0], [-1.0, 12.0, 1.0], [0.0, 0.0, 12.0]], "dev": [0.12379867143304116]}, "1993": {"P": [[12.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.13105841263378509]}, "1994": {"P": [[12.0, -1.0, 1.0], [-2.0, 14.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.14263020427643297]}, "1995": {"P": [[13.0, -2.0, 1.0], [-2.0, 13.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.15332450929269811]}, "1996": {"P": [[12.0, -1.0, 0.0], [0.0, 14.0, -2.0], [2.0, -1.0, 12.0]], "dev": [0.157505536783141]}, "1997": {"P": [[13.0, -2.0, 1.0], [-2.0, 13.0, 2.0], [-1.0, 0.0, 12.0]], "dev": [0.16722126005714585]}, "1998": {"P": [[13.0, -2.0, 1.0], [0.0, 13.0, 1.0], [2.0, 0.0, 12.0]], "dev": [0.15366922689286039]}, "1999": {"P": [[11.0, -1.0, 1.0], [-1.0, 14.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.15143587982986714]}, "2000": {"P": [[12.0, 0.0, 2.0], [1.0, 13.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.13612237270128344]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-fcc2sc.json000066400000000000000000006100221316323560300271560ustar00rootroot00000000000000{"1": {"P": [[-1.0, 0.0, 1.0], [0.0, -1.0, 1.0], [1.0, 1.0, -1.0]], "dev": [1.3000307656769876]}, "2": {"P": [[-1.0, 1.0, 1.0], [0.0, -1.0, 1.0], [1.0, 1.0, -1.0]], "dev": [0.81786146775975022]}, "3": {"P": [[-2.0, 1.0, 1.0], [0.0, 0.0, 1.0], [1.0, 1.0, -1.0]], "dev": [1.0634985210019028]}, "4": {"P": [[-1.0, 1.0, 1.0], [1.0, -1.0, 1.0], [1.0, 1.0, -1.0]], "dev": [0.0]}, "5": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 1.0], [1.0, 1.0, -2.0]], "dev": [0.9003582692494565]}, "6": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 1.0], [1.0, 1.0, -1.0]], "dev": [0.56487120169637217]}, "7": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 1.0], [0.0, 2.0, -1.0]], "dev": [0.79641361353851903]}, "8": {"P": [[-2.0, 2.0, 2.0], [1.0, -1.0, 1.0], [1.0, 1.0, -1.0]], "dev": [0.6558650332285002]}, "9": {"P": [[-2.0, 1.0, 2.0], [1.0, -2.0, 2.0], [1.0, 1.0, -1.0]], "dev": [0.62384231340467133]}, "10": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 1.0], [1.0, 2.0, -1.0]], "dev": [0.60237093396782448]}, "11": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 2.0], [0.0, 2.0, -1.0]], "dev": [0.77548319331196303]}, "12": {"P": [[-2.0, 1.0, 2.0], [1.0, -2.0, 2.0], [1.0, 2.0, -2.0]], "dev": [0.60446046736971037]}, "13": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 2.0], [2.0, 1.0, -1.0]], "dev": [0.5850703066330778]}, "14": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 2.0], [1.0, 2.0, -2.0]], "dev": [0.5707752448007446]}, "15": {"P": [[-2.0, 1.0, 2.0], [1.0, -2.0, 2.0], [1.0, 2.0, -1.0]], "dev": [0.56062126103108179]}, "16": {"P": [[-2.0, 2.0, 2.0], [1.0, -1.0, 1.0], [2.0, 2.0, -2.0]], "dev": [0.52158136225720619]}, "17": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 2.0], [2.0, 2.0, -3.0]], "dev": [0.66870278258856741]}, "18": {"P": [[-2.0, 1.0, 2.0], [1.0, -2.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.49483189683045681]}, "19": {"P": [[-3.0, 2.0, 2.0], [1.0, -1.0, 2.0], [2.0, 1.0, -1.0]], "dev": [0.64272226833130219]}, "20": {"P": [[-2.0, 1.0, 2.0], [2.0, -2.0, 2.0], [1.0, 2.0, -1.0]], "dev": [0.479501019386114]}, "21": {"P": [[-3.0, 2.0, 2.0], [1.0, -1.0, 2.0], [1.0, 2.0, -1.0]], "dev": [0.62552430934594139]}, "22": {"P": [[-3.0, 2.0, 2.0], [2.0, -2.0, 1.0], [2.0, 2.0, -2.0]], "dev": [0.5465058562872962]}, "23": {"P": [[-2.0, 1.0, 2.0], [1.0, -1.0, 2.0], [2.0, 3.0, -3.0]], "dev": [0.66560036735252581]}, "24": {"P": [[-2.0, 1.0, 2.0], [2.0, -2.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.35556679796642354]}, "25": {"P": [[-2.0, 2.0, 1.0], [1.0, -1.0, 2.0], [2.0, 3.0, -3.0]], "dev": [0.64621221146026109]}, "26": {"P": [[-3.0, 2.0, 2.0], [1.0, -1.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.51392945327611705]}, "27": {"P": [[-3.0, 2.0, 2.0], [1.0, -2.0, 3.0], [2.0, 1.0, -1.0]], "dev": [0.63192382035877825]}, "28": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 2.0], [2.0, 1.0, -2.0]], "dev": [0.52866906415550463]}, "29": {"P": [[-3.0, 2.0, 2.0], [2.0, -2.0, 3.0], [2.0, 1.0, -2.0]], "dev": [0.63543191103958796]}, "30": {"P": [[-3.0, 2.0, 2.0], [2.0, -3.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.51225953369809551]}, "31": {"P": [[-3.0, 2.0, 2.0], [1.0, -1.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.61916180421151823]}, "32": {"P": [[-2.0, 2.0, 2.0], [2.0, -2.0, 2.0], [2.0, 2.0, -2.0]], "dev": [3.8459253727671276e-16]}, "33": {"P": [[-3.0, 2.0, 2.0], [1.0, -2.0, 3.0], [3.0, 1.0, -2.0]], "dev": [0.60638096099923766]}, "34": {"P": [[-3.0, 2.0, 2.0], [1.0, -2.0, 3.0], [2.0, 2.0, -2.0]], "dev": [0.49122093381324278]}, "35": {"P": [[-3.0, 2.0, 3.0], [1.0, -2.0, 2.0], [2.0, 3.0, -3.0]], "dev": [0.58443969510805527]}, "36": {"P": [[-3.0, 2.0, 3.0], [1.0, -2.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.57673082642267037]}, "37": {"P": [[-3.0, 2.0, 3.0], [1.0, -1.0, 2.0], [3.0, 2.0, -2.0]], "dev": [0.56973330261849586]}, "38": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 2.0], [3.0, 1.0, -2.0]], "dev": [0.45381682044043142]}, "39": {"P": [[-3.0, 2.0, 2.0], [2.0, -2.0, 3.0], [3.0, 1.0, -2.0]], "dev": [0.55768432387829103]}, "40": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.29977461008167255]}, "41": {"P": [[-3.0, 2.0, 2.0], [1.0, -2.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.54794903885364077]}, "42": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 2.0], [2.0, 2.0, -1.0]], "dev": [0.43761070817674597]}, "43": {"P": [[-3.0, 2.0, 2.0], [1.0, -3.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.62809126296062956]}, "44": {"P": [[-3.0, 2.0, 2.0], [2.0, -2.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.53704195211033556]}, "45": {"P": [[-3.0, 2.0, 2.0], [3.0, -3.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.48733577507344439]}, "46": {"P": [[-4.0, 2.0, 3.0], [2.0, -2.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.57492806551913467]}, "47": {"P": [[-3.0, 2.0, 2.0], [2.0, -3.0, 3.0], [3.0, 2.0, -3.0]], "dev": [0.47729777131353585]}, "48": {"P": [[-3.0, 3.0, 2.0], [3.0, -3.0, 2.0], [2.0, 2.0, -2.0]], "dev": [0.35818119355108746]}, "49": {"P": [[-3.0, 2.0, 3.0], [1.0, -1.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.56042963239201038]}, "50": {"P": [[-2.0, 2.0, 2.0], [2.0, -2.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.35194214690402631]}, "51": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 3.0], [1.0, 3.0, -3.0]], "dev": [0.55261683671729767]}, "52": {"P": [[-3.0, 3.0, 2.0], [2.0, -2.0, 3.0], [2.0, 2.0, -2.0]], "dev": [0.34750122299161296]}, "53": {"P": [[-3.0, 3.0, 2.0], [2.0, -3.0, 3.0], [2.0, 2.0, -1.0]], "dev": [0.45709646938447746]}, "54": {"P": [[-2.0, 3.0, 2.0], [2.0, -2.0, 2.0], [3.0, 2.0, -4.0]], "dev": [0.543295994610971]}, "55": {"P": [[-3.0, 2.0, 2.0], [2.0, -2.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.45310716260103318]}, "56": {"P": [[-2.0, 2.0, 2.0], [2.0, -2.0, 2.0], [3.0, 4.0, -4.0]], "dev": [0.55266435255151891]}, "57": {"P": [[-3.0, 2.0, 2.0], [3.0, -3.0, 2.0], [3.0, 3.0, -3.0]], "dev": [0.46431005910335144]}, "58": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.46056890323328936]}, "59": {"P": [[-3.0, 2.0, 2.0], [2.0, -3.0, 3.0], [4.0, 2.0, -3.0]], "dev": [0.54045841461695687]}, "60": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.35195695909615282]}, "61": {"P": [[-1.0, 2.0, 3.0], [3.0, -2.0, 2.0], [2.0, 3.0, -2.0]], "dev": [0.53363832935386801]}, "62": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.34736991832960484]}, "63": {"P": [[-3.0, 2.0, 3.0], [2.0, -2.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.34552184349244403]}, "64": {"P": [[-2.0, 2.0, 3.0], [3.0, -2.0, 2.0], [3.0, 2.0, -4.0]], "dev": [0.52516068538578209]}, "65": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.34265012799474959]}, "66": {"P": [[-3.0, 2.0, 3.0], [3.0, -4.0, 2.0], [3.0, 2.0, -2.0]], "dev": [0.52056052393255126]}, "67": {"P": [[-4.0, 2.0, 3.0], [3.0, -2.0, 2.0], [2.0, 3.0, -2.0]], "dev": [0.51854838833195371]}, "68": {"P": [[-4.0, 3.0, 4.0], [2.0, -2.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.50617668908909041]}, "69": {"P": [[-4.0, 2.0, 3.0], [3.0, -3.0, 3.0], [3.0, 2.0, -3.0]], "dev": [0.50272136059445172]}, "70": {"P": [[-4.0, 3.0, 3.0], [3.0, -3.0, 2.0], [3.0, 2.0, -3.0]], "dev": [0.41867673549553075]}, "71": {"P": [[-4.0, 3.0, 2.0], [3.0, -3.0, 2.0], [2.0, 4.0, -3.0]], "dev": [0.56560036741020037]}, "72": {"P": [[-3.0, 2.0, 3.0], [3.0, -3.0, 3.0], [3.0, 2.0, -3.0]], "dev": [0.31302674605959668]}, "73": {"P": [[-2.0, 2.0, 3.0], [3.0, -2.0, 2.0], [3.0, 3.0, -2.0]], "dev": [0.41085750401765636]}, "74": {"P": [[-2.0, 2.0, 2.0], [2.0, -3.0, 4.0], [3.0, 3.0, -2.0]], "dev": [0.48833836632412464]}, "75": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.30741050420744698]}, "76": {"P": [[-4.0, 2.0, 4.0], [2.0, -2.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.48380945456334973]}, "77": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.40311584581959492]}, "78": {"P": [[-3.0, 2.0, 3.0], [3.0, -3.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.30377341633642635]}, "79": {"P": [[-4.0, 2.0, 3.0], [3.0, -4.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.54505234431945204]}, "80": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.39908573119650775]}, "81": {"P": [[-3.0, 3.0, 2.0], [2.0, -1.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.47512334941634404]}, "82": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 2.0], [4.0, 3.0, -4.0]], "dev": [0.50952211539148839]}, "83": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 4.0], [2.0, 3.0, -1.0]], "dev": [0.53810449595618093]}, "84": {"P": [[-3.0, 2.0, 4.0], [3.0, -2.0, 3.0], [3.0, 2.0, -3.0]], "dev": [0.43393559486866207]}, "85": {"P": [[-3.0, 2.0, 3.0], [2.0, -3.0, 4.0], [3.0, 3.0, -4.0]], "dev": [0.43154632859879211]}, "86": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 2.0], [3.0, 4.0, -3.0]], "dev": [0.49896317434797238]}, "87": {"P": [[-4.0, 3.0, 3.0], [3.0, -3.0, 2.0], [3.0, 3.0, -3.0]], "dev": [0.34397977019535814]}, "88": {"P": [[-4.0, 3.0, 4.0], [2.0, -2.0, 3.0], [2.0, 3.0, -3.0]], "dev": [0.42521587846312331]}, "89": {"P": [[-3.0, 4.0, 2.0], [3.0, -2.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.42337105646478745]}, "90": {"P": [[-3.0, 3.0, 3.0], [2.0, -2.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.22873376585723051]}, "91": {"P": [[-4.0, 3.0, 4.0], [2.0, -3.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.42005554398053879]}, "92": {"P": [[-4.0, 3.0, 3.0], [4.0, -2.0, 2.0], [2.0, 3.0, -2.0]], "dev": [0.4868573441453295]}, "93": {"P": [[-3.0, 2.0, 3.0], [3.0, -3.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.3356901950881217]}, "94": {"P": [[-4.0, 2.0, 4.0], [2.0, -2.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.48370093414012927]}, "95": {"P": [[-4.0, 3.0, 3.0], [2.0, -3.0, 4.0], [3.0, 2.0, -2.0]], "dev": [0.41481576650083868]}, "96": {"P": [[-2.0, 3.0, 3.0], [2.0, -3.0, 3.0], [4.0, 2.0, -3.0]], "dev": [0.41377470309680342]}, "97": {"P": [[-2.0, 2.0, 3.0], [3.0, -4.0, 2.0], [4.0, 3.0, -3.0]], "dev": [0.53832350007457364]}, "98": {"P": [[-4.0, 3.0, 3.0], [3.0, -4.0, 3.0], [3.0, 3.0, -4.0]], "dev": [0.42552412148915136]}, "99": {"P": [[-3.0, 4.0, 3.0], [3.0, -2.0, 2.0], [3.0, 3.0, -2.0]], "dev": [0.42334219622823149]}, "100": {"P": [[-2.0, 3.0, 3.0], [3.0, -2.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.42126810171974588]}, "101": {"P": [[-4.0, 3.0, 4.0], [3.0, -2.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.41929918175622594]}, "102": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 3.0], [3.0, 2.0, -3.0]], "dev": [0.34137483878093872]}, "103": {"P": [[-4.0, 3.0, 3.0], [3.0, -2.0, 2.0], [4.0, 3.0, -4.0]], "dev": [0.4156664793903837]}, "104": {"P": [[-2.0, 3.0, 3.0], [4.0, -4.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.41399761954377695]}, "105": {"P": [[-4.0, 3.0, 4.0], [2.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.33687474152335722]}, "106": {"P": [[-3.0, 3.0, 2.0], [3.0, -2.0, 3.0], [4.0, 3.0, -3.0]], "dev": [0.41094252448083168]}, "107": {"P": [[-4.0, 4.0, 3.0], [3.0, -2.0, 3.0], [2.0, 3.0, -2.0]], "dev": [0.40955147650719131]}, "108": {"P": [[-3.0, 3.0, 3.0], [3.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.0]}, "109": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.40703066513432729]}, "110": {"P": [[-4.0, 3.0, 3.0], [2.0, -3.0, 4.0], [4.0, 2.0, -3.0]], "dev": [0.40589634036047978]}, "111": {"P": [[-3.0, 4.0, 2.0], [3.0, -2.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.33067800403325809]}, "112": {"P": [[-4.0, 3.0, 3.0], [2.0, -3.0, 4.0], [2.0, 4.0, -3.0]], "dev": [0.40386875451033]}, "113": {"P": [[-3.0, 3.0, 4.0], [4.0, -2.0, 3.0], [3.0, 2.0, -2.0]], "dev": [0.51505199516243172]}, "114": {"P": [[-4.0, 2.0, 4.0], [3.0, -3.0, 3.0], [2.0, 4.0, -3.0]], "dev": [0.40214825716403069]}, "115": {"P": [[-4.0, 3.0, 4.0], [2.0, -4.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.51079667123082462]}, "116": {"P": [[-4.0, 4.0, 4.0], [2.0, -3.0, 3.0], [2.0, 4.0, -3.0]], "dev": [0.4537451643702532]}, "117": {"P": [[-4.0, 3.0, 3.0], [3.0, -2.0, 3.0], [2.0, 4.0, -3.0]], "dev": [0.40010706823623399]}, "118": {"P": [[-4.0, 3.0, 4.0], [3.0, -2.0, 3.0], [4.0, 2.0, -2.0]], "dev": [0.45011946280536275]}, "119": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 4.0], [2.0, 3.0, -3.0]], "dev": [0.38600508025666308]}, "120": {"P": [[-4.0, 4.0, 4.0], [2.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.38448410727783017]}, "121": {"P": [[-5.0, 3.0, 4.0], [2.0, -2.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.49972205002386633]}, "122": {"P": [[-4.0, 3.0, 4.0], [2.0, -2.0, 3.0], [4.0, 3.0, -3.0]], "dev": [0.38166925050362516]}, "123": {"P": [[-4.0, 3.0, 3.0], [3.0, -3.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.306172015710451]}, "124": {"P": [[-4.0, 3.0, 3.0], [4.0, -4.0, 3.0], [4.0, 2.0, -2.0]], "dev": [0.44093029276322165]}, "125": {"P": [[-4.0, 4.0, 3.0], [3.0, -3.0, 4.0], [2.0, 3.0, -3.0]], "dev": [0.37799080445947664]}, "126": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.20444199483619369]}, "127": {"P": [[-4.0, 3.0, 3.0], [2.0, -3.0, 4.0], [3.0, 4.0, -4.0]], "dev": [0.37588293158747982]}, "128": {"P": [[-2.0, 2.0, 4.0], [3.0, -4.0, 4.0], [3.0, 3.0, -2.0]], "dev": [0.43609301408730611]}, "129": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.30092142538549266]}, "130": {"P": [[-4.0, 3.0, 4.0], [2.0, -2.0, 4.0], [2.0, 4.0, -3.0]], "dev": [0.43402777075892707]}, "131": {"P": [[-3.0, 2.0, 5.0], [4.0, -3.0, 2.0], [3.0, 3.0, -4.0]], "dev": [0.48621328741217884]}, "132": {"P": [[-4.0, 2.0, 4.0], [3.0, -3.0, 3.0], [3.0, 4.0, -3.0]], "dev": [0.37173134282765086]}, "133": {"P": [[-4.0, 3.0, 3.0], [3.0, -2.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.37108112671748905]}, "134": {"P": [[-4.0, 2.0, 4.0], [3.0, -3.0, 4.0], [2.0, 4.0, -3.0]], "dev": [0.43055236016419229]}, "135": {"P": [[-5.0, 4.0, 4.0], [4.0, -3.0, 2.0], [4.0, 2.0, -3.0]], "dev": [0.45873092998200576]}, "136": {"P": [[-4.0, 4.0, 4.0], [2.0, -3.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.40164077398712122]}, "137": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 5.0], [2.0, 3.0, -3.0]], "dev": [0.45555912160607093]}, "138": {"P": [[-2.0, 3.0, 3.0], [3.0, -2.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.45405396691728767]}, "139": {"P": [[-5.0, 3.0, 4.0], [3.0, -4.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.45260132841228118]}, "140": {"P": [[-4.0, 3.0, 3.0], [4.0, -4.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.33184727935303715]}, "141": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.39478661986462277]}, "142": {"P": [[-4.0, 4.0, 3.0], [4.0, -2.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.44854889676296611]}, "143": {"P": [[-4.0, 3.0, 3.0], [3.0, -4.0, 4.0], [4.0, 3.0, -4.0]], "dev": [0.32852261252564186]}, "144": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.24782696262606227]}, "145": {"P": [[-4.0, 4.0, 3.0], [4.0, -5.0, 3.0], [3.0, 3.0, -2.0]], "dev": [0.44493510790659024]}, "146": {"P": [[-4.0, 2.0, 4.0], [3.0, -3.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.38928037472364019]}, "147": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 4.0], [3.0, 3.0, -3.0]], "dev": [0.24562623126517355]}, "148": {"P": [[-4.0, 4.0, 4.0], [2.0, -3.0, 4.0], [3.0, 3.0, -2.0]], "dev": [0.38742795096088195]}, "149": {"P": [[-4.0, 4.0, 3.0], [2.0, -3.0, 5.0], [3.0, 3.0, -4.0]], "dev": [0.44075730332784774]}, "150": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 3.0], [3.0, 4.0, -3.0]], "dev": [0.24404175523111252]}, "151": {"P": [[-4.0, 3.0, 3.0], [3.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.32217102540884823]}, "152": {"P": [[-4.0, 3.0, 3.0], [2.0, -2.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.43807456175447013]}, "153": {"P": [[-3.0, 3.0, 4.0], [4.0, -5.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.38360697638536057]}, "154": {"P": [[-4.0, 3.0, 3.0], [3.0, -3.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.32065055290381389]}, "155": {"P": [[-5.0, 3.0, 4.0], [3.0, -2.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.43575371279295427]}, "156": {"P": [[-4.0, 3.0, 4.0], [2.0, -3.0, 4.0], [3.0, 4.0, -2.0]], "dev": [0.43505688406137094]}, "157": {"P": [[-5.0, 3.0, 4.0], [4.0, -3.0, 3.0], [2.0, 4.0, -3.0]], "dev": [0.43439719050234482]}, "158": {"P": [[-4.0, 3.0, 3.0], [3.0, -4.0, 4.0], [3.0, 4.0, -2.0]], "dev": [0.43377389407853678]}, "159": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 3.0], [3.0, 3.0, -4.0]], "dev": [0.44174203609660956]}, "160": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.38892987427764292]}, "161": {"P": [[-3.0, 3.0, 4.0], [3.0, -2.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.38776486166482488]}, "162": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.3866421851179942]}, "163": {"P": [[-4.0, 3.0, 3.0], [4.0, -4.0, 3.0], [3.0, 5.0, -5.0]], "dev": [0.43689892536427283]}, "164": {"P": [[-4.0, 3.0, 4.0], [4.0, -4.0, 4.0], [3.0, 3.0, -4.0]], "dev": [0.32527700241176088]}, "165": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [3.0, 3.0, -3.0]], "dev": [0.32435700407634099]}, "166": {"P": [[-5.0, 4.0, 4.0], [4.0, -2.0, 2.0], [4.0, 3.0, -4.0]], "dev": [0.43366630226334918]}, "167": {"P": [[-3.0, 4.0, 3.0], [4.0, -4.0, 3.0], [4.0, 3.0, -2.0]], "dev": [0.3816409508899582]}, "168": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 4.0], [3.0, 4.0, -4.0]], "dev": [0.2494285482224147]}, "169": {"P": [[-5.0, 3.0, 4.0], [4.0, -4.0, 3.0], [4.0, 3.0, -3.0]], "dev": [0.37991416280486323]}, "170": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [4.0, 2.0, -2.0]], "dev": [0.4298582542605095]}, "171": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.2476825024717898]}, "172": {"P": [[-4.0, 4.0, 3.0], [3.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.24720154212995854]}, "173": {"P": [[-2.0, 3.0, 3.0], [3.0, -5.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.42735867596073585]}, "174": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [3.0, 3.0, -2.0]], "dev": [0.37623790212400293]}, "175": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.24604990326162693]}, "176": {"P": [[-5.0, 3.0, 4.0], [3.0, -3.0, 4.0], [3.0, 4.0, -4.0]], "dev": [0.37501103518684009]}, "177": {"P": [[-5.0, 3.0, 4.0], [2.0, -3.0, 5.0], [3.0, 4.0, -4.0]], "dev": [0.46919462791742172]}, "178": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 4.0], [3.0, 4.0, -2.0]], "dev": [0.37391635167455622]}, "179": {"P": [[-4.0, 4.0, 3.0], [4.0, -3.0, 3.0], [3.0, 4.0, -5.0]], "dev": [0.37341714839469148]}, "180": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 3.0], [4.0, 4.0, -5.0]], "dev": [0.41727118523543794]}, "181": {"P": [[-5.0, 4.0, 5.0], [3.0, -4.0, 4.0], [3.0, 3.0, -4.0]], "dev": [0.41610399676969101]}, "182": {"P": [[-4.0, 4.0, 3.0], [3.0, -2.0, 4.0], [3.0, 4.0, -4.0]], "dev": [0.37210536615291345]}, "183": {"P": [[-5.0, 4.0, 3.0], [5.0, -5.0, 4.0], [3.0, 3.0, -3.0]], "dev": [0.45866517069853802]}, "184": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 4.0], [4.0, 2.0, -3.0]], "dev": [0.41279612576006203]}, "185": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.41175661498408783]}, "186": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.36062083773207126]}, "187": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 3.0], [3.0, 5.0, -4.0]], "dev": [0.40976969260915075]}, "188": {"P": [[-4.0, 2.0, 5.0], [4.0, -4.0, 4.0], [4.0, 3.0, -4.0]], "dev": [0.35880802899833275]}, "189": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [4.0, 3.0, -4.0]], "dev": [0.29978694845791448]}, "190": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [5.0, 2.0, -3.0]], "dev": [0.40701326682614103]}, "191": {"P": [[-5.0, 4.0, 3.0], [4.0, -4.0, 3.0], [3.0, 5.0, -4.0]], "dev": [0.40615253029613008]}, "192": {"P": [[-4.0, 3.0, 4.0], [4.0, -4.0, 4.0], [4.0, 3.0, -4.0]], "dev": [0.2251985563484433]}, "193": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [4.0, 3.0, -3.0]], "dev": [0.29695349928447251]}, "194": {"P": [[-5.0, 4.0, 5.0], [3.0, -4.0, 3.0], [4.0, 3.0, -3.0]], "dev": [0.40373888242852773]}, "195": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.35345847233863981]}, "196": {"P": [[-4.0, 3.0, 4.0], [3.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.22315602503647491]}, "197": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 4.0], [3.0, 4.0, -4.0]], "dev": [0.352200102886706]}, "198": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 3.0], [3.0, 5.0, -3.0]], "dev": [0.40089930132051532]}, "199": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.29372838210888136]}, "200": {"P": [[-4.0, 3.0, 4.0], [4.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.22178158709938603]}, "201": {"P": [[-4.0, 2.0, 5.0], [4.0, -3.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.3990401540873062]}, "202": {"P": [[-5.0, 4.0, 3.0], [4.0, -3.0, 3.0], [3.0, 5.0, -4.0]], "dev": [0.39846997704537562]}, "203": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.29221664123833357]}, "204": {"P": [[-4.0, 2.0, 5.0], [4.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.34867031819855959]}, "205": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 4.0], [2.0, 5.0, -4.0]], "dev": [0.44019403742844365]}, "206": {"P": [[-5.0, 3.0, 4.0], [3.0, -3.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.39642728537872213]}, "207": {"P": [[-5.0, 3.0, 4.0], [3.0, -4.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.39597434190117131]}, "208": {"P": [[-5.0, 3.0, 4.0], [3.0, -4.0, 5.0], [3.0, 4.0, -3.0]], "dev": [0.39554379262308298]}, "209": {"P": [[-5.0, 4.0, 5.0], [4.0, -3.0, 3.0], [5.0, 2.0, -4.0]], "dev": [0.4181428078868249]}, "210": {"P": [[-5.0, 5.0, 3.0], [5.0, -5.0, 3.0], [3.0, 4.0, -4.0]], "dev": [0.41719762631334767]}, "211": {"P": [[-5.0, 3.0, 4.0], [4.0, -5.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.41627631151760441]}, "212": {"P": [[-4.0, 4.0, 4.0], [3.0, -2.0, 3.0], [5.0, 4.0, -4.0]], "dev": [0.37027382383682539]}, "213": {"P": [[-5.0, 3.0, 5.0], [3.0, -4.0, 4.0], [4.0, 4.0, -5.0]], "dev": [0.36944285693057555]}, "214": {"P": [[-5.0, 3.0, 4.0], [4.0, -3.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.41365272026730382]}, "215": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 5.0], [3.0, 3.0, -4.0]], "dev": [0.41282403705534237]}, "216": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 4.0], [3.0, 3.0, -3.0]], "dev": [0.3158529179865357]}, "217": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [5.0, 3.0, -4.0]], "dev": [0.31517108548557371]}, "218": {"P": [[-5.0, 4.0, 4.0], [4.0, -3.0, 3.0], [5.0, 3.0, -5.0]], "dev": [0.36565497155561516]}, "219": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 3.0], [3.0, 5.0, -4.0]], "dev": [0.36496874500552945]}, "220": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [4.0, 4.0, -4.0]], "dev": [0.25213885429936395]}, "221": {"P": [[-4.0, 3.0, 4.0], [3.0, -3.0, 4.0], [4.0, 5.0, -5.0]], "dev": [0.31270522072276558]}, "222": {"P": [[-5.0, 3.0, 4.0], [3.0, -4.0, 5.0], [5.0, 3.0, -4.0]], "dev": [0.40763696939621896]}, "223": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.31162478427301926]}, "224": {"P": [[-4.0, 3.0, 4.0], [4.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.16875330391629428]}, "225": {"P": [[-5.0, 4.0, 5.0], [3.0, -4.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.31064268344389501]}, "226": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 4.0], [3.0, 5.0, -5.0]], "dev": [0.40513175793006695]}, "227": {"P": [[-5.0, 3.0, 5.0], [3.0, -4.0, 4.0], [3.0, 5.0, -4.0]], "dev": [0.3602872493604804]}, "228": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.24887285862614544]}, "229": {"P": [[-5.0, 3.0, 5.0], [4.0, -5.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.35933120302930532]}, "230": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.35888382652897471]}, "231": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 3.0, -3.0]], "dev": [0.3082616061155895]}, "232": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.30794395785855194]}, "233": {"P": [[-5.0, 4.0, 4.0], [2.0, -3.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.40149162753314221]}, "234": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 4.0], [3.0, 4.0, -2.0]], "dev": [0.40104498582689885]}, "235": {"P": [[-5.0, 3.0, 5.0], [3.0, -4.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.3569427639428997]}, "236": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 4.0], [2.0, 5.0, -2.0]], "dev": [0.43949405395017577]}, "237": {"P": [[-5.0, 3.0, 4.0], [4.0, -5.0, 4.0], [3.0, 5.0, -3.0]], "dev": [0.43902914434813939]}, "238": {"P": [[-5.0, 3.0, 5.0], [3.0, -4.0, 4.0], [3.0, 5.0, -3.0]], "dev": [0.39943239572854111]}, "239": {"P": [[-5.0, 4.0, 4.0], [4.0, -2.0, 3.0], [3.0, 5.0, -4.0]], "dev": [0.39907159294416666]}, "240": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 4.0], [5.0, 3.0, -5.0]], "dev": [0.36320000251325468]}, "241": {"P": [[-5.0, 4.0, 6.0], [3.0, -3.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.40485548130565907]}, "242": {"P": [[-3.0, 3.0, 4.0], [5.0, -4.0, 5.0], [3.0, 4.0, -3.0]], "dev": [0.40409627196801434]}, "243": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 4.0], [4.0, 4.0, -5.0]], "dev": [0.31302674605959679]}, "244": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.31237768286412909]}, "245": {"P": [[-5.0, 4.0, 4.0], [5.0, -4.0, 3.0], [5.0, 3.0, -4.0]], "dev": [0.31174988810596399]}, "246": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 3.0], [4.0, 5.0, -4.0]], "dev": [0.35902827790984199]}, "247": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.31055724077072516]}, "248": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 4.0], [4.0, 3.0, -4.0]], "dev": [0.2533308756590314]}, "249": {"P": [[-5.0, 4.0, 4.0], [4.0, -3.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.30944707855036885]}, "250": {"P": [[-5.0, 5.0, 5.0], [3.0, -4.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.35662454267900262]}, "251": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [4.0, 5.0, -4.0]], "dev": [0.3084176776293423]}, "252": {"P": [[-5.0, 4.0, 5.0], [3.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.25148110023434039]}, "253": {"P": [[-5.0, 4.0, 4.0], [5.0, -5.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.30746731663629828]}, "254": {"P": [[-5.0, 3.0, 4.0], [3.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.39634542531353778]}, "255": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.30659427749456458]}, "256": {"P": [[-4.0, 4.0, 4.0], [4.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [3.8459253727671276e-16]}, "257": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 4.0], [4.0, 5.0, -5.0]], "dev": [0.3057968463548042]}, "258": {"P": [[-5.0, 4.0, 4.0], [2.0, -3.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.39428618353303108]}, "259": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [5.0, 3.0, -4.0]], "dev": [0.30507331459782572]}, "260": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 4.0, -4.0]], "dev": [0.24887151928119627]}, "261": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.30442197989560998]}, "262": {"P": [[-6.0, 4.0, 5.0], [3.0, -3.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.39247016930529544]}, "263": {"P": [[-6.0, 4.0, 5.0], [4.0, -3.0, 4.0], [3.0, 4.0, -3.0]], "dev": [0.39205288602984095]}, "264": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.30357664196576406]}, "265": {"P": [[-5.0, 4.0, 5.0], [3.0, -5.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.39126120908381001]}, "266": {"P": [[-5.0, 3.0, 5.0], [3.0, -3.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.39088648467811771]}, "267": {"P": [[-5.0, 3.0, 5.0], [3.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.34946325181699239]}, "268": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.3026864699343253]}, "269": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.34891844195267213]}, "270": {"P": [[-5.0, 6.0, 3.0], [5.0, -4.0, 3.0], [4.0, 4.0, -3.0]], "dev": [0.38393858613045612]}, "271": {"P": [[-4.0, 3.0, 4.0], [5.0, -4.0, 5.0], [5.0, 3.0, -4.0]], "dev": [0.38324700774424364]}, "272": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 4.0], [3.0, 5.0, -3.0]], "dev": [0.34820873962064336]}, "273": {"P": [[-3.0, 4.0, 4.0], [4.0, -3.0, 4.0], [4.0, 5.0, -3.0]], "dev": [0.38190898345891261]}, "274": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.38126226045988709]}, "275": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 3.0], [5.0, 5.0, -5.0]], "dev": [0.33924306706685992]}, "276": {"P": [[-4.0, 4.0, 3.0], [5.0, -6.0, 5.0], [4.0, 4.0, -4.0]], "dev": [0.33865640985444673]}, "277": {"P": [[-6.0, 4.0, 5.0], [4.0, -3.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.37940960022716885]}, "278": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 5.0], [5.0, 3.0, -4.0]], "dev": [0.33752984851987156]}, "279": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 5.0], [4.0, 4.0, -5.0]], "dev": [0.28992064072738194]}, "280": {"P": [[-5.0, 5.0, 5.0], [3.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.28943172102057257]}, "281": {"P": [[-5.0, 6.0, 4.0], [4.0, -5.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.37713851216164362]}, "282": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 4.0], [4.0, 3.0, -3.0]], "dev": [0.3766054047893127]}, "283": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 4.0], [5.0, 4.0, -4.0]], "dev": [0.28806582327763269]}, "284": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.23146958158162453]}, "285": {"P": [[-5.0, 4.0, 5.0], [5.0, -5.0, 3.0], [5.0, 3.0, -4.0]], "dev": [0.33406278452700888]}, "286": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 3.0], [4.0, 5.0, -4.0]], "dev": [0.37460767482755225]}, "287": {"P": [[-5.0, 4.0, 4.0], [5.0, -4.0, 3.0], [4.0, 5.0, -5.0]], "dev": [0.28647415626589295]}, "288": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.15518494021594118]}, "289": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.28577388122515085]}, "290": {"P": [[-5.0, 5.0, 4.0], [4.0, -3.0, 5.0], [3.0, 4.0, -3.0]], "dev": [0.37281923610128742]}, "291": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 5.0], [5.0, 3.0, -3.0]], "dev": [0.33165266090976137]}, "292": {"P": [[-4.0, 3.0, 5.0], [4.0, -4.0, 4.0], [4.0, 5.0, -4.0]], "dev": [0.22914595599874535]}, "293": {"P": [[-5.0, 3.0, 5.0], [4.0, -5.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.33095891228008334]}, "294": {"P": [[-3.0, 4.0, 4.0], [4.0, -3.0, 4.0], [4.0, 5.0, -6.0]], "dev": [0.37123192661090348]}, "295": {"P": [[-6.0, 4.0, 5.0], [3.0, -3.0, 4.0], [4.0, 5.0, -4.0]], "dev": [0.37086558589319446]}, "296": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.28380321966289551]}, "297": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.28358059780423428]}, "298": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.32945393482634078]}, "299": {"P": [[-5.0, 5.0, 3.0], [4.0, -3.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.4058583227112918]}, "300": {"P": [[-5.0, 3.0, 5.0], [5.0, -5.0, 5.0], [5.0, 3.0, -5.0]], "dev": [0.39015392996966153]}, "301": {"P": [[-5.0, 3.0, 5.0], [4.0, -5.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.3287028350023431]}, "302": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 4.0], [5.0, 3.0, -5.0]], "dev": [0.38884073358056576]}, "303": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 5.0], [3.0, 6.0, -5.0]], "dev": [0.40449200705916044]}, "304": {"P": [[-6.0, 4.0, 5.0], [3.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.36809161864810142]}, "305": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.36783933005935415]}, "306": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 4.0], [4.0, 4.0, -5.0]], "dev": [0.34860811860751484]}, "307": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.34803979695817627]}, "308": {"P": [[-6.0, 5.0, 5.0], [5.0, -4.0, 3.0], [5.0, 3.0, -4.0]], "dev": [0.34748398079591369]}, "309": {"P": [[-5.0, 4.0, 4.0], [5.0, -3.0, 3.0], [6.0, 4.0, -5.0]], "dev": [0.38462135244991014]}, "310": {"P": [[-5.0, 4.0, 5.0], [5.0, -5.0, 5.0], [4.0, 3.0, -4.0]], "dev": [0.30412662254875134]}, "311": {"P": [[-5.0, 3.0, 6.0], [4.0, -5.0, 5.0], [4.0, 4.0, -5.0]], "dev": [0.34589055868448398]}, "312": {"P": [[-4.0, 4.0, 5.0], [5.0, -4.0, 5.0], [3.0, 4.0, -3.0]], "dev": [0.34538375928413911]}, "313": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 3.0], [4.0, 5.0, -5.0]], "dev": [0.38246420486151056]}, "314": {"P": [[-5.0, 5.0, 4.0], [5.0, -4.0, 3.0], [4.0, 5.0, -3.0]], "dev": [0.34440607383443522]}, "315": {"P": [[-5.0, 4.0, 5.0], [5.0, -4.0, 4.0], [5.0, 3.0, -4.0]], "dev": [0.25270922138023216]}, "316": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.30136071036231993]}, "317": {"P": [[-4.0, 3.0, 5.0], [5.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.343027841871199]}, "318": {"P": [[-4.0, 4.0, 3.0], [4.0, -5.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.34259158226187431]}, "319": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.25120649640765419]}, "320": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.18974706743141448]}, "321": {"P": [[-4.0, 4.0, 5.0], [4.0, -3.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.34135088443827843]}, "322": {"P": [[-6.0, 5.0, 5.0], [4.0, -3.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.34095968741307914]}, "323": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.29871555417844559]}, "324": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [4.0, 4.0, -4.0]], "dev": [0.18872744500741812]}, "325": {"P": [[-5.0, 3.0, 5.0], [4.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.29807007115646927]}, "326": {"P": [[-5.0, 4.0, 4.0], [3.0, -4.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.33950416387427401]}, "327": {"P": [[-6.0, 4.0, 5.0], [5.0, -4.0, 3.0], [4.0, 5.0, -4.0]], "dev": [0.33916711883603839]}, "328": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 4.0], [4.0, 5.0, -4.0]], "dev": [0.18799133360825684]}, "329": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.24844478630662009]}, "330": {"P": [[-5.0, 4.0, 4.0], [3.0, -3.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.33821886423394371]}, "331": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 6.0], [5.0, 3.0, -3.0]], "dev": [0.37486354010348638]}, "332": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 4.0], [4.0, 5.0, -4.0]], "dev": [0.29617897618359906]}, "333": {"P": [[-5.0, 4.0, 4.0], [4.0, -4.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.24771749599028089]}, "334": {"P": [[-5.0, 4.0, 5.0], [4.0, -3.0, 5.0], [3.0, 5.0, -4.0]], "dev": [0.33709772323335435]}, "335": {"P": [[-6.0, 4.0, 5.0], [3.0, -3.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.37360836545579479]}, "336": {"P": [[-5.0, 4.0, 5.0], [3.0, -4.0, 5.0], [5.0, 4.0, -3.0]], "dev": [0.33659684042543203]}, "337": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 5.0], [5.0, 4.0, -3.0]], "dev": [0.33636099676219589]}, "338": {"P": [[-5.0, 4.0, 4.0], [4.0, -5.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.33613476239671419]}, "339": {"P": [[-6.0, 4.0, 5.0], [3.0, -4.0, 6.0], [3.0, 5.0, -4.0]], "dev": [0.40579553595713785]}, "340": {"P": [[-5.0, 3.0, 5.0], [5.0, -5.0, 5.0], [3.0, 5.0, -3.0]], "dev": [0.37224375856335795]}, "341": {"P": [[-6.0, 4.0, 5.0], [3.0, -3.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.3719972520530509]}, "342": {"P": [[-5.0, 5.0, 4.0], [2.0, -4.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.37175935891775319]}, "343": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 5.0], [3.0, 5.0, -3.0]], "dev": [0.3715299979478881]}, "344": {"P": [[-6.0, 6.0, 4.0], [5.0, -6.0, 4.0], [4.0, 4.0, -4.0]], "dev": [0.37720576530401617]}, "345": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 3.0], [5.0, 5.0, -5.0]], "dev": [0.34100699486711461]}, "346": {"P": [[-5.0, 4.0, 5.0], [6.0, -4.0, 4.0], [5.0, 3.0, -4.0]], "dev": [0.34052529942579979]}, "347": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 3.0], [5.0, 4.0, -5.0]], "dev": [0.34005355281839666]}, "348": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 4.0], [4.0, 4.0, -5.0]], "dev": [0.33959168302003478]}, "349": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 4.0], [4.0, 5.0, -5.0]], "dev": [0.37474364973363161]}, "350": {"P": [[-5.0, 3.0, 5.0], [5.0, -5.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.29890996322273233]}, "351": {"P": [[-5.0, 4.0, 4.0], [5.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.29850037107540361]}, "352": {"P": [[-4.0, 4.0, 4.0], [4.0, -4.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.29810132982657433]}, "353": {"P": [[-6.0, 4.0, 5.0], [3.0, -4.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.37293751257066204]}, "354": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 4.0], [4.0, 5.0, -5.0]], "dev": [0.33702386265224854]}, "355": {"P": [[-5.0, 4.0, 4.0], [5.0, -5.0, 4.0], [5.0, 5.0, -5.0]], "dev": [0.25111616805750359]}, "356": {"P": [[-4.0, 4.0, 4.0], [5.0, -4.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.25078705716057825]}, "357": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 4.0], [5.0, 3.0, -3.0]], "dev": [0.33586750149635436]}, "358": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.37087720140502928]}, "359": {"P": [[-5.0, 4.0, 5.0], [4.0, -3.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.29559704793045355]}, "360": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.1933822451550388]}, "361": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 4.0], [5.0, 4.0, -4.0]], "dev": [0.29497213862216248]}, "362": {"P": [[-6.0, 5.0, 6.0], [4.0, -5.0, 4.0], [4.0, 4.0, -3.0]], "dev": [0.36938167033780045]}, "363": {"P": [[-5.0, 4.0, 5.0], [3.0, -3.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.33380034159884669]}, "364": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.19253979939731636]}, "365": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.1923638001598105]}, "366": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 4.0], [5.0, 4.0, -4.0]], "dev": [0.33288576913552209]}, "367": {"P": [[-6.0, 5.0, 5.0], [3.0, -4.0, 6.0], [5.0, 3.0, -4.0]], "dev": [0.36769631743094655]}, "368": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.29308919154045809]}, "369": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.19179491088416306]}, "370": {"P": [[-5.0, 4.0, 5.0], [4.0, -3.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.29263560585085857]}, "371": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 4.0], [5.0, 4.0, -3.0]], "dev": [0.36649029775416253]}, "372": {"P": [[-4.0, 3.0, 5.0], [6.0, -5.0, 4.0], [4.0, 5.0, -3.0]], "dev": [0.36620802656998092]}, "373": {"P": [[-3.0, 4.0, 5.0], [5.0, -5.0, 4.0], [5.0, 4.0, -4.0]], "dev": [0.29202326859358857]}, "374": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.29183699582496125]}, "375": {"P": [[-5.0, 3.0, 5.0], [5.0, -4.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.39717766438944807]}, "376": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 4.0], [4.0, 6.0, -4.0]], "dev": [0.36515401501622174]}, "377": {"P": [[-5.0, 3.0, 6.0], [4.0, -4.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.36490897350971302]}, "378": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.29117907776025614]}, "379": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 5.0], [3.0, 6.0, -4.0]], "dev": [0.36444061829092111]}, "380": {"P": [[-6.0, 4.0, 6.0], [5.0, -5.0, 5.0], [5.0, 3.0, -5.0]], "dev": [0.36004570361518518]}, "381": {"P": [[-6.0, 5.0, 4.0], [5.0, -4.0, 3.0], [6.0, 5.0, -5.0]], "dev": [0.39148709220629596]}, "382": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 4.0], [6.0, 4.0, -6.0]], "dev": [0.35909760231517768]}, "383": {"P": [[-6.0, 4.0, 5.0], [3.0, -4.0, 6.0], [4.0, 5.0, -4.0]], "dev": [0.36358913673683568]}, "384": {"P": [[-4.0, 4.0, 6.0], [3.0, -4.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.35818119355108746]}, "385": {"P": [[-5.0, 4.0, 6.0], [5.0, -4.0, 5.0], [5.0, 3.0, -4.0]], "dev": [0.32274951345656283]}, "386": {"P": [[-6.0, 5.0, 6.0], [4.0, -5.0, 5.0], [4.0, 4.0, -5.0]], "dev": [0.32232703128525714]}, "387": {"P": [[-4.0, 5.0, 5.0], [5.0, -4.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.32191287405026292]}, "388": {"P": [[-7.0, 5.0, 6.0], [4.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.35644181697718935]}, "389": {"P": [[-3.0, 4.0, 4.0], [4.0, -3.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.38781185233768689]}, "390": {"P": [[-5.0, 4.0, 4.0], [5.0, -5.0, 5.0], [6.0, 4.0, -6.0]], "dev": [0.32071981993437904]}, "391": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.32033843062535072]}, "392": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.28081138052345833]}, "393": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 3.0], [4.0, 6.0, -5.0]], "dev": [0.35443861499142987]}, "394": {"P": [[-6.0, 5.0, 5.0], [5.0, -4.0, 3.0], [5.0, 5.0, -4.0]], "dev": [0.3192424061708562]}, "395": {"P": [[-6.0, 5.0, 5.0], [5.0, -4.0, 3.0], [5.0, 5.0, -5.0]], "dev": [0.27980229394722406]}, "396": {"P": [[-4.0, 4.0, 5.0], [5.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.23398078945305789]}, "397": {"P": [[-4.0, 5.0, 4.0], [5.0, -6.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.31821748536894051]}, "398": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.35261958192463339]}, "399": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 6.0], [6.0, 3.0, -5.0]], "dev": [0.31757300268179928]}, "400": {"P": [[-5.0, 4.0, 5.0], [5.0, -5.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.17615759448618637]}, "401": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.23264642832312624]}, "402": {"P": [[-6.0, 5.0, 4.0], [5.0, -6.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.31666342228945821]}, "403": {"P": [[-4.0, 5.0, 5.0], [5.0, -6.0, 5.0], [4.0, 4.0, -3.0]], "dev": [0.31637525706294367]}, "404": {"P": [[-6.0, 4.0, 6.0], [4.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.27723860155033164]}, "405": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.17519529245282933]}, "406": {"P": [[-5.0, 4.0, 5.0], [4.0, -4.0, 5.0], [4.0, 6.0, -6.0]], "dev": [0.27676036887358596]}, "407": {"P": [[-5.0, 4.0, 6.0], [4.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.31529634146461094]}, "408": {"P": [[-6.0, 4.0, 6.0], [4.0, -4.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.31504478799537922]}, "409": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.23101264805992225]}, "410": {"P": [[-5.0, 4.0, 5.0], [5.0, -5.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.17453617416636977]}, "411": {"P": [[-6.0, 5.0, 4.0], [4.0, -4.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.31433291663596002]}, "412": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 5.0], [4.0, 6.0, -6.0]], "dev": [0.34845373021623527]}, "413": {"P": [[-4.0, 6.0, 3.0], [5.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.31389347543192087]}, "414": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.23029167061284855]}, "415": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.2750008389975343]}, "416": {"P": [[-6.0, 4.0, 5.0], [4.0, -4.0, 6.0], [4.0, 5.0, -5.0]], "dev": [0.34750122299161301]}, "417": {"P": [[-6.0, 4.0, 5.0], [6.0, -5.0, 4.0], [3.0, 6.0, -5.0]], "dev": [0.37838529536852811]}, "418": {"P": [[-6.0, 5.0, 5.0], [3.0, -4.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.31291485582207995]}, "419": {"P": [[-4.0, 5.0, 4.0], [6.0, -4.0, 3.0], [5.0, 5.0, -6.0]], "dev": [0.31273929052449523]}, "420": {"P": [[-5.0, 6.0, 4.0], [5.0, -4.0, 4.0], [5.0, 4.0, -6.0]], "dev": [0.31257032576685922]}, "421": {"P": [[-6.0, 5.0, 7.0], [5.0, -4.0, 4.0], [5.0, 3.0, -4.0]], "dev": [0.39364215955344317]}, "422": {"P": [[-5.0, 3.0, 6.0], [4.0, -5.0, 5.0], [4.0, 6.0, -4.0]], "dev": [0.3462592691068862]}, "423": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [5.0, 5.0, -3.0]], "dev": [0.34607347881727518]}, "424": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 5.0], [5.0, 4.0, -3.0]], "dev": [0.345893624502701]}, "425": {"P": [[-5.0, 5.0, 5.0], [3.0, -5.0, 6.0], [5.0, 4.0, -3.0]], "dev": [0.34571966087873329]}, "426": {"P": [[-6.0, 6.0, 6.0], [4.0, -5.0, 4.0], [4.0, 5.0, -5.0]], "dev": [0.36190533012486759]}, "427": {"P": [[-6.0, 5.0, 4.0], [5.0, -4.0, 5.0], [3.0, 6.0, -4.0]], "dev": [0.37618177691199217]}, "428": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.34523266381999307]}, "429": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.3285656534926592]}, "430": {"P": [[-5.0, 5.0, 5.0], [5.0, -6.0, 6.0], [3.0, 5.0, -5.0]], "dev": [0.32819096075032023]}, "431": {"P": [[-5.0, 4.0, 6.0], [5.0, -5.0, 6.0], [4.0, 4.0, -5.0]], "dev": [0.32782287097195845]}, "432": {"P": [[-4.0, 5.0, 5.0], [4.0, -3.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.32746134572506469]}, "433": {"P": [[-6.0, 5.0, 6.0], [5.0, -3.0, 3.0], [5.0, 5.0, -4.0]], "dev": [0.3591821833194771]}, "434": {"P": [[-6.0, 5.0, 6.0], [4.0, -6.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.32675783530135671]}, "435": {"P": [[-5.0, 5.0, 5.0], [3.0, -4.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.29086337654194561]}, "436": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.290544423801601]}, "437": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.32575084523381553]}, "438": {"P": [[-4.0, 3.0, 5.0], [6.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.3254279024384707]}, "439": {"P": [[-5.0, 4.0, 6.0], [4.0, -3.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.32511125633557147]}, "440": {"P": [[-5.0, 4.0, 5.0], [5.0, -4.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.24887193908401481]}, "441": {"P": [[-5.0, 4.0, 5.0], [4.0, -5.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.248607361106327]}, "442": {"P": [[-6.0, 4.0, 6.0], [5.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.28877564968418284]}, "443": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 6.0], [5.0, 3.0, -3.0]], "dev": [0.35580389195897577]}, "444": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 4.0], [5.0, 6.0, -5.0]], "dev": [0.28824029453991717]}, "445": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 4.0], [5.0, 5.0, -5.0]], "dev": [0.19925488887768938]}, "446": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.24739848687399851]}, "447": {"P": [[-3.0, 5.0, 5.0], [5.0, -4.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.35461413435438849]}, "448": {"P": [[-5.0, 4.0, 6.0], [3.0, -4.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.32253852499710717]}, "449": {"P": [[-5.0, 4.0, 5.0], [6.0, -5.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.24676273713096994]}, "450": {"P": [[-5.0, 4.0, 5.0], [5.0, -5.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.1337306755641581]}, "451": {"P": [[-4.0, 5.0, 5.0], [5.0, -5.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.24637545989690357]}, "452": {"P": [[-6.0, 5.0, 6.0], [4.0, -3.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.3215505962215332]}, "453": {"P": [[-6.0, 5.0, 5.0], [3.0, -5.0, 7.0], [5.0, 4.0, -5.0]], "dev": [0.35299550821914799]}, "454": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 6.0], [5.0, 4.0, -5.0]], "dev": [0.2859555384914822]}, "455": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.19764674149064271]}, "456": {"P": [[-6.0, 4.0, 6.0], [5.0, -6.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.28557469066346597]}, "457": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 6.0], [4.0, 5.0, -4.0]], "dev": [0.32044519330360183]}, "458": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.28521844313427203]}, "459": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.24511069106448183]}, "460": {"P": [[-5.0, 4.0, 5.0], [5.0, -4.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.24498380303259987]}, "461": {"P": [[-6.0, 5.0, 5.0], [4.0, -6.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.31966157739411999]}, "462": {"P": [[-6.0, 4.0, 5.0], [4.0, -5.0, 6.0], [4.0, 6.0, -5.0]], "dev": [0.3194793525980224]}, "463": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 5.0], [5.0, 5.0, -3.0]], "dev": [0.35072198117191478]}, "464": {"P": [[-4.0, 6.0, 4.0], [5.0, -4.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.28429401479326077]}, "465": {"P": [[-5.0, 3.0, 7.0], [5.0, -6.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.35032844429955279]}, "466": {"P": [[-4.0, 6.0, 4.0], [5.0, -4.0, 5.0], [6.0, 3.0, -5.0]], "dev": [0.35013910314317709]}, "467": {"P": [[-7.0, 5.0, 6.0], [4.0, -4.0, 5.0], [4.0, 5.0, -3.0]], "dev": [0.37868151919625404]}, "468": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 5.0], [4.0, 6.0, -4.0]], "dev": [0.31849808769191795]}, "469": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 4.0, -3.0]], "dev": [0.31835288445303112]}, "470": {"P": [[-6.0, 4.0, 5.0], [5.0, -5.0, 5.0], [4.0, 6.0, -4.0]], "dev": [0.31821282491147457]}, "471": {"P": [[-6.0, 6.0, 5.0], [5.0, -3.0, 4.0], [3.0, 6.0, -5.0]], "dev": [0.3778875841500316]}, "472": {"P": [[-6.0, 4.0, 6.0], [5.0, -4.0, 5.0], [3.0, 6.0, -5.0]], "dev": [0.34910494949246557]}, "473": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [4.0, 4.0, -5.0]], "dev": [0.32375394424703824]}, "474": {"P": [[-4.0, 5.0, 5.0], [4.0, -6.0, 5.0], [6.0, 4.0, -4.0]], "dev": [0.34879825964792233]}, "475": {"P": [[-7.0, 6.0, 6.0], [4.0, -5.0, 4.0], [5.0, 5.0, -5.0]], "dev": [0.35364753116536035]}, "476": {"P": [[-4.0, 5.0, 5.0], [4.0, -6.0, 6.0], [6.0, 3.0, -4.0]], "dev": [0.34851014986563367]}, "477": {"P": [[-5.0, 6.0, 6.0], [4.0, -4.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.3223975149734945]}, "478": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [5.0, 3.0, -4.0]], "dev": [0.32207205062005279]}, "479": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.32175198636036451]}, "480": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 4.0], [6.0, 5.0, -6.0]], "dev": [0.28769804741088617]}, "481": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.32112794409621254]}, "482": {"P": [[-5.0, 6.0, 6.0], [4.0, -4.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.32082390913044734]}, "483": {"P": [[-7.0, 5.0, 5.0], [5.0, -6.0, 6.0], [5.0, 4.0, -5.0]], "dev": [0.35100278755248593]}, "484": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.24833760546154898]}, "485": {"P": [[-6.0, 5.0, 6.0], [4.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.24807909148782706]}, "486": {"P": [[-4.0, 5.0, 5.0], [5.0, -4.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.24782696262606238]}, "487": {"P": [[-7.0, 5.0, 5.0], [5.0, -4.0, 4.0], [6.0, 5.0, -6.0]], "dev": [0.349799243186252]}, "488": {"P": [[-6.0, 6.0, 5.0], [5.0, -5.0, 6.0], [4.0, 4.0, -4.0]], "dev": [0.2854898780981151]}, "489": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.24710855816659577]}, "490": {"P": [[-6.0, 6.0, 5.0], [5.0, -5.0, 4.0], [5.0, 5.0, -5.0]], "dev": [0.20169123132737973]}, "491": {"P": [[-6.0, 5.0, 5.0], [6.0, -6.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.24666094246578918]}, "492": {"P": [[-6.0, 6.0, 6.0], [4.0, -5.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.28452075852510667]}, "493": {"P": [[-6.0, 4.0, 5.0], [6.0, -5.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.31782216982630584]}, "494": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 4.0], [5.0, 6.0, -5.0]], "dev": [0.24603583100883944]}, "495": {"P": [[-5.0, 5.0, 5.0], [5.0, -4.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.20075530277726009]}, "496": {"P": [[-6.0, 5.0, 6.0], [5.0, -4.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.24564957061742707]}, "497": {"P": [[-6.0, 4.0, 7.0], [5.0, -4.0, 5.0], [4.0, 5.0, -5.0]], "dev": [0.31688185080518677]}, "498": {"P": [[-5.0, 4.0, 6.0], [4.0, -4.0, 5.0], [5.0, 6.0, -4.0]], "dev": [0.31665899739690334]}, "499": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.24511521875969375]}, "500": {"P": [[-5.0, 5.0, 5.0], [5.0, -5.0, 5.0], [5.0, 5.0, -5.0]], "dev": [3.8459253727671276e-16]}, "501": {"P": [[-5.0, 5.0, 4.0], [5.0, -4.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.24478860856337351]}, "502": {"P": [[-6.0, 5.0, 4.0], [4.0, -5.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.31581564889671582]}, "503": {"P": [[-7.0, 5.0, 5.0], [5.0, -4.0, 4.0], [5.0, 6.0, -5.0]], "dev": [0.34573731633423754]}, "504": {"P": [[-6.0, 5.0, 5.0], [5.0, -4.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.24434243605446249]}, "505": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 5.0, -5.0]], "dev": [0.19942023407292339]}, "506": {"P": [[-5.0, 4.0, 6.0], [6.0, -5.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.24407374186812136]}, "507": {"P": [[-7.0, 5.0, 5.0], [4.0, -4.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.34490149114327939]}, "508": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 6.0], [6.0, 4.0, -4.0]], "dev": [0.31469175541213329]}, "509": {"P": [[-4.0, 5.0, 4.0], [6.0, -4.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.31452054869510954]}, "510": {"P": [[-6.0, 4.0, 6.0], [5.0, -5.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.24360409628442958]}, "511": {"P": [[-6.0, 5.0, 6.0], [5.0, -4.0, 5.0], [3.0, 6.0, -4.0]], "dev": [0.31419169426239518]}, "512": {"P": [[-5.0, 3.0, 6.0], [6.0, -6.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.31403399152543643]}, "513": {"P": [[-6.0, 5.0, 5.0], [3.0, -5.0, 7.0], [6.0, 4.0, -5.0]], "dev": [0.3437757856590784]}, "514": {"P": [[-4.0, 4.0, 6.0], [6.0, -5.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.2807000842747171]}, "515": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.24314113016288746]}, "516": {"P": [[-6.0, 4.0, 6.0], [5.0, -6.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.28047256109202756]}, "517": {"P": [[-5.0, 3.0, 7.0], [6.0, -5.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.34310830643135914]}, "518": {"P": [[-5.0, 5.0, 6.0], [6.0, -4.0, 4.0], [3.0, 6.0, -5.0]], "dev": [0.3429515806591924]}, "519": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [6.0, 3.0, -5.0]], "dev": [0.3668507178997491]}, "520": {"P": [[-6.0, 6.0, 4.0], [4.0, -4.0, 6.0], [5.0, 5.0, -5.0]], "dev": [0.2800739917184728]}, "521": {"P": [[-6.0, 4.0, 5.0], [6.0, -5.0, 4.0], [7.0, 5.0, -6.0]], "dev": [0.36617187172372978]}, "522": {"P": [[-6.0, 6.0, 5.0], [4.0, -5.0, 4.0], [6.0, 6.0, -6.0]], "dev": [0.33823652056583769]}, "523": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [6.0, 3.0, -4.0]], "dev": [0.36550976051476064]}, "524": {"P": [[-4.0, 6.0, 4.0], [6.0, -5.0, 4.0], [5.0, 6.0, -4.0]], "dev": [0.3376025464465246]}, "525": {"P": [[-6.0, 5.0, 5.0], [7.0, -7.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.33729211434173084]}, "526": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 4.0], [6.0, 4.0, -6.0]], "dev": [0.33698602439551428]}, "527": {"P": [[-6.0, 5.0, 7.0], [5.0, -6.0, 5.0], [4.0, 5.0, -6.0]], "dev": [0.36423509740554438]}, "528": {"P": [[-5.0, 3.0, 6.0], [5.0, -5.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.30638136859826637]}, "529": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.30609915539746757]}, "530": {"P": [[-4.0, 4.0, 5.0], [6.0, -5.0, 6.0], [6.0, 4.0, -5.0]], "dev": [0.30582151437973593]}, "531": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.30554842380231856]}, "532": {"P": [[-5.0, 6.0, 6.0], [5.0, -4.0, 4.0], [4.0, 6.0, -4.0]], "dev": [0.33523950562474569]}, "533": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.30501580698585362]}, "534": {"P": [[-6.0, 6.0, 6.0], [5.0, -4.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.27154111383367385]}, "535": {"P": [[-5.0, 5.0, 5.0], [5.0, -4.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.27129874907647583]}, "536": {"P": [[-6.0, 6.0, 5.0], [7.0, -6.0, 4.0], [5.0, 4.0, -5.0]], "dev": [0.30425046638340836]}, "537": {"P": [[-5.0, 4.0, 5.0], [5.0, -7.0, 7.0], [4.0, 6.0, -5.0]], "dev": [0.3338996800914244]}, "538": {"P": [[-6.0, 5.0, 5.0], [6.0, -6.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.27060079402837606]}, "539": {"P": [[-6.0, 6.0, 5.0], [6.0, -5.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.23255304179708713]}, "540": {"P": [[-6.0, 5.0, 6.0], [4.0, -5.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.2323498320471028]}, "541": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 5.0], [5.0, 6.0, -7.0]], "dev": [0.30306300779380285]}, "542": {"P": [[-5.0, 4.0, 6.0], [6.0, -5.0, 6.0], [4.0, 5.0, -4.0]], "dev": [0.30283853673128169]}, "543": {"P": [[-6.0, 5.0, 6.0], [5.0, -3.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.33242676851654934]}, "544": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.23159074241928906]}, "545": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.18619672290447392]}, "546": {"P": [[-6.0, 4.0, 6.0], [4.0, -5.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.26894915378971462]}, "547": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 5.0], [5.0, 4.0, -4.0]], "dev": [0.33152452904843588]}, "548": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 4.0], [5.0, 6.0, -5.0]], "dev": [0.30158102942991921]}, "549": {"P": [[-6.0, 5.0, 6.0], [5.0, -4.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.23076085206250171]}, "550": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.12507490052879161]}, "551": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.23046522693606755]}, "552": {"P": [[-5.0, 4.0, 6.0], [7.0, -5.0, 4.0], [5.0, 5.0, -4.0]], "dev": [0.30082616508680665]}, "553": {"P": [[-6.0, 5.0, 6.0], [4.0, -4.0, 5.0], [5.0, 6.0, -4.0]], "dev": [0.30064768447731438]}, "554": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 6.0], [6.0, 4.0, -4.0]], "dev": [0.26759278648586404]}, "555": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.18497108233723411]}, "556": {"P": [[-6.0, 5.0, 6.0], [6.0, -4.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.2672984043985131]}, "557": {"P": [[-6.0, 5.0, 5.0], [5.0, -3.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.32953843959552409]}, "558": {"P": [[-6.0, 4.0, 7.0], [5.0, -6.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.29981561239783266]}, "559": {"P": [[-5.0, 6.0, 4.0], [5.0, -4.0, 5.0], [4.0, 7.0, -6.0]], "dev": [0.2996611129783725]}, "560": {"P": [[-5.0, 4.0, 6.0], [6.0, -5.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.22938464842068493]}, "561": {"P": [[-5.0, 5.0, 6.0], [5.0, -6.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.2292892569023855]}, "562": {"P": [[-6.0, 5.0, 5.0], [4.0, -4.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.26651949612947173]}, "563": {"P": [[-6.0, 4.0, 5.0], [5.0, -6.0, 6.0], [4.0, 7.0, -5.0]], "dev": [0.35553829771548945]}, "564": {"P": [[-7.0, 6.0, 5.0], [4.0, -4.0, 6.0], [6.0, 4.0, -5.0]], "dev": [0.32836892143107277]}, "565": {"P": [[-6.0, 3.0, 7.0], [5.0, -5.0, 5.0], [5.0, 6.0, -5.0]], "dev": [0.3282162115245349]}, "566": {"P": [[-6.0, 4.0, 6.0], [5.0, -6.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.26608516513349123]}, "567": {"P": [[-6.0, 5.0, 6.0], [5.0, -3.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.32792136838822566]}, "568": {"P": [[-7.0, 6.0, 5.0], [4.0, -6.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.32777919609085598]}, "569": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [7.0, 4.0, -4.0]], "dev": [0.35453751353178659]}, "570": {"P": [[-5.0, 5.0, 5.0], [4.0, -6.0, 6.0], [6.0, 5.0, -4.0]], "dev": [0.29821570061120656]}, "571": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 5.0], [4.0, 6.0, -5.0]], "dev": [0.29810684068619508]}, "572": {"P": [[-6.0, 4.0, 6.0], [5.0, -6.0, 6.0], [4.0, 6.0, -4.0]], "dev": [0.29800164514470018]}, "573": {"P": [[-6.0, 3.0, 7.0], [6.0, -6.0, 5.0], [5.0, 5.0, -4.0]], "dev": [0.3539358535796418]}, "574": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 5.0], [4.0, 6.0, -4.0]], "dev": [0.32699842785554878]}, "575": {"P": [[-7.0, 5.0, 5.0], [6.0, -5.0, 4.0], [7.0, 5.0, -6.0]], "dev": [0.3668823415365301]}, "576": {"P": [[-6.0, 6.0, 4.0], [6.0, -6.0, 4.0], [6.0, 6.0, -6.0]], "dev": [0.31302674605959674]}, "577": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 7.0], [5.0, 4.0, -6.0]], "dev": [0.34057498242083856]}, "578": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [6.0, 4.0, -6.0]], "dev": [0.31247769153296079]}, "579": {"P": [[-6.0, 6.0, 7.0], [4.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.34001624205315273]}, "580": {"P": [[-7.0, 6.0, 7.0], [5.0, -5.0, 5.0], [5.0, 4.0, -5.0]], "dev": [0.31194380231316937]}, "581": {"P": [[-5.0, 6.0, 4.0], [5.0, -7.0, 6.0], [4.0, 7.0, -5.0]], "dev": [0.33947166413883584]}, "582": {"P": [[-5.0, 4.0, 6.0], [6.0, -5.0, 6.0], [6.0, 4.0, -6.0]], "dev": [0.31142494876700649]}, "583": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.28066678803924383]}, "584": {"P": [[-5.0, 5.0, 6.0], [6.0, -5.0, 6.0], [5.0, 4.0, -4.0]], "dev": [0.28042621873253609]}, "585": {"P": [[-7.0, 6.0, 6.0], [6.0, -5.0, 4.0], [6.0, 4.0, -5.0]], "dev": [0.28018965736523432]}, "586": {"P": [[-6.0, 6.0, 4.0], [6.0, -7.0, 6.0], [4.0, 6.0, -5.0]], "dev": [0.31043183031807098]}, "587": {"P": [[-7.0, 6.0, 7.0], [5.0, -4.0, 4.0], [5.0, 5.0, -6.0]], "dev": [0.33792166337984164]}, "588": {"P": [[-6.0, 5.0, 6.0], [6.0, -6.0, 6.0], [5.0, 4.0, -5.0]], "dev": [0.24529833396361622]}, "589": {"P": [[-6.0, 5.0, 6.0], [4.0, -6.0, 7.0], [5.0, 5.0, -6.0]], "dev": [0.27928314947513622]}, "590": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 5.0], [6.0, 4.0, -6.0]], "dev": [0.27906637122328209]}, "591": {"P": [[-6.0, 4.0, 7.0], [5.0, -4.0, 6.0], [5.0, 5.0, -6.0]], "dev": [0.33695687088778375]}, "592": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 4.0], [5.0, 6.0, -6.0]], "dev": [0.3090516815084341]}, "593": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 6.0], [5.0, 4.0, -5.0]], "dev": [0.27843939837453585]}, "594": {"P": [[-6.0, 5.0, 6.0], [6.0, -5.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.2043437712052569]}, "595": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.24391920552184912]}, "596": {"P": [[-5.0, 6.0, 4.0], [5.0, -4.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.27784710611347757]}, "597": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [5.0, 7.0, -7.0]], "dev": [0.3079997351878031]}, "598": {"P": [[-5.0, 6.0, 6.0], [5.0, -4.0, 4.0], [6.0, 5.0, -6.0]], "dev": [0.27747128095661228]}, "599": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.20353830072324075]}, "600": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.15380934134473989]}, "601": {"P": [[-6.0, 4.0, 7.0], [5.0, -6.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.27693575071991694]}, "602": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [6.0, 4.0, -4.0]], "dev": [0.30703488851591382]}, "603": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [6.0, 4.0, -5.0]], "dev": [0.27659733261811326]}, "604": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [6.0, 4.0, -4.0]], "dev": [0.24245178586423055]}, "605": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 5.0, -5.0]], "dev": [0.1532557999504196]}, "606": {"P": [[-6.0, 5.0, 5.0], [4.0, -5.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.2421711439073824]}, "607": {"P": [[-4.0, 5.0, 5.0], [6.0, -7.0, 6.0], [5.0, 5.0, -6.0]], "dev": [0.27596451359530189]}, "608": {"P": [[-4.0, 4.0, 6.0], [6.0, -5.0, 5.0], [6.0, 5.0, -7.0]], "dev": [0.30598920942884389]}, "609": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 6.0], [7.0, 4.0, -5.0]], "dev": [0.27566983308036863]}, "610": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 5.0], [5.0, 6.0, -5.0]], "dev": [0.15285601484633693]}, "611": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.20209855166938437]}, "612": {"P": [[-6.0, 4.0, 7.0], [5.0, -5.0, 6.0], [4.0, 6.0, -5.0]], "dev": [0.27525457967831746]}, "613": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 5.0], [5.0, 7.0, -5.0]], "dev": [0.35787126159650162]}, "614": {"P": [[-7.0, 6.0, 6.0], [4.0, -4.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.30506258668967429]}, "615": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 5.0], [5.0, 6.0, -5.0]], "dev": [0.24110634968490002]}, "616": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.20169714784073972]}, "617": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.27463270127467665]}, "618": {"P": [[-7.0, 5.0, 6.0], [4.0, -4.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.3045092749075472]}, "619": {"P": [[-5.0, 7.0, 3.0], [6.0, -5.0, 6.0], [6.0, 4.0, -5.0]], "dev": [0.35684707780662495]}, "620": {"P": [[-4.0, 6.0, 5.0], [6.0, -6.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.27430092818809237]}, "621": {"P": [[-6.0, 4.0, 7.0], [5.0, -6.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.2741971240962337]}, "622": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.27409668419345673]}, "623": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 7.0], [4.0, 6.0, -5.0]], "dev": [0.33108981494372081]}, "624": {"P": [[-6.0, 4.0, 6.0], [6.0, -6.0, 6.0], [4.0, 6.0, -4.0]], "dev": [0.30377341633642641]}, "625": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 5.0], [4.0, 7.0, -5.0]], "dev": [0.30366154932841805]}, "626": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [4.0, 6.0, -4.0]], "dev": [0.30355271910250059]}, "627": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 5.0, -3.0]], "dev": [0.30344690991508005]}, "628": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 6.0], [4.0, 6.0, -4.0]], "dev": [0.30334410604305478]}, "629": {"P": [[-7.0, 5.0, 5.0], [4.0, -6.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.35536144899918087]}, "630": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 6.0], [6.0, 5.0, -4.0]], "dev": [0.3302159002682602]}, "631": {"P": [[-7.0, 4.0, 7.0], [5.0, -5.0, 6.0], [7.0, 4.0, -6.0]], "dev": [0.35973163978132972]}, "632": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 6.0], [4.0, 6.0, -4.0]], "dev": [0.30296262999178569]}, "633": {"P": [[-4.0, 5.0, 6.0], [5.0, -6.0, 5.0], [7.0, 4.0, -6.0]], "dev": [0.32988329239572595]}, "634": {"P": [[-6.0, 4.0, 7.0], [4.0, -6.0, 6.0], [5.0, 6.0, -4.0]], "dev": [0.3547188268898448]}, "635": {"P": [[-6.0, 5.0, 5.0], [7.0, -5.0, 4.0], [7.0, 5.0, -5.0]], "dev": [0.33406066559232106]}, "636": {"P": [[-7.0, 6.0, 5.0], [6.0, -6.0, 4.0], [6.0, 6.0, -6.0]], "dev": [0.30723706570791631]}, "637": {"P": [[-7.0, 6.0, 7.0], [4.0, -5.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.30699968755627516]}, "638": {"P": [[-5.0, 6.0, 4.0], [7.0, -6.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.30676546042367941]}, "639": {"P": [[-7.0, 6.0, 7.0], [4.0, -5.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.30653437193774657]}, "640": {"P": [[-6.0, 5.0, 5.0], [7.0, -6.0, 5.0], [7.0, 4.0, -5.0]], "dev": [0.30630640972506468]}, "641": {"P": [[-5.0, 4.0, 6.0], [6.0, -4.0, 5.0], [7.0, 5.0, -7.0]], "dev": [0.33261596974370183]}, "642": {"P": [[-6.0, 6.0, 6.0], [5.0, -4.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.27680384442680295]}, "643": {"P": [[-6.0, 5.0, 5.0], [6.0, -6.0, 5.0], [7.0, 5.0, -7.0]], "dev": [0.27659395595627378]}, "644": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 4.0], [6.0, 5.0, -6.0]], "dev": [0.27638739889209146]}, "645": {"P": [[-7.0, 7.0, 6.0], [6.0, -5.0, 4.0], [5.0, 5.0, -5.0]], "dev": [0.27618416016783831]}, "646": {"P": [[-6.0, 5.0, 7.0], [4.0, -4.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.30500359519437675]}, "647": {"P": [[-5.0, 6.0, 6.0], [7.0, -6.0, 5.0], [4.0, 5.0, -4.0]], "dev": [0.30479717039285192]}, "648": {"P": [[-6.0, 6.0, 5.0], [6.0, -5.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.24316041026163956]}, "649": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.24298051350391209]}, "650": {"P": [[-6.0, 5.0, 5.0], [6.0, -5.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.24280422792801626]}, "651": {"P": [[-6.0, 5.0, 5.0], [6.0, -4.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.30400162018007859]}, "652": {"P": [[-6.0, 7.0, 6.0], [6.0, -5.0, 4.0], [4.0, 6.0, -5.0]], "dev": [0.303810208016353]}, "653": {"P": [[-6.0, 5.0, 5.0], [6.0, -6.0, 5.0], [5.0, 7.0, -7.0]], "dev": [0.27467613629799659]}, "654": {"P": [[-6.0, 6.0, 5.0], [6.0, -5.0, 4.0], [6.0, 6.0, -6.0]], "dev": [0.20471245573958011]}, "655": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.20456663800331509]}, "656": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 5.0], [6.0, 4.0, -4.0]], "dev": [0.27416378864509316]}, "657": {"P": [[-6.0, 4.0, 7.0], [7.0, -6.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.30289738118404114]}, "658": {"P": [[-7.0, 6.0, 6.0], [6.0, -5.0, 4.0], [5.0, 6.0, -4.0]], "dev": [0.30272357609101758]}, "659": {"P": [[-5.0, 6.0, 4.0], [6.0, -7.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.24137779958880676]}, "660": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.15796822209253614]}, "661": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.24109932445857044]}, "662": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 6.0], [5.0, 6.0, -7.0]], "dev": [0.30205714490171798]}, "663": {"P": [[-6.0, 5.0, 5.0], [4.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.30189767269347578]}, "664": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 6.0], [6.0, 4.0, -4.0]], "dev": [0.27293559680065282]}, "665": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.15749921581758533]}, "666": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.15742034729624704]}, "667": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.27252577365275948]}, "668": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [7.0, 4.0, -5.0]], "dev": [0.30114250877545617]}, "669": {"P": [[-7.0, 6.0, 6.0], [4.0, -5.0, 7.0], [6.0, 4.0, -5.0]], "dev": [0.30099982922447455]}, "670": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.24001462007033858]}, "671": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.15709945318521171]}, "672": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.23981029178631336]}, "673": {"P": [[-5.0, 4.0, 7.0], [6.0, -5.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.30045654527869214]}, "674": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [4.0, 7.0, -5.0]], "dev": [0.30032752147775471]}, "675": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.32633453544153079]}, "676": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [5.0, 6.0, -5.0]], "dev": [0.23944078381345035]}, "677": {"P": [[-6.0, 6.0, 5.0], [6.0, -5.0, 5.0], [5.0, 6.0, -7.0]], "dev": [0.23935647386246328]}, "678": {"P": [[-6.0, 4.0, 6.0], [6.0, -5.0, 6.0], [5.0, 6.0, -4.0]], "dev": [0.32592654522429521]}, "679": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 5.0], [5.0, 7.0, -7.0]], "dev": [0.32579552863808403]}, "680": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.29960953170282262]}, "681": {"P": [[-7.0, 6.0, 6.0], [4.0, -5.0, 7.0], [5.0, 5.0, -4.0]], "dev": [0.29949911149144332]}, "682": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 6.0, -4.0]], "dev": [0.23898255982264591]}, "683": {"P": [[-7.0, 6.0, 5.0], [4.0, -5.0, 7.0], [5.0, 6.0, -6.0]], "dev": [0.29928608535448853]}, "684": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 6.0], [4.0, 6.0, -4.0]], "dev": [0.2991834550858698]}, "685": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 5.0], [5.0, 7.0, -5.0]], "dev": [0.32506093117740892]}, "686": {"P": [[-7.0, 7.0, 7.0], [4.0, -5.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.34637761987137355]}, "687": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [4.0, 7.0, -6.0]], "dev": [0.29889094966639501]}, "688": {"P": [[-7.0, 6.0, 5.0], [5.0, -5.0, 6.0], [4.0, 7.0, -5.0]], "dev": [0.29879853588970295]}, "689": {"P": [[-7.0, 5.0, 6.0], [6.0, -7.0, 6.0], [6.0, 5.0, -7.0]], "dev": [0.32141989520388442]}, "690": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 7.0], [4.0, 6.0, -4.0]], "dev": [0.32451497650042466]}, "691": {"P": [[-6.0, 7.0, 6.0], [5.0, -4.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.32094747627020243]}, "692": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [4.0, 7.0, -5.0]], "dev": [0.29845399825185803]}, "693": {"P": [[-7.0, 5.0, 6.0], [7.0, -6.0, 5.0], [7.0, 4.0, -6.0]], "dev": [0.32048548355814793]}, "694": {"P": [[-7.0, 6.0, 5.0], [4.0, -5.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.29829663098782755]}, "695": {"P": [[-7.0, 5.0, 6.0], [6.0, -7.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.32003384274167712]}, "696": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 6.0], [6.0, 4.0, -6.0]], "dev": [0.29366170376751111]}, "697": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.31959247955087922]}, "698": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 6.0], [6.0, 5.0, -7.0]], "dev": [0.29323882508736226]}, "699": {"P": [[-5.0, 4.0, 6.0], [6.0, -5.0, 5.0], [8.0, 5.0, -6.0]], "dev": [0.31916131977431156]}, "700": {"P": [[-7.0, 7.0, 7.0], [5.0, -5.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.29282680951985374]}, "701": {"P": [[-6.0, 5.0, 7.0], [5.0, -4.0, 5.0], [7.0, 5.0, -5.0]], "dev": [0.29262485123226556]}, "702": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.26374574363596143]}, "703": {"P": [[-6.0, 5.0, 6.0], [6.0, -7.0, 7.0], [5.0, 5.0, -6.0]], "dev": [0.26355645986715143]}, "704": {"P": [[-5.0, 6.0, 6.0], [6.0, -5.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.26337007649228811]}, "705": {"P": [[-6.0, 5.0, 5.0], [7.0, -5.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.29184378879504169]}, "706": {"P": [[-6.0, 7.0, 6.0], [4.0, -4.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.31773154247957236]}, "707": {"P": [[-6.0, 7.0, 6.0], [5.0, -5.0, 4.0], [6.0, 6.0, -7.0]], "dev": [0.31753723277543766]}, "708": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 4.0], [6.0, 6.0, -6.0]], "dev": [0.26265334198891027]}, "709": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.26248130668122199]}, "710": {"P": [[-7.0, 7.0, 6.0], [6.0, -6.0, 5.0], [5.0, 5.0, -5.0]], "dev": [0.23016686519119686]}, "711": {"P": [[-6.0, 5.0, 8.0], [5.0, -5.0, 6.0], [4.0, 6.0, -5.0]], "dev": [0.31678448501981721]}, "712": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 4.0, -6.0]], "dev": [0.29057850254789652]}, "713": {"P": [[-5.0, 6.0, 6.0], [5.0, -4.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.26182144851825495]}, "714": {"P": [[-6.0, 5.0, 5.0], [6.0, -6.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.22955633796852754]}, "715": {"P": [[-5.0, 5.0, 6.0], [6.0, -5.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.19202260015334749]}, "716": {"P": [[-7.0, 5.0, 6.0], [7.0, -6.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.26135596085092699]}, "717": {"P": [[-7.0, 6.0, 6.0], [5.0, -4.0, 5.0], [7.0, 5.0, -7.0]], "dev": [0.28975231858930695]}, "718": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 5.0], [5.0, 7.0, -7.0]], "dev": [0.28959471433728701]}, "719": {"P": [[-4.0, 6.0, 5.0], [6.0, -7.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.26091536459239922]}, "720": {"P": [[-6.0, 6.0, 6.0], [6.0, -6.0, 6.0], [5.0, 5.0, -5.0]], "dev": [0.14474552847622871]}, "721": {"P": [[-5.0, 5.0, 6.0], [6.0, -5.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.19129013112820417]}, "722": {"P": [[-7.0, 6.0, 7.0], [5.0, -6.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.26049937577933413]}, "723": {"P": [[-5.0, 7.0, 5.0], [4.0, -5.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.28884431909787822]}, "724": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 4.0, -5.0]], "dev": [0.26023557983609585]}, "725": {"P": [[-5.0, 5.0, 5.0], [5.0, -6.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.22813215395072473]}, "726": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.14421754550802116]}, "727": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [5.0, 7.0, -7.0]], "dev": [0.22791250088248696]}, "728": {"P": [[-6.0, 5.0, 5.0], [5.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.25974007767380963]}, "729": {"P": [[-7.0, 5.0, 5.0], [5.0, -5.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.33773918048310947]}, "730": {"P": [[-7.0, 5.0, 7.0], [5.0, -5.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.25950820096020905]}, "731": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.19035228443361424]}, "732": {"P": [[-6.0, 5.0, 6.0], [6.0, -6.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.14385229337583968]}, "733": {"P": [[-5.0, 6.0, 5.0], [6.0, -5.0, 6.0], [7.0, 4.0, -6.0]], "dev": [0.25917998822798038]}, "734": {"P": [[-7.0, 5.0, 7.0], [5.0, -4.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.28740931744293258]}, "735": {"P": [[-7.0, 5.0, 7.0], [4.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.28729324872915346]}, "736": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.25887504072291628]}, "737": {"P": [[-6.0, 5.0, 6.0], [5.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.18995443750031038]}, "738": {"P": [[-7.0, 5.0, 6.0], [6.0, -6.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.22691368524825781]}, "739": {"P": [[-6.0, 7.0, 5.0], [7.0, -5.0, 5.0], [5.0, 5.0, -6.0]], "dev": [0.28685242934909955]}, "740": {"P": [[-7.0, 5.0, 7.0], [5.0, -5.0, 5.0], [5.0, 7.0, -5.0]], "dev": [0.28674803954357952]}, "741": {"P": [[-5.0, 5.0, 6.0], [4.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.31233331208967396]}, "742": {"P": [[-7.0, 5.0, 6.0], [6.0, -5.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.25833377809620561]}, "743": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.25825233841577461]}, "744": {"P": [[-6.0, 4.0, 7.0], [6.0, -6.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.25817337579688332]}, "745": {"P": [[-7.0, 5.0, 6.0], [4.0, -5.0, 7.0], [7.0, 5.0, -5.0]], "dev": [0.33556997919047094]}, "746": {"P": [[-6.0, 4.0, 7.0], [6.0, -5.0, 6.0], [4.0, 7.0, -6.0]], "dev": [0.31178601444436738]}, "747": {"P": [[-7.0, 6.0, 5.0], [5.0, -5.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.28608134655593492]}, "748": {"P": [[-8.0, 6.0, 6.0], [5.0, -5.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.28599513570176804]}, "749": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 6.0], [5.0, 7.0, -5.0]], "dev": [0.28591115339269407]}, "750": {"P": [[-7.0, 6.0, 5.0], [4.0, -5.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.28582938990587342]}, "751": {"P": [[-8.0, 5.0, 7.0], [5.0, -5.0, 6.0], [4.0, 7.0, -6.0]], "dev": [0.35693260207358057]}, "752": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 7.0], [4.0, 7.0, -5.0]], "dev": [0.31119856826563613]}, "753": {"P": [[-7.0, 6.0, 6.0], [4.0, -5.0, 7.0], [6.0, 5.0, -4.0]], "dev": [0.31110788687398105]}, "754": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 6.0], [5.0, 6.0, -4.0]], "dev": [0.28552432992343807]}, "755": {"P": [[-5.0, 7.0, 6.0], [5.0, -6.0, 7.0], [4.0, 6.0, -5.0]], "dev": [0.32356500010229461]}, "756": {"P": [[-7.0, 5.0, 6.0], [5.0, -4.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.31084805310505054]}, "757": {"P": [[-6.0, 5.0, 5.0], [7.0, -8.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.32314507358579309]}, "758": {"P": [[-7.0, 6.0, 8.0], [5.0, -6.0, 6.0], [5.0, 5.0, -6.0]], "dev": [0.32293834309646691]}, "759": {"P": [[-6.0, 5.0, 7.0], [4.0, -5.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.32273375829083623]}, "760": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [6.0, 4.0, -5.0]], "dev": [0.32253131205125207]}, "761": {"P": [[-6.0, 7.0, 5.0], [7.0, -5.0, 5.0], [6.0, 5.0, -4.0]], "dev": [0.29796283578299809]}, "762": {"P": [[-6.0, 7.0, 6.0], [6.0, -4.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.29777063685351585]}, "763": {"P": [[-5.0, 5.0, 7.0], [5.0, -4.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.29758068774986812]}, "764": {"P": [[-5.0, 4.0, 7.0], [7.0, -5.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.32174277051650102]}, "765": {"P": [[-8.0, 7.0, 7.0], [5.0, -5.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.2972075094451605]}, "766": {"P": [[-7.0, 5.0, 6.0], [7.0, -7.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.29702426544925509]}, "767": {"P": [[-5.0, 6.0, 6.0], [6.0, -7.0, 7.0], [4.0, 6.0, -5.0]], "dev": [0.27033205834922885]}, "768": {"P": [[-7.0, 6.0, 7.0], [5.0, -6.0, 7.0], [5.0, 5.0, -6.0]], "dev": [0.2701598627764063]}, "769": {"P": [[-6.0, 6.0, 7.0], [6.0, -5.0, 6.0], [5.0, 5.0, -4.0]], "dev": [0.26999004526717674]}, "770": {"P": [[-7.0, 5.0, 8.0], [5.0, -5.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.26982259802582703]}, "771": {"P": [[-5.0, 4.0, 7.0], [6.0, -5.0, 7.0], [5.0, 6.0, -6.0]], "dev": [0.32044351651937464]}, "772": {"P": [[-7.0, 6.0, 7.0], [6.0, -4.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.29597116719579569]}, "773": {"P": [[-7.0, 6.0, 5.0], [6.0, -6.0, 5.0], [6.0, 7.0, -7.0]], "dev": [0.26933439976640638]}, "774": {"P": [[-6.0, 6.0, 6.0], [5.0, -4.0, 5.0], [7.0, 6.0, -6.0]], "dev": [0.23981288209232349]}, "775": {"P": [[-5.0, 5.0, 6.0], [6.0, -5.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.23966491875195833]}, "776": {"P": [[-5.0, 6.0, 5.0], [6.0, -6.0, 5.0], [5.0, 8.0, -6.0]], "dev": [0.26886725209865803]}, "777": {"P": [[-7.0, 7.0, 7.0], [5.0, -6.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.29515348693635618]}, "778": {"P": [[-7.0, 7.0, 6.0], [5.0, -6.0, 7.0], [5.0, 5.0, -6.0]], "dev": [0.26856741023212238]}, "779": {"P": [[-7.0, 5.0, 6.0], [7.0, -6.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.26842094260257948]}, "780": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.20551040384788552]}, "781": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.20538695996623677]}, "782": {"P": [[-5.0, 6.0, 6.0], [6.0, -5.0, 5.0], [5.0, 7.0, -5.0]], "dev": [0.23870038206108621]}, "783": {"P": [[-6.0, 5.0, 5.0], [5.0, -5.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.31844897485429863]}, "784": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 7.0], [6.0, 4.0, -4.0]], "dev": [0.29409835036146997]}, "785": {"P": [[-7.0, 5.0, 7.0], [6.0, -7.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.23832468572261592]}, "786": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 6.0], [6.0, 5.0, -6.0]], "dev": [0.16478767089413901]}, "787": {"P": [[-7.0, 6.0, 7.0], [5.0, -5.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.20470609067987017]}, "788": {"P": [[-6.0, 6.0, 5.0], [6.0, -5.0, 6.0], [8.0, 4.0, -6.0]], "dev": [0.29354148505866773]}, "789": {"P": [[-7.0, 5.0, 6.0], [5.0, -6.0, 7.0], [5.0, 7.0, -7.0]], "dev": [0.29340742961986255]}, "790": {"P": [[-7.0, 6.0, 6.0], [7.0, -6.0, 4.0], [5.0, 7.0, -6.0]], "dev": [0.26695930025932157]}, "791": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.20430841252948506]}, "792": {"P": [[-6.0, 6.0, 6.0], [5.0, -6.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.11075827672900788]}, "793": {"P": [[-7.0, 6.0, 7.0], [5.0, -6.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.20412620643792215]}, "794": {"P": [[-7.0, 5.0, 7.0], [5.0, -5.0, 6.0], [5.0, 7.0, -7.0]], "dev": [0.26649447285877081]}, "795": {"P": [[-7.0, 5.0, 7.0], [5.0, -4.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.29264587607306147]}, "796": {"P": [[-8.0, 6.0, 6.0], [6.0, -5.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.29252601096388936]}, "797": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.23704222250915133]}, "798": {"P": [[-6.0, 5.0, 6.0], [6.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.16388027052435211]}, "799": {"P": [[-7.0, 6.0, 6.0], [5.0, -7.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.23686204996485274]}, "800": {"P": [[-7.0, 7.0, 6.0], [5.0, -6.0, 6.0], [6.0, 5.0, -4.0]], "dev": [0.26586222571852053]}, "801": {"P": [[-8.0, 5.0, 7.0], [6.0, -6.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.31598499205205172]}, "802": {"P": [[-5.0, 5.0, 6.0], [7.0, -5.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.23660939561449482]}, "803": {"P": [[-5.0, 6.0, 6.0], [6.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.20337824601558566]}, "804": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.20331815020793687]}, "805": {"P": [[-6.0, 5.0, 7.0], [7.0, -6.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.26539382130736383]}, "806": {"P": [[-6.0, 4.0, 7.0], [7.0, -6.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.26530642166209012]}, "807": {"P": [[-5.0, 7.0, 5.0], [5.0, -4.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.29133769428956469]}, "808": {"P": [[-6.0, 5.0, 6.0], [4.0, -6.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.29124130894095496]}, "809": {"P": [[-5.0, 6.0, 5.0], [7.0, -5.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.23610075426302149]}, "810": {"P": [[-6.0, 5.0, 6.0], [6.0, -4.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.29105425623132491]}, "811": {"P": [[-7.0, 5.0, 6.0], [6.0, -7.0, 6.0], [5.0, 7.0, -5.0]], "dev": [0.29096357407334728]}, "812": {"P": [[-7.0, 7.0, 5.0], [6.0, -4.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.31477583748533633]}, "813": {"P": [[-8.0, 6.0, 7.0], [5.0, -5.0, 6.0], [5.0, 6.0, -4.0]], "dev": [0.31467665765193664]}, "814": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 6.0], [5.0, 7.0, -5.0]], "dev": [0.26468123600136645]}, "815": {"P": [[-7.0, 6.0, 6.0], [6.0, -4.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.26461221731603296]}, "816": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [5.0, 6.0, -4.0]], "dev": [0.264545200298409]}, "817": {"P": [[-4.0, 4.0, 7.0], [6.0, -7.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.31429747847494743]}, "818": {"P": [[-6.0, 4.0, 7.0], [7.0, -7.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.29038120105477105]}, "819": {"P": [[-7.0, 6.0, 7.0], [6.0, -4.0, 5.0], [4.0, 7.0, -6.0]], "dev": [0.31411831755195269]}, "820": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 6.0], [6.0, 5.0, -7.0]], "dev": [0.31874189938794334]}, "821": {"P": [[-5.0, 7.0, 5.0], [6.0, -5.0, 6.0], [6.0, 5.0, -7.0]], "dev": [0.29015927953781856]}, "822": {"P": [[-7.0, 6.0, 6.0], [6.0, -5.0, 4.0], [8.0, 6.0, -6.0]], "dev": [0.34015590092518178]}, "823": {"P": [[-7.0, 5.0, 7.0], [6.0, -5.0, 6.0], [4.0, 7.0, -5.0]], "dev": [0.29002040696621167]}, "824": {"P": [[-7.0, 5.0, 6.0], [7.0, -6.0, 5.0], [8.0, 5.0, -7.0]], "dev": [0.3179694731884829]}, "825": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 5.0], [6.0, 7.0, -7.0]], "dev": [0.31778097767507607]}, "826": {"P": [[-7.0, 5.0, 6.0], [7.0, -7.0, 6.0], [7.0, 5.0, -7.0]], "dev": [0.29420144565113948]}, "827": {"P": [[-8.0, 7.0, 7.0], [5.0, -7.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.31740948091586879]}, "828": {"P": [[-7.0, 4.0, 7.0], [6.0, -6.0, 6.0], [5.0, 7.0, -5.0]], "dev": [0.31339645090564627]}, "829": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 4.0], [7.0, 6.0, -7.0]], "dev": [0.31704527274844418]}, "830": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 5.0], [7.0, 5.0, -7.0]], "dev": [0.29349335705227353]}, "831": {"P": [[-7.0, 5.0, 6.0], [6.0, -7.0, 7.0], [7.0, 5.0, -7.0]], "dev": [0.29332114034610335]}, "832": {"P": [[-6.0, 5.0, 5.0], [7.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.26775855181554559]}, "833": {"P": [[-7.0, 5.0, 6.0], [7.0, -7.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.29298243302584137]}, "834": {"P": [[-7.0, 6.0, 8.0], [4.0, -5.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.29281593084514751]}, "835": {"P": [[-7.0, 6.0, 8.0], [5.0, -5.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.29265132193477583]}, "836": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [6.0, 5.0, -6.0]], "dev": [0.26711847493875018]}, "837": {"P": [[-5.0, 5.0, 6.0], [7.0, -5.0, 5.0], [7.0, 6.0, -5.0]], "dev": [0.29232776076006028]}, "838": {"P": [[-7.0, 6.0, 7.0], [6.0, -5.0, 6.0], [7.0, 4.0, -5.0]], "dev": [0.26681061128215094]}, "839": {"P": [[-7.0, 7.0, 6.0], [7.0, -6.0, 4.0], [6.0, 6.0, -5.0]], "dev": [0.26665970185302668]}, "840": {"P": [[-7.0, 6.0, 7.0], [5.0, -5.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.238486500611508]}, "841": {"P": [[-6.0, 5.0, 6.0], [5.0, -5.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.26636389725911136]}, "842": {"P": [[-6.0, 7.0, 7.0], [5.0, -5.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.26621898985192016]}, "843": {"P": [[-7.0, 5.0, 7.0], [7.0, -7.0, 6.0], [5.0, 6.0, -7.0]], "dev": [0.29140191295712214]}, "844": {"P": [[-8.0, 6.0, 6.0], [6.0, -7.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.29125408258980234]}, "845": {"P": [[-6.0, 5.0, 7.0], [6.0, -5.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.20604606382842164]}, "846": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.20592327890724316]}, "847": {"P": [[-7.0, 6.0, 6.0], [7.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.20580293931946686]}, "848": {"P": [[-8.0, 6.0, 6.0], [6.0, -5.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.29068105546419365]}, "849": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 5.0], [6.0, 5.0, -5.0]], "dev": [0.29054234318159899]}, "850": {"P": [[-7.0, 6.0, 7.0], [5.0, -5.0, 5.0], [6.0, 7.0, -6.0]], "dev": [0.23717790878457073]}, "851": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.20534588934292858]}, "852": {"P": [[-6.0, 6.0, 6.0], [5.0, -6.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.167640995367452]}, "853": {"P": [[-6.0, 6.0, 7.0], [6.0, -5.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.20513184669341364]}, "854": {"P": [[-7.0, 7.0, 7.0], [5.0, -6.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.23671449813243955]}, "855": {"P": [[-5.0, 5.0, 5.0], [6.0, -7.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.28974779494540204]}, "856": {"P": [[-6.0, 7.0, 5.0], [7.0, -5.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.2643962620495004]}, "857": {"P": [[-5.0, 6.0, 5.0], [6.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.20473242801531949]}, "858": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.16710282027920587]}, "859": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.20454693077819167]}, "860": {"P": [[-7.0, 8.0, 5.0], [5.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.26394468794702758]}, "861": {"P": [[-7.0, 7.0, 7.0], [4.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.28901700972888977]}, "862": {"P": [[-5.0, 6.0, 7.0], [6.0, -7.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.2637301852270173]}, "863": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.20420405268762284]}, "864": {"P": [[-6.0, 6.0, 6.0], [6.0, -6.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.0]}, "865": {"P": [[-5.0, 5.0, 6.0], [6.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.20404654684786738]}, "866": {"P": [[-7.0, 6.0, 7.0], [5.0, -7.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.26332349689792561]}, "867": {"P": [[-8.0, 6.0, 7.0], [5.0, -5.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.28834872773535125]}, "868": {"P": [[-8.0, 6.0, 6.0], [6.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.28824333561323057]}, "869": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [7.0, 5.0, -6.0]], "dev": [0.20375908465145645]}, "870": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.16633052638370932]}, "871": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.20362899980572477]}, "872": {"P": [[-8.0, 6.0, 6.0], [5.0, -5.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.2878386623621465]}, "873": {"P": [[-7.0, 5.0, 6.0], [5.0, -5.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.28774168869201533]}, "874": {"P": [[-5.0, 6.0, 6.0], [7.0, -7.0, 5.0], [7.0, 5.0, -5.0]], "dev": [0.26259797405222496]}, "875": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.26251539646013794]}, "876": {"P": [[-6.0, 6.0, 6.0], [7.0, -5.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.20334306687027109]}, "877": {"P": [[-7.0, 6.0, 7.0], [6.0, -4.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.26235557990998715]}, "878": {"P": [[-7.0, 5.0, 7.0], [6.0, -7.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.26227832822311858]}, "879": {"P": [[-7.0, 5.0, 7.0], [5.0, -5.0, 6.0], [6.0, 7.0, -5.0]], "dev": [0.2871946326904693]}, "880": {"P": [[-8.0, 6.0, 6.0], [6.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.28710919996954637]}, "881": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.23444465332908726]}, "882": {"P": [[-6.0, 5.0, 7.0], [6.0, -7.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.20307283303828497]}, "883": {"P": [[-7.0, 5.0, 7.0], [6.0, -5.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.234333752048306]}, "884": {"P": [[-8.0, 6.0, 6.0], [5.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.28678366494134316]}, "885": {"P": [[-4.0, 5.0, 6.0], [7.0, -7.0, 5.0], [6.0, 7.0, -7.0]], "dev": [0.28670630105940947]}, "886": {"P": [[-5.0, 5.0, 6.0], [8.0, -6.0, 5.0], [5.0, 7.0, -7.0]], "dev": [0.2866305334993447]}, "887": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 7.0], [6.0, 5.0, -4.0]], "dev": [0.30945482873767222]}, "888": {"P": [[-7.0, 7.0, 5.0], [5.0, -5.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.2340896235255002]}, "889": {"P": [[-6.0, 5.0, 8.0], [7.0, -6.0, 5.0], [4.0, 7.0, -5.0]], "dev": [0.30928875279561946]}, "890": {"P": [[-7.0, 6.0, 5.0], [5.0, -5.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.286343310313668]}, "891": {"P": [[-5.0, 7.0, 5.0], [7.0, -6.0, 7.0], [5.0, 6.0, -4.0]], "dev": [0.32784740482158642]}, "892": {"P": [[-6.0, 4.0, 7.0], [6.0, -5.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.32766633572830278]}, "893": {"P": [[-7.0, 6.0, 6.0], [4.0, -5.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.3089743439726052]}, "894": {"P": [[-8.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.28608116394396643]}, "895": {"P": [[-7.0, 6.0, 6.0], [5.0, -4.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.3088259254428663]}, "896": {"P": [[-7.0, 6.0, 8.0], [7.0, -6.0, 6.0], [6.0, 4.0, -5.0]], "dev": [0.30552403708833176]}, "897": {"P": [[-7.0, 5.0, 6.0], [7.0, -8.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.30535494205032265]}, "898": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [7.0, 4.0, -6.0]], "dev": [0.30518744404620451]}, "899": {"P": [[-6.0, 7.0, 7.0], [6.0, -6.0, 7.0], [5.0, 5.0, -4.0]], "dev": [0.305021538645809]}, "900": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.30485722141840343]}, "901": {"P": [[-7.0, 6.0, 6.0], [8.0, -7.0, 6.0], [7.0, 4.0, -5.0]], "dev": [0.30469448793272352]}, "902": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 5.0], [8.0, 5.0, -7.0]], "dev": [0.30453333375700858]}, "903": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 7.0], [5.0, 5.0, -6.0]], "dev": [0.28134912537383078]}, "904": {"P": [[-7.0, 5.0, 6.0], [8.0, -7.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.30421574560615849]}, "905": {"P": [[-8.0, 7.0, 7.0], [5.0, -5.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.28104427377548374]}, "906": {"P": [[-8.0, 8.0, 6.0], [6.0, -7.0, 6.0], [5.0, 6.0, -6.0]], "dev": [0.28089434373538774]}, "907": {"P": [[-6.0, 7.0, 7.0], [5.0, -5.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.28074607137265667]}, "908": {"P": [[-7.0, 6.0, 8.0], [7.0, -7.0, 6.0], [5.0, 5.0, -6.0]], "dev": [0.30359932597980716]}, "909": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 8.0], [6.0, 5.0, -7.0]], "dev": [0.30344910285039317]}, "910": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.25525974858361067]}, "911": {"P": [[-7.0, 6.0, 8.0], [6.0, -5.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.25512339378783677]}, "912": {"P": [[-5.0, 5.0, 6.0], [7.0, -6.0, 7.0], [7.0, 5.0, -6.0]], "dev": [0.25498880462664286]}, "913": {"P": [[-7.0, 6.0, 6.0], [6.0, -5.0, 5.0], [8.0, 6.0, -7.0]], "dev": [0.2548559762020588]}, "914": {"P": [[-5.0, 5.0, 6.0], [7.0, -5.0, 5.0], [7.0, 7.0, -6.0]], "dev": [0.27975419063131951]}, "915": {"P": [[-7.0, 5.0, 8.0], [6.0, -5.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.27961901278081097]}, "916": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 7.0], [7.0, 4.0, -6.0]], "dev": [0.25446800621926036]}, "917": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 5.0], [7.0, 7.0, -7.0]], "dev": [0.22658663344753141]}, "918": {"P": [[-6.0, 6.0, 5.0], [8.0, -7.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.22646873179363108]}, "919": {"P": [[-6.0, 6.0, 7.0], [6.0, -5.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.25409570559332617]}, "920": {"P": [[-8.0, 8.0, 6.0], [7.0, -6.0, 5.0], [5.0, 6.0, -6.0]], "dev": [0.27896726861233939]}, "921": {"P": [[-7.0, 6.0, 8.0], [5.0, -6.0, 5.0], [6.0, 7.0, -6.0]], "dev": [0.30176557669670867]}, "922": {"P": [[-7.0, 5.0, 7.0], [7.0, -7.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.22601618276061325]}, "923": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.19427763533480732]}, "924": {"P": [[-7.0, 6.0, 7.0], [5.0, -6.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.19417846551239246]}, "925": {"P": [[-6.0, 5.0, 7.0], [7.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.25339757640438831]}, "926": {"P": [[-6.0, 5.0, 7.0], [7.0, -6.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.25328718744802159]}, "927": {"P": [[-7.0, 5.0, 7.0], [8.0, -7.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.27812158237273549]}, "928": {"P": [[-8.0, 6.0, 6.0], [7.0, -6.0, 5.0], [6.0, 7.0, -7.0]], "dev": [0.27800704652148378]}, "929": {"P": [[-7.0, 6.0, 7.0], [5.0, -5.0, 6.0], [7.0, 6.0, -6.0]], "dev": [0.1937147173840888]}, "930": {"P": [[-6.0, 6.0, 6.0], [7.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.15578248930478072]}, "931": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 6.0], [7.0, 7.0, -7.0]], "dev": [0.22510796047690018]}, "932": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.27756440639168317]}, "933": {"P": [[-7.0, 6.0, 8.0], [6.0, -7.0, 5.0], [5.0, 7.0, -6.0]], "dev": [0.30029670196622849]}, "934": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 5.0], [6.0, 7.0, -6.0]], "dev": [0.25246453376554834]}, "935": {"P": [[-7.0, 6.0, 6.0], [7.0, -6.0, 5.0], [6.0, 7.0, -7.0]], "dev": [0.19322803034975566]}, "936": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.1047578055687048]}, "937": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.19308250750168335]}, "938": {"P": [[-7.0, 6.0, 6.0], [5.0, -7.0, 8.0], [5.0, 7.0, -6.0]], "dev": [0.25209298498171884]}, "939": {"P": [[-8.0, 7.0, 7.0], [5.0, -7.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.2996403666031206]}, "940": {"P": [[-7.0, 7.0, 6.0], [6.0, -5.0, 7.0], [5.0, 6.0, -5.0]], "dev": [0.25191701236198827]}, "941": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 7.0], [7.0, 5.0, -5.0]], "dev": [0.22427346617073418]}, "942": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.15505865841044242]}, "943": {"P": [[-7.0, 6.0, 6.0], [5.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.22412815551042062]}, "944": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 6.0], [6.0, 6.0, -4.0]], "dev": [0.27638275409851037]}, "945": {"P": [[-7.0, 5.0, 8.0], [6.0, -5.0, 6.0], [5.0, 7.0, -7.0]], "dev": [0.27629401275069471]}, "946": {"P": [[-7.0, 6.0, 6.0], [5.0, -7.0, 8.0], [7.0, 5.0, -6.0]], "dev": [0.25142780885904908]}, "947": {"P": [[-6.0, 5.0, 8.0], [7.0, -6.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.25135186667629611]}, "948": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.19242850355011029]}, "949": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.19238114512320451]}, "950": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.22367509458330376]}, "951": {"P": [[-6.0, 7.0, 6.0], [4.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.29847912556209411]}, "952": {"P": [[-7.0, 5.0, 7.0], [6.0, -5.0, 7.0], [5.0, 7.0, -7.0]], "dev": [0.29839128775632434]}, "953": {"P": [[-7.0, 5.0, 7.0], [6.0, -5.0, 6.0], [6.0, 7.0, -5.0]], "dev": [0.27563677727480712]}, "954": {"P": [[-8.0, 6.0, 6.0], [5.0, -6.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.27556113870580989]}, "955": {"P": [[-7.0, 5.0, 7.0], [6.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.22340354802097909]}, "956": {"P": [[-8.0, 6.0, 6.0], [6.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.27541415335632841]}, "957": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 6.0], [5.0, 7.0, -7.0]], "dev": [0.27534279709700288]}, "958": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 8.0], [7.0, 5.0, -5.0]], "dev": [0.27527285879521646]}, "959": {"P": [[-6.0, 5.0, 6.0], [7.0, -5.0, 6.0], [5.0, 8.0, -7.0]], "dev": [0.29781407966761403]}, "960": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.25050685844667242]}, "961": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.25045261702451965]}, "962": {"P": [[-7.0, 7.0, 5.0], [5.0, -5.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.25039988649965161]}, "963": {"P": [[-8.0, 5.0, 7.0], [6.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.29751344789853351]}, "964": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 7.0], [4.0, 8.0, -6.0]], "dev": [0.29744156453309856]}, "965": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 6.0], [5.0, 7.0, -5.0]], "dev": [0.27482259540112736]}, "966": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 7.0], [5.0, 6.0, -7.0]], "dev": [0.32910661173462863]}, "967": {"P": [[-7.0, 7.0, 5.0], [6.0, -5.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.27470644023239921]}, "968": {"P": [[-7.0, 5.0, 6.0], [7.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.30857360920156718]}, "969": {"P": [[-7.0, 5.0, 7.0], [7.0, -6.0, 6.0], [5.0, 7.0, -4.0]], "dev": [0.31801864496408794]}, "970": {"P": [[-8.0, 8.0, 7.0], [7.0, -7.0, 6.0], [5.0, 5.0, -5.0]], "dev": [0.30825459493124485]}, "971": {"P": [[-8.0, 7.0, 8.0], [5.0, -6.0, 7.0], [6.0, 5.0, -7.0]], "dev": [0.32828749133292773]}, "972": {"P": [[-8.0, 8.0, 5.0], [5.0, -5.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.29691297091767027]}, "973": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 7.0], [6.0, 4.0, -5.0]], "dev": [0.30778624848615466]}, "974": {"P": [[-8.0, 6.0, 6.0], [5.0, -5.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.29679357221637803]}, "975": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.28588589754362775]}, "976": {"P": [[-6.0, 7.0, 6.0], [7.0, -5.0, 6.0], [6.0, 6.0, -4.0]], "dev": [0.30733002869550613]}, "977": {"P": [[-8.0, 7.0, 8.0], [5.0, -6.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.28559370343108487]}, "978": {"P": [[-4.0, 6.0, 6.0], [6.0, -5.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.30703257291777108]}, "979": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 5.0], [8.0, 5.0, -7.0]], "dev": [0.2853071588964548]}, "980": {"P": [[-7.0, 7.0, 5.0], [7.0, -7.0, 5.0], [7.0, 7.0, -7.0]], "dev": [0.26181977560432318]}, "981": {"P": [[-7.0, 6.0, 8.0], [7.0, -5.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.28502623512469133]}, "982": {"P": [[-6.0, 6.0, 7.0], [7.0, -5.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.26154998344533237]}, "983": {"P": [[-7.0, 5.0, 6.0], [7.0, -6.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.28475090325956076]}, "984": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.26128617174551583]}, "985": {"P": [[-7.0, 7.0, 8.0], [6.0, -5.0, 6.0], [5.0, 6.0, -5.0]], "dev": [0.28448113440483502]}, "986": {"P": [[-6.0, 6.0, 7.0], [4.0, -6.0, 8.0], [5.0, 8.0, -6.0]], "dev": [0.30589567411792273]}, "987": {"P": [[-7.0, 6.0, 5.0], [7.0, -7.0, 6.0], [7.0, 7.0, -7.0]], "dev": [0.26090160140559859]}, "988": {"P": [[-7.0, 6.0, 8.0], [6.0, -5.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.23516651863620253]}, "989": {"P": [[-6.0, 6.0, 7.0], [7.0, -6.0, 7.0], [6.0, 5.0, -5.0]], "dev": [0.23504748932337108]}, "990": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.23493006280083026]}, "991": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 5.0], [7.0, 5.0, -7.0]], "dev": [0.26040948959477495]}, "992": {"P": [[-8.0, 8.0, 6.0], [5.0, -7.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.28358033403672267]}, "993": {"P": [[-7.0, 6.0, 7.0], [5.0, -7.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.2834571098359645]}, "994": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.20574079874825155]}, "995": {"P": [[-7.0, 7.0, 6.0], [5.0, -6.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.23436683014837664]}, "996": {"P": [[-5.0, 5.0, 6.0], [7.0, -6.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.23425893506207063]}, "997": {"P": [[-7.0, 6.0, 6.0], [5.0, -5.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.28297772158689172]}, "998": {"P": [[-6.0, 6.0, 5.0], [7.0, -5.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.28286123346047753]}, "999": {"P": [[-7.0, 5.0, 7.0], [8.0, -7.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.25949514387270556]}, "1000": {"P": [[-7.0, 6.0, 7.0], [6.0, -5.0, 5.0], [7.0, 7.0, -6.0]], "dev": [0.23384305583720308]}, "1001": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.17162211284194223]}, "1002": {"P": [[-6.0, 6.0, 7.0], [6.0, -5.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.20495683204426979]}, "1003": {"P": [[-6.0, 7.0, 7.0], [6.0, -5.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.23354751644217375]}, "1004": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.25897028168994224]}, "1005": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [5.0, 8.0, -6.0]], "dev": [0.28208302825831488]}, "1006": {"P": [[-6.0, 6.0, 7.0], [8.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.23326588312338598]}, "1007": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.17114060289808122]}, "1008": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.1293507256040077]}, "1009": {"P": [[-7.0, 8.0, 5.0], [7.0, -7.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.2329980420916144]}, "1010": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.258386956619784]}, "1011": {"P": [[-8.0, 7.0, 6.0], [8.0, -6.0, 5.0], [5.0, 7.0, -5.0]], "dev": [0.30287194925979044]}, "1012": {"P": [[-6.0, 5.0, 7.0], [5.0, -6.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.23274387870775828]}, "1013": {"P": [[-7.0, 5.0, 7.0], [6.0, -6.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.20406004485311663]}, "1014": {"P": [[-7.0, 6.0, 7.0], [6.0, -7.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.12901727709750938]}, "1015": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.20391910521770271]}, "1016": {"P": [[-7.0, 6.0, 6.0], [5.0, -6.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.23242607086379771]}, "1017": {"P": [[-6.0, 7.0, 5.0], [5.0, -5.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.25776946904891695]}, "1018": {"P": [[-7.0, 5.0, 7.0], [5.0, -6.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.25768672667613957]}, "1019": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [8.0, 5.0, -6.0]], "dev": [0.23220337162414448]}, "1020": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.12877653062384947]}, "1021": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.17029740322014097]}, "1022": {"P": [[-6.0, 5.0, 7.0], [7.0, -6.0, 6.0], [6.0, 7.0, -5.0]], "dev": [0.23199396215376511]}, "1023": {"P": [[-5.0, 7.0, 7.0], [7.0, -6.0, 5.0], [7.0, 5.0, -6.0]], "dev": [0.30169376802307057]}, "1024": {"P": [[-5.0, 6.0, 6.0], [6.0, -8.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.28029088545515962]}, "1025": {"P": [[-7.0, 7.0, 5.0], [6.0, -7.0, 7.0], [8.0, 5.0, -6.0]], "dev": [0.25714526715740865]}, "1026": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.20326279153246718]}, "1027": {"P": [[-7.0, 6.0, 6.0], [6.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.17005322679351792]}, "1028": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.23161453997737758]}, "1029": {"P": [[-8.0, 6.0, 7.0], [5.0, -5.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.25686516263150982]}, "1030": {"P": [[-7.0, 5.0, 8.0], [5.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.27981921691272887]}, "1031": {"P": [[-8.0, 6.0, 7.0], [7.0, -4.0, 5.0], [6.0, 7.0, -6.0]], "dev": [0.32085503221493267]}, "1032": {"P": [[-7.0, 6.0, 7.0], [5.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.231390392601976]}, "1033": {"P": [[-5.0, 6.0, 6.0], [8.0, -7.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.23133791519439367]}, "1034": {"P": [[-7.0, 6.0, 6.0], [6.0, -7.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.23128685264707557]}, "1035": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.27945971572174827]}, "1036": {"P": [[-7.0, 5.0, 7.0], [7.0, -7.0, 7.0], [5.0, 7.0, -5.0]], "dev": [0.25642533499626802]}, "1037": {"P": [[-7.0, 5.0, 8.0], [7.0, -6.0, 5.0], [5.0, 8.0, -8.0]], "dev": [0.32033967122386825]}, "1038": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 6.0], [5.0, 8.0, -6.0]], "dev": [0.25631128523548741]}, "1039": {"P": [[-8.0, 6.0, 7.0], [5.0, -5.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.25625617618171775]}, "1040": {"P": [[-8.0, 6.0, 6.0], [6.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.25620233899048694]}, "1041": {"P": [[-6.0, 6.0, 7.0], [5.0, -7.0, 7.0], [8.0, 5.0, -6.0]], "dev": [0.25614976964303332]}, "1042": {"P": [[-6.0, 4.0, 8.0], [7.0, -7.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.3001717761818774]}, "1043": {"P": [[-8.0, 6.0, 7.0], [5.0, -5.0, 7.0], [5.0, 8.0, -7.0]], "dev": [0.30010296789316887]}, "1044": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.27888794364073416]}, "1045": {"P": [[-8.0, 5.0, 8.0], [5.0, -7.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.31971247056597685]}, "1046": {"P": [[-5.0, 7.0, 6.0], [7.0, -7.0, 6.0], [7.0, 5.0, -7.0]], "dev": [0.25590579978710304]}, "1047": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 6.0], [5.0, 8.0, -7.0]], "dev": [0.27871850116884322]}, "1048": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 7.0], [4.0, 8.0, -6.0]], "dev": [0.29977544447053511]}, "1049": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 8.0], [7.0, 5.0, -5.0]], "dev": [0.29971321958606062]}, "1050": {"P": [[-8.0, 5.0, 8.0], [6.0, -6.0, 6.0], [5.0, 8.0, -6.0]], "dev": [0.29965208004447147]}, "1051": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.27850875249724361]}, "1052": {"P": [[-6.0, 4.0, 8.0], [7.0, -8.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.29953304342806686]}, "1053": {"P": [[-8.0, 6.0, 7.0], [5.0, -7.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.29947513957856148]}, "1054": {"P": [[-7.0, 6.0, 7.0], [7.0, -5.0, 6.0], [4.0, 8.0, -6.0]], "dev": [0.29941830752264292]}, "1055": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 6.0], [6.0, 7.0, -8.0]], "dev": [0.30287336963970651]}, "1056": {"P": [[-6.0, 7.0, 8.0], [5.0, -5.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.30273581808132682]}, "1057": {"P": [[-7.0, 5.0, 8.0], [7.0, -6.0, 7.0], [7.0, 5.0, -7.0]], "dev": [0.28182321179174902]}, "1058": {"P": [[-7.0, 5.0, 6.0], [8.0, -7.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.30246417619944233]}, "1059": {"P": [[-8.0, 6.0, 7.0], [8.0, -7.0, 6.0], [7.0, 5.0, -7.0]], "dev": [0.2815611528262178]}, "1060": {"P": [[-8.0, 8.0, 6.0], [8.0, -7.0, 5.0], [6.0, 6.0, -5.0]], "dev": [0.28143194435853142]}, "1061": {"P": [[-8.0, 8.0, 7.0], [8.0, -7.0, 5.0], [5.0, 6.0, -5.0]], "dev": [0.30206532493223121]}, "1062": {"P": [[-5.0, 6.0, 6.0], [8.0, -6.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.28117715508335744]}, "1063": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 8.0], [6.0, 5.0, -6.0]], "dev": [0.30180513281443738]}, "1064": {"P": [[-7.0, 7.0, 5.0], [8.0, -7.0, 5.0], [7.0, 7.0, -7.0]], "dev": [0.25851752119094568]}, "1065": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.25839829650504681]}, "1066": {"P": [[-7.0, 6.0, 7.0], [5.0, -7.0, 7.0], [6.0, 8.0, -8.0]], "dev": [0.25828035211684625]}, "1067": {"P": [[-6.0, 7.0, 7.0], [7.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.25816368500584341]}, "1068": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 5.0], [8.0, 6.0, -7.0]], "dev": [0.25804829214662156]}, "1069": {"P": [[-7.0, 5.0, 7.0], [8.0, -7.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.28032318059334393]}, "1070": {"P": [[-8.0, 7.0, 7.0], [6.0, -8.0, 8.0], [6.0, 5.0, -6.0]], "dev": [0.28020594422532474]}, "1071": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [7.0, 7.0, -7.0]], "dev": [0.23319147190163783]}, "1072": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.23308559958216296]}, "1073": {"P": [[-6.0, 7.0, 7.0], [6.0, -6.0, 7.0], [5.0, 7.0, -5.0]], "dev": [0.23298109793993804]}, "1074": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.23287796373785569]}, "1075": {"P": [[-7.0, 7.0, 5.0], [8.0, -7.0, 6.0], [8.0, 5.0, -7.0]], "dev": [0.2796374242317573]}, "1076": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.25717065769940045]}, "1077": {"P": [[-5.0, 6.0, 7.0], [6.0, -5.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.25706659617319105]}, "1078": {"P": [[-7.0, 5.0, 7.0], [7.0, -7.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.20509173851906384]}, "1079": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 6.0], [6.0, 6.0, -7.0]], "dev": [0.2050005833068255]}, "1080": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.20491093285734149]}, "1081": {"P": [[-7.0, 6.0, 6.0], [8.0, -7.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.25666275665231425]}, "1082": {"P": [[-8.0, 7.0, 8.0], [6.0, -7.0, 6.0], [7.0, 5.0, -6.0]], "dev": [0.25656488300318658]}, "1083": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 5.0], [5.0, 8.0, -7.0]], "dev": [0.27878831531841036]}, "1084": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.23192111231282653]}, "1085": {"P": [[-7.0, 7.0, 7.0], [5.0, -6.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.17286377587936039]}, "1086": {"P": [[-6.0, 6.0, 6.0], [7.0, -6.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.17278950982120031]}, "1087": {"P": [[-8.0, 7.0, 7.0], [7.0, -5.0, 5.0], [7.0, 6.0, -7.0]], "dev": [0.23166016694592925]}, "1088": {"P": [[-8.0, 7.0, 7.0], [7.0, -5.0, 5.0], [6.0, 7.0, -5.0]], "dev": [0.27829488134835195]}, "1089": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 8.0], [7.0, 5.0, -6.0]], "dev": [0.25591398642536656]}, "1090": {"P": [[-7.0, 6.0, 7.0], [6.0, -5.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.25582585230620358]}, "1091": {"P": [[-6.0, 7.0, 6.0], [7.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.2040230591133925]}, "1092": {"P": [[-7.0, 6.0, 7.0], [6.0, -7.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.1335425609423308]}, "1093": {"P": [[-6.0, 5.0, 7.0], [7.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.20388076311411621]}, "1094": {"P": [[-8.0, 7.0, 7.0], [8.0, -6.0, 5.0], [6.0, 6.0, -7.0]], "dev": [0.25548531870109453]}, "1095": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.2554031703456921]}, "1096": {"P": [[-8.0, 6.0, 8.0], [6.0, -5.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.2775639380395169]}, "1097": {"P": [[-7.0, 5.0, 7.0], [6.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.23087571331228698]}, "1098": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.13325515755902934]}, "1099": {"P": [[-7.0, 6.0, 7.0], [6.0, -6.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.1332147280432342]}, "1100": {"P": [[-8.0, 6.0, 8.0], [6.0, -5.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.23066563275352023]}, "1101": {"P": [[-8.0, 7.0, 8.0], [5.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.27714312150146303]}, "1102": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.2548612120529366]}, "1103": {"P": [[-8.0, 7.0, 6.0], [5.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.2547884773042578]}, "1104": {"P": [[-6.0, 6.0, 7.0], [7.0, -8.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.20320122460300002]}, "1105": {"P": [[-7.0, 6.0, 7.0], [6.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.13301645262084513]}, "1106": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.20309616444322018]}, "1107": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.25450913130859826]}, "1108": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.2544421771789791]}, "1109": {"P": [[-8.0, 7.0, 6.0], [7.0, -5.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.27652638290703579]}, "1110": {"P": [[-7.0, 6.0, 6.0], [7.0, -5.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.27645412411378117]}, "1111": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.20285799442530508]}, "1112": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.20281452508614997]}, "1113": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 7.0], [6.0, 6.0, -5.0]], "dev": [0.27624372179228224]}, "1114": {"P": [[-6.0, 7.0, 5.0], [7.0, -5.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.27617570255388374]}, "1115": {"P": [[-6.0, 7.0, 7.0], [7.0, -5.0, 5.0], [5.0, 8.0, -7.0]], "dev": [0.27610873584038925]}, "1116": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.25394755333152053]}, "1117": {"P": [[-7.0, 5.0, 8.0], [7.0, -6.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.25389080358760407]}, "1118": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.20258252237671281]}, "1119": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 7.0], [5.0, 8.0, -6.0]], "dev": [0.2537806543809496]}, "1120": {"P": [[-8.0, 7.0, 6.0], [6.0, -7.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.25372724850375888]}, "1121": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 8.0], [5.0, 8.0, -7.0]], "dev": [0.29614496920009148]}, "1122": {"P": [[-8.0, 7.0, 6.0], [6.0, -6.0, 8.0], [6.0, 6.0, -5.0]], "dev": [0.27566919205114465]}, "1123": {"P": [[-8.0, 5.0, 8.0], [5.0, -7.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.31509411125654957]}, "1124": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.25352467491246378]}, "1125": {"P": [[-6.0, 5.0, 8.0], [6.0, -8.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.25347677792129153]}, "1126": {"P": [[-8.0, 5.0, 7.0], [6.0, -6.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.3148797835167762]}, "1127": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 8.0], [5.0, 7.0, -5.0]], "dev": [0.27538615972470498]}, "1128": {"P": [[-8.0, 6.0, 7.0], [6.0, -5.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.29569430703390337]}, "1129": {"P": [[-9.0, 7.0, 7.0], [6.0, -6.0, 5.0], [8.0, 7.0, -8.0]], "dev": [0.33053653512273362]}, "1130": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [5.0, 8.0, -6.0]], "dev": [0.25325361045890665]}, "1131": {"P": [[-8.0, 8.0, 5.0], [6.0, -5.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.29551555690931647]}, "1132": {"P": [[-7.0, 5.0, 8.0], [7.0, -7.0, 6.0], [6.0, 7.0, -5.0]], "dev": [0.25317189813809193]}, "1133": {"P": [[-7.0, 8.0, 8.0], [6.0, -5.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.31191855484245057]}, "1134": {"P": [[-8.0, 7.0, 6.0], [7.0, -7.0, 5.0], [8.0, 7.0, -8.0]], "dev": [0.29261499675842545]}, "1135": {"P": [[-7.0, 8.0, 5.0], [9.0, -7.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.31165140023603283]}, "1136": {"P": [[-8.0, 8.0, 8.0], [5.0, -6.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.29235568110772819]}, "1137": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 6.0], [6.0, 5.0, -5.0]], "dev": [0.31138816811370229]}, "1138": {"P": [[-6.0, 6.0, 7.0], [8.0, -6.0, 7.0], [7.0, 5.0, -5.0]], "dev": [0.29210047826251484]}, "1139": {"P": [[-8.0, 7.0, 8.0], [7.0, -5.0, 6.0], [7.0, 5.0, -5.0]], "dev": [0.29197441353741743]}, "1140": {"P": [[-7.0, 8.0, 5.0], [8.0, -7.0, 5.0], [7.0, 7.0, -6.0]], "dev": [0.27134979997195702]}, "1141": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [6.0, 5.0, -7.0]], "dev": [0.29172534626443114]}, "1142": {"P": [[-8.0, 7.0, 8.0], [6.0, -5.0, 5.0], [8.0, 6.0, -7.0]], "dev": [0.27110895754760467]}, "1143": {"P": [[-6.0, 6.0, 7.0], [7.0, -5.0, 5.0], [9.0, 6.0, -7.0]], "dev": [0.29148034692599134]}, "1144": {"P": [[-8.0, 7.0, 7.0], [8.0, -6.0, 5.0], [8.0, 5.0, -6.0]], "dev": [0.27087241967133496]}, "1145": {"P": [[-6.0, 6.0, 7.0], [7.0, -5.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.29123939754680717]}, "1146": {"P": [[-9.0, 8.0, 7.0], [7.0, -8.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.29112043597063492]}, "1147": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.27052564307423788]}, "1148": {"P": [[-8.0, 8.0, 6.0], [7.0, -7.0, 5.0], [7.0, 7.0, -7.0]], "dev": [0.24825613196968677]}, "1149": {"P": [[-6.0, 6.0, 7.0], [6.0, -5.0, 6.0], [9.0, 6.0, -7.0]], "dev": [0.27029978488066869]}, "1150": {"P": [[-6.0, 6.0, 8.0], [6.0, -5.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.24803927629053332]}, "1151": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 5.0], [8.0, 7.0, -8.0]], "dev": [0.27007816577933275]}, "1152": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.24782696262606241]}, "1153": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 5.0], [7.0, 8.0, -7.0]], "dev": [0.26986076697937006]}, "1154": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 6.0], [6.0, 8.0, -8.0]], "dev": [0.24761917127961669]}, "1155": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.22320278762345372]}, "1156": {"P": [[-7.0, 8.0, 7.0], [7.0, -6.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.22310548309339553]}, "1157": {"P": [[-6.0, 7.0, 7.0], [6.0, -5.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.22300940342208067]}, "1158": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.24721707636899623]}, "1159": {"P": [[-9.0, 7.0, 7.0], [7.0, -7.0, 6.0], [8.0, 5.0, -6.0]], "dev": [0.28966463787715913]}, "1160": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 6.0], [6.0, 8.0, -8.0]], "dev": [0.26913283387212578]}, "1161": {"P": [[-7.0, 6.0, 8.0], [6.0, -5.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.26903299765467426]}, "1162": {"P": [[-7.0, 6.0, 6.0], [7.0, -7.0, 6.0], [7.0, 8.0, -8.0]], "dev": [0.22254728544427133]}, "1163": {"P": [[-7.0, 8.0, 6.0], [7.0, -7.0, 6.0], [6.0, 7.0, -5.0]], "dev": [0.22245849930396808]}, "1164": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.1950967300207867]}, "1165": {"P": [[-7.0, 6.0, 9.0], [6.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.26864394350479653]}, "1166": {"P": [[-6.0, 7.0, 5.0], [7.0, -5.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.26854924075697023]}, "1167": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 5.0, -7.0]], "dev": [0.24637738626730474]}, "1168": {"P": [[-7.0, 8.0, 6.0], [6.0, -7.0, 8.0], [5.0, 7.0, -6.0]], "dev": [0.22203260818483894]}, "1169": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.19470144582933524]}, "1170": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.16288741106580315]}, "1171": {"P": [[-6.0, 6.0, 7.0], [7.0, -6.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.22179140746786827]}, "1172": {"P": [[-5.0, 6.0, 6.0], [7.0, -8.0, 7.0], [6.0, 8.0, -8.0]], "dev": [0.24594926621650948]}, "1173": {"P": [[-8.0, 7.0, 6.0], [8.0, -8.0, 7.0], [5.0, 7.0, -5.0]], "dev": [0.28828125417015166]}, "1174": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 6.0], [6.0, 8.0, -8.0]], "dev": [0.24578559832912894]}, "1175": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.22148637600315152]}, "1176": {"P": [[-7.0, 7.0, 7.0], [6.0, -6.0, 6.0], [7.0, 7.0, -7.0]], "dev": [0.12287486929764632]}, "1177": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 6.0], [7.0, 6.0, -6.0]], "dev": [0.16244262229748221]}, "1178": {"P": [[-8.0, 7.0, 8.0], [6.0, -5.0, 6.0], [6.0, 7.0, -7.0]], "dev": [0.22126993258749375]}, "1179": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 8.0], [7.0, 7.0, -8.0]], "dev": [0.26741001422122573]}, "1180": {"P": [[-8.0, 6.0, 8.0], [6.0, -5.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.24532031738114826]}, "1181": {"P": [[-7.0, 6.0, 8.0], [5.0, -6.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.22106397407404896]}, "1182": {"P": [[-7.0, 8.0, 6.0], [7.0, -6.0, 7.0], [6.0, 6.0, -6.0]], "dev": [0.19382918907464144]}, "1183": {"P": [[-7.0, 6.0, 7.0], [6.0, -7.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.12255448504369738]}, "1184": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.19371462162196476]}, "1185": {"P": [[-7.0, 6.0, 8.0], [7.0, -6.0, 7.0], [5.0, 7.0, -6.0]], "dev": [0.22080554097672137]}, "1186": {"P": [[-8.0, 8.0, 6.0], [6.0, -7.0, 8.0], [7.0, 5.0, -7.0]], "dev": [0.26686610848074077]}, "1187": {"P": [[-5.0, 7.0, 7.0], [7.0, -6.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.2870830342480723]}, "1188": {"P": [[-7.0, 6.0, 7.0], [8.0, -7.0, 6.0], [6.0, 7.0, -8.0]], "dev": [0.22062375034237103]}, "1189": {"P": [[-6.0, 6.0, 7.0], [7.0, -6.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.16185568020536298]}, "1190": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.12233145006518027]}, "1191": {"P": [[-7.0, 5.0, 8.0], [7.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.22045218877171374]}, "1192": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 7.0], [6.0, 8.0, -8.0]], "dev": [0.2445036469193228]}, "1193": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.26636980658731563]}, "1194": {"P": [[-8.0, 8.0, 6.0], [7.0, -5.0, 6.0], [6.0, 7.0, -6.0]], "dev": [0.24438205585236669]}, "1195": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.22023921710338468]}, "1196": {"P": [[-6.0, 7.0, 6.0], [6.0, -7.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.16161354502039615]}, "1197": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.19309459667357043]}, "1198": {"P": [[-8.0, 6.0, 7.0], [6.0, -8.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.24415113111727346]}, "1199": {"P": [[-8.0, 7.0, 6.0], [5.0, -5.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.28619864469020351]}, "1200": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.24404175523111254]}, "1201": {"P": [[-7.0, 8.0, 5.0], [7.0, -5.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.26585982901323607]}, "1202": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.21990937999001092]}, "1203": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 7.0], [5.0, 8.0, -6.0]], "dev": [0.21986666673753619]}, "1204": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.21982504620160648]}, "1205": {"P": [[-7.0, 6.0, 6.0], [6.0, -8.0, 9.0], [6.0, 7.0, -5.0]], "dev": [0.30464825019877539]}, "1206": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.26557156320855246]}, "1207": {"P": [[-9.0, 7.0, 7.0], [6.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.28568015054521656]}, "1208": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.24364433365268551]}, "1209": {"P": [[-7.0, 7.0, 6.0], [5.0, -7.0, 9.0], [7.0, 6.0, -6.0]], "dev": [0.24359912130236933]}, "1210": {"P": [[-7.0, 6.0, 7.0], [6.0, -8.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.24355489236423292]}, "1211": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 7.0], [5.0, 8.0, -6.0]], "dev": [0.2435116441660114]}, "1212": {"P": [[-8.0, 8.0, 6.0], [5.0, -7.0, 9.0], [7.0, 5.0, -6.0]], "dev": [0.30418363275574989]}, "1213": {"P": [[-6.0, 8.0, 5.0], [8.0, -7.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.26520668590815966]}, "1214": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.28527205507132936]}, "1215": {"P": [[-8.0, 6.0, 7.0], [5.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.26511062454223622]}, "1216": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.24331002060094656]}, "1217": {"P": [[-8.0, 7.0, 6.0], [6.0, -6.0, 7.0], [5.0, 9.0, -6.0]], "dev": [0.3038762415677308]}, "1218": {"P": [[-5.0, 6.0, 7.0], [7.0, -8.0, 7.0], [8.0, 5.0, -7.0]], "dev": [0.26497328365740447]}, "1219": {"P": [[-9.0, 8.0, 7.0], [8.0, -8.0, 7.0], [6.0, 5.0, -6.0]], "dev": [0.31343769455448189]}, "1220": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 7.0], [5.0, 8.0, -5.0]], "dev": [0.30370147079118959]}, "1221": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [5.0, 9.0, -7.0]], "dev": [0.28490569353470846]}, "1222": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.28485671779307453]}, "1223": {"P": [[-9.0, 7.0, 7.0], [5.0, -6.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.2848085756802578]}, "1224": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 8.0], [6.0, 7.0, -5.0]], "dev": [0.26472266422861157]}, "1225": {"P": [[-8.0, 5.0, 8.0], [7.0, -7.0, 7.0], [5.0, 8.0, -6.0]], "dev": [0.28471478331455241]}, "1226": {"P": [[-8.0, 6.0, 7.0], [6.0, -8.0, 8.0], [6.0, 7.0, -5.0]], "dev": [0.28466912855051663]}, "1227": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 6.0], [7.0, 5.0, -7.0]], "dev": [0.2943395057338678]}, "1228": {"P": [[-8.0, 6.0, 8.0], [7.0, -6.0, 6.0], [9.0, 5.0, -8.0]], "dev": [0.29422337166727425]}, "1229": {"P": [[-5.0, 6.0, 7.0], [7.0, -5.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.29410811014357774]}, "1230": {"P": [[-8.0, 8.0, 6.0], [7.0, -7.0, 5.0], [7.0, 8.0, -8.0]], "dev": [0.27469483963325136]}, "1231": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.27458416363648308]}, "1232": {"P": [[-9.0, 8.0, 7.0], [7.0, -8.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.27447440343599466]}, "1233": {"P": [[-8.0, 6.0, 9.0], [7.0, -6.0, 6.0], [8.0, 5.0, -7.0]], "dev": [0.27436555717584804]}, "1234": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 5.0], [9.0, 6.0, -7.0]], "dev": [0.2742576229984533]}, "1235": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 6.0], [8.0, 5.0, -7.0]], "dev": [0.27415059904458294]}, "1236": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [9.0, 6.0, -8.0]], "dev": [0.27404448345338678]}, "1237": {"P": [[-8.0, 7.0, 8.0], [5.0, -5.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.27393927436240684]}, "1238": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.25309656356475596]}, "1239": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 5.0], [8.0, 7.0, -8.0]], "dev": [0.25299630795222788]}, "1240": {"P": [[-8.0, 6.0, 7.0], [8.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.2528970140020565]}, "1241": {"P": [[-8.0, 7.0, 6.0], [7.0, -9.0, 8.0], [6.0, 7.0, -7.0]], "dev": [0.27352746569608377]}, "1242": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [6.0, 6.0, -6.0]], "dev": [0.25270130328144291]}, "1243": {"P": [[-8.0, 7.0, 8.0], [5.0, -6.0, 6.0], [7.0, 8.0, -7.0]], "dev": [0.2733269518247467]}, "1244": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 5.0], [7.0, 8.0, -8.0]], "dev": [0.25250941575711022]}, "1245": {"P": [[-8.0, 8.0, 7.0], [7.0, -6.0, 5.0], [7.0, 7.0, -6.0]], "dev": [0.22984029461750791]}, "1246": {"P": [[-7.0, 7.0, 8.0], [5.0, -6.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.22975021441898907]}, "1247": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.22966116114263666]}, "1248": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.22957313270614588]}, "1249": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.2727467922265675]}, "1250": {"P": [[-6.0, 5.0, 8.0], [7.0, -6.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.27265319745185229]}, "1251": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 5.0], [7.0, 8.0, -7.0]], "dev": [0.25186769005884702]}, "1252": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.22923122552314373]}, "1253": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [6.0, 6.0, -7.0]], "dev": [0.20412889526621872]}, "1254": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.20405105048148067]}, "1255": {"P": [[-9.0, 8.0, 7.0], [7.0, -7.0, 6.0], [7.0, 6.0, -6.0]], "dev": [0.2289854531203307]}, "1256": {"P": [[-7.0, 8.0, 6.0], [6.0, -8.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.25143749545345101]}, "1257": {"P": [[-6.0, 5.0, 8.0], [8.0, -7.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.27202257584151612]}, "1258": {"P": [[-6.0, 7.0, 5.0], [7.0, -8.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.22874875258468641]}, "1259": {"P": [[-7.0, 8.0, 7.0], [6.0, -7.0, 8.0], [6.0, 6.0, -7.0]], "dev": [0.22867185842504267]}, "1260": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.17508804125373414]}, "1261": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.1750228741357826]}, "1262": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.20346836152256603]}, "1263": {"P": [[-8.0, 7.0, 9.0], [7.0, -6.0, 6.0], [5.0, 7.0, -6.0]], "dev": [0.27151588226466794]}, "1264": {"P": [[-8.0, 6.0, 9.0], [6.0, -5.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.27143443924119592]}, "1265": {"P": [[-7.0, 8.0, 7.0], [5.0, -5.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.25072144573013155]}, "1266": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.20320348816107425]}, "1267": {"P": [[-7.0, 7.0, 7.0], [7.0, -6.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.14051761593446052]}, "1268": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.17460195044633106]}, "1269": {"P": [[-7.0, 6.0, 8.0], [7.0, -5.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.25042694827763151]}, "1270": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.25035558366641764]}, "1271": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 6.0], [6.0, 9.0, -8.0]], "dev": [0.27088813695010677]}, "1272": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.22776239572149229]}, "1273": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.1743387068947474]}, "1274": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.094525999906610661]}, "1275": {"P": [[-7.0, 6.0, 7.0], [7.0, -7.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.17424205057813874]}, "1276": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 7.0], [6.0, 8.0, -8.0]], "dev": [0.22751580248348544]}, "1277": {"P": [[-9.0, 7.0, 8.0], [6.0, -8.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.2704526793745331]}, "1278": {"P": [[-6.0, 7.0, 7.0], [8.0, -8.0, 6.0], [7.0, 6.0, -5.0]], "dev": [0.24981688956665354]}, "1279": {"P": [[-6.0, 6.0, 7.0], [7.0, -6.0, 7.0], [7.0, 7.0, -9.0]], "dev": [0.24975354999203328]}, "1280": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.20241280101505871]}, "1281": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.13995622872585253]}, "1282": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.20231690182427367]}, "1283": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.22712122441657531]}, "1284": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.26998233434194624]}, "1285": {"P": [[-8.0, 7.0, 7.0], [6.0, -5.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.26991841974346192]}, "1286": {"P": [[-7.0, 7.0, 6.0], [6.0, -8.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.20213769618020319]}, "1287": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.1737642956573133]}, "1288": {"P": [[-6.0, 6.0, 7.0], [7.0, -8.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.17373229501728391]}, "1289": {"P": [[-8.0, 7.0, 8.0], [6.0, -7.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.22681995908902661]}, "1290": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.22677302680434747]}, "1291": {"P": [[-8.0, 8.0, 7.0], [5.0, -7.0, 8.0], [6.0, 7.0, -5.0]], "dev": [0.26955195123212305]}, "1292": {"P": [[-8.0, 6.0, 8.0], [8.0, -7.0, 5.0], [6.0, 8.0, -7.0]], "dev": [0.24900959543470289]}, "1293": {"P": [[-7.0, 8.0, 6.0], [6.0, -6.0, 7.0], [7.0, 7.0, -9.0]], "dev": [0.24895840810755013]}, "1294": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.20182908581987688]}, "1295": {"P": [[-7.0, 6.0, 8.0], [7.0, -7.0, 6.0], [7.0, 7.0, -5.0]], "dev": [0.24885858880445891]}, "1296": {"P": [[-7.0, 8.0, 5.0], [6.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.2488099526647603]}, "1297": {"P": [[-6.0, 5.0, 9.0], [7.0, -8.0, 7.0], [5.0, 8.0, -6.0]], "dev": [0.30604556062456495]}, "1298": {"P": [[-9.0, 7.0, 7.0], [6.0, -6.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.2691608711946879]}, "1299": {"P": [[-7.0, 6.0, 8.0], [6.0, -7.0, 7.0], [6.0, 8.0, -5.0]], "dev": [0.26910817255641917]}, "1300": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.22635451339640283]}, "1301": {"P": [[-8.0, 6.0, 7.0], [6.0, -7.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.2263176924375892]}, "1302": {"P": [[-8.0, 6.0, 8.0], [7.0, -7.0, 7.0], [6.0, 7.0, -5.0]], "dev": [0.22628177685842651]}, "1303": {"P": [[-8.0, 7.0, 6.0], [5.0, -6.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.26890522581999338]}, "1304": {"P": [[-7.0, 8.0, 6.0], [8.0, -6.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.2484511524333809]}, "1305": {"P": [[-8.0, 6.0, 7.0], [7.0, -7.0, 8.0], [5.0, 8.0, -6.0]], "dev": [0.26880843416597261]}, "1306": {"P": [[-8.0, 8.0, 6.0], [6.0, -5.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.28771099247815229]}, "1307": {"P": [[-6.0, 8.0, 7.0], [5.0, -7.0, 8.0], [8.0, 5.0, -6.0]], "dev": [0.30542907074152159]}, "1308": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.24829172739000105]}, "1309": {"P": [[-8.0, 9.0, 6.0], [9.0, -8.0, 6.0], [6.0, 6.0, -5.0]], "dev": [0.30904432179190061]}, "1310": {"P": [[-8.0, 7.0, 7.0], [7.0, -5.0, 6.0], [6.0, 8.0, -8.0]], "dev": [0.24821694994118909]}, "1311": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 8.0], [5.0, 8.0, -6.0]], "dev": [0.28745453348187255]}, "1312": {"P": [[-9.0, 6.0, 8.0], [7.0, -6.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.28740541807477127]}, "1313": {"P": [[-8.0, 6.0, 7.0], [8.0, -7.0, 6.0], [5.0, 9.0, -6.0]], "dev": [0.30509273695262834]}, "1314": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.26841101876741758]}, "1315": {"P": [[-9.0, 6.0, 7.0], [6.0, -7.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.30498613782550865]}, "1316": {"P": [[-8.0, 6.0, 7.0], [6.0, -6.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.26833108944561634]}, "1317": {"P": [[-9.0, 8.0, 6.0], [6.0, -7.0, 8.0], [6.0, 7.0, -5.0]], "dev": [0.3048822722711671]}, "1318": {"P": [[-7.0, 6.0, 7.0], [7.0, -9.0, 9.0], [6.0, 7.0, -8.0]], "dev": [0.29050322216283592]}, "1319": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 5.0, -7.0]], "dev": [0.29039494165881163]}, "1320": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 7.0], [6.0, 8.0, -5.0]], "dev": [0.28703831012709452]}, "1321": {"P": [[-7.0, 6.0, 8.0], [8.0, -6.0, 7.0], [8.0, 5.0, -6.0]], "dev": [0.27155067617508405]}, "1322": {"P": [[-9.0, 8.0, 8.0], [6.0, -7.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.27144713327811548]}, "1323": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 8.0], [6.0, 7.0, -5.0]], "dev": [0.28691235843682383]}, "1324": {"P": [[-9.0, 8.0, 8.0], [7.0, -6.0, 5.0], [8.0, 6.0, -7.0]], "dev": [0.27124245266304658]}, "1325": {"P": [[-8.0, 6.0, 7.0], [8.0, -7.0, 6.0], [9.0, 6.0, -8.0]], "dev": [0.27114131194154167]}, "1326": {"P": [[-9.0, 6.0, 9.0], [6.0, -7.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.28965830986289842]}, "1327": {"P": [[-9.0, 8.0, 7.0], [6.0, -8.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.27094142215150424]}, "1328": {"P": [[-8.0, 6.0, 7.0], [8.0, -8.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.25085355406482207]}, "1329": {"P": [[-7.0, 5.0, 8.0], [8.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.27074471119039467]}, "1330": {"P": [[-9.0, 6.0, 8.0], [7.0, -7.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.2706475439998916]}, "1331": {"P": [[-8.0, 7.0, 8.0], [5.0, -6.0, 7.0], [8.0, 7.0, -9.0]], "dev": [0.27055116698894477]}, "1332": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.25047726745021476]}, "1333": {"P": [[-8.0, 6.0, 7.0], [7.0, -6.0, 6.0], [9.0, 7.0, -8.0]], "dev": [0.2703607774562356]}, "1334": {"P": [[-8.0, 6.0, 8.0], [8.0, -8.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.25029416461162485]}, "1335": {"P": [[-5.0, 6.0, 6.0], [7.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.22849554555211532]}, "1336": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 5.0], [8.0, 8.0, -8.0]], "dev": [0.2501144052424305]}, "1337": {"P": [[-9.0, 7.0, 7.0], [7.0, -7.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.25002577539714504]}, "1338": {"P": [[-7.0, 6.0, 9.0], [6.0, -6.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.24993797666020198]}, "1339": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [7.0, 6.0, -7.0]], "dev": [0.22815448863691792]}, "1340": {"P": [[-7.0, 6.0, 7.0], [9.0, -7.0, 6.0], [8.0, 6.0, -6.0]], "dev": [0.24976486614305018]}, "1341": {"P": [[-9.0, 8.0, 7.0], [8.0, -6.0, 5.0], [7.0, 7.0, -6.0]], "dev": [0.26963052345745842]}, "1342": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 5.0, -6.0]], "dev": [0.22790809790238822]}, "1343": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.22782774953469795]}, "1344": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.20377430131729246]}, "1345": {"P": [[-6.0, 6.0, 7.0], [7.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.22766971545942458]}, "1346": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [7.0, 6.0, -6.0]], "dev": [0.22759202635202264]}, "1347": {"P": [[-6.0, 7.0, 7.0], [7.0, -6.0, 8.0], [8.0, 5.0, -6.0]], "dev": [0.26911536144173936]}, "1348": {"P": [[-8.0, 7.0, 8.0], [6.0, -5.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.24910534893729627]}, "1349": {"P": [[-9.0, 7.0, 7.0], [7.0, -8.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.24902658682909778]}, "1350": {"P": [[-7.0, 6.0, 8.0], [7.0, -6.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.17615759448618629]}, "1351": {"P": [[-8.0, 7.0, 8.0], [6.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.1760919298686611]}, "1352": {"P": [[-8.0, 7.0, 7.0], [8.0, -7.0, 6.0], [8.0, 6.0, -7.0]], "dev": [0.1760273639663554]}, "1353": {"P": [[-6.0, 7.0, 6.0], [7.0, -5.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.24871964073218517]}, "1354": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.2486449216781173]}, "1355": {"P": [[-8.0, 6.0, 9.0], [6.0, -5.0, 6.0], [7.0, 8.0, -7.0]], "dev": [0.26847122220287295]}, "1356": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [7.0, 8.0, -7.0]], "dev": [0.20293550084231118]}, "1357": {"P": [[-8.0, 7.0, 8.0], [7.0, -6.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.17572094358831222]}, "1358": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.14346905952119379]}, "1359": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.17560599431120638]}, "1360": {"P": [[-8.0, 8.0, 8.0], [6.0, -7.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.20268663185148184]}, "1361": {"P": [[-7.0, 5.0, 8.0], [6.0, -7.0, 9.0], [6.0, 8.0, -7.0]], "dev": [0.26801974507367637]}, "1362": {"P": [[-6.0, 6.0, 6.0], [7.0, -8.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.24807596649239205]}, "1363": {"P": [[-8.0, 7.0, 8.0], [6.0, -5.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.22640500482696946]}, "1364": {"P": [[-6.0, 7.0, 7.0], [8.0, -8.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.17533752022874871]}, "1365": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.14313144856666105]}, "1366": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.17523764490594218]}, "1367": {"P": [[-7.0, 5.0, 8.0], [8.0, -7.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.22616186842673114]}, "1368": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.24768250247178983]}, "1369": {"P": [[-8.0, 7.0, 8.0], [5.0, -6.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.26745931128023409]}, "1370": {"P": [[-7.0, 6.0, 7.0], [6.0, -8.0, 9.0], [8.0, 6.0, -7.0]], "dev": [0.22598840830597283]}, "1371": {"P": [[-7.0, 7.0, 8.0], [7.0, -8.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.17500658829238031]}, "1372": {"P": [[-7.0, 7.0, 7.0], [7.0, -7.0, 7.0], [7.0, 7.0, -7.0]], "dev": [7.6918507455342553e-16]}, "1373": {"P": [[-7.0, 7.0, 6.0], [6.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.17492157122756183]}, "1374": {"P": [[-8.0, 6.0, 7.0], [7.0, -8.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.22576889234057218]}, "1375": {"P": [[-7.0, 6.0, 7.0], [8.0, -7.0, 8.0], [5.0, 8.0, -6.0]], "dev": [0.26706970362834737]}, "1376": {"P": [[-8.0, 6.0, 8.0], [6.0, -6.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.24720154212995857]}, "1377": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.24714489295422132]}, "1378": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.17472738269721519]}, "1379": {"P": [[-7.0, 6.0, 8.0], [7.0, -7.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.14264522351612216]}, "1380": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.17465700016288718]}, "1381": {"P": [[-9.0, 7.0, 7.0], [6.0, -6.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.24692593691687392]}, "1382": {"P": [[-8.0, 8.0, 7.0], [8.0, -6.0, 6.0], [7.0, 6.0, -8.0]], "dev": [0.2468730996947259]}, "1383": {"P": [[-9.0, 9.0, 6.0], [7.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.26659054469004118]}, "1384": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.225278205229579]}, "1385": {"P": [[-7.0, 6.0, 8.0], [8.0, -9.0, 7.0], [6.0, 7.0, -6.0]], "dev": [0.22523365155580027]}, "1386": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.17447061090225852]}, "1387": {"P": [[-8.0, 8.0, 7.0], [7.0, -6.0, 7.0], [6.0, 7.0, -8.0]], "dev": [0.22514698306506145]}, "1388": {"P": [[-8.0, 7.0, 6.0], [6.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.22510486455219555]}, "1389": {"P": [[-8.0, 5.0, 8.0], [8.0, -8.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.26626097688375144]}, "1390": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 6.0], [6.0, 8.0, -6.0]], "dev": [0.24647752538672388]}, "1391": {"P": [[-7.0, 8.0, 6.0], [7.0, -5.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.24643144373745149]}, "1392": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.20123096361853032]}, "1393": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.17429954479555343]}, "1394": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.20117071236585479]}, "1395": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.24625452194702332]}, "1396": {"P": [[-6.0, 8.0, 6.0], [8.0, -8.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.24621213422295798]}, "1397": {"P": [[-8.0, 7.0, 8.0], [6.0, -5.0, 7.0], [5.0, 9.0, -8.0]], "dev": [0.30140643339477141]}, "1398": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.24612955815667184]}, "1399": {"P": [[-9.0, 8.0, 7.0], [7.0, -5.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.26576746003848789]}, "1400": {"P": [[-8.0, 6.0, 8.0], [7.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.20101098393019437]}, "1401": {"P": [[-5.0, 6.0, 7.0], [7.0, -9.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.2656770081804416]}, "1402": {"P": [[-8.0, 7.0, 8.0], [8.0, -6.0, 6.0], [5.0, 8.0, -7.0]], "dev": [0.24597315591680516]}, "1403": {"P": [[-9.0, 6.0, 7.0], [7.0, -7.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.30107157014508601]}, "1404": {"P": [[-9.0, 7.0, 7.0], [6.0, -5.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.28383682748194028]}, "1405": {"P": [[-9.0, 7.0, 7.0], [6.0, -6.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.28378897090239397]}, "1406": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [8.0, 6.0, -5.0]], "dev": [0.26546275626555821]}, "1407": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 7.0, -5.0]], "dev": [0.2457939185473979]}, "1408": {"P": [[-9.0, 6.0, 8.0], [7.0, -6.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.26538177358775095]}, "1409": {"P": [[-7.0, 8.0, 5.0], [5.0, -7.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.28360391742671348]}, "1410": {"P": [[-9.0, 6.0, 8.0], [6.0, -6.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.28355923993820681]}, "1411": {"P": [[-8.0, 6.0, 9.0], [7.0, -7.0, 8.0], [8.0, 5.0, -8.0]], "dev": [0.29846254697844254]}, "1412": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 8.0], [7.0, 7.0, -5.0]], "dev": [0.26522782720465216]}, "1413": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.29825498186605265]}, "1414": {"P": [[-9.0, 6.0, 8.0], [7.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.26515483833628994]}, "1415": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.29805003067276775]}, "1416": {"P": [[-7.0, 6.0, 8.0], [7.0, -9.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.2650844889057275]}, "1417": {"P": [[-7.0, 6.0, 6.0], [9.0, -9.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.28058217478224345]}, "1418": {"P": [[-9.0, 8.0, 6.0], [8.0, -8.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.28048417844310841]}, "1419": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 7.0], [7.0, 6.0, -8.0]], "dev": [0.28038686138316893]}, "1420": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 8.0], [6.0, 8.0, -5.0]], "dev": [0.28314695165370346]}, "1421": {"P": [[-9.0, 7.0, 9.0], [6.0, -7.0, 8.0], [7.0, 6.0, -8.0]], "dev": [0.28019426032012285]}, "1422": {"P": [[-9.0, 8.0, 9.0], [6.0, -6.0, 6.0], [7.0, 7.0, -8.0]], "dev": [0.28009897392478816]}, "1423": {"P": [[-9.0, 8.0, 7.0], [9.0, -7.0, 5.0], [8.0, 6.0, -7.0]], "dev": [0.28000436202420559]}, "1424": {"P": [[-8.0, 6.0, 9.0], [8.0, -7.0, 7.0], [8.0, 5.0, -7.0]], "dev": [0.2615257433505434]}, "1425": {"P": [[-7.0, 5.0, 8.0], [8.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.26143482562129361]}, "1426": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 7.0], [8.0, 5.0, -7.0]], "dev": [0.2613446172138808]}, "1427": {"P": [[-8.0, 6.0, 9.0], [7.0, -7.0, 8.0], [7.0, 6.0, -8.0]], "dev": [0.26125511688470293]}, "1428": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 7.0], [8.0, 7.0, -9.0]], "dev": [0.26116632338873946]}, "1429": {"P": [[-8.0, 6.0, 7.0], [8.0, -7.0, 6.0], [9.0, 7.0, -8.0]], "dev": [0.26107823547955938]}, "1430": {"P": [[-7.0, 6.0, 7.0], [9.0, -7.0, 6.0], [9.0, 6.0, -7.0]], "dev": [0.2609908519093318]}, "1431": {"P": [[-9.0, 7.0, 9.0], [6.0, -5.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.27927160472932577]}, "1432": {"P": [[-8.0, 7.0, 8.0], [8.0, -8.0, 8.0], [6.0, 6.0, -7.0]], "dev": [0.24105830560627836]}, "1433": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 7.0], [8.0, 5.0, -6.0]], "dev": [0.2607329147332389]}, "1434": {"P": [[-8.0, 9.0, 6.0], [8.0, -8.0, 6.0], [7.0, 7.0, -6.0]], "dev": [0.2408936592621754]}, "1435": {"P": [[-9.0, 7.0, 9.0], [6.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.24081245580560612]}, "1436": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.24073199707591572]}, "1437": {"P": [[-9.0, 8.0, 9.0], [6.0, -6.0, 7.0], [6.0, 7.0, -7.0]], "dev": [0.26039878330087757]}, "1438": {"P": [[-8.0, 7.0, 8.0], [7.0, -6.0, 8.0], [8.0, 5.0, -6.0]], "dev": [0.26031698935545178]}, "1439": {"P": [[-9.0, 7.0, 8.0], [6.0, -8.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.26023588845707163]}, "1440": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [6.0, 7.0, -8.0]], "dev": [0.21890718369815379]}, "1441": {"P": [[-9.0, 8.0, 7.0], [7.0, -7.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.21883332943403921]}, "1442": {"P": [[-7.0, 7.0, 8.0], [7.0, -6.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.21876027431606909]}, "1443": {"P": [[-7.0, 8.0, 8.0], [6.0, -6.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.21868801693888396]}, "1444": {"P": [[-6.0, 8.0, 6.0], [6.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.24011497904719878]}, "1445": {"P": [[-8.0, 6.0, 9.0], [6.0, -7.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.2597637663323808]}, "1446": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 6.0], [8.0, 8.0, -7.0]], "dev": [0.2399680791778083]}, "1447": {"P": [[-9.0, 8.0, 7.0], [7.0, -7.0, 6.0], [7.0, 8.0, -8.0]], "dev": [0.21840693659496543]}, "1448": {"P": [[-8.0, 8.0, 8.0], [6.0, -7.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.19449403702033213]}, "1449": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [7.0, 7.0, -7.0]], "dev": [0.19442990647517766]}, "1450": {"P": [[-7.0, 7.0, 8.0], [7.0, -6.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.21820443317802771]}, "1451": {"P": [[-7.0, 6.0, 7.0], [9.0, -7.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.23961358324805926]}, "1452": {"P": [[-8.0, 6.0, 7.0], [9.0, -8.0, 6.0], [7.0, 8.0, -8.0]], "dev": [0.25924406844016523]}, "1453": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 6.0], [8.0, 7.0, -6.0]], "dev": [0.25917253719192201]}, "1454": {"P": [[-8.0, 6.0, 8.0], [7.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.19412232225383624]}, "1455": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.16687830895003514]}, "1456": {"P": [[-7.0, 6.0, 7.0], [7.0, -8.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.1668242663825181]}, "1457": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.21775938030482059]}, "1458": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.21769891779979361]}, "1459": {"P": [[-8.0, 6.0, 7.0], [9.0, -8.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.25875745881979767]}, "1460": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.23902095084449068]}, "1461": {"P": [[-8.0, 7.0, 8.0], [7.0, -5.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.23895867681249613]}, "1462": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.1665207421008281]}, "1463": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.13392917451599384]}, "1464": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.19357186711521798]}, "1465": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 7.0], [7.0, 6.0, -6.0]], "dev": [0.23871666489364218]}, "1466": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 6.0], [6.0, 9.0, -8.0]], "dev": [0.25830349786551077]}, "1467": {"P": [[-8.0, 8.0, 7.0], [6.0, -7.0, 9.0], [7.0, 6.0, -8.0]], "dev": [0.258241285746662]}, "1468": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.21713666000790838]}, "1469": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.16621116363826557]}, "1470": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.090122117329028723]}, "1471": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.16613143795309324]}, "1472": {"P": [[-8.0, 8.0, 8.0], [6.0, -7.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.21693311755674702]}, "1473": {"P": [[-8.0, 9.0, 6.0], [5.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.25788174342759457]}, "1474": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.25782409600711026]}, "1475": {"P": [[-9.0, 8.0, 7.0], [7.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.21678838162603078]}, "1476": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.19302329623467973]}, "1477": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 7.0], [7.0, 8.0, -7.0]], "dev": [0.13346658528474556]}, "1478": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.19294355807040048]}, "1479": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.23795778219169766]}, "1480": {"P": [[-8.0, 7.0, 7.0], [6.0, -6.0, 8.0], [7.0, 8.0, -9.0]], "dev": [0.23790875781586227]}, "1481": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 6.0], [6.0, 9.0, -7.0]], "dev": [0.25743860462720308]}, "1482": {"P": [[-8.0, 7.0, 7.0], [8.0, -7.0, 6.0], [6.0, 9.0, -8.0]], "dev": [0.21647681909857067]}, "1483": {"P": [[-8.0, 8.0, 7.0], [7.0, -6.0, 8.0], [6.0, 7.0, -7.0]], "dev": [0.21643527679663702]}, "1484": {"P": [[-8.0, 7.0, 7.0], [8.0, -7.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.16570636453480386]}, "1485": {"P": [[-6.0, 7.0, 7.0], [7.0, -8.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.16568027947218025]}, "1486": {"P": [[-8.0, 6.0, 8.0], [7.0, -7.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.19265750631574494]}, "1487": {"P": [[-8.0, 6.0, 9.0], [7.0, -8.0, 6.0], [8.0, 7.0, -7.0]], "dev": [0.25713307406217145]}, "1488": {"P": [[-6.0, 6.0, 8.0], [8.0, -7.0, 5.0], [8.0, 8.0, -8.0]], "dev": [0.25708436473008961]}, "1489": {"P": [[-7.0, 8.0, 6.0], [8.0, -6.0, 7.0], [9.0, 5.0, -8.0]], "dev": [0.29221950170950289]}, "1490": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.23745586915863343]}, "1491": {"P": [[-9.0, 6.0, 8.0], [7.0, -7.0, 7.0], [7.0, 8.0, -7.0]], "dev": [0.23741428472116619]}, "1492": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.19247712329507083]}, "1493": {"P": [[-7.0, 6.0, 8.0], [8.0, -8.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.23733311800952536]}, "1494": {"P": [[-8.0, 6.0, 8.0], [7.0, -6.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.23729353288941879]}, "1495": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.25676092758753177]}, "1496": {"P": [[-8.0, 6.0, 8.0], [6.0, -7.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.2372163519956377]}, "1497": {"P": [[-8.0, 6.0, 9.0], [7.0, -7.0, 6.0], [7.0, 8.0, -6.0]], "dev": [0.2566741116386117]}, "1498": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.21589971436543384]}, "1499": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [6.0, 8.0, -7.0]], "dev": [0.21586977729570717]}, "1500": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.21584055216602302]}, "1501": {"P": [[-9.0, 8.0, 7.0], [6.0, -5.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.25650787089855692]}, "1502": {"P": [[-8.0, 6.0, 8.0], [8.0, -8.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.25646784285452717]}, "1503": {"P": [[-8.0, 6.0, 9.0], [6.0, -7.0, 8.0], [7.0, 7.0, -5.0]], "dev": [0.27451363469155837]}, "1504": {"P": [[-9.0, 8.0, 7.0], [6.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.23693394342142249]}, "1505": {"P": [[-9.0, 7.0, 7.0], [5.0, -8.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.30740383342964611]}, "1506": {"P": [[-6.0, 8.0, 7.0], [7.0, -8.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.23686986269899682]}, "1507": {"P": [[-9.0, 5.0, 9.0], [7.0, -8.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.3073001990608098]}, "1508": {"P": [[-9.0, 6.0, 8.0], [8.0, -8.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.27429933712318616]}, "1509": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 8.0], [6.0, 9.0, -7.0]], "dev": [0.27425819153189734]}, "1510": {"P": [[-8.0, 6.0, 7.0], [6.0, -8.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.29114910245475606]}, "1511": {"P": [[-6.0, 5.0, 9.0], [7.0, -8.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.29110416462440386]}, "1512": {"P": [[-9.0, 6.0, 9.0], [7.0, -7.0, 7.0], [6.0, 8.0, -6.0]], "dev": [0.25610090672941044]}, "1513": {"P": [[-9.0, 8.0, 8.0], [6.0, -7.0, 6.0], [8.0, 8.0, -9.0]], "dev": [0.28329154643360888]}, "1514": {"P": [[-9.0, 7.0, 7.0], [7.0, -7.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.2560347259341953]}, "1515": {"P": [[-9.0, 8.0, 8.0], [7.0, -6.0, 5.0], [9.0, 7.0, -8.0]], "dev": [0.28310254010010494]}, "1516": {"P": [[-9.0, 6.0, 8.0], [7.0, -8.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.27398601988747806]}, "1517": {"P": [[-7.0, 8.0, 5.0], [9.0, -7.0, 6.0], [9.0, 7.0, -7.0]], "dev": [0.29930659443785551]}, "1518": {"P": [[-9.0, 7.0, 8.0], [7.0, -5.0, 7.0], [6.0, 8.0, -8.0]], "dev": [0.29080464503838332]}, "1519": {"P": [[-7.0, 8.0, 6.0], [7.0, -5.0, 7.0], [7.0, 8.0, -9.0]], "dev": [0.27387779705107812]}, "1520": {"P": [[-9.0, 6.0, 8.0], [8.0, -8.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.28264036925345626]}, "1521": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.2738084313131211]}, "1522": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 8.0], [7.0, 6.0, -8.0]], "dev": [0.26506851575498219]}, "1523": {"P": [[-9.0, 9.0, 8.0], [7.0, -8.0, 7.0], [6.0, 7.0, -8.0]], "dev": [0.28237012177731563]}, "1524": {"P": [[-9.0, 8.0, 9.0], [6.0, -6.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.26489412161687276]}, "1525": {"P": [[-9.0, 8.0, 8.0], [8.0, -7.0, 5.0], [9.0, 6.0, -7.0]], "dev": [0.28219288025025663]}, "1526": {"P": [[-9.0, 8.0, 7.0], [9.0, -9.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.26472218527467922]}, "1527": {"P": [[-6.0, 7.0, 7.0], [9.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.28201796843668403]}, "1528": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 8.0], [7.0, 6.0, -8.0]], "dev": [0.26455269870725906]}, "1529": {"P": [[-8.0, 9.0, 7.0], [8.0, -7.0, 6.0], [7.0, 7.0, -5.0]], "dev": [0.26446887157819049]}, "1530": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 7.0], [8.0, 7.0, -9.0]], "dev": [0.24578624338705124]}, "1531": {"P": [[-7.0, 7.0, 8.0], [7.0, -5.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.26430304459905274]}, "1532": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.24562598209242978]}, "1533": {"P": [[-9.0, 6.0, 9.0], [7.0, -7.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.26413964727368588]}, "1534": {"P": [[-6.0, 7.0, 7.0], [8.0, -6.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.24546829930977873]}, "1535": {"P": [[-7.0, 7.0, 9.0], [7.0, -6.0, 8.0], [6.0, 7.0, -6.0]], "dev": [0.26397867152695592]}, "1536": {"P": [[-8.0, 6.0, 8.0], [8.0, -8.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.22519855634844343]}, "1537": {"P": [[-7.0, 7.0, 8.0], [6.0, -5.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.24523659144900647]}, "1538": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.22505060326095455]}, "1539": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 8.0], [6.0, 7.0, -7.0]], "dev": [0.24508531811002771]}, "1540": {"P": [[-9.0, 8.0, 9.0], [7.0, -7.0, 7.0], [7.0, 6.0, -7.0]], "dev": [0.2249053982770296]}, "1541": {"P": [[-8.0, 7.0, 7.0], [7.0, -6.0, 6.0], [9.0, 8.0, -9.0]], "dev": [0.24493659374599169]}, "1542": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.26343420941178924]}, "1543": {"P": [[-5.0, 7.0, 7.0], [7.0, -7.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.26335882230437629]}, "1544": {"P": [[-8.0, 8.0, 6.0], [8.0, -7.0, 6.0], [8.0, 8.0, -7.0]], "dev": [0.22462319701044461]}, "1545": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.20247784156345167]}, "1546": {"P": [[-7.0, 7.0, 8.0], [8.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.20241228241363265]}, "1547": {"P": [[-8.0, 7.0, 7.0], [8.0, -7.0, 6.0], [9.0, 7.0, -8.0]], "dev": [0.20234746619629218]}, "1548": {"P": [[-9.0, 8.0, 8.0], [8.0, -7.0, 6.0], [8.0, 6.0, -8.0]], "dev": [0.22435188091036251]}, "1549": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.24436701572741698]}, "1550": {"P": [[-9.0, 7.0, 9.0], [7.0, -6.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.24429864926541658]}, "1551": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.2442309082877995]}, "1552": {"P": [[-8.0, 7.0, 8.0], [8.0, -8.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.17725383571713943]}, "1553": {"P": [[-7.0, 6.0, 7.0], [8.0, -7.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.20197410296282023]}, "1554": {"P": [[-7.0, 7.0, 8.0], [7.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.20191445342848138]}, "1555": {"P": [[-7.0, 8.0, 6.0], [6.0, -8.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.24396617763621889]}, "1556": {"P": [[-7.0, 7.0, 6.0], [8.0, -6.0, 7.0], [9.0, 7.0, -8.0]], "dev": [0.24390154787906052]}, "1557": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 9.0], [7.0, 6.0, -7.0]], "dev": [0.26236543846962046]}, "1558": {"P": [[-8.0, 7.0, 8.0], [7.0, -6.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.22372073720341054]}, "1559": {"P": [[-8.0, 7.0, 8.0], [7.0, -6.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.2016271792039826]}, "1560": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.14797815234759337]}, "1561": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.17676651085488929]}, "1562": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.20146354864473184]}, "1563": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [7.0, 9.0, -9.0]], "dev": [0.22343014982038223]}, "1564": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [8.0, 7.0, -9.0]], "dev": [0.24340670212606791]}, "1565": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 7.0], [6.0, 9.0, -8.0]], "dev": [0.24334760407011982]}, "1566": {"P": [[-8.0, 7.0, 8.0], [6.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.20125549381154675]}, "1567": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.14766751486940188]}, "1568": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.11161880364065881]}, "1569": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.20110699760826478]}, "1570": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.22305095174746817]}, "1571": {"P": [[-9.0, 7.0, 7.0], [7.0, -8.0, 9.0], [8.0, 6.0, -7.0]], "dev": [0.26148590733452903]}, "1572": {"P": [[-9.0, 6.0, 9.0], [6.0, -6.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.26142736536654876]}, "1573": {"P": [[-9.0, 8.0, 8.0], [7.0, -6.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.2009189965879381]}, "1574": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.17617901935865837]}, "1575": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 7.0, -7.0]], "dev": [0.11140259601619289]}, "1576": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.17610067828482132]}, "1577": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 9.0], [6.0, 8.0, -7.0]], "dev": [0.20074234095479912]}, "1578": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.22265657347298315]}, "1579": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 6.0], [6.0, 9.0, -7.0]], "dev": [0.24258369155650977]}, "1580": {"P": [[-6.0, 6.0, 8.0], [7.0, -8.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.22256440980536679]}, "1581": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 6.0], [7.0, 8.0, -7.0]], "dev": [0.20057694666411149]}, "1582": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [7.0, 8.0, -7.0]], "dev": [0.11124658397398449]}, "1583": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.14713200524399841]}, "1584": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.20046024012678804]}, "1585": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 6.0], [7.0, 9.0, -7.0]], "dev": [0.26071738701319164]}, "1586": {"P": [[-8.0, 8.0, 6.0], [6.0, -7.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.24224555970545089]}, "1587": {"P": [[-9.0, 7.0, 9.0], [7.0, -7.0, 6.0], [7.0, 8.0, -6.0]], "dev": [0.26061649362757872]}, "1588": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 9.0], [8.0, 6.0, -6.0]], "dev": [0.22222118933115878]}, "1589": {"P": [[-8.0, 8.0, 7.0], [7.0, -6.0, 8.0], [7.0, 7.0, -7.0]], "dev": [0.17566839154970068]}, "1590": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.1469726746057412]}, "1591": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.20021216957861268]}, "1592": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.22206470332841205]}, "1593": {"P": [[-7.0, 5.0, 9.0], [8.0, -7.0, 6.0], [8.0, 8.0, -7.0]], "dev": [0.2603269718417287]}, "1594": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 6.0], [6.0, 9.0, -8.0]], "dev": [0.24189425000788484]}, "1595": {"P": [[-8.0, 7.0, 9.0], [8.0, -6.0, 7.0], [5.0, 8.0, -7.0]], "dev": [0.27740129676771957]}, "1596": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.20005555379290044]}, "1597": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.20002627055907637]}, "1598": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.19999766407513081]}, "1599": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.24169346423885638]}, "1600": {"P": [[-8.0, 6.0, 8.0], [8.0, -8.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.22178158709938606]}, "1601": {"P": [[-9.0, 8.0, 7.0], [6.0, -7.0, 9.0], [8.0, 6.0, -7.0]], "dev": [0.24161715582294455]}, "1602": {"P": [[-9.0, 8.0, 7.0], [9.0, -6.0, 6.0], [6.0, 8.0, -7.0]], "dev": [0.2770661471666927]}, "1603": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 7.0], [6.0, 9.0, -7.0]], "dev": [0.22168557934775426]}, "1604": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.22165479842635644]}, "1605": {"P": [[-7.0, 7.0, 8.0], [7.0, -9.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.22162462625366408]}, "1606": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.22159506157779446]}, "1607": {"P": [[-9.0, 7.0, 7.0], [6.0, -8.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.25972709757017842]}, "1608": {"P": [[-8.0, 6.0, 8.0], [7.0, -6.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.25968824812569385]}, "1609": {"P": [[-9.0, 9.0, 7.0], [5.0, -8.0, 9.0], [7.0, 7.0, -6.0]], "dev": [0.29286428300968492]}, "1610": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 7.0], [6.0, 9.0, -7.0]], "dev": [0.24130179495542992]}, "1611": {"P": [[-9.0, 7.0, 8.0], [6.0, -5.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.27667167287963396]}, "1612": {"P": [[-8.0, 6.0, 8.0], [7.0, -8.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.22143036065801791]}, "1613": {"P": [[-8.0, 6.0, 9.0], [7.0, -8.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.24120677039999017]}, "1614": {"P": [[-8.0, 6.0, 9.0], [8.0, -8.0, 7.0], [7.0, 7.0, -5.0]], "dev": [0.25946619243578467]}, "1615": {"P": [[-9.0, 8.0, 8.0], [6.0, -9.0, 8.0], [7.0, 8.0, -9.0]], "dev": [0.29598212070653812]}, "1616": {"P": [[-9.0, 7.0, 8.0], [8.0, -6.0, 6.0], [6.0, 9.0, -7.0]], "dev": [0.25939635454011145]}, "1617": {"P": [[-9.0, 6.0, 9.0], [7.0, -7.0, 7.0], [6.0, 9.0, -7.0]], "dev": [0.25936221469852044]}, "1618": {"P": [[-8.0, 7.0, 7.0], [6.0, -8.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.24105948381725095]}, "1619": {"P": [[-9.0, 7.0, 7.0], [7.0, -7.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.2592954879257916]}, "1620": {"P": [[-8.0, 6.0, 8.0], [8.0, -6.0, 7.0], [6.0, 9.0, -8.0]], "dev": [0.25926289887320714]}, "1621": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.25923082462851693]}, "1622": {"P": [[-9.0, 6.0, 8.0], [8.0, -7.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.29229689697069844]}, "1623": {"P": [[-9.0, 9.0, 6.0], [7.0, -6.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.27620829789675677]}, "1624": {"P": [[-9.0, 9.0, 8.0], [6.0, -7.0, 6.0], [8.0, 8.0, -8.0]], "dev": [0.27930123203903201]}, "1625": {"P": [[-9.0, 9.0, 7.0], [7.0, -8.0, 6.0], [7.0, 9.0, -8.0]], "dev": [0.27921579589379364]}, "1626": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [6.0, 8.0, -5.0]], "dev": [0.27610345267502573]}, "1627": {"P": [[-9.0, 8.0, 6.0], [9.0, -9.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.27904648040074842]}, "1628": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [5.0, 9.0, -6.0]], "dev": [0.27603597191276036]}, "1629": {"P": [[-8.0, 8.0, 7.0], [8.0, -5.0, 6.0], [7.0, 8.0, -9.0]], "dev": [0.27600295337749253]}, "1630": {"P": [[-7.0, 9.0, 7.0], [9.0, -8.0, 7.0], [7.0, 6.0, -5.0]], "dev": [0.27879638721720151]}, "1631": {"P": [[-8.0, 9.0, 9.0], [6.0, -6.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.27871405431777085]}, "1632": {"P": [[-9.0, 8.0, 7.0], [7.0, -9.0, 8.0], [7.0, 8.0, -9.0]], "dev": [0.26181412146269967]}, "1633": {"P": [[-9.0, 8.0, 9.0], [7.0, -8.0, 8.0], [6.0, 7.0, -8.0]], "dev": [0.26173468159089425]}, "1634": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.26165578140745521]}, "1635": {"P": [[-8.0, 9.0, 7.0], [7.0, -8.0, 6.0], [7.0, 9.0, -8.0]], "dev": [0.26157742008707002]}, "1636": {"P": [[-9.0, 7.0, 9.0], [6.0, -8.0, 8.0], [8.0, 7.0, -9.0]], "dev": [0.26149959680360946]}, "1637": {"P": [[-7.0, 9.0, 8.0], [6.0, -6.0, 7.0], [7.0, 8.0, -7.0]], "dev": [0.26142231073013217]}, "1638": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 7.0], [7.0, 8.0, -9.0]], "dev": [0.26134556103888962]}, "1639": {"P": [[-5.0, 7.0, 7.0], [7.0, -8.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.27807384309583821]}, "1640": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.24323327492693725]}, "1641": {"P": [[-9.0, 8.0, 7.0], [7.0, -7.0, 6.0], [9.0, 8.0, -8.0]], "dev": [0.26111852196906893]}, "1642": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.24308758694565763]}, "1643": {"P": [[-7.0, 7.0, 9.0], [7.0, -6.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.24301559106779314]}, "1644": {"P": [[-7.0, 7.0, 8.0], [6.0, -9.0, 9.0], [7.0, 8.0, -9.0]], "dev": [0.26089628046389229]}, "1645": {"P": [[-7.0, 7.0, 9.0], [7.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.24287329120755755]}, "1646": {"P": [[-8.0, 7.0, 9.0], [6.0, -5.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.26075077367687671]}, "1647": {"P": [[-9.0, 8.0, 7.0], [9.0, -7.0, 6.0], [9.0, 6.0, -8.0]], "dev": [0.26067881404620497]}, "1648": {"P": [[-8.0, 8.0, 8.0], [7.0, -9.0, 9.0], [6.0, 7.0, -7.0]], "dev": [0.22328341275460287]}, "1649": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [8.0, 7.0, -9.0]], "dev": [0.22321700982211584]}, "1650": {"P": [[-7.0, 6.0, 8.0], [7.0, -6.0, 7.0], [9.0, 8.0, -9.0]], "dev": [0.22315120754016346]}, "1651": {"P": [[-7.0, 7.0, 8.0], [8.0, -6.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.22308600499086262]}, "1652": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.22302140125426348]}, "1653": {"P": [[-9.0, 6.0, 9.0], [6.0, -7.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.26025811625484768]}, "1654": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 9.0], [8.0, 6.0, -8.0]], "dev": [0.24226068574000414]}, "1655": {"P": [[-9.0, 9.0, 7.0], [6.0, -7.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.24219540338575163]}, "1656": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [8.0, 8.0, -8.0]], "dev": [0.20155582801516733]}, "1657": {"P": [[-7.0, 8.0, 7.0], [9.0, -7.0, 7.0], [7.0, 7.0, -6.0]], "dev": [0.20149670431719982]}, "1658": {"P": [[-9.0, 8.0, 8.0], [8.0, -8.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.20143822878938769]}, "1659": {"P": [[-8.0, 7.0, 7.0], [7.0, -7.0, 7.0], [9.0, 8.0, -9.0]], "dev": [0.20138040043901592]}, "1660": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [8.0, 6.0, -6.0]], "dev": [0.24187728036951031]}, "1661": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.24181530732241693]}, "1662": {"P": [[-8.0, 7.0, 9.0], [6.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.22240809473941306]}, "1663": {"P": [[-9.0, 8.0, 8.0], [6.0, -7.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.22235001664444806]}, "1664": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.177395608772806]}, "1665": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.17734455863473614]}, "1666": {"P": [[-7.0, 8.0, 7.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.17729422579355245]}, "1667": {"P": [[-7.0, 7.0, 8.0], [8.0, -6.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.22212357095243829]}, "1668": {"P": [[-7.0, 8.0, 6.0], [7.0, -6.0, 7.0], [9.0, 8.0, -8.0]], "dev": [0.22206842145745245]}, "1669": {"P": [[-9.0, 7.0, 9.0], [6.0, -7.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.24133919219192679]}, "1670": {"P": [[-9.0, 8.0, 8.0], [6.0, -8.0, 9.0], [8.0, 6.0, -8.0]], "dev": [0.24128212304898569]}, "1671": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.20073657431789768]}, "1672": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 8.0], [8.0, 7.0, -8.0]], "dev": [0.14962559840339418]}, "1673": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.14958386939242777]}, "1674": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.20058995157434051]}, "1675": {"P": [[-9.0, 7.0, 9.0], [7.0, -6.0, 8.0], [7.0, 7.0, -8.0]], "dev": [0.24100486529628024]}, "1676": {"P": [[-9.0, 7.0, 9.0], [6.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.24095102502244345]}, "1677": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 9.0], [8.0, 6.0, -7.0]], "dev": [0.2215981899759773]}, "1678": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.2215488259349169]}, "1679": {"P": [[-8.0, 7.0, 8.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.1767046627939321]}, "1680": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.11567026402631117]}, "1681": {"P": [[-9.0, 8.0, 8.0], [8.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.17662454469016359]}, "1682": {"P": [[-8.0, 7.0, 7.0], [6.0, -7.0, 8.0], [8.0, 9.0, -8.0]], "dev": [0.22135709232694167]}, "1683": {"P": [[-9.0, 8.0, 7.0], [8.0, -9.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.22131058468306336]}, "1684": {"P": [[-9.0, 7.0, 8.0], [6.0, -6.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.24053948590146201]}, "1685": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 9.0], [6.0, 7.0, -6.0]], "dev": [0.24049042774261409]}, "1686": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.2000599534210408]}, "1687": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.11548158729453176]}, "1688": {"P": [[-8.0, 8.0, 7.0], [7.0, -8.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.11545877831887896]}, "1689": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.19994143368341513]}, "1690": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.24025302041026861]}, "1691": {"P": [[-7.0, 8.0, 7.0], [9.0, -9.0, 7.0], [6.0, 8.0, -9.0]], "dev": [0.27468653750070138]}, "1692": {"P": [[-9.0, 8.0, 8.0], [7.0, -6.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.22091747318969654]}, "1693": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.22087660459512928]}, "1694": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 7.0], [7.0, 8.0, -7.0]], "dev": [0.17617149800607168]}, "1695": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.11532787364480866]}, "1696": {"P": [[-9.0, 8.0, 8.0], [7.0, -6.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.17611211362552387]}, "1697": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.2207187047081709]}, "1698": {"P": [[-8.0, 6.0, 9.0], [8.0, -7.0, 8.0], [6.0, 8.0, -7.0]], "dev": [0.22068061835515512]}, "1699": {"P": [[-9.0, 9.0, 7.0], [7.0, -6.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.23985850811641168]}, "1700": {"P": [[-8.0, 6.0, 8.0], [9.0, -8.0, 6.0], [7.0, 9.0, -8.0]], "dev": [0.23981725517191291]}, "1701": {"P": [[-6.0, 8.0, 7.0], [6.0, -7.0, 8.0], [9.0, 7.0, -9.0]], "dev": [0.23977651518046719]}, "1702": {"P": [[-7.0, 8.0, 7.0], [7.0, -9.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.17595025550905685]}, "1703": {"P": [[-8.0, 7.0, 8.0], [7.0, -9.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.17592564217734943]}, "1704": {"P": [[-10.0, 8.0, 8.0], [7.0, -8.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.23965736362763837]}, "1705": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.23961866614748514]}, "1706": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 6.0], [7.0, 8.0, -9.0]], "dev": [0.23958047696584969]}, "1707": {"P": [[-9.0, 6.0, 9.0], [6.0, -7.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.25729713356364275]}, "1708": {"P": [[-9.0, 9.0, 7.0], [6.0, -7.0, 9.0], [7.0, 7.0, -7.0]], "dev": [0.22033002755163292]}, "1709": {"P": [[-9.0, 8.0, 7.0], [6.0, -7.0, 9.0], [8.0, 7.0, -8.0]], "dev": [0.22029797346445334]}, "1710": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.17577208475500006]}, "1711": {"P": [[-9.0, 8.0, 8.0], [6.0, -8.0, 9.0], [7.0, 7.0, -6.0]], "dev": [0.22023549114787377]}, "1712": {"P": [[-9.0, 8.0, 7.0], [6.0, -8.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.22020506087359082]}, "1713": {"P": [[-9.0, 7.0, 8.0], [6.0, -8.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.25705644111950704]}, "1714": {"P": [[-9.0, 7.0, 8.0], [7.0, -9.0, 9.0], [6.0, 8.0, -6.0]], "dev": [0.25701798115995522]}, "1715": {"P": [[-9.0, 7.0, 9.0], [6.0, -7.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.2392594935138429]}, "1716": {"P": [[-10.0, 9.0, 7.0], [7.0, -7.0, 8.0], [6.0, 8.0, -6.0]], "dev": [0.27351348855543944]}, "1717": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.22006097732616539]}, "1718": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.22003376698339322]}, "1719": {"P": [[-9.0, 6.0, 8.0], [7.0, -7.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.27339168285861326]}, "1720": {"P": [[-8.0, 6.0, 8.0], [8.0, -9.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.23909867573146504]}, "1721": {"P": [[-8.0, 7.0, 8.0], [7.0, -9.0, 7.0], [10.0, 6.0, -7.0]], "dev": [0.30372051428888008]}, "1722": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.2567271718558416]}, "1723": {"P": [[-9.0, 7.0, 7.0], [6.0, -7.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.27323547291153927]}, "1724": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 7.0], [6.0, 9.0, -7.0]], "dev": [0.21988166277726537]}, "1725": {"P": [[-10.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.25662579292948978]}, "1726": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.21983518710803876]}, "1727": {"P": [[-10.0, 7.0, 8.0], [6.0, -8.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.28866755101564034]}, "1728": {"P": [[-8.0, 6.0, 9.0], [8.0, -6.0, 7.0], [6.0, 9.0, -8.0]], "dev": [0.25652856337203256]}, "1729": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.25649707151307144]}, "1730": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 8.0], [8.0, 8.0, -6.0]], "dev": [0.27297900166850764]}, "1731": {"P": [[-9.0, 6.0, 9.0], [7.0, -7.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.25643545952577873]}, "1732": {"P": [[-7.0, 8.0, 7.0], [8.0, -6.0, 6.0], [7.0, 9.0, -10.0]], "dev": [0.27290964193231831]}, "1733": {"P": [[-9.0, 6.0, 8.0], [7.0, -7.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.272875610923278]}, "1734": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [6.0, 9.0, -6.0]], "dev": [0.25634645771518272]}, "1735": {"P": [[-9.0, 7.0, 7.0], [7.0, -8.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.27280884252244442]}, "1736": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.25628939038454046]}, "1737": {"P": [[-10.0, 9.0, 8.0], [7.0, -9.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.28608017671385716]}, "1738": {"P": [[-8.0, 8.0, 6.0], [7.0, -9.0, 8.0], [8.0, 9.0, -10.0]], "dev": [0.28600050957153345]}, "1739": {"P": [[-9.0, 8.0, 7.0], [6.0, -7.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.25620717264497284]}, "1740": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [6.0, 9.0, -6.0]], "dev": [0.25618066542039669]}, "1741": {"P": [[-9.0, 8.0, 7.0], [6.0, -7.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.25615460607591417]}, "1742": {"P": [[-9.0, 7.0, 7.0], [8.0, -9.0, 8.0], [9.0, 7.0, -9.0]], "dev": [0.2700261851327328]}, "1743": {"P": [[-10.0, 8.0, 9.0], [8.0, -7.0, 6.0], [9.0, 6.0, -8.0]], "dev": [0.26995040767590806]}, "1744": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.25325226426019931]}, "1745": {"P": [[-10.0, 9.0, 8.0], [7.0, -7.0, 6.0], [8.0, 8.0, -9.0]], "dev": [0.26980023843784012]}, "1746": {"P": [[-9.0, 9.0, 9.0], [7.0, -8.0, 8.0], [6.0, 7.0, -7.0]], "dev": [0.25310633612786149]}, "1747": {"P": [[-10.0, 9.0, 9.0], [7.0, -8.0, 8.0], [7.0, 6.0, -7.0]], "dev": [0.26965191232462887]}, "1748": {"P": [[-9.0, 7.0, 10.0], [7.0, -7.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.25296234817879343]}, "1749": {"P": [[-10.0, 7.0, 9.0], [8.0, -8.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.26950542399852917]}, "1750": {"P": [[-9.0, 9.0, 8.0], [8.0, -6.0, 6.0], [8.0, 7.0, -6.0]], "dev": [0.25282029489259811]}, "1751": {"P": [[-9.0, 8.0, 8.0], [7.0, -9.0, 8.0], [7.0, 8.0, -9.0]], "dev": [0.2349678563815373]}, "1752": {"P": [[-9.0, 6.0, 9.0], [8.0, -8.0, 8.0], [9.0, 6.0, -8.0]], "dev": [0.25268017073604238]}, "1753": {"P": [[-8.0, 8.0, 9.0], [8.0, -7.0, 8.0], [7.0, 6.0, -6.0]], "dev": [0.2348322047072855]}, "1754": {"P": [[-10.0, 8.0, 8.0], [8.0, -9.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.25254197016318192]}, "1755": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.23469859672150861]}, "1756": {"P": [[-10.0, 8.0, 8.0], [8.0, -7.0, 6.0], [9.0, 7.0, -8.0]], "dev": [0.25240568761548893]}, "1757": {"P": [[-8.0, 7.0, 10.0], [7.0, -6.0, 8.0], [7.0, 7.0, -7.0]], "dev": [0.2523382638606318]}, "1758": {"P": [[-8.0, 6.0, 8.0], [8.0, -9.0, 9.0], [9.0, 6.0, -8.0]], "dev": [0.25227131752198317]}, "1759": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.23443748865727651]}, "1760": {"P": [[-9.0, 7.0, 9.0], [8.0, -8.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.21514612313142084]}, "1761": {"P": [[-10.0, 9.0, 8.0], [7.0, -8.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.2343099769499053]}, "1762": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.21502352206924408]}, "1763": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 8.0], [8.0, 9.0, -10.0]], "dev": [0.23418448567352954]}, "1764": {"P": [[-9.0, 7.0, 9.0], [7.0, -7.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.2149030946959341]}, "1765": {"P": [[-8.0, 9.0, 6.0], [9.0, -7.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.25181600205295401]}, "1766": {"P": [[-8.0, 9.0, 8.0], [6.0, -7.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.23400002423534236]}, "1767": {"P": [[-9.0, 7.0, 9.0], [8.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.21472651581208349]}, "1768": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.19356054584298102]}, "1769": {"P": [[-9.0, 8.0, 9.0], [7.0, -8.0, 8.0], [7.0, 7.0, -8.0]], "dev": [0.19350545292868179]}, "1770": {"P": [[-9.0, 8.0, 8.0], [9.0, -8.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.19345095004422336]}, "1771": {"P": [[-10.0, 8.0, 9.0], [7.0, -7.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.21449862743179021]}, "1772": {"P": [[-8.0, 7.0, 8.0], [6.0, -7.0, 9.0], [8.0, 8.0, -10.0]], "dev": [0.25138380506961017]}, "1773": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 7.0], [9.0, 6.0, -7.0]], "dev": [0.25132393575995488]}, "1774": {"P": [[-9.0, 8.0, 9.0], [6.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.23353013586787469]}, "1775": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 6.0], [8.0, 9.0, -9.0]], "dev": [0.23347363736875071]}, "1776": {"P": [[-9.0, 8.0, 9.0], [7.0, -8.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.1931362766411292]}, "1777": {"P": [[-9.0, 8.0, 9.0], [7.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.19308588054118722]}, "1778": {"P": [[-9.0, 9.0, 8.0], [8.0, -8.0, 7.0], [7.0, 7.0, -7.0]], "dev": [0.16934663268654013]}, "1779": {"P": [[-8.0, 7.0, 7.0], [9.0, -10.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.23325258335147112]}, "1780": {"P": [[-9.0, 7.0, 9.0], [6.0, -6.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.23319855108977164]}, "1781": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.23314500982034764]}, "1782": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [8.0, 6.0, -8.0]], "dev": [0.21391603742456083]}, "1783": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [7.0, 7.0, -8.0]], "dev": [0.1927957232650547]}, "1784": {"P": [[-9.0, 8.0, 8.0], [8.0, -8.0, 8.0], [7.0, 7.0, -8.0]], "dev": [0.16907674481885912]}, "1785": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.14145785868276178]}, "1786": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 7.0], [9.0, 7.0, -8.0]], "dev": [0.19265846106733134]}, "1787": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.21367239481690925]}, "1788": {"P": [[-8.0, 8.0, 6.0], [6.0, -8.0, 9.0], [8.0, 9.0, -9.0]], "dev": [0.25048143585515315]}, "1789": {"P": [[-9.0, 8.0, 8.0], [6.0, -6.0, 7.0], [8.0, 9.0, -7.0]], "dev": [0.26695330956428232]}, "1790": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.21353249929000509]}, "1791": {"P": [[-8.0, 6.0, 9.0], [9.0, -8.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.19244118909287591]}, "1792": {"P": [[-8.0, 7.0, 8.0], [8.0, -8.0, 8.0], [8.0, 7.0, -8.0]], "dev": [0.10676111126875877]}, "1793": {"P": [[-7.0, 7.0, 8.0], [8.0, -7.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.14116769413258998]}, "1794": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.19231768594721055]}, "1795": {"P": [[-8.0, 9.0, 6.0], [6.0, -8.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.2324465618612063]}, "1796": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 8.0], [7.0, 7.0, -6.0]], "dev": [0.23240029435852813]}, "1797": {"P": [[-9.0, 7.0, 9.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.21322427928913573]}, "1798": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [8.0, 6.0, -7.0]], "dev": [0.19216096828354717]}, "1799": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [7.0, 7.0, -7.0]], "dev": [0.16850406791364572]}, "1800": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 8.0], [8.0, 8.0, -8.0]], "dev": [0.10655226083500707]}, "1801": {"P": [[-8.0, 8.0, 7.0], [7.0, -9.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.16843859634960515]}, "1802": {"P": [[-8.0, 7.0, 7.0], [7.0, -8.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.19201328678368468]}, "1803": {"P": [[-9.0, 8.0, 7.0], [9.0, -7.0, 7.0], [8.0, 7.0, -9.0]], "dev": [0.24974140627192248]}, "1804": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 9.0], [9.0, 6.0, -7.0]], "dev": [0.23204732610849957]}, "1805": {"P": [[-9.0, 8.0, 7.0], [7.0, -9.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.24965034694964874]}, "1806": {"P": [[-9.0, 7.0, 9.0], [7.0, -7.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.19187458277321812]}, "1807": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.14077639646709614]}, "1808": {"P": [[-8.0, 8.0, 8.0], [7.0, -8.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.10640624431547846]}, "1809": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.19177641057362646]}, "1810": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 9.0, -9.0]], "dev": [0.21271865528415182]}, "1811": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.23176330384600172]}, "1812": {"P": [[-10.0, 8.0, 8.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.2493455592495788]}, "1813": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.21261414786002242]}, "1814": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.19162386923779109]}, "1815": {"P": [[-7.0, 7.0, 8.0], [8.0, -9.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.14061829525334535]}, "1816": {"P": [[-8.0, 8.0, 7.0], [7.0, -6.0, 8.0], [8.0, 8.0, -8.0]], "dev": [0.16802779604717968]}, "1817": {"P": [[-9.0, 7.0, 8.0], [7.0, -9.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.2124818274476683]}, "1818": {"P": [[-9.0, 8.0, 7.0], [6.0, -6.0, 8.0], [9.0, 8.0, -8.0]], "dev": [0.24910140420610144]}, "1819": {"P": [[-8.0, 6.0, 9.0], [9.0, -7.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.24906223357690147]}, "1820": {"P": [[-9.0, 7.0, 9.0], [7.0, -7.0, 7.0], [7.0, 9.0, -7.0]], "dev": [0.21238782422866193]}, "1821": {"P": [[-9.0, 7.0, 8.0], [7.0, -6.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.23139719683929616]}, "1822": {"P": [[-8.0, 6.0, 9.0], [7.0, -8.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.19140834537398685]}, "1823": {"P": [[-8.0, 7.0, 8.0], [7.0, -8.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.19138385476045]}, "1824": {"P": [[-8.0, 6.0, 9.0], [8.0, -8.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.19135990533748284]}, "1825": {"P": [[-8.0, 10.0, 7.0], [6.0, -7.0, 8.0], [9.0, 6.0, -7.0]], "dev": [0.26524724975685099]}, "1826": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.23123141441207701]}, "1827": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 9.0], [9.0, 7.0, -7.0]], "dev": [0.24876438966905134]}, "1828": {"P": [[-8.0, 6.0, 10.0], [7.0, -9.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.24872908825547174]}, "1829": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 7.0], [7.0, 9.0, -7.0]], "dev": [0.21213249923165448]}, "1830": {"P": [[-8.0, 8.0, 7.0], [6.0, -8.0, 10.0], [8.0, 7.0, -7.0]], "dev": [0.21210658173799646]}, "1831": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.21208115142763312]}, "1832": {"P": [[-7.0, 9.0, 6.0], [8.0, -8.0, 8.0], [8.0, 7.0, -9.0]], "dev": [0.21205620742222056]}, "1833": {"P": [[-9.0, 6.0, 9.0], [7.0, -6.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.2649407545173415]}, "1834": {"P": [[-8.0, 6.0, 9.0], [9.0, -8.0, 7.0], [7.0, 8.0, -6.0]], "dev": [0.23098979511812359]}, "1835": {"P": [[-9.0, 7.0, 9.0], [7.0, -6.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.2484938710685376]}, "1836": {"P": [[-10.0, 8.0, 8.0], [8.0, -7.0, 7.0], [6.0, 9.0, -7.0]], "dev": [0.24846195867851828]}, "1837": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 9.0], [8.0, 8.0, -7.0]], "dev": [0.23090661636297832]}, "1838": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.21191670645389893]}, "1839": {"P": [[-10.0, 7.0, 9.0], [7.0, -8.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.26472773021246965]}, "1840": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.2308274558030261]}, "1841": {"P": [[-10.0, 7.0, 9.0], [7.0, -6.0, 7.0], [7.0, 9.0, -7.0]], "dev": [0.2800580711374191]}, "1842": {"P": [[-9.0, 6.0, 9.0], [8.0, -7.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.26462658005141848]}, "1843": {"P": [[-9.0, 9.0, 7.0], [6.0, -7.0, 10.0], [7.0, 7.0, -6.0]], "dev": [0.27998462779482364]}, "1844": {"P": [[-10.0, 8.0, 8.0], [7.0, -7.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.24822172756760619]}, "1845": {"P": [[-9.0, 8.0, 7.0], [6.0, -7.0, 9.0], [9.0, 7.0, -7.0]], "dev": [0.24819357101979661]}, "1846": {"P": [[-10.0, 8.0, 8.0], [6.0, -7.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.2481658280649125]}, "1847": {"P": [[-7.0, 8.0, 8.0], [7.0, -9.0, 8.0], [9.0, 6.0, -7.0]], "dev": [0.23065825191524586]}, "1848": {"P": [[-9.0, 6.0, 9.0], [8.0, -8.0, 8.0], [6.0, 9.0, -7.0]], "dev": [0.2481115799509562]}, "1849": {"P": [[-9.0, 7.0, 8.0], [7.0, -9.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.24808507329970844]}, "1850": {"P": [[-10.0, 8.0, 10.0], [6.0, -7.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.28759672721492224]}, "1851": {"P": [[-8.0, 9.0, 6.0], [7.0, -6.0, 9.0], [7.0, 8.0, -8.0]], "dev": [0.26434435216626279]}, "1852": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [7.0, 9.0, -6.0]], "dev": [0.26431494348781998]}, "1853": {"P": [[-9.0, 8.0, 9.0], [8.0, -9.0, 9.0], [6.0, 7.0, -8.0]], "dev": [0.27245220630089001]}, "1854": {"P": [[-9.0, 8.0, 7.0], [7.0, -6.0, 9.0], [7.0, 8.0, -8.0]], "dev": [0.26425728776118518]}, "1855": {"P": [[-9.0, 8.0, 9.0], [6.0, -7.0, 7.0], [8.0, 9.0, -10.0]], "dev": [0.27230597301825821]}, "1856": {"P": [[-10.0, 8.0, 8.0], [8.0, -9.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.27223346553994104]}, "1857": {"P": [[-9.0, 6.0, 9.0], [8.0, -9.0, 8.0], [7.0, 8.0, -6.0]], "dev": [0.26417369780016348]}, "1858": {"P": [[-10.0, 8.0, 9.0], [9.0, -9.0, 7.0], [8.0, 6.0, -8.0]], "dev": [0.2720896661831555]}, "1859": {"P": [[-10.0, 7.0, 9.0], [9.0, -8.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.27201837321317984]}, "1860": {"P": [[-10.0, 9.0, 8.0], [9.0, -9.0, 6.0], [8.0, 7.0, -8.0]], "dev": [0.27194748398723162]}, "1861": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 7.0], [8.0, 9.0, -10.0]], "dev": [0.2718769979586933]}, "1862": {"P": [[-10.0, 8.0, 8.0], [8.0, -9.0, 8.0], [8.0, 7.0, -9.0]], "dev": [0.25603617574145743]}, "1863": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 6.0], [9.0, 9.0, -9.0]], "dev": [0.25596802062757784]}, "1864": {"P": [[-8.0, 7.0, 9.0], [9.0, -7.0, 8.0], [8.0, 6.0, -6.0]], "dev": [0.25590028742856546]}, "1865": {"P": [[-10.0, 8.0, 9.0], [6.0, -7.0, 7.0], [9.0, 8.0, -9.0]], "dev": [0.27159907487434898]}, "1866": {"P": [[-8.0, 8.0, 7.0], [7.0, -8.0, 7.0], [8.0, 10.0, -10.0]], "dev": [0.25576608451293226]}, "1867": {"P": [[-10.0, 9.0, 8.0], [9.0, -9.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.2556996136637833]}, "1868": {"P": [[-10.0, 8.0, 8.0], [9.0, -8.0, 6.0], [9.0, 7.0, -8.0]], "dev": [0.25563356246445068]}, "1869": {"P": [[-7.0, 9.0, 7.0], [7.0, -6.0, 7.0], [8.0, 9.0, -7.0]], "dev": [0.25556793034725928]}, "1870": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 9.0], [8.0, 6.0, -8.0]], "dev": [0.23870676889898981]}, "1871": {"P": [[-8.0, 7.0, 9.0], [9.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.23864361026952635]}, "1872": {"P": [[-10.0, 8.0, 9.0], [8.0, -8.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.23858089375149716]}, "1873": {"P": [[-10.0, 9.0, 8.0], [8.0, -9.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.23851861875353705]}, "1874": {"P": [[-10.0, 8.0, 8.0], [9.0, -9.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.238456784683406]}, "1875": {"P": [[-10.0, 8.0, 9.0], [8.0, -7.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.23839539094799153]}, "1876": {"P": [[-10.0, 8.0, 9.0], [8.0, -8.0, 7.0], [9.0, 6.0, -8.0]], "dev": [0.23833443695331377]}, "1877": {"P": [[-10.0, 8.0, 9.0], [7.0, -8.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.25505789206251195]}, "1878": {"P": [[-9.0, 8.0, 9.0], [6.0, -6.0, 7.0], [9.0, 8.0, -8.0]], "dev": [0.23821384580592983]}, "1879": {"P": [[-9.0, 8.0, 8.0], [7.0, -9.0, 8.0], [7.0, 9.0, -9.0]], "dev": [0.22009824337922099]}, "1880": {"P": [[-9.0, 8.0, 8.0], [8.0, -8.0, 6.0], [9.0, 8.0, -9.0]], "dev": [0.22004085230768192]}, "1881": {"P": [[-9.0, 8.0, 7.0], [9.0, -9.0, 7.0], [9.0, 7.0, -8.0]], "dev": [0.21998392888456547]}, "1882": {"P": [[-10.0, 8.0, 9.0], [8.0, -9.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.23797791416941932]}, "1883": {"P": [[-10.0, 9.0, 9.0], [7.0, -7.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.21987148247475344]}, "1884": {"P": [[-10.0, 8.0, 10.0], [8.0, -7.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.25463335073991544]}, "1885": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 9.0], [9.0, 6.0, -8.0]], "dev": [0.23780554090290354]}, "1886": {"P": [[-9.0, 8.0, 8.0], [8.0, -9.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.21970630450850764]}, "1887": {"P": [[-8.0, 6.0, 9.0], [8.0, -7.0, 8.0], [9.0, 7.0, -8.0]], "dev": [0.19999072480142216]}, "1888": {"P": [[-9.0, 8.0, 7.0], [8.0, -8.0, 7.0], [9.0, 8.0, -9.0]], "dev": [0.19993906618557983]}, "1889": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [9.0, 8.0, -9.0]], "dev": [0.19988791028693589]}, "1890": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [9.0, 7.0, -8.0]], "dev": [0.19983725643121922]}, "1891": {"P": [[-10.0, 9.0, 7.0], [9.0, -8.0, 7.0], [8.0, 7.0, -8.0]], "dev": [0.23747248940388149]}, "1892": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 8.0], [9.0, 8.0, -10.0]], "dev": [0.23741848978646332]}, "1893": {"P": [[-10.0, 8.0, 9.0], [7.0, -6.0, 7.0], [9.0, 7.0, -7.0]], "dev": [0.25411699863673831]}, "1894": {"P": [[-9.0, 8.0, 8.0], [8.0, -8.0, 6.0], [8.0, 9.0, -8.0]], "dev": [0.21928619338000022]}, "1895": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 9.0], [8.0, 7.0, -8.0]], "dev": [0.19959149405707949]}, "1896": {"P": [[-8.0, 7.0, 7.0], [8.0, -8.0, 8.0], [9.0, 8.0, -9.0]], "dev": [0.1777444421422974]}, "1897": {"P": [[-9.0, 9.0, 7.0], [8.0, -9.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.17769963191192237]}, "1898": {"P": [[-10.0, 9.0, 8.0], [8.0, -8.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.19945001756001177]}, "1899": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [9.0, 7.0, -7.0]], "dev": [0.21903855421511775]}, "1900": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.23700190410487165]}, "1901": {"P": [[-10.0, 8.0, 9.0], [7.0, -8.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.23695174812694669]}, "1902": {"P": [[-9.0, 8.0, 9.0], [7.0, -6.0, 7.0], [8.0, 8.0, -7.0]], "dev": [0.19926832136186992]}, "1903": {"P": [[-9.0, 9.0, 8.0], [6.0, -8.0, 9.0], [7.0, 8.0, -8.0]], "dev": [0.19922413180364645]}, "1904": {"P": [[-8.0, 7.0, 8.0], [8.0, -8.0, 8.0], [9.0, 7.0, -9.0]], "dev": [0.15254389888316866]}, "1905": {"P": [[-9.0, 8.0, 9.0], [7.0, -8.0, 8.0], [8.0, 7.0, -8.0]], "dev": [0.15250630311945398]}, "1906": {"P": [[-9.0, 7.0, 9.0], [7.0, -7.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.1773210702283631]}, "1907": {"P": [[-10.0, 7.0, 9.0], [7.0, -7.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.23665969479653071]}, "1908": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 7.0], [9.0, 7.0, -7.0]], "dev": [0.23661249389876526]}, "1909": {"P": [[-10.0, 7.0, 9.0], [8.0, -8.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.25327970989783338]}, "1910": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 6.0], [8.0, 9.0, -8.0]], "dev": [0.21853371839793193]}, "1911": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.17712985963527636]}, "1912": {"P": [[-9.0, 8.0, 8.0], [8.0, -8.0, 7.0], [8.0, 8.0, -8.0]], "dev": [0.12249326263064095]}, "1913": {"P": [[-9.0, 8.0, 9.0], [7.0, -7.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.15222805942729123]}, "1914": {"P": [[-8.0, 7.0, 8.0], [10.0, -8.0, 6.0], [8.0, 8.0, -7.0]], "dev": [0.21836363668124059]}, "1915": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.21832223199514511]}, "1916": {"P": [[-8.0, 7.0, 9.0], [10.0, -9.0, 7.0], [7.0, 7.0, -8.0]], "dev": [0.23624994290269608]}, "1917": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 7.0], [7.0, 10.0, -9.0]], "dev": [0.23620649669888424]}, "1918": {"P": [[-9.0, 8.0, 8.0], [8.0, -7.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.19861997861137706]}, "1919": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [8.0, 7.0, -8.0]], "dev": [0.15204546746810541]}, "1920": {"P": [[-8.0, 7.0, 8.0], [8.0, -8.0, 8.0], [8.0, 8.0, -8.0]], "dev": [0.082445610752773818]}, "1921": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 8.0], [8.0, 8.0, -9.0]], "dev": [0.1519895345274232]}, "1922": {"P": [[-9.0, 8.0, 9.0], [8.0, -7.0, 7.0], [7.0, 8.0, -9.0]], "dev": [0.19847727447621236]}, "1923": {"P": [[-10.0, 9.0, 8.0], [8.0, -7.0, 7.0], [7.0, 8.0, -9.0]], "dev": [0.23595449284779604]}, "1924": {"P": [[-9.0, 7.0, 8.0], [6.0, -7.0, 9.0], [8.0, 9.0, -9.0]], "dev": [0.2359139318975822]}, "1925": {"P": [[-9.0, 7.0, 8.0], [9.0, -8.0, 7.0], [7.0, 9.0, -9.0]], "dev": [0.21793254723711819]}, "1926": {"P": [[-7.0, 7.0, 8.0], [8.0, -7.0, 8.0], [8.0, 8.0, -10.0]], "dev": [0.21789600013627849]}, "1927": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.17660835327553268]}, "1928": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 8.0], [8.0, 8.0, -8.0]], "dev": [0.12212207547571646]}, "1929": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 8.0], [8.0, 7.0, -7.0]], "dev": [0.17655273555905202]}, "1930": {"P": [[-9.0, 8.0, 9.0], [8.0, -6.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.19821479711421969]}, "1931": {"P": [[-9.0, 9.0, 7.0], [7.0, -6.0, 7.0], [9.0, 8.0, -10.0]], "dev": [0.25229320107659331]}, "1932": {"P": [[-7.0, 7.0, 7.0], [9.0, -7.0, 7.0], [8.0, 9.0, -10.0]], "dev": [0.23560413887155968]}, "1933": {"P": [[-10.0, 8.0, 9.0], [7.0, -7.0, 8.0], [8.0, 7.0, -6.0]], "dev": [0.23556724205393242]}, "1934": {"P": [[-9.0, 8.0, 8.0], [7.0, -7.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.17642288475641418]}, "1935": {"P": [[-9.0, 8.0, 8.0], [7.0, -8.0, 9.0], [8.0, 7.0, -7.0]], "dev": [0.15166626268793126]}, "1936": {"P": [[-9.0, 7.0, 9.0], [8.0, -8.0, 8.0], [7.0, 8.0, -7.0]], "dev": [0.15164770135182989]}, "1937": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.19800996245851438]}, "1938": {"P": [[-9.0, 7.0, 8.0], [7.0, -8.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.19798257634185654]}, "1939": {"P": [[-9.0, 8.0, 9.0], [8.0, -9.0, 7.0], [8.0, 7.0, -6.0]], "dev": [0.23535432176280313]}, "1940": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.23532023918712808]}, "1941": {"P": [[-9.0, 8.0, 7.0], [9.0, -7.0, 7.0], [7.0, 9.0, -8.0]], "dev": [0.21739991498602865]}, "1942": {"P": [[-8.0, 6.0, 10.0], [7.0, -8.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.2173702862037821]}, "1943": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 8.0], [8.0, 8.0, -7.0]], "dev": [0.17622196391408682]}, "1944": {"P": [[-9.0, 8.0, 8.0], [6.0, -6.0, 9.0], [8.0, 8.0, -8.0]], "dev": [0.21731230750578096]}, "1945": {"P": [[-9.0, 7.0, 8.0], [8.0, -9.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.2172839561957538]}, "1946": {"P": [[-6.0, 7.0, 8.0], [8.0, -10.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.26730072412483619]}, "1947": {"P": [[-9.0, 6.0, 9.0], [7.0, -7.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.2516923251391972]}, "1948": {"P": [[-7.0, 7.0, 8.0], [9.0, -7.0, 7.0], [8.0, 8.0, -10.0]], "dev": [0.23506190575400127]}, "1949": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 7.0], [7.0, 10.0, -8.0]], "dev": [0.23503139532152875]}, "1950": {"P": [[-9.0, 7.0, 9.0], [7.0, -8.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.19769012722215701]}, "1951": {"P": [[-9.0, 8.0, 7.0], [8.0, -7.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.19766874840482132]}, "1952": {"P": [[-9.0, 9.0, 7.0], [7.0, -6.0, 8.0], [8.0, 8.0, -8.0]], "dev": [0.19764782625870356]}, "1953": {"P": [[-9.0, 6.0, 9.0], [8.0, -7.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.23491328396080891]}, "1954": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 9.0], [7.0, 9.0, -8.0]], "dev": [0.21704780957135597]}, "1955": {"P": [[-9.0, 7.0, 8.0], [8.0, -8.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.23485657744323815]}, "1956": {"P": [[-8.0, 9.0, 6.0], [8.0, -6.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.25139642215171465]}, "1957": {"P": [[-10.0, 7.0, 9.0], [8.0, -8.0, 7.0], [7.0, 9.0, -7.0]], "dev": [0.25136538861312901]}, "1958": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 9.0], [6.0, 10.0, -9.0]], "dev": [0.28154813476897361]}, "1959": {"P": [[-9.0, 9.0, 7.0], [7.0, -6.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.2169312834338252]}, "1960": {"P": [[-10.0, 8.0, 8.0], [7.0, -8.0, 8.0], [9.0, 7.0, -6.0]], "dev": [0.28147490588021279]}, "1961": {"P": [[-9.0, 8.0, 8.0], [7.0, -9.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.21688757986342502]}, "1962": {"P": [[-9.0, 8.0, 8.0], [8.0, -6.0, 8.0], [7.0, 8.0, -9.0]], "dev": [0.25121570933610887]}, "1963": {"P": [[-10.0, 8.0, 9.0], [7.0, -6.0, 8.0], [6.0, 9.0, -8.0]], "dev": [0.26670446469398257]}, "1964": {"P": [[-10.0, 7.0, 9.0], [8.0, -7.0, 7.0], [7.0, 9.0, -7.0]], "dev": [0.25115838759330744]}, "1965": {"P": [[-9.0, 6.0, 9.0], [7.0, -8.0, 8.0], [8.0, 9.0, -7.0]], "dev": [0.26664093509674697]}, "1966": {"P": [[-10.0, 8.0, 8.0], [7.0, -7.0, 8.0], [7.0, 9.0, -7.0]], "dev": [0.23457242275562962]}, "1967": {"P": [[-7.0, 9.0, 6.0], [9.0, -6.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.26657878296772269]}, "1968": {"P": [[-9.0, 7.0, 8.0], [7.0, -7.0, 9.0], [7.0, 9.0, -7.0]], "dev": [0.23452575795863434]}, "1969": {"P": [[-10.0, 7.0, 9.0], [7.0, -6.0, 8.0], [7.0, 9.0, -8.0]], "dev": [0.26651800375674856]}, "1970": {"P": [[-10.0, 7.0, 9.0], [7.0, -8.0, 9.0], [6.0, 9.0, -7.0]], "dev": [0.2664881275733898]}, "1971": {"P": [[-9.0, 8.0, 7.0], [6.0, -6.0, 9.0], [8.0, 9.0, -8.0]], "dev": [0.26645859291288682]}, "1972": {"P": [[-10.0, 8.0, 8.0], [7.0, -9.0, 9.0], [7.0, 8.0, -6.0]], "dev": [0.26642939920626796]}, "1973": {"P": [[-10.0, 9.0, 7.0], [7.0, -7.0, 9.0], [7.0, 8.0, -7.0]], "dev": [0.25091831171576306]}, "1974": {"P": [[-9.0, 8.0, 8.0], [6.0, -8.0, 10.0], [8.0, 7.0, -6.0]], "dev": [0.25089342973285372]}, "1975": {"P": [[-9.0, 7.0, 9.0], [8.0, -9.0, 7.0], [7.0, 9.0, -6.0]], "dev": [0.28096778186921106]}, "1976": {"P": [[-9.0, 7.0, 8.0], [8.0, -7.0, 8.0], [6.0, 10.0, -8.0]], "dev": [0.25084473434750765]}, "1977": {"P": [[-10.0, 7.0, 9.0], [7.0, -9.0, 9.0], [8.0, 7.0, -6.0]], "dev": [0.28090571975107204]}, "1978": {"P": [[-10.0, 10.0, 9.0], [7.0, -8.0, 7.0], [7.0, 8.0, -8.0]], "dev": [0.2690159882458501]}, "1979": {"P": [[-8.0, 9.0, 7.0], [9.0, -7.0, 7.0], [8.0, 7.0, -10.0]], "dev": [0.28084495093069445]}, "1980": {"P": [[-8.0, 8.0, 6.0], [9.0, -9.0, 7.0], [9.0, 9.0, -9.0]], "dev": [0.2535888036647857]}, "1981": {"P": [[-6.0, 7.0, 7.0], [7.0, -9.0, 10.0], [7.0, 10.0, -8.0]], "dev": [0.26881586573883054]}, "1982": {"P": [[-10.0, 8.0, 9.0], [9.0, -9.0, 8.0], [8.0, 6.0, -8.0]], "dev": [0.25345908710849274]}, "1983": {"P": [[-9.0, 8.0, 8.0], [6.0, -8.0, 9.0], [9.0, 7.0, -6.0]], "dev": [0.26613060863461802]}, "1984": {"P": [[-10.0, 8.0, 8.0], [9.0, -9.0, 7.0], [9.0, 7.0, -9.0]], "dev": [0.25333087565903151]}, "1985": {"P": [[-10.0, 9.0, 10.0], [7.0, -6.0, 7.0], [8.0, 7.0, -7.0]], "dev": [0.26855405794143644]}, "1986": {"P": [[-10.0, 8.0, 10.0], [7.0, -8.0, 8.0], [8.0, 7.0, -9.0]], "dev": [0.25320416556183545]}, "1987": {"P": [[-10.0, 9.0, 10.0], [7.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.26842529821902128]}, "1988": {"P": [[-10.0, 8.0, 9.0], [8.0, -9.0, 9.0], [8.0, 6.0, -8.0]], "dev": [0.25307895305462264]}, "1989": {"P": [[-9.0, 7.0, 8.0], [9.0, -9.0, 9.0], [8.0, 7.0, -9.0]], "dev": [0.25301690721945236]}, "1990": {"P": [[-8.0, 7.0, 9.0], [8.0, -6.0, 7.0], [10.0, 7.0, -8.0]], "dev": [0.23669131357419207]}, "1991": {"P": [[-9.0, 8.0, 10.0], [8.0, -7.0, 8.0], [8.0, 6.0, -7.0]], "dev": [0.23663143481304597]}, "1992": {"P": [[-10.0, 8.0, 10.0], [7.0, -8.0, 7.0], [8.0, 8.0, -9.0]], "dev": [0.25283300572282347]}, "1993": {"P": [[-10.0, 9.0, 9.0], [9.0, -8.0, 7.0], [8.0, 6.0, -7.0]], "dev": [0.23651285766788338]}, "1994": {"P": [[-7.0, 8.0, 8.0], [8.0, -6.0, 7.0], [9.0, 8.0, -7.0]], "dev": [0.23645415830290631]}, "1995": {"P": [[-8.0, 7.0, 8.0], [7.0, -7.0, 7.0], [9.0, 10.0, -10.0]], "dev": [0.2526524483038014]}, "1996": {"P": [[-10.0, 8.0, 8.0], [8.0, -9.0, 9.0], [8.0, 7.0, -9.0]], "dev": [0.25259300341353508]}, "1997": {"P": [[-7.0, 9.0, 8.0], [8.0, -9.0, 9.0], [6.0, 8.0, -7.0]], "dev": [0.23628041113748552]}, "1998": {"P": [[-8.0, 8.0, 9.0], [6.0, -8.0, 9.0], [7.0, 9.0, -9.0]], "dev": [0.21876730967601721]}, "1999": {"P": [[-10.0, 9.0, 9.0], [7.0, -9.0, 8.0], [7.0, 8.0, -8.0]], "dev": [0.23616653387005629]}, "2000": {"P": [[-10.0, 7.0, 9.0], [8.0, -8.0, 8.0], [9.0, 7.0, -9.0]], "dev": [0.23611018000594305]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-sc2fcc.json000066400000000000000000006036411316323560300271670ustar00rootroot00000000000000{"1": {"P": [[0.0, 1.0, 1.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0]], "dev": [0.57831538992410225]}, "2": {"P": [[0.0, 1.0, 1.0], [1.0, 0.0, 1.0], [1.0, 1.0, 0.0]], "dev": [0.0]}, "3": {"P": [[0.0, 1.0, 1.0], [1.0, 0.0, 1.0], [1.0, 2.0, 0.0]], "dev": [0.39942425721649877]}, "4": {"P": [[0.0, 1.0, 1.0], [1.0, 0.0, 1.0], [2.0, 2.0, 0.0]], "dev": [0.4637666125390128]}, "5": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 1.0], [1.0, 1.0, 0.0]], "dev": [0.42594057219832282]}, "6": {"P": [[0.0, 1.0, 1.0], [2.0, 0.0, 2.0], [2.0, 1.0, 0.0]], "dev": [0.42741809543631204]}, "7": {"P": [[0.0, 2.0, 1.0], [2.0, 1.0, 2.0], [1.0, 2.0, 0.0]], "dev": [0.51708194378470274]}, "8": {"P": [[0.0, 1.0, 1.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.36881371819258779]}, "9": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 1.0], [1.0, 2.0, 0.0]], "dev": [0.3874559731434678]}, "10": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 1.0], [2.0, 2.0, 0.0]], "dev": [0.33905842239378342]}, "11": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 1.0], [3.0, 2.0, 0.0]], "dev": [0.47913413040336011]}, "12": {"P": [[0.0, 1.0, 2.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.25142369400684522]}, "13": {"P": [[0.0, 2.0, 1.0], [2.0, 1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.47227206152164258]}, "14": {"P": [[-1.0, 2.0, 2.0], [2.0, 0.0, 2.0], [2.0, 1.0, 0.0]], "dev": [0.35755920591097251]}, "15": {"P": [[0.0, 2.0, 3.0], [2.0, 1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.45558984424434795]}, "16": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [2.7194799110210365e-16]}, "17": {"P": [[0.0, 2.0, 3.0], [3.0, 0.0, 2.0], [2.0, 1.0, 0.0]], "dev": [0.41925177288086463]}, "18": {"P": [[0.0, 2.0, 2.0], [2.0, 1.0, 2.0], [3.0, 3.0, 0.0]], "dev": [0.39630129885235688]}, "19": {"P": [[-1.0, 2.0, 2.0], [2.0, 0.0, 1.0], [2.0, 3.0, 0.0]], "dev": [0.41455143055511906]}, "20": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.2119726596163039]}, "21": {"P": [[0.0, 2.0, 3.0], [3.0, 1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.4005642916390727]}, "22": {"P": [[1.0, 3.0, 2.0], [2.0, 0.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.34866155636305746]}, "23": {"P": [[0.0, 2.0, 3.0], [3.0, 1.0, 2.0], [2.0, 3.0, 1.0]], "dev": [0.43485766069689052]}, "24": {"P": [[0.0, 3.0, 2.0], [3.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.25327235085346522]}, "25": {"P": [[-1.0, 2.0, 3.0], [3.0, 1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.41400409023754076]}, "26": {"P": [[0.0, 2.0, 2.0], [2.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.24572047124798821]}, "27": {"P": [[0.0, 2.0, 3.0], [2.0, 1.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.35279150864770115]}, "28": {"P": [[-1.0, 2.0, 2.0], [3.0, 0.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.31928991266193602]}, "29": {"P": [[0.0, 2.0, 3.0], [3.0, 0.0, 2.0], [2.0, 3.0, 1.0]], "dev": [0.32567139467990969]}, "30": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 2.0], [2.0, 2.0, 0.0]], "dev": [0.24887115246268596]}, "31": {"P": [[0.0, 1.0, 3.0], [3.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.37446605779955133]}, "32": {"P": [[0.0, 2.0, 3.0], [2.0, 0.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.31138701398463375]}, "33": {"P": [[0.0, 2.0, 3.0], [3.0, 0.0, 2.0], [3.0, 3.0, 1.0]], "dev": [0.30558731795236288]}, "34": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.30933023170066365]}, "35": {"P": [[0.0, 2.0, 3.0], [3.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.24019850430448306]}, "36": {"P": [[0.0, 2.0, 2.0], [3.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.22134333483150029]}, "37": {"P": [[-1.0, 2.0, 3.0], [2.0, -1.0, 2.0], [3.0, 2.0, 0.0]], "dev": [0.37408023964561132]}, "38": {"P": [[0.0, 3.0, 2.0], [3.0, 1.0, 4.0], [2.0, 3.0, 0.0]], "dev": [0.37459443913021578]}, "39": {"P": [[0.0, 2.0, 3.0], [3.0, 0.0, 2.0], [3.0, 3.0, 0.0]], "dev": [0.2148002426356915]}, "40": {"P": [[0.0, 3.0, 2.0], [3.0, -1.0, 3.0], [2.0, 3.0, 0.0]], "dev": [0.28219622680384232]}, "41": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 2.0], [2.0, 3.0, 0.0]], "dev": [0.30769271374857549]}, "42": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.2798465647734612]}, "43": {"P": [[0.0, 3.0, 2.0], [4.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.30356053453662329]}, "44": {"P": [[-1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.32095318031409176]}, "45": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.1617391969239837]}, "46": {"P": [[0.0, 2.0, 3.0], [4.0, 0.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.3118590729016128]}, "47": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 2.0], [2.0, 3.0, -1.0]], "dev": [0.361826210744153]}, "48": {"P": [[-1.0, 2.0, 3.0], [3.0, 0.0, 3.0], [2.0, 3.0, 0.0]], "dev": [0.28047080910614658]}, "49": {"P": [[-1.0, 2.0, 3.0], [2.0, 0.0, 3.0], [3.0, 3.0, -1.0]], "dev": [0.32990626814076401]}, "50": {"P": [[0.0, 2.0, 3.0], [4.0, 0.0, 3.0], [3.0, 2.0, -1.0]], "dev": [0.33694230147060117]}, "51": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 2.0, 0.0]], "dev": [0.23452251878934738]}, "52": {"P": [[-1.0, 2.0, 3.0], [3.0, 1.0, 3.0], [3.0, 3.0, -1.0]], "dev": [0.33473260102989622]}, "53": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 2.0], [3.0, 4.0, 1.0]], "dev": [0.33550405862469074]}, "54": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 3.0, 0.0]], "dev": [0.0]}, "55": {"P": [[0.0, 3.0, 2.0], [3.0, 1.0, 3.0], [4.0, 3.0, -1.0]], "dev": [0.33138492476671455]}, "56": {"P": [[0.0, 3.0, 4.0], [3.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.27854429781623136]}, "57": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 2.0], [4.0, 3.0, 0.0]], "dev": [0.28436175968303767]}, "58": {"P": [[1.0, 4.0, 3.0], [3.0, 0.0, 4.0], [3.0, 2.0, 0.0]], "dev": [0.32084628265681081]}, "59": {"P": [[0.0, 3.0, 2.0], [4.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.27407735846670606]}, "60": {"P": [[0.0, 3.0, 3.0], [3.0, 1.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.26145887293805192]}, "61": {"P": [[-1.0, 2.0, 3.0], [4.0, 0.0, 3.0], [4.0, 3.0, 1.0]], "dev": [0.35221496082934622]}, "62": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 2.0], [3.0, 4.0, 0.0]], "dev": [0.2811395398917324]}, "63": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.14456232090797777]}, "64": {"P": [[-1.0, 3.0, 3.0], [3.0, -1.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.28099234801985812]}, "65": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 3.0], [3.0, 3.0, 1.0]], "dev": [0.29120491345237637]}, "66": {"P": [[0.0, 3.0, 4.0], [3.0, 0.0, 3.0], [3.0, 4.0, 1.0]], "dev": [0.24291178168030175]}, "67": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 3.0], [3.0, 4.0, 1.0]], "dev": [0.30858226026415275]}, "68": {"P": [[0.0, 3.0, 4.0], [3.0, 1.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.26313917604795067]}, "69": {"P": [[-1.0, 3.0, 3.0], [4.0, 1.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.28194421151957172]}, "70": {"P": [[-1.0, 3.0, 3.0], [3.0, 1.0, 3.0], [4.0, 3.0, -1.0]], "dev": [0.30181594719463822]}, "71": {"P": [[0.0, 3.0, 2.0], [4.0, 0.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.30119496725734141]}, "72": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.17524012583375376]}, "73": {"P": [[0.0, 4.0, 3.0], [5.0, 0.0, 4.0], [3.0, 3.0, 1.0]], "dev": [0.33927550047114113]}, "74": {"P": [[-1.0, 4.0, 3.0], [3.0, 0.0, 4.0], [3.0, 2.0, 0.0]], "dev": [0.30001694433052745]}, "75": {"P": [[0.0, 3.0, 3.0], [3.0, 0.0, 4.0], [4.0, 3.0, 0.0]], "dev": [0.17256358001658728]}, "76": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 4.0], [3.0, 4.0, 1.0]], "dev": [0.29333914930846938]}, "77": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 3.0], [4.0, 3.0, 1.0]], "dev": [0.28061301690721085]}, "78": {"P": [[-1.0, 4.0, 3.0], [3.0, 1.0, 4.0], [3.0, 3.0, 0.0]], "dev": [0.26999761349589391]}, "79": {"P": [[0.0, 4.0, 3.0], [3.0, 0.0, 4.0], [4.0, 3.0, 1.0]], "dev": [0.23460222218416416]}, "80": {"P": [[0.0, 3.0, 4.0], [3.0, 1.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.24016771773683604]}, "81": {"P": [[0.0, 3.0, 3.0], [3.0, -1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.22528989898803486]}, "82": {"P": [[0.0, 2.0, 4.0], [4.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.26786328593241115]}, "83": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.3092101361628099]}, "84": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.17637261786958522]}, "85": {"P": [[-1.0, 3.0, 3.0], [3.0, 1.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.30326373425068454]}, "86": {"P": [[-1.0, 3.0, 4.0], [3.0, 1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.30252545995036828]}, "87": {"P": [[0.0, 4.0, 3.0], [4.0, 1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.22334075183604624]}, "88": {"P": [[0.0, 4.0, 3.0], [3.0, 1.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.22145053325544187]}, "89": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [4.0, 3.0, 1.0]], "dev": [0.26108985108719568]}, "90": {"P": [[0.0, 3.0, 3.0], [3.0, -1.0, 4.0], [3.0, 4.0, -1.0]], "dev": [0.2679441497905326]}, "91": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.17320574277937922]}, "92": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 3.0], [4.0, 4.0, 1.0]], "dev": [0.25637323274034873]}, "93": {"P": [[0.0, 4.0, 3.0], [3.0, -1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.2222651197642041]}, "94": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [2.0, 4.0, 0.0]], "dev": [0.30318894311120009]}, "95": {"P": [[0.0, 3.0, 4.0], [4.0, 1.0, 3.0], [3.0, 5.0, 0.0]], "dev": [0.28780184100565398]}, "96": {"P": [[0.0, 3.0, 3.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.15923942630740512]}, "97": {"P": [[-1.0, 3.0, 3.0], [3.0, 0.0, 4.0], [3.0, 4.0, -1.0]], "dev": [0.27155839219974343]}, "98": {"P": [[-1.0, 3.0, 3.0], [3.0, 1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.29471603114493689]}, "99": {"P": [[-1.0, 4.0, 3.0], [4.0, 1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.27201422558310656]}, "100": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.1568232641802908]}, "101": {"P": [[0.0, 5.0, 3.0], [3.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.26871227373374229]}, "102": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [5.0, 3.0, 0.0]], "dev": [0.2810054673786026]}, "103": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 4.0, 0.0]], "dev": [0.22454613345977698]}, "104": {"P": [[-1.0, 4.0, 3.0], [3.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.24552531593365326]}, "105": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.20555265942246434]}, "106": {"P": [[-1.0, 4.0, 3.0], [4.0, -1.0, 4.0], [3.0, 4.0, 1.0]], "dev": [0.27862746265760963]}, "107": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 5.0, 0.0]], "dev": [0.24449677329572317]}, "108": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.20536242628961493]}, "109": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.22239619352422363]}, "110": {"P": [[0.0, 4.0, 3.0], [3.0, 1.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.30076208079693634]}, "111": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.23472578363817917]}, "112": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [0.11932660554684606]}, "113": {"P": [[0.0, 3.0, 4.0], [5.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.23159448796408577]}, "114": {"P": [[0.0, 5.0, 3.0], [4.0, 1.0, 5.0], [3.0, 4.0, 0.0]], "dev": [0.29448504193011488]}, "115": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.26788786505748013]}, "116": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.20761970608125513]}, "117": {"P": [[-1.0, 5.0, 4.0], [4.0, 0.0, 3.0], [4.0, 3.0, 0.0]], "dev": [0.25264388638367319]}, "118": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 5.0], [5.0, 3.0, 0.0]], "dev": [0.31639804036182861]}, "119": {"P": [[0.0, 4.0, 3.0], [5.0, 0.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.26395301732907017]}, "120": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 4.0], [4.0, 3.0, -1.0]], "dev": [0.24576904259773549]}, "121": {"P": [[-1.0, 3.0, 4.0], [3.0, 0.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.24617996528159361]}, "122": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 3.0], [3.0, 5.0, 0.0]], "dev": [0.27741353231605698]}, "123": {"P": [[-1.0, 4.0, 3.0], [4.0, 0.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.25051344240766132]}, "124": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [4.0, 4.0, 0.0]], "dev": [0.17534032746742437]}, "125": {"P": [[-1.0, 3.0, 4.0], [4.0, 1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.25018104055370627]}, "126": {"P": [[-1.0, 3.0, 4.0], [4.0, -1.0, 3.0], [3.0, 4.0, -1.0]], "dev": [0.30462583828235229]}, "127": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [4.0, 5.0, 1.0]], "dev": [0.25067495756506031]}, "128": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [4.0, 4.0, 0.0]], "dev": [2.7194799110210365e-16]}, "129": {"P": [[-1.0, 4.0, 5.0], [4.0, 1.0, 4.0], [3.0, 4.0, 0.0]], "dev": [0.24937251513535094]}, "130": {"P": [[0.0, 3.0, 5.0], [4.0, 1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.27582506450423411]}, "131": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.24632642346564942]}, "132": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 3.0, 1.0]], "dev": [0.24520304676164065]}, "133": {"P": [[0.0, 3.0, 5.0], [5.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.24412884033389687]}, "134": {"P": [[-1.0, 4.0, 5.0], [4.0, 1.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.26905121575904933]}, "135": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.20343047024739797]}, "136": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.21358506090215873]}, "137": {"P": [[-1.0, 3.0, 5.0], [4.0, 1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.27462194717019878]}, "138": {"P": [[-1.0, 4.0, 3.0], [5.0, 0.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.27426906329695072]}, "139": {"P": [[0.0, 3.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.20536263899761537]}, "140": {"P": [[0.0, 4.0, 4.0], [4.0, 1.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.19574216196899125]}, "141": {"P": [[-1.0, 4.0, 3.0], [5.0, 1.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.26630023555802773]}, "142": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [4.0, 3.0, 1.0]], "dev": [0.28461222363500238]}, "143": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [4.0, 3.0, 0.0]], "dev": [0.21332959264940268]}, "144": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.10973232356472094]}, "145": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.21359368989549046]}, "146": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 4.0], [6.0, 4.0, 0.0]], "dev": [0.27062477403562396]}, "147": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 5.0], [5.0, 4.0, 1.0]], "dev": [0.25204147050039805]}, "148": {"P": [[0.0, 4.0, 4.0], [5.0, 1.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.18613408110808882]}, "149": {"P": [[0.0, 4.0, 5.0], [5.0, 1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.23802321434347559]}, "150": {"P": [[0.0, 5.0, 5.0], [5.0, 1.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.25278291407816333]}, "151": {"P": [[1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [4.0, 5.0, -1.0]], "dev": [0.21819348927475979]}, "152": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.23197432971802051]}, "153": {"P": [[1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [3.0, 5.0, 0.0]], "dev": [0.246503164644058]}, "154": {"P": [[0.0, 4.0, 3.0], [5.0, 0.0, 4.0], [4.0, 6.0, 0.0]], "dev": [0.27236976435799504]}, "155": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.19747980669862519]}, "156": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.21436079804158731]}, "157": {"P": [[-1.0, 4.0, 4.0], [5.0, -1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.23098935458235545]}, "158": {"P": [[1.0, 5.0, 4.0], [4.0, 0.0, 5.0], [5.0, 3.0, 0.0]], "dev": [0.24287393400965557]}, "159": {"P": [[-1.0, 3.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.23080822564131484]}, "160": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.13417143809101423]}, "161": {"P": [[0.0, 3.0, 5.0], [5.0, 0.0, 3.0], [4.0, 5.0, 0.0]], "dev": [0.25816759928632643]}, "162": {"P": [[-1.0, 5.0, 4.0], [6.0, 0.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.27541410058701044]}, "163": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 3.0, 0.0]], "dev": [0.23078030837581651]}, "164": {"P": [[0.0, 5.0, 4.0], [4.0, 0.0, 5.0], [4.0, 4.0, 0.0]], "dev": [0.13292994679870093]}, "165": {"P": [[0.0, 4.0, 5.0], [5.0, 1.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.22747631359403953]}, "166": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.25347316492241861]}, "167": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [5.0, 3.0, 0.0]], "dev": [0.23836408602085093]}, "168": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 1.0]], "dev": [0.2088406888941032]}, "169": {"P": [[1.0, 5.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.18284101817501111]}, "170": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [4.0, 3.0, 0.0]], "dev": [0.2373833522337907]}, "171": {"P": [[-1.0, 5.0, 4.0], [5.0, 0.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.21395331043836374]}, "172": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.23686242796988383]}, "173": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [3.0, 5.0, 0.0]], "dev": [0.20788631364405022]}, "174": {"P": [[1.0, 4.0, 4.0], [5.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.2437563997892486]}, "175": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.18309434199025429]}, "176": {"P": [[0.0, 4.0, 4.0], [4.0, -1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.17458744093391856]}, "177": {"P": [[-1.0, 5.0, 4.0], [4.0, -1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.23599580626876576]}, "178": {"P": [[-1.0, 3.0, 5.0], [5.0, 0.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.26112647778516968]}, "179": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 4.0], [4.0, 5.0, 1.0]], "dev": [0.23864772228789646]}, "180": {"P": [[0.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.13674189691020733]}, "181": {"P": [[-1.0, 4.0, 5.0], [5.0, -1.0, 4.0], [4.0, 4.0, 1.0]], "dev": [0.23571842326295922]}, "182": {"P": [[0.0, 4.0, 5.0], [4.0, 1.0, 4.0], [6.0, 5.0, -1.0]], "dev": [0.26079607012637973]}, "183": {"P": [[-1.0, 4.0, 5.0], [4.0, 1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.23506313323422987]}, "184": {"P": [[1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.17415828496560851]}, "185": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.17333269630739331]}, "186": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.23584249514875097]}, "187": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 3.0], [5.0, 4.0, 0.0]], "dev": [0.23392335832002772]}, "188": {"P": [[-1.0, 5.0, 4.0], [4.0, 0.0, 5.0], [5.0, 3.0, 0.0]], "dev": [0.23602715901342911]}, "189": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.13525056446260386]}, "190": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 4.0], [5.0, 4.0, 1.0]], "dev": [0.2264910409200975]}, "191": {"P": [[1.0, 5.0, 4.0], [5.0, -1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.20135581252358986]}, "192": {"P": [[-1.0, 4.0, 5.0], [4.0, 0.0, 4.0], [5.0, 4.0, -1.0]], "dev": [0.2099044211674399]}, "193": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [3.0, 5.0, -1.0]], "dev": [0.23679683956676151]}, "194": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.2223521385484338]}, "195": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.19907061319011488]}, "196": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.17396537338903123]}, "197": {"P": [[0.0, 3.0, 5.0], [5.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.25035842078890819]}, "198": {"P": [[0.0, 3.0, 5.0], [5.0, 0.0, 4.0], [4.0, 6.0, 0.0]], "dev": [0.25566546575427374]}, "199": {"P": [[-1.0, 5.0, 4.0], [5.0, 0.0, 4.0], [4.0, 6.0, 1.0]], "dev": [0.24933969755807361]}, "200": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.12456222961869236]}, "201": {"P": [[-1.0, 4.0, 4.0], [4.0, -1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.21326005336045842]}, "202": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 4.0], [4.0, 4.0, -1.0]], "dev": [0.23146846101380331]}, "203": {"P": [[-1.0, 4.0, 5.0], [4.0, 1.0, 4.0], [6.0, 5.0, -1.0]], "dev": [0.2697521867112998]}, "204": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.21372801816767842]}, "205": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.12341571231539636]}, "206": {"P": [[0.0, 4.0, 5.0], [6.0, 0.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.21228467297738143]}, "207": {"P": [[0.0, 3.0, 5.0], [6.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.25972087136509836]}, "208": {"P": [[-1.0, 4.0, 4.0], [5.0, 0.0, 4.0], [4.0, 6.0, 0.0]], "dev": [0.23163809196984225]}, "209": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [4.0, 5.0, 0.0]], "dev": [0.17651667531383625]}, "210": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [4.0, 5.0, 1.0]], "dev": [0.19395231259245366]}, "211": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [6.0, 4.0, 1.0]], "dev": [0.23431865680182215]}, "212": {"P": [[-1.0, 5.0, 4.0], [6.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.22058864857306321]}, "213": {"P": [[-1.0, 5.0, 4.0], [3.0, -1.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.26530568286049611]}, "214": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [4.0, 6.0, 0.0]], "dev": [0.19341252899281883]}, "215": {"P": [[0.0, 4.0, 5.0], [5.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.19277161006953314]}, "216": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.16225124436890453]}, "217": {"P": [[-1.0, 4.0, 5.0], [4.0, 1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.21981805524215856]}, "218": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [4.0, 6.0, 1.0]], "dev": [0.24337347211125787]}, "219": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 6.0], [5.0, 4.0, 0.0]], "dev": [0.23011227660155689]}, "220": {"P": [[0.0, 4.0, 4.0], [5.0, -1.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.16256050046227205]}, "221": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.17561028332079262]}, "222": {"P": [[0.0, 4.0, 6.0], [5.0, 1.0, 6.0], [4.0, 5.0, 0.0]], "dev": [0.23783887569219722]}, "223": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 4.0], [5.0, 6.0, 1.0]], "dev": [0.23710828734233472]}, "224": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.18537460132851002]}, "225": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.094561867544074349]}, "226": {"P": [[0.0, 4.0, 5.0], [6.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.18396711133271734]}, "227": {"P": [[-1.0, 4.0, 4.0], [4.0, 1.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.26363370568781241]}, "228": {"P": [[0.0, 5.0, 4.0], [6.0, 1.0, 5.0], [4.0, 6.0, 0.0]], "dev": [0.23372027222203756]}, "229": {"P": [[-1.0, 5.0, 4.0], [4.0, 0.0, 5.0], [5.0, 4.0, -1.0]], "dev": [0.21252142768558635]}, "230": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.16465335520854496]}, "231": {"P": [[-1.0, 5.0, 4.0], [5.0, 1.0, 5.0], [5.0, 4.0, -1.0]], "dev": [0.2197554548796361]}, "232": {"P": [[-1.0, 4.0, 5.0], [5.0, 0.0, 4.0], [6.0, 4.0, -1.0]], "dev": [0.24258486869245563]}, "233": {"P": [[0.0, 3.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.25244859853303114]}, "234": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 4.0, 0.0]], "dev": [0.21172478481059065]}, "235": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.20575696843626473]}, "236": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 4.0], [5.0, 4.0, 0.0]], "dev": [0.20038411448942867]}, "237": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 4.0], [7.0, 5.0, 0.0]], "dev": [0.25031646082711029]}, "238": {"P": [[-1.0, 5.0, 4.0], [4.0, 0.0, 6.0], [5.0, 4.0, 0.0]], "dev": [0.22071649083812164]}, "239": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 4.0, 1.0]], "dev": [0.20759270401824167]}, "240": {"P": [[-1.0, 5.0, 4.0], [5.0, -1.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.19648785433267629]}, "241": {"P": [[-1.0, 4.0, 5.0], [4.0, 0.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.1967918937799171]}, "242": {"P": [[-1.0, 4.0, 4.0], [4.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.24349451642104319]}, "243": {"P": [[0.0, 3.0, 5.0], [6.0, 0.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.24560600839303809]}, "244": {"P": [[-1.0, 5.0, 5.0], [4.0, 0.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.19983138150012064]}, "245": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 5.0, 0.0]], "dev": [0.14021203433246501]}, "246": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.19983500899047055]}, "247": {"P": [[0.0, 5.0, 7.0], [5.0, 1.0, 5.0], [4.0, 5.0, 0.0]], "dev": [0.24680781403564975]}, "248": {"P": [[-1.0, 4.0, 5.0], [5.0, -1.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.24398049183130627]}, "249": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 6.0, 1.0]], "dev": [0.2002740733181354]}, "250": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [5.4389598220420729e-16]}, "251": {"P": [[1.0, 5.0, 5.0], [5.0, 0.0, 6.0], [5.0, 4.0, -1.0]], "dev": [0.19974068222748076]}, "252": {"P": [[1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.24269120964274829]}, "253": {"P": [[-1.0, 5.0, 6.0], [5.0, 2.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.26206612200883822]}, "254": {"P": [[1.0, 6.0, 5.0], [5.0, 1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.19772654186255603]}, "255": {"P": [[0.0, 6.0, 5.0], [4.0, 1.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.19719721772472601]}, "256": {"P": [[0.0, 4.0, 5.0], [6.0, 0.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.19668326565679087]}, "257": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [5.0, 4.0, 1.0]], "dev": [0.25890779424805305]}, "258": {"P": [[0.0, 6.0, 6.0], [5.0, 1.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.21692745240748401]}, "259": {"P": [[1.0, 5.0, 5.0], [4.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.21882108875264403]}, "260": {"P": [[0.0, 6.0, 4.0], [5.0, 1.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.19477870051773857]}, "261": {"P": [[-1.0, 5.0, 4.0], [6.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.2211101777964711]}, "262": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 5.0], [4.0, 6.0, 1.0]], "dev": [0.23550190319583489]}, "263": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.21322429295431647]}, "264": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.16087498621445037]}, "265": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.17149920337181401]}, "266": {"P": [[0.0, 5.0, 4.0], [4.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.22046002773401066]}, "267": {"P": [[0.0, 4.0, 5.0], [7.0, 0.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.25190863981355138]}, "268": {"P": [[0.0, 4.0, 4.0], [6.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.2202784109996575]}, "269": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 4.0, 0.0]], "dev": [0.16458736099153398]}, "270": {"P": [[0.0, 5.0, 5.0], [5.0, 1.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.15660340989260293]}, "271": {"P": [[-1.0, 6.0, 6.0], [4.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.21413918292730058]}, "272": {"P": [[0.0, 4.0, 6.0], [6.0, 0.0, 5.0], [4.0, 6.0, 1.0]], "dev": [0.23489755088875741]}, "273": {"P": [[-1.0, 6.0, 4.0], [6.0, 1.0, 6.0], [5.0, 5.0, 1.0]], "dev": [0.24829368277521671]}, "274": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.17198834432946805]}, "275": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.088441310320141506]}, "276": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.17223176942489726]}, "277": {"P": [[-1.0, 4.0, 5.0], [6.0, -1.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.21997709100777621]}, "278": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [5.0, 4.0, 1.0]], "dev": [0.22583570087941027]}, "279": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.20367005381784606]}, "280": {"P": [[1.0, 6.0, 5.0], [5.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.15079432399615894]}, "281": {"P": [[1.0, 6.0, 5.0], [5.0, 1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.19343126781589387]}, "282": {"P": [[0.0, 6.0, 5.0], [6.0, 0.0, 4.0], [4.0, 5.0, -1.0]], "dev": [0.22014797397932787]}, "283": {"P": [[0.0, 5.0, 7.0], [5.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.2145799661729566]}, "284": {"P": [[-1.0, 4.0, 5.0], [6.0, 0.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.22027884067222264]}, "285": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.20093615034895337]}, "286": {"P": [[0.0, 4.0, 6.0], [6.0, 1.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.20052305893485151]}, "287": {"P": [[-1.0, 4.0, 6.0], [6.0, -1.0, 4.0], [5.0, 5.0, 1.0]], "dev": [0.2586101432786449]}, "288": {"P": [[1.0, 5.0, 6.0], [5.0, 1.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.20050709447673756]}, "289": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.17511015961383808]}, "290": {"P": [[-1.0, 5.0, 5.0], [6.0, 0.0, 5.0], [6.0, 4.0, 0.0]], "dev": [0.18743692263393139]}, "291": {"P": [[-1.0, 4.0, 6.0], [5.0, 1.0, 6.0], [5.0, 5.0, -1.0]], "dev": [0.23061914373821701]}, "292": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 5.0], [4.0, 6.0, 0.0]], "dev": [0.19829128088827838]}, "293": {"P": [[0.0, 4.0, 5.0], [5.0, 0.0, 7.0], [6.0, 5.0, 0.0]], "dev": [0.21950845231405972]}, "294": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.15843556022959979]}, "295": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.17315816538002035]}, "296": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.18724584126034635]}, "297": {"P": [[-1.0, 5.0, 5.0], [5.0, 2.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.25583841318146333]}, "298": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.20525977264691189]}, "299": {"P": [[0.0, 5.0, 4.0], [6.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.18728617639767053]}, "300": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.10875962827470197]}, "301": {"P": [[-1.0, 4.0, 6.0], [6.0, 0.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.21710645173045826]}, "302": {"P": [[-1.0, 4.0, 5.0], [5.0, 1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.229686875740474]}, "303": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 4.0], [5.0, 7.0, 0.0]], "dev": [0.22965173137366912]}, "304": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 6.0], [6.0, 4.0, 0.0]], "dev": [0.18754225740090011]}, "305": {"P": [[0.0, 5.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.10808552464299651]}, "306": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 6.0], [5.0, 6.0, 1.0]], "dev": [0.18557988654907215]}, "307": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [7.0, 5.0, 1.0]], "dev": [0.24563008214095552]}, "308": {"P": [[-1.0, 7.0, 5.0], [6.0, 0.0, 5.0], [5.0, 5.0, 1.0]], "dev": [0.22108781071432557]}, "309": {"P": [[-1.0, 4.0, 6.0], [5.0, 1.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.23461807346582589]}, "310": {"P": [[-1.0, 6.0, 5.0], [5.0, 1.0, 6.0], [5.0, 5.0, 0.0]], "dev": [0.17016606878404605]}, "311": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.14964139896157452]}, "312": {"P": [[0.0, 4.0, 6.0], [6.0, 0.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.19881458018074111]}, "313": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.2031925736731757]}, "314": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.19343875387564047]}, "315": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.19333159837600031]}, "316": {"P": [[0.0, 4.0, 6.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.16966202387704182]}, "317": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 5.0], [5.0, 7.0, 1.0]], "dev": [0.22102413417569905]}, "318": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 4.0], [6.0, 6.0, 0.0]], "dev": [0.19306414751362555]}, "319": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.17335506186251501]}, "320": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.19292987110095275]}, "321": {"P": [[-1.0, 4.0, 6.0], [5.0, -1.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.23026441778973547]}, "322": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [4.0, 6.0, 0.0]], "dev": [0.21361358147350928]}, "323": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.19747996527713482]}, "324": {"P": [[0.0, 6.0, 6.0], [6.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.14822025695895513]}, "325": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.14268504063449727]}, "326": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 5.0], [6.0, 6.0, -1.0]], "dev": [0.19272970255358493]}, "327": {"P": [[-1.0, 6.0, 6.0], [5.0, -1.0, 5.0], [6.0, 4.0, 1.0]], "dev": [0.23208834943618642]}, "328": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 7.0], [4.0, 5.0, 0.0]], "dev": [0.23201762046470981]}, "329": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.19452258331617528]}, "330": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.11170040105361495]}, "331": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.19278350664323776]}, "332": {"P": [[-1.0, 5.0, 4.0], [5.0, 0.0, 6.0], [5.0, 7.0, 0.0]], "dev": [0.23180222947543597]}, "333": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.23166670557333516]}, "334": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.19231787696605729]}, "335": {"P": [[0.0, 5.0, 6.0], [5.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.14273249540934774]}, "336": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.14230353306406515]}, "337": {"P": [[-1.0, 5.0, 6.0], [5.0, -1.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.19309488691160762]}, "338": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [7.0, 5.0, 0.0]], "dev": [0.21107483867014062]}, "339": {"P": [[0.0, 6.0, 5.0], [7.0, -1.0, 6.0], [4.0, 5.0, 0.0]], "dev": [0.23046487029680307]}, "340": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 4.0], [5.0, 6.0, 0.0]], "dev": [0.19334563849050623]}, "341": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.11088322060295014]}, "342": {"P": [[0.0, 5.0, 6.0], [7.0, 0.0, 5.0], [5.0, 6.0, 1.0]], "dev": [0.18926444052103458]}, "343": {"P": [[1.0, 5.0, 5.0], [5.0, 0.0, 7.0], [6.0, 6.0, -1.0]], "dev": [0.20926241386315919]}, "344": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 4.0], [6.0, 5.0, 0.0]], "dev": [0.1911988516898821]}, "345": {"P": [[1.0, 6.0, 5.0], [5.0, -1.0, 5.0], [7.0, 5.0, 0.0]], "dev": [0.21115712342380411]}, "346": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [4.0, 6.0, -1.0]], "dev": [0.19402493478875751]}, "347": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 7.0, 1.0]], "dev": [0.18764184912494797]}, "348": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.18376490648669358]}, "349": {"P": [[0.0, 5.0, 6.0], [5.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.16426417896408219]}, "350": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.17285609619607895]}, "351": {"P": [[-1.0, 6.0, 5.0], [5.0, 1.0, 7.0], [6.0, 5.0, 1.0]], "dev": [0.22523723276271185]}, "352": {"P": [[0.0, 4.0, 6.0], [6.0, 0.0, 5.0], [5.0, 7.0, 0.0]], "dev": [0.21047384744497527]}, "353": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.18124002913823778]}, "354": {"P": [[1.0, 5.0, 5.0], [6.0, -1.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.16298178048199949]}, "355": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.14308020148419398]}, "356": {"P": [[0.0, 4.0, 6.0], [6.0, 0.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.2054700296186501]}, "357": {"P": [[-1.0, 4.0, 6.0], [6.0, 1.0, 5.0], [5.0, 7.0, 0.0]], "dev": [0.24484572867106286]}, "358": {"P": [[-1.0, 5.0, 7.0], [5.0, 1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.21853807571287923]}, "359": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.20477438630367678]}, "360": {"P": [[0.0, 5.0, 5.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.10235054473197183]}, "361": {"P": [[-1.0, 5.0, 5.0], [5.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.17562470213246317]}, "362": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.19054960831682796]}, "363": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 5.0], [4.0, 7.0, 0.0]], "dev": [0.24436877719020647]}, "364": {"P": [[-1.0, 4.0, 6.0], [5.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.2389261110956909]}, "365": {"P": [[0.0, 5.0, 6.0], [5.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.17605579241961719]}, "366": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.10171893213529287]}, "367": {"P": [[0.0, 6.0, 5.0], [6.0, 1.0, 6.0], [7.0, 5.0, 0.0]], "dev": [0.17530865448793242]}, "368": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [4.0, 6.0, 0.0]], "dev": [0.2146214431235221]}, "369": {"P": [[-1.0, 6.0, 5.0], [7.0, -1.0, 5.0], [6.0, 5.0, 1.0]], "dev": [0.22110337832519456]}, "370": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 7.0], [6.0, 5.0, 0.0]], "dev": [0.19094946798536894]}, "371": {"P": [[-1.0, 6.0, 5.0], [5.0, 0.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.14532263662886827]}, "372": {"P": [[0.0, 5.0, 6.0], [6.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.16016973330560602]}, "373": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.19410870524726728]}, "374": {"P": [[0.0, 4.0, 7.0], [5.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.22032166101028797]}, "375": {"P": [[-1.0, 6.0, 5.0], [7.0, -1.0, 5.0], [5.0, 5.0, 0.0]], "dev": [0.21038430411994652]}, "376": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 5.0], [4.0, 6.0, -1.0]], "dev": [0.2185676966900239]}, "377": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [5.0, 7.0, 0.0]], "dev": [0.15985381698051235]}, "378": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.19260554820880604]}, "379": {"P": [[-1.0, 6.0, 5.0], [7.0, 0.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.19232605210433101]}, "380": {"P": [[0.0, 7.0, 5.0], [6.0, -1.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.18189472844602331]}, "381": {"P": [[-1.0, 5.0, 5.0], [6.0, 1.0, 5.0], [7.0, 6.0, -1.0]], "dev": [0.21947359714989395]}, "382": {"P": [[1.0, 5.0, 7.0], [6.0, -1.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.20146338227653146]}, "383": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 5.0, 1.0]], "dev": [0.2003467719528659]}, "384": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.15792460718340101]}, "385": {"P": [[0.0, 6.0, 5.0], [6.0, -1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.13422116937444442]}, "386": {"P": [[-1.0, 5.0, 6.0], [5.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.18167269340440417]}, "387": {"P": [[-1.0, 6.0, 5.0], [6.0, 1.0, 5.0], [7.0, 5.0, -1.0]], "dev": [0.21896374110968708]}, "388": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 4.0], [6.0, 7.0, 1.0]], "dev": [0.2259752211736176]}, "389": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 7.0], [6.0, 5.0, 0.0]], "dev": [0.1899058369808431]}, "390": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.13463643167601114]}, "391": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.14514524880991359]}, "392": {"P": [[0.0, 5.0, 6.0], [7.0, 0.0, 5.0], [7.0, 6.0, 1.0]], "dev": [0.19665002071997559]}, "393": {"P": [[-1.0, 5.0, 5.0], [5.0, 1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.21864305735049805]}, "394": {"P": [[1.0, 5.0, 6.0], [7.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.195901671343403]}, "395": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.15326977675139467]}, "396": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.078317928547617627]}, "397": {"P": [[0.0, 7.0, 6.0], [5.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.15252631934406918]}, "398": {"P": [[-1.0, 4.0, 6.0], [6.0, 0.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.21851283981466957]}, "399": {"P": [[-1.0, 5.0, 5.0], [5.0, 0.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.21850117735389923]}, "400": {"P": [[0.0, 5.0, 6.0], [5.0, 0.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.1938120129005268]}, "401": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.17605667462461674]}, "402": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.13636922039415164]}, "403": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.18219552399969335]}, "404": {"P": [[0.0, 7.0, 6.0], [7.0, 1.0, 5.0], [5.0, 5.0, -1.0]], "dev": [0.22287319998116292]}, "405": {"P": [[0.0, 7.0, 5.0], [5.0, 0.0, 5.0], [7.0, 5.0, -1.0]], "dev": [0.21852798155332298]}, "406": {"P": [[0.0, 7.0, 5.0], [7.0, 0.0, 5.0], [7.0, 6.0, 1.0]], "dev": [0.21415252877955046]}, "407": {"P": [[-1.0, 5.0, 7.0], [6.0, 0.0, 5.0], [5.0, 6.0, 0.0]], "dev": [0.18254328579169271]}, "408": {"P": [[-1.0, 5.0, 6.0], [5.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.18264252591314703]}, "409": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [6.0, 6.0, 1.0]], "dev": [0.19110236520264504]}, "410": {"P": [[-2.0, 6.0, 6.0], [6.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.20156085352294911]}, "411": {"P": [[-1.0, 4.0, 6.0], [6.0, 0.0, 7.0], [7.0, 5.0, 0.0]], "dev": [0.23755809075073367]}, "412": {"P": [[0.0, 5.0, 6.0], [7.0, 0.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.18308696974944444]}, "413": {"P": [[1.0, 6.0, 6.0], [5.0, 0.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.17390630605552773]}, "414": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.16995120317920048]}, "415": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [7.0, 5.0, 0.0]], "dev": [0.16633014770680141]}, "416": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [8.0, 6.0, 0.0]], "dev": [0.20728894281896587]}, "417": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 4.0, 0.0]], "dev": [0.23683627359163753]}, "418": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 7.0], [7.0, 5.0, 0.0]], "dev": [0.2068206728362707]}, "419": {"P": [[0.0, 5.0, 6.0], [6.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.17137213866661993]}, "420": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 6.0], [6.0, 5.0, -1.0]], "dev": [0.1638616811626219]}, "421": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.16407270586121872]}, "422": {"P": [[-1.0, 5.0, 5.0], [6.0, -1.0, 7.0], [5.0, 6.0, 0.0]], "dev": [0.20272645288076216]}, "423": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 5.0], [5.0, 7.0, 0.0]], "dev": [0.22352541220758321]}, "424": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 7.0], [6.0, 4.0, 0.0]], "dev": [0.20426364280122389]}, "425": {"P": [[0.0, 5.0, 5.0], [7.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.16634051938742792]}, "426": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [6.0, 6.0, 0.0]], "dev": [0.11687821949215725]}, "427": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.16640796773894082]}, "428": {"P": [[0.0, 6.0, 5.0], [6.0, 1.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.2054262426156199]}, "429": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [4.0, 6.0, -1.0]], "dev": [0.24982123529886377]}, "430": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [5.0, 6.0, -1.0]], "dev": [0.20349880467750134]}, "431": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.16679815168310083]}, "432": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.0]}, "433": {"P": [[0.0, 5.0, 6.0], [7.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.16654093691887589]}, "434": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.20287455727269851]}, "435": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [7.0, 5.0, 1.0]], "dev": [0.21911681058324931]}, "436": {"P": [[1.0, 6.0, 6.0], [5.0, 0.0, 7.0], [6.0, 8.0, 0.0]], "dev": [0.2186727485314125]}, "437": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.16513525873600132]}, "438": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 5.0, 1.0]], "dev": [0.16484709817845597]}, "439": {"P": [[0.0, 7.0, 5.0], [6.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.16456492105075013]}, "440": {"P": [[-1.0, 5.0, 7.0], [5.0, 0.0, 6.0], [7.0, 5.0, -1.0]], "dev": [0.22041075917839373]}, "441": {"P": [[1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.21521427885219258]}, "442": {"P": [[-1.0, 5.0, 7.0], [5.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.20278667421355442]}, "443": {"P": [[0.0, 6.0, 7.0], [5.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.18319333892748652]}, "444": {"P": [[0.0, 5.0, 7.0], [6.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.16324290503334585]}, "445": {"P": [[-1.0, 7.0, 7.0], [6.0, 0.0, 5.0], [6.0, 5.0, 0.0]], "dev": [0.184899205111557]}, "446": {"P": [[0.0, 5.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.19802525383097383]}, "447": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [6.0, 5.0, 1.0]], "dev": [0.21411497350209213]}, "448": {"P": [[0.0, 5.0, 7.0], [6.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.17923239928886411]}, "449": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [6.0, 5.0, 1.0]], "dev": [0.1817515411282826]}, "450": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [7.0, 5.0, 0.0]], "dev": [0.18152949702697668]}, "451": {"P": [[-1.0, 5.0, 6.0], [6.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.18451129135163249]}, "452": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 5.0], [8.0, 7.0, 0.0]], "dev": [0.21511301666183646]}, "453": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 5.0, 1.0]], "dev": [0.21187577634329202]}, "454": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.17692891343075801]}, "455": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.13325897454320423]}, "456": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.14343742124893397]}, "457": {"P": [[0.0, 7.0, 5.0], [7.0, -1.0, 6.0], [6.0, 5.0, 0.0]], "dev": [0.18428722755111532]}, "458": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [6.0, 7.0, 1.0]], "dev": [0.19762605751919857]}, "459": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.20980560516495136]}, "460": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 5.0, 0.0]], "dev": [0.18423420138098554]}, "461": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.13744668022323892]}, "462": {"P": [[1.0, 7.0, 6.0], [6.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.13057253743298142]}, "463": {"P": [[-1.0, 6.0, 5.0], [7.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.17910108783216425]}, "464": {"P": [[-1.0, 5.0, 6.0], [8.0, 0.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.21275650736687191]}, "465": {"P": [[0.0, 7.0, 5.0], [7.0, 1.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.2079003166770251]}, "466": {"P": [[0.0, 5.0, 6.0], [6.0, 0.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.20759850532640695]}, "467": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.14409919812767993]}, "468": {"P": [[0.0, 6.0, 7.0], [6.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.074074954699853007]}, "469": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.14428394192020616]}, "470": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.18432678140004033]}, "471": {"P": [[-1.0, 5.0, 6.0], [6.0, -1.0, 5.0], [5.0, 7.0, -1.0]], "dev": [0.22737176385678848]}, "472": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 5.0], [6.0, 8.0, 0.0]], "dev": [0.21151845102742356]}, "473": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.17088272463398338]}, "474": {"P": [[0.0, 6.0, 7.0], [6.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.12670369752715918]}, "475": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.16280804660019749]}, "476": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [5.0, 7.0, 0.0]], "dev": [0.18457044082284407]}, "477": {"P": [[1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.21384296943667394]}, "478": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [7.0, 5.0, 0.0]], "dev": [0.18776132735558529]}, "479": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.18474218580985582]}, "480": {"P": [[1.0, 6.0, 7.0], [6.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.16911595724863243]}, "481": {"P": [[0.0, 5.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.16888311996350686]}, "482": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 5.0], [7.0, 7.0, 1.0]], "dev": [0.21196876795329109]}, "483": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [7.0, 7.0, 1.0]], "dev": [0.20313159388139809]}, "484": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.17818670812409468]}, "485": {"P": [[-1.0, 7.0, 7.0], [6.0, 0.0, 5.0], [7.0, 6.0, 1.0]], "dev": [0.18615257342198427]}, "486": {"P": [[-1.0, 5.0, 7.0], [6.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.17674454036968967]}, "487": {"P": [[-1.0, 5.0, 6.0], [5.0, 0.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.20190949633447777]}, "488": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.16738726632642453]}, "489": {"P": [[1.0, 7.0, 6.0], [7.0, -2.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.21710481435530907]}, "490": {"P": [[1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.16644127328783401]}, "491": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.14646327574729365]}, "492": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.15743323898252534]}, "493": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.17647543866185164]}, "494": {"P": [[-1.0, 7.0, 6.0], [7.0, 0.0, 5.0], [6.0, 5.0, -1.0]], "dev": [0.2024106581704628]}, "495": {"P": [[0.0, 5.0, 7.0], [7.0, 1.0, 6.0], [6.0, 8.0, 1.0]], "dev": [0.22233074893062749]}, "496": {"P": [[0.0, 6.0, 5.0], [7.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.18405291139107127]}, "497": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.1324174140803831]}, "498": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.1453346618500862]}, "499": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.15750553678314105]}, "500": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 6.0], [5.0, 7.0, 1.0]], "dev": [0.20908201138621882]}, "501": {"P": [[-1.0, 6.0, 8.0], [6.0, 1.0, 6.0], [5.0, 6.0, -1.0]], "dev": [0.22358690295207734]}, "502": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.17222845703088852]}, "503": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.15763728188473439]}, "504": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.091464775225994388]}, "505": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [5.0, 6.0, 0.0]], "dev": [0.18270716919600352]}, "506": {"P": [[-1.0, 6.0, 7.0], [6.0, -1.0, 5.0], [7.0, 6.0, 1.0]], "dev": [0.19337313063413919]}, "507": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [8.0, 5.0, 0.0]], "dev": [0.21887871725491342]}, "508": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 5.0], [6.0, 8.0, 0.0]], "dev": [0.19338025591736957]}, "509": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 7.0], [6.0, 5.0, 0.0]], "dev": [0.15795229570389371]}, "510": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [6.0, 6.0, 0.0]], "dev": [0.091058758061801151]}, "511": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.15665124710059886]}, "512": {"P": [[1.0, 6.0, 6.0], [6.0, 0.0, 8.0], [6.0, 8.0, 0.0]], "dev": [0.20739281168420434]}, "513": {"P": [[0.0, 7.0, 5.0], [8.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.21734841248988296]}, "514": {"P": [[-1.0, 5.0, 6.0], [7.0, 0.0, 5.0], [6.0, 7.0, -1.0]], "dev": [0.20459809156360204]}, "515": {"P": [[0.0, 5.0, 7.0], [5.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.19786206578530008]}, "516": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.14353417183023562]}, "517": {"P": [[0.0, 7.0, 6.0], [6.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.12658818606322561]}, "518": {"P": [[1.0, 6.0, 7.0], [7.0, 0.0, 5.0], [7.0, 7.0, 0.0]], "dev": [0.16813936557573644]}, "519": {"P": [[1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.2048933111740143]}, "520": {"P": [[-1.0, 6.0, 8.0], [6.0, 1.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.18509988378791223]}, "521": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.19728755570245923]}, "522": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 5.0], [8.0, 6.0, 0.0]], "dev": [0.19720355613953477]}, "523": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.14323695236443462]}, "524": {"P": [[1.0, 6.0, 7.0], [8.0, 1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.18759552657527606]}, "525": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.17020652149645321]}, "526": {"P": [[0.0, 6.0, 8.0], [6.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.1698699951225251]}, "527": {"P": [[0.0, 7.0, 5.0], [7.0, -1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.1630275660537904]}, "528": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.16299682894240478]}, "529": {"P": [[-1.0, 6.0, 6.0], [5.0, -1.0, 7.0], [7.0, 6.0, 1.0]], "dev": [0.19419605772029602]}, "530": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.18058551675104431]}, "531": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.201026163365289]}, "532": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 5.0], [7.0, 7.0, 0.0]], "dev": [0.16291069168393063]}, "533": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.14587913362154439]}, "534": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.16288934585229914]}, "535": {"P": [[-1.0, 7.0, 5.0], [5.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.19465815356891733]}, "536": {"P": [[-2.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.2096177702250907]}, "537": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 8.0, 1.0]], "dev": [0.19781226147630121]}, "538": {"P": [[1.0, 6.0, 6.0], [7.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.16614805368074045]}, "539": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.12460726815826759]}, "540": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.12070827567636588]}, "541": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.16292512161583331]}, "542": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.19618954724949927]}, "543": {"P": [[0.0, 7.0, 5.0], [5.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.21151949580983256]}, "544": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.19615444574784574]}, "545": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.1642422112209822]}, "546": {"P": [[0.0, 6.0, 6.0], [6.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.094428850419340044]}, "547": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.16308748826650618]}, "548": {"P": [[-1.0, 6.0, 5.0], [6.0, 0.0, 7.0], [6.0, 8.0, 0.0]], "dev": [0.19611828604257725]}, "549": {"P": [[-1.0, 6.0, 6.0], [7.0, -1.0, 7.0], [6.0, 7.0, 2.0]], "dev": [0.21069457595976704]}, "550": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.19593853791936161]}, "551": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.16276073657446627]}, "552": {"P": [[1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.12091375990515459]}, "553": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.12066387354649752]}, "554": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.16342266601334751]}, "555": {"P": [[-1.0, 5.0, 6.0], [7.0, -1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.19616087930137255]}, "556": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 8.0], [7.0, 5.0, 0.0]], "dev": [0.19617764517167482]}, "557": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [8.0, 6.0, -1.0]], "dev": [0.19528571207481013]}, "558": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 5.0], [6.0, 7.0, 0.0]], "dev": [0.16368144139922891]}, "559": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.093933653093150812]}, "560": {"P": [[0.0, 6.0, 7.0], [8.0, 0.0, 6.0], [6.0, 7.0, 1.0]], "dev": [0.16079601739127106]}, "561": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 7.0], [7.0, 5.0, 1.0]], "dev": [0.2080720124234193]}, "562": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.17763917946360358]}, "563": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [8.0, 5.0, 0.0]], "dev": [0.19476600514286005]}, "564": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 8.0], [7.0, 6.0, 1.0]], "dev": [0.17913816807664862]}, "565": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.16424606200916805]}, "566": {"P": [[0.0, 6.0, 7.0], [8.0, 1.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.15965394773343683]}, "567": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.1789648118127157]}, "568": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.17653185346234476]}, "569": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 5.0], [7.0, 6.0, 0.0]], "dev": [0.16190431706759739]}, "570": {"P": [[-1.0, 5.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.19429033104191287]}, "571": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 6.0], [6.0, 8.0, 1.0]], "dev": [0.19170298232232713]}, "572": {"P": [[0.0, 5.0, 7.0], [8.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.17873577885646799]}, "573": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.18857448990124451]}, "574": {"P": [[0.0, 6.0, 7.0], [6.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.15480378081415758]}, "575": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.13886478023167936]}, "576": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.1470559940796452]}, "577": {"P": [[-1.0, 6.0, 7.0], [6.0, 2.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20520575436816235]}, "578": {"P": [[0.0, 8.0, 6.0], [6.0, 1.0, 7.0], [7.0, 5.0, -1.0]], "dev": [0.20813732450432743]}, "579": {"P": [[0.0, 5.0, 6.0], [8.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20489882738882684]}, "580": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.15311669552811125]}, "581": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.13807270066257196]}, "582": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.12157713737171509]}, "583": {"P": [[0.0, 7.0, 6.0], [8.0, 0.0, 7.0], [7.0, 5.0, 0.0]], "dev": [0.17427797741168666]}, "584": {"P": [[-1.0, 5.0, 6.0], [6.0, 0.0, 7.0], [6.0, 8.0, -1.0]], "dev": [0.21151925153812567]}, "585": {"P": [[-1.0, 7.0, 5.0], [6.0, 1.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.20784779071311543]}, "586": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.18521567521086038]}, "587": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.17379666329651994]}, "588": {"P": [[0.0, 6.0, 6.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.086885653317776423]}, "589": {"P": [[0.0, 6.0, 7.0], [6.0, -1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.14930707092844836]}, "590": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.16192651415961007]}, "591": {"P": [[-2.0, 7.0, 6.0], [7.0, 1.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.21200772870695545]}, "592": {"P": [[-1.0, 5.0, 7.0], [8.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.21208522311369118]}, "593": {"P": [[-1.0, 7.0, 5.0], [8.0, 1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.2030546312669966]}, "594": {"P": [[-1.0, 7.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.14968683371674507]}, "595": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.086501397893472567]}, "596": {"P": [[0.0, 8.0, 6.0], [6.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.14925381613004865]}, "597": {"P": [[1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [7.0, 5.0, 0.0]], "dev": [0.18277924095239673]}, "598": {"P": [[0.0, 7.0, 5.0], [6.0, -1.0, 6.0], [8.0, 6.0, -1.0]], "dev": [0.21258915385161797]}, "599": {"P": [[1.0, 7.0, 6.0], [7.0, 1.0, 7.0], [6.0, 7.0, -2.0]], "dev": [0.20242163273123903]}, "600": {"P": [[-1.0, 6.0, 6.0], [7.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.16238151808166906]}, "601": {"P": [[-1.0, 7.0, 6.0], [6.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.12346022624683242]}, "602": {"P": [[-1.0, 7.0, 6.0], [6.0, 1.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.13636451196616664]}, "603": {"P": [[1.0, 6.0, 7.0], [8.0, 1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.19040622733286142]}, "604": {"P": [[0.0, 5.0, 7.0], [6.0, 0.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.18771049969839607]}, "605": {"P": [[-1.0, 8.0, 7.0], [7.0, -1.0, 6.0], [6.0, 6.0, 1.0]], "dev": [0.18763614281455288]}, "606": {"P": [[-1.0, 5.0, 7.0], [6.0, 0.0, 6.0], [8.0, 7.0, -1.0]], "dev": [0.20765947824247272]}, "607": {"P": [[-1.0, 7.0, 5.0], [6.0, 0.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.1857309091499407]}, "608": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.13616443527877739]}, "609": {"P": [[-1.0, 6.0, 8.0], [7.0, 0.0, 7.0], [7.0, 5.0, 0.0]], "dev": [0.18736440570741728]}, "610": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.16435426095622996]}, "611": {"P": [[-2.0, 7.0, 7.0], [7.0, 0.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.18724375801301646]}, "612": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 6.0], [8.0, 6.0, -1.0]], "dev": [0.17933628714343039]}, "613": {"P": [[-2.0, 6.0, 7.0], [7.0, 1.0, 6.0], [7.0, 6.0, -1.0]], "dev": [0.20780675844808602]}, "614": {"P": [[-1.0, 7.0, 6.0], [6.0, 1.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.17177312236580808]}, "615": {"P": [[1.0, 6.0, 7.0], [7.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.17175884927807525]}, "616": {"P": [[0.0, 6.0, 8.0], [7.0, 1.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.16341642493879277]}, "617": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [8.0, 6.0, 1.0]], "dev": [0.1632706330952593]}, "618": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.15489326321054322]}, "619": {"P": [[-1.0, 6.0, 6.0], [7.0, 1.0, 6.0], [8.0, 7.0, -1.0]], "dev": [0.1868600596866026]}, "620": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.19449219245681332]}, "621": {"P": [[0.0, 5.0, 6.0], [8.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.18678830553498396]}, "622": {"P": [[0.0, 8.0, 7.0], [7.0, 1.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.16995060956079541]}, "623": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.13386023468990221]}, "624": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [7.0, 6.0, 0.0]], "dev": [0.11453270425039233]}, "625": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.15488430934775177]}, "626": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.18665001111815407]}, "627": {"P": [[1.0, 6.0, 6.0], [7.0, -1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.19826761661541994]}, "628": {"P": [[-1.0, 6.0, 8.0], [6.0, 1.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.19241086043749875]}, "629": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [6.0, 6.0, 1.0]], "dev": [0.1617497941405957]}, "630": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.11494380062666811]}, "631": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.1237146748671492]}, "632": {"P": [[0.0, 6.0, 7.0], [8.0, 0.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.16761512460619415]}, "633": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.18655232222829798]}, "634": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 8.0], [8.0, 5.0, 0.0]], "dev": [0.21343512784793572]}, "635": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.16697038228249625]}, "636": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.13067961529211358]}, "637": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.066839975532403353]}, "638": {"P": [[0.0, 6.0, 7.0], [8.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.13024212126045803]}, "639": {"P": [[-1.0, 6.0, 6.0], [6.0, 1.0, 8.0], [7.0, 7.0, -1.0]], "dev": [0.1865544585831837]}, "640": {"P": [[0.0, 6.0, 8.0], [6.0, -1.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.18656229869856092]}, "641": {"P": [[-1.0, 6.0, 7.0], [6.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.19532440220549285]}, "642": {"P": [[0.0, 6.0, 7.0], [6.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.16556457373542377]}, "643": {"P": [[-1.0, 7.0, 6.0], [6.0, -1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.15024274212634578]}, "644": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.11635673452181011]}, "645": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.15556266295341242]}, "646": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 7.0], [5.0, 7.0, -1.0]], "dev": [0.19056081690823265]}, "647": {"P": [[1.0, 6.0, 8.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.20146393395660847]}, "648": {"P": [[-1.0, 6.0, 6.0], [6.0, 0.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.1866995705985611]}, "649": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.19385827920780535]}, "650": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 6.0], [6.0, 7.0, 0.0]], "dev": [0.15588342906045008]}, "651": {"P": [[-1.0, 7.0, 6.0], [7.0, 1.0, 7.0], [6.0, 7.0, -1.0]], "dev": [0.15595438228094649]}, "652": {"P": [[0.0, 7.0, 6.0], [7.0, 1.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.16379122139720606]}, "653": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 7.0], [7.0, 7.0, 2.0]], "dev": [0.19004286846949944]}, "654": {"P": [[-2.0, 6.0, 7.0], [7.0, 0.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.20048385691456788]}, "655": {"P": [[-1.0, 5.0, 7.0], [7.0, 0.0, 6.0], [6.0, 8.0, -1.0]], "dev": [0.21056498266647933]}, "656": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.15634219350401871]}, "657": {"P": [[-1.0, 6.0, 8.0], [6.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.17838728763353062]}, "658": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [6.0, 8.0, 1.0]], "dev": [0.15971613192437986]}, "659": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [8.0, 6.0, -1.0]], "dev": [0.17532737260961967]}, "660": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 7.0], [6.0, 6.0, 0.0]], "dev": [0.17258985611538213]}, "661": {"P": [[-1.0, 8.0, 6.0], [8.0, 1.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.20729719327894783]}, "662": {"P": [[-2.0, 7.0, 7.0], [7.0, -1.0, 6.0], [7.0, 6.0, 1.0]], "dev": [0.20071015044975121]}, "663": {"P": [[0.0, 5.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.17751686851483006]}, "664": {"P": [[0.0, 6.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.1477306507546034]}, "665": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.1449081175311028]}, "666": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.142292286196781]}, "667": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 6.0], [9.0, 7.0, 0.0]], "dev": [0.1769847010883018]}, "668": {"P": [[0.0, 8.0, 6.0], [6.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.19264852070746327]}, "669": {"P": [[0.0, 5.0, 6.0], [8.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.20249865915995399]}, "670": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.17661043055190107]}, "671": {"P": [[0.0, 6.0, 7.0], [7.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.14603252673418604]}, "672": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.14060560112576218]}, "673": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.14075408071433998]}, "674": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 6.0], [6.0, 6.0, -1.0]], "dev": [0.1737208402644731]}, "675": {"P": [[-2.0, 6.0, 7.0], [6.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.20131156717784757]}, "676": {"P": [[-1.0, 6.0, 6.0], [6.0, -1.0, 8.0], [6.0, 8.0, 0.0]], "dev": [0.20136922817952446]}, "677": {"P": [[0.0, 7.0, 5.0], [7.0, -1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.17491606018214934]}, "678": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.14251481273458114]}, "679": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.10023087083300393]}, "680": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.14258629644012338]}, "681": {"P": [[0.0, 6.0, 7.0], [9.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.17591377199989863]}, "682": {"P": [[1.0, 7.0, 6.0], [7.0, -2.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.20243882155947757]}, "683": {"P": [[1.0, 8.0, 6.0], [8.0, -1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.20207519761858225]}, "684": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.17454069900533975]}, "685": {"P": [[1.0, 7.0, 6.0], [7.0, -1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.14292786728111007]}, "686": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [5.4389598220420729e-16]}, "687": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.14278903247165362]}, "688": {"P": [[1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.17420292788836522]}, "689": {"P": [[0.0, 9.0, 7.0], [8.0, 0.0, 7.0], [7.0, 7.0, 2.0]], "dev": [0.21325369860211721]}, "690": {"P": [[0.0, 6.0, 7.0], [6.0, 0.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.20131077025147798]}, "691": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [8.0, 7.0, 2.0]], "dev": [0.20070724076308469]}, "692": {"P": [[1.0, 8.0, 7.0], [7.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.1417610243674024]}, "693": {"P": [[0.0, 6.0, 7.0], [8.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.14158786406127874]}, "694": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.14141740942262343]}, "695": {"P": [[1.0, 6.0, 8.0], [9.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.19968659748119638]}, "696": {"P": [[-1.0, 8.0, 7.0], [5.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.20199319349999517]}, "697": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.18608592240631067]}, "698": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.17409826971946601]}, "699": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.17276306324973031]}, "700": {"P": [[0.0, 6.0, 8.0], [7.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.14045114649735752]}, "701": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.17392928653862891]}, "702": {"P": [[0.0, 8.0, 6.0], [7.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.17072762058286028]}, "703": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 7.0], [8.0, 7.0, 2.0]], "dev": [0.20867892104571512]}, "704": {"P": [[1.0, 7.0, 8.0], [6.0, 1.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.18272243855299011]}, "705": {"P": [[0.0, 6.0, 9.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.1841457312790851]}, "706": {"P": [[0.0, 8.0, 7.0], [8.0, -1.0, 7.0], [6.0, 7.0, 1.0]], "dev": [0.15648636224860241]}, "707": {"P": [[0.0, 6.0, 7.0], [8.0, 1.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.18368223816741722]}, "708": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.15856640760890975]}, "709": {"P": [[-1.0, 7.0, 6.0], [9.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.187395152599275]}, "710": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 2.0]], "dev": [0.19615430319472957]}, "711": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [7.0, 6.0, 1.0]], "dev": [0.18278085773718594]}, "712": {"P": [[0.0, 6.0, 8.0], [7.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.15288663176071524]}, "713": {"P": [[-1.0, 7.0, 8.0], [6.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.15558175735296459]}, "714": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.1554618625262493]}, "715": {"P": [[-1.0, 8.0, 7.0], [7.0, -1.0, 6.0], [7.0, 7.0, 1.0]], "dev": [0.15842185634240863]}, "716": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 6.0], [7.0, 8.0, 1.0]], "dev": [0.17045396255553849]}, "717": {"P": [[0.0, 5.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.197288310677283]}, "718": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.18128480192934637]}, "719": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.15132861937450795]}, "720": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.11382300808865749]}, "721": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.12333938372145332]}, "722": {"P": [[-1.0, 6.0, 8.0], [7.0, 0.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.15837822675095109]}, "723": {"P": [[0.0, 7.0, 6.0], [7.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.18027881321334457]}, "724": {"P": [[-1.0, 7.0, 6.0], [7.0, -1.0, 8.0], [6.0, 8.0, 1.0]], "dev": [0.18689369477798798]}, "725": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.1798908683029532]}, "726": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.1583971582478205]}, "727": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.11803969914169347]}, "728": {"P": [[0.0, 7.0, 7.0], [7.0, 1.0, 7.0], [8.0, 8.0, 0.0]], "dev": [0.11198982624712625]}, "729": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.15393638103320686]}, "730": {"P": [[-1.0, 6.0, 7.0], [9.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.18292189067175352]}, "731": {"P": [[-1.0, 8.0, 8.0], [7.0, 1.0, 6.0], [6.0, 7.0, -1.0]], "dev": [0.18679358693047637]}, "732": {"P": [[0.0, 6.0, 8.0], [6.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.17859734565442223]}, "733": {"P": [[0.0, 7.0, 6.0], [9.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.17842065131552784]}, "734": {"P": [[0.0, 7.0, 8.0], [7.0, -1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.124002842987871]}, "735": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.063725960298245871]}, "736": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.12413961484681235]}, "737": {"P": [[1.0, 7.0, 7.0], [7.0, -1.0, 6.0], [7.0, 8.0, -1.0]], "dev": [0.1586070327653322]}, "738": {"P": [[0.0, 9.0, 8.0], [6.0, 0.0, 7.0], [8.0, 6.0, 1.0]], "dev": [0.20309862889871494]}, "739": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 6.0], [6.0, 8.0, -1.0]], "dev": [0.19570532038271535]}, "740": {"P": [[-1.0, 6.0, 8.0], [6.0, 0.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.18207416324890663]}, "741": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.14718782980651185]}, "742": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.10923719230802208]}, "743": {"P": [[1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.14051271150030323]}, "744": {"P": [[0.0, 8.0, 6.0], [8.0, 0.0, 7.0], [7.0, 6.0, -1.0]], "dev": [0.15885600358371613]}, "745": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.18460875358729231]}, "746": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 9.0], [8.0, 6.0, 1.0]], "dev": [0.20182315543889157]}, "747": {"P": [[1.0, 7.0, 7.0], [8.0, 1.0, 7.0], [7.0, 7.0, -2.0]], "dev": [0.18158874366343092]}, "748": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.15903680117643201]}, "749": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.14595973954760391]}, "750": {"P": [[0.0, 6.0, 8.0], [8.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.14581640680075211]}, "751": {"P": [[-1.0, 7.0, 6.0], [6.0, 1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.18694383182422769]}, "752": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.17543889214793962]}, "753": {"P": [[0.0, 6.0, 9.0], [7.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.18277705127435412]}, "754": {"P": [[0.0, 7.0, 8.0], [6.0, 1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.16091157111440546]}, "755": {"P": [[-1.0, 6.0, 7.0], [6.0, -1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.18704713246024521]}, "756": {"P": [[-1.0, 6.0, 8.0], [7.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.15241319040668075]}, "757": {"P": [[-1.0, 6.0, 8.0], [6.0, 0.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.17387178665199346]}, "758": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.14475004048883985]}, "759": {"P": [[1.0, 8.0, 8.0], [7.0, -1.0, 8.0], [6.0, 8.0, 1.0]], "dev": [0.1814828496198079]}, "760": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 7.0, 1.0]], "dev": [0.1812737149068441]}, "761": {"P": [[1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.15252193194785207]}, "762": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [7.0, 6.0, 0.0]], "dev": [0.1599082936209105]}, "763": {"P": [[0.0, 7.0, 6.0], [7.0, -1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.16713837333674181]}, "764": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 6.0], [6.0, 8.0, 0.0]], "dev": [0.15224347136900382]}, "765": {"P": [[-1.0, 7.0, 6.0], [8.0, -1.0, 8.0], [6.0, 8.0, 1.0]], "dev": [0.19341035834982359]}, "766": {"P": [[0.0, 6.0, 8.0], [8.0, 1.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.19277236245002563]}, "767": {"P": [[-2.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.18671780856434106]}, "768": {"P": [[0.0, 8.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.14239125469674127]}, "769": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.12596794743448864]}, "770": {"P": [[-1.0, 8.0, 8.0], [7.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.13579235641743787]}, "771": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.16698136711304354]}, "772": {"P": [[-1.0, 6.0, 7.0], [6.0, 0.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.17472768331865857]}, "773": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [5.0, 8.0, 0.0]], "dev": [0.20496415911762059]}, "774": {"P": [[-1.0, 7.0, 6.0], [9.0, 0.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.19310009112552334]}, "775": {"P": [[0.0, 6.0, 7.0], [7.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.15854768204401049]}, "776": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.11379631309766396]}, "777": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.12525673825760436]}, "778": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.13595406829327863]}, "779": {"P": [[-1.0, 7.0, 7.0], [7.0, 2.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.18547331150801627]}, "780": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 9.0], [8.0, 6.0, 0.0]], "dev": [0.19295982687614993]}, "781": {"P": [[-1.0, 7.0, 8.0], [7.0, 2.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.19468485193410234]}, "782": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.14841469836606011]}, "783": {"P": [[0.0, 7.0, 6.0], [8.0, 0.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.136117983604646]}, "784": {"P": [[0.0, 8.0, 8.0], [7.0, 0.0, 7.0], [7.0, 7.0, 0.0]], "dev": [0.078926412962239539]}, "785": {"P": [[-1.0, 8.0, 6.0], [8.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.1577208405307482]}, "786": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 6.0], [7.0, 7.0, -1.0]], "dev": [0.16697346282949282]}, "787": {"P": [[-2.0, 6.0, 7.0], [8.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.20062133171427907]}, "788": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 9.0], [6.0, 8.0, 0.0]], "dev": [0.19285271162529946]}, "789": {"P": [[0.0, 6.0, 7.0], [9.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.16701478218188273]}, "790": {"P": [[0.0, 7.0, 8.0], [7.0, -1.0, 7.0], [6.0, 8.0, 0.0]], "dev": [0.13642553617516365]}, "791": {"P": [[0.0, 7.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.078663213911843111]}, "792": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.1354982129853711]}, "793": {"P": [[-1.0, 6.0, 8.0], [9.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.18431916642426885]}, "794": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 7.0], [8.0, 6.0, 0.0]], "dev": [0.18798868126995183]}, "795": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [9.0, 6.0, 0.0]], "dev": [0.18784202376792447]}, "796": {"P": [[0.0, 8.0, 6.0], [6.0, -1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.17672436308412498]}, "797": {"P": [[-1.0, 6.0, 8.0], [8.0, -1.0, 7.0], [6.0, 7.0, 0.0]], "dev": [0.17682284183221078]}, "798": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.1240902165258608]}, "799": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.10966423955710471]}, "800": {"P": [[0.0, 8.0, 6.0], [7.0, 1.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.14561472109472787]}, "801": {"P": [[0.0, 9.0, 7.0], [9.0, 0.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.17762941971460941]}, "802": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 6.0], [9.0, 8.0, 0.0]], "dev": [0.18686065709566482]}, "803": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 9.0], [8.0, 6.0, 1.0]], "dev": [0.18368263642022273]}, "804": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 6.0], [8.0, 6.0, 0.0]], "dev": [0.17067290408651428]}, "805": {"P": [[-1.0, 6.0, 7.0], [9.0, 1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.1835734981344401]}, "806": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.1239007185144934]}, "807": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.16287547048878157]}, "808": {"P": [[0.0, 9.0, 7.0], [8.0, 0.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.17616739715148302]}, "809": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [9.0, 7.0, 1.0]], "dev": [0.17596531115931446]}, "810": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 6.0], [8.0, 7.0, 1.0]], "dev": [0.15937495208733168]}, "811": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.17037847545883816]}, "812": {"P": [[-1.0, 8.0, 6.0], [7.0, 0.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.16777290649373905]}, "813": {"P": [[-1.0, 7.0, 7.0], [6.0, -1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.16782269808806485]}, "814": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.15633832751529145]}, "815": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 6.0], [8.0, 8.0, 1.0]], "dev": [0.17478806733968544]}, "816": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.14627054309117127]}, "817": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.14607064960965452]}, "818": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [8.0, 6.0, 0.0]], "dev": [0.14099576438080375]}, "819": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.14099150326588827]}, "820": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 7.0], [6.0, 8.0, 0.0]], "dev": [0.16820817164652122]}, "821": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 6.0], [6.0, 8.0, -1.0]], "dev": [0.19330444609429834]}, "822": {"P": [[0.0, 8.0, 6.0], [7.0, 1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.17178746259266095]}, "823": {"P": [[-1.0, 7.0, 9.0], [7.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.17331160616343408]}, "824": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 6.0, 0.0]], "dev": [0.14099623675269668]}, "825": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.12599669343288586]}, "826": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.14101012404072449]}, "827": {"P": [[-1.0, 6.0, 7.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16998540907834503]}, "828": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [8.0, 7.0, -2.0]], "dev": [0.18157329179838977]}, "829": {"P": [[0.0, 7.0, 6.0], [9.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.1837925563179777]}, "830": {"P": [[1.0, 8.0, 8.0], [9.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.17210591193268274]}, "831": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.14347070239270973]}, "832": {"P": [[0.0, 8.0, 7.0], [8.0, 0.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.1075278703212227]}, "833": {"P": [[0.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.10462906589811481]}, "834": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.1411325078838303]}, "835": {"P": [[-1.0, 6.0, 8.0], [7.0, 1.0, 8.0], [7.0, 8.0, -1.0]], "dev": [0.16992841078120757]}, "836": {"P": [[0.0, 8.0, 6.0], [6.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.183175487007643]}, "837": {"P": [[-2.0, 7.0, 8.0], [7.0, 1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.18309310814697022]}, "838": {"P": [[-1.0, 6.0, 7.0], [7.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.16993004162105479]}, "839": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.14214974028498945]}, "840": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 7.0, 0.0]], "dev": [0.081791228074643049]}, "841": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.14132476272468283]}, "842": {"P": [[0.0, 8.0, 6.0], [9.0, 0.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.16995127483310349]}, "843": {"P": [[-1.0, 7.0, 7.0], [7.0, 2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.18262867493006213]}, "844": {"P": [[-1.0, 6.0, 7.0], [8.0, 0.0, 9.0], [6.0, 8.0, 0.0]], "dev": [0.19436284207803153]}, "845": {"P": [[1.0, 8.0, 9.0], [8.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.16978776104596155]}, "846": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.1410907602016549]}, "847": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.10488022728512379]}, "848": {"P": [[0.0, 8.0, 8.0], [7.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.10472240908230686]}, "849": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.14163785063175041]}, "850": {"P": [[-1.0, 6.0, 7.0], [8.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.17005750880889881]}, "851": {"P": [[1.0, 7.0, 9.0], [9.0, 1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.19237234116118973]}, "852": {"P": [[0.0, 7.0, 6.0], [7.0, -1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.17009704637243442]}, "853": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.18196609012851006]}, "854": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 6.0], [7.0, 8.0, 0.0]], "dev": [0.14188223060213748]}, "855": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.081468820481870333]}, "856": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [7.0, 8.0, 1.0]], "dev": [0.13973252951145243]}, "857": {"P": [[-1.0, 8.0, 7.0], [7.0, 2.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.18173915736508064]}, "858": {"P": [[1.0, 8.0, 7.0], [8.0, 0.0, 9.0], [8.0, 6.0, 0.0]], "dev": [0.168064119756094]}, "859": {"P": [[-2.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.19334550875229711]}, "860": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 7.0, -1.0]], "dev": [0.16906829498244227]}, "861": {"P": [[0.0, 7.0, 7.0], [9.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.15551416817686947]}, "862": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 6.0], [7.0, 8.0, -1.0]], "dev": [0.14234801325943172]}, "863": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.13888834551715804]}, "864": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.15541557250635604]}, "865": {"P": [[0.0, 9.0, 7.0], [7.0, 1.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.17831319593822043]}, "866": {"P": [[1.0, 7.0, 7.0], [8.0, -1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.15350874701567535]}, "867": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [9.0, 6.0, 0.0]], "dev": [0.16879610419832985]}, "868": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 6.0], [7.0, 7.0, 0.0]], "dev": [0.16876270413207231]}, "869": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.16680635061073465]}, "870": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.15525813562318558]}, "871": {"P": [[1.0, 8.0, 7.0], [7.0, -1.0, 8.0], [8.0, 6.0, -1.0]], "dev": [0.17071904141573338]}, "872": {"P": [[0.0, 8.0, 6.0], [9.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.16431837053901896]}, "873": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.15278152521272526]}, "874": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 6.0], [8.0, 7.0, 0.0]], "dev": [0.14049980373806981]}, "875": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 8.0], [6.0, 8.0, 1.0]], "dev": [0.16856654005774249]}, "876": {"P": [[-1.0, 9.0, 8.0], [7.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.16854382837943147]}, "877": {"P": [[-1.0, 6.0, 8.0], [8.0, 1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.18091764817366898]}, "878": {"P": [[1.0, 8.0, 7.0], [8.0, 1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.17355310120437006]}, "879": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.16310881651798523]}, "880": {"P": [[0.0, 7.0, 8.0], [7.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.13381721194305252]}, "881": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.12033713199150362]}, "882": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.12801939080441077]}, "883": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 8.0], [7.0, 8.0, 2.0]], "dev": [0.17801614730622345]}, "884": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 6.0], [9.0, 7.0, 0.0]], "dev": [0.18352597048590522]}, "885": {"P": [[-1.0, 8.0, 6.0], [7.0, 1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.18072925282430607]}, "886": {"P": [[-1.0, 8.0, 7.0], [8.0, 1.0, 6.0], [8.0, 9.0, 0.0]], "dev": [0.17775519324519851]}, "887": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.13261662384560496]}, "888": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.11981347209423031]}, "889": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.10572518416513456]}, "890": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.15133300107864656]}, "891": {"P": [[-1.0, 7.0, 7.0], [6.0, -1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.18387079411347756]}, "892": {"P": [[0.0, 9.0, 7.0], [8.0, 1.0, 9.0], [6.0, 8.0, 0.0]], "dev": [0.18575528000879099]}, "893": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [8.0, 9.0, 2.0]], "dev": [0.19366268965129407]}, "894": {"P": [[-1.0, 7.0, 9.0], [7.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.16076461118174376]}, "895": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.15099027825167424]}, "896": {"P": [[0.0, 7.0, 7.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.075491505745150914]}, "897": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.12986278523783903]}, "898": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.14078372789654955]}, "899": {"P": [[-2.0, 7.0, 8.0], [7.0, -1.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.18432372383503204]}, "900": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 9.0], [6.0, 8.0, 0.0]], "dev": [0.18463190369498578]}, "901": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 9.0], [8.0, 6.0, -1.0]], "dev": [0.18444645600714393]}, "902": {"P": [[0.0, 8.0, 6.0], [8.0, -1.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.17656149066170884]}, "903": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.13019244923245907]}, "904": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.075240576916067364]}, "905": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.12992042532867357]}, "906": {"P": [[0.0, 6.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.15912754184602912]}, "907": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [10.0, 7.0, 0.0]], "dev": [0.19490302188777983]}, "908": {"P": [[0.0, 9.0, 7.0], [6.0, -1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.18490498866134217]}, "909": {"P": [[1.0, 8.0, 7.0], [8.0, 1.0, 8.0], [7.0, 8.0, -2.0]], "dev": [0.17614129211722548]}, "910": {"P": [[-1.0, 8.0, 7.0], [7.0, 0.0, 9.0], [7.0, 7.0, 0.0]], "dev": [0.14122942278518774]}, "911": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.10729768672628097]}, "912": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.11869902675979294]}, "913": {"P": [[0.0, 9.0, 8.0], [7.0, 1.0, 9.0], [8.0, 7.0, 1.0]], "dev": [0.16607367665866368]}, "914": {"P": [[1.0, 7.0, 8.0], [9.0, 0.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.16588517315299606]}, "915": {"P": [[-2.0, 8.0, 9.0], [7.0, 1.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.18742053763581457]}, "916": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 7.0], [8.0, 6.0, 0.0]], "dev": [0.18069692073609786]}, "917": {"P": [[-1.0, 6.0, 8.0], [7.0, -1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.18555848180745732]}, "918": {"P": [[-1.0, 8.0, 6.0], [7.0, 0.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.16142371507688]}, "919": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.11856458576606151]}, "920": {"P": [[-1.0, 7.0, 9.0], [7.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.17027838820027363]}, "921": {"P": [[0.0, 8.0, 7.0], [7.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.16460415801487105]}, "922": {"P": [[0.0, 7.0, 9.0], [6.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16314941920186288]}, "923": {"P": [[-1.0, 9.0, 8.0], [8.0, -1.0, 7.0], [7.0, 7.0, 1.0]], "dev": [0.16311617169086362]}, "924": {"P": [[0.0, 9.0, 7.0], [6.0, 0.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.16889603262755196]}, "925": {"P": [[-1.0, 6.0, 8.0], [9.0, 1.0, 7.0], [7.0, 8.0, -1.0]], "dev": [0.19208900632542353]}, "926": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.1496648695217625]}, "927": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.15025808000120658]}, "928": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [7.0, 9.0, 1.0]], "dev": [0.15665860988253208]}, "929": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.14263083670372032]}, "930": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [9.0, 6.0, 0.0]], "dev": [0.16291796497771571]}, "931": {"P": [[0.0, 7.0, 7.0], [7.0, -1.0, 8.0], [7.0, 9.0, -1.0]], "dev": [0.15637848259929155]}, "932": {"P": [[-2.0, 7.0, 8.0], [8.0, 1.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.1810802849001216]}, "933": {"P": [[0.0, 6.0, 9.0], [8.0, -1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.16924980636081999]}, "934": {"P": [[0.0, 6.0, 7.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.1688814343234751]}, "935": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.14890333405127917]}, "936": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.14200569682562164]}, "937": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.14192222625371678]}, "938": {"P": [[-1.0, 8.0, 7.0], [9.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.13494108066598362]}, "939": {"P": [[-1.0, 7.0, 7.0], [8.0, 1.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.1627500263196078]}, "940": {"P": [[-1.0, 6.0, 8.0], [7.0, 0.0, 9.0], [7.0, 8.0, -1.0]], "dev": [0.18136559016544324]}, "941": {"P": [[-1.0, 7.0, 9.0], [7.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.17364861576577575]}, "942": {"P": [[-1.0, 8.0, 7.0], [8.0, 0.0, 6.0], [8.0, 9.0, 0.0]], "dev": [0.1627152426874445]}, "943": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.1476402041640478]}, "944": {"P": [[1.0, 8.0, 7.0], [8.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.11621121047106496]}, "945": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.099920986508421822]}, "946": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.13501912902847751]}, "947": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.16268029272081858]}, "948": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [8.0, 8.0, -2.0]], "dev": [0.18171008481648068]}, "949": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 9.0], [9.0, 7.0, 1.0]], "dev": [0.17249681107409939]}, "950": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.16758565354667854]}, "951": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.14090398131063847]}, "952": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.1002970609452702]}, "953": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.10781210069905584]}, "954": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.14605125175421099]}, "955": {"P": [[-1.0, 9.0, 8.0], [8.0, 1.0, 7.0], [7.0, 7.0, -1.0]], "dev": [0.16268293472962314]}, "956": {"P": [[1.0, 7.0, 7.0], [8.0, -2.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.19007309152874913]}, "957": {"P": [[0.0, 7.0, 6.0], [7.0, -1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.18612509387547482]}, "958": {"P": [[1.0, 7.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.14551543550974466]}, "959": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.11390847721569473]}, "960": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.058297850442352889]}, "961": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.11363036499689201]}, "962": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 9.0], [8.0, 8.0, -1.0]], "dev": [0.16274273181231488]}, "963": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.16275555410254519]}, "964": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 9.0], [7.0, 9.0, 1.0]], "dev": [0.18608408108913652]}, "965": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.17042861221573313]}, "966": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.14451018390813822]}, "967": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 8.0, 0.0]], "dev": [0.13101545371074771]}, "968": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.1014564915479242]}, "969": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.13570627545875413]}, "970": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.16639653687965855]}, "971": {"P": [[1.0, 7.0, 9.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.17630407150366326]}, "972": {"P": [[0.0, 9.0, 9.0], [9.0, 1.0, 7.0], [9.0, 7.0, 1.0]], "dev": [0.18720126221519198]}, "973": {"P": [[-1.0, 7.0, 7.0], [9.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.16294108015983907]}, "974": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 7.0], [8.0, 9.0, 1.0]], "dev": [0.16940018734911802]}, "975": {"P": [[0.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.1359918302106837]}, "976": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.13604348168193836]}, "977": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.14327061070955094]}, "978": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.16604904340827512]}, "979": {"P": [[-1.0, 6.0, 8.0], [9.0, -1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.186150706311669]}, "980": {"P": [[-1.0, 7.0, 9.0], [7.0, 0.0, 7.0], [9.0, 7.0, -1.0]], "dev": [0.17502607312407514]}, "981": {"P": [[0.0, 6.0, 9.0], [8.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.18270443201939546]}, "982": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.13637717981561451]}, "983": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.15609891001487172]}, "984": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.13956487313034574]}, "985": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 7.0], [8.0, 7.0, 1.0]], "dev": [0.15590611542455327]}, "986": {"P": [[1.0, 7.0, 9.0], [9.0, 1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.17054642462480443]}, "987": {"P": [[-2.0, 8.0, 9.0], [7.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.1751936344804467]}, "988": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.18368113751616308]}, "989": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 7.0], [6.0, 9.0, -1.0]], "dev": [0.18431785022273967]}, "990": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.15772994371688651]}, "991": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.13946166960553427]}, "992": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 8.0], [8.0, 6.0, 0.0]], "dev": [0.15309026153850364]}, "993": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.15307367318705201]}, "994": {"P": [[-2.0, 8.0, 8.0], [8.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.1509902688071981]}, "995": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 7.0], [7.0, 9.0, 0.0]], "dev": [0.16917024880200929]}, "996": {"P": [[-1.0, 8.0, 7.0], [8.0, -2.0, 8.0], [7.0, 8.0, 1.0]], "dev": [0.17547348991349873]}, "997": {"P": [[-1.0, 6.0, 8.0], [8.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.17710891101844115]}, "998": {"P": [[0.0, 6.0, 8.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.15477082116475033]}, "999": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.12848583491137122]}, "1000": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.12636653299611378]}, "1001": {"P": [[0.0, 8.0, 7.0], [8.0, -1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.1243841732794112]}, "1002": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.15446199481365955]}, "1003": {"P": [[0.0, 8.0, 7.0], [10.0, 1.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.17942386731786503]}, "1004": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.17695737014768742]}, "1005": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 6.0, 0.0]], "dev": [0.1769395467224521]}, "1006": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.15417190027726385]}, "1007": {"P": [[0.0, 7.0, 8.0], [8.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.12727542394288865]}, "1008": {"P": [[0.0, 7.0, 7.0], [8.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.12316693040786728]}, "1009": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 8.0], [7.0, 8.0, 0.0]], "dev": [0.12327419748886026]}, "1010": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.15201237833855141]}, "1011": {"P": [[-2.0, 7.0, 8.0], [7.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.176093352596111]}, "1012": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 9.0], [7.0, 9.0, -1.0]], "dev": [0.17614122696959611]}, "1013": {"P": [[-1.0, 6.0, 7.0], [7.0, -1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.19726082872964507]}, "1014": {"P": [[0.0, 6.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.15297708367169244]}, "1015": {"P": [[0.0, 7.0, 7.0], [8.0, -1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.12468170275409551]}, "1016": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.087747904037072263]}, "1017": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.12474405924972795]}, "1018": {"P": [[0.0, 8.0, 7.0], [8.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.15381176411168412]}, "1019": {"P": [[-1.0, 7.0, 7.0], [8.0, 0.0, 9.0], [6.0, 9.0, -1.0]], "dev": [0.1974581658535538]}, "1020": {"P": [[-1.0, 7.0, 7.0], [7.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.17678377520478603]}, "1021": {"P": [[-1.0, 7.0, 7.0], [7.0, 0.0, 9.0], [7.0, 10.0, 0.0]], "dev": [0.1976846031884571]}, "1022": {"P": [[-1.0, 8.0, 7.0], [7.0, -1.0, 8.0], [8.0, 7.0, -1.0]], "dev": [0.15279527347688396]}, "1023": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [8.0, 7.0, 1.0]], "dev": [0.12504135301795921]}, "1024": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [8.0, 8.0, 0.0]], "dev": [5.4389598220420729e-16]}, "1025": {"P": [[0.0, 7.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.12495997152762438]}, "1026": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.15259696522413768]}, "1027": {"P": [[0.0, 8.0, 9.0], [7.0, 2.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.20664918442752173]}, "1028": {"P": [[2.0, 8.0, 8.0], [8.0, -1.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.17655427983468405]}, "1029": {"P": [[0.0, 7.0, 8.0], [7.0, 0.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.17621408543339778]}, "1030": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [8.0, 9.0, 2.0]], "dev": [0.17575972843068294]}, "1031": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.12417916576565562]}, "1032": {"P": [[0.0, 7.0, 8.0], [9.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.12406738123452769]}, "1033": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.12395696091861436]}, "1034": {"P": [[1.0, 7.0, 9.0], [10.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.17510258802845211]}, "1035": {"P": [[-1.0, 6.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.17682919785535303]}, "1036": {"P": [[-1.0, 7.0, 7.0], [7.0, -1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.17752007548859552]}, "1037": {"P": [[-1.0, 8.0, 9.0], [9.0, 2.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.18538040033463171]}, "1038": {"P": [[-1.0, 7.0, 9.0], [7.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.1525020510136435]}, "1039": {"P": [[-1.0, 9.0, 7.0], [8.0, 1.0, 9.0], [8.0, 8.0, 1.0]], "dev": [0.15147832884564019]}, "1040": {"P": [[0.0, 8.0, 8.0], [9.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.12322206274412804]}, "1041": {"P": [[1.0, 9.0, 8.0], [7.0, -1.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.15240267080290398]}, "1042": {"P": [[1.0, 9.0, 7.0], [8.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.1499911871720841]}, "1043": {"P": [[-1.0, 9.0, 7.0], [10.0, 0.0, 7.0], [8.0, 7.0, 0.0]], "dev": [0.18650463313672788]}, "1044": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 9.0], [7.0, 9.0, 1.0]], "dev": [0.17353203049465993]}, "1045": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.16188606358904167]}, "1046": {"P": [[1.0, 8.0, 7.0], [8.0, 0.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.16173257559166704]}, "1047": {"P": [[1.0, 9.0, 8.0], [7.0, 0.0, 8.0], [9.0, 7.0, -1.0]], "dev": [0.15223210523728969]}, "1048": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 8.0], [8.0, 7.0, 0.0]], "dev": [0.16289982516415902]}, "1049": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.15054343389774946]}, "1050": {"P": [[-1.0, 7.0, 9.0], [7.0, 0.0, 7.0], [9.0, 8.0, -1.0]], "dev": [0.16586213600518762]}, "1051": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 8.0], [8.0, 9.0, 2.0]], "dev": [0.17249350418930054]}, "1052": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [8.0, 8.0, 2.0]], "dev": [0.18162155404515073]}, "1053": {"P": [[0.0, 9.0, 9.0], [9.0, 1.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.15889284538400175]}, "1054": {"P": [[0.0, 9.0, 7.0], [7.0, 0.0, 8.0], [9.0, 7.0, -1.0]], "dev": [0.15401697718875018]}, "1055": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.13667986988766143]}, "1056": {"P": [[1.0, 7.0, 9.0], [9.0, -1.0, 7.0], [8.0, 8.0, 0.0]], "dev": [0.15204538055246]}, "1057": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.13888304681582198]}, "1058": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.14979674863076484]}, "1059": {"P": [[0.0, 6.0, 9.0], [9.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.17336451293002311]}, "1060": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.1800828648998811]}, "1061": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [8.0, 7.0, 1.0]], "dev": [0.15955829795205803]}, "1062": {"P": [[0.0, 8.0, 9.0], [7.0, 1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.1333803151197632]}, "1063": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 7.0, 1.0]], "dev": [0.13607437841469122]}, "1064": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 7.0], [8.0, 8.0, 1.0]], "dev": [0.13600397045397847]}, "1065": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.13885329904791116]}, "1066": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.16144865225976229]}, "1067": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.1834227435388168]}, "1068": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 8.0], [8.0, 9.0, 2.0]], "dev": [0.17860588595909188]}, "1069": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.1584958330404278]}, "1070": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.13226254879869576]}, "1071": {"P": [[1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.099376270531078517]}, "1072": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.1082161334237115]}, "1073": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.13889034709575779]}, "1074": {"P": [[1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [9.0, 10.0, 0.0]], "dev": [0.15786567379569405]}, "1075": {"P": [[-1.0, 7.0, 8.0], [7.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.16388821158507383]}, "1076": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 10.0], [9.0, 7.0, 0.0]], "dev": [0.18278342846630027]}, "1077": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.15749999147327173]}, "1078": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.13894652258677154]}, "1079": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.10345796596080588]}, "1080": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 9.0], [8.0, 8.0, 0.0]], "dev": [0.098051022496183554]}, "1081": {"P": [[1.0, 9.0, 8.0], [8.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.13498304104117839]}, "1082": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.16042979409836403]}, "1083": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 9.0], [7.0, 8.0, 1.0]], "dev": [0.16387423177669563]}, "1084": {"P": [[-1.0, 7.0, 9.0], [7.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.17908362866842273]}, "1085": {"P": [[0.0, 7.0, 9.0], [7.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15656998611142472]}, "1086": {"P": [[0.0, 8.0, 7.0], [10.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.1564583239031864]}, "1087": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.10882965349280735]}, "1088": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.055915304512922231]}, "1089": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.108931812254253]}, "1090": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.13918157879263304]}, "1091": {"P": [[0.0, 7.0, 8.0], [10.0, 0.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.17832226171874802]}, "1092": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [9.0, 8.0, 2.0]], "dev": [0.18181983538996258]}, "1093": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 7.0], [7.0, 9.0, -1.0]], "dev": [0.17176718704681612]}, "1094": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [8.0, 10.0, 1.0]], "dev": [0.15982680499444529]}, "1095": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.12926270017490116]}, "1096": {"P": [[0.0, 9.0, 8.0], [8.0, 1.0, 9.0], [8.0, 8.0, 0.0]], "dev": [0.095996449198694697]}, "1097": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.12356769215626107]}, "1098": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.13941421268092147]}, "1099": {"P": [[-1.0, 8.0, 7.0], [7.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.16400756100586503]}, "1100": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.18141867832799188]}, "1101": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 10.0], [9.0, 7.0, 1.0]], "dev": [0.17731091345585415]}, "1102": {"P": [[1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [8.0, 8.0, -2.0]], "dev": [0.15949912950259373]}, "1103": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.13958935980584361]}, "1104": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.12836288455760547]}, "1105": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.12826870377320537]}, "1106": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.1641308876969032]}, "1107": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.15434507697875069]}, "1108": {"P": [[1.0, 7.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.1610027566021994]}, "1109": {"P": [[-1.0, 7.0, 8.0], [7.0, 0.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.181029716763173]}, "1110": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 8.0], [9.0, 7.0, -1.0]], "dev": [0.16565642431953501]}, "1111": {"P": [[-1.0, 7.0, 8.0], [7.0, -1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.16424231771390208]}, "1112": {"P": [[-1.0, 7.0, 9.0], [8.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.13394272805346077]}, "1113": {"P": [[-1.0, 9.0, 7.0], [8.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.15382119150537291]}, "1114": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.12747277574201246]}, "1115": {"P": [[1.0, 10.0, 8.0], [8.0, 0.0, 9.0], [9.0, 7.0, 1.0]], "dev": [0.1711468031298394]}, "1116": {"P": [[0.0, 8.0, 10.0], [7.0, 1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.15986241207671775]}, "1117": {"P": [[0.0, 8.0, 9.0], [7.0, 1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.15972416036375228]}, "1118": {"P": [[-1.0, 9.0, 8.0], [9.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.14089319588696883]}, "1119": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 7.0], [10.0, 9.0, 0.0]], "dev": [0.16490191185556641]}, "1120": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.14694294728714705]}, "1121": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.13382901010723608]}, "1122": {"P": [[0.0, 8.0, 7.0], [7.0, -1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.17010055216297451]}, "1123": {"P": [[0.0, 9.0, 7.0], [8.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.17007939271069256]}, "1124": {"P": [[1.0, 7.0, 9.0], [9.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.15878293307383803]}, "1125": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.15865224892639343]}, "1126": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.1334020751023661]}, "1127": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.14022484459795251]}, "1128": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.14684601163788735]}, "1129": {"P": [[-1.0, 8.0, 7.0], [9.0, -1.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.15329140464774021]}, "1130": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.15879941498198383]}, "1131": {"P": [[-1.0, 9.0, 7.0], [10.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.17955561199194434]}, "1132": {"P": [[1.0, 7.0, 9.0], [8.0, 0.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.17380977693628744]}, "1133": {"P": [[-2.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.16387204459243473]}, "1134": {"P": [[0.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.12447158915283953]}, "1135": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.11055106826900174]}, "1136": {"P": [[0.0, 8.0, 8.0], [7.0, 0.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.1194232417289765]}, "1137": {"P": [[-1.0, 7.0, 8.0], [8.0, 1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.14680525450695284]}, "1138": {"P": [[-1.0, 9.0, 8.0], [9.0, 0.0, 7.0], [8.0, 7.0, -1.0]], "dev": [0.15374612497565709]}, "1139": {"P": [[0.0, 9.0, 8.0], [7.0, 0.0, 9.0], [10.0, 7.0, 1.0]], "dev": [0.17425677117963156]}, "1140": {"P": [[-1.0, 7.0, 7.0], [9.0, -1.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.18183364166993296]}, "1141": {"P": [[-1.0, 10.0, 8.0], [8.0, 0.0, 9.0], [7.0, 7.0, 0.0]], "dev": [0.1697703659068126]}, "1142": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.13929240271931465]}, "1143": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.099794086036127869]}, "1144": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.11007402363894249]}, "1145": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.11960998277390383]}, "1146": {"P": [[2.0, 8.0, 8.0], [8.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.16306841559081761]}, "1147": {"P": [[-1.0, 7.0, 8.0], [10.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.1697236532897943]}, "1148": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 10.0], [9.0, 7.0, 0.0]], "dev": [0.16971847795141989]}, "1149": {"P": [[-1.0, 8.0, 9.0], [8.0, 2.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.17100258531770129]}, "1150": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.13041385700491229]}, "1151": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 9.0], [7.0, 8.0, 0.0]], "dev": [0.1197798045537775]}, "1152": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.069416637490063146]}, "1153": {"P": [[-1.0, 9.0, 7.0], [9.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.1387491503938876]}, "1154": {"P": [[-1.0, 9.0, 9.0], [7.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.14691798478916585]}, "1155": {"P": [[-2.0, 7.0, 8.0], [9.0, -1.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.17652390432342402]}, "1156": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.16970347114623233]}, "1157": {"P": [[-1.0, 7.0, 9.0], [7.0, 0.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.18332459675112081]}, "1158": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [8.0, 7.0, 0.0]], "dev": [0.1469792800528637]}, "1159": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.12006082914794761]}, "1160": {"P": [[0.0, 8.0, 8.0], [9.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.069236400317306629]}, "1161": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.11936541329132708]}, "1162": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [7.0, 9.0, 1.0]], "dev": [0.16227447015312302]}, "1163": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 8.0], [7.0, 9.0, 1.0]], "dev": [0.16887603030437359]}, "1164": {"P": [[-1.0, 7.0, 9.0], [9.0, -1.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.16973448247504991]}, "1165": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 10.0], [7.0, 9.0, 1.0]], "dev": [0.18292338457708418]}, "1166": {"P": [[-1.0, 8.0, 7.0], [8.0, -1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.15551788597018792]}, "1167": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.15559054737615813]}, "1168": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.10927547349808397]}, "1169": {"P": [[0.0, 9.0, 8.0], [8.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.096719152034122013]}, "1170": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.12838780110785716]}, "1171": {"P": [[2.0, 8.0, 9.0], [8.0, -1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.16191954537691164]}, "1172": {"P": [[0.0, 7.0, 9.0], [8.0, 1.0, 9.0], [10.0, 8.0, -1.0]], "dev": [0.16476485880597663]}, "1173": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 7.0, 0.0]], "dev": [0.16467763176378752]}, "1174": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 7.0], [8.0, 10.0, 0.0]], "dev": [0.16181554871623821]}, "1175": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.15329100711068017]}, "1176": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.16175014302447355]}, "1177": {"P": [[0.0, 9.0, 8.0], [8.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.10914742123351369]}, "1178": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.14387437429220476]}, "1179": {"P": [[0.0, 7.0, 9.0], [9.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.16664727131216905]}, "1180": {"P": [[0.0, 10.0, 8.0], [10.0, 0.0, 8.0], [8.0, 8.0, 1.0]], "dev": [0.15547782757406658]}, "1181": {"P": [[0.0, 9.0, 10.0], [7.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.16400936917695191]}, "1182": {"P": [[-1.0, 7.0, 9.0], [9.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.16392950741827891]}, "1183": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [9.0, 7.0, 0.0]], "dev": [0.15016363330933277]}, "1184": {"P": [[0.0, 7.0, 9.0], [9.0, -1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.14768174867679781]}, "1185": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.14771886138186255]}, "1186": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.13779917505809655]}, "1187": {"P": [[-1.0, 7.0, 9.0], [10.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.17402875525100203]}, "1188": {"P": [[0.0, 8.0, 10.0], [9.0, 1.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.15226171922198936]}, "1189": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.15430036691304436]}, "1190": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [9.0, 8.0, 1.0]], "dev": [0.14001923293901614]}, "1191": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [9.0, 7.0, -1.0]], "dev": [0.15001457562806472]}, "1192": {"P": [[-1.0, 8.0, 8.0], [10.0, 0.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.14999954971286261]}, "1193": {"P": [[-1.0, 9.0, 7.0], [7.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.14804139141883177]}, "1194": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 7.0], [7.0, 9.0, -1.0]], "dev": [0.17023883117382307]}, "1195": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [7.0, 10.0, 0.0]], "dev": [0.15176734533939279]}, "1196": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 7.0], [9.0, 9.0, 1.0]], "dev": [0.15343281319322799]}, "1197": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.12831335724451301]}, "1198": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.12818564807925453]}, "1199": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.12426756719880168]}, "1200": {"P": [[1.0, 8.0, 8.0], [8.0, -1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.12427273759128663]}, "1201": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.14989972848480448]}, "1202": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 7.0], [8.0, 10.0, 0.0]], "dev": [0.16117745864623978]}, "1203": {"P": [[1.0, 7.0, 8.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.17408575366246348]}, "1204": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 9.0, 2.0]], "dev": [0.16478900734112073]}, "1205": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.15237885397496023]}, "1206": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [8.0, 7.0, 0.0]], "dev": [0.12432280300223922]}, "1207": {"P": [[-1.0, 9.0, 8.0], [9.0, 0.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.11092122636057161]}, "1208": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.12434666918821959]}, "1209": {"P": [[-1.0, 8.0, 9.0], [7.0, 1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.1498635172310479]}, "1210": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.16018088770728214]}, "1211": {"P": [[1.0, 8.0, 8.0], [8.0, -1.0, 7.0], [9.0, 10.0, -1.0]], "dev": [0.17159431011352527]}, "1212": {"P": [[0.0, 8.0, 7.0], [10.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.16190337364015733]}, "1213": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.15149950997212985]}, "1214": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.12627544384026032]}, "1215": {"P": [[0.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.094587547545260664]}, "1216": {"P": [[-1.0, 8.0, 8.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.09234604193569608]}, "1217": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.12449757280851922]}, "1218": {"P": [[-1.0, 8.0, 8.0], [7.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.14988023715411733]}, "1219": {"P": [[0.0, 7.0, 9.0], [9.0, 0.0, 7.0], [10.0, 9.0, 0.0]], "dev": [0.16153087509811595]}, "1220": {"P": [[0.0, 7.0, 8.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.17229158650312185]}, "1221": {"P": [[-2.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.161431217658632]}, "1222": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.14990674676656035]}, "1223": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.1253104027317174]}, "1224": {"P": [[0.0, 8.0, 8.0], [8.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.072140999676966341]}, "1225": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.12469006687446241]}, "1226": {"P": [[-1.0, 7.0, 8.0], [8.0, 0.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.14994477207405565]}, "1227": {"P": [[-1.0, 9.0, 9.0], [9.0, 2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16115009246878248]}, "1228": {"P": [[-1.0, 7.0, 8.0], [9.0, 0.0, 10.0], [7.0, 9.0, 0.0]], "dev": [0.17149860488410942]}, "1229": {"P": [[-1.0, 8.0, 9.0], [8.0, -1.0, 7.0], [7.0, 9.0, -1.0]], "dev": [0.17156851996087041]}, "1230": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.1498080489216963]}, "1231": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.12451813403940661]}, "1232": {"P": [[0.0, 8.0, 9.0], [8.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.092600327478384717]}, "1233": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.092494490305091631]}, "1234": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.12497008477354984]}, "1235": {"P": [[-1.0, 7.0, 8.0], [9.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.1500716082462398]}, "1236": {"P": [[1.0, 10.0, 8.0], [8.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.17007772949368621]}, "1237": {"P": [[0.0, 7.0, 9.0], [10.0, 0.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.1801326146391215]}, "1238": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [9.0, 7.0, 0.0]], "dev": [0.15012634900177843]}, "1239": {"P": [[1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 9.0, -2.0]], "dev": [0.16066688779426594]}, "1240": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 7.0], [8.0, 9.0, 0.0]], "dev": [0.12519294437548387]}, "1241": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.071919496685469805]}, "1242": {"P": [[0.0, 8.0, 10.0], [9.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.12352855346913359]}, "1243": {"P": [[-1.0, 8.0, 9.0], [9.0, 2.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.16052882298959023]}, "1244": {"P": [[0.0, 7.0, 9.0], [10.0, 0.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.14859274062741767]}, "1245": {"P": [[-1.0, 7.0, 9.0], [8.0, 1.0, 9.0], [10.0, 8.0, -1.0]], "dev": [0.17081513422775338]}, "1246": {"P": [[-1.0, 7.0, 10.0], [8.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.17078032501193208]}, "1247": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.16222967925935441]}, "1248": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.13737543998703208]}, "1249": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.12557969659828511]}, "1250": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.12288068902156088]}, "1251": {"P": [[0.0, 7.0, 9.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.13731535171493639]}, "1252": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.15792137897084493]}, "1253": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [10.0, 8.0, 1.0]], "dev": [0.15901974039820752]}, "1254": {"P": [[-2.0, 8.0, 9.0], [8.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.17052563911109983]}, "1255": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.14915568222142644]}, "1256": {"P": [[-1.0, 9.0, 8.0], [8.0, 1.0, 10.0], [9.0, 7.0, 0.0]], "dev": [0.16015761661001496]}, "1257": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.14760474582153041]}, "1258": {"P": [[0.0, 7.0, 9.0], [10.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.13720280973408192]}, "1259": {"P": [[-1.0, 7.0, 9.0], [9.0, -1.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.15067709206644278]}, "1260": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.14570999283278904]}, "1261": {"P": [[0.0, 8.0, 7.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15844692573487501]}, "1262": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.13523058838019347]}, "1263": {"P": [[-1.0, 9.0, 10.0], [8.0, 0.0, 7.0], [9.0, 8.0, 0.0]], "dev": [0.1490148145388499]}, "1264": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.14900043425047341]}, "1265": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 8.0, -2.0]], "dev": [0.16173909743749043]}, "1266": {"P": [[0.0, 9.0, 8.0], [8.0, -1.0, 9.0], [10.0, 7.0, 1.0]], "dev": [0.15995083689529987]}, "1267": {"P": [[-1.0, 7.0, 10.0], [9.0, 0.0, 8.0], [8.0, 9.0, 1.0]], "dev": [0.15993384451711118]}, "1268": {"P": [[0.0, 8.0, 10.0], [9.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.15404430102453626]}, "1269": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 9.0], [9.0, 7.0, 1.0]], "dev": [0.14465002707649419]}, "1270": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.13472688836145785]}, "1271": {"P": [[0.0, 7.0, 9.0], [8.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.12414781676387505]}, "1272": {"P": [[0.0, 8.0, 7.0], [8.0, 0.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.14891080299111278]}, "1273": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.14890274479587348]}, "1274": {"P": [[-1.0, 7.0, 9.0], [10.0, 0.0, 8.0], [7.0, 9.0, 0.0]], "dev": [0.17212686337105729]}, "1275": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [7.0, 10.0, 0.0]], "dev": [0.15982160406845466]}, "1276": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.15276859877243285]}, "1277": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.14376193270919915]}, "1278": {"P": [[0.0, 9.0, 8.0], [10.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.11788544872749593]}, "1279": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.10620631143084548]}, "1280": {"P": [[-1.0, 8.0, 9.0], [8.0, 0.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.11337876487877643]}, "1281": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 9.0], [8.0, 9.0, 2.0]], "dev": [0.15721761499232317]}, "1282": {"P": [[-2.0, 8.0, 8.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.16230980222964855]}, "1283": {"P": [[-1.0, 9.0, 10.0], [8.0, -1.0, 8.0], [9.0, 7.0, 1.0]], "dev": [0.16994521803926008]}, "1284": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.16484883602722639]}, "1285": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.15700578773798859]}, "1286": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.11699062985288868]}, "1287": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.10584202639606861]}, "1288": {"P": [[-1.0, 9.0, 8.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.093546899474446277]}, "1289": {"P": [[0.0, 9.0, 7.0], [8.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.13374080649942033]}, "1290": {"P": [[-1.0, 7.0, 8.0], [8.0, -1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.16263352424904881]}, "1291": {"P": [[1.0, 8.0, 9.0], [10.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.17815791494956204]}, "1292": {"P": [[0.0, 8.0, 10.0], [7.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.16407605421247545]}, "1293": {"P": [[2.0, 8.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.17103266569137143]}, "1294": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14204188544581117]}, "1295": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.13348957136271233]}, "1296": {"P": [[0.0, 9.0, 8.0], [9.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.066744749317698845]}, "1297": {"P": [[-1.0, 9.0, 8.0], [9.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.11490701106346984]}, "1298": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.1245279275175942]}, "1299": {"P": [[1.0, 9.0, 8.0], [9.0, -2.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16303803238995285]}, "1300": {"P": [[0.0, 10.0, 8.0], [7.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.16334737952212364]}, "1301": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.1632593709505234]}, "1302": {"P": [[-1.0, 7.0, 9.0], [10.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.16318209985313314]}, "1303": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [8.0, 10.0, 1.0]], "dev": [0.15618893105688791]}, "1304": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.11519254781833463]}, "1305": {"P": [[0.0, 9.0, 8.0], [9.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.066571946714108973]}, "1306": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.11501105135296627]}, "1307": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [7.0, 9.0, 0.0]], "dev": [0.14087779975133152]}, "1308": {"P": [[-1.0, 8.0, 10.0], [9.0, 2.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.17598990410227527]}, "1309": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.16625748676281513]}, "1310": {"P": [[-1.0, 7.0, 8.0], [10.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.16358822698905578]}, "1311": {"P": [[-2.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15589595064045475]}, "1312": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.1249418682164961]}, "1313": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.094867703110173035]}, "1314": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.10507504317797575]}, "1315": {"P": [[0.0, 8.0, 9.0], [10.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.14722846507088366]}, "1316": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.14710109701395463]}, "1317": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [11.0, 8.0, 0.0]], "dev": [0.17183858352096731]}, "1318": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [10.0, 7.0, 0.0]], "dev": [0.16991370214532392]}, "1319": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 8.0], [10.0, 7.0, 0.0]], "dev": [0.17936944985694331]}, "1320": {"P": [[-1.0, 7.0, 10.0], [8.0, -1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.16413946703765092]}, "1321": {"P": [[-1.0, 9.0, 8.0], [7.0, -1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.14271700727806674]}, "1322": {"P": [[0.0, 9.0, 8.0], [8.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.10498046584984723]}, "1323": {"P": [[-1.0, 7.0, 9.0], [10.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.15553499400900084]}, "1324": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.14610832303059246]}, "1325": {"P": [[-1.0, 7.0, 9.0], [10.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.1554838338745772]}, "1326": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.16569718941338762]}, "1327": {"P": [[0.0, 9.0, 7.0], [9.0, -2.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.16005910957125485]}, "1328": {"P": [[0.0, 7.0, 9.0], [10.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.14946779258727297]}, "1329": {"P": [[-1.0, 7.0, 9.0], [10.0, 1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.1700438970007182]}, "1330": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.13257492555068393]}, "1331": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.13906531594236457]}, "1332": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.13899910323287862]}, "1333": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 7.0, -1.0]], "dev": [0.16551719591038769]}, "1334": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [10.0, 8.0, 0.0]], "dev": [0.14435561421631582]}, "1335": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.14434085181104728]}, "1336": {"P": [[-1.0, 10.0, 9.0], [9.0, -1.0, 7.0], [8.0, 8.0, 0.0]], "dev": [0.16025841129051713]}, "1337": {"P": [[-1.0, 8.0, 10.0], [9.0, 2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.17997955751634473]}, "1338": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 7.0], [8.0, 9.0, -1.0]], "dev": [0.14976829734487165]}, "1339": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.15527336547455278]}, "1340": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.13246254844185779]}, "1341": {"P": [[0.0, 8.0, 7.0], [10.0, -1.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.14426605582398566]}, "1342": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.12604142189530573]}, "1343": {"P": [[0.0, 10.0, 7.0], [9.0, -1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.14424633019620534]}, "1344": {"P": [[-1.0, 9.0, 8.0], [10.0, -1.0, 8.0], [8.0, 8.0, 0.0]], "dev": [0.13868689978553805]}, "1345": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 8.0], [9.0, 8.0, -1.0]], "dev": [0.16050081745478215]}, "1346": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 7.0], [8.0, 10.0, 0.0]], "dev": [0.17483102863099501]}, "1347": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 10.0], [10.0, 7.0, 0.0]], "dev": [0.16979688960450545]}, "1348": {"P": [[0.0, 7.0, 8.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.14935473145392678]}, "1349": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.13147356931988322]}, "1350": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.1256035869920275]}, "1351": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.12555236207180456]}, "1352": {"P": [[-1.0, 9.0, 8.0], [10.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.11957901330103879]}, "1353": {"P": [[-1.0, 8.0, 8.0], [9.0, 1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.14418610642181817]}, "1354": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 7.0], [8.0, 8.0, -1.0]], "dev": [0.16078496261299347]}, "1355": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.17345019526561734]}, "1356": {"P": [[-1.0, 10.0, 8.0], [10.0, 1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.15353631833193104]}, "1357": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 10.0], [9.0, 7.0, 0.0]], "dev": [0.14417966988981815]}, "1358": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.13054616306232739]}, "1359": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.10270003186083294]}, "1360": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.088636397739543835]}, "1361": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.11969135903495964]}, "1362": {"P": [[-1.0, 8.0, 8.0], [10.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.14418555115150458]}, "1363": {"P": [[-2.0, 8.0, 9.0], [9.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.1611094922860965]}, "1364": {"P": [[0.0, 7.0, 9.0], [8.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.17261706813889882]}, "1365": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.15269447957568374]}, "1366": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [9.0, 10.0, 1.0]], "dev": [0.14846220620350611]}, "1367": {"P": [[-1.0, 9.0, 9.0], [8.0, 1.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.12483712921284371]}, "1368": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.088971491727112453]}, "1369": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.095539754430978827]}, "1370": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.12940468112936088]}, "1371": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [8.0, 9.0, 1.0]], "dev": [0.14423444177440412]}, "1372": {"P": [[-1.0, 7.0, 9.0], [10.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.1685075562970707]}, "1373": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.1684634955758442]}, "1374": {"P": [[-1.0, 10.0, 8.0], [9.0, 0.0, 10.0], [8.0, 7.0, 0.0]], "dev": [0.16502517457903559]}, "1375": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.12896089289333484]}, "1376": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.10095988441071276]}, "1377": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.051692467438679342]}, "1378": {"P": [[0.0, 10.0, 9.0], [8.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.10077255863737372]}, "1379": {"P": [[1.0, 8.0, 10.0], [8.0, -1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.14431832759689853]}, "1380": {"P": [[0.0, 10.0, 8.0], [10.0, 0.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.14433143882356503]}, "1381": {"P": [[-1.0, 8.0, 10.0], [8.0, -1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.16503249879795212]}, "1382": {"P": [[0.0, 8.0, 10.0], [7.0, -1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.16809233285525305]}, "1383": {"P": [[1.0, 9.0, 10.0], [10.0, -1.0, 8.0], [9.0, 8.0, 1.0]], "dev": [0.15116952925670013]}, "1384": {"P": [[0.0, 8.0, 9.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.1282088721139861]}, "1385": {"P": [[-1.0, 9.0, 8.0], [8.0, -1.0, 9.0], [9.0, 8.0, 0.0]], "dev": [0.11614271494769728]}, "1386": {"P": [[-1.0, 9.0, 8.0], [8.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.089934116350200557]}, "1387": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.12033688529327854]}, "1388": {"P": [[0.0, 7.0, 9.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14765384882675125]}, "1389": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.15669226898167057]}, "1390": {"P": [[-1.0, 10.0, 8.0], [7.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.16780027757136559]}, "1391": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.16776624390799758]}, "1392": {"P": [[-1.0, 8.0, 8.0], [8.0, 0.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.14453327025433399]}, "1393": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.15041232929374795]}, "1394": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 9.0, 0.0]], "dev": [0.12058816653047526]}, "1395": {"P": [[-1.0, 8.0, 9.0], [8.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.12062663412396628]}, "1396": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.12729892528271103]}, "1397": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.14740968484370165]}, "1398": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 7.0], [8.0, 10.0, -1.0]], "dev": [0.16515445731999251]}, "1399": {"P": [[-2.0, 10.0, 9.0], [9.0, 0.0, 8.0], [9.0, 7.0, 0.0]], "dev": [0.17450627934291293]}, "1400": {"P": [[-1.0, 10.0, 8.0], [7.0, 0.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.1628395149016372]}, "1401": {"P": [[0.0, 8.0, 9.0], [10.0, -1.0, 8.0], [7.0, 9.0, -1.0]], "dev": [0.16289457838488589]}, "1402": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.12091354740152915]}, "1403": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.14478856724479264]}, "1404": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.12390917442399302]}, "1405": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.14958697325272474]}, "1406": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.15179514052467344]}, "1407": {"P": [[-1.0, 9.0, 7.0], [8.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.1672950672429061]}, "1408": {"P": [[-1.0, 8.0, 10.0], [8.0, 0.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.15544339572511698]}, "1409": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.16530927729817077]}, "1410": {"P": [[0.0, 7.0, 10.0], [9.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.16145544045787844]}, "1411": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.15748256061990071]}, "1412": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.12383589931545878]}, "1413": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.1490864599899667]}, "1414": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.13805370804402847]}, "1415": {"P": [[-1.0, 7.0, 9.0], [8.0, 0.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.15561000798707467]}, "1416": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.15074190292850129]}, "1417": {"P": [[0.0, 9.0, 8.0], [11.0, -1.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.17623226467000105]}, "1418": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.16226046839002592]}, "1419": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 11.0, 1.0]], "dev": [0.16703030468550401]}, "1420": {"P": [[0.0, 8.0, 10.0], [8.0, 1.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.13950003008395656]}, "1421": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 8.0], [10.0, 8.0, -1.0]], "dev": [0.13765779005878173]}, "1422": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [9.0, 7.0, 0.0]], "dev": [0.1358896638861519]}, "1423": {"P": [[1.0, 9.0, 9.0], [8.0, -1.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.13588477674460125]}, "1424": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 8.0, 0.0]], "dev": [0.13424366714747379]}, "1425": {"P": [[-1.0, 8.0, 8.0], [7.0, -1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.17360983942546843]}, "1426": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.15591972844889965]}, "1427": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 10.0], [8.0, 8.0, 1.0]], "dev": [0.1597732493405829]}, "1428": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.15722430280422475]}, "1429": {"P": [[0.0, 9.0, 7.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.13724411099518258]}, "1430": {"P": [[0.0, 8.0, 10.0], [9.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.11371888570695118]}, "1431": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [9.0, 8.0, 1.0]], "dev": [0.11206731493622982]}, "1432": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.11051120371223787]}, "1433": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.13705262783528599]}, "1434": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [11.0, 9.0, 1.0]], "dev": [0.15912948059489709]}, "1435": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.15716247971165881]}, "1436": {"P": [[0.0, 10.0, 8.0], [10.0, 1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.15984068175167793]}, "1437": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 10.0], [10.0, 7.0, 0.0]], "dev": [0.15714948011347402]}, "1438": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.13682752983732591]}, "1439": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.11281589133878206]}, "1440": {"P": [[-1.0, 9.0, 8.0], [9.0, -1.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.10959567872226404]}, "1441": {"P": [[-1.0, 8.0, 9.0], [8.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.10967527061641198]}, "1442": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.13514684198123297]}, "1443": {"P": [[-2.0, 9.0, 8.0], [9.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.15650898011165251]}, "1444": {"P": [[0.0, 10.0, 8.0], [10.0, -1.0, 8.0], [8.0, 8.0, -1.0]], "dev": [0.15654768216080947]}, "1445": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.15817471156023744]}, "1446": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.17532476457151816]}, "1447": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 7.0], [9.0, 10.0, 0.0]], "dev": [0.13594505437045692]}, "1448": {"P": [[0.0, 8.0, 8.0], [10.0, 0.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.11082633442730375]}, "1449": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.078036883123726433]}, "1450": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.11087799813107013]}, "1451": {"P": [[0.0, 8.0, 9.0], [11.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.13664272400674826]}, "1452": {"P": [[-1.0, 7.0, 9.0], [8.0, -1.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.17549631614341396]}, "1453": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.15711847161594289]}, "1454": {"P": [[1.0, 9.0, 10.0], [9.0, -2.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.15728280520129834]}, "1455": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [11.0, 8.0, 1.0]], "dev": [0.18459236538558071]}, "1456": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.13586564909863152]}, "1457": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.11113687842021762]}, "1458": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.0]}, "1459": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.11108607266043062]}, "1460": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.135741711756178]}, "1461": {"P": [[-2.0, 8.0, 9.0], [9.0, 1.0, 11.0], [9.0, 8.0, 1.0]], "dev": [0.19232010406201189]}, "1462": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.15699538420767864]}, "1463": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 8.0], [10.0, 8.0, 1.0]], "dev": [0.16610184908082223]}, "1464": {"P": [[1.0, 9.0, 11.0], [9.0, -1.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.15668682366560935]}, "1465": {"P": [[2.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15633135044434876]}, "1466": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.11047465620157002]}, "1467": {"P": [[1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.1103984693216661]}, "1468": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.11032302953297711]}, "1469": {"P": [[0.0, 8.0, 9.0], [11.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.15588456996377756]}, "1470": {"P": [[-1.0, 7.0, 9.0], [9.0, 0.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.15722321166711958]}, "1471": {"P": [[-1.0, 7.0, 9.0], [10.0, -1.0, 8.0], [8.0, 9.0, -1.0]], "dev": [0.17659601612880116]}, "1472": {"P": [[-1.0, 8.0, 8.0], [8.0, -1.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.15780360222754661]}, "1473": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 7.0, 0.0]], "dev": [0.1655829074002812]}, "1474": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.13566151218989905]}, "1475": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.13485115002408368]}, "1476": {"P": [[0.0, 9.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.10974633629078834]}, "1477": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [8.0, 9.0, 1.0]], "dev": [0.13559934036153107]}, "1478": {"P": [[0.0, 10.0, 8.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.13371874283441793]}, "1479": {"P": [[-1.0, 9.0, 11.0], [8.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.16597630378845032]}, "1480": {"P": [[0.0, 10.0, 8.0], [8.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.1547020004698931]}, "1481": {"P": [[0.0, 9.0, 11.0], [9.0, 2.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.16330119448457164]}, "1482": {"P": [[-2.0, 8.0, 9.0], [9.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.15832886966568002]}, "1483": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 11.0], [9.0, 8.0, 0.0]], "dev": [0.15640006963600989]}, "1484": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.1354745284779601]}, "1485": {"P": [[-1.0, 9.0, 10.0], [8.0, 1.0, 8.0], [10.0, 9.0, -1.0]], "dev": [0.14628066628483605]}, "1486": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 8.0], [8.0, 10.0, 1.0]], "dev": [0.13414974457583556]}, "1487": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.15515268532673132]}, "1488": {"P": [[0.0, 9.0, 10.0], [10.0, 2.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.1538841349180439]}, "1489": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.1668822338005862]}, "1490": {"P": [[0.0, 9.0, 11.0], [10.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.16206017427991393]}, "1491": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.14334613764469989]}, "1492": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.13691598128047147]}, "1493": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [11.0, 8.0, 1.0]], "dev": [0.16299312104048228]}, "1494": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.13534466873323617]}, "1495": {"P": [[-1.0, 9.0, 10.0], [8.0, 1.0, 9.0], [10.0, 8.0, -1.0]], "dev": [0.14611907457762338]}, "1496": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.13357617459506127]}, "1497": {"P": [[0.0, 7.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.15457464221205761]}, "1498": {"P": [[1.0, 11.0, 8.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.17159353031348831]}, "1499": {"P": [[-1.0, 9.0, 10.0], [10.0, 2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.16086157292063244]}, "1500": {"P": [[0.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.14063209928298237]}, "1501": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.14236847827623167]}, "1502": {"P": [[0.0, 10.0, 8.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.12137807473692046]}, "1503": {"P": [[0.0, 8.0, 9.0], [9.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.14217987006337485]}, "1504": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.12359194956799133]}, "1505": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.14600947463034863]}, "1506": {"P": [[1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 10.0, -1.0]], "dev": [0.16360668900091671]}, "1507": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 10.0], [9.0, 9.0, -2.0]], "dev": [0.16719616400203985]}, "1508": {"P": [[0.0, 9.0, 11.0], [8.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.1597051956542081]}, "1509": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [9.0, 8.0, 1.0]], "dev": [0.14162782676786217]}, "1510": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.11833283021065047]}, "1511": {"P": [[-1.0, 10.0, 8.0], [10.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.12095263038728564]}, "1512": {"P": [[1.0, 8.0, 9.0], [9.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.12090857233145896]}, "1513": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.12361848265884752]}, "1514": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 10.0, 0.0]], "dev": [0.14358870655083261]}, "1515": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.16316221109924778]}, "1516": {"P": [[0.0, 10.0, 8.0], [8.0, 1.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.17001566153114295]}, "1517": {"P": [[-1.0, 10.0, 9.0], [10.0, 1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.15859083782694439]}, "1518": {"P": [[1.0, 8.0, 9.0], [10.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.14083833738397861]}, "1519": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.11749503260120066]}, "1520": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.088205279907383069]}, "1521": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.096415032887245442]}, "1522": {"P": [[-1.0, 9.0, 9.0], [8.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.12369161846105699]}, "1523": {"P": [[0.0, 8.0, 9.0], [11.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.14041961713924861]}, "1524": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.14593999864497656]}, "1525": {"P": [[-1.0, 8.0, 8.0], [8.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.16519545426087309]}, "1526": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 11.0], [10.0, 8.0, 0.0]], "dev": [0.16267233371511244]}, "1527": {"P": [[-1.0, 9.0, 10.0], [8.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.14009481089750386]}, "1528": {"P": [[-1.0, 9.0, 8.0], [10.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.12376568426892794]}, "1529": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.092094504119915696]}, "1530": {"P": [[1.0, 10.0, 9.0], [9.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.087205231321354479]}, "1531": {"P": [[1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [10.0, 10.0, -1.0]], "dev": [0.120191729609734]}, "1532": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14286676968453935]}, "1533": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.14596853002667981]}, "1534": {"P": [[0.0, 8.0, 10.0], [8.0, -1.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.16515346005088685]}, "1535": {"P": [[-1.0, 8.0, 10.0], [8.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.15942750213354542]}, "1536": {"P": [[0.0, 8.0, 10.0], [8.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.13939685651800496]}, "1537": {"P": [[-1.0, 10.0, 8.0], [10.0, 1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.13932210132980458]}, "1538": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.096966549299093971]}, "1539": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 9.0], [9.0, 9.0, 0.0]], "dev": [0.049810839298773973]}, "1540": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.097044166502234783]}, "1541": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 8.0, -1.0]], "dev": [0.12399372626240736]}, "1542": {"P": [[0.0, 10.0, 8.0], [8.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.15891989480780344]}, "1543": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.16202819717462322]}, "1544": {"P": [[-1.0, 9.0, 8.0], [10.0, 1.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.16199450153542422]}, "1545": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.15303776171174802]}, "1546": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 11.0], [9.0, 8.0, 0.0]], "dev": [0.14242373449982609]}, "1547": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.11522851739710878]}, "1548": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.085615045842979812]}, "1549": {"P": [[0.0, 10.0, 9.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.11025902704092018]}, "1550": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 10.0], [8.0, 10.0, 0.0]], "dev": [0.12420422843000668]}, "1551": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.14613930498058686]}, "1552": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 11.0], [8.0, 10.0, 0.0]], "dev": [0.1617414375663834]}, "1553": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 10.0], [10.0, 9.0, 2.0]], "dev": [0.17588786666581588]}, "1554": {"P": [[1.0, 8.0, 9.0], [11.0, 1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.15810589423850607]}, "1555": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.14219226754790235]}, "1556": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.12436778068369878]}, "1557": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.11454251413533501]}, "1558": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.11447745210874964]}, "1559": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 8.0], [9.0, 9.0, 1.0]], "dev": [0.1462623025247837]}, "1560": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.13775520793166032]}, "1561": {"P": [[-1.0, 9.0, 8.0], [9.0, 2.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.16149139162958959]}, "1562": {"P": [[0.0, 9.0, 11.0], [9.0, 1.0, 9.0], [11.0, 8.0, 0.0]], "dev": [0.16295254789836242]}, "1563": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 11.0], [8.0, 9.0, 0.0]], "dev": [0.16144074513034598]}, "1564": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.14783419848931623]}, "1565": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 10.0], [8.0, 9.0, -1.0]], "dev": [0.14637298951745237]}, "1566": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.11945013200909244]}, "1567": {"P": [[-1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.13733564212746943]}, "1568": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.11386198797094431]}, "1569": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.15296343468224444]}, "1570": {"P": [[1.0, 11.0, 9.0], [8.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.15286857738202148]}, "1571": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.14284038892164161]}, "1572": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 8.0], [8.0, 10.0, -1.0]], "dev": [0.15103399824720443]}, "1573": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.14731690283928492]}, "1574": {"P": [[1.0, 9.0, 8.0], [9.0, -2.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.15182408108805689]}, "1575": {"P": [[-1.0, 8.0, 9.0], [10.0, 1.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.14659175815968606]}, "1576": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.11937030026562179]}, "1577": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 8.0], [11.0, 9.0, -1.0]], "dev": [0.15630926386055941]}, "1578": {"P": [[1.0, 8.0, 11.0], [10.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.15212759047563171]}, "1579": {"P": [[-1.0, 10.0, 8.0], [8.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.15663353116410689]}, "1580": {"P": [[1.0, 10.0, 9.0], [9.0, 0.0, 11.0], [8.0, 10.0, 0.0]], "dev": [0.1419949194967485]}, "1581": {"P": [[0.0, 9.0, 10.0], [8.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.14190358699300476]}, "1582": {"P": [[0.0, 8.0, 10.0], [9.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.1253638971503499]}, "1583": {"P": [[1.0, 9.0, 10.0], [9.0, -1.0, 11.0], [8.0, 9.0, 0.0]], "dev": [0.14678961767627122]}, "1584": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.1310122581359898]}, "1585": {"P": [[0.0, 9.0, 8.0], [9.0, -1.0, 10.0], [8.0, 10.0, -1.0]], "dev": [0.13655153147974175]}, "1586": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.14170297258921752]}, "1587": {"P": [[-1.0, 7.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.16096916945797268]}, "1588": {"P": [[0.0, 8.0, 10.0], [11.0, 0.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.15617580075331886]}, "1589": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.14119162652344314]}, "1590": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 9.0, 1.0]], "dev": [0.14110496301182304]}, "1591": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.11858524594532922]}, "1592": {"P": [[1.0, 9.0, 9.0], [8.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.12489607388124331]}, "1593": {"P": [[-1.0, 11.0, 9.0], [9.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.13098484406991656]}, "1594": {"P": [[-1.0, 8.0, 9.0], [8.0, 0.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.1368810434074246]}, "1595": {"P": [[-1.0, 8.0, 9.0], [8.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.15156179616074231]}, "1596": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [8.0, 11.0, 1.0]], "dev": [0.15580039497327192]}, "1597": {"P": [[-1.0, 9.0, 11.0], [8.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.15985332988069678]}, "1598": {"P": [[1.0, 10.0, 8.0], [10.0, 1.0, 10.0], [9.0, 11.0, 0.0]], "dev": [0.15461429638240806]}, "1599": {"P": [[-2.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.14604816384619315]}, "1600": {"P": [[0.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.11058826023712073]}, "1601": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.098521104773250004]}, "1602": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.10659845504236683]}, "1603": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.13100152697557077]}, "1604": {"P": [[-1.0, 8.0, 9.0], [8.0, 0.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.13728646215308754]}, "1605": {"P": [[1.0, 10.0, 10.0], [10.0, -2.0, 9.0], [9.0, 9.0, 2.0]], "dev": [0.17647260070591483]}, "1606": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [11.0, 9.0, 1.0]], "dev": [0.16952950415128512]}, "1607": {"P": [[-1.0, 8.0, 8.0], [9.0, -1.0, 10.0], [10.0, 8.0, -1.0]], "dev": [0.16243364975469232]}, "1608": {"P": [[-1.0, 11.0, 9.0], [9.0, 0.0, 10.0], [8.0, 8.0, 0.0]], "dev": [0.15149617256747555]}, "1609": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 10.0], [11.0, 9.0, 0.0]], "dev": [0.12422902023916553]}, "1610": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.088874639572031594]}, "1611": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.098185590150075594]}, "1612": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.10678500132212072]}, "1613": {"P": [[-1.0, 8.0, 9.0], [11.0, 0.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.14550044823102182]}, "1614": {"P": [[-1.0, 9.0, 8.0], [9.0, 1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.15149006164509354]}, "1615": {"P": [[2.0, 9.0, 10.0], [9.0, 0.0, 8.0], [10.0, 11.0, -1.0]], "dev": [0.17573352465882588]}, "1616": {"P": [[0.0, 8.0, 8.0], [11.0, 0.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.15149136033307242]}, "1617": {"P": [[-1.0, 9.0, 10.0], [9.0, 2.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.15248161213310937]}, "1618": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.11632119982110609]}, "1619": {"P": [[-1.0, 8.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.10694930804948609]}, "1620": {"P": [[0.0, 9.0, 9.0], [10.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.061955037795536461]}, "1621": {"P": [[0.0, 8.0, 9.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.12385344721839094]}, "1622": {"P": [[-1.0, 9.0, 9.0], [8.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.13116556928240089]}, "1623": {"P": [[-2.0, 8.0, 9.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15759694692059417]}, "1624": {"P": [[0.0, 9.0, 11.0], [8.0, -1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.15151301305258488]}, "1625": {"P": [[0.0, 9.0, 8.0], [11.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.15778239288627677]}, "1626": {"P": [[-2.0, 10.0, 8.0], [10.0, 1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.16366590398008213]}, "1627": {"P": [[0.0, 9.0, 11.0], [9.0, -1.0, 9.0], [8.0, 9.0, 0.0]], "dev": [0.1312366968495676]}, "1628": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.10720025617050598]}, "1629": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.061826253034141528]}, "1630": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.10665880511235223]}, "1631": {"P": [[-1.0, 8.0, 9.0], [9.0, 1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.14493117418626805]}, "1632": {"P": [[1.0, 11.0, 9.0], [8.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.15091750578399971]}, "1633": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 10.0], [8.0, 10.0, 1.0]], "dev": [0.15156834634672436]}, "1634": {"P": [[0.0, 8.0, 10.0], [10.0, -1.0, 8.0], [11.0, 9.0, 1.0]], "dev": [0.16341040331443432]}, "1635": {"P": [[0.0, 8.0, 9.0], [8.0, -1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.16338030369190656]}, "1636": {"P": [[0.0, 8.0, 10.0], [10.0, -1.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.13884535329527881]}, "1637": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.13890015560868077]}, "1638": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.097615134616215724]}, "1639": {"P": [[0.0, 10.0, 9.0], [9.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.086500649857142342]}, "1640": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.11479280010924162]}, "1641": {"P": [[-1.0, 10.0, 9.0], [10.0, 2.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.14467888394609676]}, "1642": {"P": [[0.0, 8.0, 10.0], [11.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.14993289356816081]}, "1643": {"P": [[-1.0, 9.0, 8.0], [9.0, 2.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.16315405571262057]}, "1644": {"P": [[-1.0, 11.0, 10.0], [10.0, 1.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.16542540084467408]}, "1645": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 8.0, 1.0]], "dev": [0.14459050891792347]}, "1646": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.13706342618472014]}, "1647": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.14454898110173856]}, "1648": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.097524626818775176]}, "1649": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.12882314649513218]}, "1650": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 10.0], [8.0, 11.0, 1.0]], "dev": [0.14917845045049222]}, "1651": {"P": [[-1.0, 11.0, 10.0], [10.0, 1.0, 9.0], [10.0, 8.0, 1.0]], "dev": [0.15832763042524872]}, "1652": {"P": [[0.0, 10.0, 8.0], [11.0, -1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.1467412207295215]}, "1653": {"P": [[1.0, 10.0, 9.0], [9.0, -1.0, 10.0], [8.0, 11.0, 0.0]], "dev": [0.1466860488401876]}, "1654": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.14663133271186218]}, "1655": {"P": [[-1.0, 8.0, 11.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.15390856492255728]}, "1656": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.1318677234247205]}, "1657": {"P": [[-1.0, 8.0, 10.0], [9.0, -1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.13189590294811518]}, "1658": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.12317305395984048]}, "1659": {"P": [[1.0, 10.0, 9.0], [9.0, -1.0, 11.0], [10.0, 8.0, 1.0]], "dev": [0.15573819558976398]}, "1660": {"P": [[0.0, 8.0, 10.0], [11.0, 0.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.13629639598607701]}, "1661": {"P": [[0.0, 9.0, 11.0], [9.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.13831291400149376]}, "1662": {"P": [[-1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.14620993898763604]}, "1663": {"P": [[-1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.14615929758310106]}, "1664": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 8.0], [10.0, 8.0, 0.0]], "dev": [0.13411449828118491]}, "1665": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.144253755580733]}, "1666": {"P": [[0.0, 8.0, 10.0], [10.0, -1.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.13216801523023852]}, "1667": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 8.0], [9.0, 10.0, 1.0]], "dev": [0.15206044130863497]}, "1668": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.13590051009974777]}, "1669": {"P": [[1.0, 10.0, 10.0], [9.0, -1.0, 10.0], [8.0, 11.0, 1.0]], "dev": [0.15677349743467134]}, "1670": {"P": [[0.0, 8.0, 10.0], [10.0, 1.0, 10.0], [11.0, 9.0, 0.0]], "dev": [0.13752619306045788]}, "1671": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [11.0, 9.0, 1.0]], "dev": [0.13744117530024924]}, "1672": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.12490472309256373]}, "1673": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.13404536214321941]}, "1674": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.13403992087589228]}, "1675": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [11.0, 8.0, -1.0]], "dev": [0.15359959110596377]}, "1676": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.14414145023319944]}, "1677": {"P": [[0.0, 11.0, 8.0], [11.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.16607911932409256]}, "1678": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 9.0], [8.0, 10.0, 1.0]], "dev": [0.1624598439374482]}, "1679": {"P": [[1.0, 10.0, 8.0], [10.0, -1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.13677821396233042]}, "1680": {"P": [[1.0, 10.0, 9.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.11432366530672322]}, "1681": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.11423744507074934]}, "1682": {"P": [[0.0, 9.0, 8.0], [10.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.11111907406083528]}, "1683": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.11112729508930747]}, "1684": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.1340097851806491]}, "1685": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.16142023444797865]}, "1686": {"P": [[-1.0, 8.0, 9.0], [8.0, 0.0, 10.0], [9.0, 11.0, -1.0]], "dev": [0.16144258827842189]}, "1687": {"P": [[1.0, 8.0, 9.0], [11.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.15535894067887293]}, "1688": {"P": [[2.0, 10.0, 10.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.14694213482404844]}, "1689": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.13599227375338219]}, "1690": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [9.0, 8.0, 0.0]], "dev": [0.11119916993591249]}, "1691": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.0990879990076865]}, "1692": {"P": [[-1.0, 10.0, 9.0], [10.0, 0.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.11122427008885627]}, "1693": {"P": [[-1.0, 9.0, 10.0], [8.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.13401982243803298]}, "1694": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.1433176449809784]}, "1695": {"P": [[-1.0, 11.0, 10.0], [8.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.15344800332945466]}, "1696": {"P": [[-1.0, 9.0, 8.0], [8.0, -1.0, 10.0], [9.0, 11.0, 0.0]], "dev": [0.16168395782619777]}, "1697": {"P": [[0.0, 8.0, 9.0], [9.0, 0.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.14470089830969302]}, "1698": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [11.0, 9.0, 1.0]], "dev": [0.13532527938730038]}, "1699": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.11277925928162132]}, "1700": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.084438739460286599]}, "1701": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.082652855374184875]}, "1702": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [10.0, 10.0, -1.0]], "dev": [0.11137967761444804]}, "1703": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.13407131797122487]}, "1704": {"P": [[0.0, 10.0, 8.0], [8.0, 0.0, 10.0], [10.0, 11.0, 0.0]], "dev": [0.14446285005932163]}, "1705": {"P": [[-2.0, 9.0, 9.0], [9.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.17000326225611623]}, "1706": {"P": [[0.0, 10.0, 8.0], [11.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.15401460541502957]}, "1707": {"P": [[-2.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.14436718308107027]}, "1708": {"P": [[-1.0, 9.0, 8.0], [10.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.13411267848197841]}, "1709": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.11204565118485497]}, "1710": {"P": [[0.0, 9.0, 9.0], [9.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.064529833430489555]}, "1711": {"P": [[-1.0, 10.0, 9.0], [9.0, -1.0, 10.0], [9.0, 9.0, 1.0]], "dev": [0.11156132589167912]}, "1712": {"P": [[0.0, 9.0, 11.0], [8.0, -1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.13415314149419899]}, "1713": {"P": [[-1.0, 9.0, 9.0], [10.0, -1.0, 10.0], [9.0, 10.0, 2.0]], "dev": [0.14418718481369089]}, "1714": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 11.0], [8.0, 10.0, 0.0]], "dev": [0.15344357170376546]}, "1715": {"P": [[-2.0, 9.0, 9.0], [9.0, 0.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.16222931414340064]}, "1716": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [9.0, 10.0, -1.0]], "dev": [0.15353402854360482]}, "1717": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.13404142391740276]}, "1718": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.11143184952948434]}, "1719": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.082894114360895013]}, "1720": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.082819774091844003]}, "1721": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.11180828204886276]}, "1722": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.13428251023250565]}, "1723": {"P": [[1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.152388683823518]}, "1724": {"P": [[0.0, 8.0, 10.0], [11.0, 0.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.16136334617120415]}, "1725": {"P": [[-1.0, 8.0, 11.0], [9.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.16991821801447071]}, "1726": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 8.0, 0.0]], "dev": [0.13434536418274187]}, "1727": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 10.0, -2.0]], "dev": [0.14382519994279133]}, "1728": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.11200867501537853]}, "1729": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.064371161987565442]}, "1730": {"P": [[0.0, 9.0, 11.0], [10.0, 1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.11068147554628004]}, "1731": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 2.0]], "dev": [0.14373648392670102]}, "1732": {"P": [[0.0, 8.0, 10.0], [11.0, 0.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.13314542020842865]}, "1733": {"P": [[0.0, 9.0, 10.0], [8.0, 1.0, 9.0], [11.0, 11.0, -1.0]], "dev": [0.16113526664304109]}, "1734": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 11.0], [8.0, 10.0, 1.0]], "dev": [0.16168289326329105]}, "1735": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.16292032299546602]}, "1736": {"P": [[0.0, 8.0, 10.0], [10.0, -1.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.1451220614479195]}, "1737": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.12301485787182488]}, "1738": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.11233316409936432]}, "1739": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.11016936226165162]}, "1740": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.12297620020467591]}, "1741": {"P": [[0.0, 11.0, 9.0], [9.0, 1.0, 10.0], [11.0, 9.0, 1.0]], "dev": [0.14168806038368581]}, "1742": {"P": [[0.0, 11.0, 9.0], [11.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14256637751449763]}, "1743": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.15275752033461015]}, "1744": {"P": [[-1.0, 8.0, 10.0], [10.0, 1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.15273869391366643]}, "1745": {"P": [[-1.0, 9.0, 11.0], [8.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.15272023977663543]}, "1746": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 11.0], [10.0, 8.0, 1.0]], "dev": [0.14346085819255314]}, "1747": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.13235145519969549]}, "1748": {"P": [[0.0, 8.0, 11.0], [10.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.12289310751884258]}, "1749": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.13482585706968675]}, "1750": {"P": [[0.0, 10.0, 9.0], [9.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.14091656788853671]}, "1751": {"P": [[-1.0, 10.0, 11.0], [10.0, 2.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.15021866720114657]}, "1752": {"P": [[-1.0, 10.0, 10.0], [11.0, 0.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.14206869924327495]}, "1753": {"P": [[-2.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.15258592355702869]}, "1754": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.13349397080882872]}, "1755": {"P": [[0.0, 9.0, 8.0], [9.0, -1.0, 10.0], [9.0, 11.0, -1.0]], "dev": [0.14473466646210356]}, "1756": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 8.0], [9.0, 10.0, 0.0]], "dev": [0.15388650180189065]}, "1757": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 9.0], [8.0, 11.0, 1.0]], "dev": [0.14331491076834924]}, "1758": {"P": [[-1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.14330395855854869]}, "1759": {"P": [[0.0, 11.0, 10.0], [11.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.13859657035572429]}, "1760": {"P": [[-1.0, 10.0, 10.0], [11.0, 1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.13002148866997165]}, "1761": {"P": [[-1.0, 9.0, 10.0], [11.0, 0.0, 10.0], [10.0, 8.0, 1.0]], "dev": [0.14165632603903944]}, "1762": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.12088608196600341]}, "1763": {"P": [[-1.0, 10.0, 9.0], [11.0, 0.0, 8.0], [10.0, 9.0, 0.0]], "dev": [0.13342662386980023]}, "1764": {"P": [[-1.0, 11.0, 10.0], [10.0, 0.0, 8.0], [9.0, 9.0, 0.0]], "dev": [0.13342116876084939]}, "1765": {"P": [[-2.0, 10.0, 9.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14497095061077428]}, "1766": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 9.0], [8.0, 10.0, 0.0]], "dev": [0.15407851245753659]}, "1767": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 1.0]], "dev": [0.1432225118735963]}, "1768": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.14888939872800006]}, "1769": {"P": [[1.0, 9.0, 9.0], [10.0, 1.0, 11.0], [10.0, 11.0, 0.0]], "dev": [0.13745797837199314]}, "1770": {"P": [[0.0, 10.0, 8.0], [11.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.12922658592527175]}, "1771": {"P": [[-1.0, 10.0, 10.0], [11.0, 0.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.120522606317347]}, "1772": {"P": [[0.0, 8.0, 10.0], [9.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.11123499631048467]}, "1773": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.13339007838583847]}, "1774": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.13338860860586974]}, "1775": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [8.0, 11.0, 0.0]], "dev": [0.15427827911582584]}, "1776": {"P": [[-2.0, 10.0, 10.0], [10.0, 1.0, 8.0], [9.0, 9.0, -1.0]], "dev": [0.16283469103950088]}, "1777": {"P": [[-1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [8.0, 11.0, 1.0]], "dev": [0.16732439336823204]}, "1778": {"P": [[0.0, 9.0, 11.0], [9.0, 1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.13646899027876219]}, "1779": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [11.0, 9.0, 1.0]], "dev": [0.12854949997525869]}, "1780": {"P": [[0.0, 9.0, 11.0], [9.0, 1.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.10536734637672354]}, "1781": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.095064573199026683]}, "1782": {"P": [[0.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, -1.0]], "dev": [0.10176126140581439]}, "1783": {"P": [[-1.0, 10.0, 10.0], [10.0, -1.0, 9.0], [10.0, 9.0, 2.0]], "dev": [0.14078748762599239]}, "1784": {"P": [[-1.0, 9.0, 9.0], [8.0, 0.0, 10.0], [9.0, 11.0, -1.0]], "dev": [0.14551024044946856]}, "1785": {"P": [[-1.0, 9.0, 9.0], [10.0, -1.0, 11.0], [8.0, 10.0, 1.0]], "dev": [0.15227910709264325]}, "1786": {"P": [[0.0, 9.0, 11.0], [11.0, 0.0, 8.0], [8.0, 10.0, 0.0]], "dev": [0.16088405079530912]}, "1787": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 8.0], [10.0, 11.0, 1.0]], "dev": [0.14754040518217307]}, "1788": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 11.0], [9.0, 8.0, 0.0]], "dev": [0.14061711501242954]}, "1789": {"P": [[1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.10467639686194367]}, "1790": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.094800915876769073]}, "1791": {"P": [[-1.0, 10.0, 10.0], [9.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.083893787471097173]}, "1792": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.11982102142744742]}, "1793": {"P": [[-2.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 9.0, 1.0]], "dev": [0.14580550456624236]}, "1794": {"P": [[1.0, 10.0, 9.0], [11.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.15955633896236843]}, "1795": {"P": [[-1.0, 8.0, 10.0], [9.0, 1.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.16427781638052424]}, "1796": {"P": [[0.0, 8.0, 10.0], [9.0, 0.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.14695110258895697]}, "1797": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 11.0], [10.0, 9.0, 2.0]], "dev": [0.15315981809305684]}, "1798": {"P": [[1.0, 9.0, 9.0], [10.0, -1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.1272384013018624]}, "1799": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [10.0, 11.0, 0.0]], "dev": [0.11963196427718686]}, "1800": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.059817362687996652]}, "1801": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.10304471842471011]}, "1802": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.11163995748754808]}, "1803": {"P": [[-1.0, 9.0, 9.0], [9.0, -2.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.14616246176079201]}, "1804": {"P": [[0.0, 10.0, 8.0], [9.0, 1.0, 10.0], [11.0, 11.0, 0.0]], "dev": [0.14645379763003219]}, "1805": {"P": [[-1.0, 10.0, 8.0], [11.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.15806672290956017]}, "1806": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.14633334710739895]}, "1807": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [10.0, 8.0, -1.0]], "dev": [0.14631355842439298]}, "1808": {"P": [[-1.0, 10.0, 10.0], [9.0, 1.0, 11.0], [10.0, 8.0, 0.0]], "dev": [0.14003363406775879]}, "1809": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.10329278773160588]}, "1810": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [10.0, 10.0, 0.0]], "dev": [0.059693341371519278]}, "1811": {"P": [[0.0, 9.0, 10.0], [11.0, 0.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.10316590787883299]}, "1812": {"P": [[0.0, 10.0, 8.0], [10.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.12637405649001079]}, "1813": {"P": [[-1.0, 9.0, 9.0], [10.0, -1.0, 10.0], [9.0, 11.0, 2.0]], "dev": [0.15784008676534658]}, "1814": {"P": [[0.0, 10.0, 8.0], [11.0, 0.0, 10.0], [10.0, 8.0, -1.0]], "dev": [0.15230465973494134]}, "1815": {"P": [[1.0, 9.0, 9.0], [11.0, 1.0, 10.0], [9.0, 10.0, -2.0]], "dev": [0.15778684953040653]}, "1816": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 11.0], [9.0, 8.0, -1.0]], "dev": [0.1466704811372154]}, "1817": {"P": [[-2.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.13982131498083944]}, "1818": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 11.0], [9.0, 9.0, 0.0]], "dev": [0.11201619914819168]}, "1819": {"P": [[0.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.085013396691636364]}, "1820": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.094250692005019912]}, "1821": {"P": [[0.0, 9.0, 10.0], [11.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.13220959354666506]}, "1822": {"P": [[0.0, 9.0, 11.0], [11.0, 1.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.13211966604391723]}, "1823": {"P": [[-1.0, 8.0, 9.0], [10.0, 0.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.15758745090304721]}, "1824": {"P": [[1.0, 9.0, 9.0], [9.0, -1.0, 11.0], [9.0, 11.0, -1.0]], "dev": [0.14888952121660448]}, "1825": {"P": [[-1.0, 9.0, 9.0], [11.0, 0.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.15238595271893976]}, "1826": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 11.0], [8.0, 10.0, 1.0]], "dev": [0.17356492512612889]}, "1827": {"P": [[-1.0, 9.0, 9.0], [10.0, 0.0, 9.0], [8.0, 11.0, -1.0]], "dev": [0.14713779535657223]}, "1828": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.12788121765503191]}, "1829": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.094181684360070475]}, "1830": {"P": [[-1.0, 10.0, 8.0], [9.0, 0.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.13956841847718784]}, "1831": {"P": [[1.0, 10.0, 10.0], [11.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.13132889245008902]}, "1832": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.1395350749865038]}, "1833": {"P": [[0.0, 9.0, 12.0], [9.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.15373092661873691]}, "1834": {"P": [[1.0, 9.0, 11.0], [11.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.15487256608478295]}, "1835": {"P": [[0.0, 10.0, 9.0], [11.0, -2.0, 10.0], [8.0, 9.0, 0.0]], "dev": [0.16094015324209224]}, "1836": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.134031036188971]}, "1837": {"P": [[-1.0, 8.0, 10.0], [11.0, 1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.15251776099615122]}, "1838": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.11897453729934586]}, "1839": {"P": [[-1.0, 10.0, 9.0], [9.0, 1.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.12494686412484667]}, "1840": {"P": [[0.0, 9.0, 11.0], [10.0, 1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.12489999041666576]}, "1841": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.13501982720349562]}, "1842": {"P": [[0.0, 11.0, 9.0], [8.0, 0.0, 11.0], [10.0, 10.0, 1.0]], "dev": [0.14442609595119771]}, "1843": {"P": [[-1.0, 9.0, 10.0], [11.0, 0.0, 9.0], [11.0, 8.0, 0.0]], "dev": [0.14854697955157192]}, "1844": {"P": [[0.0, 10.0, 8.0], [10.0, -2.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.14370886031104632]}, "1845": {"P": [[1.0, 9.0, 11.0], [10.0, -2.0, 9.0], [9.0, 10.0, 1.0]], "dev": [0.15714886083856383]}, "1846": {"P": [[-2.0, 10.0, 10.0], [10.0, -1.0, 8.0], [10.0, 9.0, 1.0]], "dev": [0.16105213662228002]}, "1847": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.13428684651329775]}, "1848": {"P": [[-1.0, 11.0, 9.0], [9.0, 1.0, 11.0], [10.0, 9.0, 1.0]], "dev": [0.14415548852502374]}, "1849": {"P": [[1.0, 9.0, 11.0], [11.0, 0.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.12449712167605678]}, "1850": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.13461903493789915]}, "1851": {"P": [[-1.0, 10.0, 9.0], [11.0, -1.0, 8.0], [10.0, 10.0, 1.0]], "dev": [0.14843972015903842]}, "1852": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.1294908046285092]}, "1853": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 9.0], [11.0, 10.0, -1.0]], "dev": [0.12948486731164785]}, "1854": {"P": [[-1.0, 10.0, 9.0], [11.0, -1.0, 9.0], [10.0, 8.0, 0.0]], "dev": [0.143916149925014]}, "1855": {"P": [[-1.0, 11.0, 11.0], [10.0, 1.0, 9.0], [9.0, 8.0, -1.0]], "dev": [0.16516082754916941]}, "1856": {"P": [[1.0, 8.0, 11.0], [11.0, 0.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.15698848043449284]}, "1857": {"P": [[-1.0, 8.0, 10.0], [10.0, 1.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.15263624978144294]}, "1858": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 10.0], [11.0, 9.0, 1.0]], "dev": [0.13895011004154234]}, "1859": {"P": [[0.0, 10.0, 11.0], [10.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.11847850749480608]}, "1860": {"P": [[-1.0, 9.0, 11.0], [10.0, 0.0, 10.0], [10.0, 8.0, 0.0]], "dev": [0.12945380899039746]}, "1861": {"P": [[-1.0, 10.0, 10.0], [11.0, 0.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.11294320635025881]}, "1862": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.12944828816272097]}, "1863": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.12462301196271069]}, "1864": {"P": [[-2.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 9.0, -1.0]], "dev": [0.1441539194428037]}, "1865": {"P": [[-1.0, 10.0, 11.0], [9.0, 1.0, 9.0], [9.0, 9.0, -2.0]], "dev": [0.16132621673359615]}, "1866": {"P": [[-1.0, 8.0, 11.0], [9.0, 1.0, 11.0], [9.0, 10.0, -1.0]], "dev": [0.16501010843643993]}, "1867": {"P": [[-1.0, 11.0, 10.0], [10.0, 0.0, 11.0], [9.0, 8.0, 1.0]], "dev": [0.15223915882712369]}, "1868": {"P": [[0.0, 8.0, 9.0], [10.0, 0.0, 11.0], [11.0, 10.0, 0.0]], "dev": [0.13391187096791099]}, "1869": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.1177278248128614]}, "1870": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.11262451998215033]}, "1871": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 11.0, -1.0]], "dev": [0.11259134481467084]}, "1872": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.10737795478785531]}, "1873": {"P": [[1.0, 9.0, 10.0], [10.0, -1.0, 11.0], [9.0, 9.0, -1.0]], "dev": [0.12944419304705324]}, "1874": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.14442134933380454]}, "1875": {"P": [[-1.0, 9.0, 11.0], [10.0, -1.0, 9.0], [11.0, 8.0, 1.0]], "dev": [0.16491354346002651]}, "1876": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 9.0], [11.0, 11.0, 1.0]], "dev": [0.15549401395938162]}, "1877": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 10.0], [11.0, 10.0, 1.0]], "dev": [0.1376308238460397]}, "1878": {"P": [[0.0, 8.0, 9.0], [11.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.12945684055418175]}, "1879": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 11.0], [11.0, 10.0, 0.0]], "dev": [0.11702057974196892]}, "1880": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.092017723334596332]}, "1881": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.079653718988317787]}, "1882": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.10750110367593635]}, "1883": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [11.0, 10.0, -1.0]], "dev": [0.12947841840368249]}, "1884": {"P": [[-2.0, 9.0, 10.0], [10.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.14471762341115088]}, "1885": {"P": [[-1.0, 11.0, 9.0], [11.0, 0.0, 9.0], [8.0, 9.0, -1.0]], "dev": [0.1617206327940128]}, "1886": {"P": [[0.0, 8.0, 11.0], [9.0, 0.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.15486513436920954]}, "1887": {"P": [[-1.0, 10.0, 9.0], [11.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.13699139782765241]}, "1888": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 8.0], [10.0, 11.0, 1.0]], "dev": [0.13327083446363788]}, "1889": {"P": [[-1.0, 9.0, 10.0], [10.0, 1.0, 11.0], [10.0, 9.0, 0.0]], "dev": [0.11206970514110966]}, "1890": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 10.0], [9.0, 9.0, 0.0]], "dev": [0.079949886435386558]}, "1891": {"P": [[0.0, 10.0, 9.0], [9.0, 0.0, 10.0], [10.0, 11.0, 0.0]], "dev": [0.085780259863389371]}, "1892": {"P": [[0.0, 9.0, 11.0], [10.0, 1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.11616578756149028]}, "1893": {"P": [[-1.0, 11.0, 10.0], [10.0, 1.0, 9.0], [9.0, 9.0, -1.0]], "dev": [0.12954796746121292]}, "1894": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.15133570921220929]}, "1895": {"P": [[-1.0, 8.0, 9.0], [9.0, -1.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.16195690808348023]}, "1896": {"P": [[1.0, 10.0, 11.0], [9.0, -2.0, 10.0], [9.0, 10.0, 1.0]], "dev": [0.15127839940544158]}, "1897": {"P": [[0.0, 9.0, 8.0], [10.0, -1.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.14822884149416157]}, "1898": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.11579578717783755]}, "1899": {"P": [[-1.0, 10.0, 10.0], [10.0, 1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.090658606930493019]}, "1900": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [0.046432023754347997]}, "1901": {"P": [[0.0, 10.0, 11.0], [10.0, 1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.090526632940434212]}, "1902": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.12964010140386031]}, "1903": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [9.0, 11.0, 0.0]], "dev": [0.12965203907179826]}, "1904": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.14825491539535679]}, "1905": {"P": [[-1.0, 8.0, 9.0], [10.0, -1.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.16476000614935205]}, "1906": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.15101135277289515]}, "1907": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.13582474491260133]}, "1908": {"P": [[0.0, 9.0, 10.0], [9.0, 0.0, 11.0], [11.0, 10.0, 1.0]], "dev": [0.11521333933633009]}, "1909": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, 0.0]], "dev": [0.10429755633064844]}, "1910": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.080759178295389811]}, "1911": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 9.0], [10.0, 10.0, 1.0]], "dev": [0.10809021814224805]}, "1912": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.13269687937570615]}, "1913": {"P": [[1.0, 11.0, 10.0], [10.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.14098603972237636]}, "1914": {"P": [[0.0, 10.0, 8.0], [11.0, 1.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.15082087614558234]}, "1915": {"P": [[-2.0, 9.0, 10.0], [11.0, 0.0, 9.0], [11.0, 8.0, 0.0]], "dev": [0.17239717902048696]}, "1916": {"P": [[-2.0, 9.0, 10.0], [10.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.15077643979925026]}, "1917": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.12985419512324606]}, "1918": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.13524609715354519]}, "1919": {"P": [[0.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, -1.0]], "dev": [0.10831091262696113]}, "1920": {"P": [[-1.0, 9.0, 10.0], [9.0, -1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.10834020515380556]}, "1921": {"P": [[0.0, 9.0, 10.0], [11.0, 0.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.11451969580200282]}, "1922": {"P": [[-1.0, 10.0, 9.0], [10.0, 2.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.1325188952834038]}, "1923": {"P": [[-1.0, 10.0, 8.0], [10.0, 1.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.14839922507877362]}, "1924": {"P": [[-2.0, 10.0, 10.0], [10.0, 0.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.15681472929959317]}, "1925": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 11.0], [8.0, 11.0, 0.0]], "dev": [0.16479592538282645]}, "1926": {"P": [[-1.0, 10.0, 8.0], [9.0, -1.0, 10.0], [11.0, 9.0, 0.0]], "dev": [0.1462587453373578]}, "1927": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, -1.0]], "dev": [0.14630097933139075]}, "1928": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.1085879621609937]}, "1929": {"P": [[-1.0, 9.0, 10.0], [11.0, 1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.13007836568499065]}, "1930": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [9.0, 11.0, 1.0]], "dev": [0.11140046704422843]}, "1931": {"P": [[-1.0, 10.0, 9.0], [9.0, 1.0, 11.0], [10.0, 11.0, 1.0]], "dev": [0.13461909793613167]}, "1932": {"P": [[0.0, 9.0, 11.0], [11.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.13673545504362136]}, "1933": {"P": [[-1.0, 10.0, 8.0], [9.0, 1.0, 11.0], [10.0, 11.0, 0.0]], "dev": [0.15044938225705773]}, "1934": {"P": [[-2.0, 10.0, 10.0], [10.0, 0.0, 9.0], [11.0, 8.0, 0.0]], "dev": [0.15690086199955264]}, "1935": {"P": [[-2.0, 9.0, 10.0], [10.0, 1.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.15691096156951739]}, "1936": {"P": [[1.0, 9.0, 11.0], [9.0, 1.0, 11.0], [11.0, 11.0, 0.0]], "dev": [0.14737190850833526]}, "1937": {"P": [[-1.0, 8.0, 10.0], [10.0, -1.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.14673673187683875]}, "1938": {"P": [[0.0, 11.0, 10.0], [10.0, -1.0, 11.0], [8.0, 10.0, 1.0]], "dev": [0.14349681717050611]}, "1939": {"P": [[0.0, 9.0, 10.0], [11.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.11134661073382972]}, "1940": {"P": [[-1.0, 10.0, 11.0], [10.0, 1.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.12435397926170734]}, "1941": {"P": [[-1.0, 10.0, 12.0], [10.0, 1.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.14336737073236994]}, "1942": {"P": [[-1.0, 10.0, 10.0], [11.0, 0.0, 8.0], [11.0, 9.0, 0.0]], "dev": [0.14157779655230371]}, "1943": {"P": [[0.0, 9.0, 11.0], [11.0, 1.0, 10.0], [9.0, 11.0, 1.0]], "dev": [0.13590514695696604]}, "1944": {"P": [[-1.0, 9.0, 11.0], [9.0, 0.0, 9.0], [11.0, 9.0, -1.0]], "dev": [0.13984912377912992]}, "1945": {"P": [[-1.0, 9.0, 9.0], [10.0, 1.0, 9.0], [12.0, 10.0, -1.0]], "dev": [0.15852012004829649]}, "1946": {"P": [[-1.0, 9.0, 10.0], [11.0, 0.0, 8.0], [9.0, 11.0, 0.0]], "dev": [0.14871246470157351]}, "1947": {"P": [[0.0, 10.0, 11.0], [8.0, 1.0, 10.0], [11.0, 11.0, 0.0]], "dev": [0.1446938291447015]}, "1948": {"P": [[-1.0, 10.0, 9.0], [9.0, 0.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.13221898608848273]}, "1949": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 10.0], [11.0, 9.0, 0.0]], "dev": [0.12398673936200164]}, "1950": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 10.0], [11.0, 9.0, -1.0]], "dev": [0.1399767591194217]}, "1951": {"P": [[0.0, 9.0, 10.0], [9.0, 1.0, 10.0], [11.0, 11.0, -1.0]], "dev": [0.12390929959552377]}, "1952": {"P": [[-1.0, 8.0, 10.0], [9.0, 0.0, 10.0], [11.0, 10.0, -1.0]], "dev": [0.14002157486021813]}, "1953": {"P": [[-2.0, 9.0, 10.0], [10.0, 0.0, 9.0], [11.0, 9.0, 0.0]], "dev": [0.14004440516821562]}, "1954": {"P": [[-1.0, 8.0, 10.0], [10.0, 0.0, 9.0], [12.0, 10.0, 0.0]], "dev": [0.15839641903286414]}, "1955": {"P": [[-1.0, 11.0, 10.0], [11.0, 1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.16197652487255748]}, "1956": {"P": [[-1.0, 11.0, 10.0], [11.0, 1.0, 10.0], [10.0, 10.0, 2.0]], "dev": [0.14536755614596458]}, "1957": {"P": [[-1.0, 8.0, 10.0], [11.0, 0.0, 9.0], [9.0, 11.0, 0.0]], "dev": [0.14891371394111586]}, "1958": {"P": [[-1.0, 10.0, 11.0], [10.0, 1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.12508738443866602]}, "1959": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.12361459390691985]}, "1960": {"P": [[0.0, 10.0, 8.0], [10.0, -1.0, 10.0], [10.0, 11.0, 0.0]], "dev": [0.12219553013313786]}, "1961": {"P": [[-1.0, 9.0, 11.0], [10.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.12219584728564048]}, "1962": {"P": [[-2.0, 10.0, 10.0], [10.0, 0.0, 9.0], [10.0, 9.0, 0.0]], "dev": [0.1208684939667309]}, "1963": {"P": [[0.0, 8.0, 11.0], [11.0, 0.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.15113016866181084]}, "1964": {"P": [[-2.0, 10.0, 10.0], [10.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.14031389984064532]}, "1965": {"P": [[-2.0, 9.0, 10.0], [11.0, -1.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.15733571423107789]}, "1966": {"P": [[1.0, 11.0, 9.0], [11.0, -1.0, 9.0], [11.0, 10.0, 1.0]], "dev": [0.14341351635094229]}, "1967": {"P": [[0.0, 9.0, 11.0], [11.0, 0.0, 10.0], [10.0, 8.0, -1.0]], "dev": [0.14138547012979183]}, "1968": {"P": [[0.0, 8.0, 10.0], [10.0, 0.0, 11.0], [11.0, 10.0, 0.0]], "dev": [0.12331162748427089]}, "1969": {"P": [[0.0, 10.0, 11.0], [9.0, 1.0, 10.0], [11.0, 10.0, 0.0]], "dev": [0.10201945188218156]}, "1970": {"P": [[-1.0, 10.0, 10.0], [11.0, 0.0, 10.0], [10.0, 9.0, 1.0]], "dev": [0.10069523126263456]}, "1971": {"P": [[0.0, 10.0, 9.0], [10.0, -1.0, 11.0], [9.0, 10.0, 0.0]], "dev": [0.099440232042566273]}, "1972": {"P": [[0.0, 10.0, 9.0], [12.0, 0.0, 10.0], [10.0, 9.0, 0.0]], "dev": [0.12318660639413768]}, "1973": {"P": [[0.0, 10.0, 9.0], [9.0, 1.0, 10.0], [11.0, 12.0, 0.0]], "dev": [0.14297222520658961]}, "1974": {"P": [[-1.0, 9.0, 9.0], [9.0, 1.0, 10.0], [11.0, 11.0, -1.0]], "dev": [0.14136610651071294]}, "1975": {"P": [[-2.0, 9.0, 10.0], [10.0, -1.0, 9.0], [11.0, 9.0, 1.0]], "dev": [0.15752800135711209]}, "1976": {"P": [[0.0, 11.0, 9.0], [11.0, 1.0, 11.0], [9.0, 11.0, 1.0]], "dev": [0.14349516561892378]}, "1977": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 11.0], [11.0, 8.0, 0.0]], "dev": [0.14136232331723636]}, "1978": {"P": [[0.0, 9.0, 11.0], [11.0, 1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.12301009875117662]}, "1979": {"P": [[0.0, 9.0, 10.0], [10.0, 1.0, 11.0], [11.0, 10.0, 0.0]], "dev": [0.10132181317760083]}, "1980": {"P": [[-1.0, 9.0, 10.0], [10.0, 0.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.098729020623760808]}, "1981": {"P": [[-1.0, 9.0, 10.0], [9.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.098789525987363749]}, "1982": {"P": [[0.0, 9.0, 11.0], [9.0, -1.0, 10.0], [10.0, 9.0, -1.0]], "dev": [0.12166191053943615]}, "1983": {"P": [[-1.0, 10.0, 10.0], [10.0, -2.0, 9.0], [10.0, 9.0, 1.0]], "dev": [0.14085652317806577]}, "1984": {"P": [[-1.0, 9.0, 9.0], [9.0, -1.0, 11.0], [9.0, 11.0, 0.0]], "dev": [0.14088771335474012]}, "1985": {"P": [[-2.0, 9.0, 10.0], [10.0, 1.0, 11.0], [11.0, 9.0, 1.0]], "dev": [0.15854102318278093]}, "1986": {"P": [[-1.0, 9.0, 11.0], [9.0, 1.0, 10.0], [11.0, 11.0, 1.0]], "dev": [0.1421956875190161]}, "1987": {"P": [[-1.0, 8.0, 10.0], [9.0, -1.0, 11.0], [11.0, 9.0, 0.0]], "dev": [0.15779081981315962]}, "1988": {"P": [[0.0, 8.0, 10.0], [11.0, 0.0, 10.0], [10.0, 10.0, -1.0]], "dev": [0.12233456765810287]}, "1989": {"P": [[0.0, 10.0, 9.0], [10.0, -1.0, 9.0], [11.0, 10.0, 0.0]], "dev": [0.099748387938789373]}, "1990": {"P": [[0.0, 10.0, 10.0], [10.0, -1.0, 10.0], [9.0, 10.0, 0.0]], "dev": [0.070265062476948428]}, "1991": {"P": [[-1.0, 10.0, 9.0], [10.0, -1.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.099790627489454095]}, "1992": {"P": [[0.0, 9.0, 10.0], [12.0, 0.0, 10.0], [10.0, 10.0, 1.0]], "dev": [0.12292171950463959]}, "1993": {"P": [[-1.0, 11.0, 9.0], [11.0, 0.0, 9.0], [8.0, 10.0, -1.0]], "dev": [0.15793504631334604]}, "1994": {"P": [[-1.0, 9.0, 10.0], [9.0, 1.0, 11.0], [9.0, 11.0, -1.0]], "dev": [0.14139114488849111]}, "1995": {"P": [[-1.0, 9.0, 9.0], [9.0, 0.0, 12.0], [9.0, 11.0, 0.0]], "dev": [0.15811713294079388]}, "1996": {"P": [[-2.0, 10.0, 10.0], [10.0, 1.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.14151812477089978]}, "1997": {"P": [[-1.0, 10.0, 12.0], [10.0, 1.0, 9.0], [10.0, 11.0, 2.0]], "dev": [0.17343727514525423]}, "1998": {"P": [[-1.0, 9.0, 10.0], [10.0, -1.0, 9.0], [9.0, 10.0, -1.0]], "dev": [0.12231159054516899]}, "1999": {"P": [[-1.0, 10.0, 10.0], [10.0, 0.0, 9.0], [10.0, 11.0, 1.0]], "dev": [0.10001688066171473]}, "2000": {"P": [[0.0, 10.0, 10.0], [10.0, 0.0, 10.0], [10.0, 10.0, 0.0]], "dev": [2.7194799110210365e-16]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/Popt-sc2sc.json000066400000000000000000006160711316323560300270420ustar00rootroot00000000000000{"1": {"P": [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], "dev": [0.0]}, "2": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 1.0]], "dev": [0.6558650332285002]}, "3": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, -1.0], [0.0, 1.0, 1.0]], "dev": [1.1397844793416041]}, "4": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.52158136225720619]}, "5": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, -1.0], [0.0, 1.0, 2.0]], "dev": [0.95598724168421878]}, "6": {"P": [[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.79755473301360691]}, "7": {"P": [[2.0, 0.0, -1.0], [-1.0, 2.0, 0.0], [0.0, -1.0, 2.0]], "dev": [0.90886893769203836]}, "8": {"P": [[2.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [3.8459253727671276e-16]}, "9": {"P": [[2.0, -1.0, 0.0], [-1.0, 2.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.81288995326516833]}, "10": {"P": [[2.0, -1.0, 0.0], [1.0, 2.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.66805835501795985]}, "11": {"P": [[2.0, -1.0, 0.0], [0.0, 2.0, -1.0], [-1.0, 0.0, 3.0]], "dev": [0.86520505220147348]}, "12": {"P": [[2.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.35818119355108746]}, "13": {"P": [[2.0, 0.0, -1.0], [-1.0, 2.0, 0.0], [0.0, 1.0, 3.0]], "dev": [0.81447700835996306]}, "14": {"P": [[2.0, -1.0, 0.0], [1.0, 3.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.67979528165457459]}, "15": {"P": [[2.0, -1.0, 0.0], [1.0, 2.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.66869033561887858]}, "16": {"P": [[2.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 2.0]], "dev": [0.6558650332285002]}, "17": {"P": [[2.0, 0.0, -1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 3.0]], "dev": [0.74747478694951408]}, "18": {"P": [[2.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.31302674605959679]}, "19": {"P": [[2.0, -1.0, 0.0], [0.0, 3.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.71760432858287593]}, "20": {"P": [[2.0, 0.0, 0.0], [0.0, 3.0, -1.0], [0.0, 1.0, 3.0]], "dev": [0.60237093396782448]}, "21": {"P": [[2.0, -1.0, 0.0], [1.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.59472196212151562]}, "22": {"P": [[2.0, 0.0, 0.0], [0.0, 3.0, -1.0], [0.0, -1.0, 4.0]], "dev": [0.72417915477401607]}, "23": {"P": [[3.0, -1.0, -1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 3.0]], "dev": [0.70966762556349527]}, "24": {"P": [[3.0, -1.0, 0.0], [-1.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.49516158213306954]}, "25": {"P": [[3.0, -1.0, -1.0], [-1.0, 3.0, 0.0], [0.0, 1.0, 3.0]], "dev": [0.685469610812795]}, "26": {"P": [[3.0, -1.0, 0.0], [0.0, 3.0, -1.0], [-1.0, 0.0, 3.0]], "dev": [0.5850703066330778]}, "27": {"P": [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.0]}, "28": {"P": [[3.0, -1.0, 0.0], [0.0, 3.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.5707752448007446]}, "29": {"P": [[3.0, -1.0, -1.0], [0.0, 3.0, 1.0], [1.0, 0.0, 3.0]], "dev": [0.65224993631325656]}, "30": {"P": [[3.0, -1.0, 0.0], [1.0, 3.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.45904442209327811]}, "31": {"P": [[3.0, -1.0, -1.0], [0.0, 3.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.64141720523187762]}, "32": {"P": [[2.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.52158136225720642]}, "33": {"P": [[3.0, -1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.51362367776223805]}, "34": {"P": [[2.0, 0.0, 0.0], [0.0, 4.0, -1.0], [0.0, 1.0, 4.0]], "dev": [0.66870278258856752]}, "35": {"P": [[3.0, 0.0, -1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 4.0]], "dev": [0.58631920521070424]}, "36": {"P": [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.24782696262606232]}, "37": {"P": [[3.0, -1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.57464816825142495]}, "38": {"P": [[3.0, -1.0, -1.0], [1.0, 4.0, 0.0], [0.0, 1.0, 3.0]], "dev": [0.64272226833130219]}, "39": {"P": [[3.0, 0.0, -1.0], [0.0, 3.0, 0.0], [1.0, 0.0, 4.0]], "dev": [0.48244332532580664]}, "40": {"P": [[3.0, -1.0, 0.0], [1.0, 3.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.47950101938611389]}, "41": {"P": [[3.0, -1.0, -1.0], [0.0, 4.0, -1.0], [1.0, 0.0, 3.0]], "dev": [0.6291343723447379]}, "42": {"P": [[3.0, 0.0, -1.0], [0.0, 3.0, -1.0], [1.0, 1.0, 4.0]], "dev": [0.62552430934594139]}, "43": {"P": [[4.0, -1.0, -1.0], [-1.0, 3.0, 0.0], [0.0, -1.0, 4.0]], "dev": [0.6218755836819595]}, "44": {"P": [[3.0, -1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.46736865696908064]}, "45": {"P": [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.46220804703547014]}, "46": {"P": [[4.0, -1.0, -1.0], [0.0, 3.0, 1.0], [-1.0, 0.0, 4.0]], "dev": [0.60426112236162555]}, "47": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, 0.0, 3.0]], "dev": [0.53132877666621159]}, "48": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.22519855634844332]}, "49": {"P": [[3.0, -1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.52329507604555869]}, "50": {"P": [[3.0, -1.0, 0.0], [1.0, 3.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.5864380549278444]}, "51": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, -1.0], [0.0, 1.0, 4.0]], "dev": [0.44077806206069592]}, "52": {"P": [[3.0, -1.0, 0.0], [1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.4385708862164297]}, "53": {"P": [[3.0, -1.0, -1.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.5765846132073611]}, "54": {"P": [[4.0, -2.0, 0.0], [1.0, 4.0, 0.0], [0.0, 0.0, 3.0]], "dev": [0.63192382035877814]}, "55": {"P": [[4.0, -1.0, 0.0], [-1.0, 3.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.5335096473205504]}, "56": {"P": [[3.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.52866906415550463]}, "57": {"P": [[3.0, 0.0, 0.0], [0.0, 4.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.52413664764169943]}, "58": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 3.0]], "dev": [0.63543191103958807]}, "59": {"P": [[4.0, -1.0, -1.0], [-1.0, 4.0, 0.0], [0.0, -1.0, 4.0]], "dev": [0.51594421208998686]}, "60": {"P": [[4.0, -1.0, 0.0], [-1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.36320000251325468]}, "61": {"P": [[4.0, -1.0, -1.0], [-1.0, 4.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.50883363540360116]}, "62": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-2.0, 0.0, 4.0]], "dev": [0.61916180421151823]}, "63": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, 0.0, 4.0]], "dev": [0.43538720722619961]}, "64": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [3.8459253727671276e-16]}, "65": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.43087315051549457]}, "66": {"P": [[4.0, 0.0, -2.0], [-1.0, 4.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.60638096099923777]}, "67": {"P": [[4.0, -1.0, -1.0], [0.0, 4.0, 1.0], [1.0, 0.0, 4.0]], "dev": [0.49312209577014404]}, "68": {"P": [[4.0, -1.0, 0.0], [1.0, 4.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.34820873962064336]}, "69": {"P": [[4.0, -1.0, -1.0], [0.0, 4.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.48950129202713383]}, "70": {"P": [[5.0, 0.0, -1.0], [0.0, 5.0, 0.0], [-1.0, 0.0, 3.0]], "dev": [0.53168999702365816]}, "71": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 0.0, 4.0]], "dev": [0.52787402776589654]}, "72": {"P": [[4.0, -1.0, -1.0], [1.0, 4.0, 0.0], [1.0, 0.0, 4.0]], "dev": [0.48535269748549892]}, "73": {"P": [[4.0, -1.0, -1.0], [0.0, 4.0, -1.0], [1.0, 1.0, 4.0]], "dev": [0.54016677493642296]}, "74": {"P": [[4.0, -1.0, -1.0], [-1.0, 4.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.51755362979092545]}, "75": {"P": [[3.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.39015392996966153]}, "76": {"P": [[4.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, -1.0, 4.0]], "dev": [0.38757603856431022]}, "77": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.50879506456450341]}, "78": {"P": [[3.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.50619574246846744]}, "79": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.4465950619077263]}, "80": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.18974706743141442]}, "81": {"P": [[4.0, -1.0, 0.0], [0.0, 4.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.44256976936456788]}, "82": {"P": [[5.0, -1.0, -1.0], [-1.0, 4.0, -1.0], [0.0, 1.0, 4.0]], "dev": [0.54794903885364099]}, "83": {"P": [[4.0, -1.0, -1.0], [0.0, 4.0, 1.0], [1.0, 0.0, 5.0]], "dev": [0.49536571432176085]}, "84": {"P": [[4.0, 0.0, -1.0], [0.0, 4.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.37331755824397034]}, "85": {"P": [[4.0, -1.0, 0.0], [1.0, 4.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.37224375856335795]}, "86": {"P": [[4.0, -1.0, -1.0], [1.0, 4.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.49043013499680754]}, "87": {"P": [[4.0, -1.0, -1.0], [0.0, 4.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.53858257860911529]}, "88": {"P": [[4.0, -1.0, 0.0], [1.0, 5.0, -1.0], [0.0, 1.0, 4.0]], "dev": [0.48771821400075516]}, "89": {"P": [[4.0, -1.0, -1.0], [1.0, 5.0, 0.0], [1.0, 0.0, 4.0]], "dev": [0.48652381777622289]}, "90": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.48733577507344439]}, "91": {"P": [[4.0, -1.0, 0.0], [-1.0, 5.0, -1.0], [0.0, -1.0, 5.0]], "dev": [0.48464939526099293]}, "92": {"P": [[4.0, 0.0, -1.0], [0.0, 4.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.48208305861394285]}, "93": {"P": [[3.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.5722602467471618]}, "94": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.4772977713135359]}, "95": {"P": [[4.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.36004570361518518]}, "96": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.35818119355108757]}, "97": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, -1.0, 5.0]], "dev": [0.47094253339473219]}, "98": {"P": [[4.0, -1.0, -1.0], [-1.0, 5.0, 1.0], [0.0, -1.0, 5.0]], "dev": [0.51675536240733233]}, "99": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.41420626902219487]}, "100": {"P": [[4.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.17615759448618637]}, "101": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, 0.0, 4.0]], "dev": [0.41119247591013275]}, "102": {"P": [[4.0, -1.0, 0.0], [1.0, 4.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.46235384656359552]}, "103": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 1.0, 5.0]], "dev": [0.46091252367801006]}, "104": {"P": [[4.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.34750122299161301]}, "105": {"P": [[4.0, -1.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.34664883957699788]}, "106": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, 1.0, 4.0]], "dev": [0.45709646938447751]}, "107": {"P": [[4.0, -1.0, -2.0], [1.0, 5.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.58397730203793874]}, "108": {"P": [[5.0, -2.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 4.0]], "dev": [0.50107490866590088]}, "109": {"P": [[4.0, -1.0, 0.0], [1.0, 5.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.4539934262978661]}, "110": {"P": [[4.0, -1.0, -1.0], [1.0, 5.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.45310716260103318]}, "111": {"P": [[4.0, -1.0, -1.0], [1.0, 5.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.49785929330448697]}, "112": {"P": [[4.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.512249579661882]}, "113": {"P": [[4.0, -1.0, -1.0], [0.0, 6.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.51011336178749667]}, "114": {"P": [[4.0, 0.0, -1.0], [0.0, 6.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.41599330656726857]}, "115": {"P": [[4.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.41416041517350227]}, "116": {"P": [[4.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.41240831724578958]}, "117": {"P": [[4.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.50230455250168871]}, "118": {"P": [[4.0, -1.0, 0.0], [-1.0, 5.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.50052833970671706]}, "119": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, -1.0, 5.0]], "dev": [0.40761974074460994]}, "120": {"P": [[4.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.28769804741088612]}, "121": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.40480051335157197]}, "122": {"P": [[4.0, -1.0, 0.0], [1.0, 5.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.49408176180037766]}, "123": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, 0.0], [0.0, 1.0, 4.0]], "dev": [0.49262745833652366]}, "124": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 0.0, 5.0]], "dev": [0.34736991832960495]}, "125": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [3.8459253727671276e-16]}, "126": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.34552184349244408]}, "127": {"P": [[5.0, -2.0, 0.0], [0.0, 5.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.48739839927323469]}, "128": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.4862316450681195]}, "129": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, 1.0], [1.0, 0.0, 5.0]], "dev": [0.39623533954450413]}, "130": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.2800739917184728]}, "131": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.39471226657312886]}, "132": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.48208941416108547]}, "133": {"P": [[4.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.51175573164282473]}, "134": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, 1.0], [1.0, -1.0, 5.0]], "dev": [0.43876629846633064]}, "135": {"P": [[5.0, -1.0, -1.0], [1.0, 5.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.39232932165326839]}, "136": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.43745900892309042]}, "137": {"P": [[6.0, -1.0, 0.0], [0.0, 4.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.50442326174324004]}, "138": {"P": [[4.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.42170522758483459]}, "139": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.42016349394779012]}, "140": {"P": [[6.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.41867673549553097]}, "141": {"P": [[6.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 1.0, 5.0]], "dev": [0.45935413158507782]}, "142": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, 0.0], [-1.0, 0.0, 4.0]], "dev": [0.4964105613152402]}, "143": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.414536728686143]}, "144": {"P": [[5.0, 0.0, -1.0], [0.0, 6.0, 0.0], [-1.0, 0.0, 5.0]], "dev": [0.31302674605959674]}, "145": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.31194380231316926]}, "146": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, 1.0], [-1.0, 0.0, 6.0]], "dev": [0.41085750401765636]}, "147": {"P": [[4.0, 0.0, -1.0], [0.0, 7.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.48957386383697726]}, "148": {"P": [[4.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.40864856653811094]}, "149": {"P": [[5.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.36134389289125152]}, "150": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.15380934134473986]}, "151": {"P": [[5.0, 0.0, -1.0], [-1.0, 5.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.35960207203518668]}, "152": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.44605049076913561]}, "153": {"P": [[5.0, -1.0, -2.0], [1.0, 6.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.517716861970552]}, "154": {"P": [[6.0, -1.0, -1.0], [0.0, 5.0, 1.0], [1.0, 0.0, 5.0]], "dev": [0.40311584581959509]}, "155": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.30425156775087381]}, "156": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.30377341633642641]}, "157": {"P": [[5.0, -1.0, -1.0], [0.0, 6.0, -1.0], [1.0, 0.0, 5.0]], "dev": [0.40092371013400468]}, "158": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.4781737728998392]}, "159": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.44022801831888014]}, "160": {"P": [[5.0, -1.0, 0.0], [1.0, 6.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.39908573119650786]}, "161": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.39854821225370213]}, "162": {"P": [[5.0, -1.0, -1.0], [1.0, 5.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.43828280346354231]}, "163": {"P": [[5.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.47708064992278049]}, "164": {"P": [[4.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.47564329507890124]}, "165": {"P": [[5.0, 0.0, -1.0], [0.0, 5.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.47424310158970617]}, "166": {"P": [[5.0, -1.0, -1.0], [1.0, 5.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.47258989800845402]}, "167": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.43518496267142531]}, "168": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.3942787910361284]}, "169": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.39310871622885252]}, "170": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.39197705122540588]}, "171": {"P": [[5.0, -1.0, -1.0], [0.0, 5.0, 1.0], [-1.0, 0.0, 7.0]], "dev": [0.46659170883929552]}, "172": {"P": [[4.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.46543648632854623]}, "173": {"P": [[6.0, -1.0, 0.0], [0.0, 5.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.38880694454418974]}, "174": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.29366170376751111]}, "175": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.29282680951985374]}, "176": {"P": [[5.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.38596267600247419]}, "177": {"P": [[5.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.46014420211054213]}, "178": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 6.0]], "dev": [0.42337105646478757]}, "179": {"P": [[5.0, -1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.33990265729894359]}, "180": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 5.0]], "dev": [0.14474552847622871]}, "181": {"P": [[5.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.3385275400143658]}, "182": {"P": [[5.0, -1.0, 0.0], [1.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.38119419798536242]}, "183": {"P": [[7.0, -1.0, 0.0], [0.0, 5.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.45479458815950652]}, "184": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, 0.0], [0.0, 1.0, 5.0]], "dev": [0.37986218649267672]}, "185": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.28674803954357952]}, "186": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, 1.0, 5.0]], "dev": [0.28635344769417315]}, "187": {"P": [[5.0, -1.0, -1.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.37809181629260336]}, "188": {"P": [[5.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.48370093414012932]}, "189": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.45044474324567979]}, "190": {"P": [[5.0, -1.0, -1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.41481576650083868]}, "191": {"P": [[5.0, -1.0, 0.0], [1.0, 6.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.37613599872219095]}, "192": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.3757161679709522]}, "193": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.41329213747946986]}, "194": {"P": [[5.0, -2.0, 0.0], [1.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.47970010099732585]}, "195": {"P": [[5.0, 0.0, -1.0], [0.0, 5.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.4914381425627341]}, "196": {"P": [[4.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.42552412148915147]}, "197": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.42441951208682693]}, "198": {"P": [[5.0, 0.0, -1.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.42334219622823149]}, "199": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.42229183728473141]}, "200": {"P": [[5.0, 0.0, 0.0], [0.0, 5.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.42126810171974599]}, "201": {"P": [[5.0, -2.0, -1.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.51386454457765152]}, "202": {"P": [[5.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.41929918175622616]}, "203": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.34222325524902586]}, "204": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.34137483878093877]}, "205": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.34055511317302006]}, "206": {"P": [[5.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.41566647939038398]}, "207": {"P": [[6.0, -1.0, -1.0], [-1.0, 5.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.44794291412841097]}, "208": {"P": [[5.0, -1.0, 0.0], [-1.0, 6.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.41399761954377701]}, "209": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.33755619527343722]}, "210": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.23848650061150789]}, "211": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.33621991424496445]}, "212": {"P": [[5.0, 0.0, -1.0], [0.0, 7.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.41094252448083168]}, "213": {"P": [[5.0, -1.0, -1.0], [1.0, 6.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.44309306522406827]}, "214": {"P": [[5.0, 0.0, -1.0], [-1.0, 6.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.40955147650719137]}, "215": {"P": [[6.0, -1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.28913443273079514]}, "216": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.0]}, "217": {"P": [[6.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.28824333561323062]}, "218": {"P": [[6.0, -2.0, 0.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.40703066513432734]}, "219": {"P": [[7.0, -2.0, 0.0], [0.0, 6.0, -1.0], [1.0, 1.0, 5.0]], "dev": [0.49776980441947416]}, "220": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.40589634036047995]}, "221": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.33106205055680149]}, "222": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.2340896235255002]}, "223": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.33031660302712734]}, "224": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.40386875451033005]}, "225": {"P": [[5.0, -2.0, -1.0], [1.0, 6.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.49379758940788671]}, "226": {"P": [[6.0, -1.0, -1.0], [2.0, 6.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.43512983937391198]}, "227": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 6.0]], "dev": [0.36766005887770875]}, "228": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.32883809832950561]}, "229": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.36701244017432993]}, "230": {"P": [[6.0, -1.0, -1.0], [2.0, 6.0, 0.0], [0.0, -1.0, 6.0]], "dev": [0.43331179846986312]}, "231": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 5.0]], "dev": [0.4244863616723184]}, "232": {"P": [[8.0, 0.0, 0.0], [0.0, 5.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.42355540878707504]}, "233": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.42264414050696086]}, "234": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.40010706823623393]}, "235": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.42087983271247192]}, "236": {"P": [[6.0, -1.0, -1.0], [-2.0, 6.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.45011946280536275]}, "237": {"P": [[7.0, -1.0, 0.0], [-1.0, 5.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.41919180415082824]}, "238": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.35065860601507498]}, "239": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.34991455419554301]}, "240": {"P": [[5.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.34919110030604739]}, "241": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, 1.0], [0.0, 1.0, 6.0]], "dev": [0.38375230951454786]}, "242": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, 1.0], [-2.0, 0.0, 7.0]], "dev": [0.44521976852478617]}, "243": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.41456942533839763]}, "244": {"P": [[7.0, -1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.34649903558161571]}, "245": {"P": [[5.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.26181977560432323]}, "246": {"P": [[6.0, 0.0, -1.0], [0.0, 6.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.26128617174551583]}, "247": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, -1.0, 6.0]], "dev": [0.34468595335613234]}, "248": {"P": [[6.0, 0.0, -1.0], [0.0, 8.0, 0.0], [1.0, 0.0, 5.0]], "dev": [0.41120044763791319]}, "249": {"P": [[5.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.41057707648227737]}, "250": {"P": [[5.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.34304318570411069]}, "251": {"P": [[6.0, -1.0, 0.0], [0.0, 6.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.30363967988327373]}, "252": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.12935072560400773]}, "253": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.30276716372190793]}, "254": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.37588293158747993]}, "255": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.40717448163610753]}, "256": {"P": [[5.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.43609301408730622]}, "257": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.33984142443863274]}, "258": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.25666887347516437]}, "259": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.25642533499626802]}, "260": {"P": [[6.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.33872677103899451]}, "261": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, -1.0], [1.0, 1.0, 6.0]], "dev": [0.40432315355478365]}, "262": {"P": [[6.0, -2.0, 0.0], [1.0, 7.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.4330789146024942]}, "263": {"P": [[6.0, -1.0, -1.0], [0.0, 6.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.37207816727532539]}, "264": {"P": [[6.0, 0.0, -1.0], [0.0, 6.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.33746805588156059]}, "265": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.3371927105517793]}, "266": {"P": [[6.0, -2.0, 0.0], [1.0, 6.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.37108112671748905]}, "267": {"P": [[6.0, 0.0, -1.0], [-1.0, 7.0, 0.0], [2.0, 1.0, 6.0]], "dev": [0.43094101044841976]}, "268": {"P": [[6.0, -2.0, 0.0], [1.0, 6.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.43055236016419235]}, "269": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -1.0], [-1.0, 2.0, 6.0]], "dev": [0.45721891194210024]}, "270": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -1.0], [0.0, 2.0, 6.0]], "dev": [0.42981279248094784]}, "271": {"P": [[6.0, -1.0, -1.0], [1.0, 6.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.4006969073570032]}, "272": {"P": [[5.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.40164077398712134]}, "273": {"P": [[8.0, -1.0, 0.0], [-1.0, 5.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.4008911089586551]}, "274": {"P": [[6.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.40015606655259339]}, "275": {"P": [[5.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.39943551612010336]}, "276": {"P": [[6.0, 0.0, -1.0], [0.0, 6.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.39872932776356701]}, "277": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [0.0, 1.0, 6.0]], "dev": [0.42657579009977931]}, "278": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, -1.0], [-2.0, 0.0, 6.0]], "dev": [0.42587706660985786]}, "279": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.36598754179440351]}, "280": {"P": [[5.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.33184727935303726]}, "281": {"P": [[6.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.33125510442038325]}, "282": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.33067833592033813]}, "283": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 6.0]], "dev": [0.39417739058934559]}, "284": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -2.0], [1.0, -1.0, 7.0]], "dev": [0.42196120566352069]}, "285": {"P": [[5.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.39299885608788004]}, "286": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.32852261252564191]}, "287": {"P": [[6.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.24825613196968677]}, "288": {"P": [[6.0, 0.0, 0.0], [0.0, 6.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.24782696262606235]}, "289": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.32706095481529635]}, "290": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [1.0, 0.0, 6.0]], "dev": [0.39027969933079681]}, "291": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.41796630825644143]}, "292": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, -1.0], [-1.0, 0.0, 6.0]], "dev": [0.3589137050740081]}, "293": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 7.0]], "dev": [0.28837385297424506]}, "294": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.12287486929764632]}, "295": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.28765938766533183]}, "296": {"P": [[6.0, -1.0, 0.0], [1.0, 6.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.32414563418856179]}, "297": {"P": [[6.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 6.0]], "dev": [0.38699462959054082]}, "298": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.38657299191335193]}, "299": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.32309981275526722]}, "300": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.24404175523111254]}, "301": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.24383507054469261]}, "302": {"P": [[6.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.32217102540884834]}, "303": {"P": [[6.0, -1.0, -1.0], [0.0, 7.0, -2.0], [1.0, 0.0, 7.0]], "dev": [0.41244614667433455]}, "304": {"P": [[6.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.38428219207485842]}, "305": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 2.0, 7.0]], "dev": [0.41167850007950452]}, "306": {"P": [[6.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.35374077263486553]}, "307": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.3208736082145735]}, "308": {"P": [[6.0, -1.0, -1.0], [1.0, 7.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.32065055290381389]}, "309": {"P": [[6.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.35293113120617353]}, "310": {"P": [[6.0, -2.0, 0.0], [1.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.40993824473494822]}, "311": {"P": [[7.0, -1.0, -2.0], [1.0, 6.0, 0.0], [1.0, 1.0, 7.0]], "dev": [0.43540060996047675]}, "312": {"P": [[5.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.42070841784451596]}, "313": {"P": [[6.0, -1.0, 0.0], [1.0, 7.0, -2.0], [0.0, 1.0, 7.0]], "dev": [0.40901270474469009]}, "314": {"P": [[6.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.38132487708194218]}, "315": {"P": [[7.0, -1.0, 0.0], [1.0, 6.0, -1.0], [0.0, 2.0, 7.0]], "dev": [0.40844345436105767]}, "316": {"P": [[6.0, -2.0, -1.0], [1.0, 7.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.43377389407853678]}, "317": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.41737433965728099]}, "318": {"P": [[6.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 6.0]], "dev": [0.41673948627599455]}, "319": {"P": [[5.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.44110216179531225]}, "320": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.36040497745198302]}, "321": {"P": [[8.0, -1.0, 0.0], [-1.0, 6.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.35983225451689538]}, "322": {"P": [[6.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.35927077331362117]}, "323": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.35872044813693221]}, "324": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 1.0], [-1.0, 1.0, 7.0]], "dev": [0.35818119355108746]}, "325": {"P": [[5.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.41258384071443643]}, "326": {"P": [[7.0, -1.0, -2.0], [-1.0, 6.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.43689892536427277]}, "327": {"P": [[6.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.35662900300993511]}, "328": {"P": [[7.0, -1.0, 0.0], [-1.0, 6.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.29116904611857064]}, "329": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.29072208322299026]}, "330": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.29028742590542944]}, "331": {"P": [[6.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.3547092677485813]}, "332": {"P": [[6.0, -2.0, 0.0], [0.0, 7.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.43366630226334923]}, "333": {"P": [[7.0, -1.0, -1.0], [-1.0, 6.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.38209649252323868]}, "334": {"P": [[6.0, 0.0, -1.0], [0.0, 8.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.35337892618913674]}, "335": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.2882954701082312]}, "336": {"P": [[7.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.20377430131729241]}, "337": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.28758156818945463]}, "338": {"P": [[8.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, 1.0, 6.0]], "dev": [0.35174683634002363]}, "339": {"P": [[8.0, -1.0, -1.0], [0.0, 6.0, 1.0], [-1.0, -1.0, 7.0]], "dev": [0.37950592153171581]}, "340": {"P": [[6.0, -2.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.42985825426050961]}, "341": {"P": [[6.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.35062618057958889]}, "342": {"P": [[7.0, 0.0, -1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 7.0]], "dev": [0.24768250247178983]}, "343": {"P": [[7.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [7.6918507455342553e-16]}, "344": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.24720154212995857]}, "345": {"P": [[6.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.34926570689435876]}, "346": {"P": [[6.0, -2.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.42735867596073596]}, "347": {"P": [[6.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.40255787079809041]}, "348": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.34834285888977989]}, "349": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.2842428512163539]}, "350": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.20101098393019437]}, "351": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.28383682748194033]}, "352": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.34723836071508318]}, "353": {"P": [[8.0, -1.0, 0.0], [0.0, 6.0, -1.0], [1.0, 2.0, 7.0]], "dev": [0.42480670123512593]}, "354": {"P": [[6.0, -2.0, 0.0], [1.0, 7.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.42447290707149493]}, "355": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, 1.0], [2.0, 0.0, 7.0]], "dev": [0.37417788160849946]}, "356": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, -1.0, 7.0]], "dev": [0.31622288853305747]}, "357": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.28286160035329988]}, "358": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.31586749558419808]}, "359": {"P": [[7.0, -2.0, 0.0], [1.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.37317933455136149]}, "360": {"P": [[5.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.41727118523543794]}, "361": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 6.0]], "dev": [0.43971484099012043]}, "362": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 1.0], [1.0, 0.0, 7.0]], "dev": [0.39806157083435406]}, "363": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.39782224551086659]}, "364": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.34474181252891795]}, "365": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.39736507853338848]}, "366": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.39714710975864059]}, "367": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.38901316763113036]}, "368": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.36256650277083519]}, "369": {"P": [[7.0, 0.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.36206743524707241]}, "370": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 6.0]], "dev": [0.36157683938934071]}, "371": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 6.0]], "dev": [0.36109465892271048]}, "372": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.36062083773207132]}, "373": {"P": [[6.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.41025504293099574]}, "374": {"P": [[7.0, -2.0, 0.0], [-1.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.38554758967329089]}, "375": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.35924897105351522]}, "376": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.30058515409727476]}, "377": {"P": [[7.0, 0.0, -1.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 7.0]], "dev": [0.30018146886203789]}, "378": {"P": [[6.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.29978694845791443]}, "379": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [0.0, 1.0, 7.0]], "dev": [0.32975101151101416]}, "380": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, -2.0], [1.0, -1.0, 8.0]], "dev": [0.38288230745678281]}, "381": {"P": [[6.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.38246461193927794]}, "382": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.35633015431883791]}, "383": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.29794971406693843]}, "384": {"P": [[7.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.2251985563484433]}, "385": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.22490539827702977]}, "386": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.29695349928447251]}, "387": {"P": [[9.0, 0.0, 0.0], [0.0, 6.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.35447896089155262]}, "388": {"P": [[8.0, -1.0, -1.0], [-1.0, 6.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.40373888242852762]}, "389": {"P": [[6.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.35379124102046405]}, "390": {"P": [[6.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.29574564869842673]}, "391": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.26191161829989107]}, "392": {"P": [[7.0, 0.0, 0.0], [0.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.11161880364065881]}, "393": {"P": [[8.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.26142736536654876]}, "394": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.32471251863332873]}, "395": {"P": [[7.0, -2.0, -1.0], [0.0, 8.0, -1.0], [1.0, -1.0, 7.0]], "dev": [0.40123131858306088]}, "396": {"P": [[8.0, -1.0, -1.0], [1.0, 7.0, 1.0], [1.0, 1.0, 7.0]], "dev": [0.35161380471720938]}, "397": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 6.0]], "dev": [0.37675780796316888]}, "398": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.29372838210888136]}, "399": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.22191819558544118]}, "400": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.22178158709938606]}, "401": {"P": [[7.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.2931038924357775]}, "402": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.35002145824256181]}, "403": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 1.0], [-1.0, 0.0, 8.0]], "dev": [0.39875202290030637]}, "404": {"P": [[7.0, -1.0, -1.0], [0.0, 7.0, 1.0], [2.0, 0.0, 8.0]], "dev": [0.37480655255074408]}, "405": {"P": [[8.0, -1.0, -1.0], [1.0, 7.0, 0.0], [1.0, 1.0, 7.0]], "dev": [0.32210825184618447]}, "406": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.29221664123833357]}, "407": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.29206168632598373]}, "408": {"P": [[8.0, -1.0, -1.0], [1.0, 7.0, 1.0], [0.0, -1.0, 7.0]], "dev": [0.32154690714164919]}, "409": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.37360239518173277]}, "410": {"P": [[7.0, -2.0, 0.0], [1.0, 7.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.37337990728256287]}, "411": {"P": [[7.0, -2.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 7.0]], "dev": [0.39666226297994306]}, "412": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, -1.0], [0.0, 1.0, 7.0]], "dev": [0.39642728537872213]}, "413": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, 2.0, 7.0]], "dev": [0.37274829256380887]}, "414": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.34754950108766375]}, "415": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.37235663029274524]}, "416": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.39554379262308298]}, "417": {"P": [[7.0, -1.0, -2.0], [1.0, 8.0, 0.0], [1.0, -1.0, 7.0]], "dev": [0.39533680859045373]}, "418": {"P": [[6.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.39617663792066027]}, "419": {"P": [[6.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.41766721578478117]}, "420": {"P": [[7.0, -2.0, 0.0], [2.0, 8.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.3947485095035585]}, "421": {"P": [[7.0, -2.0, -1.0], [1.0, 7.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.41651228599596812]}, "422": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [-2.0, 0.0, 8.0]], "dev": [0.39434971858222945]}, "423": {"P": [[6.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.34593539614846436]}, "424": {"P": [[6.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.3455204416375387]}, "425": {"P": [[7.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.34511209116188024]}, "426": {"P": [[6.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.34471030651910783]}, "427": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.34431504957557951]}, "428": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, 1.0, 7.0]], "dev": [0.36863674452947082]}, "429": {"P": [[6.0, 0.0, -1.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.39138629803655633]}, "430": {"P": [[7.0, -1.0, -1.0], [-2.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.36785519195520777]}, "431": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.31620385492687575]}, "432": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.28681729782188359]}, "433": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.28648520515181369]}, "434": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 7.0]], "dev": [0.28616028917841407]}, "435": {"P": [[9.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.34138343797878262]}, "436": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -2.0], [1.0, -1.0, 8.0]], "dev": [0.36565497155561527]}, "437": {"P": [[6.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.38835009996500813]}, "438": {"P": [[6.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.3403872144984037]}, "439": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.28464191456468796]}, "440": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.21514612313142084]}, "441": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.2149030946959341]}, "442": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.28381436215305889]}, "443": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.33884785842141718]}, "444": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.36304759765289429]}, "445": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, 0.0], [-1.0, 2.0, 7.0]], "dev": [0.38567067820109679]}, "446": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 8.0]], "dev": [0.31162478427301921]}, "447": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.2504814358551532]}, "448": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.10676111126875885]}, "449": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.25007415624080609]}, "450": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.28190384580489403]}, "451": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.33668927880311195]}, "452": {"P": [[7.0, -1.0, -1.0], [1.0, 7.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.38360515277175539]}, "453": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.33620633954285495]}, "454": {"P": [[8.0, -1.0, -1.0], [0.0, 7.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.28110517808839253]}, "455": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.21238782422866193]}, "456": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.21226942510426872]}, "457": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.28057248227315879]}, "458": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.35933120302930538]}, "459": {"P": [[7.0, -1.0, -1.0], [1.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.33488898309992771]}, "460": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -2.0], [-1.0, 1.0, 8.0]], "dev": [0.35888382652897483]}, "461": {"P": [[8.0, -1.0, -2.0], [0.0, 7.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.35866768261907767]}, "462": {"P": [[7.0, -1.0, -1.0], [0.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.3082616061155895]}, "463": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.27967267240230775]}, "464": {"P": [[7.0, -1.0, -1.0], [1.0, 8.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.27954367829631799]}, "465": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.30779333283526628]}, "466": {"P": [[7.0, -2.0, 0.0], [1.0, 8.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.35766107892858895]}, "467": {"P": [[7.0, -1.0, -1.0], [1.0, 9.0, 0.0], [2.0, -1.0, 7.0]], "dev": [0.42145907835347446]}, "468": {"P": [[7.0, -1.0, -1.0], [1.0, 8.0, -1.0], [0.0, 2.0, 8.0]], "dev": [0.37979925441671825]}, "469": {"P": [[7.0, -2.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.3796015036042138]}, "470": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, -2.0], [0.0, 1.0, 8.0]], "dev": [0.35694276394289959]}, "471": {"P": [[7.0, -1.0, -1.0], [1.0, 8.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.33282023340348249]}, "472": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.35661188056206589]}, "473": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, 0.0], [1.0, -1.0, 8.0]], "dev": [0.37885552943914502]}, "474": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.37868014169010678]}, "475": {"P": [[7.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 7.0]], "dev": [0.42733064312919056]}, "476": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -2.0], [0.0, 2.0, 8.0]], "dev": [0.37834248281143573]}, "477": {"P": [[6.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.36435343606958404]}, "478": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.36396392772750197]}, "479": {"P": [[7.0, -2.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.38538898013080075]}, "480": {"P": [[6.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.36320000251325463]}, "481": {"P": [[8.0, -2.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 7.0]], "dev": [0.38461890301237495]}, "482": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.36245602791387754]}, "483": {"P": [[7.0, 0.0, -1.0], [0.0, 7.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.3620914580563771]}, "484": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, -1.0], [-2.0, 0.0, 8.0]], "dev": [0.38349947295531156]}, "485": {"P": [[6.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.38313574623807045]}, "486": {"P": [[6.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.31302674605959663]}, "487": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.31269954241777947]}, "488": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.31237768286412909]}, "489": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.31206114041908473]}, "490": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.31174988810596399]}, "491": {"P": [[7.0, -1.0, 0.0], [0.0, 7.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.38105053411676715]}, "492": {"P": [[6.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.35902827790984199]}, "493": {"P": [[7.0, 0.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, -2.0, 8.0]], "dev": [0.3803918855018909]}, "494": {"P": [[9.0, 0.0, -1.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.31055724077072533]}, "495": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.2535888036647857]}, "496": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.25333087565903145]}, "497": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.25307895305462269]}, "498": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.3094470785503689]}, "499": {"P": [[7.0, -2.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.3785224978792005]}, "500": {"P": [[7.0, -1.0, 0.0], [1.0, 7.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.35662454267900268]}, "501": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.33335947147913148]}, "502": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.30841767762934247]}, "503": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.25169183527490901]}, "504": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.177940789772288]}, "505": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.25127612629309748]}, "506": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 7.0]], "dev": [0.30746731663629828]}, "507": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.33185106611125148]}, "508": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.35450792473580844]}, "509": {"P": [[7.0, -2.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.37575064437069555]}, "510": {"P": [[8.0, -2.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.30659427749456458]}, "511": {"P": [[8.0, 0.0, -1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 8.0]], "dev": [0.21665043169683829]}, "512": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [7.6918507455342553e-16]}, "513": {"P": [[8.0, 0.0, -1.0], [-1.0, 8.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.21636851035726801]}, "514": {"P": [[7.0, -1.0, -1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.30579684635480425]}, "515": {"P": [[7.0, -2.0, -1.0], [0.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.3742855957299161]}, "516": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 1.0, 7.0]], "dev": [0.35266599298750312]}, "517": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.37382915724147392]}, "518": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.30507331459782572]}, "519": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.24899385305325838]}, "520": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.17609194594834979]}, "521": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.24875443938159347]}, "522": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.30442197989561004]}, "523": {"P": [[7.0, -2.0, -1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.37255305689575252]}, "524": {"P": [[7.0, -2.0, 0.0], [1.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.37235373410295686]}, "525": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [2.0, -1.0, 8.0]], "dev": [0.37215816985473987]}, "526": {"P": [[8.0, -2.0, 0.0], [1.0, 8.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.32812489765955882]}, "527": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, 1.0], [1.0, -1.0, 8.0]], "dev": [0.27732779987987272]}, "528": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.24807926726255544]}, "529": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.27711720089755804]}, "530": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, -2.0], [1.0, 1.0, 8.0]], "dev": [0.32753282962393532]}, "531": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.37106249367142941]}, "532": {"P": [[8.0, -2.0, 0.0], [0.0, 8.0, -2.0], [1.0, 1.0, 8.0]], "dev": [0.39088648467811765]}, "533": {"P": [[7.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.40568289490896065]}, "534": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, 1.0], [1.0, 0.0, 8.0]], "dev": [0.3494632518169925]}, "535": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.34932157407507869]}, "536": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.30268646993432535]}, "537": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, -1.0], [1.0, 2.0, 8.0]], "dev": [0.34904919140820378]}, "538": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, -1.0], [2.0, 0.0, 8.0]], "dev": [0.34891844195267213]}, "539": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-2.0, -1.0, 8.0]], "dev": [0.38429007785001273]}, "540": {"P": [[8.0, 0.0, -2.0], [0.0, 9.0, 0.0], [-2.0, 0.0, 8.0]], "dev": [0.363770174766819]}, "541": {"P": [[7.0, -1.0, -1.0], [-1.0, 8.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.38359090192005219]}, "542": {"P": [[10.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.36309129890333808]}, "543": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.36275774356810048]}, "544": {"P": [[8.0, -2.0, 0.0], [2.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.34820873962064336]}, "545": {"P": [[7.0, 0.0, -1.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.36210230920945369]}, "546": {"P": [[7.0, -1.0, -1.0], [0.0, 8.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.38190898345891267]}, "547": {"P": [[7.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.38158377889859252]}, "548": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.33984550056587887]}, "549": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.31681878246397405]}, "550": {"P": [[7.0, -1.0, 0.0], [-1.0, 8.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.31652663107292067]}, "551": {"P": [[9.0, -1.0, -1.0], [-1.0, 7.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.31623863370993466]}, "552": {"P": [[10.0, -1.0, 0.0], [-1.0, 7.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.31595477178449627]}, "553": {"P": [[7.0, 0.0, 0.0], [0.0, 8.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.31567502671113074]}, "554": {"P": [[7.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.35934201829477191]}, "555": {"P": [[9.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 7.0]], "dev": [0.37911340647684028]}, "556": {"P": [[8.0, -2.0, 0.0], [-1.0, 8.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.33752984851987167]}, "557": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.31459684342014721]}, "558": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.26324884097252826]}, "559": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.26301071197221138]}, "560": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.26277717759003671]}, "561": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, 1.0, 8.0]], "dev": [0.2891936135454316]}, "562": {"P": [[8.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.33595473974818768]}, "563": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.3568818336845333]}, "564": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.33545972844302852]}, "565": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.31263244328669709]}, "566": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.26147131285902653]}, "567": {"P": [[8.0, 0.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.19765302240684129]}, "568": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.19747866469435049]}, "569": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.26087874426151303]}, "570": {"P": [[7.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.31153125984777635]}, "571": {"P": [[8.0, -1.0, -1.0], [-2.0, 9.0, 0.0], [1.0, 1.0, 8.0]], "dev": [0.35493679163189734]}, "572": {"P": [[7.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.35470920336912404]}, "573": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, 0.0], [0.0, 1.0, 7.0]], "dev": [0.31091609980097507]}, "574": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.25997861651692233]}, "575": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.23030470912407019]}, "576": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.098169950192783934]}, "577": {"P": [[8.0, -1.0, 0.0], [0.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.23001474762742352]}, "578": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.28577388122515085]}, "579": {"P": [[8.0, -2.0, -1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.35321028734843557]}, "580": {"P": [[7.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.35300941452900159]}, "581": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.30943837105235178]}, "582": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.33165266090976137]}, "583": {"P": [[8.0, -1.0, -1.0], [0.0, 8.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.25862644977843374]}, "584": {"P": [[9.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.19543557425279542]}, "585": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.19535318197542498]}, "586": {"P": [[8.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.2582501485097452]}, "587": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.30848101606721801]}, "588": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, 1.0], [-1.0, 0.0, 9.0]], "dev": [0.35151859462743729]}, "589": {"P": [[7.0, -1.0, -1.0], [0.0, 9.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.38975345461023431]}, "590": {"P": [[8.0, -2.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.33031814094203732]}, "591": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.28391992534729515]}, "592": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.25760570333422672]}, "593": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.25751206460963116]}, "594": {"P": [[8.0, -2.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.28358059780423428]}, "595": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.32959001673626892]}, "596": {"P": [[8.0, -1.0, -1.0], [0.0, 9.0, -1.0], [2.0, 0.0, 8.0]], "dev": [0.32945393482634078]}, "597": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [2.0, 1.0, 8.0]], "dev": [0.3696766785467272]}, "598": {"P": [[8.0, -2.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 8.0]], "dev": [0.34993623564292931]}, "599": {"P": [[8.0, -1.0, -2.0], [0.0, 8.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.34979462411380918]}, "600": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -2.0], [0.0, 1.0, 8.0]], "dev": [0.3289408573024325]}, "601": {"P": [[8.0, -1.0, -1.0], [1.0, 8.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.30672656753129052]}, "602": {"P": [[8.0, 0.0, -1.0], [0.0, 9.0, -1.0], [2.0, 1.0, 8.0]], "dev": [0.32870283500234315]}, "603": {"P": [[9.0, -2.0, 0.0], [1.0, 8.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.34925761451882437]}, "604": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.34913064309638336]}, "605": {"P": [[8.0, -2.0, -1.0], [1.0, 9.0, -2.0], [1.0, 0.0, 8.0]], "dev": [0.40465359932240302]}, "606": {"P": [[8.0, -2.0, -1.0], [2.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.38684559367994681]}, "607": {"P": [[9.0, -2.0, -1.0], [-2.0, 9.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.38788770844491488]}, "608": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -2.0], [0.0, 2.0, 8.0]], "dev": [0.34865141546767675]}, "609": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.36796412270077417]}, "610": {"P": [[8.0, -1.0, -2.0], [1.0, 8.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.3678393300593541]}, "611": {"P": [[9.0, -1.0, 0.0], [-1.0, 7.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.34889700056103207]}, "612": {"P": [[8.0, -2.0, 0.0], [2.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.34821730187566818]}, "613": {"P": [[7.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.34832238828695761]}, "614": {"P": [[7.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.34803979695817649]}, "615": {"P": [[7.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.36710345638043412]}, "616": {"P": [[10.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.34748398079591364]}, "617": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 2.0, 9.0]], "dev": [0.36654207533589434]}, "618": {"P": [[8.0, 0.0, -2.0], [-1.0, 10.0, 0.0], [-1.0, -1.0, 8.0]], "dev": [0.36626584839945731]}, "619": {"P": [[8.0, -2.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.34667348393569997]}, "620": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.30412662254875128]}, "621": {"P": [[7.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.30387793973652921]}, "622": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.30363260853849317]}, "623": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.30339061566725234]}, "624": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.30315194783153276]}, "625": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, 1.0, 8.0]], "dev": [0.32471259464733071]}, "626": {"P": [[8.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.36416154765925324]}, "627": {"P": [[7.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.34464603708687375]}, "628": {"P": [[8.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.32400514987753232]}, "629": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.27854459869391263]}, "630": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.25270922138023211]}, "631": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.25250846845234509]}, "632": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.25231143425836094]}, "633": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.30115136920741598]}, "634": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.32267330672559869]}, "635": {"P": [[9.0, -2.0, 0.0], [0.0, 8.0, -1.0], [-2.0, -1.0, 9.0]], "dev": [0.3802487768814744]}, "636": {"P": [[7.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.34259158226187431]}, "637": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.30034579098559433]}, "638": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.25120649640765419]}, "639": {"P": [[8.0, 0.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.18989494021328016]}, "640": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.18974706743141442]}, "641": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.250703029834005]}, "642": {"P": [[8.0, 0.0, -1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 8.0]], "dev": [0.29940933861386071]}, "643": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.32087798798009942]}, "644": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.34095968741307903]}, "645": {"P": [[9.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [1.0, -2.0, 9.0]], "dev": [0.34076822850035648]}, "646": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 9.0]], "dev": [0.27540746368165137]}, "647": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.22142303125304913]}, "648": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.094391329702282104]}, "649": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.22117412904308251]}, "650": {"P": [[8.0, -1.0, 0.0], [1.0, 8.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.24938375325120196]}, "651": {"P": [[8.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.29791614772423713]}, "652": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.33950416387427401]}, "653": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -2.0, 9.0]], "dev": [0.3393343174928305]}, "654": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.29747203834259406]}, "655": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.2487716623423733]}, "656": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.18799133360825679]}, "657": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.1879187487061113]}, "658": {"P": [[9.0, -1.0, -1.0], [1.0, 8.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.24844478630662015]}, "659": {"P": [[8.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.31825996222291475]}, "660": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.29666209912885122]}, "661": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.35702902780016949]}, "662": {"P": [[9.0, -1.0, -1.0], [2.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.31784748551858821]}, "663": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.31771532908736722]}, "664": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.27309928387029792]}, "665": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 1.0, 8.0]], "dev": [0.24779710639051425]}, "666": {"P": [[9.0, 0.0, -1.0], [0.0, 9.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.24771749599028087]}, "667": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 1.0, 8.0]], "dev": [0.27281026177770257]}, "668": {"P": [[8.0, -2.0, 0.0], [1.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.31709400905675539]}, "669": {"P": [[8.0, -2.0, -1.0], [1.0, 8.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.37375718006163838]}, "670": {"P": [[8.0, -2.0, -1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.35570071914461127]}, "671": {"P": [[8.0, -1.0, -1.0], [0.0, 9.0, 2.0], [1.0, -1.0, 9.0]], "dev": [0.33671839441832202]}, "672": {"P": [[8.0, -2.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.33659684042543198]}, "673": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.31653733135364176]}, "674": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.29516393620527553]}, "675": {"P": [[8.0, -1.0, -2.0], [1.0, 9.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.3163324172503359]}, "676": {"P": [[8.0, -2.0, -1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.33613476239671419]}, "677": {"P": [[9.0, -1.0, -1.0], [1.0, 8.0, 1.0], [0.0, -2.0, 9.0]], "dev": [0.33602522011350799]}, "678": {"P": [[9.0, -2.0, -1.0], [2.0, 9.0, 0.0], [0.0, 1.0, 8.0]], "dev": [0.37249896010740713]}, "679": {"P": [[7.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.37962249782650731]}, "680": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -2.0], [0.0, 2.0, 9.0]], "dev": [0.3357107562106163]}, "681": {"P": [[9.0, -1.0, -2.0], [1.0, 8.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.35433554178290616]}, "682": {"P": [[8.0, -2.0, -1.0], [1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.35422506707483287]}, "683": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -2.0], [1.0, 1.0, 9.0]], "dev": [0.35411681785366567]}, "684": {"P": [[9.0, -2.0, 0.0], [2.0, 8.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.33532409498441829]}, "685": {"P": [[8.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.36056551607855197]}, "686": {"P": [[7.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.36030638860223779]}, "687": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-2.0, 1.0, 10.0]], "dev": [0.37746476857513334]}, "688": {"P": [[8.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.35979546912662402]}, "689": {"P": [[7.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.35954365940168592]}, "690": {"P": [[7.0, 0.0, -1.0], [0.0, 10.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.32168178027704358]}, "691": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.32144435324451437]}, "692": {"P": [[8.0, -2.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.34052529942579962]}, "693": {"P": [[9.0, -2.0, 0.0], [-2.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.32097731080537506]}, "694": {"P": [[8.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.34005355281839666]}, "695": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.32052062222203676]}, "696": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 8.0]], "dev": [0.32029613752236047]}, "697": {"P": [[7.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.35761561734556802]}, "698": {"P": [[8.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.33913961815409083]}, "699": {"P": [[8.0, -2.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.33891724015012481]}, "700": {"P": [[7.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.27688052158246529]}, "701": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.27667979545601801]}, "702": {"P": [[9.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.27648188353592928]}, "703": {"P": [[8.0, 0.0, -1.0], [0.0, 9.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.27628677592047707]}, "704": {"P": [[8.0, 0.0, 0.0], [0.0, 8.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.27609446269306781]}, "705": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.33763357076485201]}, "706": {"P": [[8.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, -1.0, 9.0]], "dev": [0.33742797573423966]}, "707": {"P": [[7.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.31799378607741546]}, "708": {"P": [[9.0, -1.0, -1.0], [0.0, 10.0, -2.0], [-1.0, 0.0, 8.0]], "dev": [0.33702386265224843]}, "709": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.27517446428370773]}, "710": {"P": [[8.0, 0.0, -1.0], [0.0, 10.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.2247095239087519]}, "711": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.22455022104938011]}, "712": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.22439413813966133]}, "713": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.27448774780853558]}, "714": {"P": [[8.0, -2.0, 0.0], [0.0, 9.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.33586750149635436]}, "715": {"P": [[8.0, 0.0, -1.0], [0.0, 11.0, 0.0], [1.0, 0.0, 8.0]], "dev": [0.31650696569859887]}, "716": {"P": [[9.0, -1.0, -1.0], [-2.0, 10.0, 0.0], [1.0, 1.0, 8.0]], "dev": [0.35363149252891529]}, "717": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.29575946323798341]}, "718": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.27368990160231277]}, "719": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.22339076069706493]}, "720": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.15795045496290658]}, "721": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.22313240781773558]}, "722": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.27309927738432521]}, "723": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.2948220514062686]}, "724": {"P": [[8.0, -2.0, -1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.35219364623761773]}, "725": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.31486264227368649]}, "726": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.33380034159884669]}, "727": {"P": [[8.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.27241949890240297]}, "728": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.19253979939731639]}, "729": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.0]}, "730": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.19236380015981044]}, "731": {"P": [[8.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.27192168378304904]}, "732": {"P": [[8.0, -2.0, -1.0], [0.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.33288576913552215]}, "733": {"P": [[8.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.31371285723283393]}, "734": {"P": [[8.0, 0.0, -1.0], [-1.0, 9.0, 1.0], [0.0, -2.0, 10.0]], "dev": [0.3325980803143947]}, "735": {"P": [[9.0, -1.0, 0.0], [2.0, 10.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.33245741631288916]}, "736": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.27135585226407843]}, "737": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.22150455598570004]}, "738": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.1566530731371685]}, "739": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.22135448151839787]}, "740": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.2709475382654189]}, "741": {"P": [[8.0, -2.0, -1.0], [1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.33165741883989563]}, "742": {"P": [[8.0, -2.0, 0.0], [1.0, 9.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.33153133742395136]}, "743": {"P": [[8.0, -1.0, -1.0], [1.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.34931491128891834]}, "744": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.33128531369186426]}, "745": {"P": [[9.0, -2.0, 0.0], [1.0, 9.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.29211972613713588]}, "746": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.24690642997335022]}, "747": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.22086853199620191]}, "748": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.24677396363643528]}, "749": {"P": [[9.0, -2.0, 0.0], [1.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.29174716160555531]}, "750": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.33059574701993155]}, "751": {"P": [[10.0, 0.0, -1.0], [-1.0, 9.0, -1.0], [1.0, 2.0, 8.0]], "dev": [0.34831820223612592]}, "752": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, -2.0], [0.0, 2.0, 10.0]], "dev": [0.34820224855079251]}, "753": {"P": [[7.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.39376436072105203]}, "754": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 1.0], [1.0, 0.0, 9.0]], "dev": [0.31135958788058732]}, "755": {"P": [[9.0, -1.0, -2.0], [0.0, 9.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.31127056367370826]}, "756": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.26969482584527171]}, "757": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 9.0]], "dev": [0.31109858516586231]}, "758": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.3110156132785003]}, "759": {"P": [[7.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.36028772911927492]}, "760": {"P": [[9.0, 0.0, -2.0], [0.0, 10.0, 0.0], [2.0, 0.0, 8.0]], "dev": [0.34734207721904414]}, "761": {"P": [[9.0, -2.0, -1.0], [-2.0, 9.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.35980568462706652]}, "762": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.35956766570630255]}, "763": {"P": [[9.0, -1.0, -2.0], [0.0, 9.0, 1.0], [2.0, 0.0, 9.0]], "dev": [0.3470499119420814]}, "764": {"P": [[9.0, -1.0, -2.0], [1.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.32926110712635931]}, "765": {"P": [[9.0, -2.0, 0.0], [2.0, 9.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.31049031667087951]}, "766": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, 1.0], [1.0, -2.0, 9.0]], "dev": [0.32910082612962527]}, "767": {"P": [[9.0, -2.0, -1.0], [2.0, 9.0, 0.0], [0.0, -1.0, 9.0]], "dev": [0.34668560500718526]}, "768": {"P": [[8.0, -2.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.35818119355108752]}, "769": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-2.0, -1.0, 9.0]], "dev": [0.34090972900440758]}, "770": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.32274951345656283]}, "771": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.340475283662245]}, "772": {"P": [[8.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.32232703128525703]}, "773": {"P": [[8.0, 0.0, -1.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.32211891537812903]}, "774": {"P": [[10.0, -1.0, -1.0], [-1.0, 8.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.32191287405026275]}, "775": {"P": [[11.0, -1.0, -1.0], [-1.0, 8.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.32170890064997831]}, "776": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [-2.0, 1.0, 10.0]], "dev": [0.33942415394491171]}, "777": {"P": [[7.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.356233031032061]}, "778": {"P": [[10.0, -1.0, -1.0], [-2.0, 8.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.33901755925990062]}, "779": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.30195019257469091]}, "780": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.28152836104338874]}, "781": {"P": [[8.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.28134576477962281]}, "782": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.28116540732403483]}, "783": {"P": [[8.0, 0.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.28098728160013958]}, "784": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.28081138052345822]}, "785": {"P": [[9.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.31978144117260332]}, "786": {"P": [[10.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 8.0]], "dev": [0.33746907197521192]}, "787": {"P": [[8.0, 0.0, -1.0], [-1.0, 10.0, 1.0], [-2.0, -1.0, 10.0]], "dev": [0.35424852686710451]}, "788": {"P": [[9.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.30032354550837465]}, "789": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.27996499634707495]}, "790": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.23427749096557485]}, "791": {"P": [[9.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.23412788271262694]}, "792": {"P": [[8.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.23398078945305784]}, "793": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.25758790602417103]}, "794": {"P": [[9.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.29933260930229516]}, "795": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.31805347792531807]}, "796": {"P": [[8.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.33570486395024501]}, "797": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 8.0]], "dev": [0.29886463475805458]}, "798": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.27857836813848086]}, "799": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.23302088893252401]}, "800": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.17615759448618637]}, "801": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.1760474229073451]}, "802": {"P": [[9.0, -1.0, -1.0], [0.0, 9.0, 1.0], [-1.0, 0.0, 10.0]], "dev": [0.23264642832312624]}, "803": {"P": [[8.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.27788246646051229]}, "804": {"P": [[8.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.31666342228945821]}, "805": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [-2.0, 1.0, 9.0]], "dev": [0.33427499946957268]}, "806": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.31637525706294367]}, "807": {"P": [[8.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.27736325492993968]}, "808": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.23196279804249464]}, "809": {"P": [[9.0, 0.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.20552377840003597]}, "810": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.087617654707785361]}, "811": {"P": [[9.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.20533969361826904]}, "812": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.25516061215838415]}, "813": {"P": [[9.0, -2.0, -1.0], [0.0, 10.0, -1.0], [1.0, -1.0, 9.0]], "dev": [0.31542482172358327]}, "814": {"P": [[8.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.315296341464611]}, "815": {"P": [[8.0, 0.0, -1.0], [-1.0, 10.0, 2.0], [0.0, -1.0, 10.0]], "dev": [0.33285592962987465]}, "816": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.27631439746280606]}, "817": {"P": [[10.0, -1.0, -1.0], [0.0, 8.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.29619797205492454]}, "818": {"P": [[10.0, -1.0, -1.0], [1.0, 9.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.23101264805992217]}, "819": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.17458875313402764]}, "820": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.17453617416636977]}, "821": {"P": [[10.0, -1.0, 0.0], [0.0, 9.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.23077268338689055]}, "822": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.27570491330105579]}, "823": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [2.0, 0.0, 9.0]], "dev": [0.31422044346799682]}, "824": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.33172648078485689]}, "825": {"P": [[10.0, -1.0, -1.0], [1.0, 8.0, 0.0], [2.0, 1.0, 10.0]], "dev": [0.34832908927875733]}, "826": {"P": [[9.0, -2.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.29524556386006223]}, "827": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.25379684806527908]}, "828": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.23029167061284864]}, "829": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.2302318444197213]}, "830": {"P": [[9.0, -2.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.25357999766240363]}, "831": {"P": [[9.0, -1.0, -2.0], [0.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.29478014130655328]}, "832": {"P": [[9.0, -2.0, 0.0], [1.0, 9.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.29469241406553243]}, "833": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [2.0, 1.0, 9.0]], "dev": [0.33073229911364427]}, "834": {"P": [[9.0, -2.0, -1.0], [0.0, 10.0, -1.0], [2.0, 0.0, 9.0]], "dev": [0.3472788566767136]}, "835": {"P": [[9.0, -2.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 9.0]], "dev": [0.31300512957154819]}, "836": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 2.0, 9.0]], "dev": [0.31291485582207995]}, "837": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.29428019072664663]}, "838": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.27441742736736435]}, "839": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, 0.0], [2.0, 0.0, 9.0]], "dev": [0.29412750090150741]}, "840": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.31257032576685917]}, "841": {"P": [[10.0, -1.0, -1.0], [0.0, 9.0, -2.0], [1.0, 1.0, 9.0]], "dev": [0.31248830271971556]}, "842": {"P": [[9.0, -1.0, -1.0], [2.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.36227494278740435]}, "843": {"P": [[9.0, -2.0, -1.0], [2.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.36217028210045493]}, "844": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, -1.0], [-1.0, 0.0, 9.0]], "dev": [0.3462592691068862]}, "845": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, -2.0], [0.0, 1.0, 9.0]], "dev": [0.36196532100952805]}, "846": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.3121025276188592]}, "847": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.32944419105073863]}, "848": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, -1.0], [2.0, 1.0, 10.0]], "dev": [0.32936385899958442]}, "849": {"P": [[9.0, -1.0, -2.0], [1.0, 10.0, 1.0], [1.0, -1.0, 9.0]], "dev": [0.3292850518766342]}, "850": {"P": [[10.0, 0.0, 0.0], [0.0, 9.0, -2.0], [0.0, 2.0, 9.0]], "dev": [0.31182273732640464]}, "851": {"P": [[9.0, -2.0, 0.0], [-2.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.34639451834836127]}, "852": {"P": [[9.0, -2.0, -1.0], [2.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.34555154282803524]}, "853": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 8.0]], "dev": [0.34599019304485001]}, "854": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, -2.0], [0.0, -2.0, 10.0]], "dev": [0.34579047057384071]}, "855": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.34531022792225108]}, "856": {"P": [[9.0, -2.0, -1.0], [2.0, 10.0, 0.0], [1.0, 0.0, 9.0]], "dev": [0.34523266381999296]}, "857": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.36085536294908782]}, "858": {"P": [[9.0, -2.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.3285656534926592]}, "859": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.31107139851500509]}, "860": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.31088829663096712]}, "861": {"P": [[8.0, 0.0, -1.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.31070691472722045]}, "862": {"P": [[8.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.31052724787928215]}, "863": {"P": [[8.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.32764129018251553]}, "864": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -2.0], [0.0, -2.0, 10.0]], "dev": [0.3101730396530693]}, "865": {"P": [[10.0, -2.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 9.0]], "dev": [0.3272830328019552]}, "866": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, -2.0, 10.0]], "dev": [0.34351885160207246]}, "867": {"P": [[9.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.32693128238119812]}, "868": {"P": [[9.0, -2.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.30948498720027551]}, "869": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.27150421094273047]}, "870": {"P": [[8.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.27134595470718964]}, "871": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.27118955208645662]}, "872": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.27103499782106938]}, "873": {"P": [[9.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.27088228664396791]}, "874": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.29023244101027351]}, "875": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.32558858436754723]}, "876": {"P": [[8.0, -1.0, -1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.3254279024384707]}, "877": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.30803470359102147]}, "878": {"P": [[10.0, -1.0, 0.0], [0.0, 9.0, -2.0], [-1.0, -1.0, 10.0]], "dev": [0.28962922235870558]}, "879": {"P": [[10.0, -1.0, -1.0], [-1.0, 9.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.24900711503794981]}, "880": {"P": [[10.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 9.0]], "dev": [0.22593727332869162]}, "881": {"P": [[9.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 10.0]], "dev": [0.22580873991859451]}, "882": {"P": [[9.0, 0.0, -1.0], [0.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.22568229351427566]}, "883": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.26945538071963138]}, "884": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, -1.0, 10.0]], "dev": [0.28877564968418284]}, "885": {"P": [[8.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.34037957624256715]}, "886": {"P": [[9.0, -2.0, -1.0], [0.0, 10.0, -2.0], [-1.0, 0.0, 10.0]], "dev": [0.34022938959238891]}, "887": {"P": [[8.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.30657856983464316]}, "888": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.268809185774187]}, "889": {"P": [[10.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.22485510501891931]}, "890": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.16998424528451031]}, "891": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.16988913199119127]}, "892": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.22453130185163164]}, "893": {"P": [[9.0, -1.0, -1.0], [1.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.26820693696172582]}, "894": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.28748698262073535]}, "895": {"P": [[9.0, 0.0, -2.0], [-2.0, 10.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.33894338486524689]}, "896": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.30540389065621926]}, "897": {"P": [[10.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [1.0, -2.0, 10.0]], "dev": [0.30528115110762261]}, "898": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 10.0]], "dev": [0.24676273713096999]}, "899": {"P": [[10.0, -1.0, 0.0], [0.0, 9.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.19842254220143693]}, "900": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.0845945255787552]}, "901": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.1982619586997271]}, "902": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.22358235812936464]}, "903": {"P": [[9.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.26713157795989895]}, "904": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.30446476725355354]}, "905": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -2.0], [1.0, -1.0, 10.0]], "dev": [0.32143364350507331]}, "906": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -2.0, 10.0]], "dev": [0.30424512295079559]}, "907": {"P": [[10.0, -1.0, -1.0], [-1.0, 9.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.26674868314747807]}, "908": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.22310737960791377]}, "909": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.16861534128919914]}, "910": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.16856841386914573]}, "911": {"P": [[10.0, -1.0, -1.0], [1.0, 9.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.22289589111027111]}, "912": {"P": [[9.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.28557469066346591]}, "913": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.26622387311417228]}, "914": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.32044519330360177]}, "915": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.32034240524873031]}, "916": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [-1.0, 1.0, 10.0]], "dev": [0.28521844313427203]}, "917": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 2.0, 10.0]], "dev": [0.28513318650586345]}, "918": {"P": [[9.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.24511069106448188]}, "919": {"P": [[10.0, -1.0, -1.0], [1.0, 9.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.22241504328645531]}, "920": {"P": [[10.0, -1.0, 0.0], [1.0, 9.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.22236331997886644]}, "921": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.24492290310254622]}, "922": {"P": [[9.0, -2.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.28472947805786575]}, "923": {"P": [[9.0, -2.0, -1.0], [1.0, 9.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.33566880630576923]}, "924": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.31947935259802229]}, "925": {"P": [[9.0, -2.0, -1.0], [0.0, 10.0, 1.0], [2.0, -1.0, 10.0]], "dev": [0.35082348445068551]}, "926": {"P": [[9.0, -1.0, -1.0], [0.0, 10.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.30237096525029794]}, "927": {"P": [[10.0, -2.0, -1.0], [1.0, 9.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.30229224862632809]}, "928": {"P": [[9.0, 0.0, -1.0], [0.0, 10.0, -2.0], [1.0, 1.0, 10.0]], "dev": [0.28429401479326089]}, "929": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.26510659862830227]}, "930": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, 0.0], [2.0, 0.0, 10.0]], "dev": [0.28416055823529029]}, "931": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.30199125700615392]}, "932": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.30191945378371671]}, "933": {"P": [[9.0, -2.0, -1.0], [0.0, 10.0, -1.0], [2.0, 1.0, 10.0]], "dev": [0.35004627481536987]}, "934": {"P": [[10.0, -2.0, -1.0], [2.0, 10.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.33466783408354972]}, "935": {"P": [[9.0, 0.0, -2.0], [0.0, 11.0, 0.0], [2.0, 0.0, 9.0]], "dev": [0.33458447066257785]}, "936": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.3016458757021776]}, "937": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 2.0, 10.0]], "dev": [0.31842484085586042]}, "938": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, 1.0], [2.0, -1.0, 10.0]], "dev": [0.31835288445303123]}, "939": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -2.0], [1.0, 1.0, 10.0]], "dev": [0.31828221397315143]}, "940": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.30139388368382292]}, "941": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, 0.0], [2.0, -1.0, 10.0]], "dev": [0.3493473160681369]}, "942": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.33403578634257619]}, "943": {"P": [[9.0, 0.0, -1.0], [0.0, 11.0, -2.0], [-1.0, -2.0, 10.0]], "dev": [0.35490707547246997]}, "944": {"P": [[10.0, -2.0, -1.0], [2.0, 10.0, -1.0], [0.0, 1.0, 9.0]], "dev": [0.34910494949246557]}, "945": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 8.0]], "dev": [0.33958030796903377]}, "946": {"P": [[8.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.32375394424703846]}, "947": {"P": [[8.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.33922478534511624]}, "948": {"P": [[8.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.32340659400954352]}, "949": {"P": [[11.0, 0.0, -1.0], [0.0, 8.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.32323498855385807]}, "950": {"P": [[9.0, 0.0, -2.0], [0.0, 10.0, 0.0], [-2.0, 0.0, 11.0]], "dev": [0.32306475810758301]}, "951": {"P": [[9.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.32289589909768535]}, "952": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.32272840795229796]}, "953": {"P": [[9.0, -1.0, -1.0], [-2.0, 11.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.338190133732092]}, "954": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.32239751497349445]}, "955": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 9.0]], "dev": [0.33785579534446225]}, "956": {"P": [[9.0, -1.0, -2.0], [-1.0, 11.0, 0.0], [-1.0, -1.0, 10.0]], "dev": [0.32207205062005279]}, "957": {"P": [[11.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 8.0]], "dev": [0.28815311715941594]}, "958": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.28799996470800265]}, "959": {"P": [[9.0, -2.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.30518790260285511]}, "960": {"P": [[8.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.28769804741088612]}, "961": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.30488250094518887]}, "962": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.28740195519591144]}, "963": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.28725608408744957]}, "964": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.32082390913044734]}, "965": {"P": [[8.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.32067387573932943]}, "966": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, -1.0], [-2.0, 0.0, 9.0]], "dev": [0.30414320505099873]}, "967": {"P": [[9.0, -2.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.30399946660086352]}, "968": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.24833760546154893]}, "969": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.24820754829305502]}, "970": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.24807909148782717]}, "971": {"P": [[9.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.24795223096301097]}, "972": {"P": [[9.0, 0.0, 0.0], [0.0, 9.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.2478269626260623]}, "973": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.30316557374311753]}, "974": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.30303131376408732]}, "975": {"P": [[8.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.31924544550356165]}, "976": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.28548987809811499]}, "977": {"P": [[9.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.30263655580006799]}, "978": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.24710855816659574]}, "979": {"P": [[10.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 9.0]], "dev": [0.20179494723470751]}, "980": {"P": [[11.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.20169123132737973]}, "981": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.20158937030721083]}, "982": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.24666094246578923]}, "983": {"P": [[9.0, -2.0, 0.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.30188280954077573]}, "984": {"P": [[9.0, -1.0, 0.0], [1.0, 9.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.28452075852510667]}, "985": {"P": [[9.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 0.0, 9.0]], "dev": [0.31794526948953528]}, "986": {"P": [[10.0, -2.0, -1.0], [0.0, 10.0, -2.0], [-1.0, 0.0, 10.0]], "dev": [0.31782216982630584]}, "987": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.26583950012705226]}, "988": {"P": [[9.0, 0.0, -1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.24603583100883927]}, "989": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.20084068558165]}, "990": {"P": [[9.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.14201491886704601]}, "991": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.20067172643576237]}, "992": {"P": [[10.0, -1.0, -1.0], [1.0, 9.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.24564957061742704]}, "993": {"P": [[9.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.26522645254165028]}, "994": {"P": [[9.0, -2.0, -1.0], [0.0, 11.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.31688185080518666]}, "995": {"P": [[9.0, 0.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, -2.0, 10.0]], "dev": [0.31676981804244875]}, "996": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.28323031067821075]}, "997": {"P": [[10.0, -1.0, -2.0], [1.0, 10.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.30030561640341613]}, "998": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.24511521875969361]}, "999": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.17326381751469982]}, "1000": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [1.9229626863835638e-16]}, "1001": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.17314834547649488]}, "1002": {"P": [[10.0, -1.0, 0.0], [0.0, 10.0, -2.0], [1.0, 0.0, 10.0]], "dev": [0.24478860856337351]}, "1003": {"P": [[9.0, -2.0, 0.0], [1.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.29970558360358446]}, "1004": {"P": [[9.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.28247598176375793]}, "1005": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [0.0, 2.0, 9.0]], "dev": [0.31571558006484973]}, "1006": {"P": [[9.0, -1.0, 0.0], [0.0, 10.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.29942226885871176]}, "1007": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.29933028065776174]}, "1008": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.24434243605446243]}, "1009": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, 0.0, 10.0]], "dev": [0.19947046129056881]}, "1010": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.14106970534727539]}, "1011": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.19937170925668596]}, "1012": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.24407374186812136]}, "1013": {"P": [[9.0, -2.0, -1.0], [1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.29880382244593223]}, "1014": {"P": [[9.0, -2.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.29872029067854095]}, "1015": {"P": [[9.0, -1.0, -2.0], [1.0, 10.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.33013193387631073]}, "1016": {"P": [[10.0, -1.0, -2.0], [2.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.31469175541213323]}, "1017": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.29847684213874448]}, "1018": {"P": [[10.0, -2.0, 0.0], [1.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.26320687785356706]}, "1019": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.22247219145377861]}, "1020": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.19901069202206309]}, "1021": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.22238480977240158]}, "1022": {"P": [[10.0, -2.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.26296104028485656]}, "1023": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.29802177960042248]}, "1024": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, -1.0], [2.0, 1.0, 9.0]], "dev": [0.31403399152543648]}, "1025": {"P": [[10.0, -1.0, -2.0], [2.0, 10.0, 1.0], [1.0, 1.0, 10.0]], "dev": [0.34386383690228806]}, "1026": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -2.0], [0.0, 2.0, 11.0]], "dev": [0.31388073517174553]}, "1027": {"P": [[9.0, -1.0, -2.0], [0.0, 10.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.3576952950568128]}, "1028": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [2.0, -1.0, 10.0]], "dev": [0.2807000842747171]}, "1029": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, -2.0, 10.0]], "dev": [0.28064141757356675]}, "1030": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.24314113016288746]}, "1031": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 0.0], [1.0, -1.0, 10.0]], "dev": [0.28052765980331662]}, "1032": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.28047256109202756]}, "1033": {"P": [[11.0, -1.0, 0.0], [-1.0, 8.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.35416714772786806]}, "1034": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.31331162648744448]}, "1035": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 2.0], [-1.0, -1.0, 10.0]], "dev": [0.34302944101139188]}, "1036": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 1.0], [2.0, 0.0, 10.0]], "dev": [0.32840342525696659]}, "1037": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -2.0], [0.0, 2.0, 11.0]], "dev": [0.34287472227480442]}, "1038": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.31305304063023681]}, "1039": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.29701050149456232]}, "1040": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.2800739917184728]}, "1041": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.29690425610253279]}, "1042": {"P": [[10.0, 0.0, -1.0], [-1.0, 10.0, -2.0], [0.0, 2.0, 10.0]], "dev": [0.31281147765485767]}, "1043": {"P": [[9.0, -2.0, 0.0], [2.0, 10.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.34243444024885661]}, "1044": {"P": [[8.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.32355359059400957]}, "1045": {"P": [[8.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.32339576697503131]}, "1046": {"P": [[10.0, -2.0, 0.0], [-2.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.32323907882038655]}, "1047": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.32308352346789132]}, "1048": {"P": [[8.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.32292909825612232]}, "1049": {"P": [[10.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.32277580052442367]}, "1050": {"P": [[10.0, -2.0, -1.0], [2.0, 10.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.31237855735050907]}, "1051": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.32247257686249647]}, "1052": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.3273940817712791]}, "1053": {"P": [[9.0, 0.0, 0.0], [0.0, 11.0, -2.0], [0.0, -2.0, 11.0]], "dev": [0.32217383121249837]}, "1054": {"P": [[11.0, -2.0, 0.0], [-1.0, 9.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.32202613099870686]}, "1055": {"P": [[10.0, -2.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.30652419656114732]}, "1056": {"P": [[8.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.29021764086019702]}, "1057": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.30623968911616889]}, "1058": {"P": [[9.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.28994065880980541]}, "1059": {"P": [[9.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.28980395839423539]}, "1060": {"P": [[10.0, -2.0, 0.0], [-2.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.28966844800001845]}, "1061": {"P": [[9.0, 0.0, -1.0], [0.0, 10.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.28953412483641411]}, "1062": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 2.0, 11.0]], "dev": [0.30554842380231845]}, "1063": {"P": [[9.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -2.0, 10.0]], "dev": [0.33537921642878671]}, "1064": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 8.0]], "dev": [0.32060982535275512]}, "1065": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.30514727244369505]}, "1066": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.27178837383461812]}, "1067": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.25342558466511406]}, "1068": {"P": [[9.0, 0.0, -1.0], [0.0, 12.0, 0.0], [-1.0, 0.0, 10.0]], "dev": [0.25330551253628963]}, "1069": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 9.0]], "dev": [0.25318673676442993]}, "1070": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.25306925434671784]}, "1071": {"P": [[9.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.25295306227459424]}, "1072": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [-2.0, 1.0, 11.0]], "dev": [0.28813412761775326]}, "1073": {"P": [[9.0, 0.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 2.0, 11.0]], "dev": [0.30412679293269573]}, "1074": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.31930202254896678]}, "1075": {"P": [[9.0, -2.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.31917710812873146]}, "1076": {"P": [[10.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.27060079402837606]}, "1077": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.25228283790793127]}, "1078": {"P": [[9.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.21111443465476437]}, "1079": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.21101568876729584]}, "1080": {"P": [[9.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.21091841570116804]}, "1081": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.23225025410540834]}, "1082": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [-2.0, 0.0, 11.0]], "dev": [0.26994605808122463]}, "1083": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.28687371797921618]}, "1084": {"P": [[9.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.30283853673128169]}, "1085": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, -2.0], [-1.0, 0.0, 10.0]], "dev": [0.31798560757014399]}, "1086": {"P": [[11.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.26953326573667341]}, "1087": {"P": [[11.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.25126699960470233]}, "1088": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.210192842009883]}, "1089": {"P": [[10.0, -1.0, 0.0], [-1.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.15890483564389218]}, "1090": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.15883181550030281]}, "1091": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.20994463614845918]}, "1092": {"P": [[9.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.25080571192923884]}, "1093": {"P": [[10.0, -1.0, -1.0], [-2.0, 11.0, 0.0], [1.0, 1.0, 10.0]], "dev": [0.28584586906619436]}, "1094": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -2.0, 11.0]], "dev": [0.31700136883460772]}, "1095": {"P": [[10.0, -2.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.30168003813021804]}, "1096": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.28555898425395221]}, "1097": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, 0.0], [0.0, 1.0, 9.0]], "dev": [0.25037499409627328]}, "1098": {"P": [[9.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.20941540991153523]}, "1099": {"P": [[11.0, 0.0, -1.0], [-1.0, 10.0, 0.0], [0.0, -1.0, 10.0]], "dev": [0.18556795124090489]}, "1100": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.079116155469790977]}, "1101": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.18544552202324199]}, "1102": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.23046522693606761]}, "1103": {"P": [[10.0, -1.0, -2.0], [1.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.28492746202508112]}, "1104": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 9.0]], "dev": [0.28484153168496978]}, "1105": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.30073641706864035]}, "1106": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.30064768447731433]}, "1107": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.24960369752464187]}, "1108": {"P": [[9.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.26759278648586382]}, "1109": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.20872245420112248]}, "1110": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.1577541889611998]}, "1111": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.15771908536024834]}, "1112": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.20856233893096893]}, "1113": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.24919754432574101]}, "1114": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.28404024127269084]}, "1115": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, -2.0], [1.0, 0.0, 10.0]], "dev": [0.31501845168762382]}, "1116": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 10.0]], "dev": [0.29981561239783261]}, "1117": {"P": [[9.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.31485186525964776]}, "1118": {"P": [[10.0, -2.0, 0.0], [1.0, 11.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.26688958579082572]}, "1119": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.22943416498599745]}, "1120": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.20819463498111215]}, "1121": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.20815466423241982]}, "1122": {"P": [[10.0, -2.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.2292892569023855]}, "1123": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.26657851578949926]}, "1124": {"P": [[10.0, -2.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.26651949612947173]}, "1125": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [2.0, 1.0, 10.0]], "dev": [0.29915110430266628]}, "1126": {"P": [[11.0, 0.0, -1.0], [-2.0, 10.0, -1.0], [0.0, 2.0, 10.0]], "dev": [0.31414877563660204]}, "1127": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, 2.0], [1.0, -1.0, 10.0]], "dev": [0.32844660703446543]}, "1128": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, -1.0], [0.0, 2.0, 10.0]], "dev": [0.28309167061092366]}, "1129": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.28303147225215358]}, "1130": {"P": [[10.0, 0.0, -2.0], [0.0, 10.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.2661874856789192]}, "1131": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.24822605800588896]}, "1132": {"P": [[10.0, -1.0, -2.0], [1.0, 11.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.26608516513349123]}, "1133": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, -2.0], [1.0, 1.0, 10.0]], "dev": [0.28280057514973067]}, "1134": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.28274531082044857]}, "1135": {"P": [[10.0, -1.0, -2.0], [1.0, 10.0, 0.0], [1.0, -2.0, 11.0]], "dev": [0.32784984683143714]}, "1136": {"P": [[10.0, -1.0, -1.0], [0.0, 10.0, 2.0], [2.0, -1.0, 11.0]], "dev": [0.32777919609085598]}, "1137": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.34142805215278538]}, "1138": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.31332733520145728]}, "1139": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -2.0], [0.0, 1.0, 10.0]], "dev": [0.32757244444971523]}, "1140": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, -2.0], [0.0, 2.0, 11.0]], "dev": [0.28243417086693517]}, "1141": {"P": [[10.0, -1.0, -1.0], [2.0, 10.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.29816081127160704]}, "1142": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -2.0], [1.0, 1.0, 11.0]], "dev": [0.29810684068619508]}, "1143": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.29805378619621575]}, "1144": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.28224600971295394]}, "1145": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -2.0], [1.0, 2.0, 10.0]], "dev": [0.34085919391024294]}, "1146": {"P": [[10.0, -2.0, -1.0], [2.0, 10.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.31285139611705992]}, "1147": {"P": [[9.0, -2.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.35469431811194491]}, "1148": {"P": [[10.0, -2.0, -1.0], [2.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.32699842785554872]}, "1149": {"P": [[11.0, -1.0, -2.0], [0.0, 10.0, 1.0], [2.0, -1.0, 10.0]], "dev": [0.32693887726930015]}, "1150": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [0.0, 2.0, 10.0]], "dev": [0.31263444702012411]}, "1151": {"P": [[10.0, -1.0, -2.0], [1.0, 10.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.3125823721123091]}, "1152": {"P": [[10.0, 0.0, -2.0], [0.0, 12.0, 0.0], [-2.0, 0.0, 10.0]], "dev": [0.31302674605959663]}, "1153": {"P": [[10.0, -2.0, -1.0], [2.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.32670902089773141]}, "1154": {"P": [[10.0, -2.0, -1.0], [2.0, 10.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.31243129695513394]}, "1155": {"P": [[10.0, -1.0, -2.0], [-1.0, 11.0, 0.0], [-2.0, 0.0, 11.0]], "dev": [0.31261352835276623]}, "1156": {"P": [[11.0, -2.0, -1.0], [-2.0, 10.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.31247769153296079]}, "1157": {"P": [[10.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.32654492378227973]}, "1158": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.31220885936238646]}, "1159": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, -2.0], [0.0, -2.0, 11.0]], "dev": [0.31207585996036152]}, "1160": {"P": [[10.0, -2.0, 0.0], [-2.0, 12.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.31194380231316915]}, "1161": {"P": [[9.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.3118126843954353]}, "1162": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.32587343721626855]}, "1163": {"P": [[9.0, -1.0, -2.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.32574186131939675]}, "1164": {"P": [[11.0, -1.0, -1.0], [-2.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.29656087354654093]}, "1165": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.28078858099753135]}, "1166": {"P": [[10.0, -2.0, 0.0], [-2.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.28066678803924372]}, "1167": {"P": [[9.0, 0.0, -1.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.28054600132751789]}, "1168": {"P": [[9.0, 0.0, -1.0], [0.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.28042621873253609]}, "1169": {"P": [[12.0, -1.0, -1.0], [-1.0, 9.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.2959452982832918]}, "1170": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.28018965736523421]}, "1171": {"P": [[11.0, -2.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.29570578474669834]}, "1172": {"P": [[10.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [1.0, -1.0, 10.0]], "dev": [0.31043183031807087]}, "1173": {"P": [[9.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.3244754142658911]}, "1174": {"P": [[10.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.29535365884147979]}, "1175": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.27961567658651221]}, "1176": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.24529833396361619]}, "1177": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.24519276654099439]}, "1178": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.24508829426061923]}, "1179": {"P": [[9.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.24498491482105778]}, "1180": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.24488262591606824]}, "1181": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.26242743715560662]}, "1182": {"P": [[12.0, -1.0, -1.0], [-2.0, 10.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.29445617375714161]}, "1183": {"P": [[9.0, 0.0, -1.0], [0.0, 13.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.3091617442835819]}, "1184": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.29424114805187052]}, "1185": {"P": [[12.0, 0.0, -1.0], [0.0, 9.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.27854147288245212]}, "1186": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -2.0], [-1.0, -1.0, 10.0]], "dev": [0.26192261800949806]}, "1187": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.22519351677519228]}, "1188": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.20434377120525682]}, "1189": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.20425764738469121]}, "1190": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.20417276988660724]}, "1191": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.24382875894298878]}, "1192": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.26135024127902712]}, "1193": {"P": [[10.0, -1.0, -2.0], [1.0, 10.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.30810097706936751]}, "1194": {"P": [[9.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.3079997351878031]}, "1195": {"P": [[11.0, -2.0, -1.0], [0.0, 11.0, -2.0], [-1.0, 0.0, 10.0]], "dev": [0.30789936429897358]}, "1196": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.27747128095661228]}, "1197": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 9.0]], "dev": [0.243308308953609]}, "1198": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.20353830072324072]}, "1199": {"P": [[10.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.153873288214397]}, "1200": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.15380934134473986]}, "1201": {"P": [[11.0, -1.0, -1.0], [0.0, 10.0, 1.0], [-1.0, 0.0, 11.0]], "dev": [0.20332061722388486]}, "1202": {"P": [[12.0, -1.0, 0.0], [-1.0, 10.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.24290344881213435]}, "1203": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.26039398852614931]}, "1204": {"P": [[10.0, 0.0, -2.0], [-2.0, 11.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.30703488851591387]}, "1205": {"P": [[9.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.32100631072232882]}, "1206": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.27659733261811315]}, "1207": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.27651503338343136]}, "1208": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 11.0]], "dev": [0.22353192333724761]}, "1209": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.17975999477206134]}, "1210": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.076642547625964411]}, "1211": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.17965179489257871]}, "1212": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.20261536142733566]}, "1213": {"P": [[10.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.24210351943793745]}, "1214": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.27596451359530189]}, "1215": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, -1.0], [1.0, -2.0, 11.0]], "dev": [0.29137169764762633]}, "1216": {"P": [[10.0, -2.0, 0.0], [0.0, 11.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.30598920942884389]}, "1217": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -2.0, 11.0]], "dev": [0.27574215717585571]}, "1218": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.24178049078667616]}, "1219": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.20224134271657995]}, "1220": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.15285601484633693]}, "1221": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.15282434996430896]}, "1222": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 10.0]], "dev": [0.20209855166938437]}, "1223": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.25895531980852243]}, "1224": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.24142573758216393]}, "1225": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.29062567545462958]}, "1226": {"P": [[10.0, -2.0, 0.0], [1.0, 10.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.29055573118758765]}, "1227": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.29048662547575677]}, "1228": {"P": [[11.0, -2.0, 0.0], [1.0, 11.0, -1.0], [-1.0, 0.0, 10.0]], "dev": [0.25865440517642763]}, "1229": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.25859698212482696]}, "1230": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -2.0], [0.0, 1.0, 11.0]], "dev": [0.22230917036133482]}, "1231": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.2017321798049409]}, "1232": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.20169714784073969]}, "1233": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.22218197868661199]}, "1234": {"P": [[10.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.25832353817522702]}, "1235": {"P": [[10.0, -2.0, -1.0], [1.0, 10.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.30457566393548618]}, "1236": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.28990206511900629]}, "1237": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.31837707354986339]}, "1238": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, 1.0], [2.0, -1.0, 11.0]], "dev": [0.31830775201703077]}, "1239": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.2743540972947825]}, "1240": {"P": [[11.0, -2.0, -1.0], [1.0, 10.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.27430092818809237]}, "1241": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.25797857156254478]}, "1242": {"P": [[11.0, -1.0, -1.0], [1.0, 10.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.24057151298052196]}, "1243": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.2578880232600731]}, "1244": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, 0.0], [1.0, -1.0, 11.0]], "dev": [0.27409668419345667]}, "1245": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.27404772032338964]}, "1246": {"P": [[10.0, -2.0, -1.0], [0.0, 11.0, -1.0], [2.0, 1.0, 11.0]], "dev": [0.31778025918040659]}, "1247": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -2.0], [1.0, 0.0, 11.0]], "dev": [0.3177176790709258]}, "1248": {"P": [[10.0, -2.0, 0.0], [2.0, 10.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.30377341633642652]}, "1249": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, 2.0], [1.0, -2.0, 11.0]], "dev": [0.33089084923360923]}, "1250": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -2.0], [0.0, 2.0, 11.0]], "dev": [0.27381537396625527]}, "1251": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [1.0, -1.0, 10.0]], "dev": [0.28907424020926786]}, "1252": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, 1.0], [2.0, -1.0, 11.0]], "dev": [0.28902542194439867]}, "1253": {"P": [[10.0, -1.0, -1.0], [1.0, 11.0, 1.0], [1.0, -2.0, 11.0]], "dev": [0.28897738819234964]}, "1254": {"P": [[10.0, -2.0, 0.0], [2.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.27364433278040512]}, "1255": {"P": [[11.0, -1.0, -2.0], [0.0, 11.0, -1.0], [1.0, 2.0, 10.0]], "dev": [0.31724350483848035]}, "1256": {"P": [[11.0, 0.0, -2.0], [-1.0, 11.0, 0.0], [2.0, 1.0, 10.0]], "dev": [0.30334410604305478]}, "1257": {"P": [[10.0, -2.0, -1.0], [2.0, 11.0, 1.0], [-1.0, -1.0, 11.0]], "dev": [0.33039154882845612]}, "1258": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [2.0, 0.0, 11.0]], "dev": [0.31707769589412144]}, "1259": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, 2.0], [1.0, -2.0, 11.0]], "dev": [0.31702386655897985]}, "1260": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, 2.0], [1.0, -1.0, 11.0]], "dev": [0.3302159002682602]}, "1261": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [0.0, 2.0, 11.0]], "dev": [0.30310014162569981]}, "1262": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, -2.0], [-1.0, 2.0, 10.0]], "dev": [0.31686667331506396]}, "1263": {"P": [[10.0, -1.0, -2.0], [1.0, 11.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.31681570093263633]}, "1264": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, 0.0], [2.0, 0.0, 10.0]], "dev": [0.30296262999178575]}, "1265": {"P": [[10.0, -2.0, -1.0], [2.0, 11.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.30291825889376195]}, "1266": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, -1.0], [2.0, 0.0, 10.0]], "dev": [0.31666703379846217]}, "1267": {"P": [[11.0, -1.0, -2.0], [0.0, 11.0, -1.0], [2.0, 1.0, 10.0]], "dev": [0.3166188885591435]}, "1268": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, -2.0], [0.0, -2.0, 12.0]], "dev": [0.32129177125082958]}, "1269": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.32116769835556475]}, "1270": {"P": [[10.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.32104439510450256]}, "1271": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.30735694028192251]}, "1272": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.29304697644194272]}, "1273": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, -1.0], [-1.0, -2.0, 12.0]], "dev": [0.30711798198148643]}, "1274": {"P": [[11.0, -1.0, 0.0], [-1.0, 9.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.29281332132116655]}, "1275": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.29269772077724204]}, "1276": {"P": [[9.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.29258293613673381]}, "1277": {"P": [[10.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.29246896581817738]}, "1278": {"P": [[9.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.29235580823948065]}, "1279": {"P": [[11.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.30642000082062271]}, "1280": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -2.0], [0.0, -2.0, 12.0]], "dev": [0.29213192497020946]}, "1281": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.30619359710426508]}, "1282": {"P": [[11.0, -1.0, -2.0], [1.0, 12.0, 0.0], [-2.0, 0.0, 10.0]], "dev": [0.31962423685053182]}, "1283": {"P": [[10.0, -2.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.2918021560277605]}, "1284": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.26106596739895838]}, "1285": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.26096266733633783]}, "1286": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.27659395595627367]}, "1287": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.26075869218757319]}, "1288": {"P": [[10.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.27638739889209146]}, "1289": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 10.0]], "dev": [0.26055820580289241]}, "1290": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.26045926668708258]}, "1291": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, 2.0, 11.0]], "dev": [0.29095799809971862]}, "1292": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.3050035951943767]}, "1293": {"P": [[9.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.29075489569369251]}, "1294": {"P": [[10.0, -1.0, -1.0], [0.0, 12.0, -1.0], [-2.0, 0.0, 11.0]], "dev": [0.27578758537497305]}, "1295": {"P": [[9.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.27569049516866034]}, "1296": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.22519855634844332]}, "1297": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.22511054820997628]}, "1298": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.22502350638065374]}, "1299": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.22493742901550529]}, "1300": {"P": [[10.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.22485231426431712]}, "1301": {"P": [[10.0, 0.0, -1.0], [-1.0, 11.0, 2.0], [0.0, 1.0, 12.0]], "dev": [0.27512507676084885]}, "1302": {"P": [[10.0, -1.0, 0.0], [0.0, 12.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.27503367879932378]}, "1303": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.28978636974022065]}, "1304": {"P": [[10.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.28969378622650921]}, "1305": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.2590782858663121]}, "1306": {"P": [[10.0, -2.0, -1.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.27467613629799648]}, "1307": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.22428330769142546]}, "1308": {"P": [[12.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.1831560164923495]}, "1309": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.18308558237185493]}, "1310": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.1830162790060062]}, "1311": {"P": [[10.0, 0.0, -1.0], [-1.0, 11.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.22397905020231701]}, "1312": {"P": [[10.0, -1.0, 0.0], [0.0, 12.0, -1.0], [2.0, -1.0, 11.0]], "dev": [0.27416378864509305]}, "1313": {"P": [[10.0, -1.0, 0.0], [1.0, 10.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.25841955348727885]}, "1314": {"P": [[10.0, -1.0, -1.0], [1.0, 10.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.28881002757364216]}, "1315": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.31626781640326568]}, "1316": {"P": [[11.0, -2.0, -1.0], [0.0, 11.0, -2.0], [-1.0, 0.0, 11.0]], "dev": [0.28864237308879692]}, "1317": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.24144958054610738]}, "1318": {"P": [[10.0, 0.0, -1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.22348271590323868]}, "1319": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.18244307248966651]}, "1320": {"P": [[11.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.12901025630873525]}, "1321": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.18232794570516878]}, "1322": {"P": [[10.0, 0.0, -1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.22321952192204961]}, "1323": {"P": [[10.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.24103185865001653]}, "1324": {"P": [[11.0, 0.0, -2.0], [-2.0, 11.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.28800165287307405]}, "1325": {"P": [[12.0, -1.0, -1.0], [-1.0, 10.0, 2.0], [2.0, 0.0, 11.0]], "dev": [0.32828178143460962]}, "1326": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.28784888323665725]}, "1327": {"P": [[12.0, -1.0, -1.0], [1.0, 10.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.25739370806878381]}, "1328": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.27293559680065271]}, "1329": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.22279422566991822]}, "1330": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.15749921581758533]}, "1331": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.0]}, "1332": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.15742034729624704]}, "1333": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -2.0], [1.0, 0.0, 11.0]], "dev": [0.22257114906967473]}, "1334": {"P": [[11.0, -2.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.27252577365275926]}, "1335": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 10.0]], "dev": [0.25687850946146146]}, "1336": {"P": [[10.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.28712885710428648]}, "1337": {"P": [[10.0, -2.0, -1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.30107082376808664]}, "1338": {"P": [[10.0, -1.0, 0.0], [0.0, 11.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.27226764667226155]}, "1339": {"P": [[10.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.27220498561013695]}, "1340": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.22221521469660935]}, "1341": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.18141645707672921]}, "1342": {"P": [[11.0, 0.0, -1.0], [0.0, 11.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.12830042206215139]}, "1343": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.18134886172313269]}, "1344": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.22203128650791451]}, "1345": {"P": [[12.0, -1.0, 0.0], [0.0, 10.0, -1.0], [1.0, 2.0, 11.0]], "dev": [0.27184460367118696]}, "1346": {"P": [[10.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.27178712173468783]}, "1347": {"P": [[10.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.30039169581863995]}, "1348": {"P": [[10.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.30032752147775471]}, "1349": {"P": [[10.0, -1.0, -1.0], [0.0, 11.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.2863000177222389]}, "1350": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.27156450866646487]}, "1351": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.23948414215814284]}, "1352": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.20242175530124795]}, "1353": {"P": [[11.0, 0.0, -1.0], [0.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.18107352096937487]}, "1354": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.20236183253586379]}, "1355": {"P": [[11.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.2393155184249145]}, "1356": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.27125234794996705]}, "1357": {"P": [[10.0, -1.0, -1.0], [1.0, 12.0, -1.0], [2.0, 0.0, 11.0]], "dev": [0.28584880259245038]}, "1358": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.31303062725585135]}, "1359": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.31296980399675356]}, "1360": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -2.0], [0.0, 2.0, 12.0]], "dev": [0.28569094355133423]}, "1361": {"P": [[10.0, -2.0, -1.0], [1.0, 12.0, -2.0], [0.0, 1.0, 11.0]], "dev": [0.32560363381140262]}, "1362": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.25550729958061136]}, "1363": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.25546710630159303]}, "1364": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.2213188700273423]}, "1365": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -1.0], [1.0, 2.0, 11.0]], "dev": [0.25538893583450967]}, "1366": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.25535095505633504]}, "1367": {"P": [[11.0, -1.0, -2.0], [0.0, 12.0, -1.0], [1.0, 2.0, 10.0]], "dev": [0.32523637298340463]}, "1368": {"P": [[10.0, -2.0, 0.0], [2.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.28529979850462583]}, "1369": {"P": [[11.0, -1.0, -2.0], [2.0, 11.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.31239626649444585]}, "1370": {"P": [[10.0, -2.0, -1.0], [2.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.31234235017312506]}, "1371": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.29903432899512]}, "1372": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [1.0, 0.0, 10.0]], "dev": [0.31223637357901712]}, "1373": {"P": [[11.0, -1.0, -2.0], [0.0, 11.0, 1.0], [2.0, 0.0, 11.0]], "dev": [0.28507707677091809]}, "1374": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.27046913362573932]}, "1375": {"P": [[11.0, -2.0, 0.0], [2.0, 11.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.25504193829211536]}, "1376": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.27039600916999329]}, "1377": {"P": [[11.0, -2.0, -1.0], [2.0, 11.0, 0.0], [0.0, -1.0, 11.0]], "dev": [0.28491077962674449]}, "1378": {"P": [[10.0, -2.0, 0.0], [2.0, 11.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.31193318777681667]}, "1379": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -2.0], [2.0, 1.0, 11.0]], "dev": [0.29866464362828793]}, "1380": {"P": [[10.0, -1.0, -2.0], [-1.0, 12.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.32118237781182912]}, "1381": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.32106460064078213]}, "1382": {"P": [[12.0, -2.0, -1.0], [-2.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.32094747627020237]}, "1383": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [2.0, -1.0, 11.0]], "dev": [0.31169725471001808]}, "1384": {"P": [[11.0, -2.0, 0.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.29845399825185803]}, "1385": {"P": [[10.0, -1.0, -2.0], [0.0, 13.0, 1.0], [-1.0, 2.0, 11.0]], "dev": [0.35627102418816842]}, "1386": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.28457466368908685]}, "1387": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.34455614923132616]}, "1388": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, -2.0], [1.0, 2.0, 11.0]], "dev": [0.29829663098782749]}, "1389": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -2.0], [1.0, 1.0, 11.0]], "dev": [0.31143393159860255]}, "1390": {"P": [[9.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.32003384274167695]}, "1391": {"P": [[9.0, 0.0, -1.0], [0.0, 13.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.29376912985452258]}, "1392": {"P": [[9.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.29366170376751105]}, "1393": {"P": [[11.0, -2.0, 0.0], [-2.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.29355496145396698]}, "1394": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.29344890170742655]}, "1395": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.29334352332099711]}, "1396": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.29323882508736226]}, "1397": {"P": [[12.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.29313480579878537]}, "1398": {"P": [[10.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.2930314642471159]}, "1399": {"P": [[12.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 1.0, 11.0]], "dev": [0.30627067121430707]}, "1400": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -2.0], [0.0, -2.0, 12.0]], "dev": [0.29282680951985351]}, "1401": {"P": [[11.0, -1.0, -2.0], [-1.0, 11.0, 1.0], [-1.0, 2.0, 12.0]], "dev": [0.31884460132398268]}, "1402": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, -2.0], [-1.0, -1.0, 10.0]], "dev": [0.29262485123226556]}, "1403": {"P": [[11.0, -2.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.27855262536907338]}, "1404": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.26374574363596143]}, "1405": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.27835836320738655]}, "1406": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.26355645986715126]}, "1407": {"P": [[13.0, -1.0, 0.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 10.0]], "dev": [0.26346290626933394]}, "1408": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.263370076492288]}, "1409": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.26327796925651492]}, "1410": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-2.0, 1.0, 12.0]], "dev": [0.27788484546428954]}, "1411": {"P": [[11.0, -2.0, -1.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 10.0]], "dev": [0.30506821684929586]}, "1412": {"P": [[11.0, -2.0, 0.0], [-1.0, 12.0, -2.0], [1.0, -1.0, 11.0]], "dev": [0.30497218705351442]}, "1413": {"P": [[9.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.29156184664865831]}, "1414": {"P": [[10.0, -1.0, -1.0], [-2.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.27751843355147876]}, "1415": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.24718104305298214]}, "1416": {"P": [[12.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.23049104437735821]}, "1417": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.23040880967023306]}, "1418": {"P": [[10.0, 0.0, -1.0], [0.0, 12.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.23032736916322452]}, "1419": {"P": [[10.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.23024672146755762]}, "1420": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.23016686519119686]}, "1421": {"P": [[10.0, -1.0, 0.0], [0.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.26222857300499736]}, "1422": {"P": [[12.0, 0.0, -2.0], [-1.0, 10.0, 0.0], [-1.0, 1.0, 12.0]], "dev": [0.27681834282022161]}, "1423": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -2.0], [0.0, -1.0, 13.0]], "dev": [0.30395762444337132]}, "1424": {"P": [[11.0, 0.0, -2.0], [-2.0, 12.0, 0.0], [-1.0, -1.0, 11.0]], "dev": [0.29057850254789641]}, "1425": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.29049300184072385]}, "1426": {"P": [[11.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.24628694858930367]}, "1427": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.22962991338935262]}, "1428": {"P": [[10.0, 0.0, -1.0], [0.0, 12.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.19215732074137906]}, "1429": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.19208950545227357]}, "1430": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.19202260015334749]}, "1431": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.211476122615228]}, "1432": {"P": [[11.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.24583692137515875]}, "1433": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.26128080722173586]}, "1434": {"P": [[13.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [0.0, 1.0, 10.0]], "dev": [0.27584883552711387]}, "1435": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.30293685065744258]}, "1436": {"P": [[10.0, -1.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.2895947143372869]}, "1437": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.24548193182809627]}, "1438": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.22886317894306946]}, "1439": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.19146113787856023]}, "1440": {"P": [[12.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 10.0]], "dev": [0.14474552847622887]}, "1441": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.14469522288361197]}, "1442": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.19129013112820423]}, "1443": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.22854535356280664]}, "1444": {"P": [[11.0, -1.0, -1.0], [1.0, 10.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.26049937577933413]}, "1445": {"P": [[11.0, -2.0, -1.0], [0.0, 11.0, 2.0], [-1.0, 0.0, 12.0]], "dev": [0.28891655680967948]}, "1446": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.28884431909787817]}, "1447": {"P": [[11.0, -2.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.27490546805039739]}, "1448": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.26023557983609574]}, "1449": {"P": [[10.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.22818893037390089]}, "1450": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.19087309666955526]}, "1451": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.16915043023362908]}, "1452": {"P": [[11.0, 0.0, 0.0], [0.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.072120031485339381]}, "1453": {"P": [[11.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.16906586645640098]}, "1454": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.21012510664930231]}, "1455": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.25979969264776115]}, "1456": {"P": [[10.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.25974007767380963]}, "1457": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.30129193673215049]}, "1458": {"P": [[10.0, 0.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.27419208937559308]}, "1459": {"P": [[10.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 2.0, 12.0]], "dev": [0.2741310302667796]}, "1460": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.22760521488870128]}, "1461": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-2.0, 1.0, 11.0]], "dev": [0.24402588603407768]}, "1462": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.19035228443361424]}, "1463": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.14387661173741756]}, "1464": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.14385229337583974]}, "1465": {"P": [[11.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.19024141669236999]}, "1466": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.22732427248543216]}, "1467": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.25912755584067143]}, "1468": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -2.0], [1.0, 0.0, 11.0]], "dev": [0.28740931744293263]}, "1469": {"P": [[11.0, 0.0, -2.0], [-2.0, 12.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.300514571143777]}, "1470": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.27350046347217905]}, "1471": {"P": [[10.0, -1.0, -1.0], [0.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.28723609822615881]}, "1472": {"P": [[11.0, -2.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.24349206826408332]}, "1473": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.20932732954148528]}, "1474": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.18995443750031046]}, "1475": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.18992673543172778]}, "1476": {"P": [[11.0, -2.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.20922688484712382]}, "1477": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.24327641568498859]}, "1478": {"P": [[11.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.24323528522552232]}, "1479": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [2.0, 1.0, 11.0]], "dev": [0.27303976331686458]}, "1480": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -2.0], [0.0, 2.0, 12.0]], "dev": [0.28674803954357952]}, "1481": {"P": [[11.0, -2.0, -1.0], [0.0, 11.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.29981921731163214]}, "1482": {"P": [[11.0, -1.0, -2.0], [-1.0, 11.0, 1.0], [2.0, 0.0, 12.0]], "dev": [0.29976490960765789]}, "1483": {"P": [[11.0, -2.0, 0.0], [1.0, 12.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.25837543022086118]}, "1484": {"P": [[11.0, -1.0, -2.0], [0.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.25833377809620561]}, "1485": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [0.0, 1.0, 11.0]], "dev": [0.24296586467545234]}, "1486": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.22657382906399676]}, "1487": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.2428947881740802]}, "1488": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.25817337579688326]}, "1489": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.25813481999756405]}, "1490": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, 0.0], [1.0, -2.0, 12.0]], "dev": [0.29935030490088782]}, "1491": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -1.0], [2.0, 1.0, 11.0]], "dev": [0.29930094393498968]}, "1492": {"P": [[11.0, -2.0, 0.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.29925212677983248]}, "1493": {"P": [[11.0, -1.0, -2.0], [1.0, 11.0, 1.0], [2.0, 1.0, 12.0]], "dev": [0.31173419516441286]}, "1494": {"P": [[12.0, -2.0, -1.0], [2.0, 11.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.28608134655593492]}, "1495": {"P": [[11.0, -1.0, 0.0], [2.0, 12.0, -1.0], [-1.0, 2.0, 11.0]], "dev": [0.29910892654503718]}, "1496": {"P": [[11.0, 0.0, -2.0], [0.0, 11.0, 0.0], [2.0, 0.0, 12.0]], "dev": [0.25788207900023019]}, "1497": {"P": [[11.0, -1.0, -2.0], [1.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.27226351463045873]}, "1498": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.27222595084357215]}, "1499": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.27218896390445552]}, "1500": {"P": [[11.0, -2.0, 0.0], [2.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.25775101079643914]}, "1501": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.31133843657661353]}, "1502": {"P": [[11.0, -2.0, -1.0], [2.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.28574983552398414]}, "1503": {"P": [[11.0, -2.0, -2.0], [0.0, 11.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.33483695878758418]}, "1504": {"P": [[11.0, -1.0, -2.0], [-1.0, 12.0, -1.0], [2.0, 1.0, 11.0]], "dev": [0.31119856826563619]}, "1505": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.2986664617866483]}, "1506": {"P": [[12.0, -2.0, 0.0], [2.0, 11.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.29862513603566559]}, "1507": {"P": [[11.0, -2.0, 0.0], [2.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.28556055068654274]}, "1508": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.28552432992343812]}, "1509": {"P": [[11.0, -2.0, -1.0], [2.0, 11.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.29850431262990829]}, "1510": {"P": [[12.0, -2.0, 0.0], [2.0, 11.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.29846508559409918]}, "1511": {"P": [[11.0, -1.0, -2.0], [1.0, 12.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.28541891823508958]}, "1512": {"P": [[11.0, -1.0, -2.0], [2.0, 12.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.31084805310505054]}, "1513": {"P": [[11.0, -2.0, -1.0], [2.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.29835053063363492]}, "1514": {"P": [[11.0, -2.0, 0.0], [-2.0, 12.0, -2.0], [0.0, -1.0, 12.0]], "dev": [0.32314507358579292]}, "1515": {"P": [[13.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 2.0, 10.0]], "dev": [0.32304143968568783]}, "1516": {"P": [[11.0, -2.0, -1.0], [-2.0, 13.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.31098478297247528]}, "1517": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.31088363578904954]}, "1518": {"P": [[11.0, 0.0, -2.0], [0.0, 11.0, -1.0], [-2.0, -1.0, 13.0]], "dev": [0.31078303977237504]}, "1519": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, -2.0], [1.0, 2.0, 12.0]], "dev": [0.31056781127565597]}, "1520": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.31058349761655474]}, "1521": {"P": [[11.0, -2.0, 0.0], [-2.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.28509403853214482]}, "1522": {"P": [[11.0, -2.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.29796283578299809]}, "1523": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.2849035332635802]}, "1524": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.28480915653224376]}, "1525": {"P": [[11.0, -2.0, 0.0], [-2.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.28471536247876478]}, "1526": {"P": [[10.0, -1.0, 0.0], [-1.0, 11.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.28462215015946457]}, "1527": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.28452951863018733]}, "1528": {"P": [[11.0, 0.0, -1.0], [0.0, 12.0, -2.0], [-1.0, -2.0, 12.0]], "dev": [0.28443746694630667]}, "1529": {"P": [[11.0, -2.0, 0.0], [-2.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.28434599416272738]}, "1530": {"P": [[10.0, 0.0, 0.0], [0.0, 11.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.28425509933389076]}, "1531": {"P": [[11.0, -2.0, -1.0], [-2.0, 13.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.30952503567701162]}, "1532": {"P": [[11.0, -1.0, -2.0], [-2.0, 12.0, 0.0], [-1.0, -1.0, 12.0]], "dev": [0.29702426544925509]}, "1533": {"P": [[10.0, -2.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.29693347650264096]}, "1534": {"P": [[10.0, -1.0, 0.0], [-2.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.27033205834922863]}, "1535": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.25596433286010628]}, "1536": {"P": [[12.0, -2.0, 0.0], [-2.0, 11.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.25588011830415608]}, "1537": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.25579652558808241]}, "1538": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.25571355371097104]}, "1539": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [0.0, 1.0, 10.0]], "dev": [0.26990602585073697]}, "1540": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.25554946846371118]}, "1541": {"P": [[12.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 11.0]], "dev": [0.26973976081604056]}, "1542": {"P": [[11.0, -2.0, 0.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.28320909705836067]}, "1543": {"P": [[10.0, -1.0, -1.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.30844461995136679]}, "1544": {"P": [[10.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.29597116719579569]}, "1545": {"P": [[11.0, -2.0, 0.0], [-1.0, 11.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.26941429857329602]}, "1546": {"P": [[12.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [0.0, -2.0, 12.0]], "dev": [0.25507200837619426]}, "1547": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.22376349860324235]}, "1548": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.2236903495341637]}, "1549": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.22361788231770269]}, "1550": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.22354609586271149]}, "1551": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.22347498907537303]}, "1552": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [1.0, -1.0, 11.0]], "dev": [0.23951951547245498]}, "1553": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [-2.0, 0.0, 13.0]], "dev": [0.26879142583747023]}, "1554": {"P": [[10.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.28224454367051011]}, "1555": {"P": [[12.0, -2.0, -1.0], [-2.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.30744018327903638]}, "1556": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.26856741023212238]}, "1557": {"P": [[10.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.25425370724172369]}, "1558": {"P": [[11.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.23909858138352133]}, "1559": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.20557320248298777]}, "1560": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.18654771972275808]}, "1561": {"P": [[12.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.18648784052181808]}, "1562": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.18642874359603348]}, "1563": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.22267431996638692]}, "1564": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.23870038206108635]}, "1565": {"P": [[11.0, -1.0, -1.0], [-2.0, 13.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.28143051297755078]}, "1566": {"P": [[11.0, -2.0, 0.0], [0.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.28135979121203752]}, "1567": {"P": [[12.0, -1.0, -1.0], [-1.0, 10.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.28128961212901216]}, "1568": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -2.0], [-1.0, 0.0, 12.0]], "dev": [0.281219974768603]}, "1569": {"P": [[11.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.25344384448524598]}, "1570": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.22225162309846827]}, "1571": {"P": [[12.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.18593186497234143]}, "1572": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.14056452218591159]}, "1573": {"P": [[12.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.14051994736783485]}, "1574": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.18578013604996915]}, "1575": {"P": [[11.0, -1.0, -1.0], [1.0, 11.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.22196943697607666]}, "1576": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.23797125847272591]}, "1577": {"P": [[10.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.28061745753036055]}, "1578": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.29340742961986249]}, "1579": {"P": [[10.0, 0.0, -1.0], [-1.0, 13.0, 2.0], [0.0, -1.0, 12.0]], "dev": [0.2933411709228877]}, "1580": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.25277591841078628]}, "1581": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.25271867905458706]}, "1582": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.20430841252948514]}, "1583": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.16431165716606855]}, "1584": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.070058604986121473]}, "1585": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.16423611343412756]}, "1586": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.18524175694276815]}, "1587": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.22135836510142151]}, "1588": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.25233406334591185]}, "1589": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.2664388233167892]}, "1590": {"P": [[11.0, 0.0, -2.0], [-1.0, 13.0, 1.0], [1.0, 1.0, 11.0]], "dev": [0.27982306265641205]}, "1591": {"P": [[12.0, -1.0, -2.0], [1.0, 12.0, 0.0], [0.0, 2.0, 11.0]], "dev": [0.27976561942238848]}, "1592": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.25212680870004112]}, "1593": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.22108737800628758]}, "1594": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.18494292357551401]}, "1595": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.13978796992461023]}, "1596": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.13976583944486387]}, "1597": {"P": [[11.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.1848430772973649]}, "1598": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.23686204996485272]}, "1599": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.2208390816980137]}, "1600": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.26586222571852053]}, "1601": {"P": [[11.0, -2.0, 0.0], [1.0, 11.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.26581301310486882]}, "1602": {"P": [[11.0, 0.0, -2.0], [-1.0, 12.0, 1.0], [0.0, -2.0, 12.0]], "dev": [0.27916776006723321]}, "1603": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.26571617640972361]}, "1604": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.23660939561449482]}, "1605": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.23656932592000238]}, "1606": {"P": [[11.0, -1.0, -1.0], [0.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.20337824601558566]}, "1607": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.18455772772206652]}, "1608": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.18453317206864236]}, "1609": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.20328908941460622]}, "1610": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, -1.0], [2.0, 0.0, 11.0]], "dev": [0.23637764955606297]}, "1611": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.27872437967659663]}, "1612": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.26530642166209001]}, "1613": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.30360643602069215]}, "1614": {"P": [[12.0, 0.0, -2.0], [-2.0, 11.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.29133769428956485]}, "1615": {"P": [[11.0, -1.0, -2.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.29128926259480092]}, "1616": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, -1.0], [0.0, 2.0, 12.0]], "dev": [0.25107042891302767]}, "1617": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.25103324661726917]}, "1618": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [0.0, 1.0, 12.0]], "dev": [0.23610075426302154]}, "1619": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.2201719541529665]}, "1620": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.2360372015300892]}, "1621": {"P": [[12.0, -2.0, -1.0], [1.0, 11.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.25088988070219581]}, "1622": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.25085537466364605]}, "1623": {"P": [[11.0, -2.0, -1.0], [0.0, 12.0, -1.0], [2.0, 1.0, 12.0]], "dev": [0.29091894080842495]}, "1624": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -2.0], [1.0, 0.0, 12.0]], "dev": [0.29087477818771201]}, "1625": {"P": [[11.0, -2.0, 0.0], [2.0, 11.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.27811480400611632]}, "1626": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.27807493753153856]}, "1627": {"P": [[11.0, -1.0, -2.0], [-1.0, 12.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.30292187407250898]}, "1628": {"P": [[12.0, -2.0, 0.0], [2.0, 12.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.25065947322011461]}, "1629": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 1.0], [1.0, -1.0, 11.0]], "dev": [0.26464647594157015]}, "1630": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.26461221731603296]}, "1631": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, -2.0], [1.0, 1.0, 12.0]], "dev": [0.26457845910744537]}, "1632": {"P": [[12.0, 0.0, -2.0], [0.0, 12.0, 0.0], [2.0, 0.0, 11.0]], "dev": [0.25053939773710293]}, "1633": {"P": [[11.0, -1.0, -2.0], [2.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.29049834128139701]}, "1634": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.27777337739174757]}, "1635": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 1.0], [-1.0, -1.0, 12.0]], "dev": [0.30257065127942789]}, "1636": {"P": [[11.0, -1.0, -2.0], [2.0, 12.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.29038120105477105]}, "1637": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.3024873151460199]}, "1638": {"P": [[12.0, -1.0, -2.0], [0.0, 11.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.29030540239431263]}, "1639": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.30240575271390702]}, "1640": {"P": [[12.0, -2.0, 0.0], [2.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.27756727149064625]}, "1641": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.29019512824183691]}, "1642": {"P": [[11.0, -1.0, -2.0], [1.0, 12.0, 0.0], [2.0, 1.0, 12.0]], "dev": [0.29015927953781856]}, "1643": {"P": [[12.0, -2.0, -1.0], [2.0, 11.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.2774705939452547]}, "1644": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.27743930617457813]}, "1645": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 1.0], [0.0, -1.0, 12.0]], "dev": [0.29005444860797946]}, "1646": {"P": [[11.0, -1.0, -2.0], [1.0, 12.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.29002040696621167]}, "1647": {"P": [[11.0, -2.0, -2.0], [0.0, 12.0, -1.0], [2.0, 1.0, 12.0]], "dev": [0.32496656185622769]}, "1648": {"P": [[11.0, -2.0, -1.0], [-2.0, 13.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.3179694731884829]}, "1649": {"P": [[13.0, -2.0, 0.0], [-1.0, 10.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.31787499592412682]}, "1650": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.30630563031592029]}, "1651": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [-2.0, 0.0, 13.0]], "dev": [0.30621328662275676]}, "1652": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.29420144565113926]}, "1653": {"P": [[12.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.29411124509526321]}, "1654": {"P": [[10.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.29402152869044279]}, "1655": {"P": [[11.0, -1.0, -2.0], [-1.0, 12.0, 0.0], [-2.0, 0.0, 13.0]], "dev": [0.29393229571583845]}, "1656": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.29384354545040309]}, "1657": {"P": [[13.0, -2.0, -1.0], [-2.0, 11.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.29375527717288524]}, "1658": {"P": [[14.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.29366749016182875]}, "1659": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.29358018369557692]}, "1660": {"P": [[11.0, 0.0, -1.0], [0.0, 12.0, -2.0], [-1.0, -2.0, 13.0]], "dev": [0.29349335705227353]}, "1661": {"P": [[11.0, -2.0, 0.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.30531562398001671]}, "1662": {"P": [[11.0, -1.0, -2.0], [0.0, 13.0, -1.0], [-2.0, 0.0, 12.0]], "dev": [0.29332114034610335]}, "1663": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.28082550644228566]}, "1664": {"P": [[12.0, 0.0, -2.0], [0.0, 13.0, 0.0], [-2.0, 0.0, 11.0]], "dev": [0.26775855181554553]}, "1665": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-2.0, -1.0, 13.0]], "dev": [0.28065883082060528]}, "1666": {"P": [[14.0, 0.0, 0.0], [0.0, 10.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.26759547372691805]}, "1667": {"P": [[13.0, -1.0, -1.0], [-1.0, 10.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.26751470129313426]}, "1668": {"P": [[11.0, 0.0, -2.0], [0.0, 12.0, 0.0], [-2.0, 0.0, 13.0]], "dev": [0.26743443892419982]}, "1669": {"P": [[11.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.26735468586268263]}, "1670": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.26727544135051201]}, "1671": {"P": [[11.0, -1.0, -1.0], [-2.0, 13.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.28017059386155224]}, "1672": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.26711847493875018]}, "1673": {"P": [[11.0, -1.0, -1.0], [-1.0, 14.0, 1.0], [0.0, 1.0, 11.0]], "dev": [0.28001175844026133]}, "1674": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.29232776076006012]}, "1675": {"P": [[11.0, 0.0, -2.0], [0.0, 13.0, -1.0], [-2.0, 1.0, 12.0]], "dev": [0.29224804470927968]}, "1676": {"P": [[11.0, -2.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.26681061128215094]}, "1677": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.23870157443307582]}, "1678": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 11.0]], "dev": [0.23862933267153513]}, "1679": {"P": [[11.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.25295978994634516]}, "1680": {"P": [[10.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.23848650061150795]}, "1681": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, -2.0], [0.0, -1.0, 13.0]], "dev": [0.25281502427021701]}, "1682": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.23834586509387773]}, "1683": {"P": [[11.0, 0.0, -1.0], [0.0, 11.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.23827636900520902]}, "1684": {"P": [[11.0, -1.0, -1.0], [0.0, 11.0, 1.0], [-1.0, 0.0, 14.0]], "dev": [0.26621898985192011]}, "1685": {"P": [[13.0, -2.0, 0.0], [-2.0, 12.0, -1.0], [0.0, 1.0, 11.0]], "dev": [0.29147651817601]}, "1686": {"P": [[10.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.27902647756054444]}, "1687": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.26600535510109496]}, "1688": {"P": [[11.0, -1.0, -1.0], [-2.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.25232473727912513]}, "1689": {"P": [[11.0, -1.0, -2.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.25225676736050834]}, "1690": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.20604606382842172]}, "1691": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.20598436525193392]}, "1692": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.20592327890724316]}, "1693": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.20586280389659445]}, "1694": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.20580293931946689]}, "1695": {"P": [[12.0, -2.0, -1.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 11.0]], "dev": [0.25185974309249776]}, "1696": {"P": [[11.0, -1.0, 0.0], [0.0, 13.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.25179536413634063]}, "1697": {"P": [[11.0, -1.0, -1.0], [-1.0, 14.0, 0.0], [1.0, 0.0, 11.0]], "dev": [0.26532528430515417]}, "1698": {"P": [[11.0, -1.0, -1.0], [-1.0, 14.0, -1.0], [1.0, 0.0, 11.0]], "dev": [0.27818851907844089]}, "1699": {"P": [[10.0, -1.0, 0.0], [0.0, 13.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.26519513984402204]}, "1700": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.23717790878457054]}, "1701": {"P": [[11.0, -2.0, -1.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.25148110023434056]}, "1702": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.20534588934292858]}, "1703": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.16769050846468769]}, "1704": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.16764099536745203]}, "1705": {"P": [[12.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.16759220392663565]}, "1706": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.20513184669341369]}, "1707": {"P": [[11.0, -2.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.25112066523541521]}, "1708": {"P": [[11.0, -1.0, 0.0], [1.0, 11.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.23671449813243958]}, "1709": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.26457342497432085]}, "1710": {"P": [[11.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.27741790206591993]}, "1711": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.30150864688823509]}, "1712": {"P": [[11.0, -2.0, -1.0], [0.0, 13.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.26439626204950051]}, "1713": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.2211784055864516]}, "1714": {"P": [[13.0, -1.0, 0.0], [1.0, 12.0, -1.0], [0.0, -1.0, 11.0]], "dev": [0.20473242801531955]}, "1715": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.16714374470772148]}, "1716": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.11819386119551417]}, "1717": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.16706260440318979]}, "1718": {"P": [[11.0, 0.0, -1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.20454693077819178]}, "1719": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.220883999177617]}, "1720": {"P": [[12.0, 0.0, -2.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.26394468794702769]}, "1721": {"P": [[11.0, -2.0, -1.0], [1.0, 11.0, 0.0], [0.0, 1.0, 14.0]], "dev": [0.30087856219824388]}, "1722": {"P": [[13.0, -1.0, -1.0], [-2.0, 12.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.27671332766543294]}, "1723": {"P": [[12.0, -1.0, -2.0], [-1.0, 11.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.26378310995496823]}, "1724": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.23588820828900592]}, "1725": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, -2.0], [0.0, 1.0, 13.0]], "dev": [0.25014685647524859]}, "1726": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.20420405268762282]}, "1727": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.14436580786929168]}, "1728": {"P": [[12.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.0]}, "1729": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.14431012162219287]}, "1730": {"P": [[12.0, -2.0, 0.0], [0.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.20404654684786733]}, "1731": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [1.0, 0.0, 13.0]], "dev": [0.24985749719416769]}, "1732": {"P": [[11.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.23552445168099648]}, "1733": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, -1.0], [2.0, -1.0, 12.0]], "dev": [0.26327473771763704]}, "1734": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.2760734921620131]}, "1735": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -2.0], [-1.0, 1.0, 11.0]], "dev": [0.27602305381416414]}, "1736": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -2.0], [-1.0, 1.0, 13.0]], "dev": [0.24962960671285872]}, "1737": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 2.0, 13.0]], "dev": [0.24958546328892789]}, "1738": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 12.0]], "dev": [0.20375908465145651]}, "1739": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.1663547691875597]}, "1740": {"P": [[12.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.11764729365052612]}, "1741": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, 0.0], [0.0, -1.0, 12.0]], "dev": [0.16630696343881912]}, "1742": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.20362899980572477]}, "1743": {"P": [[13.0, -1.0, 0.0], [0.0, 11.0, -1.0], [1.0, 2.0, 12.0]], "dev": [0.24933057566926545]}, "1744": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.24928974878264448]}, "1745": {"P": [[11.0, -2.0, -1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.27554273090998882]}, "1746": {"P": [[11.0, -1.0, -2.0], [1.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.27549708799284606]}, "1747": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.28769382704369473]}, "1748": {"P": [[12.0, -2.0, 0.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.2625979740522249]}, "1749": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.24909265450485366]}, "1750": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [2.0, 0.0, 12.0]], "dev": [0.21967241773664775]}, "1751": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.18567583186248737]}, "1752": {"P": [[12.0, 0.0, -1.0], [0.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.16609227702605944]}, "1753": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.18563339269494006]}, "1754": {"P": [[12.0, -2.0, 0.0], [1.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.219552972231082]}, "1755": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.24887151928119622]}, "1756": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.26227832822311858]}, "1757": {"P": [[11.0, -2.0, 0.0], [2.0, 12.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.28723796039735533]}, "1758": {"P": [[11.0, 0.0, -1.0], [-1.0, 12.0, 2.0], [0.0, -2.0, 13.0]], "dev": [0.2871946326904693]}, "1759": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -2.0], [-1.0, 1.0, 12.0]], "dev": [0.28715171279048601]}, "1760": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -2.0], [0.0, 2.0, 12.0]], "dev": [0.26212910617735685]}, "1761": {"P": [[13.0, -1.0, -2.0], [2.0, 12.0, 1.0], [1.0, 0.0, 11.0]], "dev": [0.29877237340764917]}, "1762": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.23444465332908729]}, "1763": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.23441621233525273]}, "1764": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.20307283303828497]}, "1765": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, 0.0], [2.0, -1.0, 12.0]], "dev": [0.23436076259451083]}, "1766": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, -2.0], [1.0, 1.0, 12.0]], "dev": [0.234333752048306]}, "1767": {"P": [[11.0, -1.0, -2.0], [2.0, 12.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.29851178529183064]}, "1768": {"P": [[11.0, -2.0, 0.0], [2.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.2618516088481142]}, "1769": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 2.0], [-1.0, -1.0, 12.0]], "dev": [0.28674478309691848]}, "1770": {"P": [[11.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.28670630105940959]}, "1771": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, 0.0], [1.0, 1.0, 11.0]], "dev": [0.29834584652067742]}, "1772": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 2.0], [2.0, -1.0, 12.0]], "dev": [0.27445957134740956]}, "1773": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -2.0], [0.0, 2.0, 13.0]], "dev": [0.28659324652426299]}, "1774": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.26166161318761316]}, "1775": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -1.0], [1.0, 2.0, 12.0]], "dev": [0.24825330374627039]}, "1776": {"P": [[12.0, -2.0, 0.0], [2.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.23408962352550025]}, "1777": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.24820136991405792]}, "1778": {"P": [[12.0, -2.0, 0.0], [2.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.26154348563393964]}, "1779": {"P": [[11.0, -2.0, 0.0], [2.0, 12.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.28637783421321522]}, "1780": {"P": [[12.0, -1.0, -2.0], [2.0, 12.0, 0.0], [1.0, -1.0, 12.0]], "dev": [0.27419693968310516]}, "1781": {"P": [[12.0, -1.0, -2.0], [1.0, 13.0, -1.0], [2.0, 0.0, 11.0]], "dev": [0.29795792715665531]}, "1782": {"P": [[11.0, -1.0, -2.0], [1.0, 13.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.29792123180151792]}, "1783": {"P": [[11.0, -2.0, -1.0], [-2.0, 12.0, 1.0], [0.0, 1.0, 14.0]], "dev": [0.32775667777625095]}, "1784": {"P": [[12.0, -2.0, -2.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.3090507416886103]}, "1785": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.28617655368975153]}, "1786": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.27401702136109524]}, "1787": {"P": [[11.0, -1.0, -2.0], [-1.0, 13.0, 1.0], [-2.0, 1.0, 13.0]], "dev": [0.31685716014457488]}, "1788": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.26127767045767664]}, "1789": {"P": [[11.0, -2.0, 0.0], [-2.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.316682020907603]}, "1790": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.27390510637965204]}, "1791": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [2.0, 1.0, 12.0]], "dev": [0.28598924849162122]}, "1792": {"P": [[13.0, -1.0, -1.0], [-1.0, 12.0, -2.0], [-1.0, -2.0, 12.0]], "dev": [0.29422242751887762]}, "1793": {"P": [[10.0, -1.0, -1.0], [-1.0, 14.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.29413870831464539]}, "1794": {"P": [[13.0, 0.0, -2.0], [0.0, 13.0, -1.0], [-2.0, -1.0, 11.0]], "dev": [0.29405540089327031]}, "1795": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.2939725046916063]}, "1796": {"P": [[13.0, -1.0, -2.0], [-1.0, 13.0, 0.0], [-2.0, 0.0, 11.0]], "dev": [0.29389001914635404]}, "1797": {"P": [[10.0, -1.0, 0.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.2938079436940626]}, "1798": {"P": [[10.0, -1.0, -1.0], [-1.0, 14.0, 1.0], [0.0, 1.0, 13.0]], "dev": [0.30502153864580911]}, "1799": {"P": [[10.0, -1.0, 0.0], [0.0, 14.0, -1.0], [-1.0, -2.0, 13.0]], "dev": [0.32635703955953521]}, "1800": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -2.0], [1.0, 2.0, 12.0]], "dev": [0.28573415282347542]}, "1801": {"P": [[11.0, -2.0, -1.0], [-1.0, 13.0, 1.0], [-2.0, 1.0, 13.0]], "dev": [0.31566390592251237]}, "1802": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.29340369809582201]}, "1803": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.29332407136052568]}, "1804": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -2.0], [0.0, -2.0, 14.0]], "dev": [0.29324485076991014]}, "1805": {"P": [[12.0, -1.0, -2.0], [-2.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.29316603575936206]}, "1806": {"P": [[10.0, -1.0, 0.0], [-1.0, 13.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.26909906042419479]}, "1807": {"P": [[10.0, 0.0, -1.0], [0.0, 13.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.26902334737009215]}, "1808": {"P": [[12.0, -2.0, -1.0], [-2.0, 12.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.26894806700056445]}, "1809": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.26887321872634734]}, "1810": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 14.0]], "dev": [0.2687988019577317]}, "1811": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.26872481610456422]}, "1812": {"P": [[12.0, -2.0, 0.0], [-2.0, 13.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.26865126057624977]}, "1813": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [-1.0, 1.0, 14.0]], "dev": [0.26857813478175407]}, "1814": {"P": [[14.0, -1.0, -1.0], [-2.0, 12.0, 0.0], [-1.0, 0.0, 11.0]], "dev": [0.28074607137265667]}, "1815": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.26843317002789768]}, "1816": {"P": [[13.0, -1.0, -2.0], [-2.0, 12.0, 1.0], [-1.0, 1.0, 12.0]], "dev": [0.29232567731216752]}, "1817": {"P": [[11.0, -1.0, 0.0], [0.0, 13.0, -2.0], [1.0, -2.0, 13.0]], "dev": [0.29225168517345596]}, "1818": {"P": [[12.0, -1.0, -2.0], [0.0, 13.0, -1.0], [-2.0, 0.0, 12.0]], "dev": [0.26821893109989214]}, "1819": {"P": [[12.0, -2.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.25532858962232791]}, "1820": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.24176256394504589]}, "1821": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 14.0]], "dev": [0.25519135017567068]}, "1822": {"P": [[11.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.24162875288375923]}, "1823": {"P": [[11.0, 0.0, -1.0], [0.0, 14.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.24156254087111512]}, "1824": {"P": [[12.0, -2.0, 0.0], [-2.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.24149679036487523]}, "1825": {"P": [[11.0, -1.0, 0.0], [-1.0, 14.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.24143150073470088]}, "1826": {"P": [[11.0, -1.0, 0.0], [-1.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.25485597620205885]}, "1827": {"P": [[14.0, -1.0, -2.0], [0.0, 11.0, 1.0], [-1.0, 0.0, 12.0]], "dev": [0.27982238697180745]}, "1828": {"P": [[11.0, -1.0, 0.0], [0.0, 14.0, -2.0], [1.0, -1.0, 12.0]], "dev": [0.27975419063131951]}, "1829": {"P": [[11.0, -1.0, -1.0], [-2.0, 13.0, 0.0], [0.0, -2.0, 13.0]], "dev": [0.29139467921211976]}, "1830": {"P": [[10.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, 1.0, 14.0]], "dev": [0.26740017075746475]}, "1831": {"P": [[13.0, 0.0, -2.0], [-1.0, 13.0, 0.0], [-1.0, -1.0, 11.0]], "dev": [0.25453157613060917]}, "1832": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.22670645151218743]}, "1833": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.21140458931252015]}, "1834": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.21134635924902487]}, "1835": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.2112886384286469]}, "1836": {"P": [[11.0, -1.0, 0.0], [-1.0, 14.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.21123142616251805]}, "1837": {"P": [[12.0, -1.0, 0.0], [-1.0, 14.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.21117472175999077]}, "1838": {"P": [[11.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, -1.0, 14.0]], "dev": [0.24062438682248666]}, "1839": {"P": [[11.0, 0.0, -1.0], [-1.0, 13.0, 1.0], [0.0, 2.0, 13.0]], "dev": [0.25403516951377925]}, "1840": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -1.0], [0.0, -2.0, 14.0]], "dev": [0.2789672686123395]}, "1841": {"P": [[11.0, -2.0, 0.0], [0.0, 13.0, -2.0], [1.0, -1.0, 13.0]], "dev": [0.29059403806489997]}, "1842": {"P": [[11.0, -2.0, 0.0], [-1.0, 13.0, -1.0], [-1.0, 1.0, 13.0]], "dev": [0.2666417490340327]}, "1843": {"P": [[11.0, -2.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.26658123834495168]}, "1844": {"P": [[12.0, -1.0, -1.0], [-2.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.22601618276061322]}, "1845": {"P": [[13.0, -1.0, -1.0], [0.0, 13.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.21073928617005355]}, "1846": {"P": [[11.0, 0.0, -1.0], [0.0, 13.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.17634777048602679]}, "1847": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.17629964968349834]}, "1848": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.17625211618716871]}, "1849": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.19412968652709461]}, "1850": {"P": [[12.0, -2.0, 0.0], [-1.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.22569663108318047]}, "1851": {"P": [[11.0, 0.0, -1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.23989365174365251]}, "1852": {"P": [[11.0, -1.0, -1.0], [0.0, 14.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.25328718744802164]}, "1853": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, -1.0], [2.0, -1.0, 14.0]], "dev": [0.28984877987809943]}, "1854": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -2.0], [-2.0, 0.0, 12.0]], "dev": [0.27812158237273554]}, "1855": {"P": [[12.0, -2.0, -1.0], [0.0, 13.0, -2.0], [-1.0, 0.0, 12.0]], "dev": [0.26588701134477594]}, "1856": {"P": [[13.0, -1.0, -1.0], [-1.0, 11.0, 0.0], [1.0, -1.0, 13.0]], "dev": [0.2253939396678542]}, "1857": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.21014620601079467]}, "1858": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.17580890684984751]}, "1859": {"P": [[12.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.13291282392171858]}, "1860": {"P": [[13.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.1328770405966942]}, "1861": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.17568725991436968]}, "1862": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.20992011163041166]}, "1863": {"P": [[12.0, -1.0, -2.0], [1.0, 12.0, 0.0], [-1.0, -1.0, 13.0]], "dev": [0.2392856872199981]}, "1864": {"P": [[12.0, 0.0, -2.0], [-2.0, 13.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.26540457056304922]}, "1865": {"P": [[12.0, -1.0, -1.0], [-1.0, 14.0, -1.0], [1.0, 1.0, 11.0]], "dev": [0.26535296645746215]}, "1866": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -2.0, 13.0]], "dev": [0.2653017602008399]}, "1867": {"P": [[12.0, -2.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.25251282765532296]}, "1868": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.23905094821759312]}, "1869": {"P": [[11.0, 0.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 13.0]], "dev": [0.2096241095510997]}, "1870": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -1.0], [0.0, 1.0, 13.0]], "dev": [0.17535332465058073]}, "1871": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.15540541129289287]}, "1872": {"P": [[12.0, 0.0, 0.0], [0.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.066261662566896709]}, "1873": {"P": [[12.0, -1.0, 0.0], [0.0, 12.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.15534513868815517]}, "1874": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.19308250750168335]}, "1875": {"P": [[12.0, -2.0, -1.0], [0.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.23874045154524634]}, "1876": {"P": [[11.0, -1.0, -1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.23869781071700075]}, "1877": {"P": [[11.0, -2.0, -1.0], [1.0, 12.0, 0.0], [0.0, -1.0, 14.0]], "dev": [0.27689740509610156]}, "1878": {"P": [[13.0, -2.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 11.0]], "dev": [0.2768487485276297]}, "1879": {"P": [[11.0, -1.0, 0.0], [0.0, 13.0, -2.0], [-1.0, 1.0, 13.0]], "dev": [0.25196039642751134]}, "1880": {"P": [[11.0, -1.0, 0.0], [0.0, 13.0, -1.0], [-1.0, 2.0, 13.0]], "dev": [0.25191701236198827]}, "1881": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.20917172406220066]}, "1882": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.22427346617073418]}, "1883": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [1.0, 0.0, 13.0]], "dev": [0.17495204980416773]}, "1884": {"P": [[12.0, -1.0, 0.0], [1.0, 13.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.13224062614701795]}, "1885": {"P": [[12.0, 0.0, -1.0], [0.0, 13.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.13222325294231324]}, "1886": {"P": [[12.0, -1.0, -1.0], [0.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.17487287736787027]}, "1887": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.2089712665827875]}, "1888": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.23821922998064707]}, "1889": {"P": [[12.0, -2.0, -1.0], [0.0, 13.0, -2.0], [1.0, 0.0, 12.0]], "dev": [0.26423241455561813]}, "1890": {"P": [[11.0, -2.0, -1.0], [1.0, 13.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.27629401275069465]}, "1891": {"P": [[12.0, -1.0, -2.0], [-2.0, 13.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.28784298966883309]}, "1892": {"P": [[12.0, -2.0, -1.0], [1.0, 13.0, -1.0], [-1.0, 1.0, 12.0]], "dev": [0.25142780885904908]}, "1893": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, 1.0], [1.0, -2.0, 13.0]], "dev": [0.26406734029949086]}, "1894": {"P": [[12.0, -2.0, 0.0], [1.0, 13.0, -1.0], [-1.0, 0.0, 12.0]], "dev": [0.22385875653441248]}, "1895": {"P": [[13.0, -1.0, -1.0], [1.0, 12.0, 0.0], [1.0, 1.0, 12.0]], "dev": [0.19245292992173374]}, "1896": {"P": [[12.0, -1.0, 0.0], [1.0, 13.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.1746448243506917]}, "1897": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, 0.0], [1.0, 0.0, 13.0]], "dev": [0.17462502888785045]}, "1898": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.19238114512320456]}, "1899": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.22370461830295779]}, "1900": {"P": [[12.0, -1.0, -1.0], [2.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.22367509458330376]}, "1901": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.25109850789689619]}, "1902": {"P": [[12.0, -2.0, -1.0], [0.0, 13.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.26371813123412707]}, "1903": {"P": [[13.0, -2.0, 0.0], [2.0, 13.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.26368121393123939]}, "1904": {"P": [[12.0, -2.0, -1.0], [0.0, 12.0, 2.0], [1.0, -1.0, 13.0]], "dev": [0.27571385275883192]}, "1905": {"P": [[12.0, -2.0, -1.0], [0.0, 13.0, 2.0], [1.0, -1.0, 12.0]], "dev": [0.27567513510626168]}, "1906": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 2.0], [1.0, -1.0, 13.0]], "dev": [0.23761407509204413]}, "1907": {"P": [[12.0, -2.0, -1.0], [1.0, 13.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.23758435427372535]}, "1908": {"P": [[12.0, 0.0, -1.0], [0.0, 12.0, -1.0], [1.0, 2.0, 13.0]], "dev": [0.22345442905435939]}, "1909": {"P": [[12.0, -1.0, -1.0], [1.0, 13.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.20837987707016281]}, "1910": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 0.0], [1.0, 0.0, 13.0]], "dev": [0.22340354802097914]}, "1911": {"P": [[12.0, -1.0, -1.0], [0.0, 13.0, -2.0], [1.0, 1.0, 12.0]], "dev": [0.23746952238523178]}, "1912": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.23744182380644746]}, "1913": {"P": [[13.0, 0.0, -2.0], [-2.0, 12.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.27537829768574962]}, "1914": {"P": [[12.0, -1.0, -2.0], [-1.0, 13.0, -1.0], [2.0, 0.0, 12.0]], "dev": [0.27534279709700288]}, "1915": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, -1.0], [2.0, -1.0, 13.0]], "dev": [0.28684310474752156]}, "1916": {"P": [[13.0, -1.0, -2.0], [2.0, 12.0, 0.0], [1.0, 1.0, 12.0]], "dev": [0.27527285879521646]}, "1917": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, 1.0], [1.0, 1.0, 12.0]], "dev": [0.28676879321162196]}, "1918": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.26317204432878927]}, "1919": {"P": [[13.0, -1.0, -2.0], [2.0, 12.0, 1.0], [1.0, 0.0, 12.0]], "dev": [0.27517059964521312]}, "1920": {"P": [[13.0, -2.0, 0.0], [2.0, 12.0, 0.0], [0.0, 0.0, 12.0]], "dev": [0.23723466246472211]}, "1921": {"P": [[12.0, -2.0, -1.0], [1.0, 12.0, 1.0], [1.0, -1.0, 13.0]], "dev": [0.25047954854597915]}, "1922": {"P": [[12.0, -2.0, -1.0], [1.0, 13.0, -1.0], [1.0, 1.0, 12.0]], "dev": [0.25045261702451965]}, "1923": {"P": [[13.0, -1.0, -1.0], [1.0, 12.0, 1.0], [1.0, -2.0, 12.0]], "dev": [0.25042606322743322]}, "1924": {"P": [[12.0, 0.0, -2.0], [0.0, 13.0, 0.0], [2.0, 0.0, 12.0]], "dev": [0.23714062781296588]}, "1925": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, -1.0], [1.0, -1.0, 12.0]], "dev": [0.28648515417693643]}, "1926": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, 0.0], [0.0, -1.0, 13.0]], "dev": [0.2629342164978512]}, "1927": {"P": [[11.0, -1.0, -2.0], [1.0, 14.0, -1.0], [2.0, 1.0, 12.0]], "dev": [0.32842946579945526]}, "1928": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, -1.0], [1.0, -1.0, 13.0]], "dev": [0.28638436186606753]}, "1929": {"P": [[12.0, -1.0, -2.0], [1.0, 12.0, -2.0], [0.0, 2.0, 13.0]], "dev": [0.30806435244786962]}, "1930": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.27482259540112747]}, "1931": {"P": [[13.0, -2.0, -1.0], [2.0, 12.0, -1.0], [0.0, 1.0, 12.0]], "dev": [0.27479304057000603]}, "1932": {"P": [[12.0, -1.0, 0.0], [1.0, 13.0, -2.0], [0.0, 2.0, 12.0]], "dev": [0.26277099175600538]}, "1933": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, 0.0], [1.0, 0.0, 12.0]], "dev": [0.26274503893726769]}, "1934": {"P": [[12.0, -1.0, -2.0], [0.0, 13.0, 1.0], [2.0, -1.0, 12.0]], "dev": [0.27470644023239915]}, "1935": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, -1.0], [1.0, 0.0, 12.0]], "dev": [0.27467825953217156]}, "1936": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, 0.0], [1.0, 0.0, 13.0]], "dev": [0.26266931314491293]}, "1937": {"P": [[12.0, -2.0, -1.0], [1.0, 13.0, -1.0], [2.0, 1.0, 12.0]], "dev": [0.28610001741613145]}, "1938": {"P": [[12.0, -2.0, -1.0], [2.0, 12.0, -1.0], [1.0, 0.0, 13.0]], "dev": [0.27459576738379593]}, "1939": {"P": [[13.0, -1.0, 0.0], [-1.0, 14.0, -2.0], [0.0, -2.0, 11.0]], "dev": [0.30833383823246674]}, "1940": {"P": [[12.0, -2.0, -1.0], [2.0, 13.0, -1.0], [0.0, 2.0, 12.0]], "dev": [0.30766876858324288]}, "1941": {"P": [[11.0, -2.0, -1.0], [-2.0, 14.0, 1.0], [0.0, 1.0, 13.0]], "dev": [0.31843191082414152]}, "1942": {"P": [[12.0, -2.0, -2.0], [1.0, 12.0, 1.0], [2.0, 0.0, 13.0]], "dev": [0.307600898291853]}, "1943": {"P": [[11.0, -1.0, -1.0], [-1.0, 14.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.31827324292702397]}, "1944": {"P": [[12.0, -1.0, 0.0], [2.0, 13.0, -2.0], [0.0, 2.0, 12.0]], "dev": [0.29691297091767027]}, "1945": {"P": [[12.0, -1.0, -1.0], [1.0, 12.0, -2.0], [1.0, 2.0, 13.0]], "dev": [0.28586971759621294]}, "1946": {"P": [[11.0, -2.0, 0.0], [-2.0, 13.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.28618377000679257]}, "1947": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.28610876797374613]}, "1948": {"P": [[13.0, -1.0, -1.0], [1.0, 12.0, -2.0], [1.0, 2.0, 12.0]], "dev": [0.28578874057080889]}, "1949": {"P": [[10.0, -1.0, 0.0], [0.0, 14.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.30755662861630351]}, "1950": {"P": [[13.0, -2.0, -1.0], [-2.0, 13.0, -1.0], [-1.0, -1.0, 12.0]], "dev": [0.2858858975436277]}, "1951": {"P": [[10.0, -1.0, 0.0], [0.0, 14.0, -1.0], [1.0, -1.0, 14.0]], "dev": [0.30740522717569596]}, "1952": {"P": [[13.0, -2.0, -2.0], [-1.0, 13.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.29673100235352606]}, "1953": {"P": [[14.0, -1.0, -1.0], [-1.0, 11.0, 2.0], [-1.0, 1.0, 13.0]], "dev": [0.29665714723949754]}, "1954": {"P": [[14.0, -2.0, 0.0], [-2.0, 12.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.28559370343108514]}, "1955": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, 1.0], [-1.0, 1.0, 13.0]], "dev": [0.28552153877437086]}, "1956": {"P": [[12.0, 0.0, -2.0], [0.0, 12.0, -1.0], [-2.0, -1.0, 14.0]], "dev": [0.28544972676649205]}, "1957": {"P": [[11.0, -1.0, 0.0], [-1.0, 15.0, -1.0], [0.0, -1.0, 12.0]], "dev": [0.28537826695729307]}, "1958": {"P": [[11.0, 0.0, 0.0], [0.0, 13.0, -2.0], [0.0, -2.0, 14.0]], "dev": [0.2853071588964548]}, "1959": {"P": [[12.0, -2.0, -1.0], [-1.0, 13.0, -1.0], [-2.0, -1.0, 13.0]], "dev": [0.28523640213349694]}, "1960": {"P": [[12.0, -2.0, 0.0], [-2.0, 12.0, 0.0], [0.0, 0.0, 14.0]], "dev": [0.26181977560432318]}, "1961": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.27367287225154519]}, "1962": {"P": [[11.0, -1.0, -1.0], [-1.0, 14.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.2616841300821609]}, "1963": {"P": [[12.0, -2.0, -1.0], [-2.0, 13.0, 0.0], [-1.0, 0.0, 13.0]], "dev": [0.26161686963848801]}, "1964": {"P": [[13.0, -1.0, -2.0], [-1.0, 13.0, 0.0], [-2.0, 0.0, 12.0]], "dev": [0.26154998344533237]}, "1965": {"P": [[11.0, -1.0, 0.0], [-1.0, 12.0, 0.0], [0.0, 0.0, 15.0]], "dev": [0.26148347103137459]}, "1966": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [-1.0, 1.0, 14.0]], "dev": [0.26141733192489636]}, "1967": {"P": [[12.0, -1.0, 0.0], [-1.0, 13.0, -2.0], [0.0, -2.0, 13.0]], "dev": [0.26135156565378109]}, "1968": {"P": [[12.0, 0.0, -2.0], [0.0, 12.0, 0.0], [-2.0, 0.0, 14.0]], "dev": [0.26128617174551577]}, "1969": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, -1.0], [0.0, -1.0, 15.0]], "dev": [0.2612211497271934]}, "1970": {"P": [[13.0, -1.0, -1.0], [-1.0, 12.0, 2.0], [-2.0, 1.0, 13.0]], "dev": [0.28448113440483486]}, "1971": {"P": [[11.0, -2.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 1.0, 14.0]], "dev": [0.2953859977873674]}, "1972": {"P": [[12.0, -1.0, -2.0], [-2.0, 13.0, 0.0], [-1.0, -1.0, 13.0]], "dev": [0.27293749272596896]}, "1973": {"P": [[11.0, -1.0, -2.0], [0.0, 14.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.27287278909285312]}, "1974": {"P": [[14.0, -1.0, -1.0], [-1.0, 11.0, -1.0], [0.0, -1.0, 13.0]], "dev": [0.24842472785058134]}, "1975": {"P": [[11.0, -1.0, -1.0], [-1.0, 13.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.23522663559871729]}, "1976": {"P": [[12.0, -2.0, 0.0], [-2.0, 13.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.23516651863620261]}, "1977": {"P": [[11.0, 0.0, -1.0], [0.0, 14.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.23510680337885936]}, "1978": {"P": [[11.0, 0.0, -1.0], [0.0, 13.0, -1.0], [-1.0, -1.0, 14.0]], "dev": [0.23504748932337113]}, "1979": {"P": [[11.0, -1.0, -1.0], [0.0, 13.0, 1.0], [-1.0, 1.0, 14.0]], "dev": [0.2481203796702019]}, "1980": {"P": [[11.0, 0.0, 0.0], [0.0, 12.0, 0.0], [0.0, 0.0, 15.0]], "dev": [0.23493006280083018]}, "1981": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, 1.0], [-1.0, 2.0, 13.0]], "dev": [0.24800131829120192]}, "1982": {"P": [[12.0, -1.0, -1.0], [0.0, 12.0, 1.0], [-2.0, 1.0, 14.0]], "dev": [0.26040948959477489]}, "1983": {"P": [[14.0, 0.0, -1.0], [-1.0, 11.0, -1.0], [1.0, -2.0, 13.0]], "dev": [0.28364245520857095]}, "1984": {"P": [[11.0, -2.0, -1.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 14.0]], "dev": [0.28358033403672267]}, "1985": {"P": [[11.0, -2.0, 0.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 14.0]], "dev": [0.27212399396889048]}, "1986": {"P": [[12.0, -2.0, 0.0], [-1.0, 12.0, -1.0], [-1.0, 0.0, 14.0]], "dev": [0.24771032518866043]}, "1987": {"P": [[12.0, -2.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.23453163347979566]}, "1988": {"P": [[12.0, -1.0, -1.0], [-1.0, 13.0, -1.0], [-1.0, -1.0, 13.0]], "dev": [0.20574079874825155]}, "1989": {"P": [[11.0, -1.0, 0.0], [-1.0, 14.0, 0.0], [0.0, 0.0, 13.0]], "dev": [0.20568849752003415]}, "1990": {"P": [[12.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 14.0]], "dev": [0.2056366393330101]}, "1991": {"P": [[13.0, -1.0, 0.0], [-1.0, 14.0, 0.0], [0.0, 0.0, 11.0]], "dev": [0.20558522363473233]}, "1992": {"P": [[14.0, -1.0, -1.0], [-1.0, 12.0, 0.0], [-1.0, 0.0, 12.0]], "dev": [0.20553424987129953]}, "1993": {"P": [[12.0, -1.0, -1.0], [-1.0, 14.0, 1.0], [0.0, 1.0, 12.0]], "dev": [0.22031319862173174]}, "1994": {"P": [[12.0, -1.0, -1.0], [-2.0, 14.0, 0.0], [0.0, 1.0, 12.0]], "dev": [0.24726439854502028]}, "1995": {"P": [[11.0, -1.0, 0.0], [1.0, 12.0, 0.0], [0.0, 0.0, 15.0]], "dev": [0.25965955227984405]}, "1996": {"P": [[11.0, -1.0, -1.0], [1.0, 13.0, -1.0], [0.0, -2.0, 14.0]], "dev": [0.28286123346047765]}, "1997": {"P": [[11.0, -1.0, -2.0], [-1.0, 13.0, 1.0], [0.0, -1.0, 14.0]], "dev": [0.28280349073269206]}, "1998": {"P": [[13.0, -1.0, -1.0], [1.0, 14.0, -1.0], [-1.0, 0.0, 11.0]], "dev": [0.24705044263128595]}, "1999": {"P": [[11.0, -1.0, 0.0], [-1.0, 13.0, -1.0], [0.0, 1.0, 14.0]], "dev": [0.23389367232392241]}, "2000": {"P": [[12.0, -2.0, 0.0], [-1.0, 13.0, -1.0], [-1.0, 0.0, 13.0]], "dev": [0.21996129094412697]}}ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/defects.rst000066400000000000000000000273411316323560300263550ustar00rootroot00000000000000.. _defects: ============================= Tools for defect calculations ============================= This section gives an (incomplete) overview of features in ASE that help in the preparation and analysis of supercell calculations as most commonly employed in the computation of defect properties. .. contents:: Supercell creation ================== Background ---------- Defect properties are most commonly investigated in the so-called dilute limit, i.e. under conditions, in which defect-defect interactions are negligible. While alternative approaches in particular embedding techniques exist, the most common approach is to use supercells. To this end, one creates a supercell by a *suitable* (see below) repetition of the primitive unit cell, after which a defect, e.g., a vacancy or an impurity atom, is inserted. This procedure can be schematically depicted as follows: .. image:: supercell-1.svg :width: 30% .. image:: supercell-2.svg :width: 30% .. image:: supercell-3.svg :width: 30% The calculation thus corresponds to a periodic arrangement of defects. Accordingly, care must be taken to keep the interactions between defects as small as possible, which generally calls for large supercells. It is furthermore indicated to maximize the defect-defect separation in *all* directions, which is in principle achieved if the supercell used has a suitable shape. Consider for illustration the following three 2D lattices with identical unit cell area but different lattice symmetry: .. image:: periodic-images-1.svg :width: 30% .. image:: periodic-images-2.svg :width: 30% .. image:: periodic-images-3.svg :width: 30% In the case of the square lattice, each defect has :math:`Z_1=4` nearest neighbors at a distance of :math:`r_1=a_0`, where :math:`a_0=\sqrt{A}` with :math:`A` being the unit cell area. By comparison in a rectangular lattice with an aspect ratio of 2:1, the defects are much closer to each other with :math:`r_1 = 0.5 a_0` and :math:`Z_1=2`. The largest defect-defect distance (at constant unit cell area) is obtained for the hexagonal lattice, which also correponds to the most closely packed 2D arrangement. Here, one obtains :math:`r_1=\sqrt{2}/\sqrt[4]{3}=1.075 a_0` and :math:`Z_1=6`. For defect calculation supercells corresponding to hexagonal or square lattices have thus clear advantages. This argument can be extended to 3D: Square lattices in 2D correspond to cubic lattices (supercells) in 3D with :math:`r_1=a_0` and :math:`Z_1=6`. The 3D analogue of the hexagonal 2D lattice are hexagonal and cubic close packed structures, both of which yield :math:`r_1 = \sqrt{3}/2 a_0` and :math:`Z_1=12`. It is straightforward to construct cubic or face-centered cubic (fcc, cubic closed packed) supercells for cubic materials (including e.g, diamond and zincblende) by using simple repetitions of the conventional or primitive unit cells. For countless materials of lower symmetry the choice of a supercell is, however not necessarily so simple. The algorithm below represents a general solution to this issue. In the case of semiconductors and insulators with small dielectric constants, defect-defect interactions are particularly pronounced due to the weak screening of long-ranged electrostatic interactions. While various correction schemes have been proposed, the most reliable approach is still finite-size extrapolation using supercells of different size. In this case care must be taken to use a sequence of self-similar supercells in order for the extrapolation to be meaningful. To motivate this statement consider that the leading (monopole-monopole) term :math:`E_{mp}`, which scales with :math:`1/r` and is proportional to the (ionic) dielectric constant :math:`\epsilon_0`. The :math:`E_{mp}` term is geometry dependent and in the case of simple lattices the dependence is easily expressed by the Madelung constant. The geometry dependence implies that different (super)cell shapes fall on different lines when plotting e.g., the formation energy as a function of :math:`N^{-1/3}` (equivalent to an effective inverse cell size, :math:`L^{-1} \propto N^{-1/3}`. For extrapolation one should therefore only use geometrically equivalent cells or at least cells that are as self-similar to each other as possibly, see Fig. 10 in [Erhart]_ for a very clear example. In this context there is therefore also a particular need for supercells of a particular shape. Algorithm for finding optimal supercell shapes ---------------------------------------------- The above considerations illustrate the need for a more systematic approach to supercell construction. A simple scheme to construct "optimal" supercells is described in [Erhart]_. Optimality here implies that one identifies the supercell that for a given size (number of atoms) most closely approximates the desired shape, most commonly a simple cubic or fcc metric (see above). This approach ensures that the defect separation is large and that the electrostatic interactions exhibit a systematic scaling. The ideal cubic cell metric for a given volume :math:`\Omega` is simply given by :math:`\Omega^{1/3} \mathbf{I}`, which in general does not satisfy the crystallographic boundary conditions. The :math:`l_2`-norm provides a convenient measure of the deviation of any other cell metric from a cubic shape. The optimality measure can thus be defined as .. math:: \Delta_\text{sc}(\mathbf{h}) = ||\mathbf{h} - \Omega^{1/3} \mathbf{1}||_2, Any cell metric that is compatible with the crystal symmetry can be written in the form .. math:: \mathbf{h} = \mathbf{P} \mathbf{h}_p where :math:`\mathbf{P} \in \mathbb{Z}^{3\times3}` and :math:`\mathbf{h}_p` is the primitive cell metric. This approach can be readily generalized to arbitrary target cell metrics. In order to obtain a measure that is size-independent it is furthermore convenient to introduce a normalization, which leads to the expression implemented here, namely .. math:: \bar{\Delta}(\mathbf{Ph}_p) = ||Q\mathbf{Ph}_p - \mathbf{h}_\text{target}||_2, where :math:`Q = \left(\det\mathbf{h}_\text{target} \big/ \det\mathbf{h}_p\right)^{1/3}` is a normalization factor. The matrix :math:`\mathbf{P}_\text{opt}` that yields the optimal cell shape for a given cell size can then be obtained by .. math:: \mathbf{P}_\text{opt} = \underset{\mathbf{P}}{\operatorname{argmin}} \left\{ \bar\Delta\left(\mathbf{Ph}_p\right) | \det\mathbf{P} = N_{uc}\right\}, where :math:`N_{uc}` defines the size of the supercell in terms of the number of primitive unit cells. Implementation of algorithm --------------------------- The algorithm described above has been implemented in two versions: * :func:`~ase.build.find_optimal_cell_shape`: An implementation that invokes inline-C code via the `scipy.weave `_ interface as is substantially (about one to two orders of magnitude) faster than the pure python version. `scipy `_ is available on many systems for scientific computing and should be preferable if available. * :func:`~ase.build.find_optimal_cell_shape_pure_python`: A pure python implementation that is, however, quite slow. For illustration consider the following example. First we set up a primitive face-centered cubic (fcc) unit cell, after which we call :func:`~ase.build.find_optimal_cell_shape` to obtain a :math:`\mathbf{P}` matrix that will enable us to generate a supercell with 32 atoms that is as close as possible to a simple cubic shape:: from ase.build import bulk from ase.build import find_optimal_cell_shape, get_deviation_from_optimal_cell_shape import numpy as np conf = bulk('Au') P1 = find_optimal_cell_shape(conf.cell, 32, 'sc') This yields .. math:: \mathbf{P}_1 = \left(\begin{array}{rrr} -2 & 2 & 2 \\ 2 & -2 & 2 \\ 2 & 2 & -2 \end{array}\right) \quad \mathbf{h}_1 = \left(\begin{array}{ccc} 2 a_0 & 0 & 0 \\ 0 & 2 a_0 & 0 \\ 0 & 0 & 2 a_0 \end{array}\right), where :math:`a_0` =4.05 Å is the lattice constant. This is indeed the expected outcome as it corresponds to a :math:`2\times2\times2` repetition of the *conventional* (4-atom) unit cell. On the other hand repeating this exercise with:: P2 = find_optimal_cell_shape(conf.cell, 495, 'sc') yields a less obvious result, namely .. math:: \mathbf{P}_2 = \left(\begin{array}{rrr} -5 & 5 & 5 \\ 5 & -4 & 5 \\ 5 & 5 & -4 \end{array}\right) \quad \mathbf{h}_2 = a_0 \left(\begin{array}{ccc} 5 & 0 & 0 \\ 0.5 & 5 & 0.5 \\ 0.5 & 0.5 & 5 \end{array}\right), which indeed corresponds to a reasonably cubic cell shape. One can also obtain the optimality measure :math:`\bar{\Delta}` by executing:: dev1 = get_deviation_from_optimal_cell_shape(np.dot(P1, conf.cell) dev2 = get_deviation_from_optimal_cell_shape(np.dot(P2, conf.cell) which yields :math:`\bar{\Delta}(\mathbf{P}_1)=0` and :math:`\bar{\Delta}(\mathbf{P}_2)=0.201`. Since this procedure requires only knowledge of the cell metric (and not the atomic positions) for standard metrics, e.g., fcc, bcc, and simple cubic one can generate series of shapes that are usable for *all* structures with the respective metric. For example the :math:`\mathbf{P}_\text{opt}` matrices that optimize the shape of a supercell build using a primitive FCC cell are directly applicable to diamond and zincblende lattices. For convenience the :math:`\mathbf{P}_\text{opt}` matrices for the aforementioned lattices have already been generated for :math:`N_{uc}\leq2000` and are provided here as dictionaries in `json `_ format. * Transformation of face-centered cubic metric to simple cubic-like shapes: :download:`Popt-fcc2sc.json` * Transformation of face-centered cubic metric to face-centered cubic-like shapes: :download:`Popt-fcc2fcc.json` * Transformation of body-centered cubic metric to simple cubic-like shapes: :download:`Popt-bcc2sc.json` * Transformation of body-centered cubic metric to face-centered cubic-like shapes: :download:`Popt-bcc2fcc.json` * Transformation of simple cubic metric to simple cubic-like shapes: :download:`Popt-sc2sc.json` * Transformation of simple cubic metric to face-centered cubic-like shapes: :download:`Popt-sc2fcc.json` The thus obtained :math:`\bar{\Delta}` values are shown as a function of the number of unit cells :math:`N_{uc}` in the panel below, which demonstrates that this approach provides access to a large number of supercells with e.g., simple cubic or face-centered cubic shapes that span the range between the "exact" solutions, for which :math:`\bar{\Delta}=0`. The algorithm is, however, most useful for non-cubic cell shapes, for which finding several reasonably sized cell shapes is more challenging as illustrated for a hexagonal material (LaBr\ :sub:`3`) in [Erhart]_. .. image:: score-size-sc2sc.svg :width: 30% .. image:: score-size-fcc2sc.svg :width: 30% .. image:: score-size-bcc2sc.svg :width: 30% .. image:: score-size-sc2fcc.svg :width: 30% .. image:: score-size-fcc2fcc.svg :width: 30% .. image:: score-size-bcc2fcc.svg :width: 30% Generation of supercell ----------------------- Once the transformation matrix :math:`\mathbf{P}` it is straightforward to generate the actual supercell using e.g., the :func:`~ase.build.cut` function. A convenient interface is provided by the :func:`~ase.build.make_supercell` function, which is invoked as follows:: from ase.build import bulk from ase.build import find_optimal_cell_shape from ase.build import make_supercell conf = bulk('Au') P = find_optimal_cell_shape(conf.cell, 495, 'sc') supercell = make_supercell(conf, P) .. [Erhart] P. Erhart, B. Sadigh, A. Schleife, and D. Åberg. First-principles study of codoping in lanthanum bromide, Phys. Rev. B, Vol **91**, 165206 (2012), `doi: 10.1103/PhysRevB.91.165206 `_; Appendix C ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/periodic-images.py000066400000000000000000000072041316323560300276150ustar00rootroot00000000000000# creates: periodic-images-1.svg periodic-images-2.svg import numpy as np import matplotlib.pyplot as plt from itertools import product class CellFigure(): def __init__(self, dim): """ Set up a figure for visualizing a cell metric. """ self.fig = plt.figure(figsize=(9, 5)) self.ax = self.fig.gca() self.ax.set_axis_off() self.ax.autoscale_view(tight=True) self.ax.set_xlim(-2 * dim, 3 * dim) self.ax.set_ylim(-dim, 1.5 * dim) self.ax.set_aspect('equal') def add_cell(self, cell, offset=[0, 0], fill_color=None, atom=None, radius=0.1, atom_color='orange'): """ Draw a cell, optionally filled and including an atom. """ xvecs = np.array([(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)], dtype=float) vectors = [] for xv in xvecs: vectors.append(np.dot(cell, xv + offset)) vectors = np.array(vectors) from matplotlib.patches import Polygon, Circle if fill_color is not None: self.ax.add_patch(Polygon(vectors, True, color=fill_color, alpha=0.4)) for points in vectors: self.ax.plot(vectors.T[0], vectors.T[1], c='k', ls='-') if atom: pos = np.dot(cell, np.array(atom) + offset) self.ax.add_patch(Circle(pos, radius, color=atom_color)) return pos def add_vector(self, cell, xvec, xdir, fill_color='red'): """ Draw an arrow typically symbolizing a neighbor connection. """ from matplotlib.patches import Arrow pos = np.dot(cell, xvec) dir = np.dot(cell, xdir) self.ax.add_patch(Arrow(pos[0], pos[1], dir[0], dir[1], width=0.2)) def annotate_figure(self, text): """ Add some annotation to the lower left corner of the plot. """ self.ax.text(-2 * dim, 1.35 * dim, text, ha='left', va='center') # extent of plotted area dim = 2 # rescaling factor for arrows rescale = 1.0 # Figure 1 myfig = CellFigure(dim) prim = np.eye(2) atompos = [0.5, 0.5] for i, j in [[-1, 0], [1, 0], [0, -1], [0, 1]]: myfig.add_vector(prim, atompos, rescale * np.array([i, j])) for i, j in product(range(-dim, dim + 1), repeat=2): fill_color = 'blue' if i == 0 and j == 0 else None myfig.add_cell(prim, [i, j], atom=atompos, fill_color=fill_color) myfig.annotate_figure('square lattice\n$r_1 = a$, $Z_1=4$') plt.savefig('periodic-images-1.svg', bbox_inches='tight') # Figure 2 myfig = CellFigure(dim) prim = np.array([[2, 0], [0, 0.5]]) for i, j in [[0, -1], [0, 1]]: myfig.add_vector(prim, atompos, rescale * np.array([i, j])) for i, j in product(range(-dim, dim + 1), repeat=2): fill_color = 'blue' if i == 0 and j == 0 else None myfig.add_cell(prim, [i, j], atom=atompos, fill_color=fill_color) myfig.annotate_figure( 'rectangular lattice with a 2:1 aspect ratio\n$r_1 = a/2$, $Z_1=2$') plt.savefig('periodic-images-2.svg', bbox_inches='tight') # Figure 3 myfig = CellFigure(dim) prim = np.array([[1, 0.5], [0, np.sqrt(3) / 2]]) prim /= np.linalg.det(prim) ** (1.0 / 2) s = np.sqrt(2.0 / np.sqrt(3)) for i, j in [[-1, 0], [1, 0], [0, -1], [0, 1], [-1, 1], [1, -1]]: myfig.add_vector(prim, atompos, rescale * np.array([i, j])) for i, j in product(range(-dim, dim + 1), repeat=2): fill_color = 'blue' if i == 0 and j == 0 else None myfig.add_cell(prim, [i, j], atom=atompos, fill_color=fill_color) myfig.annotate_figure('hexagonal lattice\n$r_1 = %.3f a$, $Z_1=6$' % s) plt.savefig('periodic-images-3.svg', bbox_inches='tight') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/score-size.py000066400000000000000000000014071316323560300266360ustar00rootroot00000000000000# creates: score-size-fcc2sc.svg import matplotlib.pyplot as plt import json import os import glob for fname in glob.glob('Popt-*.json'): tag = os.path.basename(fname).replace('Popt-', '').replace('.json', '') with open(fname) as data_file: data = json.load(data_file) x = [] y = [] for nuc, rec in sorted(data.items()): x.append(nuc) y.append(rec['dev']) plt.figure(figsize=(4, 3)) plt.text(1950, 0.6, tag.replace('2', r' $\rightarrow$ '), horizontalalignment='right') plt.xlabel(r'Number of primitive unit cells $N_{uc}$') plt.ylabel(r'Optimality measure $\bar \Delta$') plt.axis([0, 2000, -0.05, 0.7]) plt.plot(x, y, 'bo') plt.savefig('score-size-%s.svg' % tag, bbox_inches='tight') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/defects/supercells.py000066400000000000000000000100101316323560300267220ustar00rootroot00000000000000# creates: supercell-1.svg supercell-2.svg supercell-3.svg from math import pi, sin, cos import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def vertices(cell): """ Set up vertices for a cell metric. """ from scipy.spatial import Voronoi I = np.indices((3, 3, 3)).reshape((3, 27)) - 1 G = np.dot(cell, I).T vor = Voronoi(G) vert1 = [] for vertices, points in zip(vor.ridge_vertices, vor.ridge_points): if -1 not in vertices and 13 in points: normal = G[points].sum(0) normal /= (normal ** 2).sum() ** 0.5 vert1.append((vor.vertices[vertices], normal)) return vert1 class CellFigure(): def __init__(self, dim, azim, elev): """ Set up a figure for visualizing a cell metric. """ Axes3D # silence pyflakes self.fig = plt.figure(figsize=(5, 3)) self.ax = self.fig.gca(projection='3d') x = sin(azim) y = cos(azim) self.view = [x * cos(elev), y * cos(elev), sin(elev)] self.ax.set_axis_off() self.ax.autoscale_view(tight=True) self.ax.set_xlim(0, dim) self.ax.set_ylim(0, dim) self.ax.set_zlim(0, dim) self.ax.set_aspect('equal') self.ax.view_init(azim=azim / pi * 180, elev=elev / pi * 180) def add_cell(self, cell): """ Draw a cell. (i.e. edges but no faces) """ vert1 = vertices(cell) shift = -vert1[0][0][0] for points, normal in vert1: if np.dot(normal, self.view) < 0: ls = ':' else: ls = '-' x, y, z = np.concatenate([points + shift, points[:1] + shift]).T self.ax.plot(x, y, z, c='k', ls=ls) def add_primitive_cell(self, cell): """ Draw a primitive unit cell. (i.e. a cell with colored faces) """ self.add_cell(cell) uc = prim[0][0] # plot side faces of unit cell X, Y = np.meshgrid([0, uc], [0, uc]) Z = np.zeros((2, 2)) + uc self.ax.plot_surface(X, Y, Z, color='blue', alpha=.5, linewidth=0, zorder=1) X, Z = np.meshgrid([0, uc], [0, uc]) Y = np.zeros((2, 2)) + uc self.ax.plot_surface(X, Y, Z, color='blue', alpha=.5, linewidth=0, zorder=1) Y, Z = np.meshgrid([0, uc], [0, uc]) X = np.zeros((2, 2)) + uc self.ax.plot_surface(X, Y, Z, color='blue', alpha=.5, linewidth=0, zorder=1) def add_atom(self, x0, y0, z0, radius=0.06): """ Draw an atom. """ u = np.linspace(0, 2 * np.pi, 100) v = np.linspace(0, np.pi, 100) x = x0 + radius * np.outer(np.cos(u), np.sin(v)) y = y0 + radius * np.outer(np.sin(u), np.sin(v)) z = z0 + radius * np.outer(np.ones(np.size(u)), np.cos(v)) self.ax.plot_surface(x, y, z, rstride=4, cstride=4, color='orange', linewidth=0.1, alpha=0.5) def annotate_figure(self, text): """ Add some annotation to the lower left corner of the plot. """ self.ax.text(1.1, 0, -0.2, text, ha='left', va='center') # extent of plotted area dim = 0.82 # view angle azim = 0.75 * pi / 5 elev = 0.5 * pi / 6 # define unit cell and supercell prim = 1.0 / 3 * np.eye(3) supr = np.eye(3) # Figure 1 myfig = CellFigure(dim, azim, elev) myfig.add_primitive_cell(prim) myfig.annotate_figure('primitive unit cell') plt.savefig('supercell-1.svg', bbox_inches='tight') # Figure 2 myfig = CellFigure(dim, azim, elev) myfig.add_primitive_cell(prim) myfig.add_cell(supr) myfig.annotate_figure('ideal supercell') plt.savefig('supercell-2.svg', bbox_inches='tight') # Figure 3 myfig = CellFigure(dim, azim, elev) myfig.add_cell(supr) d = 0.08 myfig.add_atom(0.5, 0.5 - d, 0.5) myfig.add_atom(0.5, 0.5 + d, 0.5) myfig.annotate_figure('defect supercell') plt.savefig('supercell-3.svg', bbox_inches='tight') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/dissociation.rst000066400000000000000000000016201316323560300260030ustar00rootroot00000000000000.. _neb2: .. _mep2: ===================== Dissociation tutorial ===================== In this tutorial we provide an illustrative example of a nudged-elastic band (NEB) calculation. For more information on the NEB technique, see :mod:`ase.neb`. We consider the dissociation of a nitrogen molecule on the Cu (111) surface. The first step is to find the relaxed structures of the initial and final states. .. literalinclude:: N2Cu-Dissociation1.py Having obtained these structures we set up an NEB calculation with 9 images. Using :func:`~neb.interpolate()` provides a guess for the path between the initial and final states. We perform the relaxation of the images and obtain the intermediate steps. .. literalinclude:: N2Cu-Dissociation2.py After the calculation is complete, the energy difference with respect to the initial state is given for each image, as well as the distance between the N atoms. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/eos/000077500000000000000000000000001316323560300233505ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/eos/eos.py000066400000000000000000000002101316323560300245010ustar00rootroot00000000000000# creates: Ag-eos.png exec(compile(open('eos1.py').read(), 'eos1.py', 'exec')) exec(compile(open('eos2.py').read(), 'eos2.py', 'exec')) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/eos/eos.rst000066400000000000000000000011361316323560300246710ustar00rootroot00000000000000.. _eos: ================= Equation of state ================= First, do a bulk calculation for different lattice constants: .. literalinclude:: eos1.py This will write a trajectory file containing five configurations of FCC silver for five different lattice constans. Now, analyse the result with the :class:`~ase.eos.EquationOfState` class and this script: .. literalinclude:: eos2.py |eos| A quicker way to do this analysis, is to use the :mod:`ase.gui` tool: .. highlight:: bash :: $ ase gui Ag.traj And then choose :menuselection:`Tools --> Bulk modulus`. .. |eos| image:: Ag-eos.png ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/eos/eos1.py000066400000000000000000000007531316323560300245760ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.io.trajectory import Trajectory from ase.calculators.emt import EMT a = 4.0 # approximate lattice constant b = a / 2 ag = Atoms('Ag', cell=[(0, b, b), (b, 0, b), (b, b, 0)], pbc=1, calculator=EMT()) # use EMT potential cell = ag.get_cell() traj = Trajectory('Ag.traj', 'w') for x in np.linspace(0.95, 1.05, 5): ag.set_cell(cell * x, scale_atoms=True) ag.get_potential_energy() traj.write(ag) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/eos/eos2.py000066400000000000000000000006071316323560300245750ustar00rootroot00000000000000from ase.io import read from ase.units import kJ from ase.eos import EquationOfState configs = read('Ag.traj@0:5') # read 5 configurations # Extract volumes and energies: volumes = [ag.get_volume() for ag in configs] energies = [ag.get_potential_energy() for ag in configs] eos = EquationOfState(volumes, energies) v0, e0, B = eos.fit() print(B / kJ * 1.0e24, 'GPa') eos.plot('Ag-eos.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/000077500000000000000000000000001316323560300231515ustar00rootroot00000000000000basic_example_create_database.py000066400000000000000000000034331316323560300314120ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/gafrom ase.ga.data import PrepareDB from ase.ga.startgenerator import StartGenerator from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.constraints import FixAtoms import numpy as np from ase.build import fcc111 db_file = 'gadb.db' # create the surface slab = fcc111('Au', size=(4, 4, 1), vacuum=10.0, orthogonal=True) slab.set_constraint(FixAtoms(mask=len(slab) * [True])) # define the volume in which the adsorbed cluster is optimized # the volume is defined by a corner position (p0) # and three spanning vectors (v1, v2, v3) pos = slab.get_positions() cell = slab.get_cell() p0 = np.array([0., 0., max(pos[:, 2]) + 2.]) v1 = cell[0, :] * 0.8 v2 = cell[1, :] * 0.8 v3 = cell[2, :] v3[2] = 3. # Define the composition of the atoms to optimize atom_numbers = 2 * [47] + 2 * [79] # define the closest distance two atoms of a given species can be to each other unique_atom_types = get_all_atom_types(slab, atom_numbers) cd = closest_distances_generator(atom_numbers=unique_atom_types, ratio_of_covalent_radii=0.7) # create the starting population sg = StartGenerator(slab=slab, atom_numbers=atom_numbers, closest_allowed_distances=cd, box_to_place_in=[p0, [v1, v2, v3]]) # generate the starting population population_size = 20 starting_population = [sg.get_new_candidate() for i in range(population_size)] # from ase.visualize import view # uncomment these lines # view(starting_population) # to see the starting population # create the database to store information in d = PrepareDB(db_file_name=db_file, simulation_cell=slab, stoichiometry=atom_numbers) for a in starting_population: d.add_unrelaxed_candidate(a) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/basic_example_main_run.py000066400000000000000000000062421316323560300302130ustar00rootroot00000000000000from random import random from ase.io import write from ase.optimize import BFGS from ase.calculators.emt import EMT from ase.ga.data import DataConnection from ase.ga.population import Population from ase.ga.standard_comparators import InteratomicDistanceComparator from ase.ga.cutandsplicepairing import CutAndSplicePairing from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.ga.offspring_creator import OperationSelector from ase.ga.standardmutations import MirrorMutation from ase.ga.standardmutations import RattleMutation from ase.ga.standardmutations import PermutationMutation # Change the following three parameters to suit your needs population_size = 20 mutation_probability = 0.3 n_to_test = 20 # Initialize the different components of the GA da = DataConnection('gadb.db') atom_numbers_to_optimize = da.get_atom_numbers_to_optimize() n_to_optimize = len(atom_numbers_to_optimize) slab = da.get_slab() all_atom_types = get_all_atom_types(slab, atom_numbers_to_optimize) blmin = closest_distances_generator(all_atom_types, ratio_of_covalent_radii=0.7) comp = InteratomicDistanceComparator(n_top=n_to_optimize, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False) pairing = CutAndSplicePairing(slab, n_to_optimize, blmin) mutations = OperationSelector([1., 1., 1.], [MirrorMutation(blmin, n_to_optimize), RattleMutation(blmin, n_to_optimize), PermutationMutation(n_to_optimize)]) # Relax all unrelaxed structures (e.g. the starting population) while da.get_number_of_unrelaxed_candidates() > 0: a = da.get_an_unrelaxed_candidate() a.set_calculator(EMT()) print('Relaxing starting candidate {0}'.format(a.info['confid'])) dyn = BFGS(a, trajectory=None, logfile=None) dyn.run(fmax=0.05, steps=100) a.info['key_value_pairs']['raw_score'] = -a.get_potential_energy() da.add_relaxed_step(a) # create the population population = Population(data_connection=da, population_size=population_size, comparator=comp) # test n_to_test new candidates for i in range(n_to_test): print('Now starting configuration number {0}'.format(i)) a1, a2 = population.get_two_candidates() a3, desc = pairing.get_new_individual([a1, a2]) if a3 is None: continue da.add_unrelaxed_candidate(a3, description=desc) # Check if we want to do a mutation if random() < mutation_probability: a3_mut, desc = mutations.get_new_individual([a3]) if a3_mut is not None: da.add_unrelaxed_step(a3_mut, desc) a3 = a3_mut # Relax the new candidate a3.set_calculator(EMT()) dyn = BFGS(a3, trajectory=None, logfile=None) dyn.run(fmax=0.05, steps=100) a3.info['key_value_pairs']['raw_score'] = -a3.get_potential_energy() da.add_relaxed_step(a3) population.update() write('all_candidates.traj', da.get_all_relaxed_candidates()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_basic_calc.py000066400000000000000000000010051316323560300262310ustar00rootroot00000000000000from ase.optimize import BFGS from ase.io import read, write from ase.calculators.emt import EMT from ase.ga.relax_attaches import VariansBreak import sys fname = sys.argv[1] print('Now relaxing {0}'.format(fname)) a = read(fname) a.set_calculator(EMT()) dyn = BFGS(a, trajectory=None, logfile=None) vb = VariansBreak(a, dyn) dyn.attach(vb.write) dyn.run(fmax=0.05) a.info['key_value_pairs']['raw_score'] = -a.get_potential_energy() write(fname[:-5] + '_done.traj', a) print('Done relaxing {0}'.format(fname)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_basic_parallel_main.py000066400000000000000000000063541316323560300301430ustar00rootroot00000000000000from random import random from ase.io import write import time from ase.ga.data import DataConnection from ase.ga.population import Population from ase.ga.standard_comparators import InteratomicDistanceComparator from ase.ga.cutandsplicepairing import CutAndSplicePairing from ase.ga.offspring_creator import OperationSelector from ase.ga.standardmutations import MirrorMutation from ase.ga.standardmutations import RattleMutation from ase.ga.standardmutations import PermutationMutation from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.ga.parallellocalrun import ParallelLocalRun population_size = 20 mutation_probability = 0.3 n_to_test = 100 # Initialize the different components of the GA da = DataConnection('gadb.db') tmp_folder = 'tmp_folder/' # An extra object is needed to handle the parallel execution parallel_local_run = ParallelLocalRun(data_connection=da, tmp_folder=tmp_folder, n_simul=4, calc_script='calc.py') atom_numbers_to_optimize = da.get_atom_numbers_to_optimize() n_to_optimize = len(atom_numbers_to_optimize) slab = da.get_slab() all_atom_types = get_all_atom_types(slab, atom_numbers_to_optimize) blmin = closest_distances_generator(all_atom_types, ratio_of_covalent_radii=0.7) comp = InteratomicDistanceComparator(n_top=n_to_optimize, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False) pairing = CutAndSplicePairing(slab, n_to_optimize, blmin) mutations = OperationSelector([1., 1., 1.], [MirrorMutation(blmin, n_to_optimize), RattleMutation(blmin, n_to_optimize), PermutationMutation(n_to_optimize)]) # Relax all unrelaxed structures (e.g. the starting population) while da.get_number_of_unrelaxed_candidates() > 0: a = da.get_an_unrelaxed_candidate() parallel_local_run.relax(a) # Wait until the starting population is relaxed while parallel_local_run.get_number_of_jobs_running() > 0: time.sleep(5.) # create the population population = Population(data_connection=da, population_size=population_size, comparator=comp) # test n_to_test new candidates for i in range(n_to_test): print('Now starting configuration number {0}'.format(i)) a1, a2 = population.get_two_candidates() a3, desc = pairing.get_new_individual([a1, a2]) if a3 is None: continue da.add_unrelaxed_candidate(a3, description=desc) # Check if we want to do a mutation if random() < mutation_probability: a3_mut, desc = mutations.get_new_individual([a3]) if a3_mut is not None: da.add_unrelaxed_step(a3_mut, desc) a3 = a3_mut # Relax the new candidate parallel_local_run.relax(a3) population.update() # Wait until the last candidates are relaxed while parallel_local_run.get_number_of_jobs_running() > 0: time.sleep(5.) write('all_candidates.traj', da.get_all_relaxed_candidates()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_basic_parameters.py000066400000000000000000000126561316323560300275100ustar00rootroot00000000000000from random import random from ase.io import write from ase.ga.data import DataConnection from ase.ga.population import Population from ase.ga.standard_comparators import InteratomicDistanceComparator from ase.ga.cutandsplicepairing import CutAndSplicePairing from ase.ga.offspring_creator import OperationSelector from ase.ga.standardmutations import MirrorMutation from ase.ga.standardmutations import RattleMutation from ase.ga.standardmutations import PermutationMutation from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.ga.pbs_queue_run import PBSQueueRun from ase.ga import get_parametrization import numpy as np from ase.ga.utilities import get_atoms_connections, get_atoms_distribution from ase.ga.utilities import get_angles_distribution from ase.ga.utilities import get_rings, get_neighborlist def jtg(job_name, traj_file): s = '#!/bin/sh\n' s += '#PBS -l nodes=1:ppn=16\n' s += '#PBS -l walltime=100:00:00\n' s += '#PBS -N {0}\n'.format(job_name) s += '#PBS -q q16\n' s += 'cd $PBS_O_WORKDIR\n' s += 'NPROCS==`wc -l < $PBS_NODEFILE`\n' s += 'mpirun --mca mpi_warn_on_fork 0 -np $NPROCS ' s += 'gpaw-python calc_gpaw.py {0}\n'.format(traj_file) return s def combine_parameters(conf): # Get and combine selected parameters parameters = [] gets = [get_atoms_connections(conf) + get_rings(conf) + get_angles_distribution(conf) + get_atoms_distribution(conf)] for get in gets: parameters += get return parameters def should_we_skip(conf, comparison_energy, weights): parameters = combine_parameters(conf) # Return if weights not defined (too few completed # calculated structures to make a good fit) if weights is None: return False regression_energy = sum(p * q for p, q in zip(weights, parameters)) # Skip with 90% likelihood if energy appears to go up 5 eV or more if (regression_energy - comparison_energy) > 5 and random() < 0.9: return True else: return False population_size = 20 mutation_probability = 0.3 # Initialize the different components of the GA da = DataConnection('gadb.db') tmp_folder = 'work_folder/' # The PBS queing interface is created pbs_run = PBSQueueRun(da, tmp_folder=tmp_folder, job_prefix='Ag2Au2_opt', n_simul=5, job_template_generator=jtg, find_neighbors=get_neighborlist, perform_parametrization=combine_parameters) atom_numbers_to_optimize = da.get_atom_numbers_to_optimize() n_to_optimize = len(atom_numbers_to_optimize) slab = da.get_slab() all_atom_types = get_all_atom_types(slab, atom_numbers_to_optimize) blmin = closest_distances_generator(all_atom_types, ratio_of_covalent_radii=0.7) comp = InteratomicDistanceComparator(n_top=n_to_optimize, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False) pairing = CutAndSplicePairing(slab, n_to_optimize, blmin) mutations = OperationSelector([1., 1., 1.], [MirrorMutation(blmin, n_to_optimize), RattleMutation(blmin, n_to_optimize), PermutationMutation(n_to_optimize)]) # Relax all unrelaxed structures (e.g. the starting population) while (da.get_number_of_unrelaxed_candidates() > 0 and not pbs_run.enough_jobs_running()): a = da.get_an_unrelaxed_candidate() pbs_run.relax(a) # create the population population = Population(data_connection=da, population_size=population_size, comparator=comp) # create the regression expression for estimating the energy all_trajs = da.get_all_relaxed_candidates() sampled_points = [] sampled_energies = [] for conf in all_trajs: no_of_conn = list(get_parametrization(conf)) if no_of_conn not in sampled_points: sampled_points.append(no_of_conn) sampled_energies.append(conf.get_potential_energy()) sampled_points = np.array(sampled_points) sampled_energies = np.array(sampled_energies) if len(sampled_points) > 0 and len(sampled_energies) >= len(sampled_points[0]): weights = np.linalg.lstsq(sampled_points, sampled_energies)[0] else: weights = None # Submit new candidates until enough are running while (not pbs_run.enough_jobs_running() and len(population.get_current_population()) > 2): a1, a2 = population.get_two_candidates() # Selecting the "worst" parent energy # which the child should be compared to ce_a1 = da.get_atoms(a1.info['relax_id']).get_potential_energy() ce_a2 = da.get_atoms(a2.info['relax_id']).get_potential_energy() comparison_energy = min(ce_a1, ce_a2) a3, desc = pairing.get_new_individual([a1, a2]) if a3 is None: continue if should_we_skip(a3, comparison_energy, weights): continue da.add_unrelaxed_candidate(a3, description=desc) if random() < mutation_probability: a3_mut, desc_mut = mutations.get_new_individual([a3]) if (a3_mut is not None and not should_we_skip(a3_mut, comparison_energy, weights)): da.add_unrelaxed_step(a3_mut, desc_mut) a3 = a3_mut pbs_run.relax(a3) write('all_candidates.traj', da.get_all_relaxed_candidates()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_basic_pbs_main.py000066400000000000000000000062211316323560300271240ustar00rootroot00000000000000from random import random from ase.io import write from ase.ga.data import DataConnection from ase.ga.population import Population from ase.ga.standard_comparators import InteratomicDistanceComparator from ase.ga.cutandsplicepairing import CutAndSplicePairing from ase.ga.offspring_creator import OperationSelector from ase.ga.standardmutations import MirrorMutation from ase.ga.standardmutations import RattleMutation from ase.ga.standardmutations import PermutationMutation from ase.ga.utilities import closest_distances_generator from ase.ga.utilities import get_all_atom_types from ase.ga.pbs_queue_run import PBSQueueRun def jtg(job_name, traj_file): s = '#!/bin/sh\n' s += '#PBS -l nodes=1:ppn=12\n' s += '#PBS -l walltime=48:00:00\n' s += '#PBS -N {0}\n'.format(job_name) s += '#PBS -q q12\n' s += 'cd $PBS_O_WORKDIR\n' s += 'python calc.py {0}\n'.format(traj_file) return s population_size = 20 mutation_probability = 0.3 # Initialize the different components of the GA da = DataConnection('gadb.db') tmp_folder = 'tmp_folder/' # The PBS queing interface is created pbs_run = PBSQueueRun(da, tmp_folder=tmp_folder, job_prefix='Ag2Au2_opt', n_simul=5, job_template_generator=jtg) atom_numbers_to_optimize = da.get_atom_numbers_to_optimize() n_to_optimize = len(atom_numbers_to_optimize) slab = da.get_slab() all_atom_types = get_all_atom_types(slab, atom_numbers_to_optimize) blmin = closest_distances_generator(all_atom_types, ratio_of_covalent_radii=0.7) comp = InteratomicDistanceComparator(n_top=n_to_optimize, pair_cor_cum_diff=0.015, pair_cor_max=0.7, dE=0.02, mic=False) pairing = CutAndSplicePairing(slab, n_to_optimize, blmin) mutations = OperationSelector([1., 1., 1.], [MirrorMutation(blmin, n_to_optimize), RattleMutation(blmin, n_to_optimize), PermutationMutation(n_to_optimize)]) # Relax all unrelaxed structures (e.g. the starting population) while (da.get_number_of_unrelaxed_candidates() > 0 and not pbs_run.enough_jobs_running()): a = da.get_an_unrelaxed_candidate() pbs_run.relax(a) # create the population population = Population(data_connection=da, population_size=population_size, comparator=comp) # Submit new candidates until enough are running while (not pbs_run.enough_jobs_running() and len(population.get_current_population()) > 2): a1, a2 = population.get_two_candidates() a3, desc = pairing.get_new_individual([a1, a2]) if a3 is None: continue da.add_unrelaxed_candidate(a3, description=desc) if random() < mutation_probability: a3_mut, desc = mutations.get_new_individual([a3]) if a3_mut is not None: da.add_unrelaxed_step(a3_mut, desc) a3 = a3_mut pbs_run.relax(a3) write('all_candidates.traj', da.get_all_relaxed_candidates()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_convex_hull.rst000066400000000000000000000244551316323560300267120ustar00rootroot00000000000000===================================================== Determination of convex hull with a genetic algorithm ===================================================== In this tutorial we will determine the convex hull of a binary alloy slab. The convex hull can be used to check whether a certain composition is stable or it will decompose into mixed phases of the neighboring stable compositions. We will use a (111) slab to represent a close packed surface, the method can easily be extended for use in other systems, e.g. bulk, nanoparticle, ... We choose a rather small atomic structure with 24 atoms in the unit cell, in a binary system the number of different atomic distributions for a single composition is determined by the binomial coefficient :math:`\frac{N!}{n_A!n_B!}`, where :math:`N` is the total number of atoms in the slab, :math:`n_A` and :math:`n_B` is the number of A and B atoms respectively. This number rises combinatorially towards the 1:1 composition and in total there exists 16.8 million different atomic distributions for the 24 atom slab (without taking symmetry into account which will reduce the number significantly see :ref:`symmetry`). A number of this size warrants a search method other than brute force, here we use a genetic algorithm (GA). Outline of the GA run --------------------- The GA implementation is divided into several classes, this means that the user can pick and choose specific classes and functions to use for the optimization problem at hand. If no ready-made crossover operator works for a specific problem it should be quite straightforward to customize an existing one. We will create an initial population of (111) slabs each with a random composition and distribution of atoms. The candidates are evaluated with the :mod:`EMT potential `. To make comparisons between different compositions we define the mixing or excess energy by: .. math:: E_\text{mixing} = E_{AB} - \frac{E_A \cdot n_A}{N} - \frac{E_B \cdot n_B}{N} where :math:`E_\text{AB}` is the energy of the mixed slab, :math:`E_A` and :math:`E_B` are the energies of the pure A and B slabs respectively. We will take advantage of the :class:`ase.ga.population.RankFitnessPopulation`, that allows us to optimize a full composition range at once. It works by grouping candidates according to a variable (composition in this case) and then ranking candidates within each group. This means that the fittest candidate in each group is given equal fitness and has the same probability for being selected for procreation. This means that the entire convex hull is mapped out contrary to just the candidates with lowest mixing energies. This "all in one" approach is more efficient than running each composition individually since the chemical ordering is similar for different compositions. We will use the typical operators adjusted to work on slabs: ``CutSpliceSlabCrossover`` cuts two slabs in a random plane and put halves from different original slabs (parents) together to form a new slab (offspring). This Deaven and Ho style crossover is able to refine the population by passing on favorable traits from parents to offspring. ``RandomSlabPermutation`` permutes two atoms of different type in the slab keeping the same composition. ``RandomCompositionMutation`` changes the composition of the slab. In :ref:`customization` we look at ways to customize the way in which the algorithm runs in order to make it more efficient. Initial population ================== We choose a population size large enough so that the entire composition range will be represented in the population. The pure slabs are set up using experimental lattice constants, and for the mixed slabs we use Vegard's law (interpolation). :download:`ga_convex_start.py` .. literalinclude:: ga_convex_start.py Now we have the file :file:`hull.db`, that can be examined like a regular :mod:`ase.db` database. The first row is special as it contains the parameters we have chosen to save (population size, reference energies, etc.). The rest of the rows are candidates marked with ``relaxed=0`` for not evaluated, ``queued=1`` for a candidate submitted for evaluation using a queueing system on a computer cluster and ``relaxed=1`` for evaluated candidates. Run the algorithm ================= With the database properly initiated we are ready to start the GA. Below is a short example with a few procreation operators that works on slabs, the ``RankFitnessPopulation`` described earlier. A full generation of new candidates are evaluated before they are added to the population, this is more efficient when using a fast method for evaluation. :download:`ga_convex_run.py` .. literalinclude:: ga_convex_run.py We can evaluate the results of the algorithm continuously while the database is being updated. We use the :class:`ase.phasediagram.PhaseDiagram` to plot the convex hull. In the script below we retrieve the evaluated candidates and plot the convex hull. We also write a trajectory file with all the candidates that make up the convex hull. :download:`plot_convex_hull.py` .. literalinclude:: plot_convex_hull.py All evaluated structures are put in the plot, if the number of points is disturbing the plot try to put ``only_plot_simplices=True`` instead of ``only_label_simplices=True``. We then view the structures on the convex hull by doing (on the command-line):: $ ase gui hull.traj .. _customization: Customization of the algorithm ============================== So far we have a working algorithm but it is quite naive, let us make some extensions for increasing efficiency. Exact duplicate identification ------------------------------ Evaluating identical candidates is a risk when they are created by the operators, so in order not to waste computational resources it is important to implement a check for whether an identical calculation has been performed. The list of elements in the candidate determines the structure completely, thus we can use that as a measure to see if an identical candidate has been evaluated:: for _ in range(pop_size): dup = True while dup: # Select parents for a new candidate parents = pop.get_two_candidates() # Select an operator and use it op = operation_selector.get_operator() offspring, desc = op.get_new_individual(parents) # An operator could return None if an offspring cannot be formed # by the chosen parents if offspring is None: continue atoms_string = ''.join(offspring.get_chemical_symbols()) dup = db.is_duplicate(atoms_string=atoms_string) .. _symmetry: Symmetric duplicate identification ---------------------------------- Having identical or very similar in the population will limit the diversity and cause premature convergence of the GA. We will try to prevent that by detecting if two structures are not identical in positions but instead symmetrically identical. For this we need a metric with which to characterize a structure, a symmetry tolerant fingerprint. There are many ways to achieve this and we will use a very simple average number of nearest neighbors, defined as: .. math:: \text{NN}_\text{avg} = [\frac{\#\text{Cu-Cu}}{N_{\text{Cu}}} , \frac{\#\text{Cu-Pt}}{N_{\text{Cu}}}, \frac{\#\text{Pt-Cu}}{N_{\text{Pt}}}, \frac{\#\text{Pt-Pt}}{N_{\text{Pt}}}] where :math:`\#\text{Cu-Cu}` is the number of Cu - Cu nearest neighbors and :math:`N_\text{Cu}` is the total number of Cu atoms in the slab. This check can be performed at two points; either just after candidate creation before evaluation or after evaluation before potential inclusion into the population. The latter method is well suited for situations where the evaluation will induce a change in the candidate e.g. by structural relaxation. We will use the former method here. The nearest neighbor average is put in ``candidate.info['key_value_pairs']`` as a string rounded off to two decimal points. *Note* this accuracy is fitting for this size slab, but need testing for other systems. :: from ase.ga.utilities import get_nnmat_string ... # Evaluating the starting population is changed to while db.get_number_of_unrelaxed_candidates() > 0: a = db.get_an_unrelaxed_candidate() # The following line is added a.info['key_value_pairs']['nnmat_string'] = get_nnmat_string(a, 2, True) set_raw_score(a, -get_mixing_energy(a)) db.add_relaxed_step(a) pop.update() ... # The line with dup = ... is replaced by nnmat_string = get_nnmat_string(offspring, 2, True) dup = (db.is_duplicate(atoms_string=offspring.info['key_value_pairs']['atoms_string']) or db.is_duplicate(formula=offspring.get_chemical_formula(), nnmat_string=nnmat_string)) ... # If the offspring is not a duplicate we must add the nnmat_string to # the key_value_pairs set_raw_score(offspring, -get_mixing_energy(offspring)) offspring.info['key_value_pairs']['nnmat_string'] = nnmat_string new_generation.append(offspring) Problem specific mutation operators ----------------------------------- Sometimes it is necessary to introduce operators that force the GA to investigate certain areas of the phase space. The :class:`ase.ga.slab_operators.SymmetrySlabPermutation` permutes the atoms in the slab to yield a more symmetric offspring. *Note* this requires `spglib `_ to be installed. Try it by:: from ase.ga.slab_operators import SymmetrySlabPermutation oclist = [... (1, SymmetrySlabPermutation()), ... ] Try to run the algorithm again to see if the number of evaluated structures goes down, but remember that the GA is non-deterministic so in order to compare efficiency of parameters one has to do statistics of many runs. The GA could also be run pool-based instead of generational, try to add each candidate to the database individually as they are evaluated and update the population after each addition, this should lower the total number of evaluations required to determine the convex hull. Another extension to the tutorial could be to only allow different elements in the top three layers of a thicker slab. This would replicate a surface alloy. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_convex_run.py000066400000000000000000000070511316323560300263630ustar00rootroot00000000000000import numpy as np from ase.ga.population import RankFitnessPopulation from ase.ga.data import DataConnection from ase.ga.offspring_creator import OperationSelector from ase.ga.slab_operators import (CutSpliceSlabCrossover, RandomSlabPermutation, RandomCompositionMutation) from ase.ga import set_raw_score from ase.calculators.emt import EMT # Connect to the database containing all candidates db = DataConnection('hull.db') # Retrieve saved parameters pop_size = db.get_param('population_size') refs = db.get_param('reference_energies') metals = db.get_param('metals') lattice_constants = db.get_param('lattice_constants') def get_mixing_energy(atoms): # Set the correct cell size from the lattice constant new_a = get_avg_lattice_constant(atoms.get_chemical_symbols()) # Use the orthogonal fcc cell to find the current lattice constant current_a = atoms.cell[0][0] / np.sqrt(2) atoms.set_cell(atoms.cell * new_a / current_a, scale_atoms=True) # Calculate the energy atoms.set_calculator(EMT()) e = atoms.get_potential_energy() # Subtract contributions from the pure element references # to get the mixing energy syms = atoms.get_chemical_symbols() for m in set(syms): e -= syms.count(m) * refs[m] return e def get_avg_lattice_constant(syms): a = 0. for m in set(syms): a += syms.count(m) * lattice_constants[m] return a / len(syms) def get_comp(atoms): return atoms.get_chemical_formula() # Specify the number of generations this script will run num_gens = 10 # Specify the procreation operators for the algorithm and # how often each is picked on average # The probability for an operator is the prepended integer divided by the sum # of integers oclist = [(3, CutSpliceSlabCrossover()), (1, RandomSlabPermutation()), (1, RandomCompositionMutation()) ] operation_selector = OperationSelector(*zip(*oclist)) # Pass parameters to the population instance # A variable_function is required to divide candidates into groups here we use # the chemical composition pop = RankFitnessPopulation(data_connection=db, population_size=pop_size, variable_function=get_comp) # Evaluate the starting population # The only requirement of the evaluation is to set the raw_score # Negative mixing energy means more stable than the pure slabs # The optimization always progress towards larger raw score, # so we take the negative mixing energy as the raw score while db.get_number_of_unrelaxed_candidates() > 0: a = db.get_an_unrelaxed_candidate() set_raw_score(a, -get_mixing_energy(a)) db.add_relaxed_step(a) pop.update() # Below is the iterative part of the algorithm for _ in range(num_gens): new_generation = [] for _ in range(pop_size): # Select parents for a new candidate parents = pop.get_two_candidates() # Select an operator and use it op = operation_selector.get_operator() offspring, desc = op.get_new_individual(parents) # An operator could return None if an offspring cannot be formed # by the chosen parents if offspring is None: continue set_raw_score(offspring, -get_mixing_energy(offspring)) new_generation.append(offspring) # We add a full relaxed generation at once, this is faster than adding # one at a time db.add_more_relaxed_candidates(new_generation) # update the population to allow new candidates to enter pop.update() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_convex_start.py000066400000000000000000000047221316323560300267160ustar00rootroot00000000000000from ase.build import fcc111 from ase.calculators.emt import EMT from ase.data import atomic_numbers, reference_states from ase.ga.data import PrepareDB from ase.ga import set_raw_score import random def get_avg_lattice_constant(syms): a = 0. for m in set(syms): a += syms.count(m) * lattice_constants[m] return a / len(syms) metals = ['Cu', 'Pt'] # Use experimental lattice constants lattice_constants = dict((m, reference_states[atomic_numbers[m]]['a']) for m in metals) # Create the references (pure slabs) manually pure_slabs = [] refs = {} print('Reference energies:') for m in metals: slab = fcc111(m, size=(2, 4, 3), a=lattice_constants[m], vacuum=5, orthogonal=True) slab.set_calculator(EMT()) # We save the reference energy as E_A / N e = slab.get_potential_energy() e_per_atom = e / len(slab) refs[m] = e_per_atom print('{0} = {1:.3f} eV/atom'.format(m, e_per_atom)) # The mixing energy for the pure slab is 0 by definition set_raw_score(slab, 0.0) pure_slabs.append(slab) # The population size should be at least the number of different compositions pop_size = 2 * len(slab) # We prepare the db and write a few constants that we are going to use later db = PrepareDB('hull.db', population_size=pop_size, reference_energies=refs, metals=metals, lattice_constants=lattice_constants) # We add the pure slabs to the database as relaxed because we have already # set the raw_score for slab in pure_slabs: db.add_relaxed_candidate(slab, atoms_string=''.join(slab.get_chemical_symbols())) # Now we create the rest of the candidates for the initial population for i in range(pop_size - 2): # How many of each metal is picked at random, making sure that # we do not pick pure slabs nA = random.randint(0, len(slab) - 2) nB = len(slab) - 2 - nA symbols = [metals[0]] * nA + [metals[1]] * nB + metals # Making a generic slab with the correct lattice constant slab = fcc111('X', size=(2, 4, 3), a=get_avg_lattice_constant(symbols), vacuum=5, orthogonal=True) # Setting the symbols and randomizing the order slab.set_chemical_symbols(symbols) random.shuffle(slab.numbers) # Add these candidates as unrelaxed, we will relax them later atoms_string = ''.join(slab.get_chemical_symbols()) db.add_unrelaxed_candidate(slab, atoms_string=atoms_string) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_fcc_alloys.rst000066400000000000000000000261441316323560300264770ustar00rootroot00000000000000.. _fcc_alloys_tutorial: =============================== GA Search for stable FCC alloys =============================== In this tutorial we will emulate an older paper [Johannesson]_ and determine the most stable FCC alloy using the genetic algorithm. Since the purpose is only the tutorial we will limit the phase space to the elements supported by the :mod:`EMT potential `. The search is also equivalent to the recent search for mixed metal ammines with superior properties for ammonia storage described here: | P. B. Jensen, S. Lysgaard, U. J. Quaade and T. Vegge | `Designing Mixed Metal Halide Ammines for Ammonia Storage Using Density Functional Theory and Genetic Algorithms`__ | Physical Chemistry Chemical Physics, Vol **16**, No. 36, pp. 19732-19740, (2014) __ http://dx.doi.org/10.1039/C4CP03133D .. contents:: Basic outline of the search =========================== 1. Choose the phase space of your problem. Is the number of possible individuals large enough to prevent a full screening and is the fitness function too discontinuous for a traditional optimization by derivation? If so continue. 2. Choose model structures and calculate references in those structures. Put the results somewhere accesible for a script initiated by the genetic algorithm. 3. Choose suitable parameters like population size (general rule of thumb for the population size: `log_2(N)` < pop size < `2log_2(N)`, where `N` is the size of the phase space), convergence criteria etc. 4. Create the initial population. 5. Choose procreation operators, i.e. how should offspring be produced. New operators can easily be created by modifying the existing operators. 6. Run the algorithm. Here we would like to predict the most stable fcc alloys. In this tutorial we only have the :mod:`ase.calculators.emt` available thus we are limited to the supported metal elements: Al, Ni, Cu, Pd, Ag, Pt and Au. We limit ourselves to at most 4 different metals in one structure, thereby having only `7^4 = 2401` candidates in the phase space, symmetry would make this number even lower but the number is fitting for this tutorial. For a real application of the algorithm it is necessary to use a more sophisticated calculator, in that case each individual calculation is performed on a cluster by submitting to a queuing system. How this is achieved in the algorithm is covered in :ref:`genetic_algorithm_optimization_tutorial`. .. defined for an alloy :mol:`ABC_2`: A + B + 2C -> :mol:`ABC_2` as: `\Delta H_f = E_{ABC2} - E_A - E_B - 2E_C` .. _references: Setting up reference database ============================= Now we need to set up a database in which reference calculations can be stored. This can either be in a central database server where keywords distinguish between different references or dedicated separate databases for each different type of reference calculations. In the following script, :download:`ga_fcc_references.py`, we put the references in the database file *refs.db*. Our model structure is fcc which is loaded with :func:`ase.lattice.cubic.FaceCenteredCubic`. We perform a volume relaxation to find the optimal lattice constant and lowest energy, which we save in the database as key-value pairs for quick retrieval. .. literalinclude:: ga_fcc_references.py Initial population ================== We choose a population size of 10 individuals and create the initial population by randomly selecting four elements for each starting individual. .. literalinclude:: ga_fcc_alloys_start.py Note how we add the population size and metals as extra key-value pairs when we create the database *fcc_alloys.db*. We can then retrieve these parameters later when running the main script to avoid having to input the same parameters twice. We can study our initial population by doing (on the command-line):: $ ase db fcc_alloys.db -c +atoms_string the term ``atoms_string`` determines the order in which the elements are put into the model structure. So it is possible to fully describe an individual by just providing the ``atoms_string``. .. _`main script`: Run the algorithm ================= The following script runs the algorithm, also find it here: :download:`ga_fcc_alloys_main.py`. *Note* that the `relaxation script`_ is imported from an external file :download:`ga_fcc_alloys_relax.py`. .. literalinclude:: ga_fcc_alloys_main.py In this script we run a generational GA as opposed to the pool GA outlined in :ref:`genetic_algorithm_optimization_tutorial`. This is achieved by having two for-loops; the innermost loop runs the number of times specified by the population size it corresponds to one generation. The outermost loop runs as many generations as specified in ``num_gens``. The function ``pop.update()`` is called after the innermost loop has finished thereby only adding individuals to the population after a whole generation is calculated. After each generation is finished the population is printed to the screen so we can follow the evolution. The calculated individuals are continuously added to ``fcc_alloys.db``, we can evaluate them directly by doing from the command line (in another shell instance if the GA is still running):: $ ase db fcc_alloys.db -c +atoms_string,raw_score,generation,hof -s raw_score *Note:* When reading the database using ``ase db``, it might be necessary to increase the number of shown entries, e.g. ``ase db fcc-alloys.db --limit N``, where ``N`` is the number of entries to show (as default only the first 20 entries are shown, ``--limit 0`` will show all. For further info use ``ase db --help``, or consult the :ref:`ase-db` manual). To prevent clutter we import the relax function from the following script: .. _`relaxation script`: .. literalinclude:: ga_fcc_alloys_relax.py The relaxation script is naturally similar to the script we used to calculate the references_. *Note* that the global optimum is :mol:`PtNi_3` with a -0.12 eV heat of formation, whereas the second worst alloy is :mol:`AlNi_3` heat of formation 0.26 eV. This result is in complete contrast to the conclusion obtained in [Johannesson]_, where :mol:`AlNi_3` is the most stable alloy within the phase space chosen here. Obviously there is a limit to the predictive power of EMT! Extending the algorithm ======================= There are different ways one can extend the algorithm and make it more complex and sophisticated, all employed in [Jensen]_: Extra mutation operators ------------------------ Instead of only using random operations we can include some that mutates elements to other elements nearby in the periodic table:: from ase.ga.element_mutations import RandomElementMutation from ase.ga.element_mutations import MoveDownMutation from ase.ga.element_mutations import MoveUpMutation from ase.ga.element_mutations import MoveLeftMutation from ase.ga.element_mutations import MoveRightMutation from ase.ga.element_crossovers import OnePointElementCrossover ... oclist = ([4,1,1,1,1,8], [RandomElementMutation([metals]), MoveDownMutation([metals]), MoveUpMutation([metals]), MoveLeftMutation([metals]), MoveRightMutation([metals]), OnePointElementCrossover([metals])]) operation_selector = OperationSelector(*oclist) These operators takes advantage of the fact that chemically like elements (close in the periodic table) exhibit similar properties and the substitution of one to a chemically similar elements could refine the properties of an alloy in the population. A natural extension of these operators would be to use a different ordering of the elements than the periodic table; e.g. Pettifor chemical scale, electronegativity, etc. Note how we have set the probabilities for selecting operators differently. The probability for ``RandomElementMutation`` is equal to the sum of the *move* mutations. Similarly the probability of ``OnePointElementCrossover`` is equal to the sum of all the mutation operators. This is to prevent the search from being purely local. Prevent identical calculations from being performed --------------------------------------------------- In the current `main script`_ there is no check to determine whether an identical calculation has been performed, this is easy to check in this regime where model structures are used and we can just use the ``atoms_string``. We insert the following in the inner loop:: for i in range(population_size): dup = True while dup: a1, a2 = pop.get_two_candidates(with_history=False) op = operation_selector.get_operator() a3, desc = op.get_new_individual([a1, a2]) dup = db.is_duplicate(atoms_string=''.join(a3.get_chemical_symbols())) Since the fcc model structure is completely symmetric we could compare sorted versions of the ``atoms_string``, thereby ruling out individuals containing the same elements in different order. Reuse of calculations between algorithm runs -------------------------------------------- Since genetic algorithms are inherently random in nature one can never be sure to obtain the global minimum with only one algorithm run, it is customary to perform more runs and check that the results agree. In this case it is vital to be able to reuse identical calculations between runs. We do the following from the command line to create a new database file containing only the relaxed structures:: $ ase db fcc_alloys.db relaxed=1 -i all_relaxed.db We subsequently add this to the `relaxation script`_:: def relax(input_atoms, ref_db): atoms_string = input_atoms.get_chemical_symbols() relaxed_db = connect('all_relaxed.db') save_relax = True try: dct = relaxed_db.get(atoms_string=''.join(atoms_string)) except KeyError: # Open connection to the database with reference data db = connect(ref_db) # Omitting lines up to the point where hof has been calculated ... else: hof = dct.hof latticeconstant = dct.latticeconstant save_relax = False # Place the calculated parameters in the info dictionary of the # input_atoms object ... # Put this at the very end if save_relax: relaxed_db.write(input_atoms,relaxed=1, key_value_pairs=input_atoms.info['key_value_pairs']) Before the actual calculation is performed ``all_relaxed.db`` is checked to see if it has been calculated before; if so we just collect the heat of formation, but if not we do the calculation and save it directly to ``all_relaxed.db``. *Note:* this addition assumes that `Prevent identical calculations from being performed`_. .. [Johannesson] G. Jóhannesson, T. Bligaard, A. Ruban, H. Skriver, K. Jacobsen and J. Nørskov. Combined Electronic Structure and Evolutionary Search Approach to Materials Design, Phys. Rev. Lett., Vol **88**, No. 25, pp. 1-5 (2002) .. [Jensen] P. B. Jensen, S. Lysgaard, U. J. Quaade and T. Vegge. Designing Mixed Metal Halide Ammines for Ammonia Storage Using Density Functional Theory and Genetic Algorithms Phys. Chem. Chem. Phys., Vol **16**, No. 36, pp. 19732-19740, (2014) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_fcc_alloys_main.py000066400000000000000000000036271316323560300273240ustar00rootroot00000000000000from ase.ga.data import DataConnection from ase.ga.element_mutations import RandomElementMutation from ase.ga.element_crossovers import OnePointElementCrossover from ase.ga.offspring_creator import OperationSelector from ase.ga.population import Population from ase.ga.convergence import GenerationRepetitionConvergence from ga_fcc_alloys_relax import relax # Specify the number of generations this script will run num_gens = 40 db = DataConnection('fcc_alloys.db') ref_db = 'refs.db' # Retrieve saved parameters population_size = db.get_param('population_size') metals = db.get_param('metals') # Specify the procreation operators for the algorithm # Try and play with the mutation operators that move to nearby # places in the periodic table oclist = ([1, 1], [RandomElementMutation(metals), OnePointElementCrossover(metals)]) operation_selector = OperationSelector(*oclist) # Pass parameters to the population instance pop = Population(data_connection=db, population_size=population_size) # We form generations in this algorithm run and can therefore set # a convergence criteria based on generations cc = GenerationRepetitionConvergence(pop, 3) # Relax the starting population while db.get_number_of_unrelaxed_candidates() > 0: a = db.get_an_unrelaxed_candidate() relax(a, ref_db) db.add_relaxed_step(a) pop.update() # Run the algorithm for _ in range(num_gens): if cc.converged(): print('converged') break for i in range(population_size): a1, a2 = pop.get_two_candidates(with_history=False) op = operation_selector.get_operator() a3, desc = op.get_new_individual([a1, a2]) db.add_unrelaxed_candidate(a3, description=desc) relax(a3, ref_db) db.add_relaxed_step(a3) pop.update() # Print the current population to monitor the evolution print(['-'.join(p.get_chemical_symbols()) for p in pop.pop]) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_fcc_alloys_relax.py000066400000000000000000000041561316323560300275110ustar00rootroot00000000000000import numpy as np from ase.lattice.cubic import FaceCenteredCubic from ase.calculators.emt import EMT from ase.eos import EquationOfState from ase.db import connect def relax(input_atoms, ref_db): atoms_string = input_atoms.get_chemical_symbols() # Open connection to the database with reference data db = connect(ref_db) # Load our model structure which is just FCC atoms = FaceCenteredCubic('X', latticeconstant=1.) atoms.set_chemical_symbols(atoms_string) # Compute the average lattice constant of the metals in this individual # and the sum of energies of the constituent metals in the fcc lattice # we will need this for calculating the heat of formation a = 0 ei = 0 for m in set(atoms_string): dct = db.get(metal=m) count = atoms_string.count(m) a += count * dct.latticeconstant ei += count * dct.energy_per_atom a /= len(atoms_string) atoms.set_cell([a, a, a], scale_atoms=True) # Since calculations are extremely fast with EMT we can also do a volume # relaxation atoms.set_calculator(EMT()) eps = 0.05 volumes = (a * np.linspace(1 - eps, 1 + eps, 9))**3 energies = [] for v in volumes: atoms.set_cell([v**(1. / 3)] * 3, scale_atoms=True) energies.append(atoms.get_potential_energy()) eos = EquationOfState(volumes, energies) v1, ef, B = eos.fit() latticeconstant = v1**(1. / 3) # Calculate the heat of formation by subtracting ef with ei hof = (ef - ei) / len(atoms) # Place the calculated parameters in the info dictionary of the # input_atoms object input_atoms.info['key_value_pairs']['hof'] = hof # Raw score must always be set # Use one of the following two; they are equivalent input_atoms.info['key_value_pairs']['raw_score'] = -hof # set_raw_score(input_atoms, -hof) input_atoms.info['key_value_pairs']['latticeconstant'] = latticeconstant # Setting the atoms_string directly for easier analysis atoms_string = ''.join(input_atoms.get_chemical_symbols()) input_atoms.info['key_value_pairs']['atoms_string'] = atoms_string ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_fcc_alloys_start.py000066400000000000000000000010061316323560300275220ustar00rootroot00000000000000import random from ase import Atoms from ase.ga.data import PrepareDB metals = ['Al', 'Au', 'Cu', 'Ag', 'Pd', 'Pt', 'Ni'] population_size = 10 # Create database db = PrepareDB('fcc_alloys.db', population_size=population_size, metals=metals) # Create starting population for i in range(population_size): atoms_string = [random.choice(metals) for _ in range(4)] db.add_unrelaxed_candidate(Atoms(atoms_string), atoms_string=''.join(atoms_string)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_fcc_references.py000066400000000000000000000016071316323560300271320ustar00rootroot00000000000000import numpy as np from ase.lattice.cubic import FaceCenteredCubic from ase.calculators.emt import EMT from ase.eos import EquationOfState from ase.db import connect db = connect('refs.db') metals = ['Al', 'Au', 'Cu', 'Ag', 'Pd', 'Pt', 'Ni'] for m in metals: atoms = FaceCenteredCubic(m) atoms.set_calculator(EMT()) e0 = atoms.get_potential_energy() a = atoms.cell[0][0] eps = 0.05 volumes = (a * np.linspace(1 - eps, 1 + eps, 9))**3 energies = [] for v in volumes: atoms.set_cell([v**(1. / 3)] * 3, scale_atoms=True) energies.append(atoms.get_potential_energy()) eos = EquationOfState(volumes, energies) v1, e1, B = eos.fit() atoms.set_cell([v1**(1. / 3)] * 3, scale_atoms=True) ef = atoms.get_potential_energy() db.write(atoms, metal=m, latticeconstant=v1**(1. / 3), energy_per_atom=ef / len(atoms)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/ga_optimize.rst000066400000000000000000000230641316323560300262170ustar00rootroot00000000000000.. _genetic_algorithm_optimization_tutorial: ===================================== Optimization with a Genetic Algorithm ===================================== A genetic algorithm (GA) has been implemented for global structure optimization within ase. The optimizer consists of its own module :mod:`ase.ga` which includes all classes needed for the optimizer. The method was first described in the supplemental material of | L. B. Vilhelmsen and B. Hammer | `Systematic Study of Au6 to Au12 Gold Clusters on MgO(100) F Centers Using Density-Functional Theory`__ | Physical Review Letters, Vol. 108 (Mar 2012), 126101 __ http://dx.doi.org/10.1103/physrevlett.108.126101 and a full account of the method is given in | L. B. Vilhelmsen and B. Hammer | `A genetic algorithm for first principles global optimization of supported nano structures`__ | Journal of Chemical Physics, Vol 141, 044711 (2014) __ http://dx.doi.org/10.1063/1.4886337 Any questions about how to use the GA can be asked at the mailing list. A Brief Overview of the Implementation ====================================== The GA relies on the ase.db module for tracking which structures have been found. Before the GA optimization starts the user therefore needs to prepare this database and appropriate folders. This is done through an initialization script as the one described in the next section. In this initialization the starting population is generated and added to the database. After initialization the main script is run. This script defines objects responsible for the different parts of the GA and then creates and locally relaxes new candidates. It is up to the user to define when the main script should terminate. An example of a main script is given in the next section. Notice that because of the persistent data storage the main script can be executed multiple times to generate new candidates. The GA implementation generally follows a responsibility driven approach. This means that each part of the GA is isolated into individual classes making it possible to put together an optimizer satisfying the needs of a specific optimization problem. This tutorial will use the following parts of the GA: * A population responsible for proposing new candidates to pair together. * A paring operator which combines two candidates. * A set of mutations. * A comparator which determines if two structures are different. * A starting population generator. Each of the above components are described in the supplemental material of the first reference given above and will not be discussed here. The example will instead focus on the technical aspect of executing the GA. A Basic Example =============== The user needs to specify the following three properties about the structure that needs to be optimized. * A list of atomic numbers for the structure to be optimized * A super cell in which to do the optimization. If the structure to optimize resides on a surface or in a support this supercell contains the atoms which should not be considered explicitly by the GA. * A box defining the volume of the super cell in which to randomly distribute the starting population. As an example we will find the structure of a :mol:`Ag_2Au_2` cluster on a Au(111) surface using the EMT optimizer. The script doing all the initialisations should be run in the folder in which the GA optimisation is to take place. The script looks as follows: .. literalinclude:: basic_example_create_database.py Having initialized the GA optimization we now need to actually run the GA. The main script running the GA consists of first an initialization part, and then a loop proposing new structures and locally optimizing them. The main script can look as follows: .. literalinclude:: basic_example_main_run.py The above script proposes and locally relaxes 20 new candidates. To speed up the execution of this sample the local relaxations are limited to 100 steps. This restriction should not be set in a real application. *Note* it is important to set the the ``raw_score``, as it is what is being optimized (maximized). It is really an input in the ``atoms.info['key_value_pairs']`` dictionary. The GA progress can be monitored by running the tool ``ase/ga/tools/get_all_candidates`` in the same folder as the GA. This will create a trajectory file ``all_candidates.traj`` which includes all locally relaxed candidates the GA has tried. This script can be run at the same time as the main script is running. This is possible because the ase.db database is being updated as the GA progresses. Running the GA in Parallel ========================== One of the great advantages of a GA is that many structures can be relaxed in parallel. This GA implementation includes two classes which facilitates running the GA in parallel. One class can be used for running several single threaded optimizations simultaneously on the same compute node, and the other class integrates the GA into the PBS queuing system used at many high performance computer clusters. Relaxations in Parallel on the Same Computer -------------------------------------------- In order to relax several structures simultaneously on the same computer a separate script relaxing one structure needs to be created. Continuing the example from above we therefore create a script taking as input the filename of the structure to relax and which as output saves a trajectory file with the locally optimized structure. It is important that the relaxed structure is named as in this script, since the parallel integration assumes this file naming scheme. For the example described above this script could look like .. literalinclude:: ga_basic_calc.py The main script needs to initialize the parallel controller and then the script needs to be changed the two places where structures are relaxed. The changed main script now looks like .. literalinclude:: ga_basic_parallel_main.py Notice how the main script is not cluttered by the local optimization logic and is therefore now also easier to read. ``n_simul`` controls the number of simultaneous relaxations, and can of course also be set to 1 effectively giving the same result as in the non parallel situation. The ``relax`` method on the ``ParallelLocalRun`` class only returns control to the main script when there is an execution thread available. In the above example the relax method immediately returns control to the main script the first 4 times it is called, but the fifth time control is first returned when one of the first four relaxations have been completed. Running the GA together with a queing system ============================================ The GA has been implemented with first principles structure optimization in mind. When using for instance DFT calculations for the local relaxations relaxing one structure can take many hours. For this reason the GA has been made so that it can work together with queing systems where each candidate is relaxed in a separate job. With this in mind the main script of the GA can thus also be considered a controller script which every time it is invoked gathers the current population, checks with a queing system for the number of jobs submitted, and submits new jobs. For a typical application the main script can thus be invoked by a crontab once every hour. To run the GA together with a queing system the user needs to specify a function which takes as input a job name and the path to the trajectory file that needs to be submitted (the ``jtg`` function in the sample script below). From this the function generates a PBS job file which is submitted to the queing system. The calculator script specified in the jobfile needs to obey the same naming scheme as the sample calculator script in the previous section. The sample relaxation script given in the previous can be used as starting point for a relaxation script. Handling of the parallel logic is in this case in the main script. The parameter n_simul given to the ``PBSQueueRun`` object determines how many relaxations should be in the queuing system simultaneously. The main script now looks the following: .. literalinclude:: ga_basic_pbs_main.py Parameterising the GA search for structure screening ==================================================== Relaxing every candidate suggested by the GA is very inefficient. Many of these structures are poor suggestions and are immediately discarded when they are compared to the current population. For this reason it can be very effective to screen the candidate before relaxation to have a guess whether the candidate has a chance to enter the population or not. If this is not the case they can be rejected without the need for a costly DFT calculation. By doing this you could, for example, use a more drastic mutation resulting in both potentially very good but also very bad candidates without having to waste a lot of CPU power evaluating the poor suggestions. Parameterising the whole database of structures and relating the parameters for the individual structures to their DFT energy is one example of how to handle this. As the database of structures grows doing the GA search, the fit parameters and the guessed energy becomes more refined. As a result, the screening becomes more precise. Below is a sample script of how this method can be implemented and used. The script is a direct extension of the above tutorial. A number of predefined parameterising methods are available and its implementation is by no means restricted to the use of one of those. In the example a linear relationship is expected between every parameter and the DFT energy. The main script for the GA run hence could look like: .. literalinclude:: ga_basic_parameters.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/ga/plot_convex_hull.py000066400000000000000000000011601316323560300271050ustar00rootroot00000000000000import numpy as np from ase.phasediagram import PhaseDiagram from ase.db import connect from ase.io import write db = connect('hull.db') # Select the evaluated candidates and retrieve the chemical formula and mixing # energy for the phase diagram refs = [] dcts = list(db.select('relaxed=1')) for dct in dcts: refs.append((dct.formula, -dct.raw_score)) pd = PhaseDiagram(refs) pd.plot(only_label_simplices=True) # View the simplices of the convex hull simplices = [] toview = sorted(np.array(dcts)[pd.hull], key=lambda x: x.mass) for dct in toview: simplices.append(dct.toatoms()) write('hull.traj', simplices) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/interface-h2o.py000066400000000000000000000031311316323560300255600ustar00rootroot00000000000000# creates: WL.png, Ni111slab2x2.png, WL_rot_c.png, WL_rot_a.png, WL_wrap.png, interface-h2o-wrap.png import numpy as np from ase.io import read, write from ase.build import fcc111 exec(compile(open('WL.py').read(), 'WL.py', 'exec')) # Use ase.io.read to load atoms object W = read('WL.traj') # View the water unit or print the unit cell size. write('WL.png', W, show_unit_cell=2) # We will need cellW later. cellW = W.get_cell() print(cellW) # We will need as close a lattice match as possible. lets try this slab. # Using the ase.build module, we make the fcc111 slab. slab = fcc111('Ni', size=[2, 4, 3], a=3.55, orthogonal=True) cell = slab.get_cell() write('Ni111slab2x2.png', slab, show_unit_cell=2) print(cell) # Rotate the unit cell first to get the close lattice match with the slab. W.set_cell([[cellW[1, 1], 0, 0], [0, cellW[0, 0], 0], cellW[2]], scale_atoms=False) write('WL_rot_c.png', W, show_unit_cell=2) # Now rotate atoms just like the unit cell W.rotate(90, 'z', center=(0, 0, 0)) write('WL_rot_a.png', W, show_unit_cell=2) # Now we can use wrap W.wrap() write('WL_wrap.png', W, show_unit_cell=2) # Match the water lattice to the slab by rescaling cell1 = np.array([cell[0], cell[1], cellW[2]]) W.set_cell(cell1, scale_atoms=True) # Set the positions of the water to be 1.5 aangstrom above the slab. p = slab.get_positions() W.center(vacuum=p[:, 2].max() + 1.5, axis=2) # Finally use extend to combine the slab and waterlayer interface = slab.copy() interface.extend(W) interface.center(vacuum=6, axis=2) write('interface-h2o-wrap.png', interface, show_unit_cell=2) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/lattice_constant.py000066400000000000000000000017711316323560300265000ustar00rootroot00000000000000# creates: lattice_constant.csv import numpy as np a0 = 3.52 / np.sqrt(2) c0 = np.sqrt(8 / 3.0) * a0 from ase.io import Trajectory traj = Trajectory('Ni.traj', 'w') from ase.build import bulk from ase.calculators.emt import EMT eps = 0.01 for a in a0 * np.linspace(1 - eps, 1 + eps, 3): for c in c0 * np.linspace(1 - eps, 1 + eps, 3): ni = bulk('Ni', 'hcp', a=a, c=c) ni.set_calculator(EMT()) ni.get_potential_energy() traj.write(ni) from ase.io import read configs = read('Ni.traj@:') energies = [config.get_potential_energy() for config in configs] a = np.array([config.cell[0, 0] for config in configs]) c = np.array([config.cell[2, 2] for config in configs]) functions = np.array([a**0, a, c, a**2, a * c, c**2]) p = np.linalg.lstsq(functions.T, energies)[0] p0 = p[0] p1 = p[1:3] p2 = np.array([(2 * p[3], p[4]), (p[4], 2 * p[5])]) a0, c0 = np.linalg.solve(p2.T, -p1) fd = open('lattice_constant.csv', 'w') fd.write('%.3f, %.3f\n' % (a0, c0)) fd.close() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/lattice_constant.rst000066400000000000000000000040141316323560300266510ustar00rootroot00000000000000.. _lattice_constant: ========================= Finding lattice constants ========================= .. seealso:: :ref:`eos`. HCP === Let's try to find the `a` and `c` lattice constants for HCP nickel using the :mod:`EMT ` potential. First, we make a good initial guess for `a` and `c` using the FCC nearest neighbor distance and the ideal `c/a` ratio: .. literalinclude:: lattice_constant.py :lines: 3-5 and create a trajectory for the results: .. literalinclude:: lattice_constant.py :lines: 7-8 Finally, we do the 9 calculations (three values for `a` and three for `c`): .. literalinclude:: lattice_constant.py :lines: 10-18 Analysis -------- Now, we need to extract the data from the trajectory. Try this: >>> from ase.build import bulk >>> ni = bulk('Ni', 'hcp', a=2.5, c=4.0) >>> ni.cell array([[ 2.5 , 0. , 0. ], [-1.25 , 2.165, 0. ], [ 0. , 0. , 4. ]]) So, we can get `a` and `c` from ``ni.cell[0, 0]`` and ``ni.cell[2, 2]``: .. literalinclude:: lattice_constant.py :lines: 20-25 We fit the energy to this expression: .. math:: p_0 + p_1 a + p_2 c + p_3 a^2 + p_4 ac + p_5 c^2 The best fit is found like this: .. literalinclude:: lattice_constant.py :lines: 26-27 and we can find the minimum like this: .. literalinclude:: lattice_constant.py :lines: 29-33 Results: .. csv-table:: :file: lattice_constant.csv :header: a, c Using the stress tensor ======================= One can also use the stress tensor to optimize the unit cell. For this we cannot use the EMT calculator.:: from ase.optimize import BFGS from ase.constraints import StrainFilter from gpaw import GPAW, PW ni = bulk('Ni', 'hcp', a=a0,c=c0) calc = GPAW(mode=PW(200),xc='LDA',txt='Ni.out') ni.set_calculator(calc) sf = StrainFilter(ni) opt = BFGS(sf) opt.run(0.005) If you want the optimization path in a trajectory, add these lines before calling the ``run()`` method:: traj = Trajectory('path.traj', 'w', ni) opt.attach(traj) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/manipulating_atoms.py000066400000000000000000000017641316323560300270370ustar00rootroot00000000000000# creates: a1.png a2.png a3.png import numpy as np from ase import Atom, Atoms from ase.io import write atoms = Atoms('Ni4', positions=[(0, 0, 0), (0.45, 0, 0), (0, 0.5, 0), (0.5, 0.5, 0)]) atoms[1].x = 0.5 a = 3.55 cell = [(2 / np.sqrt(2.0) * a, 0, 0), (1 / np.sqrt(2.0) * a, np.sqrt(3.0 / 2.0) * a, 0), (0, 0, 10 * np.sqrt(3.0) / 3.0 * a)] atoms.set_cell(cell, scale_atoms=True) write('a1.png', atoms, rotation='-73x', show_unit_cell=2) a = atoms.repeat((3, 3, 2)) a.set_cell(atoms.get_cell()) write('a2.png', a, rotation='-73x', show_unit_cell=True) xyzcell = np.identity(3) # The 3x3 unit matrix atoms.set_cell(xyzcell, scale_atoms=True) # Set the unit cell and rescale atoms.append(Atom('Ni', (1 / 6., 1 / 6., .1))) atoms.set_cell(cell, scale_atoms=True) # Set the unit cell and scale back a = atoms.repeat((3, 3, 1)) a.set_cell(atoms.get_cell()) write('a3.png', a, show_unit_cell=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/manipulating_atoms.rst000066400000000000000000000142051316323560300272110ustar00rootroot00000000000000.. testsetup:: # WL.py import numpy as np from ase import Atoms p = np.array( [[0.27802511, -0.07732213, 13.46649107], [0.91833251, -1.02565868, 13.41456626], [0.91865997, 0.87076761, 13.41228287], [1.85572027, 2.37336781, 13.56440907], [3.13987926, 2.3633134, 13.4327577], [1.77566079, 2.37150862, 14.66528237], [4.52240322, 2.35264513, 13.37435864], [5.16892729, 1.40357034, 13.42661052], [5.15567324, 3.30068395, 13.4305779], [6.10183518, -0.0738656, 13.27945071], [7.3856151, -0.07438536, 13.40814585], [6.01881192, -0.08627583, 12.1789428]]) c = np.array([[8.490373, 0., 0.], [0., 4.901919, 0.], [0., 0., 26.93236]]) W = Atoms('4(OH2)', positions=p, cell=c, pbc=[1, 1, 0]) W.write('WL.traj') .. _atommanip: Manipulating atoms ------------------ We will set up a one layer slab of Ni atoms with one Ag adatom. Define the slab atoms: >>> from ase import Atoms >>> atoms = Atoms('Ni4', [(0, 0, 0), ... (0.45, 0, 0), ... (0, 0.5, 0), ... (0.5, 0.5, 0)], ... cell=[1, 1, 1]) Have a look at the individual atoms: >>> atoms[0] Atom('Ni', [0.0, 0.0, 0.0], index=0) >>> atoms[1] Atom('Ni', [0.45, 0.0, 0.0], index=1) >>> atoms[2] Atom('Ni', [0.0, 0.5, 0.0], index=2) >>> atoms[3] Atom('Ni', [0.5, 0.5, 0.0], index=3) Let us assume we forgot how many atoms we set up: >>> atoms[4] Traceback (most recent call last): File "", line 1, in ? IndexError: list index out of range Wrong because we only have four atoms >>> len(atoms) 4 Change the position of the 2nd atom in the list >>> atoms[1].x = 0.5 >>> atoms.get_positions() array([[ 0. , 0. , 0. ], [ 0.5, 0. , 0. ], [ 0. , 0.5, 0. ], [ 0.5, 0.5, 0. ]]) What is the unit cell so far? >>> atoms.get_cell() array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) Now, setup a p(2x2) cell in a hexagonal surface. Here, *a* is the fcc lattice constant, the cell is 10 layers high: >>> from numpy import sqrt >>> a = 3.55 >>> cell = [(2/sqrt(2.)*a, 0, 0), ... (1/sqrt(2.)*a, sqrt(3./2.)*a, 0), ... (0, 0, 10*sqrt(3.)/3.*a)] >>> cell [(5.0204581464244864, 0, 0), (2.5102290732122432, 4.3478442934401409, 0), (0, 0, 20.495934556231713)] >>> atoms.set_cell(cell, scale_atoms=True) The argument *scale_atoms=True* indicates that the atomic positions should be scaled with the unit cell. The default is *scale_atoms=False* indicating that the cartesian coordinates remain the same when the cell is changed. >>> atoms.get_positions() array([[ 0. , 0. , 0. ], [ 2.51022907, 0. , 0. ], [ 1.25511454, 2.17392215, 0. ], [ 3.76534361, 2.17392215, 0. ]]) Plot the whole system by bringing up the :mod:`ase.gui`: >>> from ase.visualize import view >>> view(atoms) .. image:: a1.png :scale: 35 Within the viewer (called :mod:`ase gui `) it is possible to repeat the unit cell in all three directions (using the :menuselection:`Repeat --> View` window). .. image:: a2.png :scale: 35 We now add an adatom. Since the supercell is now declared as the unit cell for our atoms we can either add the atom using its cartesian coordinates in Angstrom or rescale the unit cell and use scaled coordinates. We try the latter: >>> from numpy import identity >>> from ase import Atom >>> xyzcell = identity(3) # The 3x3 unit matrix >>> atoms.set_cell(xyzcell, scale_atoms=True) # Set the unit cell and rescale >>> atoms.append(Atom('Ni', (1/6., 1/6., .1))) >>> atoms.set_cell(cell, scale_atoms=True) # Set the unit cell and scale back The structure now looks like this: >>> view(atoms) .. image:: a3.png :scale: 35 ------------------ Interface building ------------------ Now try something else. We will make an interface with Ni(111) and water. First we need a layer of water. One layer of water is constructed in this script :download:`WL.py`, and saved in the file 'WL.traj'. Now run the WL.py and then import the atoms object from the traj file using read. >>> from ase.io import read >>> W = read('WL.traj') Lets take a look at the structure using view. .. image:: WL.png :scale: 35 and let's look at the unit cell. >>> cellW = W.get_cell() >>> cellW array([[ 8.490373, 0. , 0. ], [ 0. , 4.901919, 0. ], [ 0. , 0. , 26.93236 ]]) We will need at Ni(111) slab which matches the water as closely as possible. A 2x4 orthogonal fcc111 supercell should be good enough. >>> from ase.build import fcc111 >>> slab = fcc111('Ni', size=[2, 4, 3], a=3.55, orthogonal=True) >>> cell = slab.get_cell() .. image:: Ni111slab2x2.png :scale: 35 >>> cell array([[ 5.02045815, 0. , 0. ], [ 0. , 8.69568859, 0. ], [ 0. , 0. , 6.14878037]]) Looking at the two unit cells, we can see that they match with around 2 percent difference, if we rotate one of the cells 90 degrees in the plane. Lets rotate the cell >>> W.set_cell([[cellW[1, 1], 0, 0], ... [0, cellW[0, 0], 0], ... cellW[2]], ... scale_atoms=False) .. image:: WL_rot_c.png :scale: 35 Let's also rotate the molecules: >>> W.rotate(90, 'z', center=(0, 0, 0)) .. image:: WL_rot_a.png :scale: 35 Now we can wrap the atoms into the cell >>> W.wrap() .. image:: WL_wrap.png :scale: 35 The :meth:`~ase.Atoms.wrap` method only works if periodic boundary conditions are enabled. We have a 2 percent lattice mismatch between Ni(111) and the water, so we scale the water in the plane to match the cell of the slab: >>> cell1 = np.array([cell[0], cell[1], cellW[2]]) >>> W.set_cell(cell1, scale_atoms=True) >>> p = slab.get_positions() >>> W.center(vacuum=p[:, 2].max() + 1.5, axis=2) Finally we use extend to copy the water onto the slab: >>> interface = slab.copy() >>> interface.extend(W) >>> interface.center(vacuum=6, axis=2) .. image:: interface-h2o-wrap.png :scale: 35 The positions of the water in the slab unitcell will be the same as they had in their own unit cell. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/000077500000000000000000000000001316323560300231625ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/md.rst000066400000000000000000000061521316323560300243200ustar00rootroot00000000000000.. _md_tutorial: ================== Molecular dynamics ================== .. note:: These examples *can* be used without Asap installed, then the ase.EMT calculator (implemented in Python) is used, but nearly superhuman patience is required. Here we demonstrate now simple molecular dynamics is performed. A crystal is set up, the atoms are given momenta corresponding to a temperature of 300K, then Newtons second law is integrated numerically with a time step of 5 fs (a good choice for copper). .. literalinclude:: moldyn1.py Note how the total energy is conserved, but the kinetic energy quickly drops to half the expected value. Why? Instead of printing within a loop, it is possible to use an "observer" to observe the atoms and do the printing (or more sophisticated analysis). .. literalinclude:: moldyn2.py Constant temperature MD ======================= Often, you want to control the temperature of an MD simulation. This can be done with the Langevin dynamics module. In the previous examples, replace the line ``dyn = VelocityVerlet(...)`` with:: dyn = Langevin(atoms, 5*units.fs, T*units.kB, 0.002) where T is the desired temperature in Kelvin. You also need to import Langevin, see the class below. The Langevin dynamics will then slowly adjust the total energy of the system so the temperature approaches the desired one. As a slightly less boring example, let us use this to melt a chunk of copper by starting the simulation without any momentum of the atoms (no kinetic energy), and with a desired temperature above the melting point. We will also save information about the atoms in a trajectory file called moldyn3.traj. .. literalinclude:: moldyn3.py After running the simulation, you can study the result with the command :: ase gui moldyn3.traj Try plotting the kinetic energy. You will *not* see a well-defined melting point due to finite size effects (including surface melting), but you will probably see an almost flat region where the inside of the system melts. The outermost layers melt at a lower temperature. .. note:: The Langevin dynamics will by default keep the position and momentum of the center of mass unperturbed. This is another improvement over just setting momenta corresponding to a temperature, as we did before. Isolated particle MD ==================== When simulating isolated particles with MD, it is sometimes preferable to set random momenta corresponding to a specific temperature and let the system evolve freely. With a relatively high temperature, the is however a risk that the collection of atoms will drift out of the simulation box because the randomized momenta gave the center of mass a small but non-zero velocity too. Let us see what happens when we propagate a nanoparticle for a long time: .. literalinclude:: moldyn4.py After running the simulation, use :ref:`ase-gui` to compare the results with how it looks if you comment out either the line that says `Stationary(atoms)`, `ZeroRotation(atoms)` or both. :: ase gui moldyn4.traj Try playing the movie with a high frame rate and set frame skipping to a low number. Can you spot the subtle difference? ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/moldyn1.py000066400000000000000000000026171316323560300251250ustar00rootroot00000000000000"""Demonstrates molecular dynamics with constant energy.""" from ase.lattice.cubic import FaceCenteredCubic from ase.md.velocitydistribution import MaxwellBoltzmannDistribution from ase.md.verlet import VelocityVerlet from ase import units # Use Asap for a huge performance increase if it is installed use_asap = False if use_asap: from asap3 import EMT size = 10 else: from ase.calculators.emt import EMT size = 3 # Set up a crystal atoms = FaceCenteredCubic(directions=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], symbol='Cu', size=(size, size, size), pbc=True) # Describe the interatomic interactions with the Effective Medium Theory atoms.set_calculator(EMT()) # Set the momenta corresponding to T=300K MaxwellBoltzmannDistribution(atoms, 300 * units.kB) # We want to run MD with constant energy using the VelocityVerlet algorithm. dyn = VelocityVerlet(atoms, 5 * units.fs) # 5 fs time step. def printenergy(a): """Function to print the potential, kinetic and total energy""" epot = a.get_potential_energy() / len(a) ekin = a.get_kinetic_energy() / len(a) print('Energy per atom: Epot = %.3feV Ekin = %.3feV (T=%3.0fK) ' 'Etot = %.3feV' % (epot, ekin, ekin / (1.5 * units.kB), epot + ekin)) # Now run the dynamics printenergy(atoms) for i in range(20): dyn.run(10) printenergy(atoms) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/moldyn2.py000066400000000000000000000026701316323560300251250ustar00rootroot00000000000000"""Demonstrates molecular dynamics with constant energy.""" from ase.lattice.cubic import FaceCenteredCubic from ase.md.velocitydistribution import MaxwellBoltzmannDistribution from ase.md.verlet import VelocityVerlet from ase import units # Use Asap for a huge performance increase if it is installed use_asap = True if use_asap: from asap3 import EMT size = 10 else: from ase.calculators.emt import EMT size = 3 # Set up a crystal atoms = FaceCenteredCubic(directions=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], symbol="Cu", size=(size, size, size), pbc=True) # Describe the interatomic interactions with the Effective Medium Theory atoms.set_calculator(EMT()) # Set the momenta corresponding to T=300K MaxwellBoltzmannDistribution(atoms, 300 * units.kB) # We want to run MD with constant energy using the VelocityVerlet algorithm. dyn = VelocityVerlet(atoms, 5 * units.fs) # 5 fs time step. def printenergy(a=atoms): # store a reference to atoms in the definition. """Function to print the potential, kinetic and total energy.""" epot = a.get_potential_energy() / len(a) ekin = a.get_kinetic_energy() / len(a) print('Energy per atom: Epot = %.3feV Ekin = %.3feV (T=%3.0fK) ' 'Etot = %.3feV' % (epot, ekin, ekin / (1.5 * units.kB), epot + ekin)) # Now run the dynamics dyn.attach(printenergy, interval=10) printenergy() dyn.run(200) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/moldyn3.py000066400000000000000000000027651316323560300251330ustar00rootroot00000000000000"""Demonstrates molecular dynamics with constant temperature.""" from __future__ import print_function from ase.lattice.cubic import FaceCenteredCubic from ase.md.langevin import Langevin from ase.io.trajectory import Trajectory from ase import units from asap3 import EMT # Way too slow with ase.EMT ! size = 10 T = 1500 # Kelvin # Set up a crystal atoms = FaceCenteredCubic(directions=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], symbol="Cu", size=(size, size, size), pbc=False) # Describe the interatomic interactions with the Effective Medium Theory atoms.set_calculator(EMT()) # We want to run MD with constant energy using the Langevin algorithm # with a time step of 5 fs, the temperature T and the friction # coefficient to 0.02 atomic units. dyn = Langevin(atoms, 5 * units.fs, T * units.kB, 0.002) def printenergy(a=atoms): # store a reference to atoms in the definition. """Function to print the potential, kinetic and total energy.""" epot = a.get_potential_energy() / len(a) ekin = a.get_kinetic_energy() / len(a) print('Energy per atom: Epot = %.3feV Ekin = %.3feV (T=%3.0fK) ' 'Etot = %.3feV' % (epot, ekin, ekin / (1.5 * units.kB), epot + ekin)) dyn.attach(printenergy, interval=50) # We also want to save the positions of all atoms after every 100th time step. traj = Trajectory('moldyn3.traj', 'w', atoms) dyn.attach(traj.write, interval=50) # Now run the dynamics printenergy() dyn.run(5000) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/md/moldyn4.py000066400000000000000000000033671316323560300251330ustar00rootroot00000000000000"""Demonstrates molecular dynamics for isolated particles.""" from __future__ import print_function from ase.cluster.cubic import FaceCenteredCubic from ase.optimize import QuasiNewton from ase.md.velocitydistribution import (MaxwellBoltzmannDistribution, Stationary, ZeroRotation) from ase.md.verlet import VelocityVerlet from ase import units # Use Asap for a huge performance increase if it is installed use_asap = True if use_asap: from asap3 import EMT size = 4 else: from ase.calculators.emt import EMT size = 2 # Set up a nanoparticle atoms = FaceCenteredCubic('Cu', surfaces=[[1, 0, 0], [1, 1, 0], [1, 1, 1]], layers=(size, size, size), vacuum=4) # Describe the interatomic interactions with the Effective Medium Theory atoms.set_calculator(EMT()) # Do a quick relaxation of the cluster qn = QuasiNewton(atoms) qn.run(0.001, 10) # Set the momenta corresponding to T=1200K MaxwellBoltzmannDistribution(atoms, 1200 * units.kB) Stationary(atoms) # zero linear momentum ZeroRotation(atoms) # zero angular momentum # We want to run MD using the VelocityVerlet algorithm. # Save trajectory: dyn = VelocityVerlet(atoms, 5 * units.fs, trajectory='moldyn4.traj') def printenergy(a=atoms): # store a reference to atoms in the definition. """Function to print the potential, kinetic and total energy.""" epot = a.get_potential_energy() / len(a) ekin = a.get_kinetic_energy() / len(a) print('Energy per atom: Epot = %.3feV Ekin = %.3feV (T=%3.0fK) ' 'Etot = %.3feV' % (epot, ekin, ekin / (1.5 * units.kB), epot + ekin)) dyn.attach(printenergy, interval=10) # Now run the dynamics printenergy() dyn.run(2000) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/minimahopping/000077500000000000000000000000001316323560300254215ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/minimahopping/Cu2_Pt110.py000066400000000000000000000020011316323560300273020ustar00rootroot00000000000000from ase import Atoms, Atom from ase.build import fcc110 from ase.optimize.minimahopping import MinimaHopping from ase.calculators.emt import EMT from ase.constraints import FixAtoms, Hookean # Make the Pt 110 slab. atoms = fcc110('Pt', (2, 2, 2), vacuum=7.) # Add the Cu2 adsorbate. adsorbate = Atoms([Atom('Cu', atoms[7].position + (0., 0., 2.5)), Atom('Cu', atoms[7].position + (0., 0., 5.0))]) atoms.extend(adsorbate) # Constrain the surface to be fixed and a Hookean constraint between # the adsorbate atoms. constraints = [FixAtoms(indices=[atom.index for atom in atoms if atom.symbol=='Pt']), Hookean(a1=8, a2=9, rt=2.6, k=15.), Hookean(a1=8, a2=(0., 0., 1., -15.), k=15.),] atoms.set_constraint(constraints) # Set the calculator. calc = EMT() atoms.set_calculator(calc) # Instantiate and run the minima hopping algorithm. hop = MinimaHopping(atoms, Ediff0=2.5, T0=4000.) hop(totalsteps=10) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/minimahopping/mhsummary.py000066400000000000000000000001431316323560300300130ustar00rootroot00000000000000from ase.optimize.minimahopping import MHPlot mhplot = MHPlot() mhplot.save_figure('summary.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/minimahopping/minimahopping.py000066400000000000000000000001341316323560300306300ustar00rootroot00000000000000# creates: summary.png exec(open('Cu2_Pt110.py').read()) exec(open('mhsummary.py').read()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/minimahopping/minimahopping.rst000066400000000000000000000067461316323560300310270ustar00rootroot00000000000000.. _mhtutorial: ================================================ Constrained minima hopping (global optimization) ================================================ This is an example of a search for a global optimum geometric configuration using the minima hopping algorithm, along with the Hookean class of constraints. This type of approach is useful in searching for the global optimum position of adsorbates on a surface while enforcing that the adsorbates' identity is preserved. The below example looks at finding the optimum configuration of a :mol:`Cu_2` adsorbate on a fixed Pt (110) surface. Although this is not a physically relevant simulation --- these elements (Cu, Pt) were chosen only because they work with the EMT calculator -- one can imagine replacing the :mol:`Cu_2` adsorbate with CO, for example, to find its optimum binding configuration under the constraint that the CO does not dissociate into separate C and O adsorbates. This also uses the Hookean constraint in two different ways. In the first, it constrains the Cu atoms to feel a restorative force if their interatomic distance exceeds 2.6 Angstroms; this preserves the dimer character of the :mol:`Cu_2`, and if they are near each other they feel no constraint. The second constrains one of the Cu atoms to feel a downward force if its position exceeds a z coordinate of 15 Angstroms. Since the Cu atoms are tied together, we don't necessarily need to put such a force on both of the Cu atoms. This second constraint prevents the :mol:`Cu_2` adsorbate from flying off the surface, which would lead to it exploring a lot of irrelevant configurational space, such as up in the vacuum or on the bottom of the next periodic slab. .. literalinclude:: Cu2_Pt110.py This script will produce 10 molecular dynamics and 11 optimization files. It will also produce a file called 'minima.traj' which contains all of the accepted minima. You can look at the progress of the algorithm in the file hop.log in combination with the trajectory files. Alternatively, there is a utility to allow you to visualize the progress of the algorithm. You can run this from within the same directory as your algorithm as: .. literalinclude:: mhsummary.py This will make a summary figure, which should look something like the one below. As the search is inherently random, yours will look different than this (and this will look different each time the documentation is rebuilt). In this figure, you will see on the :math:`E_\mathrm{pot}` axes the energy levels of the conformers found. The flat bars represent the energy at the end of each local optimization step. The checkmark indicates the local minimum was accepted; red arrows indicate it was rejected for the three possible reasons. The black path between steps is the potential energy during the molecular dynamics (MD) portion of the step; the dashed line is the local optimization on termination of the MD step. Note the y axis is broken to allow different energy scales between the local minima and the space explored in the MD simulations. The :math:`T` and :math:`E_\mathrm{diff}` plots show the values of the self-adjusting parameters as the algorithm progresses. .. image:: summary.png You can see examples of the implementation of this for real adsorbates as well as find suitable parameters for the Hookean constraints: | Andrew Peterson | `Global optimization of adsorbate–surface structures while preserving molecular identity`__ | Top. Catal., Vol. **57**, 40 (2014) __ http://dx.doi.org/10.1007/s11244-013-0161-8 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/000077500000000000000000000000001316323560300233265ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion.py000066400000000000000000000015121316323560300256650ustar00rootroot00000000000000# -*- coding: utf-8 -*- # creates: diffusion-I.png, diffusion-T.png, diffusion-F.png # creates: diffusion-barrier.png from ase.io import read, write from ase.neb import NEBTools if 1: exec(compile(open('diffusion1.py').read(), 'diffusion1.py', 'exec')) exec(compile(open('diffusion2.py').read(), 'diffusion2.py', 'exec')) exec(compile(open('diffusion4.py').read(), 'diffusion4.py', 'exec')) exec(compile(open('diffusion5.py').read(), 'diffusion5.py', 'exec')) images = read('neb.traj@-5:') for name, a in zip('ITF', images[::2]): cell = a.get_cell() del a.constraints a = a * (2, 2, 1) a.set_cell(cell) write('diffusion-%s.pov' % name, a, show_unit_cell=True, transparent=False, display=False, run_povray=True) nebtools = NEBTools(images) assert abs(nebtools.get_barrier()[0] - 0.374) < 1e-3 ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion.rst000066400000000000000000000036051316323560300260520ustar00rootroot00000000000000.. _diffusion tutorial: =============================================== Diffusion of gold atom on Al(100) surface (NEB) =============================================== First, set up the initial and final states: |initial| |final| .. literalinclude:: diffusion1.py .. note:: Notice how the tags are used to select the constrained atoms Now, do the NEB calculation: .. literalinclude:: diffusion2.py Visualize the results with:: $ ase gui neb.traj and select Tools->NEB. |ts| |barrier| You can also analyze within a python script, which can be useful particularly if you are analyzing the output of many NEB jobs, with the :class:`ase.neb.NEBTools` class. Some examples of its use are below; the final example was used to make the figure you see above. .. literalinclude:: diffusion5.py .. note:: For this reaction, the reaction coordinate is very simple: The *x*-coordinate of the Au atom. In such cases, the NEB method is overkill, and a simple constraint method should be used like in this tutorial: :ref:`constraints diffusion tutorial`. .. seealso:: * :mod:`ase.neb` * :mod:`ase.constraints` * :ref:`constraints diffusion tutorial` * :func:`~ase.build.fcc100` .. |initial| image:: diffusion-I.png .. |final| image:: diffusion-F.png .. |ts| image:: diffusion-T.png .. |barrier| image:: diffusion-barrier.png Restarting NEB ============== Restart NEB from the trajectory file: .. literalinclude:: diffusion4.py Parallelizing over images with MPI ================================== Instead of having one process do the calculations for all three internal images in turn, it will be faster to have three processes do one image each. In order to be able to run python with MPI you need a special parallel python interpreter, for example gpaw-python. The example below can then be run with ``mpiexec -np 3 gpaw-python diffusion3.py``: .. literalinclude:: diffusion3.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion1.py000066400000000000000000000014111316323560300257440ustar00rootroot00000000000000from ase.build import fcc100, add_adsorbate from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.optimize import QuasiNewton # 2x2-Al(001) surface with 3 layers and an # Au atom adsorbed in a hollow site: slab = fcc100('Al', size=(2, 2, 3)) add_adsorbate(slab, 'Au', 1.7, 'hollow') slab.center(axis=2, vacuum=4.0) # Make sure the structure is correct: #view(slab) # Fix second and third layers: mask = [atom.tag > 1 for atom in slab] #print(mask) slab.set_constraint(FixAtoms(mask=mask)) # Use EMT potential: slab.set_calculator(EMT()) # Initial state: qn = QuasiNewton(slab, trajectory='initial.traj') qn.run(fmax=0.05) # Final state: slab[-1].x += slab.get_cell()[0, 0] / 2 qn = QuasiNewton(slab, trajectory='final.traj') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion2.py000066400000000000000000000010451316323560300257500ustar00rootroot00000000000000from ase.io import read from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.optimize import BFGS initial = read('initial.traj') final = read('final.traj') constraint = FixAtoms(mask=[atom.tag > 1 for atom in initial]) images = [initial] for i in range(3): image = initial.copy() image.set_calculator(EMT()) image.set_constraint(constraint) images.append(image) images.append(final) neb = NEB(images) neb.interpolate() qn = BFGS(neb, trajectory='neb.traj') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion3.py000066400000000000000000000014351316323560300257540ustar00rootroot00000000000000from ase.io import read from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.optimize import BFGS from ase.io.trajectory import Trajectory from ase.parallel import rank, size initial = read('initial.traj') final = read('final.traj') constraint = FixAtoms(mask=[atom.tag > 1 for atom in initial]) images = [initial] j = rank * 3 // size # my image number for i in range(3): image = initial.copy() if i == j: image.set_calculator(EMT()) image.set_constraint(constraint) images.append(image) images.append(final) neb = NEB(images, parallel=True) neb.interpolate() qn = BFGS(neb) if rank % (size // 3) == 0: traj = Trajectory('neb%d.traj' % j, 'w', images[1 + j], master=True) qn.attach(traj) qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion4.py000066400000000000000000000005431316323560300257540ustar00rootroot00000000000000from ase.io import read from ase.calculators.emt import EMT from ase.neb import NEB from ase.optimize import BFGS # read the last structures (of 5 images used in NEB) images = read('neb.traj@-5:') for i in range(1, len(images) - 1): images[i].set_calculator(EMT()) neb = NEB(images) qn = BFGS(neb, trajectory='neb_restart.traj') qn.run(fmax=0.005) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/diffusion5.py000066400000000000000000000013561316323560300257600ustar00rootroot00000000000000import matplotlib.pyplot as plt from ase.neb import NEBTools from ase.io import read images = read('neb.traj@-5:') nebtools = NEBTools(images) # Get the calculated barrier and the energy change of the reaction. Ef, dE = nebtools.get_barrier() # Get the barrier without any interpolation between highest images. Ef, dE = nebtools.get_barrier(fit=False) # Get the actual maximum force at this point in the simulation. max_force = nebtools.get_fmax() # Create a figure like that coming from ASE-GUI. fig = nebtools.plot_band() fig.savefig('diffusion-barrier.png') # Create a figure with custom parameters. fig = plt.figure(figsize=(5.5, 4.0)) ax = fig.add_axes((0.15, 0.15, 0.8, 0.75)) nebtools.plot_band(ax) fig.savefig('diffusion-barrier.png') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/idpp.rst000066400000000000000000000054301316323560300250160ustar00rootroot00000000000000.. _idpp_tutorial: ============================================================================== Image Dependent Pair Potential for improved interpolation of NEB initial guess ============================================================================== Reference: S. Smidstrup, A. Pedersen, K. Stokbro and H. Jonsson, Improved initial guess for minimum energy path calculations, J. Chem. Phys. 140, 214106 (2014). Use of the NEB method is dependent upon generating an initial guess for the images lying between the initial and final states. The most simple approach is to use linear interpolation of the atomic coordinates. However, this can be problematic as the quality of the interpolated path can ofter be far from the real one. The implication being that a lot of time is spent in the NEB routine optimising the shape of the path, before the transition state is homed-in upon. The image dependent pair potential is a method that has been developed to provide an improvement to the initial guess for the NEB path. The IDPP method uses the bond distance between the atoms involved in the transition state to create target structures for the images, rather than interpolating the atomic positions. By defining an objective function in terms of the distances between atoms, the NEB algorithm is used with this image dependent pair potential (IDPP) to create the initial guess for the full NEB calculation. Note: The examples below utilise the EMT calculator for illustrative purposes, the results should not be over interpreted. Example 1: Ethane ================= This example illustrates the use of the IDPP interpolation scheme to generate an initial guess for rotation of a methyl group around the CC bond. Using the standard linear interpolation approach, as in the following example, we can see that 46 iterations are required to find the transition state. .. literalinclude:: idpp1.py However if we modify our script slightly and use the IDPP method to find the initial guess, we can see that the number of iterations required to find the transition state is reduced to 14. .. literalinclude:: idpp2.py Clearly, if one was using a full DFT calculator one can potentially gain a significant time improvement. Example 2: N diffusion over a step edge ======================================= Often we are interested in generating an initial guess for a surface reaction. This example illustrates how we can optimise our initial and final state structures before using the IDPP interpolation to generate our initial guess for the NEB calculation: .. literalinclude:: idpp3.py To again illustrate the potential speedup, the following script which uses the linear interpolation takes 23 iterations to find a transition state, compared to 12 using the IDPP interpolation. .. literalinclude:: idpp4.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/idpp1.py000066400000000000000000000013531316323560300247170ustar00rootroot00000000000000from ase.build import molecule from ase.neb import NEB from ase.calculators.emt import EMT from ase.optimize.fire import FIRE as QuasiNewton # Optimise molecule initial = molecule('C2H6') initial.set_calculator(EMT()) relax = QuasiNewton(initial) relax.run(fmax=0.05) # Create final state final = initial.copy() final.positions[2:5] = initial.positions[[3, 4, 2]] # Generate blank images images = [initial] for i in range(9): images.append(initial.copy()) for image in images: image.set_calculator(EMT()) images.append(final) # Run IDPP interpolation neb = NEB(images) neb.interpolate() # Run NEB calculation qn = QuasiNewton(neb, trajectory='ethane_linear.traj', logfile='ethane_linear.log') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/idpp2.py000066400000000000000000000014051316323560300247160ustar00rootroot00000000000000from ase.build import molecule from ase.neb import NEB from ase.calculators.emt import EMT from ase.optimize.fire import FIRE as QuasiNewton from ase.visualize import view #Optimise molecule initial = molecule('C2H6') initial.set_calculator(EMT()) relax = QuasiNewton(initial) relax.run(fmax=0.05) view(initial) #Create final state final = initial.copy() final.positions[2:5] = initial.positions[[3, 4, 2]] #Generate blank images images = [initial] for i in range(9): images.append(initial.copy()) for image in images: image.set_calculator(EMT()) images.append(final) #Run IDPP interpolation neb = NEB(images) neb.interpolate('idpp') #Run NEB calculation qn = QuasiNewton(neb, trajectory='ethane_idpp.traj', logfile='ethane_idpp.log') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/idpp3.py000066400000000000000000000037121316323560300247220ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.visualize import view from ase.optimize.fire import FIRE as QuasiNewton from ase.lattice.cubic import FaceCenteredCubic #set the number of images you want nimages = 5 #some algebra to determine surface normal and the plane of the surface d3=[2,1,1] a1=np.array([0,1,1]) d1=np.cross(a1,d3) a2=np.array([0,-1,1]) d2=np.cross(a2,d3) #create your slab slab =FaceCenteredCubic(directions=[d1,d2,d3], size=(2,1,2), symbol=('Pt'), latticeconstant=3.9) #add some vacuum to your slab uc = slab.get_cell() print(uc) uc[2] += [0,0,10] #there are ten layers of vacuum uc = slab.set_cell(uc,scale_atoms=False) #view the slab to make sure it is how you expect view(slab) #some positions needed to place the atom in the correct place x1 = 1.379 x2 = 4.137 x3 = 2.759 y1 = 0.0 y2 = 2.238 z1 = 7.165 z2 = 6.439 #Add the adatom to the list of atoms and set constraints of surface atoms. slab += Atoms('N', [ ((x2+x1)/2,y1,z1+1.5)]) mask = [atom.symbol == 'Pt' for atom in slab] slab.set_constraint(FixAtoms(mask=mask)) #optimise the initial state # Atom below step initial = slab.copy() initial.set_calculator(EMT()) relax = QuasiNewton(initial) relax.run(fmax=0.05) view(initial) #optimise the initial state # Atom above step slab[-1].position = (x3,y2+1,z2+3.5) final = slab.copy() final.set_calculator(EMT()) relax = QuasiNewton(final) relax.run(fmax=0.05) view(final) #create a list of images for interpolation images = [initial] for i in range(nimages): images.append(initial.copy()) for image in images: image.set_calculator(EMT()) images.append(final) view(images) #carry out idpp interpolation neb = NEB(images) neb.interpolate('idpp') #Run NEB calculation qn = QuasiNewton(neb, trajectory='N_diffusion.traj', logfile='N_diffusion.log') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/neb/idpp4.py000066400000000000000000000037451316323560300247310ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.constraints import FixAtoms from ase.calculators.emt import EMT from ase.neb import NEB from ase.visualize import view from ase.optimize.fire import FIRE as QuasiNewton from ase.lattice.cubic import FaceCenteredCubic #set the number of images you want nimages = 5 #some algebra to determine surface normal and the plane of the surface d3=[2,1,1] a1=np.array([0,1,1]) d1=np.cross(a1,d3) a2=np.array([0,-1,1]) d2=np.cross(a2,d3) #create your slab slab =FaceCenteredCubic(directions=[d1,d2,d3], size=(2,1,2), symbol=('Pt'), latticeconstant=3.9) #add some vacuum to your slab uc = slab.get_cell() print(uc) uc[2] += [0,0,10] #there are ten layers of vacuum uc = slab.set_cell(uc,scale_atoms=False) #view the slab to make sure it is how you expect view(slab) #some positions needed to place the atom in the correct place x1 = 1.379 x2 = 4.137 x3 = 2.759 y1 = 0.0 y2 = 2.238 z1 = 7.165 z2 = 6.439 #Add the adatom to the list of atoms and set constraints of surface atoms. slab += Atoms('N', [ ((x2+x1)/2,y1,z1+1.5)]) mask = [atom.symbol == 'Pt' for atom in slab] slab.set_constraint(FixAtoms(mask=mask)) #optimise the initial state # Atom below step initial = slab.copy() initial.set_calculator(EMT()) relax = QuasiNewton(initial) relax.run(fmax=0.05) view(initial) #optimise the initial state # Atom above step slab[-1].position = (x3,y2+1,z2+3.5) final = slab.copy() final.set_calculator(EMT()) relax = QuasiNewton(final) relax.run(fmax=0.05) view(final) #create a list of images for interpolation images = [initial] for i in range(nimages): images.append(initial.copy()) for image in images: image.set_calculator(EMT()) images.append(final) view(images) #carry out idpp interpolation neb = NEB(images) #neb.interpolate('idpp') neb.interpolate() #Run NEB calculation qn = QuasiNewton(neb, trajectory='N_diffusion_lin.traj', logfile='N_diffusion_lin.log') qn.run(fmax=0.05) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/qmmm/000077500000000000000000000000001316323560300235315ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/qmmm/qmmm.rst000066400000000000000000000147561316323560300252470ustar00rootroot00000000000000.. _qmmm: ========================= ASE for QM/MM Simulations ========================= QM/MM Simulations couple two (or more) descriptions to get total energy and forces for the entire system in an efficiant manner. The method paper on our implementation is currently being written. General background can be found `here `__, `here `__, and `here `__ . Examples of what this code has been used for can be seen `here `__, and `here `__. This section will show you how to setup up various QM/MM simulations. We will be using GPAW_ for the QM part. Other QM calculators should be straightforwardly compatible with the subtractive-scheme SimpleQMMM calculator, but for the Excplicit Interaction EIQMMM calculator, you would need to be able to put an electrostatic external potential into the calculator for the QM subsystem. .. _GPAW: http://wiki.fysik.dtu.dk/gpaw You might also be interested in the solvent MM potentials included in ASE. The tutorial on :ref:`TIPnP Water Box Equillibration` could be relevant to have a look at. Electrostatic Embedding QM/MM ----------------------------- The total energy expression for the full QM/MM system is: .. math:: E_\mathrm{TOT} = E_\mathrm{QM} + E_\mathrm{I} + E_\mathrm{MM}. The MM region is modelled using point charge force fields, with charges :math:`q_i` and :math:`\tau_i` denoting their spatial coordinates, so the QM/MM coupling term :math:`E_\mathrm{I}` will be .. math:: E_\mathrm{I} = \sum_{i=1}^C q_i \int \frac{n({\bf r})}{\mid\!{\bf r} - \tau_i\!\mid}\mathrm{d}{\bf r} + \sum_{i=1}^C\sum_{\alpha=1}^A \frac{q_i Z_{\alpha}}{\mid\!{\bf R}_\alpha - \tau_i\!\mid} + E_\mathrm{RD} where :math:`n({\bf r})` is the spatial electronic density of the quantum region, :math:`Z_\alpha` and :math:`{\bf R}_\alpha` are the charge and coordinates of the nuclei in the QM region, respectively, and :math:`E_\mathrm{RD}` is the term describing the remaining, non-Coulomb interactions between the two subsystems. For the MM point-charge external potential in GPAW, we use the total pseudo- charge density :math:`\tilde{\rho}({\bf r})` for the coupling, and since the Coloumb integral is evaluated numerically on the real space grid, thus the coupling term ends up like this: .. math:: E_\mathrm{I} = \sum_{i=1}^C q_i \sum_{g} \frac{\tilde{\rho}({\bf r})}{\mid\!{\bf r}_g - \tau_i\!\mid} v_g + E_\mathrm{RD} Currently, the term for :math:`E_{\mathrm{RD}}` implemented is a Lennard- Jones-type potential: .. math:: E_\mathrm{RD} = \sum_i^C \sum_\alpha^A 4\epsilon\left[ \left(\frac{\sigma}{\mid\!{\bf R}_\alpha - \tau_i\!\mid}\right)^{12} - \left(\frac{\sigma}{\mid\!{\bf R}_\alpha - \tau_i\!\mid}\right)^{6} \right] Let's first do a very simple electrostatic embedding QM/MM single point energy calculation on the water dimer. The necessary inputs are described in the :class:`ase.calculators.qmmm.EIQMMM` class. The following script will calculate the QM/MM single point energy of the water dimer from the :ref:`s22`, using LDA and TIP3P. .. literalinclude:: water_dimer.py Here, we have just used the TIP3P LJ parameters for the QM part as well. If this is a good idea or not isn't trivial. The LJInteractions module needs combined parameters for all possible permutations of atom types in your system, that have LJ parameters. A list of combination rules can be found `here `_. Here's a code snippet of how to combine LJ parameters of atom types A and B via the Lorentz-Berthelot rules:: import itertools as it parameters = {'A': (epsAA, sigAA), 'B': (epsBB, sigBB)} def lorenz_berthelot(p): combined = {} for comb in it.product(p.keys(), repeat=2): combined[comb] = ((p[comb[0]][0] * p[comb[1]][0])**0.5, (p[comb[0]][1] + p[comb[1]][1])/2) return combined combined = lorenz_berthelot(parameters) interaction = LJInteractions(combined) This will (somewhat redundantly) yield:: >>>combined {('A', 'A'): (epsAA, sigAA), ('A', 'B'): (epsAB, sigAB), ('B', 'A'): (epsAB, sigAB), ('B', 'B'): (epsBB, sigBB)} It is also possible to run structural relaxations and molecular dynamics using the electrostatic embedding scheme:: from ase.constraints import FixBondLengths from ase.optimize import LBFGS mm_bonds = [(3, 4), (4, 5), (5, 3)] atoms.constraints = FixBondLengths(mm_bonds) dyn = LBFGS(atoms=atoms, trajectory='dimer.traj') dyn.run(fmax=0.05) Since TIP3P is a rigid potential, we constrain all interatomic distances. QM bond lengths can be constrained too, in the same manner. The implementation was developed with the focus of modelling ions and complexes in solutions, we're working on expanding its functionality to encompass surfaces. In broad strokes, the steps to performing QM/MM MD simulations for thermal sampling or dynamics studies, these are the steps: QM/MM MD General Strategy for A QM complex in an MM solvent: 1. Equillibrate an MM solvent box using one of the MM potentials built into ASE (see :ref:`TIPnP Water Box Equillibration` for water potentials), one of the compatible external MM codes, or write your own potential (see :ref:`Adding new calculators`) 2. Optimize the gas-phase structure of your QM complex in GPAW, analyze what level of accuracy you will need for your task. 3. Place the relaxed structure of the QM molecule in your MM solvent box, deleting overlapping MM molecules. 4. Re-equillibrate the QM/MM system. 5. Run production runs. For these types of simulations, you'd probably want two cells: a QM (non- periodic) and and MM cell (periodic):: atoms.set_pbc(True) # Set up calculator atoms.calc = EIQMMM( qm_idx, GPAW(txt='qm.out'), TIP3P(), interaction, embedding=embedding, vacuum=4., # Now QM cell has walls min. 4 Å from QM atoms output='qmmm.log') This will center the QM subsystem in the MM cell. Current limitations: * No QM/MM border over bonds * No QM PBCs ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/qmmm/water_dimer.py000066400000000000000000000015551316323560300264130ustar00rootroot00000000000000from __future__ import print_function from ase.data import s22 from ase.calculators.tip3p import TIP3P, epsilon0, sigma0 from ase.calculators.qmmm import EIQMMM, LJInteractions, Embedding from gpaw import GPAW # Create system atoms = s22.create_s22_system('Water_dimer') atoms.center(vacuum=4.0) # Make QM atoms selection of first water molecule: qm_idx = range(3) # Set up interaction & embedding object interaction = LJInteractions({('O', 'O'): (epsilon0, sigma0)}) embedding = Embedding(rc=0.02) # Short range analytical potential cutoff # Set up calculator atoms.calc = EIQMMM(qm_idx, GPAW(txt='qm.out'), TIP3P(), interaction, embedding=embedding, vacuum=None, # if None, QM cell = MM cell output='qmmm.log') print(atoms.get_potential_energy()) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/saving_graphics.py000066400000000000000000000035111316323560300263030ustar00rootroot00000000000000# creates: nice.png import numpy as np from ase import Atoms from ase.io import write atoms = Atoms('Ag', cell=(2.7, 2.7, 2.7), pbc=True) * (18, 8, 8) # view with ASE-GUI #view(atoms) rotation = '-70x, -20y, -2z' # found using ASE-GUI menu 'view -> rotate' #Make colors from ase.utils import hsv colors = hsv(atoms.positions[:, 0]) # Textures tex = ['jmol',] * 288 + ['glass',] * 288+ ['ase3',] * 288 + ['vmd',] * 288 # keywords kwargs = { # Keywords that exist for eps, png, and pov 'rotation': rotation, 'show_unit_cell': 2, 'colors': colors, 'radii': None, } extra_kwargs = { # For povray files only 'display' : False, # Display while rendering 'pause' : False, # Pause when done rendering (only if display) 'transparent' : False, # Transparent background 'canvas_width' : None, # Width of canvas in pixels 'canvas_height': None, # Height of canvas in pixels 'camera_dist' : 50., # Distance from camera to front atom 'image_plane' : None, # Distance from front atom to image plane # (focal depth for perspective) 'camera_type' : 'perspective', # perspective, ultra_wide_angle 'point_lights' : [], # [[loc1, color1], [loc2, color2],...] 'area_light' : [(2., 3., 40.) ,# location 'White', # color .7, .7, 3, 3], # width, height, Nlamps_x, Nlamps_y 'background' : 'White', # color 'textures' : tex, # Length of atoms list of texture names 'celllinewidth': 0.05, # Radius of the cylinders representing the cell } # Make flat png file #write('flat.png', atoms, **kwargs) # Make the color of the glass beads semi-transparent colors2 = np.zeros((1152, 4)) colors2[:, :3] = colors colors2[288: 576, 3] = 0.95 kwargs['colors'] = colors2 kwargs.update(extra_kwargs) # Make the raytraced image write('nice.pov', atoms, run_povray=True, **kwargs) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/000077500000000000000000000000001316323560300254225ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/al110.rst000066400000000000000000000064161316323560300270010ustar00rootroot00000000000000.. _selfdiffusion: Self-diffusion on the Al(110) surface (NEB + Dimer method exercise) ------------------------------------------------------------------- .. image:: Al110slab.png :height: 270 px :alt: Al(110) surface :align: right In this exercise, we will find minimum-energy paths and transition states using the :mod:`Nudged Elastic Band ` method. Another method for finding the transition state (i.e. the highest-energy state), the Dimer method, will also be explored. Take a look at the Al(110) surface shown in the picture on the right. The red atom represents an Al adatom that can move around on the surface. The adatom can jump along the rows (into the picture) or across the rows (to the right in the picture). * Which of the two jumps do you think will have the largest energy barrier? The template script :download:`neb1.py` will find the minimum-energy path for a jump along the rows. Read, understand, and run the script. * Make sure you understand what is going on (make a good sketch of the 110 surface). * View the profile of the NEB path in ASE's GUI. How is the shape (symmetric/asymmetric) and does this make sense for this process (when looking at the moving adatom in the simulation)? * What is the energy barrier? * Copy the script to ``neb2.py`` and modify it to find the barrier for diffusion across one of the rows. What is the barrier for this process? * Can you think of a third type of diffusion process? Hint: It is called an exchange process and you can read more about it in the paper listed :mod:`here `. Find the barrier for this process, and compare the energy barrier with the two other ones. (If you give up look at :download:`neb3.py`) * Could there be other final-image configurations for the exchange process? .. hint:: When opening a trajectory with :program:`ase gui` with calculated energies, the default plot window shows the energy versus frame number. To get a better feel of the energy barrier in an NEB calculation; choose :menuselection:`Tools --> NEB`. This will give a smooth curve of the energy as a function of the NEB path length, with the slope at each point estimated from the force. In the NEB calculations above we knew the final states, so all we had to do was to calculate the path between the initial state and the final state. But in some cases we do not know the final state. Then the :mod:`Dimer method ` can be used to find the transition state. The result of a Dimer calculation will hence not be the complete particle trajectory as in the NEB output, but rather the configuration of the transition-state image. The template script :download:`dimer_along.py` will find the transition-state image of the jump along the row. Again, read, understand and run the script. * Make sure you understand what is going on. For instance, see the trajectory file in the GUI. * Compare the transition-state images of the NEB and Dimer as viewed in the GUI. Are they identical? * What is the energy barrier? How does it compare to the one found in the NEB calculation? * Do the same as above for the jump across the row and the exchange process by copying and modifying the Dimer script, while remembering that you have to give the relevant atoms a kick in a meaningful direction. ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/dimer_along.py000066400000000000000000000041041316323560300302530ustar00rootroot00000000000000"""Dimer: Diffusion along rows""" from __future__ import print_function import numpy as np from math import sqrt from ase import Atoms, Atom from ase.io import Trajectory from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.calculators.emt import EMT from ase.dimer import DimerControl, MinModeAtoms, MinModeTranslate # Setting up the initial image: a = 4.0614 b = a / sqrt(2) h = b / 2 initial = Atoms('Al2', positions=[(0, 0, 0), (a / 2, b / 2, -h)], cell=(a, b, 2 * h), pbc=(1, 1, 0)) initial *= (2, 2, 2) initial.append(Atom('Al', (a / 2, b / 2, 3 * h))) initial.center(vacuum=4.0, axis=2) N = len(initial) # number of atoms # Make a mask of zeros and ones that select fixed atoms - the two # bottom layers: mask = initial.positions[:, 2] - min(initial.positions[:, 2]) < 1.5 * h constraint = FixAtoms(mask=mask) initial.set_constraint(constraint) # Calculate using EMT: initial.set_calculator(EMT()) # Relax the initial state: QuasiNewton(initial).run(fmax=0.05) e0 = initial.get_potential_energy() traj = Trajectory('dimer_along.traj', 'w', initial) traj.write() # Making dimer mask list: d_mask = [False] * (N - 1) + [True] # Set up the dimer: d_control = DimerControl(initial_eigenmode_method='displacement', displacement_method='vector', logfile=None, mask=d_mask) d_atoms = MinModeAtoms(initial, d_control) # Displacement settings: displacement_vector = np.zeros((N, 3)) # Strength of displacement along y axis = along row: displacement_vector[-1, 1] = 0.001 # The direction of the displacement is set by the a in # displacement_vector[-1, a], where a can be 0 for x, 1 for y and 2 for z. d_atoms.displace(displacement_vector=displacement_vector) # Converge to a saddle point: dim_rlx = MinModeTranslate(d_atoms, trajectory=traj, logfile=None) dim_rlx.run(fmax=0.001) diff = initial.get_potential_energy() - e0 print(('The energy barrier is %f eV.' % diff)) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/neb1.py000066400000000000000000000031171316323560300266230ustar00rootroot00000000000000"""Diffusion along rows""" from __future__ import print_function from math import sqrt from ase import Atoms, Atom from ase.io import write from ase.visualize import view from ase.constraints import FixAtoms from ase.optimize import QuasiNewton, MDMin from ase.neb import NEB from ase.calculators.emt import EMT a = 4.0614 b = a / sqrt(2) h = b / 2 initial = Atoms('Al2', positions=[(0, 0, 0), (a / 2, b / 2, -h)], cell=(a, b, 2 * h), pbc=(1, 1, 0)) initial *= (2, 2, 2) initial.append(Atom('Al', (a / 2, b / 2, 3 * h))) initial.center(vacuum=4.0, axis=2) final = initial.copy() final.positions[-1, 1] += b view([initial, final]) # Construct a list of images: images = [initial] for i in range(5): images.append(initial.copy()) images.append(final) # Make a mask of zeros and ones that select fixed atoms (the # two bottom layers): mask = initial.positions[:, 2] - min(initial.positions[:, 2]) < 1.5 * h constraint = FixAtoms(mask=mask) print(mask) for image in images: # Let all images use an EMT calculator: image.set_calculator(EMT()) image.set_constraint(constraint) # Relax the initial and final states: QuasiNewton(initial).run(fmax=0.05) QuasiNewton(final).run(fmax=0.05) # Create a Nudged Elastic Band: neb = NEB(images) # Make a starting guess for the minimum energy path (a straight line # from the initial to the final state): neb.interpolate() # Relax the NEB path: minimizer = MDMin(neb) minimizer.run(fmax=0.05) # Write the path to a trajectory: view(images) # 126 meV write('jump1.traj', images) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/neb2.py000066400000000000000000000031501316323560300266210ustar00rootroot00000000000000"""Diffusion across rows""" from __future__ import print_function from math import sqrt from ase import Atoms, Atom from ase.io import write from ase.visualize import view from ase.constraints import FixAtoms from ase.optimize import QuasiNewton from ase.optimize import MDMin from ase.neb import NEB from ase.calculators.emt import EMT a = 4.0614 b = a / sqrt(2) h = b / 2 initial = Atoms('Al2', positions=[(0, 0, 0), (a / 2, b / 2, -h)], cell=(a, b, 2 * h), pbc=(1, 1, 0)) initial *= (2, 2, 2) initial.append(Atom('Al', (a / 2, b / 2, 3 * h))) initial.center(vacuum=4.0, axis=2) final = initial.copy() final.positions[-1, 0] += a view([initial, final]) # Construct a list of images: images = [initial] for i in range(5): images.append(initial.copy()) images.append(final) # Make a mask of zeros and ones that select fixed atoms (the # two bottom layers): mask = initial.positions[:, 2] - min(initial.positions[:, 2]) < 1.5 * h constraint = FixAtoms(mask=mask) print(mask) for image in images: # Let all images use an EMT calculator: image.set_calculator(EMT()) image.set_constraint(constraint) # Relax the initial and final states: QuasiNewton(initial).run(fmax=0.05) QuasiNewton(final).run(fmax=0.05) # Create a Nudged Elastic Band: neb = NEB(images) # Make a starting guess for the minimum energy path (a straight line # from the initial to the final state): neb.interpolate() # Relax the NEB path: minimizer = MDMin(neb) minimizer.run(fmax=0.05) # Write the path to a trajectory: view(images) # 564 meV write('jump2.traj', images) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/neb3.py000066400000000000000000000034101316323560300266210ustar00rootroot00000000000000"""Diffusion by an exchange process""" from __future__ import print_function from math import sqrt from ase import Atoms, Atom from ase.io import write from ase.visualize import view from ase.constraints import FixAtoms from ase.optimize import QuasiNewton, MDMin from ase.neb import NEB from ase.calculators.emt import EMT a = 4.0614 b = a / sqrt(2) h = b / 2 initial = Atoms('Al2', positions=[(0, 0, 0), (a / 2, b / 2, -h)], cell=(a, b, 2 * h), pbc=(1, 1, 0)) initial *= (2, 2, 2) initial.append(Atom('Al', (a / 2, b / 2, 3 * h))) initial.center(vacuum=4.0, axis=2) final = initial.copy() # move adatom to row atom 14 final.positions[-1, :] = initial.positions[14] # Move row atom 14 to the next row final.positions[14, :] = initial.positions[-1] + [a, b, 0] view([initial, final]) # Construct a list of images: images = [initial] for i in range(5): images.append(initial.copy()) images.append(final) # Make a mask of zeros and ones that select fixed atoms (the # two bottom layers): mask = initial.positions[:, 2] - min(initial.positions[:, 2]) < 1.5 * h constraint = FixAtoms(mask=mask) print(mask) for image in images: # Let all images use an EMT calculator: image.set_calculator(EMT()) image.set_constraint(constraint) # Relax the initial and final states: QuasiNewton(initial).run(fmax=0.05) QuasiNewton(final).run(fmax=0.05) # Create a Nudged Elastic Band: neb = NEB(images) # Make a starting guess for the minimum energy path (a straight line # from the initial to the final state): neb.interpolate() # Relax the NEB path: minimizer = MDMin(neb) # minimizer = QuasiNewton(neb) minimizer.run(fmax=0.05) # Write the path to a trajectory: view(images) # 235 meV write('jump3.traj', images) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/selfdiffusion/plot.py000066400000000000000000000015261316323560300267560ustar00rootroot00000000000000# creates: Al110slab.png from math import sqrt from ase import Atoms, Atom from ase.io import write from ase.data.colors import jmol_colors a = 4.0614 b = a / sqrt(2) h = b / 2 atoms = Atoms('Al2', positions=[(0, 0, 0), (a / 2, b / 2, -h)], cell=(a, b, 2 * h), pbc=(1, 1, 0)) atoms *= (2, 2, 2) atoms.append(Atom('Al', (a / 2, b / 2, 3 * h))) atoms.center(vacuum=4., axis=2) atoms *= (2, 3, 1) atoms.cell /= [2, 3, 1] rotation = '-60x, 10y' radii = 1.2 # single float specifies a uniform scaling of the covalent radii colors = jmol_colors[atoms.numbers] colors[16::17] = [1, 0, 0] write('Al110slab.pov', atoms, rotation=rotation, colors=colors, radii=radii, show_unit_cell=2, canvas_width=500, transparent=False, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/surface.py000066400000000000000000000003631316323560300245660ustar00rootroot00000000000000# -*- coding: utf-8 -*- # creates: surface.png from ase.io import read, write exec(compile(open('N2Cu.py').read(), 'N2Cu.py', 'exec')) image = read('N2Cu.traj@-1') write('surface.pov', image, transparent=False, display=False, run_povray=True) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/surface.rst000066400000000000000000000141441316323560300247500ustar00rootroot00000000000000.. _surface: ================================ Introduction: Nitrogen on copper ================================ This section gives a quick (and incomplete) overview of what ASE can do. We will calculate the adsorption energy of a nitrogen molecule on a copper surface. This is done by calculating the total energy for the isolated slab and for the isolated molecule. The adsorbate is then added to the slab and relaxed, and the total energy for this composite system is calculated. The adsorption energy is obtained as the sum of the isolated energies minus the energy of the composite system. Here is a picture of the system after the relaxation: .. image:: surface.png Please have a look at the following script :download:`N2Cu.py`: .. literalinclude:: N2Cu.py Assuming you have ASE setup correctly (:ref:`download_and_install`) run the script:: python N2Cu.py Please read below what the script does. ----- Atoms ----- The :class:`~ase.Atoms` object is a collection of atoms. Here is how to define a N2 molecule by directly specifying the position of two nitrogen atoms:: >>> from ase import Atoms >>> d = 1.10 >>> molecule = Atoms('2N', positions=[(0., 0., 0.), (0., 0., d)]) You can also build crystals using, for example, the lattice module which returns :class:`~ase.Atoms` objects corresponding to common crystal structures. Let us make a Cu (111) surface:: >>> from ase.build import fcc111 >>> slab = fcc111('Cu', size=(4,4,2), vacuum=10.0) ----------- Calculators ----------- Many :mod:`ase.calculators` can be used with ASE, including :mod:`~ase.calculators.emt`, Asap_, Dacapo_, GPAW_, Abinit_, Vasp_. See the ASE home page for the full list. .. _Asap: http://wiki.fysik.dtu.dk/asap .. _Dacapo: http://wiki.fysik.dtu.dk/dacapo .. _GPAW: http://wiki.fysik.dtu.dk/gpaw .. _Siesta: http://www.icmab.es/siesta .. _Abinit: http://www.abinit.org .. _Vasp: http://cms.mpi.univie.ac.at/vasp In this overview we use the effective medium theory (EMT) calculator, as it is very fast and hence useful for getting started. We can attach a calculator to the previously created :class:`~ase.Atoms` objects:: >>> from ase.calculators.emt import EMT >>> slab.set_calculator(EMT()) >>> molecule.set_calculator(EMT()) and use it to calculate the total energies for the systems by using the :meth:`~ase.Atoms.get_potential_energy` method from the :class:`~ase.Atoms` class:: >>> e_slab = slab.get_potential_energy() >>> e_N2 = molecule.get_potential_energy() -------------------- Structure relaxation -------------------- Let's use the :mod:`QuasiNewton ` minimizer to optimize the structure of the N2 molecule adsorbed on the Cu surface. First add the adsorbate to the Cu slab, for example in the on-top position:: >>> h = 1.85 >>> add_adsorbate(slab, molecule, h, 'ontop') In order to speed up the relaxation, let us keep the Cu atoms fixed in the slab by using :class:`~ase.constraints.FixAtoms` from the :mod:`~ase.constraints` module. Only the N2 molecule is then allowed to relax to the equilibrium structure:: >>> from ase.constraints import FixAtoms >>> constraint = FixAtoms(mask=[a.symbol != 'N' for a in slab]) >>> slab.set_constraint(constraint) Now attach the :mod:`QuasiNewton ` minimizer to the system and save the trajectory file. Run the minimizer with the convergence criteria that the force on all atoms should be less than some ``fmax``:: >>> from ase.optimize import QuasiNewton >>> dyn = QuasiNewton(slab, trajectory='N2Cu.traj') >>> dyn.run(fmax=0.05) .. note:: The general documentation on :ref:`structure optimizations ` contains information about different algorithms, saving the state of an optimizer and other functionality which should be considered when performing expensive relaxations. ------------ Input-output ------------ Writing the atomic positions to a file is done with the :func:`~ase.io.write` function:: >>> from ase.io import write >>> write('slab.xyz', slab) This will write a file in the xyz-format. Possible formats are: ======== =========================== format description ======== =========================== ``xyz`` Simple xyz-format ``cube`` Gaussian cube file ``pdb`` Protein data bank file ``traj`` ASE's own trajectory format ``py`` Python script ======== =========================== Reading from a file is done like this:: >>> from ase.io import read >>> slab_from_file = read('slab.xyz') If the file contains several configurations, the default behavior of the :func:`~ase.io.write` function is to return the last configuration. However, we can load a specific configuration by doing:: >>> read('slab.traj') # last configuration >>> read('slab.traj', -1) # same as above >>> read('slab.traj', 0) # first configuration ------------- Visualization ------------- The simplest way to visualize the atoms is the :func:`~ase.visualize.view` function:: >>> from ase.visualize import view >>> view(slab) This will pop up a :mod:`ase.gui` window. Alternative viewers can be used by specifying the optional keyword ``viewer=...`` - use one of 'ase.gui', 'gopenmol', 'vmd', or 'rasmol'. (Note that these alternative viewers are not a part of ASE and will need to be installed by the user separately.) The VMD viewer can take an optional ``data`` argument to show 3D data:: >>> view(slab, viewer='VMD', data=array) ------------------ Molecular dynamics ------------------ Let us look at the nitrogen molecule as an example of molecular dynamics with the :class:`VelocityVerlet ` algorithm. We first create the :class:`VelocityVerlet ` object giving it the molecule and the time step for the integration of Newton's law. We then perform the dynamics by calling its :meth:`~ase.md.verlet.VelocityVerlet.run` method and giving it the number of steps to take: >>> from ase.md.verlet import VelocityVerlet >>> from ase import units >>> dyn = VelocityVerlet(molecule, dt=1.0 * units.fs) >>> for i in range(10): ... pot = molecule.get_potential_energy() ... kin = molecule.get_kinetic_energy() ... print('%2d: %.5f eV, %.5f eV, %.5f eV' % (i, pot + kin, pot, kin)) ... dyn.run(steps=20) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/test.py000066400000000000000000000011551316323560300241150ustar00rootroot00000000000000# creates: test.txt from __future__ import print_function import sys import numpy as np # Monkey-patch view() to avoid ASE-GUI windows popping up: import ase.visualize ase.visualize.view = lambda *args, **kwargs: None fd = open('test.txt', 'w') sys.path.append('selfdiffusion') import neb1 e1 = np.ptp([i.get_potential_energy() for i in neb1.images]) assert abs(e1 - 0.111) < 0.002 import neb2 e2 = np.ptp([i.get_potential_energy() for i in neb2.images]) assert abs(e2 - 0.564) < 0.002 import neb3 e3 = np.ptp([i.get_potential_energy() for i in neb3.images]) assert abs(e3 - 0.239) < 0.002 print(e1, e2, e3, file=fd) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/tipnp_equil/000077500000000000000000000000001316323560300251135ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/tipnp_equil/tip3p_equil.py000066400000000000000000000032561316323560300277310ustar00rootroot00000000000000from ase import Atoms from ase.constraints import FixBondLengths from ase.calculators.tip3p import TIP3P, rOH, angleHOH from ase.md import Langevin import ase.units as units from ase.io.trajectory import Trajectory import numpy as np # Set up water box at 20 deg C density x = angleHOH * np.pi / 180 / 2 pos = [[0, 0, 0], [0, rOH * np.cos(x), rOH * np.sin(x)], [0, rOH * np.cos(x), -rOH * np.sin(x)]] atoms = Atoms('OH2', positions=pos) vol = ((18.01528 / 6.022140857e23) / (0.9982 / 1e24))**(1 / 3.) atoms.set_cell((vol, vol, vol)) atoms.center() atoms = atoms.repeat((3, 3, 3)) atoms.set_pbc(True) # RATTLE-type constraints on O-H1, O-H2, H1-H2. atoms.constraints = FixBondLengths([(3 * i + j, 3 * i + (j + 1) % 3) for i in range(3**3) for j in [0, 1, 2]]) tag = 'tip3p_27mol_equil' atoms.calc = TIP3P(rc=4.5) md = Langevin(atoms, 1 * units.fs, temperature=300 * units.kB, friction=0.01, logfile=tag + '.log') traj = Trajectory(tag + '.traj', 'w', atoms) md.attach(traj.write, interval=1) md.run(4000) # Repeat box and equilibrate further. tag = 'tip3p_216mol_equil' atoms.set_constraint() # repeat not compatible with FixBondLengths currently. atoms = atoms.repeat((2, 2, 2)) atoms.constraints = FixBondLengths([(3 * i + j, 3 * i + (j + 1) % 3) for i in range(len(atoms) / 3) for j in [0, 1, 2]]) atoms.calc = TIP3P(rc=7.) md = Langevin(atoms, 2 * units.fs, temperature=300 * units.kB, friction=0.01, logfile=tag + '.log') traj = Trajectory(tag + '.traj', 'w', atoms) md.attach(traj.write, interval=1) md.run(2000) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/tipnp_equil/tipnp_equil.rst000066400000000000000000000027441316323560300302050ustar00rootroot00000000000000.. _TIPnP Water Box Equillibration: Equilibrating A TIPnP Water Box =============================== This tutorial shows how to use the TIP3P and TIP4P force fields in ASE. Since the TIPnP type water interpotentials are for rigid molecules, there are no intramolecular force terms, and we need to constrain all internal degrees of freedom. For this, we're using the RATTLE-type constraints of the :ref:`FixBondLengths` class to constrain all internal atomic distances (O-H1, O-H2, and H1-H2) for each molecule. The box is equillibrated with the Langevin thermostat. For efficiency, we first equillibrate a smaller box, and then repeat that once more for the final equillibration. However, the potentials are not parallelized, and are mainly included for testing and for use with QM/MM tasks, so expect to let it run for some time. The following is for TIP3P: .. literalinclude:: tip3p_equil.py .. note:: The temperature calculated by ASE is assuming all degrees of freedom are available to the system. Since the constraints have removed the 3 vibrational modes from each water, the shown temperature will be 2/3 of the actual value. The procedure for the TIP4P force field is the same, with the following exception: the atomic sequence **must** be OHH, OHH, ... . So to perform the same task using TIP4P, you simply have to import that calculator instead: :: from ase.calculators.tip4p import TIP4P, rOH, angleHOH More info about the TIP4P potential: :mod:`ase.calculators.tip4p` ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/tutorials.rst000066400000000000000000000026451316323560300253510ustar00rootroot00000000000000.. _tutorials: Tutorials ========= Python ------ If you are not familiar with Python please read :ref:`what is python`. .. toctree:: :maxdepth: 3 ../python ASE --- Most of the tutorials will use the :mod:`EMT ` potential, but any other :mod:`Calculator ` could be plugged in instead. .. toctree:: :maxdepth: 1 surface manipulating_atoms atomization lattice_constant eos/eos db/db constraints/diffusion selfdiffusion/al110 neb/diffusion neb/idpp dissociation md/md tipnp_equil/tipnp_equil wannier/wannier minimahopping/minimahopping ga/ga_optimize ga/ga_fcc_alloys ga/ga_convex_hull defects/defects qmmm/qmmm NumPy ----- If your ASE scripts make extensive use of matrices you may want to familiarize yourself with :ref:`numpy`. .. toctree:: :maxdepth: 3 ../numpy Further reading --------------- For more details: * Look at the documentation for the individual :ref:`modules `. * Browse the :git:`source code <>` online. Videos ------ The following video tutorials are available: - **Overview and installation of ASE**, by Anthony Goodrow (duration: ~5min 30sec; size: 26 MB) - en: |oi_en| .. |oi_en| image:: ../static/United_States_of_America.png :target: https://wiki.fysik.dtu.dk/ase-files/oi_en.avi .. |oi_cn| image:: ../static/China.png :target: https://wiki.fysik.dtu.dk/ase-files/oi_ch.avi ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/000077500000000000000000000000001316323560300242255ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/benzene.py000066400000000000000000000006261316323560300262310ustar00rootroot00000000000000from ase.build import molecule from gpaw import GPAW atoms = molecule('C6H6') atoms.center(vacuum=3.5) calc = GPAW(h=.21, xc='PBE', txt='benzene.txt', nbands=18) atoms.set_calculator(calc) atoms.get_potential_energy() calc.set(fixdensity=True, txt='benzene-harris.txt', nbands=40, eigensolver='cg', convergence={'bands': 35}) atoms.get_potential_energy() calc.write('benzene.gpw', mode='all') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/plot_band_structure.py000066400000000000000000000012421316323560300306600ustar00rootroot00000000000000import pylab as pl fig = pl.figure(1, dpi=80, figsize=(4.2, 6)) fig.subplots_adjust(left=.16, right=.97, top=.97, bottom=.05) # Plot KS bands k, eps = pl.load('KSbands.txt', unpack=True) pl.plot(k, eps, 'ro', label='DFT', ms=9) # Plot Wannier bands k, eps = pl.load('WANbands.txt', unpack=True) pl.plot(k, eps, 'k.', label='Wannier') pl.plot([-.5, .5], [1, 1], 'k:', label='_nolegend_') pl.text(-.5, 1, 'fixedenergy', ha='left', va='bottom') pl.axis('tight') pl.xticks([-.5, -.25, 0, .25, .5], [ r'$X$', r'$\Delta$', r'$\Gamma$', r'$\Delta$', r'$X$'], size=16) pl.ylabel(r'$E - E_F\ \rm{(eV)}$', size=16) pl.legend() pl.savefig('bands.png', dpi=80) pl.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/plot_spectral_weight.py000066400000000000000000000012361316323560300310230ustar00rootroot00000000000000from ase.dft import Wannier from gpaw import restart atoms, calc = restart('benzene.gpw', txt=None) wan = Wannier(nwannier=18, calc=calc, fixedstates=15, file='wan18.pickle') import pylab as pl weight_n = pl.sum(abs(wan.V_knw[0])**2, 1) N = len(weight_n) F = wan.fixedstates_k[0] pl.figure(1, figsize=(12, 4)) pl.bar(range(1, N + 1), weight_n, width=0.65, bottom=0, color='k', edgecolor='k', linewidth=None, align='center', orientation='vertical') pl.plot([F + 0.5, F + 0.5], [0, 1], 'k--') pl.axis(xmin=0.32, xmax=N + 1.33, ymin=0, ymax=1) pl.xlabel('Eigenstate') pl.ylabel('Projection of wannier functions') pl.savefig('spectral_weight.png') pl.show() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/polyacetylene.py000066400000000000000000000013171316323560300274560ustar00rootroot00000000000000import numpy as np from ase import Atoms from ase.dft.kpoints import monkhorst_pack from gpaw import GPAW kpts = monkhorst_pack((13, 1, 1)) + [1e-5, 0, 0] calc = GPAW(h=.21, xc='PBE', kpts=kpts, nbands=12, txt='poly.txt', eigensolver='cg', convergence={'bands': 9}) CC = 1.38 CH = 1.094 a = 2.45 x = a / 2. y = np.sqrt(CC**2 - x**2) atoms = Atoms('C2H2', pbc=(True, False, False), cell=(a, 8., 6.), calculator=calc, positions=[[0, 0, 0], [x, y, 0], [x, y+CH, 0], [0, -CH, 0]]) atoms.center() atoms.get_potential_energy() calc.write('poly.gpw', mode='all') ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/wannier.rst000066400000000000000000000005611316323560300264240ustar00rootroot00000000000000.. _wannier tutorial: ================================= Partly occupied Wannier Functions ================================= .. literalinclude:: benzene.py .. literalinclude:: wannier_benzene.py .. literalinclude:: plot_spectral_weight.py .. literalinclude:: polyacetylene.py .. literalinclude:: wannier_polyacetylene.py .. literalinclude:: plot_band_structure.py ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/wannier_benzene.py000066400000000000000000000010051316323560300277440ustar00rootroot00000000000000from gpaw import restart from ase.dft import Wannier atoms, calc = restart('benzene.gpw', txt=None) # Make wannier functions of occupied space only wan = Wannier(nwannier=15, calc=calc) wan.localize() for i in range(wan.nwannier): wan.write_cube(i, 'benzene15_%i.cube' % i) # Make wannier functions using (three) extra degrees of freedom. wan = Wannier(nwannier=18, calc=calc, fixedstates=15) wan.localize() wan.save('wan18.pickle') for i in range(wan.nwannier): wan.write_cube(i, 'benzene18_%i.cube' % i) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/doc/tutorials/wannier/wannier_polyacetylene.py000066400000000000000000000015441316323560300312030ustar00rootroot00000000000000from __future__ import print_function import numpy as np from ase.dft import Wannier from gpaw import restart atoms, calc = restart('poly.gpw', txt=None) # Make wannier functions using (one) extra degree of freedom wan = Wannier(nwannier=6, calc=calc, fixedenergy=1.5) wan.localize() wan.save('poly.pickle') wan.translate_all_to_cell((2, 0, 0)) for i in range(wan.nwannier): wan.write_cube(i, 'polyacetylene_%i.cube' % i) # Print Kohn-Sham bandstructure ef = calc.get_fermi_level() f = open('KSbands.txt', 'w') for k, kpt_c in enumerate(calc.get_ibz_k_points()): for eps in calc.get_eigenvalues(kpt=k): print(kpt_c[0], eps - ef, file=f) # Print Wannier bandstructure f = open('WANbands.txt', 'w') for k in np.linspace(-.5, .5, 100): for eps in np.linalg.eigvalsh(wan.get_hamiltonian_kpoint([k, 0, 0])).real: print(k, eps - ef, file=f) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/requirements.txt000066400000000000000000000000061316323560300232470ustar00rootroot00000000000000numpy ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/setup.py000066400000000000000000000065701316323560300215110ustar00rootroot00000000000000#!/usr/bin/env python # Copyright (C) 2007-2017 CAMd # Please see the accompanying LICENSE file for further information. import os import re import sys from setuptools import setup, find_packages from distutils.command.build_py import build_py as _build_py from glob import glob from os.path import join if sys.version_info < (2, 7, 0, 'final', 0): raise SystemExit('Python 2.7 or later is required!') with open('README.rst') as fd: long_description = fd.read() # Get the current version number: with open('ase/__init__.py') as fd: version = re.search("__version__ = '(.*)'", fd.read()).group(1) package_data = {'ase': ['spacegroup/spacegroup.dat', 'collections/*.json', 'db/templates/*', 'db/static/*']} class build_py(_build_py): """Custom distutils command to build translations.""" def __init__(self, *args, **kwargs): _build_py.__init__(self, *args, **kwargs) # Keep list of files to appease bdist_rpm. We have to keep track of # all the installed files for no particular reason. self.mofiles = [] def run(self): """Compile translation files (requires gettext).""" _build_py.run(self) msgfmt = 'msgfmt' status = os.system(msgfmt + ' -V') if status == 0: for pofile in glob('ase/gui/po/*/LC_MESSAGES/ag.po'): dirname = join(self.build_lib, os.path.dirname(pofile)) if not os.path.isdir(dirname): os.makedirs(dirname) mofile = join(dirname, 'ag.mo') status = os.system('%s -cv %s --output-file=%s 2>&1' % (msgfmt, pofile, mofile)) assert status == 0, 'msgfmt failed!' self.mofiles.append(mofile) def get_outputs(self, *args, **kwargs): return _build_py.get_outputs(self, *args, **kwargs) + self.mofiles setup(name='ase', version=version, description='Atomic Simulation Environment', url='https://wiki.fysik.dtu.dk/ase', maintainer='ASE-community', maintainer_email='ase-users@listserv.fysik.dtu.dk', license='LGPLv2.1+', platforms=['unix'], packages=find_packages(), install_requires=['numpy', 'scipy', 'matplotlib', 'flask'], package_data=package_data, entry_points={'console_scripts': ['ase=ase.cli.main:main', 'ase-db=ase.cli.main:old', 'ase-gui=ase.cli.main:old', 'ase-run=ase.cli.main:old', 'ase-info=ase.cli.main:old', 'ase-build=ase.cli.main:old']}, long_description=long_description, cmdclass={'build_py': build_py}, classifiers=[ 'Development Status :: 6 - Mature', 'License :: OSI Approved :: ' 'GNU Lesser General Public License v2 or later (LGPLv2+)', 'Operating System :: OS Independent', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Topic :: Scientific/Engineering :: Physics']) ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/000077500000000000000000000000001316323560300211275ustar00rootroot00000000000000ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/ase-build000077500000000000000000000000711316323560300227200ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import old old() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/ase-db000077500000000000000000000000711316323560300222060ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import old old() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/ase-gui000077500000000000000000000000711316323560300224050ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import old old() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/ase-info000077500000000000000000000000711316323560300225540ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import old old() ase-3.15.0-36bd17dda869775b1aed91e39767bb4e7359a983/tools/ase-run000077500000000000000000000000711316323560300224250ustar00rootroot00000000000000#!/usr/bin/env python from ase.cli.main import old old()